go/AUTHORS0100644000000000000000000003773212412656737012563 0ustar00rootroot00000000000000# This is the official list of Go authors for copyright purposes. # This file is distinct from the CONTRIBUTORS files. # See the latter for an explanation. # Names should be added to this file as # Name or Organization # The email address is not required for organizations. # Please keep the list sorted. Aaron France Abhinav Gupta Adrian Nos Adrian O'Grady Adrien Bustany Akshat Kumar Albert Strasheim Alberto García Hierro Aleksandar Dezelin Alex A Skinner Alex Brainman Alex Jin Alexander Larsson Alexander Orlov Alexander Reece Alexander Surma Alexander Zhavnerchik Alexandre Normand Alexei Sholik Alexey Borzenkov Alexey Palazhchenko Amir Mohammad Saied Amrut Joshi Andrei Vieru Andrew Balholm Andrew Bonventre Andrew Harding Andrew Lutomirski Andrew Pritchard Andrew Radev Andrew Skiba Andrew Szeto Andrew Wilkins Andrey Mirtchovski Andriy Lytvynov Andy Davis Anfernee Yongkun Gui Anh Hai Trinh Anschel Schaffer-Cohen Anthony Eufemio Anthony Martin Anthony Starks Apisak Darakananda Aram Hăvărneanu Arnaud Ysmal Arne Hormann Aron Nopanen Arvindh Rajesh Tamilmani Ato Araki Aulus Egnatius Varialus Ben Olive Benjamin Black Benny Siegert Berengar Lehr Billie Harold Cleek Bjorn Tillenius Bjorn Tipling Blake Mizerany Bobby Powers Brendan Daniel Tracey Brian Dellisanti Brian G. Merrell Brian Gitonga Marete Brian Ketelsen Caine Tighe Caleb Spare Carl Chatfield Carlos Castillo Case Nelson Casey Marshall Cezar Sá Espinola ChaiShushan Charles L. Dorian Charles Lee Chris Dollin Chris Farmiloe Chris Howey Chris Jones Chris Lennert Christian Himpel Christine Hansmann Christoffer Buchholz Christoph Hack Christopher Cahoon Christopher Nielsen Christopher Redden Christopher Wedgwood Clement Skau Conrad Meyer Corey Thomasson Damian Gryski Dan Callahan Dan Peterson Dan Sinclair Daniel Fleischman Daniel Krech Daniel Lidén Daniel Morsing Daniel Theophanes Darren Elwood Dave Cheney David Bürgin <676c7473@gmail.com> David Calavera David du Colombier <0intro@gmail.com> David Forsythe David G. Andersen David Jakob Fritz David Thomas David Titarenco Dean Prichard Denis Brandolini Devon H. O'Dell Dhiru Kholia Dimitri Tcaciuc Dmitri Shuralyov Dmitriy Shelenin Dmitry Chestnykh Dominik Honnef Donovan Hide Dropbox, Inc. Duncan Holm Dustin Sallings Dustin Shields-Cloues Eden Li Egon Elbre Ehren Kret Eivind Uggedal Elias Naur Emil Hessman Eoghan Sherry Eric Clark Eric Milliken Eric Roshan-Eisner Erik St. Martin Erik Westrup Esko Luontola Evan Shaw Ewan Chou Fabrizio Milo Fan Hongjian Fazlul Shahriar Felix Geisendörfer Firmansyah Adiputra Florian Uekermann Florian Weimer Francisco Souza Frederick Kelly Mayle III Fredrik Enestad Frithjof Schulze Gary Burd Gautham Thambidorai Georg Reinke Gerasimos Dimitriadis Gideon Jan-Wessel Redelinghuys Giles Lean Google Inc. Gordon Klaus Graham King Graham Miller Greg Ward Guillaume J. Charmes Gustav Paul Gustavo Niemeyer Gwenael Treguier Harley Laue Hector Chu Henrik Edwards Herbert Georg Fischer Hong Ruiqi Icarus Sparry Ingo Oeser Isaac Wagner Jakob Borg Jakub Ryszard Czarnowicz James David Chalfant James Fysh James Gray James Meneghello James P. Cooper James Toy James Whitehead Jan H. Hosang Jan Mercl <0xjnml@gmail.com> Jan Mercl Jan Newmarch Jan Ziak <0xe2.0x9a.0x9b@gmail.com> Jani Monoses Jaroslavas Počepko Jason Del Ponte Jason Travis Jay Weisskopf Jeff Hodges Jeff R. Allen Jeff Sickel Jeff Wendling Jeremy Jackins Jim McGrath Jimmy Zelinskie Jingcheng Zhang Joakim Sernbrant Joe Poirier John Asmuth John C Barstow John Graham-Cumming John Howard Palevich John Shahid Jonathan Gold Jonathan Mark Jonathan Rudenberg Jonathan Wills Jongmin Kim Jose Luis Vázquez González Joseph Holsten Josh Bleecher Snyder Josh Goebel Josh Holland Joshua Chase Jukka-Pekka Kekkonen Julian Phillips Julien Schmidt Kai Backman Kamil Kisiel Katrina Owen Kei Son Keith Rarick Kelsey Hightower Kelvin Foo Chuan Lyi Ken Friedenbach Ken Rockot Kevin Ballard Kyle Consalus Kyle Isom Kyle Lemons L Campbell Lai Jiangshan Linaro Limited Lorenzo Stoakes Luca Greco Lucio De Re Luit van Drongelen Luka Zakrajšek Luke Curley Marc Weistroff Marco Hennings Marko Juhani Silokunnas Marko Tiikkaja Markus Duft Markus Sonderegger Markus Zimmermann Martin Neubauer Martin Olsson Mateusz Czapliński Mathieu Lonjaret Mats Lidell Matt Aimonetti Matt Jibson Matt Joiner Matt Reiferson Matthew Cottingham Matthew Horsnell Maxim Khitrov Micah Stetson Michael Chaten Michael Elkins Michael Fraenkel Michael Gehring Michael Hoisie Michael Lewis Michael Pearson Michael Stapelberg Michael Teichgräber Michał Derkacz Miek Gieben Mihai Borobocea Mikael Tillenius Mike Andrews Mike Rosset Mikhail Panchenko Miki Tebeka Mikio Hara Mikkel Krautz Miquel Sabaté Solà Moov Corporation Moriyoshi Koizumi Môshe van der Sterre Nan Deng Nathan John Youngman ngmoco, LLC Nicholas Katsaros Nicholas Presta Nicholas Sullivan Nicholas Waples Nick Craig-Wood Nicolas Kaiser Nicolas Owens Nigel Kerr Noah Campbell Oling Cat Oliver Hookins Olivier Antoine Olivier Duperray Olivier Saingre Padraig Kitterick Paolo Giarrusso Pascal S. de Kloe Patrick Crosby Patrick Gavlin Patrick Higgins Patrick Mézard Patrick Mylund Nielsen Patrick Smith Paul A Querna Paul Hammond Paul Lalonde Paul Sbarra Paul van Brouwershaven Pavel Zinovkin Petar Maymounkov Peter Armitage Peter Froehlich Peter Kleiweg Peter Mundy Péter Surányi Péter Szilágyi Peter Waller Peter Williams Philip K. Warren Pieter Droogendijk Pietro Gagliardi Preetam Jinka Quan Yong Zhai Raif S. Naffah Rémy Oudompheng Richard Crowley Richard Eric Gavaletz Richard Musiol Rick Arnold Risto Jaakko Saarelma Robert Daniel Kortschak Robert Dinu Robert Figueiredo Robert Hencke Robert Obryk Robin Eklind Rodrigo Moraes de Oliveira Rodrigo Rafael Monti Kochenburger Roger Pau Monné Roger Peppe Ron Minnich Ross Light Rowan Worth Ryan Hitchman Ryan Slade S.Çağlar Onur Sanjay Menakuru Scott Ferguson Scott Lawrence Sebastien Binet Sébastien Paolacci Sergei Skorobogatov Sergey 'SnakE' Gromov Sergio Luis O. B. Correia Shane Hansen Shawn Smith Shenghou Ma Shivakumar GN Sokolov Yura Spring Mc StalkR Stefan Nilsson Stéphane Travostino Stephen McQuay Stephen Weinberg Steve McCoy Steven Elliot Harris Steven Hartland Sven Almgren Szabolcs Nagy Tad Glines Taj Khattra Tarmigan Casebolt Taru Karttunen Thomas Alan Copeland Thomas Kappler Timo Savola Tobias Columbus Tor Andersson Travis Cline Tudor Golubenco Tw Tyler Bunnell Ugorji Nwoke Ulf Holm Nielsen Uriel Mangado Vadim Vygonets Vincent Ambo Vincent Vanackere Vinu Rajashekhar Vladimir Nikishenko Volker Dobler Wei Guangjing Willem van der Schyff William Josephson William Orr Xing Xing Yasuhiro Matsumoto Yissakhar Z. Beck Yongjian Xu Yoshiyuki Kanno Yusuke Kagiwada Yuusei Kuwana Yuval Pavel Zholkover Ziad Hatahet Zorion Arrizabalaga 申习之 go/CONTRIBUTORS0100644000000000000000000005456212412656737013373 0ustar00rootroot00000000000000# This is the official list of people who can contribute # (and typically have contributed) code to the Go repository. # The AUTHORS file lists the copyright holders; this file # lists people. For example, Google employees are listed here # but not in AUTHORS, because Google holds the copyright. # # The submission process automatically checks to make sure # that people submitting code are listed in this file (by email address). # # Names should be added to this file only after verifying that # the individual or the individual's organization has agreed to # the appropriate Contributor License Agreement, found here: # # http://code.google.com/legal/individual-cla-v1.0.html # http://code.google.com/legal/corporate-cla-v1.0.html # # The agreement for individuals can be filled out on the web. # # When adding J Random Contributor's name to this file, # either J's name or J's organization's name should be # added to the AUTHORS file, depending on whether the # individual or corporate CLA was used. # Names should be added to this file like so: # Name # # An entry with two email addresses specifies that the # first address should be used in the submit logs and # that the second address should be recognized as the # same person when interacting with Rietveld. # Please keep the list sorted. Aaron France Aaron Kemp Abhinav Gupta Adam Langley Adrian Nos Adrian O'Grady Adrien Bustany Akshat Kumar Alan Donovan Albert Strasheim Alberto García Hierro Aleksandar Dezelin Alex A Skinner Alex Brainman Alex Bramley Alex Jin Alexander Larsson Alexander Orlov Alexander Reece Alexander Surma Alexander Zhavnerchik Alexandre Normand Alexandru Moșoi Alexei Sholik Alexey Borzenkov Alexey Palazhchenko Alexis Imperial-Legrand Amir Mohammad Saied Amrut Joshi Andrea Spadaccini Andreas Jellinghaus Andrei Vieru Andrew Balholm Andrew Bonventre Andrew Gerrand Andrew Harding Andrew Lutomirski Andrew Pritchard Andrew Radev Andrew Skiba Andrew Szeto Andrew Wilkins Andrey Mirtchovski Andriy Lytvynov Andy Davis Anfernee Yongkun Gui Anh Hai Trinh Anschel Schaffer-Cohen Anthony Eufemio Anthony Martin Anthony Starks Apisak Darakananda Aram Hăvărneanu Arnaud Ysmal Arne Hormann Aron Nopanen Arvindh Rajesh Tamilmani Asim Shankar Ato Araki Aulus Egnatius Varialus Austin Clements Balazs Lecz Ben Eitzen Ben Fried Ben Lynn Ben Olive Benjamin Black Benny Siegert Berengar Lehr Bill Neubauer Bill Thiede Billie Harold Cleek Bjorn Tillenius Bjorn Tipling Blake Mizerany Bobby Powers Brad Fitzpatrick Brad Garcia Brendan Daniel Tracey Brendan O'Dea Brian Dellisanti Brian G. Merrell Brian Gitonga Marete Brian Ketelsen Brian Slesinsky Burcu Dogan Caine Tighe Caleb Spare Carl Chatfield Carl Mastrangelo Carl Shapiro Carlos Castillo Cary Hull Case Nelson Casey Marshall Catalin Patulea Cezar Sá Espinola ChaiShushan Charles L. Dorian Charles Lee Chris Dollin Chris Farmiloe Chris Howey Chris Hundt Chris Jones Chris Lennert Chris Manghane Christian Himpel Christine Hansmann Christoffer Buchholz Christoph Hack Christopher Cahoon Christopher Nielsen Christopher Redden Christopher Swenson Christopher Wedgwood Clement Skau Colby Ranger Conrad Meyer Corey Thomasson Cosmos Nicolaou Damian Gryski Dan Callahan Dan Peterson Dan Sinclair Daniel Fleischman Daniel Krech Daniel Lidén Daniel Morsing Daniel Nadasi Daniel Theophanes Darren Elwood Dave Borowitz Dave Cheney Dave Day Dave Grijalva David Anderson David Barnett David Bürgin <676c7473@gmail.com> David Calavera David Covert David Crawshaw David du Colombier <0intro@gmail.com> David Forsythe David G. Andersen David Jakob Fritz David McLeish David Presotto David Symonds David Thomas David Titarenco Dean Prichard Denis Brandolini Devon H. O'Dell Dhiru Kholia Dimitri Tcaciuc Dmitri Shuralyov Dmitriy Shelenin Dmitriy Vyukov Dmitry Chestnykh Dominik Honnef Donovan Hide Drew Hintz Duncan Holm Dustin Sallings Dustin Shields-Cloues Eden Li Egon Elbre Ehren Kret Eivind Uggedal Elias Naur Emil Hessman Eoghan Sherry Eric Clark Eric Milliken Eric Roshan-Eisner Erik St. Martin Erik Westrup Esko Luontola Evan Martin Evan Shaw Ewan Chou Fabrizio Milo Fan Hongjian Fazlul Shahriar Felix Geisendörfer Firmansyah Adiputra Florian Uekermann Florian Weimer Folke Behrens Francesc Campoy Francisco Souza Frederick Kelly Mayle III Fredrik Enestad Frithjof Schulze Fumitoshi Ukai Gaal Yahas Gary Burd Gautham Thambidorai Georg Reinke Gerasimos Dimitriadis Gideon Jan-Wessel Redelinghuys Giles Lean Gordon Klaus Graham King Graham Miller Greg Ward Guillaume J. Charmes Gustav Paul Gustavo Franco Gustavo Niemeyer Gwenael Treguier Han-Wen Nienhuys Harley Laue Hector Chu Henrik Edwards Herbert Georg Fischer Hong Ruiqi Hossein Sheikh Attar Ian Lance Taylor Icarus Sparry Ingo Oeser Isaac Wagner Ivan Krasin Jacob Baskin Jakob Borg Jakub Ryszard Czarnowicz James Aguilar James David Chalfant James Fysh James Gray James Meneghello James P. Cooper James Toy James Tucker James Whitehead Jamie Gennis Jamie Turner Jamie Wilkinson Jan H. Hosang Jan Mercl <0xjnml@gmail.com> Jan Mercl Jan Newmarch Jan Ziak <0xe2.0x9a.0x9b@gmail.com> Jani Monoses Jaroslavas Počepko Jason Del Ponte Jason Travis Jay Weisskopf Jean-Marc Eurin Jeff Hodges Jeff R. Allen Jeff Sickel Jeff Wendling Jeremiah Harmsen Jeremy Jackins Jeremy Schlatter Jim McGrath Jimmy Zelinskie Jingcheng Zhang Joakim Sernbrant Joe Poirier Joel Sing Johan Euphrosine John Asmuth John Beisley John C Barstow John DeNero John Graham-Cumming John Howard Palevich John Newlin John Shahid Jonathan Allie Jonathan Feinberg Jonathan Gold Jonathan Hseu Jonathan Mark Jonathan Nieder Jonathan Pittman Jonathan Rudenberg Jonathan Wills Jongmin Kim Jos Visser Jose Luis Vázquez González Joseph Bonneau Joseph Holsten Josh Bleecher Snyder Josh Goebel Josh Hoak Josh Holland Joshua Chase JP Sugarbroad Jukka-Pekka Kekkonen Julian Phillips Julien Schmidt Kai Backman Kamil Kisiel Katrina Owen Kay Zhu Kei Son Keith Randall Keith Rarick Kelsey Hightower Kelvin Foo Chuan Lyi Ken Friedenbach Ken Rockot Ken Thompson Kevin Ballard Kevin Klues Kirklin McDonald Kyle Consalus Kyle Isom Kyle Lemons L Campbell Lai Jiangshan Larry Hosken Lorenzo Stoakes Louis Kruger Luca Greco Lucio De Re Luit van Drongelen Luka Zakrajšek Luke Curley Luuk van Dijk Manoj Dayaram Manu Garg Marc Weistroff Marcel van Lohuizen Marco Hennings Mark Zavislak Marko Juhani Silokunnas Marko Mikulicic Marko Tiikkaja Markus Duft Markus Sonderegger Markus Zimmermann Martin Neubauer Martin Olsson Mateusz Czapliński Mathieu Lonjaret Mats Lidell Matt Aimonetti Matt Brown Matt Jibson Matt Joiner Matt Jones Matt Reiferson Matthew Cottingham Matthew Dempsky Matthew Horsnell Maxim Khitrov Maxim Pimenov Maxim Ushakov Micah Stetson Michael Chaten Michael Elkins Michael Fraenkel Michael Gehring Michael Hoisie Michael Hudson-Doyle Michael Kelly Michael Lewis Michael Matloob Michael Pearson Michael Piatek Michael Shields Michael Stapelberg Michael T. Jones Michael Teichgräber Michał Derkacz Miek Gieben Mihai Borobocea Mikael Tillenius Mike Andrews Mike Rosset Mike Samuel Mike Solomon Mikhail Panchenko Miki Tebeka Mikio Hara Mikkel Krautz Miquel Sabaté Solà Moriyoshi Koizumi Môshe van der Sterre Nan Deng Nathan John Youngman Nicholas Katsaros Nicholas Presta Nicholas Sullivan Nicholas Waples Nick Craig-Wood Nicolas Kaiser Nicolas Owens Nigel Kerr Nigel Tao Noah Campbell Oling Cat Oliver Hookins Olivier Antoine Olivier Duperray Olivier Saingre Padraig Kitterick Paolo Giarrusso Pascal S. de Kloe Patrick Crosby Patrick Gavlin Patrick Higgins Patrick Mézard Patrick Mylund Nielsen Patrick Riley Patrick Smith Paul A Querna Paul Borman Paul Chang Paul Hammond Paul Lalonde Paul Sbarra Paul van Brouwershaven Pavel Zinovkin Pawel Szczur Petar Maymounkov Peter Armitage Peter Collingbourne Peter Froehlich Peter Kleiweg Peter McKenzie Peter Mundy Péter Surányi Péter Szabó Péter Szilágyi Peter Waller Peter Weinberger Peter Williams Phil Pennock Philip K. Warren Pieter Droogendijk Pietro Gagliardi Preetam Jinka Quan Yong Zhai Raif S. Naffah Raph Levien Rémy Oudompheng Richard Crowley Richard Eric Gavaletz Richard Musiol Rick Arnold Risto Jaakko Saarelma Rob Pike Robert Daniel Kortschak Robert Dinu Robert Figueiredo Robert Griesemer Robert Hencke Robert Obryk Robert Sesek Robert Snedegar Robin Eklind Rodrigo Moraes de Oliveira Rodrigo Rafael Monti Kochenburger Roger Pau Monné Roger Peppe Ron Minnich Ross Light Rowan Worth Rui Ueyama Russ Cox Ryan Barrett Ryan Hitchman Ryan Slade S.Çağlar Onur Sam Thorogood Sameer Ajmani Sanjay Menakuru Scott Ferguson Scott Lawrence Scott Schwartz Sean Burford Sebastien Binet Sébastien Paolacci Sergei Skorobogatov Sergey 'SnakE' Gromov Sergio Luis O. B. Correia Shane Hansen Shawn Ledbetter Shawn Smith Shenghou Ma Shivakumar GN Sokolov Yura Spring Mc StalkR Stefan Nilsson Stéphane Travostino Stephen Ma Stephen McQuay Stephen Weinberg Steve McCoy Steven Elliot Harris Steven Hartland Sugu Sougoumarane Sven Almgren Szabolcs Nagy Tad Glines Taj Khattra Tarmigan Casebolt Taru Karttunen Thomas Alan Copeland Thomas Habets Thomas Kappler Timo Savola Tobias Columbus Todd Wang Tom Szymanski Tor Andersson Travis Cline Trevor Strohman Tudor Golubenco Tw Tyler Bunnell Ugorji Nwoke Ulf Holm Nielsen Uriel Mangado Vadim Vygonets Vega Garcia Luis Alfonso Vincent Ambo Vincent Vanackere Vinu Rajashekhar Vish Subramanian Vladimir Nikishenko Volker Dobler Wei Guangjing Will Norris Willem van der Schyff William Chan William Josephson William Orr Xing Xing Yan Zou Yasuhiro Matsumoto Yissakhar Z. Beck Yongjian Xu Yoshiyuki Kanno Yusuke Kagiwada Yuusei Kuwana Yuval Pavel Zholkover Yves Junqueira Ziad Hatahet Zorion Arrizabalaga 申习之 go/LICENSE0100644000000000000000000000270712412656734012507 0ustar00rootroot00000000000000Copyright (c) 2012 The Go Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. go/PATENTS0100644000000000000000000000242712412656734012542 0ustar00rootroot00000000000000Additional IP Rights Grant (Patents) "This implementation" means the copyrightable works distributed by Google as part of the Go project. Google hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, transfer and otherwise run, modify and propagate the contents of this implementation of Go, where such license applies only to those patent claims, both currently owned or controlled by Google and acquired in the future, licensable by Google that are necessarily infringed by this implementation of Go. This grant does not include claims that would be infringed only as a consequence of further modification of this implementation. If you or your agent or exclusive licensee institute or order or agree to the institution of patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that this implementation of Go or any code incorporated within this implementation of Go constitutes direct or contributory patent infringement, or inducement of patent infringement, then any patent rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed. go/README0100644000000000000000000000213012412656734012350 0ustar00rootroot00000000000000This is the source code repository for the Go programming language. For documentation about how to install and use Go, visit http://golang.org/ or load doc/install-source.html in your web browser. After installing Go, you can view a nicely formatted doc/install-source.html by running godoc --http=:6060 and then visiting http://localhost:6060/doc/install/source. Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file. -- Binary Distribution Notes If you have just untarred a binary Go distribution, you need to set the environment variable $GOROOT to the full path of the go directory (the one containing this README). You can omit the variable if you unpack it into /usr/local/go, or if you rebuild from sources by running all.bash (see doc/install.html). You should also add the Go binary directory $GOROOT/bin to your shell's path. For example, if you extracted the tar file into $HOME/go, you might put the following in your .profile: export GOROOT=$HOME/go export PATH=$PATH:$GOROOT/bin See doc/install.html for more details. go/VERSION0100644000000000000000000000000712412656741012537 0ustar00rootroot00000000000000go1.3.3go/api0040755000000000000000000000000012412656737012174 5ustar00rootroot00000000000000go/api/README0100644000000000000000000000101412412656734013121 0ustar00rootroot00000000000000Files in this directory are data for Go's API checker ("go tool api", in src/cmd/api). Each file is a list of of API features, one per line. go1.txt (and similarly named files) are frozen once a version has been shipped. Each file adds new lines but does not remove any. except.txt lists features that may disappear without breaking true compatibility. next.txt is the only file intended to be mutated. It's a list of features that may be added to the next version. It only affects warning output from the go api tool. go/api/except.txt0100644000000000000000000004550112412656737014306 0ustar00rootroot00000000000000pkg net, func ListenUnixgram(string, *UnixAddr) (*UDPConn, error) pkg syscall (darwin-386), func Fchflags(string, int) error pkg syscall (darwin-386-cgo), func Fchflags(string, int) error pkg syscall (darwin-amd64), func Fchflags(string, int) error pkg syscall (darwin-amd64-cgo), func Fchflags(string, int) error pkg syscall (freebsd-386), func Fchflags(string, int) error pkg syscall (freebsd-amd64), func Fchflags(string, int) error pkg syscall (freebsd-arm), func Fchflags(string, int) error pkg syscall (freebsd-arm-cgo), func Fchflags(string, int) error pkg syscall (netbsd-arm), func Fchflags(string, int) error pkg syscall (netbsd-arm-cgo), func Fchflags(string, int) error pkg testing, func RegisterCover(Cover) pkg text/template/parse, type DotNode bool pkg text/template/parse, type Node interface { Copy, String, Type } pkg os (linux-arm), const O_SYNC = 4096 pkg os (linux-arm-cgo), const O_SYNC = 4096 pkg syscall (darwin-386), const ImplementsGetwd = false pkg syscall (darwin-386-cgo), const ImplementsGetwd = false pkg syscall (darwin-amd64), const ImplementsGetwd = false pkg syscall (darwin-amd64-cgo), const ImplementsGetwd = false pkg syscall (openbsd-386), const BIOCGRTIMEOUT = 1074283118 pkg syscall (openbsd-386), const BIOCSRTIMEOUT = 2148024941 pkg syscall (openbsd-386), const RTF_FMASK = 63496 pkg syscall (openbsd-386), const RTM_VERSION = 4 pkg syscall (openbsd-386), const SIOCBRDGDADDR = 2150132039 pkg syscall (openbsd-386), const SIOCBRDGGPARAM = 3224922456 pkg syscall (openbsd-386), const SIOCBRDGSADDR = 3223873860 pkg syscall (openbsd-386), const SYS_CLOCK_GETRES = 234 pkg syscall (openbsd-386), const SYS_CLOCK_GETTIME = 232 pkg syscall (openbsd-386), const SYS_CLOCK_SETTIME = 233 pkg syscall (openbsd-386), const SYS_FHSTATFS = 309 pkg syscall (openbsd-386), const SYS_FSTAT = 292 pkg syscall (openbsd-386), const SYS_FSTATAT = 316 pkg syscall (openbsd-386), const SYS_FSTATFS = 308 pkg syscall (openbsd-386), const SYS_FUTIMENS = 327 pkg syscall (openbsd-386), const SYS_FUTIMES = 206 pkg syscall (openbsd-386), const SYS_GETDIRENTRIES = 312 pkg syscall (openbsd-386), const SYS_GETDIRENTRIES ideal-int pkg syscall (openbsd-386), const SYS_GETFSSTAT = 306 pkg syscall (openbsd-386), const SYS_GETITIMER = 86 pkg syscall (openbsd-386), const SYS_GETRUSAGE = 117 pkg syscall (openbsd-386), const SYS_GETTIMEOFDAY = 116 pkg syscall (openbsd-386), const SYS_KEVENT = 270 pkg syscall (openbsd-386), const SYS_LSTAT = 293 pkg syscall (openbsd-386), const SYS_NANOSLEEP = 240 pkg syscall (openbsd-386), const SYS_SELECT = 93 pkg syscall (openbsd-386), const SYS_SETITIMER = 83 pkg syscall (openbsd-386), const SYS_SETTIMEOFDAY = 122 pkg syscall (openbsd-386), const SYS_STAT = 291 pkg syscall (openbsd-386), const SYS_STATFS = 307 pkg syscall (openbsd-386), const SYS_UTIMENSAT = 326 pkg syscall (openbsd-386), const SYS_UTIMES = 138 pkg syscall (openbsd-386), const SYS_WAIT4 = 7 pkg syscall (openbsd-386), const SYS___THRSLEEP = 300 pkg syscall (openbsd-386), const SizeofIfData = 208 pkg syscall (openbsd-386), const SizeofIfMsghdr = 232 pkg syscall (openbsd-386), const SizeofRtMetrics = 48 pkg syscall (openbsd-386), const SizeofRtMsghdr = 88 pkg syscall (openbsd-386), const TIOCGTSTAMP = 1074295899 pkg syscall (openbsd-386), type Dirent struct, Fileno uint32 pkg syscall (openbsd-386), type FdSet struct, Bits [32]int32 pkg syscall (openbsd-386), type Kevent_t struct, Data int32 pkg syscall (openbsd-386), type Mclpool struct, Grown uint32 pkg syscall (openbsd-386), type RtMetrics struct, Expire uint32 pkg syscall (openbsd-386), type Stat_t struct, Ino uint32 pkg syscall (openbsd-386), type Stat_t struct, Lspare0 int32 pkg syscall (openbsd-386), type Stat_t struct, Lspare1 int32 pkg syscall (openbsd-386), type Stat_t struct, Qspare [2]int64 pkg syscall (openbsd-386), type Statfs_t struct, F_ctime uint32 pkg syscall (openbsd-386), type Statfs_t struct, F_spare [3]uint32 pkg syscall (openbsd-386), type Timespec struct, Sec int32 pkg syscall (openbsd-386), type Timeval struct, Sec int32 pkg syscall (openbsd-386-cgo), const BIOCGRTIMEOUT = 1074283118 pkg syscall (openbsd-386-cgo), const BIOCSRTIMEOUT = 2148024941 pkg syscall (openbsd-386-cgo), const RTF_FMASK = 63496 pkg syscall (openbsd-386-cgo), const RTM_VERSION = 4 pkg syscall (openbsd-386-cgo), const SIOCBRDGDADDR = 2150132039 pkg syscall (openbsd-386-cgo), const SIOCBRDGGPARAM = 3224922456 pkg syscall (openbsd-386-cgo), const SIOCBRDGSADDR = 3223873860 pkg syscall (openbsd-386-cgo), const SYS_CLOCK_GETRES = 234 pkg syscall (openbsd-386-cgo), const SYS_CLOCK_GETTIME = 232 pkg syscall (openbsd-386-cgo), const SYS_CLOCK_SETTIME = 233 pkg syscall (openbsd-386-cgo), const SYS_FHSTATFS = 309 pkg syscall (openbsd-386-cgo), const SYS_FSTAT = 292 pkg syscall (openbsd-386-cgo), const SYS_FSTATAT = 316 pkg syscall (openbsd-386-cgo), const SYS_FSTATFS = 308 pkg syscall (openbsd-386-cgo), const SYS_FUTIMENS = 327 pkg syscall (openbsd-386-cgo), const SYS_FUTIMES = 206 pkg syscall (openbsd-386-cgo), const SYS_GETDIRENTRIES = 312 pkg syscall (openbsd-386-cgo), const SYS_GETDIRENTRIES ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETFSSTAT = 306 pkg syscall (openbsd-386-cgo), const SYS_GETITIMER = 86 pkg syscall (openbsd-386-cgo), const SYS_GETRUSAGE = 117 pkg syscall (openbsd-386-cgo), const SYS_GETTIMEOFDAY = 116 pkg syscall (openbsd-386-cgo), const SYS_KEVENT = 270 pkg syscall (openbsd-386-cgo), const SYS_LSTAT = 293 pkg syscall (openbsd-386-cgo), const SYS_NANOSLEEP = 240 pkg syscall (openbsd-386-cgo), const SYS_SELECT = 93 pkg syscall (openbsd-386-cgo), const SYS_SETITIMER = 83 pkg syscall (openbsd-386-cgo), const SYS_SETTIMEOFDAY = 122 pkg syscall (openbsd-386-cgo), const SYS_STAT = 291 pkg syscall (openbsd-386-cgo), const SYS_STATFS = 307 pkg syscall (openbsd-386-cgo), const SYS_UTIMENSAT = 326 pkg syscall (openbsd-386-cgo), const SYS_UTIMES = 138 pkg syscall (openbsd-386-cgo), const SYS_WAIT4 = 7 pkg syscall (openbsd-386-cgo), const SYS___THRSLEEP = 300 pkg syscall (openbsd-386-cgo), const SizeofIfData = 208 pkg syscall (openbsd-386-cgo), const SizeofIfMsghdr = 232 pkg syscall (openbsd-386-cgo), const SizeofRtMetrics = 48 pkg syscall (openbsd-386-cgo), const SizeofRtMsghdr = 88 pkg syscall (openbsd-386-cgo), const TIOCGTSTAMP = 1074295899 pkg syscall (openbsd-386-cgo), type Dirent struct, Fileno uint32 pkg syscall (openbsd-386-cgo), type FdSet struct, Bits [32]int32 pkg syscall (openbsd-386-cgo), type Kevent_t struct, Data int32 pkg syscall (openbsd-386-cgo), type Mclpool struct, Grown uint32 pkg syscall (openbsd-386-cgo), type RtMetrics struct, Expire uint32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Ino uint32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Lspare0 int32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Lspare1 int32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Qspare [2]int64 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_ctime uint32 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_spare [3]uint32 pkg syscall (openbsd-386-cgo), type Timespec struct, Sec int32 pkg syscall (openbsd-386-cgo), type Timeval struct, Sec int32 pkg syscall (openbsd-amd64), const CCR0_FLUSH = 16 pkg syscall (openbsd-amd64), const CCR0_FLUSH ideal-int pkg syscall (openbsd-amd64), const CPUID_CFLUSH = 524288 pkg syscall (openbsd-amd64), const CPUID_CFLUSH ideal-int pkg syscall (openbsd-amd64), const EFER_LMA = 1024 pkg syscall (openbsd-amd64), const EFER_LMA ideal-int pkg syscall (openbsd-amd64), const EFER_LME = 256 pkg syscall (openbsd-amd64), const EFER_LME ideal-int pkg syscall (openbsd-amd64), const EFER_NXE = 2048 pkg syscall (openbsd-amd64), const EFER_NXE ideal-int pkg syscall (openbsd-amd64), const EFER_SCE = 1 pkg syscall (openbsd-amd64), const EFER_SCE ideal-int pkg syscall (openbsd-amd64), const PMC5_PIPELINE_FLUSH = 21 pkg syscall (openbsd-amd64), const PMC5_PIPELINE_FLUSH ideal-int pkg syscall (openbsd-amd64), const RTF_FMASK = 63496 pkg syscall (openbsd-amd64), const RTM_VERSION = 4 pkg syscall (openbsd-amd64), const SIOCBRDGDADDR = 2150132039 pkg syscall (openbsd-amd64), const SIOCBRDGSADDR = 3223873860 pkg syscall (openbsd-amd64), const SYS_CLOCK_GETRES = 234 pkg syscall (openbsd-amd64), const SYS_CLOCK_GETTIME = 232 pkg syscall (openbsd-amd64), const SYS_CLOCK_SETTIME = 233 pkg syscall (openbsd-amd64), const SYS_FHSTATFS = 309 pkg syscall (openbsd-amd64), const SYS_FSTAT = 292 pkg syscall (openbsd-amd64), const SYS_FSTATAT = 316 pkg syscall (openbsd-amd64), const SYS_FSTATFS = 308 pkg syscall (openbsd-amd64), const SYS_FUTIMENS = 327 pkg syscall (openbsd-amd64), const SYS_FUTIMES = 206 pkg syscall (openbsd-amd64), const SYS_GETDIRENTRIES = 312 pkg syscall (openbsd-amd64), const SYS_GETDIRENTRIES ideal-int pkg syscall (openbsd-amd64), const SYS_GETFSSTAT = 306 pkg syscall (openbsd-amd64), const SYS_GETITIMER = 86 pkg syscall (openbsd-amd64), const SYS_GETRUSAGE = 117 pkg syscall (openbsd-amd64), const SYS_GETTIMEOFDAY = 116 pkg syscall (openbsd-amd64), const SYS_KEVENT = 270 pkg syscall (openbsd-amd64), const SYS_LSTAT = 293 pkg syscall (openbsd-amd64), const SYS_NANOSLEEP = 240 pkg syscall (openbsd-amd64), const SYS_SELECT = 93 pkg syscall (openbsd-amd64), const SYS_SETITIMER = 83 pkg syscall (openbsd-amd64), const SYS_SETTIMEOFDAY = 122 pkg syscall (openbsd-amd64), const SYS_STAT = 291 pkg syscall (openbsd-amd64), const SYS_STATFS = 307 pkg syscall (openbsd-amd64), const SYS_UTIMENSAT = 326 pkg syscall (openbsd-amd64), const SYS_UTIMES = 138 pkg syscall (openbsd-amd64), const SYS_WAIT4 = 7 pkg syscall (openbsd-amd64), const SYS___THRSLEEP = 300 pkg syscall (openbsd-amd64), const SizeofRtMetrics = 48 pkg syscall (openbsd-amd64), const SizeofRtMsghdr = 88 pkg syscall (openbsd-amd64), type Dirent struct, Fileno uint32 pkg syscall (openbsd-amd64), type FdSet struct, Bits [32]int32 pkg syscall (openbsd-amd64), type Kevent_t struct, Data int32 pkg syscall (openbsd-amd64), type Kevent_t struct, Ident uint32 pkg syscall (openbsd-amd64), type Mclpool struct, Grown uint32 pkg syscall (openbsd-amd64), type RtMetrics struct, Expire uint32 pkg syscall (openbsd-amd64), type Stat_t struct, Ino uint32 pkg syscall (openbsd-amd64), type Stat_t struct, Lspare0 int32 pkg syscall (openbsd-amd64), type Stat_t struct, Lspare1 int32 pkg syscall (openbsd-amd64), type Stat_t struct, Qspare [2]int64 pkg syscall (openbsd-amd64), type Statfs_t struct, F_ctime uint32 pkg syscall (openbsd-amd64), type Statfs_t struct, F_spare [3]uint32 pkg syscall (openbsd-amd64), type Statfs_t struct, Pad_cgo_1 [4]uint8 pkg syscall (openbsd-amd64), type Timespec struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-amd64), type Timespec struct, Sec int32 pkg syscall (openbsd-amd64-cgo), const CCR0_FLUSH = 16 pkg syscall (openbsd-amd64-cgo), const CCR0_FLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const CPUID_CFLUSH = 524288 pkg syscall (openbsd-amd64-cgo), const CPUID_CFLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const EFER_LMA = 1024 pkg syscall (openbsd-amd64-cgo), const EFER_LMA ideal-int pkg syscall (openbsd-amd64-cgo), const EFER_LME = 256 pkg syscall (openbsd-amd64-cgo), const EFER_LME ideal-int pkg syscall (openbsd-amd64-cgo), const EFER_NXE = 2048 pkg syscall (openbsd-amd64-cgo), const EFER_NXE ideal-int pkg syscall (openbsd-amd64-cgo), const EFER_SCE = 1 pkg syscall (openbsd-amd64-cgo), const EFER_SCE ideal-int pkg syscall (openbsd-amd64-cgo), const PMC5_PIPELINE_FLUSH = 21 pkg syscall (openbsd-amd64-cgo), const PMC5_PIPELINE_FLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_FMASK = 63496 pkg syscall (openbsd-amd64-cgo), const RTM_VERSION = 4 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGDADDR = 2150132039 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSADDR = 3223873860 pkg syscall (openbsd-amd64-cgo), const SYS_CLOCK_GETRES = 234 pkg syscall (openbsd-amd64-cgo), const SYS_CLOCK_GETTIME = 232 pkg syscall (openbsd-amd64-cgo), const SYS_CLOCK_SETTIME = 233 pkg syscall (openbsd-amd64-cgo), const SYS_FHSTATFS = 309 pkg syscall (openbsd-amd64-cgo), const SYS_FSTAT = 292 pkg syscall (openbsd-amd64-cgo), const SYS_FSTATAT = 316 pkg syscall (openbsd-amd64-cgo), const SYS_FSTATFS = 308 pkg syscall (openbsd-amd64-cgo), const SYS_FUTIMENS = 327 pkg syscall (openbsd-amd64-cgo), const SYS_FUTIMES = 206 pkg syscall (openbsd-amd64-cgo), const SYS_GETDIRENTRIES = 312 pkg syscall (openbsd-amd64-cgo), const SYS_GETDIRENTRIES ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETFSSTAT = 306 pkg syscall (openbsd-amd64-cgo), const SYS_GETITIMER = 86 pkg syscall (openbsd-amd64-cgo), const SYS_GETRUSAGE = 117 pkg syscall (openbsd-amd64-cgo), const SYS_GETTIMEOFDAY = 116 pkg syscall (openbsd-amd64-cgo), const SYS_KEVENT = 270 pkg syscall (openbsd-amd64-cgo), const SYS_LSTAT = 293 pkg syscall (openbsd-amd64-cgo), const SYS_NANOSLEEP = 240 pkg syscall (openbsd-amd64-cgo), const SYS_SELECT = 93 pkg syscall (openbsd-amd64-cgo), const SYS_SETITIMER = 83 pkg syscall (openbsd-amd64-cgo), const SYS_SETTIMEOFDAY = 122 pkg syscall (openbsd-amd64-cgo), const SYS_STAT = 291 pkg syscall (openbsd-amd64-cgo), const SYS_STATFS = 307 pkg syscall (openbsd-amd64-cgo), const SYS_UTIMENSAT = 326 pkg syscall (openbsd-amd64-cgo), const SYS_UTIMES = 138 pkg syscall (openbsd-amd64-cgo), const SYS_WAIT4 = 7 pkg syscall (openbsd-amd64-cgo), const SYS___THRSLEEP = 300 pkg syscall (openbsd-amd64-cgo), const SizeofRtMetrics = 48 pkg syscall (openbsd-amd64-cgo), const SizeofRtMsghdr = 88 pkg syscall (openbsd-amd64-cgo), type Dirent struct, Fileno uint32 pkg syscall (openbsd-amd64-cgo), type FdSet struct, Bits [32]int32 pkg syscall (openbsd-amd64-cgo), type Kevent_t struct, Data int32 pkg syscall (openbsd-amd64-cgo), type Kevent_t struct, Ident uint32 pkg syscall (openbsd-amd64-cgo), type Mclpool struct, Grown uint32 pkg syscall (openbsd-amd64-cgo), type RtMetrics struct, Expire uint32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Ino uint32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Lspare0 int32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Lspare1 int32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Qspare [2]int64 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_ctime uint32 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_spare [3]uint32 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, Pad_cgo_1 [4]uint8 pkg syscall (openbsd-amd64-cgo), type Timespec struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-amd64-cgo), type Timespec struct, Sec int32 pkg unicode, const Version = "6.2.0" pkg syscall (freebsd-386), const AF_MAX = 38 pkg syscall (freebsd-386), const DLT_MATCHING_MAX = 242 pkg syscall (freebsd-386), const ELAST = 94 pkg syscall (freebsd-386), const O_CLOEXEC = 0 pkg syscall (freebsd-386-cgo), const AF_MAX = 38 pkg syscall (freebsd-386-cgo), const DLT_MATCHING_MAX = 242 pkg syscall (freebsd-386-cgo), const ELAST = 94 pkg syscall (freebsd-386-cgo), const O_CLOEXEC = 0 pkg syscall (freebsd-amd64), const AF_MAX = 38 pkg syscall (freebsd-amd64), const DLT_MATCHING_MAX = 242 pkg syscall (freebsd-amd64), const ELAST = 94 pkg syscall (freebsd-amd64), const O_CLOEXEC = 0 pkg syscall (freebsd-amd64-cgo), const AF_MAX = 38 pkg syscall (freebsd-amd64-cgo), const DLT_MATCHING_MAX = 242 pkg syscall (freebsd-amd64-cgo), const ELAST = 94 pkg syscall (freebsd-amd64-cgo), const O_CLOEXEC = 0 pkg syscall (freebsd-arm), const AF_MAX = 38 pkg syscall (freebsd-arm), const BIOCGRTIMEOUT = 1074545262 pkg syscall (freebsd-arm), const BIOCSRTIMEOUT = 2148287085 pkg syscall (freebsd-arm), const ELAST = 94 pkg syscall (freebsd-arm), const O_CLOEXEC = 0 pkg syscall (freebsd-arm), const SIOCAIFADDR = 2151967019 pkg syscall (freebsd-arm), const SIOCGIFSTATUS = 3274991931 pkg syscall (freebsd-arm), const SIOCSIFPHYADDR = 2151967046 pkg syscall (freebsd-arm), const SYS_CAP_FCNTLS_GET = 537 pkg syscall (freebsd-arm), const SYS_CAP_FCNTLS_GET ideal-int pkg syscall (freebsd-arm), const SYS_CAP_FCNTLS_LIMIT = 536 pkg syscall (freebsd-arm), const SYS_CAP_FCNTLS_LIMIT ideal-int pkg syscall (freebsd-arm), const SYS_CAP_IOCTLS_GET = 535 pkg syscall (freebsd-arm), const SYS_CAP_IOCTLS_GET ideal-int pkg syscall (freebsd-arm), const SYS_CAP_IOCTLS_LIMIT = 534 pkg syscall (freebsd-arm), const SYS_CAP_IOCTLS_LIMIT ideal-int pkg syscall (freebsd-arm), const SYS_CAP_RIGHTS_GET = 515 pkg syscall (freebsd-arm), const SYS_CAP_RIGHTS_GET ideal-int pkg syscall (freebsd-arm), const SYS_CAP_RIGHTS_LIMIT = 533 pkg syscall (freebsd-arm), const SYS_CAP_RIGHTS_LIMIT ideal-int pkg syscall (freebsd-arm), const SizeofBpfHdr = 24 pkg syscall (freebsd-arm), const SizeofIfData = 88 pkg syscall (freebsd-arm), const SizeofIfMsghdr = 104 pkg syscall (freebsd-arm), const SizeofSockaddrDatalink = 56 pkg syscall (freebsd-arm), const SizeofSockaddrUnix = 108 pkg syscall (freebsd-arm), const TIOCTIMESTAMP = 1074558041 pkg syscall (freebsd-arm), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm), type RawSockaddrDatalink struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm), type RawSockaddrUnix struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm), type Stat_t struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-arm-cgo), const AF_MAX = 38 pkg syscall (freebsd-arm-cgo), const BIOCGRTIMEOUT = 1074545262 pkg syscall (freebsd-arm-cgo), const BIOCSRTIMEOUT = 2148287085 pkg syscall (freebsd-arm-cgo), const ELAST = 94 pkg syscall (freebsd-arm-cgo), const O_CLOEXEC = 0 pkg syscall (freebsd-arm-cgo), const SIOCAIFADDR = 2151967019 pkg syscall (freebsd-arm-cgo), const SIOCGIFSTATUS = 3274991931 pkg syscall (freebsd-arm-cgo), const SIOCSIFPHYADDR = 2151967046 pkg syscall (freebsd-arm-cgo), const SYS_CAP_FCNTLS_GET = 537 pkg syscall (freebsd-arm-cgo), const SYS_CAP_FCNTLS_GET ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_FCNTLS_LIMIT = 536 pkg syscall (freebsd-arm-cgo), const SYS_CAP_FCNTLS_LIMIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_IOCTLS_GET = 535 pkg syscall (freebsd-arm-cgo), const SYS_CAP_IOCTLS_GET ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_IOCTLS_LIMIT = 534 pkg syscall (freebsd-arm-cgo), const SYS_CAP_IOCTLS_LIMIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_RIGHTS_GET = 515 pkg syscall (freebsd-arm-cgo), const SYS_CAP_RIGHTS_GET ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_RIGHTS_LIMIT = 533 pkg syscall (freebsd-arm-cgo), const SYS_CAP_RIGHTS_LIMIT ideal-int pkg syscall (freebsd-arm-cgo), const SizeofBpfHdr = 24 pkg syscall (freebsd-arm-cgo), const SizeofIfData = 88 pkg syscall (freebsd-arm-cgo), const SizeofIfMsghdr = 104 pkg syscall (freebsd-arm-cgo), const SizeofSockaddrDatalink = 56 pkg syscall (freebsd-arm-cgo), const SizeofSockaddrUnix = 108 pkg syscall (freebsd-arm-cgo), const TIOCTIMESTAMP = 1074558041 pkg syscall (freebsd-arm-cgo), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrDatalink struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrUnix struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm-cgo), type Stat_t struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-arm), const SizeofIfData = 132 pkg syscall (netbsd-arm), type IfMsghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-arm-cgo), const SizeofIfData = 132 pkg syscall (netbsd-arm-cgo), type IfMsghdr struct, Pad_cgo_1 [4]uint8 go/api/go1.1.txt0100644000000000000000001217526112412656734013652 0ustar00rootroot00000000000000pkg archive/tar, const TypeBlock = 52 pkg archive/tar, const TypeChar = 51 pkg archive/tar, const TypeCont = 55 pkg archive/tar, const TypeDir = 53 pkg archive/tar, const TypeFifo = 54 pkg archive/tar, const TypeGNULongLink = 75 pkg archive/tar, const TypeGNULongLink ideal-char pkg archive/tar, const TypeGNULongName = 76 pkg archive/tar, const TypeGNULongName ideal-char pkg archive/tar, const TypeLink = 49 pkg archive/tar, const TypeReg = 48 pkg archive/tar, const TypeRegA = 0 pkg archive/tar, const TypeSymlink = 50 pkg archive/tar, const TypeXGlobalHeader = 103 pkg archive/tar, const TypeXHeader = 120 pkg archive/tar, func FileInfoHeader(os.FileInfo, string) (*Header, error) pkg archive/tar, method (*Header) FileInfo() os.FileInfo pkg archive/zip, const Deflate = 8 pkg archive/zip, const Store = 0 pkg archive/zip, type FileHeader struct, CompressedSize64 uint64 pkg archive/zip, type FileHeader struct, UncompressedSize64 uint64 pkg bufio, const MaxScanTokenSize = 65536 pkg bufio, const MaxScanTokenSize ideal-int pkg bufio, func NewScanner(io.Reader) *Scanner pkg bufio, func ScanBytes([]uint8, bool) (int, []uint8, error) pkg bufio, func ScanLines([]uint8, bool) (int, []uint8, error) pkg bufio, func ScanRunes([]uint8, bool) (int, []uint8, error) pkg bufio, func ScanWords([]uint8, bool) (int, []uint8, error) pkg bufio, method (*Reader) WriteTo(io.Writer) (int64, error) pkg bufio, method (*Scanner) Bytes() []uint8 pkg bufio, method (*Scanner) Err() error pkg bufio, method (*Scanner) Scan() bool pkg bufio, method (*Scanner) Split(SplitFunc) pkg bufio, method (*Scanner) Text() string pkg bufio, method (*Writer) ReadFrom(io.Reader) (int64, error) pkg bufio, method (ReadWriter) ReadFrom(io.Reader) (int64, error) pkg bufio, method (ReadWriter) WriteTo(io.Writer) (int64, error) pkg bufio, type Scanner struct pkg bufio, type SplitFunc func([]uint8, bool) (int, []uint8, error) pkg bufio, var ErrAdvanceTooFar error pkg bufio, var ErrNegativeAdvance error pkg bufio, var ErrTooLong error pkg bytes, const MinRead = 512 pkg bytes, func TrimPrefix([]uint8, []uint8) []uint8 pkg bytes, func TrimSuffix([]uint8, []uint8) []uint8 pkg bytes, method (*Buffer) Grow(int) pkg bytes, method (*Reader) WriteTo(io.Writer) (int64, error) pkg compress/flate, const BestCompression = 9 pkg compress/flate, const BestSpeed = 1 pkg compress/flate, const DefaultCompression = -1 pkg compress/flate, const NoCompression = 0 pkg compress/gzip, const BestCompression = 9 pkg compress/gzip, const BestSpeed = 1 pkg compress/gzip, const DefaultCompression = -1 pkg compress/gzip, const NoCompression = 0 pkg compress/gzip, method (*Writer) Flush() error pkg compress/lzw, const LSB = 0 pkg compress/lzw, const MSB = 1 pkg compress/zlib, const BestCompression = 9 pkg compress/zlib, const BestSpeed = 1 pkg compress/zlib, const DefaultCompression = -1 pkg compress/zlib, const NoCompression = 0 pkg crypto, const MD4 = 1 pkg crypto, const MD5 = 2 pkg crypto, const MD5SHA1 = 8 pkg crypto, const RIPEMD160 = 9 pkg crypto, const SHA1 = 3 pkg crypto, const SHA224 = 4 pkg crypto, const SHA256 = 5 pkg crypto, const SHA384 = 6 pkg crypto, const SHA512 = 7 pkg crypto/aes, const BlockSize = 16 pkg crypto/des, const BlockSize = 8 pkg crypto/dsa, const L1024N160 = 0 pkg crypto/dsa, const L2048N224 = 1 pkg crypto/dsa, const L2048N256 = 2 pkg crypto/dsa, const L3072N256 = 3 pkg crypto/hmac, func Equal([]uint8, []uint8) bool pkg crypto/md5, const BlockSize = 64 pkg crypto/md5, const Size = 16 pkg crypto/sha1, const BlockSize = 64 pkg crypto/sha1, const Size = 20 pkg crypto/sha256, const BlockSize = 64 pkg crypto/sha256, const Size = 32 pkg crypto/sha256, const Size224 = 28 pkg crypto/sha512, const BlockSize = 128 pkg crypto/sha512, const Size = 64 pkg crypto/sha512, const Size384 = 48 pkg crypto/tls, const NoClientCert = 0 pkg crypto/tls, const RequestClientCert = 1 pkg crypto/tls, const RequireAndVerifyClientCert = 4 pkg crypto/tls, const RequireAnyClientCert = 2 pkg crypto/tls, const TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA = 49170 pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA = 49171 pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA = 49172 pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA uint16 pkg crypto/tls, const TLS_ECDHE_RSA_WITH_RC4_128_SHA = 49169 pkg crypto/tls, const TLS_RSA_WITH_3DES_EDE_CBC_SHA = 10 pkg crypto/tls, const TLS_RSA_WITH_AES_128_CBC_SHA = 47 pkg crypto/tls, const TLS_RSA_WITH_AES_256_CBC_SHA = 53 pkg crypto/tls, const TLS_RSA_WITH_AES_256_CBC_SHA uint16 pkg crypto/tls, const TLS_RSA_WITH_RC4_128_SHA = 5 pkg crypto/tls, const VerifyClientCertIfGiven = 3 pkg crypto/tls, type Config struct, PreferServerCipherSuites bool pkg crypto/tls, type Config struct, SessionTicketKey [32]uint8 pkg crypto/tls, type Config struct, SessionTicketsDisabled bool pkg crypto/tls, type ConnectionState struct, DidResume bool pkg crypto/x509, const CANotAuthorizedForThisName = 2 pkg crypto/x509, const DSA = 2 pkg crypto/x509, const DSAWithSHA1 = 7 pkg crypto/x509, const DSAWithSHA256 = 8 pkg crypto/x509, const ECDSA = 3 pkg crypto/x509, const ECDSA PublicKeyAlgorithm pkg crypto/x509, const ECDSAWithSHA1 = 9 pkg crypto/x509, const ECDSAWithSHA1 SignatureAlgorithm pkg crypto/x509, const ECDSAWithSHA256 = 10 pkg crypto/x509, const ECDSAWithSHA256 SignatureAlgorithm pkg crypto/x509, const ECDSAWithSHA384 = 11 pkg crypto/x509, const ECDSAWithSHA384 SignatureAlgorithm pkg crypto/x509, const ECDSAWithSHA512 = 12 pkg crypto/x509, const ECDSAWithSHA512 SignatureAlgorithm pkg crypto/x509, const Expired = 1 pkg crypto/x509, const ExtKeyUsageAny = 0 pkg crypto/x509, const ExtKeyUsageClientAuth = 2 pkg crypto/x509, const ExtKeyUsageCodeSigning = 3 pkg crypto/x509, const ExtKeyUsageEmailProtection = 4 pkg crypto/x509, const ExtKeyUsageIPSECEndSystem = 5 pkg crypto/x509, const ExtKeyUsageIPSECEndSystem ExtKeyUsage pkg crypto/x509, const ExtKeyUsageIPSECTunnel = 6 pkg crypto/x509, const ExtKeyUsageIPSECTunnel ExtKeyUsage pkg crypto/x509, const ExtKeyUsageIPSECUser = 7 pkg crypto/x509, const ExtKeyUsageIPSECUser ExtKeyUsage pkg crypto/x509, const ExtKeyUsageMicrosoftServerGatedCrypto = 10 pkg crypto/x509, const ExtKeyUsageMicrosoftServerGatedCrypto ExtKeyUsage pkg crypto/x509, const ExtKeyUsageNetscapeServerGatedCrypto = 11 pkg crypto/x509, const ExtKeyUsageNetscapeServerGatedCrypto ExtKeyUsage pkg crypto/x509, const ExtKeyUsageOCSPSigning = 9 pkg crypto/x509, const ExtKeyUsageServerAuth = 1 pkg crypto/x509, const ExtKeyUsageTimeStamping = 8 pkg crypto/x509, const IncompatibleUsage = 4 pkg crypto/x509, const IncompatibleUsage InvalidReason pkg crypto/x509, const KeyUsageCRLSign = 64 pkg crypto/x509, const KeyUsageCertSign = 32 pkg crypto/x509, const KeyUsageContentCommitment = 2 pkg crypto/x509, const KeyUsageDataEncipherment = 8 pkg crypto/x509, const KeyUsageDecipherOnly = 256 pkg crypto/x509, const KeyUsageDigitalSignature = 1 pkg crypto/x509, const KeyUsageEncipherOnly = 128 pkg crypto/x509, const KeyUsageKeyAgreement = 16 pkg crypto/x509, const KeyUsageKeyEncipherment = 4 pkg crypto/x509, const MD2WithRSA = 1 pkg crypto/x509, const MD5WithRSA = 2 pkg crypto/x509, const NotAuthorizedToSign = 0 pkg crypto/x509, const PEMCipher3DES = 2 pkg crypto/x509, const PEMCipher3DES PEMCipher pkg crypto/x509, const PEMCipherAES128 = 3 pkg crypto/x509, const PEMCipherAES128 PEMCipher pkg crypto/x509, const PEMCipherAES192 = 4 pkg crypto/x509, const PEMCipherAES192 PEMCipher pkg crypto/x509, const PEMCipherAES256 = 5 pkg crypto/x509, const PEMCipherAES256 PEMCipher pkg crypto/x509, const PEMCipherDES = 1 pkg crypto/x509, const PEMCipherDES PEMCipher pkg crypto/x509, const RSA = 1 pkg crypto/x509, const SHA1WithRSA = 3 pkg crypto/x509, const SHA256WithRSA = 4 pkg crypto/x509, const SHA384WithRSA = 5 pkg crypto/x509, const SHA512WithRSA = 6 pkg crypto/x509, const TooManyIntermediates = 3 pkg crypto/x509, const UnknownPublicKeyAlgorithm = 0 pkg crypto/x509, const UnknownSignatureAlgorithm = 0 pkg crypto/x509, func DecryptPEMBlock(*pem.Block, []uint8) ([]uint8, error) pkg crypto/x509, func EncryptPEMBlock(io.Reader, string, []uint8, []uint8, PEMCipher) (*pem.Block, error) pkg crypto/x509, func IsEncryptedPEMBlock(*pem.Block) bool pkg crypto/x509, func ParseECPrivateKey([]uint8) (*ecdsa.PrivateKey, error) pkg crypto/x509, method (SystemRootsError) Error() string pkg crypto/x509, type Certificate struct, IPAddresses []net.IP pkg crypto/x509, type PEMCipher int pkg crypto/x509, type SystemRootsError struct pkg crypto/x509, type VerifyOptions struct, KeyUsages []ExtKeyUsage pkg crypto/x509, var IncorrectPasswordError error pkg database/sql, method (*DB) Ping() error pkg database/sql, method (*DB) SetMaxIdleConns(int) pkg database/sql/driver, type Queryer interface { Query } pkg database/sql/driver, type Queryer interface, Query(string, []Value) (Rows, error) pkg debug/dwarf, const AttrAbstractOrigin = 49 pkg debug/dwarf, const AttrAccessibility = 50 pkg debug/dwarf, const AttrAddrClass = 51 pkg debug/dwarf, const AttrAllocated = 78 pkg debug/dwarf, const AttrArtificial = 52 pkg debug/dwarf, const AttrAssociated = 79 pkg debug/dwarf, const AttrBaseTypes = 53 pkg debug/dwarf, const AttrBitOffset = 12 pkg debug/dwarf, const AttrBitSize = 13 pkg debug/dwarf, const AttrByteSize = 11 pkg debug/dwarf, const AttrCallColumn = 87 pkg debug/dwarf, const AttrCallFile = 88 pkg debug/dwarf, const AttrCallLine = 89 pkg debug/dwarf, const AttrCalling = 54 pkg debug/dwarf, const AttrCommonRef = 26 pkg debug/dwarf, const AttrCompDir = 27 pkg debug/dwarf, const AttrConstValue = 28 pkg debug/dwarf, const AttrContainingType = 29 pkg debug/dwarf, const AttrCount = 55 pkg debug/dwarf, const AttrDataLocation = 80 pkg debug/dwarf, const AttrDataMemberLoc = 56 pkg debug/dwarf, const AttrDeclColumn = 57 pkg debug/dwarf, const AttrDeclFile = 58 pkg debug/dwarf, const AttrDeclLine = 59 pkg debug/dwarf, const AttrDeclaration = 60 pkg debug/dwarf, const AttrDefaultValue = 30 pkg debug/dwarf, const AttrDescription = 90 pkg debug/dwarf, const AttrDiscr = 21 pkg debug/dwarf, const AttrDiscrList = 61 pkg debug/dwarf, const AttrDiscrValue = 22 pkg debug/dwarf, const AttrEncoding = 62 pkg debug/dwarf, const AttrEntrypc = 82 pkg debug/dwarf, const AttrExtension = 84 pkg debug/dwarf, const AttrExternal = 63 pkg debug/dwarf, const AttrFrameBase = 64 pkg debug/dwarf, const AttrFriend = 65 pkg debug/dwarf, const AttrHighpc = 18 pkg debug/dwarf, const AttrIdentifierCase = 66 pkg debug/dwarf, const AttrImport = 24 pkg debug/dwarf, const AttrInline = 32 pkg debug/dwarf, const AttrIsOptional = 33 pkg debug/dwarf, const AttrLanguage = 19 pkg debug/dwarf, const AttrLocation = 2 pkg debug/dwarf, const AttrLowerBound = 34 pkg debug/dwarf, const AttrLowpc = 17 pkg debug/dwarf, const AttrMacroInfo = 67 pkg debug/dwarf, const AttrName = 3 pkg debug/dwarf, const AttrNamelistItem = 68 pkg debug/dwarf, const AttrOrdering = 9 pkg debug/dwarf, const AttrPriority = 69 pkg debug/dwarf, const AttrProducer = 37 pkg debug/dwarf, const AttrPrototyped = 39 pkg debug/dwarf, const AttrRanges = 85 pkg debug/dwarf, const AttrReturnAddr = 42 pkg debug/dwarf, const AttrSegment = 70 pkg debug/dwarf, const AttrSibling = 1 pkg debug/dwarf, const AttrSpecification = 71 pkg debug/dwarf, const AttrStartScope = 44 pkg debug/dwarf, const AttrStaticLink = 72 pkg debug/dwarf, const AttrStmtList = 16 pkg debug/dwarf, const AttrStride = 81 pkg debug/dwarf, const AttrStrideSize = 46 pkg debug/dwarf, const AttrStringLength = 25 pkg debug/dwarf, const AttrTrampoline = 86 pkg debug/dwarf, const AttrType = 73 pkg debug/dwarf, const AttrUpperBound = 47 pkg debug/dwarf, const AttrUseLocation = 74 pkg debug/dwarf, const AttrUseUTF8 = 83 pkg debug/dwarf, const AttrVarParam = 75 pkg debug/dwarf, const AttrVirtuality = 76 pkg debug/dwarf, const AttrVisibility = 23 pkg debug/dwarf, const AttrVtableElemLoc = 77 pkg debug/dwarf, const TagAccessDeclaration = 35 pkg debug/dwarf, const TagArrayType = 1 pkg debug/dwarf, const TagBaseType = 36 pkg debug/dwarf, const TagCatchDwarfBlock = 37 pkg debug/dwarf, const TagClassType = 2 pkg debug/dwarf, const TagCommonDwarfBlock = 26 pkg debug/dwarf, const TagCommonInclusion = 27 pkg debug/dwarf, const TagCompileUnit = 17 pkg debug/dwarf, const TagConstType = 38 pkg debug/dwarf, const TagConstant = 39 pkg debug/dwarf, const TagDwarfProcedure = 54 pkg debug/dwarf, const TagEntryPoint = 3 pkg debug/dwarf, const TagEnumerationType = 4 pkg debug/dwarf, const TagEnumerator = 40 pkg debug/dwarf, const TagFileType = 41 pkg debug/dwarf, const TagFormalParameter = 5 pkg debug/dwarf, const TagFriend = 42 pkg debug/dwarf, const TagImportedDeclaration = 8 pkg debug/dwarf, const TagImportedModule = 58 pkg debug/dwarf, const TagImportedUnit = 61 pkg debug/dwarf, const TagInheritance = 28 pkg debug/dwarf, const TagInlinedSubroutine = 29 pkg debug/dwarf, const TagInterfaceType = 56 pkg debug/dwarf, const TagLabel = 10 pkg debug/dwarf, const TagLexDwarfBlock = 11 pkg debug/dwarf, const TagMember = 13 pkg debug/dwarf, const TagModule = 30 pkg debug/dwarf, const TagMutableType = 62 pkg debug/dwarf, const TagNamelist = 43 pkg debug/dwarf, const TagNamelistItem = 44 pkg debug/dwarf, const TagNamespace = 57 pkg debug/dwarf, const TagPackedType = 45 pkg debug/dwarf, const TagPartialUnit = 60 pkg debug/dwarf, const TagPointerType = 15 pkg debug/dwarf, const TagPtrToMemberType = 31 pkg debug/dwarf, const TagReferenceType = 16 pkg debug/dwarf, const TagRestrictType = 55 pkg debug/dwarf, const TagSetType = 32 pkg debug/dwarf, const TagStringType = 18 pkg debug/dwarf, const TagStructType = 19 pkg debug/dwarf, const TagSubprogram = 46 pkg debug/dwarf, const TagSubrangeType = 33 pkg debug/dwarf, const TagSubroutineType = 21 pkg debug/dwarf, const TagTemplateTypeParameter = 47 pkg debug/dwarf, const TagTemplateValueParameter = 48 pkg debug/dwarf, const TagThrownType = 49 pkg debug/dwarf, const TagTryDwarfBlock = 50 pkg debug/dwarf, const TagTypedef = 22 pkg debug/dwarf, const TagUnionType = 23 pkg debug/dwarf, const TagUnspecifiedParameters = 24 pkg debug/dwarf, const TagUnspecifiedType = 59 pkg debug/dwarf, const TagVariable = 52 pkg debug/dwarf, const TagVariant = 25 pkg debug/dwarf, const TagVariantPart = 51 pkg debug/dwarf, const TagVolatileType = 53 pkg debug/dwarf, const TagWithStmt = 34 pkg debug/elf, const ARM_MAGIC_TRAMP_NUMBER = 1543503875 pkg debug/elf, const DF_BIND_NOW = 8 pkg debug/elf, const DF_ORIGIN = 1 pkg debug/elf, const DF_STATIC_TLS = 16 pkg debug/elf, const DF_SYMBOLIC = 2 pkg debug/elf, const DF_TEXTREL = 4 pkg debug/elf, const DT_BIND_NOW = 24 pkg debug/elf, const DT_DEBUG = 21 pkg debug/elf, const DT_ENCODING = 32 pkg debug/elf, const DT_FINI = 13 pkg debug/elf, const DT_FINI_ARRAY = 26 pkg debug/elf, const DT_FINI_ARRAYSZ = 28 pkg debug/elf, const DT_FLAGS = 30 pkg debug/elf, const DT_HASH = 4 pkg debug/elf, const DT_HIOS = 1879044096 pkg debug/elf, const DT_HIPROC = 2147483647 pkg debug/elf, const DT_INIT = 12 pkg debug/elf, const DT_INIT_ARRAY = 25 pkg debug/elf, const DT_INIT_ARRAYSZ = 27 pkg debug/elf, const DT_JMPREL = 23 pkg debug/elf, const DT_LOOS = 1610612749 pkg debug/elf, const DT_LOPROC = 1879048192 pkg debug/elf, const DT_NEEDED = 1 pkg debug/elf, const DT_NULL = 0 pkg debug/elf, const DT_PLTGOT = 3 pkg debug/elf, const DT_PLTREL = 20 pkg debug/elf, const DT_PLTRELSZ = 2 pkg debug/elf, const DT_PREINIT_ARRAY = 32 pkg debug/elf, const DT_PREINIT_ARRAYSZ = 33 pkg debug/elf, const DT_REL = 17 pkg debug/elf, const DT_RELA = 7 pkg debug/elf, const DT_RELAENT = 9 pkg debug/elf, const DT_RELASZ = 8 pkg debug/elf, const DT_RELENT = 19 pkg debug/elf, const DT_RELSZ = 18 pkg debug/elf, const DT_RPATH = 15 pkg debug/elf, const DT_RUNPATH = 29 pkg debug/elf, const DT_SONAME = 14 pkg debug/elf, const DT_STRSZ = 10 pkg debug/elf, const DT_STRTAB = 5 pkg debug/elf, const DT_SYMBOLIC = 16 pkg debug/elf, const DT_SYMENT = 11 pkg debug/elf, const DT_SYMTAB = 6 pkg debug/elf, const DT_TEXTREL = 22 pkg debug/elf, const DT_VERNEED = 1879048190 pkg debug/elf, const DT_VERNEEDNUM = 1879048191 pkg debug/elf, const DT_VERSYM = 1879048176 pkg debug/elf, const EI_ABIVERSION = 8 pkg debug/elf, const EI_CLASS = 4 pkg debug/elf, const EI_DATA = 5 pkg debug/elf, const EI_NIDENT = 16 pkg debug/elf, const EI_OSABI = 7 pkg debug/elf, const EI_PAD = 9 pkg debug/elf, const EI_VERSION = 6 pkg debug/elf, const ELFCLASS32 = 1 pkg debug/elf, const ELFCLASS64 = 2 pkg debug/elf, const ELFCLASSNONE = 0 pkg debug/elf, const ELFDATA2LSB = 1 pkg debug/elf, const ELFDATA2MSB = 2 pkg debug/elf, const ELFDATANONE = 0 pkg debug/elf, const ELFMAG = "\u007fELF" pkg debug/elf, const ELFOSABI_86OPEN = 5 pkg debug/elf, const ELFOSABI_AIX = 7 pkg debug/elf, const ELFOSABI_ARM = 97 pkg debug/elf, const ELFOSABI_FREEBSD = 9 pkg debug/elf, const ELFOSABI_HPUX = 1 pkg debug/elf, const ELFOSABI_HURD = 4 pkg debug/elf, const ELFOSABI_IRIX = 8 pkg debug/elf, const ELFOSABI_LINUX = 3 pkg debug/elf, const ELFOSABI_MODESTO = 11 pkg debug/elf, const ELFOSABI_NETBSD = 2 pkg debug/elf, const ELFOSABI_NONE = 0 pkg debug/elf, const ELFOSABI_NSK = 14 pkg debug/elf, const ELFOSABI_OPENBSD = 12 pkg debug/elf, const ELFOSABI_OPENVMS = 13 pkg debug/elf, const ELFOSABI_SOLARIS = 6 pkg debug/elf, const ELFOSABI_STANDALONE = 255 pkg debug/elf, const ELFOSABI_TRU64 = 10 pkg debug/elf, const EM_386 = 3 pkg debug/elf, const EM_486 = 6 pkg debug/elf, const EM_68HC12 = 53 pkg debug/elf, const EM_68K = 4 pkg debug/elf, const EM_860 = 7 pkg debug/elf, const EM_88K = 5 pkg debug/elf, const EM_960 = 19 pkg debug/elf, const EM_ALPHA = 36902 pkg debug/elf, const EM_ALPHA_STD = 41 pkg debug/elf, const EM_ARC = 45 pkg debug/elf, const EM_ARM = 40 pkg debug/elf, const EM_COLDFIRE = 52 pkg debug/elf, const EM_FR20 = 37 pkg debug/elf, const EM_H8S = 48 pkg debug/elf, const EM_H8_300 = 46 pkg debug/elf, const EM_H8_300H = 47 pkg debug/elf, const EM_H8_500 = 49 pkg debug/elf, const EM_IA_64 = 50 pkg debug/elf, const EM_M32 = 1 pkg debug/elf, const EM_ME16 = 59 pkg debug/elf, const EM_MIPS = 8 pkg debug/elf, const EM_MIPS_RS3_LE = 10 pkg debug/elf, const EM_MIPS_RS4_BE = 10 pkg debug/elf, const EM_MIPS_X = 51 pkg debug/elf, const EM_MMA = 54 pkg debug/elf, const EM_NCPU = 56 pkg debug/elf, const EM_NDR1 = 57 pkg debug/elf, const EM_NONE = 0 pkg debug/elf, const EM_PARISC = 15 pkg debug/elf, const EM_PCP = 55 pkg debug/elf, const EM_PPC = 20 pkg debug/elf, const EM_PPC64 = 21 pkg debug/elf, const EM_RCE = 39 pkg debug/elf, const EM_RH32 = 38 pkg debug/elf, const EM_S370 = 9 pkg debug/elf, const EM_S390 = 22 pkg debug/elf, const EM_SH = 42 pkg debug/elf, const EM_SPARC = 2 pkg debug/elf, const EM_SPARC32PLUS = 18 pkg debug/elf, const EM_SPARCV9 = 43 pkg debug/elf, const EM_ST100 = 60 pkg debug/elf, const EM_STARCORE = 58 pkg debug/elf, const EM_TINYJ = 61 pkg debug/elf, const EM_TRICORE = 44 pkg debug/elf, const EM_V800 = 36 pkg debug/elf, const EM_VPP500 = 17 pkg debug/elf, const EM_X86_64 = 62 pkg debug/elf, const ET_CORE = 4 pkg debug/elf, const ET_DYN = 3 pkg debug/elf, const ET_EXEC = 2 pkg debug/elf, const ET_HIOS = 65279 pkg debug/elf, const ET_HIPROC = 65535 pkg debug/elf, const ET_LOOS = 65024 pkg debug/elf, const ET_LOPROC = 65280 pkg debug/elf, const ET_NONE = 0 pkg debug/elf, const ET_REL = 1 pkg debug/elf, const EV_CURRENT = 1 pkg debug/elf, const EV_NONE = 0 pkg debug/elf, const NT_FPREGSET = 2 pkg debug/elf, const NT_PRPSINFO = 3 pkg debug/elf, const NT_PRSTATUS = 1 pkg debug/elf, const PF_MASKOS = 267386880 pkg debug/elf, const PF_MASKPROC = 4026531840 pkg debug/elf, const PF_R = 4 pkg debug/elf, const PF_W = 2 pkg debug/elf, const PF_X = 1 pkg debug/elf, const PT_DYNAMIC = 2 pkg debug/elf, const PT_HIOS = 1879048191 pkg debug/elf, const PT_HIPROC = 2147483647 pkg debug/elf, const PT_INTERP = 3 pkg debug/elf, const PT_LOAD = 1 pkg debug/elf, const PT_LOOS = 1610612736 pkg debug/elf, const PT_LOPROC = 1879048192 pkg debug/elf, const PT_NOTE = 4 pkg debug/elf, const PT_NULL = 0 pkg debug/elf, const PT_PHDR = 6 pkg debug/elf, const PT_SHLIB = 5 pkg debug/elf, const PT_TLS = 7 pkg debug/elf, const R_386_32 = 1 pkg debug/elf, const R_386_COPY = 5 pkg debug/elf, const R_386_GLOB_DAT = 6 pkg debug/elf, const R_386_GOT32 = 3 pkg debug/elf, const R_386_GOTOFF = 9 pkg debug/elf, const R_386_GOTPC = 10 pkg debug/elf, const R_386_JMP_SLOT = 7 pkg debug/elf, const R_386_NONE = 0 pkg debug/elf, const R_386_PC32 = 2 pkg debug/elf, const R_386_PLT32 = 4 pkg debug/elf, const R_386_RELATIVE = 8 pkg debug/elf, const R_386_TLS_DTPMOD32 = 35 pkg debug/elf, const R_386_TLS_DTPOFF32 = 36 pkg debug/elf, const R_386_TLS_GD = 18 pkg debug/elf, const R_386_TLS_GD_32 = 24 pkg debug/elf, const R_386_TLS_GD_CALL = 26 pkg debug/elf, const R_386_TLS_GD_POP = 27 pkg debug/elf, const R_386_TLS_GD_PUSH = 25 pkg debug/elf, const R_386_TLS_GOTIE = 16 pkg debug/elf, const R_386_TLS_IE = 15 pkg debug/elf, const R_386_TLS_IE_32 = 33 pkg debug/elf, const R_386_TLS_LDM = 19 pkg debug/elf, const R_386_TLS_LDM_32 = 28 pkg debug/elf, const R_386_TLS_LDM_CALL = 30 pkg debug/elf, const R_386_TLS_LDM_POP = 31 pkg debug/elf, const R_386_TLS_LDM_PUSH = 29 pkg debug/elf, const R_386_TLS_LDO_32 = 32 pkg debug/elf, const R_386_TLS_LE = 17 pkg debug/elf, const R_386_TLS_LE_32 = 34 pkg debug/elf, const R_386_TLS_TPOFF = 14 pkg debug/elf, const R_386_TLS_TPOFF32 = 37 pkg debug/elf, const R_ALPHA_BRADDR = 7 pkg debug/elf, const R_ALPHA_COPY = 24 pkg debug/elf, const R_ALPHA_GLOB_DAT = 25 pkg debug/elf, const R_ALPHA_GPDISP = 6 pkg debug/elf, const R_ALPHA_GPREL32 = 3 pkg debug/elf, const R_ALPHA_GPRELHIGH = 17 pkg debug/elf, const R_ALPHA_GPRELLOW = 18 pkg debug/elf, const R_ALPHA_GPVALUE = 16 pkg debug/elf, const R_ALPHA_HINT = 8 pkg debug/elf, const R_ALPHA_IMMED_BR_HI32 = 22 pkg debug/elf, const R_ALPHA_IMMED_GP_16 = 19 pkg debug/elf, const R_ALPHA_IMMED_GP_HI32 = 20 pkg debug/elf, const R_ALPHA_IMMED_LO32 = 23 pkg debug/elf, const R_ALPHA_IMMED_SCN_HI32 = 21 pkg debug/elf, const R_ALPHA_JMP_SLOT = 26 pkg debug/elf, const R_ALPHA_LITERAL = 4 pkg debug/elf, const R_ALPHA_LITUSE = 5 pkg debug/elf, const R_ALPHA_NONE = 0 pkg debug/elf, const R_ALPHA_OP_PRSHIFT = 15 pkg debug/elf, const R_ALPHA_OP_PSUB = 14 pkg debug/elf, const R_ALPHA_OP_PUSH = 12 pkg debug/elf, const R_ALPHA_OP_STORE = 13 pkg debug/elf, const R_ALPHA_REFLONG = 1 pkg debug/elf, const R_ALPHA_REFQUAD = 2 pkg debug/elf, const R_ALPHA_RELATIVE = 27 pkg debug/elf, const R_ALPHA_SREL16 = 9 pkg debug/elf, const R_ALPHA_SREL32 = 10 pkg debug/elf, const R_ALPHA_SREL64 = 11 pkg debug/elf, const R_ARM_ABS12 = 6 pkg debug/elf, const R_ARM_ABS16 = 5 pkg debug/elf, const R_ARM_ABS32 = 2 pkg debug/elf, const R_ARM_ABS8 = 8 pkg debug/elf, const R_ARM_AMP_VCALL9 = 12 pkg debug/elf, const R_ARM_COPY = 20 pkg debug/elf, const R_ARM_GLOB_DAT = 21 pkg debug/elf, const R_ARM_GNU_VTENTRY = 100 pkg debug/elf, const R_ARM_GNU_VTINHERIT = 101 pkg debug/elf, const R_ARM_GOT32 = 26 pkg debug/elf, const R_ARM_GOTOFF = 24 pkg debug/elf, const R_ARM_GOTPC = 25 pkg debug/elf, const R_ARM_JUMP_SLOT = 22 pkg debug/elf, const R_ARM_NONE = 0 pkg debug/elf, const R_ARM_PC13 = 4 pkg debug/elf, const R_ARM_PC24 = 1 pkg debug/elf, const R_ARM_PLT32 = 27 pkg debug/elf, const R_ARM_RABS32 = 253 pkg debug/elf, const R_ARM_RBASE = 255 pkg debug/elf, const R_ARM_REL32 = 3 pkg debug/elf, const R_ARM_RELATIVE = 23 pkg debug/elf, const R_ARM_RPC24 = 254 pkg debug/elf, const R_ARM_RREL32 = 252 pkg debug/elf, const R_ARM_RSBREL32 = 250 pkg debug/elf, const R_ARM_SBREL32 = 9 pkg debug/elf, const R_ARM_SWI24 = 13 pkg debug/elf, const R_ARM_THM_ABS5 = 7 pkg debug/elf, const R_ARM_THM_PC22 = 10 pkg debug/elf, const R_ARM_THM_PC8 = 11 pkg debug/elf, const R_ARM_THM_RPC22 = 251 pkg debug/elf, const R_ARM_THM_SWI8 = 14 pkg debug/elf, const R_ARM_THM_XPC22 = 16 pkg debug/elf, const R_ARM_XPC25 = 15 pkg debug/elf, const R_PPC_ADDR14 = 7 pkg debug/elf, const R_PPC_ADDR14_BRNTAKEN = 9 pkg debug/elf, const R_PPC_ADDR14_BRTAKEN = 8 pkg debug/elf, const R_PPC_ADDR16 = 3 pkg debug/elf, const R_PPC_ADDR16_HA = 6 pkg debug/elf, const R_PPC_ADDR16_HI = 5 pkg debug/elf, const R_PPC_ADDR16_LO = 4 pkg debug/elf, const R_PPC_ADDR24 = 2 pkg debug/elf, const R_PPC_ADDR32 = 1 pkg debug/elf, const R_PPC_COPY = 19 pkg debug/elf, const R_PPC_DTPMOD32 = 68 pkg debug/elf, const R_PPC_DTPREL16 = 74 pkg debug/elf, const R_PPC_DTPREL16_HA = 77 pkg debug/elf, const R_PPC_DTPREL16_HI = 76 pkg debug/elf, const R_PPC_DTPREL16_LO = 75 pkg debug/elf, const R_PPC_DTPREL32 = 78 pkg debug/elf, const R_PPC_EMB_BIT_FLD = 115 pkg debug/elf, const R_PPC_EMB_MRKREF = 110 pkg debug/elf, const R_PPC_EMB_NADDR16 = 102 pkg debug/elf, const R_PPC_EMB_NADDR16_HA = 105 pkg debug/elf, const R_PPC_EMB_NADDR16_HI = 104 pkg debug/elf, const R_PPC_EMB_NADDR16_LO = 103 pkg debug/elf, const R_PPC_EMB_NADDR32 = 101 pkg debug/elf, const R_PPC_EMB_RELSDA = 116 pkg debug/elf, const R_PPC_EMB_RELSEC16 = 111 pkg debug/elf, const R_PPC_EMB_RELST_HA = 114 pkg debug/elf, const R_PPC_EMB_RELST_HI = 113 pkg debug/elf, const R_PPC_EMB_RELST_LO = 112 pkg debug/elf, const R_PPC_EMB_SDA21 = 109 pkg debug/elf, const R_PPC_EMB_SDA2I16 = 107 pkg debug/elf, const R_PPC_EMB_SDA2REL = 108 pkg debug/elf, const R_PPC_EMB_SDAI16 = 106 pkg debug/elf, const R_PPC_GLOB_DAT = 20 pkg debug/elf, const R_PPC_GOT16 = 14 pkg debug/elf, const R_PPC_GOT16_HA = 17 pkg debug/elf, const R_PPC_GOT16_HI = 16 pkg debug/elf, const R_PPC_GOT16_LO = 15 pkg debug/elf, const R_PPC_GOT_TLSGD16 = 79 pkg debug/elf, const R_PPC_GOT_TLSGD16_HA = 82 pkg debug/elf, const R_PPC_GOT_TLSGD16_HI = 81 pkg debug/elf, const R_PPC_GOT_TLSGD16_LO = 80 pkg debug/elf, const R_PPC_GOT_TLSLD16 = 83 pkg debug/elf, const R_PPC_GOT_TLSLD16_HA = 86 pkg debug/elf, const R_PPC_GOT_TLSLD16_HI = 85 pkg debug/elf, const R_PPC_GOT_TLSLD16_LO = 84 pkg debug/elf, const R_PPC_GOT_TPREL16 = 87 pkg debug/elf, const R_PPC_GOT_TPREL16_HA = 90 pkg debug/elf, const R_PPC_GOT_TPREL16_HI = 89 pkg debug/elf, const R_PPC_GOT_TPREL16_LO = 88 pkg debug/elf, const R_PPC_JMP_SLOT = 21 pkg debug/elf, const R_PPC_LOCAL24PC = 23 pkg debug/elf, const R_PPC_NONE = 0 pkg debug/elf, const R_PPC_PLT16_HA = 31 pkg debug/elf, const R_PPC_PLT16_HI = 30 pkg debug/elf, const R_PPC_PLT16_LO = 29 pkg debug/elf, const R_PPC_PLT32 = 27 pkg debug/elf, const R_PPC_PLTREL24 = 18 pkg debug/elf, const R_PPC_PLTREL32 = 28 pkg debug/elf, const R_PPC_REL14 = 11 pkg debug/elf, const R_PPC_REL14_BRNTAKEN = 13 pkg debug/elf, const R_PPC_REL14_BRTAKEN = 12 pkg debug/elf, const R_PPC_REL24 = 10 pkg debug/elf, const R_PPC_REL32 = 26 pkg debug/elf, const R_PPC_RELATIVE = 22 pkg debug/elf, const R_PPC_SDAREL16 = 32 pkg debug/elf, const R_PPC_SECTOFF = 33 pkg debug/elf, const R_PPC_SECTOFF_HA = 36 pkg debug/elf, const R_PPC_SECTOFF_HI = 35 pkg debug/elf, const R_PPC_SECTOFF_LO = 34 pkg debug/elf, const R_PPC_TLS = 67 pkg debug/elf, const R_PPC_TPREL16 = 69 pkg debug/elf, const R_PPC_TPREL16_HA = 72 pkg debug/elf, const R_PPC_TPREL16_HI = 71 pkg debug/elf, const R_PPC_TPREL16_LO = 70 pkg debug/elf, const R_PPC_TPREL32 = 73 pkg debug/elf, const R_PPC_UADDR16 = 25 pkg debug/elf, const R_PPC_UADDR32 = 24 pkg debug/elf, const R_SPARC_10 = 30 pkg debug/elf, const R_SPARC_11 = 31 pkg debug/elf, const R_SPARC_13 = 11 pkg debug/elf, const R_SPARC_16 = 2 pkg debug/elf, const R_SPARC_22 = 10 pkg debug/elf, const R_SPARC_32 = 3 pkg debug/elf, const R_SPARC_5 = 44 pkg debug/elf, const R_SPARC_6 = 45 pkg debug/elf, const R_SPARC_64 = 32 pkg debug/elf, const R_SPARC_7 = 43 pkg debug/elf, const R_SPARC_8 = 1 pkg debug/elf, const R_SPARC_COPY = 19 pkg debug/elf, const R_SPARC_DISP16 = 5 pkg debug/elf, const R_SPARC_DISP32 = 6 pkg debug/elf, const R_SPARC_DISP64 = 46 pkg debug/elf, const R_SPARC_DISP8 = 4 pkg debug/elf, const R_SPARC_GLOB_DAT = 20 pkg debug/elf, const R_SPARC_GLOB_JMP = 42 pkg debug/elf, const R_SPARC_GOT10 = 13 pkg debug/elf, const R_SPARC_GOT13 = 14 pkg debug/elf, const R_SPARC_GOT22 = 15 pkg debug/elf, const R_SPARC_H44 = 50 pkg debug/elf, const R_SPARC_HH22 = 34 pkg debug/elf, const R_SPARC_HI22 = 9 pkg debug/elf, const R_SPARC_HIPLT22 = 25 pkg debug/elf, const R_SPARC_HIX22 = 48 pkg debug/elf, const R_SPARC_HM10 = 35 pkg debug/elf, const R_SPARC_JMP_SLOT = 21 pkg debug/elf, const R_SPARC_L44 = 52 pkg debug/elf, const R_SPARC_LM22 = 36 pkg debug/elf, const R_SPARC_LO10 = 12 pkg debug/elf, const R_SPARC_LOPLT10 = 26 pkg debug/elf, const R_SPARC_LOX10 = 49 pkg debug/elf, const R_SPARC_M44 = 51 pkg debug/elf, const R_SPARC_NONE = 0 pkg debug/elf, const R_SPARC_OLO10 = 33 pkg debug/elf, const R_SPARC_PC10 = 16 pkg debug/elf, const R_SPARC_PC22 = 17 pkg debug/elf, const R_SPARC_PCPLT10 = 29 pkg debug/elf, const R_SPARC_PCPLT22 = 28 pkg debug/elf, const R_SPARC_PCPLT32 = 27 pkg debug/elf, const R_SPARC_PC_HH22 = 37 pkg debug/elf, const R_SPARC_PC_HM10 = 38 pkg debug/elf, const R_SPARC_PC_LM22 = 39 pkg debug/elf, const R_SPARC_PLT32 = 24 pkg debug/elf, const R_SPARC_PLT64 = 47 pkg debug/elf, const R_SPARC_REGISTER = 53 pkg debug/elf, const R_SPARC_RELATIVE = 22 pkg debug/elf, const R_SPARC_UA16 = 55 pkg debug/elf, const R_SPARC_UA32 = 23 pkg debug/elf, const R_SPARC_UA64 = 54 pkg debug/elf, const R_SPARC_WDISP16 = 40 pkg debug/elf, const R_SPARC_WDISP19 = 41 pkg debug/elf, const R_SPARC_WDISP22 = 8 pkg debug/elf, const R_SPARC_WDISP30 = 7 pkg debug/elf, const R_SPARC_WPLT30 = 18 pkg debug/elf, const R_X86_64_16 = 12 pkg debug/elf, const R_X86_64_32 = 10 pkg debug/elf, const R_X86_64_32S = 11 pkg debug/elf, const R_X86_64_64 = 1 pkg debug/elf, const R_X86_64_8 = 14 pkg debug/elf, const R_X86_64_COPY = 5 pkg debug/elf, const R_X86_64_DTPMOD64 = 16 pkg debug/elf, const R_X86_64_DTPOFF32 = 21 pkg debug/elf, const R_X86_64_DTPOFF64 = 17 pkg debug/elf, const R_X86_64_GLOB_DAT = 6 pkg debug/elf, const R_X86_64_GOT32 = 3 pkg debug/elf, const R_X86_64_GOTPCREL = 9 pkg debug/elf, const R_X86_64_GOTTPOFF = 22 pkg debug/elf, const R_X86_64_JMP_SLOT = 7 pkg debug/elf, const R_X86_64_NONE = 0 pkg debug/elf, const R_X86_64_PC16 = 13 pkg debug/elf, const R_X86_64_PC32 = 2 pkg debug/elf, const R_X86_64_PC8 = 15 pkg debug/elf, const R_X86_64_PLT32 = 4 pkg debug/elf, const R_X86_64_RELATIVE = 8 pkg debug/elf, const R_X86_64_TLSGD = 19 pkg debug/elf, const R_X86_64_TLSLD = 20 pkg debug/elf, const R_X86_64_TPOFF32 = 23 pkg debug/elf, const R_X86_64_TPOFF64 = 18 pkg debug/elf, const SHF_ALLOC = 2 pkg debug/elf, const SHF_EXECINSTR = 4 pkg debug/elf, const SHF_GROUP = 512 pkg debug/elf, const SHF_INFO_LINK = 64 pkg debug/elf, const SHF_LINK_ORDER = 128 pkg debug/elf, const SHF_MASKOS = 267386880 pkg debug/elf, const SHF_MASKPROC = 4026531840 pkg debug/elf, const SHF_MERGE = 16 pkg debug/elf, const SHF_OS_NONCONFORMING = 256 pkg debug/elf, const SHF_STRINGS = 32 pkg debug/elf, const SHF_TLS = 1024 pkg debug/elf, const SHF_WRITE = 1 pkg debug/elf, const SHN_ABS = 65521 pkg debug/elf, const SHN_COMMON = 65522 pkg debug/elf, const SHN_HIOS = 65343 pkg debug/elf, const SHN_HIPROC = 65311 pkg debug/elf, const SHN_HIRESERVE = 65535 pkg debug/elf, const SHN_LOOS = 65312 pkg debug/elf, const SHN_LOPROC = 65280 pkg debug/elf, const SHN_LORESERVE = 65280 pkg debug/elf, const SHN_UNDEF = 0 pkg debug/elf, const SHN_XINDEX = 65535 pkg debug/elf, const SHT_DYNAMIC = 6 pkg debug/elf, const SHT_DYNSYM = 11 pkg debug/elf, const SHT_FINI_ARRAY = 15 pkg debug/elf, const SHT_GNU_ATTRIBUTES = 1879048181 pkg debug/elf, const SHT_GNU_HASH = 1879048182 pkg debug/elf, const SHT_GNU_LIBLIST = 1879048183 pkg debug/elf, const SHT_GNU_VERDEF = 1879048189 pkg debug/elf, const SHT_GNU_VERNEED = 1879048190 pkg debug/elf, const SHT_GNU_VERSYM = 1879048191 pkg debug/elf, const SHT_GROUP = 17 pkg debug/elf, const SHT_HASH = 5 pkg debug/elf, const SHT_HIOS = 1879048191 pkg debug/elf, const SHT_HIPROC = 2147483647 pkg debug/elf, const SHT_HIUSER = 4294967295 pkg debug/elf, const SHT_INIT_ARRAY = 14 pkg debug/elf, const SHT_LOOS = 1610612736 pkg debug/elf, const SHT_LOPROC = 1879048192 pkg debug/elf, const SHT_LOUSER = 2147483648 pkg debug/elf, const SHT_NOBITS = 8 pkg debug/elf, const SHT_NOTE = 7 pkg debug/elf, const SHT_NULL = 0 pkg debug/elf, const SHT_PREINIT_ARRAY = 16 pkg debug/elf, const SHT_PROGBITS = 1 pkg debug/elf, const SHT_REL = 9 pkg debug/elf, const SHT_RELA = 4 pkg debug/elf, const SHT_SHLIB = 10 pkg debug/elf, const SHT_STRTAB = 3 pkg debug/elf, const SHT_SYMTAB = 2 pkg debug/elf, const SHT_SYMTAB_SHNDX = 18 pkg debug/elf, const STB_GLOBAL = 1 pkg debug/elf, const STB_HIOS = 12 pkg debug/elf, const STB_HIPROC = 15 pkg debug/elf, const STB_LOCAL = 0 pkg debug/elf, const STB_LOOS = 10 pkg debug/elf, const STB_LOPROC = 13 pkg debug/elf, const STB_WEAK = 2 pkg debug/elf, const STT_COMMON = 5 pkg debug/elf, const STT_FILE = 4 pkg debug/elf, const STT_FUNC = 2 pkg debug/elf, const STT_HIOS = 12 pkg debug/elf, const STT_HIPROC = 15 pkg debug/elf, const STT_LOOS = 10 pkg debug/elf, const STT_LOPROC = 13 pkg debug/elf, const STT_NOTYPE = 0 pkg debug/elf, const STT_OBJECT = 1 pkg debug/elf, const STT_SECTION = 3 pkg debug/elf, const STT_TLS = 6 pkg debug/elf, const STV_DEFAULT = 0 pkg debug/elf, const STV_HIDDEN = 2 pkg debug/elf, const STV_INTERNAL = 1 pkg debug/elf, const STV_PROTECTED = 3 pkg debug/elf, const Sym32Size = 16 pkg debug/elf, const Sym64Size = 24 pkg debug/elf, method (*File) DynString(DynTag) ([]string, error) pkg debug/elf, type FileHeader struct, Entry uint64 pkg debug/macho, const Cpu386 = 7 pkg debug/macho, const CpuAmd64 = 16777223 pkg debug/macho, const LoadCmdDylib = 12 pkg debug/macho, const LoadCmdDylinker = 15 pkg debug/macho, const LoadCmdDysymtab = 11 pkg debug/macho, const LoadCmdSegment = 1 pkg debug/macho, const LoadCmdSegment64 = 25 pkg debug/macho, const LoadCmdSymtab = 2 pkg debug/macho, const LoadCmdThread = 4 pkg debug/macho, const LoadCmdUnixThread = 5 pkg debug/macho, const Magic32 = 4277009102 pkg debug/macho, const Magic64 = 4277009103 pkg debug/macho, const TypeExec = 2 pkg debug/macho, const TypeObj = 1 pkg debug/pe, const COFFSymbolSize = 18 pkg debug/pe, const COFFSymbolSize ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_AM33 = 467 pkg debug/pe, const IMAGE_FILE_MACHINE_AMD64 = 34404 pkg debug/pe, const IMAGE_FILE_MACHINE_ARM = 448 pkg debug/pe, const IMAGE_FILE_MACHINE_EBC = 3772 pkg debug/pe, const IMAGE_FILE_MACHINE_I386 = 332 pkg debug/pe, const IMAGE_FILE_MACHINE_IA64 = 512 pkg debug/pe, const IMAGE_FILE_MACHINE_M32R = 36929 pkg debug/pe, const IMAGE_FILE_MACHINE_MIPS16 = 614 pkg debug/pe, const IMAGE_FILE_MACHINE_MIPSFPU = 870 pkg debug/pe, const IMAGE_FILE_MACHINE_MIPSFPU16 = 1126 pkg debug/pe, const IMAGE_FILE_MACHINE_POWERPC = 496 pkg debug/pe, const IMAGE_FILE_MACHINE_POWERPCFP = 497 pkg debug/pe, const IMAGE_FILE_MACHINE_R4000 = 358 pkg debug/pe, const IMAGE_FILE_MACHINE_SH3 = 418 pkg debug/pe, const IMAGE_FILE_MACHINE_SH3DSP = 419 pkg debug/pe, const IMAGE_FILE_MACHINE_SH4 = 422 pkg debug/pe, const IMAGE_FILE_MACHINE_SH5 = 424 pkg debug/pe, const IMAGE_FILE_MACHINE_THUMB = 450 pkg debug/pe, const IMAGE_FILE_MACHINE_UNKNOWN = 0 pkg debug/pe, const IMAGE_FILE_MACHINE_WCEMIPSV2 = 361 pkg debug/pe, type COFFSymbol struct pkg debug/pe, type COFFSymbol struct, Name [8]uint8 pkg debug/pe, type COFFSymbol struct, NumberOfAuxSymbols uint8 pkg debug/pe, type COFFSymbol struct, SectionNumber int16 pkg debug/pe, type COFFSymbol struct, StorageClass uint8 pkg debug/pe, type COFFSymbol struct, Type uint16 pkg debug/pe, type COFFSymbol struct, Value uint32 pkg debug/pe, type File struct, Symbols []*Symbol pkg debug/pe, type Symbol struct pkg debug/pe, type Symbol struct, Name string pkg debug/pe, type Symbol struct, SectionNumber int16 pkg debug/pe, type Symbol struct, StorageClass uint8 pkg debug/pe, type Symbol struct, Type uint16 pkg debug/pe, type Symbol struct, Value uint32 pkg encoding/binary, const MaxVarintLen16 = 3 pkg encoding/binary, const MaxVarintLen32 = 5 pkg encoding/binary, const MaxVarintLen64 = 10 pkg encoding/csv, method (*Writer) Error() error pkg encoding/json, method (*Decoder) Buffered() io.Reader pkg encoding/json, method (*Decoder) UseNumber() pkg encoding/json, method (Number) Float64() (float64, error) pkg encoding/json, method (Number) Int64() (int64, error) pkg encoding/json, method (Number) String() string pkg encoding/json, type Number string pkg encoding/xml, const Header = "\n" pkg encoding/xml, func EscapeText(io.Writer, []uint8) error pkg encoding/xml, method (*Encoder) Indent(string, string) pkg encoding/xml, type Decoder struct, DefaultSpace string pkg flag, const ContinueOnError = 0 pkg flag, const ExitOnError = 1 pkg flag, const PanicOnError = 2 pkg go/ast, const Bad = 0 pkg go/ast, const Con = 2 pkg go/ast, const FilterFuncDuplicates = 1 pkg go/ast, const FilterImportDuplicates = 4 pkg go/ast, const FilterUnassociatedComments = 2 pkg go/ast, const Fun = 5 pkg go/ast, const Lbl = 6 pkg go/ast, const Pkg = 1 pkg go/ast, const RECV = 2 pkg go/ast, const SEND = 1 pkg go/ast, const Typ = 3 pkg go/ast, const Var = 4 pkg go/ast, func NewCommentMap(*token.FileSet, Node, []*CommentGroup) CommentMap pkg go/ast, method (CommentMap) Comments() []*CommentGroup pkg go/ast, method (CommentMap) Filter(Node) CommentMap pkg go/ast, method (CommentMap) String() string pkg go/ast, method (CommentMap) Update(Node, Node) Node pkg go/ast, type ChanType struct, Arrow token.Pos pkg go/ast, type CommentMap map[Node][]*CommentGroup pkg go/build, const AllowBinary = 2 pkg go/build, const FindOnly = 1 pkg go/build, type Context struct, InstallSuffix string pkg go/build, type Context struct, ReleaseTags []string pkg go/build, type Package struct, IgnoredGoFiles []string pkg go/build, type Package struct, SwigCXXFiles []string pkg go/build, type Package struct, SwigFiles []string pkg go/doc, const AllDecls = 1 pkg go/doc, const AllMethods = 2 pkg go/doc, type Example struct, EmptyOutput bool pkg go/doc, type Example struct, Order int pkg go/doc, type Example struct, Play *ast.File pkg go/doc, type Note struct pkg go/doc, type Note struct, Body string pkg go/doc, type Note struct, End token.Pos pkg go/doc, type Note struct, Pos token.Pos pkg go/doc, type Note struct, UID string pkg go/doc, type Package struct, Notes map[string][]*Note pkg go/doc, var IllegalPrefixes []string pkg go/format, func Node(io.Writer, *token.FileSet, interface{}) error pkg go/format, func Source([]uint8) ([]uint8, error) pkg go/parser, const AllErrors = 32 pkg go/parser, const AllErrors Mode pkg go/parser, const DeclarationErrors = 16 pkg go/parser, const ImportsOnly = 2 pkg go/parser, const PackageClauseOnly = 1 pkg go/parser, const ParseComments = 4 pkg go/parser, const SpuriousErrors = 32 pkg go/parser, const Trace = 8 pkg go/printer, const RawFormat = 1 pkg go/printer, const SourcePos = 8 pkg go/printer, const TabIndent = 2 pkg go/printer, const UseSpaces = 4 pkg go/printer, type Config struct, Indent int pkg go/scanner, const ScanComments = 1 pkg go/token, const ADD = 12 pkg go/token, const ADD_ASSIGN = 23 pkg go/token, const AND = 17 pkg go/token, const AND_ASSIGN = 28 pkg go/token, const AND_NOT = 22 pkg go/token, const AND_NOT_ASSIGN = 33 pkg go/token, const ARROW = 36 pkg go/token, const ASSIGN = 42 pkg go/token, const BREAK = 61 pkg go/token, const CASE = 62 pkg go/token, const CHAN = 63 pkg go/token, const CHAR = 8 pkg go/token, const COLON = 58 pkg go/token, const COMMA = 52 pkg go/token, const COMMENT = 2 pkg go/token, const CONST = 64 pkg go/token, const CONTINUE = 65 pkg go/token, const DEC = 38 pkg go/token, const DEFAULT = 66 pkg go/token, const DEFER = 67 pkg go/token, const DEFINE = 47 pkg go/token, const ELLIPSIS = 48 pkg go/token, const ELSE = 68 pkg go/token, const EOF = 1 pkg go/token, const EQL = 39 pkg go/token, const FALLTHROUGH = 69 pkg go/token, const FLOAT = 6 pkg go/token, const FOR = 70 pkg go/token, const FUNC = 71 pkg go/token, const GEQ = 46 pkg go/token, const GO = 72 pkg go/token, const GOTO = 73 pkg go/token, const GTR = 41 pkg go/token, const HighestPrec = 7 pkg go/token, const IDENT = 4 pkg go/token, const IF = 74 pkg go/token, const ILLEGAL = 0 pkg go/token, const IMAG = 7 pkg go/token, const IMPORT = 75 pkg go/token, const INC = 37 pkg go/token, const INT = 5 pkg go/token, const INTERFACE = 76 pkg go/token, const LAND = 34 pkg go/token, const LBRACE = 51 pkg go/token, const LBRACK = 50 pkg go/token, const LEQ = 45 pkg go/token, const LOR = 35 pkg go/token, const LPAREN = 49 pkg go/token, const LSS = 40 pkg go/token, const LowestPrec = 0 pkg go/token, const MAP = 77 pkg go/token, const MUL = 14 pkg go/token, const MUL_ASSIGN = 25 pkg go/token, const NEQ = 44 pkg go/token, const NOT = 43 pkg go/token, const NoPos = 0 pkg go/token, const OR = 18 pkg go/token, const OR_ASSIGN = 29 pkg go/token, const PACKAGE = 78 pkg go/token, const PERIOD = 53 pkg go/token, const QUO = 15 pkg go/token, const QUO_ASSIGN = 26 pkg go/token, const RANGE = 79 pkg go/token, const RBRACE = 56 pkg go/token, const RBRACK = 55 pkg go/token, const REM = 16 pkg go/token, const REM_ASSIGN = 27 pkg go/token, const RETURN = 80 pkg go/token, const RPAREN = 54 pkg go/token, const SELECT = 81 pkg go/token, const SEMICOLON = 57 pkg go/token, const SHL = 20 pkg go/token, const SHL_ASSIGN = 31 pkg go/token, const SHR = 21 pkg go/token, const SHR_ASSIGN = 32 pkg go/token, const STRING = 9 pkg go/token, const STRUCT = 82 pkg go/token, const SUB = 13 pkg go/token, const SUB_ASSIGN = 24 pkg go/token, const SWITCH = 83 pkg go/token, const TYPE = 84 pkg go/token, const UnaryPrec = 6 pkg go/token, const VAR = 85 pkg go/token, const XOR = 19 pkg go/token, const XOR_ASSIGN = 30 pkg hash/adler32, const Size = 4 pkg hash/crc32, const Castagnoli = 2197175160 pkg hash/crc32, const IEEE = 3988292384 pkg hash/crc32, const Koopman = 3945912366 pkg hash/crc32, const Size = 4 pkg hash/crc64, const ECMA = 14514072000185962306 pkg hash/crc64, const ISO = 15564440312192434176 pkg hash/crc64, const Size = 8 pkg html/template, const ErrAmbigContext = 1 pkg html/template, const ErrBadHTML = 2 pkg html/template, const ErrBranchEnd = 3 pkg html/template, const ErrEndContext = 4 pkg html/template, const ErrNoSuchTemplate = 5 pkg html/template, const ErrOutputContext = 6 pkg html/template, const ErrPartialCharset = 7 pkg html/template, const ErrPartialEscape = 8 pkg html/template, const ErrRangeLoopReentry = 9 pkg html/template, const ErrSlashAmbig = 10 pkg html/template, const OK = 0 pkg image, const YCbCrSubsampleRatio420 = 2 pkg image, const YCbCrSubsampleRatio422 = 1 pkg image, const YCbCrSubsampleRatio440 = 3 pkg image, const YCbCrSubsampleRatio440 YCbCrSubsampleRatio pkg image, const YCbCrSubsampleRatio444 = 0 pkg image/draw, const Over = 0 pkg image/draw, const Src = 1 pkg image/jpeg, const DefaultQuality = 75 pkg io, type ByteWriter interface { WriteByte } pkg io, type ByteWriter interface, WriteByte(uint8) error pkg io, var ErrNoProgress error pkg log, const Ldate = 1 pkg log, const Llongfile = 8 pkg log, const Lmicroseconds = 4 pkg log, const Lshortfile = 16 pkg log, const LstdFlags = 3 pkg log, const Ltime = 2 pkg log/syslog (darwin-386), const LOG_ALERT = 1 pkg log/syslog (darwin-386), const LOG_AUTH = 32 pkg log/syslog (darwin-386), const LOG_AUTH Priority pkg log/syslog (darwin-386), const LOG_AUTHPRIV = 80 pkg log/syslog (darwin-386), const LOG_AUTHPRIV Priority pkg log/syslog (darwin-386), const LOG_CRIT = 2 pkg log/syslog (darwin-386), const LOG_CRON = 72 pkg log/syslog (darwin-386), const LOG_CRON Priority pkg log/syslog (darwin-386), const LOG_DAEMON = 24 pkg log/syslog (darwin-386), const LOG_DAEMON Priority pkg log/syslog (darwin-386), const LOG_DEBUG = 7 pkg log/syslog (darwin-386), const LOG_EMERG = 0 pkg log/syslog (darwin-386), const LOG_ERR = 3 pkg log/syslog (darwin-386), const LOG_FTP = 88 pkg log/syslog (darwin-386), const LOG_FTP Priority pkg log/syslog (darwin-386), const LOG_INFO = 6 pkg log/syslog (darwin-386), const LOG_KERN = 0 pkg log/syslog (darwin-386), const LOG_KERN Priority pkg log/syslog (darwin-386), const LOG_LOCAL0 = 128 pkg log/syslog (darwin-386), const LOG_LOCAL0 Priority pkg log/syslog (darwin-386), const LOG_LOCAL1 = 136 pkg log/syslog (darwin-386), const LOG_LOCAL1 Priority pkg log/syslog (darwin-386), const LOG_LOCAL2 = 144 pkg log/syslog (darwin-386), const LOG_LOCAL2 Priority pkg log/syslog (darwin-386), const LOG_LOCAL3 = 152 pkg log/syslog (darwin-386), const LOG_LOCAL3 Priority pkg log/syslog (darwin-386), const LOG_LOCAL4 = 160 pkg log/syslog (darwin-386), const LOG_LOCAL4 Priority pkg log/syslog (darwin-386), const LOG_LOCAL5 = 168 pkg log/syslog (darwin-386), const LOG_LOCAL5 Priority pkg log/syslog (darwin-386), const LOG_LOCAL6 = 176 pkg log/syslog (darwin-386), const LOG_LOCAL6 Priority pkg log/syslog (darwin-386), const LOG_LOCAL7 = 184 pkg log/syslog (darwin-386), const LOG_LOCAL7 Priority pkg log/syslog (darwin-386), const LOG_LPR = 48 pkg log/syslog (darwin-386), const LOG_LPR Priority pkg log/syslog (darwin-386), const LOG_MAIL = 16 pkg log/syslog (darwin-386), const LOG_MAIL Priority pkg log/syslog (darwin-386), const LOG_NEWS = 56 pkg log/syslog (darwin-386), const LOG_NEWS Priority pkg log/syslog (darwin-386), const LOG_NOTICE = 5 pkg log/syslog (darwin-386), const LOG_SYSLOG = 40 pkg log/syslog (darwin-386), const LOG_SYSLOG Priority pkg log/syslog (darwin-386), const LOG_USER = 8 pkg log/syslog (darwin-386), const LOG_USER Priority pkg log/syslog (darwin-386), const LOG_UUCP = 64 pkg log/syslog (darwin-386), const LOG_UUCP Priority pkg log/syslog (darwin-386), const LOG_WARNING = 4 pkg log/syslog (darwin-386-cgo), const LOG_ALERT = 1 pkg log/syslog (darwin-386-cgo), const LOG_AUTH = 32 pkg log/syslog (darwin-386-cgo), const LOG_AUTH Priority pkg log/syslog (darwin-386-cgo), const LOG_AUTHPRIV = 80 pkg log/syslog (darwin-386-cgo), const LOG_AUTHPRIV Priority pkg log/syslog (darwin-386-cgo), const LOG_CRIT = 2 pkg log/syslog (darwin-386-cgo), const LOG_CRON = 72 pkg log/syslog (darwin-386-cgo), const LOG_CRON Priority pkg log/syslog (darwin-386-cgo), const LOG_DAEMON = 24 pkg log/syslog (darwin-386-cgo), const LOG_DAEMON Priority pkg log/syslog (darwin-386-cgo), const LOG_DEBUG = 7 pkg log/syslog (darwin-386-cgo), const LOG_EMERG = 0 pkg log/syslog (darwin-386-cgo), const LOG_ERR = 3 pkg log/syslog (darwin-386-cgo), const LOG_FTP = 88 pkg log/syslog (darwin-386-cgo), const LOG_FTP Priority pkg log/syslog (darwin-386-cgo), const LOG_INFO = 6 pkg log/syslog (darwin-386-cgo), const LOG_KERN = 0 pkg log/syslog (darwin-386-cgo), const LOG_KERN Priority pkg log/syslog (darwin-386-cgo), const LOG_LOCAL0 = 128 pkg log/syslog (darwin-386-cgo), const LOG_LOCAL0 Priority pkg log/syslog (darwin-386-cgo), const LOG_LOCAL1 = 136 pkg log/syslog (darwin-386-cgo), const LOG_LOCAL1 Priority pkg log/syslog (darwin-386-cgo), const LOG_LOCAL2 = 144 pkg log/syslog (darwin-386-cgo), const LOG_LOCAL2 Priority pkg log/syslog (darwin-386-cgo), const LOG_LOCAL3 = 152 pkg log/syslog (darwin-386-cgo), const LOG_LOCAL3 Priority pkg log/syslog (darwin-386-cgo), const LOG_LOCAL4 = 160 pkg log/syslog (darwin-386-cgo), const LOG_LOCAL4 Priority pkg log/syslog (darwin-386-cgo), const LOG_LOCAL5 = 168 pkg log/syslog (darwin-386-cgo), const LOG_LOCAL5 Priority pkg log/syslog (darwin-386-cgo), const LOG_LOCAL6 = 176 pkg log/syslog (darwin-386-cgo), const LOG_LOCAL6 Priority pkg log/syslog (darwin-386-cgo), const LOG_LOCAL7 = 184 pkg log/syslog (darwin-386-cgo), const LOG_LOCAL7 Priority pkg log/syslog (darwin-386-cgo), const LOG_LPR = 48 pkg log/syslog (darwin-386-cgo), const LOG_LPR Priority pkg log/syslog (darwin-386-cgo), const LOG_MAIL = 16 pkg log/syslog (darwin-386-cgo), const LOG_MAIL Priority pkg log/syslog (darwin-386-cgo), const LOG_NEWS = 56 pkg log/syslog (darwin-386-cgo), const LOG_NEWS Priority pkg log/syslog (darwin-386-cgo), const LOG_NOTICE = 5 pkg log/syslog (darwin-386-cgo), const LOG_SYSLOG = 40 pkg log/syslog (darwin-386-cgo), const LOG_SYSLOG Priority pkg log/syslog (darwin-386-cgo), const LOG_USER = 8 pkg log/syslog (darwin-386-cgo), const LOG_USER Priority pkg log/syslog (darwin-386-cgo), const LOG_UUCP = 64 pkg log/syslog (darwin-386-cgo), const LOG_UUCP Priority pkg log/syslog (darwin-386-cgo), const LOG_WARNING = 4 pkg log/syslog (darwin-amd64), const LOG_ALERT = 1 pkg log/syslog (darwin-amd64), const LOG_AUTH = 32 pkg log/syslog (darwin-amd64), const LOG_AUTH Priority pkg log/syslog (darwin-amd64), const LOG_AUTHPRIV = 80 pkg log/syslog (darwin-amd64), const LOG_AUTHPRIV Priority pkg log/syslog (darwin-amd64), const LOG_CRIT = 2 pkg log/syslog (darwin-amd64), const LOG_CRON = 72 pkg log/syslog (darwin-amd64), const LOG_CRON Priority pkg log/syslog (darwin-amd64), const LOG_DAEMON = 24 pkg log/syslog (darwin-amd64), const LOG_DAEMON Priority pkg log/syslog (darwin-amd64), const LOG_DEBUG = 7 pkg log/syslog (darwin-amd64), const LOG_EMERG = 0 pkg log/syslog (darwin-amd64), const LOG_ERR = 3 pkg log/syslog (darwin-amd64), const LOG_FTP = 88 pkg log/syslog (darwin-amd64), const LOG_FTP Priority pkg log/syslog (darwin-amd64), const LOG_INFO = 6 pkg log/syslog (darwin-amd64), const LOG_KERN = 0 pkg log/syslog (darwin-amd64), const LOG_KERN Priority pkg log/syslog (darwin-amd64), const LOG_LOCAL0 = 128 pkg log/syslog (darwin-amd64), const LOG_LOCAL0 Priority pkg log/syslog (darwin-amd64), const LOG_LOCAL1 = 136 pkg log/syslog (darwin-amd64), const LOG_LOCAL1 Priority pkg log/syslog (darwin-amd64), const LOG_LOCAL2 = 144 pkg log/syslog (darwin-amd64), const LOG_LOCAL2 Priority pkg log/syslog (darwin-amd64), const LOG_LOCAL3 = 152 pkg log/syslog (darwin-amd64), const LOG_LOCAL3 Priority pkg log/syslog (darwin-amd64), const LOG_LOCAL4 = 160 pkg log/syslog (darwin-amd64), const LOG_LOCAL4 Priority pkg log/syslog (darwin-amd64), const LOG_LOCAL5 = 168 pkg log/syslog (darwin-amd64), const LOG_LOCAL5 Priority pkg log/syslog (darwin-amd64), const LOG_LOCAL6 = 176 pkg log/syslog (darwin-amd64), const LOG_LOCAL6 Priority pkg log/syslog (darwin-amd64), const LOG_LOCAL7 = 184 pkg log/syslog (darwin-amd64), const LOG_LOCAL7 Priority pkg log/syslog (darwin-amd64), const LOG_LPR = 48 pkg log/syslog (darwin-amd64), const LOG_LPR Priority pkg log/syslog (darwin-amd64), const LOG_MAIL = 16 pkg log/syslog (darwin-amd64), const LOG_MAIL Priority pkg log/syslog (darwin-amd64), const LOG_NEWS = 56 pkg log/syslog (darwin-amd64), const LOG_NEWS Priority pkg log/syslog (darwin-amd64), const LOG_NOTICE = 5 pkg log/syslog (darwin-amd64), const LOG_SYSLOG = 40 pkg log/syslog (darwin-amd64), const LOG_SYSLOG Priority pkg log/syslog (darwin-amd64), const LOG_USER = 8 pkg log/syslog (darwin-amd64), const LOG_USER Priority pkg log/syslog (darwin-amd64), const LOG_UUCP = 64 pkg log/syslog (darwin-amd64), const LOG_UUCP Priority pkg log/syslog (darwin-amd64), const LOG_WARNING = 4 pkg log/syslog (darwin-amd64-cgo), const LOG_ALERT = 1 pkg log/syslog (darwin-amd64-cgo), const LOG_AUTH = 32 pkg log/syslog (darwin-amd64-cgo), const LOG_AUTH Priority pkg log/syslog (darwin-amd64-cgo), const LOG_AUTHPRIV = 80 pkg log/syslog (darwin-amd64-cgo), const LOG_AUTHPRIV Priority pkg log/syslog (darwin-amd64-cgo), const LOG_CRIT = 2 pkg log/syslog (darwin-amd64-cgo), const LOG_CRON = 72 pkg log/syslog (darwin-amd64-cgo), const LOG_CRON Priority pkg log/syslog (darwin-amd64-cgo), const LOG_DAEMON = 24 pkg log/syslog (darwin-amd64-cgo), const LOG_DAEMON Priority pkg log/syslog (darwin-amd64-cgo), const LOG_DEBUG = 7 pkg log/syslog (darwin-amd64-cgo), const LOG_EMERG = 0 pkg log/syslog (darwin-amd64-cgo), const LOG_ERR = 3 pkg log/syslog (darwin-amd64-cgo), const LOG_FTP = 88 pkg log/syslog (darwin-amd64-cgo), const LOG_FTP Priority pkg log/syslog (darwin-amd64-cgo), const LOG_INFO = 6 pkg log/syslog (darwin-amd64-cgo), const LOG_KERN = 0 pkg log/syslog (darwin-amd64-cgo), const LOG_KERN Priority pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL0 = 128 pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL0 Priority pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL1 = 136 pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL1 Priority pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL2 = 144 pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL2 Priority pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL3 = 152 pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL3 Priority pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL4 = 160 pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL4 Priority pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL5 = 168 pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL5 Priority pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL6 = 176 pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL6 Priority pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL7 = 184 pkg log/syslog (darwin-amd64-cgo), const LOG_LOCAL7 Priority pkg log/syslog (darwin-amd64-cgo), const LOG_LPR = 48 pkg log/syslog (darwin-amd64-cgo), const LOG_LPR Priority pkg log/syslog (darwin-amd64-cgo), const LOG_MAIL = 16 pkg log/syslog (darwin-amd64-cgo), const LOG_MAIL Priority pkg log/syslog (darwin-amd64-cgo), const LOG_NEWS = 56 pkg log/syslog (darwin-amd64-cgo), const LOG_NEWS Priority pkg log/syslog (darwin-amd64-cgo), const LOG_NOTICE = 5 pkg log/syslog (darwin-amd64-cgo), const LOG_SYSLOG = 40 pkg log/syslog (darwin-amd64-cgo), const LOG_SYSLOG Priority pkg log/syslog (darwin-amd64-cgo), const LOG_USER = 8 pkg log/syslog (darwin-amd64-cgo), const LOG_USER Priority pkg log/syslog (darwin-amd64-cgo), const LOG_UUCP = 64 pkg log/syslog (darwin-amd64-cgo), const LOG_UUCP Priority pkg log/syslog (darwin-amd64-cgo), const LOG_WARNING = 4 pkg log/syslog (freebsd-386), const LOG_ALERT = 1 pkg log/syslog (freebsd-386), const LOG_AUTH = 32 pkg log/syslog (freebsd-386), const LOG_AUTH Priority pkg log/syslog (freebsd-386), const LOG_AUTHPRIV = 80 pkg log/syslog (freebsd-386), const LOG_AUTHPRIV Priority pkg log/syslog (freebsd-386), const LOG_CRIT = 2 pkg log/syslog (freebsd-386), const LOG_CRON = 72 pkg log/syslog (freebsd-386), const LOG_CRON Priority pkg log/syslog (freebsd-386), const LOG_DAEMON = 24 pkg log/syslog (freebsd-386), const LOG_DAEMON Priority pkg log/syslog (freebsd-386), const LOG_DEBUG = 7 pkg log/syslog (freebsd-386), const LOG_EMERG = 0 pkg log/syslog (freebsd-386), const LOG_ERR = 3 pkg log/syslog (freebsd-386), const LOG_FTP = 88 pkg log/syslog (freebsd-386), const LOG_FTP Priority pkg log/syslog (freebsd-386), const LOG_INFO = 6 pkg log/syslog (freebsd-386), const LOG_KERN = 0 pkg log/syslog (freebsd-386), const LOG_KERN Priority pkg log/syslog (freebsd-386), const LOG_LOCAL0 = 128 pkg log/syslog (freebsd-386), const LOG_LOCAL0 Priority pkg log/syslog (freebsd-386), const LOG_LOCAL1 = 136 pkg log/syslog (freebsd-386), const LOG_LOCAL1 Priority pkg log/syslog (freebsd-386), const LOG_LOCAL2 = 144 pkg log/syslog (freebsd-386), const LOG_LOCAL2 Priority pkg log/syslog (freebsd-386), const LOG_LOCAL3 = 152 pkg log/syslog (freebsd-386), const LOG_LOCAL3 Priority pkg log/syslog (freebsd-386), const LOG_LOCAL4 = 160 pkg log/syslog (freebsd-386), const LOG_LOCAL4 Priority pkg log/syslog (freebsd-386), const LOG_LOCAL5 = 168 pkg log/syslog (freebsd-386), const LOG_LOCAL5 Priority pkg log/syslog (freebsd-386), const LOG_LOCAL6 = 176 pkg log/syslog (freebsd-386), const LOG_LOCAL6 Priority pkg log/syslog (freebsd-386), const LOG_LOCAL7 = 184 pkg log/syslog (freebsd-386), const LOG_LOCAL7 Priority pkg log/syslog (freebsd-386), const LOG_LPR = 48 pkg log/syslog (freebsd-386), const LOG_LPR Priority pkg log/syslog (freebsd-386), const LOG_MAIL = 16 pkg log/syslog (freebsd-386), const LOG_MAIL Priority pkg log/syslog (freebsd-386), const LOG_NEWS = 56 pkg log/syslog (freebsd-386), const LOG_NEWS Priority pkg log/syslog (freebsd-386), const LOG_NOTICE = 5 pkg log/syslog (freebsd-386), const LOG_SYSLOG = 40 pkg log/syslog (freebsd-386), const LOG_SYSLOG Priority pkg log/syslog (freebsd-386), const LOG_USER = 8 pkg log/syslog (freebsd-386), const LOG_USER Priority pkg log/syslog (freebsd-386), const LOG_UUCP = 64 pkg log/syslog (freebsd-386), const LOG_UUCP Priority pkg log/syslog (freebsd-386), const LOG_WARNING = 4 pkg log/syslog (freebsd-386-cgo), const LOG_ALERT = 1 pkg log/syslog (freebsd-386-cgo), const LOG_AUTH = 32 pkg log/syslog (freebsd-386-cgo), const LOG_AUTHPRIV = 80 pkg log/syslog (freebsd-386-cgo), const LOG_CRIT = 2 pkg log/syslog (freebsd-386-cgo), const LOG_CRON = 72 pkg log/syslog (freebsd-386-cgo), const LOG_DAEMON = 24 pkg log/syslog (freebsd-386-cgo), const LOG_DEBUG = 7 pkg log/syslog (freebsd-386-cgo), const LOG_EMERG = 0 pkg log/syslog (freebsd-386-cgo), const LOG_ERR = 3 pkg log/syslog (freebsd-386-cgo), const LOG_FTP = 88 pkg log/syslog (freebsd-386-cgo), const LOG_INFO = 6 pkg log/syslog (freebsd-386-cgo), const LOG_KERN = 0 pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL0 = 128 pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL1 = 136 pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL2 = 144 pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL3 = 152 pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL4 = 160 pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL5 = 168 pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL6 = 176 pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL7 = 184 pkg log/syslog (freebsd-386-cgo), const LOG_LPR = 48 pkg log/syslog (freebsd-386-cgo), const LOG_MAIL = 16 pkg log/syslog (freebsd-386-cgo), const LOG_NEWS = 56 pkg log/syslog (freebsd-386-cgo), const LOG_NOTICE = 5 pkg log/syslog (freebsd-386-cgo), const LOG_SYSLOG = 40 pkg log/syslog (freebsd-386-cgo), const LOG_USER = 8 pkg log/syslog (freebsd-386-cgo), const LOG_UUCP = 64 pkg log/syslog (freebsd-386-cgo), const LOG_WARNING = 4 pkg log/syslog (freebsd-amd64), const LOG_ALERT = 1 pkg log/syslog (freebsd-amd64), const LOG_AUTH = 32 pkg log/syslog (freebsd-amd64), const LOG_AUTH Priority pkg log/syslog (freebsd-amd64), const LOG_AUTHPRIV = 80 pkg log/syslog (freebsd-amd64), const LOG_AUTHPRIV Priority pkg log/syslog (freebsd-amd64), const LOG_CRIT = 2 pkg log/syslog (freebsd-amd64), const LOG_CRON = 72 pkg log/syslog (freebsd-amd64), const LOG_CRON Priority pkg log/syslog (freebsd-amd64), const LOG_DAEMON = 24 pkg log/syslog (freebsd-amd64), const LOG_DAEMON Priority pkg log/syslog (freebsd-amd64), const LOG_DEBUG = 7 pkg log/syslog (freebsd-amd64), const LOG_EMERG = 0 pkg log/syslog (freebsd-amd64), const LOG_ERR = 3 pkg log/syslog (freebsd-amd64), const LOG_FTP = 88 pkg log/syslog (freebsd-amd64), const LOG_FTP Priority pkg log/syslog (freebsd-amd64), const LOG_INFO = 6 pkg log/syslog (freebsd-amd64), const LOG_KERN = 0 pkg log/syslog (freebsd-amd64), const LOG_KERN Priority pkg log/syslog (freebsd-amd64), const LOG_LOCAL0 = 128 pkg log/syslog (freebsd-amd64), const LOG_LOCAL0 Priority pkg log/syslog (freebsd-amd64), const LOG_LOCAL1 = 136 pkg log/syslog (freebsd-amd64), const LOG_LOCAL1 Priority pkg log/syslog (freebsd-amd64), const LOG_LOCAL2 = 144 pkg log/syslog (freebsd-amd64), const LOG_LOCAL2 Priority pkg log/syslog (freebsd-amd64), const LOG_LOCAL3 = 152 pkg log/syslog (freebsd-amd64), const LOG_LOCAL3 Priority pkg log/syslog (freebsd-amd64), const LOG_LOCAL4 = 160 pkg log/syslog (freebsd-amd64), const LOG_LOCAL4 Priority pkg log/syslog (freebsd-amd64), const LOG_LOCAL5 = 168 pkg log/syslog (freebsd-amd64), const LOG_LOCAL5 Priority pkg log/syslog (freebsd-amd64), const LOG_LOCAL6 = 176 pkg log/syslog (freebsd-amd64), const LOG_LOCAL6 Priority pkg log/syslog (freebsd-amd64), const LOG_LOCAL7 = 184 pkg log/syslog (freebsd-amd64), const LOG_LOCAL7 Priority pkg log/syslog (freebsd-amd64), const LOG_LPR = 48 pkg log/syslog (freebsd-amd64), const LOG_LPR Priority pkg log/syslog (freebsd-amd64), const LOG_MAIL = 16 pkg log/syslog (freebsd-amd64), const LOG_MAIL Priority pkg log/syslog (freebsd-amd64), const LOG_NEWS = 56 pkg log/syslog (freebsd-amd64), const LOG_NEWS Priority pkg log/syslog (freebsd-amd64), const LOG_NOTICE = 5 pkg log/syslog (freebsd-amd64), const LOG_SYSLOG = 40 pkg log/syslog (freebsd-amd64), const LOG_SYSLOG Priority pkg log/syslog (freebsd-amd64), const LOG_USER = 8 pkg log/syslog (freebsd-amd64), const LOG_USER Priority pkg log/syslog (freebsd-amd64), const LOG_UUCP = 64 pkg log/syslog (freebsd-amd64), const LOG_UUCP Priority pkg log/syslog (freebsd-amd64), const LOG_WARNING = 4 pkg log/syslog (freebsd-amd64-cgo), const LOG_ALERT = 1 pkg log/syslog (freebsd-amd64-cgo), const LOG_AUTH = 32 pkg log/syslog (freebsd-amd64-cgo), const LOG_AUTHPRIV = 80 pkg log/syslog (freebsd-amd64-cgo), const LOG_CRIT = 2 pkg log/syslog (freebsd-amd64-cgo), const LOG_CRON = 72 pkg log/syslog (freebsd-amd64-cgo), const LOG_DAEMON = 24 pkg log/syslog (freebsd-amd64-cgo), const LOG_DEBUG = 7 pkg log/syslog (freebsd-amd64-cgo), const LOG_EMERG = 0 pkg log/syslog (freebsd-amd64-cgo), const LOG_ERR = 3 pkg log/syslog (freebsd-amd64-cgo), const LOG_FTP = 88 pkg log/syslog (freebsd-amd64-cgo), const LOG_INFO = 6 pkg log/syslog (freebsd-amd64-cgo), const LOG_KERN = 0 pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL0 = 128 pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL1 = 136 pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL2 = 144 pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL3 = 152 pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL4 = 160 pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL5 = 168 pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL6 = 176 pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL7 = 184 pkg log/syslog (freebsd-amd64-cgo), const LOG_LPR = 48 pkg log/syslog (freebsd-amd64-cgo), const LOG_MAIL = 16 pkg log/syslog (freebsd-amd64-cgo), const LOG_NEWS = 56 pkg log/syslog (freebsd-amd64-cgo), const LOG_NOTICE = 5 pkg log/syslog (freebsd-amd64-cgo), const LOG_SYSLOG = 40 pkg log/syslog (freebsd-amd64-cgo), const LOG_USER = 8 pkg log/syslog (freebsd-amd64-cgo), const LOG_UUCP = 64 pkg log/syslog (freebsd-amd64-cgo), const LOG_WARNING = 4 pkg log/syslog (freebsd-arm), const LOG_ALERT = 1 pkg log/syslog (freebsd-arm), const LOG_AUTH = 32 pkg log/syslog (freebsd-arm), const LOG_AUTHPRIV = 80 pkg log/syslog (freebsd-arm), const LOG_CRIT = 2 pkg log/syslog (freebsd-arm), const LOG_CRON = 72 pkg log/syslog (freebsd-arm), const LOG_DAEMON = 24 pkg log/syslog (freebsd-arm), const LOG_DEBUG = 7 pkg log/syslog (freebsd-arm), const LOG_EMERG = 0 pkg log/syslog (freebsd-arm), const LOG_ERR = 3 pkg log/syslog (freebsd-arm), const LOG_FTP = 88 pkg log/syslog (freebsd-arm), const LOG_INFO = 6 pkg log/syslog (freebsd-arm), const LOG_KERN = 0 pkg log/syslog (freebsd-arm), const LOG_LOCAL0 = 128 pkg log/syslog (freebsd-arm), const LOG_LOCAL1 = 136 pkg log/syslog (freebsd-arm), const LOG_LOCAL2 = 144 pkg log/syslog (freebsd-arm), const LOG_LOCAL3 = 152 pkg log/syslog (freebsd-arm), const LOG_LOCAL4 = 160 pkg log/syslog (freebsd-arm), const LOG_LOCAL5 = 168 pkg log/syslog (freebsd-arm), const LOG_LOCAL6 = 176 pkg log/syslog (freebsd-arm), const LOG_LOCAL7 = 184 pkg log/syslog (freebsd-arm), const LOG_LPR = 48 pkg log/syslog (freebsd-arm), const LOG_MAIL = 16 pkg log/syslog (freebsd-arm), const LOG_NEWS = 56 pkg log/syslog (freebsd-arm), const LOG_NOTICE = 5 pkg log/syslog (freebsd-arm), const LOG_SYSLOG = 40 pkg log/syslog (freebsd-arm), const LOG_USER = 8 pkg log/syslog (freebsd-arm), const LOG_UUCP = 64 pkg log/syslog (freebsd-arm), const LOG_WARNING = 4 pkg log/syslog (freebsd-arm-cgo), const LOG_ALERT = 1 pkg log/syslog (freebsd-arm-cgo), const LOG_AUTH = 32 pkg log/syslog (freebsd-arm-cgo), const LOG_AUTHPRIV = 80 pkg log/syslog (freebsd-arm-cgo), const LOG_CRIT = 2 pkg log/syslog (freebsd-arm-cgo), const LOG_CRON = 72 pkg log/syslog (freebsd-arm-cgo), const LOG_DAEMON = 24 pkg log/syslog (freebsd-arm-cgo), const LOG_DEBUG = 7 pkg log/syslog (freebsd-arm-cgo), const LOG_EMERG = 0 pkg log/syslog (freebsd-arm-cgo), const LOG_ERR = 3 pkg log/syslog (freebsd-arm-cgo), const LOG_FTP = 88 pkg log/syslog (freebsd-arm-cgo), const LOG_INFO = 6 pkg log/syslog (freebsd-arm-cgo), const LOG_KERN = 0 pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL0 = 128 pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL1 = 136 pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL2 = 144 pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL3 = 152 pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL4 = 160 pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL5 = 168 pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL6 = 176 pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL7 = 184 pkg log/syslog (freebsd-arm-cgo), const LOG_LPR = 48 pkg log/syslog (freebsd-arm-cgo), const LOG_MAIL = 16 pkg log/syslog (freebsd-arm-cgo), const LOG_NEWS = 56 pkg log/syslog (freebsd-arm-cgo), const LOG_NOTICE = 5 pkg log/syslog (freebsd-arm-cgo), const LOG_SYSLOG = 40 pkg log/syslog (freebsd-arm-cgo), const LOG_USER = 8 pkg log/syslog (freebsd-arm-cgo), const LOG_UUCP = 64 pkg log/syslog (freebsd-arm-cgo), const LOG_WARNING = 4 pkg log/syslog (linux-386), const LOG_ALERT = 1 pkg log/syslog (linux-386), const LOG_AUTH = 32 pkg log/syslog (linux-386), const LOG_AUTH Priority pkg log/syslog (linux-386), const LOG_AUTHPRIV = 80 pkg log/syslog (linux-386), const LOG_AUTHPRIV Priority pkg log/syslog (linux-386), const LOG_CRIT = 2 pkg log/syslog (linux-386), const LOG_CRON = 72 pkg log/syslog (linux-386), const LOG_CRON Priority pkg log/syslog (linux-386), const LOG_DAEMON = 24 pkg log/syslog (linux-386), const LOG_DAEMON Priority pkg log/syslog (linux-386), const LOG_DEBUG = 7 pkg log/syslog (linux-386), const LOG_EMERG = 0 pkg log/syslog (linux-386), const LOG_ERR = 3 pkg log/syslog (linux-386), const LOG_FTP = 88 pkg log/syslog (linux-386), const LOG_FTP Priority pkg log/syslog (linux-386), const LOG_INFO = 6 pkg log/syslog (linux-386), const LOG_KERN = 0 pkg log/syslog (linux-386), const LOG_KERN Priority pkg log/syslog (linux-386), const LOG_LOCAL0 = 128 pkg log/syslog (linux-386), const LOG_LOCAL0 Priority pkg log/syslog (linux-386), const LOG_LOCAL1 = 136 pkg log/syslog (linux-386), const LOG_LOCAL1 Priority pkg log/syslog (linux-386), const LOG_LOCAL2 = 144 pkg log/syslog (linux-386), const LOG_LOCAL2 Priority pkg log/syslog (linux-386), const LOG_LOCAL3 = 152 pkg log/syslog (linux-386), const LOG_LOCAL3 Priority pkg log/syslog (linux-386), const LOG_LOCAL4 = 160 pkg log/syslog (linux-386), const LOG_LOCAL4 Priority pkg log/syslog (linux-386), const LOG_LOCAL5 = 168 pkg log/syslog (linux-386), const LOG_LOCAL5 Priority pkg log/syslog (linux-386), const LOG_LOCAL6 = 176 pkg log/syslog (linux-386), const LOG_LOCAL6 Priority pkg log/syslog (linux-386), const LOG_LOCAL7 = 184 pkg log/syslog (linux-386), const LOG_LOCAL7 Priority pkg log/syslog (linux-386), const LOG_LPR = 48 pkg log/syslog (linux-386), const LOG_LPR Priority pkg log/syslog (linux-386), const LOG_MAIL = 16 pkg log/syslog (linux-386), const LOG_MAIL Priority pkg log/syslog (linux-386), const LOG_NEWS = 56 pkg log/syslog (linux-386), const LOG_NEWS Priority pkg log/syslog (linux-386), const LOG_NOTICE = 5 pkg log/syslog (linux-386), const LOG_SYSLOG = 40 pkg log/syslog (linux-386), const LOG_SYSLOG Priority pkg log/syslog (linux-386), const LOG_USER = 8 pkg log/syslog (linux-386), const LOG_USER Priority pkg log/syslog (linux-386), const LOG_UUCP = 64 pkg log/syslog (linux-386), const LOG_UUCP Priority pkg log/syslog (linux-386), const LOG_WARNING = 4 pkg log/syslog (linux-386-cgo), const LOG_ALERT = 1 pkg log/syslog (linux-386-cgo), const LOG_AUTH = 32 pkg log/syslog (linux-386-cgo), const LOG_AUTH Priority pkg log/syslog (linux-386-cgo), const LOG_AUTHPRIV = 80 pkg log/syslog (linux-386-cgo), const LOG_AUTHPRIV Priority pkg log/syslog (linux-386-cgo), const LOG_CRIT = 2 pkg log/syslog (linux-386-cgo), const LOG_CRON = 72 pkg log/syslog (linux-386-cgo), const LOG_CRON Priority pkg log/syslog (linux-386-cgo), const LOG_DAEMON = 24 pkg log/syslog (linux-386-cgo), const LOG_DAEMON Priority pkg log/syslog (linux-386-cgo), const LOG_DEBUG = 7 pkg log/syslog (linux-386-cgo), const LOG_EMERG = 0 pkg log/syslog (linux-386-cgo), const LOG_ERR = 3 pkg log/syslog (linux-386-cgo), const LOG_FTP = 88 pkg log/syslog (linux-386-cgo), const LOG_FTP Priority pkg log/syslog (linux-386-cgo), const LOG_INFO = 6 pkg log/syslog (linux-386-cgo), const LOG_KERN = 0 pkg log/syslog (linux-386-cgo), const LOG_KERN Priority pkg log/syslog (linux-386-cgo), const LOG_LOCAL0 = 128 pkg log/syslog (linux-386-cgo), const LOG_LOCAL0 Priority pkg log/syslog (linux-386-cgo), const LOG_LOCAL1 = 136 pkg log/syslog (linux-386-cgo), const LOG_LOCAL1 Priority pkg log/syslog (linux-386-cgo), const LOG_LOCAL2 = 144 pkg log/syslog (linux-386-cgo), const LOG_LOCAL2 Priority pkg log/syslog (linux-386-cgo), const LOG_LOCAL3 = 152 pkg log/syslog (linux-386-cgo), const LOG_LOCAL3 Priority pkg log/syslog (linux-386-cgo), const LOG_LOCAL4 = 160 pkg log/syslog (linux-386-cgo), const LOG_LOCAL4 Priority pkg log/syslog (linux-386-cgo), const LOG_LOCAL5 = 168 pkg log/syslog (linux-386-cgo), const LOG_LOCAL5 Priority pkg log/syslog (linux-386-cgo), const LOG_LOCAL6 = 176 pkg log/syslog (linux-386-cgo), const LOG_LOCAL6 Priority pkg log/syslog (linux-386-cgo), const LOG_LOCAL7 = 184 pkg log/syslog (linux-386-cgo), const LOG_LOCAL7 Priority pkg log/syslog (linux-386-cgo), const LOG_LPR = 48 pkg log/syslog (linux-386-cgo), const LOG_LPR Priority pkg log/syslog (linux-386-cgo), const LOG_MAIL = 16 pkg log/syslog (linux-386-cgo), const LOG_MAIL Priority pkg log/syslog (linux-386-cgo), const LOG_NEWS = 56 pkg log/syslog (linux-386-cgo), const LOG_NEWS Priority pkg log/syslog (linux-386-cgo), const LOG_NOTICE = 5 pkg log/syslog (linux-386-cgo), const LOG_SYSLOG = 40 pkg log/syslog (linux-386-cgo), const LOG_SYSLOG Priority pkg log/syslog (linux-386-cgo), const LOG_USER = 8 pkg log/syslog (linux-386-cgo), const LOG_USER Priority pkg log/syslog (linux-386-cgo), const LOG_UUCP = 64 pkg log/syslog (linux-386-cgo), const LOG_UUCP Priority pkg log/syslog (linux-386-cgo), const LOG_WARNING = 4 pkg log/syslog (linux-amd64), const LOG_ALERT = 1 pkg log/syslog (linux-amd64), const LOG_AUTH = 32 pkg log/syslog (linux-amd64), const LOG_AUTH Priority pkg log/syslog (linux-amd64), const LOG_AUTHPRIV = 80 pkg log/syslog (linux-amd64), const LOG_AUTHPRIV Priority pkg log/syslog (linux-amd64), const LOG_CRIT = 2 pkg log/syslog (linux-amd64), const LOG_CRON = 72 pkg log/syslog (linux-amd64), const LOG_CRON Priority pkg log/syslog (linux-amd64), const LOG_DAEMON = 24 pkg log/syslog (linux-amd64), const LOG_DAEMON Priority pkg log/syslog (linux-amd64), const LOG_DEBUG = 7 pkg log/syslog (linux-amd64), const LOG_EMERG = 0 pkg log/syslog (linux-amd64), const LOG_ERR = 3 pkg log/syslog (linux-amd64), const LOG_FTP = 88 pkg log/syslog (linux-amd64), const LOG_FTP Priority pkg log/syslog (linux-amd64), const LOG_INFO = 6 pkg log/syslog (linux-amd64), const LOG_KERN = 0 pkg log/syslog (linux-amd64), const LOG_KERN Priority pkg log/syslog (linux-amd64), const LOG_LOCAL0 = 128 pkg log/syslog (linux-amd64), const LOG_LOCAL0 Priority pkg log/syslog (linux-amd64), const LOG_LOCAL1 = 136 pkg log/syslog (linux-amd64), const LOG_LOCAL1 Priority pkg log/syslog (linux-amd64), const LOG_LOCAL2 = 144 pkg log/syslog (linux-amd64), const LOG_LOCAL2 Priority pkg log/syslog (linux-amd64), const LOG_LOCAL3 = 152 pkg log/syslog (linux-amd64), const LOG_LOCAL3 Priority pkg log/syslog (linux-amd64), const LOG_LOCAL4 = 160 pkg log/syslog (linux-amd64), const LOG_LOCAL4 Priority pkg log/syslog (linux-amd64), const LOG_LOCAL5 = 168 pkg log/syslog (linux-amd64), const LOG_LOCAL5 Priority pkg log/syslog (linux-amd64), const LOG_LOCAL6 = 176 pkg log/syslog (linux-amd64), const LOG_LOCAL6 Priority pkg log/syslog (linux-amd64), const LOG_LOCAL7 = 184 pkg log/syslog (linux-amd64), const LOG_LOCAL7 Priority pkg log/syslog (linux-amd64), const LOG_LPR = 48 pkg log/syslog (linux-amd64), const LOG_LPR Priority pkg log/syslog (linux-amd64), const LOG_MAIL = 16 pkg log/syslog (linux-amd64), const LOG_MAIL Priority pkg log/syslog (linux-amd64), const LOG_NEWS = 56 pkg log/syslog (linux-amd64), const LOG_NEWS Priority pkg log/syslog (linux-amd64), const LOG_NOTICE = 5 pkg log/syslog (linux-amd64), const LOG_SYSLOG = 40 pkg log/syslog (linux-amd64), const LOG_SYSLOG Priority pkg log/syslog (linux-amd64), const LOG_USER = 8 pkg log/syslog (linux-amd64), const LOG_USER Priority pkg log/syslog (linux-amd64), const LOG_UUCP = 64 pkg log/syslog (linux-amd64), const LOG_UUCP Priority pkg log/syslog (linux-amd64), const LOG_WARNING = 4 pkg log/syslog (linux-amd64-cgo), const LOG_ALERT = 1 pkg log/syslog (linux-amd64-cgo), const LOG_AUTH = 32 pkg log/syslog (linux-amd64-cgo), const LOG_AUTH Priority pkg log/syslog (linux-amd64-cgo), const LOG_AUTHPRIV = 80 pkg log/syslog (linux-amd64-cgo), const LOG_AUTHPRIV Priority pkg log/syslog (linux-amd64-cgo), const LOG_CRIT = 2 pkg log/syslog (linux-amd64-cgo), const LOG_CRON = 72 pkg log/syslog (linux-amd64-cgo), const LOG_CRON Priority pkg log/syslog (linux-amd64-cgo), const LOG_DAEMON = 24 pkg log/syslog (linux-amd64-cgo), const LOG_DAEMON Priority pkg log/syslog (linux-amd64-cgo), const LOG_DEBUG = 7 pkg log/syslog (linux-amd64-cgo), const LOG_EMERG = 0 pkg log/syslog (linux-amd64-cgo), const LOG_ERR = 3 pkg log/syslog (linux-amd64-cgo), const LOG_FTP = 88 pkg log/syslog (linux-amd64-cgo), const LOG_FTP Priority pkg log/syslog (linux-amd64-cgo), const LOG_INFO = 6 pkg log/syslog (linux-amd64-cgo), const LOG_KERN = 0 pkg log/syslog (linux-amd64-cgo), const LOG_KERN Priority pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL0 = 128 pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL0 Priority pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL1 = 136 pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL1 Priority pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL2 = 144 pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL2 Priority pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL3 = 152 pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL3 Priority pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL4 = 160 pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL4 Priority pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL5 = 168 pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL5 Priority pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL6 = 176 pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL6 Priority pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL7 = 184 pkg log/syslog (linux-amd64-cgo), const LOG_LOCAL7 Priority pkg log/syslog (linux-amd64-cgo), const LOG_LPR = 48 pkg log/syslog (linux-amd64-cgo), const LOG_LPR Priority pkg log/syslog (linux-amd64-cgo), const LOG_MAIL = 16 pkg log/syslog (linux-amd64-cgo), const LOG_MAIL Priority pkg log/syslog (linux-amd64-cgo), const LOG_NEWS = 56 pkg log/syslog (linux-amd64-cgo), const LOG_NEWS Priority pkg log/syslog (linux-amd64-cgo), const LOG_NOTICE = 5 pkg log/syslog (linux-amd64-cgo), const LOG_SYSLOG = 40 pkg log/syslog (linux-amd64-cgo), const LOG_SYSLOG Priority pkg log/syslog (linux-amd64-cgo), const LOG_USER = 8 pkg log/syslog (linux-amd64-cgo), const LOG_USER Priority pkg log/syslog (linux-amd64-cgo), const LOG_UUCP = 64 pkg log/syslog (linux-amd64-cgo), const LOG_UUCP Priority pkg log/syslog (linux-amd64-cgo), const LOG_WARNING = 4 pkg log/syslog (linux-arm), const LOG_ALERT = 1 pkg log/syslog (linux-arm), const LOG_AUTH = 32 pkg log/syslog (linux-arm), const LOG_AUTH Priority pkg log/syslog (linux-arm), const LOG_AUTHPRIV = 80 pkg log/syslog (linux-arm), const LOG_AUTHPRIV Priority pkg log/syslog (linux-arm), const LOG_CRIT = 2 pkg log/syslog (linux-arm), const LOG_CRON = 72 pkg log/syslog (linux-arm), const LOG_CRON Priority pkg log/syslog (linux-arm), const LOG_DAEMON = 24 pkg log/syslog (linux-arm), const LOG_DAEMON Priority pkg log/syslog (linux-arm), const LOG_DEBUG = 7 pkg log/syslog (linux-arm), const LOG_EMERG = 0 pkg log/syslog (linux-arm), const LOG_ERR = 3 pkg log/syslog (linux-arm), const LOG_FTP = 88 pkg log/syslog (linux-arm), const LOG_FTP Priority pkg log/syslog (linux-arm), const LOG_INFO = 6 pkg log/syslog (linux-arm), const LOG_KERN = 0 pkg log/syslog (linux-arm), const LOG_KERN Priority pkg log/syslog (linux-arm), const LOG_LOCAL0 = 128 pkg log/syslog (linux-arm), const LOG_LOCAL0 Priority pkg log/syslog (linux-arm), const LOG_LOCAL1 = 136 pkg log/syslog (linux-arm), const LOG_LOCAL1 Priority pkg log/syslog (linux-arm), const LOG_LOCAL2 = 144 pkg log/syslog (linux-arm), const LOG_LOCAL2 Priority pkg log/syslog (linux-arm), const LOG_LOCAL3 = 152 pkg log/syslog (linux-arm), const LOG_LOCAL3 Priority pkg log/syslog (linux-arm), const LOG_LOCAL4 = 160 pkg log/syslog (linux-arm), const LOG_LOCAL4 Priority pkg log/syslog (linux-arm), const LOG_LOCAL5 = 168 pkg log/syslog (linux-arm), const LOG_LOCAL5 Priority pkg log/syslog (linux-arm), const LOG_LOCAL6 = 176 pkg log/syslog (linux-arm), const LOG_LOCAL6 Priority pkg log/syslog (linux-arm), const LOG_LOCAL7 = 184 pkg log/syslog (linux-arm), const LOG_LOCAL7 Priority pkg log/syslog (linux-arm), const LOG_LPR = 48 pkg log/syslog (linux-arm), const LOG_LPR Priority pkg log/syslog (linux-arm), const LOG_MAIL = 16 pkg log/syslog (linux-arm), const LOG_MAIL Priority pkg log/syslog (linux-arm), const LOG_NEWS = 56 pkg log/syslog (linux-arm), const LOG_NEWS Priority pkg log/syslog (linux-arm), const LOG_NOTICE = 5 pkg log/syslog (linux-arm), const LOG_SYSLOG = 40 pkg log/syslog (linux-arm), const LOG_SYSLOG Priority pkg log/syslog (linux-arm), const LOG_USER = 8 pkg log/syslog (linux-arm), const LOG_USER Priority pkg log/syslog (linux-arm), const LOG_UUCP = 64 pkg log/syslog (linux-arm), const LOG_UUCP Priority pkg log/syslog (linux-arm), const LOG_WARNING = 4 pkg log/syslog (linux-arm-cgo), const LOG_ALERT = 1 pkg log/syslog (linux-arm-cgo), const LOG_AUTH = 32 pkg log/syslog (linux-arm-cgo), const LOG_AUTHPRIV = 80 pkg log/syslog (linux-arm-cgo), const LOG_CRIT = 2 pkg log/syslog (linux-arm-cgo), const LOG_CRON = 72 pkg log/syslog (linux-arm-cgo), const LOG_DAEMON = 24 pkg log/syslog (linux-arm-cgo), const LOG_DEBUG = 7 pkg log/syslog (linux-arm-cgo), const LOG_EMERG = 0 pkg log/syslog (linux-arm-cgo), const LOG_ERR = 3 pkg log/syslog (linux-arm-cgo), const LOG_FTP = 88 pkg log/syslog (linux-arm-cgo), const LOG_INFO = 6 pkg log/syslog (linux-arm-cgo), const LOG_KERN = 0 pkg log/syslog (linux-arm-cgo), const LOG_LOCAL0 = 128 pkg log/syslog (linux-arm-cgo), const LOG_LOCAL1 = 136 pkg log/syslog (linux-arm-cgo), const LOG_LOCAL2 = 144 pkg log/syslog (linux-arm-cgo), const LOG_LOCAL3 = 152 pkg log/syslog (linux-arm-cgo), const LOG_LOCAL4 = 160 pkg log/syslog (linux-arm-cgo), const LOG_LOCAL5 = 168 pkg log/syslog (linux-arm-cgo), const LOG_LOCAL6 = 176 pkg log/syslog (linux-arm-cgo), const LOG_LOCAL7 = 184 pkg log/syslog (linux-arm-cgo), const LOG_LPR = 48 pkg log/syslog (linux-arm-cgo), const LOG_MAIL = 16 pkg log/syslog (linux-arm-cgo), const LOG_NEWS = 56 pkg log/syslog (linux-arm-cgo), const LOG_NOTICE = 5 pkg log/syslog (linux-arm-cgo), const LOG_SYSLOG = 40 pkg log/syslog (linux-arm-cgo), const LOG_USER = 8 pkg log/syslog (linux-arm-cgo), const LOG_UUCP = 64 pkg log/syslog (linux-arm-cgo), const LOG_WARNING = 4 pkg log/syslog (netbsd-386), const LOG_ALERT = 1 pkg log/syslog (netbsd-386), const LOG_AUTH = 32 pkg log/syslog (netbsd-386), const LOG_AUTHPRIV = 80 pkg log/syslog (netbsd-386), const LOG_CRIT = 2 pkg log/syslog (netbsd-386), const LOG_CRON = 72 pkg log/syslog (netbsd-386), const LOG_DAEMON = 24 pkg log/syslog (netbsd-386), const LOG_DEBUG = 7 pkg log/syslog (netbsd-386), const LOG_EMERG = 0 pkg log/syslog (netbsd-386), const LOG_ERR = 3 pkg log/syslog (netbsd-386), const LOG_FTP = 88 pkg log/syslog (netbsd-386), const LOG_INFO = 6 pkg log/syslog (netbsd-386), const LOG_KERN = 0 pkg log/syslog (netbsd-386), const LOG_LOCAL0 = 128 pkg log/syslog (netbsd-386), const LOG_LOCAL1 = 136 pkg log/syslog (netbsd-386), const LOG_LOCAL2 = 144 pkg log/syslog (netbsd-386), const LOG_LOCAL3 = 152 pkg log/syslog (netbsd-386), const LOG_LOCAL4 = 160 pkg log/syslog (netbsd-386), const LOG_LOCAL5 = 168 pkg log/syslog (netbsd-386), const LOG_LOCAL6 = 176 pkg log/syslog (netbsd-386), const LOG_LOCAL7 = 184 pkg log/syslog (netbsd-386), const LOG_LPR = 48 pkg log/syslog (netbsd-386), const LOG_MAIL = 16 pkg log/syslog (netbsd-386), const LOG_NEWS = 56 pkg log/syslog (netbsd-386), const LOG_NOTICE = 5 pkg log/syslog (netbsd-386), const LOG_SYSLOG = 40 pkg log/syslog (netbsd-386), const LOG_USER = 8 pkg log/syslog (netbsd-386), const LOG_UUCP = 64 pkg log/syslog (netbsd-386), const LOG_WARNING = 4 pkg log/syslog (netbsd-386-cgo), const LOG_ALERT = 1 pkg log/syslog (netbsd-386-cgo), const LOG_AUTH = 32 pkg log/syslog (netbsd-386-cgo), const LOG_AUTHPRIV = 80 pkg log/syslog (netbsd-386-cgo), const LOG_CRIT = 2 pkg log/syslog (netbsd-386-cgo), const LOG_CRON = 72 pkg log/syslog (netbsd-386-cgo), const LOG_DAEMON = 24 pkg log/syslog (netbsd-386-cgo), const LOG_DEBUG = 7 pkg log/syslog (netbsd-386-cgo), const LOG_EMERG = 0 pkg log/syslog (netbsd-386-cgo), const LOG_ERR = 3 pkg log/syslog (netbsd-386-cgo), const LOG_FTP = 88 pkg log/syslog (netbsd-386-cgo), const LOG_INFO = 6 pkg log/syslog (netbsd-386-cgo), const LOG_KERN = 0 pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL0 = 128 pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL1 = 136 pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL2 = 144 pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL3 = 152 pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL4 = 160 pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL5 = 168 pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL6 = 176 pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL7 = 184 pkg log/syslog (netbsd-386-cgo), const LOG_LPR = 48 pkg log/syslog (netbsd-386-cgo), const LOG_MAIL = 16 pkg log/syslog (netbsd-386-cgo), const LOG_NEWS = 56 pkg log/syslog (netbsd-386-cgo), const LOG_NOTICE = 5 pkg log/syslog (netbsd-386-cgo), const LOG_SYSLOG = 40 pkg log/syslog (netbsd-386-cgo), const LOG_USER = 8 pkg log/syslog (netbsd-386-cgo), const LOG_UUCP = 64 pkg log/syslog (netbsd-386-cgo), const LOG_WARNING = 4 pkg log/syslog (netbsd-amd64), const LOG_ALERT = 1 pkg log/syslog (netbsd-amd64), const LOG_AUTH = 32 pkg log/syslog (netbsd-amd64), const LOG_AUTHPRIV = 80 pkg log/syslog (netbsd-amd64), const LOG_CRIT = 2 pkg log/syslog (netbsd-amd64), const LOG_CRON = 72 pkg log/syslog (netbsd-amd64), const LOG_DAEMON = 24 pkg log/syslog (netbsd-amd64), const LOG_DEBUG = 7 pkg log/syslog (netbsd-amd64), const LOG_EMERG = 0 pkg log/syslog (netbsd-amd64), const LOG_ERR = 3 pkg log/syslog (netbsd-amd64), const LOG_FTP = 88 pkg log/syslog (netbsd-amd64), const LOG_INFO = 6 pkg log/syslog (netbsd-amd64), const LOG_KERN = 0 pkg log/syslog (netbsd-amd64), const LOG_LOCAL0 = 128 pkg log/syslog (netbsd-amd64), const LOG_LOCAL1 = 136 pkg log/syslog (netbsd-amd64), const LOG_LOCAL2 = 144 pkg log/syslog (netbsd-amd64), const LOG_LOCAL3 = 152 pkg log/syslog (netbsd-amd64), const LOG_LOCAL4 = 160 pkg log/syslog (netbsd-amd64), const LOG_LOCAL5 = 168 pkg log/syslog (netbsd-amd64), const LOG_LOCAL6 = 176 pkg log/syslog (netbsd-amd64), const LOG_LOCAL7 = 184 pkg log/syslog (netbsd-amd64), const LOG_LPR = 48 pkg log/syslog (netbsd-amd64), const LOG_MAIL = 16 pkg log/syslog (netbsd-amd64), const LOG_NEWS = 56 pkg log/syslog (netbsd-amd64), const LOG_NOTICE = 5 pkg log/syslog (netbsd-amd64), const LOG_SYSLOG = 40 pkg log/syslog (netbsd-amd64), const LOG_USER = 8 pkg log/syslog (netbsd-amd64), const LOG_UUCP = 64 pkg log/syslog (netbsd-amd64), const LOG_WARNING = 4 pkg log/syslog (netbsd-amd64-cgo), const LOG_ALERT = 1 pkg log/syslog (netbsd-amd64-cgo), const LOG_AUTH = 32 pkg log/syslog (netbsd-amd64-cgo), const LOG_AUTHPRIV = 80 pkg log/syslog (netbsd-amd64-cgo), const LOG_CRIT = 2 pkg log/syslog (netbsd-amd64-cgo), const LOG_CRON = 72 pkg log/syslog (netbsd-amd64-cgo), const LOG_DAEMON = 24 pkg log/syslog (netbsd-amd64-cgo), const LOG_DEBUG = 7 pkg log/syslog (netbsd-amd64-cgo), const LOG_EMERG = 0 pkg log/syslog (netbsd-amd64-cgo), const LOG_ERR = 3 pkg log/syslog (netbsd-amd64-cgo), const LOG_FTP = 88 pkg log/syslog (netbsd-amd64-cgo), const LOG_INFO = 6 pkg log/syslog (netbsd-amd64-cgo), const LOG_KERN = 0 pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL0 = 128 pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL1 = 136 pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL2 = 144 pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL3 = 152 pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL4 = 160 pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL5 = 168 pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL6 = 176 pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL7 = 184 pkg log/syslog (netbsd-amd64-cgo), const LOG_LPR = 48 pkg log/syslog (netbsd-amd64-cgo), const LOG_MAIL = 16 pkg log/syslog (netbsd-amd64-cgo), const LOG_NEWS = 56 pkg log/syslog (netbsd-amd64-cgo), const LOG_NOTICE = 5 pkg log/syslog (netbsd-amd64-cgo), const LOG_SYSLOG = 40 pkg log/syslog (netbsd-amd64-cgo), const LOG_USER = 8 pkg log/syslog (netbsd-amd64-cgo), const LOG_UUCP = 64 pkg log/syslog (netbsd-amd64-cgo), const LOG_WARNING = 4 pkg log/syslog (netbsd-arm), const LOG_ALERT = 1 pkg log/syslog (netbsd-arm), const LOG_AUTH = 32 pkg log/syslog (netbsd-arm), const LOG_AUTHPRIV = 80 pkg log/syslog (netbsd-arm), const LOG_CRIT = 2 pkg log/syslog (netbsd-arm), const LOG_CRON = 72 pkg log/syslog (netbsd-arm), const LOG_DAEMON = 24 pkg log/syslog (netbsd-arm), const LOG_DEBUG = 7 pkg log/syslog (netbsd-arm), const LOG_EMERG = 0 pkg log/syslog (netbsd-arm), const LOG_ERR = 3 pkg log/syslog (netbsd-arm), const LOG_FTP = 88 pkg log/syslog (netbsd-arm), const LOG_INFO = 6 pkg log/syslog (netbsd-arm), const LOG_KERN = 0 pkg log/syslog (netbsd-arm), const LOG_LOCAL0 = 128 pkg log/syslog (netbsd-arm), const LOG_LOCAL1 = 136 pkg log/syslog (netbsd-arm), const LOG_LOCAL2 = 144 pkg log/syslog (netbsd-arm), const LOG_LOCAL3 = 152 pkg log/syslog (netbsd-arm), const LOG_LOCAL4 = 160 pkg log/syslog (netbsd-arm), const LOG_LOCAL5 = 168 pkg log/syslog (netbsd-arm), const LOG_LOCAL6 = 176 pkg log/syslog (netbsd-arm), const LOG_LOCAL7 = 184 pkg log/syslog (netbsd-arm), const LOG_LPR = 48 pkg log/syslog (netbsd-arm), const LOG_MAIL = 16 pkg log/syslog (netbsd-arm), const LOG_NEWS = 56 pkg log/syslog (netbsd-arm), const LOG_NOTICE = 5 pkg log/syslog (netbsd-arm), const LOG_SYSLOG = 40 pkg log/syslog (netbsd-arm), const LOG_USER = 8 pkg log/syslog (netbsd-arm), const LOG_UUCP = 64 pkg log/syslog (netbsd-arm), const LOG_WARNING = 4 pkg log/syslog (netbsd-arm-cgo), const LOG_ALERT = 1 pkg log/syslog (netbsd-arm-cgo), const LOG_AUTH = 32 pkg log/syslog (netbsd-arm-cgo), const LOG_AUTHPRIV = 80 pkg log/syslog (netbsd-arm-cgo), const LOG_CRIT = 2 pkg log/syslog (netbsd-arm-cgo), const LOG_CRON = 72 pkg log/syslog (netbsd-arm-cgo), const LOG_DAEMON = 24 pkg log/syslog (netbsd-arm-cgo), const LOG_DEBUG = 7 pkg log/syslog (netbsd-arm-cgo), const LOG_EMERG = 0 pkg log/syslog (netbsd-arm-cgo), const LOG_ERR = 3 pkg log/syslog (netbsd-arm-cgo), const LOG_FTP = 88 pkg log/syslog (netbsd-arm-cgo), const LOG_INFO = 6 pkg log/syslog (netbsd-arm-cgo), const LOG_KERN = 0 pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL0 = 128 pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL1 = 136 pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL2 = 144 pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL3 = 152 pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL4 = 160 pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL5 = 168 pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL6 = 176 pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL7 = 184 pkg log/syslog (netbsd-arm-cgo), const LOG_LPR = 48 pkg log/syslog (netbsd-arm-cgo), const LOG_MAIL = 16 pkg log/syslog (netbsd-arm-cgo), const LOG_NEWS = 56 pkg log/syslog (netbsd-arm-cgo), const LOG_NOTICE = 5 pkg log/syslog (netbsd-arm-cgo), const LOG_SYSLOG = 40 pkg log/syslog (netbsd-arm-cgo), const LOG_USER = 8 pkg log/syslog (netbsd-arm-cgo), const LOG_UUCP = 64 pkg log/syslog (netbsd-arm-cgo), const LOG_WARNING = 4 pkg log/syslog (openbsd-386), const LOG_ALERT = 1 pkg log/syslog (openbsd-386), const LOG_AUTH = 32 pkg log/syslog (openbsd-386), const LOG_AUTHPRIV = 80 pkg log/syslog (openbsd-386), const LOG_CRIT = 2 pkg log/syslog (openbsd-386), const LOG_CRON = 72 pkg log/syslog (openbsd-386), const LOG_DAEMON = 24 pkg log/syslog (openbsd-386), const LOG_DEBUG = 7 pkg log/syslog (openbsd-386), const LOG_EMERG = 0 pkg log/syslog (openbsd-386), const LOG_ERR = 3 pkg log/syslog (openbsd-386), const LOG_FTP = 88 pkg log/syslog (openbsd-386), const LOG_INFO = 6 pkg log/syslog (openbsd-386), const LOG_KERN = 0 pkg log/syslog (openbsd-386), const LOG_LOCAL0 = 128 pkg log/syslog (openbsd-386), const LOG_LOCAL1 = 136 pkg log/syslog (openbsd-386), const LOG_LOCAL2 = 144 pkg log/syslog (openbsd-386), const LOG_LOCAL3 = 152 pkg log/syslog (openbsd-386), const LOG_LOCAL4 = 160 pkg log/syslog (openbsd-386), const LOG_LOCAL5 = 168 pkg log/syslog (openbsd-386), const LOG_LOCAL6 = 176 pkg log/syslog (openbsd-386), const LOG_LOCAL7 = 184 pkg log/syslog (openbsd-386), const LOG_LPR = 48 pkg log/syslog (openbsd-386), const LOG_MAIL = 16 pkg log/syslog (openbsd-386), const LOG_NEWS = 56 pkg log/syslog (openbsd-386), const LOG_NOTICE = 5 pkg log/syslog (openbsd-386), const LOG_SYSLOG = 40 pkg log/syslog (openbsd-386), const LOG_USER = 8 pkg log/syslog (openbsd-386), const LOG_UUCP = 64 pkg log/syslog (openbsd-386), const LOG_WARNING = 4 pkg log/syslog (openbsd-386-cgo), const LOG_ALERT = 1 pkg log/syslog (openbsd-386-cgo), const LOG_AUTH = 32 pkg log/syslog (openbsd-386-cgo), const LOG_AUTHPRIV = 80 pkg log/syslog (openbsd-386-cgo), const LOG_CRIT = 2 pkg log/syslog (openbsd-386-cgo), const LOG_CRON = 72 pkg log/syslog (openbsd-386-cgo), const LOG_DAEMON = 24 pkg log/syslog (openbsd-386-cgo), const LOG_DEBUG = 7 pkg log/syslog (openbsd-386-cgo), const LOG_EMERG = 0 pkg log/syslog (openbsd-386-cgo), const LOG_ERR = 3 pkg log/syslog (openbsd-386-cgo), const LOG_FTP = 88 pkg log/syslog (openbsd-386-cgo), const LOG_INFO = 6 pkg log/syslog (openbsd-386-cgo), const LOG_KERN = 0 pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL0 = 128 pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL1 = 136 pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL2 = 144 pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL3 = 152 pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL4 = 160 pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL5 = 168 pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL6 = 176 pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL7 = 184 pkg log/syslog (openbsd-386-cgo), const LOG_LPR = 48 pkg log/syslog (openbsd-386-cgo), const LOG_MAIL = 16 pkg log/syslog (openbsd-386-cgo), const LOG_NEWS = 56 pkg log/syslog (openbsd-386-cgo), const LOG_NOTICE = 5 pkg log/syslog (openbsd-386-cgo), const LOG_SYSLOG = 40 pkg log/syslog (openbsd-386-cgo), const LOG_USER = 8 pkg log/syslog (openbsd-386-cgo), const LOG_UUCP = 64 pkg log/syslog (openbsd-386-cgo), const LOG_WARNING = 4 pkg log/syslog (openbsd-amd64), const LOG_ALERT = 1 pkg log/syslog (openbsd-amd64), const LOG_AUTH = 32 pkg log/syslog (openbsd-amd64), const LOG_AUTHPRIV = 80 pkg log/syslog (openbsd-amd64), const LOG_CRIT = 2 pkg log/syslog (openbsd-amd64), const LOG_CRON = 72 pkg log/syslog (openbsd-amd64), const LOG_DAEMON = 24 pkg log/syslog (openbsd-amd64), const LOG_DEBUG = 7 pkg log/syslog (openbsd-amd64), const LOG_EMERG = 0 pkg log/syslog (openbsd-amd64), const LOG_ERR = 3 pkg log/syslog (openbsd-amd64), const LOG_FTP = 88 pkg log/syslog (openbsd-amd64), const LOG_INFO = 6 pkg log/syslog (openbsd-amd64), const LOG_KERN = 0 pkg log/syslog (openbsd-amd64), const LOG_LOCAL0 = 128 pkg log/syslog (openbsd-amd64), const LOG_LOCAL1 = 136 pkg log/syslog (openbsd-amd64), const LOG_LOCAL2 = 144 pkg log/syslog (openbsd-amd64), const LOG_LOCAL3 = 152 pkg log/syslog (openbsd-amd64), const LOG_LOCAL4 = 160 pkg log/syslog (openbsd-amd64), const LOG_LOCAL5 = 168 pkg log/syslog (openbsd-amd64), const LOG_LOCAL6 = 176 pkg log/syslog (openbsd-amd64), const LOG_LOCAL7 = 184 pkg log/syslog (openbsd-amd64), const LOG_LPR = 48 pkg log/syslog (openbsd-amd64), const LOG_MAIL = 16 pkg log/syslog (openbsd-amd64), const LOG_NEWS = 56 pkg log/syslog (openbsd-amd64), const LOG_NOTICE = 5 pkg log/syslog (openbsd-amd64), const LOG_SYSLOG = 40 pkg log/syslog (openbsd-amd64), const LOG_USER = 8 pkg log/syslog (openbsd-amd64), const LOG_UUCP = 64 pkg log/syslog (openbsd-amd64), const LOG_WARNING = 4 pkg log/syslog (openbsd-amd64-cgo), const LOG_ALERT = 1 pkg log/syslog (openbsd-amd64-cgo), const LOG_AUTH = 32 pkg log/syslog (openbsd-amd64-cgo), const LOG_AUTHPRIV = 80 pkg log/syslog (openbsd-amd64-cgo), const LOG_CRIT = 2 pkg log/syslog (openbsd-amd64-cgo), const LOG_CRON = 72 pkg log/syslog (openbsd-amd64-cgo), const LOG_DAEMON = 24 pkg log/syslog (openbsd-amd64-cgo), const LOG_DEBUG = 7 pkg log/syslog (openbsd-amd64-cgo), const LOG_EMERG = 0 pkg log/syslog (openbsd-amd64-cgo), const LOG_ERR = 3 pkg log/syslog (openbsd-amd64-cgo), const LOG_FTP = 88 pkg log/syslog (openbsd-amd64-cgo), const LOG_INFO = 6 pkg log/syslog (openbsd-amd64-cgo), const LOG_KERN = 0 pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL0 = 128 pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL1 = 136 pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL2 = 144 pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL3 = 152 pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL4 = 160 pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL5 = 168 pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL6 = 176 pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL7 = 184 pkg log/syslog (openbsd-amd64-cgo), const LOG_LPR = 48 pkg log/syslog (openbsd-amd64-cgo), const LOG_MAIL = 16 pkg log/syslog (openbsd-amd64-cgo), const LOG_NEWS = 56 pkg log/syslog (openbsd-amd64-cgo), const LOG_NOTICE = 5 pkg log/syslog (openbsd-amd64-cgo), const LOG_SYSLOG = 40 pkg log/syslog (openbsd-amd64-cgo), const LOG_USER = 8 pkg log/syslog (openbsd-amd64-cgo), const LOG_UUCP = 64 pkg log/syslog (openbsd-amd64-cgo), const LOG_WARNING = 4 pkg math, const E = 271828182845904523536028747135266249775724709369995957496696763/100000000000000000000000000000000000000000000000000000000000000 pkg math, const Ln10 = 23025850929940456840179914546843642076011014886287729760333279/10000000000000000000000000000000000000000000000000000000000000 pkg math, const Ln2 = 693147180559945309417232121458176568075500134360255254120680009/1000000000000000000000000000000000000000000000000000000000000000 pkg math, const Log10E = 10000000000000000000000000000000000000000000000000000000000000/23025850929940456840179914546843642076011014886287729760333279 pkg math, const Log2E = 1000000000000000000000000000000000000000000000000000000000000000/693147180559945309417232121458176568075500134360255254120680009 pkg math, const MaxFloat32 = 340282346638528859811704183484516925440 pkg math, const MaxFloat64 = 179769313486231570814527423731704356798100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 pkg math, const MaxInt16 = 32767 pkg math, const MaxInt32 = 2147483647 pkg math, const MaxInt64 = 9223372036854775807 pkg math, const MaxInt8 = 127 pkg math, const MaxUint16 = 65535 pkg math, const MaxUint32 = 4294967295 pkg math, const MaxUint64 = 18446744073709551615 pkg math, const MaxUint8 = 255 pkg math, const MinInt16 = -32768 pkg math, const MinInt32 = -2147483648 pkg math, const MinInt64 = -9223372036854775808 pkg math, const MinInt8 = -128 pkg math, const Phi = 80901699437494742410229341718281905886015458990288143106772431/50000000000000000000000000000000000000000000000000000000000000 pkg math, const Pi = 314159265358979323846264338327950288419716939937510582097494459/100000000000000000000000000000000000000000000000000000000000000 pkg math, const SmallestNonzeroFloat32 = 17516230804060213386546619791123951641/12500000000000000000000000000000000000000000000000000000000000000000000000000000000 pkg math, const SmallestNonzeroFloat64 = 4940656458412465441765687928682213723651/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 pkg math, const Sqrt2 = 70710678118654752440084436210484903928483593768847403658833987/50000000000000000000000000000000000000000000000000000000000000 pkg math, const SqrtE = 164872127070012814684865078781416357165377610071014801157507931/100000000000000000000000000000000000000000000000000000000000000 pkg math, const SqrtPhi = 63600982475703448212621123086874574585780402092004812430832019/50000000000000000000000000000000000000000000000000000000000000 pkg math, const SqrtPi = 177245385090551602729816748334114518279754945612238712821380779/100000000000000000000000000000000000000000000000000000000000000 pkg math/big, const MaxBase = 36 pkg math/big, method (*Int) MarshalJSON() ([]uint8, error) pkg math/big, method (*Int) SetUint64(uint64) *Int pkg math/big, method (*Int) Uint64() uint64 pkg math/big, method (*Int) UnmarshalJSON([]uint8) error pkg math/big, method (*Rat) Float64() (float64, bool) pkg math/big, method (*Rat) SetFloat64(float64) *Rat pkg mime/multipart, method (*Writer) SetBoundary(string) error pkg net, const FlagBroadcast = 2 pkg net, const FlagLoopback = 4 pkg net, const FlagMulticast = 16 pkg net, const FlagPointToPoint = 8 pkg net, const FlagUp = 1 pkg net, const IPv4len = 4 pkg net, const IPv6len = 16 pkg net, func ListenUnixgram(string, *UnixAddr) (*UnixConn, error) pkg net, func LookupNS(string) ([]*NS, error) pkg net, method (*Dialer) Dial(string, string) (Conn, error) pkg net, method (*IPConn) ReadMsgIP([]uint8, []uint8) (int, int, int, *IPAddr, error) pkg net, method (*IPConn) WriteMsgIP([]uint8, []uint8, *IPAddr) (int, int, error) pkg net, method (*UDPConn) ReadMsgUDP([]uint8, []uint8) (int, int, int, *UDPAddr, error) pkg net, method (*UDPConn) WriteMsgUDP([]uint8, []uint8, *UDPAddr) (int, int, error) pkg net, method (*UnixConn) CloseRead() error pkg net, method (*UnixConn) CloseWrite() error pkg net, type Dialer struct pkg net, type Dialer struct, Deadline time.Time pkg net, type Dialer struct, LocalAddr Addr pkg net, type Dialer struct, Timeout time.Duration pkg net, type IPAddr struct, Zone string pkg net, type NS struct pkg net, type NS struct, Host string pkg net, type TCPAddr struct, Zone string pkg net, type UDPAddr struct, Zone string pkg net/http, const DefaultMaxHeaderBytes = 1048576 pkg net/http, const DefaultMaxIdleConnsPerHost = 2 pkg net/http, const StatusAccepted = 202 pkg net/http, const StatusBadGateway = 502 pkg net/http, const StatusBadRequest = 400 pkg net/http, const StatusConflict = 409 pkg net/http, const StatusContinue = 100 pkg net/http, const StatusCreated = 201 pkg net/http, const StatusExpectationFailed = 417 pkg net/http, const StatusForbidden = 403 pkg net/http, const StatusFound = 302 pkg net/http, const StatusGatewayTimeout = 504 pkg net/http, const StatusGone = 410 pkg net/http, const StatusHTTPVersionNotSupported = 505 pkg net/http, const StatusInternalServerError = 500 pkg net/http, const StatusLengthRequired = 411 pkg net/http, const StatusMethodNotAllowed = 405 pkg net/http, const StatusMovedPermanently = 301 pkg net/http, const StatusMultipleChoices = 300 pkg net/http, const StatusNoContent = 204 pkg net/http, const StatusNonAuthoritativeInfo = 203 pkg net/http, const StatusNotAcceptable = 406 pkg net/http, const StatusNotFound = 404 pkg net/http, const StatusNotImplemented = 501 pkg net/http, const StatusNotModified = 304 pkg net/http, const StatusOK = 200 pkg net/http, const StatusPartialContent = 206 pkg net/http, const StatusPaymentRequired = 402 pkg net/http, const StatusPreconditionFailed = 412 pkg net/http, const StatusProxyAuthRequired = 407 pkg net/http, const StatusRequestEntityTooLarge = 413 pkg net/http, const StatusRequestTimeout = 408 pkg net/http, const StatusRequestURITooLong = 414 pkg net/http, const StatusRequestedRangeNotSatisfiable = 416 pkg net/http, const StatusResetContent = 205 pkg net/http, const StatusSeeOther = 303 pkg net/http, const StatusServiceUnavailable = 503 pkg net/http, const StatusSwitchingProtocols = 101 pkg net/http, const StatusTeapot = 418 pkg net/http, const StatusTemporaryRedirect = 307 pkg net/http, const StatusUnauthorized = 401 pkg net/http, const StatusUnsupportedMediaType = 415 pkg net/http, const StatusUseProxy = 305 pkg net/http, const TimeFormat = "Mon, 02 Jan 2006 15:04:05 GMT" pkg net/http, func ParseTime(string) (time.Time, error) pkg net/http, method (*Request) PostFormValue(string) string pkg net/http, method (*ServeMux) Handler(*Request) (Handler, string) pkg net/http, method (*Transport) CancelRequest(*Request) pkg net/http, type CloseNotifier interface { CloseNotify } pkg net/http, type CloseNotifier interface, CloseNotify() <-chan bool pkg net/http, type Request struct, PostForm url.Values pkg net/http, type Server struct, TLSNextProto map[string]func(*Server, *tls.Conn, Handler) pkg net/http, type Transport struct, ResponseHeaderTimeout time.Duration pkg net/http/cookiejar, func New(*Options) (*Jar, error) pkg net/http/cookiejar, method (*Jar) Cookies(*url.URL) []*http.Cookie pkg net/http/cookiejar, method (*Jar) SetCookies(*url.URL, []*http.Cookie) pkg net/http/cookiejar, type Jar struct pkg net/http/cookiejar, type Options struct pkg net/http/cookiejar, type Options struct, PublicSuffixList PublicSuffixList pkg net/http/cookiejar, type PublicSuffixList interface { PublicSuffix, String } pkg net/http/cookiejar, type PublicSuffixList interface, PublicSuffix(string) string pkg net/http/cookiejar, type PublicSuffixList interface, String() string pkg net/http/httptest, const DefaultRemoteAddr = "1.2.3.4" pkg net/mail, func ParseAddress(string) (*Address, error) pkg net/mail, func ParseAddressList(string) ([]*Address, error) pkg net/rpc, const DefaultDebugPath = "/debug/rpc" pkg net/rpc, const DefaultRPCPath = "/_goRPC_" pkg net/smtp, method (*Client) Hello(string) error pkg net/textproto, func TrimBytes([]uint8) []uint8 pkg net/textproto, func TrimString(string) string pkg os (darwin-386), const DevNull = "/dev/null" pkg os (darwin-386), const O_APPEND = 8 pkg os (darwin-386), const O_CREATE = 512 pkg os (darwin-386), const O_EXCL = 2048 pkg os (darwin-386), const O_SYNC = 128 pkg os (darwin-386), const O_TRUNC = 1024 pkg os (darwin-386), const PathListSeparator = 58 pkg os (darwin-386), const PathSeparator = 47 pkg os (darwin-386-cgo), const DevNull = "/dev/null" pkg os (darwin-386-cgo), const O_APPEND = 8 pkg os (darwin-386-cgo), const O_CREATE = 512 pkg os (darwin-386-cgo), const O_EXCL = 2048 pkg os (darwin-386-cgo), const O_SYNC = 128 pkg os (darwin-386-cgo), const O_TRUNC = 1024 pkg os (darwin-386-cgo), const PathListSeparator = 58 pkg os (darwin-386-cgo), const PathSeparator = 47 pkg os (darwin-amd64), const DevNull = "/dev/null" pkg os (darwin-amd64), const O_APPEND = 8 pkg os (darwin-amd64), const O_CREATE = 512 pkg os (darwin-amd64), const O_EXCL = 2048 pkg os (darwin-amd64), const O_SYNC = 128 pkg os (darwin-amd64), const O_TRUNC = 1024 pkg os (darwin-amd64), const PathListSeparator = 58 pkg os (darwin-amd64), const PathSeparator = 47 pkg os (darwin-amd64-cgo), const DevNull = "/dev/null" pkg os (darwin-amd64-cgo), const O_APPEND = 8 pkg os (darwin-amd64-cgo), const O_CREATE = 512 pkg os (darwin-amd64-cgo), const O_EXCL = 2048 pkg os (darwin-amd64-cgo), const O_SYNC = 128 pkg os (darwin-amd64-cgo), const O_TRUNC = 1024 pkg os (darwin-amd64-cgo), const PathListSeparator = 58 pkg os (darwin-amd64-cgo), const PathSeparator = 47 pkg os (freebsd-386), const DevNull = "/dev/null" pkg os (freebsd-386), const O_APPEND = 8 pkg os (freebsd-386), const O_CREATE = 512 pkg os (freebsd-386), const O_EXCL = 2048 pkg os (freebsd-386), const O_SYNC = 128 pkg os (freebsd-386), const O_TRUNC = 1024 pkg os (freebsd-386), const PathListSeparator = 58 pkg os (freebsd-386), const PathSeparator = 47 pkg os (freebsd-386-cgo), const DevNull = "/dev/null" pkg os (freebsd-386-cgo), const O_APPEND = 8 pkg os (freebsd-386-cgo), const O_CREATE = 512 pkg os (freebsd-386-cgo), const O_EXCL = 2048 pkg os (freebsd-386-cgo), const O_SYNC = 128 pkg os (freebsd-386-cgo), const O_TRUNC = 1024 pkg os (freebsd-386-cgo), const PathListSeparator = 58 pkg os (freebsd-386-cgo), const PathSeparator = 47 pkg os (freebsd-amd64), const DevNull = "/dev/null" pkg os (freebsd-amd64), const O_APPEND = 8 pkg os (freebsd-amd64), const O_CREATE = 512 pkg os (freebsd-amd64), const O_EXCL = 2048 pkg os (freebsd-amd64), const O_SYNC = 128 pkg os (freebsd-amd64), const O_TRUNC = 1024 pkg os (freebsd-amd64), const PathListSeparator = 58 pkg os (freebsd-amd64), const PathSeparator = 47 pkg os (freebsd-amd64-cgo), const DevNull = "/dev/null" pkg os (freebsd-amd64-cgo), const O_APPEND = 8 pkg os (freebsd-amd64-cgo), const O_CREATE = 512 pkg os (freebsd-amd64-cgo), const O_EXCL = 2048 pkg os (freebsd-amd64-cgo), const O_SYNC = 128 pkg os (freebsd-amd64-cgo), const O_TRUNC = 1024 pkg os (freebsd-amd64-cgo), const PathListSeparator = 58 pkg os (freebsd-amd64-cgo), const PathSeparator = 47 pkg os (freebsd-arm), const DevNull = "/dev/null" pkg os (freebsd-arm), const O_APPEND = 8 pkg os (freebsd-arm), const O_CREATE = 512 pkg os (freebsd-arm), const O_EXCL = 2048 pkg os (freebsd-arm), const O_SYNC = 128 pkg os (freebsd-arm), const O_TRUNC = 1024 pkg os (freebsd-arm), const PathListSeparator = 58 pkg os (freebsd-arm), const PathSeparator = 47 pkg os (freebsd-arm-cgo), const DevNull = "/dev/null" pkg os (freebsd-arm-cgo), const O_APPEND = 8 pkg os (freebsd-arm-cgo), const O_CREATE = 512 pkg os (freebsd-arm-cgo), const O_EXCL = 2048 pkg os (freebsd-arm-cgo), const O_SYNC = 128 pkg os (freebsd-arm-cgo), const O_TRUNC = 1024 pkg os (freebsd-arm-cgo), const PathListSeparator = 58 pkg os (freebsd-arm-cgo), const PathSeparator = 47 pkg os (linux-386), const DevNull = "/dev/null" pkg os (linux-386), const O_APPEND = 1024 pkg os (linux-386), const O_CREATE = 64 pkg os (linux-386), const O_EXCL = 128 pkg os (linux-386), const O_SYNC = 1052672 pkg os (linux-386), const O_TRUNC = 512 pkg os (linux-386), const PathListSeparator = 58 pkg os (linux-386), const PathSeparator = 47 pkg os (linux-386-cgo), const DevNull = "/dev/null" pkg os (linux-386-cgo), const O_APPEND = 1024 pkg os (linux-386-cgo), const O_CREATE = 64 pkg os (linux-386-cgo), const O_EXCL = 128 pkg os (linux-386-cgo), const O_SYNC = 1052672 pkg os (linux-386-cgo), const O_TRUNC = 512 pkg os (linux-386-cgo), const PathListSeparator = 58 pkg os (linux-386-cgo), const PathSeparator = 47 pkg os (linux-amd64), const DevNull = "/dev/null" pkg os (linux-amd64), const O_APPEND = 1024 pkg os (linux-amd64), const O_CREATE = 64 pkg os (linux-amd64), const O_EXCL = 128 pkg os (linux-amd64), const O_SYNC = 1052672 pkg os (linux-amd64), const O_TRUNC = 512 pkg os (linux-amd64), const PathListSeparator = 58 pkg os (linux-amd64), const PathSeparator = 47 pkg os (linux-amd64-cgo), const DevNull = "/dev/null" pkg os (linux-amd64-cgo), const O_APPEND = 1024 pkg os (linux-amd64-cgo), const O_CREATE = 64 pkg os (linux-amd64-cgo), const O_EXCL = 128 pkg os (linux-amd64-cgo), const O_SYNC = 1052672 pkg os (linux-amd64-cgo), const O_TRUNC = 512 pkg os (linux-amd64-cgo), const PathListSeparator = 58 pkg os (linux-amd64-cgo), const PathSeparator = 47 pkg os (linux-arm), const DevNull = "/dev/null" pkg os (linux-arm), const O_APPEND = 1024 pkg os (linux-arm), const O_CREATE = 64 pkg os (linux-arm), const O_EXCL = 128 pkg os (linux-arm), const O_SYNC = 4096 pkg os (linux-arm), const O_TRUNC = 512 pkg os (linux-arm), const PathListSeparator = 58 pkg os (linux-arm), const PathSeparator = 47 pkg os (linux-arm-cgo), const DevNull = "/dev/null" pkg os (linux-arm-cgo), const O_APPEND = 1024 pkg os (linux-arm-cgo), const O_CREATE = 64 pkg os (linux-arm-cgo), const O_EXCL = 128 pkg os (linux-arm-cgo), const O_SYNC = 4096 pkg os (linux-arm-cgo), const O_TRUNC = 512 pkg os (linux-arm-cgo), const PathListSeparator = 58 pkg os (linux-arm-cgo), const PathSeparator = 47 pkg os (netbsd-386), const DevNull = "/dev/null" pkg os (netbsd-386), const O_APPEND = 8 pkg os (netbsd-386), const O_CREATE = 512 pkg os (netbsd-386), const O_EXCL = 2048 pkg os (netbsd-386), const O_SYNC = 128 pkg os (netbsd-386), const O_TRUNC = 1024 pkg os (netbsd-386), const PathListSeparator = 58 pkg os (netbsd-386), const PathSeparator = 47 pkg os (netbsd-386-cgo), const DevNull = "/dev/null" pkg os (netbsd-386-cgo), const O_APPEND = 8 pkg os (netbsd-386-cgo), const O_CREATE = 512 pkg os (netbsd-386-cgo), const O_EXCL = 2048 pkg os (netbsd-386-cgo), const O_SYNC = 128 pkg os (netbsd-386-cgo), const O_TRUNC = 1024 pkg os (netbsd-386-cgo), const PathListSeparator = 58 pkg os (netbsd-386-cgo), const PathSeparator = 47 pkg os (netbsd-amd64), const DevNull = "/dev/null" pkg os (netbsd-amd64), const O_APPEND = 8 pkg os (netbsd-amd64), const O_CREATE = 512 pkg os (netbsd-amd64), const O_EXCL = 2048 pkg os (netbsd-amd64), const O_SYNC = 128 pkg os (netbsd-amd64), const O_TRUNC = 1024 pkg os (netbsd-amd64), const PathListSeparator = 58 pkg os (netbsd-amd64), const PathSeparator = 47 pkg os (netbsd-amd64-cgo), const DevNull = "/dev/null" pkg os (netbsd-amd64-cgo), const O_APPEND = 8 pkg os (netbsd-amd64-cgo), const O_CREATE = 512 pkg os (netbsd-amd64-cgo), const O_EXCL = 2048 pkg os (netbsd-amd64-cgo), const O_SYNC = 128 pkg os (netbsd-amd64-cgo), const O_TRUNC = 1024 pkg os (netbsd-amd64-cgo), const PathListSeparator = 58 pkg os (netbsd-amd64-cgo), const PathSeparator = 47 pkg os (netbsd-arm), const DevNull = "/dev/null" pkg os (netbsd-arm), const O_APPEND = 8 pkg os (netbsd-arm), const O_CREATE = 512 pkg os (netbsd-arm), const O_EXCL = 2048 pkg os (netbsd-arm), const O_SYNC = 128 pkg os (netbsd-arm), const O_TRUNC = 1024 pkg os (netbsd-arm), const PathListSeparator = 58 pkg os (netbsd-arm), const PathSeparator = 47 pkg os (netbsd-arm-cgo), const DevNull = "/dev/null" pkg os (netbsd-arm-cgo), const O_APPEND = 8 pkg os (netbsd-arm-cgo), const O_CREATE = 512 pkg os (netbsd-arm-cgo), const O_EXCL = 2048 pkg os (netbsd-arm-cgo), const O_SYNC = 128 pkg os (netbsd-arm-cgo), const O_TRUNC = 1024 pkg os (netbsd-arm-cgo), const PathListSeparator = 58 pkg os (netbsd-arm-cgo), const PathSeparator = 47 pkg os (openbsd-386), const DevNull = "/dev/null" pkg os (openbsd-386), const O_APPEND = 8 pkg os (openbsd-386), const O_CREATE = 512 pkg os (openbsd-386), const O_EXCL = 2048 pkg os (openbsd-386), const O_SYNC = 128 pkg os (openbsd-386), const O_TRUNC = 1024 pkg os (openbsd-386), const PathListSeparator = 58 pkg os (openbsd-386), const PathSeparator = 47 pkg os (openbsd-386-cgo), const DevNull = "/dev/null" pkg os (openbsd-386-cgo), const O_APPEND = 8 pkg os (openbsd-386-cgo), const O_CREATE = 512 pkg os (openbsd-386-cgo), const O_EXCL = 2048 pkg os (openbsd-386-cgo), const O_SYNC = 128 pkg os (openbsd-386-cgo), const O_TRUNC = 1024 pkg os (openbsd-386-cgo), const PathListSeparator = 58 pkg os (openbsd-386-cgo), const PathSeparator = 47 pkg os (openbsd-amd64), const DevNull = "/dev/null" pkg os (openbsd-amd64), const O_APPEND = 8 pkg os (openbsd-amd64), const O_CREATE = 512 pkg os (openbsd-amd64), const O_EXCL = 2048 pkg os (openbsd-amd64), const O_SYNC = 128 pkg os (openbsd-amd64), const O_TRUNC = 1024 pkg os (openbsd-amd64), const PathListSeparator = 58 pkg os (openbsd-amd64), const PathSeparator = 47 pkg os (openbsd-amd64-cgo), const DevNull = "/dev/null" pkg os (openbsd-amd64-cgo), const O_APPEND = 8 pkg os (openbsd-amd64-cgo), const O_CREATE = 512 pkg os (openbsd-amd64-cgo), const O_EXCL = 2048 pkg os (openbsd-amd64-cgo), const O_SYNC = 128 pkg os (openbsd-amd64-cgo), const O_TRUNC = 1024 pkg os (openbsd-amd64-cgo), const PathListSeparator = 58 pkg os (openbsd-amd64-cgo), const PathSeparator = 47 pkg os (windows-386), const DevNull = "NUL" pkg os (windows-386), const O_APPEND = 1024 pkg os (windows-386), const O_CREATE = 64 pkg os (windows-386), const O_EXCL = 128 pkg os (windows-386), const O_SYNC = 4096 pkg os (windows-386), const O_TRUNC = 512 pkg os (windows-386), const PathListSeparator = 59 pkg os (windows-386), const PathSeparator = 92 pkg os (windows-amd64), const DevNull = "NUL" pkg os (windows-amd64), const O_APPEND = 1024 pkg os (windows-amd64), const O_CREATE = 64 pkg os (windows-amd64), const O_EXCL = 128 pkg os (windows-amd64), const O_SYNC = 4096 pkg os (windows-amd64), const O_TRUNC = 512 pkg os (windows-amd64), const PathListSeparator = 59 pkg os (windows-amd64), const PathSeparator = 92 pkg os, const ModeAppend = 1073741824 pkg os, const ModeCharDevice = 2097152 pkg os, const ModeDevice = 67108864 pkg os, const ModeDir = 2147483648 pkg os, const ModeExclusive = 536870912 pkg os, const ModeNamedPipe = 33554432 pkg os, const ModePerm = 511 pkg os, const ModeSetgid = 4194304 pkg os, const ModeSetuid = 8388608 pkg os, const ModeSocket = 16777216 pkg os, const ModeSticky = 1048576 pkg os, const ModeSymlink = 134217728 pkg os, const ModeTemporary = 268435456 pkg os, const ModeType = 2399141888 pkg os, const O_RDONLY = 0 pkg os, const O_RDWR = 2 pkg os, const O_WRONLY = 1 pkg os, const SEEK_CUR = 1 pkg os, const SEEK_END = 2 pkg os, const SEEK_SET = 0 pkg os, method (FileMode) IsRegular() bool pkg os/signal, func Stop(chan<- os.Signal) pkg path/filepath (darwin-386), const ListSeparator = 58 pkg path/filepath (darwin-386), const Separator = 47 pkg path/filepath (darwin-386-cgo), const ListSeparator = 58 pkg path/filepath (darwin-386-cgo), const Separator = 47 pkg path/filepath (darwin-amd64), const ListSeparator = 58 pkg path/filepath (darwin-amd64), const Separator = 47 pkg path/filepath (darwin-amd64-cgo), const ListSeparator = 58 pkg path/filepath (darwin-amd64-cgo), const Separator = 47 pkg path/filepath (freebsd-386), const ListSeparator = 58 pkg path/filepath (freebsd-386), const Separator = 47 pkg path/filepath (freebsd-386-cgo), const ListSeparator = 58 pkg path/filepath (freebsd-386-cgo), const Separator = 47 pkg path/filepath (freebsd-amd64), const ListSeparator = 58 pkg path/filepath (freebsd-amd64), const Separator = 47 pkg path/filepath (freebsd-amd64-cgo), const ListSeparator = 58 pkg path/filepath (freebsd-amd64-cgo), const Separator = 47 pkg path/filepath (freebsd-arm), const ListSeparator = 58 pkg path/filepath (freebsd-arm), const Separator = 47 pkg path/filepath (freebsd-arm-cgo), const ListSeparator = 58 pkg path/filepath (freebsd-arm-cgo), const Separator = 47 pkg path/filepath (linux-386), const ListSeparator = 58 pkg path/filepath (linux-386), const Separator = 47 pkg path/filepath (linux-386-cgo), const ListSeparator = 58 pkg path/filepath (linux-386-cgo), const Separator = 47 pkg path/filepath (linux-amd64), const ListSeparator = 58 pkg path/filepath (linux-amd64), const Separator = 47 pkg path/filepath (linux-amd64-cgo), const ListSeparator = 58 pkg path/filepath (linux-amd64-cgo), const Separator = 47 pkg path/filepath (linux-arm), const ListSeparator = 58 pkg path/filepath (linux-arm), const Separator = 47 pkg path/filepath (linux-arm-cgo), const ListSeparator = 58 pkg path/filepath (linux-arm-cgo), const Separator = 47 pkg path/filepath (netbsd-386), const ListSeparator = 58 pkg path/filepath (netbsd-386), const Separator = 47 pkg path/filepath (netbsd-386-cgo), const ListSeparator = 58 pkg path/filepath (netbsd-386-cgo), const Separator = 47 pkg path/filepath (netbsd-amd64), const ListSeparator = 58 pkg path/filepath (netbsd-amd64), const Separator = 47 pkg path/filepath (netbsd-amd64-cgo), const ListSeparator = 58 pkg path/filepath (netbsd-amd64-cgo), const Separator = 47 pkg path/filepath (netbsd-arm), const ListSeparator = 58 pkg path/filepath (netbsd-arm), const Separator = 47 pkg path/filepath (netbsd-arm-cgo), const ListSeparator = 58 pkg path/filepath (netbsd-arm-cgo), const Separator = 47 pkg path/filepath (openbsd-386), const ListSeparator = 58 pkg path/filepath (openbsd-386), const Separator = 47 pkg path/filepath (openbsd-386-cgo), const ListSeparator = 58 pkg path/filepath (openbsd-386-cgo), const Separator = 47 pkg path/filepath (openbsd-amd64), const ListSeparator = 58 pkg path/filepath (openbsd-amd64), const Separator = 47 pkg path/filepath (openbsd-amd64-cgo), const ListSeparator = 58 pkg path/filepath (openbsd-amd64-cgo), const Separator = 47 pkg path/filepath (windows-386), const ListSeparator = 59 pkg path/filepath (windows-386), const Separator = 92 pkg path/filepath (windows-amd64), const ListSeparator = 59 pkg path/filepath (windows-amd64), const Separator = 92 pkg reflect, const Array = 17 pkg reflect, const Bool = 1 pkg reflect, const BothDir = 3 pkg reflect, const Chan = 18 pkg reflect, const Complex128 = 16 pkg reflect, const Complex64 = 15 pkg reflect, const Float32 = 13 pkg reflect, const Float64 = 14 pkg reflect, const Func = 19 pkg reflect, const Int = 2 pkg reflect, const Int16 = 4 pkg reflect, const Int32 = 5 pkg reflect, const Int64 = 6 pkg reflect, const Int8 = 3 pkg reflect, const Interface = 20 pkg reflect, const Invalid = 0 pkg reflect, const Map = 21 pkg reflect, const Ptr = 22 pkg reflect, const RecvDir = 1 pkg reflect, const SelectDefault = 3 pkg reflect, const SelectDefault SelectDir pkg reflect, const SelectRecv = 2 pkg reflect, const SelectRecv SelectDir pkg reflect, const SelectSend = 1 pkg reflect, const SelectSend SelectDir pkg reflect, const SendDir = 2 pkg reflect, const Slice = 23 pkg reflect, const String = 24 pkg reflect, const Struct = 25 pkg reflect, const Uint = 7 pkg reflect, const Uint16 = 9 pkg reflect, const Uint32 = 10 pkg reflect, const Uint64 = 11 pkg reflect, const Uint8 = 8 pkg reflect, const Uintptr = 12 pkg reflect, const UnsafePointer = 26 pkg reflect, func ChanOf(ChanDir, Type) Type pkg reflect, func MakeFunc(Type, func([]Value) []Value) Value pkg reflect, func MapOf(Type, Type) Type pkg reflect, func Select([]SelectCase) (int, Value, bool) pkg reflect, func SliceOf(Type) Type pkg reflect, method (Value) Convert(Type) Value pkg reflect, type SelectCase struct pkg reflect, type SelectCase struct, Chan Value pkg reflect, type SelectCase struct, Dir SelectDir pkg reflect, type SelectCase struct, Send Value pkg reflect, type SelectDir int pkg reflect, type Type interface, ConvertibleTo(Type) bool pkg regexp, method (*Regexp) Longest() pkg regexp, method (*Regexp) Split(string, int) []string pkg regexp/syntax, const ClassNL = 4 pkg regexp/syntax, const DotNL = 8 pkg regexp/syntax, const EmptyBeginLine = 1 pkg regexp/syntax, const EmptyBeginText = 4 pkg regexp/syntax, const EmptyEndLine = 2 pkg regexp/syntax, const EmptyEndText = 8 pkg regexp/syntax, const EmptyNoWordBoundary = 32 pkg regexp/syntax, const EmptyWordBoundary = 16 pkg regexp/syntax, const ErrInternalError = "regexp/syntax: internal error" pkg regexp/syntax, const ErrInvalidCharClass = "invalid character class" pkg regexp/syntax, const ErrInvalidCharRange = "invalid character class range" pkg regexp/syntax, const ErrInvalidEscape = "invalid escape sequence" pkg regexp/syntax, const ErrInvalidNamedCapture = "invalid named capture" pkg regexp/syntax, const ErrInvalidPerlOp = "invalid or unsupported Perl syntax" pkg regexp/syntax, const ErrInvalidRepeatOp = "invalid nested repetition operator" pkg regexp/syntax, const ErrInvalidRepeatSize = "invalid repeat count" pkg regexp/syntax, const ErrInvalidUTF8 = "invalid UTF-8" pkg regexp/syntax, const ErrMissingBracket = "missing closing ]" pkg regexp/syntax, const ErrMissingParen = "missing closing )" pkg regexp/syntax, const ErrMissingRepeatArgument = "missing argument to repetition operator" pkg regexp/syntax, const ErrTrailingBackslash = "trailing backslash at end of expression" pkg regexp/syntax, const ErrUnexpectedParen = "unexpected )" pkg regexp/syntax, const ErrUnexpectedParen ErrorCode pkg regexp/syntax, const FoldCase = 1 pkg regexp/syntax, const InstAlt = 0 pkg regexp/syntax, const InstAltMatch = 1 pkg regexp/syntax, const InstCapture = 2 pkg regexp/syntax, const InstEmptyWidth = 3 pkg regexp/syntax, const InstFail = 5 pkg regexp/syntax, const InstMatch = 4 pkg regexp/syntax, const InstNop = 6 pkg regexp/syntax, const InstRune = 7 pkg regexp/syntax, const InstRune1 = 8 pkg regexp/syntax, const InstRuneAny = 9 pkg regexp/syntax, const InstRuneAnyNotNL = 10 pkg regexp/syntax, const Literal = 2 pkg regexp/syntax, const MatchNL = 12 pkg regexp/syntax, const NonGreedy = 32 pkg regexp/syntax, const OneLine = 16 pkg regexp/syntax, const OpAlternate = 19 pkg regexp/syntax, const OpAnyChar = 6 pkg regexp/syntax, const OpAnyCharNotNL = 5 pkg regexp/syntax, const OpBeginLine = 7 pkg regexp/syntax, const OpBeginText = 9 pkg regexp/syntax, const OpCapture = 13 pkg regexp/syntax, const OpCharClass = 4 pkg regexp/syntax, const OpConcat = 18 pkg regexp/syntax, const OpEmptyMatch = 2 pkg regexp/syntax, const OpEndLine = 8 pkg regexp/syntax, const OpEndText = 10 pkg regexp/syntax, const OpLiteral = 3 pkg regexp/syntax, const OpNoMatch = 1 pkg regexp/syntax, const OpNoWordBoundary = 12 pkg regexp/syntax, const OpPlus = 15 pkg regexp/syntax, const OpQuest = 16 pkg regexp/syntax, const OpRepeat = 17 pkg regexp/syntax, const OpStar = 14 pkg regexp/syntax, const OpWordBoundary = 11 pkg regexp/syntax, const POSIX = 0 pkg regexp/syntax, const Perl = 212 pkg regexp/syntax, const PerlX = 64 pkg regexp/syntax, const Simple = 512 pkg regexp/syntax, const UnicodeGroups = 128 pkg regexp/syntax, const WasDollar = 256 pkg runtime (darwin-386), const GOARCH = "386" pkg runtime (darwin-386), const GOOS = "darwin" pkg runtime (darwin-386-cgo), const GOARCH = "386" pkg runtime (darwin-386-cgo), const GOOS = "darwin" pkg runtime (darwin-amd64), const GOARCH = "amd64" pkg runtime (darwin-amd64), const GOOS = "darwin" pkg runtime (darwin-amd64-cgo), const GOARCH = "amd64" pkg runtime (darwin-amd64-cgo), const GOOS = "darwin" pkg runtime (freebsd-386), const GOARCH = "386" pkg runtime (freebsd-386), const GOOS = "freebsd" pkg runtime (freebsd-386-cgo), const GOARCH = "386" pkg runtime (freebsd-386-cgo), const GOOS = "freebsd" pkg runtime (freebsd-amd64), const GOARCH = "amd64" pkg runtime (freebsd-amd64), const GOOS = "freebsd" pkg runtime (freebsd-amd64-cgo), const GOARCH = "amd64" pkg runtime (freebsd-amd64-cgo), const GOOS = "freebsd" pkg runtime (freebsd-arm), const GOARCH = "arm" pkg runtime (freebsd-arm), const GOOS = "freebsd" pkg runtime (freebsd-arm-cgo), const GOARCH = "arm" pkg runtime (freebsd-arm-cgo), const GOOS = "freebsd" pkg runtime (linux-386), const GOARCH = "386" pkg runtime (linux-386), const GOOS = "linux" pkg runtime (linux-386-cgo), const GOARCH = "386" pkg runtime (linux-386-cgo), const GOOS = "linux" pkg runtime (linux-amd64), const GOARCH = "amd64" pkg runtime (linux-amd64), const GOOS = "linux" pkg runtime (linux-amd64-cgo), const GOARCH = "amd64" pkg runtime (linux-amd64-cgo), const GOOS = "linux" pkg runtime (linux-arm), const GOARCH = "arm" pkg runtime (linux-arm), const GOOS = "linux" pkg runtime (linux-arm-cgo), const GOARCH = "arm" pkg runtime (linux-arm-cgo), const GOOS = "linux" pkg runtime (netbsd-386), const GOARCH = "386" pkg runtime (netbsd-386), const GOOS = "netbsd" pkg runtime (netbsd-386-cgo), const GOARCH = "386" pkg runtime (netbsd-386-cgo), const GOOS = "netbsd" pkg runtime (netbsd-amd64), const GOARCH = "amd64" pkg runtime (netbsd-amd64), const GOOS = "netbsd" pkg runtime (netbsd-amd64-cgo), const GOARCH = "amd64" pkg runtime (netbsd-amd64-cgo), const GOOS = "netbsd" pkg runtime (netbsd-arm), const GOARCH = "arm" pkg runtime (netbsd-arm), const GOOS = "netbsd" pkg runtime (netbsd-arm-cgo), const GOARCH = "arm" pkg runtime (netbsd-arm-cgo), const GOOS = "netbsd" pkg runtime (openbsd-386), const GOARCH = "386" pkg runtime (openbsd-386), const GOOS = "openbsd" pkg runtime (openbsd-386-cgo), const GOARCH = "386" pkg runtime (openbsd-386-cgo), const GOOS = "openbsd" pkg runtime (openbsd-amd64), const GOARCH = "amd64" pkg runtime (openbsd-amd64), const GOOS = "openbsd" pkg runtime (openbsd-amd64-cgo), const GOARCH = "amd64" pkg runtime (openbsd-amd64-cgo), const GOOS = "openbsd" pkg runtime (windows-386), const GOARCH = "386" pkg runtime (windows-386), const GOOS = "windows" pkg runtime (windows-amd64), const GOARCH = "amd64" pkg runtime (windows-amd64), const GOOS = "windows" pkg runtime, const Compiler = "gc" pkg runtime, func BlockProfile([]BlockProfileRecord) (int, bool) pkg runtime, func SetBlockProfileRate(int) pkg runtime, method (*BlockProfileRecord) Stack() []uintptr pkg runtime, type BlockProfileRecord struct pkg runtime, type BlockProfileRecord struct, Count int64 pkg runtime, type BlockProfileRecord struct, Cycles int64 pkg runtime, type BlockProfileRecord struct, embedded StackRecord pkg runtime/debug, func FreeOSMemory() pkg runtime/debug, func ReadGCStats(*GCStats) pkg runtime/debug, func SetGCPercent(int) int pkg runtime/debug, type GCStats struct pkg runtime/debug, type GCStats struct, LastGC time.Time pkg runtime/debug, type GCStats struct, NumGC int64 pkg runtime/debug, type GCStats struct, Pause []time.Duration pkg runtime/debug, type GCStats struct, PauseQuantiles []time.Duration pkg runtime/debug, type GCStats struct, PauseTotal time.Duration pkg sort, func Reverse(Interface) Interface pkg strconv, const IntSize = 64 pkg strings, func TrimPrefix(string, string) string pkg strings, func TrimSuffix(string, string) string pkg strings, method (*Reader) WriteTo(io.Writer) (int64, error) pkg syscall (darwin-386), const AF_APPLETALK = 16 pkg syscall (darwin-386), const AF_CCITT = 10 pkg syscall (darwin-386), const AF_CHAOS = 5 pkg syscall (darwin-386), const AF_CNT = 21 pkg syscall (darwin-386), const AF_COIP = 20 pkg syscall (darwin-386), const AF_DATAKIT = 9 pkg syscall (darwin-386), const AF_DECnet = 12 pkg syscall (darwin-386), const AF_DLI = 13 pkg syscall (darwin-386), const AF_E164 = 28 pkg syscall (darwin-386), const AF_ECMA = 8 pkg syscall (darwin-386), const AF_HYLINK = 15 pkg syscall (darwin-386), const AF_IEEE80211 = 37 pkg syscall (darwin-386), const AF_IMPLINK = 3 pkg syscall (darwin-386), const AF_INET6 = 30 pkg syscall (darwin-386), const AF_IPX = 23 pkg syscall (darwin-386), const AF_ISDN = 28 pkg syscall (darwin-386), const AF_ISO = 7 pkg syscall (darwin-386), const AF_LAT = 14 pkg syscall (darwin-386), const AF_LINK = 18 pkg syscall (darwin-386), const AF_LOCAL = 1 pkg syscall (darwin-386), const AF_MAX = 38 pkg syscall (darwin-386), const AF_NATM = 31 pkg syscall (darwin-386), const AF_NDRV = 27 pkg syscall (darwin-386), const AF_NETBIOS = 33 pkg syscall (darwin-386), const AF_NS = 6 pkg syscall (darwin-386), const AF_OSI = 7 pkg syscall (darwin-386), const AF_PPP = 34 pkg syscall (darwin-386), const AF_PUP = 4 pkg syscall (darwin-386), const AF_RESERVED_36 = 36 pkg syscall (darwin-386), const AF_ROUTE = 17 pkg syscall (darwin-386), const AF_SIP = 24 pkg syscall (darwin-386), const AF_SNA = 11 pkg syscall (darwin-386), const AF_SYSTEM = 32 pkg syscall (darwin-386), const B0 = 0 pkg syscall (darwin-386), const B0 ideal-int pkg syscall (darwin-386), const B110 = 110 pkg syscall (darwin-386), const B110 ideal-int pkg syscall (darwin-386), const B115200 = 115200 pkg syscall (darwin-386), const B115200 ideal-int pkg syscall (darwin-386), const B1200 = 1200 pkg syscall (darwin-386), const B1200 ideal-int pkg syscall (darwin-386), const B134 = 134 pkg syscall (darwin-386), const B134 ideal-int pkg syscall (darwin-386), const B14400 = 14400 pkg syscall (darwin-386), const B14400 ideal-int pkg syscall (darwin-386), const B150 = 150 pkg syscall (darwin-386), const B150 ideal-int pkg syscall (darwin-386), const B1800 = 1800 pkg syscall (darwin-386), const B1800 ideal-int pkg syscall (darwin-386), const B19200 = 19200 pkg syscall (darwin-386), const B19200 ideal-int pkg syscall (darwin-386), const B200 = 200 pkg syscall (darwin-386), const B200 ideal-int pkg syscall (darwin-386), const B230400 = 230400 pkg syscall (darwin-386), const B230400 ideal-int pkg syscall (darwin-386), const B2400 = 2400 pkg syscall (darwin-386), const B2400 ideal-int pkg syscall (darwin-386), const B28800 = 28800 pkg syscall (darwin-386), const B28800 ideal-int pkg syscall (darwin-386), const B300 = 300 pkg syscall (darwin-386), const B300 ideal-int pkg syscall (darwin-386), const B38400 = 38400 pkg syscall (darwin-386), const B38400 ideal-int pkg syscall (darwin-386), const B4800 = 4800 pkg syscall (darwin-386), const B4800 ideal-int pkg syscall (darwin-386), const B50 = 50 pkg syscall (darwin-386), const B50 ideal-int pkg syscall (darwin-386), const B57600 = 57600 pkg syscall (darwin-386), const B57600 ideal-int pkg syscall (darwin-386), const B600 = 600 pkg syscall (darwin-386), const B600 ideal-int pkg syscall (darwin-386), const B7200 = 7200 pkg syscall (darwin-386), const B7200 ideal-int pkg syscall (darwin-386), const B75 = 75 pkg syscall (darwin-386), const B75 ideal-int pkg syscall (darwin-386), const B76800 = 76800 pkg syscall (darwin-386), const B76800 ideal-int pkg syscall (darwin-386), const B9600 = 9600 pkg syscall (darwin-386), const B9600 ideal-int pkg syscall (darwin-386), const BIOCFLUSH = 536887912 pkg syscall (darwin-386), const BIOCGBLEN = 1074020966 pkg syscall (darwin-386), const BIOCGDLT = 1074020970 pkg syscall (darwin-386), const BIOCGDLTLIST = 3222028921 pkg syscall (darwin-386), const BIOCGETIF = 1075855979 pkg syscall (darwin-386), const BIOCGHDRCMPLT = 1074020980 pkg syscall (darwin-386), const BIOCGRSIG = 1074020978 pkg syscall (darwin-386), const BIOCGRTIMEOUT = 1074283118 pkg syscall (darwin-386), const BIOCGSEESENT = 1074020982 pkg syscall (darwin-386), const BIOCGSTATS = 1074283119 pkg syscall (darwin-386), const BIOCIMMEDIATE = 2147762800 pkg syscall (darwin-386), const BIOCPROMISC = 536887913 pkg syscall (darwin-386), const BIOCSBLEN = 3221504614 pkg syscall (darwin-386), const BIOCSDLT = 2147762808 pkg syscall (darwin-386), const BIOCSETF = 2148024935 pkg syscall (darwin-386), const BIOCSETIF = 2149597804 pkg syscall (darwin-386), const BIOCSHDRCMPLT = 2147762805 pkg syscall (darwin-386), const BIOCSRSIG = 2147762803 pkg syscall (darwin-386), const BIOCSRTIMEOUT = 2148024941 pkg syscall (darwin-386), const BIOCSSEESENT = 2147762807 pkg syscall (darwin-386), const BIOCVERSION = 1074020977 pkg syscall (darwin-386), const BPF_A = 16 pkg syscall (darwin-386), const BPF_ABS = 32 pkg syscall (darwin-386), const BPF_ADD = 0 pkg syscall (darwin-386), const BPF_ALIGNMENT = 4 pkg syscall (darwin-386), const BPF_ALU = 4 pkg syscall (darwin-386), const BPF_AND = 80 pkg syscall (darwin-386), const BPF_B = 16 pkg syscall (darwin-386), const BPF_DIV = 48 pkg syscall (darwin-386), const BPF_H = 8 pkg syscall (darwin-386), const BPF_IMM = 0 pkg syscall (darwin-386), const BPF_IND = 64 pkg syscall (darwin-386), const BPF_JA = 0 pkg syscall (darwin-386), const BPF_JEQ = 16 pkg syscall (darwin-386), const BPF_JGE = 48 pkg syscall (darwin-386), const BPF_JGT = 32 pkg syscall (darwin-386), const BPF_JMP = 5 pkg syscall (darwin-386), const BPF_JSET = 64 pkg syscall (darwin-386), const BPF_K = 0 pkg syscall (darwin-386), const BPF_LD = 0 pkg syscall (darwin-386), const BPF_LDX = 1 pkg syscall (darwin-386), const BPF_LEN = 128 pkg syscall (darwin-386), const BPF_LSH = 96 pkg syscall (darwin-386), const BPF_MAJOR_VERSION = 1 pkg syscall (darwin-386), const BPF_MAXBUFSIZE = 524288 pkg syscall (darwin-386), const BPF_MAXINSNS = 512 pkg syscall (darwin-386), const BPF_MEM = 96 pkg syscall (darwin-386), const BPF_MEMWORDS = 16 pkg syscall (darwin-386), const BPF_MINBUFSIZE = 32 pkg syscall (darwin-386), const BPF_MINOR_VERSION = 1 pkg syscall (darwin-386), const BPF_MISC = 7 pkg syscall (darwin-386), const BPF_MSH = 160 pkg syscall (darwin-386), const BPF_MUL = 32 pkg syscall (darwin-386), const BPF_NEG = 128 pkg syscall (darwin-386), const BPF_OR = 64 pkg syscall (darwin-386), const BPF_RELEASE = 199606 pkg syscall (darwin-386), const BPF_RET = 6 pkg syscall (darwin-386), const BPF_RSH = 112 pkg syscall (darwin-386), const BPF_ST = 2 pkg syscall (darwin-386), const BPF_STX = 3 pkg syscall (darwin-386), const BPF_SUB = 16 pkg syscall (darwin-386), const BPF_TAX = 0 pkg syscall (darwin-386), const BPF_TXA = 128 pkg syscall (darwin-386), const BPF_W = 0 pkg syscall (darwin-386), const BPF_X = 8 pkg syscall (darwin-386), const BRKINT = 2 pkg syscall (darwin-386), const BRKINT ideal-int pkg syscall (darwin-386), const CFLUSH = 15 pkg syscall (darwin-386), const CFLUSH ideal-int pkg syscall (darwin-386), const CLOCAL = 32768 pkg syscall (darwin-386), const CLOCAL ideal-int pkg syscall (darwin-386), const CREAD = 2048 pkg syscall (darwin-386), const CREAD ideal-int pkg syscall (darwin-386), const CS5 = 0 pkg syscall (darwin-386), const CS5 ideal-int pkg syscall (darwin-386), const CS6 = 256 pkg syscall (darwin-386), const CS6 ideal-int pkg syscall (darwin-386), const CS7 = 512 pkg syscall (darwin-386), const CS7 ideal-int pkg syscall (darwin-386), const CS8 = 768 pkg syscall (darwin-386), const CS8 ideal-int pkg syscall (darwin-386), const CSIZE = 768 pkg syscall (darwin-386), const CSIZE ideal-int pkg syscall (darwin-386), const CSTART = 17 pkg syscall (darwin-386), const CSTART ideal-int pkg syscall (darwin-386), const CSTATUS = 20 pkg syscall (darwin-386), const CSTATUS ideal-int pkg syscall (darwin-386), const CSTOP = 19 pkg syscall (darwin-386), const CSTOP ideal-int pkg syscall (darwin-386), const CSTOPB = 1024 pkg syscall (darwin-386), const CSTOPB ideal-int pkg syscall (darwin-386), const CSUSP = 26 pkg syscall (darwin-386), const CSUSP ideal-int pkg syscall (darwin-386), const CTL_MAXNAME = 12 pkg syscall (darwin-386), const CTL_NET = 4 pkg syscall (darwin-386), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (darwin-386), const DLT_ARCNET = 7 pkg syscall (darwin-386), const DLT_ATM_CLIP = 19 pkg syscall (darwin-386), const DLT_ATM_RFC1483 = 11 pkg syscall (darwin-386), const DLT_AX25 = 3 pkg syscall (darwin-386), const DLT_CHAOS = 5 pkg syscall (darwin-386), const DLT_CHDLC = 104 pkg syscall (darwin-386), const DLT_C_HDLC = 104 pkg syscall (darwin-386), const DLT_EN10MB = 1 pkg syscall (darwin-386), const DLT_EN3MB = 2 pkg syscall (darwin-386), const DLT_FDDI = 10 pkg syscall (darwin-386), const DLT_IEEE802 = 6 pkg syscall (darwin-386), const DLT_IEEE802_11 = 105 pkg syscall (darwin-386), const DLT_IEEE802_11_RADIO = 127 pkg syscall (darwin-386), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (darwin-386), const DLT_LINUX_SLL = 113 pkg syscall (darwin-386), const DLT_LOOP = 108 pkg syscall (darwin-386), const DLT_NULL = 0 pkg syscall (darwin-386), const DLT_PFLOG = 117 pkg syscall (darwin-386), const DLT_PFSYNC = 18 pkg syscall (darwin-386), const DLT_PPP = 9 pkg syscall (darwin-386), const DLT_PPP_BSDOS = 16 pkg syscall (darwin-386), const DLT_PPP_SERIAL = 50 pkg syscall (darwin-386), const DLT_PRONET = 4 pkg syscall (darwin-386), const DLT_RAW = 12 pkg syscall (darwin-386), const DLT_SLIP = 8 pkg syscall (darwin-386), const DLT_SLIP_BSDOS = 15 pkg syscall (darwin-386), const DT_BLK = 6 pkg syscall (darwin-386), const DT_CHR = 2 pkg syscall (darwin-386), const DT_DIR = 4 pkg syscall (darwin-386), const DT_FIFO = 1 pkg syscall (darwin-386), const DT_LNK = 10 pkg syscall (darwin-386), const DT_REG = 8 pkg syscall (darwin-386), const DT_SOCK = 12 pkg syscall (darwin-386), const DT_UNKNOWN = 0 pkg syscall (darwin-386), const DT_WHT = 14 pkg syscall (darwin-386), const E2BIG = 7 pkg syscall (darwin-386), const EACCES = 13 pkg syscall (darwin-386), const EADDRINUSE = 48 pkg syscall (darwin-386), const EADDRNOTAVAIL = 49 pkg syscall (darwin-386), const EAFNOSUPPORT = 47 pkg syscall (darwin-386), const EAGAIN = 35 pkg syscall (darwin-386), const EALREADY = 37 pkg syscall (darwin-386), const EAUTH = 80 pkg syscall (darwin-386), const EBADARCH = 86 pkg syscall (darwin-386), const EBADEXEC = 85 pkg syscall (darwin-386), const EBADF = 9 pkg syscall (darwin-386), const EBADMACHO = 88 pkg syscall (darwin-386), const EBADMSG = 94 pkg syscall (darwin-386), const EBADRPC = 72 pkg syscall (darwin-386), const EBUSY = 16 pkg syscall (darwin-386), const ECANCELED = 89 pkg syscall (darwin-386), const ECHILD = 10 pkg syscall (darwin-386), const ECHO = 8 pkg syscall (darwin-386), const ECHOCTL = 64 pkg syscall (darwin-386), const ECHOE = 2 pkg syscall (darwin-386), const ECHOK = 4 pkg syscall (darwin-386), const ECHOKE = 1 pkg syscall (darwin-386), const ECHONL = 16 pkg syscall (darwin-386), const ECHOPRT = 32 pkg syscall (darwin-386), const ECONNABORTED = 53 pkg syscall (darwin-386), const ECONNREFUSED = 61 pkg syscall (darwin-386), const ECONNRESET = 54 pkg syscall (darwin-386), const EDEADLK = 11 pkg syscall (darwin-386), const EDESTADDRREQ = 39 pkg syscall (darwin-386), const EDEVERR = 83 pkg syscall (darwin-386), const EDOM = 33 pkg syscall (darwin-386), const EDQUOT = 69 pkg syscall (darwin-386), const EEXIST = 17 pkg syscall (darwin-386), const EFAULT = 14 pkg syscall (darwin-386), const EFBIG = 27 pkg syscall (darwin-386), const EFTYPE = 79 pkg syscall (darwin-386), const EHOSTDOWN = 64 pkg syscall (darwin-386), const EHOSTUNREACH = 65 pkg syscall (darwin-386), const EIDRM = 90 pkg syscall (darwin-386), const EILSEQ = 92 pkg syscall (darwin-386), const EINPROGRESS = 36 pkg syscall (darwin-386), const EINTR = 4 pkg syscall (darwin-386), const EINVAL = 22 pkg syscall (darwin-386), const EIO = 5 pkg syscall (darwin-386), const EISCONN = 56 pkg syscall (darwin-386), const EISDIR = 21 pkg syscall (darwin-386), const ELAST = 105 pkg syscall (darwin-386), const ELOOP = 62 pkg syscall (darwin-386), const EMFILE = 24 pkg syscall (darwin-386), const EMLINK = 31 pkg syscall (darwin-386), const EMSGSIZE = 40 pkg syscall (darwin-386), const EMULTIHOP = 95 pkg syscall (darwin-386), const ENAMETOOLONG = 63 pkg syscall (darwin-386), const ENEEDAUTH = 81 pkg syscall (darwin-386), const ENETDOWN = 50 pkg syscall (darwin-386), const ENETRESET = 52 pkg syscall (darwin-386), const ENETUNREACH = 51 pkg syscall (darwin-386), const ENFILE = 23 pkg syscall (darwin-386), const ENOATTR = 93 pkg syscall (darwin-386), const ENOBUFS = 55 pkg syscall (darwin-386), const ENODATA = 96 pkg syscall (darwin-386), const ENODEV = 19 pkg syscall (darwin-386), const ENOEXEC = 8 pkg syscall (darwin-386), const ENOLCK = 77 pkg syscall (darwin-386), const ENOLINK = 97 pkg syscall (darwin-386), const ENOMEM = 12 pkg syscall (darwin-386), const ENOMSG = 91 pkg syscall (darwin-386), const ENOPOLICY = 103 pkg syscall (darwin-386), const ENOPROTOOPT = 42 pkg syscall (darwin-386), const ENOSPC = 28 pkg syscall (darwin-386), const ENOSR = 98 pkg syscall (darwin-386), const ENOSTR = 99 pkg syscall (darwin-386), const ENOSYS = 78 pkg syscall (darwin-386), const ENOTBLK = 15 pkg syscall (darwin-386), const ENOTCONN = 57 pkg syscall (darwin-386), const ENOTDIR = 20 pkg syscall (darwin-386), const ENOTEMPTY = 66 pkg syscall (darwin-386), const ENOTRECOVERABLE = 104 pkg syscall (darwin-386), const ENOTSOCK = 38 pkg syscall (darwin-386), const ENOTSUP = 45 pkg syscall (darwin-386), const ENOTTY = 25 pkg syscall (darwin-386), const ENXIO = 6 pkg syscall (darwin-386), const EOPNOTSUPP = 102 pkg syscall (darwin-386), const EOVERFLOW = 84 pkg syscall (darwin-386), const EOWNERDEAD = 105 pkg syscall (darwin-386), const EPERM = 1 pkg syscall (darwin-386), const EPFNOSUPPORT = 46 pkg syscall (darwin-386), const EPIPE = 32 pkg syscall (darwin-386), const EPROCLIM = 67 pkg syscall (darwin-386), const EPROCUNAVAIL = 76 pkg syscall (darwin-386), const EPROGMISMATCH = 75 pkg syscall (darwin-386), const EPROGUNAVAIL = 74 pkg syscall (darwin-386), const EPROTO = 100 pkg syscall (darwin-386), const EPROTONOSUPPORT = 43 pkg syscall (darwin-386), const EPROTOTYPE = 41 pkg syscall (darwin-386), const EPWROFF = 82 pkg syscall (darwin-386), const ERANGE = 34 pkg syscall (darwin-386), const EREMOTE = 71 pkg syscall (darwin-386), const EROFS = 30 pkg syscall (darwin-386), const ERPCMISMATCH = 73 pkg syscall (darwin-386), const ESHLIBVERS = 87 pkg syscall (darwin-386), const ESHUTDOWN = 58 pkg syscall (darwin-386), const ESOCKTNOSUPPORT = 44 pkg syscall (darwin-386), const ESPIPE = 29 pkg syscall (darwin-386), const ESRCH = 3 pkg syscall (darwin-386), const ESTALE = 70 pkg syscall (darwin-386), const ETIME = 101 pkg syscall (darwin-386), const ETIMEDOUT = 60 pkg syscall (darwin-386), const ETOOMANYREFS = 59 pkg syscall (darwin-386), const ETXTBSY = 26 pkg syscall (darwin-386), const EUSERS = 68 pkg syscall (darwin-386), const EVFILT_AIO = -3 pkg syscall (darwin-386), const EVFILT_FS = -9 pkg syscall (darwin-386), const EVFILT_MACHPORT = -8 pkg syscall (darwin-386), const EVFILT_PROC = -5 pkg syscall (darwin-386), const EVFILT_READ = -1 pkg syscall (darwin-386), const EVFILT_SIGNAL = -6 pkg syscall (darwin-386), const EVFILT_SYSCOUNT = 12 pkg syscall (darwin-386), const EVFILT_THREADMARKER = 12 pkg syscall (darwin-386), const EVFILT_TIMER = -7 pkg syscall (darwin-386), const EVFILT_USER = -10 pkg syscall (darwin-386), const EVFILT_VM = -12 pkg syscall (darwin-386), const EVFILT_VNODE = -4 pkg syscall (darwin-386), const EVFILT_WRITE = -2 pkg syscall (darwin-386), const EV_ADD = 1 pkg syscall (darwin-386), const EV_CLEAR = 32 pkg syscall (darwin-386), const EV_DELETE = 2 pkg syscall (darwin-386), const EV_DISABLE = 8 pkg syscall (darwin-386), const EV_DISPATCH = 128 pkg syscall (darwin-386), const EV_ENABLE = 4 pkg syscall (darwin-386), const EV_EOF = 32768 pkg syscall (darwin-386), const EV_ERROR = 16384 pkg syscall (darwin-386), const EV_FLAG0 = 4096 pkg syscall (darwin-386), const EV_FLAG1 = 8192 pkg syscall (darwin-386), const EV_ONESHOT = 16 pkg syscall (darwin-386), const EV_OOBAND = 8192 pkg syscall (darwin-386), const EV_POLL = 4096 pkg syscall (darwin-386), const EV_RECEIPT = 64 pkg syscall (darwin-386), const EV_SYSFLAGS = 61440 pkg syscall (darwin-386), const EWOULDBLOCK = 35 pkg syscall (darwin-386), const EXDEV = 18 pkg syscall (darwin-386), const EXTA = 19200 pkg syscall (darwin-386), const EXTB = 38400 pkg syscall (darwin-386), const EXTPROC = 2048 pkg syscall (darwin-386), const FD_CLOEXEC = 1 pkg syscall (darwin-386), const FD_SETSIZE = 1024 pkg syscall (darwin-386), const FLUSHO = 8388608 pkg syscall (darwin-386), const FLUSHO ideal-int pkg syscall (darwin-386), const F_ADDFILESIGS = 61 pkg syscall (darwin-386), const F_ADDSIGS = 59 pkg syscall (darwin-386), const F_ALLOCATEALL = 4 pkg syscall (darwin-386), const F_ALLOCATECONTIG = 2 pkg syscall (darwin-386), const F_CHKCLEAN = 41 pkg syscall (darwin-386), const F_DUPFD = 0 pkg syscall (darwin-386), const F_DUPFD_CLOEXEC = 67 pkg syscall (darwin-386), const F_FLUSH_DATA = 40 pkg syscall (darwin-386), const F_FREEZE_FS = 53 pkg syscall (darwin-386), const F_FULLFSYNC = 51 pkg syscall (darwin-386), const F_GETFD = 1 pkg syscall (darwin-386), const F_GETFL = 3 pkg syscall (darwin-386), const F_GETLK = 7 pkg syscall (darwin-386), const F_GETLKPID = 66 pkg syscall (darwin-386), const F_GETNOSIGPIPE = 74 pkg syscall (darwin-386), const F_GETOWN = 5 pkg syscall (darwin-386), const F_GETPATH = 50 pkg syscall (darwin-386), const F_GETPATH_MTMINFO = 71 pkg syscall (darwin-386), const F_GETPROTECTIONCLASS = 63 pkg syscall (darwin-386), const F_GLOBAL_NOCACHE = 55 pkg syscall (darwin-386), const F_LOG2PHYS = 49 pkg syscall (darwin-386), const F_LOG2PHYS_EXT = 65 pkg syscall (darwin-386), const F_MARKDEPENDENCY = 60 pkg syscall (darwin-386), const F_NOCACHE = 48 pkg syscall (darwin-386), const F_NODIRECT = 62 pkg syscall (darwin-386), const F_OK = 0 pkg syscall (darwin-386), const F_PATHPKG_CHECK = 52 pkg syscall (darwin-386), const F_PEOFPOSMODE = 3 pkg syscall (darwin-386), const F_PREALLOCATE = 42 pkg syscall (darwin-386), const F_RDADVISE = 44 pkg syscall (darwin-386), const F_RDAHEAD = 45 pkg syscall (darwin-386), const F_RDLCK = 1 pkg syscall (darwin-386), const F_READBOOTSTRAP = 46 pkg syscall (darwin-386), const F_SETBACKINGSTORE = 70 pkg syscall (darwin-386), const F_SETFD = 2 pkg syscall (darwin-386), const F_SETFL = 4 pkg syscall (darwin-386), const F_SETLK = 8 pkg syscall (darwin-386), const F_SETLKW = 9 pkg syscall (darwin-386), const F_SETNOSIGPIPE = 73 pkg syscall (darwin-386), const F_SETOWN = 6 pkg syscall (darwin-386), const F_SETPROTECTIONCLASS = 64 pkg syscall (darwin-386), const F_SETSIZE = 43 pkg syscall (darwin-386), const F_THAW_FS = 54 pkg syscall (darwin-386), const F_UNLCK = 2 pkg syscall (darwin-386), const F_VOLPOSMODE = 4 pkg syscall (darwin-386), const F_WRITEBOOTSTRAP = 47 pkg syscall (darwin-386), const F_WRLCK = 3 pkg syscall (darwin-386), const HUPCL = 16384 pkg syscall (darwin-386), const HUPCL ideal-int pkg syscall (darwin-386), const ICANON = 256 pkg syscall (darwin-386), const ICANON ideal-int pkg syscall (darwin-386), const ICRNL = 256 pkg syscall (darwin-386), const ICRNL ideal-int pkg syscall (darwin-386), const IEXTEN = 1024 pkg syscall (darwin-386), const IEXTEN ideal-int pkg syscall (darwin-386), const IFF_ALLMULTI = 512 pkg syscall (darwin-386), const IFF_ALTPHYS = 16384 pkg syscall (darwin-386), const IFF_DEBUG = 4 pkg syscall (darwin-386), const IFF_LINK0 = 4096 pkg syscall (darwin-386), const IFF_LINK1 = 8192 pkg syscall (darwin-386), const IFF_LINK2 = 16384 pkg syscall (darwin-386), const IFF_LOOPBACK = 8 pkg syscall (darwin-386), const IFF_MULTICAST = 32768 pkg syscall (darwin-386), const IFF_NOARP = 128 pkg syscall (darwin-386), const IFF_NOTRAILERS = 32 pkg syscall (darwin-386), const IFF_OACTIVE = 1024 pkg syscall (darwin-386), const IFF_POINTOPOINT = 16 pkg syscall (darwin-386), const IFF_PROMISC = 256 pkg syscall (darwin-386), const IFF_RUNNING = 64 pkg syscall (darwin-386), const IFF_SIMPLEX = 2048 pkg syscall (darwin-386), const IFNAMSIZ = 16 pkg syscall (darwin-386), const IFT_1822 = 2 pkg syscall (darwin-386), const IFT_AAL5 = 49 pkg syscall (darwin-386), const IFT_ARCNET = 35 pkg syscall (darwin-386), const IFT_ARCNETPLUS = 36 pkg syscall (darwin-386), const IFT_ATM = 37 pkg syscall (darwin-386), const IFT_BRIDGE = 209 pkg syscall (darwin-386), const IFT_CARP = 248 pkg syscall (darwin-386), const IFT_CELLULAR = 255 pkg syscall (darwin-386), const IFT_CEPT = 19 pkg syscall (darwin-386), const IFT_DS3 = 30 pkg syscall (darwin-386), const IFT_ENC = 244 pkg syscall (darwin-386), const IFT_EON = 25 pkg syscall (darwin-386), const IFT_ETHER = 6 pkg syscall (darwin-386), const IFT_FAITH = 56 pkg syscall (darwin-386), const IFT_FDDI = 15 pkg syscall (darwin-386), const IFT_FRELAY = 32 pkg syscall (darwin-386), const IFT_FRELAYDCE = 44 pkg syscall (darwin-386), const IFT_GIF = 55 pkg syscall (darwin-386), const IFT_HDH1822 = 3 pkg syscall (darwin-386), const IFT_HIPPI = 47 pkg syscall (darwin-386), const IFT_HSSI = 46 pkg syscall (darwin-386), const IFT_HY = 14 pkg syscall (darwin-386), const IFT_IEEE1394 = 144 pkg syscall (darwin-386), const IFT_IEEE8023ADLAG = 136 pkg syscall (darwin-386), const IFT_ISDNBASIC = 20 pkg syscall (darwin-386), const IFT_ISDNPRIMARY = 21 pkg syscall (darwin-386), const IFT_ISO88022LLC = 41 pkg syscall (darwin-386), const IFT_ISO88023 = 7 pkg syscall (darwin-386), const IFT_ISO88024 = 8 pkg syscall (darwin-386), const IFT_ISO88025 = 9 pkg syscall (darwin-386), const IFT_ISO88026 = 10 pkg syscall (darwin-386), const IFT_L2VLAN = 135 pkg syscall (darwin-386), const IFT_LAPB = 16 pkg syscall (darwin-386), const IFT_LOCALTALK = 42 pkg syscall (darwin-386), const IFT_LOOP = 24 pkg syscall (darwin-386), const IFT_MIOX25 = 38 pkg syscall (darwin-386), const IFT_MODEM = 48 pkg syscall (darwin-386), const IFT_NSIP = 27 pkg syscall (darwin-386), const IFT_OTHER = 1 pkg syscall (darwin-386), const IFT_P10 = 12 pkg syscall (darwin-386), const IFT_P80 = 13 pkg syscall (darwin-386), const IFT_PARA = 34 pkg syscall (darwin-386), const IFT_PDP = 255 pkg syscall (darwin-386), const IFT_PFLOG = 245 pkg syscall (darwin-386), const IFT_PFSYNC = 246 pkg syscall (darwin-386), const IFT_PPP = 23 pkg syscall (darwin-386), const IFT_PROPMUX = 54 pkg syscall (darwin-386), const IFT_PROPVIRTUAL = 53 pkg syscall (darwin-386), const IFT_PTPSERIAL = 22 pkg syscall (darwin-386), const IFT_RS232 = 33 pkg syscall (darwin-386), const IFT_SDLC = 17 pkg syscall (darwin-386), const IFT_SIP = 31 pkg syscall (darwin-386), const IFT_SLIP = 28 pkg syscall (darwin-386), const IFT_SMDSDXI = 43 pkg syscall (darwin-386), const IFT_SMDSICIP = 52 pkg syscall (darwin-386), const IFT_SONET = 39 pkg syscall (darwin-386), const IFT_SONETPATH = 50 pkg syscall (darwin-386), const IFT_SONETVT = 51 pkg syscall (darwin-386), const IFT_STARLAN = 11 pkg syscall (darwin-386), const IFT_STF = 57 pkg syscall (darwin-386), const IFT_T1 = 18 pkg syscall (darwin-386), const IFT_ULTRA = 29 pkg syscall (darwin-386), const IFT_V35 = 45 pkg syscall (darwin-386), const IFT_X25 = 5 pkg syscall (darwin-386), const IFT_X25DDN = 4 pkg syscall (darwin-386), const IFT_X25PLE = 40 pkg syscall (darwin-386), const IFT_XETHER = 26 pkg syscall (darwin-386), const IGNBRK = 1 pkg syscall (darwin-386), const IGNBRK ideal-int pkg syscall (darwin-386), const IGNCR = 128 pkg syscall (darwin-386), const IGNCR ideal-int pkg syscall (darwin-386), const IGNPAR = 4 pkg syscall (darwin-386), const IGNPAR ideal-int pkg syscall (darwin-386), const IMAXBEL = 8192 pkg syscall (darwin-386), const IMAXBEL ideal-int pkg syscall (darwin-386), const INLCR = 64 pkg syscall (darwin-386), const INLCR ideal-int pkg syscall (darwin-386), const INPCK = 16 pkg syscall (darwin-386), const INPCK ideal-int pkg syscall (darwin-386), const IN_CLASSA_HOST = 16777215 pkg syscall (darwin-386), const IN_CLASSA_MAX = 128 pkg syscall (darwin-386), const IN_CLASSA_NET = 4278190080 pkg syscall (darwin-386), const IN_CLASSA_NSHIFT = 24 pkg syscall (darwin-386), const IN_CLASSB_HOST = 65535 pkg syscall (darwin-386), const IN_CLASSB_MAX = 65536 pkg syscall (darwin-386), const IN_CLASSB_NET = 4294901760 pkg syscall (darwin-386), const IN_CLASSB_NSHIFT = 16 pkg syscall (darwin-386), const IN_CLASSC_HOST = 255 pkg syscall (darwin-386), const IN_CLASSC_NET = 4294967040 pkg syscall (darwin-386), const IN_CLASSC_NSHIFT = 8 pkg syscall (darwin-386), const IN_CLASSD_HOST = 268435455 pkg syscall (darwin-386), const IN_CLASSD_NET = 4026531840 pkg syscall (darwin-386), const IN_CLASSD_NSHIFT = 28 pkg syscall (darwin-386), const IN_LINKLOCALNETNUM = 2851995648 pkg syscall (darwin-386), const IN_LOOPBACKNET = 127 pkg syscall (darwin-386), const IPPROTO_3PC = 34 pkg syscall (darwin-386), const IPPROTO_ADFS = 68 pkg syscall (darwin-386), const IPPROTO_AH = 51 pkg syscall (darwin-386), const IPPROTO_AHIP = 61 pkg syscall (darwin-386), const IPPROTO_APES = 99 pkg syscall (darwin-386), const IPPROTO_ARGUS = 13 pkg syscall (darwin-386), const IPPROTO_AX25 = 93 pkg syscall (darwin-386), const IPPROTO_BHA = 49 pkg syscall (darwin-386), const IPPROTO_BLT = 30 pkg syscall (darwin-386), const IPPROTO_BRSATMON = 76 pkg syscall (darwin-386), const IPPROTO_CFTP = 62 pkg syscall (darwin-386), const IPPROTO_CHAOS = 16 pkg syscall (darwin-386), const IPPROTO_CMTP = 38 pkg syscall (darwin-386), const IPPROTO_CPHB = 73 pkg syscall (darwin-386), const IPPROTO_CPNX = 72 pkg syscall (darwin-386), const IPPROTO_DDP = 37 pkg syscall (darwin-386), const IPPROTO_DGP = 86 pkg syscall (darwin-386), const IPPROTO_DIVERT = 254 pkg syscall (darwin-386), const IPPROTO_DONE = 257 pkg syscall (darwin-386), const IPPROTO_DSTOPTS = 60 pkg syscall (darwin-386), const IPPROTO_EGP = 8 pkg syscall (darwin-386), const IPPROTO_EMCON = 14 pkg syscall (darwin-386), const IPPROTO_ENCAP = 98 pkg syscall (darwin-386), const IPPROTO_EON = 80 pkg syscall (darwin-386), const IPPROTO_ESP = 50 pkg syscall (darwin-386), const IPPROTO_ETHERIP = 97 pkg syscall (darwin-386), const IPPROTO_FRAGMENT = 44 pkg syscall (darwin-386), const IPPROTO_GGP = 3 pkg syscall (darwin-386), const IPPROTO_GMTP = 100 pkg syscall (darwin-386), const IPPROTO_GRE = 47 pkg syscall (darwin-386), const IPPROTO_HELLO = 63 pkg syscall (darwin-386), const IPPROTO_HMP = 20 pkg syscall (darwin-386), const IPPROTO_HOPOPTS = 0 pkg syscall (darwin-386), const IPPROTO_ICMP = 1 pkg syscall (darwin-386), const IPPROTO_ICMPV6 = 58 pkg syscall (darwin-386), const IPPROTO_IDP = 22 pkg syscall (darwin-386), const IPPROTO_IDPR = 35 pkg syscall (darwin-386), const IPPROTO_IDRP = 45 pkg syscall (darwin-386), const IPPROTO_IGMP = 2 pkg syscall (darwin-386), const IPPROTO_IGP = 85 pkg syscall (darwin-386), const IPPROTO_IGRP = 88 pkg syscall (darwin-386), const IPPROTO_IL = 40 pkg syscall (darwin-386), const IPPROTO_INLSP = 52 pkg syscall (darwin-386), const IPPROTO_INP = 32 pkg syscall (darwin-386), const IPPROTO_IPCOMP = 108 pkg syscall (darwin-386), const IPPROTO_IPCV = 71 pkg syscall (darwin-386), const IPPROTO_IPEIP = 94 pkg syscall (darwin-386), const IPPROTO_IPIP = 4 pkg syscall (darwin-386), const IPPROTO_IPPC = 67 pkg syscall (darwin-386), const IPPROTO_IPV4 = 4 pkg syscall (darwin-386), const IPPROTO_IRTP = 28 pkg syscall (darwin-386), const IPPROTO_KRYPTOLAN = 65 pkg syscall (darwin-386), const IPPROTO_LARP = 91 pkg syscall (darwin-386), const IPPROTO_LEAF1 = 25 pkg syscall (darwin-386), const IPPROTO_LEAF2 = 26 pkg syscall (darwin-386), const IPPROTO_MAX = 256 pkg syscall (darwin-386), const IPPROTO_MAXID = 52 pkg syscall (darwin-386), const IPPROTO_MEAS = 19 pkg syscall (darwin-386), const IPPROTO_MHRP = 48 pkg syscall (darwin-386), const IPPROTO_MICP = 95 pkg syscall (darwin-386), const IPPROTO_MTP = 92 pkg syscall (darwin-386), const IPPROTO_MUX = 18 pkg syscall (darwin-386), const IPPROTO_ND = 77 pkg syscall (darwin-386), const IPPROTO_NHRP = 54 pkg syscall (darwin-386), const IPPROTO_NONE = 59 pkg syscall (darwin-386), const IPPROTO_NSP = 31 pkg syscall (darwin-386), const IPPROTO_NVPII = 11 pkg syscall (darwin-386), const IPPROTO_OSPFIGP = 89 pkg syscall (darwin-386), const IPPROTO_PGM = 113 pkg syscall (darwin-386), const IPPROTO_PIGP = 9 pkg syscall (darwin-386), const IPPROTO_PIM = 103 pkg syscall (darwin-386), const IPPROTO_PRM = 21 pkg syscall (darwin-386), const IPPROTO_PUP = 12 pkg syscall (darwin-386), const IPPROTO_PVP = 75 pkg syscall (darwin-386), const IPPROTO_RAW = 255 pkg syscall (darwin-386), const IPPROTO_RCCMON = 10 pkg syscall (darwin-386), const IPPROTO_RDP = 27 pkg syscall (darwin-386), const IPPROTO_ROUTING = 43 pkg syscall (darwin-386), const IPPROTO_RSVP = 46 pkg syscall (darwin-386), const IPPROTO_RVD = 66 pkg syscall (darwin-386), const IPPROTO_SATEXPAK = 64 pkg syscall (darwin-386), const IPPROTO_SATMON = 69 pkg syscall (darwin-386), const IPPROTO_SCCSP = 96 pkg syscall (darwin-386), const IPPROTO_SCTP = 132 pkg syscall (darwin-386), const IPPROTO_SDRP = 42 pkg syscall (darwin-386), const IPPROTO_SEP = 33 pkg syscall (darwin-386), const IPPROTO_SRPC = 90 pkg syscall (darwin-386), const IPPROTO_ST = 7 pkg syscall (darwin-386), const IPPROTO_SVMTP = 82 pkg syscall (darwin-386), const IPPROTO_SWIPE = 53 pkg syscall (darwin-386), const IPPROTO_TCF = 87 pkg syscall (darwin-386), const IPPROTO_TP = 29 pkg syscall (darwin-386), const IPPROTO_TPXX = 39 pkg syscall (darwin-386), const IPPROTO_TRUNK1 = 23 pkg syscall (darwin-386), const IPPROTO_TRUNK2 = 24 pkg syscall (darwin-386), const IPPROTO_TTP = 84 pkg syscall (darwin-386), const IPPROTO_VINES = 83 pkg syscall (darwin-386), const IPPROTO_VISA = 70 pkg syscall (darwin-386), const IPPROTO_VMTP = 81 pkg syscall (darwin-386), const IPPROTO_WBEXPAK = 79 pkg syscall (darwin-386), const IPPROTO_WBMON = 78 pkg syscall (darwin-386), const IPPROTO_WSN = 74 pkg syscall (darwin-386), const IPPROTO_XNET = 15 pkg syscall (darwin-386), const IPPROTO_XTP = 36 pkg syscall (darwin-386), const IPV6_2292DSTOPTS = 23 pkg syscall (darwin-386), const IPV6_2292HOPLIMIT = 20 pkg syscall (darwin-386), const IPV6_2292HOPOPTS = 22 pkg syscall (darwin-386), const IPV6_2292NEXTHOP = 21 pkg syscall (darwin-386), const IPV6_2292PKTINFO = 19 pkg syscall (darwin-386), const IPV6_2292PKTOPTIONS = 25 pkg syscall (darwin-386), const IPV6_2292RTHDR = 24 pkg syscall (darwin-386), const IPV6_BINDV6ONLY = 27 pkg syscall (darwin-386), const IPV6_BOUND_IF = 125 pkg syscall (darwin-386), const IPV6_CHECKSUM = 26 pkg syscall (darwin-386), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (darwin-386), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (darwin-386), const IPV6_DEFHLIM = 64 pkg syscall (darwin-386), const IPV6_FAITH = 29 pkg syscall (darwin-386), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (darwin-386), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (darwin-386), const IPV6_FRAGTTL = 120 pkg syscall (darwin-386), const IPV6_FW_ADD = 30 pkg syscall (darwin-386), const IPV6_FW_DEL = 31 pkg syscall (darwin-386), const IPV6_FW_FLUSH = 32 pkg syscall (darwin-386), const IPV6_FW_GET = 34 pkg syscall (darwin-386), const IPV6_FW_ZERO = 33 pkg syscall (darwin-386), const IPV6_HLIMDEC = 1 pkg syscall (darwin-386), const IPV6_IPSEC_POLICY = 28 pkg syscall (darwin-386), const IPV6_JOIN_GROUP = 12 pkg syscall (darwin-386), const IPV6_LEAVE_GROUP = 13 pkg syscall (darwin-386), const IPV6_MAXHLIM = 255 pkg syscall (darwin-386), const IPV6_MAXOPTHDR = 2048 pkg syscall (darwin-386), const IPV6_MAXPACKET = 65535 pkg syscall (darwin-386), const IPV6_MAX_GROUP_SRC_FILTER = 512 pkg syscall (darwin-386), const IPV6_MAX_MEMBERSHIPS = 4095 pkg syscall (darwin-386), const IPV6_MAX_SOCK_SRC_FILTER = 128 pkg syscall (darwin-386), const IPV6_MIN_MEMBERSHIPS = 31 pkg syscall (darwin-386), const IPV6_MMTU = 1280 pkg syscall (darwin-386), const IPV6_MULTICAST_HOPS = 10 pkg syscall (darwin-386), const IPV6_MULTICAST_IF = 9 pkg syscall (darwin-386), const IPV6_MULTICAST_LOOP = 11 pkg syscall (darwin-386), const IPV6_PORTRANGE = 14 pkg syscall (darwin-386), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (darwin-386), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (darwin-386), const IPV6_PORTRANGE_LOW = 2 pkg syscall (darwin-386), const IPV6_RECVTCLASS = 35 pkg syscall (darwin-386), const IPV6_RTHDR_LOOSE = 0 pkg syscall (darwin-386), const IPV6_RTHDR_STRICT = 1 pkg syscall (darwin-386), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (darwin-386), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (darwin-386), const IPV6_TCLASS = 36 pkg syscall (darwin-386), const IPV6_UNICAST_HOPS = 4 pkg syscall (darwin-386), const IPV6_V6ONLY = 27 pkg syscall (darwin-386), const IPV6_VERSION = 96 pkg syscall (darwin-386), const IPV6_VERSION_MASK = 240 pkg syscall (darwin-386), const IP_ADD_MEMBERSHIP = 12 pkg syscall (darwin-386), const IP_ADD_SOURCE_MEMBERSHIP = 70 pkg syscall (darwin-386), const IP_BLOCK_SOURCE = 72 pkg syscall (darwin-386), const IP_BOUND_IF = 25 pkg syscall (darwin-386), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (darwin-386), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (darwin-386), const IP_DF = 16384 pkg syscall (darwin-386), const IP_DROP_MEMBERSHIP = 13 pkg syscall (darwin-386), const IP_DROP_SOURCE_MEMBERSHIP = 71 pkg syscall (darwin-386), const IP_DUMMYNET_CONFIGURE = 60 pkg syscall (darwin-386), const IP_DUMMYNET_DEL = 61 pkg syscall (darwin-386), const IP_DUMMYNET_FLUSH = 62 pkg syscall (darwin-386), const IP_DUMMYNET_GET = 64 pkg syscall (darwin-386), const IP_FAITH = 22 pkg syscall (darwin-386), const IP_FW_ADD = 40 pkg syscall (darwin-386), const IP_FW_DEL = 41 pkg syscall (darwin-386), const IP_FW_FLUSH = 42 pkg syscall (darwin-386), const IP_FW_GET = 44 pkg syscall (darwin-386), const IP_FW_RESETLOG = 45 pkg syscall (darwin-386), const IP_FW_ZERO = 43 pkg syscall (darwin-386), const IP_HDRINCL = 2 pkg syscall (darwin-386), const IP_IPSEC_POLICY = 21 pkg syscall (darwin-386), const IP_MAXPACKET = 65535 pkg syscall (darwin-386), const IP_MAX_GROUP_SRC_FILTER = 512 pkg syscall (darwin-386), const IP_MAX_MEMBERSHIPS = 4095 pkg syscall (darwin-386), const IP_MAX_SOCK_MUTE_FILTER = 128 pkg syscall (darwin-386), const IP_MAX_SOCK_SRC_FILTER = 128 pkg syscall (darwin-386), const IP_MF = 8192 pkg syscall (darwin-386), const IP_MIN_MEMBERSHIPS = 31 pkg syscall (darwin-386), const IP_MSFILTER = 74 pkg syscall (darwin-386), const IP_MSS = 576 pkg syscall (darwin-386), const IP_MULTICAST_IF = 9 pkg syscall (darwin-386), const IP_MULTICAST_IFINDEX = 66 pkg syscall (darwin-386), const IP_MULTICAST_LOOP = 11 pkg syscall (darwin-386), const IP_MULTICAST_TTL = 10 pkg syscall (darwin-386), const IP_MULTICAST_VIF = 14 pkg syscall (darwin-386), const IP_NAT__XXX = 55 pkg syscall (darwin-386), const IP_OFFMASK = 8191 pkg syscall (darwin-386), const IP_OLD_FW_ADD = 50 pkg syscall (darwin-386), const IP_OLD_FW_DEL = 51 pkg syscall (darwin-386), const IP_OLD_FW_FLUSH = 52 pkg syscall (darwin-386), const IP_OLD_FW_GET = 54 pkg syscall (darwin-386), const IP_OLD_FW_RESETLOG = 56 pkg syscall (darwin-386), const IP_OLD_FW_ZERO = 53 pkg syscall (darwin-386), const IP_OPTIONS = 1 pkg syscall (darwin-386), const IP_PKTINFO = 26 pkg syscall (darwin-386), const IP_PORTRANGE = 19 pkg syscall (darwin-386), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (darwin-386), const IP_PORTRANGE_HIGH = 1 pkg syscall (darwin-386), const IP_PORTRANGE_LOW = 2 pkg syscall (darwin-386), const IP_RECVDSTADDR = 7 pkg syscall (darwin-386), const IP_RECVIF = 20 pkg syscall (darwin-386), const IP_RECVOPTS = 5 pkg syscall (darwin-386), const IP_RECVPKTINFO = 26 pkg syscall (darwin-386), const IP_RECVRETOPTS = 6 pkg syscall (darwin-386), const IP_RECVTTL = 24 pkg syscall (darwin-386), const IP_RETOPTS = 8 pkg syscall (darwin-386), const IP_RF = 32768 pkg syscall (darwin-386), const IP_RSVP_OFF = 16 pkg syscall (darwin-386), const IP_RSVP_ON = 15 pkg syscall (darwin-386), const IP_RSVP_VIF_OFF = 18 pkg syscall (darwin-386), const IP_RSVP_VIF_ON = 17 pkg syscall (darwin-386), const IP_STRIPHDR = 23 pkg syscall (darwin-386), const IP_TOS = 3 pkg syscall (darwin-386), const IP_TRAFFIC_MGT_BACKGROUND = 65 pkg syscall (darwin-386), const IP_TTL = 4 pkg syscall (darwin-386), const IP_UNBLOCK_SOURCE = 73 pkg syscall (darwin-386), const ISIG = 128 pkg syscall (darwin-386), const ISIG ideal-int pkg syscall (darwin-386), const ISTRIP = 32 pkg syscall (darwin-386), const ISTRIP ideal-int pkg syscall (darwin-386), const IUTF8 = 16384 pkg syscall (darwin-386), const IUTF8 ideal-int pkg syscall (darwin-386), const IXANY = 2048 pkg syscall (darwin-386), const IXANY ideal-int pkg syscall (darwin-386), const IXOFF = 1024 pkg syscall (darwin-386), const IXOFF ideal-int pkg syscall (darwin-386), const IXON = 512 pkg syscall (darwin-386), const IXON ideal-int pkg syscall (darwin-386), const ImplementsGetwd = false pkg syscall (darwin-386), const LOCK_EX = 2 pkg syscall (darwin-386), const LOCK_NB = 4 pkg syscall (darwin-386), const LOCK_SH = 1 pkg syscall (darwin-386), const LOCK_UN = 8 pkg syscall (darwin-386), const MADV_CAN_REUSE = 9 pkg syscall (darwin-386), const MADV_DONTNEED = 4 pkg syscall (darwin-386), const MADV_FREE = 5 pkg syscall (darwin-386), const MADV_FREE_REUSABLE = 7 pkg syscall (darwin-386), const MADV_FREE_REUSE = 8 pkg syscall (darwin-386), const MADV_NORMAL = 0 pkg syscall (darwin-386), const MADV_RANDOM = 1 pkg syscall (darwin-386), const MADV_SEQUENTIAL = 2 pkg syscall (darwin-386), const MADV_WILLNEED = 3 pkg syscall (darwin-386), const MADV_ZERO_WIRED_PAGES = 6 pkg syscall (darwin-386), const MAP_ANON = 4096 pkg syscall (darwin-386), const MAP_COPY = 2 pkg syscall (darwin-386), const MAP_FILE = 0 pkg syscall (darwin-386), const MAP_FIXED = 16 pkg syscall (darwin-386), const MAP_HASSEMAPHORE = 512 pkg syscall (darwin-386), const MAP_JIT = 2048 pkg syscall (darwin-386), const MAP_NOCACHE = 1024 pkg syscall (darwin-386), const MAP_NOEXTEND = 256 pkg syscall (darwin-386), const MAP_NORESERVE = 64 pkg syscall (darwin-386), const MAP_PRIVATE = 2 pkg syscall (darwin-386), const MAP_RENAME = 32 pkg syscall (darwin-386), const MAP_RESERVED0080 = 128 pkg syscall (darwin-386), const MAP_SHARED = 1 pkg syscall (darwin-386), const MCL_CURRENT = 1 pkg syscall (darwin-386), const MCL_FUTURE = 2 pkg syscall (darwin-386), const MSG_CTRUNC = 32 pkg syscall (darwin-386), const MSG_DONTROUTE = 4 pkg syscall (darwin-386), const MSG_DONTWAIT = 128 pkg syscall (darwin-386), const MSG_EOF = 256 pkg syscall (darwin-386), const MSG_EOR = 8 pkg syscall (darwin-386), const MSG_FLUSH = 1024 pkg syscall (darwin-386), const MSG_HAVEMORE = 8192 pkg syscall (darwin-386), const MSG_HOLD = 2048 pkg syscall (darwin-386), const MSG_NEEDSA = 65536 pkg syscall (darwin-386), const MSG_OOB = 1 pkg syscall (darwin-386), const MSG_PEEK = 2 pkg syscall (darwin-386), const MSG_RCVMORE = 16384 pkg syscall (darwin-386), const MSG_SEND = 4096 pkg syscall (darwin-386), const MSG_TRUNC = 16 pkg syscall (darwin-386), const MSG_WAITALL = 64 pkg syscall (darwin-386), const MSG_WAITSTREAM = 512 pkg syscall (darwin-386), const MS_ASYNC = 1 pkg syscall (darwin-386), const MS_DEACTIVATE = 8 pkg syscall (darwin-386), const MS_INVALIDATE = 2 pkg syscall (darwin-386), const MS_KILLPAGES = 4 pkg syscall (darwin-386), const MS_SYNC = 16 pkg syscall (darwin-386), const NAME_MAX = 255 pkg syscall (darwin-386), const NET_RT_DUMP = 1 pkg syscall (darwin-386), const NET_RT_DUMP2 = 7 pkg syscall (darwin-386), const NET_RT_FLAGS = 2 pkg syscall (darwin-386), const NET_RT_IFLIST = 3 pkg syscall (darwin-386), const NET_RT_IFLIST2 = 6 pkg syscall (darwin-386), const NET_RT_MAXID = 10 pkg syscall (darwin-386), const NET_RT_STAT = 4 pkg syscall (darwin-386), const NET_RT_TRASH = 5 pkg syscall (darwin-386), const NOFLSH = 2147483648 pkg syscall (darwin-386), const NOFLSH ideal-int pkg syscall (darwin-386), const NOTE_ABSOLUTE = 8 pkg syscall (darwin-386), const NOTE_ATTRIB = 8 pkg syscall (darwin-386), const NOTE_CHILD = 4 pkg syscall (darwin-386), const NOTE_DELETE = 1 pkg syscall (darwin-386), const NOTE_EXEC = 536870912 pkg syscall (darwin-386), const NOTE_EXIT = 2147483648 pkg syscall (darwin-386), const NOTE_EXITSTATUS = 67108864 pkg syscall (darwin-386), const NOTE_EXTEND = 4 pkg syscall (darwin-386), const NOTE_FFAND = 1073741824 pkg syscall (darwin-386), const NOTE_FFCOPY = 3221225472 pkg syscall (darwin-386), const NOTE_FFCTRLMASK = 3221225472 pkg syscall (darwin-386), const NOTE_FFLAGSMASK = 16777215 pkg syscall (darwin-386), const NOTE_FFNOP = 0 pkg syscall (darwin-386), const NOTE_FFOR = 2147483648 pkg syscall (darwin-386), const NOTE_FORK = 1073741824 pkg syscall (darwin-386), const NOTE_LINK = 16 pkg syscall (darwin-386), const NOTE_LOWAT = 1 pkg syscall (darwin-386), const NOTE_NONE = 128 pkg syscall (darwin-386), const NOTE_NSECONDS = 4 pkg syscall (darwin-386), const NOTE_PCTRLMASK = -1048576 pkg syscall (darwin-386), const NOTE_PDATAMASK = 1048575 pkg syscall (darwin-386), const NOTE_REAP = 268435456 pkg syscall (darwin-386), const NOTE_RENAME = 32 pkg syscall (darwin-386), const NOTE_RESOURCEEND = 33554432 pkg syscall (darwin-386), const NOTE_REVOKE = 64 pkg syscall (darwin-386), const NOTE_SECONDS = 1 pkg syscall (darwin-386), const NOTE_SIGNAL = 134217728 pkg syscall (darwin-386), const NOTE_TRACK = 1 pkg syscall (darwin-386), const NOTE_TRACKERR = 2 pkg syscall (darwin-386), const NOTE_TRIGGER = 16777216 pkg syscall (darwin-386), const NOTE_USECONDS = 2 pkg syscall (darwin-386), const NOTE_VM_ERROR = 268435456 pkg syscall (darwin-386), const NOTE_VM_PRESSURE = 2147483648 pkg syscall (darwin-386), const NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 536870912 pkg syscall (darwin-386), const NOTE_VM_PRESSURE_TERMINATE = 1073741824 pkg syscall (darwin-386), const NOTE_WRITE = 2 pkg syscall (darwin-386), const OCRNL = 16 pkg syscall (darwin-386), const OCRNL ideal-int pkg syscall (darwin-386), const OFDEL = 131072 pkg syscall (darwin-386), const OFDEL ideal-int pkg syscall (darwin-386), const OFILL = 128 pkg syscall (darwin-386), const OFILL ideal-int pkg syscall (darwin-386), const ONLCR = 2 pkg syscall (darwin-386), const ONLCR ideal-int pkg syscall (darwin-386), const ONLRET = 64 pkg syscall (darwin-386), const ONLRET ideal-int pkg syscall (darwin-386), const ONOCR = 32 pkg syscall (darwin-386), const ONOCR ideal-int pkg syscall (darwin-386), const ONOEOT = 8 pkg syscall (darwin-386), const ONOEOT ideal-int pkg syscall (darwin-386), const OPOST = 1 pkg syscall (darwin-386), const OPOST ideal-int pkg syscall (darwin-386), const O_ACCMODE = 3 pkg syscall (darwin-386), const O_ALERT = 536870912 pkg syscall (darwin-386), const O_APPEND = 8 pkg syscall (darwin-386), const O_ASYNC = 64 pkg syscall (darwin-386), const O_CLOEXEC = 16777216 pkg syscall (darwin-386), const O_CREAT = 512 pkg syscall (darwin-386), const O_DIRECTORY = 1048576 pkg syscall (darwin-386), const O_DSYNC = 4194304 pkg syscall (darwin-386), const O_EVTONLY = 32768 pkg syscall (darwin-386), const O_EXCL = 2048 pkg syscall (darwin-386), const O_EXLOCK = 32 pkg syscall (darwin-386), const O_FSYNC = 128 pkg syscall (darwin-386), const O_NDELAY = 4 pkg syscall (darwin-386), const O_NOCTTY = 131072 pkg syscall (darwin-386), const O_NOFOLLOW = 256 pkg syscall (darwin-386), const O_NONBLOCK = 4 pkg syscall (darwin-386), const O_POPUP = 2147483648 pkg syscall (darwin-386), const O_SHLOCK = 16 pkg syscall (darwin-386), const O_SYMLINK = 2097152 pkg syscall (darwin-386), const O_SYNC = 128 pkg syscall (darwin-386), const O_TRUNC = 1024 pkg syscall (darwin-386), const PARENB = 4096 pkg syscall (darwin-386), const PARENB ideal-int pkg syscall (darwin-386), const PARMRK = 8 pkg syscall (darwin-386), const PARMRK ideal-int pkg syscall (darwin-386), const PARODD = 8192 pkg syscall (darwin-386), const PARODD ideal-int pkg syscall (darwin-386), const PENDIN = 536870912 pkg syscall (darwin-386), const PENDIN ideal-int pkg syscall (darwin-386), const PROT_EXEC = 4 pkg syscall (darwin-386), const PROT_NONE = 0 pkg syscall (darwin-386), const PROT_READ = 1 pkg syscall (darwin-386), const PROT_WRITE = 2 pkg syscall (darwin-386), const PTRACE_CONT = 7 pkg syscall (darwin-386), const PTRACE_KILL = 8 pkg syscall (darwin-386), const PTRACE_TRACEME = 0 pkg syscall (darwin-386), const PT_ATTACH = 10 pkg syscall (darwin-386), const PT_ATTACHEXC = 14 pkg syscall (darwin-386), const PT_CONTINUE = 7 pkg syscall (darwin-386), const PT_DENY_ATTACH = 31 pkg syscall (darwin-386), const PT_DETACH = 11 pkg syscall (darwin-386), const PT_FIRSTMACH = 32 pkg syscall (darwin-386), const PT_FORCEQUOTA = 30 pkg syscall (darwin-386), const PT_KILL = 8 pkg syscall (darwin-386), const PT_READ_D = 2 pkg syscall (darwin-386), const PT_READ_I = 1 pkg syscall (darwin-386), const PT_READ_U = 3 pkg syscall (darwin-386), const PT_SIGEXC = 12 pkg syscall (darwin-386), const PT_STEP = 9 pkg syscall (darwin-386), const PT_THUPDATE = 13 pkg syscall (darwin-386), const PT_TRACE_ME = 0 pkg syscall (darwin-386), const PT_WRITE_D = 5 pkg syscall (darwin-386), const PT_WRITE_I = 4 pkg syscall (darwin-386), const PT_WRITE_U = 6 pkg syscall (darwin-386), const RLIMIT_AS = 5 pkg syscall (darwin-386), const RLIMIT_CORE = 4 pkg syscall (darwin-386), const RLIMIT_CPU = 0 pkg syscall (darwin-386), const RLIMIT_DATA = 2 pkg syscall (darwin-386), const RLIMIT_FSIZE = 1 pkg syscall (darwin-386), const RLIMIT_NOFILE = 8 pkg syscall (darwin-386), const RLIMIT_STACK = 3 pkg syscall (darwin-386), const RLIM_INFINITY = 9223372036854775807 pkg syscall (darwin-386), const RTAX_AUTHOR = 6 pkg syscall (darwin-386), const RTAX_BRD = 7 pkg syscall (darwin-386), const RTAX_DST = 0 pkg syscall (darwin-386), const RTAX_GATEWAY = 1 pkg syscall (darwin-386), const RTAX_GENMASK = 3 pkg syscall (darwin-386), const RTAX_IFA = 5 pkg syscall (darwin-386), const RTAX_IFP = 4 pkg syscall (darwin-386), const RTAX_MAX = 8 pkg syscall (darwin-386), const RTAX_NETMASK = 2 pkg syscall (darwin-386), const RTA_AUTHOR = 64 pkg syscall (darwin-386), const RTA_BRD = 128 pkg syscall (darwin-386), const RTA_DST = 1 pkg syscall (darwin-386), const RTA_GATEWAY = 2 pkg syscall (darwin-386), const RTA_GENMASK = 8 pkg syscall (darwin-386), const RTA_IFA = 32 pkg syscall (darwin-386), const RTA_IFP = 16 pkg syscall (darwin-386), const RTA_NETMASK = 4 pkg syscall (darwin-386), const RTF_BLACKHOLE = 4096 pkg syscall (darwin-386), const RTF_BROADCAST = 4194304 pkg syscall (darwin-386), const RTF_CLONING = 256 pkg syscall (darwin-386), const RTF_CONDEMNED = 33554432 pkg syscall (darwin-386), const RTF_DELCLONE = 128 pkg syscall (darwin-386), const RTF_DONE = 64 pkg syscall (darwin-386), const RTF_DYNAMIC = 16 pkg syscall (darwin-386), const RTF_GATEWAY = 2 pkg syscall (darwin-386), const RTF_HOST = 4 pkg syscall (darwin-386), const RTF_IFREF = 67108864 pkg syscall (darwin-386), const RTF_IFSCOPE = 16777216 pkg syscall (darwin-386), const RTF_LLINFO = 1024 pkg syscall (darwin-386), const RTF_LOCAL = 2097152 pkg syscall (darwin-386), const RTF_MODIFIED = 32 pkg syscall (darwin-386), const RTF_MULTICAST = 8388608 pkg syscall (darwin-386), const RTF_PINNED = 1048576 pkg syscall (darwin-386), const RTF_PRCLONING = 65536 pkg syscall (darwin-386), const RTF_PROTO1 = 32768 pkg syscall (darwin-386), const RTF_PROTO2 = 16384 pkg syscall (darwin-386), const RTF_PROTO3 = 262144 pkg syscall (darwin-386), const RTF_REJECT = 8 pkg syscall (darwin-386), const RTF_STATIC = 2048 pkg syscall (darwin-386), const RTF_UP = 1 pkg syscall (darwin-386), const RTF_WASCLONED = 131072 pkg syscall (darwin-386), const RTF_XRESOLVE = 512 pkg syscall (darwin-386), const RTM_ADD = 1 pkg syscall (darwin-386), const RTM_CHANGE = 3 pkg syscall (darwin-386), const RTM_DELADDR = 13 pkg syscall (darwin-386), const RTM_DELETE = 2 pkg syscall (darwin-386), const RTM_DELMADDR = 16 pkg syscall (darwin-386), const RTM_GET = 4 pkg syscall (darwin-386), const RTM_GET2 = 20 pkg syscall (darwin-386), const RTM_IFINFO = 14 pkg syscall (darwin-386), const RTM_IFINFO2 = 18 pkg syscall (darwin-386), const RTM_LOCK = 8 pkg syscall (darwin-386), const RTM_LOSING = 5 pkg syscall (darwin-386), const RTM_MISS = 7 pkg syscall (darwin-386), const RTM_NEWADDR = 12 pkg syscall (darwin-386), const RTM_NEWMADDR = 15 pkg syscall (darwin-386), const RTM_NEWMADDR2 = 19 pkg syscall (darwin-386), const RTM_OLDADD = 9 pkg syscall (darwin-386), const RTM_OLDDEL = 10 pkg syscall (darwin-386), const RTM_REDIRECT = 6 pkg syscall (darwin-386), const RTM_RESOLVE = 11 pkg syscall (darwin-386), const RTM_RTTUNIT = 1000000 pkg syscall (darwin-386), const RTM_VERSION = 5 pkg syscall (darwin-386), const RTV_EXPIRE = 4 pkg syscall (darwin-386), const RTV_HOPCOUNT = 2 pkg syscall (darwin-386), const RTV_MTU = 1 pkg syscall (darwin-386), const RTV_RPIPE = 8 pkg syscall (darwin-386), const RTV_RTT = 64 pkg syscall (darwin-386), const RTV_RTTVAR = 128 pkg syscall (darwin-386), const RTV_SPIPE = 16 pkg syscall (darwin-386), const RTV_SSTHRESH = 32 pkg syscall (darwin-386), const RUSAGE_CHILDREN = -1 pkg syscall (darwin-386), const RUSAGE_SELF = 0 pkg syscall (darwin-386), const SCM_CREDS = 3 pkg syscall (darwin-386), const SCM_RIGHTS = 1 pkg syscall (darwin-386), const SCM_TIMESTAMP = 2 pkg syscall (darwin-386), const SCM_TIMESTAMP_MONOTONIC = 4 pkg syscall (darwin-386), const SIGBUS = 10 pkg syscall (darwin-386), const SIGCHLD = 20 pkg syscall (darwin-386), const SIGCONT = 19 pkg syscall (darwin-386), const SIGEMT = 7 pkg syscall (darwin-386), const SIGINFO = 29 pkg syscall (darwin-386), const SIGIO = 23 pkg syscall (darwin-386), const SIGIOT = 6 pkg syscall (darwin-386), const SIGPROF = 27 pkg syscall (darwin-386), const SIGSTOP = 17 pkg syscall (darwin-386), const SIGSYS = 12 pkg syscall (darwin-386), const SIGTSTP = 18 pkg syscall (darwin-386), const SIGTTIN = 21 pkg syscall (darwin-386), const SIGTTOU = 22 pkg syscall (darwin-386), const SIGURG = 16 pkg syscall (darwin-386), const SIGUSR1 = 30 pkg syscall (darwin-386), const SIGUSR2 = 31 pkg syscall (darwin-386), const SIGVTALRM = 26 pkg syscall (darwin-386), const SIGWINCH = 28 pkg syscall (darwin-386), const SIGXCPU = 24 pkg syscall (darwin-386), const SIGXFSZ = 25 pkg syscall (darwin-386), const SIOCADDMULTI = 2149607729 pkg syscall (darwin-386), const SIOCAIFADDR = 2151704858 pkg syscall (darwin-386), const SIOCALIFADDR = 2165860637 pkg syscall (darwin-386), const SIOCARPIPLL = 3223349544 pkg syscall (darwin-386), const SIOCATMARK = 1074033415 pkg syscall (darwin-386), const SIOCAUTOADDR = 3223349542 pkg syscall (darwin-386), const SIOCAUTONETMASK = 2149607719 pkg syscall (darwin-386), const SIOCDELMULTI = 2149607730 pkg syscall (darwin-386), const SIOCDIFADDR = 2149607705 pkg syscall (darwin-386), const SIOCDIFPHYADDR = 2149607745 pkg syscall (darwin-386), const SIOCDLIFADDR = 2165860639 pkg syscall (darwin-386), const SIOCGDRVSPEC = 3223087483 pkg syscall (darwin-386), const SIOCGETSGCNT = 3222565404 pkg syscall (darwin-386), const SIOCGETVIFCNT = 3222565403 pkg syscall (darwin-386), const SIOCGETVLAN = 3223349631 pkg syscall (darwin-386), const SIOCGHIWAT = 1074033409 pkg syscall (darwin-386), const SIOCGIFADDR = 3223349537 pkg syscall (darwin-386), const SIOCGIFALTMTU = 3223349576 pkg syscall (darwin-386), const SIOCGIFASYNCMAP = 3223349628 pkg syscall (darwin-386), const SIOCGIFBOND = 3223349575 pkg syscall (darwin-386), const SIOCGIFBRDADDR = 3223349539 pkg syscall (darwin-386), const SIOCGIFCAP = 3223349595 pkg syscall (darwin-386), const SIOCGIFCONF = 3221776676 pkg syscall (darwin-386), const SIOCGIFDEVMTU = 3223349572 pkg syscall (darwin-386), const SIOCGIFDSTADDR = 3223349538 pkg syscall (darwin-386), const SIOCGIFFLAGS = 3223349521 pkg syscall (darwin-386), const SIOCGIFGENERIC = 3223349562 pkg syscall (darwin-386), const SIOCGIFKPI = 3223349639 pkg syscall (darwin-386), const SIOCGIFMAC = 3223349634 pkg syscall (darwin-386), const SIOCGIFMEDIA = 3223873848 pkg syscall (darwin-386), const SIOCGIFMETRIC = 3223349527 pkg syscall (darwin-386), const SIOCGIFMTU = 3223349555 pkg syscall (darwin-386), const SIOCGIFNETMASK = 3223349541 pkg syscall (darwin-386), const SIOCGIFPDSTADDR = 3223349568 pkg syscall (darwin-386), const SIOCGIFPHYS = 3223349557 pkg syscall (darwin-386), const SIOCGIFPSRCADDR = 3223349567 pkg syscall (darwin-386), const SIOCGIFSTATUS = 3274795325 pkg syscall (darwin-386), const SIOCGIFVLAN = 3223349631 pkg syscall (darwin-386), const SIOCGIFWAKEFLAGS = 3223349640 pkg syscall (darwin-386), const SIOCGLIFADDR = 3239602462 pkg syscall (darwin-386), const SIOCGLIFPHYADDR = 3239602499 pkg syscall (darwin-386), const SIOCGLOWAT = 1074033411 pkg syscall (darwin-386), const SIOCGPGRP = 1074033417 pkg syscall (darwin-386), const SIOCIFCREATE = 3223349624 pkg syscall (darwin-386), const SIOCIFCREATE2 = 3223349626 pkg syscall (darwin-386), const SIOCIFDESTROY = 2149607801 pkg syscall (darwin-386), const SIOCRSLVMULTI = 3221776699 pkg syscall (darwin-386), const SIOCSDRVSPEC = 2149345659 pkg syscall (darwin-386), const SIOCSETVLAN = 2149607806 pkg syscall (darwin-386), const SIOCSHIWAT = 2147775232 pkg syscall (darwin-386), const SIOCSIFADDR = 2149607692 pkg syscall (darwin-386), const SIOCSIFALTMTU = 2149607749 pkg syscall (darwin-386), const SIOCSIFASYNCMAP = 2149607805 pkg syscall (darwin-386), const SIOCSIFBOND = 2149607750 pkg syscall (darwin-386), const SIOCSIFBRDADDR = 2149607699 pkg syscall (darwin-386), const SIOCSIFCAP = 2149607770 pkg syscall (darwin-386), const SIOCSIFDSTADDR = 2149607694 pkg syscall (darwin-386), const SIOCSIFFLAGS = 2149607696 pkg syscall (darwin-386), const SIOCSIFGENERIC = 2149607737 pkg syscall (darwin-386), const SIOCSIFKPI = 2149607814 pkg syscall (darwin-386), const SIOCSIFLLADDR = 2149607740 pkg syscall (darwin-386), const SIOCSIFMAC = 2149607811 pkg syscall (darwin-386), const SIOCSIFMEDIA = 3223349559 pkg syscall (darwin-386), const SIOCSIFMETRIC = 2149607704 pkg syscall (darwin-386), const SIOCSIFMTU = 2149607732 pkg syscall (darwin-386), const SIOCSIFNETMASK = 2149607702 pkg syscall (darwin-386), const SIOCSIFPHYADDR = 2151704894 pkg syscall (darwin-386), const SIOCSIFPHYS = 2149607734 pkg syscall (darwin-386), const SIOCSIFVLAN = 2149607806 pkg syscall (darwin-386), const SIOCSLIFPHYADDR = 2165860674 pkg syscall (darwin-386), const SIOCSLOWAT = 2147775234 pkg syscall (darwin-386), const SIOCSPGRP = 2147775240 pkg syscall (darwin-386), const SOCK_MAXADDRLEN = 255 pkg syscall (darwin-386), const SOCK_RDM = 4 pkg syscall (darwin-386), const SOL_SOCKET = 65535 pkg syscall (darwin-386), const SOMAXCONN = 128 pkg syscall (darwin-386), const SO_ACCEPTCONN = 2 pkg syscall (darwin-386), const SO_BROADCAST = 32 pkg syscall (darwin-386), const SO_DEBUG = 1 pkg syscall (darwin-386), const SO_DONTROUTE = 16 pkg syscall (darwin-386), const SO_DONTTRUNC = 8192 pkg syscall (darwin-386), const SO_ERROR = 4103 pkg syscall (darwin-386), const SO_KEEPALIVE = 8 pkg syscall (darwin-386), const SO_LABEL = 4112 pkg syscall (darwin-386), const SO_LINGER = 128 pkg syscall (darwin-386), const SO_LINGER_SEC = 4224 pkg syscall (darwin-386), const SO_NKE = 4129 pkg syscall (darwin-386), const SO_NOADDRERR = 4131 pkg syscall (darwin-386), const SO_NOSIGPIPE = 4130 pkg syscall (darwin-386), const SO_NOTIFYCONFLICT = 4134 pkg syscall (darwin-386), const SO_NP_EXTENSIONS = 4227 pkg syscall (darwin-386), const SO_NREAD = 4128 pkg syscall (darwin-386), const SO_NWRITE = 4132 pkg syscall (darwin-386), const SO_OOBINLINE = 256 pkg syscall (darwin-386), const SO_PEERLABEL = 4113 pkg syscall (darwin-386), const SO_RANDOMPORT = 4226 pkg syscall (darwin-386), const SO_RCVBUF = 4098 pkg syscall (darwin-386), const SO_RCVLOWAT = 4100 pkg syscall (darwin-386), const SO_RCVTIMEO = 4102 pkg syscall (darwin-386), const SO_RESTRICTIONS = 4225 pkg syscall (darwin-386), const SO_RESTRICT_DENYIN = 1 pkg syscall (darwin-386), const SO_RESTRICT_DENYOUT = 2 pkg syscall (darwin-386), const SO_RESTRICT_DENYSET = 2147483648 pkg syscall (darwin-386), const SO_REUSEADDR = 4 pkg syscall (darwin-386), const SO_REUSEPORT = 512 pkg syscall (darwin-386), const SO_REUSESHAREUID = 4133 pkg syscall (darwin-386), const SO_SNDBUF = 4097 pkg syscall (darwin-386), const SO_SNDLOWAT = 4099 pkg syscall (darwin-386), const SO_SNDTIMEO = 4101 pkg syscall (darwin-386), const SO_TIMESTAMP = 1024 pkg syscall (darwin-386), const SO_TIMESTAMP_MONOTONIC = 2048 pkg syscall (darwin-386), const SO_TYPE = 4104 pkg syscall (darwin-386), const SO_UPCALLCLOSEWAIT = 4135 pkg syscall (darwin-386), const SO_USELOOPBACK = 64 pkg syscall (darwin-386), const SO_WANTMORE = 16384 pkg syscall (darwin-386), const SO_WANTOOBFLAG = 32768 pkg syscall (darwin-386), const SYS_ACCEPT = 30 pkg syscall (darwin-386), const SYS_ACCEPT_NOCANCEL = 404 pkg syscall (darwin-386), const SYS_ACCESS = 33 pkg syscall (darwin-386), const SYS_ACCESS_EXTENDED = 284 pkg syscall (darwin-386), const SYS_ACCT = 51 pkg syscall (darwin-386), const SYS_ADD_PROFIL = 176 pkg syscall (darwin-386), const SYS_ADJTIME = 140 pkg syscall (darwin-386), const SYS_AIO_CANCEL = 316 pkg syscall (darwin-386), const SYS_AIO_ERROR = 317 pkg syscall (darwin-386), const SYS_AIO_FSYNC = 313 pkg syscall (darwin-386), const SYS_AIO_READ = 318 pkg syscall (darwin-386), const SYS_AIO_RETURN = 314 pkg syscall (darwin-386), const SYS_AIO_SUSPEND = 315 pkg syscall (darwin-386), const SYS_AIO_SUSPEND_NOCANCEL = 421 pkg syscall (darwin-386), const SYS_AIO_WRITE = 319 pkg syscall (darwin-386), const SYS_ATGETMSG = 207 pkg syscall (darwin-386), const SYS_ATPGETREQ = 211 pkg syscall (darwin-386), const SYS_ATPGETRSP = 212 pkg syscall (darwin-386), const SYS_ATPSNDREQ = 209 pkg syscall (darwin-386), const SYS_ATPSNDRSP = 210 pkg syscall (darwin-386), const SYS_ATPUTMSG = 208 pkg syscall (darwin-386), const SYS_ATSOCKET = 206 pkg syscall (darwin-386), const SYS_AUDIT = 350 pkg syscall (darwin-386), const SYS_AUDITCTL = 359 pkg syscall (darwin-386), const SYS_AUDITON = 351 pkg syscall (darwin-386), const SYS_AUDIT_SESSION_JOIN = 429 pkg syscall (darwin-386), const SYS_AUDIT_SESSION_PORT = 432 pkg syscall (darwin-386), const SYS_AUDIT_SESSION_SELF = 428 pkg syscall (darwin-386), const SYS_BIND = 104 pkg syscall (darwin-386), const SYS_BSDTHREAD_CREATE = 360 pkg syscall (darwin-386), const SYS_BSDTHREAD_REGISTER = 366 pkg syscall (darwin-386), const SYS_BSDTHREAD_TERMINATE = 361 pkg syscall (darwin-386), const SYS_CHDIR = 12 pkg syscall (darwin-386), const SYS_CHFLAGS = 34 pkg syscall (darwin-386), const SYS_CHMOD = 15 pkg syscall (darwin-386), const SYS_CHMOD_EXTENDED = 282 pkg syscall (darwin-386), const SYS_CHOWN = 16 pkg syscall (darwin-386), const SYS_CHROOT = 61 pkg syscall (darwin-386), const SYS_CHUD = 185 pkg syscall (darwin-386), const SYS_CLOSE = 6 pkg syscall (darwin-386), const SYS_CLOSE_NOCANCEL = 399 pkg syscall (darwin-386), const SYS_CONNECT = 98 pkg syscall (darwin-386), const SYS_CONNECT_NOCANCEL = 409 pkg syscall (darwin-386), const SYS_COPYFILE = 227 pkg syscall (darwin-386), const SYS_CSOPS = 169 pkg syscall (darwin-386), const SYS_DELETE = 226 pkg syscall (darwin-386), const SYS_DUP = 41 pkg syscall (darwin-386), const SYS_DUP2 = 90 pkg syscall (darwin-386), const SYS_EXCHANGEDATA = 223 pkg syscall (darwin-386), const SYS_EXECVE = 59 pkg syscall (darwin-386), const SYS_EXIT = 1 pkg syscall (darwin-386), const SYS_FCHDIR = 13 pkg syscall (darwin-386), const SYS_FCHFLAGS = 35 pkg syscall (darwin-386), const SYS_FCHMOD = 124 pkg syscall (darwin-386), const SYS_FCHMOD_EXTENDED = 283 pkg syscall (darwin-386), const SYS_FCHOWN = 123 pkg syscall (darwin-386), const SYS_FCNTL = 92 pkg syscall (darwin-386), const SYS_FCNTL_NOCANCEL = 406 pkg syscall (darwin-386), const SYS_FDATASYNC = 187 pkg syscall (darwin-386), const SYS_FFSCTL = 245 pkg syscall (darwin-386), const SYS_FGETATTRLIST = 228 pkg syscall (darwin-386), const SYS_FGETXATTR = 235 pkg syscall (darwin-386), const SYS_FHOPEN = 248 pkg syscall (darwin-386), const SYS_FILEPORT_MAKEFD = 431 pkg syscall (darwin-386), const SYS_FILEPORT_MAKEPORT = 430 pkg syscall (darwin-386), const SYS_FLISTXATTR = 241 pkg syscall (darwin-386), const SYS_FLOCK = 131 pkg syscall (darwin-386), const SYS_FORK = 2 pkg syscall (darwin-386), const SYS_FPATHCONF = 192 pkg syscall (darwin-386), const SYS_FREMOVEXATTR = 239 pkg syscall (darwin-386), const SYS_FSCTL = 242 pkg syscall (darwin-386), const SYS_FSETATTRLIST = 229 pkg syscall (darwin-386), const SYS_FSETXATTR = 237 pkg syscall (darwin-386), const SYS_FSGETPATH = 427 pkg syscall (darwin-386), const SYS_FSTAT = 189 pkg syscall (darwin-386), const SYS_FSTAT64 = 339 pkg syscall (darwin-386), const SYS_FSTAT64_EXTENDED = 343 pkg syscall (darwin-386), const SYS_FSTATFS = 158 pkg syscall (darwin-386), const SYS_FSTATFS64 = 346 pkg syscall (darwin-386), const SYS_FSTATV = 219 pkg syscall (darwin-386), const SYS_FSTAT_EXTENDED = 281 pkg syscall (darwin-386), const SYS_FSYNC = 95 pkg syscall (darwin-386), const SYS_FSYNC_NOCANCEL = 408 pkg syscall (darwin-386), const SYS_FTRUNCATE = 201 pkg syscall (darwin-386), const SYS_FUTIMES = 139 pkg syscall (darwin-386), const SYS_GETATTRLIST = 220 pkg syscall (darwin-386), const SYS_GETAUDIT = 355 pkg syscall (darwin-386), const SYS_GETAUDIT_ADDR = 357 pkg syscall (darwin-386), const SYS_GETAUID = 353 pkg syscall (darwin-386), const SYS_GETDIRENTRIES = 196 pkg syscall (darwin-386), const SYS_GETDIRENTRIES64 = 344 pkg syscall (darwin-386), const SYS_GETDIRENTRIESATTR = 222 pkg syscall (darwin-386), const SYS_GETDTABLESIZE = 89 pkg syscall (darwin-386), const SYS_GETEGID = 43 pkg syscall (darwin-386), const SYS_GETEUID = 25 pkg syscall (darwin-386), const SYS_GETFH = 161 pkg syscall (darwin-386), const SYS_GETFSSTAT = 18 pkg syscall (darwin-386), const SYS_GETFSSTAT64 = 347 pkg syscall (darwin-386), const SYS_GETGID = 47 pkg syscall (darwin-386), const SYS_GETGROUPS = 79 pkg syscall (darwin-386), const SYS_GETHOSTUUID = 142 pkg syscall (darwin-386), const SYS_GETITIMER = 86 pkg syscall (darwin-386), const SYS_GETLCID = 395 pkg syscall (darwin-386), const SYS_GETLOGIN = 49 pkg syscall (darwin-386), const SYS_GETPEERNAME = 31 pkg syscall (darwin-386), const SYS_GETPGID = 151 pkg syscall (darwin-386), const SYS_GETPGRP = 81 pkg syscall (darwin-386), const SYS_GETPID = 20 pkg syscall (darwin-386), const SYS_GETPPID = 39 pkg syscall (darwin-386), const SYS_GETPRIORITY = 100 pkg syscall (darwin-386), const SYS_GETRLIMIT = 194 pkg syscall (darwin-386), const SYS_GETRUSAGE = 117 pkg syscall (darwin-386), const SYS_GETSGROUPS = 288 pkg syscall (darwin-386), const SYS_GETSID = 310 pkg syscall (darwin-386), const SYS_GETSOCKNAME = 32 pkg syscall (darwin-386), const SYS_GETSOCKOPT = 118 pkg syscall (darwin-386), const SYS_GETTID = 286 pkg syscall (darwin-386), const SYS_GETTIMEOFDAY = 116 pkg syscall (darwin-386), const SYS_GETUID = 24 pkg syscall (darwin-386), const SYS_GETWGROUPS = 290 pkg syscall (darwin-386), const SYS_GETXATTR = 234 pkg syscall (darwin-386), const SYS_IDENTITYSVC = 293 pkg syscall (darwin-386), const SYS_INITGROUPS = 243 pkg syscall (darwin-386), const SYS_IOCTL = 54 pkg syscall (darwin-386), const SYS_IOPOLICYSYS = 322 pkg syscall (darwin-386), const SYS_ISSETUGID = 327 pkg syscall (darwin-386), const SYS_KDEBUG_TRACE = 180 pkg syscall (darwin-386), const SYS_KEVENT = 363 pkg syscall (darwin-386), const SYS_KEVENT64 = 369 pkg syscall (darwin-386), const SYS_KILL = 37 pkg syscall (darwin-386), const SYS_KQUEUE = 362 pkg syscall (darwin-386), const SYS_LCHOWN = 364 pkg syscall (darwin-386), const SYS_LINK = 9 pkg syscall (darwin-386), const SYS_LIO_LISTIO = 320 pkg syscall (darwin-386), const SYS_LISTEN = 106 pkg syscall (darwin-386), const SYS_LISTXATTR = 240 pkg syscall (darwin-386), const SYS_LSEEK = 199 pkg syscall (darwin-386), const SYS_LSTAT = 190 pkg syscall (darwin-386), const SYS_LSTAT64 = 340 pkg syscall (darwin-386), const SYS_LSTAT64_EXTENDED = 342 pkg syscall (darwin-386), const SYS_LSTATV = 218 pkg syscall (darwin-386), const SYS_LSTAT_EXTENDED = 280 pkg syscall (darwin-386), const SYS_MADVISE = 75 pkg syscall (darwin-386), const SYS_MAXSYSCALL = 439 pkg syscall (darwin-386), const SYS_MINCORE = 78 pkg syscall (darwin-386), const SYS_MINHERIT = 250 pkg syscall (darwin-386), const SYS_MKCOMPLEX = 216 pkg syscall (darwin-386), const SYS_MKDIR = 136 pkg syscall (darwin-386), const SYS_MKDIR_EXTENDED = 292 pkg syscall (darwin-386), const SYS_MKFIFO = 132 pkg syscall (darwin-386), const SYS_MKFIFO_EXTENDED = 291 pkg syscall (darwin-386), const SYS_MKNOD = 14 pkg syscall (darwin-386), const SYS_MLOCK = 203 pkg syscall (darwin-386), const SYS_MLOCKALL = 324 pkg syscall (darwin-386), const SYS_MMAP = 197 pkg syscall (darwin-386), const SYS_MODWATCH = 233 pkg syscall (darwin-386), const SYS_MOUNT = 167 pkg syscall (darwin-386), const SYS_MPROTECT = 74 pkg syscall (darwin-386), const SYS_MSGCTL = 258 pkg syscall (darwin-386), const SYS_MSGGET = 259 pkg syscall (darwin-386), const SYS_MSGRCV = 261 pkg syscall (darwin-386), const SYS_MSGRCV_NOCANCEL = 419 pkg syscall (darwin-386), const SYS_MSGSND = 260 pkg syscall (darwin-386), const SYS_MSGSND_NOCANCEL = 418 pkg syscall (darwin-386), const SYS_MSGSYS = 252 pkg syscall (darwin-386), const SYS_MSYNC = 65 pkg syscall (darwin-386), const SYS_MSYNC_NOCANCEL = 405 pkg syscall (darwin-386), const SYS_MUNLOCK = 204 pkg syscall (darwin-386), const SYS_MUNLOCKALL = 325 pkg syscall (darwin-386), const SYS_MUNMAP = 73 pkg syscall (darwin-386), const SYS_NFSCLNT = 247 pkg syscall (darwin-386), const SYS_NFSSVC = 155 pkg syscall (darwin-386), const SYS_OPEN = 5 pkg syscall (darwin-386), const SYS_OPEN_EXTENDED = 277 pkg syscall (darwin-386), const SYS_OPEN_NOCANCEL = 398 pkg syscall (darwin-386), const SYS_PATHCONF = 191 pkg syscall (darwin-386), const SYS_PID_HIBERNATE = 435 pkg syscall (darwin-386), const SYS_PID_RESUME = 434 pkg syscall (darwin-386), const SYS_PID_SHUTDOWN_SOCKETS = 436 pkg syscall (darwin-386), const SYS_PID_SUSPEND = 433 pkg syscall (darwin-386), const SYS_PIPE = 42 pkg syscall (darwin-386), const SYS_POLL = 230 pkg syscall (darwin-386), const SYS_POLL_NOCANCEL = 417 pkg syscall (darwin-386), const SYS_POSIX_SPAWN = 244 pkg syscall (darwin-386), const SYS_PREAD = 153 pkg syscall (darwin-386), const SYS_PREAD_NOCANCEL = 414 pkg syscall (darwin-386), const SYS_PROCESS_POLICY = 323 pkg syscall (darwin-386), const SYS_PROC_INFO = 336 pkg syscall (darwin-386), const SYS_PROFIL = 44 pkg syscall (darwin-386), const SYS_PSYNCH_CVBROAD = 303 pkg syscall (darwin-386), const SYS_PSYNCH_CVCLRPREPOST = 312 pkg syscall (darwin-386), const SYS_PSYNCH_CVSIGNAL = 304 pkg syscall (darwin-386), const SYS_PSYNCH_CVWAIT = 305 pkg syscall (darwin-386), const SYS_PSYNCH_MUTEXDROP = 302 pkg syscall (darwin-386), const SYS_PSYNCH_MUTEXWAIT = 301 pkg syscall (darwin-386), const SYS_PSYNCH_RW_DOWNGRADE = 299 pkg syscall (darwin-386), const SYS_PSYNCH_RW_LONGRDLOCK = 297 pkg syscall (darwin-386), const SYS_PSYNCH_RW_RDLOCK = 306 pkg syscall (darwin-386), const SYS_PSYNCH_RW_UNLOCK = 308 pkg syscall (darwin-386), const SYS_PSYNCH_RW_UNLOCK2 = 309 pkg syscall (darwin-386), const SYS_PSYNCH_RW_UPGRADE = 300 pkg syscall (darwin-386), const SYS_PSYNCH_RW_WRLOCK = 307 pkg syscall (darwin-386), const SYS_PSYNCH_RW_YIELDWRLOCK = 298 pkg syscall (darwin-386), const SYS_PTRACE = 26 pkg syscall (darwin-386), const SYS_PWRITE = 154 pkg syscall (darwin-386), const SYS_PWRITE_NOCANCEL = 415 pkg syscall (darwin-386), const SYS_QUOTACTL = 165 pkg syscall (darwin-386), const SYS_READ = 3 pkg syscall (darwin-386), const SYS_READLINK = 58 pkg syscall (darwin-386), const SYS_READV = 120 pkg syscall (darwin-386), const SYS_READV_NOCANCEL = 411 pkg syscall (darwin-386), const SYS_READ_NOCANCEL = 396 pkg syscall (darwin-386), const SYS_REBOOT = 55 pkg syscall (darwin-386), const SYS_RECVFROM = 29 pkg syscall (darwin-386), const SYS_RECVFROM_NOCANCEL = 403 pkg syscall (darwin-386), const SYS_RECVMSG = 27 pkg syscall (darwin-386), const SYS_RECVMSG_NOCANCEL = 401 pkg syscall (darwin-386), const SYS_REMOVEXATTR = 238 pkg syscall (darwin-386), const SYS_RENAME = 128 pkg syscall (darwin-386), const SYS_REVOKE = 56 pkg syscall (darwin-386), const SYS_RMDIR = 137 pkg syscall (darwin-386), const SYS_SEARCHFS = 225 pkg syscall (darwin-386), const SYS_SELECT = 93 pkg syscall (darwin-386), const SYS_SELECT_NOCANCEL = 407 pkg syscall (darwin-386), const SYS_SEMCTL = 254 pkg syscall (darwin-386), const SYS_SEMGET = 255 pkg syscall (darwin-386), const SYS_SEMOP = 256 pkg syscall (darwin-386), const SYS_SEMSYS = 251 pkg syscall (darwin-386), const SYS_SEM_CLOSE = 269 pkg syscall (darwin-386), const SYS_SEM_DESTROY = 276 pkg syscall (darwin-386), const SYS_SEM_GETVALUE = 274 pkg syscall (darwin-386), const SYS_SEM_INIT = 275 pkg syscall (darwin-386), const SYS_SEM_OPEN = 268 pkg syscall (darwin-386), const SYS_SEM_POST = 273 pkg syscall (darwin-386), const SYS_SEM_TRYWAIT = 272 pkg syscall (darwin-386), const SYS_SEM_UNLINK = 270 pkg syscall (darwin-386), const SYS_SEM_WAIT = 271 pkg syscall (darwin-386), const SYS_SEM_WAIT_NOCANCEL = 420 pkg syscall (darwin-386), const SYS_SENDFILE = 337 pkg syscall (darwin-386), const SYS_SENDMSG = 28 pkg syscall (darwin-386), const SYS_SENDMSG_NOCANCEL = 402 pkg syscall (darwin-386), const SYS_SENDTO = 133 pkg syscall (darwin-386), const SYS_SENDTO_NOCANCEL = 413 pkg syscall (darwin-386), const SYS_SETATTRLIST = 221 pkg syscall (darwin-386), const SYS_SETAUDIT = 356 pkg syscall (darwin-386), const SYS_SETAUDIT_ADDR = 358 pkg syscall (darwin-386), const SYS_SETAUID = 354 pkg syscall (darwin-386), const SYS_SETEGID = 182 pkg syscall (darwin-386), const SYS_SETEUID = 183 pkg syscall (darwin-386), const SYS_SETGID = 181 pkg syscall (darwin-386), const SYS_SETGROUPS = 80 pkg syscall (darwin-386), const SYS_SETITIMER = 83 pkg syscall (darwin-386), const SYS_SETLCID = 394 pkg syscall (darwin-386), const SYS_SETLOGIN = 50 pkg syscall (darwin-386), const SYS_SETPGID = 82 pkg syscall (darwin-386), const SYS_SETPRIORITY = 96 pkg syscall (darwin-386), const SYS_SETPRIVEXEC = 152 pkg syscall (darwin-386), const SYS_SETREGID = 127 pkg syscall (darwin-386), const SYS_SETREUID = 126 pkg syscall (darwin-386), const SYS_SETRLIMIT = 195 pkg syscall (darwin-386), const SYS_SETSGROUPS = 287 pkg syscall (darwin-386), const SYS_SETSID = 147 pkg syscall (darwin-386), const SYS_SETSOCKOPT = 105 pkg syscall (darwin-386), const SYS_SETTID = 285 pkg syscall (darwin-386), const SYS_SETTID_WITH_PID = 311 pkg syscall (darwin-386), const SYS_SETTIMEOFDAY = 122 pkg syscall (darwin-386), const SYS_SETUID = 23 pkg syscall (darwin-386), const SYS_SETWGROUPS = 289 pkg syscall (darwin-386), const SYS_SETXATTR = 236 pkg syscall (darwin-386), const SYS_SHARED_REGION_CHECK_NP = 294 pkg syscall (darwin-386), const SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 pkg syscall (darwin-386), const SYS_SHMAT = 262 pkg syscall (darwin-386), const SYS_SHMCTL = 263 pkg syscall (darwin-386), const SYS_SHMDT = 264 pkg syscall (darwin-386), const SYS_SHMGET = 265 pkg syscall (darwin-386), const SYS_SHMSYS = 253 pkg syscall (darwin-386), const SYS_SHM_OPEN = 266 pkg syscall (darwin-386), const SYS_SHM_UNLINK = 267 pkg syscall (darwin-386), const SYS_SHUTDOWN = 134 pkg syscall (darwin-386), const SYS_SIGACTION = 46 pkg syscall (darwin-386), const SYS_SIGALTSTACK = 53 pkg syscall (darwin-386), const SYS_SIGPENDING = 52 pkg syscall (darwin-386), const SYS_SIGPROCMASK = 48 pkg syscall (darwin-386), const SYS_SIGRETURN = 184 pkg syscall (darwin-386), const SYS_SIGSUSPEND = 111 pkg syscall (darwin-386), const SYS_SIGSUSPEND_NOCANCEL = 410 pkg syscall (darwin-386), const SYS_SOCKET = 97 pkg syscall (darwin-386), const SYS_SOCKETPAIR = 135 pkg syscall (darwin-386), const SYS_STACK_SNAPSHOT = 365 pkg syscall (darwin-386), const SYS_STAT = 188 pkg syscall (darwin-386), const SYS_STAT64 = 338 pkg syscall (darwin-386), const SYS_STAT64_EXTENDED = 341 pkg syscall (darwin-386), const SYS_STATFS = 157 pkg syscall (darwin-386), const SYS_STATFS64 = 345 pkg syscall (darwin-386), const SYS_STATV = 217 pkg syscall (darwin-386), const SYS_STAT_EXTENDED = 279 pkg syscall (darwin-386), const SYS_SWAPON = 85 pkg syscall (darwin-386), const SYS_SYMLINK = 57 pkg syscall (darwin-386), const SYS_SYNC = 36 pkg syscall (darwin-386), const SYS_SYSCALL = 0 pkg syscall (darwin-386), const SYS_THREAD_SELFID = 372 pkg syscall (darwin-386), const SYS_TRUNCATE = 200 pkg syscall (darwin-386), const SYS_UMASK = 60 pkg syscall (darwin-386), const SYS_UMASK_EXTENDED = 278 pkg syscall (darwin-386), const SYS_UNDELETE = 205 pkg syscall (darwin-386), const SYS_UNLINK = 10 pkg syscall (darwin-386), const SYS_UNMOUNT = 159 pkg syscall (darwin-386), const SYS_UTIMES = 138 pkg syscall (darwin-386), const SYS_VFORK = 66 pkg syscall (darwin-386), const SYS_VM_PRESSURE_MONITOR = 296 pkg syscall (darwin-386), const SYS_WAIT4 = 7 pkg syscall (darwin-386), const SYS_WAIT4_NOCANCEL = 400 pkg syscall (darwin-386), const SYS_WAITEVENT = 232 pkg syscall (darwin-386), const SYS_WAITID = 173 pkg syscall (darwin-386), const SYS_WAITID_NOCANCEL = 416 pkg syscall (darwin-386), const SYS_WATCHEVENT = 231 pkg syscall (darwin-386), const SYS_WORKQ_KERNRETURN = 368 pkg syscall (darwin-386), const SYS_WORKQ_OPEN = 367 pkg syscall (darwin-386), const SYS_WRITE = 4 pkg syscall (darwin-386), const SYS_WRITEV = 121 pkg syscall (darwin-386), const SYS_WRITEV_NOCANCEL = 412 pkg syscall (darwin-386), const SYS_WRITE_NOCANCEL = 397 pkg syscall (darwin-386), const SYS___DISABLE_THREADSIGNAL = 331 pkg syscall (darwin-386), const SYS___MAC_EXECVE = 380 pkg syscall (darwin-386), const SYS___MAC_GETFSSTAT = 426 pkg syscall (darwin-386), const SYS___MAC_GET_FD = 388 pkg syscall (darwin-386), const SYS___MAC_GET_FILE = 382 pkg syscall (darwin-386), const SYS___MAC_GET_LCID = 391 pkg syscall (darwin-386), const SYS___MAC_GET_LCTX = 392 pkg syscall (darwin-386), const SYS___MAC_GET_LINK = 384 pkg syscall (darwin-386), const SYS___MAC_GET_MOUNT = 425 pkg syscall (darwin-386), const SYS___MAC_GET_PID = 390 pkg syscall (darwin-386), const SYS___MAC_GET_PROC = 386 pkg syscall (darwin-386), const SYS___MAC_MOUNT = 424 pkg syscall (darwin-386), const SYS___MAC_SET_FD = 389 pkg syscall (darwin-386), const SYS___MAC_SET_FILE = 383 pkg syscall (darwin-386), const SYS___MAC_SET_LCTX = 393 pkg syscall (darwin-386), const SYS___MAC_SET_LINK = 385 pkg syscall (darwin-386), const SYS___MAC_SET_PROC = 387 pkg syscall (darwin-386), const SYS___MAC_SYSCALL = 381 pkg syscall (darwin-386), const SYS___OLD_SEMWAIT_SIGNAL = 370 pkg syscall (darwin-386), const SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 pkg syscall (darwin-386), const SYS___PTHREAD_CANCELED = 333 pkg syscall (darwin-386), const SYS___PTHREAD_CHDIR = 348 pkg syscall (darwin-386), const SYS___PTHREAD_FCHDIR = 349 pkg syscall (darwin-386), const SYS___PTHREAD_KILL = 328 pkg syscall (darwin-386), const SYS___PTHREAD_MARKCANCEL = 332 pkg syscall (darwin-386), const SYS___PTHREAD_SIGMASK = 329 pkg syscall (darwin-386), const SYS___SEMWAIT_SIGNAL = 334 pkg syscall (darwin-386), const SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 pkg syscall (darwin-386), const SYS___SIGWAIT = 330 pkg syscall (darwin-386), const SYS___SIGWAIT_NOCANCEL = 422 pkg syscall (darwin-386), const SYS___SYSCTL = 202 pkg syscall (darwin-386), const S_IEXEC = 64 pkg syscall (darwin-386), const S_IFMT = 61440 pkg syscall (darwin-386), const S_IFWHT = 57344 pkg syscall (darwin-386), const S_IREAD = 256 pkg syscall (darwin-386), const S_IRGRP = 32 pkg syscall (darwin-386), const S_IROTH = 4 pkg syscall (darwin-386), const S_IRWXG = 56 pkg syscall (darwin-386), const S_IRWXO = 7 pkg syscall (darwin-386), const S_IRWXU = 448 pkg syscall (darwin-386), const S_ISTXT = 512 pkg syscall (darwin-386), const S_IWGRP = 16 pkg syscall (darwin-386), const S_IWOTH = 2 pkg syscall (darwin-386), const S_IWRITE = 128 pkg syscall (darwin-386), const S_IXGRP = 8 pkg syscall (darwin-386), const S_IXOTH = 1 pkg syscall (darwin-386), const SizeofBpfHdr = 20 pkg syscall (darwin-386), const SizeofBpfInsn = 8 pkg syscall (darwin-386), const SizeofBpfProgram = 8 pkg syscall (darwin-386), const SizeofBpfStat = 8 pkg syscall (darwin-386), const SizeofBpfVersion = 4 pkg syscall (darwin-386), const SizeofCmsghdr = 12 pkg syscall (darwin-386), const SizeofIPMreq = 8 pkg syscall (darwin-386), const SizeofIPv6Mreq = 20 pkg syscall (darwin-386), const SizeofIfData = 96 pkg syscall (darwin-386), const SizeofIfMsghdr = 112 pkg syscall (darwin-386), const SizeofIfaMsghdr = 20 pkg syscall (darwin-386), const SizeofIfmaMsghdr = 16 pkg syscall (darwin-386), const SizeofIfmaMsghdr2 = 20 pkg syscall (darwin-386), const SizeofInet4Pktinfo = 12 pkg syscall (darwin-386), const SizeofInet4Pktinfo ideal-int pkg syscall (darwin-386), const SizeofInet6Pktinfo = 20 pkg syscall (darwin-386), const SizeofLinger = 8 pkg syscall (darwin-386), const SizeofMsghdr = 28 pkg syscall (darwin-386), const SizeofRtMetrics = 56 pkg syscall (darwin-386), const SizeofRtMsghdr = 92 pkg syscall (darwin-386), const SizeofSockaddrAny = 108 pkg syscall (darwin-386), const SizeofSockaddrDatalink = 20 pkg syscall (darwin-386), const SizeofSockaddrInet4 = 16 pkg syscall (darwin-386), const SizeofSockaddrInet6 = 28 pkg syscall (darwin-386), const SizeofSockaddrUnix = 106 pkg syscall (darwin-386), const TCIFLUSH = 1 pkg syscall (darwin-386), const TCIFLUSH ideal-int pkg syscall (darwin-386), const TCIOFLUSH = 3 pkg syscall (darwin-386), const TCIOFLUSH ideal-int pkg syscall (darwin-386), const TCOFLUSH = 2 pkg syscall (darwin-386), const TCOFLUSH ideal-int pkg syscall (darwin-386), const TCP_CONNECTIONTIMEOUT = 32 pkg syscall (darwin-386), const TCP_KEEPALIVE = 16 pkg syscall (darwin-386), const TCP_MAXHLEN = 60 pkg syscall (darwin-386), const TCP_MAXOLEN = 40 pkg syscall (darwin-386), const TCP_MAXSEG = 2 pkg syscall (darwin-386), const TCP_MAXWIN = 65535 pkg syscall (darwin-386), const TCP_MAX_SACK = 3 pkg syscall (darwin-386), const TCP_MAX_WINSHIFT = 14 pkg syscall (darwin-386), const TCP_MINMSS = 216 pkg syscall (darwin-386), const TCP_MINMSSOVERLOAD = 1000 pkg syscall (darwin-386), const TCP_MSS = 512 pkg syscall (darwin-386), const TCP_NOOPT = 8 pkg syscall (darwin-386), const TCP_NOPUSH = 4 pkg syscall (darwin-386), const TCP_RXT_CONNDROPTIME = 128 pkg syscall (darwin-386), const TCP_RXT_FINDROP = 256 pkg syscall (darwin-386), const TCSAFLUSH = 2 pkg syscall (darwin-386), const TCSAFLUSH ideal-int pkg syscall (darwin-386), const TIOCCBRK = 536900730 pkg syscall (darwin-386), const TIOCCDTR = 536900728 pkg syscall (darwin-386), const TIOCCONS = 2147775586 pkg syscall (darwin-386), const TIOCDCDTIMESTAMP = 1074295896 pkg syscall (darwin-386), const TIOCDRAIN = 536900702 pkg syscall (darwin-386), const TIOCDSIMICROCODE = 536900693 pkg syscall (darwin-386), const TIOCEXCL = 536900621 pkg syscall (darwin-386), const TIOCEXT = 2147775584 pkg syscall (darwin-386), const TIOCFLUSH = 2147775504 pkg syscall (darwin-386), const TIOCGDRAINWAIT = 1074033750 pkg syscall (darwin-386), const TIOCGETA = 1076655123 pkg syscall (darwin-386), const TIOCGETD = 1074033690 pkg syscall (darwin-386), const TIOCGPGRP = 1074033783 pkg syscall (darwin-386), const TIOCGWINSZ = 1074295912 pkg syscall (darwin-386), const TIOCIXOFF = 536900736 pkg syscall (darwin-386), const TIOCIXON = 536900737 pkg syscall (darwin-386), const TIOCMBIC = 2147775595 pkg syscall (darwin-386), const TIOCMBIS = 2147775596 pkg syscall (darwin-386), const TIOCMGDTRWAIT = 1074033754 pkg syscall (darwin-386), const TIOCMGET = 1074033770 pkg syscall (darwin-386), const TIOCMODG = 1074033667 pkg syscall (darwin-386), const TIOCMODS = 2147775492 pkg syscall (darwin-386), const TIOCMSDTRWAIT = 2147775579 pkg syscall (darwin-386), const TIOCMSET = 2147775597 pkg syscall (darwin-386), const TIOCM_CAR = 64 pkg syscall (darwin-386), const TIOCM_CD = 64 pkg syscall (darwin-386), const TIOCM_CTS = 32 pkg syscall (darwin-386), const TIOCM_DSR = 256 pkg syscall (darwin-386), const TIOCM_DTR = 2 pkg syscall (darwin-386), const TIOCM_LE = 1 pkg syscall (darwin-386), const TIOCM_RI = 128 pkg syscall (darwin-386), const TIOCM_RNG = 128 pkg syscall (darwin-386), const TIOCM_RTS = 4 pkg syscall (darwin-386), const TIOCM_SR = 16 pkg syscall (darwin-386), const TIOCM_ST = 8 pkg syscall (darwin-386), const TIOCNOTTY = 536900721 pkg syscall (darwin-386), const TIOCNXCL = 536900622 pkg syscall (darwin-386), const TIOCOUTQ = 1074033779 pkg syscall (darwin-386), const TIOCPKT = 2147775600 pkg syscall (darwin-386), const TIOCPKT_DATA = 0 pkg syscall (darwin-386), const TIOCPKT_DOSTOP = 32 pkg syscall (darwin-386), const TIOCPKT_FLUSHREAD = 1 pkg syscall (darwin-386), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (darwin-386), const TIOCPKT_IOCTL = 64 pkg syscall (darwin-386), const TIOCPKT_NOSTOP = 16 pkg syscall (darwin-386), const TIOCPKT_START = 8 pkg syscall (darwin-386), const TIOCPKT_STOP = 4 pkg syscall (darwin-386), const TIOCPTYGNAME = 1082160211 pkg syscall (darwin-386), const TIOCPTYGRANT = 536900692 pkg syscall (darwin-386), const TIOCPTYUNLK = 536900690 pkg syscall (darwin-386), const TIOCREMOTE = 2147775593 pkg syscall (darwin-386), const TIOCSBRK = 536900731 pkg syscall (darwin-386), const TIOCSCONS = 536900707 pkg syscall (darwin-386), const TIOCSCTTY = 536900705 pkg syscall (darwin-386), const TIOCSDRAINWAIT = 2147775575 pkg syscall (darwin-386), const TIOCSDTR = 536900729 pkg syscall (darwin-386), const TIOCSETA = 2150396948 pkg syscall (darwin-386), const TIOCSETAF = 2150396950 pkg syscall (darwin-386), const TIOCSETAW = 2150396949 pkg syscall (darwin-386), const TIOCSETD = 2147775515 pkg syscall (darwin-386), const TIOCSIG = 536900703 pkg syscall (darwin-386), const TIOCSPGRP = 2147775606 pkg syscall (darwin-386), const TIOCSTART = 536900718 pkg syscall (darwin-386), const TIOCSTAT = 536900709 pkg syscall (darwin-386), const TIOCSTI = 2147578994 pkg syscall (darwin-386), const TIOCSTOP = 536900719 pkg syscall (darwin-386), const TIOCSWINSZ = 2148037735 pkg syscall (darwin-386), const TIOCTIMESTAMP = 1074295897 pkg syscall (darwin-386), const TIOCUCNTL = 2147775590 pkg syscall (darwin-386), const TOSTOP = 4194304 pkg syscall (darwin-386), const TOSTOP ideal-int pkg syscall (darwin-386), const VDISCARD = 15 pkg syscall (darwin-386), const VDISCARD ideal-int pkg syscall (darwin-386), const VDSUSP = 11 pkg syscall (darwin-386), const VDSUSP ideal-int pkg syscall (darwin-386), const VEOF = 0 pkg syscall (darwin-386), const VEOF ideal-int pkg syscall (darwin-386), const VEOL = 1 pkg syscall (darwin-386), const VEOL ideal-int pkg syscall (darwin-386), const VEOL2 = 2 pkg syscall (darwin-386), const VEOL2 ideal-int pkg syscall (darwin-386), const VERASE = 3 pkg syscall (darwin-386), const VERASE ideal-int pkg syscall (darwin-386), const VINTR = 8 pkg syscall (darwin-386), const VINTR ideal-int pkg syscall (darwin-386), const VKILL = 5 pkg syscall (darwin-386), const VKILL ideal-int pkg syscall (darwin-386), const VLNEXT = 14 pkg syscall (darwin-386), const VLNEXT ideal-int pkg syscall (darwin-386), const VMIN = 16 pkg syscall (darwin-386), const VMIN ideal-int pkg syscall (darwin-386), const VQUIT = 9 pkg syscall (darwin-386), const VQUIT ideal-int pkg syscall (darwin-386), const VREPRINT = 6 pkg syscall (darwin-386), const VREPRINT ideal-int pkg syscall (darwin-386), const VSTART = 12 pkg syscall (darwin-386), const VSTART ideal-int pkg syscall (darwin-386), const VSTATUS = 18 pkg syscall (darwin-386), const VSTATUS ideal-int pkg syscall (darwin-386), const VSTOP = 13 pkg syscall (darwin-386), const VSTOP ideal-int pkg syscall (darwin-386), const VSUSP = 10 pkg syscall (darwin-386), const VSUSP ideal-int pkg syscall (darwin-386), const VT0 = 0 pkg syscall (darwin-386), const VT0 ideal-int pkg syscall (darwin-386), const VT1 = 65536 pkg syscall (darwin-386), const VT1 ideal-int pkg syscall (darwin-386), const VTDLY = 65536 pkg syscall (darwin-386), const VTDLY ideal-int pkg syscall (darwin-386), const VTIME = 17 pkg syscall (darwin-386), const VTIME ideal-int pkg syscall (darwin-386), const VWERASE = 4 pkg syscall (darwin-386), const VWERASE ideal-int pkg syscall (darwin-386), const WCONTINUED = 16 pkg syscall (darwin-386), const WCOREFLAG = 128 pkg syscall (darwin-386), const WEXITED = 4 pkg syscall (darwin-386), const WNOHANG = 1 pkg syscall (darwin-386), const WNOWAIT = 32 pkg syscall (darwin-386), const WORDSIZE = 32 pkg syscall (darwin-386), const WSTOPPED = 8 pkg syscall (darwin-386), const WUNTRACED = 2 pkg syscall (darwin-386), func Fchflags(int, int) error pkg syscall (darwin-386), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (darwin-386), type Inet4Pktinfo struct pkg syscall (darwin-386), type Inet4Pktinfo struct, Addr [4]uint8 pkg syscall (darwin-386), type Inet4Pktinfo struct, Ifindex uint32 pkg syscall (darwin-386), type Inet4Pktinfo struct, Spec_dst [4]uint8 pkg syscall (darwin-386), type Termios struct pkg syscall (darwin-386), type Termios struct, Cc [20]uint8 pkg syscall (darwin-386), type Termios struct, Cflag uint32 pkg syscall (darwin-386), type Termios struct, Iflag uint32 pkg syscall (darwin-386), type Termios struct, Ispeed uint32 pkg syscall (darwin-386), type Termios struct, Lflag uint32 pkg syscall (darwin-386), type Termios struct, Oflag uint32 pkg syscall (darwin-386), type Termios struct, Ospeed uint32 pkg syscall (darwin-386-cgo), const AF_APPLETALK = 16 pkg syscall (darwin-386-cgo), const AF_CCITT = 10 pkg syscall (darwin-386-cgo), const AF_CHAOS = 5 pkg syscall (darwin-386-cgo), const AF_CNT = 21 pkg syscall (darwin-386-cgo), const AF_COIP = 20 pkg syscall (darwin-386-cgo), const AF_DATAKIT = 9 pkg syscall (darwin-386-cgo), const AF_DECnet = 12 pkg syscall (darwin-386-cgo), const AF_DLI = 13 pkg syscall (darwin-386-cgo), const AF_E164 = 28 pkg syscall (darwin-386-cgo), const AF_ECMA = 8 pkg syscall (darwin-386-cgo), const AF_HYLINK = 15 pkg syscall (darwin-386-cgo), const AF_IEEE80211 = 37 pkg syscall (darwin-386-cgo), const AF_IMPLINK = 3 pkg syscall (darwin-386-cgo), const AF_INET6 = 30 pkg syscall (darwin-386-cgo), const AF_IPX = 23 pkg syscall (darwin-386-cgo), const AF_ISDN = 28 pkg syscall (darwin-386-cgo), const AF_ISO = 7 pkg syscall (darwin-386-cgo), const AF_LAT = 14 pkg syscall (darwin-386-cgo), const AF_LINK = 18 pkg syscall (darwin-386-cgo), const AF_LOCAL = 1 pkg syscall (darwin-386-cgo), const AF_MAX = 38 pkg syscall (darwin-386-cgo), const AF_NATM = 31 pkg syscall (darwin-386-cgo), const AF_NDRV = 27 pkg syscall (darwin-386-cgo), const AF_NETBIOS = 33 pkg syscall (darwin-386-cgo), const AF_NS = 6 pkg syscall (darwin-386-cgo), const AF_OSI = 7 pkg syscall (darwin-386-cgo), const AF_PPP = 34 pkg syscall (darwin-386-cgo), const AF_PUP = 4 pkg syscall (darwin-386-cgo), const AF_RESERVED_36 = 36 pkg syscall (darwin-386-cgo), const AF_ROUTE = 17 pkg syscall (darwin-386-cgo), const AF_SIP = 24 pkg syscall (darwin-386-cgo), const AF_SNA = 11 pkg syscall (darwin-386-cgo), const AF_SYSTEM = 32 pkg syscall (darwin-386-cgo), const B0 = 0 pkg syscall (darwin-386-cgo), const B0 ideal-int pkg syscall (darwin-386-cgo), const B110 = 110 pkg syscall (darwin-386-cgo), const B110 ideal-int pkg syscall (darwin-386-cgo), const B115200 = 115200 pkg syscall (darwin-386-cgo), const B115200 ideal-int pkg syscall (darwin-386-cgo), const B1200 = 1200 pkg syscall (darwin-386-cgo), const B1200 ideal-int pkg syscall (darwin-386-cgo), const B134 = 134 pkg syscall (darwin-386-cgo), const B134 ideal-int pkg syscall (darwin-386-cgo), const B14400 = 14400 pkg syscall (darwin-386-cgo), const B14400 ideal-int pkg syscall (darwin-386-cgo), const B150 = 150 pkg syscall (darwin-386-cgo), const B150 ideal-int pkg syscall (darwin-386-cgo), const B1800 = 1800 pkg syscall (darwin-386-cgo), const B1800 ideal-int pkg syscall (darwin-386-cgo), const B19200 = 19200 pkg syscall (darwin-386-cgo), const B19200 ideal-int pkg syscall (darwin-386-cgo), const B200 = 200 pkg syscall (darwin-386-cgo), const B200 ideal-int pkg syscall (darwin-386-cgo), const B230400 = 230400 pkg syscall (darwin-386-cgo), const B230400 ideal-int pkg syscall (darwin-386-cgo), const B2400 = 2400 pkg syscall (darwin-386-cgo), const B2400 ideal-int pkg syscall (darwin-386-cgo), const B28800 = 28800 pkg syscall (darwin-386-cgo), const B28800 ideal-int pkg syscall (darwin-386-cgo), const B300 = 300 pkg syscall (darwin-386-cgo), const B300 ideal-int pkg syscall (darwin-386-cgo), const B38400 = 38400 pkg syscall (darwin-386-cgo), const B38400 ideal-int pkg syscall (darwin-386-cgo), const B4800 = 4800 pkg syscall (darwin-386-cgo), const B4800 ideal-int pkg syscall (darwin-386-cgo), const B50 = 50 pkg syscall (darwin-386-cgo), const B50 ideal-int pkg syscall (darwin-386-cgo), const B57600 = 57600 pkg syscall (darwin-386-cgo), const B57600 ideal-int pkg syscall (darwin-386-cgo), const B600 = 600 pkg syscall (darwin-386-cgo), const B600 ideal-int pkg syscall (darwin-386-cgo), const B7200 = 7200 pkg syscall (darwin-386-cgo), const B7200 ideal-int pkg syscall (darwin-386-cgo), const B75 = 75 pkg syscall (darwin-386-cgo), const B75 ideal-int pkg syscall (darwin-386-cgo), const B76800 = 76800 pkg syscall (darwin-386-cgo), const B76800 ideal-int pkg syscall (darwin-386-cgo), const B9600 = 9600 pkg syscall (darwin-386-cgo), const B9600 ideal-int pkg syscall (darwin-386-cgo), const BIOCFLUSH = 536887912 pkg syscall (darwin-386-cgo), const BIOCGBLEN = 1074020966 pkg syscall (darwin-386-cgo), const BIOCGDLT = 1074020970 pkg syscall (darwin-386-cgo), const BIOCGDLTLIST = 3222028921 pkg syscall (darwin-386-cgo), const BIOCGETIF = 1075855979 pkg syscall (darwin-386-cgo), const BIOCGHDRCMPLT = 1074020980 pkg syscall (darwin-386-cgo), const BIOCGRSIG = 1074020978 pkg syscall (darwin-386-cgo), const BIOCGRTIMEOUT = 1074283118 pkg syscall (darwin-386-cgo), const BIOCGSEESENT = 1074020982 pkg syscall (darwin-386-cgo), const BIOCGSTATS = 1074283119 pkg syscall (darwin-386-cgo), const BIOCIMMEDIATE = 2147762800 pkg syscall (darwin-386-cgo), const BIOCPROMISC = 536887913 pkg syscall (darwin-386-cgo), const BIOCSBLEN = 3221504614 pkg syscall (darwin-386-cgo), const BIOCSDLT = 2147762808 pkg syscall (darwin-386-cgo), const BIOCSETF = 2148024935 pkg syscall (darwin-386-cgo), const BIOCSETIF = 2149597804 pkg syscall (darwin-386-cgo), const BIOCSHDRCMPLT = 2147762805 pkg syscall (darwin-386-cgo), const BIOCSRSIG = 2147762803 pkg syscall (darwin-386-cgo), const BIOCSRTIMEOUT = 2148024941 pkg syscall (darwin-386-cgo), const BIOCSSEESENT = 2147762807 pkg syscall (darwin-386-cgo), const BIOCVERSION = 1074020977 pkg syscall (darwin-386-cgo), const BPF_A = 16 pkg syscall (darwin-386-cgo), const BPF_ABS = 32 pkg syscall (darwin-386-cgo), const BPF_ADD = 0 pkg syscall (darwin-386-cgo), const BPF_ALIGNMENT = 4 pkg syscall (darwin-386-cgo), const BPF_ALU = 4 pkg syscall (darwin-386-cgo), const BPF_AND = 80 pkg syscall (darwin-386-cgo), const BPF_B = 16 pkg syscall (darwin-386-cgo), const BPF_DIV = 48 pkg syscall (darwin-386-cgo), const BPF_H = 8 pkg syscall (darwin-386-cgo), const BPF_IMM = 0 pkg syscall (darwin-386-cgo), const BPF_IND = 64 pkg syscall (darwin-386-cgo), const BPF_JA = 0 pkg syscall (darwin-386-cgo), const BPF_JEQ = 16 pkg syscall (darwin-386-cgo), const BPF_JGE = 48 pkg syscall (darwin-386-cgo), const BPF_JGT = 32 pkg syscall (darwin-386-cgo), const BPF_JMP = 5 pkg syscall (darwin-386-cgo), const BPF_JSET = 64 pkg syscall (darwin-386-cgo), const BPF_K = 0 pkg syscall (darwin-386-cgo), const BPF_LD = 0 pkg syscall (darwin-386-cgo), const BPF_LDX = 1 pkg syscall (darwin-386-cgo), const BPF_LEN = 128 pkg syscall (darwin-386-cgo), const BPF_LSH = 96 pkg syscall (darwin-386-cgo), const BPF_MAJOR_VERSION = 1 pkg syscall (darwin-386-cgo), const BPF_MAXBUFSIZE = 524288 pkg syscall (darwin-386-cgo), const BPF_MAXINSNS = 512 pkg syscall (darwin-386-cgo), const BPF_MEM = 96 pkg syscall (darwin-386-cgo), const BPF_MEMWORDS = 16 pkg syscall (darwin-386-cgo), const BPF_MINBUFSIZE = 32 pkg syscall (darwin-386-cgo), const BPF_MINOR_VERSION = 1 pkg syscall (darwin-386-cgo), const BPF_MISC = 7 pkg syscall (darwin-386-cgo), const BPF_MSH = 160 pkg syscall (darwin-386-cgo), const BPF_MUL = 32 pkg syscall (darwin-386-cgo), const BPF_NEG = 128 pkg syscall (darwin-386-cgo), const BPF_OR = 64 pkg syscall (darwin-386-cgo), const BPF_RELEASE = 199606 pkg syscall (darwin-386-cgo), const BPF_RET = 6 pkg syscall (darwin-386-cgo), const BPF_RSH = 112 pkg syscall (darwin-386-cgo), const BPF_ST = 2 pkg syscall (darwin-386-cgo), const BPF_STX = 3 pkg syscall (darwin-386-cgo), const BPF_SUB = 16 pkg syscall (darwin-386-cgo), const BPF_TAX = 0 pkg syscall (darwin-386-cgo), const BPF_TXA = 128 pkg syscall (darwin-386-cgo), const BPF_W = 0 pkg syscall (darwin-386-cgo), const BPF_X = 8 pkg syscall (darwin-386-cgo), const BRKINT = 2 pkg syscall (darwin-386-cgo), const BRKINT ideal-int pkg syscall (darwin-386-cgo), const CFLUSH = 15 pkg syscall (darwin-386-cgo), const CFLUSH ideal-int pkg syscall (darwin-386-cgo), const CLOCAL = 32768 pkg syscall (darwin-386-cgo), const CLOCAL ideal-int pkg syscall (darwin-386-cgo), const CREAD = 2048 pkg syscall (darwin-386-cgo), const CREAD ideal-int pkg syscall (darwin-386-cgo), const CS5 = 0 pkg syscall (darwin-386-cgo), const CS5 ideal-int pkg syscall (darwin-386-cgo), const CS6 = 256 pkg syscall (darwin-386-cgo), const CS6 ideal-int pkg syscall (darwin-386-cgo), const CS7 = 512 pkg syscall (darwin-386-cgo), const CS7 ideal-int pkg syscall (darwin-386-cgo), const CS8 = 768 pkg syscall (darwin-386-cgo), const CS8 ideal-int pkg syscall (darwin-386-cgo), const CSIZE = 768 pkg syscall (darwin-386-cgo), const CSIZE ideal-int pkg syscall (darwin-386-cgo), const CSTART = 17 pkg syscall (darwin-386-cgo), const CSTART ideal-int pkg syscall (darwin-386-cgo), const CSTATUS = 20 pkg syscall (darwin-386-cgo), const CSTATUS ideal-int pkg syscall (darwin-386-cgo), const CSTOP = 19 pkg syscall (darwin-386-cgo), const CSTOP ideal-int pkg syscall (darwin-386-cgo), const CSTOPB = 1024 pkg syscall (darwin-386-cgo), const CSTOPB ideal-int pkg syscall (darwin-386-cgo), const CSUSP = 26 pkg syscall (darwin-386-cgo), const CSUSP ideal-int pkg syscall (darwin-386-cgo), const CTL_MAXNAME = 12 pkg syscall (darwin-386-cgo), const CTL_NET = 4 pkg syscall (darwin-386-cgo), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (darwin-386-cgo), const DLT_ARCNET = 7 pkg syscall (darwin-386-cgo), const DLT_ATM_CLIP = 19 pkg syscall (darwin-386-cgo), const DLT_ATM_RFC1483 = 11 pkg syscall (darwin-386-cgo), const DLT_AX25 = 3 pkg syscall (darwin-386-cgo), const DLT_CHAOS = 5 pkg syscall (darwin-386-cgo), const DLT_CHDLC = 104 pkg syscall (darwin-386-cgo), const DLT_C_HDLC = 104 pkg syscall (darwin-386-cgo), const DLT_EN10MB = 1 pkg syscall (darwin-386-cgo), const DLT_EN3MB = 2 pkg syscall (darwin-386-cgo), const DLT_FDDI = 10 pkg syscall (darwin-386-cgo), const DLT_IEEE802 = 6 pkg syscall (darwin-386-cgo), const DLT_IEEE802_11 = 105 pkg syscall (darwin-386-cgo), const DLT_IEEE802_11_RADIO = 127 pkg syscall (darwin-386-cgo), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (darwin-386-cgo), const DLT_LINUX_SLL = 113 pkg syscall (darwin-386-cgo), const DLT_LOOP = 108 pkg syscall (darwin-386-cgo), const DLT_NULL = 0 pkg syscall (darwin-386-cgo), const DLT_PFLOG = 117 pkg syscall (darwin-386-cgo), const DLT_PFSYNC = 18 pkg syscall (darwin-386-cgo), const DLT_PPP = 9 pkg syscall (darwin-386-cgo), const DLT_PPP_BSDOS = 16 pkg syscall (darwin-386-cgo), const DLT_PPP_SERIAL = 50 pkg syscall (darwin-386-cgo), const DLT_PRONET = 4 pkg syscall (darwin-386-cgo), const DLT_RAW = 12 pkg syscall (darwin-386-cgo), const DLT_SLIP = 8 pkg syscall (darwin-386-cgo), const DLT_SLIP_BSDOS = 15 pkg syscall (darwin-386-cgo), const DT_BLK = 6 pkg syscall (darwin-386-cgo), const DT_CHR = 2 pkg syscall (darwin-386-cgo), const DT_DIR = 4 pkg syscall (darwin-386-cgo), const DT_FIFO = 1 pkg syscall (darwin-386-cgo), const DT_LNK = 10 pkg syscall (darwin-386-cgo), const DT_REG = 8 pkg syscall (darwin-386-cgo), const DT_SOCK = 12 pkg syscall (darwin-386-cgo), const DT_UNKNOWN = 0 pkg syscall (darwin-386-cgo), const DT_WHT = 14 pkg syscall (darwin-386-cgo), const E2BIG = 7 pkg syscall (darwin-386-cgo), const EACCES = 13 pkg syscall (darwin-386-cgo), const EADDRINUSE = 48 pkg syscall (darwin-386-cgo), const EADDRNOTAVAIL = 49 pkg syscall (darwin-386-cgo), const EAFNOSUPPORT = 47 pkg syscall (darwin-386-cgo), const EAGAIN = 35 pkg syscall (darwin-386-cgo), const EALREADY = 37 pkg syscall (darwin-386-cgo), const EAUTH = 80 pkg syscall (darwin-386-cgo), const EBADARCH = 86 pkg syscall (darwin-386-cgo), const EBADEXEC = 85 pkg syscall (darwin-386-cgo), const EBADF = 9 pkg syscall (darwin-386-cgo), const EBADMACHO = 88 pkg syscall (darwin-386-cgo), const EBADMSG = 94 pkg syscall (darwin-386-cgo), const EBADRPC = 72 pkg syscall (darwin-386-cgo), const EBUSY = 16 pkg syscall (darwin-386-cgo), const ECANCELED = 89 pkg syscall (darwin-386-cgo), const ECHILD = 10 pkg syscall (darwin-386-cgo), const ECHO = 8 pkg syscall (darwin-386-cgo), const ECHOCTL = 64 pkg syscall (darwin-386-cgo), const ECHOE = 2 pkg syscall (darwin-386-cgo), const ECHOK = 4 pkg syscall (darwin-386-cgo), const ECHOKE = 1 pkg syscall (darwin-386-cgo), const ECHONL = 16 pkg syscall (darwin-386-cgo), const ECHOPRT = 32 pkg syscall (darwin-386-cgo), const ECONNABORTED = 53 pkg syscall (darwin-386-cgo), const ECONNREFUSED = 61 pkg syscall (darwin-386-cgo), const ECONNRESET = 54 pkg syscall (darwin-386-cgo), const EDEADLK = 11 pkg syscall (darwin-386-cgo), const EDESTADDRREQ = 39 pkg syscall (darwin-386-cgo), const EDEVERR = 83 pkg syscall (darwin-386-cgo), const EDOM = 33 pkg syscall (darwin-386-cgo), const EDQUOT = 69 pkg syscall (darwin-386-cgo), const EEXIST = 17 pkg syscall (darwin-386-cgo), const EFAULT = 14 pkg syscall (darwin-386-cgo), const EFBIG = 27 pkg syscall (darwin-386-cgo), const EFTYPE = 79 pkg syscall (darwin-386-cgo), const EHOSTDOWN = 64 pkg syscall (darwin-386-cgo), const EHOSTUNREACH = 65 pkg syscall (darwin-386-cgo), const EIDRM = 90 pkg syscall (darwin-386-cgo), const EILSEQ = 92 pkg syscall (darwin-386-cgo), const EINPROGRESS = 36 pkg syscall (darwin-386-cgo), const EINTR = 4 pkg syscall (darwin-386-cgo), const EINVAL = 22 pkg syscall (darwin-386-cgo), const EIO = 5 pkg syscall (darwin-386-cgo), const EISCONN = 56 pkg syscall (darwin-386-cgo), const EISDIR = 21 pkg syscall (darwin-386-cgo), const ELAST = 105 pkg syscall (darwin-386-cgo), const ELOOP = 62 pkg syscall (darwin-386-cgo), const EMFILE = 24 pkg syscall (darwin-386-cgo), const EMLINK = 31 pkg syscall (darwin-386-cgo), const EMSGSIZE = 40 pkg syscall (darwin-386-cgo), const EMULTIHOP = 95 pkg syscall (darwin-386-cgo), const ENAMETOOLONG = 63 pkg syscall (darwin-386-cgo), const ENEEDAUTH = 81 pkg syscall (darwin-386-cgo), const ENETDOWN = 50 pkg syscall (darwin-386-cgo), const ENETRESET = 52 pkg syscall (darwin-386-cgo), const ENETUNREACH = 51 pkg syscall (darwin-386-cgo), const ENFILE = 23 pkg syscall (darwin-386-cgo), const ENOATTR = 93 pkg syscall (darwin-386-cgo), const ENOBUFS = 55 pkg syscall (darwin-386-cgo), const ENODATA = 96 pkg syscall (darwin-386-cgo), const ENODEV = 19 pkg syscall (darwin-386-cgo), const ENOEXEC = 8 pkg syscall (darwin-386-cgo), const ENOLCK = 77 pkg syscall (darwin-386-cgo), const ENOLINK = 97 pkg syscall (darwin-386-cgo), const ENOMEM = 12 pkg syscall (darwin-386-cgo), const ENOMSG = 91 pkg syscall (darwin-386-cgo), const ENOPOLICY = 103 pkg syscall (darwin-386-cgo), const ENOPROTOOPT = 42 pkg syscall (darwin-386-cgo), const ENOSPC = 28 pkg syscall (darwin-386-cgo), const ENOSR = 98 pkg syscall (darwin-386-cgo), const ENOSTR = 99 pkg syscall (darwin-386-cgo), const ENOSYS = 78 pkg syscall (darwin-386-cgo), const ENOTBLK = 15 pkg syscall (darwin-386-cgo), const ENOTCONN = 57 pkg syscall (darwin-386-cgo), const ENOTDIR = 20 pkg syscall (darwin-386-cgo), const ENOTEMPTY = 66 pkg syscall (darwin-386-cgo), const ENOTRECOVERABLE = 104 pkg syscall (darwin-386-cgo), const ENOTSOCK = 38 pkg syscall (darwin-386-cgo), const ENOTSUP = 45 pkg syscall (darwin-386-cgo), const ENOTTY = 25 pkg syscall (darwin-386-cgo), const ENXIO = 6 pkg syscall (darwin-386-cgo), const EOPNOTSUPP = 102 pkg syscall (darwin-386-cgo), const EOVERFLOW = 84 pkg syscall (darwin-386-cgo), const EOWNERDEAD = 105 pkg syscall (darwin-386-cgo), const EPERM = 1 pkg syscall (darwin-386-cgo), const EPFNOSUPPORT = 46 pkg syscall (darwin-386-cgo), const EPIPE = 32 pkg syscall (darwin-386-cgo), const EPROCLIM = 67 pkg syscall (darwin-386-cgo), const EPROCUNAVAIL = 76 pkg syscall (darwin-386-cgo), const EPROGMISMATCH = 75 pkg syscall (darwin-386-cgo), const EPROGUNAVAIL = 74 pkg syscall (darwin-386-cgo), const EPROTO = 100 pkg syscall (darwin-386-cgo), const EPROTONOSUPPORT = 43 pkg syscall (darwin-386-cgo), const EPROTOTYPE = 41 pkg syscall (darwin-386-cgo), const EPWROFF = 82 pkg syscall (darwin-386-cgo), const ERANGE = 34 pkg syscall (darwin-386-cgo), const EREMOTE = 71 pkg syscall (darwin-386-cgo), const EROFS = 30 pkg syscall (darwin-386-cgo), const ERPCMISMATCH = 73 pkg syscall (darwin-386-cgo), const ESHLIBVERS = 87 pkg syscall (darwin-386-cgo), const ESHUTDOWN = 58 pkg syscall (darwin-386-cgo), const ESOCKTNOSUPPORT = 44 pkg syscall (darwin-386-cgo), const ESPIPE = 29 pkg syscall (darwin-386-cgo), const ESRCH = 3 pkg syscall (darwin-386-cgo), const ESTALE = 70 pkg syscall (darwin-386-cgo), const ETIME = 101 pkg syscall (darwin-386-cgo), const ETIMEDOUT = 60 pkg syscall (darwin-386-cgo), const ETOOMANYREFS = 59 pkg syscall (darwin-386-cgo), const ETXTBSY = 26 pkg syscall (darwin-386-cgo), const EUSERS = 68 pkg syscall (darwin-386-cgo), const EVFILT_AIO = -3 pkg syscall (darwin-386-cgo), const EVFILT_FS = -9 pkg syscall (darwin-386-cgo), const EVFILT_MACHPORT = -8 pkg syscall (darwin-386-cgo), const EVFILT_PROC = -5 pkg syscall (darwin-386-cgo), const EVFILT_READ = -1 pkg syscall (darwin-386-cgo), const EVFILT_SIGNAL = -6 pkg syscall (darwin-386-cgo), const EVFILT_SYSCOUNT = 12 pkg syscall (darwin-386-cgo), const EVFILT_THREADMARKER = 12 pkg syscall (darwin-386-cgo), const EVFILT_TIMER = -7 pkg syscall (darwin-386-cgo), const EVFILT_USER = -10 pkg syscall (darwin-386-cgo), const EVFILT_VM = -12 pkg syscall (darwin-386-cgo), const EVFILT_VNODE = -4 pkg syscall (darwin-386-cgo), const EVFILT_WRITE = -2 pkg syscall (darwin-386-cgo), const EV_ADD = 1 pkg syscall (darwin-386-cgo), const EV_CLEAR = 32 pkg syscall (darwin-386-cgo), const EV_DELETE = 2 pkg syscall (darwin-386-cgo), const EV_DISABLE = 8 pkg syscall (darwin-386-cgo), const EV_DISPATCH = 128 pkg syscall (darwin-386-cgo), const EV_ENABLE = 4 pkg syscall (darwin-386-cgo), const EV_EOF = 32768 pkg syscall (darwin-386-cgo), const EV_ERROR = 16384 pkg syscall (darwin-386-cgo), const EV_FLAG0 = 4096 pkg syscall (darwin-386-cgo), const EV_FLAG1 = 8192 pkg syscall (darwin-386-cgo), const EV_ONESHOT = 16 pkg syscall (darwin-386-cgo), const EV_OOBAND = 8192 pkg syscall (darwin-386-cgo), const EV_POLL = 4096 pkg syscall (darwin-386-cgo), const EV_RECEIPT = 64 pkg syscall (darwin-386-cgo), const EV_SYSFLAGS = 61440 pkg syscall (darwin-386-cgo), const EWOULDBLOCK = 35 pkg syscall (darwin-386-cgo), const EXDEV = 18 pkg syscall (darwin-386-cgo), const EXTA = 19200 pkg syscall (darwin-386-cgo), const EXTB = 38400 pkg syscall (darwin-386-cgo), const EXTPROC = 2048 pkg syscall (darwin-386-cgo), const FD_CLOEXEC = 1 pkg syscall (darwin-386-cgo), const FD_SETSIZE = 1024 pkg syscall (darwin-386-cgo), const FLUSHO = 8388608 pkg syscall (darwin-386-cgo), const FLUSHO ideal-int pkg syscall (darwin-386-cgo), const F_ADDFILESIGS = 61 pkg syscall (darwin-386-cgo), const F_ADDSIGS = 59 pkg syscall (darwin-386-cgo), const F_ALLOCATEALL = 4 pkg syscall (darwin-386-cgo), const F_ALLOCATECONTIG = 2 pkg syscall (darwin-386-cgo), const F_CHKCLEAN = 41 pkg syscall (darwin-386-cgo), const F_DUPFD = 0 pkg syscall (darwin-386-cgo), const F_DUPFD_CLOEXEC = 67 pkg syscall (darwin-386-cgo), const F_FLUSH_DATA = 40 pkg syscall (darwin-386-cgo), const F_FREEZE_FS = 53 pkg syscall (darwin-386-cgo), const F_FULLFSYNC = 51 pkg syscall (darwin-386-cgo), const F_GETFD = 1 pkg syscall (darwin-386-cgo), const F_GETFL = 3 pkg syscall (darwin-386-cgo), const F_GETLK = 7 pkg syscall (darwin-386-cgo), const F_GETLKPID = 66 pkg syscall (darwin-386-cgo), const F_GETNOSIGPIPE = 74 pkg syscall (darwin-386-cgo), const F_GETOWN = 5 pkg syscall (darwin-386-cgo), const F_GETPATH = 50 pkg syscall (darwin-386-cgo), const F_GETPATH_MTMINFO = 71 pkg syscall (darwin-386-cgo), const F_GETPROTECTIONCLASS = 63 pkg syscall (darwin-386-cgo), const F_GLOBAL_NOCACHE = 55 pkg syscall (darwin-386-cgo), const F_LOG2PHYS = 49 pkg syscall (darwin-386-cgo), const F_LOG2PHYS_EXT = 65 pkg syscall (darwin-386-cgo), const F_MARKDEPENDENCY = 60 pkg syscall (darwin-386-cgo), const F_NOCACHE = 48 pkg syscall (darwin-386-cgo), const F_NODIRECT = 62 pkg syscall (darwin-386-cgo), const F_OK = 0 pkg syscall (darwin-386-cgo), const F_PATHPKG_CHECK = 52 pkg syscall (darwin-386-cgo), const F_PEOFPOSMODE = 3 pkg syscall (darwin-386-cgo), const F_PREALLOCATE = 42 pkg syscall (darwin-386-cgo), const F_RDADVISE = 44 pkg syscall (darwin-386-cgo), const F_RDAHEAD = 45 pkg syscall (darwin-386-cgo), const F_RDLCK = 1 pkg syscall (darwin-386-cgo), const F_READBOOTSTRAP = 46 pkg syscall (darwin-386-cgo), const F_SETBACKINGSTORE = 70 pkg syscall (darwin-386-cgo), const F_SETFD = 2 pkg syscall (darwin-386-cgo), const F_SETFL = 4 pkg syscall (darwin-386-cgo), const F_SETLK = 8 pkg syscall (darwin-386-cgo), const F_SETLKW = 9 pkg syscall (darwin-386-cgo), const F_SETNOSIGPIPE = 73 pkg syscall (darwin-386-cgo), const F_SETOWN = 6 pkg syscall (darwin-386-cgo), const F_SETPROTECTIONCLASS = 64 pkg syscall (darwin-386-cgo), const F_SETSIZE = 43 pkg syscall (darwin-386-cgo), const F_THAW_FS = 54 pkg syscall (darwin-386-cgo), const F_UNLCK = 2 pkg syscall (darwin-386-cgo), const F_VOLPOSMODE = 4 pkg syscall (darwin-386-cgo), const F_WRITEBOOTSTRAP = 47 pkg syscall (darwin-386-cgo), const F_WRLCK = 3 pkg syscall (darwin-386-cgo), const HUPCL = 16384 pkg syscall (darwin-386-cgo), const HUPCL ideal-int pkg syscall (darwin-386-cgo), const ICANON = 256 pkg syscall (darwin-386-cgo), const ICANON ideal-int pkg syscall (darwin-386-cgo), const ICRNL = 256 pkg syscall (darwin-386-cgo), const ICRNL ideal-int pkg syscall (darwin-386-cgo), const IEXTEN = 1024 pkg syscall (darwin-386-cgo), const IEXTEN ideal-int pkg syscall (darwin-386-cgo), const IFF_ALLMULTI = 512 pkg syscall (darwin-386-cgo), const IFF_ALTPHYS = 16384 pkg syscall (darwin-386-cgo), const IFF_DEBUG = 4 pkg syscall (darwin-386-cgo), const IFF_LINK0 = 4096 pkg syscall (darwin-386-cgo), const IFF_LINK1 = 8192 pkg syscall (darwin-386-cgo), const IFF_LINK2 = 16384 pkg syscall (darwin-386-cgo), const IFF_LOOPBACK = 8 pkg syscall (darwin-386-cgo), const IFF_MULTICAST = 32768 pkg syscall (darwin-386-cgo), const IFF_NOARP = 128 pkg syscall (darwin-386-cgo), const IFF_NOTRAILERS = 32 pkg syscall (darwin-386-cgo), const IFF_OACTIVE = 1024 pkg syscall (darwin-386-cgo), const IFF_POINTOPOINT = 16 pkg syscall (darwin-386-cgo), const IFF_PROMISC = 256 pkg syscall (darwin-386-cgo), const IFF_RUNNING = 64 pkg syscall (darwin-386-cgo), const IFF_SIMPLEX = 2048 pkg syscall (darwin-386-cgo), const IFNAMSIZ = 16 pkg syscall (darwin-386-cgo), const IFT_1822 = 2 pkg syscall (darwin-386-cgo), const IFT_AAL5 = 49 pkg syscall (darwin-386-cgo), const IFT_ARCNET = 35 pkg syscall (darwin-386-cgo), const IFT_ARCNETPLUS = 36 pkg syscall (darwin-386-cgo), const IFT_ATM = 37 pkg syscall (darwin-386-cgo), const IFT_BRIDGE = 209 pkg syscall (darwin-386-cgo), const IFT_CARP = 248 pkg syscall (darwin-386-cgo), const IFT_CELLULAR = 255 pkg syscall (darwin-386-cgo), const IFT_CEPT = 19 pkg syscall (darwin-386-cgo), const IFT_DS3 = 30 pkg syscall (darwin-386-cgo), const IFT_ENC = 244 pkg syscall (darwin-386-cgo), const IFT_EON = 25 pkg syscall (darwin-386-cgo), const IFT_ETHER = 6 pkg syscall (darwin-386-cgo), const IFT_FAITH = 56 pkg syscall (darwin-386-cgo), const IFT_FDDI = 15 pkg syscall (darwin-386-cgo), const IFT_FRELAY = 32 pkg syscall (darwin-386-cgo), const IFT_FRELAYDCE = 44 pkg syscall (darwin-386-cgo), const IFT_GIF = 55 pkg syscall (darwin-386-cgo), const IFT_HDH1822 = 3 pkg syscall (darwin-386-cgo), const IFT_HIPPI = 47 pkg syscall (darwin-386-cgo), const IFT_HSSI = 46 pkg syscall (darwin-386-cgo), const IFT_HY = 14 pkg syscall (darwin-386-cgo), const IFT_IEEE1394 = 144 pkg syscall (darwin-386-cgo), const IFT_IEEE8023ADLAG = 136 pkg syscall (darwin-386-cgo), const IFT_ISDNBASIC = 20 pkg syscall (darwin-386-cgo), const IFT_ISDNPRIMARY = 21 pkg syscall (darwin-386-cgo), const IFT_ISO88022LLC = 41 pkg syscall (darwin-386-cgo), const IFT_ISO88023 = 7 pkg syscall (darwin-386-cgo), const IFT_ISO88024 = 8 pkg syscall (darwin-386-cgo), const IFT_ISO88025 = 9 pkg syscall (darwin-386-cgo), const IFT_ISO88026 = 10 pkg syscall (darwin-386-cgo), const IFT_L2VLAN = 135 pkg syscall (darwin-386-cgo), const IFT_LAPB = 16 pkg syscall (darwin-386-cgo), const IFT_LOCALTALK = 42 pkg syscall (darwin-386-cgo), const IFT_LOOP = 24 pkg syscall (darwin-386-cgo), const IFT_MIOX25 = 38 pkg syscall (darwin-386-cgo), const IFT_MODEM = 48 pkg syscall (darwin-386-cgo), const IFT_NSIP = 27 pkg syscall (darwin-386-cgo), const IFT_OTHER = 1 pkg syscall (darwin-386-cgo), const IFT_P10 = 12 pkg syscall (darwin-386-cgo), const IFT_P80 = 13 pkg syscall (darwin-386-cgo), const IFT_PARA = 34 pkg syscall (darwin-386-cgo), const IFT_PDP = 255 pkg syscall (darwin-386-cgo), const IFT_PFLOG = 245 pkg syscall (darwin-386-cgo), const IFT_PFSYNC = 246 pkg syscall (darwin-386-cgo), const IFT_PPP = 23 pkg syscall (darwin-386-cgo), const IFT_PROPMUX = 54 pkg syscall (darwin-386-cgo), const IFT_PROPVIRTUAL = 53 pkg syscall (darwin-386-cgo), const IFT_PTPSERIAL = 22 pkg syscall (darwin-386-cgo), const IFT_RS232 = 33 pkg syscall (darwin-386-cgo), const IFT_SDLC = 17 pkg syscall (darwin-386-cgo), const IFT_SIP = 31 pkg syscall (darwin-386-cgo), const IFT_SLIP = 28 pkg syscall (darwin-386-cgo), const IFT_SMDSDXI = 43 pkg syscall (darwin-386-cgo), const IFT_SMDSICIP = 52 pkg syscall (darwin-386-cgo), const IFT_SONET = 39 pkg syscall (darwin-386-cgo), const IFT_SONETPATH = 50 pkg syscall (darwin-386-cgo), const IFT_SONETVT = 51 pkg syscall (darwin-386-cgo), const IFT_STARLAN = 11 pkg syscall (darwin-386-cgo), const IFT_STF = 57 pkg syscall (darwin-386-cgo), const IFT_T1 = 18 pkg syscall (darwin-386-cgo), const IFT_ULTRA = 29 pkg syscall (darwin-386-cgo), const IFT_V35 = 45 pkg syscall (darwin-386-cgo), const IFT_X25 = 5 pkg syscall (darwin-386-cgo), const IFT_X25DDN = 4 pkg syscall (darwin-386-cgo), const IFT_X25PLE = 40 pkg syscall (darwin-386-cgo), const IFT_XETHER = 26 pkg syscall (darwin-386-cgo), const IGNBRK = 1 pkg syscall (darwin-386-cgo), const IGNBRK ideal-int pkg syscall (darwin-386-cgo), const IGNCR = 128 pkg syscall (darwin-386-cgo), const IGNCR ideal-int pkg syscall (darwin-386-cgo), const IGNPAR = 4 pkg syscall (darwin-386-cgo), const IGNPAR ideal-int pkg syscall (darwin-386-cgo), const IMAXBEL = 8192 pkg syscall (darwin-386-cgo), const IMAXBEL ideal-int pkg syscall (darwin-386-cgo), const INLCR = 64 pkg syscall (darwin-386-cgo), const INLCR ideal-int pkg syscall (darwin-386-cgo), const INPCK = 16 pkg syscall (darwin-386-cgo), const INPCK ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSA_HOST = 16777215 pkg syscall (darwin-386-cgo), const IN_CLASSA_MAX = 128 pkg syscall (darwin-386-cgo), const IN_CLASSA_NET = 4278190080 pkg syscall (darwin-386-cgo), const IN_CLASSA_NSHIFT = 24 pkg syscall (darwin-386-cgo), const IN_CLASSB_HOST = 65535 pkg syscall (darwin-386-cgo), const IN_CLASSB_MAX = 65536 pkg syscall (darwin-386-cgo), const IN_CLASSB_NET = 4294901760 pkg syscall (darwin-386-cgo), const IN_CLASSB_NSHIFT = 16 pkg syscall (darwin-386-cgo), const IN_CLASSC_HOST = 255 pkg syscall (darwin-386-cgo), const IN_CLASSC_NET = 4294967040 pkg syscall (darwin-386-cgo), const IN_CLASSC_NSHIFT = 8 pkg syscall (darwin-386-cgo), const IN_CLASSD_HOST = 268435455 pkg syscall (darwin-386-cgo), const IN_CLASSD_NET = 4026531840 pkg syscall (darwin-386-cgo), const IN_CLASSD_NSHIFT = 28 pkg syscall (darwin-386-cgo), const IN_LINKLOCALNETNUM = 2851995648 pkg syscall (darwin-386-cgo), const IN_LOOPBACKNET = 127 pkg syscall (darwin-386-cgo), const IPPROTO_3PC = 34 pkg syscall (darwin-386-cgo), const IPPROTO_ADFS = 68 pkg syscall (darwin-386-cgo), const IPPROTO_AH = 51 pkg syscall (darwin-386-cgo), const IPPROTO_AHIP = 61 pkg syscall (darwin-386-cgo), const IPPROTO_APES = 99 pkg syscall (darwin-386-cgo), const IPPROTO_ARGUS = 13 pkg syscall (darwin-386-cgo), const IPPROTO_AX25 = 93 pkg syscall (darwin-386-cgo), const IPPROTO_BHA = 49 pkg syscall (darwin-386-cgo), const IPPROTO_BLT = 30 pkg syscall (darwin-386-cgo), const IPPROTO_BRSATMON = 76 pkg syscall (darwin-386-cgo), const IPPROTO_CFTP = 62 pkg syscall (darwin-386-cgo), const IPPROTO_CHAOS = 16 pkg syscall (darwin-386-cgo), const IPPROTO_CMTP = 38 pkg syscall (darwin-386-cgo), const IPPROTO_CPHB = 73 pkg syscall (darwin-386-cgo), const IPPROTO_CPNX = 72 pkg syscall (darwin-386-cgo), const IPPROTO_DDP = 37 pkg syscall (darwin-386-cgo), const IPPROTO_DGP = 86 pkg syscall (darwin-386-cgo), const IPPROTO_DIVERT = 254 pkg syscall (darwin-386-cgo), const IPPROTO_DONE = 257 pkg syscall (darwin-386-cgo), const IPPROTO_DSTOPTS = 60 pkg syscall (darwin-386-cgo), const IPPROTO_EGP = 8 pkg syscall (darwin-386-cgo), const IPPROTO_EMCON = 14 pkg syscall (darwin-386-cgo), const IPPROTO_ENCAP = 98 pkg syscall (darwin-386-cgo), const IPPROTO_EON = 80 pkg syscall (darwin-386-cgo), const IPPROTO_ESP = 50 pkg syscall (darwin-386-cgo), const IPPROTO_ETHERIP = 97 pkg syscall (darwin-386-cgo), const IPPROTO_FRAGMENT = 44 pkg syscall (darwin-386-cgo), const IPPROTO_GGP = 3 pkg syscall (darwin-386-cgo), const IPPROTO_GMTP = 100 pkg syscall (darwin-386-cgo), const IPPROTO_GRE = 47 pkg syscall (darwin-386-cgo), const IPPROTO_HELLO = 63 pkg syscall (darwin-386-cgo), const IPPROTO_HMP = 20 pkg syscall (darwin-386-cgo), const IPPROTO_HOPOPTS = 0 pkg syscall (darwin-386-cgo), const IPPROTO_ICMP = 1 pkg syscall (darwin-386-cgo), const IPPROTO_ICMPV6 = 58 pkg syscall (darwin-386-cgo), const IPPROTO_IDP = 22 pkg syscall (darwin-386-cgo), const IPPROTO_IDPR = 35 pkg syscall (darwin-386-cgo), const IPPROTO_IDRP = 45 pkg syscall (darwin-386-cgo), const IPPROTO_IGMP = 2 pkg syscall (darwin-386-cgo), const IPPROTO_IGP = 85 pkg syscall (darwin-386-cgo), const IPPROTO_IGRP = 88 pkg syscall (darwin-386-cgo), const IPPROTO_IL = 40 pkg syscall (darwin-386-cgo), const IPPROTO_INLSP = 52 pkg syscall (darwin-386-cgo), const IPPROTO_INP = 32 pkg syscall (darwin-386-cgo), const IPPROTO_IPCOMP = 108 pkg syscall (darwin-386-cgo), const IPPROTO_IPCV = 71 pkg syscall (darwin-386-cgo), const IPPROTO_IPEIP = 94 pkg syscall (darwin-386-cgo), const IPPROTO_IPIP = 4 pkg syscall (darwin-386-cgo), const IPPROTO_IPPC = 67 pkg syscall (darwin-386-cgo), const IPPROTO_IPV4 = 4 pkg syscall (darwin-386-cgo), const IPPROTO_IRTP = 28 pkg syscall (darwin-386-cgo), const IPPROTO_KRYPTOLAN = 65 pkg syscall (darwin-386-cgo), const IPPROTO_LARP = 91 pkg syscall (darwin-386-cgo), const IPPROTO_LEAF1 = 25 pkg syscall (darwin-386-cgo), const IPPROTO_LEAF2 = 26 pkg syscall (darwin-386-cgo), const IPPROTO_MAX = 256 pkg syscall (darwin-386-cgo), const IPPROTO_MAXID = 52 pkg syscall (darwin-386-cgo), const IPPROTO_MEAS = 19 pkg syscall (darwin-386-cgo), const IPPROTO_MHRP = 48 pkg syscall (darwin-386-cgo), const IPPROTO_MICP = 95 pkg syscall (darwin-386-cgo), const IPPROTO_MTP = 92 pkg syscall (darwin-386-cgo), const IPPROTO_MUX = 18 pkg syscall (darwin-386-cgo), const IPPROTO_ND = 77 pkg syscall (darwin-386-cgo), const IPPROTO_NHRP = 54 pkg syscall (darwin-386-cgo), const IPPROTO_NONE = 59 pkg syscall (darwin-386-cgo), const IPPROTO_NSP = 31 pkg syscall (darwin-386-cgo), const IPPROTO_NVPII = 11 pkg syscall (darwin-386-cgo), const IPPROTO_OSPFIGP = 89 pkg syscall (darwin-386-cgo), const IPPROTO_PGM = 113 pkg syscall (darwin-386-cgo), const IPPROTO_PIGP = 9 pkg syscall (darwin-386-cgo), const IPPROTO_PIM = 103 pkg syscall (darwin-386-cgo), const IPPROTO_PRM = 21 pkg syscall (darwin-386-cgo), const IPPROTO_PUP = 12 pkg syscall (darwin-386-cgo), const IPPROTO_PVP = 75 pkg syscall (darwin-386-cgo), const IPPROTO_RAW = 255 pkg syscall (darwin-386-cgo), const IPPROTO_RCCMON = 10 pkg syscall (darwin-386-cgo), const IPPROTO_RDP = 27 pkg syscall (darwin-386-cgo), const IPPROTO_ROUTING = 43 pkg syscall (darwin-386-cgo), const IPPROTO_RSVP = 46 pkg syscall (darwin-386-cgo), const IPPROTO_RVD = 66 pkg syscall (darwin-386-cgo), const IPPROTO_SATEXPAK = 64 pkg syscall (darwin-386-cgo), const IPPROTO_SATMON = 69 pkg syscall (darwin-386-cgo), const IPPROTO_SCCSP = 96 pkg syscall (darwin-386-cgo), const IPPROTO_SCTP = 132 pkg syscall (darwin-386-cgo), const IPPROTO_SDRP = 42 pkg syscall (darwin-386-cgo), const IPPROTO_SEP = 33 pkg syscall (darwin-386-cgo), const IPPROTO_SRPC = 90 pkg syscall (darwin-386-cgo), const IPPROTO_ST = 7 pkg syscall (darwin-386-cgo), const IPPROTO_SVMTP = 82 pkg syscall (darwin-386-cgo), const IPPROTO_SWIPE = 53 pkg syscall (darwin-386-cgo), const IPPROTO_TCF = 87 pkg syscall (darwin-386-cgo), const IPPROTO_TP = 29 pkg syscall (darwin-386-cgo), const IPPROTO_TPXX = 39 pkg syscall (darwin-386-cgo), const IPPROTO_TRUNK1 = 23 pkg syscall (darwin-386-cgo), const IPPROTO_TRUNK2 = 24 pkg syscall (darwin-386-cgo), const IPPROTO_TTP = 84 pkg syscall (darwin-386-cgo), const IPPROTO_VINES = 83 pkg syscall (darwin-386-cgo), const IPPROTO_VISA = 70 pkg syscall (darwin-386-cgo), const IPPROTO_VMTP = 81 pkg syscall (darwin-386-cgo), const IPPROTO_WBEXPAK = 79 pkg syscall (darwin-386-cgo), const IPPROTO_WBMON = 78 pkg syscall (darwin-386-cgo), const IPPROTO_WSN = 74 pkg syscall (darwin-386-cgo), const IPPROTO_XNET = 15 pkg syscall (darwin-386-cgo), const IPPROTO_XTP = 36 pkg syscall (darwin-386-cgo), const IPV6_2292DSTOPTS = 23 pkg syscall (darwin-386-cgo), const IPV6_2292HOPLIMIT = 20 pkg syscall (darwin-386-cgo), const IPV6_2292HOPOPTS = 22 pkg syscall (darwin-386-cgo), const IPV6_2292NEXTHOP = 21 pkg syscall (darwin-386-cgo), const IPV6_2292PKTINFO = 19 pkg syscall (darwin-386-cgo), const IPV6_2292PKTOPTIONS = 25 pkg syscall (darwin-386-cgo), const IPV6_2292RTHDR = 24 pkg syscall (darwin-386-cgo), const IPV6_BINDV6ONLY = 27 pkg syscall (darwin-386-cgo), const IPV6_BOUND_IF = 125 pkg syscall (darwin-386-cgo), const IPV6_CHECKSUM = 26 pkg syscall (darwin-386-cgo), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (darwin-386-cgo), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (darwin-386-cgo), const IPV6_DEFHLIM = 64 pkg syscall (darwin-386-cgo), const IPV6_FAITH = 29 pkg syscall (darwin-386-cgo), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (darwin-386-cgo), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (darwin-386-cgo), const IPV6_FRAGTTL = 120 pkg syscall (darwin-386-cgo), const IPV6_FW_ADD = 30 pkg syscall (darwin-386-cgo), const IPV6_FW_DEL = 31 pkg syscall (darwin-386-cgo), const IPV6_FW_FLUSH = 32 pkg syscall (darwin-386-cgo), const IPV6_FW_GET = 34 pkg syscall (darwin-386-cgo), const IPV6_FW_ZERO = 33 pkg syscall (darwin-386-cgo), const IPV6_HLIMDEC = 1 pkg syscall (darwin-386-cgo), const IPV6_IPSEC_POLICY = 28 pkg syscall (darwin-386-cgo), const IPV6_JOIN_GROUP = 12 pkg syscall (darwin-386-cgo), const IPV6_LEAVE_GROUP = 13 pkg syscall (darwin-386-cgo), const IPV6_MAXHLIM = 255 pkg syscall (darwin-386-cgo), const IPV6_MAXOPTHDR = 2048 pkg syscall (darwin-386-cgo), const IPV6_MAXPACKET = 65535 pkg syscall (darwin-386-cgo), const IPV6_MAX_GROUP_SRC_FILTER = 512 pkg syscall (darwin-386-cgo), const IPV6_MAX_MEMBERSHIPS = 4095 pkg syscall (darwin-386-cgo), const IPV6_MAX_SOCK_SRC_FILTER = 128 pkg syscall (darwin-386-cgo), const IPV6_MIN_MEMBERSHIPS = 31 pkg syscall (darwin-386-cgo), const IPV6_MMTU = 1280 pkg syscall (darwin-386-cgo), const IPV6_MULTICAST_HOPS = 10 pkg syscall (darwin-386-cgo), const IPV6_MULTICAST_IF = 9 pkg syscall (darwin-386-cgo), const IPV6_MULTICAST_LOOP = 11 pkg syscall (darwin-386-cgo), const IPV6_PORTRANGE = 14 pkg syscall (darwin-386-cgo), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (darwin-386-cgo), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (darwin-386-cgo), const IPV6_PORTRANGE_LOW = 2 pkg syscall (darwin-386-cgo), const IPV6_RECVTCLASS = 35 pkg syscall (darwin-386-cgo), const IPV6_RTHDR_LOOSE = 0 pkg syscall (darwin-386-cgo), const IPV6_RTHDR_STRICT = 1 pkg syscall (darwin-386-cgo), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (darwin-386-cgo), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (darwin-386-cgo), const IPV6_TCLASS = 36 pkg syscall (darwin-386-cgo), const IPV6_UNICAST_HOPS = 4 pkg syscall (darwin-386-cgo), const IPV6_V6ONLY = 27 pkg syscall (darwin-386-cgo), const IPV6_VERSION = 96 pkg syscall (darwin-386-cgo), const IPV6_VERSION_MASK = 240 pkg syscall (darwin-386-cgo), const IP_ADD_MEMBERSHIP = 12 pkg syscall (darwin-386-cgo), const IP_ADD_SOURCE_MEMBERSHIP = 70 pkg syscall (darwin-386-cgo), const IP_BLOCK_SOURCE = 72 pkg syscall (darwin-386-cgo), const IP_BOUND_IF = 25 pkg syscall (darwin-386-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (darwin-386-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (darwin-386-cgo), const IP_DF = 16384 pkg syscall (darwin-386-cgo), const IP_DROP_MEMBERSHIP = 13 pkg syscall (darwin-386-cgo), const IP_DROP_SOURCE_MEMBERSHIP = 71 pkg syscall (darwin-386-cgo), const IP_DUMMYNET_CONFIGURE = 60 pkg syscall (darwin-386-cgo), const IP_DUMMYNET_DEL = 61 pkg syscall (darwin-386-cgo), const IP_DUMMYNET_FLUSH = 62 pkg syscall (darwin-386-cgo), const IP_DUMMYNET_GET = 64 pkg syscall (darwin-386-cgo), const IP_FAITH = 22 pkg syscall (darwin-386-cgo), const IP_FW_ADD = 40 pkg syscall (darwin-386-cgo), const IP_FW_DEL = 41 pkg syscall (darwin-386-cgo), const IP_FW_FLUSH = 42 pkg syscall (darwin-386-cgo), const IP_FW_GET = 44 pkg syscall (darwin-386-cgo), const IP_FW_RESETLOG = 45 pkg syscall (darwin-386-cgo), const IP_FW_ZERO = 43 pkg syscall (darwin-386-cgo), const IP_HDRINCL = 2 pkg syscall (darwin-386-cgo), const IP_IPSEC_POLICY = 21 pkg syscall (darwin-386-cgo), const IP_MAXPACKET = 65535 pkg syscall (darwin-386-cgo), const IP_MAX_GROUP_SRC_FILTER = 512 pkg syscall (darwin-386-cgo), const IP_MAX_MEMBERSHIPS = 4095 pkg syscall (darwin-386-cgo), const IP_MAX_SOCK_MUTE_FILTER = 128 pkg syscall (darwin-386-cgo), const IP_MAX_SOCK_SRC_FILTER = 128 pkg syscall (darwin-386-cgo), const IP_MF = 8192 pkg syscall (darwin-386-cgo), const IP_MIN_MEMBERSHIPS = 31 pkg syscall (darwin-386-cgo), const IP_MSFILTER = 74 pkg syscall (darwin-386-cgo), const IP_MSS = 576 pkg syscall (darwin-386-cgo), const IP_MULTICAST_IF = 9 pkg syscall (darwin-386-cgo), const IP_MULTICAST_IFINDEX = 66 pkg syscall (darwin-386-cgo), const IP_MULTICAST_LOOP = 11 pkg syscall (darwin-386-cgo), const IP_MULTICAST_TTL = 10 pkg syscall (darwin-386-cgo), const IP_MULTICAST_VIF = 14 pkg syscall (darwin-386-cgo), const IP_NAT__XXX = 55 pkg syscall (darwin-386-cgo), const IP_OFFMASK = 8191 pkg syscall (darwin-386-cgo), const IP_OLD_FW_ADD = 50 pkg syscall (darwin-386-cgo), const IP_OLD_FW_DEL = 51 pkg syscall (darwin-386-cgo), const IP_OLD_FW_FLUSH = 52 pkg syscall (darwin-386-cgo), const IP_OLD_FW_GET = 54 pkg syscall (darwin-386-cgo), const IP_OLD_FW_RESETLOG = 56 pkg syscall (darwin-386-cgo), const IP_OLD_FW_ZERO = 53 pkg syscall (darwin-386-cgo), const IP_OPTIONS = 1 pkg syscall (darwin-386-cgo), const IP_PKTINFO = 26 pkg syscall (darwin-386-cgo), const IP_PORTRANGE = 19 pkg syscall (darwin-386-cgo), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (darwin-386-cgo), const IP_PORTRANGE_HIGH = 1 pkg syscall (darwin-386-cgo), const IP_PORTRANGE_LOW = 2 pkg syscall (darwin-386-cgo), const IP_RECVDSTADDR = 7 pkg syscall (darwin-386-cgo), const IP_RECVIF = 20 pkg syscall (darwin-386-cgo), const IP_RECVOPTS = 5 pkg syscall (darwin-386-cgo), const IP_RECVPKTINFO = 26 pkg syscall (darwin-386-cgo), const IP_RECVRETOPTS = 6 pkg syscall (darwin-386-cgo), const IP_RECVTTL = 24 pkg syscall (darwin-386-cgo), const IP_RETOPTS = 8 pkg syscall (darwin-386-cgo), const IP_RF = 32768 pkg syscall (darwin-386-cgo), const IP_RSVP_OFF = 16 pkg syscall (darwin-386-cgo), const IP_RSVP_ON = 15 pkg syscall (darwin-386-cgo), const IP_RSVP_VIF_OFF = 18 pkg syscall (darwin-386-cgo), const IP_RSVP_VIF_ON = 17 pkg syscall (darwin-386-cgo), const IP_STRIPHDR = 23 pkg syscall (darwin-386-cgo), const IP_TOS = 3 pkg syscall (darwin-386-cgo), const IP_TRAFFIC_MGT_BACKGROUND = 65 pkg syscall (darwin-386-cgo), const IP_TTL = 4 pkg syscall (darwin-386-cgo), const IP_UNBLOCK_SOURCE = 73 pkg syscall (darwin-386-cgo), const ISIG = 128 pkg syscall (darwin-386-cgo), const ISIG ideal-int pkg syscall (darwin-386-cgo), const ISTRIP = 32 pkg syscall (darwin-386-cgo), const ISTRIP ideal-int pkg syscall (darwin-386-cgo), const IUTF8 = 16384 pkg syscall (darwin-386-cgo), const IUTF8 ideal-int pkg syscall (darwin-386-cgo), const IXANY = 2048 pkg syscall (darwin-386-cgo), const IXANY ideal-int pkg syscall (darwin-386-cgo), const IXOFF = 1024 pkg syscall (darwin-386-cgo), const IXOFF ideal-int pkg syscall (darwin-386-cgo), const IXON = 512 pkg syscall (darwin-386-cgo), const IXON ideal-int pkg syscall (darwin-386-cgo), const ImplementsGetwd = false pkg syscall (darwin-386-cgo), const LOCK_EX = 2 pkg syscall (darwin-386-cgo), const LOCK_NB = 4 pkg syscall (darwin-386-cgo), const LOCK_SH = 1 pkg syscall (darwin-386-cgo), const LOCK_UN = 8 pkg syscall (darwin-386-cgo), const MADV_CAN_REUSE = 9 pkg syscall (darwin-386-cgo), const MADV_DONTNEED = 4 pkg syscall (darwin-386-cgo), const MADV_FREE = 5 pkg syscall (darwin-386-cgo), const MADV_FREE_REUSABLE = 7 pkg syscall (darwin-386-cgo), const MADV_FREE_REUSE = 8 pkg syscall (darwin-386-cgo), const MADV_NORMAL = 0 pkg syscall (darwin-386-cgo), const MADV_RANDOM = 1 pkg syscall (darwin-386-cgo), const MADV_SEQUENTIAL = 2 pkg syscall (darwin-386-cgo), const MADV_WILLNEED = 3 pkg syscall (darwin-386-cgo), const MADV_ZERO_WIRED_PAGES = 6 pkg syscall (darwin-386-cgo), const MAP_ANON = 4096 pkg syscall (darwin-386-cgo), const MAP_COPY = 2 pkg syscall (darwin-386-cgo), const MAP_FILE = 0 pkg syscall (darwin-386-cgo), const MAP_FIXED = 16 pkg syscall (darwin-386-cgo), const MAP_HASSEMAPHORE = 512 pkg syscall (darwin-386-cgo), const MAP_JIT = 2048 pkg syscall (darwin-386-cgo), const MAP_NOCACHE = 1024 pkg syscall (darwin-386-cgo), const MAP_NOEXTEND = 256 pkg syscall (darwin-386-cgo), const MAP_NORESERVE = 64 pkg syscall (darwin-386-cgo), const MAP_PRIVATE = 2 pkg syscall (darwin-386-cgo), const MAP_RENAME = 32 pkg syscall (darwin-386-cgo), const MAP_RESERVED0080 = 128 pkg syscall (darwin-386-cgo), const MAP_SHARED = 1 pkg syscall (darwin-386-cgo), const MCL_CURRENT = 1 pkg syscall (darwin-386-cgo), const MCL_FUTURE = 2 pkg syscall (darwin-386-cgo), const MSG_CTRUNC = 32 pkg syscall (darwin-386-cgo), const MSG_DONTROUTE = 4 pkg syscall (darwin-386-cgo), const MSG_DONTWAIT = 128 pkg syscall (darwin-386-cgo), const MSG_EOF = 256 pkg syscall (darwin-386-cgo), const MSG_EOR = 8 pkg syscall (darwin-386-cgo), const MSG_FLUSH = 1024 pkg syscall (darwin-386-cgo), const MSG_HAVEMORE = 8192 pkg syscall (darwin-386-cgo), const MSG_HOLD = 2048 pkg syscall (darwin-386-cgo), const MSG_NEEDSA = 65536 pkg syscall (darwin-386-cgo), const MSG_OOB = 1 pkg syscall (darwin-386-cgo), const MSG_PEEK = 2 pkg syscall (darwin-386-cgo), const MSG_RCVMORE = 16384 pkg syscall (darwin-386-cgo), const MSG_SEND = 4096 pkg syscall (darwin-386-cgo), const MSG_TRUNC = 16 pkg syscall (darwin-386-cgo), const MSG_WAITALL = 64 pkg syscall (darwin-386-cgo), const MSG_WAITSTREAM = 512 pkg syscall (darwin-386-cgo), const MS_ASYNC = 1 pkg syscall (darwin-386-cgo), const MS_DEACTIVATE = 8 pkg syscall (darwin-386-cgo), const MS_INVALIDATE = 2 pkg syscall (darwin-386-cgo), const MS_KILLPAGES = 4 pkg syscall (darwin-386-cgo), const MS_SYNC = 16 pkg syscall (darwin-386-cgo), const NAME_MAX = 255 pkg syscall (darwin-386-cgo), const NET_RT_DUMP = 1 pkg syscall (darwin-386-cgo), const NET_RT_DUMP2 = 7 pkg syscall (darwin-386-cgo), const NET_RT_FLAGS = 2 pkg syscall (darwin-386-cgo), const NET_RT_IFLIST = 3 pkg syscall (darwin-386-cgo), const NET_RT_IFLIST2 = 6 pkg syscall (darwin-386-cgo), const NET_RT_MAXID = 10 pkg syscall (darwin-386-cgo), const NET_RT_STAT = 4 pkg syscall (darwin-386-cgo), const NET_RT_TRASH = 5 pkg syscall (darwin-386-cgo), const NOFLSH = 2147483648 pkg syscall (darwin-386-cgo), const NOFLSH ideal-int pkg syscall (darwin-386-cgo), const NOTE_ABSOLUTE = 8 pkg syscall (darwin-386-cgo), const NOTE_ATTRIB = 8 pkg syscall (darwin-386-cgo), const NOTE_CHILD = 4 pkg syscall (darwin-386-cgo), const NOTE_DELETE = 1 pkg syscall (darwin-386-cgo), const NOTE_EXEC = 536870912 pkg syscall (darwin-386-cgo), const NOTE_EXIT = 2147483648 pkg syscall (darwin-386-cgo), const NOTE_EXITSTATUS = 67108864 pkg syscall (darwin-386-cgo), const NOTE_EXTEND = 4 pkg syscall (darwin-386-cgo), const NOTE_FFAND = 1073741824 pkg syscall (darwin-386-cgo), const NOTE_FFCOPY = 3221225472 pkg syscall (darwin-386-cgo), const NOTE_FFCTRLMASK = 3221225472 pkg syscall (darwin-386-cgo), const NOTE_FFLAGSMASK = 16777215 pkg syscall (darwin-386-cgo), const NOTE_FFNOP = 0 pkg syscall (darwin-386-cgo), const NOTE_FFOR = 2147483648 pkg syscall (darwin-386-cgo), const NOTE_FORK = 1073741824 pkg syscall (darwin-386-cgo), const NOTE_LINK = 16 pkg syscall (darwin-386-cgo), const NOTE_LOWAT = 1 pkg syscall (darwin-386-cgo), const NOTE_NONE = 128 pkg syscall (darwin-386-cgo), const NOTE_NSECONDS = 4 pkg syscall (darwin-386-cgo), const NOTE_PCTRLMASK = -1048576 pkg syscall (darwin-386-cgo), const NOTE_PDATAMASK = 1048575 pkg syscall (darwin-386-cgo), const NOTE_REAP = 268435456 pkg syscall (darwin-386-cgo), const NOTE_RENAME = 32 pkg syscall (darwin-386-cgo), const NOTE_RESOURCEEND = 33554432 pkg syscall (darwin-386-cgo), const NOTE_REVOKE = 64 pkg syscall (darwin-386-cgo), const NOTE_SECONDS = 1 pkg syscall (darwin-386-cgo), const NOTE_SIGNAL = 134217728 pkg syscall (darwin-386-cgo), const NOTE_TRACK = 1 pkg syscall (darwin-386-cgo), const NOTE_TRACKERR = 2 pkg syscall (darwin-386-cgo), const NOTE_TRIGGER = 16777216 pkg syscall (darwin-386-cgo), const NOTE_USECONDS = 2 pkg syscall (darwin-386-cgo), const NOTE_VM_ERROR = 268435456 pkg syscall (darwin-386-cgo), const NOTE_VM_PRESSURE = 2147483648 pkg syscall (darwin-386-cgo), const NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 536870912 pkg syscall (darwin-386-cgo), const NOTE_VM_PRESSURE_TERMINATE = 1073741824 pkg syscall (darwin-386-cgo), const NOTE_WRITE = 2 pkg syscall (darwin-386-cgo), const OCRNL = 16 pkg syscall (darwin-386-cgo), const OCRNL ideal-int pkg syscall (darwin-386-cgo), const OFDEL = 131072 pkg syscall (darwin-386-cgo), const OFDEL ideal-int pkg syscall (darwin-386-cgo), const OFILL = 128 pkg syscall (darwin-386-cgo), const OFILL ideal-int pkg syscall (darwin-386-cgo), const ONLCR = 2 pkg syscall (darwin-386-cgo), const ONLCR ideal-int pkg syscall (darwin-386-cgo), const ONLRET = 64 pkg syscall (darwin-386-cgo), const ONLRET ideal-int pkg syscall (darwin-386-cgo), const ONOCR = 32 pkg syscall (darwin-386-cgo), const ONOCR ideal-int pkg syscall (darwin-386-cgo), const ONOEOT = 8 pkg syscall (darwin-386-cgo), const ONOEOT ideal-int pkg syscall (darwin-386-cgo), const OPOST = 1 pkg syscall (darwin-386-cgo), const OPOST ideal-int pkg syscall (darwin-386-cgo), const O_ACCMODE = 3 pkg syscall (darwin-386-cgo), const O_ALERT = 536870912 pkg syscall (darwin-386-cgo), const O_APPEND = 8 pkg syscall (darwin-386-cgo), const O_ASYNC = 64 pkg syscall (darwin-386-cgo), const O_CLOEXEC = 16777216 pkg syscall (darwin-386-cgo), const O_CREAT = 512 pkg syscall (darwin-386-cgo), const O_DIRECTORY = 1048576 pkg syscall (darwin-386-cgo), const O_DSYNC = 4194304 pkg syscall (darwin-386-cgo), const O_EVTONLY = 32768 pkg syscall (darwin-386-cgo), const O_EXCL = 2048 pkg syscall (darwin-386-cgo), const O_EXLOCK = 32 pkg syscall (darwin-386-cgo), const O_FSYNC = 128 pkg syscall (darwin-386-cgo), const O_NDELAY = 4 pkg syscall (darwin-386-cgo), const O_NOCTTY = 131072 pkg syscall (darwin-386-cgo), const O_NOFOLLOW = 256 pkg syscall (darwin-386-cgo), const O_NONBLOCK = 4 pkg syscall (darwin-386-cgo), const O_POPUP = 2147483648 pkg syscall (darwin-386-cgo), const O_SHLOCK = 16 pkg syscall (darwin-386-cgo), const O_SYMLINK = 2097152 pkg syscall (darwin-386-cgo), const O_SYNC = 128 pkg syscall (darwin-386-cgo), const O_TRUNC = 1024 pkg syscall (darwin-386-cgo), const PARENB = 4096 pkg syscall (darwin-386-cgo), const PARENB ideal-int pkg syscall (darwin-386-cgo), const PARMRK = 8 pkg syscall (darwin-386-cgo), const PARMRK ideal-int pkg syscall (darwin-386-cgo), const PARODD = 8192 pkg syscall (darwin-386-cgo), const PARODD ideal-int pkg syscall (darwin-386-cgo), const PENDIN = 536870912 pkg syscall (darwin-386-cgo), const PENDIN ideal-int pkg syscall (darwin-386-cgo), const PROT_EXEC = 4 pkg syscall (darwin-386-cgo), const PROT_NONE = 0 pkg syscall (darwin-386-cgo), const PROT_READ = 1 pkg syscall (darwin-386-cgo), const PROT_WRITE = 2 pkg syscall (darwin-386-cgo), const PTRACE_CONT = 7 pkg syscall (darwin-386-cgo), const PTRACE_KILL = 8 pkg syscall (darwin-386-cgo), const PTRACE_TRACEME = 0 pkg syscall (darwin-386-cgo), const PT_ATTACH = 10 pkg syscall (darwin-386-cgo), const PT_ATTACHEXC = 14 pkg syscall (darwin-386-cgo), const PT_CONTINUE = 7 pkg syscall (darwin-386-cgo), const PT_DENY_ATTACH = 31 pkg syscall (darwin-386-cgo), const PT_DETACH = 11 pkg syscall (darwin-386-cgo), const PT_FIRSTMACH = 32 pkg syscall (darwin-386-cgo), const PT_FORCEQUOTA = 30 pkg syscall (darwin-386-cgo), const PT_KILL = 8 pkg syscall (darwin-386-cgo), const PT_READ_D = 2 pkg syscall (darwin-386-cgo), const PT_READ_I = 1 pkg syscall (darwin-386-cgo), const PT_READ_U = 3 pkg syscall (darwin-386-cgo), const PT_SIGEXC = 12 pkg syscall (darwin-386-cgo), const PT_STEP = 9 pkg syscall (darwin-386-cgo), const PT_THUPDATE = 13 pkg syscall (darwin-386-cgo), const PT_TRACE_ME = 0 pkg syscall (darwin-386-cgo), const PT_WRITE_D = 5 pkg syscall (darwin-386-cgo), const PT_WRITE_I = 4 pkg syscall (darwin-386-cgo), const PT_WRITE_U = 6 pkg syscall (darwin-386-cgo), const RLIMIT_AS = 5 pkg syscall (darwin-386-cgo), const RLIMIT_CORE = 4 pkg syscall (darwin-386-cgo), const RLIMIT_CPU = 0 pkg syscall (darwin-386-cgo), const RLIMIT_DATA = 2 pkg syscall (darwin-386-cgo), const RLIMIT_FSIZE = 1 pkg syscall (darwin-386-cgo), const RLIMIT_NOFILE = 8 pkg syscall (darwin-386-cgo), const RLIMIT_STACK = 3 pkg syscall (darwin-386-cgo), const RLIM_INFINITY = 9223372036854775807 pkg syscall (darwin-386-cgo), const RTAX_AUTHOR = 6 pkg syscall (darwin-386-cgo), const RTAX_BRD = 7 pkg syscall (darwin-386-cgo), const RTAX_DST = 0 pkg syscall (darwin-386-cgo), const RTAX_GATEWAY = 1 pkg syscall (darwin-386-cgo), const RTAX_GENMASK = 3 pkg syscall (darwin-386-cgo), const RTAX_IFA = 5 pkg syscall (darwin-386-cgo), const RTAX_IFP = 4 pkg syscall (darwin-386-cgo), const RTAX_MAX = 8 pkg syscall (darwin-386-cgo), const RTAX_NETMASK = 2 pkg syscall (darwin-386-cgo), const RTA_AUTHOR = 64 pkg syscall (darwin-386-cgo), const RTA_BRD = 128 pkg syscall (darwin-386-cgo), const RTA_DST = 1 pkg syscall (darwin-386-cgo), const RTA_GATEWAY = 2 pkg syscall (darwin-386-cgo), const RTA_GENMASK = 8 pkg syscall (darwin-386-cgo), const RTA_IFA = 32 pkg syscall (darwin-386-cgo), const RTA_IFP = 16 pkg syscall (darwin-386-cgo), const RTA_NETMASK = 4 pkg syscall (darwin-386-cgo), const RTF_BLACKHOLE = 4096 pkg syscall (darwin-386-cgo), const RTF_BROADCAST = 4194304 pkg syscall (darwin-386-cgo), const RTF_CLONING = 256 pkg syscall (darwin-386-cgo), const RTF_CONDEMNED = 33554432 pkg syscall (darwin-386-cgo), const RTF_DELCLONE = 128 pkg syscall (darwin-386-cgo), const RTF_DONE = 64 pkg syscall (darwin-386-cgo), const RTF_DYNAMIC = 16 pkg syscall (darwin-386-cgo), const RTF_GATEWAY = 2 pkg syscall (darwin-386-cgo), const RTF_HOST = 4 pkg syscall (darwin-386-cgo), const RTF_IFREF = 67108864 pkg syscall (darwin-386-cgo), const RTF_IFSCOPE = 16777216 pkg syscall (darwin-386-cgo), const RTF_LLINFO = 1024 pkg syscall (darwin-386-cgo), const RTF_LOCAL = 2097152 pkg syscall (darwin-386-cgo), const RTF_MODIFIED = 32 pkg syscall (darwin-386-cgo), const RTF_MULTICAST = 8388608 pkg syscall (darwin-386-cgo), const RTF_PINNED = 1048576 pkg syscall (darwin-386-cgo), const RTF_PRCLONING = 65536 pkg syscall (darwin-386-cgo), const RTF_PROTO1 = 32768 pkg syscall (darwin-386-cgo), const RTF_PROTO2 = 16384 pkg syscall (darwin-386-cgo), const RTF_PROTO3 = 262144 pkg syscall (darwin-386-cgo), const RTF_REJECT = 8 pkg syscall (darwin-386-cgo), const RTF_STATIC = 2048 pkg syscall (darwin-386-cgo), const RTF_UP = 1 pkg syscall (darwin-386-cgo), const RTF_WASCLONED = 131072 pkg syscall (darwin-386-cgo), const RTF_XRESOLVE = 512 pkg syscall (darwin-386-cgo), const RTM_ADD = 1 pkg syscall (darwin-386-cgo), const RTM_CHANGE = 3 pkg syscall (darwin-386-cgo), const RTM_DELADDR = 13 pkg syscall (darwin-386-cgo), const RTM_DELETE = 2 pkg syscall (darwin-386-cgo), const RTM_DELMADDR = 16 pkg syscall (darwin-386-cgo), const RTM_GET = 4 pkg syscall (darwin-386-cgo), const RTM_GET2 = 20 pkg syscall (darwin-386-cgo), const RTM_IFINFO = 14 pkg syscall (darwin-386-cgo), const RTM_IFINFO2 = 18 pkg syscall (darwin-386-cgo), const RTM_LOCK = 8 pkg syscall (darwin-386-cgo), const RTM_LOSING = 5 pkg syscall (darwin-386-cgo), const RTM_MISS = 7 pkg syscall (darwin-386-cgo), const RTM_NEWADDR = 12 pkg syscall (darwin-386-cgo), const RTM_NEWMADDR = 15 pkg syscall (darwin-386-cgo), const RTM_NEWMADDR2 = 19 pkg syscall (darwin-386-cgo), const RTM_OLDADD = 9 pkg syscall (darwin-386-cgo), const RTM_OLDDEL = 10 pkg syscall (darwin-386-cgo), const RTM_REDIRECT = 6 pkg syscall (darwin-386-cgo), const RTM_RESOLVE = 11 pkg syscall (darwin-386-cgo), const RTM_RTTUNIT = 1000000 pkg syscall (darwin-386-cgo), const RTM_VERSION = 5 pkg syscall (darwin-386-cgo), const RTV_EXPIRE = 4 pkg syscall (darwin-386-cgo), const RTV_HOPCOUNT = 2 pkg syscall (darwin-386-cgo), const RTV_MTU = 1 pkg syscall (darwin-386-cgo), const RTV_RPIPE = 8 pkg syscall (darwin-386-cgo), const RTV_RTT = 64 pkg syscall (darwin-386-cgo), const RTV_RTTVAR = 128 pkg syscall (darwin-386-cgo), const RTV_SPIPE = 16 pkg syscall (darwin-386-cgo), const RTV_SSTHRESH = 32 pkg syscall (darwin-386-cgo), const RUSAGE_CHILDREN = -1 pkg syscall (darwin-386-cgo), const RUSAGE_SELF = 0 pkg syscall (darwin-386-cgo), const SCM_CREDS = 3 pkg syscall (darwin-386-cgo), const SCM_RIGHTS = 1 pkg syscall (darwin-386-cgo), const SCM_TIMESTAMP = 2 pkg syscall (darwin-386-cgo), const SCM_TIMESTAMP_MONOTONIC = 4 pkg syscall (darwin-386-cgo), const SIGBUS = 10 pkg syscall (darwin-386-cgo), const SIGCHLD = 20 pkg syscall (darwin-386-cgo), const SIGCONT = 19 pkg syscall (darwin-386-cgo), const SIGEMT = 7 pkg syscall (darwin-386-cgo), const SIGINFO = 29 pkg syscall (darwin-386-cgo), const SIGIO = 23 pkg syscall (darwin-386-cgo), const SIGIOT = 6 pkg syscall (darwin-386-cgo), const SIGPROF = 27 pkg syscall (darwin-386-cgo), const SIGSTOP = 17 pkg syscall (darwin-386-cgo), const SIGSYS = 12 pkg syscall (darwin-386-cgo), const SIGTSTP = 18 pkg syscall (darwin-386-cgo), const SIGTTIN = 21 pkg syscall (darwin-386-cgo), const SIGTTOU = 22 pkg syscall (darwin-386-cgo), const SIGURG = 16 pkg syscall (darwin-386-cgo), const SIGUSR1 = 30 pkg syscall (darwin-386-cgo), const SIGUSR2 = 31 pkg syscall (darwin-386-cgo), const SIGVTALRM = 26 pkg syscall (darwin-386-cgo), const SIGWINCH = 28 pkg syscall (darwin-386-cgo), const SIGXCPU = 24 pkg syscall (darwin-386-cgo), const SIGXFSZ = 25 pkg syscall (darwin-386-cgo), const SIOCADDMULTI = 2149607729 pkg syscall (darwin-386-cgo), const SIOCAIFADDR = 2151704858 pkg syscall (darwin-386-cgo), const SIOCALIFADDR = 2165860637 pkg syscall (darwin-386-cgo), const SIOCARPIPLL = 3223349544 pkg syscall (darwin-386-cgo), const SIOCATMARK = 1074033415 pkg syscall (darwin-386-cgo), const SIOCAUTOADDR = 3223349542 pkg syscall (darwin-386-cgo), const SIOCAUTONETMASK = 2149607719 pkg syscall (darwin-386-cgo), const SIOCDELMULTI = 2149607730 pkg syscall (darwin-386-cgo), const SIOCDIFADDR = 2149607705 pkg syscall (darwin-386-cgo), const SIOCDIFPHYADDR = 2149607745 pkg syscall (darwin-386-cgo), const SIOCDLIFADDR = 2165860639 pkg syscall (darwin-386-cgo), const SIOCGDRVSPEC = 3223087483 pkg syscall (darwin-386-cgo), const SIOCGETSGCNT = 3222565404 pkg syscall (darwin-386-cgo), const SIOCGETVIFCNT = 3222565403 pkg syscall (darwin-386-cgo), const SIOCGETVLAN = 3223349631 pkg syscall (darwin-386-cgo), const SIOCGHIWAT = 1074033409 pkg syscall (darwin-386-cgo), const SIOCGIFADDR = 3223349537 pkg syscall (darwin-386-cgo), const SIOCGIFALTMTU = 3223349576 pkg syscall (darwin-386-cgo), const SIOCGIFASYNCMAP = 3223349628 pkg syscall (darwin-386-cgo), const SIOCGIFBOND = 3223349575 pkg syscall (darwin-386-cgo), const SIOCGIFBRDADDR = 3223349539 pkg syscall (darwin-386-cgo), const SIOCGIFCAP = 3223349595 pkg syscall (darwin-386-cgo), const SIOCGIFCONF = 3221776676 pkg syscall (darwin-386-cgo), const SIOCGIFDEVMTU = 3223349572 pkg syscall (darwin-386-cgo), const SIOCGIFDSTADDR = 3223349538 pkg syscall (darwin-386-cgo), const SIOCGIFFLAGS = 3223349521 pkg syscall (darwin-386-cgo), const SIOCGIFGENERIC = 3223349562 pkg syscall (darwin-386-cgo), const SIOCGIFKPI = 3223349639 pkg syscall (darwin-386-cgo), const SIOCGIFMAC = 3223349634 pkg syscall (darwin-386-cgo), const SIOCGIFMEDIA = 3223873848 pkg syscall (darwin-386-cgo), const SIOCGIFMETRIC = 3223349527 pkg syscall (darwin-386-cgo), const SIOCGIFMTU = 3223349555 pkg syscall (darwin-386-cgo), const SIOCGIFNETMASK = 3223349541 pkg syscall (darwin-386-cgo), const SIOCGIFPDSTADDR = 3223349568 pkg syscall (darwin-386-cgo), const SIOCGIFPHYS = 3223349557 pkg syscall (darwin-386-cgo), const SIOCGIFPSRCADDR = 3223349567 pkg syscall (darwin-386-cgo), const SIOCGIFSTATUS = 3274795325 pkg syscall (darwin-386-cgo), const SIOCGIFVLAN = 3223349631 pkg syscall (darwin-386-cgo), const SIOCGIFWAKEFLAGS = 3223349640 pkg syscall (darwin-386-cgo), const SIOCGLIFADDR = 3239602462 pkg syscall (darwin-386-cgo), const SIOCGLIFPHYADDR = 3239602499 pkg syscall (darwin-386-cgo), const SIOCGLOWAT = 1074033411 pkg syscall (darwin-386-cgo), const SIOCGPGRP = 1074033417 pkg syscall (darwin-386-cgo), const SIOCIFCREATE = 3223349624 pkg syscall (darwin-386-cgo), const SIOCIFCREATE2 = 3223349626 pkg syscall (darwin-386-cgo), const SIOCIFDESTROY = 2149607801 pkg syscall (darwin-386-cgo), const SIOCRSLVMULTI = 3221776699 pkg syscall (darwin-386-cgo), const SIOCSDRVSPEC = 2149345659 pkg syscall (darwin-386-cgo), const SIOCSETVLAN = 2149607806 pkg syscall (darwin-386-cgo), const SIOCSHIWAT = 2147775232 pkg syscall (darwin-386-cgo), const SIOCSIFADDR = 2149607692 pkg syscall (darwin-386-cgo), const SIOCSIFALTMTU = 2149607749 pkg syscall (darwin-386-cgo), const SIOCSIFASYNCMAP = 2149607805 pkg syscall (darwin-386-cgo), const SIOCSIFBOND = 2149607750 pkg syscall (darwin-386-cgo), const SIOCSIFBRDADDR = 2149607699 pkg syscall (darwin-386-cgo), const SIOCSIFCAP = 2149607770 pkg syscall (darwin-386-cgo), const SIOCSIFDSTADDR = 2149607694 pkg syscall (darwin-386-cgo), const SIOCSIFFLAGS = 2149607696 pkg syscall (darwin-386-cgo), const SIOCSIFGENERIC = 2149607737 pkg syscall (darwin-386-cgo), const SIOCSIFKPI = 2149607814 pkg syscall (darwin-386-cgo), const SIOCSIFLLADDR = 2149607740 pkg syscall (darwin-386-cgo), const SIOCSIFMAC = 2149607811 pkg syscall (darwin-386-cgo), const SIOCSIFMEDIA = 3223349559 pkg syscall (darwin-386-cgo), const SIOCSIFMETRIC = 2149607704 pkg syscall (darwin-386-cgo), const SIOCSIFMTU = 2149607732 pkg syscall (darwin-386-cgo), const SIOCSIFNETMASK = 2149607702 pkg syscall (darwin-386-cgo), const SIOCSIFPHYADDR = 2151704894 pkg syscall (darwin-386-cgo), const SIOCSIFPHYS = 2149607734 pkg syscall (darwin-386-cgo), const SIOCSIFVLAN = 2149607806 pkg syscall (darwin-386-cgo), const SIOCSLIFPHYADDR = 2165860674 pkg syscall (darwin-386-cgo), const SIOCSLOWAT = 2147775234 pkg syscall (darwin-386-cgo), const SIOCSPGRP = 2147775240 pkg syscall (darwin-386-cgo), const SOCK_MAXADDRLEN = 255 pkg syscall (darwin-386-cgo), const SOCK_RDM = 4 pkg syscall (darwin-386-cgo), const SOL_SOCKET = 65535 pkg syscall (darwin-386-cgo), const SOMAXCONN = 128 pkg syscall (darwin-386-cgo), const SO_ACCEPTCONN = 2 pkg syscall (darwin-386-cgo), const SO_BROADCAST = 32 pkg syscall (darwin-386-cgo), const SO_DEBUG = 1 pkg syscall (darwin-386-cgo), const SO_DONTROUTE = 16 pkg syscall (darwin-386-cgo), const SO_DONTTRUNC = 8192 pkg syscall (darwin-386-cgo), const SO_ERROR = 4103 pkg syscall (darwin-386-cgo), const SO_KEEPALIVE = 8 pkg syscall (darwin-386-cgo), const SO_LABEL = 4112 pkg syscall (darwin-386-cgo), const SO_LINGER = 128 pkg syscall (darwin-386-cgo), const SO_LINGER_SEC = 4224 pkg syscall (darwin-386-cgo), const SO_NKE = 4129 pkg syscall (darwin-386-cgo), const SO_NOADDRERR = 4131 pkg syscall (darwin-386-cgo), const SO_NOSIGPIPE = 4130 pkg syscall (darwin-386-cgo), const SO_NOTIFYCONFLICT = 4134 pkg syscall (darwin-386-cgo), const SO_NP_EXTENSIONS = 4227 pkg syscall (darwin-386-cgo), const SO_NREAD = 4128 pkg syscall (darwin-386-cgo), const SO_NWRITE = 4132 pkg syscall (darwin-386-cgo), const SO_OOBINLINE = 256 pkg syscall (darwin-386-cgo), const SO_PEERLABEL = 4113 pkg syscall (darwin-386-cgo), const SO_RANDOMPORT = 4226 pkg syscall (darwin-386-cgo), const SO_RCVBUF = 4098 pkg syscall (darwin-386-cgo), const SO_RCVLOWAT = 4100 pkg syscall (darwin-386-cgo), const SO_RCVTIMEO = 4102 pkg syscall (darwin-386-cgo), const SO_RESTRICTIONS = 4225 pkg syscall (darwin-386-cgo), const SO_RESTRICT_DENYIN = 1 pkg syscall (darwin-386-cgo), const SO_RESTRICT_DENYOUT = 2 pkg syscall (darwin-386-cgo), const SO_RESTRICT_DENYSET = 2147483648 pkg syscall (darwin-386-cgo), const SO_REUSEADDR = 4 pkg syscall (darwin-386-cgo), const SO_REUSEPORT = 512 pkg syscall (darwin-386-cgo), const SO_REUSESHAREUID = 4133 pkg syscall (darwin-386-cgo), const SO_SNDBUF = 4097 pkg syscall (darwin-386-cgo), const SO_SNDLOWAT = 4099 pkg syscall (darwin-386-cgo), const SO_SNDTIMEO = 4101 pkg syscall (darwin-386-cgo), const SO_TIMESTAMP = 1024 pkg syscall (darwin-386-cgo), const SO_TIMESTAMP_MONOTONIC = 2048 pkg syscall (darwin-386-cgo), const SO_TYPE = 4104 pkg syscall (darwin-386-cgo), const SO_UPCALLCLOSEWAIT = 4135 pkg syscall (darwin-386-cgo), const SO_USELOOPBACK = 64 pkg syscall (darwin-386-cgo), const SO_WANTMORE = 16384 pkg syscall (darwin-386-cgo), const SO_WANTOOBFLAG = 32768 pkg syscall (darwin-386-cgo), const SYS_ACCEPT = 30 pkg syscall (darwin-386-cgo), const SYS_ACCEPT_NOCANCEL = 404 pkg syscall (darwin-386-cgo), const SYS_ACCESS = 33 pkg syscall (darwin-386-cgo), const SYS_ACCESS_EXTENDED = 284 pkg syscall (darwin-386-cgo), const SYS_ACCT = 51 pkg syscall (darwin-386-cgo), const SYS_ADD_PROFIL = 176 pkg syscall (darwin-386-cgo), const SYS_ADJTIME = 140 pkg syscall (darwin-386-cgo), const SYS_AIO_CANCEL = 316 pkg syscall (darwin-386-cgo), const SYS_AIO_ERROR = 317 pkg syscall (darwin-386-cgo), const SYS_AIO_FSYNC = 313 pkg syscall (darwin-386-cgo), const SYS_AIO_READ = 318 pkg syscall (darwin-386-cgo), const SYS_AIO_RETURN = 314 pkg syscall (darwin-386-cgo), const SYS_AIO_SUSPEND = 315 pkg syscall (darwin-386-cgo), const SYS_AIO_SUSPEND_NOCANCEL = 421 pkg syscall (darwin-386-cgo), const SYS_AIO_WRITE = 319 pkg syscall (darwin-386-cgo), const SYS_ATGETMSG = 207 pkg syscall (darwin-386-cgo), const SYS_ATPGETREQ = 211 pkg syscall (darwin-386-cgo), const SYS_ATPGETRSP = 212 pkg syscall (darwin-386-cgo), const SYS_ATPSNDREQ = 209 pkg syscall (darwin-386-cgo), const SYS_ATPSNDRSP = 210 pkg syscall (darwin-386-cgo), const SYS_ATPUTMSG = 208 pkg syscall (darwin-386-cgo), const SYS_ATSOCKET = 206 pkg syscall (darwin-386-cgo), const SYS_AUDIT = 350 pkg syscall (darwin-386-cgo), const SYS_AUDITCTL = 359 pkg syscall (darwin-386-cgo), const SYS_AUDITON = 351 pkg syscall (darwin-386-cgo), const SYS_AUDIT_SESSION_JOIN = 429 pkg syscall (darwin-386-cgo), const SYS_AUDIT_SESSION_PORT = 432 pkg syscall (darwin-386-cgo), const SYS_AUDIT_SESSION_SELF = 428 pkg syscall (darwin-386-cgo), const SYS_BIND = 104 pkg syscall (darwin-386-cgo), const SYS_BSDTHREAD_CREATE = 360 pkg syscall (darwin-386-cgo), const SYS_BSDTHREAD_REGISTER = 366 pkg syscall (darwin-386-cgo), const SYS_BSDTHREAD_TERMINATE = 361 pkg syscall (darwin-386-cgo), const SYS_CHDIR = 12 pkg syscall (darwin-386-cgo), const SYS_CHFLAGS = 34 pkg syscall (darwin-386-cgo), const SYS_CHMOD = 15 pkg syscall (darwin-386-cgo), const SYS_CHMOD_EXTENDED = 282 pkg syscall (darwin-386-cgo), const SYS_CHOWN = 16 pkg syscall (darwin-386-cgo), const SYS_CHROOT = 61 pkg syscall (darwin-386-cgo), const SYS_CHUD = 185 pkg syscall (darwin-386-cgo), const SYS_CLOSE = 6 pkg syscall (darwin-386-cgo), const SYS_CLOSE_NOCANCEL = 399 pkg syscall (darwin-386-cgo), const SYS_CONNECT = 98 pkg syscall (darwin-386-cgo), const SYS_CONNECT_NOCANCEL = 409 pkg syscall (darwin-386-cgo), const SYS_COPYFILE = 227 pkg syscall (darwin-386-cgo), const SYS_CSOPS = 169 pkg syscall (darwin-386-cgo), const SYS_DELETE = 226 pkg syscall (darwin-386-cgo), const SYS_DUP = 41 pkg syscall (darwin-386-cgo), const SYS_DUP2 = 90 pkg syscall (darwin-386-cgo), const SYS_EXCHANGEDATA = 223 pkg syscall (darwin-386-cgo), const SYS_EXECVE = 59 pkg syscall (darwin-386-cgo), const SYS_EXIT = 1 pkg syscall (darwin-386-cgo), const SYS_FCHDIR = 13 pkg syscall (darwin-386-cgo), const SYS_FCHFLAGS = 35 pkg syscall (darwin-386-cgo), const SYS_FCHMOD = 124 pkg syscall (darwin-386-cgo), const SYS_FCHMOD_EXTENDED = 283 pkg syscall (darwin-386-cgo), const SYS_FCHOWN = 123 pkg syscall (darwin-386-cgo), const SYS_FCNTL = 92 pkg syscall (darwin-386-cgo), const SYS_FCNTL_NOCANCEL = 406 pkg syscall (darwin-386-cgo), const SYS_FDATASYNC = 187 pkg syscall (darwin-386-cgo), const SYS_FFSCTL = 245 pkg syscall (darwin-386-cgo), const SYS_FGETATTRLIST = 228 pkg syscall (darwin-386-cgo), const SYS_FGETXATTR = 235 pkg syscall (darwin-386-cgo), const SYS_FHOPEN = 248 pkg syscall (darwin-386-cgo), const SYS_FILEPORT_MAKEFD = 431 pkg syscall (darwin-386-cgo), const SYS_FILEPORT_MAKEPORT = 430 pkg syscall (darwin-386-cgo), const SYS_FLISTXATTR = 241 pkg syscall (darwin-386-cgo), const SYS_FLOCK = 131 pkg syscall (darwin-386-cgo), const SYS_FORK = 2 pkg syscall (darwin-386-cgo), const SYS_FPATHCONF = 192 pkg syscall (darwin-386-cgo), const SYS_FREMOVEXATTR = 239 pkg syscall (darwin-386-cgo), const SYS_FSCTL = 242 pkg syscall (darwin-386-cgo), const SYS_FSETATTRLIST = 229 pkg syscall (darwin-386-cgo), const SYS_FSETXATTR = 237 pkg syscall (darwin-386-cgo), const SYS_FSGETPATH = 427 pkg syscall (darwin-386-cgo), const SYS_FSTAT = 189 pkg syscall (darwin-386-cgo), const SYS_FSTAT64 = 339 pkg syscall (darwin-386-cgo), const SYS_FSTAT64_EXTENDED = 343 pkg syscall (darwin-386-cgo), const SYS_FSTATFS = 158 pkg syscall (darwin-386-cgo), const SYS_FSTATFS64 = 346 pkg syscall (darwin-386-cgo), const SYS_FSTATV = 219 pkg syscall (darwin-386-cgo), const SYS_FSTAT_EXTENDED = 281 pkg syscall (darwin-386-cgo), const SYS_FSYNC = 95 pkg syscall (darwin-386-cgo), const SYS_FSYNC_NOCANCEL = 408 pkg syscall (darwin-386-cgo), const SYS_FTRUNCATE = 201 pkg syscall (darwin-386-cgo), const SYS_FUTIMES = 139 pkg syscall (darwin-386-cgo), const SYS_GETATTRLIST = 220 pkg syscall (darwin-386-cgo), const SYS_GETAUDIT = 355 pkg syscall (darwin-386-cgo), const SYS_GETAUDIT_ADDR = 357 pkg syscall (darwin-386-cgo), const SYS_GETAUID = 353 pkg syscall (darwin-386-cgo), const SYS_GETDIRENTRIES = 196 pkg syscall (darwin-386-cgo), const SYS_GETDIRENTRIES64 = 344 pkg syscall (darwin-386-cgo), const SYS_GETDIRENTRIESATTR = 222 pkg syscall (darwin-386-cgo), const SYS_GETDTABLESIZE = 89 pkg syscall (darwin-386-cgo), const SYS_GETEGID = 43 pkg syscall (darwin-386-cgo), const SYS_GETEUID = 25 pkg syscall (darwin-386-cgo), const SYS_GETFH = 161 pkg syscall (darwin-386-cgo), const SYS_GETFSSTAT = 18 pkg syscall (darwin-386-cgo), const SYS_GETFSSTAT64 = 347 pkg syscall (darwin-386-cgo), const SYS_GETGID = 47 pkg syscall (darwin-386-cgo), const SYS_GETGROUPS = 79 pkg syscall (darwin-386-cgo), const SYS_GETHOSTUUID = 142 pkg syscall (darwin-386-cgo), const SYS_GETITIMER = 86 pkg syscall (darwin-386-cgo), const SYS_GETLCID = 395 pkg syscall (darwin-386-cgo), const SYS_GETLOGIN = 49 pkg syscall (darwin-386-cgo), const SYS_GETPEERNAME = 31 pkg syscall (darwin-386-cgo), const SYS_GETPGID = 151 pkg syscall (darwin-386-cgo), const SYS_GETPGRP = 81 pkg syscall (darwin-386-cgo), const SYS_GETPID = 20 pkg syscall (darwin-386-cgo), const SYS_GETPPID = 39 pkg syscall (darwin-386-cgo), const SYS_GETPRIORITY = 100 pkg syscall (darwin-386-cgo), const SYS_GETRLIMIT = 194 pkg syscall (darwin-386-cgo), const SYS_GETRUSAGE = 117 pkg syscall (darwin-386-cgo), const SYS_GETSGROUPS = 288 pkg syscall (darwin-386-cgo), const SYS_GETSID = 310 pkg syscall (darwin-386-cgo), const SYS_GETSOCKNAME = 32 pkg syscall (darwin-386-cgo), const SYS_GETSOCKOPT = 118 pkg syscall (darwin-386-cgo), const SYS_GETTID = 286 pkg syscall (darwin-386-cgo), const SYS_GETTIMEOFDAY = 116 pkg syscall (darwin-386-cgo), const SYS_GETUID = 24 pkg syscall (darwin-386-cgo), const SYS_GETWGROUPS = 290 pkg syscall (darwin-386-cgo), const SYS_GETXATTR = 234 pkg syscall (darwin-386-cgo), const SYS_IDENTITYSVC = 293 pkg syscall (darwin-386-cgo), const SYS_INITGROUPS = 243 pkg syscall (darwin-386-cgo), const SYS_IOCTL = 54 pkg syscall (darwin-386-cgo), const SYS_IOPOLICYSYS = 322 pkg syscall (darwin-386-cgo), const SYS_ISSETUGID = 327 pkg syscall (darwin-386-cgo), const SYS_KDEBUG_TRACE = 180 pkg syscall (darwin-386-cgo), const SYS_KEVENT = 363 pkg syscall (darwin-386-cgo), const SYS_KEVENT64 = 369 pkg syscall (darwin-386-cgo), const SYS_KILL = 37 pkg syscall (darwin-386-cgo), const SYS_KQUEUE = 362 pkg syscall (darwin-386-cgo), const SYS_LCHOWN = 364 pkg syscall (darwin-386-cgo), const SYS_LINK = 9 pkg syscall (darwin-386-cgo), const SYS_LIO_LISTIO = 320 pkg syscall (darwin-386-cgo), const SYS_LISTEN = 106 pkg syscall (darwin-386-cgo), const SYS_LISTXATTR = 240 pkg syscall (darwin-386-cgo), const SYS_LSEEK = 199 pkg syscall (darwin-386-cgo), const SYS_LSTAT = 190 pkg syscall (darwin-386-cgo), const SYS_LSTAT64 = 340 pkg syscall (darwin-386-cgo), const SYS_LSTAT64_EXTENDED = 342 pkg syscall (darwin-386-cgo), const SYS_LSTATV = 218 pkg syscall (darwin-386-cgo), const SYS_LSTAT_EXTENDED = 280 pkg syscall (darwin-386-cgo), const SYS_MADVISE = 75 pkg syscall (darwin-386-cgo), const SYS_MAXSYSCALL = 439 pkg syscall (darwin-386-cgo), const SYS_MINCORE = 78 pkg syscall (darwin-386-cgo), const SYS_MINHERIT = 250 pkg syscall (darwin-386-cgo), const SYS_MKCOMPLEX = 216 pkg syscall (darwin-386-cgo), const SYS_MKDIR = 136 pkg syscall (darwin-386-cgo), const SYS_MKDIR_EXTENDED = 292 pkg syscall (darwin-386-cgo), const SYS_MKFIFO = 132 pkg syscall (darwin-386-cgo), const SYS_MKFIFO_EXTENDED = 291 pkg syscall (darwin-386-cgo), const SYS_MKNOD = 14 pkg syscall (darwin-386-cgo), const SYS_MLOCK = 203 pkg syscall (darwin-386-cgo), const SYS_MLOCKALL = 324 pkg syscall (darwin-386-cgo), const SYS_MMAP = 197 pkg syscall (darwin-386-cgo), const SYS_MODWATCH = 233 pkg syscall (darwin-386-cgo), const SYS_MOUNT = 167 pkg syscall (darwin-386-cgo), const SYS_MPROTECT = 74 pkg syscall (darwin-386-cgo), const SYS_MSGCTL = 258 pkg syscall (darwin-386-cgo), const SYS_MSGGET = 259 pkg syscall (darwin-386-cgo), const SYS_MSGRCV = 261 pkg syscall (darwin-386-cgo), const SYS_MSGRCV_NOCANCEL = 419 pkg syscall (darwin-386-cgo), const SYS_MSGSND = 260 pkg syscall (darwin-386-cgo), const SYS_MSGSND_NOCANCEL = 418 pkg syscall (darwin-386-cgo), const SYS_MSGSYS = 252 pkg syscall (darwin-386-cgo), const SYS_MSYNC = 65 pkg syscall (darwin-386-cgo), const SYS_MSYNC_NOCANCEL = 405 pkg syscall (darwin-386-cgo), const SYS_MUNLOCK = 204 pkg syscall (darwin-386-cgo), const SYS_MUNLOCKALL = 325 pkg syscall (darwin-386-cgo), const SYS_MUNMAP = 73 pkg syscall (darwin-386-cgo), const SYS_NFSCLNT = 247 pkg syscall (darwin-386-cgo), const SYS_NFSSVC = 155 pkg syscall (darwin-386-cgo), const SYS_OPEN = 5 pkg syscall (darwin-386-cgo), const SYS_OPEN_EXTENDED = 277 pkg syscall (darwin-386-cgo), const SYS_OPEN_NOCANCEL = 398 pkg syscall (darwin-386-cgo), const SYS_PATHCONF = 191 pkg syscall (darwin-386-cgo), const SYS_PID_HIBERNATE = 435 pkg syscall (darwin-386-cgo), const SYS_PID_RESUME = 434 pkg syscall (darwin-386-cgo), const SYS_PID_SHUTDOWN_SOCKETS = 436 pkg syscall (darwin-386-cgo), const SYS_PID_SUSPEND = 433 pkg syscall (darwin-386-cgo), const SYS_PIPE = 42 pkg syscall (darwin-386-cgo), const SYS_POLL = 230 pkg syscall (darwin-386-cgo), const SYS_POLL_NOCANCEL = 417 pkg syscall (darwin-386-cgo), const SYS_POSIX_SPAWN = 244 pkg syscall (darwin-386-cgo), const SYS_PREAD = 153 pkg syscall (darwin-386-cgo), const SYS_PREAD_NOCANCEL = 414 pkg syscall (darwin-386-cgo), const SYS_PROCESS_POLICY = 323 pkg syscall (darwin-386-cgo), const SYS_PROC_INFO = 336 pkg syscall (darwin-386-cgo), const SYS_PROFIL = 44 pkg syscall (darwin-386-cgo), const SYS_PSYNCH_CVBROAD = 303 pkg syscall (darwin-386-cgo), const SYS_PSYNCH_CVCLRPREPOST = 312 pkg syscall (darwin-386-cgo), const SYS_PSYNCH_CVSIGNAL = 304 pkg syscall (darwin-386-cgo), const SYS_PSYNCH_CVWAIT = 305 pkg syscall (darwin-386-cgo), const SYS_PSYNCH_MUTEXDROP = 302 pkg syscall (darwin-386-cgo), const SYS_PSYNCH_MUTEXWAIT = 301 pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_DOWNGRADE = 299 pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_LONGRDLOCK = 297 pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_RDLOCK = 306 pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_UNLOCK = 308 pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_UNLOCK2 = 309 pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_UPGRADE = 300 pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_WRLOCK = 307 pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_YIELDWRLOCK = 298 pkg syscall (darwin-386-cgo), const SYS_PTRACE = 26 pkg syscall (darwin-386-cgo), const SYS_PWRITE = 154 pkg syscall (darwin-386-cgo), const SYS_PWRITE_NOCANCEL = 415 pkg syscall (darwin-386-cgo), const SYS_QUOTACTL = 165 pkg syscall (darwin-386-cgo), const SYS_READ = 3 pkg syscall (darwin-386-cgo), const SYS_READLINK = 58 pkg syscall (darwin-386-cgo), const SYS_READV = 120 pkg syscall (darwin-386-cgo), const SYS_READV_NOCANCEL = 411 pkg syscall (darwin-386-cgo), const SYS_READ_NOCANCEL = 396 pkg syscall (darwin-386-cgo), const SYS_REBOOT = 55 pkg syscall (darwin-386-cgo), const SYS_RECVFROM = 29 pkg syscall (darwin-386-cgo), const SYS_RECVFROM_NOCANCEL = 403 pkg syscall (darwin-386-cgo), const SYS_RECVMSG = 27 pkg syscall (darwin-386-cgo), const SYS_RECVMSG_NOCANCEL = 401 pkg syscall (darwin-386-cgo), const SYS_REMOVEXATTR = 238 pkg syscall (darwin-386-cgo), const SYS_RENAME = 128 pkg syscall (darwin-386-cgo), const SYS_REVOKE = 56 pkg syscall (darwin-386-cgo), const SYS_RMDIR = 137 pkg syscall (darwin-386-cgo), const SYS_SEARCHFS = 225 pkg syscall (darwin-386-cgo), const SYS_SELECT = 93 pkg syscall (darwin-386-cgo), const SYS_SELECT_NOCANCEL = 407 pkg syscall (darwin-386-cgo), const SYS_SEMCTL = 254 pkg syscall (darwin-386-cgo), const SYS_SEMGET = 255 pkg syscall (darwin-386-cgo), const SYS_SEMOP = 256 pkg syscall (darwin-386-cgo), const SYS_SEMSYS = 251 pkg syscall (darwin-386-cgo), const SYS_SEM_CLOSE = 269 pkg syscall (darwin-386-cgo), const SYS_SEM_DESTROY = 276 pkg syscall (darwin-386-cgo), const SYS_SEM_GETVALUE = 274 pkg syscall (darwin-386-cgo), const SYS_SEM_INIT = 275 pkg syscall (darwin-386-cgo), const SYS_SEM_OPEN = 268 pkg syscall (darwin-386-cgo), const SYS_SEM_POST = 273 pkg syscall (darwin-386-cgo), const SYS_SEM_TRYWAIT = 272 pkg syscall (darwin-386-cgo), const SYS_SEM_UNLINK = 270 pkg syscall (darwin-386-cgo), const SYS_SEM_WAIT = 271 pkg syscall (darwin-386-cgo), const SYS_SEM_WAIT_NOCANCEL = 420 pkg syscall (darwin-386-cgo), const SYS_SENDFILE = 337 pkg syscall (darwin-386-cgo), const SYS_SENDMSG = 28 pkg syscall (darwin-386-cgo), const SYS_SENDMSG_NOCANCEL = 402 pkg syscall (darwin-386-cgo), const SYS_SENDTO = 133 pkg syscall (darwin-386-cgo), const SYS_SENDTO_NOCANCEL = 413 pkg syscall (darwin-386-cgo), const SYS_SETATTRLIST = 221 pkg syscall (darwin-386-cgo), const SYS_SETAUDIT = 356 pkg syscall (darwin-386-cgo), const SYS_SETAUDIT_ADDR = 358 pkg syscall (darwin-386-cgo), const SYS_SETAUID = 354 pkg syscall (darwin-386-cgo), const SYS_SETEGID = 182 pkg syscall (darwin-386-cgo), const SYS_SETEUID = 183 pkg syscall (darwin-386-cgo), const SYS_SETGID = 181 pkg syscall (darwin-386-cgo), const SYS_SETGROUPS = 80 pkg syscall (darwin-386-cgo), const SYS_SETITIMER = 83 pkg syscall (darwin-386-cgo), const SYS_SETLCID = 394 pkg syscall (darwin-386-cgo), const SYS_SETLOGIN = 50 pkg syscall (darwin-386-cgo), const SYS_SETPGID = 82 pkg syscall (darwin-386-cgo), const SYS_SETPRIORITY = 96 pkg syscall (darwin-386-cgo), const SYS_SETPRIVEXEC = 152 pkg syscall (darwin-386-cgo), const SYS_SETREGID = 127 pkg syscall (darwin-386-cgo), const SYS_SETREUID = 126 pkg syscall (darwin-386-cgo), const SYS_SETRLIMIT = 195 pkg syscall (darwin-386-cgo), const SYS_SETSGROUPS = 287 pkg syscall (darwin-386-cgo), const SYS_SETSID = 147 pkg syscall (darwin-386-cgo), const SYS_SETSOCKOPT = 105 pkg syscall (darwin-386-cgo), const SYS_SETTID = 285 pkg syscall (darwin-386-cgo), const SYS_SETTID_WITH_PID = 311 pkg syscall (darwin-386-cgo), const SYS_SETTIMEOFDAY = 122 pkg syscall (darwin-386-cgo), const SYS_SETUID = 23 pkg syscall (darwin-386-cgo), const SYS_SETWGROUPS = 289 pkg syscall (darwin-386-cgo), const SYS_SETXATTR = 236 pkg syscall (darwin-386-cgo), const SYS_SHARED_REGION_CHECK_NP = 294 pkg syscall (darwin-386-cgo), const SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 pkg syscall (darwin-386-cgo), const SYS_SHMAT = 262 pkg syscall (darwin-386-cgo), const SYS_SHMCTL = 263 pkg syscall (darwin-386-cgo), const SYS_SHMDT = 264 pkg syscall (darwin-386-cgo), const SYS_SHMGET = 265 pkg syscall (darwin-386-cgo), const SYS_SHMSYS = 253 pkg syscall (darwin-386-cgo), const SYS_SHM_OPEN = 266 pkg syscall (darwin-386-cgo), const SYS_SHM_UNLINK = 267 pkg syscall (darwin-386-cgo), const SYS_SHUTDOWN = 134 pkg syscall (darwin-386-cgo), const SYS_SIGACTION = 46 pkg syscall (darwin-386-cgo), const SYS_SIGALTSTACK = 53 pkg syscall (darwin-386-cgo), const SYS_SIGPENDING = 52 pkg syscall (darwin-386-cgo), const SYS_SIGPROCMASK = 48 pkg syscall (darwin-386-cgo), const SYS_SIGRETURN = 184 pkg syscall (darwin-386-cgo), const SYS_SIGSUSPEND = 111 pkg syscall (darwin-386-cgo), const SYS_SIGSUSPEND_NOCANCEL = 410 pkg syscall (darwin-386-cgo), const SYS_SOCKET = 97 pkg syscall (darwin-386-cgo), const SYS_SOCKETPAIR = 135 pkg syscall (darwin-386-cgo), const SYS_STACK_SNAPSHOT = 365 pkg syscall (darwin-386-cgo), const SYS_STAT = 188 pkg syscall (darwin-386-cgo), const SYS_STAT64 = 338 pkg syscall (darwin-386-cgo), const SYS_STAT64_EXTENDED = 341 pkg syscall (darwin-386-cgo), const SYS_STATFS = 157 pkg syscall (darwin-386-cgo), const SYS_STATFS64 = 345 pkg syscall (darwin-386-cgo), const SYS_STATV = 217 pkg syscall (darwin-386-cgo), const SYS_STAT_EXTENDED = 279 pkg syscall (darwin-386-cgo), const SYS_SWAPON = 85 pkg syscall (darwin-386-cgo), const SYS_SYMLINK = 57 pkg syscall (darwin-386-cgo), const SYS_SYNC = 36 pkg syscall (darwin-386-cgo), const SYS_SYSCALL = 0 pkg syscall (darwin-386-cgo), const SYS_THREAD_SELFID = 372 pkg syscall (darwin-386-cgo), const SYS_TRUNCATE = 200 pkg syscall (darwin-386-cgo), const SYS_UMASK = 60 pkg syscall (darwin-386-cgo), const SYS_UMASK_EXTENDED = 278 pkg syscall (darwin-386-cgo), const SYS_UNDELETE = 205 pkg syscall (darwin-386-cgo), const SYS_UNLINK = 10 pkg syscall (darwin-386-cgo), const SYS_UNMOUNT = 159 pkg syscall (darwin-386-cgo), const SYS_UTIMES = 138 pkg syscall (darwin-386-cgo), const SYS_VFORK = 66 pkg syscall (darwin-386-cgo), const SYS_VM_PRESSURE_MONITOR = 296 pkg syscall (darwin-386-cgo), const SYS_WAIT4 = 7 pkg syscall (darwin-386-cgo), const SYS_WAIT4_NOCANCEL = 400 pkg syscall (darwin-386-cgo), const SYS_WAITEVENT = 232 pkg syscall (darwin-386-cgo), const SYS_WAITID = 173 pkg syscall (darwin-386-cgo), const SYS_WAITID_NOCANCEL = 416 pkg syscall (darwin-386-cgo), const SYS_WATCHEVENT = 231 pkg syscall (darwin-386-cgo), const SYS_WORKQ_KERNRETURN = 368 pkg syscall (darwin-386-cgo), const SYS_WORKQ_OPEN = 367 pkg syscall (darwin-386-cgo), const SYS_WRITE = 4 pkg syscall (darwin-386-cgo), const SYS_WRITEV = 121 pkg syscall (darwin-386-cgo), const SYS_WRITEV_NOCANCEL = 412 pkg syscall (darwin-386-cgo), const SYS_WRITE_NOCANCEL = 397 pkg syscall (darwin-386-cgo), const SYS___DISABLE_THREADSIGNAL = 331 pkg syscall (darwin-386-cgo), const SYS___MAC_EXECVE = 380 pkg syscall (darwin-386-cgo), const SYS___MAC_GETFSSTAT = 426 pkg syscall (darwin-386-cgo), const SYS___MAC_GET_FD = 388 pkg syscall (darwin-386-cgo), const SYS___MAC_GET_FILE = 382 pkg syscall (darwin-386-cgo), const SYS___MAC_GET_LCID = 391 pkg syscall (darwin-386-cgo), const SYS___MAC_GET_LCTX = 392 pkg syscall (darwin-386-cgo), const SYS___MAC_GET_LINK = 384 pkg syscall (darwin-386-cgo), const SYS___MAC_GET_MOUNT = 425 pkg syscall (darwin-386-cgo), const SYS___MAC_GET_PID = 390 pkg syscall (darwin-386-cgo), const SYS___MAC_GET_PROC = 386 pkg syscall (darwin-386-cgo), const SYS___MAC_MOUNT = 424 pkg syscall (darwin-386-cgo), const SYS___MAC_SET_FD = 389 pkg syscall (darwin-386-cgo), const SYS___MAC_SET_FILE = 383 pkg syscall (darwin-386-cgo), const SYS___MAC_SET_LCTX = 393 pkg syscall (darwin-386-cgo), const SYS___MAC_SET_LINK = 385 pkg syscall (darwin-386-cgo), const SYS___MAC_SET_PROC = 387 pkg syscall (darwin-386-cgo), const SYS___MAC_SYSCALL = 381 pkg syscall (darwin-386-cgo), const SYS___OLD_SEMWAIT_SIGNAL = 370 pkg syscall (darwin-386-cgo), const SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 pkg syscall (darwin-386-cgo), const SYS___PTHREAD_CANCELED = 333 pkg syscall (darwin-386-cgo), const SYS___PTHREAD_CHDIR = 348 pkg syscall (darwin-386-cgo), const SYS___PTHREAD_FCHDIR = 349 pkg syscall (darwin-386-cgo), const SYS___PTHREAD_KILL = 328 pkg syscall (darwin-386-cgo), const SYS___PTHREAD_MARKCANCEL = 332 pkg syscall (darwin-386-cgo), const SYS___PTHREAD_SIGMASK = 329 pkg syscall (darwin-386-cgo), const SYS___SEMWAIT_SIGNAL = 334 pkg syscall (darwin-386-cgo), const SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 pkg syscall (darwin-386-cgo), const SYS___SIGWAIT = 330 pkg syscall (darwin-386-cgo), const SYS___SIGWAIT_NOCANCEL = 422 pkg syscall (darwin-386-cgo), const SYS___SYSCTL = 202 pkg syscall (darwin-386-cgo), const S_IEXEC = 64 pkg syscall (darwin-386-cgo), const S_IFMT = 61440 pkg syscall (darwin-386-cgo), const S_IFWHT = 57344 pkg syscall (darwin-386-cgo), const S_IREAD = 256 pkg syscall (darwin-386-cgo), const S_IRGRP = 32 pkg syscall (darwin-386-cgo), const S_IROTH = 4 pkg syscall (darwin-386-cgo), const S_IRWXG = 56 pkg syscall (darwin-386-cgo), const S_IRWXO = 7 pkg syscall (darwin-386-cgo), const S_IRWXU = 448 pkg syscall (darwin-386-cgo), const S_ISTXT = 512 pkg syscall (darwin-386-cgo), const S_IWGRP = 16 pkg syscall (darwin-386-cgo), const S_IWOTH = 2 pkg syscall (darwin-386-cgo), const S_IWRITE = 128 pkg syscall (darwin-386-cgo), const S_IXGRP = 8 pkg syscall (darwin-386-cgo), const S_IXOTH = 1 pkg syscall (darwin-386-cgo), const SizeofBpfHdr = 20 pkg syscall (darwin-386-cgo), const SizeofBpfInsn = 8 pkg syscall (darwin-386-cgo), const SizeofBpfProgram = 8 pkg syscall (darwin-386-cgo), const SizeofBpfStat = 8 pkg syscall (darwin-386-cgo), const SizeofBpfVersion = 4 pkg syscall (darwin-386-cgo), const SizeofCmsghdr = 12 pkg syscall (darwin-386-cgo), const SizeofIPMreq = 8 pkg syscall (darwin-386-cgo), const SizeofIPv6Mreq = 20 pkg syscall (darwin-386-cgo), const SizeofIfData = 96 pkg syscall (darwin-386-cgo), const SizeofIfMsghdr = 112 pkg syscall (darwin-386-cgo), const SizeofIfaMsghdr = 20 pkg syscall (darwin-386-cgo), const SizeofIfmaMsghdr = 16 pkg syscall (darwin-386-cgo), const SizeofIfmaMsghdr2 = 20 pkg syscall (darwin-386-cgo), const SizeofInet4Pktinfo = 12 pkg syscall (darwin-386-cgo), const SizeofInet4Pktinfo ideal-int pkg syscall (darwin-386-cgo), const SizeofInet6Pktinfo = 20 pkg syscall (darwin-386-cgo), const SizeofLinger = 8 pkg syscall (darwin-386-cgo), const SizeofMsghdr = 28 pkg syscall (darwin-386-cgo), const SizeofRtMetrics = 56 pkg syscall (darwin-386-cgo), const SizeofRtMsghdr = 92 pkg syscall (darwin-386-cgo), const SizeofSockaddrAny = 108 pkg syscall (darwin-386-cgo), const SizeofSockaddrDatalink = 20 pkg syscall (darwin-386-cgo), const SizeofSockaddrInet4 = 16 pkg syscall (darwin-386-cgo), const SizeofSockaddrInet6 = 28 pkg syscall (darwin-386-cgo), const SizeofSockaddrUnix = 106 pkg syscall (darwin-386-cgo), const TCIFLUSH = 1 pkg syscall (darwin-386-cgo), const TCIFLUSH ideal-int pkg syscall (darwin-386-cgo), const TCIOFLUSH = 3 pkg syscall (darwin-386-cgo), const TCIOFLUSH ideal-int pkg syscall (darwin-386-cgo), const TCOFLUSH = 2 pkg syscall (darwin-386-cgo), const TCOFLUSH ideal-int pkg syscall (darwin-386-cgo), const TCP_CONNECTIONTIMEOUT = 32 pkg syscall (darwin-386-cgo), const TCP_KEEPALIVE = 16 pkg syscall (darwin-386-cgo), const TCP_MAXHLEN = 60 pkg syscall (darwin-386-cgo), const TCP_MAXOLEN = 40 pkg syscall (darwin-386-cgo), const TCP_MAXSEG = 2 pkg syscall (darwin-386-cgo), const TCP_MAXWIN = 65535 pkg syscall (darwin-386-cgo), const TCP_MAX_SACK = 3 pkg syscall (darwin-386-cgo), const TCP_MAX_WINSHIFT = 14 pkg syscall (darwin-386-cgo), const TCP_MINMSS = 216 pkg syscall (darwin-386-cgo), const TCP_MINMSSOVERLOAD = 1000 pkg syscall (darwin-386-cgo), const TCP_MSS = 512 pkg syscall (darwin-386-cgo), const TCP_NOOPT = 8 pkg syscall (darwin-386-cgo), const TCP_NOPUSH = 4 pkg syscall (darwin-386-cgo), const TCP_RXT_CONNDROPTIME = 128 pkg syscall (darwin-386-cgo), const TCP_RXT_FINDROP = 256 pkg syscall (darwin-386-cgo), const TCSAFLUSH = 2 pkg syscall (darwin-386-cgo), const TCSAFLUSH ideal-int pkg syscall (darwin-386-cgo), const TIOCCBRK = 536900730 pkg syscall (darwin-386-cgo), const TIOCCDTR = 536900728 pkg syscall (darwin-386-cgo), const TIOCCONS = 2147775586 pkg syscall (darwin-386-cgo), const TIOCDCDTIMESTAMP = 1074295896 pkg syscall (darwin-386-cgo), const TIOCDRAIN = 536900702 pkg syscall (darwin-386-cgo), const TIOCDSIMICROCODE = 536900693 pkg syscall (darwin-386-cgo), const TIOCEXCL = 536900621 pkg syscall (darwin-386-cgo), const TIOCEXT = 2147775584 pkg syscall (darwin-386-cgo), const TIOCFLUSH = 2147775504 pkg syscall (darwin-386-cgo), const TIOCGDRAINWAIT = 1074033750 pkg syscall (darwin-386-cgo), const TIOCGETA = 1076655123 pkg syscall (darwin-386-cgo), const TIOCGETD = 1074033690 pkg syscall (darwin-386-cgo), const TIOCGPGRP = 1074033783 pkg syscall (darwin-386-cgo), const TIOCGWINSZ = 1074295912 pkg syscall (darwin-386-cgo), const TIOCIXOFF = 536900736 pkg syscall (darwin-386-cgo), const TIOCIXON = 536900737 pkg syscall (darwin-386-cgo), const TIOCMBIC = 2147775595 pkg syscall (darwin-386-cgo), const TIOCMBIS = 2147775596 pkg syscall (darwin-386-cgo), const TIOCMGDTRWAIT = 1074033754 pkg syscall (darwin-386-cgo), const TIOCMGET = 1074033770 pkg syscall (darwin-386-cgo), const TIOCMODG = 1074033667 pkg syscall (darwin-386-cgo), const TIOCMODS = 2147775492 pkg syscall (darwin-386-cgo), const TIOCMSDTRWAIT = 2147775579 pkg syscall (darwin-386-cgo), const TIOCMSET = 2147775597 pkg syscall (darwin-386-cgo), const TIOCM_CAR = 64 pkg syscall (darwin-386-cgo), const TIOCM_CD = 64 pkg syscall (darwin-386-cgo), const TIOCM_CTS = 32 pkg syscall (darwin-386-cgo), const TIOCM_DSR = 256 pkg syscall (darwin-386-cgo), const TIOCM_DTR = 2 pkg syscall (darwin-386-cgo), const TIOCM_LE = 1 pkg syscall (darwin-386-cgo), const TIOCM_RI = 128 pkg syscall (darwin-386-cgo), const TIOCM_RNG = 128 pkg syscall (darwin-386-cgo), const TIOCM_RTS = 4 pkg syscall (darwin-386-cgo), const TIOCM_SR = 16 pkg syscall (darwin-386-cgo), const TIOCM_ST = 8 pkg syscall (darwin-386-cgo), const TIOCNOTTY = 536900721 pkg syscall (darwin-386-cgo), const TIOCNXCL = 536900622 pkg syscall (darwin-386-cgo), const TIOCOUTQ = 1074033779 pkg syscall (darwin-386-cgo), const TIOCPKT = 2147775600 pkg syscall (darwin-386-cgo), const TIOCPKT_DATA = 0 pkg syscall (darwin-386-cgo), const TIOCPKT_DOSTOP = 32 pkg syscall (darwin-386-cgo), const TIOCPKT_FLUSHREAD = 1 pkg syscall (darwin-386-cgo), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (darwin-386-cgo), const TIOCPKT_IOCTL = 64 pkg syscall (darwin-386-cgo), const TIOCPKT_NOSTOP = 16 pkg syscall (darwin-386-cgo), const TIOCPKT_START = 8 pkg syscall (darwin-386-cgo), const TIOCPKT_STOP = 4 pkg syscall (darwin-386-cgo), const TIOCPTYGNAME = 1082160211 pkg syscall (darwin-386-cgo), const TIOCPTYGRANT = 536900692 pkg syscall (darwin-386-cgo), const TIOCPTYUNLK = 536900690 pkg syscall (darwin-386-cgo), const TIOCREMOTE = 2147775593 pkg syscall (darwin-386-cgo), const TIOCSBRK = 536900731 pkg syscall (darwin-386-cgo), const TIOCSCONS = 536900707 pkg syscall (darwin-386-cgo), const TIOCSCTTY = 536900705 pkg syscall (darwin-386-cgo), const TIOCSDRAINWAIT = 2147775575 pkg syscall (darwin-386-cgo), const TIOCSDTR = 536900729 pkg syscall (darwin-386-cgo), const TIOCSETA = 2150396948 pkg syscall (darwin-386-cgo), const TIOCSETAF = 2150396950 pkg syscall (darwin-386-cgo), const TIOCSETAW = 2150396949 pkg syscall (darwin-386-cgo), const TIOCSETD = 2147775515 pkg syscall (darwin-386-cgo), const TIOCSIG = 536900703 pkg syscall (darwin-386-cgo), const TIOCSPGRP = 2147775606 pkg syscall (darwin-386-cgo), const TIOCSTART = 536900718 pkg syscall (darwin-386-cgo), const TIOCSTAT = 536900709 pkg syscall (darwin-386-cgo), const TIOCSTI = 2147578994 pkg syscall (darwin-386-cgo), const TIOCSTOP = 536900719 pkg syscall (darwin-386-cgo), const TIOCSWINSZ = 2148037735 pkg syscall (darwin-386-cgo), const TIOCTIMESTAMP = 1074295897 pkg syscall (darwin-386-cgo), const TIOCUCNTL = 2147775590 pkg syscall (darwin-386-cgo), const TOSTOP = 4194304 pkg syscall (darwin-386-cgo), const TOSTOP ideal-int pkg syscall (darwin-386-cgo), const VDISCARD = 15 pkg syscall (darwin-386-cgo), const VDISCARD ideal-int pkg syscall (darwin-386-cgo), const VDSUSP = 11 pkg syscall (darwin-386-cgo), const VDSUSP ideal-int pkg syscall (darwin-386-cgo), const VEOF = 0 pkg syscall (darwin-386-cgo), const VEOF ideal-int pkg syscall (darwin-386-cgo), const VEOL = 1 pkg syscall (darwin-386-cgo), const VEOL ideal-int pkg syscall (darwin-386-cgo), const VEOL2 = 2 pkg syscall (darwin-386-cgo), const VEOL2 ideal-int pkg syscall (darwin-386-cgo), const VERASE = 3 pkg syscall (darwin-386-cgo), const VERASE ideal-int pkg syscall (darwin-386-cgo), const VINTR = 8 pkg syscall (darwin-386-cgo), const VINTR ideal-int pkg syscall (darwin-386-cgo), const VKILL = 5 pkg syscall (darwin-386-cgo), const VKILL ideal-int pkg syscall (darwin-386-cgo), const VLNEXT = 14 pkg syscall (darwin-386-cgo), const VLNEXT ideal-int pkg syscall (darwin-386-cgo), const VMIN = 16 pkg syscall (darwin-386-cgo), const VMIN ideal-int pkg syscall (darwin-386-cgo), const VQUIT = 9 pkg syscall (darwin-386-cgo), const VQUIT ideal-int pkg syscall (darwin-386-cgo), const VREPRINT = 6 pkg syscall (darwin-386-cgo), const VREPRINT ideal-int pkg syscall (darwin-386-cgo), const VSTART = 12 pkg syscall (darwin-386-cgo), const VSTART ideal-int pkg syscall (darwin-386-cgo), const VSTATUS = 18 pkg syscall (darwin-386-cgo), const VSTATUS ideal-int pkg syscall (darwin-386-cgo), const VSTOP = 13 pkg syscall (darwin-386-cgo), const VSTOP ideal-int pkg syscall (darwin-386-cgo), const VSUSP = 10 pkg syscall (darwin-386-cgo), const VSUSP ideal-int pkg syscall (darwin-386-cgo), const VT0 = 0 pkg syscall (darwin-386-cgo), const VT0 ideal-int pkg syscall (darwin-386-cgo), const VT1 = 65536 pkg syscall (darwin-386-cgo), const VT1 ideal-int pkg syscall (darwin-386-cgo), const VTDLY = 65536 pkg syscall (darwin-386-cgo), const VTDLY ideal-int pkg syscall (darwin-386-cgo), const VTIME = 17 pkg syscall (darwin-386-cgo), const VTIME ideal-int pkg syscall (darwin-386-cgo), const VWERASE = 4 pkg syscall (darwin-386-cgo), const VWERASE ideal-int pkg syscall (darwin-386-cgo), const WCONTINUED = 16 pkg syscall (darwin-386-cgo), const WCOREFLAG = 128 pkg syscall (darwin-386-cgo), const WEXITED = 4 pkg syscall (darwin-386-cgo), const WNOHANG = 1 pkg syscall (darwin-386-cgo), const WNOWAIT = 32 pkg syscall (darwin-386-cgo), const WORDSIZE = 32 pkg syscall (darwin-386-cgo), const WSTOPPED = 8 pkg syscall (darwin-386-cgo), const WUNTRACED = 2 pkg syscall (darwin-386-cgo), func Fchflags(int, int) error pkg syscall (darwin-386-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (darwin-386-cgo), type Inet4Pktinfo struct pkg syscall (darwin-386-cgo), type Inet4Pktinfo struct, Addr [4]uint8 pkg syscall (darwin-386-cgo), type Inet4Pktinfo struct, Ifindex uint32 pkg syscall (darwin-386-cgo), type Inet4Pktinfo struct, Spec_dst [4]uint8 pkg syscall (darwin-386-cgo), type Termios struct pkg syscall (darwin-386-cgo), type Termios struct, Cc [20]uint8 pkg syscall (darwin-386-cgo), type Termios struct, Cflag uint32 pkg syscall (darwin-386-cgo), type Termios struct, Iflag uint32 pkg syscall (darwin-386-cgo), type Termios struct, Ispeed uint32 pkg syscall (darwin-386-cgo), type Termios struct, Lflag uint32 pkg syscall (darwin-386-cgo), type Termios struct, Oflag uint32 pkg syscall (darwin-386-cgo), type Termios struct, Ospeed uint32 pkg syscall (darwin-amd64), const AF_APPLETALK = 16 pkg syscall (darwin-amd64), const AF_CCITT = 10 pkg syscall (darwin-amd64), const AF_CHAOS = 5 pkg syscall (darwin-amd64), const AF_CNT = 21 pkg syscall (darwin-amd64), const AF_COIP = 20 pkg syscall (darwin-amd64), const AF_DATAKIT = 9 pkg syscall (darwin-amd64), const AF_DECnet = 12 pkg syscall (darwin-amd64), const AF_DLI = 13 pkg syscall (darwin-amd64), const AF_E164 = 28 pkg syscall (darwin-amd64), const AF_ECMA = 8 pkg syscall (darwin-amd64), const AF_HYLINK = 15 pkg syscall (darwin-amd64), const AF_IEEE80211 = 37 pkg syscall (darwin-amd64), const AF_IMPLINK = 3 pkg syscall (darwin-amd64), const AF_INET6 = 30 pkg syscall (darwin-amd64), const AF_IPX = 23 pkg syscall (darwin-amd64), const AF_ISDN = 28 pkg syscall (darwin-amd64), const AF_ISO = 7 pkg syscall (darwin-amd64), const AF_LAT = 14 pkg syscall (darwin-amd64), const AF_LINK = 18 pkg syscall (darwin-amd64), const AF_LOCAL = 1 pkg syscall (darwin-amd64), const AF_MAX = 38 pkg syscall (darwin-amd64), const AF_NATM = 31 pkg syscall (darwin-amd64), const AF_NDRV = 27 pkg syscall (darwin-amd64), const AF_NETBIOS = 33 pkg syscall (darwin-amd64), const AF_NS = 6 pkg syscall (darwin-amd64), const AF_OSI = 7 pkg syscall (darwin-amd64), const AF_PPP = 34 pkg syscall (darwin-amd64), const AF_PUP = 4 pkg syscall (darwin-amd64), const AF_RESERVED_36 = 36 pkg syscall (darwin-amd64), const AF_ROUTE = 17 pkg syscall (darwin-amd64), const AF_SIP = 24 pkg syscall (darwin-amd64), const AF_SNA = 11 pkg syscall (darwin-amd64), const AF_SYSTEM = 32 pkg syscall (darwin-amd64), const B0 = 0 pkg syscall (darwin-amd64), const B0 ideal-int pkg syscall (darwin-amd64), const B110 = 110 pkg syscall (darwin-amd64), const B110 ideal-int pkg syscall (darwin-amd64), const B115200 = 115200 pkg syscall (darwin-amd64), const B115200 ideal-int pkg syscall (darwin-amd64), const B1200 = 1200 pkg syscall (darwin-amd64), const B1200 ideal-int pkg syscall (darwin-amd64), const B134 = 134 pkg syscall (darwin-amd64), const B134 ideal-int pkg syscall (darwin-amd64), const B14400 = 14400 pkg syscall (darwin-amd64), const B14400 ideal-int pkg syscall (darwin-amd64), const B150 = 150 pkg syscall (darwin-amd64), const B150 ideal-int pkg syscall (darwin-amd64), const B1800 = 1800 pkg syscall (darwin-amd64), const B1800 ideal-int pkg syscall (darwin-amd64), const B19200 = 19200 pkg syscall (darwin-amd64), const B19200 ideal-int pkg syscall (darwin-amd64), const B200 = 200 pkg syscall (darwin-amd64), const B200 ideal-int pkg syscall (darwin-amd64), const B230400 = 230400 pkg syscall (darwin-amd64), const B230400 ideal-int pkg syscall (darwin-amd64), const B2400 = 2400 pkg syscall (darwin-amd64), const B2400 ideal-int pkg syscall (darwin-amd64), const B28800 = 28800 pkg syscall (darwin-amd64), const B28800 ideal-int pkg syscall (darwin-amd64), const B300 = 300 pkg syscall (darwin-amd64), const B300 ideal-int pkg syscall (darwin-amd64), const B38400 = 38400 pkg syscall (darwin-amd64), const B38400 ideal-int pkg syscall (darwin-amd64), const B4800 = 4800 pkg syscall (darwin-amd64), const B4800 ideal-int pkg syscall (darwin-amd64), const B50 = 50 pkg syscall (darwin-amd64), const B50 ideal-int pkg syscall (darwin-amd64), const B57600 = 57600 pkg syscall (darwin-amd64), const B57600 ideal-int pkg syscall (darwin-amd64), const B600 = 600 pkg syscall (darwin-amd64), const B600 ideal-int pkg syscall (darwin-amd64), const B7200 = 7200 pkg syscall (darwin-amd64), const B7200 ideal-int pkg syscall (darwin-amd64), const B75 = 75 pkg syscall (darwin-amd64), const B75 ideal-int pkg syscall (darwin-amd64), const B76800 = 76800 pkg syscall (darwin-amd64), const B76800 ideal-int pkg syscall (darwin-amd64), const B9600 = 9600 pkg syscall (darwin-amd64), const B9600 ideal-int pkg syscall (darwin-amd64), const BIOCFLUSH = 536887912 pkg syscall (darwin-amd64), const BIOCGBLEN = 1074020966 pkg syscall (darwin-amd64), const BIOCGDLT = 1074020970 pkg syscall (darwin-amd64), const BIOCGDLTLIST = 3222028921 pkg syscall (darwin-amd64), const BIOCGETIF = 1075855979 pkg syscall (darwin-amd64), const BIOCGHDRCMPLT = 1074020980 pkg syscall (darwin-amd64), const BIOCGRSIG = 1074020978 pkg syscall (darwin-amd64), const BIOCGRTIMEOUT = 1074807406 pkg syscall (darwin-amd64), const BIOCGSEESENT = 1074020982 pkg syscall (darwin-amd64), const BIOCGSTATS = 1074283119 pkg syscall (darwin-amd64), const BIOCIMMEDIATE = 2147762800 pkg syscall (darwin-amd64), const BIOCPROMISC = 536887913 pkg syscall (darwin-amd64), const BIOCSBLEN = 3221504614 pkg syscall (darwin-amd64), const BIOCSDLT = 2147762808 pkg syscall (darwin-amd64), const BIOCSETF = 2148549223 pkg syscall (darwin-amd64), const BIOCSETIF = 2149597804 pkg syscall (darwin-amd64), const BIOCSHDRCMPLT = 2147762805 pkg syscall (darwin-amd64), const BIOCSRSIG = 2147762803 pkg syscall (darwin-amd64), const BIOCSRTIMEOUT = 2148549229 pkg syscall (darwin-amd64), const BIOCSSEESENT = 2147762807 pkg syscall (darwin-amd64), const BIOCVERSION = 1074020977 pkg syscall (darwin-amd64), const BPF_A = 16 pkg syscall (darwin-amd64), const BPF_ABS = 32 pkg syscall (darwin-amd64), const BPF_ADD = 0 pkg syscall (darwin-amd64), const BPF_ALIGNMENT = 4 pkg syscall (darwin-amd64), const BPF_ALU = 4 pkg syscall (darwin-amd64), const BPF_AND = 80 pkg syscall (darwin-amd64), const BPF_B = 16 pkg syscall (darwin-amd64), const BPF_DIV = 48 pkg syscall (darwin-amd64), const BPF_H = 8 pkg syscall (darwin-amd64), const BPF_IMM = 0 pkg syscall (darwin-amd64), const BPF_IND = 64 pkg syscall (darwin-amd64), const BPF_JA = 0 pkg syscall (darwin-amd64), const BPF_JEQ = 16 pkg syscall (darwin-amd64), const BPF_JGE = 48 pkg syscall (darwin-amd64), const BPF_JGT = 32 pkg syscall (darwin-amd64), const BPF_JMP = 5 pkg syscall (darwin-amd64), const BPF_JSET = 64 pkg syscall (darwin-amd64), const BPF_K = 0 pkg syscall (darwin-amd64), const BPF_LD = 0 pkg syscall (darwin-amd64), const BPF_LDX = 1 pkg syscall (darwin-amd64), const BPF_LEN = 128 pkg syscall (darwin-amd64), const BPF_LSH = 96 pkg syscall (darwin-amd64), const BPF_MAJOR_VERSION = 1 pkg syscall (darwin-amd64), const BPF_MAXBUFSIZE = 524288 pkg syscall (darwin-amd64), const BPF_MAXINSNS = 512 pkg syscall (darwin-amd64), const BPF_MEM = 96 pkg syscall (darwin-amd64), const BPF_MEMWORDS = 16 pkg syscall (darwin-amd64), const BPF_MINBUFSIZE = 32 pkg syscall (darwin-amd64), const BPF_MINOR_VERSION = 1 pkg syscall (darwin-amd64), const BPF_MISC = 7 pkg syscall (darwin-amd64), const BPF_MSH = 160 pkg syscall (darwin-amd64), const BPF_MUL = 32 pkg syscall (darwin-amd64), const BPF_NEG = 128 pkg syscall (darwin-amd64), const BPF_OR = 64 pkg syscall (darwin-amd64), const BPF_RELEASE = 199606 pkg syscall (darwin-amd64), const BPF_RET = 6 pkg syscall (darwin-amd64), const BPF_RSH = 112 pkg syscall (darwin-amd64), const BPF_ST = 2 pkg syscall (darwin-amd64), const BPF_STX = 3 pkg syscall (darwin-amd64), const BPF_SUB = 16 pkg syscall (darwin-amd64), const BPF_TAX = 0 pkg syscall (darwin-amd64), const BPF_TXA = 128 pkg syscall (darwin-amd64), const BPF_W = 0 pkg syscall (darwin-amd64), const BPF_X = 8 pkg syscall (darwin-amd64), const BRKINT = 2 pkg syscall (darwin-amd64), const BRKINT ideal-int pkg syscall (darwin-amd64), const CFLUSH = 15 pkg syscall (darwin-amd64), const CFLUSH ideal-int pkg syscall (darwin-amd64), const CLOCAL = 32768 pkg syscall (darwin-amd64), const CLOCAL ideal-int pkg syscall (darwin-amd64), const CREAD = 2048 pkg syscall (darwin-amd64), const CREAD ideal-int pkg syscall (darwin-amd64), const CS5 = 0 pkg syscall (darwin-amd64), const CS5 ideal-int pkg syscall (darwin-amd64), const CS6 = 256 pkg syscall (darwin-amd64), const CS6 ideal-int pkg syscall (darwin-amd64), const CS7 = 512 pkg syscall (darwin-amd64), const CS7 ideal-int pkg syscall (darwin-amd64), const CS8 = 768 pkg syscall (darwin-amd64), const CS8 ideal-int pkg syscall (darwin-amd64), const CSIZE = 768 pkg syscall (darwin-amd64), const CSIZE ideal-int pkg syscall (darwin-amd64), const CSTART = 17 pkg syscall (darwin-amd64), const CSTART ideal-int pkg syscall (darwin-amd64), const CSTATUS = 20 pkg syscall (darwin-amd64), const CSTATUS ideal-int pkg syscall (darwin-amd64), const CSTOP = 19 pkg syscall (darwin-amd64), const CSTOP ideal-int pkg syscall (darwin-amd64), const CSTOPB = 1024 pkg syscall (darwin-amd64), const CSTOPB ideal-int pkg syscall (darwin-amd64), const CSUSP = 26 pkg syscall (darwin-amd64), const CSUSP ideal-int pkg syscall (darwin-amd64), const CTL_MAXNAME = 12 pkg syscall (darwin-amd64), const CTL_NET = 4 pkg syscall (darwin-amd64), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (darwin-amd64), const DLT_ARCNET = 7 pkg syscall (darwin-amd64), const DLT_ATM_CLIP = 19 pkg syscall (darwin-amd64), const DLT_ATM_RFC1483 = 11 pkg syscall (darwin-amd64), const DLT_AX25 = 3 pkg syscall (darwin-amd64), const DLT_CHAOS = 5 pkg syscall (darwin-amd64), const DLT_CHDLC = 104 pkg syscall (darwin-amd64), const DLT_C_HDLC = 104 pkg syscall (darwin-amd64), const DLT_EN10MB = 1 pkg syscall (darwin-amd64), const DLT_EN3MB = 2 pkg syscall (darwin-amd64), const DLT_FDDI = 10 pkg syscall (darwin-amd64), const DLT_IEEE802 = 6 pkg syscall (darwin-amd64), const DLT_IEEE802_11 = 105 pkg syscall (darwin-amd64), const DLT_IEEE802_11_RADIO = 127 pkg syscall (darwin-amd64), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (darwin-amd64), const DLT_LINUX_SLL = 113 pkg syscall (darwin-amd64), const DLT_LOOP = 108 pkg syscall (darwin-amd64), const DLT_NULL = 0 pkg syscall (darwin-amd64), const DLT_PFLOG = 117 pkg syscall (darwin-amd64), const DLT_PFSYNC = 18 pkg syscall (darwin-amd64), const DLT_PPP = 9 pkg syscall (darwin-amd64), const DLT_PPP_BSDOS = 16 pkg syscall (darwin-amd64), const DLT_PPP_SERIAL = 50 pkg syscall (darwin-amd64), const DLT_PRONET = 4 pkg syscall (darwin-amd64), const DLT_RAW = 12 pkg syscall (darwin-amd64), const DLT_SLIP = 8 pkg syscall (darwin-amd64), const DLT_SLIP_BSDOS = 15 pkg syscall (darwin-amd64), const DT_BLK = 6 pkg syscall (darwin-amd64), const DT_CHR = 2 pkg syscall (darwin-amd64), const DT_DIR = 4 pkg syscall (darwin-amd64), const DT_FIFO = 1 pkg syscall (darwin-amd64), const DT_LNK = 10 pkg syscall (darwin-amd64), const DT_REG = 8 pkg syscall (darwin-amd64), const DT_SOCK = 12 pkg syscall (darwin-amd64), const DT_UNKNOWN = 0 pkg syscall (darwin-amd64), const DT_WHT = 14 pkg syscall (darwin-amd64), const E2BIG = 7 pkg syscall (darwin-amd64), const EACCES = 13 pkg syscall (darwin-amd64), const EADDRINUSE = 48 pkg syscall (darwin-amd64), const EADDRNOTAVAIL = 49 pkg syscall (darwin-amd64), const EAFNOSUPPORT = 47 pkg syscall (darwin-amd64), const EAGAIN = 35 pkg syscall (darwin-amd64), const EALREADY = 37 pkg syscall (darwin-amd64), const EAUTH = 80 pkg syscall (darwin-amd64), const EBADARCH = 86 pkg syscall (darwin-amd64), const EBADEXEC = 85 pkg syscall (darwin-amd64), const EBADF = 9 pkg syscall (darwin-amd64), const EBADMACHO = 88 pkg syscall (darwin-amd64), const EBADMSG = 94 pkg syscall (darwin-amd64), const EBADRPC = 72 pkg syscall (darwin-amd64), const EBUSY = 16 pkg syscall (darwin-amd64), const ECANCELED = 89 pkg syscall (darwin-amd64), const ECHILD = 10 pkg syscall (darwin-amd64), const ECHO = 8 pkg syscall (darwin-amd64), const ECHOCTL = 64 pkg syscall (darwin-amd64), const ECHOE = 2 pkg syscall (darwin-amd64), const ECHOK = 4 pkg syscall (darwin-amd64), const ECHOKE = 1 pkg syscall (darwin-amd64), const ECHONL = 16 pkg syscall (darwin-amd64), const ECHOPRT = 32 pkg syscall (darwin-amd64), const ECONNABORTED = 53 pkg syscall (darwin-amd64), const ECONNREFUSED = 61 pkg syscall (darwin-amd64), const ECONNRESET = 54 pkg syscall (darwin-amd64), const EDEADLK = 11 pkg syscall (darwin-amd64), const EDESTADDRREQ = 39 pkg syscall (darwin-amd64), const EDEVERR = 83 pkg syscall (darwin-amd64), const EDOM = 33 pkg syscall (darwin-amd64), const EDQUOT = 69 pkg syscall (darwin-amd64), const EEXIST = 17 pkg syscall (darwin-amd64), const EFAULT = 14 pkg syscall (darwin-amd64), const EFBIG = 27 pkg syscall (darwin-amd64), const EFTYPE = 79 pkg syscall (darwin-amd64), const EHOSTDOWN = 64 pkg syscall (darwin-amd64), const EHOSTUNREACH = 65 pkg syscall (darwin-amd64), const EIDRM = 90 pkg syscall (darwin-amd64), const EILSEQ = 92 pkg syscall (darwin-amd64), const EINPROGRESS = 36 pkg syscall (darwin-amd64), const EINTR = 4 pkg syscall (darwin-amd64), const EINVAL = 22 pkg syscall (darwin-amd64), const EIO = 5 pkg syscall (darwin-amd64), const EISCONN = 56 pkg syscall (darwin-amd64), const EISDIR = 21 pkg syscall (darwin-amd64), const ELAST = 105 pkg syscall (darwin-amd64), const ELOOP = 62 pkg syscall (darwin-amd64), const EMFILE = 24 pkg syscall (darwin-amd64), const EMLINK = 31 pkg syscall (darwin-amd64), const EMSGSIZE = 40 pkg syscall (darwin-amd64), const EMULTIHOP = 95 pkg syscall (darwin-amd64), const ENAMETOOLONG = 63 pkg syscall (darwin-amd64), const ENEEDAUTH = 81 pkg syscall (darwin-amd64), const ENETDOWN = 50 pkg syscall (darwin-amd64), const ENETRESET = 52 pkg syscall (darwin-amd64), const ENETUNREACH = 51 pkg syscall (darwin-amd64), const ENFILE = 23 pkg syscall (darwin-amd64), const ENOATTR = 93 pkg syscall (darwin-amd64), const ENOBUFS = 55 pkg syscall (darwin-amd64), const ENODATA = 96 pkg syscall (darwin-amd64), const ENODEV = 19 pkg syscall (darwin-amd64), const ENOEXEC = 8 pkg syscall (darwin-amd64), const ENOLCK = 77 pkg syscall (darwin-amd64), const ENOLINK = 97 pkg syscall (darwin-amd64), const ENOMEM = 12 pkg syscall (darwin-amd64), const ENOMSG = 91 pkg syscall (darwin-amd64), const ENOPOLICY = 103 pkg syscall (darwin-amd64), const ENOPROTOOPT = 42 pkg syscall (darwin-amd64), const ENOSPC = 28 pkg syscall (darwin-amd64), const ENOSR = 98 pkg syscall (darwin-amd64), const ENOSTR = 99 pkg syscall (darwin-amd64), const ENOSYS = 78 pkg syscall (darwin-amd64), const ENOTBLK = 15 pkg syscall (darwin-amd64), const ENOTCONN = 57 pkg syscall (darwin-amd64), const ENOTDIR = 20 pkg syscall (darwin-amd64), const ENOTEMPTY = 66 pkg syscall (darwin-amd64), const ENOTRECOVERABLE = 104 pkg syscall (darwin-amd64), const ENOTSOCK = 38 pkg syscall (darwin-amd64), const ENOTSUP = 45 pkg syscall (darwin-amd64), const ENOTTY = 25 pkg syscall (darwin-amd64), const ENXIO = 6 pkg syscall (darwin-amd64), const EOPNOTSUPP = 102 pkg syscall (darwin-amd64), const EOVERFLOW = 84 pkg syscall (darwin-amd64), const EOWNERDEAD = 105 pkg syscall (darwin-amd64), const EPERM = 1 pkg syscall (darwin-amd64), const EPFNOSUPPORT = 46 pkg syscall (darwin-amd64), const EPIPE = 32 pkg syscall (darwin-amd64), const EPROCLIM = 67 pkg syscall (darwin-amd64), const EPROCUNAVAIL = 76 pkg syscall (darwin-amd64), const EPROGMISMATCH = 75 pkg syscall (darwin-amd64), const EPROGUNAVAIL = 74 pkg syscall (darwin-amd64), const EPROTO = 100 pkg syscall (darwin-amd64), const EPROTONOSUPPORT = 43 pkg syscall (darwin-amd64), const EPROTOTYPE = 41 pkg syscall (darwin-amd64), const EPWROFF = 82 pkg syscall (darwin-amd64), const ERANGE = 34 pkg syscall (darwin-amd64), const EREMOTE = 71 pkg syscall (darwin-amd64), const EROFS = 30 pkg syscall (darwin-amd64), const ERPCMISMATCH = 73 pkg syscall (darwin-amd64), const ESHLIBVERS = 87 pkg syscall (darwin-amd64), const ESHUTDOWN = 58 pkg syscall (darwin-amd64), const ESOCKTNOSUPPORT = 44 pkg syscall (darwin-amd64), const ESPIPE = 29 pkg syscall (darwin-amd64), const ESRCH = 3 pkg syscall (darwin-amd64), const ESTALE = 70 pkg syscall (darwin-amd64), const ETIME = 101 pkg syscall (darwin-amd64), const ETIMEDOUT = 60 pkg syscall (darwin-amd64), const ETOOMANYREFS = 59 pkg syscall (darwin-amd64), const ETXTBSY = 26 pkg syscall (darwin-amd64), const EUSERS = 68 pkg syscall (darwin-amd64), const EVFILT_AIO = -3 pkg syscall (darwin-amd64), const EVFILT_FS = -9 pkg syscall (darwin-amd64), const EVFILT_MACHPORT = -8 pkg syscall (darwin-amd64), const EVFILT_PROC = -5 pkg syscall (darwin-amd64), const EVFILT_READ = -1 pkg syscall (darwin-amd64), const EVFILT_SIGNAL = -6 pkg syscall (darwin-amd64), const EVFILT_SYSCOUNT = 12 pkg syscall (darwin-amd64), const EVFILT_THREADMARKER = 12 pkg syscall (darwin-amd64), const EVFILT_TIMER = -7 pkg syscall (darwin-amd64), const EVFILT_USER = -10 pkg syscall (darwin-amd64), const EVFILT_VM = -12 pkg syscall (darwin-amd64), const EVFILT_VNODE = -4 pkg syscall (darwin-amd64), const EVFILT_WRITE = -2 pkg syscall (darwin-amd64), const EV_ADD = 1 pkg syscall (darwin-amd64), const EV_CLEAR = 32 pkg syscall (darwin-amd64), const EV_DELETE = 2 pkg syscall (darwin-amd64), const EV_DISABLE = 8 pkg syscall (darwin-amd64), const EV_DISPATCH = 128 pkg syscall (darwin-amd64), const EV_ENABLE = 4 pkg syscall (darwin-amd64), const EV_EOF = 32768 pkg syscall (darwin-amd64), const EV_ERROR = 16384 pkg syscall (darwin-amd64), const EV_FLAG0 = 4096 pkg syscall (darwin-amd64), const EV_FLAG1 = 8192 pkg syscall (darwin-amd64), const EV_ONESHOT = 16 pkg syscall (darwin-amd64), const EV_OOBAND = 8192 pkg syscall (darwin-amd64), const EV_POLL = 4096 pkg syscall (darwin-amd64), const EV_RECEIPT = 64 pkg syscall (darwin-amd64), const EV_SYSFLAGS = 61440 pkg syscall (darwin-amd64), const EWOULDBLOCK = 35 pkg syscall (darwin-amd64), const EXDEV = 18 pkg syscall (darwin-amd64), const EXTA = 19200 pkg syscall (darwin-amd64), const EXTB = 38400 pkg syscall (darwin-amd64), const EXTPROC = 2048 pkg syscall (darwin-amd64), const FD_CLOEXEC = 1 pkg syscall (darwin-amd64), const FD_SETSIZE = 1024 pkg syscall (darwin-amd64), const FLUSHO = 8388608 pkg syscall (darwin-amd64), const FLUSHO ideal-int pkg syscall (darwin-amd64), const F_ADDFILESIGS = 61 pkg syscall (darwin-amd64), const F_ADDSIGS = 59 pkg syscall (darwin-amd64), const F_ALLOCATEALL = 4 pkg syscall (darwin-amd64), const F_ALLOCATECONTIG = 2 pkg syscall (darwin-amd64), const F_CHKCLEAN = 41 pkg syscall (darwin-amd64), const F_DUPFD = 0 pkg syscall (darwin-amd64), const F_DUPFD_CLOEXEC = 67 pkg syscall (darwin-amd64), const F_FLUSH_DATA = 40 pkg syscall (darwin-amd64), const F_FREEZE_FS = 53 pkg syscall (darwin-amd64), const F_FULLFSYNC = 51 pkg syscall (darwin-amd64), const F_GETFD = 1 pkg syscall (darwin-amd64), const F_GETFL = 3 pkg syscall (darwin-amd64), const F_GETLK = 7 pkg syscall (darwin-amd64), const F_GETLKPID = 66 pkg syscall (darwin-amd64), const F_GETNOSIGPIPE = 74 pkg syscall (darwin-amd64), const F_GETOWN = 5 pkg syscall (darwin-amd64), const F_GETPATH = 50 pkg syscall (darwin-amd64), const F_GETPATH_MTMINFO = 71 pkg syscall (darwin-amd64), const F_GETPROTECTIONCLASS = 63 pkg syscall (darwin-amd64), const F_GLOBAL_NOCACHE = 55 pkg syscall (darwin-amd64), const F_LOG2PHYS = 49 pkg syscall (darwin-amd64), const F_LOG2PHYS_EXT = 65 pkg syscall (darwin-amd64), const F_MARKDEPENDENCY = 60 pkg syscall (darwin-amd64), const F_NOCACHE = 48 pkg syscall (darwin-amd64), const F_NODIRECT = 62 pkg syscall (darwin-amd64), const F_OK = 0 pkg syscall (darwin-amd64), const F_PATHPKG_CHECK = 52 pkg syscall (darwin-amd64), const F_PEOFPOSMODE = 3 pkg syscall (darwin-amd64), const F_PREALLOCATE = 42 pkg syscall (darwin-amd64), const F_RDADVISE = 44 pkg syscall (darwin-amd64), const F_RDAHEAD = 45 pkg syscall (darwin-amd64), const F_RDLCK = 1 pkg syscall (darwin-amd64), const F_READBOOTSTRAP = 46 pkg syscall (darwin-amd64), const F_SETBACKINGSTORE = 70 pkg syscall (darwin-amd64), const F_SETFD = 2 pkg syscall (darwin-amd64), const F_SETFL = 4 pkg syscall (darwin-amd64), const F_SETLK = 8 pkg syscall (darwin-amd64), const F_SETLKW = 9 pkg syscall (darwin-amd64), const F_SETNOSIGPIPE = 73 pkg syscall (darwin-amd64), const F_SETOWN = 6 pkg syscall (darwin-amd64), const F_SETPROTECTIONCLASS = 64 pkg syscall (darwin-amd64), const F_SETSIZE = 43 pkg syscall (darwin-amd64), const F_THAW_FS = 54 pkg syscall (darwin-amd64), const F_UNLCK = 2 pkg syscall (darwin-amd64), const F_VOLPOSMODE = 4 pkg syscall (darwin-amd64), const F_WRITEBOOTSTRAP = 47 pkg syscall (darwin-amd64), const F_WRLCK = 3 pkg syscall (darwin-amd64), const HUPCL = 16384 pkg syscall (darwin-amd64), const HUPCL ideal-int pkg syscall (darwin-amd64), const ICANON = 256 pkg syscall (darwin-amd64), const ICANON ideal-int pkg syscall (darwin-amd64), const ICRNL = 256 pkg syscall (darwin-amd64), const ICRNL ideal-int pkg syscall (darwin-amd64), const IEXTEN = 1024 pkg syscall (darwin-amd64), const IEXTEN ideal-int pkg syscall (darwin-amd64), const IFF_ALLMULTI = 512 pkg syscall (darwin-amd64), const IFF_ALTPHYS = 16384 pkg syscall (darwin-amd64), const IFF_DEBUG = 4 pkg syscall (darwin-amd64), const IFF_LINK0 = 4096 pkg syscall (darwin-amd64), const IFF_LINK1 = 8192 pkg syscall (darwin-amd64), const IFF_LINK2 = 16384 pkg syscall (darwin-amd64), const IFF_LOOPBACK = 8 pkg syscall (darwin-amd64), const IFF_MULTICAST = 32768 pkg syscall (darwin-amd64), const IFF_NOARP = 128 pkg syscall (darwin-amd64), const IFF_NOTRAILERS = 32 pkg syscall (darwin-amd64), const IFF_OACTIVE = 1024 pkg syscall (darwin-amd64), const IFF_POINTOPOINT = 16 pkg syscall (darwin-amd64), const IFF_PROMISC = 256 pkg syscall (darwin-amd64), const IFF_RUNNING = 64 pkg syscall (darwin-amd64), const IFF_SIMPLEX = 2048 pkg syscall (darwin-amd64), const IFNAMSIZ = 16 pkg syscall (darwin-amd64), const IFT_1822 = 2 pkg syscall (darwin-amd64), const IFT_AAL5 = 49 pkg syscall (darwin-amd64), const IFT_ARCNET = 35 pkg syscall (darwin-amd64), const IFT_ARCNETPLUS = 36 pkg syscall (darwin-amd64), const IFT_ATM = 37 pkg syscall (darwin-amd64), const IFT_BRIDGE = 209 pkg syscall (darwin-amd64), const IFT_CARP = 248 pkg syscall (darwin-amd64), const IFT_CELLULAR = 255 pkg syscall (darwin-amd64), const IFT_CEPT = 19 pkg syscall (darwin-amd64), const IFT_DS3 = 30 pkg syscall (darwin-amd64), const IFT_ENC = 244 pkg syscall (darwin-amd64), const IFT_EON = 25 pkg syscall (darwin-amd64), const IFT_ETHER = 6 pkg syscall (darwin-amd64), const IFT_FAITH = 56 pkg syscall (darwin-amd64), const IFT_FDDI = 15 pkg syscall (darwin-amd64), const IFT_FRELAY = 32 pkg syscall (darwin-amd64), const IFT_FRELAYDCE = 44 pkg syscall (darwin-amd64), const IFT_GIF = 55 pkg syscall (darwin-amd64), const IFT_HDH1822 = 3 pkg syscall (darwin-amd64), const IFT_HIPPI = 47 pkg syscall (darwin-amd64), const IFT_HSSI = 46 pkg syscall (darwin-amd64), const IFT_HY = 14 pkg syscall (darwin-amd64), const IFT_IEEE1394 = 144 pkg syscall (darwin-amd64), const IFT_IEEE8023ADLAG = 136 pkg syscall (darwin-amd64), const IFT_ISDNBASIC = 20 pkg syscall (darwin-amd64), const IFT_ISDNPRIMARY = 21 pkg syscall (darwin-amd64), const IFT_ISO88022LLC = 41 pkg syscall (darwin-amd64), const IFT_ISO88023 = 7 pkg syscall (darwin-amd64), const IFT_ISO88024 = 8 pkg syscall (darwin-amd64), const IFT_ISO88025 = 9 pkg syscall (darwin-amd64), const IFT_ISO88026 = 10 pkg syscall (darwin-amd64), const IFT_L2VLAN = 135 pkg syscall (darwin-amd64), const IFT_LAPB = 16 pkg syscall (darwin-amd64), const IFT_LOCALTALK = 42 pkg syscall (darwin-amd64), const IFT_LOOP = 24 pkg syscall (darwin-amd64), const IFT_MIOX25 = 38 pkg syscall (darwin-amd64), const IFT_MODEM = 48 pkg syscall (darwin-amd64), const IFT_NSIP = 27 pkg syscall (darwin-amd64), const IFT_OTHER = 1 pkg syscall (darwin-amd64), const IFT_P10 = 12 pkg syscall (darwin-amd64), const IFT_P80 = 13 pkg syscall (darwin-amd64), const IFT_PARA = 34 pkg syscall (darwin-amd64), const IFT_PDP = 255 pkg syscall (darwin-amd64), const IFT_PFLOG = 245 pkg syscall (darwin-amd64), const IFT_PFSYNC = 246 pkg syscall (darwin-amd64), const IFT_PPP = 23 pkg syscall (darwin-amd64), const IFT_PROPMUX = 54 pkg syscall (darwin-amd64), const IFT_PROPVIRTUAL = 53 pkg syscall (darwin-amd64), const IFT_PTPSERIAL = 22 pkg syscall (darwin-amd64), const IFT_RS232 = 33 pkg syscall (darwin-amd64), const IFT_SDLC = 17 pkg syscall (darwin-amd64), const IFT_SIP = 31 pkg syscall (darwin-amd64), const IFT_SLIP = 28 pkg syscall (darwin-amd64), const IFT_SMDSDXI = 43 pkg syscall (darwin-amd64), const IFT_SMDSICIP = 52 pkg syscall (darwin-amd64), const IFT_SONET = 39 pkg syscall (darwin-amd64), const IFT_SONETPATH = 50 pkg syscall (darwin-amd64), const IFT_SONETVT = 51 pkg syscall (darwin-amd64), const IFT_STARLAN = 11 pkg syscall (darwin-amd64), const IFT_STF = 57 pkg syscall (darwin-amd64), const IFT_T1 = 18 pkg syscall (darwin-amd64), const IFT_ULTRA = 29 pkg syscall (darwin-amd64), const IFT_V35 = 45 pkg syscall (darwin-amd64), const IFT_X25 = 5 pkg syscall (darwin-amd64), const IFT_X25DDN = 4 pkg syscall (darwin-amd64), const IFT_X25PLE = 40 pkg syscall (darwin-amd64), const IFT_XETHER = 26 pkg syscall (darwin-amd64), const IGNBRK = 1 pkg syscall (darwin-amd64), const IGNBRK ideal-int pkg syscall (darwin-amd64), const IGNCR = 128 pkg syscall (darwin-amd64), const IGNCR ideal-int pkg syscall (darwin-amd64), const IGNPAR = 4 pkg syscall (darwin-amd64), const IGNPAR ideal-int pkg syscall (darwin-amd64), const IMAXBEL = 8192 pkg syscall (darwin-amd64), const IMAXBEL ideal-int pkg syscall (darwin-amd64), const INLCR = 64 pkg syscall (darwin-amd64), const INLCR ideal-int pkg syscall (darwin-amd64), const INPCK = 16 pkg syscall (darwin-amd64), const INPCK ideal-int pkg syscall (darwin-amd64), const IN_CLASSA_HOST = 16777215 pkg syscall (darwin-amd64), const IN_CLASSA_MAX = 128 pkg syscall (darwin-amd64), const IN_CLASSA_NET = 4278190080 pkg syscall (darwin-amd64), const IN_CLASSA_NSHIFT = 24 pkg syscall (darwin-amd64), const IN_CLASSB_HOST = 65535 pkg syscall (darwin-amd64), const IN_CLASSB_MAX = 65536 pkg syscall (darwin-amd64), const IN_CLASSB_NET = 4294901760 pkg syscall (darwin-amd64), const IN_CLASSB_NSHIFT = 16 pkg syscall (darwin-amd64), const IN_CLASSC_HOST = 255 pkg syscall (darwin-amd64), const IN_CLASSC_NET = 4294967040 pkg syscall (darwin-amd64), const IN_CLASSC_NSHIFT = 8 pkg syscall (darwin-amd64), const IN_CLASSD_HOST = 268435455 pkg syscall (darwin-amd64), const IN_CLASSD_NET = 4026531840 pkg syscall (darwin-amd64), const IN_CLASSD_NSHIFT = 28 pkg syscall (darwin-amd64), const IN_LINKLOCALNETNUM = 2851995648 pkg syscall (darwin-amd64), const IN_LOOPBACKNET = 127 pkg syscall (darwin-amd64), const IPPROTO_3PC = 34 pkg syscall (darwin-amd64), const IPPROTO_ADFS = 68 pkg syscall (darwin-amd64), const IPPROTO_AH = 51 pkg syscall (darwin-amd64), const IPPROTO_AHIP = 61 pkg syscall (darwin-amd64), const IPPROTO_APES = 99 pkg syscall (darwin-amd64), const IPPROTO_ARGUS = 13 pkg syscall (darwin-amd64), const IPPROTO_AX25 = 93 pkg syscall (darwin-amd64), const IPPROTO_BHA = 49 pkg syscall (darwin-amd64), const IPPROTO_BLT = 30 pkg syscall (darwin-amd64), const IPPROTO_BRSATMON = 76 pkg syscall (darwin-amd64), const IPPROTO_CFTP = 62 pkg syscall (darwin-amd64), const IPPROTO_CHAOS = 16 pkg syscall (darwin-amd64), const IPPROTO_CMTP = 38 pkg syscall (darwin-amd64), const IPPROTO_CPHB = 73 pkg syscall (darwin-amd64), const IPPROTO_CPNX = 72 pkg syscall (darwin-amd64), const IPPROTO_DDP = 37 pkg syscall (darwin-amd64), const IPPROTO_DGP = 86 pkg syscall (darwin-amd64), const IPPROTO_DIVERT = 254 pkg syscall (darwin-amd64), const IPPROTO_DONE = 257 pkg syscall (darwin-amd64), const IPPROTO_DSTOPTS = 60 pkg syscall (darwin-amd64), const IPPROTO_EGP = 8 pkg syscall (darwin-amd64), const IPPROTO_EMCON = 14 pkg syscall (darwin-amd64), const IPPROTO_ENCAP = 98 pkg syscall (darwin-amd64), const IPPROTO_EON = 80 pkg syscall (darwin-amd64), const IPPROTO_ESP = 50 pkg syscall (darwin-amd64), const IPPROTO_ETHERIP = 97 pkg syscall (darwin-amd64), const IPPROTO_FRAGMENT = 44 pkg syscall (darwin-amd64), const IPPROTO_GGP = 3 pkg syscall (darwin-amd64), const IPPROTO_GMTP = 100 pkg syscall (darwin-amd64), const IPPROTO_GRE = 47 pkg syscall (darwin-amd64), const IPPROTO_HELLO = 63 pkg syscall (darwin-amd64), const IPPROTO_HMP = 20 pkg syscall (darwin-amd64), const IPPROTO_HOPOPTS = 0 pkg syscall (darwin-amd64), const IPPROTO_ICMP = 1 pkg syscall (darwin-amd64), const IPPROTO_ICMPV6 = 58 pkg syscall (darwin-amd64), const IPPROTO_IDP = 22 pkg syscall (darwin-amd64), const IPPROTO_IDPR = 35 pkg syscall (darwin-amd64), const IPPROTO_IDRP = 45 pkg syscall (darwin-amd64), const IPPROTO_IGMP = 2 pkg syscall (darwin-amd64), const IPPROTO_IGP = 85 pkg syscall (darwin-amd64), const IPPROTO_IGRP = 88 pkg syscall (darwin-amd64), const IPPROTO_IL = 40 pkg syscall (darwin-amd64), const IPPROTO_INLSP = 52 pkg syscall (darwin-amd64), const IPPROTO_INP = 32 pkg syscall (darwin-amd64), const IPPROTO_IPCOMP = 108 pkg syscall (darwin-amd64), const IPPROTO_IPCV = 71 pkg syscall (darwin-amd64), const IPPROTO_IPEIP = 94 pkg syscall (darwin-amd64), const IPPROTO_IPIP = 4 pkg syscall (darwin-amd64), const IPPROTO_IPPC = 67 pkg syscall (darwin-amd64), const IPPROTO_IPV4 = 4 pkg syscall (darwin-amd64), const IPPROTO_IRTP = 28 pkg syscall (darwin-amd64), const IPPROTO_KRYPTOLAN = 65 pkg syscall (darwin-amd64), const IPPROTO_LARP = 91 pkg syscall (darwin-amd64), const IPPROTO_LEAF1 = 25 pkg syscall (darwin-amd64), const IPPROTO_LEAF2 = 26 pkg syscall (darwin-amd64), const IPPROTO_MAX = 256 pkg syscall (darwin-amd64), const IPPROTO_MAXID = 52 pkg syscall (darwin-amd64), const IPPROTO_MEAS = 19 pkg syscall (darwin-amd64), const IPPROTO_MHRP = 48 pkg syscall (darwin-amd64), const IPPROTO_MICP = 95 pkg syscall (darwin-amd64), const IPPROTO_MTP = 92 pkg syscall (darwin-amd64), const IPPROTO_MUX = 18 pkg syscall (darwin-amd64), const IPPROTO_ND = 77 pkg syscall (darwin-amd64), const IPPROTO_NHRP = 54 pkg syscall (darwin-amd64), const IPPROTO_NONE = 59 pkg syscall (darwin-amd64), const IPPROTO_NSP = 31 pkg syscall (darwin-amd64), const IPPROTO_NVPII = 11 pkg syscall (darwin-amd64), const IPPROTO_OSPFIGP = 89 pkg syscall (darwin-amd64), const IPPROTO_PGM = 113 pkg syscall (darwin-amd64), const IPPROTO_PIGP = 9 pkg syscall (darwin-amd64), const IPPROTO_PIM = 103 pkg syscall (darwin-amd64), const IPPROTO_PRM = 21 pkg syscall (darwin-amd64), const IPPROTO_PUP = 12 pkg syscall (darwin-amd64), const IPPROTO_PVP = 75 pkg syscall (darwin-amd64), const IPPROTO_RAW = 255 pkg syscall (darwin-amd64), const IPPROTO_RCCMON = 10 pkg syscall (darwin-amd64), const IPPROTO_RDP = 27 pkg syscall (darwin-amd64), const IPPROTO_ROUTING = 43 pkg syscall (darwin-amd64), const IPPROTO_RSVP = 46 pkg syscall (darwin-amd64), const IPPROTO_RVD = 66 pkg syscall (darwin-amd64), const IPPROTO_SATEXPAK = 64 pkg syscall (darwin-amd64), const IPPROTO_SATMON = 69 pkg syscall (darwin-amd64), const IPPROTO_SCCSP = 96 pkg syscall (darwin-amd64), const IPPROTO_SCTP = 132 pkg syscall (darwin-amd64), const IPPROTO_SDRP = 42 pkg syscall (darwin-amd64), const IPPROTO_SEP = 33 pkg syscall (darwin-amd64), const IPPROTO_SRPC = 90 pkg syscall (darwin-amd64), const IPPROTO_ST = 7 pkg syscall (darwin-amd64), const IPPROTO_SVMTP = 82 pkg syscall (darwin-amd64), const IPPROTO_SWIPE = 53 pkg syscall (darwin-amd64), const IPPROTO_TCF = 87 pkg syscall (darwin-amd64), const IPPROTO_TP = 29 pkg syscall (darwin-amd64), const IPPROTO_TPXX = 39 pkg syscall (darwin-amd64), const IPPROTO_TRUNK1 = 23 pkg syscall (darwin-amd64), const IPPROTO_TRUNK2 = 24 pkg syscall (darwin-amd64), const IPPROTO_TTP = 84 pkg syscall (darwin-amd64), const IPPROTO_VINES = 83 pkg syscall (darwin-amd64), const IPPROTO_VISA = 70 pkg syscall (darwin-amd64), const IPPROTO_VMTP = 81 pkg syscall (darwin-amd64), const IPPROTO_WBEXPAK = 79 pkg syscall (darwin-amd64), const IPPROTO_WBMON = 78 pkg syscall (darwin-amd64), const IPPROTO_WSN = 74 pkg syscall (darwin-amd64), const IPPROTO_XNET = 15 pkg syscall (darwin-amd64), const IPPROTO_XTP = 36 pkg syscall (darwin-amd64), const IPV6_2292DSTOPTS = 23 pkg syscall (darwin-amd64), const IPV6_2292HOPLIMIT = 20 pkg syscall (darwin-amd64), const IPV6_2292HOPOPTS = 22 pkg syscall (darwin-amd64), const IPV6_2292NEXTHOP = 21 pkg syscall (darwin-amd64), const IPV6_2292PKTINFO = 19 pkg syscall (darwin-amd64), const IPV6_2292PKTOPTIONS = 25 pkg syscall (darwin-amd64), const IPV6_2292RTHDR = 24 pkg syscall (darwin-amd64), const IPV6_BINDV6ONLY = 27 pkg syscall (darwin-amd64), const IPV6_BOUND_IF = 125 pkg syscall (darwin-amd64), const IPV6_CHECKSUM = 26 pkg syscall (darwin-amd64), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (darwin-amd64), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (darwin-amd64), const IPV6_DEFHLIM = 64 pkg syscall (darwin-amd64), const IPV6_FAITH = 29 pkg syscall (darwin-amd64), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (darwin-amd64), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (darwin-amd64), const IPV6_FRAGTTL = 120 pkg syscall (darwin-amd64), const IPV6_FW_ADD = 30 pkg syscall (darwin-amd64), const IPV6_FW_DEL = 31 pkg syscall (darwin-amd64), const IPV6_FW_FLUSH = 32 pkg syscall (darwin-amd64), const IPV6_FW_GET = 34 pkg syscall (darwin-amd64), const IPV6_FW_ZERO = 33 pkg syscall (darwin-amd64), const IPV6_HLIMDEC = 1 pkg syscall (darwin-amd64), const IPV6_IPSEC_POLICY = 28 pkg syscall (darwin-amd64), const IPV6_JOIN_GROUP = 12 pkg syscall (darwin-amd64), const IPV6_LEAVE_GROUP = 13 pkg syscall (darwin-amd64), const IPV6_MAXHLIM = 255 pkg syscall (darwin-amd64), const IPV6_MAXOPTHDR = 2048 pkg syscall (darwin-amd64), const IPV6_MAXPACKET = 65535 pkg syscall (darwin-amd64), const IPV6_MAX_GROUP_SRC_FILTER = 512 pkg syscall (darwin-amd64), const IPV6_MAX_MEMBERSHIPS = 4095 pkg syscall (darwin-amd64), const IPV6_MAX_SOCK_SRC_FILTER = 128 pkg syscall (darwin-amd64), const IPV6_MIN_MEMBERSHIPS = 31 pkg syscall (darwin-amd64), const IPV6_MMTU = 1280 pkg syscall (darwin-amd64), const IPV6_MULTICAST_HOPS = 10 pkg syscall (darwin-amd64), const IPV6_MULTICAST_IF = 9 pkg syscall (darwin-amd64), const IPV6_MULTICAST_LOOP = 11 pkg syscall (darwin-amd64), const IPV6_PORTRANGE = 14 pkg syscall (darwin-amd64), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (darwin-amd64), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (darwin-amd64), const IPV6_PORTRANGE_LOW = 2 pkg syscall (darwin-amd64), const IPV6_RECVTCLASS = 35 pkg syscall (darwin-amd64), const IPV6_RTHDR_LOOSE = 0 pkg syscall (darwin-amd64), const IPV6_RTHDR_STRICT = 1 pkg syscall (darwin-amd64), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (darwin-amd64), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (darwin-amd64), const IPV6_TCLASS = 36 pkg syscall (darwin-amd64), const IPV6_UNICAST_HOPS = 4 pkg syscall (darwin-amd64), const IPV6_V6ONLY = 27 pkg syscall (darwin-amd64), const IPV6_VERSION = 96 pkg syscall (darwin-amd64), const IPV6_VERSION_MASK = 240 pkg syscall (darwin-amd64), const IP_ADD_MEMBERSHIP = 12 pkg syscall (darwin-amd64), const IP_ADD_SOURCE_MEMBERSHIP = 70 pkg syscall (darwin-amd64), const IP_BLOCK_SOURCE = 72 pkg syscall (darwin-amd64), const IP_BOUND_IF = 25 pkg syscall (darwin-amd64), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (darwin-amd64), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (darwin-amd64), const IP_DF = 16384 pkg syscall (darwin-amd64), const IP_DROP_MEMBERSHIP = 13 pkg syscall (darwin-amd64), const IP_DROP_SOURCE_MEMBERSHIP = 71 pkg syscall (darwin-amd64), const IP_DUMMYNET_CONFIGURE = 60 pkg syscall (darwin-amd64), const IP_DUMMYNET_DEL = 61 pkg syscall (darwin-amd64), const IP_DUMMYNET_FLUSH = 62 pkg syscall (darwin-amd64), const IP_DUMMYNET_GET = 64 pkg syscall (darwin-amd64), const IP_FAITH = 22 pkg syscall (darwin-amd64), const IP_FW_ADD = 40 pkg syscall (darwin-amd64), const IP_FW_DEL = 41 pkg syscall (darwin-amd64), const IP_FW_FLUSH = 42 pkg syscall (darwin-amd64), const IP_FW_GET = 44 pkg syscall (darwin-amd64), const IP_FW_RESETLOG = 45 pkg syscall (darwin-amd64), const IP_FW_ZERO = 43 pkg syscall (darwin-amd64), const IP_HDRINCL = 2 pkg syscall (darwin-amd64), const IP_IPSEC_POLICY = 21 pkg syscall (darwin-amd64), const IP_MAXPACKET = 65535 pkg syscall (darwin-amd64), const IP_MAX_GROUP_SRC_FILTER = 512 pkg syscall (darwin-amd64), const IP_MAX_MEMBERSHIPS = 4095 pkg syscall (darwin-amd64), const IP_MAX_SOCK_MUTE_FILTER = 128 pkg syscall (darwin-amd64), const IP_MAX_SOCK_SRC_FILTER = 128 pkg syscall (darwin-amd64), const IP_MF = 8192 pkg syscall (darwin-amd64), const IP_MIN_MEMBERSHIPS = 31 pkg syscall (darwin-amd64), const IP_MSFILTER = 74 pkg syscall (darwin-amd64), const IP_MSS = 576 pkg syscall (darwin-amd64), const IP_MULTICAST_IF = 9 pkg syscall (darwin-amd64), const IP_MULTICAST_IFINDEX = 66 pkg syscall (darwin-amd64), const IP_MULTICAST_LOOP = 11 pkg syscall (darwin-amd64), const IP_MULTICAST_TTL = 10 pkg syscall (darwin-amd64), const IP_MULTICAST_VIF = 14 pkg syscall (darwin-amd64), const IP_NAT__XXX = 55 pkg syscall (darwin-amd64), const IP_OFFMASK = 8191 pkg syscall (darwin-amd64), const IP_OLD_FW_ADD = 50 pkg syscall (darwin-amd64), const IP_OLD_FW_DEL = 51 pkg syscall (darwin-amd64), const IP_OLD_FW_FLUSH = 52 pkg syscall (darwin-amd64), const IP_OLD_FW_GET = 54 pkg syscall (darwin-amd64), const IP_OLD_FW_RESETLOG = 56 pkg syscall (darwin-amd64), const IP_OLD_FW_ZERO = 53 pkg syscall (darwin-amd64), const IP_OPTIONS = 1 pkg syscall (darwin-amd64), const IP_PKTINFO = 26 pkg syscall (darwin-amd64), const IP_PORTRANGE = 19 pkg syscall (darwin-amd64), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (darwin-amd64), const IP_PORTRANGE_HIGH = 1 pkg syscall (darwin-amd64), const IP_PORTRANGE_LOW = 2 pkg syscall (darwin-amd64), const IP_RECVDSTADDR = 7 pkg syscall (darwin-amd64), const IP_RECVIF = 20 pkg syscall (darwin-amd64), const IP_RECVOPTS = 5 pkg syscall (darwin-amd64), const IP_RECVPKTINFO = 26 pkg syscall (darwin-amd64), const IP_RECVRETOPTS = 6 pkg syscall (darwin-amd64), const IP_RECVTTL = 24 pkg syscall (darwin-amd64), const IP_RETOPTS = 8 pkg syscall (darwin-amd64), const IP_RF = 32768 pkg syscall (darwin-amd64), const IP_RSVP_OFF = 16 pkg syscall (darwin-amd64), const IP_RSVP_ON = 15 pkg syscall (darwin-amd64), const IP_RSVP_VIF_OFF = 18 pkg syscall (darwin-amd64), const IP_RSVP_VIF_ON = 17 pkg syscall (darwin-amd64), const IP_STRIPHDR = 23 pkg syscall (darwin-amd64), const IP_TOS = 3 pkg syscall (darwin-amd64), const IP_TRAFFIC_MGT_BACKGROUND = 65 pkg syscall (darwin-amd64), const IP_TTL = 4 pkg syscall (darwin-amd64), const IP_UNBLOCK_SOURCE = 73 pkg syscall (darwin-amd64), const ISIG = 128 pkg syscall (darwin-amd64), const ISIG ideal-int pkg syscall (darwin-amd64), const ISTRIP = 32 pkg syscall (darwin-amd64), const ISTRIP ideal-int pkg syscall (darwin-amd64), const IUTF8 = 16384 pkg syscall (darwin-amd64), const IUTF8 ideal-int pkg syscall (darwin-amd64), const IXANY = 2048 pkg syscall (darwin-amd64), const IXANY ideal-int pkg syscall (darwin-amd64), const IXOFF = 1024 pkg syscall (darwin-amd64), const IXOFF ideal-int pkg syscall (darwin-amd64), const IXON = 512 pkg syscall (darwin-amd64), const IXON ideal-int pkg syscall (darwin-amd64), const ImplementsGetwd = false pkg syscall (darwin-amd64), const LOCK_EX = 2 pkg syscall (darwin-amd64), const LOCK_NB = 4 pkg syscall (darwin-amd64), const LOCK_SH = 1 pkg syscall (darwin-amd64), const LOCK_UN = 8 pkg syscall (darwin-amd64), const MADV_CAN_REUSE = 9 pkg syscall (darwin-amd64), const MADV_DONTNEED = 4 pkg syscall (darwin-amd64), const MADV_FREE = 5 pkg syscall (darwin-amd64), const MADV_FREE_REUSABLE = 7 pkg syscall (darwin-amd64), const MADV_FREE_REUSE = 8 pkg syscall (darwin-amd64), const MADV_NORMAL = 0 pkg syscall (darwin-amd64), const MADV_RANDOM = 1 pkg syscall (darwin-amd64), const MADV_SEQUENTIAL = 2 pkg syscall (darwin-amd64), const MADV_WILLNEED = 3 pkg syscall (darwin-amd64), const MADV_ZERO_WIRED_PAGES = 6 pkg syscall (darwin-amd64), const MAP_ANON = 4096 pkg syscall (darwin-amd64), const MAP_COPY = 2 pkg syscall (darwin-amd64), const MAP_FILE = 0 pkg syscall (darwin-amd64), const MAP_FIXED = 16 pkg syscall (darwin-amd64), const MAP_HASSEMAPHORE = 512 pkg syscall (darwin-amd64), const MAP_JIT = 2048 pkg syscall (darwin-amd64), const MAP_NOCACHE = 1024 pkg syscall (darwin-amd64), const MAP_NOEXTEND = 256 pkg syscall (darwin-amd64), const MAP_NORESERVE = 64 pkg syscall (darwin-amd64), const MAP_PRIVATE = 2 pkg syscall (darwin-amd64), const MAP_RENAME = 32 pkg syscall (darwin-amd64), const MAP_RESERVED0080 = 128 pkg syscall (darwin-amd64), const MAP_SHARED = 1 pkg syscall (darwin-amd64), const MCL_CURRENT = 1 pkg syscall (darwin-amd64), const MCL_FUTURE = 2 pkg syscall (darwin-amd64), const MSG_CTRUNC = 32 pkg syscall (darwin-amd64), const MSG_DONTROUTE = 4 pkg syscall (darwin-amd64), const MSG_DONTWAIT = 128 pkg syscall (darwin-amd64), const MSG_EOF = 256 pkg syscall (darwin-amd64), const MSG_EOR = 8 pkg syscall (darwin-amd64), const MSG_FLUSH = 1024 pkg syscall (darwin-amd64), const MSG_HAVEMORE = 8192 pkg syscall (darwin-amd64), const MSG_HOLD = 2048 pkg syscall (darwin-amd64), const MSG_NEEDSA = 65536 pkg syscall (darwin-amd64), const MSG_OOB = 1 pkg syscall (darwin-amd64), const MSG_PEEK = 2 pkg syscall (darwin-amd64), const MSG_RCVMORE = 16384 pkg syscall (darwin-amd64), const MSG_SEND = 4096 pkg syscall (darwin-amd64), const MSG_TRUNC = 16 pkg syscall (darwin-amd64), const MSG_WAITALL = 64 pkg syscall (darwin-amd64), const MSG_WAITSTREAM = 512 pkg syscall (darwin-amd64), const MS_ASYNC = 1 pkg syscall (darwin-amd64), const MS_DEACTIVATE = 8 pkg syscall (darwin-amd64), const MS_INVALIDATE = 2 pkg syscall (darwin-amd64), const MS_KILLPAGES = 4 pkg syscall (darwin-amd64), const MS_SYNC = 16 pkg syscall (darwin-amd64), const NAME_MAX = 255 pkg syscall (darwin-amd64), const NET_RT_DUMP = 1 pkg syscall (darwin-amd64), const NET_RT_DUMP2 = 7 pkg syscall (darwin-amd64), const NET_RT_FLAGS = 2 pkg syscall (darwin-amd64), const NET_RT_IFLIST = 3 pkg syscall (darwin-amd64), const NET_RT_IFLIST2 = 6 pkg syscall (darwin-amd64), const NET_RT_MAXID = 10 pkg syscall (darwin-amd64), const NET_RT_STAT = 4 pkg syscall (darwin-amd64), const NET_RT_TRASH = 5 pkg syscall (darwin-amd64), const NOFLSH = 2147483648 pkg syscall (darwin-amd64), const NOFLSH ideal-int pkg syscall (darwin-amd64), const NOTE_ABSOLUTE = 8 pkg syscall (darwin-amd64), const NOTE_ATTRIB = 8 pkg syscall (darwin-amd64), const NOTE_CHILD = 4 pkg syscall (darwin-amd64), const NOTE_DELETE = 1 pkg syscall (darwin-amd64), const NOTE_EXEC = 536870912 pkg syscall (darwin-amd64), const NOTE_EXIT = 2147483648 pkg syscall (darwin-amd64), const NOTE_EXITSTATUS = 67108864 pkg syscall (darwin-amd64), const NOTE_EXTEND = 4 pkg syscall (darwin-amd64), const NOTE_FFAND = 1073741824 pkg syscall (darwin-amd64), const NOTE_FFCOPY = 3221225472 pkg syscall (darwin-amd64), const NOTE_FFCTRLMASK = 3221225472 pkg syscall (darwin-amd64), const NOTE_FFLAGSMASK = 16777215 pkg syscall (darwin-amd64), const NOTE_FFNOP = 0 pkg syscall (darwin-amd64), const NOTE_FFOR = 2147483648 pkg syscall (darwin-amd64), const NOTE_FORK = 1073741824 pkg syscall (darwin-amd64), const NOTE_LINK = 16 pkg syscall (darwin-amd64), const NOTE_LOWAT = 1 pkg syscall (darwin-amd64), const NOTE_NONE = 128 pkg syscall (darwin-amd64), const NOTE_NSECONDS = 4 pkg syscall (darwin-amd64), const NOTE_PCTRLMASK = -1048576 pkg syscall (darwin-amd64), const NOTE_PDATAMASK = 1048575 pkg syscall (darwin-amd64), const NOTE_REAP = 268435456 pkg syscall (darwin-amd64), const NOTE_RENAME = 32 pkg syscall (darwin-amd64), const NOTE_RESOURCEEND = 33554432 pkg syscall (darwin-amd64), const NOTE_REVOKE = 64 pkg syscall (darwin-amd64), const NOTE_SECONDS = 1 pkg syscall (darwin-amd64), const NOTE_SIGNAL = 134217728 pkg syscall (darwin-amd64), const NOTE_TRACK = 1 pkg syscall (darwin-amd64), const NOTE_TRACKERR = 2 pkg syscall (darwin-amd64), const NOTE_TRIGGER = 16777216 pkg syscall (darwin-amd64), const NOTE_USECONDS = 2 pkg syscall (darwin-amd64), const NOTE_VM_ERROR = 268435456 pkg syscall (darwin-amd64), const NOTE_VM_PRESSURE = 2147483648 pkg syscall (darwin-amd64), const NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 536870912 pkg syscall (darwin-amd64), const NOTE_VM_PRESSURE_TERMINATE = 1073741824 pkg syscall (darwin-amd64), const NOTE_WRITE = 2 pkg syscall (darwin-amd64), const OCRNL = 16 pkg syscall (darwin-amd64), const OCRNL ideal-int pkg syscall (darwin-amd64), const OFDEL = 131072 pkg syscall (darwin-amd64), const OFDEL ideal-int pkg syscall (darwin-amd64), const OFILL = 128 pkg syscall (darwin-amd64), const OFILL ideal-int pkg syscall (darwin-amd64), const ONLCR = 2 pkg syscall (darwin-amd64), const ONLCR ideal-int pkg syscall (darwin-amd64), const ONLRET = 64 pkg syscall (darwin-amd64), const ONLRET ideal-int pkg syscall (darwin-amd64), const ONOCR = 32 pkg syscall (darwin-amd64), const ONOCR ideal-int pkg syscall (darwin-amd64), const ONOEOT = 8 pkg syscall (darwin-amd64), const ONOEOT ideal-int pkg syscall (darwin-amd64), const OPOST = 1 pkg syscall (darwin-amd64), const OPOST ideal-int pkg syscall (darwin-amd64), const O_ACCMODE = 3 pkg syscall (darwin-amd64), const O_ALERT = 536870912 pkg syscall (darwin-amd64), const O_APPEND = 8 pkg syscall (darwin-amd64), const O_ASYNC = 64 pkg syscall (darwin-amd64), const O_CLOEXEC = 16777216 pkg syscall (darwin-amd64), const O_CREAT = 512 pkg syscall (darwin-amd64), const O_DIRECTORY = 1048576 pkg syscall (darwin-amd64), const O_DSYNC = 4194304 pkg syscall (darwin-amd64), const O_EVTONLY = 32768 pkg syscall (darwin-amd64), const O_EXCL = 2048 pkg syscall (darwin-amd64), const O_EXLOCK = 32 pkg syscall (darwin-amd64), const O_FSYNC = 128 pkg syscall (darwin-amd64), const O_NDELAY = 4 pkg syscall (darwin-amd64), const O_NOCTTY = 131072 pkg syscall (darwin-amd64), const O_NOFOLLOW = 256 pkg syscall (darwin-amd64), const O_NONBLOCK = 4 pkg syscall (darwin-amd64), const O_POPUP = 2147483648 pkg syscall (darwin-amd64), const O_SHLOCK = 16 pkg syscall (darwin-amd64), const O_SYMLINK = 2097152 pkg syscall (darwin-amd64), const O_SYNC = 128 pkg syscall (darwin-amd64), const O_TRUNC = 1024 pkg syscall (darwin-amd64), const PARENB = 4096 pkg syscall (darwin-amd64), const PARENB ideal-int pkg syscall (darwin-amd64), const PARMRK = 8 pkg syscall (darwin-amd64), const PARMRK ideal-int pkg syscall (darwin-amd64), const PARODD = 8192 pkg syscall (darwin-amd64), const PARODD ideal-int pkg syscall (darwin-amd64), const PENDIN = 536870912 pkg syscall (darwin-amd64), const PENDIN ideal-int pkg syscall (darwin-amd64), const PROT_EXEC = 4 pkg syscall (darwin-amd64), const PROT_NONE = 0 pkg syscall (darwin-amd64), const PROT_READ = 1 pkg syscall (darwin-amd64), const PROT_WRITE = 2 pkg syscall (darwin-amd64), const PTRACE_CONT = 7 pkg syscall (darwin-amd64), const PTRACE_KILL = 8 pkg syscall (darwin-amd64), const PTRACE_TRACEME = 0 pkg syscall (darwin-amd64), const PT_ATTACH = 10 pkg syscall (darwin-amd64), const PT_ATTACHEXC = 14 pkg syscall (darwin-amd64), const PT_CONTINUE = 7 pkg syscall (darwin-amd64), const PT_DENY_ATTACH = 31 pkg syscall (darwin-amd64), const PT_DETACH = 11 pkg syscall (darwin-amd64), const PT_FIRSTMACH = 32 pkg syscall (darwin-amd64), const PT_FORCEQUOTA = 30 pkg syscall (darwin-amd64), const PT_KILL = 8 pkg syscall (darwin-amd64), const PT_READ_D = 2 pkg syscall (darwin-amd64), const PT_READ_I = 1 pkg syscall (darwin-amd64), const PT_READ_U = 3 pkg syscall (darwin-amd64), const PT_SIGEXC = 12 pkg syscall (darwin-amd64), const PT_STEP = 9 pkg syscall (darwin-amd64), const PT_THUPDATE = 13 pkg syscall (darwin-amd64), const PT_TRACE_ME = 0 pkg syscall (darwin-amd64), const PT_WRITE_D = 5 pkg syscall (darwin-amd64), const PT_WRITE_I = 4 pkg syscall (darwin-amd64), const PT_WRITE_U = 6 pkg syscall (darwin-amd64), const RLIMIT_AS = 5 pkg syscall (darwin-amd64), const RLIMIT_CORE = 4 pkg syscall (darwin-amd64), const RLIMIT_CPU = 0 pkg syscall (darwin-amd64), const RLIMIT_DATA = 2 pkg syscall (darwin-amd64), const RLIMIT_FSIZE = 1 pkg syscall (darwin-amd64), const RLIMIT_NOFILE = 8 pkg syscall (darwin-amd64), const RLIMIT_STACK = 3 pkg syscall (darwin-amd64), const RLIM_INFINITY = 9223372036854775807 pkg syscall (darwin-amd64), const RTAX_AUTHOR = 6 pkg syscall (darwin-amd64), const RTAX_BRD = 7 pkg syscall (darwin-amd64), const RTAX_DST = 0 pkg syscall (darwin-amd64), const RTAX_GATEWAY = 1 pkg syscall (darwin-amd64), const RTAX_GENMASK = 3 pkg syscall (darwin-amd64), const RTAX_IFA = 5 pkg syscall (darwin-amd64), const RTAX_IFP = 4 pkg syscall (darwin-amd64), const RTAX_MAX = 8 pkg syscall (darwin-amd64), const RTAX_NETMASK = 2 pkg syscall (darwin-amd64), const RTA_AUTHOR = 64 pkg syscall (darwin-amd64), const RTA_BRD = 128 pkg syscall (darwin-amd64), const RTA_DST = 1 pkg syscall (darwin-amd64), const RTA_GATEWAY = 2 pkg syscall (darwin-amd64), const RTA_GENMASK = 8 pkg syscall (darwin-amd64), const RTA_IFA = 32 pkg syscall (darwin-amd64), const RTA_IFP = 16 pkg syscall (darwin-amd64), const RTA_NETMASK = 4 pkg syscall (darwin-amd64), const RTF_BLACKHOLE = 4096 pkg syscall (darwin-amd64), const RTF_BROADCAST = 4194304 pkg syscall (darwin-amd64), const RTF_CLONING = 256 pkg syscall (darwin-amd64), const RTF_CONDEMNED = 33554432 pkg syscall (darwin-amd64), const RTF_DELCLONE = 128 pkg syscall (darwin-amd64), const RTF_DONE = 64 pkg syscall (darwin-amd64), const RTF_DYNAMIC = 16 pkg syscall (darwin-amd64), const RTF_GATEWAY = 2 pkg syscall (darwin-amd64), const RTF_HOST = 4 pkg syscall (darwin-amd64), const RTF_IFREF = 67108864 pkg syscall (darwin-amd64), const RTF_IFSCOPE = 16777216 pkg syscall (darwin-amd64), const RTF_LLINFO = 1024 pkg syscall (darwin-amd64), const RTF_LOCAL = 2097152 pkg syscall (darwin-amd64), const RTF_MODIFIED = 32 pkg syscall (darwin-amd64), const RTF_MULTICAST = 8388608 pkg syscall (darwin-amd64), const RTF_PINNED = 1048576 pkg syscall (darwin-amd64), const RTF_PRCLONING = 65536 pkg syscall (darwin-amd64), const RTF_PROTO1 = 32768 pkg syscall (darwin-amd64), const RTF_PROTO2 = 16384 pkg syscall (darwin-amd64), const RTF_PROTO3 = 262144 pkg syscall (darwin-amd64), const RTF_REJECT = 8 pkg syscall (darwin-amd64), const RTF_STATIC = 2048 pkg syscall (darwin-amd64), const RTF_UP = 1 pkg syscall (darwin-amd64), const RTF_WASCLONED = 131072 pkg syscall (darwin-amd64), const RTF_XRESOLVE = 512 pkg syscall (darwin-amd64), const RTM_ADD = 1 pkg syscall (darwin-amd64), const RTM_CHANGE = 3 pkg syscall (darwin-amd64), const RTM_DELADDR = 13 pkg syscall (darwin-amd64), const RTM_DELETE = 2 pkg syscall (darwin-amd64), const RTM_DELMADDR = 16 pkg syscall (darwin-amd64), const RTM_GET = 4 pkg syscall (darwin-amd64), const RTM_GET2 = 20 pkg syscall (darwin-amd64), const RTM_IFINFO = 14 pkg syscall (darwin-amd64), const RTM_IFINFO2 = 18 pkg syscall (darwin-amd64), const RTM_LOCK = 8 pkg syscall (darwin-amd64), const RTM_LOSING = 5 pkg syscall (darwin-amd64), const RTM_MISS = 7 pkg syscall (darwin-amd64), const RTM_NEWADDR = 12 pkg syscall (darwin-amd64), const RTM_NEWMADDR = 15 pkg syscall (darwin-amd64), const RTM_NEWMADDR2 = 19 pkg syscall (darwin-amd64), const RTM_OLDADD = 9 pkg syscall (darwin-amd64), const RTM_OLDDEL = 10 pkg syscall (darwin-amd64), const RTM_REDIRECT = 6 pkg syscall (darwin-amd64), const RTM_RESOLVE = 11 pkg syscall (darwin-amd64), const RTM_RTTUNIT = 1000000 pkg syscall (darwin-amd64), const RTM_VERSION = 5 pkg syscall (darwin-amd64), const RTV_EXPIRE = 4 pkg syscall (darwin-amd64), const RTV_HOPCOUNT = 2 pkg syscall (darwin-amd64), const RTV_MTU = 1 pkg syscall (darwin-amd64), const RTV_RPIPE = 8 pkg syscall (darwin-amd64), const RTV_RTT = 64 pkg syscall (darwin-amd64), const RTV_RTTVAR = 128 pkg syscall (darwin-amd64), const RTV_SPIPE = 16 pkg syscall (darwin-amd64), const RTV_SSTHRESH = 32 pkg syscall (darwin-amd64), const RUSAGE_CHILDREN = -1 pkg syscall (darwin-amd64), const RUSAGE_SELF = 0 pkg syscall (darwin-amd64), const SCM_CREDS = 3 pkg syscall (darwin-amd64), const SCM_RIGHTS = 1 pkg syscall (darwin-amd64), const SCM_TIMESTAMP = 2 pkg syscall (darwin-amd64), const SCM_TIMESTAMP_MONOTONIC = 4 pkg syscall (darwin-amd64), const SIGBUS = 10 pkg syscall (darwin-amd64), const SIGCHLD = 20 pkg syscall (darwin-amd64), const SIGCONT = 19 pkg syscall (darwin-amd64), const SIGEMT = 7 pkg syscall (darwin-amd64), const SIGINFO = 29 pkg syscall (darwin-amd64), const SIGIO = 23 pkg syscall (darwin-amd64), const SIGIOT = 6 pkg syscall (darwin-amd64), const SIGPROF = 27 pkg syscall (darwin-amd64), const SIGSTOP = 17 pkg syscall (darwin-amd64), const SIGSYS = 12 pkg syscall (darwin-amd64), const SIGTSTP = 18 pkg syscall (darwin-amd64), const SIGTTIN = 21 pkg syscall (darwin-amd64), const SIGTTOU = 22 pkg syscall (darwin-amd64), const SIGURG = 16 pkg syscall (darwin-amd64), const SIGUSR1 = 30 pkg syscall (darwin-amd64), const SIGUSR2 = 31 pkg syscall (darwin-amd64), const SIGVTALRM = 26 pkg syscall (darwin-amd64), const SIGWINCH = 28 pkg syscall (darwin-amd64), const SIGXCPU = 24 pkg syscall (darwin-amd64), const SIGXFSZ = 25 pkg syscall (darwin-amd64), const SIOCADDMULTI = 2149607729 pkg syscall (darwin-amd64), const SIOCAIFADDR = 2151704858 pkg syscall (darwin-amd64), const SIOCALIFADDR = 2165860637 pkg syscall (darwin-amd64), const SIOCARPIPLL = 3223349544 pkg syscall (darwin-amd64), const SIOCATMARK = 1074033415 pkg syscall (darwin-amd64), const SIOCAUTOADDR = 3223349542 pkg syscall (darwin-amd64), const SIOCAUTONETMASK = 2149607719 pkg syscall (darwin-amd64), const SIOCDELMULTI = 2149607730 pkg syscall (darwin-amd64), const SIOCDIFADDR = 2149607705 pkg syscall (darwin-amd64), const SIOCDIFPHYADDR = 2149607745 pkg syscall (darwin-amd64), const SIOCDLIFADDR = 2165860639 pkg syscall (darwin-amd64), const SIOCGDRVSPEC = 3223873915 pkg syscall (darwin-amd64), const SIOCGETSGCNT = 3222565404 pkg syscall (darwin-amd64), const SIOCGETVIFCNT = 3222565403 pkg syscall (darwin-amd64), const SIOCGETVLAN = 3223349631 pkg syscall (darwin-amd64), const SIOCGHIWAT = 1074033409 pkg syscall (darwin-amd64), const SIOCGIFADDR = 3223349537 pkg syscall (darwin-amd64), const SIOCGIFALTMTU = 3223349576 pkg syscall (darwin-amd64), const SIOCGIFASYNCMAP = 3223349628 pkg syscall (darwin-amd64), const SIOCGIFBOND = 3223349575 pkg syscall (darwin-amd64), const SIOCGIFBRDADDR = 3223349539 pkg syscall (darwin-amd64), const SIOCGIFCAP = 3223349595 pkg syscall (darwin-amd64), const SIOCGIFCONF = 3222038820 pkg syscall (darwin-amd64), const SIOCGIFDEVMTU = 3223349572 pkg syscall (darwin-amd64), const SIOCGIFDSTADDR = 3223349538 pkg syscall (darwin-amd64), const SIOCGIFFLAGS = 3223349521 pkg syscall (darwin-amd64), const SIOCGIFGENERIC = 3223349562 pkg syscall (darwin-amd64), const SIOCGIFKPI = 3223349639 pkg syscall (darwin-amd64), const SIOCGIFMAC = 3223349634 pkg syscall (darwin-amd64), const SIOCGIFMEDIA = 3224135992 pkg syscall (darwin-amd64), const SIOCGIFMETRIC = 3223349527 pkg syscall (darwin-amd64), const SIOCGIFMTU = 3223349555 pkg syscall (darwin-amd64), const SIOCGIFNETMASK = 3223349541 pkg syscall (darwin-amd64), const SIOCGIFPDSTADDR = 3223349568 pkg syscall (darwin-amd64), const SIOCGIFPHYS = 3223349557 pkg syscall (darwin-amd64), const SIOCGIFPSRCADDR = 3223349567 pkg syscall (darwin-amd64), const SIOCGIFSTATUS = 3274795325 pkg syscall (darwin-amd64), const SIOCGIFVLAN = 3223349631 pkg syscall (darwin-amd64), const SIOCGIFWAKEFLAGS = 3223349640 pkg syscall (darwin-amd64), const SIOCGLIFADDR = 3239602462 pkg syscall (darwin-amd64), const SIOCGLIFPHYADDR = 3239602499 pkg syscall (darwin-amd64), const SIOCGLOWAT = 1074033411 pkg syscall (darwin-amd64), const SIOCGPGRP = 1074033417 pkg syscall (darwin-amd64), const SIOCIFCREATE = 3223349624 pkg syscall (darwin-amd64), const SIOCIFCREATE2 = 3223349626 pkg syscall (darwin-amd64), const SIOCIFDESTROY = 2149607801 pkg syscall (darwin-amd64), const SIOCRSLVMULTI = 3222300987 pkg syscall (darwin-amd64), const SIOCSDRVSPEC = 2150132091 pkg syscall (darwin-amd64), const SIOCSETVLAN = 2149607806 pkg syscall (darwin-amd64), const SIOCSHIWAT = 2147775232 pkg syscall (darwin-amd64), const SIOCSIFADDR = 2149607692 pkg syscall (darwin-amd64), const SIOCSIFALTMTU = 2149607749 pkg syscall (darwin-amd64), const SIOCSIFASYNCMAP = 2149607805 pkg syscall (darwin-amd64), const SIOCSIFBOND = 2149607750 pkg syscall (darwin-amd64), const SIOCSIFBRDADDR = 2149607699 pkg syscall (darwin-amd64), const SIOCSIFCAP = 2149607770 pkg syscall (darwin-amd64), const SIOCSIFDSTADDR = 2149607694 pkg syscall (darwin-amd64), const SIOCSIFFLAGS = 2149607696 pkg syscall (darwin-amd64), const SIOCSIFGENERIC = 2149607737 pkg syscall (darwin-amd64), const SIOCSIFKPI = 2149607814 pkg syscall (darwin-amd64), const SIOCSIFLLADDR = 2149607740 pkg syscall (darwin-amd64), const SIOCSIFMAC = 2149607811 pkg syscall (darwin-amd64), const SIOCSIFMEDIA = 3223349559 pkg syscall (darwin-amd64), const SIOCSIFMETRIC = 2149607704 pkg syscall (darwin-amd64), const SIOCSIFMTU = 2149607732 pkg syscall (darwin-amd64), const SIOCSIFNETMASK = 2149607702 pkg syscall (darwin-amd64), const SIOCSIFPHYADDR = 2151704894 pkg syscall (darwin-amd64), const SIOCSIFPHYS = 2149607734 pkg syscall (darwin-amd64), const SIOCSIFVLAN = 2149607806 pkg syscall (darwin-amd64), const SIOCSLIFPHYADDR = 2165860674 pkg syscall (darwin-amd64), const SIOCSLOWAT = 2147775234 pkg syscall (darwin-amd64), const SIOCSPGRP = 2147775240 pkg syscall (darwin-amd64), const SOCK_MAXADDRLEN = 255 pkg syscall (darwin-amd64), const SOCK_RDM = 4 pkg syscall (darwin-amd64), const SOL_SOCKET = 65535 pkg syscall (darwin-amd64), const SOMAXCONN = 128 pkg syscall (darwin-amd64), const SO_ACCEPTCONN = 2 pkg syscall (darwin-amd64), const SO_BROADCAST = 32 pkg syscall (darwin-amd64), const SO_DEBUG = 1 pkg syscall (darwin-amd64), const SO_DONTROUTE = 16 pkg syscall (darwin-amd64), const SO_DONTTRUNC = 8192 pkg syscall (darwin-amd64), const SO_ERROR = 4103 pkg syscall (darwin-amd64), const SO_KEEPALIVE = 8 pkg syscall (darwin-amd64), const SO_LABEL = 4112 pkg syscall (darwin-amd64), const SO_LINGER = 128 pkg syscall (darwin-amd64), const SO_LINGER_SEC = 4224 pkg syscall (darwin-amd64), const SO_NKE = 4129 pkg syscall (darwin-amd64), const SO_NOADDRERR = 4131 pkg syscall (darwin-amd64), const SO_NOSIGPIPE = 4130 pkg syscall (darwin-amd64), const SO_NOTIFYCONFLICT = 4134 pkg syscall (darwin-amd64), const SO_NP_EXTENSIONS = 4227 pkg syscall (darwin-amd64), const SO_NREAD = 4128 pkg syscall (darwin-amd64), const SO_NWRITE = 4132 pkg syscall (darwin-amd64), const SO_OOBINLINE = 256 pkg syscall (darwin-amd64), const SO_PEERLABEL = 4113 pkg syscall (darwin-amd64), const SO_RANDOMPORT = 4226 pkg syscall (darwin-amd64), const SO_RCVBUF = 4098 pkg syscall (darwin-amd64), const SO_RCVLOWAT = 4100 pkg syscall (darwin-amd64), const SO_RCVTIMEO = 4102 pkg syscall (darwin-amd64), const SO_RESTRICTIONS = 4225 pkg syscall (darwin-amd64), const SO_RESTRICT_DENYIN = 1 pkg syscall (darwin-amd64), const SO_RESTRICT_DENYOUT = 2 pkg syscall (darwin-amd64), const SO_RESTRICT_DENYSET = 2147483648 pkg syscall (darwin-amd64), const SO_REUSEADDR = 4 pkg syscall (darwin-amd64), const SO_REUSEPORT = 512 pkg syscall (darwin-amd64), const SO_REUSESHAREUID = 4133 pkg syscall (darwin-amd64), const SO_SNDBUF = 4097 pkg syscall (darwin-amd64), const SO_SNDLOWAT = 4099 pkg syscall (darwin-amd64), const SO_SNDTIMEO = 4101 pkg syscall (darwin-amd64), const SO_TIMESTAMP = 1024 pkg syscall (darwin-amd64), const SO_TIMESTAMP_MONOTONIC = 2048 pkg syscall (darwin-amd64), const SO_TYPE = 4104 pkg syscall (darwin-amd64), const SO_UPCALLCLOSEWAIT = 4135 pkg syscall (darwin-amd64), const SO_USELOOPBACK = 64 pkg syscall (darwin-amd64), const SO_WANTMORE = 16384 pkg syscall (darwin-amd64), const SO_WANTOOBFLAG = 32768 pkg syscall (darwin-amd64), const SYS_ACCEPT = 30 pkg syscall (darwin-amd64), const SYS_ACCEPT_NOCANCEL = 404 pkg syscall (darwin-amd64), const SYS_ACCESS = 33 pkg syscall (darwin-amd64), const SYS_ACCESS_EXTENDED = 284 pkg syscall (darwin-amd64), const SYS_ACCT = 51 pkg syscall (darwin-amd64), const SYS_ADD_PROFIL = 176 pkg syscall (darwin-amd64), const SYS_ADJTIME = 140 pkg syscall (darwin-amd64), const SYS_AIO_CANCEL = 316 pkg syscall (darwin-amd64), const SYS_AIO_ERROR = 317 pkg syscall (darwin-amd64), const SYS_AIO_FSYNC = 313 pkg syscall (darwin-amd64), const SYS_AIO_READ = 318 pkg syscall (darwin-amd64), const SYS_AIO_RETURN = 314 pkg syscall (darwin-amd64), const SYS_AIO_SUSPEND = 315 pkg syscall (darwin-amd64), const SYS_AIO_SUSPEND_NOCANCEL = 421 pkg syscall (darwin-amd64), const SYS_AIO_WRITE = 319 pkg syscall (darwin-amd64), const SYS_ATGETMSG = 207 pkg syscall (darwin-amd64), const SYS_ATPGETREQ = 211 pkg syscall (darwin-amd64), const SYS_ATPGETRSP = 212 pkg syscall (darwin-amd64), const SYS_ATPSNDREQ = 209 pkg syscall (darwin-amd64), const SYS_ATPSNDRSP = 210 pkg syscall (darwin-amd64), const SYS_ATPUTMSG = 208 pkg syscall (darwin-amd64), const SYS_ATSOCKET = 206 pkg syscall (darwin-amd64), const SYS_AUDIT = 350 pkg syscall (darwin-amd64), const SYS_AUDITCTL = 359 pkg syscall (darwin-amd64), const SYS_AUDITON = 351 pkg syscall (darwin-amd64), const SYS_AUDIT_SESSION_JOIN = 429 pkg syscall (darwin-amd64), const SYS_AUDIT_SESSION_PORT = 432 pkg syscall (darwin-amd64), const SYS_AUDIT_SESSION_SELF = 428 pkg syscall (darwin-amd64), const SYS_BIND = 104 pkg syscall (darwin-amd64), const SYS_BSDTHREAD_CREATE = 360 pkg syscall (darwin-amd64), const SYS_BSDTHREAD_REGISTER = 366 pkg syscall (darwin-amd64), const SYS_BSDTHREAD_TERMINATE = 361 pkg syscall (darwin-amd64), const SYS_CHDIR = 12 pkg syscall (darwin-amd64), const SYS_CHFLAGS = 34 pkg syscall (darwin-amd64), const SYS_CHMOD = 15 pkg syscall (darwin-amd64), const SYS_CHMOD_EXTENDED = 282 pkg syscall (darwin-amd64), const SYS_CHOWN = 16 pkg syscall (darwin-amd64), const SYS_CHROOT = 61 pkg syscall (darwin-amd64), const SYS_CHUD = 185 pkg syscall (darwin-amd64), const SYS_CLOSE = 6 pkg syscall (darwin-amd64), const SYS_CLOSE_NOCANCEL = 399 pkg syscall (darwin-amd64), const SYS_CONNECT = 98 pkg syscall (darwin-amd64), const SYS_CONNECT_NOCANCEL = 409 pkg syscall (darwin-amd64), const SYS_COPYFILE = 227 pkg syscall (darwin-amd64), const SYS_CSOPS = 169 pkg syscall (darwin-amd64), const SYS_DELETE = 226 pkg syscall (darwin-amd64), const SYS_DUP = 41 pkg syscall (darwin-amd64), const SYS_DUP2 = 90 pkg syscall (darwin-amd64), const SYS_EXCHANGEDATA = 223 pkg syscall (darwin-amd64), const SYS_EXECVE = 59 pkg syscall (darwin-amd64), const SYS_EXIT = 1 pkg syscall (darwin-amd64), const SYS_FCHDIR = 13 pkg syscall (darwin-amd64), const SYS_FCHFLAGS = 35 pkg syscall (darwin-amd64), const SYS_FCHMOD = 124 pkg syscall (darwin-amd64), const SYS_FCHMOD_EXTENDED = 283 pkg syscall (darwin-amd64), const SYS_FCHOWN = 123 pkg syscall (darwin-amd64), const SYS_FCNTL = 92 pkg syscall (darwin-amd64), const SYS_FCNTL_NOCANCEL = 406 pkg syscall (darwin-amd64), const SYS_FDATASYNC = 187 pkg syscall (darwin-amd64), const SYS_FFSCTL = 245 pkg syscall (darwin-amd64), const SYS_FGETATTRLIST = 228 pkg syscall (darwin-amd64), const SYS_FGETXATTR = 235 pkg syscall (darwin-amd64), const SYS_FHOPEN = 248 pkg syscall (darwin-amd64), const SYS_FILEPORT_MAKEFD = 431 pkg syscall (darwin-amd64), const SYS_FILEPORT_MAKEPORT = 430 pkg syscall (darwin-amd64), const SYS_FLISTXATTR = 241 pkg syscall (darwin-amd64), const SYS_FLOCK = 131 pkg syscall (darwin-amd64), const SYS_FORK = 2 pkg syscall (darwin-amd64), const SYS_FPATHCONF = 192 pkg syscall (darwin-amd64), const SYS_FREMOVEXATTR = 239 pkg syscall (darwin-amd64), const SYS_FSCTL = 242 pkg syscall (darwin-amd64), const SYS_FSETATTRLIST = 229 pkg syscall (darwin-amd64), const SYS_FSETXATTR = 237 pkg syscall (darwin-amd64), const SYS_FSGETPATH = 427 pkg syscall (darwin-amd64), const SYS_FSTAT = 189 pkg syscall (darwin-amd64), const SYS_FSTAT64 = 339 pkg syscall (darwin-amd64), const SYS_FSTAT64_EXTENDED = 343 pkg syscall (darwin-amd64), const SYS_FSTATFS = 158 pkg syscall (darwin-amd64), const SYS_FSTATFS64 = 346 pkg syscall (darwin-amd64), const SYS_FSTATV = 219 pkg syscall (darwin-amd64), const SYS_FSTAT_EXTENDED = 281 pkg syscall (darwin-amd64), const SYS_FSYNC = 95 pkg syscall (darwin-amd64), const SYS_FSYNC_NOCANCEL = 408 pkg syscall (darwin-amd64), const SYS_FTRUNCATE = 201 pkg syscall (darwin-amd64), const SYS_FUTIMES = 139 pkg syscall (darwin-amd64), const SYS_GETATTRLIST = 220 pkg syscall (darwin-amd64), const SYS_GETAUDIT = 355 pkg syscall (darwin-amd64), const SYS_GETAUDIT_ADDR = 357 pkg syscall (darwin-amd64), const SYS_GETAUID = 353 pkg syscall (darwin-amd64), const SYS_GETDIRENTRIES = 196 pkg syscall (darwin-amd64), const SYS_GETDIRENTRIES64 = 344 pkg syscall (darwin-amd64), const SYS_GETDIRENTRIESATTR = 222 pkg syscall (darwin-amd64), const SYS_GETDTABLESIZE = 89 pkg syscall (darwin-amd64), const SYS_GETEGID = 43 pkg syscall (darwin-amd64), const SYS_GETEUID = 25 pkg syscall (darwin-amd64), const SYS_GETFH = 161 pkg syscall (darwin-amd64), const SYS_GETFSSTAT = 18 pkg syscall (darwin-amd64), const SYS_GETFSSTAT64 = 347 pkg syscall (darwin-amd64), const SYS_GETGID = 47 pkg syscall (darwin-amd64), const SYS_GETGROUPS = 79 pkg syscall (darwin-amd64), const SYS_GETHOSTUUID = 142 pkg syscall (darwin-amd64), const SYS_GETITIMER = 86 pkg syscall (darwin-amd64), const SYS_GETLCID = 395 pkg syscall (darwin-amd64), const SYS_GETLOGIN = 49 pkg syscall (darwin-amd64), const SYS_GETPEERNAME = 31 pkg syscall (darwin-amd64), const SYS_GETPGID = 151 pkg syscall (darwin-amd64), const SYS_GETPGRP = 81 pkg syscall (darwin-amd64), const SYS_GETPID = 20 pkg syscall (darwin-amd64), const SYS_GETPPID = 39 pkg syscall (darwin-amd64), const SYS_GETPRIORITY = 100 pkg syscall (darwin-amd64), const SYS_GETRLIMIT = 194 pkg syscall (darwin-amd64), const SYS_GETRUSAGE = 117 pkg syscall (darwin-amd64), const SYS_GETSGROUPS = 288 pkg syscall (darwin-amd64), const SYS_GETSID = 310 pkg syscall (darwin-amd64), const SYS_GETSOCKNAME = 32 pkg syscall (darwin-amd64), const SYS_GETSOCKOPT = 118 pkg syscall (darwin-amd64), const SYS_GETTID = 286 pkg syscall (darwin-amd64), const SYS_GETTIMEOFDAY = 116 pkg syscall (darwin-amd64), const SYS_GETUID = 24 pkg syscall (darwin-amd64), const SYS_GETWGROUPS = 290 pkg syscall (darwin-amd64), const SYS_GETXATTR = 234 pkg syscall (darwin-amd64), const SYS_IDENTITYSVC = 293 pkg syscall (darwin-amd64), const SYS_INITGROUPS = 243 pkg syscall (darwin-amd64), const SYS_IOCTL = 54 pkg syscall (darwin-amd64), const SYS_IOPOLICYSYS = 322 pkg syscall (darwin-amd64), const SYS_ISSETUGID = 327 pkg syscall (darwin-amd64), const SYS_KDEBUG_TRACE = 180 pkg syscall (darwin-amd64), const SYS_KEVENT = 363 pkg syscall (darwin-amd64), const SYS_KEVENT64 = 369 pkg syscall (darwin-amd64), const SYS_KILL = 37 pkg syscall (darwin-amd64), const SYS_KQUEUE = 362 pkg syscall (darwin-amd64), const SYS_LCHOWN = 364 pkg syscall (darwin-amd64), const SYS_LINK = 9 pkg syscall (darwin-amd64), const SYS_LIO_LISTIO = 320 pkg syscall (darwin-amd64), const SYS_LISTEN = 106 pkg syscall (darwin-amd64), const SYS_LISTXATTR = 240 pkg syscall (darwin-amd64), const SYS_LSEEK = 199 pkg syscall (darwin-amd64), const SYS_LSTAT = 190 pkg syscall (darwin-amd64), const SYS_LSTAT64 = 340 pkg syscall (darwin-amd64), const SYS_LSTAT64_EXTENDED = 342 pkg syscall (darwin-amd64), const SYS_LSTATV = 218 pkg syscall (darwin-amd64), const SYS_LSTAT_EXTENDED = 280 pkg syscall (darwin-amd64), const SYS_MADVISE = 75 pkg syscall (darwin-amd64), const SYS_MAXSYSCALL = 439 pkg syscall (darwin-amd64), const SYS_MINCORE = 78 pkg syscall (darwin-amd64), const SYS_MINHERIT = 250 pkg syscall (darwin-amd64), const SYS_MKCOMPLEX = 216 pkg syscall (darwin-amd64), const SYS_MKDIR = 136 pkg syscall (darwin-amd64), const SYS_MKDIR_EXTENDED = 292 pkg syscall (darwin-amd64), const SYS_MKFIFO = 132 pkg syscall (darwin-amd64), const SYS_MKFIFO_EXTENDED = 291 pkg syscall (darwin-amd64), const SYS_MKNOD = 14 pkg syscall (darwin-amd64), const SYS_MLOCK = 203 pkg syscall (darwin-amd64), const SYS_MLOCKALL = 324 pkg syscall (darwin-amd64), const SYS_MMAP = 197 pkg syscall (darwin-amd64), const SYS_MODWATCH = 233 pkg syscall (darwin-amd64), const SYS_MOUNT = 167 pkg syscall (darwin-amd64), const SYS_MPROTECT = 74 pkg syscall (darwin-amd64), const SYS_MSGCTL = 258 pkg syscall (darwin-amd64), const SYS_MSGGET = 259 pkg syscall (darwin-amd64), const SYS_MSGRCV = 261 pkg syscall (darwin-amd64), const SYS_MSGRCV_NOCANCEL = 419 pkg syscall (darwin-amd64), const SYS_MSGSND = 260 pkg syscall (darwin-amd64), const SYS_MSGSND_NOCANCEL = 418 pkg syscall (darwin-amd64), const SYS_MSGSYS = 252 pkg syscall (darwin-amd64), const SYS_MSYNC = 65 pkg syscall (darwin-amd64), const SYS_MSYNC_NOCANCEL = 405 pkg syscall (darwin-amd64), const SYS_MUNLOCK = 204 pkg syscall (darwin-amd64), const SYS_MUNLOCKALL = 325 pkg syscall (darwin-amd64), const SYS_MUNMAP = 73 pkg syscall (darwin-amd64), const SYS_NFSCLNT = 247 pkg syscall (darwin-amd64), const SYS_NFSSVC = 155 pkg syscall (darwin-amd64), const SYS_OPEN = 5 pkg syscall (darwin-amd64), const SYS_OPEN_EXTENDED = 277 pkg syscall (darwin-amd64), const SYS_OPEN_NOCANCEL = 398 pkg syscall (darwin-amd64), const SYS_PATHCONF = 191 pkg syscall (darwin-amd64), const SYS_PID_HIBERNATE = 435 pkg syscall (darwin-amd64), const SYS_PID_RESUME = 434 pkg syscall (darwin-amd64), const SYS_PID_SHUTDOWN_SOCKETS = 436 pkg syscall (darwin-amd64), const SYS_PID_SUSPEND = 433 pkg syscall (darwin-amd64), const SYS_PIPE = 42 pkg syscall (darwin-amd64), const SYS_POLL = 230 pkg syscall (darwin-amd64), const SYS_POLL_NOCANCEL = 417 pkg syscall (darwin-amd64), const SYS_POSIX_SPAWN = 244 pkg syscall (darwin-amd64), const SYS_PREAD = 153 pkg syscall (darwin-amd64), const SYS_PREAD_NOCANCEL = 414 pkg syscall (darwin-amd64), const SYS_PROCESS_POLICY = 323 pkg syscall (darwin-amd64), const SYS_PROC_INFO = 336 pkg syscall (darwin-amd64), const SYS_PROFIL = 44 pkg syscall (darwin-amd64), const SYS_PSYNCH_CVBROAD = 303 pkg syscall (darwin-amd64), const SYS_PSYNCH_CVCLRPREPOST = 312 pkg syscall (darwin-amd64), const SYS_PSYNCH_CVSIGNAL = 304 pkg syscall (darwin-amd64), const SYS_PSYNCH_CVWAIT = 305 pkg syscall (darwin-amd64), const SYS_PSYNCH_MUTEXDROP = 302 pkg syscall (darwin-amd64), const SYS_PSYNCH_MUTEXWAIT = 301 pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_DOWNGRADE = 299 pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_LONGRDLOCK = 297 pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_RDLOCK = 306 pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_UNLOCK = 308 pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_UNLOCK2 = 309 pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_UPGRADE = 300 pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_WRLOCK = 307 pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_YIELDWRLOCK = 298 pkg syscall (darwin-amd64), const SYS_PTRACE = 26 pkg syscall (darwin-amd64), const SYS_PWRITE = 154 pkg syscall (darwin-amd64), const SYS_PWRITE_NOCANCEL = 415 pkg syscall (darwin-amd64), const SYS_QUOTACTL = 165 pkg syscall (darwin-amd64), const SYS_READ = 3 pkg syscall (darwin-amd64), const SYS_READLINK = 58 pkg syscall (darwin-amd64), const SYS_READV = 120 pkg syscall (darwin-amd64), const SYS_READV_NOCANCEL = 411 pkg syscall (darwin-amd64), const SYS_READ_NOCANCEL = 396 pkg syscall (darwin-amd64), const SYS_REBOOT = 55 pkg syscall (darwin-amd64), const SYS_RECVFROM = 29 pkg syscall (darwin-amd64), const SYS_RECVFROM_NOCANCEL = 403 pkg syscall (darwin-amd64), const SYS_RECVMSG = 27 pkg syscall (darwin-amd64), const SYS_RECVMSG_NOCANCEL = 401 pkg syscall (darwin-amd64), const SYS_REMOVEXATTR = 238 pkg syscall (darwin-amd64), const SYS_RENAME = 128 pkg syscall (darwin-amd64), const SYS_REVOKE = 56 pkg syscall (darwin-amd64), const SYS_RMDIR = 137 pkg syscall (darwin-amd64), const SYS_SEARCHFS = 225 pkg syscall (darwin-amd64), const SYS_SELECT = 93 pkg syscall (darwin-amd64), const SYS_SELECT_NOCANCEL = 407 pkg syscall (darwin-amd64), const SYS_SEMCTL = 254 pkg syscall (darwin-amd64), const SYS_SEMGET = 255 pkg syscall (darwin-amd64), const SYS_SEMOP = 256 pkg syscall (darwin-amd64), const SYS_SEMSYS = 251 pkg syscall (darwin-amd64), const SYS_SEM_CLOSE = 269 pkg syscall (darwin-amd64), const SYS_SEM_DESTROY = 276 pkg syscall (darwin-amd64), const SYS_SEM_GETVALUE = 274 pkg syscall (darwin-amd64), const SYS_SEM_INIT = 275 pkg syscall (darwin-amd64), const SYS_SEM_OPEN = 268 pkg syscall (darwin-amd64), const SYS_SEM_POST = 273 pkg syscall (darwin-amd64), const SYS_SEM_TRYWAIT = 272 pkg syscall (darwin-amd64), const SYS_SEM_UNLINK = 270 pkg syscall (darwin-amd64), const SYS_SEM_WAIT = 271 pkg syscall (darwin-amd64), const SYS_SEM_WAIT_NOCANCEL = 420 pkg syscall (darwin-amd64), const SYS_SENDFILE = 337 pkg syscall (darwin-amd64), const SYS_SENDMSG = 28 pkg syscall (darwin-amd64), const SYS_SENDMSG_NOCANCEL = 402 pkg syscall (darwin-amd64), const SYS_SENDTO = 133 pkg syscall (darwin-amd64), const SYS_SENDTO_NOCANCEL = 413 pkg syscall (darwin-amd64), const SYS_SETATTRLIST = 221 pkg syscall (darwin-amd64), const SYS_SETAUDIT = 356 pkg syscall (darwin-amd64), const SYS_SETAUDIT_ADDR = 358 pkg syscall (darwin-amd64), const SYS_SETAUID = 354 pkg syscall (darwin-amd64), const SYS_SETEGID = 182 pkg syscall (darwin-amd64), const SYS_SETEUID = 183 pkg syscall (darwin-amd64), const SYS_SETGID = 181 pkg syscall (darwin-amd64), const SYS_SETGROUPS = 80 pkg syscall (darwin-amd64), const SYS_SETITIMER = 83 pkg syscall (darwin-amd64), const SYS_SETLCID = 394 pkg syscall (darwin-amd64), const SYS_SETLOGIN = 50 pkg syscall (darwin-amd64), const SYS_SETPGID = 82 pkg syscall (darwin-amd64), const SYS_SETPRIORITY = 96 pkg syscall (darwin-amd64), const SYS_SETPRIVEXEC = 152 pkg syscall (darwin-amd64), const SYS_SETREGID = 127 pkg syscall (darwin-amd64), const SYS_SETREUID = 126 pkg syscall (darwin-amd64), const SYS_SETRLIMIT = 195 pkg syscall (darwin-amd64), const SYS_SETSGROUPS = 287 pkg syscall (darwin-amd64), const SYS_SETSID = 147 pkg syscall (darwin-amd64), const SYS_SETSOCKOPT = 105 pkg syscall (darwin-amd64), const SYS_SETTID = 285 pkg syscall (darwin-amd64), const SYS_SETTID_WITH_PID = 311 pkg syscall (darwin-amd64), const SYS_SETTIMEOFDAY = 122 pkg syscall (darwin-amd64), const SYS_SETUID = 23 pkg syscall (darwin-amd64), const SYS_SETWGROUPS = 289 pkg syscall (darwin-amd64), const SYS_SETXATTR = 236 pkg syscall (darwin-amd64), const SYS_SHARED_REGION_CHECK_NP = 294 pkg syscall (darwin-amd64), const SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 pkg syscall (darwin-amd64), const SYS_SHMAT = 262 pkg syscall (darwin-amd64), const SYS_SHMCTL = 263 pkg syscall (darwin-amd64), const SYS_SHMDT = 264 pkg syscall (darwin-amd64), const SYS_SHMGET = 265 pkg syscall (darwin-amd64), const SYS_SHMSYS = 253 pkg syscall (darwin-amd64), const SYS_SHM_OPEN = 266 pkg syscall (darwin-amd64), const SYS_SHM_UNLINK = 267 pkg syscall (darwin-amd64), const SYS_SHUTDOWN = 134 pkg syscall (darwin-amd64), const SYS_SIGACTION = 46 pkg syscall (darwin-amd64), const SYS_SIGALTSTACK = 53 pkg syscall (darwin-amd64), const SYS_SIGPENDING = 52 pkg syscall (darwin-amd64), const SYS_SIGPROCMASK = 48 pkg syscall (darwin-amd64), const SYS_SIGRETURN = 184 pkg syscall (darwin-amd64), const SYS_SIGSUSPEND = 111 pkg syscall (darwin-amd64), const SYS_SIGSUSPEND_NOCANCEL = 410 pkg syscall (darwin-amd64), const SYS_SOCKET = 97 pkg syscall (darwin-amd64), const SYS_SOCKETPAIR = 135 pkg syscall (darwin-amd64), const SYS_STACK_SNAPSHOT = 365 pkg syscall (darwin-amd64), const SYS_STAT = 188 pkg syscall (darwin-amd64), const SYS_STAT64 = 338 pkg syscall (darwin-amd64), const SYS_STAT64_EXTENDED = 341 pkg syscall (darwin-amd64), const SYS_STATFS = 157 pkg syscall (darwin-amd64), const SYS_STATFS64 = 345 pkg syscall (darwin-amd64), const SYS_STATV = 217 pkg syscall (darwin-amd64), const SYS_STAT_EXTENDED = 279 pkg syscall (darwin-amd64), const SYS_SWAPON = 85 pkg syscall (darwin-amd64), const SYS_SYMLINK = 57 pkg syscall (darwin-amd64), const SYS_SYNC = 36 pkg syscall (darwin-amd64), const SYS_SYSCALL = 0 pkg syscall (darwin-amd64), const SYS_THREAD_SELFID = 372 pkg syscall (darwin-amd64), const SYS_TRUNCATE = 200 pkg syscall (darwin-amd64), const SYS_UMASK = 60 pkg syscall (darwin-amd64), const SYS_UMASK_EXTENDED = 278 pkg syscall (darwin-amd64), const SYS_UNDELETE = 205 pkg syscall (darwin-amd64), const SYS_UNLINK = 10 pkg syscall (darwin-amd64), const SYS_UNMOUNT = 159 pkg syscall (darwin-amd64), const SYS_UTIMES = 138 pkg syscall (darwin-amd64), const SYS_VFORK = 66 pkg syscall (darwin-amd64), const SYS_VM_PRESSURE_MONITOR = 296 pkg syscall (darwin-amd64), const SYS_WAIT4 = 7 pkg syscall (darwin-amd64), const SYS_WAIT4_NOCANCEL = 400 pkg syscall (darwin-amd64), const SYS_WAITEVENT = 232 pkg syscall (darwin-amd64), const SYS_WAITID = 173 pkg syscall (darwin-amd64), const SYS_WAITID_NOCANCEL = 416 pkg syscall (darwin-amd64), const SYS_WATCHEVENT = 231 pkg syscall (darwin-amd64), const SYS_WORKQ_KERNRETURN = 368 pkg syscall (darwin-amd64), const SYS_WORKQ_OPEN = 367 pkg syscall (darwin-amd64), const SYS_WRITE = 4 pkg syscall (darwin-amd64), const SYS_WRITEV = 121 pkg syscall (darwin-amd64), const SYS_WRITEV_NOCANCEL = 412 pkg syscall (darwin-amd64), const SYS_WRITE_NOCANCEL = 397 pkg syscall (darwin-amd64), const SYS___DISABLE_THREADSIGNAL = 331 pkg syscall (darwin-amd64), const SYS___MAC_EXECVE = 380 pkg syscall (darwin-amd64), const SYS___MAC_GETFSSTAT = 426 pkg syscall (darwin-amd64), const SYS___MAC_GET_FD = 388 pkg syscall (darwin-amd64), const SYS___MAC_GET_FILE = 382 pkg syscall (darwin-amd64), const SYS___MAC_GET_LCID = 391 pkg syscall (darwin-amd64), const SYS___MAC_GET_LCTX = 392 pkg syscall (darwin-amd64), const SYS___MAC_GET_LINK = 384 pkg syscall (darwin-amd64), const SYS___MAC_GET_MOUNT = 425 pkg syscall (darwin-amd64), const SYS___MAC_GET_PID = 390 pkg syscall (darwin-amd64), const SYS___MAC_GET_PROC = 386 pkg syscall (darwin-amd64), const SYS___MAC_MOUNT = 424 pkg syscall (darwin-amd64), const SYS___MAC_SET_FD = 389 pkg syscall (darwin-amd64), const SYS___MAC_SET_FILE = 383 pkg syscall (darwin-amd64), const SYS___MAC_SET_LCTX = 393 pkg syscall (darwin-amd64), const SYS___MAC_SET_LINK = 385 pkg syscall (darwin-amd64), const SYS___MAC_SET_PROC = 387 pkg syscall (darwin-amd64), const SYS___MAC_SYSCALL = 381 pkg syscall (darwin-amd64), const SYS___OLD_SEMWAIT_SIGNAL = 370 pkg syscall (darwin-amd64), const SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 pkg syscall (darwin-amd64), const SYS___PTHREAD_CANCELED = 333 pkg syscall (darwin-amd64), const SYS___PTHREAD_CHDIR = 348 pkg syscall (darwin-amd64), const SYS___PTHREAD_FCHDIR = 349 pkg syscall (darwin-amd64), const SYS___PTHREAD_KILL = 328 pkg syscall (darwin-amd64), const SYS___PTHREAD_MARKCANCEL = 332 pkg syscall (darwin-amd64), const SYS___PTHREAD_SIGMASK = 329 pkg syscall (darwin-amd64), const SYS___SEMWAIT_SIGNAL = 334 pkg syscall (darwin-amd64), const SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 pkg syscall (darwin-amd64), const SYS___SIGWAIT = 330 pkg syscall (darwin-amd64), const SYS___SIGWAIT_NOCANCEL = 422 pkg syscall (darwin-amd64), const SYS___SYSCTL = 202 pkg syscall (darwin-amd64), const S_IEXEC = 64 pkg syscall (darwin-amd64), const S_IFMT = 61440 pkg syscall (darwin-amd64), const S_IFWHT = 57344 pkg syscall (darwin-amd64), const S_IREAD = 256 pkg syscall (darwin-amd64), const S_IRGRP = 32 pkg syscall (darwin-amd64), const S_IROTH = 4 pkg syscall (darwin-amd64), const S_IRWXG = 56 pkg syscall (darwin-amd64), const S_IRWXO = 7 pkg syscall (darwin-amd64), const S_IRWXU = 448 pkg syscall (darwin-amd64), const S_ISTXT = 512 pkg syscall (darwin-amd64), const S_IWGRP = 16 pkg syscall (darwin-amd64), const S_IWOTH = 2 pkg syscall (darwin-amd64), const S_IWRITE = 128 pkg syscall (darwin-amd64), const S_IXGRP = 8 pkg syscall (darwin-amd64), const S_IXOTH = 1 pkg syscall (darwin-amd64), const SizeofBpfHdr = 20 pkg syscall (darwin-amd64), const SizeofBpfInsn = 8 pkg syscall (darwin-amd64), const SizeofBpfProgram = 16 pkg syscall (darwin-amd64), const SizeofBpfStat = 8 pkg syscall (darwin-amd64), const SizeofBpfVersion = 4 pkg syscall (darwin-amd64), const SizeofCmsghdr = 12 pkg syscall (darwin-amd64), const SizeofIPMreq = 8 pkg syscall (darwin-amd64), const SizeofIPv6Mreq = 20 pkg syscall (darwin-amd64), const SizeofIfData = 96 pkg syscall (darwin-amd64), const SizeofIfMsghdr = 112 pkg syscall (darwin-amd64), const SizeofIfaMsghdr = 20 pkg syscall (darwin-amd64), const SizeofIfmaMsghdr = 16 pkg syscall (darwin-amd64), const SizeofIfmaMsghdr2 = 20 pkg syscall (darwin-amd64), const SizeofInet4Pktinfo = 12 pkg syscall (darwin-amd64), const SizeofInet4Pktinfo ideal-int pkg syscall (darwin-amd64), const SizeofInet6Pktinfo = 20 pkg syscall (darwin-amd64), const SizeofLinger = 8 pkg syscall (darwin-amd64), const SizeofMsghdr = 48 pkg syscall (darwin-amd64), const SizeofRtMetrics = 56 pkg syscall (darwin-amd64), const SizeofRtMsghdr = 92 pkg syscall (darwin-amd64), const SizeofSockaddrAny = 108 pkg syscall (darwin-amd64), const SizeofSockaddrDatalink = 20 pkg syscall (darwin-amd64), const SizeofSockaddrInet4 = 16 pkg syscall (darwin-amd64), const SizeofSockaddrInet6 = 28 pkg syscall (darwin-amd64), const SizeofSockaddrUnix = 106 pkg syscall (darwin-amd64), const TCIFLUSH = 1 pkg syscall (darwin-amd64), const TCIFLUSH ideal-int pkg syscall (darwin-amd64), const TCIOFLUSH = 3 pkg syscall (darwin-amd64), const TCIOFLUSH ideal-int pkg syscall (darwin-amd64), const TCOFLUSH = 2 pkg syscall (darwin-amd64), const TCOFLUSH ideal-int pkg syscall (darwin-amd64), const TCP_CONNECTIONTIMEOUT = 32 pkg syscall (darwin-amd64), const TCP_KEEPALIVE = 16 pkg syscall (darwin-amd64), const TCP_MAXHLEN = 60 pkg syscall (darwin-amd64), const TCP_MAXOLEN = 40 pkg syscall (darwin-amd64), const TCP_MAXSEG = 2 pkg syscall (darwin-amd64), const TCP_MAXWIN = 65535 pkg syscall (darwin-amd64), const TCP_MAX_SACK = 3 pkg syscall (darwin-amd64), const TCP_MAX_WINSHIFT = 14 pkg syscall (darwin-amd64), const TCP_MINMSS = 216 pkg syscall (darwin-amd64), const TCP_MINMSSOVERLOAD = 1000 pkg syscall (darwin-amd64), const TCP_MSS = 512 pkg syscall (darwin-amd64), const TCP_NOOPT = 8 pkg syscall (darwin-amd64), const TCP_NOPUSH = 4 pkg syscall (darwin-amd64), const TCP_RXT_CONNDROPTIME = 128 pkg syscall (darwin-amd64), const TCP_RXT_FINDROP = 256 pkg syscall (darwin-amd64), const TCSAFLUSH = 2 pkg syscall (darwin-amd64), const TCSAFLUSH ideal-int pkg syscall (darwin-amd64), const TIOCCBRK = 536900730 pkg syscall (darwin-amd64), const TIOCCDTR = 536900728 pkg syscall (darwin-amd64), const TIOCCONS = 2147775586 pkg syscall (darwin-amd64), const TIOCDCDTIMESTAMP = 1074820184 pkg syscall (darwin-amd64), const TIOCDRAIN = 536900702 pkg syscall (darwin-amd64), const TIOCDSIMICROCODE = 536900693 pkg syscall (darwin-amd64), const TIOCEXCL = 536900621 pkg syscall (darwin-amd64), const TIOCEXT = 2147775584 pkg syscall (darwin-amd64), const TIOCFLUSH = 2147775504 pkg syscall (darwin-amd64), const TIOCGDRAINWAIT = 1074033750 pkg syscall (darwin-amd64), const TIOCGETA = 1078490131 pkg syscall (darwin-amd64), const TIOCGETD = 1074033690 pkg syscall (darwin-amd64), const TIOCGPGRP = 1074033783 pkg syscall (darwin-amd64), const TIOCGWINSZ = 1074295912 pkg syscall (darwin-amd64), const TIOCIXOFF = 536900736 pkg syscall (darwin-amd64), const TIOCIXON = 536900737 pkg syscall (darwin-amd64), const TIOCMBIC = 2147775595 pkg syscall (darwin-amd64), const TIOCMBIS = 2147775596 pkg syscall (darwin-amd64), const TIOCMGDTRWAIT = 1074033754 pkg syscall (darwin-amd64), const TIOCMGET = 1074033770 pkg syscall (darwin-amd64), const TIOCMODG = 1074033667 pkg syscall (darwin-amd64), const TIOCMODS = 2147775492 pkg syscall (darwin-amd64), const TIOCMSDTRWAIT = 2147775579 pkg syscall (darwin-amd64), const TIOCMSET = 2147775597 pkg syscall (darwin-amd64), const TIOCM_CAR = 64 pkg syscall (darwin-amd64), const TIOCM_CD = 64 pkg syscall (darwin-amd64), const TIOCM_CTS = 32 pkg syscall (darwin-amd64), const TIOCM_DSR = 256 pkg syscall (darwin-amd64), const TIOCM_DTR = 2 pkg syscall (darwin-amd64), const TIOCM_LE = 1 pkg syscall (darwin-amd64), const TIOCM_RI = 128 pkg syscall (darwin-amd64), const TIOCM_RNG = 128 pkg syscall (darwin-amd64), const TIOCM_RTS = 4 pkg syscall (darwin-amd64), const TIOCM_SR = 16 pkg syscall (darwin-amd64), const TIOCM_ST = 8 pkg syscall (darwin-amd64), const TIOCNOTTY = 536900721 pkg syscall (darwin-amd64), const TIOCNXCL = 536900622 pkg syscall (darwin-amd64), const TIOCOUTQ = 1074033779 pkg syscall (darwin-amd64), const TIOCPKT = 2147775600 pkg syscall (darwin-amd64), const TIOCPKT_DATA = 0 pkg syscall (darwin-amd64), const TIOCPKT_DOSTOP = 32 pkg syscall (darwin-amd64), const TIOCPKT_FLUSHREAD = 1 pkg syscall (darwin-amd64), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (darwin-amd64), const TIOCPKT_IOCTL = 64 pkg syscall (darwin-amd64), const TIOCPKT_NOSTOP = 16 pkg syscall (darwin-amd64), const TIOCPKT_START = 8 pkg syscall (darwin-amd64), const TIOCPKT_STOP = 4 pkg syscall (darwin-amd64), const TIOCPTYGNAME = 1082160211 pkg syscall (darwin-amd64), const TIOCPTYGRANT = 536900692 pkg syscall (darwin-amd64), const TIOCPTYUNLK = 536900690 pkg syscall (darwin-amd64), const TIOCREMOTE = 2147775593 pkg syscall (darwin-amd64), const TIOCSBRK = 536900731 pkg syscall (darwin-amd64), const TIOCSCONS = 536900707 pkg syscall (darwin-amd64), const TIOCSCTTY = 536900705 pkg syscall (darwin-amd64), const TIOCSDRAINWAIT = 2147775575 pkg syscall (darwin-amd64), const TIOCSDTR = 536900729 pkg syscall (darwin-amd64), const TIOCSETA = 2152231956 pkg syscall (darwin-amd64), const TIOCSETAF = 2152231958 pkg syscall (darwin-amd64), const TIOCSETAW = 2152231957 pkg syscall (darwin-amd64), const TIOCSETD = 2147775515 pkg syscall (darwin-amd64), const TIOCSIG = 536900703 pkg syscall (darwin-amd64), const TIOCSPGRP = 2147775606 pkg syscall (darwin-amd64), const TIOCSTART = 536900718 pkg syscall (darwin-amd64), const TIOCSTAT = 536900709 pkg syscall (darwin-amd64), const TIOCSTI = 2147578994 pkg syscall (darwin-amd64), const TIOCSTOP = 536900719 pkg syscall (darwin-amd64), const TIOCSWINSZ = 2148037735 pkg syscall (darwin-amd64), const TIOCTIMESTAMP = 1074820185 pkg syscall (darwin-amd64), const TIOCUCNTL = 2147775590 pkg syscall (darwin-amd64), const TOSTOP = 4194304 pkg syscall (darwin-amd64), const TOSTOP ideal-int pkg syscall (darwin-amd64), const VDISCARD = 15 pkg syscall (darwin-amd64), const VDISCARD ideal-int pkg syscall (darwin-amd64), const VDSUSP = 11 pkg syscall (darwin-amd64), const VDSUSP ideal-int pkg syscall (darwin-amd64), const VEOF = 0 pkg syscall (darwin-amd64), const VEOF ideal-int pkg syscall (darwin-amd64), const VEOL = 1 pkg syscall (darwin-amd64), const VEOL ideal-int pkg syscall (darwin-amd64), const VEOL2 = 2 pkg syscall (darwin-amd64), const VEOL2 ideal-int pkg syscall (darwin-amd64), const VERASE = 3 pkg syscall (darwin-amd64), const VERASE ideal-int pkg syscall (darwin-amd64), const VINTR = 8 pkg syscall (darwin-amd64), const VINTR ideal-int pkg syscall (darwin-amd64), const VKILL = 5 pkg syscall (darwin-amd64), const VKILL ideal-int pkg syscall (darwin-amd64), const VLNEXT = 14 pkg syscall (darwin-amd64), const VLNEXT ideal-int pkg syscall (darwin-amd64), const VMIN = 16 pkg syscall (darwin-amd64), const VMIN ideal-int pkg syscall (darwin-amd64), const VQUIT = 9 pkg syscall (darwin-amd64), const VQUIT ideal-int pkg syscall (darwin-amd64), const VREPRINT = 6 pkg syscall (darwin-amd64), const VREPRINT ideal-int pkg syscall (darwin-amd64), const VSTART = 12 pkg syscall (darwin-amd64), const VSTART ideal-int pkg syscall (darwin-amd64), const VSTATUS = 18 pkg syscall (darwin-amd64), const VSTATUS ideal-int pkg syscall (darwin-amd64), const VSTOP = 13 pkg syscall (darwin-amd64), const VSTOP ideal-int pkg syscall (darwin-amd64), const VSUSP = 10 pkg syscall (darwin-amd64), const VSUSP ideal-int pkg syscall (darwin-amd64), const VT0 = 0 pkg syscall (darwin-amd64), const VT0 ideal-int pkg syscall (darwin-amd64), const VT1 = 65536 pkg syscall (darwin-amd64), const VT1 ideal-int pkg syscall (darwin-amd64), const VTDLY = 65536 pkg syscall (darwin-amd64), const VTDLY ideal-int pkg syscall (darwin-amd64), const VTIME = 17 pkg syscall (darwin-amd64), const VTIME ideal-int pkg syscall (darwin-amd64), const VWERASE = 4 pkg syscall (darwin-amd64), const VWERASE ideal-int pkg syscall (darwin-amd64), const WCONTINUED = 16 pkg syscall (darwin-amd64), const WCOREFLAG = 128 pkg syscall (darwin-amd64), const WEXITED = 4 pkg syscall (darwin-amd64), const WNOHANG = 1 pkg syscall (darwin-amd64), const WNOWAIT = 32 pkg syscall (darwin-amd64), const WORDSIZE = 64 pkg syscall (darwin-amd64), const WSTOPPED = 8 pkg syscall (darwin-amd64), const WUNTRACED = 2 pkg syscall (darwin-amd64), func Fchflags(int, int) error pkg syscall (darwin-amd64), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (darwin-amd64), type Inet4Pktinfo struct pkg syscall (darwin-amd64), type Inet4Pktinfo struct, Addr [4]uint8 pkg syscall (darwin-amd64), type Inet4Pktinfo struct, Ifindex uint32 pkg syscall (darwin-amd64), type Inet4Pktinfo struct, Spec_dst [4]uint8 pkg syscall (darwin-amd64), type Termios struct pkg syscall (darwin-amd64), type Termios struct, Cc [20]uint8 pkg syscall (darwin-amd64), type Termios struct, Cflag uint64 pkg syscall (darwin-amd64), type Termios struct, Iflag uint64 pkg syscall (darwin-amd64), type Termios struct, Ispeed uint64 pkg syscall (darwin-amd64), type Termios struct, Lflag uint64 pkg syscall (darwin-amd64), type Termios struct, Oflag uint64 pkg syscall (darwin-amd64), type Termios struct, Ospeed uint64 pkg syscall (darwin-amd64), type Termios struct, Pad_cgo_0 [4]uint8 pkg syscall (darwin-amd64-cgo), const AF_APPLETALK = 16 pkg syscall (darwin-amd64-cgo), const AF_CCITT = 10 pkg syscall (darwin-amd64-cgo), const AF_CHAOS = 5 pkg syscall (darwin-amd64-cgo), const AF_CNT = 21 pkg syscall (darwin-amd64-cgo), const AF_COIP = 20 pkg syscall (darwin-amd64-cgo), const AF_DATAKIT = 9 pkg syscall (darwin-amd64-cgo), const AF_DECnet = 12 pkg syscall (darwin-amd64-cgo), const AF_DLI = 13 pkg syscall (darwin-amd64-cgo), const AF_E164 = 28 pkg syscall (darwin-amd64-cgo), const AF_ECMA = 8 pkg syscall (darwin-amd64-cgo), const AF_HYLINK = 15 pkg syscall (darwin-amd64-cgo), const AF_IEEE80211 = 37 pkg syscall (darwin-amd64-cgo), const AF_IMPLINK = 3 pkg syscall (darwin-amd64-cgo), const AF_INET6 = 30 pkg syscall (darwin-amd64-cgo), const AF_IPX = 23 pkg syscall (darwin-amd64-cgo), const AF_ISDN = 28 pkg syscall (darwin-amd64-cgo), const AF_ISO = 7 pkg syscall (darwin-amd64-cgo), const AF_LAT = 14 pkg syscall (darwin-amd64-cgo), const AF_LINK = 18 pkg syscall (darwin-amd64-cgo), const AF_LOCAL = 1 pkg syscall (darwin-amd64-cgo), const AF_MAX = 38 pkg syscall (darwin-amd64-cgo), const AF_NATM = 31 pkg syscall (darwin-amd64-cgo), const AF_NDRV = 27 pkg syscall (darwin-amd64-cgo), const AF_NETBIOS = 33 pkg syscall (darwin-amd64-cgo), const AF_NS = 6 pkg syscall (darwin-amd64-cgo), const AF_OSI = 7 pkg syscall (darwin-amd64-cgo), const AF_PPP = 34 pkg syscall (darwin-amd64-cgo), const AF_PUP = 4 pkg syscall (darwin-amd64-cgo), const AF_RESERVED_36 = 36 pkg syscall (darwin-amd64-cgo), const AF_ROUTE = 17 pkg syscall (darwin-amd64-cgo), const AF_SIP = 24 pkg syscall (darwin-amd64-cgo), const AF_SNA = 11 pkg syscall (darwin-amd64-cgo), const AF_SYSTEM = 32 pkg syscall (darwin-amd64-cgo), const B0 = 0 pkg syscall (darwin-amd64-cgo), const B0 ideal-int pkg syscall (darwin-amd64-cgo), const B110 = 110 pkg syscall (darwin-amd64-cgo), const B110 ideal-int pkg syscall (darwin-amd64-cgo), const B115200 = 115200 pkg syscall (darwin-amd64-cgo), const B115200 ideal-int pkg syscall (darwin-amd64-cgo), const B1200 = 1200 pkg syscall (darwin-amd64-cgo), const B1200 ideal-int pkg syscall (darwin-amd64-cgo), const B134 = 134 pkg syscall (darwin-amd64-cgo), const B134 ideal-int pkg syscall (darwin-amd64-cgo), const B14400 = 14400 pkg syscall (darwin-amd64-cgo), const B14400 ideal-int pkg syscall (darwin-amd64-cgo), const B150 = 150 pkg syscall (darwin-amd64-cgo), const B150 ideal-int pkg syscall (darwin-amd64-cgo), const B1800 = 1800 pkg syscall (darwin-amd64-cgo), const B1800 ideal-int pkg syscall (darwin-amd64-cgo), const B19200 = 19200 pkg syscall (darwin-amd64-cgo), const B19200 ideal-int pkg syscall (darwin-amd64-cgo), const B200 = 200 pkg syscall (darwin-amd64-cgo), const B200 ideal-int pkg syscall (darwin-amd64-cgo), const B230400 = 230400 pkg syscall (darwin-amd64-cgo), const B230400 ideal-int pkg syscall (darwin-amd64-cgo), const B2400 = 2400 pkg syscall (darwin-amd64-cgo), const B2400 ideal-int pkg syscall (darwin-amd64-cgo), const B28800 = 28800 pkg syscall (darwin-amd64-cgo), const B28800 ideal-int pkg syscall (darwin-amd64-cgo), const B300 = 300 pkg syscall (darwin-amd64-cgo), const B300 ideal-int pkg syscall (darwin-amd64-cgo), const B38400 = 38400 pkg syscall (darwin-amd64-cgo), const B38400 ideal-int pkg syscall (darwin-amd64-cgo), const B4800 = 4800 pkg syscall (darwin-amd64-cgo), const B4800 ideal-int pkg syscall (darwin-amd64-cgo), const B50 = 50 pkg syscall (darwin-amd64-cgo), const B50 ideal-int pkg syscall (darwin-amd64-cgo), const B57600 = 57600 pkg syscall (darwin-amd64-cgo), const B57600 ideal-int pkg syscall (darwin-amd64-cgo), const B600 = 600 pkg syscall (darwin-amd64-cgo), const B600 ideal-int pkg syscall (darwin-amd64-cgo), const B7200 = 7200 pkg syscall (darwin-amd64-cgo), const B7200 ideal-int pkg syscall (darwin-amd64-cgo), const B75 = 75 pkg syscall (darwin-amd64-cgo), const B75 ideal-int pkg syscall (darwin-amd64-cgo), const B76800 = 76800 pkg syscall (darwin-amd64-cgo), const B76800 ideal-int pkg syscall (darwin-amd64-cgo), const B9600 = 9600 pkg syscall (darwin-amd64-cgo), const B9600 ideal-int pkg syscall (darwin-amd64-cgo), const BIOCFLUSH = 536887912 pkg syscall (darwin-amd64-cgo), const BIOCGBLEN = 1074020966 pkg syscall (darwin-amd64-cgo), const BIOCGDLT = 1074020970 pkg syscall (darwin-amd64-cgo), const BIOCGDLTLIST = 3222028921 pkg syscall (darwin-amd64-cgo), const BIOCGETIF = 1075855979 pkg syscall (darwin-amd64-cgo), const BIOCGHDRCMPLT = 1074020980 pkg syscall (darwin-amd64-cgo), const BIOCGRSIG = 1074020978 pkg syscall (darwin-amd64-cgo), const BIOCGRTIMEOUT = 1074807406 pkg syscall (darwin-amd64-cgo), const BIOCGSEESENT = 1074020982 pkg syscall (darwin-amd64-cgo), const BIOCGSTATS = 1074283119 pkg syscall (darwin-amd64-cgo), const BIOCIMMEDIATE = 2147762800 pkg syscall (darwin-amd64-cgo), const BIOCPROMISC = 536887913 pkg syscall (darwin-amd64-cgo), const BIOCSBLEN = 3221504614 pkg syscall (darwin-amd64-cgo), const BIOCSDLT = 2147762808 pkg syscall (darwin-amd64-cgo), const BIOCSETF = 2148549223 pkg syscall (darwin-amd64-cgo), const BIOCSETIF = 2149597804 pkg syscall (darwin-amd64-cgo), const BIOCSHDRCMPLT = 2147762805 pkg syscall (darwin-amd64-cgo), const BIOCSRSIG = 2147762803 pkg syscall (darwin-amd64-cgo), const BIOCSRTIMEOUT = 2148549229 pkg syscall (darwin-amd64-cgo), const BIOCSSEESENT = 2147762807 pkg syscall (darwin-amd64-cgo), const BIOCVERSION = 1074020977 pkg syscall (darwin-amd64-cgo), const BPF_A = 16 pkg syscall (darwin-amd64-cgo), const BPF_ABS = 32 pkg syscall (darwin-amd64-cgo), const BPF_ADD = 0 pkg syscall (darwin-amd64-cgo), const BPF_ALIGNMENT = 4 pkg syscall (darwin-amd64-cgo), const BPF_ALU = 4 pkg syscall (darwin-amd64-cgo), const BPF_AND = 80 pkg syscall (darwin-amd64-cgo), const BPF_B = 16 pkg syscall (darwin-amd64-cgo), const BPF_DIV = 48 pkg syscall (darwin-amd64-cgo), const BPF_H = 8 pkg syscall (darwin-amd64-cgo), const BPF_IMM = 0 pkg syscall (darwin-amd64-cgo), const BPF_IND = 64 pkg syscall (darwin-amd64-cgo), const BPF_JA = 0 pkg syscall (darwin-amd64-cgo), const BPF_JEQ = 16 pkg syscall (darwin-amd64-cgo), const BPF_JGE = 48 pkg syscall (darwin-amd64-cgo), const BPF_JGT = 32 pkg syscall (darwin-amd64-cgo), const BPF_JMP = 5 pkg syscall (darwin-amd64-cgo), const BPF_JSET = 64 pkg syscall (darwin-amd64-cgo), const BPF_K = 0 pkg syscall (darwin-amd64-cgo), const BPF_LD = 0 pkg syscall (darwin-amd64-cgo), const BPF_LDX = 1 pkg syscall (darwin-amd64-cgo), const BPF_LEN = 128 pkg syscall (darwin-amd64-cgo), const BPF_LSH = 96 pkg syscall (darwin-amd64-cgo), const BPF_MAJOR_VERSION = 1 pkg syscall (darwin-amd64-cgo), const BPF_MAXBUFSIZE = 524288 pkg syscall (darwin-amd64-cgo), const BPF_MAXINSNS = 512 pkg syscall (darwin-amd64-cgo), const BPF_MEM = 96 pkg syscall (darwin-amd64-cgo), const BPF_MEMWORDS = 16 pkg syscall (darwin-amd64-cgo), const BPF_MINBUFSIZE = 32 pkg syscall (darwin-amd64-cgo), const BPF_MINOR_VERSION = 1 pkg syscall (darwin-amd64-cgo), const BPF_MISC = 7 pkg syscall (darwin-amd64-cgo), const BPF_MSH = 160 pkg syscall (darwin-amd64-cgo), const BPF_MUL = 32 pkg syscall (darwin-amd64-cgo), const BPF_NEG = 128 pkg syscall (darwin-amd64-cgo), const BPF_OR = 64 pkg syscall (darwin-amd64-cgo), const BPF_RELEASE = 199606 pkg syscall (darwin-amd64-cgo), const BPF_RET = 6 pkg syscall (darwin-amd64-cgo), const BPF_RSH = 112 pkg syscall (darwin-amd64-cgo), const BPF_ST = 2 pkg syscall (darwin-amd64-cgo), const BPF_STX = 3 pkg syscall (darwin-amd64-cgo), const BPF_SUB = 16 pkg syscall (darwin-amd64-cgo), const BPF_TAX = 0 pkg syscall (darwin-amd64-cgo), const BPF_TXA = 128 pkg syscall (darwin-amd64-cgo), const BPF_W = 0 pkg syscall (darwin-amd64-cgo), const BPF_X = 8 pkg syscall (darwin-amd64-cgo), const BRKINT = 2 pkg syscall (darwin-amd64-cgo), const BRKINT ideal-int pkg syscall (darwin-amd64-cgo), const CFLUSH = 15 pkg syscall (darwin-amd64-cgo), const CFLUSH ideal-int pkg syscall (darwin-amd64-cgo), const CLOCAL = 32768 pkg syscall (darwin-amd64-cgo), const CLOCAL ideal-int pkg syscall (darwin-amd64-cgo), const CREAD = 2048 pkg syscall (darwin-amd64-cgo), const CREAD ideal-int pkg syscall (darwin-amd64-cgo), const CS5 = 0 pkg syscall (darwin-amd64-cgo), const CS5 ideal-int pkg syscall (darwin-amd64-cgo), const CS6 = 256 pkg syscall (darwin-amd64-cgo), const CS6 ideal-int pkg syscall (darwin-amd64-cgo), const CS7 = 512 pkg syscall (darwin-amd64-cgo), const CS7 ideal-int pkg syscall (darwin-amd64-cgo), const CS8 = 768 pkg syscall (darwin-amd64-cgo), const CS8 ideal-int pkg syscall (darwin-amd64-cgo), const CSIZE = 768 pkg syscall (darwin-amd64-cgo), const CSIZE ideal-int pkg syscall (darwin-amd64-cgo), const CSTART = 17 pkg syscall (darwin-amd64-cgo), const CSTART ideal-int pkg syscall (darwin-amd64-cgo), const CSTATUS = 20 pkg syscall (darwin-amd64-cgo), const CSTATUS ideal-int pkg syscall (darwin-amd64-cgo), const CSTOP = 19 pkg syscall (darwin-amd64-cgo), const CSTOP ideal-int pkg syscall (darwin-amd64-cgo), const CSTOPB = 1024 pkg syscall (darwin-amd64-cgo), const CSTOPB ideal-int pkg syscall (darwin-amd64-cgo), const CSUSP = 26 pkg syscall (darwin-amd64-cgo), const CSUSP ideal-int pkg syscall (darwin-amd64-cgo), const CTL_MAXNAME = 12 pkg syscall (darwin-amd64-cgo), const CTL_NET = 4 pkg syscall (darwin-amd64-cgo), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (darwin-amd64-cgo), const DLT_ARCNET = 7 pkg syscall (darwin-amd64-cgo), const DLT_ATM_CLIP = 19 pkg syscall (darwin-amd64-cgo), const DLT_ATM_RFC1483 = 11 pkg syscall (darwin-amd64-cgo), const DLT_AX25 = 3 pkg syscall (darwin-amd64-cgo), const DLT_CHAOS = 5 pkg syscall (darwin-amd64-cgo), const DLT_CHDLC = 104 pkg syscall (darwin-amd64-cgo), const DLT_C_HDLC = 104 pkg syscall (darwin-amd64-cgo), const DLT_EN10MB = 1 pkg syscall (darwin-amd64-cgo), const DLT_EN3MB = 2 pkg syscall (darwin-amd64-cgo), const DLT_FDDI = 10 pkg syscall (darwin-amd64-cgo), const DLT_IEEE802 = 6 pkg syscall (darwin-amd64-cgo), const DLT_IEEE802_11 = 105 pkg syscall (darwin-amd64-cgo), const DLT_IEEE802_11_RADIO = 127 pkg syscall (darwin-amd64-cgo), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (darwin-amd64-cgo), const DLT_LINUX_SLL = 113 pkg syscall (darwin-amd64-cgo), const DLT_LOOP = 108 pkg syscall (darwin-amd64-cgo), const DLT_NULL = 0 pkg syscall (darwin-amd64-cgo), const DLT_PFLOG = 117 pkg syscall (darwin-amd64-cgo), const DLT_PFSYNC = 18 pkg syscall (darwin-amd64-cgo), const DLT_PPP = 9 pkg syscall (darwin-amd64-cgo), const DLT_PPP_BSDOS = 16 pkg syscall (darwin-amd64-cgo), const DLT_PPP_SERIAL = 50 pkg syscall (darwin-amd64-cgo), const DLT_PRONET = 4 pkg syscall (darwin-amd64-cgo), const DLT_RAW = 12 pkg syscall (darwin-amd64-cgo), const DLT_SLIP = 8 pkg syscall (darwin-amd64-cgo), const DLT_SLIP_BSDOS = 15 pkg syscall (darwin-amd64-cgo), const DT_BLK = 6 pkg syscall (darwin-amd64-cgo), const DT_CHR = 2 pkg syscall (darwin-amd64-cgo), const DT_DIR = 4 pkg syscall (darwin-amd64-cgo), const DT_FIFO = 1 pkg syscall (darwin-amd64-cgo), const DT_LNK = 10 pkg syscall (darwin-amd64-cgo), const DT_REG = 8 pkg syscall (darwin-amd64-cgo), const DT_SOCK = 12 pkg syscall (darwin-amd64-cgo), const DT_UNKNOWN = 0 pkg syscall (darwin-amd64-cgo), const DT_WHT = 14 pkg syscall (darwin-amd64-cgo), const E2BIG = 7 pkg syscall (darwin-amd64-cgo), const EACCES = 13 pkg syscall (darwin-amd64-cgo), const EADDRINUSE = 48 pkg syscall (darwin-amd64-cgo), const EADDRNOTAVAIL = 49 pkg syscall (darwin-amd64-cgo), const EAFNOSUPPORT = 47 pkg syscall (darwin-amd64-cgo), const EAGAIN = 35 pkg syscall (darwin-amd64-cgo), const EALREADY = 37 pkg syscall (darwin-amd64-cgo), const EAUTH = 80 pkg syscall (darwin-amd64-cgo), const EBADARCH = 86 pkg syscall (darwin-amd64-cgo), const EBADEXEC = 85 pkg syscall (darwin-amd64-cgo), const EBADF = 9 pkg syscall (darwin-amd64-cgo), const EBADMACHO = 88 pkg syscall (darwin-amd64-cgo), const EBADMSG = 94 pkg syscall (darwin-amd64-cgo), const EBADRPC = 72 pkg syscall (darwin-amd64-cgo), const EBUSY = 16 pkg syscall (darwin-amd64-cgo), const ECANCELED = 89 pkg syscall (darwin-amd64-cgo), const ECHILD = 10 pkg syscall (darwin-amd64-cgo), const ECHO = 8 pkg syscall (darwin-amd64-cgo), const ECHOCTL = 64 pkg syscall (darwin-amd64-cgo), const ECHOE = 2 pkg syscall (darwin-amd64-cgo), const ECHOK = 4 pkg syscall (darwin-amd64-cgo), const ECHOKE = 1 pkg syscall (darwin-amd64-cgo), const ECHONL = 16 pkg syscall (darwin-amd64-cgo), const ECHOPRT = 32 pkg syscall (darwin-amd64-cgo), const ECONNABORTED = 53 pkg syscall (darwin-amd64-cgo), const ECONNREFUSED = 61 pkg syscall (darwin-amd64-cgo), const ECONNRESET = 54 pkg syscall (darwin-amd64-cgo), const EDEADLK = 11 pkg syscall (darwin-amd64-cgo), const EDESTADDRREQ = 39 pkg syscall (darwin-amd64-cgo), const EDEVERR = 83 pkg syscall (darwin-amd64-cgo), const EDOM = 33 pkg syscall (darwin-amd64-cgo), const EDQUOT = 69 pkg syscall (darwin-amd64-cgo), const EEXIST = 17 pkg syscall (darwin-amd64-cgo), const EFAULT = 14 pkg syscall (darwin-amd64-cgo), const EFBIG = 27 pkg syscall (darwin-amd64-cgo), const EFTYPE = 79 pkg syscall (darwin-amd64-cgo), const EHOSTDOWN = 64 pkg syscall (darwin-amd64-cgo), const EHOSTUNREACH = 65 pkg syscall (darwin-amd64-cgo), const EIDRM = 90 pkg syscall (darwin-amd64-cgo), const EILSEQ = 92 pkg syscall (darwin-amd64-cgo), const EINPROGRESS = 36 pkg syscall (darwin-amd64-cgo), const EINTR = 4 pkg syscall (darwin-amd64-cgo), const EINVAL = 22 pkg syscall (darwin-amd64-cgo), const EIO = 5 pkg syscall (darwin-amd64-cgo), const EISCONN = 56 pkg syscall (darwin-amd64-cgo), const EISDIR = 21 pkg syscall (darwin-amd64-cgo), const ELAST = 105 pkg syscall (darwin-amd64-cgo), const ELOOP = 62 pkg syscall (darwin-amd64-cgo), const EMFILE = 24 pkg syscall (darwin-amd64-cgo), const EMLINK = 31 pkg syscall (darwin-amd64-cgo), const EMSGSIZE = 40 pkg syscall (darwin-amd64-cgo), const EMULTIHOP = 95 pkg syscall (darwin-amd64-cgo), const ENAMETOOLONG = 63 pkg syscall (darwin-amd64-cgo), const ENEEDAUTH = 81 pkg syscall (darwin-amd64-cgo), const ENETDOWN = 50 pkg syscall (darwin-amd64-cgo), const ENETRESET = 52 pkg syscall (darwin-amd64-cgo), const ENETUNREACH = 51 pkg syscall (darwin-amd64-cgo), const ENFILE = 23 pkg syscall (darwin-amd64-cgo), const ENOATTR = 93 pkg syscall (darwin-amd64-cgo), const ENOBUFS = 55 pkg syscall (darwin-amd64-cgo), const ENODATA = 96 pkg syscall (darwin-amd64-cgo), const ENODEV = 19 pkg syscall (darwin-amd64-cgo), const ENOEXEC = 8 pkg syscall (darwin-amd64-cgo), const ENOLCK = 77 pkg syscall (darwin-amd64-cgo), const ENOLINK = 97 pkg syscall (darwin-amd64-cgo), const ENOMEM = 12 pkg syscall (darwin-amd64-cgo), const ENOMSG = 91 pkg syscall (darwin-amd64-cgo), const ENOPOLICY = 103 pkg syscall (darwin-amd64-cgo), const ENOPROTOOPT = 42 pkg syscall (darwin-amd64-cgo), const ENOSPC = 28 pkg syscall (darwin-amd64-cgo), const ENOSR = 98 pkg syscall (darwin-amd64-cgo), const ENOSTR = 99 pkg syscall (darwin-amd64-cgo), const ENOSYS = 78 pkg syscall (darwin-amd64-cgo), const ENOTBLK = 15 pkg syscall (darwin-amd64-cgo), const ENOTCONN = 57 pkg syscall (darwin-amd64-cgo), const ENOTDIR = 20 pkg syscall (darwin-amd64-cgo), const ENOTEMPTY = 66 pkg syscall (darwin-amd64-cgo), const ENOTRECOVERABLE = 104 pkg syscall (darwin-amd64-cgo), const ENOTSOCK = 38 pkg syscall (darwin-amd64-cgo), const ENOTSUP = 45 pkg syscall (darwin-amd64-cgo), const ENOTTY = 25 pkg syscall (darwin-amd64-cgo), const ENXIO = 6 pkg syscall (darwin-amd64-cgo), const EOPNOTSUPP = 102 pkg syscall (darwin-amd64-cgo), const EOVERFLOW = 84 pkg syscall (darwin-amd64-cgo), const EOWNERDEAD = 105 pkg syscall (darwin-amd64-cgo), const EPERM = 1 pkg syscall (darwin-amd64-cgo), const EPFNOSUPPORT = 46 pkg syscall (darwin-amd64-cgo), const EPIPE = 32 pkg syscall (darwin-amd64-cgo), const EPROCLIM = 67 pkg syscall (darwin-amd64-cgo), const EPROCUNAVAIL = 76 pkg syscall (darwin-amd64-cgo), const EPROGMISMATCH = 75 pkg syscall (darwin-amd64-cgo), const EPROGUNAVAIL = 74 pkg syscall (darwin-amd64-cgo), const EPROTO = 100 pkg syscall (darwin-amd64-cgo), const EPROTONOSUPPORT = 43 pkg syscall (darwin-amd64-cgo), const EPROTOTYPE = 41 pkg syscall (darwin-amd64-cgo), const EPWROFF = 82 pkg syscall (darwin-amd64-cgo), const ERANGE = 34 pkg syscall (darwin-amd64-cgo), const EREMOTE = 71 pkg syscall (darwin-amd64-cgo), const EROFS = 30 pkg syscall (darwin-amd64-cgo), const ERPCMISMATCH = 73 pkg syscall (darwin-amd64-cgo), const ESHLIBVERS = 87 pkg syscall (darwin-amd64-cgo), const ESHUTDOWN = 58 pkg syscall (darwin-amd64-cgo), const ESOCKTNOSUPPORT = 44 pkg syscall (darwin-amd64-cgo), const ESPIPE = 29 pkg syscall (darwin-amd64-cgo), const ESRCH = 3 pkg syscall (darwin-amd64-cgo), const ESTALE = 70 pkg syscall (darwin-amd64-cgo), const ETIME = 101 pkg syscall (darwin-amd64-cgo), const ETIMEDOUT = 60 pkg syscall (darwin-amd64-cgo), const ETOOMANYREFS = 59 pkg syscall (darwin-amd64-cgo), const ETXTBSY = 26 pkg syscall (darwin-amd64-cgo), const EUSERS = 68 pkg syscall (darwin-amd64-cgo), const EVFILT_AIO = -3 pkg syscall (darwin-amd64-cgo), const EVFILT_FS = -9 pkg syscall (darwin-amd64-cgo), const EVFILT_MACHPORT = -8 pkg syscall (darwin-amd64-cgo), const EVFILT_PROC = -5 pkg syscall (darwin-amd64-cgo), const EVFILT_READ = -1 pkg syscall (darwin-amd64-cgo), const EVFILT_SIGNAL = -6 pkg syscall (darwin-amd64-cgo), const EVFILT_SYSCOUNT = 12 pkg syscall (darwin-amd64-cgo), const EVFILT_THREADMARKER = 12 pkg syscall (darwin-amd64-cgo), const EVFILT_TIMER = -7 pkg syscall (darwin-amd64-cgo), const EVFILT_USER = -10 pkg syscall (darwin-amd64-cgo), const EVFILT_VM = -12 pkg syscall (darwin-amd64-cgo), const EVFILT_VNODE = -4 pkg syscall (darwin-amd64-cgo), const EVFILT_WRITE = -2 pkg syscall (darwin-amd64-cgo), const EV_ADD = 1 pkg syscall (darwin-amd64-cgo), const EV_CLEAR = 32 pkg syscall (darwin-amd64-cgo), const EV_DELETE = 2 pkg syscall (darwin-amd64-cgo), const EV_DISABLE = 8 pkg syscall (darwin-amd64-cgo), const EV_DISPATCH = 128 pkg syscall (darwin-amd64-cgo), const EV_ENABLE = 4 pkg syscall (darwin-amd64-cgo), const EV_EOF = 32768 pkg syscall (darwin-amd64-cgo), const EV_ERROR = 16384 pkg syscall (darwin-amd64-cgo), const EV_FLAG0 = 4096 pkg syscall (darwin-amd64-cgo), const EV_FLAG1 = 8192 pkg syscall (darwin-amd64-cgo), const EV_ONESHOT = 16 pkg syscall (darwin-amd64-cgo), const EV_OOBAND = 8192 pkg syscall (darwin-amd64-cgo), const EV_POLL = 4096 pkg syscall (darwin-amd64-cgo), const EV_RECEIPT = 64 pkg syscall (darwin-amd64-cgo), const EV_SYSFLAGS = 61440 pkg syscall (darwin-amd64-cgo), const EWOULDBLOCK = 35 pkg syscall (darwin-amd64-cgo), const EXDEV = 18 pkg syscall (darwin-amd64-cgo), const EXTA = 19200 pkg syscall (darwin-amd64-cgo), const EXTB = 38400 pkg syscall (darwin-amd64-cgo), const EXTPROC = 2048 pkg syscall (darwin-amd64-cgo), const FD_CLOEXEC = 1 pkg syscall (darwin-amd64-cgo), const FD_SETSIZE = 1024 pkg syscall (darwin-amd64-cgo), const FLUSHO = 8388608 pkg syscall (darwin-amd64-cgo), const FLUSHO ideal-int pkg syscall (darwin-amd64-cgo), const F_ADDFILESIGS = 61 pkg syscall (darwin-amd64-cgo), const F_ADDSIGS = 59 pkg syscall (darwin-amd64-cgo), const F_ALLOCATEALL = 4 pkg syscall (darwin-amd64-cgo), const F_ALLOCATECONTIG = 2 pkg syscall (darwin-amd64-cgo), const F_CHKCLEAN = 41 pkg syscall (darwin-amd64-cgo), const F_DUPFD = 0 pkg syscall (darwin-amd64-cgo), const F_DUPFD_CLOEXEC = 67 pkg syscall (darwin-amd64-cgo), const F_FLUSH_DATA = 40 pkg syscall (darwin-amd64-cgo), const F_FREEZE_FS = 53 pkg syscall (darwin-amd64-cgo), const F_FULLFSYNC = 51 pkg syscall (darwin-amd64-cgo), const F_GETFD = 1 pkg syscall (darwin-amd64-cgo), const F_GETFL = 3 pkg syscall (darwin-amd64-cgo), const F_GETLK = 7 pkg syscall (darwin-amd64-cgo), const F_GETLKPID = 66 pkg syscall (darwin-amd64-cgo), const F_GETNOSIGPIPE = 74 pkg syscall (darwin-amd64-cgo), const F_GETOWN = 5 pkg syscall (darwin-amd64-cgo), const F_GETPATH = 50 pkg syscall (darwin-amd64-cgo), const F_GETPATH_MTMINFO = 71 pkg syscall (darwin-amd64-cgo), const F_GETPROTECTIONCLASS = 63 pkg syscall (darwin-amd64-cgo), const F_GLOBAL_NOCACHE = 55 pkg syscall (darwin-amd64-cgo), const F_LOG2PHYS = 49 pkg syscall (darwin-amd64-cgo), const F_LOG2PHYS_EXT = 65 pkg syscall (darwin-amd64-cgo), const F_MARKDEPENDENCY = 60 pkg syscall (darwin-amd64-cgo), const F_NOCACHE = 48 pkg syscall (darwin-amd64-cgo), const F_NODIRECT = 62 pkg syscall (darwin-amd64-cgo), const F_OK = 0 pkg syscall (darwin-amd64-cgo), const F_PATHPKG_CHECK = 52 pkg syscall (darwin-amd64-cgo), const F_PEOFPOSMODE = 3 pkg syscall (darwin-amd64-cgo), const F_PREALLOCATE = 42 pkg syscall (darwin-amd64-cgo), const F_RDADVISE = 44 pkg syscall (darwin-amd64-cgo), const F_RDAHEAD = 45 pkg syscall (darwin-amd64-cgo), const F_RDLCK = 1 pkg syscall (darwin-amd64-cgo), const F_READBOOTSTRAP = 46 pkg syscall (darwin-amd64-cgo), const F_SETBACKINGSTORE = 70 pkg syscall (darwin-amd64-cgo), const F_SETFD = 2 pkg syscall (darwin-amd64-cgo), const F_SETFL = 4 pkg syscall (darwin-amd64-cgo), const F_SETLK = 8 pkg syscall (darwin-amd64-cgo), const F_SETLKW = 9 pkg syscall (darwin-amd64-cgo), const F_SETNOSIGPIPE = 73 pkg syscall (darwin-amd64-cgo), const F_SETOWN = 6 pkg syscall (darwin-amd64-cgo), const F_SETPROTECTIONCLASS = 64 pkg syscall (darwin-amd64-cgo), const F_SETSIZE = 43 pkg syscall (darwin-amd64-cgo), const F_THAW_FS = 54 pkg syscall (darwin-amd64-cgo), const F_UNLCK = 2 pkg syscall (darwin-amd64-cgo), const F_VOLPOSMODE = 4 pkg syscall (darwin-amd64-cgo), const F_WRITEBOOTSTRAP = 47 pkg syscall (darwin-amd64-cgo), const F_WRLCK = 3 pkg syscall (darwin-amd64-cgo), const HUPCL = 16384 pkg syscall (darwin-amd64-cgo), const HUPCL ideal-int pkg syscall (darwin-amd64-cgo), const ICANON = 256 pkg syscall (darwin-amd64-cgo), const ICANON ideal-int pkg syscall (darwin-amd64-cgo), const ICRNL = 256 pkg syscall (darwin-amd64-cgo), const ICRNL ideal-int pkg syscall (darwin-amd64-cgo), const IEXTEN = 1024 pkg syscall (darwin-amd64-cgo), const IEXTEN ideal-int pkg syscall (darwin-amd64-cgo), const IFF_ALLMULTI = 512 pkg syscall (darwin-amd64-cgo), const IFF_ALTPHYS = 16384 pkg syscall (darwin-amd64-cgo), const IFF_DEBUG = 4 pkg syscall (darwin-amd64-cgo), const IFF_LINK0 = 4096 pkg syscall (darwin-amd64-cgo), const IFF_LINK1 = 8192 pkg syscall (darwin-amd64-cgo), const IFF_LINK2 = 16384 pkg syscall (darwin-amd64-cgo), const IFF_LOOPBACK = 8 pkg syscall (darwin-amd64-cgo), const IFF_MULTICAST = 32768 pkg syscall (darwin-amd64-cgo), const IFF_NOARP = 128 pkg syscall (darwin-amd64-cgo), const IFF_NOTRAILERS = 32 pkg syscall (darwin-amd64-cgo), const IFF_OACTIVE = 1024 pkg syscall (darwin-amd64-cgo), const IFF_POINTOPOINT = 16 pkg syscall (darwin-amd64-cgo), const IFF_PROMISC = 256 pkg syscall (darwin-amd64-cgo), const IFF_RUNNING = 64 pkg syscall (darwin-amd64-cgo), const IFF_SIMPLEX = 2048 pkg syscall (darwin-amd64-cgo), const IFNAMSIZ = 16 pkg syscall (darwin-amd64-cgo), const IFT_1822 = 2 pkg syscall (darwin-amd64-cgo), const IFT_AAL5 = 49 pkg syscall (darwin-amd64-cgo), const IFT_ARCNET = 35 pkg syscall (darwin-amd64-cgo), const IFT_ARCNETPLUS = 36 pkg syscall (darwin-amd64-cgo), const IFT_ATM = 37 pkg syscall (darwin-amd64-cgo), const IFT_BRIDGE = 209 pkg syscall (darwin-amd64-cgo), const IFT_CARP = 248 pkg syscall (darwin-amd64-cgo), const IFT_CELLULAR = 255 pkg syscall (darwin-amd64-cgo), const IFT_CEPT = 19 pkg syscall (darwin-amd64-cgo), const IFT_DS3 = 30 pkg syscall (darwin-amd64-cgo), const IFT_ENC = 244 pkg syscall (darwin-amd64-cgo), const IFT_EON = 25 pkg syscall (darwin-amd64-cgo), const IFT_ETHER = 6 pkg syscall (darwin-amd64-cgo), const IFT_FAITH = 56 pkg syscall (darwin-amd64-cgo), const IFT_FDDI = 15 pkg syscall (darwin-amd64-cgo), const IFT_FRELAY = 32 pkg syscall (darwin-amd64-cgo), const IFT_FRELAYDCE = 44 pkg syscall (darwin-amd64-cgo), const IFT_GIF = 55 pkg syscall (darwin-amd64-cgo), const IFT_HDH1822 = 3 pkg syscall (darwin-amd64-cgo), const IFT_HIPPI = 47 pkg syscall (darwin-amd64-cgo), const IFT_HSSI = 46 pkg syscall (darwin-amd64-cgo), const IFT_HY = 14 pkg syscall (darwin-amd64-cgo), const IFT_IEEE1394 = 144 pkg syscall (darwin-amd64-cgo), const IFT_IEEE8023ADLAG = 136 pkg syscall (darwin-amd64-cgo), const IFT_ISDNBASIC = 20 pkg syscall (darwin-amd64-cgo), const IFT_ISDNPRIMARY = 21 pkg syscall (darwin-amd64-cgo), const IFT_ISO88022LLC = 41 pkg syscall (darwin-amd64-cgo), const IFT_ISO88023 = 7 pkg syscall (darwin-amd64-cgo), const IFT_ISO88024 = 8 pkg syscall (darwin-amd64-cgo), const IFT_ISO88025 = 9 pkg syscall (darwin-amd64-cgo), const IFT_ISO88026 = 10 pkg syscall (darwin-amd64-cgo), const IFT_L2VLAN = 135 pkg syscall (darwin-amd64-cgo), const IFT_LAPB = 16 pkg syscall (darwin-amd64-cgo), const IFT_LOCALTALK = 42 pkg syscall (darwin-amd64-cgo), const IFT_LOOP = 24 pkg syscall (darwin-amd64-cgo), const IFT_MIOX25 = 38 pkg syscall (darwin-amd64-cgo), const IFT_MODEM = 48 pkg syscall (darwin-amd64-cgo), const IFT_NSIP = 27 pkg syscall (darwin-amd64-cgo), const IFT_OTHER = 1 pkg syscall (darwin-amd64-cgo), const IFT_P10 = 12 pkg syscall (darwin-amd64-cgo), const IFT_P80 = 13 pkg syscall (darwin-amd64-cgo), const IFT_PARA = 34 pkg syscall (darwin-amd64-cgo), const IFT_PDP = 255 pkg syscall (darwin-amd64-cgo), const IFT_PFLOG = 245 pkg syscall (darwin-amd64-cgo), const IFT_PFSYNC = 246 pkg syscall (darwin-amd64-cgo), const IFT_PPP = 23 pkg syscall (darwin-amd64-cgo), const IFT_PROPMUX = 54 pkg syscall (darwin-amd64-cgo), const IFT_PROPVIRTUAL = 53 pkg syscall (darwin-amd64-cgo), const IFT_PTPSERIAL = 22 pkg syscall (darwin-amd64-cgo), const IFT_RS232 = 33 pkg syscall (darwin-amd64-cgo), const IFT_SDLC = 17 pkg syscall (darwin-amd64-cgo), const IFT_SIP = 31 pkg syscall (darwin-amd64-cgo), const IFT_SLIP = 28 pkg syscall (darwin-amd64-cgo), const IFT_SMDSDXI = 43 pkg syscall (darwin-amd64-cgo), const IFT_SMDSICIP = 52 pkg syscall (darwin-amd64-cgo), const IFT_SONET = 39 pkg syscall (darwin-amd64-cgo), const IFT_SONETPATH = 50 pkg syscall (darwin-amd64-cgo), const IFT_SONETVT = 51 pkg syscall (darwin-amd64-cgo), const IFT_STARLAN = 11 pkg syscall (darwin-amd64-cgo), const IFT_STF = 57 pkg syscall (darwin-amd64-cgo), const IFT_T1 = 18 pkg syscall (darwin-amd64-cgo), const IFT_ULTRA = 29 pkg syscall (darwin-amd64-cgo), const IFT_V35 = 45 pkg syscall (darwin-amd64-cgo), const IFT_X25 = 5 pkg syscall (darwin-amd64-cgo), const IFT_X25DDN = 4 pkg syscall (darwin-amd64-cgo), const IFT_X25PLE = 40 pkg syscall (darwin-amd64-cgo), const IFT_XETHER = 26 pkg syscall (darwin-amd64-cgo), const IGNBRK = 1 pkg syscall (darwin-amd64-cgo), const IGNBRK ideal-int pkg syscall (darwin-amd64-cgo), const IGNCR = 128 pkg syscall (darwin-amd64-cgo), const IGNCR ideal-int pkg syscall (darwin-amd64-cgo), const IGNPAR = 4 pkg syscall (darwin-amd64-cgo), const IGNPAR ideal-int pkg syscall (darwin-amd64-cgo), const IMAXBEL = 8192 pkg syscall (darwin-amd64-cgo), const IMAXBEL ideal-int pkg syscall (darwin-amd64-cgo), const INLCR = 64 pkg syscall (darwin-amd64-cgo), const INLCR ideal-int pkg syscall (darwin-amd64-cgo), const INPCK = 16 pkg syscall (darwin-amd64-cgo), const INPCK ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSA_HOST = 16777215 pkg syscall (darwin-amd64-cgo), const IN_CLASSA_MAX = 128 pkg syscall (darwin-amd64-cgo), const IN_CLASSA_NET = 4278190080 pkg syscall (darwin-amd64-cgo), const IN_CLASSA_NSHIFT = 24 pkg syscall (darwin-amd64-cgo), const IN_CLASSB_HOST = 65535 pkg syscall (darwin-amd64-cgo), const IN_CLASSB_MAX = 65536 pkg syscall (darwin-amd64-cgo), const IN_CLASSB_NET = 4294901760 pkg syscall (darwin-amd64-cgo), const IN_CLASSB_NSHIFT = 16 pkg syscall (darwin-amd64-cgo), const IN_CLASSC_HOST = 255 pkg syscall (darwin-amd64-cgo), const IN_CLASSC_NET = 4294967040 pkg syscall (darwin-amd64-cgo), const IN_CLASSC_NSHIFT = 8 pkg syscall (darwin-amd64-cgo), const IN_CLASSD_HOST = 268435455 pkg syscall (darwin-amd64-cgo), const IN_CLASSD_NET = 4026531840 pkg syscall (darwin-amd64-cgo), const IN_CLASSD_NSHIFT = 28 pkg syscall (darwin-amd64-cgo), const IN_LINKLOCALNETNUM = 2851995648 pkg syscall (darwin-amd64-cgo), const IN_LOOPBACKNET = 127 pkg syscall (darwin-amd64-cgo), const IPPROTO_3PC = 34 pkg syscall (darwin-amd64-cgo), const IPPROTO_ADFS = 68 pkg syscall (darwin-amd64-cgo), const IPPROTO_AH = 51 pkg syscall (darwin-amd64-cgo), const IPPROTO_AHIP = 61 pkg syscall (darwin-amd64-cgo), const IPPROTO_APES = 99 pkg syscall (darwin-amd64-cgo), const IPPROTO_ARGUS = 13 pkg syscall (darwin-amd64-cgo), const IPPROTO_AX25 = 93 pkg syscall (darwin-amd64-cgo), const IPPROTO_BHA = 49 pkg syscall (darwin-amd64-cgo), const IPPROTO_BLT = 30 pkg syscall (darwin-amd64-cgo), const IPPROTO_BRSATMON = 76 pkg syscall (darwin-amd64-cgo), const IPPROTO_CFTP = 62 pkg syscall (darwin-amd64-cgo), const IPPROTO_CHAOS = 16 pkg syscall (darwin-amd64-cgo), const IPPROTO_CMTP = 38 pkg syscall (darwin-amd64-cgo), const IPPROTO_CPHB = 73 pkg syscall (darwin-amd64-cgo), const IPPROTO_CPNX = 72 pkg syscall (darwin-amd64-cgo), const IPPROTO_DDP = 37 pkg syscall (darwin-amd64-cgo), const IPPROTO_DGP = 86 pkg syscall (darwin-amd64-cgo), const IPPROTO_DIVERT = 254 pkg syscall (darwin-amd64-cgo), const IPPROTO_DONE = 257 pkg syscall (darwin-amd64-cgo), const IPPROTO_DSTOPTS = 60 pkg syscall (darwin-amd64-cgo), const IPPROTO_EGP = 8 pkg syscall (darwin-amd64-cgo), const IPPROTO_EMCON = 14 pkg syscall (darwin-amd64-cgo), const IPPROTO_ENCAP = 98 pkg syscall (darwin-amd64-cgo), const IPPROTO_EON = 80 pkg syscall (darwin-amd64-cgo), const IPPROTO_ESP = 50 pkg syscall (darwin-amd64-cgo), const IPPROTO_ETHERIP = 97 pkg syscall (darwin-amd64-cgo), const IPPROTO_FRAGMENT = 44 pkg syscall (darwin-amd64-cgo), const IPPROTO_GGP = 3 pkg syscall (darwin-amd64-cgo), const IPPROTO_GMTP = 100 pkg syscall (darwin-amd64-cgo), const IPPROTO_GRE = 47 pkg syscall (darwin-amd64-cgo), const IPPROTO_HELLO = 63 pkg syscall (darwin-amd64-cgo), const IPPROTO_HMP = 20 pkg syscall (darwin-amd64-cgo), const IPPROTO_HOPOPTS = 0 pkg syscall (darwin-amd64-cgo), const IPPROTO_ICMP = 1 pkg syscall (darwin-amd64-cgo), const IPPROTO_ICMPV6 = 58 pkg syscall (darwin-amd64-cgo), const IPPROTO_IDP = 22 pkg syscall (darwin-amd64-cgo), const IPPROTO_IDPR = 35 pkg syscall (darwin-amd64-cgo), const IPPROTO_IDRP = 45 pkg syscall (darwin-amd64-cgo), const IPPROTO_IGMP = 2 pkg syscall (darwin-amd64-cgo), const IPPROTO_IGP = 85 pkg syscall (darwin-amd64-cgo), const IPPROTO_IGRP = 88 pkg syscall (darwin-amd64-cgo), const IPPROTO_IL = 40 pkg syscall (darwin-amd64-cgo), const IPPROTO_INLSP = 52 pkg syscall (darwin-amd64-cgo), const IPPROTO_INP = 32 pkg syscall (darwin-amd64-cgo), const IPPROTO_IPCOMP = 108 pkg syscall (darwin-amd64-cgo), const IPPROTO_IPCV = 71 pkg syscall (darwin-amd64-cgo), const IPPROTO_IPEIP = 94 pkg syscall (darwin-amd64-cgo), const IPPROTO_IPIP = 4 pkg syscall (darwin-amd64-cgo), const IPPROTO_IPPC = 67 pkg syscall (darwin-amd64-cgo), const IPPROTO_IPV4 = 4 pkg syscall (darwin-amd64-cgo), const IPPROTO_IRTP = 28 pkg syscall (darwin-amd64-cgo), const IPPROTO_KRYPTOLAN = 65 pkg syscall (darwin-amd64-cgo), const IPPROTO_LARP = 91 pkg syscall (darwin-amd64-cgo), const IPPROTO_LEAF1 = 25 pkg syscall (darwin-amd64-cgo), const IPPROTO_LEAF2 = 26 pkg syscall (darwin-amd64-cgo), const IPPROTO_MAX = 256 pkg syscall (darwin-amd64-cgo), const IPPROTO_MAXID = 52 pkg syscall (darwin-amd64-cgo), const IPPROTO_MEAS = 19 pkg syscall (darwin-amd64-cgo), const IPPROTO_MHRP = 48 pkg syscall (darwin-amd64-cgo), const IPPROTO_MICP = 95 pkg syscall (darwin-amd64-cgo), const IPPROTO_MTP = 92 pkg syscall (darwin-amd64-cgo), const IPPROTO_MUX = 18 pkg syscall (darwin-amd64-cgo), const IPPROTO_ND = 77 pkg syscall (darwin-amd64-cgo), const IPPROTO_NHRP = 54 pkg syscall (darwin-amd64-cgo), const IPPROTO_NONE = 59 pkg syscall (darwin-amd64-cgo), const IPPROTO_NSP = 31 pkg syscall (darwin-amd64-cgo), const IPPROTO_NVPII = 11 pkg syscall (darwin-amd64-cgo), const IPPROTO_OSPFIGP = 89 pkg syscall (darwin-amd64-cgo), const IPPROTO_PGM = 113 pkg syscall (darwin-amd64-cgo), const IPPROTO_PIGP = 9 pkg syscall (darwin-amd64-cgo), const IPPROTO_PIM = 103 pkg syscall (darwin-amd64-cgo), const IPPROTO_PRM = 21 pkg syscall (darwin-amd64-cgo), const IPPROTO_PUP = 12 pkg syscall (darwin-amd64-cgo), const IPPROTO_PVP = 75 pkg syscall (darwin-amd64-cgo), const IPPROTO_RAW = 255 pkg syscall (darwin-amd64-cgo), const IPPROTO_RCCMON = 10 pkg syscall (darwin-amd64-cgo), const IPPROTO_RDP = 27 pkg syscall (darwin-amd64-cgo), const IPPROTO_ROUTING = 43 pkg syscall (darwin-amd64-cgo), const IPPROTO_RSVP = 46 pkg syscall (darwin-amd64-cgo), const IPPROTO_RVD = 66 pkg syscall (darwin-amd64-cgo), const IPPROTO_SATEXPAK = 64 pkg syscall (darwin-amd64-cgo), const IPPROTO_SATMON = 69 pkg syscall (darwin-amd64-cgo), const IPPROTO_SCCSP = 96 pkg syscall (darwin-amd64-cgo), const IPPROTO_SCTP = 132 pkg syscall (darwin-amd64-cgo), const IPPROTO_SDRP = 42 pkg syscall (darwin-amd64-cgo), const IPPROTO_SEP = 33 pkg syscall (darwin-amd64-cgo), const IPPROTO_SRPC = 90 pkg syscall (darwin-amd64-cgo), const IPPROTO_ST = 7 pkg syscall (darwin-amd64-cgo), const IPPROTO_SVMTP = 82 pkg syscall (darwin-amd64-cgo), const IPPROTO_SWIPE = 53 pkg syscall (darwin-amd64-cgo), const IPPROTO_TCF = 87 pkg syscall (darwin-amd64-cgo), const IPPROTO_TP = 29 pkg syscall (darwin-amd64-cgo), const IPPROTO_TPXX = 39 pkg syscall (darwin-amd64-cgo), const IPPROTO_TRUNK1 = 23 pkg syscall (darwin-amd64-cgo), const IPPROTO_TRUNK2 = 24 pkg syscall (darwin-amd64-cgo), const IPPROTO_TTP = 84 pkg syscall (darwin-amd64-cgo), const IPPROTO_VINES = 83 pkg syscall (darwin-amd64-cgo), const IPPROTO_VISA = 70 pkg syscall (darwin-amd64-cgo), const IPPROTO_VMTP = 81 pkg syscall (darwin-amd64-cgo), const IPPROTO_WBEXPAK = 79 pkg syscall (darwin-amd64-cgo), const IPPROTO_WBMON = 78 pkg syscall (darwin-amd64-cgo), const IPPROTO_WSN = 74 pkg syscall (darwin-amd64-cgo), const IPPROTO_XNET = 15 pkg syscall (darwin-amd64-cgo), const IPPROTO_XTP = 36 pkg syscall (darwin-amd64-cgo), const IPV6_2292DSTOPTS = 23 pkg syscall (darwin-amd64-cgo), const IPV6_2292HOPLIMIT = 20 pkg syscall (darwin-amd64-cgo), const IPV6_2292HOPOPTS = 22 pkg syscall (darwin-amd64-cgo), const IPV6_2292NEXTHOP = 21 pkg syscall (darwin-amd64-cgo), const IPV6_2292PKTINFO = 19 pkg syscall (darwin-amd64-cgo), const IPV6_2292PKTOPTIONS = 25 pkg syscall (darwin-amd64-cgo), const IPV6_2292RTHDR = 24 pkg syscall (darwin-amd64-cgo), const IPV6_BINDV6ONLY = 27 pkg syscall (darwin-amd64-cgo), const IPV6_BOUND_IF = 125 pkg syscall (darwin-amd64-cgo), const IPV6_CHECKSUM = 26 pkg syscall (darwin-amd64-cgo), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (darwin-amd64-cgo), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (darwin-amd64-cgo), const IPV6_DEFHLIM = 64 pkg syscall (darwin-amd64-cgo), const IPV6_FAITH = 29 pkg syscall (darwin-amd64-cgo), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (darwin-amd64-cgo), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (darwin-amd64-cgo), const IPV6_FRAGTTL = 120 pkg syscall (darwin-amd64-cgo), const IPV6_FW_ADD = 30 pkg syscall (darwin-amd64-cgo), const IPV6_FW_DEL = 31 pkg syscall (darwin-amd64-cgo), const IPV6_FW_FLUSH = 32 pkg syscall (darwin-amd64-cgo), const IPV6_FW_GET = 34 pkg syscall (darwin-amd64-cgo), const IPV6_FW_ZERO = 33 pkg syscall (darwin-amd64-cgo), const IPV6_HLIMDEC = 1 pkg syscall (darwin-amd64-cgo), const IPV6_IPSEC_POLICY = 28 pkg syscall (darwin-amd64-cgo), const IPV6_JOIN_GROUP = 12 pkg syscall (darwin-amd64-cgo), const IPV6_LEAVE_GROUP = 13 pkg syscall (darwin-amd64-cgo), const IPV6_MAXHLIM = 255 pkg syscall (darwin-amd64-cgo), const IPV6_MAXOPTHDR = 2048 pkg syscall (darwin-amd64-cgo), const IPV6_MAXPACKET = 65535 pkg syscall (darwin-amd64-cgo), const IPV6_MAX_GROUP_SRC_FILTER = 512 pkg syscall (darwin-amd64-cgo), const IPV6_MAX_MEMBERSHIPS = 4095 pkg syscall (darwin-amd64-cgo), const IPV6_MAX_SOCK_SRC_FILTER = 128 pkg syscall (darwin-amd64-cgo), const IPV6_MIN_MEMBERSHIPS = 31 pkg syscall (darwin-amd64-cgo), const IPV6_MMTU = 1280 pkg syscall (darwin-amd64-cgo), const IPV6_MULTICAST_HOPS = 10 pkg syscall (darwin-amd64-cgo), const IPV6_MULTICAST_IF = 9 pkg syscall (darwin-amd64-cgo), const IPV6_MULTICAST_LOOP = 11 pkg syscall (darwin-amd64-cgo), const IPV6_PORTRANGE = 14 pkg syscall (darwin-amd64-cgo), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (darwin-amd64-cgo), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (darwin-amd64-cgo), const IPV6_PORTRANGE_LOW = 2 pkg syscall (darwin-amd64-cgo), const IPV6_RECVTCLASS = 35 pkg syscall (darwin-amd64-cgo), const IPV6_RTHDR_LOOSE = 0 pkg syscall (darwin-amd64-cgo), const IPV6_RTHDR_STRICT = 1 pkg syscall (darwin-amd64-cgo), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (darwin-amd64-cgo), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (darwin-amd64-cgo), const IPV6_TCLASS = 36 pkg syscall (darwin-amd64-cgo), const IPV6_UNICAST_HOPS = 4 pkg syscall (darwin-amd64-cgo), const IPV6_V6ONLY = 27 pkg syscall (darwin-amd64-cgo), const IPV6_VERSION = 96 pkg syscall (darwin-amd64-cgo), const IPV6_VERSION_MASK = 240 pkg syscall (darwin-amd64-cgo), const IP_ADD_MEMBERSHIP = 12 pkg syscall (darwin-amd64-cgo), const IP_ADD_SOURCE_MEMBERSHIP = 70 pkg syscall (darwin-amd64-cgo), const IP_BLOCK_SOURCE = 72 pkg syscall (darwin-amd64-cgo), const IP_BOUND_IF = 25 pkg syscall (darwin-amd64-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (darwin-amd64-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (darwin-amd64-cgo), const IP_DF = 16384 pkg syscall (darwin-amd64-cgo), const IP_DROP_MEMBERSHIP = 13 pkg syscall (darwin-amd64-cgo), const IP_DROP_SOURCE_MEMBERSHIP = 71 pkg syscall (darwin-amd64-cgo), const IP_DUMMYNET_CONFIGURE = 60 pkg syscall (darwin-amd64-cgo), const IP_DUMMYNET_DEL = 61 pkg syscall (darwin-amd64-cgo), const IP_DUMMYNET_FLUSH = 62 pkg syscall (darwin-amd64-cgo), const IP_DUMMYNET_GET = 64 pkg syscall (darwin-amd64-cgo), const IP_FAITH = 22 pkg syscall (darwin-amd64-cgo), const IP_FW_ADD = 40 pkg syscall (darwin-amd64-cgo), const IP_FW_DEL = 41 pkg syscall (darwin-amd64-cgo), const IP_FW_FLUSH = 42 pkg syscall (darwin-amd64-cgo), const IP_FW_GET = 44 pkg syscall (darwin-amd64-cgo), const IP_FW_RESETLOG = 45 pkg syscall (darwin-amd64-cgo), const IP_FW_ZERO = 43 pkg syscall (darwin-amd64-cgo), const IP_HDRINCL = 2 pkg syscall (darwin-amd64-cgo), const IP_IPSEC_POLICY = 21 pkg syscall (darwin-amd64-cgo), const IP_MAXPACKET = 65535 pkg syscall (darwin-amd64-cgo), const IP_MAX_GROUP_SRC_FILTER = 512 pkg syscall (darwin-amd64-cgo), const IP_MAX_MEMBERSHIPS = 4095 pkg syscall (darwin-amd64-cgo), const IP_MAX_SOCK_MUTE_FILTER = 128 pkg syscall (darwin-amd64-cgo), const IP_MAX_SOCK_SRC_FILTER = 128 pkg syscall (darwin-amd64-cgo), const IP_MF = 8192 pkg syscall (darwin-amd64-cgo), const IP_MIN_MEMBERSHIPS = 31 pkg syscall (darwin-amd64-cgo), const IP_MSFILTER = 74 pkg syscall (darwin-amd64-cgo), const IP_MSS = 576 pkg syscall (darwin-amd64-cgo), const IP_MULTICAST_IF = 9 pkg syscall (darwin-amd64-cgo), const IP_MULTICAST_IFINDEX = 66 pkg syscall (darwin-amd64-cgo), const IP_MULTICAST_LOOP = 11 pkg syscall (darwin-amd64-cgo), const IP_MULTICAST_TTL = 10 pkg syscall (darwin-amd64-cgo), const IP_MULTICAST_VIF = 14 pkg syscall (darwin-amd64-cgo), const IP_NAT__XXX = 55 pkg syscall (darwin-amd64-cgo), const IP_OFFMASK = 8191 pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_ADD = 50 pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_DEL = 51 pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_FLUSH = 52 pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_GET = 54 pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_RESETLOG = 56 pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_ZERO = 53 pkg syscall (darwin-amd64-cgo), const IP_OPTIONS = 1 pkg syscall (darwin-amd64-cgo), const IP_PKTINFO = 26 pkg syscall (darwin-amd64-cgo), const IP_PORTRANGE = 19 pkg syscall (darwin-amd64-cgo), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (darwin-amd64-cgo), const IP_PORTRANGE_HIGH = 1 pkg syscall (darwin-amd64-cgo), const IP_PORTRANGE_LOW = 2 pkg syscall (darwin-amd64-cgo), const IP_RECVDSTADDR = 7 pkg syscall (darwin-amd64-cgo), const IP_RECVIF = 20 pkg syscall (darwin-amd64-cgo), const IP_RECVOPTS = 5 pkg syscall (darwin-amd64-cgo), const IP_RECVPKTINFO = 26 pkg syscall (darwin-amd64-cgo), const IP_RECVRETOPTS = 6 pkg syscall (darwin-amd64-cgo), const IP_RECVTTL = 24 pkg syscall (darwin-amd64-cgo), const IP_RETOPTS = 8 pkg syscall (darwin-amd64-cgo), const IP_RF = 32768 pkg syscall (darwin-amd64-cgo), const IP_RSVP_OFF = 16 pkg syscall (darwin-amd64-cgo), const IP_RSVP_ON = 15 pkg syscall (darwin-amd64-cgo), const IP_RSVP_VIF_OFF = 18 pkg syscall (darwin-amd64-cgo), const IP_RSVP_VIF_ON = 17 pkg syscall (darwin-amd64-cgo), const IP_STRIPHDR = 23 pkg syscall (darwin-amd64-cgo), const IP_TOS = 3 pkg syscall (darwin-amd64-cgo), const IP_TRAFFIC_MGT_BACKGROUND = 65 pkg syscall (darwin-amd64-cgo), const IP_TTL = 4 pkg syscall (darwin-amd64-cgo), const IP_UNBLOCK_SOURCE = 73 pkg syscall (darwin-amd64-cgo), const ISIG = 128 pkg syscall (darwin-amd64-cgo), const ISIG ideal-int pkg syscall (darwin-amd64-cgo), const ISTRIP = 32 pkg syscall (darwin-amd64-cgo), const ISTRIP ideal-int pkg syscall (darwin-amd64-cgo), const IUTF8 = 16384 pkg syscall (darwin-amd64-cgo), const IUTF8 ideal-int pkg syscall (darwin-amd64-cgo), const IXANY = 2048 pkg syscall (darwin-amd64-cgo), const IXANY ideal-int pkg syscall (darwin-amd64-cgo), const IXOFF = 1024 pkg syscall (darwin-amd64-cgo), const IXOFF ideal-int pkg syscall (darwin-amd64-cgo), const IXON = 512 pkg syscall (darwin-amd64-cgo), const IXON ideal-int pkg syscall (darwin-amd64-cgo), const ImplementsGetwd = false pkg syscall (darwin-amd64-cgo), const LOCK_EX = 2 pkg syscall (darwin-amd64-cgo), const LOCK_NB = 4 pkg syscall (darwin-amd64-cgo), const LOCK_SH = 1 pkg syscall (darwin-amd64-cgo), const LOCK_UN = 8 pkg syscall (darwin-amd64-cgo), const MADV_CAN_REUSE = 9 pkg syscall (darwin-amd64-cgo), const MADV_DONTNEED = 4 pkg syscall (darwin-amd64-cgo), const MADV_FREE = 5 pkg syscall (darwin-amd64-cgo), const MADV_FREE_REUSABLE = 7 pkg syscall (darwin-amd64-cgo), const MADV_FREE_REUSE = 8 pkg syscall (darwin-amd64-cgo), const MADV_NORMAL = 0 pkg syscall (darwin-amd64-cgo), const MADV_RANDOM = 1 pkg syscall (darwin-amd64-cgo), const MADV_SEQUENTIAL = 2 pkg syscall (darwin-amd64-cgo), const MADV_WILLNEED = 3 pkg syscall (darwin-amd64-cgo), const MADV_ZERO_WIRED_PAGES = 6 pkg syscall (darwin-amd64-cgo), const MAP_ANON = 4096 pkg syscall (darwin-amd64-cgo), const MAP_COPY = 2 pkg syscall (darwin-amd64-cgo), const MAP_FILE = 0 pkg syscall (darwin-amd64-cgo), const MAP_FIXED = 16 pkg syscall (darwin-amd64-cgo), const MAP_HASSEMAPHORE = 512 pkg syscall (darwin-amd64-cgo), const MAP_JIT = 2048 pkg syscall (darwin-amd64-cgo), const MAP_NOCACHE = 1024 pkg syscall (darwin-amd64-cgo), const MAP_NOEXTEND = 256 pkg syscall (darwin-amd64-cgo), const MAP_NORESERVE = 64 pkg syscall (darwin-amd64-cgo), const MAP_PRIVATE = 2 pkg syscall (darwin-amd64-cgo), const MAP_RENAME = 32 pkg syscall (darwin-amd64-cgo), const MAP_RESERVED0080 = 128 pkg syscall (darwin-amd64-cgo), const MAP_SHARED = 1 pkg syscall (darwin-amd64-cgo), const MCL_CURRENT = 1 pkg syscall (darwin-amd64-cgo), const MCL_FUTURE = 2 pkg syscall (darwin-amd64-cgo), const MSG_CTRUNC = 32 pkg syscall (darwin-amd64-cgo), const MSG_DONTROUTE = 4 pkg syscall (darwin-amd64-cgo), const MSG_DONTWAIT = 128 pkg syscall (darwin-amd64-cgo), const MSG_EOF = 256 pkg syscall (darwin-amd64-cgo), const MSG_EOR = 8 pkg syscall (darwin-amd64-cgo), const MSG_FLUSH = 1024 pkg syscall (darwin-amd64-cgo), const MSG_HAVEMORE = 8192 pkg syscall (darwin-amd64-cgo), const MSG_HOLD = 2048 pkg syscall (darwin-amd64-cgo), const MSG_NEEDSA = 65536 pkg syscall (darwin-amd64-cgo), const MSG_OOB = 1 pkg syscall (darwin-amd64-cgo), const MSG_PEEK = 2 pkg syscall (darwin-amd64-cgo), const MSG_RCVMORE = 16384 pkg syscall (darwin-amd64-cgo), const MSG_SEND = 4096 pkg syscall (darwin-amd64-cgo), const MSG_TRUNC = 16 pkg syscall (darwin-amd64-cgo), const MSG_WAITALL = 64 pkg syscall (darwin-amd64-cgo), const MSG_WAITSTREAM = 512 pkg syscall (darwin-amd64-cgo), const MS_ASYNC = 1 pkg syscall (darwin-amd64-cgo), const MS_DEACTIVATE = 8 pkg syscall (darwin-amd64-cgo), const MS_INVALIDATE = 2 pkg syscall (darwin-amd64-cgo), const MS_KILLPAGES = 4 pkg syscall (darwin-amd64-cgo), const MS_SYNC = 16 pkg syscall (darwin-amd64-cgo), const NAME_MAX = 255 pkg syscall (darwin-amd64-cgo), const NET_RT_DUMP = 1 pkg syscall (darwin-amd64-cgo), const NET_RT_DUMP2 = 7 pkg syscall (darwin-amd64-cgo), const NET_RT_FLAGS = 2 pkg syscall (darwin-amd64-cgo), const NET_RT_IFLIST = 3 pkg syscall (darwin-amd64-cgo), const NET_RT_IFLIST2 = 6 pkg syscall (darwin-amd64-cgo), const NET_RT_MAXID = 10 pkg syscall (darwin-amd64-cgo), const NET_RT_STAT = 4 pkg syscall (darwin-amd64-cgo), const NET_RT_TRASH = 5 pkg syscall (darwin-amd64-cgo), const NOFLSH = 2147483648 pkg syscall (darwin-amd64-cgo), const NOFLSH ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_ABSOLUTE = 8 pkg syscall (darwin-amd64-cgo), const NOTE_ATTRIB = 8 pkg syscall (darwin-amd64-cgo), const NOTE_CHILD = 4 pkg syscall (darwin-amd64-cgo), const NOTE_DELETE = 1 pkg syscall (darwin-amd64-cgo), const NOTE_EXEC = 536870912 pkg syscall (darwin-amd64-cgo), const NOTE_EXIT = 2147483648 pkg syscall (darwin-amd64-cgo), const NOTE_EXITSTATUS = 67108864 pkg syscall (darwin-amd64-cgo), const NOTE_EXTEND = 4 pkg syscall (darwin-amd64-cgo), const NOTE_FFAND = 1073741824 pkg syscall (darwin-amd64-cgo), const NOTE_FFCOPY = 3221225472 pkg syscall (darwin-amd64-cgo), const NOTE_FFCTRLMASK = 3221225472 pkg syscall (darwin-amd64-cgo), const NOTE_FFLAGSMASK = 16777215 pkg syscall (darwin-amd64-cgo), const NOTE_FFNOP = 0 pkg syscall (darwin-amd64-cgo), const NOTE_FFOR = 2147483648 pkg syscall (darwin-amd64-cgo), const NOTE_FORK = 1073741824 pkg syscall (darwin-amd64-cgo), const NOTE_LINK = 16 pkg syscall (darwin-amd64-cgo), const NOTE_LOWAT = 1 pkg syscall (darwin-amd64-cgo), const NOTE_NONE = 128 pkg syscall (darwin-amd64-cgo), const NOTE_NSECONDS = 4 pkg syscall (darwin-amd64-cgo), const NOTE_PCTRLMASK = -1048576 pkg syscall (darwin-amd64-cgo), const NOTE_PDATAMASK = 1048575 pkg syscall (darwin-amd64-cgo), const NOTE_REAP = 268435456 pkg syscall (darwin-amd64-cgo), const NOTE_RENAME = 32 pkg syscall (darwin-amd64-cgo), const NOTE_RESOURCEEND = 33554432 pkg syscall (darwin-amd64-cgo), const NOTE_REVOKE = 64 pkg syscall (darwin-amd64-cgo), const NOTE_SECONDS = 1 pkg syscall (darwin-amd64-cgo), const NOTE_SIGNAL = 134217728 pkg syscall (darwin-amd64-cgo), const NOTE_TRACK = 1 pkg syscall (darwin-amd64-cgo), const NOTE_TRACKERR = 2 pkg syscall (darwin-amd64-cgo), const NOTE_TRIGGER = 16777216 pkg syscall (darwin-amd64-cgo), const NOTE_USECONDS = 2 pkg syscall (darwin-amd64-cgo), const NOTE_VM_ERROR = 268435456 pkg syscall (darwin-amd64-cgo), const NOTE_VM_PRESSURE = 2147483648 pkg syscall (darwin-amd64-cgo), const NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 536870912 pkg syscall (darwin-amd64-cgo), const NOTE_VM_PRESSURE_TERMINATE = 1073741824 pkg syscall (darwin-amd64-cgo), const NOTE_WRITE = 2 pkg syscall (darwin-amd64-cgo), const OCRNL = 16 pkg syscall (darwin-amd64-cgo), const OCRNL ideal-int pkg syscall (darwin-amd64-cgo), const OFDEL = 131072 pkg syscall (darwin-amd64-cgo), const OFDEL ideal-int pkg syscall (darwin-amd64-cgo), const OFILL = 128 pkg syscall (darwin-amd64-cgo), const OFILL ideal-int pkg syscall (darwin-amd64-cgo), const ONLCR = 2 pkg syscall (darwin-amd64-cgo), const ONLCR ideal-int pkg syscall (darwin-amd64-cgo), const ONLRET = 64 pkg syscall (darwin-amd64-cgo), const ONLRET ideal-int pkg syscall (darwin-amd64-cgo), const ONOCR = 32 pkg syscall (darwin-amd64-cgo), const ONOCR ideal-int pkg syscall (darwin-amd64-cgo), const ONOEOT = 8 pkg syscall (darwin-amd64-cgo), const ONOEOT ideal-int pkg syscall (darwin-amd64-cgo), const OPOST = 1 pkg syscall (darwin-amd64-cgo), const OPOST ideal-int pkg syscall (darwin-amd64-cgo), const O_ACCMODE = 3 pkg syscall (darwin-amd64-cgo), const O_ALERT = 536870912 pkg syscall (darwin-amd64-cgo), const O_APPEND = 8 pkg syscall (darwin-amd64-cgo), const O_ASYNC = 64 pkg syscall (darwin-amd64-cgo), const O_CLOEXEC = 16777216 pkg syscall (darwin-amd64-cgo), const O_CREAT = 512 pkg syscall (darwin-amd64-cgo), const O_DIRECTORY = 1048576 pkg syscall (darwin-amd64-cgo), const O_DSYNC = 4194304 pkg syscall (darwin-amd64-cgo), const O_EVTONLY = 32768 pkg syscall (darwin-amd64-cgo), const O_EXCL = 2048 pkg syscall (darwin-amd64-cgo), const O_EXLOCK = 32 pkg syscall (darwin-amd64-cgo), const O_FSYNC = 128 pkg syscall (darwin-amd64-cgo), const O_NDELAY = 4 pkg syscall (darwin-amd64-cgo), const O_NOCTTY = 131072 pkg syscall (darwin-amd64-cgo), const O_NOFOLLOW = 256 pkg syscall (darwin-amd64-cgo), const O_NONBLOCK = 4 pkg syscall (darwin-amd64-cgo), const O_POPUP = 2147483648 pkg syscall (darwin-amd64-cgo), const O_SHLOCK = 16 pkg syscall (darwin-amd64-cgo), const O_SYMLINK = 2097152 pkg syscall (darwin-amd64-cgo), const O_SYNC = 128 pkg syscall (darwin-amd64-cgo), const O_TRUNC = 1024 pkg syscall (darwin-amd64-cgo), const PARENB = 4096 pkg syscall (darwin-amd64-cgo), const PARENB ideal-int pkg syscall (darwin-amd64-cgo), const PARMRK = 8 pkg syscall (darwin-amd64-cgo), const PARMRK ideal-int pkg syscall (darwin-amd64-cgo), const PARODD = 8192 pkg syscall (darwin-amd64-cgo), const PARODD ideal-int pkg syscall (darwin-amd64-cgo), const PENDIN = 536870912 pkg syscall (darwin-amd64-cgo), const PENDIN ideal-int pkg syscall (darwin-amd64-cgo), const PROT_EXEC = 4 pkg syscall (darwin-amd64-cgo), const PROT_NONE = 0 pkg syscall (darwin-amd64-cgo), const PROT_READ = 1 pkg syscall (darwin-amd64-cgo), const PROT_WRITE = 2 pkg syscall (darwin-amd64-cgo), const PTRACE_CONT = 7 pkg syscall (darwin-amd64-cgo), const PTRACE_KILL = 8 pkg syscall (darwin-amd64-cgo), const PTRACE_TRACEME = 0 pkg syscall (darwin-amd64-cgo), const PT_ATTACH = 10 pkg syscall (darwin-amd64-cgo), const PT_ATTACHEXC = 14 pkg syscall (darwin-amd64-cgo), const PT_CONTINUE = 7 pkg syscall (darwin-amd64-cgo), const PT_DENY_ATTACH = 31 pkg syscall (darwin-amd64-cgo), const PT_DETACH = 11 pkg syscall (darwin-amd64-cgo), const PT_FIRSTMACH = 32 pkg syscall (darwin-amd64-cgo), const PT_FORCEQUOTA = 30 pkg syscall (darwin-amd64-cgo), const PT_KILL = 8 pkg syscall (darwin-amd64-cgo), const PT_READ_D = 2 pkg syscall (darwin-amd64-cgo), const PT_READ_I = 1 pkg syscall (darwin-amd64-cgo), const PT_READ_U = 3 pkg syscall (darwin-amd64-cgo), const PT_SIGEXC = 12 pkg syscall (darwin-amd64-cgo), const PT_STEP = 9 pkg syscall (darwin-amd64-cgo), const PT_THUPDATE = 13 pkg syscall (darwin-amd64-cgo), const PT_TRACE_ME = 0 pkg syscall (darwin-amd64-cgo), const PT_WRITE_D = 5 pkg syscall (darwin-amd64-cgo), const PT_WRITE_I = 4 pkg syscall (darwin-amd64-cgo), const PT_WRITE_U = 6 pkg syscall (darwin-amd64-cgo), const RLIMIT_AS = 5 pkg syscall (darwin-amd64-cgo), const RLIMIT_CORE = 4 pkg syscall (darwin-amd64-cgo), const RLIMIT_CPU = 0 pkg syscall (darwin-amd64-cgo), const RLIMIT_DATA = 2 pkg syscall (darwin-amd64-cgo), const RLIMIT_FSIZE = 1 pkg syscall (darwin-amd64-cgo), const RLIMIT_NOFILE = 8 pkg syscall (darwin-amd64-cgo), const RLIMIT_STACK = 3 pkg syscall (darwin-amd64-cgo), const RLIM_INFINITY = 9223372036854775807 pkg syscall (darwin-amd64-cgo), const RTAX_AUTHOR = 6 pkg syscall (darwin-amd64-cgo), const RTAX_BRD = 7 pkg syscall (darwin-amd64-cgo), const RTAX_DST = 0 pkg syscall (darwin-amd64-cgo), const RTAX_GATEWAY = 1 pkg syscall (darwin-amd64-cgo), const RTAX_GENMASK = 3 pkg syscall (darwin-amd64-cgo), const RTAX_IFA = 5 pkg syscall (darwin-amd64-cgo), const RTAX_IFP = 4 pkg syscall (darwin-amd64-cgo), const RTAX_MAX = 8 pkg syscall (darwin-amd64-cgo), const RTAX_NETMASK = 2 pkg syscall (darwin-amd64-cgo), const RTA_AUTHOR = 64 pkg syscall (darwin-amd64-cgo), const RTA_BRD = 128 pkg syscall (darwin-amd64-cgo), const RTA_DST = 1 pkg syscall (darwin-amd64-cgo), const RTA_GATEWAY = 2 pkg syscall (darwin-amd64-cgo), const RTA_GENMASK = 8 pkg syscall (darwin-amd64-cgo), const RTA_IFA = 32 pkg syscall (darwin-amd64-cgo), const RTA_IFP = 16 pkg syscall (darwin-amd64-cgo), const RTA_NETMASK = 4 pkg syscall (darwin-amd64-cgo), const RTF_BLACKHOLE = 4096 pkg syscall (darwin-amd64-cgo), const RTF_BROADCAST = 4194304 pkg syscall (darwin-amd64-cgo), const RTF_CLONING = 256 pkg syscall (darwin-amd64-cgo), const RTF_CONDEMNED = 33554432 pkg syscall (darwin-amd64-cgo), const RTF_DELCLONE = 128 pkg syscall (darwin-amd64-cgo), const RTF_DONE = 64 pkg syscall (darwin-amd64-cgo), const RTF_DYNAMIC = 16 pkg syscall (darwin-amd64-cgo), const RTF_GATEWAY = 2 pkg syscall (darwin-amd64-cgo), const RTF_HOST = 4 pkg syscall (darwin-amd64-cgo), const RTF_IFREF = 67108864 pkg syscall (darwin-amd64-cgo), const RTF_IFSCOPE = 16777216 pkg syscall (darwin-amd64-cgo), const RTF_LLINFO = 1024 pkg syscall (darwin-amd64-cgo), const RTF_LOCAL = 2097152 pkg syscall (darwin-amd64-cgo), const RTF_MODIFIED = 32 pkg syscall (darwin-amd64-cgo), const RTF_MULTICAST = 8388608 pkg syscall (darwin-amd64-cgo), const RTF_PINNED = 1048576 pkg syscall (darwin-amd64-cgo), const RTF_PRCLONING = 65536 pkg syscall (darwin-amd64-cgo), const RTF_PROTO1 = 32768 pkg syscall (darwin-amd64-cgo), const RTF_PROTO2 = 16384 pkg syscall (darwin-amd64-cgo), const RTF_PROTO3 = 262144 pkg syscall (darwin-amd64-cgo), const RTF_REJECT = 8 pkg syscall (darwin-amd64-cgo), const RTF_STATIC = 2048 pkg syscall (darwin-amd64-cgo), const RTF_UP = 1 pkg syscall (darwin-amd64-cgo), const RTF_WASCLONED = 131072 pkg syscall (darwin-amd64-cgo), const RTF_XRESOLVE = 512 pkg syscall (darwin-amd64-cgo), const RTM_ADD = 1 pkg syscall (darwin-amd64-cgo), const RTM_CHANGE = 3 pkg syscall (darwin-amd64-cgo), const RTM_DELADDR = 13 pkg syscall (darwin-amd64-cgo), const RTM_DELETE = 2 pkg syscall (darwin-amd64-cgo), const RTM_DELMADDR = 16 pkg syscall (darwin-amd64-cgo), const RTM_GET = 4 pkg syscall (darwin-amd64-cgo), const RTM_GET2 = 20 pkg syscall (darwin-amd64-cgo), const RTM_IFINFO = 14 pkg syscall (darwin-amd64-cgo), const RTM_IFINFO2 = 18 pkg syscall (darwin-amd64-cgo), const RTM_LOCK = 8 pkg syscall (darwin-amd64-cgo), const RTM_LOSING = 5 pkg syscall (darwin-amd64-cgo), const RTM_MISS = 7 pkg syscall (darwin-amd64-cgo), const RTM_NEWADDR = 12 pkg syscall (darwin-amd64-cgo), const RTM_NEWMADDR = 15 pkg syscall (darwin-amd64-cgo), const RTM_NEWMADDR2 = 19 pkg syscall (darwin-amd64-cgo), const RTM_OLDADD = 9 pkg syscall (darwin-amd64-cgo), const RTM_OLDDEL = 10 pkg syscall (darwin-amd64-cgo), const RTM_REDIRECT = 6 pkg syscall (darwin-amd64-cgo), const RTM_RESOLVE = 11 pkg syscall (darwin-amd64-cgo), const RTM_RTTUNIT = 1000000 pkg syscall (darwin-amd64-cgo), const RTM_VERSION = 5 pkg syscall (darwin-amd64-cgo), const RTV_EXPIRE = 4 pkg syscall (darwin-amd64-cgo), const RTV_HOPCOUNT = 2 pkg syscall (darwin-amd64-cgo), const RTV_MTU = 1 pkg syscall (darwin-amd64-cgo), const RTV_RPIPE = 8 pkg syscall (darwin-amd64-cgo), const RTV_RTT = 64 pkg syscall (darwin-amd64-cgo), const RTV_RTTVAR = 128 pkg syscall (darwin-amd64-cgo), const RTV_SPIPE = 16 pkg syscall (darwin-amd64-cgo), const RTV_SSTHRESH = 32 pkg syscall (darwin-amd64-cgo), const RUSAGE_CHILDREN = -1 pkg syscall (darwin-amd64-cgo), const RUSAGE_SELF = 0 pkg syscall (darwin-amd64-cgo), const SCM_CREDS = 3 pkg syscall (darwin-amd64-cgo), const SCM_RIGHTS = 1 pkg syscall (darwin-amd64-cgo), const SCM_TIMESTAMP = 2 pkg syscall (darwin-amd64-cgo), const SCM_TIMESTAMP_MONOTONIC = 4 pkg syscall (darwin-amd64-cgo), const SIGBUS = 10 pkg syscall (darwin-amd64-cgo), const SIGCHLD = 20 pkg syscall (darwin-amd64-cgo), const SIGCONT = 19 pkg syscall (darwin-amd64-cgo), const SIGEMT = 7 pkg syscall (darwin-amd64-cgo), const SIGINFO = 29 pkg syscall (darwin-amd64-cgo), const SIGIO = 23 pkg syscall (darwin-amd64-cgo), const SIGIOT = 6 pkg syscall (darwin-amd64-cgo), const SIGPROF = 27 pkg syscall (darwin-amd64-cgo), const SIGSTOP = 17 pkg syscall (darwin-amd64-cgo), const SIGSYS = 12 pkg syscall (darwin-amd64-cgo), const SIGTSTP = 18 pkg syscall (darwin-amd64-cgo), const SIGTTIN = 21 pkg syscall (darwin-amd64-cgo), const SIGTTOU = 22 pkg syscall (darwin-amd64-cgo), const SIGURG = 16 pkg syscall (darwin-amd64-cgo), const SIGUSR1 = 30 pkg syscall (darwin-amd64-cgo), const SIGUSR2 = 31 pkg syscall (darwin-amd64-cgo), const SIGVTALRM = 26 pkg syscall (darwin-amd64-cgo), const SIGWINCH = 28 pkg syscall (darwin-amd64-cgo), const SIGXCPU = 24 pkg syscall (darwin-amd64-cgo), const SIGXFSZ = 25 pkg syscall (darwin-amd64-cgo), const SIOCADDMULTI = 2149607729 pkg syscall (darwin-amd64-cgo), const SIOCAIFADDR = 2151704858 pkg syscall (darwin-amd64-cgo), const SIOCALIFADDR = 2165860637 pkg syscall (darwin-amd64-cgo), const SIOCARPIPLL = 3223349544 pkg syscall (darwin-amd64-cgo), const SIOCATMARK = 1074033415 pkg syscall (darwin-amd64-cgo), const SIOCAUTOADDR = 3223349542 pkg syscall (darwin-amd64-cgo), const SIOCAUTONETMASK = 2149607719 pkg syscall (darwin-amd64-cgo), const SIOCDELMULTI = 2149607730 pkg syscall (darwin-amd64-cgo), const SIOCDIFADDR = 2149607705 pkg syscall (darwin-amd64-cgo), const SIOCDIFPHYADDR = 2149607745 pkg syscall (darwin-amd64-cgo), const SIOCDLIFADDR = 2165860639 pkg syscall (darwin-amd64-cgo), const SIOCGDRVSPEC = 3223873915 pkg syscall (darwin-amd64-cgo), const SIOCGETSGCNT = 3222565404 pkg syscall (darwin-amd64-cgo), const SIOCGETVIFCNT = 3222565403 pkg syscall (darwin-amd64-cgo), const SIOCGETVLAN = 3223349631 pkg syscall (darwin-amd64-cgo), const SIOCGHIWAT = 1074033409 pkg syscall (darwin-amd64-cgo), const SIOCGIFADDR = 3223349537 pkg syscall (darwin-amd64-cgo), const SIOCGIFALTMTU = 3223349576 pkg syscall (darwin-amd64-cgo), const SIOCGIFASYNCMAP = 3223349628 pkg syscall (darwin-amd64-cgo), const SIOCGIFBOND = 3223349575 pkg syscall (darwin-amd64-cgo), const SIOCGIFBRDADDR = 3223349539 pkg syscall (darwin-amd64-cgo), const SIOCGIFCAP = 3223349595 pkg syscall (darwin-amd64-cgo), const SIOCGIFCONF = 3222038820 pkg syscall (darwin-amd64-cgo), const SIOCGIFDEVMTU = 3223349572 pkg syscall (darwin-amd64-cgo), const SIOCGIFDSTADDR = 3223349538 pkg syscall (darwin-amd64-cgo), const SIOCGIFFLAGS = 3223349521 pkg syscall (darwin-amd64-cgo), const SIOCGIFGENERIC = 3223349562 pkg syscall (darwin-amd64-cgo), const SIOCGIFKPI = 3223349639 pkg syscall (darwin-amd64-cgo), const SIOCGIFMAC = 3223349634 pkg syscall (darwin-amd64-cgo), const SIOCGIFMEDIA = 3224135992 pkg syscall (darwin-amd64-cgo), const SIOCGIFMETRIC = 3223349527 pkg syscall (darwin-amd64-cgo), const SIOCGIFMTU = 3223349555 pkg syscall (darwin-amd64-cgo), const SIOCGIFNETMASK = 3223349541 pkg syscall (darwin-amd64-cgo), const SIOCGIFPDSTADDR = 3223349568 pkg syscall (darwin-amd64-cgo), const SIOCGIFPHYS = 3223349557 pkg syscall (darwin-amd64-cgo), const SIOCGIFPSRCADDR = 3223349567 pkg syscall (darwin-amd64-cgo), const SIOCGIFSTATUS = 3274795325 pkg syscall (darwin-amd64-cgo), const SIOCGIFVLAN = 3223349631 pkg syscall (darwin-amd64-cgo), const SIOCGIFWAKEFLAGS = 3223349640 pkg syscall (darwin-amd64-cgo), const SIOCGLIFADDR = 3239602462 pkg syscall (darwin-amd64-cgo), const SIOCGLIFPHYADDR = 3239602499 pkg syscall (darwin-amd64-cgo), const SIOCGLOWAT = 1074033411 pkg syscall (darwin-amd64-cgo), const SIOCGPGRP = 1074033417 pkg syscall (darwin-amd64-cgo), const SIOCIFCREATE = 3223349624 pkg syscall (darwin-amd64-cgo), const SIOCIFCREATE2 = 3223349626 pkg syscall (darwin-amd64-cgo), const SIOCIFDESTROY = 2149607801 pkg syscall (darwin-amd64-cgo), const SIOCRSLVMULTI = 3222300987 pkg syscall (darwin-amd64-cgo), const SIOCSDRVSPEC = 2150132091 pkg syscall (darwin-amd64-cgo), const SIOCSETVLAN = 2149607806 pkg syscall (darwin-amd64-cgo), const SIOCSHIWAT = 2147775232 pkg syscall (darwin-amd64-cgo), const SIOCSIFADDR = 2149607692 pkg syscall (darwin-amd64-cgo), const SIOCSIFALTMTU = 2149607749 pkg syscall (darwin-amd64-cgo), const SIOCSIFASYNCMAP = 2149607805 pkg syscall (darwin-amd64-cgo), const SIOCSIFBOND = 2149607750 pkg syscall (darwin-amd64-cgo), const SIOCSIFBRDADDR = 2149607699 pkg syscall (darwin-amd64-cgo), const SIOCSIFCAP = 2149607770 pkg syscall (darwin-amd64-cgo), const SIOCSIFDSTADDR = 2149607694 pkg syscall (darwin-amd64-cgo), const SIOCSIFFLAGS = 2149607696 pkg syscall (darwin-amd64-cgo), const SIOCSIFGENERIC = 2149607737 pkg syscall (darwin-amd64-cgo), const SIOCSIFKPI = 2149607814 pkg syscall (darwin-amd64-cgo), const SIOCSIFLLADDR = 2149607740 pkg syscall (darwin-amd64-cgo), const SIOCSIFMAC = 2149607811 pkg syscall (darwin-amd64-cgo), const SIOCSIFMEDIA = 3223349559 pkg syscall (darwin-amd64-cgo), const SIOCSIFMETRIC = 2149607704 pkg syscall (darwin-amd64-cgo), const SIOCSIFMTU = 2149607732 pkg syscall (darwin-amd64-cgo), const SIOCSIFNETMASK = 2149607702 pkg syscall (darwin-amd64-cgo), const SIOCSIFPHYADDR = 2151704894 pkg syscall (darwin-amd64-cgo), const SIOCSIFPHYS = 2149607734 pkg syscall (darwin-amd64-cgo), const SIOCSIFVLAN = 2149607806 pkg syscall (darwin-amd64-cgo), const SIOCSLIFPHYADDR = 2165860674 pkg syscall (darwin-amd64-cgo), const SIOCSLOWAT = 2147775234 pkg syscall (darwin-amd64-cgo), const SIOCSPGRP = 2147775240 pkg syscall (darwin-amd64-cgo), const SOCK_MAXADDRLEN = 255 pkg syscall (darwin-amd64-cgo), const SOCK_RDM = 4 pkg syscall (darwin-amd64-cgo), const SOL_SOCKET = 65535 pkg syscall (darwin-amd64-cgo), const SOMAXCONN = 128 pkg syscall (darwin-amd64-cgo), const SO_ACCEPTCONN = 2 pkg syscall (darwin-amd64-cgo), const SO_BROADCAST = 32 pkg syscall (darwin-amd64-cgo), const SO_DEBUG = 1 pkg syscall (darwin-amd64-cgo), const SO_DONTROUTE = 16 pkg syscall (darwin-amd64-cgo), const SO_DONTTRUNC = 8192 pkg syscall (darwin-amd64-cgo), const SO_ERROR = 4103 pkg syscall (darwin-amd64-cgo), const SO_KEEPALIVE = 8 pkg syscall (darwin-amd64-cgo), const SO_LABEL = 4112 pkg syscall (darwin-amd64-cgo), const SO_LINGER = 128 pkg syscall (darwin-amd64-cgo), const SO_LINGER_SEC = 4224 pkg syscall (darwin-amd64-cgo), const SO_NKE = 4129 pkg syscall (darwin-amd64-cgo), const SO_NOADDRERR = 4131 pkg syscall (darwin-amd64-cgo), const SO_NOSIGPIPE = 4130 pkg syscall (darwin-amd64-cgo), const SO_NOTIFYCONFLICT = 4134 pkg syscall (darwin-amd64-cgo), const SO_NP_EXTENSIONS = 4227 pkg syscall (darwin-amd64-cgo), const SO_NREAD = 4128 pkg syscall (darwin-amd64-cgo), const SO_NWRITE = 4132 pkg syscall (darwin-amd64-cgo), const SO_OOBINLINE = 256 pkg syscall (darwin-amd64-cgo), const SO_PEERLABEL = 4113 pkg syscall (darwin-amd64-cgo), const SO_RANDOMPORT = 4226 pkg syscall (darwin-amd64-cgo), const SO_RCVBUF = 4098 pkg syscall (darwin-amd64-cgo), const SO_RCVLOWAT = 4100 pkg syscall (darwin-amd64-cgo), const SO_RCVTIMEO = 4102 pkg syscall (darwin-amd64-cgo), const SO_RESTRICTIONS = 4225 pkg syscall (darwin-amd64-cgo), const SO_RESTRICT_DENYIN = 1 pkg syscall (darwin-amd64-cgo), const SO_RESTRICT_DENYOUT = 2 pkg syscall (darwin-amd64-cgo), const SO_RESTRICT_DENYSET = 2147483648 pkg syscall (darwin-amd64-cgo), const SO_REUSEADDR = 4 pkg syscall (darwin-amd64-cgo), const SO_REUSEPORT = 512 pkg syscall (darwin-amd64-cgo), const SO_REUSESHAREUID = 4133 pkg syscall (darwin-amd64-cgo), const SO_SNDBUF = 4097 pkg syscall (darwin-amd64-cgo), const SO_SNDLOWAT = 4099 pkg syscall (darwin-amd64-cgo), const SO_SNDTIMEO = 4101 pkg syscall (darwin-amd64-cgo), const SO_TIMESTAMP = 1024 pkg syscall (darwin-amd64-cgo), const SO_TIMESTAMP_MONOTONIC = 2048 pkg syscall (darwin-amd64-cgo), const SO_TYPE = 4104 pkg syscall (darwin-amd64-cgo), const SO_UPCALLCLOSEWAIT = 4135 pkg syscall (darwin-amd64-cgo), const SO_USELOOPBACK = 64 pkg syscall (darwin-amd64-cgo), const SO_WANTMORE = 16384 pkg syscall (darwin-amd64-cgo), const SO_WANTOOBFLAG = 32768 pkg syscall (darwin-amd64-cgo), const SYS_ACCEPT = 30 pkg syscall (darwin-amd64-cgo), const SYS_ACCEPT_NOCANCEL = 404 pkg syscall (darwin-amd64-cgo), const SYS_ACCESS = 33 pkg syscall (darwin-amd64-cgo), const SYS_ACCESS_EXTENDED = 284 pkg syscall (darwin-amd64-cgo), const SYS_ACCT = 51 pkg syscall (darwin-amd64-cgo), const SYS_ADD_PROFIL = 176 pkg syscall (darwin-amd64-cgo), const SYS_ADJTIME = 140 pkg syscall (darwin-amd64-cgo), const SYS_AIO_CANCEL = 316 pkg syscall (darwin-amd64-cgo), const SYS_AIO_ERROR = 317 pkg syscall (darwin-amd64-cgo), const SYS_AIO_FSYNC = 313 pkg syscall (darwin-amd64-cgo), const SYS_AIO_READ = 318 pkg syscall (darwin-amd64-cgo), const SYS_AIO_RETURN = 314 pkg syscall (darwin-amd64-cgo), const SYS_AIO_SUSPEND = 315 pkg syscall (darwin-amd64-cgo), const SYS_AIO_SUSPEND_NOCANCEL = 421 pkg syscall (darwin-amd64-cgo), const SYS_AIO_WRITE = 319 pkg syscall (darwin-amd64-cgo), const SYS_ATGETMSG = 207 pkg syscall (darwin-amd64-cgo), const SYS_ATPGETREQ = 211 pkg syscall (darwin-amd64-cgo), const SYS_ATPGETRSP = 212 pkg syscall (darwin-amd64-cgo), const SYS_ATPSNDREQ = 209 pkg syscall (darwin-amd64-cgo), const SYS_ATPSNDRSP = 210 pkg syscall (darwin-amd64-cgo), const SYS_ATPUTMSG = 208 pkg syscall (darwin-amd64-cgo), const SYS_ATSOCKET = 206 pkg syscall (darwin-amd64-cgo), const SYS_AUDIT = 350 pkg syscall (darwin-amd64-cgo), const SYS_AUDITCTL = 359 pkg syscall (darwin-amd64-cgo), const SYS_AUDITON = 351 pkg syscall (darwin-amd64-cgo), const SYS_AUDIT_SESSION_JOIN = 429 pkg syscall (darwin-amd64-cgo), const SYS_AUDIT_SESSION_PORT = 432 pkg syscall (darwin-amd64-cgo), const SYS_AUDIT_SESSION_SELF = 428 pkg syscall (darwin-amd64-cgo), const SYS_BIND = 104 pkg syscall (darwin-amd64-cgo), const SYS_BSDTHREAD_CREATE = 360 pkg syscall (darwin-amd64-cgo), const SYS_BSDTHREAD_REGISTER = 366 pkg syscall (darwin-amd64-cgo), const SYS_BSDTHREAD_TERMINATE = 361 pkg syscall (darwin-amd64-cgo), const SYS_CHDIR = 12 pkg syscall (darwin-amd64-cgo), const SYS_CHFLAGS = 34 pkg syscall (darwin-amd64-cgo), const SYS_CHMOD = 15 pkg syscall (darwin-amd64-cgo), const SYS_CHMOD_EXTENDED = 282 pkg syscall (darwin-amd64-cgo), const SYS_CHOWN = 16 pkg syscall (darwin-amd64-cgo), const SYS_CHROOT = 61 pkg syscall (darwin-amd64-cgo), const SYS_CHUD = 185 pkg syscall (darwin-amd64-cgo), const SYS_CLOSE = 6 pkg syscall (darwin-amd64-cgo), const SYS_CLOSE_NOCANCEL = 399 pkg syscall (darwin-amd64-cgo), const SYS_CONNECT = 98 pkg syscall (darwin-amd64-cgo), const SYS_CONNECT_NOCANCEL = 409 pkg syscall (darwin-amd64-cgo), const SYS_COPYFILE = 227 pkg syscall (darwin-amd64-cgo), const SYS_CSOPS = 169 pkg syscall (darwin-amd64-cgo), const SYS_DELETE = 226 pkg syscall (darwin-amd64-cgo), const SYS_DUP = 41 pkg syscall (darwin-amd64-cgo), const SYS_DUP2 = 90 pkg syscall (darwin-amd64-cgo), const SYS_EXCHANGEDATA = 223 pkg syscall (darwin-amd64-cgo), const SYS_EXECVE = 59 pkg syscall (darwin-amd64-cgo), const SYS_EXIT = 1 pkg syscall (darwin-amd64-cgo), const SYS_FCHDIR = 13 pkg syscall (darwin-amd64-cgo), const SYS_FCHFLAGS = 35 pkg syscall (darwin-amd64-cgo), const SYS_FCHMOD = 124 pkg syscall (darwin-amd64-cgo), const SYS_FCHMOD_EXTENDED = 283 pkg syscall (darwin-amd64-cgo), const SYS_FCHOWN = 123 pkg syscall (darwin-amd64-cgo), const SYS_FCNTL = 92 pkg syscall (darwin-amd64-cgo), const SYS_FCNTL_NOCANCEL = 406 pkg syscall (darwin-amd64-cgo), const SYS_FDATASYNC = 187 pkg syscall (darwin-amd64-cgo), const SYS_FFSCTL = 245 pkg syscall (darwin-amd64-cgo), const SYS_FGETATTRLIST = 228 pkg syscall (darwin-amd64-cgo), const SYS_FGETXATTR = 235 pkg syscall (darwin-amd64-cgo), const SYS_FHOPEN = 248 pkg syscall (darwin-amd64-cgo), const SYS_FILEPORT_MAKEFD = 431 pkg syscall (darwin-amd64-cgo), const SYS_FILEPORT_MAKEPORT = 430 pkg syscall (darwin-amd64-cgo), const SYS_FLISTXATTR = 241 pkg syscall (darwin-amd64-cgo), const SYS_FLOCK = 131 pkg syscall (darwin-amd64-cgo), const SYS_FORK = 2 pkg syscall (darwin-amd64-cgo), const SYS_FPATHCONF = 192 pkg syscall (darwin-amd64-cgo), const SYS_FREMOVEXATTR = 239 pkg syscall (darwin-amd64-cgo), const SYS_FSCTL = 242 pkg syscall (darwin-amd64-cgo), const SYS_FSETATTRLIST = 229 pkg syscall (darwin-amd64-cgo), const SYS_FSETXATTR = 237 pkg syscall (darwin-amd64-cgo), const SYS_FSGETPATH = 427 pkg syscall (darwin-amd64-cgo), const SYS_FSTAT = 189 pkg syscall (darwin-amd64-cgo), const SYS_FSTAT64 = 339 pkg syscall (darwin-amd64-cgo), const SYS_FSTAT64_EXTENDED = 343 pkg syscall (darwin-amd64-cgo), const SYS_FSTATFS = 158 pkg syscall (darwin-amd64-cgo), const SYS_FSTATFS64 = 346 pkg syscall (darwin-amd64-cgo), const SYS_FSTATV = 219 pkg syscall (darwin-amd64-cgo), const SYS_FSTAT_EXTENDED = 281 pkg syscall (darwin-amd64-cgo), const SYS_FSYNC = 95 pkg syscall (darwin-amd64-cgo), const SYS_FSYNC_NOCANCEL = 408 pkg syscall (darwin-amd64-cgo), const SYS_FTRUNCATE = 201 pkg syscall (darwin-amd64-cgo), const SYS_FUTIMES = 139 pkg syscall (darwin-amd64-cgo), const SYS_GETATTRLIST = 220 pkg syscall (darwin-amd64-cgo), const SYS_GETAUDIT = 355 pkg syscall (darwin-amd64-cgo), const SYS_GETAUDIT_ADDR = 357 pkg syscall (darwin-amd64-cgo), const SYS_GETAUID = 353 pkg syscall (darwin-amd64-cgo), const SYS_GETDIRENTRIES = 196 pkg syscall (darwin-amd64-cgo), const SYS_GETDIRENTRIES64 = 344 pkg syscall (darwin-amd64-cgo), const SYS_GETDIRENTRIESATTR = 222 pkg syscall (darwin-amd64-cgo), const SYS_GETDTABLESIZE = 89 pkg syscall (darwin-amd64-cgo), const SYS_GETEGID = 43 pkg syscall (darwin-amd64-cgo), const SYS_GETEUID = 25 pkg syscall (darwin-amd64-cgo), const SYS_GETFH = 161 pkg syscall (darwin-amd64-cgo), const SYS_GETFSSTAT = 18 pkg syscall (darwin-amd64-cgo), const SYS_GETFSSTAT64 = 347 pkg syscall (darwin-amd64-cgo), const SYS_GETGID = 47 pkg syscall (darwin-amd64-cgo), const SYS_GETGROUPS = 79 pkg syscall (darwin-amd64-cgo), const SYS_GETHOSTUUID = 142 pkg syscall (darwin-amd64-cgo), const SYS_GETITIMER = 86 pkg syscall (darwin-amd64-cgo), const SYS_GETLCID = 395 pkg syscall (darwin-amd64-cgo), const SYS_GETLOGIN = 49 pkg syscall (darwin-amd64-cgo), const SYS_GETPEERNAME = 31 pkg syscall (darwin-amd64-cgo), const SYS_GETPGID = 151 pkg syscall (darwin-amd64-cgo), const SYS_GETPGRP = 81 pkg syscall (darwin-amd64-cgo), const SYS_GETPID = 20 pkg syscall (darwin-amd64-cgo), const SYS_GETPPID = 39 pkg syscall (darwin-amd64-cgo), const SYS_GETPRIORITY = 100 pkg syscall (darwin-amd64-cgo), const SYS_GETRLIMIT = 194 pkg syscall (darwin-amd64-cgo), const SYS_GETRUSAGE = 117 pkg syscall (darwin-amd64-cgo), const SYS_GETSGROUPS = 288 pkg syscall (darwin-amd64-cgo), const SYS_GETSID = 310 pkg syscall (darwin-amd64-cgo), const SYS_GETSOCKNAME = 32 pkg syscall (darwin-amd64-cgo), const SYS_GETSOCKOPT = 118 pkg syscall (darwin-amd64-cgo), const SYS_GETTID = 286 pkg syscall (darwin-amd64-cgo), const SYS_GETTIMEOFDAY = 116 pkg syscall (darwin-amd64-cgo), const SYS_GETUID = 24 pkg syscall (darwin-amd64-cgo), const SYS_GETWGROUPS = 290 pkg syscall (darwin-amd64-cgo), const SYS_GETXATTR = 234 pkg syscall (darwin-amd64-cgo), const SYS_IDENTITYSVC = 293 pkg syscall (darwin-amd64-cgo), const SYS_INITGROUPS = 243 pkg syscall (darwin-amd64-cgo), const SYS_IOCTL = 54 pkg syscall (darwin-amd64-cgo), const SYS_IOPOLICYSYS = 322 pkg syscall (darwin-amd64-cgo), const SYS_ISSETUGID = 327 pkg syscall (darwin-amd64-cgo), const SYS_KDEBUG_TRACE = 180 pkg syscall (darwin-amd64-cgo), const SYS_KEVENT = 363 pkg syscall (darwin-amd64-cgo), const SYS_KEVENT64 = 369 pkg syscall (darwin-amd64-cgo), const SYS_KILL = 37 pkg syscall (darwin-amd64-cgo), const SYS_KQUEUE = 362 pkg syscall (darwin-amd64-cgo), const SYS_LCHOWN = 364 pkg syscall (darwin-amd64-cgo), const SYS_LINK = 9 pkg syscall (darwin-amd64-cgo), const SYS_LIO_LISTIO = 320 pkg syscall (darwin-amd64-cgo), const SYS_LISTEN = 106 pkg syscall (darwin-amd64-cgo), const SYS_LISTXATTR = 240 pkg syscall (darwin-amd64-cgo), const SYS_LSEEK = 199 pkg syscall (darwin-amd64-cgo), const SYS_LSTAT = 190 pkg syscall (darwin-amd64-cgo), const SYS_LSTAT64 = 340 pkg syscall (darwin-amd64-cgo), const SYS_LSTAT64_EXTENDED = 342 pkg syscall (darwin-amd64-cgo), const SYS_LSTATV = 218 pkg syscall (darwin-amd64-cgo), const SYS_LSTAT_EXTENDED = 280 pkg syscall (darwin-amd64-cgo), const SYS_MADVISE = 75 pkg syscall (darwin-amd64-cgo), const SYS_MAXSYSCALL = 439 pkg syscall (darwin-amd64-cgo), const SYS_MINCORE = 78 pkg syscall (darwin-amd64-cgo), const SYS_MINHERIT = 250 pkg syscall (darwin-amd64-cgo), const SYS_MKCOMPLEX = 216 pkg syscall (darwin-amd64-cgo), const SYS_MKDIR = 136 pkg syscall (darwin-amd64-cgo), const SYS_MKDIR_EXTENDED = 292 pkg syscall (darwin-amd64-cgo), const SYS_MKFIFO = 132 pkg syscall (darwin-amd64-cgo), const SYS_MKFIFO_EXTENDED = 291 pkg syscall (darwin-amd64-cgo), const SYS_MKNOD = 14 pkg syscall (darwin-amd64-cgo), const SYS_MLOCK = 203 pkg syscall (darwin-amd64-cgo), const SYS_MLOCKALL = 324 pkg syscall (darwin-amd64-cgo), const SYS_MMAP = 197 pkg syscall (darwin-amd64-cgo), const SYS_MODWATCH = 233 pkg syscall (darwin-amd64-cgo), const SYS_MOUNT = 167 pkg syscall (darwin-amd64-cgo), const SYS_MPROTECT = 74 pkg syscall (darwin-amd64-cgo), const SYS_MSGCTL = 258 pkg syscall (darwin-amd64-cgo), const SYS_MSGGET = 259 pkg syscall (darwin-amd64-cgo), const SYS_MSGRCV = 261 pkg syscall (darwin-amd64-cgo), const SYS_MSGRCV_NOCANCEL = 419 pkg syscall (darwin-amd64-cgo), const SYS_MSGSND = 260 pkg syscall (darwin-amd64-cgo), const SYS_MSGSND_NOCANCEL = 418 pkg syscall (darwin-amd64-cgo), const SYS_MSGSYS = 252 pkg syscall (darwin-amd64-cgo), const SYS_MSYNC = 65 pkg syscall (darwin-amd64-cgo), const SYS_MSYNC_NOCANCEL = 405 pkg syscall (darwin-amd64-cgo), const SYS_MUNLOCK = 204 pkg syscall (darwin-amd64-cgo), const SYS_MUNLOCKALL = 325 pkg syscall (darwin-amd64-cgo), const SYS_MUNMAP = 73 pkg syscall (darwin-amd64-cgo), const SYS_NFSCLNT = 247 pkg syscall (darwin-amd64-cgo), const SYS_NFSSVC = 155 pkg syscall (darwin-amd64-cgo), const SYS_OPEN = 5 pkg syscall (darwin-amd64-cgo), const SYS_OPEN_EXTENDED = 277 pkg syscall (darwin-amd64-cgo), const SYS_OPEN_NOCANCEL = 398 pkg syscall (darwin-amd64-cgo), const SYS_PATHCONF = 191 pkg syscall (darwin-amd64-cgo), const SYS_PID_HIBERNATE = 435 pkg syscall (darwin-amd64-cgo), const SYS_PID_RESUME = 434 pkg syscall (darwin-amd64-cgo), const SYS_PID_SHUTDOWN_SOCKETS = 436 pkg syscall (darwin-amd64-cgo), const SYS_PID_SUSPEND = 433 pkg syscall (darwin-amd64-cgo), const SYS_PIPE = 42 pkg syscall (darwin-amd64-cgo), const SYS_POLL = 230 pkg syscall (darwin-amd64-cgo), const SYS_POLL_NOCANCEL = 417 pkg syscall (darwin-amd64-cgo), const SYS_POSIX_SPAWN = 244 pkg syscall (darwin-amd64-cgo), const SYS_PREAD = 153 pkg syscall (darwin-amd64-cgo), const SYS_PREAD_NOCANCEL = 414 pkg syscall (darwin-amd64-cgo), const SYS_PROCESS_POLICY = 323 pkg syscall (darwin-amd64-cgo), const SYS_PROC_INFO = 336 pkg syscall (darwin-amd64-cgo), const SYS_PROFIL = 44 pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_CVBROAD = 303 pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_CVCLRPREPOST = 312 pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_CVSIGNAL = 304 pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_CVWAIT = 305 pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_MUTEXDROP = 302 pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_MUTEXWAIT = 301 pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_DOWNGRADE = 299 pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_LONGRDLOCK = 297 pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_RDLOCK = 306 pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_UNLOCK = 308 pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_UNLOCK2 = 309 pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_UPGRADE = 300 pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_WRLOCK = 307 pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_YIELDWRLOCK = 298 pkg syscall (darwin-amd64-cgo), const SYS_PTRACE = 26 pkg syscall (darwin-amd64-cgo), const SYS_PWRITE = 154 pkg syscall (darwin-amd64-cgo), const SYS_PWRITE_NOCANCEL = 415 pkg syscall (darwin-amd64-cgo), const SYS_QUOTACTL = 165 pkg syscall (darwin-amd64-cgo), const SYS_READ = 3 pkg syscall (darwin-amd64-cgo), const SYS_READLINK = 58 pkg syscall (darwin-amd64-cgo), const SYS_READV = 120 pkg syscall (darwin-amd64-cgo), const SYS_READV_NOCANCEL = 411 pkg syscall (darwin-amd64-cgo), const SYS_READ_NOCANCEL = 396 pkg syscall (darwin-amd64-cgo), const SYS_REBOOT = 55 pkg syscall (darwin-amd64-cgo), const SYS_RECVFROM = 29 pkg syscall (darwin-amd64-cgo), const SYS_RECVFROM_NOCANCEL = 403 pkg syscall (darwin-amd64-cgo), const SYS_RECVMSG = 27 pkg syscall (darwin-amd64-cgo), const SYS_RECVMSG_NOCANCEL = 401 pkg syscall (darwin-amd64-cgo), const SYS_REMOVEXATTR = 238 pkg syscall (darwin-amd64-cgo), const SYS_RENAME = 128 pkg syscall (darwin-amd64-cgo), const SYS_REVOKE = 56 pkg syscall (darwin-amd64-cgo), const SYS_RMDIR = 137 pkg syscall (darwin-amd64-cgo), const SYS_SEARCHFS = 225 pkg syscall (darwin-amd64-cgo), const SYS_SELECT = 93 pkg syscall (darwin-amd64-cgo), const SYS_SELECT_NOCANCEL = 407 pkg syscall (darwin-amd64-cgo), const SYS_SEMCTL = 254 pkg syscall (darwin-amd64-cgo), const SYS_SEMGET = 255 pkg syscall (darwin-amd64-cgo), const SYS_SEMOP = 256 pkg syscall (darwin-amd64-cgo), const SYS_SEMSYS = 251 pkg syscall (darwin-amd64-cgo), const SYS_SEM_CLOSE = 269 pkg syscall (darwin-amd64-cgo), const SYS_SEM_DESTROY = 276 pkg syscall (darwin-amd64-cgo), const SYS_SEM_GETVALUE = 274 pkg syscall (darwin-amd64-cgo), const SYS_SEM_INIT = 275 pkg syscall (darwin-amd64-cgo), const SYS_SEM_OPEN = 268 pkg syscall (darwin-amd64-cgo), const SYS_SEM_POST = 273 pkg syscall (darwin-amd64-cgo), const SYS_SEM_TRYWAIT = 272 pkg syscall (darwin-amd64-cgo), const SYS_SEM_UNLINK = 270 pkg syscall (darwin-amd64-cgo), const SYS_SEM_WAIT = 271 pkg syscall (darwin-amd64-cgo), const SYS_SEM_WAIT_NOCANCEL = 420 pkg syscall (darwin-amd64-cgo), const SYS_SENDFILE = 337 pkg syscall (darwin-amd64-cgo), const SYS_SENDMSG = 28 pkg syscall (darwin-amd64-cgo), const SYS_SENDMSG_NOCANCEL = 402 pkg syscall (darwin-amd64-cgo), const SYS_SENDTO = 133 pkg syscall (darwin-amd64-cgo), const SYS_SENDTO_NOCANCEL = 413 pkg syscall (darwin-amd64-cgo), const SYS_SETATTRLIST = 221 pkg syscall (darwin-amd64-cgo), const SYS_SETAUDIT = 356 pkg syscall (darwin-amd64-cgo), const SYS_SETAUDIT_ADDR = 358 pkg syscall (darwin-amd64-cgo), const SYS_SETAUID = 354 pkg syscall (darwin-amd64-cgo), const SYS_SETEGID = 182 pkg syscall (darwin-amd64-cgo), const SYS_SETEUID = 183 pkg syscall (darwin-amd64-cgo), const SYS_SETGID = 181 pkg syscall (darwin-amd64-cgo), const SYS_SETGROUPS = 80 pkg syscall (darwin-amd64-cgo), const SYS_SETITIMER = 83 pkg syscall (darwin-amd64-cgo), const SYS_SETLCID = 394 pkg syscall (darwin-amd64-cgo), const SYS_SETLOGIN = 50 pkg syscall (darwin-amd64-cgo), const SYS_SETPGID = 82 pkg syscall (darwin-amd64-cgo), const SYS_SETPRIORITY = 96 pkg syscall (darwin-amd64-cgo), const SYS_SETPRIVEXEC = 152 pkg syscall (darwin-amd64-cgo), const SYS_SETREGID = 127 pkg syscall (darwin-amd64-cgo), const SYS_SETREUID = 126 pkg syscall (darwin-amd64-cgo), const SYS_SETRLIMIT = 195 pkg syscall (darwin-amd64-cgo), const SYS_SETSGROUPS = 287 pkg syscall (darwin-amd64-cgo), const SYS_SETSID = 147 pkg syscall (darwin-amd64-cgo), const SYS_SETSOCKOPT = 105 pkg syscall (darwin-amd64-cgo), const SYS_SETTID = 285 pkg syscall (darwin-amd64-cgo), const SYS_SETTID_WITH_PID = 311 pkg syscall (darwin-amd64-cgo), const SYS_SETTIMEOFDAY = 122 pkg syscall (darwin-amd64-cgo), const SYS_SETUID = 23 pkg syscall (darwin-amd64-cgo), const SYS_SETWGROUPS = 289 pkg syscall (darwin-amd64-cgo), const SYS_SETXATTR = 236 pkg syscall (darwin-amd64-cgo), const SYS_SHARED_REGION_CHECK_NP = 294 pkg syscall (darwin-amd64-cgo), const SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 pkg syscall (darwin-amd64-cgo), const SYS_SHMAT = 262 pkg syscall (darwin-amd64-cgo), const SYS_SHMCTL = 263 pkg syscall (darwin-amd64-cgo), const SYS_SHMDT = 264 pkg syscall (darwin-amd64-cgo), const SYS_SHMGET = 265 pkg syscall (darwin-amd64-cgo), const SYS_SHMSYS = 253 pkg syscall (darwin-amd64-cgo), const SYS_SHM_OPEN = 266 pkg syscall (darwin-amd64-cgo), const SYS_SHM_UNLINK = 267 pkg syscall (darwin-amd64-cgo), const SYS_SHUTDOWN = 134 pkg syscall (darwin-amd64-cgo), const SYS_SIGACTION = 46 pkg syscall (darwin-amd64-cgo), const SYS_SIGALTSTACK = 53 pkg syscall (darwin-amd64-cgo), const SYS_SIGPENDING = 52 pkg syscall (darwin-amd64-cgo), const SYS_SIGPROCMASK = 48 pkg syscall (darwin-amd64-cgo), const SYS_SIGRETURN = 184 pkg syscall (darwin-amd64-cgo), const SYS_SIGSUSPEND = 111 pkg syscall (darwin-amd64-cgo), const SYS_SIGSUSPEND_NOCANCEL = 410 pkg syscall (darwin-amd64-cgo), const SYS_SOCKET = 97 pkg syscall (darwin-amd64-cgo), const SYS_SOCKETPAIR = 135 pkg syscall (darwin-amd64-cgo), const SYS_STACK_SNAPSHOT = 365 pkg syscall (darwin-amd64-cgo), const SYS_STAT = 188 pkg syscall (darwin-amd64-cgo), const SYS_STAT64 = 338 pkg syscall (darwin-amd64-cgo), const SYS_STAT64_EXTENDED = 341 pkg syscall (darwin-amd64-cgo), const SYS_STATFS = 157 pkg syscall (darwin-amd64-cgo), const SYS_STATFS64 = 345 pkg syscall (darwin-amd64-cgo), const SYS_STATV = 217 pkg syscall (darwin-amd64-cgo), const SYS_STAT_EXTENDED = 279 pkg syscall (darwin-amd64-cgo), const SYS_SWAPON = 85 pkg syscall (darwin-amd64-cgo), const SYS_SYMLINK = 57 pkg syscall (darwin-amd64-cgo), const SYS_SYNC = 36 pkg syscall (darwin-amd64-cgo), const SYS_SYSCALL = 0 pkg syscall (darwin-amd64-cgo), const SYS_THREAD_SELFID = 372 pkg syscall (darwin-amd64-cgo), const SYS_TRUNCATE = 200 pkg syscall (darwin-amd64-cgo), const SYS_UMASK = 60 pkg syscall (darwin-amd64-cgo), const SYS_UMASK_EXTENDED = 278 pkg syscall (darwin-amd64-cgo), const SYS_UNDELETE = 205 pkg syscall (darwin-amd64-cgo), const SYS_UNLINK = 10 pkg syscall (darwin-amd64-cgo), const SYS_UNMOUNT = 159 pkg syscall (darwin-amd64-cgo), const SYS_UTIMES = 138 pkg syscall (darwin-amd64-cgo), const SYS_VFORK = 66 pkg syscall (darwin-amd64-cgo), const SYS_VM_PRESSURE_MONITOR = 296 pkg syscall (darwin-amd64-cgo), const SYS_WAIT4 = 7 pkg syscall (darwin-amd64-cgo), const SYS_WAIT4_NOCANCEL = 400 pkg syscall (darwin-amd64-cgo), const SYS_WAITEVENT = 232 pkg syscall (darwin-amd64-cgo), const SYS_WAITID = 173 pkg syscall (darwin-amd64-cgo), const SYS_WAITID_NOCANCEL = 416 pkg syscall (darwin-amd64-cgo), const SYS_WATCHEVENT = 231 pkg syscall (darwin-amd64-cgo), const SYS_WORKQ_KERNRETURN = 368 pkg syscall (darwin-amd64-cgo), const SYS_WORKQ_OPEN = 367 pkg syscall (darwin-amd64-cgo), const SYS_WRITE = 4 pkg syscall (darwin-amd64-cgo), const SYS_WRITEV = 121 pkg syscall (darwin-amd64-cgo), const SYS_WRITEV_NOCANCEL = 412 pkg syscall (darwin-amd64-cgo), const SYS_WRITE_NOCANCEL = 397 pkg syscall (darwin-amd64-cgo), const SYS___DISABLE_THREADSIGNAL = 331 pkg syscall (darwin-amd64-cgo), const SYS___MAC_EXECVE = 380 pkg syscall (darwin-amd64-cgo), const SYS___MAC_GETFSSTAT = 426 pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_FD = 388 pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_FILE = 382 pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_LCID = 391 pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_LCTX = 392 pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_LINK = 384 pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_MOUNT = 425 pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_PID = 390 pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_PROC = 386 pkg syscall (darwin-amd64-cgo), const SYS___MAC_MOUNT = 424 pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_FD = 389 pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_FILE = 383 pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_LCTX = 393 pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_LINK = 385 pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_PROC = 387 pkg syscall (darwin-amd64-cgo), const SYS___MAC_SYSCALL = 381 pkg syscall (darwin-amd64-cgo), const SYS___OLD_SEMWAIT_SIGNAL = 370 pkg syscall (darwin-amd64-cgo), const SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_CANCELED = 333 pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_CHDIR = 348 pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_FCHDIR = 349 pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_KILL = 328 pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_MARKCANCEL = 332 pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_SIGMASK = 329 pkg syscall (darwin-amd64-cgo), const SYS___SEMWAIT_SIGNAL = 334 pkg syscall (darwin-amd64-cgo), const SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 pkg syscall (darwin-amd64-cgo), const SYS___SIGWAIT = 330 pkg syscall (darwin-amd64-cgo), const SYS___SIGWAIT_NOCANCEL = 422 pkg syscall (darwin-amd64-cgo), const SYS___SYSCTL = 202 pkg syscall (darwin-amd64-cgo), const S_IEXEC = 64 pkg syscall (darwin-amd64-cgo), const S_IFMT = 61440 pkg syscall (darwin-amd64-cgo), const S_IFWHT = 57344 pkg syscall (darwin-amd64-cgo), const S_IREAD = 256 pkg syscall (darwin-amd64-cgo), const S_IRGRP = 32 pkg syscall (darwin-amd64-cgo), const S_IROTH = 4 pkg syscall (darwin-amd64-cgo), const S_IRWXG = 56 pkg syscall (darwin-amd64-cgo), const S_IRWXO = 7 pkg syscall (darwin-amd64-cgo), const S_IRWXU = 448 pkg syscall (darwin-amd64-cgo), const S_ISTXT = 512 pkg syscall (darwin-amd64-cgo), const S_IWGRP = 16 pkg syscall (darwin-amd64-cgo), const S_IWOTH = 2 pkg syscall (darwin-amd64-cgo), const S_IWRITE = 128 pkg syscall (darwin-amd64-cgo), const S_IXGRP = 8 pkg syscall (darwin-amd64-cgo), const S_IXOTH = 1 pkg syscall (darwin-amd64-cgo), const SizeofBpfHdr = 20 pkg syscall (darwin-amd64-cgo), const SizeofBpfInsn = 8 pkg syscall (darwin-amd64-cgo), const SizeofBpfProgram = 16 pkg syscall (darwin-amd64-cgo), const SizeofBpfStat = 8 pkg syscall (darwin-amd64-cgo), const SizeofBpfVersion = 4 pkg syscall (darwin-amd64-cgo), const SizeofCmsghdr = 12 pkg syscall (darwin-amd64-cgo), const SizeofIPMreq = 8 pkg syscall (darwin-amd64-cgo), const SizeofIPv6Mreq = 20 pkg syscall (darwin-amd64-cgo), const SizeofIfData = 96 pkg syscall (darwin-amd64-cgo), const SizeofIfMsghdr = 112 pkg syscall (darwin-amd64-cgo), const SizeofIfaMsghdr = 20 pkg syscall (darwin-amd64-cgo), const SizeofIfmaMsghdr = 16 pkg syscall (darwin-amd64-cgo), const SizeofIfmaMsghdr2 = 20 pkg syscall (darwin-amd64-cgo), const SizeofInet4Pktinfo = 12 pkg syscall (darwin-amd64-cgo), const SizeofInet4Pktinfo ideal-int pkg syscall (darwin-amd64-cgo), const SizeofInet6Pktinfo = 20 pkg syscall (darwin-amd64-cgo), const SizeofLinger = 8 pkg syscall (darwin-amd64-cgo), const SizeofMsghdr = 48 pkg syscall (darwin-amd64-cgo), const SizeofRtMetrics = 56 pkg syscall (darwin-amd64-cgo), const SizeofRtMsghdr = 92 pkg syscall (darwin-amd64-cgo), const SizeofSockaddrAny = 108 pkg syscall (darwin-amd64-cgo), const SizeofSockaddrDatalink = 20 pkg syscall (darwin-amd64-cgo), const SizeofSockaddrInet4 = 16 pkg syscall (darwin-amd64-cgo), const SizeofSockaddrInet6 = 28 pkg syscall (darwin-amd64-cgo), const SizeofSockaddrUnix = 106 pkg syscall (darwin-amd64-cgo), const TCIFLUSH = 1 pkg syscall (darwin-amd64-cgo), const TCIFLUSH ideal-int pkg syscall (darwin-amd64-cgo), const TCIOFLUSH = 3 pkg syscall (darwin-amd64-cgo), const TCIOFLUSH ideal-int pkg syscall (darwin-amd64-cgo), const TCOFLUSH = 2 pkg syscall (darwin-amd64-cgo), const TCOFLUSH ideal-int pkg syscall (darwin-amd64-cgo), const TCP_CONNECTIONTIMEOUT = 32 pkg syscall (darwin-amd64-cgo), const TCP_KEEPALIVE = 16 pkg syscall (darwin-amd64-cgo), const TCP_MAXHLEN = 60 pkg syscall (darwin-amd64-cgo), const TCP_MAXOLEN = 40 pkg syscall (darwin-amd64-cgo), const TCP_MAXSEG = 2 pkg syscall (darwin-amd64-cgo), const TCP_MAXWIN = 65535 pkg syscall (darwin-amd64-cgo), const TCP_MAX_SACK = 3 pkg syscall (darwin-amd64-cgo), const TCP_MAX_WINSHIFT = 14 pkg syscall (darwin-amd64-cgo), const TCP_MINMSS = 216 pkg syscall (darwin-amd64-cgo), const TCP_MINMSSOVERLOAD = 1000 pkg syscall (darwin-amd64-cgo), const TCP_MSS = 512 pkg syscall (darwin-amd64-cgo), const TCP_NOOPT = 8 pkg syscall (darwin-amd64-cgo), const TCP_NOPUSH = 4 pkg syscall (darwin-amd64-cgo), const TCP_RXT_CONNDROPTIME = 128 pkg syscall (darwin-amd64-cgo), const TCP_RXT_FINDROP = 256 pkg syscall (darwin-amd64-cgo), const TCSAFLUSH = 2 pkg syscall (darwin-amd64-cgo), const TCSAFLUSH ideal-int pkg syscall (darwin-amd64-cgo), const TIOCCBRK = 536900730 pkg syscall (darwin-amd64-cgo), const TIOCCDTR = 536900728 pkg syscall (darwin-amd64-cgo), const TIOCCONS = 2147775586 pkg syscall (darwin-amd64-cgo), const TIOCDCDTIMESTAMP = 1074820184 pkg syscall (darwin-amd64-cgo), const TIOCDRAIN = 536900702 pkg syscall (darwin-amd64-cgo), const TIOCDSIMICROCODE = 536900693 pkg syscall (darwin-amd64-cgo), const TIOCEXCL = 536900621 pkg syscall (darwin-amd64-cgo), const TIOCEXT = 2147775584 pkg syscall (darwin-amd64-cgo), const TIOCFLUSH = 2147775504 pkg syscall (darwin-amd64-cgo), const TIOCGDRAINWAIT = 1074033750 pkg syscall (darwin-amd64-cgo), const TIOCGETA = 1078490131 pkg syscall (darwin-amd64-cgo), const TIOCGETD = 1074033690 pkg syscall (darwin-amd64-cgo), const TIOCGPGRP = 1074033783 pkg syscall (darwin-amd64-cgo), const TIOCGWINSZ = 1074295912 pkg syscall (darwin-amd64-cgo), const TIOCIXOFF = 536900736 pkg syscall (darwin-amd64-cgo), const TIOCIXON = 536900737 pkg syscall (darwin-amd64-cgo), const TIOCMBIC = 2147775595 pkg syscall (darwin-amd64-cgo), const TIOCMBIS = 2147775596 pkg syscall (darwin-amd64-cgo), const TIOCMGDTRWAIT = 1074033754 pkg syscall (darwin-amd64-cgo), const TIOCMGET = 1074033770 pkg syscall (darwin-amd64-cgo), const TIOCMODG = 1074033667 pkg syscall (darwin-amd64-cgo), const TIOCMODS = 2147775492 pkg syscall (darwin-amd64-cgo), const TIOCMSDTRWAIT = 2147775579 pkg syscall (darwin-amd64-cgo), const TIOCMSET = 2147775597 pkg syscall (darwin-amd64-cgo), const TIOCM_CAR = 64 pkg syscall (darwin-amd64-cgo), const TIOCM_CD = 64 pkg syscall (darwin-amd64-cgo), const TIOCM_CTS = 32 pkg syscall (darwin-amd64-cgo), const TIOCM_DSR = 256 pkg syscall (darwin-amd64-cgo), const TIOCM_DTR = 2 pkg syscall (darwin-amd64-cgo), const TIOCM_LE = 1 pkg syscall (darwin-amd64-cgo), const TIOCM_RI = 128 pkg syscall (darwin-amd64-cgo), const TIOCM_RNG = 128 pkg syscall (darwin-amd64-cgo), const TIOCM_RTS = 4 pkg syscall (darwin-amd64-cgo), const TIOCM_SR = 16 pkg syscall (darwin-amd64-cgo), const TIOCM_ST = 8 pkg syscall (darwin-amd64-cgo), const TIOCNOTTY = 536900721 pkg syscall (darwin-amd64-cgo), const TIOCNXCL = 536900622 pkg syscall (darwin-amd64-cgo), const TIOCOUTQ = 1074033779 pkg syscall (darwin-amd64-cgo), const TIOCPKT = 2147775600 pkg syscall (darwin-amd64-cgo), const TIOCPKT_DATA = 0 pkg syscall (darwin-amd64-cgo), const TIOCPKT_DOSTOP = 32 pkg syscall (darwin-amd64-cgo), const TIOCPKT_FLUSHREAD = 1 pkg syscall (darwin-amd64-cgo), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (darwin-amd64-cgo), const TIOCPKT_IOCTL = 64 pkg syscall (darwin-amd64-cgo), const TIOCPKT_NOSTOP = 16 pkg syscall (darwin-amd64-cgo), const TIOCPKT_START = 8 pkg syscall (darwin-amd64-cgo), const TIOCPKT_STOP = 4 pkg syscall (darwin-amd64-cgo), const TIOCPTYGNAME = 1082160211 pkg syscall (darwin-amd64-cgo), const TIOCPTYGRANT = 536900692 pkg syscall (darwin-amd64-cgo), const TIOCPTYUNLK = 536900690 pkg syscall (darwin-amd64-cgo), const TIOCREMOTE = 2147775593 pkg syscall (darwin-amd64-cgo), const TIOCSBRK = 536900731 pkg syscall (darwin-amd64-cgo), const TIOCSCONS = 536900707 pkg syscall (darwin-amd64-cgo), const TIOCSCTTY = 536900705 pkg syscall (darwin-amd64-cgo), const TIOCSDRAINWAIT = 2147775575 pkg syscall (darwin-amd64-cgo), const TIOCSDTR = 536900729 pkg syscall (darwin-amd64-cgo), const TIOCSETA = 2152231956 pkg syscall (darwin-amd64-cgo), const TIOCSETAF = 2152231958 pkg syscall (darwin-amd64-cgo), const TIOCSETAW = 2152231957 pkg syscall (darwin-amd64-cgo), const TIOCSETD = 2147775515 pkg syscall (darwin-amd64-cgo), const TIOCSIG = 536900703 pkg syscall (darwin-amd64-cgo), const TIOCSPGRP = 2147775606 pkg syscall (darwin-amd64-cgo), const TIOCSTART = 536900718 pkg syscall (darwin-amd64-cgo), const TIOCSTAT = 536900709 pkg syscall (darwin-amd64-cgo), const TIOCSTI = 2147578994 pkg syscall (darwin-amd64-cgo), const TIOCSTOP = 536900719 pkg syscall (darwin-amd64-cgo), const TIOCSWINSZ = 2148037735 pkg syscall (darwin-amd64-cgo), const TIOCTIMESTAMP = 1074820185 pkg syscall (darwin-amd64-cgo), const TIOCUCNTL = 2147775590 pkg syscall (darwin-amd64-cgo), const TOSTOP = 4194304 pkg syscall (darwin-amd64-cgo), const TOSTOP ideal-int pkg syscall (darwin-amd64-cgo), const VDISCARD = 15 pkg syscall (darwin-amd64-cgo), const VDISCARD ideal-int pkg syscall (darwin-amd64-cgo), const VDSUSP = 11 pkg syscall (darwin-amd64-cgo), const VDSUSP ideal-int pkg syscall (darwin-amd64-cgo), const VEOF = 0 pkg syscall (darwin-amd64-cgo), const VEOF ideal-int pkg syscall (darwin-amd64-cgo), const VEOL = 1 pkg syscall (darwin-amd64-cgo), const VEOL ideal-int pkg syscall (darwin-amd64-cgo), const VEOL2 = 2 pkg syscall (darwin-amd64-cgo), const VEOL2 ideal-int pkg syscall (darwin-amd64-cgo), const VERASE = 3 pkg syscall (darwin-amd64-cgo), const VERASE ideal-int pkg syscall (darwin-amd64-cgo), const VINTR = 8 pkg syscall (darwin-amd64-cgo), const VINTR ideal-int pkg syscall (darwin-amd64-cgo), const VKILL = 5 pkg syscall (darwin-amd64-cgo), const VKILL ideal-int pkg syscall (darwin-amd64-cgo), const VLNEXT = 14 pkg syscall (darwin-amd64-cgo), const VLNEXT ideal-int pkg syscall (darwin-amd64-cgo), const VMIN = 16 pkg syscall (darwin-amd64-cgo), const VMIN ideal-int pkg syscall (darwin-amd64-cgo), const VQUIT = 9 pkg syscall (darwin-amd64-cgo), const VQUIT ideal-int pkg syscall (darwin-amd64-cgo), const VREPRINT = 6 pkg syscall (darwin-amd64-cgo), const VREPRINT ideal-int pkg syscall (darwin-amd64-cgo), const VSTART = 12 pkg syscall (darwin-amd64-cgo), const VSTART ideal-int pkg syscall (darwin-amd64-cgo), const VSTATUS = 18 pkg syscall (darwin-amd64-cgo), const VSTATUS ideal-int pkg syscall (darwin-amd64-cgo), const VSTOP = 13 pkg syscall (darwin-amd64-cgo), const VSTOP ideal-int pkg syscall (darwin-amd64-cgo), const VSUSP = 10 pkg syscall (darwin-amd64-cgo), const VSUSP ideal-int pkg syscall (darwin-amd64-cgo), const VT0 = 0 pkg syscall (darwin-amd64-cgo), const VT0 ideal-int pkg syscall (darwin-amd64-cgo), const VT1 = 65536 pkg syscall (darwin-amd64-cgo), const VT1 ideal-int pkg syscall (darwin-amd64-cgo), const VTDLY = 65536 pkg syscall (darwin-amd64-cgo), const VTDLY ideal-int pkg syscall (darwin-amd64-cgo), const VTIME = 17 pkg syscall (darwin-amd64-cgo), const VTIME ideal-int pkg syscall (darwin-amd64-cgo), const VWERASE = 4 pkg syscall (darwin-amd64-cgo), const VWERASE ideal-int pkg syscall (darwin-amd64-cgo), const WCONTINUED = 16 pkg syscall (darwin-amd64-cgo), const WCOREFLAG = 128 pkg syscall (darwin-amd64-cgo), const WEXITED = 4 pkg syscall (darwin-amd64-cgo), const WNOHANG = 1 pkg syscall (darwin-amd64-cgo), const WNOWAIT = 32 pkg syscall (darwin-amd64-cgo), const WORDSIZE = 64 pkg syscall (darwin-amd64-cgo), const WSTOPPED = 8 pkg syscall (darwin-amd64-cgo), const WUNTRACED = 2 pkg syscall (darwin-amd64-cgo), func Fchflags(int, int) error pkg syscall (darwin-amd64-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (darwin-amd64-cgo), type Inet4Pktinfo struct pkg syscall (darwin-amd64-cgo), type Inet4Pktinfo struct, Addr [4]uint8 pkg syscall (darwin-amd64-cgo), type Inet4Pktinfo struct, Ifindex uint32 pkg syscall (darwin-amd64-cgo), type Inet4Pktinfo struct, Spec_dst [4]uint8 pkg syscall (darwin-amd64-cgo), type Termios struct pkg syscall (darwin-amd64-cgo), type Termios struct, Cc [20]uint8 pkg syscall (darwin-amd64-cgo), type Termios struct, Cflag uint64 pkg syscall (darwin-amd64-cgo), type Termios struct, Iflag uint64 pkg syscall (darwin-amd64-cgo), type Termios struct, Ispeed uint64 pkg syscall (darwin-amd64-cgo), type Termios struct, Lflag uint64 pkg syscall (darwin-amd64-cgo), type Termios struct, Oflag uint64 pkg syscall (darwin-amd64-cgo), type Termios struct, Ospeed uint64 pkg syscall (darwin-amd64-cgo), type Termios struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-386), const AF_APPLETALK = 16 pkg syscall (freebsd-386), const AF_ARP = 35 pkg syscall (freebsd-386), const AF_ATM = 30 pkg syscall (freebsd-386), const AF_BLUETOOTH = 36 pkg syscall (freebsd-386), const AF_CCITT = 10 pkg syscall (freebsd-386), const AF_CHAOS = 5 pkg syscall (freebsd-386), const AF_CNT = 21 pkg syscall (freebsd-386), const AF_COIP = 20 pkg syscall (freebsd-386), const AF_DATAKIT = 9 pkg syscall (freebsd-386), const AF_DECnet = 12 pkg syscall (freebsd-386), const AF_DLI = 13 pkg syscall (freebsd-386), const AF_E164 = 26 pkg syscall (freebsd-386), const AF_ECMA = 8 pkg syscall (freebsd-386), const AF_HYLINK = 15 pkg syscall (freebsd-386), const AF_IEEE80211 = 37 pkg syscall (freebsd-386), const AF_IMPLINK = 3 pkg syscall (freebsd-386), const AF_INET6 = 28 pkg syscall (freebsd-386), const AF_IPX = 23 pkg syscall (freebsd-386), const AF_ISDN = 26 pkg syscall (freebsd-386), const AF_ISO = 7 pkg syscall (freebsd-386), const AF_LAT = 14 pkg syscall (freebsd-386), const AF_LINK = 18 pkg syscall (freebsd-386), const AF_LOCAL = 1 pkg syscall (freebsd-386), const AF_MAX = 38 pkg syscall (freebsd-386), const AF_NATM = 29 pkg syscall (freebsd-386), const AF_NETBIOS = 6 pkg syscall (freebsd-386), const AF_NETGRAPH = 32 pkg syscall (freebsd-386), const AF_OSI = 7 pkg syscall (freebsd-386), const AF_PUP = 4 pkg syscall (freebsd-386), const AF_ROUTE = 17 pkg syscall (freebsd-386), const AF_SCLUSTER = 34 pkg syscall (freebsd-386), const AF_SIP = 24 pkg syscall (freebsd-386), const AF_SLOW = 33 pkg syscall (freebsd-386), const AF_SNA = 11 pkg syscall (freebsd-386), const AF_VENDOR00 = 39 pkg syscall (freebsd-386), const AF_VENDOR01 = 41 pkg syscall (freebsd-386), const AF_VENDOR02 = 43 pkg syscall (freebsd-386), const AF_VENDOR03 = 45 pkg syscall (freebsd-386), const AF_VENDOR04 = 47 pkg syscall (freebsd-386), const AF_VENDOR05 = 49 pkg syscall (freebsd-386), const AF_VENDOR06 = 51 pkg syscall (freebsd-386), const AF_VENDOR07 = 53 pkg syscall (freebsd-386), const AF_VENDOR08 = 55 pkg syscall (freebsd-386), const AF_VENDOR09 = 57 pkg syscall (freebsd-386), const AF_VENDOR10 = 59 pkg syscall (freebsd-386), const AF_VENDOR11 = 61 pkg syscall (freebsd-386), const AF_VENDOR12 = 63 pkg syscall (freebsd-386), const AF_VENDOR13 = 65 pkg syscall (freebsd-386), const AF_VENDOR14 = 67 pkg syscall (freebsd-386), const AF_VENDOR15 = 69 pkg syscall (freebsd-386), const AF_VENDOR16 = 71 pkg syscall (freebsd-386), const AF_VENDOR17 = 73 pkg syscall (freebsd-386), const AF_VENDOR18 = 75 pkg syscall (freebsd-386), const AF_VENDOR19 = 77 pkg syscall (freebsd-386), const AF_VENDOR20 = 79 pkg syscall (freebsd-386), const AF_VENDOR21 = 81 pkg syscall (freebsd-386), const AF_VENDOR22 = 83 pkg syscall (freebsd-386), const AF_VENDOR23 = 85 pkg syscall (freebsd-386), const AF_VENDOR24 = 87 pkg syscall (freebsd-386), const AF_VENDOR25 = 89 pkg syscall (freebsd-386), const AF_VENDOR26 = 91 pkg syscall (freebsd-386), const AF_VENDOR27 = 93 pkg syscall (freebsd-386), const AF_VENDOR28 = 95 pkg syscall (freebsd-386), const AF_VENDOR29 = 97 pkg syscall (freebsd-386), const AF_VENDOR30 = 99 pkg syscall (freebsd-386), const AF_VENDOR31 = 101 pkg syscall (freebsd-386), const AF_VENDOR32 = 103 pkg syscall (freebsd-386), const AF_VENDOR33 = 105 pkg syscall (freebsd-386), const AF_VENDOR34 = 107 pkg syscall (freebsd-386), const AF_VENDOR35 = 109 pkg syscall (freebsd-386), const AF_VENDOR36 = 111 pkg syscall (freebsd-386), const AF_VENDOR37 = 113 pkg syscall (freebsd-386), const AF_VENDOR38 = 115 pkg syscall (freebsd-386), const AF_VENDOR39 = 117 pkg syscall (freebsd-386), const AF_VENDOR40 = 119 pkg syscall (freebsd-386), const AF_VENDOR41 = 121 pkg syscall (freebsd-386), const AF_VENDOR42 = 123 pkg syscall (freebsd-386), const AF_VENDOR43 = 125 pkg syscall (freebsd-386), const AF_VENDOR44 = 127 pkg syscall (freebsd-386), const AF_VENDOR45 = 129 pkg syscall (freebsd-386), const AF_VENDOR46 = 131 pkg syscall (freebsd-386), const AF_VENDOR47 = 133 pkg syscall (freebsd-386), const B0 = 0 pkg syscall (freebsd-386), const B0 ideal-int pkg syscall (freebsd-386), const B110 = 110 pkg syscall (freebsd-386), const B110 ideal-int pkg syscall (freebsd-386), const B115200 = 115200 pkg syscall (freebsd-386), const B115200 ideal-int pkg syscall (freebsd-386), const B1200 = 1200 pkg syscall (freebsd-386), const B1200 ideal-int pkg syscall (freebsd-386), const B134 = 134 pkg syscall (freebsd-386), const B134 ideal-int pkg syscall (freebsd-386), const B14400 = 14400 pkg syscall (freebsd-386), const B14400 ideal-int pkg syscall (freebsd-386), const B150 = 150 pkg syscall (freebsd-386), const B150 ideal-int pkg syscall (freebsd-386), const B1800 = 1800 pkg syscall (freebsd-386), const B1800 ideal-int pkg syscall (freebsd-386), const B19200 = 19200 pkg syscall (freebsd-386), const B19200 ideal-int pkg syscall (freebsd-386), const B200 = 200 pkg syscall (freebsd-386), const B200 ideal-int pkg syscall (freebsd-386), const B230400 = 230400 pkg syscall (freebsd-386), const B230400 ideal-int pkg syscall (freebsd-386), const B2400 = 2400 pkg syscall (freebsd-386), const B2400 ideal-int pkg syscall (freebsd-386), const B28800 = 28800 pkg syscall (freebsd-386), const B28800 ideal-int pkg syscall (freebsd-386), const B300 = 300 pkg syscall (freebsd-386), const B300 ideal-int pkg syscall (freebsd-386), const B38400 = 38400 pkg syscall (freebsd-386), const B38400 ideal-int pkg syscall (freebsd-386), const B460800 = 460800 pkg syscall (freebsd-386), const B460800 ideal-int pkg syscall (freebsd-386), const B4800 = 4800 pkg syscall (freebsd-386), const B4800 ideal-int pkg syscall (freebsd-386), const B50 = 50 pkg syscall (freebsd-386), const B50 ideal-int pkg syscall (freebsd-386), const B57600 = 57600 pkg syscall (freebsd-386), const B57600 ideal-int pkg syscall (freebsd-386), const B600 = 600 pkg syscall (freebsd-386), const B600 ideal-int pkg syscall (freebsd-386), const B7200 = 7200 pkg syscall (freebsd-386), const B7200 ideal-int pkg syscall (freebsd-386), const B75 = 75 pkg syscall (freebsd-386), const B75 ideal-int pkg syscall (freebsd-386), const B76800 = 76800 pkg syscall (freebsd-386), const B76800 ideal-int pkg syscall (freebsd-386), const B921600 = 921600 pkg syscall (freebsd-386), const B921600 ideal-int pkg syscall (freebsd-386), const B9600 = 9600 pkg syscall (freebsd-386), const B9600 ideal-int pkg syscall (freebsd-386), const BIOCFEEDBACK = 2147762812 pkg syscall (freebsd-386), const BIOCFLUSH = 536887912 pkg syscall (freebsd-386), const BIOCGBLEN = 1074020966 pkg syscall (freebsd-386), const BIOCGDIRECTION = 1074020982 pkg syscall (freebsd-386), const BIOCGDLT = 1074020970 pkg syscall (freebsd-386), const BIOCGDLTLIST = 3221766777 pkg syscall (freebsd-386), const BIOCGETBUFMODE = 1074020989 pkg syscall (freebsd-386), const BIOCGETIF = 1075855979 pkg syscall (freebsd-386), const BIOCGETZMAX = 1074020991 pkg syscall (freebsd-386), const BIOCGHDRCMPLT = 1074020980 pkg syscall (freebsd-386), const BIOCGRSIG = 1074020978 pkg syscall (freebsd-386), const BIOCGRTIMEOUT = 1074283118 pkg syscall (freebsd-386), const BIOCGSEESENT = 1074020982 pkg syscall (freebsd-386), const BIOCGSTATS = 1074283119 pkg syscall (freebsd-386), const BIOCGTSTAMP = 1074020995 pkg syscall (freebsd-386), const BIOCGTSTAMP ideal-int pkg syscall (freebsd-386), const BIOCIMMEDIATE = 2147762800 pkg syscall (freebsd-386), const BIOCLOCK = 536887930 pkg syscall (freebsd-386), const BIOCPROMISC = 536887913 pkg syscall (freebsd-386), const BIOCROTZBUF = 1074545280 pkg syscall (freebsd-386), const BIOCSBLEN = 3221504614 pkg syscall (freebsd-386), const BIOCSDIRECTION = 2147762807 pkg syscall (freebsd-386), const BIOCSDLT = 2147762808 pkg syscall (freebsd-386), const BIOCSETBUFMODE = 2147762814 pkg syscall (freebsd-386), const BIOCSETF = 2148024935 pkg syscall (freebsd-386), const BIOCSETFNR = 2148024962 pkg syscall (freebsd-386), const BIOCSETIF = 2149597804 pkg syscall (freebsd-386), const BIOCSETWF = 2148024955 pkg syscall (freebsd-386), const BIOCSETZBUF = 2148287105 pkg syscall (freebsd-386), const BIOCSHDRCMPLT = 2147762805 pkg syscall (freebsd-386), const BIOCSRSIG = 2147762803 pkg syscall (freebsd-386), const BIOCSRTIMEOUT = 2148024941 pkg syscall (freebsd-386), const BIOCSSEESENT = 2147762807 pkg syscall (freebsd-386), const BIOCSTSTAMP = 2147762820 pkg syscall (freebsd-386), const BIOCSTSTAMP ideal-int pkg syscall (freebsd-386), const BIOCVERSION = 1074020977 pkg syscall (freebsd-386), const BPF_A = 16 pkg syscall (freebsd-386), const BPF_ABS = 32 pkg syscall (freebsd-386), const BPF_ADD = 0 pkg syscall (freebsd-386), const BPF_ALIGNMENT = 4 pkg syscall (freebsd-386), const BPF_ALU = 4 pkg syscall (freebsd-386), const BPF_AND = 80 pkg syscall (freebsd-386), const BPF_B = 16 pkg syscall (freebsd-386), const BPF_BUFMODE_BUFFER = 1 pkg syscall (freebsd-386), const BPF_BUFMODE_ZBUF = 2 pkg syscall (freebsd-386), const BPF_DIV = 48 pkg syscall (freebsd-386), const BPF_H = 8 pkg syscall (freebsd-386), const BPF_IMM = 0 pkg syscall (freebsd-386), const BPF_IND = 64 pkg syscall (freebsd-386), const BPF_JA = 0 pkg syscall (freebsd-386), const BPF_JEQ = 16 pkg syscall (freebsd-386), const BPF_JGE = 48 pkg syscall (freebsd-386), const BPF_JGT = 32 pkg syscall (freebsd-386), const BPF_JMP = 5 pkg syscall (freebsd-386), const BPF_JSET = 64 pkg syscall (freebsd-386), const BPF_K = 0 pkg syscall (freebsd-386), const BPF_LD = 0 pkg syscall (freebsd-386), const BPF_LDX = 1 pkg syscall (freebsd-386), const BPF_LEN = 128 pkg syscall (freebsd-386), const BPF_LSH = 96 pkg syscall (freebsd-386), const BPF_MAJOR_VERSION = 1 pkg syscall (freebsd-386), const BPF_MAXBUFSIZE = 524288 pkg syscall (freebsd-386), const BPF_MAXINSNS = 512 pkg syscall (freebsd-386), const BPF_MEM = 96 pkg syscall (freebsd-386), const BPF_MEMWORDS = 16 pkg syscall (freebsd-386), const BPF_MINBUFSIZE = 32 pkg syscall (freebsd-386), const BPF_MINOR_VERSION = 1 pkg syscall (freebsd-386), const BPF_MISC = 7 pkg syscall (freebsd-386), const BPF_MSH = 160 pkg syscall (freebsd-386), const BPF_MUL = 32 pkg syscall (freebsd-386), const BPF_NEG = 128 pkg syscall (freebsd-386), const BPF_OR = 64 pkg syscall (freebsd-386), const BPF_RELEASE = 199606 pkg syscall (freebsd-386), const BPF_RET = 6 pkg syscall (freebsd-386), const BPF_RSH = 112 pkg syscall (freebsd-386), const BPF_ST = 2 pkg syscall (freebsd-386), const BPF_STX = 3 pkg syscall (freebsd-386), const BPF_SUB = 16 pkg syscall (freebsd-386), const BPF_TAX = 0 pkg syscall (freebsd-386), const BPF_TXA = 128 pkg syscall (freebsd-386), const BPF_T_BINTIME = 2 pkg syscall (freebsd-386), const BPF_T_BINTIME ideal-int pkg syscall (freebsd-386), const BPF_T_BINTIME_FAST = 258 pkg syscall (freebsd-386), const BPF_T_BINTIME_FAST ideal-int pkg syscall (freebsd-386), const BPF_T_BINTIME_MONOTONIC = 514 pkg syscall (freebsd-386), const BPF_T_BINTIME_MONOTONIC ideal-int pkg syscall (freebsd-386), const BPF_T_BINTIME_MONOTONIC_FAST = 770 pkg syscall (freebsd-386), const BPF_T_BINTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-386), const BPF_T_FAST = 256 pkg syscall (freebsd-386), const BPF_T_FAST ideal-int pkg syscall (freebsd-386), const BPF_T_FLAG_MASK = 768 pkg syscall (freebsd-386), const BPF_T_FLAG_MASK ideal-int pkg syscall (freebsd-386), const BPF_T_FORMAT_MASK = 3 pkg syscall (freebsd-386), const BPF_T_FORMAT_MASK ideal-int pkg syscall (freebsd-386), const BPF_T_MICROTIME = 0 pkg syscall (freebsd-386), const BPF_T_MICROTIME ideal-int pkg syscall (freebsd-386), const BPF_T_MICROTIME_FAST = 256 pkg syscall (freebsd-386), const BPF_T_MICROTIME_FAST ideal-int pkg syscall (freebsd-386), const BPF_T_MICROTIME_MONOTONIC = 512 pkg syscall (freebsd-386), const BPF_T_MICROTIME_MONOTONIC ideal-int pkg syscall (freebsd-386), const BPF_T_MICROTIME_MONOTONIC_FAST = 768 pkg syscall (freebsd-386), const BPF_T_MICROTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-386), const BPF_T_MONOTONIC = 512 pkg syscall (freebsd-386), const BPF_T_MONOTONIC ideal-int pkg syscall (freebsd-386), const BPF_T_MONOTONIC_FAST = 768 pkg syscall (freebsd-386), const BPF_T_MONOTONIC_FAST ideal-int pkg syscall (freebsd-386), const BPF_T_NANOTIME = 1 pkg syscall (freebsd-386), const BPF_T_NANOTIME ideal-int pkg syscall (freebsd-386), const BPF_T_NANOTIME_FAST = 257 pkg syscall (freebsd-386), const BPF_T_NANOTIME_FAST ideal-int pkg syscall (freebsd-386), const BPF_T_NANOTIME_MONOTONIC = 513 pkg syscall (freebsd-386), const BPF_T_NANOTIME_MONOTONIC ideal-int pkg syscall (freebsd-386), const BPF_T_NANOTIME_MONOTONIC_FAST = 769 pkg syscall (freebsd-386), const BPF_T_NANOTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-386), const BPF_T_NONE = 3 pkg syscall (freebsd-386), const BPF_T_NONE ideal-int pkg syscall (freebsd-386), const BPF_T_NORMAL = 0 pkg syscall (freebsd-386), const BPF_T_NORMAL ideal-int pkg syscall (freebsd-386), const BPF_W = 0 pkg syscall (freebsd-386), const BPF_X = 8 pkg syscall (freebsd-386), const BRKINT = 2 pkg syscall (freebsd-386), const BRKINT ideal-int pkg syscall (freebsd-386), const CFLUSH = 15 pkg syscall (freebsd-386), const CFLUSH ideal-int pkg syscall (freebsd-386), const CLOCAL = 32768 pkg syscall (freebsd-386), const CLOCAL ideal-int pkg syscall (freebsd-386), const CREAD = 2048 pkg syscall (freebsd-386), const CREAD ideal-int pkg syscall (freebsd-386), const CS5 = 0 pkg syscall (freebsd-386), const CS5 ideal-int pkg syscall (freebsd-386), const CS6 = 256 pkg syscall (freebsd-386), const CS6 ideal-int pkg syscall (freebsd-386), const CS7 = 512 pkg syscall (freebsd-386), const CS7 ideal-int pkg syscall (freebsd-386), const CS8 = 768 pkg syscall (freebsd-386), const CS8 ideal-int pkg syscall (freebsd-386), const CSIZE = 768 pkg syscall (freebsd-386), const CSIZE ideal-int pkg syscall (freebsd-386), const CSTART = 17 pkg syscall (freebsd-386), const CSTART ideal-int pkg syscall (freebsd-386), const CSTATUS = 20 pkg syscall (freebsd-386), const CSTATUS ideal-int pkg syscall (freebsd-386), const CSTOP = 19 pkg syscall (freebsd-386), const CSTOP ideal-int pkg syscall (freebsd-386), const CSTOPB = 1024 pkg syscall (freebsd-386), const CSTOPB ideal-int pkg syscall (freebsd-386), const CSUSP = 26 pkg syscall (freebsd-386), const CSUSP ideal-int pkg syscall (freebsd-386), const CTL_MAXNAME = 24 pkg syscall (freebsd-386), const CTL_NET = 4 pkg syscall (freebsd-386), const DLT_A429 = 184 pkg syscall (freebsd-386), const DLT_A653_ICM = 185 pkg syscall (freebsd-386), const DLT_AIRONET_HEADER = 120 pkg syscall (freebsd-386), const DLT_AOS = 222 pkg syscall (freebsd-386), const DLT_AOS ideal-int pkg syscall (freebsd-386), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (freebsd-386), const DLT_ARCNET = 7 pkg syscall (freebsd-386), const DLT_ARCNET_LINUX = 129 pkg syscall (freebsd-386), const DLT_ATM_CLIP = 19 pkg syscall (freebsd-386), const DLT_ATM_RFC1483 = 11 pkg syscall (freebsd-386), const DLT_AURORA = 126 pkg syscall (freebsd-386), const DLT_AX25 = 3 pkg syscall (freebsd-386), const DLT_AX25_KISS = 202 pkg syscall (freebsd-386), const DLT_BACNET_MS_TP = 165 pkg syscall (freebsd-386), const DLT_BLUETOOTH_HCI_H4 = 187 pkg syscall (freebsd-386), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 pkg syscall (freebsd-386), const DLT_CAN20B = 190 pkg syscall (freebsd-386), const DLT_CAN_SOCKETCAN = 227 pkg syscall (freebsd-386), const DLT_CAN_SOCKETCAN ideal-int pkg syscall (freebsd-386), const DLT_CHAOS = 5 pkg syscall (freebsd-386), const DLT_CHDLC = 104 pkg syscall (freebsd-386), const DLT_CISCO_IOS = 118 pkg syscall (freebsd-386), const DLT_C_HDLC = 104 pkg syscall (freebsd-386), const DLT_C_HDLC_WITH_DIR = 205 pkg syscall (freebsd-386), const DLT_DBUS = 231 pkg syscall (freebsd-386), const DLT_DBUS ideal-int pkg syscall (freebsd-386), const DLT_DECT = 221 pkg syscall (freebsd-386), const DLT_DECT ideal-int pkg syscall (freebsd-386), const DLT_DOCSIS = 143 pkg syscall (freebsd-386), const DLT_DVB_CI = 235 pkg syscall (freebsd-386), const DLT_DVB_CI ideal-int pkg syscall (freebsd-386), const DLT_ECONET = 115 pkg syscall (freebsd-386), const DLT_EN10MB = 1 pkg syscall (freebsd-386), const DLT_EN3MB = 2 pkg syscall (freebsd-386), const DLT_ENC = 109 pkg syscall (freebsd-386), const DLT_ERF = 197 pkg syscall (freebsd-386), const DLT_ERF_ETH = 175 pkg syscall (freebsd-386), const DLT_ERF_POS = 176 pkg syscall (freebsd-386), const DLT_FC_2 = 224 pkg syscall (freebsd-386), const DLT_FC_2 ideal-int pkg syscall (freebsd-386), const DLT_FC_2_WITH_FRAME_DELIMS = 225 pkg syscall (freebsd-386), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int pkg syscall (freebsd-386), const DLT_FDDI = 10 pkg syscall (freebsd-386), const DLT_FLEXRAY = 210 pkg syscall (freebsd-386), const DLT_FRELAY = 107 pkg syscall (freebsd-386), const DLT_FRELAY_WITH_DIR = 206 pkg syscall (freebsd-386), const DLT_GCOM_SERIAL = 173 pkg syscall (freebsd-386), const DLT_GCOM_T1E1 = 172 pkg syscall (freebsd-386), const DLT_GPF_F = 171 pkg syscall (freebsd-386), const DLT_GPF_T = 170 pkg syscall (freebsd-386), const DLT_GPRS_LLC = 169 pkg syscall (freebsd-386), const DLT_GSMTAP_ABIS = 218 pkg syscall (freebsd-386), const DLT_GSMTAP_ABIS ideal-int pkg syscall (freebsd-386), const DLT_GSMTAP_UM = 217 pkg syscall (freebsd-386), const DLT_GSMTAP_UM ideal-int pkg syscall (freebsd-386), const DLT_HHDLC = 121 pkg syscall (freebsd-386), const DLT_IBM_SN = 146 pkg syscall (freebsd-386), const DLT_IBM_SP = 145 pkg syscall (freebsd-386), const DLT_IEEE802 = 6 pkg syscall (freebsd-386), const DLT_IEEE802_11 = 105 pkg syscall (freebsd-386), const DLT_IEEE802_11_RADIO = 127 pkg syscall (freebsd-386), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (freebsd-386), const DLT_IEEE802_15_4 = 195 pkg syscall (freebsd-386), const DLT_IEEE802_15_4_LINUX = 191 pkg syscall (freebsd-386), const DLT_IEEE802_15_4_NOFCS = 230 pkg syscall (freebsd-386), const DLT_IEEE802_15_4_NOFCS ideal-int pkg syscall (freebsd-386), const DLT_IEEE802_15_4_NONASK_PHY = 215 pkg syscall (freebsd-386), const DLT_IEEE802_16_MAC_CPS = 188 pkg syscall (freebsd-386), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 pkg syscall (freebsd-386), const DLT_IPFILTER = 116 pkg syscall (freebsd-386), const DLT_IPMB = 199 pkg syscall (freebsd-386), const DLT_IPMB_LINUX = 209 pkg syscall (freebsd-386), const DLT_IPNET = 226 pkg syscall (freebsd-386), const DLT_IPNET ideal-int pkg syscall (freebsd-386), const DLT_IPOIB = 242 pkg syscall (freebsd-386), const DLT_IPOIB ideal-int pkg syscall (freebsd-386), const DLT_IPV4 = 228 pkg syscall (freebsd-386), const DLT_IPV4 ideal-int pkg syscall (freebsd-386), const DLT_IPV6 = 229 pkg syscall (freebsd-386), const DLT_IPV6 ideal-int pkg syscall (freebsd-386), const DLT_IP_OVER_FC = 122 pkg syscall (freebsd-386), const DLT_JUNIPER_ATM1 = 137 pkg syscall (freebsd-386), const DLT_JUNIPER_ATM2 = 135 pkg syscall (freebsd-386), const DLT_JUNIPER_ATM_CEMIC = 238 pkg syscall (freebsd-386), const DLT_JUNIPER_ATM_CEMIC ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_CHDLC = 181 pkg syscall (freebsd-386), const DLT_JUNIPER_ES = 132 pkg syscall (freebsd-386), const DLT_JUNIPER_ETHER = 178 pkg syscall (freebsd-386), const DLT_JUNIPER_FIBRECHANNEL = 234 pkg syscall (freebsd-386), const DLT_JUNIPER_FIBRECHANNEL ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_FRELAY = 180 pkg syscall (freebsd-386), const DLT_JUNIPER_GGSN = 133 pkg syscall (freebsd-386), const DLT_JUNIPER_ISM = 194 pkg syscall (freebsd-386), const DLT_JUNIPER_MFR = 134 pkg syscall (freebsd-386), const DLT_JUNIPER_MLFR = 131 pkg syscall (freebsd-386), const DLT_JUNIPER_MLPPP = 130 pkg syscall (freebsd-386), const DLT_JUNIPER_MONITOR = 164 pkg syscall (freebsd-386), const DLT_JUNIPER_PIC_PEER = 174 pkg syscall (freebsd-386), const DLT_JUNIPER_PPP = 179 pkg syscall (freebsd-386), const DLT_JUNIPER_PPPOE = 167 pkg syscall (freebsd-386), const DLT_JUNIPER_PPPOE_ATM = 168 pkg syscall (freebsd-386), const DLT_JUNIPER_SERVICES = 136 pkg syscall (freebsd-386), const DLT_JUNIPER_SRX_E2E = 233 pkg syscall (freebsd-386), const DLT_JUNIPER_SRX_E2E ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_ST = 200 pkg syscall (freebsd-386), const DLT_JUNIPER_VP = 183 pkg syscall (freebsd-386), const DLT_JUNIPER_VS = 232 pkg syscall (freebsd-386), const DLT_JUNIPER_VS ideal-int pkg syscall (freebsd-386), const DLT_LAPB_WITH_DIR = 207 pkg syscall (freebsd-386), const DLT_LAPD = 203 pkg syscall (freebsd-386), const DLT_LIN = 212 pkg syscall (freebsd-386), const DLT_LINUX_EVDEV = 216 pkg syscall (freebsd-386), const DLT_LINUX_EVDEV ideal-int pkg syscall (freebsd-386), const DLT_LINUX_IRDA = 144 pkg syscall (freebsd-386), const DLT_LINUX_LAPD = 177 pkg syscall (freebsd-386), const DLT_LINUX_PPP_WITHDIRECTION = 166 pkg syscall (freebsd-386), const DLT_LINUX_SLL = 113 pkg syscall (freebsd-386), const DLT_LOOP = 108 pkg syscall (freebsd-386), const DLT_LTALK = 114 pkg syscall (freebsd-386), const DLT_MATCHING_MAX = 242 pkg syscall (freebsd-386), const DLT_MATCHING_MAX ideal-int pkg syscall (freebsd-386), const DLT_MATCHING_MIN = 104 pkg syscall (freebsd-386), const DLT_MATCHING_MIN ideal-int pkg syscall (freebsd-386), const DLT_MFR = 182 pkg syscall (freebsd-386), const DLT_MOST = 211 pkg syscall (freebsd-386), const DLT_MPLS = 219 pkg syscall (freebsd-386), const DLT_MPLS ideal-int pkg syscall (freebsd-386), const DLT_MTP2 = 140 pkg syscall (freebsd-386), const DLT_MTP2_WITH_PHDR = 139 pkg syscall (freebsd-386), const DLT_MTP3 = 141 pkg syscall (freebsd-386), const DLT_MUX27010 = 236 pkg syscall (freebsd-386), const DLT_MUX27010 ideal-int pkg syscall (freebsd-386), const DLT_NETANALYZER = 240 pkg syscall (freebsd-386), const DLT_NETANALYZER ideal-int pkg syscall (freebsd-386), const DLT_NETANALYZER_TRANSPARENT = 241 pkg syscall (freebsd-386), const DLT_NETANALYZER_TRANSPARENT ideal-int pkg syscall (freebsd-386), const DLT_NFLOG = 239 pkg syscall (freebsd-386), const DLT_NFLOG ideal-int pkg syscall (freebsd-386), const DLT_NULL = 0 pkg syscall (freebsd-386), const DLT_PCI_EXP = 125 pkg syscall (freebsd-386), const DLT_PFLOG = 117 pkg syscall (freebsd-386), const DLT_PFSYNC = 121 pkg syscall (freebsd-386), const DLT_PPI = 192 pkg syscall (freebsd-386), const DLT_PPP = 9 pkg syscall (freebsd-386), const DLT_PPP_BSDOS = 16 pkg syscall (freebsd-386), const DLT_PPP_ETHER = 51 pkg syscall (freebsd-386), const DLT_PPP_PPPD = 166 pkg syscall (freebsd-386), const DLT_PPP_SERIAL = 50 pkg syscall (freebsd-386), const DLT_PPP_WITH_DIR = 204 pkg syscall (freebsd-386), const DLT_PPP_WITH_DIRECTION = 166 pkg syscall (freebsd-386), const DLT_PRISM_HEADER = 119 pkg syscall (freebsd-386), const DLT_PRONET = 4 pkg syscall (freebsd-386), const DLT_RAIF1 = 198 pkg syscall (freebsd-386), const DLT_RAW = 12 pkg syscall (freebsd-386), const DLT_RIO = 124 pkg syscall (freebsd-386), const DLT_SCCP = 142 pkg syscall (freebsd-386), const DLT_SITA = 196 pkg syscall (freebsd-386), const DLT_SLIP = 8 pkg syscall (freebsd-386), const DLT_SLIP_BSDOS = 15 pkg syscall (freebsd-386), const DLT_STANAG_5066_D_PDU = 237 pkg syscall (freebsd-386), const DLT_STANAG_5066_D_PDU ideal-int pkg syscall (freebsd-386), const DLT_SUNATM = 123 pkg syscall (freebsd-386), const DLT_SYMANTEC_FIREWALL = 99 pkg syscall (freebsd-386), const DLT_TZSP = 128 pkg syscall (freebsd-386), const DLT_USB = 186 pkg syscall (freebsd-386), const DLT_USB_LINUX = 189 pkg syscall (freebsd-386), const DLT_USB_LINUX_MMAPPED = 220 pkg syscall (freebsd-386), const DLT_USB_LINUX_MMAPPED ideal-int pkg syscall (freebsd-386), const DLT_USER0 = 147 pkg syscall (freebsd-386), const DLT_USER1 = 148 pkg syscall (freebsd-386), const DLT_USER10 = 157 pkg syscall (freebsd-386), const DLT_USER11 = 158 pkg syscall (freebsd-386), const DLT_USER12 = 159 pkg syscall (freebsd-386), const DLT_USER13 = 160 pkg syscall (freebsd-386), const DLT_USER14 = 161 pkg syscall (freebsd-386), const DLT_USER15 = 162 pkg syscall (freebsd-386), const DLT_USER2 = 149 pkg syscall (freebsd-386), const DLT_USER3 = 150 pkg syscall (freebsd-386), const DLT_USER4 = 151 pkg syscall (freebsd-386), const DLT_USER5 = 152 pkg syscall (freebsd-386), const DLT_USER6 = 153 pkg syscall (freebsd-386), const DLT_USER7 = 154 pkg syscall (freebsd-386), const DLT_USER8 = 155 pkg syscall (freebsd-386), const DLT_USER9 = 156 pkg syscall (freebsd-386), const DLT_WIHART = 223 pkg syscall (freebsd-386), const DLT_WIHART ideal-int pkg syscall (freebsd-386), const DLT_X2E_SERIAL = 213 pkg syscall (freebsd-386), const DLT_X2E_XORAYA = 214 pkg syscall (freebsd-386), const DT_BLK = 6 pkg syscall (freebsd-386), const DT_CHR = 2 pkg syscall (freebsd-386), const DT_DIR = 4 pkg syscall (freebsd-386), const DT_FIFO = 1 pkg syscall (freebsd-386), const DT_LNK = 10 pkg syscall (freebsd-386), const DT_REG = 8 pkg syscall (freebsd-386), const DT_SOCK = 12 pkg syscall (freebsd-386), const DT_UNKNOWN = 0 pkg syscall (freebsd-386), const DT_WHT = 14 pkg syscall (freebsd-386), const E2BIG = 7 pkg syscall (freebsd-386), const EACCES = 13 pkg syscall (freebsd-386), const EADDRINUSE = 48 pkg syscall (freebsd-386), const EADDRNOTAVAIL = 49 pkg syscall (freebsd-386), const EAFNOSUPPORT = 47 pkg syscall (freebsd-386), const EAGAIN = 35 pkg syscall (freebsd-386), const EALREADY = 37 pkg syscall (freebsd-386), const EAUTH = 80 pkg syscall (freebsd-386), const EBADF = 9 pkg syscall (freebsd-386), const EBADMSG = 89 pkg syscall (freebsd-386), const EBADRPC = 72 pkg syscall (freebsd-386), const EBUSY = 16 pkg syscall (freebsd-386), const ECANCELED = 85 pkg syscall (freebsd-386), const ECAPMODE = 94 pkg syscall (freebsd-386), const ECAPMODE Errno pkg syscall (freebsd-386), const ECHILD = 10 pkg syscall (freebsd-386), const ECHO = 8 pkg syscall (freebsd-386), const ECHOCTL = 64 pkg syscall (freebsd-386), const ECHOE = 2 pkg syscall (freebsd-386), const ECHOK = 4 pkg syscall (freebsd-386), const ECHOKE = 1 pkg syscall (freebsd-386), const ECHONL = 16 pkg syscall (freebsd-386), const ECHOPRT = 32 pkg syscall (freebsd-386), const ECONNABORTED = 53 pkg syscall (freebsd-386), const ECONNREFUSED = 61 pkg syscall (freebsd-386), const ECONNRESET = 54 pkg syscall (freebsd-386), const EDEADLK = 11 pkg syscall (freebsd-386), const EDESTADDRREQ = 39 pkg syscall (freebsd-386), const EDOM = 33 pkg syscall (freebsd-386), const EDOOFUS = 88 pkg syscall (freebsd-386), const EDQUOT = 69 pkg syscall (freebsd-386), const EEXIST = 17 pkg syscall (freebsd-386), const EFAULT = 14 pkg syscall (freebsd-386), const EFBIG = 27 pkg syscall (freebsd-386), const EFTYPE = 79 pkg syscall (freebsd-386), const EHOSTDOWN = 64 pkg syscall (freebsd-386), const EHOSTUNREACH = 65 pkg syscall (freebsd-386), const EIDRM = 82 pkg syscall (freebsd-386), const EILSEQ = 86 pkg syscall (freebsd-386), const EINPROGRESS = 36 pkg syscall (freebsd-386), const EINTR = 4 pkg syscall (freebsd-386), const EINVAL = 22 pkg syscall (freebsd-386), const EIO = 5 pkg syscall (freebsd-386), const EISCONN = 56 pkg syscall (freebsd-386), const EISDIR = 21 pkg syscall (freebsd-386), const ELAST = 94 pkg syscall (freebsd-386), const ELOOP = 62 pkg syscall (freebsd-386), const EMFILE = 24 pkg syscall (freebsd-386), const EMLINK = 31 pkg syscall (freebsd-386), const EMSGSIZE = 40 pkg syscall (freebsd-386), const EMULTIHOP = 90 pkg syscall (freebsd-386), const ENAMETOOLONG = 63 pkg syscall (freebsd-386), const ENEEDAUTH = 81 pkg syscall (freebsd-386), const ENETDOWN = 50 pkg syscall (freebsd-386), const ENETRESET = 52 pkg syscall (freebsd-386), const ENETUNREACH = 51 pkg syscall (freebsd-386), const ENFILE = 23 pkg syscall (freebsd-386), const ENOATTR = 87 pkg syscall (freebsd-386), const ENOBUFS = 55 pkg syscall (freebsd-386), const ENODEV = 19 pkg syscall (freebsd-386), const ENOEXEC = 8 pkg syscall (freebsd-386), const ENOLCK = 77 pkg syscall (freebsd-386), const ENOLINK = 91 pkg syscall (freebsd-386), const ENOMEM = 12 pkg syscall (freebsd-386), const ENOMSG = 83 pkg syscall (freebsd-386), const ENOPROTOOPT = 42 pkg syscall (freebsd-386), const ENOSPC = 28 pkg syscall (freebsd-386), const ENOSYS = 78 pkg syscall (freebsd-386), const ENOTBLK = 15 pkg syscall (freebsd-386), const ENOTCAPABLE = 93 pkg syscall (freebsd-386), const ENOTCONN = 57 pkg syscall (freebsd-386), const ENOTDIR = 20 pkg syscall (freebsd-386), const ENOTEMPTY = 66 pkg syscall (freebsd-386), const ENOTSOCK = 38 pkg syscall (freebsd-386), const ENOTSUP = 45 pkg syscall (freebsd-386), const ENOTTY = 25 pkg syscall (freebsd-386), const ENXIO = 6 pkg syscall (freebsd-386), const EOPNOTSUPP = 45 pkg syscall (freebsd-386), const EOVERFLOW = 84 pkg syscall (freebsd-386), const EPERM = 1 pkg syscall (freebsd-386), const EPFNOSUPPORT = 46 pkg syscall (freebsd-386), const EPIPE = 32 pkg syscall (freebsd-386), const EPROCLIM = 67 pkg syscall (freebsd-386), const EPROCUNAVAIL = 76 pkg syscall (freebsd-386), const EPROGMISMATCH = 75 pkg syscall (freebsd-386), const EPROGUNAVAIL = 74 pkg syscall (freebsd-386), const EPROTO = 92 pkg syscall (freebsd-386), const EPROTONOSUPPORT = 43 pkg syscall (freebsd-386), const EPROTOTYPE = 41 pkg syscall (freebsd-386), const ERANGE = 34 pkg syscall (freebsd-386), const EREMOTE = 71 pkg syscall (freebsd-386), const EROFS = 30 pkg syscall (freebsd-386), const ERPCMISMATCH = 73 pkg syscall (freebsd-386), const ESHUTDOWN = 58 pkg syscall (freebsd-386), const ESOCKTNOSUPPORT = 44 pkg syscall (freebsd-386), const ESPIPE = 29 pkg syscall (freebsd-386), const ESRCH = 3 pkg syscall (freebsd-386), const ESTALE = 70 pkg syscall (freebsd-386), const ETIMEDOUT = 60 pkg syscall (freebsd-386), const ETOOMANYREFS = 59 pkg syscall (freebsd-386), const ETXTBSY = 26 pkg syscall (freebsd-386), const EUSERS = 68 pkg syscall (freebsd-386), const EVFILT_AIO = -3 pkg syscall (freebsd-386), const EVFILT_FS = -9 pkg syscall (freebsd-386), const EVFILT_LIO = -10 pkg syscall (freebsd-386), const EVFILT_PROC = -5 pkg syscall (freebsd-386), const EVFILT_READ = -1 pkg syscall (freebsd-386), const EVFILT_SIGNAL = -6 pkg syscall (freebsd-386), const EVFILT_SYSCOUNT = 11 pkg syscall (freebsd-386), const EVFILT_TIMER = -7 pkg syscall (freebsd-386), const EVFILT_USER = -11 pkg syscall (freebsd-386), const EVFILT_VNODE = -4 pkg syscall (freebsd-386), const EVFILT_WRITE = -2 pkg syscall (freebsd-386), const EV_ADD = 1 pkg syscall (freebsd-386), const EV_CLEAR = 32 pkg syscall (freebsd-386), const EV_DELETE = 2 pkg syscall (freebsd-386), const EV_DISABLE = 8 pkg syscall (freebsd-386), const EV_DISPATCH = 128 pkg syscall (freebsd-386), const EV_ENABLE = 4 pkg syscall (freebsd-386), const EV_EOF = 32768 pkg syscall (freebsd-386), const EV_ERROR = 16384 pkg syscall (freebsd-386), const EV_FLAG1 = 8192 pkg syscall (freebsd-386), const EV_ONESHOT = 16 pkg syscall (freebsd-386), const EV_RECEIPT = 64 pkg syscall (freebsd-386), const EV_SYSFLAGS = 61440 pkg syscall (freebsd-386), const EWOULDBLOCK = 35 pkg syscall (freebsd-386), const EXDEV = 18 pkg syscall (freebsd-386), const EXTA = 19200 pkg syscall (freebsd-386), const EXTB = 38400 pkg syscall (freebsd-386), const EXTPROC = 2048 pkg syscall (freebsd-386), const FD_CLOEXEC = 1 pkg syscall (freebsd-386), const FD_SETSIZE = 1024 pkg syscall (freebsd-386), const FLUSHO = 8388608 pkg syscall (freebsd-386), const FLUSHO ideal-int pkg syscall (freebsd-386), const F_CANCEL = 5 pkg syscall (freebsd-386), const F_DUP2FD = 10 pkg syscall (freebsd-386), const F_DUPFD = 0 pkg syscall (freebsd-386), const F_GETFD = 1 pkg syscall (freebsd-386), const F_GETFL = 3 pkg syscall (freebsd-386), const F_GETLK = 11 pkg syscall (freebsd-386), const F_GETOWN = 5 pkg syscall (freebsd-386), const F_OGETLK = 7 pkg syscall (freebsd-386), const F_OK = 0 pkg syscall (freebsd-386), const F_OSETLK = 8 pkg syscall (freebsd-386), const F_OSETLKW = 9 pkg syscall (freebsd-386), const F_RDAHEAD = 16 pkg syscall (freebsd-386), const F_RDLCK = 1 pkg syscall (freebsd-386), const F_READAHEAD = 15 pkg syscall (freebsd-386), const F_SETFD = 2 pkg syscall (freebsd-386), const F_SETFL = 4 pkg syscall (freebsd-386), const F_SETLK = 12 pkg syscall (freebsd-386), const F_SETLKW = 13 pkg syscall (freebsd-386), const F_SETLK_REMOTE = 14 pkg syscall (freebsd-386), const F_SETOWN = 6 pkg syscall (freebsd-386), const F_UNLCK = 2 pkg syscall (freebsd-386), const F_UNLCKSYS = 4 pkg syscall (freebsd-386), const F_WRLCK = 3 pkg syscall (freebsd-386), const HUPCL = 16384 pkg syscall (freebsd-386), const HUPCL ideal-int pkg syscall (freebsd-386), const ICANON = 256 pkg syscall (freebsd-386), const ICANON ideal-int pkg syscall (freebsd-386), const ICRNL = 256 pkg syscall (freebsd-386), const ICRNL ideal-int pkg syscall (freebsd-386), const IEXTEN = 1024 pkg syscall (freebsd-386), const IEXTEN ideal-int pkg syscall (freebsd-386), const IFAN_ARRIVAL = 0 pkg syscall (freebsd-386), const IFAN_ARRIVAL ideal-int pkg syscall (freebsd-386), const IFAN_DEPARTURE = 1 pkg syscall (freebsd-386), const IFAN_DEPARTURE ideal-int pkg syscall (freebsd-386), const IFF_ALLMULTI = 512 pkg syscall (freebsd-386), const IFF_ALTPHYS = 16384 pkg syscall (freebsd-386), const IFF_CANTCHANGE = 2199410 pkg syscall (freebsd-386), const IFF_CANTCONFIG = 65536 pkg syscall (freebsd-386), const IFF_CANTCONFIG ideal-int pkg syscall (freebsd-386), const IFF_DEBUG = 4 pkg syscall (freebsd-386), const IFF_DRV_OACTIVE = 1024 pkg syscall (freebsd-386), const IFF_DRV_RUNNING = 64 pkg syscall (freebsd-386), const IFF_DYING = 2097152 pkg syscall (freebsd-386), const IFF_LINK0 = 4096 pkg syscall (freebsd-386), const IFF_LINK1 = 8192 pkg syscall (freebsd-386), const IFF_LINK2 = 16384 pkg syscall (freebsd-386), const IFF_LOOPBACK = 8 pkg syscall (freebsd-386), const IFF_MONITOR = 262144 pkg syscall (freebsd-386), const IFF_MULTICAST = 32768 pkg syscall (freebsd-386), const IFF_NOARP = 128 pkg syscall (freebsd-386), const IFF_OACTIVE = 1024 pkg syscall (freebsd-386), const IFF_POINTOPOINT = 16 pkg syscall (freebsd-386), const IFF_PPROMISC = 131072 pkg syscall (freebsd-386), const IFF_PROMISC = 256 pkg syscall (freebsd-386), const IFF_RENAMING = 4194304 pkg syscall (freebsd-386), const IFF_RUNNING = 64 pkg syscall (freebsd-386), const IFF_SIMPLEX = 2048 pkg syscall (freebsd-386), const IFF_SMART = 32 pkg syscall (freebsd-386), const IFF_STATICARP = 524288 pkg syscall (freebsd-386), const IFNAMSIZ = 16 pkg syscall (freebsd-386), const IFT_1822 = 2 pkg syscall (freebsd-386), const IFT_A12MPPSWITCH = 130 pkg syscall (freebsd-386), const IFT_AAL2 = 187 pkg syscall (freebsd-386), const IFT_AAL5 = 49 pkg syscall (freebsd-386), const IFT_ADSL = 94 pkg syscall (freebsd-386), const IFT_AFLANE8023 = 59 pkg syscall (freebsd-386), const IFT_AFLANE8025 = 60 pkg syscall (freebsd-386), const IFT_ARAP = 88 pkg syscall (freebsd-386), const IFT_ARCNET = 35 pkg syscall (freebsd-386), const IFT_ARCNETPLUS = 36 pkg syscall (freebsd-386), const IFT_ASYNC = 84 pkg syscall (freebsd-386), const IFT_ATM = 37 pkg syscall (freebsd-386), const IFT_ATMDXI = 105 pkg syscall (freebsd-386), const IFT_ATMFUNI = 106 pkg syscall (freebsd-386), const IFT_ATMIMA = 107 pkg syscall (freebsd-386), const IFT_ATMLOGICAL = 80 pkg syscall (freebsd-386), const IFT_ATMRADIO = 189 pkg syscall (freebsd-386), const IFT_ATMSUBINTERFACE = 134 pkg syscall (freebsd-386), const IFT_ATMVCIENDPT = 194 pkg syscall (freebsd-386), const IFT_ATMVIRTUAL = 149 pkg syscall (freebsd-386), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (freebsd-386), const IFT_BRIDGE = 209 pkg syscall (freebsd-386), const IFT_BSC = 83 pkg syscall (freebsd-386), const IFT_CARP = 248 pkg syscall (freebsd-386), const IFT_CCTEMUL = 61 pkg syscall (freebsd-386), const IFT_CEPT = 19 pkg syscall (freebsd-386), const IFT_CES = 133 pkg syscall (freebsd-386), const IFT_CHANNEL = 70 pkg syscall (freebsd-386), const IFT_CNR = 85 pkg syscall (freebsd-386), const IFT_COFFEE = 132 pkg syscall (freebsd-386), const IFT_COMPOSITELINK = 155 pkg syscall (freebsd-386), const IFT_DCN = 141 pkg syscall (freebsd-386), const IFT_DIGITALPOWERLINE = 138 pkg syscall (freebsd-386), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (freebsd-386), const IFT_DLSW = 74 pkg syscall (freebsd-386), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (freebsd-386), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (freebsd-386), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (freebsd-386), const IFT_DS0 = 81 pkg syscall (freebsd-386), const IFT_DS0BUNDLE = 82 pkg syscall (freebsd-386), const IFT_DS1FDL = 170 pkg syscall (freebsd-386), const IFT_DS3 = 30 pkg syscall (freebsd-386), const IFT_DTM = 140 pkg syscall (freebsd-386), const IFT_DVBASILN = 172 pkg syscall (freebsd-386), const IFT_DVBASIOUT = 173 pkg syscall (freebsd-386), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (freebsd-386), const IFT_DVBRCCMACLAYER = 146 pkg syscall (freebsd-386), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (freebsd-386), const IFT_ENC = 244 pkg syscall (freebsd-386), const IFT_EON = 25 pkg syscall (freebsd-386), const IFT_EPLRS = 87 pkg syscall (freebsd-386), const IFT_ESCON = 73 pkg syscall (freebsd-386), const IFT_ETHER = 6 pkg syscall (freebsd-386), const IFT_FAITH = 242 pkg syscall (freebsd-386), const IFT_FAST = 125 pkg syscall (freebsd-386), const IFT_FASTETHER = 62 pkg syscall (freebsd-386), const IFT_FASTETHERFX = 69 pkg syscall (freebsd-386), const IFT_FDDI = 15 pkg syscall (freebsd-386), const IFT_FIBRECHANNEL = 56 pkg syscall (freebsd-386), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (freebsd-386), const IFT_FRAMERELAYMPI = 92 pkg syscall (freebsd-386), const IFT_FRDLCIENDPT = 193 pkg syscall (freebsd-386), const IFT_FRELAY = 32 pkg syscall (freebsd-386), const IFT_FRELAYDCE = 44 pkg syscall (freebsd-386), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (freebsd-386), const IFT_FRFORWARD = 158 pkg syscall (freebsd-386), const IFT_G703AT2MB = 67 pkg syscall (freebsd-386), const IFT_G703AT64K = 66 pkg syscall (freebsd-386), const IFT_GIF = 240 pkg syscall (freebsd-386), const IFT_GIGABITETHERNET = 117 pkg syscall (freebsd-386), const IFT_GR303IDT = 178 pkg syscall (freebsd-386), const IFT_GR303RDT = 177 pkg syscall (freebsd-386), const IFT_H323GATEKEEPER = 164 pkg syscall (freebsd-386), const IFT_H323PROXY = 165 pkg syscall (freebsd-386), const IFT_HDH1822 = 3 pkg syscall (freebsd-386), const IFT_HDLC = 118 pkg syscall (freebsd-386), const IFT_HDSL2 = 168 pkg syscall (freebsd-386), const IFT_HIPERLAN2 = 183 pkg syscall (freebsd-386), const IFT_HIPPI = 47 pkg syscall (freebsd-386), const IFT_HIPPIINTERFACE = 57 pkg syscall (freebsd-386), const IFT_HOSTPAD = 90 pkg syscall (freebsd-386), const IFT_HSSI = 46 pkg syscall (freebsd-386), const IFT_HY = 14 pkg syscall (freebsd-386), const IFT_IBM370PARCHAN = 72 pkg syscall (freebsd-386), const IFT_IDSL = 154 pkg syscall (freebsd-386), const IFT_IEEE1394 = 144 pkg syscall (freebsd-386), const IFT_IEEE80211 = 71 pkg syscall (freebsd-386), const IFT_IEEE80212 = 55 pkg syscall (freebsd-386), const IFT_IEEE8023ADLAG = 161 pkg syscall (freebsd-386), const IFT_IFGSN = 145 pkg syscall (freebsd-386), const IFT_IMT = 190 pkg syscall (freebsd-386), const IFT_INFINIBAND = 199 pkg syscall (freebsd-386), const IFT_INFINIBAND ideal-int pkg syscall (freebsd-386), const IFT_INTERLEAVE = 124 pkg syscall (freebsd-386), const IFT_IP = 126 pkg syscall (freebsd-386), const IFT_IPFORWARD = 142 pkg syscall (freebsd-386), const IFT_IPOVERATM = 114 pkg syscall (freebsd-386), const IFT_IPOVERCDLC = 109 pkg syscall (freebsd-386), const IFT_IPOVERCLAW = 110 pkg syscall (freebsd-386), const IFT_IPSWITCH = 78 pkg syscall (freebsd-386), const IFT_IPXIP = 249 pkg syscall (freebsd-386), const IFT_ISDN = 63 pkg syscall (freebsd-386), const IFT_ISDNBASIC = 20 pkg syscall (freebsd-386), const IFT_ISDNPRIMARY = 21 pkg syscall (freebsd-386), const IFT_ISDNS = 75 pkg syscall (freebsd-386), const IFT_ISDNU = 76 pkg syscall (freebsd-386), const IFT_ISO88022LLC = 41 pkg syscall (freebsd-386), const IFT_ISO88023 = 7 pkg syscall (freebsd-386), const IFT_ISO88024 = 8 pkg syscall (freebsd-386), const IFT_ISO88025 = 9 pkg syscall (freebsd-386), const IFT_ISO88025CRFPINT = 98 pkg syscall (freebsd-386), const IFT_ISO88025DTR = 86 pkg syscall (freebsd-386), const IFT_ISO88025FIBER = 115 pkg syscall (freebsd-386), const IFT_ISO88026 = 10 pkg syscall (freebsd-386), const IFT_ISUP = 179 pkg syscall (freebsd-386), const IFT_L2VLAN = 135 pkg syscall (freebsd-386), const IFT_L3IPVLAN = 136 pkg syscall (freebsd-386), const IFT_L3IPXVLAN = 137 pkg syscall (freebsd-386), const IFT_LAPB = 16 pkg syscall (freebsd-386), const IFT_LAPD = 77 pkg syscall (freebsd-386), const IFT_LAPF = 119 pkg syscall (freebsd-386), const IFT_LOCALTALK = 42 pkg syscall (freebsd-386), const IFT_LOOP = 24 pkg syscall (freebsd-386), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (freebsd-386), const IFT_MFSIGLINK = 167 pkg syscall (freebsd-386), const IFT_MIOX25 = 38 pkg syscall (freebsd-386), const IFT_MODEM = 48 pkg syscall (freebsd-386), const IFT_MPC = 113 pkg syscall (freebsd-386), const IFT_MPLS = 166 pkg syscall (freebsd-386), const IFT_MPLSTUNNEL = 150 pkg syscall (freebsd-386), const IFT_MSDSL = 143 pkg syscall (freebsd-386), const IFT_MVL = 191 pkg syscall (freebsd-386), const IFT_MYRINET = 99 pkg syscall (freebsd-386), const IFT_NFAS = 175 pkg syscall (freebsd-386), const IFT_NSIP = 27 pkg syscall (freebsd-386), const IFT_OPTICALCHANNEL = 195 pkg syscall (freebsd-386), const IFT_OPTICALTRANSPORT = 196 pkg syscall (freebsd-386), const IFT_OTHER = 1 pkg syscall (freebsd-386), const IFT_P10 = 12 pkg syscall (freebsd-386), const IFT_P80 = 13 pkg syscall (freebsd-386), const IFT_PARA = 34 pkg syscall (freebsd-386), const IFT_PFLOG = 246 pkg syscall (freebsd-386), const IFT_PFSYNC = 247 pkg syscall (freebsd-386), const IFT_PLC = 174 pkg syscall (freebsd-386), const IFT_POS = 171 pkg syscall (freebsd-386), const IFT_PPP = 23 pkg syscall (freebsd-386), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (freebsd-386), const IFT_PROPBWAP2MP = 184 pkg syscall (freebsd-386), const IFT_PROPCNLS = 89 pkg syscall (freebsd-386), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (freebsd-386), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (freebsd-386), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (freebsd-386), const IFT_PROPMUX = 54 pkg syscall (freebsd-386), const IFT_PROPVIRTUAL = 53 pkg syscall (freebsd-386), const IFT_PROPWIRELESSP2P = 157 pkg syscall (freebsd-386), const IFT_PTPSERIAL = 22 pkg syscall (freebsd-386), const IFT_PVC = 241 pkg syscall (freebsd-386), const IFT_QLLC = 68 pkg syscall (freebsd-386), const IFT_RADIOMAC = 188 pkg syscall (freebsd-386), const IFT_RADSL = 95 pkg syscall (freebsd-386), const IFT_REACHDSL = 192 pkg syscall (freebsd-386), const IFT_RFC1483 = 159 pkg syscall (freebsd-386), const IFT_RS232 = 33 pkg syscall (freebsd-386), const IFT_RSRB = 79 pkg syscall (freebsd-386), const IFT_SDLC = 17 pkg syscall (freebsd-386), const IFT_SDSL = 96 pkg syscall (freebsd-386), const IFT_SHDSL = 169 pkg syscall (freebsd-386), const IFT_SIP = 31 pkg syscall (freebsd-386), const IFT_SLIP = 28 pkg syscall (freebsd-386), const IFT_SMDSDXI = 43 pkg syscall (freebsd-386), const IFT_SMDSICIP = 52 pkg syscall (freebsd-386), const IFT_SONET = 39 pkg syscall (freebsd-386), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (freebsd-386), const IFT_SONETPATH = 50 pkg syscall (freebsd-386), const IFT_SONETVT = 51 pkg syscall (freebsd-386), const IFT_SRP = 151 pkg syscall (freebsd-386), const IFT_SS7SIGLINK = 156 pkg syscall (freebsd-386), const IFT_STACKTOSTACK = 111 pkg syscall (freebsd-386), const IFT_STARLAN = 11 pkg syscall (freebsd-386), const IFT_STF = 215 pkg syscall (freebsd-386), const IFT_T1 = 18 pkg syscall (freebsd-386), const IFT_TDLC = 116 pkg syscall (freebsd-386), const IFT_TERMPAD = 91 pkg syscall (freebsd-386), const IFT_TR008 = 176 pkg syscall (freebsd-386), const IFT_TRANSPHDLC = 123 pkg syscall (freebsd-386), const IFT_TUNNEL = 131 pkg syscall (freebsd-386), const IFT_ULTRA = 29 pkg syscall (freebsd-386), const IFT_USB = 160 pkg syscall (freebsd-386), const IFT_V11 = 64 pkg syscall (freebsd-386), const IFT_V35 = 45 pkg syscall (freebsd-386), const IFT_V36 = 65 pkg syscall (freebsd-386), const IFT_V37 = 120 pkg syscall (freebsd-386), const IFT_VDSL = 97 pkg syscall (freebsd-386), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (freebsd-386), const IFT_VOICEEM = 100 pkg syscall (freebsd-386), const IFT_VOICEENCAP = 103 pkg syscall (freebsd-386), const IFT_VOICEFXO = 101 pkg syscall (freebsd-386), const IFT_VOICEFXS = 102 pkg syscall (freebsd-386), const IFT_VOICEOVERATM = 152 pkg syscall (freebsd-386), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (freebsd-386), const IFT_VOICEOVERIP = 104 pkg syscall (freebsd-386), const IFT_X213 = 93 pkg syscall (freebsd-386), const IFT_X25 = 5 pkg syscall (freebsd-386), const IFT_X25DDN = 4 pkg syscall (freebsd-386), const IFT_X25HUNTGROUP = 122 pkg syscall (freebsd-386), const IFT_X25MLP = 121 pkg syscall (freebsd-386), const IFT_X25PLE = 40 pkg syscall (freebsd-386), const IFT_XETHER = 26 pkg syscall (freebsd-386), const IGNBRK = 1 pkg syscall (freebsd-386), const IGNBRK ideal-int pkg syscall (freebsd-386), const IGNCR = 128 pkg syscall (freebsd-386), const IGNCR ideal-int pkg syscall (freebsd-386), const IGNPAR = 4 pkg syscall (freebsd-386), const IGNPAR ideal-int pkg syscall (freebsd-386), const IMAXBEL = 8192 pkg syscall (freebsd-386), const IMAXBEL ideal-int pkg syscall (freebsd-386), const INLCR = 64 pkg syscall (freebsd-386), const INLCR ideal-int pkg syscall (freebsd-386), const INPCK = 16 pkg syscall (freebsd-386), const INPCK ideal-int pkg syscall (freebsd-386), const IN_CLASSA_HOST = 16777215 pkg syscall (freebsd-386), const IN_CLASSA_MAX = 128 pkg syscall (freebsd-386), const IN_CLASSA_NET = 4278190080 pkg syscall (freebsd-386), const IN_CLASSA_NSHIFT = 24 pkg syscall (freebsd-386), const IN_CLASSB_HOST = 65535 pkg syscall (freebsd-386), const IN_CLASSB_MAX = 65536 pkg syscall (freebsd-386), const IN_CLASSB_NET = 4294901760 pkg syscall (freebsd-386), const IN_CLASSB_NSHIFT = 16 pkg syscall (freebsd-386), const IN_CLASSC_HOST = 255 pkg syscall (freebsd-386), const IN_CLASSC_NET = 4294967040 pkg syscall (freebsd-386), const IN_CLASSC_NSHIFT = 8 pkg syscall (freebsd-386), const IN_CLASSD_HOST = 268435455 pkg syscall (freebsd-386), const IN_CLASSD_NET = 4026531840 pkg syscall (freebsd-386), const IN_CLASSD_NSHIFT = 28 pkg syscall (freebsd-386), const IN_LOOPBACKNET = 127 pkg syscall (freebsd-386), const IN_RFC3021_MASK = 4294967294 pkg syscall (freebsd-386), const IN_RFC3021_MASK ideal-int pkg syscall (freebsd-386), const IPPROTO_3PC = 34 pkg syscall (freebsd-386), const IPPROTO_ADFS = 68 pkg syscall (freebsd-386), const IPPROTO_AH = 51 pkg syscall (freebsd-386), const IPPROTO_AHIP = 61 pkg syscall (freebsd-386), const IPPROTO_APES = 99 pkg syscall (freebsd-386), const IPPROTO_ARGUS = 13 pkg syscall (freebsd-386), const IPPROTO_AX25 = 93 pkg syscall (freebsd-386), const IPPROTO_BHA = 49 pkg syscall (freebsd-386), const IPPROTO_BLT = 30 pkg syscall (freebsd-386), const IPPROTO_BRSATMON = 76 pkg syscall (freebsd-386), const IPPROTO_CARP = 112 pkg syscall (freebsd-386), const IPPROTO_CFTP = 62 pkg syscall (freebsd-386), const IPPROTO_CHAOS = 16 pkg syscall (freebsd-386), const IPPROTO_CMTP = 38 pkg syscall (freebsd-386), const IPPROTO_CPHB = 73 pkg syscall (freebsd-386), const IPPROTO_CPNX = 72 pkg syscall (freebsd-386), const IPPROTO_DDP = 37 pkg syscall (freebsd-386), const IPPROTO_DGP = 86 pkg syscall (freebsd-386), const IPPROTO_DIVERT = 258 pkg syscall (freebsd-386), const IPPROTO_DONE = 257 pkg syscall (freebsd-386), const IPPROTO_DSTOPTS = 60 pkg syscall (freebsd-386), const IPPROTO_EGP = 8 pkg syscall (freebsd-386), const IPPROTO_EMCON = 14 pkg syscall (freebsd-386), const IPPROTO_ENCAP = 98 pkg syscall (freebsd-386), const IPPROTO_EON = 80 pkg syscall (freebsd-386), const IPPROTO_ESP = 50 pkg syscall (freebsd-386), const IPPROTO_ETHERIP = 97 pkg syscall (freebsd-386), const IPPROTO_FRAGMENT = 44 pkg syscall (freebsd-386), const IPPROTO_GGP = 3 pkg syscall (freebsd-386), const IPPROTO_GMTP = 100 pkg syscall (freebsd-386), const IPPROTO_GRE = 47 pkg syscall (freebsd-386), const IPPROTO_HELLO = 63 pkg syscall (freebsd-386), const IPPROTO_HMP = 20 pkg syscall (freebsd-386), const IPPROTO_HOPOPTS = 0 pkg syscall (freebsd-386), const IPPROTO_ICMP = 1 pkg syscall (freebsd-386), const IPPROTO_ICMPV6 = 58 pkg syscall (freebsd-386), const IPPROTO_IDP = 22 pkg syscall (freebsd-386), const IPPROTO_IDPR = 35 pkg syscall (freebsd-386), const IPPROTO_IDRP = 45 pkg syscall (freebsd-386), const IPPROTO_IGMP = 2 pkg syscall (freebsd-386), const IPPROTO_IGP = 85 pkg syscall (freebsd-386), const IPPROTO_IGRP = 88 pkg syscall (freebsd-386), const IPPROTO_IL = 40 pkg syscall (freebsd-386), const IPPROTO_INLSP = 52 pkg syscall (freebsd-386), const IPPROTO_INP = 32 pkg syscall (freebsd-386), const IPPROTO_IPCOMP = 108 pkg syscall (freebsd-386), const IPPROTO_IPCV = 71 pkg syscall (freebsd-386), const IPPROTO_IPEIP = 94 pkg syscall (freebsd-386), const IPPROTO_IPIP = 4 pkg syscall (freebsd-386), const IPPROTO_IPPC = 67 pkg syscall (freebsd-386), const IPPROTO_IPV4 = 4 pkg syscall (freebsd-386), const IPPROTO_IRTP = 28 pkg syscall (freebsd-386), const IPPROTO_KRYPTOLAN = 65 pkg syscall (freebsd-386), const IPPROTO_LARP = 91 pkg syscall (freebsd-386), const IPPROTO_LEAF1 = 25 pkg syscall (freebsd-386), const IPPROTO_LEAF2 = 26 pkg syscall (freebsd-386), const IPPROTO_MAX = 256 pkg syscall (freebsd-386), const IPPROTO_MAXID = 52 pkg syscall (freebsd-386), const IPPROTO_MEAS = 19 pkg syscall (freebsd-386), const IPPROTO_MH = 135 pkg syscall (freebsd-386), const IPPROTO_MH ideal-int pkg syscall (freebsd-386), const IPPROTO_MHRP = 48 pkg syscall (freebsd-386), const IPPROTO_MICP = 95 pkg syscall (freebsd-386), const IPPROTO_MOBILE = 55 pkg syscall (freebsd-386), const IPPROTO_MTP = 92 pkg syscall (freebsd-386), const IPPROTO_MUX = 18 pkg syscall (freebsd-386), const IPPROTO_ND = 77 pkg syscall (freebsd-386), const IPPROTO_NHRP = 54 pkg syscall (freebsd-386), const IPPROTO_NONE = 59 pkg syscall (freebsd-386), const IPPROTO_NSP = 31 pkg syscall (freebsd-386), const IPPROTO_NVPII = 11 pkg syscall (freebsd-386), const IPPROTO_OLD_DIVERT = 254 pkg syscall (freebsd-386), const IPPROTO_OSPFIGP = 89 pkg syscall (freebsd-386), const IPPROTO_PFSYNC = 240 pkg syscall (freebsd-386), const IPPROTO_PGM = 113 pkg syscall (freebsd-386), const IPPROTO_PIGP = 9 pkg syscall (freebsd-386), const IPPROTO_PIM = 103 pkg syscall (freebsd-386), const IPPROTO_PRM = 21 pkg syscall (freebsd-386), const IPPROTO_PUP = 12 pkg syscall (freebsd-386), const IPPROTO_PVP = 75 pkg syscall (freebsd-386), const IPPROTO_RAW = 255 pkg syscall (freebsd-386), const IPPROTO_RCCMON = 10 pkg syscall (freebsd-386), const IPPROTO_RDP = 27 pkg syscall (freebsd-386), const IPPROTO_ROUTING = 43 pkg syscall (freebsd-386), const IPPROTO_RSVP = 46 pkg syscall (freebsd-386), const IPPROTO_RVD = 66 pkg syscall (freebsd-386), const IPPROTO_SATEXPAK = 64 pkg syscall (freebsd-386), const IPPROTO_SATMON = 69 pkg syscall (freebsd-386), const IPPROTO_SCCSP = 96 pkg syscall (freebsd-386), const IPPROTO_SCTP = 132 pkg syscall (freebsd-386), const IPPROTO_SDRP = 42 pkg syscall (freebsd-386), const IPPROTO_SEND = 259 pkg syscall (freebsd-386), const IPPROTO_SEND ideal-int pkg syscall (freebsd-386), const IPPROTO_SEP = 33 pkg syscall (freebsd-386), const IPPROTO_SKIP = 57 pkg syscall (freebsd-386), const IPPROTO_SPACER = 32767 pkg syscall (freebsd-386), const IPPROTO_SRPC = 90 pkg syscall (freebsd-386), const IPPROTO_ST = 7 pkg syscall (freebsd-386), const IPPROTO_SVMTP = 82 pkg syscall (freebsd-386), const IPPROTO_SWIPE = 53 pkg syscall (freebsd-386), const IPPROTO_TCF = 87 pkg syscall (freebsd-386), const IPPROTO_TLSP = 56 pkg syscall (freebsd-386), const IPPROTO_TP = 29 pkg syscall (freebsd-386), const IPPROTO_TPXX = 39 pkg syscall (freebsd-386), const IPPROTO_TRUNK1 = 23 pkg syscall (freebsd-386), const IPPROTO_TRUNK2 = 24 pkg syscall (freebsd-386), const IPPROTO_TTP = 84 pkg syscall (freebsd-386), const IPPROTO_VINES = 83 pkg syscall (freebsd-386), const IPPROTO_VISA = 70 pkg syscall (freebsd-386), const IPPROTO_VMTP = 81 pkg syscall (freebsd-386), const IPPROTO_WBEXPAK = 79 pkg syscall (freebsd-386), const IPPROTO_WBMON = 78 pkg syscall (freebsd-386), const IPPROTO_WSN = 74 pkg syscall (freebsd-386), const IPPROTO_XNET = 15 pkg syscall (freebsd-386), const IPPROTO_XTP = 36 pkg syscall (freebsd-386), const IPV6_AUTOFLOWLABEL = 59 pkg syscall (freebsd-386), const IPV6_BINDANY = 64 pkg syscall (freebsd-386), const IPV6_BINDV6ONLY = 27 pkg syscall (freebsd-386), const IPV6_CHECKSUM = 26 pkg syscall (freebsd-386), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (freebsd-386), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (freebsd-386), const IPV6_DEFHLIM = 64 pkg syscall (freebsd-386), const IPV6_DONTFRAG = 62 pkg syscall (freebsd-386), const IPV6_DSTOPTS = 50 pkg syscall (freebsd-386), const IPV6_FAITH = 29 pkg syscall (freebsd-386), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (freebsd-386), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (freebsd-386), const IPV6_FRAGTTL = 120 pkg syscall (freebsd-386), const IPV6_FW_ADD = 30 pkg syscall (freebsd-386), const IPV6_FW_DEL = 31 pkg syscall (freebsd-386), const IPV6_FW_FLUSH = 32 pkg syscall (freebsd-386), const IPV6_FW_GET = 34 pkg syscall (freebsd-386), const IPV6_FW_ZERO = 33 pkg syscall (freebsd-386), const IPV6_HLIMDEC = 1 pkg syscall (freebsd-386), const IPV6_HOPLIMIT = 47 pkg syscall (freebsd-386), const IPV6_HOPOPTS = 49 pkg syscall (freebsd-386), const IPV6_IPSEC_POLICY = 28 pkg syscall (freebsd-386), const IPV6_JOIN_GROUP = 12 pkg syscall (freebsd-386), const IPV6_LEAVE_GROUP = 13 pkg syscall (freebsd-386), const IPV6_MAXHLIM = 255 pkg syscall (freebsd-386), const IPV6_MAXOPTHDR = 2048 pkg syscall (freebsd-386), const IPV6_MAXPACKET = 65535 pkg syscall (freebsd-386), const IPV6_MAX_GROUP_SRC_FILTER = 512 pkg syscall (freebsd-386), const IPV6_MAX_MEMBERSHIPS = 4095 pkg syscall (freebsd-386), const IPV6_MAX_SOCK_SRC_FILTER = 128 pkg syscall (freebsd-386), const IPV6_MIN_MEMBERSHIPS = 31 pkg syscall (freebsd-386), const IPV6_MMTU = 1280 pkg syscall (freebsd-386), const IPV6_MSFILTER = 74 pkg syscall (freebsd-386), const IPV6_MULTICAST_HOPS = 10 pkg syscall (freebsd-386), const IPV6_MULTICAST_IF = 9 pkg syscall (freebsd-386), const IPV6_MULTICAST_LOOP = 11 pkg syscall (freebsd-386), const IPV6_NEXTHOP = 48 pkg syscall (freebsd-386), const IPV6_PATHMTU = 44 pkg syscall (freebsd-386), const IPV6_PKTINFO = 46 pkg syscall (freebsd-386), const IPV6_PORTRANGE = 14 pkg syscall (freebsd-386), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (freebsd-386), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (freebsd-386), const IPV6_PORTRANGE_LOW = 2 pkg syscall (freebsd-386), const IPV6_PREFER_TEMPADDR = 63 pkg syscall (freebsd-386), const IPV6_RECVDSTOPTS = 40 pkg syscall (freebsd-386), const IPV6_RECVHOPLIMIT = 37 pkg syscall (freebsd-386), const IPV6_RECVHOPOPTS = 39 pkg syscall (freebsd-386), const IPV6_RECVPATHMTU = 43 pkg syscall (freebsd-386), const IPV6_RECVPKTINFO = 36 pkg syscall (freebsd-386), const IPV6_RECVRTHDR = 38 pkg syscall (freebsd-386), const IPV6_RECVTCLASS = 57 pkg syscall (freebsd-386), const IPV6_RTHDR = 51 pkg syscall (freebsd-386), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (freebsd-386), const IPV6_RTHDR_LOOSE = 0 pkg syscall (freebsd-386), const IPV6_RTHDR_STRICT = 1 pkg syscall (freebsd-386), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (freebsd-386), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (freebsd-386), const IPV6_TCLASS = 61 pkg syscall (freebsd-386), const IPV6_UNICAST_HOPS = 4 pkg syscall (freebsd-386), const IPV6_USE_MIN_MTU = 42 pkg syscall (freebsd-386), const IPV6_V6ONLY = 27 pkg syscall (freebsd-386), const IPV6_VERSION = 96 pkg syscall (freebsd-386), const IPV6_VERSION_MASK = 240 pkg syscall (freebsd-386), const IP_ADD_MEMBERSHIP = 12 pkg syscall (freebsd-386), const IP_ADD_SOURCE_MEMBERSHIP = 70 pkg syscall (freebsd-386), const IP_BINDANY = 24 pkg syscall (freebsd-386), const IP_BLOCK_SOURCE = 72 pkg syscall (freebsd-386), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (freebsd-386), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (freebsd-386), const IP_DF = 16384 pkg syscall (freebsd-386), const IP_DONTFRAG = 67 pkg syscall (freebsd-386), const IP_DROP_MEMBERSHIP = 13 pkg syscall (freebsd-386), const IP_DROP_SOURCE_MEMBERSHIP = 71 pkg syscall (freebsd-386), const IP_DUMMYNET3 = 49 pkg syscall (freebsd-386), const IP_DUMMYNET_CONFIGURE = 60 pkg syscall (freebsd-386), const IP_DUMMYNET_DEL = 61 pkg syscall (freebsd-386), const IP_DUMMYNET_FLUSH = 62 pkg syscall (freebsd-386), const IP_DUMMYNET_GET = 64 pkg syscall (freebsd-386), const IP_FAITH = 22 pkg syscall (freebsd-386), const IP_FW3 = 48 pkg syscall (freebsd-386), const IP_FW_ADD = 50 pkg syscall (freebsd-386), const IP_FW_DEL = 51 pkg syscall (freebsd-386), const IP_FW_FLUSH = 52 pkg syscall (freebsd-386), const IP_FW_GET = 54 pkg syscall (freebsd-386), const IP_FW_NAT_CFG = 56 pkg syscall (freebsd-386), const IP_FW_NAT_DEL = 57 pkg syscall (freebsd-386), const IP_FW_NAT_GET_CONFIG = 58 pkg syscall (freebsd-386), const IP_FW_NAT_GET_LOG = 59 pkg syscall (freebsd-386), const IP_FW_RESETLOG = 55 pkg syscall (freebsd-386), const IP_FW_TABLE_ADD = 40 pkg syscall (freebsd-386), const IP_FW_TABLE_DEL = 41 pkg syscall (freebsd-386), const IP_FW_TABLE_FLUSH = 42 pkg syscall (freebsd-386), const IP_FW_TABLE_GETSIZE = 43 pkg syscall (freebsd-386), const IP_FW_TABLE_LIST = 44 pkg syscall (freebsd-386), const IP_FW_ZERO = 53 pkg syscall (freebsd-386), const IP_HDRINCL = 2 pkg syscall (freebsd-386), const IP_IPSEC_POLICY = 21 pkg syscall (freebsd-386), const IP_MAXPACKET = 65535 pkg syscall (freebsd-386), const IP_MAX_GROUP_SRC_FILTER = 512 pkg syscall (freebsd-386), const IP_MAX_MEMBERSHIPS = 4095 pkg syscall (freebsd-386), const IP_MAX_SOCK_MUTE_FILTER = 128 pkg syscall (freebsd-386), const IP_MAX_SOCK_SRC_FILTER = 128 pkg syscall (freebsd-386), const IP_MAX_SOURCE_FILTER = 1024 pkg syscall (freebsd-386), const IP_MF = 8192 pkg syscall (freebsd-386), const IP_MINTTL = 66 pkg syscall (freebsd-386), const IP_MIN_MEMBERSHIPS = 31 pkg syscall (freebsd-386), const IP_MSFILTER = 74 pkg syscall (freebsd-386), const IP_MSS = 576 pkg syscall (freebsd-386), const IP_MULTICAST_IF = 9 pkg syscall (freebsd-386), const IP_MULTICAST_LOOP = 11 pkg syscall (freebsd-386), const IP_MULTICAST_TTL = 10 pkg syscall (freebsd-386), const IP_MULTICAST_VIF = 14 pkg syscall (freebsd-386), const IP_OFFMASK = 8191 pkg syscall (freebsd-386), const IP_ONESBCAST = 23 pkg syscall (freebsd-386), const IP_OPTIONS = 1 pkg syscall (freebsd-386), const IP_PORTRANGE = 19 pkg syscall (freebsd-386), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (freebsd-386), const IP_PORTRANGE_HIGH = 1 pkg syscall (freebsd-386), const IP_PORTRANGE_LOW = 2 pkg syscall (freebsd-386), const IP_RECVDSTADDR = 7 pkg syscall (freebsd-386), const IP_RECVIF = 20 pkg syscall (freebsd-386), const IP_RECVOPTS = 5 pkg syscall (freebsd-386), const IP_RECVRETOPTS = 6 pkg syscall (freebsd-386), const IP_RECVTOS = 68 pkg syscall (freebsd-386), const IP_RECVTOS ideal-int pkg syscall (freebsd-386), const IP_RECVTTL = 65 pkg syscall (freebsd-386), const IP_RETOPTS = 8 pkg syscall (freebsd-386), const IP_RF = 32768 pkg syscall (freebsd-386), const IP_RSVP_OFF = 16 pkg syscall (freebsd-386), const IP_RSVP_ON = 15 pkg syscall (freebsd-386), const IP_RSVP_VIF_OFF = 18 pkg syscall (freebsd-386), const IP_RSVP_VIF_ON = 17 pkg syscall (freebsd-386), const IP_SENDSRCADDR = 7 pkg syscall (freebsd-386), const IP_TOS = 3 pkg syscall (freebsd-386), const IP_TTL = 4 pkg syscall (freebsd-386), const IP_UNBLOCK_SOURCE = 73 pkg syscall (freebsd-386), const ISIG = 128 pkg syscall (freebsd-386), const ISIG ideal-int pkg syscall (freebsd-386), const ISTRIP = 32 pkg syscall (freebsd-386), const ISTRIP ideal-int pkg syscall (freebsd-386), const IXANY = 2048 pkg syscall (freebsd-386), const IXANY ideal-int pkg syscall (freebsd-386), const IXOFF = 1024 pkg syscall (freebsd-386), const IXOFF ideal-int pkg syscall (freebsd-386), const IXON = 512 pkg syscall (freebsd-386), const IXON ideal-int pkg syscall (freebsd-386), const ImplementsGetwd = false pkg syscall (freebsd-386), const LOCK_EX = 2 pkg syscall (freebsd-386), const LOCK_NB = 4 pkg syscall (freebsd-386), const LOCK_SH = 1 pkg syscall (freebsd-386), const LOCK_UN = 8 pkg syscall (freebsd-386), const MADV_AUTOSYNC = 7 pkg syscall (freebsd-386), const MADV_AUTOSYNC ideal-int pkg syscall (freebsd-386), const MADV_CORE = 9 pkg syscall (freebsd-386), const MADV_CORE ideal-int pkg syscall (freebsd-386), const MADV_DONTNEED = 4 pkg syscall (freebsd-386), const MADV_DONTNEED ideal-int pkg syscall (freebsd-386), const MADV_FREE = 5 pkg syscall (freebsd-386), const MADV_FREE ideal-int pkg syscall (freebsd-386), const MADV_NOCORE = 8 pkg syscall (freebsd-386), const MADV_NOCORE ideal-int pkg syscall (freebsd-386), const MADV_NORMAL = 0 pkg syscall (freebsd-386), const MADV_NORMAL ideal-int pkg syscall (freebsd-386), const MADV_NOSYNC = 6 pkg syscall (freebsd-386), const MADV_NOSYNC ideal-int pkg syscall (freebsd-386), const MADV_PROTECT = 10 pkg syscall (freebsd-386), const MADV_PROTECT ideal-int pkg syscall (freebsd-386), const MADV_RANDOM = 1 pkg syscall (freebsd-386), const MADV_RANDOM ideal-int pkg syscall (freebsd-386), const MADV_SEQUENTIAL = 2 pkg syscall (freebsd-386), const MADV_SEQUENTIAL ideal-int pkg syscall (freebsd-386), const MADV_WILLNEED = 3 pkg syscall (freebsd-386), const MADV_WILLNEED ideal-int pkg syscall (freebsd-386), const MAP_ANON = 4096 pkg syscall (freebsd-386), const MAP_ANON ideal-int pkg syscall (freebsd-386), const MAP_ANONYMOUS = 4096 pkg syscall (freebsd-386), const MAP_ANONYMOUS ideal-int pkg syscall (freebsd-386), const MAP_COPY = 2 pkg syscall (freebsd-386), const MAP_COPY ideal-int pkg syscall (freebsd-386), const MAP_FILE = 0 pkg syscall (freebsd-386), const MAP_FILE ideal-int pkg syscall (freebsd-386), const MAP_FIXED = 16 pkg syscall (freebsd-386), const MAP_FIXED ideal-int pkg syscall (freebsd-386), const MAP_HASSEMAPHORE = 512 pkg syscall (freebsd-386), const MAP_HASSEMAPHORE ideal-int pkg syscall (freebsd-386), const MAP_NOCORE = 131072 pkg syscall (freebsd-386), const MAP_NOCORE ideal-int pkg syscall (freebsd-386), const MAP_NORESERVE = 64 pkg syscall (freebsd-386), const MAP_NORESERVE ideal-int pkg syscall (freebsd-386), const MAP_NOSYNC = 2048 pkg syscall (freebsd-386), const MAP_NOSYNC ideal-int pkg syscall (freebsd-386), const MAP_PREFAULT_READ = 262144 pkg syscall (freebsd-386), const MAP_PREFAULT_READ ideal-int pkg syscall (freebsd-386), const MAP_PRIVATE = 2 pkg syscall (freebsd-386), const MAP_PRIVATE ideal-int pkg syscall (freebsd-386), const MAP_RENAME = 32 pkg syscall (freebsd-386), const MAP_RENAME ideal-int pkg syscall (freebsd-386), const MAP_RESERVED0080 = 128 pkg syscall (freebsd-386), const MAP_RESERVED0080 ideal-int pkg syscall (freebsd-386), const MAP_RESERVED0100 = 256 pkg syscall (freebsd-386), const MAP_RESERVED0100 ideal-int pkg syscall (freebsd-386), const MAP_SHARED = 1 pkg syscall (freebsd-386), const MAP_SHARED ideal-int pkg syscall (freebsd-386), const MAP_STACK = 1024 pkg syscall (freebsd-386), const MAP_STACK ideal-int pkg syscall (freebsd-386), const MCL_CURRENT = 1 pkg syscall (freebsd-386), const MCL_CURRENT ideal-int pkg syscall (freebsd-386), const MCL_FUTURE = 2 pkg syscall (freebsd-386), const MCL_FUTURE ideal-int pkg syscall (freebsd-386), const MSG_COMPAT = 32768 pkg syscall (freebsd-386), const MSG_CTRUNC = 32 pkg syscall (freebsd-386), const MSG_DONTROUTE = 4 pkg syscall (freebsd-386), const MSG_DONTWAIT = 128 pkg syscall (freebsd-386), const MSG_EOF = 256 pkg syscall (freebsd-386), const MSG_EOR = 8 pkg syscall (freebsd-386), const MSG_NBIO = 16384 pkg syscall (freebsd-386), const MSG_NOSIGNAL = 131072 pkg syscall (freebsd-386), const MSG_NOTIFICATION = 8192 pkg syscall (freebsd-386), const MSG_OOB = 1 pkg syscall (freebsd-386), const MSG_PEEK = 2 pkg syscall (freebsd-386), const MSG_TRUNC = 16 pkg syscall (freebsd-386), const MSG_WAITALL = 64 pkg syscall (freebsd-386), const MS_ASYNC = 1 pkg syscall (freebsd-386), const MS_ASYNC ideal-int pkg syscall (freebsd-386), const MS_INVALIDATE = 2 pkg syscall (freebsd-386), const MS_INVALIDATE ideal-int pkg syscall (freebsd-386), const MS_SYNC = 0 pkg syscall (freebsd-386), const MS_SYNC ideal-int pkg syscall (freebsd-386), const NET_RT_DUMP = 1 pkg syscall (freebsd-386), const NET_RT_FLAGS = 2 pkg syscall (freebsd-386), const NET_RT_IFLIST = 3 pkg syscall (freebsd-386), const NET_RT_IFLISTL = 5 pkg syscall (freebsd-386), const NET_RT_IFLISTL ideal-int pkg syscall (freebsd-386), const NET_RT_IFMALIST = 4 pkg syscall (freebsd-386), const NET_RT_MAXID = 6 pkg syscall (freebsd-386), const NOFLSH = 2147483648 pkg syscall (freebsd-386), const NOFLSH ideal-int pkg syscall (freebsd-386), const NOTE_ATTRIB = 8 pkg syscall (freebsd-386), const NOTE_CHILD = 4 pkg syscall (freebsd-386), const NOTE_DELETE = 1 pkg syscall (freebsd-386), const NOTE_EXEC = 536870912 pkg syscall (freebsd-386), const NOTE_EXIT = 2147483648 pkg syscall (freebsd-386), const NOTE_EXTEND = 4 pkg syscall (freebsd-386), const NOTE_FFAND = 1073741824 pkg syscall (freebsd-386), const NOTE_FFCOPY = 3221225472 pkg syscall (freebsd-386), const NOTE_FFCTRLMASK = 3221225472 pkg syscall (freebsd-386), const NOTE_FFLAGSMASK = 16777215 pkg syscall (freebsd-386), const NOTE_FFNOP = 0 pkg syscall (freebsd-386), const NOTE_FFOR = 2147483648 pkg syscall (freebsd-386), const NOTE_FORK = 1073741824 pkg syscall (freebsd-386), const NOTE_LINK = 16 pkg syscall (freebsd-386), const NOTE_LOWAT = 1 pkg syscall (freebsd-386), const NOTE_PCTRLMASK = 4026531840 pkg syscall (freebsd-386), const NOTE_PDATAMASK = 1048575 pkg syscall (freebsd-386), const NOTE_RENAME = 32 pkg syscall (freebsd-386), const NOTE_REVOKE = 64 pkg syscall (freebsd-386), const NOTE_TRACK = 1 pkg syscall (freebsd-386), const NOTE_TRACKERR = 2 pkg syscall (freebsd-386), const NOTE_TRIGGER = 16777216 pkg syscall (freebsd-386), const NOTE_WRITE = 2 pkg syscall (freebsd-386), const OCRNL = 16 pkg syscall (freebsd-386), const OCRNL ideal-int pkg syscall (freebsd-386), const ONLCR = 2 pkg syscall (freebsd-386), const ONLCR ideal-int pkg syscall (freebsd-386), const ONLRET = 64 pkg syscall (freebsd-386), const ONLRET ideal-int pkg syscall (freebsd-386), const ONOCR = 32 pkg syscall (freebsd-386), const ONOCR ideal-int pkg syscall (freebsd-386), const ONOEOT = 8 pkg syscall (freebsd-386), const ONOEOT ideal-int pkg syscall (freebsd-386), const OPOST = 1 pkg syscall (freebsd-386), const OPOST ideal-int pkg syscall (freebsd-386), const O_ACCMODE = 3 pkg syscall (freebsd-386), const O_APPEND = 8 pkg syscall (freebsd-386), const O_ASYNC = 64 pkg syscall (freebsd-386), const O_CLOEXEC = 0 pkg syscall (freebsd-386), const O_CREAT = 512 pkg syscall (freebsd-386), const O_DIRECT = 65536 pkg syscall (freebsd-386), const O_DIRECTORY = 131072 pkg syscall (freebsd-386), const O_EXCL = 2048 pkg syscall (freebsd-386), const O_EXEC = 262144 pkg syscall (freebsd-386), const O_EXLOCK = 32 pkg syscall (freebsd-386), const O_FSYNC = 128 pkg syscall (freebsd-386), const O_NDELAY = 4 pkg syscall (freebsd-386), const O_NOCTTY = 32768 pkg syscall (freebsd-386), const O_NOFOLLOW = 256 pkg syscall (freebsd-386), const O_NONBLOCK = 4 pkg syscall (freebsd-386), const O_SHLOCK = 16 pkg syscall (freebsd-386), const O_SYNC = 128 pkg syscall (freebsd-386), const O_TRUNC = 1024 pkg syscall (freebsd-386), const O_TTY_INIT = 524288 pkg syscall (freebsd-386), const PARENB = 4096 pkg syscall (freebsd-386), const PARENB ideal-int pkg syscall (freebsd-386), const PARMRK = 8 pkg syscall (freebsd-386), const PARMRK ideal-int pkg syscall (freebsd-386), const PARODD = 8192 pkg syscall (freebsd-386), const PARODD ideal-int pkg syscall (freebsd-386), const PENDIN = 536870912 pkg syscall (freebsd-386), const PENDIN ideal-int pkg syscall (freebsd-386), const PROT_EXEC = 4 pkg syscall (freebsd-386), const PROT_EXEC ideal-int pkg syscall (freebsd-386), const PROT_NONE = 0 pkg syscall (freebsd-386), const PROT_NONE ideal-int pkg syscall (freebsd-386), const PROT_READ = 1 pkg syscall (freebsd-386), const PROT_READ ideal-int pkg syscall (freebsd-386), const PROT_WRITE = 2 pkg syscall (freebsd-386), const PROT_WRITE ideal-int pkg syscall (freebsd-386), const PTRACE_CONT = 7 pkg syscall (freebsd-386), const PTRACE_KILL = 8 pkg syscall (freebsd-386), const PTRACE_TRACEME = 0 pkg syscall (freebsd-386), const RLIMIT_AS = 10 pkg syscall (freebsd-386), const RLIMIT_CORE = 4 pkg syscall (freebsd-386), const RLIMIT_CPU = 0 pkg syscall (freebsd-386), const RLIMIT_DATA = 2 pkg syscall (freebsd-386), const RLIMIT_FSIZE = 1 pkg syscall (freebsd-386), const RLIMIT_NOFILE = 8 pkg syscall (freebsd-386), const RLIMIT_STACK = 3 pkg syscall (freebsd-386), const RLIM_INFINITY = 9223372036854775807 pkg syscall (freebsd-386), const RTAX_AUTHOR = 6 pkg syscall (freebsd-386), const RTAX_BRD = 7 pkg syscall (freebsd-386), const RTAX_DST = 0 pkg syscall (freebsd-386), const RTAX_GATEWAY = 1 pkg syscall (freebsd-386), const RTAX_GENMASK = 3 pkg syscall (freebsd-386), const RTAX_IFA = 5 pkg syscall (freebsd-386), const RTAX_IFP = 4 pkg syscall (freebsd-386), const RTAX_MAX = 8 pkg syscall (freebsd-386), const RTAX_NETMASK = 2 pkg syscall (freebsd-386), const RTA_AUTHOR = 64 pkg syscall (freebsd-386), const RTA_BRD = 128 pkg syscall (freebsd-386), const RTA_DST = 1 pkg syscall (freebsd-386), const RTA_GATEWAY = 2 pkg syscall (freebsd-386), const RTA_GENMASK = 8 pkg syscall (freebsd-386), const RTA_IFA = 32 pkg syscall (freebsd-386), const RTA_IFP = 16 pkg syscall (freebsd-386), const RTA_NETMASK = 4 pkg syscall (freebsd-386), const RTF_BLACKHOLE = 4096 pkg syscall (freebsd-386), const RTF_BROADCAST = 4194304 pkg syscall (freebsd-386), const RTF_DONE = 64 pkg syscall (freebsd-386), const RTF_DYNAMIC = 16 pkg syscall (freebsd-386), const RTF_FMASK = 268752904 pkg syscall (freebsd-386), const RTF_GATEWAY = 2 pkg syscall (freebsd-386), const RTF_HOST = 4 pkg syscall (freebsd-386), const RTF_LLDATA = 1024 pkg syscall (freebsd-386), const RTF_LLINFO = 1024 pkg syscall (freebsd-386), const RTF_LOCAL = 2097152 pkg syscall (freebsd-386), const RTF_MODIFIED = 32 pkg syscall (freebsd-386), const RTF_MULTICAST = 8388608 pkg syscall (freebsd-386), const RTF_PINNED = 1048576 pkg syscall (freebsd-386), const RTF_PRCLONING = 65536 pkg syscall (freebsd-386), const RTF_PROTO1 = 32768 pkg syscall (freebsd-386), const RTF_PROTO2 = 16384 pkg syscall (freebsd-386), const RTF_PROTO3 = 262144 pkg syscall (freebsd-386), const RTF_REJECT = 8 pkg syscall (freebsd-386), const RTF_RNH_LOCKED = 1073741824 pkg syscall (freebsd-386), const RTF_STATIC = 2048 pkg syscall (freebsd-386), const RTF_STICKY = 268435456 pkg syscall (freebsd-386), const RTF_UP = 1 pkg syscall (freebsd-386), const RTF_XRESOLVE = 512 pkg syscall (freebsd-386), const RTM_ADD = 1 pkg syscall (freebsd-386), const RTM_CHANGE = 3 pkg syscall (freebsd-386), const RTM_DELADDR = 13 pkg syscall (freebsd-386), const RTM_DELETE = 2 pkg syscall (freebsd-386), const RTM_DELMADDR = 16 pkg syscall (freebsd-386), const RTM_GET = 4 pkg syscall (freebsd-386), const RTM_IEEE80211 = 18 pkg syscall (freebsd-386), const RTM_IFANNOUNCE = 17 pkg syscall (freebsd-386), const RTM_IFINFO = 14 pkg syscall (freebsd-386), const RTM_LOCK = 8 pkg syscall (freebsd-386), const RTM_LOSING = 5 pkg syscall (freebsd-386), const RTM_MISS = 7 pkg syscall (freebsd-386), const RTM_NEWADDR = 12 pkg syscall (freebsd-386), const RTM_NEWMADDR = 15 pkg syscall (freebsd-386), const RTM_OLDADD = 9 pkg syscall (freebsd-386), const RTM_OLDDEL = 10 pkg syscall (freebsd-386), const RTM_REDIRECT = 6 pkg syscall (freebsd-386), const RTM_RESOLVE = 11 pkg syscall (freebsd-386), const RTM_RTTUNIT = 1000000 pkg syscall (freebsd-386), const RTM_VERSION = 5 pkg syscall (freebsd-386), const RTV_EXPIRE = 4 pkg syscall (freebsd-386), const RTV_HOPCOUNT = 2 pkg syscall (freebsd-386), const RTV_MTU = 1 pkg syscall (freebsd-386), const RTV_RPIPE = 8 pkg syscall (freebsd-386), const RTV_RTT = 64 pkg syscall (freebsd-386), const RTV_RTTVAR = 128 pkg syscall (freebsd-386), const RTV_SPIPE = 16 pkg syscall (freebsd-386), const RTV_SSTHRESH = 32 pkg syscall (freebsd-386), const RTV_WEIGHT = 256 pkg syscall (freebsd-386), const RT_CACHING_CONTEXT = 1 pkg syscall (freebsd-386), const RT_CACHING_CONTEXT ideal-int pkg syscall (freebsd-386), const RT_DEFAULT_FIB = 0 pkg syscall (freebsd-386), const RT_DEFAULT_FIB ideal-int pkg syscall (freebsd-386), const RUSAGE_CHILDREN = -1 pkg syscall (freebsd-386), const RUSAGE_SELF = 0 pkg syscall (freebsd-386), const RUSAGE_THREAD = 1 pkg syscall (freebsd-386), const SCM_BINTIME = 4 pkg syscall (freebsd-386), const SCM_CREDS = 3 pkg syscall (freebsd-386), const SCM_RIGHTS = 1 pkg syscall (freebsd-386), const SCM_TIMESTAMP = 2 pkg syscall (freebsd-386), const SIGBUS = 10 pkg syscall (freebsd-386), const SIGCHLD = 20 pkg syscall (freebsd-386), const SIGCONT = 19 pkg syscall (freebsd-386), const SIGEMT = 7 pkg syscall (freebsd-386), const SIGINFO = 29 pkg syscall (freebsd-386), const SIGIO = 23 pkg syscall (freebsd-386), const SIGIOT = 6 pkg syscall (freebsd-386), const SIGLWP = 32 pkg syscall (freebsd-386), const SIGPROF = 27 pkg syscall (freebsd-386), const SIGSTOP = 17 pkg syscall (freebsd-386), const SIGSYS = 12 pkg syscall (freebsd-386), const SIGTHR = 32 pkg syscall (freebsd-386), const SIGTSTP = 18 pkg syscall (freebsd-386), const SIGTTIN = 21 pkg syscall (freebsd-386), const SIGTTOU = 22 pkg syscall (freebsd-386), const SIGURG = 16 pkg syscall (freebsd-386), const SIGUSR1 = 30 pkg syscall (freebsd-386), const SIGUSR2 = 31 pkg syscall (freebsd-386), const SIGVTALRM = 26 pkg syscall (freebsd-386), const SIGWINCH = 28 pkg syscall (freebsd-386), const SIGXCPU = 24 pkg syscall (freebsd-386), const SIGXFSZ = 25 pkg syscall (freebsd-386), const SIOCADDMULTI = 2149607729 pkg syscall (freebsd-386), const SIOCADDRT = 2150658570 pkg syscall (freebsd-386), const SIOCAIFADDR = 2151704858 pkg syscall (freebsd-386), const SIOCAIFGROUP = 2149869959 pkg syscall (freebsd-386), const SIOCALIFADDR = 2165860635 pkg syscall (freebsd-386), const SIOCATMARK = 1074033415 pkg syscall (freebsd-386), const SIOCDELMULTI = 2149607730 pkg syscall (freebsd-386), const SIOCDELRT = 2150658571 pkg syscall (freebsd-386), const SIOCDIFADDR = 2149607705 pkg syscall (freebsd-386), const SIOCDIFGROUP = 2149869961 pkg syscall (freebsd-386), const SIOCDIFPHYADDR = 2149607753 pkg syscall (freebsd-386), const SIOCDLIFADDR = 2165860637 pkg syscall (freebsd-386), const SIOCGDRVSPEC = 3223087483 pkg syscall (freebsd-386), const SIOCGETSGCNT = 3222565392 pkg syscall (freebsd-386), const SIOCGETVIFCNT = 3222565391 pkg syscall (freebsd-386), const SIOCGHIWAT = 1074033409 pkg syscall (freebsd-386), const SIOCGIFADDR = 3223349537 pkg syscall (freebsd-386), const SIOCGIFBRDADDR = 3223349539 pkg syscall (freebsd-386), const SIOCGIFCAP = 3223349535 pkg syscall (freebsd-386), const SIOCGIFCONF = 3221776676 pkg syscall (freebsd-386), const SIOCGIFDESCR = 3223349546 pkg syscall (freebsd-386), const SIOCGIFDSTADDR = 3223349538 pkg syscall (freebsd-386), const SIOCGIFFIB = 3223349596 pkg syscall (freebsd-386), const SIOCGIFFIB ideal-int pkg syscall (freebsd-386), const SIOCGIFFLAGS = 3223349521 pkg syscall (freebsd-386), const SIOCGIFGENERIC = 3223349562 pkg syscall (freebsd-386), const SIOCGIFGMEMB = 3223611786 pkg syscall (freebsd-386), const SIOCGIFGROUP = 3223611784 pkg syscall (freebsd-386), const SIOCGIFINDEX = 3223349536 pkg syscall (freebsd-386), const SIOCGIFMAC = 3223349542 pkg syscall (freebsd-386), const SIOCGIFMEDIA = 3223873848 pkg syscall (freebsd-386), const SIOCGIFMETRIC = 3223349527 pkg syscall (freebsd-386), const SIOCGIFMTU = 3223349555 pkg syscall (freebsd-386), const SIOCGIFNETMASK = 3223349541 pkg syscall (freebsd-386), const SIOCGIFPDSTADDR = 3223349576 pkg syscall (freebsd-386), const SIOCGIFPHYS = 3223349557 pkg syscall (freebsd-386), const SIOCGIFPSRCADDR = 3223349575 pkg syscall (freebsd-386), const SIOCGIFSTATUS = 3274795323 pkg syscall (freebsd-386), const SIOCGLIFADDR = 3239602460 pkg syscall (freebsd-386), const SIOCGLIFPHYADDR = 3239602507 pkg syscall (freebsd-386), const SIOCGLOWAT = 1074033411 pkg syscall (freebsd-386), const SIOCGPGRP = 1074033417 pkg syscall (freebsd-386), const SIOCGPRIVATE_0 = 3223349584 pkg syscall (freebsd-386), const SIOCGPRIVATE_1 = 3223349585 pkg syscall (freebsd-386), const SIOCIFCREATE = 3223349626 pkg syscall (freebsd-386), const SIOCIFCREATE2 = 3223349628 pkg syscall (freebsd-386), const SIOCIFDESTROY = 2149607801 pkg syscall (freebsd-386), const SIOCIFGCLONERS = 3222038904 pkg syscall (freebsd-386), const SIOCSDRVSPEC = 2149345659 pkg syscall (freebsd-386), const SIOCSHIWAT = 2147775232 pkg syscall (freebsd-386), const SIOCSIFADDR = 2149607692 pkg syscall (freebsd-386), const SIOCSIFBRDADDR = 2149607699 pkg syscall (freebsd-386), const SIOCSIFCAP = 2149607710 pkg syscall (freebsd-386), const SIOCSIFDESCR = 2149607721 pkg syscall (freebsd-386), const SIOCSIFDSTADDR = 2149607694 pkg syscall (freebsd-386), const SIOCSIFFIB = 2149607773 pkg syscall (freebsd-386), const SIOCSIFFIB ideal-int pkg syscall (freebsd-386), const SIOCSIFFLAGS = 2149607696 pkg syscall (freebsd-386), const SIOCSIFGENERIC = 2149607737 pkg syscall (freebsd-386), const SIOCSIFLLADDR = 2149607740 pkg syscall (freebsd-386), const SIOCSIFMAC = 2149607719 pkg syscall (freebsd-386), const SIOCSIFMEDIA = 3223349559 pkg syscall (freebsd-386), const SIOCSIFMETRIC = 2149607704 pkg syscall (freebsd-386), const SIOCSIFMTU = 2149607732 pkg syscall (freebsd-386), const SIOCSIFNAME = 2149607720 pkg syscall (freebsd-386), const SIOCSIFNETMASK = 2149607702 pkg syscall (freebsd-386), const SIOCSIFPHYADDR = 2151704902 pkg syscall (freebsd-386), const SIOCSIFPHYS = 2149607734 pkg syscall (freebsd-386), const SIOCSIFRVNET = 3223349595 pkg syscall (freebsd-386), const SIOCSIFVNET = 3223349594 pkg syscall (freebsd-386), const SIOCSLIFPHYADDR = 2165860682 pkg syscall (freebsd-386), const SIOCSLOWAT = 2147775234 pkg syscall (freebsd-386), const SIOCSPGRP = 2147775240 pkg syscall (freebsd-386), const SOCK_MAXADDRLEN = 255 pkg syscall (freebsd-386), const SOCK_RDM = 4 pkg syscall (freebsd-386), const SOL_SOCKET = 65535 pkg syscall (freebsd-386), const SOMAXCONN = 128 pkg syscall (freebsd-386), const SO_ACCEPTCONN = 2 pkg syscall (freebsd-386), const SO_ACCEPTFILTER = 4096 pkg syscall (freebsd-386), const SO_BINTIME = 8192 pkg syscall (freebsd-386), const SO_BROADCAST = 32 pkg syscall (freebsd-386), const SO_DEBUG = 1 pkg syscall (freebsd-386), const SO_DONTROUTE = 16 pkg syscall (freebsd-386), const SO_ERROR = 4103 pkg syscall (freebsd-386), const SO_KEEPALIVE = 8 pkg syscall (freebsd-386), const SO_LABEL = 4105 pkg syscall (freebsd-386), const SO_LINGER = 128 pkg syscall (freebsd-386), const SO_LISTENINCQLEN = 4115 pkg syscall (freebsd-386), const SO_LISTENQLEN = 4114 pkg syscall (freebsd-386), const SO_LISTENQLIMIT = 4113 pkg syscall (freebsd-386), const SO_NOSIGPIPE = 2048 pkg syscall (freebsd-386), const SO_NO_DDP = 32768 pkg syscall (freebsd-386), const SO_NO_OFFLOAD = 16384 pkg syscall (freebsd-386), const SO_OOBINLINE = 256 pkg syscall (freebsd-386), const SO_PEERLABEL = 4112 pkg syscall (freebsd-386), const SO_PROTOCOL = 4118 pkg syscall (freebsd-386), const SO_PROTOCOL ideal-int pkg syscall (freebsd-386), const SO_PROTOTYPE = 4118 pkg syscall (freebsd-386), const SO_PROTOTYPE ideal-int pkg syscall (freebsd-386), const SO_RCVBUF = 4098 pkg syscall (freebsd-386), const SO_RCVLOWAT = 4100 pkg syscall (freebsd-386), const SO_RCVTIMEO = 4102 pkg syscall (freebsd-386), const SO_REUSEADDR = 4 pkg syscall (freebsd-386), const SO_REUSEPORT = 512 pkg syscall (freebsd-386), const SO_SETFIB = 4116 pkg syscall (freebsd-386), const SO_SNDBUF = 4097 pkg syscall (freebsd-386), const SO_SNDLOWAT = 4099 pkg syscall (freebsd-386), const SO_SNDTIMEO = 4101 pkg syscall (freebsd-386), const SO_TIMESTAMP = 1024 pkg syscall (freebsd-386), const SO_TYPE = 4104 pkg syscall (freebsd-386), const SO_USELOOPBACK = 64 pkg syscall (freebsd-386), const SO_USER_COOKIE = 4117 pkg syscall (freebsd-386), const SO_USER_COOKIE ideal-int pkg syscall (freebsd-386), const SYS_ABORT2 = 463 pkg syscall (freebsd-386), const SYS_ACCEPT = 30 pkg syscall (freebsd-386), const SYS_ACCESS = 33 pkg syscall (freebsd-386), const SYS_ACCT = 51 pkg syscall (freebsd-386), const SYS_ADJTIME = 140 pkg syscall (freebsd-386), const SYS_AUDIT = 445 pkg syscall (freebsd-386), const SYS_AUDITCTL = 453 pkg syscall (freebsd-386), const SYS_AUDITON = 446 pkg syscall (freebsd-386), const SYS_BIND = 104 pkg syscall (freebsd-386), const SYS_CAP_ENTER = 516 pkg syscall (freebsd-386), const SYS_CAP_GETMODE = 517 pkg syscall (freebsd-386), const SYS_CAP_GETRIGHTS = 515 pkg syscall (freebsd-386), const SYS_CAP_NEW = 514 pkg syscall (freebsd-386), const SYS_CHDIR = 12 pkg syscall (freebsd-386), const SYS_CHFLAGS = 34 pkg syscall (freebsd-386), const SYS_CHMOD = 15 pkg syscall (freebsd-386), const SYS_CHOWN = 16 pkg syscall (freebsd-386), const SYS_CHROOT = 61 pkg syscall (freebsd-386), const SYS_CLOCK_GETCPUCLOCKID2 = 247 pkg syscall (freebsd-386), const SYS_CLOCK_GETCPUCLOCKID2 ideal-int pkg syscall (freebsd-386), const SYS_CLOCK_GETRES = 234 pkg syscall (freebsd-386), const SYS_CLOCK_GETTIME = 232 pkg syscall (freebsd-386), const SYS_CLOCK_SETTIME = 233 pkg syscall (freebsd-386), const SYS_CLOSE = 6 pkg syscall (freebsd-386), const SYS_CLOSEFROM = 509 pkg syscall (freebsd-386), const SYS_CONNECT = 98 pkg syscall (freebsd-386), const SYS_CPUSET = 484 pkg syscall (freebsd-386), const SYS_CPUSET_GETAFFINITY = 487 pkg syscall (freebsd-386), const SYS_CPUSET_GETID = 486 pkg syscall (freebsd-386), const SYS_CPUSET_SETAFFINITY = 488 pkg syscall (freebsd-386), const SYS_CPUSET_SETID = 485 pkg syscall (freebsd-386), const SYS_DUP = 41 pkg syscall (freebsd-386), const SYS_DUP2 = 90 pkg syscall (freebsd-386), const SYS_EACCESS = 376 pkg syscall (freebsd-386), const SYS_EXECVE = 59 pkg syscall (freebsd-386), const SYS_EXIT = 1 pkg syscall (freebsd-386), const SYS_EXTATTRCTL = 355 pkg syscall (freebsd-386), const SYS_EXTATTR_DELETE_FD = 373 pkg syscall (freebsd-386), const SYS_EXTATTR_DELETE_FILE = 358 pkg syscall (freebsd-386), const SYS_EXTATTR_DELETE_LINK = 414 pkg syscall (freebsd-386), const SYS_EXTATTR_GET_FD = 372 pkg syscall (freebsd-386), const SYS_EXTATTR_GET_FILE = 357 pkg syscall (freebsd-386), const SYS_EXTATTR_GET_LINK = 413 pkg syscall (freebsd-386), const SYS_EXTATTR_LIST_FD = 437 pkg syscall (freebsd-386), const SYS_EXTATTR_LIST_FILE = 438 pkg syscall (freebsd-386), const SYS_EXTATTR_LIST_LINK = 439 pkg syscall (freebsd-386), const SYS_EXTATTR_SET_FD = 371 pkg syscall (freebsd-386), const SYS_EXTATTR_SET_FILE = 356 pkg syscall (freebsd-386), const SYS_EXTATTR_SET_LINK = 412 pkg syscall (freebsd-386), const SYS_FACCESSAT = 489 pkg syscall (freebsd-386), const SYS_FCHDIR = 13 pkg syscall (freebsd-386), const SYS_FCHFLAGS = 35 pkg syscall (freebsd-386), const SYS_FCHMOD = 124 pkg syscall (freebsd-386), const SYS_FCHMODAT = 490 pkg syscall (freebsd-386), const SYS_FCHOWN = 123 pkg syscall (freebsd-386), const SYS_FCHOWNAT = 491 pkg syscall (freebsd-386), const SYS_FCNTL = 92 pkg syscall (freebsd-386), const SYS_FEXECVE = 492 pkg syscall (freebsd-386), const SYS_FFCLOCK_GETCOUNTER = 241 pkg syscall (freebsd-386), const SYS_FFCLOCK_GETESTIMATE = 243 pkg syscall (freebsd-386), const SYS_FFCLOCK_SETESTIMATE = 242 pkg syscall (freebsd-386), const SYS_FHOPEN = 298 pkg syscall (freebsd-386), const SYS_FHSTAT = 299 pkg syscall (freebsd-386), const SYS_FHSTATFS = 398 pkg syscall (freebsd-386), const SYS_FLOCK = 131 pkg syscall (freebsd-386), const SYS_FORK = 2 pkg syscall (freebsd-386), const SYS_FPATHCONF = 192 pkg syscall (freebsd-386), const SYS_FREEBSD6_FTRUNCATE = 201 pkg syscall (freebsd-386), const SYS_FREEBSD6_LSEEK = 199 pkg syscall (freebsd-386), const SYS_FREEBSD6_MMAP = 197 pkg syscall (freebsd-386), const SYS_FREEBSD6_PREAD = 173 pkg syscall (freebsd-386), const SYS_FREEBSD6_PWRITE = 174 pkg syscall (freebsd-386), const SYS_FREEBSD6_TRUNCATE = 200 pkg syscall (freebsd-386), const SYS_FSTAT = 189 pkg syscall (freebsd-386), const SYS_FSTATAT = 493 pkg syscall (freebsd-386), const SYS_FSTATFS = 397 pkg syscall (freebsd-386), const SYS_FSYNC = 95 pkg syscall (freebsd-386), const SYS_FTRUNCATE = 480 pkg syscall (freebsd-386), const SYS_FUTIMES = 206 pkg syscall (freebsd-386), const SYS_FUTIMESAT = 494 pkg syscall (freebsd-386), const SYS_GETAUDIT = 449 pkg syscall (freebsd-386), const SYS_GETAUDIT_ADDR = 451 pkg syscall (freebsd-386), const SYS_GETAUID = 447 pkg syscall (freebsd-386), const SYS_GETCONTEXT = 421 pkg syscall (freebsd-386), const SYS_GETDENTS = 272 pkg syscall (freebsd-386), const SYS_GETDIRENTRIES = 196 pkg syscall (freebsd-386), const SYS_GETDTABLESIZE = 89 pkg syscall (freebsd-386), const SYS_GETEGID = 43 pkg syscall (freebsd-386), const SYS_GETEUID = 25 pkg syscall (freebsd-386), const SYS_GETFH = 161 pkg syscall (freebsd-386), const SYS_GETFSSTAT = 395 pkg syscall (freebsd-386), const SYS_GETGID = 47 pkg syscall (freebsd-386), const SYS_GETGROUPS = 79 pkg syscall (freebsd-386), const SYS_GETITIMER = 86 pkg syscall (freebsd-386), const SYS_GETLOGIN = 49 pkg syscall (freebsd-386), const SYS_GETLOGINCLASS = 523 pkg syscall (freebsd-386), const SYS_GETPEERNAME = 31 pkg syscall (freebsd-386), const SYS_GETPGID = 207 pkg syscall (freebsd-386), const SYS_GETPGRP = 81 pkg syscall (freebsd-386), const SYS_GETPID = 20 pkg syscall (freebsd-386), const SYS_GETPPID = 39 pkg syscall (freebsd-386), const SYS_GETPRIORITY = 100 pkg syscall (freebsd-386), const SYS_GETRESGID = 361 pkg syscall (freebsd-386), const SYS_GETRESUID = 360 pkg syscall (freebsd-386), const SYS_GETRLIMIT = 194 pkg syscall (freebsd-386), const SYS_GETRUSAGE = 117 pkg syscall (freebsd-386), const SYS_GETSID = 310 pkg syscall (freebsd-386), const SYS_GETSOCKNAME = 32 pkg syscall (freebsd-386), const SYS_GETSOCKOPT = 118 pkg syscall (freebsd-386), const SYS_GETTIMEOFDAY = 116 pkg syscall (freebsd-386), const SYS_GETUID = 24 pkg syscall (freebsd-386), const SYS_IOCTL = 54 pkg syscall (freebsd-386), const SYS_ISSETUGID = 253 pkg syscall (freebsd-386), const SYS_JAIL = 338 pkg syscall (freebsd-386), const SYS_JAIL_ATTACH = 436 pkg syscall (freebsd-386), const SYS_JAIL_GET = 506 pkg syscall (freebsd-386), const SYS_JAIL_REMOVE = 508 pkg syscall (freebsd-386), const SYS_JAIL_SET = 507 pkg syscall (freebsd-386), const SYS_KENV = 390 pkg syscall (freebsd-386), const SYS_KEVENT = 363 pkg syscall (freebsd-386), const SYS_KILL = 37 pkg syscall (freebsd-386), const SYS_KLDFIND = 306 pkg syscall (freebsd-386), const SYS_KLDFIRSTMOD = 309 pkg syscall (freebsd-386), const SYS_KLDLOAD = 304 pkg syscall (freebsd-386), const SYS_KLDNEXT = 307 pkg syscall (freebsd-386), const SYS_KLDSTAT = 308 pkg syscall (freebsd-386), const SYS_KLDSYM = 337 pkg syscall (freebsd-386), const SYS_KLDUNLOAD = 305 pkg syscall (freebsd-386), const SYS_KLDUNLOADF = 444 pkg syscall (freebsd-386), const SYS_KQUEUE = 362 pkg syscall (freebsd-386), const SYS_KTIMER_CREATE = 235 pkg syscall (freebsd-386), const SYS_KTIMER_DELETE = 236 pkg syscall (freebsd-386), const SYS_KTIMER_GETOVERRUN = 239 pkg syscall (freebsd-386), const SYS_KTIMER_GETTIME = 238 pkg syscall (freebsd-386), const SYS_KTIMER_SETTIME = 237 pkg syscall (freebsd-386), const SYS_KTRACE = 45 pkg syscall (freebsd-386), const SYS_LCHFLAGS = 391 pkg syscall (freebsd-386), const SYS_LCHMOD = 274 pkg syscall (freebsd-386), const SYS_LCHOWN = 254 pkg syscall (freebsd-386), const SYS_LGETFH = 160 pkg syscall (freebsd-386), const SYS_LINK = 9 pkg syscall (freebsd-386), const SYS_LINKAT = 495 pkg syscall (freebsd-386), const SYS_LISTEN = 106 pkg syscall (freebsd-386), const SYS_LPATHCONF = 513 pkg syscall (freebsd-386), const SYS_LSEEK = 478 pkg syscall (freebsd-386), const SYS_LSTAT = 190 pkg syscall (freebsd-386), const SYS_LUTIMES = 276 pkg syscall (freebsd-386), const SYS_MAC_SYSCALL = 394 pkg syscall (freebsd-386), const SYS_MADVISE = 75 pkg syscall (freebsd-386), const SYS_MINCORE = 78 pkg syscall (freebsd-386), const SYS_MINHERIT = 250 pkg syscall (freebsd-386), const SYS_MKDIR = 136 pkg syscall (freebsd-386), const SYS_MKDIRAT = 496 pkg syscall (freebsd-386), const SYS_MKFIFO = 132 pkg syscall (freebsd-386), const SYS_MKFIFOAT = 497 pkg syscall (freebsd-386), const SYS_MKNOD = 14 pkg syscall (freebsd-386), const SYS_MKNODAT = 498 pkg syscall (freebsd-386), const SYS_MLOCK = 203 pkg syscall (freebsd-386), const SYS_MLOCKALL = 324 pkg syscall (freebsd-386), const SYS_MMAP = 477 pkg syscall (freebsd-386), const SYS_MODFIND = 303 pkg syscall (freebsd-386), const SYS_MODFNEXT = 302 pkg syscall (freebsd-386), const SYS_MODNEXT = 300 pkg syscall (freebsd-386), const SYS_MODSTAT = 301 pkg syscall (freebsd-386), const SYS_MOUNT = 21 pkg syscall (freebsd-386), const SYS_MPROTECT = 74 pkg syscall (freebsd-386), const SYS_MSYNC = 65 pkg syscall (freebsd-386), const SYS_MUNLOCK = 204 pkg syscall (freebsd-386), const SYS_MUNLOCKALL = 325 pkg syscall (freebsd-386), const SYS_MUNMAP = 73 pkg syscall (freebsd-386), const SYS_NANOSLEEP = 240 pkg syscall (freebsd-386), const SYS_NFSTAT = 279 pkg syscall (freebsd-386), const SYS_NLSTAT = 280 pkg syscall (freebsd-386), const SYS_NMOUNT = 378 pkg syscall (freebsd-386), const SYS_NSTAT = 278 pkg syscall (freebsd-386), const SYS_NTP_ADJTIME = 176 pkg syscall (freebsd-386), const SYS_NTP_GETTIME = 248 pkg syscall (freebsd-386), const SYS_OBREAK = 17 pkg syscall (freebsd-386), const SYS_OPEN = 5 pkg syscall (freebsd-386), const SYS_OPENAT = 499 pkg syscall (freebsd-386), const SYS_OPENBSD_POLL = 252 pkg syscall (freebsd-386), const SYS_OVADVISE = 72 pkg syscall (freebsd-386), const SYS_PATHCONF = 191 pkg syscall (freebsd-386), const SYS_PDFORK = 518 pkg syscall (freebsd-386), const SYS_PDGETPID = 520 pkg syscall (freebsd-386), const SYS_PDKILL = 519 pkg syscall (freebsd-386), const SYS_PIPE = 42 pkg syscall (freebsd-386), const SYS_POLL = 209 pkg syscall (freebsd-386), const SYS_POSIX_FADVISE = 531 pkg syscall (freebsd-386), const SYS_POSIX_FALLOCATE = 530 pkg syscall (freebsd-386), const SYS_POSIX_OPENPT = 504 pkg syscall (freebsd-386), const SYS_PREAD = 475 pkg syscall (freebsd-386), const SYS_PREADV = 289 pkg syscall (freebsd-386), const SYS_PROFIL = 44 pkg syscall (freebsd-386), const SYS_PSELECT = 522 pkg syscall (freebsd-386), const SYS_PTRACE = 26 pkg syscall (freebsd-386), const SYS_PWRITE = 476 pkg syscall (freebsd-386), const SYS_PWRITEV = 290 pkg syscall (freebsd-386), const SYS_QUOTACTL = 148 pkg syscall (freebsd-386), const SYS_RCTL_ADD_RULE = 528 pkg syscall (freebsd-386), const SYS_RCTL_GET_LIMITS = 527 pkg syscall (freebsd-386), const SYS_RCTL_GET_RACCT = 525 pkg syscall (freebsd-386), const SYS_RCTL_GET_RULES = 526 pkg syscall (freebsd-386), const SYS_RCTL_REMOVE_RULE = 529 pkg syscall (freebsd-386), const SYS_READ = 3 pkg syscall (freebsd-386), const SYS_READLINK = 58 pkg syscall (freebsd-386), const SYS_READLINKAT = 500 pkg syscall (freebsd-386), const SYS_READV = 120 pkg syscall (freebsd-386), const SYS_REBOOT = 55 pkg syscall (freebsd-386), const SYS_RECVFROM = 29 pkg syscall (freebsd-386), const SYS_RECVMSG = 27 pkg syscall (freebsd-386), const SYS_RENAME = 128 pkg syscall (freebsd-386), const SYS_RENAMEAT = 501 pkg syscall (freebsd-386), const SYS_REVOKE = 56 pkg syscall (freebsd-386), const SYS_RFORK = 251 pkg syscall (freebsd-386), const SYS_RMDIR = 137 pkg syscall (freebsd-386), const SYS_RTPRIO = 166 pkg syscall (freebsd-386), const SYS_RTPRIO_THREAD = 466 pkg syscall (freebsd-386), const SYS_SBRK = 69 pkg syscall (freebsd-386), const SYS_SCHED_GETPARAM = 328 pkg syscall (freebsd-386), const SYS_SCHED_GETSCHEDULER = 330 pkg syscall (freebsd-386), const SYS_SCHED_GET_PRIORITY_MAX = 332 pkg syscall (freebsd-386), const SYS_SCHED_GET_PRIORITY_MIN = 333 pkg syscall (freebsd-386), const SYS_SCHED_RR_GET_INTERVAL = 334 pkg syscall (freebsd-386), const SYS_SCHED_SETPARAM = 327 pkg syscall (freebsd-386), const SYS_SCHED_SETSCHEDULER = 329 pkg syscall (freebsd-386), const SYS_SCHED_YIELD = 331 pkg syscall (freebsd-386), const SYS_SCTP_GENERIC_RECVMSG = 474 pkg syscall (freebsd-386), const SYS_SCTP_GENERIC_SENDMSG = 472 pkg syscall (freebsd-386), const SYS_SCTP_GENERIC_SENDMSG_IOV = 473 pkg syscall (freebsd-386), const SYS_SCTP_PEELOFF = 471 pkg syscall (freebsd-386), const SYS_SELECT = 93 pkg syscall (freebsd-386), const SYS_SENDFILE = 393 pkg syscall (freebsd-386), const SYS_SENDMSG = 28 pkg syscall (freebsd-386), const SYS_SENDTO = 133 pkg syscall (freebsd-386), const SYS_SETAUDIT = 450 pkg syscall (freebsd-386), const SYS_SETAUDIT_ADDR = 452 pkg syscall (freebsd-386), const SYS_SETAUID = 448 pkg syscall (freebsd-386), const SYS_SETCONTEXT = 422 pkg syscall (freebsd-386), const SYS_SETEGID = 182 pkg syscall (freebsd-386), const SYS_SETEUID = 183 pkg syscall (freebsd-386), const SYS_SETFIB = 175 pkg syscall (freebsd-386), const SYS_SETGID = 181 pkg syscall (freebsd-386), const SYS_SETGROUPS = 80 pkg syscall (freebsd-386), const SYS_SETITIMER = 83 pkg syscall (freebsd-386), const SYS_SETLOGIN = 50 pkg syscall (freebsd-386), const SYS_SETLOGINCLASS = 524 pkg syscall (freebsd-386), const SYS_SETPGID = 82 pkg syscall (freebsd-386), const SYS_SETPRIORITY = 96 pkg syscall (freebsd-386), const SYS_SETREGID = 127 pkg syscall (freebsd-386), const SYS_SETRESGID = 312 pkg syscall (freebsd-386), const SYS_SETRESUID = 311 pkg syscall (freebsd-386), const SYS_SETREUID = 126 pkg syscall (freebsd-386), const SYS_SETRLIMIT = 195 pkg syscall (freebsd-386), const SYS_SETSID = 147 pkg syscall (freebsd-386), const SYS_SETSOCKOPT = 105 pkg syscall (freebsd-386), const SYS_SETTIMEOFDAY = 122 pkg syscall (freebsd-386), const SYS_SETUID = 23 pkg syscall (freebsd-386), const SYS_SHM_OPEN = 482 pkg syscall (freebsd-386), const SYS_SHM_UNLINK = 483 pkg syscall (freebsd-386), const SYS_SHUTDOWN = 134 pkg syscall (freebsd-386), const SYS_SIGACTION = 416 pkg syscall (freebsd-386), const SYS_SIGALTSTACK = 53 pkg syscall (freebsd-386), const SYS_SIGPENDING = 343 pkg syscall (freebsd-386), const SYS_SIGPROCMASK = 340 pkg syscall (freebsd-386), const SYS_SIGQUEUE = 456 pkg syscall (freebsd-386), const SYS_SIGRETURN = 417 pkg syscall (freebsd-386), const SYS_SIGSUSPEND = 341 pkg syscall (freebsd-386), const SYS_SIGTIMEDWAIT = 345 pkg syscall (freebsd-386), const SYS_SIGWAIT = 429 pkg syscall (freebsd-386), const SYS_SIGWAITINFO = 346 pkg syscall (freebsd-386), const SYS_SOCKET = 97 pkg syscall (freebsd-386), const SYS_SOCKETPAIR = 135 pkg syscall (freebsd-386), const SYS_SSTK = 70 pkg syscall (freebsd-386), const SYS_STAT = 188 pkg syscall (freebsd-386), const SYS_STATFS = 396 pkg syscall (freebsd-386), const SYS_SWAPCONTEXT = 423 pkg syscall (freebsd-386), const SYS_SWAPOFF = 424 pkg syscall (freebsd-386), const SYS_SWAPON = 85 pkg syscall (freebsd-386), const SYS_SYMLINK = 57 pkg syscall (freebsd-386), const SYS_SYMLINKAT = 502 pkg syscall (freebsd-386), const SYS_SYNC = 36 pkg syscall (freebsd-386), const SYS_SYSARCH = 165 pkg syscall (freebsd-386), const SYS_THR_CREATE = 430 pkg syscall (freebsd-386), const SYS_THR_EXIT = 431 pkg syscall (freebsd-386), const SYS_THR_KILL = 433 pkg syscall (freebsd-386), const SYS_THR_KILL2 = 481 pkg syscall (freebsd-386), const SYS_THR_NEW = 455 pkg syscall (freebsd-386), const SYS_THR_SELF = 432 pkg syscall (freebsd-386), const SYS_THR_SET_NAME = 464 pkg syscall (freebsd-386), const SYS_THR_SUSPEND = 442 pkg syscall (freebsd-386), const SYS_THR_WAKE = 443 pkg syscall (freebsd-386), const SYS_TRUNCATE = 479 pkg syscall (freebsd-386), const SYS_UMASK = 60 pkg syscall (freebsd-386), const SYS_UNDELETE = 205 pkg syscall (freebsd-386), const SYS_UNLINK = 10 pkg syscall (freebsd-386), const SYS_UNLINKAT = 503 pkg syscall (freebsd-386), const SYS_UNMOUNT = 22 pkg syscall (freebsd-386), const SYS_UTIMES = 138 pkg syscall (freebsd-386), const SYS_UTRACE = 335 pkg syscall (freebsd-386), const SYS_UUIDGEN = 392 pkg syscall (freebsd-386), const SYS_VFORK = 66 pkg syscall (freebsd-386), const SYS_WAIT4 = 7 pkg syscall (freebsd-386), const SYS_WAIT6 = 532 pkg syscall (freebsd-386), const SYS_WAIT6 ideal-int pkg syscall (freebsd-386), const SYS_WRITE = 4 pkg syscall (freebsd-386), const SYS_WRITEV = 121 pkg syscall (freebsd-386), const SYS_YIELD = 321 pkg syscall (freebsd-386), const SYS__UMTX_LOCK = 434 pkg syscall (freebsd-386), const SYS__UMTX_OP = 454 pkg syscall (freebsd-386), const SYS__UMTX_UNLOCK = 435 pkg syscall (freebsd-386), const SYS___ACL_ACLCHECK_FD = 354 pkg syscall (freebsd-386), const SYS___ACL_ACLCHECK_FILE = 353 pkg syscall (freebsd-386), const SYS___ACL_ACLCHECK_LINK = 428 pkg syscall (freebsd-386), const SYS___ACL_DELETE_FD = 352 pkg syscall (freebsd-386), const SYS___ACL_DELETE_FILE = 351 pkg syscall (freebsd-386), const SYS___ACL_DELETE_LINK = 427 pkg syscall (freebsd-386), const SYS___ACL_GET_FD = 349 pkg syscall (freebsd-386), const SYS___ACL_GET_FILE = 347 pkg syscall (freebsd-386), const SYS___ACL_GET_LINK = 425 pkg syscall (freebsd-386), const SYS___ACL_SET_FD = 350 pkg syscall (freebsd-386), const SYS___ACL_SET_FILE = 348 pkg syscall (freebsd-386), const SYS___ACL_SET_LINK = 426 pkg syscall (freebsd-386), const SYS___GETCWD = 326 pkg syscall (freebsd-386), const SYS___MAC_EXECVE = 415 pkg syscall (freebsd-386), const SYS___MAC_GET_FD = 386 pkg syscall (freebsd-386), const SYS___MAC_GET_FILE = 387 pkg syscall (freebsd-386), const SYS___MAC_GET_LINK = 410 pkg syscall (freebsd-386), const SYS___MAC_GET_PID = 409 pkg syscall (freebsd-386), const SYS___MAC_GET_PROC = 384 pkg syscall (freebsd-386), const SYS___MAC_SET_FD = 388 pkg syscall (freebsd-386), const SYS___MAC_SET_FILE = 389 pkg syscall (freebsd-386), const SYS___MAC_SET_LINK = 411 pkg syscall (freebsd-386), const SYS___MAC_SET_PROC = 385 pkg syscall (freebsd-386), const SYS___SETUGID = 374 pkg syscall (freebsd-386), const SYS___SYSCTL = 202 pkg syscall (freebsd-386), const S_IFMT = 61440 pkg syscall (freebsd-386), const SizeofBpfHdr = 20 pkg syscall (freebsd-386), const SizeofBpfInsn = 8 pkg syscall (freebsd-386), const SizeofBpfProgram = 8 pkg syscall (freebsd-386), const SizeofBpfStat = 8 pkg syscall (freebsd-386), const SizeofBpfVersion = 4 pkg syscall (freebsd-386), const SizeofBpfZbuf = 12 pkg syscall (freebsd-386), const SizeofBpfZbufHeader = 32 pkg syscall (freebsd-386), const SizeofCmsghdr = 12 pkg syscall (freebsd-386), const SizeofIPMreq = 8 pkg syscall (freebsd-386), const SizeofIPMreqn = 12 pkg syscall (freebsd-386), const SizeofIPv6Mreq = 20 pkg syscall (freebsd-386), const SizeofIfAnnounceMsghdr = 24 pkg syscall (freebsd-386), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (freebsd-386), const SizeofIfData = 80 pkg syscall (freebsd-386), const SizeofIfMsghdr = 96 pkg syscall (freebsd-386), const SizeofIfaMsghdr = 20 pkg syscall (freebsd-386), const SizeofIfmaMsghdr = 16 pkg syscall (freebsd-386), const SizeofInet6Pktinfo = 20 pkg syscall (freebsd-386), const SizeofLinger = 8 pkg syscall (freebsd-386), const SizeofMsghdr = 28 pkg syscall (freebsd-386), const SizeofRtMetrics = 56 pkg syscall (freebsd-386), const SizeofRtMsghdr = 92 pkg syscall (freebsd-386), const SizeofSockaddrAny = 108 pkg syscall (freebsd-386), const SizeofSockaddrDatalink = 54 pkg syscall (freebsd-386), const SizeofSockaddrInet4 = 16 pkg syscall (freebsd-386), const SizeofSockaddrInet6 = 28 pkg syscall (freebsd-386), const SizeofSockaddrUnix = 106 pkg syscall (freebsd-386), const TCIFLUSH = 1 pkg syscall (freebsd-386), const TCIFLUSH ideal-int pkg syscall (freebsd-386), const TCIOFLUSH = 3 pkg syscall (freebsd-386), const TCIOFLUSH ideal-int pkg syscall (freebsd-386), const TCOFLUSH = 2 pkg syscall (freebsd-386), const TCOFLUSH ideal-int pkg syscall (freebsd-386), const TCP_CA_NAME_MAX = 16 pkg syscall (freebsd-386), const TCP_CONGESTION = 64 pkg syscall (freebsd-386), const TCP_INFO = 32 pkg syscall (freebsd-386), const TCP_KEEPCNT = 1024 pkg syscall (freebsd-386), const TCP_KEEPCNT ideal-int pkg syscall (freebsd-386), const TCP_KEEPIDLE = 256 pkg syscall (freebsd-386), const TCP_KEEPIDLE ideal-int pkg syscall (freebsd-386), const TCP_KEEPINIT = 128 pkg syscall (freebsd-386), const TCP_KEEPINIT ideal-int pkg syscall (freebsd-386), const TCP_KEEPINTVL = 512 pkg syscall (freebsd-386), const TCP_KEEPINTVL ideal-int pkg syscall (freebsd-386), const TCP_MAXBURST = 4 pkg syscall (freebsd-386), const TCP_MAXHLEN = 60 pkg syscall (freebsd-386), const TCP_MAXOLEN = 40 pkg syscall (freebsd-386), const TCP_MAXSEG = 2 pkg syscall (freebsd-386), const TCP_MAXWIN = 65535 pkg syscall (freebsd-386), const TCP_MAX_SACK = 4 pkg syscall (freebsd-386), const TCP_MAX_WINSHIFT = 14 pkg syscall (freebsd-386), const TCP_MD5SIG = 16 pkg syscall (freebsd-386), const TCP_MINMSS = 216 pkg syscall (freebsd-386), const TCP_MSS = 536 pkg syscall (freebsd-386), const TCP_NOOPT = 8 pkg syscall (freebsd-386), const TCP_NOPUSH = 4 pkg syscall (freebsd-386), const TCSAFLUSH = 2 pkg syscall (freebsd-386), const TCSAFLUSH ideal-int pkg syscall (freebsd-386), const TIOCCBRK = 536900730 pkg syscall (freebsd-386), const TIOCCDTR = 536900728 pkg syscall (freebsd-386), const TIOCCONS = 2147775586 pkg syscall (freebsd-386), const TIOCDRAIN = 536900702 pkg syscall (freebsd-386), const TIOCEXCL = 536900621 pkg syscall (freebsd-386), const TIOCEXT = 2147775584 pkg syscall (freebsd-386), const TIOCFLUSH = 2147775504 pkg syscall (freebsd-386), const TIOCGDRAINWAIT = 1074033750 pkg syscall (freebsd-386), const TIOCGETA = 1076655123 pkg syscall (freebsd-386), const TIOCGETD = 1074033690 pkg syscall (freebsd-386), const TIOCGPGRP = 1074033783 pkg syscall (freebsd-386), const TIOCGPTN = 1074033679 pkg syscall (freebsd-386), const TIOCGSID = 1074033763 pkg syscall (freebsd-386), const TIOCGWINSZ = 1074295912 pkg syscall (freebsd-386), const TIOCMBIC = 2147775595 pkg syscall (freebsd-386), const TIOCMBIS = 2147775596 pkg syscall (freebsd-386), const TIOCMGDTRWAIT = 1074033754 pkg syscall (freebsd-386), const TIOCMGET = 1074033770 pkg syscall (freebsd-386), const TIOCMSDTRWAIT = 2147775579 pkg syscall (freebsd-386), const TIOCMSET = 2147775597 pkg syscall (freebsd-386), const TIOCM_CAR = 64 pkg syscall (freebsd-386), const TIOCM_CD = 64 pkg syscall (freebsd-386), const TIOCM_CTS = 32 pkg syscall (freebsd-386), const TIOCM_DCD = 64 pkg syscall (freebsd-386), const TIOCM_DSR = 256 pkg syscall (freebsd-386), const TIOCM_DTR = 2 pkg syscall (freebsd-386), const TIOCM_LE = 1 pkg syscall (freebsd-386), const TIOCM_RI = 128 pkg syscall (freebsd-386), const TIOCM_RNG = 128 pkg syscall (freebsd-386), const TIOCM_RTS = 4 pkg syscall (freebsd-386), const TIOCM_SR = 16 pkg syscall (freebsd-386), const TIOCM_ST = 8 pkg syscall (freebsd-386), const TIOCNOTTY = 536900721 pkg syscall (freebsd-386), const TIOCNXCL = 536900622 pkg syscall (freebsd-386), const TIOCOUTQ = 1074033779 pkg syscall (freebsd-386), const TIOCPKT = 2147775600 pkg syscall (freebsd-386), const TIOCPKT_DATA = 0 pkg syscall (freebsd-386), const TIOCPKT_DOSTOP = 32 pkg syscall (freebsd-386), const TIOCPKT_FLUSHREAD = 1 pkg syscall (freebsd-386), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (freebsd-386), const TIOCPKT_IOCTL = 64 pkg syscall (freebsd-386), const TIOCPKT_NOSTOP = 16 pkg syscall (freebsd-386), const TIOCPKT_START = 8 pkg syscall (freebsd-386), const TIOCPKT_STOP = 4 pkg syscall (freebsd-386), const TIOCPTMASTER = 536900636 pkg syscall (freebsd-386), const TIOCSBRK = 536900731 pkg syscall (freebsd-386), const TIOCSCTTY = 536900705 pkg syscall (freebsd-386), const TIOCSDRAINWAIT = 2147775575 pkg syscall (freebsd-386), const TIOCSDTR = 536900729 pkg syscall (freebsd-386), const TIOCSETA = 2150396948 pkg syscall (freebsd-386), const TIOCSETAF = 2150396950 pkg syscall (freebsd-386), const TIOCSETAW = 2150396949 pkg syscall (freebsd-386), const TIOCSETD = 2147775515 pkg syscall (freebsd-386), const TIOCSIG = 537162847 pkg syscall (freebsd-386), const TIOCSPGRP = 2147775606 pkg syscall (freebsd-386), const TIOCSTART = 536900718 pkg syscall (freebsd-386), const TIOCSTAT = 536900709 pkg syscall (freebsd-386), const TIOCSTI = 2147578994 pkg syscall (freebsd-386), const TIOCSTOP = 536900719 pkg syscall (freebsd-386), const TIOCSWINSZ = 2148037735 pkg syscall (freebsd-386), const TIOCTIMESTAMP = 1074295897 pkg syscall (freebsd-386), const TIOCUCNTL = 2147775590 pkg syscall (freebsd-386), const TOSTOP = 4194304 pkg syscall (freebsd-386), const TOSTOP ideal-int pkg syscall (freebsd-386), const VDISCARD = 15 pkg syscall (freebsd-386), const VDISCARD ideal-int pkg syscall (freebsd-386), const VDSUSP = 11 pkg syscall (freebsd-386), const VDSUSP ideal-int pkg syscall (freebsd-386), const VEOF = 0 pkg syscall (freebsd-386), const VEOF ideal-int pkg syscall (freebsd-386), const VEOL = 1 pkg syscall (freebsd-386), const VEOL ideal-int pkg syscall (freebsd-386), const VEOL2 = 2 pkg syscall (freebsd-386), const VEOL2 ideal-int pkg syscall (freebsd-386), const VERASE = 3 pkg syscall (freebsd-386), const VERASE ideal-int pkg syscall (freebsd-386), const VERASE2 = 7 pkg syscall (freebsd-386), const VERASE2 ideal-int pkg syscall (freebsd-386), const VINTR = 8 pkg syscall (freebsd-386), const VINTR ideal-int pkg syscall (freebsd-386), const VKILL = 5 pkg syscall (freebsd-386), const VKILL ideal-int pkg syscall (freebsd-386), const VLNEXT = 14 pkg syscall (freebsd-386), const VLNEXT ideal-int pkg syscall (freebsd-386), const VMIN = 16 pkg syscall (freebsd-386), const VMIN ideal-int pkg syscall (freebsd-386), const VQUIT = 9 pkg syscall (freebsd-386), const VQUIT ideal-int pkg syscall (freebsd-386), const VREPRINT = 6 pkg syscall (freebsd-386), const VREPRINT ideal-int pkg syscall (freebsd-386), const VSTART = 12 pkg syscall (freebsd-386), const VSTART ideal-int pkg syscall (freebsd-386), const VSTATUS = 18 pkg syscall (freebsd-386), const VSTATUS ideal-int pkg syscall (freebsd-386), const VSTOP = 13 pkg syscall (freebsd-386), const VSTOP ideal-int pkg syscall (freebsd-386), const VSUSP = 10 pkg syscall (freebsd-386), const VSUSP ideal-int pkg syscall (freebsd-386), const VTIME = 17 pkg syscall (freebsd-386), const VTIME ideal-int pkg syscall (freebsd-386), const VWERASE = 4 pkg syscall (freebsd-386), const VWERASE ideal-int pkg syscall (freebsd-386), const WCONTINUED = 4 pkg syscall (freebsd-386), const WCOREFLAG = 128 pkg syscall (freebsd-386), const WLINUXCLONE = 2147483648 pkg syscall (freebsd-386), const WNOHANG = 1 pkg syscall (freebsd-386), const WNOWAIT = 8 pkg syscall (freebsd-386), const WSTOPPED = 2 pkg syscall (freebsd-386), const WUNTRACED = 2 pkg syscall (freebsd-386), func Fchflags(int, int) error pkg syscall (freebsd-386), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (freebsd-386), type IfAnnounceMsghdr struct pkg syscall (freebsd-386), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (freebsd-386), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (freebsd-386), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (freebsd-386), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (freebsd-386), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (freebsd-386), type IfAnnounceMsghdr struct, What uint16 pkg syscall (freebsd-386), type InterfaceAnnounceMessage struct pkg syscall (freebsd-386), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (freebsd-386-cgo), const AF_APPLETALK = 16 pkg syscall (freebsd-386-cgo), const AF_ARP = 35 pkg syscall (freebsd-386-cgo), const AF_ATM = 30 pkg syscall (freebsd-386-cgo), const AF_BLUETOOTH = 36 pkg syscall (freebsd-386-cgo), const AF_CCITT = 10 pkg syscall (freebsd-386-cgo), const AF_CHAOS = 5 pkg syscall (freebsd-386-cgo), const AF_CNT = 21 pkg syscall (freebsd-386-cgo), const AF_COIP = 20 pkg syscall (freebsd-386-cgo), const AF_DATAKIT = 9 pkg syscall (freebsd-386-cgo), const AF_DECnet = 12 pkg syscall (freebsd-386-cgo), const AF_DLI = 13 pkg syscall (freebsd-386-cgo), const AF_E164 = 26 pkg syscall (freebsd-386-cgo), const AF_ECMA = 8 pkg syscall (freebsd-386-cgo), const AF_HYLINK = 15 pkg syscall (freebsd-386-cgo), const AF_IEEE80211 = 37 pkg syscall (freebsd-386-cgo), const AF_IMPLINK = 3 pkg syscall (freebsd-386-cgo), const AF_INET6 = 28 pkg syscall (freebsd-386-cgo), const AF_IPX = 23 pkg syscall (freebsd-386-cgo), const AF_ISDN = 26 pkg syscall (freebsd-386-cgo), const AF_ISO = 7 pkg syscall (freebsd-386-cgo), const AF_LAT = 14 pkg syscall (freebsd-386-cgo), const AF_LINK = 18 pkg syscall (freebsd-386-cgo), const AF_LOCAL = 1 pkg syscall (freebsd-386-cgo), const AF_MAX = 38 pkg syscall (freebsd-386-cgo), const AF_NATM = 29 pkg syscall (freebsd-386-cgo), const AF_NETBIOS = 6 pkg syscall (freebsd-386-cgo), const AF_NETGRAPH = 32 pkg syscall (freebsd-386-cgo), const AF_OSI = 7 pkg syscall (freebsd-386-cgo), const AF_PUP = 4 pkg syscall (freebsd-386-cgo), const AF_ROUTE = 17 pkg syscall (freebsd-386-cgo), const AF_SCLUSTER = 34 pkg syscall (freebsd-386-cgo), const AF_SIP = 24 pkg syscall (freebsd-386-cgo), const AF_SLOW = 33 pkg syscall (freebsd-386-cgo), const AF_SNA = 11 pkg syscall (freebsd-386-cgo), const AF_VENDOR00 = 39 pkg syscall (freebsd-386-cgo), const AF_VENDOR01 = 41 pkg syscall (freebsd-386-cgo), const AF_VENDOR02 = 43 pkg syscall (freebsd-386-cgo), const AF_VENDOR03 = 45 pkg syscall (freebsd-386-cgo), const AF_VENDOR04 = 47 pkg syscall (freebsd-386-cgo), const AF_VENDOR05 = 49 pkg syscall (freebsd-386-cgo), const AF_VENDOR06 = 51 pkg syscall (freebsd-386-cgo), const AF_VENDOR07 = 53 pkg syscall (freebsd-386-cgo), const AF_VENDOR08 = 55 pkg syscall (freebsd-386-cgo), const AF_VENDOR09 = 57 pkg syscall (freebsd-386-cgo), const AF_VENDOR10 = 59 pkg syscall (freebsd-386-cgo), const AF_VENDOR11 = 61 pkg syscall (freebsd-386-cgo), const AF_VENDOR12 = 63 pkg syscall (freebsd-386-cgo), const AF_VENDOR13 = 65 pkg syscall (freebsd-386-cgo), const AF_VENDOR14 = 67 pkg syscall (freebsd-386-cgo), const AF_VENDOR15 = 69 pkg syscall (freebsd-386-cgo), const AF_VENDOR16 = 71 pkg syscall (freebsd-386-cgo), const AF_VENDOR17 = 73 pkg syscall (freebsd-386-cgo), const AF_VENDOR18 = 75 pkg syscall (freebsd-386-cgo), const AF_VENDOR19 = 77 pkg syscall (freebsd-386-cgo), const AF_VENDOR20 = 79 pkg syscall (freebsd-386-cgo), const AF_VENDOR21 = 81 pkg syscall (freebsd-386-cgo), const AF_VENDOR22 = 83 pkg syscall (freebsd-386-cgo), const AF_VENDOR23 = 85 pkg syscall (freebsd-386-cgo), const AF_VENDOR24 = 87 pkg syscall (freebsd-386-cgo), const AF_VENDOR25 = 89 pkg syscall (freebsd-386-cgo), const AF_VENDOR26 = 91 pkg syscall (freebsd-386-cgo), const AF_VENDOR27 = 93 pkg syscall (freebsd-386-cgo), const AF_VENDOR28 = 95 pkg syscall (freebsd-386-cgo), const AF_VENDOR29 = 97 pkg syscall (freebsd-386-cgo), const AF_VENDOR30 = 99 pkg syscall (freebsd-386-cgo), const AF_VENDOR31 = 101 pkg syscall (freebsd-386-cgo), const AF_VENDOR32 = 103 pkg syscall (freebsd-386-cgo), const AF_VENDOR33 = 105 pkg syscall (freebsd-386-cgo), const AF_VENDOR34 = 107 pkg syscall (freebsd-386-cgo), const AF_VENDOR35 = 109 pkg syscall (freebsd-386-cgo), const AF_VENDOR36 = 111 pkg syscall (freebsd-386-cgo), const AF_VENDOR37 = 113 pkg syscall (freebsd-386-cgo), const AF_VENDOR38 = 115 pkg syscall (freebsd-386-cgo), const AF_VENDOR39 = 117 pkg syscall (freebsd-386-cgo), const AF_VENDOR40 = 119 pkg syscall (freebsd-386-cgo), const AF_VENDOR41 = 121 pkg syscall (freebsd-386-cgo), const AF_VENDOR42 = 123 pkg syscall (freebsd-386-cgo), const AF_VENDOR43 = 125 pkg syscall (freebsd-386-cgo), const AF_VENDOR44 = 127 pkg syscall (freebsd-386-cgo), const AF_VENDOR45 = 129 pkg syscall (freebsd-386-cgo), const AF_VENDOR46 = 131 pkg syscall (freebsd-386-cgo), const AF_VENDOR47 = 133 pkg syscall (freebsd-386-cgo), const B0 = 0 pkg syscall (freebsd-386-cgo), const B110 = 110 pkg syscall (freebsd-386-cgo), const B115200 = 115200 pkg syscall (freebsd-386-cgo), const B1200 = 1200 pkg syscall (freebsd-386-cgo), const B134 = 134 pkg syscall (freebsd-386-cgo), const B14400 = 14400 pkg syscall (freebsd-386-cgo), const B150 = 150 pkg syscall (freebsd-386-cgo), const B1800 = 1800 pkg syscall (freebsd-386-cgo), const B19200 = 19200 pkg syscall (freebsd-386-cgo), const B200 = 200 pkg syscall (freebsd-386-cgo), const B230400 = 230400 pkg syscall (freebsd-386-cgo), const B2400 = 2400 pkg syscall (freebsd-386-cgo), const B28800 = 28800 pkg syscall (freebsd-386-cgo), const B300 = 300 pkg syscall (freebsd-386-cgo), const B38400 = 38400 pkg syscall (freebsd-386-cgo), const B460800 = 460800 pkg syscall (freebsd-386-cgo), const B4800 = 4800 pkg syscall (freebsd-386-cgo), const B50 = 50 pkg syscall (freebsd-386-cgo), const B57600 = 57600 pkg syscall (freebsd-386-cgo), const B600 = 600 pkg syscall (freebsd-386-cgo), const B7200 = 7200 pkg syscall (freebsd-386-cgo), const B75 = 75 pkg syscall (freebsd-386-cgo), const B76800 = 76800 pkg syscall (freebsd-386-cgo), const B921600 = 921600 pkg syscall (freebsd-386-cgo), const B9600 = 9600 pkg syscall (freebsd-386-cgo), const BIOCFEEDBACK = 2147762812 pkg syscall (freebsd-386-cgo), const BIOCFLUSH = 536887912 pkg syscall (freebsd-386-cgo), const BIOCGBLEN = 1074020966 pkg syscall (freebsd-386-cgo), const BIOCGDIRECTION = 1074020982 pkg syscall (freebsd-386-cgo), const BIOCGDLT = 1074020970 pkg syscall (freebsd-386-cgo), const BIOCGDLTLIST = 3221766777 pkg syscall (freebsd-386-cgo), const BIOCGETBUFMODE = 1074020989 pkg syscall (freebsd-386-cgo), const BIOCGETIF = 1075855979 pkg syscall (freebsd-386-cgo), const BIOCGETZMAX = 1074020991 pkg syscall (freebsd-386-cgo), const BIOCGHDRCMPLT = 1074020980 pkg syscall (freebsd-386-cgo), const BIOCGRSIG = 1074020978 pkg syscall (freebsd-386-cgo), const BIOCGRTIMEOUT = 1074283118 pkg syscall (freebsd-386-cgo), const BIOCGSEESENT = 1074020982 pkg syscall (freebsd-386-cgo), const BIOCGSTATS = 1074283119 pkg syscall (freebsd-386-cgo), const BIOCGTSTAMP = 1074020995 pkg syscall (freebsd-386-cgo), const BIOCIMMEDIATE = 2147762800 pkg syscall (freebsd-386-cgo), const BIOCLOCK = 536887930 pkg syscall (freebsd-386-cgo), const BIOCPROMISC = 536887913 pkg syscall (freebsd-386-cgo), const BIOCROTZBUF = 1074545280 pkg syscall (freebsd-386-cgo), const BIOCSBLEN = 3221504614 pkg syscall (freebsd-386-cgo), const BIOCSDIRECTION = 2147762807 pkg syscall (freebsd-386-cgo), const BIOCSDLT = 2147762808 pkg syscall (freebsd-386-cgo), const BIOCSETBUFMODE = 2147762814 pkg syscall (freebsd-386-cgo), const BIOCSETF = 2148024935 pkg syscall (freebsd-386-cgo), const BIOCSETFNR = 2148024962 pkg syscall (freebsd-386-cgo), const BIOCSETIF = 2149597804 pkg syscall (freebsd-386-cgo), const BIOCSETWF = 2148024955 pkg syscall (freebsd-386-cgo), const BIOCSETZBUF = 2148287105 pkg syscall (freebsd-386-cgo), const BIOCSHDRCMPLT = 2147762805 pkg syscall (freebsd-386-cgo), const BIOCSRSIG = 2147762803 pkg syscall (freebsd-386-cgo), const BIOCSRTIMEOUT = 2148024941 pkg syscall (freebsd-386-cgo), const BIOCSSEESENT = 2147762807 pkg syscall (freebsd-386-cgo), const BIOCSTSTAMP = 2147762820 pkg syscall (freebsd-386-cgo), const BIOCVERSION = 1074020977 pkg syscall (freebsd-386-cgo), const BPF_A = 16 pkg syscall (freebsd-386-cgo), const BPF_ABS = 32 pkg syscall (freebsd-386-cgo), const BPF_ADD = 0 pkg syscall (freebsd-386-cgo), const BPF_ALIGNMENT = 4 pkg syscall (freebsd-386-cgo), const BPF_ALU = 4 pkg syscall (freebsd-386-cgo), const BPF_AND = 80 pkg syscall (freebsd-386-cgo), const BPF_B = 16 pkg syscall (freebsd-386-cgo), const BPF_BUFMODE_BUFFER = 1 pkg syscall (freebsd-386-cgo), const BPF_BUFMODE_ZBUF = 2 pkg syscall (freebsd-386-cgo), const BPF_DIV = 48 pkg syscall (freebsd-386-cgo), const BPF_H = 8 pkg syscall (freebsd-386-cgo), const BPF_IMM = 0 pkg syscall (freebsd-386-cgo), const BPF_IND = 64 pkg syscall (freebsd-386-cgo), const BPF_JA = 0 pkg syscall (freebsd-386-cgo), const BPF_JEQ = 16 pkg syscall (freebsd-386-cgo), const BPF_JGE = 48 pkg syscall (freebsd-386-cgo), const BPF_JGT = 32 pkg syscall (freebsd-386-cgo), const BPF_JMP = 5 pkg syscall (freebsd-386-cgo), const BPF_JSET = 64 pkg syscall (freebsd-386-cgo), const BPF_K = 0 pkg syscall (freebsd-386-cgo), const BPF_LD = 0 pkg syscall (freebsd-386-cgo), const BPF_LDX = 1 pkg syscall (freebsd-386-cgo), const BPF_LEN = 128 pkg syscall (freebsd-386-cgo), const BPF_LSH = 96 pkg syscall (freebsd-386-cgo), const BPF_MAJOR_VERSION = 1 pkg syscall (freebsd-386-cgo), const BPF_MAXBUFSIZE = 524288 pkg syscall (freebsd-386-cgo), const BPF_MAXINSNS = 512 pkg syscall (freebsd-386-cgo), const BPF_MEM = 96 pkg syscall (freebsd-386-cgo), const BPF_MEMWORDS = 16 pkg syscall (freebsd-386-cgo), const BPF_MINBUFSIZE = 32 pkg syscall (freebsd-386-cgo), const BPF_MINOR_VERSION = 1 pkg syscall (freebsd-386-cgo), const BPF_MISC = 7 pkg syscall (freebsd-386-cgo), const BPF_MSH = 160 pkg syscall (freebsd-386-cgo), const BPF_MUL = 32 pkg syscall (freebsd-386-cgo), const BPF_NEG = 128 pkg syscall (freebsd-386-cgo), const BPF_OR = 64 pkg syscall (freebsd-386-cgo), const BPF_RELEASE = 199606 pkg syscall (freebsd-386-cgo), const BPF_RET = 6 pkg syscall (freebsd-386-cgo), const BPF_RSH = 112 pkg syscall (freebsd-386-cgo), const BPF_ST = 2 pkg syscall (freebsd-386-cgo), const BPF_STX = 3 pkg syscall (freebsd-386-cgo), const BPF_SUB = 16 pkg syscall (freebsd-386-cgo), const BPF_TAX = 0 pkg syscall (freebsd-386-cgo), const BPF_TXA = 128 pkg syscall (freebsd-386-cgo), const BPF_T_BINTIME = 2 pkg syscall (freebsd-386-cgo), const BPF_T_BINTIME_FAST = 258 pkg syscall (freebsd-386-cgo), const BPF_T_BINTIME_MONOTONIC = 514 pkg syscall (freebsd-386-cgo), const BPF_T_BINTIME_MONOTONIC_FAST = 770 pkg syscall (freebsd-386-cgo), const BPF_T_FAST = 256 pkg syscall (freebsd-386-cgo), const BPF_T_FLAG_MASK = 768 pkg syscall (freebsd-386-cgo), const BPF_T_FORMAT_MASK = 3 pkg syscall (freebsd-386-cgo), const BPF_T_MICROTIME = 0 pkg syscall (freebsd-386-cgo), const BPF_T_MICROTIME_FAST = 256 pkg syscall (freebsd-386-cgo), const BPF_T_MICROTIME_MONOTONIC = 512 pkg syscall (freebsd-386-cgo), const BPF_T_MICROTIME_MONOTONIC_FAST = 768 pkg syscall (freebsd-386-cgo), const BPF_T_MONOTONIC = 512 pkg syscall (freebsd-386-cgo), const BPF_T_MONOTONIC_FAST = 768 pkg syscall (freebsd-386-cgo), const BPF_T_NANOTIME = 1 pkg syscall (freebsd-386-cgo), const BPF_T_NANOTIME_FAST = 257 pkg syscall (freebsd-386-cgo), const BPF_T_NANOTIME_MONOTONIC = 513 pkg syscall (freebsd-386-cgo), const BPF_T_NANOTIME_MONOTONIC_FAST = 769 pkg syscall (freebsd-386-cgo), const BPF_T_NONE = 3 pkg syscall (freebsd-386-cgo), const BPF_T_NORMAL = 0 pkg syscall (freebsd-386-cgo), const BPF_W = 0 pkg syscall (freebsd-386-cgo), const BPF_X = 8 pkg syscall (freebsd-386-cgo), const BRKINT = 2 pkg syscall (freebsd-386-cgo), const CFLUSH = 15 pkg syscall (freebsd-386-cgo), const CLOCAL = 32768 pkg syscall (freebsd-386-cgo), const CREAD = 2048 pkg syscall (freebsd-386-cgo), const CS5 = 0 pkg syscall (freebsd-386-cgo), const CS6 = 256 pkg syscall (freebsd-386-cgo), const CS7 = 512 pkg syscall (freebsd-386-cgo), const CS8 = 768 pkg syscall (freebsd-386-cgo), const CSIZE = 768 pkg syscall (freebsd-386-cgo), const CSTART = 17 pkg syscall (freebsd-386-cgo), const CSTATUS = 20 pkg syscall (freebsd-386-cgo), const CSTOP = 19 pkg syscall (freebsd-386-cgo), const CSTOPB = 1024 pkg syscall (freebsd-386-cgo), const CSUSP = 26 pkg syscall (freebsd-386-cgo), const CTL_MAXNAME = 24 pkg syscall (freebsd-386-cgo), const CTL_NET = 4 pkg syscall (freebsd-386-cgo), const DLT_A429 = 184 pkg syscall (freebsd-386-cgo), const DLT_A653_ICM = 185 pkg syscall (freebsd-386-cgo), const DLT_AIRONET_HEADER = 120 pkg syscall (freebsd-386-cgo), const DLT_AOS = 222 pkg syscall (freebsd-386-cgo), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (freebsd-386-cgo), const DLT_ARCNET = 7 pkg syscall (freebsd-386-cgo), const DLT_ARCNET_LINUX = 129 pkg syscall (freebsd-386-cgo), const DLT_ATM_CLIP = 19 pkg syscall (freebsd-386-cgo), const DLT_ATM_RFC1483 = 11 pkg syscall (freebsd-386-cgo), const DLT_AURORA = 126 pkg syscall (freebsd-386-cgo), const DLT_AX25 = 3 pkg syscall (freebsd-386-cgo), const DLT_AX25_KISS = 202 pkg syscall (freebsd-386-cgo), const DLT_BACNET_MS_TP = 165 pkg syscall (freebsd-386-cgo), const DLT_BLUETOOTH_HCI_H4 = 187 pkg syscall (freebsd-386-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 pkg syscall (freebsd-386-cgo), const DLT_CAN20B = 190 pkg syscall (freebsd-386-cgo), const DLT_CAN_SOCKETCAN = 227 pkg syscall (freebsd-386-cgo), const DLT_CHAOS = 5 pkg syscall (freebsd-386-cgo), const DLT_CHDLC = 104 pkg syscall (freebsd-386-cgo), const DLT_CISCO_IOS = 118 pkg syscall (freebsd-386-cgo), const DLT_C_HDLC = 104 pkg syscall (freebsd-386-cgo), const DLT_C_HDLC_WITH_DIR = 205 pkg syscall (freebsd-386-cgo), const DLT_DBUS = 231 pkg syscall (freebsd-386-cgo), const DLT_DECT = 221 pkg syscall (freebsd-386-cgo), const DLT_DOCSIS = 143 pkg syscall (freebsd-386-cgo), const DLT_DVB_CI = 235 pkg syscall (freebsd-386-cgo), const DLT_ECONET = 115 pkg syscall (freebsd-386-cgo), const DLT_EN10MB = 1 pkg syscall (freebsd-386-cgo), const DLT_EN3MB = 2 pkg syscall (freebsd-386-cgo), const DLT_ENC = 109 pkg syscall (freebsd-386-cgo), const DLT_ERF = 197 pkg syscall (freebsd-386-cgo), const DLT_ERF_ETH = 175 pkg syscall (freebsd-386-cgo), const DLT_ERF_POS = 176 pkg syscall (freebsd-386-cgo), const DLT_FC_2 = 224 pkg syscall (freebsd-386-cgo), const DLT_FC_2_WITH_FRAME_DELIMS = 225 pkg syscall (freebsd-386-cgo), const DLT_FDDI = 10 pkg syscall (freebsd-386-cgo), const DLT_FLEXRAY = 210 pkg syscall (freebsd-386-cgo), const DLT_FRELAY = 107 pkg syscall (freebsd-386-cgo), const DLT_FRELAY_WITH_DIR = 206 pkg syscall (freebsd-386-cgo), const DLT_GCOM_SERIAL = 173 pkg syscall (freebsd-386-cgo), const DLT_GCOM_T1E1 = 172 pkg syscall (freebsd-386-cgo), const DLT_GPF_F = 171 pkg syscall (freebsd-386-cgo), const DLT_GPF_T = 170 pkg syscall (freebsd-386-cgo), const DLT_GPRS_LLC = 169 pkg syscall (freebsd-386-cgo), const DLT_GSMTAP_ABIS = 218 pkg syscall (freebsd-386-cgo), const DLT_GSMTAP_UM = 217 pkg syscall (freebsd-386-cgo), const DLT_HHDLC = 121 pkg syscall (freebsd-386-cgo), const DLT_IBM_SN = 146 pkg syscall (freebsd-386-cgo), const DLT_IBM_SP = 145 pkg syscall (freebsd-386-cgo), const DLT_IEEE802 = 6 pkg syscall (freebsd-386-cgo), const DLT_IEEE802_11 = 105 pkg syscall (freebsd-386-cgo), const DLT_IEEE802_11_RADIO = 127 pkg syscall (freebsd-386-cgo), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (freebsd-386-cgo), const DLT_IEEE802_15_4 = 195 pkg syscall (freebsd-386-cgo), const DLT_IEEE802_15_4_LINUX = 191 pkg syscall (freebsd-386-cgo), const DLT_IEEE802_15_4_NOFCS = 230 pkg syscall (freebsd-386-cgo), const DLT_IEEE802_15_4_NONASK_PHY = 215 pkg syscall (freebsd-386-cgo), const DLT_IEEE802_16_MAC_CPS = 188 pkg syscall (freebsd-386-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 pkg syscall (freebsd-386-cgo), const DLT_IPFILTER = 116 pkg syscall (freebsd-386-cgo), const DLT_IPMB = 199 pkg syscall (freebsd-386-cgo), const DLT_IPMB_LINUX = 209 pkg syscall (freebsd-386-cgo), const DLT_IPNET = 226 pkg syscall (freebsd-386-cgo), const DLT_IPOIB = 242 pkg syscall (freebsd-386-cgo), const DLT_IPV4 = 228 pkg syscall (freebsd-386-cgo), const DLT_IPV6 = 229 pkg syscall (freebsd-386-cgo), const DLT_IP_OVER_FC = 122 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_ATM1 = 137 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_ATM2 = 135 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_ATM_CEMIC = 238 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_CHDLC = 181 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_ES = 132 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_ETHER = 178 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_FIBRECHANNEL = 234 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_FRELAY = 180 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_GGSN = 133 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_ISM = 194 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_MFR = 134 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_MLFR = 131 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_MLPPP = 130 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_MONITOR = 164 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_PIC_PEER = 174 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_PPP = 179 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_PPPOE = 167 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_PPPOE_ATM = 168 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_SERVICES = 136 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_SRX_E2E = 233 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_ST = 200 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_VP = 183 pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_VS = 232 pkg syscall (freebsd-386-cgo), const DLT_LAPB_WITH_DIR = 207 pkg syscall (freebsd-386-cgo), const DLT_LAPD = 203 pkg syscall (freebsd-386-cgo), const DLT_LIN = 212 pkg syscall (freebsd-386-cgo), const DLT_LINUX_EVDEV = 216 pkg syscall (freebsd-386-cgo), const DLT_LINUX_IRDA = 144 pkg syscall (freebsd-386-cgo), const DLT_LINUX_LAPD = 177 pkg syscall (freebsd-386-cgo), const DLT_LINUX_PPP_WITHDIRECTION = 166 pkg syscall (freebsd-386-cgo), const DLT_LINUX_SLL = 113 pkg syscall (freebsd-386-cgo), const DLT_LOOP = 108 pkg syscall (freebsd-386-cgo), const DLT_LTALK = 114 pkg syscall (freebsd-386-cgo), const DLT_MATCHING_MAX = 242 pkg syscall (freebsd-386-cgo), const DLT_MATCHING_MIN = 104 pkg syscall (freebsd-386-cgo), const DLT_MFR = 182 pkg syscall (freebsd-386-cgo), const DLT_MOST = 211 pkg syscall (freebsd-386-cgo), const DLT_MPLS = 219 pkg syscall (freebsd-386-cgo), const DLT_MTP2 = 140 pkg syscall (freebsd-386-cgo), const DLT_MTP2_WITH_PHDR = 139 pkg syscall (freebsd-386-cgo), const DLT_MTP3 = 141 pkg syscall (freebsd-386-cgo), const DLT_MUX27010 = 236 pkg syscall (freebsd-386-cgo), const DLT_NETANALYZER = 240 pkg syscall (freebsd-386-cgo), const DLT_NETANALYZER_TRANSPARENT = 241 pkg syscall (freebsd-386-cgo), const DLT_NFLOG = 239 pkg syscall (freebsd-386-cgo), const DLT_NULL = 0 pkg syscall (freebsd-386-cgo), const DLT_PCI_EXP = 125 pkg syscall (freebsd-386-cgo), const DLT_PFLOG = 117 pkg syscall (freebsd-386-cgo), const DLT_PFSYNC = 121 pkg syscall (freebsd-386-cgo), const DLT_PPI = 192 pkg syscall (freebsd-386-cgo), const DLT_PPP = 9 pkg syscall (freebsd-386-cgo), const DLT_PPP_BSDOS = 16 pkg syscall (freebsd-386-cgo), const DLT_PPP_ETHER = 51 pkg syscall (freebsd-386-cgo), const DLT_PPP_PPPD = 166 pkg syscall (freebsd-386-cgo), const DLT_PPP_SERIAL = 50 pkg syscall (freebsd-386-cgo), const DLT_PPP_WITH_DIR = 204 pkg syscall (freebsd-386-cgo), const DLT_PPP_WITH_DIRECTION = 166 pkg syscall (freebsd-386-cgo), const DLT_PRISM_HEADER = 119 pkg syscall (freebsd-386-cgo), const DLT_PRONET = 4 pkg syscall (freebsd-386-cgo), const DLT_RAIF1 = 198 pkg syscall (freebsd-386-cgo), const DLT_RAW = 12 pkg syscall (freebsd-386-cgo), const DLT_RIO = 124 pkg syscall (freebsd-386-cgo), const DLT_SCCP = 142 pkg syscall (freebsd-386-cgo), const DLT_SITA = 196 pkg syscall (freebsd-386-cgo), const DLT_SLIP = 8 pkg syscall (freebsd-386-cgo), const DLT_SLIP_BSDOS = 15 pkg syscall (freebsd-386-cgo), const DLT_STANAG_5066_D_PDU = 237 pkg syscall (freebsd-386-cgo), const DLT_SUNATM = 123 pkg syscall (freebsd-386-cgo), const DLT_SYMANTEC_FIREWALL = 99 pkg syscall (freebsd-386-cgo), const DLT_TZSP = 128 pkg syscall (freebsd-386-cgo), const DLT_USB = 186 pkg syscall (freebsd-386-cgo), const DLT_USB_LINUX = 189 pkg syscall (freebsd-386-cgo), const DLT_USB_LINUX_MMAPPED = 220 pkg syscall (freebsd-386-cgo), const DLT_USER0 = 147 pkg syscall (freebsd-386-cgo), const DLT_USER1 = 148 pkg syscall (freebsd-386-cgo), const DLT_USER10 = 157 pkg syscall (freebsd-386-cgo), const DLT_USER11 = 158 pkg syscall (freebsd-386-cgo), const DLT_USER12 = 159 pkg syscall (freebsd-386-cgo), const DLT_USER13 = 160 pkg syscall (freebsd-386-cgo), const DLT_USER14 = 161 pkg syscall (freebsd-386-cgo), const DLT_USER15 = 162 pkg syscall (freebsd-386-cgo), const DLT_USER2 = 149 pkg syscall (freebsd-386-cgo), const DLT_USER3 = 150 pkg syscall (freebsd-386-cgo), const DLT_USER4 = 151 pkg syscall (freebsd-386-cgo), const DLT_USER5 = 152 pkg syscall (freebsd-386-cgo), const DLT_USER6 = 153 pkg syscall (freebsd-386-cgo), const DLT_USER7 = 154 pkg syscall (freebsd-386-cgo), const DLT_USER8 = 155 pkg syscall (freebsd-386-cgo), const DLT_USER9 = 156 pkg syscall (freebsd-386-cgo), const DLT_WIHART = 223 pkg syscall (freebsd-386-cgo), const DLT_X2E_SERIAL = 213 pkg syscall (freebsd-386-cgo), const DLT_X2E_XORAYA = 214 pkg syscall (freebsd-386-cgo), const DT_BLK = 6 pkg syscall (freebsd-386-cgo), const DT_CHR = 2 pkg syscall (freebsd-386-cgo), const DT_DIR = 4 pkg syscall (freebsd-386-cgo), const DT_FIFO = 1 pkg syscall (freebsd-386-cgo), const DT_LNK = 10 pkg syscall (freebsd-386-cgo), const DT_REG = 8 pkg syscall (freebsd-386-cgo), const DT_SOCK = 12 pkg syscall (freebsd-386-cgo), const DT_UNKNOWN = 0 pkg syscall (freebsd-386-cgo), const DT_WHT = 14 pkg syscall (freebsd-386-cgo), const E2BIG = 7 pkg syscall (freebsd-386-cgo), const EACCES = 13 pkg syscall (freebsd-386-cgo), const EADDRINUSE = 48 pkg syscall (freebsd-386-cgo), const EADDRNOTAVAIL = 49 pkg syscall (freebsd-386-cgo), const EAFNOSUPPORT = 47 pkg syscall (freebsd-386-cgo), const EAGAIN = 35 pkg syscall (freebsd-386-cgo), const EALREADY = 37 pkg syscall (freebsd-386-cgo), const EAUTH = 80 pkg syscall (freebsd-386-cgo), const EBADF = 9 pkg syscall (freebsd-386-cgo), const EBADMSG = 89 pkg syscall (freebsd-386-cgo), const EBADRPC = 72 pkg syscall (freebsd-386-cgo), const EBUSY = 16 pkg syscall (freebsd-386-cgo), const ECANCELED = 85 pkg syscall (freebsd-386-cgo), const ECAPMODE = 94 pkg syscall (freebsd-386-cgo), const ECHILD = 10 pkg syscall (freebsd-386-cgo), const ECHO = 8 pkg syscall (freebsd-386-cgo), const ECHOCTL = 64 pkg syscall (freebsd-386-cgo), const ECHOE = 2 pkg syscall (freebsd-386-cgo), const ECHOK = 4 pkg syscall (freebsd-386-cgo), const ECHOKE = 1 pkg syscall (freebsd-386-cgo), const ECHONL = 16 pkg syscall (freebsd-386-cgo), const ECHOPRT = 32 pkg syscall (freebsd-386-cgo), const ECONNABORTED = 53 pkg syscall (freebsd-386-cgo), const ECONNREFUSED = 61 pkg syscall (freebsd-386-cgo), const ECONNRESET = 54 pkg syscall (freebsd-386-cgo), const EDEADLK = 11 pkg syscall (freebsd-386-cgo), const EDESTADDRREQ = 39 pkg syscall (freebsd-386-cgo), const EDOM = 33 pkg syscall (freebsd-386-cgo), const EDOOFUS = 88 pkg syscall (freebsd-386-cgo), const EDQUOT = 69 pkg syscall (freebsd-386-cgo), const EEXIST = 17 pkg syscall (freebsd-386-cgo), const EFAULT = 14 pkg syscall (freebsd-386-cgo), const EFBIG = 27 pkg syscall (freebsd-386-cgo), const EFTYPE = 79 pkg syscall (freebsd-386-cgo), const EHOSTDOWN = 64 pkg syscall (freebsd-386-cgo), const EHOSTUNREACH = 65 pkg syscall (freebsd-386-cgo), const EIDRM = 82 pkg syscall (freebsd-386-cgo), const EILSEQ = 86 pkg syscall (freebsd-386-cgo), const EINPROGRESS = 36 pkg syscall (freebsd-386-cgo), const EINTR = 4 pkg syscall (freebsd-386-cgo), const EINVAL = 22 pkg syscall (freebsd-386-cgo), const EIO = 5 pkg syscall (freebsd-386-cgo), const EISCONN = 56 pkg syscall (freebsd-386-cgo), const EISDIR = 21 pkg syscall (freebsd-386-cgo), const ELAST = 94 pkg syscall (freebsd-386-cgo), const ELOOP = 62 pkg syscall (freebsd-386-cgo), const EMFILE = 24 pkg syscall (freebsd-386-cgo), const EMLINK = 31 pkg syscall (freebsd-386-cgo), const EMSGSIZE = 40 pkg syscall (freebsd-386-cgo), const EMULTIHOP = 90 pkg syscall (freebsd-386-cgo), const ENAMETOOLONG = 63 pkg syscall (freebsd-386-cgo), const ENEEDAUTH = 81 pkg syscall (freebsd-386-cgo), const ENETDOWN = 50 pkg syscall (freebsd-386-cgo), const ENETRESET = 52 pkg syscall (freebsd-386-cgo), const ENETUNREACH = 51 pkg syscall (freebsd-386-cgo), const ENFILE = 23 pkg syscall (freebsd-386-cgo), const ENOATTR = 87 pkg syscall (freebsd-386-cgo), const ENOBUFS = 55 pkg syscall (freebsd-386-cgo), const ENODEV = 19 pkg syscall (freebsd-386-cgo), const ENOEXEC = 8 pkg syscall (freebsd-386-cgo), const ENOLCK = 77 pkg syscall (freebsd-386-cgo), const ENOLINK = 91 pkg syscall (freebsd-386-cgo), const ENOMEM = 12 pkg syscall (freebsd-386-cgo), const ENOMSG = 83 pkg syscall (freebsd-386-cgo), const ENOPROTOOPT = 42 pkg syscall (freebsd-386-cgo), const ENOSPC = 28 pkg syscall (freebsd-386-cgo), const ENOSYS = 78 pkg syscall (freebsd-386-cgo), const ENOTBLK = 15 pkg syscall (freebsd-386-cgo), const ENOTCAPABLE = 93 pkg syscall (freebsd-386-cgo), const ENOTCONN = 57 pkg syscall (freebsd-386-cgo), const ENOTDIR = 20 pkg syscall (freebsd-386-cgo), const ENOTEMPTY = 66 pkg syscall (freebsd-386-cgo), const ENOTSOCK = 38 pkg syscall (freebsd-386-cgo), const ENOTSUP = 45 pkg syscall (freebsd-386-cgo), const ENOTTY = 25 pkg syscall (freebsd-386-cgo), const ENXIO = 6 pkg syscall (freebsd-386-cgo), const EOPNOTSUPP = 45 pkg syscall (freebsd-386-cgo), const EOVERFLOW = 84 pkg syscall (freebsd-386-cgo), const EPERM = 1 pkg syscall (freebsd-386-cgo), const EPFNOSUPPORT = 46 pkg syscall (freebsd-386-cgo), const EPIPE = 32 pkg syscall (freebsd-386-cgo), const EPROCLIM = 67 pkg syscall (freebsd-386-cgo), const EPROCUNAVAIL = 76 pkg syscall (freebsd-386-cgo), const EPROGMISMATCH = 75 pkg syscall (freebsd-386-cgo), const EPROGUNAVAIL = 74 pkg syscall (freebsd-386-cgo), const EPROTO = 92 pkg syscall (freebsd-386-cgo), const EPROTONOSUPPORT = 43 pkg syscall (freebsd-386-cgo), const EPROTOTYPE = 41 pkg syscall (freebsd-386-cgo), const ERANGE = 34 pkg syscall (freebsd-386-cgo), const EREMOTE = 71 pkg syscall (freebsd-386-cgo), const EROFS = 30 pkg syscall (freebsd-386-cgo), const ERPCMISMATCH = 73 pkg syscall (freebsd-386-cgo), const ESHUTDOWN = 58 pkg syscall (freebsd-386-cgo), const ESOCKTNOSUPPORT = 44 pkg syscall (freebsd-386-cgo), const ESPIPE = 29 pkg syscall (freebsd-386-cgo), const ESRCH = 3 pkg syscall (freebsd-386-cgo), const ESTALE = 70 pkg syscall (freebsd-386-cgo), const ETIMEDOUT = 60 pkg syscall (freebsd-386-cgo), const ETOOMANYREFS = 59 pkg syscall (freebsd-386-cgo), const ETXTBSY = 26 pkg syscall (freebsd-386-cgo), const EUSERS = 68 pkg syscall (freebsd-386-cgo), const EVFILT_AIO = -3 pkg syscall (freebsd-386-cgo), const EVFILT_FS = -9 pkg syscall (freebsd-386-cgo), const EVFILT_LIO = -10 pkg syscall (freebsd-386-cgo), const EVFILT_PROC = -5 pkg syscall (freebsd-386-cgo), const EVFILT_READ = -1 pkg syscall (freebsd-386-cgo), const EVFILT_SIGNAL = -6 pkg syscall (freebsd-386-cgo), const EVFILT_SYSCOUNT = 11 pkg syscall (freebsd-386-cgo), const EVFILT_TIMER = -7 pkg syscall (freebsd-386-cgo), const EVFILT_USER = -11 pkg syscall (freebsd-386-cgo), const EVFILT_VNODE = -4 pkg syscall (freebsd-386-cgo), const EVFILT_WRITE = -2 pkg syscall (freebsd-386-cgo), const EV_ADD = 1 pkg syscall (freebsd-386-cgo), const EV_CLEAR = 32 pkg syscall (freebsd-386-cgo), const EV_DELETE = 2 pkg syscall (freebsd-386-cgo), const EV_DISABLE = 8 pkg syscall (freebsd-386-cgo), const EV_DISPATCH = 128 pkg syscall (freebsd-386-cgo), const EV_ENABLE = 4 pkg syscall (freebsd-386-cgo), const EV_EOF = 32768 pkg syscall (freebsd-386-cgo), const EV_ERROR = 16384 pkg syscall (freebsd-386-cgo), const EV_FLAG1 = 8192 pkg syscall (freebsd-386-cgo), const EV_ONESHOT = 16 pkg syscall (freebsd-386-cgo), const EV_RECEIPT = 64 pkg syscall (freebsd-386-cgo), const EV_SYSFLAGS = 61440 pkg syscall (freebsd-386-cgo), const EWOULDBLOCK = 35 pkg syscall (freebsd-386-cgo), const EXDEV = 18 pkg syscall (freebsd-386-cgo), const EXTA = 19200 pkg syscall (freebsd-386-cgo), const EXTB = 38400 pkg syscall (freebsd-386-cgo), const EXTPROC = 2048 pkg syscall (freebsd-386-cgo), const FD_CLOEXEC = 1 pkg syscall (freebsd-386-cgo), const FD_SETSIZE = 1024 pkg syscall (freebsd-386-cgo), const FLUSHO = 8388608 pkg syscall (freebsd-386-cgo), const F_CANCEL = 5 pkg syscall (freebsd-386-cgo), const F_DUP2FD = 10 pkg syscall (freebsd-386-cgo), const F_DUPFD = 0 pkg syscall (freebsd-386-cgo), const F_GETFD = 1 pkg syscall (freebsd-386-cgo), const F_GETFL = 3 pkg syscall (freebsd-386-cgo), const F_GETLK = 11 pkg syscall (freebsd-386-cgo), const F_GETOWN = 5 pkg syscall (freebsd-386-cgo), const F_OGETLK = 7 pkg syscall (freebsd-386-cgo), const F_OK = 0 pkg syscall (freebsd-386-cgo), const F_OSETLK = 8 pkg syscall (freebsd-386-cgo), const F_OSETLKW = 9 pkg syscall (freebsd-386-cgo), const F_RDAHEAD = 16 pkg syscall (freebsd-386-cgo), const F_RDLCK = 1 pkg syscall (freebsd-386-cgo), const F_READAHEAD = 15 pkg syscall (freebsd-386-cgo), const F_SETFD = 2 pkg syscall (freebsd-386-cgo), const F_SETFL = 4 pkg syscall (freebsd-386-cgo), const F_SETLK = 12 pkg syscall (freebsd-386-cgo), const F_SETLKW = 13 pkg syscall (freebsd-386-cgo), const F_SETLK_REMOTE = 14 pkg syscall (freebsd-386-cgo), const F_SETOWN = 6 pkg syscall (freebsd-386-cgo), const F_UNLCK = 2 pkg syscall (freebsd-386-cgo), const F_UNLCKSYS = 4 pkg syscall (freebsd-386-cgo), const F_WRLCK = 3 pkg syscall (freebsd-386-cgo), const HUPCL = 16384 pkg syscall (freebsd-386-cgo), const ICANON = 256 pkg syscall (freebsd-386-cgo), const ICRNL = 256 pkg syscall (freebsd-386-cgo), const IEXTEN = 1024 pkg syscall (freebsd-386-cgo), const IFAN_ARRIVAL = 0 pkg syscall (freebsd-386-cgo), const IFAN_DEPARTURE = 1 pkg syscall (freebsd-386-cgo), const IFF_ALLMULTI = 512 pkg syscall (freebsd-386-cgo), const IFF_ALTPHYS = 16384 pkg syscall (freebsd-386-cgo), const IFF_CANTCHANGE = 2199410 pkg syscall (freebsd-386-cgo), const IFF_CANTCONFIG = 65536 pkg syscall (freebsd-386-cgo), const IFF_DEBUG = 4 pkg syscall (freebsd-386-cgo), const IFF_DRV_OACTIVE = 1024 pkg syscall (freebsd-386-cgo), const IFF_DRV_RUNNING = 64 pkg syscall (freebsd-386-cgo), const IFF_DYING = 2097152 pkg syscall (freebsd-386-cgo), const IFF_LINK0 = 4096 pkg syscall (freebsd-386-cgo), const IFF_LINK1 = 8192 pkg syscall (freebsd-386-cgo), const IFF_LINK2 = 16384 pkg syscall (freebsd-386-cgo), const IFF_LOOPBACK = 8 pkg syscall (freebsd-386-cgo), const IFF_MONITOR = 262144 pkg syscall (freebsd-386-cgo), const IFF_MULTICAST = 32768 pkg syscall (freebsd-386-cgo), const IFF_NOARP = 128 pkg syscall (freebsd-386-cgo), const IFF_OACTIVE = 1024 pkg syscall (freebsd-386-cgo), const IFF_POINTOPOINT = 16 pkg syscall (freebsd-386-cgo), const IFF_PPROMISC = 131072 pkg syscall (freebsd-386-cgo), const IFF_PROMISC = 256 pkg syscall (freebsd-386-cgo), const IFF_RENAMING = 4194304 pkg syscall (freebsd-386-cgo), const IFF_RUNNING = 64 pkg syscall (freebsd-386-cgo), const IFF_SIMPLEX = 2048 pkg syscall (freebsd-386-cgo), const IFF_SMART = 32 pkg syscall (freebsd-386-cgo), const IFF_STATICARP = 524288 pkg syscall (freebsd-386-cgo), const IFNAMSIZ = 16 pkg syscall (freebsd-386-cgo), const IFT_1822 = 2 pkg syscall (freebsd-386-cgo), const IFT_A12MPPSWITCH = 130 pkg syscall (freebsd-386-cgo), const IFT_AAL2 = 187 pkg syscall (freebsd-386-cgo), const IFT_AAL5 = 49 pkg syscall (freebsd-386-cgo), const IFT_ADSL = 94 pkg syscall (freebsd-386-cgo), const IFT_AFLANE8023 = 59 pkg syscall (freebsd-386-cgo), const IFT_AFLANE8025 = 60 pkg syscall (freebsd-386-cgo), const IFT_ARAP = 88 pkg syscall (freebsd-386-cgo), const IFT_ARCNET = 35 pkg syscall (freebsd-386-cgo), const IFT_ARCNETPLUS = 36 pkg syscall (freebsd-386-cgo), const IFT_ASYNC = 84 pkg syscall (freebsd-386-cgo), const IFT_ATM = 37 pkg syscall (freebsd-386-cgo), const IFT_ATMDXI = 105 pkg syscall (freebsd-386-cgo), const IFT_ATMFUNI = 106 pkg syscall (freebsd-386-cgo), const IFT_ATMIMA = 107 pkg syscall (freebsd-386-cgo), const IFT_ATMLOGICAL = 80 pkg syscall (freebsd-386-cgo), const IFT_ATMRADIO = 189 pkg syscall (freebsd-386-cgo), const IFT_ATMSUBINTERFACE = 134 pkg syscall (freebsd-386-cgo), const IFT_ATMVCIENDPT = 194 pkg syscall (freebsd-386-cgo), const IFT_ATMVIRTUAL = 149 pkg syscall (freebsd-386-cgo), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (freebsd-386-cgo), const IFT_BRIDGE = 209 pkg syscall (freebsd-386-cgo), const IFT_BSC = 83 pkg syscall (freebsd-386-cgo), const IFT_CARP = 248 pkg syscall (freebsd-386-cgo), const IFT_CCTEMUL = 61 pkg syscall (freebsd-386-cgo), const IFT_CEPT = 19 pkg syscall (freebsd-386-cgo), const IFT_CES = 133 pkg syscall (freebsd-386-cgo), const IFT_CHANNEL = 70 pkg syscall (freebsd-386-cgo), const IFT_CNR = 85 pkg syscall (freebsd-386-cgo), const IFT_COFFEE = 132 pkg syscall (freebsd-386-cgo), const IFT_COMPOSITELINK = 155 pkg syscall (freebsd-386-cgo), const IFT_DCN = 141 pkg syscall (freebsd-386-cgo), const IFT_DIGITALPOWERLINE = 138 pkg syscall (freebsd-386-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (freebsd-386-cgo), const IFT_DLSW = 74 pkg syscall (freebsd-386-cgo), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (freebsd-386-cgo), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (freebsd-386-cgo), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (freebsd-386-cgo), const IFT_DS0 = 81 pkg syscall (freebsd-386-cgo), const IFT_DS0BUNDLE = 82 pkg syscall (freebsd-386-cgo), const IFT_DS1FDL = 170 pkg syscall (freebsd-386-cgo), const IFT_DS3 = 30 pkg syscall (freebsd-386-cgo), const IFT_DTM = 140 pkg syscall (freebsd-386-cgo), const IFT_DVBASILN = 172 pkg syscall (freebsd-386-cgo), const IFT_DVBASIOUT = 173 pkg syscall (freebsd-386-cgo), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (freebsd-386-cgo), const IFT_DVBRCCMACLAYER = 146 pkg syscall (freebsd-386-cgo), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (freebsd-386-cgo), const IFT_ENC = 244 pkg syscall (freebsd-386-cgo), const IFT_EON = 25 pkg syscall (freebsd-386-cgo), const IFT_EPLRS = 87 pkg syscall (freebsd-386-cgo), const IFT_ESCON = 73 pkg syscall (freebsd-386-cgo), const IFT_ETHER = 6 pkg syscall (freebsd-386-cgo), const IFT_FAITH = 242 pkg syscall (freebsd-386-cgo), const IFT_FAST = 125 pkg syscall (freebsd-386-cgo), const IFT_FASTETHER = 62 pkg syscall (freebsd-386-cgo), const IFT_FASTETHERFX = 69 pkg syscall (freebsd-386-cgo), const IFT_FDDI = 15 pkg syscall (freebsd-386-cgo), const IFT_FIBRECHANNEL = 56 pkg syscall (freebsd-386-cgo), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (freebsd-386-cgo), const IFT_FRAMERELAYMPI = 92 pkg syscall (freebsd-386-cgo), const IFT_FRDLCIENDPT = 193 pkg syscall (freebsd-386-cgo), const IFT_FRELAY = 32 pkg syscall (freebsd-386-cgo), const IFT_FRELAYDCE = 44 pkg syscall (freebsd-386-cgo), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (freebsd-386-cgo), const IFT_FRFORWARD = 158 pkg syscall (freebsd-386-cgo), const IFT_G703AT2MB = 67 pkg syscall (freebsd-386-cgo), const IFT_G703AT64K = 66 pkg syscall (freebsd-386-cgo), const IFT_GIF = 240 pkg syscall (freebsd-386-cgo), const IFT_GIGABITETHERNET = 117 pkg syscall (freebsd-386-cgo), const IFT_GR303IDT = 178 pkg syscall (freebsd-386-cgo), const IFT_GR303RDT = 177 pkg syscall (freebsd-386-cgo), const IFT_H323GATEKEEPER = 164 pkg syscall (freebsd-386-cgo), const IFT_H323PROXY = 165 pkg syscall (freebsd-386-cgo), const IFT_HDH1822 = 3 pkg syscall (freebsd-386-cgo), const IFT_HDLC = 118 pkg syscall (freebsd-386-cgo), const IFT_HDSL2 = 168 pkg syscall (freebsd-386-cgo), const IFT_HIPERLAN2 = 183 pkg syscall (freebsd-386-cgo), const IFT_HIPPI = 47 pkg syscall (freebsd-386-cgo), const IFT_HIPPIINTERFACE = 57 pkg syscall (freebsd-386-cgo), const IFT_HOSTPAD = 90 pkg syscall (freebsd-386-cgo), const IFT_HSSI = 46 pkg syscall (freebsd-386-cgo), const IFT_HY = 14 pkg syscall (freebsd-386-cgo), const IFT_IBM370PARCHAN = 72 pkg syscall (freebsd-386-cgo), const IFT_IDSL = 154 pkg syscall (freebsd-386-cgo), const IFT_IEEE1394 = 144 pkg syscall (freebsd-386-cgo), const IFT_IEEE80211 = 71 pkg syscall (freebsd-386-cgo), const IFT_IEEE80212 = 55 pkg syscall (freebsd-386-cgo), const IFT_IEEE8023ADLAG = 161 pkg syscall (freebsd-386-cgo), const IFT_IFGSN = 145 pkg syscall (freebsd-386-cgo), const IFT_IMT = 190 pkg syscall (freebsd-386-cgo), const IFT_INFINIBAND = 199 pkg syscall (freebsd-386-cgo), const IFT_INTERLEAVE = 124 pkg syscall (freebsd-386-cgo), const IFT_IP = 126 pkg syscall (freebsd-386-cgo), const IFT_IPFORWARD = 142 pkg syscall (freebsd-386-cgo), const IFT_IPOVERATM = 114 pkg syscall (freebsd-386-cgo), const IFT_IPOVERCDLC = 109 pkg syscall (freebsd-386-cgo), const IFT_IPOVERCLAW = 110 pkg syscall (freebsd-386-cgo), const IFT_IPSWITCH = 78 pkg syscall (freebsd-386-cgo), const IFT_IPXIP = 249 pkg syscall (freebsd-386-cgo), const IFT_ISDN = 63 pkg syscall (freebsd-386-cgo), const IFT_ISDNBASIC = 20 pkg syscall (freebsd-386-cgo), const IFT_ISDNPRIMARY = 21 pkg syscall (freebsd-386-cgo), const IFT_ISDNS = 75 pkg syscall (freebsd-386-cgo), const IFT_ISDNU = 76 pkg syscall (freebsd-386-cgo), const IFT_ISO88022LLC = 41 pkg syscall (freebsd-386-cgo), const IFT_ISO88023 = 7 pkg syscall (freebsd-386-cgo), const IFT_ISO88024 = 8 pkg syscall (freebsd-386-cgo), const IFT_ISO88025 = 9 pkg syscall (freebsd-386-cgo), const IFT_ISO88025CRFPINT = 98 pkg syscall (freebsd-386-cgo), const IFT_ISO88025DTR = 86 pkg syscall (freebsd-386-cgo), const IFT_ISO88025FIBER = 115 pkg syscall (freebsd-386-cgo), const IFT_ISO88026 = 10 pkg syscall (freebsd-386-cgo), const IFT_ISUP = 179 pkg syscall (freebsd-386-cgo), const IFT_L2VLAN = 135 pkg syscall (freebsd-386-cgo), const IFT_L3IPVLAN = 136 pkg syscall (freebsd-386-cgo), const IFT_L3IPXVLAN = 137 pkg syscall (freebsd-386-cgo), const IFT_LAPB = 16 pkg syscall (freebsd-386-cgo), const IFT_LAPD = 77 pkg syscall (freebsd-386-cgo), const IFT_LAPF = 119 pkg syscall (freebsd-386-cgo), const IFT_LOCALTALK = 42 pkg syscall (freebsd-386-cgo), const IFT_LOOP = 24 pkg syscall (freebsd-386-cgo), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (freebsd-386-cgo), const IFT_MFSIGLINK = 167 pkg syscall (freebsd-386-cgo), const IFT_MIOX25 = 38 pkg syscall (freebsd-386-cgo), const IFT_MODEM = 48 pkg syscall (freebsd-386-cgo), const IFT_MPC = 113 pkg syscall (freebsd-386-cgo), const IFT_MPLS = 166 pkg syscall (freebsd-386-cgo), const IFT_MPLSTUNNEL = 150 pkg syscall (freebsd-386-cgo), const IFT_MSDSL = 143 pkg syscall (freebsd-386-cgo), const IFT_MVL = 191 pkg syscall (freebsd-386-cgo), const IFT_MYRINET = 99 pkg syscall (freebsd-386-cgo), const IFT_NFAS = 175 pkg syscall (freebsd-386-cgo), const IFT_NSIP = 27 pkg syscall (freebsd-386-cgo), const IFT_OPTICALCHANNEL = 195 pkg syscall (freebsd-386-cgo), const IFT_OPTICALTRANSPORT = 196 pkg syscall (freebsd-386-cgo), const IFT_OTHER = 1 pkg syscall (freebsd-386-cgo), const IFT_P10 = 12 pkg syscall (freebsd-386-cgo), const IFT_P80 = 13 pkg syscall (freebsd-386-cgo), const IFT_PARA = 34 pkg syscall (freebsd-386-cgo), const IFT_PFLOG = 246 pkg syscall (freebsd-386-cgo), const IFT_PFSYNC = 247 pkg syscall (freebsd-386-cgo), const IFT_PLC = 174 pkg syscall (freebsd-386-cgo), const IFT_POS = 171 pkg syscall (freebsd-386-cgo), const IFT_PPP = 23 pkg syscall (freebsd-386-cgo), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (freebsd-386-cgo), const IFT_PROPBWAP2MP = 184 pkg syscall (freebsd-386-cgo), const IFT_PROPCNLS = 89 pkg syscall (freebsd-386-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (freebsd-386-cgo), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (freebsd-386-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (freebsd-386-cgo), const IFT_PROPMUX = 54 pkg syscall (freebsd-386-cgo), const IFT_PROPVIRTUAL = 53 pkg syscall (freebsd-386-cgo), const IFT_PROPWIRELESSP2P = 157 pkg syscall (freebsd-386-cgo), const IFT_PTPSERIAL = 22 pkg syscall (freebsd-386-cgo), const IFT_PVC = 241 pkg syscall (freebsd-386-cgo), const IFT_QLLC = 68 pkg syscall (freebsd-386-cgo), const IFT_RADIOMAC = 188 pkg syscall (freebsd-386-cgo), const IFT_RADSL = 95 pkg syscall (freebsd-386-cgo), const IFT_REACHDSL = 192 pkg syscall (freebsd-386-cgo), const IFT_RFC1483 = 159 pkg syscall (freebsd-386-cgo), const IFT_RS232 = 33 pkg syscall (freebsd-386-cgo), const IFT_RSRB = 79 pkg syscall (freebsd-386-cgo), const IFT_SDLC = 17 pkg syscall (freebsd-386-cgo), const IFT_SDSL = 96 pkg syscall (freebsd-386-cgo), const IFT_SHDSL = 169 pkg syscall (freebsd-386-cgo), const IFT_SIP = 31 pkg syscall (freebsd-386-cgo), const IFT_SLIP = 28 pkg syscall (freebsd-386-cgo), const IFT_SMDSDXI = 43 pkg syscall (freebsd-386-cgo), const IFT_SMDSICIP = 52 pkg syscall (freebsd-386-cgo), const IFT_SONET = 39 pkg syscall (freebsd-386-cgo), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (freebsd-386-cgo), const IFT_SONETPATH = 50 pkg syscall (freebsd-386-cgo), const IFT_SONETVT = 51 pkg syscall (freebsd-386-cgo), const IFT_SRP = 151 pkg syscall (freebsd-386-cgo), const IFT_SS7SIGLINK = 156 pkg syscall (freebsd-386-cgo), const IFT_STACKTOSTACK = 111 pkg syscall (freebsd-386-cgo), const IFT_STARLAN = 11 pkg syscall (freebsd-386-cgo), const IFT_STF = 215 pkg syscall (freebsd-386-cgo), const IFT_T1 = 18 pkg syscall (freebsd-386-cgo), const IFT_TDLC = 116 pkg syscall (freebsd-386-cgo), const IFT_TERMPAD = 91 pkg syscall (freebsd-386-cgo), const IFT_TR008 = 176 pkg syscall (freebsd-386-cgo), const IFT_TRANSPHDLC = 123 pkg syscall (freebsd-386-cgo), const IFT_TUNNEL = 131 pkg syscall (freebsd-386-cgo), const IFT_ULTRA = 29 pkg syscall (freebsd-386-cgo), const IFT_USB = 160 pkg syscall (freebsd-386-cgo), const IFT_V11 = 64 pkg syscall (freebsd-386-cgo), const IFT_V35 = 45 pkg syscall (freebsd-386-cgo), const IFT_V36 = 65 pkg syscall (freebsd-386-cgo), const IFT_V37 = 120 pkg syscall (freebsd-386-cgo), const IFT_VDSL = 97 pkg syscall (freebsd-386-cgo), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (freebsd-386-cgo), const IFT_VOICEEM = 100 pkg syscall (freebsd-386-cgo), const IFT_VOICEENCAP = 103 pkg syscall (freebsd-386-cgo), const IFT_VOICEFXO = 101 pkg syscall (freebsd-386-cgo), const IFT_VOICEFXS = 102 pkg syscall (freebsd-386-cgo), const IFT_VOICEOVERATM = 152 pkg syscall (freebsd-386-cgo), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (freebsd-386-cgo), const IFT_VOICEOVERIP = 104 pkg syscall (freebsd-386-cgo), const IFT_X213 = 93 pkg syscall (freebsd-386-cgo), const IFT_X25 = 5 pkg syscall (freebsd-386-cgo), const IFT_X25DDN = 4 pkg syscall (freebsd-386-cgo), const IFT_X25HUNTGROUP = 122 pkg syscall (freebsd-386-cgo), const IFT_X25MLP = 121 pkg syscall (freebsd-386-cgo), const IFT_X25PLE = 40 pkg syscall (freebsd-386-cgo), const IFT_XETHER = 26 pkg syscall (freebsd-386-cgo), const IGNBRK = 1 pkg syscall (freebsd-386-cgo), const IGNCR = 128 pkg syscall (freebsd-386-cgo), const IGNPAR = 4 pkg syscall (freebsd-386-cgo), const IMAXBEL = 8192 pkg syscall (freebsd-386-cgo), const INLCR = 64 pkg syscall (freebsd-386-cgo), const INPCK = 16 pkg syscall (freebsd-386-cgo), const IN_CLASSA_HOST = 16777215 pkg syscall (freebsd-386-cgo), const IN_CLASSA_MAX = 128 pkg syscall (freebsd-386-cgo), const IN_CLASSA_NET = 4278190080 pkg syscall (freebsd-386-cgo), const IN_CLASSA_NSHIFT = 24 pkg syscall (freebsd-386-cgo), const IN_CLASSB_HOST = 65535 pkg syscall (freebsd-386-cgo), const IN_CLASSB_MAX = 65536 pkg syscall (freebsd-386-cgo), const IN_CLASSB_NET = 4294901760 pkg syscall (freebsd-386-cgo), const IN_CLASSB_NSHIFT = 16 pkg syscall (freebsd-386-cgo), const IN_CLASSC_HOST = 255 pkg syscall (freebsd-386-cgo), const IN_CLASSC_NET = 4294967040 pkg syscall (freebsd-386-cgo), const IN_CLASSC_NSHIFT = 8 pkg syscall (freebsd-386-cgo), const IN_CLASSD_HOST = 268435455 pkg syscall (freebsd-386-cgo), const IN_CLASSD_NET = 4026531840 pkg syscall (freebsd-386-cgo), const IN_CLASSD_NSHIFT = 28 pkg syscall (freebsd-386-cgo), const IN_LOOPBACKNET = 127 pkg syscall (freebsd-386-cgo), const IN_RFC3021_MASK = 4294967294 pkg syscall (freebsd-386-cgo), const IPPROTO_3PC = 34 pkg syscall (freebsd-386-cgo), const IPPROTO_ADFS = 68 pkg syscall (freebsd-386-cgo), const IPPROTO_AH = 51 pkg syscall (freebsd-386-cgo), const IPPROTO_AHIP = 61 pkg syscall (freebsd-386-cgo), const IPPROTO_APES = 99 pkg syscall (freebsd-386-cgo), const IPPROTO_ARGUS = 13 pkg syscall (freebsd-386-cgo), const IPPROTO_AX25 = 93 pkg syscall (freebsd-386-cgo), const IPPROTO_BHA = 49 pkg syscall (freebsd-386-cgo), const IPPROTO_BLT = 30 pkg syscall (freebsd-386-cgo), const IPPROTO_BRSATMON = 76 pkg syscall (freebsd-386-cgo), const IPPROTO_CARP = 112 pkg syscall (freebsd-386-cgo), const IPPROTO_CFTP = 62 pkg syscall (freebsd-386-cgo), const IPPROTO_CHAOS = 16 pkg syscall (freebsd-386-cgo), const IPPROTO_CMTP = 38 pkg syscall (freebsd-386-cgo), const IPPROTO_CPHB = 73 pkg syscall (freebsd-386-cgo), const IPPROTO_CPNX = 72 pkg syscall (freebsd-386-cgo), const IPPROTO_DDP = 37 pkg syscall (freebsd-386-cgo), const IPPROTO_DGP = 86 pkg syscall (freebsd-386-cgo), const IPPROTO_DIVERT = 258 pkg syscall (freebsd-386-cgo), const IPPROTO_DONE = 257 pkg syscall (freebsd-386-cgo), const IPPROTO_DSTOPTS = 60 pkg syscall (freebsd-386-cgo), const IPPROTO_EGP = 8 pkg syscall (freebsd-386-cgo), const IPPROTO_EMCON = 14 pkg syscall (freebsd-386-cgo), const IPPROTO_ENCAP = 98 pkg syscall (freebsd-386-cgo), const IPPROTO_EON = 80 pkg syscall (freebsd-386-cgo), const IPPROTO_ESP = 50 pkg syscall (freebsd-386-cgo), const IPPROTO_ETHERIP = 97 pkg syscall (freebsd-386-cgo), const IPPROTO_FRAGMENT = 44 pkg syscall (freebsd-386-cgo), const IPPROTO_GGP = 3 pkg syscall (freebsd-386-cgo), const IPPROTO_GMTP = 100 pkg syscall (freebsd-386-cgo), const IPPROTO_GRE = 47 pkg syscall (freebsd-386-cgo), const IPPROTO_HELLO = 63 pkg syscall (freebsd-386-cgo), const IPPROTO_HMP = 20 pkg syscall (freebsd-386-cgo), const IPPROTO_HOPOPTS = 0 pkg syscall (freebsd-386-cgo), const IPPROTO_ICMP = 1 pkg syscall (freebsd-386-cgo), const IPPROTO_ICMPV6 = 58 pkg syscall (freebsd-386-cgo), const IPPROTO_IDP = 22 pkg syscall (freebsd-386-cgo), const IPPROTO_IDPR = 35 pkg syscall (freebsd-386-cgo), const IPPROTO_IDRP = 45 pkg syscall (freebsd-386-cgo), const IPPROTO_IGMP = 2 pkg syscall (freebsd-386-cgo), const IPPROTO_IGP = 85 pkg syscall (freebsd-386-cgo), const IPPROTO_IGRP = 88 pkg syscall (freebsd-386-cgo), const IPPROTO_IL = 40 pkg syscall (freebsd-386-cgo), const IPPROTO_INLSP = 52 pkg syscall (freebsd-386-cgo), const IPPROTO_INP = 32 pkg syscall (freebsd-386-cgo), const IPPROTO_IPCOMP = 108 pkg syscall (freebsd-386-cgo), const IPPROTO_IPCV = 71 pkg syscall (freebsd-386-cgo), const IPPROTO_IPEIP = 94 pkg syscall (freebsd-386-cgo), const IPPROTO_IPIP = 4 pkg syscall (freebsd-386-cgo), const IPPROTO_IPPC = 67 pkg syscall (freebsd-386-cgo), const IPPROTO_IPV4 = 4 pkg syscall (freebsd-386-cgo), const IPPROTO_IRTP = 28 pkg syscall (freebsd-386-cgo), const IPPROTO_KRYPTOLAN = 65 pkg syscall (freebsd-386-cgo), const IPPROTO_LARP = 91 pkg syscall (freebsd-386-cgo), const IPPROTO_LEAF1 = 25 pkg syscall (freebsd-386-cgo), const IPPROTO_LEAF2 = 26 pkg syscall (freebsd-386-cgo), const IPPROTO_MAX = 256 pkg syscall (freebsd-386-cgo), const IPPROTO_MAXID = 52 pkg syscall (freebsd-386-cgo), const IPPROTO_MEAS = 19 pkg syscall (freebsd-386-cgo), const IPPROTO_MH = 135 pkg syscall (freebsd-386-cgo), const IPPROTO_MHRP = 48 pkg syscall (freebsd-386-cgo), const IPPROTO_MICP = 95 pkg syscall (freebsd-386-cgo), const IPPROTO_MOBILE = 55 pkg syscall (freebsd-386-cgo), const IPPROTO_MTP = 92 pkg syscall (freebsd-386-cgo), const IPPROTO_MUX = 18 pkg syscall (freebsd-386-cgo), const IPPROTO_ND = 77 pkg syscall (freebsd-386-cgo), const IPPROTO_NHRP = 54 pkg syscall (freebsd-386-cgo), const IPPROTO_NONE = 59 pkg syscall (freebsd-386-cgo), const IPPROTO_NSP = 31 pkg syscall (freebsd-386-cgo), const IPPROTO_NVPII = 11 pkg syscall (freebsd-386-cgo), const IPPROTO_OLD_DIVERT = 254 pkg syscall (freebsd-386-cgo), const IPPROTO_OSPFIGP = 89 pkg syscall (freebsd-386-cgo), const IPPROTO_PFSYNC = 240 pkg syscall (freebsd-386-cgo), const IPPROTO_PGM = 113 pkg syscall (freebsd-386-cgo), const IPPROTO_PIGP = 9 pkg syscall (freebsd-386-cgo), const IPPROTO_PIM = 103 pkg syscall (freebsd-386-cgo), const IPPROTO_PRM = 21 pkg syscall (freebsd-386-cgo), const IPPROTO_PUP = 12 pkg syscall (freebsd-386-cgo), const IPPROTO_PVP = 75 pkg syscall (freebsd-386-cgo), const IPPROTO_RAW = 255 pkg syscall (freebsd-386-cgo), const IPPROTO_RCCMON = 10 pkg syscall (freebsd-386-cgo), const IPPROTO_RDP = 27 pkg syscall (freebsd-386-cgo), const IPPROTO_ROUTING = 43 pkg syscall (freebsd-386-cgo), const IPPROTO_RSVP = 46 pkg syscall (freebsd-386-cgo), const IPPROTO_RVD = 66 pkg syscall (freebsd-386-cgo), const IPPROTO_SATEXPAK = 64 pkg syscall (freebsd-386-cgo), const IPPROTO_SATMON = 69 pkg syscall (freebsd-386-cgo), const IPPROTO_SCCSP = 96 pkg syscall (freebsd-386-cgo), const IPPROTO_SCTP = 132 pkg syscall (freebsd-386-cgo), const IPPROTO_SDRP = 42 pkg syscall (freebsd-386-cgo), const IPPROTO_SEND = 259 pkg syscall (freebsd-386-cgo), const IPPROTO_SEP = 33 pkg syscall (freebsd-386-cgo), const IPPROTO_SKIP = 57 pkg syscall (freebsd-386-cgo), const IPPROTO_SPACER = 32767 pkg syscall (freebsd-386-cgo), const IPPROTO_SRPC = 90 pkg syscall (freebsd-386-cgo), const IPPROTO_ST = 7 pkg syscall (freebsd-386-cgo), const IPPROTO_SVMTP = 82 pkg syscall (freebsd-386-cgo), const IPPROTO_SWIPE = 53 pkg syscall (freebsd-386-cgo), const IPPROTO_TCF = 87 pkg syscall (freebsd-386-cgo), const IPPROTO_TLSP = 56 pkg syscall (freebsd-386-cgo), const IPPROTO_TP = 29 pkg syscall (freebsd-386-cgo), const IPPROTO_TPXX = 39 pkg syscall (freebsd-386-cgo), const IPPROTO_TRUNK1 = 23 pkg syscall (freebsd-386-cgo), const IPPROTO_TRUNK2 = 24 pkg syscall (freebsd-386-cgo), const IPPROTO_TTP = 84 pkg syscall (freebsd-386-cgo), const IPPROTO_VINES = 83 pkg syscall (freebsd-386-cgo), const IPPROTO_VISA = 70 pkg syscall (freebsd-386-cgo), const IPPROTO_VMTP = 81 pkg syscall (freebsd-386-cgo), const IPPROTO_WBEXPAK = 79 pkg syscall (freebsd-386-cgo), const IPPROTO_WBMON = 78 pkg syscall (freebsd-386-cgo), const IPPROTO_WSN = 74 pkg syscall (freebsd-386-cgo), const IPPROTO_XNET = 15 pkg syscall (freebsd-386-cgo), const IPPROTO_XTP = 36 pkg syscall (freebsd-386-cgo), const IPV6_AUTOFLOWLABEL = 59 pkg syscall (freebsd-386-cgo), const IPV6_BINDANY = 64 pkg syscall (freebsd-386-cgo), const IPV6_BINDV6ONLY = 27 pkg syscall (freebsd-386-cgo), const IPV6_CHECKSUM = 26 pkg syscall (freebsd-386-cgo), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (freebsd-386-cgo), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (freebsd-386-cgo), const IPV6_DEFHLIM = 64 pkg syscall (freebsd-386-cgo), const IPV6_DONTFRAG = 62 pkg syscall (freebsd-386-cgo), const IPV6_DSTOPTS = 50 pkg syscall (freebsd-386-cgo), const IPV6_FAITH = 29 pkg syscall (freebsd-386-cgo), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (freebsd-386-cgo), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (freebsd-386-cgo), const IPV6_FRAGTTL = 120 pkg syscall (freebsd-386-cgo), const IPV6_FW_ADD = 30 pkg syscall (freebsd-386-cgo), const IPV6_FW_DEL = 31 pkg syscall (freebsd-386-cgo), const IPV6_FW_FLUSH = 32 pkg syscall (freebsd-386-cgo), const IPV6_FW_GET = 34 pkg syscall (freebsd-386-cgo), const IPV6_FW_ZERO = 33 pkg syscall (freebsd-386-cgo), const IPV6_HLIMDEC = 1 pkg syscall (freebsd-386-cgo), const IPV6_HOPLIMIT = 47 pkg syscall (freebsd-386-cgo), const IPV6_HOPOPTS = 49 pkg syscall (freebsd-386-cgo), const IPV6_IPSEC_POLICY = 28 pkg syscall (freebsd-386-cgo), const IPV6_JOIN_GROUP = 12 pkg syscall (freebsd-386-cgo), const IPV6_LEAVE_GROUP = 13 pkg syscall (freebsd-386-cgo), const IPV6_MAXHLIM = 255 pkg syscall (freebsd-386-cgo), const IPV6_MAXOPTHDR = 2048 pkg syscall (freebsd-386-cgo), const IPV6_MAXPACKET = 65535 pkg syscall (freebsd-386-cgo), const IPV6_MAX_GROUP_SRC_FILTER = 512 pkg syscall (freebsd-386-cgo), const IPV6_MAX_MEMBERSHIPS = 4095 pkg syscall (freebsd-386-cgo), const IPV6_MAX_SOCK_SRC_FILTER = 128 pkg syscall (freebsd-386-cgo), const IPV6_MIN_MEMBERSHIPS = 31 pkg syscall (freebsd-386-cgo), const IPV6_MMTU = 1280 pkg syscall (freebsd-386-cgo), const IPV6_MSFILTER = 74 pkg syscall (freebsd-386-cgo), const IPV6_MULTICAST_HOPS = 10 pkg syscall (freebsd-386-cgo), const IPV6_MULTICAST_IF = 9 pkg syscall (freebsd-386-cgo), const IPV6_MULTICAST_LOOP = 11 pkg syscall (freebsd-386-cgo), const IPV6_NEXTHOP = 48 pkg syscall (freebsd-386-cgo), const IPV6_PATHMTU = 44 pkg syscall (freebsd-386-cgo), const IPV6_PKTINFO = 46 pkg syscall (freebsd-386-cgo), const IPV6_PORTRANGE = 14 pkg syscall (freebsd-386-cgo), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (freebsd-386-cgo), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (freebsd-386-cgo), const IPV6_PORTRANGE_LOW = 2 pkg syscall (freebsd-386-cgo), const IPV6_PREFER_TEMPADDR = 63 pkg syscall (freebsd-386-cgo), const IPV6_RECVDSTOPTS = 40 pkg syscall (freebsd-386-cgo), const IPV6_RECVHOPLIMIT = 37 pkg syscall (freebsd-386-cgo), const IPV6_RECVHOPOPTS = 39 pkg syscall (freebsd-386-cgo), const IPV6_RECVPATHMTU = 43 pkg syscall (freebsd-386-cgo), const IPV6_RECVPKTINFO = 36 pkg syscall (freebsd-386-cgo), const IPV6_RECVRTHDR = 38 pkg syscall (freebsd-386-cgo), const IPV6_RECVTCLASS = 57 pkg syscall (freebsd-386-cgo), const IPV6_RTHDR = 51 pkg syscall (freebsd-386-cgo), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (freebsd-386-cgo), const IPV6_RTHDR_LOOSE = 0 pkg syscall (freebsd-386-cgo), const IPV6_RTHDR_STRICT = 1 pkg syscall (freebsd-386-cgo), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (freebsd-386-cgo), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (freebsd-386-cgo), const IPV6_TCLASS = 61 pkg syscall (freebsd-386-cgo), const IPV6_UNICAST_HOPS = 4 pkg syscall (freebsd-386-cgo), const IPV6_USE_MIN_MTU = 42 pkg syscall (freebsd-386-cgo), const IPV6_V6ONLY = 27 pkg syscall (freebsd-386-cgo), const IPV6_VERSION = 96 pkg syscall (freebsd-386-cgo), const IPV6_VERSION_MASK = 240 pkg syscall (freebsd-386-cgo), const IP_ADD_MEMBERSHIP = 12 pkg syscall (freebsd-386-cgo), const IP_ADD_SOURCE_MEMBERSHIP = 70 pkg syscall (freebsd-386-cgo), const IP_BINDANY = 24 pkg syscall (freebsd-386-cgo), const IP_BLOCK_SOURCE = 72 pkg syscall (freebsd-386-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (freebsd-386-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (freebsd-386-cgo), const IP_DF = 16384 pkg syscall (freebsd-386-cgo), const IP_DONTFRAG = 67 pkg syscall (freebsd-386-cgo), const IP_DROP_MEMBERSHIP = 13 pkg syscall (freebsd-386-cgo), const IP_DROP_SOURCE_MEMBERSHIP = 71 pkg syscall (freebsd-386-cgo), const IP_DUMMYNET3 = 49 pkg syscall (freebsd-386-cgo), const IP_DUMMYNET_CONFIGURE = 60 pkg syscall (freebsd-386-cgo), const IP_DUMMYNET_DEL = 61 pkg syscall (freebsd-386-cgo), const IP_DUMMYNET_FLUSH = 62 pkg syscall (freebsd-386-cgo), const IP_DUMMYNET_GET = 64 pkg syscall (freebsd-386-cgo), const IP_FAITH = 22 pkg syscall (freebsd-386-cgo), const IP_FW3 = 48 pkg syscall (freebsd-386-cgo), const IP_FW_ADD = 50 pkg syscall (freebsd-386-cgo), const IP_FW_DEL = 51 pkg syscall (freebsd-386-cgo), const IP_FW_FLUSH = 52 pkg syscall (freebsd-386-cgo), const IP_FW_GET = 54 pkg syscall (freebsd-386-cgo), const IP_FW_NAT_CFG = 56 pkg syscall (freebsd-386-cgo), const IP_FW_NAT_DEL = 57 pkg syscall (freebsd-386-cgo), const IP_FW_NAT_GET_CONFIG = 58 pkg syscall (freebsd-386-cgo), const IP_FW_NAT_GET_LOG = 59 pkg syscall (freebsd-386-cgo), const IP_FW_RESETLOG = 55 pkg syscall (freebsd-386-cgo), const IP_FW_TABLE_ADD = 40 pkg syscall (freebsd-386-cgo), const IP_FW_TABLE_DEL = 41 pkg syscall (freebsd-386-cgo), const IP_FW_TABLE_FLUSH = 42 pkg syscall (freebsd-386-cgo), const IP_FW_TABLE_GETSIZE = 43 pkg syscall (freebsd-386-cgo), const IP_FW_TABLE_LIST = 44 pkg syscall (freebsd-386-cgo), const IP_FW_ZERO = 53 pkg syscall (freebsd-386-cgo), const IP_HDRINCL = 2 pkg syscall (freebsd-386-cgo), const IP_IPSEC_POLICY = 21 pkg syscall (freebsd-386-cgo), const IP_MAXPACKET = 65535 pkg syscall (freebsd-386-cgo), const IP_MAX_GROUP_SRC_FILTER = 512 pkg syscall (freebsd-386-cgo), const IP_MAX_MEMBERSHIPS = 4095 pkg syscall (freebsd-386-cgo), const IP_MAX_SOCK_MUTE_FILTER = 128 pkg syscall (freebsd-386-cgo), const IP_MAX_SOCK_SRC_FILTER = 128 pkg syscall (freebsd-386-cgo), const IP_MAX_SOURCE_FILTER = 1024 pkg syscall (freebsd-386-cgo), const IP_MF = 8192 pkg syscall (freebsd-386-cgo), const IP_MINTTL = 66 pkg syscall (freebsd-386-cgo), const IP_MIN_MEMBERSHIPS = 31 pkg syscall (freebsd-386-cgo), const IP_MSFILTER = 74 pkg syscall (freebsd-386-cgo), const IP_MSS = 576 pkg syscall (freebsd-386-cgo), const IP_MULTICAST_IF = 9 pkg syscall (freebsd-386-cgo), const IP_MULTICAST_LOOP = 11 pkg syscall (freebsd-386-cgo), const IP_MULTICAST_TTL = 10 pkg syscall (freebsd-386-cgo), const IP_MULTICAST_VIF = 14 pkg syscall (freebsd-386-cgo), const IP_OFFMASK = 8191 pkg syscall (freebsd-386-cgo), const IP_ONESBCAST = 23 pkg syscall (freebsd-386-cgo), const IP_OPTIONS = 1 pkg syscall (freebsd-386-cgo), const IP_PORTRANGE = 19 pkg syscall (freebsd-386-cgo), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (freebsd-386-cgo), const IP_PORTRANGE_HIGH = 1 pkg syscall (freebsd-386-cgo), const IP_PORTRANGE_LOW = 2 pkg syscall (freebsd-386-cgo), const IP_RECVDSTADDR = 7 pkg syscall (freebsd-386-cgo), const IP_RECVIF = 20 pkg syscall (freebsd-386-cgo), const IP_RECVOPTS = 5 pkg syscall (freebsd-386-cgo), const IP_RECVRETOPTS = 6 pkg syscall (freebsd-386-cgo), const IP_RECVTOS = 68 pkg syscall (freebsd-386-cgo), const IP_RECVTTL = 65 pkg syscall (freebsd-386-cgo), const IP_RETOPTS = 8 pkg syscall (freebsd-386-cgo), const IP_RF = 32768 pkg syscall (freebsd-386-cgo), const IP_RSVP_OFF = 16 pkg syscall (freebsd-386-cgo), const IP_RSVP_ON = 15 pkg syscall (freebsd-386-cgo), const IP_RSVP_VIF_OFF = 18 pkg syscall (freebsd-386-cgo), const IP_RSVP_VIF_ON = 17 pkg syscall (freebsd-386-cgo), const IP_SENDSRCADDR = 7 pkg syscall (freebsd-386-cgo), const IP_TOS = 3 pkg syscall (freebsd-386-cgo), const IP_TTL = 4 pkg syscall (freebsd-386-cgo), const IP_UNBLOCK_SOURCE = 73 pkg syscall (freebsd-386-cgo), const ISIG = 128 pkg syscall (freebsd-386-cgo), const ISTRIP = 32 pkg syscall (freebsd-386-cgo), const IXANY = 2048 pkg syscall (freebsd-386-cgo), const IXOFF = 1024 pkg syscall (freebsd-386-cgo), const IXON = 512 pkg syscall (freebsd-386-cgo), const ImplementsGetwd = false pkg syscall (freebsd-386-cgo), const LOCK_EX = 2 pkg syscall (freebsd-386-cgo), const LOCK_NB = 4 pkg syscall (freebsd-386-cgo), const LOCK_SH = 1 pkg syscall (freebsd-386-cgo), const LOCK_UN = 8 pkg syscall (freebsd-386-cgo), const MADV_AUTOSYNC = 7 pkg syscall (freebsd-386-cgo), const MADV_CORE = 9 pkg syscall (freebsd-386-cgo), const MADV_DONTNEED = 4 pkg syscall (freebsd-386-cgo), const MADV_FREE = 5 pkg syscall (freebsd-386-cgo), const MADV_NOCORE = 8 pkg syscall (freebsd-386-cgo), const MADV_NORMAL = 0 pkg syscall (freebsd-386-cgo), const MADV_NOSYNC = 6 pkg syscall (freebsd-386-cgo), const MADV_PROTECT = 10 pkg syscall (freebsd-386-cgo), const MADV_RANDOM = 1 pkg syscall (freebsd-386-cgo), const MADV_SEQUENTIAL = 2 pkg syscall (freebsd-386-cgo), const MADV_WILLNEED = 3 pkg syscall (freebsd-386-cgo), const MAP_ANON = 4096 pkg syscall (freebsd-386-cgo), const MAP_ANONYMOUS = 4096 pkg syscall (freebsd-386-cgo), const MAP_COPY = 2 pkg syscall (freebsd-386-cgo), const MAP_FILE = 0 pkg syscall (freebsd-386-cgo), const MAP_FIXED = 16 pkg syscall (freebsd-386-cgo), const MAP_HASSEMAPHORE = 512 pkg syscall (freebsd-386-cgo), const MAP_NOCORE = 131072 pkg syscall (freebsd-386-cgo), const MAP_NORESERVE = 64 pkg syscall (freebsd-386-cgo), const MAP_NOSYNC = 2048 pkg syscall (freebsd-386-cgo), const MAP_PREFAULT_READ = 262144 pkg syscall (freebsd-386-cgo), const MAP_PRIVATE = 2 pkg syscall (freebsd-386-cgo), const MAP_RENAME = 32 pkg syscall (freebsd-386-cgo), const MAP_RESERVED0080 = 128 pkg syscall (freebsd-386-cgo), const MAP_RESERVED0100 = 256 pkg syscall (freebsd-386-cgo), const MAP_SHARED = 1 pkg syscall (freebsd-386-cgo), const MAP_STACK = 1024 pkg syscall (freebsd-386-cgo), const MCL_CURRENT = 1 pkg syscall (freebsd-386-cgo), const MCL_FUTURE = 2 pkg syscall (freebsd-386-cgo), const MSG_COMPAT = 32768 pkg syscall (freebsd-386-cgo), const MSG_CTRUNC = 32 pkg syscall (freebsd-386-cgo), const MSG_DONTROUTE = 4 pkg syscall (freebsd-386-cgo), const MSG_DONTWAIT = 128 pkg syscall (freebsd-386-cgo), const MSG_EOF = 256 pkg syscall (freebsd-386-cgo), const MSG_EOR = 8 pkg syscall (freebsd-386-cgo), const MSG_NBIO = 16384 pkg syscall (freebsd-386-cgo), const MSG_NOSIGNAL = 131072 pkg syscall (freebsd-386-cgo), const MSG_NOTIFICATION = 8192 pkg syscall (freebsd-386-cgo), const MSG_OOB = 1 pkg syscall (freebsd-386-cgo), const MSG_PEEK = 2 pkg syscall (freebsd-386-cgo), const MSG_TRUNC = 16 pkg syscall (freebsd-386-cgo), const MSG_WAITALL = 64 pkg syscall (freebsd-386-cgo), const MS_ASYNC = 1 pkg syscall (freebsd-386-cgo), const MS_INVALIDATE = 2 pkg syscall (freebsd-386-cgo), const MS_SYNC = 0 pkg syscall (freebsd-386-cgo), const NET_RT_DUMP = 1 pkg syscall (freebsd-386-cgo), const NET_RT_FLAGS = 2 pkg syscall (freebsd-386-cgo), const NET_RT_IFLIST = 3 pkg syscall (freebsd-386-cgo), const NET_RT_IFLISTL = 5 pkg syscall (freebsd-386-cgo), const NET_RT_IFMALIST = 4 pkg syscall (freebsd-386-cgo), const NET_RT_MAXID = 6 pkg syscall (freebsd-386-cgo), const NOFLSH = 2147483648 pkg syscall (freebsd-386-cgo), const NOTE_ATTRIB = 8 pkg syscall (freebsd-386-cgo), const NOTE_CHILD = 4 pkg syscall (freebsd-386-cgo), const NOTE_DELETE = 1 pkg syscall (freebsd-386-cgo), const NOTE_EXEC = 536870912 pkg syscall (freebsd-386-cgo), const NOTE_EXIT = 2147483648 pkg syscall (freebsd-386-cgo), const NOTE_EXTEND = 4 pkg syscall (freebsd-386-cgo), const NOTE_FFAND = 1073741824 pkg syscall (freebsd-386-cgo), const NOTE_FFCOPY = 3221225472 pkg syscall (freebsd-386-cgo), const NOTE_FFCTRLMASK = 3221225472 pkg syscall (freebsd-386-cgo), const NOTE_FFLAGSMASK = 16777215 pkg syscall (freebsd-386-cgo), const NOTE_FFNOP = 0 pkg syscall (freebsd-386-cgo), const NOTE_FFOR = 2147483648 pkg syscall (freebsd-386-cgo), const NOTE_FORK = 1073741824 pkg syscall (freebsd-386-cgo), const NOTE_LINK = 16 pkg syscall (freebsd-386-cgo), const NOTE_LOWAT = 1 pkg syscall (freebsd-386-cgo), const NOTE_PCTRLMASK = 4026531840 pkg syscall (freebsd-386-cgo), const NOTE_PDATAMASK = 1048575 pkg syscall (freebsd-386-cgo), const NOTE_RENAME = 32 pkg syscall (freebsd-386-cgo), const NOTE_REVOKE = 64 pkg syscall (freebsd-386-cgo), const NOTE_TRACK = 1 pkg syscall (freebsd-386-cgo), const NOTE_TRACKERR = 2 pkg syscall (freebsd-386-cgo), const NOTE_TRIGGER = 16777216 pkg syscall (freebsd-386-cgo), const NOTE_WRITE = 2 pkg syscall (freebsd-386-cgo), const OCRNL = 16 pkg syscall (freebsd-386-cgo), const ONLCR = 2 pkg syscall (freebsd-386-cgo), const ONLRET = 64 pkg syscall (freebsd-386-cgo), const ONOCR = 32 pkg syscall (freebsd-386-cgo), const ONOEOT = 8 pkg syscall (freebsd-386-cgo), const OPOST = 1 pkg syscall (freebsd-386-cgo), const O_ACCMODE = 3 pkg syscall (freebsd-386-cgo), const O_APPEND = 8 pkg syscall (freebsd-386-cgo), const O_ASYNC = 64 pkg syscall (freebsd-386-cgo), const O_CLOEXEC = 0 pkg syscall (freebsd-386-cgo), const O_CREAT = 512 pkg syscall (freebsd-386-cgo), const O_DIRECT = 65536 pkg syscall (freebsd-386-cgo), const O_DIRECTORY = 131072 pkg syscall (freebsd-386-cgo), const O_EXCL = 2048 pkg syscall (freebsd-386-cgo), const O_EXEC = 262144 pkg syscall (freebsd-386-cgo), const O_EXLOCK = 32 pkg syscall (freebsd-386-cgo), const O_FSYNC = 128 pkg syscall (freebsd-386-cgo), const O_NDELAY = 4 pkg syscall (freebsd-386-cgo), const O_NOCTTY = 32768 pkg syscall (freebsd-386-cgo), const O_NOFOLLOW = 256 pkg syscall (freebsd-386-cgo), const O_NONBLOCK = 4 pkg syscall (freebsd-386-cgo), const O_SHLOCK = 16 pkg syscall (freebsd-386-cgo), const O_SYNC = 128 pkg syscall (freebsd-386-cgo), const O_TRUNC = 1024 pkg syscall (freebsd-386-cgo), const O_TTY_INIT = 524288 pkg syscall (freebsd-386-cgo), const PARENB = 4096 pkg syscall (freebsd-386-cgo), const PARMRK = 8 pkg syscall (freebsd-386-cgo), const PARODD = 8192 pkg syscall (freebsd-386-cgo), const PENDIN = 536870912 pkg syscall (freebsd-386-cgo), const PROT_EXEC = 4 pkg syscall (freebsd-386-cgo), const PROT_NONE = 0 pkg syscall (freebsd-386-cgo), const PROT_READ = 1 pkg syscall (freebsd-386-cgo), const PROT_WRITE = 2 pkg syscall (freebsd-386-cgo), const PTRACE_CONT = 7 pkg syscall (freebsd-386-cgo), const PTRACE_KILL = 8 pkg syscall (freebsd-386-cgo), const PTRACE_TRACEME = 0 pkg syscall (freebsd-386-cgo), const RLIMIT_AS = 10 pkg syscall (freebsd-386-cgo), const RLIMIT_CORE = 4 pkg syscall (freebsd-386-cgo), const RLIMIT_CPU = 0 pkg syscall (freebsd-386-cgo), const RLIMIT_DATA = 2 pkg syscall (freebsd-386-cgo), const RLIMIT_FSIZE = 1 pkg syscall (freebsd-386-cgo), const RLIMIT_NOFILE = 8 pkg syscall (freebsd-386-cgo), const RLIMIT_STACK = 3 pkg syscall (freebsd-386-cgo), const RLIM_INFINITY = 9223372036854775807 pkg syscall (freebsd-386-cgo), const RTAX_AUTHOR = 6 pkg syscall (freebsd-386-cgo), const RTAX_BRD = 7 pkg syscall (freebsd-386-cgo), const RTAX_DST = 0 pkg syscall (freebsd-386-cgo), const RTAX_GATEWAY = 1 pkg syscall (freebsd-386-cgo), const RTAX_GENMASK = 3 pkg syscall (freebsd-386-cgo), const RTAX_IFA = 5 pkg syscall (freebsd-386-cgo), const RTAX_IFP = 4 pkg syscall (freebsd-386-cgo), const RTAX_MAX = 8 pkg syscall (freebsd-386-cgo), const RTAX_NETMASK = 2 pkg syscall (freebsd-386-cgo), const RTA_AUTHOR = 64 pkg syscall (freebsd-386-cgo), const RTA_BRD = 128 pkg syscall (freebsd-386-cgo), const RTA_DST = 1 pkg syscall (freebsd-386-cgo), const RTA_GATEWAY = 2 pkg syscall (freebsd-386-cgo), const RTA_GENMASK = 8 pkg syscall (freebsd-386-cgo), const RTA_IFA = 32 pkg syscall (freebsd-386-cgo), const RTA_IFP = 16 pkg syscall (freebsd-386-cgo), const RTA_NETMASK = 4 pkg syscall (freebsd-386-cgo), const RTF_BLACKHOLE = 4096 pkg syscall (freebsd-386-cgo), const RTF_BROADCAST = 4194304 pkg syscall (freebsd-386-cgo), const RTF_DONE = 64 pkg syscall (freebsd-386-cgo), const RTF_DYNAMIC = 16 pkg syscall (freebsd-386-cgo), const RTF_FMASK = 268752904 pkg syscall (freebsd-386-cgo), const RTF_GATEWAY = 2 pkg syscall (freebsd-386-cgo), const RTF_HOST = 4 pkg syscall (freebsd-386-cgo), const RTF_LLDATA = 1024 pkg syscall (freebsd-386-cgo), const RTF_LLINFO = 1024 pkg syscall (freebsd-386-cgo), const RTF_LOCAL = 2097152 pkg syscall (freebsd-386-cgo), const RTF_MODIFIED = 32 pkg syscall (freebsd-386-cgo), const RTF_MULTICAST = 8388608 pkg syscall (freebsd-386-cgo), const RTF_PINNED = 1048576 pkg syscall (freebsd-386-cgo), const RTF_PRCLONING = 65536 pkg syscall (freebsd-386-cgo), const RTF_PROTO1 = 32768 pkg syscall (freebsd-386-cgo), const RTF_PROTO2 = 16384 pkg syscall (freebsd-386-cgo), const RTF_PROTO3 = 262144 pkg syscall (freebsd-386-cgo), const RTF_REJECT = 8 pkg syscall (freebsd-386-cgo), const RTF_RNH_LOCKED = 1073741824 pkg syscall (freebsd-386-cgo), const RTF_STATIC = 2048 pkg syscall (freebsd-386-cgo), const RTF_STICKY = 268435456 pkg syscall (freebsd-386-cgo), const RTF_UP = 1 pkg syscall (freebsd-386-cgo), const RTF_XRESOLVE = 512 pkg syscall (freebsd-386-cgo), const RTM_ADD = 1 pkg syscall (freebsd-386-cgo), const RTM_CHANGE = 3 pkg syscall (freebsd-386-cgo), const RTM_DELADDR = 13 pkg syscall (freebsd-386-cgo), const RTM_DELETE = 2 pkg syscall (freebsd-386-cgo), const RTM_DELMADDR = 16 pkg syscall (freebsd-386-cgo), const RTM_GET = 4 pkg syscall (freebsd-386-cgo), const RTM_IEEE80211 = 18 pkg syscall (freebsd-386-cgo), const RTM_IFANNOUNCE = 17 pkg syscall (freebsd-386-cgo), const RTM_IFINFO = 14 pkg syscall (freebsd-386-cgo), const RTM_LOCK = 8 pkg syscall (freebsd-386-cgo), const RTM_LOSING = 5 pkg syscall (freebsd-386-cgo), const RTM_MISS = 7 pkg syscall (freebsd-386-cgo), const RTM_NEWADDR = 12 pkg syscall (freebsd-386-cgo), const RTM_NEWMADDR = 15 pkg syscall (freebsd-386-cgo), const RTM_OLDADD = 9 pkg syscall (freebsd-386-cgo), const RTM_OLDDEL = 10 pkg syscall (freebsd-386-cgo), const RTM_REDIRECT = 6 pkg syscall (freebsd-386-cgo), const RTM_RESOLVE = 11 pkg syscall (freebsd-386-cgo), const RTM_RTTUNIT = 1000000 pkg syscall (freebsd-386-cgo), const RTM_VERSION = 5 pkg syscall (freebsd-386-cgo), const RTV_EXPIRE = 4 pkg syscall (freebsd-386-cgo), const RTV_HOPCOUNT = 2 pkg syscall (freebsd-386-cgo), const RTV_MTU = 1 pkg syscall (freebsd-386-cgo), const RTV_RPIPE = 8 pkg syscall (freebsd-386-cgo), const RTV_RTT = 64 pkg syscall (freebsd-386-cgo), const RTV_RTTVAR = 128 pkg syscall (freebsd-386-cgo), const RTV_SPIPE = 16 pkg syscall (freebsd-386-cgo), const RTV_SSTHRESH = 32 pkg syscall (freebsd-386-cgo), const RTV_WEIGHT = 256 pkg syscall (freebsd-386-cgo), const RT_CACHING_CONTEXT = 1 pkg syscall (freebsd-386-cgo), const RT_DEFAULT_FIB = 0 pkg syscall (freebsd-386-cgo), const RUSAGE_CHILDREN = -1 pkg syscall (freebsd-386-cgo), const RUSAGE_SELF = 0 pkg syscall (freebsd-386-cgo), const RUSAGE_THREAD = 1 pkg syscall (freebsd-386-cgo), const SCM_BINTIME = 4 pkg syscall (freebsd-386-cgo), const SCM_CREDS = 3 pkg syscall (freebsd-386-cgo), const SCM_RIGHTS = 1 pkg syscall (freebsd-386-cgo), const SCM_TIMESTAMP = 2 pkg syscall (freebsd-386-cgo), const SIGBUS = 10 pkg syscall (freebsd-386-cgo), const SIGCHLD = 20 pkg syscall (freebsd-386-cgo), const SIGCONT = 19 pkg syscall (freebsd-386-cgo), const SIGEMT = 7 pkg syscall (freebsd-386-cgo), const SIGINFO = 29 pkg syscall (freebsd-386-cgo), const SIGIO = 23 pkg syscall (freebsd-386-cgo), const SIGIOT = 6 pkg syscall (freebsd-386-cgo), const SIGLWP = 32 pkg syscall (freebsd-386-cgo), const SIGPROF = 27 pkg syscall (freebsd-386-cgo), const SIGSTOP = 17 pkg syscall (freebsd-386-cgo), const SIGSYS = 12 pkg syscall (freebsd-386-cgo), const SIGTHR = 32 pkg syscall (freebsd-386-cgo), const SIGTSTP = 18 pkg syscall (freebsd-386-cgo), const SIGTTIN = 21 pkg syscall (freebsd-386-cgo), const SIGTTOU = 22 pkg syscall (freebsd-386-cgo), const SIGURG = 16 pkg syscall (freebsd-386-cgo), const SIGUSR1 = 30 pkg syscall (freebsd-386-cgo), const SIGUSR2 = 31 pkg syscall (freebsd-386-cgo), const SIGVTALRM = 26 pkg syscall (freebsd-386-cgo), const SIGWINCH = 28 pkg syscall (freebsd-386-cgo), const SIGXCPU = 24 pkg syscall (freebsd-386-cgo), const SIGXFSZ = 25 pkg syscall (freebsd-386-cgo), const SIOCADDMULTI = 2149607729 pkg syscall (freebsd-386-cgo), const SIOCADDRT = 2150658570 pkg syscall (freebsd-386-cgo), const SIOCAIFADDR = 2151704858 pkg syscall (freebsd-386-cgo), const SIOCAIFGROUP = 2149869959 pkg syscall (freebsd-386-cgo), const SIOCALIFADDR = 2165860635 pkg syscall (freebsd-386-cgo), const SIOCATMARK = 1074033415 pkg syscall (freebsd-386-cgo), const SIOCDELMULTI = 2149607730 pkg syscall (freebsd-386-cgo), const SIOCDELRT = 2150658571 pkg syscall (freebsd-386-cgo), const SIOCDIFADDR = 2149607705 pkg syscall (freebsd-386-cgo), const SIOCDIFGROUP = 2149869961 pkg syscall (freebsd-386-cgo), const SIOCDIFPHYADDR = 2149607753 pkg syscall (freebsd-386-cgo), const SIOCDLIFADDR = 2165860637 pkg syscall (freebsd-386-cgo), const SIOCGDRVSPEC = 3223087483 pkg syscall (freebsd-386-cgo), const SIOCGETSGCNT = 3222565392 pkg syscall (freebsd-386-cgo), const SIOCGETVIFCNT = 3222565391 pkg syscall (freebsd-386-cgo), const SIOCGHIWAT = 1074033409 pkg syscall (freebsd-386-cgo), const SIOCGIFADDR = 3223349537 pkg syscall (freebsd-386-cgo), const SIOCGIFBRDADDR = 3223349539 pkg syscall (freebsd-386-cgo), const SIOCGIFCAP = 3223349535 pkg syscall (freebsd-386-cgo), const SIOCGIFCONF = 3221776676 pkg syscall (freebsd-386-cgo), const SIOCGIFDESCR = 3223349546 pkg syscall (freebsd-386-cgo), const SIOCGIFDSTADDR = 3223349538 pkg syscall (freebsd-386-cgo), const SIOCGIFFIB = 3223349596 pkg syscall (freebsd-386-cgo), const SIOCGIFFLAGS = 3223349521 pkg syscall (freebsd-386-cgo), const SIOCGIFGENERIC = 3223349562 pkg syscall (freebsd-386-cgo), const SIOCGIFGMEMB = 3223611786 pkg syscall (freebsd-386-cgo), const SIOCGIFGROUP = 3223611784 pkg syscall (freebsd-386-cgo), const SIOCGIFINDEX = 3223349536 pkg syscall (freebsd-386-cgo), const SIOCGIFMAC = 3223349542 pkg syscall (freebsd-386-cgo), const SIOCGIFMEDIA = 3223873848 pkg syscall (freebsd-386-cgo), const SIOCGIFMETRIC = 3223349527 pkg syscall (freebsd-386-cgo), const SIOCGIFMTU = 3223349555 pkg syscall (freebsd-386-cgo), const SIOCGIFNETMASK = 3223349541 pkg syscall (freebsd-386-cgo), const SIOCGIFPDSTADDR = 3223349576 pkg syscall (freebsd-386-cgo), const SIOCGIFPHYS = 3223349557 pkg syscall (freebsd-386-cgo), const SIOCGIFPSRCADDR = 3223349575 pkg syscall (freebsd-386-cgo), const SIOCGIFSTATUS = 3274795323 pkg syscall (freebsd-386-cgo), const SIOCGLIFADDR = 3239602460 pkg syscall (freebsd-386-cgo), const SIOCGLIFPHYADDR = 3239602507 pkg syscall (freebsd-386-cgo), const SIOCGLOWAT = 1074033411 pkg syscall (freebsd-386-cgo), const SIOCGPGRP = 1074033417 pkg syscall (freebsd-386-cgo), const SIOCGPRIVATE_0 = 3223349584 pkg syscall (freebsd-386-cgo), const SIOCGPRIVATE_1 = 3223349585 pkg syscall (freebsd-386-cgo), const SIOCIFCREATE = 3223349626 pkg syscall (freebsd-386-cgo), const SIOCIFCREATE2 = 3223349628 pkg syscall (freebsd-386-cgo), const SIOCIFDESTROY = 2149607801 pkg syscall (freebsd-386-cgo), const SIOCIFGCLONERS = 3222038904 pkg syscall (freebsd-386-cgo), const SIOCSDRVSPEC = 2149345659 pkg syscall (freebsd-386-cgo), const SIOCSHIWAT = 2147775232 pkg syscall (freebsd-386-cgo), const SIOCSIFADDR = 2149607692 pkg syscall (freebsd-386-cgo), const SIOCSIFBRDADDR = 2149607699 pkg syscall (freebsd-386-cgo), const SIOCSIFCAP = 2149607710 pkg syscall (freebsd-386-cgo), const SIOCSIFDESCR = 2149607721 pkg syscall (freebsd-386-cgo), const SIOCSIFDSTADDR = 2149607694 pkg syscall (freebsd-386-cgo), const SIOCSIFFIB = 2149607773 pkg syscall (freebsd-386-cgo), const SIOCSIFFLAGS = 2149607696 pkg syscall (freebsd-386-cgo), const SIOCSIFGENERIC = 2149607737 pkg syscall (freebsd-386-cgo), const SIOCSIFLLADDR = 2149607740 pkg syscall (freebsd-386-cgo), const SIOCSIFMAC = 2149607719 pkg syscall (freebsd-386-cgo), const SIOCSIFMEDIA = 3223349559 pkg syscall (freebsd-386-cgo), const SIOCSIFMETRIC = 2149607704 pkg syscall (freebsd-386-cgo), const SIOCSIFMTU = 2149607732 pkg syscall (freebsd-386-cgo), const SIOCSIFNAME = 2149607720 pkg syscall (freebsd-386-cgo), const SIOCSIFNETMASK = 2149607702 pkg syscall (freebsd-386-cgo), const SIOCSIFPHYADDR = 2151704902 pkg syscall (freebsd-386-cgo), const SIOCSIFPHYS = 2149607734 pkg syscall (freebsd-386-cgo), const SIOCSIFRVNET = 3223349595 pkg syscall (freebsd-386-cgo), const SIOCSIFVNET = 3223349594 pkg syscall (freebsd-386-cgo), const SIOCSLIFPHYADDR = 2165860682 pkg syscall (freebsd-386-cgo), const SIOCSLOWAT = 2147775234 pkg syscall (freebsd-386-cgo), const SIOCSPGRP = 2147775240 pkg syscall (freebsd-386-cgo), const SOCK_MAXADDRLEN = 255 pkg syscall (freebsd-386-cgo), const SOCK_RDM = 4 pkg syscall (freebsd-386-cgo), const SOL_SOCKET = 65535 pkg syscall (freebsd-386-cgo), const SOMAXCONN = 128 pkg syscall (freebsd-386-cgo), const SO_ACCEPTCONN = 2 pkg syscall (freebsd-386-cgo), const SO_ACCEPTFILTER = 4096 pkg syscall (freebsd-386-cgo), const SO_BINTIME = 8192 pkg syscall (freebsd-386-cgo), const SO_BROADCAST = 32 pkg syscall (freebsd-386-cgo), const SO_DEBUG = 1 pkg syscall (freebsd-386-cgo), const SO_DONTROUTE = 16 pkg syscall (freebsd-386-cgo), const SO_ERROR = 4103 pkg syscall (freebsd-386-cgo), const SO_KEEPALIVE = 8 pkg syscall (freebsd-386-cgo), const SO_LABEL = 4105 pkg syscall (freebsd-386-cgo), const SO_LINGER = 128 pkg syscall (freebsd-386-cgo), const SO_LISTENINCQLEN = 4115 pkg syscall (freebsd-386-cgo), const SO_LISTENQLEN = 4114 pkg syscall (freebsd-386-cgo), const SO_LISTENQLIMIT = 4113 pkg syscall (freebsd-386-cgo), const SO_NOSIGPIPE = 2048 pkg syscall (freebsd-386-cgo), const SO_NO_DDP = 32768 pkg syscall (freebsd-386-cgo), const SO_NO_OFFLOAD = 16384 pkg syscall (freebsd-386-cgo), const SO_OOBINLINE = 256 pkg syscall (freebsd-386-cgo), const SO_PEERLABEL = 4112 pkg syscall (freebsd-386-cgo), const SO_PROTOCOL = 4118 pkg syscall (freebsd-386-cgo), const SO_PROTOTYPE = 4118 pkg syscall (freebsd-386-cgo), const SO_RCVBUF = 4098 pkg syscall (freebsd-386-cgo), const SO_RCVLOWAT = 4100 pkg syscall (freebsd-386-cgo), const SO_RCVTIMEO = 4102 pkg syscall (freebsd-386-cgo), const SO_REUSEADDR = 4 pkg syscall (freebsd-386-cgo), const SO_REUSEPORT = 512 pkg syscall (freebsd-386-cgo), const SO_SETFIB = 4116 pkg syscall (freebsd-386-cgo), const SO_SNDBUF = 4097 pkg syscall (freebsd-386-cgo), const SO_SNDLOWAT = 4099 pkg syscall (freebsd-386-cgo), const SO_SNDTIMEO = 4101 pkg syscall (freebsd-386-cgo), const SO_TIMESTAMP = 1024 pkg syscall (freebsd-386-cgo), const SO_TYPE = 4104 pkg syscall (freebsd-386-cgo), const SO_USELOOPBACK = 64 pkg syscall (freebsd-386-cgo), const SO_USER_COOKIE = 4117 pkg syscall (freebsd-386-cgo), const SYS_ABORT2 = 463 pkg syscall (freebsd-386-cgo), const SYS_ACCEPT = 30 pkg syscall (freebsd-386-cgo), const SYS_ACCESS = 33 pkg syscall (freebsd-386-cgo), const SYS_ACCT = 51 pkg syscall (freebsd-386-cgo), const SYS_ADJTIME = 140 pkg syscall (freebsd-386-cgo), const SYS_AUDIT = 445 pkg syscall (freebsd-386-cgo), const SYS_AUDITCTL = 453 pkg syscall (freebsd-386-cgo), const SYS_AUDITON = 446 pkg syscall (freebsd-386-cgo), const SYS_BIND = 104 pkg syscall (freebsd-386-cgo), const SYS_CAP_ENTER = 516 pkg syscall (freebsd-386-cgo), const SYS_CAP_GETMODE = 517 pkg syscall (freebsd-386-cgo), const SYS_CAP_GETRIGHTS = 515 pkg syscall (freebsd-386-cgo), const SYS_CAP_NEW = 514 pkg syscall (freebsd-386-cgo), const SYS_CHDIR = 12 pkg syscall (freebsd-386-cgo), const SYS_CHFLAGS = 34 pkg syscall (freebsd-386-cgo), const SYS_CHMOD = 15 pkg syscall (freebsd-386-cgo), const SYS_CHOWN = 16 pkg syscall (freebsd-386-cgo), const SYS_CHROOT = 61 pkg syscall (freebsd-386-cgo), const SYS_CLOCK_GETCPUCLOCKID2 = 247 pkg syscall (freebsd-386-cgo), const SYS_CLOCK_GETRES = 234 pkg syscall (freebsd-386-cgo), const SYS_CLOCK_GETTIME = 232 pkg syscall (freebsd-386-cgo), const SYS_CLOCK_SETTIME = 233 pkg syscall (freebsd-386-cgo), const SYS_CLOSE = 6 pkg syscall (freebsd-386-cgo), const SYS_CLOSEFROM = 509 pkg syscall (freebsd-386-cgo), const SYS_CONNECT = 98 pkg syscall (freebsd-386-cgo), const SYS_CPUSET = 484 pkg syscall (freebsd-386-cgo), const SYS_CPUSET_GETAFFINITY = 487 pkg syscall (freebsd-386-cgo), const SYS_CPUSET_GETID = 486 pkg syscall (freebsd-386-cgo), const SYS_CPUSET_SETAFFINITY = 488 pkg syscall (freebsd-386-cgo), const SYS_CPUSET_SETID = 485 pkg syscall (freebsd-386-cgo), const SYS_DUP = 41 pkg syscall (freebsd-386-cgo), const SYS_DUP2 = 90 pkg syscall (freebsd-386-cgo), const SYS_EACCESS = 376 pkg syscall (freebsd-386-cgo), const SYS_EXECVE = 59 pkg syscall (freebsd-386-cgo), const SYS_EXIT = 1 pkg syscall (freebsd-386-cgo), const SYS_EXTATTRCTL = 355 pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_DELETE_FD = 373 pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_DELETE_FILE = 358 pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_DELETE_LINK = 414 pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_GET_FD = 372 pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_GET_FILE = 357 pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_GET_LINK = 413 pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_LIST_FD = 437 pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_LIST_FILE = 438 pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_LIST_LINK = 439 pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_SET_FD = 371 pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_SET_FILE = 356 pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_SET_LINK = 412 pkg syscall (freebsd-386-cgo), const SYS_FACCESSAT = 489 pkg syscall (freebsd-386-cgo), const SYS_FCHDIR = 13 pkg syscall (freebsd-386-cgo), const SYS_FCHFLAGS = 35 pkg syscall (freebsd-386-cgo), const SYS_FCHMOD = 124 pkg syscall (freebsd-386-cgo), const SYS_FCHMODAT = 490 pkg syscall (freebsd-386-cgo), const SYS_FCHOWN = 123 pkg syscall (freebsd-386-cgo), const SYS_FCHOWNAT = 491 pkg syscall (freebsd-386-cgo), const SYS_FCNTL = 92 pkg syscall (freebsd-386-cgo), const SYS_FEXECVE = 492 pkg syscall (freebsd-386-cgo), const SYS_FFCLOCK_GETCOUNTER = 241 pkg syscall (freebsd-386-cgo), const SYS_FFCLOCK_GETESTIMATE = 243 pkg syscall (freebsd-386-cgo), const SYS_FFCLOCK_SETESTIMATE = 242 pkg syscall (freebsd-386-cgo), const SYS_FHOPEN = 298 pkg syscall (freebsd-386-cgo), const SYS_FHSTAT = 299 pkg syscall (freebsd-386-cgo), const SYS_FHSTATFS = 398 pkg syscall (freebsd-386-cgo), const SYS_FLOCK = 131 pkg syscall (freebsd-386-cgo), const SYS_FORK = 2 pkg syscall (freebsd-386-cgo), const SYS_FPATHCONF = 192 pkg syscall (freebsd-386-cgo), const SYS_FREEBSD6_FTRUNCATE = 201 pkg syscall (freebsd-386-cgo), const SYS_FREEBSD6_LSEEK = 199 pkg syscall (freebsd-386-cgo), const SYS_FREEBSD6_MMAP = 197 pkg syscall (freebsd-386-cgo), const SYS_FREEBSD6_PREAD = 173 pkg syscall (freebsd-386-cgo), const SYS_FREEBSD6_PWRITE = 174 pkg syscall (freebsd-386-cgo), const SYS_FREEBSD6_TRUNCATE = 200 pkg syscall (freebsd-386-cgo), const SYS_FSTAT = 189 pkg syscall (freebsd-386-cgo), const SYS_FSTATAT = 493 pkg syscall (freebsd-386-cgo), const SYS_FSTATFS = 397 pkg syscall (freebsd-386-cgo), const SYS_FSYNC = 95 pkg syscall (freebsd-386-cgo), const SYS_FTRUNCATE = 480 pkg syscall (freebsd-386-cgo), const SYS_FUTIMES = 206 pkg syscall (freebsd-386-cgo), const SYS_FUTIMESAT = 494 pkg syscall (freebsd-386-cgo), const SYS_GETAUDIT = 449 pkg syscall (freebsd-386-cgo), const SYS_GETAUDIT_ADDR = 451 pkg syscall (freebsd-386-cgo), const SYS_GETAUID = 447 pkg syscall (freebsd-386-cgo), const SYS_GETCONTEXT = 421 pkg syscall (freebsd-386-cgo), const SYS_GETDENTS = 272 pkg syscall (freebsd-386-cgo), const SYS_GETDIRENTRIES = 196 pkg syscall (freebsd-386-cgo), const SYS_GETDTABLESIZE = 89 pkg syscall (freebsd-386-cgo), const SYS_GETEGID = 43 pkg syscall (freebsd-386-cgo), const SYS_GETEUID = 25 pkg syscall (freebsd-386-cgo), const SYS_GETFH = 161 pkg syscall (freebsd-386-cgo), const SYS_GETFSSTAT = 395 pkg syscall (freebsd-386-cgo), const SYS_GETGID = 47 pkg syscall (freebsd-386-cgo), const SYS_GETGROUPS = 79 pkg syscall (freebsd-386-cgo), const SYS_GETITIMER = 86 pkg syscall (freebsd-386-cgo), const SYS_GETLOGIN = 49 pkg syscall (freebsd-386-cgo), const SYS_GETLOGINCLASS = 523 pkg syscall (freebsd-386-cgo), const SYS_GETPEERNAME = 31 pkg syscall (freebsd-386-cgo), const SYS_GETPGID = 207 pkg syscall (freebsd-386-cgo), const SYS_GETPGRP = 81 pkg syscall (freebsd-386-cgo), const SYS_GETPID = 20 pkg syscall (freebsd-386-cgo), const SYS_GETPPID = 39 pkg syscall (freebsd-386-cgo), const SYS_GETPRIORITY = 100 pkg syscall (freebsd-386-cgo), const SYS_GETRESGID = 361 pkg syscall (freebsd-386-cgo), const SYS_GETRESUID = 360 pkg syscall (freebsd-386-cgo), const SYS_GETRLIMIT = 194 pkg syscall (freebsd-386-cgo), const SYS_GETRUSAGE = 117 pkg syscall (freebsd-386-cgo), const SYS_GETSID = 310 pkg syscall (freebsd-386-cgo), const SYS_GETSOCKNAME = 32 pkg syscall (freebsd-386-cgo), const SYS_GETSOCKOPT = 118 pkg syscall (freebsd-386-cgo), const SYS_GETTIMEOFDAY = 116 pkg syscall (freebsd-386-cgo), const SYS_GETUID = 24 pkg syscall (freebsd-386-cgo), const SYS_IOCTL = 54 pkg syscall (freebsd-386-cgo), const SYS_ISSETUGID = 253 pkg syscall (freebsd-386-cgo), const SYS_JAIL = 338 pkg syscall (freebsd-386-cgo), const SYS_JAIL_ATTACH = 436 pkg syscall (freebsd-386-cgo), const SYS_JAIL_GET = 506 pkg syscall (freebsd-386-cgo), const SYS_JAIL_REMOVE = 508 pkg syscall (freebsd-386-cgo), const SYS_JAIL_SET = 507 pkg syscall (freebsd-386-cgo), const SYS_KENV = 390 pkg syscall (freebsd-386-cgo), const SYS_KEVENT = 363 pkg syscall (freebsd-386-cgo), const SYS_KILL = 37 pkg syscall (freebsd-386-cgo), const SYS_KLDFIND = 306 pkg syscall (freebsd-386-cgo), const SYS_KLDFIRSTMOD = 309 pkg syscall (freebsd-386-cgo), const SYS_KLDLOAD = 304 pkg syscall (freebsd-386-cgo), const SYS_KLDNEXT = 307 pkg syscall (freebsd-386-cgo), const SYS_KLDSTAT = 308 pkg syscall (freebsd-386-cgo), const SYS_KLDSYM = 337 pkg syscall (freebsd-386-cgo), const SYS_KLDUNLOAD = 305 pkg syscall (freebsd-386-cgo), const SYS_KLDUNLOADF = 444 pkg syscall (freebsd-386-cgo), const SYS_KQUEUE = 362 pkg syscall (freebsd-386-cgo), const SYS_KTIMER_CREATE = 235 pkg syscall (freebsd-386-cgo), const SYS_KTIMER_DELETE = 236 pkg syscall (freebsd-386-cgo), const SYS_KTIMER_GETOVERRUN = 239 pkg syscall (freebsd-386-cgo), const SYS_KTIMER_GETTIME = 238 pkg syscall (freebsd-386-cgo), const SYS_KTIMER_SETTIME = 237 pkg syscall (freebsd-386-cgo), const SYS_KTRACE = 45 pkg syscall (freebsd-386-cgo), const SYS_LCHFLAGS = 391 pkg syscall (freebsd-386-cgo), const SYS_LCHMOD = 274 pkg syscall (freebsd-386-cgo), const SYS_LCHOWN = 254 pkg syscall (freebsd-386-cgo), const SYS_LGETFH = 160 pkg syscall (freebsd-386-cgo), const SYS_LINK = 9 pkg syscall (freebsd-386-cgo), const SYS_LINKAT = 495 pkg syscall (freebsd-386-cgo), const SYS_LISTEN = 106 pkg syscall (freebsd-386-cgo), const SYS_LPATHCONF = 513 pkg syscall (freebsd-386-cgo), const SYS_LSEEK = 478 pkg syscall (freebsd-386-cgo), const SYS_LSTAT = 190 pkg syscall (freebsd-386-cgo), const SYS_LUTIMES = 276 pkg syscall (freebsd-386-cgo), const SYS_MAC_SYSCALL = 394 pkg syscall (freebsd-386-cgo), const SYS_MADVISE = 75 pkg syscall (freebsd-386-cgo), const SYS_MINCORE = 78 pkg syscall (freebsd-386-cgo), const SYS_MINHERIT = 250 pkg syscall (freebsd-386-cgo), const SYS_MKDIR = 136 pkg syscall (freebsd-386-cgo), const SYS_MKDIRAT = 496 pkg syscall (freebsd-386-cgo), const SYS_MKFIFO = 132 pkg syscall (freebsd-386-cgo), const SYS_MKFIFOAT = 497 pkg syscall (freebsd-386-cgo), const SYS_MKNOD = 14 pkg syscall (freebsd-386-cgo), const SYS_MKNODAT = 498 pkg syscall (freebsd-386-cgo), const SYS_MLOCK = 203 pkg syscall (freebsd-386-cgo), const SYS_MLOCKALL = 324 pkg syscall (freebsd-386-cgo), const SYS_MMAP = 477 pkg syscall (freebsd-386-cgo), const SYS_MODFIND = 303 pkg syscall (freebsd-386-cgo), const SYS_MODFNEXT = 302 pkg syscall (freebsd-386-cgo), const SYS_MODNEXT = 300 pkg syscall (freebsd-386-cgo), const SYS_MODSTAT = 301 pkg syscall (freebsd-386-cgo), const SYS_MOUNT = 21 pkg syscall (freebsd-386-cgo), const SYS_MPROTECT = 74 pkg syscall (freebsd-386-cgo), const SYS_MSYNC = 65 pkg syscall (freebsd-386-cgo), const SYS_MUNLOCK = 204 pkg syscall (freebsd-386-cgo), const SYS_MUNLOCKALL = 325 pkg syscall (freebsd-386-cgo), const SYS_MUNMAP = 73 pkg syscall (freebsd-386-cgo), const SYS_NANOSLEEP = 240 pkg syscall (freebsd-386-cgo), const SYS_NFSTAT = 279 pkg syscall (freebsd-386-cgo), const SYS_NLSTAT = 280 pkg syscall (freebsd-386-cgo), const SYS_NMOUNT = 378 pkg syscall (freebsd-386-cgo), const SYS_NSTAT = 278 pkg syscall (freebsd-386-cgo), const SYS_NTP_ADJTIME = 176 pkg syscall (freebsd-386-cgo), const SYS_NTP_GETTIME = 248 pkg syscall (freebsd-386-cgo), const SYS_OBREAK = 17 pkg syscall (freebsd-386-cgo), const SYS_OPEN = 5 pkg syscall (freebsd-386-cgo), const SYS_OPENAT = 499 pkg syscall (freebsd-386-cgo), const SYS_OPENBSD_POLL = 252 pkg syscall (freebsd-386-cgo), const SYS_OVADVISE = 72 pkg syscall (freebsd-386-cgo), const SYS_PATHCONF = 191 pkg syscall (freebsd-386-cgo), const SYS_PDFORK = 518 pkg syscall (freebsd-386-cgo), const SYS_PDGETPID = 520 pkg syscall (freebsd-386-cgo), const SYS_PDKILL = 519 pkg syscall (freebsd-386-cgo), const SYS_PIPE = 42 pkg syscall (freebsd-386-cgo), const SYS_POLL = 209 pkg syscall (freebsd-386-cgo), const SYS_POSIX_FADVISE = 531 pkg syscall (freebsd-386-cgo), const SYS_POSIX_FALLOCATE = 530 pkg syscall (freebsd-386-cgo), const SYS_POSIX_OPENPT = 504 pkg syscall (freebsd-386-cgo), const SYS_PREAD = 475 pkg syscall (freebsd-386-cgo), const SYS_PREADV = 289 pkg syscall (freebsd-386-cgo), const SYS_PROFIL = 44 pkg syscall (freebsd-386-cgo), const SYS_PSELECT = 522 pkg syscall (freebsd-386-cgo), const SYS_PTRACE = 26 pkg syscall (freebsd-386-cgo), const SYS_PWRITE = 476 pkg syscall (freebsd-386-cgo), const SYS_PWRITEV = 290 pkg syscall (freebsd-386-cgo), const SYS_QUOTACTL = 148 pkg syscall (freebsd-386-cgo), const SYS_RCTL_ADD_RULE = 528 pkg syscall (freebsd-386-cgo), const SYS_RCTL_GET_LIMITS = 527 pkg syscall (freebsd-386-cgo), const SYS_RCTL_GET_RACCT = 525 pkg syscall (freebsd-386-cgo), const SYS_RCTL_GET_RULES = 526 pkg syscall (freebsd-386-cgo), const SYS_RCTL_REMOVE_RULE = 529 pkg syscall (freebsd-386-cgo), const SYS_READ = 3 pkg syscall (freebsd-386-cgo), const SYS_READLINK = 58 pkg syscall (freebsd-386-cgo), const SYS_READLINKAT = 500 pkg syscall (freebsd-386-cgo), const SYS_READV = 120 pkg syscall (freebsd-386-cgo), const SYS_REBOOT = 55 pkg syscall (freebsd-386-cgo), const SYS_RECVFROM = 29 pkg syscall (freebsd-386-cgo), const SYS_RECVMSG = 27 pkg syscall (freebsd-386-cgo), const SYS_RENAME = 128 pkg syscall (freebsd-386-cgo), const SYS_RENAMEAT = 501 pkg syscall (freebsd-386-cgo), const SYS_REVOKE = 56 pkg syscall (freebsd-386-cgo), const SYS_RFORK = 251 pkg syscall (freebsd-386-cgo), const SYS_RMDIR = 137 pkg syscall (freebsd-386-cgo), const SYS_RTPRIO = 166 pkg syscall (freebsd-386-cgo), const SYS_RTPRIO_THREAD = 466 pkg syscall (freebsd-386-cgo), const SYS_SBRK = 69 pkg syscall (freebsd-386-cgo), const SYS_SCHED_GETPARAM = 328 pkg syscall (freebsd-386-cgo), const SYS_SCHED_GETSCHEDULER = 330 pkg syscall (freebsd-386-cgo), const SYS_SCHED_GET_PRIORITY_MAX = 332 pkg syscall (freebsd-386-cgo), const SYS_SCHED_GET_PRIORITY_MIN = 333 pkg syscall (freebsd-386-cgo), const SYS_SCHED_RR_GET_INTERVAL = 334 pkg syscall (freebsd-386-cgo), const SYS_SCHED_SETPARAM = 327 pkg syscall (freebsd-386-cgo), const SYS_SCHED_SETSCHEDULER = 329 pkg syscall (freebsd-386-cgo), const SYS_SCHED_YIELD = 331 pkg syscall (freebsd-386-cgo), const SYS_SCTP_GENERIC_RECVMSG = 474 pkg syscall (freebsd-386-cgo), const SYS_SCTP_GENERIC_SENDMSG = 472 pkg syscall (freebsd-386-cgo), const SYS_SCTP_GENERIC_SENDMSG_IOV = 473 pkg syscall (freebsd-386-cgo), const SYS_SCTP_PEELOFF = 471 pkg syscall (freebsd-386-cgo), const SYS_SELECT = 93 pkg syscall (freebsd-386-cgo), const SYS_SENDFILE = 393 pkg syscall (freebsd-386-cgo), const SYS_SENDMSG = 28 pkg syscall (freebsd-386-cgo), const SYS_SENDTO = 133 pkg syscall (freebsd-386-cgo), const SYS_SETAUDIT = 450 pkg syscall (freebsd-386-cgo), const SYS_SETAUDIT_ADDR = 452 pkg syscall (freebsd-386-cgo), const SYS_SETAUID = 448 pkg syscall (freebsd-386-cgo), const SYS_SETCONTEXT = 422 pkg syscall (freebsd-386-cgo), const SYS_SETEGID = 182 pkg syscall (freebsd-386-cgo), const SYS_SETEUID = 183 pkg syscall (freebsd-386-cgo), const SYS_SETFIB = 175 pkg syscall (freebsd-386-cgo), const SYS_SETGID = 181 pkg syscall (freebsd-386-cgo), const SYS_SETGROUPS = 80 pkg syscall (freebsd-386-cgo), const SYS_SETITIMER = 83 pkg syscall (freebsd-386-cgo), const SYS_SETLOGIN = 50 pkg syscall (freebsd-386-cgo), const SYS_SETLOGINCLASS = 524 pkg syscall (freebsd-386-cgo), const SYS_SETPGID = 82 pkg syscall (freebsd-386-cgo), const SYS_SETPRIORITY = 96 pkg syscall (freebsd-386-cgo), const SYS_SETREGID = 127 pkg syscall (freebsd-386-cgo), const SYS_SETRESGID = 312 pkg syscall (freebsd-386-cgo), const SYS_SETRESUID = 311 pkg syscall (freebsd-386-cgo), const SYS_SETREUID = 126 pkg syscall (freebsd-386-cgo), const SYS_SETRLIMIT = 195 pkg syscall (freebsd-386-cgo), const SYS_SETSID = 147 pkg syscall (freebsd-386-cgo), const SYS_SETSOCKOPT = 105 pkg syscall (freebsd-386-cgo), const SYS_SETTIMEOFDAY = 122 pkg syscall (freebsd-386-cgo), const SYS_SETUID = 23 pkg syscall (freebsd-386-cgo), const SYS_SHM_OPEN = 482 pkg syscall (freebsd-386-cgo), const SYS_SHM_UNLINK = 483 pkg syscall (freebsd-386-cgo), const SYS_SHUTDOWN = 134 pkg syscall (freebsd-386-cgo), const SYS_SIGACTION = 416 pkg syscall (freebsd-386-cgo), const SYS_SIGALTSTACK = 53 pkg syscall (freebsd-386-cgo), const SYS_SIGPENDING = 343 pkg syscall (freebsd-386-cgo), const SYS_SIGPROCMASK = 340 pkg syscall (freebsd-386-cgo), const SYS_SIGQUEUE = 456 pkg syscall (freebsd-386-cgo), const SYS_SIGRETURN = 417 pkg syscall (freebsd-386-cgo), const SYS_SIGSUSPEND = 341 pkg syscall (freebsd-386-cgo), const SYS_SIGTIMEDWAIT = 345 pkg syscall (freebsd-386-cgo), const SYS_SIGWAIT = 429 pkg syscall (freebsd-386-cgo), const SYS_SIGWAITINFO = 346 pkg syscall (freebsd-386-cgo), const SYS_SOCKET = 97 pkg syscall (freebsd-386-cgo), const SYS_SOCKETPAIR = 135 pkg syscall (freebsd-386-cgo), const SYS_SSTK = 70 pkg syscall (freebsd-386-cgo), const SYS_STAT = 188 pkg syscall (freebsd-386-cgo), const SYS_STATFS = 396 pkg syscall (freebsd-386-cgo), const SYS_SWAPCONTEXT = 423 pkg syscall (freebsd-386-cgo), const SYS_SWAPOFF = 424 pkg syscall (freebsd-386-cgo), const SYS_SWAPON = 85 pkg syscall (freebsd-386-cgo), const SYS_SYMLINK = 57 pkg syscall (freebsd-386-cgo), const SYS_SYMLINKAT = 502 pkg syscall (freebsd-386-cgo), const SYS_SYNC = 36 pkg syscall (freebsd-386-cgo), const SYS_SYSARCH = 165 pkg syscall (freebsd-386-cgo), const SYS_THR_CREATE = 430 pkg syscall (freebsd-386-cgo), const SYS_THR_EXIT = 431 pkg syscall (freebsd-386-cgo), const SYS_THR_KILL = 433 pkg syscall (freebsd-386-cgo), const SYS_THR_KILL2 = 481 pkg syscall (freebsd-386-cgo), const SYS_THR_NEW = 455 pkg syscall (freebsd-386-cgo), const SYS_THR_SELF = 432 pkg syscall (freebsd-386-cgo), const SYS_THR_SET_NAME = 464 pkg syscall (freebsd-386-cgo), const SYS_THR_SUSPEND = 442 pkg syscall (freebsd-386-cgo), const SYS_THR_WAKE = 443 pkg syscall (freebsd-386-cgo), const SYS_TRUNCATE = 479 pkg syscall (freebsd-386-cgo), const SYS_UMASK = 60 pkg syscall (freebsd-386-cgo), const SYS_UNDELETE = 205 pkg syscall (freebsd-386-cgo), const SYS_UNLINK = 10 pkg syscall (freebsd-386-cgo), const SYS_UNLINKAT = 503 pkg syscall (freebsd-386-cgo), const SYS_UNMOUNT = 22 pkg syscall (freebsd-386-cgo), const SYS_UTIMES = 138 pkg syscall (freebsd-386-cgo), const SYS_UTRACE = 335 pkg syscall (freebsd-386-cgo), const SYS_UUIDGEN = 392 pkg syscall (freebsd-386-cgo), const SYS_VFORK = 66 pkg syscall (freebsd-386-cgo), const SYS_WAIT4 = 7 pkg syscall (freebsd-386-cgo), const SYS_WAIT6 = 532 pkg syscall (freebsd-386-cgo), const SYS_WRITE = 4 pkg syscall (freebsd-386-cgo), const SYS_WRITEV = 121 pkg syscall (freebsd-386-cgo), const SYS_YIELD = 321 pkg syscall (freebsd-386-cgo), const SYS__UMTX_LOCK = 434 pkg syscall (freebsd-386-cgo), const SYS__UMTX_OP = 454 pkg syscall (freebsd-386-cgo), const SYS__UMTX_UNLOCK = 435 pkg syscall (freebsd-386-cgo), const SYS___ACL_ACLCHECK_FD = 354 pkg syscall (freebsd-386-cgo), const SYS___ACL_ACLCHECK_FILE = 353 pkg syscall (freebsd-386-cgo), const SYS___ACL_ACLCHECK_LINK = 428 pkg syscall (freebsd-386-cgo), const SYS___ACL_DELETE_FD = 352 pkg syscall (freebsd-386-cgo), const SYS___ACL_DELETE_FILE = 351 pkg syscall (freebsd-386-cgo), const SYS___ACL_DELETE_LINK = 427 pkg syscall (freebsd-386-cgo), const SYS___ACL_GET_FD = 349 pkg syscall (freebsd-386-cgo), const SYS___ACL_GET_FILE = 347 pkg syscall (freebsd-386-cgo), const SYS___ACL_GET_LINK = 425 pkg syscall (freebsd-386-cgo), const SYS___ACL_SET_FD = 350 pkg syscall (freebsd-386-cgo), const SYS___ACL_SET_FILE = 348 pkg syscall (freebsd-386-cgo), const SYS___ACL_SET_LINK = 426 pkg syscall (freebsd-386-cgo), const SYS___GETCWD = 326 pkg syscall (freebsd-386-cgo), const SYS___MAC_EXECVE = 415 pkg syscall (freebsd-386-cgo), const SYS___MAC_GET_FD = 386 pkg syscall (freebsd-386-cgo), const SYS___MAC_GET_FILE = 387 pkg syscall (freebsd-386-cgo), const SYS___MAC_GET_LINK = 410 pkg syscall (freebsd-386-cgo), const SYS___MAC_GET_PID = 409 pkg syscall (freebsd-386-cgo), const SYS___MAC_GET_PROC = 384 pkg syscall (freebsd-386-cgo), const SYS___MAC_SET_FD = 388 pkg syscall (freebsd-386-cgo), const SYS___MAC_SET_FILE = 389 pkg syscall (freebsd-386-cgo), const SYS___MAC_SET_LINK = 411 pkg syscall (freebsd-386-cgo), const SYS___MAC_SET_PROC = 385 pkg syscall (freebsd-386-cgo), const SYS___SETUGID = 374 pkg syscall (freebsd-386-cgo), const SYS___SYSCTL = 202 pkg syscall (freebsd-386-cgo), const S_IFMT = 61440 pkg syscall (freebsd-386-cgo), const SizeofBpfHdr = 20 pkg syscall (freebsd-386-cgo), const SizeofBpfInsn = 8 pkg syscall (freebsd-386-cgo), const SizeofBpfProgram = 8 pkg syscall (freebsd-386-cgo), const SizeofBpfStat = 8 pkg syscall (freebsd-386-cgo), const SizeofBpfVersion = 4 pkg syscall (freebsd-386-cgo), const SizeofBpfZbuf = 12 pkg syscall (freebsd-386-cgo), const SizeofBpfZbufHeader = 32 pkg syscall (freebsd-386-cgo), const SizeofCmsghdr = 12 pkg syscall (freebsd-386-cgo), const SizeofIPMreq = 8 pkg syscall (freebsd-386-cgo), const SizeofIPMreqn = 12 pkg syscall (freebsd-386-cgo), const SizeofIPv6Mreq = 20 pkg syscall (freebsd-386-cgo), const SizeofIfAnnounceMsghdr = 24 pkg syscall (freebsd-386-cgo), const SizeofIfData = 80 pkg syscall (freebsd-386-cgo), const SizeofIfMsghdr = 96 pkg syscall (freebsd-386-cgo), const SizeofIfaMsghdr = 20 pkg syscall (freebsd-386-cgo), const SizeofIfmaMsghdr = 16 pkg syscall (freebsd-386-cgo), const SizeofInet6Pktinfo = 20 pkg syscall (freebsd-386-cgo), const SizeofLinger = 8 pkg syscall (freebsd-386-cgo), const SizeofMsghdr = 28 pkg syscall (freebsd-386-cgo), const SizeofRtMetrics = 56 pkg syscall (freebsd-386-cgo), const SizeofRtMsghdr = 92 pkg syscall (freebsd-386-cgo), const SizeofSockaddrAny = 108 pkg syscall (freebsd-386-cgo), const SizeofSockaddrDatalink = 54 pkg syscall (freebsd-386-cgo), const SizeofSockaddrInet4 = 16 pkg syscall (freebsd-386-cgo), const SizeofSockaddrInet6 = 28 pkg syscall (freebsd-386-cgo), const SizeofSockaddrUnix = 106 pkg syscall (freebsd-386-cgo), const TCIFLUSH = 1 pkg syscall (freebsd-386-cgo), const TCIOFLUSH = 3 pkg syscall (freebsd-386-cgo), const TCOFLUSH = 2 pkg syscall (freebsd-386-cgo), const TCP_CA_NAME_MAX = 16 pkg syscall (freebsd-386-cgo), const TCP_CONGESTION = 64 pkg syscall (freebsd-386-cgo), const TCP_INFO = 32 pkg syscall (freebsd-386-cgo), const TCP_KEEPCNT = 1024 pkg syscall (freebsd-386-cgo), const TCP_KEEPIDLE = 256 pkg syscall (freebsd-386-cgo), const TCP_KEEPINIT = 128 pkg syscall (freebsd-386-cgo), const TCP_KEEPINTVL = 512 pkg syscall (freebsd-386-cgo), const TCP_MAXBURST = 4 pkg syscall (freebsd-386-cgo), const TCP_MAXHLEN = 60 pkg syscall (freebsd-386-cgo), const TCP_MAXOLEN = 40 pkg syscall (freebsd-386-cgo), const TCP_MAXSEG = 2 pkg syscall (freebsd-386-cgo), const TCP_MAXWIN = 65535 pkg syscall (freebsd-386-cgo), const TCP_MAX_SACK = 4 pkg syscall (freebsd-386-cgo), const TCP_MAX_WINSHIFT = 14 pkg syscall (freebsd-386-cgo), const TCP_MD5SIG = 16 pkg syscall (freebsd-386-cgo), const TCP_MINMSS = 216 pkg syscall (freebsd-386-cgo), const TCP_MSS = 536 pkg syscall (freebsd-386-cgo), const TCP_NOOPT = 8 pkg syscall (freebsd-386-cgo), const TCP_NOPUSH = 4 pkg syscall (freebsd-386-cgo), const TCSAFLUSH = 2 pkg syscall (freebsd-386-cgo), const TIOCCBRK = 536900730 pkg syscall (freebsd-386-cgo), const TIOCCDTR = 536900728 pkg syscall (freebsd-386-cgo), const TIOCCONS = 2147775586 pkg syscall (freebsd-386-cgo), const TIOCDRAIN = 536900702 pkg syscall (freebsd-386-cgo), const TIOCEXCL = 536900621 pkg syscall (freebsd-386-cgo), const TIOCEXT = 2147775584 pkg syscall (freebsd-386-cgo), const TIOCFLUSH = 2147775504 pkg syscall (freebsd-386-cgo), const TIOCGDRAINWAIT = 1074033750 pkg syscall (freebsd-386-cgo), const TIOCGETA = 1076655123 pkg syscall (freebsd-386-cgo), const TIOCGETD = 1074033690 pkg syscall (freebsd-386-cgo), const TIOCGPGRP = 1074033783 pkg syscall (freebsd-386-cgo), const TIOCGPTN = 1074033679 pkg syscall (freebsd-386-cgo), const TIOCGSID = 1074033763 pkg syscall (freebsd-386-cgo), const TIOCGWINSZ = 1074295912 pkg syscall (freebsd-386-cgo), const TIOCMBIC = 2147775595 pkg syscall (freebsd-386-cgo), const TIOCMBIS = 2147775596 pkg syscall (freebsd-386-cgo), const TIOCMGDTRWAIT = 1074033754 pkg syscall (freebsd-386-cgo), const TIOCMGET = 1074033770 pkg syscall (freebsd-386-cgo), const TIOCMSDTRWAIT = 2147775579 pkg syscall (freebsd-386-cgo), const TIOCMSET = 2147775597 pkg syscall (freebsd-386-cgo), const TIOCM_CAR = 64 pkg syscall (freebsd-386-cgo), const TIOCM_CD = 64 pkg syscall (freebsd-386-cgo), const TIOCM_CTS = 32 pkg syscall (freebsd-386-cgo), const TIOCM_DCD = 64 pkg syscall (freebsd-386-cgo), const TIOCM_DSR = 256 pkg syscall (freebsd-386-cgo), const TIOCM_DTR = 2 pkg syscall (freebsd-386-cgo), const TIOCM_LE = 1 pkg syscall (freebsd-386-cgo), const TIOCM_RI = 128 pkg syscall (freebsd-386-cgo), const TIOCM_RNG = 128 pkg syscall (freebsd-386-cgo), const TIOCM_RTS = 4 pkg syscall (freebsd-386-cgo), const TIOCM_SR = 16 pkg syscall (freebsd-386-cgo), const TIOCM_ST = 8 pkg syscall (freebsd-386-cgo), const TIOCNOTTY = 536900721 pkg syscall (freebsd-386-cgo), const TIOCNXCL = 536900622 pkg syscall (freebsd-386-cgo), const TIOCOUTQ = 1074033779 pkg syscall (freebsd-386-cgo), const TIOCPKT = 2147775600 pkg syscall (freebsd-386-cgo), const TIOCPKT_DATA = 0 pkg syscall (freebsd-386-cgo), const TIOCPKT_DOSTOP = 32 pkg syscall (freebsd-386-cgo), const TIOCPKT_FLUSHREAD = 1 pkg syscall (freebsd-386-cgo), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (freebsd-386-cgo), const TIOCPKT_IOCTL = 64 pkg syscall (freebsd-386-cgo), const TIOCPKT_NOSTOP = 16 pkg syscall (freebsd-386-cgo), const TIOCPKT_START = 8 pkg syscall (freebsd-386-cgo), const TIOCPKT_STOP = 4 pkg syscall (freebsd-386-cgo), const TIOCPTMASTER = 536900636 pkg syscall (freebsd-386-cgo), const TIOCSBRK = 536900731 pkg syscall (freebsd-386-cgo), const TIOCSCTTY = 536900705 pkg syscall (freebsd-386-cgo), const TIOCSDRAINWAIT = 2147775575 pkg syscall (freebsd-386-cgo), const TIOCSDTR = 536900729 pkg syscall (freebsd-386-cgo), const TIOCSETA = 2150396948 pkg syscall (freebsd-386-cgo), const TIOCSETAF = 2150396950 pkg syscall (freebsd-386-cgo), const TIOCSETAW = 2150396949 pkg syscall (freebsd-386-cgo), const TIOCSETD = 2147775515 pkg syscall (freebsd-386-cgo), const TIOCSIG = 537162847 pkg syscall (freebsd-386-cgo), const TIOCSPGRP = 2147775606 pkg syscall (freebsd-386-cgo), const TIOCSTART = 536900718 pkg syscall (freebsd-386-cgo), const TIOCSTAT = 536900709 pkg syscall (freebsd-386-cgo), const TIOCSTI = 2147578994 pkg syscall (freebsd-386-cgo), const TIOCSTOP = 536900719 pkg syscall (freebsd-386-cgo), const TIOCSWINSZ = 2148037735 pkg syscall (freebsd-386-cgo), const TIOCTIMESTAMP = 1074295897 pkg syscall (freebsd-386-cgo), const TIOCUCNTL = 2147775590 pkg syscall (freebsd-386-cgo), const TOSTOP = 4194304 pkg syscall (freebsd-386-cgo), const VDISCARD = 15 pkg syscall (freebsd-386-cgo), const VDSUSP = 11 pkg syscall (freebsd-386-cgo), const VEOF = 0 pkg syscall (freebsd-386-cgo), const VEOL = 1 pkg syscall (freebsd-386-cgo), const VEOL2 = 2 pkg syscall (freebsd-386-cgo), const VERASE = 3 pkg syscall (freebsd-386-cgo), const VERASE2 = 7 pkg syscall (freebsd-386-cgo), const VINTR = 8 pkg syscall (freebsd-386-cgo), const VKILL = 5 pkg syscall (freebsd-386-cgo), const VLNEXT = 14 pkg syscall (freebsd-386-cgo), const VMIN = 16 pkg syscall (freebsd-386-cgo), const VQUIT = 9 pkg syscall (freebsd-386-cgo), const VREPRINT = 6 pkg syscall (freebsd-386-cgo), const VSTART = 12 pkg syscall (freebsd-386-cgo), const VSTATUS = 18 pkg syscall (freebsd-386-cgo), const VSTOP = 13 pkg syscall (freebsd-386-cgo), const VSUSP = 10 pkg syscall (freebsd-386-cgo), const VTIME = 17 pkg syscall (freebsd-386-cgo), const VWERASE = 4 pkg syscall (freebsd-386-cgo), const WCONTINUED = 4 pkg syscall (freebsd-386-cgo), const WCOREFLAG = 128 pkg syscall (freebsd-386-cgo), const WLINUXCLONE = 2147483648 pkg syscall (freebsd-386-cgo), const WNOHANG = 1 pkg syscall (freebsd-386-cgo), const WNOWAIT = 8 pkg syscall (freebsd-386-cgo), const WSTOPPED = 2 pkg syscall (freebsd-386-cgo), const WUNTRACED = 2 pkg syscall (freebsd-amd64), const AF_APPLETALK = 16 pkg syscall (freebsd-amd64), const AF_ARP = 35 pkg syscall (freebsd-amd64), const AF_ATM = 30 pkg syscall (freebsd-amd64), const AF_BLUETOOTH = 36 pkg syscall (freebsd-amd64), const AF_CCITT = 10 pkg syscall (freebsd-amd64), const AF_CHAOS = 5 pkg syscall (freebsd-amd64), const AF_CNT = 21 pkg syscall (freebsd-amd64), const AF_COIP = 20 pkg syscall (freebsd-amd64), const AF_DATAKIT = 9 pkg syscall (freebsd-amd64), const AF_DECnet = 12 pkg syscall (freebsd-amd64), const AF_DLI = 13 pkg syscall (freebsd-amd64), const AF_E164 = 26 pkg syscall (freebsd-amd64), const AF_ECMA = 8 pkg syscall (freebsd-amd64), const AF_HYLINK = 15 pkg syscall (freebsd-amd64), const AF_IEEE80211 = 37 pkg syscall (freebsd-amd64), const AF_IMPLINK = 3 pkg syscall (freebsd-amd64), const AF_INET6 = 28 pkg syscall (freebsd-amd64), const AF_IPX = 23 pkg syscall (freebsd-amd64), const AF_ISDN = 26 pkg syscall (freebsd-amd64), const AF_ISO = 7 pkg syscall (freebsd-amd64), const AF_LAT = 14 pkg syscall (freebsd-amd64), const AF_LINK = 18 pkg syscall (freebsd-amd64), const AF_LOCAL = 1 pkg syscall (freebsd-amd64), const AF_MAX = 38 pkg syscall (freebsd-amd64), const AF_NATM = 29 pkg syscall (freebsd-amd64), const AF_NETBIOS = 6 pkg syscall (freebsd-amd64), const AF_NETGRAPH = 32 pkg syscall (freebsd-amd64), const AF_OSI = 7 pkg syscall (freebsd-amd64), const AF_PUP = 4 pkg syscall (freebsd-amd64), const AF_ROUTE = 17 pkg syscall (freebsd-amd64), const AF_SCLUSTER = 34 pkg syscall (freebsd-amd64), const AF_SIP = 24 pkg syscall (freebsd-amd64), const AF_SLOW = 33 pkg syscall (freebsd-amd64), const AF_SNA = 11 pkg syscall (freebsd-amd64), const AF_VENDOR00 = 39 pkg syscall (freebsd-amd64), const AF_VENDOR01 = 41 pkg syscall (freebsd-amd64), const AF_VENDOR02 = 43 pkg syscall (freebsd-amd64), const AF_VENDOR03 = 45 pkg syscall (freebsd-amd64), const AF_VENDOR04 = 47 pkg syscall (freebsd-amd64), const AF_VENDOR05 = 49 pkg syscall (freebsd-amd64), const AF_VENDOR06 = 51 pkg syscall (freebsd-amd64), const AF_VENDOR07 = 53 pkg syscall (freebsd-amd64), const AF_VENDOR08 = 55 pkg syscall (freebsd-amd64), const AF_VENDOR09 = 57 pkg syscall (freebsd-amd64), const AF_VENDOR10 = 59 pkg syscall (freebsd-amd64), const AF_VENDOR11 = 61 pkg syscall (freebsd-amd64), const AF_VENDOR12 = 63 pkg syscall (freebsd-amd64), const AF_VENDOR13 = 65 pkg syscall (freebsd-amd64), const AF_VENDOR14 = 67 pkg syscall (freebsd-amd64), const AF_VENDOR15 = 69 pkg syscall (freebsd-amd64), const AF_VENDOR16 = 71 pkg syscall (freebsd-amd64), const AF_VENDOR17 = 73 pkg syscall (freebsd-amd64), const AF_VENDOR18 = 75 pkg syscall (freebsd-amd64), const AF_VENDOR19 = 77 pkg syscall (freebsd-amd64), const AF_VENDOR20 = 79 pkg syscall (freebsd-amd64), const AF_VENDOR21 = 81 pkg syscall (freebsd-amd64), const AF_VENDOR22 = 83 pkg syscall (freebsd-amd64), const AF_VENDOR23 = 85 pkg syscall (freebsd-amd64), const AF_VENDOR24 = 87 pkg syscall (freebsd-amd64), const AF_VENDOR25 = 89 pkg syscall (freebsd-amd64), const AF_VENDOR26 = 91 pkg syscall (freebsd-amd64), const AF_VENDOR27 = 93 pkg syscall (freebsd-amd64), const AF_VENDOR28 = 95 pkg syscall (freebsd-amd64), const AF_VENDOR29 = 97 pkg syscall (freebsd-amd64), const AF_VENDOR30 = 99 pkg syscall (freebsd-amd64), const AF_VENDOR31 = 101 pkg syscall (freebsd-amd64), const AF_VENDOR32 = 103 pkg syscall (freebsd-amd64), const AF_VENDOR33 = 105 pkg syscall (freebsd-amd64), const AF_VENDOR34 = 107 pkg syscall (freebsd-amd64), const AF_VENDOR35 = 109 pkg syscall (freebsd-amd64), const AF_VENDOR36 = 111 pkg syscall (freebsd-amd64), const AF_VENDOR37 = 113 pkg syscall (freebsd-amd64), const AF_VENDOR38 = 115 pkg syscall (freebsd-amd64), const AF_VENDOR39 = 117 pkg syscall (freebsd-amd64), const AF_VENDOR40 = 119 pkg syscall (freebsd-amd64), const AF_VENDOR41 = 121 pkg syscall (freebsd-amd64), const AF_VENDOR42 = 123 pkg syscall (freebsd-amd64), const AF_VENDOR43 = 125 pkg syscall (freebsd-amd64), const AF_VENDOR44 = 127 pkg syscall (freebsd-amd64), const AF_VENDOR45 = 129 pkg syscall (freebsd-amd64), const AF_VENDOR46 = 131 pkg syscall (freebsd-amd64), const AF_VENDOR47 = 133 pkg syscall (freebsd-amd64), const B0 = 0 pkg syscall (freebsd-amd64), const B0 ideal-int pkg syscall (freebsd-amd64), const B110 = 110 pkg syscall (freebsd-amd64), const B110 ideal-int pkg syscall (freebsd-amd64), const B115200 = 115200 pkg syscall (freebsd-amd64), const B115200 ideal-int pkg syscall (freebsd-amd64), const B1200 = 1200 pkg syscall (freebsd-amd64), const B1200 ideal-int pkg syscall (freebsd-amd64), const B134 = 134 pkg syscall (freebsd-amd64), const B134 ideal-int pkg syscall (freebsd-amd64), const B14400 = 14400 pkg syscall (freebsd-amd64), const B14400 ideal-int pkg syscall (freebsd-amd64), const B150 = 150 pkg syscall (freebsd-amd64), const B150 ideal-int pkg syscall (freebsd-amd64), const B1800 = 1800 pkg syscall (freebsd-amd64), const B1800 ideal-int pkg syscall (freebsd-amd64), const B19200 = 19200 pkg syscall (freebsd-amd64), const B19200 ideal-int pkg syscall (freebsd-amd64), const B200 = 200 pkg syscall (freebsd-amd64), const B200 ideal-int pkg syscall (freebsd-amd64), const B230400 = 230400 pkg syscall (freebsd-amd64), const B230400 ideal-int pkg syscall (freebsd-amd64), const B2400 = 2400 pkg syscall (freebsd-amd64), const B2400 ideal-int pkg syscall (freebsd-amd64), const B28800 = 28800 pkg syscall (freebsd-amd64), const B28800 ideal-int pkg syscall (freebsd-amd64), const B300 = 300 pkg syscall (freebsd-amd64), const B300 ideal-int pkg syscall (freebsd-amd64), const B38400 = 38400 pkg syscall (freebsd-amd64), const B38400 ideal-int pkg syscall (freebsd-amd64), const B460800 = 460800 pkg syscall (freebsd-amd64), const B460800 ideal-int pkg syscall (freebsd-amd64), const B4800 = 4800 pkg syscall (freebsd-amd64), const B4800 ideal-int pkg syscall (freebsd-amd64), const B50 = 50 pkg syscall (freebsd-amd64), const B50 ideal-int pkg syscall (freebsd-amd64), const B57600 = 57600 pkg syscall (freebsd-amd64), const B57600 ideal-int pkg syscall (freebsd-amd64), const B600 = 600 pkg syscall (freebsd-amd64), const B600 ideal-int pkg syscall (freebsd-amd64), const B7200 = 7200 pkg syscall (freebsd-amd64), const B7200 ideal-int pkg syscall (freebsd-amd64), const B75 = 75 pkg syscall (freebsd-amd64), const B75 ideal-int pkg syscall (freebsd-amd64), const B76800 = 76800 pkg syscall (freebsd-amd64), const B76800 ideal-int pkg syscall (freebsd-amd64), const B921600 = 921600 pkg syscall (freebsd-amd64), const B921600 ideal-int pkg syscall (freebsd-amd64), const B9600 = 9600 pkg syscall (freebsd-amd64), const B9600 ideal-int pkg syscall (freebsd-amd64), const BIOCFEEDBACK = 2147762812 pkg syscall (freebsd-amd64), const BIOCFLUSH = 536887912 pkg syscall (freebsd-amd64), const BIOCGBLEN = 1074020966 pkg syscall (freebsd-amd64), const BIOCGDIRECTION = 1074020982 pkg syscall (freebsd-amd64), const BIOCGDLT = 1074020970 pkg syscall (freebsd-amd64), const BIOCGDLTLIST = 3222291065 pkg syscall (freebsd-amd64), const BIOCGETBUFMODE = 1074020989 pkg syscall (freebsd-amd64), const BIOCGETIF = 1075855979 pkg syscall (freebsd-amd64), const BIOCGETZMAX = 1074283135 pkg syscall (freebsd-amd64), const BIOCGHDRCMPLT = 1074020980 pkg syscall (freebsd-amd64), const BIOCGRSIG = 1074020978 pkg syscall (freebsd-amd64), const BIOCGRTIMEOUT = 1074807406 pkg syscall (freebsd-amd64), const BIOCGSEESENT = 1074020982 pkg syscall (freebsd-amd64), const BIOCGSTATS = 1074283119 pkg syscall (freebsd-amd64), const BIOCGTSTAMP = 1074020995 pkg syscall (freebsd-amd64), const BIOCGTSTAMP ideal-int pkg syscall (freebsd-amd64), const BIOCIMMEDIATE = 2147762800 pkg syscall (freebsd-amd64), const BIOCLOCK = 536887930 pkg syscall (freebsd-amd64), const BIOCPROMISC = 536887913 pkg syscall (freebsd-amd64), const BIOCROTZBUF = 1075331712 pkg syscall (freebsd-amd64), const BIOCSBLEN = 3221504614 pkg syscall (freebsd-amd64), const BIOCSDIRECTION = 2147762807 pkg syscall (freebsd-amd64), const BIOCSDLT = 2147762808 pkg syscall (freebsd-amd64), const BIOCSETBUFMODE = 2147762814 pkg syscall (freebsd-amd64), const BIOCSETF = 2148549223 pkg syscall (freebsd-amd64), const BIOCSETFNR = 2148549250 pkg syscall (freebsd-amd64), const BIOCSETIF = 2149597804 pkg syscall (freebsd-amd64), const BIOCSETWF = 2148549243 pkg syscall (freebsd-amd64), const BIOCSETZBUF = 2149073537 pkg syscall (freebsd-amd64), const BIOCSHDRCMPLT = 2147762805 pkg syscall (freebsd-amd64), const BIOCSRSIG = 2147762803 pkg syscall (freebsd-amd64), const BIOCSRTIMEOUT = 2148549229 pkg syscall (freebsd-amd64), const BIOCSSEESENT = 2147762807 pkg syscall (freebsd-amd64), const BIOCSTSTAMP = 2147762820 pkg syscall (freebsd-amd64), const BIOCSTSTAMP ideal-int pkg syscall (freebsd-amd64), const BIOCVERSION = 1074020977 pkg syscall (freebsd-amd64), const BPF_A = 16 pkg syscall (freebsd-amd64), const BPF_ABS = 32 pkg syscall (freebsd-amd64), const BPF_ADD = 0 pkg syscall (freebsd-amd64), const BPF_ALIGNMENT = 8 pkg syscall (freebsd-amd64), const BPF_ALU = 4 pkg syscall (freebsd-amd64), const BPF_AND = 80 pkg syscall (freebsd-amd64), const BPF_B = 16 pkg syscall (freebsd-amd64), const BPF_BUFMODE_BUFFER = 1 pkg syscall (freebsd-amd64), const BPF_BUFMODE_ZBUF = 2 pkg syscall (freebsd-amd64), const BPF_DIV = 48 pkg syscall (freebsd-amd64), const BPF_H = 8 pkg syscall (freebsd-amd64), const BPF_IMM = 0 pkg syscall (freebsd-amd64), const BPF_IND = 64 pkg syscall (freebsd-amd64), const BPF_JA = 0 pkg syscall (freebsd-amd64), const BPF_JEQ = 16 pkg syscall (freebsd-amd64), const BPF_JGE = 48 pkg syscall (freebsd-amd64), const BPF_JGT = 32 pkg syscall (freebsd-amd64), const BPF_JMP = 5 pkg syscall (freebsd-amd64), const BPF_JSET = 64 pkg syscall (freebsd-amd64), const BPF_K = 0 pkg syscall (freebsd-amd64), const BPF_LD = 0 pkg syscall (freebsd-amd64), const BPF_LDX = 1 pkg syscall (freebsd-amd64), const BPF_LEN = 128 pkg syscall (freebsd-amd64), const BPF_LSH = 96 pkg syscall (freebsd-amd64), const BPF_MAJOR_VERSION = 1 pkg syscall (freebsd-amd64), const BPF_MAXBUFSIZE = 524288 pkg syscall (freebsd-amd64), const BPF_MAXINSNS = 512 pkg syscall (freebsd-amd64), const BPF_MEM = 96 pkg syscall (freebsd-amd64), const BPF_MEMWORDS = 16 pkg syscall (freebsd-amd64), const BPF_MINBUFSIZE = 32 pkg syscall (freebsd-amd64), const BPF_MINOR_VERSION = 1 pkg syscall (freebsd-amd64), const BPF_MISC = 7 pkg syscall (freebsd-amd64), const BPF_MSH = 160 pkg syscall (freebsd-amd64), const BPF_MUL = 32 pkg syscall (freebsd-amd64), const BPF_NEG = 128 pkg syscall (freebsd-amd64), const BPF_OR = 64 pkg syscall (freebsd-amd64), const BPF_RELEASE = 199606 pkg syscall (freebsd-amd64), const BPF_RET = 6 pkg syscall (freebsd-amd64), const BPF_RSH = 112 pkg syscall (freebsd-amd64), const BPF_ST = 2 pkg syscall (freebsd-amd64), const BPF_STX = 3 pkg syscall (freebsd-amd64), const BPF_SUB = 16 pkg syscall (freebsd-amd64), const BPF_TAX = 0 pkg syscall (freebsd-amd64), const BPF_TXA = 128 pkg syscall (freebsd-amd64), const BPF_T_BINTIME = 2 pkg syscall (freebsd-amd64), const BPF_T_BINTIME ideal-int pkg syscall (freebsd-amd64), const BPF_T_BINTIME_FAST = 258 pkg syscall (freebsd-amd64), const BPF_T_BINTIME_FAST ideal-int pkg syscall (freebsd-amd64), const BPF_T_BINTIME_MONOTONIC = 514 pkg syscall (freebsd-amd64), const BPF_T_BINTIME_MONOTONIC ideal-int pkg syscall (freebsd-amd64), const BPF_T_BINTIME_MONOTONIC_FAST = 770 pkg syscall (freebsd-amd64), const BPF_T_BINTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-amd64), const BPF_T_FAST = 256 pkg syscall (freebsd-amd64), const BPF_T_FAST ideal-int pkg syscall (freebsd-amd64), const BPF_T_FLAG_MASK = 768 pkg syscall (freebsd-amd64), const BPF_T_FLAG_MASK ideal-int pkg syscall (freebsd-amd64), const BPF_T_FORMAT_MASK = 3 pkg syscall (freebsd-amd64), const BPF_T_FORMAT_MASK ideal-int pkg syscall (freebsd-amd64), const BPF_T_MICROTIME = 0 pkg syscall (freebsd-amd64), const BPF_T_MICROTIME ideal-int pkg syscall (freebsd-amd64), const BPF_T_MICROTIME_FAST = 256 pkg syscall (freebsd-amd64), const BPF_T_MICROTIME_FAST ideal-int pkg syscall (freebsd-amd64), const BPF_T_MICROTIME_MONOTONIC = 512 pkg syscall (freebsd-amd64), const BPF_T_MICROTIME_MONOTONIC ideal-int pkg syscall (freebsd-amd64), const BPF_T_MICROTIME_MONOTONIC_FAST = 768 pkg syscall (freebsd-amd64), const BPF_T_MICROTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-amd64), const BPF_T_MONOTONIC = 512 pkg syscall (freebsd-amd64), const BPF_T_MONOTONIC ideal-int pkg syscall (freebsd-amd64), const BPF_T_MONOTONIC_FAST = 768 pkg syscall (freebsd-amd64), const BPF_T_MONOTONIC_FAST ideal-int pkg syscall (freebsd-amd64), const BPF_T_NANOTIME = 1 pkg syscall (freebsd-amd64), const BPF_T_NANOTIME ideal-int pkg syscall (freebsd-amd64), const BPF_T_NANOTIME_FAST = 257 pkg syscall (freebsd-amd64), const BPF_T_NANOTIME_FAST ideal-int pkg syscall (freebsd-amd64), const BPF_T_NANOTIME_MONOTONIC = 513 pkg syscall (freebsd-amd64), const BPF_T_NANOTIME_MONOTONIC ideal-int pkg syscall (freebsd-amd64), const BPF_T_NANOTIME_MONOTONIC_FAST = 769 pkg syscall (freebsd-amd64), const BPF_T_NANOTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-amd64), const BPF_T_NONE = 3 pkg syscall (freebsd-amd64), const BPF_T_NONE ideal-int pkg syscall (freebsd-amd64), const BPF_T_NORMAL = 0 pkg syscall (freebsd-amd64), const BPF_T_NORMAL ideal-int pkg syscall (freebsd-amd64), const BPF_W = 0 pkg syscall (freebsd-amd64), const BPF_X = 8 pkg syscall (freebsd-amd64), const BRKINT = 2 pkg syscall (freebsd-amd64), const BRKINT ideal-int pkg syscall (freebsd-amd64), const CFLUSH = 15 pkg syscall (freebsd-amd64), const CFLUSH ideal-int pkg syscall (freebsd-amd64), const CLOCAL = 32768 pkg syscall (freebsd-amd64), const CLOCAL ideal-int pkg syscall (freebsd-amd64), const CREAD = 2048 pkg syscall (freebsd-amd64), const CREAD ideal-int pkg syscall (freebsd-amd64), const CS5 = 0 pkg syscall (freebsd-amd64), const CS5 ideal-int pkg syscall (freebsd-amd64), const CS6 = 256 pkg syscall (freebsd-amd64), const CS6 ideal-int pkg syscall (freebsd-amd64), const CS7 = 512 pkg syscall (freebsd-amd64), const CS7 ideal-int pkg syscall (freebsd-amd64), const CS8 = 768 pkg syscall (freebsd-amd64), const CS8 ideal-int pkg syscall (freebsd-amd64), const CSIZE = 768 pkg syscall (freebsd-amd64), const CSIZE ideal-int pkg syscall (freebsd-amd64), const CSTART = 17 pkg syscall (freebsd-amd64), const CSTART ideal-int pkg syscall (freebsd-amd64), const CSTATUS = 20 pkg syscall (freebsd-amd64), const CSTATUS ideal-int pkg syscall (freebsd-amd64), const CSTOP = 19 pkg syscall (freebsd-amd64), const CSTOP ideal-int pkg syscall (freebsd-amd64), const CSTOPB = 1024 pkg syscall (freebsd-amd64), const CSTOPB ideal-int pkg syscall (freebsd-amd64), const CSUSP = 26 pkg syscall (freebsd-amd64), const CSUSP ideal-int pkg syscall (freebsd-amd64), const CTL_MAXNAME = 24 pkg syscall (freebsd-amd64), const CTL_NET = 4 pkg syscall (freebsd-amd64), const DLT_A429 = 184 pkg syscall (freebsd-amd64), const DLT_A653_ICM = 185 pkg syscall (freebsd-amd64), const DLT_AIRONET_HEADER = 120 pkg syscall (freebsd-amd64), const DLT_AOS = 222 pkg syscall (freebsd-amd64), const DLT_AOS ideal-int pkg syscall (freebsd-amd64), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (freebsd-amd64), const DLT_ARCNET = 7 pkg syscall (freebsd-amd64), const DLT_ARCNET_LINUX = 129 pkg syscall (freebsd-amd64), const DLT_ATM_CLIP = 19 pkg syscall (freebsd-amd64), const DLT_ATM_RFC1483 = 11 pkg syscall (freebsd-amd64), const DLT_AURORA = 126 pkg syscall (freebsd-amd64), const DLT_AX25 = 3 pkg syscall (freebsd-amd64), const DLT_AX25_KISS = 202 pkg syscall (freebsd-amd64), const DLT_BACNET_MS_TP = 165 pkg syscall (freebsd-amd64), const DLT_BLUETOOTH_HCI_H4 = 187 pkg syscall (freebsd-amd64), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 pkg syscall (freebsd-amd64), const DLT_CAN20B = 190 pkg syscall (freebsd-amd64), const DLT_CAN_SOCKETCAN = 227 pkg syscall (freebsd-amd64), const DLT_CAN_SOCKETCAN ideal-int pkg syscall (freebsd-amd64), const DLT_CHAOS = 5 pkg syscall (freebsd-amd64), const DLT_CHDLC = 104 pkg syscall (freebsd-amd64), const DLT_CISCO_IOS = 118 pkg syscall (freebsd-amd64), const DLT_C_HDLC = 104 pkg syscall (freebsd-amd64), const DLT_C_HDLC_WITH_DIR = 205 pkg syscall (freebsd-amd64), const DLT_DBUS = 231 pkg syscall (freebsd-amd64), const DLT_DBUS ideal-int pkg syscall (freebsd-amd64), const DLT_DECT = 221 pkg syscall (freebsd-amd64), const DLT_DECT ideal-int pkg syscall (freebsd-amd64), const DLT_DOCSIS = 143 pkg syscall (freebsd-amd64), const DLT_DVB_CI = 235 pkg syscall (freebsd-amd64), const DLT_DVB_CI ideal-int pkg syscall (freebsd-amd64), const DLT_ECONET = 115 pkg syscall (freebsd-amd64), const DLT_EN10MB = 1 pkg syscall (freebsd-amd64), const DLT_EN3MB = 2 pkg syscall (freebsd-amd64), const DLT_ENC = 109 pkg syscall (freebsd-amd64), const DLT_ERF = 197 pkg syscall (freebsd-amd64), const DLT_ERF_ETH = 175 pkg syscall (freebsd-amd64), const DLT_ERF_POS = 176 pkg syscall (freebsd-amd64), const DLT_FC_2 = 224 pkg syscall (freebsd-amd64), const DLT_FC_2 ideal-int pkg syscall (freebsd-amd64), const DLT_FC_2_WITH_FRAME_DELIMS = 225 pkg syscall (freebsd-amd64), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int pkg syscall (freebsd-amd64), const DLT_FDDI = 10 pkg syscall (freebsd-amd64), const DLT_FLEXRAY = 210 pkg syscall (freebsd-amd64), const DLT_FRELAY = 107 pkg syscall (freebsd-amd64), const DLT_FRELAY_WITH_DIR = 206 pkg syscall (freebsd-amd64), const DLT_GCOM_SERIAL = 173 pkg syscall (freebsd-amd64), const DLT_GCOM_T1E1 = 172 pkg syscall (freebsd-amd64), const DLT_GPF_F = 171 pkg syscall (freebsd-amd64), const DLT_GPF_T = 170 pkg syscall (freebsd-amd64), const DLT_GPRS_LLC = 169 pkg syscall (freebsd-amd64), const DLT_GSMTAP_ABIS = 218 pkg syscall (freebsd-amd64), const DLT_GSMTAP_ABIS ideal-int pkg syscall (freebsd-amd64), const DLT_GSMTAP_UM = 217 pkg syscall (freebsd-amd64), const DLT_GSMTAP_UM ideal-int pkg syscall (freebsd-amd64), const DLT_HHDLC = 121 pkg syscall (freebsd-amd64), const DLT_IBM_SN = 146 pkg syscall (freebsd-amd64), const DLT_IBM_SP = 145 pkg syscall (freebsd-amd64), const DLT_IEEE802 = 6 pkg syscall (freebsd-amd64), const DLT_IEEE802_11 = 105 pkg syscall (freebsd-amd64), const DLT_IEEE802_11_RADIO = 127 pkg syscall (freebsd-amd64), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (freebsd-amd64), const DLT_IEEE802_15_4 = 195 pkg syscall (freebsd-amd64), const DLT_IEEE802_15_4_LINUX = 191 pkg syscall (freebsd-amd64), const DLT_IEEE802_15_4_NOFCS = 230 pkg syscall (freebsd-amd64), const DLT_IEEE802_15_4_NOFCS ideal-int pkg syscall (freebsd-amd64), const DLT_IEEE802_15_4_NONASK_PHY = 215 pkg syscall (freebsd-amd64), const DLT_IEEE802_16_MAC_CPS = 188 pkg syscall (freebsd-amd64), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 pkg syscall (freebsd-amd64), const DLT_IPFILTER = 116 pkg syscall (freebsd-amd64), const DLT_IPMB = 199 pkg syscall (freebsd-amd64), const DLT_IPMB_LINUX = 209 pkg syscall (freebsd-amd64), const DLT_IPNET = 226 pkg syscall (freebsd-amd64), const DLT_IPNET ideal-int pkg syscall (freebsd-amd64), const DLT_IPOIB = 242 pkg syscall (freebsd-amd64), const DLT_IPOIB ideal-int pkg syscall (freebsd-amd64), const DLT_IPV4 = 228 pkg syscall (freebsd-amd64), const DLT_IPV4 ideal-int pkg syscall (freebsd-amd64), const DLT_IPV6 = 229 pkg syscall (freebsd-amd64), const DLT_IPV6 ideal-int pkg syscall (freebsd-amd64), const DLT_IP_OVER_FC = 122 pkg syscall (freebsd-amd64), const DLT_JUNIPER_ATM1 = 137 pkg syscall (freebsd-amd64), const DLT_JUNIPER_ATM2 = 135 pkg syscall (freebsd-amd64), const DLT_JUNIPER_ATM_CEMIC = 238 pkg syscall (freebsd-amd64), const DLT_JUNIPER_ATM_CEMIC ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_CHDLC = 181 pkg syscall (freebsd-amd64), const DLT_JUNIPER_ES = 132 pkg syscall (freebsd-amd64), const DLT_JUNIPER_ETHER = 178 pkg syscall (freebsd-amd64), const DLT_JUNIPER_FIBRECHANNEL = 234 pkg syscall (freebsd-amd64), const DLT_JUNIPER_FIBRECHANNEL ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_FRELAY = 180 pkg syscall (freebsd-amd64), const DLT_JUNIPER_GGSN = 133 pkg syscall (freebsd-amd64), const DLT_JUNIPER_ISM = 194 pkg syscall (freebsd-amd64), const DLT_JUNIPER_MFR = 134 pkg syscall (freebsd-amd64), const DLT_JUNIPER_MLFR = 131 pkg syscall (freebsd-amd64), const DLT_JUNIPER_MLPPP = 130 pkg syscall (freebsd-amd64), const DLT_JUNIPER_MONITOR = 164 pkg syscall (freebsd-amd64), const DLT_JUNIPER_PIC_PEER = 174 pkg syscall (freebsd-amd64), const DLT_JUNIPER_PPP = 179 pkg syscall (freebsd-amd64), const DLT_JUNIPER_PPPOE = 167 pkg syscall (freebsd-amd64), const DLT_JUNIPER_PPPOE_ATM = 168 pkg syscall (freebsd-amd64), const DLT_JUNIPER_SERVICES = 136 pkg syscall (freebsd-amd64), const DLT_JUNIPER_SRX_E2E = 233 pkg syscall (freebsd-amd64), const DLT_JUNIPER_SRX_E2E ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_ST = 200 pkg syscall (freebsd-amd64), const DLT_JUNIPER_VP = 183 pkg syscall (freebsd-amd64), const DLT_JUNIPER_VS = 232 pkg syscall (freebsd-amd64), const DLT_JUNIPER_VS ideal-int pkg syscall (freebsd-amd64), const DLT_LAPB_WITH_DIR = 207 pkg syscall (freebsd-amd64), const DLT_LAPD = 203 pkg syscall (freebsd-amd64), const DLT_LIN = 212 pkg syscall (freebsd-amd64), const DLT_LINUX_EVDEV = 216 pkg syscall (freebsd-amd64), const DLT_LINUX_EVDEV ideal-int pkg syscall (freebsd-amd64), const DLT_LINUX_IRDA = 144 pkg syscall (freebsd-amd64), const DLT_LINUX_LAPD = 177 pkg syscall (freebsd-amd64), const DLT_LINUX_PPP_WITHDIRECTION = 166 pkg syscall (freebsd-amd64), const DLT_LINUX_SLL = 113 pkg syscall (freebsd-amd64), const DLT_LOOP = 108 pkg syscall (freebsd-amd64), const DLT_LTALK = 114 pkg syscall (freebsd-amd64), const DLT_MATCHING_MAX = 242 pkg syscall (freebsd-amd64), const DLT_MATCHING_MAX ideal-int pkg syscall (freebsd-amd64), const DLT_MATCHING_MIN = 104 pkg syscall (freebsd-amd64), const DLT_MATCHING_MIN ideal-int pkg syscall (freebsd-amd64), const DLT_MFR = 182 pkg syscall (freebsd-amd64), const DLT_MOST = 211 pkg syscall (freebsd-amd64), const DLT_MPLS = 219 pkg syscall (freebsd-amd64), const DLT_MPLS ideal-int pkg syscall (freebsd-amd64), const DLT_MTP2 = 140 pkg syscall (freebsd-amd64), const DLT_MTP2_WITH_PHDR = 139 pkg syscall (freebsd-amd64), const DLT_MTP3 = 141 pkg syscall (freebsd-amd64), const DLT_MUX27010 = 236 pkg syscall (freebsd-amd64), const DLT_MUX27010 ideal-int pkg syscall (freebsd-amd64), const DLT_NETANALYZER = 240 pkg syscall (freebsd-amd64), const DLT_NETANALYZER ideal-int pkg syscall (freebsd-amd64), const DLT_NETANALYZER_TRANSPARENT = 241 pkg syscall (freebsd-amd64), const DLT_NETANALYZER_TRANSPARENT ideal-int pkg syscall (freebsd-amd64), const DLT_NFLOG = 239 pkg syscall (freebsd-amd64), const DLT_NFLOG ideal-int pkg syscall (freebsd-amd64), const DLT_NULL = 0 pkg syscall (freebsd-amd64), const DLT_PCI_EXP = 125 pkg syscall (freebsd-amd64), const DLT_PFLOG = 117 pkg syscall (freebsd-amd64), const DLT_PFSYNC = 121 pkg syscall (freebsd-amd64), const DLT_PPI = 192 pkg syscall (freebsd-amd64), const DLT_PPP = 9 pkg syscall (freebsd-amd64), const DLT_PPP_BSDOS = 16 pkg syscall (freebsd-amd64), const DLT_PPP_ETHER = 51 pkg syscall (freebsd-amd64), const DLT_PPP_PPPD = 166 pkg syscall (freebsd-amd64), const DLT_PPP_SERIAL = 50 pkg syscall (freebsd-amd64), const DLT_PPP_WITH_DIR = 204 pkg syscall (freebsd-amd64), const DLT_PPP_WITH_DIRECTION = 166 pkg syscall (freebsd-amd64), const DLT_PRISM_HEADER = 119 pkg syscall (freebsd-amd64), const DLT_PRONET = 4 pkg syscall (freebsd-amd64), const DLT_RAIF1 = 198 pkg syscall (freebsd-amd64), const DLT_RAW = 12 pkg syscall (freebsd-amd64), const DLT_RIO = 124 pkg syscall (freebsd-amd64), const DLT_SCCP = 142 pkg syscall (freebsd-amd64), const DLT_SITA = 196 pkg syscall (freebsd-amd64), const DLT_SLIP = 8 pkg syscall (freebsd-amd64), const DLT_SLIP_BSDOS = 15 pkg syscall (freebsd-amd64), const DLT_STANAG_5066_D_PDU = 237 pkg syscall (freebsd-amd64), const DLT_STANAG_5066_D_PDU ideal-int pkg syscall (freebsd-amd64), const DLT_SUNATM = 123 pkg syscall (freebsd-amd64), const DLT_SYMANTEC_FIREWALL = 99 pkg syscall (freebsd-amd64), const DLT_TZSP = 128 pkg syscall (freebsd-amd64), const DLT_USB = 186 pkg syscall (freebsd-amd64), const DLT_USB_LINUX = 189 pkg syscall (freebsd-amd64), const DLT_USB_LINUX_MMAPPED = 220 pkg syscall (freebsd-amd64), const DLT_USB_LINUX_MMAPPED ideal-int pkg syscall (freebsd-amd64), const DLT_USER0 = 147 pkg syscall (freebsd-amd64), const DLT_USER1 = 148 pkg syscall (freebsd-amd64), const DLT_USER10 = 157 pkg syscall (freebsd-amd64), const DLT_USER11 = 158 pkg syscall (freebsd-amd64), const DLT_USER12 = 159 pkg syscall (freebsd-amd64), const DLT_USER13 = 160 pkg syscall (freebsd-amd64), const DLT_USER14 = 161 pkg syscall (freebsd-amd64), const DLT_USER15 = 162 pkg syscall (freebsd-amd64), const DLT_USER2 = 149 pkg syscall (freebsd-amd64), const DLT_USER3 = 150 pkg syscall (freebsd-amd64), const DLT_USER4 = 151 pkg syscall (freebsd-amd64), const DLT_USER5 = 152 pkg syscall (freebsd-amd64), const DLT_USER6 = 153 pkg syscall (freebsd-amd64), const DLT_USER7 = 154 pkg syscall (freebsd-amd64), const DLT_USER8 = 155 pkg syscall (freebsd-amd64), const DLT_USER9 = 156 pkg syscall (freebsd-amd64), const DLT_WIHART = 223 pkg syscall (freebsd-amd64), const DLT_WIHART ideal-int pkg syscall (freebsd-amd64), const DLT_X2E_SERIAL = 213 pkg syscall (freebsd-amd64), const DLT_X2E_XORAYA = 214 pkg syscall (freebsd-amd64), const DT_BLK = 6 pkg syscall (freebsd-amd64), const DT_CHR = 2 pkg syscall (freebsd-amd64), const DT_DIR = 4 pkg syscall (freebsd-amd64), const DT_FIFO = 1 pkg syscall (freebsd-amd64), const DT_LNK = 10 pkg syscall (freebsd-amd64), const DT_REG = 8 pkg syscall (freebsd-amd64), const DT_SOCK = 12 pkg syscall (freebsd-amd64), const DT_UNKNOWN = 0 pkg syscall (freebsd-amd64), const DT_WHT = 14 pkg syscall (freebsd-amd64), const E2BIG = 7 pkg syscall (freebsd-amd64), const EACCES = 13 pkg syscall (freebsd-amd64), const EADDRINUSE = 48 pkg syscall (freebsd-amd64), const EADDRNOTAVAIL = 49 pkg syscall (freebsd-amd64), const EAFNOSUPPORT = 47 pkg syscall (freebsd-amd64), const EAGAIN = 35 pkg syscall (freebsd-amd64), const EALREADY = 37 pkg syscall (freebsd-amd64), const EAUTH = 80 pkg syscall (freebsd-amd64), const EBADF = 9 pkg syscall (freebsd-amd64), const EBADMSG = 89 pkg syscall (freebsd-amd64), const EBADRPC = 72 pkg syscall (freebsd-amd64), const EBUSY = 16 pkg syscall (freebsd-amd64), const ECANCELED = 85 pkg syscall (freebsd-amd64), const ECAPMODE = 94 pkg syscall (freebsd-amd64), const ECAPMODE Errno pkg syscall (freebsd-amd64), const ECHILD = 10 pkg syscall (freebsd-amd64), const ECHO = 8 pkg syscall (freebsd-amd64), const ECHOCTL = 64 pkg syscall (freebsd-amd64), const ECHOE = 2 pkg syscall (freebsd-amd64), const ECHOK = 4 pkg syscall (freebsd-amd64), const ECHOKE = 1 pkg syscall (freebsd-amd64), const ECHONL = 16 pkg syscall (freebsd-amd64), const ECHOPRT = 32 pkg syscall (freebsd-amd64), const ECONNABORTED = 53 pkg syscall (freebsd-amd64), const ECONNREFUSED = 61 pkg syscall (freebsd-amd64), const ECONNRESET = 54 pkg syscall (freebsd-amd64), const EDEADLK = 11 pkg syscall (freebsd-amd64), const EDESTADDRREQ = 39 pkg syscall (freebsd-amd64), const EDOM = 33 pkg syscall (freebsd-amd64), const EDOOFUS = 88 pkg syscall (freebsd-amd64), const EDQUOT = 69 pkg syscall (freebsd-amd64), const EEXIST = 17 pkg syscall (freebsd-amd64), const EFAULT = 14 pkg syscall (freebsd-amd64), const EFBIG = 27 pkg syscall (freebsd-amd64), const EFTYPE = 79 pkg syscall (freebsd-amd64), const EHOSTDOWN = 64 pkg syscall (freebsd-amd64), const EHOSTUNREACH = 65 pkg syscall (freebsd-amd64), const EIDRM = 82 pkg syscall (freebsd-amd64), const EILSEQ = 86 pkg syscall (freebsd-amd64), const EINPROGRESS = 36 pkg syscall (freebsd-amd64), const EINTR = 4 pkg syscall (freebsd-amd64), const EINVAL = 22 pkg syscall (freebsd-amd64), const EIO = 5 pkg syscall (freebsd-amd64), const EISCONN = 56 pkg syscall (freebsd-amd64), const EISDIR = 21 pkg syscall (freebsd-amd64), const ELAST = 94 pkg syscall (freebsd-amd64), const ELOOP = 62 pkg syscall (freebsd-amd64), const EMFILE = 24 pkg syscall (freebsd-amd64), const EMLINK = 31 pkg syscall (freebsd-amd64), const EMSGSIZE = 40 pkg syscall (freebsd-amd64), const EMULTIHOP = 90 pkg syscall (freebsd-amd64), const ENAMETOOLONG = 63 pkg syscall (freebsd-amd64), const ENEEDAUTH = 81 pkg syscall (freebsd-amd64), const ENETDOWN = 50 pkg syscall (freebsd-amd64), const ENETRESET = 52 pkg syscall (freebsd-amd64), const ENETUNREACH = 51 pkg syscall (freebsd-amd64), const ENFILE = 23 pkg syscall (freebsd-amd64), const ENOATTR = 87 pkg syscall (freebsd-amd64), const ENOBUFS = 55 pkg syscall (freebsd-amd64), const ENODEV = 19 pkg syscall (freebsd-amd64), const ENOEXEC = 8 pkg syscall (freebsd-amd64), const ENOLCK = 77 pkg syscall (freebsd-amd64), const ENOLINK = 91 pkg syscall (freebsd-amd64), const ENOMEM = 12 pkg syscall (freebsd-amd64), const ENOMSG = 83 pkg syscall (freebsd-amd64), const ENOPROTOOPT = 42 pkg syscall (freebsd-amd64), const ENOSPC = 28 pkg syscall (freebsd-amd64), const ENOSYS = 78 pkg syscall (freebsd-amd64), const ENOTBLK = 15 pkg syscall (freebsd-amd64), const ENOTCAPABLE = 93 pkg syscall (freebsd-amd64), const ENOTCONN = 57 pkg syscall (freebsd-amd64), const ENOTDIR = 20 pkg syscall (freebsd-amd64), const ENOTEMPTY = 66 pkg syscall (freebsd-amd64), const ENOTSOCK = 38 pkg syscall (freebsd-amd64), const ENOTSUP = 45 pkg syscall (freebsd-amd64), const ENOTTY = 25 pkg syscall (freebsd-amd64), const ENXIO = 6 pkg syscall (freebsd-amd64), const EOPNOTSUPP = 45 pkg syscall (freebsd-amd64), const EOVERFLOW = 84 pkg syscall (freebsd-amd64), const EPERM = 1 pkg syscall (freebsd-amd64), const EPFNOSUPPORT = 46 pkg syscall (freebsd-amd64), const EPIPE = 32 pkg syscall (freebsd-amd64), const EPROCLIM = 67 pkg syscall (freebsd-amd64), const EPROCUNAVAIL = 76 pkg syscall (freebsd-amd64), const EPROGMISMATCH = 75 pkg syscall (freebsd-amd64), const EPROGUNAVAIL = 74 pkg syscall (freebsd-amd64), const EPROTO = 92 pkg syscall (freebsd-amd64), const EPROTONOSUPPORT = 43 pkg syscall (freebsd-amd64), const EPROTOTYPE = 41 pkg syscall (freebsd-amd64), const ERANGE = 34 pkg syscall (freebsd-amd64), const EREMOTE = 71 pkg syscall (freebsd-amd64), const EROFS = 30 pkg syscall (freebsd-amd64), const ERPCMISMATCH = 73 pkg syscall (freebsd-amd64), const ESHUTDOWN = 58 pkg syscall (freebsd-amd64), const ESOCKTNOSUPPORT = 44 pkg syscall (freebsd-amd64), const ESPIPE = 29 pkg syscall (freebsd-amd64), const ESRCH = 3 pkg syscall (freebsd-amd64), const ESTALE = 70 pkg syscall (freebsd-amd64), const ETIMEDOUT = 60 pkg syscall (freebsd-amd64), const ETOOMANYREFS = 59 pkg syscall (freebsd-amd64), const ETXTBSY = 26 pkg syscall (freebsd-amd64), const EUSERS = 68 pkg syscall (freebsd-amd64), const EVFILT_AIO = -3 pkg syscall (freebsd-amd64), const EVFILT_FS = -9 pkg syscall (freebsd-amd64), const EVFILT_LIO = -10 pkg syscall (freebsd-amd64), const EVFILT_PROC = -5 pkg syscall (freebsd-amd64), const EVFILT_READ = -1 pkg syscall (freebsd-amd64), const EVFILT_SIGNAL = -6 pkg syscall (freebsd-amd64), const EVFILT_SYSCOUNT = 11 pkg syscall (freebsd-amd64), const EVFILT_TIMER = -7 pkg syscall (freebsd-amd64), const EVFILT_USER = -11 pkg syscall (freebsd-amd64), const EVFILT_VNODE = -4 pkg syscall (freebsd-amd64), const EVFILT_WRITE = -2 pkg syscall (freebsd-amd64), const EV_ADD = 1 pkg syscall (freebsd-amd64), const EV_CLEAR = 32 pkg syscall (freebsd-amd64), const EV_DELETE = 2 pkg syscall (freebsd-amd64), const EV_DISABLE = 8 pkg syscall (freebsd-amd64), const EV_DISPATCH = 128 pkg syscall (freebsd-amd64), const EV_ENABLE = 4 pkg syscall (freebsd-amd64), const EV_EOF = 32768 pkg syscall (freebsd-amd64), const EV_ERROR = 16384 pkg syscall (freebsd-amd64), const EV_FLAG1 = 8192 pkg syscall (freebsd-amd64), const EV_ONESHOT = 16 pkg syscall (freebsd-amd64), const EV_RECEIPT = 64 pkg syscall (freebsd-amd64), const EV_SYSFLAGS = 61440 pkg syscall (freebsd-amd64), const EWOULDBLOCK = 35 pkg syscall (freebsd-amd64), const EXDEV = 18 pkg syscall (freebsd-amd64), const EXTA = 19200 pkg syscall (freebsd-amd64), const EXTB = 38400 pkg syscall (freebsd-amd64), const EXTPROC = 2048 pkg syscall (freebsd-amd64), const FD_CLOEXEC = 1 pkg syscall (freebsd-amd64), const FD_SETSIZE = 1024 pkg syscall (freebsd-amd64), const FLUSHO = 8388608 pkg syscall (freebsd-amd64), const FLUSHO ideal-int pkg syscall (freebsd-amd64), const F_CANCEL = 5 pkg syscall (freebsd-amd64), const F_DUP2FD = 10 pkg syscall (freebsd-amd64), const F_DUPFD = 0 pkg syscall (freebsd-amd64), const F_GETFD = 1 pkg syscall (freebsd-amd64), const F_GETFL = 3 pkg syscall (freebsd-amd64), const F_GETLK = 11 pkg syscall (freebsd-amd64), const F_GETOWN = 5 pkg syscall (freebsd-amd64), const F_OGETLK = 7 pkg syscall (freebsd-amd64), const F_OK = 0 pkg syscall (freebsd-amd64), const F_OSETLK = 8 pkg syscall (freebsd-amd64), const F_OSETLKW = 9 pkg syscall (freebsd-amd64), const F_RDAHEAD = 16 pkg syscall (freebsd-amd64), const F_RDLCK = 1 pkg syscall (freebsd-amd64), const F_READAHEAD = 15 pkg syscall (freebsd-amd64), const F_SETFD = 2 pkg syscall (freebsd-amd64), const F_SETFL = 4 pkg syscall (freebsd-amd64), const F_SETLK = 12 pkg syscall (freebsd-amd64), const F_SETLKW = 13 pkg syscall (freebsd-amd64), const F_SETLK_REMOTE = 14 pkg syscall (freebsd-amd64), const F_SETOWN = 6 pkg syscall (freebsd-amd64), const F_UNLCK = 2 pkg syscall (freebsd-amd64), const F_UNLCKSYS = 4 pkg syscall (freebsd-amd64), const F_WRLCK = 3 pkg syscall (freebsd-amd64), const HUPCL = 16384 pkg syscall (freebsd-amd64), const HUPCL ideal-int pkg syscall (freebsd-amd64), const ICANON = 256 pkg syscall (freebsd-amd64), const ICANON ideal-int pkg syscall (freebsd-amd64), const ICRNL = 256 pkg syscall (freebsd-amd64), const ICRNL ideal-int pkg syscall (freebsd-amd64), const IEXTEN = 1024 pkg syscall (freebsd-amd64), const IEXTEN ideal-int pkg syscall (freebsd-amd64), const IFAN_ARRIVAL = 0 pkg syscall (freebsd-amd64), const IFAN_ARRIVAL ideal-int pkg syscall (freebsd-amd64), const IFAN_DEPARTURE = 1 pkg syscall (freebsd-amd64), const IFAN_DEPARTURE ideal-int pkg syscall (freebsd-amd64), const IFF_ALLMULTI = 512 pkg syscall (freebsd-amd64), const IFF_ALTPHYS = 16384 pkg syscall (freebsd-amd64), const IFF_CANTCHANGE = 2199410 pkg syscall (freebsd-amd64), const IFF_CANTCONFIG = 65536 pkg syscall (freebsd-amd64), const IFF_CANTCONFIG ideal-int pkg syscall (freebsd-amd64), const IFF_DEBUG = 4 pkg syscall (freebsd-amd64), const IFF_DRV_OACTIVE = 1024 pkg syscall (freebsd-amd64), const IFF_DRV_RUNNING = 64 pkg syscall (freebsd-amd64), const IFF_DYING = 2097152 pkg syscall (freebsd-amd64), const IFF_LINK0 = 4096 pkg syscall (freebsd-amd64), const IFF_LINK1 = 8192 pkg syscall (freebsd-amd64), const IFF_LINK2 = 16384 pkg syscall (freebsd-amd64), const IFF_LOOPBACK = 8 pkg syscall (freebsd-amd64), const IFF_MONITOR = 262144 pkg syscall (freebsd-amd64), const IFF_MULTICAST = 32768 pkg syscall (freebsd-amd64), const IFF_NOARP = 128 pkg syscall (freebsd-amd64), const IFF_OACTIVE = 1024 pkg syscall (freebsd-amd64), const IFF_POINTOPOINT = 16 pkg syscall (freebsd-amd64), const IFF_PPROMISC = 131072 pkg syscall (freebsd-amd64), const IFF_PROMISC = 256 pkg syscall (freebsd-amd64), const IFF_RENAMING = 4194304 pkg syscall (freebsd-amd64), const IFF_RUNNING = 64 pkg syscall (freebsd-amd64), const IFF_SIMPLEX = 2048 pkg syscall (freebsd-amd64), const IFF_SMART = 32 pkg syscall (freebsd-amd64), const IFF_STATICARP = 524288 pkg syscall (freebsd-amd64), const IFNAMSIZ = 16 pkg syscall (freebsd-amd64), const IFT_1822 = 2 pkg syscall (freebsd-amd64), const IFT_A12MPPSWITCH = 130 pkg syscall (freebsd-amd64), const IFT_AAL2 = 187 pkg syscall (freebsd-amd64), const IFT_AAL5 = 49 pkg syscall (freebsd-amd64), const IFT_ADSL = 94 pkg syscall (freebsd-amd64), const IFT_AFLANE8023 = 59 pkg syscall (freebsd-amd64), const IFT_AFLANE8025 = 60 pkg syscall (freebsd-amd64), const IFT_ARAP = 88 pkg syscall (freebsd-amd64), const IFT_ARCNET = 35 pkg syscall (freebsd-amd64), const IFT_ARCNETPLUS = 36 pkg syscall (freebsd-amd64), const IFT_ASYNC = 84 pkg syscall (freebsd-amd64), const IFT_ATM = 37 pkg syscall (freebsd-amd64), const IFT_ATMDXI = 105 pkg syscall (freebsd-amd64), const IFT_ATMFUNI = 106 pkg syscall (freebsd-amd64), const IFT_ATMIMA = 107 pkg syscall (freebsd-amd64), const IFT_ATMLOGICAL = 80 pkg syscall (freebsd-amd64), const IFT_ATMRADIO = 189 pkg syscall (freebsd-amd64), const IFT_ATMSUBINTERFACE = 134 pkg syscall (freebsd-amd64), const IFT_ATMVCIENDPT = 194 pkg syscall (freebsd-amd64), const IFT_ATMVIRTUAL = 149 pkg syscall (freebsd-amd64), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (freebsd-amd64), const IFT_BRIDGE = 209 pkg syscall (freebsd-amd64), const IFT_BSC = 83 pkg syscall (freebsd-amd64), const IFT_CARP = 248 pkg syscall (freebsd-amd64), const IFT_CCTEMUL = 61 pkg syscall (freebsd-amd64), const IFT_CEPT = 19 pkg syscall (freebsd-amd64), const IFT_CES = 133 pkg syscall (freebsd-amd64), const IFT_CHANNEL = 70 pkg syscall (freebsd-amd64), const IFT_CNR = 85 pkg syscall (freebsd-amd64), const IFT_COFFEE = 132 pkg syscall (freebsd-amd64), const IFT_COMPOSITELINK = 155 pkg syscall (freebsd-amd64), const IFT_DCN = 141 pkg syscall (freebsd-amd64), const IFT_DIGITALPOWERLINE = 138 pkg syscall (freebsd-amd64), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (freebsd-amd64), const IFT_DLSW = 74 pkg syscall (freebsd-amd64), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (freebsd-amd64), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (freebsd-amd64), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (freebsd-amd64), const IFT_DS0 = 81 pkg syscall (freebsd-amd64), const IFT_DS0BUNDLE = 82 pkg syscall (freebsd-amd64), const IFT_DS1FDL = 170 pkg syscall (freebsd-amd64), const IFT_DS3 = 30 pkg syscall (freebsd-amd64), const IFT_DTM = 140 pkg syscall (freebsd-amd64), const IFT_DVBASILN = 172 pkg syscall (freebsd-amd64), const IFT_DVBASIOUT = 173 pkg syscall (freebsd-amd64), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (freebsd-amd64), const IFT_DVBRCCMACLAYER = 146 pkg syscall (freebsd-amd64), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (freebsd-amd64), const IFT_ENC = 244 pkg syscall (freebsd-amd64), const IFT_EON = 25 pkg syscall (freebsd-amd64), const IFT_EPLRS = 87 pkg syscall (freebsd-amd64), const IFT_ESCON = 73 pkg syscall (freebsd-amd64), const IFT_ETHER = 6 pkg syscall (freebsd-amd64), const IFT_FAITH = 242 pkg syscall (freebsd-amd64), const IFT_FAST = 125 pkg syscall (freebsd-amd64), const IFT_FASTETHER = 62 pkg syscall (freebsd-amd64), const IFT_FASTETHERFX = 69 pkg syscall (freebsd-amd64), const IFT_FDDI = 15 pkg syscall (freebsd-amd64), const IFT_FIBRECHANNEL = 56 pkg syscall (freebsd-amd64), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (freebsd-amd64), const IFT_FRAMERELAYMPI = 92 pkg syscall (freebsd-amd64), const IFT_FRDLCIENDPT = 193 pkg syscall (freebsd-amd64), const IFT_FRELAY = 32 pkg syscall (freebsd-amd64), const IFT_FRELAYDCE = 44 pkg syscall (freebsd-amd64), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (freebsd-amd64), const IFT_FRFORWARD = 158 pkg syscall (freebsd-amd64), const IFT_G703AT2MB = 67 pkg syscall (freebsd-amd64), const IFT_G703AT64K = 66 pkg syscall (freebsd-amd64), const IFT_GIF = 240 pkg syscall (freebsd-amd64), const IFT_GIGABITETHERNET = 117 pkg syscall (freebsd-amd64), const IFT_GR303IDT = 178 pkg syscall (freebsd-amd64), const IFT_GR303RDT = 177 pkg syscall (freebsd-amd64), const IFT_H323GATEKEEPER = 164 pkg syscall (freebsd-amd64), const IFT_H323PROXY = 165 pkg syscall (freebsd-amd64), const IFT_HDH1822 = 3 pkg syscall (freebsd-amd64), const IFT_HDLC = 118 pkg syscall (freebsd-amd64), const IFT_HDSL2 = 168 pkg syscall (freebsd-amd64), const IFT_HIPERLAN2 = 183 pkg syscall (freebsd-amd64), const IFT_HIPPI = 47 pkg syscall (freebsd-amd64), const IFT_HIPPIINTERFACE = 57 pkg syscall (freebsd-amd64), const IFT_HOSTPAD = 90 pkg syscall (freebsd-amd64), const IFT_HSSI = 46 pkg syscall (freebsd-amd64), const IFT_HY = 14 pkg syscall (freebsd-amd64), const IFT_IBM370PARCHAN = 72 pkg syscall (freebsd-amd64), const IFT_IDSL = 154 pkg syscall (freebsd-amd64), const IFT_IEEE1394 = 144 pkg syscall (freebsd-amd64), const IFT_IEEE80211 = 71 pkg syscall (freebsd-amd64), const IFT_IEEE80212 = 55 pkg syscall (freebsd-amd64), const IFT_IEEE8023ADLAG = 161 pkg syscall (freebsd-amd64), const IFT_IFGSN = 145 pkg syscall (freebsd-amd64), const IFT_IMT = 190 pkg syscall (freebsd-amd64), const IFT_INFINIBAND = 199 pkg syscall (freebsd-amd64), const IFT_INFINIBAND ideal-int pkg syscall (freebsd-amd64), const IFT_INTERLEAVE = 124 pkg syscall (freebsd-amd64), const IFT_IP = 126 pkg syscall (freebsd-amd64), const IFT_IPFORWARD = 142 pkg syscall (freebsd-amd64), const IFT_IPOVERATM = 114 pkg syscall (freebsd-amd64), const IFT_IPOVERCDLC = 109 pkg syscall (freebsd-amd64), const IFT_IPOVERCLAW = 110 pkg syscall (freebsd-amd64), const IFT_IPSWITCH = 78 pkg syscall (freebsd-amd64), const IFT_IPXIP = 249 pkg syscall (freebsd-amd64), const IFT_ISDN = 63 pkg syscall (freebsd-amd64), const IFT_ISDNBASIC = 20 pkg syscall (freebsd-amd64), const IFT_ISDNPRIMARY = 21 pkg syscall (freebsd-amd64), const IFT_ISDNS = 75 pkg syscall (freebsd-amd64), const IFT_ISDNU = 76 pkg syscall (freebsd-amd64), const IFT_ISO88022LLC = 41 pkg syscall (freebsd-amd64), const IFT_ISO88023 = 7 pkg syscall (freebsd-amd64), const IFT_ISO88024 = 8 pkg syscall (freebsd-amd64), const IFT_ISO88025 = 9 pkg syscall (freebsd-amd64), const IFT_ISO88025CRFPINT = 98 pkg syscall (freebsd-amd64), const IFT_ISO88025DTR = 86 pkg syscall (freebsd-amd64), const IFT_ISO88025FIBER = 115 pkg syscall (freebsd-amd64), const IFT_ISO88026 = 10 pkg syscall (freebsd-amd64), const IFT_ISUP = 179 pkg syscall (freebsd-amd64), const IFT_L2VLAN = 135 pkg syscall (freebsd-amd64), const IFT_L3IPVLAN = 136 pkg syscall (freebsd-amd64), const IFT_L3IPXVLAN = 137 pkg syscall (freebsd-amd64), const IFT_LAPB = 16 pkg syscall (freebsd-amd64), const IFT_LAPD = 77 pkg syscall (freebsd-amd64), const IFT_LAPF = 119 pkg syscall (freebsd-amd64), const IFT_LOCALTALK = 42 pkg syscall (freebsd-amd64), const IFT_LOOP = 24 pkg syscall (freebsd-amd64), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (freebsd-amd64), const IFT_MFSIGLINK = 167 pkg syscall (freebsd-amd64), const IFT_MIOX25 = 38 pkg syscall (freebsd-amd64), const IFT_MODEM = 48 pkg syscall (freebsd-amd64), const IFT_MPC = 113 pkg syscall (freebsd-amd64), const IFT_MPLS = 166 pkg syscall (freebsd-amd64), const IFT_MPLSTUNNEL = 150 pkg syscall (freebsd-amd64), const IFT_MSDSL = 143 pkg syscall (freebsd-amd64), const IFT_MVL = 191 pkg syscall (freebsd-amd64), const IFT_MYRINET = 99 pkg syscall (freebsd-amd64), const IFT_NFAS = 175 pkg syscall (freebsd-amd64), const IFT_NSIP = 27 pkg syscall (freebsd-amd64), const IFT_OPTICALCHANNEL = 195 pkg syscall (freebsd-amd64), const IFT_OPTICALTRANSPORT = 196 pkg syscall (freebsd-amd64), const IFT_OTHER = 1 pkg syscall (freebsd-amd64), const IFT_P10 = 12 pkg syscall (freebsd-amd64), const IFT_P80 = 13 pkg syscall (freebsd-amd64), const IFT_PARA = 34 pkg syscall (freebsd-amd64), const IFT_PFLOG = 246 pkg syscall (freebsd-amd64), const IFT_PFSYNC = 247 pkg syscall (freebsd-amd64), const IFT_PLC = 174 pkg syscall (freebsd-amd64), const IFT_POS = 171 pkg syscall (freebsd-amd64), const IFT_PPP = 23 pkg syscall (freebsd-amd64), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (freebsd-amd64), const IFT_PROPBWAP2MP = 184 pkg syscall (freebsd-amd64), const IFT_PROPCNLS = 89 pkg syscall (freebsd-amd64), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (freebsd-amd64), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (freebsd-amd64), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (freebsd-amd64), const IFT_PROPMUX = 54 pkg syscall (freebsd-amd64), const IFT_PROPVIRTUAL = 53 pkg syscall (freebsd-amd64), const IFT_PROPWIRELESSP2P = 157 pkg syscall (freebsd-amd64), const IFT_PTPSERIAL = 22 pkg syscall (freebsd-amd64), const IFT_PVC = 241 pkg syscall (freebsd-amd64), const IFT_QLLC = 68 pkg syscall (freebsd-amd64), const IFT_RADIOMAC = 188 pkg syscall (freebsd-amd64), const IFT_RADSL = 95 pkg syscall (freebsd-amd64), const IFT_REACHDSL = 192 pkg syscall (freebsd-amd64), const IFT_RFC1483 = 159 pkg syscall (freebsd-amd64), const IFT_RS232 = 33 pkg syscall (freebsd-amd64), const IFT_RSRB = 79 pkg syscall (freebsd-amd64), const IFT_SDLC = 17 pkg syscall (freebsd-amd64), const IFT_SDSL = 96 pkg syscall (freebsd-amd64), const IFT_SHDSL = 169 pkg syscall (freebsd-amd64), const IFT_SIP = 31 pkg syscall (freebsd-amd64), const IFT_SLIP = 28 pkg syscall (freebsd-amd64), const IFT_SMDSDXI = 43 pkg syscall (freebsd-amd64), const IFT_SMDSICIP = 52 pkg syscall (freebsd-amd64), const IFT_SONET = 39 pkg syscall (freebsd-amd64), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (freebsd-amd64), const IFT_SONETPATH = 50 pkg syscall (freebsd-amd64), const IFT_SONETVT = 51 pkg syscall (freebsd-amd64), const IFT_SRP = 151 pkg syscall (freebsd-amd64), const IFT_SS7SIGLINK = 156 pkg syscall (freebsd-amd64), const IFT_STACKTOSTACK = 111 pkg syscall (freebsd-amd64), const IFT_STARLAN = 11 pkg syscall (freebsd-amd64), const IFT_STF = 215 pkg syscall (freebsd-amd64), const IFT_T1 = 18 pkg syscall (freebsd-amd64), const IFT_TDLC = 116 pkg syscall (freebsd-amd64), const IFT_TERMPAD = 91 pkg syscall (freebsd-amd64), const IFT_TR008 = 176 pkg syscall (freebsd-amd64), const IFT_TRANSPHDLC = 123 pkg syscall (freebsd-amd64), const IFT_TUNNEL = 131 pkg syscall (freebsd-amd64), const IFT_ULTRA = 29 pkg syscall (freebsd-amd64), const IFT_USB = 160 pkg syscall (freebsd-amd64), const IFT_V11 = 64 pkg syscall (freebsd-amd64), const IFT_V35 = 45 pkg syscall (freebsd-amd64), const IFT_V36 = 65 pkg syscall (freebsd-amd64), const IFT_V37 = 120 pkg syscall (freebsd-amd64), const IFT_VDSL = 97 pkg syscall (freebsd-amd64), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (freebsd-amd64), const IFT_VOICEEM = 100 pkg syscall (freebsd-amd64), const IFT_VOICEENCAP = 103 pkg syscall (freebsd-amd64), const IFT_VOICEFXO = 101 pkg syscall (freebsd-amd64), const IFT_VOICEFXS = 102 pkg syscall (freebsd-amd64), const IFT_VOICEOVERATM = 152 pkg syscall (freebsd-amd64), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (freebsd-amd64), const IFT_VOICEOVERIP = 104 pkg syscall (freebsd-amd64), const IFT_X213 = 93 pkg syscall (freebsd-amd64), const IFT_X25 = 5 pkg syscall (freebsd-amd64), const IFT_X25DDN = 4 pkg syscall (freebsd-amd64), const IFT_X25HUNTGROUP = 122 pkg syscall (freebsd-amd64), const IFT_X25MLP = 121 pkg syscall (freebsd-amd64), const IFT_X25PLE = 40 pkg syscall (freebsd-amd64), const IFT_XETHER = 26 pkg syscall (freebsd-amd64), const IGNBRK = 1 pkg syscall (freebsd-amd64), const IGNBRK ideal-int pkg syscall (freebsd-amd64), const IGNCR = 128 pkg syscall (freebsd-amd64), const IGNCR ideal-int pkg syscall (freebsd-amd64), const IGNPAR = 4 pkg syscall (freebsd-amd64), const IGNPAR ideal-int pkg syscall (freebsd-amd64), const IMAXBEL = 8192 pkg syscall (freebsd-amd64), const IMAXBEL ideal-int pkg syscall (freebsd-amd64), const INLCR = 64 pkg syscall (freebsd-amd64), const INLCR ideal-int pkg syscall (freebsd-amd64), const INPCK = 16 pkg syscall (freebsd-amd64), const INPCK ideal-int pkg syscall (freebsd-amd64), const IN_CLASSA_HOST = 16777215 pkg syscall (freebsd-amd64), const IN_CLASSA_MAX = 128 pkg syscall (freebsd-amd64), const IN_CLASSA_NET = 4278190080 pkg syscall (freebsd-amd64), const IN_CLASSA_NSHIFT = 24 pkg syscall (freebsd-amd64), const IN_CLASSB_HOST = 65535 pkg syscall (freebsd-amd64), const IN_CLASSB_MAX = 65536 pkg syscall (freebsd-amd64), const IN_CLASSB_NET = 4294901760 pkg syscall (freebsd-amd64), const IN_CLASSB_NSHIFT = 16 pkg syscall (freebsd-amd64), const IN_CLASSC_HOST = 255 pkg syscall (freebsd-amd64), const IN_CLASSC_NET = 4294967040 pkg syscall (freebsd-amd64), const IN_CLASSC_NSHIFT = 8 pkg syscall (freebsd-amd64), const IN_CLASSD_HOST = 268435455 pkg syscall (freebsd-amd64), const IN_CLASSD_NET = 4026531840 pkg syscall (freebsd-amd64), const IN_CLASSD_NSHIFT = 28 pkg syscall (freebsd-amd64), const IN_LOOPBACKNET = 127 pkg syscall (freebsd-amd64), const IN_RFC3021_MASK = 4294967294 pkg syscall (freebsd-amd64), const IN_RFC3021_MASK ideal-int pkg syscall (freebsd-amd64), const IPPROTO_3PC = 34 pkg syscall (freebsd-amd64), const IPPROTO_ADFS = 68 pkg syscall (freebsd-amd64), const IPPROTO_AH = 51 pkg syscall (freebsd-amd64), const IPPROTO_AHIP = 61 pkg syscall (freebsd-amd64), const IPPROTO_APES = 99 pkg syscall (freebsd-amd64), const IPPROTO_ARGUS = 13 pkg syscall (freebsd-amd64), const IPPROTO_AX25 = 93 pkg syscall (freebsd-amd64), const IPPROTO_BHA = 49 pkg syscall (freebsd-amd64), const IPPROTO_BLT = 30 pkg syscall (freebsd-amd64), const IPPROTO_BRSATMON = 76 pkg syscall (freebsd-amd64), const IPPROTO_CARP = 112 pkg syscall (freebsd-amd64), const IPPROTO_CFTP = 62 pkg syscall (freebsd-amd64), const IPPROTO_CHAOS = 16 pkg syscall (freebsd-amd64), const IPPROTO_CMTP = 38 pkg syscall (freebsd-amd64), const IPPROTO_CPHB = 73 pkg syscall (freebsd-amd64), const IPPROTO_CPNX = 72 pkg syscall (freebsd-amd64), const IPPROTO_DDP = 37 pkg syscall (freebsd-amd64), const IPPROTO_DGP = 86 pkg syscall (freebsd-amd64), const IPPROTO_DIVERT = 258 pkg syscall (freebsd-amd64), const IPPROTO_DONE = 257 pkg syscall (freebsd-amd64), const IPPROTO_DSTOPTS = 60 pkg syscall (freebsd-amd64), const IPPROTO_EGP = 8 pkg syscall (freebsd-amd64), const IPPROTO_EMCON = 14 pkg syscall (freebsd-amd64), const IPPROTO_ENCAP = 98 pkg syscall (freebsd-amd64), const IPPROTO_EON = 80 pkg syscall (freebsd-amd64), const IPPROTO_ESP = 50 pkg syscall (freebsd-amd64), const IPPROTO_ETHERIP = 97 pkg syscall (freebsd-amd64), const IPPROTO_FRAGMENT = 44 pkg syscall (freebsd-amd64), const IPPROTO_GGP = 3 pkg syscall (freebsd-amd64), const IPPROTO_GMTP = 100 pkg syscall (freebsd-amd64), const IPPROTO_GRE = 47 pkg syscall (freebsd-amd64), const IPPROTO_HELLO = 63 pkg syscall (freebsd-amd64), const IPPROTO_HMP = 20 pkg syscall (freebsd-amd64), const IPPROTO_HOPOPTS = 0 pkg syscall (freebsd-amd64), const IPPROTO_ICMP = 1 pkg syscall (freebsd-amd64), const IPPROTO_ICMPV6 = 58 pkg syscall (freebsd-amd64), const IPPROTO_IDP = 22 pkg syscall (freebsd-amd64), const IPPROTO_IDPR = 35 pkg syscall (freebsd-amd64), const IPPROTO_IDRP = 45 pkg syscall (freebsd-amd64), const IPPROTO_IGMP = 2 pkg syscall (freebsd-amd64), const IPPROTO_IGP = 85 pkg syscall (freebsd-amd64), const IPPROTO_IGRP = 88 pkg syscall (freebsd-amd64), const IPPROTO_IL = 40 pkg syscall (freebsd-amd64), const IPPROTO_INLSP = 52 pkg syscall (freebsd-amd64), const IPPROTO_INP = 32 pkg syscall (freebsd-amd64), const IPPROTO_IPCOMP = 108 pkg syscall (freebsd-amd64), const IPPROTO_IPCV = 71 pkg syscall (freebsd-amd64), const IPPROTO_IPEIP = 94 pkg syscall (freebsd-amd64), const IPPROTO_IPIP = 4 pkg syscall (freebsd-amd64), const IPPROTO_IPPC = 67 pkg syscall (freebsd-amd64), const IPPROTO_IPV4 = 4 pkg syscall (freebsd-amd64), const IPPROTO_IRTP = 28 pkg syscall (freebsd-amd64), const IPPROTO_KRYPTOLAN = 65 pkg syscall (freebsd-amd64), const IPPROTO_LARP = 91 pkg syscall (freebsd-amd64), const IPPROTO_LEAF1 = 25 pkg syscall (freebsd-amd64), const IPPROTO_LEAF2 = 26 pkg syscall (freebsd-amd64), const IPPROTO_MAX = 256 pkg syscall (freebsd-amd64), const IPPROTO_MAXID = 52 pkg syscall (freebsd-amd64), const IPPROTO_MEAS = 19 pkg syscall (freebsd-amd64), const IPPROTO_MH = 135 pkg syscall (freebsd-amd64), const IPPROTO_MH ideal-int pkg syscall (freebsd-amd64), const IPPROTO_MHRP = 48 pkg syscall (freebsd-amd64), const IPPROTO_MICP = 95 pkg syscall (freebsd-amd64), const IPPROTO_MOBILE = 55 pkg syscall (freebsd-amd64), const IPPROTO_MTP = 92 pkg syscall (freebsd-amd64), const IPPROTO_MUX = 18 pkg syscall (freebsd-amd64), const IPPROTO_ND = 77 pkg syscall (freebsd-amd64), const IPPROTO_NHRP = 54 pkg syscall (freebsd-amd64), const IPPROTO_NONE = 59 pkg syscall (freebsd-amd64), const IPPROTO_NSP = 31 pkg syscall (freebsd-amd64), const IPPROTO_NVPII = 11 pkg syscall (freebsd-amd64), const IPPROTO_OLD_DIVERT = 254 pkg syscall (freebsd-amd64), const IPPROTO_OSPFIGP = 89 pkg syscall (freebsd-amd64), const IPPROTO_PFSYNC = 240 pkg syscall (freebsd-amd64), const IPPROTO_PGM = 113 pkg syscall (freebsd-amd64), const IPPROTO_PIGP = 9 pkg syscall (freebsd-amd64), const IPPROTO_PIM = 103 pkg syscall (freebsd-amd64), const IPPROTO_PRM = 21 pkg syscall (freebsd-amd64), const IPPROTO_PUP = 12 pkg syscall (freebsd-amd64), const IPPROTO_PVP = 75 pkg syscall (freebsd-amd64), const IPPROTO_RAW = 255 pkg syscall (freebsd-amd64), const IPPROTO_RCCMON = 10 pkg syscall (freebsd-amd64), const IPPROTO_RDP = 27 pkg syscall (freebsd-amd64), const IPPROTO_ROUTING = 43 pkg syscall (freebsd-amd64), const IPPROTO_RSVP = 46 pkg syscall (freebsd-amd64), const IPPROTO_RVD = 66 pkg syscall (freebsd-amd64), const IPPROTO_SATEXPAK = 64 pkg syscall (freebsd-amd64), const IPPROTO_SATMON = 69 pkg syscall (freebsd-amd64), const IPPROTO_SCCSP = 96 pkg syscall (freebsd-amd64), const IPPROTO_SCTP = 132 pkg syscall (freebsd-amd64), const IPPROTO_SDRP = 42 pkg syscall (freebsd-amd64), const IPPROTO_SEND = 259 pkg syscall (freebsd-amd64), const IPPROTO_SEND ideal-int pkg syscall (freebsd-amd64), const IPPROTO_SEP = 33 pkg syscall (freebsd-amd64), const IPPROTO_SKIP = 57 pkg syscall (freebsd-amd64), const IPPROTO_SPACER = 32767 pkg syscall (freebsd-amd64), const IPPROTO_SRPC = 90 pkg syscall (freebsd-amd64), const IPPROTO_ST = 7 pkg syscall (freebsd-amd64), const IPPROTO_SVMTP = 82 pkg syscall (freebsd-amd64), const IPPROTO_SWIPE = 53 pkg syscall (freebsd-amd64), const IPPROTO_TCF = 87 pkg syscall (freebsd-amd64), const IPPROTO_TLSP = 56 pkg syscall (freebsd-amd64), const IPPROTO_TP = 29 pkg syscall (freebsd-amd64), const IPPROTO_TPXX = 39 pkg syscall (freebsd-amd64), const IPPROTO_TRUNK1 = 23 pkg syscall (freebsd-amd64), const IPPROTO_TRUNK2 = 24 pkg syscall (freebsd-amd64), const IPPROTO_TTP = 84 pkg syscall (freebsd-amd64), const IPPROTO_VINES = 83 pkg syscall (freebsd-amd64), const IPPROTO_VISA = 70 pkg syscall (freebsd-amd64), const IPPROTO_VMTP = 81 pkg syscall (freebsd-amd64), const IPPROTO_WBEXPAK = 79 pkg syscall (freebsd-amd64), const IPPROTO_WBMON = 78 pkg syscall (freebsd-amd64), const IPPROTO_WSN = 74 pkg syscall (freebsd-amd64), const IPPROTO_XNET = 15 pkg syscall (freebsd-amd64), const IPPROTO_XTP = 36 pkg syscall (freebsd-amd64), const IPV6_AUTOFLOWLABEL = 59 pkg syscall (freebsd-amd64), const IPV6_BINDANY = 64 pkg syscall (freebsd-amd64), const IPV6_BINDV6ONLY = 27 pkg syscall (freebsd-amd64), const IPV6_CHECKSUM = 26 pkg syscall (freebsd-amd64), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (freebsd-amd64), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (freebsd-amd64), const IPV6_DEFHLIM = 64 pkg syscall (freebsd-amd64), const IPV6_DONTFRAG = 62 pkg syscall (freebsd-amd64), const IPV6_DSTOPTS = 50 pkg syscall (freebsd-amd64), const IPV6_FAITH = 29 pkg syscall (freebsd-amd64), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (freebsd-amd64), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (freebsd-amd64), const IPV6_FRAGTTL = 120 pkg syscall (freebsd-amd64), const IPV6_FW_ADD = 30 pkg syscall (freebsd-amd64), const IPV6_FW_DEL = 31 pkg syscall (freebsd-amd64), const IPV6_FW_FLUSH = 32 pkg syscall (freebsd-amd64), const IPV6_FW_GET = 34 pkg syscall (freebsd-amd64), const IPV6_FW_ZERO = 33 pkg syscall (freebsd-amd64), const IPV6_HLIMDEC = 1 pkg syscall (freebsd-amd64), const IPV6_HOPLIMIT = 47 pkg syscall (freebsd-amd64), const IPV6_HOPOPTS = 49 pkg syscall (freebsd-amd64), const IPV6_IPSEC_POLICY = 28 pkg syscall (freebsd-amd64), const IPV6_JOIN_GROUP = 12 pkg syscall (freebsd-amd64), const IPV6_LEAVE_GROUP = 13 pkg syscall (freebsd-amd64), const IPV6_MAXHLIM = 255 pkg syscall (freebsd-amd64), const IPV6_MAXOPTHDR = 2048 pkg syscall (freebsd-amd64), const IPV6_MAXPACKET = 65535 pkg syscall (freebsd-amd64), const IPV6_MAX_GROUP_SRC_FILTER = 512 pkg syscall (freebsd-amd64), const IPV6_MAX_MEMBERSHIPS = 4095 pkg syscall (freebsd-amd64), const IPV6_MAX_SOCK_SRC_FILTER = 128 pkg syscall (freebsd-amd64), const IPV6_MIN_MEMBERSHIPS = 31 pkg syscall (freebsd-amd64), const IPV6_MMTU = 1280 pkg syscall (freebsd-amd64), const IPV6_MSFILTER = 74 pkg syscall (freebsd-amd64), const IPV6_MULTICAST_HOPS = 10 pkg syscall (freebsd-amd64), const IPV6_MULTICAST_IF = 9 pkg syscall (freebsd-amd64), const IPV6_MULTICAST_LOOP = 11 pkg syscall (freebsd-amd64), const IPV6_NEXTHOP = 48 pkg syscall (freebsd-amd64), const IPV6_PATHMTU = 44 pkg syscall (freebsd-amd64), const IPV6_PKTINFO = 46 pkg syscall (freebsd-amd64), const IPV6_PORTRANGE = 14 pkg syscall (freebsd-amd64), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (freebsd-amd64), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (freebsd-amd64), const IPV6_PORTRANGE_LOW = 2 pkg syscall (freebsd-amd64), const IPV6_PREFER_TEMPADDR = 63 pkg syscall (freebsd-amd64), const IPV6_RECVDSTOPTS = 40 pkg syscall (freebsd-amd64), const IPV6_RECVHOPLIMIT = 37 pkg syscall (freebsd-amd64), const IPV6_RECVHOPOPTS = 39 pkg syscall (freebsd-amd64), const IPV6_RECVPATHMTU = 43 pkg syscall (freebsd-amd64), const IPV6_RECVPKTINFO = 36 pkg syscall (freebsd-amd64), const IPV6_RECVRTHDR = 38 pkg syscall (freebsd-amd64), const IPV6_RECVTCLASS = 57 pkg syscall (freebsd-amd64), const IPV6_RTHDR = 51 pkg syscall (freebsd-amd64), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (freebsd-amd64), const IPV6_RTHDR_LOOSE = 0 pkg syscall (freebsd-amd64), const IPV6_RTHDR_STRICT = 1 pkg syscall (freebsd-amd64), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (freebsd-amd64), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (freebsd-amd64), const IPV6_TCLASS = 61 pkg syscall (freebsd-amd64), const IPV6_UNICAST_HOPS = 4 pkg syscall (freebsd-amd64), const IPV6_USE_MIN_MTU = 42 pkg syscall (freebsd-amd64), const IPV6_V6ONLY = 27 pkg syscall (freebsd-amd64), const IPV6_VERSION = 96 pkg syscall (freebsd-amd64), const IPV6_VERSION_MASK = 240 pkg syscall (freebsd-amd64), const IP_ADD_MEMBERSHIP = 12 pkg syscall (freebsd-amd64), const IP_ADD_SOURCE_MEMBERSHIP = 70 pkg syscall (freebsd-amd64), const IP_BINDANY = 24 pkg syscall (freebsd-amd64), const IP_BLOCK_SOURCE = 72 pkg syscall (freebsd-amd64), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (freebsd-amd64), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (freebsd-amd64), const IP_DF = 16384 pkg syscall (freebsd-amd64), const IP_DONTFRAG = 67 pkg syscall (freebsd-amd64), const IP_DROP_MEMBERSHIP = 13 pkg syscall (freebsd-amd64), const IP_DROP_SOURCE_MEMBERSHIP = 71 pkg syscall (freebsd-amd64), const IP_DUMMYNET3 = 49 pkg syscall (freebsd-amd64), const IP_DUMMYNET_CONFIGURE = 60 pkg syscall (freebsd-amd64), const IP_DUMMYNET_DEL = 61 pkg syscall (freebsd-amd64), const IP_DUMMYNET_FLUSH = 62 pkg syscall (freebsd-amd64), const IP_DUMMYNET_GET = 64 pkg syscall (freebsd-amd64), const IP_FAITH = 22 pkg syscall (freebsd-amd64), const IP_FW3 = 48 pkg syscall (freebsd-amd64), const IP_FW_ADD = 50 pkg syscall (freebsd-amd64), const IP_FW_DEL = 51 pkg syscall (freebsd-amd64), const IP_FW_FLUSH = 52 pkg syscall (freebsd-amd64), const IP_FW_GET = 54 pkg syscall (freebsd-amd64), const IP_FW_NAT_CFG = 56 pkg syscall (freebsd-amd64), const IP_FW_NAT_DEL = 57 pkg syscall (freebsd-amd64), const IP_FW_NAT_GET_CONFIG = 58 pkg syscall (freebsd-amd64), const IP_FW_NAT_GET_LOG = 59 pkg syscall (freebsd-amd64), const IP_FW_RESETLOG = 55 pkg syscall (freebsd-amd64), const IP_FW_TABLE_ADD = 40 pkg syscall (freebsd-amd64), const IP_FW_TABLE_DEL = 41 pkg syscall (freebsd-amd64), const IP_FW_TABLE_FLUSH = 42 pkg syscall (freebsd-amd64), const IP_FW_TABLE_GETSIZE = 43 pkg syscall (freebsd-amd64), const IP_FW_TABLE_LIST = 44 pkg syscall (freebsd-amd64), const IP_FW_ZERO = 53 pkg syscall (freebsd-amd64), const IP_HDRINCL = 2 pkg syscall (freebsd-amd64), const IP_IPSEC_POLICY = 21 pkg syscall (freebsd-amd64), const IP_MAXPACKET = 65535 pkg syscall (freebsd-amd64), const IP_MAX_GROUP_SRC_FILTER = 512 pkg syscall (freebsd-amd64), const IP_MAX_MEMBERSHIPS = 4095 pkg syscall (freebsd-amd64), const IP_MAX_SOCK_MUTE_FILTER = 128 pkg syscall (freebsd-amd64), const IP_MAX_SOCK_SRC_FILTER = 128 pkg syscall (freebsd-amd64), const IP_MAX_SOURCE_FILTER = 1024 pkg syscall (freebsd-amd64), const IP_MF = 8192 pkg syscall (freebsd-amd64), const IP_MINTTL = 66 pkg syscall (freebsd-amd64), const IP_MIN_MEMBERSHIPS = 31 pkg syscall (freebsd-amd64), const IP_MSFILTER = 74 pkg syscall (freebsd-amd64), const IP_MSS = 576 pkg syscall (freebsd-amd64), const IP_MULTICAST_IF = 9 pkg syscall (freebsd-amd64), const IP_MULTICAST_LOOP = 11 pkg syscall (freebsd-amd64), const IP_MULTICAST_TTL = 10 pkg syscall (freebsd-amd64), const IP_MULTICAST_VIF = 14 pkg syscall (freebsd-amd64), const IP_OFFMASK = 8191 pkg syscall (freebsd-amd64), const IP_ONESBCAST = 23 pkg syscall (freebsd-amd64), const IP_OPTIONS = 1 pkg syscall (freebsd-amd64), const IP_PORTRANGE = 19 pkg syscall (freebsd-amd64), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (freebsd-amd64), const IP_PORTRANGE_HIGH = 1 pkg syscall (freebsd-amd64), const IP_PORTRANGE_LOW = 2 pkg syscall (freebsd-amd64), const IP_RECVDSTADDR = 7 pkg syscall (freebsd-amd64), const IP_RECVIF = 20 pkg syscall (freebsd-amd64), const IP_RECVOPTS = 5 pkg syscall (freebsd-amd64), const IP_RECVRETOPTS = 6 pkg syscall (freebsd-amd64), const IP_RECVTOS = 68 pkg syscall (freebsd-amd64), const IP_RECVTOS ideal-int pkg syscall (freebsd-amd64), const IP_RECVTTL = 65 pkg syscall (freebsd-amd64), const IP_RETOPTS = 8 pkg syscall (freebsd-amd64), const IP_RF = 32768 pkg syscall (freebsd-amd64), const IP_RSVP_OFF = 16 pkg syscall (freebsd-amd64), const IP_RSVP_ON = 15 pkg syscall (freebsd-amd64), const IP_RSVP_VIF_OFF = 18 pkg syscall (freebsd-amd64), const IP_RSVP_VIF_ON = 17 pkg syscall (freebsd-amd64), const IP_SENDSRCADDR = 7 pkg syscall (freebsd-amd64), const IP_TOS = 3 pkg syscall (freebsd-amd64), const IP_TTL = 4 pkg syscall (freebsd-amd64), const IP_UNBLOCK_SOURCE = 73 pkg syscall (freebsd-amd64), const ISIG = 128 pkg syscall (freebsd-amd64), const ISIG ideal-int pkg syscall (freebsd-amd64), const ISTRIP = 32 pkg syscall (freebsd-amd64), const ISTRIP ideal-int pkg syscall (freebsd-amd64), const IXANY = 2048 pkg syscall (freebsd-amd64), const IXANY ideal-int pkg syscall (freebsd-amd64), const IXOFF = 1024 pkg syscall (freebsd-amd64), const IXOFF ideal-int pkg syscall (freebsd-amd64), const IXON = 512 pkg syscall (freebsd-amd64), const IXON ideal-int pkg syscall (freebsd-amd64), const ImplementsGetwd = false pkg syscall (freebsd-amd64), const LOCK_EX = 2 pkg syscall (freebsd-amd64), const LOCK_NB = 4 pkg syscall (freebsd-amd64), const LOCK_SH = 1 pkg syscall (freebsd-amd64), const LOCK_UN = 8 pkg syscall (freebsd-amd64), const MADV_AUTOSYNC = 7 pkg syscall (freebsd-amd64), const MADV_AUTOSYNC ideal-int pkg syscall (freebsd-amd64), const MADV_CORE = 9 pkg syscall (freebsd-amd64), const MADV_CORE ideal-int pkg syscall (freebsd-amd64), const MADV_DONTNEED = 4 pkg syscall (freebsd-amd64), const MADV_DONTNEED ideal-int pkg syscall (freebsd-amd64), const MADV_FREE = 5 pkg syscall (freebsd-amd64), const MADV_FREE ideal-int pkg syscall (freebsd-amd64), const MADV_NOCORE = 8 pkg syscall (freebsd-amd64), const MADV_NOCORE ideal-int pkg syscall (freebsd-amd64), const MADV_NORMAL = 0 pkg syscall (freebsd-amd64), const MADV_NORMAL ideal-int pkg syscall (freebsd-amd64), const MADV_NOSYNC = 6 pkg syscall (freebsd-amd64), const MADV_NOSYNC ideal-int pkg syscall (freebsd-amd64), const MADV_PROTECT = 10 pkg syscall (freebsd-amd64), const MADV_PROTECT ideal-int pkg syscall (freebsd-amd64), const MADV_RANDOM = 1 pkg syscall (freebsd-amd64), const MADV_RANDOM ideal-int pkg syscall (freebsd-amd64), const MADV_SEQUENTIAL = 2 pkg syscall (freebsd-amd64), const MADV_SEQUENTIAL ideal-int pkg syscall (freebsd-amd64), const MADV_WILLNEED = 3 pkg syscall (freebsd-amd64), const MADV_WILLNEED ideal-int pkg syscall (freebsd-amd64), const MAP_ANON = 4096 pkg syscall (freebsd-amd64), const MAP_ANON ideal-int pkg syscall (freebsd-amd64), const MAP_ANONYMOUS = 4096 pkg syscall (freebsd-amd64), const MAP_ANONYMOUS ideal-int pkg syscall (freebsd-amd64), const MAP_COPY = 2 pkg syscall (freebsd-amd64), const MAP_COPY ideal-int pkg syscall (freebsd-amd64), const MAP_FILE = 0 pkg syscall (freebsd-amd64), const MAP_FILE ideal-int pkg syscall (freebsd-amd64), const MAP_FIXED = 16 pkg syscall (freebsd-amd64), const MAP_FIXED ideal-int pkg syscall (freebsd-amd64), const MAP_HASSEMAPHORE = 512 pkg syscall (freebsd-amd64), const MAP_HASSEMAPHORE ideal-int pkg syscall (freebsd-amd64), const MAP_NOCORE = 131072 pkg syscall (freebsd-amd64), const MAP_NOCORE ideal-int pkg syscall (freebsd-amd64), const MAP_NORESERVE = 64 pkg syscall (freebsd-amd64), const MAP_NORESERVE ideal-int pkg syscall (freebsd-amd64), const MAP_NOSYNC = 2048 pkg syscall (freebsd-amd64), const MAP_NOSYNC ideal-int pkg syscall (freebsd-amd64), const MAP_PREFAULT_READ = 262144 pkg syscall (freebsd-amd64), const MAP_PREFAULT_READ ideal-int pkg syscall (freebsd-amd64), const MAP_PRIVATE = 2 pkg syscall (freebsd-amd64), const MAP_PRIVATE ideal-int pkg syscall (freebsd-amd64), const MAP_RENAME = 32 pkg syscall (freebsd-amd64), const MAP_RENAME ideal-int pkg syscall (freebsd-amd64), const MAP_RESERVED0080 = 128 pkg syscall (freebsd-amd64), const MAP_RESERVED0080 ideal-int pkg syscall (freebsd-amd64), const MAP_RESERVED0100 = 256 pkg syscall (freebsd-amd64), const MAP_RESERVED0100 ideal-int pkg syscall (freebsd-amd64), const MAP_SHARED = 1 pkg syscall (freebsd-amd64), const MAP_SHARED ideal-int pkg syscall (freebsd-amd64), const MAP_STACK = 1024 pkg syscall (freebsd-amd64), const MAP_STACK ideal-int pkg syscall (freebsd-amd64), const MCL_CURRENT = 1 pkg syscall (freebsd-amd64), const MCL_CURRENT ideal-int pkg syscall (freebsd-amd64), const MCL_FUTURE = 2 pkg syscall (freebsd-amd64), const MCL_FUTURE ideal-int pkg syscall (freebsd-amd64), const MSG_COMPAT = 32768 pkg syscall (freebsd-amd64), const MSG_CTRUNC = 32 pkg syscall (freebsd-amd64), const MSG_DONTROUTE = 4 pkg syscall (freebsd-amd64), const MSG_DONTWAIT = 128 pkg syscall (freebsd-amd64), const MSG_EOF = 256 pkg syscall (freebsd-amd64), const MSG_EOR = 8 pkg syscall (freebsd-amd64), const MSG_NBIO = 16384 pkg syscall (freebsd-amd64), const MSG_NOSIGNAL = 131072 pkg syscall (freebsd-amd64), const MSG_NOTIFICATION = 8192 pkg syscall (freebsd-amd64), const MSG_OOB = 1 pkg syscall (freebsd-amd64), const MSG_PEEK = 2 pkg syscall (freebsd-amd64), const MSG_TRUNC = 16 pkg syscall (freebsd-amd64), const MSG_WAITALL = 64 pkg syscall (freebsd-amd64), const MS_ASYNC = 1 pkg syscall (freebsd-amd64), const MS_ASYNC ideal-int pkg syscall (freebsd-amd64), const MS_INVALIDATE = 2 pkg syscall (freebsd-amd64), const MS_INVALIDATE ideal-int pkg syscall (freebsd-amd64), const MS_SYNC = 0 pkg syscall (freebsd-amd64), const MS_SYNC ideal-int pkg syscall (freebsd-amd64), const NET_RT_DUMP = 1 pkg syscall (freebsd-amd64), const NET_RT_FLAGS = 2 pkg syscall (freebsd-amd64), const NET_RT_IFLIST = 3 pkg syscall (freebsd-amd64), const NET_RT_IFLISTL = 5 pkg syscall (freebsd-amd64), const NET_RT_IFLISTL ideal-int pkg syscall (freebsd-amd64), const NET_RT_IFMALIST = 4 pkg syscall (freebsd-amd64), const NET_RT_MAXID = 6 pkg syscall (freebsd-amd64), const NOFLSH = 2147483648 pkg syscall (freebsd-amd64), const NOFLSH ideal-int pkg syscall (freebsd-amd64), const NOTE_ATTRIB = 8 pkg syscall (freebsd-amd64), const NOTE_CHILD = 4 pkg syscall (freebsd-amd64), const NOTE_DELETE = 1 pkg syscall (freebsd-amd64), const NOTE_EXEC = 536870912 pkg syscall (freebsd-amd64), const NOTE_EXIT = 2147483648 pkg syscall (freebsd-amd64), const NOTE_EXTEND = 4 pkg syscall (freebsd-amd64), const NOTE_FFAND = 1073741824 pkg syscall (freebsd-amd64), const NOTE_FFCOPY = 3221225472 pkg syscall (freebsd-amd64), const NOTE_FFCTRLMASK = 3221225472 pkg syscall (freebsd-amd64), const NOTE_FFLAGSMASK = 16777215 pkg syscall (freebsd-amd64), const NOTE_FFNOP = 0 pkg syscall (freebsd-amd64), const NOTE_FFOR = 2147483648 pkg syscall (freebsd-amd64), const NOTE_FORK = 1073741824 pkg syscall (freebsd-amd64), const NOTE_LINK = 16 pkg syscall (freebsd-amd64), const NOTE_LOWAT = 1 pkg syscall (freebsd-amd64), const NOTE_PCTRLMASK = 4026531840 pkg syscall (freebsd-amd64), const NOTE_PDATAMASK = 1048575 pkg syscall (freebsd-amd64), const NOTE_RENAME = 32 pkg syscall (freebsd-amd64), const NOTE_REVOKE = 64 pkg syscall (freebsd-amd64), const NOTE_TRACK = 1 pkg syscall (freebsd-amd64), const NOTE_TRACKERR = 2 pkg syscall (freebsd-amd64), const NOTE_TRIGGER = 16777216 pkg syscall (freebsd-amd64), const NOTE_WRITE = 2 pkg syscall (freebsd-amd64), const OCRNL = 16 pkg syscall (freebsd-amd64), const OCRNL ideal-int pkg syscall (freebsd-amd64), const ONLCR = 2 pkg syscall (freebsd-amd64), const ONLCR ideal-int pkg syscall (freebsd-amd64), const ONLRET = 64 pkg syscall (freebsd-amd64), const ONLRET ideal-int pkg syscall (freebsd-amd64), const ONOCR = 32 pkg syscall (freebsd-amd64), const ONOCR ideal-int pkg syscall (freebsd-amd64), const ONOEOT = 8 pkg syscall (freebsd-amd64), const ONOEOT ideal-int pkg syscall (freebsd-amd64), const OPOST = 1 pkg syscall (freebsd-amd64), const OPOST ideal-int pkg syscall (freebsd-amd64), const O_ACCMODE = 3 pkg syscall (freebsd-amd64), const O_APPEND = 8 pkg syscall (freebsd-amd64), const O_ASYNC = 64 pkg syscall (freebsd-amd64), const O_CLOEXEC = 0 pkg syscall (freebsd-amd64), const O_CREAT = 512 pkg syscall (freebsd-amd64), const O_DIRECT = 65536 pkg syscall (freebsd-amd64), const O_DIRECTORY = 131072 pkg syscall (freebsd-amd64), const O_EXCL = 2048 pkg syscall (freebsd-amd64), const O_EXEC = 262144 pkg syscall (freebsd-amd64), const O_EXLOCK = 32 pkg syscall (freebsd-amd64), const O_FSYNC = 128 pkg syscall (freebsd-amd64), const O_NDELAY = 4 pkg syscall (freebsd-amd64), const O_NOCTTY = 32768 pkg syscall (freebsd-amd64), const O_NOFOLLOW = 256 pkg syscall (freebsd-amd64), const O_NONBLOCK = 4 pkg syscall (freebsd-amd64), const O_SHLOCK = 16 pkg syscall (freebsd-amd64), const O_SYNC = 128 pkg syscall (freebsd-amd64), const O_TRUNC = 1024 pkg syscall (freebsd-amd64), const O_TTY_INIT = 524288 pkg syscall (freebsd-amd64), const PARENB = 4096 pkg syscall (freebsd-amd64), const PARENB ideal-int pkg syscall (freebsd-amd64), const PARMRK = 8 pkg syscall (freebsd-amd64), const PARMRK ideal-int pkg syscall (freebsd-amd64), const PARODD = 8192 pkg syscall (freebsd-amd64), const PARODD ideal-int pkg syscall (freebsd-amd64), const PENDIN = 536870912 pkg syscall (freebsd-amd64), const PENDIN ideal-int pkg syscall (freebsd-amd64), const PROT_EXEC = 4 pkg syscall (freebsd-amd64), const PROT_EXEC ideal-int pkg syscall (freebsd-amd64), const PROT_NONE = 0 pkg syscall (freebsd-amd64), const PROT_NONE ideal-int pkg syscall (freebsd-amd64), const PROT_READ = 1 pkg syscall (freebsd-amd64), const PROT_READ ideal-int pkg syscall (freebsd-amd64), const PROT_WRITE = 2 pkg syscall (freebsd-amd64), const PROT_WRITE ideal-int pkg syscall (freebsd-amd64), const PTRACE_CONT = 7 pkg syscall (freebsd-amd64), const PTRACE_KILL = 8 pkg syscall (freebsd-amd64), const PTRACE_TRACEME = 0 pkg syscall (freebsd-amd64), const RLIMIT_AS = 10 pkg syscall (freebsd-amd64), const RLIMIT_CORE = 4 pkg syscall (freebsd-amd64), const RLIMIT_CPU = 0 pkg syscall (freebsd-amd64), const RLIMIT_DATA = 2 pkg syscall (freebsd-amd64), const RLIMIT_FSIZE = 1 pkg syscall (freebsd-amd64), const RLIMIT_NOFILE = 8 pkg syscall (freebsd-amd64), const RLIMIT_STACK = 3 pkg syscall (freebsd-amd64), const RLIM_INFINITY = 9223372036854775807 pkg syscall (freebsd-amd64), const RTAX_AUTHOR = 6 pkg syscall (freebsd-amd64), const RTAX_BRD = 7 pkg syscall (freebsd-amd64), const RTAX_DST = 0 pkg syscall (freebsd-amd64), const RTAX_GATEWAY = 1 pkg syscall (freebsd-amd64), const RTAX_GENMASK = 3 pkg syscall (freebsd-amd64), const RTAX_IFA = 5 pkg syscall (freebsd-amd64), const RTAX_IFP = 4 pkg syscall (freebsd-amd64), const RTAX_MAX = 8 pkg syscall (freebsd-amd64), const RTAX_NETMASK = 2 pkg syscall (freebsd-amd64), const RTA_AUTHOR = 64 pkg syscall (freebsd-amd64), const RTA_BRD = 128 pkg syscall (freebsd-amd64), const RTA_DST = 1 pkg syscall (freebsd-amd64), const RTA_GATEWAY = 2 pkg syscall (freebsd-amd64), const RTA_GENMASK = 8 pkg syscall (freebsd-amd64), const RTA_IFA = 32 pkg syscall (freebsd-amd64), const RTA_IFP = 16 pkg syscall (freebsd-amd64), const RTA_NETMASK = 4 pkg syscall (freebsd-amd64), const RTF_BLACKHOLE = 4096 pkg syscall (freebsd-amd64), const RTF_BROADCAST = 4194304 pkg syscall (freebsd-amd64), const RTF_DONE = 64 pkg syscall (freebsd-amd64), const RTF_DYNAMIC = 16 pkg syscall (freebsd-amd64), const RTF_FMASK = 268752904 pkg syscall (freebsd-amd64), const RTF_GATEWAY = 2 pkg syscall (freebsd-amd64), const RTF_HOST = 4 pkg syscall (freebsd-amd64), const RTF_LLDATA = 1024 pkg syscall (freebsd-amd64), const RTF_LLINFO = 1024 pkg syscall (freebsd-amd64), const RTF_LOCAL = 2097152 pkg syscall (freebsd-amd64), const RTF_MODIFIED = 32 pkg syscall (freebsd-amd64), const RTF_MULTICAST = 8388608 pkg syscall (freebsd-amd64), const RTF_PINNED = 1048576 pkg syscall (freebsd-amd64), const RTF_PRCLONING = 65536 pkg syscall (freebsd-amd64), const RTF_PROTO1 = 32768 pkg syscall (freebsd-amd64), const RTF_PROTO2 = 16384 pkg syscall (freebsd-amd64), const RTF_PROTO3 = 262144 pkg syscall (freebsd-amd64), const RTF_REJECT = 8 pkg syscall (freebsd-amd64), const RTF_RNH_LOCKED = 1073741824 pkg syscall (freebsd-amd64), const RTF_STATIC = 2048 pkg syscall (freebsd-amd64), const RTF_STICKY = 268435456 pkg syscall (freebsd-amd64), const RTF_UP = 1 pkg syscall (freebsd-amd64), const RTF_XRESOLVE = 512 pkg syscall (freebsd-amd64), const RTM_ADD = 1 pkg syscall (freebsd-amd64), const RTM_CHANGE = 3 pkg syscall (freebsd-amd64), const RTM_DELADDR = 13 pkg syscall (freebsd-amd64), const RTM_DELETE = 2 pkg syscall (freebsd-amd64), const RTM_DELMADDR = 16 pkg syscall (freebsd-amd64), const RTM_GET = 4 pkg syscall (freebsd-amd64), const RTM_IEEE80211 = 18 pkg syscall (freebsd-amd64), const RTM_IFANNOUNCE = 17 pkg syscall (freebsd-amd64), const RTM_IFINFO = 14 pkg syscall (freebsd-amd64), const RTM_LOCK = 8 pkg syscall (freebsd-amd64), const RTM_LOSING = 5 pkg syscall (freebsd-amd64), const RTM_MISS = 7 pkg syscall (freebsd-amd64), const RTM_NEWADDR = 12 pkg syscall (freebsd-amd64), const RTM_NEWMADDR = 15 pkg syscall (freebsd-amd64), const RTM_OLDADD = 9 pkg syscall (freebsd-amd64), const RTM_OLDDEL = 10 pkg syscall (freebsd-amd64), const RTM_REDIRECT = 6 pkg syscall (freebsd-amd64), const RTM_RESOLVE = 11 pkg syscall (freebsd-amd64), const RTM_RTTUNIT = 1000000 pkg syscall (freebsd-amd64), const RTM_VERSION = 5 pkg syscall (freebsd-amd64), const RTV_EXPIRE = 4 pkg syscall (freebsd-amd64), const RTV_HOPCOUNT = 2 pkg syscall (freebsd-amd64), const RTV_MTU = 1 pkg syscall (freebsd-amd64), const RTV_RPIPE = 8 pkg syscall (freebsd-amd64), const RTV_RTT = 64 pkg syscall (freebsd-amd64), const RTV_RTTVAR = 128 pkg syscall (freebsd-amd64), const RTV_SPIPE = 16 pkg syscall (freebsd-amd64), const RTV_SSTHRESH = 32 pkg syscall (freebsd-amd64), const RTV_WEIGHT = 256 pkg syscall (freebsd-amd64), const RT_CACHING_CONTEXT = 1 pkg syscall (freebsd-amd64), const RT_CACHING_CONTEXT ideal-int pkg syscall (freebsd-amd64), const RT_DEFAULT_FIB = 0 pkg syscall (freebsd-amd64), const RT_DEFAULT_FIB ideal-int pkg syscall (freebsd-amd64), const RUSAGE_CHILDREN = -1 pkg syscall (freebsd-amd64), const RUSAGE_SELF = 0 pkg syscall (freebsd-amd64), const RUSAGE_THREAD = 1 pkg syscall (freebsd-amd64), const SCM_BINTIME = 4 pkg syscall (freebsd-amd64), const SCM_CREDS = 3 pkg syscall (freebsd-amd64), const SCM_RIGHTS = 1 pkg syscall (freebsd-amd64), const SCM_TIMESTAMP = 2 pkg syscall (freebsd-amd64), const SIGBUS = 10 pkg syscall (freebsd-amd64), const SIGCHLD = 20 pkg syscall (freebsd-amd64), const SIGCONT = 19 pkg syscall (freebsd-amd64), const SIGEMT = 7 pkg syscall (freebsd-amd64), const SIGINFO = 29 pkg syscall (freebsd-amd64), const SIGIO = 23 pkg syscall (freebsd-amd64), const SIGIOT = 6 pkg syscall (freebsd-amd64), const SIGLWP = 32 pkg syscall (freebsd-amd64), const SIGPROF = 27 pkg syscall (freebsd-amd64), const SIGSTOP = 17 pkg syscall (freebsd-amd64), const SIGSYS = 12 pkg syscall (freebsd-amd64), const SIGTHR = 32 pkg syscall (freebsd-amd64), const SIGTSTP = 18 pkg syscall (freebsd-amd64), const SIGTTIN = 21 pkg syscall (freebsd-amd64), const SIGTTOU = 22 pkg syscall (freebsd-amd64), const SIGURG = 16 pkg syscall (freebsd-amd64), const SIGUSR1 = 30 pkg syscall (freebsd-amd64), const SIGUSR2 = 31 pkg syscall (freebsd-amd64), const SIGVTALRM = 26 pkg syscall (freebsd-amd64), const SIGWINCH = 28 pkg syscall (freebsd-amd64), const SIGXCPU = 24 pkg syscall (freebsd-amd64), const SIGXFSZ = 25 pkg syscall (freebsd-amd64), const SIOCADDMULTI = 2149607729 pkg syscall (freebsd-amd64), const SIOCADDRT = 2151707146 pkg syscall (freebsd-amd64), const SIOCAIFADDR = 2151704858 pkg syscall (freebsd-amd64), const SIOCAIFGROUP = 2150132103 pkg syscall (freebsd-amd64), const SIOCALIFADDR = 2165860635 pkg syscall (freebsd-amd64), const SIOCATMARK = 1074033415 pkg syscall (freebsd-amd64), const SIOCDELMULTI = 2149607730 pkg syscall (freebsd-amd64), const SIOCDELRT = 2151707147 pkg syscall (freebsd-amd64), const SIOCDIFADDR = 2149607705 pkg syscall (freebsd-amd64), const SIOCDIFGROUP = 2150132105 pkg syscall (freebsd-amd64), const SIOCDIFPHYADDR = 2149607753 pkg syscall (freebsd-amd64), const SIOCDLIFADDR = 2165860637 pkg syscall (freebsd-amd64), const SIOCGDRVSPEC = 3223873915 pkg syscall (freebsd-amd64), const SIOCGETSGCNT = 3223351824 pkg syscall (freebsd-amd64), const SIOCGETVIFCNT = 3223876111 pkg syscall (freebsd-amd64), const SIOCGHIWAT = 1074033409 pkg syscall (freebsd-amd64), const SIOCGIFADDR = 3223349537 pkg syscall (freebsd-amd64), const SIOCGIFBRDADDR = 3223349539 pkg syscall (freebsd-amd64), const SIOCGIFCAP = 3223349535 pkg syscall (freebsd-amd64), const SIOCGIFCONF = 3222300964 pkg syscall (freebsd-amd64), const SIOCGIFDESCR = 3223349546 pkg syscall (freebsd-amd64), const SIOCGIFDSTADDR = 3223349538 pkg syscall (freebsd-amd64), const SIOCGIFFIB = 3223349596 pkg syscall (freebsd-amd64), const SIOCGIFFIB ideal-int pkg syscall (freebsd-amd64), const SIOCGIFFLAGS = 3223349521 pkg syscall (freebsd-amd64), const SIOCGIFGENERIC = 3223349562 pkg syscall (freebsd-amd64), const SIOCGIFGMEMB = 3223873930 pkg syscall (freebsd-amd64), const SIOCGIFGROUP = 3223873928 pkg syscall (freebsd-amd64), const SIOCGIFINDEX = 3223349536 pkg syscall (freebsd-amd64), const SIOCGIFMAC = 3223349542 pkg syscall (freebsd-amd64), const SIOCGIFMEDIA = 3224398136 pkg syscall (freebsd-amd64), const SIOCGIFMETRIC = 3223349527 pkg syscall (freebsd-amd64), const SIOCGIFMTU = 3223349555 pkg syscall (freebsd-amd64), const SIOCGIFNETMASK = 3223349541 pkg syscall (freebsd-amd64), const SIOCGIFPDSTADDR = 3223349576 pkg syscall (freebsd-amd64), const SIOCGIFPHYS = 3223349557 pkg syscall (freebsd-amd64), const SIOCGIFPSRCADDR = 3223349575 pkg syscall (freebsd-amd64), const SIOCGIFSTATUS = 3274795323 pkg syscall (freebsd-amd64), const SIOCGLIFADDR = 3239602460 pkg syscall (freebsd-amd64), const SIOCGLIFPHYADDR = 3239602507 pkg syscall (freebsd-amd64), const SIOCGLOWAT = 1074033411 pkg syscall (freebsd-amd64), const SIOCGPGRP = 1074033417 pkg syscall (freebsd-amd64), const SIOCGPRIVATE_0 = 3223349584 pkg syscall (freebsd-amd64), const SIOCGPRIVATE_1 = 3223349585 pkg syscall (freebsd-amd64), const SIOCIFCREATE = 3223349626 pkg syscall (freebsd-amd64), const SIOCIFCREATE2 = 3223349628 pkg syscall (freebsd-amd64), const SIOCIFDESTROY = 2149607801 pkg syscall (freebsd-amd64), const SIOCIFGCLONERS = 3222301048 pkg syscall (freebsd-amd64), const SIOCSDRVSPEC = 2150132091 pkg syscall (freebsd-amd64), const SIOCSHIWAT = 2147775232 pkg syscall (freebsd-amd64), const SIOCSIFADDR = 2149607692 pkg syscall (freebsd-amd64), const SIOCSIFBRDADDR = 2149607699 pkg syscall (freebsd-amd64), const SIOCSIFCAP = 2149607710 pkg syscall (freebsd-amd64), const SIOCSIFDESCR = 2149607721 pkg syscall (freebsd-amd64), const SIOCSIFDSTADDR = 2149607694 pkg syscall (freebsd-amd64), const SIOCSIFFIB = 2149607773 pkg syscall (freebsd-amd64), const SIOCSIFFIB ideal-int pkg syscall (freebsd-amd64), const SIOCSIFFLAGS = 2149607696 pkg syscall (freebsd-amd64), const SIOCSIFGENERIC = 2149607737 pkg syscall (freebsd-amd64), const SIOCSIFLLADDR = 2149607740 pkg syscall (freebsd-amd64), const SIOCSIFMAC = 2149607719 pkg syscall (freebsd-amd64), const SIOCSIFMEDIA = 3223349559 pkg syscall (freebsd-amd64), const SIOCSIFMETRIC = 2149607704 pkg syscall (freebsd-amd64), const SIOCSIFMTU = 2149607732 pkg syscall (freebsd-amd64), const SIOCSIFNAME = 2149607720 pkg syscall (freebsd-amd64), const SIOCSIFNETMASK = 2149607702 pkg syscall (freebsd-amd64), const SIOCSIFPHYADDR = 2151704902 pkg syscall (freebsd-amd64), const SIOCSIFPHYS = 2149607734 pkg syscall (freebsd-amd64), const SIOCSIFRVNET = 3223349595 pkg syscall (freebsd-amd64), const SIOCSIFVNET = 3223349594 pkg syscall (freebsd-amd64), const SIOCSLIFPHYADDR = 2165860682 pkg syscall (freebsd-amd64), const SIOCSLOWAT = 2147775234 pkg syscall (freebsd-amd64), const SIOCSPGRP = 2147775240 pkg syscall (freebsd-amd64), const SOCK_MAXADDRLEN = 255 pkg syscall (freebsd-amd64), const SOCK_RDM = 4 pkg syscall (freebsd-amd64), const SOL_SOCKET = 65535 pkg syscall (freebsd-amd64), const SOMAXCONN = 128 pkg syscall (freebsd-amd64), const SO_ACCEPTCONN = 2 pkg syscall (freebsd-amd64), const SO_ACCEPTFILTER = 4096 pkg syscall (freebsd-amd64), const SO_BINTIME = 8192 pkg syscall (freebsd-amd64), const SO_BROADCAST = 32 pkg syscall (freebsd-amd64), const SO_DEBUG = 1 pkg syscall (freebsd-amd64), const SO_DONTROUTE = 16 pkg syscall (freebsd-amd64), const SO_ERROR = 4103 pkg syscall (freebsd-amd64), const SO_KEEPALIVE = 8 pkg syscall (freebsd-amd64), const SO_LABEL = 4105 pkg syscall (freebsd-amd64), const SO_LINGER = 128 pkg syscall (freebsd-amd64), const SO_LISTENINCQLEN = 4115 pkg syscall (freebsd-amd64), const SO_LISTENQLEN = 4114 pkg syscall (freebsd-amd64), const SO_LISTENQLIMIT = 4113 pkg syscall (freebsd-amd64), const SO_NOSIGPIPE = 2048 pkg syscall (freebsd-amd64), const SO_NO_DDP = 32768 pkg syscall (freebsd-amd64), const SO_NO_OFFLOAD = 16384 pkg syscall (freebsd-amd64), const SO_OOBINLINE = 256 pkg syscall (freebsd-amd64), const SO_PEERLABEL = 4112 pkg syscall (freebsd-amd64), const SO_PROTOCOL = 4118 pkg syscall (freebsd-amd64), const SO_PROTOCOL ideal-int pkg syscall (freebsd-amd64), const SO_PROTOTYPE = 4118 pkg syscall (freebsd-amd64), const SO_PROTOTYPE ideal-int pkg syscall (freebsd-amd64), const SO_RCVBUF = 4098 pkg syscall (freebsd-amd64), const SO_RCVLOWAT = 4100 pkg syscall (freebsd-amd64), const SO_RCVTIMEO = 4102 pkg syscall (freebsd-amd64), const SO_REUSEADDR = 4 pkg syscall (freebsd-amd64), const SO_REUSEPORT = 512 pkg syscall (freebsd-amd64), const SO_SETFIB = 4116 pkg syscall (freebsd-amd64), const SO_SNDBUF = 4097 pkg syscall (freebsd-amd64), const SO_SNDLOWAT = 4099 pkg syscall (freebsd-amd64), const SO_SNDTIMEO = 4101 pkg syscall (freebsd-amd64), const SO_TIMESTAMP = 1024 pkg syscall (freebsd-amd64), const SO_TYPE = 4104 pkg syscall (freebsd-amd64), const SO_USELOOPBACK = 64 pkg syscall (freebsd-amd64), const SO_USER_COOKIE = 4117 pkg syscall (freebsd-amd64), const SO_USER_COOKIE ideal-int pkg syscall (freebsd-amd64), const SYS_ABORT2 = 463 pkg syscall (freebsd-amd64), const SYS_ACCEPT = 30 pkg syscall (freebsd-amd64), const SYS_ACCESS = 33 pkg syscall (freebsd-amd64), const SYS_ACCT = 51 pkg syscall (freebsd-amd64), const SYS_ADJTIME = 140 pkg syscall (freebsd-amd64), const SYS_AUDIT = 445 pkg syscall (freebsd-amd64), const SYS_AUDITCTL = 453 pkg syscall (freebsd-amd64), const SYS_AUDITON = 446 pkg syscall (freebsd-amd64), const SYS_BIND = 104 pkg syscall (freebsd-amd64), const SYS_CAP_ENTER = 516 pkg syscall (freebsd-amd64), const SYS_CAP_GETMODE = 517 pkg syscall (freebsd-amd64), const SYS_CAP_GETRIGHTS = 515 pkg syscall (freebsd-amd64), const SYS_CAP_NEW = 514 pkg syscall (freebsd-amd64), const SYS_CHDIR = 12 pkg syscall (freebsd-amd64), const SYS_CHFLAGS = 34 pkg syscall (freebsd-amd64), const SYS_CHMOD = 15 pkg syscall (freebsd-amd64), const SYS_CHOWN = 16 pkg syscall (freebsd-amd64), const SYS_CHROOT = 61 pkg syscall (freebsd-amd64), const SYS_CLOCK_GETCPUCLOCKID2 = 247 pkg syscall (freebsd-amd64), const SYS_CLOCK_GETCPUCLOCKID2 ideal-int pkg syscall (freebsd-amd64), const SYS_CLOCK_GETRES = 234 pkg syscall (freebsd-amd64), const SYS_CLOCK_GETTIME = 232 pkg syscall (freebsd-amd64), const SYS_CLOCK_SETTIME = 233 pkg syscall (freebsd-amd64), const SYS_CLOSE = 6 pkg syscall (freebsd-amd64), const SYS_CLOSEFROM = 509 pkg syscall (freebsd-amd64), const SYS_CONNECT = 98 pkg syscall (freebsd-amd64), const SYS_CPUSET = 484 pkg syscall (freebsd-amd64), const SYS_CPUSET_GETAFFINITY = 487 pkg syscall (freebsd-amd64), const SYS_CPUSET_GETID = 486 pkg syscall (freebsd-amd64), const SYS_CPUSET_SETAFFINITY = 488 pkg syscall (freebsd-amd64), const SYS_CPUSET_SETID = 485 pkg syscall (freebsd-amd64), const SYS_DUP = 41 pkg syscall (freebsd-amd64), const SYS_DUP2 = 90 pkg syscall (freebsd-amd64), const SYS_EACCESS = 376 pkg syscall (freebsd-amd64), const SYS_EXECVE = 59 pkg syscall (freebsd-amd64), const SYS_EXIT = 1 pkg syscall (freebsd-amd64), const SYS_EXTATTRCTL = 355 pkg syscall (freebsd-amd64), const SYS_EXTATTR_DELETE_FD = 373 pkg syscall (freebsd-amd64), const SYS_EXTATTR_DELETE_FILE = 358 pkg syscall (freebsd-amd64), const SYS_EXTATTR_DELETE_LINK = 414 pkg syscall (freebsd-amd64), const SYS_EXTATTR_GET_FD = 372 pkg syscall (freebsd-amd64), const SYS_EXTATTR_GET_FILE = 357 pkg syscall (freebsd-amd64), const SYS_EXTATTR_GET_LINK = 413 pkg syscall (freebsd-amd64), const SYS_EXTATTR_LIST_FD = 437 pkg syscall (freebsd-amd64), const SYS_EXTATTR_LIST_FILE = 438 pkg syscall (freebsd-amd64), const SYS_EXTATTR_LIST_LINK = 439 pkg syscall (freebsd-amd64), const SYS_EXTATTR_SET_FD = 371 pkg syscall (freebsd-amd64), const SYS_EXTATTR_SET_FILE = 356 pkg syscall (freebsd-amd64), const SYS_EXTATTR_SET_LINK = 412 pkg syscall (freebsd-amd64), const SYS_FACCESSAT = 489 pkg syscall (freebsd-amd64), const SYS_FCHDIR = 13 pkg syscall (freebsd-amd64), const SYS_FCHFLAGS = 35 pkg syscall (freebsd-amd64), const SYS_FCHMOD = 124 pkg syscall (freebsd-amd64), const SYS_FCHMODAT = 490 pkg syscall (freebsd-amd64), const SYS_FCHOWN = 123 pkg syscall (freebsd-amd64), const SYS_FCHOWNAT = 491 pkg syscall (freebsd-amd64), const SYS_FCNTL = 92 pkg syscall (freebsd-amd64), const SYS_FEXECVE = 492 pkg syscall (freebsd-amd64), const SYS_FFCLOCK_GETCOUNTER = 241 pkg syscall (freebsd-amd64), const SYS_FFCLOCK_GETESTIMATE = 243 pkg syscall (freebsd-amd64), const SYS_FFCLOCK_SETESTIMATE = 242 pkg syscall (freebsd-amd64), const SYS_FHOPEN = 298 pkg syscall (freebsd-amd64), const SYS_FHSTAT = 299 pkg syscall (freebsd-amd64), const SYS_FHSTATFS = 398 pkg syscall (freebsd-amd64), const SYS_FLOCK = 131 pkg syscall (freebsd-amd64), const SYS_FORK = 2 pkg syscall (freebsd-amd64), const SYS_FPATHCONF = 192 pkg syscall (freebsd-amd64), const SYS_FREEBSD6_FTRUNCATE = 201 pkg syscall (freebsd-amd64), const SYS_FREEBSD6_LSEEK = 199 pkg syscall (freebsd-amd64), const SYS_FREEBSD6_MMAP = 197 pkg syscall (freebsd-amd64), const SYS_FREEBSD6_PREAD = 173 pkg syscall (freebsd-amd64), const SYS_FREEBSD6_PWRITE = 174 pkg syscall (freebsd-amd64), const SYS_FREEBSD6_TRUNCATE = 200 pkg syscall (freebsd-amd64), const SYS_FSTAT = 189 pkg syscall (freebsd-amd64), const SYS_FSTATAT = 493 pkg syscall (freebsd-amd64), const SYS_FSTATFS = 397 pkg syscall (freebsd-amd64), const SYS_FSYNC = 95 pkg syscall (freebsd-amd64), const SYS_FTRUNCATE = 480 pkg syscall (freebsd-amd64), const SYS_FUTIMES = 206 pkg syscall (freebsd-amd64), const SYS_FUTIMESAT = 494 pkg syscall (freebsd-amd64), const SYS_GETAUDIT = 449 pkg syscall (freebsd-amd64), const SYS_GETAUDIT_ADDR = 451 pkg syscall (freebsd-amd64), const SYS_GETAUID = 447 pkg syscall (freebsd-amd64), const SYS_GETCONTEXT = 421 pkg syscall (freebsd-amd64), const SYS_GETDENTS = 272 pkg syscall (freebsd-amd64), const SYS_GETDIRENTRIES = 196 pkg syscall (freebsd-amd64), const SYS_GETDTABLESIZE = 89 pkg syscall (freebsd-amd64), const SYS_GETEGID = 43 pkg syscall (freebsd-amd64), const SYS_GETEUID = 25 pkg syscall (freebsd-amd64), const SYS_GETFH = 161 pkg syscall (freebsd-amd64), const SYS_GETFSSTAT = 395 pkg syscall (freebsd-amd64), const SYS_GETGID = 47 pkg syscall (freebsd-amd64), const SYS_GETGROUPS = 79 pkg syscall (freebsd-amd64), const SYS_GETITIMER = 86 pkg syscall (freebsd-amd64), const SYS_GETLOGIN = 49 pkg syscall (freebsd-amd64), const SYS_GETLOGINCLASS = 523 pkg syscall (freebsd-amd64), const SYS_GETPEERNAME = 31 pkg syscall (freebsd-amd64), const SYS_GETPGID = 207 pkg syscall (freebsd-amd64), const SYS_GETPGRP = 81 pkg syscall (freebsd-amd64), const SYS_GETPID = 20 pkg syscall (freebsd-amd64), const SYS_GETPPID = 39 pkg syscall (freebsd-amd64), const SYS_GETPRIORITY = 100 pkg syscall (freebsd-amd64), const SYS_GETRESGID = 361 pkg syscall (freebsd-amd64), const SYS_GETRESUID = 360 pkg syscall (freebsd-amd64), const SYS_GETRLIMIT = 194 pkg syscall (freebsd-amd64), const SYS_GETRUSAGE = 117 pkg syscall (freebsd-amd64), const SYS_GETSID = 310 pkg syscall (freebsd-amd64), const SYS_GETSOCKNAME = 32 pkg syscall (freebsd-amd64), const SYS_GETSOCKOPT = 118 pkg syscall (freebsd-amd64), const SYS_GETTIMEOFDAY = 116 pkg syscall (freebsd-amd64), const SYS_GETUID = 24 pkg syscall (freebsd-amd64), const SYS_IOCTL = 54 pkg syscall (freebsd-amd64), const SYS_ISSETUGID = 253 pkg syscall (freebsd-amd64), const SYS_JAIL = 338 pkg syscall (freebsd-amd64), const SYS_JAIL_ATTACH = 436 pkg syscall (freebsd-amd64), const SYS_JAIL_GET = 506 pkg syscall (freebsd-amd64), const SYS_JAIL_REMOVE = 508 pkg syscall (freebsd-amd64), const SYS_JAIL_SET = 507 pkg syscall (freebsd-amd64), const SYS_KENV = 390 pkg syscall (freebsd-amd64), const SYS_KEVENT = 363 pkg syscall (freebsd-amd64), const SYS_KILL = 37 pkg syscall (freebsd-amd64), const SYS_KLDFIND = 306 pkg syscall (freebsd-amd64), const SYS_KLDFIRSTMOD = 309 pkg syscall (freebsd-amd64), const SYS_KLDLOAD = 304 pkg syscall (freebsd-amd64), const SYS_KLDNEXT = 307 pkg syscall (freebsd-amd64), const SYS_KLDSTAT = 308 pkg syscall (freebsd-amd64), const SYS_KLDSYM = 337 pkg syscall (freebsd-amd64), const SYS_KLDUNLOAD = 305 pkg syscall (freebsd-amd64), const SYS_KLDUNLOADF = 444 pkg syscall (freebsd-amd64), const SYS_KQUEUE = 362 pkg syscall (freebsd-amd64), const SYS_KTIMER_CREATE = 235 pkg syscall (freebsd-amd64), const SYS_KTIMER_DELETE = 236 pkg syscall (freebsd-amd64), const SYS_KTIMER_GETOVERRUN = 239 pkg syscall (freebsd-amd64), const SYS_KTIMER_GETTIME = 238 pkg syscall (freebsd-amd64), const SYS_KTIMER_SETTIME = 237 pkg syscall (freebsd-amd64), const SYS_KTRACE = 45 pkg syscall (freebsd-amd64), const SYS_LCHFLAGS = 391 pkg syscall (freebsd-amd64), const SYS_LCHMOD = 274 pkg syscall (freebsd-amd64), const SYS_LCHOWN = 254 pkg syscall (freebsd-amd64), const SYS_LGETFH = 160 pkg syscall (freebsd-amd64), const SYS_LINK = 9 pkg syscall (freebsd-amd64), const SYS_LINKAT = 495 pkg syscall (freebsd-amd64), const SYS_LISTEN = 106 pkg syscall (freebsd-amd64), const SYS_LPATHCONF = 513 pkg syscall (freebsd-amd64), const SYS_LSEEK = 478 pkg syscall (freebsd-amd64), const SYS_LSTAT = 190 pkg syscall (freebsd-amd64), const SYS_LUTIMES = 276 pkg syscall (freebsd-amd64), const SYS_MAC_SYSCALL = 394 pkg syscall (freebsd-amd64), const SYS_MADVISE = 75 pkg syscall (freebsd-amd64), const SYS_MINCORE = 78 pkg syscall (freebsd-amd64), const SYS_MINHERIT = 250 pkg syscall (freebsd-amd64), const SYS_MKDIR = 136 pkg syscall (freebsd-amd64), const SYS_MKDIRAT = 496 pkg syscall (freebsd-amd64), const SYS_MKFIFO = 132 pkg syscall (freebsd-amd64), const SYS_MKFIFOAT = 497 pkg syscall (freebsd-amd64), const SYS_MKNOD = 14 pkg syscall (freebsd-amd64), const SYS_MKNODAT = 498 pkg syscall (freebsd-amd64), const SYS_MLOCK = 203 pkg syscall (freebsd-amd64), const SYS_MLOCKALL = 324 pkg syscall (freebsd-amd64), const SYS_MMAP = 477 pkg syscall (freebsd-amd64), const SYS_MODFIND = 303 pkg syscall (freebsd-amd64), const SYS_MODFNEXT = 302 pkg syscall (freebsd-amd64), const SYS_MODNEXT = 300 pkg syscall (freebsd-amd64), const SYS_MODSTAT = 301 pkg syscall (freebsd-amd64), const SYS_MOUNT = 21 pkg syscall (freebsd-amd64), const SYS_MPROTECT = 74 pkg syscall (freebsd-amd64), const SYS_MSYNC = 65 pkg syscall (freebsd-amd64), const SYS_MUNLOCK = 204 pkg syscall (freebsd-amd64), const SYS_MUNLOCKALL = 325 pkg syscall (freebsd-amd64), const SYS_MUNMAP = 73 pkg syscall (freebsd-amd64), const SYS_NANOSLEEP = 240 pkg syscall (freebsd-amd64), const SYS_NFSTAT = 279 pkg syscall (freebsd-amd64), const SYS_NLSTAT = 280 pkg syscall (freebsd-amd64), const SYS_NMOUNT = 378 pkg syscall (freebsd-amd64), const SYS_NSTAT = 278 pkg syscall (freebsd-amd64), const SYS_NTP_ADJTIME = 176 pkg syscall (freebsd-amd64), const SYS_NTP_GETTIME = 248 pkg syscall (freebsd-amd64), const SYS_OBREAK = 17 pkg syscall (freebsd-amd64), const SYS_OPEN = 5 pkg syscall (freebsd-amd64), const SYS_OPENAT = 499 pkg syscall (freebsd-amd64), const SYS_OPENBSD_POLL = 252 pkg syscall (freebsd-amd64), const SYS_OVADVISE = 72 pkg syscall (freebsd-amd64), const SYS_PATHCONF = 191 pkg syscall (freebsd-amd64), const SYS_PDFORK = 518 pkg syscall (freebsd-amd64), const SYS_PDGETPID = 520 pkg syscall (freebsd-amd64), const SYS_PDKILL = 519 pkg syscall (freebsd-amd64), const SYS_PIPE = 42 pkg syscall (freebsd-amd64), const SYS_POLL = 209 pkg syscall (freebsd-amd64), const SYS_POSIX_FADVISE = 531 pkg syscall (freebsd-amd64), const SYS_POSIX_FALLOCATE = 530 pkg syscall (freebsd-amd64), const SYS_POSIX_OPENPT = 504 pkg syscall (freebsd-amd64), const SYS_PREAD = 475 pkg syscall (freebsd-amd64), const SYS_PREADV = 289 pkg syscall (freebsd-amd64), const SYS_PROFIL = 44 pkg syscall (freebsd-amd64), const SYS_PSELECT = 522 pkg syscall (freebsd-amd64), const SYS_PTRACE = 26 pkg syscall (freebsd-amd64), const SYS_PWRITE = 476 pkg syscall (freebsd-amd64), const SYS_PWRITEV = 290 pkg syscall (freebsd-amd64), const SYS_QUOTACTL = 148 pkg syscall (freebsd-amd64), const SYS_RCTL_ADD_RULE = 528 pkg syscall (freebsd-amd64), const SYS_RCTL_GET_LIMITS = 527 pkg syscall (freebsd-amd64), const SYS_RCTL_GET_RACCT = 525 pkg syscall (freebsd-amd64), const SYS_RCTL_GET_RULES = 526 pkg syscall (freebsd-amd64), const SYS_RCTL_REMOVE_RULE = 529 pkg syscall (freebsd-amd64), const SYS_READ = 3 pkg syscall (freebsd-amd64), const SYS_READLINK = 58 pkg syscall (freebsd-amd64), const SYS_READLINKAT = 500 pkg syscall (freebsd-amd64), const SYS_READV = 120 pkg syscall (freebsd-amd64), const SYS_REBOOT = 55 pkg syscall (freebsd-amd64), const SYS_RECVFROM = 29 pkg syscall (freebsd-amd64), const SYS_RECVMSG = 27 pkg syscall (freebsd-amd64), const SYS_RENAME = 128 pkg syscall (freebsd-amd64), const SYS_RENAMEAT = 501 pkg syscall (freebsd-amd64), const SYS_REVOKE = 56 pkg syscall (freebsd-amd64), const SYS_RFORK = 251 pkg syscall (freebsd-amd64), const SYS_RMDIR = 137 pkg syscall (freebsd-amd64), const SYS_RTPRIO = 166 pkg syscall (freebsd-amd64), const SYS_RTPRIO_THREAD = 466 pkg syscall (freebsd-amd64), const SYS_SBRK = 69 pkg syscall (freebsd-amd64), const SYS_SCHED_GETPARAM = 328 pkg syscall (freebsd-amd64), const SYS_SCHED_GETSCHEDULER = 330 pkg syscall (freebsd-amd64), const SYS_SCHED_GET_PRIORITY_MAX = 332 pkg syscall (freebsd-amd64), const SYS_SCHED_GET_PRIORITY_MIN = 333 pkg syscall (freebsd-amd64), const SYS_SCHED_RR_GET_INTERVAL = 334 pkg syscall (freebsd-amd64), const SYS_SCHED_SETPARAM = 327 pkg syscall (freebsd-amd64), const SYS_SCHED_SETSCHEDULER = 329 pkg syscall (freebsd-amd64), const SYS_SCHED_YIELD = 331 pkg syscall (freebsd-amd64), const SYS_SCTP_GENERIC_RECVMSG = 474 pkg syscall (freebsd-amd64), const SYS_SCTP_GENERIC_SENDMSG = 472 pkg syscall (freebsd-amd64), const SYS_SCTP_GENERIC_SENDMSG_IOV = 473 pkg syscall (freebsd-amd64), const SYS_SCTP_PEELOFF = 471 pkg syscall (freebsd-amd64), const SYS_SELECT = 93 pkg syscall (freebsd-amd64), const SYS_SENDFILE = 393 pkg syscall (freebsd-amd64), const SYS_SENDMSG = 28 pkg syscall (freebsd-amd64), const SYS_SENDTO = 133 pkg syscall (freebsd-amd64), const SYS_SETAUDIT = 450 pkg syscall (freebsd-amd64), const SYS_SETAUDIT_ADDR = 452 pkg syscall (freebsd-amd64), const SYS_SETAUID = 448 pkg syscall (freebsd-amd64), const SYS_SETCONTEXT = 422 pkg syscall (freebsd-amd64), const SYS_SETEGID = 182 pkg syscall (freebsd-amd64), const SYS_SETEUID = 183 pkg syscall (freebsd-amd64), const SYS_SETFIB = 175 pkg syscall (freebsd-amd64), const SYS_SETGID = 181 pkg syscall (freebsd-amd64), const SYS_SETGROUPS = 80 pkg syscall (freebsd-amd64), const SYS_SETITIMER = 83 pkg syscall (freebsd-amd64), const SYS_SETLOGIN = 50 pkg syscall (freebsd-amd64), const SYS_SETLOGINCLASS = 524 pkg syscall (freebsd-amd64), const SYS_SETPGID = 82 pkg syscall (freebsd-amd64), const SYS_SETPRIORITY = 96 pkg syscall (freebsd-amd64), const SYS_SETREGID = 127 pkg syscall (freebsd-amd64), const SYS_SETRESGID = 312 pkg syscall (freebsd-amd64), const SYS_SETRESUID = 311 pkg syscall (freebsd-amd64), const SYS_SETREUID = 126 pkg syscall (freebsd-amd64), const SYS_SETRLIMIT = 195 pkg syscall (freebsd-amd64), const SYS_SETSID = 147 pkg syscall (freebsd-amd64), const SYS_SETSOCKOPT = 105 pkg syscall (freebsd-amd64), const SYS_SETTIMEOFDAY = 122 pkg syscall (freebsd-amd64), const SYS_SETUID = 23 pkg syscall (freebsd-amd64), const SYS_SHM_OPEN = 482 pkg syscall (freebsd-amd64), const SYS_SHM_UNLINK = 483 pkg syscall (freebsd-amd64), const SYS_SHUTDOWN = 134 pkg syscall (freebsd-amd64), const SYS_SIGACTION = 416 pkg syscall (freebsd-amd64), const SYS_SIGALTSTACK = 53 pkg syscall (freebsd-amd64), const SYS_SIGPENDING = 343 pkg syscall (freebsd-amd64), const SYS_SIGPROCMASK = 340 pkg syscall (freebsd-amd64), const SYS_SIGQUEUE = 456 pkg syscall (freebsd-amd64), const SYS_SIGRETURN = 417 pkg syscall (freebsd-amd64), const SYS_SIGSUSPEND = 341 pkg syscall (freebsd-amd64), const SYS_SIGTIMEDWAIT = 345 pkg syscall (freebsd-amd64), const SYS_SIGWAIT = 429 pkg syscall (freebsd-amd64), const SYS_SIGWAITINFO = 346 pkg syscall (freebsd-amd64), const SYS_SOCKET = 97 pkg syscall (freebsd-amd64), const SYS_SOCKETPAIR = 135 pkg syscall (freebsd-amd64), const SYS_SSTK = 70 pkg syscall (freebsd-amd64), const SYS_STAT = 188 pkg syscall (freebsd-amd64), const SYS_STATFS = 396 pkg syscall (freebsd-amd64), const SYS_SWAPCONTEXT = 423 pkg syscall (freebsd-amd64), const SYS_SWAPOFF = 424 pkg syscall (freebsd-amd64), const SYS_SWAPON = 85 pkg syscall (freebsd-amd64), const SYS_SYMLINK = 57 pkg syscall (freebsd-amd64), const SYS_SYMLINKAT = 502 pkg syscall (freebsd-amd64), const SYS_SYNC = 36 pkg syscall (freebsd-amd64), const SYS_SYSARCH = 165 pkg syscall (freebsd-amd64), const SYS_THR_CREATE = 430 pkg syscall (freebsd-amd64), const SYS_THR_EXIT = 431 pkg syscall (freebsd-amd64), const SYS_THR_KILL = 433 pkg syscall (freebsd-amd64), const SYS_THR_KILL2 = 481 pkg syscall (freebsd-amd64), const SYS_THR_NEW = 455 pkg syscall (freebsd-amd64), const SYS_THR_SELF = 432 pkg syscall (freebsd-amd64), const SYS_THR_SET_NAME = 464 pkg syscall (freebsd-amd64), const SYS_THR_SUSPEND = 442 pkg syscall (freebsd-amd64), const SYS_THR_WAKE = 443 pkg syscall (freebsd-amd64), const SYS_TRUNCATE = 479 pkg syscall (freebsd-amd64), const SYS_UMASK = 60 pkg syscall (freebsd-amd64), const SYS_UNDELETE = 205 pkg syscall (freebsd-amd64), const SYS_UNLINK = 10 pkg syscall (freebsd-amd64), const SYS_UNLINKAT = 503 pkg syscall (freebsd-amd64), const SYS_UNMOUNT = 22 pkg syscall (freebsd-amd64), const SYS_UTIMES = 138 pkg syscall (freebsd-amd64), const SYS_UTRACE = 335 pkg syscall (freebsd-amd64), const SYS_UUIDGEN = 392 pkg syscall (freebsd-amd64), const SYS_VFORK = 66 pkg syscall (freebsd-amd64), const SYS_WAIT4 = 7 pkg syscall (freebsd-amd64), const SYS_WAIT6 = 532 pkg syscall (freebsd-amd64), const SYS_WAIT6 ideal-int pkg syscall (freebsd-amd64), const SYS_WRITE = 4 pkg syscall (freebsd-amd64), const SYS_WRITEV = 121 pkg syscall (freebsd-amd64), const SYS_YIELD = 321 pkg syscall (freebsd-amd64), const SYS__UMTX_LOCK = 434 pkg syscall (freebsd-amd64), const SYS__UMTX_OP = 454 pkg syscall (freebsd-amd64), const SYS__UMTX_UNLOCK = 435 pkg syscall (freebsd-amd64), const SYS___ACL_ACLCHECK_FD = 354 pkg syscall (freebsd-amd64), const SYS___ACL_ACLCHECK_FILE = 353 pkg syscall (freebsd-amd64), const SYS___ACL_ACLCHECK_LINK = 428 pkg syscall (freebsd-amd64), const SYS___ACL_DELETE_FD = 352 pkg syscall (freebsd-amd64), const SYS___ACL_DELETE_FILE = 351 pkg syscall (freebsd-amd64), const SYS___ACL_DELETE_LINK = 427 pkg syscall (freebsd-amd64), const SYS___ACL_GET_FD = 349 pkg syscall (freebsd-amd64), const SYS___ACL_GET_FILE = 347 pkg syscall (freebsd-amd64), const SYS___ACL_GET_LINK = 425 pkg syscall (freebsd-amd64), const SYS___ACL_SET_FD = 350 pkg syscall (freebsd-amd64), const SYS___ACL_SET_FILE = 348 pkg syscall (freebsd-amd64), const SYS___ACL_SET_LINK = 426 pkg syscall (freebsd-amd64), const SYS___GETCWD = 326 pkg syscall (freebsd-amd64), const SYS___MAC_EXECVE = 415 pkg syscall (freebsd-amd64), const SYS___MAC_GET_FD = 386 pkg syscall (freebsd-amd64), const SYS___MAC_GET_FILE = 387 pkg syscall (freebsd-amd64), const SYS___MAC_GET_LINK = 410 pkg syscall (freebsd-amd64), const SYS___MAC_GET_PID = 409 pkg syscall (freebsd-amd64), const SYS___MAC_GET_PROC = 384 pkg syscall (freebsd-amd64), const SYS___MAC_SET_FD = 388 pkg syscall (freebsd-amd64), const SYS___MAC_SET_FILE = 389 pkg syscall (freebsd-amd64), const SYS___MAC_SET_LINK = 411 pkg syscall (freebsd-amd64), const SYS___MAC_SET_PROC = 385 pkg syscall (freebsd-amd64), const SYS___SETUGID = 374 pkg syscall (freebsd-amd64), const SYS___SYSCTL = 202 pkg syscall (freebsd-amd64), const S_IFMT = 61440 pkg syscall (freebsd-amd64), const SizeofBpfHdr = 32 pkg syscall (freebsd-amd64), const SizeofBpfInsn = 8 pkg syscall (freebsd-amd64), const SizeofBpfProgram = 16 pkg syscall (freebsd-amd64), const SizeofBpfStat = 8 pkg syscall (freebsd-amd64), const SizeofBpfVersion = 4 pkg syscall (freebsd-amd64), const SizeofBpfZbuf = 24 pkg syscall (freebsd-amd64), const SizeofBpfZbufHeader = 32 pkg syscall (freebsd-amd64), const SizeofCmsghdr = 12 pkg syscall (freebsd-amd64), const SizeofIPMreq = 8 pkg syscall (freebsd-amd64), const SizeofIPMreqn = 12 pkg syscall (freebsd-amd64), const SizeofIPv6Mreq = 20 pkg syscall (freebsd-amd64), const SizeofIfAnnounceMsghdr = 24 pkg syscall (freebsd-amd64), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (freebsd-amd64), const SizeofIfData = 152 pkg syscall (freebsd-amd64), const SizeofIfMsghdr = 168 pkg syscall (freebsd-amd64), const SizeofIfaMsghdr = 20 pkg syscall (freebsd-amd64), const SizeofIfmaMsghdr = 16 pkg syscall (freebsd-amd64), const SizeofInet6Pktinfo = 20 pkg syscall (freebsd-amd64), const SizeofLinger = 8 pkg syscall (freebsd-amd64), const SizeofMsghdr = 48 pkg syscall (freebsd-amd64), const SizeofRtMetrics = 112 pkg syscall (freebsd-amd64), const SizeofRtMsghdr = 152 pkg syscall (freebsd-amd64), const SizeofSockaddrAny = 108 pkg syscall (freebsd-amd64), const SizeofSockaddrDatalink = 54 pkg syscall (freebsd-amd64), const SizeofSockaddrInet4 = 16 pkg syscall (freebsd-amd64), const SizeofSockaddrInet6 = 28 pkg syscall (freebsd-amd64), const SizeofSockaddrUnix = 106 pkg syscall (freebsd-amd64), const TCIFLUSH = 1 pkg syscall (freebsd-amd64), const TCIFLUSH ideal-int pkg syscall (freebsd-amd64), const TCIOFLUSH = 3 pkg syscall (freebsd-amd64), const TCIOFLUSH ideal-int pkg syscall (freebsd-amd64), const TCOFLUSH = 2 pkg syscall (freebsd-amd64), const TCOFLUSH ideal-int pkg syscall (freebsd-amd64), const TCP_CA_NAME_MAX = 16 pkg syscall (freebsd-amd64), const TCP_CONGESTION = 64 pkg syscall (freebsd-amd64), const TCP_INFO = 32 pkg syscall (freebsd-amd64), const TCP_KEEPCNT = 1024 pkg syscall (freebsd-amd64), const TCP_KEEPCNT ideal-int pkg syscall (freebsd-amd64), const TCP_KEEPIDLE = 256 pkg syscall (freebsd-amd64), const TCP_KEEPIDLE ideal-int pkg syscall (freebsd-amd64), const TCP_KEEPINIT = 128 pkg syscall (freebsd-amd64), const TCP_KEEPINIT ideal-int pkg syscall (freebsd-amd64), const TCP_KEEPINTVL = 512 pkg syscall (freebsd-amd64), const TCP_KEEPINTVL ideal-int pkg syscall (freebsd-amd64), const TCP_MAXBURST = 4 pkg syscall (freebsd-amd64), const TCP_MAXHLEN = 60 pkg syscall (freebsd-amd64), const TCP_MAXOLEN = 40 pkg syscall (freebsd-amd64), const TCP_MAXSEG = 2 pkg syscall (freebsd-amd64), const TCP_MAXWIN = 65535 pkg syscall (freebsd-amd64), const TCP_MAX_SACK = 4 pkg syscall (freebsd-amd64), const TCP_MAX_WINSHIFT = 14 pkg syscall (freebsd-amd64), const TCP_MD5SIG = 16 pkg syscall (freebsd-amd64), const TCP_MINMSS = 216 pkg syscall (freebsd-amd64), const TCP_MSS = 536 pkg syscall (freebsd-amd64), const TCP_NOOPT = 8 pkg syscall (freebsd-amd64), const TCP_NOPUSH = 4 pkg syscall (freebsd-amd64), const TCSAFLUSH = 2 pkg syscall (freebsd-amd64), const TCSAFLUSH ideal-int pkg syscall (freebsd-amd64), const TIOCCBRK = 536900730 pkg syscall (freebsd-amd64), const TIOCCDTR = 536900728 pkg syscall (freebsd-amd64), const TIOCCONS = 2147775586 pkg syscall (freebsd-amd64), const TIOCDRAIN = 536900702 pkg syscall (freebsd-amd64), const TIOCEXCL = 536900621 pkg syscall (freebsd-amd64), const TIOCEXT = 2147775584 pkg syscall (freebsd-amd64), const TIOCFLUSH = 2147775504 pkg syscall (freebsd-amd64), const TIOCGDRAINWAIT = 1074033750 pkg syscall (freebsd-amd64), const TIOCGETA = 1076655123 pkg syscall (freebsd-amd64), const TIOCGETD = 1074033690 pkg syscall (freebsd-amd64), const TIOCGPGRP = 1074033783 pkg syscall (freebsd-amd64), const TIOCGPTN = 1074033679 pkg syscall (freebsd-amd64), const TIOCGSID = 1074033763 pkg syscall (freebsd-amd64), const TIOCGWINSZ = 1074295912 pkg syscall (freebsd-amd64), const TIOCMBIC = 2147775595 pkg syscall (freebsd-amd64), const TIOCMBIS = 2147775596 pkg syscall (freebsd-amd64), const TIOCMGDTRWAIT = 1074033754 pkg syscall (freebsd-amd64), const TIOCMGET = 1074033770 pkg syscall (freebsd-amd64), const TIOCMSDTRWAIT = 2147775579 pkg syscall (freebsd-amd64), const TIOCMSET = 2147775597 pkg syscall (freebsd-amd64), const TIOCM_CAR = 64 pkg syscall (freebsd-amd64), const TIOCM_CD = 64 pkg syscall (freebsd-amd64), const TIOCM_CTS = 32 pkg syscall (freebsd-amd64), const TIOCM_DCD = 64 pkg syscall (freebsd-amd64), const TIOCM_DSR = 256 pkg syscall (freebsd-amd64), const TIOCM_DTR = 2 pkg syscall (freebsd-amd64), const TIOCM_LE = 1 pkg syscall (freebsd-amd64), const TIOCM_RI = 128 pkg syscall (freebsd-amd64), const TIOCM_RNG = 128 pkg syscall (freebsd-amd64), const TIOCM_RTS = 4 pkg syscall (freebsd-amd64), const TIOCM_SR = 16 pkg syscall (freebsd-amd64), const TIOCM_ST = 8 pkg syscall (freebsd-amd64), const TIOCNOTTY = 536900721 pkg syscall (freebsd-amd64), const TIOCNXCL = 536900622 pkg syscall (freebsd-amd64), const TIOCOUTQ = 1074033779 pkg syscall (freebsd-amd64), const TIOCPKT = 2147775600 pkg syscall (freebsd-amd64), const TIOCPKT_DATA = 0 pkg syscall (freebsd-amd64), const TIOCPKT_DOSTOP = 32 pkg syscall (freebsd-amd64), const TIOCPKT_FLUSHREAD = 1 pkg syscall (freebsd-amd64), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (freebsd-amd64), const TIOCPKT_IOCTL = 64 pkg syscall (freebsd-amd64), const TIOCPKT_NOSTOP = 16 pkg syscall (freebsd-amd64), const TIOCPKT_START = 8 pkg syscall (freebsd-amd64), const TIOCPKT_STOP = 4 pkg syscall (freebsd-amd64), const TIOCPTMASTER = 536900636 pkg syscall (freebsd-amd64), const TIOCSBRK = 536900731 pkg syscall (freebsd-amd64), const TIOCSCTTY = 536900705 pkg syscall (freebsd-amd64), const TIOCSDRAINWAIT = 2147775575 pkg syscall (freebsd-amd64), const TIOCSDTR = 536900729 pkg syscall (freebsd-amd64), const TIOCSETA = 2150396948 pkg syscall (freebsd-amd64), const TIOCSETAF = 2150396950 pkg syscall (freebsd-amd64), const TIOCSETAW = 2150396949 pkg syscall (freebsd-amd64), const TIOCSETD = 2147775515 pkg syscall (freebsd-amd64), const TIOCSIG = 537162847 pkg syscall (freebsd-amd64), const TIOCSPGRP = 2147775606 pkg syscall (freebsd-amd64), const TIOCSTART = 536900718 pkg syscall (freebsd-amd64), const TIOCSTAT = 536900709 pkg syscall (freebsd-amd64), const TIOCSTI = 2147578994 pkg syscall (freebsd-amd64), const TIOCSTOP = 536900719 pkg syscall (freebsd-amd64), const TIOCSWINSZ = 2148037735 pkg syscall (freebsd-amd64), const TIOCTIMESTAMP = 1074820185 pkg syscall (freebsd-amd64), const TIOCUCNTL = 2147775590 pkg syscall (freebsd-amd64), const TOSTOP = 4194304 pkg syscall (freebsd-amd64), const TOSTOP ideal-int pkg syscall (freebsd-amd64), const VDISCARD = 15 pkg syscall (freebsd-amd64), const VDISCARD ideal-int pkg syscall (freebsd-amd64), const VDSUSP = 11 pkg syscall (freebsd-amd64), const VDSUSP ideal-int pkg syscall (freebsd-amd64), const VEOF = 0 pkg syscall (freebsd-amd64), const VEOF ideal-int pkg syscall (freebsd-amd64), const VEOL = 1 pkg syscall (freebsd-amd64), const VEOL ideal-int pkg syscall (freebsd-amd64), const VEOL2 = 2 pkg syscall (freebsd-amd64), const VEOL2 ideal-int pkg syscall (freebsd-amd64), const VERASE = 3 pkg syscall (freebsd-amd64), const VERASE ideal-int pkg syscall (freebsd-amd64), const VERASE2 = 7 pkg syscall (freebsd-amd64), const VERASE2 ideal-int pkg syscall (freebsd-amd64), const VINTR = 8 pkg syscall (freebsd-amd64), const VINTR ideal-int pkg syscall (freebsd-amd64), const VKILL = 5 pkg syscall (freebsd-amd64), const VKILL ideal-int pkg syscall (freebsd-amd64), const VLNEXT = 14 pkg syscall (freebsd-amd64), const VLNEXT ideal-int pkg syscall (freebsd-amd64), const VMIN = 16 pkg syscall (freebsd-amd64), const VMIN ideal-int pkg syscall (freebsd-amd64), const VQUIT = 9 pkg syscall (freebsd-amd64), const VQUIT ideal-int pkg syscall (freebsd-amd64), const VREPRINT = 6 pkg syscall (freebsd-amd64), const VREPRINT ideal-int pkg syscall (freebsd-amd64), const VSTART = 12 pkg syscall (freebsd-amd64), const VSTART ideal-int pkg syscall (freebsd-amd64), const VSTATUS = 18 pkg syscall (freebsd-amd64), const VSTATUS ideal-int pkg syscall (freebsd-amd64), const VSTOP = 13 pkg syscall (freebsd-amd64), const VSTOP ideal-int pkg syscall (freebsd-amd64), const VSUSP = 10 pkg syscall (freebsd-amd64), const VSUSP ideal-int pkg syscall (freebsd-amd64), const VTIME = 17 pkg syscall (freebsd-amd64), const VTIME ideal-int pkg syscall (freebsd-amd64), const VWERASE = 4 pkg syscall (freebsd-amd64), const VWERASE ideal-int pkg syscall (freebsd-amd64), const WCONTINUED = 4 pkg syscall (freebsd-amd64), const WCOREFLAG = 128 pkg syscall (freebsd-amd64), const WLINUXCLONE = 2147483648 pkg syscall (freebsd-amd64), const WNOHANG = 1 pkg syscall (freebsd-amd64), const WNOWAIT = 8 pkg syscall (freebsd-amd64), const WSTOPPED = 2 pkg syscall (freebsd-amd64), const WUNTRACED = 2 pkg syscall (freebsd-amd64), func Fchflags(int, int) error pkg syscall (freebsd-amd64), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (freebsd-amd64), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-amd64), type IfAnnounceMsghdr struct pkg syscall (freebsd-amd64), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (freebsd-amd64), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (freebsd-amd64), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (freebsd-amd64), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (freebsd-amd64), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (freebsd-amd64), type IfAnnounceMsghdr struct, What uint16 pkg syscall (freebsd-amd64), type InterfaceAnnounceMessage struct pkg syscall (freebsd-amd64), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (freebsd-amd64-cgo), const AF_APPLETALK = 16 pkg syscall (freebsd-amd64-cgo), const AF_ARP = 35 pkg syscall (freebsd-amd64-cgo), const AF_ATM = 30 pkg syscall (freebsd-amd64-cgo), const AF_BLUETOOTH = 36 pkg syscall (freebsd-amd64-cgo), const AF_CCITT = 10 pkg syscall (freebsd-amd64-cgo), const AF_CHAOS = 5 pkg syscall (freebsd-amd64-cgo), const AF_CNT = 21 pkg syscall (freebsd-amd64-cgo), const AF_COIP = 20 pkg syscall (freebsd-amd64-cgo), const AF_DATAKIT = 9 pkg syscall (freebsd-amd64-cgo), const AF_DECnet = 12 pkg syscall (freebsd-amd64-cgo), const AF_DLI = 13 pkg syscall (freebsd-amd64-cgo), const AF_E164 = 26 pkg syscall (freebsd-amd64-cgo), const AF_ECMA = 8 pkg syscall (freebsd-amd64-cgo), const AF_HYLINK = 15 pkg syscall (freebsd-amd64-cgo), const AF_IEEE80211 = 37 pkg syscall (freebsd-amd64-cgo), const AF_IMPLINK = 3 pkg syscall (freebsd-amd64-cgo), const AF_INET6 = 28 pkg syscall (freebsd-amd64-cgo), const AF_IPX = 23 pkg syscall (freebsd-amd64-cgo), const AF_ISDN = 26 pkg syscall (freebsd-amd64-cgo), const AF_ISO = 7 pkg syscall (freebsd-amd64-cgo), const AF_LAT = 14 pkg syscall (freebsd-amd64-cgo), const AF_LINK = 18 pkg syscall (freebsd-amd64-cgo), const AF_LOCAL = 1 pkg syscall (freebsd-amd64-cgo), const AF_MAX = 38 pkg syscall (freebsd-amd64-cgo), const AF_NATM = 29 pkg syscall (freebsd-amd64-cgo), const AF_NETBIOS = 6 pkg syscall (freebsd-amd64-cgo), const AF_NETGRAPH = 32 pkg syscall (freebsd-amd64-cgo), const AF_OSI = 7 pkg syscall (freebsd-amd64-cgo), const AF_PUP = 4 pkg syscall (freebsd-amd64-cgo), const AF_ROUTE = 17 pkg syscall (freebsd-amd64-cgo), const AF_SCLUSTER = 34 pkg syscall (freebsd-amd64-cgo), const AF_SIP = 24 pkg syscall (freebsd-amd64-cgo), const AF_SLOW = 33 pkg syscall (freebsd-amd64-cgo), const AF_SNA = 11 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR00 = 39 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR01 = 41 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR02 = 43 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR03 = 45 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR04 = 47 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR05 = 49 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR06 = 51 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR07 = 53 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR08 = 55 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR09 = 57 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR10 = 59 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR11 = 61 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR12 = 63 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR13 = 65 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR14 = 67 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR15 = 69 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR16 = 71 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR17 = 73 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR18 = 75 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR19 = 77 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR20 = 79 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR21 = 81 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR22 = 83 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR23 = 85 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR24 = 87 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR25 = 89 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR26 = 91 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR27 = 93 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR28 = 95 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR29 = 97 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR30 = 99 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR31 = 101 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR32 = 103 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR33 = 105 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR34 = 107 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR35 = 109 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR36 = 111 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR37 = 113 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR38 = 115 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR39 = 117 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR40 = 119 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR41 = 121 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR42 = 123 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR43 = 125 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR44 = 127 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR45 = 129 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR46 = 131 pkg syscall (freebsd-amd64-cgo), const AF_VENDOR47 = 133 pkg syscall (freebsd-amd64-cgo), const B0 = 0 pkg syscall (freebsd-amd64-cgo), const B110 = 110 pkg syscall (freebsd-amd64-cgo), const B115200 = 115200 pkg syscall (freebsd-amd64-cgo), const B1200 = 1200 pkg syscall (freebsd-amd64-cgo), const B134 = 134 pkg syscall (freebsd-amd64-cgo), const B14400 = 14400 pkg syscall (freebsd-amd64-cgo), const B150 = 150 pkg syscall (freebsd-amd64-cgo), const B1800 = 1800 pkg syscall (freebsd-amd64-cgo), const B19200 = 19200 pkg syscall (freebsd-amd64-cgo), const B200 = 200 pkg syscall (freebsd-amd64-cgo), const B230400 = 230400 pkg syscall (freebsd-amd64-cgo), const B2400 = 2400 pkg syscall (freebsd-amd64-cgo), const B28800 = 28800 pkg syscall (freebsd-amd64-cgo), const B300 = 300 pkg syscall (freebsd-amd64-cgo), const B38400 = 38400 pkg syscall (freebsd-amd64-cgo), const B460800 = 460800 pkg syscall (freebsd-amd64-cgo), const B4800 = 4800 pkg syscall (freebsd-amd64-cgo), const B50 = 50 pkg syscall (freebsd-amd64-cgo), const B57600 = 57600 pkg syscall (freebsd-amd64-cgo), const B600 = 600 pkg syscall (freebsd-amd64-cgo), const B7200 = 7200 pkg syscall (freebsd-amd64-cgo), const B75 = 75 pkg syscall (freebsd-amd64-cgo), const B76800 = 76800 pkg syscall (freebsd-amd64-cgo), const B921600 = 921600 pkg syscall (freebsd-amd64-cgo), const B9600 = 9600 pkg syscall (freebsd-amd64-cgo), const BIOCFEEDBACK = 2147762812 pkg syscall (freebsd-amd64-cgo), const BIOCFLUSH = 536887912 pkg syscall (freebsd-amd64-cgo), const BIOCGBLEN = 1074020966 pkg syscall (freebsd-amd64-cgo), const BIOCGDIRECTION = 1074020982 pkg syscall (freebsd-amd64-cgo), const BIOCGDLT = 1074020970 pkg syscall (freebsd-amd64-cgo), const BIOCGDLTLIST = 3222291065 pkg syscall (freebsd-amd64-cgo), const BIOCGETBUFMODE = 1074020989 pkg syscall (freebsd-amd64-cgo), const BIOCGETIF = 1075855979 pkg syscall (freebsd-amd64-cgo), const BIOCGETZMAX = 1074283135 pkg syscall (freebsd-amd64-cgo), const BIOCGHDRCMPLT = 1074020980 pkg syscall (freebsd-amd64-cgo), const BIOCGRSIG = 1074020978 pkg syscall (freebsd-amd64-cgo), const BIOCGRTIMEOUT = 1074807406 pkg syscall (freebsd-amd64-cgo), const BIOCGSEESENT = 1074020982 pkg syscall (freebsd-amd64-cgo), const BIOCGSTATS = 1074283119 pkg syscall (freebsd-amd64-cgo), const BIOCGTSTAMP = 1074020995 pkg syscall (freebsd-amd64-cgo), const BIOCIMMEDIATE = 2147762800 pkg syscall (freebsd-amd64-cgo), const BIOCLOCK = 536887930 pkg syscall (freebsd-amd64-cgo), const BIOCPROMISC = 536887913 pkg syscall (freebsd-amd64-cgo), const BIOCROTZBUF = 1075331712 pkg syscall (freebsd-amd64-cgo), const BIOCSBLEN = 3221504614 pkg syscall (freebsd-amd64-cgo), const BIOCSDIRECTION = 2147762807 pkg syscall (freebsd-amd64-cgo), const BIOCSDLT = 2147762808 pkg syscall (freebsd-amd64-cgo), const BIOCSETBUFMODE = 2147762814 pkg syscall (freebsd-amd64-cgo), const BIOCSETF = 2148549223 pkg syscall (freebsd-amd64-cgo), const BIOCSETFNR = 2148549250 pkg syscall (freebsd-amd64-cgo), const BIOCSETIF = 2149597804 pkg syscall (freebsd-amd64-cgo), const BIOCSETWF = 2148549243 pkg syscall (freebsd-amd64-cgo), const BIOCSETZBUF = 2149073537 pkg syscall (freebsd-amd64-cgo), const BIOCSHDRCMPLT = 2147762805 pkg syscall (freebsd-amd64-cgo), const BIOCSRSIG = 2147762803 pkg syscall (freebsd-amd64-cgo), const BIOCSRTIMEOUT = 2148549229 pkg syscall (freebsd-amd64-cgo), const BIOCSSEESENT = 2147762807 pkg syscall (freebsd-amd64-cgo), const BIOCSTSTAMP = 2147762820 pkg syscall (freebsd-amd64-cgo), const BIOCVERSION = 1074020977 pkg syscall (freebsd-amd64-cgo), const BPF_A = 16 pkg syscall (freebsd-amd64-cgo), const BPF_ABS = 32 pkg syscall (freebsd-amd64-cgo), const BPF_ADD = 0 pkg syscall (freebsd-amd64-cgo), const BPF_ALIGNMENT = 8 pkg syscall (freebsd-amd64-cgo), const BPF_ALU = 4 pkg syscall (freebsd-amd64-cgo), const BPF_AND = 80 pkg syscall (freebsd-amd64-cgo), const BPF_B = 16 pkg syscall (freebsd-amd64-cgo), const BPF_BUFMODE_BUFFER = 1 pkg syscall (freebsd-amd64-cgo), const BPF_BUFMODE_ZBUF = 2 pkg syscall (freebsd-amd64-cgo), const BPF_DIV = 48 pkg syscall (freebsd-amd64-cgo), const BPF_H = 8 pkg syscall (freebsd-amd64-cgo), const BPF_IMM = 0 pkg syscall (freebsd-amd64-cgo), const BPF_IND = 64 pkg syscall (freebsd-amd64-cgo), const BPF_JA = 0 pkg syscall (freebsd-amd64-cgo), const BPF_JEQ = 16 pkg syscall (freebsd-amd64-cgo), const BPF_JGE = 48 pkg syscall (freebsd-amd64-cgo), const BPF_JGT = 32 pkg syscall (freebsd-amd64-cgo), const BPF_JMP = 5 pkg syscall (freebsd-amd64-cgo), const BPF_JSET = 64 pkg syscall (freebsd-amd64-cgo), const BPF_K = 0 pkg syscall (freebsd-amd64-cgo), const BPF_LD = 0 pkg syscall (freebsd-amd64-cgo), const BPF_LDX = 1 pkg syscall (freebsd-amd64-cgo), const BPF_LEN = 128 pkg syscall (freebsd-amd64-cgo), const BPF_LSH = 96 pkg syscall (freebsd-amd64-cgo), const BPF_MAJOR_VERSION = 1 pkg syscall (freebsd-amd64-cgo), const BPF_MAXBUFSIZE = 524288 pkg syscall (freebsd-amd64-cgo), const BPF_MAXINSNS = 512 pkg syscall (freebsd-amd64-cgo), const BPF_MEM = 96 pkg syscall (freebsd-amd64-cgo), const BPF_MEMWORDS = 16 pkg syscall (freebsd-amd64-cgo), const BPF_MINBUFSIZE = 32 pkg syscall (freebsd-amd64-cgo), const BPF_MINOR_VERSION = 1 pkg syscall (freebsd-amd64-cgo), const BPF_MISC = 7 pkg syscall (freebsd-amd64-cgo), const BPF_MSH = 160 pkg syscall (freebsd-amd64-cgo), const BPF_MUL = 32 pkg syscall (freebsd-amd64-cgo), const BPF_NEG = 128 pkg syscall (freebsd-amd64-cgo), const BPF_OR = 64 pkg syscall (freebsd-amd64-cgo), const BPF_RELEASE = 199606 pkg syscall (freebsd-amd64-cgo), const BPF_RET = 6 pkg syscall (freebsd-amd64-cgo), const BPF_RSH = 112 pkg syscall (freebsd-amd64-cgo), const BPF_ST = 2 pkg syscall (freebsd-amd64-cgo), const BPF_STX = 3 pkg syscall (freebsd-amd64-cgo), const BPF_SUB = 16 pkg syscall (freebsd-amd64-cgo), const BPF_TAX = 0 pkg syscall (freebsd-amd64-cgo), const BPF_TXA = 128 pkg syscall (freebsd-amd64-cgo), const BPF_T_BINTIME = 2 pkg syscall (freebsd-amd64-cgo), const BPF_T_BINTIME_FAST = 258 pkg syscall (freebsd-amd64-cgo), const BPF_T_BINTIME_MONOTONIC = 514 pkg syscall (freebsd-amd64-cgo), const BPF_T_BINTIME_MONOTONIC_FAST = 770 pkg syscall (freebsd-amd64-cgo), const BPF_T_FAST = 256 pkg syscall (freebsd-amd64-cgo), const BPF_T_FLAG_MASK = 768 pkg syscall (freebsd-amd64-cgo), const BPF_T_FORMAT_MASK = 3 pkg syscall (freebsd-amd64-cgo), const BPF_T_MICROTIME = 0 pkg syscall (freebsd-amd64-cgo), const BPF_T_MICROTIME_FAST = 256 pkg syscall (freebsd-amd64-cgo), const BPF_T_MICROTIME_MONOTONIC = 512 pkg syscall (freebsd-amd64-cgo), const BPF_T_MICROTIME_MONOTONIC_FAST = 768 pkg syscall (freebsd-amd64-cgo), const BPF_T_MONOTONIC = 512 pkg syscall (freebsd-amd64-cgo), const BPF_T_MONOTONIC_FAST = 768 pkg syscall (freebsd-amd64-cgo), const BPF_T_NANOTIME = 1 pkg syscall (freebsd-amd64-cgo), const BPF_T_NANOTIME_FAST = 257 pkg syscall (freebsd-amd64-cgo), const BPF_T_NANOTIME_MONOTONIC = 513 pkg syscall (freebsd-amd64-cgo), const BPF_T_NANOTIME_MONOTONIC_FAST = 769 pkg syscall (freebsd-amd64-cgo), const BPF_T_NONE = 3 pkg syscall (freebsd-amd64-cgo), const BPF_T_NORMAL = 0 pkg syscall (freebsd-amd64-cgo), const BPF_W = 0 pkg syscall (freebsd-amd64-cgo), const BPF_X = 8 pkg syscall (freebsd-amd64-cgo), const BRKINT = 2 pkg syscall (freebsd-amd64-cgo), const CFLUSH = 15 pkg syscall (freebsd-amd64-cgo), const CLOCAL = 32768 pkg syscall (freebsd-amd64-cgo), const CREAD = 2048 pkg syscall (freebsd-amd64-cgo), const CS5 = 0 pkg syscall (freebsd-amd64-cgo), const CS6 = 256 pkg syscall (freebsd-amd64-cgo), const CS7 = 512 pkg syscall (freebsd-amd64-cgo), const CS8 = 768 pkg syscall (freebsd-amd64-cgo), const CSIZE = 768 pkg syscall (freebsd-amd64-cgo), const CSTART = 17 pkg syscall (freebsd-amd64-cgo), const CSTATUS = 20 pkg syscall (freebsd-amd64-cgo), const CSTOP = 19 pkg syscall (freebsd-amd64-cgo), const CSTOPB = 1024 pkg syscall (freebsd-amd64-cgo), const CSUSP = 26 pkg syscall (freebsd-amd64-cgo), const CTL_MAXNAME = 24 pkg syscall (freebsd-amd64-cgo), const CTL_NET = 4 pkg syscall (freebsd-amd64-cgo), const DLT_A429 = 184 pkg syscall (freebsd-amd64-cgo), const DLT_A653_ICM = 185 pkg syscall (freebsd-amd64-cgo), const DLT_AIRONET_HEADER = 120 pkg syscall (freebsd-amd64-cgo), const DLT_AOS = 222 pkg syscall (freebsd-amd64-cgo), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (freebsd-amd64-cgo), const DLT_ARCNET = 7 pkg syscall (freebsd-amd64-cgo), const DLT_ARCNET_LINUX = 129 pkg syscall (freebsd-amd64-cgo), const DLT_ATM_CLIP = 19 pkg syscall (freebsd-amd64-cgo), const DLT_ATM_RFC1483 = 11 pkg syscall (freebsd-amd64-cgo), const DLT_AURORA = 126 pkg syscall (freebsd-amd64-cgo), const DLT_AX25 = 3 pkg syscall (freebsd-amd64-cgo), const DLT_AX25_KISS = 202 pkg syscall (freebsd-amd64-cgo), const DLT_BACNET_MS_TP = 165 pkg syscall (freebsd-amd64-cgo), const DLT_BLUETOOTH_HCI_H4 = 187 pkg syscall (freebsd-amd64-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 pkg syscall (freebsd-amd64-cgo), const DLT_CAN20B = 190 pkg syscall (freebsd-amd64-cgo), const DLT_CAN_SOCKETCAN = 227 pkg syscall (freebsd-amd64-cgo), const DLT_CHAOS = 5 pkg syscall (freebsd-amd64-cgo), const DLT_CHDLC = 104 pkg syscall (freebsd-amd64-cgo), const DLT_CISCO_IOS = 118 pkg syscall (freebsd-amd64-cgo), const DLT_C_HDLC = 104 pkg syscall (freebsd-amd64-cgo), const DLT_C_HDLC_WITH_DIR = 205 pkg syscall (freebsd-amd64-cgo), const DLT_DBUS = 231 pkg syscall (freebsd-amd64-cgo), const DLT_DECT = 221 pkg syscall (freebsd-amd64-cgo), const DLT_DOCSIS = 143 pkg syscall (freebsd-amd64-cgo), const DLT_DVB_CI = 235 pkg syscall (freebsd-amd64-cgo), const DLT_ECONET = 115 pkg syscall (freebsd-amd64-cgo), const DLT_EN10MB = 1 pkg syscall (freebsd-amd64-cgo), const DLT_EN3MB = 2 pkg syscall (freebsd-amd64-cgo), const DLT_ENC = 109 pkg syscall (freebsd-amd64-cgo), const DLT_ERF = 197 pkg syscall (freebsd-amd64-cgo), const DLT_ERF_ETH = 175 pkg syscall (freebsd-amd64-cgo), const DLT_ERF_POS = 176 pkg syscall (freebsd-amd64-cgo), const DLT_FC_2 = 224 pkg syscall (freebsd-amd64-cgo), const DLT_FC_2_WITH_FRAME_DELIMS = 225 pkg syscall (freebsd-amd64-cgo), const DLT_FDDI = 10 pkg syscall (freebsd-amd64-cgo), const DLT_FLEXRAY = 210 pkg syscall (freebsd-amd64-cgo), const DLT_FRELAY = 107 pkg syscall (freebsd-amd64-cgo), const DLT_FRELAY_WITH_DIR = 206 pkg syscall (freebsd-amd64-cgo), const DLT_GCOM_SERIAL = 173 pkg syscall (freebsd-amd64-cgo), const DLT_GCOM_T1E1 = 172 pkg syscall (freebsd-amd64-cgo), const DLT_GPF_F = 171 pkg syscall (freebsd-amd64-cgo), const DLT_GPF_T = 170 pkg syscall (freebsd-amd64-cgo), const DLT_GPRS_LLC = 169 pkg syscall (freebsd-amd64-cgo), const DLT_GSMTAP_ABIS = 218 pkg syscall (freebsd-amd64-cgo), const DLT_GSMTAP_UM = 217 pkg syscall (freebsd-amd64-cgo), const DLT_HHDLC = 121 pkg syscall (freebsd-amd64-cgo), const DLT_IBM_SN = 146 pkg syscall (freebsd-amd64-cgo), const DLT_IBM_SP = 145 pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802 = 6 pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_11 = 105 pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_11_RADIO = 127 pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_15_4 = 195 pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_15_4_LINUX = 191 pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_15_4_NOFCS = 230 pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_15_4_NONASK_PHY = 215 pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_16_MAC_CPS = 188 pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 pkg syscall (freebsd-amd64-cgo), const DLT_IPFILTER = 116 pkg syscall (freebsd-amd64-cgo), const DLT_IPMB = 199 pkg syscall (freebsd-amd64-cgo), const DLT_IPMB_LINUX = 209 pkg syscall (freebsd-amd64-cgo), const DLT_IPNET = 226 pkg syscall (freebsd-amd64-cgo), const DLT_IPOIB = 242 pkg syscall (freebsd-amd64-cgo), const DLT_IPV4 = 228 pkg syscall (freebsd-amd64-cgo), const DLT_IPV6 = 229 pkg syscall (freebsd-amd64-cgo), const DLT_IP_OVER_FC = 122 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_ATM1 = 137 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_ATM2 = 135 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_ATM_CEMIC = 238 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_CHDLC = 181 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_ES = 132 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_ETHER = 178 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_FIBRECHANNEL = 234 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_FRELAY = 180 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_GGSN = 133 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_ISM = 194 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_MFR = 134 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_MLFR = 131 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_MLPPP = 130 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_MONITOR = 164 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_PIC_PEER = 174 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_PPP = 179 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_PPPOE = 167 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_PPPOE_ATM = 168 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_SERVICES = 136 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_SRX_E2E = 233 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_ST = 200 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_VP = 183 pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_VS = 232 pkg syscall (freebsd-amd64-cgo), const DLT_LAPB_WITH_DIR = 207 pkg syscall (freebsd-amd64-cgo), const DLT_LAPD = 203 pkg syscall (freebsd-amd64-cgo), const DLT_LIN = 212 pkg syscall (freebsd-amd64-cgo), const DLT_LINUX_EVDEV = 216 pkg syscall (freebsd-amd64-cgo), const DLT_LINUX_IRDA = 144 pkg syscall (freebsd-amd64-cgo), const DLT_LINUX_LAPD = 177 pkg syscall (freebsd-amd64-cgo), const DLT_LINUX_PPP_WITHDIRECTION = 166 pkg syscall (freebsd-amd64-cgo), const DLT_LINUX_SLL = 113 pkg syscall (freebsd-amd64-cgo), const DLT_LOOP = 108 pkg syscall (freebsd-amd64-cgo), const DLT_LTALK = 114 pkg syscall (freebsd-amd64-cgo), const DLT_MATCHING_MAX = 242 pkg syscall (freebsd-amd64-cgo), const DLT_MATCHING_MIN = 104 pkg syscall (freebsd-amd64-cgo), const DLT_MFR = 182 pkg syscall (freebsd-amd64-cgo), const DLT_MOST = 211 pkg syscall (freebsd-amd64-cgo), const DLT_MPLS = 219 pkg syscall (freebsd-amd64-cgo), const DLT_MTP2 = 140 pkg syscall (freebsd-amd64-cgo), const DLT_MTP2_WITH_PHDR = 139 pkg syscall (freebsd-amd64-cgo), const DLT_MTP3 = 141 pkg syscall (freebsd-amd64-cgo), const DLT_MUX27010 = 236 pkg syscall (freebsd-amd64-cgo), const DLT_NETANALYZER = 240 pkg syscall (freebsd-amd64-cgo), const DLT_NETANALYZER_TRANSPARENT = 241 pkg syscall (freebsd-amd64-cgo), const DLT_NFLOG = 239 pkg syscall (freebsd-amd64-cgo), const DLT_NULL = 0 pkg syscall (freebsd-amd64-cgo), const DLT_PCI_EXP = 125 pkg syscall (freebsd-amd64-cgo), const DLT_PFLOG = 117 pkg syscall (freebsd-amd64-cgo), const DLT_PFSYNC = 121 pkg syscall (freebsd-amd64-cgo), const DLT_PPI = 192 pkg syscall (freebsd-amd64-cgo), const DLT_PPP = 9 pkg syscall (freebsd-amd64-cgo), const DLT_PPP_BSDOS = 16 pkg syscall (freebsd-amd64-cgo), const DLT_PPP_ETHER = 51 pkg syscall (freebsd-amd64-cgo), const DLT_PPP_PPPD = 166 pkg syscall (freebsd-amd64-cgo), const DLT_PPP_SERIAL = 50 pkg syscall (freebsd-amd64-cgo), const DLT_PPP_WITH_DIR = 204 pkg syscall (freebsd-amd64-cgo), const DLT_PPP_WITH_DIRECTION = 166 pkg syscall (freebsd-amd64-cgo), const DLT_PRISM_HEADER = 119 pkg syscall (freebsd-amd64-cgo), const DLT_PRONET = 4 pkg syscall (freebsd-amd64-cgo), const DLT_RAIF1 = 198 pkg syscall (freebsd-amd64-cgo), const DLT_RAW = 12 pkg syscall (freebsd-amd64-cgo), const DLT_RIO = 124 pkg syscall (freebsd-amd64-cgo), const DLT_SCCP = 142 pkg syscall (freebsd-amd64-cgo), const DLT_SITA = 196 pkg syscall (freebsd-amd64-cgo), const DLT_SLIP = 8 pkg syscall (freebsd-amd64-cgo), const DLT_SLIP_BSDOS = 15 pkg syscall (freebsd-amd64-cgo), const DLT_STANAG_5066_D_PDU = 237 pkg syscall (freebsd-amd64-cgo), const DLT_SUNATM = 123 pkg syscall (freebsd-amd64-cgo), const DLT_SYMANTEC_FIREWALL = 99 pkg syscall (freebsd-amd64-cgo), const DLT_TZSP = 128 pkg syscall (freebsd-amd64-cgo), const DLT_USB = 186 pkg syscall (freebsd-amd64-cgo), const DLT_USB_LINUX = 189 pkg syscall (freebsd-amd64-cgo), const DLT_USB_LINUX_MMAPPED = 220 pkg syscall (freebsd-amd64-cgo), const DLT_USER0 = 147 pkg syscall (freebsd-amd64-cgo), const DLT_USER1 = 148 pkg syscall (freebsd-amd64-cgo), const DLT_USER10 = 157 pkg syscall (freebsd-amd64-cgo), const DLT_USER11 = 158 pkg syscall (freebsd-amd64-cgo), const DLT_USER12 = 159 pkg syscall (freebsd-amd64-cgo), const DLT_USER13 = 160 pkg syscall (freebsd-amd64-cgo), const DLT_USER14 = 161 pkg syscall (freebsd-amd64-cgo), const DLT_USER15 = 162 pkg syscall (freebsd-amd64-cgo), const DLT_USER2 = 149 pkg syscall (freebsd-amd64-cgo), const DLT_USER3 = 150 pkg syscall (freebsd-amd64-cgo), const DLT_USER4 = 151 pkg syscall (freebsd-amd64-cgo), const DLT_USER5 = 152 pkg syscall (freebsd-amd64-cgo), const DLT_USER6 = 153 pkg syscall (freebsd-amd64-cgo), const DLT_USER7 = 154 pkg syscall (freebsd-amd64-cgo), const DLT_USER8 = 155 pkg syscall (freebsd-amd64-cgo), const DLT_USER9 = 156 pkg syscall (freebsd-amd64-cgo), const DLT_WIHART = 223 pkg syscall (freebsd-amd64-cgo), const DLT_X2E_SERIAL = 213 pkg syscall (freebsd-amd64-cgo), const DLT_X2E_XORAYA = 214 pkg syscall (freebsd-amd64-cgo), const DT_BLK = 6 pkg syscall (freebsd-amd64-cgo), const DT_CHR = 2 pkg syscall (freebsd-amd64-cgo), const DT_DIR = 4 pkg syscall (freebsd-amd64-cgo), const DT_FIFO = 1 pkg syscall (freebsd-amd64-cgo), const DT_LNK = 10 pkg syscall (freebsd-amd64-cgo), const DT_REG = 8 pkg syscall (freebsd-amd64-cgo), const DT_SOCK = 12 pkg syscall (freebsd-amd64-cgo), const DT_UNKNOWN = 0 pkg syscall (freebsd-amd64-cgo), const DT_WHT = 14 pkg syscall (freebsd-amd64-cgo), const E2BIG = 7 pkg syscall (freebsd-amd64-cgo), const EACCES = 13 pkg syscall (freebsd-amd64-cgo), const EADDRINUSE = 48 pkg syscall (freebsd-amd64-cgo), const EADDRNOTAVAIL = 49 pkg syscall (freebsd-amd64-cgo), const EAFNOSUPPORT = 47 pkg syscall (freebsd-amd64-cgo), const EAGAIN = 35 pkg syscall (freebsd-amd64-cgo), const EALREADY = 37 pkg syscall (freebsd-amd64-cgo), const EAUTH = 80 pkg syscall (freebsd-amd64-cgo), const EBADF = 9 pkg syscall (freebsd-amd64-cgo), const EBADMSG = 89 pkg syscall (freebsd-amd64-cgo), const EBADRPC = 72 pkg syscall (freebsd-amd64-cgo), const EBUSY = 16 pkg syscall (freebsd-amd64-cgo), const ECANCELED = 85 pkg syscall (freebsd-amd64-cgo), const ECAPMODE = 94 pkg syscall (freebsd-amd64-cgo), const ECHILD = 10 pkg syscall (freebsd-amd64-cgo), const ECHO = 8 pkg syscall (freebsd-amd64-cgo), const ECHOCTL = 64 pkg syscall (freebsd-amd64-cgo), const ECHOE = 2 pkg syscall (freebsd-amd64-cgo), const ECHOK = 4 pkg syscall (freebsd-amd64-cgo), const ECHOKE = 1 pkg syscall (freebsd-amd64-cgo), const ECHONL = 16 pkg syscall (freebsd-amd64-cgo), const ECHOPRT = 32 pkg syscall (freebsd-amd64-cgo), const ECONNABORTED = 53 pkg syscall (freebsd-amd64-cgo), const ECONNREFUSED = 61 pkg syscall (freebsd-amd64-cgo), const ECONNRESET = 54 pkg syscall (freebsd-amd64-cgo), const EDEADLK = 11 pkg syscall (freebsd-amd64-cgo), const EDESTADDRREQ = 39 pkg syscall (freebsd-amd64-cgo), const EDOM = 33 pkg syscall (freebsd-amd64-cgo), const EDOOFUS = 88 pkg syscall (freebsd-amd64-cgo), const EDQUOT = 69 pkg syscall (freebsd-amd64-cgo), const EEXIST = 17 pkg syscall (freebsd-amd64-cgo), const EFAULT = 14 pkg syscall (freebsd-amd64-cgo), const EFBIG = 27 pkg syscall (freebsd-amd64-cgo), const EFTYPE = 79 pkg syscall (freebsd-amd64-cgo), const EHOSTDOWN = 64 pkg syscall (freebsd-amd64-cgo), const EHOSTUNREACH = 65 pkg syscall (freebsd-amd64-cgo), const EIDRM = 82 pkg syscall (freebsd-amd64-cgo), const EILSEQ = 86 pkg syscall (freebsd-amd64-cgo), const EINPROGRESS = 36 pkg syscall (freebsd-amd64-cgo), const EINTR = 4 pkg syscall (freebsd-amd64-cgo), const EINVAL = 22 pkg syscall (freebsd-amd64-cgo), const EIO = 5 pkg syscall (freebsd-amd64-cgo), const EISCONN = 56 pkg syscall (freebsd-amd64-cgo), const EISDIR = 21 pkg syscall (freebsd-amd64-cgo), const ELAST = 94 pkg syscall (freebsd-amd64-cgo), const ELOOP = 62 pkg syscall (freebsd-amd64-cgo), const EMFILE = 24 pkg syscall (freebsd-amd64-cgo), const EMLINK = 31 pkg syscall (freebsd-amd64-cgo), const EMSGSIZE = 40 pkg syscall (freebsd-amd64-cgo), const EMULTIHOP = 90 pkg syscall (freebsd-amd64-cgo), const ENAMETOOLONG = 63 pkg syscall (freebsd-amd64-cgo), const ENEEDAUTH = 81 pkg syscall (freebsd-amd64-cgo), const ENETDOWN = 50 pkg syscall (freebsd-amd64-cgo), const ENETRESET = 52 pkg syscall (freebsd-amd64-cgo), const ENETUNREACH = 51 pkg syscall (freebsd-amd64-cgo), const ENFILE = 23 pkg syscall (freebsd-amd64-cgo), const ENOATTR = 87 pkg syscall (freebsd-amd64-cgo), const ENOBUFS = 55 pkg syscall (freebsd-amd64-cgo), const ENODEV = 19 pkg syscall (freebsd-amd64-cgo), const ENOEXEC = 8 pkg syscall (freebsd-amd64-cgo), const ENOLCK = 77 pkg syscall (freebsd-amd64-cgo), const ENOLINK = 91 pkg syscall (freebsd-amd64-cgo), const ENOMEM = 12 pkg syscall (freebsd-amd64-cgo), const ENOMSG = 83 pkg syscall (freebsd-amd64-cgo), const ENOPROTOOPT = 42 pkg syscall (freebsd-amd64-cgo), const ENOSPC = 28 pkg syscall (freebsd-amd64-cgo), const ENOSYS = 78 pkg syscall (freebsd-amd64-cgo), const ENOTBLK = 15 pkg syscall (freebsd-amd64-cgo), const ENOTCAPABLE = 93 pkg syscall (freebsd-amd64-cgo), const ENOTCONN = 57 pkg syscall (freebsd-amd64-cgo), const ENOTDIR = 20 pkg syscall (freebsd-amd64-cgo), const ENOTEMPTY = 66 pkg syscall (freebsd-amd64-cgo), const ENOTSOCK = 38 pkg syscall (freebsd-amd64-cgo), const ENOTSUP = 45 pkg syscall (freebsd-amd64-cgo), const ENOTTY = 25 pkg syscall (freebsd-amd64-cgo), const ENXIO = 6 pkg syscall (freebsd-amd64-cgo), const EOPNOTSUPP = 45 pkg syscall (freebsd-amd64-cgo), const EOVERFLOW = 84 pkg syscall (freebsd-amd64-cgo), const EPERM = 1 pkg syscall (freebsd-amd64-cgo), const EPFNOSUPPORT = 46 pkg syscall (freebsd-amd64-cgo), const EPIPE = 32 pkg syscall (freebsd-amd64-cgo), const EPROCLIM = 67 pkg syscall (freebsd-amd64-cgo), const EPROCUNAVAIL = 76 pkg syscall (freebsd-amd64-cgo), const EPROGMISMATCH = 75 pkg syscall (freebsd-amd64-cgo), const EPROGUNAVAIL = 74 pkg syscall (freebsd-amd64-cgo), const EPROTO = 92 pkg syscall (freebsd-amd64-cgo), const EPROTONOSUPPORT = 43 pkg syscall (freebsd-amd64-cgo), const EPROTOTYPE = 41 pkg syscall (freebsd-amd64-cgo), const ERANGE = 34 pkg syscall (freebsd-amd64-cgo), const EREMOTE = 71 pkg syscall (freebsd-amd64-cgo), const EROFS = 30 pkg syscall (freebsd-amd64-cgo), const ERPCMISMATCH = 73 pkg syscall (freebsd-amd64-cgo), const ESHUTDOWN = 58 pkg syscall (freebsd-amd64-cgo), const ESOCKTNOSUPPORT = 44 pkg syscall (freebsd-amd64-cgo), const ESPIPE = 29 pkg syscall (freebsd-amd64-cgo), const ESRCH = 3 pkg syscall (freebsd-amd64-cgo), const ESTALE = 70 pkg syscall (freebsd-amd64-cgo), const ETIMEDOUT = 60 pkg syscall (freebsd-amd64-cgo), const ETOOMANYREFS = 59 pkg syscall (freebsd-amd64-cgo), const ETXTBSY = 26 pkg syscall (freebsd-amd64-cgo), const EUSERS = 68 pkg syscall (freebsd-amd64-cgo), const EVFILT_AIO = -3 pkg syscall (freebsd-amd64-cgo), const EVFILT_FS = -9 pkg syscall (freebsd-amd64-cgo), const EVFILT_LIO = -10 pkg syscall (freebsd-amd64-cgo), const EVFILT_PROC = -5 pkg syscall (freebsd-amd64-cgo), const EVFILT_READ = -1 pkg syscall (freebsd-amd64-cgo), const EVFILT_SIGNAL = -6 pkg syscall (freebsd-amd64-cgo), const EVFILT_SYSCOUNT = 11 pkg syscall (freebsd-amd64-cgo), const EVFILT_TIMER = -7 pkg syscall (freebsd-amd64-cgo), const EVFILT_USER = -11 pkg syscall (freebsd-amd64-cgo), const EVFILT_VNODE = -4 pkg syscall (freebsd-amd64-cgo), const EVFILT_WRITE = -2 pkg syscall (freebsd-amd64-cgo), const EV_ADD = 1 pkg syscall (freebsd-amd64-cgo), const EV_CLEAR = 32 pkg syscall (freebsd-amd64-cgo), const EV_DELETE = 2 pkg syscall (freebsd-amd64-cgo), const EV_DISABLE = 8 pkg syscall (freebsd-amd64-cgo), const EV_DISPATCH = 128 pkg syscall (freebsd-amd64-cgo), const EV_ENABLE = 4 pkg syscall (freebsd-amd64-cgo), const EV_EOF = 32768 pkg syscall (freebsd-amd64-cgo), const EV_ERROR = 16384 pkg syscall (freebsd-amd64-cgo), const EV_FLAG1 = 8192 pkg syscall (freebsd-amd64-cgo), const EV_ONESHOT = 16 pkg syscall (freebsd-amd64-cgo), const EV_RECEIPT = 64 pkg syscall (freebsd-amd64-cgo), const EV_SYSFLAGS = 61440 pkg syscall (freebsd-amd64-cgo), const EWOULDBLOCK = 35 pkg syscall (freebsd-amd64-cgo), const EXDEV = 18 pkg syscall (freebsd-amd64-cgo), const EXTA = 19200 pkg syscall (freebsd-amd64-cgo), const EXTB = 38400 pkg syscall (freebsd-amd64-cgo), const EXTPROC = 2048 pkg syscall (freebsd-amd64-cgo), const FD_CLOEXEC = 1 pkg syscall (freebsd-amd64-cgo), const FD_SETSIZE = 1024 pkg syscall (freebsd-amd64-cgo), const FLUSHO = 8388608 pkg syscall (freebsd-amd64-cgo), const F_CANCEL = 5 pkg syscall (freebsd-amd64-cgo), const F_DUP2FD = 10 pkg syscall (freebsd-amd64-cgo), const F_DUPFD = 0 pkg syscall (freebsd-amd64-cgo), const F_GETFD = 1 pkg syscall (freebsd-amd64-cgo), const F_GETFL = 3 pkg syscall (freebsd-amd64-cgo), const F_GETLK = 11 pkg syscall (freebsd-amd64-cgo), const F_GETOWN = 5 pkg syscall (freebsd-amd64-cgo), const F_OGETLK = 7 pkg syscall (freebsd-amd64-cgo), const F_OK = 0 pkg syscall (freebsd-amd64-cgo), const F_OSETLK = 8 pkg syscall (freebsd-amd64-cgo), const F_OSETLKW = 9 pkg syscall (freebsd-amd64-cgo), const F_RDAHEAD = 16 pkg syscall (freebsd-amd64-cgo), const F_RDLCK = 1 pkg syscall (freebsd-amd64-cgo), const F_READAHEAD = 15 pkg syscall (freebsd-amd64-cgo), const F_SETFD = 2 pkg syscall (freebsd-amd64-cgo), const F_SETFL = 4 pkg syscall (freebsd-amd64-cgo), const F_SETLK = 12 pkg syscall (freebsd-amd64-cgo), const F_SETLKW = 13 pkg syscall (freebsd-amd64-cgo), const F_SETLK_REMOTE = 14 pkg syscall (freebsd-amd64-cgo), const F_SETOWN = 6 pkg syscall (freebsd-amd64-cgo), const F_UNLCK = 2 pkg syscall (freebsd-amd64-cgo), const F_UNLCKSYS = 4 pkg syscall (freebsd-amd64-cgo), const F_WRLCK = 3 pkg syscall (freebsd-amd64-cgo), const HUPCL = 16384 pkg syscall (freebsd-amd64-cgo), const ICANON = 256 pkg syscall (freebsd-amd64-cgo), const ICRNL = 256 pkg syscall (freebsd-amd64-cgo), const IEXTEN = 1024 pkg syscall (freebsd-amd64-cgo), const IFAN_ARRIVAL = 0 pkg syscall (freebsd-amd64-cgo), const IFAN_DEPARTURE = 1 pkg syscall (freebsd-amd64-cgo), const IFF_ALLMULTI = 512 pkg syscall (freebsd-amd64-cgo), const IFF_ALTPHYS = 16384 pkg syscall (freebsd-amd64-cgo), const IFF_CANTCHANGE = 2199410 pkg syscall (freebsd-amd64-cgo), const IFF_CANTCONFIG = 65536 pkg syscall (freebsd-amd64-cgo), const IFF_DEBUG = 4 pkg syscall (freebsd-amd64-cgo), const IFF_DRV_OACTIVE = 1024 pkg syscall (freebsd-amd64-cgo), const IFF_DRV_RUNNING = 64 pkg syscall (freebsd-amd64-cgo), const IFF_DYING = 2097152 pkg syscall (freebsd-amd64-cgo), const IFF_LINK0 = 4096 pkg syscall (freebsd-amd64-cgo), const IFF_LINK1 = 8192 pkg syscall (freebsd-amd64-cgo), const IFF_LINK2 = 16384 pkg syscall (freebsd-amd64-cgo), const IFF_LOOPBACK = 8 pkg syscall (freebsd-amd64-cgo), const IFF_MONITOR = 262144 pkg syscall (freebsd-amd64-cgo), const IFF_MULTICAST = 32768 pkg syscall (freebsd-amd64-cgo), const IFF_NOARP = 128 pkg syscall (freebsd-amd64-cgo), const IFF_OACTIVE = 1024 pkg syscall (freebsd-amd64-cgo), const IFF_POINTOPOINT = 16 pkg syscall (freebsd-amd64-cgo), const IFF_PPROMISC = 131072 pkg syscall (freebsd-amd64-cgo), const IFF_PROMISC = 256 pkg syscall (freebsd-amd64-cgo), const IFF_RENAMING = 4194304 pkg syscall (freebsd-amd64-cgo), const IFF_RUNNING = 64 pkg syscall (freebsd-amd64-cgo), const IFF_SIMPLEX = 2048 pkg syscall (freebsd-amd64-cgo), const IFF_SMART = 32 pkg syscall (freebsd-amd64-cgo), const IFF_STATICARP = 524288 pkg syscall (freebsd-amd64-cgo), const IFNAMSIZ = 16 pkg syscall (freebsd-amd64-cgo), const IFT_1822 = 2 pkg syscall (freebsd-amd64-cgo), const IFT_A12MPPSWITCH = 130 pkg syscall (freebsd-amd64-cgo), const IFT_AAL2 = 187 pkg syscall (freebsd-amd64-cgo), const IFT_AAL5 = 49 pkg syscall (freebsd-amd64-cgo), const IFT_ADSL = 94 pkg syscall (freebsd-amd64-cgo), const IFT_AFLANE8023 = 59 pkg syscall (freebsd-amd64-cgo), const IFT_AFLANE8025 = 60 pkg syscall (freebsd-amd64-cgo), const IFT_ARAP = 88 pkg syscall (freebsd-amd64-cgo), const IFT_ARCNET = 35 pkg syscall (freebsd-amd64-cgo), const IFT_ARCNETPLUS = 36 pkg syscall (freebsd-amd64-cgo), const IFT_ASYNC = 84 pkg syscall (freebsd-amd64-cgo), const IFT_ATM = 37 pkg syscall (freebsd-amd64-cgo), const IFT_ATMDXI = 105 pkg syscall (freebsd-amd64-cgo), const IFT_ATMFUNI = 106 pkg syscall (freebsd-amd64-cgo), const IFT_ATMIMA = 107 pkg syscall (freebsd-amd64-cgo), const IFT_ATMLOGICAL = 80 pkg syscall (freebsd-amd64-cgo), const IFT_ATMRADIO = 189 pkg syscall (freebsd-amd64-cgo), const IFT_ATMSUBINTERFACE = 134 pkg syscall (freebsd-amd64-cgo), const IFT_ATMVCIENDPT = 194 pkg syscall (freebsd-amd64-cgo), const IFT_ATMVIRTUAL = 149 pkg syscall (freebsd-amd64-cgo), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (freebsd-amd64-cgo), const IFT_BRIDGE = 209 pkg syscall (freebsd-amd64-cgo), const IFT_BSC = 83 pkg syscall (freebsd-amd64-cgo), const IFT_CARP = 248 pkg syscall (freebsd-amd64-cgo), const IFT_CCTEMUL = 61 pkg syscall (freebsd-amd64-cgo), const IFT_CEPT = 19 pkg syscall (freebsd-amd64-cgo), const IFT_CES = 133 pkg syscall (freebsd-amd64-cgo), const IFT_CHANNEL = 70 pkg syscall (freebsd-amd64-cgo), const IFT_CNR = 85 pkg syscall (freebsd-amd64-cgo), const IFT_COFFEE = 132 pkg syscall (freebsd-amd64-cgo), const IFT_COMPOSITELINK = 155 pkg syscall (freebsd-amd64-cgo), const IFT_DCN = 141 pkg syscall (freebsd-amd64-cgo), const IFT_DIGITALPOWERLINE = 138 pkg syscall (freebsd-amd64-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (freebsd-amd64-cgo), const IFT_DLSW = 74 pkg syscall (freebsd-amd64-cgo), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (freebsd-amd64-cgo), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (freebsd-amd64-cgo), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (freebsd-amd64-cgo), const IFT_DS0 = 81 pkg syscall (freebsd-amd64-cgo), const IFT_DS0BUNDLE = 82 pkg syscall (freebsd-amd64-cgo), const IFT_DS1FDL = 170 pkg syscall (freebsd-amd64-cgo), const IFT_DS3 = 30 pkg syscall (freebsd-amd64-cgo), const IFT_DTM = 140 pkg syscall (freebsd-amd64-cgo), const IFT_DVBASILN = 172 pkg syscall (freebsd-amd64-cgo), const IFT_DVBASIOUT = 173 pkg syscall (freebsd-amd64-cgo), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (freebsd-amd64-cgo), const IFT_DVBRCCMACLAYER = 146 pkg syscall (freebsd-amd64-cgo), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (freebsd-amd64-cgo), const IFT_ENC = 244 pkg syscall (freebsd-amd64-cgo), const IFT_EON = 25 pkg syscall (freebsd-amd64-cgo), const IFT_EPLRS = 87 pkg syscall (freebsd-amd64-cgo), const IFT_ESCON = 73 pkg syscall (freebsd-amd64-cgo), const IFT_ETHER = 6 pkg syscall (freebsd-amd64-cgo), const IFT_FAITH = 242 pkg syscall (freebsd-amd64-cgo), const IFT_FAST = 125 pkg syscall (freebsd-amd64-cgo), const IFT_FASTETHER = 62 pkg syscall (freebsd-amd64-cgo), const IFT_FASTETHERFX = 69 pkg syscall (freebsd-amd64-cgo), const IFT_FDDI = 15 pkg syscall (freebsd-amd64-cgo), const IFT_FIBRECHANNEL = 56 pkg syscall (freebsd-amd64-cgo), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (freebsd-amd64-cgo), const IFT_FRAMERELAYMPI = 92 pkg syscall (freebsd-amd64-cgo), const IFT_FRDLCIENDPT = 193 pkg syscall (freebsd-amd64-cgo), const IFT_FRELAY = 32 pkg syscall (freebsd-amd64-cgo), const IFT_FRELAYDCE = 44 pkg syscall (freebsd-amd64-cgo), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (freebsd-amd64-cgo), const IFT_FRFORWARD = 158 pkg syscall (freebsd-amd64-cgo), const IFT_G703AT2MB = 67 pkg syscall (freebsd-amd64-cgo), const IFT_G703AT64K = 66 pkg syscall (freebsd-amd64-cgo), const IFT_GIF = 240 pkg syscall (freebsd-amd64-cgo), const IFT_GIGABITETHERNET = 117 pkg syscall (freebsd-amd64-cgo), const IFT_GR303IDT = 178 pkg syscall (freebsd-amd64-cgo), const IFT_GR303RDT = 177 pkg syscall (freebsd-amd64-cgo), const IFT_H323GATEKEEPER = 164 pkg syscall (freebsd-amd64-cgo), const IFT_H323PROXY = 165 pkg syscall (freebsd-amd64-cgo), const IFT_HDH1822 = 3 pkg syscall (freebsd-amd64-cgo), const IFT_HDLC = 118 pkg syscall (freebsd-amd64-cgo), const IFT_HDSL2 = 168 pkg syscall (freebsd-amd64-cgo), const IFT_HIPERLAN2 = 183 pkg syscall (freebsd-amd64-cgo), const IFT_HIPPI = 47 pkg syscall (freebsd-amd64-cgo), const IFT_HIPPIINTERFACE = 57 pkg syscall (freebsd-amd64-cgo), const IFT_HOSTPAD = 90 pkg syscall (freebsd-amd64-cgo), const IFT_HSSI = 46 pkg syscall (freebsd-amd64-cgo), const IFT_HY = 14 pkg syscall (freebsd-amd64-cgo), const IFT_IBM370PARCHAN = 72 pkg syscall (freebsd-amd64-cgo), const IFT_IDSL = 154 pkg syscall (freebsd-amd64-cgo), const IFT_IEEE1394 = 144 pkg syscall (freebsd-amd64-cgo), const IFT_IEEE80211 = 71 pkg syscall (freebsd-amd64-cgo), const IFT_IEEE80212 = 55 pkg syscall (freebsd-amd64-cgo), const IFT_IEEE8023ADLAG = 161 pkg syscall (freebsd-amd64-cgo), const IFT_IFGSN = 145 pkg syscall (freebsd-amd64-cgo), const IFT_IMT = 190 pkg syscall (freebsd-amd64-cgo), const IFT_INFINIBAND = 199 pkg syscall (freebsd-amd64-cgo), const IFT_INTERLEAVE = 124 pkg syscall (freebsd-amd64-cgo), const IFT_IP = 126 pkg syscall (freebsd-amd64-cgo), const IFT_IPFORWARD = 142 pkg syscall (freebsd-amd64-cgo), const IFT_IPOVERATM = 114 pkg syscall (freebsd-amd64-cgo), const IFT_IPOVERCDLC = 109 pkg syscall (freebsd-amd64-cgo), const IFT_IPOVERCLAW = 110 pkg syscall (freebsd-amd64-cgo), const IFT_IPSWITCH = 78 pkg syscall (freebsd-amd64-cgo), const IFT_IPXIP = 249 pkg syscall (freebsd-amd64-cgo), const IFT_ISDN = 63 pkg syscall (freebsd-amd64-cgo), const IFT_ISDNBASIC = 20 pkg syscall (freebsd-amd64-cgo), const IFT_ISDNPRIMARY = 21 pkg syscall (freebsd-amd64-cgo), const IFT_ISDNS = 75 pkg syscall (freebsd-amd64-cgo), const IFT_ISDNU = 76 pkg syscall (freebsd-amd64-cgo), const IFT_ISO88022LLC = 41 pkg syscall (freebsd-amd64-cgo), const IFT_ISO88023 = 7 pkg syscall (freebsd-amd64-cgo), const IFT_ISO88024 = 8 pkg syscall (freebsd-amd64-cgo), const IFT_ISO88025 = 9 pkg syscall (freebsd-amd64-cgo), const IFT_ISO88025CRFPINT = 98 pkg syscall (freebsd-amd64-cgo), const IFT_ISO88025DTR = 86 pkg syscall (freebsd-amd64-cgo), const IFT_ISO88025FIBER = 115 pkg syscall (freebsd-amd64-cgo), const IFT_ISO88026 = 10 pkg syscall (freebsd-amd64-cgo), const IFT_ISUP = 179 pkg syscall (freebsd-amd64-cgo), const IFT_L2VLAN = 135 pkg syscall (freebsd-amd64-cgo), const IFT_L3IPVLAN = 136 pkg syscall (freebsd-amd64-cgo), const IFT_L3IPXVLAN = 137 pkg syscall (freebsd-amd64-cgo), const IFT_LAPB = 16 pkg syscall (freebsd-amd64-cgo), const IFT_LAPD = 77 pkg syscall (freebsd-amd64-cgo), const IFT_LAPF = 119 pkg syscall (freebsd-amd64-cgo), const IFT_LOCALTALK = 42 pkg syscall (freebsd-amd64-cgo), const IFT_LOOP = 24 pkg syscall (freebsd-amd64-cgo), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (freebsd-amd64-cgo), const IFT_MFSIGLINK = 167 pkg syscall (freebsd-amd64-cgo), const IFT_MIOX25 = 38 pkg syscall (freebsd-amd64-cgo), const IFT_MODEM = 48 pkg syscall (freebsd-amd64-cgo), const IFT_MPC = 113 pkg syscall (freebsd-amd64-cgo), const IFT_MPLS = 166 pkg syscall (freebsd-amd64-cgo), const IFT_MPLSTUNNEL = 150 pkg syscall (freebsd-amd64-cgo), const IFT_MSDSL = 143 pkg syscall (freebsd-amd64-cgo), const IFT_MVL = 191 pkg syscall (freebsd-amd64-cgo), const IFT_MYRINET = 99 pkg syscall (freebsd-amd64-cgo), const IFT_NFAS = 175 pkg syscall (freebsd-amd64-cgo), const IFT_NSIP = 27 pkg syscall (freebsd-amd64-cgo), const IFT_OPTICALCHANNEL = 195 pkg syscall (freebsd-amd64-cgo), const IFT_OPTICALTRANSPORT = 196 pkg syscall (freebsd-amd64-cgo), const IFT_OTHER = 1 pkg syscall (freebsd-amd64-cgo), const IFT_P10 = 12 pkg syscall (freebsd-amd64-cgo), const IFT_P80 = 13 pkg syscall (freebsd-amd64-cgo), const IFT_PARA = 34 pkg syscall (freebsd-amd64-cgo), const IFT_PFLOG = 246 pkg syscall (freebsd-amd64-cgo), const IFT_PFSYNC = 247 pkg syscall (freebsd-amd64-cgo), const IFT_PLC = 174 pkg syscall (freebsd-amd64-cgo), const IFT_POS = 171 pkg syscall (freebsd-amd64-cgo), const IFT_PPP = 23 pkg syscall (freebsd-amd64-cgo), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (freebsd-amd64-cgo), const IFT_PROPBWAP2MP = 184 pkg syscall (freebsd-amd64-cgo), const IFT_PROPCNLS = 89 pkg syscall (freebsd-amd64-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (freebsd-amd64-cgo), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (freebsd-amd64-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (freebsd-amd64-cgo), const IFT_PROPMUX = 54 pkg syscall (freebsd-amd64-cgo), const IFT_PROPVIRTUAL = 53 pkg syscall (freebsd-amd64-cgo), const IFT_PROPWIRELESSP2P = 157 pkg syscall (freebsd-amd64-cgo), const IFT_PTPSERIAL = 22 pkg syscall (freebsd-amd64-cgo), const IFT_PVC = 241 pkg syscall (freebsd-amd64-cgo), const IFT_QLLC = 68 pkg syscall (freebsd-amd64-cgo), const IFT_RADIOMAC = 188 pkg syscall (freebsd-amd64-cgo), const IFT_RADSL = 95 pkg syscall (freebsd-amd64-cgo), const IFT_REACHDSL = 192 pkg syscall (freebsd-amd64-cgo), const IFT_RFC1483 = 159 pkg syscall (freebsd-amd64-cgo), const IFT_RS232 = 33 pkg syscall (freebsd-amd64-cgo), const IFT_RSRB = 79 pkg syscall (freebsd-amd64-cgo), const IFT_SDLC = 17 pkg syscall (freebsd-amd64-cgo), const IFT_SDSL = 96 pkg syscall (freebsd-amd64-cgo), const IFT_SHDSL = 169 pkg syscall (freebsd-amd64-cgo), const IFT_SIP = 31 pkg syscall (freebsd-amd64-cgo), const IFT_SLIP = 28 pkg syscall (freebsd-amd64-cgo), const IFT_SMDSDXI = 43 pkg syscall (freebsd-amd64-cgo), const IFT_SMDSICIP = 52 pkg syscall (freebsd-amd64-cgo), const IFT_SONET = 39 pkg syscall (freebsd-amd64-cgo), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (freebsd-amd64-cgo), const IFT_SONETPATH = 50 pkg syscall (freebsd-amd64-cgo), const IFT_SONETVT = 51 pkg syscall (freebsd-amd64-cgo), const IFT_SRP = 151 pkg syscall (freebsd-amd64-cgo), const IFT_SS7SIGLINK = 156 pkg syscall (freebsd-amd64-cgo), const IFT_STACKTOSTACK = 111 pkg syscall (freebsd-amd64-cgo), const IFT_STARLAN = 11 pkg syscall (freebsd-amd64-cgo), const IFT_STF = 215 pkg syscall (freebsd-amd64-cgo), const IFT_T1 = 18 pkg syscall (freebsd-amd64-cgo), const IFT_TDLC = 116 pkg syscall (freebsd-amd64-cgo), const IFT_TERMPAD = 91 pkg syscall (freebsd-amd64-cgo), const IFT_TR008 = 176 pkg syscall (freebsd-amd64-cgo), const IFT_TRANSPHDLC = 123 pkg syscall (freebsd-amd64-cgo), const IFT_TUNNEL = 131 pkg syscall (freebsd-amd64-cgo), const IFT_ULTRA = 29 pkg syscall (freebsd-amd64-cgo), const IFT_USB = 160 pkg syscall (freebsd-amd64-cgo), const IFT_V11 = 64 pkg syscall (freebsd-amd64-cgo), const IFT_V35 = 45 pkg syscall (freebsd-amd64-cgo), const IFT_V36 = 65 pkg syscall (freebsd-amd64-cgo), const IFT_V37 = 120 pkg syscall (freebsd-amd64-cgo), const IFT_VDSL = 97 pkg syscall (freebsd-amd64-cgo), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (freebsd-amd64-cgo), const IFT_VOICEEM = 100 pkg syscall (freebsd-amd64-cgo), const IFT_VOICEENCAP = 103 pkg syscall (freebsd-amd64-cgo), const IFT_VOICEFXO = 101 pkg syscall (freebsd-amd64-cgo), const IFT_VOICEFXS = 102 pkg syscall (freebsd-amd64-cgo), const IFT_VOICEOVERATM = 152 pkg syscall (freebsd-amd64-cgo), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (freebsd-amd64-cgo), const IFT_VOICEOVERIP = 104 pkg syscall (freebsd-amd64-cgo), const IFT_X213 = 93 pkg syscall (freebsd-amd64-cgo), const IFT_X25 = 5 pkg syscall (freebsd-amd64-cgo), const IFT_X25DDN = 4 pkg syscall (freebsd-amd64-cgo), const IFT_X25HUNTGROUP = 122 pkg syscall (freebsd-amd64-cgo), const IFT_X25MLP = 121 pkg syscall (freebsd-amd64-cgo), const IFT_X25PLE = 40 pkg syscall (freebsd-amd64-cgo), const IFT_XETHER = 26 pkg syscall (freebsd-amd64-cgo), const IGNBRK = 1 pkg syscall (freebsd-amd64-cgo), const IGNCR = 128 pkg syscall (freebsd-amd64-cgo), const IGNPAR = 4 pkg syscall (freebsd-amd64-cgo), const IMAXBEL = 8192 pkg syscall (freebsd-amd64-cgo), const INLCR = 64 pkg syscall (freebsd-amd64-cgo), const INPCK = 16 pkg syscall (freebsd-amd64-cgo), const IN_CLASSA_HOST = 16777215 pkg syscall (freebsd-amd64-cgo), const IN_CLASSA_MAX = 128 pkg syscall (freebsd-amd64-cgo), const IN_CLASSA_NET = 4278190080 pkg syscall (freebsd-amd64-cgo), const IN_CLASSA_NSHIFT = 24 pkg syscall (freebsd-amd64-cgo), const IN_CLASSB_HOST = 65535 pkg syscall (freebsd-amd64-cgo), const IN_CLASSB_MAX = 65536 pkg syscall (freebsd-amd64-cgo), const IN_CLASSB_NET = 4294901760 pkg syscall (freebsd-amd64-cgo), const IN_CLASSB_NSHIFT = 16 pkg syscall (freebsd-amd64-cgo), const IN_CLASSC_HOST = 255 pkg syscall (freebsd-amd64-cgo), const IN_CLASSC_NET = 4294967040 pkg syscall (freebsd-amd64-cgo), const IN_CLASSC_NSHIFT = 8 pkg syscall (freebsd-amd64-cgo), const IN_CLASSD_HOST = 268435455 pkg syscall (freebsd-amd64-cgo), const IN_CLASSD_NET = 4026531840 pkg syscall (freebsd-amd64-cgo), const IN_CLASSD_NSHIFT = 28 pkg syscall (freebsd-amd64-cgo), const IN_LOOPBACKNET = 127 pkg syscall (freebsd-amd64-cgo), const IN_RFC3021_MASK = 4294967294 pkg syscall (freebsd-amd64-cgo), const IPPROTO_3PC = 34 pkg syscall (freebsd-amd64-cgo), const IPPROTO_ADFS = 68 pkg syscall (freebsd-amd64-cgo), const IPPROTO_AH = 51 pkg syscall (freebsd-amd64-cgo), const IPPROTO_AHIP = 61 pkg syscall (freebsd-amd64-cgo), const IPPROTO_APES = 99 pkg syscall (freebsd-amd64-cgo), const IPPROTO_ARGUS = 13 pkg syscall (freebsd-amd64-cgo), const IPPROTO_AX25 = 93 pkg syscall (freebsd-amd64-cgo), const IPPROTO_BHA = 49 pkg syscall (freebsd-amd64-cgo), const IPPROTO_BLT = 30 pkg syscall (freebsd-amd64-cgo), const IPPROTO_BRSATMON = 76 pkg syscall (freebsd-amd64-cgo), const IPPROTO_CARP = 112 pkg syscall (freebsd-amd64-cgo), const IPPROTO_CFTP = 62 pkg syscall (freebsd-amd64-cgo), const IPPROTO_CHAOS = 16 pkg syscall (freebsd-amd64-cgo), const IPPROTO_CMTP = 38 pkg syscall (freebsd-amd64-cgo), const IPPROTO_CPHB = 73 pkg syscall (freebsd-amd64-cgo), const IPPROTO_CPNX = 72 pkg syscall (freebsd-amd64-cgo), const IPPROTO_DDP = 37 pkg syscall (freebsd-amd64-cgo), const IPPROTO_DGP = 86 pkg syscall (freebsd-amd64-cgo), const IPPROTO_DIVERT = 258 pkg syscall (freebsd-amd64-cgo), const IPPROTO_DONE = 257 pkg syscall (freebsd-amd64-cgo), const IPPROTO_DSTOPTS = 60 pkg syscall (freebsd-amd64-cgo), const IPPROTO_EGP = 8 pkg syscall (freebsd-amd64-cgo), const IPPROTO_EMCON = 14 pkg syscall (freebsd-amd64-cgo), const IPPROTO_ENCAP = 98 pkg syscall (freebsd-amd64-cgo), const IPPROTO_EON = 80 pkg syscall (freebsd-amd64-cgo), const IPPROTO_ESP = 50 pkg syscall (freebsd-amd64-cgo), const IPPROTO_ETHERIP = 97 pkg syscall (freebsd-amd64-cgo), const IPPROTO_FRAGMENT = 44 pkg syscall (freebsd-amd64-cgo), const IPPROTO_GGP = 3 pkg syscall (freebsd-amd64-cgo), const IPPROTO_GMTP = 100 pkg syscall (freebsd-amd64-cgo), const IPPROTO_GRE = 47 pkg syscall (freebsd-amd64-cgo), const IPPROTO_HELLO = 63 pkg syscall (freebsd-amd64-cgo), const IPPROTO_HMP = 20 pkg syscall (freebsd-amd64-cgo), const IPPROTO_HOPOPTS = 0 pkg syscall (freebsd-amd64-cgo), const IPPROTO_ICMP = 1 pkg syscall (freebsd-amd64-cgo), const IPPROTO_ICMPV6 = 58 pkg syscall (freebsd-amd64-cgo), const IPPROTO_IDP = 22 pkg syscall (freebsd-amd64-cgo), const IPPROTO_IDPR = 35 pkg syscall (freebsd-amd64-cgo), const IPPROTO_IDRP = 45 pkg syscall (freebsd-amd64-cgo), const IPPROTO_IGMP = 2 pkg syscall (freebsd-amd64-cgo), const IPPROTO_IGP = 85 pkg syscall (freebsd-amd64-cgo), const IPPROTO_IGRP = 88 pkg syscall (freebsd-amd64-cgo), const IPPROTO_IL = 40 pkg syscall (freebsd-amd64-cgo), const IPPROTO_INLSP = 52 pkg syscall (freebsd-amd64-cgo), const IPPROTO_INP = 32 pkg syscall (freebsd-amd64-cgo), const IPPROTO_IPCOMP = 108 pkg syscall (freebsd-amd64-cgo), const IPPROTO_IPCV = 71 pkg syscall (freebsd-amd64-cgo), const IPPROTO_IPEIP = 94 pkg syscall (freebsd-amd64-cgo), const IPPROTO_IPIP = 4 pkg syscall (freebsd-amd64-cgo), const IPPROTO_IPPC = 67 pkg syscall (freebsd-amd64-cgo), const IPPROTO_IPV4 = 4 pkg syscall (freebsd-amd64-cgo), const IPPROTO_IRTP = 28 pkg syscall (freebsd-amd64-cgo), const IPPROTO_KRYPTOLAN = 65 pkg syscall (freebsd-amd64-cgo), const IPPROTO_LARP = 91 pkg syscall (freebsd-amd64-cgo), const IPPROTO_LEAF1 = 25 pkg syscall (freebsd-amd64-cgo), const IPPROTO_LEAF2 = 26 pkg syscall (freebsd-amd64-cgo), const IPPROTO_MAX = 256 pkg syscall (freebsd-amd64-cgo), const IPPROTO_MAXID = 52 pkg syscall (freebsd-amd64-cgo), const IPPROTO_MEAS = 19 pkg syscall (freebsd-amd64-cgo), const IPPROTO_MH = 135 pkg syscall (freebsd-amd64-cgo), const IPPROTO_MHRP = 48 pkg syscall (freebsd-amd64-cgo), const IPPROTO_MICP = 95 pkg syscall (freebsd-amd64-cgo), const IPPROTO_MOBILE = 55 pkg syscall (freebsd-amd64-cgo), const IPPROTO_MTP = 92 pkg syscall (freebsd-amd64-cgo), const IPPROTO_MUX = 18 pkg syscall (freebsd-amd64-cgo), const IPPROTO_ND = 77 pkg syscall (freebsd-amd64-cgo), const IPPROTO_NHRP = 54 pkg syscall (freebsd-amd64-cgo), const IPPROTO_NONE = 59 pkg syscall (freebsd-amd64-cgo), const IPPROTO_NSP = 31 pkg syscall (freebsd-amd64-cgo), const IPPROTO_NVPII = 11 pkg syscall (freebsd-amd64-cgo), const IPPROTO_OLD_DIVERT = 254 pkg syscall (freebsd-amd64-cgo), const IPPROTO_OSPFIGP = 89 pkg syscall (freebsd-amd64-cgo), const IPPROTO_PFSYNC = 240 pkg syscall (freebsd-amd64-cgo), const IPPROTO_PGM = 113 pkg syscall (freebsd-amd64-cgo), const IPPROTO_PIGP = 9 pkg syscall (freebsd-amd64-cgo), const IPPROTO_PIM = 103 pkg syscall (freebsd-amd64-cgo), const IPPROTO_PRM = 21 pkg syscall (freebsd-amd64-cgo), const IPPROTO_PUP = 12 pkg syscall (freebsd-amd64-cgo), const IPPROTO_PVP = 75 pkg syscall (freebsd-amd64-cgo), const IPPROTO_RAW = 255 pkg syscall (freebsd-amd64-cgo), const IPPROTO_RCCMON = 10 pkg syscall (freebsd-amd64-cgo), const IPPROTO_RDP = 27 pkg syscall (freebsd-amd64-cgo), const IPPROTO_ROUTING = 43 pkg syscall (freebsd-amd64-cgo), const IPPROTO_RSVP = 46 pkg syscall (freebsd-amd64-cgo), const IPPROTO_RVD = 66 pkg syscall (freebsd-amd64-cgo), const IPPROTO_SATEXPAK = 64 pkg syscall (freebsd-amd64-cgo), const IPPROTO_SATMON = 69 pkg syscall (freebsd-amd64-cgo), const IPPROTO_SCCSP = 96 pkg syscall (freebsd-amd64-cgo), const IPPROTO_SCTP = 132 pkg syscall (freebsd-amd64-cgo), const IPPROTO_SDRP = 42 pkg syscall (freebsd-amd64-cgo), const IPPROTO_SEND = 259 pkg syscall (freebsd-amd64-cgo), const IPPROTO_SEP = 33 pkg syscall (freebsd-amd64-cgo), const IPPROTO_SKIP = 57 pkg syscall (freebsd-amd64-cgo), const IPPROTO_SPACER = 32767 pkg syscall (freebsd-amd64-cgo), const IPPROTO_SRPC = 90 pkg syscall (freebsd-amd64-cgo), const IPPROTO_ST = 7 pkg syscall (freebsd-amd64-cgo), const IPPROTO_SVMTP = 82 pkg syscall (freebsd-amd64-cgo), const IPPROTO_SWIPE = 53 pkg syscall (freebsd-amd64-cgo), const IPPROTO_TCF = 87 pkg syscall (freebsd-amd64-cgo), const IPPROTO_TLSP = 56 pkg syscall (freebsd-amd64-cgo), const IPPROTO_TP = 29 pkg syscall (freebsd-amd64-cgo), const IPPROTO_TPXX = 39 pkg syscall (freebsd-amd64-cgo), const IPPROTO_TRUNK1 = 23 pkg syscall (freebsd-amd64-cgo), const IPPROTO_TRUNK2 = 24 pkg syscall (freebsd-amd64-cgo), const IPPROTO_TTP = 84 pkg syscall (freebsd-amd64-cgo), const IPPROTO_VINES = 83 pkg syscall (freebsd-amd64-cgo), const IPPROTO_VISA = 70 pkg syscall (freebsd-amd64-cgo), const IPPROTO_VMTP = 81 pkg syscall (freebsd-amd64-cgo), const IPPROTO_WBEXPAK = 79 pkg syscall (freebsd-amd64-cgo), const IPPROTO_WBMON = 78 pkg syscall (freebsd-amd64-cgo), const IPPROTO_WSN = 74 pkg syscall (freebsd-amd64-cgo), const IPPROTO_XNET = 15 pkg syscall (freebsd-amd64-cgo), const IPPROTO_XTP = 36 pkg syscall (freebsd-amd64-cgo), const IPV6_AUTOFLOWLABEL = 59 pkg syscall (freebsd-amd64-cgo), const IPV6_BINDANY = 64 pkg syscall (freebsd-amd64-cgo), const IPV6_BINDV6ONLY = 27 pkg syscall (freebsd-amd64-cgo), const IPV6_CHECKSUM = 26 pkg syscall (freebsd-amd64-cgo), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (freebsd-amd64-cgo), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (freebsd-amd64-cgo), const IPV6_DEFHLIM = 64 pkg syscall (freebsd-amd64-cgo), const IPV6_DONTFRAG = 62 pkg syscall (freebsd-amd64-cgo), const IPV6_DSTOPTS = 50 pkg syscall (freebsd-amd64-cgo), const IPV6_FAITH = 29 pkg syscall (freebsd-amd64-cgo), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (freebsd-amd64-cgo), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (freebsd-amd64-cgo), const IPV6_FRAGTTL = 120 pkg syscall (freebsd-amd64-cgo), const IPV6_FW_ADD = 30 pkg syscall (freebsd-amd64-cgo), const IPV6_FW_DEL = 31 pkg syscall (freebsd-amd64-cgo), const IPV6_FW_FLUSH = 32 pkg syscall (freebsd-amd64-cgo), const IPV6_FW_GET = 34 pkg syscall (freebsd-amd64-cgo), const IPV6_FW_ZERO = 33 pkg syscall (freebsd-amd64-cgo), const IPV6_HLIMDEC = 1 pkg syscall (freebsd-amd64-cgo), const IPV6_HOPLIMIT = 47 pkg syscall (freebsd-amd64-cgo), const IPV6_HOPOPTS = 49 pkg syscall (freebsd-amd64-cgo), const IPV6_IPSEC_POLICY = 28 pkg syscall (freebsd-amd64-cgo), const IPV6_JOIN_GROUP = 12 pkg syscall (freebsd-amd64-cgo), const IPV6_LEAVE_GROUP = 13 pkg syscall (freebsd-amd64-cgo), const IPV6_MAXHLIM = 255 pkg syscall (freebsd-amd64-cgo), const IPV6_MAXOPTHDR = 2048 pkg syscall (freebsd-amd64-cgo), const IPV6_MAXPACKET = 65535 pkg syscall (freebsd-amd64-cgo), const IPV6_MAX_GROUP_SRC_FILTER = 512 pkg syscall (freebsd-amd64-cgo), const IPV6_MAX_MEMBERSHIPS = 4095 pkg syscall (freebsd-amd64-cgo), const IPV6_MAX_SOCK_SRC_FILTER = 128 pkg syscall (freebsd-amd64-cgo), const IPV6_MIN_MEMBERSHIPS = 31 pkg syscall (freebsd-amd64-cgo), const IPV6_MMTU = 1280 pkg syscall (freebsd-amd64-cgo), const IPV6_MSFILTER = 74 pkg syscall (freebsd-amd64-cgo), const IPV6_MULTICAST_HOPS = 10 pkg syscall (freebsd-amd64-cgo), const IPV6_MULTICAST_IF = 9 pkg syscall (freebsd-amd64-cgo), const IPV6_MULTICAST_LOOP = 11 pkg syscall (freebsd-amd64-cgo), const IPV6_NEXTHOP = 48 pkg syscall (freebsd-amd64-cgo), const IPV6_PATHMTU = 44 pkg syscall (freebsd-amd64-cgo), const IPV6_PKTINFO = 46 pkg syscall (freebsd-amd64-cgo), const IPV6_PORTRANGE = 14 pkg syscall (freebsd-amd64-cgo), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (freebsd-amd64-cgo), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (freebsd-amd64-cgo), const IPV6_PORTRANGE_LOW = 2 pkg syscall (freebsd-amd64-cgo), const IPV6_PREFER_TEMPADDR = 63 pkg syscall (freebsd-amd64-cgo), const IPV6_RECVDSTOPTS = 40 pkg syscall (freebsd-amd64-cgo), const IPV6_RECVHOPLIMIT = 37 pkg syscall (freebsd-amd64-cgo), const IPV6_RECVHOPOPTS = 39 pkg syscall (freebsd-amd64-cgo), const IPV6_RECVPATHMTU = 43 pkg syscall (freebsd-amd64-cgo), const IPV6_RECVPKTINFO = 36 pkg syscall (freebsd-amd64-cgo), const IPV6_RECVRTHDR = 38 pkg syscall (freebsd-amd64-cgo), const IPV6_RECVTCLASS = 57 pkg syscall (freebsd-amd64-cgo), const IPV6_RTHDR = 51 pkg syscall (freebsd-amd64-cgo), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (freebsd-amd64-cgo), const IPV6_RTHDR_LOOSE = 0 pkg syscall (freebsd-amd64-cgo), const IPV6_RTHDR_STRICT = 1 pkg syscall (freebsd-amd64-cgo), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (freebsd-amd64-cgo), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (freebsd-amd64-cgo), const IPV6_TCLASS = 61 pkg syscall (freebsd-amd64-cgo), const IPV6_UNICAST_HOPS = 4 pkg syscall (freebsd-amd64-cgo), const IPV6_USE_MIN_MTU = 42 pkg syscall (freebsd-amd64-cgo), const IPV6_V6ONLY = 27 pkg syscall (freebsd-amd64-cgo), const IPV6_VERSION = 96 pkg syscall (freebsd-amd64-cgo), const IPV6_VERSION_MASK = 240 pkg syscall (freebsd-amd64-cgo), const IP_ADD_MEMBERSHIP = 12 pkg syscall (freebsd-amd64-cgo), const IP_ADD_SOURCE_MEMBERSHIP = 70 pkg syscall (freebsd-amd64-cgo), const IP_BINDANY = 24 pkg syscall (freebsd-amd64-cgo), const IP_BLOCK_SOURCE = 72 pkg syscall (freebsd-amd64-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (freebsd-amd64-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (freebsd-amd64-cgo), const IP_DF = 16384 pkg syscall (freebsd-amd64-cgo), const IP_DONTFRAG = 67 pkg syscall (freebsd-amd64-cgo), const IP_DROP_MEMBERSHIP = 13 pkg syscall (freebsd-amd64-cgo), const IP_DROP_SOURCE_MEMBERSHIP = 71 pkg syscall (freebsd-amd64-cgo), const IP_DUMMYNET3 = 49 pkg syscall (freebsd-amd64-cgo), const IP_DUMMYNET_CONFIGURE = 60 pkg syscall (freebsd-amd64-cgo), const IP_DUMMYNET_DEL = 61 pkg syscall (freebsd-amd64-cgo), const IP_DUMMYNET_FLUSH = 62 pkg syscall (freebsd-amd64-cgo), const IP_DUMMYNET_GET = 64 pkg syscall (freebsd-amd64-cgo), const IP_FAITH = 22 pkg syscall (freebsd-amd64-cgo), const IP_FW3 = 48 pkg syscall (freebsd-amd64-cgo), const IP_FW_ADD = 50 pkg syscall (freebsd-amd64-cgo), const IP_FW_DEL = 51 pkg syscall (freebsd-amd64-cgo), const IP_FW_FLUSH = 52 pkg syscall (freebsd-amd64-cgo), const IP_FW_GET = 54 pkg syscall (freebsd-amd64-cgo), const IP_FW_NAT_CFG = 56 pkg syscall (freebsd-amd64-cgo), const IP_FW_NAT_DEL = 57 pkg syscall (freebsd-amd64-cgo), const IP_FW_NAT_GET_CONFIG = 58 pkg syscall (freebsd-amd64-cgo), const IP_FW_NAT_GET_LOG = 59 pkg syscall (freebsd-amd64-cgo), const IP_FW_RESETLOG = 55 pkg syscall (freebsd-amd64-cgo), const IP_FW_TABLE_ADD = 40 pkg syscall (freebsd-amd64-cgo), const IP_FW_TABLE_DEL = 41 pkg syscall (freebsd-amd64-cgo), const IP_FW_TABLE_FLUSH = 42 pkg syscall (freebsd-amd64-cgo), const IP_FW_TABLE_GETSIZE = 43 pkg syscall (freebsd-amd64-cgo), const IP_FW_TABLE_LIST = 44 pkg syscall (freebsd-amd64-cgo), const IP_FW_ZERO = 53 pkg syscall (freebsd-amd64-cgo), const IP_HDRINCL = 2 pkg syscall (freebsd-amd64-cgo), const IP_IPSEC_POLICY = 21 pkg syscall (freebsd-amd64-cgo), const IP_MAXPACKET = 65535 pkg syscall (freebsd-amd64-cgo), const IP_MAX_GROUP_SRC_FILTER = 512 pkg syscall (freebsd-amd64-cgo), const IP_MAX_MEMBERSHIPS = 4095 pkg syscall (freebsd-amd64-cgo), const IP_MAX_SOCK_MUTE_FILTER = 128 pkg syscall (freebsd-amd64-cgo), const IP_MAX_SOCK_SRC_FILTER = 128 pkg syscall (freebsd-amd64-cgo), const IP_MAX_SOURCE_FILTER = 1024 pkg syscall (freebsd-amd64-cgo), const IP_MF = 8192 pkg syscall (freebsd-amd64-cgo), const IP_MINTTL = 66 pkg syscall (freebsd-amd64-cgo), const IP_MIN_MEMBERSHIPS = 31 pkg syscall (freebsd-amd64-cgo), const IP_MSFILTER = 74 pkg syscall (freebsd-amd64-cgo), const IP_MSS = 576 pkg syscall (freebsd-amd64-cgo), const IP_MULTICAST_IF = 9 pkg syscall (freebsd-amd64-cgo), const IP_MULTICAST_LOOP = 11 pkg syscall (freebsd-amd64-cgo), const IP_MULTICAST_TTL = 10 pkg syscall (freebsd-amd64-cgo), const IP_MULTICAST_VIF = 14 pkg syscall (freebsd-amd64-cgo), const IP_OFFMASK = 8191 pkg syscall (freebsd-amd64-cgo), const IP_ONESBCAST = 23 pkg syscall (freebsd-amd64-cgo), const IP_OPTIONS = 1 pkg syscall (freebsd-amd64-cgo), const IP_PORTRANGE = 19 pkg syscall (freebsd-amd64-cgo), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (freebsd-amd64-cgo), const IP_PORTRANGE_HIGH = 1 pkg syscall (freebsd-amd64-cgo), const IP_PORTRANGE_LOW = 2 pkg syscall (freebsd-amd64-cgo), const IP_RECVDSTADDR = 7 pkg syscall (freebsd-amd64-cgo), const IP_RECVIF = 20 pkg syscall (freebsd-amd64-cgo), const IP_RECVOPTS = 5 pkg syscall (freebsd-amd64-cgo), const IP_RECVRETOPTS = 6 pkg syscall (freebsd-amd64-cgo), const IP_RECVTOS = 68 pkg syscall (freebsd-amd64-cgo), const IP_RECVTTL = 65 pkg syscall (freebsd-amd64-cgo), const IP_RETOPTS = 8 pkg syscall (freebsd-amd64-cgo), const IP_RF = 32768 pkg syscall (freebsd-amd64-cgo), const IP_RSVP_OFF = 16 pkg syscall (freebsd-amd64-cgo), const IP_RSVP_ON = 15 pkg syscall (freebsd-amd64-cgo), const IP_RSVP_VIF_OFF = 18 pkg syscall (freebsd-amd64-cgo), const IP_RSVP_VIF_ON = 17 pkg syscall (freebsd-amd64-cgo), const IP_SENDSRCADDR = 7 pkg syscall (freebsd-amd64-cgo), const IP_TOS = 3 pkg syscall (freebsd-amd64-cgo), const IP_TTL = 4 pkg syscall (freebsd-amd64-cgo), const IP_UNBLOCK_SOURCE = 73 pkg syscall (freebsd-amd64-cgo), const ISIG = 128 pkg syscall (freebsd-amd64-cgo), const ISTRIP = 32 pkg syscall (freebsd-amd64-cgo), const IXANY = 2048 pkg syscall (freebsd-amd64-cgo), const IXOFF = 1024 pkg syscall (freebsd-amd64-cgo), const IXON = 512 pkg syscall (freebsd-amd64-cgo), const ImplementsGetwd = false pkg syscall (freebsd-amd64-cgo), const LOCK_EX = 2 pkg syscall (freebsd-amd64-cgo), const LOCK_NB = 4 pkg syscall (freebsd-amd64-cgo), const LOCK_SH = 1 pkg syscall (freebsd-amd64-cgo), const LOCK_UN = 8 pkg syscall (freebsd-amd64-cgo), const MADV_AUTOSYNC = 7 pkg syscall (freebsd-amd64-cgo), const MADV_CORE = 9 pkg syscall (freebsd-amd64-cgo), const MADV_DONTNEED = 4 pkg syscall (freebsd-amd64-cgo), const MADV_FREE = 5 pkg syscall (freebsd-amd64-cgo), const MADV_NOCORE = 8 pkg syscall (freebsd-amd64-cgo), const MADV_NORMAL = 0 pkg syscall (freebsd-amd64-cgo), const MADV_NOSYNC = 6 pkg syscall (freebsd-amd64-cgo), const MADV_PROTECT = 10 pkg syscall (freebsd-amd64-cgo), const MADV_RANDOM = 1 pkg syscall (freebsd-amd64-cgo), const MADV_SEQUENTIAL = 2 pkg syscall (freebsd-amd64-cgo), const MADV_WILLNEED = 3 pkg syscall (freebsd-amd64-cgo), const MAP_ANON = 4096 pkg syscall (freebsd-amd64-cgo), const MAP_ANONYMOUS = 4096 pkg syscall (freebsd-amd64-cgo), const MAP_COPY = 2 pkg syscall (freebsd-amd64-cgo), const MAP_FILE = 0 pkg syscall (freebsd-amd64-cgo), const MAP_FIXED = 16 pkg syscall (freebsd-amd64-cgo), const MAP_HASSEMAPHORE = 512 pkg syscall (freebsd-amd64-cgo), const MAP_NOCORE = 131072 pkg syscall (freebsd-amd64-cgo), const MAP_NORESERVE = 64 pkg syscall (freebsd-amd64-cgo), const MAP_NOSYNC = 2048 pkg syscall (freebsd-amd64-cgo), const MAP_PREFAULT_READ = 262144 pkg syscall (freebsd-amd64-cgo), const MAP_PRIVATE = 2 pkg syscall (freebsd-amd64-cgo), const MAP_RENAME = 32 pkg syscall (freebsd-amd64-cgo), const MAP_RESERVED0080 = 128 pkg syscall (freebsd-amd64-cgo), const MAP_RESERVED0100 = 256 pkg syscall (freebsd-amd64-cgo), const MAP_SHARED = 1 pkg syscall (freebsd-amd64-cgo), const MAP_STACK = 1024 pkg syscall (freebsd-amd64-cgo), const MCL_CURRENT = 1 pkg syscall (freebsd-amd64-cgo), const MCL_FUTURE = 2 pkg syscall (freebsd-amd64-cgo), const MSG_COMPAT = 32768 pkg syscall (freebsd-amd64-cgo), const MSG_CTRUNC = 32 pkg syscall (freebsd-amd64-cgo), const MSG_DONTROUTE = 4 pkg syscall (freebsd-amd64-cgo), const MSG_DONTWAIT = 128 pkg syscall (freebsd-amd64-cgo), const MSG_EOF = 256 pkg syscall (freebsd-amd64-cgo), const MSG_EOR = 8 pkg syscall (freebsd-amd64-cgo), const MSG_NBIO = 16384 pkg syscall (freebsd-amd64-cgo), const MSG_NOSIGNAL = 131072 pkg syscall (freebsd-amd64-cgo), const MSG_NOTIFICATION = 8192 pkg syscall (freebsd-amd64-cgo), const MSG_OOB = 1 pkg syscall (freebsd-amd64-cgo), const MSG_PEEK = 2 pkg syscall (freebsd-amd64-cgo), const MSG_TRUNC = 16 pkg syscall (freebsd-amd64-cgo), const MSG_WAITALL = 64 pkg syscall (freebsd-amd64-cgo), const MS_ASYNC = 1 pkg syscall (freebsd-amd64-cgo), const MS_INVALIDATE = 2 pkg syscall (freebsd-amd64-cgo), const MS_SYNC = 0 pkg syscall (freebsd-amd64-cgo), const NET_RT_DUMP = 1 pkg syscall (freebsd-amd64-cgo), const NET_RT_FLAGS = 2 pkg syscall (freebsd-amd64-cgo), const NET_RT_IFLIST = 3 pkg syscall (freebsd-amd64-cgo), const NET_RT_IFLISTL = 5 pkg syscall (freebsd-amd64-cgo), const NET_RT_IFMALIST = 4 pkg syscall (freebsd-amd64-cgo), const NET_RT_MAXID = 6 pkg syscall (freebsd-amd64-cgo), const NOFLSH = 2147483648 pkg syscall (freebsd-amd64-cgo), const NOTE_ATTRIB = 8 pkg syscall (freebsd-amd64-cgo), const NOTE_CHILD = 4 pkg syscall (freebsd-amd64-cgo), const NOTE_DELETE = 1 pkg syscall (freebsd-amd64-cgo), const NOTE_EXEC = 536870912 pkg syscall (freebsd-amd64-cgo), const NOTE_EXIT = 2147483648 pkg syscall (freebsd-amd64-cgo), const NOTE_EXTEND = 4 pkg syscall (freebsd-amd64-cgo), const NOTE_FFAND = 1073741824 pkg syscall (freebsd-amd64-cgo), const NOTE_FFCOPY = 3221225472 pkg syscall (freebsd-amd64-cgo), const NOTE_FFCTRLMASK = 3221225472 pkg syscall (freebsd-amd64-cgo), const NOTE_FFLAGSMASK = 16777215 pkg syscall (freebsd-amd64-cgo), const NOTE_FFNOP = 0 pkg syscall (freebsd-amd64-cgo), const NOTE_FFOR = 2147483648 pkg syscall (freebsd-amd64-cgo), const NOTE_FORK = 1073741824 pkg syscall (freebsd-amd64-cgo), const NOTE_LINK = 16 pkg syscall (freebsd-amd64-cgo), const NOTE_LOWAT = 1 pkg syscall (freebsd-amd64-cgo), const NOTE_PCTRLMASK = 4026531840 pkg syscall (freebsd-amd64-cgo), const NOTE_PDATAMASK = 1048575 pkg syscall (freebsd-amd64-cgo), const NOTE_RENAME = 32 pkg syscall (freebsd-amd64-cgo), const NOTE_REVOKE = 64 pkg syscall (freebsd-amd64-cgo), const NOTE_TRACK = 1 pkg syscall (freebsd-amd64-cgo), const NOTE_TRACKERR = 2 pkg syscall (freebsd-amd64-cgo), const NOTE_TRIGGER = 16777216 pkg syscall (freebsd-amd64-cgo), const NOTE_WRITE = 2 pkg syscall (freebsd-amd64-cgo), const OCRNL = 16 pkg syscall (freebsd-amd64-cgo), const ONLCR = 2 pkg syscall (freebsd-amd64-cgo), const ONLRET = 64 pkg syscall (freebsd-amd64-cgo), const ONOCR = 32 pkg syscall (freebsd-amd64-cgo), const ONOEOT = 8 pkg syscall (freebsd-amd64-cgo), const OPOST = 1 pkg syscall (freebsd-amd64-cgo), const O_ACCMODE = 3 pkg syscall (freebsd-amd64-cgo), const O_APPEND = 8 pkg syscall (freebsd-amd64-cgo), const O_ASYNC = 64 pkg syscall (freebsd-amd64-cgo), const O_CLOEXEC = 0 pkg syscall (freebsd-amd64-cgo), const O_CREAT = 512 pkg syscall (freebsd-amd64-cgo), const O_DIRECT = 65536 pkg syscall (freebsd-amd64-cgo), const O_DIRECTORY = 131072 pkg syscall (freebsd-amd64-cgo), const O_EXCL = 2048 pkg syscall (freebsd-amd64-cgo), const O_EXEC = 262144 pkg syscall (freebsd-amd64-cgo), const O_EXLOCK = 32 pkg syscall (freebsd-amd64-cgo), const O_FSYNC = 128 pkg syscall (freebsd-amd64-cgo), const O_NDELAY = 4 pkg syscall (freebsd-amd64-cgo), const O_NOCTTY = 32768 pkg syscall (freebsd-amd64-cgo), const O_NOFOLLOW = 256 pkg syscall (freebsd-amd64-cgo), const O_NONBLOCK = 4 pkg syscall (freebsd-amd64-cgo), const O_SHLOCK = 16 pkg syscall (freebsd-amd64-cgo), const O_SYNC = 128 pkg syscall (freebsd-amd64-cgo), const O_TRUNC = 1024 pkg syscall (freebsd-amd64-cgo), const O_TTY_INIT = 524288 pkg syscall (freebsd-amd64-cgo), const PARENB = 4096 pkg syscall (freebsd-amd64-cgo), const PARMRK = 8 pkg syscall (freebsd-amd64-cgo), const PARODD = 8192 pkg syscall (freebsd-amd64-cgo), const PENDIN = 536870912 pkg syscall (freebsd-amd64-cgo), const PROT_EXEC = 4 pkg syscall (freebsd-amd64-cgo), const PROT_NONE = 0 pkg syscall (freebsd-amd64-cgo), const PROT_READ = 1 pkg syscall (freebsd-amd64-cgo), const PROT_WRITE = 2 pkg syscall (freebsd-amd64-cgo), const PTRACE_CONT = 7 pkg syscall (freebsd-amd64-cgo), const PTRACE_KILL = 8 pkg syscall (freebsd-amd64-cgo), const PTRACE_TRACEME = 0 pkg syscall (freebsd-amd64-cgo), const RLIMIT_AS = 10 pkg syscall (freebsd-amd64-cgo), const RLIMIT_CORE = 4 pkg syscall (freebsd-amd64-cgo), const RLIMIT_CPU = 0 pkg syscall (freebsd-amd64-cgo), const RLIMIT_DATA = 2 pkg syscall (freebsd-amd64-cgo), const RLIMIT_FSIZE = 1 pkg syscall (freebsd-amd64-cgo), const RLIMIT_NOFILE = 8 pkg syscall (freebsd-amd64-cgo), const RLIMIT_STACK = 3 pkg syscall (freebsd-amd64-cgo), const RLIM_INFINITY = 9223372036854775807 pkg syscall (freebsd-amd64-cgo), const RTAX_AUTHOR = 6 pkg syscall (freebsd-amd64-cgo), const RTAX_BRD = 7 pkg syscall (freebsd-amd64-cgo), const RTAX_DST = 0 pkg syscall (freebsd-amd64-cgo), const RTAX_GATEWAY = 1 pkg syscall (freebsd-amd64-cgo), const RTAX_GENMASK = 3 pkg syscall (freebsd-amd64-cgo), const RTAX_IFA = 5 pkg syscall (freebsd-amd64-cgo), const RTAX_IFP = 4 pkg syscall (freebsd-amd64-cgo), const RTAX_MAX = 8 pkg syscall (freebsd-amd64-cgo), const RTAX_NETMASK = 2 pkg syscall (freebsd-amd64-cgo), const RTA_AUTHOR = 64 pkg syscall (freebsd-amd64-cgo), const RTA_BRD = 128 pkg syscall (freebsd-amd64-cgo), const RTA_DST = 1 pkg syscall (freebsd-amd64-cgo), const RTA_GATEWAY = 2 pkg syscall (freebsd-amd64-cgo), const RTA_GENMASK = 8 pkg syscall (freebsd-amd64-cgo), const RTA_IFA = 32 pkg syscall (freebsd-amd64-cgo), const RTA_IFP = 16 pkg syscall (freebsd-amd64-cgo), const RTA_NETMASK = 4 pkg syscall (freebsd-amd64-cgo), const RTF_BLACKHOLE = 4096 pkg syscall (freebsd-amd64-cgo), const RTF_BROADCAST = 4194304 pkg syscall (freebsd-amd64-cgo), const RTF_DONE = 64 pkg syscall (freebsd-amd64-cgo), const RTF_DYNAMIC = 16 pkg syscall (freebsd-amd64-cgo), const RTF_FMASK = 268752904 pkg syscall (freebsd-amd64-cgo), const RTF_GATEWAY = 2 pkg syscall (freebsd-amd64-cgo), const RTF_HOST = 4 pkg syscall (freebsd-amd64-cgo), const RTF_LLDATA = 1024 pkg syscall (freebsd-amd64-cgo), const RTF_LLINFO = 1024 pkg syscall (freebsd-amd64-cgo), const RTF_LOCAL = 2097152 pkg syscall (freebsd-amd64-cgo), const RTF_MODIFIED = 32 pkg syscall (freebsd-amd64-cgo), const RTF_MULTICAST = 8388608 pkg syscall (freebsd-amd64-cgo), const RTF_PINNED = 1048576 pkg syscall (freebsd-amd64-cgo), const RTF_PRCLONING = 65536 pkg syscall (freebsd-amd64-cgo), const RTF_PROTO1 = 32768 pkg syscall (freebsd-amd64-cgo), const RTF_PROTO2 = 16384 pkg syscall (freebsd-amd64-cgo), const RTF_PROTO3 = 262144 pkg syscall (freebsd-amd64-cgo), const RTF_REJECT = 8 pkg syscall (freebsd-amd64-cgo), const RTF_RNH_LOCKED = 1073741824 pkg syscall (freebsd-amd64-cgo), const RTF_STATIC = 2048 pkg syscall (freebsd-amd64-cgo), const RTF_STICKY = 268435456 pkg syscall (freebsd-amd64-cgo), const RTF_UP = 1 pkg syscall (freebsd-amd64-cgo), const RTF_XRESOLVE = 512 pkg syscall (freebsd-amd64-cgo), const RTM_ADD = 1 pkg syscall (freebsd-amd64-cgo), const RTM_CHANGE = 3 pkg syscall (freebsd-amd64-cgo), const RTM_DELADDR = 13 pkg syscall (freebsd-amd64-cgo), const RTM_DELETE = 2 pkg syscall (freebsd-amd64-cgo), const RTM_DELMADDR = 16 pkg syscall (freebsd-amd64-cgo), const RTM_GET = 4 pkg syscall (freebsd-amd64-cgo), const RTM_IEEE80211 = 18 pkg syscall (freebsd-amd64-cgo), const RTM_IFANNOUNCE = 17 pkg syscall (freebsd-amd64-cgo), const RTM_IFINFO = 14 pkg syscall (freebsd-amd64-cgo), const RTM_LOCK = 8 pkg syscall (freebsd-amd64-cgo), const RTM_LOSING = 5 pkg syscall (freebsd-amd64-cgo), const RTM_MISS = 7 pkg syscall (freebsd-amd64-cgo), const RTM_NEWADDR = 12 pkg syscall (freebsd-amd64-cgo), const RTM_NEWMADDR = 15 pkg syscall (freebsd-amd64-cgo), const RTM_OLDADD = 9 pkg syscall (freebsd-amd64-cgo), const RTM_OLDDEL = 10 pkg syscall (freebsd-amd64-cgo), const RTM_REDIRECT = 6 pkg syscall (freebsd-amd64-cgo), const RTM_RESOLVE = 11 pkg syscall (freebsd-amd64-cgo), const RTM_RTTUNIT = 1000000 pkg syscall (freebsd-amd64-cgo), const RTM_VERSION = 5 pkg syscall (freebsd-amd64-cgo), const RTV_EXPIRE = 4 pkg syscall (freebsd-amd64-cgo), const RTV_HOPCOUNT = 2 pkg syscall (freebsd-amd64-cgo), const RTV_MTU = 1 pkg syscall (freebsd-amd64-cgo), const RTV_RPIPE = 8 pkg syscall (freebsd-amd64-cgo), const RTV_RTT = 64 pkg syscall (freebsd-amd64-cgo), const RTV_RTTVAR = 128 pkg syscall (freebsd-amd64-cgo), const RTV_SPIPE = 16 pkg syscall (freebsd-amd64-cgo), const RTV_SSTHRESH = 32 pkg syscall (freebsd-amd64-cgo), const RTV_WEIGHT = 256 pkg syscall (freebsd-amd64-cgo), const RT_CACHING_CONTEXT = 1 pkg syscall (freebsd-amd64-cgo), const RT_DEFAULT_FIB = 0 pkg syscall (freebsd-amd64-cgo), const RUSAGE_CHILDREN = -1 pkg syscall (freebsd-amd64-cgo), const RUSAGE_SELF = 0 pkg syscall (freebsd-amd64-cgo), const RUSAGE_THREAD = 1 pkg syscall (freebsd-amd64-cgo), const SCM_BINTIME = 4 pkg syscall (freebsd-amd64-cgo), const SCM_CREDS = 3 pkg syscall (freebsd-amd64-cgo), const SCM_RIGHTS = 1 pkg syscall (freebsd-amd64-cgo), const SCM_TIMESTAMP = 2 pkg syscall (freebsd-amd64-cgo), const SIGBUS = 10 pkg syscall (freebsd-amd64-cgo), const SIGCHLD = 20 pkg syscall (freebsd-amd64-cgo), const SIGCONT = 19 pkg syscall (freebsd-amd64-cgo), const SIGEMT = 7 pkg syscall (freebsd-amd64-cgo), const SIGINFO = 29 pkg syscall (freebsd-amd64-cgo), const SIGIO = 23 pkg syscall (freebsd-amd64-cgo), const SIGIOT = 6 pkg syscall (freebsd-amd64-cgo), const SIGLWP = 32 pkg syscall (freebsd-amd64-cgo), const SIGPROF = 27 pkg syscall (freebsd-amd64-cgo), const SIGSTOP = 17 pkg syscall (freebsd-amd64-cgo), const SIGSYS = 12 pkg syscall (freebsd-amd64-cgo), const SIGTHR = 32 pkg syscall (freebsd-amd64-cgo), const SIGTSTP = 18 pkg syscall (freebsd-amd64-cgo), const SIGTTIN = 21 pkg syscall (freebsd-amd64-cgo), const SIGTTOU = 22 pkg syscall (freebsd-amd64-cgo), const SIGURG = 16 pkg syscall (freebsd-amd64-cgo), const SIGUSR1 = 30 pkg syscall (freebsd-amd64-cgo), const SIGUSR2 = 31 pkg syscall (freebsd-amd64-cgo), const SIGVTALRM = 26 pkg syscall (freebsd-amd64-cgo), const SIGWINCH = 28 pkg syscall (freebsd-amd64-cgo), const SIGXCPU = 24 pkg syscall (freebsd-amd64-cgo), const SIGXFSZ = 25 pkg syscall (freebsd-amd64-cgo), const SIOCADDMULTI = 2149607729 pkg syscall (freebsd-amd64-cgo), const SIOCADDRT = 2151707146 pkg syscall (freebsd-amd64-cgo), const SIOCAIFADDR = 2151704858 pkg syscall (freebsd-amd64-cgo), const SIOCAIFGROUP = 2150132103 pkg syscall (freebsd-amd64-cgo), const SIOCALIFADDR = 2165860635 pkg syscall (freebsd-amd64-cgo), const SIOCATMARK = 1074033415 pkg syscall (freebsd-amd64-cgo), const SIOCDELMULTI = 2149607730 pkg syscall (freebsd-amd64-cgo), const SIOCDELRT = 2151707147 pkg syscall (freebsd-amd64-cgo), const SIOCDIFADDR = 2149607705 pkg syscall (freebsd-amd64-cgo), const SIOCDIFGROUP = 2150132105 pkg syscall (freebsd-amd64-cgo), const SIOCDIFPHYADDR = 2149607753 pkg syscall (freebsd-amd64-cgo), const SIOCDLIFADDR = 2165860637 pkg syscall (freebsd-amd64-cgo), const SIOCGDRVSPEC = 3223873915 pkg syscall (freebsd-amd64-cgo), const SIOCGETSGCNT = 3223351824 pkg syscall (freebsd-amd64-cgo), const SIOCGETVIFCNT = 3223876111 pkg syscall (freebsd-amd64-cgo), const SIOCGHIWAT = 1074033409 pkg syscall (freebsd-amd64-cgo), const SIOCGIFADDR = 3223349537 pkg syscall (freebsd-amd64-cgo), const SIOCGIFBRDADDR = 3223349539 pkg syscall (freebsd-amd64-cgo), const SIOCGIFCAP = 3223349535 pkg syscall (freebsd-amd64-cgo), const SIOCGIFCONF = 3222300964 pkg syscall (freebsd-amd64-cgo), const SIOCGIFDESCR = 3223349546 pkg syscall (freebsd-amd64-cgo), const SIOCGIFDSTADDR = 3223349538 pkg syscall (freebsd-amd64-cgo), const SIOCGIFFIB = 3223349596 pkg syscall (freebsd-amd64-cgo), const SIOCGIFFLAGS = 3223349521 pkg syscall (freebsd-amd64-cgo), const SIOCGIFGENERIC = 3223349562 pkg syscall (freebsd-amd64-cgo), const SIOCGIFGMEMB = 3223873930 pkg syscall (freebsd-amd64-cgo), const SIOCGIFGROUP = 3223873928 pkg syscall (freebsd-amd64-cgo), const SIOCGIFINDEX = 3223349536 pkg syscall (freebsd-amd64-cgo), const SIOCGIFMAC = 3223349542 pkg syscall (freebsd-amd64-cgo), const SIOCGIFMEDIA = 3224398136 pkg syscall (freebsd-amd64-cgo), const SIOCGIFMETRIC = 3223349527 pkg syscall (freebsd-amd64-cgo), const SIOCGIFMTU = 3223349555 pkg syscall (freebsd-amd64-cgo), const SIOCGIFNETMASK = 3223349541 pkg syscall (freebsd-amd64-cgo), const SIOCGIFPDSTADDR = 3223349576 pkg syscall (freebsd-amd64-cgo), const SIOCGIFPHYS = 3223349557 pkg syscall (freebsd-amd64-cgo), const SIOCGIFPSRCADDR = 3223349575 pkg syscall (freebsd-amd64-cgo), const SIOCGIFSTATUS = 3274795323 pkg syscall (freebsd-amd64-cgo), const SIOCGLIFADDR = 3239602460 pkg syscall (freebsd-amd64-cgo), const SIOCGLIFPHYADDR = 3239602507 pkg syscall (freebsd-amd64-cgo), const SIOCGLOWAT = 1074033411 pkg syscall (freebsd-amd64-cgo), const SIOCGPGRP = 1074033417 pkg syscall (freebsd-amd64-cgo), const SIOCGPRIVATE_0 = 3223349584 pkg syscall (freebsd-amd64-cgo), const SIOCGPRIVATE_1 = 3223349585 pkg syscall (freebsd-amd64-cgo), const SIOCIFCREATE = 3223349626 pkg syscall (freebsd-amd64-cgo), const SIOCIFCREATE2 = 3223349628 pkg syscall (freebsd-amd64-cgo), const SIOCIFDESTROY = 2149607801 pkg syscall (freebsd-amd64-cgo), const SIOCIFGCLONERS = 3222301048 pkg syscall (freebsd-amd64-cgo), const SIOCSDRVSPEC = 2150132091 pkg syscall (freebsd-amd64-cgo), const SIOCSHIWAT = 2147775232 pkg syscall (freebsd-amd64-cgo), const SIOCSIFADDR = 2149607692 pkg syscall (freebsd-amd64-cgo), const SIOCSIFBRDADDR = 2149607699 pkg syscall (freebsd-amd64-cgo), const SIOCSIFCAP = 2149607710 pkg syscall (freebsd-amd64-cgo), const SIOCSIFDESCR = 2149607721 pkg syscall (freebsd-amd64-cgo), const SIOCSIFDSTADDR = 2149607694 pkg syscall (freebsd-amd64-cgo), const SIOCSIFFIB = 2149607773 pkg syscall (freebsd-amd64-cgo), const SIOCSIFFLAGS = 2149607696 pkg syscall (freebsd-amd64-cgo), const SIOCSIFGENERIC = 2149607737 pkg syscall (freebsd-amd64-cgo), const SIOCSIFLLADDR = 2149607740 pkg syscall (freebsd-amd64-cgo), const SIOCSIFMAC = 2149607719 pkg syscall (freebsd-amd64-cgo), const SIOCSIFMEDIA = 3223349559 pkg syscall (freebsd-amd64-cgo), const SIOCSIFMETRIC = 2149607704 pkg syscall (freebsd-amd64-cgo), const SIOCSIFMTU = 2149607732 pkg syscall (freebsd-amd64-cgo), const SIOCSIFNAME = 2149607720 pkg syscall (freebsd-amd64-cgo), const SIOCSIFNETMASK = 2149607702 pkg syscall (freebsd-amd64-cgo), const SIOCSIFPHYADDR = 2151704902 pkg syscall (freebsd-amd64-cgo), const SIOCSIFPHYS = 2149607734 pkg syscall (freebsd-amd64-cgo), const SIOCSIFRVNET = 3223349595 pkg syscall (freebsd-amd64-cgo), const SIOCSIFVNET = 3223349594 pkg syscall (freebsd-amd64-cgo), const SIOCSLIFPHYADDR = 2165860682 pkg syscall (freebsd-amd64-cgo), const SIOCSLOWAT = 2147775234 pkg syscall (freebsd-amd64-cgo), const SIOCSPGRP = 2147775240 pkg syscall (freebsd-amd64-cgo), const SOCK_MAXADDRLEN = 255 pkg syscall (freebsd-amd64-cgo), const SOCK_RDM = 4 pkg syscall (freebsd-amd64-cgo), const SOL_SOCKET = 65535 pkg syscall (freebsd-amd64-cgo), const SOMAXCONN = 128 pkg syscall (freebsd-amd64-cgo), const SO_ACCEPTCONN = 2 pkg syscall (freebsd-amd64-cgo), const SO_ACCEPTFILTER = 4096 pkg syscall (freebsd-amd64-cgo), const SO_BINTIME = 8192 pkg syscall (freebsd-amd64-cgo), const SO_BROADCAST = 32 pkg syscall (freebsd-amd64-cgo), const SO_DEBUG = 1 pkg syscall (freebsd-amd64-cgo), const SO_DONTROUTE = 16 pkg syscall (freebsd-amd64-cgo), const SO_ERROR = 4103 pkg syscall (freebsd-amd64-cgo), const SO_KEEPALIVE = 8 pkg syscall (freebsd-amd64-cgo), const SO_LABEL = 4105 pkg syscall (freebsd-amd64-cgo), const SO_LINGER = 128 pkg syscall (freebsd-amd64-cgo), const SO_LISTENINCQLEN = 4115 pkg syscall (freebsd-amd64-cgo), const SO_LISTENQLEN = 4114 pkg syscall (freebsd-amd64-cgo), const SO_LISTENQLIMIT = 4113 pkg syscall (freebsd-amd64-cgo), const SO_NOSIGPIPE = 2048 pkg syscall (freebsd-amd64-cgo), const SO_NO_DDP = 32768 pkg syscall (freebsd-amd64-cgo), const SO_NO_OFFLOAD = 16384 pkg syscall (freebsd-amd64-cgo), const SO_OOBINLINE = 256 pkg syscall (freebsd-amd64-cgo), const SO_PEERLABEL = 4112 pkg syscall (freebsd-amd64-cgo), const SO_PROTOCOL = 4118 pkg syscall (freebsd-amd64-cgo), const SO_PROTOTYPE = 4118 pkg syscall (freebsd-amd64-cgo), const SO_RCVBUF = 4098 pkg syscall (freebsd-amd64-cgo), const SO_RCVLOWAT = 4100 pkg syscall (freebsd-amd64-cgo), const SO_RCVTIMEO = 4102 pkg syscall (freebsd-amd64-cgo), const SO_REUSEADDR = 4 pkg syscall (freebsd-amd64-cgo), const SO_REUSEPORT = 512 pkg syscall (freebsd-amd64-cgo), const SO_SETFIB = 4116 pkg syscall (freebsd-amd64-cgo), const SO_SNDBUF = 4097 pkg syscall (freebsd-amd64-cgo), const SO_SNDLOWAT = 4099 pkg syscall (freebsd-amd64-cgo), const SO_SNDTIMEO = 4101 pkg syscall (freebsd-amd64-cgo), const SO_TIMESTAMP = 1024 pkg syscall (freebsd-amd64-cgo), const SO_TYPE = 4104 pkg syscall (freebsd-amd64-cgo), const SO_USELOOPBACK = 64 pkg syscall (freebsd-amd64-cgo), const SO_USER_COOKIE = 4117 pkg syscall (freebsd-amd64-cgo), const SYS_ABORT2 = 463 pkg syscall (freebsd-amd64-cgo), const SYS_ACCEPT = 30 pkg syscall (freebsd-amd64-cgo), const SYS_ACCESS = 33 pkg syscall (freebsd-amd64-cgo), const SYS_ACCT = 51 pkg syscall (freebsd-amd64-cgo), const SYS_ADJTIME = 140 pkg syscall (freebsd-amd64-cgo), const SYS_AUDIT = 445 pkg syscall (freebsd-amd64-cgo), const SYS_AUDITCTL = 453 pkg syscall (freebsd-amd64-cgo), const SYS_AUDITON = 446 pkg syscall (freebsd-amd64-cgo), const SYS_BIND = 104 pkg syscall (freebsd-amd64-cgo), const SYS_CAP_ENTER = 516 pkg syscall (freebsd-amd64-cgo), const SYS_CAP_GETMODE = 517 pkg syscall (freebsd-amd64-cgo), const SYS_CAP_GETRIGHTS = 515 pkg syscall (freebsd-amd64-cgo), const SYS_CAP_NEW = 514 pkg syscall (freebsd-amd64-cgo), const SYS_CHDIR = 12 pkg syscall (freebsd-amd64-cgo), const SYS_CHFLAGS = 34 pkg syscall (freebsd-amd64-cgo), const SYS_CHMOD = 15 pkg syscall (freebsd-amd64-cgo), const SYS_CHOWN = 16 pkg syscall (freebsd-amd64-cgo), const SYS_CHROOT = 61 pkg syscall (freebsd-amd64-cgo), const SYS_CLOCK_GETCPUCLOCKID2 = 247 pkg syscall (freebsd-amd64-cgo), const SYS_CLOCK_GETRES = 234 pkg syscall (freebsd-amd64-cgo), const SYS_CLOCK_GETTIME = 232 pkg syscall (freebsd-amd64-cgo), const SYS_CLOCK_SETTIME = 233 pkg syscall (freebsd-amd64-cgo), const SYS_CLOSE = 6 pkg syscall (freebsd-amd64-cgo), const SYS_CLOSEFROM = 509 pkg syscall (freebsd-amd64-cgo), const SYS_CONNECT = 98 pkg syscall (freebsd-amd64-cgo), const SYS_CPUSET = 484 pkg syscall (freebsd-amd64-cgo), const SYS_CPUSET_GETAFFINITY = 487 pkg syscall (freebsd-amd64-cgo), const SYS_CPUSET_GETID = 486 pkg syscall (freebsd-amd64-cgo), const SYS_CPUSET_SETAFFINITY = 488 pkg syscall (freebsd-amd64-cgo), const SYS_CPUSET_SETID = 485 pkg syscall (freebsd-amd64-cgo), const SYS_DUP = 41 pkg syscall (freebsd-amd64-cgo), const SYS_DUP2 = 90 pkg syscall (freebsd-amd64-cgo), const SYS_EACCESS = 376 pkg syscall (freebsd-amd64-cgo), const SYS_EXECVE = 59 pkg syscall (freebsd-amd64-cgo), const SYS_EXIT = 1 pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTRCTL = 355 pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_DELETE_FD = 373 pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_DELETE_FILE = 358 pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_DELETE_LINK = 414 pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_GET_FD = 372 pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_GET_FILE = 357 pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_GET_LINK = 413 pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_LIST_FD = 437 pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_LIST_FILE = 438 pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_LIST_LINK = 439 pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_SET_FD = 371 pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_SET_FILE = 356 pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_SET_LINK = 412 pkg syscall (freebsd-amd64-cgo), const SYS_FACCESSAT = 489 pkg syscall (freebsd-amd64-cgo), const SYS_FCHDIR = 13 pkg syscall (freebsd-amd64-cgo), const SYS_FCHFLAGS = 35 pkg syscall (freebsd-amd64-cgo), const SYS_FCHMOD = 124 pkg syscall (freebsd-amd64-cgo), const SYS_FCHMODAT = 490 pkg syscall (freebsd-amd64-cgo), const SYS_FCHOWN = 123 pkg syscall (freebsd-amd64-cgo), const SYS_FCHOWNAT = 491 pkg syscall (freebsd-amd64-cgo), const SYS_FCNTL = 92 pkg syscall (freebsd-amd64-cgo), const SYS_FEXECVE = 492 pkg syscall (freebsd-amd64-cgo), const SYS_FFCLOCK_GETCOUNTER = 241 pkg syscall (freebsd-amd64-cgo), const SYS_FFCLOCK_GETESTIMATE = 243 pkg syscall (freebsd-amd64-cgo), const SYS_FFCLOCK_SETESTIMATE = 242 pkg syscall (freebsd-amd64-cgo), const SYS_FHOPEN = 298 pkg syscall (freebsd-amd64-cgo), const SYS_FHSTAT = 299 pkg syscall (freebsd-amd64-cgo), const SYS_FHSTATFS = 398 pkg syscall (freebsd-amd64-cgo), const SYS_FLOCK = 131 pkg syscall (freebsd-amd64-cgo), const SYS_FORK = 2 pkg syscall (freebsd-amd64-cgo), const SYS_FPATHCONF = 192 pkg syscall (freebsd-amd64-cgo), const SYS_FREEBSD6_FTRUNCATE = 201 pkg syscall (freebsd-amd64-cgo), const SYS_FREEBSD6_LSEEK = 199 pkg syscall (freebsd-amd64-cgo), const SYS_FREEBSD6_MMAP = 197 pkg syscall (freebsd-amd64-cgo), const SYS_FREEBSD6_PREAD = 173 pkg syscall (freebsd-amd64-cgo), const SYS_FREEBSD6_PWRITE = 174 pkg syscall (freebsd-amd64-cgo), const SYS_FREEBSD6_TRUNCATE = 200 pkg syscall (freebsd-amd64-cgo), const SYS_FSTAT = 189 pkg syscall (freebsd-amd64-cgo), const SYS_FSTATAT = 493 pkg syscall (freebsd-amd64-cgo), const SYS_FSTATFS = 397 pkg syscall (freebsd-amd64-cgo), const SYS_FSYNC = 95 pkg syscall (freebsd-amd64-cgo), const SYS_FTRUNCATE = 480 pkg syscall (freebsd-amd64-cgo), const SYS_FUTIMES = 206 pkg syscall (freebsd-amd64-cgo), const SYS_FUTIMESAT = 494 pkg syscall (freebsd-amd64-cgo), const SYS_GETAUDIT = 449 pkg syscall (freebsd-amd64-cgo), const SYS_GETAUDIT_ADDR = 451 pkg syscall (freebsd-amd64-cgo), const SYS_GETAUID = 447 pkg syscall (freebsd-amd64-cgo), const SYS_GETCONTEXT = 421 pkg syscall (freebsd-amd64-cgo), const SYS_GETDENTS = 272 pkg syscall (freebsd-amd64-cgo), const SYS_GETDIRENTRIES = 196 pkg syscall (freebsd-amd64-cgo), const SYS_GETDTABLESIZE = 89 pkg syscall (freebsd-amd64-cgo), const SYS_GETEGID = 43 pkg syscall (freebsd-amd64-cgo), const SYS_GETEUID = 25 pkg syscall (freebsd-amd64-cgo), const SYS_GETFH = 161 pkg syscall (freebsd-amd64-cgo), const SYS_GETFSSTAT = 395 pkg syscall (freebsd-amd64-cgo), const SYS_GETGID = 47 pkg syscall (freebsd-amd64-cgo), const SYS_GETGROUPS = 79 pkg syscall (freebsd-amd64-cgo), const SYS_GETITIMER = 86 pkg syscall (freebsd-amd64-cgo), const SYS_GETLOGIN = 49 pkg syscall (freebsd-amd64-cgo), const SYS_GETLOGINCLASS = 523 pkg syscall (freebsd-amd64-cgo), const SYS_GETPEERNAME = 31 pkg syscall (freebsd-amd64-cgo), const SYS_GETPGID = 207 pkg syscall (freebsd-amd64-cgo), const SYS_GETPGRP = 81 pkg syscall (freebsd-amd64-cgo), const SYS_GETPID = 20 pkg syscall (freebsd-amd64-cgo), const SYS_GETPPID = 39 pkg syscall (freebsd-amd64-cgo), const SYS_GETPRIORITY = 100 pkg syscall (freebsd-amd64-cgo), const SYS_GETRESGID = 361 pkg syscall (freebsd-amd64-cgo), const SYS_GETRESUID = 360 pkg syscall (freebsd-amd64-cgo), const SYS_GETRLIMIT = 194 pkg syscall (freebsd-amd64-cgo), const SYS_GETRUSAGE = 117 pkg syscall (freebsd-amd64-cgo), const SYS_GETSID = 310 pkg syscall (freebsd-amd64-cgo), const SYS_GETSOCKNAME = 32 pkg syscall (freebsd-amd64-cgo), const SYS_GETSOCKOPT = 118 pkg syscall (freebsd-amd64-cgo), const SYS_GETTIMEOFDAY = 116 pkg syscall (freebsd-amd64-cgo), const SYS_GETUID = 24 pkg syscall (freebsd-amd64-cgo), const SYS_IOCTL = 54 pkg syscall (freebsd-amd64-cgo), const SYS_ISSETUGID = 253 pkg syscall (freebsd-amd64-cgo), const SYS_JAIL = 338 pkg syscall (freebsd-amd64-cgo), const SYS_JAIL_ATTACH = 436 pkg syscall (freebsd-amd64-cgo), const SYS_JAIL_GET = 506 pkg syscall (freebsd-amd64-cgo), const SYS_JAIL_REMOVE = 508 pkg syscall (freebsd-amd64-cgo), const SYS_JAIL_SET = 507 pkg syscall (freebsd-amd64-cgo), const SYS_KENV = 390 pkg syscall (freebsd-amd64-cgo), const SYS_KEVENT = 363 pkg syscall (freebsd-amd64-cgo), const SYS_KILL = 37 pkg syscall (freebsd-amd64-cgo), const SYS_KLDFIND = 306 pkg syscall (freebsd-amd64-cgo), const SYS_KLDFIRSTMOD = 309 pkg syscall (freebsd-amd64-cgo), const SYS_KLDLOAD = 304 pkg syscall (freebsd-amd64-cgo), const SYS_KLDNEXT = 307 pkg syscall (freebsd-amd64-cgo), const SYS_KLDSTAT = 308 pkg syscall (freebsd-amd64-cgo), const SYS_KLDSYM = 337 pkg syscall (freebsd-amd64-cgo), const SYS_KLDUNLOAD = 305 pkg syscall (freebsd-amd64-cgo), const SYS_KLDUNLOADF = 444 pkg syscall (freebsd-amd64-cgo), const SYS_KQUEUE = 362 pkg syscall (freebsd-amd64-cgo), const SYS_KTIMER_CREATE = 235 pkg syscall (freebsd-amd64-cgo), const SYS_KTIMER_DELETE = 236 pkg syscall (freebsd-amd64-cgo), const SYS_KTIMER_GETOVERRUN = 239 pkg syscall (freebsd-amd64-cgo), const SYS_KTIMER_GETTIME = 238 pkg syscall (freebsd-amd64-cgo), const SYS_KTIMER_SETTIME = 237 pkg syscall (freebsd-amd64-cgo), const SYS_KTRACE = 45 pkg syscall (freebsd-amd64-cgo), const SYS_LCHFLAGS = 391 pkg syscall (freebsd-amd64-cgo), const SYS_LCHMOD = 274 pkg syscall (freebsd-amd64-cgo), const SYS_LCHOWN = 254 pkg syscall (freebsd-amd64-cgo), const SYS_LGETFH = 160 pkg syscall (freebsd-amd64-cgo), const SYS_LINK = 9 pkg syscall (freebsd-amd64-cgo), const SYS_LINKAT = 495 pkg syscall (freebsd-amd64-cgo), const SYS_LISTEN = 106 pkg syscall (freebsd-amd64-cgo), const SYS_LPATHCONF = 513 pkg syscall (freebsd-amd64-cgo), const SYS_LSEEK = 478 pkg syscall (freebsd-amd64-cgo), const SYS_LSTAT = 190 pkg syscall (freebsd-amd64-cgo), const SYS_LUTIMES = 276 pkg syscall (freebsd-amd64-cgo), const SYS_MAC_SYSCALL = 394 pkg syscall (freebsd-amd64-cgo), const SYS_MADVISE = 75 pkg syscall (freebsd-amd64-cgo), const SYS_MINCORE = 78 pkg syscall (freebsd-amd64-cgo), const SYS_MINHERIT = 250 pkg syscall (freebsd-amd64-cgo), const SYS_MKDIR = 136 pkg syscall (freebsd-amd64-cgo), const SYS_MKDIRAT = 496 pkg syscall (freebsd-amd64-cgo), const SYS_MKFIFO = 132 pkg syscall (freebsd-amd64-cgo), const SYS_MKFIFOAT = 497 pkg syscall (freebsd-amd64-cgo), const SYS_MKNOD = 14 pkg syscall (freebsd-amd64-cgo), const SYS_MKNODAT = 498 pkg syscall (freebsd-amd64-cgo), const SYS_MLOCK = 203 pkg syscall (freebsd-amd64-cgo), const SYS_MLOCKALL = 324 pkg syscall (freebsd-amd64-cgo), const SYS_MMAP = 477 pkg syscall (freebsd-amd64-cgo), const SYS_MODFIND = 303 pkg syscall (freebsd-amd64-cgo), const SYS_MODFNEXT = 302 pkg syscall (freebsd-amd64-cgo), const SYS_MODNEXT = 300 pkg syscall (freebsd-amd64-cgo), const SYS_MODSTAT = 301 pkg syscall (freebsd-amd64-cgo), const SYS_MOUNT = 21 pkg syscall (freebsd-amd64-cgo), const SYS_MPROTECT = 74 pkg syscall (freebsd-amd64-cgo), const SYS_MSYNC = 65 pkg syscall (freebsd-amd64-cgo), const SYS_MUNLOCK = 204 pkg syscall (freebsd-amd64-cgo), const SYS_MUNLOCKALL = 325 pkg syscall (freebsd-amd64-cgo), const SYS_MUNMAP = 73 pkg syscall (freebsd-amd64-cgo), const SYS_NANOSLEEP = 240 pkg syscall (freebsd-amd64-cgo), const SYS_NFSTAT = 279 pkg syscall (freebsd-amd64-cgo), const SYS_NLSTAT = 280 pkg syscall (freebsd-amd64-cgo), const SYS_NMOUNT = 378 pkg syscall (freebsd-amd64-cgo), const SYS_NSTAT = 278 pkg syscall (freebsd-amd64-cgo), const SYS_NTP_ADJTIME = 176 pkg syscall (freebsd-amd64-cgo), const SYS_NTP_GETTIME = 248 pkg syscall (freebsd-amd64-cgo), const SYS_OBREAK = 17 pkg syscall (freebsd-amd64-cgo), const SYS_OPEN = 5 pkg syscall (freebsd-amd64-cgo), const SYS_OPENAT = 499 pkg syscall (freebsd-amd64-cgo), const SYS_OPENBSD_POLL = 252 pkg syscall (freebsd-amd64-cgo), const SYS_OVADVISE = 72 pkg syscall (freebsd-amd64-cgo), const SYS_PATHCONF = 191 pkg syscall (freebsd-amd64-cgo), const SYS_PDFORK = 518 pkg syscall (freebsd-amd64-cgo), const SYS_PDGETPID = 520 pkg syscall (freebsd-amd64-cgo), const SYS_PDKILL = 519 pkg syscall (freebsd-amd64-cgo), const SYS_PIPE = 42 pkg syscall (freebsd-amd64-cgo), const SYS_POLL = 209 pkg syscall (freebsd-amd64-cgo), const SYS_POSIX_FADVISE = 531 pkg syscall (freebsd-amd64-cgo), const SYS_POSIX_FALLOCATE = 530 pkg syscall (freebsd-amd64-cgo), const SYS_POSIX_OPENPT = 504 pkg syscall (freebsd-amd64-cgo), const SYS_PREAD = 475 pkg syscall (freebsd-amd64-cgo), const SYS_PREADV = 289 pkg syscall (freebsd-amd64-cgo), const SYS_PROFIL = 44 pkg syscall (freebsd-amd64-cgo), const SYS_PSELECT = 522 pkg syscall (freebsd-amd64-cgo), const SYS_PTRACE = 26 pkg syscall (freebsd-amd64-cgo), const SYS_PWRITE = 476 pkg syscall (freebsd-amd64-cgo), const SYS_PWRITEV = 290 pkg syscall (freebsd-amd64-cgo), const SYS_QUOTACTL = 148 pkg syscall (freebsd-amd64-cgo), const SYS_RCTL_ADD_RULE = 528 pkg syscall (freebsd-amd64-cgo), const SYS_RCTL_GET_LIMITS = 527 pkg syscall (freebsd-amd64-cgo), const SYS_RCTL_GET_RACCT = 525 pkg syscall (freebsd-amd64-cgo), const SYS_RCTL_GET_RULES = 526 pkg syscall (freebsd-amd64-cgo), const SYS_RCTL_REMOVE_RULE = 529 pkg syscall (freebsd-amd64-cgo), const SYS_READ = 3 pkg syscall (freebsd-amd64-cgo), const SYS_READLINK = 58 pkg syscall (freebsd-amd64-cgo), const SYS_READLINKAT = 500 pkg syscall (freebsd-amd64-cgo), const SYS_READV = 120 pkg syscall (freebsd-amd64-cgo), const SYS_REBOOT = 55 pkg syscall (freebsd-amd64-cgo), const SYS_RECVFROM = 29 pkg syscall (freebsd-amd64-cgo), const SYS_RECVMSG = 27 pkg syscall (freebsd-amd64-cgo), const SYS_RENAME = 128 pkg syscall (freebsd-amd64-cgo), const SYS_RENAMEAT = 501 pkg syscall (freebsd-amd64-cgo), const SYS_REVOKE = 56 pkg syscall (freebsd-amd64-cgo), const SYS_RFORK = 251 pkg syscall (freebsd-amd64-cgo), const SYS_RMDIR = 137 pkg syscall (freebsd-amd64-cgo), const SYS_RTPRIO = 166 pkg syscall (freebsd-amd64-cgo), const SYS_RTPRIO_THREAD = 466 pkg syscall (freebsd-amd64-cgo), const SYS_SBRK = 69 pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_GETPARAM = 328 pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_GETSCHEDULER = 330 pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_GET_PRIORITY_MAX = 332 pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_GET_PRIORITY_MIN = 333 pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_RR_GET_INTERVAL = 334 pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_SETPARAM = 327 pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_SETSCHEDULER = 329 pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_YIELD = 331 pkg syscall (freebsd-amd64-cgo), const SYS_SCTP_GENERIC_RECVMSG = 474 pkg syscall (freebsd-amd64-cgo), const SYS_SCTP_GENERIC_SENDMSG = 472 pkg syscall (freebsd-amd64-cgo), const SYS_SCTP_GENERIC_SENDMSG_IOV = 473 pkg syscall (freebsd-amd64-cgo), const SYS_SCTP_PEELOFF = 471 pkg syscall (freebsd-amd64-cgo), const SYS_SELECT = 93 pkg syscall (freebsd-amd64-cgo), const SYS_SENDFILE = 393 pkg syscall (freebsd-amd64-cgo), const SYS_SENDMSG = 28 pkg syscall (freebsd-amd64-cgo), const SYS_SENDTO = 133 pkg syscall (freebsd-amd64-cgo), const SYS_SETAUDIT = 450 pkg syscall (freebsd-amd64-cgo), const SYS_SETAUDIT_ADDR = 452 pkg syscall (freebsd-amd64-cgo), const SYS_SETAUID = 448 pkg syscall (freebsd-amd64-cgo), const SYS_SETCONTEXT = 422 pkg syscall (freebsd-amd64-cgo), const SYS_SETEGID = 182 pkg syscall (freebsd-amd64-cgo), const SYS_SETEUID = 183 pkg syscall (freebsd-amd64-cgo), const SYS_SETFIB = 175 pkg syscall (freebsd-amd64-cgo), const SYS_SETGID = 181 pkg syscall (freebsd-amd64-cgo), const SYS_SETGROUPS = 80 pkg syscall (freebsd-amd64-cgo), const SYS_SETITIMER = 83 pkg syscall (freebsd-amd64-cgo), const SYS_SETLOGIN = 50 pkg syscall (freebsd-amd64-cgo), const SYS_SETLOGINCLASS = 524 pkg syscall (freebsd-amd64-cgo), const SYS_SETPGID = 82 pkg syscall (freebsd-amd64-cgo), const SYS_SETPRIORITY = 96 pkg syscall (freebsd-amd64-cgo), const SYS_SETREGID = 127 pkg syscall (freebsd-amd64-cgo), const SYS_SETRESGID = 312 pkg syscall (freebsd-amd64-cgo), const SYS_SETRESUID = 311 pkg syscall (freebsd-amd64-cgo), const SYS_SETREUID = 126 pkg syscall (freebsd-amd64-cgo), const SYS_SETRLIMIT = 195 pkg syscall (freebsd-amd64-cgo), const SYS_SETSID = 147 pkg syscall (freebsd-amd64-cgo), const SYS_SETSOCKOPT = 105 pkg syscall (freebsd-amd64-cgo), const SYS_SETTIMEOFDAY = 122 pkg syscall (freebsd-amd64-cgo), const SYS_SETUID = 23 pkg syscall (freebsd-amd64-cgo), const SYS_SHM_OPEN = 482 pkg syscall (freebsd-amd64-cgo), const SYS_SHM_UNLINK = 483 pkg syscall (freebsd-amd64-cgo), const SYS_SHUTDOWN = 134 pkg syscall (freebsd-amd64-cgo), const SYS_SIGACTION = 416 pkg syscall (freebsd-amd64-cgo), const SYS_SIGALTSTACK = 53 pkg syscall (freebsd-amd64-cgo), const SYS_SIGPENDING = 343 pkg syscall (freebsd-amd64-cgo), const SYS_SIGPROCMASK = 340 pkg syscall (freebsd-amd64-cgo), const SYS_SIGQUEUE = 456 pkg syscall (freebsd-amd64-cgo), const SYS_SIGRETURN = 417 pkg syscall (freebsd-amd64-cgo), const SYS_SIGSUSPEND = 341 pkg syscall (freebsd-amd64-cgo), const SYS_SIGTIMEDWAIT = 345 pkg syscall (freebsd-amd64-cgo), const SYS_SIGWAIT = 429 pkg syscall (freebsd-amd64-cgo), const SYS_SIGWAITINFO = 346 pkg syscall (freebsd-amd64-cgo), const SYS_SOCKET = 97 pkg syscall (freebsd-amd64-cgo), const SYS_SOCKETPAIR = 135 pkg syscall (freebsd-amd64-cgo), const SYS_SSTK = 70 pkg syscall (freebsd-amd64-cgo), const SYS_STAT = 188 pkg syscall (freebsd-amd64-cgo), const SYS_STATFS = 396 pkg syscall (freebsd-amd64-cgo), const SYS_SWAPCONTEXT = 423 pkg syscall (freebsd-amd64-cgo), const SYS_SWAPOFF = 424 pkg syscall (freebsd-amd64-cgo), const SYS_SWAPON = 85 pkg syscall (freebsd-amd64-cgo), const SYS_SYMLINK = 57 pkg syscall (freebsd-amd64-cgo), const SYS_SYMLINKAT = 502 pkg syscall (freebsd-amd64-cgo), const SYS_SYNC = 36 pkg syscall (freebsd-amd64-cgo), const SYS_SYSARCH = 165 pkg syscall (freebsd-amd64-cgo), const SYS_THR_CREATE = 430 pkg syscall (freebsd-amd64-cgo), const SYS_THR_EXIT = 431 pkg syscall (freebsd-amd64-cgo), const SYS_THR_KILL = 433 pkg syscall (freebsd-amd64-cgo), const SYS_THR_KILL2 = 481 pkg syscall (freebsd-amd64-cgo), const SYS_THR_NEW = 455 pkg syscall (freebsd-amd64-cgo), const SYS_THR_SELF = 432 pkg syscall (freebsd-amd64-cgo), const SYS_THR_SET_NAME = 464 pkg syscall (freebsd-amd64-cgo), const SYS_THR_SUSPEND = 442 pkg syscall (freebsd-amd64-cgo), const SYS_THR_WAKE = 443 pkg syscall (freebsd-amd64-cgo), const SYS_TRUNCATE = 479 pkg syscall (freebsd-amd64-cgo), const SYS_UMASK = 60 pkg syscall (freebsd-amd64-cgo), const SYS_UNDELETE = 205 pkg syscall (freebsd-amd64-cgo), const SYS_UNLINK = 10 pkg syscall (freebsd-amd64-cgo), const SYS_UNLINKAT = 503 pkg syscall (freebsd-amd64-cgo), const SYS_UNMOUNT = 22 pkg syscall (freebsd-amd64-cgo), const SYS_UTIMES = 138 pkg syscall (freebsd-amd64-cgo), const SYS_UTRACE = 335 pkg syscall (freebsd-amd64-cgo), const SYS_UUIDGEN = 392 pkg syscall (freebsd-amd64-cgo), const SYS_VFORK = 66 pkg syscall (freebsd-amd64-cgo), const SYS_WAIT4 = 7 pkg syscall (freebsd-amd64-cgo), const SYS_WAIT6 = 532 pkg syscall (freebsd-amd64-cgo), const SYS_WRITE = 4 pkg syscall (freebsd-amd64-cgo), const SYS_WRITEV = 121 pkg syscall (freebsd-amd64-cgo), const SYS_YIELD = 321 pkg syscall (freebsd-amd64-cgo), const SYS__UMTX_LOCK = 434 pkg syscall (freebsd-amd64-cgo), const SYS__UMTX_OP = 454 pkg syscall (freebsd-amd64-cgo), const SYS__UMTX_UNLOCK = 435 pkg syscall (freebsd-amd64-cgo), const SYS___ACL_ACLCHECK_FD = 354 pkg syscall (freebsd-amd64-cgo), const SYS___ACL_ACLCHECK_FILE = 353 pkg syscall (freebsd-amd64-cgo), const SYS___ACL_ACLCHECK_LINK = 428 pkg syscall (freebsd-amd64-cgo), const SYS___ACL_DELETE_FD = 352 pkg syscall (freebsd-amd64-cgo), const SYS___ACL_DELETE_FILE = 351 pkg syscall (freebsd-amd64-cgo), const SYS___ACL_DELETE_LINK = 427 pkg syscall (freebsd-amd64-cgo), const SYS___ACL_GET_FD = 349 pkg syscall (freebsd-amd64-cgo), const SYS___ACL_GET_FILE = 347 pkg syscall (freebsd-amd64-cgo), const SYS___ACL_GET_LINK = 425 pkg syscall (freebsd-amd64-cgo), const SYS___ACL_SET_FD = 350 pkg syscall (freebsd-amd64-cgo), const SYS___ACL_SET_FILE = 348 pkg syscall (freebsd-amd64-cgo), const SYS___ACL_SET_LINK = 426 pkg syscall (freebsd-amd64-cgo), const SYS___GETCWD = 326 pkg syscall (freebsd-amd64-cgo), const SYS___MAC_EXECVE = 415 pkg syscall (freebsd-amd64-cgo), const SYS___MAC_GET_FD = 386 pkg syscall (freebsd-amd64-cgo), const SYS___MAC_GET_FILE = 387 pkg syscall (freebsd-amd64-cgo), const SYS___MAC_GET_LINK = 410 pkg syscall (freebsd-amd64-cgo), const SYS___MAC_GET_PID = 409 pkg syscall (freebsd-amd64-cgo), const SYS___MAC_GET_PROC = 384 pkg syscall (freebsd-amd64-cgo), const SYS___MAC_SET_FD = 388 pkg syscall (freebsd-amd64-cgo), const SYS___MAC_SET_FILE = 389 pkg syscall (freebsd-amd64-cgo), const SYS___MAC_SET_LINK = 411 pkg syscall (freebsd-amd64-cgo), const SYS___MAC_SET_PROC = 385 pkg syscall (freebsd-amd64-cgo), const SYS___SETUGID = 374 pkg syscall (freebsd-amd64-cgo), const SYS___SYSCTL = 202 pkg syscall (freebsd-amd64-cgo), const S_IFMT = 61440 pkg syscall (freebsd-amd64-cgo), const SizeofBpfHdr = 32 pkg syscall (freebsd-amd64-cgo), const SizeofBpfInsn = 8 pkg syscall (freebsd-amd64-cgo), const SizeofBpfProgram = 16 pkg syscall (freebsd-amd64-cgo), const SizeofBpfStat = 8 pkg syscall (freebsd-amd64-cgo), const SizeofBpfVersion = 4 pkg syscall (freebsd-amd64-cgo), const SizeofBpfZbuf = 24 pkg syscall (freebsd-amd64-cgo), const SizeofBpfZbufHeader = 32 pkg syscall (freebsd-amd64-cgo), const SizeofCmsghdr = 12 pkg syscall (freebsd-amd64-cgo), const SizeofIPMreq = 8 pkg syscall (freebsd-amd64-cgo), const SizeofIPMreqn = 12 pkg syscall (freebsd-amd64-cgo), const SizeofIPv6Mreq = 20 pkg syscall (freebsd-amd64-cgo), const SizeofIfAnnounceMsghdr = 24 pkg syscall (freebsd-amd64-cgo), const SizeofIfData = 152 pkg syscall (freebsd-amd64-cgo), const SizeofIfMsghdr = 168 pkg syscall (freebsd-amd64-cgo), const SizeofIfaMsghdr = 20 pkg syscall (freebsd-amd64-cgo), const SizeofIfmaMsghdr = 16 pkg syscall (freebsd-amd64-cgo), const SizeofInet6Pktinfo = 20 pkg syscall (freebsd-amd64-cgo), const SizeofLinger = 8 pkg syscall (freebsd-amd64-cgo), const SizeofMsghdr = 48 pkg syscall (freebsd-amd64-cgo), const SizeofRtMetrics = 112 pkg syscall (freebsd-amd64-cgo), const SizeofRtMsghdr = 152 pkg syscall (freebsd-amd64-cgo), const SizeofSockaddrAny = 108 pkg syscall (freebsd-amd64-cgo), const SizeofSockaddrDatalink = 54 pkg syscall (freebsd-amd64-cgo), const SizeofSockaddrInet4 = 16 pkg syscall (freebsd-amd64-cgo), const SizeofSockaddrInet6 = 28 pkg syscall (freebsd-amd64-cgo), const SizeofSockaddrUnix = 106 pkg syscall (freebsd-amd64-cgo), const TCIFLUSH = 1 pkg syscall (freebsd-amd64-cgo), const TCIOFLUSH = 3 pkg syscall (freebsd-amd64-cgo), const TCOFLUSH = 2 pkg syscall (freebsd-amd64-cgo), const TCP_CA_NAME_MAX = 16 pkg syscall (freebsd-amd64-cgo), const TCP_CONGESTION = 64 pkg syscall (freebsd-amd64-cgo), const TCP_INFO = 32 pkg syscall (freebsd-amd64-cgo), const TCP_KEEPCNT = 1024 pkg syscall (freebsd-amd64-cgo), const TCP_KEEPIDLE = 256 pkg syscall (freebsd-amd64-cgo), const TCP_KEEPINIT = 128 pkg syscall (freebsd-amd64-cgo), const TCP_KEEPINTVL = 512 pkg syscall (freebsd-amd64-cgo), const TCP_MAXBURST = 4 pkg syscall (freebsd-amd64-cgo), const TCP_MAXHLEN = 60 pkg syscall (freebsd-amd64-cgo), const TCP_MAXOLEN = 40 pkg syscall (freebsd-amd64-cgo), const TCP_MAXSEG = 2 pkg syscall (freebsd-amd64-cgo), const TCP_MAXWIN = 65535 pkg syscall (freebsd-amd64-cgo), const TCP_MAX_SACK = 4 pkg syscall (freebsd-amd64-cgo), const TCP_MAX_WINSHIFT = 14 pkg syscall (freebsd-amd64-cgo), const TCP_MD5SIG = 16 pkg syscall (freebsd-amd64-cgo), const TCP_MINMSS = 216 pkg syscall (freebsd-amd64-cgo), const TCP_MSS = 536 pkg syscall (freebsd-amd64-cgo), const TCP_NOOPT = 8 pkg syscall (freebsd-amd64-cgo), const TCP_NOPUSH = 4 pkg syscall (freebsd-amd64-cgo), const TCSAFLUSH = 2 pkg syscall (freebsd-amd64-cgo), const TIOCCBRK = 536900730 pkg syscall (freebsd-amd64-cgo), const TIOCCDTR = 536900728 pkg syscall (freebsd-amd64-cgo), const TIOCCONS = 2147775586 pkg syscall (freebsd-amd64-cgo), const TIOCDRAIN = 536900702 pkg syscall (freebsd-amd64-cgo), const TIOCEXCL = 536900621 pkg syscall (freebsd-amd64-cgo), const TIOCEXT = 2147775584 pkg syscall (freebsd-amd64-cgo), const TIOCFLUSH = 2147775504 pkg syscall (freebsd-amd64-cgo), const TIOCGDRAINWAIT = 1074033750 pkg syscall (freebsd-amd64-cgo), const TIOCGETA = 1076655123 pkg syscall (freebsd-amd64-cgo), const TIOCGETD = 1074033690 pkg syscall (freebsd-amd64-cgo), const TIOCGPGRP = 1074033783 pkg syscall (freebsd-amd64-cgo), const TIOCGPTN = 1074033679 pkg syscall (freebsd-amd64-cgo), const TIOCGSID = 1074033763 pkg syscall (freebsd-amd64-cgo), const TIOCGWINSZ = 1074295912 pkg syscall (freebsd-amd64-cgo), const TIOCMBIC = 2147775595 pkg syscall (freebsd-amd64-cgo), const TIOCMBIS = 2147775596 pkg syscall (freebsd-amd64-cgo), const TIOCMGDTRWAIT = 1074033754 pkg syscall (freebsd-amd64-cgo), const TIOCMGET = 1074033770 pkg syscall (freebsd-amd64-cgo), const TIOCMSDTRWAIT = 2147775579 pkg syscall (freebsd-amd64-cgo), const TIOCMSET = 2147775597 pkg syscall (freebsd-amd64-cgo), const TIOCM_CAR = 64 pkg syscall (freebsd-amd64-cgo), const TIOCM_CD = 64 pkg syscall (freebsd-amd64-cgo), const TIOCM_CTS = 32 pkg syscall (freebsd-amd64-cgo), const TIOCM_DCD = 64 pkg syscall (freebsd-amd64-cgo), const TIOCM_DSR = 256 pkg syscall (freebsd-amd64-cgo), const TIOCM_DTR = 2 pkg syscall (freebsd-amd64-cgo), const TIOCM_LE = 1 pkg syscall (freebsd-amd64-cgo), const TIOCM_RI = 128 pkg syscall (freebsd-amd64-cgo), const TIOCM_RNG = 128 pkg syscall (freebsd-amd64-cgo), const TIOCM_RTS = 4 pkg syscall (freebsd-amd64-cgo), const TIOCM_SR = 16 pkg syscall (freebsd-amd64-cgo), const TIOCM_ST = 8 pkg syscall (freebsd-amd64-cgo), const TIOCNOTTY = 536900721 pkg syscall (freebsd-amd64-cgo), const TIOCNXCL = 536900622 pkg syscall (freebsd-amd64-cgo), const TIOCOUTQ = 1074033779 pkg syscall (freebsd-amd64-cgo), const TIOCPKT = 2147775600 pkg syscall (freebsd-amd64-cgo), const TIOCPKT_DATA = 0 pkg syscall (freebsd-amd64-cgo), const TIOCPKT_DOSTOP = 32 pkg syscall (freebsd-amd64-cgo), const TIOCPKT_FLUSHREAD = 1 pkg syscall (freebsd-amd64-cgo), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (freebsd-amd64-cgo), const TIOCPKT_IOCTL = 64 pkg syscall (freebsd-amd64-cgo), const TIOCPKT_NOSTOP = 16 pkg syscall (freebsd-amd64-cgo), const TIOCPKT_START = 8 pkg syscall (freebsd-amd64-cgo), const TIOCPKT_STOP = 4 pkg syscall (freebsd-amd64-cgo), const TIOCPTMASTER = 536900636 pkg syscall (freebsd-amd64-cgo), const TIOCSBRK = 536900731 pkg syscall (freebsd-amd64-cgo), const TIOCSCTTY = 536900705 pkg syscall (freebsd-amd64-cgo), const TIOCSDRAINWAIT = 2147775575 pkg syscall (freebsd-amd64-cgo), const TIOCSDTR = 536900729 pkg syscall (freebsd-amd64-cgo), const TIOCSETA = 2150396948 pkg syscall (freebsd-amd64-cgo), const TIOCSETAF = 2150396950 pkg syscall (freebsd-amd64-cgo), const TIOCSETAW = 2150396949 pkg syscall (freebsd-amd64-cgo), const TIOCSETD = 2147775515 pkg syscall (freebsd-amd64-cgo), const TIOCSIG = 537162847 pkg syscall (freebsd-amd64-cgo), const TIOCSPGRP = 2147775606 pkg syscall (freebsd-amd64-cgo), const TIOCSTART = 536900718 pkg syscall (freebsd-amd64-cgo), const TIOCSTAT = 536900709 pkg syscall (freebsd-amd64-cgo), const TIOCSTI = 2147578994 pkg syscall (freebsd-amd64-cgo), const TIOCSTOP = 536900719 pkg syscall (freebsd-amd64-cgo), const TIOCSWINSZ = 2148037735 pkg syscall (freebsd-amd64-cgo), const TIOCTIMESTAMP = 1074820185 pkg syscall (freebsd-amd64-cgo), const TIOCUCNTL = 2147775590 pkg syscall (freebsd-amd64-cgo), const TOSTOP = 4194304 pkg syscall (freebsd-amd64-cgo), const VDISCARD = 15 pkg syscall (freebsd-amd64-cgo), const VDSUSP = 11 pkg syscall (freebsd-amd64-cgo), const VEOF = 0 pkg syscall (freebsd-amd64-cgo), const VEOL = 1 pkg syscall (freebsd-amd64-cgo), const VEOL2 = 2 pkg syscall (freebsd-amd64-cgo), const VERASE = 3 pkg syscall (freebsd-amd64-cgo), const VERASE2 = 7 pkg syscall (freebsd-amd64-cgo), const VINTR = 8 pkg syscall (freebsd-amd64-cgo), const VKILL = 5 pkg syscall (freebsd-amd64-cgo), const VLNEXT = 14 pkg syscall (freebsd-amd64-cgo), const VMIN = 16 pkg syscall (freebsd-amd64-cgo), const VQUIT = 9 pkg syscall (freebsd-amd64-cgo), const VREPRINT = 6 pkg syscall (freebsd-amd64-cgo), const VSTART = 12 pkg syscall (freebsd-amd64-cgo), const VSTATUS = 18 pkg syscall (freebsd-amd64-cgo), const VSTOP = 13 pkg syscall (freebsd-amd64-cgo), const VSUSP = 10 pkg syscall (freebsd-amd64-cgo), const VTIME = 17 pkg syscall (freebsd-amd64-cgo), const VWERASE = 4 pkg syscall (freebsd-amd64-cgo), const WCONTINUED = 4 pkg syscall (freebsd-amd64-cgo), const WCOREFLAG = 128 pkg syscall (freebsd-amd64-cgo), const WLINUXCLONE = 2147483648 pkg syscall (freebsd-amd64-cgo), const WNOHANG = 1 pkg syscall (freebsd-amd64-cgo), const WNOWAIT = 8 pkg syscall (freebsd-amd64-cgo), const WSTOPPED = 2 pkg syscall (freebsd-amd64-cgo), const WUNTRACED = 2 pkg syscall (freebsd-arm), const AF_APPLETALK = 16 pkg syscall (freebsd-arm), const AF_ARP = 35 pkg syscall (freebsd-arm), const AF_ATM = 30 pkg syscall (freebsd-arm), const AF_BLUETOOTH = 36 pkg syscall (freebsd-arm), const AF_CCITT = 10 pkg syscall (freebsd-arm), const AF_CHAOS = 5 pkg syscall (freebsd-arm), const AF_CNT = 21 pkg syscall (freebsd-arm), const AF_COIP = 20 pkg syscall (freebsd-arm), const AF_DATAKIT = 9 pkg syscall (freebsd-arm), const AF_DECnet = 12 pkg syscall (freebsd-arm), const AF_DLI = 13 pkg syscall (freebsd-arm), const AF_E164 = 26 pkg syscall (freebsd-arm), const AF_ECMA = 8 pkg syscall (freebsd-arm), const AF_HYLINK = 15 pkg syscall (freebsd-arm), const AF_IEEE80211 = 37 pkg syscall (freebsd-arm), const AF_IMPLINK = 3 pkg syscall (freebsd-arm), const AF_INET6 = 28 pkg syscall (freebsd-arm), const AF_IPX = 23 pkg syscall (freebsd-arm), const AF_ISDN = 26 pkg syscall (freebsd-arm), const AF_ISO = 7 pkg syscall (freebsd-arm), const AF_LAT = 14 pkg syscall (freebsd-arm), const AF_LINK = 18 pkg syscall (freebsd-arm), const AF_LOCAL = 1 pkg syscall (freebsd-arm), const AF_MAX = 38 pkg syscall (freebsd-arm), const AF_NATM = 29 pkg syscall (freebsd-arm), const AF_NETBIOS = 6 pkg syscall (freebsd-arm), const AF_NETGRAPH = 32 pkg syscall (freebsd-arm), const AF_OSI = 7 pkg syscall (freebsd-arm), const AF_PUP = 4 pkg syscall (freebsd-arm), const AF_ROUTE = 17 pkg syscall (freebsd-arm), const AF_SCLUSTER = 34 pkg syscall (freebsd-arm), const AF_SIP = 24 pkg syscall (freebsd-arm), const AF_SLOW = 33 pkg syscall (freebsd-arm), const AF_SNA = 11 pkg syscall (freebsd-arm), const AF_VENDOR00 = 39 pkg syscall (freebsd-arm), const AF_VENDOR01 = 41 pkg syscall (freebsd-arm), const AF_VENDOR02 = 43 pkg syscall (freebsd-arm), const AF_VENDOR03 = 45 pkg syscall (freebsd-arm), const AF_VENDOR04 = 47 pkg syscall (freebsd-arm), const AF_VENDOR05 = 49 pkg syscall (freebsd-arm), const AF_VENDOR06 = 51 pkg syscall (freebsd-arm), const AF_VENDOR07 = 53 pkg syscall (freebsd-arm), const AF_VENDOR08 = 55 pkg syscall (freebsd-arm), const AF_VENDOR09 = 57 pkg syscall (freebsd-arm), const AF_VENDOR10 = 59 pkg syscall (freebsd-arm), const AF_VENDOR11 = 61 pkg syscall (freebsd-arm), const AF_VENDOR12 = 63 pkg syscall (freebsd-arm), const AF_VENDOR13 = 65 pkg syscall (freebsd-arm), const AF_VENDOR14 = 67 pkg syscall (freebsd-arm), const AF_VENDOR15 = 69 pkg syscall (freebsd-arm), const AF_VENDOR16 = 71 pkg syscall (freebsd-arm), const AF_VENDOR17 = 73 pkg syscall (freebsd-arm), const AF_VENDOR18 = 75 pkg syscall (freebsd-arm), const AF_VENDOR19 = 77 pkg syscall (freebsd-arm), const AF_VENDOR20 = 79 pkg syscall (freebsd-arm), const AF_VENDOR21 = 81 pkg syscall (freebsd-arm), const AF_VENDOR22 = 83 pkg syscall (freebsd-arm), const AF_VENDOR23 = 85 pkg syscall (freebsd-arm), const AF_VENDOR24 = 87 pkg syscall (freebsd-arm), const AF_VENDOR25 = 89 pkg syscall (freebsd-arm), const AF_VENDOR26 = 91 pkg syscall (freebsd-arm), const AF_VENDOR27 = 93 pkg syscall (freebsd-arm), const AF_VENDOR28 = 95 pkg syscall (freebsd-arm), const AF_VENDOR29 = 97 pkg syscall (freebsd-arm), const AF_VENDOR30 = 99 pkg syscall (freebsd-arm), const AF_VENDOR31 = 101 pkg syscall (freebsd-arm), const AF_VENDOR32 = 103 pkg syscall (freebsd-arm), const AF_VENDOR33 = 105 pkg syscall (freebsd-arm), const AF_VENDOR34 = 107 pkg syscall (freebsd-arm), const AF_VENDOR35 = 109 pkg syscall (freebsd-arm), const AF_VENDOR36 = 111 pkg syscall (freebsd-arm), const AF_VENDOR37 = 113 pkg syscall (freebsd-arm), const AF_VENDOR38 = 115 pkg syscall (freebsd-arm), const AF_VENDOR39 = 117 pkg syscall (freebsd-arm), const AF_VENDOR40 = 119 pkg syscall (freebsd-arm), const AF_VENDOR41 = 121 pkg syscall (freebsd-arm), const AF_VENDOR42 = 123 pkg syscall (freebsd-arm), const AF_VENDOR43 = 125 pkg syscall (freebsd-arm), const AF_VENDOR44 = 127 pkg syscall (freebsd-arm), const AF_VENDOR45 = 129 pkg syscall (freebsd-arm), const AF_VENDOR46 = 131 pkg syscall (freebsd-arm), const AF_VENDOR47 = 133 pkg syscall (freebsd-arm), const B0 = 0 pkg syscall (freebsd-arm), const B110 = 110 pkg syscall (freebsd-arm), const B115200 = 115200 pkg syscall (freebsd-arm), const B1200 = 1200 pkg syscall (freebsd-arm), const B134 = 134 pkg syscall (freebsd-arm), const B14400 = 14400 pkg syscall (freebsd-arm), const B150 = 150 pkg syscall (freebsd-arm), const B1800 = 1800 pkg syscall (freebsd-arm), const B19200 = 19200 pkg syscall (freebsd-arm), const B200 = 200 pkg syscall (freebsd-arm), const B230400 = 230400 pkg syscall (freebsd-arm), const B2400 = 2400 pkg syscall (freebsd-arm), const B28800 = 28800 pkg syscall (freebsd-arm), const B300 = 300 pkg syscall (freebsd-arm), const B38400 = 38400 pkg syscall (freebsd-arm), const B460800 = 460800 pkg syscall (freebsd-arm), const B4800 = 4800 pkg syscall (freebsd-arm), const B50 = 50 pkg syscall (freebsd-arm), const B57600 = 57600 pkg syscall (freebsd-arm), const B600 = 600 pkg syscall (freebsd-arm), const B7200 = 7200 pkg syscall (freebsd-arm), const B75 = 75 pkg syscall (freebsd-arm), const B76800 = 76800 pkg syscall (freebsd-arm), const B921600 = 921600 pkg syscall (freebsd-arm), const B9600 = 9600 pkg syscall (freebsd-arm), const BIOCFEEDBACK = 2147762812 pkg syscall (freebsd-arm), const BIOCFLUSH = 536887912 pkg syscall (freebsd-arm), const BIOCGBLEN = 1074020966 pkg syscall (freebsd-arm), const BIOCGDIRECTION = 1074020982 pkg syscall (freebsd-arm), const BIOCGDLT = 1074020970 pkg syscall (freebsd-arm), const BIOCGDLTLIST = 3221766777 pkg syscall (freebsd-arm), const BIOCGETBUFMODE = 1074020989 pkg syscall (freebsd-arm), const BIOCGETIF = 1075855979 pkg syscall (freebsd-arm), const BIOCGETZMAX = 1074020991 pkg syscall (freebsd-arm), const BIOCGHDRCMPLT = 1074020980 pkg syscall (freebsd-arm), const BIOCGRSIG = 1074020978 pkg syscall (freebsd-arm), const BIOCGRTIMEOUT = 1074545262 pkg syscall (freebsd-arm), const BIOCGSEESENT = 1074020982 pkg syscall (freebsd-arm), const BIOCGSTATS = 1074283119 pkg syscall (freebsd-arm), const BIOCGTSTAMP = 1074020995 pkg syscall (freebsd-arm), const BIOCIMMEDIATE = 2147762800 pkg syscall (freebsd-arm), const BIOCLOCK = 536887930 pkg syscall (freebsd-arm), const BIOCPROMISC = 536887913 pkg syscall (freebsd-arm), const BIOCROTZBUF = 1074545280 pkg syscall (freebsd-arm), const BIOCSBLEN = 3221504614 pkg syscall (freebsd-arm), const BIOCSDIRECTION = 2147762807 pkg syscall (freebsd-arm), const BIOCSDLT = 2147762808 pkg syscall (freebsd-arm), const BIOCSETBUFMODE = 2147762814 pkg syscall (freebsd-arm), const BIOCSETF = 2148024935 pkg syscall (freebsd-arm), const BIOCSETFNR = 2148024962 pkg syscall (freebsd-arm), const BIOCSETIF = 2149597804 pkg syscall (freebsd-arm), const BIOCSETWF = 2148024955 pkg syscall (freebsd-arm), const BIOCSETZBUF = 2148287105 pkg syscall (freebsd-arm), const BIOCSHDRCMPLT = 2147762805 pkg syscall (freebsd-arm), const BIOCSRSIG = 2147762803 pkg syscall (freebsd-arm), const BIOCSRTIMEOUT = 2148287085 pkg syscall (freebsd-arm), const BIOCSSEESENT = 2147762807 pkg syscall (freebsd-arm), const BIOCSTSTAMP = 2147762820 pkg syscall (freebsd-arm), const BIOCVERSION = 1074020977 pkg syscall (freebsd-arm), const BPF_A = 16 pkg syscall (freebsd-arm), const BPF_ABS = 32 pkg syscall (freebsd-arm), const BPF_ADD = 0 pkg syscall (freebsd-arm), const BPF_ALIGNMENT = 4 pkg syscall (freebsd-arm), const BPF_ALU = 4 pkg syscall (freebsd-arm), const BPF_AND = 80 pkg syscall (freebsd-arm), const BPF_B = 16 pkg syscall (freebsd-arm), const BPF_BUFMODE_BUFFER = 1 pkg syscall (freebsd-arm), const BPF_BUFMODE_ZBUF = 2 pkg syscall (freebsd-arm), const BPF_DIV = 48 pkg syscall (freebsd-arm), const BPF_H = 8 pkg syscall (freebsd-arm), const BPF_IMM = 0 pkg syscall (freebsd-arm), const BPF_IND = 64 pkg syscall (freebsd-arm), const BPF_JA = 0 pkg syscall (freebsd-arm), const BPF_JEQ = 16 pkg syscall (freebsd-arm), const BPF_JGE = 48 pkg syscall (freebsd-arm), const BPF_JGT = 32 pkg syscall (freebsd-arm), const BPF_JMP = 5 pkg syscall (freebsd-arm), const BPF_JSET = 64 pkg syscall (freebsd-arm), const BPF_K = 0 pkg syscall (freebsd-arm), const BPF_LD = 0 pkg syscall (freebsd-arm), const BPF_LDX = 1 pkg syscall (freebsd-arm), const BPF_LEN = 128 pkg syscall (freebsd-arm), const BPF_LSH = 96 pkg syscall (freebsd-arm), const BPF_MAJOR_VERSION = 1 pkg syscall (freebsd-arm), const BPF_MAXBUFSIZE = 524288 pkg syscall (freebsd-arm), const BPF_MAXINSNS = 512 pkg syscall (freebsd-arm), const BPF_MEM = 96 pkg syscall (freebsd-arm), const BPF_MEMWORDS = 16 pkg syscall (freebsd-arm), const BPF_MINBUFSIZE = 32 pkg syscall (freebsd-arm), const BPF_MINOR_VERSION = 1 pkg syscall (freebsd-arm), const BPF_MISC = 7 pkg syscall (freebsd-arm), const BPF_MSH = 160 pkg syscall (freebsd-arm), const BPF_MUL = 32 pkg syscall (freebsd-arm), const BPF_NEG = 128 pkg syscall (freebsd-arm), const BPF_OR = 64 pkg syscall (freebsd-arm), const BPF_RELEASE = 199606 pkg syscall (freebsd-arm), const BPF_RET = 6 pkg syscall (freebsd-arm), const BPF_RSH = 112 pkg syscall (freebsd-arm), const BPF_ST = 2 pkg syscall (freebsd-arm), const BPF_STX = 3 pkg syscall (freebsd-arm), const BPF_SUB = 16 pkg syscall (freebsd-arm), const BPF_TAX = 0 pkg syscall (freebsd-arm), const BPF_TXA = 128 pkg syscall (freebsd-arm), const BPF_T_BINTIME = 2 pkg syscall (freebsd-arm), const BPF_T_BINTIME_FAST = 258 pkg syscall (freebsd-arm), const BPF_T_BINTIME_MONOTONIC = 514 pkg syscall (freebsd-arm), const BPF_T_BINTIME_MONOTONIC_FAST = 770 pkg syscall (freebsd-arm), const BPF_T_FAST = 256 pkg syscall (freebsd-arm), const BPF_T_FLAG_MASK = 768 pkg syscall (freebsd-arm), const BPF_T_FORMAT_MASK = 3 pkg syscall (freebsd-arm), const BPF_T_MICROTIME = 0 pkg syscall (freebsd-arm), const BPF_T_MICROTIME_FAST = 256 pkg syscall (freebsd-arm), const BPF_T_MICROTIME_MONOTONIC = 512 pkg syscall (freebsd-arm), const BPF_T_MICROTIME_MONOTONIC_FAST = 768 pkg syscall (freebsd-arm), const BPF_T_MONOTONIC = 512 pkg syscall (freebsd-arm), const BPF_T_MONOTONIC_FAST = 768 pkg syscall (freebsd-arm), const BPF_T_NANOTIME = 1 pkg syscall (freebsd-arm), const BPF_T_NANOTIME_FAST = 257 pkg syscall (freebsd-arm), const BPF_T_NANOTIME_MONOTONIC = 513 pkg syscall (freebsd-arm), const BPF_T_NANOTIME_MONOTONIC_FAST = 769 pkg syscall (freebsd-arm), const BPF_T_NONE = 3 pkg syscall (freebsd-arm), const BPF_T_NORMAL = 0 pkg syscall (freebsd-arm), const BPF_W = 0 pkg syscall (freebsd-arm), const BPF_X = 8 pkg syscall (freebsd-arm), const BRKINT = 2 pkg syscall (freebsd-arm), const CFLUSH = 15 pkg syscall (freebsd-arm), const CLOCAL = 32768 pkg syscall (freebsd-arm), const CREAD = 2048 pkg syscall (freebsd-arm), const CS5 = 0 pkg syscall (freebsd-arm), const CS6 = 256 pkg syscall (freebsd-arm), const CS7 = 512 pkg syscall (freebsd-arm), const CS8 = 768 pkg syscall (freebsd-arm), const CSIZE = 768 pkg syscall (freebsd-arm), const CSTART = 17 pkg syscall (freebsd-arm), const CSTATUS = 20 pkg syscall (freebsd-arm), const CSTOP = 19 pkg syscall (freebsd-arm), const CSTOPB = 1024 pkg syscall (freebsd-arm), const CSUSP = 26 pkg syscall (freebsd-arm), const CTL_MAXNAME = 24 pkg syscall (freebsd-arm), const CTL_NET = 4 pkg syscall (freebsd-arm), const DLT_A429 = 184 pkg syscall (freebsd-arm), const DLT_A653_ICM = 185 pkg syscall (freebsd-arm), const DLT_AIRONET_HEADER = 120 pkg syscall (freebsd-arm), const DLT_AOS = 222 pkg syscall (freebsd-arm), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (freebsd-arm), const DLT_ARCNET = 7 pkg syscall (freebsd-arm), const DLT_ARCNET_LINUX = 129 pkg syscall (freebsd-arm), const DLT_ATM_CLIP = 19 pkg syscall (freebsd-arm), const DLT_ATM_RFC1483 = 11 pkg syscall (freebsd-arm), const DLT_AURORA = 126 pkg syscall (freebsd-arm), const DLT_AX25 = 3 pkg syscall (freebsd-arm), const DLT_AX25_KISS = 202 pkg syscall (freebsd-arm), const DLT_BACNET_MS_TP = 165 pkg syscall (freebsd-arm), const DLT_BLUETOOTH_HCI_H4 = 187 pkg syscall (freebsd-arm), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 pkg syscall (freebsd-arm), const DLT_CAN20B = 190 pkg syscall (freebsd-arm), const DLT_CAN_SOCKETCAN = 227 pkg syscall (freebsd-arm), const DLT_CHAOS = 5 pkg syscall (freebsd-arm), const DLT_CHDLC = 104 pkg syscall (freebsd-arm), const DLT_CISCO_IOS = 118 pkg syscall (freebsd-arm), const DLT_C_HDLC = 104 pkg syscall (freebsd-arm), const DLT_C_HDLC_WITH_DIR = 205 pkg syscall (freebsd-arm), const DLT_DBUS = 231 pkg syscall (freebsd-arm), const DLT_DECT = 221 pkg syscall (freebsd-arm), const DLT_DOCSIS = 143 pkg syscall (freebsd-arm), const DLT_DVB_CI = 235 pkg syscall (freebsd-arm), const DLT_ECONET = 115 pkg syscall (freebsd-arm), const DLT_EN10MB = 1 pkg syscall (freebsd-arm), const DLT_EN3MB = 2 pkg syscall (freebsd-arm), const DLT_ENC = 109 pkg syscall (freebsd-arm), const DLT_ERF = 197 pkg syscall (freebsd-arm), const DLT_ERF_ETH = 175 pkg syscall (freebsd-arm), const DLT_ERF_POS = 176 pkg syscall (freebsd-arm), const DLT_FC_2 = 224 pkg syscall (freebsd-arm), const DLT_FC_2_WITH_FRAME_DELIMS = 225 pkg syscall (freebsd-arm), const DLT_FDDI = 10 pkg syscall (freebsd-arm), const DLT_FLEXRAY = 210 pkg syscall (freebsd-arm), const DLT_FRELAY = 107 pkg syscall (freebsd-arm), const DLT_FRELAY_WITH_DIR = 206 pkg syscall (freebsd-arm), const DLT_GCOM_SERIAL = 173 pkg syscall (freebsd-arm), const DLT_GCOM_T1E1 = 172 pkg syscall (freebsd-arm), const DLT_GPF_F = 171 pkg syscall (freebsd-arm), const DLT_GPF_T = 170 pkg syscall (freebsd-arm), const DLT_GPRS_LLC = 169 pkg syscall (freebsd-arm), const DLT_GSMTAP_ABIS = 218 pkg syscall (freebsd-arm), const DLT_GSMTAP_UM = 217 pkg syscall (freebsd-arm), const DLT_HHDLC = 121 pkg syscall (freebsd-arm), const DLT_IBM_SN = 146 pkg syscall (freebsd-arm), const DLT_IBM_SP = 145 pkg syscall (freebsd-arm), const DLT_IEEE802 = 6 pkg syscall (freebsd-arm), const DLT_IEEE802_11 = 105 pkg syscall (freebsd-arm), const DLT_IEEE802_11_RADIO = 127 pkg syscall (freebsd-arm), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (freebsd-arm), const DLT_IEEE802_15_4 = 195 pkg syscall (freebsd-arm), const DLT_IEEE802_15_4_LINUX = 191 pkg syscall (freebsd-arm), const DLT_IEEE802_15_4_NOFCS = 230 pkg syscall (freebsd-arm), const DLT_IEEE802_15_4_NONASK_PHY = 215 pkg syscall (freebsd-arm), const DLT_IEEE802_16_MAC_CPS = 188 pkg syscall (freebsd-arm), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 pkg syscall (freebsd-arm), const DLT_IPFILTER = 116 pkg syscall (freebsd-arm), const DLT_IPMB = 199 pkg syscall (freebsd-arm), const DLT_IPMB_LINUX = 209 pkg syscall (freebsd-arm), const DLT_IPNET = 226 pkg syscall (freebsd-arm), const DLT_IPOIB = 242 pkg syscall (freebsd-arm), const DLT_IPV4 = 228 pkg syscall (freebsd-arm), const DLT_IPV6 = 229 pkg syscall (freebsd-arm), const DLT_IP_OVER_FC = 122 pkg syscall (freebsd-arm), const DLT_JUNIPER_ATM1 = 137 pkg syscall (freebsd-arm), const DLT_JUNIPER_ATM2 = 135 pkg syscall (freebsd-arm), const DLT_JUNIPER_ATM_CEMIC = 238 pkg syscall (freebsd-arm), const DLT_JUNIPER_CHDLC = 181 pkg syscall (freebsd-arm), const DLT_JUNIPER_ES = 132 pkg syscall (freebsd-arm), const DLT_JUNIPER_ETHER = 178 pkg syscall (freebsd-arm), const DLT_JUNIPER_FIBRECHANNEL = 234 pkg syscall (freebsd-arm), const DLT_JUNIPER_FRELAY = 180 pkg syscall (freebsd-arm), const DLT_JUNIPER_GGSN = 133 pkg syscall (freebsd-arm), const DLT_JUNIPER_ISM = 194 pkg syscall (freebsd-arm), const DLT_JUNIPER_MFR = 134 pkg syscall (freebsd-arm), const DLT_JUNIPER_MLFR = 131 pkg syscall (freebsd-arm), const DLT_JUNIPER_MLPPP = 130 pkg syscall (freebsd-arm), const DLT_JUNIPER_MONITOR = 164 pkg syscall (freebsd-arm), const DLT_JUNIPER_PIC_PEER = 174 pkg syscall (freebsd-arm), const DLT_JUNIPER_PPP = 179 pkg syscall (freebsd-arm), const DLT_JUNIPER_PPPOE = 167 pkg syscall (freebsd-arm), const DLT_JUNIPER_PPPOE_ATM = 168 pkg syscall (freebsd-arm), const DLT_JUNIPER_SERVICES = 136 pkg syscall (freebsd-arm), const DLT_JUNIPER_SRX_E2E = 233 pkg syscall (freebsd-arm), const DLT_JUNIPER_ST = 200 pkg syscall (freebsd-arm), const DLT_JUNIPER_VP = 183 pkg syscall (freebsd-arm), const DLT_JUNIPER_VS = 232 pkg syscall (freebsd-arm), const DLT_LAPB_WITH_DIR = 207 pkg syscall (freebsd-arm), const DLT_LAPD = 203 pkg syscall (freebsd-arm), const DLT_LIN = 212 pkg syscall (freebsd-arm), const DLT_LINUX_EVDEV = 216 pkg syscall (freebsd-arm), const DLT_LINUX_IRDA = 144 pkg syscall (freebsd-arm), const DLT_LINUX_LAPD = 177 pkg syscall (freebsd-arm), const DLT_LINUX_PPP_WITHDIRECTION = 166 pkg syscall (freebsd-arm), const DLT_LINUX_SLL = 113 pkg syscall (freebsd-arm), const DLT_LOOP = 108 pkg syscall (freebsd-arm), const DLT_LTALK = 114 pkg syscall (freebsd-arm), const DLT_MATCHING_MAX = 246 pkg syscall (freebsd-arm), const DLT_MATCHING_MIN = 104 pkg syscall (freebsd-arm), const DLT_MFR = 182 pkg syscall (freebsd-arm), const DLT_MOST = 211 pkg syscall (freebsd-arm), const DLT_MPEG_2_TS = 243 pkg syscall (freebsd-arm), const DLT_MPLS = 219 pkg syscall (freebsd-arm), const DLT_MTP2 = 140 pkg syscall (freebsd-arm), const DLT_MTP2_WITH_PHDR = 139 pkg syscall (freebsd-arm), const DLT_MTP3 = 141 pkg syscall (freebsd-arm), const DLT_MUX27010 = 236 pkg syscall (freebsd-arm), const DLT_NETANALYZER = 240 pkg syscall (freebsd-arm), const DLT_NETANALYZER_TRANSPARENT = 241 pkg syscall (freebsd-arm), const DLT_NFC_LLCP = 245 pkg syscall (freebsd-arm), const DLT_NFLOG = 239 pkg syscall (freebsd-arm), const DLT_NG40 = 244 pkg syscall (freebsd-arm), const DLT_NULL = 0 pkg syscall (freebsd-arm), const DLT_PCI_EXP = 125 pkg syscall (freebsd-arm), const DLT_PFLOG = 117 pkg syscall (freebsd-arm), const DLT_PFSYNC = 121 pkg syscall (freebsd-arm), const DLT_PPI = 192 pkg syscall (freebsd-arm), const DLT_PPP = 9 pkg syscall (freebsd-arm), const DLT_PPP_BSDOS = 16 pkg syscall (freebsd-arm), const DLT_PPP_ETHER = 51 pkg syscall (freebsd-arm), const DLT_PPP_PPPD = 166 pkg syscall (freebsd-arm), const DLT_PPP_SERIAL = 50 pkg syscall (freebsd-arm), const DLT_PPP_WITH_DIR = 204 pkg syscall (freebsd-arm), const DLT_PPP_WITH_DIRECTION = 166 pkg syscall (freebsd-arm), const DLT_PRISM_HEADER = 119 pkg syscall (freebsd-arm), const DLT_PRONET = 4 pkg syscall (freebsd-arm), const DLT_RAIF1 = 198 pkg syscall (freebsd-arm), const DLT_RAW = 12 pkg syscall (freebsd-arm), const DLT_RIO = 124 pkg syscall (freebsd-arm), const DLT_SCCP = 142 pkg syscall (freebsd-arm), const DLT_SITA = 196 pkg syscall (freebsd-arm), const DLT_SLIP = 8 pkg syscall (freebsd-arm), const DLT_SLIP_BSDOS = 15 pkg syscall (freebsd-arm), const DLT_STANAG_5066_D_PDU = 237 pkg syscall (freebsd-arm), const DLT_SUNATM = 123 pkg syscall (freebsd-arm), const DLT_SYMANTEC_FIREWALL = 99 pkg syscall (freebsd-arm), const DLT_TZSP = 128 pkg syscall (freebsd-arm), const DLT_USB = 186 pkg syscall (freebsd-arm), const DLT_USB_LINUX = 189 pkg syscall (freebsd-arm), const DLT_USB_LINUX_MMAPPED = 220 pkg syscall (freebsd-arm), const DLT_USER0 = 147 pkg syscall (freebsd-arm), const DLT_USER1 = 148 pkg syscall (freebsd-arm), const DLT_USER10 = 157 pkg syscall (freebsd-arm), const DLT_USER11 = 158 pkg syscall (freebsd-arm), const DLT_USER12 = 159 pkg syscall (freebsd-arm), const DLT_USER13 = 160 pkg syscall (freebsd-arm), const DLT_USER14 = 161 pkg syscall (freebsd-arm), const DLT_USER15 = 162 pkg syscall (freebsd-arm), const DLT_USER2 = 149 pkg syscall (freebsd-arm), const DLT_USER3 = 150 pkg syscall (freebsd-arm), const DLT_USER4 = 151 pkg syscall (freebsd-arm), const DLT_USER5 = 152 pkg syscall (freebsd-arm), const DLT_USER6 = 153 pkg syscall (freebsd-arm), const DLT_USER7 = 154 pkg syscall (freebsd-arm), const DLT_USER8 = 155 pkg syscall (freebsd-arm), const DLT_USER9 = 156 pkg syscall (freebsd-arm), const DLT_WIHART = 223 pkg syscall (freebsd-arm), const DLT_X2E_SERIAL = 213 pkg syscall (freebsd-arm), const DLT_X2E_XORAYA = 214 pkg syscall (freebsd-arm), const DT_BLK = 6 pkg syscall (freebsd-arm), const DT_CHR = 2 pkg syscall (freebsd-arm), const DT_DIR = 4 pkg syscall (freebsd-arm), const DT_FIFO = 1 pkg syscall (freebsd-arm), const DT_LNK = 10 pkg syscall (freebsd-arm), const DT_REG = 8 pkg syscall (freebsd-arm), const DT_SOCK = 12 pkg syscall (freebsd-arm), const DT_UNKNOWN = 0 pkg syscall (freebsd-arm), const DT_WHT = 14 pkg syscall (freebsd-arm), const E2BIG = 7 pkg syscall (freebsd-arm), const EACCES = 13 pkg syscall (freebsd-arm), const EADDRINUSE = 48 pkg syscall (freebsd-arm), const EADDRNOTAVAIL = 49 pkg syscall (freebsd-arm), const EAFNOSUPPORT = 47 pkg syscall (freebsd-arm), const EAGAIN = 35 pkg syscall (freebsd-arm), const EALREADY = 37 pkg syscall (freebsd-arm), const EAUTH = 80 pkg syscall (freebsd-arm), const EBADF = 9 pkg syscall (freebsd-arm), const EBADMSG = 89 pkg syscall (freebsd-arm), const EBADRPC = 72 pkg syscall (freebsd-arm), const EBUSY = 16 pkg syscall (freebsd-arm), const ECANCELED = 85 pkg syscall (freebsd-arm), const ECAPMODE = 94 pkg syscall (freebsd-arm), const ECHILD = 10 pkg syscall (freebsd-arm), const ECHO = 8 pkg syscall (freebsd-arm), const ECHOCTL = 64 pkg syscall (freebsd-arm), const ECHOE = 2 pkg syscall (freebsd-arm), const ECHOK = 4 pkg syscall (freebsd-arm), const ECHOKE = 1 pkg syscall (freebsd-arm), const ECHONL = 16 pkg syscall (freebsd-arm), const ECHOPRT = 32 pkg syscall (freebsd-arm), const ECONNABORTED = 53 pkg syscall (freebsd-arm), const ECONNREFUSED = 61 pkg syscall (freebsd-arm), const ECONNRESET = 54 pkg syscall (freebsd-arm), const EDEADLK = 11 pkg syscall (freebsd-arm), const EDESTADDRREQ = 39 pkg syscall (freebsd-arm), const EDOM = 33 pkg syscall (freebsd-arm), const EDOOFUS = 88 pkg syscall (freebsd-arm), const EDQUOT = 69 pkg syscall (freebsd-arm), const EEXIST = 17 pkg syscall (freebsd-arm), const EFAULT = 14 pkg syscall (freebsd-arm), const EFBIG = 27 pkg syscall (freebsd-arm), const EFTYPE = 79 pkg syscall (freebsd-arm), const EHOSTDOWN = 64 pkg syscall (freebsd-arm), const EHOSTUNREACH = 65 pkg syscall (freebsd-arm), const EIDRM = 82 pkg syscall (freebsd-arm), const EILSEQ = 86 pkg syscall (freebsd-arm), const EINPROGRESS = 36 pkg syscall (freebsd-arm), const EINTR = 4 pkg syscall (freebsd-arm), const EINVAL = 22 pkg syscall (freebsd-arm), const EIO = 5 pkg syscall (freebsd-arm), const EISCONN = 56 pkg syscall (freebsd-arm), const EISDIR = 21 pkg syscall (freebsd-arm), const ELAST = 94 pkg syscall (freebsd-arm), const ELOOP = 62 pkg syscall (freebsd-arm), const EMFILE = 24 pkg syscall (freebsd-arm), const EMLINK = 31 pkg syscall (freebsd-arm), const EMSGSIZE = 40 pkg syscall (freebsd-arm), const EMULTIHOP = 90 pkg syscall (freebsd-arm), const ENAMETOOLONG = 63 pkg syscall (freebsd-arm), const ENEEDAUTH = 81 pkg syscall (freebsd-arm), const ENETDOWN = 50 pkg syscall (freebsd-arm), const ENETRESET = 52 pkg syscall (freebsd-arm), const ENETUNREACH = 51 pkg syscall (freebsd-arm), const ENFILE = 23 pkg syscall (freebsd-arm), const ENOATTR = 87 pkg syscall (freebsd-arm), const ENOBUFS = 55 pkg syscall (freebsd-arm), const ENODEV = 19 pkg syscall (freebsd-arm), const ENOEXEC = 8 pkg syscall (freebsd-arm), const ENOLCK = 77 pkg syscall (freebsd-arm), const ENOLINK = 91 pkg syscall (freebsd-arm), const ENOMEM = 12 pkg syscall (freebsd-arm), const ENOMSG = 83 pkg syscall (freebsd-arm), const ENOPROTOOPT = 42 pkg syscall (freebsd-arm), const ENOSPC = 28 pkg syscall (freebsd-arm), const ENOSYS = 78 pkg syscall (freebsd-arm), const ENOTBLK = 15 pkg syscall (freebsd-arm), const ENOTCAPABLE = 93 pkg syscall (freebsd-arm), const ENOTCONN = 57 pkg syscall (freebsd-arm), const ENOTDIR = 20 pkg syscall (freebsd-arm), const ENOTEMPTY = 66 pkg syscall (freebsd-arm), const ENOTSOCK = 38 pkg syscall (freebsd-arm), const ENOTSUP = 45 pkg syscall (freebsd-arm), const ENOTTY = 25 pkg syscall (freebsd-arm), const ENXIO = 6 pkg syscall (freebsd-arm), const EOPNOTSUPP = 45 pkg syscall (freebsd-arm), const EOVERFLOW = 84 pkg syscall (freebsd-arm), const EPERM = 1 pkg syscall (freebsd-arm), const EPFNOSUPPORT = 46 pkg syscall (freebsd-arm), const EPIPE = 32 pkg syscall (freebsd-arm), const EPROCLIM = 67 pkg syscall (freebsd-arm), const EPROCUNAVAIL = 76 pkg syscall (freebsd-arm), const EPROGMISMATCH = 75 pkg syscall (freebsd-arm), const EPROGUNAVAIL = 74 pkg syscall (freebsd-arm), const EPROTO = 92 pkg syscall (freebsd-arm), const EPROTONOSUPPORT = 43 pkg syscall (freebsd-arm), const EPROTOTYPE = 41 pkg syscall (freebsd-arm), const ERANGE = 34 pkg syscall (freebsd-arm), const EREMOTE = 71 pkg syscall (freebsd-arm), const EROFS = 30 pkg syscall (freebsd-arm), const ERPCMISMATCH = 73 pkg syscall (freebsd-arm), const ESHUTDOWN = 58 pkg syscall (freebsd-arm), const ESOCKTNOSUPPORT = 44 pkg syscall (freebsd-arm), const ESPIPE = 29 pkg syscall (freebsd-arm), const ESRCH = 3 pkg syscall (freebsd-arm), const ESTALE = 70 pkg syscall (freebsd-arm), const ETIMEDOUT = 60 pkg syscall (freebsd-arm), const ETOOMANYREFS = 59 pkg syscall (freebsd-arm), const ETXTBSY = 26 pkg syscall (freebsd-arm), const EUSERS = 68 pkg syscall (freebsd-arm), const EVFILT_AIO = -3 pkg syscall (freebsd-arm), const EVFILT_FS = -9 pkg syscall (freebsd-arm), const EVFILT_LIO = -10 pkg syscall (freebsd-arm), const EVFILT_PROC = -5 pkg syscall (freebsd-arm), const EVFILT_READ = -1 pkg syscall (freebsd-arm), const EVFILT_SIGNAL = -6 pkg syscall (freebsd-arm), const EVFILT_SYSCOUNT = 11 pkg syscall (freebsd-arm), const EVFILT_TIMER = -7 pkg syscall (freebsd-arm), const EVFILT_USER = -11 pkg syscall (freebsd-arm), const EVFILT_VNODE = -4 pkg syscall (freebsd-arm), const EVFILT_WRITE = -2 pkg syscall (freebsd-arm), const EV_ADD = 1 pkg syscall (freebsd-arm), const EV_CLEAR = 32 pkg syscall (freebsd-arm), const EV_DELETE = 2 pkg syscall (freebsd-arm), const EV_DISABLE = 8 pkg syscall (freebsd-arm), const EV_DISPATCH = 128 pkg syscall (freebsd-arm), const EV_ENABLE = 4 pkg syscall (freebsd-arm), const EV_EOF = 32768 pkg syscall (freebsd-arm), const EV_ERROR = 16384 pkg syscall (freebsd-arm), const EV_FLAG1 = 8192 pkg syscall (freebsd-arm), const EV_ONESHOT = 16 pkg syscall (freebsd-arm), const EV_RECEIPT = 64 pkg syscall (freebsd-arm), const EV_SYSFLAGS = 61440 pkg syscall (freebsd-arm), const EWOULDBLOCK = 35 pkg syscall (freebsd-arm), const EXDEV = 18 pkg syscall (freebsd-arm), const EXTA = 19200 pkg syscall (freebsd-arm), const EXTB = 38400 pkg syscall (freebsd-arm), const EXTPROC = 2048 pkg syscall (freebsd-arm), const FD_CLOEXEC = 1 pkg syscall (freebsd-arm), const FD_SETSIZE = 1024 pkg syscall (freebsd-arm), const FLUSHO = 8388608 pkg syscall (freebsd-arm), const F_CANCEL = 5 pkg syscall (freebsd-arm), const F_DUP2FD = 10 pkg syscall (freebsd-arm), const F_DUP2FD_CLOEXEC = 18 pkg syscall (freebsd-arm), const F_DUPFD = 0 pkg syscall (freebsd-arm), const F_DUPFD_CLOEXEC = 17 pkg syscall (freebsd-arm), const F_GETFD = 1 pkg syscall (freebsd-arm), const F_GETFL = 3 pkg syscall (freebsd-arm), const F_GETLK = 11 pkg syscall (freebsd-arm), const F_GETOWN = 5 pkg syscall (freebsd-arm), const F_OGETLK = 7 pkg syscall (freebsd-arm), const F_OK = 0 pkg syscall (freebsd-arm), const F_OSETLK = 8 pkg syscall (freebsd-arm), const F_OSETLKW = 9 pkg syscall (freebsd-arm), const F_RDAHEAD = 16 pkg syscall (freebsd-arm), const F_RDLCK = 1 pkg syscall (freebsd-arm), const F_READAHEAD = 15 pkg syscall (freebsd-arm), const F_SETFD = 2 pkg syscall (freebsd-arm), const F_SETFL = 4 pkg syscall (freebsd-arm), const F_SETLK = 12 pkg syscall (freebsd-arm), const F_SETLKW = 13 pkg syscall (freebsd-arm), const F_SETLK_REMOTE = 14 pkg syscall (freebsd-arm), const F_SETOWN = 6 pkg syscall (freebsd-arm), const F_UNLCK = 2 pkg syscall (freebsd-arm), const F_UNLCKSYS = 4 pkg syscall (freebsd-arm), const F_WRLCK = 3 pkg syscall (freebsd-arm), const HUPCL = 16384 pkg syscall (freebsd-arm), const ICANON = 256 pkg syscall (freebsd-arm), const ICRNL = 256 pkg syscall (freebsd-arm), const IEXTEN = 1024 pkg syscall (freebsd-arm), const IFAN_ARRIVAL = 0 pkg syscall (freebsd-arm), const IFAN_DEPARTURE = 1 pkg syscall (freebsd-arm), const IFF_ALLMULTI = 512 pkg syscall (freebsd-arm), const IFF_ALTPHYS = 16384 pkg syscall (freebsd-arm), const IFF_CANTCHANGE = 2199410 pkg syscall (freebsd-arm), const IFF_CANTCONFIG = 65536 pkg syscall (freebsd-arm), const IFF_DEBUG = 4 pkg syscall (freebsd-arm), const IFF_DRV_OACTIVE = 1024 pkg syscall (freebsd-arm), const IFF_DRV_RUNNING = 64 pkg syscall (freebsd-arm), const IFF_DYING = 2097152 pkg syscall (freebsd-arm), const IFF_LINK0 = 4096 pkg syscall (freebsd-arm), const IFF_LINK1 = 8192 pkg syscall (freebsd-arm), const IFF_LINK2 = 16384 pkg syscall (freebsd-arm), const IFF_LOOPBACK = 8 pkg syscall (freebsd-arm), const IFF_MONITOR = 262144 pkg syscall (freebsd-arm), const IFF_MULTICAST = 32768 pkg syscall (freebsd-arm), const IFF_NOARP = 128 pkg syscall (freebsd-arm), const IFF_OACTIVE = 1024 pkg syscall (freebsd-arm), const IFF_POINTOPOINT = 16 pkg syscall (freebsd-arm), const IFF_PPROMISC = 131072 pkg syscall (freebsd-arm), const IFF_PROMISC = 256 pkg syscall (freebsd-arm), const IFF_RENAMING = 4194304 pkg syscall (freebsd-arm), const IFF_RUNNING = 64 pkg syscall (freebsd-arm), const IFF_SIMPLEX = 2048 pkg syscall (freebsd-arm), const IFF_SMART = 32 pkg syscall (freebsd-arm), const IFF_STATICARP = 524288 pkg syscall (freebsd-arm), const IFNAMSIZ = 16 pkg syscall (freebsd-arm), const IFT_1822 = 2 pkg syscall (freebsd-arm), const IFT_A12MPPSWITCH = 130 pkg syscall (freebsd-arm), const IFT_AAL2 = 187 pkg syscall (freebsd-arm), const IFT_AAL5 = 49 pkg syscall (freebsd-arm), const IFT_ADSL = 94 pkg syscall (freebsd-arm), const IFT_AFLANE8023 = 59 pkg syscall (freebsd-arm), const IFT_AFLANE8025 = 60 pkg syscall (freebsd-arm), const IFT_ARAP = 88 pkg syscall (freebsd-arm), const IFT_ARCNET = 35 pkg syscall (freebsd-arm), const IFT_ARCNETPLUS = 36 pkg syscall (freebsd-arm), const IFT_ASYNC = 84 pkg syscall (freebsd-arm), const IFT_ATM = 37 pkg syscall (freebsd-arm), const IFT_ATMDXI = 105 pkg syscall (freebsd-arm), const IFT_ATMFUNI = 106 pkg syscall (freebsd-arm), const IFT_ATMIMA = 107 pkg syscall (freebsd-arm), const IFT_ATMLOGICAL = 80 pkg syscall (freebsd-arm), const IFT_ATMRADIO = 189 pkg syscall (freebsd-arm), const IFT_ATMSUBINTERFACE = 134 pkg syscall (freebsd-arm), const IFT_ATMVCIENDPT = 194 pkg syscall (freebsd-arm), const IFT_ATMVIRTUAL = 149 pkg syscall (freebsd-arm), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (freebsd-arm), const IFT_BRIDGE = 209 pkg syscall (freebsd-arm), const IFT_BSC = 83 pkg syscall (freebsd-arm), const IFT_CCTEMUL = 61 pkg syscall (freebsd-arm), const IFT_CEPT = 19 pkg syscall (freebsd-arm), const IFT_CES = 133 pkg syscall (freebsd-arm), const IFT_CHANNEL = 70 pkg syscall (freebsd-arm), const IFT_CNR = 85 pkg syscall (freebsd-arm), const IFT_COFFEE = 132 pkg syscall (freebsd-arm), const IFT_COMPOSITELINK = 155 pkg syscall (freebsd-arm), const IFT_DCN = 141 pkg syscall (freebsd-arm), const IFT_DIGITALPOWERLINE = 138 pkg syscall (freebsd-arm), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (freebsd-arm), const IFT_DLSW = 74 pkg syscall (freebsd-arm), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (freebsd-arm), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (freebsd-arm), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (freebsd-arm), const IFT_DS0 = 81 pkg syscall (freebsd-arm), const IFT_DS0BUNDLE = 82 pkg syscall (freebsd-arm), const IFT_DS1FDL = 170 pkg syscall (freebsd-arm), const IFT_DS3 = 30 pkg syscall (freebsd-arm), const IFT_DTM = 140 pkg syscall (freebsd-arm), const IFT_DVBASILN = 172 pkg syscall (freebsd-arm), const IFT_DVBASIOUT = 173 pkg syscall (freebsd-arm), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (freebsd-arm), const IFT_DVBRCCMACLAYER = 146 pkg syscall (freebsd-arm), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (freebsd-arm), const IFT_ENC = 244 pkg syscall (freebsd-arm), const IFT_EON = 25 pkg syscall (freebsd-arm), const IFT_EPLRS = 87 pkg syscall (freebsd-arm), const IFT_ESCON = 73 pkg syscall (freebsd-arm), const IFT_ETHER = 6 pkg syscall (freebsd-arm), const IFT_FAITH = 242 pkg syscall (freebsd-arm), const IFT_FAST = 125 pkg syscall (freebsd-arm), const IFT_FASTETHER = 62 pkg syscall (freebsd-arm), const IFT_FASTETHERFX = 69 pkg syscall (freebsd-arm), const IFT_FDDI = 15 pkg syscall (freebsd-arm), const IFT_FIBRECHANNEL = 56 pkg syscall (freebsd-arm), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (freebsd-arm), const IFT_FRAMERELAYMPI = 92 pkg syscall (freebsd-arm), const IFT_FRDLCIENDPT = 193 pkg syscall (freebsd-arm), const IFT_FRELAY = 32 pkg syscall (freebsd-arm), const IFT_FRELAYDCE = 44 pkg syscall (freebsd-arm), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (freebsd-arm), const IFT_FRFORWARD = 158 pkg syscall (freebsd-arm), const IFT_G703AT2MB = 67 pkg syscall (freebsd-arm), const IFT_G703AT64K = 66 pkg syscall (freebsd-arm), const IFT_GIF = 240 pkg syscall (freebsd-arm), const IFT_GIGABITETHERNET = 117 pkg syscall (freebsd-arm), const IFT_GR303IDT = 178 pkg syscall (freebsd-arm), const IFT_GR303RDT = 177 pkg syscall (freebsd-arm), const IFT_H323GATEKEEPER = 164 pkg syscall (freebsd-arm), const IFT_H323PROXY = 165 pkg syscall (freebsd-arm), const IFT_HDH1822 = 3 pkg syscall (freebsd-arm), const IFT_HDLC = 118 pkg syscall (freebsd-arm), const IFT_HDSL2 = 168 pkg syscall (freebsd-arm), const IFT_HIPERLAN2 = 183 pkg syscall (freebsd-arm), const IFT_HIPPI = 47 pkg syscall (freebsd-arm), const IFT_HIPPIINTERFACE = 57 pkg syscall (freebsd-arm), const IFT_HOSTPAD = 90 pkg syscall (freebsd-arm), const IFT_HSSI = 46 pkg syscall (freebsd-arm), const IFT_HY = 14 pkg syscall (freebsd-arm), const IFT_IBM370PARCHAN = 72 pkg syscall (freebsd-arm), const IFT_IDSL = 154 pkg syscall (freebsd-arm), const IFT_IEEE1394 = 144 pkg syscall (freebsd-arm), const IFT_IEEE80211 = 71 pkg syscall (freebsd-arm), const IFT_IEEE80212 = 55 pkg syscall (freebsd-arm), const IFT_IEEE8023ADLAG = 161 pkg syscall (freebsd-arm), const IFT_IFGSN = 145 pkg syscall (freebsd-arm), const IFT_IMT = 190 pkg syscall (freebsd-arm), const IFT_INFINIBAND = 199 pkg syscall (freebsd-arm), const IFT_INTERLEAVE = 124 pkg syscall (freebsd-arm), const IFT_IP = 126 pkg syscall (freebsd-arm), const IFT_IPFORWARD = 142 pkg syscall (freebsd-arm), const IFT_IPOVERATM = 114 pkg syscall (freebsd-arm), const IFT_IPOVERCDLC = 109 pkg syscall (freebsd-arm), const IFT_IPOVERCLAW = 110 pkg syscall (freebsd-arm), const IFT_IPSWITCH = 78 pkg syscall (freebsd-arm), const IFT_IPXIP = 249 pkg syscall (freebsd-arm), const IFT_ISDN = 63 pkg syscall (freebsd-arm), const IFT_ISDNBASIC = 20 pkg syscall (freebsd-arm), const IFT_ISDNPRIMARY = 21 pkg syscall (freebsd-arm), const IFT_ISDNS = 75 pkg syscall (freebsd-arm), const IFT_ISDNU = 76 pkg syscall (freebsd-arm), const IFT_ISO88022LLC = 41 pkg syscall (freebsd-arm), const IFT_ISO88023 = 7 pkg syscall (freebsd-arm), const IFT_ISO88024 = 8 pkg syscall (freebsd-arm), const IFT_ISO88025 = 9 pkg syscall (freebsd-arm), const IFT_ISO88025CRFPINT = 98 pkg syscall (freebsd-arm), const IFT_ISO88025DTR = 86 pkg syscall (freebsd-arm), const IFT_ISO88025FIBER = 115 pkg syscall (freebsd-arm), const IFT_ISO88026 = 10 pkg syscall (freebsd-arm), const IFT_ISUP = 179 pkg syscall (freebsd-arm), const IFT_L2VLAN = 135 pkg syscall (freebsd-arm), const IFT_L3IPVLAN = 136 pkg syscall (freebsd-arm), const IFT_L3IPXVLAN = 137 pkg syscall (freebsd-arm), const IFT_LAPB = 16 pkg syscall (freebsd-arm), const IFT_LAPD = 77 pkg syscall (freebsd-arm), const IFT_LAPF = 119 pkg syscall (freebsd-arm), const IFT_LOCALTALK = 42 pkg syscall (freebsd-arm), const IFT_LOOP = 24 pkg syscall (freebsd-arm), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (freebsd-arm), const IFT_MFSIGLINK = 167 pkg syscall (freebsd-arm), const IFT_MIOX25 = 38 pkg syscall (freebsd-arm), const IFT_MODEM = 48 pkg syscall (freebsd-arm), const IFT_MPC = 113 pkg syscall (freebsd-arm), const IFT_MPLS = 166 pkg syscall (freebsd-arm), const IFT_MPLSTUNNEL = 150 pkg syscall (freebsd-arm), const IFT_MSDSL = 143 pkg syscall (freebsd-arm), const IFT_MVL = 191 pkg syscall (freebsd-arm), const IFT_MYRINET = 99 pkg syscall (freebsd-arm), const IFT_NFAS = 175 pkg syscall (freebsd-arm), const IFT_NSIP = 27 pkg syscall (freebsd-arm), const IFT_OPTICALCHANNEL = 195 pkg syscall (freebsd-arm), const IFT_OPTICALTRANSPORT = 196 pkg syscall (freebsd-arm), const IFT_OTHER = 1 pkg syscall (freebsd-arm), const IFT_P10 = 12 pkg syscall (freebsd-arm), const IFT_P80 = 13 pkg syscall (freebsd-arm), const IFT_PARA = 34 pkg syscall (freebsd-arm), const IFT_PFLOG = 246 pkg syscall (freebsd-arm), const IFT_PFSYNC = 247 pkg syscall (freebsd-arm), const IFT_PLC = 174 pkg syscall (freebsd-arm), const IFT_POS = 171 pkg syscall (freebsd-arm), const IFT_PPP = 23 pkg syscall (freebsd-arm), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (freebsd-arm), const IFT_PROPBWAP2MP = 184 pkg syscall (freebsd-arm), const IFT_PROPCNLS = 89 pkg syscall (freebsd-arm), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (freebsd-arm), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (freebsd-arm), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (freebsd-arm), const IFT_PROPMUX = 54 pkg syscall (freebsd-arm), const IFT_PROPVIRTUAL = 53 pkg syscall (freebsd-arm), const IFT_PROPWIRELESSP2P = 157 pkg syscall (freebsd-arm), const IFT_PTPSERIAL = 22 pkg syscall (freebsd-arm), const IFT_PVC = 241 pkg syscall (freebsd-arm), const IFT_QLLC = 68 pkg syscall (freebsd-arm), const IFT_RADIOMAC = 188 pkg syscall (freebsd-arm), const IFT_RADSL = 95 pkg syscall (freebsd-arm), const IFT_REACHDSL = 192 pkg syscall (freebsd-arm), const IFT_RFC1483 = 159 pkg syscall (freebsd-arm), const IFT_RS232 = 33 pkg syscall (freebsd-arm), const IFT_RSRB = 79 pkg syscall (freebsd-arm), const IFT_SDLC = 17 pkg syscall (freebsd-arm), const IFT_SDSL = 96 pkg syscall (freebsd-arm), const IFT_SHDSL = 169 pkg syscall (freebsd-arm), const IFT_SIP = 31 pkg syscall (freebsd-arm), const IFT_SLIP = 28 pkg syscall (freebsd-arm), const IFT_SMDSDXI = 43 pkg syscall (freebsd-arm), const IFT_SMDSICIP = 52 pkg syscall (freebsd-arm), const IFT_SONET = 39 pkg syscall (freebsd-arm), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (freebsd-arm), const IFT_SONETPATH = 50 pkg syscall (freebsd-arm), const IFT_SONETVT = 51 pkg syscall (freebsd-arm), const IFT_SRP = 151 pkg syscall (freebsd-arm), const IFT_SS7SIGLINK = 156 pkg syscall (freebsd-arm), const IFT_STACKTOSTACK = 111 pkg syscall (freebsd-arm), const IFT_STARLAN = 11 pkg syscall (freebsd-arm), const IFT_STF = 215 pkg syscall (freebsd-arm), const IFT_T1 = 18 pkg syscall (freebsd-arm), const IFT_TDLC = 116 pkg syscall (freebsd-arm), const IFT_TERMPAD = 91 pkg syscall (freebsd-arm), const IFT_TR008 = 176 pkg syscall (freebsd-arm), const IFT_TRANSPHDLC = 123 pkg syscall (freebsd-arm), const IFT_TUNNEL = 131 pkg syscall (freebsd-arm), const IFT_ULTRA = 29 pkg syscall (freebsd-arm), const IFT_USB = 160 pkg syscall (freebsd-arm), const IFT_V11 = 64 pkg syscall (freebsd-arm), const IFT_V35 = 45 pkg syscall (freebsd-arm), const IFT_V36 = 65 pkg syscall (freebsd-arm), const IFT_V37 = 120 pkg syscall (freebsd-arm), const IFT_VDSL = 97 pkg syscall (freebsd-arm), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (freebsd-arm), const IFT_VOICEEM = 100 pkg syscall (freebsd-arm), const IFT_VOICEENCAP = 103 pkg syscall (freebsd-arm), const IFT_VOICEFXO = 101 pkg syscall (freebsd-arm), const IFT_VOICEFXS = 102 pkg syscall (freebsd-arm), const IFT_VOICEOVERATM = 152 pkg syscall (freebsd-arm), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (freebsd-arm), const IFT_VOICEOVERIP = 104 pkg syscall (freebsd-arm), const IFT_X213 = 93 pkg syscall (freebsd-arm), const IFT_X25 = 5 pkg syscall (freebsd-arm), const IFT_X25DDN = 4 pkg syscall (freebsd-arm), const IFT_X25HUNTGROUP = 122 pkg syscall (freebsd-arm), const IFT_X25MLP = 121 pkg syscall (freebsd-arm), const IFT_X25PLE = 40 pkg syscall (freebsd-arm), const IFT_XETHER = 26 pkg syscall (freebsd-arm), const IGNBRK = 1 pkg syscall (freebsd-arm), const IGNCR = 128 pkg syscall (freebsd-arm), const IGNPAR = 4 pkg syscall (freebsd-arm), const IMAXBEL = 8192 pkg syscall (freebsd-arm), const INLCR = 64 pkg syscall (freebsd-arm), const INPCK = 16 pkg syscall (freebsd-arm), const IN_CLASSA_HOST = 16777215 pkg syscall (freebsd-arm), const IN_CLASSA_MAX = 128 pkg syscall (freebsd-arm), const IN_CLASSA_NET = 4278190080 pkg syscall (freebsd-arm), const IN_CLASSA_NSHIFT = 24 pkg syscall (freebsd-arm), const IN_CLASSB_HOST = 65535 pkg syscall (freebsd-arm), const IN_CLASSB_MAX = 65536 pkg syscall (freebsd-arm), const IN_CLASSB_NET = 4294901760 pkg syscall (freebsd-arm), const IN_CLASSB_NSHIFT = 16 pkg syscall (freebsd-arm), const IN_CLASSC_HOST = 255 pkg syscall (freebsd-arm), const IN_CLASSC_NET = 4294967040 pkg syscall (freebsd-arm), const IN_CLASSC_NSHIFT = 8 pkg syscall (freebsd-arm), const IN_CLASSD_HOST = 268435455 pkg syscall (freebsd-arm), const IN_CLASSD_NET = 4026531840 pkg syscall (freebsd-arm), const IN_CLASSD_NSHIFT = 28 pkg syscall (freebsd-arm), const IN_LOOPBACKNET = 127 pkg syscall (freebsd-arm), const IN_RFC3021_MASK = 4294967294 pkg syscall (freebsd-arm), const IPPROTO_3PC = 34 pkg syscall (freebsd-arm), const IPPROTO_ADFS = 68 pkg syscall (freebsd-arm), const IPPROTO_AH = 51 pkg syscall (freebsd-arm), const IPPROTO_AHIP = 61 pkg syscall (freebsd-arm), const IPPROTO_APES = 99 pkg syscall (freebsd-arm), const IPPROTO_ARGUS = 13 pkg syscall (freebsd-arm), const IPPROTO_AX25 = 93 pkg syscall (freebsd-arm), const IPPROTO_BHA = 49 pkg syscall (freebsd-arm), const IPPROTO_BLT = 30 pkg syscall (freebsd-arm), const IPPROTO_BRSATMON = 76 pkg syscall (freebsd-arm), const IPPROTO_CARP = 112 pkg syscall (freebsd-arm), const IPPROTO_CFTP = 62 pkg syscall (freebsd-arm), const IPPROTO_CHAOS = 16 pkg syscall (freebsd-arm), const IPPROTO_CMTP = 38 pkg syscall (freebsd-arm), const IPPROTO_CPHB = 73 pkg syscall (freebsd-arm), const IPPROTO_CPNX = 72 pkg syscall (freebsd-arm), const IPPROTO_DDP = 37 pkg syscall (freebsd-arm), const IPPROTO_DGP = 86 pkg syscall (freebsd-arm), const IPPROTO_DIVERT = 258 pkg syscall (freebsd-arm), const IPPROTO_DONE = 257 pkg syscall (freebsd-arm), const IPPROTO_DSTOPTS = 60 pkg syscall (freebsd-arm), const IPPROTO_EGP = 8 pkg syscall (freebsd-arm), const IPPROTO_EMCON = 14 pkg syscall (freebsd-arm), const IPPROTO_ENCAP = 98 pkg syscall (freebsd-arm), const IPPROTO_EON = 80 pkg syscall (freebsd-arm), const IPPROTO_ESP = 50 pkg syscall (freebsd-arm), const IPPROTO_ETHERIP = 97 pkg syscall (freebsd-arm), const IPPROTO_FRAGMENT = 44 pkg syscall (freebsd-arm), const IPPROTO_GGP = 3 pkg syscall (freebsd-arm), const IPPROTO_GMTP = 100 pkg syscall (freebsd-arm), const IPPROTO_GRE = 47 pkg syscall (freebsd-arm), const IPPROTO_HELLO = 63 pkg syscall (freebsd-arm), const IPPROTO_HMP = 20 pkg syscall (freebsd-arm), const IPPROTO_HOPOPTS = 0 pkg syscall (freebsd-arm), const IPPROTO_ICMP = 1 pkg syscall (freebsd-arm), const IPPROTO_ICMPV6 = 58 pkg syscall (freebsd-arm), const IPPROTO_IDP = 22 pkg syscall (freebsd-arm), const IPPROTO_IDPR = 35 pkg syscall (freebsd-arm), const IPPROTO_IDRP = 45 pkg syscall (freebsd-arm), const IPPROTO_IGMP = 2 pkg syscall (freebsd-arm), const IPPROTO_IGP = 85 pkg syscall (freebsd-arm), const IPPROTO_IGRP = 88 pkg syscall (freebsd-arm), const IPPROTO_IL = 40 pkg syscall (freebsd-arm), const IPPROTO_INLSP = 52 pkg syscall (freebsd-arm), const IPPROTO_INP = 32 pkg syscall (freebsd-arm), const IPPROTO_IPCOMP = 108 pkg syscall (freebsd-arm), const IPPROTO_IPCV = 71 pkg syscall (freebsd-arm), const IPPROTO_IPEIP = 94 pkg syscall (freebsd-arm), const IPPROTO_IPIP = 4 pkg syscall (freebsd-arm), const IPPROTO_IPPC = 67 pkg syscall (freebsd-arm), const IPPROTO_IPV4 = 4 pkg syscall (freebsd-arm), const IPPROTO_IRTP = 28 pkg syscall (freebsd-arm), const IPPROTO_KRYPTOLAN = 65 pkg syscall (freebsd-arm), const IPPROTO_LARP = 91 pkg syscall (freebsd-arm), const IPPROTO_LEAF1 = 25 pkg syscall (freebsd-arm), const IPPROTO_LEAF2 = 26 pkg syscall (freebsd-arm), const IPPROTO_MAX = 256 pkg syscall (freebsd-arm), const IPPROTO_MAXID = 52 pkg syscall (freebsd-arm), const IPPROTO_MEAS = 19 pkg syscall (freebsd-arm), const IPPROTO_MH = 135 pkg syscall (freebsd-arm), const IPPROTO_MHRP = 48 pkg syscall (freebsd-arm), const IPPROTO_MICP = 95 pkg syscall (freebsd-arm), const IPPROTO_MOBILE = 55 pkg syscall (freebsd-arm), const IPPROTO_MPLS = 137 pkg syscall (freebsd-arm), const IPPROTO_MTP = 92 pkg syscall (freebsd-arm), const IPPROTO_MUX = 18 pkg syscall (freebsd-arm), const IPPROTO_ND = 77 pkg syscall (freebsd-arm), const IPPROTO_NHRP = 54 pkg syscall (freebsd-arm), const IPPROTO_NONE = 59 pkg syscall (freebsd-arm), const IPPROTO_NSP = 31 pkg syscall (freebsd-arm), const IPPROTO_NVPII = 11 pkg syscall (freebsd-arm), const IPPROTO_OLD_DIVERT = 254 pkg syscall (freebsd-arm), const IPPROTO_OSPFIGP = 89 pkg syscall (freebsd-arm), const IPPROTO_PFSYNC = 240 pkg syscall (freebsd-arm), const IPPROTO_PGM = 113 pkg syscall (freebsd-arm), const IPPROTO_PIGP = 9 pkg syscall (freebsd-arm), const IPPROTO_PIM = 103 pkg syscall (freebsd-arm), const IPPROTO_PRM = 21 pkg syscall (freebsd-arm), const IPPROTO_PUP = 12 pkg syscall (freebsd-arm), const IPPROTO_PVP = 75 pkg syscall (freebsd-arm), const IPPROTO_RAW = 255 pkg syscall (freebsd-arm), const IPPROTO_RCCMON = 10 pkg syscall (freebsd-arm), const IPPROTO_RDP = 27 pkg syscall (freebsd-arm), const IPPROTO_ROUTING = 43 pkg syscall (freebsd-arm), const IPPROTO_RSVP = 46 pkg syscall (freebsd-arm), const IPPROTO_RVD = 66 pkg syscall (freebsd-arm), const IPPROTO_SATEXPAK = 64 pkg syscall (freebsd-arm), const IPPROTO_SATMON = 69 pkg syscall (freebsd-arm), const IPPROTO_SCCSP = 96 pkg syscall (freebsd-arm), const IPPROTO_SCTP = 132 pkg syscall (freebsd-arm), const IPPROTO_SDRP = 42 pkg syscall (freebsd-arm), const IPPROTO_SEND = 259 pkg syscall (freebsd-arm), const IPPROTO_SEP = 33 pkg syscall (freebsd-arm), const IPPROTO_SKIP = 57 pkg syscall (freebsd-arm), const IPPROTO_SPACER = 32767 pkg syscall (freebsd-arm), const IPPROTO_SRPC = 90 pkg syscall (freebsd-arm), const IPPROTO_ST = 7 pkg syscall (freebsd-arm), const IPPROTO_SVMTP = 82 pkg syscall (freebsd-arm), const IPPROTO_SWIPE = 53 pkg syscall (freebsd-arm), const IPPROTO_TCF = 87 pkg syscall (freebsd-arm), const IPPROTO_TLSP = 56 pkg syscall (freebsd-arm), const IPPROTO_TP = 29 pkg syscall (freebsd-arm), const IPPROTO_TPXX = 39 pkg syscall (freebsd-arm), const IPPROTO_TRUNK1 = 23 pkg syscall (freebsd-arm), const IPPROTO_TRUNK2 = 24 pkg syscall (freebsd-arm), const IPPROTO_TTP = 84 pkg syscall (freebsd-arm), const IPPROTO_VINES = 83 pkg syscall (freebsd-arm), const IPPROTO_VISA = 70 pkg syscall (freebsd-arm), const IPPROTO_VMTP = 81 pkg syscall (freebsd-arm), const IPPROTO_WBEXPAK = 79 pkg syscall (freebsd-arm), const IPPROTO_WBMON = 78 pkg syscall (freebsd-arm), const IPPROTO_WSN = 74 pkg syscall (freebsd-arm), const IPPROTO_XNET = 15 pkg syscall (freebsd-arm), const IPPROTO_XTP = 36 pkg syscall (freebsd-arm), const IPV6_AUTOFLOWLABEL = 59 pkg syscall (freebsd-arm), const IPV6_BINDANY = 64 pkg syscall (freebsd-arm), const IPV6_BINDV6ONLY = 27 pkg syscall (freebsd-arm), const IPV6_CHECKSUM = 26 pkg syscall (freebsd-arm), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (freebsd-arm), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (freebsd-arm), const IPV6_DEFHLIM = 64 pkg syscall (freebsd-arm), const IPV6_DONTFRAG = 62 pkg syscall (freebsd-arm), const IPV6_DSTOPTS = 50 pkg syscall (freebsd-arm), const IPV6_FAITH = 29 pkg syscall (freebsd-arm), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (freebsd-arm), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (freebsd-arm), const IPV6_FRAGTTL = 120 pkg syscall (freebsd-arm), const IPV6_FW_ADD = 30 pkg syscall (freebsd-arm), const IPV6_FW_DEL = 31 pkg syscall (freebsd-arm), const IPV6_FW_FLUSH = 32 pkg syscall (freebsd-arm), const IPV6_FW_GET = 34 pkg syscall (freebsd-arm), const IPV6_FW_ZERO = 33 pkg syscall (freebsd-arm), const IPV6_HLIMDEC = 1 pkg syscall (freebsd-arm), const IPV6_HOPLIMIT = 47 pkg syscall (freebsd-arm), const IPV6_HOPOPTS = 49 pkg syscall (freebsd-arm), const IPV6_IPSEC_POLICY = 28 pkg syscall (freebsd-arm), const IPV6_JOIN_GROUP = 12 pkg syscall (freebsd-arm), const IPV6_LEAVE_GROUP = 13 pkg syscall (freebsd-arm), const IPV6_MAXHLIM = 255 pkg syscall (freebsd-arm), const IPV6_MAXOPTHDR = 2048 pkg syscall (freebsd-arm), const IPV6_MAXPACKET = 65535 pkg syscall (freebsd-arm), const IPV6_MAX_GROUP_SRC_FILTER = 512 pkg syscall (freebsd-arm), const IPV6_MAX_MEMBERSHIPS = 4095 pkg syscall (freebsd-arm), const IPV6_MAX_SOCK_SRC_FILTER = 128 pkg syscall (freebsd-arm), const IPV6_MIN_MEMBERSHIPS = 31 pkg syscall (freebsd-arm), const IPV6_MMTU = 1280 pkg syscall (freebsd-arm), const IPV6_MSFILTER = 74 pkg syscall (freebsd-arm), const IPV6_MULTICAST_HOPS = 10 pkg syscall (freebsd-arm), const IPV6_MULTICAST_IF = 9 pkg syscall (freebsd-arm), const IPV6_MULTICAST_LOOP = 11 pkg syscall (freebsd-arm), const IPV6_NEXTHOP = 48 pkg syscall (freebsd-arm), const IPV6_PATHMTU = 44 pkg syscall (freebsd-arm), const IPV6_PKTINFO = 46 pkg syscall (freebsd-arm), const IPV6_PORTRANGE = 14 pkg syscall (freebsd-arm), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (freebsd-arm), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (freebsd-arm), const IPV6_PORTRANGE_LOW = 2 pkg syscall (freebsd-arm), const IPV6_PREFER_TEMPADDR = 63 pkg syscall (freebsd-arm), const IPV6_RECVDSTOPTS = 40 pkg syscall (freebsd-arm), const IPV6_RECVHOPLIMIT = 37 pkg syscall (freebsd-arm), const IPV6_RECVHOPOPTS = 39 pkg syscall (freebsd-arm), const IPV6_RECVPATHMTU = 43 pkg syscall (freebsd-arm), const IPV6_RECVPKTINFO = 36 pkg syscall (freebsd-arm), const IPV6_RECVRTHDR = 38 pkg syscall (freebsd-arm), const IPV6_RECVTCLASS = 57 pkg syscall (freebsd-arm), const IPV6_RTHDR = 51 pkg syscall (freebsd-arm), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (freebsd-arm), const IPV6_RTHDR_LOOSE = 0 pkg syscall (freebsd-arm), const IPV6_RTHDR_STRICT = 1 pkg syscall (freebsd-arm), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (freebsd-arm), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (freebsd-arm), const IPV6_TCLASS = 61 pkg syscall (freebsd-arm), const IPV6_UNICAST_HOPS = 4 pkg syscall (freebsd-arm), const IPV6_USE_MIN_MTU = 42 pkg syscall (freebsd-arm), const IPV6_V6ONLY = 27 pkg syscall (freebsd-arm), const IPV6_VERSION = 96 pkg syscall (freebsd-arm), const IPV6_VERSION_MASK = 240 pkg syscall (freebsd-arm), const IP_ADD_MEMBERSHIP = 12 pkg syscall (freebsd-arm), const IP_ADD_SOURCE_MEMBERSHIP = 70 pkg syscall (freebsd-arm), const IP_BINDANY = 24 pkg syscall (freebsd-arm), const IP_BLOCK_SOURCE = 72 pkg syscall (freebsd-arm), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (freebsd-arm), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (freebsd-arm), const IP_DF = 16384 pkg syscall (freebsd-arm), const IP_DONTFRAG = 67 pkg syscall (freebsd-arm), const IP_DROP_MEMBERSHIP = 13 pkg syscall (freebsd-arm), const IP_DROP_SOURCE_MEMBERSHIP = 71 pkg syscall (freebsd-arm), const IP_DUMMYNET3 = 49 pkg syscall (freebsd-arm), const IP_DUMMYNET_CONFIGURE = 60 pkg syscall (freebsd-arm), const IP_DUMMYNET_DEL = 61 pkg syscall (freebsd-arm), const IP_DUMMYNET_FLUSH = 62 pkg syscall (freebsd-arm), const IP_DUMMYNET_GET = 64 pkg syscall (freebsd-arm), const IP_FAITH = 22 pkg syscall (freebsd-arm), const IP_FW3 = 48 pkg syscall (freebsd-arm), const IP_FW_ADD = 50 pkg syscall (freebsd-arm), const IP_FW_DEL = 51 pkg syscall (freebsd-arm), const IP_FW_FLUSH = 52 pkg syscall (freebsd-arm), const IP_FW_GET = 54 pkg syscall (freebsd-arm), const IP_FW_NAT_CFG = 56 pkg syscall (freebsd-arm), const IP_FW_NAT_DEL = 57 pkg syscall (freebsd-arm), const IP_FW_NAT_GET_CONFIG = 58 pkg syscall (freebsd-arm), const IP_FW_NAT_GET_LOG = 59 pkg syscall (freebsd-arm), const IP_FW_RESETLOG = 55 pkg syscall (freebsd-arm), const IP_FW_TABLE_ADD = 40 pkg syscall (freebsd-arm), const IP_FW_TABLE_DEL = 41 pkg syscall (freebsd-arm), const IP_FW_TABLE_FLUSH = 42 pkg syscall (freebsd-arm), const IP_FW_TABLE_GETSIZE = 43 pkg syscall (freebsd-arm), const IP_FW_TABLE_LIST = 44 pkg syscall (freebsd-arm), const IP_FW_ZERO = 53 pkg syscall (freebsd-arm), const IP_HDRINCL = 2 pkg syscall (freebsd-arm), const IP_IPSEC_POLICY = 21 pkg syscall (freebsd-arm), const IP_MAXPACKET = 65535 pkg syscall (freebsd-arm), const IP_MAX_GROUP_SRC_FILTER = 512 pkg syscall (freebsd-arm), const IP_MAX_MEMBERSHIPS = 4095 pkg syscall (freebsd-arm), const IP_MAX_SOCK_MUTE_FILTER = 128 pkg syscall (freebsd-arm), const IP_MAX_SOCK_SRC_FILTER = 128 pkg syscall (freebsd-arm), const IP_MAX_SOURCE_FILTER = 1024 pkg syscall (freebsd-arm), const IP_MF = 8192 pkg syscall (freebsd-arm), const IP_MINTTL = 66 pkg syscall (freebsd-arm), const IP_MIN_MEMBERSHIPS = 31 pkg syscall (freebsd-arm), const IP_MSFILTER = 74 pkg syscall (freebsd-arm), const IP_MSS = 576 pkg syscall (freebsd-arm), const IP_MULTICAST_IF = 9 pkg syscall (freebsd-arm), const IP_MULTICAST_LOOP = 11 pkg syscall (freebsd-arm), const IP_MULTICAST_TTL = 10 pkg syscall (freebsd-arm), const IP_MULTICAST_VIF = 14 pkg syscall (freebsd-arm), const IP_OFFMASK = 8191 pkg syscall (freebsd-arm), const IP_ONESBCAST = 23 pkg syscall (freebsd-arm), const IP_OPTIONS = 1 pkg syscall (freebsd-arm), const IP_PORTRANGE = 19 pkg syscall (freebsd-arm), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (freebsd-arm), const IP_PORTRANGE_HIGH = 1 pkg syscall (freebsd-arm), const IP_PORTRANGE_LOW = 2 pkg syscall (freebsd-arm), const IP_RECVDSTADDR = 7 pkg syscall (freebsd-arm), const IP_RECVIF = 20 pkg syscall (freebsd-arm), const IP_RECVOPTS = 5 pkg syscall (freebsd-arm), const IP_RECVRETOPTS = 6 pkg syscall (freebsd-arm), const IP_RECVTOS = 68 pkg syscall (freebsd-arm), const IP_RECVTTL = 65 pkg syscall (freebsd-arm), const IP_RETOPTS = 8 pkg syscall (freebsd-arm), const IP_RF = 32768 pkg syscall (freebsd-arm), const IP_RSVP_OFF = 16 pkg syscall (freebsd-arm), const IP_RSVP_ON = 15 pkg syscall (freebsd-arm), const IP_RSVP_VIF_OFF = 18 pkg syscall (freebsd-arm), const IP_RSVP_VIF_ON = 17 pkg syscall (freebsd-arm), const IP_SENDSRCADDR = 7 pkg syscall (freebsd-arm), const IP_TOS = 3 pkg syscall (freebsd-arm), const IP_TTL = 4 pkg syscall (freebsd-arm), const IP_UNBLOCK_SOURCE = 73 pkg syscall (freebsd-arm), const ISIG = 128 pkg syscall (freebsd-arm), const ISTRIP = 32 pkg syscall (freebsd-arm), const IXANY = 2048 pkg syscall (freebsd-arm), const IXOFF = 1024 pkg syscall (freebsd-arm), const IXON = 512 pkg syscall (freebsd-arm), const ImplementsGetwd = false pkg syscall (freebsd-arm), const LOCK_EX = 2 pkg syscall (freebsd-arm), const LOCK_NB = 4 pkg syscall (freebsd-arm), const LOCK_SH = 1 pkg syscall (freebsd-arm), const LOCK_UN = 8 pkg syscall (freebsd-arm), const MADV_AUTOSYNC = 7 pkg syscall (freebsd-arm), const MADV_CORE = 9 pkg syscall (freebsd-arm), const MADV_DONTNEED = 4 pkg syscall (freebsd-arm), const MADV_FREE = 5 pkg syscall (freebsd-arm), const MADV_NOCORE = 8 pkg syscall (freebsd-arm), const MADV_NORMAL = 0 pkg syscall (freebsd-arm), const MADV_NOSYNC = 6 pkg syscall (freebsd-arm), const MADV_PROTECT = 10 pkg syscall (freebsd-arm), const MADV_RANDOM = 1 pkg syscall (freebsd-arm), const MADV_SEQUENTIAL = 2 pkg syscall (freebsd-arm), const MADV_WILLNEED = 3 pkg syscall (freebsd-arm), const MAP_ANON = 4096 pkg syscall (freebsd-arm), const MAP_ANONYMOUS = 4096 pkg syscall (freebsd-arm), const MAP_COPY = 2 pkg syscall (freebsd-arm), const MAP_FILE = 0 pkg syscall (freebsd-arm), const MAP_FIXED = 16 pkg syscall (freebsd-arm), const MAP_HASSEMAPHORE = 512 pkg syscall (freebsd-arm), const MAP_NOCORE = 131072 pkg syscall (freebsd-arm), const MAP_NORESERVE = 64 pkg syscall (freebsd-arm), const MAP_NOSYNC = 2048 pkg syscall (freebsd-arm), const MAP_PREFAULT_READ = 262144 pkg syscall (freebsd-arm), const MAP_PRIVATE = 2 pkg syscall (freebsd-arm), const MAP_RENAME = 32 pkg syscall (freebsd-arm), const MAP_RESERVED0080 = 128 pkg syscall (freebsd-arm), const MAP_RESERVED0100 = 256 pkg syscall (freebsd-arm), const MAP_SHARED = 1 pkg syscall (freebsd-arm), const MAP_STACK = 1024 pkg syscall (freebsd-arm), const MCL_CURRENT = 1 pkg syscall (freebsd-arm), const MCL_FUTURE = 2 pkg syscall (freebsd-arm), const MSG_COMPAT = 32768 pkg syscall (freebsd-arm), const MSG_CTRUNC = 32 pkg syscall (freebsd-arm), const MSG_DONTROUTE = 4 pkg syscall (freebsd-arm), const MSG_DONTWAIT = 128 pkg syscall (freebsd-arm), const MSG_EOF = 256 pkg syscall (freebsd-arm), const MSG_EOR = 8 pkg syscall (freebsd-arm), const MSG_NBIO = 16384 pkg syscall (freebsd-arm), const MSG_NOSIGNAL = 131072 pkg syscall (freebsd-arm), const MSG_NOTIFICATION = 8192 pkg syscall (freebsd-arm), const MSG_OOB = 1 pkg syscall (freebsd-arm), const MSG_PEEK = 2 pkg syscall (freebsd-arm), const MSG_TRUNC = 16 pkg syscall (freebsd-arm), const MSG_WAITALL = 64 pkg syscall (freebsd-arm), const MS_ASYNC = 1 pkg syscall (freebsd-arm), const MS_INVALIDATE = 2 pkg syscall (freebsd-arm), const MS_SYNC = 0 pkg syscall (freebsd-arm), const NET_RT_DUMP = 1 pkg syscall (freebsd-arm), const NET_RT_FLAGS = 2 pkg syscall (freebsd-arm), const NET_RT_IFLIST = 3 pkg syscall (freebsd-arm), const NET_RT_IFLISTL = 5 pkg syscall (freebsd-arm), const NET_RT_IFMALIST = 4 pkg syscall (freebsd-arm), const NET_RT_MAXID = 6 pkg syscall (freebsd-arm), const NOFLSH = 2147483648 pkg syscall (freebsd-arm), const NOTE_ATTRIB = 8 pkg syscall (freebsd-arm), const NOTE_CHILD = 4 pkg syscall (freebsd-arm), const NOTE_DELETE = 1 pkg syscall (freebsd-arm), const NOTE_EXEC = 536870912 pkg syscall (freebsd-arm), const NOTE_EXIT = 2147483648 pkg syscall (freebsd-arm), const NOTE_EXTEND = 4 pkg syscall (freebsd-arm), const NOTE_FFAND = 1073741824 pkg syscall (freebsd-arm), const NOTE_FFCOPY = 3221225472 pkg syscall (freebsd-arm), const NOTE_FFCTRLMASK = 3221225472 pkg syscall (freebsd-arm), const NOTE_FFLAGSMASK = 16777215 pkg syscall (freebsd-arm), const NOTE_FFNOP = 0 pkg syscall (freebsd-arm), const NOTE_FFOR = 2147483648 pkg syscall (freebsd-arm), const NOTE_FORK = 1073741824 pkg syscall (freebsd-arm), const NOTE_LINK = 16 pkg syscall (freebsd-arm), const NOTE_LOWAT = 1 pkg syscall (freebsd-arm), const NOTE_PCTRLMASK = 4026531840 pkg syscall (freebsd-arm), const NOTE_PDATAMASK = 1048575 pkg syscall (freebsd-arm), const NOTE_RENAME = 32 pkg syscall (freebsd-arm), const NOTE_REVOKE = 64 pkg syscall (freebsd-arm), const NOTE_TRACK = 1 pkg syscall (freebsd-arm), const NOTE_TRACKERR = 2 pkg syscall (freebsd-arm), const NOTE_TRIGGER = 16777216 pkg syscall (freebsd-arm), const NOTE_WRITE = 2 pkg syscall (freebsd-arm), const OCRNL = 16 pkg syscall (freebsd-arm), const ONLCR = 2 pkg syscall (freebsd-arm), const ONLRET = 64 pkg syscall (freebsd-arm), const ONOCR = 32 pkg syscall (freebsd-arm), const ONOEOT = 8 pkg syscall (freebsd-arm), const OPOST = 1 pkg syscall (freebsd-arm), const O_ACCMODE = 3 pkg syscall (freebsd-arm), const O_APPEND = 8 pkg syscall (freebsd-arm), const O_ASYNC = 64 pkg syscall (freebsd-arm), const O_CLOEXEC = 0 pkg syscall (freebsd-arm), const O_CREAT = 512 pkg syscall (freebsd-arm), const O_DIRECT = 65536 pkg syscall (freebsd-arm), const O_DIRECTORY = 131072 pkg syscall (freebsd-arm), const O_EXCL = 2048 pkg syscall (freebsd-arm), const O_EXEC = 262144 pkg syscall (freebsd-arm), const O_EXLOCK = 32 pkg syscall (freebsd-arm), const O_FSYNC = 128 pkg syscall (freebsd-arm), const O_NDELAY = 4 pkg syscall (freebsd-arm), const O_NOCTTY = 32768 pkg syscall (freebsd-arm), const O_NOFOLLOW = 256 pkg syscall (freebsd-arm), const O_NONBLOCK = 4 pkg syscall (freebsd-arm), const O_SHLOCK = 16 pkg syscall (freebsd-arm), const O_SYNC = 128 pkg syscall (freebsd-arm), const O_TRUNC = 1024 pkg syscall (freebsd-arm), const O_TTY_INIT = 524288 pkg syscall (freebsd-arm), const PARENB = 4096 pkg syscall (freebsd-arm), const PARMRK = 8 pkg syscall (freebsd-arm), const PARODD = 8192 pkg syscall (freebsd-arm), const PENDIN = 536870912 pkg syscall (freebsd-arm), const PROT_EXEC = 4 pkg syscall (freebsd-arm), const PROT_NONE = 0 pkg syscall (freebsd-arm), const PROT_READ = 1 pkg syscall (freebsd-arm), const PROT_WRITE = 2 pkg syscall (freebsd-arm), const PTRACE_CONT = 7 pkg syscall (freebsd-arm), const PTRACE_KILL = 8 pkg syscall (freebsd-arm), const PTRACE_TRACEME = 0 pkg syscall (freebsd-arm), const RLIMIT_AS = 10 pkg syscall (freebsd-arm), const RLIMIT_CORE = 4 pkg syscall (freebsd-arm), const RLIMIT_CPU = 0 pkg syscall (freebsd-arm), const RLIMIT_DATA = 2 pkg syscall (freebsd-arm), const RLIMIT_FSIZE = 1 pkg syscall (freebsd-arm), const RLIMIT_NOFILE = 8 pkg syscall (freebsd-arm), const RLIMIT_STACK = 3 pkg syscall (freebsd-arm), const RLIM_INFINITY = 9223372036854775807 pkg syscall (freebsd-arm), const RTAX_AUTHOR = 6 pkg syscall (freebsd-arm), const RTAX_BRD = 7 pkg syscall (freebsd-arm), const RTAX_DST = 0 pkg syscall (freebsd-arm), const RTAX_GATEWAY = 1 pkg syscall (freebsd-arm), const RTAX_GENMASK = 3 pkg syscall (freebsd-arm), const RTAX_IFA = 5 pkg syscall (freebsd-arm), const RTAX_IFP = 4 pkg syscall (freebsd-arm), const RTAX_MAX = 8 pkg syscall (freebsd-arm), const RTAX_NETMASK = 2 pkg syscall (freebsd-arm), const RTA_AUTHOR = 64 pkg syscall (freebsd-arm), const RTA_BRD = 128 pkg syscall (freebsd-arm), const RTA_DST = 1 pkg syscall (freebsd-arm), const RTA_GATEWAY = 2 pkg syscall (freebsd-arm), const RTA_GENMASK = 8 pkg syscall (freebsd-arm), const RTA_IFA = 32 pkg syscall (freebsd-arm), const RTA_IFP = 16 pkg syscall (freebsd-arm), const RTA_NETMASK = 4 pkg syscall (freebsd-arm), const RTF_BLACKHOLE = 4096 pkg syscall (freebsd-arm), const RTF_BROADCAST = 4194304 pkg syscall (freebsd-arm), const RTF_DONE = 64 pkg syscall (freebsd-arm), const RTF_DYNAMIC = 16 pkg syscall (freebsd-arm), const RTF_FMASK = 268752904 pkg syscall (freebsd-arm), const RTF_GATEWAY = 2 pkg syscall (freebsd-arm), const RTF_HOST = 4 pkg syscall (freebsd-arm), const RTF_LLDATA = 1024 pkg syscall (freebsd-arm), const RTF_LLINFO = 1024 pkg syscall (freebsd-arm), const RTF_LOCAL = 2097152 pkg syscall (freebsd-arm), const RTF_MODIFIED = 32 pkg syscall (freebsd-arm), const RTF_MULTICAST = 8388608 pkg syscall (freebsd-arm), const RTF_PINNED = 1048576 pkg syscall (freebsd-arm), const RTF_PRCLONING = 65536 pkg syscall (freebsd-arm), const RTF_PROTO1 = 32768 pkg syscall (freebsd-arm), const RTF_PROTO2 = 16384 pkg syscall (freebsd-arm), const RTF_PROTO3 = 262144 pkg syscall (freebsd-arm), const RTF_REJECT = 8 pkg syscall (freebsd-arm), const RTF_RNH_LOCKED = 1073741824 pkg syscall (freebsd-arm), const RTF_STATIC = 2048 pkg syscall (freebsd-arm), const RTF_STICKY = 268435456 pkg syscall (freebsd-arm), const RTF_UP = 1 pkg syscall (freebsd-arm), const RTF_XRESOLVE = 512 pkg syscall (freebsd-arm), const RTM_ADD = 1 pkg syscall (freebsd-arm), const RTM_CHANGE = 3 pkg syscall (freebsd-arm), const RTM_DELADDR = 13 pkg syscall (freebsd-arm), const RTM_DELETE = 2 pkg syscall (freebsd-arm), const RTM_DELMADDR = 16 pkg syscall (freebsd-arm), const RTM_GET = 4 pkg syscall (freebsd-arm), const RTM_IEEE80211 = 18 pkg syscall (freebsd-arm), const RTM_IFANNOUNCE = 17 pkg syscall (freebsd-arm), const RTM_IFINFO = 14 pkg syscall (freebsd-arm), const RTM_LOCK = 8 pkg syscall (freebsd-arm), const RTM_LOSING = 5 pkg syscall (freebsd-arm), const RTM_MISS = 7 pkg syscall (freebsd-arm), const RTM_NEWADDR = 12 pkg syscall (freebsd-arm), const RTM_NEWMADDR = 15 pkg syscall (freebsd-arm), const RTM_OLDADD = 9 pkg syscall (freebsd-arm), const RTM_OLDDEL = 10 pkg syscall (freebsd-arm), const RTM_REDIRECT = 6 pkg syscall (freebsd-arm), const RTM_RESOLVE = 11 pkg syscall (freebsd-arm), const RTM_RTTUNIT = 1000000 pkg syscall (freebsd-arm), const RTM_VERSION = 5 pkg syscall (freebsd-arm), const RTV_EXPIRE = 4 pkg syscall (freebsd-arm), const RTV_HOPCOUNT = 2 pkg syscall (freebsd-arm), const RTV_MTU = 1 pkg syscall (freebsd-arm), const RTV_RPIPE = 8 pkg syscall (freebsd-arm), const RTV_RTT = 64 pkg syscall (freebsd-arm), const RTV_RTTVAR = 128 pkg syscall (freebsd-arm), const RTV_SPIPE = 16 pkg syscall (freebsd-arm), const RTV_SSTHRESH = 32 pkg syscall (freebsd-arm), const RTV_WEIGHT = 256 pkg syscall (freebsd-arm), const RT_CACHING_CONTEXT = 1 pkg syscall (freebsd-arm), const RT_DEFAULT_FIB = 0 pkg syscall (freebsd-arm), const RT_NORTREF = 2 pkg syscall (freebsd-arm), const RUSAGE_CHILDREN = -1 pkg syscall (freebsd-arm), const RUSAGE_SELF = 0 pkg syscall (freebsd-arm), const RUSAGE_THREAD = 1 pkg syscall (freebsd-arm), const SCM_BINTIME = 4 pkg syscall (freebsd-arm), const SCM_CREDS = 3 pkg syscall (freebsd-arm), const SCM_RIGHTS = 1 pkg syscall (freebsd-arm), const SCM_TIMESTAMP = 2 pkg syscall (freebsd-arm), const SIGBUS = 10 pkg syscall (freebsd-arm), const SIGCHLD = 20 pkg syscall (freebsd-arm), const SIGCONT = 19 pkg syscall (freebsd-arm), const SIGEMT = 7 pkg syscall (freebsd-arm), const SIGINFO = 29 pkg syscall (freebsd-arm), const SIGIO = 23 pkg syscall (freebsd-arm), const SIGIOT = 6 pkg syscall (freebsd-arm), const SIGLIBRT = 33 pkg syscall (freebsd-arm), const SIGLWP = 32 pkg syscall (freebsd-arm), const SIGPROF = 27 pkg syscall (freebsd-arm), const SIGSTOP = 17 pkg syscall (freebsd-arm), const SIGSYS = 12 pkg syscall (freebsd-arm), const SIGTHR = 32 pkg syscall (freebsd-arm), const SIGTSTP = 18 pkg syscall (freebsd-arm), const SIGTTIN = 21 pkg syscall (freebsd-arm), const SIGTTOU = 22 pkg syscall (freebsd-arm), const SIGURG = 16 pkg syscall (freebsd-arm), const SIGUSR1 = 30 pkg syscall (freebsd-arm), const SIGUSR2 = 31 pkg syscall (freebsd-arm), const SIGVTALRM = 26 pkg syscall (freebsd-arm), const SIGWINCH = 28 pkg syscall (freebsd-arm), const SIGXCPU = 24 pkg syscall (freebsd-arm), const SIGXFSZ = 25 pkg syscall (freebsd-arm), const SIOCADDMULTI = 2149607729 pkg syscall (freebsd-arm), const SIOCADDRT = 2150658570 pkg syscall (freebsd-arm), const SIOCAIFADDR = 2151967019 pkg syscall (freebsd-arm), const SIOCAIFGROUP = 2149869959 pkg syscall (freebsd-arm), const SIOCALIFADDR = 2165860635 pkg syscall (freebsd-arm), const SIOCATMARK = 1074033415 pkg syscall (freebsd-arm), const SIOCDELMULTI = 2149607730 pkg syscall (freebsd-arm), const SIOCDELRT = 2150658571 pkg syscall (freebsd-arm), const SIOCDIFADDR = 2149607705 pkg syscall (freebsd-arm), const SIOCDIFGROUP = 2149869961 pkg syscall (freebsd-arm), const SIOCDIFPHYADDR = 2149607753 pkg syscall (freebsd-arm), const SIOCDLIFADDR = 2165860637 pkg syscall (freebsd-arm), const SIOCGDRVSPEC = 3223087483 pkg syscall (freebsd-arm), const SIOCGETSGCNT = 3222565392 pkg syscall (freebsd-arm), const SIOCGETVIFCNT = 3222565391 pkg syscall (freebsd-arm), const SIOCGHIWAT = 1074033409 pkg syscall (freebsd-arm), const SIOCGIFADDR = 3223349537 pkg syscall (freebsd-arm), const SIOCGIFBRDADDR = 3223349539 pkg syscall (freebsd-arm), const SIOCGIFCAP = 3223349535 pkg syscall (freebsd-arm), const SIOCGIFCONF = 3221776676 pkg syscall (freebsd-arm), const SIOCGIFDESCR = 3223349546 pkg syscall (freebsd-arm), const SIOCGIFDSTADDR = 3223349538 pkg syscall (freebsd-arm), const SIOCGIFFIB = 3223349596 pkg syscall (freebsd-arm), const SIOCGIFFLAGS = 3223349521 pkg syscall (freebsd-arm), const SIOCGIFGENERIC = 3223349562 pkg syscall (freebsd-arm), const SIOCGIFGMEMB = 3223611786 pkg syscall (freebsd-arm), const SIOCGIFGROUP = 3223611784 pkg syscall (freebsd-arm), const SIOCGIFINDEX = 3223349536 pkg syscall (freebsd-arm), const SIOCGIFMAC = 3223349542 pkg syscall (freebsd-arm), const SIOCGIFMEDIA = 3223873848 pkg syscall (freebsd-arm), const SIOCGIFMETRIC = 3223349527 pkg syscall (freebsd-arm), const SIOCGIFMTU = 3223349555 pkg syscall (freebsd-arm), const SIOCGIFNETMASK = 3223349541 pkg syscall (freebsd-arm), const SIOCGIFPDSTADDR = 3223349576 pkg syscall (freebsd-arm), const SIOCGIFPHYS = 3223349557 pkg syscall (freebsd-arm), const SIOCGIFPSRCADDR = 3223349575 pkg syscall (freebsd-arm), const SIOCGIFSTATUS = 3274991931 pkg syscall (freebsd-arm), const SIOCGLIFADDR = 3239602460 pkg syscall (freebsd-arm), const SIOCGLIFPHYADDR = 3239602507 pkg syscall (freebsd-arm), const SIOCGLOWAT = 1074033411 pkg syscall (freebsd-arm), const SIOCGPGRP = 1074033417 pkg syscall (freebsd-arm), const SIOCGPRIVATE_0 = 3223349584 pkg syscall (freebsd-arm), const SIOCGPRIVATE_1 = 3223349585 pkg syscall (freebsd-arm), const SIOCIFCREATE = 3223349626 pkg syscall (freebsd-arm), const SIOCIFCREATE2 = 3223349628 pkg syscall (freebsd-arm), const SIOCIFDESTROY = 2149607801 pkg syscall (freebsd-arm), const SIOCIFGCLONERS = 3222038904 pkg syscall (freebsd-arm), const SIOCSDRVSPEC = 2149345659 pkg syscall (freebsd-arm), const SIOCSHIWAT = 2147775232 pkg syscall (freebsd-arm), const SIOCSIFADDR = 2149607692 pkg syscall (freebsd-arm), const SIOCSIFBRDADDR = 2149607699 pkg syscall (freebsd-arm), const SIOCSIFCAP = 2149607710 pkg syscall (freebsd-arm), const SIOCSIFDESCR = 2149607721 pkg syscall (freebsd-arm), const SIOCSIFDSTADDR = 2149607694 pkg syscall (freebsd-arm), const SIOCSIFFIB = 2149607773 pkg syscall (freebsd-arm), const SIOCSIFFLAGS = 2149607696 pkg syscall (freebsd-arm), const SIOCSIFGENERIC = 2149607737 pkg syscall (freebsd-arm), const SIOCSIFLLADDR = 2149607740 pkg syscall (freebsd-arm), const SIOCSIFMAC = 2149607719 pkg syscall (freebsd-arm), const SIOCSIFMEDIA = 3223349559 pkg syscall (freebsd-arm), const SIOCSIFMETRIC = 2149607704 pkg syscall (freebsd-arm), const SIOCSIFMTU = 2149607732 pkg syscall (freebsd-arm), const SIOCSIFNAME = 2149607720 pkg syscall (freebsd-arm), const SIOCSIFNETMASK = 2149607702 pkg syscall (freebsd-arm), const SIOCSIFPHYADDR = 2151967046 pkg syscall (freebsd-arm), const SIOCSIFPHYS = 2149607734 pkg syscall (freebsd-arm), const SIOCSIFRVNET = 3223349595 pkg syscall (freebsd-arm), const SIOCSIFVNET = 3223349594 pkg syscall (freebsd-arm), const SIOCSLIFPHYADDR = 2165860682 pkg syscall (freebsd-arm), const SIOCSLOWAT = 2147775234 pkg syscall (freebsd-arm), const SIOCSPGRP = 2147775240 pkg syscall (freebsd-arm), const SOCK_MAXADDRLEN = 255 pkg syscall (freebsd-arm), const SOCK_RDM = 4 pkg syscall (freebsd-arm), const SOL_SOCKET = 65535 pkg syscall (freebsd-arm), const SOMAXCONN = 128 pkg syscall (freebsd-arm), const SO_ACCEPTCONN = 2 pkg syscall (freebsd-arm), const SO_ACCEPTFILTER = 4096 pkg syscall (freebsd-arm), const SO_BINTIME = 8192 pkg syscall (freebsd-arm), const SO_BROADCAST = 32 pkg syscall (freebsd-arm), const SO_DEBUG = 1 pkg syscall (freebsd-arm), const SO_DONTROUTE = 16 pkg syscall (freebsd-arm), const SO_ERROR = 4103 pkg syscall (freebsd-arm), const SO_KEEPALIVE = 8 pkg syscall (freebsd-arm), const SO_LABEL = 4105 pkg syscall (freebsd-arm), const SO_LINGER = 128 pkg syscall (freebsd-arm), const SO_LISTENINCQLEN = 4115 pkg syscall (freebsd-arm), const SO_LISTENQLEN = 4114 pkg syscall (freebsd-arm), const SO_LISTENQLIMIT = 4113 pkg syscall (freebsd-arm), const SO_NOSIGPIPE = 2048 pkg syscall (freebsd-arm), const SO_NO_DDP = 32768 pkg syscall (freebsd-arm), const SO_NO_OFFLOAD = 16384 pkg syscall (freebsd-arm), const SO_OOBINLINE = 256 pkg syscall (freebsd-arm), const SO_PEERLABEL = 4112 pkg syscall (freebsd-arm), const SO_PROTOCOL = 4118 pkg syscall (freebsd-arm), const SO_PROTOTYPE = 4118 pkg syscall (freebsd-arm), const SO_RCVBUF = 4098 pkg syscall (freebsd-arm), const SO_RCVLOWAT = 4100 pkg syscall (freebsd-arm), const SO_RCVTIMEO = 4102 pkg syscall (freebsd-arm), const SO_REUSEADDR = 4 pkg syscall (freebsd-arm), const SO_REUSEPORT = 512 pkg syscall (freebsd-arm), const SO_SETFIB = 4116 pkg syscall (freebsd-arm), const SO_SNDBUF = 4097 pkg syscall (freebsd-arm), const SO_SNDLOWAT = 4099 pkg syscall (freebsd-arm), const SO_SNDTIMEO = 4101 pkg syscall (freebsd-arm), const SO_TIMESTAMP = 1024 pkg syscall (freebsd-arm), const SO_TYPE = 4104 pkg syscall (freebsd-arm), const SO_USELOOPBACK = 64 pkg syscall (freebsd-arm), const SO_USER_COOKIE = 4117 pkg syscall (freebsd-arm), const SYS_ABORT2 = 463 pkg syscall (freebsd-arm), const SYS_ACCEPT = 30 pkg syscall (freebsd-arm), const SYS_ACCESS = 33 pkg syscall (freebsd-arm), const SYS_ACCT = 51 pkg syscall (freebsd-arm), const SYS_ADJTIME = 140 pkg syscall (freebsd-arm), const SYS_AUDIT = 445 pkg syscall (freebsd-arm), const SYS_AUDITCTL = 453 pkg syscall (freebsd-arm), const SYS_AUDITON = 446 pkg syscall (freebsd-arm), const SYS_BIND = 104 pkg syscall (freebsd-arm), const SYS_CAP_ENTER = 516 pkg syscall (freebsd-arm), const SYS_CAP_FCNTLS_GET = 537 pkg syscall (freebsd-arm), const SYS_CAP_FCNTLS_LIMIT = 536 pkg syscall (freebsd-arm), const SYS_CAP_GETMODE = 517 pkg syscall (freebsd-arm), const SYS_CAP_IOCTLS_GET = 535 pkg syscall (freebsd-arm), const SYS_CAP_IOCTLS_LIMIT = 534 pkg syscall (freebsd-arm), const SYS_CAP_NEW = 514 pkg syscall (freebsd-arm), const SYS_CAP_RIGHTS_GET = 515 pkg syscall (freebsd-arm), const SYS_CAP_RIGHTS_LIMIT = 533 pkg syscall (freebsd-arm), const SYS_CHDIR = 12 pkg syscall (freebsd-arm), const SYS_CHFLAGS = 34 pkg syscall (freebsd-arm), const SYS_CHMOD = 15 pkg syscall (freebsd-arm), const SYS_CHOWN = 16 pkg syscall (freebsd-arm), const SYS_CHROOT = 61 pkg syscall (freebsd-arm), const SYS_CLOCK_GETCPUCLOCKID2 = 247 pkg syscall (freebsd-arm), const SYS_CLOCK_GETRES = 234 pkg syscall (freebsd-arm), const SYS_CLOCK_GETTIME = 232 pkg syscall (freebsd-arm), const SYS_CLOCK_SETTIME = 233 pkg syscall (freebsd-arm), const SYS_CLOSE = 6 pkg syscall (freebsd-arm), const SYS_CLOSEFROM = 509 pkg syscall (freebsd-arm), const SYS_CONNECT = 98 pkg syscall (freebsd-arm), const SYS_CPUSET = 484 pkg syscall (freebsd-arm), const SYS_CPUSET_GETAFFINITY = 487 pkg syscall (freebsd-arm), const SYS_CPUSET_GETID = 486 pkg syscall (freebsd-arm), const SYS_CPUSET_SETAFFINITY = 488 pkg syscall (freebsd-arm), const SYS_CPUSET_SETID = 485 pkg syscall (freebsd-arm), const SYS_DUP = 41 pkg syscall (freebsd-arm), const SYS_DUP2 = 90 pkg syscall (freebsd-arm), const SYS_EACCESS = 376 pkg syscall (freebsd-arm), const SYS_EXECVE = 59 pkg syscall (freebsd-arm), const SYS_EXIT = 1 pkg syscall (freebsd-arm), const SYS_EXTATTRCTL = 355 pkg syscall (freebsd-arm), const SYS_EXTATTR_DELETE_FD = 373 pkg syscall (freebsd-arm), const SYS_EXTATTR_DELETE_FILE = 358 pkg syscall (freebsd-arm), const SYS_EXTATTR_DELETE_LINK = 414 pkg syscall (freebsd-arm), const SYS_EXTATTR_GET_FD = 372 pkg syscall (freebsd-arm), const SYS_EXTATTR_GET_FILE = 357 pkg syscall (freebsd-arm), const SYS_EXTATTR_GET_LINK = 413 pkg syscall (freebsd-arm), const SYS_EXTATTR_LIST_FD = 437 pkg syscall (freebsd-arm), const SYS_EXTATTR_LIST_FILE = 438 pkg syscall (freebsd-arm), const SYS_EXTATTR_LIST_LINK = 439 pkg syscall (freebsd-arm), const SYS_EXTATTR_SET_FD = 371 pkg syscall (freebsd-arm), const SYS_EXTATTR_SET_FILE = 356 pkg syscall (freebsd-arm), const SYS_EXTATTR_SET_LINK = 412 pkg syscall (freebsd-arm), const SYS_FACCESSAT = 489 pkg syscall (freebsd-arm), const SYS_FCHDIR = 13 pkg syscall (freebsd-arm), const SYS_FCHFLAGS = 35 pkg syscall (freebsd-arm), const SYS_FCHMOD = 124 pkg syscall (freebsd-arm), const SYS_FCHMODAT = 490 pkg syscall (freebsd-arm), const SYS_FCHOWN = 123 pkg syscall (freebsd-arm), const SYS_FCHOWNAT = 491 pkg syscall (freebsd-arm), const SYS_FCNTL = 92 pkg syscall (freebsd-arm), const SYS_FEXECVE = 492 pkg syscall (freebsd-arm), const SYS_FFCLOCK_GETCOUNTER = 241 pkg syscall (freebsd-arm), const SYS_FFCLOCK_GETESTIMATE = 243 pkg syscall (freebsd-arm), const SYS_FFCLOCK_SETESTIMATE = 242 pkg syscall (freebsd-arm), const SYS_FHOPEN = 298 pkg syscall (freebsd-arm), const SYS_FHSTAT = 299 pkg syscall (freebsd-arm), const SYS_FHSTATFS = 398 pkg syscall (freebsd-arm), const SYS_FLOCK = 131 pkg syscall (freebsd-arm), const SYS_FORK = 2 pkg syscall (freebsd-arm), const SYS_FPATHCONF = 192 pkg syscall (freebsd-arm), const SYS_FREEBSD6_FTRUNCATE = 201 pkg syscall (freebsd-arm), const SYS_FREEBSD6_LSEEK = 199 pkg syscall (freebsd-arm), const SYS_FREEBSD6_MMAP = 197 pkg syscall (freebsd-arm), const SYS_FREEBSD6_PREAD = 173 pkg syscall (freebsd-arm), const SYS_FREEBSD6_PWRITE = 174 pkg syscall (freebsd-arm), const SYS_FREEBSD6_TRUNCATE = 200 pkg syscall (freebsd-arm), const SYS_FSTAT = 189 pkg syscall (freebsd-arm), const SYS_FSTATAT = 493 pkg syscall (freebsd-arm), const SYS_FSTATFS = 397 pkg syscall (freebsd-arm), const SYS_FSYNC = 95 pkg syscall (freebsd-arm), const SYS_FTRUNCATE = 480 pkg syscall (freebsd-arm), const SYS_FUTIMES = 206 pkg syscall (freebsd-arm), const SYS_FUTIMESAT = 494 pkg syscall (freebsd-arm), const SYS_GETAUDIT = 449 pkg syscall (freebsd-arm), const SYS_GETAUDIT_ADDR = 451 pkg syscall (freebsd-arm), const SYS_GETAUID = 447 pkg syscall (freebsd-arm), const SYS_GETCONTEXT = 421 pkg syscall (freebsd-arm), const SYS_GETDENTS = 272 pkg syscall (freebsd-arm), const SYS_GETDIRENTRIES = 196 pkg syscall (freebsd-arm), const SYS_GETDTABLESIZE = 89 pkg syscall (freebsd-arm), const SYS_GETEGID = 43 pkg syscall (freebsd-arm), const SYS_GETEUID = 25 pkg syscall (freebsd-arm), const SYS_GETFH = 161 pkg syscall (freebsd-arm), const SYS_GETFSSTAT = 395 pkg syscall (freebsd-arm), const SYS_GETGID = 47 pkg syscall (freebsd-arm), const SYS_GETGROUPS = 79 pkg syscall (freebsd-arm), const SYS_GETITIMER = 86 pkg syscall (freebsd-arm), const SYS_GETLOGIN = 49 pkg syscall (freebsd-arm), const SYS_GETLOGINCLASS = 523 pkg syscall (freebsd-arm), const SYS_GETPEERNAME = 31 pkg syscall (freebsd-arm), const SYS_GETPGID = 207 pkg syscall (freebsd-arm), const SYS_GETPGRP = 81 pkg syscall (freebsd-arm), const SYS_GETPID = 20 pkg syscall (freebsd-arm), const SYS_GETPPID = 39 pkg syscall (freebsd-arm), const SYS_GETPRIORITY = 100 pkg syscall (freebsd-arm), const SYS_GETRESGID = 361 pkg syscall (freebsd-arm), const SYS_GETRESUID = 360 pkg syscall (freebsd-arm), const SYS_GETRLIMIT = 194 pkg syscall (freebsd-arm), const SYS_GETRUSAGE = 117 pkg syscall (freebsd-arm), const SYS_GETSID = 310 pkg syscall (freebsd-arm), const SYS_GETSOCKNAME = 32 pkg syscall (freebsd-arm), const SYS_GETSOCKOPT = 118 pkg syscall (freebsd-arm), const SYS_GETTIMEOFDAY = 116 pkg syscall (freebsd-arm), const SYS_GETUID = 24 pkg syscall (freebsd-arm), const SYS_IOCTL = 54 pkg syscall (freebsd-arm), const SYS_ISSETUGID = 253 pkg syscall (freebsd-arm), const SYS_JAIL = 338 pkg syscall (freebsd-arm), const SYS_JAIL_ATTACH = 436 pkg syscall (freebsd-arm), const SYS_JAIL_GET = 506 pkg syscall (freebsd-arm), const SYS_JAIL_REMOVE = 508 pkg syscall (freebsd-arm), const SYS_JAIL_SET = 507 pkg syscall (freebsd-arm), const SYS_KENV = 390 pkg syscall (freebsd-arm), const SYS_KEVENT = 363 pkg syscall (freebsd-arm), const SYS_KILL = 37 pkg syscall (freebsd-arm), const SYS_KLDFIND = 306 pkg syscall (freebsd-arm), const SYS_KLDFIRSTMOD = 309 pkg syscall (freebsd-arm), const SYS_KLDLOAD = 304 pkg syscall (freebsd-arm), const SYS_KLDNEXT = 307 pkg syscall (freebsd-arm), const SYS_KLDSTAT = 308 pkg syscall (freebsd-arm), const SYS_KLDSYM = 337 pkg syscall (freebsd-arm), const SYS_KLDUNLOAD = 305 pkg syscall (freebsd-arm), const SYS_KLDUNLOADF = 444 pkg syscall (freebsd-arm), const SYS_KQUEUE = 362 pkg syscall (freebsd-arm), const SYS_KTIMER_CREATE = 235 pkg syscall (freebsd-arm), const SYS_KTIMER_DELETE = 236 pkg syscall (freebsd-arm), const SYS_KTIMER_GETOVERRUN = 239 pkg syscall (freebsd-arm), const SYS_KTIMER_GETTIME = 238 pkg syscall (freebsd-arm), const SYS_KTIMER_SETTIME = 237 pkg syscall (freebsd-arm), const SYS_KTRACE = 45 pkg syscall (freebsd-arm), const SYS_LCHFLAGS = 391 pkg syscall (freebsd-arm), const SYS_LCHMOD = 274 pkg syscall (freebsd-arm), const SYS_LCHOWN = 254 pkg syscall (freebsd-arm), const SYS_LGETFH = 160 pkg syscall (freebsd-arm), const SYS_LINK = 9 pkg syscall (freebsd-arm), const SYS_LINKAT = 495 pkg syscall (freebsd-arm), const SYS_LISTEN = 106 pkg syscall (freebsd-arm), const SYS_LPATHCONF = 513 pkg syscall (freebsd-arm), const SYS_LSEEK = 478 pkg syscall (freebsd-arm), const SYS_LSTAT = 190 pkg syscall (freebsd-arm), const SYS_LUTIMES = 276 pkg syscall (freebsd-arm), const SYS_MAC_SYSCALL = 394 pkg syscall (freebsd-arm), const SYS_MADVISE = 75 pkg syscall (freebsd-arm), const SYS_MINCORE = 78 pkg syscall (freebsd-arm), const SYS_MINHERIT = 250 pkg syscall (freebsd-arm), const SYS_MKDIR = 136 pkg syscall (freebsd-arm), const SYS_MKDIRAT = 496 pkg syscall (freebsd-arm), const SYS_MKFIFO = 132 pkg syscall (freebsd-arm), const SYS_MKFIFOAT = 497 pkg syscall (freebsd-arm), const SYS_MKNOD = 14 pkg syscall (freebsd-arm), const SYS_MKNODAT = 498 pkg syscall (freebsd-arm), const SYS_MLOCK = 203 pkg syscall (freebsd-arm), const SYS_MLOCKALL = 324 pkg syscall (freebsd-arm), const SYS_MMAP = 477 pkg syscall (freebsd-arm), const SYS_MODFIND = 303 pkg syscall (freebsd-arm), const SYS_MODFNEXT = 302 pkg syscall (freebsd-arm), const SYS_MODNEXT = 300 pkg syscall (freebsd-arm), const SYS_MODSTAT = 301 pkg syscall (freebsd-arm), const SYS_MOUNT = 21 pkg syscall (freebsd-arm), const SYS_MPROTECT = 74 pkg syscall (freebsd-arm), const SYS_MSYNC = 65 pkg syscall (freebsd-arm), const SYS_MUNLOCK = 204 pkg syscall (freebsd-arm), const SYS_MUNLOCKALL = 325 pkg syscall (freebsd-arm), const SYS_MUNMAP = 73 pkg syscall (freebsd-arm), const SYS_NANOSLEEP = 240 pkg syscall (freebsd-arm), const SYS_NFSTAT = 279 pkg syscall (freebsd-arm), const SYS_NLSTAT = 280 pkg syscall (freebsd-arm), const SYS_NMOUNT = 378 pkg syscall (freebsd-arm), const SYS_NSTAT = 278 pkg syscall (freebsd-arm), const SYS_NTP_ADJTIME = 176 pkg syscall (freebsd-arm), const SYS_NTP_GETTIME = 248 pkg syscall (freebsd-arm), const SYS_OBREAK = 17 pkg syscall (freebsd-arm), const SYS_OPEN = 5 pkg syscall (freebsd-arm), const SYS_OPENAT = 499 pkg syscall (freebsd-arm), const SYS_OPENBSD_POLL = 252 pkg syscall (freebsd-arm), const SYS_OVADVISE = 72 pkg syscall (freebsd-arm), const SYS_PATHCONF = 191 pkg syscall (freebsd-arm), const SYS_PDFORK = 518 pkg syscall (freebsd-arm), const SYS_PDGETPID = 520 pkg syscall (freebsd-arm), const SYS_PDKILL = 519 pkg syscall (freebsd-arm), const SYS_PIPE = 42 pkg syscall (freebsd-arm), const SYS_POLL = 209 pkg syscall (freebsd-arm), const SYS_POSIX_FADVISE = 531 pkg syscall (freebsd-arm), const SYS_POSIX_FALLOCATE = 530 pkg syscall (freebsd-arm), const SYS_POSIX_OPENPT = 504 pkg syscall (freebsd-arm), const SYS_PREAD = 475 pkg syscall (freebsd-arm), const SYS_PREADV = 289 pkg syscall (freebsd-arm), const SYS_PROFIL = 44 pkg syscall (freebsd-arm), const SYS_PSELECT = 522 pkg syscall (freebsd-arm), const SYS_PTRACE = 26 pkg syscall (freebsd-arm), const SYS_PWRITE = 476 pkg syscall (freebsd-arm), const SYS_PWRITEV = 290 pkg syscall (freebsd-arm), const SYS_QUOTACTL = 148 pkg syscall (freebsd-arm), const SYS_RCTL_ADD_RULE = 528 pkg syscall (freebsd-arm), const SYS_RCTL_GET_LIMITS = 527 pkg syscall (freebsd-arm), const SYS_RCTL_GET_RACCT = 525 pkg syscall (freebsd-arm), const SYS_RCTL_GET_RULES = 526 pkg syscall (freebsd-arm), const SYS_RCTL_REMOVE_RULE = 529 pkg syscall (freebsd-arm), const SYS_READ = 3 pkg syscall (freebsd-arm), const SYS_READLINK = 58 pkg syscall (freebsd-arm), const SYS_READLINKAT = 500 pkg syscall (freebsd-arm), const SYS_READV = 120 pkg syscall (freebsd-arm), const SYS_REBOOT = 55 pkg syscall (freebsd-arm), const SYS_RECVFROM = 29 pkg syscall (freebsd-arm), const SYS_RECVMSG = 27 pkg syscall (freebsd-arm), const SYS_RENAME = 128 pkg syscall (freebsd-arm), const SYS_RENAMEAT = 501 pkg syscall (freebsd-arm), const SYS_REVOKE = 56 pkg syscall (freebsd-arm), const SYS_RFORK = 251 pkg syscall (freebsd-arm), const SYS_RMDIR = 137 pkg syscall (freebsd-arm), const SYS_RTPRIO = 166 pkg syscall (freebsd-arm), const SYS_RTPRIO_THREAD = 466 pkg syscall (freebsd-arm), const SYS_SBRK = 69 pkg syscall (freebsd-arm), const SYS_SCHED_GETPARAM = 328 pkg syscall (freebsd-arm), const SYS_SCHED_GETSCHEDULER = 330 pkg syscall (freebsd-arm), const SYS_SCHED_GET_PRIORITY_MAX = 332 pkg syscall (freebsd-arm), const SYS_SCHED_GET_PRIORITY_MIN = 333 pkg syscall (freebsd-arm), const SYS_SCHED_RR_GET_INTERVAL = 334 pkg syscall (freebsd-arm), const SYS_SCHED_SETPARAM = 327 pkg syscall (freebsd-arm), const SYS_SCHED_SETSCHEDULER = 329 pkg syscall (freebsd-arm), const SYS_SCHED_YIELD = 331 pkg syscall (freebsd-arm), const SYS_SCTP_GENERIC_RECVMSG = 474 pkg syscall (freebsd-arm), const SYS_SCTP_GENERIC_SENDMSG = 472 pkg syscall (freebsd-arm), const SYS_SCTP_GENERIC_SENDMSG_IOV = 473 pkg syscall (freebsd-arm), const SYS_SCTP_PEELOFF = 471 pkg syscall (freebsd-arm), const SYS_SELECT = 93 pkg syscall (freebsd-arm), const SYS_SENDFILE = 393 pkg syscall (freebsd-arm), const SYS_SENDMSG = 28 pkg syscall (freebsd-arm), const SYS_SENDTO = 133 pkg syscall (freebsd-arm), const SYS_SETAUDIT = 450 pkg syscall (freebsd-arm), const SYS_SETAUDIT_ADDR = 452 pkg syscall (freebsd-arm), const SYS_SETAUID = 448 pkg syscall (freebsd-arm), const SYS_SETCONTEXT = 422 pkg syscall (freebsd-arm), const SYS_SETEGID = 182 pkg syscall (freebsd-arm), const SYS_SETEUID = 183 pkg syscall (freebsd-arm), const SYS_SETFIB = 175 pkg syscall (freebsd-arm), const SYS_SETGID = 181 pkg syscall (freebsd-arm), const SYS_SETGROUPS = 80 pkg syscall (freebsd-arm), const SYS_SETITIMER = 83 pkg syscall (freebsd-arm), const SYS_SETLOGIN = 50 pkg syscall (freebsd-arm), const SYS_SETLOGINCLASS = 524 pkg syscall (freebsd-arm), const SYS_SETPGID = 82 pkg syscall (freebsd-arm), const SYS_SETPRIORITY = 96 pkg syscall (freebsd-arm), const SYS_SETREGID = 127 pkg syscall (freebsd-arm), const SYS_SETRESGID = 312 pkg syscall (freebsd-arm), const SYS_SETRESUID = 311 pkg syscall (freebsd-arm), const SYS_SETREUID = 126 pkg syscall (freebsd-arm), const SYS_SETRLIMIT = 195 pkg syscall (freebsd-arm), const SYS_SETSID = 147 pkg syscall (freebsd-arm), const SYS_SETSOCKOPT = 105 pkg syscall (freebsd-arm), const SYS_SETTIMEOFDAY = 122 pkg syscall (freebsd-arm), const SYS_SETUID = 23 pkg syscall (freebsd-arm), const SYS_SHM_OPEN = 482 pkg syscall (freebsd-arm), const SYS_SHM_UNLINK = 483 pkg syscall (freebsd-arm), const SYS_SHUTDOWN = 134 pkg syscall (freebsd-arm), const SYS_SIGACTION = 416 pkg syscall (freebsd-arm), const SYS_SIGALTSTACK = 53 pkg syscall (freebsd-arm), const SYS_SIGPENDING = 343 pkg syscall (freebsd-arm), const SYS_SIGPROCMASK = 340 pkg syscall (freebsd-arm), const SYS_SIGQUEUE = 456 pkg syscall (freebsd-arm), const SYS_SIGRETURN = 417 pkg syscall (freebsd-arm), const SYS_SIGSUSPEND = 341 pkg syscall (freebsd-arm), const SYS_SIGTIMEDWAIT = 345 pkg syscall (freebsd-arm), const SYS_SIGWAIT = 429 pkg syscall (freebsd-arm), const SYS_SIGWAITINFO = 346 pkg syscall (freebsd-arm), const SYS_SOCKET = 97 pkg syscall (freebsd-arm), const SYS_SOCKETPAIR = 135 pkg syscall (freebsd-arm), const SYS_SSTK = 70 pkg syscall (freebsd-arm), const SYS_STAT = 188 pkg syscall (freebsd-arm), const SYS_STATFS = 396 pkg syscall (freebsd-arm), const SYS_SWAPCONTEXT = 423 pkg syscall (freebsd-arm), const SYS_SWAPOFF = 424 pkg syscall (freebsd-arm), const SYS_SWAPON = 85 pkg syscall (freebsd-arm), const SYS_SYMLINK = 57 pkg syscall (freebsd-arm), const SYS_SYMLINKAT = 502 pkg syscall (freebsd-arm), const SYS_SYNC = 36 pkg syscall (freebsd-arm), const SYS_SYSARCH = 165 pkg syscall (freebsd-arm), const SYS_THR_CREATE = 430 pkg syscall (freebsd-arm), const SYS_THR_EXIT = 431 pkg syscall (freebsd-arm), const SYS_THR_KILL = 433 pkg syscall (freebsd-arm), const SYS_THR_KILL2 = 481 pkg syscall (freebsd-arm), const SYS_THR_NEW = 455 pkg syscall (freebsd-arm), const SYS_THR_SELF = 432 pkg syscall (freebsd-arm), const SYS_THR_SET_NAME = 464 pkg syscall (freebsd-arm), const SYS_THR_SUSPEND = 442 pkg syscall (freebsd-arm), const SYS_THR_WAKE = 443 pkg syscall (freebsd-arm), const SYS_TRUNCATE = 479 pkg syscall (freebsd-arm), const SYS_UMASK = 60 pkg syscall (freebsd-arm), const SYS_UNDELETE = 205 pkg syscall (freebsd-arm), const SYS_UNLINK = 10 pkg syscall (freebsd-arm), const SYS_UNLINKAT = 503 pkg syscall (freebsd-arm), const SYS_UNMOUNT = 22 pkg syscall (freebsd-arm), const SYS_UTIMES = 138 pkg syscall (freebsd-arm), const SYS_UTRACE = 335 pkg syscall (freebsd-arm), const SYS_UUIDGEN = 392 pkg syscall (freebsd-arm), const SYS_VFORK = 66 pkg syscall (freebsd-arm), const SYS_WAIT4 = 7 pkg syscall (freebsd-arm), const SYS_WAIT6 = 532 pkg syscall (freebsd-arm), const SYS_WRITE = 4 pkg syscall (freebsd-arm), const SYS_WRITEV = 121 pkg syscall (freebsd-arm), const SYS_YIELD = 321 pkg syscall (freebsd-arm), const SYS__UMTX_LOCK = 434 pkg syscall (freebsd-arm), const SYS__UMTX_OP = 454 pkg syscall (freebsd-arm), const SYS__UMTX_UNLOCK = 435 pkg syscall (freebsd-arm), const SYS___ACL_ACLCHECK_FD = 354 pkg syscall (freebsd-arm), const SYS___ACL_ACLCHECK_FILE = 353 pkg syscall (freebsd-arm), const SYS___ACL_ACLCHECK_LINK = 428 pkg syscall (freebsd-arm), const SYS___ACL_DELETE_FD = 352 pkg syscall (freebsd-arm), const SYS___ACL_DELETE_FILE = 351 pkg syscall (freebsd-arm), const SYS___ACL_DELETE_LINK = 427 pkg syscall (freebsd-arm), const SYS___ACL_GET_FD = 349 pkg syscall (freebsd-arm), const SYS___ACL_GET_FILE = 347 pkg syscall (freebsd-arm), const SYS___ACL_GET_LINK = 425 pkg syscall (freebsd-arm), const SYS___ACL_SET_FD = 350 pkg syscall (freebsd-arm), const SYS___ACL_SET_FILE = 348 pkg syscall (freebsd-arm), const SYS___ACL_SET_LINK = 426 pkg syscall (freebsd-arm), const SYS___GETCWD = 326 pkg syscall (freebsd-arm), const SYS___MAC_EXECVE = 415 pkg syscall (freebsd-arm), const SYS___MAC_GET_FD = 386 pkg syscall (freebsd-arm), const SYS___MAC_GET_FILE = 387 pkg syscall (freebsd-arm), const SYS___MAC_GET_LINK = 410 pkg syscall (freebsd-arm), const SYS___MAC_GET_PID = 409 pkg syscall (freebsd-arm), const SYS___MAC_GET_PROC = 384 pkg syscall (freebsd-arm), const SYS___MAC_SET_FD = 388 pkg syscall (freebsd-arm), const SYS___MAC_SET_FILE = 389 pkg syscall (freebsd-arm), const SYS___MAC_SET_LINK = 411 pkg syscall (freebsd-arm), const SYS___MAC_SET_PROC = 385 pkg syscall (freebsd-arm), const SYS___SETUGID = 374 pkg syscall (freebsd-arm), const SYS___SYSCTL = 202 pkg syscall (freebsd-arm), const S_IFMT = 61440 pkg syscall (freebsd-arm), const SizeofBpfHdr = 24 pkg syscall (freebsd-arm), const SizeofBpfInsn = 8 pkg syscall (freebsd-arm), const SizeofBpfProgram = 8 pkg syscall (freebsd-arm), const SizeofBpfStat = 8 pkg syscall (freebsd-arm), const SizeofBpfVersion = 4 pkg syscall (freebsd-arm), const SizeofBpfZbuf = 12 pkg syscall (freebsd-arm), const SizeofBpfZbufHeader = 32 pkg syscall (freebsd-arm), const SizeofCmsghdr = 12 pkg syscall (freebsd-arm), const SizeofIPMreq = 8 pkg syscall (freebsd-arm), const SizeofIPMreqn = 12 pkg syscall (freebsd-arm), const SizeofIPv6Mreq = 20 pkg syscall (freebsd-arm), const SizeofIfAnnounceMsghdr = 24 pkg syscall (freebsd-arm), const SizeofIfData = 88 pkg syscall (freebsd-arm), const SizeofIfMsghdr = 104 pkg syscall (freebsd-arm), const SizeofIfaMsghdr = 20 pkg syscall (freebsd-arm), const SizeofIfmaMsghdr = 16 pkg syscall (freebsd-arm), const SizeofInet6Pktinfo = 20 pkg syscall (freebsd-arm), const SizeofLinger = 8 pkg syscall (freebsd-arm), const SizeofMsghdr = 28 pkg syscall (freebsd-arm), const SizeofRtMetrics = 56 pkg syscall (freebsd-arm), const SizeofRtMsghdr = 92 pkg syscall (freebsd-arm), const SizeofSockaddrAny = 108 pkg syscall (freebsd-arm), const SizeofSockaddrDatalink = 56 pkg syscall (freebsd-arm), const SizeofSockaddrInet4 = 16 pkg syscall (freebsd-arm), const SizeofSockaddrInet6 = 28 pkg syscall (freebsd-arm), const SizeofSockaddrUnix = 108 pkg syscall (freebsd-arm), const TCIFLUSH = 1 pkg syscall (freebsd-arm), const TCIOFLUSH = 3 pkg syscall (freebsd-arm), const TCOFLUSH = 2 pkg syscall (freebsd-arm), const TCP_CA_NAME_MAX = 16 pkg syscall (freebsd-arm), const TCP_CONGESTION = 64 pkg syscall (freebsd-arm), const TCP_INFO = 32 pkg syscall (freebsd-arm), const TCP_KEEPCNT = 1024 pkg syscall (freebsd-arm), const TCP_KEEPIDLE = 256 pkg syscall (freebsd-arm), const TCP_KEEPINIT = 128 pkg syscall (freebsd-arm), const TCP_KEEPINTVL = 512 pkg syscall (freebsd-arm), const TCP_MAXBURST = 4 pkg syscall (freebsd-arm), const TCP_MAXHLEN = 60 pkg syscall (freebsd-arm), const TCP_MAXOLEN = 40 pkg syscall (freebsd-arm), const TCP_MAXSEG = 2 pkg syscall (freebsd-arm), const TCP_MAXWIN = 65535 pkg syscall (freebsd-arm), const TCP_MAX_SACK = 4 pkg syscall (freebsd-arm), const TCP_MAX_WINSHIFT = 14 pkg syscall (freebsd-arm), const TCP_MD5SIG = 16 pkg syscall (freebsd-arm), const TCP_MINMSS = 216 pkg syscall (freebsd-arm), const TCP_MSS = 536 pkg syscall (freebsd-arm), const TCP_NOOPT = 8 pkg syscall (freebsd-arm), const TCP_NOPUSH = 4 pkg syscall (freebsd-arm), const TCSAFLUSH = 2 pkg syscall (freebsd-arm), const TIOCCBRK = 536900730 pkg syscall (freebsd-arm), const TIOCCDTR = 536900728 pkg syscall (freebsd-arm), const TIOCCONS = 2147775586 pkg syscall (freebsd-arm), const TIOCDRAIN = 536900702 pkg syscall (freebsd-arm), const TIOCEXCL = 536900621 pkg syscall (freebsd-arm), const TIOCEXT = 2147775584 pkg syscall (freebsd-arm), const TIOCFLUSH = 2147775504 pkg syscall (freebsd-arm), const TIOCGDRAINWAIT = 1074033750 pkg syscall (freebsd-arm), const TIOCGETA = 1076655123 pkg syscall (freebsd-arm), const TIOCGETD = 1074033690 pkg syscall (freebsd-arm), const TIOCGPGRP = 1074033783 pkg syscall (freebsd-arm), const TIOCGPTN = 1074033679 pkg syscall (freebsd-arm), const TIOCGSID = 1074033763 pkg syscall (freebsd-arm), const TIOCGWINSZ = 1074295912 pkg syscall (freebsd-arm), const TIOCMBIC = 2147775595 pkg syscall (freebsd-arm), const TIOCMBIS = 2147775596 pkg syscall (freebsd-arm), const TIOCMGDTRWAIT = 1074033754 pkg syscall (freebsd-arm), const TIOCMGET = 1074033770 pkg syscall (freebsd-arm), const TIOCMSDTRWAIT = 2147775579 pkg syscall (freebsd-arm), const TIOCMSET = 2147775597 pkg syscall (freebsd-arm), const TIOCM_CAR = 64 pkg syscall (freebsd-arm), const TIOCM_CD = 64 pkg syscall (freebsd-arm), const TIOCM_CTS = 32 pkg syscall (freebsd-arm), const TIOCM_DCD = 64 pkg syscall (freebsd-arm), const TIOCM_DSR = 256 pkg syscall (freebsd-arm), const TIOCM_DTR = 2 pkg syscall (freebsd-arm), const TIOCM_LE = 1 pkg syscall (freebsd-arm), const TIOCM_RI = 128 pkg syscall (freebsd-arm), const TIOCM_RNG = 128 pkg syscall (freebsd-arm), const TIOCM_RTS = 4 pkg syscall (freebsd-arm), const TIOCM_SR = 16 pkg syscall (freebsd-arm), const TIOCM_ST = 8 pkg syscall (freebsd-arm), const TIOCNOTTY = 536900721 pkg syscall (freebsd-arm), const TIOCNXCL = 536900622 pkg syscall (freebsd-arm), const TIOCOUTQ = 1074033779 pkg syscall (freebsd-arm), const TIOCPKT = 2147775600 pkg syscall (freebsd-arm), const TIOCPKT_DATA = 0 pkg syscall (freebsd-arm), const TIOCPKT_DOSTOP = 32 pkg syscall (freebsd-arm), const TIOCPKT_FLUSHREAD = 1 pkg syscall (freebsd-arm), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (freebsd-arm), const TIOCPKT_IOCTL = 64 pkg syscall (freebsd-arm), const TIOCPKT_NOSTOP = 16 pkg syscall (freebsd-arm), const TIOCPKT_START = 8 pkg syscall (freebsd-arm), const TIOCPKT_STOP = 4 pkg syscall (freebsd-arm), const TIOCPTMASTER = 536900636 pkg syscall (freebsd-arm), const TIOCSBRK = 536900731 pkg syscall (freebsd-arm), const TIOCSCTTY = 536900705 pkg syscall (freebsd-arm), const TIOCSDRAINWAIT = 2147775575 pkg syscall (freebsd-arm), const TIOCSDTR = 536900729 pkg syscall (freebsd-arm), const TIOCSETA = 2150396948 pkg syscall (freebsd-arm), const TIOCSETAF = 2150396950 pkg syscall (freebsd-arm), const TIOCSETAW = 2150396949 pkg syscall (freebsd-arm), const TIOCSETD = 2147775515 pkg syscall (freebsd-arm), const TIOCSIG = 537162847 pkg syscall (freebsd-arm), const TIOCSPGRP = 2147775606 pkg syscall (freebsd-arm), const TIOCSTART = 536900718 pkg syscall (freebsd-arm), const TIOCSTAT = 536900709 pkg syscall (freebsd-arm), const TIOCSTI = 2147578994 pkg syscall (freebsd-arm), const TIOCSTOP = 536900719 pkg syscall (freebsd-arm), const TIOCSWINSZ = 2148037735 pkg syscall (freebsd-arm), const TIOCTIMESTAMP = 1074558041 pkg syscall (freebsd-arm), const TIOCUCNTL = 2147775590 pkg syscall (freebsd-arm), const TOSTOP = 4194304 pkg syscall (freebsd-arm), const VDISCARD = 15 pkg syscall (freebsd-arm), const VDSUSP = 11 pkg syscall (freebsd-arm), const VEOF = 0 pkg syscall (freebsd-arm), const VEOL = 1 pkg syscall (freebsd-arm), const VEOL2 = 2 pkg syscall (freebsd-arm), const VERASE = 3 pkg syscall (freebsd-arm), const VERASE2 = 7 pkg syscall (freebsd-arm), const VINTR = 8 pkg syscall (freebsd-arm), const VKILL = 5 pkg syscall (freebsd-arm), const VLNEXT = 14 pkg syscall (freebsd-arm), const VMIN = 16 pkg syscall (freebsd-arm), const VQUIT = 9 pkg syscall (freebsd-arm), const VREPRINT = 6 pkg syscall (freebsd-arm), const VSTART = 12 pkg syscall (freebsd-arm), const VSTATUS = 18 pkg syscall (freebsd-arm), const VSTOP = 13 pkg syscall (freebsd-arm), const VSUSP = 10 pkg syscall (freebsd-arm), const VTIME = 17 pkg syscall (freebsd-arm), const VWERASE = 4 pkg syscall (freebsd-arm), const WCONTINUED = 4 pkg syscall (freebsd-arm), const WCOREFLAG = 128 pkg syscall (freebsd-arm), const WEXITED = 16 pkg syscall (freebsd-arm), const WLINUXCLONE = 2147483648 pkg syscall (freebsd-arm), const WNOHANG = 1 pkg syscall (freebsd-arm), const WNOWAIT = 8 pkg syscall (freebsd-arm), const WSTOPPED = 2 pkg syscall (freebsd-arm), const WTRAPPED = 32 pkg syscall (freebsd-arm), const WUNTRACED = 2 pkg syscall (freebsd-arm-cgo), const AF_APPLETALK = 16 pkg syscall (freebsd-arm-cgo), const AF_ARP = 35 pkg syscall (freebsd-arm-cgo), const AF_ATM = 30 pkg syscall (freebsd-arm-cgo), const AF_BLUETOOTH = 36 pkg syscall (freebsd-arm-cgo), const AF_CCITT = 10 pkg syscall (freebsd-arm-cgo), const AF_CHAOS = 5 pkg syscall (freebsd-arm-cgo), const AF_CNT = 21 pkg syscall (freebsd-arm-cgo), const AF_COIP = 20 pkg syscall (freebsd-arm-cgo), const AF_DATAKIT = 9 pkg syscall (freebsd-arm-cgo), const AF_DECnet = 12 pkg syscall (freebsd-arm-cgo), const AF_DLI = 13 pkg syscall (freebsd-arm-cgo), const AF_E164 = 26 pkg syscall (freebsd-arm-cgo), const AF_ECMA = 8 pkg syscall (freebsd-arm-cgo), const AF_HYLINK = 15 pkg syscall (freebsd-arm-cgo), const AF_IEEE80211 = 37 pkg syscall (freebsd-arm-cgo), const AF_IMPLINK = 3 pkg syscall (freebsd-arm-cgo), const AF_INET6 = 28 pkg syscall (freebsd-arm-cgo), const AF_IPX = 23 pkg syscall (freebsd-arm-cgo), const AF_ISDN = 26 pkg syscall (freebsd-arm-cgo), const AF_ISO = 7 pkg syscall (freebsd-arm-cgo), const AF_LAT = 14 pkg syscall (freebsd-arm-cgo), const AF_LINK = 18 pkg syscall (freebsd-arm-cgo), const AF_LOCAL = 1 pkg syscall (freebsd-arm-cgo), const AF_MAX = 38 pkg syscall (freebsd-arm-cgo), const AF_NATM = 29 pkg syscall (freebsd-arm-cgo), const AF_NETBIOS = 6 pkg syscall (freebsd-arm-cgo), const AF_NETGRAPH = 32 pkg syscall (freebsd-arm-cgo), const AF_OSI = 7 pkg syscall (freebsd-arm-cgo), const AF_PUP = 4 pkg syscall (freebsd-arm-cgo), const AF_ROUTE = 17 pkg syscall (freebsd-arm-cgo), const AF_SCLUSTER = 34 pkg syscall (freebsd-arm-cgo), const AF_SIP = 24 pkg syscall (freebsd-arm-cgo), const AF_SLOW = 33 pkg syscall (freebsd-arm-cgo), const AF_SNA = 11 pkg syscall (freebsd-arm-cgo), const AF_VENDOR00 = 39 pkg syscall (freebsd-arm-cgo), const AF_VENDOR01 = 41 pkg syscall (freebsd-arm-cgo), const AF_VENDOR02 = 43 pkg syscall (freebsd-arm-cgo), const AF_VENDOR03 = 45 pkg syscall (freebsd-arm-cgo), const AF_VENDOR04 = 47 pkg syscall (freebsd-arm-cgo), const AF_VENDOR05 = 49 pkg syscall (freebsd-arm-cgo), const AF_VENDOR06 = 51 pkg syscall (freebsd-arm-cgo), const AF_VENDOR07 = 53 pkg syscall (freebsd-arm-cgo), const AF_VENDOR08 = 55 pkg syscall (freebsd-arm-cgo), const AF_VENDOR09 = 57 pkg syscall (freebsd-arm-cgo), const AF_VENDOR10 = 59 pkg syscall (freebsd-arm-cgo), const AF_VENDOR11 = 61 pkg syscall (freebsd-arm-cgo), const AF_VENDOR12 = 63 pkg syscall (freebsd-arm-cgo), const AF_VENDOR13 = 65 pkg syscall (freebsd-arm-cgo), const AF_VENDOR14 = 67 pkg syscall (freebsd-arm-cgo), const AF_VENDOR15 = 69 pkg syscall (freebsd-arm-cgo), const AF_VENDOR16 = 71 pkg syscall (freebsd-arm-cgo), const AF_VENDOR17 = 73 pkg syscall (freebsd-arm-cgo), const AF_VENDOR18 = 75 pkg syscall (freebsd-arm-cgo), const AF_VENDOR19 = 77 pkg syscall (freebsd-arm-cgo), const AF_VENDOR20 = 79 pkg syscall (freebsd-arm-cgo), const AF_VENDOR21 = 81 pkg syscall (freebsd-arm-cgo), const AF_VENDOR22 = 83 pkg syscall (freebsd-arm-cgo), const AF_VENDOR23 = 85 pkg syscall (freebsd-arm-cgo), const AF_VENDOR24 = 87 pkg syscall (freebsd-arm-cgo), const AF_VENDOR25 = 89 pkg syscall (freebsd-arm-cgo), const AF_VENDOR26 = 91 pkg syscall (freebsd-arm-cgo), const AF_VENDOR27 = 93 pkg syscall (freebsd-arm-cgo), const AF_VENDOR28 = 95 pkg syscall (freebsd-arm-cgo), const AF_VENDOR29 = 97 pkg syscall (freebsd-arm-cgo), const AF_VENDOR30 = 99 pkg syscall (freebsd-arm-cgo), const AF_VENDOR31 = 101 pkg syscall (freebsd-arm-cgo), const AF_VENDOR32 = 103 pkg syscall (freebsd-arm-cgo), const AF_VENDOR33 = 105 pkg syscall (freebsd-arm-cgo), const AF_VENDOR34 = 107 pkg syscall (freebsd-arm-cgo), const AF_VENDOR35 = 109 pkg syscall (freebsd-arm-cgo), const AF_VENDOR36 = 111 pkg syscall (freebsd-arm-cgo), const AF_VENDOR37 = 113 pkg syscall (freebsd-arm-cgo), const AF_VENDOR38 = 115 pkg syscall (freebsd-arm-cgo), const AF_VENDOR39 = 117 pkg syscall (freebsd-arm-cgo), const AF_VENDOR40 = 119 pkg syscall (freebsd-arm-cgo), const AF_VENDOR41 = 121 pkg syscall (freebsd-arm-cgo), const AF_VENDOR42 = 123 pkg syscall (freebsd-arm-cgo), const AF_VENDOR43 = 125 pkg syscall (freebsd-arm-cgo), const AF_VENDOR44 = 127 pkg syscall (freebsd-arm-cgo), const AF_VENDOR45 = 129 pkg syscall (freebsd-arm-cgo), const AF_VENDOR46 = 131 pkg syscall (freebsd-arm-cgo), const AF_VENDOR47 = 133 pkg syscall (freebsd-arm-cgo), const B0 = 0 pkg syscall (freebsd-arm-cgo), const B110 = 110 pkg syscall (freebsd-arm-cgo), const B115200 = 115200 pkg syscall (freebsd-arm-cgo), const B1200 = 1200 pkg syscall (freebsd-arm-cgo), const B134 = 134 pkg syscall (freebsd-arm-cgo), const B14400 = 14400 pkg syscall (freebsd-arm-cgo), const B150 = 150 pkg syscall (freebsd-arm-cgo), const B1800 = 1800 pkg syscall (freebsd-arm-cgo), const B19200 = 19200 pkg syscall (freebsd-arm-cgo), const B200 = 200 pkg syscall (freebsd-arm-cgo), const B230400 = 230400 pkg syscall (freebsd-arm-cgo), const B2400 = 2400 pkg syscall (freebsd-arm-cgo), const B28800 = 28800 pkg syscall (freebsd-arm-cgo), const B300 = 300 pkg syscall (freebsd-arm-cgo), const B38400 = 38400 pkg syscall (freebsd-arm-cgo), const B460800 = 460800 pkg syscall (freebsd-arm-cgo), const B4800 = 4800 pkg syscall (freebsd-arm-cgo), const B50 = 50 pkg syscall (freebsd-arm-cgo), const B57600 = 57600 pkg syscall (freebsd-arm-cgo), const B600 = 600 pkg syscall (freebsd-arm-cgo), const B7200 = 7200 pkg syscall (freebsd-arm-cgo), const B75 = 75 pkg syscall (freebsd-arm-cgo), const B76800 = 76800 pkg syscall (freebsd-arm-cgo), const B921600 = 921600 pkg syscall (freebsd-arm-cgo), const B9600 = 9600 pkg syscall (freebsd-arm-cgo), const BIOCFEEDBACK = 2147762812 pkg syscall (freebsd-arm-cgo), const BIOCFLUSH = 536887912 pkg syscall (freebsd-arm-cgo), const BIOCGBLEN = 1074020966 pkg syscall (freebsd-arm-cgo), const BIOCGDIRECTION = 1074020982 pkg syscall (freebsd-arm-cgo), const BIOCGDLT = 1074020970 pkg syscall (freebsd-arm-cgo), const BIOCGDLTLIST = 3221766777 pkg syscall (freebsd-arm-cgo), const BIOCGETBUFMODE = 1074020989 pkg syscall (freebsd-arm-cgo), const BIOCGETIF = 1075855979 pkg syscall (freebsd-arm-cgo), const BIOCGETZMAX = 1074020991 pkg syscall (freebsd-arm-cgo), const BIOCGHDRCMPLT = 1074020980 pkg syscall (freebsd-arm-cgo), const BIOCGRSIG = 1074020978 pkg syscall (freebsd-arm-cgo), const BIOCGRTIMEOUT = 1074545262 pkg syscall (freebsd-arm-cgo), const BIOCGSEESENT = 1074020982 pkg syscall (freebsd-arm-cgo), const BIOCGSTATS = 1074283119 pkg syscall (freebsd-arm-cgo), const BIOCGTSTAMP = 1074020995 pkg syscall (freebsd-arm-cgo), const BIOCIMMEDIATE = 2147762800 pkg syscall (freebsd-arm-cgo), const BIOCLOCK = 536887930 pkg syscall (freebsd-arm-cgo), const BIOCPROMISC = 536887913 pkg syscall (freebsd-arm-cgo), const BIOCROTZBUF = 1074545280 pkg syscall (freebsd-arm-cgo), const BIOCSBLEN = 3221504614 pkg syscall (freebsd-arm-cgo), const BIOCSDIRECTION = 2147762807 pkg syscall (freebsd-arm-cgo), const BIOCSDLT = 2147762808 pkg syscall (freebsd-arm-cgo), const BIOCSETBUFMODE = 2147762814 pkg syscall (freebsd-arm-cgo), const BIOCSETF = 2148024935 pkg syscall (freebsd-arm-cgo), const BIOCSETFNR = 2148024962 pkg syscall (freebsd-arm-cgo), const BIOCSETIF = 2149597804 pkg syscall (freebsd-arm-cgo), const BIOCSETWF = 2148024955 pkg syscall (freebsd-arm-cgo), const BIOCSETZBUF = 2148287105 pkg syscall (freebsd-arm-cgo), const BIOCSHDRCMPLT = 2147762805 pkg syscall (freebsd-arm-cgo), const BIOCSRSIG = 2147762803 pkg syscall (freebsd-arm-cgo), const BIOCSRTIMEOUT = 2148287085 pkg syscall (freebsd-arm-cgo), const BIOCSSEESENT = 2147762807 pkg syscall (freebsd-arm-cgo), const BIOCSTSTAMP = 2147762820 pkg syscall (freebsd-arm-cgo), const BIOCVERSION = 1074020977 pkg syscall (freebsd-arm-cgo), const BPF_A = 16 pkg syscall (freebsd-arm-cgo), const BPF_ABS = 32 pkg syscall (freebsd-arm-cgo), const BPF_ADD = 0 pkg syscall (freebsd-arm-cgo), const BPF_ALIGNMENT = 4 pkg syscall (freebsd-arm-cgo), const BPF_ALU = 4 pkg syscall (freebsd-arm-cgo), const BPF_AND = 80 pkg syscall (freebsd-arm-cgo), const BPF_B = 16 pkg syscall (freebsd-arm-cgo), const BPF_BUFMODE_BUFFER = 1 pkg syscall (freebsd-arm-cgo), const BPF_BUFMODE_ZBUF = 2 pkg syscall (freebsd-arm-cgo), const BPF_DIV = 48 pkg syscall (freebsd-arm-cgo), const BPF_H = 8 pkg syscall (freebsd-arm-cgo), const BPF_IMM = 0 pkg syscall (freebsd-arm-cgo), const BPF_IND = 64 pkg syscall (freebsd-arm-cgo), const BPF_JA = 0 pkg syscall (freebsd-arm-cgo), const BPF_JEQ = 16 pkg syscall (freebsd-arm-cgo), const BPF_JGE = 48 pkg syscall (freebsd-arm-cgo), const BPF_JGT = 32 pkg syscall (freebsd-arm-cgo), const BPF_JMP = 5 pkg syscall (freebsd-arm-cgo), const BPF_JSET = 64 pkg syscall (freebsd-arm-cgo), const BPF_K = 0 pkg syscall (freebsd-arm-cgo), const BPF_LD = 0 pkg syscall (freebsd-arm-cgo), const BPF_LDX = 1 pkg syscall (freebsd-arm-cgo), const BPF_LEN = 128 pkg syscall (freebsd-arm-cgo), const BPF_LSH = 96 pkg syscall (freebsd-arm-cgo), const BPF_MAJOR_VERSION = 1 pkg syscall (freebsd-arm-cgo), const BPF_MAXBUFSIZE = 524288 pkg syscall (freebsd-arm-cgo), const BPF_MAXINSNS = 512 pkg syscall (freebsd-arm-cgo), const BPF_MEM = 96 pkg syscall (freebsd-arm-cgo), const BPF_MEMWORDS = 16 pkg syscall (freebsd-arm-cgo), const BPF_MINBUFSIZE = 32 pkg syscall (freebsd-arm-cgo), const BPF_MINOR_VERSION = 1 pkg syscall (freebsd-arm-cgo), const BPF_MISC = 7 pkg syscall (freebsd-arm-cgo), const BPF_MSH = 160 pkg syscall (freebsd-arm-cgo), const BPF_MUL = 32 pkg syscall (freebsd-arm-cgo), const BPF_NEG = 128 pkg syscall (freebsd-arm-cgo), const BPF_OR = 64 pkg syscall (freebsd-arm-cgo), const BPF_RELEASE = 199606 pkg syscall (freebsd-arm-cgo), const BPF_RET = 6 pkg syscall (freebsd-arm-cgo), const BPF_RSH = 112 pkg syscall (freebsd-arm-cgo), const BPF_ST = 2 pkg syscall (freebsd-arm-cgo), const BPF_STX = 3 pkg syscall (freebsd-arm-cgo), const BPF_SUB = 16 pkg syscall (freebsd-arm-cgo), const BPF_TAX = 0 pkg syscall (freebsd-arm-cgo), const BPF_TXA = 128 pkg syscall (freebsd-arm-cgo), const BPF_T_BINTIME = 2 pkg syscall (freebsd-arm-cgo), const BPF_T_BINTIME_FAST = 258 pkg syscall (freebsd-arm-cgo), const BPF_T_BINTIME_MONOTONIC = 514 pkg syscall (freebsd-arm-cgo), const BPF_T_BINTIME_MONOTONIC_FAST = 770 pkg syscall (freebsd-arm-cgo), const BPF_T_FAST = 256 pkg syscall (freebsd-arm-cgo), const BPF_T_FLAG_MASK = 768 pkg syscall (freebsd-arm-cgo), const BPF_T_FORMAT_MASK = 3 pkg syscall (freebsd-arm-cgo), const BPF_T_MICROTIME = 0 pkg syscall (freebsd-arm-cgo), const BPF_T_MICROTIME_FAST = 256 pkg syscall (freebsd-arm-cgo), const BPF_T_MICROTIME_MONOTONIC = 512 pkg syscall (freebsd-arm-cgo), const BPF_T_MICROTIME_MONOTONIC_FAST = 768 pkg syscall (freebsd-arm-cgo), const BPF_T_MONOTONIC = 512 pkg syscall (freebsd-arm-cgo), const BPF_T_MONOTONIC_FAST = 768 pkg syscall (freebsd-arm-cgo), const BPF_T_NANOTIME = 1 pkg syscall (freebsd-arm-cgo), const BPF_T_NANOTIME_FAST = 257 pkg syscall (freebsd-arm-cgo), const BPF_T_NANOTIME_MONOTONIC = 513 pkg syscall (freebsd-arm-cgo), const BPF_T_NANOTIME_MONOTONIC_FAST = 769 pkg syscall (freebsd-arm-cgo), const BPF_T_NONE = 3 pkg syscall (freebsd-arm-cgo), const BPF_T_NORMAL = 0 pkg syscall (freebsd-arm-cgo), const BPF_W = 0 pkg syscall (freebsd-arm-cgo), const BPF_X = 8 pkg syscall (freebsd-arm-cgo), const BRKINT = 2 pkg syscall (freebsd-arm-cgo), const CFLUSH = 15 pkg syscall (freebsd-arm-cgo), const CLOCAL = 32768 pkg syscall (freebsd-arm-cgo), const CREAD = 2048 pkg syscall (freebsd-arm-cgo), const CS5 = 0 pkg syscall (freebsd-arm-cgo), const CS6 = 256 pkg syscall (freebsd-arm-cgo), const CS7 = 512 pkg syscall (freebsd-arm-cgo), const CS8 = 768 pkg syscall (freebsd-arm-cgo), const CSIZE = 768 pkg syscall (freebsd-arm-cgo), const CSTART = 17 pkg syscall (freebsd-arm-cgo), const CSTATUS = 20 pkg syscall (freebsd-arm-cgo), const CSTOP = 19 pkg syscall (freebsd-arm-cgo), const CSTOPB = 1024 pkg syscall (freebsd-arm-cgo), const CSUSP = 26 pkg syscall (freebsd-arm-cgo), const CTL_MAXNAME = 24 pkg syscall (freebsd-arm-cgo), const CTL_NET = 4 pkg syscall (freebsd-arm-cgo), const DLT_A429 = 184 pkg syscall (freebsd-arm-cgo), const DLT_A653_ICM = 185 pkg syscall (freebsd-arm-cgo), const DLT_AIRONET_HEADER = 120 pkg syscall (freebsd-arm-cgo), const DLT_AOS = 222 pkg syscall (freebsd-arm-cgo), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (freebsd-arm-cgo), const DLT_ARCNET = 7 pkg syscall (freebsd-arm-cgo), const DLT_ARCNET_LINUX = 129 pkg syscall (freebsd-arm-cgo), const DLT_ATM_CLIP = 19 pkg syscall (freebsd-arm-cgo), const DLT_ATM_RFC1483 = 11 pkg syscall (freebsd-arm-cgo), const DLT_AURORA = 126 pkg syscall (freebsd-arm-cgo), const DLT_AX25 = 3 pkg syscall (freebsd-arm-cgo), const DLT_AX25_KISS = 202 pkg syscall (freebsd-arm-cgo), const DLT_BACNET_MS_TP = 165 pkg syscall (freebsd-arm-cgo), const DLT_BLUETOOTH_HCI_H4 = 187 pkg syscall (freebsd-arm-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 pkg syscall (freebsd-arm-cgo), const DLT_CAN20B = 190 pkg syscall (freebsd-arm-cgo), const DLT_CAN_SOCKETCAN = 227 pkg syscall (freebsd-arm-cgo), const DLT_CHAOS = 5 pkg syscall (freebsd-arm-cgo), const DLT_CHDLC = 104 pkg syscall (freebsd-arm-cgo), const DLT_CISCO_IOS = 118 pkg syscall (freebsd-arm-cgo), const DLT_C_HDLC = 104 pkg syscall (freebsd-arm-cgo), const DLT_C_HDLC_WITH_DIR = 205 pkg syscall (freebsd-arm-cgo), const DLT_DBUS = 231 pkg syscall (freebsd-arm-cgo), const DLT_DECT = 221 pkg syscall (freebsd-arm-cgo), const DLT_DOCSIS = 143 pkg syscall (freebsd-arm-cgo), const DLT_DVB_CI = 235 pkg syscall (freebsd-arm-cgo), const DLT_ECONET = 115 pkg syscall (freebsd-arm-cgo), const DLT_EN10MB = 1 pkg syscall (freebsd-arm-cgo), const DLT_EN3MB = 2 pkg syscall (freebsd-arm-cgo), const DLT_ENC = 109 pkg syscall (freebsd-arm-cgo), const DLT_ERF = 197 pkg syscall (freebsd-arm-cgo), const DLT_ERF_ETH = 175 pkg syscall (freebsd-arm-cgo), const DLT_ERF_POS = 176 pkg syscall (freebsd-arm-cgo), const DLT_FC_2 = 224 pkg syscall (freebsd-arm-cgo), const DLT_FC_2_WITH_FRAME_DELIMS = 225 pkg syscall (freebsd-arm-cgo), const DLT_FDDI = 10 pkg syscall (freebsd-arm-cgo), const DLT_FLEXRAY = 210 pkg syscall (freebsd-arm-cgo), const DLT_FRELAY = 107 pkg syscall (freebsd-arm-cgo), const DLT_FRELAY_WITH_DIR = 206 pkg syscall (freebsd-arm-cgo), const DLT_GCOM_SERIAL = 173 pkg syscall (freebsd-arm-cgo), const DLT_GCOM_T1E1 = 172 pkg syscall (freebsd-arm-cgo), const DLT_GPF_F = 171 pkg syscall (freebsd-arm-cgo), const DLT_GPF_T = 170 pkg syscall (freebsd-arm-cgo), const DLT_GPRS_LLC = 169 pkg syscall (freebsd-arm-cgo), const DLT_GSMTAP_ABIS = 218 pkg syscall (freebsd-arm-cgo), const DLT_GSMTAP_UM = 217 pkg syscall (freebsd-arm-cgo), const DLT_HHDLC = 121 pkg syscall (freebsd-arm-cgo), const DLT_IBM_SN = 146 pkg syscall (freebsd-arm-cgo), const DLT_IBM_SP = 145 pkg syscall (freebsd-arm-cgo), const DLT_IEEE802 = 6 pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_11 = 105 pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_11_RADIO = 127 pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_15_4 = 195 pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_15_4_LINUX = 191 pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_15_4_NOFCS = 230 pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_15_4_NONASK_PHY = 215 pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_16_MAC_CPS = 188 pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 pkg syscall (freebsd-arm-cgo), const DLT_IPFILTER = 116 pkg syscall (freebsd-arm-cgo), const DLT_IPMB = 199 pkg syscall (freebsd-arm-cgo), const DLT_IPMB_LINUX = 209 pkg syscall (freebsd-arm-cgo), const DLT_IPNET = 226 pkg syscall (freebsd-arm-cgo), const DLT_IPOIB = 242 pkg syscall (freebsd-arm-cgo), const DLT_IPV4 = 228 pkg syscall (freebsd-arm-cgo), const DLT_IPV6 = 229 pkg syscall (freebsd-arm-cgo), const DLT_IP_OVER_FC = 122 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_ATM1 = 137 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_ATM2 = 135 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_ATM_CEMIC = 238 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_CHDLC = 181 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_ES = 132 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_ETHER = 178 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_FIBRECHANNEL = 234 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_FRELAY = 180 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_GGSN = 133 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_ISM = 194 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_MFR = 134 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_MLFR = 131 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_MLPPP = 130 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_MONITOR = 164 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_PIC_PEER = 174 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_PPP = 179 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_PPPOE = 167 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_PPPOE_ATM = 168 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_SERVICES = 136 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_SRX_E2E = 233 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_ST = 200 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_VP = 183 pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_VS = 232 pkg syscall (freebsd-arm-cgo), const DLT_LAPB_WITH_DIR = 207 pkg syscall (freebsd-arm-cgo), const DLT_LAPD = 203 pkg syscall (freebsd-arm-cgo), const DLT_LIN = 212 pkg syscall (freebsd-arm-cgo), const DLT_LINUX_EVDEV = 216 pkg syscall (freebsd-arm-cgo), const DLT_LINUX_IRDA = 144 pkg syscall (freebsd-arm-cgo), const DLT_LINUX_LAPD = 177 pkg syscall (freebsd-arm-cgo), const DLT_LINUX_PPP_WITHDIRECTION = 166 pkg syscall (freebsd-arm-cgo), const DLT_LINUX_SLL = 113 pkg syscall (freebsd-arm-cgo), const DLT_LOOP = 108 pkg syscall (freebsd-arm-cgo), const DLT_LTALK = 114 pkg syscall (freebsd-arm-cgo), const DLT_MATCHING_MAX = 246 pkg syscall (freebsd-arm-cgo), const DLT_MATCHING_MIN = 104 pkg syscall (freebsd-arm-cgo), const DLT_MFR = 182 pkg syscall (freebsd-arm-cgo), const DLT_MOST = 211 pkg syscall (freebsd-arm-cgo), const DLT_MPEG_2_TS = 243 pkg syscall (freebsd-arm-cgo), const DLT_MPLS = 219 pkg syscall (freebsd-arm-cgo), const DLT_MTP2 = 140 pkg syscall (freebsd-arm-cgo), const DLT_MTP2_WITH_PHDR = 139 pkg syscall (freebsd-arm-cgo), const DLT_MTP3 = 141 pkg syscall (freebsd-arm-cgo), const DLT_MUX27010 = 236 pkg syscall (freebsd-arm-cgo), const DLT_NETANALYZER = 240 pkg syscall (freebsd-arm-cgo), const DLT_NETANALYZER_TRANSPARENT = 241 pkg syscall (freebsd-arm-cgo), const DLT_NFC_LLCP = 245 pkg syscall (freebsd-arm-cgo), const DLT_NFLOG = 239 pkg syscall (freebsd-arm-cgo), const DLT_NG40 = 244 pkg syscall (freebsd-arm-cgo), const DLT_NULL = 0 pkg syscall (freebsd-arm-cgo), const DLT_PCI_EXP = 125 pkg syscall (freebsd-arm-cgo), const DLT_PFLOG = 117 pkg syscall (freebsd-arm-cgo), const DLT_PFSYNC = 121 pkg syscall (freebsd-arm-cgo), const DLT_PPI = 192 pkg syscall (freebsd-arm-cgo), const DLT_PPP = 9 pkg syscall (freebsd-arm-cgo), const DLT_PPP_BSDOS = 16 pkg syscall (freebsd-arm-cgo), const DLT_PPP_ETHER = 51 pkg syscall (freebsd-arm-cgo), const DLT_PPP_PPPD = 166 pkg syscall (freebsd-arm-cgo), const DLT_PPP_SERIAL = 50 pkg syscall (freebsd-arm-cgo), const DLT_PPP_WITH_DIR = 204 pkg syscall (freebsd-arm-cgo), const DLT_PPP_WITH_DIRECTION = 166 pkg syscall (freebsd-arm-cgo), const DLT_PRISM_HEADER = 119 pkg syscall (freebsd-arm-cgo), const DLT_PRONET = 4 pkg syscall (freebsd-arm-cgo), const DLT_RAIF1 = 198 pkg syscall (freebsd-arm-cgo), const DLT_RAW = 12 pkg syscall (freebsd-arm-cgo), const DLT_RIO = 124 pkg syscall (freebsd-arm-cgo), const DLT_SCCP = 142 pkg syscall (freebsd-arm-cgo), const DLT_SITA = 196 pkg syscall (freebsd-arm-cgo), const DLT_SLIP = 8 pkg syscall (freebsd-arm-cgo), const DLT_SLIP_BSDOS = 15 pkg syscall (freebsd-arm-cgo), const DLT_STANAG_5066_D_PDU = 237 pkg syscall (freebsd-arm-cgo), const DLT_SUNATM = 123 pkg syscall (freebsd-arm-cgo), const DLT_SYMANTEC_FIREWALL = 99 pkg syscall (freebsd-arm-cgo), const DLT_TZSP = 128 pkg syscall (freebsd-arm-cgo), const DLT_USB = 186 pkg syscall (freebsd-arm-cgo), const DLT_USB_LINUX = 189 pkg syscall (freebsd-arm-cgo), const DLT_USB_LINUX_MMAPPED = 220 pkg syscall (freebsd-arm-cgo), const DLT_USER0 = 147 pkg syscall (freebsd-arm-cgo), const DLT_USER1 = 148 pkg syscall (freebsd-arm-cgo), const DLT_USER10 = 157 pkg syscall (freebsd-arm-cgo), const DLT_USER11 = 158 pkg syscall (freebsd-arm-cgo), const DLT_USER12 = 159 pkg syscall (freebsd-arm-cgo), const DLT_USER13 = 160 pkg syscall (freebsd-arm-cgo), const DLT_USER14 = 161 pkg syscall (freebsd-arm-cgo), const DLT_USER15 = 162 pkg syscall (freebsd-arm-cgo), const DLT_USER2 = 149 pkg syscall (freebsd-arm-cgo), const DLT_USER3 = 150 pkg syscall (freebsd-arm-cgo), const DLT_USER4 = 151 pkg syscall (freebsd-arm-cgo), const DLT_USER5 = 152 pkg syscall (freebsd-arm-cgo), const DLT_USER6 = 153 pkg syscall (freebsd-arm-cgo), const DLT_USER7 = 154 pkg syscall (freebsd-arm-cgo), const DLT_USER8 = 155 pkg syscall (freebsd-arm-cgo), const DLT_USER9 = 156 pkg syscall (freebsd-arm-cgo), const DLT_WIHART = 223 pkg syscall (freebsd-arm-cgo), const DLT_X2E_SERIAL = 213 pkg syscall (freebsd-arm-cgo), const DLT_X2E_XORAYA = 214 pkg syscall (freebsd-arm-cgo), const DT_BLK = 6 pkg syscall (freebsd-arm-cgo), const DT_CHR = 2 pkg syscall (freebsd-arm-cgo), const DT_DIR = 4 pkg syscall (freebsd-arm-cgo), const DT_FIFO = 1 pkg syscall (freebsd-arm-cgo), const DT_LNK = 10 pkg syscall (freebsd-arm-cgo), const DT_REG = 8 pkg syscall (freebsd-arm-cgo), const DT_SOCK = 12 pkg syscall (freebsd-arm-cgo), const DT_UNKNOWN = 0 pkg syscall (freebsd-arm-cgo), const DT_WHT = 14 pkg syscall (freebsd-arm-cgo), const E2BIG = 7 pkg syscall (freebsd-arm-cgo), const EACCES = 13 pkg syscall (freebsd-arm-cgo), const EADDRINUSE = 48 pkg syscall (freebsd-arm-cgo), const EADDRNOTAVAIL = 49 pkg syscall (freebsd-arm-cgo), const EAFNOSUPPORT = 47 pkg syscall (freebsd-arm-cgo), const EAGAIN = 35 pkg syscall (freebsd-arm-cgo), const EALREADY = 37 pkg syscall (freebsd-arm-cgo), const EAUTH = 80 pkg syscall (freebsd-arm-cgo), const EBADF = 9 pkg syscall (freebsd-arm-cgo), const EBADMSG = 89 pkg syscall (freebsd-arm-cgo), const EBADRPC = 72 pkg syscall (freebsd-arm-cgo), const EBUSY = 16 pkg syscall (freebsd-arm-cgo), const ECANCELED = 85 pkg syscall (freebsd-arm-cgo), const ECAPMODE = 94 pkg syscall (freebsd-arm-cgo), const ECHILD = 10 pkg syscall (freebsd-arm-cgo), const ECHO = 8 pkg syscall (freebsd-arm-cgo), const ECHOCTL = 64 pkg syscall (freebsd-arm-cgo), const ECHOE = 2 pkg syscall (freebsd-arm-cgo), const ECHOK = 4 pkg syscall (freebsd-arm-cgo), const ECHOKE = 1 pkg syscall (freebsd-arm-cgo), const ECHONL = 16 pkg syscall (freebsd-arm-cgo), const ECHOPRT = 32 pkg syscall (freebsd-arm-cgo), const ECONNABORTED = 53 pkg syscall (freebsd-arm-cgo), const ECONNREFUSED = 61 pkg syscall (freebsd-arm-cgo), const ECONNRESET = 54 pkg syscall (freebsd-arm-cgo), const EDEADLK = 11 pkg syscall (freebsd-arm-cgo), const EDESTADDRREQ = 39 pkg syscall (freebsd-arm-cgo), const EDOM = 33 pkg syscall (freebsd-arm-cgo), const EDOOFUS = 88 pkg syscall (freebsd-arm-cgo), const EDQUOT = 69 pkg syscall (freebsd-arm-cgo), const EEXIST = 17 pkg syscall (freebsd-arm-cgo), const EFAULT = 14 pkg syscall (freebsd-arm-cgo), const EFBIG = 27 pkg syscall (freebsd-arm-cgo), const EFTYPE = 79 pkg syscall (freebsd-arm-cgo), const EHOSTDOWN = 64 pkg syscall (freebsd-arm-cgo), const EHOSTUNREACH = 65 pkg syscall (freebsd-arm-cgo), const EIDRM = 82 pkg syscall (freebsd-arm-cgo), const EILSEQ = 86 pkg syscall (freebsd-arm-cgo), const EINPROGRESS = 36 pkg syscall (freebsd-arm-cgo), const EINTR = 4 pkg syscall (freebsd-arm-cgo), const EINVAL = 22 pkg syscall (freebsd-arm-cgo), const EIO = 5 pkg syscall (freebsd-arm-cgo), const EISCONN = 56 pkg syscall (freebsd-arm-cgo), const EISDIR = 21 pkg syscall (freebsd-arm-cgo), const ELAST = 94 pkg syscall (freebsd-arm-cgo), const ELOOP = 62 pkg syscall (freebsd-arm-cgo), const EMFILE = 24 pkg syscall (freebsd-arm-cgo), const EMLINK = 31 pkg syscall (freebsd-arm-cgo), const EMSGSIZE = 40 pkg syscall (freebsd-arm-cgo), const EMULTIHOP = 90 pkg syscall (freebsd-arm-cgo), const ENAMETOOLONG = 63 pkg syscall (freebsd-arm-cgo), const ENEEDAUTH = 81 pkg syscall (freebsd-arm-cgo), const ENETDOWN = 50 pkg syscall (freebsd-arm-cgo), const ENETRESET = 52 pkg syscall (freebsd-arm-cgo), const ENETUNREACH = 51 pkg syscall (freebsd-arm-cgo), const ENFILE = 23 pkg syscall (freebsd-arm-cgo), const ENOATTR = 87 pkg syscall (freebsd-arm-cgo), const ENOBUFS = 55 pkg syscall (freebsd-arm-cgo), const ENODEV = 19 pkg syscall (freebsd-arm-cgo), const ENOEXEC = 8 pkg syscall (freebsd-arm-cgo), const ENOLCK = 77 pkg syscall (freebsd-arm-cgo), const ENOLINK = 91 pkg syscall (freebsd-arm-cgo), const ENOMEM = 12 pkg syscall (freebsd-arm-cgo), const ENOMSG = 83 pkg syscall (freebsd-arm-cgo), const ENOPROTOOPT = 42 pkg syscall (freebsd-arm-cgo), const ENOSPC = 28 pkg syscall (freebsd-arm-cgo), const ENOSYS = 78 pkg syscall (freebsd-arm-cgo), const ENOTBLK = 15 pkg syscall (freebsd-arm-cgo), const ENOTCAPABLE = 93 pkg syscall (freebsd-arm-cgo), const ENOTCONN = 57 pkg syscall (freebsd-arm-cgo), const ENOTDIR = 20 pkg syscall (freebsd-arm-cgo), const ENOTEMPTY = 66 pkg syscall (freebsd-arm-cgo), const ENOTSOCK = 38 pkg syscall (freebsd-arm-cgo), const ENOTSUP = 45 pkg syscall (freebsd-arm-cgo), const ENOTTY = 25 pkg syscall (freebsd-arm-cgo), const ENXIO = 6 pkg syscall (freebsd-arm-cgo), const EOPNOTSUPP = 45 pkg syscall (freebsd-arm-cgo), const EOVERFLOW = 84 pkg syscall (freebsd-arm-cgo), const EPERM = 1 pkg syscall (freebsd-arm-cgo), const EPFNOSUPPORT = 46 pkg syscall (freebsd-arm-cgo), const EPIPE = 32 pkg syscall (freebsd-arm-cgo), const EPROCLIM = 67 pkg syscall (freebsd-arm-cgo), const EPROCUNAVAIL = 76 pkg syscall (freebsd-arm-cgo), const EPROGMISMATCH = 75 pkg syscall (freebsd-arm-cgo), const EPROGUNAVAIL = 74 pkg syscall (freebsd-arm-cgo), const EPROTO = 92 pkg syscall (freebsd-arm-cgo), const EPROTONOSUPPORT = 43 pkg syscall (freebsd-arm-cgo), const EPROTOTYPE = 41 pkg syscall (freebsd-arm-cgo), const ERANGE = 34 pkg syscall (freebsd-arm-cgo), const EREMOTE = 71 pkg syscall (freebsd-arm-cgo), const EROFS = 30 pkg syscall (freebsd-arm-cgo), const ERPCMISMATCH = 73 pkg syscall (freebsd-arm-cgo), const ESHUTDOWN = 58 pkg syscall (freebsd-arm-cgo), const ESOCKTNOSUPPORT = 44 pkg syscall (freebsd-arm-cgo), const ESPIPE = 29 pkg syscall (freebsd-arm-cgo), const ESRCH = 3 pkg syscall (freebsd-arm-cgo), const ESTALE = 70 pkg syscall (freebsd-arm-cgo), const ETIMEDOUT = 60 pkg syscall (freebsd-arm-cgo), const ETOOMANYREFS = 59 pkg syscall (freebsd-arm-cgo), const ETXTBSY = 26 pkg syscall (freebsd-arm-cgo), const EUSERS = 68 pkg syscall (freebsd-arm-cgo), const EVFILT_AIO = -3 pkg syscall (freebsd-arm-cgo), const EVFILT_FS = -9 pkg syscall (freebsd-arm-cgo), const EVFILT_LIO = -10 pkg syscall (freebsd-arm-cgo), const EVFILT_PROC = -5 pkg syscall (freebsd-arm-cgo), const EVFILT_READ = -1 pkg syscall (freebsd-arm-cgo), const EVFILT_SIGNAL = -6 pkg syscall (freebsd-arm-cgo), const EVFILT_SYSCOUNT = 11 pkg syscall (freebsd-arm-cgo), const EVFILT_TIMER = -7 pkg syscall (freebsd-arm-cgo), const EVFILT_USER = -11 pkg syscall (freebsd-arm-cgo), const EVFILT_VNODE = -4 pkg syscall (freebsd-arm-cgo), const EVFILT_WRITE = -2 pkg syscall (freebsd-arm-cgo), const EV_ADD = 1 pkg syscall (freebsd-arm-cgo), const EV_CLEAR = 32 pkg syscall (freebsd-arm-cgo), const EV_DELETE = 2 pkg syscall (freebsd-arm-cgo), const EV_DISABLE = 8 pkg syscall (freebsd-arm-cgo), const EV_DISPATCH = 128 pkg syscall (freebsd-arm-cgo), const EV_ENABLE = 4 pkg syscall (freebsd-arm-cgo), const EV_EOF = 32768 pkg syscall (freebsd-arm-cgo), const EV_ERROR = 16384 pkg syscall (freebsd-arm-cgo), const EV_FLAG1 = 8192 pkg syscall (freebsd-arm-cgo), const EV_ONESHOT = 16 pkg syscall (freebsd-arm-cgo), const EV_RECEIPT = 64 pkg syscall (freebsd-arm-cgo), const EV_SYSFLAGS = 61440 pkg syscall (freebsd-arm-cgo), const EWOULDBLOCK = 35 pkg syscall (freebsd-arm-cgo), const EXDEV = 18 pkg syscall (freebsd-arm-cgo), const EXTA = 19200 pkg syscall (freebsd-arm-cgo), const EXTB = 38400 pkg syscall (freebsd-arm-cgo), const EXTPROC = 2048 pkg syscall (freebsd-arm-cgo), const FD_CLOEXEC = 1 pkg syscall (freebsd-arm-cgo), const FD_SETSIZE = 1024 pkg syscall (freebsd-arm-cgo), const FLUSHO = 8388608 pkg syscall (freebsd-arm-cgo), const F_CANCEL = 5 pkg syscall (freebsd-arm-cgo), const F_DUP2FD = 10 pkg syscall (freebsd-arm-cgo), const F_DUP2FD_CLOEXEC = 18 pkg syscall (freebsd-arm-cgo), const F_DUPFD = 0 pkg syscall (freebsd-arm-cgo), const F_DUPFD_CLOEXEC = 17 pkg syscall (freebsd-arm-cgo), const F_GETFD = 1 pkg syscall (freebsd-arm-cgo), const F_GETFL = 3 pkg syscall (freebsd-arm-cgo), const F_GETLK = 11 pkg syscall (freebsd-arm-cgo), const F_GETOWN = 5 pkg syscall (freebsd-arm-cgo), const F_OGETLK = 7 pkg syscall (freebsd-arm-cgo), const F_OK = 0 pkg syscall (freebsd-arm-cgo), const F_OSETLK = 8 pkg syscall (freebsd-arm-cgo), const F_OSETLKW = 9 pkg syscall (freebsd-arm-cgo), const F_RDAHEAD = 16 pkg syscall (freebsd-arm-cgo), const F_RDLCK = 1 pkg syscall (freebsd-arm-cgo), const F_READAHEAD = 15 pkg syscall (freebsd-arm-cgo), const F_SETFD = 2 pkg syscall (freebsd-arm-cgo), const F_SETFL = 4 pkg syscall (freebsd-arm-cgo), const F_SETLK = 12 pkg syscall (freebsd-arm-cgo), const F_SETLKW = 13 pkg syscall (freebsd-arm-cgo), const F_SETLK_REMOTE = 14 pkg syscall (freebsd-arm-cgo), const F_SETOWN = 6 pkg syscall (freebsd-arm-cgo), const F_UNLCK = 2 pkg syscall (freebsd-arm-cgo), const F_UNLCKSYS = 4 pkg syscall (freebsd-arm-cgo), const F_WRLCK = 3 pkg syscall (freebsd-arm-cgo), const HUPCL = 16384 pkg syscall (freebsd-arm-cgo), const ICANON = 256 pkg syscall (freebsd-arm-cgo), const ICRNL = 256 pkg syscall (freebsd-arm-cgo), const IEXTEN = 1024 pkg syscall (freebsd-arm-cgo), const IFAN_ARRIVAL = 0 pkg syscall (freebsd-arm-cgo), const IFAN_DEPARTURE = 1 pkg syscall (freebsd-arm-cgo), const IFF_ALLMULTI = 512 pkg syscall (freebsd-arm-cgo), const IFF_ALTPHYS = 16384 pkg syscall (freebsd-arm-cgo), const IFF_CANTCHANGE = 2199410 pkg syscall (freebsd-arm-cgo), const IFF_CANTCONFIG = 65536 pkg syscall (freebsd-arm-cgo), const IFF_DEBUG = 4 pkg syscall (freebsd-arm-cgo), const IFF_DRV_OACTIVE = 1024 pkg syscall (freebsd-arm-cgo), const IFF_DRV_RUNNING = 64 pkg syscall (freebsd-arm-cgo), const IFF_DYING = 2097152 pkg syscall (freebsd-arm-cgo), const IFF_LINK0 = 4096 pkg syscall (freebsd-arm-cgo), const IFF_LINK1 = 8192 pkg syscall (freebsd-arm-cgo), const IFF_LINK2 = 16384 pkg syscall (freebsd-arm-cgo), const IFF_LOOPBACK = 8 pkg syscall (freebsd-arm-cgo), const IFF_MONITOR = 262144 pkg syscall (freebsd-arm-cgo), const IFF_MULTICAST = 32768 pkg syscall (freebsd-arm-cgo), const IFF_NOARP = 128 pkg syscall (freebsd-arm-cgo), const IFF_OACTIVE = 1024 pkg syscall (freebsd-arm-cgo), const IFF_POINTOPOINT = 16 pkg syscall (freebsd-arm-cgo), const IFF_PPROMISC = 131072 pkg syscall (freebsd-arm-cgo), const IFF_PROMISC = 256 pkg syscall (freebsd-arm-cgo), const IFF_RENAMING = 4194304 pkg syscall (freebsd-arm-cgo), const IFF_RUNNING = 64 pkg syscall (freebsd-arm-cgo), const IFF_SIMPLEX = 2048 pkg syscall (freebsd-arm-cgo), const IFF_SMART = 32 pkg syscall (freebsd-arm-cgo), const IFF_STATICARP = 524288 pkg syscall (freebsd-arm-cgo), const IFNAMSIZ = 16 pkg syscall (freebsd-arm-cgo), const IFT_1822 = 2 pkg syscall (freebsd-arm-cgo), const IFT_A12MPPSWITCH = 130 pkg syscall (freebsd-arm-cgo), const IFT_AAL2 = 187 pkg syscall (freebsd-arm-cgo), const IFT_AAL5 = 49 pkg syscall (freebsd-arm-cgo), const IFT_ADSL = 94 pkg syscall (freebsd-arm-cgo), const IFT_AFLANE8023 = 59 pkg syscall (freebsd-arm-cgo), const IFT_AFLANE8025 = 60 pkg syscall (freebsd-arm-cgo), const IFT_ARAP = 88 pkg syscall (freebsd-arm-cgo), const IFT_ARCNET = 35 pkg syscall (freebsd-arm-cgo), const IFT_ARCNETPLUS = 36 pkg syscall (freebsd-arm-cgo), const IFT_ASYNC = 84 pkg syscall (freebsd-arm-cgo), const IFT_ATM = 37 pkg syscall (freebsd-arm-cgo), const IFT_ATMDXI = 105 pkg syscall (freebsd-arm-cgo), const IFT_ATMFUNI = 106 pkg syscall (freebsd-arm-cgo), const IFT_ATMIMA = 107 pkg syscall (freebsd-arm-cgo), const IFT_ATMLOGICAL = 80 pkg syscall (freebsd-arm-cgo), const IFT_ATMRADIO = 189 pkg syscall (freebsd-arm-cgo), const IFT_ATMSUBINTERFACE = 134 pkg syscall (freebsd-arm-cgo), const IFT_ATMVCIENDPT = 194 pkg syscall (freebsd-arm-cgo), const IFT_ATMVIRTUAL = 149 pkg syscall (freebsd-arm-cgo), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (freebsd-arm-cgo), const IFT_BRIDGE = 209 pkg syscall (freebsd-arm-cgo), const IFT_BSC = 83 pkg syscall (freebsd-arm-cgo), const IFT_CCTEMUL = 61 pkg syscall (freebsd-arm-cgo), const IFT_CEPT = 19 pkg syscall (freebsd-arm-cgo), const IFT_CES = 133 pkg syscall (freebsd-arm-cgo), const IFT_CHANNEL = 70 pkg syscall (freebsd-arm-cgo), const IFT_CNR = 85 pkg syscall (freebsd-arm-cgo), const IFT_COFFEE = 132 pkg syscall (freebsd-arm-cgo), const IFT_COMPOSITELINK = 155 pkg syscall (freebsd-arm-cgo), const IFT_DCN = 141 pkg syscall (freebsd-arm-cgo), const IFT_DIGITALPOWERLINE = 138 pkg syscall (freebsd-arm-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (freebsd-arm-cgo), const IFT_DLSW = 74 pkg syscall (freebsd-arm-cgo), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (freebsd-arm-cgo), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (freebsd-arm-cgo), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (freebsd-arm-cgo), const IFT_DS0 = 81 pkg syscall (freebsd-arm-cgo), const IFT_DS0BUNDLE = 82 pkg syscall (freebsd-arm-cgo), const IFT_DS1FDL = 170 pkg syscall (freebsd-arm-cgo), const IFT_DS3 = 30 pkg syscall (freebsd-arm-cgo), const IFT_DTM = 140 pkg syscall (freebsd-arm-cgo), const IFT_DVBASILN = 172 pkg syscall (freebsd-arm-cgo), const IFT_DVBASIOUT = 173 pkg syscall (freebsd-arm-cgo), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (freebsd-arm-cgo), const IFT_DVBRCCMACLAYER = 146 pkg syscall (freebsd-arm-cgo), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (freebsd-arm-cgo), const IFT_ENC = 244 pkg syscall (freebsd-arm-cgo), const IFT_EON = 25 pkg syscall (freebsd-arm-cgo), const IFT_EPLRS = 87 pkg syscall (freebsd-arm-cgo), const IFT_ESCON = 73 pkg syscall (freebsd-arm-cgo), const IFT_ETHER = 6 pkg syscall (freebsd-arm-cgo), const IFT_FAITH = 242 pkg syscall (freebsd-arm-cgo), const IFT_FAST = 125 pkg syscall (freebsd-arm-cgo), const IFT_FASTETHER = 62 pkg syscall (freebsd-arm-cgo), const IFT_FASTETHERFX = 69 pkg syscall (freebsd-arm-cgo), const IFT_FDDI = 15 pkg syscall (freebsd-arm-cgo), const IFT_FIBRECHANNEL = 56 pkg syscall (freebsd-arm-cgo), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (freebsd-arm-cgo), const IFT_FRAMERELAYMPI = 92 pkg syscall (freebsd-arm-cgo), const IFT_FRDLCIENDPT = 193 pkg syscall (freebsd-arm-cgo), const IFT_FRELAY = 32 pkg syscall (freebsd-arm-cgo), const IFT_FRELAYDCE = 44 pkg syscall (freebsd-arm-cgo), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (freebsd-arm-cgo), const IFT_FRFORWARD = 158 pkg syscall (freebsd-arm-cgo), const IFT_G703AT2MB = 67 pkg syscall (freebsd-arm-cgo), const IFT_G703AT64K = 66 pkg syscall (freebsd-arm-cgo), const IFT_GIF = 240 pkg syscall (freebsd-arm-cgo), const IFT_GIGABITETHERNET = 117 pkg syscall (freebsd-arm-cgo), const IFT_GR303IDT = 178 pkg syscall (freebsd-arm-cgo), const IFT_GR303RDT = 177 pkg syscall (freebsd-arm-cgo), const IFT_H323GATEKEEPER = 164 pkg syscall (freebsd-arm-cgo), const IFT_H323PROXY = 165 pkg syscall (freebsd-arm-cgo), const IFT_HDH1822 = 3 pkg syscall (freebsd-arm-cgo), const IFT_HDLC = 118 pkg syscall (freebsd-arm-cgo), const IFT_HDSL2 = 168 pkg syscall (freebsd-arm-cgo), const IFT_HIPERLAN2 = 183 pkg syscall (freebsd-arm-cgo), const IFT_HIPPI = 47 pkg syscall (freebsd-arm-cgo), const IFT_HIPPIINTERFACE = 57 pkg syscall (freebsd-arm-cgo), const IFT_HOSTPAD = 90 pkg syscall (freebsd-arm-cgo), const IFT_HSSI = 46 pkg syscall (freebsd-arm-cgo), const IFT_HY = 14 pkg syscall (freebsd-arm-cgo), const IFT_IBM370PARCHAN = 72 pkg syscall (freebsd-arm-cgo), const IFT_IDSL = 154 pkg syscall (freebsd-arm-cgo), const IFT_IEEE1394 = 144 pkg syscall (freebsd-arm-cgo), const IFT_IEEE80211 = 71 pkg syscall (freebsd-arm-cgo), const IFT_IEEE80212 = 55 pkg syscall (freebsd-arm-cgo), const IFT_IEEE8023ADLAG = 161 pkg syscall (freebsd-arm-cgo), const IFT_IFGSN = 145 pkg syscall (freebsd-arm-cgo), const IFT_IMT = 190 pkg syscall (freebsd-arm-cgo), const IFT_INFINIBAND = 199 pkg syscall (freebsd-arm-cgo), const IFT_INTERLEAVE = 124 pkg syscall (freebsd-arm-cgo), const IFT_IP = 126 pkg syscall (freebsd-arm-cgo), const IFT_IPFORWARD = 142 pkg syscall (freebsd-arm-cgo), const IFT_IPOVERATM = 114 pkg syscall (freebsd-arm-cgo), const IFT_IPOVERCDLC = 109 pkg syscall (freebsd-arm-cgo), const IFT_IPOVERCLAW = 110 pkg syscall (freebsd-arm-cgo), const IFT_IPSWITCH = 78 pkg syscall (freebsd-arm-cgo), const IFT_IPXIP = 249 pkg syscall (freebsd-arm-cgo), const IFT_ISDN = 63 pkg syscall (freebsd-arm-cgo), const IFT_ISDNBASIC = 20 pkg syscall (freebsd-arm-cgo), const IFT_ISDNPRIMARY = 21 pkg syscall (freebsd-arm-cgo), const IFT_ISDNS = 75 pkg syscall (freebsd-arm-cgo), const IFT_ISDNU = 76 pkg syscall (freebsd-arm-cgo), const IFT_ISO88022LLC = 41 pkg syscall (freebsd-arm-cgo), const IFT_ISO88023 = 7 pkg syscall (freebsd-arm-cgo), const IFT_ISO88024 = 8 pkg syscall (freebsd-arm-cgo), const IFT_ISO88025 = 9 pkg syscall (freebsd-arm-cgo), const IFT_ISO88025CRFPINT = 98 pkg syscall (freebsd-arm-cgo), const IFT_ISO88025DTR = 86 pkg syscall (freebsd-arm-cgo), const IFT_ISO88025FIBER = 115 pkg syscall (freebsd-arm-cgo), const IFT_ISO88026 = 10 pkg syscall (freebsd-arm-cgo), const IFT_ISUP = 179 pkg syscall (freebsd-arm-cgo), const IFT_L2VLAN = 135 pkg syscall (freebsd-arm-cgo), const IFT_L3IPVLAN = 136 pkg syscall (freebsd-arm-cgo), const IFT_L3IPXVLAN = 137 pkg syscall (freebsd-arm-cgo), const IFT_LAPB = 16 pkg syscall (freebsd-arm-cgo), const IFT_LAPD = 77 pkg syscall (freebsd-arm-cgo), const IFT_LAPF = 119 pkg syscall (freebsd-arm-cgo), const IFT_LOCALTALK = 42 pkg syscall (freebsd-arm-cgo), const IFT_LOOP = 24 pkg syscall (freebsd-arm-cgo), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (freebsd-arm-cgo), const IFT_MFSIGLINK = 167 pkg syscall (freebsd-arm-cgo), const IFT_MIOX25 = 38 pkg syscall (freebsd-arm-cgo), const IFT_MODEM = 48 pkg syscall (freebsd-arm-cgo), const IFT_MPC = 113 pkg syscall (freebsd-arm-cgo), const IFT_MPLS = 166 pkg syscall (freebsd-arm-cgo), const IFT_MPLSTUNNEL = 150 pkg syscall (freebsd-arm-cgo), const IFT_MSDSL = 143 pkg syscall (freebsd-arm-cgo), const IFT_MVL = 191 pkg syscall (freebsd-arm-cgo), const IFT_MYRINET = 99 pkg syscall (freebsd-arm-cgo), const IFT_NFAS = 175 pkg syscall (freebsd-arm-cgo), const IFT_NSIP = 27 pkg syscall (freebsd-arm-cgo), const IFT_OPTICALCHANNEL = 195 pkg syscall (freebsd-arm-cgo), const IFT_OPTICALTRANSPORT = 196 pkg syscall (freebsd-arm-cgo), const IFT_OTHER = 1 pkg syscall (freebsd-arm-cgo), const IFT_P10 = 12 pkg syscall (freebsd-arm-cgo), const IFT_P80 = 13 pkg syscall (freebsd-arm-cgo), const IFT_PARA = 34 pkg syscall (freebsd-arm-cgo), const IFT_PFLOG = 246 pkg syscall (freebsd-arm-cgo), const IFT_PFSYNC = 247 pkg syscall (freebsd-arm-cgo), const IFT_PLC = 174 pkg syscall (freebsd-arm-cgo), const IFT_POS = 171 pkg syscall (freebsd-arm-cgo), const IFT_PPP = 23 pkg syscall (freebsd-arm-cgo), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (freebsd-arm-cgo), const IFT_PROPBWAP2MP = 184 pkg syscall (freebsd-arm-cgo), const IFT_PROPCNLS = 89 pkg syscall (freebsd-arm-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (freebsd-arm-cgo), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (freebsd-arm-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (freebsd-arm-cgo), const IFT_PROPMUX = 54 pkg syscall (freebsd-arm-cgo), const IFT_PROPVIRTUAL = 53 pkg syscall (freebsd-arm-cgo), const IFT_PROPWIRELESSP2P = 157 pkg syscall (freebsd-arm-cgo), const IFT_PTPSERIAL = 22 pkg syscall (freebsd-arm-cgo), const IFT_PVC = 241 pkg syscall (freebsd-arm-cgo), const IFT_QLLC = 68 pkg syscall (freebsd-arm-cgo), const IFT_RADIOMAC = 188 pkg syscall (freebsd-arm-cgo), const IFT_RADSL = 95 pkg syscall (freebsd-arm-cgo), const IFT_REACHDSL = 192 pkg syscall (freebsd-arm-cgo), const IFT_RFC1483 = 159 pkg syscall (freebsd-arm-cgo), const IFT_RS232 = 33 pkg syscall (freebsd-arm-cgo), const IFT_RSRB = 79 pkg syscall (freebsd-arm-cgo), const IFT_SDLC = 17 pkg syscall (freebsd-arm-cgo), const IFT_SDSL = 96 pkg syscall (freebsd-arm-cgo), const IFT_SHDSL = 169 pkg syscall (freebsd-arm-cgo), const IFT_SIP = 31 pkg syscall (freebsd-arm-cgo), const IFT_SLIP = 28 pkg syscall (freebsd-arm-cgo), const IFT_SMDSDXI = 43 pkg syscall (freebsd-arm-cgo), const IFT_SMDSICIP = 52 pkg syscall (freebsd-arm-cgo), const IFT_SONET = 39 pkg syscall (freebsd-arm-cgo), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (freebsd-arm-cgo), const IFT_SONETPATH = 50 pkg syscall (freebsd-arm-cgo), const IFT_SONETVT = 51 pkg syscall (freebsd-arm-cgo), const IFT_SRP = 151 pkg syscall (freebsd-arm-cgo), const IFT_SS7SIGLINK = 156 pkg syscall (freebsd-arm-cgo), const IFT_STACKTOSTACK = 111 pkg syscall (freebsd-arm-cgo), const IFT_STARLAN = 11 pkg syscall (freebsd-arm-cgo), const IFT_STF = 215 pkg syscall (freebsd-arm-cgo), const IFT_T1 = 18 pkg syscall (freebsd-arm-cgo), const IFT_TDLC = 116 pkg syscall (freebsd-arm-cgo), const IFT_TERMPAD = 91 pkg syscall (freebsd-arm-cgo), const IFT_TR008 = 176 pkg syscall (freebsd-arm-cgo), const IFT_TRANSPHDLC = 123 pkg syscall (freebsd-arm-cgo), const IFT_TUNNEL = 131 pkg syscall (freebsd-arm-cgo), const IFT_ULTRA = 29 pkg syscall (freebsd-arm-cgo), const IFT_USB = 160 pkg syscall (freebsd-arm-cgo), const IFT_V11 = 64 pkg syscall (freebsd-arm-cgo), const IFT_V35 = 45 pkg syscall (freebsd-arm-cgo), const IFT_V36 = 65 pkg syscall (freebsd-arm-cgo), const IFT_V37 = 120 pkg syscall (freebsd-arm-cgo), const IFT_VDSL = 97 pkg syscall (freebsd-arm-cgo), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (freebsd-arm-cgo), const IFT_VOICEEM = 100 pkg syscall (freebsd-arm-cgo), const IFT_VOICEENCAP = 103 pkg syscall (freebsd-arm-cgo), const IFT_VOICEFXO = 101 pkg syscall (freebsd-arm-cgo), const IFT_VOICEFXS = 102 pkg syscall (freebsd-arm-cgo), const IFT_VOICEOVERATM = 152 pkg syscall (freebsd-arm-cgo), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (freebsd-arm-cgo), const IFT_VOICEOVERIP = 104 pkg syscall (freebsd-arm-cgo), const IFT_X213 = 93 pkg syscall (freebsd-arm-cgo), const IFT_X25 = 5 pkg syscall (freebsd-arm-cgo), const IFT_X25DDN = 4 pkg syscall (freebsd-arm-cgo), const IFT_X25HUNTGROUP = 122 pkg syscall (freebsd-arm-cgo), const IFT_X25MLP = 121 pkg syscall (freebsd-arm-cgo), const IFT_X25PLE = 40 pkg syscall (freebsd-arm-cgo), const IFT_XETHER = 26 pkg syscall (freebsd-arm-cgo), const IGNBRK = 1 pkg syscall (freebsd-arm-cgo), const IGNCR = 128 pkg syscall (freebsd-arm-cgo), const IGNPAR = 4 pkg syscall (freebsd-arm-cgo), const IMAXBEL = 8192 pkg syscall (freebsd-arm-cgo), const INLCR = 64 pkg syscall (freebsd-arm-cgo), const INPCK = 16 pkg syscall (freebsd-arm-cgo), const IN_CLASSA_HOST = 16777215 pkg syscall (freebsd-arm-cgo), const IN_CLASSA_MAX = 128 pkg syscall (freebsd-arm-cgo), const IN_CLASSA_NET = 4278190080 pkg syscall (freebsd-arm-cgo), const IN_CLASSA_NSHIFT = 24 pkg syscall (freebsd-arm-cgo), const IN_CLASSB_HOST = 65535 pkg syscall (freebsd-arm-cgo), const IN_CLASSB_MAX = 65536 pkg syscall (freebsd-arm-cgo), const IN_CLASSB_NET = 4294901760 pkg syscall (freebsd-arm-cgo), const IN_CLASSB_NSHIFT = 16 pkg syscall (freebsd-arm-cgo), const IN_CLASSC_HOST = 255 pkg syscall (freebsd-arm-cgo), const IN_CLASSC_NET = 4294967040 pkg syscall (freebsd-arm-cgo), const IN_CLASSC_NSHIFT = 8 pkg syscall (freebsd-arm-cgo), const IN_CLASSD_HOST = 268435455 pkg syscall (freebsd-arm-cgo), const IN_CLASSD_NET = 4026531840 pkg syscall (freebsd-arm-cgo), const IN_CLASSD_NSHIFT = 28 pkg syscall (freebsd-arm-cgo), const IN_LOOPBACKNET = 127 pkg syscall (freebsd-arm-cgo), const IN_RFC3021_MASK = 4294967294 pkg syscall (freebsd-arm-cgo), const IPPROTO_3PC = 34 pkg syscall (freebsd-arm-cgo), const IPPROTO_ADFS = 68 pkg syscall (freebsd-arm-cgo), const IPPROTO_AH = 51 pkg syscall (freebsd-arm-cgo), const IPPROTO_AHIP = 61 pkg syscall (freebsd-arm-cgo), const IPPROTO_APES = 99 pkg syscall (freebsd-arm-cgo), const IPPROTO_ARGUS = 13 pkg syscall (freebsd-arm-cgo), const IPPROTO_AX25 = 93 pkg syscall (freebsd-arm-cgo), const IPPROTO_BHA = 49 pkg syscall (freebsd-arm-cgo), const IPPROTO_BLT = 30 pkg syscall (freebsd-arm-cgo), const IPPROTO_BRSATMON = 76 pkg syscall (freebsd-arm-cgo), const IPPROTO_CARP = 112 pkg syscall (freebsd-arm-cgo), const IPPROTO_CFTP = 62 pkg syscall (freebsd-arm-cgo), const IPPROTO_CHAOS = 16 pkg syscall (freebsd-arm-cgo), const IPPROTO_CMTP = 38 pkg syscall (freebsd-arm-cgo), const IPPROTO_CPHB = 73 pkg syscall (freebsd-arm-cgo), const IPPROTO_CPNX = 72 pkg syscall (freebsd-arm-cgo), const IPPROTO_DDP = 37 pkg syscall (freebsd-arm-cgo), const IPPROTO_DGP = 86 pkg syscall (freebsd-arm-cgo), const IPPROTO_DIVERT = 258 pkg syscall (freebsd-arm-cgo), const IPPROTO_DONE = 257 pkg syscall (freebsd-arm-cgo), const IPPROTO_DSTOPTS = 60 pkg syscall (freebsd-arm-cgo), const IPPROTO_EGP = 8 pkg syscall (freebsd-arm-cgo), const IPPROTO_EMCON = 14 pkg syscall (freebsd-arm-cgo), const IPPROTO_ENCAP = 98 pkg syscall (freebsd-arm-cgo), const IPPROTO_EON = 80 pkg syscall (freebsd-arm-cgo), const IPPROTO_ESP = 50 pkg syscall (freebsd-arm-cgo), const IPPROTO_ETHERIP = 97 pkg syscall (freebsd-arm-cgo), const IPPROTO_FRAGMENT = 44 pkg syscall (freebsd-arm-cgo), const IPPROTO_GGP = 3 pkg syscall (freebsd-arm-cgo), const IPPROTO_GMTP = 100 pkg syscall (freebsd-arm-cgo), const IPPROTO_GRE = 47 pkg syscall (freebsd-arm-cgo), const IPPROTO_HELLO = 63 pkg syscall (freebsd-arm-cgo), const IPPROTO_HMP = 20 pkg syscall (freebsd-arm-cgo), const IPPROTO_HOPOPTS = 0 pkg syscall (freebsd-arm-cgo), const IPPROTO_ICMP = 1 pkg syscall (freebsd-arm-cgo), const IPPROTO_ICMPV6 = 58 pkg syscall (freebsd-arm-cgo), const IPPROTO_IDP = 22 pkg syscall (freebsd-arm-cgo), const IPPROTO_IDPR = 35 pkg syscall (freebsd-arm-cgo), const IPPROTO_IDRP = 45 pkg syscall (freebsd-arm-cgo), const IPPROTO_IGMP = 2 pkg syscall (freebsd-arm-cgo), const IPPROTO_IGP = 85 pkg syscall (freebsd-arm-cgo), const IPPROTO_IGRP = 88 pkg syscall (freebsd-arm-cgo), const IPPROTO_IL = 40 pkg syscall (freebsd-arm-cgo), const IPPROTO_INLSP = 52 pkg syscall (freebsd-arm-cgo), const IPPROTO_INP = 32 pkg syscall (freebsd-arm-cgo), const IPPROTO_IPCOMP = 108 pkg syscall (freebsd-arm-cgo), const IPPROTO_IPCV = 71 pkg syscall (freebsd-arm-cgo), const IPPROTO_IPEIP = 94 pkg syscall (freebsd-arm-cgo), const IPPROTO_IPIP = 4 pkg syscall (freebsd-arm-cgo), const IPPROTO_IPPC = 67 pkg syscall (freebsd-arm-cgo), const IPPROTO_IPV4 = 4 pkg syscall (freebsd-arm-cgo), const IPPROTO_IRTP = 28 pkg syscall (freebsd-arm-cgo), const IPPROTO_KRYPTOLAN = 65 pkg syscall (freebsd-arm-cgo), const IPPROTO_LARP = 91 pkg syscall (freebsd-arm-cgo), const IPPROTO_LEAF1 = 25 pkg syscall (freebsd-arm-cgo), const IPPROTO_LEAF2 = 26 pkg syscall (freebsd-arm-cgo), const IPPROTO_MAX = 256 pkg syscall (freebsd-arm-cgo), const IPPROTO_MAXID = 52 pkg syscall (freebsd-arm-cgo), const IPPROTO_MEAS = 19 pkg syscall (freebsd-arm-cgo), const IPPROTO_MH = 135 pkg syscall (freebsd-arm-cgo), const IPPROTO_MHRP = 48 pkg syscall (freebsd-arm-cgo), const IPPROTO_MICP = 95 pkg syscall (freebsd-arm-cgo), const IPPROTO_MOBILE = 55 pkg syscall (freebsd-arm-cgo), const IPPROTO_MPLS = 137 pkg syscall (freebsd-arm-cgo), const IPPROTO_MTP = 92 pkg syscall (freebsd-arm-cgo), const IPPROTO_MUX = 18 pkg syscall (freebsd-arm-cgo), const IPPROTO_ND = 77 pkg syscall (freebsd-arm-cgo), const IPPROTO_NHRP = 54 pkg syscall (freebsd-arm-cgo), const IPPROTO_NONE = 59 pkg syscall (freebsd-arm-cgo), const IPPROTO_NSP = 31 pkg syscall (freebsd-arm-cgo), const IPPROTO_NVPII = 11 pkg syscall (freebsd-arm-cgo), const IPPROTO_OLD_DIVERT = 254 pkg syscall (freebsd-arm-cgo), const IPPROTO_OSPFIGP = 89 pkg syscall (freebsd-arm-cgo), const IPPROTO_PFSYNC = 240 pkg syscall (freebsd-arm-cgo), const IPPROTO_PGM = 113 pkg syscall (freebsd-arm-cgo), const IPPROTO_PIGP = 9 pkg syscall (freebsd-arm-cgo), const IPPROTO_PIM = 103 pkg syscall (freebsd-arm-cgo), const IPPROTO_PRM = 21 pkg syscall (freebsd-arm-cgo), const IPPROTO_PUP = 12 pkg syscall (freebsd-arm-cgo), const IPPROTO_PVP = 75 pkg syscall (freebsd-arm-cgo), const IPPROTO_RAW = 255 pkg syscall (freebsd-arm-cgo), const IPPROTO_RCCMON = 10 pkg syscall (freebsd-arm-cgo), const IPPROTO_RDP = 27 pkg syscall (freebsd-arm-cgo), const IPPROTO_ROUTING = 43 pkg syscall (freebsd-arm-cgo), const IPPROTO_RSVP = 46 pkg syscall (freebsd-arm-cgo), const IPPROTO_RVD = 66 pkg syscall (freebsd-arm-cgo), const IPPROTO_SATEXPAK = 64 pkg syscall (freebsd-arm-cgo), const IPPROTO_SATMON = 69 pkg syscall (freebsd-arm-cgo), const IPPROTO_SCCSP = 96 pkg syscall (freebsd-arm-cgo), const IPPROTO_SCTP = 132 pkg syscall (freebsd-arm-cgo), const IPPROTO_SDRP = 42 pkg syscall (freebsd-arm-cgo), const IPPROTO_SEND = 259 pkg syscall (freebsd-arm-cgo), const IPPROTO_SEP = 33 pkg syscall (freebsd-arm-cgo), const IPPROTO_SKIP = 57 pkg syscall (freebsd-arm-cgo), const IPPROTO_SPACER = 32767 pkg syscall (freebsd-arm-cgo), const IPPROTO_SRPC = 90 pkg syscall (freebsd-arm-cgo), const IPPROTO_ST = 7 pkg syscall (freebsd-arm-cgo), const IPPROTO_SVMTP = 82 pkg syscall (freebsd-arm-cgo), const IPPROTO_SWIPE = 53 pkg syscall (freebsd-arm-cgo), const IPPROTO_TCF = 87 pkg syscall (freebsd-arm-cgo), const IPPROTO_TLSP = 56 pkg syscall (freebsd-arm-cgo), const IPPROTO_TP = 29 pkg syscall (freebsd-arm-cgo), const IPPROTO_TPXX = 39 pkg syscall (freebsd-arm-cgo), const IPPROTO_TRUNK1 = 23 pkg syscall (freebsd-arm-cgo), const IPPROTO_TRUNK2 = 24 pkg syscall (freebsd-arm-cgo), const IPPROTO_TTP = 84 pkg syscall (freebsd-arm-cgo), const IPPROTO_VINES = 83 pkg syscall (freebsd-arm-cgo), const IPPROTO_VISA = 70 pkg syscall (freebsd-arm-cgo), const IPPROTO_VMTP = 81 pkg syscall (freebsd-arm-cgo), const IPPROTO_WBEXPAK = 79 pkg syscall (freebsd-arm-cgo), const IPPROTO_WBMON = 78 pkg syscall (freebsd-arm-cgo), const IPPROTO_WSN = 74 pkg syscall (freebsd-arm-cgo), const IPPROTO_XNET = 15 pkg syscall (freebsd-arm-cgo), const IPPROTO_XTP = 36 pkg syscall (freebsd-arm-cgo), const IPV6_AUTOFLOWLABEL = 59 pkg syscall (freebsd-arm-cgo), const IPV6_BINDANY = 64 pkg syscall (freebsd-arm-cgo), const IPV6_BINDV6ONLY = 27 pkg syscall (freebsd-arm-cgo), const IPV6_CHECKSUM = 26 pkg syscall (freebsd-arm-cgo), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (freebsd-arm-cgo), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (freebsd-arm-cgo), const IPV6_DEFHLIM = 64 pkg syscall (freebsd-arm-cgo), const IPV6_DONTFRAG = 62 pkg syscall (freebsd-arm-cgo), const IPV6_DSTOPTS = 50 pkg syscall (freebsd-arm-cgo), const IPV6_FAITH = 29 pkg syscall (freebsd-arm-cgo), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (freebsd-arm-cgo), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (freebsd-arm-cgo), const IPV6_FRAGTTL = 120 pkg syscall (freebsd-arm-cgo), const IPV6_FW_ADD = 30 pkg syscall (freebsd-arm-cgo), const IPV6_FW_DEL = 31 pkg syscall (freebsd-arm-cgo), const IPV6_FW_FLUSH = 32 pkg syscall (freebsd-arm-cgo), const IPV6_FW_GET = 34 pkg syscall (freebsd-arm-cgo), const IPV6_FW_ZERO = 33 pkg syscall (freebsd-arm-cgo), const IPV6_HLIMDEC = 1 pkg syscall (freebsd-arm-cgo), const IPV6_HOPLIMIT = 47 pkg syscall (freebsd-arm-cgo), const IPV6_HOPOPTS = 49 pkg syscall (freebsd-arm-cgo), const IPV6_IPSEC_POLICY = 28 pkg syscall (freebsd-arm-cgo), const IPV6_JOIN_GROUP = 12 pkg syscall (freebsd-arm-cgo), const IPV6_LEAVE_GROUP = 13 pkg syscall (freebsd-arm-cgo), const IPV6_MAXHLIM = 255 pkg syscall (freebsd-arm-cgo), const IPV6_MAXOPTHDR = 2048 pkg syscall (freebsd-arm-cgo), const IPV6_MAXPACKET = 65535 pkg syscall (freebsd-arm-cgo), const IPV6_MAX_GROUP_SRC_FILTER = 512 pkg syscall (freebsd-arm-cgo), const IPV6_MAX_MEMBERSHIPS = 4095 pkg syscall (freebsd-arm-cgo), const IPV6_MAX_SOCK_SRC_FILTER = 128 pkg syscall (freebsd-arm-cgo), const IPV6_MIN_MEMBERSHIPS = 31 pkg syscall (freebsd-arm-cgo), const IPV6_MMTU = 1280 pkg syscall (freebsd-arm-cgo), const IPV6_MSFILTER = 74 pkg syscall (freebsd-arm-cgo), const IPV6_MULTICAST_HOPS = 10 pkg syscall (freebsd-arm-cgo), const IPV6_MULTICAST_IF = 9 pkg syscall (freebsd-arm-cgo), const IPV6_MULTICAST_LOOP = 11 pkg syscall (freebsd-arm-cgo), const IPV6_NEXTHOP = 48 pkg syscall (freebsd-arm-cgo), const IPV6_PATHMTU = 44 pkg syscall (freebsd-arm-cgo), const IPV6_PKTINFO = 46 pkg syscall (freebsd-arm-cgo), const IPV6_PORTRANGE = 14 pkg syscall (freebsd-arm-cgo), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (freebsd-arm-cgo), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (freebsd-arm-cgo), const IPV6_PORTRANGE_LOW = 2 pkg syscall (freebsd-arm-cgo), const IPV6_PREFER_TEMPADDR = 63 pkg syscall (freebsd-arm-cgo), const IPV6_RECVDSTOPTS = 40 pkg syscall (freebsd-arm-cgo), const IPV6_RECVHOPLIMIT = 37 pkg syscall (freebsd-arm-cgo), const IPV6_RECVHOPOPTS = 39 pkg syscall (freebsd-arm-cgo), const IPV6_RECVPATHMTU = 43 pkg syscall (freebsd-arm-cgo), const IPV6_RECVPKTINFO = 36 pkg syscall (freebsd-arm-cgo), const IPV6_RECVRTHDR = 38 pkg syscall (freebsd-arm-cgo), const IPV6_RECVTCLASS = 57 pkg syscall (freebsd-arm-cgo), const IPV6_RTHDR = 51 pkg syscall (freebsd-arm-cgo), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (freebsd-arm-cgo), const IPV6_RTHDR_LOOSE = 0 pkg syscall (freebsd-arm-cgo), const IPV6_RTHDR_STRICT = 1 pkg syscall (freebsd-arm-cgo), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (freebsd-arm-cgo), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (freebsd-arm-cgo), const IPV6_TCLASS = 61 pkg syscall (freebsd-arm-cgo), const IPV6_UNICAST_HOPS = 4 pkg syscall (freebsd-arm-cgo), const IPV6_USE_MIN_MTU = 42 pkg syscall (freebsd-arm-cgo), const IPV6_V6ONLY = 27 pkg syscall (freebsd-arm-cgo), const IPV6_VERSION = 96 pkg syscall (freebsd-arm-cgo), const IPV6_VERSION_MASK = 240 pkg syscall (freebsd-arm-cgo), const IP_ADD_MEMBERSHIP = 12 pkg syscall (freebsd-arm-cgo), const IP_ADD_SOURCE_MEMBERSHIP = 70 pkg syscall (freebsd-arm-cgo), const IP_BINDANY = 24 pkg syscall (freebsd-arm-cgo), const IP_BLOCK_SOURCE = 72 pkg syscall (freebsd-arm-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (freebsd-arm-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (freebsd-arm-cgo), const IP_DF = 16384 pkg syscall (freebsd-arm-cgo), const IP_DONTFRAG = 67 pkg syscall (freebsd-arm-cgo), const IP_DROP_MEMBERSHIP = 13 pkg syscall (freebsd-arm-cgo), const IP_DROP_SOURCE_MEMBERSHIP = 71 pkg syscall (freebsd-arm-cgo), const IP_DUMMYNET3 = 49 pkg syscall (freebsd-arm-cgo), const IP_DUMMYNET_CONFIGURE = 60 pkg syscall (freebsd-arm-cgo), const IP_DUMMYNET_DEL = 61 pkg syscall (freebsd-arm-cgo), const IP_DUMMYNET_FLUSH = 62 pkg syscall (freebsd-arm-cgo), const IP_DUMMYNET_GET = 64 pkg syscall (freebsd-arm-cgo), const IP_FAITH = 22 pkg syscall (freebsd-arm-cgo), const IP_FW3 = 48 pkg syscall (freebsd-arm-cgo), const IP_FW_ADD = 50 pkg syscall (freebsd-arm-cgo), const IP_FW_DEL = 51 pkg syscall (freebsd-arm-cgo), const IP_FW_FLUSH = 52 pkg syscall (freebsd-arm-cgo), const IP_FW_GET = 54 pkg syscall (freebsd-arm-cgo), const IP_FW_NAT_CFG = 56 pkg syscall (freebsd-arm-cgo), const IP_FW_NAT_DEL = 57 pkg syscall (freebsd-arm-cgo), const IP_FW_NAT_GET_CONFIG = 58 pkg syscall (freebsd-arm-cgo), const IP_FW_NAT_GET_LOG = 59 pkg syscall (freebsd-arm-cgo), const IP_FW_RESETLOG = 55 pkg syscall (freebsd-arm-cgo), const IP_FW_TABLE_ADD = 40 pkg syscall (freebsd-arm-cgo), const IP_FW_TABLE_DEL = 41 pkg syscall (freebsd-arm-cgo), const IP_FW_TABLE_FLUSH = 42 pkg syscall (freebsd-arm-cgo), const IP_FW_TABLE_GETSIZE = 43 pkg syscall (freebsd-arm-cgo), const IP_FW_TABLE_LIST = 44 pkg syscall (freebsd-arm-cgo), const IP_FW_ZERO = 53 pkg syscall (freebsd-arm-cgo), const IP_HDRINCL = 2 pkg syscall (freebsd-arm-cgo), const IP_IPSEC_POLICY = 21 pkg syscall (freebsd-arm-cgo), const IP_MAXPACKET = 65535 pkg syscall (freebsd-arm-cgo), const IP_MAX_GROUP_SRC_FILTER = 512 pkg syscall (freebsd-arm-cgo), const IP_MAX_MEMBERSHIPS = 4095 pkg syscall (freebsd-arm-cgo), const IP_MAX_SOCK_MUTE_FILTER = 128 pkg syscall (freebsd-arm-cgo), const IP_MAX_SOCK_SRC_FILTER = 128 pkg syscall (freebsd-arm-cgo), const IP_MAX_SOURCE_FILTER = 1024 pkg syscall (freebsd-arm-cgo), const IP_MF = 8192 pkg syscall (freebsd-arm-cgo), const IP_MINTTL = 66 pkg syscall (freebsd-arm-cgo), const IP_MIN_MEMBERSHIPS = 31 pkg syscall (freebsd-arm-cgo), const IP_MSFILTER = 74 pkg syscall (freebsd-arm-cgo), const IP_MSS = 576 pkg syscall (freebsd-arm-cgo), const IP_MULTICAST_IF = 9 pkg syscall (freebsd-arm-cgo), const IP_MULTICAST_LOOP = 11 pkg syscall (freebsd-arm-cgo), const IP_MULTICAST_TTL = 10 pkg syscall (freebsd-arm-cgo), const IP_MULTICAST_VIF = 14 pkg syscall (freebsd-arm-cgo), const IP_OFFMASK = 8191 pkg syscall (freebsd-arm-cgo), const IP_ONESBCAST = 23 pkg syscall (freebsd-arm-cgo), const IP_OPTIONS = 1 pkg syscall (freebsd-arm-cgo), const IP_PORTRANGE = 19 pkg syscall (freebsd-arm-cgo), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (freebsd-arm-cgo), const IP_PORTRANGE_HIGH = 1 pkg syscall (freebsd-arm-cgo), const IP_PORTRANGE_LOW = 2 pkg syscall (freebsd-arm-cgo), const IP_RECVDSTADDR = 7 pkg syscall (freebsd-arm-cgo), const IP_RECVIF = 20 pkg syscall (freebsd-arm-cgo), const IP_RECVOPTS = 5 pkg syscall (freebsd-arm-cgo), const IP_RECVRETOPTS = 6 pkg syscall (freebsd-arm-cgo), const IP_RECVTOS = 68 pkg syscall (freebsd-arm-cgo), const IP_RECVTTL = 65 pkg syscall (freebsd-arm-cgo), const IP_RETOPTS = 8 pkg syscall (freebsd-arm-cgo), const IP_RF = 32768 pkg syscall (freebsd-arm-cgo), const IP_RSVP_OFF = 16 pkg syscall (freebsd-arm-cgo), const IP_RSVP_ON = 15 pkg syscall (freebsd-arm-cgo), const IP_RSVP_VIF_OFF = 18 pkg syscall (freebsd-arm-cgo), const IP_RSVP_VIF_ON = 17 pkg syscall (freebsd-arm-cgo), const IP_SENDSRCADDR = 7 pkg syscall (freebsd-arm-cgo), const IP_TOS = 3 pkg syscall (freebsd-arm-cgo), const IP_TTL = 4 pkg syscall (freebsd-arm-cgo), const IP_UNBLOCK_SOURCE = 73 pkg syscall (freebsd-arm-cgo), const ISIG = 128 pkg syscall (freebsd-arm-cgo), const ISTRIP = 32 pkg syscall (freebsd-arm-cgo), const IXANY = 2048 pkg syscall (freebsd-arm-cgo), const IXOFF = 1024 pkg syscall (freebsd-arm-cgo), const IXON = 512 pkg syscall (freebsd-arm-cgo), const ImplementsGetwd = false pkg syscall (freebsd-arm-cgo), const LOCK_EX = 2 pkg syscall (freebsd-arm-cgo), const LOCK_NB = 4 pkg syscall (freebsd-arm-cgo), const LOCK_SH = 1 pkg syscall (freebsd-arm-cgo), const LOCK_UN = 8 pkg syscall (freebsd-arm-cgo), const MADV_AUTOSYNC = 7 pkg syscall (freebsd-arm-cgo), const MADV_CORE = 9 pkg syscall (freebsd-arm-cgo), const MADV_DONTNEED = 4 pkg syscall (freebsd-arm-cgo), const MADV_FREE = 5 pkg syscall (freebsd-arm-cgo), const MADV_NOCORE = 8 pkg syscall (freebsd-arm-cgo), const MADV_NORMAL = 0 pkg syscall (freebsd-arm-cgo), const MADV_NOSYNC = 6 pkg syscall (freebsd-arm-cgo), const MADV_PROTECT = 10 pkg syscall (freebsd-arm-cgo), const MADV_RANDOM = 1 pkg syscall (freebsd-arm-cgo), const MADV_SEQUENTIAL = 2 pkg syscall (freebsd-arm-cgo), const MADV_WILLNEED = 3 pkg syscall (freebsd-arm-cgo), const MAP_ANON = 4096 pkg syscall (freebsd-arm-cgo), const MAP_ANONYMOUS = 4096 pkg syscall (freebsd-arm-cgo), const MAP_COPY = 2 pkg syscall (freebsd-arm-cgo), const MAP_FILE = 0 pkg syscall (freebsd-arm-cgo), const MAP_FIXED = 16 pkg syscall (freebsd-arm-cgo), const MAP_HASSEMAPHORE = 512 pkg syscall (freebsd-arm-cgo), const MAP_NOCORE = 131072 pkg syscall (freebsd-arm-cgo), const MAP_NORESERVE = 64 pkg syscall (freebsd-arm-cgo), const MAP_NOSYNC = 2048 pkg syscall (freebsd-arm-cgo), const MAP_PREFAULT_READ = 262144 pkg syscall (freebsd-arm-cgo), const MAP_PRIVATE = 2 pkg syscall (freebsd-arm-cgo), const MAP_RENAME = 32 pkg syscall (freebsd-arm-cgo), const MAP_RESERVED0080 = 128 pkg syscall (freebsd-arm-cgo), const MAP_RESERVED0100 = 256 pkg syscall (freebsd-arm-cgo), const MAP_SHARED = 1 pkg syscall (freebsd-arm-cgo), const MAP_STACK = 1024 pkg syscall (freebsd-arm-cgo), const MCL_CURRENT = 1 pkg syscall (freebsd-arm-cgo), const MCL_FUTURE = 2 pkg syscall (freebsd-arm-cgo), const MSG_COMPAT = 32768 pkg syscall (freebsd-arm-cgo), const MSG_CTRUNC = 32 pkg syscall (freebsd-arm-cgo), const MSG_DONTROUTE = 4 pkg syscall (freebsd-arm-cgo), const MSG_DONTWAIT = 128 pkg syscall (freebsd-arm-cgo), const MSG_EOF = 256 pkg syscall (freebsd-arm-cgo), const MSG_EOR = 8 pkg syscall (freebsd-arm-cgo), const MSG_NBIO = 16384 pkg syscall (freebsd-arm-cgo), const MSG_NOSIGNAL = 131072 pkg syscall (freebsd-arm-cgo), const MSG_NOTIFICATION = 8192 pkg syscall (freebsd-arm-cgo), const MSG_OOB = 1 pkg syscall (freebsd-arm-cgo), const MSG_PEEK = 2 pkg syscall (freebsd-arm-cgo), const MSG_TRUNC = 16 pkg syscall (freebsd-arm-cgo), const MSG_WAITALL = 64 pkg syscall (freebsd-arm-cgo), const MS_ASYNC = 1 pkg syscall (freebsd-arm-cgo), const MS_INVALIDATE = 2 pkg syscall (freebsd-arm-cgo), const MS_SYNC = 0 pkg syscall (freebsd-arm-cgo), const NET_RT_DUMP = 1 pkg syscall (freebsd-arm-cgo), const NET_RT_FLAGS = 2 pkg syscall (freebsd-arm-cgo), const NET_RT_IFLIST = 3 pkg syscall (freebsd-arm-cgo), const NET_RT_IFLISTL = 5 pkg syscall (freebsd-arm-cgo), const NET_RT_IFMALIST = 4 pkg syscall (freebsd-arm-cgo), const NET_RT_MAXID = 6 pkg syscall (freebsd-arm-cgo), const NOFLSH = 2147483648 pkg syscall (freebsd-arm-cgo), const NOTE_ATTRIB = 8 pkg syscall (freebsd-arm-cgo), const NOTE_CHILD = 4 pkg syscall (freebsd-arm-cgo), const NOTE_DELETE = 1 pkg syscall (freebsd-arm-cgo), const NOTE_EXEC = 536870912 pkg syscall (freebsd-arm-cgo), const NOTE_EXIT = 2147483648 pkg syscall (freebsd-arm-cgo), const NOTE_EXTEND = 4 pkg syscall (freebsd-arm-cgo), const NOTE_FFAND = 1073741824 pkg syscall (freebsd-arm-cgo), const NOTE_FFCOPY = 3221225472 pkg syscall (freebsd-arm-cgo), const NOTE_FFCTRLMASK = 3221225472 pkg syscall (freebsd-arm-cgo), const NOTE_FFLAGSMASK = 16777215 pkg syscall (freebsd-arm-cgo), const NOTE_FFNOP = 0 pkg syscall (freebsd-arm-cgo), const NOTE_FFOR = 2147483648 pkg syscall (freebsd-arm-cgo), const NOTE_FORK = 1073741824 pkg syscall (freebsd-arm-cgo), const NOTE_LINK = 16 pkg syscall (freebsd-arm-cgo), const NOTE_LOWAT = 1 pkg syscall (freebsd-arm-cgo), const NOTE_PCTRLMASK = 4026531840 pkg syscall (freebsd-arm-cgo), const NOTE_PDATAMASK = 1048575 pkg syscall (freebsd-arm-cgo), const NOTE_RENAME = 32 pkg syscall (freebsd-arm-cgo), const NOTE_REVOKE = 64 pkg syscall (freebsd-arm-cgo), const NOTE_TRACK = 1 pkg syscall (freebsd-arm-cgo), const NOTE_TRACKERR = 2 pkg syscall (freebsd-arm-cgo), const NOTE_TRIGGER = 16777216 pkg syscall (freebsd-arm-cgo), const NOTE_WRITE = 2 pkg syscall (freebsd-arm-cgo), const OCRNL = 16 pkg syscall (freebsd-arm-cgo), const ONLCR = 2 pkg syscall (freebsd-arm-cgo), const ONLRET = 64 pkg syscall (freebsd-arm-cgo), const ONOCR = 32 pkg syscall (freebsd-arm-cgo), const ONOEOT = 8 pkg syscall (freebsd-arm-cgo), const OPOST = 1 pkg syscall (freebsd-arm-cgo), const O_ACCMODE = 3 pkg syscall (freebsd-arm-cgo), const O_APPEND = 8 pkg syscall (freebsd-arm-cgo), const O_ASYNC = 64 pkg syscall (freebsd-arm-cgo), const O_CLOEXEC = 0 pkg syscall (freebsd-arm-cgo), const O_CREAT = 512 pkg syscall (freebsd-arm-cgo), const O_DIRECT = 65536 pkg syscall (freebsd-arm-cgo), const O_DIRECTORY = 131072 pkg syscall (freebsd-arm-cgo), const O_EXCL = 2048 pkg syscall (freebsd-arm-cgo), const O_EXEC = 262144 pkg syscall (freebsd-arm-cgo), const O_EXLOCK = 32 pkg syscall (freebsd-arm-cgo), const O_FSYNC = 128 pkg syscall (freebsd-arm-cgo), const O_NDELAY = 4 pkg syscall (freebsd-arm-cgo), const O_NOCTTY = 32768 pkg syscall (freebsd-arm-cgo), const O_NOFOLLOW = 256 pkg syscall (freebsd-arm-cgo), const O_NONBLOCK = 4 pkg syscall (freebsd-arm-cgo), const O_SHLOCK = 16 pkg syscall (freebsd-arm-cgo), const O_SYNC = 128 pkg syscall (freebsd-arm-cgo), const O_TRUNC = 1024 pkg syscall (freebsd-arm-cgo), const O_TTY_INIT = 524288 pkg syscall (freebsd-arm-cgo), const PARENB = 4096 pkg syscall (freebsd-arm-cgo), const PARMRK = 8 pkg syscall (freebsd-arm-cgo), const PARODD = 8192 pkg syscall (freebsd-arm-cgo), const PENDIN = 536870912 pkg syscall (freebsd-arm-cgo), const PROT_EXEC = 4 pkg syscall (freebsd-arm-cgo), const PROT_NONE = 0 pkg syscall (freebsd-arm-cgo), const PROT_READ = 1 pkg syscall (freebsd-arm-cgo), const PROT_WRITE = 2 pkg syscall (freebsd-arm-cgo), const PTRACE_CONT = 7 pkg syscall (freebsd-arm-cgo), const PTRACE_KILL = 8 pkg syscall (freebsd-arm-cgo), const PTRACE_TRACEME = 0 pkg syscall (freebsd-arm-cgo), const RLIMIT_AS = 10 pkg syscall (freebsd-arm-cgo), const RLIMIT_CORE = 4 pkg syscall (freebsd-arm-cgo), const RLIMIT_CPU = 0 pkg syscall (freebsd-arm-cgo), const RLIMIT_DATA = 2 pkg syscall (freebsd-arm-cgo), const RLIMIT_FSIZE = 1 pkg syscall (freebsd-arm-cgo), const RLIMIT_NOFILE = 8 pkg syscall (freebsd-arm-cgo), const RLIMIT_STACK = 3 pkg syscall (freebsd-arm-cgo), const RLIM_INFINITY = 9223372036854775807 pkg syscall (freebsd-arm-cgo), const RTAX_AUTHOR = 6 pkg syscall (freebsd-arm-cgo), const RTAX_BRD = 7 pkg syscall (freebsd-arm-cgo), const RTAX_DST = 0 pkg syscall (freebsd-arm-cgo), const RTAX_GATEWAY = 1 pkg syscall (freebsd-arm-cgo), const RTAX_GENMASK = 3 pkg syscall (freebsd-arm-cgo), const RTAX_IFA = 5 pkg syscall (freebsd-arm-cgo), const RTAX_IFP = 4 pkg syscall (freebsd-arm-cgo), const RTAX_MAX = 8 pkg syscall (freebsd-arm-cgo), const RTAX_NETMASK = 2 pkg syscall (freebsd-arm-cgo), const RTA_AUTHOR = 64 pkg syscall (freebsd-arm-cgo), const RTA_BRD = 128 pkg syscall (freebsd-arm-cgo), const RTA_DST = 1 pkg syscall (freebsd-arm-cgo), const RTA_GATEWAY = 2 pkg syscall (freebsd-arm-cgo), const RTA_GENMASK = 8 pkg syscall (freebsd-arm-cgo), const RTA_IFA = 32 pkg syscall (freebsd-arm-cgo), const RTA_IFP = 16 pkg syscall (freebsd-arm-cgo), const RTA_NETMASK = 4 pkg syscall (freebsd-arm-cgo), const RTF_BLACKHOLE = 4096 pkg syscall (freebsd-arm-cgo), const RTF_BROADCAST = 4194304 pkg syscall (freebsd-arm-cgo), const RTF_DONE = 64 pkg syscall (freebsd-arm-cgo), const RTF_DYNAMIC = 16 pkg syscall (freebsd-arm-cgo), const RTF_FMASK = 268752904 pkg syscall (freebsd-arm-cgo), const RTF_GATEWAY = 2 pkg syscall (freebsd-arm-cgo), const RTF_HOST = 4 pkg syscall (freebsd-arm-cgo), const RTF_LLDATA = 1024 pkg syscall (freebsd-arm-cgo), const RTF_LLINFO = 1024 pkg syscall (freebsd-arm-cgo), const RTF_LOCAL = 2097152 pkg syscall (freebsd-arm-cgo), const RTF_MODIFIED = 32 pkg syscall (freebsd-arm-cgo), const RTF_MULTICAST = 8388608 pkg syscall (freebsd-arm-cgo), const RTF_PINNED = 1048576 pkg syscall (freebsd-arm-cgo), const RTF_PRCLONING = 65536 pkg syscall (freebsd-arm-cgo), const RTF_PROTO1 = 32768 pkg syscall (freebsd-arm-cgo), const RTF_PROTO2 = 16384 pkg syscall (freebsd-arm-cgo), const RTF_PROTO3 = 262144 pkg syscall (freebsd-arm-cgo), const RTF_REJECT = 8 pkg syscall (freebsd-arm-cgo), const RTF_RNH_LOCKED = 1073741824 pkg syscall (freebsd-arm-cgo), const RTF_STATIC = 2048 pkg syscall (freebsd-arm-cgo), const RTF_STICKY = 268435456 pkg syscall (freebsd-arm-cgo), const RTF_UP = 1 pkg syscall (freebsd-arm-cgo), const RTF_XRESOLVE = 512 pkg syscall (freebsd-arm-cgo), const RTM_ADD = 1 pkg syscall (freebsd-arm-cgo), const RTM_CHANGE = 3 pkg syscall (freebsd-arm-cgo), const RTM_DELADDR = 13 pkg syscall (freebsd-arm-cgo), const RTM_DELETE = 2 pkg syscall (freebsd-arm-cgo), const RTM_DELMADDR = 16 pkg syscall (freebsd-arm-cgo), const RTM_GET = 4 pkg syscall (freebsd-arm-cgo), const RTM_IEEE80211 = 18 pkg syscall (freebsd-arm-cgo), const RTM_IFANNOUNCE = 17 pkg syscall (freebsd-arm-cgo), const RTM_IFINFO = 14 pkg syscall (freebsd-arm-cgo), const RTM_LOCK = 8 pkg syscall (freebsd-arm-cgo), const RTM_LOSING = 5 pkg syscall (freebsd-arm-cgo), const RTM_MISS = 7 pkg syscall (freebsd-arm-cgo), const RTM_NEWADDR = 12 pkg syscall (freebsd-arm-cgo), const RTM_NEWMADDR = 15 pkg syscall (freebsd-arm-cgo), const RTM_OLDADD = 9 pkg syscall (freebsd-arm-cgo), const RTM_OLDDEL = 10 pkg syscall (freebsd-arm-cgo), const RTM_REDIRECT = 6 pkg syscall (freebsd-arm-cgo), const RTM_RESOLVE = 11 pkg syscall (freebsd-arm-cgo), const RTM_RTTUNIT = 1000000 pkg syscall (freebsd-arm-cgo), const RTM_VERSION = 5 pkg syscall (freebsd-arm-cgo), const RTV_EXPIRE = 4 pkg syscall (freebsd-arm-cgo), const RTV_HOPCOUNT = 2 pkg syscall (freebsd-arm-cgo), const RTV_MTU = 1 pkg syscall (freebsd-arm-cgo), const RTV_RPIPE = 8 pkg syscall (freebsd-arm-cgo), const RTV_RTT = 64 pkg syscall (freebsd-arm-cgo), const RTV_RTTVAR = 128 pkg syscall (freebsd-arm-cgo), const RTV_SPIPE = 16 pkg syscall (freebsd-arm-cgo), const RTV_SSTHRESH = 32 pkg syscall (freebsd-arm-cgo), const RTV_WEIGHT = 256 pkg syscall (freebsd-arm-cgo), const RT_CACHING_CONTEXT = 1 pkg syscall (freebsd-arm-cgo), const RT_DEFAULT_FIB = 0 pkg syscall (freebsd-arm-cgo), const RT_NORTREF = 2 pkg syscall (freebsd-arm-cgo), const RUSAGE_CHILDREN = -1 pkg syscall (freebsd-arm-cgo), const RUSAGE_SELF = 0 pkg syscall (freebsd-arm-cgo), const RUSAGE_THREAD = 1 pkg syscall (freebsd-arm-cgo), const SCM_BINTIME = 4 pkg syscall (freebsd-arm-cgo), const SCM_CREDS = 3 pkg syscall (freebsd-arm-cgo), const SCM_RIGHTS = 1 pkg syscall (freebsd-arm-cgo), const SCM_TIMESTAMP = 2 pkg syscall (freebsd-arm-cgo), const SIGBUS = 10 pkg syscall (freebsd-arm-cgo), const SIGCHLD = 20 pkg syscall (freebsd-arm-cgo), const SIGCONT = 19 pkg syscall (freebsd-arm-cgo), const SIGEMT = 7 pkg syscall (freebsd-arm-cgo), const SIGINFO = 29 pkg syscall (freebsd-arm-cgo), const SIGIO = 23 pkg syscall (freebsd-arm-cgo), const SIGIOT = 6 pkg syscall (freebsd-arm-cgo), const SIGLIBRT = 33 pkg syscall (freebsd-arm-cgo), const SIGLWP = 32 pkg syscall (freebsd-arm-cgo), const SIGPROF = 27 pkg syscall (freebsd-arm-cgo), const SIGSTOP = 17 pkg syscall (freebsd-arm-cgo), const SIGSYS = 12 pkg syscall (freebsd-arm-cgo), const SIGTHR = 32 pkg syscall (freebsd-arm-cgo), const SIGTSTP = 18 pkg syscall (freebsd-arm-cgo), const SIGTTIN = 21 pkg syscall (freebsd-arm-cgo), const SIGTTOU = 22 pkg syscall (freebsd-arm-cgo), const SIGURG = 16 pkg syscall (freebsd-arm-cgo), const SIGUSR1 = 30 pkg syscall (freebsd-arm-cgo), const SIGUSR2 = 31 pkg syscall (freebsd-arm-cgo), const SIGVTALRM = 26 pkg syscall (freebsd-arm-cgo), const SIGWINCH = 28 pkg syscall (freebsd-arm-cgo), const SIGXCPU = 24 pkg syscall (freebsd-arm-cgo), const SIGXFSZ = 25 pkg syscall (freebsd-arm-cgo), const SIOCADDMULTI = 2149607729 pkg syscall (freebsd-arm-cgo), const SIOCADDRT = 2150658570 pkg syscall (freebsd-arm-cgo), const SIOCAIFADDR = 2151967019 pkg syscall (freebsd-arm-cgo), const SIOCAIFGROUP = 2149869959 pkg syscall (freebsd-arm-cgo), const SIOCALIFADDR = 2165860635 pkg syscall (freebsd-arm-cgo), const SIOCATMARK = 1074033415 pkg syscall (freebsd-arm-cgo), const SIOCDELMULTI = 2149607730 pkg syscall (freebsd-arm-cgo), const SIOCDELRT = 2150658571 pkg syscall (freebsd-arm-cgo), const SIOCDIFADDR = 2149607705 pkg syscall (freebsd-arm-cgo), const SIOCDIFGROUP = 2149869961 pkg syscall (freebsd-arm-cgo), const SIOCDIFPHYADDR = 2149607753 pkg syscall (freebsd-arm-cgo), const SIOCDLIFADDR = 2165860637 pkg syscall (freebsd-arm-cgo), const SIOCGDRVSPEC = 3223087483 pkg syscall (freebsd-arm-cgo), const SIOCGETSGCNT = 3222565392 pkg syscall (freebsd-arm-cgo), const SIOCGETVIFCNT = 3222565391 pkg syscall (freebsd-arm-cgo), const SIOCGHIWAT = 1074033409 pkg syscall (freebsd-arm-cgo), const SIOCGIFADDR = 3223349537 pkg syscall (freebsd-arm-cgo), const SIOCGIFBRDADDR = 3223349539 pkg syscall (freebsd-arm-cgo), const SIOCGIFCAP = 3223349535 pkg syscall (freebsd-arm-cgo), const SIOCGIFCONF = 3221776676 pkg syscall (freebsd-arm-cgo), const SIOCGIFDESCR = 3223349546 pkg syscall (freebsd-arm-cgo), const SIOCGIFDSTADDR = 3223349538 pkg syscall (freebsd-arm-cgo), const SIOCGIFFIB = 3223349596 pkg syscall (freebsd-arm-cgo), const SIOCGIFFLAGS = 3223349521 pkg syscall (freebsd-arm-cgo), const SIOCGIFGENERIC = 3223349562 pkg syscall (freebsd-arm-cgo), const SIOCGIFGMEMB = 3223611786 pkg syscall (freebsd-arm-cgo), const SIOCGIFGROUP = 3223611784 pkg syscall (freebsd-arm-cgo), const SIOCGIFINDEX = 3223349536 pkg syscall (freebsd-arm-cgo), const SIOCGIFMAC = 3223349542 pkg syscall (freebsd-arm-cgo), const SIOCGIFMEDIA = 3223873848 pkg syscall (freebsd-arm-cgo), const SIOCGIFMETRIC = 3223349527 pkg syscall (freebsd-arm-cgo), const SIOCGIFMTU = 3223349555 pkg syscall (freebsd-arm-cgo), const SIOCGIFNETMASK = 3223349541 pkg syscall (freebsd-arm-cgo), const SIOCGIFPDSTADDR = 3223349576 pkg syscall (freebsd-arm-cgo), const SIOCGIFPHYS = 3223349557 pkg syscall (freebsd-arm-cgo), const SIOCGIFPSRCADDR = 3223349575 pkg syscall (freebsd-arm-cgo), const SIOCGIFSTATUS = 3274991931 pkg syscall (freebsd-arm-cgo), const SIOCGLIFADDR = 3239602460 pkg syscall (freebsd-arm-cgo), const SIOCGLIFPHYADDR = 3239602507 pkg syscall (freebsd-arm-cgo), const SIOCGLOWAT = 1074033411 pkg syscall (freebsd-arm-cgo), const SIOCGPGRP = 1074033417 pkg syscall (freebsd-arm-cgo), const SIOCGPRIVATE_0 = 3223349584 pkg syscall (freebsd-arm-cgo), const SIOCGPRIVATE_1 = 3223349585 pkg syscall (freebsd-arm-cgo), const SIOCIFCREATE = 3223349626 pkg syscall (freebsd-arm-cgo), const SIOCIFCREATE2 = 3223349628 pkg syscall (freebsd-arm-cgo), const SIOCIFDESTROY = 2149607801 pkg syscall (freebsd-arm-cgo), const SIOCIFGCLONERS = 3222038904 pkg syscall (freebsd-arm-cgo), const SIOCSDRVSPEC = 2149345659 pkg syscall (freebsd-arm-cgo), const SIOCSHIWAT = 2147775232 pkg syscall (freebsd-arm-cgo), const SIOCSIFADDR = 2149607692 pkg syscall (freebsd-arm-cgo), const SIOCSIFBRDADDR = 2149607699 pkg syscall (freebsd-arm-cgo), const SIOCSIFCAP = 2149607710 pkg syscall (freebsd-arm-cgo), const SIOCSIFDESCR = 2149607721 pkg syscall (freebsd-arm-cgo), const SIOCSIFDSTADDR = 2149607694 pkg syscall (freebsd-arm-cgo), const SIOCSIFFIB = 2149607773 pkg syscall (freebsd-arm-cgo), const SIOCSIFFLAGS = 2149607696 pkg syscall (freebsd-arm-cgo), const SIOCSIFGENERIC = 2149607737 pkg syscall (freebsd-arm-cgo), const SIOCSIFLLADDR = 2149607740 pkg syscall (freebsd-arm-cgo), const SIOCSIFMAC = 2149607719 pkg syscall (freebsd-arm-cgo), const SIOCSIFMEDIA = 3223349559 pkg syscall (freebsd-arm-cgo), const SIOCSIFMETRIC = 2149607704 pkg syscall (freebsd-arm-cgo), const SIOCSIFMTU = 2149607732 pkg syscall (freebsd-arm-cgo), const SIOCSIFNAME = 2149607720 pkg syscall (freebsd-arm-cgo), const SIOCSIFNETMASK = 2149607702 pkg syscall (freebsd-arm-cgo), const SIOCSIFPHYADDR = 2151967046 pkg syscall (freebsd-arm-cgo), const SIOCSIFPHYS = 2149607734 pkg syscall (freebsd-arm-cgo), const SIOCSIFRVNET = 3223349595 pkg syscall (freebsd-arm-cgo), const SIOCSIFVNET = 3223349594 pkg syscall (freebsd-arm-cgo), const SIOCSLIFPHYADDR = 2165860682 pkg syscall (freebsd-arm-cgo), const SIOCSLOWAT = 2147775234 pkg syscall (freebsd-arm-cgo), const SIOCSPGRP = 2147775240 pkg syscall (freebsd-arm-cgo), const SOCK_MAXADDRLEN = 255 pkg syscall (freebsd-arm-cgo), const SOCK_RDM = 4 pkg syscall (freebsd-arm-cgo), const SOL_SOCKET = 65535 pkg syscall (freebsd-arm-cgo), const SOMAXCONN = 128 pkg syscall (freebsd-arm-cgo), const SO_ACCEPTCONN = 2 pkg syscall (freebsd-arm-cgo), const SO_ACCEPTFILTER = 4096 pkg syscall (freebsd-arm-cgo), const SO_BINTIME = 8192 pkg syscall (freebsd-arm-cgo), const SO_BROADCAST = 32 pkg syscall (freebsd-arm-cgo), const SO_DEBUG = 1 pkg syscall (freebsd-arm-cgo), const SO_DONTROUTE = 16 pkg syscall (freebsd-arm-cgo), const SO_ERROR = 4103 pkg syscall (freebsd-arm-cgo), const SO_KEEPALIVE = 8 pkg syscall (freebsd-arm-cgo), const SO_LABEL = 4105 pkg syscall (freebsd-arm-cgo), const SO_LINGER = 128 pkg syscall (freebsd-arm-cgo), const SO_LISTENINCQLEN = 4115 pkg syscall (freebsd-arm-cgo), const SO_LISTENQLEN = 4114 pkg syscall (freebsd-arm-cgo), const SO_LISTENQLIMIT = 4113 pkg syscall (freebsd-arm-cgo), const SO_NOSIGPIPE = 2048 pkg syscall (freebsd-arm-cgo), const SO_NO_DDP = 32768 pkg syscall (freebsd-arm-cgo), const SO_NO_OFFLOAD = 16384 pkg syscall (freebsd-arm-cgo), const SO_OOBINLINE = 256 pkg syscall (freebsd-arm-cgo), const SO_PEERLABEL = 4112 pkg syscall (freebsd-arm-cgo), const SO_PROTOCOL = 4118 pkg syscall (freebsd-arm-cgo), const SO_PROTOTYPE = 4118 pkg syscall (freebsd-arm-cgo), const SO_RCVBUF = 4098 pkg syscall (freebsd-arm-cgo), const SO_RCVLOWAT = 4100 pkg syscall (freebsd-arm-cgo), const SO_RCVTIMEO = 4102 pkg syscall (freebsd-arm-cgo), const SO_REUSEADDR = 4 pkg syscall (freebsd-arm-cgo), const SO_REUSEPORT = 512 pkg syscall (freebsd-arm-cgo), const SO_SETFIB = 4116 pkg syscall (freebsd-arm-cgo), const SO_SNDBUF = 4097 pkg syscall (freebsd-arm-cgo), const SO_SNDLOWAT = 4099 pkg syscall (freebsd-arm-cgo), const SO_SNDTIMEO = 4101 pkg syscall (freebsd-arm-cgo), const SO_TIMESTAMP = 1024 pkg syscall (freebsd-arm-cgo), const SO_TYPE = 4104 pkg syscall (freebsd-arm-cgo), const SO_USELOOPBACK = 64 pkg syscall (freebsd-arm-cgo), const SO_USER_COOKIE = 4117 pkg syscall (freebsd-arm-cgo), const SYS_ABORT2 = 463 pkg syscall (freebsd-arm-cgo), const SYS_ACCEPT = 30 pkg syscall (freebsd-arm-cgo), const SYS_ACCESS = 33 pkg syscall (freebsd-arm-cgo), const SYS_ACCT = 51 pkg syscall (freebsd-arm-cgo), const SYS_ADJTIME = 140 pkg syscall (freebsd-arm-cgo), const SYS_AUDIT = 445 pkg syscall (freebsd-arm-cgo), const SYS_AUDITCTL = 453 pkg syscall (freebsd-arm-cgo), const SYS_AUDITON = 446 pkg syscall (freebsd-arm-cgo), const SYS_BIND = 104 pkg syscall (freebsd-arm-cgo), const SYS_CAP_ENTER = 516 pkg syscall (freebsd-arm-cgo), const SYS_CAP_FCNTLS_GET = 537 pkg syscall (freebsd-arm-cgo), const SYS_CAP_FCNTLS_LIMIT = 536 pkg syscall (freebsd-arm-cgo), const SYS_CAP_GETMODE = 517 pkg syscall (freebsd-arm-cgo), const SYS_CAP_IOCTLS_GET = 535 pkg syscall (freebsd-arm-cgo), const SYS_CAP_IOCTLS_LIMIT = 534 pkg syscall (freebsd-arm-cgo), const SYS_CAP_NEW = 514 pkg syscall (freebsd-arm-cgo), const SYS_CAP_RIGHTS_GET = 515 pkg syscall (freebsd-arm-cgo), const SYS_CAP_RIGHTS_LIMIT = 533 pkg syscall (freebsd-arm-cgo), const SYS_CHDIR = 12 pkg syscall (freebsd-arm-cgo), const SYS_CHFLAGS = 34 pkg syscall (freebsd-arm-cgo), const SYS_CHMOD = 15 pkg syscall (freebsd-arm-cgo), const SYS_CHOWN = 16 pkg syscall (freebsd-arm-cgo), const SYS_CHROOT = 61 pkg syscall (freebsd-arm-cgo), const SYS_CLOCK_GETCPUCLOCKID2 = 247 pkg syscall (freebsd-arm-cgo), const SYS_CLOCK_GETRES = 234 pkg syscall (freebsd-arm-cgo), const SYS_CLOCK_GETTIME = 232 pkg syscall (freebsd-arm-cgo), const SYS_CLOCK_SETTIME = 233 pkg syscall (freebsd-arm-cgo), const SYS_CLOSE = 6 pkg syscall (freebsd-arm-cgo), const SYS_CLOSEFROM = 509 pkg syscall (freebsd-arm-cgo), const SYS_CONNECT = 98 pkg syscall (freebsd-arm-cgo), const SYS_CPUSET = 484 pkg syscall (freebsd-arm-cgo), const SYS_CPUSET_GETAFFINITY = 487 pkg syscall (freebsd-arm-cgo), const SYS_CPUSET_GETID = 486 pkg syscall (freebsd-arm-cgo), const SYS_CPUSET_SETAFFINITY = 488 pkg syscall (freebsd-arm-cgo), const SYS_CPUSET_SETID = 485 pkg syscall (freebsd-arm-cgo), const SYS_DUP = 41 pkg syscall (freebsd-arm-cgo), const SYS_DUP2 = 90 pkg syscall (freebsd-arm-cgo), const SYS_EACCESS = 376 pkg syscall (freebsd-arm-cgo), const SYS_EXECVE = 59 pkg syscall (freebsd-arm-cgo), const SYS_EXIT = 1 pkg syscall (freebsd-arm-cgo), const SYS_EXTATTRCTL = 355 pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_DELETE_FD = 373 pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_DELETE_FILE = 358 pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_DELETE_LINK = 414 pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_GET_FD = 372 pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_GET_FILE = 357 pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_GET_LINK = 413 pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_LIST_FD = 437 pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_LIST_FILE = 438 pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_LIST_LINK = 439 pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_SET_FD = 371 pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_SET_FILE = 356 pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_SET_LINK = 412 pkg syscall (freebsd-arm-cgo), const SYS_FACCESSAT = 489 pkg syscall (freebsd-arm-cgo), const SYS_FCHDIR = 13 pkg syscall (freebsd-arm-cgo), const SYS_FCHFLAGS = 35 pkg syscall (freebsd-arm-cgo), const SYS_FCHMOD = 124 pkg syscall (freebsd-arm-cgo), const SYS_FCHMODAT = 490 pkg syscall (freebsd-arm-cgo), const SYS_FCHOWN = 123 pkg syscall (freebsd-arm-cgo), const SYS_FCHOWNAT = 491 pkg syscall (freebsd-arm-cgo), const SYS_FCNTL = 92 pkg syscall (freebsd-arm-cgo), const SYS_FEXECVE = 492 pkg syscall (freebsd-arm-cgo), const SYS_FFCLOCK_GETCOUNTER = 241 pkg syscall (freebsd-arm-cgo), const SYS_FFCLOCK_GETESTIMATE = 243 pkg syscall (freebsd-arm-cgo), const SYS_FFCLOCK_SETESTIMATE = 242 pkg syscall (freebsd-arm-cgo), const SYS_FHOPEN = 298 pkg syscall (freebsd-arm-cgo), const SYS_FHSTAT = 299 pkg syscall (freebsd-arm-cgo), const SYS_FHSTATFS = 398 pkg syscall (freebsd-arm-cgo), const SYS_FLOCK = 131 pkg syscall (freebsd-arm-cgo), const SYS_FORK = 2 pkg syscall (freebsd-arm-cgo), const SYS_FPATHCONF = 192 pkg syscall (freebsd-arm-cgo), const SYS_FREEBSD6_FTRUNCATE = 201 pkg syscall (freebsd-arm-cgo), const SYS_FREEBSD6_LSEEK = 199 pkg syscall (freebsd-arm-cgo), const SYS_FREEBSD6_MMAP = 197 pkg syscall (freebsd-arm-cgo), const SYS_FREEBSD6_PREAD = 173 pkg syscall (freebsd-arm-cgo), const SYS_FREEBSD6_PWRITE = 174 pkg syscall (freebsd-arm-cgo), const SYS_FREEBSD6_TRUNCATE = 200 pkg syscall (freebsd-arm-cgo), const SYS_FSTAT = 189 pkg syscall (freebsd-arm-cgo), const SYS_FSTATAT = 493 pkg syscall (freebsd-arm-cgo), const SYS_FSTATFS = 397 pkg syscall (freebsd-arm-cgo), const SYS_FSYNC = 95 pkg syscall (freebsd-arm-cgo), const SYS_FTRUNCATE = 480 pkg syscall (freebsd-arm-cgo), const SYS_FUTIMES = 206 pkg syscall (freebsd-arm-cgo), const SYS_FUTIMESAT = 494 pkg syscall (freebsd-arm-cgo), const SYS_GETAUDIT = 449 pkg syscall (freebsd-arm-cgo), const SYS_GETAUDIT_ADDR = 451 pkg syscall (freebsd-arm-cgo), const SYS_GETAUID = 447 pkg syscall (freebsd-arm-cgo), const SYS_GETCONTEXT = 421 pkg syscall (freebsd-arm-cgo), const SYS_GETDENTS = 272 pkg syscall (freebsd-arm-cgo), const SYS_GETDIRENTRIES = 196 pkg syscall (freebsd-arm-cgo), const SYS_GETDTABLESIZE = 89 pkg syscall (freebsd-arm-cgo), const SYS_GETEGID = 43 pkg syscall (freebsd-arm-cgo), const SYS_GETEUID = 25 pkg syscall (freebsd-arm-cgo), const SYS_GETFH = 161 pkg syscall (freebsd-arm-cgo), const SYS_GETFSSTAT = 395 pkg syscall (freebsd-arm-cgo), const SYS_GETGID = 47 pkg syscall (freebsd-arm-cgo), const SYS_GETGROUPS = 79 pkg syscall (freebsd-arm-cgo), const SYS_GETITIMER = 86 pkg syscall (freebsd-arm-cgo), const SYS_GETLOGIN = 49 pkg syscall (freebsd-arm-cgo), const SYS_GETLOGINCLASS = 523 pkg syscall (freebsd-arm-cgo), const SYS_GETPEERNAME = 31 pkg syscall (freebsd-arm-cgo), const SYS_GETPGID = 207 pkg syscall (freebsd-arm-cgo), const SYS_GETPGRP = 81 pkg syscall (freebsd-arm-cgo), const SYS_GETPID = 20 pkg syscall (freebsd-arm-cgo), const SYS_GETPPID = 39 pkg syscall (freebsd-arm-cgo), const SYS_GETPRIORITY = 100 pkg syscall (freebsd-arm-cgo), const SYS_GETRESGID = 361 pkg syscall (freebsd-arm-cgo), const SYS_GETRESUID = 360 pkg syscall (freebsd-arm-cgo), const SYS_GETRLIMIT = 194 pkg syscall (freebsd-arm-cgo), const SYS_GETRUSAGE = 117 pkg syscall (freebsd-arm-cgo), const SYS_GETSID = 310 pkg syscall (freebsd-arm-cgo), const SYS_GETSOCKNAME = 32 pkg syscall (freebsd-arm-cgo), const SYS_GETSOCKOPT = 118 pkg syscall (freebsd-arm-cgo), const SYS_GETTIMEOFDAY = 116 pkg syscall (freebsd-arm-cgo), const SYS_GETUID = 24 pkg syscall (freebsd-arm-cgo), const SYS_IOCTL = 54 pkg syscall (freebsd-arm-cgo), const SYS_ISSETUGID = 253 pkg syscall (freebsd-arm-cgo), const SYS_JAIL = 338 pkg syscall (freebsd-arm-cgo), const SYS_JAIL_ATTACH = 436 pkg syscall (freebsd-arm-cgo), const SYS_JAIL_GET = 506 pkg syscall (freebsd-arm-cgo), const SYS_JAIL_REMOVE = 508 pkg syscall (freebsd-arm-cgo), const SYS_JAIL_SET = 507 pkg syscall (freebsd-arm-cgo), const SYS_KENV = 390 pkg syscall (freebsd-arm-cgo), const SYS_KEVENT = 363 pkg syscall (freebsd-arm-cgo), const SYS_KILL = 37 pkg syscall (freebsd-arm-cgo), const SYS_KLDFIND = 306 pkg syscall (freebsd-arm-cgo), const SYS_KLDFIRSTMOD = 309 pkg syscall (freebsd-arm-cgo), const SYS_KLDLOAD = 304 pkg syscall (freebsd-arm-cgo), const SYS_KLDNEXT = 307 pkg syscall (freebsd-arm-cgo), const SYS_KLDSTAT = 308 pkg syscall (freebsd-arm-cgo), const SYS_KLDSYM = 337 pkg syscall (freebsd-arm-cgo), const SYS_KLDUNLOAD = 305 pkg syscall (freebsd-arm-cgo), const SYS_KLDUNLOADF = 444 pkg syscall (freebsd-arm-cgo), const SYS_KQUEUE = 362 pkg syscall (freebsd-arm-cgo), const SYS_KTIMER_CREATE = 235 pkg syscall (freebsd-arm-cgo), const SYS_KTIMER_DELETE = 236 pkg syscall (freebsd-arm-cgo), const SYS_KTIMER_GETOVERRUN = 239 pkg syscall (freebsd-arm-cgo), const SYS_KTIMER_GETTIME = 238 pkg syscall (freebsd-arm-cgo), const SYS_KTIMER_SETTIME = 237 pkg syscall (freebsd-arm-cgo), const SYS_KTRACE = 45 pkg syscall (freebsd-arm-cgo), const SYS_LCHFLAGS = 391 pkg syscall (freebsd-arm-cgo), const SYS_LCHMOD = 274 pkg syscall (freebsd-arm-cgo), const SYS_LCHOWN = 254 pkg syscall (freebsd-arm-cgo), const SYS_LGETFH = 160 pkg syscall (freebsd-arm-cgo), const SYS_LINK = 9 pkg syscall (freebsd-arm-cgo), const SYS_LINKAT = 495 pkg syscall (freebsd-arm-cgo), const SYS_LISTEN = 106 pkg syscall (freebsd-arm-cgo), const SYS_LPATHCONF = 513 pkg syscall (freebsd-arm-cgo), const SYS_LSEEK = 478 pkg syscall (freebsd-arm-cgo), const SYS_LSTAT = 190 pkg syscall (freebsd-arm-cgo), const SYS_LUTIMES = 276 pkg syscall (freebsd-arm-cgo), const SYS_MAC_SYSCALL = 394 pkg syscall (freebsd-arm-cgo), const SYS_MADVISE = 75 pkg syscall (freebsd-arm-cgo), const SYS_MINCORE = 78 pkg syscall (freebsd-arm-cgo), const SYS_MINHERIT = 250 pkg syscall (freebsd-arm-cgo), const SYS_MKDIR = 136 pkg syscall (freebsd-arm-cgo), const SYS_MKDIRAT = 496 pkg syscall (freebsd-arm-cgo), const SYS_MKFIFO = 132 pkg syscall (freebsd-arm-cgo), const SYS_MKFIFOAT = 497 pkg syscall (freebsd-arm-cgo), const SYS_MKNOD = 14 pkg syscall (freebsd-arm-cgo), const SYS_MKNODAT = 498 pkg syscall (freebsd-arm-cgo), const SYS_MLOCK = 203 pkg syscall (freebsd-arm-cgo), const SYS_MLOCKALL = 324 pkg syscall (freebsd-arm-cgo), const SYS_MMAP = 477 pkg syscall (freebsd-arm-cgo), const SYS_MODFIND = 303 pkg syscall (freebsd-arm-cgo), const SYS_MODFNEXT = 302 pkg syscall (freebsd-arm-cgo), const SYS_MODNEXT = 300 pkg syscall (freebsd-arm-cgo), const SYS_MODSTAT = 301 pkg syscall (freebsd-arm-cgo), const SYS_MOUNT = 21 pkg syscall (freebsd-arm-cgo), const SYS_MPROTECT = 74 pkg syscall (freebsd-arm-cgo), const SYS_MSYNC = 65 pkg syscall (freebsd-arm-cgo), const SYS_MUNLOCK = 204 pkg syscall (freebsd-arm-cgo), const SYS_MUNLOCKALL = 325 pkg syscall (freebsd-arm-cgo), const SYS_MUNMAP = 73 pkg syscall (freebsd-arm-cgo), const SYS_NANOSLEEP = 240 pkg syscall (freebsd-arm-cgo), const SYS_NFSTAT = 279 pkg syscall (freebsd-arm-cgo), const SYS_NLSTAT = 280 pkg syscall (freebsd-arm-cgo), const SYS_NMOUNT = 378 pkg syscall (freebsd-arm-cgo), const SYS_NSTAT = 278 pkg syscall (freebsd-arm-cgo), const SYS_NTP_ADJTIME = 176 pkg syscall (freebsd-arm-cgo), const SYS_NTP_GETTIME = 248 pkg syscall (freebsd-arm-cgo), const SYS_OBREAK = 17 pkg syscall (freebsd-arm-cgo), const SYS_OPEN = 5 pkg syscall (freebsd-arm-cgo), const SYS_OPENAT = 499 pkg syscall (freebsd-arm-cgo), const SYS_OPENBSD_POLL = 252 pkg syscall (freebsd-arm-cgo), const SYS_OVADVISE = 72 pkg syscall (freebsd-arm-cgo), const SYS_PATHCONF = 191 pkg syscall (freebsd-arm-cgo), const SYS_PDFORK = 518 pkg syscall (freebsd-arm-cgo), const SYS_PDGETPID = 520 pkg syscall (freebsd-arm-cgo), const SYS_PDKILL = 519 pkg syscall (freebsd-arm-cgo), const SYS_PIPE = 42 pkg syscall (freebsd-arm-cgo), const SYS_POLL = 209 pkg syscall (freebsd-arm-cgo), const SYS_POSIX_FADVISE = 531 pkg syscall (freebsd-arm-cgo), const SYS_POSIX_FALLOCATE = 530 pkg syscall (freebsd-arm-cgo), const SYS_POSIX_OPENPT = 504 pkg syscall (freebsd-arm-cgo), const SYS_PREAD = 475 pkg syscall (freebsd-arm-cgo), const SYS_PREADV = 289 pkg syscall (freebsd-arm-cgo), const SYS_PROFIL = 44 pkg syscall (freebsd-arm-cgo), const SYS_PSELECT = 522 pkg syscall (freebsd-arm-cgo), const SYS_PTRACE = 26 pkg syscall (freebsd-arm-cgo), const SYS_PWRITE = 476 pkg syscall (freebsd-arm-cgo), const SYS_PWRITEV = 290 pkg syscall (freebsd-arm-cgo), const SYS_QUOTACTL = 148 pkg syscall (freebsd-arm-cgo), const SYS_RCTL_ADD_RULE = 528 pkg syscall (freebsd-arm-cgo), const SYS_RCTL_GET_LIMITS = 527 pkg syscall (freebsd-arm-cgo), const SYS_RCTL_GET_RACCT = 525 pkg syscall (freebsd-arm-cgo), const SYS_RCTL_GET_RULES = 526 pkg syscall (freebsd-arm-cgo), const SYS_RCTL_REMOVE_RULE = 529 pkg syscall (freebsd-arm-cgo), const SYS_READ = 3 pkg syscall (freebsd-arm-cgo), const SYS_READLINK = 58 pkg syscall (freebsd-arm-cgo), const SYS_READLINKAT = 500 pkg syscall (freebsd-arm-cgo), const SYS_READV = 120 pkg syscall (freebsd-arm-cgo), const SYS_REBOOT = 55 pkg syscall (freebsd-arm-cgo), const SYS_RECVFROM = 29 pkg syscall (freebsd-arm-cgo), const SYS_RECVMSG = 27 pkg syscall (freebsd-arm-cgo), const SYS_RENAME = 128 pkg syscall (freebsd-arm-cgo), const SYS_RENAMEAT = 501 pkg syscall (freebsd-arm-cgo), const SYS_REVOKE = 56 pkg syscall (freebsd-arm-cgo), const SYS_RFORK = 251 pkg syscall (freebsd-arm-cgo), const SYS_RMDIR = 137 pkg syscall (freebsd-arm-cgo), const SYS_RTPRIO = 166 pkg syscall (freebsd-arm-cgo), const SYS_RTPRIO_THREAD = 466 pkg syscall (freebsd-arm-cgo), const SYS_SBRK = 69 pkg syscall (freebsd-arm-cgo), const SYS_SCHED_GETPARAM = 328 pkg syscall (freebsd-arm-cgo), const SYS_SCHED_GETSCHEDULER = 330 pkg syscall (freebsd-arm-cgo), const SYS_SCHED_GET_PRIORITY_MAX = 332 pkg syscall (freebsd-arm-cgo), const SYS_SCHED_GET_PRIORITY_MIN = 333 pkg syscall (freebsd-arm-cgo), const SYS_SCHED_RR_GET_INTERVAL = 334 pkg syscall (freebsd-arm-cgo), const SYS_SCHED_SETPARAM = 327 pkg syscall (freebsd-arm-cgo), const SYS_SCHED_SETSCHEDULER = 329 pkg syscall (freebsd-arm-cgo), const SYS_SCHED_YIELD = 331 pkg syscall (freebsd-arm-cgo), const SYS_SCTP_GENERIC_RECVMSG = 474 pkg syscall (freebsd-arm-cgo), const SYS_SCTP_GENERIC_SENDMSG = 472 pkg syscall (freebsd-arm-cgo), const SYS_SCTP_GENERIC_SENDMSG_IOV = 473 pkg syscall (freebsd-arm-cgo), const SYS_SCTP_PEELOFF = 471 pkg syscall (freebsd-arm-cgo), const SYS_SELECT = 93 pkg syscall (freebsd-arm-cgo), const SYS_SENDFILE = 393 pkg syscall (freebsd-arm-cgo), const SYS_SENDMSG = 28 pkg syscall (freebsd-arm-cgo), const SYS_SENDTO = 133 pkg syscall (freebsd-arm-cgo), const SYS_SETAUDIT = 450 pkg syscall (freebsd-arm-cgo), const SYS_SETAUDIT_ADDR = 452 pkg syscall (freebsd-arm-cgo), const SYS_SETAUID = 448 pkg syscall (freebsd-arm-cgo), const SYS_SETCONTEXT = 422 pkg syscall (freebsd-arm-cgo), const SYS_SETEGID = 182 pkg syscall (freebsd-arm-cgo), const SYS_SETEUID = 183 pkg syscall (freebsd-arm-cgo), const SYS_SETFIB = 175 pkg syscall (freebsd-arm-cgo), const SYS_SETGID = 181 pkg syscall (freebsd-arm-cgo), const SYS_SETGROUPS = 80 pkg syscall (freebsd-arm-cgo), const SYS_SETITIMER = 83 pkg syscall (freebsd-arm-cgo), const SYS_SETLOGIN = 50 pkg syscall (freebsd-arm-cgo), const SYS_SETLOGINCLASS = 524 pkg syscall (freebsd-arm-cgo), const SYS_SETPGID = 82 pkg syscall (freebsd-arm-cgo), const SYS_SETPRIORITY = 96 pkg syscall (freebsd-arm-cgo), const SYS_SETREGID = 127 pkg syscall (freebsd-arm-cgo), const SYS_SETRESGID = 312 pkg syscall (freebsd-arm-cgo), const SYS_SETRESUID = 311 pkg syscall (freebsd-arm-cgo), const SYS_SETREUID = 126 pkg syscall (freebsd-arm-cgo), const SYS_SETRLIMIT = 195 pkg syscall (freebsd-arm-cgo), const SYS_SETSID = 147 pkg syscall (freebsd-arm-cgo), const SYS_SETSOCKOPT = 105 pkg syscall (freebsd-arm-cgo), const SYS_SETTIMEOFDAY = 122 pkg syscall (freebsd-arm-cgo), const SYS_SETUID = 23 pkg syscall (freebsd-arm-cgo), const SYS_SHM_OPEN = 482 pkg syscall (freebsd-arm-cgo), const SYS_SHM_UNLINK = 483 pkg syscall (freebsd-arm-cgo), const SYS_SHUTDOWN = 134 pkg syscall (freebsd-arm-cgo), const SYS_SIGACTION = 416 pkg syscall (freebsd-arm-cgo), const SYS_SIGALTSTACK = 53 pkg syscall (freebsd-arm-cgo), const SYS_SIGPENDING = 343 pkg syscall (freebsd-arm-cgo), const SYS_SIGPROCMASK = 340 pkg syscall (freebsd-arm-cgo), const SYS_SIGQUEUE = 456 pkg syscall (freebsd-arm-cgo), const SYS_SIGRETURN = 417 pkg syscall (freebsd-arm-cgo), const SYS_SIGSUSPEND = 341 pkg syscall (freebsd-arm-cgo), const SYS_SIGTIMEDWAIT = 345 pkg syscall (freebsd-arm-cgo), const SYS_SIGWAIT = 429 pkg syscall (freebsd-arm-cgo), const SYS_SIGWAITINFO = 346 pkg syscall (freebsd-arm-cgo), const SYS_SOCKET = 97 pkg syscall (freebsd-arm-cgo), const SYS_SOCKETPAIR = 135 pkg syscall (freebsd-arm-cgo), const SYS_SSTK = 70 pkg syscall (freebsd-arm-cgo), const SYS_STAT = 188 pkg syscall (freebsd-arm-cgo), const SYS_STATFS = 396 pkg syscall (freebsd-arm-cgo), const SYS_SWAPCONTEXT = 423 pkg syscall (freebsd-arm-cgo), const SYS_SWAPOFF = 424 pkg syscall (freebsd-arm-cgo), const SYS_SWAPON = 85 pkg syscall (freebsd-arm-cgo), const SYS_SYMLINK = 57 pkg syscall (freebsd-arm-cgo), const SYS_SYMLINKAT = 502 pkg syscall (freebsd-arm-cgo), const SYS_SYNC = 36 pkg syscall (freebsd-arm-cgo), const SYS_SYSARCH = 165 pkg syscall (freebsd-arm-cgo), const SYS_THR_CREATE = 430 pkg syscall (freebsd-arm-cgo), const SYS_THR_EXIT = 431 pkg syscall (freebsd-arm-cgo), const SYS_THR_KILL = 433 pkg syscall (freebsd-arm-cgo), const SYS_THR_KILL2 = 481 pkg syscall (freebsd-arm-cgo), const SYS_THR_NEW = 455 pkg syscall (freebsd-arm-cgo), const SYS_THR_SELF = 432 pkg syscall (freebsd-arm-cgo), const SYS_THR_SET_NAME = 464 pkg syscall (freebsd-arm-cgo), const SYS_THR_SUSPEND = 442 pkg syscall (freebsd-arm-cgo), const SYS_THR_WAKE = 443 pkg syscall (freebsd-arm-cgo), const SYS_TRUNCATE = 479 pkg syscall (freebsd-arm-cgo), const SYS_UMASK = 60 pkg syscall (freebsd-arm-cgo), const SYS_UNDELETE = 205 pkg syscall (freebsd-arm-cgo), const SYS_UNLINK = 10 pkg syscall (freebsd-arm-cgo), const SYS_UNLINKAT = 503 pkg syscall (freebsd-arm-cgo), const SYS_UNMOUNT = 22 pkg syscall (freebsd-arm-cgo), const SYS_UTIMES = 138 pkg syscall (freebsd-arm-cgo), const SYS_UTRACE = 335 pkg syscall (freebsd-arm-cgo), const SYS_UUIDGEN = 392 pkg syscall (freebsd-arm-cgo), const SYS_VFORK = 66 pkg syscall (freebsd-arm-cgo), const SYS_WAIT4 = 7 pkg syscall (freebsd-arm-cgo), const SYS_WAIT6 = 532 pkg syscall (freebsd-arm-cgo), const SYS_WRITE = 4 pkg syscall (freebsd-arm-cgo), const SYS_WRITEV = 121 pkg syscall (freebsd-arm-cgo), const SYS_YIELD = 321 pkg syscall (freebsd-arm-cgo), const SYS__UMTX_LOCK = 434 pkg syscall (freebsd-arm-cgo), const SYS__UMTX_OP = 454 pkg syscall (freebsd-arm-cgo), const SYS__UMTX_UNLOCK = 435 pkg syscall (freebsd-arm-cgo), const SYS___ACL_ACLCHECK_FD = 354 pkg syscall (freebsd-arm-cgo), const SYS___ACL_ACLCHECK_FILE = 353 pkg syscall (freebsd-arm-cgo), const SYS___ACL_ACLCHECK_LINK = 428 pkg syscall (freebsd-arm-cgo), const SYS___ACL_DELETE_FD = 352 pkg syscall (freebsd-arm-cgo), const SYS___ACL_DELETE_FILE = 351 pkg syscall (freebsd-arm-cgo), const SYS___ACL_DELETE_LINK = 427 pkg syscall (freebsd-arm-cgo), const SYS___ACL_GET_FD = 349 pkg syscall (freebsd-arm-cgo), const SYS___ACL_GET_FILE = 347 pkg syscall (freebsd-arm-cgo), const SYS___ACL_GET_LINK = 425 pkg syscall (freebsd-arm-cgo), const SYS___ACL_SET_FD = 350 pkg syscall (freebsd-arm-cgo), const SYS___ACL_SET_FILE = 348 pkg syscall (freebsd-arm-cgo), const SYS___ACL_SET_LINK = 426 pkg syscall (freebsd-arm-cgo), const SYS___GETCWD = 326 pkg syscall (freebsd-arm-cgo), const SYS___MAC_EXECVE = 415 pkg syscall (freebsd-arm-cgo), const SYS___MAC_GET_FD = 386 pkg syscall (freebsd-arm-cgo), const SYS___MAC_GET_FILE = 387 pkg syscall (freebsd-arm-cgo), const SYS___MAC_GET_LINK = 410 pkg syscall (freebsd-arm-cgo), const SYS___MAC_GET_PID = 409 pkg syscall (freebsd-arm-cgo), const SYS___MAC_GET_PROC = 384 pkg syscall (freebsd-arm-cgo), const SYS___MAC_SET_FD = 388 pkg syscall (freebsd-arm-cgo), const SYS___MAC_SET_FILE = 389 pkg syscall (freebsd-arm-cgo), const SYS___MAC_SET_LINK = 411 pkg syscall (freebsd-arm-cgo), const SYS___MAC_SET_PROC = 385 pkg syscall (freebsd-arm-cgo), const SYS___SETUGID = 374 pkg syscall (freebsd-arm-cgo), const SYS___SYSCTL = 202 pkg syscall (freebsd-arm-cgo), const S_IFMT = 61440 pkg syscall (freebsd-arm-cgo), const SizeofBpfHdr = 24 pkg syscall (freebsd-arm-cgo), const SizeofBpfInsn = 8 pkg syscall (freebsd-arm-cgo), const SizeofBpfProgram = 8 pkg syscall (freebsd-arm-cgo), const SizeofBpfStat = 8 pkg syscall (freebsd-arm-cgo), const SizeofBpfVersion = 4 pkg syscall (freebsd-arm-cgo), const SizeofBpfZbuf = 12 pkg syscall (freebsd-arm-cgo), const SizeofBpfZbufHeader = 32 pkg syscall (freebsd-arm-cgo), const SizeofCmsghdr = 12 pkg syscall (freebsd-arm-cgo), const SizeofIPMreq = 8 pkg syscall (freebsd-arm-cgo), const SizeofIPMreqn = 12 pkg syscall (freebsd-arm-cgo), const SizeofIPv6Mreq = 20 pkg syscall (freebsd-arm-cgo), const SizeofIfAnnounceMsghdr = 24 pkg syscall (freebsd-arm-cgo), const SizeofIfData = 88 pkg syscall (freebsd-arm-cgo), const SizeofIfMsghdr = 104 pkg syscall (freebsd-arm-cgo), const SizeofIfaMsghdr = 20 pkg syscall (freebsd-arm-cgo), const SizeofIfmaMsghdr = 16 pkg syscall (freebsd-arm-cgo), const SizeofInet6Pktinfo = 20 pkg syscall (freebsd-arm-cgo), const SizeofLinger = 8 pkg syscall (freebsd-arm-cgo), const SizeofMsghdr = 28 pkg syscall (freebsd-arm-cgo), const SizeofRtMetrics = 56 pkg syscall (freebsd-arm-cgo), const SizeofRtMsghdr = 92 pkg syscall (freebsd-arm-cgo), const SizeofSockaddrAny = 108 pkg syscall (freebsd-arm-cgo), const SizeofSockaddrDatalink = 56 pkg syscall (freebsd-arm-cgo), const SizeofSockaddrInet4 = 16 pkg syscall (freebsd-arm-cgo), const SizeofSockaddrInet6 = 28 pkg syscall (freebsd-arm-cgo), const SizeofSockaddrUnix = 108 pkg syscall (freebsd-arm-cgo), const TCIFLUSH = 1 pkg syscall (freebsd-arm-cgo), const TCIOFLUSH = 3 pkg syscall (freebsd-arm-cgo), const TCOFLUSH = 2 pkg syscall (freebsd-arm-cgo), const TCP_CA_NAME_MAX = 16 pkg syscall (freebsd-arm-cgo), const TCP_CONGESTION = 64 pkg syscall (freebsd-arm-cgo), const TCP_INFO = 32 pkg syscall (freebsd-arm-cgo), const TCP_KEEPCNT = 1024 pkg syscall (freebsd-arm-cgo), const TCP_KEEPIDLE = 256 pkg syscall (freebsd-arm-cgo), const TCP_KEEPINIT = 128 pkg syscall (freebsd-arm-cgo), const TCP_KEEPINTVL = 512 pkg syscall (freebsd-arm-cgo), const TCP_MAXBURST = 4 pkg syscall (freebsd-arm-cgo), const TCP_MAXHLEN = 60 pkg syscall (freebsd-arm-cgo), const TCP_MAXOLEN = 40 pkg syscall (freebsd-arm-cgo), const TCP_MAXSEG = 2 pkg syscall (freebsd-arm-cgo), const TCP_MAXWIN = 65535 pkg syscall (freebsd-arm-cgo), const TCP_MAX_SACK = 4 pkg syscall (freebsd-arm-cgo), const TCP_MAX_WINSHIFT = 14 pkg syscall (freebsd-arm-cgo), const TCP_MD5SIG = 16 pkg syscall (freebsd-arm-cgo), const TCP_MINMSS = 216 pkg syscall (freebsd-arm-cgo), const TCP_MSS = 536 pkg syscall (freebsd-arm-cgo), const TCP_NOOPT = 8 pkg syscall (freebsd-arm-cgo), const TCP_NOPUSH = 4 pkg syscall (freebsd-arm-cgo), const TCSAFLUSH = 2 pkg syscall (freebsd-arm-cgo), const TIOCCBRK = 536900730 pkg syscall (freebsd-arm-cgo), const TIOCCDTR = 536900728 pkg syscall (freebsd-arm-cgo), const TIOCCONS = 2147775586 pkg syscall (freebsd-arm-cgo), const TIOCDRAIN = 536900702 pkg syscall (freebsd-arm-cgo), const TIOCEXCL = 536900621 pkg syscall (freebsd-arm-cgo), const TIOCEXT = 2147775584 pkg syscall (freebsd-arm-cgo), const TIOCFLUSH = 2147775504 pkg syscall (freebsd-arm-cgo), const TIOCGDRAINWAIT = 1074033750 pkg syscall (freebsd-arm-cgo), const TIOCGETA = 1076655123 pkg syscall (freebsd-arm-cgo), const TIOCGETD = 1074033690 pkg syscall (freebsd-arm-cgo), const TIOCGPGRP = 1074033783 pkg syscall (freebsd-arm-cgo), const TIOCGPTN = 1074033679 pkg syscall (freebsd-arm-cgo), const TIOCGSID = 1074033763 pkg syscall (freebsd-arm-cgo), const TIOCGWINSZ = 1074295912 pkg syscall (freebsd-arm-cgo), const TIOCMBIC = 2147775595 pkg syscall (freebsd-arm-cgo), const TIOCMBIS = 2147775596 pkg syscall (freebsd-arm-cgo), const TIOCMGDTRWAIT = 1074033754 pkg syscall (freebsd-arm-cgo), const TIOCMGET = 1074033770 pkg syscall (freebsd-arm-cgo), const TIOCMSDTRWAIT = 2147775579 pkg syscall (freebsd-arm-cgo), const TIOCMSET = 2147775597 pkg syscall (freebsd-arm-cgo), const TIOCM_CAR = 64 pkg syscall (freebsd-arm-cgo), const TIOCM_CD = 64 pkg syscall (freebsd-arm-cgo), const TIOCM_CTS = 32 pkg syscall (freebsd-arm-cgo), const TIOCM_DCD = 64 pkg syscall (freebsd-arm-cgo), const TIOCM_DSR = 256 pkg syscall (freebsd-arm-cgo), const TIOCM_DTR = 2 pkg syscall (freebsd-arm-cgo), const TIOCM_LE = 1 pkg syscall (freebsd-arm-cgo), const TIOCM_RI = 128 pkg syscall (freebsd-arm-cgo), const TIOCM_RNG = 128 pkg syscall (freebsd-arm-cgo), const TIOCM_RTS = 4 pkg syscall (freebsd-arm-cgo), const TIOCM_SR = 16 pkg syscall (freebsd-arm-cgo), const TIOCM_ST = 8 pkg syscall (freebsd-arm-cgo), const TIOCNOTTY = 536900721 pkg syscall (freebsd-arm-cgo), const TIOCNXCL = 536900622 pkg syscall (freebsd-arm-cgo), const TIOCOUTQ = 1074033779 pkg syscall (freebsd-arm-cgo), const TIOCPKT = 2147775600 pkg syscall (freebsd-arm-cgo), const TIOCPKT_DATA = 0 pkg syscall (freebsd-arm-cgo), const TIOCPKT_DOSTOP = 32 pkg syscall (freebsd-arm-cgo), const TIOCPKT_FLUSHREAD = 1 pkg syscall (freebsd-arm-cgo), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (freebsd-arm-cgo), const TIOCPKT_IOCTL = 64 pkg syscall (freebsd-arm-cgo), const TIOCPKT_NOSTOP = 16 pkg syscall (freebsd-arm-cgo), const TIOCPKT_START = 8 pkg syscall (freebsd-arm-cgo), const TIOCPKT_STOP = 4 pkg syscall (freebsd-arm-cgo), const TIOCPTMASTER = 536900636 pkg syscall (freebsd-arm-cgo), const TIOCSBRK = 536900731 pkg syscall (freebsd-arm-cgo), const TIOCSCTTY = 536900705 pkg syscall (freebsd-arm-cgo), const TIOCSDRAINWAIT = 2147775575 pkg syscall (freebsd-arm-cgo), const TIOCSDTR = 536900729 pkg syscall (freebsd-arm-cgo), const TIOCSETA = 2150396948 pkg syscall (freebsd-arm-cgo), const TIOCSETAF = 2150396950 pkg syscall (freebsd-arm-cgo), const TIOCSETAW = 2150396949 pkg syscall (freebsd-arm-cgo), const TIOCSETD = 2147775515 pkg syscall (freebsd-arm-cgo), const TIOCSIG = 537162847 pkg syscall (freebsd-arm-cgo), const TIOCSPGRP = 2147775606 pkg syscall (freebsd-arm-cgo), const TIOCSTART = 536900718 pkg syscall (freebsd-arm-cgo), const TIOCSTAT = 536900709 pkg syscall (freebsd-arm-cgo), const TIOCSTI = 2147578994 pkg syscall (freebsd-arm-cgo), const TIOCSTOP = 536900719 pkg syscall (freebsd-arm-cgo), const TIOCSWINSZ = 2148037735 pkg syscall (freebsd-arm-cgo), const TIOCTIMESTAMP = 1074558041 pkg syscall (freebsd-arm-cgo), const TIOCUCNTL = 2147775590 pkg syscall (freebsd-arm-cgo), const TOSTOP = 4194304 pkg syscall (freebsd-arm-cgo), const VDISCARD = 15 pkg syscall (freebsd-arm-cgo), const VDSUSP = 11 pkg syscall (freebsd-arm-cgo), const VEOF = 0 pkg syscall (freebsd-arm-cgo), const VEOL = 1 pkg syscall (freebsd-arm-cgo), const VEOL2 = 2 pkg syscall (freebsd-arm-cgo), const VERASE = 3 pkg syscall (freebsd-arm-cgo), const VERASE2 = 7 pkg syscall (freebsd-arm-cgo), const VINTR = 8 pkg syscall (freebsd-arm-cgo), const VKILL = 5 pkg syscall (freebsd-arm-cgo), const VLNEXT = 14 pkg syscall (freebsd-arm-cgo), const VMIN = 16 pkg syscall (freebsd-arm-cgo), const VQUIT = 9 pkg syscall (freebsd-arm-cgo), const VREPRINT = 6 pkg syscall (freebsd-arm-cgo), const VSTART = 12 pkg syscall (freebsd-arm-cgo), const VSTATUS = 18 pkg syscall (freebsd-arm-cgo), const VSTOP = 13 pkg syscall (freebsd-arm-cgo), const VSUSP = 10 pkg syscall (freebsd-arm-cgo), const VTIME = 17 pkg syscall (freebsd-arm-cgo), const VWERASE = 4 pkg syscall (freebsd-arm-cgo), const WCONTINUED = 4 pkg syscall (freebsd-arm-cgo), const WCOREFLAG = 128 pkg syscall (freebsd-arm-cgo), const WEXITED = 16 pkg syscall (freebsd-arm-cgo), const WLINUXCLONE = 2147483648 pkg syscall (freebsd-arm-cgo), const WNOHANG = 1 pkg syscall (freebsd-arm-cgo), const WNOWAIT = 8 pkg syscall (freebsd-arm-cgo), const WSTOPPED = 2 pkg syscall (freebsd-arm-cgo), const WTRAPPED = 32 pkg syscall (freebsd-arm-cgo), const WUNTRACED = 2 pkg syscall (linux-386), const AF_ALG = 38 pkg syscall (linux-386), const AF_APPLETALK = 5 pkg syscall (linux-386), const AF_ASH = 18 pkg syscall (linux-386), const AF_ATMPVC = 8 pkg syscall (linux-386), const AF_ATMSVC = 20 pkg syscall (linux-386), const AF_AX25 = 3 pkg syscall (linux-386), const AF_BLUETOOTH = 31 pkg syscall (linux-386), const AF_BRIDGE = 7 pkg syscall (linux-386), const AF_CAIF = 37 pkg syscall (linux-386), const AF_CAN = 29 pkg syscall (linux-386), const AF_DECnet = 12 pkg syscall (linux-386), const AF_ECONET = 19 pkg syscall (linux-386), const AF_FILE = 1 pkg syscall (linux-386), const AF_IEEE802154 = 36 pkg syscall (linux-386), const AF_INET6 = 10 pkg syscall (linux-386), const AF_IPX = 4 pkg syscall (linux-386), const AF_IRDA = 23 pkg syscall (linux-386), const AF_ISDN = 34 pkg syscall (linux-386), const AF_IUCV = 32 pkg syscall (linux-386), const AF_KEY = 15 pkg syscall (linux-386), const AF_LLC = 26 pkg syscall (linux-386), const AF_LOCAL = 1 pkg syscall (linux-386), const AF_MAX = 39 pkg syscall (linux-386), const AF_NETBEUI = 13 pkg syscall (linux-386), const AF_NETLINK = 16 pkg syscall (linux-386), const AF_NETROM = 6 pkg syscall (linux-386), const AF_PACKET = 17 pkg syscall (linux-386), const AF_PHONET = 35 pkg syscall (linux-386), const AF_PPPOX = 24 pkg syscall (linux-386), const AF_RDS = 21 pkg syscall (linux-386), const AF_ROSE = 11 pkg syscall (linux-386), const AF_ROUTE = 16 pkg syscall (linux-386), const AF_RXRPC = 33 pkg syscall (linux-386), const AF_SECURITY = 14 pkg syscall (linux-386), const AF_SNA = 22 pkg syscall (linux-386), const AF_TIPC = 30 pkg syscall (linux-386), const AF_WANPIPE = 25 pkg syscall (linux-386), const AF_X25 = 9 pkg syscall (linux-386), const ARPHRD_ADAPT = 264 pkg syscall (linux-386), const ARPHRD_APPLETLK = 8 pkg syscall (linux-386), const ARPHRD_ARCNET = 7 pkg syscall (linux-386), const ARPHRD_ASH = 781 pkg syscall (linux-386), const ARPHRD_ATM = 19 pkg syscall (linux-386), const ARPHRD_AX25 = 3 pkg syscall (linux-386), const ARPHRD_BIF = 775 pkg syscall (linux-386), const ARPHRD_CHAOS = 5 pkg syscall (linux-386), const ARPHRD_CISCO = 513 pkg syscall (linux-386), const ARPHRD_CSLIP = 257 pkg syscall (linux-386), const ARPHRD_CSLIP6 = 259 pkg syscall (linux-386), const ARPHRD_DDCMP = 517 pkg syscall (linux-386), const ARPHRD_DLCI = 15 pkg syscall (linux-386), const ARPHRD_ECONET = 782 pkg syscall (linux-386), const ARPHRD_EETHER = 2 pkg syscall (linux-386), const ARPHRD_ETHER = 1 pkg syscall (linux-386), const ARPHRD_EUI64 = 27 pkg syscall (linux-386), const ARPHRD_FCAL = 785 pkg syscall (linux-386), const ARPHRD_FCFABRIC = 787 pkg syscall (linux-386), const ARPHRD_FCPL = 786 pkg syscall (linux-386), const ARPHRD_FCPP = 784 pkg syscall (linux-386), const ARPHRD_FDDI = 774 pkg syscall (linux-386), const ARPHRD_FRAD = 770 pkg syscall (linux-386), const ARPHRD_HDLC = 513 pkg syscall (linux-386), const ARPHRD_HIPPI = 780 pkg syscall (linux-386), const ARPHRD_HWX25 = 272 pkg syscall (linux-386), const ARPHRD_IEEE1394 = 24 pkg syscall (linux-386), const ARPHRD_IEEE802 = 6 pkg syscall (linux-386), const ARPHRD_IEEE80211 = 801 pkg syscall (linux-386), const ARPHRD_IEEE80211_PRISM = 802 pkg syscall (linux-386), const ARPHRD_IEEE80211_RADIOTAP = 803 pkg syscall (linux-386), const ARPHRD_IEEE802154 = 804 pkg syscall (linux-386), const ARPHRD_IEEE802154_PHY = 805 pkg syscall (linux-386), const ARPHRD_IEEE802_TR = 800 pkg syscall (linux-386), const ARPHRD_INFINIBAND = 32 pkg syscall (linux-386), const ARPHRD_IPDDP = 777 pkg syscall (linux-386), const ARPHRD_IPGRE = 778 pkg syscall (linux-386), const ARPHRD_IRDA = 783 pkg syscall (linux-386), const ARPHRD_LAPB = 516 pkg syscall (linux-386), const ARPHRD_LOCALTLK = 773 pkg syscall (linux-386), const ARPHRD_LOOPBACK = 772 pkg syscall (linux-386), const ARPHRD_METRICOM = 23 pkg syscall (linux-386), const ARPHRD_NETROM = 0 pkg syscall (linux-386), const ARPHRD_NONE = 65534 pkg syscall (linux-386), const ARPHRD_PIMREG = 779 pkg syscall (linux-386), const ARPHRD_PPP = 512 pkg syscall (linux-386), const ARPHRD_PRONET = 4 pkg syscall (linux-386), const ARPHRD_RAWHDLC = 518 pkg syscall (linux-386), const ARPHRD_ROSE = 270 pkg syscall (linux-386), const ARPHRD_RSRVD = 260 pkg syscall (linux-386), const ARPHRD_SIT = 776 pkg syscall (linux-386), const ARPHRD_SKIP = 771 pkg syscall (linux-386), const ARPHRD_SLIP = 256 pkg syscall (linux-386), const ARPHRD_SLIP6 = 258 pkg syscall (linux-386), const ARPHRD_TUNNEL = 768 pkg syscall (linux-386), const ARPHRD_TUNNEL6 = 769 pkg syscall (linux-386), const ARPHRD_VOID = 65535 pkg syscall (linux-386), const ARPHRD_X25 = 271 pkg syscall (linux-386), const B0 = 0 pkg syscall (linux-386), const B1000000 = 4104 pkg syscall (linux-386), const B110 = 3 pkg syscall (linux-386), const B115200 = 4098 pkg syscall (linux-386), const B1152000 = 4105 pkg syscall (linux-386), const B1200 = 9 pkg syscall (linux-386), const B134 = 4 pkg syscall (linux-386), const B150 = 5 pkg syscall (linux-386), const B1500000 = 4106 pkg syscall (linux-386), const B1800 = 10 pkg syscall (linux-386), const B19200 = 14 pkg syscall (linux-386), const B200 = 6 pkg syscall (linux-386), const B2000000 = 4107 pkg syscall (linux-386), const B230400 = 4099 pkg syscall (linux-386), const B2400 = 11 pkg syscall (linux-386), const B2500000 = 4108 pkg syscall (linux-386), const B300 = 7 pkg syscall (linux-386), const B3000000 = 4109 pkg syscall (linux-386), const B3500000 = 4110 pkg syscall (linux-386), const B38400 = 15 pkg syscall (linux-386), const B4000000 = 4111 pkg syscall (linux-386), const B460800 = 4100 pkg syscall (linux-386), const B4800 = 12 pkg syscall (linux-386), const B50 = 1 pkg syscall (linux-386), const B500000 = 4101 pkg syscall (linux-386), const B57600 = 4097 pkg syscall (linux-386), const B576000 = 4102 pkg syscall (linux-386), const B600 = 8 pkg syscall (linux-386), const B75 = 2 pkg syscall (linux-386), const B921600 = 4103 pkg syscall (linux-386), const B9600 = 13 pkg syscall (linux-386), const BPF_A = 16 pkg syscall (linux-386), const BPF_ABS = 32 pkg syscall (linux-386), const BPF_ADD = 0 pkg syscall (linux-386), const BPF_ALU = 4 pkg syscall (linux-386), const BPF_AND = 80 pkg syscall (linux-386), const BPF_B = 16 pkg syscall (linux-386), const BPF_DIV = 48 pkg syscall (linux-386), const BPF_H = 8 pkg syscall (linux-386), const BPF_IMM = 0 pkg syscall (linux-386), const BPF_IND = 64 pkg syscall (linux-386), const BPF_JA = 0 pkg syscall (linux-386), const BPF_JEQ = 16 pkg syscall (linux-386), const BPF_JGE = 48 pkg syscall (linux-386), const BPF_JGT = 32 pkg syscall (linux-386), const BPF_JMP = 5 pkg syscall (linux-386), const BPF_JSET = 64 pkg syscall (linux-386), const BPF_K = 0 pkg syscall (linux-386), const BPF_LD = 0 pkg syscall (linux-386), const BPF_LDX = 1 pkg syscall (linux-386), const BPF_LEN = 128 pkg syscall (linux-386), const BPF_LSH = 96 pkg syscall (linux-386), const BPF_MAJOR_VERSION = 1 pkg syscall (linux-386), const BPF_MAXINSNS = 4096 pkg syscall (linux-386), const BPF_MEM = 96 pkg syscall (linux-386), const BPF_MEMWORDS = 16 pkg syscall (linux-386), const BPF_MINOR_VERSION = 1 pkg syscall (linux-386), const BPF_MISC = 7 pkg syscall (linux-386), const BPF_MSH = 160 pkg syscall (linux-386), const BPF_MUL = 32 pkg syscall (linux-386), const BPF_NEG = 128 pkg syscall (linux-386), const BPF_OR = 64 pkg syscall (linux-386), const BPF_RET = 6 pkg syscall (linux-386), const BPF_RSH = 112 pkg syscall (linux-386), const BPF_ST = 2 pkg syscall (linux-386), const BPF_STX = 3 pkg syscall (linux-386), const BPF_SUB = 16 pkg syscall (linux-386), const BPF_TAX = 0 pkg syscall (linux-386), const BPF_TXA = 128 pkg syscall (linux-386), const BPF_W = 0 pkg syscall (linux-386), const BPF_X = 8 pkg syscall (linux-386), const BRKINT = 2 pkg syscall (linux-386), const CLOCAL = 2048 pkg syscall (linux-386), const CREAD = 128 pkg syscall (linux-386), const CS5 = 0 pkg syscall (linux-386), const CS6 = 16 pkg syscall (linux-386), const CS7 = 32 pkg syscall (linux-386), const CS8 = 48 pkg syscall (linux-386), const CSIZE = 48 pkg syscall (linux-386), const CSTOPB = 64 pkg syscall (linux-386), const DT_BLK = 6 pkg syscall (linux-386), const DT_CHR = 2 pkg syscall (linux-386), const DT_DIR = 4 pkg syscall (linux-386), const DT_FIFO = 1 pkg syscall (linux-386), const DT_LNK = 10 pkg syscall (linux-386), const DT_REG = 8 pkg syscall (linux-386), const DT_SOCK = 12 pkg syscall (linux-386), const DT_UNKNOWN = 0 pkg syscall (linux-386), const DT_WHT = 14 pkg syscall (linux-386), const E2BIG = 7 pkg syscall (linux-386), const EACCES = 13 pkg syscall (linux-386), const EADDRINUSE = 98 pkg syscall (linux-386), const EADDRNOTAVAIL = 99 pkg syscall (linux-386), const EADV = 68 pkg syscall (linux-386), const EAFNOSUPPORT = 97 pkg syscall (linux-386), const EAGAIN = 11 pkg syscall (linux-386), const EALREADY = 114 pkg syscall (linux-386), const EBADE = 52 pkg syscall (linux-386), const EBADF = 9 pkg syscall (linux-386), const EBADFD = 77 pkg syscall (linux-386), const EBADMSG = 74 pkg syscall (linux-386), const EBADR = 53 pkg syscall (linux-386), const EBADRQC = 56 pkg syscall (linux-386), const EBADSLT = 57 pkg syscall (linux-386), const EBFONT = 59 pkg syscall (linux-386), const EBUSY = 16 pkg syscall (linux-386), const ECANCELED = 125 pkg syscall (linux-386), const ECHILD = 10 pkg syscall (linux-386), const ECHO = 8 pkg syscall (linux-386), const ECHOCTL = 512 pkg syscall (linux-386), const ECHOE = 16 pkg syscall (linux-386), const ECHOK = 32 pkg syscall (linux-386), const ECHOKE = 2048 pkg syscall (linux-386), const ECHONL = 64 pkg syscall (linux-386), const ECHOPRT = 1024 pkg syscall (linux-386), const ECHRNG = 44 pkg syscall (linux-386), const ECOMM = 70 pkg syscall (linux-386), const ECONNABORTED = 103 pkg syscall (linux-386), const ECONNREFUSED = 111 pkg syscall (linux-386), const ECONNRESET = 104 pkg syscall (linux-386), const EDEADLK = 35 pkg syscall (linux-386), const EDEADLOCK = 35 pkg syscall (linux-386), const EDESTADDRREQ = 89 pkg syscall (linux-386), const EDOM = 33 pkg syscall (linux-386), const EDOTDOT = 73 pkg syscall (linux-386), const EDQUOT = 122 pkg syscall (linux-386), const EEXIST = 17 pkg syscall (linux-386), const EFAULT = 14 pkg syscall (linux-386), const EFBIG = 27 pkg syscall (linux-386), const EHOSTDOWN = 112 pkg syscall (linux-386), const EHOSTUNREACH = 113 pkg syscall (linux-386), const EIDRM = 43 pkg syscall (linux-386), const EILSEQ = 84 pkg syscall (linux-386), const EINPROGRESS = 115 pkg syscall (linux-386), const EINTR = 4 pkg syscall (linux-386), const EINVAL = 22 pkg syscall (linux-386), const EIO = 5 pkg syscall (linux-386), const EISCONN = 106 pkg syscall (linux-386), const EISDIR = 21 pkg syscall (linux-386), const EISNAM = 120 pkg syscall (linux-386), const EKEYEXPIRED = 127 pkg syscall (linux-386), const EKEYREJECTED = 129 pkg syscall (linux-386), const EKEYREVOKED = 128 pkg syscall (linux-386), const EL2HLT = 51 pkg syscall (linux-386), const EL2NSYNC = 45 pkg syscall (linux-386), const EL3HLT = 46 pkg syscall (linux-386), const EL3RST = 47 pkg syscall (linux-386), const ELIBACC = 79 pkg syscall (linux-386), const ELIBBAD = 80 pkg syscall (linux-386), const ELIBEXEC = 83 pkg syscall (linux-386), const ELIBMAX = 82 pkg syscall (linux-386), const ELIBSCN = 81 pkg syscall (linux-386), const ELNRNG = 48 pkg syscall (linux-386), const ELOOP = 40 pkg syscall (linux-386), const EMEDIUMTYPE = 124 pkg syscall (linux-386), const EMFILE = 24 pkg syscall (linux-386), const EMLINK = 31 pkg syscall (linux-386), const EMSGSIZE = 90 pkg syscall (linux-386), const EMULTIHOP = 72 pkg syscall (linux-386), const ENAMETOOLONG = 36 pkg syscall (linux-386), const ENAVAIL = 119 pkg syscall (linux-386), const ENETDOWN = 100 pkg syscall (linux-386), const ENETRESET = 102 pkg syscall (linux-386), const ENETUNREACH = 101 pkg syscall (linux-386), const ENFILE = 23 pkg syscall (linux-386), const ENOANO = 55 pkg syscall (linux-386), const ENOBUFS = 105 pkg syscall (linux-386), const ENOCSI = 50 pkg syscall (linux-386), const ENODATA = 61 pkg syscall (linux-386), const ENODEV = 19 pkg syscall (linux-386), const ENOEXEC = 8 pkg syscall (linux-386), const ENOKEY = 126 pkg syscall (linux-386), const ENOLCK = 37 pkg syscall (linux-386), const ENOLINK = 67 pkg syscall (linux-386), const ENOMEDIUM = 123 pkg syscall (linux-386), const ENOMEM = 12 pkg syscall (linux-386), const ENOMSG = 42 pkg syscall (linux-386), const ENONET = 64 pkg syscall (linux-386), const ENOPKG = 65 pkg syscall (linux-386), const ENOPROTOOPT = 92 pkg syscall (linux-386), const ENOSPC = 28 pkg syscall (linux-386), const ENOSR = 63 pkg syscall (linux-386), const ENOSTR = 60 pkg syscall (linux-386), const ENOSYS = 38 pkg syscall (linux-386), const ENOTBLK = 15 pkg syscall (linux-386), const ENOTCONN = 107 pkg syscall (linux-386), const ENOTDIR = 20 pkg syscall (linux-386), const ENOTEMPTY = 39 pkg syscall (linux-386), const ENOTNAM = 118 pkg syscall (linux-386), const ENOTRECOVERABLE = 131 pkg syscall (linux-386), const ENOTSOCK = 88 pkg syscall (linux-386), const ENOTSUP = 95 pkg syscall (linux-386), const ENOTTY = 25 pkg syscall (linux-386), const ENOTUNIQ = 76 pkg syscall (linux-386), const ENXIO = 6 pkg syscall (linux-386), const EOPNOTSUPP = 95 pkg syscall (linux-386), const EOVERFLOW = 75 pkg syscall (linux-386), const EOWNERDEAD = 130 pkg syscall (linux-386), const EPERM = 1 pkg syscall (linux-386), const EPFNOSUPPORT = 96 pkg syscall (linux-386), const EPIPE = 32 pkg syscall (linux-386), const EPOLLERR = 8 pkg syscall (linux-386), const EPOLLET = -2147483648 pkg syscall (linux-386), const EPOLLHUP = 16 pkg syscall (linux-386), const EPOLLIN = 1 pkg syscall (linux-386), const EPOLLMSG = 1024 pkg syscall (linux-386), const EPOLLONESHOT = 1073741824 pkg syscall (linux-386), const EPOLLOUT = 4 pkg syscall (linux-386), const EPOLLPRI = 2 pkg syscall (linux-386), const EPOLLRDBAND = 128 pkg syscall (linux-386), const EPOLLRDHUP = 8192 pkg syscall (linux-386), const EPOLLRDNORM = 64 pkg syscall (linux-386), const EPOLLWRBAND = 512 pkg syscall (linux-386), const EPOLLWRNORM = 256 pkg syscall (linux-386), const EPOLL_CLOEXEC = 524288 pkg syscall (linux-386), const EPOLL_CTL_ADD = 1 pkg syscall (linux-386), const EPOLL_CTL_DEL = 2 pkg syscall (linux-386), const EPOLL_CTL_MOD = 3 pkg syscall (linux-386), const EPOLL_NONBLOCK = 2048 pkg syscall (linux-386), const EPROTO = 71 pkg syscall (linux-386), const EPROTONOSUPPORT = 93 pkg syscall (linux-386), const EPROTOTYPE = 91 pkg syscall (linux-386), const ERANGE = 34 pkg syscall (linux-386), const EREMCHG = 78 pkg syscall (linux-386), const EREMOTE = 66 pkg syscall (linux-386), const EREMOTEIO = 121 pkg syscall (linux-386), const ERESTART = 85 pkg syscall (linux-386), const ERFKILL = 132 pkg syscall (linux-386), const EROFS = 30 pkg syscall (linux-386), const ESHUTDOWN = 108 pkg syscall (linux-386), const ESOCKTNOSUPPORT = 94 pkg syscall (linux-386), const ESPIPE = 29 pkg syscall (linux-386), const ESRCH = 3 pkg syscall (linux-386), const ESRMNT = 69 pkg syscall (linux-386), const ESTALE = 116 pkg syscall (linux-386), const ESTRPIPE = 86 pkg syscall (linux-386), const ETH_P_1588 = 35063 pkg syscall (linux-386), const ETH_P_8021Q = 33024 pkg syscall (linux-386), const ETH_P_802_2 = 4 pkg syscall (linux-386), const ETH_P_802_3 = 1 pkg syscall (linux-386), const ETH_P_AARP = 33011 pkg syscall (linux-386), const ETH_P_ALL = 3 pkg syscall (linux-386), const ETH_P_AOE = 34978 pkg syscall (linux-386), const ETH_P_ARCNET = 26 pkg syscall (linux-386), const ETH_P_ARP = 2054 pkg syscall (linux-386), const ETH_P_ATALK = 32923 pkg syscall (linux-386), const ETH_P_ATMFATE = 34948 pkg syscall (linux-386), const ETH_P_ATMMPOA = 34892 pkg syscall (linux-386), const ETH_P_AX25 = 2 pkg syscall (linux-386), const ETH_P_BPQ = 2303 pkg syscall (linux-386), const ETH_P_CAIF = 247 pkg syscall (linux-386), const ETH_P_CAN = 12 pkg syscall (linux-386), const ETH_P_CONTROL = 22 pkg syscall (linux-386), const ETH_P_CUST = 24582 pkg syscall (linux-386), const ETH_P_DDCMP = 6 pkg syscall (linux-386), const ETH_P_DEC = 24576 pkg syscall (linux-386), const ETH_P_DIAG = 24581 pkg syscall (linux-386), const ETH_P_DNA_DL = 24577 pkg syscall (linux-386), const ETH_P_DNA_RC = 24578 pkg syscall (linux-386), const ETH_P_DNA_RT = 24579 pkg syscall (linux-386), const ETH_P_DSA = 27 pkg syscall (linux-386), const ETH_P_ECONET = 24 pkg syscall (linux-386), const ETH_P_EDSA = 56026 pkg syscall (linux-386), const ETH_P_FCOE = 35078 pkg syscall (linux-386), const ETH_P_FIP = 35092 pkg syscall (linux-386), const ETH_P_HDLC = 25 pkg syscall (linux-386), const ETH_P_IEEE802154 = 246 pkg syscall (linux-386), const ETH_P_IEEEPUP = 2560 pkg syscall (linux-386), const ETH_P_IEEEPUPAT = 2561 pkg syscall (linux-386), const ETH_P_IP = 2048 pkg syscall (linux-386), const ETH_P_IPV6 = 34525 pkg syscall (linux-386), const ETH_P_IPX = 33079 pkg syscall (linux-386), const ETH_P_IRDA = 23 pkg syscall (linux-386), const ETH_P_LAT = 24580 pkg syscall (linux-386), const ETH_P_LINK_CTL = 34924 pkg syscall (linux-386), const ETH_P_LOCALTALK = 9 pkg syscall (linux-386), const ETH_P_LOOP = 96 pkg syscall (linux-386), const ETH_P_MOBITEX = 21 pkg syscall (linux-386), const ETH_P_MPLS_MC = 34888 pkg syscall (linux-386), const ETH_P_MPLS_UC = 34887 pkg syscall (linux-386), const ETH_P_PAE = 34958 pkg syscall (linux-386), const ETH_P_PAUSE = 34824 pkg syscall (linux-386), const ETH_P_PHONET = 245 pkg syscall (linux-386), const ETH_P_PPPTALK = 16 pkg syscall (linux-386), const ETH_P_PPP_DISC = 34915 pkg syscall (linux-386), const ETH_P_PPP_MP = 8 pkg syscall (linux-386), const ETH_P_PPP_SES = 34916 pkg syscall (linux-386), const ETH_P_PUP = 512 pkg syscall (linux-386), const ETH_P_PUPAT = 513 pkg syscall (linux-386), const ETH_P_RARP = 32821 pkg syscall (linux-386), const ETH_P_SCA = 24583 pkg syscall (linux-386), const ETH_P_SLOW = 34825 pkg syscall (linux-386), const ETH_P_SNAP = 5 pkg syscall (linux-386), const ETH_P_TEB = 25944 pkg syscall (linux-386), const ETH_P_TIPC = 35018 pkg syscall (linux-386), const ETH_P_TRAILER = 28 pkg syscall (linux-386), const ETH_P_TR_802_2 = 17 pkg syscall (linux-386), const ETH_P_WAN_PPP = 7 pkg syscall (linux-386), const ETH_P_WCCP = 34878 pkg syscall (linux-386), const ETH_P_X25 = 2053 pkg syscall (linux-386), const ETIME = 62 pkg syscall (linux-386), const ETIMEDOUT = 110 pkg syscall (linux-386), const ETOOMANYREFS = 109 pkg syscall (linux-386), const ETXTBSY = 26 pkg syscall (linux-386), const EUCLEAN = 117 pkg syscall (linux-386), const EUNATCH = 49 pkg syscall (linux-386), const EUSERS = 87 pkg syscall (linux-386), const EWOULDBLOCK = 11 pkg syscall (linux-386), const EXDEV = 18 pkg syscall (linux-386), const EXFULL = 54 pkg syscall (linux-386), const FD_CLOEXEC = 1 pkg syscall (linux-386), const FD_SETSIZE = 1024 pkg syscall (linux-386), const FLUSHO = 4096 pkg syscall (linux-386), const F_DUPFD = 0 pkg syscall (linux-386), const F_DUPFD_CLOEXEC = 1030 pkg syscall (linux-386), const F_EXLCK = 4 pkg syscall (linux-386), const F_GETFD = 1 pkg syscall (linux-386), const F_GETFL = 3 pkg syscall (linux-386), const F_GETLEASE = 1025 pkg syscall (linux-386), const F_GETLK = 12 pkg syscall (linux-386), const F_GETLK64 = 12 pkg syscall (linux-386), const F_GETOWN = 9 pkg syscall (linux-386), const F_GETOWN_EX = 16 pkg syscall (linux-386), const F_GETPIPE_SZ = 1032 pkg syscall (linux-386), const F_GETSIG = 11 pkg syscall (linux-386), const F_LOCK = 1 pkg syscall (linux-386), const F_NOTIFY = 1026 pkg syscall (linux-386), const F_OK = 0 pkg syscall (linux-386), const F_RDLCK = 0 pkg syscall (linux-386), const F_SETFD = 2 pkg syscall (linux-386), const F_SETFL = 4 pkg syscall (linux-386), const F_SETLEASE = 1024 pkg syscall (linux-386), const F_SETLK = 13 pkg syscall (linux-386), const F_SETLK64 = 13 pkg syscall (linux-386), const F_SETLKW = 14 pkg syscall (linux-386), const F_SETLKW64 = 14 pkg syscall (linux-386), const F_SETOWN = 8 pkg syscall (linux-386), const F_SETOWN_EX = 15 pkg syscall (linux-386), const F_SETPIPE_SZ = 1031 pkg syscall (linux-386), const F_SETSIG = 10 pkg syscall (linux-386), const F_SHLCK = 8 pkg syscall (linux-386), const F_TEST = 3 pkg syscall (linux-386), const F_TLOCK = 2 pkg syscall (linux-386), const F_ULOCK = 0 pkg syscall (linux-386), const F_UNLCK = 2 pkg syscall (linux-386), const F_WRLCK = 1 pkg syscall (linux-386), const HUPCL = 1024 pkg syscall (linux-386), const ICANON = 2 pkg syscall (linux-386), const ICRNL = 256 pkg syscall (linux-386), const IEXTEN = 32768 pkg syscall (linux-386), const IFA_ADDRESS = 1 pkg syscall (linux-386), const IFA_ANYCAST = 5 pkg syscall (linux-386), const IFA_BROADCAST = 4 pkg syscall (linux-386), const IFA_CACHEINFO = 6 pkg syscall (linux-386), const IFA_F_DADFAILED = 8 pkg syscall (linux-386), const IFA_F_DEPRECATED = 32 pkg syscall (linux-386), const IFA_F_HOMEADDRESS = 16 pkg syscall (linux-386), const IFA_F_NODAD = 2 pkg syscall (linux-386), const IFA_F_OPTIMISTIC = 4 pkg syscall (linux-386), const IFA_F_PERMANENT = 128 pkg syscall (linux-386), const IFA_F_SECONDARY = 1 pkg syscall (linux-386), const IFA_F_TEMPORARY = 1 pkg syscall (linux-386), const IFA_F_TENTATIVE = 64 pkg syscall (linux-386), const IFA_LABEL = 3 pkg syscall (linux-386), const IFA_LOCAL = 2 pkg syscall (linux-386), const IFA_MAX = 7 pkg syscall (linux-386), const IFA_MULTICAST = 7 pkg syscall (linux-386), const IFA_UNSPEC = 0 pkg syscall (linux-386), const IFF_ALLMULTI = 512 pkg syscall (linux-386), const IFF_AUTOMEDIA = 16384 pkg syscall (linux-386), const IFF_DEBUG = 4 pkg syscall (linux-386), const IFF_DYNAMIC = 32768 pkg syscall (linux-386), const IFF_LOOPBACK = 8 pkg syscall (linux-386), const IFF_MASTER = 1024 pkg syscall (linux-386), const IFF_MULTICAST = 4096 pkg syscall (linux-386), const IFF_NOARP = 128 pkg syscall (linux-386), const IFF_NOTRAILERS = 32 pkg syscall (linux-386), const IFF_NO_PI = 4096 pkg syscall (linux-386), const IFF_ONE_QUEUE = 8192 pkg syscall (linux-386), const IFF_POINTOPOINT = 16 pkg syscall (linux-386), const IFF_PORTSEL = 8192 pkg syscall (linux-386), const IFF_PROMISC = 256 pkg syscall (linux-386), const IFF_RUNNING = 64 pkg syscall (linux-386), const IFF_SLAVE = 2048 pkg syscall (linux-386), const IFF_TAP = 2 pkg syscall (linux-386), const IFF_TUN = 1 pkg syscall (linux-386), const IFF_TUN_EXCL = 32768 pkg syscall (linux-386), const IFF_VNET_HDR = 16384 pkg syscall (linux-386), const IFLA_ADDRESS = 1 pkg syscall (linux-386), const IFLA_BROADCAST = 2 pkg syscall (linux-386), const IFLA_COST = 8 pkg syscall (linux-386), const IFLA_IFALIAS = 20 pkg syscall (linux-386), const IFLA_IFNAME = 3 pkg syscall (linux-386), const IFLA_LINK = 5 pkg syscall (linux-386), const IFLA_LINKINFO = 18 pkg syscall (linux-386), const IFLA_LINKMODE = 17 pkg syscall (linux-386), const IFLA_MAP = 14 pkg syscall (linux-386), const IFLA_MASTER = 10 pkg syscall (linux-386), const IFLA_MAX = 29 pkg syscall (linux-386), const IFLA_MTU = 4 pkg syscall (linux-386), const IFLA_NET_NS_PID = 19 pkg syscall (linux-386), const IFLA_OPERSTATE = 16 pkg syscall (linux-386), const IFLA_PRIORITY = 9 pkg syscall (linux-386), const IFLA_PROTINFO = 12 pkg syscall (linux-386), const IFLA_QDISC = 6 pkg syscall (linux-386), const IFLA_STATS = 7 pkg syscall (linux-386), const IFLA_TXQLEN = 13 pkg syscall (linux-386), const IFLA_UNSPEC = 0 pkg syscall (linux-386), const IFLA_WEIGHT = 15 pkg syscall (linux-386), const IFLA_WIRELESS = 11 pkg syscall (linux-386), const IFNAMSIZ = 16 pkg syscall (linux-386), const IGNBRK = 1 pkg syscall (linux-386), const IGNCR = 128 pkg syscall (linux-386), const IGNPAR = 4 pkg syscall (linux-386), const IMAXBEL = 8192 pkg syscall (linux-386), const INLCR = 64 pkg syscall (linux-386), const INPCK = 16 pkg syscall (linux-386), const IN_ACCESS = 1 pkg syscall (linux-386), const IN_ALL_EVENTS = 4095 pkg syscall (linux-386), const IN_ATTRIB = 4 pkg syscall (linux-386), const IN_CLASSA_HOST = 16777215 pkg syscall (linux-386), const IN_CLASSA_MAX = 128 pkg syscall (linux-386), const IN_CLASSA_NET = 4278190080 pkg syscall (linux-386), const IN_CLASSA_NSHIFT = 24 pkg syscall (linux-386), const IN_CLASSB_HOST = 65535 pkg syscall (linux-386), const IN_CLASSB_MAX = 65536 pkg syscall (linux-386), const IN_CLASSB_NET = 4294901760 pkg syscall (linux-386), const IN_CLASSB_NSHIFT = 16 pkg syscall (linux-386), const IN_CLASSC_HOST = 255 pkg syscall (linux-386), const IN_CLASSC_NET = 4294967040 pkg syscall (linux-386), const IN_CLASSC_NSHIFT = 8 pkg syscall (linux-386), const IN_CLOEXEC = 524288 pkg syscall (linux-386), const IN_CLOSE = 24 pkg syscall (linux-386), const IN_CLOSE_NOWRITE = 16 pkg syscall (linux-386), const IN_CLOSE_WRITE = 8 pkg syscall (linux-386), const IN_CREATE = 256 pkg syscall (linux-386), const IN_DELETE = 512 pkg syscall (linux-386), const IN_DELETE_SELF = 1024 pkg syscall (linux-386), const IN_DONT_FOLLOW = 33554432 pkg syscall (linux-386), const IN_EXCL_UNLINK = 67108864 pkg syscall (linux-386), const IN_IGNORED = 32768 pkg syscall (linux-386), const IN_ISDIR = 1073741824 pkg syscall (linux-386), const IN_LOOPBACKNET = 127 pkg syscall (linux-386), const IN_MASK_ADD = 536870912 pkg syscall (linux-386), const IN_MODIFY = 2 pkg syscall (linux-386), const IN_MOVE = 192 pkg syscall (linux-386), const IN_MOVED_FROM = 64 pkg syscall (linux-386), const IN_MOVED_TO = 128 pkg syscall (linux-386), const IN_MOVE_SELF = 2048 pkg syscall (linux-386), const IN_NONBLOCK = 2048 pkg syscall (linux-386), const IN_ONESHOT = 2147483648 pkg syscall (linux-386), const IN_ONLYDIR = 16777216 pkg syscall (linux-386), const IN_OPEN = 32 pkg syscall (linux-386), const IN_Q_OVERFLOW = 16384 pkg syscall (linux-386), const IN_UNMOUNT = 8192 pkg syscall (linux-386), const IPPROTO_AH = 51 pkg syscall (linux-386), const IPPROTO_COMP = 108 pkg syscall (linux-386), const IPPROTO_DCCP = 33 pkg syscall (linux-386), const IPPROTO_DSTOPTS = 60 pkg syscall (linux-386), const IPPROTO_EGP = 8 pkg syscall (linux-386), const IPPROTO_ENCAP = 98 pkg syscall (linux-386), const IPPROTO_ESP = 50 pkg syscall (linux-386), const IPPROTO_FRAGMENT = 44 pkg syscall (linux-386), const IPPROTO_GRE = 47 pkg syscall (linux-386), const IPPROTO_HOPOPTS = 0 pkg syscall (linux-386), const IPPROTO_ICMP = 1 pkg syscall (linux-386), const IPPROTO_ICMPV6 = 58 pkg syscall (linux-386), const IPPROTO_IDP = 22 pkg syscall (linux-386), const IPPROTO_IGMP = 2 pkg syscall (linux-386), const IPPROTO_IPIP = 4 pkg syscall (linux-386), const IPPROTO_MTP = 92 pkg syscall (linux-386), const IPPROTO_NONE = 59 pkg syscall (linux-386), const IPPROTO_PIM = 103 pkg syscall (linux-386), const IPPROTO_PUP = 12 pkg syscall (linux-386), const IPPROTO_RAW = 255 pkg syscall (linux-386), const IPPROTO_ROUTING = 43 pkg syscall (linux-386), const IPPROTO_RSVP = 46 pkg syscall (linux-386), const IPPROTO_SCTP = 132 pkg syscall (linux-386), const IPPROTO_TP = 29 pkg syscall (linux-386), const IPPROTO_UDPLITE = 136 pkg syscall (linux-386), const IPV6_2292DSTOPTS = 4 pkg syscall (linux-386), const IPV6_2292HOPLIMIT = 8 pkg syscall (linux-386), const IPV6_2292HOPOPTS = 3 pkg syscall (linux-386), const IPV6_2292PKTINFO = 2 pkg syscall (linux-386), const IPV6_2292PKTOPTIONS = 6 pkg syscall (linux-386), const IPV6_2292RTHDR = 5 pkg syscall (linux-386), const IPV6_ADDRFORM = 1 pkg syscall (linux-386), const IPV6_ADD_MEMBERSHIP = 20 pkg syscall (linux-386), const IPV6_AUTHHDR = 10 pkg syscall (linux-386), const IPV6_CHECKSUM = 7 pkg syscall (linux-386), const IPV6_DROP_MEMBERSHIP = 21 pkg syscall (linux-386), const IPV6_DSTOPTS = 59 pkg syscall (linux-386), const IPV6_HOPLIMIT = 52 pkg syscall (linux-386), const IPV6_HOPOPTS = 54 pkg syscall (linux-386), const IPV6_IPSEC_POLICY = 34 pkg syscall (linux-386), const IPV6_JOIN_ANYCAST = 27 pkg syscall (linux-386), const IPV6_JOIN_GROUP = 20 pkg syscall (linux-386), const IPV6_LEAVE_ANYCAST = 28 pkg syscall (linux-386), const IPV6_LEAVE_GROUP = 21 pkg syscall (linux-386), const IPV6_MTU = 24 pkg syscall (linux-386), const IPV6_MTU_DISCOVER = 23 pkg syscall (linux-386), const IPV6_MULTICAST_HOPS = 18 pkg syscall (linux-386), const IPV6_MULTICAST_IF = 17 pkg syscall (linux-386), const IPV6_MULTICAST_LOOP = 19 pkg syscall (linux-386), const IPV6_NEXTHOP = 9 pkg syscall (linux-386), const IPV6_PKTINFO = 50 pkg syscall (linux-386), const IPV6_PMTUDISC_DO = 2 pkg syscall (linux-386), const IPV6_PMTUDISC_DONT = 0 pkg syscall (linux-386), const IPV6_PMTUDISC_PROBE = 3 pkg syscall (linux-386), const IPV6_PMTUDISC_WANT = 1 pkg syscall (linux-386), const IPV6_RECVDSTOPTS = 58 pkg syscall (linux-386), const IPV6_RECVERR = 25 pkg syscall (linux-386), const IPV6_RECVHOPLIMIT = 51 pkg syscall (linux-386), const IPV6_RECVHOPOPTS = 53 pkg syscall (linux-386), const IPV6_RECVPKTINFO = 49 pkg syscall (linux-386), const IPV6_RECVRTHDR = 56 pkg syscall (linux-386), const IPV6_RECVTCLASS = 66 pkg syscall (linux-386), const IPV6_ROUTER_ALERT = 22 pkg syscall (linux-386), const IPV6_RTHDR = 57 pkg syscall (linux-386), const IPV6_RTHDRDSTOPTS = 55 pkg syscall (linux-386), const IPV6_RTHDR_LOOSE = 0 pkg syscall (linux-386), const IPV6_RTHDR_STRICT = 1 pkg syscall (linux-386), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (linux-386), const IPV6_RXDSTOPTS = 59 pkg syscall (linux-386), const IPV6_RXHOPOPTS = 54 pkg syscall (linux-386), const IPV6_TCLASS = 67 pkg syscall (linux-386), const IPV6_UNICAST_HOPS = 16 pkg syscall (linux-386), const IPV6_V6ONLY = 26 pkg syscall (linux-386), const IPV6_XFRM_POLICY = 35 pkg syscall (linux-386), const IP_ADD_MEMBERSHIP = 35 pkg syscall (linux-386), const IP_ADD_SOURCE_MEMBERSHIP = 39 pkg syscall (linux-386), const IP_BLOCK_SOURCE = 38 pkg syscall (linux-386), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (linux-386), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (linux-386), const IP_DF = 16384 pkg syscall (linux-386), const IP_DROP_MEMBERSHIP = 36 pkg syscall (linux-386), const IP_DROP_SOURCE_MEMBERSHIP = 40 pkg syscall (linux-386), const IP_FREEBIND = 15 pkg syscall (linux-386), const IP_HDRINCL = 3 pkg syscall (linux-386), const IP_IPSEC_POLICY = 16 pkg syscall (linux-386), const IP_MAXPACKET = 65535 pkg syscall (linux-386), const IP_MAX_MEMBERSHIPS = 20 pkg syscall (linux-386), const IP_MF = 8192 pkg syscall (linux-386), const IP_MINTTL = 21 pkg syscall (linux-386), const IP_MSFILTER = 41 pkg syscall (linux-386), const IP_MSS = 576 pkg syscall (linux-386), const IP_MTU = 14 pkg syscall (linux-386), const IP_MTU_DISCOVER = 10 pkg syscall (linux-386), const IP_MULTICAST_IF = 32 pkg syscall (linux-386), const IP_MULTICAST_LOOP = 34 pkg syscall (linux-386), const IP_MULTICAST_TTL = 33 pkg syscall (linux-386), const IP_OFFMASK = 8191 pkg syscall (linux-386), const IP_OPTIONS = 4 pkg syscall (linux-386), const IP_ORIGDSTADDR = 20 pkg syscall (linux-386), const IP_PASSSEC = 18 pkg syscall (linux-386), const IP_PKTINFO = 8 pkg syscall (linux-386), const IP_PKTOPTIONS = 9 pkg syscall (linux-386), const IP_PMTUDISC = 10 pkg syscall (linux-386), const IP_PMTUDISC_DO = 2 pkg syscall (linux-386), const IP_PMTUDISC_DONT = 0 pkg syscall (linux-386), const IP_PMTUDISC_PROBE = 3 pkg syscall (linux-386), const IP_PMTUDISC_WANT = 1 pkg syscall (linux-386), const IP_RECVERR = 11 pkg syscall (linux-386), const IP_RECVOPTS = 6 pkg syscall (linux-386), const IP_RECVORIGDSTADDR = 20 pkg syscall (linux-386), const IP_RECVRETOPTS = 7 pkg syscall (linux-386), const IP_RECVTOS = 13 pkg syscall (linux-386), const IP_RECVTTL = 12 pkg syscall (linux-386), const IP_RETOPTS = 7 pkg syscall (linux-386), const IP_RF = 32768 pkg syscall (linux-386), const IP_ROUTER_ALERT = 5 pkg syscall (linux-386), const IP_TOS = 1 pkg syscall (linux-386), const IP_TRANSPARENT = 19 pkg syscall (linux-386), const IP_TTL = 2 pkg syscall (linux-386), const IP_UNBLOCK_SOURCE = 37 pkg syscall (linux-386), const IP_XFRM_POLICY = 17 pkg syscall (linux-386), const ISIG = 1 pkg syscall (linux-386), const ISTRIP = 32 pkg syscall (linux-386), const IUCLC = 512 pkg syscall (linux-386), const IUTF8 = 16384 pkg syscall (linux-386), const IXANY = 2048 pkg syscall (linux-386), const IXOFF = 4096 pkg syscall (linux-386), const IXON = 1024 pkg syscall (linux-386), const ImplementsGetwd = true pkg syscall (linux-386), const LINUX_REBOOT_CMD_CAD_OFF = 0 pkg syscall (linux-386), const LINUX_REBOOT_CMD_CAD_ON = 2309737967 pkg syscall (linux-386), const LINUX_REBOOT_CMD_HALT = 3454992675 pkg syscall (linux-386), const LINUX_REBOOT_CMD_KEXEC = 1163412803 pkg syscall (linux-386), const LINUX_REBOOT_CMD_POWER_OFF = 1126301404 pkg syscall (linux-386), const LINUX_REBOOT_CMD_RESTART = 19088743 pkg syscall (linux-386), const LINUX_REBOOT_CMD_RESTART2 = 2712847316 pkg syscall (linux-386), const LINUX_REBOOT_CMD_SW_SUSPEND = 3489725666 pkg syscall (linux-386), const LINUX_REBOOT_MAGIC1 = 4276215469 pkg syscall (linux-386), const LINUX_REBOOT_MAGIC2 = 672274793 pkg syscall (linux-386), const LOCK_EX = 2 pkg syscall (linux-386), const LOCK_NB = 4 pkg syscall (linux-386), const LOCK_SH = 1 pkg syscall (linux-386), const LOCK_UN = 8 pkg syscall (linux-386), const MADV_DOFORK = 11 pkg syscall (linux-386), const MADV_DONTFORK = 10 pkg syscall (linux-386), const MADV_DONTNEED = 4 pkg syscall (linux-386), const MADV_HUGEPAGE = 14 pkg syscall (linux-386), const MADV_HWPOISON = 100 pkg syscall (linux-386), const MADV_MERGEABLE = 12 pkg syscall (linux-386), const MADV_NOHUGEPAGE = 15 pkg syscall (linux-386), const MADV_NORMAL = 0 pkg syscall (linux-386), const MADV_RANDOM = 1 pkg syscall (linux-386), const MADV_REMOVE = 9 pkg syscall (linux-386), const MADV_SEQUENTIAL = 2 pkg syscall (linux-386), const MADV_UNMERGEABLE = 13 pkg syscall (linux-386), const MADV_WILLNEED = 3 pkg syscall (linux-386), const MAP_32BIT = 64 pkg syscall (linux-386), const MAP_ANON = 32 pkg syscall (linux-386), const MAP_ANONYMOUS = 32 pkg syscall (linux-386), const MAP_DENYWRITE = 2048 pkg syscall (linux-386), const MAP_EXECUTABLE = 4096 pkg syscall (linux-386), const MAP_FILE = 0 pkg syscall (linux-386), const MAP_FIXED = 16 pkg syscall (linux-386), const MAP_GROWSDOWN = 256 pkg syscall (linux-386), const MAP_HUGETLB = 262144 pkg syscall (linux-386), const MAP_LOCKED = 8192 pkg syscall (linux-386), const MAP_NONBLOCK = 65536 pkg syscall (linux-386), const MAP_NORESERVE = 16384 pkg syscall (linux-386), const MAP_POPULATE = 32768 pkg syscall (linux-386), const MAP_PRIVATE = 2 pkg syscall (linux-386), const MAP_SHARED = 1 pkg syscall (linux-386), const MAP_STACK = 131072 pkg syscall (linux-386), const MAP_TYPE = 15 pkg syscall (linux-386), const MCL_CURRENT = 1 pkg syscall (linux-386), const MCL_FUTURE = 2 pkg syscall (linux-386), const MNT_DETACH = 2 pkg syscall (linux-386), const MNT_EXPIRE = 4 pkg syscall (linux-386), const MNT_FORCE = 1 pkg syscall (linux-386), const MSG_CMSG_CLOEXEC = 1073741824 pkg syscall (linux-386), const MSG_CONFIRM = 2048 pkg syscall (linux-386), const MSG_CTRUNC = 8 pkg syscall (linux-386), const MSG_DONTROUTE = 4 pkg syscall (linux-386), const MSG_DONTWAIT = 64 pkg syscall (linux-386), const MSG_EOR = 128 pkg syscall (linux-386), const MSG_ERRQUEUE = 8192 pkg syscall (linux-386), const MSG_FASTOPEN = 536870912 pkg syscall (linux-386), const MSG_FASTOPEN ideal-int pkg syscall (linux-386), const MSG_FIN = 512 pkg syscall (linux-386), const MSG_MORE = 32768 pkg syscall (linux-386), const MSG_NOSIGNAL = 16384 pkg syscall (linux-386), const MSG_OOB = 1 pkg syscall (linux-386), const MSG_PEEK = 2 pkg syscall (linux-386), const MSG_PROXY = 16 pkg syscall (linux-386), const MSG_RST = 4096 pkg syscall (linux-386), const MSG_SYN = 1024 pkg syscall (linux-386), const MSG_TRUNC = 32 pkg syscall (linux-386), const MSG_TRYHARD = 4 pkg syscall (linux-386), const MSG_WAITALL = 256 pkg syscall (linux-386), const MSG_WAITFORONE = 65536 pkg syscall (linux-386), const MS_ACTIVE = 1073741824 pkg syscall (linux-386), const MS_ASYNC = 1 pkg syscall (linux-386), const MS_BIND = 4096 pkg syscall (linux-386), const MS_DIRSYNC = 128 pkg syscall (linux-386), const MS_INVALIDATE = 2 pkg syscall (linux-386), const MS_I_VERSION = 8388608 pkg syscall (linux-386), const MS_KERNMOUNT = 4194304 pkg syscall (linux-386), const MS_MANDLOCK = 64 pkg syscall (linux-386), const MS_MGC_MSK = 4294901760 pkg syscall (linux-386), const MS_MGC_VAL = 3236757504 pkg syscall (linux-386), const MS_MOVE = 8192 pkg syscall (linux-386), const MS_NOATIME = 1024 pkg syscall (linux-386), const MS_NODEV = 4 pkg syscall (linux-386), const MS_NODIRATIME = 2048 pkg syscall (linux-386), const MS_NOEXEC = 8 pkg syscall (linux-386), const MS_NOSUID = 2 pkg syscall (linux-386), const MS_NOUSER = -2147483648 pkg syscall (linux-386), const MS_POSIXACL = 65536 pkg syscall (linux-386), const MS_PRIVATE = 262144 pkg syscall (linux-386), const MS_RDONLY = 1 pkg syscall (linux-386), const MS_REC = 16384 pkg syscall (linux-386), const MS_RELATIME = 2097152 pkg syscall (linux-386), const MS_REMOUNT = 32 pkg syscall (linux-386), const MS_RMT_MASK = 8388689 pkg syscall (linux-386), const MS_SHARED = 1048576 pkg syscall (linux-386), const MS_SILENT = 32768 pkg syscall (linux-386), const MS_SLAVE = 524288 pkg syscall (linux-386), const MS_STRICTATIME = 16777216 pkg syscall (linux-386), const MS_SYNC = 4 pkg syscall (linux-386), const MS_SYNCHRONOUS = 16 pkg syscall (linux-386), const MS_UNBINDABLE = 131072 pkg syscall (linux-386), const NAME_MAX = 255 pkg syscall (linux-386), const NETLINK_ADD_MEMBERSHIP = 1 pkg syscall (linux-386), const NETLINK_AUDIT = 9 pkg syscall (linux-386), const NETLINK_BROADCAST_ERROR = 4 pkg syscall (linux-386), const NETLINK_CONNECTOR = 11 pkg syscall (linux-386), const NETLINK_DNRTMSG = 14 pkg syscall (linux-386), const NETLINK_DROP_MEMBERSHIP = 2 pkg syscall (linux-386), const NETLINK_ECRYPTFS = 19 pkg syscall (linux-386), const NETLINK_FIB_LOOKUP = 10 pkg syscall (linux-386), const NETLINK_FIREWALL = 3 pkg syscall (linux-386), const NETLINK_GENERIC = 16 pkg syscall (linux-386), const NETLINK_INET_DIAG = 4 pkg syscall (linux-386), const NETLINK_IP6_FW = 13 pkg syscall (linux-386), const NETLINK_ISCSI = 8 pkg syscall (linux-386), const NETLINK_KOBJECT_UEVENT = 15 pkg syscall (linux-386), const NETLINK_NETFILTER = 12 pkg syscall (linux-386), const NETLINK_NFLOG = 5 pkg syscall (linux-386), const NETLINK_NO_ENOBUFS = 5 pkg syscall (linux-386), const NETLINK_PKTINFO = 3 pkg syscall (linux-386), const NETLINK_ROUTE = 0 pkg syscall (linux-386), const NETLINK_SCSITRANSPORT = 18 pkg syscall (linux-386), const NETLINK_SELINUX = 7 pkg syscall (linux-386), const NETLINK_UNUSED = 1 pkg syscall (linux-386), const NETLINK_USERSOCK = 2 pkg syscall (linux-386), const NETLINK_XFRM = 6 pkg syscall (linux-386), const NLA_ALIGNTO = 4 pkg syscall (linux-386), const NLA_F_NESTED = 32768 pkg syscall (linux-386), const NLA_F_NET_BYTEORDER = 16384 pkg syscall (linux-386), const NLA_HDRLEN = 4 pkg syscall (linux-386), const NLMSG_ALIGNTO = 4 pkg syscall (linux-386), const NLMSG_DONE = 3 pkg syscall (linux-386), const NLMSG_ERROR = 2 pkg syscall (linux-386), const NLMSG_HDRLEN = 16 pkg syscall (linux-386), const NLMSG_MIN_TYPE = 16 pkg syscall (linux-386), const NLMSG_NOOP = 1 pkg syscall (linux-386), const NLMSG_OVERRUN = 4 pkg syscall (linux-386), const NLM_F_ACK = 4 pkg syscall (linux-386), const NLM_F_APPEND = 2048 pkg syscall (linux-386), const NLM_F_ATOMIC = 1024 pkg syscall (linux-386), const NLM_F_CREATE = 1024 pkg syscall (linux-386), const NLM_F_DUMP = 768 pkg syscall (linux-386), const NLM_F_ECHO = 8 pkg syscall (linux-386), const NLM_F_EXCL = 512 pkg syscall (linux-386), const NLM_F_MATCH = 512 pkg syscall (linux-386), const NLM_F_MULTI = 2 pkg syscall (linux-386), const NLM_F_REPLACE = 256 pkg syscall (linux-386), const NLM_F_REQUEST = 1 pkg syscall (linux-386), const NLM_F_ROOT = 256 pkg syscall (linux-386), const NOFLSH = 128 pkg syscall (linux-386), const OCRNL = 8 pkg syscall (linux-386), const OFDEL = 128 pkg syscall (linux-386), const OFILL = 64 pkg syscall (linux-386), const OLCUC = 2 pkg syscall (linux-386), const ONLCR = 4 pkg syscall (linux-386), const ONLRET = 32 pkg syscall (linux-386), const ONOCR = 16 pkg syscall (linux-386), const OPOST = 1 pkg syscall (linux-386), const O_ACCMODE = 3 pkg syscall (linux-386), const O_APPEND = 1024 pkg syscall (linux-386), const O_ASYNC = 8192 pkg syscall (linux-386), const O_CLOEXEC = 524288 pkg syscall (linux-386), const O_CREAT = 64 pkg syscall (linux-386), const O_DIRECT = 16384 pkg syscall (linux-386), const O_DIRECTORY = 65536 pkg syscall (linux-386), const O_DSYNC = 4096 pkg syscall (linux-386), const O_EXCL = 128 pkg syscall (linux-386), const O_FSYNC = 1052672 pkg syscall (linux-386), const O_LARGEFILE = 32768 pkg syscall (linux-386), const O_NDELAY = 2048 pkg syscall (linux-386), const O_NOATIME = 262144 pkg syscall (linux-386), const O_NOCTTY = 256 pkg syscall (linux-386), const O_NOFOLLOW = 131072 pkg syscall (linux-386), const O_NONBLOCK = 2048 pkg syscall (linux-386), const O_RSYNC = 1052672 pkg syscall (linux-386), const O_SYNC = 1052672 pkg syscall (linux-386), const O_TRUNC = 512 pkg syscall (linux-386), const PACKET_ADD_MEMBERSHIP = 1 pkg syscall (linux-386), const PACKET_BROADCAST = 1 pkg syscall (linux-386), const PACKET_DROP_MEMBERSHIP = 2 pkg syscall (linux-386), const PACKET_FASTROUTE = 6 pkg syscall (linux-386), const PACKET_HOST = 0 pkg syscall (linux-386), const PACKET_LOOPBACK = 5 pkg syscall (linux-386), const PACKET_MR_ALLMULTI = 2 pkg syscall (linux-386), const PACKET_MR_MULTICAST = 0 pkg syscall (linux-386), const PACKET_MR_PROMISC = 1 pkg syscall (linux-386), const PACKET_MULTICAST = 2 pkg syscall (linux-386), const PACKET_OTHERHOST = 3 pkg syscall (linux-386), const PACKET_OUTGOING = 4 pkg syscall (linux-386), const PACKET_RECV_OUTPUT = 3 pkg syscall (linux-386), const PACKET_RX_RING = 5 pkg syscall (linux-386), const PACKET_STATISTICS = 6 pkg syscall (linux-386), const PARENB = 256 pkg syscall (linux-386), const PARMRK = 8 pkg syscall (linux-386), const PARODD = 512 pkg syscall (linux-386), const PENDIN = 16384 pkg syscall (linux-386), const PROT_EXEC = 4 pkg syscall (linux-386), const PROT_GROWSDOWN = 16777216 pkg syscall (linux-386), const PROT_GROWSUP = 33554432 pkg syscall (linux-386), const PROT_NONE = 0 pkg syscall (linux-386), const PROT_READ = 1 pkg syscall (linux-386), const PROT_WRITE = 2 pkg syscall (linux-386), const PR_CAPBSET_DROP = 24 pkg syscall (linux-386), const PR_CAPBSET_READ = 23 pkg syscall (linux-386), const PR_ENDIAN_BIG = 0 pkg syscall (linux-386), const PR_ENDIAN_LITTLE = 1 pkg syscall (linux-386), const PR_ENDIAN_PPC_LITTLE = 2 pkg syscall (linux-386), const PR_FPEMU_NOPRINT = 1 pkg syscall (linux-386), const PR_FPEMU_SIGFPE = 2 pkg syscall (linux-386), const PR_FP_EXC_ASYNC = 2 pkg syscall (linux-386), const PR_FP_EXC_DISABLED = 0 pkg syscall (linux-386), const PR_FP_EXC_DIV = 65536 pkg syscall (linux-386), const PR_FP_EXC_INV = 1048576 pkg syscall (linux-386), const PR_FP_EXC_NONRECOV = 1 pkg syscall (linux-386), const PR_FP_EXC_OVF = 131072 pkg syscall (linux-386), const PR_FP_EXC_PRECISE = 3 pkg syscall (linux-386), const PR_FP_EXC_RES = 524288 pkg syscall (linux-386), const PR_FP_EXC_SW_ENABLE = 128 pkg syscall (linux-386), const PR_FP_EXC_UND = 262144 pkg syscall (linux-386), const PR_GET_DUMPABLE = 3 pkg syscall (linux-386), const PR_GET_ENDIAN = 19 pkg syscall (linux-386), const PR_GET_FPEMU = 9 pkg syscall (linux-386), const PR_GET_FPEXC = 11 pkg syscall (linux-386), const PR_GET_KEEPCAPS = 7 pkg syscall (linux-386), const PR_GET_NAME = 16 pkg syscall (linux-386), const PR_GET_PDEATHSIG = 2 pkg syscall (linux-386), const PR_GET_SECCOMP = 21 pkg syscall (linux-386), const PR_GET_SECUREBITS = 27 pkg syscall (linux-386), const PR_GET_TIMERSLACK = 30 pkg syscall (linux-386), const PR_GET_TIMING = 13 pkg syscall (linux-386), const PR_GET_TSC = 25 pkg syscall (linux-386), const PR_GET_UNALIGN = 5 pkg syscall (linux-386), const PR_MCE_KILL = 33 pkg syscall (linux-386), const PR_MCE_KILL_CLEAR = 0 pkg syscall (linux-386), const PR_MCE_KILL_DEFAULT = 2 pkg syscall (linux-386), const PR_MCE_KILL_EARLY = 1 pkg syscall (linux-386), const PR_MCE_KILL_GET = 34 pkg syscall (linux-386), const PR_MCE_KILL_LATE = 0 pkg syscall (linux-386), const PR_MCE_KILL_SET = 1 pkg syscall (linux-386), const PR_SET_DUMPABLE = 4 pkg syscall (linux-386), const PR_SET_ENDIAN = 20 pkg syscall (linux-386), const PR_SET_FPEMU = 10 pkg syscall (linux-386), const PR_SET_FPEXC = 12 pkg syscall (linux-386), const PR_SET_KEEPCAPS = 8 pkg syscall (linux-386), const PR_SET_NAME = 15 pkg syscall (linux-386), const PR_SET_PDEATHSIG = 1 pkg syscall (linux-386), const PR_SET_PTRACER = 1499557217 pkg syscall (linux-386), const PR_SET_SECCOMP = 22 pkg syscall (linux-386), const PR_SET_SECUREBITS = 28 pkg syscall (linux-386), const PR_SET_TIMERSLACK = 29 pkg syscall (linux-386), const PR_SET_TIMING = 14 pkg syscall (linux-386), const PR_SET_TSC = 26 pkg syscall (linux-386), const PR_SET_UNALIGN = 6 pkg syscall (linux-386), const PR_TASK_PERF_EVENTS_DISABLE = 31 pkg syscall (linux-386), const PR_TASK_PERF_EVENTS_ENABLE = 32 pkg syscall (linux-386), const PR_TIMING_STATISTICAL = 0 pkg syscall (linux-386), const PR_TIMING_TIMESTAMP = 1 pkg syscall (linux-386), const PR_TSC_ENABLE = 1 pkg syscall (linux-386), const PR_TSC_SIGSEGV = 2 pkg syscall (linux-386), const PR_UNALIGN_NOPRINT = 1 pkg syscall (linux-386), const PR_UNALIGN_SIGBUS = 2 pkg syscall (linux-386), const PTRACE_ATTACH = 16 pkg syscall (linux-386), const PTRACE_CONT = 7 pkg syscall (linux-386), const PTRACE_DETACH = 17 pkg syscall (linux-386), const PTRACE_EVENT_CLONE = 3 pkg syscall (linux-386), const PTRACE_EVENT_EXEC = 4 pkg syscall (linux-386), const PTRACE_EVENT_EXIT = 6 pkg syscall (linux-386), const PTRACE_EVENT_FORK = 1 pkg syscall (linux-386), const PTRACE_EVENT_VFORK = 2 pkg syscall (linux-386), const PTRACE_EVENT_VFORK_DONE = 5 pkg syscall (linux-386), const PTRACE_GETEVENTMSG = 16897 pkg syscall (linux-386), const PTRACE_GETFPREGS = 14 pkg syscall (linux-386), const PTRACE_GETFPXREGS = 18 pkg syscall (linux-386), const PTRACE_GETREGS = 12 pkg syscall (linux-386), const PTRACE_GETREGSET = 16900 pkg syscall (linux-386), const PTRACE_GETSIGINFO = 16898 pkg syscall (linux-386), const PTRACE_GET_THREAD_AREA = 25 pkg syscall (linux-386), const PTRACE_KILL = 8 pkg syscall (linux-386), const PTRACE_OLDSETOPTIONS = 21 pkg syscall (linux-386), const PTRACE_O_MASK = 127 pkg syscall (linux-386), const PTRACE_O_TRACECLONE = 8 pkg syscall (linux-386), const PTRACE_O_TRACEEXEC = 16 pkg syscall (linux-386), const PTRACE_O_TRACEEXIT = 64 pkg syscall (linux-386), const PTRACE_O_TRACEFORK = 2 pkg syscall (linux-386), const PTRACE_O_TRACESYSGOOD = 1 pkg syscall (linux-386), const PTRACE_O_TRACEVFORK = 4 pkg syscall (linux-386), const PTRACE_O_TRACEVFORKDONE = 32 pkg syscall (linux-386), const PTRACE_PEEKDATA = 2 pkg syscall (linux-386), const PTRACE_PEEKTEXT = 1 pkg syscall (linux-386), const PTRACE_PEEKUSR = 3 pkg syscall (linux-386), const PTRACE_POKEDATA = 5 pkg syscall (linux-386), const PTRACE_POKETEXT = 4 pkg syscall (linux-386), const PTRACE_POKEUSR = 6 pkg syscall (linux-386), const PTRACE_SETFPREGS = 15 pkg syscall (linux-386), const PTRACE_SETFPXREGS = 19 pkg syscall (linux-386), const PTRACE_SETOPTIONS = 16896 pkg syscall (linux-386), const PTRACE_SETREGS = 13 pkg syscall (linux-386), const PTRACE_SETREGSET = 16901 pkg syscall (linux-386), const PTRACE_SETSIGINFO = 16899 pkg syscall (linux-386), const PTRACE_SET_THREAD_AREA = 26 pkg syscall (linux-386), const PTRACE_SINGLEBLOCK = 33 pkg syscall (linux-386), const PTRACE_SINGLESTEP = 9 pkg syscall (linux-386), const PTRACE_SYSCALL = 24 pkg syscall (linux-386), const PTRACE_SYSEMU = 31 pkg syscall (linux-386), const PTRACE_SYSEMU_SINGLESTEP = 32 pkg syscall (linux-386), const PTRACE_TRACEME = 0 pkg syscall (linux-386), const PathMax = 4096 pkg syscall (linux-386), const RLIMIT_AS = 9 pkg syscall (linux-386), const RLIMIT_CORE = 4 pkg syscall (linux-386), const RLIMIT_CPU = 0 pkg syscall (linux-386), const RLIMIT_DATA = 2 pkg syscall (linux-386), const RLIMIT_FSIZE = 1 pkg syscall (linux-386), const RLIMIT_NOFILE = 7 pkg syscall (linux-386), const RLIMIT_STACK = 3 pkg syscall (linux-386), const RLIM_INFINITY = -1 pkg syscall (linux-386), const RTAX_ADVMSS = 8 pkg syscall (linux-386), const RTAX_CWND = 7 pkg syscall (linux-386), const RTAX_FEATURES = 12 pkg syscall (linux-386), const RTAX_FEATURE_ALLFRAG = 8 pkg syscall (linux-386), const RTAX_FEATURE_ECN = 1 pkg syscall (linux-386), const RTAX_FEATURE_SACK = 2 pkg syscall (linux-386), const RTAX_FEATURE_TIMESTAMP = 4 pkg syscall (linux-386), const RTAX_HOPLIMIT = 10 pkg syscall (linux-386), const RTAX_INITCWND = 11 pkg syscall (linux-386), const RTAX_INITRWND = 14 pkg syscall (linux-386), const RTAX_LOCK = 1 pkg syscall (linux-386), const RTAX_MAX = 14 pkg syscall (linux-386), const RTAX_MTU = 2 pkg syscall (linux-386), const RTAX_REORDERING = 9 pkg syscall (linux-386), const RTAX_RTO_MIN = 13 pkg syscall (linux-386), const RTAX_RTT = 4 pkg syscall (linux-386), const RTAX_RTTVAR = 5 pkg syscall (linux-386), const RTAX_SSTHRESH = 6 pkg syscall (linux-386), const RTAX_UNSPEC = 0 pkg syscall (linux-386), const RTAX_WINDOW = 3 pkg syscall (linux-386), const RTA_ALIGNTO = 4 pkg syscall (linux-386), const RTA_CACHEINFO = 12 pkg syscall (linux-386), const RTA_DST = 1 pkg syscall (linux-386), const RTA_FLOW = 11 pkg syscall (linux-386), const RTA_GATEWAY = 5 pkg syscall (linux-386), const RTA_IIF = 3 pkg syscall (linux-386), const RTA_MAX = 16 pkg syscall (linux-386), const RTA_METRICS = 8 pkg syscall (linux-386), const RTA_MULTIPATH = 9 pkg syscall (linux-386), const RTA_OIF = 4 pkg syscall (linux-386), const RTA_PREFSRC = 7 pkg syscall (linux-386), const RTA_PRIORITY = 6 pkg syscall (linux-386), const RTA_SRC = 2 pkg syscall (linux-386), const RTA_TABLE = 15 pkg syscall (linux-386), const RTA_UNSPEC = 0 pkg syscall (linux-386), const RTCF_DIRECTSRC = 67108864 pkg syscall (linux-386), const RTCF_DOREDIRECT = 16777216 pkg syscall (linux-386), const RTCF_LOG = 33554432 pkg syscall (linux-386), const RTCF_MASQ = 4194304 pkg syscall (linux-386), const RTCF_NAT = 8388608 pkg syscall (linux-386), const RTCF_VALVE = 2097152 pkg syscall (linux-386), const RTF_ADDRCLASSMASK = 4160749568 pkg syscall (linux-386), const RTF_ADDRCONF = 262144 pkg syscall (linux-386), const RTF_ALLONLINK = 131072 pkg syscall (linux-386), const RTF_BROADCAST = 268435456 pkg syscall (linux-386), const RTF_CACHE = 16777216 pkg syscall (linux-386), const RTF_DEFAULT = 65536 pkg syscall (linux-386), const RTF_DYNAMIC = 16 pkg syscall (linux-386), const RTF_FLOW = 33554432 pkg syscall (linux-386), const RTF_GATEWAY = 2 pkg syscall (linux-386), const RTF_HOST = 4 pkg syscall (linux-386), const RTF_INTERFACE = 1073741824 pkg syscall (linux-386), const RTF_IRTT = 256 pkg syscall (linux-386), const RTF_LINKRT = 1048576 pkg syscall (linux-386), const RTF_LOCAL = 2147483648 pkg syscall (linux-386), const RTF_MODIFIED = 32 pkg syscall (linux-386), const RTF_MSS = 64 pkg syscall (linux-386), const RTF_MTU = 64 pkg syscall (linux-386), const RTF_MULTICAST = 536870912 pkg syscall (linux-386), const RTF_NAT = 134217728 pkg syscall (linux-386), const RTF_NOFORWARD = 4096 pkg syscall (linux-386), const RTF_NONEXTHOP = 2097152 pkg syscall (linux-386), const RTF_NOPMTUDISC = 16384 pkg syscall (linux-386), const RTF_POLICY = 67108864 pkg syscall (linux-386), const RTF_REINSTATE = 8 pkg syscall (linux-386), const RTF_REJECT = 512 pkg syscall (linux-386), const RTF_STATIC = 1024 pkg syscall (linux-386), const RTF_THROW = 8192 pkg syscall (linux-386), const RTF_UP = 1 pkg syscall (linux-386), const RTF_WINDOW = 128 pkg syscall (linux-386), const RTF_XRESOLVE = 2048 pkg syscall (linux-386), const RTM_BASE = 16 pkg syscall (linux-386), const RTM_DELACTION = 49 pkg syscall (linux-386), const RTM_DELADDR = 21 pkg syscall (linux-386), const RTM_DELADDRLABEL = 73 pkg syscall (linux-386), const RTM_DELLINK = 17 pkg syscall (linux-386), const RTM_DELNEIGH = 29 pkg syscall (linux-386), const RTM_DELQDISC = 37 pkg syscall (linux-386), const RTM_DELROUTE = 25 pkg syscall (linux-386), const RTM_DELRULE = 33 pkg syscall (linux-386), const RTM_DELTCLASS = 41 pkg syscall (linux-386), const RTM_DELTFILTER = 45 pkg syscall (linux-386), const RTM_F_CLONED = 512 pkg syscall (linux-386), const RTM_F_EQUALIZE = 1024 pkg syscall (linux-386), const RTM_F_NOTIFY = 256 pkg syscall (linux-386), const RTM_F_PREFIX = 2048 pkg syscall (linux-386), const RTM_GETACTION = 50 pkg syscall (linux-386), const RTM_GETADDR = 22 pkg syscall (linux-386), const RTM_GETADDRLABEL = 74 pkg syscall (linux-386), const RTM_GETANYCAST = 62 pkg syscall (linux-386), const RTM_GETDCB = 78 pkg syscall (linux-386), const RTM_GETLINK = 18 pkg syscall (linux-386), const RTM_GETMULTICAST = 58 pkg syscall (linux-386), const RTM_GETNEIGH = 30 pkg syscall (linux-386), const RTM_GETNEIGHTBL = 66 pkg syscall (linux-386), const RTM_GETQDISC = 38 pkg syscall (linux-386), const RTM_GETROUTE = 26 pkg syscall (linux-386), const RTM_GETRULE = 34 pkg syscall (linux-386), const RTM_GETTCLASS = 42 pkg syscall (linux-386), const RTM_GETTFILTER = 46 pkg syscall (linux-386), const RTM_MAX = 79 pkg syscall (linux-386), const RTM_NEWACTION = 48 pkg syscall (linux-386), const RTM_NEWADDR = 20 pkg syscall (linux-386), const RTM_NEWADDRLABEL = 72 pkg syscall (linux-386), const RTM_NEWLINK = 16 pkg syscall (linux-386), const RTM_NEWNDUSEROPT = 68 pkg syscall (linux-386), const RTM_NEWNEIGH = 28 pkg syscall (linux-386), const RTM_NEWNEIGHTBL = 64 pkg syscall (linux-386), const RTM_NEWPREFIX = 52 pkg syscall (linux-386), const RTM_NEWQDISC = 36 pkg syscall (linux-386), const RTM_NEWROUTE = 24 pkg syscall (linux-386), const RTM_NEWRULE = 32 pkg syscall (linux-386), const RTM_NEWTCLASS = 40 pkg syscall (linux-386), const RTM_NEWTFILTER = 44 pkg syscall (linux-386), const RTM_NR_FAMILIES = 16 pkg syscall (linux-386), const RTM_NR_MSGTYPES = 64 pkg syscall (linux-386), const RTM_SETDCB = 79 pkg syscall (linux-386), const RTM_SETLINK = 19 pkg syscall (linux-386), const RTM_SETNEIGHTBL = 67 pkg syscall (linux-386), const RTNH_ALIGNTO = 4 pkg syscall (linux-386), const RTNH_F_DEAD = 1 pkg syscall (linux-386), const RTNH_F_ONLINK = 4 pkg syscall (linux-386), const RTNH_F_PERVASIVE = 2 pkg syscall (linux-386), const RTNLGRP_IPV4_IFADDR = 5 pkg syscall (linux-386), const RTNLGRP_IPV4_IFADDR ideal-int pkg syscall (linux-386), const RTNLGRP_IPV4_MROUTE = 6 pkg syscall (linux-386), const RTNLGRP_IPV4_MROUTE ideal-int pkg syscall (linux-386), const RTNLGRP_IPV4_ROUTE = 7 pkg syscall (linux-386), const RTNLGRP_IPV4_ROUTE ideal-int pkg syscall (linux-386), const RTNLGRP_IPV4_RULE = 8 pkg syscall (linux-386), const RTNLGRP_IPV4_RULE ideal-int pkg syscall (linux-386), const RTNLGRP_IPV6_IFADDR = 9 pkg syscall (linux-386), const RTNLGRP_IPV6_IFADDR ideal-int pkg syscall (linux-386), const RTNLGRP_IPV6_IFINFO = 12 pkg syscall (linux-386), const RTNLGRP_IPV6_IFINFO ideal-int pkg syscall (linux-386), const RTNLGRP_IPV6_MROUTE = 10 pkg syscall (linux-386), const RTNLGRP_IPV6_MROUTE ideal-int pkg syscall (linux-386), const RTNLGRP_IPV6_PREFIX = 18 pkg syscall (linux-386), const RTNLGRP_IPV6_PREFIX ideal-int pkg syscall (linux-386), const RTNLGRP_IPV6_ROUTE = 11 pkg syscall (linux-386), const RTNLGRP_IPV6_ROUTE ideal-int pkg syscall (linux-386), const RTNLGRP_IPV6_RULE = 19 pkg syscall (linux-386), const RTNLGRP_IPV6_RULE ideal-int pkg syscall (linux-386), const RTNLGRP_LINK = 1 pkg syscall (linux-386), const RTNLGRP_LINK ideal-int pkg syscall (linux-386), const RTNLGRP_ND_USEROPT = 20 pkg syscall (linux-386), const RTNLGRP_ND_USEROPT ideal-int pkg syscall (linux-386), const RTNLGRP_NEIGH = 3 pkg syscall (linux-386), const RTNLGRP_NEIGH ideal-int pkg syscall (linux-386), const RTNLGRP_NONE = 0 pkg syscall (linux-386), const RTNLGRP_NONE ideal-int pkg syscall (linux-386), const RTNLGRP_NOTIFY = 2 pkg syscall (linux-386), const RTNLGRP_NOTIFY ideal-int pkg syscall (linux-386), const RTNLGRP_TC = 4 pkg syscall (linux-386), const RTNLGRP_TC ideal-int pkg syscall (linux-386), const RTN_ANYCAST = 4 pkg syscall (linux-386), const RTN_BLACKHOLE = 6 pkg syscall (linux-386), const RTN_BROADCAST = 3 pkg syscall (linux-386), const RTN_LOCAL = 2 pkg syscall (linux-386), const RTN_MAX = 11 pkg syscall (linux-386), const RTN_MULTICAST = 5 pkg syscall (linux-386), const RTN_NAT = 10 pkg syscall (linux-386), const RTN_PROHIBIT = 8 pkg syscall (linux-386), const RTN_THROW = 9 pkg syscall (linux-386), const RTN_UNICAST = 1 pkg syscall (linux-386), const RTN_UNREACHABLE = 7 pkg syscall (linux-386), const RTN_UNSPEC = 0 pkg syscall (linux-386), const RTN_XRESOLVE = 11 pkg syscall (linux-386), const RTPROT_BIRD = 12 pkg syscall (linux-386), const RTPROT_BOOT = 3 pkg syscall (linux-386), const RTPROT_DHCP = 16 pkg syscall (linux-386), const RTPROT_DNROUTED = 13 pkg syscall (linux-386), const RTPROT_GATED = 8 pkg syscall (linux-386), const RTPROT_KERNEL = 2 pkg syscall (linux-386), const RTPROT_MRT = 10 pkg syscall (linux-386), const RTPROT_NTK = 15 pkg syscall (linux-386), const RTPROT_RA = 9 pkg syscall (linux-386), const RTPROT_REDIRECT = 1 pkg syscall (linux-386), const RTPROT_STATIC = 4 pkg syscall (linux-386), const RTPROT_UNSPEC = 0 pkg syscall (linux-386), const RTPROT_XORP = 14 pkg syscall (linux-386), const RTPROT_ZEBRA = 11 pkg syscall (linux-386), const RT_CLASS_DEFAULT = 253 pkg syscall (linux-386), const RT_CLASS_LOCAL = 255 pkg syscall (linux-386), const RT_CLASS_MAIN = 254 pkg syscall (linux-386), const RT_CLASS_MAX = 255 pkg syscall (linux-386), const RT_CLASS_UNSPEC = 0 pkg syscall (linux-386), const RT_SCOPE_HOST = 254 pkg syscall (linux-386), const RT_SCOPE_LINK = 253 pkg syscall (linux-386), const RT_SCOPE_NOWHERE = 255 pkg syscall (linux-386), const RT_SCOPE_SITE = 200 pkg syscall (linux-386), const RT_SCOPE_UNIVERSE = 0 pkg syscall (linux-386), const RT_TABLE_COMPAT = 252 pkg syscall (linux-386), const RT_TABLE_DEFAULT = 253 pkg syscall (linux-386), const RT_TABLE_LOCAL = 255 pkg syscall (linux-386), const RT_TABLE_MAIN = 254 pkg syscall (linux-386), const RT_TABLE_MAX = 4294967295 pkg syscall (linux-386), const RT_TABLE_UNSPEC = 0 pkg syscall (linux-386), const RUSAGE_CHILDREN = -1 pkg syscall (linux-386), const RUSAGE_SELF = 0 pkg syscall (linux-386), const RUSAGE_THREAD = 1 pkg syscall (linux-386), const SCM_CREDENTIALS = 2 pkg syscall (linux-386), const SCM_RIGHTS = 1 pkg syscall (linux-386), const SCM_TIMESTAMP = 29 pkg syscall (linux-386), const SCM_TIMESTAMPING = 37 pkg syscall (linux-386), const SCM_TIMESTAMPNS = 35 pkg syscall (linux-386), const SIGBUS = 7 pkg syscall (linux-386), const SIGCHLD = 17 pkg syscall (linux-386), const SIGCLD = 17 pkg syscall (linux-386), const SIGCONT = 18 pkg syscall (linux-386), const SIGIO = 29 pkg syscall (linux-386), const SIGIOT = 6 pkg syscall (linux-386), const SIGPOLL = 29 pkg syscall (linux-386), const SIGPROF = 27 pkg syscall (linux-386), const SIGPWR = 30 pkg syscall (linux-386), const SIGSTKFLT = 16 pkg syscall (linux-386), const SIGSTOP = 19 pkg syscall (linux-386), const SIGSYS = 31 pkg syscall (linux-386), const SIGTSTP = 20 pkg syscall (linux-386), const SIGTTIN = 21 pkg syscall (linux-386), const SIGTTOU = 22 pkg syscall (linux-386), const SIGUNUSED = 31 pkg syscall (linux-386), const SIGURG = 23 pkg syscall (linux-386), const SIGUSR1 = 10 pkg syscall (linux-386), const SIGUSR2 = 12 pkg syscall (linux-386), const SIGVTALRM = 26 pkg syscall (linux-386), const SIGWINCH = 28 pkg syscall (linux-386), const SIGXCPU = 24 pkg syscall (linux-386), const SIGXFSZ = 25 pkg syscall (linux-386), const SIOCADDDLCI = 35200 pkg syscall (linux-386), const SIOCADDMULTI = 35121 pkg syscall (linux-386), const SIOCADDRT = 35083 pkg syscall (linux-386), const SIOCATMARK = 35077 pkg syscall (linux-386), const SIOCDARP = 35155 pkg syscall (linux-386), const SIOCDELDLCI = 35201 pkg syscall (linux-386), const SIOCDELMULTI = 35122 pkg syscall (linux-386), const SIOCDELRT = 35084 pkg syscall (linux-386), const SIOCDEVPRIVATE = 35312 pkg syscall (linux-386), const SIOCDIFADDR = 35126 pkg syscall (linux-386), const SIOCDRARP = 35168 pkg syscall (linux-386), const SIOCGARP = 35156 pkg syscall (linux-386), const SIOCGIFADDR = 35093 pkg syscall (linux-386), const SIOCGIFBR = 35136 pkg syscall (linux-386), const SIOCGIFBRDADDR = 35097 pkg syscall (linux-386), const SIOCGIFCONF = 35090 pkg syscall (linux-386), const SIOCGIFCOUNT = 35128 pkg syscall (linux-386), const SIOCGIFDSTADDR = 35095 pkg syscall (linux-386), const SIOCGIFENCAP = 35109 pkg syscall (linux-386), const SIOCGIFFLAGS = 35091 pkg syscall (linux-386), const SIOCGIFHWADDR = 35111 pkg syscall (linux-386), const SIOCGIFINDEX = 35123 pkg syscall (linux-386), const SIOCGIFMAP = 35184 pkg syscall (linux-386), const SIOCGIFMEM = 35103 pkg syscall (linux-386), const SIOCGIFMETRIC = 35101 pkg syscall (linux-386), const SIOCGIFMTU = 35105 pkg syscall (linux-386), const SIOCGIFNAME = 35088 pkg syscall (linux-386), const SIOCGIFNETMASK = 35099 pkg syscall (linux-386), const SIOCGIFPFLAGS = 35125 pkg syscall (linux-386), const SIOCGIFSLAVE = 35113 pkg syscall (linux-386), const SIOCGIFTXQLEN = 35138 pkg syscall (linux-386), const SIOCGPGRP = 35076 pkg syscall (linux-386), const SIOCGRARP = 35169 pkg syscall (linux-386), const SIOCGSTAMP = 35078 pkg syscall (linux-386), const SIOCGSTAMPNS = 35079 pkg syscall (linux-386), const SIOCPROTOPRIVATE = 35296 pkg syscall (linux-386), const SIOCRTMSG = 35085 pkg syscall (linux-386), const SIOCSARP = 35157 pkg syscall (linux-386), const SIOCSIFADDR = 35094 pkg syscall (linux-386), const SIOCSIFBR = 35137 pkg syscall (linux-386), const SIOCSIFBRDADDR = 35098 pkg syscall (linux-386), const SIOCSIFDSTADDR = 35096 pkg syscall (linux-386), const SIOCSIFENCAP = 35110 pkg syscall (linux-386), const SIOCSIFFLAGS = 35092 pkg syscall (linux-386), const SIOCSIFHWADDR = 35108 pkg syscall (linux-386), const SIOCSIFHWBROADCAST = 35127 pkg syscall (linux-386), const SIOCSIFLINK = 35089 pkg syscall (linux-386), const SIOCSIFMAP = 35185 pkg syscall (linux-386), const SIOCSIFMEM = 35104 pkg syscall (linux-386), const SIOCSIFMETRIC = 35102 pkg syscall (linux-386), const SIOCSIFMTU = 35106 pkg syscall (linux-386), const SIOCSIFNAME = 35107 pkg syscall (linux-386), const SIOCSIFNETMASK = 35100 pkg syscall (linux-386), const SIOCSIFPFLAGS = 35124 pkg syscall (linux-386), const SIOCSIFSLAVE = 35120 pkg syscall (linux-386), const SIOCSIFTXQLEN = 35139 pkg syscall (linux-386), const SIOCSPGRP = 35074 pkg syscall (linux-386), const SIOCSRARP = 35170 pkg syscall (linux-386), const SOCK_CLOEXEC = 524288 pkg syscall (linux-386), const SOCK_DCCP = 6 pkg syscall (linux-386), const SOCK_NONBLOCK = 2048 pkg syscall (linux-386), const SOCK_PACKET = 10 pkg syscall (linux-386), const SOCK_RDM = 4 pkg syscall (linux-386), const SOL_AAL = 265 pkg syscall (linux-386), const SOL_ATM = 264 pkg syscall (linux-386), const SOL_DECNET = 261 pkg syscall (linux-386), const SOL_ICMPV6 = 58 pkg syscall (linux-386), const SOL_IP = 0 pkg syscall (linux-386), const SOL_IPV6 = 41 pkg syscall (linux-386), const SOL_IRDA = 266 pkg syscall (linux-386), const SOL_PACKET = 263 pkg syscall (linux-386), const SOL_RAW = 255 pkg syscall (linux-386), const SOL_SOCKET = 1 pkg syscall (linux-386), const SOL_TCP = 6 pkg syscall (linux-386), const SOL_X25 = 262 pkg syscall (linux-386), const SOMAXCONN = 128 pkg syscall (linux-386), const SO_ACCEPTCONN = 30 pkg syscall (linux-386), const SO_ATTACH_FILTER = 26 pkg syscall (linux-386), const SO_BINDTODEVICE = 25 pkg syscall (linux-386), const SO_BROADCAST = 6 pkg syscall (linux-386), const SO_BSDCOMPAT = 14 pkg syscall (linux-386), const SO_DEBUG = 1 pkg syscall (linux-386), const SO_DETACH_FILTER = 27 pkg syscall (linux-386), const SO_DOMAIN = 39 pkg syscall (linux-386), const SO_DONTROUTE = 5 pkg syscall (linux-386), const SO_ERROR = 4 pkg syscall (linux-386), const SO_KEEPALIVE = 9 pkg syscall (linux-386), const SO_LINGER = 13 pkg syscall (linux-386), const SO_MARK = 36 pkg syscall (linux-386), const SO_NO_CHECK = 11 pkg syscall (linux-386), const SO_OOBINLINE = 10 pkg syscall (linux-386), const SO_PASSCRED = 16 pkg syscall (linux-386), const SO_PASSSEC = 34 pkg syscall (linux-386), const SO_PEERCRED = 17 pkg syscall (linux-386), const SO_PEERNAME = 28 pkg syscall (linux-386), const SO_PEERSEC = 31 pkg syscall (linux-386), const SO_PRIORITY = 12 pkg syscall (linux-386), const SO_PROTOCOL = 38 pkg syscall (linux-386), const SO_RCVBUF = 8 pkg syscall (linux-386), const SO_RCVBUFFORCE = 33 pkg syscall (linux-386), const SO_RCVLOWAT = 18 pkg syscall (linux-386), const SO_RCVTIMEO = 20 pkg syscall (linux-386), const SO_REUSEADDR = 2 pkg syscall (linux-386), const SO_RXQ_OVFL = 40 pkg syscall (linux-386), const SO_SECURITY_AUTHENTICATION = 22 pkg syscall (linux-386), const SO_SECURITY_ENCRYPTION_NETWORK = 24 pkg syscall (linux-386), const SO_SECURITY_ENCRYPTION_TRANSPORT = 23 pkg syscall (linux-386), const SO_SNDBUF = 7 pkg syscall (linux-386), const SO_SNDBUFFORCE = 32 pkg syscall (linux-386), const SO_SNDLOWAT = 19 pkg syscall (linux-386), const SO_SNDTIMEO = 21 pkg syscall (linux-386), const SO_TIMESTAMP = 29 pkg syscall (linux-386), const SO_TIMESTAMPING = 37 pkg syscall (linux-386), const SO_TIMESTAMPNS = 35 pkg syscall (linux-386), const SO_TYPE = 3 pkg syscall (linux-386), const SYS_ACCESS = 33 pkg syscall (linux-386), const SYS_ACCT = 51 pkg syscall (linux-386), const SYS_ADD_KEY = 286 pkg syscall (linux-386), const SYS_ADJTIMEX = 124 pkg syscall (linux-386), const SYS_AFS_SYSCALL = 137 pkg syscall (linux-386), const SYS_ALARM = 27 pkg syscall (linux-386), const SYS_BDFLUSH = 134 pkg syscall (linux-386), const SYS_BREAK = 17 pkg syscall (linux-386), const SYS_BRK = 45 pkg syscall (linux-386), const SYS_CAPGET = 184 pkg syscall (linux-386), const SYS_CAPSET = 185 pkg syscall (linux-386), const SYS_CHDIR = 12 pkg syscall (linux-386), const SYS_CHMOD = 15 pkg syscall (linux-386), const SYS_CHOWN = 182 pkg syscall (linux-386), const SYS_CHOWN32 = 212 pkg syscall (linux-386), const SYS_CHROOT = 61 pkg syscall (linux-386), const SYS_CLOCK_GETRES = 266 pkg syscall (linux-386), const SYS_CLOCK_GETTIME = 265 pkg syscall (linux-386), const SYS_CLOCK_NANOSLEEP = 267 pkg syscall (linux-386), const SYS_CLOCK_SETTIME = 264 pkg syscall (linux-386), const SYS_CLONE = 120 pkg syscall (linux-386), const SYS_CLOSE = 6 pkg syscall (linux-386), const SYS_CREAT = 8 pkg syscall (linux-386), const SYS_CREATE_MODULE = 127 pkg syscall (linux-386), const SYS_DELETE_MODULE = 129 pkg syscall (linux-386), const SYS_DUP = 41 pkg syscall (linux-386), const SYS_DUP2 = 63 pkg syscall (linux-386), const SYS_DUP3 = 330 pkg syscall (linux-386), const SYS_EPOLL_CREATE = 254 pkg syscall (linux-386), const SYS_EPOLL_CREATE1 = 329 pkg syscall (linux-386), const SYS_EPOLL_CTL = 255 pkg syscall (linux-386), const SYS_EPOLL_PWAIT = 319 pkg syscall (linux-386), const SYS_EPOLL_WAIT = 256 pkg syscall (linux-386), const SYS_EVENTFD = 323 pkg syscall (linux-386), const SYS_EVENTFD2 = 328 pkg syscall (linux-386), const SYS_EXECVE = 11 pkg syscall (linux-386), const SYS_EXIT = 1 pkg syscall (linux-386), const SYS_EXIT_GROUP = 252 pkg syscall (linux-386), const SYS_FACCESSAT = 307 pkg syscall (linux-386), const SYS_FADVISE64 = 250 pkg syscall (linux-386), const SYS_FADVISE64_64 = 272 pkg syscall (linux-386), const SYS_FALLOCATE = 324 pkg syscall (linux-386), const SYS_FANOTIFY_INIT = 338 pkg syscall (linux-386), const SYS_FANOTIFY_MARK = 339 pkg syscall (linux-386), const SYS_FCHDIR = 133 pkg syscall (linux-386), const SYS_FCHMOD = 94 pkg syscall (linux-386), const SYS_FCHMODAT = 306 pkg syscall (linux-386), const SYS_FCHOWN = 95 pkg syscall (linux-386), const SYS_FCHOWN32 = 207 pkg syscall (linux-386), const SYS_FCHOWNAT = 298 pkg syscall (linux-386), const SYS_FCNTL = 55 pkg syscall (linux-386), const SYS_FCNTL64 = 221 pkg syscall (linux-386), const SYS_FDATASYNC = 148 pkg syscall (linux-386), const SYS_FGETXATTR = 231 pkg syscall (linux-386), const SYS_FLISTXATTR = 234 pkg syscall (linux-386), const SYS_FLOCK = 143 pkg syscall (linux-386), const SYS_FORK = 2 pkg syscall (linux-386), const SYS_FREMOVEXATTR = 237 pkg syscall (linux-386), const SYS_FSETXATTR = 228 pkg syscall (linux-386), const SYS_FSTAT = 108 pkg syscall (linux-386), const SYS_FSTAT64 = 197 pkg syscall (linux-386), const SYS_FSTATAT64 = 300 pkg syscall (linux-386), const SYS_FSTATFS = 100 pkg syscall (linux-386), const SYS_FSTATFS64 = 269 pkg syscall (linux-386), const SYS_FSYNC = 118 pkg syscall (linux-386), const SYS_FTIME = 35 pkg syscall (linux-386), const SYS_FTRUNCATE = 93 pkg syscall (linux-386), const SYS_FTRUNCATE64 = 194 pkg syscall (linux-386), const SYS_FUTEX = 240 pkg syscall (linux-386), const SYS_FUTIMESAT = 299 pkg syscall (linux-386), const SYS_GETCPU = 318 pkg syscall (linux-386), const SYS_GETCWD = 183 pkg syscall (linux-386), const SYS_GETDENTS = 141 pkg syscall (linux-386), const SYS_GETDENTS64 = 220 pkg syscall (linux-386), const SYS_GETEGID = 50 pkg syscall (linux-386), const SYS_GETEGID32 = 202 pkg syscall (linux-386), const SYS_GETEUID = 49 pkg syscall (linux-386), const SYS_GETEUID32 = 201 pkg syscall (linux-386), const SYS_GETGID = 47 pkg syscall (linux-386), const SYS_GETGID32 = 200 pkg syscall (linux-386), const SYS_GETGROUPS = 80 pkg syscall (linux-386), const SYS_GETGROUPS32 = 205 pkg syscall (linux-386), const SYS_GETITIMER = 105 pkg syscall (linux-386), const SYS_GETPGID = 132 pkg syscall (linux-386), const SYS_GETPGRP = 65 pkg syscall (linux-386), const SYS_GETPID = 20 pkg syscall (linux-386), const SYS_GETPMSG = 188 pkg syscall (linux-386), const SYS_GETPPID = 64 pkg syscall (linux-386), const SYS_GETPRIORITY = 96 pkg syscall (linux-386), const SYS_GETRESGID = 171 pkg syscall (linux-386), const SYS_GETRESGID32 = 211 pkg syscall (linux-386), const SYS_GETRESUID = 165 pkg syscall (linux-386), const SYS_GETRESUID32 = 209 pkg syscall (linux-386), const SYS_GETRLIMIT = 76 pkg syscall (linux-386), const SYS_GETRUSAGE = 77 pkg syscall (linux-386), const SYS_GETSID = 147 pkg syscall (linux-386), const SYS_GETTID = 224 pkg syscall (linux-386), const SYS_GETTIMEOFDAY = 78 pkg syscall (linux-386), const SYS_GETUID = 24 pkg syscall (linux-386), const SYS_GETUID32 = 199 pkg syscall (linux-386), const SYS_GETXATTR = 229 pkg syscall (linux-386), const SYS_GET_KERNEL_SYMS = 130 pkg syscall (linux-386), const SYS_GET_MEMPOLICY = 275 pkg syscall (linux-386), const SYS_GET_ROBUST_LIST = 312 pkg syscall (linux-386), const SYS_GET_THREAD_AREA = 244 pkg syscall (linux-386), const SYS_GTTY = 32 pkg syscall (linux-386), const SYS_IDLE = 112 pkg syscall (linux-386), const SYS_INIT_MODULE = 128 pkg syscall (linux-386), const SYS_INOTIFY_ADD_WATCH = 292 pkg syscall (linux-386), const SYS_INOTIFY_INIT = 291 pkg syscall (linux-386), const SYS_INOTIFY_INIT1 = 332 pkg syscall (linux-386), const SYS_INOTIFY_RM_WATCH = 293 pkg syscall (linux-386), const SYS_IOCTL = 54 pkg syscall (linux-386), const SYS_IOPERM = 101 pkg syscall (linux-386), const SYS_IOPL = 110 pkg syscall (linux-386), const SYS_IOPRIO_GET = 290 pkg syscall (linux-386), const SYS_IOPRIO_SET = 289 pkg syscall (linux-386), const SYS_IO_CANCEL = 249 pkg syscall (linux-386), const SYS_IO_DESTROY = 246 pkg syscall (linux-386), const SYS_IO_GETEVENTS = 247 pkg syscall (linux-386), const SYS_IO_SETUP = 245 pkg syscall (linux-386), const SYS_IO_SUBMIT = 248 pkg syscall (linux-386), const SYS_IPC = 117 pkg syscall (linux-386), const SYS_KEXEC_LOAD = 283 pkg syscall (linux-386), const SYS_KEYCTL = 288 pkg syscall (linux-386), const SYS_KILL = 37 pkg syscall (linux-386), const SYS_LCHOWN = 16 pkg syscall (linux-386), const SYS_LCHOWN32 = 198 pkg syscall (linux-386), const SYS_LGETXATTR = 230 pkg syscall (linux-386), const SYS_LINK = 9 pkg syscall (linux-386), const SYS_LINKAT = 303 pkg syscall (linux-386), const SYS_LISTXATTR = 232 pkg syscall (linux-386), const SYS_LLISTXATTR = 233 pkg syscall (linux-386), const SYS_LOCK = 53 pkg syscall (linux-386), const SYS_LOOKUP_DCOOKIE = 253 pkg syscall (linux-386), const SYS_LREMOVEXATTR = 236 pkg syscall (linux-386), const SYS_LSEEK = 19 pkg syscall (linux-386), const SYS_LSETXATTR = 227 pkg syscall (linux-386), const SYS_LSTAT = 107 pkg syscall (linux-386), const SYS_LSTAT64 = 196 pkg syscall (linux-386), const SYS_MADVISE = 219 pkg syscall (linux-386), const SYS_MADVISE1 = 219 pkg syscall (linux-386), const SYS_MBIND = 274 pkg syscall (linux-386), const SYS_MIGRATE_PAGES = 294 pkg syscall (linux-386), const SYS_MINCORE = 218 pkg syscall (linux-386), const SYS_MKDIR = 39 pkg syscall (linux-386), const SYS_MKDIRAT = 296 pkg syscall (linux-386), const SYS_MKNOD = 14 pkg syscall (linux-386), const SYS_MKNODAT = 297 pkg syscall (linux-386), const SYS_MLOCK = 150 pkg syscall (linux-386), const SYS_MLOCKALL = 152 pkg syscall (linux-386), const SYS_MMAP = 90 pkg syscall (linux-386), const SYS_MMAP2 = 192 pkg syscall (linux-386), const SYS_MODIFY_LDT = 123 pkg syscall (linux-386), const SYS_MOUNT = 21 pkg syscall (linux-386), const SYS_MOVE_PAGES = 317 pkg syscall (linux-386), const SYS_MPROTECT = 125 pkg syscall (linux-386), const SYS_MPX = 56 pkg syscall (linux-386), const SYS_MQ_GETSETATTR = 282 pkg syscall (linux-386), const SYS_MQ_NOTIFY = 281 pkg syscall (linux-386), const SYS_MQ_OPEN = 277 pkg syscall (linux-386), const SYS_MQ_TIMEDRECEIVE = 280 pkg syscall (linux-386), const SYS_MQ_TIMEDSEND = 279 pkg syscall (linux-386), const SYS_MQ_UNLINK = 278 pkg syscall (linux-386), const SYS_MREMAP = 163 pkg syscall (linux-386), const SYS_MSYNC = 144 pkg syscall (linux-386), const SYS_MUNLOCK = 151 pkg syscall (linux-386), const SYS_MUNLOCKALL = 153 pkg syscall (linux-386), const SYS_MUNMAP = 91 pkg syscall (linux-386), const SYS_NANOSLEEP = 162 pkg syscall (linux-386), const SYS_NFSSERVCTL = 169 pkg syscall (linux-386), const SYS_NICE = 34 pkg syscall (linux-386), const SYS_OLDFSTAT = 28 pkg syscall (linux-386), const SYS_OLDLSTAT = 84 pkg syscall (linux-386), const SYS_OLDOLDUNAME = 59 pkg syscall (linux-386), const SYS_OLDSTAT = 18 pkg syscall (linux-386), const SYS_OLDUNAME = 109 pkg syscall (linux-386), const SYS_OPEN = 5 pkg syscall (linux-386), const SYS_OPENAT = 295 pkg syscall (linux-386), const SYS_PAUSE = 29 pkg syscall (linux-386), const SYS_PERF_EVENT_OPEN = 336 pkg syscall (linux-386), const SYS_PERSONALITY = 136 pkg syscall (linux-386), const SYS_PIPE = 42 pkg syscall (linux-386), const SYS_PIPE2 = 331 pkg syscall (linux-386), const SYS_PIVOT_ROOT = 217 pkg syscall (linux-386), const SYS_POLL = 168 pkg syscall (linux-386), const SYS_PPOLL = 309 pkg syscall (linux-386), const SYS_PRCTL = 172 pkg syscall (linux-386), const SYS_PREAD64 = 180 pkg syscall (linux-386), const SYS_PREADV = 333 pkg syscall (linux-386), const SYS_PRLIMIT64 = 340 pkg syscall (linux-386), const SYS_PROF = 44 pkg syscall (linux-386), const SYS_PROFIL = 98 pkg syscall (linux-386), const SYS_PSELECT6 = 308 pkg syscall (linux-386), const SYS_PTRACE = 26 pkg syscall (linux-386), const SYS_PUTPMSG = 189 pkg syscall (linux-386), const SYS_PWRITE64 = 181 pkg syscall (linux-386), const SYS_PWRITEV = 334 pkg syscall (linux-386), const SYS_QUERY_MODULE = 167 pkg syscall (linux-386), const SYS_QUOTACTL = 131 pkg syscall (linux-386), const SYS_READ = 3 pkg syscall (linux-386), const SYS_READAHEAD = 225 pkg syscall (linux-386), const SYS_READDIR = 89 pkg syscall (linux-386), const SYS_READLINK = 85 pkg syscall (linux-386), const SYS_READLINKAT = 305 pkg syscall (linux-386), const SYS_READV = 145 pkg syscall (linux-386), const SYS_REBOOT = 88 pkg syscall (linux-386), const SYS_RECVMMSG = 337 pkg syscall (linux-386), const SYS_REMAP_FILE_PAGES = 257 pkg syscall (linux-386), const SYS_REMOVEXATTR = 235 pkg syscall (linux-386), const SYS_RENAME = 38 pkg syscall (linux-386), const SYS_RENAMEAT = 302 pkg syscall (linux-386), const SYS_REQUEST_KEY = 287 pkg syscall (linux-386), const SYS_RESTART_SYSCALL = 0 pkg syscall (linux-386), const SYS_RMDIR = 40 pkg syscall (linux-386), const SYS_RT_SIGACTION = 174 pkg syscall (linux-386), const SYS_RT_SIGPENDING = 176 pkg syscall (linux-386), const SYS_RT_SIGPROCMASK = 175 pkg syscall (linux-386), const SYS_RT_SIGQUEUEINFO = 178 pkg syscall (linux-386), const SYS_RT_SIGRETURN = 173 pkg syscall (linux-386), const SYS_RT_SIGSUSPEND = 179 pkg syscall (linux-386), const SYS_RT_SIGTIMEDWAIT = 177 pkg syscall (linux-386), const SYS_RT_TGSIGQUEUEINFO = 335 pkg syscall (linux-386), const SYS_SCHED_GETAFFINITY = 242 pkg syscall (linux-386), const SYS_SCHED_GETPARAM = 155 pkg syscall (linux-386), const SYS_SCHED_GETSCHEDULER = 157 pkg syscall (linux-386), const SYS_SCHED_GET_PRIORITY_MAX = 159 pkg syscall (linux-386), const SYS_SCHED_GET_PRIORITY_MIN = 160 pkg syscall (linux-386), const SYS_SCHED_RR_GET_INTERVAL = 161 pkg syscall (linux-386), const SYS_SCHED_SETAFFINITY = 241 pkg syscall (linux-386), const SYS_SCHED_SETPARAM = 154 pkg syscall (linux-386), const SYS_SCHED_SETSCHEDULER = 156 pkg syscall (linux-386), const SYS_SCHED_YIELD = 158 pkg syscall (linux-386), const SYS_SELECT = 82 pkg syscall (linux-386), const SYS_SENDFILE = 187 pkg syscall (linux-386), const SYS_SENDFILE64 = 239 pkg syscall (linux-386), const SYS_SETDOMAINNAME = 121 pkg syscall (linux-386), const SYS_SETFSGID = 139 pkg syscall (linux-386), const SYS_SETFSGID32 = 216 pkg syscall (linux-386), const SYS_SETFSUID = 138 pkg syscall (linux-386), const SYS_SETFSUID32 = 215 pkg syscall (linux-386), const SYS_SETGID = 46 pkg syscall (linux-386), const SYS_SETGID32 = 214 pkg syscall (linux-386), const SYS_SETGROUPS = 81 pkg syscall (linux-386), const SYS_SETGROUPS32 = 206 pkg syscall (linux-386), const SYS_SETHOSTNAME = 74 pkg syscall (linux-386), const SYS_SETITIMER = 104 pkg syscall (linux-386), const SYS_SETPGID = 57 pkg syscall (linux-386), const SYS_SETPRIORITY = 97 pkg syscall (linux-386), const SYS_SETREGID = 71 pkg syscall (linux-386), const SYS_SETREGID32 = 204 pkg syscall (linux-386), const SYS_SETRESGID = 170 pkg syscall (linux-386), const SYS_SETRESGID32 = 210 pkg syscall (linux-386), const SYS_SETRESUID = 164 pkg syscall (linux-386), const SYS_SETRESUID32 = 208 pkg syscall (linux-386), const SYS_SETREUID = 70 pkg syscall (linux-386), const SYS_SETREUID32 = 203 pkg syscall (linux-386), const SYS_SETRLIMIT = 75 pkg syscall (linux-386), const SYS_SETSID = 66 pkg syscall (linux-386), const SYS_SETTIMEOFDAY = 79 pkg syscall (linux-386), const SYS_SETUID = 23 pkg syscall (linux-386), const SYS_SETUID32 = 213 pkg syscall (linux-386), const SYS_SETXATTR = 226 pkg syscall (linux-386), const SYS_SET_MEMPOLICY = 276 pkg syscall (linux-386), const SYS_SET_ROBUST_LIST = 311 pkg syscall (linux-386), const SYS_SET_THREAD_AREA = 243 pkg syscall (linux-386), const SYS_SET_TID_ADDRESS = 258 pkg syscall (linux-386), const SYS_SGETMASK = 68 pkg syscall (linux-386), const SYS_SIGACTION = 67 pkg syscall (linux-386), const SYS_SIGALTSTACK = 186 pkg syscall (linux-386), const SYS_SIGNAL = 48 pkg syscall (linux-386), const SYS_SIGNALFD = 321 pkg syscall (linux-386), const SYS_SIGNALFD4 = 327 pkg syscall (linux-386), const SYS_SIGPENDING = 73 pkg syscall (linux-386), const SYS_SIGPROCMASK = 126 pkg syscall (linux-386), const SYS_SIGRETURN = 119 pkg syscall (linux-386), const SYS_SIGSUSPEND = 72 pkg syscall (linux-386), const SYS_SOCKETCALL = 102 pkg syscall (linux-386), const SYS_SPLICE = 313 pkg syscall (linux-386), const SYS_SSETMASK = 69 pkg syscall (linux-386), const SYS_STAT = 106 pkg syscall (linux-386), const SYS_STAT64 = 195 pkg syscall (linux-386), const SYS_STATFS = 99 pkg syscall (linux-386), const SYS_STATFS64 = 268 pkg syscall (linux-386), const SYS_STIME = 25 pkg syscall (linux-386), const SYS_STTY = 31 pkg syscall (linux-386), const SYS_SWAPOFF = 115 pkg syscall (linux-386), const SYS_SWAPON = 87 pkg syscall (linux-386), const SYS_SYMLINK = 83 pkg syscall (linux-386), const SYS_SYMLINKAT = 304 pkg syscall (linux-386), const SYS_SYNC = 36 pkg syscall (linux-386), const SYS_SYNC_FILE_RANGE = 314 pkg syscall (linux-386), const SYS_SYSFS = 135 pkg syscall (linux-386), const SYS_SYSINFO = 116 pkg syscall (linux-386), const SYS_SYSLOG = 103 pkg syscall (linux-386), const SYS_TEE = 315 pkg syscall (linux-386), const SYS_TGKILL = 270 pkg syscall (linux-386), const SYS_TIME = 13 pkg syscall (linux-386), const SYS_TIMERFD_CREATE = 322 pkg syscall (linux-386), const SYS_TIMERFD_GETTIME = 326 pkg syscall (linux-386), const SYS_TIMERFD_SETTIME = 325 pkg syscall (linux-386), const SYS_TIMER_CREATE = 259 pkg syscall (linux-386), const SYS_TIMER_DELETE = 263 pkg syscall (linux-386), const SYS_TIMER_GETOVERRUN = 262 pkg syscall (linux-386), const SYS_TIMER_GETTIME = 261 pkg syscall (linux-386), const SYS_TIMER_SETTIME = 260 pkg syscall (linux-386), const SYS_TIMES = 43 pkg syscall (linux-386), const SYS_TKILL = 238 pkg syscall (linux-386), const SYS_TRUNCATE = 92 pkg syscall (linux-386), const SYS_TRUNCATE64 = 193 pkg syscall (linux-386), const SYS_UGETRLIMIT = 191 pkg syscall (linux-386), const SYS_ULIMIT = 58 pkg syscall (linux-386), const SYS_UMASK = 60 pkg syscall (linux-386), const SYS_UMOUNT = 22 pkg syscall (linux-386), const SYS_UMOUNT2 = 52 pkg syscall (linux-386), const SYS_UNAME = 122 pkg syscall (linux-386), const SYS_UNLINK = 10 pkg syscall (linux-386), const SYS_UNLINKAT = 301 pkg syscall (linux-386), const SYS_UNSHARE = 310 pkg syscall (linux-386), const SYS_USELIB = 86 pkg syscall (linux-386), const SYS_USTAT = 62 pkg syscall (linux-386), const SYS_UTIME = 30 pkg syscall (linux-386), const SYS_UTIMENSAT = 320 pkg syscall (linux-386), const SYS_UTIMES = 271 pkg syscall (linux-386), const SYS_VFORK = 190 pkg syscall (linux-386), const SYS_VHANGUP = 111 pkg syscall (linux-386), const SYS_VM86 = 166 pkg syscall (linux-386), const SYS_VM86OLD = 113 pkg syscall (linux-386), const SYS_VMSPLICE = 316 pkg syscall (linux-386), const SYS_VSERVER = 273 pkg syscall (linux-386), const SYS_WAIT4 = 114 pkg syscall (linux-386), const SYS_WAITID = 284 pkg syscall (linux-386), const SYS_WAITPID = 7 pkg syscall (linux-386), const SYS_WRITE = 4 pkg syscall (linux-386), const SYS_WRITEV = 146 pkg syscall (linux-386), const SYS__LLSEEK = 140 pkg syscall (linux-386), const SYS__NEWSELECT = 142 pkg syscall (linux-386), const SYS__SYSCTL = 149 pkg syscall (linux-386), const S_BLKSIZE = 512 pkg syscall (linux-386), const S_IEXEC = 64 pkg syscall (linux-386), const S_IFMT = 61440 pkg syscall (linux-386), const S_IREAD = 256 pkg syscall (linux-386), const S_IRGRP = 32 pkg syscall (linux-386), const S_IROTH = 4 pkg syscall (linux-386), const S_IRWXG = 56 pkg syscall (linux-386), const S_IRWXO = 7 pkg syscall (linux-386), const S_IRWXU = 448 pkg syscall (linux-386), const S_IWGRP = 16 pkg syscall (linux-386), const S_IWOTH = 2 pkg syscall (linux-386), const S_IWRITE = 128 pkg syscall (linux-386), const S_IXGRP = 8 pkg syscall (linux-386), const S_IXOTH = 1 pkg syscall (linux-386), const SizeofCmsghdr = 12 pkg syscall (linux-386), const SizeofIPMreq = 8 pkg syscall (linux-386), const SizeofIPMreqn = 12 pkg syscall (linux-386), const SizeofIPv6Mreq = 20 pkg syscall (linux-386), const SizeofIfAddrmsg = 8 pkg syscall (linux-386), const SizeofIfInfomsg = 16 pkg syscall (linux-386), const SizeofInet4Pktinfo = 12 pkg syscall (linux-386), const SizeofInet6Pktinfo = 20 pkg syscall (linux-386), const SizeofInotifyEvent = 16 pkg syscall (linux-386), const SizeofLinger = 8 pkg syscall (linux-386), const SizeofMsghdr = 28 pkg syscall (linux-386), const SizeofNlAttr = 4 pkg syscall (linux-386), const SizeofNlMsgerr = 20 pkg syscall (linux-386), const SizeofNlMsghdr = 16 pkg syscall (linux-386), const SizeofRtAttr = 4 pkg syscall (linux-386), const SizeofRtGenmsg = 1 pkg syscall (linux-386), const SizeofRtMsg = 12 pkg syscall (linux-386), const SizeofRtNexthop = 8 pkg syscall (linux-386), const SizeofSockFilter = 8 pkg syscall (linux-386), const SizeofSockFprog = 8 pkg syscall (linux-386), const SizeofSockaddrAny = 112 pkg syscall (linux-386), const SizeofSockaddrInet4 = 16 pkg syscall (linux-386), const SizeofSockaddrInet6 = 28 pkg syscall (linux-386), const SizeofSockaddrLinklayer = 20 pkg syscall (linux-386), const SizeofSockaddrNetlink = 12 pkg syscall (linux-386), const SizeofSockaddrUnix = 110 pkg syscall (linux-386), const SizeofTCPInfo = 104 pkg syscall (linux-386), const SizeofTCPInfo ideal-int pkg syscall (linux-386), const SizeofUcred = 12 pkg syscall (linux-386), const TCGETS = 21505 pkg syscall (linux-386), const TCP_CONGESTION = 13 pkg syscall (linux-386), const TCP_CORK = 3 pkg syscall (linux-386), const TCP_DEFER_ACCEPT = 9 pkg syscall (linux-386), const TCP_INFO = 11 pkg syscall (linux-386), const TCP_KEEPCNT = 6 pkg syscall (linux-386), const TCP_KEEPIDLE = 4 pkg syscall (linux-386), const TCP_KEEPINTVL = 5 pkg syscall (linux-386), const TCP_LINGER2 = 8 pkg syscall (linux-386), const TCP_MAXSEG = 2 pkg syscall (linux-386), const TCP_MAXWIN = 65535 pkg syscall (linux-386), const TCP_MAX_WINSHIFT = 14 pkg syscall (linux-386), const TCP_MD5SIG = 14 pkg syscall (linux-386), const TCP_MD5SIG_MAXKEYLEN = 80 pkg syscall (linux-386), const TCP_MSS = 512 pkg syscall (linux-386), const TCP_QUICKACK = 12 pkg syscall (linux-386), const TCP_SYNCNT = 7 pkg syscall (linux-386), const TCP_WINDOW_CLAMP = 10 pkg syscall (linux-386), const TCSETS = 21506 pkg syscall (linux-386), const TIOCCBRK = 21544 pkg syscall (linux-386), const TIOCCONS = 21533 pkg syscall (linux-386), const TIOCEXCL = 21516 pkg syscall (linux-386), const TIOCGDEV = 2147767346 pkg syscall (linux-386), const TIOCGETD = 21540 pkg syscall (linux-386), const TIOCGICOUNT = 21597 pkg syscall (linux-386), const TIOCGLCKTRMIOS = 21590 pkg syscall (linux-386), const TIOCGPGRP = 21519 pkg syscall (linux-386), const TIOCGPTN = 2147767344 pkg syscall (linux-386), const TIOCGRS485 = 21550 pkg syscall (linux-386), const TIOCGSERIAL = 21534 pkg syscall (linux-386), const TIOCGSID = 21545 pkg syscall (linux-386), const TIOCGSOFTCAR = 21529 pkg syscall (linux-386), const TIOCGWINSZ = 21523 pkg syscall (linux-386), const TIOCINQ = 21531 pkg syscall (linux-386), const TIOCLINUX = 21532 pkg syscall (linux-386), const TIOCMBIC = 21527 pkg syscall (linux-386), const TIOCMBIS = 21526 pkg syscall (linux-386), const TIOCMGET = 21525 pkg syscall (linux-386), const TIOCMIWAIT = 21596 pkg syscall (linux-386), const TIOCMSET = 21528 pkg syscall (linux-386), const TIOCM_CAR = 64 pkg syscall (linux-386), const TIOCM_CD = 64 pkg syscall (linux-386), const TIOCM_CTS = 32 pkg syscall (linux-386), const TIOCM_DSR = 256 pkg syscall (linux-386), const TIOCM_DTR = 2 pkg syscall (linux-386), const TIOCM_LE = 1 pkg syscall (linux-386), const TIOCM_RI = 128 pkg syscall (linux-386), const TIOCM_RNG = 128 pkg syscall (linux-386), const TIOCM_RTS = 4 pkg syscall (linux-386), const TIOCM_SR = 16 pkg syscall (linux-386), const TIOCM_ST = 8 pkg syscall (linux-386), const TIOCNOTTY = 21538 pkg syscall (linux-386), const TIOCNXCL = 21517 pkg syscall (linux-386), const TIOCOUTQ = 21521 pkg syscall (linux-386), const TIOCPKT = 21536 pkg syscall (linux-386), const TIOCPKT_DATA = 0 pkg syscall (linux-386), const TIOCPKT_DOSTOP = 32 pkg syscall (linux-386), const TIOCPKT_FLUSHREAD = 1 pkg syscall (linux-386), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (linux-386), const TIOCPKT_IOCTL = 64 pkg syscall (linux-386), const TIOCPKT_NOSTOP = 16 pkg syscall (linux-386), const TIOCPKT_START = 8 pkg syscall (linux-386), const TIOCPKT_STOP = 4 pkg syscall (linux-386), const TIOCSBRK = 21543 pkg syscall (linux-386), const TIOCSCTTY = 21518 pkg syscall (linux-386), const TIOCSERCONFIG = 21587 pkg syscall (linux-386), const TIOCSERGETLSR = 21593 pkg syscall (linux-386), const TIOCSERGETMULTI = 21594 pkg syscall (linux-386), const TIOCSERGSTRUCT = 21592 pkg syscall (linux-386), const TIOCSERGWILD = 21588 pkg syscall (linux-386), const TIOCSERSETMULTI = 21595 pkg syscall (linux-386), const TIOCSERSWILD = 21589 pkg syscall (linux-386), const TIOCSER_TEMT = 1 pkg syscall (linux-386), const TIOCSETD = 21539 pkg syscall (linux-386), const TIOCSIG = 1074025526 pkg syscall (linux-386), const TIOCSLCKTRMIOS = 21591 pkg syscall (linux-386), const TIOCSPGRP = 21520 pkg syscall (linux-386), const TIOCSPTLCK = 1074025521 pkg syscall (linux-386), const TIOCSRS485 = 21551 pkg syscall (linux-386), const TIOCSSERIAL = 21535 pkg syscall (linux-386), const TIOCSSOFTCAR = 21530 pkg syscall (linux-386), const TIOCSTI = 21522 pkg syscall (linux-386), const TIOCSWINSZ = 21524 pkg syscall (linux-386), const TOSTOP = 256 pkg syscall (linux-386), const TUNATTACHFILTER = 1074287829 pkg syscall (linux-386), const TUNDETACHFILTER = 1074287830 pkg syscall (linux-386), const TUNGETFEATURES = 2147767503 pkg syscall (linux-386), const TUNGETIFF = 2147767506 pkg syscall (linux-386), const TUNGETSNDBUF = 2147767507 pkg syscall (linux-386), const TUNGETVNETHDRSZ = 2147767511 pkg syscall (linux-386), const TUNSETDEBUG = 1074025673 pkg syscall (linux-386), const TUNSETGROUP = 1074025678 pkg syscall (linux-386), const TUNSETIFF = 1074025674 pkg syscall (linux-386), const TUNSETLINK = 1074025677 pkg syscall (linux-386), const TUNSETNOCSUM = 1074025672 pkg syscall (linux-386), const TUNSETOFFLOAD = 1074025680 pkg syscall (linux-386), const TUNSETOWNER = 1074025676 pkg syscall (linux-386), const TUNSETPERSIST = 1074025675 pkg syscall (linux-386), const TUNSETSNDBUF = 1074025684 pkg syscall (linux-386), const TUNSETTXFILTER = 1074025681 pkg syscall (linux-386), const TUNSETVNETHDRSZ = 1074025688 pkg syscall (linux-386), const VDISCARD = 13 pkg syscall (linux-386), const VEOF = 4 pkg syscall (linux-386), const VEOL = 11 pkg syscall (linux-386), const VEOL2 = 16 pkg syscall (linux-386), const VERASE = 2 pkg syscall (linux-386), const VINTR = 0 pkg syscall (linux-386), const VKILL = 3 pkg syscall (linux-386), const VLNEXT = 15 pkg syscall (linux-386), const VMIN = 6 pkg syscall (linux-386), const VQUIT = 1 pkg syscall (linux-386), const VREPRINT = 12 pkg syscall (linux-386), const VSTART = 8 pkg syscall (linux-386), const VSTOP = 9 pkg syscall (linux-386), const VSUSP = 10 pkg syscall (linux-386), const VSWTC = 7 pkg syscall (linux-386), const VTIME = 5 pkg syscall (linux-386), const VWERASE = 14 pkg syscall (linux-386), const WALL = 1073741824 pkg syscall (linux-386), const WCLONE = 2147483648 pkg syscall (linux-386), const WCONTINUED = 8 pkg syscall (linux-386), const WEXITED = 4 pkg syscall (linux-386), const WNOHANG = 1 pkg syscall (linux-386), const WNOTHREAD = 536870912 pkg syscall (linux-386), const WNOWAIT = 16777216 pkg syscall (linux-386), const WORDSIZE = 32 pkg syscall (linux-386), const WSTOPPED = 2 pkg syscall (linux-386), const WUNTRACED = 2 pkg syscall (linux-386), const XCASE = 4 pkg syscall (linux-386), func Accept4(int, int) (int, Sockaddr, error) pkg syscall (linux-386), func GetsockoptUcred(int, int, int) (*Ucred, error) pkg syscall (linux-386), func Getxattr(string, string, []uint8) (int, error) pkg syscall (linux-386), func Listxattr(string, []uint8) (int, error) pkg syscall (linux-386), func Pipe2([]int, int) error pkg syscall (linux-386), func PtraceSyscall(int, int) error pkg syscall (linux-386), func Removexattr(string, string) error pkg syscall (linux-386), func Setxattr(string, string, []uint8, int) error pkg syscall (linux-386), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (linux-386), type SysProcAttr struct, Ctty int pkg syscall (linux-386), type TCPInfo struct pkg syscall (linux-386), type TCPInfo struct, Advmss uint32 pkg syscall (linux-386), type TCPInfo struct, Ato uint32 pkg syscall (linux-386), type TCPInfo struct, Backoff uint8 pkg syscall (linux-386), type TCPInfo struct, Ca_state uint8 pkg syscall (linux-386), type TCPInfo struct, Fackets uint32 pkg syscall (linux-386), type TCPInfo struct, Last_ack_recv uint32 pkg syscall (linux-386), type TCPInfo struct, Last_ack_sent uint32 pkg syscall (linux-386), type TCPInfo struct, Last_data_recv uint32 pkg syscall (linux-386), type TCPInfo struct, Last_data_sent uint32 pkg syscall (linux-386), type TCPInfo struct, Lost uint32 pkg syscall (linux-386), type TCPInfo struct, Options uint8 pkg syscall (linux-386), type TCPInfo struct, Pad_cgo_0 [2]uint8 pkg syscall (linux-386), type TCPInfo struct, Pmtu uint32 pkg syscall (linux-386), type TCPInfo struct, Probes uint8 pkg syscall (linux-386), type TCPInfo struct, Rcv_mss uint32 pkg syscall (linux-386), type TCPInfo struct, Rcv_rtt uint32 pkg syscall (linux-386), type TCPInfo struct, Rcv_space uint32 pkg syscall (linux-386), type TCPInfo struct, Rcv_ssthresh uint32 pkg syscall (linux-386), type TCPInfo struct, Reordering uint32 pkg syscall (linux-386), type TCPInfo struct, Retrans uint32 pkg syscall (linux-386), type TCPInfo struct, Retransmits uint8 pkg syscall (linux-386), type TCPInfo struct, Rto uint32 pkg syscall (linux-386), type TCPInfo struct, Rtt uint32 pkg syscall (linux-386), type TCPInfo struct, Rttvar uint32 pkg syscall (linux-386), type TCPInfo struct, Sacked uint32 pkg syscall (linux-386), type TCPInfo struct, Snd_cwnd uint32 pkg syscall (linux-386), type TCPInfo struct, Snd_mss uint32 pkg syscall (linux-386), type TCPInfo struct, Snd_ssthresh uint32 pkg syscall (linux-386), type TCPInfo struct, State uint8 pkg syscall (linux-386), type TCPInfo struct, Total_retrans uint32 pkg syscall (linux-386), type TCPInfo struct, Unacked uint32 pkg syscall (linux-386-cgo), const AF_ALG = 38 pkg syscall (linux-386-cgo), const AF_APPLETALK = 5 pkg syscall (linux-386-cgo), const AF_ASH = 18 pkg syscall (linux-386-cgo), const AF_ATMPVC = 8 pkg syscall (linux-386-cgo), const AF_ATMSVC = 20 pkg syscall (linux-386-cgo), const AF_AX25 = 3 pkg syscall (linux-386-cgo), const AF_BLUETOOTH = 31 pkg syscall (linux-386-cgo), const AF_BRIDGE = 7 pkg syscall (linux-386-cgo), const AF_CAIF = 37 pkg syscall (linux-386-cgo), const AF_CAN = 29 pkg syscall (linux-386-cgo), const AF_DECnet = 12 pkg syscall (linux-386-cgo), const AF_ECONET = 19 pkg syscall (linux-386-cgo), const AF_FILE = 1 pkg syscall (linux-386-cgo), const AF_IEEE802154 = 36 pkg syscall (linux-386-cgo), const AF_INET6 = 10 pkg syscall (linux-386-cgo), const AF_IPX = 4 pkg syscall (linux-386-cgo), const AF_IRDA = 23 pkg syscall (linux-386-cgo), const AF_ISDN = 34 pkg syscall (linux-386-cgo), const AF_IUCV = 32 pkg syscall (linux-386-cgo), const AF_KEY = 15 pkg syscall (linux-386-cgo), const AF_LLC = 26 pkg syscall (linux-386-cgo), const AF_LOCAL = 1 pkg syscall (linux-386-cgo), const AF_MAX = 39 pkg syscall (linux-386-cgo), const AF_NETBEUI = 13 pkg syscall (linux-386-cgo), const AF_NETLINK = 16 pkg syscall (linux-386-cgo), const AF_NETROM = 6 pkg syscall (linux-386-cgo), const AF_PACKET = 17 pkg syscall (linux-386-cgo), const AF_PHONET = 35 pkg syscall (linux-386-cgo), const AF_PPPOX = 24 pkg syscall (linux-386-cgo), const AF_RDS = 21 pkg syscall (linux-386-cgo), const AF_ROSE = 11 pkg syscall (linux-386-cgo), const AF_ROUTE = 16 pkg syscall (linux-386-cgo), const AF_RXRPC = 33 pkg syscall (linux-386-cgo), const AF_SECURITY = 14 pkg syscall (linux-386-cgo), const AF_SNA = 22 pkg syscall (linux-386-cgo), const AF_TIPC = 30 pkg syscall (linux-386-cgo), const AF_WANPIPE = 25 pkg syscall (linux-386-cgo), const AF_X25 = 9 pkg syscall (linux-386-cgo), const ARPHRD_ADAPT = 264 pkg syscall (linux-386-cgo), const ARPHRD_APPLETLK = 8 pkg syscall (linux-386-cgo), const ARPHRD_ARCNET = 7 pkg syscall (linux-386-cgo), const ARPHRD_ASH = 781 pkg syscall (linux-386-cgo), const ARPHRD_ATM = 19 pkg syscall (linux-386-cgo), const ARPHRD_AX25 = 3 pkg syscall (linux-386-cgo), const ARPHRD_BIF = 775 pkg syscall (linux-386-cgo), const ARPHRD_CHAOS = 5 pkg syscall (linux-386-cgo), const ARPHRD_CISCO = 513 pkg syscall (linux-386-cgo), const ARPHRD_CSLIP = 257 pkg syscall (linux-386-cgo), const ARPHRD_CSLIP6 = 259 pkg syscall (linux-386-cgo), const ARPHRD_DDCMP = 517 pkg syscall (linux-386-cgo), const ARPHRD_DLCI = 15 pkg syscall (linux-386-cgo), const ARPHRD_ECONET = 782 pkg syscall (linux-386-cgo), const ARPHRD_EETHER = 2 pkg syscall (linux-386-cgo), const ARPHRD_ETHER = 1 pkg syscall (linux-386-cgo), const ARPHRD_EUI64 = 27 pkg syscall (linux-386-cgo), const ARPHRD_FCAL = 785 pkg syscall (linux-386-cgo), const ARPHRD_FCFABRIC = 787 pkg syscall (linux-386-cgo), const ARPHRD_FCPL = 786 pkg syscall (linux-386-cgo), const ARPHRD_FCPP = 784 pkg syscall (linux-386-cgo), const ARPHRD_FDDI = 774 pkg syscall (linux-386-cgo), const ARPHRD_FRAD = 770 pkg syscall (linux-386-cgo), const ARPHRD_HDLC = 513 pkg syscall (linux-386-cgo), const ARPHRD_HIPPI = 780 pkg syscall (linux-386-cgo), const ARPHRD_HWX25 = 272 pkg syscall (linux-386-cgo), const ARPHRD_IEEE1394 = 24 pkg syscall (linux-386-cgo), const ARPHRD_IEEE802 = 6 pkg syscall (linux-386-cgo), const ARPHRD_IEEE80211 = 801 pkg syscall (linux-386-cgo), const ARPHRD_IEEE80211_PRISM = 802 pkg syscall (linux-386-cgo), const ARPHRD_IEEE80211_RADIOTAP = 803 pkg syscall (linux-386-cgo), const ARPHRD_IEEE802154 = 804 pkg syscall (linux-386-cgo), const ARPHRD_IEEE802154_PHY = 805 pkg syscall (linux-386-cgo), const ARPHRD_IEEE802_TR = 800 pkg syscall (linux-386-cgo), const ARPHRD_INFINIBAND = 32 pkg syscall (linux-386-cgo), const ARPHRD_IPDDP = 777 pkg syscall (linux-386-cgo), const ARPHRD_IPGRE = 778 pkg syscall (linux-386-cgo), const ARPHRD_IRDA = 783 pkg syscall (linux-386-cgo), const ARPHRD_LAPB = 516 pkg syscall (linux-386-cgo), const ARPHRD_LOCALTLK = 773 pkg syscall (linux-386-cgo), const ARPHRD_LOOPBACK = 772 pkg syscall (linux-386-cgo), const ARPHRD_METRICOM = 23 pkg syscall (linux-386-cgo), const ARPHRD_NETROM = 0 pkg syscall (linux-386-cgo), const ARPHRD_NONE = 65534 pkg syscall (linux-386-cgo), const ARPHRD_PIMREG = 779 pkg syscall (linux-386-cgo), const ARPHRD_PPP = 512 pkg syscall (linux-386-cgo), const ARPHRD_PRONET = 4 pkg syscall (linux-386-cgo), const ARPHRD_RAWHDLC = 518 pkg syscall (linux-386-cgo), const ARPHRD_ROSE = 270 pkg syscall (linux-386-cgo), const ARPHRD_RSRVD = 260 pkg syscall (linux-386-cgo), const ARPHRD_SIT = 776 pkg syscall (linux-386-cgo), const ARPHRD_SKIP = 771 pkg syscall (linux-386-cgo), const ARPHRD_SLIP = 256 pkg syscall (linux-386-cgo), const ARPHRD_SLIP6 = 258 pkg syscall (linux-386-cgo), const ARPHRD_TUNNEL = 768 pkg syscall (linux-386-cgo), const ARPHRD_TUNNEL6 = 769 pkg syscall (linux-386-cgo), const ARPHRD_VOID = 65535 pkg syscall (linux-386-cgo), const ARPHRD_X25 = 271 pkg syscall (linux-386-cgo), const B0 = 0 pkg syscall (linux-386-cgo), const B1000000 = 4104 pkg syscall (linux-386-cgo), const B110 = 3 pkg syscall (linux-386-cgo), const B115200 = 4098 pkg syscall (linux-386-cgo), const B1152000 = 4105 pkg syscall (linux-386-cgo), const B1200 = 9 pkg syscall (linux-386-cgo), const B134 = 4 pkg syscall (linux-386-cgo), const B150 = 5 pkg syscall (linux-386-cgo), const B1500000 = 4106 pkg syscall (linux-386-cgo), const B1800 = 10 pkg syscall (linux-386-cgo), const B19200 = 14 pkg syscall (linux-386-cgo), const B200 = 6 pkg syscall (linux-386-cgo), const B2000000 = 4107 pkg syscall (linux-386-cgo), const B230400 = 4099 pkg syscall (linux-386-cgo), const B2400 = 11 pkg syscall (linux-386-cgo), const B2500000 = 4108 pkg syscall (linux-386-cgo), const B300 = 7 pkg syscall (linux-386-cgo), const B3000000 = 4109 pkg syscall (linux-386-cgo), const B3500000 = 4110 pkg syscall (linux-386-cgo), const B38400 = 15 pkg syscall (linux-386-cgo), const B4000000 = 4111 pkg syscall (linux-386-cgo), const B460800 = 4100 pkg syscall (linux-386-cgo), const B4800 = 12 pkg syscall (linux-386-cgo), const B50 = 1 pkg syscall (linux-386-cgo), const B500000 = 4101 pkg syscall (linux-386-cgo), const B57600 = 4097 pkg syscall (linux-386-cgo), const B576000 = 4102 pkg syscall (linux-386-cgo), const B600 = 8 pkg syscall (linux-386-cgo), const B75 = 2 pkg syscall (linux-386-cgo), const B921600 = 4103 pkg syscall (linux-386-cgo), const B9600 = 13 pkg syscall (linux-386-cgo), const BPF_A = 16 pkg syscall (linux-386-cgo), const BPF_ABS = 32 pkg syscall (linux-386-cgo), const BPF_ADD = 0 pkg syscall (linux-386-cgo), const BPF_ALU = 4 pkg syscall (linux-386-cgo), const BPF_AND = 80 pkg syscall (linux-386-cgo), const BPF_B = 16 pkg syscall (linux-386-cgo), const BPF_DIV = 48 pkg syscall (linux-386-cgo), const BPF_H = 8 pkg syscall (linux-386-cgo), const BPF_IMM = 0 pkg syscall (linux-386-cgo), const BPF_IND = 64 pkg syscall (linux-386-cgo), const BPF_JA = 0 pkg syscall (linux-386-cgo), const BPF_JEQ = 16 pkg syscall (linux-386-cgo), const BPF_JGE = 48 pkg syscall (linux-386-cgo), const BPF_JGT = 32 pkg syscall (linux-386-cgo), const BPF_JMP = 5 pkg syscall (linux-386-cgo), const BPF_JSET = 64 pkg syscall (linux-386-cgo), const BPF_K = 0 pkg syscall (linux-386-cgo), const BPF_LD = 0 pkg syscall (linux-386-cgo), const BPF_LDX = 1 pkg syscall (linux-386-cgo), const BPF_LEN = 128 pkg syscall (linux-386-cgo), const BPF_LSH = 96 pkg syscall (linux-386-cgo), const BPF_MAJOR_VERSION = 1 pkg syscall (linux-386-cgo), const BPF_MAXINSNS = 4096 pkg syscall (linux-386-cgo), const BPF_MEM = 96 pkg syscall (linux-386-cgo), const BPF_MEMWORDS = 16 pkg syscall (linux-386-cgo), const BPF_MINOR_VERSION = 1 pkg syscall (linux-386-cgo), const BPF_MISC = 7 pkg syscall (linux-386-cgo), const BPF_MSH = 160 pkg syscall (linux-386-cgo), const BPF_MUL = 32 pkg syscall (linux-386-cgo), const BPF_NEG = 128 pkg syscall (linux-386-cgo), const BPF_OR = 64 pkg syscall (linux-386-cgo), const BPF_RET = 6 pkg syscall (linux-386-cgo), const BPF_RSH = 112 pkg syscall (linux-386-cgo), const BPF_ST = 2 pkg syscall (linux-386-cgo), const BPF_STX = 3 pkg syscall (linux-386-cgo), const BPF_SUB = 16 pkg syscall (linux-386-cgo), const BPF_TAX = 0 pkg syscall (linux-386-cgo), const BPF_TXA = 128 pkg syscall (linux-386-cgo), const BPF_W = 0 pkg syscall (linux-386-cgo), const BPF_X = 8 pkg syscall (linux-386-cgo), const BRKINT = 2 pkg syscall (linux-386-cgo), const CLOCAL = 2048 pkg syscall (linux-386-cgo), const CREAD = 128 pkg syscall (linux-386-cgo), const CS5 = 0 pkg syscall (linux-386-cgo), const CS6 = 16 pkg syscall (linux-386-cgo), const CS7 = 32 pkg syscall (linux-386-cgo), const CS8 = 48 pkg syscall (linux-386-cgo), const CSIZE = 48 pkg syscall (linux-386-cgo), const CSTOPB = 64 pkg syscall (linux-386-cgo), const DT_BLK = 6 pkg syscall (linux-386-cgo), const DT_CHR = 2 pkg syscall (linux-386-cgo), const DT_DIR = 4 pkg syscall (linux-386-cgo), const DT_FIFO = 1 pkg syscall (linux-386-cgo), const DT_LNK = 10 pkg syscall (linux-386-cgo), const DT_REG = 8 pkg syscall (linux-386-cgo), const DT_SOCK = 12 pkg syscall (linux-386-cgo), const DT_UNKNOWN = 0 pkg syscall (linux-386-cgo), const DT_WHT = 14 pkg syscall (linux-386-cgo), const E2BIG = 7 pkg syscall (linux-386-cgo), const EACCES = 13 pkg syscall (linux-386-cgo), const EADDRINUSE = 98 pkg syscall (linux-386-cgo), const EADDRNOTAVAIL = 99 pkg syscall (linux-386-cgo), const EADV = 68 pkg syscall (linux-386-cgo), const EAFNOSUPPORT = 97 pkg syscall (linux-386-cgo), const EAGAIN = 11 pkg syscall (linux-386-cgo), const EALREADY = 114 pkg syscall (linux-386-cgo), const EBADE = 52 pkg syscall (linux-386-cgo), const EBADF = 9 pkg syscall (linux-386-cgo), const EBADFD = 77 pkg syscall (linux-386-cgo), const EBADMSG = 74 pkg syscall (linux-386-cgo), const EBADR = 53 pkg syscall (linux-386-cgo), const EBADRQC = 56 pkg syscall (linux-386-cgo), const EBADSLT = 57 pkg syscall (linux-386-cgo), const EBFONT = 59 pkg syscall (linux-386-cgo), const EBUSY = 16 pkg syscall (linux-386-cgo), const ECANCELED = 125 pkg syscall (linux-386-cgo), const ECHILD = 10 pkg syscall (linux-386-cgo), const ECHO = 8 pkg syscall (linux-386-cgo), const ECHOCTL = 512 pkg syscall (linux-386-cgo), const ECHOE = 16 pkg syscall (linux-386-cgo), const ECHOK = 32 pkg syscall (linux-386-cgo), const ECHOKE = 2048 pkg syscall (linux-386-cgo), const ECHONL = 64 pkg syscall (linux-386-cgo), const ECHOPRT = 1024 pkg syscall (linux-386-cgo), const ECHRNG = 44 pkg syscall (linux-386-cgo), const ECOMM = 70 pkg syscall (linux-386-cgo), const ECONNABORTED = 103 pkg syscall (linux-386-cgo), const ECONNREFUSED = 111 pkg syscall (linux-386-cgo), const ECONNRESET = 104 pkg syscall (linux-386-cgo), const EDEADLK = 35 pkg syscall (linux-386-cgo), const EDEADLOCK = 35 pkg syscall (linux-386-cgo), const EDESTADDRREQ = 89 pkg syscall (linux-386-cgo), const EDOM = 33 pkg syscall (linux-386-cgo), const EDOTDOT = 73 pkg syscall (linux-386-cgo), const EDQUOT = 122 pkg syscall (linux-386-cgo), const EEXIST = 17 pkg syscall (linux-386-cgo), const EFAULT = 14 pkg syscall (linux-386-cgo), const EFBIG = 27 pkg syscall (linux-386-cgo), const EHOSTDOWN = 112 pkg syscall (linux-386-cgo), const EHOSTUNREACH = 113 pkg syscall (linux-386-cgo), const EIDRM = 43 pkg syscall (linux-386-cgo), const EILSEQ = 84 pkg syscall (linux-386-cgo), const EINPROGRESS = 115 pkg syscall (linux-386-cgo), const EINTR = 4 pkg syscall (linux-386-cgo), const EINVAL = 22 pkg syscall (linux-386-cgo), const EIO = 5 pkg syscall (linux-386-cgo), const EISCONN = 106 pkg syscall (linux-386-cgo), const EISDIR = 21 pkg syscall (linux-386-cgo), const EISNAM = 120 pkg syscall (linux-386-cgo), const EKEYEXPIRED = 127 pkg syscall (linux-386-cgo), const EKEYREJECTED = 129 pkg syscall (linux-386-cgo), const EKEYREVOKED = 128 pkg syscall (linux-386-cgo), const EL2HLT = 51 pkg syscall (linux-386-cgo), const EL2NSYNC = 45 pkg syscall (linux-386-cgo), const EL3HLT = 46 pkg syscall (linux-386-cgo), const EL3RST = 47 pkg syscall (linux-386-cgo), const ELIBACC = 79 pkg syscall (linux-386-cgo), const ELIBBAD = 80 pkg syscall (linux-386-cgo), const ELIBEXEC = 83 pkg syscall (linux-386-cgo), const ELIBMAX = 82 pkg syscall (linux-386-cgo), const ELIBSCN = 81 pkg syscall (linux-386-cgo), const ELNRNG = 48 pkg syscall (linux-386-cgo), const ELOOP = 40 pkg syscall (linux-386-cgo), const EMEDIUMTYPE = 124 pkg syscall (linux-386-cgo), const EMFILE = 24 pkg syscall (linux-386-cgo), const EMLINK = 31 pkg syscall (linux-386-cgo), const EMSGSIZE = 90 pkg syscall (linux-386-cgo), const EMULTIHOP = 72 pkg syscall (linux-386-cgo), const ENAMETOOLONG = 36 pkg syscall (linux-386-cgo), const ENAVAIL = 119 pkg syscall (linux-386-cgo), const ENETDOWN = 100 pkg syscall (linux-386-cgo), const ENETRESET = 102 pkg syscall (linux-386-cgo), const ENETUNREACH = 101 pkg syscall (linux-386-cgo), const ENFILE = 23 pkg syscall (linux-386-cgo), const ENOANO = 55 pkg syscall (linux-386-cgo), const ENOBUFS = 105 pkg syscall (linux-386-cgo), const ENOCSI = 50 pkg syscall (linux-386-cgo), const ENODATA = 61 pkg syscall (linux-386-cgo), const ENODEV = 19 pkg syscall (linux-386-cgo), const ENOEXEC = 8 pkg syscall (linux-386-cgo), const ENOKEY = 126 pkg syscall (linux-386-cgo), const ENOLCK = 37 pkg syscall (linux-386-cgo), const ENOLINK = 67 pkg syscall (linux-386-cgo), const ENOMEDIUM = 123 pkg syscall (linux-386-cgo), const ENOMEM = 12 pkg syscall (linux-386-cgo), const ENOMSG = 42 pkg syscall (linux-386-cgo), const ENONET = 64 pkg syscall (linux-386-cgo), const ENOPKG = 65 pkg syscall (linux-386-cgo), const ENOPROTOOPT = 92 pkg syscall (linux-386-cgo), const ENOSPC = 28 pkg syscall (linux-386-cgo), const ENOSR = 63 pkg syscall (linux-386-cgo), const ENOSTR = 60 pkg syscall (linux-386-cgo), const ENOSYS = 38 pkg syscall (linux-386-cgo), const ENOTBLK = 15 pkg syscall (linux-386-cgo), const ENOTCONN = 107 pkg syscall (linux-386-cgo), const ENOTDIR = 20 pkg syscall (linux-386-cgo), const ENOTEMPTY = 39 pkg syscall (linux-386-cgo), const ENOTNAM = 118 pkg syscall (linux-386-cgo), const ENOTRECOVERABLE = 131 pkg syscall (linux-386-cgo), const ENOTSOCK = 88 pkg syscall (linux-386-cgo), const ENOTSUP = 95 pkg syscall (linux-386-cgo), const ENOTTY = 25 pkg syscall (linux-386-cgo), const ENOTUNIQ = 76 pkg syscall (linux-386-cgo), const ENXIO = 6 pkg syscall (linux-386-cgo), const EOPNOTSUPP = 95 pkg syscall (linux-386-cgo), const EOVERFLOW = 75 pkg syscall (linux-386-cgo), const EOWNERDEAD = 130 pkg syscall (linux-386-cgo), const EPERM = 1 pkg syscall (linux-386-cgo), const EPFNOSUPPORT = 96 pkg syscall (linux-386-cgo), const EPIPE = 32 pkg syscall (linux-386-cgo), const EPOLLERR = 8 pkg syscall (linux-386-cgo), const EPOLLET = -2147483648 pkg syscall (linux-386-cgo), const EPOLLHUP = 16 pkg syscall (linux-386-cgo), const EPOLLIN = 1 pkg syscall (linux-386-cgo), const EPOLLMSG = 1024 pkg syscall (linux-386-cgo), const EPOLLONESHOT = 1073741824 pkg syscall (linux-386-cgo), const EPOLLOUT = 4 pkg syscall (linux-386-cgo), const EPOLLPRI = 2 pkg syscall (linux-386-cgo), const EPOLLRDBAND = 128 pkg syscall (linux-386-cgo), const EPOLLRDHUP = 8192 pkg syscall (linux-386-cgo), const EPOLLRDNORM = 64 pkg syscall (linux-386-cgo), const EPOLLWRBAND = 512 pkg syscall (linux-386-cgo), const EPOLLWRNORM = 256 pkg syscall (linux-386-cgo), const EPOLL_CLOEXEC = 524288 pkg syscall (linux-386-cgo), const EPOLL_CTL_ADD = 1 pkg syscall (linux-386-cgo), const EPOLL_CTL_DEL = 2 pkg syscall (linux-386-cgo), const EPOLL_CTL_MOD = 3 pkg syscall (linux-386-cgo), const EPOLL_NONBLOCK = 2048 pkg syscall (linux-386-cgo), const EPROTO = 71 pkg syscall (linux-386-cgo), const EPROTONOSUPPORT = 93 pkg syscall (linux-386-cgo), const EPROTOTYPE = 91 pkg syscall (linux-386-cgo), const ERANGE = 34 pkg syscall (linux-386-cgo), const EREMCHG = 78 pkg syscall (linux-386-cgo), const EREMOTE = 66 pkg syscall (linux-386-cgo), const EREMOTEIO = 121 pkg syscall (linux-386-cgo), const ERESTART = 85 pkg syscall (linux-386-cgo), const ERFKILL = 132 pkg syscall (linux-386-cgo), const EROFS = 30 pkg syscall (linux-386-cgo), const ESHUTDOWN = 108 pkg syscall (linux-386-cgo), const ESOCKTNOSUPPORT = 94 pkg syscall (linux-386-cgo), const ESPIPE = 29 pkg syscall (linux-386-cgo), const ESRCH = 3 pkg syscall (linux-386-cgo), const ESRMNT = 69 pkg syscall (linux-386-cgo), const ESTALE = 116 pkg syscall (linux-386-cgo), const ESTRPIPE = 86 pkg syscall (linux-386-cgo), const ETH_P_1588 = 35063 pkg syscall (linux-386-cgo), const ETH_P_8021Q = 33024 pkg syscall (linux-386-cgo), const ETH_P_802_2 = 4 pkg syscall (linux-386-cgo), const ETH_P_802_3 = 1 pkg syscall (linux-386-cgo), const ETH_P_AARP = 33011 pkg syscall (linux-386-cgo), const ETH_P_ALL = 3 pkg syscall (linux-386-cgo), const ETH_P_AOE = 34978 pkg syscall (linux-386-cgo), const ETH_P_ARCNET = 26 pkg syscall (linux-386-cgo), const ETH_P_ARP = 2054 pkg syscall (linux-386-cgo), const ETH_P_ATALK = 32923 pkg syscall (linux-386-cgo), const ETH_P_ATMFATE = 34948 pkg syscall (linux-386-cgo), const ETH_P_ATMMPOA = 34892 pkg syscall (linux-386-cgo), const ETH_P_AX25 = 2 pkg syscall (linux-386-cgo), const ETH_P_BPQ = 2303 pkg syscall (linux-386-cgo), const ETH_P_CAIF = 247 pkg syscall (linux-386-cgo), const ETH_P_CAN = 12 pkg syscall (linux-386-cgo), const ETH_P_CONTROL = 22 pkg syscall (linux-386-cgo), const ETH_P_CUST = 24582 pkg syscall (linux-386-cgo), const ETH_P_DDCMP = 6 pkg syscall (linux-386-cgo), const ETH_P_DEC = 24576 pkg syscall (linux-386-cgo), const ETH_P_DIAG = 24581 pkg syscall (linux-386-cgo), const ETH_P_DNA_DL = 24577 pkg syscall (linux-386-cgo), const ETH_P_DNA_RC = 24578 pkg syscall (linux-386-cgo), const ETH_P_DNA_RT = 24579 pkg syscall (linux-386-cgo), const ETH_P_DSA = 27 pkg syscall (linux-386-cgo), const ETH_P_ECONET = 24 pkg syscall (linux-386-cgo), const ETH_P_EDSA = 56026 pkg syscall (linux-386-cgo), const ETH_P_FCOE = 35078 pkg syscall (linux-386-cgo), const ETH_P_FIP = 35092 pkg syscall (linux-386-cgo), const ETH_P_HDLC = 25 pkg syscall (linux-386-cgo), const ETH_P_IEEE802154 = 246 pkg syscall (linux-386-cgo), const ETH_P_IEEEPUP = 2560 pkg syscall (linux-386-cgo), const ETH_P_IEEEPUPAT = 2561 pkg syscall (linux-386-cgo), const ETH_P_IP = 2048 pkg syscall (linux-386-cgo), const ETH_P_IPV6 = 34525 pkg syscall (linux-386-cgo), const ETH_P_IPX = 33079 pkg syscall (linux-386-cgo), const ETH_P_IRDA = 23 pkg syscall (linux-386-cgo), const ETH_P_LAT = 24580 pkg syscall (linux-386-cgo), const ETH_P_LINK_CTL = 34924 pkg syscall (linux-386-cgo), const ETH_P_LOCALTALK = 9 pkg syscall (linux-386-cgo), const ETH_P_LOOP = 96 pkg syscall (linux-386-cgo), const ETH_P_MOBITEX = 21 pkg syscall (linux-386-cgo), const ETH_P_MPLS_MC = 34888 pkg syscall (linux-386-cgo), const ETH_P_MPLS_UC = 34887 pkg syscall (linux-386-cgo), const ETH_P_PAE = 34958 pkg syscall (linux-386-cgo), const ETH_P_PAUSE = 34824 pkg syscall (linux-386-cgo), const ETH_P_PHONET = 245 pkg syscall (linux-386-cgo), const ETH_P_PPPTALK = 16 pkg syscall (linux-386-cgo), const ETH_P_PPP_DISC = 34915 pkg syscall (linux-386-cgo), const ETH_P_PPP_MP = 8 pkg syscall (linux-386-cgo), const ETH_P_PPP_SES = 34916 pkg syscall (linux-386-cgo), const ETH_P_PUP = 512 pkg syscall (linux-386-cgo), const ETH_P_PUPAT = 513 pkg syscall (linux-386-cgo), const ETH_P_RARP = 32821 pkg syscall (linux-386-cgo), const ETH_P_SCA = 24583 pkg syscall (linux-386-cgo), const ETH_P_SLOW = 34825 pkg syscall (linux-386-cgo), const ETH_P_SNAP = 5 pkg syscall (linux-386-cgo), const ETH_P_TEB = 25944 pkg syscall (linux-386-cgo), const ETH_P_TIPC = 35018 pkg syscall (linux-386-cgo), const ETH_P_TRAILER = 28 pkg syscall (linux-386-cgo), const ETH_P_TR_802_2 = 17 pkg syscall (linux-386-cgo), const ETH_P_WAN_PPP = 7 pkg syscall (linux-386-cgo), const ETH_P_WCCP = 34878 pkg syscall (linux-386-cgo), const ETH_P_X25 = 2053 pkg syscall (linux-386-cgo), const ETIME = 62 pkg syscall (linux-386-cgo), const ETIMEDOUT = 110 pkg syscall (linux-386-cgo), const ETOOMANYREFS = 109 pkg syscall (linux-386-cgo), const ETXTBSY = 26 pkg syscall (linux-386-cgo), const EUCLEAN = 117 pkg syscall (linux-386-cgo), const EUNATCH = 49 pkg syscall (linux-386-cgo), const EUSERS = 87 pkg syscall (linux-386-cgo), const EWOULDBLOCK = 11 pkg syscall (linux-386-cgo), const EXDEV = 18 pkg syscall (linux-386-cgo), const EXFULL = 54 pkg syscall (linux-386-cgo), const FD_CLOEXEC = 1 pkg syscall (linux-386-cgo), const FD_SETSIZE = 1024 pkg syscall (linux-386-cgo), const FLUSHO = 4096 pkg syscall (linux-386-cgo), const F_DUPFD = 0 pkg syscall (linux-386-cgo), const F_DUPFD_CLOEXEC = 1030 pkg syscall (linux-386-cgo), const F_EXLCK = 4 pkg syscall (linux-386-cgo), const F_GETFD = 1 pkg syscall (linux-386-cgo), const F_GETFL = 3 pkg syscall (linux-386-cgo), const F_GETLEASE = 1025 pkg syscall (linux-386-cgo), const F_GETLK = 12 pkg syscall (linux-386-cgo), const F_GETLK64 = 12 pkg syscall (linux-386-cgo), const F_GETOWN = 9 pkg syscall (linux-386-cgo), const F_GETOWN_EX = 16 pkg syscall (linux-386-cgo), const F_GETPIPE_SZ = 1032 pkg syscall (linux-386-cgo), const F_GETSIG = 11 pkg syscall (linux-386-cgo), const F_LOCK = 1 pkg syscall (linux-386-cgo), const F_NOTIFY = 1026 pkg syscall (linux-386-cgo), const F_OK = 0 pkg syscall (linux-386-cgo), const F_RDLCK = 0 pkg syscall (linux-386-cgo), const F_SETFD = 2 pkg syscall (linux-386-cgo), const F_SETFL = 4 pkg syscall (linux-386-cgo), const F_SETLEASE = 1024 pkg syscall (linux-386-cgo), const F_SETLK = 13 pkg syscall (linux-386-cgo), const F_SETLK64 = 13 pkg syscall (linux-386-cgo), const F_SETLKW = 14 pkg syscall (linux-386-cgo), const F_SETLKW64 = 14 pkg syscall (linux-386-cgo), const F_SETOWN = 8 pkg syscall (linux-386-cgo), const F_SETOWN_EX = 15 pkg syscall (linux-386-cgo), const F_SETPIPE_SZ = 1031 pkg syscall (linux-386-cgo), const F_SETSIG = 10 pkg syscall (linux-386-cgo), const F_SHLCK = 8 pkg syscall (linux-386-cgo), const F_TEST = 3 pkg syscall (linux-386-cgo), const F_TLOCK = 2 pkg syscall (linux-386-cgo), const F_ULOCK = 0 pkg syscall (linux-386-cgo), const F_UNLCK = 2 pkg syscall (linux-386-cgo), const F_WRLCK = 1 pkg syscall (linux-386-cgo), const HUPCL = 1024 pkg syscall (linux-386-cgo), const ICANON = 2 pkg syscall (linux-386-cgo), const ICRNL = 256 pkg syscall (linux-386-cgo), const IEXTEN = 32768 pkg syscall (linux-386-cgo), const IFA_ADDRESS = 1 pkg syscall (linux-386-cgo), const IFA_ANYCAST = 5 pkg syscall (linux-386-cgo), const IFA_BROADCAST = 4 pkg syscall (linux-386-cgo), const IFA_CACHEINFO = 6 pkg syscall (linux-386-cgo), const IFA_F_DADFAILED = 8 pkg syscall (linux-386-cgo), const IFA_F_DEPRECATED = 32 pkg syscall (linux-386-cgo), const IFA_F_HOMEADDRESS = 16 pkg syscall (linux-386-cgo), const IFA_F_NODAD = 2 pkg syscall (linux-386-cgo), const IFA_F_OPTIMISTIC = 4 pkg syscall (linux-386-cgo), const IFA_F_PERMANENT = 128 pkg syscall (linux-386-cgo), const IFA_F_SECONDARY = 1 pkg syscall (linux-386-cgo), const IFA_F_TEMPORARY = 1 pkg syscall (linux-386-cgo), const IFA_F_TENTATIVE = 64 pkg syscall (linux-386-cgo), const IFA_LABEL = 3 pkg syscall (linux-386-cgo), const IFA_LOCAL = 2 pkg syscall (linux-386-cgo), const IFA_MAX = 7 pkg syscall (linux-386-cgo), const IFA_MULTICAST = 7 pkg syscall (linux-386-cgo), const IFA_UNSPEC = 0 pkg syscall (linux-386-cgo), const IFF_ALLMULTI = 512 pkg syscall (linux-386-cgo), const IFF_AUTOMEDIA = 16384 pkg syscall (linux-386-cgo), const IFF_DEBUG = 4 pkg syscall (linux-386-cgo), const IFF_DYNAMIC = 32768 pkg syscall (linux-386-cgo), const IFF_LOOPBACK = 8 pkg syscall (linux-386-cgo), const IFF_MASTER = 1024 pkg syscall (linux-386-cgo), const IFF_MULTICAST = 4096 pkg syscall (linux-386-cgo), const IFF_NOARP = 128 pkg syscall (linux-386-cgo), const IFF_NOTRAILERS = 32 pkg syscall (linux-386-cgo), const IFF_NO_PI = 4096 pkg syscall (linux-386-cgo), const IFF_ONE_QUEUE = 8192 pkg syscall (linux-386-cgo), const IFF_POINTOPOINT = 16 pkg syscall (linux-386-cgo), const IFF_PORTSEL = 8192 pkg syscall (linux-386-cgo), const IFF_PROMISC = 256 pkg syscall (linux-386-cgo), const IFF_RUNNING = 64 pkg syscall (linux-386-cgo), const IFF_SLAVE = 2048 pkg syscall (linux-386-cgo), const IFF_TAP = 2 pkg syscall (linux-386-cgo), const IFF_TUN = 1 pkg syscall (linux-386-cgo), const IFF_TUN_EXCL = 32768 pkg syscall (linux-386-cgo), const IFF_VNET_HDR = 16384 pkg syscall (linux-386-cgo), const IFLA_ADDRESS = 1 pkg syscall (linux-386-cgo), const IFLA_BROADCAST = 2 pkg syscall (linux-386-cgo), const IFLA_COST = 8 pkg syscall (linux-386-cgo), const IFLA_IFALIAS = 20 pkg syscall (linux-386-cgo), const IFLA_IFNAME = 3 pkg syscall (linux-386-cgo), const IFLA_LINK = 5 pkg syscall (linux-386-cgo), const IFLA_LINKINFO = 18 pkg syscall (linux-386-cgo), const IFLA_LINKMODE = 17 pkg syscall (linux-386-cgo), const IFLA_MAP = 14 pkg syscall (linux-386-cgo), const IFLA_MASTER = 10 pkg syscall (linux-386-cgo), const IFLA_MAX = 29 pkg syscall (linux-386-cgo), const IFLA_MTU = 4 pkg syscall (linux-386-cgo), const IFLA_NET_NS_PID = 19 pkg syscall (linux-386-cgo), const IFLA_OPERSTATE = 16 pkg syscall (linux-386-cgo), const IFLA_PRIORITY = 9 pkg syscall (linux-386-cgo), const IFLA_PROTINFO = 12 pkg syscall (linux-386-cgo), const IFLA_QDISC = 6 pkg syscall (linux-386-cgo), const IFLA_STATS = 7 pkg syscall (linux-386-cgo), const IFLA_TXQLEN = 13 pkg syscall (linux-386-cgo), const IFLA_UNSPEC = 0 pkg syscall (linux-386-cgo), const IFLA_WEIGHT = 15 pkg syscall (linux-386-cgo), const IFLA_WIRELESS = 11 pkg syscall (linux-386-cgo), const IFNAMSIZ = 16 pkg syscall (linux-386-cgo), const IGNBRK = 1 pkg syscall (linux-386-cgo), const IGNCR = 128 pkg syscall (linux-386-cgo), const IGNPAR = 4 pkg syscall (linux-386-cgo), const IMAXBEL = 8192 pkg syscall (linux-386-cgo), const INLCR = 64 pkg syscall (linux-386-cgo), const INPCK = 16 pkg syscall (linux-386-cgo), const IN_ACCESS = 1 pkg syscall (linux-386-cgo), const IN_ALL_EVENTS = 4095 pkg syscall (linux-386-cgo), const IN_ATTRIB = 4 pkg syscall (linux-386-cgo), const IN_CLASSA_HOST = 16777215 pkg syscall (linux-386-cgo), const IN_CLASSA_MAX = 128 pkg syscall (linux-386-cgo), const IN_CLASSA_NET = 4278190080 pkg syscall (linux-386-cgo), const IN_CLASSA_NSHIFT = 24 pkg syscall (linux-386-cgo), const IN_CLASSB_HOST = 65535 pkg syscall (linux-386-cgo), const IN_CLASSB_MAX = 65536 pkg syscall (linux-386-cgo), const IN_CLASSB_NET = 4294901760 pkg syscall (linux-386-cgo), const IN_CLASSB_NSHIFT = 16 pkg syscall (linux-386-cgo), const IN_CLASSC_HOST = 255 pkg syscall (linux-386-cgo), const IN_CLASSC_NET = 4294967040 pkg syscall (linux-386-cgo), const IN_CLASSC_NSHIFT = 8 pkg syscall (linux-386-cgo), const IN_CLOEXEC = 524288 pkg syscall (linux-386-cgo), const IN_CLOSE = 24 pkg syscall (linux-386-cgo), const IN_CLOSE_NOWRITE = 16 pkg syscall (linux-386-cgo), const IN_CLOSE_WRITE = 8 pkg syscall (linux-386-cgo), const IN_CREATE = 256 pkg syscall (linux-386-cgo), const IN_DELETE = 512 pkg syscall (linux-386-cgo), const IN_DELETE_SELF = 1024 pkg syscall (linux-386-cgo), const IN_DONT_FOLLOW = 33554432 pkg syscall (linux-386-cgo), const IN_EXCL_UNLINK = 67108864 pkg syscall (linux-386-cgo), const IN_IGNORED = 32768 pkg syscall (linux-386-cgo), const IN_ISDIR = 1073741824 pkg syscall (linux-386-cgo), const IN_LOOPBACKNET = 127 pkg syscall (linux-386-cgo), const IN_MASK_ADD = 536870912 pkg syscall (linux-386-cgo), const IN_MODIFY = 2 pkg syscall (linux-386-cgo), const IN_MOVE = 192 pkg syscall (linux-386-cgo), const IN_MOVED_FROM = 64 pkg syscall (linux-386-cgo), const IN_MOVED_TO = 128 pkg syscall (linux-386-cgo), const IN_MOVE_SELF = 2048 pkg syscall (linux-386-cgo), const IN_NONBLOCK = 2048 pkg syscall (linux-386-cgo), const IN_ONESHOT = 2147483648 pkg syscall (linux-386-cgo), const IN_ONLYDIR = 16777216 pkg syscall (linux-386-cgo), const IN_OPEN = 32 pkg syscall (linux-386-cgo), const IN_Q_OVERFLOW = 16384 pkg syscall (linux-386-cgo), const IN_UNMOUNT = 8192 pkg syscall (linux-386-cgo), const IPPROTO_AH = 51 pkg syscall (linux-386-cgo), const IPPROTO_COMP = 108 pkg syscall (linux-386-cgo), const IPPROTO_DCCP = 33 pkg syscall (linux-386-cgo), const IPPROTO_DSTOPTS = 60 pkg syscall (linux-386-cgo), const IPPROTO_EGP = 8 pkg syscall (linux-386-cgo), const IPPROTO_ENCAP = 98 pkg syscall (linux-386-cgo), const IPPROTO_ESP = 50 pkg syscall (linux-386-cgo), const IPPROTO_FRAGMENT = 44 pkg syscall (linux-386-cgo), const IPPROTO_GRE = 47 pkg syscall (linux-386-cgo), const IPPROTO_HOPOPTS = 0 pkg syscall (linux-386-cgo), const IPPROTO_ICMP = 1 pkg syscall (linux-386-cgo), const IPPROTO_ICMPV6 = 58 pkg syscall (linux-386-cgo), const IPPROTO_IDP = 22 pkg syscall (linux-386-cgo), const IPPROTO_IGMP = 2 pkg syscall (linux-386-cgo), const IPPROTO_IPIP = 4 pkg syscall (linux-386-cgo), const IPPROTO_MTP = 92 pkg syscall (linux-386-cgo), const IPPROTO_NONE = 59 pkg syscall (linux-386-cgo), const IPPROTO_PIM = 103 pkg syscall (linux-386-cgo), const IPPROTO_PUP = 12 pkg syscall (linux-386-cgo), const IPPROTO_RAW = 255 pkg syscall (linux-386-cgo), const IPPROTO_ROUTING = 43 pkg syscall (linux-386-cgo), const IPPROTO_RSVP = 46 pkg syscall (linux-386-cgo), const IPPROTO_SCTP = 132 pkg syscall (linux-386-cgo), const IPPROTO_TP = 29 pkg syscall (linux-386-cgo), const IPPROTO_UDPLITE = 136 pkg syscall (linux-386-cgo), const IPV6_2292DSTOPTS = 4 pkg syscall (linux-386-cgo), const IPV6_2292HOPLIMIT = 8 pkg syscall (linux-386-cgo), const IPV6_2292HOPOPTS = 3 pkg syscall (linux-386-cgo), const IPV6_2292PKTINFO = 2 pkg syscall (linux-386-cgo), const IPV6_2292PKTOPTIONS = 6 pkg syscall (linux-386-cgo), const IPV6_2292RTHDR = 5 pkg syscall (linux-386-cgo), const IPV6_ADDRFORM = 1 pkg syscall (linux-386-cgo), const IPV6_ADD_MEMBERSHIP = 20 pkg syscall (linux-386-cgo), const IPV6_AUTHHDR = 10 pkg syscall (linux-386-cgo), const IPV6_CHECKSUM = 7 pkg syscall (linux-386-cgo), const IPV6_DROP_MEMBERSHIP = 21 pkg syscall (linux-386-cgo), const IPV6_DSTOPTS = 59 pkg syscall (linux-386-cgo), const IPV6_HOPLIMIT = 52 pkg syscall (linux-386-cgo), const IPV6_HOPOPTS = 54 pkg syscall (linux-386-cgo), const IPV6_IPSEC_POLICY = 34 pkg syscall (linux-386-cgo), const IPV6_JOIN_ANYCAST = 27 pkg syscall (linux-386-cgo), const IPV6_JOIN_GROUP = 20 pkg syscall (linux-386-cgo), const IPV6_LEAVE_ANYCAST = 28 pkg syscall (linux-386-cgo), const IPV6_LEAVE_GROUP = 21 pkg syscall (linux-386-cgo), const IPV6_MTU = 24 pkg syscall (linux-386-cgo), const IPV6_MTU_DISCOVER = 23 pkg syscall (linux-386-cgo), const IPV6_MULTICAST_HOPS = 18 pkg syscall (linux-386-cgo), const IPV6_MULTICAST_IF = 17 pkg syscall (linux-386-cgo), const IPV6_MULTICAST_LOOP = 19 pkg syscall (linux-386-cgo), const IPV6_NEXTHOP = 9 pkg syscall (linux-386-cgo), const IPV6_PKTINFO = 50 pkg syscall (linux-386-cgo), const IPV6_PMTUDISC_DO = 2 pkg syscall (linux-386-cgo), const IPV6_PMTUDISC_DONT = 0 pkg syscall (linux-386-cgo), const IPV6_PMTUDISC_PROBE = 3 pkg syscall (linux-386-cgo), const IPV6_PMTUDISC_WANT = 1 pkg syscall (linux-386-cgo), const IPV6_RECVDSTOPTS = 58 pkg syscall (linux-386-cgo), const IPV6_RECVERR = 25 pkg syscall (linux-386-cgo), const IPV6_RECVHOPLIMIT = 51 pkg syscall (linux-386-cgo), const IPV6_RECVHOPOPTS = 53 pkg syscall (linux-386-cgo), const IPV6_RECVPKTINFO = 49 pkg syscall (linux-386-cgo), const IPV6_RECVRTHDR = 56 pkg syscall (linux-386-cgo), const IPV6_RECVTCLASS = 66 pkg syscall (linux-386-cgo), const IPV6_ROUTER_ALERT = 22 pkg syscall (linux-386-cgo), const IPV6_RTHDR = 57 pkg syscall (linux-386-cgo), const IPV6_RTHDRDSTOPTS = 55 pkg syscall (linux-386-cgo), const IPV6_RTHDR_LOOSE = 0 pkg syscall (linux-386-cgo), const IPV6_RTHDR_STRICT = 1 pkg syscall (linux-386-cgo), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (linux-386-cgo), const IPV6_RXDSTOPTS = 59 pkg syscall (linux-386-cgo), const IPV6_RXHOPOPTS = 54 pkg syscall (linux-386-cgo), const IPV6_TCLASS = 67 pkg syscall (linux-386-cgo), const IPV6_UNICAST_HOPS = 16 pkg syscall (linux-386-cgo), const IPV6_V6ONLY = 26 pkg syscall (linux-386-cgo), const IPV6_XFRM_POLICY = 35 pkg syscall (linux-386-cgo), const IP_ADD_MEMBERSHIP = 35 pkg syscall (linux-386-cgo), const IP_ADD_SOURCE_MEMBERSHIP = 39 pkg syscall (linux-386-cgo), const IP_BLOCK_SOURCE = 38 pkg syscall (linux-386-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (linux-386-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (linux-386-cgo), const IP_DF = 16384 pkg syscall (linux-386-cgo), const IP_DROP_MEMBERSHIP = 36 pkg syscall (linux-386-cgo), const IP_DROP_SOURCE_MEMBERSHIP = 40 pkg syscall (linux-386-cgo), const IP_FREEBIND = 15 pkg syscall (linux-386-cgo), const IP_HDRINCL = 3 pkg syscall (linux-386-cgo), const IP_IPSEC_POLICY = 16 pkg syscall (linux-386-cgo), const IP_MAXPACKET = 65535 pkg syscall (linux-386-cgo), const IP_MAX_MEMBERSHIPS = 20 pkg syscall (linux-386-cgo), const IP_MF = 8192 pkg syscall (linux-386-cgo), const IP_MINTTL = 21 pkg syscall (linux-386-cgo), const IP_MSFILTER = 41 pkg syscall (linux-386-cgo), const IP_MSS = 576 pkg syscall (linux-386-cgo), const IP_MTU = 14 pkg syscall (linux-386-cgo), const IP_MTU_DISCOVER = 10 pkg syscall (linux-386-cgo), const IP_MULTICAST_IF = 32 pkg syscall (linux-386-cgo), const IP_MULTICAST_LOOP = 34 pkg syscall (linux-386-cgo), const IP_MULTICAST_TTL = 33 pkg syscall (linux-386-cgo), const IP_OFFMASK = 8191 pkg syscall (linux-386-cgo), const IP_OPTIONS = 4 pkg syscall (linux-386-cgo), const IP_ORIGDSTADDR = 20 pkg syscall (linux-386-cgo), const IP_PASSSEC = 18 pkg syscall (linux-386-cgo), const IP_PKTINFO = 8 pkg syscall (linux-386-cgo), const IP_PKTOPTIONS = 9 pkg syscall (linux-386-cgo), const IP_PMTUDISC = 10 pkg syscall (linux-386-cgo), const IP_PMTUDISC_DO = 2 pkg syscall (linux-386-cgo), const IP_PMTUDISC_DONT = 0 pkg syscall (linux-386-cgo), const IP_PMTUDISC_PROBE = 3 pkg syscall (linux-386-cgo), const IP_PMTUDISC_WANT = 1 pkg syscall (linux-386-cgo), const IP_RECVERR = 11 pkg syscall (linux-386-cgo), const IP_RECVOPTS = 6 pkg syscall (linux-386-cgo), const IP_RECVORIGDSTADDR = 20 pkg syscall (linux-386-cgo), const IP_RECVRETOPTS = 7 pkg syscall (linux-386-cgo), const IP_RECVTOS = 13 pkg syscall (linux-386-cgo), const IP_RECVTTL = 12 pkg syscall (linux-386-cgo), const IP_RETOPTS = 7 pkg syscall (linux-386-cgo), const IP_RF = 32768 pkg syscall (linux-386-cgo), const IP_ROUTER_ALERT = 5 pkg syscall (linux-386-cgo), const IP_TOS = 1 pkg syscall (linux-386-cgo), const IP_TRANSPARENT = 19 pkg syscall (linux-386-cgo), const IP_TTL = 2 pkg syscall (linux-386-cgo), const IP_UNBLOCK_SOURCE = 37 pkg syscall (linux-386-cgo), const IP_XFRM_POLICY = 17 pkg syscall (linux-386-cgo), const ISIG = 1 pkg syscall (linux-386-cgo), const ISTRIP = 32 pkg syscall (linux-386-cgo), const IUCLC = 512 pkg syscall (linux-386-cgo), const IUTF8 = 16384 pkg syscall (linux-386-cgo), const IXANY = 2048 pkg syscall (linux-386-cgo), const IXOFF = 4096 pkg syscall (linux-386-cgo), const IXON = 1024 pkg syscall (linux-386-cgo), const ImplementsGetwd = true pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_CAD_OFF = 0 pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_CAD_ON = 2309737967 pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_HALT = 3454992675 pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_KEXEC = 1163412803 pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_POWER_OFF = 1126301404 pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_RESTART = 19088743 pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_RESTART2 = 2712847316 pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_SW_SUSPEND = 3489725666 pkg syscall (linux-386-cgo), const LINUX_REBOOT_MAGIC1 = 4276215469 pkg syscall (linux-386-cgo), const LINUX_REBOOT_MAGIC2 = 672274793 pkg syscall (linux-386-cgo), const LOCK_EX = 2 pkg syscall (linux-386-cgo), const LOCK_NB = 4 pkg syscall (linux-386-cgo), const LOCK_SH = 1 pkg syscall (linux-386-cgo), const LOCK_UN = 8 pkg syscall (linux-386-cgo), const MADV_DOFORK = 11 pkg syscall (linux-386-cgo), const MADV_DONTFORK = 10 pkg syscall (linux-386-cgo), const MADV_DONTNEED = 4 pkg syscall (linux-386-cgo), const MADV_HUGEPAGE = 14 pkg syscall (linux-386-cgo), const MADV_HWPOISON = 100 pkg syscall (linux-386-cgo), const MADV_MERGEABLE = 12 pkg syscall (linux-386-cgo), const MADV_NOHUGEPAGE = 15 pkg syscall (linux-386-cgo), const MADV_NORMAL = 0 pkg syscall (linux-386-cgo), const MADV_RANDOM = 1 pkg syscall (linux-386-cgo), const MADV_REMOVE = 9 pkg syscall (linux-386-cgo), const MADV_SEQUENTIAL = 2 pkg syscall (linux-386-cgo), const MADV_UNMERGEABLE = 13 pkg syscall (linux-386-cgo), const MADV_WILLNEED = 3 pkg syscall (linux-386-cgo), const MAP_32BIT = 64 pkg syscall (linux-386-cgo), const MAP_ANON = 32 pkg syscall (linux-386-cgo), const MAP_ANONYMOUS = 32 pkg syscall (linux-386-cgo), const MAP_DENYWRITE = 2048 pkg syscall (linux-386-cgo), const MAP_EXECUTABLE = 4096 pkg syscall (linux-386-cgo), const MAP_FILE = 0 pkg syscall (linux-386-cgo), const MAP_FIXED = 16 pkg syscall (linux-386-cgo), const MAP_GROWSDOWN = 256 pkg syscall (linux-386-cgo), const MAP_HUGETLB = 262144 pkg syscall (linux-386-cgo), const MAP_LOCKED = 8192 pkg syscall (linux-386-cgo), const MAP_NONBLOCK = 65536 pkg syscall (linux-386-cgo), const MAP_NORESERVE = 16384 pkg syscall (linux-386-cgo), const MAP_POPULATE = 32768 pkg syscall (linux-386-cgo), const MAP_PRIVATE = 2 pkg syscall (linux-386-cgo), const MAP_SHARED = 1 pkg syscall (linux-386-cgo), const MAP_STACK = 131072 pkg syscall (linux-386-cgo), const MAP_TYPE = 15 pkg syscall (linux-386-cgo), const MCL_CURRENT = 1 pkg syscall (linux-386-cgo), const MCL_FUTURE = 2 pkg syscall (linux-386-cgo), const MNT_DETACH = 2 pkg syscall (linux-386-cgo), const MNT_EXPIRE = 4 pkg syscall (linux-386-cgo), const MNT_FORCE = 1 pkg syscall (linux-386-cgo), const MSG_CMSG_CLOEXEC = 1073741824 pkg syscall (linux-386-cgo), const MSG_CONFIRM = 2048 pkg syscall (linux-386-cgo), const MSG_CTRUNC = 8 pkg syscall (linux-386-cgo), const MSG_DONTROUTE = 4 pkg syscall (linux-386-cgo), const MSG_DONTWAIT = 64 pkg syscall (linux-386-cgo), const MSG_EOR = 128 pkg syscall (linux-386-cgo), const MSG_ERRQUEUE = 8192 pkg syscall (linux-386-cgo), const MSG_FASTOPEN = 536870912 pkg syscall (linux-386-cgo), const MSG_FASTOPEN ideal-int pkg syscall (linux-386-cgo), const MSG_FIN = 512 pkg syscall (linux-386-cgo), const MSG_MORE = 32768 pkg syscall (linux-386-cgo), const MSG_NOSIGNAL = 16384 pkg syscall (linux-386-cgo), const MSG_OOB = 1 pkg syscall (linux-386-cgo), const MSG_PEEK = 2 pkg syscall (linux-386-cgo), const MSG_PROXY = 16 pkg syscall (linux-386-cgo), const MSG_RST = 4096 pkg syscall (linux-386-cgo), const MSG_SYN = 1024 pkg syscall (linux-386-cgo), const MSG_TRUNC = 32 pkg syscall (linux-386-cgo), const MSG_TRYHARD = 4 pkg syscall (linux-386-cgo), const MSG_WAITALL = 256 pkg syscall (linux-386-cgo), const MSG_WAITFORONE = 65536 pkg syscall (linux-386-cgo), const MS_ACTIVE = 1073741824 pkg syscall (linux-386-cgo), const MS_ASYNC = 1 pkg syscall (linux-386-cgo), const MS_BIND = 4096 pkg syscall (linux-386-cgo), const MS_DIRSYNC = 128 pkg syscall (linux-386-cgo), const MS_INVALIDATE = 2 pkg syscall (linux-386-cgo), const MS_I_VERSION = 8388608 pkg syscall (linux-386-cgo), const MS_KERNMOUNT = 4194304 pkg syscall (linux-386-cgo), const MS_MANDLOCK = 64 pkg syscall (linux-386-cgo), const MS_MGC_MSK = 4294901760 pkg syscall (linux-386-cgo), const MS_MGC_VAL = 3236757504 pkg syscall (linux-386-cgo), const MS_MOVE = 8192 pkg syscall (linux-386-cgo), const MS_NOATIME = 1024 pkg syscall (linux-386-cgo), const MS_NODEV = 4 pkg syscall (linux-386-cgo), const MS_NODIRATIME = 2048 pkg syscall (linux-386-cgo), const MS_NOEXEC = 8 pkg syscall (linux-386-cgo), const MS_NOSUID = 2 pkg syscall (linux-386-cgo), const MS_NOUSER = -2147483648 pkg syscall (linux-386-cgo), const MS_POSIXACL = 65536 pkg syscall (linux-386-cgo), const MS_PRIVATE = 262144 pkg syscall (linux-386-cgo), const MS_RDONLY = 1 pkg syscall (linux-386-cgo), const MS_REC = 16384 pkg syscall (linux-386-cgo), const MS_RELATIME = 2097152 pkg syscall (linux-386-cgo), const MS_REMOUNT = 32 pkg syscall (linux-386-cgo), const MS_RMT_MASK = 8388689 pkg syscall (linux-386-cgo), const MS_SHARED = 1048576 pkg syscall (linux-386-cgo), const MS_SILENT = 32768 pkg syscall (linux-386-cgo), const MS_SLAVE = 524288 pkg syscall (linux-386-cgo), const MS_STRICTATIME = 16777216 pkg syscall (linux-386-cgo), const MS_SYNC = 4 pkg syscall (linux-386-cgo), const MS_SYNCHRONOUS = 16 pkg syscall (linux-386-cgo), const MS_UNBINDABLE = 131072 pkg syscall (linux-386-cgo), const NAME_MAX = 255 pkg syscall (linux-386-cgo), const NETLINK_ADD_MEMBERSHIP = 1 pkg syscall (linux-386-cgo), const NETLINK_AUDIT = 9 pkg syscall (linux-386-cgo), const NETLINK_BROADCAST_ERROR = 4 pkg syscall (linux-386-cgo), const NETLINK_CONNECTOR = 11 pkg syscall (linux-386-cgo), const NETLINK_DNRTMSG = 14 pkg syscall (linux-386-cgo), const NETLINK_DROP_MEMBERSHIP = 2 pkg syscall (linux-386-cgo), const NETLINK_ECRYPTFS = 19 pkg syscall (linux-386-cgo), const NETLINK_FIB_LOOKUP = 10 pkg syscall (linux-386-cgo), const NETLINK_FIREWALL = 3 pkg syscall (linux-386-cgo), const NETLINK_GENERIC = 16 pkg syscall (linux-386-cgo), const NETLINK_INET_DIAG = 4 pkg syscall (linux-386-cgo), const NETLINK_IP6_FW = 13 pkg syscall (linux-386-cgo), const NETLINK_ISCSI = 8 pkg syscall (linux-386-cgo), const NETLINK_KOBJECT_UEVENT = 15 pkg syscall (linux-386-cgo), const NETLINK_NETFILTER = 12 pkg syscall (linux-386-cgo), const NETLINK_NFLOG = 5 pkg syscall (linux-386-cgo), const NETLINK_NO_ENOBUFS = 5 pkg syscall (linux-386-cgo), const NETLINK_PKTINFO = 3 pkg syscall (linux-386-cgo), const NETLINK_ROUTE = 0 pkg syscall (linux-386-cgo), const NETLINK_SCSITRANSPORT = 18 pkg syscall (linux-386-cgo), const NETLINK_SELINUX = 7 pkg syscall (linux-386-cgo), const NETLINK_UNUSED = 1 pkg syscall (linux-386-cgo), const NETLINK_USERSOCK = 2 pkg syscall (linux-386-cgo), const NETLINK_XFRM = 6 pkg syscall (linux-386-cgo), const NLA_ALIGNTO = 4 pkg syscall (linux-386-cgo), const NLA_F_NESTED = 32768 pkg syscall (linux-386-cgo), const NLA_F_NET_BYTEORDER = 16384 pkg syscall (linux-386-cgo), const NLA_HDRLEN = 4 pkg syscall (linux-386-cgo), const NLMSG_ALIGNTO = 4 pkg syscall (linux-386-cgo), const NLMSG_DONE = 3 pkg syscall (linux-386-cgo), const NLMSG_ERROR = 2 pkg syscall (linux-386-cgo), const NLMSG_HDRLEN = 16 pkg syscall (linux-386-cgo), const NLMSG_MIN_TYPE = 16 pkg syscall (linux-386-cgo), const NLMSG_NOOP = 1 pkg syscall (linux-386-cgo), const NLMSG_OVERRUN = 4 pkg syscall (linux-386-cgo), const NLM_F_ACK = 4 pkg syscall (linux-386-cgo), const NLM_F_APPEND = 2048 pkg syscall (linux-386-cgo), const NLM_F_ATOMIC = 1024 pkg syscall (linux-386-cgo), const NLM_F_CREATE = 1024 pkg syscall (linux-386-cgo), const NLM_F_DUMP = 768 pkg syscall (linux-386-cgo), const NLM_F_ECHO = 8 pkg syscall (linux-386-cgo), const NLM_F_EXCL = 512 pkg syscall (linux-386-cgo), const NLM_F_MATCH = 512 pkg syscall (linux-386-cgo), const NLM_F_MULTI = 2 pkg syscall (linux-386-cgo), const NLM_F_REPLACE = 256 pkg syscall (linux-386-cgo), const NLM_F_REQUEST = 1 pkg syscall (linux-386-cgo), const NLM_F_ROOT = 256 pkg syscall (linux-386-cgo), const NOFLSH = 128 pkg syscall (linux-386-cgo), const OCRNL = 8 pkg syscall (linux-386-cgo), const OFDEL = 128 pkg syscall (linux-386-cgo), const OFILL = 64 pkg syscall (linux-386-cgo), const OLCUC = 2 pkg syscall (linux-386-cgo), const ONLCR = 4 pkg syscall (linux-386-cgo), const ONLRET = 32 pkg syscall (linux-386-cgo), const ONOCR = 16 pkg syscall (linux-386-cgo), const OPOST = 1 pkg syscall (linux-386-cgo), const O_ACCMODE = 3 pkg syscall (linux-386-cgo), const O_APPEND = 1024 pkg syscall (linux-386-cgo), const O_ASYNC = 8192 pkg syscall (linux-386-cgo), const O_CLOEXEC = 524288 pkg syscall (linux-386-cgo), const O_CREAT = 64 pkg syscall (linux-386-cgo), const O_DIRECT = 16384 pkg syscall (linux-386-cgo), const O_DIRECTORY = 65536 pkg syscall (linux-386-cgo), const O_DSYNC = 4096 pkg syscall (linux-386-cgo), const O_EXCL = 128 pkg syscall (linux-386-cgo), const O_FSYNC = 1052672 pkg syscall (linux-386-cgo), const O_LARGEFILE = 32768 pkg syscall (linux-386-cgo), const O_NDELAY = 2048 pkg syscall (linux-386-cgo), const O_NOATIME = 262144 pkg syscall (linux-386-cgo), const O_NOCTTY = 256 pkg syscall (linux-386-cgo), const O_NOFOLLOW = 131072 pkg syscall (linux-386-cgo), const O_NONBLOCK = 2048 pkg syscall (linux-386-cgo), const O_RSYNC = 1052672 pkg syscall (linux-386-cgo), const O_SYNC = 1052672 pkg syscall (linux-386-cgo), const O_TRUNC = 512 pkg syscall (linux-386-cgo), const PACKET_ADD_MEMBERSHIP = 1 pkg syscall (linux-386-cgo), const PACKET_BROADCAST = 1 pkg syscall (linux-386-cgo), const PACKET_DROP_MEMBERSHIP = 2 pkg syscall (linux-386-cgo), const PACKET_FASTROUTE = 6 pkg syscall (linux-386-cgo), const PACKET_HOST = 0 pkg syscall (linux-386-cgo), const PACKET_LOOPBACK = 5 pkg syscall (linux-386-cgo), const PACKET_MR_ALLMULTI = 2 pkg syscall (linux-386-cgo), const PACKET_MR_MULTICAST = 0 pkg syscall (linux-386-cgo), const PACKET_MR_PROMISC = 1 pkg syscall (linux-386-cgo), const PACKET_MULTICAST = 2 pkg syscall (linux-386-cgo), const PACKET_OTHERHOST = 3 pkg syscall (linux-386-cgo), const PACKET_OUTGOING = 4 pkg syscall (linux-386-cgo), const PACKET_RECV_OUTPUT = 3 pkg syscall (linux-386-cgo), const PACKET_RX_RING = 5 pkg syscall (linux-386-cgo), const PACKET_STATISTICS = 6 pkg syscall (linux-386-cgo), const PARENB = 256 pkg syscall (linux-386-cgo), const PARMRK = 8 pkg syscall (linux-386-cgo), const PARODD = 512 pkg syscall (linux-386-cgo), const PENDIN = 16384 pkg syscall (linux-386-cgo), const PROT_EXEC = 4 pkg syscall (linux-386-cgo), const PROT_GROWSDOWN = 16777216 pkg syscall (linux-386-cgo), const PROT_GROWSUP = 33554432 pkg syscall (linux-386-cgo), const PROT_NONE = 0 pkg syscall (linux-386-cgo), const PROT_READ = 1 pkg syscall (linux-386-cgo), const PROT_WRITE = 2 pkg syscall (linux-386-cgo), const PR_CAPBSET_DROP = 24 pkg syscall (linux-386-cgo), const PR_CAPBSET_READ = 23 pkg syscall (linux-386-cgo), const PR_ENDIAN_BIG = 0 pkg syscall (linux-386-cgo), const PR_ENDIAN_LITTLE = 1 pkg syscall (linux-386-cgo), const PR_ENDIAN_PPC_LITTLE = 2 pkg syscall (linux-386-cgo), const PR_FPEMU_NOPRINT = 1 pkg syscall (linux-386-cgo), const PR_FPEMU_SIGFPE = 2 pkg syscall (linux-386-cgo), const PR_FP_EXC_ASYNC = 2 pkg syscall (linux-386-cgo), const PR_FP_EXC_DISABLED = 0 pkg syscall (linux-386-cgo), const PR_FP_EXC_DIV = 65536 pkg syscall (linux-386-cgo), const PR_FP_EXC_INV = 1048576 pkg syscall (linux-386-cgo), const PR_FP_EXC_NONRECOV = 1 pkg syscall (linux-386-cgo), const PR_FP_EXC_OVF = 131072 pkg syscall (linux-386-cgo), const PR_FP_EXC_PRECISE = 3 pkg syscall (linux-386-cgo), const PR_FP_EXC_RES = 524288 pkg syscall (linux-386-cgo), const PR_FP_EXC_SW_ENABLE = 128 pkg syscall (linux-386-cgo), const PR_FP_EXC_UND = 262144 pkg syscall (linux-386-cgo), const PR_GET_DUMPABLE = 3 pkg syscall (linux-386-cgo), const PR_GET_ENDIAN = 19 pkg syscall (linux-386-cgo), const PR_GET_FPEMU = 9 pkg syscall (linux-386-cgo), const PR_GET_FPEXC = 11 pkg syscall (linux-386-cgo), const PR_GET_KEEPCAPS = 7 pkg syscall (linux-386-cgo), const PR_GET_NAME = 16 pkg syscall (linux-386-cgo), const PR_GET_PDEATHSIG = 2 pkg syscall (linux-386-cgo), const PR_GET_SECCOMP = 21 pkg syscall (linux-386-cgo), const PR_GET_SECUREBITS = 27 pkg syscall (linux-386-cgo), const PR_GET_TIMERSLACK = 30 pkg syscall (linux-386-cgo), const PR_GET_TIMING = 13 pkg syscall (linux-386-cgo), const PR_GET_TSC = 25 pkg syscall (linux-386-cgo), const PR_GET_UNALIGN = 5 pkg syscall (linux-386-cgo), const PR_MCE_KILL = 33 pkg syscall (linux-386-cgo), const PR_MCE_KILL_CLEAR = 0 pkg syscall (linux-386-cgo), const PR_MCE_KILL_DEFAULT = 2 pkg syscall (linux-386-cgo), const PR_MCE_KILL_EARLY = 1 pkg syscall (linux-386-cgo), const PR_MCE_KILL_GET = 34 pkg syscall (linux-386-cgo), const PR_MCE_KILL_LATE = 0 pkg syscall (linux-386-cgo), const PR_MCE_KILL_SET = 1 pkg syscall (linux-386-cgo), const PR_SET_DUMPABLE = 4 pkg syscall (linux-386-cgo), const PR_SET_ENDIAN = 20 pkg syscall (linux-386-cgo), const PR_SET_FPEMU = 10 pkg syscall (linux-386-cgo), const PR_SET_FPEXC = 12 pkg syscall (linux-386-cgo), const PR_SET_KEEPCAPS = 8 pkg syscall (linux-386-cgo), const PR_SET_NAME = 15 pkg syscall (linux-386-cgo), const PR_SET_PDEATHSIG = 1 pkg syscall (linux-386-cgo), const PR_SET_PTRACER = 1499557217 pkg syscall (linux-386-cgo), const PR_SET_SECCOMP = 22 pkg syscall (linux-386-cgo), const PR_SET_SECUREBITS = 28 pkg syscall (linux-386-cgo), const PR_SET_TIMERSLACK = 29 pkg syscall (linux-386-cgo), const PR_SET_TIMING = 14 pkg syscall (linux-386-cgo), const PR_SET_TSC = 26 pkg syscall (linux-386-cgo), const PR_SET_UNALIGN = 6 pkg syscall (linux-386-cgo), const PR_TASK_PERF_EVENTS_DISABLE = 31 pkg syscall (linux-386-cgo), const PR_TASK_PERF_EVENTS_ENABLE = 32 pkg syscall (linux-386-cgo), const PR_TIMING_STATISTICAL = 0 pkg syscall (linux-386-cgo), const PR_TIMING_TIMESTAMP = 1 pkg syscall (linux-386-cgo), const PR_TSC_ENABLE = 1 pkg syscall (linux-386-cgo), const PR_TSC_SIGSEGV = 2 pkg syscall (linux-386-cgo), const PR_UNALIGN_NOPRINT = 1 pkg syscall (linux-386-cgo), const PR_UNALIGN_SIGBUS = 2 pkg syscall (linux-386-cgo), const PTRACE_ATTACH = 16 pkg syscall (linux-386-cgo), const PTRACE_CONT = 7 pkg syscall (linux-386-cgo), const PTRACE_DETACH = 17 pkg syscall (linux-386-cgo), const PTRACE_EVENT_CLONE = 3 pkg syscall (linux-386-cgo), const PTRACE_EVENT_EXEC = 4 pkg syscall (linux-386-cgo), const PTRACE_EVENT_EXIT = 6 pkg syscall (linux-386-cgo), const PTRACE_EVENT_FORK = 1 pkg syscall (linux-386-cgo), const PTRACE_EVENT_VFORK = 2 pkg syscall (linux-386-cgo), const PTRACE_EVENT_VFORK_DONE = 5 pkg syscall (linux-386-cgo), const PTRACE_GETEVENTMSG = 16897 pkg syscall (linux-386-cgo), const PTRACE_GETFPREGS = 14 pkg syscall (linux-386-cgo), const PTRACE_GETFPXREGS = 18 pkg syscall (linux-386-cgo), const PTRACE_GETREGS = 12 pkg syscall (linux-386-cgo), const PTRACE_GETREGSET = 16900 pkg syscall (linux-386-cgo), const PTRACE_GETSIGINFO = 16898 pkg syscall (linux-386-cgo), const PTRACE_GET_THREAD_AREA = 25 pkg syscall (linux-386-cgo), const PTRACE_KILL = 8 pkg syscall (linux-386-cgo), const PTRACE_OLDSETOPTIONS = 21 pkg syscall (linux-386-cgo), const PTRACE_O_MASK = 127 pkg syscall (linux-386-cgo), const PTRACE_O_TRACECLONE = 8 pkg syscall (linux-386-cgo), const PTRACE_O_TRACEEXEC = 16 pkg syscall (linux-386-cgo), const PTRACE_O_TRACEEXIT = 64 pkg syscall (linux-386-cgo), const PTRACE_O_TRACEFORK = 2 pkg syscall (linux-386-cgo), const PTRACE_O_TRACESYSGOOD = 1 pkg syscall (linux-386-cgo), const PTRACE_O_TRACEVFORK = 4 pkg syscall (linux-386-cgo), const PTRACE_O_TRACEVFORKDONE = 32 pkg syscall (linux-386-cgo), const PTRACE_PEEKDATA = 2 pkg syscall (linux-386-cgo), const PTRACE_PEEKTEXT = 1 pkg syscall (linux-386-cgo), const PTRACE_PEEKUSR = 3 pkg syscall (linux-386-cgo), const PTRACE_POKEDATA = 5 pkg syscall (linux-386-cgo), const PTRACE_POKETEXT = 4 pkg syscall (linux-386-cgo), const PTRACE_POKEUSR = 6 pkg syscall (linux-386-cgo), const PTRACE_SETFPREGS = 15 pkg syscall (linux-386-cgo), const PTRACE_SETFPXREGS = 19 pkg syscall (linux-386-cgo), const PTRACE_SETOPTIONS = 16896 pkg syscall (linux-386-cgo), const PTRACE_SETREGS = 13 pkg syscall (linux-386-cgo), const PTRACE_SETREGSET = 16901 pkg syscall (linux-386-cgo), const PTRACE_SETSIGINFO = 16899 pkg syscall (linux-386-cgo), const PTRACE_SET_THREAD_AREA = 26 pkg syscall (linux-386-cgo), const PTRACE_SINGLEBLOCK = 33 pkg syscall (linux-386-cgo), const PTRACE_SINGLESTEP = 9 pkg syscall (linux-386-cgo), const PTRACE_SYSCALL = 24 pkg syscall (linux-386-cgo), const PTRACE_SYSEMU = 31 pkg syscall (linux-386-cgo), const PTRACE_SYSEMU_SINGLESTEP = 32 pkg syscall (linux-386-cgo), const PTRACE_TRACEME = 0 pkg syscall (linux-386-cgo), const PathMax = 4096 pkg syscall (linux-386-cgo), const RLIMIT_AS = 9 pkg syscall (linux-386-cgo), const RLIMIT_CORE = 4 pkg syscall (linux-386-cgo), const RLIMIT_CPU = 0 pkg syscall (linux-386-cgo), const RLIMIT_DATA = 2 pkg syscall (linux-386-cgo), const RLIMIT_FSIZE = 1 pkg syscall (linux-386-cgo), const RLIMIT_NOFILE = 7 pkg syscall (linux-386-cgo), const RLIMIT_STACK = 3 pkg syscall (linux-386-cgo), const RLIM_INFINITY = -1 pkg syscall (linux-386-cgo), const RTAX_ADVMSS = 8 pkg syscall (linux-386-cgo), const RTAX_CWND = 7 pkg syscall (linux-386-cgo), const RTAX_FEATURES = 12 pkg syscall (linux-386-cgo), const RTAX_FEATURE_ALLFRAG = 8 pkg syscall (linux-386-cgo), const RTAX_FEATURE_ECN = 1 pkg syscall (linux-386-cgo), const RTAX_FEATURE_SACK = 2 pkg syscall (linux-386-cgo), const RTAX_FEATURE_TIMESTAMP = 4 pkg syscall (linux-386-cgo), const RTAX_HOPLIMIT = 10 pkg syscall (linux-386-cgo), const RTAX_INITCWND = 11 pkg syscall (linux-386-cgo), const RTAX_INITRWND = 14 pkg syscall (linux-386-cgo), const RTAX_LOCK = 1 pkg syscall (linux-386-cgo), const RTAX_MAX = 14 pkg syscall (linux-386-cgo), const RTAX_MTU = 2 pkg syscall (linux-386-cgo), const RTAX_REORDERING = 9 pkg syscall (linux-386-cgo), const RTAX_RTO_MIN = 13 pkg syscall (linux-386-cgo), const RTAX_RTT = 4 pkg syscall (linux-386-cgo), const RTAX_RTTVAR = 5 pkg syscall (linux-386-cgo), const RTAX_SSTHRESH = 6 pkg syscall (linux-386-cgo), const RTAX_UNSPEC = 0 pkg syscall (linux-386-cgo), const RTAX_WINDOW = 3 pkg syscall (linux-386-cgo), const RTA_ALIGNTO = 4 pkg syscall (linux-386-cgo), const RTA_CACHEINFO = 12 pkg syscall (linux-386-cgo), const RTA_DST = 1 pkg syscall (linux-386-cgo), const RTA_FLOW = 11 pkg syscall (linux-386-cgo), const RTA_GATEWAY = 5 pkg syscall (linux-386-cgo), const RTA_IIF = 3 pkg syscall (linux-386-cgo), const RTA_MAX = 16 pkg syscall (linux-386-cgo), const RTA_METRICS = 8 pkg syscall (linux-386-cgo), const RTA_MULTIPATH = 9 pkg syscall (linux-386-cgo), const RTA_OIF = 4 pkg syscall (linux-386-cgo), const RTA_PREFSRC = 7 pkg syscall (linux-386-cgo), const RTA_PRIORITY = 6 pkg syscall (linux-386-cgo), const RTA_SRC = 2 pkg syscall (linux-386-cgo), const RTA_TABLE = 15 pkg syscall (linux-386-cgo), const RTA_UNSPEC = 0 pkg syscall (linux-386-cgo), const RTCF_DIRECTSRC = 67108864 pkg syscall (linux-386-cgo), const RTCF_DOREDIRECT = 16777216 pkg syscall (linux-386-cgo), const RTCF_LOG = 33554432 pkg syscall (linux-386-cgo), const RTCF_MASQ = 4194304 pkg syscall (linux-386-cgo), const RTCF_NAT = 8388608 pkg syscall (linux-386-cgo), const RTCF_VALVE = 2097152 pkg syscall (linux-386-cgo), const RTF_ADDRCLASSMASK = 4160749568 pkg syscall (linux-386-cgo), const RTF_ADDRCONF = 262144 pkg syscall (linux-386-cgo), const RTF_ALLONLINK = 131072 pkg syscall (linux-386-cgo), const RTF_BROADCAST = 268435456 pkg syscall (linux-386-cgo), const RTF_CACHE = 16777216 pkg syscall (linux-386-cgo), const RTF_DEFAULT = 65536 pkg syscall (linux-386-cgo), const RTF_DYNAMIC = 16 pkg syscall (linux-386-cgo), const RTF_FLOW = 33554432 pkg syscall (linux-386-cgo), const RTF_GATEWAY = 2 pkg syscall (linux-386-cgo), const RTF_HOST = 4 pkg syscall (linux-386-cgo), const RTF_INTERFACE = 1073741824 pkg syscall (linux-386-cgo), const RTF_IRTT = 256 pkg syscall (linux-386-cgo), const RTF_LINKRT = 1048576 pkg syscall (linux-386-cgo), const RTF_LOCAL = 2147483648 pkg syscall (linux-386-cgo), const RTF_MODIFIED = 32 pkg syscall (linux-386-cgo), const RTF_MSS = 64 pkg syscall (linux-386-cgo), const RTF_MTU = 64 pkg syscall (linux-386-cgo), const RTF_MULTICAST = 536870912 pkg syscall (linux-386-cgo), const RTF_NAT = 134217728 pkg syscall (linux-386-cgo), const RTF_NOFORWARD = 4096 pkg syscall (linux-386-cgo), const RTF_NONEXTHOP = 2097152 pkg syscall (linux-386-cgo), const RTF_NOPMTUDISC = 16384 pkg syscall (linux-386-cgo), const RTF_POLICY = 67108864 pkg syscall (linux-386-cgo), const RTF_REINSTATE = 8 pkg syscall (linux-386-cgo), const RTF_REJECT = 512 pkg syscall (linux-386-cgo), const RTF_STATIC = 1024 pkg syscall (linux-386-cgo), const RTF_THROW = 8192 pkg syscall (linux-386-cgo), const RTF_UP = 1 pkg syscall (linux-386-cgo), const RTF_WINDOW = 128 pkg syscall (linux-386-cgo), const RTF_XRESOLVE = 2048 pkg syscall (linux-386-cgo), const RTM_BASE = 16 pkg syscall (linux-386-cgo), const RTM_DELACTION = 49 pkg syscall (linux-386-cgo), const RTM_DELADDR = 21 pkg syscall (linux-386-cgo), const RTM_DELADDRLABEL = 73 pkg syscall (linux-386-cgo), const RTM_DELLINK = 17 pkg syscall (linux-386-cgo), const RTM_DELNEIGH = 29 pkg syscall (linux-386-cgo), const RTM_DELQDISC = 37 pkg syscall (linux-386-cgo), const RTM_DELROUTE = 25 pkg syscall (linux-386-cgo), const RTM_DELRULE = 33 pkg syscall (linux-386-cgo), const RTM_DELTCLASS = 41 pkg syscall (linux-386-cgo), const RTM_DELTFILTER = 45 pkg syscall (linux-386-cgo), const RTM_F_CLONED = 512 pkg syscall (linux-386-cgo), const RTM_F_EQUALIZE = 1024 pkg syscall (linux-386-cgo), const RTM_F_NOTIFY = 256 pkg syscall (linux-386-cgo), const RTM_F_PREFIX = 2048 pkg syscall (linux-386-cgo), const RTM_GETACTION = 50 pkg syscall (linux-386-cgo), const RTM_GETADDR = 22 pkg syscall (linux-386-cgo), const RTM_GETADDRLABEL = 74 pkg syscall (linux-386-cgo), const RTM_GETANYCAST = 62 pkg syscall (linux-386-cgo), const RTM_GETDCB = 78 pkg syscall (linux-386-cgo), const RTM_GETLINK = 18 pkg syscall (linux-386-cgo), const RTM_GETMULTICAST = 58 pkg syscall (linux-386-cgo), const RTM_GETNEIGH = 30 pkg syscall (linux-386-cgo), const RTM_GETNEIGHTBL = 66 pkg syscall (linux-386-cgo), const RTM_GETQDISC = 38 pkg syscall (linux-386-cgo), const RTM_GETROUTE = 26 pkg syscall (linux-386-cgo), const RTM_GETRULE = 34 pkg syscall (linux-386-cgo), const RTM_GETTCLASS = 42 pkg syscall (linux-386-cgo), const RTM_GETTFILTER = 46 pkg syscall (linux-386-cgo), const RTM_MAX = 79 pkg syscall (linux-386-cgo), const RTM_NEWACTION = 48 pkg syscall (linux-386-cgo), const RTM_NEWADDR = 20 pkg syscall (linux-386-cgo), const RTM_NEWADDRLABEL = 72 pkg syscall (linux-386-cgo), const RTM_NEWLINK = 16 pkg syscall (linux-386-cgo), const RTM_NEWNDUSEROPT = 68 pkg syscall (linux-386-cgo), const RTM_NEWNEIGH = 28 pkg syscall (linux-386-cgo), const RTM_NEWNEIGHTBL = 64 pkg syscall (linux-386-cgo), const RTM_NEWPREFIX = 52 pkg syscall (linux-386-cgo), const RTM_NEWQDISC = 36 pkg syscall (linux-386-cgo), const RTM_NEWROUTE = 24 pkg syscall (linux-386-cgo), const RTM_NEWRULE = 32 pkg syscall (linux-386-cgo), const RTM_NEWTCLASS = 40 pkg syscall (linux-386-cgo), const RTM_NEWTFILTER = 44 pkg syscall (linux-386-cgo), const RTM_NR_FAMILIES = 16 pkg syscall (linux-386-cgo), const RTM_NR_MSGTYPES = 64 pkg syscall (linux-386-cgo), const RTM_SETDCB = 79 pkg syscall (linux-386-cgo), const RTM_SETLINK = 19 pkg syscall (linux-386-cgo), const RTM_SETNEIGHTBL = 67 pkg syscall (linux-386-cgo), const RTNH_ALIGNTO = 4 pkg syscall (linux-386-cgo), const RTNH_F_DEAD = 1 pkg syscall (linux-386-cgo), const RTNH_F_ONLINK = 4 pkg syscall (linux-386-cgo), const RTNH_F_PERVASIVE = 2 pkg syscall (linux-386-cgo), const RTNLGRP_IPV4_IFADDR = 5 pkg syscall (linux-386-cgo), const RTNLGRP_IPV4_IFADDR ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_IPV4_MROUTE = 6 pkg syscall (linux-386-cgo), const RTNLGRP_IPV4_MROUTE ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_IPV4_ROUTE = 7 pkg syscall (linux-386-cgo), const RTNLGRP_IPV4_ROUTE ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_IPV4_RULE = 8 pkg syscall (linux-386-cgo), const RTNLGRP_IPV4_RULE ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_IPV6_IFADDR = 9 pkg syscall (linux-386-cgo), const RTNLGRP_IPV6_IFADDR ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_IPV6_IFINFO = 12 pkg syscall (linux-386-cgo), const RTNLGRP_IPV6_IFINFO ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_IPV6_MROUTE = 10 pkg syscall (linux-386-cgo), const RTNLGRP_IPV6_MROUTE ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_IPV6_PREFIX = 18 pkg syscall (linux-386-cgo), const RTNLGRP_IPV6_PREFIX ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_IPV6_ROUTE = 11 pkg syscall (linux-386-cgo), const RTNLGRP_IPV6_ROUTE ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_IPV6_RULE = 19 pkg syscall (linux-386-cgo), const RTNLGRP_IPV6_RULE ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_LINK = 1 pkg syscall (linux-386-cgo), const RTNLGRP_LINK ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_ND_USEROPT = 20 pkg syscall (linux-386-cgo), const RTNLGRP_ND_USEROPT ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_NEIGH = 3 pkg syscall (linux-386-cgo), const RTNLGRP_NEIGH ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_NONE = 0 pkg syscall (linux-386-cgo), const RTNLGRP_NONE ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_NOTIFY = 2 pkg syscall (linux-386-cgo), const RTNLGRP_NOTIFY ideal-int pkg syscall (linux-386-cgo), const RTNLGRP_TC = 4 pkg syscall (linux-386-cgo), const RTNLGRP_TC ideal-int pkg syscall (linux-386-cgo), const RTN_ANYCAST = 4 pkg syscall (linux-386-cgo), const RTN_BLACKHOLE = 6 pkg syscall (linux-386-cgo), const RTN_BROADCAST = 3 pkg syscall (linux-386-cgo), const RTN_LOCAL = 2 pkg syscall (linux-386-cgo), const RTN_MAX = 11 pkg syscall (linux-386-cgo), const RTN_MULTICAST = 5 pkg syscall (linux-386-cgo), const RTN_NAT = 10 pkg syscall (linux-386-cgo), const RTN_PROHIBIT = 8 pkg syscall (linux-386-cgo), const RTN_THROW = 9 pkg syscall (linux-386-cgo), const RTN_UNICAST = 1 pkg syscall (linux-386-cgo), const RTN_UNREACHABLE = 7 pkg syscall (linux-386-cgo), const RTN_UNSPEC = 0 pkg syscall (linux-386-cgo), const RTN_XRESOLVE = 11 pkg syscall (linux-386-cgo), const RTPROT_BIRD = 12 pkg syscall (linux-386-cgo), const RTPROT_BOOT = 3 pkg syscall (linux-386-cgo), const RTPROT_DHCP = 16 pkg syscall (linux-386-cgo), const RTPROT_DNROUTED = 13 pkg syscall (linux-386-cgo), const RTPROT_GATED = 8 pkg syscall (linux-386-cgo), const RTPROT_KERNEL = 2 pkg syscall (linux-386-cgo), const RTPROT_MRT = 10 pkg syscall (linux-386-cgo), const RTPROT_NTK = 15 pkg syscall (linux-386-cgo), const RTPROT_RA = 9 pkg syscall (linux-386-cgo), const RTPROT_REDIRECT = 1 pkg syscall (linux-386-cgo), const RTPROT_STATIC = 4 pkg syscall (linux-386-cgo), const RTPROT_UNSPEC = 0 pkg syscall (linux-386-cgo), const RTPROT_XORP = 14 pkg syscall (linux-386-cgo), const RTPROT_ZEBRA = 11 pkg syscall (linux-386-cgo), const RT_CLASS_DEFAULT = 253 pkg syscall (linux-386-cgo), const RT_CLASS_LOCAL = 255 pkg syscall (linux-386-cgo), const RT_CLASS_MAIN = 254 pkg syscall (linux-386-cgo), const RT_CLASS_MAX = 255 pkg syscall (linux-386-cgo), const RT_CLASS_UNSPEC = 0 pkg syscall (linux-386-cgo), const RT_SCOPE_HOST = 254 pkg syscall (linux-386-cgo), const RT_SCOPE_LINK = 253 pkg syscall (linux-386-cgo), const RT_SCOPE_NOWHERE = 255 pkg syscall (linux-386-cgo), const RT_SCOPE_SITE = 200 pkg syscall (linux-386-cgo), const RT_SCOPE_UNIVERSE = 0 pkg syscall (linux-386-cgo), const RT_TABLE_COMPAT = 252 pkg syscall (linux-386-cgo), const RT_TABLE_DEFAULT = 253 pkg syscall (linux-386-cgo), const RT_TABLE_LOCAL = 255 pkg syscall (linux-386-cgo), const RT_TABLE_MAIN = 254 pkg syscall (linux-386-cgo), const RT_TABLE_MAX = 4294967295 pkg syscall (linux-386-cgo), const RT_TABLE_UNSPEC = 0 pkg syscall (linux-386-cgo), const RUSAGE_CHILDREN = -1 pkg syscall (linux-386-cgo), const RUSAGE_SELF = 0 pkg syscall (linux-386-cgo), const RUSAGE_THREAD = 1 pkg syscall (linux-386-cgo), const SCM_CREDENTIALS = 2 pkg syscall (linux-386-cgo), const SCM_RIGHTS = 1 pkg syscall (linux-386-cgo), const SCM_TIMESTAMP = 29 pkg syscall (linux-386-cgo), const SCM_TIMESTAMPING = 37 pkg syscall (linux-386-cgo), const SCM_TIMESTAMPNS = 35 pkg syscall (linux-386-cgo), const SIGBUS = 7 pkg syscall (linux-386-cgo), const SIGCHLD = 17 pkg syscall (linux-386-cgo), const SIGCLD = 17 pkg syscall (linux-386-cgo), const SIGCONT = 18 pkg syscall (linux-386-cgo), const SIGIO = 29 pkg syscall (linux-386-cgo), const SIGIOT = 6 pkg syscall (linux-386-cgo), const SIGPOLL = 29 pkg syscall (linux-386-cgo), const SIGPROF = 27 pkg syscall (linux-386-cgo), const SIGPWR = 30 pkg syscall (linux-386-cgo), const SIGSTKFLT = 16 pkg syscall (linux-386-cgo), const SIGSTOP = 19 pkg syscall (linux-386-cgo), const SIGSYS = 31 pkg syscall (linux-386-cgo), const SIGTSTP = 20 pkg syscall (linux-386-cgo), const SIGTTIN = 21 pkg syscall (linux-386-cgo), const SIGTTOU = 22 pkg syscall (linux-386-cgo), const SIGUNUSED = 31 pkg syscall (linux-386-cgo), const SIGURG = 23 pkg syscall (linux-386-cgo), const SIGUSR1 = 10 pkg syscall (linux-386-cgo), const SIGUSR2 = 12 pkg syscall (linux-386-cgo), const SIGVTALRM = 26 pkg syscall (linux-386-cgo), const SIGWINCH = 28 pkg syscall (linux-386-cgo), const SIGXCPU = 24 pkg syscall (linux-386-cgo), const SIGXFSZ = 25 pkg syscall (linux-386-cgo), const SIOCADDDLCI = 35200 pkg syscall (linux-386-cgo), const SIOCADDMULTI = 35121 pkg syscall (linux-386-cgo), const SIOCADDRT = 35083 pkg syscall (linux-386-cgo), const SIOCATMARK = 35077 pkg syscall (linux-386-cgo), const SIOCDARP = 35155 pkg syscall (linux-386-cgo), const SIOCDELDLCI = 35201 pkg syscall (linux-386-cgo), const SIOCDELMULTI = 35122 pkg syscall (linux-386-cgo), const SIOCDELRT = 35084 pkg syscall (linux-386-cgo), const SIOCDEVPRIVATE = 35312 pkg syscall (linux-386-cgo), const SIOCDIFADDR = 35126 pkg syscall (linux-386-cgo), const SIOCDRARP = 35168 pkg syscall (linux-386-cgo), const SIOCGARP = 35156 pkg syscall (linux-386-cgo), const SIOCGIFADDR = 35093 pkg syscall (linux-386-cgo), const SIOCGIFBR = 35136 pkg syscall (linux-386-cgo), const SIOCGIFBRDADDR = 35097 pkg syscall (linux-386-cgo), const SIOCGIFCONF = 35090 pkg syscall (linux-386-cgo), const SIOCGIFCOUNT = 35128 pkg syscall (linux-386-cgo), const SIOCGIFDSTADDR = 35095 pkg syscall (linux-386-cgo), const SIOCGIFENCAP = 35109 pkg syscall (linux-386-cgo), const SIOCGIFFLAGS = 35091 pkg syscall (linux-386-cgo), const SIOCGIFHWADDR = 35111 pkg syscall (linux-386-cgo), const SIOCGIFINDEX = 35123 pkg syscall (linux-386-cgo), const SIOCGIFMAP = 35184 pkg syscall (linux-386-cgo), const SIOCGIFMEM = 35103 pkg syscall (linux-386-cgo), const SIOCGIFMETRIC = 35101 pkg syscall (linux-386-cgo), const SIOCGIFMTU = 35105 pkg syscall (linux-386-cgo), const SIOCGIFNAME = 35088 pkg syscall (linux-386-cgo), const SIOCGIFNETMASK = 35099 pkg syscall (linux-386-cgo), const SIOCGIFPFLAGS = 35125 pkg syscall (linux-386-cgo), const SIOCGIFSLAVE = 35113 pkg syscall (linux-386-cgo), const SIOCGIFTXQLEN = 35138 pkg syscall (linux-386-cgo), const SIOCGPGRP = 35076 pkg syscall (linux-386-cgo), const SIOCGRARP = 35169 pkg syscall (linux-386-cgo), const SIOCGSTAMP = 35078 pkg syscall (linux-386-cgo), const SIOCGSTAMPNS = 35079 pkg syscall (linux-386-cgo), const SIOCPROTOPRIVATE = 35296 pkg syscall (linux-386-cgo), const SIOCRTMSG = 35085 pkg syscall (linux-386-cgo), const SIOCSARP = 35157 pkg syscall (linux-386-cgo), const SIOCSIFADDR = 35094 pkg syscall (linux-386-cgo), const SIOCSIFBR = 35137 pkg syscall (linux-386-cgo), const SIOCSIFBRDADDR = 35098 pkg syscall (linux-386-cgo), const SIOCSIFDSTADDR = 35096 pkg syscall (linux-386-cgo), const SIOCSIFENCAP = 35110 pkg syscall (linux-386-cgo), const SIOCSIFFLAGS = 35092 pkg syscall (linux-386-cgo), const SIOCSIFHWADDR = 35108 pkg syscall (linux-386-cgo), const SIOCSIFHWBROADCAST = 35127 pkg syscall (linux-386-cgo), const SIOCSIFLINK = 35089 pkg syscall (linux-386-cgo), const SIOCSIFMAP = 35185 pkg syscall (linux-386-cgo), const SIOCSIFMEM = 35104 pkg syscall (linux-386-cgo), const SIOCSIFMETRIC = 35102 pkg syscall (linux-386-cgo), const SIOCSIFMTU = 35106 pkg syscall (linux-386-cgo), const SIOCSIFNAME = 35107 pkg syscall (linux-386-cgo), const SIOCSIFNETMASK = 35100 pkg syscall (linux-386-cgo), const SIOCSIFPFLAGS = 35124 pkg syscall (linux-386-cgo), const SIOCSIFSLAVE = 35120 pkg syscall (linux-386-cgo), const SIOCSIFTXQLEN = 35139 pkg syscall (linux-386-cgo), const SIOCSPGRP = 35074 pkg syscall (linux-386-cgo), const SIOCSRARP = 35170 pkg syscall (linux-386-cgo), const SOCK_CLOEXEC = 524288 pkg syscall (linux-386-cgo), const SOCK_DCCP = 6 pkg syscall (linux-386-cgo), const SOCK_NONBLOCK = 2048 pkg syscall (linux-386-cgo), const SOCK_PACKET = 10 pkg syscall (linux-386-cgo), const SOCK_RDM = 4 pkg syscall (linux-386-cgo), const SOL_AAL = 265 pkg syscall (linux-386-cgo), const SOL_ATM = 264 pkg syscall (linux-386-cgo), const SOL_DECNET = 261 pkg syscall (linux-386-cgo), const SOL_ICMPV6 = 58 pkg syscall (linux-386-cgo), const SOL_IP = 0 pkg syscall (linux-386-cgo), const SOL_IPV6 = 41 pkg syscall (linux-386-cgo), const SOL_IRDA = 266 pkg syscall (linux-386-cgo), const SOL_PACKET = 263 pkg syscall (linux-386-cgo), const SOL_RAW = 255 pkg syscall (linux-386-cgo), const SOL_SOCKET = 1 pkg syscall (linux-386-cgo), const SOL_TCP = 6 pkg syscall (linux-386-cgo), const SOL_X25 = 262 pkg syscall (linux-386-cgo), const SOMAXCONN = 128 pkg syscall (linux-386-cgo), const SO_ACCEPTCONN = 30 pkg syscall (linux-386-cgo), const SO_ATTACH_FILTER = 26 pkg syscall (linux-386-cgo), const SO_BINDTODEVICE = 25 pkg syscall (linux-386-cgo), const SO_BROADCAST = 6 pkg syscall (linux-386-cgo), const SO_BSDCOMPAT = 14 pkg syscall (linux-386-cgo), const SO_DEBUG = 1 pkg syscall (linux-386-cgo), const SO_DETACH_FILTER = 27 pkg syscall (linux-386-cgo), const SO_DOMAIN = 39 pkg syscall (linux-386-cgo), const SO_DONTROUTE = 5 pkg syscall (linux-386-cgo), const SO_ERROR = 4 pkg syscall (linux-386-cgo), const SO_KEEPALIVE = 9 pkg syscall (linux-386-cgo), const SO_LINGER = 13 pkg syscall (linux-386-cgo), const SO_MARK = 36 pkg syscall (linux-386-cgo), const SO_NO_CHECK = 11 pkg syscall (linux-386-cgo), const SO_OOBINLINE = 10 pkg syscall (linux-386-cgo), const SO_PASSCRED = 16 pkg syscall (linux-386-cgo), const SO_PASSSEC = 34 pkg syscall (linux-386-cgo), const SO_PEERCRED = 17 pkg syscall (linux-386-cgo), const SO_PEERNAME = 28 pkg syscall (linux-386-cgo), const SO_PEERSEC = 31 pkg syscall (linux-386-cgo), const SO_PRIORITY = 12 pkg syscall (linux-386-cgo), const SO_PROTOCOL = 38 pkg syscall (linux-386-cgo), const SO_RCVBUF = 8 pkg syscall (linux-386-cgo), const SO_RCVBUFFORCE = 33 pkg syscall (linux-386-cgo), const SO_RCVLOWAT = 18 pkg syscall (linux-386-cgo), const SO_RCVTIMEO = 20 pkg syscall (linux-386-cgo), const SO_REUSEADDR = 2 pkg syscall (linux-386-cgo), const SO_RXQ_OVFL = 40 pkg syscall (linux-386-cgo), const SO_SECURITY_AUTHENTICATION = 22 pkg syscall (linux-386-cgo), const SO_SECURITY_ENCRYPTION_NETWORK = 24 pkg syscall (linux-386-cgo), const SO_SECURITY_ENCRYPTION_TRANSPORT = 23 pkg syscall (linux-386-cgo), const SO_SNDBUF = 7 pkg syscall (linux-386-cgo), const SO_SNDBUFFORCE = 32 pkg syscall (linux-386-cgo), const SO_SNDLOWAT = 19 pkg syscall (linux-386-cgo), const SO_SNDTIMEO = 21 pkg syscall (linux-386-cgo), const SO_TIMESTAMP = 29 pkg syscall (linux-386-cgo), const SO_TIMESTAMPING = 37 pkg syscall (linux-386-cgo), const SO_TIMESTAMPNS = 35 pkg syscall (linux-386-cgo), const SO_TYPE = 3 pkg syscall (linux-386-cgo), const SYS_ACCESS = 33 pkg syscall (linux-386-cgo), const SYS_ACCT = 51 pkg syscall (linux-386-cgo), const SYS_ADD_KEY = 286 pkg syscall (linux-386-cgo), const SYS_ADJTIMEX = 124 pkg syscall (linux-386-cgo), const SYS_AFS_SYSCALL = 137 pkg syscall (linux-386-cgo), const SYS_ALARM = 27 pkg syscall (linux-386-cgo), const SYS_BDFLUSH = 134 pkg syscall (linux-386-cgo), const SYS_BREAK = 17 pkg syscall (linux-386-cgo), const SYS_BRK = 45 pkg syscall (linux-386-cgo), const SYS_CAPGET = 184 pkg syscall (linux-386-cgo), const SYS_CAPSET = 185 pkg syscall (linux-386-cgo), const SYS_CHDIR = 12 pkg syscall (linux-386-cgo), const SYS_CHMOD = 15 pkg syscall (linux-386-cgo), const SYS_CHOWN = 182 pkg syscall (linux-386-cgo), const SYS_CHOWN32 = 212 pkg syscall (linux-386-cgo), const SYS_CHROOT = 61 pkg syscall (linux-386-cgo), const SYS_CLOCK_GETRES = 266 pkg syscall (linux-386-cgo), const SYS_CLOCK_GETTIME = 265 pkg syscall (linux-386-cgo), const SYS_CLOCK_NANOSLEEP = 267 pkg syscall (linux-386-cgo), const SYS_CLOCK_SETTIME = 264 pkg syscall (linux-386-cgo), const SYS_CLONE = 120 pkg syscall (linux-386-cgo), const SYS_CLOSE = 6 pkg syscall (linux-386-cgo), const SYS_CREAT = 8 pkg syscall (linux-386-cgo), const SYS_CREATE_MODULE = 127 pkg syscall (linux-386-cgo), const SYS_DELETE_MODULE = 129 pkg syscall (linux-386-cgo), const SYS_DUP = 41 pkg syscall (linux-386-cgo), const SYS_DUP2 = 63 pkg syscall (linux-386-cgo), const SYS_DUP3 = 330 pkg syscall (linux-386-cgo), const SYS_EPOLL_CREATE = 254 pkg syscall (linux-386-cgo), const SYS_EPOLL_CREATE1 = 329 pkg syscall (linux-386-cgo), const SYS_EPOLL_CTL = 255 pkg syscall (linux-386-cgo), const SYS_EPOLL_PWAIT = 319 pkg syscall (linux-386-cgo), const SYS_EPOLL_WAIT = 256 pkg syscall (linux-386-cgo), const SYS_EVENTFD = 323 pkg syscall (linux-386-cgo), const SYS_EVENTFD2 = 328 pkg syscall (linux-386-cgo), const SYS_EXECVE = 11 pkg syscall (linux-386-cgo), const SYS_EXIT = 1 pkg syscall (linux-386-cgo), const SYS_EXIT_GROUP = 252 pkg syscall (linux-386-cgo), const SYS_FACCESSAT = 307 pkg syscall (linux-386-cgo), const SYS_FADVISE64 = 250 pkg syscall (linux-386-cgo), const SYS_FADVISE64_64 = 272 pkg syscall (linux-386-cgo), const SYS_FALLOCATE = 324 pkg syscall (linux-386-cgo), const SYS_FANOTIFY_INIT = 338 pkg syscall (linux-386-cgo), const SYS_FANOTIFY_MARK = 339 pkg syscall (linux-386-cgo), const SYS_FCHDIR = 133 pkg syscall (linux-386-cgo), const SYS_FCHMOD = 94 pkg syscall (linux-386-cgo), const SYS_FCHMODAT = 306 pkg syscall (linux-386-cgo), const SYS_FCHOWN = 95 pkg syscall (linux-386-cgo), const SYS_FCHOWN32 = 207 pkg syscall (linux-386-cgo), const SYS_FCHOWNAT = 298 pkg syscall (linux-386-cgo), const SYS_FCNTL = 55 pkg syscall (linux-386-cgo), const SYS_FCNTL64 = 221 pkg syscall (linux-386-cgo), const SYS_FDATASYNC = 148 pkg syscall (linux-386-cgo), const SYS_FGETXATTR = 231 pkg syscall (linux-386-cgo), const SYS_FLISTXATTR = 234 pkg syscall (linux-386-cgo), const SYS_FLOCK = 143 pkg syscall (linux-386-cgo), const SYS_FORK = 2 pkg syscall (linux-386-cgo), const SYS_FREMOVEXATTR = 237 pkg syscall (linux-386-cgo), const SYS_FSETXATTR = 228 pkg syscall (linux-386-cgo), const SYS_FSTAT = 108 pkg syscall (linux-386-cgo), const SYS_FSTAT64 = 197 pkg syscall (linux-386-cgo), const SYS_FSTATAT64 = 300 pkg syscall (linux-386-cgo), const SYS_FSTATFS = 100 pkg syscall (linux-386-cgo), const SYS_FSTATFS64 = 269 pkg syscall (linux-386-cgo), const SYS_FSYNC = 118 pkg syscall (linux-386-cgo), const SYS_FTIME = 35 pkg syscall (linux-386-cgo), const SYS_FTRUNCATE = 93 pkg syscall (linux-386-cgo), const SYS_FTRUNCATE64 = 194 pkg syscall (linux-386-cgo), const SYS_FUTEX = 240 pkg syscall (linux-386-cgo), const SYS_FUTIMESAT = 299 pkg syscall (linux-386-cgo), const SYS_GETCPU = 318 pkg syscall (linux-386-cgo), const SYS_GETCWD = 183 pkg syscall (linux-386-cgo), const SYS_GETDENTS = 141 pkg syscall (linux-386-cgo), const SYS_GETDENTS64 = 220 pkg syscall (linux-386-cgo), const SYS_GETEGID = 50 pkg syscall (linux-386-cgo), const SYS_GETEGID32 = 202 pkg syscall (linux-386-cgo), const SYS_GETEUID = 49 pkg syscall (linux-386-cgo), const SYS_GETEUID32 = 201 pkg syscall (linux-386-cgo), const SYS_GETGID = 47 pkg syscall (linux-386-cgo), const SYS_GETGID32 = 200 pkg syscall (linux-386-cgo), const SYS_GETGROUPS = 80 pkg syscall (linux-386-cgo), const SYS_GETGROUPS32 = 205 pkg syscall (linux-386-cgo), const SYS_GETITIMER = 105 pkg syscall (linux-386-cgo), const SYS_GETPGID = 132 pkg syscall (linux-386-cgo), const SYS_GETPGRP = 65 pkg syscall (linux-386-cgo), const SYS_GETPID = 20 pkg syscall (linux-386-cgo), const SYS_GETPMSG = 188 pkg syscall (linux-386-cgo), const SYS_GETPPID = 64 pkg syscall (linux-386-cgo), const SYS_GETPRIORITY = 96 pkg syscall (linux-386-cgo), const SYS_GETRESGID = 171 pkg syscall (linux-386-cgo), const SYS_GETRESGID32 = 211 pkg syscall (linux-386-cgo), const SYS_GETRESUID = 165 pkg syscall (linux-386-cgo), const SYS_GETRESUID32 = 209 pkg syscall (linux-386-cgo), const SYS_GETRLIMIT = 76 pkg syscall (linux-386-cgo), const SYS_GETRUSAGE = 77 pkg syscall (linux-386-cgo), const SYS_GETSID = 147 pkg syscall (linux-386-cgo), const SYS_GETTID = 224 pkg syscall (linux-386-cgo), const SYS_GETTIMEOFDAY = 78 pkg syscall (linux-386-cgo), const SYS_GETUID = 24 pkg syscall (linux-386-cgo), const SYS_GETUID32 = 199 pkg syscall (linux-386-cgo), const SYS_GETXATTR = 229 pkg syscall (linux-386-cgo), const SYS_GET_KERNEL_SYMS = 130 pkg syscall (linux-386-cgo), const SYS_GET_MEMPOLICY = 275 pkg syscall (linux-386-cgo), const SYS_GET_ROBUST_LIST = 312 pkg syscall (linux-386-cgo), const SYS_GET_THREAD_AREA = 244 pkg syscall (linux-386-cgo), const SYS_GTTY = 32 pkg syscall (linux-386-cgo), const SYS_IDLE = 112 pkg syscall (linux-386-cgo), const SYS_INIT_MODULE = 128 pkg syscall (linux-386-cgo), const SYS_INOTIFY_ADD_WATCH = 292 pkg syscall (linux-386-cgo), const SYS_INOTIFY_INIT = 291 pkg syscall (linux-386-cgo), const SYS_INOTIFY_INIT1 = 332 pkg syscall (linux-386-cgo), const SYS_INOTIFY_RM_WATCH = 293 pkg syscall (linux-386-cgo), const SYS_IOCTL = 54 pkg syscall (linux-386-cgo), const SYS_IOPERM = 101 pkg syscall (linux-386-cgo), const SYS_IOPL = 110 pkg syscall (linux-386-cgo), const SYS_IOPRIO_GET = 290 pkg syscall (linux-386-cgo), const SYS_IOPRIO_SET = 289 pkg syscall (linux-386-cgo), const SYS_IO_CANCEL = 249 pkg syscall (linux-386-cgo), const SYS_IO_DESTROY = 246 pkg syscall (linux-386-cgo), const SYS_IO_GETEVENTS = 247 pkg syscall (linux-386-cgo), const SYS_IO_SETUP = 245 pkg syscall (linux-386-cgo), const SYS_IO_SUBMIT = 248 pkg syscall (linux-386-cgo), const SYS_IPC = 117 pkg syscall (linux-386-cgo), const SYS_KEXEC_LOAD = 283 pkg syscall (linux-386-cgo), const SYS_KEYCTL = 288 pkg syscall (linux-386-cgo), const SYS_KILL = 37 pkg syscall (linux-386-cgo), const SYS_LCHOWN = 16 pkg syscall (linux-386-cgo), const SYS_LCHOWN32 = 198 pkg syscall (linux-386-cgo), const SYS_LGETXATTR = 230 pkg syscall (linux-386-cgo), const SYS_LINK = 9 pkg syscall (linux-386-cgo), const SYS_LINKAT = 303 pkg syscall (linux-386-cgo), const SYS_LISTXATTR = 232 pkg syscall (linux-386-cgo), const SYS_LLISTXATTR = 233 pkg syscall (linux-386-cgo), const SYS_LOCK = 53 pkg syscall (linux-386-cgo), const SYS_LOOKUP_DCOOKIE = 253 pkg syscall (linux-386-cgo), const SYS_LREMOVEXATTR = 236 pkg syscall (linux-386-cgo), const SYS_LSEEK = 19 pkg syscall (linux-386-cgo), const SYS_LSETXATTR = 227 pkg syscall (linux-386-cgo), const SYS_LSTAT = 107 pkg syscall (linux-386-cgo), const SYS_LSTAT64 = 196 pkg syscall (linux-386-cgo), const SYS_MADVISE = 219 pkg syscall (linux-386-cgo), const SYS_MADVISE1 = 219 pkg syscall (linux-386-cgo), const SYS_MBIND = 274 pkg syscall (linux-386-cgo), const SYS_MIGRATE_PAGES = 294 pkg syscall (linux-386-cgo), const SYS_MINCORE = 218 pkg syscall (linux-386-cgo), const SYS_MKDIR = 39 pkg syscall (linux-386-cgo), const SYS_MKDIRAT = 296 pkg syscall (linux-386-cgo), const SYS_MKNOD = 14 pkg syscall (linux-386-cgo), const SYS_MKNODAT = 297 pkg syscall (linux-386-cgo), const SYS_MLOCK = 150 pkg syscall (linux-386-cgo), const SYS_MLOCKALL = 152 pkg syscall (linux-386-cgo), const SYS_MMAP = 90 pkg syscall (linux-386-cgo), const SYS_MMAP2 = 192 pkg syscall (linux-386-cgo), const SYS_MODIFY_LDT = 123 pkg syscall (linux-386-cgo), const SYS_MOUNT = 21 pkg syscall (linux-386-cgo), const SYS_MOVE_PAGES = 317 pkg syscall (linux-386-cgo), const SYS_MPROTECT = 125 pkg syscall (linux-386-cgo), const SYS_MPX = 56 pkg syscall (linux-386-cgo), const SYS_MQ_GETSETATTR = 282 pkg syscall (linux-386-cgo), const SYS_MQ_NOTIFY = 281 pkg syscall (linux-386-cgo), const SYS_MQ_OPEN = 277 pkg syscall (linux-386-cgo), const SYS_MQ_TIMEDRECEIVE = 280 pkg syscall (linux-386-cgo), const SYS_MQ_TIMEDSEND = 279 pkg syscall (linux-386-cgo), const SYS_MQ_UNLINK = 278 pkg syscall (linux-386-cgo), const SYS_MREMAP = 163 pkg syscall (linux-386-cgo), const SYS_MSYNC = 144 pkg syscall (linux-386-cgo), const SYS_MUNLOCK = 151 pkg syscall (linux-386-cgo), const SYS_MUNLOCKALL = 153 pkg syscall (linux-386-cgo), const SYS_MUNMAP = 91 pkg syscall (linux-386-cgo), const SYS_NANOSLEEP = 162 pkg syscall (linux-386-cgo), const SYS_NFSSERVCTL = 169 pkg syscall (linux-386-cgo), const SYS_NICE = 34 pkg syscall (linux-386-cgo), const SYS_OLDFSTAT = 28 pkg syscall (linux-386-cgo), const SYS_OLDLSTAT = 84 pkg syscall (linux-386-cgo), const SYS_OLDOLDUNAME = 59 pkg syscall (linux-386-cgo), const SYS_OLDSTAT = 18 pkg syscall (linux-386-cgo), const SYS_OLDUNAME = 109 pkg syscall (linux-386-cgo), const SYS_OPEN = 5 pkg syscall (linux-386-cgo), const SYS_OPENAT = 295 pkg syscall (linux-386-cgo), const SYS_PAUSE = 29 pkg syscall (linux-386-cgo), const SYS_PERF_EVENT_OPEN = 336 pkg syscall (linux-386-cgo), const SYS_PERSONALITY = 136 pkg syscall (linux-386-cgo), const SYS_PIPE = 42 pkg syscall (linux-386-cgo), const SYS_PIPE2 = 331 pkg syscall (linux-386-cgo), const SYS_PIVOT_ROOT = 217 pkg syscall (linux-386-cgo), const SYS_POLL = 168 pkg syscall (linux-386-cgo), const SYS_PPOLL = 309 pkg syscall (linux-386-cgo), const SYS_PRCTL = 172 pkg syscall (linux-386-cgo), const SYS_PREAD64 = 180 pkg syscall (linux-386-cgo), const SYS_PREADV = 333 pkg syscall (linux-386-cgo), const SYS_PRLIMIT64 = 340 pkg syscall (linux-386-cgo), const SYS_PROF = 44 pkg syscall (linux-386-cgo), const SYS_PROFIL = 98 pkg syscall (linux-386-cgo), const SYS_PSELECT6 = 308 pkg syscall (linux-386-cgo), const SYS_PTRACE = 26 pkg syscall (linux-386-cgo), const SYS_PUTPMSG = 189 pkg syscall (linux-386-cgo), const SYS_PWRITE64 = 181 pkg syscall (linux-386-cgo), const SYS_PWRITEV = 334 pkg syscall (linux-386-cgo), const SYS_QUERY_MODULE = 167 pkg syscall (linux-386-cgo), const SYS_QUOTACTL = 131 pkg syscall (linux-386-cgo), const SYS_READ = 3 pkg syscall (linux-386-cgo), const SYS_READAHEAD = 225 pkg syscall (linux-386-cgo), const SYS_READDIR = 89 pkg syscall (linux-386-cgo), const SYS_READLINK = 85 pkg syscall (linux-386-cgo), const SYS_READLINKAT = 305 pkg syscall (linux-386-cgo), const SYS_READV = 145 pkg syscall (linux-386-cgo), const SYS_REBOOT = 88 pkg syscall (linux-386-cgo), const SYS_RECVMMSG = 337 pkg syscall (linux-386-cgo), const SYS_REMAP_FILE_PAGES = 257 pkg syscall (linux-386-cgo), const SYS_REMOVEXATTR = 235 pkg syscall (linux-386-cgo), const SYS_RENAME = 38 pkg syscall (linux-386-cgo), const SYS_RENAMEAT = 302 pkg syscall (linux-386-cgo), const SYS_REQUEST_KEY = 287 pkg syscall (linux-386-cgo), const SYS_RESTART_SYSCALL = 0 pkg syscall (linux-386-cgo), const SYS_RMDIR = 40 pkg syscall (linux-386-cgo), const SYS_RT_SIGACTION = 174 pkg syscall (linux-386-cgo), const SYS_RT_SIGPENDING = 176 pkg syscall (linux-386-cgo), const SYS_RT_SIGPROCMASK = 175 pkg syscall (linux-386-cgo), const SYS_RT_SIGQUEUEINFO = 178 pkg syscall (linux-386-cgo), const SYS_RT_SIGRETURN = 173 pkg syscall (linux-386-cgo), const SYS_RT_SIGSUSPEND = 179 pkg syscall (linux-386-cgo), const SYS_RT_SIGTIMEDWAIT = 177 pkg syscall (linux-386-cgo), const SYS_RT_TGSIGQUEUEINFO = 335 pkg syscall (linux-386-cgo), const SYS_SCHED_GETAFFINITY = 242 pkg syscall (linux-386-cgo), const SYS_SCHED_GETPARAM = 155 pkg syscall (linux-386-cgo), const SYS_SCHED_GETSCHEDULER = 157 pkg syscall (linux-386-cgo), const SYS_SCHED_GET_PRIORITY_MAX = 159 pkg syscall (linux-386-cgo), const SYS_SCHED_GET_PRIORITY_MIN = 160 pkg syscall (linux-386-cgo), const SYS_SCHED_RR_GET_INTERVAL = 161 pkg syscall (linux-386-cgo), const SYS_SCHED_SETAFFINITY = 241 pkg syscall (linux-386-cgo), const SYS_SCHED_SETPARAM = 154 pkg syscall (linux-386-cgo), const SYS_SCHED_SETSCHEDULER = 156 pkg syscall (linux-386-cgo), const SYS_SCHED_YIELD = 158 pkg syscall (linux-386-cgo), const SYS_SELECT = 82 pkg syscall (linux-386-cgo), const SYS_SENDFILE = 187 pkg syscall (linux-386-cgo), const SYS_SENDFILE64 = 239 pkg syscall (linux-386-cgo), const SYS_SETDOMAINNAME = 121 pkg syscall (linux-386-cgo), const SYS_SETFSGID = 139 pkg syscall (linux-386-cgo), const SYS_SETFSGID32 = 216 pkg syscall (linux-386-cgo), const SYS_SETFSUID = 138 pkg syscall (linux-386-cgo), const SYS_SETFSUID32 = 215 pkg syscall (linux-386-cgo), const SYS_SETGID = 46 pkg syscall (linux-386-cgo), const SYS_SETGID32 = 214 pkg syscall (linux-386-cgo), const SYS_SETGROUPS = 81 pkg syscall (linux-386-cgo), const SYS_SETGROUPS32 = 206 pkg syscall (linux-386-cgo), const SYS_SETHOSTNAME = 74 pkg syscall (linux-386-cgo), const SYS_SETITIMER = 104 pkg syscall (linux-386-cgo), const SYS_SETPGID = 57 pkg syscall (linux-386-cgo), const SYS_SETPRIORITY = 97 pkg syscall (linux-386-cgo), const SYS_SETREGID = 71 pkg syscall (linux-386-cgo), const SYS_SETREGID32 = 204 pkg syscall (linux-386-cgo), const SYS_SETRESGID = 170 pkg syscall (linux-386-cgo), const SYS_SETRESGID32 = 210 pkg syscall (linux-386-cgo), const SYS_SETRESUID = 164 pkg syscall (linux-386-cgo), const SYS_SETRESUID32 = 208 pkg syscall (linux-386-cgo), const SYS_SETREUID = 70 pkg syscall (linux-386-cgo), const SYS_SETREUID32 = 203 pkg syscall (linux-386-cgo), const SYS_SETRLIMIT = 75 pkg syscall (linux-386-cgo), const SYS_SETSID = 66 pkg syscall (linux-386-cgo), const SYS_SETTIMEOFDAY = 79 pkg syscall (linux-386-cgo), const SYS_SETUID = 23 pkg syscall (linux-386-cgo), const SYS_SETUID32 = 213 pkg syscall (linux-386-cgo), const SYS_SETXATTR = 226 pkg syscall (linux-386-cgo), const SYS_SET_MEMPOLICY = 276 pkg syscall (linux-386-cgo), const SYS_SET_ROBUST_LIST = 311 pkg syscall (linux-386-cgo), const SYS_SET_THREAD_AREA = 243 pkg syscall (linux-386-cgo), const SYS_SET_TID_ADDRESS = 258 pkg syscall (linux-386-cgo), const SYS_SGETMASK = 68 pkg syscall (linux-386-cgo), const SYS_SIGACTION = 67 pkg syscall (linux-386-cgo), const SYS_SIGALTSTACK = 186 pkg syscall (linux-386-cgo), const SYS_SIGNAL = 48 pkg syscall (linux-386-cgo), const SYS_SIGNALFD = 321 pkg syscall (linux-386-cgo), const SYS_SIGNALFD4 = 327 pkg syscall (linux-386-cgo), const SYS_SIGPENDING = 73 pkg syscall (linux-386-cgo), const SYS_SIGPROCMASK = 126 pkg syscall (linux-386-cgo), const SYS_SIGRETURN = 119 pkg syscall (linux-386-cgo), const SYS_SIGSUSPEND = 72 pkg syscall (linux-386-cgo), const SYS_SOCKETCALL = 102 pkg syscall (linux-386-cgo), const SYS_SPLICE = 313 pkg syscall (linux-386-cgo), const SYS_SSETMASK = 69 pkg syscall (linux-386-cgo), const SYS_STAT = 106 pkg syscall (linux-386-cgo), const SYS_STAT64 = 195 pkg syscall (linux-386-cgo), const SYS_STATFS = 99 pkg syscall (linux-386-cgo), const SYS_STATFS64 = 268 pkg syscall (linux-386-cgo), const SYS_STIME = 25 pkg syscall (linux-386-cgo), const SYS_STTY = 31 pkg syscall (linux-386-cgo), const SYS_SWAPOFF = 115 pkg syscall (linux-386-cgo), const SYS_SWAPON = 87 pkg syscall (linux-386-cgo), const SYS_SYMLINK = 83 pkg syscall (linux-386-cgo), const SYS_SYMLINKAT = 304 pkg syscall (linux-386-cgo), const SYS_SYNC = 36 pkg syscall (linux-386-cgo), const SYS_SYNC_FILE_RANGE = 314 pkg syscall (linux-386-cgo), const SYS_SYSFS = 135 pkg syscall (linux-386-cgo), const SYS_SYSINFO = 116 pkg syscall (linux-386-cgo), const SYS_SYSLOG = 103 pkg syscall (linux-386-cgo), const SYS_TEE = 315 pkg syscall (linux-386-cgo), const SYS_TGKILL = 270 pkg syscall (linux-386-cgo), const SYS_TIME = 13 pkg syscall (linux-386-cgo), const SYS_TIMERFD_CREATE = 322 pkg syscall (linux-386-cgo), const SYS_TIMERFD_GETTIME = 326 pkg syscall (linux-386-cgo), const SYS_TIMERFD_SETTIME = 325 pkg syscall (linux-386-cgo), const SYS_TIMER_CREATE = 259 pkg syscall (linux-386-cgo), const SYS_TIMER_DELETE = 263 pkg syscall (linux-386-cgo), const SYS_TIMER_GETOVERRUN = 262 pkg syscall (linux-386-cgo), const SYS_TIMER_GETTIME = 261 pkg syscall (linux-386-cgo), const SYS_TIMER_SETTIME = 260 pkg syscall (linux-386-cgo), const SYS_TIMES = 43 pkg syscall (linux-386-cgo), const SYS_TKILL = 238 pkg syscall (linux-386-cgo), const SYS_TRUNCATE = 92 pkg syscall (linux-386-cgo), const SYS_TRUNCATE64 = 193 pkg syscall (linux-386-cgo), const SYS_UGETRLIMIT = 191 pkg syscall (linux-386-cgo), const SYS_ULIMIT = 58 pkg syscall (linux-386-cgo), const SYS_UMASK = 60 pkg syscall (linux-386-cgo), const SYS_UMOUNT = 22 pkg syscall (linux-386-cgo), const SYS_UMOUNT2 = 52 pkg syscall (linux-386-cgo), const SYS_UNAME = 122 pkg syscall (linux-386-cgo), const SYS_UNLINK = 10 pkg syscall (linux-386-cgo), const SYS_UNLINKAT = 301 pkg syscall (linux-386-cgo), const SYS_UNSHARE = 310 pkg syscall (linux-386-cgo), const SYS_USELIB = 86 pkg syscall (linux-386-cgo), const SYS_USTAT = 62 pkg syscall (linux-386-cgo), const SYS_UTIME = 30 pkg syscall (linux-386-cgo), const SYS_UTIMENSAT = 320 pkg syscall (linux-386-cgo), const SYS_UTIMES = 271 pkg syscall (linux-386-cgo), const SYS_VFORK = 190 pkg syscall (linux-386-cgo), const SYS_VHANGUP = 111 pkg syscall (linux-386-cgo), const SYS_VM86 = 166 pkg syscall (linux-386-cgo), const SYS_VM86OLD = 113 pkg syscall (linux-386-cgo), const SYS_VMSPLICE = 316 pkg syscall (linux-386-cgo), const SYS_VSERVER = 273 pkg syscall (linux-386-cgo), const SYS_WAIT4 = 114 pkg syscall (linux-386-cgo), const SYS_WAITID = 284 pkg syscall (linux-386-cgo), const SYS_WAITPID = 7 pkg syscall (linux-386-cgo), const SYS_WRITE = 4 pkg syscall (linux-386-cgo), const SYS_WRITEV = 146 pkg syscall (linux-386-cgo), const SYS__LLSEEK = 140 pkg syscall (linux-386-cgo), const SYS__NEWSELECT = 142 pkg syscall (linux-386-cgo), const SYS__SYSCTL = 149 pkg syscall (linux-386-cgo), const S_BLKSIZE = 512 pkg syscall (linux-386-cgo), const S_IEXEC = 64 pkg syscall (linux-386-cgo), const S_IFMT = 61440 pkg syscall (linux-386-cgo), const S_IREAD = 256 pkg syscall (linux-386-cgo), const S_IRGRP = 32 pkg syscall (linux-386-cgo), const S_IROTH = 4 pkg syscall (linux-386-cgo), const S_IRWXG = 56 pkg syscall (linux-386-cgo), const S_IRWXO = 7 pkg syscall (linux-386-cgo), const S_IRWXU = 448 pkg syscall (linux-386-cgo), const S_IWGRP = 16 pkg syscall (linux-386-cgo), const S_IWOTH = 2 pkg syscall (linux-386-cgo), const S_IWRITE = 128 pkg syscall (linux-386-cgo), const S_IXGRP = 8 pkg syscall (linux-386-cgo), const S_IXOTH = 1 pkg syscall (linux-386-cgo), const SizeofCmsghdr = 12 pkg syscall (linux-386-cgo), const SizeofIPMreq = 8 pkg syscall (linux-386-cgo), const SizeofIPMreqn = 12 pkg syscall (linux-386-cgo), const SizeofIPv6Mreq = 20 pkg syscall (linux-386-cgo), const SizeofIfAddrmsg = 8 pkg syscall (linux-386-cgo), const SizeofIfInfomsg = 16 pkg syscall (linux-386-cgo), const SizeofInet4Pktinfo = 12 pkg syscall (linux-386-cgo), const SizeofInet6Pktinfo = 20 pkg syscall (linux-386-cgo), const SizeofInotifyEvent = 16 pkg syscall (linux-386-cgo), const SizeofLinger = 8 pkg syscall (linux-386-cgo), const SizeofMsghdr = 28 pkg syscall (linux-386-cgo), const SizeofNlAttr = 4 pkg syscall (linux-386-cgo), const SizeofNlMsgerr = 20 pkg syscall (linux-386-cgo), const SizeofNlMsghdr = 16 pkg syscall (linux-386-cgo), const SizeofRtAttr = 4 pkg syscall (linux-386-cgo), const SizeofRtGenmsg = 1 pkg syscall (linux-386-cgo), const SizeofRtMsg = 12 pkg syscall (linux-386-cgo), const SizeofRtNexthop = 8 pkg syscall (linux-386-cgo), const SizeofSockFilter = 8 pkg syscall (linux-386-cgo), const SizeofSockFprog = 8 pkg syscall (linux-386-cgo), const SizeofSockaddrAny = 112 pkg syscall (linux-386-cgo), const SizeofSockaddrInet4 = 16 pkg syscall (linux-386-cgo), const SizeofSockaddrInet6 = 28 pkg syscall (linux-386-cgo), const SizeofSockaddrLinklayer = 20 pkg syscall (linux-386-cgo), const SizeofSockaddrNetlink = 12 pkg syscall (linux-386-cgo), const SizeofSockaddrUnix = 110 pkg syscall (linux-386-cgo), const SizeofTCPInfo = 104 pkg syscall (linux-386-cgo), const SizeofTCPInfo ideal-int pkg syscall (linux-386-cgo), const SizeofUcred = 12 pkg syscall (linux-386-cgo), const TCGETS = 21505 pkg syscall (linux-386-cgo), const TCP_CONGESTION = 13 pkg syscall (linux-386-cgo), const TCP_CORK = 3 pkg syscall (linux-386-cgo), const TCP_DEFER_ACCEPT = 9 pkg syscall (linux-386-cgo), const TCP_INFO = 11 pkg syscall (linux-386-cgo), const TCP_KEEPCNT = 6 pkg syscall (linux-386-cgo), const TCP_KEEPIDLE = 4 pkg syscall (linux-386-cgo), const TCP_KEEPINTVL = 5 pkg syscall (linux-386-cgo), const TCP_LINGER2 = 8 pkg syscall (linux-386-cgo), const TCP_MAXSEG = 2 pkg syscall (linux-386-cgo), const TCP_MAXWIN = 65535 pkg syscall (linux-386-cgo), const TCP_MAX_WINSHIFT = 14 pkg syscall (linux-386-cgo), const TCP_MD5SIG = 14 pkg syscall (linux-386-cgo), const TCP_MD5SIG_MAXKEYLEN = 80 pkg syscall (linux-386-cgo), const TCP_MSS = 512 pkg syscall (linux-386-cgo), const TCP_QUICKACK = 12 pkg syscall (linux-386-cgo), const TCP_SYNCNT = 7 pkg syscall (linux-386-cgo), const TCP_WINDOW_CLAMP = 10 pkg syscall (linux-386-cgo), const TCSETS = 21506 pkg syscall (linux-386-cgo), const TIOCCBRK = 21544 pkg syscall (linux-386-cgo), const TIOCCONS = 21533 pkg syscall (linux-386-cgo), const TIOCEXCL = 21516 pkg syscall (linux-386-cgo), const TIOCGDEV = 2147767346 pkg syscall (linux-386-cgo), const TIOCGETD = 21540 pkg syscall (linux-386-cgo), const TIOCGICOUNT = 21597 pkg syscall (linux-386-cgo), const TIOCGLCKTRMIOS = 21590 pkg syscall (linux-386-cgo), const TIOCGPGRP = 21519 pkg syscall (linux-386-cgo), const TIOCGPTN = 2147767344 pkg syscall (linux-386-cgo), const TIOCGRS485 = 21550 pkg syscall (linux-386-cgo), const TIOCGSERIAL = 21534 pkg syscall (linux-386-cgo), const TIOCGSID = 21545 pkg syscall (linux-386-cgo), const TIOCGSOFTCAR = 21529 pkg syscall (linux-386-cgo), const TIOCGWINSZ = 21523 pkg syscall (linux-386-cgo), const TIOCINQ = 21531 pkg syscall (linux-386-cgo), const TIOCLINUX = 21532 pkg syscall (linux-386-cgo), const TIOCMBIC = 21527 pkg syscall (linux-386-cgo), const TIOCMBIS = 21526 pkg syscall (linux-386-cgo), const TIOCMGET = 21525 pkg syscall (linux-386-cgo), const TIOCMIWAIT = 21596 pkg syscall (linux-386-cgo), const TIOCMSET = 21528 pkg syscall (linux-386-cgo), const TIOCM_CAR = 64 pkg syscall (linux-386-cgo), const TIOCM_CD = 64 pkg syscall (linux-386-cgo), const TIOCM_CTS = 32 pkg syscall (linux-386-cgo), const TIOCM_DSR = 256 pkg syscall (linux-386-cgo), const TIOCM_DTR = 2 pkg syscall (linux-386-cgo), const TIOCM_LE = 1 pkg syscall (linux-386-cgo), const TIOCM_RI = 128 pkg syscall (linux-386-cgo), const TIOCM_RNG = 128 pkg syscall (linux-386-cgo), const TIOCM_RTS = 4 pkg syscall (linux-386-cgo), const TIOCM_SR = 16 pkg syscall (linux-386-cgo), const TIOCM_ST = 8 pkg syscall (linux-386-cgo), const TIOCNOTTY = 21538 pkg syscall (linux-386-cgo), const TIOCNXCL = 21517 pkg syscall (linux-386-cgo), const TIOCOUTQ = 21521 pkg syscall (linux-386-cgo), const TIOCPKT = 21536 pkg syscall (linux-386-cgo), const TIOCPKT_DATA = 0 pkg syscall (linux-386-cgo), const TIOCPKT_DOSTOP = 32 pkg syscall (linux-386-cgo), const TIOCPKT_FLUSHREAD = 1 pkg syscall (linux-386-cgo), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (linux-386-cgo), const TIOCPKT_IOCTL = 64 pkg syscall (linux-386-cgo), const TIOCPKT_NOSTOP = 16 pkg syscall (linux-386-cgo), const TIOCPKT_START = 8 pkg syscall (linux-386-cgo), const TIOCPKT_STOP = 4 pkg syscall (linux-386-cgo), const TIOCSBRK = 21543 pkg syscall (linux-386-cgo), const TIOCSCTTY = 21518 pkg syscall (linux-386-cgo), const TIOCSERCONFIG = 21587 pkg syscall (linux-386-cgo), const TIOCSERGETLSR = 21593 pkg syscall (linux-386-cgo), const TIOCSERGETMULTI = 21594 pkg syscall (linux-386-cgo), const TIOCSERGSTRUCT = 21592 pkg syscall (linux-386-cgo), const TIOCSERGWILD = 21588 pkg syscall (linux-386-cgo), const TIOCSERSETMULTI = 21595 pkg syscall (linux-386-cgo), const TIOCSERSWILD = 21589 pkg syscall (linux-386-cgo), const TIOCSER_TEMT = 1 pkg syscall (linux-386-cgo), const TIOCSETD = 21539 pkg syscall (linux-386-cgo), const TIOCSIG = 1074025526 pkg syscall (linux-386-cgo), const TIOCSLCKTRMIOS = 21591 pkg syscall (linux-386-cgo), const TIOCSPGRP = 21520 pkg syscall (linux-386-cgo), const TIOCSPTLCK = 1074025521 pkg syscall (linux-386-cgo), const TIOCSRS485 = 21551 pkg syscall (linux-386-cgo), const TIOCSSERIAL = 21535 pkg syscall (linux-386-cgo), const TIOCSSOFTCAR = 21530 pkg syscall (linux-386-cgo), const TIOCSTI = 21522 pkg syscall (linux-386-cgo), const TIOCSWINSZ = 21524 pkg syscall (linux-386-cgo), const TOSTOP = 256 pkg syscall (linux-386-cgo), const TUNATTACHFILTER = 1074287829 pkg syscall (linux-386-cgo), const TUNDETACHFILTER = 1074287830 pkg syscall (linux-386-cgo), const TUNGETFEATURES = 2147767503 pkg syscall (linux-386-cgo), const TUNGETIFF = 2147767506 pkg syscall (linux-386-cgo), const TUNGETSNDBUF = 2147767507 pkg syscall (linux-386-cgo), const TUNGETVNETHDRSZ = 2147767511 pkg syscall (linux-386-cgo), const TUNSETDEBUG = 1074025673 pkg syscall (linux-386-cgo), const TUNSETGROUP = 1074025678 pkg syscall (linux-386-cgo), const TUNSETIFF = 1074025674 pkg syscall (linux-386-cgo), const TUNSETLINK = 1074025677 pkg syscall (linux-386-cgo), const TUNSETNOCSUM = 1074025672 pkg syscall (linux-386-cgo), const TUNSETOFFLOAD = 1074025680 pkg syscall (linux-386-cgo), const TUNSETOWNER = 1074025676 pkg syscall (linux-386-cgo), const TUNSETPERSIST = 1074025675 pkg syscall (linux-386-cgo), const TUNSETSNDBUF = 1074025684 pkg syscall (linux-386-cgo), const TUNSETTXFILTER = 1074025681 pkg syscall (linux-386-cgo), const TUNSETVNETHDRSZ = 1074025688 pkg syscall (linux-386-cgo), const VDISCARD = 13 pkg syscall (linux-386-cgo), const VEOF = 4 pkg syscall (linux-386-cgo), const VEOL = 11 pkg syscall (linux-386-cgo), const VEOL2 = 16 pkg syscall (linux-386-cgo), const VERASE = 2 pkg syscall (linux-386-cgo), const VINTR = 0 pkg syscall (linux-386-cgo), const VKILL = 3 pkg syscall (linux-386-cgo), const VLNEXT = 15 pkg syscall (linux-386-cgo), const VMIN = 6 pkg syscall (linux-386-cgo), const VQUIT = 1 pkg syscall (linux-386-cgo), const VREPRINT = 12 pkg syscall (linux-386-cgo), const VSTART = 8 pkg syscall (linux-386-cgo), const VSTOP = 9 pkg syscall (linux-386-cgo), const VSUSP = 10 pkg syscall (linux-386-cgo), const VSWTC = 7 pkg syscall (linux-386-cgo), const VTIME = 5 pkg syscall (linux-386-cgo), const VWERASE = 14 pkg syscall (linux-386-cgo), const WALL = 1073741824 pkg syscall (linux-386-cgo), const WCLONE = 2147483648 pkg syscall (linux-386-cgo), const WCONTINUED = 8 pkg syscall (linux-386-cgo), const WEXITED = 4 pkg syscall (linux-386-cgo), const WNOHANG = 1 pkg syscall (linux-386-cgo), const WNOTHREAD = 536870912 pkg syscall (linux-386-cgo), const WNOWAIT = 16777216 pkg syscall (linux-386-cgo), const WORDSIZE = 32 pkg syscall (linux-386-cgo), const WSTOPPED = 2 pkg syscall (linux-386-cgo), const WUNTRACED = 2 pkg syscall (linux-386-cgo), const XCASE = 4 pkg syscall (linux-386-cgo), func Accept4(int, int) (int, Sockaddr, error) pkg syscall (linux-386-cgo), func GetsockoptUcred(int, int, int) (*Ucred, error) pkg syscall (linux-386-cgo), func Getxattr(string, string, []uint8) (int, error) pkg syscall (linux-386-cgo), func Listxattr(string, []uint8) (int, error) pkg syscall (linux-386-cgo), func Pipe2([]int, int) error pkg syscall (linux-386-cgo), func PtraceSyscall(int, int) error pkg syscall (linux-386-cgo), func Removexattr(string, string) error pkg syscall (linux-386-cgo), func Setxattr(string, string, []uint8, int) error pkg syscall (linux-386-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (linux-386-cgo), type SysProcAttr struct, Ctty int pkg syscall (linux-386-cgo), type TCPInfo struct pkg syscall (linux-386-cgo), type TCPInfo struct, Advmss uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Ato uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Backoff uint8 pkg syscall (linux-386-cgo), type TCPInfo struct, Ca_state uint8 pkg syscall (linux-386-cgo), type TCPInfo struct, Fackets uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Last_ack_recv uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Last_ack_sent uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Last_data_recv uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Last_data_sent uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Lost uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Options uint8 pkg syscall (linux-386-cgo), type TCPInfo struct, Pad_cgo_0 [2]uint8 pkg syscall (linux-386-cgo), type TCPInfo struct, Pmtu uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Probes uint8 pkg syscall (linux-386-cgo), type TCPInfo struct, Rcv_mss uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Rcv_rtt uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Rcv_space uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Rcv_ssthresh uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Reordering uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Retrans uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Retransmits uint8 pkg syscall (linux-386-cgo), type TCPInfo struct, Rto uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Rtt uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Rttvar uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Sacked uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Snd_cwnd uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Snd_mss uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Snd_ssthresh uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, State uint8 pkg syscall (linux-386-cgo), type TCPInfo struct, Total_retrans uint32 pkg syscall (linux-386-cgo), type TCPInfo struct, Unacked uint32 pkg syscall (linux-amd64), const AF_ALG = 38 pkg syscall (linux-amd64), const AF_APPLETALK = 5 pkg syscall (linux-amd64), const AF_ASH = 18 pkg syscall (linux-amd64), const AF_ATMPVC = 8 pkg syscall (linux-amd64), const AF_ATMSVC = 20 pkg syscall (linux-amd64), const AF_AX25 = 3 pkg syscall (linux-amd64), const AF_BLUETOOTH = 31 pkg syscall (linux-amd64), const AF_BRIDGE = 7 pkg syscall (linux-amd64), const AF_CAIF = 37 pkg syscall (linux-amd64), const AF_CAN = 29 pkg syscall (linux-amd64), const AF_DECnet = 12 pkg syscall (linux-amd64), const AF_ECONET = 19 pkg syscall (linux-amd64), const AF_FILE = 1 pkg syscall (linux-amd64), const AF_IEEE802154 = 36 pkg syscall (linux-amd64), const AF_INET6 = 10 pkg syscall (linux-amd64), const AF_IPX = 4 pkg syscall (linux-amd64), const AF_IRDA = 23 pkg syscall (linux-amd64), const AF_ISDN = 34 pkg syscall (linux-amd64), const AF_IUCV = 32 pkg syscall (linux-amd64), const AF_KEY = 15 pkg syscall (linux-amd64), const AF_LLC = 26 pkg syscall (linux-amd64), const AF_LOCAL = 1 pkg syscall (linux-amd64), const AF_MAX = 39 pkg syscall (linux-amd64), const AF_NETBEUI = 13 pkg syscall (linux-amd64), const AF_NETLINK = 16 pkg syscall (linux-amd64), const AF_NETROM = 6 pkg syscall (linux-amd64), const AF_PACKET = 17 pkg syscall (linux-amd64), const AF_PHONET = 35 pkg syscall (linux-amd64), const AF_PPPOX = 24 pkg syscall (linux-amd64), const AF_RDS = 21 pkg syscall (linux-amd64), const AF_ROSE = 11 pkg syscall (linux-amd64), const AF_ROUTE = 16 pkg syscall (linux-amd64), const AF_RXRPC = 33 pkg syscall (linux-amd64), const AF_SECURITY = 14 pkg syscall (linux-amd64), const AF_SNA = 22 pkg syscall (linux-amd64), const AF_TIPC = 30 pkg syscall (linux-amd64), const AF_WANPIPE = 25 pkg syscall (linux-amd64), const AF_X25 = 9 pkg syscall (linux-amd64), const ARPHRD_ADAPT = 264 pkg syscall (linux-amd64), const ARPHRD_APPLETLK = 8 pkg syscall (linux-amd64), const ARPHRD_ARCNET = 7 pkg syscall (linux-amd64), const ARPHRD_ASH = 781 pkg syscall (linux-amd64), const ARPHRD_ATM = 19 pkg syscall (linux-amd64), const ARPHRD_AX25 = 3 pkg syscall (linux-amd64), const ARPHRD_BIF = 775 pkg syscall (linux-amd64), const ARPHRD_CHAOS = 5 pkg syscall (linux-amd64), const ARPHRD_CISCO = 513 pkg syscall (linux-amd64), const ARPHRD_CSLIP = 257 pkg syscall (linux-amd64), const ARPHRD_CSLIP6 = 259 pkg syscall (linux-amd64), const ARPHRD_DDCMP = 517 pkg syscall (linux-amd64), const ARPHRD_DLCI = 15 pkg syscall (linux-amd64), const ARPHRD_ECONET = 782 pkg syscall (linux-amd64), const ARPHRD_EETHER = 2 pkg syscall (linux-amd64), const ARPHRD_ETHER = 1 pkg syscall (linux-amd64), const ARPHRD_EUI64 = 27 pkg syscall (linux-amd64), const ARPHRD_FCAL = 785 pkg syscall (linux-amd64), const ARPHRD_FCFABRIC = 787 pkg syscall (linux-amd64), const ARPHRD_FCPL = 786 pkg syscall (linux-amd64), const ARPHRD_FCPP = 784 pkg syscall (linux-amd64), const ARPHRD_FDDI = 774 pkg syscall (linux-amd64), const ARPHRD_FRAD = 770 pkg syscall (linux-amd64), const ARPHRD_HDLC = 513 pkg syscall (linux-amd64), const ARPHRD_HIPPI = 780 pkg syscall (linux-amd64), const ARPHRD_HWX25 = 272 pkg syscall (linux-amd64), const ARPHRD_IEEE1394 = 24 pkg syscall (linux-amd64), const ARPHRD_IEEE802 = 6 pkg syscall (linux-amd64), const ARPHRD_IEEE80211 = 801 pkg syscall (linux-amd64), const ARPHRD_IEEE80211_PRISM = 802 pkg syscall (linux-amd64), const ARPHRD_IEEE80211_RADIOTAP = 803 pkg syscall (linux-amd64), const ARPHRD_IEEE802154 = 804 pkg syscall (linux-amd64), const ARPHRD_IEEE802154_PHY = 805 pkg syscall (linux-amd64), const ARPHRD_IEEE802_TR = 800 pkg syscall (linux-amd64), const ARPHRD_INFINIBAND = 32 pkg syscall (linux-amd64), const ARPHRD_IPDDP = 777 pkg syscall (linux-amd64), const ARPHRD_IPGRE = 778 pkg syscall (linux-amd64), const ARPHRD_IRDA = 783 pkg syscall (linux-amd64), const ARPHRD_LAPB = 516 pkg syscall (linux-amd64), const ARPHRD_LOCALTLK = 773 pkg syscall (linux-amd64), const ARPHRD_LOOPBACK = 772 pkg syscall (linux-amd64), const ARPHRD_METRICOM = 23 pkg syscall (linux-amd64), const ARPHRD_NETROM = 0 pkg syscall (linux-amd64), const ARPHRD_NONE = 65534 pkg syscall (linux-amd64), const ARPHRD_PIMREG = 779 pkg syscall (linux-amd64), const ARPHRD_PPP = 512 pkg syscall (linux-amd64), const ARPHRD_PRONET = 4 pkg syscall (linux-amd64), const ARPHRD_RAWHDLC = 518 pkg syscall (linux-amd64), const ARPHRD_ROSE = 270 pkg syscall (linux-amd64), const ARPHRD_RSRVD = 260 pkg syscall (linux-amd64), const ARPHRD_SIT = 776 pkg syscall (linux-amd64), const ARPHRD_SKIP = 771 pkg syscall (linux-amd64), const ARPHRD_SLIP = 256 pkg syscall (linux-amd64), const ARPHRD_SLIP6 = 258 pkg syscall (linux-amd64), const ARPHRD_TUNNEL = 768 pkg syscall (linux-amd64), const ARPHRD_TUNNEL6 = 769 pkg syscall (linux-amd64), const ARPHRD_VOID = 65535 pkg syscall (linux-amd64), const ARPHRD_X25 = 271 pkg syscall (linux-amd64), const B0 = 0 pkg syscall (linux-amd64), const B1000000 = 4104 pkg syscall (linux-amd64), const B110 = 3 pkg syscall (linux-amd64), const B115200 = 4098 pkg syscall (linux-amd64), const B1152000 = 4105 pkg syscall (linux-amd64), const B1200 = 9 pkg syscall (linux-amd64), const B134 = 4 pkg syscall (linux-amd64), const B150 = 5 pkg syscall (linux-amd64), const B1500000 = 4106 pkg syscall (linux-amd64), const B1800 = 10 pkg syscall (linux-amd64), const B19200 = 14 pkg syscall (linux-amd64), const B200 = 6 pkg syscall (linux-amd64), const B2000000 = 4107 pkg syscall (linux-amd64), const B230400 = 4099 pkg syscall (linux-amd64), const B2400 = 11 pkg syscall (linux-amd64), const B2500000 = 4108 pkg syscall (linux-amd64), const B300 = 7 pkg syscall (linux-amd64), const B3000000 = 4109 pkg syscall (linux-amd64), const B3500000 = 4110 pkg syscall (linux-amd64), const B38400 = 15 pkg syscall (linux-amd64), const B4000000 = 4111 pkg syscall (linux-amd64), const B460800 = 4100 pkg syscall (linux-amd64), const B4800 = 12 pkg syscall (linux-amd64), const B50 = 1 pkg syscall (linux-amd64), const B500000 = 4101 pkg syscall (linux-amd64), const B57600 = 4097 pkg syscall (linux-amd64), const B576000 = 4102 pkg syscall (linux-amd64), const B600 = 8 pkg syscall (linux-amd64), const B75 = 2 pkg syscall (linux-amd64), const B921600 = 4103 pkg syscall (linux-amd64), const B9600 = 13 pkg syscall (linux-amd64), const BPF_A = 16 pkg syscall (linux-amd64), const BPF_ABS = 32 pkg syscall (linux-amd64), const BPF_ADD = 0 pkg syscall (linux-amd64), const BPF_ALU = 4 pkg syscall (linux-amd64), const BPF_AND = 80 pkg syscall (linux-amd64), const BPF_B = 16 pkg syscall (linux-amd64), const BPF_DIV = 48 pkg syscall (linux-amd64), const BPF_H = 8 pkg syscall (linux-amd64), const BPF_IMM = 0 pkg syscall (linux-amd64), const BPF_IND = 64 pkg syscall (linux-amd64), const BPF_JA = 0 pkg syscall (linux-amd64), const BPF_JEQ = 16 pkg syscall (linux-amd64), const BPF_JGE = 48 pkg syscall (linux-amd64), const BPF_JGT = 32 pkg syscall (linux-amd64), const BPF_JMP = 5 pkg syscall (linux-amd64), const BPF_JSET = 64 pkg syscall (linux-amd64), const BPF_K = 0 pkg syscall (linux-amd64), const BPF_LD = 0 pkg syscall (linux-amd64), const BPF_LDX = 1 pkg syscall (linux-amd64), const BPF_LEN = 128 pkg syscall (linux-amd64), const BPF_LSH = 96 pkg syscall (linux-amd64), const BPF_MAJOR_VERSION = 1 pkg syscall (linux-amd64), const BPF_MAXINSNS = 4096 pkg syscall (linux-amd64), const BPF_MEM = 96 pkg syscall (linux-amd64), const BPF_MEMWORDS = 16 pkg syscall (linux-amd64), const BPF_MINOR_VERSION = 1 pkg syscall (linux-amd64), const BPF_MISC = 7 pkg syscall (linux-amd64), const BPF_MSH = 160 pkg syscall (linux-amd64), const BPF_MUL = 32 pkg syscall (linux-amd64), const BPF_NEG = 128 pkg syscall (linux-amd64), const BPF_OR = 64 pkg syscall (linux-amd64), const BPF_RET = 6 pkg syscall (linux-amd64), const BPF_RSH = 112 pkg syscall (linux-amd64), const BPF_ST = 2 pkg syscall (linux-amd64), const BPF_STX = 3 pkg syscall (linux-amd64), const BPF_SUB = 16 pkg syscall (linux-amd64), const BPF_TAX = 0 pkg syscall (linux-amd64), const BPF_TXA = 128 pkg syscall (linux-amd64), const BPF_W = 0 pkg syscall (linux-amd64), const BPF_X = 8 pkg syscall (linux-amd64), const BRKINT = 2 pkg syscall (linux-amd64), const CLOCAL = 2048 pkg syscall (linux-amd64), const CREAD = 128 pkg syscall (linux-amd64), const CS5 = 0 pkg syscall (linux-amd64), const CS6 = 16 pkg syscall (linux-amd64), const CS7 = 32 pkg syscall (linux-amd64), const CS8 = 48 pkg syscall (linux-amd64), const CSIZE = 48 pkg syscall (linux-amd64), const CSTOPB = 64 pkg syscall (linux-amd64), const DT_BLK = 6 pkg syscall (linux-amd64), const DT_CHR = 2 pkg syscall (linux-amd64), const DT_DIR = 4 pkg syscall (linux-amd64), const DT_FIFO = 1 pkg syscall (linux-amd64), const DT_LNK = 10 pkg syscall (linux-amd64), const DT_REG = 8 pkg syscall (linux-amd64), const DT_SOCK = 12 pkg syscall (linux-amd64), const DT_UNKNOWN = 0 pkg syscall (linux-amd64), const DT_WHT = 14 pkg syscall (linux-amd64), const E2BIG = 7 pkg syscall (linux-amd64), const EACCES = 13 pkg syscall (linux-amd64), const EADDRINUSE = 98 pkg syscall (linux-amd64), const EADDRNOTAVAIL = 99 pkg syscall (linux-amd64), const EADV = 68 pkg syscall (linux-amd64), const EAFNOSUPPORT = 97 pkg syscall (linux-amd64), const EAGAIN = 11 pkg syscall (linux-amd64), const EALREADY = 114 pkg syscall (linux-amd64), const EBADE = 52 pkg syscall (linux-amd64), const EBADF = 9 pkg syscall (linux-amd64), const EBADFD = 77 pkg syscall (linux-amd64), const EBADMSG = 74 pkg syscall (linux-amd64), const EBADR = 53 pkg syscall (linux-amd64), const EBADRQC = 56 pkg syscall (linux-amd64), const EBADSLT = 57 pkg syscall (linux-amd64), const EBFONT = 59 pkg syscall (linux-amd64), const EBUSY = 16 pkg syscall (linux-amd64), const ECANCELED = 125 pkg syscall (linux-amd64), const ECHILD = 10 pkg syscall (linux-amd64), const ECHO = 8 pkg syscall (linux-amd64), const ECHOCTL = 512 pkg syscall (linux-amd64), const ECHOE = 16 pkg syscall (linux-amd64), const ECHOK = 32 pkg syscall (linux-amd64), const ECHOKE = 2048 pkg syscall (linux-amd64), const ECHONL = 64 pkg syscall (linux-amd64), const ECHOPRT = 1024 pkg syscall (linux-amd64), const ECHRNG = 44 pkg syscall (linux-amd64), const ECOMM = 70 pkg syscall (linux-amd64), const ECONNABORTED = 103 pkg syscall (linux-amd64), const ECONNREFUSED = 111 pkg syscall (linux-amd64), const ECONNRESET = 104 pkg syscall (linux-amd64), const EDEADLK = 35 pkg syscall (linux-amd64), const EDEADLOCK = 35 pkg syscall (linux-amd64), const EDESTADDRREQ = 89 pkg syscall (linux-amd64), const EDOM = 33 pkg syscall (linux-amd64), const EDOTDOT = 73 pkg syscall (linux-amd64), const EDQUOT = 122 pkg syscall (linux-amd64), const EEXIST = 17 pkg syscall (linux-amd64), const EFAULT = 14 pkg syscall (linux-amd64), const EFBIG = 27 pkg syscall (linux-amd64), const EHOSTDOWN = 112 pkg syscall (linux-amd64), const EHOSTUNREACH = 113 pkg syscall (linux-amd64), const EIDRM = 43 pkg syscall (linux-amd64), const EILSEQ = 84 pkg syscall (linux-amd64), const EINPROGRESS = 115 pkg syscall (linux-amd64), const EINTR = 4 pkg syscall (linux-amd64), const EINVAL = 22 pkg syscall (linux-amd64), const EIO = 5 pkg syscall (linux-amd64), const EISCONN = 106 pkg syscall (linux-amd64), const EISDIR = 21 pkg syscall (linux-amd64), const EISNAM = 120 pkg syscall (linux-amd64), const EKEYEXPIRED = 127 pkg syscall (linux-amd64), const EKEYREJECTED = 129 pkg syscall (linux-amd64), const EKEYREVOKED = 128 pkg syscall (linux-amd64), const EL2HLT = 51 pkg syscall (linux-amd64), const EL2NSYNC = 45 pkg syscall (linux-amd64), const EL3HLT = 46 pkg syscall (linux-amd64), const EL3RST = 47 pkg syscall (linux-amd64), const ELIBACC = 79 pkg syscall (linux-amd64), const ELIBBAD = 80 pkg syscall (linux-amd64), const ELIBEXEC = 83 pkg syscall (linux-amd64), const ELIBMAX = 82 pkg syscall (linux-amd64), const ELIBSCN = 81 pkg syscall (linux-amd64), const ELNRNG = 48 pkg syscall (linux-amd64), const ELOOP = 40 pkg syscall (linux-amd64), const EMEDIUMTYPE = 124 pkg syscall (linux-amd64), const EMFILE = 24 pkg syscall (linux-amd64), const EMLINK = 31 pkg syscall (linux-amd64), const EMSGSIZE = 90 pkg syscall (linux-amd64), const EMULTIHOP = 72 pkg syscall (linux-amd64), const ENAMETOOLONG = 36 pkg syscall (linux-amd64), const ENAVAIL = 119 pkg syscall (linux-amd64), const ENETDOWN = 100 pkg syscall (linux-amd64), const ENETRESET = 102 pkg syscall (linux-amd64), const ENETUNREACH = 101 pkg syscall (linux-amd64), const ENFILE = 23 pkg syscall (linux-amd64), const ENOANO = 55 pkg syscall (linux-amd64), const ENOBUFS = 105 pkg syscall (linux-amd64), const ENOCSI = 50 pkg syscall (linux-amd64), const ENODATA = 61 pkg syscall (linux-amd64), const ENODEV = 19 pkg syscall (linux-amd64), const ENOEXEC = 8 pkg syscall (linux-amd64), const ENOKEY = 126 pkg syscall (linux-amd64), const ENOLCK = 37 pkg syscall (linux-amd64), const ENOLINK = 67 pkg syscall (linux-amd64), const ENOMEDIUM = 123 pkg syscall (linux-amd64), const ENOMEM = 12 pkg syscall (linux-amd64), const ENOMSG = 42 pkg syscall (linux-amd64), const ENONET = 64 pkg syscall (linux-amd64), const ENOPKG = 65 pkg syscall (linux-amd64), const ENOPROTOOPT = 92 pkg syscall (linux-amd64), const ENOSPC = 28 pkg syscall (linux-amd64), const ENOSR = 63 pkg syscall (linux-amd64), const ENOSTR = 60 pkg syscall (linux-amd64), const ENOSYS = 38 pkg syscall (linux-amd64), const ENOTBLK = 15 pkg syscall (linux-amd64), const ENOTCONN = 107 pkg syscall (linux-amd64), const ENOTDIR = 20 pkg syscall (linux-amd64), const ENOTEMPTY = 39 pkg syscall (linux-amd64), const ENOTNAM = 118 pkg syscall (linux-amd64), const ENOTRECOVERABLE = 131 pkg syscall (linux-amd64), const ENOTSOCK = 88 pkg syscall (linux-amd64), const ENOTSUP = 95 pkg syscall (linux-amd64), const ENOTTY = 25 pkg syscall (linux-amd64), const ENOTUNIQ = 76 pkg syscall (linux-amd64), const ENXIO = 6 pkg syscall (linux-amd64), const EOPNOTSUPP = 95 pkg syscall (linux-amd64), const EOVERFLOW = 75 pkg syscall (linux-amd64), const EOWNERDEAD = 130 pkg syscall (linux-amd64), const EPERM = 1 pkg syscall (linux-amd64), const EPFNOSUPPORT = 96 pkg syscall (linux-amd64), const EPIPE = 32 pkg syscall (linux-amd64), const EPOLLERR = 8 pkg syscall (linux-amd64), const EPOLLET = -2147483648 pkg syscall (linux-amd64), const EPOLLHUP = 16 pkg syscall (linux-amd64), const EPOLLIN = 1 pkg syscall (linux-amd64), const EPOLLMSG = 1024 pkg syscall (linux-amd64), const EPOLLONESHOT = 1073741824 pkg syscall (linux-amd64), const EPOLLOUT = 4 pkg syscall (linux-amd64), const EPOLLPRI = 2 pkg syscall (linux-amd64), const EPOLLRDBAND = 128 pkg syscall (linux-amd64), const EPOLLRDHUP = 8192 pkg syscall (linux-amd64), const EPOLLRDNORM = 64 pkg syscall (linux-amd64), const EPOLLWRBAND = 512 pkg syscall (linux-amd64), const EPOLLWRNORM = 256 pkg syscall (linux-amd64), const EPOLL_CLOEXEC = 524288 pkg syscall (linux-amd64), const EPOLL_CTL_ADD = 1 pkg syscall (linux-amd64), const EPOLL_CTL_DEL = 2 pkg syscall (linux-amd64), const EPOLL_CTL_MOD = 3 pkg syscall (linux-amd64), const EPOLL_NONBLOCK = 2048 pkg syscall (linux-amd64), const EPROTO = 71 pkg syscall (linux-amd64), const EPROTONOSUPPORT = 93 pkg syscall (linux-amd64), const EPROTOTYPE = 91 pkg syscall (linux-amd64), const ERANGE = 34 pkg syscall (linux-amd64), const EREMCHG = 78 pkg syscall (linux-amd64), const EREMOTE = 66 pkg syscall (linux-amd64), const EREMOTEIO = 121 pkg syscall (linux-amd64), const ERESTART = 85 pkg syscall (linux-amd64), const ERFKILL = 132 pkg syscall (linux-amd64), const EROFS = 30 pkg syscall (linux-amd64), const ESHUTDOWN = 108 pkg syscall (linux-amd64), const ESOCKTNOSUPPORT = 94 pkg syscall (linux-amd64), const ESPIPE = 29 pkg syscall (linux-amd64), const ESRCH = 3 pkg syscall (linux-amd64), const ESRMNT = 69 pkg syscall (linux-amd64), const ESTALE = 116 pkg syscall (linux-amd64), const ESTRPIPE = 86 pkg syscall (linux-amd64), const ETH_P_1588 = 35063 pkg syscall (linux-amd64), const ETH_P_8021Q = 33024 pkg syscall (linux-amd64), const ETH_P_802_2 = 4 pkg syscall (linux-amd64), const ETH_P_802_3 = 1 pkg syscall (linux-amd64), const ETH_P_AARP = 33011 pkg syscall (linux-amd64), const ETH_P_ALL = 3 pkg syscall (linux-amd64), const ETH_P_AOE = 34978 pkg syscall (linux-amd64), const ETH_P_ARCNET = 26 pkg syscall (linux-amd64), const ETH_P_ARP = 2054 pkg syscall (linux-amd64), const ETH_P_ATALK = 32923 pkg syscall (linux-amd64), const ETH_P_ATMFATE = 34948 pkg syscall (linux-amd64), const ETH_P_ATMMPOA = 34892 pkg syscall (linux-amd64), const ETH_P_AX25 = 2 pkg syscall (linux-amd64), const ETH_P_BPQ = 2303 pkg syscall (linux-amd64), const ETH_P_CAIF = 247 pkg syscall (linux-amd64), const ETH_P_CAN = 12 pkg syscall (linux-amd64), const ETH_P_CONTROL = 22 pkg syscall (linux-amd64), const ETH_P_CUST = 24582 pkg syscall (linux-amd64), const ETH_P_DDCMP = 6 pkg syscall (linux-amd64), const ETH_P_DEC = 24576 pkg syscall (linux-amd64), const ETH_P_DIAG = 24581 pkg syscall (linux-amd64), const ETH_P_DNA_DL = 24577 pkg syscall (linux-amd64), const ETH_P_DNA_RC = 24578 pkg syscall (linux-amd64), const ETH_P_DNA_RT = 24579 pkg syscall (linux-amd64), const ETH_P_DSA = 27 pkg syscall (linux-amd64), const ETH_P_ECONET = 24 pkg syscall (linux-amd64), const ETH_P_EDSA = 56026 pkg syscall (linux-amd64), const ETH_P_FCOE = 35078 pkg syscall (linux-amd64), const ETH_P_FIP = 35092 pkg syscall (linux-amd64), const ETH_P_HDLC = 25 pkg syscall (linux-amd64), const ETH_P_IEEE802154 = 246 pkg syscall (linux-amd64), const ETH_P_IEEEPUP = 2560 pkg syscall (linux-amd64), const ETH_P_IEEEPUPAT = 2561 pkg syscall (linux-amd64), const ETH_P_IP = 2048 pkg syscall (linux-amd64), const ETH_P_IPV6 = 34525 pkg syscall (linux-amd64), const ETH_P_IPX = 33079 pkg syscall (linux-amd64), const ETH_P_IRDA = 23 pkg syscall (linux-amd64), const ETH_P_LAT = 24580 pkg syscall (linux-amd64), const ETH_P_LINK_CTL = 34924 pkg syscall (linux-amd64), const ETH_P_LOCALTALK = 9 pkg syscall (linux-amd64), const ETH_P_LOOP = 96 pkg syscall (linux-amd64), const ETH_P_MOBITEX = 21 pkg syscall (linux-amd64), const ETH_P_MPLS_MC = 34888 pkg syscall (linux-amd64), const ETH_P_MPLS_UC = 34887 pkg syscall (linux-amd64), const ETH_P_PAE = 34958 pkg syscall (linux-amd64), const ETH_P_PAUSE = 34824 pkg syscall (linux-amd64), const ETH_P_PHONET = 245 pkg syscall (linux-amd64), const ETH_P_PPPTALK = 16 pkg syscall (linux-amd64), const ETH_P_PPP_DISC = 34915 pkg syscall (linux-amd64), const ETH_P_PPP_MP = 8 pkg syscall (linux-amd64), const ETH_P_PPP_SES = 34916 pkg syscall (linux-amd64), const ETH_P_PUP = 512 pkg syscall (linux-amd64), const ETH_P_PUPAT = 513 pkg syscall (linux-amd64), const ETH_P_RARP = 32821 pkg syscall (linux-amd64), const ETH_P_SCA = 24583 pkg syscall (linux-amd64), const ETH_P_SLOW = 34825 pkg syscall (linux-amd64), const ETH_P_SNAP = 5 pkg syscall (linux-amd64), const ETH_P_TEB = 25944 pkg syscall (linux-amd64), const ETH_P_TIPC = 35018 pkg syscall (linux-amd64), const ETH_P_TRAILER = 28 pkg syscall (linux-amd64), const ETH_P_TR_802_2 = 17 pkg syscall (linux-amd64), const ETH_P_WAN_PPP = 7 pkg syscall (linux-amd64), const ETH_P_WCCP = 34878 pkg syscall (linux-amd64), const ETH_P_X25 = 2053 pkg syscall (linux-amd64), const ETIME = 62 pkg syscall (linux-amd64), const ETIMEDOUT = 110 pkg syscall (linux-amd64), const ETOOMANYREFS = 109 pkg syscall (linux-amd64), const ETXTBSY = 26 pkg syscall (linux-amd64), const EUCLEAN = 117 pkg syscall (linux-amd64), const EUNATCH = 49 pkg syscall (linux-amd64), const EUSERS = 87 pkg syscall (linux-amd64), const EWOULDBLOCK = 11 pkg syscall (linux-amd64), const EXDEV = 18 pkg syscall (linux-amd64), const EXFULL = 54 pkg syscall (linux-amd64), const FD_CLOEXEC = 1 pkg syscall (linux-amd64), const FD_SETSIZE = 1024 pkg syscall (linux-amd64), const FLUSHO = 4096 pkg syscall (linux-amd64), const F_DUPFD = 0 pkg syscall (linux-amd64), const F_DUPFD_CLOEXEC = 1030 pkg syscall (linux-amd64), const F_EXLCK = 4 pkg syscall (linux-amd64), const F_GETFD = 1 pkg syscall (linux-amd64), const F_GETFL = 3 pkg syscall (linux-amd64), const F_GETLEASE = 1025 pkg syscall (linux-amd64), const F_GETLK = 5 pkg syscall (linux-amd64), const F_GETLK64 = 5 pkg syscall (linux-amd64), const F_GETOWN = 9 pkg syscall (linux-amd64), const F_GETOWN_EX = 16 pkg syscall (linux-amd64), const F_GETPIPE_SZ = 1032 pkg syscall (linux-amd64), const F_GETSIG = 11 pkg syscall (linux-amd64), const F_LOCK = 1 pkg syscall (linux-amd64), const F_NOTIFY = 1026 pkg syscall (linux-amd64), const F_OK = 0 pkg syscall (linux-amd64), const F_RDLCK = 0 pkg syscall (linux-amd64), const F_SETFD = 2 pkg syscall (linux-amd64), const F_SETFL = 4 pkg syscall (linux-amd64), const F_SETLEASE = 1024 pkg syscall (linux-amd64), const F_SETLK = 6 pkg syscall (linux-amd64), const F_SETLK64 = 6 pkg syscall (linux-amd64), const F_SETLKW = 7 pkg syscall (linux-amd64), const F_SETLKW64 = 7 pkg syscall (linux-amd64), const F_SETOWN = 8 pkg syscall (linux-amd64), const F_SETOWN_EX = 15 pkg syscall (linux-amd64), const F_SETPIPE_SZ = 1031 pkg syscall (linux-amd64), const F_SETSIG = 10 pkg syscall (linux-amd64), const F_SHLCK = 8 pkg syscall (linux-amd64), const F_TEST = 3 pkg syscall (linux-amd64), const F_TLOCK = 2 pkg syscall (linux-amd64), const F_ULOCK = 0 pkg syscall (linux-amd64), const F_UNLCK = 2 pkg syscall (linux-amd64), const F_WRLCK = 1 pkg syscall (linux-amd64), const HUPCL = 1024 pkg syscall (linux-amd64), const ICANON = 2 pkg syscall (linux-amd64), const ICRNL = 256 pkg syscall (linux-amd64), const IEXTEN = 32768 pkg syscall (linux-amd64), const IFA_ADDRESS = 1 pkg syscall (linux-amd64), const IFA_ANYCAST = 5 pkg syscall (linux-amd64), const IFA_BROADCAST = 4 pkg syscall (linux-amd64), const IFA_CACHEINFO = 6 pkg syscall (linux-amd64), const IFA_F_DADFAILED = 8 pkg syscall (linux-amd64), const IFA_F_DEPRECATED = 32 pkg syscall (linux-amd64), const IFA_F_HOMEADDRESS = 16 pkg syscall (linux-amd64), const IFA_F_NODAD = 2 pkg syscall (linux-amd64), const IFA_F_OPTIMISTIC = 4 pkg syscall (linux-amd64), const IFA_F_PERMANENT = 128 pkg syscall (linux-amd64), const IFA_F_SECONDARY = 1 pkg syscall (linux-amd64), const IFA_F_TEMPORARY = 1 pkg syscall (linux-amd64), const IFA_F_TENTATIVE = 64 pkg syscall (linux-amd64), const IFA_LABEL = 3 pkg syscall (linux-amd64), const IFA_LOCAL = 2 pkg syscall (linux-amd64), const IFA_MAX = 7 pkg syscall (linux-amd64), const IFA_MULTICAST = 7 pkg syscall (linux-amd64), const IFA_UNSPEC = 0 pkg syscall (linux-amd64), const IFF_ALLMULTI = 512 pkg syscall (linux-amd64), const IFF_AUTOMEDIA = 16384 pkg syscall (linux-amd64), const IFF_DEBUG = 4 pkg syscall (linux-amd64), const IFF_DYNAMIC = 32768 pkg syscall (linux-amd64), const IFF_LOOPBACK = 8 pkg syscall (linux-amd64), const IFF_MASTER = 1024 pkg syscall (linux-amd64), const IFF_MULTICAST = 4096 pkg syscall (linux-amd64), const IFF_NOARP = 128 pkg syscall (linux-amd64), const IFF_NOTRAILERS = 32 pkg syscall (linux-amd64), const IFF_NO_PI = 4096 pkg syscall (linux-amd64), const IFF_ONE_QUEUE = 8192 pkg syscall (linux-amd64), const IFF_POINTOPOINT = 16 pkg syscall (linux-amd64), const IFF_PORTSEL = 8192 pkg syscall (linux-amd64), const IFF_PROMISC = 256 pkg syscall (linux-amd64), const IFF_RUNNING = 64 pkg syscall (linux-amd64), const IFF_SLAVE = 2048 pkg syscall (linux-amd64), const IFF_TAP = 2 pkg syscall (linux-amd64), const IFF_TUN = 1 pkg syscall (linux-amd64), const IFF_TUN_EXCL = 32768 pkg syscall (linux-amd64), const IFF_VNET_HDR = 16384 pkg syscall (linux-amd64), const IFLA_ADDRESS = 1 pkg syscall (linux-amd64), const IFLA_BROADCAST = 2 pkg syscall (linux-amd64), const IFLA_COST = 8 pkg syscall (linux-amd64), const IFLA_IFALIAS = 20 pkg syscall (linux-amd64), const IFLA_IFNAME = 3 pkg syscall (linux-amd64), const IFLA_LINK = 5 pkg syscall (linux-amd64), const IFLA_LINKINFO = 18 pkg syscall (linux-amd64), const IFLA_LINKMODE = 17 pkg syscall (linux-amd64), const IFLA_MAP = 14 pkg syscall (linux-amd64), const IFLA_MASTER = 10 pkg syscall (linux-amd64), const IFLA_MAX = 29 pkg syscall (linux-amd64), const IFLA_MTU = 4 pkg syscall (linux-amd64), const IFLA_NET_NS_PID = 19 pkg syscall (linux-amd64), const IFLA_OPERSTATE = 16 pkg syscall (linux-amd64), const IFLA_PRIORITY = 9 pkg syscall (linux-amd64), const IFLA_PROTINFO = 12 pkg syscall (linux-amd64), const IFLA_QDISC = 6 pkg syscall (linux-amd64), const IFLA_STATS = 7 pkg syscall (linux-amd64), const IFLA_TXQLEN = 13 pkg syscall (linux-amd64), const IFLA_UNSPEC = 0 pkg syscall (linux-amd64), const IFLA_WEIGHT = 15 pkg syscall (linux-amd64), const IFLA_WIRELESS = 11 pkg syscall (linux-amd64), const IFNAMSIZ = 16 pkg syscall (linux-amd64), const IGNBRK = 1 pkg syscall (linux-amd64), const IGNCR = 128 pkg syscall (linux-amd64), const IGNPAR = 4 pkg syscall (linux-amd64), const IMAXBEL = 8192 pkg syscall (linux-amd64), const INLCR = 64 pkg syscall (linux-amd64), const INPCK = 16 pkg syscall (linux-amd64), const IN_ACCESS = 1 pkg syscall (linux-amd64), const IN_ALL_EVENTS = 4095 pkg syscall (linux-amd64), const IN_ATTRIB = 4 pkg syscall (linux-amd64), const IN_CLASSA_HOST = 16777215 pkg syscall (linux-amd64), const IN_CLASSA_MAX = 128 pkg syscall (linux-amd64), const IN_CLASSA_NET = 4278190080 pkg syscall (linux-amd64), const IN_CLASSA_NSHIFT = 24 pkg syscall (linux-amd64), const IN_CLASSB_HOST = 65535 pkg syscall (linux-amd64), const IN_CLASSB_MAX = 65536 pkg syscall (linux-amd64), const IN_CLASSB_NET = 4294901760 pkg syscall (linux-amd64), const IN_CLASSB_NSHIFT = 16 pkg syscall (linux-amd64), const IN_CLASSC_HOST = 255 pkg syscall (linux-amd64), const IN_CLASSC_NET = 4294967040 pkg syscall (linux-amd64), const IN_CLASSC_NSHIFT = 8 pkg syscall (linux-amd64), const IN_CLOEXEC = 524288 pkg syscall (linux-amd64), const IN_CLOSE = 24 pkg syscall (linux-amd64), const IN_CLOSE_NOWRITE = 16 pkg syscall (linux-amd64), const IN_CLOSE_WRITE = 8 pkg syscall (linux-amd64), const IN_CREATE = 256 pkg syscall (linux-amd64), const IN_DELETE = 512 pkg syscall (linux-amd64), const IN_DELETE_SELF = 1024 pkg syscall (linux-amd64), const IN_DONT_FOLLOW = 33554432 pkg syscall (linux-amd64), const IN_EXCL_UNLINK = 67108864 pkg syscall (linux-amd64), const IN_IGNORED = 32768 pkg syscall (linux-amd64), const IN_ISDIR = 1073741824 pkg syscall (linux-amd64), const IN_LOOPBACKNET = 127 pkg syscall (linux-amd64), const IN_MASK_ADD = 536870912 pkg syscall (linux-amd64), const IN_MODIFY = 2 pkg syscall (linux-amd64), const IN_MOVE = 192 pkg syscall (linux-amd64), const IN_MOVED_FROM = 64 pkg syscall (linux-amd64), const IN_MOVED_TO = 128 pkg syscall (linux-amd64), const IN_MOVE_SELF = 2048 pkg syscall (linux-amd64), const IN_NONBLOCK = 2048 pkg syscall (linux-amd64), const IN_ONESHOT = 2147483648 pkg syscall (linux-amd64), const IN_ONLYDIR = 16777216 pkg syscall (linux-amd64), const IN_OPEN = 32 pkg syscall (linux-amd64), const IN_Q_OVERFLOW = 16384 pkg syscall (linux-amd64), const IN_UNMOUNT = 8192 pkg syscall (linux-amd64), const IPPROTO_AH = 51 pkg syscall (linux-amd64), const IPPROTO_COMP = 108 pkg syscall (linux-amd64), const IPPROTO_DCCP = 33 pkg syscall (linux-amd64), const IPPROTO_DSTOPTS = 60 pkg syscall (linux-amd64), const IPPROTO_EGP = 8 pkg syscall (linux-amd64), const IPPROTO_ENCAP = 98 pkg syscall (linux-amd64), const IPPROTO_ESP = 50 pkg syscall (linux-amd64), const IPPROTO_FRAGMENT = 44 pkg syscall (linux-amd64), const IPPROTO_GRE = 47 pkg syscall (linux-amd64), const IPPROTO_HOPOPTS = 0 pkg syscall (linux-amd64), const IPPROTO_ICMP = 1 pkg syscall (linux-amd64), const IPPROTO_ICMPV6 = 58 pkg syscall (linux-amd64), const IPPROTO_IDP = 22 pkg syscall (linux-amd64), const IPPROTO_IGMP = 2 pkg syscall (linux-amd64), const IPPROTO_IPIP = 4 pkg syscall (linux-amd64), const IPPROTO_MTP = 92 pkg syscall (linux-amd64), const IPPROTO_NONE = 59 pkg syscall (linux-amd64), const IPPROTO_PIM = 103 pkg syscall (linux-amd64), const IPPROTO_PUP = 12 pkg syscall (linux-amd64), const IPPROTO_RAW = 255 pkg syscall (linux-amd64), const IPPROTO_ROUTING = 43 pkg syscall (linux-amd64), const IPPROTO_RSVP = 46 pkg syscall (linux-amd64), const IPPROTO_SCTP = 132 pkg syscall (linux-amd64), const IPPROTO_TP = 29 pkg syscall (linux-amd64), const IPPROTO_UDPLITE = 136 pkg syscall (linux-amd64), const IPV6_2292DSTOPTS = 4 pkg syscall (linux-amd64), const IPV6_2292HOPLIMIT = 8 pkg syscall (linux-amd64), const IPV6_2292HOPOPTS = 3 pkg syscall (linux-amd64), const IPV6_2292PKTINFO = 2 pkg syscall (linux-amd64), const IPV6_2292PKTOPTIONS = 6 pkg syscall (linux-amd64), const IPV6_2292RTHDR = 5 pkg syscall (linux-amd64), const IPV6_ADDRFORM = 1 pkg syscall (linux-amd64), const IPV6_ADD_MEMBERSHIP = 20 pkg syscall (linux-amd64), const IPV6_AUTHHDR = 10 pkg syscall (linux-amd64), const IPV6_CHECKSUM = 7 pkg syscall (linux-amd64), const IPV6_DROP_MEMBERSHIP = 21 pkg syscall (linux-amd64), const IPV6_DSTOPTS = 59 pkg syscall (linux-amd64), const IPV6_HOPLIMIT = 52 pkg syscall (linux-amd64), const IPV6_HOPOPTS = 54 pkg syscall (linux-amd64), const IPV6_IPSEC_POLICY = 34 pkg syscall (linux-amd64), const IPV6_JOIN_ANYCAST = 27 pkg syscall (linux-amd64), const IPV6_JOIN_GROUP = 20 pkg syscall (linux-amd64), const IPV6_LEAVE_ANYCAST = 28 pkg syscall (linux-amd64), const IPV6_LEAVE_GROUP = 21 pkg syscall (linux-amd64), const IPV6_MTU = 24 pkg syscall (linux-amd64), const IPV6_MTU_DISCOVER = 23 pkg syscall (linux-amd64), const IPV6_MULTICAST_HOPS = 18 pkg syscall (linux-amd64), const IPV6_MULTICAST_IF = 17 pkg syscall (linux-amd64), const IPV6_MULTICAST_LOOP = 19 pkg syscall (linux-amd64), const IPV6_NEXTHOP = 9 pkg syscall (linux-amd64), const IPV6_PKTINFO = 50 pkg syscall (linux-amd64), const IPV6_PMTUDISC_DO = 2 pkg syscall (linux-amd64), const IPV6_PMTUDISC_DONT = 0 pkg syscall (linux-amd64), const IPV6_PMTUDISC_PROBE = 3 pkg syscall (linux-amd64), const IPV6_PMTUDISC_WANT = 1 pkg syscall (linux-amd64), const IPV6_RECVDSTOPTS = 58 pkg syscall (linux-amd64), const IPV6_RECVERR = 25 pkg syscall (linux-amd64), const IPV6_RECVHOPLIMIT = 51 pkg syscall (linux-amd64), const IPV6_RECVHOPOPTS = 53 pkg syscall (linux-amd64), const IPV6_RECVPKTINFO = 49 pkg syscall (linux-amd64), const IPV6_RECVRTHDR = 56 pkg syscall (linux-amd64), const IPV6_RECVTCLASS = 66 pkg syscall (linux-amd64), const IPV6_ROUTER_ALERT = 22 pkg syscall (linux-amd64), const IPV6_RTHDR = 57 pkg syscall (linux-amd64), const IPV6_RTHDRDSTOPTS = 55 pkg syscall (linux-amd64), const IPV6_RTHDR_LOOSE = 0 pkg syscall (linux-amd64), const IPV6_RTHDR_STRICT = 1 pkg syscall (linux-amd64), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (linux-amd64), const IPV6_RXDSTOPTS = 59 pkg syscall (linux-amd64), const IPV6_RXHOPOPTS = 54 pkg syscall (linux-amd64), const IPV6_TCLASS = 67 pkg syscall (linux-amd64), const IPV6_UNICAST_HOPS = 16 pkg syscall (linux-amd64), const IPV6_V6ONLY = 26 pkg syscall (linux-amd64), const IPV6_XFRM_POLICY = 35 pkg syscall (linux-amd64), const IP_ADD_MEMBERSHIP = 35 pkg syscall (linux-amd64), const IP_ADD_SOURCE_MEMBERSHIP = 39 pkg syscall (linux-amd64), const IP_BLOCK_SOURCE = 38 pkg syscall (linux-amd64), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (linux-amd64), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (linux-amd64), const IP_DF = 16384 pkg syscall (linux-amd64), const IP_DROP_MEMBERSHIP = 36 pkg syscall (linux-amd64), const IP_DROP_SOURCE_MEMBERSHIP = 40 pkg syscall (linux-amd64), const IP_FREEBIND = 15 pkg syscall (linux-amd64), const IP_HDRINCL = 3 pkg syscall (linux-amd64), const IP_IPSEC_POLICY = 16 pkg syscall (linux-amd64), const IP_MAXPACKET = 65535 pkg syscall (linux-amd64), const IP_MAX_MEMBERSHIPS = 20 pkg syscall (linux-amd64), const IP_MF = 8192 pkg syscall (linux-amd64), const IP_MINTTL = 21 pkg syscall (linux-amd64), const IP_MSFILTER = 41 pkg syscall (linux-amd64), const IP_MSS = 576 pkg syscall (linux-amd64), const IP_MTU = 14 pkg syscall (linux-amd64), const IP_MTU_DISCOVER = 10 pkg syscall (linux-amd64), const IP_MULTICAST_IF = 32 pkg syscall (linux-amd64), const IP_MULTICAST_LOOP = 34 pkg syscall (linux-amd64), const IP_MULTICAST_TTL = 33 pkg syscall (linux-amd64), const IP_OFFMASK = 8191 pkg syscall (linux-amd64), const IP_OPTIONS = 4 pkg syscall (linux-amd64), const IP_ORIGDSTADDR = 20 pkg syscall (linux-amd64), const IP_PASSSEC = 18 pkg syscall (linux-amd64), const IP_PKTINFO = 8 pkg syscall (linux-amd64), const IP_PKTOPTIONS = 9 pkg syscall (linux-amd64), const IP_PMTUDISC = 10 pkg syscall (linux-amd64), const IP_PMTUDISC_DO = 2 pkg syscall (linux-amd64), const IP_PMTUDISC_DONT = 0 pkg syscall (linux-amd64), const IP_PMTUDISC_PROBE = 3 pkg syscall (linux-amd64), const IP_PMTUDISC_WANT = 1 pkg syscall (linux-amd64), const IP_RECVERR = 11 pkg syscall (linux-amd64), const IP_RECVOPTS = 6 pkg syscall (linux-amd64), const IP_RECVORIGDSTADDR = 20 pkg syscall (linux-amd64), const IP_RECVRETOPTS = 7 pkg syscall (linux-amd64), const IP_RECVTOS = 13 pkg syscall (linux-amd64), const IP_RECVTTL = 12 pkg syscall (linux-amd64), const IP_RETOPTS = 7 pkg syscall (linux-amd64), const IP_RF = 32768 pkg syscall (linux-amd64), const IP_ROUTER_ALERT = 5 pkg syscall (linux-amd64), const IP_TOS = 1 pkg syscall (linux-amd64), const IP_TRANSPARENT = 19 pkg syscall (linux-amd64), const IP_TTL = 2 pkg syscall (linux-amd64), const IP_UNBLOCK_SOURCE = 37 pkg syscall (linux-amd64), const IP_XFRM_POLICY = 17 pkg syscall (linux-amd64), const ISIG = 1 pkg syscall (linux-amd64), const ISTRIP = 32 pkg syscall (linux-amd64), const IUCLC = 512 pkg syscall (linux-amd64), const IUTF8 = 16384 pkg syscall (linux-amd64), const IXANY = 2048 pkg syscall (linux-amd64), const IXOFF = 4096 pkg syscall (linux-amd64), const IXON = 1024 pkg syscall (linux-amd64), const ImplementsGetwd = true pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_CAD_OFF = 0 pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_CAD_ON = 2309737967 pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_HALT = 3454992675 pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_KEXEC = 1163412803 pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_POWER_OFF = 1126301404 pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_RESTART = 19088743 pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_RESTART2 = 2712847316 pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_SW_SUSPEND = 3489725666 pkg syscall (linux-amd64), const LINUX_REBOOT_MAGIC1 = 4276215469 pkg syscall (linux-amd64), const LINUX_REBOOT_MAGIC2 = 672274793 pkg syscall (linux-amd64), const LOCK_EX = 2 pkg syscall (linux-amd64), const LOCK_NB = 4 pkg syscall (linux-amd64), const LOCK_SH = 1 pkg syscall (linux-amd64), const LOCK_UN = 8 pkg syscall (linux-amd64), const MADV_DOFORK = 11 pkg syscall (linux-amd64), const MADV_DONTFORK = 10 pkg syscall (linux-amd64), const MADV_DONTNEED = 4 pkg syscall (linux-amd64), const MADV_HUGEPAGE = 14 pkg syscall (linux-amd64), const MADV_HWPOISON = 100 pkg syscall (linux-amd64), const MADV_MERGEABLE = 12 pkg syscall (linux-amd64), const MADV_NOHUGEPAGE = 15 pkg syscall (linux-amd64), const MADV_NORMAL = 0 pkg syscall (linux-amd64), const MADV_RANDOM = 1 pkg syscall (linux-amd64), const MADV_REMOVE = 9 pkg syscall (linux-amd64), const MADV_SEQUENTIAL = 2 pkg syscall (linux-amd64), const MADV_UNMERGEABLE = 13 pkg syscall (linux-amd64), const MADV_WILLNEED = 3 pkg syscall (linux-amd64), const MAP_32BIT = 64 pkg syscall (linux-amd64), const MAP_ANON = 32 pkg syscall (linux-amd64), const MAP_ANONYMOUS = 32 pkg syscall (linux-amd64), const MAP_DENYWRITE = 2048 pkg syscall (linux-amd64), const MAP_EXECUTABLE = 4096 pkg syscall (linux-amd64), const MAP_FILE = 0 pkg syscall (linux-amd64), const MAP_FIXED = 16 pkg syscall (linux-amd64), const MAP_GROWSDOWN = 256 pkg syscall (linux-amd64), const MAP_HUGETLB = 262144 pkg syscall (linux-amd64), const MAP_LOCKED = 8192 pkg syscall (linux-amd64), const MAP_NONBLOCK = 65536 pkg syscall (linux-amd64), const MAP_NORESERVE = 16384 pkg syscall (linux-amd64), const MAP_POPULATE = 32768 pkg syscall (linux-amd64), const MAP_PRIVATE = 2 pkg syscall (linux-amd64), const MAP_SHARED = 1 pkg syscall (linux-amd64), const MAP_STACK = 131072 pkg syscall (linux-amd64), const MAP_TYPE = 15 pkg syscall (linux-amd64), const MCL_CURRENT = 1 pkg syscall (linux-amd64), const MCL_FUTURE = 2 pkg syscall (linux-amd64), const MNT_DETACH = 2 pkg syscall (linux-amd64), const MNT_EXPIRE = 4 pkg syscall (linux-amd64), const MNT_FORCE = 1 pkg syscall (linux-amd64), const MSG_CMSG_CLOEXEC = 1073741824 pkg syscall (linux-amd64), const MSG_CONFIRM = 2048 pkg syscall (linux-amd64), const MSG_CTRUNC = 8 pkg syscall (linux-amd64), const MSG_DONTROUTE = 4 pkg syscall (linux-amd64), const MSG_DONTWAIT = 64 pkg syscall (linux-amd64), const MSG_EOR = 128 pkg syscall (linux-amd64), const MSG_ERRQUEUE = 8192 pkg syscall (linux-amd64), const MSG_FASTOPEN = 536870912 pkg syscall (linux-amd64), const MSG_FASTOPEN ideal-int pkg syscall (linux-amd64), const MSG_FIN = 512 pkg syscall (linux-amd64), const MSG_MORE = 32768 pkg syscall (linux-amd64), const MSG_NOSIGNAL = 16384 pkg syscall (linux-amd64), const MSG_OOB = 1 pkg syscall (linux-amd64), const MSG_PEEK = 2 pkg syscall (linux-amd64), const MSG_PROXY = 16 pkg syscall (linux-amd64), const MSG_RST = 4096 pkg syscall (linux-amd64), const MSG_SYN = 1024 pkg syscall (linux-amd64), const MSG_TRUNC = 32 pkg syscall (linux-amd64), const MSG_TRYHARD = 4 pkg syscall (linux-amd64), const MSG_WAITALL = 256 pkg syscall (linux-amd64), const MSG_WAITFORONE = 65536 pkg syscall (linux-amd64), const MS_ACTIVE = 1073741824 pkg syscall (linux-amd64), const MS_ASYNC = 1 pkg syscall (linux-amd64), const MS_BIND = 4096 pkg syscall (linux-amd64), const MS_DIRSYNC = 128 pkg syscall (linux-amd64), const MS_INVALIDATE = 2 pkg syscall (linux-amd64), const MS_I_VERSION = 8388608 pkg syscall (linux-amd64), const MS_KERNMOUNT = 4194304 pkg syscall (linux-amd64), const MS_MANDLOCK = 64 pkg syscall (linux-amd64), const MS_MGC_MSK = 4294901760 pkg syscall (linux-amd64), const MS_MGC_VAL = 3236757504 pkg syscall (linux-amd64), const MS_MOVE = 8192 pkg syscall (linux-amd64), const MS_NOATIME = 1024 pkg syscall (linux-amd64), const MS_NODEV = 4 pkg syscall (linux-amd64), const MS_NODIRATIME = 2048 pkg syscall (linux-amd64), const MS_NOEXEC = 8 pkg syscall (linux-amd64), const MS_NOSUID = 2 pkg syscall (linux-amd64), const MS_NOUSER = -2147483648 pkg syscall (linux-amd64), const MS_POSIXACL = 65536 pkg syscall (linux-amd64), const MS_PRIVATE = 262144 pkg syscall (linux-amd64), const MS_RDONLY = 1 pkg syscall (linux-amd64), const MS_REC = 16384 pkg syscall (linux-amd64), const MS_RELATIME = 2097152 pkg syscall (linux-amd64), const MS_REMOUNT = 32 pkg syscall (linux-amd64), const MS_RMT_MASK = 8388689 pkg syscall (linux-amd64), const MS_SHARED = 1048576 pkg syscall (linux-amd64), const MS_SILENT = 32768 pkg syscall (linux-amd64), const MS_SLAVE = 524288 pkg syscall (linux-amd64), const MS_STRICTATIME = 16777216 pkg syscall (linux-amd64), const MS_SYNC = 4 pkg syscall (linux-amd64), const MS_SYNCHRONOUS = 16 pkg syscall (linux-amd64), const MS_UNBINDABLE = 131072 pkg syscall (linux-amd64), const NAME_MAX = 255 pkg syscall (linux-amd64), const NETLINK_ADD_MEMBERSHIP = 1 pkg syscall (linux-amd64), const NETLINK_AUDIT = 9 pkg syscall (linux-amd64), const NETLINK_BROADCAST_ERROR = 4 pkg syscall (linux-amd64), const NETLINK_CONNECTOR = 11 pkg syscall (linux-amd64), const NETLINK_DNRTMSG = 14 pkg syscall (linux-amd64), const NETLINK_DROP_MEMBERSHIP = 2 pkg syscall (linux-amd64), const NETLINK_ECRYPTFS = 19 pkg syscall (linux-amd64), const NETLINK_FIB_LOOKUP = 10 pkg syscall (linux-amd64), const NETLINK_FIREWALL = 3 pkg syscall (linux-amd64), const NETLINK_GENERIC = 16 pkg syscall (linux-amd64), const NETLINK_INET_DIAG = 4 pkg syscall (linux-amd64), const NETLINK_IP6_FW = 13 pkg syscall (linux-amd64), const NETLINK_ISCSI = 8 pkg syscall (linux-amd64), const NETLINK_KOBJECT_UEVENT = 15 pkg syscall (linux-amd64), const NETLINK_NETFILTER = 12 pkg syscall (linux-amd64), const NETLINK_NFLOG = 5 pkg syscall (linux-amd64), const NETLINK_NO_ENOBUFS = 5 pkg syscall (linux-amd64), const NETLINK_PKTINFO = 3 pkg syscall (linux-amd64), const NETLINK_ROUTE = 0 pkg syscall (linux-amd64), const NETLINK_SCSITRANSPORT = 18 pkg syscall (linux-amd64), const NETLINK_SELINUX = 7 pkg syscall (linux-amd64), const NETLINK_UNUSED = 1 pkg syscall (linux-amd64), const NETLINK_USERSOCK = 2 pkg syscall (linux-amd64), const NETLINK_XFRM = 6 pkg syscall (linux-amd64), const NLA_ALIGNTO = 4 pkg syscall (linux-amd64), const NLA_F_NESTED = 32768 pkg syscall (linux-amd64), const NLA_F_NET_BYTEORDER = 16384 pkg syscall (linux-amd64), const NLA_HDRLEN = 4 pkg syscall (linux-amd64), const NLMSG_ALIGNTO = 4 pkg syscall (linux-amd64), const NLMSG_DONE = 3 pkg syscall (linux-amd64), const NLMSG_ERROR = 2 pkg syscall (linux-amd64), const NLMSG_HDRLEN = 16 pkg syscall (linux-amd64), const NLMSG_MIN_TYPE = 16 pkg syscall (linux-amd64), const NLMSG_NOOP = 1 pkg syscall (linux-amd64), const NLMSG_OVERRUN = 4 pkg syscall (linux-amd64), const NLM_F_ACK = 4 pkg syscall (linux-amd64), const NLM_F_APPEND = 2048 pkg syscall (linux-amd64), const NLM_F_ATOMIC = 1024 pkg syscall (linux-amd64), const NLM_F_CREATE = 1024 pkg syscall (linux-amd64), const NLM_F_DUMP = 768 pkg syscall (linux-amd64), const NLM_F_ECHO = 8 pkg syscall (linux-amd64), const NLM_F_EXCL = 512 pkg syscall (linux-amd64), const NLM_F_MATCH = 512 pkg syscall (linux-amd64), const NLM_F_MULTI = 2 pkg syscall (linux-amd64), const NLM_F_REPLACE = 256 pkg syscall (linux-amd64), const NLM_F_REQUEST = 1 pkg syscall (linux-amd64), const NLM_F_ROOT = 256 pkg syscall (linux-amd64), const NOFLSH = 128 pkg syscall (linux-amd64), const OCRNL = 8 pkg syscall (linux-amd64), const OFDEL = 128 pkg syscall (linux-amd64), const OFILL = 64 pkg syscall (linux-amd64), const OLCUC = 2 pkg syscall (linux-amd64), const ONLCR = 4 pkg syscall (linux-amd64), const ONLRET = 32 pkg syscall (linux-amd64), const ONOCR = 16 pkg syscall (linux-amd64), const OPOST = 1 pkg syscall (linux-amd64), const O_ACCMODE = 3 pkg syscall (linux-amd64), const O_APPEND = 1024 pkg syscall (linux-amd64), const O_ASYNC = 8192 pkg syscall (linux-amd64), const O_CLOEXEC = 524288 pkg syscall (linux-amd64), const O_CREAT = 64 pkg syscall (linux-amd64), const O_DIRECT = 16384 pkg syscall (linux-amd64), const O_DIRECTORY = 65536 pkg syscall (linux-amd64), const O_DSYNC = 4096 pkg syscall (linux-amd64), const O_EXCL = 128 pkg syscall (linux-amd64), const O_FSYNC = 1052672 pkg syscall (linux-amd64), const O_LARGEFILE = 0 pkg syscall (linux-amd64), const O_NDELAY = 2048 pkg syscall (linux-amd64), const O_NOATIME = 262144 pkg syscall (linux-amd64), const O_NOCTTY = 256 pkg syscall (linux-amd64), const O_NOFOLLOW = 131072 pkg syscall (linux-amd64), const O_NONBLOCK = 2048 pkg syscall (linux-amd64), const O_RSYNC = 1052672 pkg syscall (linux-amd64), const O_SYNC = 1052672 pkg syscall (linux-amd64), const O_TRUNC = 512 pkg syscall (linux-amd64), const PACKET_ADD_MEMBERSHIP = 1 pkg syscall (linux-amd64), const PACKET_BROADCAST = 1 pkg syscall (linux-amd64), const PACKET_DROP_MEMBERSHIP = 2 pkg syscall (linux-amd64), const PACKET_FASTROUTE = 6 pkg syscall (linux-amd64), const PACKET_HOST = 0 pkg syscall (linux-amd64), const PACKET_LOOPBACK = 5 pkg syscall (linux-amd64), const PACKET_MR_ALLMULTI = 2 pkg syscall (linux-amd64), const PACKET_MR_MULTICAST = 0 pkg syscall (linux-amd64), const PACKET_MR_PROMISC = 1 pkg syscall (linux-amd64), const PACKET_MULTICAST = 2 pkg syscall (linux-amd64), const PACKET_OTHERHOST = 3 pkg syscall (linux-amd64), const PACKET_OUTGOING = 4 pkg syscall (linux-amd64), const PACKET_RECV_OUTPUT = 3 pkg syscall (linux-amd64), const PACKET_RX_RING = 5 pkg syscall (linux-amd64), const PACKET_STATISTICS = 6 pkg syscall (linux-amd64), const PARENB = 256 pkg syscall (linux-amd64), const PARMRK = 8 pkg syscall (linux-amd64), const PARODD = 512 pkg syscall (linux-amd64), const PENDIN = 16384 pkg syscall (linux-amd64), const PROT_EXEC = 4 pkg syscall (linux-amd64), const PROT_GROWSDOWN = 16777216 pkg syscall (linux-amd64), const PROT_GROWSUP = 33554432 pkg syscall (linux-amd64), const PROT_NONE = 0 pkg syscall (linux-amd64), const PROT_READ = 1 pkg syscall (linux-amd64), const PROT_WRITE = 2 pkg syscall (linux-amd64), const PR_CAPBSET_DROP = 24 pkg syscall (linux-amd64), const PR_CAPBSET_READ = 23 pkg syscall (linux-amd64), const PR_ENDIAN_BIG = 0 pkg syscall (linux-amd64), const PR_ENDIAN_LITTLE = 1 pkg syscall (linux-amd64), const PR_ENDIAN_PPC_LITTLE = 2 pkg syscall (linux-amd64), const PR_FPEMU_NOPRINT = 1 pkg syscall (linux-amd64), const PR_FPEMU_SIGFPE = 2 pkg syscall (linux-amd64), const PR_FP_EXC_ASYNC = 2 pkg syscall (linux-amd64), const PR_FP_EXC_DISABLED = 0 pkg syscall (linux-amd64), const PR_FP_EXC_DIV = 65536 pkg syscall (linux-amd64), const PR_FP_EXC_INV = 1048576 pkg syscall (linux-amd64), const PR_FP_EXC_NONRECOV = 1 pkg syscall (linux-amd64), const PR_FP_EXC_OVF = 131072 pkg syscall (linux-amd64), const PR_FP_EXC_PRECISE = 3 pkg syscall (linux-amd64), const PR_FP_EXC_RES = 524288 pkg syscall (linux-amd64), const PR_FP_EXC_SW_ENABLE = 128 pkg syscall (linux-amd64), const PR_FP_EXC_UND = 262144 pkg syscall (linux-amd64), const PR_GET_DUMPABLE = 3 pkg syscall (linux-amd64), const PR_GET_ENDIAN = 19 pkg syscall (linux-amd64), const PR_GET_FPEMU = 9 pkg syscall (linux-amd64), const PR_GET_FPEXC = 11 pkg syscall (linux-amd64), const PR_GET_KEEPCAPS = 7 pkg syscall (linux-amd64), const PR_GET_NAME = 16 pkg syscall (linux-amd64), const PR_GET_PDEATHSIG = 2 pkg syscall (linux-amd64), const PR_GET_SECCOMP = 21 pkg syscall (linux-amd64), const PR_GET_SECUREBITS = 27 pkg syscall (linux-amd64), const PR_GET_TIMERSLACK = 30 pkg syscall (linux-amd64), const PR_GET_TIMING = 13 pkg syscall (linux-amd64), const PR_GET_TSC = 25 pkg syscall (linux-amd64), const PR_GET_UNALIGN = 5 pkg syscall (linux-amd64), const PR_MCE_KILL = 33 pkg syscall (linux-amd64), const PR_MCE_KILL_CLEAR = 0 pkg syscall (linux-amd64), const PR_MCE_KILL_DEFAULT = 2 pkg syscall (linux-amd64), const PR_MCE_KILL_EARLY = 1 pkg syscall (linux-amd64), const PR_MCE_KILL_GET = 34 pkg syscall (linux-amd64), const PR_MCE_KILL_LATE = 0 pkg syscall (linux-amd64), const PR_MCE_KILL_SET = 1 pkg syscall (linux-amd64), const PR_SET_DUMPABLE = 4 pkg syscall (linux-amd64), const PR_SET_ENDIAN = 20 pkg syscall (linux-amd64), const PR_SET_FPEMU = 10 pkg syscall (linux-amd64), const PR_SET_FPEXC = 12 pkg syscall (linux-amd64), const PR_SET_KEEPCAPS = 8 pkg syscall (linux-amd64), const PR_SET_NAME = 15 pkg syscall (linux-amd64), const PR_SET_PDEATHSIG = 1 pkg syscall (linux-amd64), const PR_SET_PTRACER = 1499557217 pkg syscall (linux-amd64), const PR_SET_SECCOMP = 22 pkg syscall (linux-amd64), const PR_SET_SECUREBITS = 28 pkg syscall (linux-amd64), const PR_SET_TIMERSLACK = 29 pkg syscall (linux-amd64), const PR_SET_TIMING = 14 pkg syscall (linux-amd64), const PR_SET_TSC = 26 pkg syscall (linux-amd64), const PR_SET_UNALIGN = 6 pkg syscall (linux-amd64), const PR_TASK_PERF_EVENTS_DISABLE = 31 pkg syscall (linux-amd64), const PR_TASK_PERF_EVENTS_ENABLE = 32 pkg syscall (linux-amd64), const PR_TIMING_STATISTICAL = 0 pkg syscall (linux-amd64), const PR_TIMING_TIMESTAMP = 1 pkg syscall (linux-amd64), const PR_TSC_ENABLE = 1 pkg syscall (linux-amd64), const PR_TSC_SIGSEGV = 2 pkg syscall (linux-amd64), const PR_UNALIGN_NOPRINT = 1 pkg syscall (linux-amd64), const PR_UNALIGN_SIGBUS = 2 pkg syscall (linux-amd64), const PTRACE_ARCH_PRCTL = 30 pkg syscall (linux-amd64), const PTRACE_ATTACH = 16 pkg syscall (linux-amd64), const PTRACE_CONT = 7 pkg syscall (linux-amd64), const PTRACE_DETACH = 17 pkg syscall (linux-amd64), const PTRACE_EVENT_CLONE = 3 pkg syscall (linux-amd64), const PTRACE_EVENT_EXEC = 4 pkg syscall (linux-amd64), const PTRACE_EVENT_EXIT = 6 pkg syscall (linux-amd64), const PTRACE_EVENT_FORK = 1 pkg syscall (linux-amd64), const PTRACE_EVENT_VFORK = 2 pkg syscall (linux-amd64), const PTRACE_EVENT_VFORK_DONE = 5 pkg syscall (linux-amd64), const PTRACE_GETEVENTMSG = 16897 pkg syscall (linux-amd64), const PTRACE_GETFPREGS = 14 pkg syscall (linux-amd64), const PTRACE_GETFPXREGS = 18 pkg syscall (linux-amd64), const PTRACE_GETREGS = 12 pkg syscall (linux-amd64), const PTRACE_GETREGSET = 16900 pkg syscall (linux-amd64), const PTRACE_GETSIGINFO = 16898 pkg syscall (linux-amd64), const PTRACE_GET_THREAD_AREA = 25 pkg syscall (linux-amd64), const PTRACE_KILL = 8 pkg syscall (linux-amd64), const PTRACE_OLDSETOPTIONS = 21 pkg syscall (linux-amd64), const PTRACE_O_MASK = 127 pkg syscall (linux-amd64), const PTRACE_O_TRACECLONE = 8 pkg syscall (linux-amd64), const PTRACE_O_TRACEEXEC = 16 pkg syscall (linux-amd64), const PTRACE_O_TRACEEXIT = 64 pkg syscall (linux-amd64), const PTRACE_O_TRACEFORK = 2 pkg syscall (linux-amd64), const PTRACE_O_TRACESYSGOOD = 1 pkg syscall (linux-amd64), const PTRACE_O_TRACEVFORK = 4 pkg syscall (linux-amd64), const PTRACE_O_TRACEVFORKDONE = 32 pkg syscall (linux-amd64), const PTRACE_PEEKDATA = 2 pkg syscall (linux-amd64), const PTRACE_PEEKTEXT = 1 pkg syscall (linux-amd64), const PTRACE_PEEKUSR = 3 pkg syscall (linux-amd64), const PTRACE_POKEDATA = 5 pkg syscall (linux-amd64), const PTRACE_POKETEXT = 4 pkg syscall (linux-amd64), const PTRACE_POKEUSR = 6 pkg syscall (linux-amd64), const PTRACE_SETFPREGS = 15 pkg syscall (linux-amd64), const PTRACE_SETFPXREGS = 19 pkg syscall (linux-amd64), const PTRACE_SETOPTIONS = 16896 pkg syscall (linux-amd64), const PTRACE_SETREGS = 13 pkg syscall (linux-amd64), const PTRACE_SETREGSET = 16901 pkg syscall (linux-amd64), const PTRACE_SETSIGINFO = 16899 pkg syscall (linux-amd64), const PTRACE_SET_THREAD_AREA = 26 pkg syscall (linux-amd64), const PTRACE_SINGLEBLOCK = 33 pkg syscall (linux-amd64), const PTRACE_SINGLESTEP = 9 pkg syscall (linux-amd64), const PTRACE_SYSCALL = 24 pkg syscall (linux-amd64), const PTRACE_SYSEMU = 31 pkg syscall (linux-amd64), const PTRACE_SYSEMU_SINGLESTEP = 32 pkg syscall (linux-amd64), const PTRACE_TRACEME = 0 pkg syscall (linux-amd64), const PathMax = 4096 pkg syscall (linux-amd64), const RLIMIT_AS = 9 pkg syscall (linux-amd64), const RLIMIT_CORE = 4 pkg syscall (linux-amd64), const RLIMIT_CPU = 0 pkg syscall (linux-amd64), const RLIMIT_DATA = 2 pkg syscall (linux-amd64), const RLIMIT_FSIZE = 1 pkg syscall (linux-amd64), const RLIMIT_NOFILE = 7 pkg syscall (linux-amd64), const RLIMIT_STACK = 3 pkg syscall (linux-amd64), const RLIM_INFINITY = -1 pkg syscall (linux-amd64), const RTAX_ADVMSS = 8 pkg syscall (linux-amd64), const RTAX_CWND = 7 pkg syscall (linux-amd64), const RTAX_FEATURES = 12 pkg syscall (linux-amd64), const RTAX_FEATURE_ALLFRAG = 8 pkg syscall (linux-amd64), const RTAX_FEATURE_ECN = 1 pkg syscall (linux-amd64), const RTAX_FEATURE_SACK = 2 pkg syscall (linux-amd64), const RTAX_FEATURE_TIMESTAMP = 4 pkg syscall (linux-amd64), const RTAX_HOPLIMIT = 10 pkg syscall (linux-amd64), const RTAX_INITCWND = 11 pkg syscall (linux-amd64), const RTAX_INITRWND = 14 pkg syscall (linux-amd64), const RTAX_LOCK = 1 pkg syscall (linux-amd64), const RTAX_MAX = 14 pkg syscall (linux-amd64), const RTAX_MTU = 2 pkg syscall (linux-amd64), const RTAX_REORDERING = 9 pkg syscall (linux-amd64), const RTAX_RTO_MIN = 13 pkg syscall (linux-amd64), const RTAX_RTT = 4 pkg syscall (linux-amd64), const RTAX_RTTVAR = 5 pkg syscall (linux-amd64), const RTAX_SSTHRESH = 6 pkg syscall (linux-amd64), const RTAX_UNSPEC = 0 pkg syscall (linux-amd64), const RTAX_WINDOW = 3 pkg syscall (linux-amd64), const RTA_ALIGNTO = 4 pkg syscall (linux-amd64), const RTA_CACHEINFO = 12 pkg syscall (linux-amd64), const RTA_DST = 1 pkg syscall (linux-amd64), const RTA_FLOW = 11 pkg syscall (linux-amd64), const RTA_GATEWAY = 5 pkg syscall (linux-amd64), const RTA_IIF = 3 pkg syscall (linux-amd64), const RTA_MAX = 16 pkg syscall (linux-amd64), const RTA_METRICS = 8 pkg syscall (linux-amd64), const RTA_MULTIPATH = 9 pkg syscall (linux-amd64), const RTA_OIF = 4 pkg syscall (linux-amd64), const RTA_PREFSRC = 7 pkg syscall (linux-amd64), const RTA_PRIORITY = 6 pkg syscall (linux-amd64), const RTA_SRC = 2 pkg syscall (linux-amd64), const RTA_TABLE = 15 pkg syscall (linux-amd64), const RTA_UNSPEC = 0 pkg syscall (linux-amd64), const RTCF_DIRECTSRC = 67108864 pkg syscall (linux-amd64), const RTCF_DOREDIRECT = 16777216 pkg syscall (linux-amd64), const RTCF_LOG = 33554432 pkg syscall (linux-amd64), const RTCF_MASQ = 4194304 pkg syscall (linux-amd64), const RTCF_NAT = 8388608 pkg syscall (linux-amd64), const RTCF_VALVE = 2097152 pkg syscall (linux-amd64), const RTF_ADDRCLASSMASK = 4160749568 pkg syscall (linux-amd64), const RTF_ADDRCONF = 262144 pkg syscall (linux-amd64), const RTF_ALLONLINK = 131072 pkg syscall (linux-amd64), const RTF_BROADCAST = 268435456 pkg syscall (linux-amd64), const RTF_CACHE = 16777216 pkg syscall (linux-amd64), const RTF_DEFAULT = 65536 pkg syscall (linux-amd64), const RTF_DYNAMIC = 16 pkg syscall (linux-amd64), const RTF_FLOW = 33554432 pkg syscall (linux-amd64), const RTF_GATEWAY = 2 pkg syscall (linux-amd64), const RTF_HOST = 4 pkg syscall (linux-amd64), const RTF_INTERFACE = 1073741824 pkg syscall (linux-amd64), const RTF_IRTT = 256 pkg syscall (linux-amd64), const RTF_LINKRT = 1048576 pkg syscall (linux-amd64), const RTF_LOCAL = 2147483648 pkg syscall (linux-amd64), const RTF_MODIFIED = 32 pkg syscall (linux-amd64), const RTF_MSS = 64 pkg syscall (linux-amd64), const RTF_MTU = 64 pkg syscall (linux-amd64), const RTF_MULTICAST = 536870912 pkg syscall (linux-amd64), const RTF_NAT = 134217728 pkg syscall (linux-amd64), const RTF_NOFORWARD = 4096 pkg syscall (linux-amd64), const RTF_NONEXTHOP = 2097152 pkg syscall (linux-amd64), const RTF_NOPMTUDISC = 16384 pkg syscall (linux-amd64), const RTF_POLICY = 67108864 pkg syscall (linux-amd64), const RTF_REINSTATE = 8 pkg syscall (linux-amd64), const RTF_REJECT = 512 pkg syscall (linux-amd64), const RTF_STATIC = 1024 pkg syscall (linux-amd64), const RTF_THROW = 8192 pkg syscall (linux-amd64), const RTF_UP = 1 pkg syscall (linux-amd64), const RTF_WINDOW = 128 pkg syscall (linux-amd64), const RTF_XRESOLVE = 2048 pkg syscall (linux-amd64), const RTM_BASE = 16 pkg syscall (linux-amd64), const RTM_DELACTION = 49 pkg syscall (linux-amd64), const RTM_DELADDR = 21 pkg syscall (linux-amd64), const RTM_DELADDRLABEL = 73 pkg syscall (linux-amd64), const RTM_DELLINK = 17 pkg syscall (linux-amd64), const RTM_DELNEIGH = 29 pkg syscall (linux-amd64), const RTM_DELQDISC = 37 pkg syscall (linux-amd64), const RTM_DELROUTE = 25 pkg syscall (linux-amd64), const RTM_DELRULE = 33 pkg syscall (linux-amd64), const RTM_DELTCLASS = 41 pkg syscall (linux-amd64), const RTM_DELTFILTER = 45 pkg syscall (linux-amd64), const RTM_F_CLONED = 512 pkg syscall (linux-amd64), const RTM_F_EQUALIZE = 1024 pkg syscall (linux-amd64), const RTM_F_NOTIFY = 256 pkg syscall (linux-amd64), const RTM_F_PREFIX = 2048 pkg syscall (linux-amd64), const RTM_GETACTION = 50 pkg syscall (linux-amd64), const RTM_GETADDR = 22 pkg syscall (linux-amd64), const RTM_GETADDRLABEL = 74 pkg syscall (linux-amd64), const RTM_GETANYCAST = 62 pkg syscall (linux-amd64), const RTM_GETDCB = 78 pkg syscall (linux-amd64), const RTM_GETLINK = 18 pkg syscall (linux-amd64), const RTM_GETMULTICAST = 58 pkg syscall (linux-amd64), const RTM_GETNEIGH = 30 pkg syscall (linux-amd64), const RTM_GETNEIGHTBL = 66 pkg syscall (linux-amd64), const RTM_GETQDISC = 38 pkg syscall (linux-amd64), const RTM_GETROUTE = 26 pkg syscall (linux-amd64), const RTM_GETRULE = 34 pkg syscall (linux-amd64), const RTM_GETTCLASS = 42 pkg syscall (linux-amd64), const RTM_GETTFILTER = 46 pkg syscall (linux-amd64), const RTM_MAX = 79 pkg syscall (linux-amd64), const RTM_NEWACTION = 48 pkg syscall (linux-amd64), const RTM_NEWADDR = 20 pkg syscall (linux-amd64), const RTM_NEWADDRLABEL = 72 pkg syscall (linux-amd64), const RTM_NEWLINK = 16 pkg syscall (linux-amd64), const RTM_NEWNDUSEROPT = 68 pkg syscall (linux-amd64), const RTM_NEWNEIGH = 28 pkg syscall (linux-amd64), const RTM_NEWNEIGHTBL = 64 pkg syscall (linux-amd64), const RTM_NEWPREFIX = 52 pkg syscall (linux-amd64), const RTM_NEWQDISC = 36 pkg syscall (linux-amd64), const RTM_NEWROUTE = 24 pkg syscall (linux-amd64), const RTM_NEWRULE = 32 pkg syscall (linux-amd64), const RTM_NEWTCLASS = 40 pkg syscall (linux-amd64), const RTM_NEWTFILTER = 44 pkg syscall (linux-amd64), const RTM_NR_FAMILIES = 16 pkg syscall (linux-amd64), const RTM_NR_MSGTYPES = 64 pkg syscall (linux-amd64), const RTM_SETDCB = 79 pkg syscall (linux-amd64), const RTM_SETLINK = 19 pkg syscall (linux-amd64), const RTM_SETNEIGHTBL = 67 pkg syscall (linux-amd64), const RTNH_ALIGNTO = 4 pkg syscall (linux-amd64), const RTNH_F_DEAD = 1 pkg syscall (linux-amd64), const RTNH_F_ONLINK = 4 pkg syscall (linux-amd64), const RTNH_F_PERVASIVE = 2 pkg syscall (linux-amd64), const RTNLGRP_IPV4_IFADDR = 5 pkg syscall (linux-amd64), const RTNLGRP_IPV4_IFADDR ideal-int pkg syscall (linux-amd64), const RTNLGRP_IPV4_MROUTE = 6 pkg syscall (linux-amd64), const RTNLGRP_IPV4_MROUTE ideal-int pkg syscall (linux-amd64), const RTNLGRP_IPV4_ROUTE = 7 pkg syscall (linux-amd64), const RTNLGRP_IPV4_ROUTE ideal-int pkg syscall (linux-amd64), const RTNLGRP_IPV4_RULE = 8 pkg syscall (linux-amd64), const RTNLGRP_IPV4_RULE ideal-int pkg syscall (linux-amd64), const RTNLGRP_IPV6_IFADDR = 9 pkg syscall (linux-amd64), const RTNLGRP_IPV6_IFADDR ideal-int pkg syscall (linux-amd64), const RTNLGRP_IPV6_IFINFO = 12 pkg syscall (linux-amd64), const RTNLGRP_IPV6_IFINFO ideal-int pkg syscall (linux-amd64), const RTNLGRP_IPV6_MROUTE = 10 pkg syscall (linux-amd64), const RTNLGRP_IPV6_MROUTE ideal-int pkg syscall (linux-amd64), const RTNLGRP_IPV6_PREFIX = 18 pkg syscall (linux-amd64), const RTNLGRP_IPV6_PREFIX ideal-int pkg syscall (linux-amd64), const RTNLGRP_IPV6_ROUTE = 11 pkg syscall (linux-amd64), const RTNLGRP_IPV6_ROUTE ideal-int pkg syscall (linux-amd64), const RTNLGRP_IPV6_RULE = 19 pkg syscall (linux-amd64), const RTNLGRP_IPV6_RULE ideal-int pkg syscall (linux-amd64), const RTNLGRP_LINK = 1 pkg syscall (linux-amd64), const RTNLGRP_LINK ideal-int pkg syscall (linux-amd64), const RTNLGRP_ND_USEROPT = 20 pkg syscall (linux-amd64), const RTNLGRP_ND_USEROPT ideal-int pkg syscall (linux-amd64), const RTNLGRP_NEIGH = 3 pkg syscall (linux-amd64), const RTNLGRP_NEIGH ideal-int pkg syscall (linux-amd64), const RTNLGRP_NONE = 0 pkg syscall (linux-amd64), const RTNLGRP_NONE ideal-int pkg syscall (linux-amd64), const RTNLGRP_NOTIFY = 2 pkg syscall (linux-amd64), const RTNLGRP_NOTIFY ideal-int pkg syscall (linux-amd64), const RTNLGRP_TC = 4 pkg syscall (linux-amd64), const RTNLGRP_TC ideal-int pkg syscall (linux-amd64), const RTN_ANYCAST = 4 pkg syscall (linux-amd64), const RTN_BLACKHOLE = 6 pkg syscall (linux-amd64), const RTN_BROADCAST = 3 pkg syscall (linux-amd64), const RTN_LOCAL = 2 pkg syscall (linux-amd64), const RTN_MAX = 11 pkg syscall (linux-amd64), const RTN_MULTICAST = 5 pkg syscall (linux-amd64), const RTN_NAT = 10 pkg syscall (linux-amd64), const RTN_PROHIBIT = 8 pkg syscall (linux-amd64), const RTN_THROW = 9 pkg syscall (linux-amd64), const RTN_UNICAST = 1 pkg syscall (linux-amd64), const RTN_UNREACHABLE = 7 pkg syscall (linux-amd64), const RTN_UNSPEC = 0 pkg syscall (linux-amd64), const RTN_XRESOLVE = 11 pkg syscall (linux-amd64), const RTPROT_BIRD = 12 pkg syscall (linux-amd64), const RTPROT_BOOT = 3 pkg syscall (linux-amd64), const RTPROT_DHCP = 16 pkg syscall (linux-amd64), const RTPROT_DNROUTED = 13 pkg syscall (linux-amd64), const RTPROT_GATED = 8 pkg syscall (linux-amd64), const RTPROT_KERNEL = 2 pkg syscall (linux-amd64), const RTPROT_MRT = 10 pkg syscall (linux-amd64), const RTPROT_NTK = 15 pkg syscall (linux-amd64), const RTPROT_RA = 9 pkg syscall (linux-amd64), const RTPROT_REDIRECT = 1 pkg syscall (linux-amd64), const RTPROT_STATIC = 4 pkg syscall (linux-amd64), const RTPROT_UNSPEC = 0 pkg syscall (linux-amd64), const RTPROT_XORP = 14 pkg syscall (linux-amd64), const RTPROT_ZEBRA = 11 pkg syscall (linux-amd64), const RT_CLASS_DEFAULT = 253 pkg syscall (linux-amd64), const RT_CLASS_LOCAL = 255 pkg syscall (linux-amd64), const RT_CLASS_MAIN = 254 pkg syscall (linux-amd64), const RT_CLASS_MAX = 255 pkg syscall (linux-amd64), const RT_CLASS_UNSPEC = 0 pkg syscall (linux-amd64), const RT_SCOPE_HOST = 254 pkg syscall (linux-amd64), const RT_SCOPE_LINK = 253 pkg syscall (linux-amd64), const RT_SCOPE_NOWHERE = 255 pkg syscall (linux-amd64), const RT_SCOPE_SITE = 200 pkg syscall (linux-amd64), const RT_SCOPE_UNIVERSE = 0 pkg syscall (linux-amd64), const RT_TABLE_COMPAT = 252 pkg syscall (linux-amd64), const RT_TABLE_DEFAULT = 253 pkg syscall (linux-amd64), const RT_TABLE_LOCAL = 255 pkg syscall (linux-amd64), const RT_TABLE_MAIN = 254 pkg syscall (linux-amd64), const RT_TABLE_MAX = 4294967295 pkg syscall (linux-amd64), const RT_TABLE_UNSPEC = 0 pkg syscall (linux-amd64), const RUSAGE_CHILDREN = -1 pkg syscall (linux-amd64), const RUSAGE_SELF = 0 pkg syscall (linux-amd64), const RUSAGE_THREAD = 1 pkg syscall (linux-amd64), const SCM_CREDENTIALS = 2 pkg syscall (linux-amd64), const SCM_RIGHTS = 1 pkg syscall (linux-amd64), const SCM_TIMESTAMP = 29 pkg syscall (linux-amd64), const SCM_TIMESTAMPING = 37 pkg syscall (linux-amd64), const SCM_TIMESTAMPNS = 35 pkg syscall (linux-amd64), const SIGBUS = 7 pkg syscall (linux-amd64), const SIGCHLD = 17 pkg syscall (linux-amd64), const SIGCLD = 17 pkg syscall (linux-amd64), const SIGCONT = 18 pkg syscall (linux-amd64), const SIGIO = 29 pkg syscall (linux-amd64), const SIGIOT = 6 pkg syscall (linux-amd64), const SIGPOLL = 29 pkg syscall (linux-amd64), const SIGPROF = 27 pkg syscall (linux-amd64), const SIGPWR = 30 pkg syscall (linux-amd64), const SIGSTKFLT = 16 pkg syscall (linux-amd64), const SIGSTOP = 19 pkg syscall (linux-amd64), const SIGSYS = 31 pkg syscall (linux-amd64), const SIGTSTP = 20 pkg syscall (linux-amd64), const SIGTTIN = 21 pkg syscall (linux-amd64), const SIGTTOU = 22 pkg syscall (linux-amd64), const SIGUNUSED = 31 pkg syscall (linux-amd64), const SIGURG = 23 pkg syscall (linux-amd64), const SIGUSR1 = 10 pkg syscall (linux-amd64), const SIGUSR2 = 12 pkg syscall (linux-amd64), const SIGVTALRM = 26 pkg syscall (linux-amd64), const SIGWINCH = 28 pkg syscall (linux-amd64), const SIGXCPU = 24 pkg syscall (linux-amd64), const SIGXFSZ = 25 pkg syscall (linux-amd64), const SIOCADDDLCI = 35200 pkg syscall (linux-amd64), const SIOCADDMULTI = 35121 pkg syscall (linux-amd64), const SIOCADDRT = 35083 pkg syscall (linux-amd64), const SIOCATMARK = 35077 pkg syscall (linux-amd64), const SIOCDARP = 35155 pkg syscall (linux-amd64), const SIOCDELDLCI = 35201 pkg syscall (linux-amd64), const SIOCDELMULTI = 35122 pkg syscall (linux-amd64), const SIOCDELRT = 35084 pkg syscall (linux-amd64), const SIOCDEVPRIVATE = 35312 pkg syscall (linux-amd64), const SIOCDIFADDR = 35126 pkg syscall (linux-amd64), const SIOCDRARP = 35168 pkg syscall (linux-amd64), const SIOCGARP = 35156 pkg syscall (linux-amd64), const SIOCGIFADDR = 35093 pkg syscall (linux-amd64), const SIOCGIFBR = 35136 pkg syscall (linux-amd64), const SIOCGIFBRDADDR = 35097 pkg syscall (linux-amd64), const SIOCGIFCONF = 35090 pkg syscall (linux-amd64), const SIOCGIFCOUNT = 35128 pkg syscall (linux-amd64), const SIOCGIFDSTADDR = 35095 pkg syscall (linux-amd64), const SIOCGIFENCAP = 35109 pkg syscall (linux-amd64), const SIOCGIFFLAGS = 35091 pkg syscall (linux-amd64), const SIOCGIFHWADDR = 35111 pkg syscall (linux-amd64), const SIOCGIFINDEX = 35123 pkg syscall (linux-amd64), const SIOCGIFMAP = 35184 pkg syscall (linux-amd64), const SIOCGIFMEM = 35103 pkg syscall (linux-amd64), const SIOCGIFMETRIC = 35101 pkg syscall (linux-amd64), const SIOCGIFMTU = 35105 pkg syscall (linux-amd64), const SIOCGIFNAME = 35088 pkg syscall (linux-amd64), const SIOCGIFNETMASK = 35099 pkg syscall (linux-amd64), const SIOCGIFPFLAGS = 35125 pkg syscall (linux-amd64), const SIOCGIFSLAVE = 35113 pkg syscall (linux-amd64), const SIOCGIFTXQLEN = 35138 pkg syscall (linux-amd64), const SIOCGPGRP = 35076 pkg syscall (linux-amd64), const SIOCGRARP = 35169 pkg syscall (linux-amd64), const SIOCGSTAMP = 35078 pkg syscall (linux-amd64), const SIOCGSTAMPNS = 35079 pkg syscall (linux-amd64), const SIOCPROTOPRIVATE = 35296 pkg syscall (linux-amd64), const SIOCRTMSG = 35085 pkg syscall (linux-amd64), const SIOCSARP = 35157 pkg syscall (linux-amd64), const SIOCSIFADDR = 35094 pkg syscall (linux-amd64), const SIOCSIFBR = 35137 pkg syscall (linux-amd64), const SIOCSIFBRDADDR = 35098 pkg syscall (linux-amd64), const SIOCSIFDSTADDR = 35096 pkg syscall (linux-amd64), const SIOCSIFENCAP = 35110 pkg syscall (linux-amd64), const SIOCSIFFLAGS = 35092 pkg syscall (linux-amd64), const SIOCSIFHWADDR = 35108 pkg syscall (linux-amd64), const SIOCSIFHWBROADCAST = 35127 pkg syscall (linux-amd64), const SIOCSIFLINK = 35089 pkg syscall (linux-amd64), const SIOCSIFMAP = 35185 pkg syscall (linux-amd64), const SIOCSIFMEM = 35104 pkg syscall (linux-amd64), const SIOCSIFMETRIC = 35102 pkg syscall (linux-amd64), const SIOCSIFMTU = 35106 pkg syscall (linux-amd64), const SIOCSIFNAME = 35107 pkg syscall (linux-amd64), const SIOCSIFNETMASK = 35100 pkg syscall (linux-amd64), const SIOCSIFPFLAGS = 35124 pkg syscall (linux-amd64), const SIOCSIFSLAVE = 35120 pkg syscall (linux-amd64), const SIOCSIFTXQLEN = 35139 pkg syscall (linux-amd64), const SIOCSPGRP = 35074 pkg syscall (linux-amd64), const SIOCSRARP = 35170 pkg syscall (linux-amd64), const SOCK_CLOEXEC = 524288 pkg syscall (linux-amd64), const SOCK_DCCP = 6 pkg syscall (linux-amd64), const SOCK_NONBLOCK = 2048 pkg syscall (linux-amd64), const SOCK_PACKET = 10 pkg syscall (linux-amd64), const SOCK_RDM = 4 pkg syscall (linux-amd64), const SOL_AAL = 265 pkg syscall (linux-amd64), const SOL_ATM = 264 pkg syscall (linux-amd64), const SOL_DECNET = 261 pkg syscall (linux-amd64), const SOL_ICMPV6 = 58 pkg syscall (linux-amd64), const SOL_IP = 0 pkg syscall (linux-amd64), const SOL_IPV6 = 41 pkg syscall (linux-amd64), const SOL_IRDA = 266 pkg syscall (linux-amd64), const SOL_PACKET = 263 pkg syscall (linux-amd64), const SOL_RAW = 255 pkg syscall (linux-amd64), const SOL_SOCKET = 1 pkg syscall (linux-amd64), const SOL_TCP = 6 pkg syscall (linux-amd64), const SOL_X25 = 262 pkg syscall (linux-amd64), const SOMAXCONN = 128 pkg syscall (linux-amd64), const SO_ACCEPTCONN = 30 pkg syscall (linux-amd64), const SO_ATTACH_FILTER = 26 pkg syscall (linux-amd64), const SO_BINDTODEVICE = 25 pkg syscall (linux-amd64), const SO_BROADCAST = 6 pkg syscall (linux-amd64), const SO_BSDCOMPAT = 14 pkg syscall (linux-amd64), const SO_DEBUG = 1 pkg syscall (linux-amd64), const SO_DETACH_FILTER = 27 pkg syscall (linux-amd64), const SO_DOMAIN = 39 pkg syscall (linux-amd64), const SO_DONTROUTE = 5 pkg syscall (linux-amd64), const SO_ERROR = 4 pkg syscall (linux-amd64), const SO_KEEPALIVE = 9 pkg syscall (linux-amd64), const SO_LINGER = 13 pkg syscall (linux-amd64), const SO_MARK = 36 pkg syscall (linux-amd64), const SO_NO_CHECK = 11 pkg syscall (linux-amd64), const SO_OOBINLINE = 10 pkg syscall (linux-amd64), const SO_PASSCRED = 16 pkg syscall (linux-amd64), const SO_PASSSEC = 34 pkg syscall (linux-amd64), const SO_PEERCRED = 17 pkg syscall (linux-amd64), const SO_PEERNAME = 28 pkg syscall (linux-amd64), const SO_PEERSEC = 31 pkg syscall (linux-amd64), const SO_PRIORITY = 12 pkg syscall (linux-amd64), const SO_PROTOCOL = 38 pkg syscall (linux-amd64), const SO_RCVBUF = 8 pkg syscall (linux-amd64), const SO_RCVBUFFORCE = 33 pkg syscall (linux-amd64), const SO_RCVLOWAT = 18 pkg syscall (linux-amd64), const SO_RCVTIMEO = 20 pkg syscall (linux-amd64), const SO_REUSEADDR = 2 pkg syscall (linux-amd64), const SO_RXQ_OVFL = 40 pkg syscall (linux-amd64), const SO_SECURITY_AUTHENTICATION = 22 pkg syscall (linux-amd64), const SO_SECURITY_ENCRYPTION_NETWORK = 24 pkg syscall (linux-amd64), const SO_SECURITY_ENCRYPTION_TRANSPORT = 23 pkg syscall (linux-amd64), const SO_SNDBUF = 7 pkg syscall (linux-amd64), const SO_SNDBUFFORCE = 32 pkg syscall (linux-amd64), const SO_SNDLOWAT = 19 pkg syscall (linux-amd64), const SO_SNDTIMEO = 21 pkg syscall (linux-amd64), const SO_TIMESTAMP = 29 pkg syscall (linux-amd64), const SO_TIMESTAMPING = 37 pkg syscall (linux-amd64), const SO_TIMESTAMPNS = 35 pkg syscall (linux-amd64), const SO_TYPE = 3 pkg syscall (linux-amd64), const SYS_ACCEPT = 43 pkg syscall (linux-amd64), const SYS_ACCEPT4 = 288 pkg syscall (linux-amd64), const SYS_ACCESS = 21 pkg syscall (linux-amd64), const SYS_ACCT = 163 pkg syscall (linux-amd64), const SYS_ADD_KEY = 248 pkg syscall (linux-amd64), const SYS_ADJTIMEX = 159 pkg syscall (linux-amd64), const SYS_AFS_SYSCALL = 183 pkg syscall (linux-amd64), const SYS_ALARM = 37 pkg syscall (linux-amd64), const SYS_ARCH_PRCTL = 158 pkg syscall (linux-amd64), const SYS_BIND = 49 pkg syscall (linux-amd64), const SYS_BRK = 12 pkg syscall (linux-amd64), const SYS_CAPGET = 125 pkg syscall (linux-amd64), const SYS_CAPSET = 126 pkg syscall (linux-amd64), const SYS_CHDIR = 80 pkg syscall (linux-amd64), const SYS_CHMOD = 90 pkg syscall (linux-amd64), const SYS_CHOWN = 92 pkg syscall (linux-amd64), const SYS_CHROOT = 161 pkg syscall (linux-amd64), const SYS_CLOCK_GETRES = 229 pkg syscall (linux-amd64), const SYS_CLOCK_GETTIME = 228 pkg syscall (linux-amd64), const SYS_CLOCK_NANOSLEEP = 230 pkg syscall (linux-amd64), const SYS_CLOCK_SETTIME = 227 pkg syscall (linux-amd64), const SYS_CLONE = 56 pkg syscall (linux-amd64), const SYS_CLOSE = 3 pkg syscall (linux-amd64), const SYS_CONNECT = 42 pkg syscall (linux-amd64), const SYS_CREAT = 85 pkg syscall (linux-amd64), const SYS_CREATE_MODULE = 174 pkg syscall (linux-amd64), const SYS_DELETE_MODULE = 176 pkg syscall (linux-amd64), const SYS_DUP = 32 pkg syscall (linux-amd64), const SYS_DUP2 = 33 pkg syscall (linux-amd64), const SYS_DUP3 = 292 pkg syscall (linux-amd64), const SYS_EPOLL_CREATE = 213 pkg syscall (linux-amd64), const SYS_EPOLL_CREATE1 = 291 pkg syscall (linux-amd64), const SYS_EPOLL_CTL = 233 pkg syscall (linux-amd64), const SYS_EPOLL_CTL_OLD = 214 pkg syscall (linux-amd64), const SYS_EPOLL_PWAIT = 281 pkg syscall (linux-amd64), const SYS_EPOLL_WAIT = 232 pkg syscall (linux-amd64), const SYS_EPOLL_WAIT_OLD = 215 pkg syscall (linux-amd64), const SYS_EVENTFD = 284 pkg syscall (linux-amd64), const SYS_EVENTFD2 = 290 pkg syscall (linux-amd64), const SYS_EXECVE = 59 pkg syscall (linux-amd64), const SYS_EXIT = 60 pkg syscall (linux-amd64), const SYS_EXIT_GROUP = 231 pkg syscall (linux-amd64), const SYS_FACCESSAT = 269 pkg syscall (linux-amd64), const SYS_FADVISE64 = 221 pkg syscall (linux-amd64), const SYS_FALLOCATE = 285 pkg syscall (linux-amd64), const SYS_FANOTIFY_INIT = 300 pkg syscall (linux-amd64), const SYS_FANOTIFY_MARK = 301 pkg syscall (linux-amd64), const SYS_FCHDIR = 81 pkg syscall (linux-amd64), const SYS_FCHMOD = 91 pkg syscall (linux-amd64), const SYS_FCHMODAT = 268 pkg syscall (linux-amd64), const SYS_FCHOWN = 93 pkg syscall (linux-amd64), const SYS_FCHOWNAT = 260 pkg syscall (linux-amd64), const SYS_FCNTL = 72 pkg syscall (linux-amd64), const SYS_FDATASYNC = 75 pkg syscall (linux-amd64), const SYS_FGETXATTR = 193 pkg syscall (linux-amd64), const SYS_FLISTXATTR = 196 pkg syscall (linux-amd64), const SYS_FLOCK = 73 pkg syscall (linux-amd64), const SYS_FORK = 57 pkg syscall (linux-amd64), const SYS_FREMOVEXATTR = 199 pkg syscall (linux-amd64), const SYS_FSETXATTR = 190 pkg syscall (linux-amd64), const SYS_FSTAT = 5 pkg syscall (linux-amd64), const SYS_FSTATFS = 138 pkg syscall (linux-amd64), const SYS_FSYNC = 74 pkg syscall (linux-amd64), const SYS_FTRUNCATE = 77 pkg syscall (linux-amd64), const SYS_FUTEX = 202 pkg syscall (linux-amd64), const SYS_FUTIMESAT = 261 pkg syscall (linux-amd64), const SYS_GETCWD = 79 pkg syscall (linux-amd64), const SYS_GETDENTS = 78 pkg syscall (linux-amd64), const SYS_GETDENTS64 = 217 pkg syscall (linux-amd64), const SYS_GETEGID = 108 pkg syscall (linux-amd64), const SYS_GETEUID = 107 pkg syscall (linux-amd64), const SYS_GETGID = 104 pkg syscall (linux-amd64), const SYS_GETGROUPS = 115 pkg syscall (linux-amd64), const SYS_GETITIMER = 36 pkg syscall (linux-amd64), const SYS_GETPEERNAME = 52 pkg syscall (linux-amd64), const SYS_GETPGID = 121 pkg syscall (linux-amd64), const SYS_GETPGRP = 111 pkg syscall (linux-amd64), const SYS_GETPID = 39 pkg syscall (linux-amd64), const SYS_GETPMSG = 181 pkg syscall (linux-amd64), const SYS_GETPPID = 110 pkg syscall (linux-amd64), const SYS_GETPRIORITY = 140 pkg syscall (linux-amd64), const SYS_GETRESGID = 120 pkg syscall (linux-amd64), const SYS_GETRESUID = 118 pkg syscall (linux-amd64), const SYS_GETRLIMIT = 97 pkg syscall (linux-amd64), const SYS_GETRUSAGE = 98 pkg syscall (linux-amd64), const SYS_GETSID = 124 pkg syscall (linux-amd64), const SYS_GETSOCKNAME = 51 pkg syscall (linux-amd64), const SYS_GETSOCKOPT = 55 pkg syscall (linux-amd64), const SYS_GETTID = 186 pkg syscall (linux-amd64), const SYS_GETTIMEOFDAY = 96 pkg syscall (linux-amd64), const SYS_GETUID = 102 pkg syscall (linux-amd64), const SYS_GETXATTR = 191 pkg syscall (linux-amd64), const SYS_GET_KERNEL_SYMS = 177 pkg syscall (linux-amd64), const SYS_GET_MEMPOLICY = 239 pkg syscall (linux-amd64), const SYS_GET_ROBUST_LIST = 274 pkg syscall (linux-amd64), const SYS_GET_THREAD_AREA = 211 pkg syscall (linux-amd64), const SYS_INIT_MODULE = 175 pkg syscall (linux-amd64), const SYS_INOTIFY_ADD_WATCH = 254 pkg syscall (linux-amd64), const SYS_INOTIFY_INIT = 253 pkg syscall (linux-amd64), const SYS_INOTIFY_INIT1 = 294 pkg syscall (linux-amd64), const SYS_INOTIFY_RM_WATCH = 255 pkg syscall (linux-amd64), const SYS_IOCTL = 16 pkg syscall (linux-amd64), const SYS_IOPERM = 173 pkg syscall (linux-amd64), const SYS_IOPL = 172 pkg syscall (linux-amd64), const SYS_IOPRIO_GET = 252 pkg syscall (linux-amd64), const SYS_IOPRIO_SET = 251 pkg syscall (linux-amd64), const SYS_IO_CANCEL = 210 pkg syscall (linux-amd64), const SYS_IO_DESTROY = 207 pkg syscall (linux-amd64), const SYS_IO_GETEVENTS = 208 pkg syscall (linux-amd64), const SYS_IO_SETUP = 206 pkg syscall (linux-amd64), const SYS_IO_SUBMIT = 209 pkg syscall (linux-amd64), const SYS_KEXEC_LOAD = 246 pkg syscall (linux-amd64), const SYS_KEYCTL = 250 pkg syscall (linux-amd64), const SYS_KILL = 62 pkg syscall (linux-amd64), const SYS_LCHOWN = 94 pkg syscall (linux-amd64), const SYS_LGETXATTR = 192 pkg syscall (linux-amd64), const SYS_LINK = 86 pkg syscall (linux-amd64), const SYS_LINKAT = 265 pkg syscall (linux-amd64), const SYS_LISTEN = 50 pkg syscall (linux-amd64), const SYS_LISTXATTR = 194 pkg syscall (linux-amd64), const SYS_LLISTXATTR = 195 pkg syscall (linux-amd64), const SYS_LOOKUP_DCOOKIE = 212 pkg syscall (linux-amd64), const SYS_LREMOVEXATTR = 198 pkg syscall (linux-amd64), const SYS_LSEEK = 8 pkg syscall (linux-amd64), const SYS_LSETXATTR = 189 pkg syscall (linux-amd64), const SYS_LSTAT = 6 pkg syscall (linux-amd64), const SYS_MADVISE = 28 pkg syscall (linux-amd64), const SYS_MBIND = 237 pkg syscall (linux-amd64), const SYS_MIGRATE_PAGES = 256 pkg syscall (linux-amd64), const SYS_MINCORE = 27 pkg syscall (linux-amd64), const SYS_MKDIR = 83 pkg syscall (linux-amd64), const SYS_MKDIRAT = 258 pkg syscall (linux-amd64), const SYS_MKNOD = 133 pkg syscall (linux-amd64), const SYS_MKNODAT = 259 pkg syscall (linux-amd64), const SYS_MLOCK = 149 pkg syscall (linux-amd64), const SYS_MLOCKALL = 151 pkg syscall (linux-amd64), const SYS_MMAP = 9 pkg syscall (linux-amd64), const SYS_MODIFY_LDT = 154 pkg syscall (linux-amd64), const SYS_MOUNT = 165 pkg syscall (linux-amd64), const SYS_MOVE_PAGES = 279 pkg syscall (linux-amd64), const SYS_MPROTECT = 10 pkg syscall (linux-amd64), const SYS_MQ_GETSETATTR = 245 pkg syscall (linux-amd64), const SYS_MQ_NOTIFY = 244 pkg syscall (linux-amd64), const SYS_MQ_OPEN = 240 pkg syscall (linux-amd64), const SYS_MQ_TIMEDRECEIVE = 243 pkg syscall (linux-amd64), const SYS_MQ_TIMEDSEND = 242 pkg syscall (linux-amd64), const SYS_MQ_UNLINK = 241 pkg syscall (linux-amd64), const SYS_MREMAP = 25 pkg syscall (linux-amd64), const SYS_MSGCTL = 71 pkg syscall (linux-amd64), const SYS_MSGGET = 68 pkg syscall (linux-amd64), const SYS_MSGRCV = 70 pkg syscall (linux-amd64), const SYS_MSGSND = 69 pkg syscall (linux-amd64), const SYS_MSYNC = 26 pkg syscall (linux-amd64), const SYS_MUNLOCK = 150 pkg syscall (linux-amd64), const SYS_MUNLOCKALL = 152 pkg syscall (linux-amd64), const SYS_MUNMAP = 11 pkg syscall (linux-amd64), const SYS_NANOSLEEP = 35 pkg syscall (linux-amd64), const SYS_NEWFSTATAT = 262 pkg syscall (linux-amd64), const SYS_NFSSERVCTL = 180 pkg syscall (linux-amd64), const SYS_OPEN = 2 pkg syscall (linux-amd64), const SYS_OPENAT = 257 pkg syscall (linux-amd64), const SYS_PAUSE = 34 pkg syscall (linux-amd64), const SYS_PERF_EVENT_OPEN = 298 pkg syscall (linux-amd64), const SYS_PERSONALITY = 135 pkg syscall (linux-amd64), const SYS_PIPE = 22 pkg syscall (linux-amd64), const SYS_PIPE2 = 293 pkg syscall (linux-amd64), const SYS_PIVOT_ROOT = 155 pkg syscall (linux-amd64), const SYS_POLL = 7 pkg syscall (linux-amd64), const SYS_PPOLL = 271 pkg syscall (linux-amd64), const SYS_PRCTL = 157 pkg syscall (linux-amd64), const SYS_PREAD64 = 17 pkg syscall (linux-amd64), const SYS_PREADV = 295 pkg syscall (linux-amd64), const SYS_PRLIMIT64 = 302 pkg syscall (linux-amd64), const SYS_PSELECT6 = 270 pkg syscall (linux-amd64), const SYS_PTRACE = 101 pkg syscall (linux-amd64), const SYS_PUTPMSG = 182 pkg syscall (linux-amd64), const SYS_PWRITE64 = 18 pkg syscall (linux-amd64), const SYS_PWRITEV = 296 pkg syscall (linux-amd64), const SYS_QUERY_MODULE = 178 pkg syscall (linux-amd64), const SYS_QUOTACTL = 179 pkg syscall (linux-amd64), const SYS_READ = 0 pkg syscall (linux-amd64), const SYS_READAHEAD = 187 pkg syscall (linux-amd64), const SYS_READLINK = 89 pkg syscall (linux-amd64), const SYS_READLINKAT = 267 pkg syscall (linux-amd64), const SYS_READV = 19 pkg syscall (linux-amd64), const SYS_REBOOT = 169 pkg syscall (linux-amd64), const SYS_RECVFROM = 45 pkg syscall (linux-amd64), const SYS_RECVMMSG = 299 pkg syscall (linux-amd64), const SYS_RECVMSG = 47 pkg syscall (linux-amd64), const SYS_REMAP_FILE_PAGES = 216 pkg syscall (linux-amd64), const SYS_REMOVEXATTR = 197 pkg syscall (linux-amd64), const SYS_RENAME = 82 pkg syscall (linux-amd64), const SYS_RENAMEAT = 264 pkg syscall (linux-amd64), const SYS_REQUEST_KEY = 249 pkg syscall (linux-amd64), const SYS_RESTART_SYSCALL = 219 pkg syscall (linux-amd64), const SYS_RMDIR = 84 pkg syscall (linux-amd64), const SYS_RT_SIGACTION = 13 pkg syscall (linux-amd64), const SYS_RT_SIGPENDING = 127 pkg syscall (linux-amd64), const SYS_RT_SIGPROCMASK = 14 pkg syscall (linux-amd64), const SYS_RT_SIGQUEUEINFO = 129 pkg syscall (linux-amd64), const SYS_RT_SIGRETURN = 15 pkg syscall (linux-amd64), const SYS_RT_SIGSUSPEND = 130 pkg syscall (linux-amd64), const SYS_RT_SIGTIMEDWAIT = 128 pkg syscall (linux-amd64), const SYS_RT_TGSIGQUEUEINFO = 297 pkg syscall (linux-amd64), const SYS_SCHED_GETAFFINITY = 204 pkg syscall (linux-amd64), const SYS_SCHED_GETPARAM = 143 pkg syscall (linux-amd64), const SYS_SCHED_GETSCHEDULER = 145 pkg syscall (linux-amd64), const SYS_SCHED_GET_PRIORITY_MAX = 146 pkg syscall (linux-amd64), const SYS_SCHED_GET_PRIORITY_MIN = 147 pkg syscall (linux-amd64), const SYS_SCHED_RR_GET_INTERVAL = 148 pkg syscall (linux-amd64), const SYS_SCHED_SETAFFINITY = 203 pkg syscall (linux-amd64), const SYS_SCHED_SETPARAM = 142 pkg syscall (linux-amd64), const SYS_SCHED_SETSCHEDULER = 144 pkg syscall (linux-amd64), const SYS_SCHED_YIELD = 24 pkg syscall (linux-amd64), const SYS_SECURITY = 185 pkg syscall (linux-amd64), const SYS_SELECT = 23 pkg syscall (linux-amd64), const SYS_SEMCTL = 66 pkg syscall (linux-amd64), const SYS_SEMGET = 64 pkg syscall (linux-amd64), const SYS_SEMOP = 65 pkg syscall (linux-amd64), const SYS_SEMTIMEDOP = 220 pkg syscall (linux-amd64), const SYS_SENDFILE = 40 pkg syscall (linux-amd64), const SYS_SENDMSG = 46 pkg syscall (linux-amd64), const SYS_SENDTO = 44 pkg syscall (linux-amd64), const SYS_SETDOMAINNAME = 171 pkg syscall (linux-amd64), const SYS_SETFSGID = 123 pkg syscall (linux-amd64), const SYS_SETFSUID = 122 pkg syscall (linux-amd64), const SYS_SETGID = 106 pkg syscall (linux-amd64), const SYS_SETGROUPS = 116 pkg syscall (linux-amd64), const SYS_SETHOSTNAME = 170 pkg syscall (linux-amd64), const SYS_SETITIMER = 38 pkg syscall (linux-amd64), const SYS_SETPGID = 109 pkg syscall (linux-amd64), const SYS_SETPRIORITY = 141 pkg syscall (linux-amd64), const SYS_SETREGID = 114 pkg syscall (linux-amd64), const SYS_SETRESGID = 119 pkg syscall (linux-amd64), const SYS_SETRESUID = 117 pkg syscall (linux-amd64), const SYS_SETREUID = 113 pkg syscall (linux-amd64), const SYS_SETRLIMIT = 160 pkg syscall (linux-amd64), const SYS_SETSID = 112 pkg syscall (linux-amd64), const SYS_SETSOCKOPT = 54 pkg syscall (linux-amd64), const SYS_SETTIMEOFDAY = 164 pkg syscall (linux-amd64), const SYS_SETUID = 105 pkg syscall (linux-amd64), const SYS_SETXATTR = 188 pkg syscall (linux-amd64), const SYS_SET_MEMPOLICY = 238 pkg syscall (linux-amd64), const SYS_SET_ROBUST_LIST = 273 pkg syscall (linux-amd64), const SYS_SET_THREAD_AREA = 205 pkg syscall (linux-amd64), const SYS_SET_TID_ADDRESS = 218 pkg syscall (linux-amd64), const SYS_SHMAT = 30 pkg syscall (linux-amd64), const SYS_SHMCTL = 31 pkg syscall (linux-amd64), const SYS_SHMDT = 67 pkg syscall (linux-amd64), const SYS_SHMGET = 29 pkg syscall (linux-amd64), const SYS_SHUTDOWN = 48 pkg syscall (linux-amd64), const SYS_SIGALTSTACK = 131 pkg syscall (linux-amd64), const SYS_SIGNALFD = 282 pkg syscall (linux-amd64), const SYS_SIGNALFD4 = 289 pkg syscall (linux-amd64), const SYS_SOCKET = 41 pkg syscall (linux-amd64), const SYS_SOCKETPAIR = 53 pkg syscall (linux-amd64), const SYS_SPLICE = 275 pkg syscall (linux-amd64), const SYS_STAT = 4 pkg syscall (linux-amd64), const SYS_STATFS = 137 pkg syscall (linux-amd64), const SYS_SWAPOFF = 168 pkg syscall (linux-amd64), const SYS_SWAPON = 167 pkg syscall (linux-amd64), const SYS_SYMLINK = 88 pkg syscall (linux-amd64), const SYS_SYMLINKAT = 266 pkg syscall (linux-amd64), const SYS_SYNC = 162 pkg syscall (linux-amd64), const SYS_SYNC_FILE_RANGE = 277 pkg syscall (linux-amd64), const SYS_SYSFS = 139 pkg syscall (linux-amd64), const SYS_SYSINFO = 99 pkg syscall (linux-amd64), const SYS_SYSLOG = 103 pkg syscall (linux-amd64), const SYS_TEE = 276 pkg syscall (linux-amd64), const SYS_TGKILL = 234 pkg syscall (linux-amd64), const SYS_TIME = 201 pkg syscall (linux-amd64), const SYS_TIMERFD_CREATE = 283 pkg syscall (linux-amd64), const SYS_TIMERFD_GETTIME = 287 pkg syscall (linux-amd64), const SYS_TIMERFD_SETTIME = 286 pkg syscall (linux-amd64), const SYS_TIMER_CREATE = 222 pkg syscall (linux-amd64), const SYS_TIMER_DELETE = 226 pkg syscall (linux-amd64), const SYS_TIMER_GETOVERRUN = 225 pkg syscall (linux-amd64), const SYS_TIMER_GETTIME = 224 pkg syscall (linux-amd64), const SYS_TIMER_SETTIME = 223 pkg syscall (linux-amd64), const SYS_TIMES = 100 pkg syscall (linux-amd64), const SYS_TKILL = 200 pkg syscall (linux-amd64), const SYS_TRUNCATE = 76 pkg syscall (linux-amd64), const SYS_TUXCALL = 184 pkg syscall (linux-amd64), const SYS_UMASK = 95 pkg syscall (linux-amd64), const SYS_UMOUNT2 = 166 pkg syscall (linux-amd64), const SYS_UNAME = 63 pkg syscall (linux-amd64), const SYS_UNLINK = 87 pkg syscall (linux-amd64), const SYS_UNLINKAT = 263 pkg syscall (linux-amd64), const SYS_UNSHARE = 272 pkg syscall (linux-amd64), const SYS_USELIB = 134 pkg syscall (linux-amd64), const SYS_USTAT = 136 pkg syscall (linux-amd64), const SYS_UTIME = 132 pkg syscall (linux-amd64), const SYS_UTIMENSAT = 280 pkg syscall (linux-amd64), const SYS_UTIMES = 235 pkg syscall (linux-amd64), const SYS_VFORK = 58 pkg syscall (linux-amd64), const SYS_VHANGUP = 153 pkg syscall (linux-amd64), const SYS_VMSPLICE = 278 pkg syscall (linux-amd64), const SYS_VSERVER = 236 pkg syscall (linux-amd64), const SYS_WAIT4 = 61 pkg syscall (linux-amd64), const SYS_WAITID = 247 pkg syscall (linux-amd64), const SYS_WRITE = 1 pkg syscall (linux-amd64), const SYS_WRITEV = 20 pkg syscall (linux-amd64), const SYS__SYSCTL = 156 pkg syscall (linux-amd64), const S_BLKSIZE = 512 pkg syscall (linux-amd64), const S_IEXEC = 64 pkg syscall (linux-amd64), const S_IFMT = 61440 pkg syscall (linux-amd64), const S_IREAD = 256 pkg syscall (linux-amd64), const S_IRGRP = 32 pkg syscall (linux-amd64), const S_IROTH = 4 pkg syscall (linux-amd64), const S_IRWXG = 56 pkg syscall (linux-amd64), const S_IRWXO = 7 pkg syscall (linux-amd64), const S_IRWXU = 448 pkg syscall (linux-amd64), const S_IWGRP = 16 pkg syscall (linux-amd64), const S_IWOTH = 2 pkg syscall (linux-amd64), const S_IWRITE = 128 pkg syscall (linux-amd64), const S_IXGRP = 8 pkg syscall (linux-amd64), const S_IXOTH = 1 pkg syscall (linux-amd64), const SizeofCmsghdr = 16 pkg syscall (linux-amd64), const SizeofIPMreq = 8 pkg syscall (linux-amd64), const SizeofIPMreqn = 12 pkg syscall (linux-amd64), const SizeofIPv6Mreq = 20 pkg syscall (linux-amd64), const SizeofIfAddrmsg = 8 pkg syscall (linux-amd64), const SizeofIfInfomsg = 16 pkg syscall (linux-amd64), const SizeofInet4Pktinfo = 12 pkg syscall (linux-amd64), const SizeofInet6Pktinfo = 20 pkg syscall (linux-amd64), const SizeofInotifyEvent = 16 pkg syscall (linux-amd64), const SizeofLinger = 8 pkg syscall (linux-amd64), const SizeofMsghdr = 56 pkg syscall (linux-amd64), const SizeofNlAttr = 4 pkg syscall (linux-amd64), const SizeofNlMsgerr = 20 pkg syscall (linux-amd64), const SizeofNlMsghdr = 16 pkg syscall (linux-amd64), const SizeofRtAttr = 4 pkg syscall (linux-amd64), const SizeofRtGenmsg = 1 pkg syscall (linux-amd64), const SizeofRtMsg = 12 pkg syscall (linux-amd64), const SizeofRtNexthop = 8 pkg syscall (linux-amd64), const SizeofSockFilter = 8 pkg syscall (linux-amd64), const SizeofSockFprog = 16 pkg syscall (linux-amd64), const SizeofSockaddrAny = 112 pkg syscall (linux-amd64), const SizeofSockaddrInet4 = 16 pkg syscall (linux-amd64), const SizeofSockaddrInet6 = 28 pkg syscall (linux-amd64), const SizeofSockaddrLinklayer = 20 pkg syscall (linux-amd64), const SizeofSockaddrNetlink = 12 pkg syscall (linux-amd64), const SizeofSockaddrUnix = 110 pkg syscall (linux-amd64), const SizeofTCPInfo = 104 pkg syscall (linux-amd64), const SizeofTCPInfo ideal-int pkg syscall (linux-amd64), const SizeofUcred = 12 pkg syscall (linux-amd64), const TCGETS = 21505 pkg syscall (linux-amd64), const TCP_CONGESTION = 13 pkg syscall (linux-amd64), const TCP_CORK = 3 pkg syscall (linux-amd64), const TCP_DEFER_ACCEPT = 9 pkg syscall (linux-amd64), const TCP_INFO = 11 pkg syscall (linux-amd64), const TCP_KEEPCNT = 6 pkg syscall (linux-amd64), const TCP_KEEPIDLE = 4 pkg syscall (linux-amd64), const TCP_KEEPINTVL = 5 pkg syscall (linux-amd64), const TCP_LINGER2 = 8 pkg syscall (linux-amd64), const TCP_MAXSEG = 2 pkg syscall (linux-amd64), const TCP_MAXWIN = 65535 pkg syscall (linux-amd64), const TCP_MAX_WINSHIFT = 14 pkg syscall (linux-amd64), const TCP_MD5SIG = 14 pkg syscall (linux-amd64), const TCP_MD5SIG_MAXKEYLEN = 80 pkg syscall (linux-amd64), const TCP_MSS = 512 pkg syscall (linux-amd64), const TCP_QUICKACK = 12 pkg syscall (linux-amd64), const TCP_SYNCNT = 7 pkg syscall (linux-amd64), const TCP_WINDOW_CLAMP = 10 pkg syscall (linux-amd64), const TCSETS = 21506 pkg syscall (linux-amd64), const TIOCCBRK = 21544 pkg syscall (linux-amd64), const TIOCCONS = 21533 pkg syscall (linux-amd64), const TIOCEXCL = 21516 pkg syscall (linux-amd64), const TIOCGDEV = 2147767346 pkg syscall (linux-amd64), const TIOCGETD = 21540 pkg syscall (linux-amd64), const TIOCGICOUNT = 21597 pkg syscall (linux-amd64), const TIOCGLCKTRMIOS = 21590 pkg syscall (linux-amd64), const TIOCGPGRP = 21519 pkg syscall (linux-amd64), const TIOCGPTN = 2147767344 pkg syscall (linux-amd64), const TIOCGRS485 = 21550 pkg syscall (linux-amd64), const TIOCGSERIAL = 21534 pkg syscall (linux-amd64), const TIOCGSID = 21545 pkg syscall (linux-amd64), const TIOCGSOFTCAR = 21529 pkg syscall (linux-amd64), const TIOCGWINSZ = 21523 pkg syscall (linux-amd64), const TIOCINQ = 21531 pkg syscall (linux-amd64), const TIOCLINUX = 21532 pkg syscall (linux-amd64), const TIOCMBIC = 21527 pkg syscall (linux-amd64), const TIOCMBIS = 21526 pkg syscall (linux-amd64), const TIOCMGET = 21525 pkg syscall (linux-amd64), const TIOCMIWAIT = 21596 pkg syscall (linux-amd64), const TIOCMSET = 21528 pkg syscall (linux-amd64), const TIOCM_CAR = 64 pkg syscall (linux-amd64), const TIOCM_CD = 64 pkg syscall (linux-amd64), const TIOCM_CTS = 32 pkg syscall (linux-amd64), const TIOCM_DSR = 256 pkg syscall (linux-amd64), const TIOCM_DTR = 2 pkg syscall (linux-amd64), const TIOCM_LE = 1 pkg syscall (linux-amd64), const TIOCM_RI = 128 pkg syscall (linux-amd64), const TIOCM_RNG = 128 pkg syscall (linux-amd64), const TIOCM_RTS = 4 pkg syscall (linux-amd64), const TIOCM_SR = 16 pkg syscall (linux-amd64), const TIOCM_ST = 8 pkg syscall (linux-amd64), const TIOCNOTTY = 21538 pkg syscall (linux-amd64), const TIOCNXCL = 21517 pkg syscall (linux-amd64), const TIOCOUTQ = 21521 pkg syscall (linux-amd64), const TIOCPKT = 21536 pkg syscall (linux-amd64), const TIOCPKT_DATA = 0 pkg syscall (linux-amd64), const TIOCPKT_DOSTOP = 32 pkg syscall (linux-amd64), const TIOCPKT_FLUSHREAD = 1 pkg syscall (linux-amd64), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (linux-amd64), const TIOCPKT_IOCTL = 64 pkg syscall (linux-amd64), const TIOCPKT_NOSTOP = 16 pkg syscall (linux-amd64), const TIOCPKT_START = 8 pkg syscall (linux-amd64), const TIOCPKT_STOP = 4 pkg syscall (linux-amd64), const TIOCSBRK = 21543 pkg syscall (linux-amd64), const TIOCSCTTY = 21518 pkg syscall (linux-amd64), const TIOCSERCONFIG = 21587 pkg syscall (linux-amd64), const TIOCSERGETLSR = 21593 pkg syscall (linux-amd64), const TIOCSERGETMULTI = 21594 pkg syscall (linux-amd64), const TIOCSERGSTRUCT = 21592 pkg syscall (linux-amd64), const TIOCSERGWILD = 21588 pkg syscall (linux-amd64), const TIOCSERSETMULTI = 21595 pkg syscall (linux-amd64), const TIOCSERSWILD = 21589 pkg syscall (linux-amd64), const TIOCSER_TEMT = 1 pkg syscall (linux-amd64), const TIOCSETD = 21539 pkg syscall (linux-amd64), const TIOCSIG = 1074025526 pkg syscall (linux-amd64), const TIOCSLCKTRMIOS = 21591 pkg syscall (linux-amd64), const TIOCSPGRP = 21520 pkg syscall (linux-amd64), const TIOCSPTLCK = 1074025521 pkg syscall (linux-amd64), const TIOCSRS485 = 21551 pkg syscall (linux-amd64), const TIOCSSERIAL = 21535 pkg syscall (linux-amd64), const TIOCSSOFTCAR = 21530 pkg syscall (linux-amd64), const TIOCSTI = 21522 pkg syscall (linux-amd64), const TIOCSWINSZ = 21524 pkg syscall (linux-amd64), const TOSTOP = 256 pkg syscall (linux-amd64), const TUNATTACHFILTER = 1074812117 pkg syscall (linux-amd64), const TUNDETACHFILTER = 1074812118 pkg syscall (linux-amd64), const TUNGETFEATURES = 2147767503 pkg syscall (linux-amd64), const TUNGETIFF = 2147767506 pkg syscall (linux-amd64), const TUNGETSNDBUF = 2147767507 pkg syscall (linux-amd64), const TUNGETVNETHDRSZ = 2147767511 pkg syscall (linux-amd64), const TUNSETDEBUG = 1074025673 pkg syscall (linux-amd64), const TUNSETGROUP = 1074025678 pkg syscall (linux-amd64), const TUNSETIFF = 1074025674 pkg syscall (linux-amd64), const TUNSETLINK = 1074025677 pkg syscall (linux-amd64), const TUNSETNOCSUM = 1074025672 pkg syscall (linux-amd64), const TUNSETOFFLOAD = 1074025680 pkg syscall (linux-amd64), const TUNSETOWNER = 1074025676 pkg syscall (linux-amd64), const TUNSETPERSIST = 1074025675 pkg syscall (linux-amd64), const TUNSETSNDBUF = 1074025684 pkg syscall (linux-amd64), const TUNSETTXFILTER = 1074025681 pkg syscall (linux-amd64), const TUNSETVNETHDRSZ = 1074025688 pkg syscall (linux-amd64), const VDISCARD = 13 pkg syscall (linux-amd64), const VEOF = 4 pkg syscall (linux-amd64), const VEOL = 11 pkg syscall (linux-amd64), const VEOL2 = 16 pkg syscall (linux-amd64), const VERASE = 2 pkg syscall (linux-amd64), const VINTR = 0 pkg syscall (linux-amd64), const VKILL = 3 pkg syscall (linux-amd64), const VLNEXT = 15 pkg syscall (linux-amd64), const VMIN = 6 pkg syscall (linux-amd64), const VQUIT = 1 pkg syscall (linux-amd64), const VREPRINT = 12 pkg syscall (linux-amd64), const VSTART = 8 pkg syscall (linux-amd64), const VSTOP = 9 pkg syscall (linux-amd64), const VSUSP = 10 pkg syscall (linux-amd64), const VSWTC = 7 pkg syscall (linux-amd64), const VTIME = 5 pkg syscall (linux-amd64), const VWERASE = 14 pkg syscall (linux-amd64), const WALL = 1073741824 pkg syscall (linux-amd64), const WCLONE = 2147483648 pkg syscall (linux-amd64), const WCONTINUED = 8 pkg syscall (linux-amd64), const WEXITED = 4 pkg syscall (linux-amd64), const WNOHANG = 1 pkg syscall (linux-amd64), const WNOTHREAD = 536870912 pkg syscall (linux-amd64), const WNOWAIT = 16777216 pkg syscall (linux-amd64), const WORDSIZE = 64 pkg syscall (linux-amd64), const WSTOPPED = 2 pkg syscall (linux-amd64), const WUNTRACED = 2 pkg syscall (linux-amd64), const XCASE = 4 pkg syscall (linux-amd64), func Accept4(int, int) (int, Sockaddr, error) pkg syscall (linux-amd64), func GetsockoptUcred(int, int, int) (*Ucred, error) pkg syscall (linux-amd64), func Getxattr(string, string, []uint8) (int, error) pkg syscall (linux-amd64), func Listxattr(string, []uint8) (int, error) pkg syscall (linux-amd64), func Pipe2([]int, int) error pkg syscall (linux-amd64), func PtraceSyscall(int, int) error pkg syscall (linux-amd64), func Removexattr(string, string) error pkg syscall (linux-amd64), func Setxattr(string, string, []uint8, int) error pkg syscall (linux-amd64), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (linux-amd64), type SysProcAttr struct, Ctty int pkg syscall (linux-amd64), type TCPInfo struct pkg syscall (linux-amd64), type TCPInfo struct, Advmss uint32 pkg syscall (linux-amd64), type TCPInfo struct, Ato uint32 pkg syscall (linux-amd64), type TCPInfo struct, Backoff uint8 pkg syscall (linux-amd64), type TCPInfo struct, Ca_state uint8 pkg syscall (linux-amd64), type TCPInfo struct, Fackets uint32 pkg syscall (linux-amd64), type TCPInfo struct, Last_ack_recv uint32 pkg syscall (linux-amd64), type TCPInfo struct, Last_ack_sent uint32 pkg syscall (linux-amd64), type TCPInfo struct, Last_data_recv uint32 pkg syscall (linux-amd64), type TCPInfo struct, Last_data_sent uint32 pkg syscall (linux-amd64), type TCPInfo struct, Lost uint32 pkg syscall (linux-amd64), type TCPInfo struct, Options uint8 pkg syscall (linux-amd64), type TCPInfo struct, Pad_cgo_0 [2]uint8 pkg syscall (linux-amd64), type TCPInfo struct, Pmtu uint32 pkg syscall (linux-amd64), type TCPInfo struct, Probes uint8 pkg syscall (linux-amd64), type TCPInfo struct, Rcv_mss uint32 pkg syscall (linux-amd64), type TCPInfo struct, Rcv_rtt uint32 pkg syscall (linux-amd64), type TCPInfo struct, Rcv_space uint32 pkg syscall (linux-amd64), type TCPInfo struct, Rcv_ssthresh uint32 pkg syscall (linux-amd64), type TCPInfo struct, Reordering uint32 pkg syscall (linux-amd64), type TCPInfo struct, Retrans uint32 pkg syscall (linux-amd64), type TCPInfo struct, Retransmits uint8 pkg syscall (linux-amd64), type TCPInfo struct, Rto uint32 pkg syscall (linux-amd64), type TCPInfo struct, Rtt uint32 pkg syscall (linux-amd64), type TCPInfo struct, Rttvar uint32 pkg syscall (linux-amd64), type TCPInfo struct, Sacked uint32 pkg syscall (linux-amd64), type TCPInfo struct, Snd_cwnd uint32 pkg syscall (linux-amd64), type TCPInfo struct, Snd_mss uint32 pkg syscall (linux-amd64), type TCPInfo struct, Snd_ssthresh uint32 pkg syscall (linux-amd64), type TCPInfo struct, State uint8 pkg syscall (linux-amd64), type TCPInfo struct, Total_retrans uint32 pkg syscall (linux-amd64), type TCPInfo struct, Unacked uint32 pkg syscall (linux-amd64-cgo), const AF_ALG = 38 pkg syscall (linux-amd64-cgo), const AF_APPLETALK = 5 pkg syscall (linux-amd64-cgo), const AF_ASH = 18 pkg syscall (linux-amd64-cgo), const AF_ATMPVC = 8 pkg syscall (linux-amd64-cgo), const AF_ATMSVC = 20 pkg syscall (linux-amd64-cgo), const AF_AX25 = 3 pkg syscall (linux-amd64-cgo), const AF_BLUETOOTH = 31 pkg syscall (linux-amd64-cgo), const AF_BRIDGE = 7 pkg syscall (linux-amd64-cgo), const AF_CAIF = 37 pkg syscall (linux-amd64-cgo), const AF_CAN = 29 pkg syscall (linux-amd64-cgo), const AF_DECnet = 12 pkg syscall (linux-amd64-cgo), const AF_ECONET = 19 pkg syscall (linux-amd64-cgo), const AF_FILE = 1 pkg syscall (linux-amd64-cgo), const AF_IEEE802154 = 36 pkg syscall (linux-amd64-cgo), const AF_INET6 = 10 pkg syscall (linux-amd64-cgo), const AF_IPX = 4 pkg syscall (linux-amd64-cgo), const AF_IRDA = 23 pkg syscall (linux-amd64-cgo), const AF_ISDN = 34 pkg syscall (linux-amd64-cgo), const AF_IUCV = 32 pkg syscall (linux-amd64-cgo), const AF_KEY = 15 pkg syscall (linux-amd64-cgo), const AF_LLC = 26 pkg syscall (linux-amd64-cgo), const AF_LOCAL = 1 pkg syscall (linux-amd64-cgo), const AF_MAX = 39 pkg syscall (linux-amd64-cgo), const AF_NETBEUI = 13 pkg syscall (linux-amd64-cgo), const AF_NETLINK = 16 pkg syscall (linux-amd64-cgo), const AF_NETROM = 6 pkg syscall (linux-amd64-cgo), const AF_PACKET = 17 pkg syscall (linux-amd64-cgo), const AF_PHONET = 35 pkg syscall (linux-amd64-cgo), const AF_PPPOX = 24 pkg syscall (linux-amd64-cgo), const AF_RDS = 21 pkg syscall (linux-amd64-cgo), const AF_ROSE = 11 pkg syscall (linux-amd64-cgo), const AF_ROUTE = 16 pkg syscall (linux-amd64-cgo), const AF_RXRPC = 33 pkg syscall (linux-amd64-cgo), const AF_SECURITY = 14 pkg syscall (linux-amd64-cgo), const AF_SNA = 22 pkg syscall (linux-amd64-cgo), const AF_TIPC = 30 pkg syscall (linux-amd64-cgo), const AF_WANPIPE = 25 pkg syscall (linux-amd64-cgo), const AF_X25 = 9 pkg syscall (linux-amd64-cgo), const ARPHRD_ADAPT = 264 pkg syscall (linux-amd64-cgo), const ARPHRD_APPLETLK = 8 pkg syscall (linux-amd64-cgo), const ARPHRD_ARCNET = 7 pkg syscall (linux-amd64-cgo), const ARPHRD_ASH = 781 pkg syscall (linux-amd64-cgo), const ARPHRD_ATM = 19 pkg syscall (linux-amd64-cgo), const ARPHRD_AX25 = 3 pkg syscall (linux-amd64-cgo), const ARPHRD_BIF = 775 pkg syscall (linux-amd64-cgo), const ARPHRD_CHAOS = 5 pkg syscall (linux-amd64-cgo), const ARPHRD_CISCO = 513 pkg syscall (linux-amd64-cgo), const ARPHRD_CSLIP = 257 pkg syscall (linux-amd64-cgo), const ARPHRD_CSLIP6 = 259 pkg syscall (linux-amd64-cgo), const ARPHRD_DDCMP = 517 pkg syscall (linux-amd64-cgo), const ARPHRD_DLCI = 15 pkg syscall (linux-amd64-cgo), const ARPHRD_ECONET = 782 pkg syscall (linux-amd64-cgo), const ARPHRD_EETHER = 2 pkg syscall (linux-amd64-cgo), const ARPHRD_ETHER = 1 pkg syscall (linux-amd64-cgo), const ARPHRD_EUI64 = 27 pkg syscall (linux-amd64-cgo), const ARPHRD_FCAL = 785 pkg syscall (linux-amd64-cgo), const ARPHRD_FCFABRIC = 787 pkg syscall (linux-amd64-cgo), const ARPHRD_FCPL = 786 pkg syscall (linux-amd64-cgo), const ARPHRD_FCPP = 784 pkg syscall (linux-amd64-cgo), const ARPHRD_FDDI = 774 pkg syscall (linux-amd64-cgo), const ARPHRD_FRAD = 770 pkg syscall (linux-amd64-cgo), const ARPHRD_HDLC = 513 pkg syscall (linux-amd64-cgo), const ARPHRD_HIPPI = 780 pkg syscall (linux-amd64-cgo), const ARPHRD_HWX25 = 272 pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE1394 = 24 pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE802 = 6 pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE80211 = 801 pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE80211_PRISM = 802 pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE80211_RADIOTAP = 803 pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE802154 = 804 pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE802154_PHY = 805 pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE802_TR = 800 pkg syscall (linux-amd64-cgo), const ARPHRD_INFINIBAND = 32 pkg syscall (linux-amd64-cgo), const ARPHRD_IPDDP = 777 pkg syscall (linux-amd64-cgo), const ARPHRD_IPGRE = 778 pkg syscall (linux-amd64-cgo), const ARPHRD_IRDA = 783 pkg syscall (linux-amd64-cgo), const ARPHRD_LAPB = 516 pkg syscall (linux-amd64-cgo), const ARPHRD_LOCALTLK = 773 pkg syscall (linux-amd64-cgo), const ARPHRD_LOOPBACK = 772 pkg syscall (linux-amd64-cgo), const ARPHRD_METRICOM = 23 pkg syscall (linux-amd64-cgo), const ARPHRD_NETROM = 0 pkg syscall (linux-amd64-cgo), const ARPHRD_NONE = 65534 pkg syscall (linux-amd64-cgo), const ARPHRD_PIMREG = 779 pkg syscall (linux-amd64-cgo), const ARPHRD_PPP = 512 pkg syscall (linux-amd64-cgo), const ARPHRD_PRONET = 4 pkg syscall (linux-amd64-cgo), const ARPHRD_RAWHDLC = 518 pkg syscall (linux-amd64-cgo), const ARPHRD_ROSE = 270 pkg syscall (linux-amd64-cgo), const ARPHRD_RSRVD = 260 pkg syscall (linux-amd64-cgo), const ARPHRD_SIT = 776 pkg syscall (linux-amd64-cgo), const ARPHRD_SKIP = 771 pkg syscall (linux-amd64-cgo), const ARPHRD_SLIP = 256 pkg syscall (linux-amd64-cgo), const ARPHRD_SLIP6 = 258 pkg syscall (linux-amd64-cgo), const ARPHRD_TUNNEL = 768 pkg syscall (linux-amd64-cgo), const ARPHRD_TUNNEL6 = 769 pkg syscall (linux-amd64-cgo), const ARPHRD_VOID = 65535 pkg syscall (linux-amd64-cgo), const ARPHRD_X25 = 271 pkg syscall (linux-amd64-cgo), const B0 = 0 pkg syscall (linux-amd64-cgo), const B1000000 = 4104 pkg syscall (linux-amd64-cgo), const B110 = 3 pkg syscall (linux-amd64-cgo), const B115200 = 4098 pkg syscall (linux-amd64-cgo), const B1152000 = 4105 pkg syscall (linux-amd64-cgo), const B1200 = 9 pkg syscall (linux-amd64-cgo), const B134 = 4 pkg syscall (linux-amd64-cgo), const B150 = 5 pkg syscall (linux-amd64-cgo), const B1500000 = 4106 pkg syscall (linux-amd64-cgo), const B1800 = 10 pkg syscall (linux-amd64-cgo), const B19200 = 14 pkg syscall (linux-amd64-cgo), const B200 = 6 pkg syscall (linux-amd64-cgo), const B2000000 = 4107 pkg syscall (linux-amd64-cgo), const B230400 = 4099 pkg syscall (linux-amd64-cgo), const B2400 = 11 pkg syscall (linux-amd64-cgo), const B2500000 = 4108 pkg syscall (linux-amd64-cgo), const B300 = 7 pkg syscall (linux-amd64-cgo), const B3000000 = 4109 pkg syscall (linux-amd64-cgo), const B3500000 = 4110 pkg syscall (linux-amd64-cgo), const B38400 = 15 pkg syscall (linux-amd64-cgo), const B4000000 = 4111 pkg syscall (linux-amd64-cgo), const B460800 = 4100 pkg syscall (linux-amd64-cgo), const B4800 = 12 pkg syscall (linux-amd64-cgo), const B50 = 1 pkg syscall (linux-amd64-cgo), const B500000 = 4101 pkg syscall (linux-amd64-cgo), const B57600 = 4097 pkg syscall (linux-amd64-cgo), const B576000 = 4102 pkg syscall (linux-amd64-cgo), const B600 = 8 pkg syscall (linux-amd64-cgo), const B75 = 2 pkg syscall (linux-amd64-cgo), const B921600 = 4103 pkg syscall (linux-amd64-cgo), const B9600 = 13 pkg syscall (linux-amd64-cgo), const BPF_A = 16 pkg syscall (linux-amd64-cgo), const BPF_ABS = 32 pkg syscall (linux-amd64-cgo), const BPF_ADD = 0 pkg syscall (linux-amd64-cgo), const BPF_ALU = 4 pkg syscall (linux-amd64-cgo), const BPF_AND = 80 pkg syscall (linux-amd64-cgo), const BPF_B = 16 pkg syscall (linux-amd64-cgo), const BPF_DIV = 48 pkg syscall (linux-amd64-cgo), const BPF_H = 8 pkg syscall (linux-amd64-cgo), const BPF_IMM = 0 pkg syscall (linux-amd64-cgo), const BPF_IND = 64 pkg syscall (linux-amd64-cgo), const BPF_JA = 0 pkg syscall (linux-amd64-cgo), const BPF_JEQ = 16 pkg syscall (linux-amd64-cgo), const BPF_JGE = 48 pkg syscall (linux-amd64-cgo), const BPF_JGT = 32 pkg syscall (linux-amd64-cgo), const BPF_JMP = 5 pkg syscall (linux-amd64-cgo), const BPF_JSET = 64 pkg syscall (linux-amd64-cgo), const BPF_K = 0 pkg syscall (linux-amd64-cgo), const BPF_LD = 0 pkg syscall (linux-amd64-cgo), const BPF_LDX = 1 pkg syscall (linux-amd64-cgo), const BPF_LEN = 128 pkg syscall (linux-amd64-cgo), const BPF_LSH = 96 pkg syscall (linux-amd64-cgo), const BPF_MAJOR_VERSION = 1 pkg syscall (linux-amd64-cgo), const BPF_MAXINSNS = 4096 pkg syscall (linux-amd64-cgo), const BPF_MEM = 96 pkg syscall (linux-amd64-cgo), const BPF_MEMWORDS = 16 pkg syscall (linux-amd64-cgo), const BPF_MINOR_VERSION = 1 pkg syscall (linux-amd64-cgo), const BPF_MISC = 7 pkg syscall (linux-amd64-cgo), const BPF_MSH = 160 pkg syscall (linux-amd64-cgo), const BPF_MUL = 32 pkg syscall (linux-amd64-cgo), const BPF_NEG = 128 pkg syscall (linux-amd64-cgo), const BPF_OR = 64 pkg syscall (linux-amd64-cgo), const BPF_RET = 6 pkg syscall (linux-amd64-cgo), const BPF_RSH = 112 pkg syscall (linux-amd64-cgo), const BPF_ST = 2 pkg syscall (linux-amd64-cgo), const BPF_STX = 3 pkg syscall (linux-amd64-cgo), const BPF_SUB = 16 pkg syscall (linux-amd64-cgo), const BPF_TAX = 0 pkg syscall (linux-amd64-cgo), const BPF_TXA = 128 pkg syscall (linux-amd64-cgo), const BPF_W = 0 pkg syscall (linux-amd64-cgo), const BPF_X = 8 pkg syscall (linux-amd64-cgo), const BRKINT = 2 pkg syscall (linux-amd64-cgo), const CLOCAL = 2048 pkg syscall (linux-amd64-cgo), const CREAD = 128 pkg syscall (linux-amd64-cgo), const CS5 = 0 pkg syscall (linux-amd64-cgo), const CS6 = 16 pkg syscall (linux-amd64-cgo), const CS7 = 32 pkg syscall (linux-amd64-cgo), const CS8 = 48 pkg syscall (linux-amd64-cgo), const CSIZE = 48 pkg syscall (linux-amd64-cgo), const CSTOPB = 64 pkg syscall (linux-amd64-cgo), const DT_BLK = 6 pkg syscall (linux-amd64-cgo), const DT_CHR = 2 pkg syscall (linux-amd64-cgo), const DT_DIR = 4 pkg syscall (linux-amd64-cgo), const DT_FIFO = 1 pkg syscall (linux-amd64-cgo), const DT_LNK = 10 pkg syscall (linux-amd64-cgo), const DT_REG = 8 pkg syscall (linux-amd64-cgo), const DT_SOCK = 12 pkg syscall (linux-amd64-cgo), const DT_UNKNOWN = 0 pkg syscall (linux-amd64-cgo), const DT_WHT = 14 pkg syscall (linux-amd64-cgo), const E2BIG = 7 pkg syscall (linux-amd64-cgo), const EACCES = 13 pkg syscall (linux-amd64-cgo), const EADDRINUSE = 98 pkg syscall (linux-amd64-cgo), const EADDRNOTAVAIL = 99 pkg syscall (linux-amd64-cgo), const EADV = 68 pkg syscall (linux-amd64-cgo), const EAFNOSUPPORT = 97 pkg syscall (linux-amd64-cgo), const EAGAIN = 11 pkg syscall (linux-amd64-cgo), const EALREADY = 114 pkg syscall (linux-amd64-cgo), const EBADE = 52 pkg syscall (linux-amd64-cgo), const EBADF = 9 pkg syscall (linux-amd64-cgo), const EBADFD = 77 pkg syscall (linux-amd64-cgo), const EBADMSG = 74 pkg syscall (linux-amd64-cgo), const EBADR = 53 pkg syscall (linux-amd64-cgo), const EBADRQC = 56 pkg syscall (linux-amd64-cgo), const EBADSLT = 57 pkg syscall (linux-amd64-cgo), const EBFONT = 59 pkg syscall (linux-amd64-cgo), const EBUSY = 16 pkg syscall (linux-amd64-cgo), const ECANCELED = 125 pkg syscall (linux-amd64-cgo), const ECHILD = 10 pkg syscall (linux-amd64-cgo), const ECHO = 8 pkg syscall (linux-amd64-cgo), const ECHOCTL = 512 pkg syscall (linux-amd64-cgo), const ECHOE = 16 pkg syscall (linux-amd64-cgo), const ECHOK = 32 pkg syscall (linux-amd64-cgo), const ECHOKE = 2048 pkg syscall (linux-amd64-cgo), const ECHONL = 64 pkg syscall (linux-amd64-cgo), const ECHOPRT = 1024 pkg syscall (linux-amd64-cgo), const ECHRNG = 44 pkg syscall (linux-amd64-cgo), const ECOMM = 70 pkg syscall (linux-amd64-cgo), const ECONNABORTED = 103 pkg syscall (linux-amd64-cgo), const ECONNREFUSED = 111 pkg syscall (linux-amd64-cgo), const ECONNRESET = 104 pkg syscall (linux-amd64-cgo), const EDEADLK = 35 pkg syscall (linux-amd64-cgo), const EDEADLOCK = 35 pkg syscall (linux-amd64-cgo), const EDESTADDRREQ = 89 pkg syscall (linux-amd64-cgo), const EDOM = 33 pkg syscall (linux-amd64-cgo), const EDOTDOT = 73 pkg syscall (linux-amd64-cgo), const EDQUOT = 122 pkg syscall (linux-amd64-cgo), const EEXIST = 17 pkg syscall (linux-amd64-cgo), const EFAULT = 14 pkg syscall (linux-amd64-cgo), const EFBIG = 27 pkg syscall (linux-amd64-cgo), const EHOSTDOWN = 112 pkg syscall (linux-amd64-cgo), const EHOSTUNREACH = 113 pkg syscall (linux-amd64-cgo), const EIDRM = 43 pkg syscall (linux-amd64-cgo), const EILSEQ = 84 pkg syscall (linux-amd64-cgo), const EINPROGRESS = 115 pkg syscall (linux-amd64-cgo), const EINTR = 4 pkg syscall (linux-amd64-cgo), const EINVAL = 22 pkg syscall (linux-amd64-cgo), const EIO = 5 pkg syscall (linux-amd64-cgo), const EISCONN = 106 pkg syscall (linux-amd64-cgo), const EISDIR = 21 pkg syscall (linux-amd64-cgo), const EISNAM = 120 pkg syscall (linux-amd64-cgo), const EKEYEXPIRED = 127 pkg syscall (linux-amd64-cgo), const EKEYREJECTED = 129 pkg syscall (linux-amd64-cgo), const EKEYREVOKED = 128 pkg syscall (linux-amd64-cgo), const EL2HLT = 51 pkg syscall (linux-amd64-cgo), const EL2NSYNC = 45 pkg syscall (linux-amd64-cgo), const EL3HLT = 46 pkg syscall (linux-amd64-cgo), const EL3RST = 47 pkg syscall (linux-amd64-cgo), const ELIBACC = 79 pkg syscall (linux-amd64-cgo), const ELIBBAD = 80 pkg syscall (linux-amd64-cgo), const ELIBEXEC = 83 pkg syscall (linux-amd64-cgo), const ELIBMAX = 82 pkg syscall (linux-amd64-cgo), const ELIBSCN = 81 pkg syscall (linux-amd64-cgo), const ELNRNG = 48 pkg syscall (linux-amd64-cgo), const ELOOP = 40 pkg syscall (linux-amd64-cgo), const EMEDIUMTYPE = 124 pkg syscall (linux-amd64-cgo), const EMFILE = 24 pkg syscall (linux-amd64-cgo), const EMLINK = 31 pkg syscall (linux-amd64-cgo), const EMSGSIZE = 90 pkg syscall (linux-amd64-cgo), const EMULTIHOP = 72 pkg syscall (linux-amd64-cgo), const ENAMETOOLONG = 36 pkg syscall (linux-amd64-cgo), const ENAVAIL = 119 pkg syscall (linux-amd64-cgo), const ENETDOWN = 100 pkg syscall (linux-amd64-cgo), const ENETRESET = 102 pkg syscall (linux-amd64-cgo), const ENETUNREACH = 101 pkg syscall (linux-amd64-cgo), const ENFILE = 23 pkg syscall (linux-amd64-cgo), const ENOANO = 55 pkg syscall (linux-amd64-cgo), const ENOBUFS = 105 pkg syscall (linux-amd64-cgo), const ENOCSI = 50 pkg syscall (linux-amd64-cgo), const ENODATA = 61 pkg syscall (linux-amd64-cgo), const ENODEV = 19 pkg syscall (linux-amd64-cgo), const ENOEXEC = 8 pkg syscall (linux-amd64-cgo), const ENOKEY = 126 pkg syscall (linux-amd64-cgo), const ENOLCK = 37 pkg syscall (linux-amd64-cgo), const ENOLINK = 67 pkg syscall (linux-amd64-cgo), const ENOMEDIUM = 123 pkg syscall (linux-amd64-cgo), const ENOMEM = 12 pkg syscall (linux-amd64-cgo), const ENOMSG = 42 pkg syscall (linux-amd64-cgo), const ENONET = 64 pkg syscall (linux-amd64-cgo), const ENOPKG = 65 pkg syscall (linux-amd64-cgo), const ENOPROTOOPT = 92 pkg syscall (linux-amd64-cgo), const ENOSPC = 28 pkg syscall (linux-amd64-cgo), const ENOSR = 63 pkg syscall (linux-amd64-cgo), const ENOSTR = 60 pkg syscall (linux-amd64-cgo), const ENOSYS = 38 pkg syscall (linux-amd64-cgo), const ENOTBLK = 15 pkg syscall (linux-amd64-cgo), const ENOTCONN = 107 pkg syscall (linux-amd64-cgo), const ENOTDIR = 20 pkg syscall (linux-amd64-cgo), const ENOTEMPTY = 39 pkg syscall (linux-amd64-cgo), const ENOTNAM = 118 pkg syscall (linux-amd64-cgo), const ENOTRECOVERABLE = 131 pkg syscall (linux-amd64-cgo), const ENOTSOCK = 88 pkg syscall (linux-amd64-cgo), const ENOTSUP = 95 pkg syscall (linux-amd64-cgo), const ENOTTY = 25 pkg syscall (linux-amd64-cgo), const ENOTUNIQ = 76 pkg syscall (linux-amd64-cgo), const ENXIO = 6 pkg syscall (linux-amd64-cgo), const EOPNOTSUPP = 95 pkg syscall (linux-amd64-cgo), const EOVERFLOW = 75 pkg syscall (linux-amd64-cgo), const EOWNERDEAD = 130 pkg syscall (linux-amd64-cgo), const EPERM = 1 pkg syscall (linux-amd64-cgo), const EPFNOSUPPORT = 96 pkg syscall (linux-amd64-cgo), const EPIPE = 32 pkg syscall (linux-amd64-cgo), const EPOLLERR = 8 pkg syscall (linux-amd64-cgo), const EPOLLET = -2147483648 pkg syscall (linux-amd64-cgo), const EPOLLHUP = 16 pkg syscall (linux-amd64-cgo), const EPOLLIN = 1 pkg syscall (linux-amd64-cgo), const EPOLLMSG = 1024 pkg syscall (linux-amd64-cgo), const EPOLLONESHOT = 1073741824 pkg syscall (linux-amd64-cgo), const EPOLLOUT = 4 pkg syscall (linux-amd64-cgo), const EPOLLPRI = 2 pkg syscall (linux-amd64-cgo), const EPOLLRDBAND = 128 pkg syscall (linux-amd64-cgo), const EPOLLRDHUP = 8192 pkg syscall (linux-amd64-cgo), const EPOLLRDNORM = 64 pkg syscall (linux-amd64-cgo), const EPOLLWRBAND = 512 pkg syscall (linux-amd64-cgo), const EPOLLWRNORM = 256 pkg syscall (linux-amd64-cgo), const EPOLL_CLOEXEC = 524288 pkg syscall (linux-amd64-cgo), const EPOLL_CTL_ADD = 1 pkg syscall (linux-amd64-cgo), const EPOLL_CTL_DEL = 2 pkg syscall (linux-amd64-cgo), const EPOLL_CTL_MOD = 3 pkg syscall (linux-amd64-cgo), const EPOLL_NONBLOCK = 2048 pkg syscall (linux-amd64-cgo), const EPROTO = 71 pkg syscall (linux-amd64-cgo), const EPROTONOSUPPORT = 93 pkg syscall (linux-amd64-cgo), const EPROTOTYPE = 91 pkg syscall (linux-amd64-cgo), const ERANGE = 34 pkg syscall (linux-amd64-cgo), const EREMCHG = 78 pkg syscall (linux-amd64-cgo), const EREMOTE = 66 pkg syscall (linux-amd64-cgo), const EREMOTEIO = 121 pkg syscall (linux-amd64-cgo), const ERESTART = 85 pkg syscall (linux-amd64-cgo), const ERFKILL = 132 pkg syscall (linux-amd64-cgo), const EROFS = 30 pkg syscall (linux-amd64-cgo), const ESHUTDOWN = 108 pkg syscall (linux-amd64-cgo), const ESOCKTNOSUPPORT = 94 pkg syscall (linux-amd64-cgo), const ESPIPE = 29 pkg syscall (linux-amd64-cgo), const ESRCH = 3 pkg syscall (linux-amd64-cgo), const ESRMNT = 69 pkg syscall (linux-amd64-cgo), const ESTALE = 116 pkg syscall (linux-amd64-cgo), const ESTRPIPE = 86 pkg syscall (linux-amd64-cgo), const ETH_P_1588 = 35063 pkg syscall (linux-amd64-cgo), const ETH_P_8021Q = 33024 pkg syscall (linux-amd64-cgo), const ETH_P_802_2 = 4 pkg syscall (linux-amd64-cgo), const ETH_P_802_3 = 1 pkg syscall (linux-amd64-cgo), const ETH_P_AARP = 33011 pkg syscall (linux-amd64-cgo), const ETH_P_ALL = 3 pkg syscall (linux-amd64-cgo), const ETH_P_AOE = 34978 pkg syscall (linux-amd64-cgo), const ETH_P_ARCNET = 26 pkg syscall (linux-amd64-cgo), const ETH_P_ARP = 2054 pkg syscall (linux-amd64-cgo), const ETH_P_ATALK = 32923 pkg syscall (linux-amd64-cgo), const ETH_P_ATMFATE = 34948 pkg syscall (linux-amd64-cgo), const ETH_P_ATMMPOA = 34892 pkg syscall (linux-amd64-cgo), const ETH_P_AX25 = 2 pkg syscall (linux-amd64-cgo), const ETH_P_BPQ = 2303 pkg syscall (linux-amd64-cgo), const ETH_P_CAIF = 247 pkg syscall (linux-amd64-cgo), const ETH_P_CAN = 12 pkg syscall (linux-amd64-cgo), const ETH_P_CONTROL = 22 pkg syscall (linux-amd64-cgo), const ETH_P_CUST = 24582 pkg syscall (linux-amd64-cgo), const ETH_P_DDCMP = 6 pkg syscall (linux-amd64-cgo), const ETH_P_DEC = 24576 pkg syscall (linux-amd64-cgo), const ETH_P_DIAG = 24581 pkg syscall (linux-amd64-cgo), const ETH_P_DNA_DL = 24577 pkg syscall (linux-amd64-cgo), const ETH_P_DNA_RC = 24578 pkg syscall (linux-amd64-cgo), const ETH_P_DNA_RT = 24579 pkg syscall (linux-amd64-cgo), const ETH_P_DSA = 27 pkg syscall (linux-amd64-cgo), const ETH_P_ECONET = 24 pkg syscall (linux-amd64-cgo), const ETH_P_EDSA = 56026 pkg syscall (linux-amd64-cgo), const ETH_P_FCOE = 35078 pkg syscall (linux-amd64-cgo), const ETH_P_FIP = 35092 pkg syscall (linux-amd64-cgo), const ETH_P_HDLC = 25 pkg syscall (linux-amd64-cgo), const ETH_P_IEEE802154 = 246 pkg syscall (linux-amd64-cgo), const ETH_P_IEEEPUP = 2560 pkg syscall (linux-amd64-cgo), const ETH_P_IEEEPUPAT = 2561 pkg syscall (linux-amd64-cgo), const ETH_P_IP = 2048 pkg syscall (linux-amd64-cgo), const ETH_P_IPV6 = 34525 pkg syscall (linux-amd64-cgo), const ETH_P_IPX = 33079 pkg syscall (linux-amd64-cgo), const ETH_P_IRDA = 23 pkg syscall (linux-amd64-cgo), const ETH_P_LAT = 24580 pkg syscall (linux-amd64-cgo), const ETH_P_LINK_CTL = 34924 pkg syscall (linux-amd64-cgo), const ETH_P_LOCALTALK = 9 pkg syscall (linux-amd64-cgo), const ETH_P_LOOP = 96 pkg syscall (linux-amd64-cgo), const ETH_P_MOBITEX = 21 pkg syscall (linux-amd64-cgo), const ETH_P_MPLS_MC = 34888 pkg syscall (linux-amd64-cgo), const ETH_P_MPLS_UC = 34887 pkg syscall (linux-amd64-cgo), const ETH_P_PAE = 34958 pkg syscall (linux-amd64-cgo), const ETH_P_PAUSE = 34824 pkg syscall (linux-amd64-cgo), const ETH_P_PHONET = 245 pkg syscall (linux-amd64-cgo), const ETH_P_PPPTALK = 16 pkg syscall (linux-amd64-cgo), const ETH_P_PPP_DISC = 34915 pkg syscall (linux-amd64-cgo), const ETH_P_PPP_MP = 8 pkg syscall (linux-amd64-cgo), const ETH_P_PPP_SES = 34916 pkg syscall (linux-amd64-cgo), const ETH_P_PUP = 512 pkg syscall (linux-amd64-cgo), const ETH_P_PUPAT = 513 pkg syscall (linux-amd64-cgo), const ETH_P_RARP = 32821 pkg syscall (linux-amd64-cgo), const ETH_P_SCA = 24583 pkg syscall (linux-amd64-cgo), const ETH_P_SLOW = 34825 pkg syscall (linux-amd64-cgo), const ETH_P_SNAP = 5 pkg syscall (linux-amd64-cgo), const ETH_P_TEB = 25944 pkg syscall (linux-amd64-cgo), const ETH_P_TIPC = 35018 pkg syscall (linux-amd64-cgo), const ETH_P_TRAILER = 28 pkg syscall (linux-amd64-cgo), const ETH_P_TR_802_2 = 17 pkg syscall (linux-amd64-cgo), const ETH_P_WAN_PPP = 7 pkg syscall (linux-amd64-cgo), const ETH_P_WCCP = 34878 pkg syscall (linux-amd64-cgo), const ETH_P_X25 = 2053 pkg syscall (linux-amd64-cgo), const ETIME = 62 pkg syscall (linux-amd64-cgo), const ETIMEDOUT = 110 pkg syscall (linux-amd64-cgo), const ETOOMANYREFS = 109 pkg syscall (linux-amd64-cgo), const ETXTBSY = 26 pkg syscall (linux-amd64-cgo), const EUCLEAN = 117 pkg syscall (linux-amd64-cgo), const EUNATCH = 49 pkg syscall (linux-amd64-cgo), const EUSERS = 87 pkg syscall (linux-amd64-cgo), const EWOULDBLOCK = 11 pkg syscall (linux-amd64-cgo), const EXDEV = 18 pkg syscall (linux-amd64-cgo), const EXFULL = 54 pkg syscall (linux-amd64-cgo), const FD_CLOEXEC = 1 pkg syscall (linux-amd64-cgo), const FD_SETSIZE = 1024 pkg syscall (linux-amd64-cgo), const FLUSHO = 4096 pkg syscall (linux-amd64-cgo), const F_DUPFD = 0 pkg syscall (linux-amd64-cgo), const F_DUPFD_CLOEXEC = 1030 pkg syscall (linux-amd64-cgo), const F_EXLCK = 4 pkg syscall (linux-amd64-cgo), const F_GETFD = 1 pkg syscall (linux-amd64-cgo), const F_GETFL = 3 pkg syscall (linux-amd64-cgo), const F_GETLEASE = 1025 pkg syscall (linux-amd64-cgo), const F_GETLK = 5 pkg syscall (linux-amd64-cgo), const F_GETLK64 = 5 pkg syscall (linux-amd64-cgo), const F_GETOWN = 9 pkg syscall (linux-amd64-cgo), const F_GETOWN_EX = 16 pkg syscall (linux-amd64-cgo), const F_GETPIPE_SZ = 1032 pkg syscall (linux-amd64-cgo), const F_GETSIG = 11 pkg syscall (linux-amd64-cgo), const F_LOCK = 1 pkg syscall (linux-amd64-cgo), const F_NOTIFY = 1026 pkg syscall (linux-amd64-cgo), const F_OK = 0 pkg syscall (linux-amd64-cgo), const F_RDLCK = 0 pkg syscall (linux-amd64-cgo), const F_SETFD = 2 pkg syscall (linux-amd64-cgo), const F_SETFL = 4 pkg syscall (linux-amd64-cgo), const F_SETLEASE = 1024 pkg syscall (linux-amd64-cgo), const F_SETLK = 6 pkg syscall (linux-amd64-cgo), const F_SETLK64 = 6 pkg syscall (linux-amd64-cgo), const F_SETLKW = 7 pkg syscall (linux-amd64-cgo), const F_SETLKW64 = 7 pkg syscall (linux-amd64-cgo), const F_SETOWN = 8 pkg syscall (linux-amd64-cgo), const F_SETOWN_EX = 15 pkg syscall (linux-amd64-cgo), const F_SETPIPE_SZ = 1031 pkg syscall (linux-amd64-cgo), const F_SETSIG = 10 pkg syscall (linux-amd64-cgo), const F_SHLCK = 8 pkg syscall (linux-amd64-cgo), const F_TEST = 3 pkg syscall (linux-amd64-cgo), const F_TLOCK = 2 pkg syscall (linux-amd64-cgo), const F_ULOCK = 0 pkg syscall (linux-amd64-cgo), const F_UNLCK = 2 pkg syscall (linux-amd64-cgo), const F_WRLCK = 1 pkg syscall (linux-amd64-cgo), const HUPCL = 1024 pkg syscall (linux-amd64-cgo), const ICANON = 2 pkg syscall (linux-amd64-cgo), const ICRNL = 256 pkg syscall (linux-amd64-cgo), const IEXTEN = 32768 pkg syscall (linux-amd64-cgo), const IFA_ADDRESS = 1 pkg syscall (linux-amd64-cgo), const IFA_ANYCAST = 5 pkg syscall (linux-amd64-cgo), const IFA_BROADCAST = 4 pkg syscall (linux-amd64-cgo), const IFA_CACHEINFO = 6 pkg syscall (linux-amd64-cgo), const IFA_F_DADFAILED = 8 pkg syscall (linux-amd64-cgo), const IFA_F_DEPRECATED = 32 pkg syscall (linux-amd64-cgo), const IFA_F_HOMEADDRESS = 16 pkg syscall (linux-amd64-cgo), const IFA_F_NODAD = 2 pkg syscall (linux-amd64-cgo), const IFA_F_OPTIMISTIC = 4 pkg syscall (linux-amd64-cgo), const IFA_F_PERMANENT = 128 pkg syscall (linux-amd64-cgo), const IFA_F_SECONDARY = 1 pkg syscall (linux-amd64-cgo), const IFA_F_TEMPORARY = 1 pkg syscall (linux-amd64-cgo), const IFA_F_TENTATIVE = 64 pkg syscall (linux-amd64-cgo), const IFA_LABEL = 3 pkg syscall (linux-amd64-cgo), const IFA_LOCAL = 2 pkg syscall (linux-amd64-cgo), const IFA_MAX = 7 pkg syscall (linux-amd64-cgo), const IFA_MULTICAST = 7 pkg syscall (linux-amd64-cgo), const IFA_UNSPEC = 0 pkg syscall (linux-amd64-cgo), const IFF_ALLMULTI = 512 pkg syscall (linux-amd64-cgo), const IFF_AUTOMEDIA = 16384 pkg syscall (linux-amd64-cgo), const IFF_DEBUG = 4 pkg syscall (linux-amd64-cgo), const IFF_DYNAMIC = 32768 pkg syscall (linux-amd64-cgo), const IFF_LOOPBACK = 8 pkg syscall (linux-amd64-cgo), const IFF_MASTER = 1024 pkg syscall (linux-amd64-cgo), const IFF_MULTICAST = 4096 pkg syscall (linux-amd64-cgo), const IFF_NOARP = 128 pkg syscall (linux-amd64-cgo), const IFF_NOTRAILERS = 32 pkg syscall (linux-amd64-cgo), const IFF_NO_PI = 4096 pkg syscall (linux-amd64-cgo), const IFF_ONE_QUEUE = 8192 pkg syscall (linux-amd64-cgo), const IFF_POINTOPOINT = 16 pkg syscall (linux-amd64-cgo), const IFF_PORTSEL = 8192 pkg syscall (linux-amd64-cgo), const IFF_PROMISC = 256 pkg syscall (linux-amd64-cgo), const IFF_RUNNING = 64 pkg syscall (linux-amd64-cgo), const IFF_SLAVE = 2048 pkg syscall (linux-amd64-cgo), const IFF_TAP = 2 pkg syscall (linux-amd64-cgo), const IFF_TUN = 1 pkg syscall (linux-amd64-cgo), const IFF_TUN_EXCL = 32768 pkg syscall (linux-amd64-cgo), const IFF_VNET_HDR = 16384 pkg syscall (linux-amd64-cgo), const IFLA_ADDRESS = 1 pkg syscall (linux-amd64-cgo), const IFLA_BROADCAST = 2 pkg syscall (linux-amd64-cgo), const IFLA_COST = 8 pkg syscall (linux-amd64-cgo), const IFLA_IFALIAS = 20 pkg syscall (linux-amd64-cgo), const IFLA_IFNAME = 3 pkg syscall (linux-amd64-cgo), const IFLA_LINK = 5 pkg syscall (linux-amd64-cgo), const IFLA_LINKINFO = 18 pkg syscall (linux-amd64-cgo), const IFLA_LINKMODE = 17 pkg syscall (linux-amd64-cgo), const IFLA_MAP = 14 pkg syscall (linux-amd64-cgo), const IFLA_MASTER = 10 pkg syscall (linux-amd64-cgo), const IFLA_MAX = 29 pkg syscall (linux-amd64-cgo), const IFLA_MTU = 4 pkg syscall (linux-amd64-cgo), const IFLA_NET_NS_PID = 19 pkg syscall (linux-amd64-cgo), const IFLA_OPERSTATE = 16 pkg syscall (linux-amd64-cgo), const IFLA_PRIORITY = 9 pkg syscall (linux-amd64-cgo), const IFLA_PROTINFO = 12 pkg syscall (linux-amd64-cgo), const IFLA_QDISC = 6 pkg syscall (linux-amd64-cgo), const IFLA_STATS = 7 pkg syscall (linux-amd64-cgo), const IFLA_TXQLEN = 13 pkg syscall (linux-amd64-cgo), const IFLA_UNSPEC = 0 pkg syscall (linux-amd64-cgo), const IFLA_WEIGHT = 15 pkg syscall (linux-amd64-cgo), const IFLA_WIRELESS = 11 pkg syscall (linux-amd64-cgo), const IFNAMSIZ = 16 pkg syscall (linux-amd64-cgo), const IGNBRK = 1 pkg syscall (linux-amd64-cgo), const IGNCR = 128 pkg syscall (linux-amd64-cgo), const IGNPAR = 4 pkg syscall (linux-amd64-cgo), const IMAXBEL = 8192 pkg syscall (linux-amd64-cgo), const INLCR = 64 pkg syscall (linux-amd64-cgo), const INPCK = 16 pkg syscall (linux-amd64-cgo), const IN_ACCESS = 1 pkg syscall (linux-amd64-cgo), const IN_ALL_EVENTS = 4095 pkg syscall (linux-amd64-cgo), const IN_ATTRIB = 4 pkg syscall (linux-amd64-cgo), const IN_CLASSA_HOST = 16777215 pkg syscall (linux-amd64-cgo), const IN_CLASSA_MAX = 128 pkg syscall (linux-amd64-cgo), const IN_CLASSA_NET = 4278190080 pkg syscall (linux-amd64-cgo), const IN_CLASSA_NSHIFT = 24 pkg syscall (linux-amd64-cgo), const IN_CLASSB_HOST = 65535 pkg syscall (linux-amd64-cgo), const IN_CLASSB_MAX = 65536 pkg syscall (linux-amd64-cgo), const IN_CLASSB_NET = 4294901760 pkg syscall (linux-amd64-cgo), const IN_CLASSB_NSHIFT = 16 pkg syscall (linux-amd64-cgo), const IN_CLASSC_HOST = 255 pkg syscall (linux-amd64-cgo), const IN_CLASSC_NET = 4294967040 pkg syscall (linux-amd64-cgo), const IN_CLASSC_NSHIFT = 8 pkg syscall (linux-amd64-cgo), const IN_CLOEXEC = 524288 pkg syscall (linux-amd64-cgo), const IN_CLOSE = 24 pkg syscall (linux-amd64-cgo), const IN_CLOSE_NOWRITE = 16 pkg syscall (linux-amd64-cgo), const IN_CLOSE_WRITE = 8 pkg syscall (linux-amd64-cgo), const IN_CREATE = 256 pkg syscall (linux-amd64-cgo), const IN_DELETE = 512 pkg syscall (linux-amd64-cgo), const IN_DELETE_SELF = 1024 pkg syscall (linux-amd64-cgo), const IN_DONT_FOLLOW = 33554432 pkg syscall (linux-amd64-cgo), const IN_EXCL_UNLINK = 67108864 pkg syscall (linux-amd64-cgo), const IN_IGNORED = 32768 pkg syscall (linux-amd64-cgo), const IN_ISDIR = 1073741824 pkg syscall (linux-amd64-cgo), const IN_LOOPBACKNET = 127 pkg syscall (linux-amd64-cgo), const IN_MASK_ADD = 536870912 pkg syscall (linux-amd64-cgo), const IN_MODIFY = 2 pkg syscall (linux-amd64-cgo), const IN_MOVE = 192 pkg syscall (linux-amd64-cgo), const IN_MOVED_FROM = 64 pkg syscall (linux-amd64-cgo), const IN_MOVED_TO = 128 pkg syscall (linux-amd64-cgo), const IN_MOVE_SELF = 2048 pkg syscall (linux-amd64-cgo), const IN_NONBLOCK = 2048 pkg syscall (linux-amd64-cgo), const IN_ONESHOT = 2147483648 pkg syscall (linux-amd64-cgo), const IN_ONLYDIR = 16777216 pkg syscall (linux-amd64-cgo), const IN_OPEN = 32 pkg syscall (linux-amd64-cgo), const IN_Q_OVERFLOW = 16384 pkg syscall (linux-amd64-cgo), const IN_UNMOUNT = 8192 pkg syscall (linux-amd64-cgo), const IPPROTO_AH = 51 pkg syscall (linux-amd64-cgo), const IPPROTO_COMP = 108 pkg syscall (linux-amd64-cgo), const IPPROTO_DCCP = 33 pkg syscall (linux-amd64-cgo), const IPPROTO_DSTOPTS = 60 pkg syscall (linux-amd64-cgo), const IPPROTO_EGP = 8 pkg syscall (linux-amd64-cgo), const IPPROTO_ENCAP = 98 pkg syscall (linux-amd64-cgo), const IPPROTO_ESP = 50 pkg syscall (linux-amd64-cgo), const IPPROTO_FRAGMENT = 44 pkg syscall (linux-amd64-cgo), const IPPROTO_GRE = 47 pkg syscall (linux-amd64-cgo), const IPPROTO_HOPOPTS = 0 pkg syscall (linux-amd64-cgo), const IPPROTO_ICMP = 1 pkg syscall (linux-amd64-cgo), const IPPROTO_ICMPV6 = 58 pkg syscall (linux-amd64-cgo), const IPPROTO_IDP = 22 pkg syscall (linux-amd64-cgo), const IPPROTO_IGMP = 2 pkg syscall (linux-amd64-cgo), const IPPROTO_IPIP = 4 pkg syscall (linux-amd64-cgo), const IPPROTO_MTP = 92 pkg syscall (linux-amd64-cgo), const IPPROTO_NONE = 59 pkg syscall (linux-amd64-cgo), const IPPROTO_PIM = 103 pkg syscall (linux-amd64-cgo), const IPPROTO_PUP = 12 pkg syscall (linux-amd64-cgo), const IPPROTO_RAW = 255 pkg syscall (linux-amd64-cgo), const IPPROTO_ROUTING = 43 pkg syscall (linux-amd64-cgo), const IPPROTO_RSVP = 46 pkg syscall (linux-amd64-cgo), const IPPROTO_SCTP = 132 pkg syscall (linux-amd64-cgo), const IPPROTO_TP = 29 pkg syscall (linux-amd64-cgo), const IPPROTO_UDPLITE = 136 pkg syscall (linux-amd64-cgo), const IPV6_2292DSTOPTS = 4 pkg syscall (linux-amd64-cgo), const IPV6_2292HOPLIMIT = 8 pkg syscall (linux-amd64-cgo), const IPV6_2292HOPOPTS = 3 pkg syscall (linux-amd64-cgo), const IPV6_2292PKTINFO = 2 pkg syscall (linux-amd64-cgo), const IPV6_2292PKTOPTIONS = 6 pkg syscall (linux-amd64-cgo), const IPV6_2292RTHDR = 5 pkg syscall (linux-amd64-cgo), const IPV6_ADDRFORM = 1 pkg syscall (linux-amd64-cgo), const IPV6_ADD_MEMBERSHIP = 20 pkg syscall (linux-amd64-cgo), const IPV6_AUTHHDR = 10 pkg syscall (linux-amd64-cgo), const IPV6_CHECKSUM = 7 pkg syscall (linux-amd64-cgo), const IPV6_DROP_MEMBERSHIP = 21 pkg syscall (linux-amd64-cgo), const IPV6_DSTOPTS = 59 pkg syscall (linux-amd64-cgo), const IPV6_HOPLIMIT = 52 pkg syscall (linux-amd64-cgo), const IPV6_HOPOPTS = 54 pkg syscall (linux-amd64-cgo), const IPV6_IPSEC_POLICY = 34 pkg syscall (linux-amd64-cgo), const IPV6_JOIN_ANYCAST = 27 pkg syscall (linux-amd64-cgo), const IPV6_JOIN_GROUP = 20 pkg syscall (linux-amd64-cgo), const IPV6_LEAVE_ANYCAST = 28 pkg syscall (linux-amd64-cgo), const IPV6_LEAVE_GROUP = 21 pkg syscall (linux-amd64-cgo), const IPV6_MTU = 24 pkg syscall (linux-amd64-cgo), const IPV6_MTU_DISCOVER = 23 pkg syscall (linux-amd64-cgo), const IPV6_MULTICAST_HOPS = 18 pkg syscall (linux-amd64-cgo), const IPV6_MULTICAST_IF = 17 pkg syscall (linux-amd64-cgo), const IPV6_MULTICAST_LOOP = 19 pkg syscall (linux-amd64-cgo), const IPV6_NEXTHOP = 9 pkg syscall (linux-amd64-cgo), const IPV6_PKTINFO = 50 pkg syscall (linux-amd64-cgo), const IPV6_PMTUDISC_DO = 2 pkg syscall (linux-amd64-cgo), const IPV6_PMTUDISC_DONT = 0 pkg syscall (linux-amd64-cgo), const IPV6_PMTUDISC_PROBE = 3 pkg syscall (linux-amd64-cgo), const IPV6_PMTUDISC_WANT = 1 pkg syscall (linux-amd64-cgo), const IPV6_RECVDSTOPTS = 58 pkg syscall (linux-amd64-cgo), const IPV6_RECVERR = 25 pkg syscall (linux-amd64-cgo), const IPV6_RECVHOPLIMIT = 51 pkg syscall (linux-amd64-cgo), const IPV6_RECVHOPOPTS = 53 pkg syscall (linux-amd64-cgo), const IPV6_RECVPKTINFO = 49 pkg syscall (linux-amd64-cgo), const IPV6_RECVRTHDR = 56 pkg syscall (linux-amd64-cgo), const IPV6_RECVTCLASS = 66 pkg syscall (linux-amd64-cgo), const IPV6_ROUTER_ALERT = 22 pkg syscall (linux-amd64-cgo), const IPV6_RTHDR = 57 pkg syscall (linux-amd64-cgo), const IPV6_RTHDRDSTOPTS = 55 pkg syscall (linux-amd64-cgo), const IPV6_RTHDR_LOOSE = 0 pkg syscall (linux-amd64-cgo), const IPV6_RTHDR_STRICT = 1 pkg syscall (linux-amd64-cgo), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (linux-amd64-cgo), const IPV6_RXDSTOPTS = 59 pkg syscall (linux-amd64-cgo), const IPV6_RXHOPOPTS = 54 pkg syscall (linux-amd64-cgo), const IPV6_TCLASS = 67 pkg syscall (linux-amd64-cgo), const IPV6_UNICAST_HOPS = 16 pkg syscall (linux-amd64-cgo), const IPV6_V6ONLY = 26 pkg syscall (linux-amd64-cgo), const IPV6_XFRM_POLICY = 35 pkg syscall (linux-amd64-cgo), const IP_ADD_MEMBERSHIP = 35 pkg syscall (linux-amd64-cgo), const IP_ADD_SOURCE_MEMBERSHIP = 39 pkg syscall (linux-amd64-cgo), const IP_BLOCK_SOURCE = 38 pkg syscall (linux-amd64-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (linux-amd64-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (linux-amd64-cgo), const IP_DF = 16384 pkg syscall (linux-amd64-cgo), const IP_DROP_MEMBERSHIP = 36 pkg syscall (linux-amd64-cgo), const IP_DROP_SOURCE_MEMBERSHIP = 40 pkg syscall (linux-amd64-cgo), const IP_FREEBIND = 15 pkg syscall (linux-amd64-cgo), const IP_HDRINCL = 3 pkg syscall (linux-amd64-cgo), const IP_IPSEC_POLICY = 16 pkg syscall (linux-amd64-cgo), const IP_MAXPACKET = 65535 pkg syscall (linux-amd64-cgo), const IP_MAX_MEMBERSHIPS = 20 pkg syscall (linux-amd64-cgo), const IP_MF = 8192 pkg syscall (linux-amd64-cgo), const IP_MINTTL = 21 pkg syscall (linux-amd64-cgo), const IP_MSFILTER = 41 pkg syscall (linux-amd64-cgo), const IP_MSS = 576 pkg syscall (linux-amd64-cgo), const IP_MTU = 14 pkg syscall (linux-amd64-cgo), const IP_MTU_DISCOVER = 10 pkg syscall (linux-amd64-cgo), const IP_MULTICAST_IF = 32 pkg syscall (linux-amd64-cgo), const IP_MULTICAST_LOOP = 34 pkg syscall (linux-amd64-cgo), const IP_MULTICAST_TTL = 33 pkg syscall (linux-amd64-cgo), const IP_OFFMASK = 8191 pkg syscall (linux-amd64-cgo), const IP_OPTIONS = 4 pkg syscall (linux-amd64-cgo), const IP_ORIGDSTADDR = 20 pkg syscall (linux-amd64-cgo), const IP_PASSSEC = 18 pkg syscall (linux-amd64-cgo), const IP_PKTINFO = 8 pkg syscall (linux-amd64-cgo), const IP_PKTOPTIONS = 9 pkg syscall (linux-amd64-cgo), const IP_PMTUDISC = 10 pkg syscall (linux-amd64-cgo), const IP_PMTUDISC_DO = 2 pkg syscall (linux-amd64-cgo), const IP_PMTUDISC_DONT = 0 pkg syscall (linux-amd64-cgo), const IP_PMTUDISC_PROBE = 3 pkg syscall (linux-amd64-cgo), const IP_PMTUDISC_WANT = 1 pkg syscall (linux-amd64-cgo), const IP_RECVERR = 11 pkg syscall (linux-amd64-cgo), const IP_RECVOPTS = 6 pkg syscall (linux-amd64-cgo), const IP_RECVORIGDSTADDR = 20 pkg syscall (linux-amd64-cgo), const IP_RECVRETOPTS = 7 pkg syscall (linux-amd64-cgo), const IP_RECVTOS = 13 pkg syscall (linux-amd64-cgo), const IP_RECVTTL = 12 pkg syscall (linux-amd64-cgo), const IP_RETOPTS = 7 pkg syscall (linux-amd64-cgo), const IP_RF = 32768 pkg syscall (linux-amd64-cgo), const IP_ROUTER_ALERT = 5 pkg syscall (linux-amd64-cgo), const IP_TOS = 1 pkg syscall (linux-amd64-cgo), const IP_TRANSPARENT = 19 pkg syscall (linux-amd64-cgo), const IP_TTL = 2 pkg syscall (linux-amd64-cgo), const IP_UNBLOCK_SOURCE = 37 pkg syscall (linux-amd64-cgo), const IP_XFRM_POLICY = 17 pkg syscall (linux-amd64-cgo), const ISIG = 1 pkg syscall (linux-amd64-cgo), const ISTRIP = 32 pkg syscall (linux-amd64-cgo), const IUCLC = 512 pkg syscall (linux-amd64-cgo), const IUTF8 = 16384 pkg syscall (linux-amd64-cgo), const IXANY = 2048 pkg syscall (linux-amd64-cgo), const IXOFF = 4096 pkg syscall (linux-amd64-cgo), const IXON = 1024 pkg syscall (linux-amd64-cgo), const ImplementsGetwd = true pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_CAD_OFF = 0 pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_CAD_ON = 2309737967 pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_HALT = 3454992675 pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_KEXEC = 1163412803 pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_POWER_OFF = 1126301404 pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_RESTART = 19088743 pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_RESTART2 = 2712847316 pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_SW_SUSPEND = 3489725666 pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_MAGIC1 = 4276215469 pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_MAGIC2 = 672274793 pkg syscall (linux-amd64-cgo), const LOCK_EX = 2 pkg syscall (linux-amd64-cgo), const LOCK_NB = 4 pkg syscall (linux-amd64-cgo), const LOCK_SH = 1 pkg syscall (linux-amd64-cgo), const LOCK_UN = 8 pkg syscall (linux-amd64-cgo), const MADV_DOFORK = 11 pkg syscall (linux-amd64-cgo), const MADV_DONTFORK = 10 pkg syscall (linux-amd64-cgo), const MADV_DONTNEED = 4 pkg syscall (linux-amd64-cgo), const MADV_HUGEPAGE = 14 pkg syscall (linux-amd64-cgo), const MADV_HWPOISON = 100 pkg syscall (linux-amd64-cgo), const MADV_MERGEABLE = 12 pkg syscall (linux-amd64-cgo), const MADV_NOHUGEPAGE = 15 pkg syscall (linux-amd64-cgo), const MADV_NORMAL = 0 pkg syscall (linux-amd64-cgo), const MADV_RANDOM = 1 pkg syscall (linux-amd64-cgo), const MADV_REMOVE = 9 pkg syscall (linux-amd64-cgo), const MADV_SEQUENTIAL = 2 pkg syscall (linux-amd64-cgo), const MADV_UNMERGEABLE = 13 pkg syscall (linux-amd64-cgo), const MADV_WILLNEED = 3 pkg syscall (linux-amd64-cgo), const MAP_32BIT = 64 pkg syscall (linux-amd64-cgo), const MAP_ANON = 32 pkg syscall (linux-amd64-cgo), const MAP_ANONYMOUS = 32 pkg syscall (linux-amd64-cgo), const MAP_DENYWRITE = 2048 pkg syscall (linux-amd64-cgo), const MAP_EXECUTABLE = 4096 pkg syscall (linux-amd64-cgo), const MAP_FILE = 0 pkg syscall (linux-amd64-cgo), const MAP_FIXED = 16 pkg syscall (linux-amd64-cgo), const MAP_GROWSDOWN = 256 pkg syscall (linux-amd64-cgo), const MAP_HUGETLB = 262144 pkg syscall (linux-amd64-cgo), const MAP_LOCKED = 8192 pkg syscall (linux-amd64-cgo), const MAP_NONBLOCK = 65536 pkg syscall (linux-amd64-cgo), const MAP_NORESERVE = 16384 pkg syscall (linux-amd64-cgo), const MAP_POPULATE = 32768 pkg syscall (linux-amd64-cgo), const MAP_PRIVATE = 2 pkg syscall (linux-amd64-cgo), const MAP_SHARED = 1 pkg syscall (linux-amd64-cgo), const MAP_STACK = 131072 pkg syscall (linux-amd64-cgo), const MAP_TYPE = 15 pkg syscall (linux-amd64-cgo), const MCL_CURRENT = 1 pkg syscall (linux-amd64-cgo), const MCL_FUTURE = 2 pkg syscall (linux-amd64-cgo), const MNT_DETACH = 2 pkg syscall (linux-amd64-cgo), const MNT_EXPIRE = 4 pkg syscall (linux-amd64-cgo), const MNT_FORCE = 1 pkg syscall (linux-amd64-cgo), const MSG_CMSG_CLOEXEC = 1073741824 pkg syscall (linux-amd64-cgo), const MSG_CONFIRM = 2048 pkg syscall (linux-amd64-cgo), const MSG_CTRUNC = 8 pkg syscall (linux-amd64-cgo), const MSG_DONTROUTE = 4 pkg syscall (linux-amd64-cgo), const MSG_DONTWAIT = 64 pkg syscall (linux-amd64-cgo), const MSG_EOR = 128 pkg syscall (linux-amd64-cgo), const MSG_ERRQUEUE = 8192 pkg syscall (linux-amd64-cgo), const MSG_FASTOPEN = 536870912 pkg syscall (linux-amd64-cgo), const MSG_FASTOPEN ideal-int pkg syscall (linux-amd64-cgo), const MSG_FIN = 512 pkg syscall (linux-amd64-cgo), const MSG_MORE = 32768 pkg syscall (linux-amd64-cgo), const MSG_NOSIGNAL = 16384 pkg syscall (linux-amd64-cgo), const MSG_OOB = 1 pkg syscall (linux-amd64-cgo), const MSG_PEEK = 2 pkg syscall (linux-amd64-cgo), const MSG_PROXY = 16 pkg syscall (linux-amd64-cgo), const MSG_RST = 4096 pkg syscall (linux-amd64-cgo), const MSG_SYN = 1024 pkg syscall (linux-amd64-cgo), const MSG_TRUNC = 32 pkg syscall (linux-amd64-cgo), const MSG_TRYHARD = 4 pkg syscall (linux-amd64-cgo), const MSG_WAITALL = 256 pkg syscall (linux-amd64-cgo), const MSG_WAITFORONE = 65536 pkg syscall (linux-amd64-cgo), const MS_ACTIVE = 1073741824 pkg syscall (linux-amd64-cgo), const MS_ASYNC = 1 pkg syscall (linux-amd64-cgo), const MS_BIND = 4096 pkg syscall (linux-amd64-cgo), const MS_DIRSYNC = 128 pkg syscall (linux-amd64-cgo), const MS_INVALIDATE = 2 pkg syscall (linux-amd64-cgo), const MS_I_VERSION = 8388608 pkg syscall (linux-amd64-cgo), const MS_KERNMOUNT = 4194304 pkg syscall (linux-amd64-cgo), const MS_MANDLOCK = 64 pkg syscall (linux-amd64-cgo), const MS_MGC_MSK = 4294901760 pkg syscall (linux-amd64-cgo), const MS_MGC_VAL = 3236757504 pkg syscall (linux-amd64-cgo), const MS_MOVE = 8192 pkg syscall (linux-amd64-cgo), const MS_NOATIME = 1024 pkg syscall (linux-amd64-cgo), const MS_NODEV = 4 pkg syscall (linux-amd64-cgo), const MS_NODIRATIME = 2048 pkg syscall (linux-amd64-cgo), const MS_NOEXEC = 8 pkg syscall (linux-amd64-cgo), const MS_NOSUID = 2 pkg syscall (linux-amd64-cgo), const MS_NOUSER = -2147483648 pkg syscall (linux-amd64-cgo), const MS_POSIXACL = 65536 pkg syscall (linux-amd64-cgo), const MS_PRIVATE = 262144 pkg syscall (linux-amd64-cgo), const MS_RDONLY = 1 pkg syscall (linux-amd64-cgo), const MS_REC = 16384 pkg syscall (linux-amd64-cgo), const MS_RELATIME = 2097152 pkg syscall (linux-amd64-cgo), const MS_REMOUNT = 32 pkg syscall (linux-amd64-cgo), const MS_RMT_MASK = 8388689 pkg syscall (linux-amd64-cgo), const MS_SHARED = 1048576 pkg syscall (linux-amd64-cgo), const MS_SILENT = 32768 pkg syscall (linux-amd64-cgo), const MS_SLAVE = 524288 pkg syscall (linux-amd64-cgo), const MS_STRICTATIME = 16777216 pkg syscall (linux-amd64-cgo), const MS_SYNC = 4 pkg syscall (linux-amd64-cgo), const MS_SYNCHRONOUS = 16 pkg syscall (linux-amd64-cgo), const MS_UNBINDABLE = 131072 pkg syscall (linux-amd64-cgo), const NAME_MAX = 255 pkg syscall (linux-amd64-cgo), const NETLINK_ADD_MEMBERSHIP = 1 pkg syscall (linux-amd64-cgo), const NETLINK_AUDIT = 9 pkg syscall (linux-amd64-cgo), const NETLINK_BROADCAST_ERROR = 4 pkg syscall (linux-amd64-cgo), const NETLINK_CONNECTOR = 11 pkg syscall (linux-amd64-cgo), const NETLINK_DNRTMSG = 14 pkg syscall (linux-amd64-cgo), const NETLINK_DROP_MEMBERSHIP = 2 pkg syscall (linux-amd64-cgo), const NETLINK_ECRYPTFS = 19 pkg syscall (linux-amd64-cgo), const NETLINK_FIB_LOOKUP = 10 pkg syscall (linux-amd64-cgo), const NETLINK_FIREWALL = 3 pkg syscall (linux-amd64-cgo), const NETLINK_GENERIC = 16 pkg syscall (linux-amd64-cgo), const NETLINK_INET_DIAG = 4 pkg syscall (linux-amd64-cgo), const NETLINK_IP6_FW = 13 pkg syscall (linux-amd64-cgo), const NETLINK_ISCSI = 8 pkg syscall (linux-amd64-cgo), const NETLINK_KOBJECT_UEVENT = 15 pkg syscall (linux-amd64-cgo), const NETLINK_NETFILTER = 12 pkg syscall (linux-amd64-cgo), const NETLINK_NFLOG = 5 pkg syscall (linux-amd64-cgo), const NETLINK_NO_ENOBUFS = 5 pkg syscall (linux-amd64-cgo), const NETLINK_PKTINFO = 3 pkg syscall (linux-amd64-cgo), const NETLINK_ROUTE = 0 pkg syscall (linux-amd64-cgo), const NETLINK_SCSITRANSPORT = 18 pkg syscall (linux-amd64-cgo), const NETLINK_SELINUX = 7 pkg syscall (linux-amd64-cgo), const NETLINK_UNUSED = 1 pkg syscall (linux-amd64-cgo), const NETLINK_USERSOCK = 2 pkg syscall (linux-amd64-cgo), const NETLINK_XFRM = 6 pkg syscall (linux-amd64-cgo), const NLA_ALIGNTO = 4 pkg syscall (linux-amd64-cgo), const NLA_F_NESTED = 32768 pkg syscall (linux-amd64-cgo), const NLA_F_NET_BYTEORDER = 16384 pkg syscall (linux-amd64-cgo), const NLA_HDRLEN = 4 pkg syscall (linux-amd64-cgo), const NLMSG_ALIGNTO = 4 pkg syscall (linux-amd64-cgo), const NLMSG_DONE = 3 pkg syscall (linux-amd64-cgo), const NLMSG_ERROR = 2 pkg syscall (linux-amd64-cgo), const NLMSG_HDRLEN = 16 pkg syscall (linux-amd64-cgo), const NLMSG_MIN_TYPE = 16 pkg syscall (linux-amd64-cgo), const NLMSG_NOOP = 1 pkg syscall (linux-amd64-cgo), const NLMSG_OVERRUN = 4 pkg syscall (linux-amd64-cgo), const NLM_F_ACK = 4 pkg syscall (linux-amd64-cgo), const NLM_F_APPEND = 2048 pkg syscall (linux-amd64-cgo), const NLM_F_ATOMIC = 1024 pkg syscall (linux-amd64-cgo), const NLM_F_CREATE = 1024 pkg syscall (linux-amd64-cgo), const NLM_F_DUMP = 768 pkg syscall (linux-amd64-cgo), const NLM_F_ECHO = 8 pkg syscall (linux-amd64-cgo), const NLM_F_EXCL = 512 pkg syscall (linux-amd64-cgo), const NLM_F_MATCH = 512 pkg syscall (linux-amd64-cgo), const NLM_F_MULTI = 2 pkg syscall (linux-amd64-cgo), const NLM_F_REPLACE = 256 pkg syscall (linux-amd64-cgo), const NLM_F_REQUEST = 1 pkg syscall (linux-amd64-cgo), const NLM_F_ROOT = 256 pkg syscall (linux-amd64-cgo), const NOFLSH = 128 pkg syscall (linux-amd64-cgo), const OCRNL = 8 pkg syscall (linux-amd64-cgo), const OFDEL = 128 pkg syscall (linux-amd64-cgo), const OFILL = 64 pkg syscall (linux-amd64-cgo), const OLCUC = 2 pkg syscall (linux-amd64-cgo), const ONLCR = 4 pkg syscall (linux-amd64-cgo), const ONLRET = 32 pkg syscall (linux-amd64-cgo), const ONOCR = 16 pkg syscall (linux-amd64-cgo), const OPOST = 1 pkg syscall (linux-amd64-cgo), const O_ACCMODE = 3 pkg syscall (linux-amd64-cgo), const O_APPEND = 1024 pkg syscall (linux-amd64-cgo), const O_ASYNC = 8192 pkg syscall (linux-amd64-cgo), const O_CLOEXEC = 524288 pkg syscall (linux-amd64-cgo), const O_CREAT = 64 pkg syscall (linux-amd64-cgo), const O_DIRECT = 16384 pkg syscall (linux-amd64-cgo), const O_DIRECTORY = 65536 pkg syscall (linux-amd64-cgo), const O_DSYNC = 4096 pkg syscall (linux-amd64-cgo), const O_EXCL = 128 pkg syscall (linux-amd64-cgo), const O_FSYNC = 1052672 pkg syscall (linux-amd64-cgo), const O_LARGEFILE = 0 pkg syscall (linux-amd64-cgo), const O_NDELAY = 2048 pkg syscall (linux-amd64-cgo), const O_NOATIME = 262144 pkg syscall (linux-amd64-cgo), const O_NOCTTY = 256 pkg syscall (linux-amd64-cgo), const O_NOFOLLOW = 131072 pkg syscall (linux-amd64-cgo), const O_NONBLOCK = 2048 pkg syscall (linux-amd64-cgo), const O_RSYNC = 1052672 pkg syscall (linux-amd64-cgo), const O_SYNC = 1052672 pkg syscall (linux-amd64-cgo), const O_TRUNC = 512 pkg syscall (linux-amd64-cgo), const PACKET_ADD_MEMBERSHIP = 1 pkg syscall (linux-amd64-cgo), const PACKET_BROADCAST = 1 pkg syscall (linux-amd64-cgo), const PACKET_DROP_MEMBERSHIP = 2 pkg syscall (linux-amd64-cgo), const PACKET_FASTROUTE = 6 pkg syscall (linux-amd64-cgo), const PACKET_HOST = 0 pkg syscall (linux-amd64-cgo), const PACKET_LOOPBACK = 5 pkg syscall (linux-amd64-cgo), const PACKET_MR_ALLMULTI = 2 pkg syscall (linux-amd64-cgo), const PACKET_MR_MULTICAST = 0 pkg syscall (linux-amd64-cgo), const PACKET_MR_PROMISC = 1 pkg syscall (linux-amd64-cgo), const PACKET_MULTICAST = 2 pkg syscall (linux-amd64-cgo), const PACKET_OTHERHOST = 3 pkg syscall (linux-amd64-cgo), const PACKET_OUTGOING = 4 pkg syscall (linux-amd64-cgo), const PACKET_RECV_OUTPUT = 3 pkg syscall (linux-amd64-cgo), const PACKET_RX_RING = 5 pkg syscall (linux-amd64-cgo), const PACKET_STATISTICS = 6 pkg syscall (linux-amd64-cgo), const PARENB = 256 pkg syscall (linux-amd64-cgo), const PARMRK = 8 pkg syscall (linux-amd64-cgo), const PARODD = 512 pkg syscall (linux-amd64-cgo), const PENDIN = 16384 pkg syscall (linux-amd64-cgo), const PROT_EXEC = 4 pkg syscall (linux-amd64-cgo), const PROT_GROWSDOWN = 16777216 pkg syscall (linux-amd64-cgo), const PROT_GROWSUP = 33554432 pkg syscall (linux-amd64-cgo), const PROT_NONE = 0 pkg syscall (linux-amd64-cgo), const PROT_READ = 1 pkg syscall (linux-amd64-cgo), const PROT_WRITE = 2 pkg syscall (linux-amd64-cgo), const PR_CAPBSET_DROP = 24 pkg syscall (linux-amd64-cgo), const PR_CAPBSET_READ = 23 pkg syscall (linux-amd64-cgo), const PR_ENDIAN_BIG = 0 pkg syscall (linux-amd64-cgo), const PR_ENDIAN_LITTLE = 1 pkg syscall (linux-amd64-cgo), const PR_ENDIAN_PPC_LITTLE = 2 pkg syscall (linux-amd64-cgo), const PR_FPEMU_NOPRINT = 1 pkg syscall (linux-amd64-cgo), const PR_FPEMU_SIGFPE = 2 pkg syscall (linux-amd64-cgo), const PR_FP_EXC_ASYNC = 2 pkg syscall (linux-amd64-cgo), const PR_FP_EXC_DISABLED = 0 pkg syscall (linux-amd64-cgo), const PR_FP_EXC_DIV = 65536 pkg syscall (linux-amd64-cgo), const PR_FP_EXC_INV = 1048576 pkg syscall (linux-amd64-cgo), const PR_FP_EXC_NONRECOV = 1 pkg syscall (linux-amd64-cgo), const PR_FP_EXC_OVF = 131072 pkg syscall (linux-amd64-cgo), const PR_FP_EXC_PRECISE = 3 pkg syscall (linux-amd64-cgo), const PR_FP_EXC_RES = 524288 pkg syscall (linux-amd64-cgo), const PR_FP_EXC_SW_ENABLE = 128 pkg syscall (linux-amd64-cgo), const PR_FP_EXC_UND = 262144 pkg syscall (linux-amd64-cgo), const PR_GET_DUMPABLE = 3 pkg syscall (linux-amd64-cgo), const PR_GET_ENDIAN = 19 pkg syscall (linux-amd64-cgo), const PR_GET_FPEMU = 9 pkg syscall (linux-amd64-cgo), const PR_GET_FPEXC = 11 pkg syscall (linux-amd64-cgo), const PR_GET_KEEPCAPS = 7 pkg syscall (linux-amd64-cgo), const PR_GET_NAME = 16 pkg syscall (linux-amd64-cgo), const PR_GET_PDEATHSIG = 2 pkg syscall (linux-amd64-cgo), const PR_GET_SECCOMP = 21 pkg syscall (linux-amd64-cgo), const PR_GET_SECUREBITS = 27 pkg syscall (linux-amd64-cgo), const PR_GET_TIMERSLACK = 30 pkg syscall (linux-amd64-cgo), const PR_GET_TIMING = 13 pkg syscall (linux-amd64-cgo), const PR_GET_TSC = 25 pkg syscall (linux-amd64-cgo), const PR_GET_UNALIGN = 5 pkg syscall (linux-amd64-cgo), const PR_MCE_KILL = 33 pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_CLEAR = 0 pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_DEFAULT = 2 pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_EARLY = 1 pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_GET = 34 pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_LATE = 0 pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_SET = 1 pkg syscall (linux-amd64-cgo), const PR_SET_DUMPABLE = 4 pkg syscall (linux-amd64-cgo), const PR_SET_ENDIAN = 20 pkg syscall (linux-amd64-cgo), const PR_SET_FPEMU = 10 pkg syscall (linux-amd64-cgo), const PR_SET_FPEXC = 12 pkg syscall (linux-amd64-cgo), const PR_SET_KEEPCAPS = 8 pkg syscall (linux-amd64-cgo), const PR_SET_NAME = 15 pkg syscall (linux-amd64-cgo), const PR_SET_PDEATHSIG = 1 pkg syscall (linux-amd64-cgo), const PR_SET_PTRACER = 1499557217 pkg syscall (linux-amd64-cgo), const PR_SET_SECCOMP = 22 pkg syscall (linux-amd64-cgo), const PR_SET_SECUREBITS = 28 pkg syscall (linux-amd64-cgo), const PR_SET_TIMERSLACK = 29 pkg syscall (linux-amd64-cgo), const PR_SET_TIMING = 14 pkg syscall (linux-amd64-cgo), const PR_SET_TSC = 26 pkg syscall (linux-amd64-cgo), const PR_SET_UNALIGN = 6 pkg syscall (linux-amd64-cgo), const PR_TASK_PERF_EVENTS_DISABLE = 31 pkg syscall (linux-amd64-cgo), const PR_TASK_PERF_EVENTS_ENABLE = 32 pkg syscall (linux-amd64-cgo), const PR_TIMING_STATISTICAL = 0 pkg syscall (linux-amd64-cgo), const PR_TIMING_TIMESTAMP = 1 pkg syscall (linux-amd64-cgo), const PR_TSC_ENABLE = 1 pkg syscall (linux-amd64-cgo), const PR_TSC_SIGSEGV = 2 pkg syscall (linux-amd64-cgo), const PR_UNALIGN_NOPRINT = 1 pkg syscall (linux-amd64-cgo), const PR_UNALIGN_SIGBUS = 2 pkg syscall (linux-amd64-cgo), const PTRACE_ARCH_PRCTL = 30 pkg syscall (linux-amd64-cgo), const PTRACE_ATTACH = 16 pkg syscall (linux-amd64-cgo), const PTRACE_CONT = 7 pkg syscall (linux-amd64-cgo), const PTRACE_DETACH = 17 pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_CLONE = 3 pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_EXEC = 4 pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_EXIT = 6 pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_FORK = 1 pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_VFORK = 2 pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_VFORK_DONE = 5 pkg syscall (linux-amd64-cgo), const PTRACE_GETEVENTMSG = 16897 pkg syscall (linux-amd64-cgo), const PTRACE_GETFPREGS = 14 pkg syscall (linux-amd64-cgo), const PTRACE_GETFPXREGS = 18 pkg syscall (linux-amd64-cgo), const PTRACE_GETREGS = 12 pkg syscall (linux-amd64-cgo), const PTRACE_GETREGSET = 16900 pkg syscall (linux-amd64-cgo), const PTRACE_GETSIGINFO = 16898 pkg syscall (linux-amd64-cgo), const PTRACE_GET_THREAD_AREA = 25 pkg syscall (linux-amd64-cgo), const PTRACE_KILL = 8 pkg syscall (linux-amd64-cgo), const PTRACE_OLDSETOPTIONS = 21 pkg syscall (linux-amd64-cgo), const PTRACE_O_MASK = 127 pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACECLONE = 8 pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEEXEC = 16 pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEEXIT = 64 pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEFORK = 2 pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACESYSGOOD = 1 pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEVFORK = 4 pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEVFORKDONE = 32 pkg syscall (linux-amd64-cgo), const PTRACE_PEEKDATA = 2 pkg syscall (linux-amd64-cgo), const PTRACE_PEEKTEXT = 1 pkg syscall (linux-amd64-cgo), const PTRACE_PEEKUSR = 3 pkg syscall (linux-amd64-cgo), const PTRACE_POKEDATA = 5 pkg syscall (linux-amd64-cgo), const PTRACE_POKETEXT = 4 pkg syscall (linux-amd64-cgo), const PTRACE_POKEUSR = 6 pkg syscall (linux-amd64-cgo), const PTRACE_SETFPREGS = 15 pkg syscall (linux-amd64-cgo), const PTRACE_SETFPXREGS = 19 pkg syscall (linux-amd64-cgo), const PTRACE_SETOPTIONS = 16896 pkg syscall (linux-amd64-cgo), const PTRACE_SETREGS = 13 pkg syscall (linux-amd64-cgo), const PTRACE_SETREGSET = 16901 pkg syscall (linux-amd64-cgo), const PTRACE_SETSIGINFO = 16899 pkg syscall (linux-amd64-cgo), const PTRACE_SET_THREAD_AREA = 26 pkg syscall (linux-amd64-cgo), const PTRACE_SINGLEBLOCK = 33 pkg syscall (linux-amd64-cgo), const PTRACE_SINGLESTEP = 9 pkg syscall (linux-amd64-cgo), const PTRACE_SYSCALL = 24 pkg syscall (linux-amd64-cgo), const PTRACE_SYSEMU = 31 pkg syscall (linux-amd64-cgo), const PTRACE_SYSEMU_SINGLESTEP = 32 pkg syscall (linux-amd64-cgo), const PTRACE_TRACEME = 0 pkg syscall (linux-amd64-cgo), const PathMax = 4096 pkg syscall (linux-amd64-cgo), const RLIMIT_AS = 9 pkg syscall (linux-amd64-cgo), const RLIMIT_CORE = 4 pkg syscall (linux-amd64-cgo), const RLIMIT_CPU = 0 pkg syscall (linux-amd64-cgo), const RLIMIT_DATA = 2 pkg syscall (linux-amd64-cgo), const RLIMIT_FSIZE = 1 pkg syscall (linux-amd64-cgo), const RLIMIT_NOFILE = 7 pkg syscall (linux-amd64-cgo), const RLIMIT_STACK = 3 pkg syscall (linux-amd64-cgo), const RLIM_INFINITY = -1 pkg syscall (linux-amd64-cgo), const RTAX_ADVMSS = 8 pkg syscall (linux-amd64-cgo), const RTAX_CWND = 7 pkg syscall (linux-amd64-cgo), const RTAX_FEATURES = 12 pkg syscall (linux-amd64-cgo), const RTAX_FEATURE_ALLFRAG = 8 pkg syscall (linux-amd64-cgo), const RTAX_FEATURE_ECN = 1 pkg syscall (linux-amd64-cgo), const RTAX_FEATURE_SACK = 2 pkg syscall (linux-amd64-cgo), const RTAX_FEATURE_TIMESTAMP = 4 pkg syscall (linux-amd64-cgo), const RTAX_HOPLIMIT = 10 pkg syscall (linux-amd64-cgo), const RTAX_INITCWND = 11 pkg syscall (linux-amd64-cgo), const RTAX_INITRWND = 14 pkg syscall (linux-amd64-cgo), const RTAX_LOCK = 1 pkg syscall (linux-amd64-cgo), const RTAX_MAX = 14 pkg syscall (linux-amd64-cgo), const RTAX_MTU = 2 pkg syscall (linux-amd64-cgo), const RTAX_REORDERING = 9 pkg syscall (linux-amd64-cgo), const RTAX_RTO_MIN = 13 pkg syscall (linux-amd64-cgo), const RTAX_RTT = 4 pkg syscall (linux-amd64-cgo), const RTAX_RTTVAR = 5 pkg syscall (linux-amd64-cgo), const RTAX_SSTHRESH = 6 pkg syscall (linux-amd64-cgo), const RTAX_UNSPEC = 0 pkg syscall (linux-amd64-cgo), const RTAX_WINDOW = 3 pkg syscall (linux-amd64-cgo), const RTA_ALIGNTO = 4 pkg syscall (linux-amd64-cgo), const RTA_CACHEINFO = 12 pkg syscall (linux-amd64-cgo), const RTA_DST = 1 pkg syscall (linux-amd64-cgo), const RTA_FLOW = 11 pkg syscall (linux-amd64-cgo), const RTA_GATEWAY = 5 pkg syscall (linux-amd64-cgo), const RTA_IIF = 3 pkg syscall (linux-amd64-cgo), const RTA_MAX = 16 pkg syscall (linux-amd64-cgo), const RTA_METRICS = 8 pkg syscall (linux-amd64-cgo), const RTA_MULTIPATH = 9 pkg syscall (linux-amd64-cgo), const RTA_OIF = 4 pkg syscall (linux-amd64-cgo), const RTA_PREFSRC = 7 pkg syscall (linux-amd64-cgo), const RTA_PRIORITY = 6 pkg syscall (linux-amd64-cgo), const RTA_SRC = 2 pkg syscall (linux-amd64-cgo), const RTA_TABLE = 15 pkg syscall (linux-amd64-cgo), const RTA_UNSPEC = 0 pkg syscall (linux-amd64-cgo), const RTCF_DIRECTSRC = 67108864 pkg syscall (linux-amd64-cgo), const RTCF_DOREDIRECT = 16777216 pkg syscall (linux-amd64-cgo), const RTCF_LOG = 33554432 pkg syscall (linux-amd64-cgo), const RTCF_MASQ = 4194304 pkg syscall (linux-amd64-cgo), const RTCF_NAT = 8388608 pkg syscall (linux-amd64-cgo), const RTCF_VALVE = 2097152 pkg syscall (linux-amd64-cgo), const RTF_ADDRCLASSMASK = 4160749568 pkg syscall (linux-amd64-cgo), const RTF_ADDRCONF = 262144 pkg syscall (linux-amd64-cgo), const RTF_ALLONLINK = 131072 pkg syscall (linux-amd64-cgo), const RTF_BROADCAST = 268435456 pkg syscall (linux-amd64-cgo), const RTF_CACHE = 16777216 pkg syscall (linux-amd64-cgo), const RTF_DEFAULT = 65536 pkg syscall (linux-amd64-cgo), const RTF_DYNAMIC = 16 pkg syscall (linux-amd64-cgo), const RTF_FLOW = 33554432 pkg syscall (linux-amd64-cgo), const RTF_GATEWAY = 2 pkg syscall (linux-amd64-cgo), const RTF_HOST = 4 pkg syscall (linux-amd64-cgo), const RTF_INTERFACE = 1073741824 pkg syscall (linux-amd64-cgo), const RTF_IRTT = 256 pkg syscall (linux-amd64-cgo), const RTF_LINKRT = 1048576 pkg syscall (linux-amd64-cgo), const RTF_LOCAL = 2147483648 pkg syscall (linux-amd64-cgo), const RTF_MODIFIED = 32 pkg syscall (linux-amd64-cgo), const RTF_MSS = 64 pkg syscall (linux-amd64-cgo), const RTF_MTU = 64 pkg syscall (linux-amd64-cgo), const RTF_MULTICAST = 536870912 pkg syscall (linux-amd64-cgo), const RTF_NAT = 134217728 pkg syscall (linux-amd64-cgo), const RTF_NOFORWARD = 4096 pkg syscall (linux-amd64-cgo), const RTF_NONEXTHOP = 2097152 pkg syscall (linux-amd64-cgo), const RTF_NOPMTUDISC = 16384 pkg syscall (linux-amd64-cgo), const RTF_POLICY = 67108864 pkg syscall (linux-amd64-cgo), const RTF_REINSTATE = 8 pkg syscall (linux-amd64-cgo), const RTF_REJECT = 512 pkg syscall (linux-amd64-cgo), const RTF_STATIC = 1024 pkg syscall (linux-amd64-cgo), const RTF_THROW = 8192 pkg syscall (linux-amd64-cgo), const RTF_UP = 1 pkg syscall (linux-amd64-cgo), const RTF_WINDOW = 128 pkg syscall (linux-amd64-cgo), const RTF_XRESOLVE = 2048 pkg syscall (linux-amd64-cgo), const RTM_BASE = 16 pkg syscall (linux-amd64-cgo), const RTM_DELACTION = 49 pkg syscall (linux-amd64-cgo), const RTM_DELADDR = 21 pkg syscall (linux-amd64-cgo), const RTM_DELADDRLABEL = 73 pkg syscall (linux-amd64-cgo), const RTM_DELLINK = 17 pkg syscall (linux-amd64-cgo), const RTM_DELNEIGH = 29 pkg syscall (linux-amd64-cgo), const RTM_DELQDISC = 37 pkg syscall (linux-amd64-cgo), const RTM_DELROUTE = 25 pkg syscall (linux-amd64-cgo), const RTM_DELRULE = 33 pkg syscall (linux-amd64-cgo), const RTM_DELTCLASS = 41 pkg syscall (linux-amd64-cgo), const RTM_DELTFILTER = 45 pkg syscall (linux-amd64-cgo), const RTM_F_CLONED = 512 pkg syscall (linux-amd64-cgo), const RTM_F_EQUALIZE = 1024 pkg syscall (linux-amd64-cgo), const RTM_F_NOTIFY = 256 pkg syscall (linux-amd64-cgo), const RTM_F_PREFIX = 2048 pkg syscall (linux-amd64-cgo), const RTM_GETACTION = 50 pkg syscall (linux-amd64-cgo), const RTM_GETADDR = 22 pkg syscall (linux-amd64-cgo), const RTM_GETADDRLABEL = 74 pkg syscall (linux-amd64-cgo), const RTM_GETANYCAST = 62 pkg syscall (linux-amd64-cgo), const RTM_GETDCB = 78 pkg syscall (linux-amd64-cgo), const RTM_GETLINK = 18 pkg syscall (linux-amd64-cgo), const RTM_GETMULTICAST = 58 pkg syscall (linux-amd64-cgo), const RTM_GETNEIGH = 30 pkg syscall (linux-amd64-cgo), const RTM_GETNEIGHTBL = 66 pkg syscall (linux-amd64-cgo), const RTM_GETQDISC = 38 pkg syscall (linux-amd64-cgo), const RTM_GETROUTE = 26 pkg syscall (linux-amd64-cgo), const RTM_GETRULE = 34 pkg syscall (linux-amd64-cgo), const RTM_GETTCLASS = 42 pkg syscall (linux-amd64-cgo), const RTM_GETTFILTER = 46 pkg syscall (linux-amd64-cgo), const RTM_MAX = 79 pkg syscall (linux-amd64-cgo), const RTM_NEWACTION = 48 pkg syscall (linux-amd64-cgo), const RTM_NEWADDR = 20 pkg syscall (linux-amd64-cgo), const RTM_NEWADDRLABEL = 72 pkg syscall (linux-amd64-cgo), const RTM_NEWLINK = 16 pkg syscall (linux-amd64-cgo), const RTM_NEWNDUSEROPT = 68 pkg syscall (linux-amd64-cgo), const RTM_NEWNEIGH = 28 pkg syscall (linux-amd64-cgo), const RTM_NEWNEIGHTBL = 64 pkg syscall (linux-amd64-cgo), const RTM_NEWPREFIX = 52 pkg syscall (linux-amd64-cgo), const RTM_NEWQDISC = 36 pkg syscall (linux-amd64-cgo), const RTM_NEWROUTE = 24 pkg syscall (linux-amd64-cgo), const RTM_NEWRULE = 32 pkg syscall (linux-amd64-cgo), const RTM_NEWTCLASS = 40 pkg syscall (linux-amd64-cgo), const RTM_NEWTFILTER = 44 pkg syscall (linux-amd64-cgo), const RTM_NR_FAMILIES = 16 pkg syscall (linux-amd64-cgo), const RTM_NR_MSGTYPES = 64 pkg syscall (linux-amd64-cgo), const RTM_SETDCB = 79 pkg syscall (linux-amd64-cgo), const RTM_SETLINK = 19 pkg syscall (linux-amd64-cgo), const RTM_SETNEIGHTBL = 67 pkg syscall (linux-amd64-cgo), const RTNH_ALIGNTO = 4 pkg syscall (linux-amd64-cgo), const RTNH_F_DEAD = 1 pkg syscall (linux-amd64-cgo), const RTNH_F_ONLINK = 4 pkg syscall (linux-amd64-cgo), const RTNH_F_PERVASIVE = 2 pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV4_IFADDR = 5 pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV4_IFADDR ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV4_MROUTE = 6 pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV4_MROUTE ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV4_ROUTE = 7 pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV4_ROUTE ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV4_RULE = 8 pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV4_RULE ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV6_IFADDR = 9 pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV6_IFADDR ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV6_IFINFO = 12 pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV6_IFINFO ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV6_MROUTE = 10 pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV6_MROUTE ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV6_PREFIX = 18 pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV6_PREFIX ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV6_ROUTE = 11 pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV6_ROUTE ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV6_RULE = 19 pkg syscall (linux-amd64-cgo), const RTNLGRP_IPV6_RULE ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_LINK = 1 pkg syscall (linux-amd64-cgo), const RTNLGRP_LINK ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_ND_USEROPT = 20 pkg syscall (linux-amd64-cgo), const RTNLGRP_ND_USEROPT ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_NEIGH = 3 pkg syscall (linux-amd64-cgo), const RTNLGRP_NEIGH ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_NONE = 0 pkg syscall (linux-amd64-cgo), const RTNLGRP_NONE ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_NOTIFY = 2 pkg syscall (linux-amd64-cgo), const RTNLGRP_NOTIFY ideal-int pkg syscall (linux-amd64-cgo), const RTNLGRP_TC = 4 pkg syscall (linux-amd64-cgo), const RTNLGRP_TC ideal-int pkg syscall (linux-amd64-cgo), const RTN_ANYCAST = 4 pkg syscall (linux-amd64-cgo), const RTN_BLACKHOLE = 6 pkg syscall (linux-amd64-cgo), const RTN_BROADCAST = 3 pkg syscall (linux-amd64-cgo), const RTN_LOCAL = 2 pkg syscall (linux-amd64-cgo), const RTN_MAX = 11 pkg syscall (linux-amd64-cgo), const RTN_MULTICAST = 5 pkg syscall (linux-amd64-cgo), const RTN_NAT = 10 pkg syscall (linux-amd64-cgo), const RTN_PROHIBIT = 8 pkg syscall (linux-amd64-cgo), const RTN_THROW = 9 pkg syscall (linux-amd64-cgo), const RTN_UNICAST = 1 pkg syscall (linux-amd64-cgo), const RTN_UNREACHABLE = 7 pkg syscall (linux-amd64-cgo), const RTN_UNSPEC = 0 pkg syscall (linux-amd64-cgo), const RTN_XRESOLVE = 11 pkg syscall (linux-amd64-cgo), const RTPROT_BIRD = 12 pkg syscall (linux-amd64-cgo), const RTPROT_BOOT = 3 pkg syscall (linux-amd64-cgo), const RTPROT_DHCP = 16 pkg syscall (linux-amd64-cgo), const RTPROT_DNROUTED = 13 pkg syscall (linux-amd64-cgo), const RTPROT_GATED = 8 pkg syscall (linux-amd64-cgo), const RTPROT_KERNEL = 2 pkg syscall (linux-amd64-cgo), const RTPROT_MRT = 10 pkg syscall (linux-amd64-cgo), const RTPROT_NTK = 15 pkg syscall (linux-amd64-cgo), const RTPROT_RA = 9 pkg syscall (linux-amd64-cgo), const RTPROT_REDIRECT = 1 pkg syscall (linux-amd64-cgo), const RTPROT_STATIC = 4 pkg syscall (linux-amd64-cgo), const RTPROT_UNSPEC = 0 pkg syscall (linux-amd64-cgo), const RTPROT_XORP = 14 pkg syscall (linux-amd64-cgo), const RTPROT_ZEBRA = 11 pkg syscall (linux-amd64-cgo), const RT_CLASS_DEFAULT = 253 pkg syscall (linux-amd64-cgo), const RT_CLASS_LOCAL = 255 pkg syscall (linux-amd64-cgo), const RT_CLASS_MAIN = 254 pkg syscall (linux-amd64-cgo), const RT_CLASS_MAX = 255 pkg syscall (linux-amd64-cgo), const RT_CLASS_UNSPEC = 0 pkg syscall (linux-amd64-cgo), const RT_SCOPE_HOST = 254 pkg syscall (linux-amd64-cgo), const RT_SCOPE_LINK = 253 pkg syscall (linux-amd64-cgo), const RT_SCOPE_NOWHERE = 255 pkg syscall (linux-amd64-cgo), const RT_SCOPE_SITE = 200 pkg syscall (linux-amd64-cgo), const RT_SCOPE_UNIVERSE = 0 pkg syscall (linux-amd64-cgo), const RT_TABLE_COMPAT = 252 pkg syscall (linux-amd64-cgo), const RT_TABLE_DEFAULT = 253 pkg syscall (linux-amd64-cgo), const RT_TABLE_LOCAL = 255 pkg syscall (linux-amd64-cgo), const RT_TABLE_MAIN = 254 pkg syscall (linux-amd64-cgo), const RT_TABLE_MAX = 4294967295 pkg syscall (linux-amd64-cgo), const RT_TABLE_UNSPEC = 0 pkg syscall (linux-amd64-cgo), const RUSAGE_CHILDREN = -1 pkg syscall (linux-amd64-cgo), const RUSAGE_SELF = 0 pkg syscall (linux-amd64-cgo), const RUSAGE_THREAD = 1 pkg syscall (linux-amd64-cgo), const SCM_CREDENTIALS = 2 pkg syscall (linux-amd64-cgo), const SCM_RIGHTS = 1 pkg syscall (linux-amd64-cgo), const SCM_TIMESTAMP = 29 pkg syscall (linux-amd64-cgo), const SCM_TIMESTAMPING = 37 pkg syscall (linux-amd64-cgo), const SCM_TIMESTAMPNS = 35 pkg syscall (linux-amd64-cgo), const SIGBUS = 7 pkg syscall (linux-amd64-cgo), const SIGCHLD = 17 pkg syscall (linux-amd64-cgo), const SIGCLD = 17 pkg syscall (linux-amd64-cgo), const SIGCONT = 18 pkg syscall (linux-amd64-cgo), const SIGIO = 29 pkg syscall (linux-amd64-cgo), const SIGIOT = 6 pkg syscall (linux-amd64-cgo), const SIGPOLL = 29 pkg syscall (linux-amd64-cgo), const SIGPROF = 27 pkg syscall (linux-amd64-cgo), const SIGPWR = 30 pkg syscall (linux-amd64-cgo), const SIGSTKFLT = 16 pkg syscall (linux-amd64-cgo), const SIGSTOP = 19 pkg syscall (linux-amd64-cgo), const SIGSYS = 31 pkg syscall (linux-amd64-cgo), const SIGTSTP = 20 pkg syscall (linux-amd64-cgo), const SIGTTIN = 21 pkg syscall (linux-amd64-cgo), const SIGTTOU = 22 pkg syscall (linux-amd64-cgo), const SIGUNUSED = 31 pkg syscall (linux-amd64-cgo), const SIGURG = 23 pkg syscall (linux-amd64-cgo), const SIGUSR1 = 10 pkg syscall (linux-amd64-cgo), const SIGUSR2 = 12 pkg syscall (linux-amd64-cgo), const SIGVTALRM = 26 pkg syscall (linux-amd64-cgo), const SIGWINCH = 28 pkg syscall (linux-amd64-cgo), const SIGXCPU = 24 pkg syscall (linux-amd64-cgo), const SIGXFSZ = 25 pkg syscall (linux-amd64-cgo), const SIOCADDDLCI = 35200 pkg syscall (linux-amd64-cgo), const SIOCADDMULTI = 35121 pkg syscall (linux-amd64-cgo), const SIOCADDRT = 35083 pkg syscall (linux-amd64-cgo), const SIOCATMARK = 35077 pkg syscall (linux-amd64-cgo), const SIOCDARP = 35155 pkg syscall (linux-amd64-cgo), const SIOCDELDLCI = 35201 pkg syscall (linux-amd64-cgo), const SIOCDELMULTI = 35122 pkg syscall (linux-amd64-cgo), const SIOCDELRT = 35084 pkg syscall (linux-amd64-cgo), const SIOCDEVPRIVATE = 35312 pkg syscall (linux-amd64-cgo), const SIOCDIFADDR = 35126 pkg syscall (linux-amd64-cgo), const SIOCDRARP = 35168 pkg syscall (linux-amd64-cgo), const SIOCGARP = 35156 pkg syscall (linux-amd64-cgo), const SIOCGIFADDR = 35093 pkg syscall (linux-amd64-cgo), const SIOCGIFBR = 35136 pkg syscall (linux-amd64-cgo), const SIOCGIFBRDADDR = 35097 pkg syscall (linux-amd64-cgo), const SIOCGIFCONF = 35090 pkg syscall (linux-amd64-cgo), const SIOCGIFCOUNT = 35128 pkg syscall (linux-amd64-cgo), const SIOCGIFDSTADDR = 35095 pkg syscall (linux-amd64-cgo), const SIOCGIFENCAP = 35109 pkg syscall (linux-amd64-cgo), const SIOCGIFFLAGS = 35091 pkg syscall (linux-amd64-cgo), const SIOCGIFHWADDR = 35111 pkg syscall (linux-amd64-cgo), const SIOCGIFINDEX = 35123 pkg syscall (linux-amd64-cgo), const SIOCGIFMAP = 35184 pkg syscall (linux-amd64-cgo), const SIOCGIFMEM = 35103 pkg syscall (linux-amd64-cgo), const SIOCGIFMETRIC = 35101 pkg syscall (linux-amd64-cgo), const SIOCGIFMTU = 35105 pkg syscall (linux-amd64-cgo), const SIOCGIFNAME = 35088 pkg syscall (linux-amd64-cgo), const SIOCGIFNETMASK = 35099 pkg syscall (linux-amd64-cgo), const SIOCGIFPFLAGS = 35125 pkg syscall (linux-amd64-cgo), const SIOCGIFSLAVE = 35113 pkg syscall (linux-amd64-cgo), const SIOCGIFTXQLEN = 35138 pkg syscall (linux-amd64-cgo), const SIOCGPGRP = 35076 pkg syscall (linux-amd64-cgo), const SIOCGRARP = 35169 pkg syscall (linux-amd64-cgo), const SIOCGSTAMP = 35078 pkg syscall (linux-amd64-cgo), const SIOCGSTAMPNS = 35079 pkg syscall (linux-amd64-cgo), const SIOCPROTOPRIVATE = 35296 pkg syscall (linux-amd64-cgo), const SIOCRTMSG = 35085 pkg syscall (linux-amd64-cgo), const SIOCSARP = 35157 pkg syscall (linux-amd64-cgo), const SIOCSIFADDR = 35094 pkg syscall (linux-amd64-cgo), const SIOCSIFBR = 35137 pkg syscall (linux-amd64-cgo), const SIOCSIFBRDADDR = 35098 pkg syscall (linux-amd64-cgo), const SIOCSIFDSTADDR = 35096 pkg syscall (linux-amd64-cgo), const SIOCSIFENCAP = 35110 pkg syscall (linux-amd64-cgo), const SIOCSIFFLAGS = 35092 pkg syscall (linux-amd64-cgo), const SIOCSIFHWADDR = 35108 pkg syscall (linux-amd64-cgo), const SIOCSIFHWBROADCAST = 35127 pkg syscall (linux-amd64-cgo), const SIOCSIFLINK = 35089 pkg syscall (linux-amd64-cgo), const SIOCSIFMAP = 35185 pkg syscall (linux-amd64-cgo), const SIOCSIFMEM = 35104 pkg syscall (linux-amd64-cgo), const SIOCSIFMETRIC = 35102 pkg syscall (linux-amd64-cgo), const SIOCSIFMTU = 35106 pkg syscall (linux-amd64-cgo), const SIOCSIFNAME = 35107 pkg syscall (linux-amd64-cgo), const SIOCSIFNETMASK = 35100 pkg syscall (linux-amd64-cgo), const SIOCSIFPFLAGS = 35124 pkg syscall (linux-amd64-cgo), const SIOCSIFSLAVE = 35120 pkg syscall (linux-amd64-cgo), const SIOCSIFTXQLEN = 35139 pkg syscall (linux-amd64-cgo), const SIOCSPGRP = 35074 pkg syscall (linux-amd64-cgo), const SIOCSRARP = 35170 pkg syscall (linux-amd64-cgo), const SOCK_CLOEXEC = 524288 pkg syscall (linux-amd64-cgo), const SOCK_DCCP = 6 pkg syscall (linux-amd64-cgo), const SOCK_NONBLOCK = 2048 pkg syscall (linux-amd64-cgo), const SOCK_PACKET = 10 pkg syscall (linux-amd64-cgo), const SOCK_RDM = 4 pkg syscall (linux-amd64-cgo), const SOL_AAL = 265 pkg syscall (linux-amd64-cgo), const SOL_ATM = 264 pkg syscall (linux-amd64-cgo), const SOL_DECNET = 261 pkg syscall (linux-amd64-cgo), const SOL_ICMPV6 = 58 pkg syscall (linux-amd64-cgo), const SOL_IP = 0 pkg syscall (linux-amd64-cgo), const SOL_IPV6 = 41 pkg syscall (linux-amd64-cgo), const SOL_IRDA = 266 pkg syscall (linux-amd64-cgo), const SOL_PACKET = 263 pkg syscall (linux-amd64-cgo), const SOL_RAW = 255 pkg syscall (linux-amd64-cgo), const SOL_SOCKET = 1 pkg syscall (linux-amd64-cgo), const SOL_TCP = 6 pkg syscall (linux-amd64-cgo), const SOL_X25 = 262 pkg syscall (linux-amd64-cgo), const SOMAXCONN = 128 pkg syscall (linux-amd64-cgo), const SO_ACCEPTCONN = 30 pkg syscall (linux-amd64-cgo), const SO_ATTACH_FILTER = 26 pkg syscall (linux-amd64-cgo), const SO_BINDTODEVICE = 25 pkg syscall (linux-amd64-cgo), const SO_BROADCAST = 6 pkg syscall (linux-amd64-cgo), const SO_BSDCOMPAT = 14 pkg syscall (linux-amd64-cgo), const SO_DEBUG = 1 pkg syscall (linux-amd64-cgo), const SO_DETACH_FILTER = 27 pkg syscall (linux-amd64-cgo), const SO_DOMAIN = 39 pkg syscall (linux-amd64-cgo), const SO_DONTROUTE = 5 pkg syscall (linux-amd64-cgo), const SO_ERROR = 4 pkg syscall (linux-amd64-cgo), const SO_KEEPALIVE = 9 pkg syscall (linux-amd64-cgo), const SO_LINGER = 13 pkg syscall (linux-amd64-cgo), const SO_MARK = 36 pkg syscall (linux-amd64-cgo), const SO_NO_CHECK = 11 pkg syscall (linux-amd64-cgo), const SO_OOBINLINE = 10 pkg syscall (linux-amd64-cgo), const SO_PASSCRED = 16 pkg syscall (linux-amd64-cgo), const SO_PASSSEC = 34 pkg syscall (linux-amd64-cgo), const SO_PEERCRED = 17 pkg syscall (linux-amd64-cgo), const SO_PEERNAME = 28 pkg syscall (linux-amd64-cgo), const SO_PEERSEC = 31 pkg syscall (linux-amd64-cgo), const SO_PRIORITY = 12 pkg syscall (linux-amd64-cgo), const SO_PROTOCOL = 38 pkg syscall (linux-amd64-cgo), const SO_RCVBUF = 8 pkg syscall (linux-amd64-cgo), const SO_RCVBUFFORCE = 33 pkg syscall (linux-amd64-cgo), const SO_RCVLOWAT = 18 pkg syscall (linux-amd64-cgo), const SO_RCVTIMEO = 20 pkg syscall (linux-amd64-cgo), const SO_REUSEADDR = 2 pkg syscall (linux-amd64-cgo), const SO_RXQ_OVFL = 40 pkg syscall (linux-amd64-cgo), const SO_SECURITY_AUTHENTICATION = 22 pkg syscall (linux-amd64-cgo), const SO_SECURITY_ENCRYPTION_NETWORK = 24 pkg syscall (linux-amd64-cgo), const SO_SECURITY_ENCRYPTION_TRANSPORT = 23 pkg syscall (linux-amd64-cgo), const SO_SNDBUF = 7 pkg syscall (linux-amd64-cgo), const SO_SNDBUFFORCE = 32 pkg syscall (linux-amd64-cgo), const SO_SNDLOWAT = 19 pkg syscall (linux-amd64-cgo), const SO_SNDTIMEO = 21 pkg syscall (linux-amd64-cgo), const SO_TIMESTAMP = 29 pkg syscall (linux-amd64-cgo), const SO_TIMESTAMPING = 37 pkg syscall (linux-amd64-cgo), const SO_TIMESTAMPNS = 35 pkg syscall (linux-amd64-cgo), const SO_TYPE = 3 pkg syscall (linux-amd64-cgo), const SYS_ACCEPT = 43 pkg syscall (linux-amd64-cgo), const SYS_ACCEPT4 = 288 pkg syscall (linux-amd64-cgo), const SYS_ACCESS = 21 pkg syscall (linux-amd64-cgo), const SYS_ACCT = 163 pkg syscall (linux-amd64-cgo), const SYS_ADD_KEY = 248 pkg syscall (linux-amd64-cgo), const SYS_ADJTIMEX = 159 pkg syscall (linux-amd64-cgo), const SYS_AFS_SYSCALL = 183 pkg syscall (linux-amd64-cgo), const SYS_ALARM = 37 pkg syscall (linux-amd64-cgo), const SYS_ARCH_PRCTL = 158 pkg syscall (linux-amd64-cgo), const SYS_BIND = 49 pkg syscall (linux-amd64-cgo), const SYS_BRK = 12 pkg syscall (linux-amd64-cgo), const SYS_CAPGET = 125 pkg syscall (linux-amd64-cgo), const SYS_CAPSET = 126 pkg syscall (linux-amd64-cgo), const SYS_CHDIR = 80 pkg syscall (linux-amd64-cgo), const SYS_CHMOD = 90 pkg syscall (linux-amd64-cgo), const SYS_CHOWN = 92 pkg syscall (linux-amd64-cgo), const SYS_CHROOT = 161 pkg syscall (linux-amd64-cgo), const SYS_CLOCK_GETRES = 229 pkg syscall (linux-amd64-cgo), const SYS_CLOCK_GETTIME = 228 pkg syscall (linux-amd64-cgo), const SYS_CLOCK_NANOSLEEP = 230 pkg syscall (linux-amd64-cgo), const SYS_CLOCK_SETTIME = 227 pkg syscall (linux-amd64-cgo), const SYS_CLONE = 56 pkg syscall (linux-amd64-cgo), const SYS_CLOSE = 3 pkg syscall (linux-amd64-cgo), const SYS_CONNECT = 42 pkg syscall (linux-amd64-cgo), const SYS_CREAT = 85 pkg syscall (linux-amd64-cgo), const SYS_CREATE_MODULE = 174 pkg syscall (linux-amd64-cgo), const SYS_DELETE_MODULE = 176 pkg syscall (linux-amd64-cgo), const SYS_DUP = 32 pkg syscall (linux-amd64-cgo), const SYS_DUP2 = 33 pkg syscall (linux-amd64-cgo), const SYS_DUP3 = 292 pkg syscall (linux-amd64-cgo), const SYS_EPOLL_CREATE = 213 pkg syscall (linux-amd64-cgo), const SYS_EPOLL_CREATE1 = 291 pkg syscall (linux-amd64-cgo), const SYS_EPOLL_CTL = 233 pkg syscall (linux-amd64-cgo), const SYS_EPOLL_CTL_OLD = 214 pkg syscall (linux-amd64-cgo), const SYS_EPOLL_PWAIT = 281 pkg syscall (linux-amd64-cgo), const SYS_EPOLL_WAIT = 232 pkg syscall (linux-amd64-cgo), const SYS_EPOLL_WAIT_OLD = 215 pkg syscall (linux-amd64-cgo), const SYS_EVENTFD = 284 pkg syscall (linux-amd64-cgo), const SYS_EVENTFD2 = 290 pkg syscall (linux-amd64-cgo), const SYS_EXECVE = 59 pkg syscall (linux-amd64-cgo), const SYS_EXIT = 60 pkg syscall (linux-amd64-cgo), const SYS_EXIT_GROUP = 231 pkg syscall (linux-amd64-cgo), const SYS_FACCESSAT = 269 pkg syscall (linux-amd64-cgo), const SYS_FADVISE64 = 221 pkg syscall (linux-amd64-cgo), const SYS_FALLOCATE = 285 pkg syscall (linux-amd64-cgo), const SYS_FANOTIFY_INIT = 300 pkg syscall (linux-amd64-cgo), const SYS_FANOTIFY_MARK = 301 pkg syscall (linux-amd64-cgo), const SYS_FCHDIR = 81 pkg syscall (linux-amd64-cgo), const SYS_FCHMOD = 91 pkg syscall (linux-amd64-cgo), const SYS_FCHMODAT = 268 pkg syscall (linux-amd64-cgo), const SYS_FCHOWN = 93 pkg syscall (linux-amd64-cgo), const SYS_FCHOWNAT = 260 pkg syscall (linux-amd64-cgo), const SYS_FCNTL = 72 pkg syscall (linux-amd64-cgo), const SYS_FDATASYNC = 75 pkg syscall (linux-amd64-cgo), const SYS_FGETXATTR = 193 pkg syscall (linux-amd64-cgo), const SYS_FLISTXATTR = 196 pkg syscall (linux-amd64-cgo), const SYS_FLOCK = 73 pkg syscall (linux-amd64-cgo), const SYS_FORK = 57 pkg syscall (linux-amd64-cgo), const SYS_FREMOVEXATTR = 199 pkg syscall (linux-amd64-cgo), const SYS_FSETXATTR = 190 pkg syscall (linux-amd64-cgo), const SYS_FSTAT = 5 pkg syscall (linux-amd64-cgo), const SYS_FSTATFS = 138 pkg syscall (linux-amd64-cgo), const SYS_FSYNC = 74 pkg syscall (linux-amd64-cgo), const SYS_FTRUNCATE = 77 pkg syscall (linux-amd64-cgo), const SYS_FUTEX = 202 pkg syscall (linux-amd64-cgo), const SYS_FUTIMESAT = 261 pkg syscall (linux-amd64-cgo), const SYS_GETCWD = 79 pkg syscall (linux-amd64-cgo), const SYS_GETDENTS = 78 pkg syscall (linux-amd64-cgo), const SYS_GETDENTS64 = 217 pkg syscall (linux-amd64-cgo), const SYS_GETEGID = 108 pkg syscall (linux-amd64-cgo), const SYS_GETEUID = 107 pkg syscall (linux-amd64-cgo), const SYS_GETGID = 104 pkg syscall (linux-amd64-cgo), const SYS_GETGROUPS = 115 pkg syscall (linux-amd64-cgo), const SYS_GETITIMER = 36 pkg syscall (linux-amd64-cgo), const SYS_GETPEERNAME = 52 pkg syscall (linux-amd64-cgo), const SYS_GETPGID = 121 pkg syscall (linux-amd64-cgo), const SYS_GETPGRP = 111 pkg syscall (linux-amd64-cgo), const SYS_GETPID = 39 pkg syscall (linux-amd64-cgo), const SYS_GETPMSG = 181 pkg syscall (linux-amd64-cgo), const SYS_GETPPID = 110 pkg syscall (linux-amd64-cgo), const SYS_GETPRIORITY = 140 pkg syscall (linux-amd64-cgo), const SYS_GETRESGID = 120 pkg syscall (linux-amd64-cgo), const SYS_GETRESUID = 118 pkg syscall (linux-amd64-cgo), const SYS_GETRLIMIT = 97 pkg syscall (linux-amd64-cgo), const SYS_GETRUSAGE = 98 pkg syscall (linux-amd64-cgo), const SYS_GETSID = 124 pkg syscall (linux-amd64-cgo), const SYS_GETSOCKNAME = 51 pkg syscall (linux-amd64-cgo), const SYS_GETSOCKOPT = 55 pkg syscall (linux-amd64-cgo), const SYS_GETTID = 186 pkg syscall (linux-amd64-cgo), const SYS_GETTIMEOFDAY = 96 pkg syscall (linux-amd64-cgo), const SYS_GETUID = 102 pkg syscall (linux-amd64-cgo), const SYS_GETXATTR = 191 pkg syscall (linux-amd64-cgo), const SYS_GET_KERNEL_SYMS = 177 pkg syscall (linux-amd64-cgo), const SYS_GET_MEMPOLICY = 239 pkg syscall (linux-amd64-cgo), const SYS_GET_ROBUST_LIST = 274 pkg syscall (linux-amd64-cgo), const SYS_GET_THREAD_AREA = 211 pkg syscall (linux-amd64-cgo), const SYS_INIT_MODULE = 175 pkg syscall (linux-amd64-cgo), const SYS_INOTIFY_ADD_WATCH = 254 pkg syscall (linux-amd64-cgo), const SYS_INOTIFY_INIT = 253 pkg syscall (linux-amd64-cgo), const SYS_INOTIFY_INIT1 = 294 pkg syscall (linux-amd64-cgo), const SYS_INOTIFY_RM_WATCH = 255 pkg syscall (linux-amd64-cgo), const SYS_IOCTL = 16 pkg syscall (linux-amd64-cgo), const SYS_IOPERM = 173 pkg syscall (linux-amd64-cgo), const SYS_IOPL = 172 pkg syscall (linux-amd64-cgo), const SYS_IOPRIO_GET = 252 pkg syscall (linux-amd64-cgo), const SYS_IOPRIO_SET = 251 pkg syscall (linux-amd64-cgo), const SYS_IO_CANCEL = 210 pkg syscall (linux-amd64-cgo), const SYS_IO_DESTROY = 207 pkg syscall (linux-amd64-cgo), const SYS_IO_GETEVENTS = 208 pkg syscall (linux-amd64-cgo), const SYS_IO_SETUP = 206 pkg syscall (linux-amd64-cgo), const SYS_IO_SUBMIT = 209 pkg syscall (linux-amd64-cgo), const SYS_KEXEC_LOAD = 246 pkg syscall (linux-amd64-cgo), const SYS_KEYCTL = 250 pkg syscall (linux-amd64-cgo), const SYS_KILL = 62 pkg syscall (linux-amd64-cgo), const SYS_LCHOWN = 94 pkg syscall (linux-amd64-cgo), const SYS_LGETXATTR = 192 pkg syscall (linux-amd64-cgo), const SYS_LINK = 86 pkg syscall (linux-amd64-cgo), const SYS_LINKAT = 265 pkg syscall (linux-amd64-cgo), const SYS_LISTEN = 50 pkg syscall (linux-amd64-cgo), const SYS_LISTXATTR = 194 pkg syscall (linux-amd64-cgo), const SYS_LLISTXATTR = 195 pkg syscall (linux-amd64-cgo), const SYS_LOOKUP_DCOOKIE = 212 pkg syscall (linux-amd64-cgo), const SYS_LREMOVEXATTR = 198 pkg syscall (linux-amd64-cgo), const SYS_LSEEK = 8 pkg syscall (linux-amd64-cgo), const SYS_LSETXATTR = 189 pkg syscall (linux-amd64-cgo), const SYS_LSTAT = 6 pkg syscall (linux-amd64-cgo), const SYS_MADVISE = 28 pkg syscall (linux-amd64-cgo), const SYS_MBIND = 237 pkg syscall (linux-amd64-cgo), const SYS_MIGRATE_PAGES = 256 pkg syscall (linux-amd64-cgo), const SYS_MINCORE = 27 pkg syscall (linux-amd64-cgo), const SYS_MKDIR = 83 pkg syscall (linux-amd64-cgo), const SYS_MKDIRAT = 258 pkg syscall (linux-amd64-cgo), const SYS_MKNOD = 133 pkg syscall (linux-amd64-cgo), const SYS_MKNODAT = 259 pkg syscall (linux-amd64-cgo), const SYS_MLOCK = 149 pkg syscall (linux-amd64-cgo), const SYS_MLOCKALL = 151 pkg syscall (linux-amd64-cgo), const SYS_MMAP = 9 pkg syscall (linux-amd64-cgo), const SYS_MODIFY_LDT = 154 pkg syscall (linux-amd64-cgo), const SYS_MOUNT = 165 pkg syscall (linux-amd64-cgo), const SYS_MOVE_PAGES = 279 pkg syscall (linux-amd64-cgo), const SYS_MPROTECT = 10 pkg syscall (linux-amd64-cgo), const SYS_MQ_GETSETATTR = 245 pkg syscall (linux-amd64-cgo), const SYS_MQ_NOTIFY = 244 pkg syscall (linux-amd64-cgo), const SYS_MQ_OPEN = 240 pkg syscall (linux-amd64-cgo), const SYS_MQ_TIMEDRECEIVE = 243 pkg syscall (linux-amd64-cgo), const SYS_MQ_TIMEDSEND = 242 pkg syscall (linux-amd64-cgo), const SYS_MQ_UNLINK = 241 pkg syscall (linux-amd64-cgo), const SYS_MREMAP = 25 pkg syscall (linux-amd64-cgo), const SYS_MSGCTL = 71 pkg syscall (linux-amd64-cgo), const SYS_MSGGET = 68 pkg syscall (linux-amd64-cgo), const SYS_MSGRCV = 70 pkg syscall (linux-amd64-cgo), const SYS_MSGSND = 69 pkg syscall (linux-amd64-cgo), const SYS_MSYNC = 26 pkg syscall (linux-amd64-cgo), const SYS_MUNLOCK = 150 pkg syscall (linux-amd64-cgo), const SYS_MUNLOCKALL = 152 pkg syscall (linux-amd64-cgo), const SYS_MUNMAP = 11 pkg syscall (linux-amd64-cgo), const SYS_NANOSLEEP = 35 pkg syscall (linux-amd64-cgo), const SYS_NEWFSTATAT = 262 pkg syscall (linux-amd64-cgo), const SYS_NFSSERVCTL = 180 pkg syscall (linux-amd64-cgo), const SYS_OPEN = 2 pkg syscall (linux-amd64-cgo), const SYS_OPENAT = 257 pkg syscall (linux-amd64-cgo), const SYS_PAUSE = 34 pkg syscall (linux-amd64-cgo), const SYS_PERF_EVENT_OPEN = 298 pkg syscall (linux-amd64-cgo), const SYS_PERSONALITY = 135 pkg syscall (linux-amd64-cgo), const SYS_PIPE = 22 pkg syscall (linux-amd64-cgo), const SYS_PIPE2 = 293 pkg syscall (linux-amd64-cgo), const SYS_PIVOT_ROOT = 155 pkg syscall (linux-amd64-cgo), const SYS_POLL = 7 pkg syscall (linux-amd64-cgo), const SYS_PPOLL = 271 pkg syscall (linux-amd64-cgo), const SYS_PRCTL = 157 pkg syscall (linux-amd64-cgo), const SYS_PREAD64 = 17 pkg syscall (linux-amd64-cgo), const SYS_PREADV = 295 pkg syscall (linux-amd64-cgo), const SYS_PRLIMIT64 = 302 pkg syscall (linux-amd64-cgo), const SYS_PSELECT6 = 270 pkg syscall (linux-amd64-cgo), const SYS_PTRACE = 101 pkg syscall (linux-amd64-cgo), const SYS_PUTPMSG = 182 pkg syscall (linux-amd64-cgo), const SYS_PWRITE64 = 18 pkg syscall (linux-amd64-cgo), const SYS_PWRITEV = 296 pkg syscall (linux-amd64-cgo), const SYS_QUERY_MODULE = 178 pkg syscall (linux-amd64-cgo), const SYS_QUOTACTL = 179 pkg syscall (linux-amd64-cgo), const SYS_READ = 0 pkg syscall (linux-amd64-cgo), const SYS_READAHEAD = 187 pkg syscall (linux-amd64-cgo), const SYS_READLINK = 89 pkg syscall (linux-amd64-cgo), const SYS_READLINKAT = 267 pkg syscall (linux-amd64-cgo), const SYS_READV = 19 pkg syscall (linux-amd64-cgo), const SYS_REBOOT = 169 pkg syscall (linux-amd64-cgo), const SYS_RECVFROM = 45 pkg syscall (linux-amd64-cgo), const SYS_RECVMMSG = 299 pkg syscall (linux-amd64-cgo), const SYS_RECVMSG = 47 pkg syscall (linux-amd64-cgo), const SYS_REMAP_FILE_PAGES = 216 pkg syscall (linux-amd64-cgo), const SYS_REMOVEXATTR = 197 pkg syscall (linux-amd64-cgo), const SYS_RENAME = 82 pkg syscall (linux-amd64-cgo), const SYS_RENAMEAT = 264 pkg syscall (linux-amd64-cgo), const SYS_REQUEST_KEY = 249 pkg syscall (linux-amd64-cgo), const SYS_RESTART_SYSCALL = 219 pkg syscall (linux-amd64-cgo), const SYS_RMDIR = 84 pkg syscall (linux-amd64-cgo), const SYS_RT_SIGACTION = 13 pkg syscall (linux-amd64-cgo), const SYS_RT_SIGPENDING = 127 pkg syscall (linux-amd64-cgo), const SYS_RT_SIGPROCMASK = 14 pkg syscall (linux-amd64-cgo), const SYS_RT_SIGQUEUEINFO = 129 pkg syscall (linux-amd64-cgo), const SYS_RT_SIGRETURN = 15 pkg syscall (linux-amd64-cgo), const SYS_RT_SIGSUSPEND = 130 pkg syscall (linux-amd64-cgo), const SYS_RT_SIGTIMEDWAIT = 128 pkg syscall (linux-amd64-cgo), const SYS_RT_TGSIGQUEUEINFO = 297 pkg syscall (linux-amd64-cgo), const SYS_SCHED_GETAFFINITY = 204 pkg syscall (linux-amd64-cgo), const SYS_SCHED_GETPARAM = 143 pkg syscall (linux-amd64-cgo), const SYS_SCHED_GETSCHEDULER = 145 pkg syscall (linux-amd64-cgo), const SYS_SCHED_GET_PRIORITY_MAX = 146 pkg syscall (linux-amd64-cgo), const SYS_SCHED_GET_PRIORITY_MIN = 147 pkg syscall (linux-amd64-cgo), const SYS_SCHED_RR_GET_INTERVAL = 148 pkg syscall (linux-amd64-cgo), const SYS_SCHED_SETAFFINITY = 203 pkg syscall (linux-amd64-cgo), const SYS_SCHED_SETPARAM = 142 pkg syscall (linux-amd64-cgo), const SYS_SCHED_SETSCHEDULER = 144 pkg syscall (linux-amd64-cgo), const SYS_SCHED_YIELD = 24 pkg syscall (linux-amd64-cgo), const SYS_SECURITY = 185 pkg syscall (linux-amd64-cgo), const SYS_SELECT = 23 pkg syscall (linux-amd64-cgo), const SYS_SEMCTL = 66 pkg syscall (linux-amd64-cgo), const SYS_SEMGET = 64 pkg syscall (linux-amd64-cgo), const SYS_SEMOP = 65 pkg syscall (linux-amd64-cgo), const SYS_SEMTIMEDOP = 220 pkg syscall (linux-amd64-cgo), const SYS_SENDFILE = 40 pkg syscall (linux-amd64-cgo), const SYS_SENDMSG = 46 pkg syscall (linux-amd64-cgo), const SYS_SENDTO = 44 pkg syscall (linux-amd64-cgo), const SYS_SETDOMAINNAME = 171 pkg syscall (linux-amd64-cgo), const SYS_SETFSGID = 123 pkg syscall (linux-amd64-cgo), const SYS_SETFSUID = 122 pkg syscall (linux-amd64-cgo), const SYS_SETGID = 106 pkg syscall (linux-amd64-cgo), const SYS_SETGROUPS = 116 pkg syscall (linux-amd64-cgo), const SYS_SETHOSTNAME = 170 pkg syscall (linux-amd64-cgo), const SYS_SETITIMER = 38 pkg syscall (linux-amd64-cgo), const SYS_SETPGID = 109 pkg syscall (linux-amd64-cgo), const SYS_SETPRIORITY = 141 pkg syscall (linux-amd64-cgo), const SYS_SETREGID = 114 pkg syscall (linux-amd64-cgo), const SYS_SETRESGID = 119 pkg syscall (linux-amd64-cgo), const SYS_SETRESUID = 117 pkg syscall (linux-amd64-cgo), const SYS_SETREUID = 113 pkg syscall (linux-amd64-cgo), const SYS_SETRLIMIT = 160 pkg syscall (linux-amd64-cgo), const SYS_SETSID = 112 pkg syscall (linux-amd64-cgo), const SYS_SETSOCKOPT = 54 pkg syscall (linux-amd64-cgo), const SYS_SETTIMEOFDAY = 164 pkg syscall (linux-amd64-cgo), const SYS_SETUID = 105 pkg syscall (linux-amd64-cgo), const SYS_SETXATTR = 188 pkg syscall (linux-amd64-cgo), const SYS_SET_MEMPOLICY = 238 pkg syscall (linux-amd64-cgo), const SYS_SET_ROBUST_LIST = 273 pkg syscall (linux-amd64-cgo), const SYS_SET_THREAD_AREA = 205 pkg syscall (linux-amd64-cgo), const SYS_SET_TID_ADDRESS = 218 pkg syscall (linux-amd64-cgo), const SYS_SHMAT = 30 pkg syscall (linux-amd64-cgo), const SYS_SHMCTL = 31 pkg syscall (linux-amd64-cgo), const SYS_SHMDT = 67 pkg syscall (linux-amd64-cgo), const SYS_SHMGET = 29 pkg syscall (linux-amd64-cgo), const SYS_SHUTDOWN = 48 pkg syscall (linux-amd64-cgo), const SYS_SIGALTSTACK = 131 pkg syscall (linux-amd64-cgo), const SYS_SIGNALFD = 282 pkg syscall (linux-amd64-cgo), const SYS_SIGNALFD4 = 289 pkg syscall (linux-amd64-cgo), const SYS_SOCKET = 41 pkg syscall (linux-amd64-cgo), const SYS_SOCKETPAIR = 53 pkg syscall (linux-amd64-cgo), const SYS_SPLICE = 275 pkg syscall (linux-amd64-cgo), const SYS_STAT = 4 pkg syscall (linux-amd64-cgo), const SYS_STATFS = 137 pkg syscall (linux-amd64-cgo), const SYS_SWAPOFF = 168 pkg syscall (linux-amd64-cgo), const SYS_SWAPON = 167 pkg syscall (linux-amd64-cgo), const SYS_SYMLINK = 88 pkg syscall (linux-amd64-cgo), const SYS_SYMLINKAT = 266 pkg syscall (linux-amd64-cgo), const SYS_SYNC = 162 pkg syscall (linux-amd64-cgo), const SYS_SYNC_FILE_RANGE = 277 pkg syscall (linux-amd64-cgo), const SYS_SYSFS = 139 pkg syscall (linux-amd64-cgo), const SYS_SYSINFO = 99 pkg syscall (linux-amd64-cgo), const SYS_SYSLOG = 103 pkg syscall (linux-amd64-cgo), const SYS_TEE = 276 pkg syscall (linux-amd64-cgo), const SYS_TGKILL = 234 pkg syscall (linux-amd64-cgo), const SYS_TIME = 201 pkg syscall (linux-amd64-cgo), const SYS_TIMERFD_CREATE = 283 pkg syscall (linux-amd64-cgo), const SYS_TIMERFD_GETTIME = 287 pkg syscall (linux-amd64-cgo), const SYS_TIMERFD_SETTIME = 286 pkg syscall (linux-amd64-cgo), const SYS_TIMER_CREATE = 222 pkg syscall (linux-amd64-cgo), const SYS_TIMER_DELETE = 226 pkg syscall (linux-amd64-cgo), const SYS_TIMER_GETOVERRUN = 225 pkg syscall (linux-amd64-cgo), const SYS_TIMER_GETTIME = 224 pkg syscall (linux-amd64-cgo), const SYS_TIMER_SETTIME = 223 pkg syscall (linux-amd64-cgo), const SYS_TIMES = 100 pkg syscall (linux-amd64-cgo), const SYS_TKILL = 200 pkg syscall (linux-amd64-cgo), const SYS_TRUNCATE = 76 pkg syscall (linux-amd64-cgo), const SYS_TUXCALL = 184 pkg syscall (linux-amd64-cgo), const SYS_UMASK = 95 pkg syscall (linux-amd64-cgo), const SYS_UMOUNT2 = 166 pkg syscall (linux-amd64-cgo), const SYS_UNAME = 63 pkg syscall (linux-amd64-cgo), const SYS_UNLINK = 87 pkg syscall (linux-amd64-cgo), const SYS_UNLINKAT = 263 pkg syscall (linux-amd64-cgo), const SYS_UNSHARE = 272 pkg syscall (linux-amd64-cgo), const SYS_USELIB = 134 pkg syscall (linux-amd64-cgo), const SYS_USTAT = 136 pkg syscall (linux-amd64-cgo), const SYS_UTIME = 132 pkg syscall (linux-amd64-cgo), const SYS_UTIMENSAT = 280 pkg syscall (linux-amd64-cgo), const SYS_UTIMES = 235 pkg syscall (linux-amd64-cgo), const SYS_VFORK = 58 pkg syscall (linux-amd64-cgo), const SYS_VHANGUP = 153 pkg syscall (linux-amd64-cgo), const SYS_VMSPLICE = 278 pkg syscall (linux-amd64-cgo), const SYS_VSERVER = 236 pkg syscall (linux-amd64-cgo), const SYS_WAIT4 = 61 pkg syscall (linux-amd64-cgo), const SYS_WAITID = 247 pkg syscall (linux-amd64-cgo), const SYS_WRITE = 1 pkg syscall (linux-amd64-cgo), const SYS_WRITEV = 20 pkg syscall (linux-amd64-cgo), const SYS__SYSCTL = 156 pkg syscall (linux-amd64-cgo), const S_BLKSIZE = 512 pkg syscall (linux-amd64-cgo), const S_IEXEC = 64 pkg syscall (linux-amd64-cgo), const S_IFMT = 61440 pkg syscall (linux-amd64-cgo), const S_IREAD = 256 pkg syscall (linux-amd64-cgo), const S_IRGRP = 32 pkg syscall (linux-amd64-cgo), const S_IROTH = 4 pkg syscall (linux-amd64-cgo), const S_IRWXG = 56 pkg syscall (linux-amd64-cgo), const S_IRWXO = 7 pkg syscall (linux-amd64-cgo), const S_IRWXU = 448 pkg syscall (linux-amd64-cgo), const S_IWGRP = 16 pkg syscall (linux-amd64-cgo), const S_IWOTH = 2 pkg syscall (linux-amd64-cgo), const S_IWRITE = 128 pkg syscall (linux-amd64-cgo), const S_IXGRP = 8 pkg syscall (linux-amd64-cgo), const S_IXOTH = 1 pkg syscall (linux-amd64-cgo), const SizeofCmsghdr = 16 pkg syscall (linux-amd64-cgo), const SizeofIPMreq = 8 pkg syscall (linux-amd64-cgo), const SizeofIPMreqn = 12 pkg syscall (linux-amd64-cgo), const SizeofIPv6Mreq = 20 pkg syscall (linux-amd64-cgo), const SizeofIfAddrmsg = 8 pkg syscall (linux-amd64-cgo), const SizeofIfInfomsg = 16 pkg syscall (linux-amd64-cgo), const SizeofInet4Pktinfo = 12 pkg syscall (linux-amd64-cgo), const SizeofInet6Pktinfo = 20 pkg syscall (linux-amd64-cgo), const SizeofInotifyEvent = 16 pkg syscall (linux-amd64-cgo), const SizeofLinger = 8 pkg syscall (linux-amd64-cgo), const SizeofMsghdr = 56 pkg syscall (linux-amd64-cgo), const SizeofNlAttr = 4 pkg syscall (linux-amd64-cgo), const SizeofNlMsgerr = 20 pkg syscall (linux-amd64-cgo), const SizeofNlMsghdr = 16 pkg syscall (linux-amd64-cgo), const SizeofRtAttr = 4 pkg syscall (linux-amd64-cgo), const SizeofRtGenmsg = 1 pkg syscall (linux-amd64-cgo), const SizeofRtMsg = 12 pkg syscall (linux-amd64-cgo), const SizeofRtNexthop = 8 pkg syscall (linux-amd64-cgo), const SizeofSockFilter = 8 pkg syscall (linux-amd64-cgo), const SizeofSockFprog = 16 pkg syscall (linux-amd64-cgo), const SizeofSockaddrAny = 112 pkg syscall (linux-amd64-cgo), const SizeofSockaddrInet4 = 16 pkg syscall (linux-amd64-cgo), const SizeofSockaddrInet6 = 28 pkg syscall (linux-amd64-cgo), const SizeofSockaddrLinklayer = 20 pkg syscall (linux-amd64-cgo), const SizeofSockaddrNetlink = 12 pkg syscall (linux-amd64-cgo), const SizeofSockaddrUnix = 110 pkg syscall (linux-amd64-cgo), const SizeofTCPInfo = 104 pkg syscall (linux-amd64-cgo), const SizeofTCPInfo ideal-int pkg syscall (linux-amd64-cgo), const SizeofUcred = 12 pkg syscall (linux-amd64-cgo), const TCGETS = 21505 pkg syscall (linux-amd64-cgo), const TCP_CONGESTION = 13 pkg syscall (linux-amd64-cgo), const TCP_CORK = 3 pkg syscall (linux-amd64-cgo), const TCP_DEFER_ACCEPT = 9 pkg syscall (linux-amd64-cgo), const TCP_INFO = 11 pkg syscall (linux-amd64-cgo), const TCP_KEEPCNT = 6 pkg syscall (linux-amd64-cgo), const TCP_KEEPIDLE = 4 pkg syscall (linux-amd64-cgo), const TCP_KEEPINTVL = 5 pkg syscall (linux-amd64-cgo), const TCP_LINGER2 = 8 pkg syscall (linux-amd64-cgo), const TCP_MAXSEG = 2 pkg syscall (linux-amd64-cgo), const TCP_MAXWIN = 65535 pkg syscall (linux-amd64-cgo), const TCP_MAX_WINSHIFT = 14 pkg syscall (linux-amd64-cgo), const TCP_MD5SIG = 14 pkg syscall (linux-amd64-cgo), const TCP_MD5SIG_MAXKEYLEN = 80 pkg syscall (linux-amd64-cgo), const TCP_MSS = 512 pkg syscall (linux-amd64-cgo), const TCP_QUICKACK = 12 pkg syscall (linux-amd64-cgo), const TCP_SYNCNT = 7 pkg syscall (linux-amd64-cgo), const TCP_WINDOW_CLAMP = 10 pkg syscall (linux-amd64-cgo), const TCSETS = 21506 pkg syscall (linux-amd64-cgo), const TIOCCBRK = 21544 pkg syscall (linux-amd64-cgo), const TIOCCONS = 21533 pkg syscall (linux-amd64-cgo), const TIOCEXCL = 21516 pkg syscall (linux-amd64-cgo), const TIOCGDEV = 2147767346 pkg syscall (linux-amd64-cgo), const TIOCGETD = 21540 pkg syscall (linux-amd64-cgo), const TIOCGICOUNT = 21597 pkg syscall (linux-amd64-cgo), const TIOCGLCKTRMIOS = 21590 pkg syscall (linux-amd64-cgo), const TIOCGPGRP = 21519 pkg syscall (linux-amd64-cgo), const TIOCGPTN = 2147767344 pkg syscall (linux-amd64-cgo), const TIOCGRS485 = 21550 pkg syscall (linux-amd64-cgo), const TIOCGSERIAL = 21534 pkg syscall (linux-amd64-cgo), const TIOCGSID = 21545 pkg syscall (linux-amd64-cgo), const TIOCGSOFTCAR = 21529 pkg syscall (linux-amd64-cgo), const TIOCGWINSZ = 21523 pkg syscall (linux-amd64-cgo), const TIOCINQ = 21531 pkg syscall (linux-amd64-cgo), const TIOCLINUX = 21532 pkg syscall (linux-amd64-cgo), const TIOCMBIC = 21527 pkg syscall (linux-amd64-cgo), const TIOCMBIS = 21526 pkg syscall (linux-amd64-cgo), const TIOCMGET = 21525 pkg syscall (linux-amd64-cgo), const TIOCMIWAIT = 21596 pkg syscall (linux-amd64-cgo), const TIOCMSET = 21528 pkg syscall (linux-amd64-cgo), const TIOCM_CAR = 64 pkg syscall (linux-amd64-cgo), const TIOCM_CD = 64 pkg syscall (linux-amd64-cgo), const TIOCM_CTS = 32 pkg syscall (linux-amd64-cgo), const TIOCM_DSR = 256 pkg syscall (linux-amd64-cgo), const TIOCM_DTR = 2 pkg syscall (linux-amd64-cgo), const TIOCM_LE = 1 pkg syscall (linux-amd64-cgo), const TIOCM_RI = 128 pkg syscall (linux-amd64-cgo), const TIOCM_RNG = 128 pkg syscall (linux-amd64-cgo), const TIOCM_RTS = 4 pkg syscall (linux-amd64-cgo), const TIOCM_SR = 16 pkg syscall (linux-amd64-cgo), const TIOCM_ST = 8 pkg syscall (linux-amd64-cgo), const TIOCNOTTY = 21538 pkg syscall (linux-amd64-cgo), const TIOCNXCL = 21517 pkg syscall (linux-amd64-cgo), const TIOCOUTQ = 21521 pkg syscall (linux-amd64-cgo), const TIOCPKT = 21536 pkg syscall (linux-amd64-cgo), const TIOCPKT_DATA = 0 pkg syscall (linux-amd64-cgo), const TIOCPKT_DOSTOP = 32 pkg syscall (linux-amd64-cgo), const TIOCPKT_FLUSHREAD = 1 pkg syscall (linux-amd64-cgo), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (linux-amd64-cgo), const TIOCPKT_IOCTL = 64 pkg syscall (linux-amd64-cgo), const TIOCPKT_NOSTOP = 16 pkg syscall (linux-amd64-cgo), const TIOCPKT_START = 8 pkg syscall (linux-amd64-cgo), const TIOCPKT_STOP = 4 pkg syscall (linux-amd64-cgo), const TIOCSBRK = 21543 pkg syscall (linux-amd64-cgo), const TIOCSCTTY = 21518 pkg syscall (linux-amd64-cgo), const TIOCSERCONFIG = 21587 pkg syscall (linux-amd64-cgo), const TIOCSERGETLSR = 21593 pkg syscall (linux-amd64-cgo), const TIOCSERGETMULTI = 21594 pkg syscall (linux-amd64-cgo), const TIOCSERGSTRUCT = 21592 pkg syscall (linux-amd64-cgo), const TIOCSERGWILD = 21588 pkg syscall (linux-amd64-cgo), const TIOCSERSETMULTI = 21595 pkg syscall (linux-amd64-cgo), const TIOCSERSWILD = 21589 pkg syscall (linux-amd64-cgo), const TIOCSER_TEMT = 1 pkg syscall (linux-amd64-cgo), const TIOCSETD = 21539 pkg syscall (linux-amd64-cgo), const TIOCSIG = 1074025526 pkg syscall (linux-amd64-cgo), const TIOCSLCKTRMIOS = 21591 pkg syscall (linux-amd64-cgo), const TIOCSPGRP = 21520 pkg syscall (linux-amd64-cgo), const TIOCSPTLCK = 1074025521 pkg syscall (linux-amd64-cgo), const TIOCSRS485 = 21551 pkg syscall (linux-amd64-cgo), const TIOCSSERIAL = 21535 pkg syscall (linux-amd64-cgo), const TIOCSSOFTCAR = 21530 pkg syscall (linux-amd64-cgo), const TIOCSTI = 21522 pkg syscall (linux-amd64-cgo), const TIOCSWINSZ = 21524 pkg syscall (linux-amd64-cgo), const TOSTOP = 256 pkg syscall (linux-amd64-cgo), const TUNATTACHFILTER = 1074812117 pkg syscall (linux-amd64-cgo), const TUNDETACHFILTER = 1074812118 pkg syscall (linux-amd64-cgo), const TUNGETFEATURES = 2147767503 pkg syscall (linux-amd64-cgo), const TUNGETIFF = 2147767506 pkg syscall (linux-amd64-cgo), const TUNGETSNDBUF = 2147767507 pkg syscall (linux-amd64-cgo), const TUNGETVNETHDRSZ = 2147767511 pkg syscall (linux-amd64-cgo), const TUNSETDEBUG = 1074025673 pkg syscall (linux-amd64-cgo), const TUNSETGROUP = 1074025678 pkg syscall (linux-amd64-cgo), const TUNSETIFF = 1074025674 pkg syscall (linux-amd64-cgo), const TUNSETLINK = 1074025677 pkg syscall (linux-amd64-cgo), const TUNSETNOCSUM = 1074025672 pkg syscall (linux-amd64-cgo), const TUNSETOFFLOAD = 1074025680 pkg syscall (linux-amd64-cgo), const TUNSETOWNER = 1074025676 pkg syscall (linux-amd64-cgo), const TUNSETPERSIST = 1074025675 pkg syscall (linux-amd64-cgo), const TUNSETSNDBUF = 1074025684 pkg syscall (linux-amd64-cgo), const TUNSETTXFILTER = 1074025681 pkg syscall (linux-amd64-cgo), const TUNSETVNETHDRSZ = 1074025688 pkg syscall (linux-amd64-cgo), const VDISCARD = 13 pkg syscall (linux-amd64-cgo), const VEOF = 4 pkg syscall (linux-amd64-cgo), const VEOL = 11 pkg syscall (linux-amd64-cgo), const VEOL2 = 16 pkg syscall (linux-amd64-cgo), const VERASE = 2 pkg syscall (linux-amd64-cgo), const VINTR = 0 pkg syscall (linux-amd64-cgo), const VKILL = 3 pkg syscall (linux-amd64-cgo), const VLNEXT = 15 pkg syscall (linux-amd64-cgo), const VMIN = 6 pkg syscall (linux-amd64-cgo), const VQUIT = 1 pkg syscall (linux-amd64-cgo), const VREPRINT = 12 pkg syscall (linux-amd64-cgo), const VSTART = 8 pkg syscall (linux-amd64-cgo), const VSTOP = 9 pkg syscall (linux-amd64-cgo), const VSUSP = 10 pkg syscall (linux-amd64-cgo), const VSWTC = 7 pkg syscall (linux-amd64-cgo), const VTIME = 5 pkg syscall (linux-amd64-cgo), const VWERASE = 14 pkg syscall (linux-amd64-cgo), const WALL = 1073741824 pkg syscall (linux-amd64-cgo), const WCLONE = 2147483648 pkg syscall (linux-amd64-cgo), const WCONTINUED = 8 pkg syscall (linux-amd64-cgo), const WEXITED = 4 pkg syscall (linux-amd64-cgo), const WNOHANG = 1 pkg syscall (linux-amd64-cgo), const WNOTHREAD = 536870912 pkg syscall (linux-amd64-cgo), const WNOWAIT = 16777216 pkg syscall (linux-amd64-cgo), const WORDSIZE = 64 pkg syscall (linux-amd64-cgo), const WSTOPPED = 2 pkg syscall (linux-amd64-cgo), const WUNTRACED = 2 pkg syscall (linux-amd64-cgo), const XCASE = 4 pkg syscall (linux-amd64-cgo), func Accept4(int, int) (int, Sockaddr, error) pkg syscall (linux-amd64-cgo), func GetsockoptUcred(int, int, int) (*Ucred, error) pkg syscall (linux-amd64-cgo), func Getxattr(string, string, []uint8) (int, error) pkg syscall (linux-amd64-cgo), func Listxattr(string, []uint8) (int, error) pkg syscall (linux-amd64-cgo), func Pipe2([]int, int) error pkg syscall (linux-amd64-cgo), func PtraceSyscall(int, int) error pkg syscall (linux-amd64-cgo), func Removexattr(string, string) error pkg syscall (linux-amd64-cgo), func Setxattr(string, string, []uint8, int) error pkg syscall (linux-amd64-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Ctty int pkg syscall (linux-amd64-cgo), type TCPInfo struct pkg syscall (linux-amd64-cgo), type TCPInfo struct, Advmss uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Ato uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Backoff uint8 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Ca_state uint8 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Fackets uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Last_ack_recv uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Last_ack_sent uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Last_data_recv uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Last_data_sent uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Lost uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Options uint8 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Pad_cgo_0 [2]uint8 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Pmtu uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Probes uint8 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Rcv_mss uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Rcv_rtt uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Rcv_space uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Rcv_ssthresh uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Reordering uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Retrans uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Retransmits uint8 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Rto uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Rtt uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Rttvar uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Sacked uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Snd_cwnd uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Snd_mss uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Snd_ssthresh uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, State uint8 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Total_retrans uint32 pkg syscall (linux-amd64-cgo), type TCPInfo struct, Unacked uint32 pkg syscall (linux-arm), const AF_ALG = 38 pkg syscall (linux-arm), const AF_APPLETALK = 5 pkg syscall (linux-arm), const AF_ASH = 18 pkg syscall (linux-arm), const AF_ATMPVC = 8 pkg syscall (linux-arm), const AF_ATMSVC = 20 pkg syscall (linux-arm), const AF_AX25 = 3 pkg syscall (linux-arm), const AF_BLUETOOTH = 31 pkg syscall (linux-arm), const AF_BRIDGE = 7 pkg syscall (linux-arm), const AF_CAIF = 37 pkg syscall (linux-arm), const AF_CAN = 29 pkg syscall (linux-arm), const AF_DECnet = 12 pkg syscall (linux-arm), const AF_ECONET = 19 pkg syscall (linux-arm), const AF_FILE = 1 pkg syscall (linux-arm), const AF_IEEE802154 = 36 pkg syscall (linux-arm), const AF_INET6 = 10 pkg syscall (linux-arm), const AF_IPX = 4 pkg syscall (linux-arm), const AF_IRDA = 23 pkg syscall (linux-arm), const AF_ISDN = 34 pkg syscall (linux-arm), const AF_IUCV = 32 pkg syscall (linux-arm), const AF_KEY = 15 pkg syscall (linux-arm), const AF_LLC = 26 pkg syscall (linux-arm), const AF_LOCAL = 1 pkg syscall (linux-arm), const AF_MAX = 39 pkg syscall (linux-arm), const AF_NETBEUI = 13 pkg syscall (linux-arm), const AF_NETLINK = 16 pkg syscall (linux-arm), const AF_NETROM = 6 pkg syscall (linux-arm), const AF_PACKET = 17 pkg syscall (linux-arm), const AF_PHONET = 35 pkg syscall (linux-arm), const AF_PPPOX = 24 pkg syscall (linux-arm), const AF_RDS = 21 pkg syscall (linux-arm), const AF_ROSE = 11 pkg syscall (linux-arm), const AF_ROUTE = 16 pkg syscall (linux-arm), const AF_RXRPC = 33 pkg syscall (linux-arm), const AF_SECURITY = 14 pkg syscall (linux-arm), const AF_SNA = 22 pkg syscall (linux-arm), const AF_TIPC = 30 pkg syscall (linux-arm), const AF_WANPIPE = 25 pkg syscall (linux-arm), const AF_X25 = 9 pkg syscall (linux-arm), const ARPHRD_ADAPT = 264 pkg syscall (linux-arm), const ARPHRD_APPLETLK = 8 pkg syscall (linux-arm), const ARPHRD_ARCNET = 7 pkg syscall (linux-arm), const ARPHRD_ASH = 781 pkg syscall (linux-arm), const ARPHRD_ATM = 19 pkg syscall (linux-arm), const ARPHRD_AX25 = 3 pkg syscall (linux-arm), const ARPHRD_BIF = 775 pkg syscall (linux-arm), const ARPHRD_CHAOS = 5 pkg syscall (linux-arm), const ARPHRD_CISCO = 513 pkg syscall (linux-arm), const ARPHRD_CSLIP = 257 pkg syscall (linux-arm), const ARPHRD_CSLIP6 = 259 pkg syscall (linux-arm), const ARPHRD_DDCMP = 517 pkg syscall (linux-arm), const ARPHRD_DLCI = 15 pkg syscall (linux-arm), const ARPHRD_ECONET = 782 pkg syscall (linux-arm), const ARPHRD_EETHER = 2 pkg syscall (linux-arm), const ARPHRD_ETHER = 1 pkg syscall (linux-arm), const ARPHRD_EUI64 = 27 pkg syscall (linux-arm), const ARPHRD_FCAL = 785 pkg syscall (linux-arm), const ARPHRD_FCFABRIC = 787 pkg syscall (linux-arm), const ARPHRD_FCPL = 786 pkg syscall (linux-arm), const ARPHRD_FCPP = 784 pkg syscall (linux-arm), const ARPHRD_FDDI = 774 pkg syscall (linux-arm), const ARPHRD_FRAD = 770 pkg syscall (linux-arm), const ARPHRD_HDLC = 513 pkg syscall (linux-arm), const ARPHRD_HIPPI = 780 pkg syscall (linux-arm), const ARPHRD_HWX25 = 272 pkg syscall (linux-arm), const ARPHRD_IEEE1394 = 24 pkg syscall (linux-arm), const ARPHRD_IEEE802 = 6 pkg syscall (linux-arm), const ARPHRD_IEEE80211 = 801 pkg syscall (linux-arm), const ARPHRD_IEEE80211_PRISM = 802 pkg syscall (linux-arm), const ARPHRD_IEEE80211_RADIOTAP = 803 pkg syscall (linux-arm), const ARPHRD_IEEE802154 = 804 pkg syscall (linux-arm), const ARPHRD_IEEE802154_PHY = 805 pkg syscall (linux-arm), const ARPHRD_IEEE802_TR = 800 pkg syscall (linux-arm), const ARPHRD_INFINIBAND = 32 pkg syscall (linux-arm), const ARPHRD_IPDDP = 777 pkg syscall (linux-arm), const ARPHRD_IPGRE = 778 pkg syscall (linux-arm), const ARPHRD_IRDA = 783 pkg syscall (linux-arm), const ARPHRD_LAPB = 516 pkg syscall (linux-arm), const ARPHRD_LOCALTLK = 773 pkg syscall (linux-arm), const ARPHRD_LOOPBACK = 772 pkg syscall (linux-arm), const ARPHRD_METRICOM = 23 pkg syscall (linux-arm), const ARPHRD_NETROM = 0 pkg syscall (linux-arm), const ARPHRD_NONE = 65534 pkg syscall (linux-arm), const ARPHRD_PIMREG = 779 pkg syscall (linux-arm), const ARPHRD_PPP = 512 pkg syscall (linux-arm), const ARPHRD_PRONET = 4 pkg syscall (linux-arm), const ARPHRD_RAWHDLC = 518 pkg syscall (linux-arm), const ARPHRD_ROSE = 270 pkg syscall (linux-arm), const ARPHRD_RSRVD = 260 pkg syscall (linux-arm), const ARPHRD_SIT = 776 pkg syscall (linux-arm), const ARPHRD_SKIP = 771 pkg syscall (linux-arm), const ARPHRD_SLIP = 256 pkg syscall (linux-arm), const ARPHRD_SLIP6 = 258 pkg syscall (linux-arm), const ARPHRD_TUNNEL = 768 pkg syscall (linux-arm), const ARPHRD_TUNNEL6 = 769 pkg syscall (linux-arm), const ARPHRD_VOID = 65535 pkg syscall (linux-arm), const ARPHRD_X25 = 271 pkg syscall (linux-arm), const B0 = 0 pkg syscall (linux-arm), const B1000000 = 4104 pkg syscall (linux-arm), const B110 = 3 pkg syscall (linux-arm), const B115200 = 4098 pkg syscall (linux-arm), const B1152000 = 4105 pkg syscall (linux-arm), const B1200 = 9 pkg syscall (linux-arm), const B134 = 4 pkg syscall (linux-arm), const B150 = 5 pkg syscall (linux-arm), const B1500000 = 4106 pkg syscall (linux-arm), const B1800 = 10 pkg syscall (linux-arm), const B19200 = 14 pkg syscall (linux-arm), const B200 = 6 pkg syscall (linux-arm), const B2000000 = 4107 pkg syscall (linux-arm), const B230400 = 4099 pkg syscall (linux-arm), const B2400 = 11 pkg syscall (linux-arm), const B2500000 = 4108 pkg syscall (linux-arm), const B300 = 7 pkg syscall (linux-arm), const B3000000 = 4109 pkg syscall (linux-arm), const B3500000 = 4110 pkg syscall (linux-arm), const B38400 = 15 pkg syscall (linux-arm), const B4000000 = 4111 pkg syscall (linux-arm), const B460800 = 4100 pkg syscall (linux-arm), const B4800 = 12 pkg syscall (linux-arm), const B50 = 1 pkg syscall (linux-arm), const B500000 = 4101 pkg syscall (linux-arm), const B57600 = 4097 pkg syscall (linux-arm), const B576000 = 4102 pkg syscall (linux-arm), const B600 = 8 pkg syscall (linux-arm), const B75 = 2 pkg syscall (linux-arm), const B921600 = 4103 pkg syscall (linux-arm), const B9600 = 13 pkg syscall (linux-arm), const BPF_A = 16 pkg syscall (linux-arm), const BPF_ABS = 32 pkg syscall (linux-arm), const BPF_ADD = 0 pkg syscall (linux-arm), const BPF_ALU = 4 pkg syscall (linux-arm), const BPF_AND = 80 pkg syscall (linux-arm), const BPF_B = 16 pkg syscall (linux-arm), const BPF_DIV = 48 pkg syscall (linux-arm), const BPF_H = 8 pkg syscall (linux-arm), const BPF_IMM = 0 pkg syscall (linux-arm), const BPF_IND = 64 pkg syscall (linux-arm), const BPF_JA = 0 pkg syscall (linux-arm), const BPF_JEQ = 16 pkg syscall (linux-arm), const BPF_JGE = 48 pkg syscall (linux-arm), const BPF_JGT = 32 pkg syscall (linux-arm), const BPF_JMP = 5 pkg syscall (linux-arm), const BPF_JSET = 64 pkg syscall (linux-arm), const BPF_K = 0 pkg syscall (linux-arm), const BPF_LD = 0 pkg syscall (linux-arm), const BPF_LDX = 1 pkg syscall (linux-arm), const BPF_LEN = 128 pkg syscall (linux-arm), const BPF_LSH = 96 pkg syscall (linux-arm), const BPF_MAJOR_VERSION = 1 pkg syscall (linux-arm), const BPF_MAXINSNS = 4096 pkg syscall (linux-arm), const BPF_MEM = 96 pkg syscall (linux-arm), const BPF_MEMWORDS = 16 pkg syscall (linux-arm), const BPF_MINOR_VERSION = 1 pkg syscall (linux-arm), const BPF_MISC = 7 pkg syscall (linux-arm), const BPF_MSH = 160 pkg syscall (linux-arm), const BPF_MUL = 32 pkg syscall (linux-arm), const BPF_NEG = 128 pkg syscall (linux-arm), const BPF_OR = 64 pkg syscall (linux-arm), const BPF_RET = 6 pkg syscall (linux-arm), const BPF_RSH = 112 pkg syscall (linux-arm), const BPF_ST = 2 pkg syscall (linux-arm), const BPF_STX = 3 pkg syscall (linux-arm), const BPF_SUB = 16 pkg syscall (linux-arm), const BPF_TAX = 0 pkg syscall (linux-arm), const BPF_TXA = 128 pkg syscall (linux-arm), const BPF_W = 0 pkg syscall (linux-arm), const BPF_X = 8 pkg syscall (linux-arm), const BRKINT = 2 pkg syscall (linux-arm), const CLOCAL = 2048 pkg syscall (linux-arm), const CREAD = 128 pkg syscall (linux-arm), const CS5 = 0 pkg syscall (linux-arm), const CS6 = 16 pkg syscall (linux-arm), const CS7 = 32 pkg syscall (linux-arm), const CS8 = 48 pkg syscall (linux-arm), const CSIZE = 48 pkg syscall (linux-arm), const CSTOPB = 64 pkg syscall (linux-arm), const DT_BLK = 6 pkg syscall (linux-arm), const DT_CHR = 2 pkg syscall (linux-arm), const DT_DIR = 4 pkg syscall (linux-arm), const DT_FIFO = 1 pkg syscall (linux-arm), const DT_LNK = 10 pkg syscall (linux-arm), const DT_REG = 8 pkg syscall (linux-arm), const DT_SOCK = 12 pkg syscall (linux-arm), const DT_UNKNOWN = 0 pkg syscall (linux-arm), const DT_WHT = 14 pkg syscall (linux-arm), const E2BIG = 7 pkg syscall (linux-arm), const EACCES = 13 pkg syscall (linux-arm), const EADDRINUSE = 98 pkg syscall (linux-arm), const EADDRNOTAVAIL = 99 pkg syscall (linux-arm), const EADV = 68 pkg syscall (linux-arm), const EAFNOSUPPORT = 97 pkg syscall (linux-arm), const EAGAIN = 11 pkg syscall (linux-arm), const EALREADY = 114 pkg syscall (linux-arm), const EBADE = 52 pkg syscall (linux-arm), const EBADF = 9 pkg syscall (linux-arm), const EBADFD = 77 pkg syscall (linux-arm), const EBADMSG = 74 pkg syscall (linux-arm), const EBADR = 53 pkg syscall (linux-arm), const EBADRQC = 56 pkg syscall (linux-arm), const EBADSLT = 57 pkg syscall (linux-arm), const EBFONT = 59 pkg syscall (linux-arm), const EBUSY = 16 pkg syscall (linux-arm), const ECANCELED = 125 pkg syscall (linux-arm), const ECHILD = 10 pkg syscall (linux-arm), const ECHO = 8 pkg syscall (linux-arm), const ECHOCTL = 512 pkg syscall (linux-arm), const ECHOE = 16 pkg syscall (linux-arm), const ECHOK = 32 pkg syscall (linux-arm), const ECHOKE = 2048 pkg syscall (linux-arm), const ECHONL = 64 pkg syscall (linux-arm), const ECHOPRT = 1024 pkg syscall (linux-arm), const ECHRNG = 44 pkg syscall (linux-arm), const ECOMM = 70 pkg syscall (linux-arm), const ECONNABORTED = 103 pkg syscall (linux-arm), const ECONNREFUSED = 111 pkg syscall (linux-arm), const ECONNRESET = 104 pkg syscall (linux-arm), const EDEADLK = 35 pkg syscall (linux-arm), const EDEADLOCK = 35 pkg syscall (linux-arm), const EDESTADDRREQ = 89 pkg syscall (linux-arm), const EDOM = 33 pkg syscall (linux-arm), const EDOTDOT = 73 pkg syscall (linux-arm), const EDQUOT = 122 pkg syscall (linux-arm), const EEXIST = 17 pkg syscall (linux-arm), const EFAULT = 14 pkg syscall (linux-arm), const EFBIG = 27 pkg syscall (linux-arm), const EHOSTDOWN = 112 pkg syscall (linux-arm), const EHOSTUNREACH = 113 pkg syscall (linux-arm), const EHWPOISON = 133 pkg syscall (linux-arm), const EIDRM = 43 pkg syscall (linux-arm), const EILSEQ = 84 pkg syscall (linux-arm), const EINPROGRESS = 115 pkg syscall (linux-arm), const EINTR = 4 pkg syscall (linux-arm), const EINVAL = 22 pkg syscall (linux-arm), const EIO = 5 pkg syscall (linux-arm), const EISCONN = 106 pkg syscall (linux-arm), const EISDIR = 21 pkg syscall (linux-arm), const EISNAM = 120 pkg syscall (linux-arm), const EKEYEXPIRED = 127 pkg syscall (linux-arm), const EKEYREJECTED = 129 pkg syscall (linux-arm), const EKEYREVOKED = 128 pkg syscall (linux-arm), const EL2HLT = 51 pkg syscall (linux-arm), const EL2NSYNC = 45 pkg syscall (linux-arm), const EL3HLT = 46 pkg syscall (linux-arm), const EL3RST = 47 pkg syscall (linux-arm), const ELF_NGREG = 18 pkg syscall (linux-arm), const ELF_PRARGSZ = 80 pkg syscall (linux-arm), const ELIBACC = 79 pkg syscall (linux-arm), const ELIBBAD = 80 pkg syscall (linux-arm), const ELIBEXEC = 83 pkg syscall (linux-arm), const ELIBMAX = 82 pkg syscall (linux-arm), const ELIBSCN = 81 pkg syscall (linux-arm), const ELNRNG = 48 pkg syscall (linux-arm), const ELOOP = 40 pkg syscall (linux-arm), const EMEDIUMTYPE = 124 pkg syscall (linux-arm), const EMFILE = 24 pkg syscall (linux-arm), const EMLINK = 31 pkg syscall (linux-arm), const EMSGSIZE = 90 pkg syscall (linux-arm), const EMULTIHOP = 72 pkg syscall (linux-arm), const ENAMETOOLONG = 36 pkg syscall (linux-arm), const ENAVAIL = 119 pkg syscall (linux-arm), const ENETDOWN = 100 pkg syscall (linux-arm), const ENETRESET = 102 pkg syscall (linux-arm), const ENETUNREACH = 101 pkg syscall (linux-arm), const ENFILE = 23 pkg syscall (linux-arm), const ENOANO = 55 pkg syscall (linux-arm), const ENOBUFS = 105 pkg syscall (linux-arm), const ENOCSI = 50 pkg syscall (linux-arm), const ENODATA = 61 pkg syscall (linux-arm), const ENODEV = 19 pkg syscall (linux-arm), const ENOEXEC = 8 pkg syscall (linux-arm), const ENOKEY = 126 pkg syscall (linux-arm), const ENOLCK = 37 pkg syscall (linux-arm), const ENOLINK = 67 pkg syscall (linux-arm), const ENOMEDIUM = 123 pkg syscall (linux-arm), const ENOMEM = 12 pkg syscall (linux-arm), const ENOMSG = 42 pkg syscall (linux-arm), const ENONET = 64 pkg syscall (linux-arm), const ENOPKG = 65 pkg syscall (linux-arm), const ENOPROTOOPT = 92 pkg syscall (linux-arm), const ENOSPC = 28 pkg syscall (linux-arm), const ENOSR = 63 pkg syscall (linux-arm), const ENOSTR = 60 pkg syscall (linux-arm), const ENOSYS = 38 pkg syscall (linux-arm), const ENOTBLK = 15 pkg syscall (linux-arm), const ENOTCONN = 107 pkg syscall (linux-arm), const ENOTDIR = 20 pkg syscall (linux-arm), const ENOTEMPTY = 39 pkg syscall (linux-arm), const ENOTNAM = 118 pkg syscall (linux-arm), const ENOTRECOVERABLE = 131 pkg syscall (linux-arm), const ENOTSOCK = 88 pkg syscall (linux-arm), const ENOTSUP = 95 pkg syscall (linux-arm), const ENOTTY = 25 pkg syscall (linux-arm), const ENOTUNIQ = 76 pkg syscall (linux-arm), const ENXIO = 6 pkg syscall (linux-arm), const EOPNOTSUPP = 95 pkg syscall (linux-arm), const EOVERFLOW = 75 pkg syscall (linux-arm), const EOWNERDEAD = 130 pkg syscall (linux-arm), const EPERM = 1 pkg syscall (linux-arm), const EPFNOSUPPORT = 96 pkg syscall (linux-arm), const EPIPE = 32 pkg syscall (linux-arm), const EPOLLERR = 8 pkg syscall (linux-arm), const EPOLLET = -2147483648 pkg syscall (linux-arm), const EPOLLHUP = 16 pkg syscall (linux-arm), const EPOLLIN = 1 pkg syscall (linux-arm), const EPOLLMSG = 1024 pkg syscall (linux-arm), const EPOLLONESHOT = 1073741824 pkg syscall (linux-arm), const EPOLLOUT = 4 pkg syscall (linux-arm), const EPOLLPRI = 2 pkg syscall (linux-arm), const EPOLLRDBAND = 128 pkg syscall (linux-arm), const EPOLLRDHUP = 8192 pkg syscall (linux-arm), const EPOLLRDNORM = 64 pkg syscall (linux-arm), const EPOLLWRBAND = 512 pkg syscall (linux-arm), const EPOLLWRNORM = 256 pkg syscall (linux-arm), const EPOLL_CLOEXEC = 524288 pkg syscall (linux-arm), const EPOLL_CTL_ADD = 1 pkg syscall (linux-arm), const EPOLL_CTL_DEL = 2 pkg syscall (linux-arm), const EPOLL_CTL_MOD = 3 pkg syscall (linux-arm), const EPOLL_NONBLOCK = 2048 pkg syscall (linux-arm), const EPROTO = 71 pkg syscall (linux-arm), const EPROTONOSUPPORT = 93 pkg syscall (linux-arm), const EPROTOTYPE = 91 pkg syscall (linux-arm), const ERANGE = 34 pkg syscall (linux-arm), const EREMCHG = 78 pkg syscall (linux-arm), const EREMOTE = 66 pkg syscall (linux-arm), const EREMOTEIO = 121 pkg syscall (linux-arm), const ERESTART = 85 pkg syscall (linux-arm), const ERFKILL = 132 pkg syscall (linux-arm), const EROFS = 30 pkg syscall (linux-arm), const ESHUTDOWN = 108 pkg syscall (linux-arm), const ESOCKTNOSUPPORT = 94 pkg syscall (linux-arm), const ESPIPE = 29 pkg syscall (linux-arm), const ESRCH = 3 pkg syscall (linux-arm), const ESRMNT = 69 pkg syscall (linux-arm), const ESTALE = 116 pkg syscall (linux-arm), const ESTRPIPE = 86 pkg syscall (linux-arm), const ETH_P_1588 = 35063 pkg syscall (linux-arm), const ETH_P_8021Q = 33024 pkg syscall (linux-arm), const ETH_P_802_2 = 4 pkg syscall (linux-arm), const ETH_P_802_3 = 1 pkg syscall (linux-arm), const ETH_P_AARP = 33011 pkg syscall (linux-arm), const ETH_P_ALL = 3 pkg syscall (linux-arm), const ETH_P_AOE = 34978 pkg syscall (linux-arm), const ETH_P_ARCNET = 26 pkg syscall (linux-arm), const ETH_P_ARP = 2054 pkg syscall (linux-arm), const ETH_P_ATALK = 32923 pkg syscall (linux-arm), const ETH_P_ATMFATE = 34948 pkg syscall (linux-arm), const ETH_P_ATMMPOA = 34892 pkg syscall (linux-arm), const ETH_P_AX25 = 2 pkg syscall (linux-arm), const ETH_P_BPQ = 2303 pkg syscall (linux-arm), const ETH_P_CAIF = 247 pkg syscall (linux-arm), const ETH_P_CAN = 12 pkg syscall (linux-arm), const ETH_P_CONTROL = 22 pkg syscall (linux-arm), const ETH_P_CUST = 24582 pkg syscall (linux-arm), const ETH_P_DDCMP = 6 pkg syscall (linux-arm), const ETH_P_DEC = 24576 pkg syscall (linux-arm), const ETH_P_DIAG = 24581 pkg syscall (linux-arm), const ETH_P_DNA_DL = 24577 pkg syscall (linux-arm), const ETH_P_DNA_RC = 24578 pkg syscall (linux-arm), const ETH_P_DNA_RT = 24579 pkg syscall (linux-arm), const ETH_P_DSA = 27 pkg syscall (linux-arm), const ETH_P_ECONET = 24 pkg syscall (linux-arm), const ETH_P_EDSA = 56026 pkg syscall (linux-arm), const ETH_P_FCOE = 35078 pkg syscall (linux-arm), const ETH_P_FIP = 35092 pkg syscall (linux-arm), const ETH_P_HDLC = 25 pkg syscall (linux-arm), const ETH_P_IEEE802154 = 246 pkg syscall (linux-arm), const ETH_P_IEEEPUP = 2560 pkg syscall (linux-arm), const ETH_P_IEEEPUPAT = 2561 pkg syscall (linux-arm), const ETH_P_IP = 2048 pkg syscall (linux-arm), const ETH_P_IPV6 = 34525 pkg syscall (linux-arm), const ETH_P_IPX = 33079 pkg syscall (linux-arm), const ETH_P_IRDA = 23 pkg syscall (linux-arm), const ETH_P_LAT = 24580 pkg syscall (linux-arm), const ETH_P_LINK_CTL = 34924 pkg syscall (linux-arm), const ETH_P_LOCALTALK = 9 pkg syscall (linux-arm), const ETH_P_LOOP = 96 pkg syscall (linux-arm), const ETH_P_MOBITEX = 21 pkg syscall (linux-arm), const ETH_P_MPLS_MC = 34888 pkg syscall (linux-arm), const ETH_P_MPLS_UC = 34887 pkg syscall (linux-arm), const ETH_P_PAE = 34958 pkg syscall (linux-arm), const ETH_P_PAUSE = 34824 pkg syscall (linux-arm), const ETH_P_PHONET = 245 pkg syscall (linux-arm), const ETH_P_PPPTALK = 16 pkg syscall (linux-arm), const ETH_P_PPP_DISC = 34915 pkg syscall (linux-arm), const ETH_P_PPP_MP = 8 pkg syscall (linux-arm), const ETH_P_PPP_SES = 34916 pkg syscall (linux-arm), const ETH_P_PUP = 512 pkg syscall (linux-arm), const ETH_P_PUPAT = 513 pkg syscall (linux-arm), const ETH_P_RARP = 32821 pkg syscall (linux-arm), const ETH_P_SCA = 24583 pkg syscall (linux-arm), const ETH_P_SLOW = 34825 pkg syscall (linux-arm), const ETH_P_SNAP = 5 pkg syscall (linux-arm), const ETH_P_TEB = 25944 pkg syscall (linux-arm), const ETH_P_TIPC = 35018 pkg syscall (linux-arm), const ETH_P_TRAILER = 28 pkg syscall (linux-arm), const ETH_P_TR_802_2 = 17 pkg syscall (linux-arm), const ETH_P_WAN_PPP = 7 pkg syscall (linux-arm), const ETH_P_WCCP = 34878 pkg syscall (linux-arm), const ETH_P_X25 = 2053 pkg syscall (linux-arm), const ETIME = 62 pkg syscall (linux-arm), const ETIMEDOUT = 110 pkg syscall (linux-arm), const ETOOMANYREFS = 109 pkg syscall (linux-arm), const ETXTBSY = 26 pkg syscall (linux-arm), const EUCLEAN = 117 pkg syscall (linux-arm), const EUNATCH = 49 pkg syscall (linux-arm), const EUSERS = 87 pkg syscall (linux-arm), const EWOULDBLOCK = 11 pkg syscall (linux-arm), const EXDEV = 18 pkg syscall (linux-arm), const EXFULL = 54 pkg syscall (linux-arm), const FD_CLOEXEC = 1 pkg syscall (linux-arm), const FD_SETSIZE = 1024 pkg syscall (linux-arm), const FLUSHO = 4096 pkg syscall (linux-arm), const F_DUPFD = 0 pkg syscall (linux-arm), const F_DUPFD_CLOEXEC = 1030 pkg syscall (linux-arm), const F_EXLCK = 4 pkg syscall (linux-arm), const F_GETFD = 1 pkg syscall (linux-arm), const F_GETFL = 3 pkg syscall (linux-arm), const F_GETLEASE = 1025 pkg syscall (linux-arm), const F_GETLK = 12 pkg syscall (linux-arm), const F_GETLK64 = 12 pkg syscall (linux-arm), const F_GETOWN = 9 pkg syscall (linux-arm), const F_GETOWN_EX = 16 pkg syscall (linux-arm), const F_GETPIPE_SZ = 1032 pkg syscall (linux-arm), const F_GETSIG = 11 pkg syscall (linux-arm), const F_LOCK = 1 pkg syscall (linux-arm), const F_NOTIFY = 1026 pkg syscall (linux-arm), const F_OK = 0 pkg syscall (linux-arm), const F_RDLCK = 0 pkg syscall (linux-arm), const F_SETFD = 2 pkg syscall (linux-arm), const F_SETFL = 4 pkg syscall (linux-arm), const F_SETLEASE = 1024 pkg syscall (linux-arm), const F_SETLK = 13 pkg syscall (linux-arm), const F_SETLK64 = 13 pkg syscall (linux-arm), const F_SETLKW = 14 pkg syscall (linux-arm), const F_SETLKW64 = 14 pkg syscall (linux-arm), const F_SETOWN = 8 pkg syscall (linux-arm), const F_SETOWN_EX = 15 pkg syscall (linux-arm), const F_SETPIPE_SZ = 1031 pkg syscall (linux-arm), const F_SETSIG = 10 pkg syscall (linux-arm), const F_SHLCK = 8 pkg syscall (linux-arm), const F_TEST = 3 pkg syscall (linux-arm), const F_TLOCK = 2 pkg syscall (linux-arm), const F_ULOCK = 0 pkg syscall (linux-arm), const F_UNLCK = 2 pkg syscall (linux-arm), const F_WRLCK = 1 pkg syscall (linux-arm), const HUPCL = 1024 pkg syscall (linux-arm), const ICANON = 2 pkg syscall (linux-arm), const ICRNL = 256 pkg syscall (linux-arm), const IEXTEN = 32768 pkg syscall (linux-arm), const IFA_ADDRESS = 1 pkg syscall (linux-arm), const IFA_ANYCAST = 5 pkg syscall (linux-arm), const IFA_BROADCAST = 4 pkg syscall (linux-arm), const IFA_CACHEINFO = 6 pkg syscall (linux-arm), const IFA_F_DADFAILED = 8 pkg syscall (linux-arm), const IFA_F_DEPRECATED = 32 pkg syscall (linux-arm), const IFA_F_HOMEADDRESS = 16 pkg syscall (linux-arm), const IFA_F_NODAD = 2 pkg syscall (linux-arm), const IFA_F_OPTIMISTIC = 4 pkg syscall (linux-arm), const IFA_F_PERMANENT = 128 pkg syscall (linux-arm), const IFA_F_SECONDARY = 1 pkg syscall (linux-arm), const IFA_F_TEMPORARY = 1 pkg syscall (linux-arm), const IFA_F_TENTATIVE = 64 pkg syscall (linux-arm), const IFA_LABEL = 3 pkg syscall (linux-arm), const IFA_LOCAL = 2 pkg syscall (linux-arm), const IFA_MAX = 7 pkg syscall (linux-arm), const IFA_MULTICAST = 7 pkg syscall (linux-arm), const IFA_UNSPEC = 0 pkg syscall (linux-arm), const IFF_ALLMULTI = 512 pkg syscall (linux-arm), const IFF_AUTOMEDIA = 16384 pkg syscall (linux-arm), const IFF_DEBUG = 4 pkg syscall (linux-arm), const IFF_DYNAMIC = 32768 pkg syscall (linux-arm), const IFF_LOOPBACK = 8 pkg syscall (linux-arm), const IFF_MASTER = 1024 pkg syscall (linux-arm), const IFF_MULTICAST = 4096 pkg syscall (linux-arm), const IFF_NOARP = 128 pkg syscall (linux-arm), const IFF_NOTRAILERS = 32 pkg syscall (linux-arm), const IFF_NO_PI = 4096 pkg syscall (linux-arm), const IFF_ONE_QUEUE = 8192 pkg syscall (linux-arm), const IFF_POINTOPOINT = 16 pkg syscall (linux-arm), const IFF_PORTSEL = 8192 pkg syscall (linux-arm), const IFF_PROMISC = 256 pkg syscall (linux-arm), const IFF_RUNNING = 64 pkg syscall (linux-arm), const IFF_SLAVE = 2048 pkg syscall (linux-arm), const IFF_TAP = 2 pkg syscall (linux-arm), const IFF_TUN = 1 pkg syscall (linux-arm), const IFF_TUN_EXCL = 32768 pkg syscall (linux-arm), const IFF_VNET_HDR = 16384 pkg syscall (linux-arm), const IFLA_ADDRESS = 1 pkg syscall (linux-arm), const IFLA_BROADCAST = 2 pkg syscall (linux-arm), const IFLA_COST = 8 pkg syscall (linux-arm), const IFLA_IFALIAS = 20 pkg syscall (linux-arm), const IFLA_IFNAME = 3 pkg syscall (linux-arm), const IFLA_LINK = 5 pkg syscall (linux-arm), const IFLA_LINKINFO = 18 pkg syscall (linux-arm), const IFLA_LINKMODE = 17 pkg syscall (linux-arm), const IFLA_MAP = 14 pkg syscall (linux-arm), const IFLA_MASTER = 10 pkg syscall (linux-arm), const IFLA_MAX = 29 pkg syscall (linux-arm), const IFLA_MTU = 4 pkg syscall (linux-arm), const IFLA_NET_NS_PID = 19 pkg syscall (linux-arm), const IFLA_OPERSTATE = 16 pkg syscall (linux-arm), const IFLA_PRIORITY = 9 pkg syscall (linux-arm), const IFLA_PROTINFO = 12 pkg syscall (linux-arm), const IFLA_QDISC = 6 pkg syscall (linux-arm), const IFLA_STATS = 7 pkg syscall (linux-arm), const IFLA_TXQLEN = 13 pkg syscall (linux-arm), const IFLA_UNSPEC = 0 pkg syscall (linux-arm), const IFLA_WEIGHT = 15 pkg syscall (linux-arm), const IFLA_WIRELESS = 11 pkg syscall (linux-arm), const IFNAMSIZ = 16 pkg syscall (linux-arm), const IGNBRK = 1 pkg syscall (linux-arm), const IGNCR = 128 pkg syscall (linux-arm), const IGNPAR = 4 pkg syscall (linux-arm), const IMAXBEL = 8192 pkg syscall (linux-arm), const INLCR = 64 pkg syscall (linux-arm), const INPCK = 16 pkg syscall (linux-arm), const IN_ACCESS = 1 pkg syscall (linux-arm), const IN_ALL_EVENTS = 4095 pkg syscall (linux-arm), const IN_ATTRIB = 4 pkg syscall (linux-arm), const IN_CLASSA_HOST = 16777215 pkg syscall (linux-arm), const IN_CLASSA_MAX = 128 pkg syscall (linux-arm), const IN_CLASSA_NET = 4278190080 pkg syscall (linux-arm), const IN_CLASSA_NSHIFT = 24 pkg syscall (linux-arm), const IN_CLASSB_HOST = 65535 pkg syscall (linux-arm), const IN_CLASSB_MAX = 65536 pkg syscall (linux-arm), const IN_CLASSB_NET = 4294901760 pkg syscall (linux-arm), const IN_CLASSB_NSHIFT = 16 pkg syscall (linux-arm), const IN_CLASSC_HOST = 255 pkg syscall (linux-arm), const IN_CLASSC_NET = 4294967040 pkg syscall (linux-arm), const IN_CLASSC_NSHIFT = 8 pkg syscall (linux-arm), const IN_CLOEXEC = 524288 pkg syscall (linux-arm), const IN_CLOSE = 24 pkg syscall (linux-arm), const IN_CLOSE_NOWRITE = 16 pkg syscall (linux-arm), const IN_CLOSE_WRITE = 8 pkg syscall (linux-arm), const IN_CREATE = 256 pkg syscall (linux-arm), const IN_DELETE = 512 pkg syscall (linux-arm), const IN_DELETE_SELF = 1024 pkg syscall (linux-arm), const IN_DONT_FOLLOW = 33554432 pkg syscall (linux-arm), const IN_EXCL_UNLINK = 67108864 pkg syscall (linux-arm), const IN_IGNORED = 32768 pkg syscall (linux-arm), const IN_ISDIR = 1073741824 pkg syscall (linux-arm), const IN_LOOPBACKNET = 127 pkg syscall (linux-arm), const IN_MASK_ADD = 536870912 pkg syscall (linux-arm), const IN_MODIFY = 2 pkg syscall (linux-arm), const IN_MOVE = 192 pkg syscall (linux-arm), const IN_MOVED_FROM = 64 pkg syscall (linux-arm), const IN_MOVED_TO = 128 pkg syscall (linux-arm), const IN_MOVE_SELF = 2048 pkg syscall (linux-arm), const IN_NONBLOCK = 2048 pkg syscall (linux-arm), const IN_ONESHOT = 2147483648 pkg syscall (linux-arm), const IN_ONLYDIR = 16777216 pkg syscall (linux-arm), const IN_OPEN = 32 pkg syscall (linux-arm), const IN_Q_OVERFLOW = 16384 pkg syscall (linux-arm), const IN_UNMOUNT = 8192 pkg syscall (linux-arm), const IPPROTO_AH = 51 pkg syscall (linux-arm), const IPPROTO_COMP = 108 pkg syscall (linux-arm), const IPPROTO_DCCP = 33 pkg syscall (linux-arm), const IPPROTO_DSTOPTS = 60 pkg syscall (linux-arm), const IPPROTO_EGP = 8 pkg syscall (linux-arm), const IPPROTO_ENCAP = 98 pkg syscall (linux-arm), const IPPROTO_ESP = 50 pkg syscall (linux-arm), const IPPROTO_FRAGMENT = 44 pkg syscall (linux-arm), const IPPROTO_GRE = 47 pkg syscall (linux-arm), const IPPROTO_HOPOPTS = 0 pkg syscall (linux-arm), const IPPROTO_ICMP = 1 pkg syscall (linux-arm), const IPPROTO_ICMPV6 = 58 pkg syscall (linux-arm), const IPPROTO_IDP = 22 pkg syscall (linux-arm), const IPPROTO_IGMP = 2 pkg syscall (linux-arm), const IPPROTO_IPIP = 4 pkg syscall (linux-arm), const IPPROTO_MTP = 92 pkg syscall (linux-arm), const IPPROTO_NONE = 59 pkg syscall (linux-arm), const IPPROTO_PIM = 103 pkg syscall (linux-arm), const IPPROTO_PUP = 12 pkg syscall (linux-arm), const IPPROTO_RAW = 255 pkg syscall (linux-arm), const IPPROTO_ROUTING = 43 pkg syscall (linux-arm), const IPPROTO_RSVP = 46 pkg syscall (linux-arm), const IPPROTO_SCTP = 132 pkg syscall (linux-arm), const IPPROTO_TP = 29 pkg syscall (linux-arm), const IPPROTO_UDPLITE = 136 pkg syscall (linux-arm), const IPV6_2292DSTOPTS = 4 pkg syscall (linux-arm), const IPV6_2292HOPLIMIT = 8 pkg syscall (linux-arm), const IPV6_2292HOPOPTS = 3 pkg syscall (linux-arm), const IPV6_2292PKTINFO = 2 pkg syscall (linux-arm), const IPV6_2292PKTOPTIONS = 6 pkg syscall (linux-arm), const IPV6_2292RTHDR = 5 pkg syscall (linux-arm), const IPV6_ADDRFORM = 1 pkg syscall (linux-arm), const IPV6_ADD_MEMBERSHIP = 20 pkg syscall (linux-arm), const IPV6_AUTHHDR = 10 pkg syscall (linux-arm), const IPV6_CHECKSUM = 7 pkg syscall (linux-arm), const IPV6_DROP_MEMBERSHIP = 21 pkg syscall (linux-arm), const IPV6_DSTOPTS = 59 pkg syscall (linux-arm), const IPV6_HOPLIMIT = 52 pkg syscall (linux-arm), const IPV6_HOPOPTS = 54 pkg syscall (linux-arm), const IPV6_IPSEC_POLICY = 34 pkg syscall (linux-arm), const IPV6_JOIN_ANYCAST = 27 pkg syscall (linux-arm), const IPV6_JOIN_GROUP = 20 pkg syscall (linux-arm), const IPV6_LEAVE_ANYCAST = 28 pkg syscall (linux-arm), const IPV6_LEAVE_GROUP = 21 pkg syscall (linux-arm), const IPV6_MTU = 24 pkg syscall (linux-arm), const IPV6_MTU_DISCOVER = 23 pkg syscall (linux-arm), const IPV6_MULTICAST_HOPS = 18 pkg syscall (linux-arm), const IPV6_MULTICAST_IF = 17 pkg syscall (linux-arm), const IPV6_MULTICAST_LOOP = 19 pkg syscall (linux-arm), const IPV6_NEXTHOP = 9 pkg syscall (linux-arm), const IPV6_PKTINFO = 50 pkg syscall (linux-arm), const IPV6_PMTUDISC_DO = 2 pkg syscall (linux-arm), const IPV6_PMTUDISC_DONT = 0 pkg syscall (linux-arm), const IPV6_PMTUDISC_PROBE = 3 pkg syscall (linux-arm), const IPV6_PMTUDISC_WANT = 1 pkg syscall (linux-arm), const IPV6_RECVDSTOPTS = 58 pkg syscall (linux-arm), const IPV6_RECVERR = 25 pkg syscall (linux-arm), const IPV6_RECVHOPLIMIT = 51 pkg syscall (linux-arm), const IPV6_RECVHOPOPTS = 53 pkg syscall (linux-arm), const IPV6_RECVPKTINFO = 49 pkg syscall (linux-arm), const IPV6_RECVRTHDR = 56 pkg syscall (linux-arm), const IPV6_RECVTCLASS = 66 pkg syscall (linux-arm), const IPV6_ROUTER_ALERT = 22 pkg syscall (linux-arm), const IPV6_RTHDR = 57 pkg syscall (linux-arm), const IPV6_RTHDRDSTOPTS = 55 pkg syscall (linux-arm), const IPV6_RTHDR_LOOSE = 0 pkg syscall (linux-arm), const IPV6_RTHDR_STRICT = 1 pkg syscall (linux-arm), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (linux-arm), const IPV6_RXDSTOPTS = 59 pkg syscall (linux-arm), const IPV6_RXHOPOPTS = 54 pkg syscall (linux-arm), const IPV6_TCLASS = 67 pkg syscall (linux-arm), const IPV6_UNICAST_HOPS = 16 pkg syscall (linux-arm), const IPV6_V6ONLY = 26 pkg syscall (linux-arm), const IPV6_XFRM_POLICY = 35 pkg syscall (linux-arm), const IP_ADD_MEMBERSHIP = 35 pkg syscall (linux-arm), const IP_ADD_SOURCE_MEMBERSHIP = 39 pkg syscall (linux-arm), const IP_BLOCK_SOURCE = 38 pkg syscall (linux-arm), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (linux-arm), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (linux-arm), const IP_DF = 16384 pkg syscall (linux-arm), const IP_DROP_MEMBERSHIP = 36 pkg syscall (linux-arm), const IP_DROP_SOURCE_MEMBERSHIP = 40 pkg syscall (linux-arm), const IP_FREEBIND = 15 pkg syscall (linux-arm), const IP_HDRINCL = 3 pkg syscall (linux-arm), const IP_IPSEC_POLICY = 16 pkg syscall (linux-arm), const IP_MAXPACKET = 65535 pkg syscall (linux-arm), const IP_MAX_MEMBERSHIPS = 20 pkg syscall (linux-arm), const IP_MF = 8192 pkg syscall (linux-arm), const IP_MINTTL = 21 pkg syscall (linux-arm), const IP_MSFILTER = 41 pkg syscall (linux-arm), const IP_MSS = 576 pkg syscall (linux-arm), const IP_MTU = 14 pkg syscall (linux-arm), const IP_MTU_DISCOVER = 10 pkg syscall (linux-arm), const IP_MULTICAST_IF = 32 pkg syscall (linux-arm), const IP_MULTICAST_LOOP = 34 pkg syscall (linux-arm), const IP_MULTICAST_TTL = 33 pkg syscall (linux-arm), const IP_OFFMASK = 8191 pkg syscall (linux-arm), const IP_OPTIONS = 4 pkg syscall (linux-arm), const IP_ORIGDSTADDR = 20 pkg syscall (linux-arm), const IP_PASSSEC = 18 pkg syscall (linux-arm), const IP_PKTINFO = 8 pkg syscall (linux-arm), const IP_PKTOPTIONS = 9 pkg syscall (linux-arm), const IP_PMTUDISC = 10 pkg syscall (linux-arm), const IP_PMTUDISC_DO = 2 pkg syscall (linux-arm), const IP_PMTUDISC_DONT = 0 pkg syscall (linux-arm), const IP_PMTUDISC_PROBE = 3 pkg syscall (linux-arm), const IP_PMTUDISC_WANT = 1 pkg syscall (linux-arm), const IP_RECVERR = 11 pkg syscall (linux-arm), const IP_RECVOPTS = 6 pkg syscall (linux-arm), const IP_RECVORIGDSTADDR = 20 pkg syscall (linux-arm), const IP_RECVRETOPTS = 7 pkg syscall (linux-arm), const IP_RECVTOS = 13 pkg syscall (linux-arm), const IP_RECVTTL = 12 pkg syscall (linux-arm), const IP_RETOPTS = 7 pkg syscall (linux-arm), const IP_RF = 32768 pkg syscall (linux-arm), const IP_ROUTER_ALERT = 5 pkg syscall (linux-arm), const IP_TOS = 1 pkg syscall (linux-arm), const IP_TRANSPARENT = 19 pkg syscall (linux-arm), const IP_TTL = 2 pkg syscall (linux-arm), const IP_UNBLOCK_SOURCE = 37 pkg syscall (linux-arm), const IP_XFRM_POLICY = 17 pkg syscall (linux-arm), const ISIG = 1 pkg syscall (linux-arm), const ISTRIP = 32 pkg syscall (linux-arm), const IUCLC = 512 pkg syscall (linux-arm), const IUTF8 = 16384 pkg syscall (linux-arm), const IXANY = 2048 pkg syscall (linux-arm), const IXOFF = 4096 pkg syscall (linux-arm), const IXON = 1024 pkg syscall (linux-arm), const ImplementsGetwd = true pkg syscall (linux-arm), const LINUX_REBOOT_CMD_CAD_OFF = 0 pkg syscall (linux-arm), const LINUX_REBOOT_CMD_CAD_ON = 2309737967 pkg syscall (linux-arm), const LINUX_REBOOT_CMD_HALT = 3454992675 pkg syscall (linux-arm), const LINUX_REBOOT_CMD_KEXEC = 1163412803 pkg syscall (linux-arm), const LINUX_REBOOT_CMD_POWER_OFF = 1126301404 pkg syscall (linux-arm), const LINUX_REBOOT_CMD_RESTART = 19088743 pkg syscall (linux-arm), const LINUX_REBOOT_CMD_RESTART2 = 2712847316 pkg syscall (linux-arm), const LINUX_REBOOT_CMD_SW_SUSPEND = 3489725666 pkg syscall (linux-arm), const LINUX_REBOOT_MAGIC1 = 4276215469 pkg syscall (linux-arm), const LINUX_REBOOT_MAGIC2 = 672274793 pkg syscall (linux-arm), const LOCK_EX = 2 pkg syscall (linux-arm), const LOCK_NB = 4 pkg syscall (linux-arm), const LOCK_SH = 1 pkg syscall (linux-arm), const LOCK_UN = 8 pkg syscall (linux-arm), const MADV_DOFORK = 11 pkg syscall (linux-arm), const MADV_DONTFORK = 10 pkg syscall (linux-arm), const MADV_DONTNEED = 4 pkg syscall (linux-arm), const MADV_HUGEPAGE = 14 pkg syscall (linux-arm), const MADV_HWPOISON = 100 pkg syscall (linux-arm), const MADV_MERGEABLE = 12 pkg syscall (linux-arm), const MADV_NOHUGEPAGE = 15 pkg syscall (linux-arm), const MADV_NORMAL = 0 pkg syscall (linux-arm), const MADV_RANDOM = 1 pkg syscall (linux-arm), const MADV_REMOVE = 9 pkg syscall (linux-arm), const MADV_SEQUENTIAL = 2 pkg syscall (linux-arm), const MADV_UNMERGEABLE = 13 pkg syscall (linux-arm), const MADV_WILLNEED = 3 pkg syscall (linux-arm), const MAP_ANON = 32 pkg syscall (linux-arm), const MAP_ANONYMOUS = 32 pkg syscall (linux-arm), const MAP_DENYWRITE = 2048 pkg syscall (linux-arm), const MAP_EXECUTABLE = 4096 pkg syscall (linux-arm), const MAP_FILE = 0 pkg syscall (linux-arm), const MAP_FIXED = 16 pkg syscall (linux-arm), const MAP_GROWSDOWN = 256 pkg syscall (linux-arm), const MAP_LOCKED = 8192 pkg syscall (linux-arm), const MAP_NONBLOCK = 65536 pkg syscall (linux-arm), const MAP_NORESERVE = 16384 pkg syscall (linux-arm), const MAP_POPULATE = 32768 pkg syscall (linux-arm), const MAP_PRIVATE = 2 pkg syscall (linux-arm), const MAP_SHARED = 1 pkg syscall (linux-arm), const MAP_TYPE = 15 pkg syscall (linux-arm), const MCL_CURRENT = 1 pkg syscall (linux-arm), const MCL_FUTURE = 2 pkg syscall (linux-arm), const MNT_DETACH = 2 pkg syscall (linux-arm), const MNT_EXPIRE = 4 pkg syscall (linux-arm), const MNT_FORCE = 1 pkg syscall (linux-arm), const MSG_CMSG_CLOEXEC = 1073741824 pkg syscall (linux-arm), const MSG_CONFIRM = 2048 pkg syscall (linux-arm), const MSG_CTRUNC = 8 pkg syscall (linux-arm), const MSG_DONTROUTE = 4 pkg syscall (linux-arm), const MSG_DONTWAIT = 64 pkg syscall (linux-arm), const MSG_EOR = 128 pkg syscall (linux-arm), const MSG_ERRQUEUE = 8192 pkg syscall (linux-arm), const MSG_FASTOPEN = 536870912 pkg syscall (linux-arm), const MSG_FASTOPEN ideal-int pkg syscall (linux-arm), const MSG_FIN = 512 pkg syscall (linux-arm), const MSG_MORE = 32768 pkg syscall (linux-arm), const MSG_NOSIGNAL = 16384 pkg syscall (linux-arm), const MSG_OOB = 1 pkg syscall (linux-arm), const MSG_PEEK = 2 pkg syscall (linux-arm), const MSG_PROXY = 16 pkg syscall (linux-arm), const MSG_RST = 4096 pkg syscall (linux-arm), const MSG_SYN = 1024 pkg syscall (linux-arm), const MSG_TRUNC = 32 pkg syscall (linux-arm), const MSG_TRYHARD = 4 pkg syscall (linux-arm), const MSG_WAITALL = 256 pkg syscall (linux-arm), const MSG_WAITFORONE = 65536 pkg syscall (linux-arm), const MS_ACTIVE = 1073741824 pkg syscall (linux-arm), const MS_ASYNC = 1 pkg syscall (linux-arm), const MS_BIND = 4096 pkg syscall (linux-arm), const MS_DIRSYNC = 128 pkg syscall (linux-arm), const MS_INVALIDATE = 2 pkg syscall (linux-arm), const MS_I_VERSION = 8388608 pkg syscall (linux-arm), const MS_KERNMOUNT = 4194304 pkg syscall (linux-arm), const MS_MANDLOCK = 64 pkg syscall (linux-arm), const MS_MGC_MSK = 4294901760 pkg syscall (linux-arm), const MS_MGC_VAL = 3236757504 pkg syscall (linux-arm), const MS_MOVE = 8192 pkg syscall (linux-arm), const MS_NOATIME = 1024 pkg syscall (linux-arm), const MS_NODEV = 4 pkg syscall (linux-arm), const MS_NODIRATIME = 2048 pkg syscall (linux-arm), const MS_NOEXEC = 8 pkg syscall (linux-arm), const MS_NOSUID = 2 pkg syscall (linux-arm), const MS_NOUSER = -2147483648 pkg syscall (linux-arm), const MS_POSIXACL = 65536 pkg syscall (linux-arm), const MS_PRIVATE = 262144 pkg syscall (linux-arm), const MS_RDONLY = 1 pkg syscall (linux-arm), const MS_REC = 16384 pkg syscall (linux-arm), const MS_RELATIME = 2097152 pkg syscall (linux-arm), const MS_REMOUNT = 32 pkg syscall (linux-arm), const MS_RMT_MASK = 8388689 pkg syscall (linux-arm), const MS_SHARED = 1048576 pkg syscall (linux-arm), const MS_SILENT = 32768 pkg syscall (linux-arm), const MS_SLAVE = 524288 pkg syscall (linux-arm), const MS_STRICTATIME = 16777216 pkg syscall (linux-arm), const MS_SYNC = 4 pkg syscall (linux-arm), const MS_SYNCHRONOUS = 16 pkg syscall (linux-arm), const MS_UNBINDABLE = 131072 pkg syscall (linux-arm), const NAME_MAX = 255 pkg syscall (linux-arm), const NETLINK_ADD_MEMBERSHIP = 1 pkg syscall (linux-arm), const NETLINK_AUDIT = 9 pkg syscall (linux-arm), const NETLINK_BROADCAST_ERROR = 4 pkg syscall (linux-arm), const NETLINK_CONNECTOR = 11 pkg syscall (linux-arm), const NETLINK_DNRTMSG = 14 pkg syscall (linux-arm), const NETLINK_DROP_MEMBERSHIP = 2 pkg syscall (linux-arm), const NETLINK_ECRYPTFS = 19 pkg syscall (linux-arm), const NETLINK_FIB_LOOKUP = 10 pkg syscall (linux-arm), const NETLINK_FIREWALL = 3 pkg syscall (linux-arm), const NETLINK_GENERIC = 16 pkg syscall (linux-arm), const NETLINK_INET_DIAG = 4 pkg syscall (linux-arm), const NETLINK_IP6_FW = 13 pkg syscall (linux-arm), const NETLINK_ISCSI = 8 pkg syscall (linux-arm), const NETLINK_KOBJECT_UEVENT = 15 pkg syscall (linux-arm), const NETLINK_NETFILTER = 12 pkg syscall (linux-arm), const NETLINK_NFLOG = 5 pkg syscall (linux-arm), const NETLINK_NO_ENOBUFS = 5 pkg syscall (linux-arm), const NETLINK_PKTINFO = 3 pkg syscall (linux-arm), const NETLINK_RDMA = 20 pkg syscall (linux-arm), const NETLINK_ROUTE = 0 pkg syscall (linux-arm), const NETLINK_SCSITRANSPORT = 18 pkg syscall (linux-arm), const NETLINK_SELINUX = 7 pkg syscall (linux-arm), const NETLINK_UNUSED = 1 pkg syscall (linux-arm), const NETLINK_USERSOCK = 2 pkg syscall (linux-arm), const NETLINK_XFRM = 6 pkg syscall (linux-arm), const NLA_ALIGNTO = 4 pkg syscall (linux-arm), const NLA_F_NESTED = 32768 pkg syscall (linux-arm), const NLA_F_NET_BYTEORDER = 16384 pkg syscall (linux-arm), const NLA_HDRLEN = 4 pkg syscall (linux-arm), const NLMSG_ALIGNTO = 4 pkg syscall (linux-arm), const NLMSG_DONE = 3 pkg syscall (linux-arm), const NLMSG_ERROR = 2 pkg syscall (linux-arm), const NLMSG_HDRLEN = 16 pkg syscall (linux-arm), const NLMSG_MIN_TYPE = 16 pkg syscall (linux-arm), const NLMSG_NOOP = 1 pkg syscall (linux-arm), const NLMSG_OVERRUN = 4 pkg syscall (linux-arm), const NLM_F_ACK = 4 pkg syscall (linux-arm), const NLM_F_APPEND = 2048 pkg syscall (linux-arm), const NLM_F_ATOMIC = 1024 pkg syscall (linux-arm), const NLM_F_CREATE = 1024 pkg syscall (linux-arm), const NLM_F_DUMP = 768 pkg syscall (linux-arm), const NLM_F_ECHO = 8 pkg syscall (linux-arm), const NLM_F_EXCL = 512 pkg syscall (linux-arm), const NLM_F_MATCH = 512 pkg syscall (linux-arm), const NLM_F_MULTI = 2 pkg syscall (linux-arm), const NLM_F_REPLACE = 256 pkg syscall (linux-arm), const NLM_F_REQUEST = 1 pkg syscall (linux-arm), const NLM_F_ROOT = 256 pkg syscall (linux-arm), const NOFLSH = 128 pkg syscall (linux-arm), const OCRNL = 8 pkg syscall (linux-arm), const OFDEL = 128 pkg syscall (linux-arm), const OFILL = 64 pkg syscall (linux-arm), const OLCUC = 2 pkg syscall (linux-arm), const ONLCR = 4 pkg syscall (linux-arm), const ONLRET = 32 pkg syscall (linux-arm), const ONOCR = 16 pkg syscall (linux-arm), const OPOST = 1 pkg syscall (linux-arm), const O_ACCMODE = 3 pkg syscall (linux-arm), const O_APPEND = 1024 pkg syscall (linux-arm), const O_ASYNC = 8192 pkg syscall (linux-arm), const O_CLOEXEC = 524288 pkg syscall (linux-arm), const O_CREAT = 64 pkg syscall (linux-arm), const O_DIRECT = 65536 pkg syscall (linux-arm), const O_DIRECTORY = 16384 pkg syscall (linux-arm), const O_DSYNC = 4096 pkg syscall (linux-arm), const O_EXCL = 128 pkg syscall (linux-arm), const O_FSYNC = 4096 pkg syscall (linux-arm), const O_LARGEFILE = 131072 pkg syscall (linux-arm), const O_NDELAY = 2048 pkg syscall (linux-arm), const O_NOATIME = 262144 pkg syscall (linux-arm), const O_NOCTTY = 256 pkg syscall (linux-arm), const O_NOFOLLOW = 32768 pkg syscall (linux-arm), const O_NONBLOCK = 2048 pkg syscall (linux-arm), const O_RSYNC = 4096 pkg syscall (linux-arm), const O_SYNC = 4096 pkg syscall (linux-arm), const O_TRUNC = 512 pkg syscall (linux-arm), const PACKET_ADD_MEMBERSHIP = 1 pkg syscall (linux-arm), const PACKET_BROADCAST = 1 pkg syscall (linux-arm), const PACKET_DROP_MEMBERSHIP = 2 pkg syscall (linux-arm), const PACKET_FASTROUTE = 6 pkg syscall (linux-arm), const PACKET_HOST = 0 pkg syscall (linux-arm), const PACKET_LOOPBACK = 5 pkg syscall (linux-arm), const PACKET_MR_ALLMULTI = 2 pkg syscall (linux-arm), const PACKET_MR_MULTICAST = 0 pkg syscall (linux-arm), const PACKET_MR_PROMISC = 1 pkg syscall (linux-arm), const PACKET_MULTICAST = 2 pkg syscall (linux-arm), const PACKET_OTHERHOST = 3 pkg syscall (linux-arm), const PACKET_OUTGOING = 4 pkg syscall (linux-arm), const PACKET_RECV_OUTPUT = 3 pkg syscall (linux-arm), const PACKET_RX_RING = 5 pkg syscall (linux-arm), const PACKET_STATISTICS = 6 pkg syscall (linux-arm), const PARENB = 256 pkg syscall (linux-arm), const PARMRK = 8 pkg syscall (linux-arm), const PARODD = 512 pkg syscall (linux-arm), const PENDIN = 16384 pkg syscall (linux-arm), const PROT_EXEC = 4 pkg syscall (linux-arm), const PROT_GROWSDOWN = 16777216 pkg syscall (linux-arm), const PROT_GROWSUP = 33554432 pkg syscall (linux-arm), const PROT_NONE = 0 pkg syscall (linux-arm), const PROT_READ = 1 pkg syscall (linux-arm), const PROT_WRITE = 2 pkg syscall (linux-arm), const PR_CAPBSET_DROP = 24 pkg syscall (linux-arm), const PR_CAPBSET_READ = 23 pkg syscall (linux-arm), const PR_CLEAR_SECCOMP_FILTER = 37 pkg syscall (linux-arm), const PR_ENDIAN_BIG = 0 pkg syscall (linux-arm), const PR_ENDIAN_LITTLE = 1 pkg syscall (linux-arm), const PR_ENDIAN_PPC_LITTLE = 2 pkg syscall (linux-arm), const PR_FPEMU_NOPRINT = 1 pkg syscall (linux-arm), const PR_FPEMU_SIGFPE = 2 pkg syscall (linux-arm), const PR_FP_EXC_ASYNC = 2 pkg syscall (linux-arm), const PR_FP_EXC_DISABLED = 0 pkg syscall (linux-arm), const PR_FP_EXC_DIV = 65536 pkg syscall (linux-arm), const PR_FP_EXC_INV = 1048576 pkg syscall (linux-arm), const PR_FP_EXC_NONRECOV = 1 pkg syscall (linux-arm), const PR_FP_EXC_OVF = 131072 pkg syscall (linux-arm), const PR_FP_EXC_PRECISE = 3 pkg syscall (linux-arm), const PR_FP_EXC_RES = 524288 pkg syscall (linux-arm), const PR_FP_EXC_SW_ENABLE = 128 pkg syscall (linux-arm), const PR_FP_EXC_UND = 262144 pkg syscall (linux-arm), const PR_GET_DUMPABLE = 3 pkg syscall (linux-arm), const PR_GET_ENDIAN = 19 pkg syscall (linux-arm), const PR_GET_FPEMU = 9 pkg syscall (linux-arm), const PR_GET_FPEXC = 11 pkg syscall (linux-arm), const PR_GET_KEEPCAPS = 7 pkg syscall (linux-arm), const PR_GET_NAME = 16 pkg syscall (linux-arm), const PR_GET_PDEATHSIG = 2 pkg syscall (linux-arm), const PR_GET_SECCOMP = 21 pkg syscall (linux-arm), const PR_GET_SECCOMP_FILTER = 35 pkg syscall (linux-arm), const PR_GET_SECUREBITS = 27 pkg syscall (linux-arm), const PR_GET_TIMERSLACK = 30 pkg syscall (linux-arm), const PR_GET_TIMING = 13 pkg syscall (linux-arm), const PR_GET_TSC = 25 pkg syscall (linux-arm), const PR_GET_UNALIGN = 5 pkg syscall (linux-arm), const PR_MCE_KILL = 33 pkg syscall (linux-arm), const PR_MCE_KILL_CLEAR = 0 pkg syscall (linux-arm), const PR_MCE_KILL_DEFAULT = 2 pkg syscall (linux-arm), const PR_MCE_KILL_EARLY = 1 pkg syscall (linux-arm), const PR_MCE_KILL_GET = 34 pkg syscall (linux-arm), const PR_MCE_KILL_LATE = 0 pkg syscall (linux-arm), const PR_MCE_KILL_SET = 1 pkg syscall (linux-arm), const PR_SECCOMP_FILTER_EVENT = 1 pkg syscall (linux-arm), const PR_SECCOMP_FILTER_SYSCALL = 0 pkg syscall (linux-arm), const PR_SET_DUMPABLE = 4 pkg syscall (linux-arm), const PR_SET_ENDIAN = 20 pkg syscall (linux-arm), const PR_SET_FPEMU = 10 pkg syscall (linux-arm), const PR_SET_FPEXC = 12 pkg syscall (linux-arm), const PR_SET_KEEPCAPS = 8 pkg syscall (linux-arm), const PR_SET_NAME = 15 pkg syscall (linux-arm), const PR_SET_PDEATHSIG = 1 pkg syscall (linux-arm), const PR_SET_PTRACER = 1499557217 pkg syscall (linux-arm), const PR_SET_SECCOMP = 22 pkg syscall (linux-arm), const PR_SET_SECCOMP_FILTER = 36 pkg syscall (linux-arm), const PR_SET_SECUREBITS = 28 pkg syscall (linux-arm), const PR_SET_TIMERSLACK = 29 pkg syscall (linux-arm), const PR_SET_TIMING = 14 pkg syscall (linux-arm), const PR_SET_TSC = 26 pkg syscall (linux-arm), const PR_SET_UNALIGN = 6 pkg syscall (linux-arm), const PR_TASK_PERF_EVENTS_DISABLE = 31 pkg syscall (linux-arm), const PR_TASK_PERF_EVENTS_ENABLE = 32 pkg syscall (linux-arm), const PR_TIMING_STATISTICAL = 0 pkg syscall (linux-arm), const PR_TIMING_TIMESTAMP = 1 pkg syscall (linux-arm), const PR_TSC_ENABLE = 1 pkg syscall (linux-arm), const PR_TSC_SIGSEGV = 2 pkg syscall (linux-arm), const PR_UNALIGN_NOPRINT = 1 pkg syscall (linux-arm), const PR_UNALIGN_SIGBUS = 2 pkg syscall (linux-arm), const PTRACE_ATTACH = 16 pkg syscall (linux-arm), const PTRACE_CONT = 7 pkg syscall (linux-arm), const PTRACE_DETACH = 17 pkg syscall (linux-arm), const PTRACE_EVENT_CLONE = 3 pkg syscall (linux-arm), const PTRACE_EVENT_EXEC = 4 pkg syscall (linux-arm), const PTRACE_EVENT_EXIT = 6 pkg syscall (linux-arm), const PTRACE_EVENT_FORK = 1 pkg syscall (linux-arm), const PTRACE_EVENT_VFORK = 2 pkg syscall (linux-arm), const PTRACE_EVENT_VFORK_DONE = 5 pkg syscall (linux-arm), const PTRACE_GETCRUNCHREGS = 25 pkg syscall (linux-arm), const PTRACE_GETEVENTMSG = 16897 pkg syscall (linux-arm), const PTRACE_GETFPREGS = 14 pkg syscall (linux-arm), const PTRACE_GETHBPREGS = 29 pkg syscall (linux-arm), const PTRACE_GETREGS = 12 pkg syscall (linux-arm), const PTRACE_GETREGSET = 16900 pkg syscall (linux-arm), const PTRACE_GETSIGINFO = 16898 pkg syscall (linux-arm), const PTRACE_GETVFPREGS = 27 pkg syscall (linux-arm), const PTRACE_GETWMMXREGS = 18 pkg syscall (linux-arm), const PTRACE_GET_THREAD_AREA = 22 pkg syscall (linux-arm), const PTRACE_KILL = 8 pkg syscall (linux-arm), const PTRACE_OLDSETOPTIONS = 21 pkg syscall (linux-arm), const PTRACE_O_MASK = 127 pkg syscall (linux-arm), const PTRACE_O_TRACECLONE = 8 pkg syscall (linux-arm), const PTRACE_O_TRACEEXEC = 16 pkg syscall (linux-arm), const PTRACE_O_TRACEEXIT = 64 pkg syscall (linux-arm), const PTRACE_O_TRACEFORK = 2 pkg syscall (linux-arm), const PTRACE_O_TRACESYSGOOD = 1 pkg syscall (linux-arm), const PTRACE_O_TRACEVFORK = 4 pkg syscall (linux-arm), const PTRACE_O_TRACEVFORKDONE = 32 pkg syscall (linux-arm), const PTRACE_PEEKDATA = 2 pkg syscall (linux-arm), const PTRACE_PEEKTEXT = 1 pkg syscall (linux-arm), const PTRACE_PEEKUSR = 3 pkg syscall (linux-arm), const PTRACE_POKEDATA = 5 pkg syscall (linux-arm), const PTRACE_POKETEXT = 4 pkg syscall (linux-arm), const PTRACE_POKEUSR = 6 pkg syscall (linux-arm), const PTRACE_SETCRUNCHREGS = 26 pkg syscall (linux-arm), const PTRACE_SETFPREGS = 15 pkg syscall (linux-arm), const PTRACE_SETHBPREGS = 30 pkg syscall (linux-arm), const PTRACE_SETOPTIONS = 16896 pkg syscall (linux-arm), const PTRACE_SETREGS = 13 pkg syscall (linux-arm), const PTRACE_SETREGSET = 16901 pkg syscall (linux-arm), const PTRACE_SETSIGINFO = 16899 pkg syscall (linux-arm), const PTRACE_SETVFPREGS = 28 pkg syscall (linux-arm), const PTRACE_SETWMMXREGS = 19 pkg syscall (linux-arm), const PTRACE_SET_SYSCALL = 23 pkg syscall (linux-arm), const PTRACE_SINGLESTEP = 9 pkg syscall (linux-arm), const PTRACE_SYSCALL = 24 pkg syscall (linux-arm), const PTRACE_TRACEME = 0 pkg syscall (linux-arm), const PT_DATA_ADDR = 65540 pkg syscall (linux-arm), const PT_TEXT_ADDR = 65536 pkg syscall (linux-arm), const PT_TEXT_END_ADDR = 65544 pkg syscall (linux-arm), const PathMax = 4096 pkg syscall (linux-arm), const RLIMIT_AS = 9 pkg syscall (linux-arm), const RLIMIT_CORE = 4 pkg syscall (linux-arm), const RLIMIT_CPU = 0 pkg syscall (linux-arm), const RLIMIT_DATA = 2 pkg syscall (linux-arm), const RLIMIT_FSIZE = 1 pkg syscall (linux-arm), const RLIMIT_NOFILE = 7 pkg syscall (linux-arm), const RLIMIT_STACK = 3 pkg syscall (linux-arm), const RLIM_INFINITY = -1 pkg syscall (linux-arm), const RTAX_ADVMSS = 8 pkg syscall (linux-arm), const RTAX_CWND = 7 pkg syscall (linux-arm), const RTAX_FEATURES = 12 pkg syscall (linux-arm), const RTAX_FEATURE_ALLFRAG = 8 pkg syscall (linux-arm), const RTAX_FEATURE_ECN = 1 pkg syscall (linux-arm), const RTAX_FEATURE_SACK = 2 pkg syscall (linux-arm), const RTAX_FEATURE_TIMESTAMP = 4 pkg syscall (linux-arm), const RTAX_HOPLIMIT = 10 pkg syscall (linux-arm), const RTAX_INITCWND = 11 pkg syscall (linux-arm), const RTAX_INITRWND = 14 pkg syscall (linux-arm), const RTAX_LOCK = 1 pkg syscall (linux-arm), const RTAX_MAX = 14 pkg syscall (linux-arm), const RTAX_MTU = 2 pkg syscall (linux-arm), const RTAX_REORDERING = 9 pkg syscall (linux-arm), const RTAX_RTO_MIN = 13 pkg syscall (linux-arm), const RTAX_RTT = 4 pkg syscall (linux-arm), const RTAX_RTTVAR = 5 pkg syscall (linux-arm), const RTAX_SSTHRESH = 6 pkg syscall (linux-arm), const RTAX_UNSPEC = 0 pkg syscall (linux-arm), const RTAX_WINDOW = 3 pkg syscall (linux-arm), const RTA_ALIGNTO = 4 pkg syscall (linux-arm), const RTA_CACHEINFO = 12 pkg syscall (linux-arm), const RTA_DST = 1 pkg syscall (linux-arm), const RTA_FLOW = 11 pkg syscall (linux-arm), const RTA_GATEWAY = 5 pkg syscall (linux-arm), const RTA_IIF = 3 pkg syscall (linux-arm), const RTA_MAX = 16 pkg syscall (linux-arm), const RTA_METRICS = 8 pkg syscall (linux-arm), const RTA_MULTIPATH = 9 pkg syscall (linux-arm), const RTA_OIF = 4 pkg syscall (linux-arm), const RTA_PREFSRC = 7 pkg syscall (linux-arm), const RTA_PRIORITY = 6 pkg syscall (linux-arm), const RTA_SRC = 2 pkg syscall (linux-arm), const RTA_TABLE = 15 pkg syscall (linux-arm), const RTA_UNSPEC = 0 pkg syscall (linux-arm), const RTCF_DIRECTSRC = 67108864 pkg syscall (linux-arm), const RTCF_DOREDIRECT = 16777216 pkg syscall (linux-arm), const RTCF_LOG = 33554432 pkg syscall (linux-arm), const RTCF_MASQ = 4194304 pkg syscall (linux-arm), const RTCF_NAT = 8388608 pkg syscall (linux-arm), const RTCF_VALVE = 2097152 pkg syscall (linux-arm), const RTF_ADDRCLASSMASK = 4160749568 pkg syscall (linux-arm), const RTF_ADDRCONF = 262144 pkg syscall (linux-arm), const RTF_ALLONLINK = 131072 pkg syscall (linux-arm), const RTF_BROADCAST = 268435456 pkg syscall (linux-arm), const RTF_CACHE = 16777216 pkg syscall (linux-arm), const RTF_DEFAULT = 65536 pkg syscall (linux-arm), const RTF_DYNAMIC = 16 pkg syscall (linux-arm), const RTF_FLOW = 33554432 pkg syscall (linux-arm), const RTF_GATEWAY = 2 pkg syscall (linux-arm), const RTF_HOST = 4 pkg syscall (linux-arm), const RTF_INTERFACE = 1073741824 pkg syscall (linux-arm), const RTF_IRTT = 256 pkg syscall (linux-arm), const RTF_LINKRT = 1048576 pkg syscall (linux-arm), const RTF_LOCAL = 2147483648 pkg syscall (linux-arm), const RTF_MODIFIED = 32 pkg syscall (linux-arm), const RTF_MSS = 64 pkg syscall (linux-arm), const RTF_MTU = 64 pkg syscall (linux-arm), const RTF_MULTICAST = 536870912 pkg syscall (linux-arm), const RTF_NAT = 134217728 pkg syscall (linux-arm), const RTF_NOFORWARD = 4096 pkg syscall (linux-arm), const RTF_NONEXTHOP = 2097152 pkg syscall (linux-arm), const RTF_NOPMTUDISC = 16384 pkg syscall (linux-arm), const RTF_POLICY = 67108864 pkg syscall (linux-arm), const RTF_REINSTATE = 8 pkg syscall (linux-arm), const RTF_REJECT = 512 pkg syscall (linux-arm), const RTF_STATIC = 1024 pkg syscall (linux-arm), const RTF_THROW = 8192 pkg syscall (linux-arm), const RTF_UP = 1 pkg syscall (linux-arm), const RTF_WINDOW = 128 pkg syscall (linux-arm), const RTF_XRESOLVE = 2048 pkg syscall (linux-arm), const RTM_BASE = 16 pkg syscall (linux-arm), const RTM_DELACTION = 49 pkg syscall (linux-arm), const RTM_DELADDR = 21 pkg syscall (linux-arm), const RTM_DELADDRLABEL = 73 pkg syscall (linux-arm), const RTM_DELLINK = 17 pkg syscall (linux-arm), const RTM_DELNEIGH = 29 pkg syscall (linux-arm), const RTM_DELQDISC = 37 pkg syscall (linux-arm), const RTM_DELROUTE = 25 pkg syscall (linux-arm), const RTM_DELRULE = 33 pkg syscall (linux-arm), const RTM_DELTCLASS = 41 pkg syscall (linux-arm), const RTM_DELTFILTER = 45 pkg syscall (linux-arm), const RTM_F_CLONED = 512 pkg syscall (linux-arm), const RTM_F_EQUALIZE = 1024 pkg syscall (linux-arm), const RTM_F_NOTIFY = 256 pkg syscall (linux-arm), const RTM_F_PREFIX = 2048 pkg syscall (linux-arm), const RTM_GETACTION = 50 pkg syscall (linux-arm), const RTM_GETADDR = 22 pkg syscall (linux-arm), const RTM_GETADDRLABEL = 74 pkg syscall (linux-arm), const RTM_GETANYCAST = 62 pkg syscall (linux-arm), const RTM_GETDCB = 78 pkg syscall (linux-arm), const RTM_GETLINK = 18 pkg syscall (linux-arm), const RTM_GETMULTICAST = 58 pkg syscall (linux-arm), const RTM_GETNEIGH = 30 pkg syscall (linux-arm), const RTM_GETNEIGHTBL = 66 pkg syscall (linux-arm), const RTM_GETQDISC = 38 pkg syscall (linux-arm), const RTM_GETROUTE = 26 pkg syscall (linux-arm), const RTM_GETRULE = 34 pkg syscall (linux-arm), const RTM_GETTCLASS = 42 pkg syscall (linux-arm), const RTM_GETTFILTER = 46 pkg syscall (linux-arm), const RTM_MAX = 79 pkg syscall (linux-arm), const RTM_NEWACTION = 48 pkg syscall (linux-arm), const RTM_NEWADDR = 20 pkg syscall (linux-arm), const RTM_NEWADDRLABEL = 72 pkg syscall (linux-arm), const RTM_NEWLINK = 16 pkg syscall (linux-arm), const RTM_NEWNDUSEROPT = 68 pkg syscall (linux-arm), const RTM_NEWNEIGH = 28 pkg syscall (linux-arm), const RTM_NEWNEIGHTBL = 64 pkg syscall (linux-arm), const RTM_NEWPREFIX = 52 pkg syscall (linux-arm), const RTM_NEWQDISC = 36 pkg syscall (linux-arm), const RTM_NEWROUTE = 24 pkg syscall (linux-arm), const RTM_NEWRULE = 32 pkg syscall (linux-arm), const RTM_NEWTCLASS = 40 pkg syscall (linux-arm), const RTM_NEWTFILTER = 44 pkg syscall (linux-arm), const RTM_NR_FAMILIES = 16 pkg syscall (linux-arm), const RTM_NR_MSGTYPES = 64 pkg syscall (linux-arm), const RTM_SETDCB = 79 pkg syscall (linux-arm), const RTM_SETLINK = 19 pkg syscall (linux-arm), const RTM_SETNEIGHTBL = 67 pkg syscall (linux-arm), const RTNH_ALIGNTO = 4 pkg syscall (linux-arm), const RTNH_F_DEAD = 1 pkg syscall (linux-arm), const RTNH_F_ONLINK = 4 pkg syscall (linux-arm), const RTNH_F_PERVASIVE = 2 pkg syscall (linux-arm), const RTNLGRP_IPV4_IFADDR = 5 pkg syscall (linux-arm), const RTNLGRP_IPV4_IFADDR ideal-int pkg syscall (linux-arm), const RTNLGRP_IPV4_MROUTE = 6 pkg syscall (linux-arm), const RTNLGRP_IPV4_MROUTE ideal-int pkg syscall (linux-arm), const RTNLGRP_IPV4_ROUTE = 7 pkg syscall (linux-arm), const RTNLGRP_IPV4_ROUTE ideal-int pkg syscall (linux-arm), const RTNLGRP_IPV4_RULE = 8 pkg syscall (linux-arm), const RTNLGRP_IPV4_RULE ideal-int pkg syscall (linux-arm), const RTNLGRP_IPV6_IFADDR = 9 pkg syscall (linux-arm), const RTNLGRP_IPV6_IFADDR ideal-int pkg syscall (linux-arm), const RTNLGRP_IPV6_IFINFO = 12 pkg syscall (linux-arm), const RTNLGRP_IPV6_IFINFO ideal-int pkg syscall (linux-arm), const RTNLGRP_IPV6_MROUTE = 10 pkg syscall (linux-arm), const RTNLGRP_IPV6_MROUTE ideal-int pkg syscall (linux-arm), const RTNLGRP_IPV6_PREFIX = 18 pkg syscall (linux-arm), const RTNLGRP_IPV6_PREFIX ideal-int pkg syscall (linux-arm), const RTNLGRP_IPV6_ROUTE = 11 pkg syscall (linux-arm), const RTNLGRP_IPV6_ROUTE ideal-int pkg syscall (linux-arm), const RTNLGRP_IPV6_RULE = 19 pkg syscall (linux-arm), const RTNLGRP_IPV6_RULE ideal-int pkg syscall (linux-arm), const RTNLGRP_LINK = 1 pkg syscall (linux-arm), const RTNLGRP_LINK ideal-int pkg syscall (linux-arm), const RTNLGRP_ND_USEROPT = 20 pkg syscall (linux-arm), const RTNLGRP_ND_USEROPT ideal-int pkg syscall (linux-arm), const RTNLGRP_NEIGH = 3 pkg syscall (linux-arm), const RTNLGRP_NEIGH ideal-int pkg syscall (linux-arm), const RTNLGRP_NONE = 0 pkg syscall (linux-arm), const RTNLGRP_NONE ideal-int pkg syscall (linux-arm), const RTNLGRP_NOTIFY = 2 pkg syscall (linux-arm), const RTNLGRP_NOTIFY ideal-int pkg syscall (linux-arm), const RTNLGRP_TC = 4 pkg syscall (linux-arm), const RTNLGRP_TC ideal-int pkg syscall (linux-arm), const RTN_ANYCAST = 4 pkg syscall (linux-arm), const RTN_BLACKHOLE = 6 pkg syscall (linux-arm), const RTN_BROADCAST = 3 pkg syscall (linux-arm), const RTN_LOCAL = 2 pkg syscall (linux-arm), const RTN_MAX = 11 pkg syscall (linux-arm), const RTN_MULTICAST = 5 pkg syscall (linux-arm), const RTN_NAT = 10 pkg syscall (linux-arm), const RTN_PROHIBIT = 8 pkg syscall (linux-arm), const RTN_THROW = 9 pkg syscall (linux-arm), const RTN_UNICAST = 1 pkg syscall (linux-arm), const RTN_UNREACHABLE = 7 pkg syscall (linux-arm), const RTN_UNSPEC = 0 pkg syscall (linux-arm), const RTN_XRESOLVE = 11 pkg syscall (linux-arm), const RTPROT_BIRD = 12 pkg syscall (linux-arm), const RTPROT_BOOT = 3 pkg syscall (linux-arm), const RTPROT_DHCP = 16 pkg syscall (linux-arm), const RTPROT_DNROUTED = 13 pkg syscall (linux-arm), const RTPROT_GATED = 8 pkg syscall (linux-arm), const RTPROT_KERNEL = 2 pkg syscall (linux-arm), const RTPROT_MRT = 10 pkg syscall (linux-arm), const RTPROT_NTK = 15 pkg syscall (linux-arm), const RTPROT_RA = 9 pkg syscall (linux-arm), const RTPROT_REDIRECT = 1 pkg syscall (linux-arm), const RTPROT_STATIC = 4 pkg syscall (linux-arm), const RTPROT_UNSPEC = 0 pkg syscall (linux-arm), const RTPROT_XORP = 14 pkg syscall (linux-arm), const RTPROT_ZEBRA = 11 pkg syscall (linux-arm), const RT_CLASS_DEFAULT = 253 pkg syscall (linux-arm), const RT_CLASS_LOCAL = 255 pkg syscall (linux-arm), const RT_CLASS_MAIN = 254 pkg syscall (linux-arm), const RT_CLASS_MAX = 255 pkg syscall (linux-arm), const RT_CLASS_UNSPEC = 0 pkg syscall (linux-arm), const RT_SCOPE_HOST = 254 pkg syscall (linux-arm), const RT_SCOPE_LINK = 253 pkg syscall (linux-arm), const RT_SCOPE_NOWHERE = 255 pkg syscall (linux-arm), const RT_SCOPE_SITE = 200 pkg syscall (linux-arm), const RT_SCOPE_UNIVERSE = 0 pkg syscall (linux-arm), const RT_TABLE_COMPAT = 252 pkg syscall (linux-arm), const RT_TABLE_DEFAULT = 253 pkg syscall (linux-arm), const RT_TABLE_LOCAL = 255 pkg syscall (linux-arm), const RT_TABLE_MAIN = 254 pkg syscall (linux-arm), const RT_TABLE_MAX = 4294967295 pkg syscall (linux-arm), const RT_TABLE_UNSPEC = 0 pkg syscall (linux-arm), const RUSAGE_CHILDREN = -1 pkg syscall (linux-arm), const RUSAGE_SELF = 0 pkg syscall (linux-arm), const RUSAGE_THREAD = 1 pkg syscall (linux-arm), const SCM_CREDENTIALS = 2 pkg syscall (linux-arm), const SCM_RIGHTS = 1 pkg syscall (linux-arm), const SCM_TIMESTAMP = 29 pkg syscall (linux-arm), const SCM_TIMESTAMPING = 37 pkg syscall (linux-arm), const SCM_TIMESTAMPNS = 35 pkg syscall (linux-arm), const SIGBUS = 7 pkg syscall (linux-arm), const SIGCHLD = 17 pkg syscall (linux-arm), const SIGCLD = 17 pkg syscall (linux-arm), const SIGCONT = 18 pkg syscall (linux-arm), const SIGIO = 29 pkg syscall (linux-arm), const SIGIOT = 6 pkg syscall (linux-arm), const SIGPOLL = 29 pkg syscall (linux-arm), const SIGPROF = 27 pkg syscall (linux-arm), const SIGPWR = 30 pkg syscall (linux-arm), const SIGSTKFLT = 16 pkg syscall (linux-arm), const SIGSTOP = 19 pkg syscall (linux-arm), const SIGSYS = 31 pkg syscall (linux-arm), const SIGTSTP = 20 pkg syscall (linux-arm), const SIGTTIN = 21 pkg syscall (linux-arm), const SIGTTOU = 22 pkg syscall (linux-arm), const SIGUNUSED = 31 pkg syscall (linux-arm), const SIGURG = 23 pkg syscall (linux-arm), const SIGUSR1 = 10 pkg syscall (linux-arm), const SIGUSR2 = 12 pkg syscall (linux-arm), const SIGVTALRM = 26 pkg syscall (linux-arm), const SIGWINCH = 28 pkg syscall (linux-arm), const SIGXCPU = 24 pkg syscall (linux-arm), const SIGXFSZ = 25 pkg syscall (linux-arm), const SIOCADDDLCI = 35200 pkg syscall (linux-arm), const SIOCADDMULTI = 35121 pkg syscall (linux-arm), const SIOCADDRT = 35083 pkg syscall (linux-arm), const SIOCATMARK = 35077 pkg syscall (linux-arm), const SIOCDARP = 35155 pkg syscall (linux-arm), const SIOCDELDLCI = 35201 pkg syscall (linux-arm), const SIOCDELMULTI = 35122 pkg syscall (linux-arm), const SIOCDELRT = 35084 pkg syscall (linux-arm), const SIOCDEVPRIVATE = 35312 pkg syscall (linux-arm), const SIOCDIFADDR = 35126 pkg syscall (linux-arm), const SIOCDRARP = 35168 pkg syscall (linux-arm), const SIOCGARP = 35156 pkg syscall (linux-arm), const SIOCGIFADDR = 35093 pkg syscall (linux-arm), const SIOCGIFBR = 35136 pkg syscall (linux-arm), const SIOCGIFBRDADDR = 35097 pkg syscall (linux-arm), const SIOCGIFCONF = 35090 pkg syscall (linux-arm), const SIOCGIFCOUNT = 35128 pkg syscall (linux-arm), const SIOCGIFDSTADDR = 35095 pkg syscall (linux-arm), const SIOCGIFENCAP = 35109 pkg syscall (linux-arm), const SIOCGIFFLAGS = 35091 pkg syscall (linux-arm), const SIOCGIFHWADDR = 35111 pkg syscall (linux-arm), const SIOCGIFINDEX = 35123 pkg syscall (linux-arm), const SIOCGIFMAP = 35184 pkg syscall (linux-arm), const SIOCGIFMEM = 35103 pkg syscall (linux-arm), const SIOCGIFMETRIC = 35101 pkg syscall (linux-arm), const SIOCGIFMTU = 35105 pkg syscall (linux-arm), const SIOCGIFNAME = 35088 pkg syscall (linux-arm), const SIOCGIFNETMASK = 35099 pkg syscall (linux-arm), const SIOCGIFPFLAGS = 35125 pkg syscall (linux-arm), const SIOCGIFSLAVE = 35113 pkg syscall (linux-arm), const SIOCGIFTXQLEN = 35138 pkg syscall (linux-arm), const SIOCGPGRP = 35076 pkg syscall (linux-arm), const SIOCGRARP = 35169 pkg syscall (linux-arm), const SIOCGSTAMP = 35078 pkg syscall (linux-arm), const SIOCGSTAMPNS = 35079 pkg syscall (linux-arm), const SIOCPROTOPRIVATE = 35296 pkg syscall (linux-arm), const SIOCRTMSG = 35085 pkg syscall (linux-arm), const SIOCSARP = 35157 pkg syscall (linux-arm), const SIOCSIFADDR = 35094 pkg syscall (linux-arm), const SIOCSIFBR = 35137 pkg syscall (linux-arm), const SIOCSIFBRDADDR = 35098 pkg syscall (linux-arm), const SIOCSIFDSTADDR = 35096 pkg syscall (linux-arm), const SIOCSIFENCAP = 35110 pkg syscall (linux-arm), const SIOCSIFFLAGS = 35092 pkg syscall (linux-arm), const SIOCSIFHWADDR = 35108 pkg syscall (linux-arm), const SIOCSIFHWBROADCAST = 35127 pkg syscall (linux-arm), const SIOCSIFLINK = 35089 pkg syscall (linux-arm), const SIOCSIFMAP = 35185 pkg syscall (linux-arm), const SIOCSIFMEM = 35104 pkg syscall (linux-arm), const SIOCSIFMETRIC = 35102 pkg syscall (linux-arm), const SIOCSIFMTU = 35106 pkg syscall (linux-arm), const SIOCSIFNAME = 35107 pkg syscall (linux-arm), const SIOCSIFNETMASK = 35100 pkg syscall (linux-arm), const SIOCSIFPFLAGS = 35124 pkg syscall (linux-arm), const SIOCSIFSLAVE = 35120 pkg syscall (linux-arm), const SIOCSIFTXQLEN = 35139 pkg syscall (linux-arm), const SIOCSPGRP = 35074 pkg syscall (linux-arm), const SIOCSRARP = 35170 pkg syscall (linux-arm), const SOCK_CLOEXEC = 524288 pkg syscall (linux-arm), const SOCK_DCCP = 6 pkg syscall (linux-arm), const SOCK_NONBLOCK = 2048 pkg syscall (linux-arm), const SOCK_PACKET = 10 pkg syscall (linux-arm), const SOCK_RDM = 4 pkg syscall (linux-arm), const SOL_AAL = 265 pkg syscall (linux-arm), const SOL_ATM = 264 pkg syscall (linux-arm), const SOL_DECNET = 261 pkg syscall (linux-arm), const SOL_ICMPV6 = 58 pkg syscall (linux-arm), const SOL_IP = 0 pkg syscall (linux-arm), const SOL_IPV6 = 41 pkg syscall (linux-arm), const SOL_IRDA = 266 pkg syscall (linux-arm), const SOL_PACKET = 263 pkg syscall (linux-arm), const SOL_RAW = 255 pkg syscall (linux-arm), const SOL_SOCKET = 1 pkg syscall (linux-arm), const SOL_TCP = 6 pkg syscall (linux-arm), const SOL_X25 = 262 pkg syscall (linux-arm), const SOMAXCONN = 128 pkg syscall (linux-arm), const SO_ACCEPTCONN = 30 pkg syscall (linux-arm), const SO_ATTACH_FILTER = 26 pkg syscall (linux-arm), const SO_BINDTODEVICE = 25 pkg syscall (linux-arm), const SO_BROADCAST = 6 pkg syscall (linux-arm), const SO_BSDCOMPAT = 14 pkg syscall (linux-arm), const SO_DEBUG = 1 pkg syscall (linux-arm), const SO_DETACH_FILTER = 27 pkg syscall (linux-arm), const SO_DOMAIN = 39 pkg syscall (linux-arm), const SO_DONTROUTE = 5 pkg syscall (linux-arm), const SO_ERROR = 4 pkg syscall (linux-arm), const SO_KEEPALIVE = 9 pkg syscall (linux-arm), const SO_LINGER = 13 pkg syscall (linux-arm), const SO_MARK = 36 pkg syscall (linux-arm), const SO_NO_CHECK = 11 pkg syscall (linux-arm), const SO_OOBINLINE = 10 pkg syscall (linux-arm), const SO_PASSCRED = 16 pkg syscall (linux-arm), const SO_PASSSEC = 34 pkg syscall (linux-arm), const SO_PEERCRED = 17 pkg syscall (linux-arm), const SO_PEERNAME = 28 pkg syscall (linux-arm), const SO_PEERSEC = 31 pkg syscall (linux-arm), const SO_PRIORITY = 12 pkg syscall (linux-arm), const SO_PROTOCOL = 38 pkg syscall (linux-arm), const SO_RCVBUF = 8 pkg syscall (linux-arm), const SO_RCVBUFFORCE = 33 pkg syscall (linux-arm), const SO_RCVLOWAT = 18 pkg syscall (linux-arm), const SO_RCVTIMEO = 20 pkg syscall (linux-arm), const SO_REUSEADDR = 2 pkg syscall (linux-arm), const SO_RXQ_OVFL = 40 pkg syscall (linux-arm), const SO_SECURITY_AUTHENTICATION = 22 pkg syscall (linux-arm), const SO_SECURITY_ENCRYPTION_NETWORK = 24 pkg syscall (linux-arm), const SO_SECURITY_ENCRYPTION_TRANSPORT = 23 pkg syscall (linux-arm), const SO_SNDBUF = 7 pkg syscall (linux-arm), const SO_SNDBUFFORCE = 32 pkg syscall (linux-arm), const SO_SNDLOWAT = 19 pkg syscall (linux-arm), const SO_SNDTIMEO = 21 pkg syscall (linux-arm), const SO_TIMESTAMP = 29 pkg syscall (linux-arm), const SO_TIMESTAMPING = 37 pkg syscall (linux-arm), const SO_TIMESTAMPNS = 35 pkg syscall (linux-arm), const SO_TYPE = 3 pkg syscall (linux-arm), const SYS_ACCEPT = 285 pkg syscall (linux-arm), const SYS_ACCEPT4 = 366 pkg syscall (linux-arm), const SYS_ACCESS = 33 pkg syscall (linux-arm), const SYS_ACCT = 51 pkg syscall (linux-arm), const SYS_ADD_KEY = 309 pkg syscall (linux-arm), const SYS_ADJTIMEX = 124 pkg syscall (linux-arm), const SYS_ALARM = 27 pkg syscall (linux-arm), const SYS_ARM_FADVISE64_64 = 270 pkg syscall (linux-arm), const SYS_ARM_SYNC_FILE_RANGE = 341 pkg syscall (linux-arm), const SYS_BDFLUSH = 134 pkg syscall (linux-arm), const SYS_BIND = 282 pkg syscall (linux-arm), const SYS_BRK = 45 pkg syscall (linux-arm), const SYS_CAPGET = 184 pkg syscall (linux-arm), const SYS_CAPSET = 185 pkg syscall (linux-arm), const SYS_CHDIR = 12 pkg syscall (linux-arm), const SYS_CHMOD = 15 pkg syscall (linux-arm), const SYS_CHOWN = 182 pkg syscall (linux-arm), const SYS_CHOWN32 = 212 pkg syscall (linux-arm), const SYS_CHROOT = 61 pkg syscall (linux-arm), const SYS_CLOCK_ADJTIME = 372 pkg syscall (linux-arm), const SYS_CLOCK_GETRES = 264 pkg syscall (linux-arm), const SYS_CLOCK_GETTIME = 263 pkg syscall (linux-arm), const SYS_CLOCK_NANOSLEEP = 265 pkg syscall (linux-arm), const SYS_CLOCK_SETTIME = 262 pkg syscall (linux-arm), const SYS_CLONE = 120 pkg syscall (linux-arm), const SYS_CLOSE = 6 pkg syscall (linux-arm), const SYS_CONNECT = 283 pkg syscall (linux-arm), const SYS_CREAT = 8 pkg syscall (linux-arm), const SYS_DELETE_MODULE = 129 pkg syscall (linux-arm), const SYS_DUP = 41 pkg syscall (linux-arm), const SYS_DUP2 = 63 pkg syscall (linux-arm), const SYS_DUP3 = 358 pkg syscall (linux-arm), const SYS_EPOLL_CREATE = 250 pkg syscall (linux-arm), const SYS_EPOLL_CREATE1 = 357 pkg syscall (linux-arm), const SYS_EPOLL_CTL = 251 pkg syscall (linux-arm), const SYS_EPOLL_PWAIT = 346 pkg syscall (linux-arm), const SYS_EPOLL_WAIT = 252 pkg syscall (linux-arm), const SYS_EVENTFD = 351 pkg syscall (linux-arm), const SYS_EVENTFD2 = 356 pkg syscall (linux-arm), const SYS_EXECVE = 11 pkg syscall (linux-arm), const SYS_EXIT = 1 pkg syscall (linux-arm), const SYS_EXIT_GROUP = 248 pkg syscall (linux-arm), const SYS_FACCESSAT = 334 pkg syscall (linux-arm), const SYS_FALLOCATE = 352 pkg syscall (linux-arm), const SYS_FANOTIFY_INIT = 367 pkg syscall (linux-arm), const SYS_FANOTIFY_MARK = 368 pkg syscall (linux-arm), const SYS_FCHDIR = 133 pkg syscall (linux-arm), const SYS_FCHMOD = 94 pkg syscall (linux-arm), const SYS_FCHMODAT = 333 pkg syscall (linux-arm), const SYS_FCHOWN = 95 pkg syscall (linux-arm), const SYS_FCHOWN32 = 207 pkg syscall (linux-arm), const SYS_FCHOWNAT = 325 pkg syscall (linux-arm), const SYS_FCNTL = 55 pkg syscall (linux-arm), const SYS_FCNTL64 = 221 pkg syscall (linux-arm), const SYS_FDATASYNC = 148 pkg syscall (linux-arm), const SYS_FGETXATTR = 231 pkg syscall (linux-arm), const SYS_FLISTXATTR = 234 pkg syscall (linux-arm), const SYS_FLOCK = 143 pkg syscall (linux-arm), const SYS_FORK = 2 pkg syscall (linux-arm), const SYS_FREMOVEXATTR = 237 pkg syscall (linux-arm), const SYS_FSETXATTR = 228 pkg syscall (linux-arm), const SYS_FSTAT = 108 pkg syscall (linux-arm), const SYS_FSTAT64 = 197 pkg syscall (linux-arm), const SYS_FSTATAT64 = 327 pkg syscall (linux-arm), const SYS_FSTATFS = 100 pkg syscall (linux-arm), const SYS_FSTATFS64 = 267 pkg syscall (linux-arm), const SYS_FSYNC = 118 pkg syscall (linux-arm), const SYS_FTRUNCATE = 93 pkg syscall (linux-arm), const SYS_FTRUNCATE64 = 194 pkg syscall (linux-arm), const SYS_FUTEX = 240 pkg syscall (linux-arm), const SYS_FUTIMESAT = 326 pkg syscall (linux-arm), const SYS_GETCPU = 345 pkg syscall (linux-arm), const SYS_GETCWD = 183 pkg syscall (linux-arm), const SYS_GETDENTS = 141 pkg syscall (linux-arm), const SYS_GETDENTS64 = 217 pkg syscall (linux-arm), const SYS_GETEGID = 50 pkg syscall (linux-arm), const SYS_GETEGID32 = 202 pkg syscall (linux-arm), const SYS_GETEUID = 49 pkg syscall (linux-arm), const SYS_GETEUID32 = 201 pkg syscall (linux-arm), const SYS_GETGID = 47 pkg syscall (linux-arm), const SYS_GETGID32 = 200 pkg syscall (linux-arm), const SYS_GETGROUPS = 80 pkg syscall (linux-arm), const SYS_GETGROUPS32 = 205 pkg syscall (linux-arm), const SYS_GETITIMER = 105 pkg syscall (linux-arm), const SYS_GETPEERNAME = 287 pkg syscall (linux-arm), const SYS_GETPGID = 132 pkg syscall (linux-arm), const SYS_GETPGRP = 65 pkg syscall (linux-arm), const SYS_GETPID = 20 pkg syscall (linux-arm), const SYS_GETPPID = 64 pkg syscall (linux-arm), const SYS_GETPRIORITY = 96 pkg syscall (linux-arm), const SYS_GETRESGID = 171 pkg syscall (linux-arm), const SYS_GETRESGID32 = 211 pkg syscall (linux-arm), const SYS_GETRESUID = 165 pkg syscall (linux-arm), const SYS_GETRESUID32 = 209 pkg syscall (linux-arm), const SYS_GETRLIMIT = 76 pkg syscall (linux-arm), const SYS_GETRUSAGE = 77 pkg syscall (linux-arm), const SYS_GETSID = 147 pkg syscall (linux-arm), const SYS_GETSOCKNAME = 286 pkg syscall (linux-arm), const SYS_GETSOCKOPT = 295 pkg syscall (linux-arm), const SYS_GETTID = 224 pkg syscall (linux-arm), const SYS_GETTIMEOFDAY = 78 pkg syscall (linux-arm), const SYS_GETUID = 24 pkg syscall (linux-arm), const SYS_GETUID32 = 199 pkg syscall (linux-arm), const SYS_GETXATTR = 229 pkg syscall (linux-arm), const SYS_GET_MEMPOLICY = 320 pkg syscall (linux-arm), const SYS_GET_ROBUST_LIST = 339 pkg syscall (linux-arm), const SYS_INIT_MODULE = 128 pkg syscall (linux-arm), const SYS_INOTIFY_ADD_WATCH = 317 pkg syscall (linux-arm), const SYS_INOTIFY_INIT = 316 pkg syscall (linux-arm), const SYS_INOTIFY_INIT1 = 360 pkg syscall (linux-arm), const SYS_INOTIFY_RM_WATCH = 318 pkg syscall (linux-arm), const SYS_IOCTL = 54 pkg syscall (linux-arm), const SYS_IOPRIO_GET = 315 pkg syscall (linux-arm), const SYS_IOPRIO_SET = 314 pkg syscall (linux-arm), const SYS_IO_CANCEL = 247 pkg syscall (linux-arm), const SYS_IO_DESTROY = 244 pkg syscall (linux-arm), const SYS_IO_GETEVENTS = 245 pkg syscall (linux-arm), const SYS_IO_SETUP = 243 pkg syscall (linux-arm), const SYS_IO_SUBMIT = 246 pkg syscall (linux-arm), const SYS_IPC = 117 pkg syscall (linux-arm), const SYS_KEXEC_LOAD = 347 pkg syscall (linux-arm), const SYS_KEYCTL = 311 pkg syscall (linux-arm), const SYS_KILL = 37 pkg syscall (linux-arm), const SYS_LCHOWN = 16 pkg syscall (linux-arm), const SYS_LCHOWN32 = 198 pkg syscall (linux-arm), const SYS_LGETXATTR = 230 pkg syscall (linux-arm), const SYS_LINK = 9 pkg syscall (linux-arm), const SYS_LINKAT = 330 pkg syscall (linux-arm), const SYS_LISTEN = 284 pkg syscall (linux-arm), const SYS_LISTXATTR = 232 pkg syscall (linux-arm), const SYS_LLISTXATTR = 233 pkg syscall (linux-arm), const SYS_LOOKUP_DCOOKIE = 249 pkg syscall (linux-arm), const SYS_LREMOVEXATTR = 236 pkg syscall (linux-arm), const SYS_LSEEK = 19 pkg syscall (linux-arm), const SYS_LSETXATTR = 227 pkg syscall (linux-arm), const SYS_LSTAT = 107 pkg syscall (linux-arm), const SYS_LSTAT64 = 196 pkg syscall (linux-arm), const SYS_MADVISE = 220 pkg syscall (linux-arm), const SYS_MBIND = 319 pkg syscall (linux-arm), const SYS_MINCORE = 219 pkg syscall (linux-arm), const SYS_MKDIR = 39 pkg syscall (linux-arm), const SYS_MKDIRAT = 323 pkg syscall (linux-arm), const SYS_MKNOD = 14 pkg syscall (linux-arm), const SYS_MKNODAT = 324 pkg syscall (linux-arm), const SYS_MLOCK = 150 pkg syscall (linux-arm), const SYS_MLOCKALL = 152 pkg syscall (linux-arm), const SYS_MMAP = 90 pkg syscall (linux-arm), const SYS_MMAP2 = 192 pkg syscall (linux-arm), const SYS_MOUNT = 21 pkg syscall (linux-arm), const SYS_MOVE_PAGES = 344 pkg syscall (linux-arm), const SYS_MPROTECT = 125 pkg syscall (linux-arm), const SYS_MQ_GETSETATTR = 279 pkg syscall (linux-arm), const SYS_MQ_NOTIFY = 278 pkg syscall (linux-arm), const SYS_MQ_OPEN = 274 pkg syscall (linux-arm), const SYS_MQ_TIMEDRECEIVE = 277 pkg syscall (linux-arm), const SYS_MQ_TIMEDSEND = 276 pkg syscall (linux-arm), const SYS_MQ_UNLINK = 275 pkg syscall (linux-arm), const SYS_MREMAP = 163 pkg syscall (linux-arm), const SYS_MSGCTL = 304 pkg syscall (linux-arm), const SYS_MSGGET = 303 pkg syscall (linux-arm), const SYS_MSGRCV = 302 pkg syscall (linux-arm), const SYS_MSGSND = 301 pkg syscall (linux-arm), const SYS_MSYNC = 144 pkg syscall (linux-arm), const SYS_MUNLOCK = 151 pkg syscall (linux-arm), const SYS_MUNLOCKALL = 153 pkg syscall (linux-arm), const SYS_MUNMAP = 91 pkg syscall (linux-arm), const SYS_NAME_TO_HANDLE_AT = 370 pkg syscall (linux-arm), const SYS_NANOSLEEP = 162 pkg syscall (linux-arm), const SYS_NFSSERVCTL = 169 pkg syscall (linux-arm), const SYS_NICE = 34 pkg syscall (linux-arm), const SYS_OABI_SYSCALL_BASE = 0 pkg syscall (linux-arm), const SYS_OPEN = 5 pkg syscall (linux-arm), const SYS_OPENAT = 322 pkg syscall (linux-arm), const SYS_OPEN_BY_HANDLE_AT = 371 pkg syscall (linux-arm), const SYS_PAUSE = 29 pkg syscall (linux-arm), const SYS_PCICONFIG_IOBASE = 271 pkg syscall (linux-arm), const SYS_PCICONFIG_READ = 272 pkg syscall (linux-arm), const SYS_PCICONFIG_WRITE = 273 pkg syscall (linux-arm), const SYS_PERF_EVENT_OPEN = 364 pkg syscall (linux-arm), const SYS_PERSONALITY = 136 pkg syscall (linux-arm), const SYS_PIPE = 42 pkg syscall (linux-arm), const SYS_PIPE2 = 359 pkg syscall (linux-arm), const SYS_PIVOT_ROOT = 218 pkg syscall (linux-arm), const SYS_POLL = 168 pkg syscall (linux-arm), const SYS_PPOLL = 336 pkg syscall (linux-arm), const SYS_PRCTL = 172 pkg syscall (linux-arm), const SYS_PREAD64 = 180 pkg syscall (linux-arm), const SYS_PREADV = 361 pkg syscall (linux-arm), const SYS_PRLIMIT64 = 369 pkg syscall (linux-arm), const SYS_PROCESS_VM_READV = 376 pkg syscall (linux-arm), const SYS_PROCESS_VM_WRITEV = 377 pkg syscall (linux-arm), const SYS_PSELECT6 = 335 pkg syscall (linux-arm), const SYS_PTRACE = 26 pkg syscall (linux-arm), const SYS_PWRITE64 = 181 pkg syscall (linux-arm), const SYS_PWRITEV = 362 pkg syscall (linux-arm), const SYS_QUOTACTL = 131 pkg syscall (linux-arm), const SYS_READ = 3 pkg syscall (linux-arm), const SYS_READAHEAD = 225 pkg syscall (linux-arm), const SYS_READDIR = 89 pkg syscall (linux-arm), const SYS_READLINK = 85 pkg syscall (linux-arm), const SYS_READLINKAT = 332 pkg syscall (linux-arm), const SYS_READV = 145 pkg syscall (linux-arm), const SYS_REBOOT = 88 pkg syscall (linux-arm), const SYS_RECV = 291 pkg syscall (linux-arm), const SYS_RECVFROM = 292 pkg syscall (linux-arm), const SYS_RECVMMSG = 365 pkg syscall (linux-arm), const SYS_RECVMSG = 297 pkg syscall (linux-arm), const SYS_REMAP_FILE_PAGES = 253 pkg syscall (linux-arm), const SYS_REMOVEXATTR = 235 pkg syscall (linux-arm), const SYS_RENAME = 38 pkg syscall (linux-arm), const SYS_RENAMEAT = 329 pkg syscall (linux-arm), const SYS_REQUEST_KEY = 310 pkg syscall (linux-arm), const SYS_RESTART_SYSCALL = 0 pkg syscall (linux-arm), const SYS_RMDIR = 40 pkg syscall (linux-arm), const SYS_RT_SIGACTION = 174 pkg syscall (linux-arm), const SYS_RT_SIGPENDING = 176 pkg syscall (linux-arm), const SYS_RT_SIGPROCMASK = 175 pkg syscall (linux-arm), const SYS_RT_SIGQUEUEINFO = 178 pkg syscall (linux-arm), const SYS_RT_SIGRETURN = 173 pkg syscall (linux-arm), const SYS_RT_SIGSUSPEND = 179 pkg syscall (linux-arm), const SYS_RT_SIGTIMEDWAIT = 177 pkg syscall (linux-arm), const SYS_RT_TGSIGQUEUEINFO = 363 pkg syscall (linux-arm), const SYS_SCHED_GETAFFINITY = 242 pkg syscall (linux-arm), const SYS_SCHED_GETPARAM = 155 pkg syscall (linux-arm), const SYS_SCHED_GETSCHEDULER = 157 pkg syscall (linux-arm), const SYS_SCHED_GET_PRIORITY_MAX = 159 pkg syscall (linux-arm), const SYS_SCHED_GET_PRIORITY_MIN = 160 pkg syscall (linux-arm), const SYS_SCHED_RR_GET_INTERVAL = 161 pkg syscall (linux-arm), const SYS_SCHED_SETAFFINITY = 241 pkg syscall (linux-arm), const SYS_SCHED_SETPARAM = 154 pkg syscall (linux-arm), const SYS_SCHED_SETSCHEDULER = 156 pkg syscall (linux-arm), const SYS_SCHED_YIELD = 158 pkg syscall (linux-arm), const SYS_SELECT = 82 pkg syscall (linux-arm), const SYS_SEMCTL = 300 pkg syscall (linux-arm), const SYS_SEMGET = 299 pkg syscall (linux-arm), const SYS_SEMOP = 298 pkg syscall (linux-arm), const SYS_SEMTIMEDOP = 312 pkg syscall (linux-arm), const SYS_SEND = 289 pkg syscall (linux-arm), const SYS_SENDFILE = 187 pkg syscall (linux-arm), const SYS_SENDFILE64 = 239 pkg syscall (linux-arm), const SYS_SENDMMSG = 374 pkg syscall (linux-arm), const SYS_SENDMSG = 296 pkg syscall (linux-arm), const SYS_SENDTO = 290 pkg syscall (linux-arm), const SYS_SETDOMAINNAME = 121 pkg syscall (linux-arm), const SYS_SETFSGID = 139 pkg syscall (linux-arm), const SYS_SETFSGID32 = 216 pkg syscall (linux-arm), const SYS_SETFSUID = 138 pkg syscall (linux-arm), const SYS_SETFSUID32 = 215 pkg syscall (linux-arm), const SYS_SETGID = 46 pkg syscall (linux-arm), const SYS_SETGID32 = 214 pkg syscall (linux-arm), const SYS_SETGROUPS = 81 pkg syscall (linux-arm), const SYS_SETGROUPS32 = 206 pkg syscall (linux-arm), const SYS_SETHOSTNAME = 74 pkg syscall (linux-arm), const SYS_SETITIMER = 104 pkg syscall (linux-arm), const SYS_SETNS = 375 pkg syscall (linux-arm), const SYS_SETPGID = 57 pkg syscall (linux-arm), const SYS_SETPRIORITY = 97 pkg syscall (linux-arm), const SYS_SETREGID = 71 pkg syscall (linux-arm), const SYS_SETREGID32 = 204 pkg syscall (linux-arm), const SYS_SETRESGID = 170 pkg syscall (linux-arm), const SYS_SETRESGID32 = 210 pkg syscall (linux-arm), const SYS_SETRESUID = 164 pkg syscall (linux-arm), const SYS_SETRESUID32 = 208 pkg syscall (linux-arm), const SYS_SETREUID = 70 pkg syscall (linux-arm), const SYS_SETREUID32 = 203 pkg syscall (linux-arm), const SYS_SETRLIMIT = 75 pkg syscall (linux-arm), const SYS_SETSID = 66 pkg syscall (linux-arm), const SYS_SETSOCKOPT = 294 pkg syscall (linux-arm), const SYS_SETTIMEOFDAY = 79 pkg syscall (linux-arm), const SYS_SETUID = 23 pkg syscall (linux-arm), const SYS_SETUID32 = 213 pkg syscall (linux-arm), const SYS_SETXATTR = 226 pkg syscall (linux-arm), const SYS_SET_MEMPOLICY = 321 pkg syscall (linux-arm), const SYS_SET_ROBUST_LIST = 338 pkg syscall (linux-arm), const SYS_SET_TID_ADDRESS = 256 pkg syscall (linux-arm), const SYS_SHMAT = 305 pkg syscall (linux-arm), const SYS_SHMCTL = 308 pkg syscall (linux-arm), const SYS_SHMDT = 306 pkg syscall (linux-arm), const SYS_SHMGET = 307 pkg syscall (linux-arm), const SYS_SHUTDOWN = 293 pkg syscall (linux-arm), const SYS_SIGACTION = 67 pkg syscall (linux-arm), const SYS_SIGALTSTACK = 186 pkg syscall (linux-arm), const SYS_SIGNALFD = 349 pkg syscall (linux-arm), const SYS_SIGNALFD4 = 355 pkg syscall (linux-arm), const SYS_SIGPENDING = 73 pkg syscall (linux-arm), const SYS_SIGPROCMASK = 126 pkg syscall (linux-arm), const SYS_SIGRETURN = 119 pkg syscall (linux-arm), const SYS_SIGSUSPEND = 72 pkg syscall (linux-arm), const SYS_SOCKET = 281 pkg syscall (linux-arm), const SYS_SOCKETCALL = 102 pkg syscall (linux-arm), const SYS_SOCKETPAIR = 288 pkg syscall (linux-arm), const SYS_SPLICE = 340 pkg syscall (linux-arm), const SYS_STAT = 106 pkg syscall (linux-arm), const SYS_STAT64 = 195 pkg syscall (linux-arm), const SYS_STATFS = 99 pkg syscall (linux-arm), const SYS_STATFS64 = 266 pkg syscall (linux-arm), const SYS_STIME = 25 pkg syscall (linux-arm), const SYS_SWAPOFF = 115 pkg syscall (linux-arm), const SYS_SWAPON = 87 pkg syscall (linux-arm), const SYS_SYMLINK = 83 pkg syscall (linux-arm), const SYS_SYMLINKAT = 331 pkg syscall (linux-arm), const SYS_SYNC = 36 pkg syscall (linux-arm), const SYS_SYNCFS = 373 pkg syscall (linux-arm), const SYS_SYSCALL = 113 pkg syscall (linux-arm), const SYS_SYSCALL_BASE = 0 pkg syscall (linux-arm), const SYS_SYSFS = 135 pkg syscall (linux-arm), const SYS_SYSINFO = 116 pkg syscall (linux-arm), const SYS_SYSLOG = 103 pkg syscall (linux-arm), const SYS_TEE = 342 pkg syscall (linux-arm), const SYS_TGKILL = 268 pkg syscall (linux-arm), const SYS_TIME = 13 pkg syscall (linux-arm), const SYS_TIMERFD_CREATE = 350 pkg syscall (linux-arm), const SYS_TIMERFD_GETTIME = 354 pkg syscall (linux-arm), const SYS_TIMERFD_SETTIME = 353 pkg syscall (linux-arm), const SYS_TIMER_CREATE = 257 pkg syscall (linux-arm), const SYS_TIMER_DELETE = 261 pkg syscall (linux-arm), const SYS_TIMER_GETOVERRUN = 260 pkg syscall (linux-arm), const SYS_TIMER_GETTIME = 259 pkg syscall (linux-arm), const SYS_TIMER_SETTIME = 258 pkg syscall (linux-arm), const SYS_TIMES = 43 pkg syscall (linux-arm), const SYS_TKILL = 238 pkg syscall (linux-arm), const SYS_TRUNCATE = 92 pkg syscall (linux-arm), const SYS_TRUNCATE64 = 193 pkg syscall (linux-arm), const SYS_UGETRLIMIT = 191 pkg syscall (linux-arm), const SYS_UMASK = 60 pkg syscall (linux-arm), const SYS_UMOUNT = 22 pkg syscall (linux-arm), const SYS_UMOUNT2 = 52 pkg syscall (linux-arm), const SYS_UNAME = 122 pkg syscall (linux-arm), const SYS_UNLINK = 10 pkg syscall (linux-arm), const SYS_UNLINKAT = 328 pkg syscall (linux-arm), const SYS_UNSHARE = 337 pkg syscall (linux-arm), const SYS_USELIB = 86 pkg syscall (linux-arm), const SYS_USTAT = 62 pkg syscall (linux-arm), const SYS_UTIME = 30 pkg syscall (linux-arm), const SYS_UTIMENSAT = 348 pkg syscall (linux-arm), const SYS_UTIMES = 269 pkg syscall (linux-arm), const SYS_VFORK = 190 pkg syscall (linux-arm), const SYS_VHANGUP = 111 pkg syscall (linux-arm), const SYS_VMSPLICE = 343 pkg syscall (linux-arm), const SYS_VSERVER = 313 pkg syscall (linux-arm), const SYS_WAIT4 = 114 pkg syscall (linux-arm), const SYS_WAITID = 280 pkg syscall (linux-arm), const SYS_WRITE = 4 pkg syscall (linux-arm), const SYS_WRITEV = 146 pkg syscall (linux-arm), const SYS__LLSEEK = 140 pkg syscall (linux-arm), const SYS__NEWSELECT = 142 pkg syscall (linux-arm), const SYS__SYSCTL = 149 pkg syscall (linux-arm), const S_BLKSIZE = 512 pkg syscall (linux-arm), const S_IEXEC = 64 pkg syscall (linux-arm), const S_IFMT = 61440 pkg syscall (linux-arm), const S_IREAD = 256 pkg syscall (linux-arm), const S_IRGRP = 32 pkg syscall (linux-arm), const S_IROTH = 4 pkg syscall (linux-arm), const S_IRWXG = 56 pkg syscall (linux-arm), const S_IRWXO = 7 pkg syscall (linux-arm), const S_IRWXU = 448 pkg syscall (linux-arm), const S_IWGRP = 16 pkg syscall (linux-arm), const S_IWOTH = 2 pkg syscall (linux-arm), const S_IWRITE = 128 pkg syscall (linux-arm), const S_IXGRP = 8 pkg syscall (linux-arm), const S_IXOTH = 1 pkg syscall (linux-arm), const SizeofCmsghdr = 12 pkg syscall (linux-arm), const SizeofIPMreq = 8 pkg syscall (linux-arm), const SizeofIPMreqn = 12 pkg syscall (linux-arm), const SizeofIPv6Mreq = 20 pkg syscall (linux-arm), const SizeofIfAddrmsg = 8 pkg syscall (linux-arm), const SizeofIfInfomsg = 16 pkg syscall (linux-arm), const SizeofInet4Pktinfo = 12 pkg syscall (linux-arm), const SizeofInet6Pktinfo = 20 pkg syscall (linux-arm), const SizeofInotifyEvent = 16 pkg syscall (linux-arm), const SizeofLinger = 8 pkg syscall (linux-arm), const SizeofMsghdr = 28 pkg syscall (linux-arm), const SizeofNlAttr = 4 pkg syscall (linux-arm), const SizeofNlMsgerr = 20 pkg syscall (linux-arm), const SizeofNlMsghdr = 16 pkg syscall (linux-arm), const SizeofRtAttr = 4 pkg syscall (linux-arm), const SizeofRtGenmsg = 1 pkg syscall (linux-arm), const SizeofRtMsg = 12 pkg syscall (linux-arm), const SizeofRtNexthop = 8 pkg syscall (linux-arm), const SizeofSockFilter = 8 pkg syscall (linux-arm), const SizeofSockFprog = 8 pkg syscall (linux-arm), const SizeofSockaddrAny = 112 pkg syscall (linux-arm), const SizeofSockaddrInet4 = 16 pkg syscall (linux-arm), const SizeofSockaddrInet6 = 28 pkg syscall (linux-arm), const SizeofSockaddrLinklayer = 20 pkg syscall (linux-arm), const SizeofSockaddrNetlink = 12 pkg syscall (linux-arm), const SizeofSockaddrUnix = 110 pkg syscall (linux-arm), const SizeofTCPInfo = 104 pkg syscall (linux-arm), const SizeofTCPInfo ideal-int pkg syscall (linux-arm), const SizeofUcred = 12 pkg syscall (linux-arm), const TCGETS = 21505 pkg syscall (linux-arm), const TCP_CONGESTION = 13 pkg syscall (linux-arm), const TCP_CORK = 3 pkg syscall (linux-arm), const TCP_DEFER_ACCEPT = 9 pkg syscall (linux-arm), const TCP_INFO = 11 pkg syscall (linux-arm), const TCP_KEEPCNT = 6 pkg syscall (linux-arm), const TCP_KEEPIDLE = 4 pkg syscall (linux-arm), const TCP_KEEPINTVL = 5 pkg syscall (linux-arm), const TCP_LINGER2 = 8 pkg syscall (linux-arm), const TCP_MAXSEG = 2 pkg syscall (linux-arm), const TCP_MAXWIN = 65535 pkg syscall (linux-arm), const TCP_MAX_WINSHIFT = 14 pkg syscall (linux-arm), const TCP_MD5SIG = 14 pkg syscall (linux-arm), const TCP_MD5SIG_MAXKEYLEN = 80 pkg syscall (linux-arm), const TCP_MSS = 512 pkg syscall (linux-arm), const TCP_QUICKACK = 12 pkg syscall (linux-arm), const TCP_SYNCNT = 7 pkg syscall (linux-arm), const TCP_WINDOW_CLAMP = 10 pkg syscall (linux-arm), const TCSETS = 21506 pkg syscall (linux-arm), const TIOCCBRK = 21544 pkg syscall (linux-arm), const TIOCCONS = 21533 pkg syscall (linux-arm), const TIOCEXCL = 21516 pkg syscall (linux-arm), const TIOCGDEV = 2147767346 pkg syscall (linux-arm), const TIOCGETD = 21540 pkg syscall (linux-arm), const TIOCGICOUNT = 21597 pkg syscall (linux-arm), const TIOCGLCKTRMIOS = 21590 pkg syscall (linux-arm), const TIOCGPGRP = 21519 pkg syscall (linux-arm), const TIOCGPTN = 2147767344 pkg syscall (linux-arm), const TIOCGRS485 = 21550 pkg syscall (linux-arm), const TIOCGSERIAL = 21534 pkg syscall (linux-arm), const TIOCGSID = 21545 pkg syscall (linux-arm), const TIOCGSOFTCAR = 21529 pkg syscall (linux-arm), const TIOCGWINSZ = 21523 pkg syscall (linux-arm), const TIOCINQ = 21531 pkg syscall (linux-arm), const TIOCLINUX = 21532 pkg syscall (linux-arm), const TIOCMBIC = 21527 pkg syscall (linux-arm), const TIOCMBIS = 21526 pkg syscall (linux-arm), const TIOCMGET = 21525 pkg syscall (linux-arm), const TIOCMIWAIT = 21596 pkg syscall (linux-arm), const TIOCMSET = 21528 pkg syscall (linux-arm), const TIOCM_CAR = 64 pkg syscall (linux-arm), const TIOCM_CD = 64 pkg syscall (linux-arm), const TIOCM_CTS = 32 pkg syscall (linux-arm), const TIOCM_DSR = 256 pkg syscall (linux-arm), const TIOCM_DTR = 2 pkg syscall (linux-arm), const TIOCM_LE = 1 pkg syscall (linux-arm), const TIOCM_RI = 128 pkg syscall (linux-arm), const TIOCM_RNG = 128 pkg syscall (linux-arm), const TIOCM_RTS = 4 pkg syscall (linux-arm), const TIOCM_SR = 16 pkg syscall (linux-arm), const TIOCM_ST = 8 pkg syscall (linux-arm), const TIOCNOTTY = 21538 pkg syscall (linux-arm), const TIOCNXCL = 21517 pkg syscall (linux-arm), const TIOCOUTQ = 21521 pkg syscall (linux-arm), const TIOCPKT = 21536 pkg syscall (linux-arm), const TIOCPKT_DATA = 0 pkg syscall (linux-arm), const TIOCPKT_DOSTOP = 32 pkg syscall (linux-arm), const TIOCPKT_FLUSHREAD = 1 pkg syscall (linux-arm), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (linux-arm), const TIOCPKT_IOCTL = 64 pkg syscall (linux-arm), const TIOCPKT_NOSTOP = 16 pkg syscall (linux-arm), const TIOCPKT_START = 8 pkg syscall (linux-arm), const TIOCPKT_STOP = 4 pkg syscall (linux-arm), const TIOCSBRK = 21543 pkg syscall (linux-arm), const TIOCSCTTY = 21518 pkg syscall (linux-arm), const TIOCSERCONFIG = 21587 pkg syscall (linux-arm), const TIOCSERGETLSR = 21593 pkg syscall (linux-arm), const TIOCSERGETMULTI = 21594 pkg syscall (linux-arm), const TIOCSERGSTRUCT = 21592 pkg syscall (linux-arm), const TIOCSERGWILD = 21588 pkg syscall (linux-arm), const TIOCSERSETMULTI = 21595 pkg syscall (linux-arm), const TIOCSERSWILD = 21589 pkg syscall (linux-arm), const TIOCSER_TEMT = 1 pkg syscall (linux-arm), const TIOCSETD = 21539 pkg syscall (linux-arm), const TIOCSIG = 1074025526 pkg syscall (linux-arm), const TIOCSLCKTRMIOS = 21591 pkg syscall (linux-arm), const TIOCSPGRP = 21520 pkg syscall (linux-arm), const TIOCSPTLCK = 1074025521 pkg syscall (linux-arm), const TIOCSRS485 = 21551 pkg syscall (linux-arm), const TIOCSSERIAL = 21535 pkg syscall (linux-arm), const TIOCSSOFTCAR = 21530 pkg syscall (linux-arm), const TIOCSTI = 21522 pkg syscall (linux-arm), const TIOCSWINSZ = 21524 pkg syscall (linux-arm), const TIOCVHANGUP = 21559 pkg syscall (linux-arm), const TOSTOP = 256 pkg syscall (linux-arm), const TUNATTACHFILTER = 1074287829 pkg syscall (linux-arm), const TUNDETACHFILTER = 1074287830 pkg syscall (linux-arm), const TUNGETFEATURES = 2147767503 pkg syscall (linux-arm), const TUNGETIFF = 2147767506 pkg syscall (linux-arm), const TUNGETSNDBUF = 2147767507 pkg syscall (linux-arm), const TUNGETVNETHDRSZ = 2147767511 pkg syscall (linux-arm), const TUNSETDEBUG = 1074025673 pkg syscall (linux-arm), const TUNSETGROUP = 1074025678 pkg syscall (linux-arm), const TUNSETIFF = 1074025674 pkg syscall (linux-arm), const TUNSETLINK = 1074025677 pkg syscall (linux-arm), const TUNSETNOCSUM = 1074025672 pkg syscall (linux-arm), const TUNSETOFFLOAD = 1074025680 pkg syscall (linux-arm), const TUNSETOWNER = 1074025676 pkg syscall (linux-arm), const TUNSETPERSIST = 1074025675 pkg syscall (linux-arm), const TUNSETSNDBUF = 1074025684 pkg syscall (linux-arm), const TUNSETTXFILTER = 1074025681 pkg syscall (linux-arm), const TUNSETVNETHDRSZ = 1074025688 pkg syscall (linux-arm), const VDISCARD = 13 pkg syscall (linux-arm), const VEOF = 4 pkg syscall (linux-arm), const VEOL = 11 pkg syscall (linux-arm), const VEOL2 = 16 pkg syscall (linux-arm), const VERASE = 2 pkg syscall (linux-arm), const VINTR = 0 pkg syscall (linux-arm), const VKILL = 3 pkg syscall (linux-arm), const VLNEXT = 15 pkg syscall (linux-arm), const VMIN = 6 pkg syscall (linux-arm), const VQUIT = 1 pkg syscall (linux-arm), const VREPRINT = 12 pkg syscall (linux-arm), const VSTART = 8 pkg syscall (linux-arm), const VSTOP = 9 pkg syscall (linux-arm), const VSUSP = 10 pkg syscall (linux-arm), const VSWTC = 7 pkg syscall (linux-arm), const VTIME = 5 pkg syscall (linux-arm), const VWERASE = 14 pkg syscall (linux-arm), const WALL = 1073741824 pkg syscall (linux-arm), const WCLONE = 2147483648 pkg syscall (linux-arm), const WCONTINUED = 8 pkg syscall (linux-arm), const WEXITED = 4 pkg syscall (linux-arm), const WNOHANG = 1 pkg syscall (linux-arm), const WNOTHREAD = 536870912 pkg syscall (linux-arm), const WNOWAIT = 16777216 pkg syscall (linux-arm), const WORDSIZE = 32 pkg syscall (linux-arm), const WSTOPPED = 2 pkg syscall (linux-arm), const WUNTRACED = 2 pkg syscall (linux-arm), const XCASE = 4 pkg syscall (linux-arm), func Accept4(int, int) (int, Sockaddr, error) pkg syscall (linux-arm), func GetsockoptUcred(int, int, int) (*Ucred, error) pkg syscall (linux-arm), func Getxattr(string, string, []uint8) (int, error) pkg syscall (linux-arm), func Listxattr(string, []uint8) (int, error) pkg syscall (linux-arm), func Pipe2([]int, int) error pkg syscall (linux-arm), func PtraceSyscall(int, int) error pkg syscall (linux-arm), func Removexattr(string, string) error pkg syscall (linux-arm), func Setxattr(string, string, []uint8, int) error pkg syscall (linux-arm), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (linux-arm), type SysProcAttr struct, Ctty int pkg syscall (linux-arm), type TCPInfo struct pkg syscall (linux-arm), type TCPInfo struct, Advmss uint32 pkg syscall (linux-arm), type TCPInfo struct, Ato uint32 pkg syscall (linux-arm), type TCPInfo struct, Backoff uint8 pkg syscall (linux-arm), type TCPInfo struct, Ca_state uint8 pkg syscall (linux-arm), type TCPInfo struct, Fackets uint32 pkg syscall (linux-arm), type TCPInfo struct, Last_ack_recv uint32 pkg syscall (linux-arm), type TCPInfo struct, Last_ack_sent uint32 pkg syscall (linux-arm), type TCPInfo struct, Last_data_recv uint32 pkg syscall (linux-arm), type TCPInfo struct, Last_data_sent uint32 pkg syscall (linux-arm), type TCPInfo struct, Lost uint32 pkg syscall (linux-arm), type TCPInfo struct, Options uint8 pkg syscall (linux-arm), type TCPInfo struct, Pad_cgo_0 [2]uint8 pkg syscall (linux-arm), type TCPInfo struct, Pmtu uint32 pkg syscall (linux-arm), type TCPInfo struct, Probes uint8 pkg syscall (linux-arm), type TCPInfo struct, Rcv_mss uint32 pkg syscall (linux-arm), type TCPInfo struct, Rcv_rtt uint32 pkg syscall (linux-arm), type TCPInfo struct, Rcv_space uint32 pkg syscall (linux-arm), type TCPInfo struct, Rcv_ssthresh uint32 pkg syscall (linux-arm), type TCPInfo struct, Reordering uint32 pkg syscall (linux-arm), type TCPInfo struct, Retrans uint32 pkg syscall (linux-arm), type TCPInfo struct, Retransmits uint8 pkg syscall (linux-arm), type TCPInfo struct, Rto uint32 pkg syscall (linux-arm), type TCPInfo struct, Rtt uint32 pkg syscall (linux-arm), type TCPInfo struct, Rttvar uint32 pkg syscall (linux-arm), type TCPInfo struct, Sacked uint32 pkg syscall (linux-arm), type TCPInfo struct, Snd_cwnd uint32 pkg syscall (linux-arm), type TCPInfo struct, Snd_mss uint32 pkg syscall (linux-arm), type TCPInfo struct, Snd_ssthresh uint32 pkg syscall (linux-arm), type TCPInfo struct, State uint8 pkg syscall (linux-arm), type TCPInfo struct, Total_retrans uint32 pkg syscall (linux-arm), type TCPInfo struct, Unacked uint32 pkg syscall (linux-arm-cgo), const AF_ALG = 38 pkg syscall (linux-arm-cgo), const AF_APPLETALK = 5 pkg syscall (linux-arm-cgo), const AF_ASH = 18 pkg syscall (linux-arm-cgo), const AF_ATMPVC = 8 pkg syscall (linux-arm-cgo), const AF_ATMSVC = 20 pkg syscall (linux-arm-cgo), const AF_AX25 = 3 pkg syscall (linux-arm-cgo), const AF_BLUETOOTH = 31 pkg syscall (linux-arm-cgo), const AF_BRIDGE = 7 pkg syscall (linux-arm-cgo), const AF_CAIF = 37 pkg syscall (linux-arm-cgo), const AF_CAN = 29 pkg syscall (linux-arm-cgo), const AF_DECnet = 12 pkg syscall (linux-arm-cgo), const AF_ECONET = 19 pkg syscall (linux-arm-cgo), const AF_FILE = 1 pkg syscall (linux-arm-cgo), const AF_IEEE802154 = 36 pkg syscall (linux-arm-cgo), const AF_INET6 = 10 pkg syscall (linux-arm-cgo), const AF_IPX = 4 pkg syscall (linux-arm-cgo), const AF_IRDA = 23 pkg syscall (linux-arm-cgo), const AF_ISDN = 34 pkg syscall (linux-arm-cgo), const AF_IUCV = 32 pkg syscall (linux-arm-cgo), const AF_KEY = 15 pkg syscall (linux-arm-cgo), const AF_LLC = 26 pkg syscall (linux-arm-cgo), const AF_LOCAL = 1 pkg syscall (linux-arm-cgo), const AF_MAX = 39 pkg syscall (linux-arm-cgo), const AF_NETBEUI = 13 pkg syscall (linux-arm-cgo), const AF_NETLINK = 16 pkg syscall (linux-arm-cgo), const AF_NETROM = 6 pkg syscall (linux-arm-cgo), const AF_PACKET = 17 pkg syscall (linux-arm-cgo), const AF_PHONET = 35 pkg syscall (linux-arm-cgo), const AF_PPPOX = 24 pkg syscall (linux-arm-cgo), const AF_RDS = 21 pkg syscall (linux-arm-cgo), const AF_ROSE = 11 pkg syscall (linux-arm-cgo), const AF_ROUTE = 16 pkg syscall (linux-arm-cgo), const AF_RXRPC = 33 pkg syscall (linux-arm-cgo), const AF_SECURITY = 14 pkg syscall (linux-arm-cgo), const AF_SNA = 22 pkg syscall (linux-arm-cgo), const AF_TIPC = 30 pkg syscall (linux-arm-cgo), const AF_WANPIPE = 25 pkg syscall (linux-arm-cgo), const AF_X25 = 9 pkg syscall (linux-arm-cgo), const ARPHRD_ADAPT = 264 pkg syscall (linux-arm-cgo), const ARPHRD_APPLETLK = 8 pkg syscall (linux-arm-cgo), const ARPHRD_ARCNET = 7 pkg syscall (linux-arm-cgo), const ARPHRD_ASH = 781 pkg syscall (linux-arm-cgo), const ARPHRD_ATM = 19 pkg syscall (linux-arm-cgo), const ARPHRD_AX25 = 3 pkg syscall (linux-arm-cgo), const ARPHRD_BIF = 775 pkg syscall (linux-arm-cgo), const ARPHRD_CHAOS = 5 pkg syscall (linux-arm-cgo), const ARPHRD_CISCO = 513 pkg syscall (linux-arm-cgo), const ARPHRD_CSLIP = 257 pkg syscall (linux-arm-cgo), const ARPHRD_CSLIP6 = 259 pkg syscall (linux-arm-cgo), const ARPHRD_DDCMP = 517 pkg syscall (linux-arm-cgo), const ARPHRD_DLCI = 15 pkg syscall (linux-arm-cgo), const ARPHRD_ECONET = 782 pkg syscall (linux-arm-cgo), const ARPHRD_EETHER = 2 pkg syscall (linux-arm-cgo), const ARPHRD_ETHER = 1 pkg syscall (linux-arm-cgo), const ARPHRD_EUI64 = 27 pkg syscall (linux-arm-cgo), const ARPHRD_FCAL = 785 pkg syscall (linux-arm-cgo), const ARPHRD_FCFABRIC = 787 pkg syscall (linux-arm-cgo), const ARPHRD_FCPL = 786 pkg syscall (linux-arm-cgo), const ARPHRD_FCPP = 784 pkg syscall (linux-arm-cgo), const ARPHRD_FDDI = 774 pkg syscall (linux-arm-cgo), const ARPHRD_FRAD = 770 pkg syscall (linux-arm-cgo), const ARPHRD_HDLC = 513 pkg syscall (linux-arm-cgo), const ARPHRD_HIPPI = 780 pkg syscall (linux-arm-cgo), const ARPHRD_HWX25 = 272 pkg syscall (linux-arm-cgo), const ARPHRD_IEEE1394 = 24 pkg syscall (linux-arm-cgo), const ARPHRD_IEEE802 = 6 pkg syscall (linux-arm-cgo), const ARPHRD_IEEE80211 = 801 pkg syscall (linux-arm-cgo), const ARPHRD_IEEE80211_PRISM = 802 pkg syscall (linux-arm-cgo), const ARPHRD_IEEE80211_RADIOTAP = 803 pkg syscall (linux-arm-cgo), const ARPHRD_IEEE802154 = 804 pkg syscall (linux-arm-cgo), const ARPHRD_IEEE802154_PHY = 805 pkg syscall (linux-arm-cgo), const ARPHRD_IEEE802_TR = 800 pkg syscall (linux-arm-cgo), const ARPHRD_INFINIBAND = 32 pkg syscall (linux-arm-cgo), const ARPHRD_IPDDP = 777 pkg syscall (linux-arm-cgo), const ARPHRD_IPGRE = 778 pkg syscall (linux-arm-cgo), const ARPHRD_IRDA = 783 pkg syscall (linux-arm-cgo), const ARPHRD_LAPB = 516 pkg syscall (linux-arm-cgo), const ARPHRD_LOCALTLK = 773 pkg syscall (linux-arm-cgo), const ARPHRD_LOOPBACK = 772 pkg syscall (linux-arm-cgo), const ARPHRD_METRICOM = 23 pkg syscall (linux-arm-cgo), const ARPHRD_NETROM = 0 pkg syscall (linux-arm-cgo), const ARPHRD_NONE = 65534 pkg syscall (linux-arm-cgo), const ARPHRD_PIMREG = 779 pkg syscall (linux-arm-cgo), const ARPHRD_PPP = 512 pkg syscall (linux-arm-cgo), const ARPHRD_PRONET = 4 pkg syscall (linux-arm-cgo), const ARPHRD_RAWHDLC = 518 pkg syscall (linux-arm-cgo), const ARPHRD_ROSE = 270 pkg syscall (linux-arm-cgo), const ARPHRD_RSRVD = 260 pkg syscall (linux-arm-cgo), const ARPHRD_SIT = 776 pkg syscall (linux-arm-cgo), const ARPHRD_SKIP = 771 pkg syscall (linux-arm-cgo), const ARPHRD_SLIP = 256 pkg syscall (linux-arm-cgo), const ARPHRD_SLIP6 = 258 pkg syscall (linux-arm-cgo), const ARPHRD_TUNNEL = 768 pkg syscall (linux-arm-cgo), const ARPHRD_TUNNEL6 = 769 pkg syscall (linux-arm-cgo), const ARPHRD_VOID = 65535 pkg syscall (linux-arm-cgo), const ARPHRD_X25 = 271 pkg syscall (linux-arm-cgo), const B0 = 0 pkg syscall (linux-arm-cgo), const B1000000 = 4104 pkg syscall (linux-arm-cgo), const B110 = 3 pkg syscall (linux-arm-cgo), const B115200 = 4098 pkg syscall (linux-arm-cgo), const B1152000 = 4105 pkg syscall (linux-arm-cgo), const B1200 = 9 pkg syscall (linux-arm-cgo), const B134 = 4 pkg syscall (linux-arm-cgo), const B150 = 5 pkg syscall (linux-arm-cgo), const B1500000 = 4106 pkg syscall (linux-arm-cgo), const B1800 = 10 pkg syscall (linux-arm-cgo), const B19200 = 14 pkg syscall (linux-arm-cgo), const B200 = 6 pkg syscall (linux-arm-cgo), const B2000000 = 4107 pkg syscall (linux-arm-cgo), const B230400 = 4099 pkg syscall (linux-arm-cgo), const B2400 = 11 pkg syscall (linux-arm-cgo), const B2500000 = 4108 pkg syscall (linux-arm-cgo), const B300 = 7 pkg syscall (linux-arm-cgo), const B3000000 = 4109 pkg syscall (linux-arm-cgo), const B3500000 = 4110 pkg syscall (linux-arm-cgo), const B38400 = 15 pkg syscall (linux-arm-cgo), const B4000000 = 4111 pkg syscall (linux-arm-cgo), const B460800 = 4100 pkg syscall (linux-arm-cgo), const B4800 = 12 pkg syscall (linux-arm-cgo), const B50 = 1 pkg syscall (linux-arm-cgo), const B500000 = 4101 pkg syscall (linux-arm-cgo), const B57600 = 4097 pkg syscall (linux-arm-cgo), const B576000 = 4102 pkg syscall (linux-arm-cgo), const B600 = 8 pkg syscall (linux-arm-cgo), const B75 = 2 pkg syscall (linux-arm-cgo), const B921600 = 4103 pkg syscall (linux-arm-cgo), const B9600 = 13 pkg syscall (linux-arm-cgo), const BPF_A = 16 pkg syscall (linux-arm-cgo), const BPF_ABS = 32 pkg syscall (linux-arm-cgo), const BPF_ADD = 0 pkg syscall (linux-arm-cgo), const BPF_ALU = 4 pkg syscall (linux-arm-cgo), const BPF_AND = 80 pkg syscall (linux-arm-cgo), const BPF_B = 16 pkg syscall (linux-arm-cgo), const BPF_DIV = 48 pkg syscall (linux-arm-cgo), const BPF_H = 8 pkg syscall (linux-arm-cgo), const BPF_IMM = 0 pkg syscall (linux-arm-cgo), const BPF_IND = 64 pkg syscall (linux-arm-cgo), const BPF_JA = 0 pkg syscall (linux-arm-cgo), const BPF_JEQ = 16 pkg syscall (linux-arm-cgo), const BPF_JGE = 48 pkg syscall (linux-arm-cgo), const BPF_JGT = 32 pkg syscall (linux-arm-cgo), const BPF_JMP = 5 pkg syscall (linux-arm-cgo), const BPF_JSET = 64 pkg syscall (linux-arm-cgo), const BPF_K = 0 pkg syscall (linux-arm-cgo), const BPF_LD = 0 pkg syscall (linux-arm-cgo), const BPF_LDX = 1 pkg syscall (linux-arm-cgo), const BPF_LEN = 128 pkg syscall (linux-arm-cgo), const BPF_LSH = 96 pkg syscall (linux-arm-cgo), const BPF_MAJOR_VERSION = 1 pkg syscall (linux-arm-cgo), const BPF_MAXINSNS = 4096 pkg syscall (linux-arm-cgo), const BPF_MEM = 96 pkg syscall (linux-arm-cgo), const BPF_MEMWORDS = 16 pkg syscall (linux-arm-cgo), const BPF_MINOR_VERSION = 1 pkg syscall (linux-arm-cgo), const BPF_MISC = 7 pkg syscall (linux-arm-cgo), const BPF_MSH = 160 pkg syscall (linux-arm-cgo), const BPF_MUL = 32 pkg syscall (linux-arm-cgo), const BPF_NEG = 128 pkg syscall (linux-arm-cgo), const BPF_OR = 64 pkg syscall (linux-arm-cgo), const BPF_RET = 6 pkg syscall (linux-arm-cgo), const BPF_RSH = 112 pkg syscall (linux-arm-cgo), const BPF_ST = 2 pkg syscall (linux-arm-cgo), const BPF_STX = 3 pkg syscall (linux-arm-cgo), const BPF_SUB = 16 pkg syscall (linux-arm-cgo), const BPF_TAX = 0 pkg syscall (linux-arm-cgo), const BPF_TXA = 128 pkg syscall (linux-arm-cgo), const BPF_W = 0 pkg syscall (linux-arm-cgo), const BPF_X = 8 pkg syscall (linux-arm-cgo), const BRKINT = 2 pkg syscall (linux-arm-cgo), const CLOCAL = 2048 pkg syscall (linux-arm-cgo), const CREAD = 128 pkg syscall (linux-arm-cgo), const CS5 = 0 pkg syscall (linux-arm-cgo), const CS6 = 16 pkg syscall (linux-arm-cgo), const CS7 = 32 pkg syscall (linux-arm-cgo), const CS8 = 48 pkg syscall (linux-arm-cgo), const CSIZE = 48 pkg syscall (linux-arm-cgo), const CSTOPB = 64 pkg syscall (linux-arm-cgo), const DT_BLK = 6 pkg syscall (linux-arm-cgo), const DT_CHR = 2 pkg syscall (linux-arm-cgo), const DT_DIR = 4 pkg syscall (linux-arm-cgo), const DT_FIFO = 1 pkg syscall (linux-arm-cgo), const DT_LNK = 10 pkg syscall (linux-arm-cgo), const DT_REG = 8 pkg syscall (linux-arm-cgo), const DT_SOCK = 12 pkg syscall (linux-arm-cgo), const DT_UNKNOWN = 0 pkg syscall (linux-arm-cgo), const DT_WHT = 14 pkg syscall (linux-arm-cgo), const E2BIG = 7 pkg syscall (linux-arm-cgo), const EACCES = 13 pkg syscall (linux-arm-cgo), const EADDRINUSE = 98 pkg syscall (linux-arm-cgo), const EADDRNOTAVAIL = 99 pkg syscall (linux-arm-cgo), const EADV = 68 pkg syscall (linux-arm-cgo), const EAFNOSUPPORT = 97 pkg syscall (linux-arm-cgo), const EAGAIN = 11 pkg syscall (linux-arm-cgo), const EALREADY = 114 pkg syscall (linux-arm-cgo), const EBADE = 52 pkg syscall (linux-arm-cgo), const EBADF = 9 pkg syscall (linux-arm-cgo), const EBADFD = 77 pkg syscall (linux-arm-cgo), const EBADMSG = 74 pkg syscall (linux-arm-cgo), const EBADR = 53 pkg syscall (linux-arm-cgo), const EBADRQC = 56 pkg syscall (linux-arm-cgo), const EBADSLT = 57 pkg syscall (linux-arm-cgo), const EBFONT = 59 pkg syscall (linux-arm-cgo), const EBUSY = 16 pkg syscall (linux-arm-cgo), const ECANCELED = 125 pkg syscall (linux-arm-cgo), const ECHILD = 10 pkg syscall (linux-arm-cgo), const ECHO = 8 pkg syscall (linux-arm-cgo), const ECHOCTL = 512 pkg syscall (linux-arm-cgo), const ECHOE = 16 pkg syscall (linux-arm-cgo), const ECHOK = 32 pkg syscall (linux-arm-cgo), const ECHOKE = 2048 pkg syscall (linux-arm-cgo), const ECHONL = 64 pkg syscall (linux-arm-cgo), const ECHOPRT = 1024 pkg syscall (linux-arm-cgo), const ECHRNG = 44 pkg syscall (linux-arm-cgo), const ECOMM = 70 pkg syscall (linux-arm-cgo), const ECONNABORTED = 103 pkg syscall (linux-arm-cgo), const ECONNREFUSED = 111 pkg syscall (linux-arm-cgo), const ECONNRESET = 104 pkg syscall (linux-arm-cgo), const EDEADLK = 35 pkg syscall (linux-arm-cgo), const EDEADLOCK = 35 pkg syscall (linux-arm-cgo), const EDESTADDRREQ = 89 pkg syscall (linux-arm-cgo), const EDOM = 33 pkg syscall (linux-arm-cgo), const EDOTDOT = 73 pkg syscall (linux-arm-cgo), const EDQUOT = 122 pkg syscall (linux-arm-cgo), const EEXIST = 17 pkg syscall (linux-arm-cgo), const EFAULT = 14 pkg syscall (linux-arm-cgo), const EFBIG = 27 pkg syscall (linux-arm-cgo), const EHOSTDOWN = 112 pkg syscall (linux-arm-cgo), const EHOSTUNREACH = 113 pkg syscall (linux-arm-cgo), const EHWPOISON = 133 pkg syscall (linux-arm-cgo), const EIDRM = 43 pkg syscall (linux-arm-cgo), const EILSEQ = 84 pkg syscall (linux-arm-cgo), const EINPROGRESS = 115 pkg syscall (linux-arm-cgo), const EINTR = 4 pkg syscall (linux-arm-cgo), const EINVAL = 22 pkg syscall (linux-arm-cgo), const EIO = 5 pkg syscall (linux-arm-cgo), const EISCONN = 106 pkg syscall (linux-arm-cgo), const EISDIR = 21 pkg syscall (linux-arm-cgo), const EISNAM = 120 pkg syscall (linux-arm-cgo), const EKEYEXPIRED = 127 pkg syscall (linux-arm-cgo), const EKEYREJECTED = 129 pkg syscall (linux-arm-cgo), const EKEYREVOKED = 128 pkg syscall (linux-arm-cgo), const EL2HLT = 51 pkg syscall (linux-arm-cgo), const EL2NSYNC = 45 pkg syscall (linux-arm-cgo), const EL3HLT = 46 pkg syscall (linux-arm-cgo), const EL3RST = 47 pkg syscall (linux-arm-cgo), const ELF_NGREG = 18 pkg syscall (linux-arm-cgo), const ELF_PRARGSZ = 80 pkg syscall (linux-arm-cgo), const ELIBACC = 79 pkg syscall (linux-arm-cgo), const ELIBBAD = 80 pkg syscall (linux-arm-cgo), const ELIBEXEC = 83 pkg syscall (linux-arm-cgo), const ELIBMAX = 82 pkg syscall (linux-arm-cgo), const ELIBSCN = 81 pkg syscall (linux-arm-cgo), const ELNRNG = 48 pkg syscall (linux-arm-cgo), const ELOOP = 40 pkg syscall (linux-arm-cgo), const EMEDIUMTYPE = 124 pkg syscall (linux-arm-cgo), const EMFILE = 24 pkg syscall (linux-arm-cgo), const EMLINK = 31 pkg syscall (linux-arm-cgo), const EMSGSIZE = 90 pkg syscall (linux-arm-cgo), const EMULTIHOP = 72 pkg syscall (linux-arm-cgo), const ENAMETOOLONG = 36 pkg syscall (linux-arm-cgo), const ENAVAIL = 119 pkg syscall (linux-arm-cgo), const ENETDOWN = 100 pkg syscall (linux-arm-cgo), const ENETRESET = 102 pkg syscall (linux-arm-cgo), const ENETUNREACH = 101 pkg syscall (linux-arm-cgo), const ENFILE = 23 pkg syscall (linux-arm-cgo), const ENOANO = 55 pkg syscall (linux-arm-cgo), const ENOBUFS = 105 pkg syscall (linux-arm-cgo), const ENOCSI = 50 pkg syscall (linux-arm-cgo), const ENODATA = 61 pkg syscall (linux-arm-cgo), const ENODEV = 19 pkg syscall (linux-arm-cgo), const ENOEXEC = 8 pkg syscall (linux-arm-cgo), const ENOKEY = 126 pkg syscall (linux-arm-cgo), const ENOLCK = 37 pkg syscall (linux-arm-cgo), const ENOLINK = 67 pkg syscall (linux-arm-cgo), const ENOMEDIUM = 123 pkg syscall (linux-arm-cgo), const ENOMEM = 12 pkg syscall (linux-arm-cgo), const ENOMSG = 42 pkg syscall (linux-arm-cgo), const ENONET = 64 pkg syscall (linux-arm-cgo), const ENOPKG = 65 pkg syscall (linux-arm-cgo), const ENOPROTOOPT = 92 pkg syscall (linux-arm-cgo), const ENOSPC = 28 pkg syscall (linux-arm-cgo), const ENOSR = 63 pkg syscall (linux-arm-cgo), const ENOSTR = 60 pkg syscall (linux-arm-cgo), const ENOSYS = 38 pkg syscall (linux-arm-cgo), const ENOTBLK = 15 pkg syscall (linux-arm-cgo), const ENOTCONN = 107 pkg syscall (linux-arm-cgo), const ENOTDIR = 20 pkg syscall (linux-arm-cgo), const ENOTEMPTY = 39 pkg syscall (linux-arm-cgo), const ENOTNAM = 118 pkg syscall (linux-arm-cgo), const ENOTRECOVERABLE = 131 pkg syscall (linux-arm-cgo), const ENOTSOCK = 88 pkg syscall (linux-arm-cgo), const ENOTSUP = 95 pkg syscall (linux-arm-cgo), const ENOTTY = 25 pkg syscall (linux-arm-cgo), const ENOTUNIQ = 76 pkg syscall (linux-arm-cgo), const ENXIO = 6 pkg syscall (linux-arm-cgo), const EOPNOTSUPP = 95 pkg syscall (linux-arm-cgo), const EOVERFLOW = 75 pkg syscall (linux-arm-cgo), const EOWNERDEAD = 130 pkg syscall (linux-arm-cgo), const EPERM = 1 pkg syscall (linux-arm-cgo), const EPFNOSUPPORT = 96 pkg syscall (linux-arm-cgo), const EPIPE = 32 pkg syscall (linux-arm-cgo), const EPOLLERR = 8 pkg syscall (linux-arm-cgo), const EPOLLET = -2147483648 pkg syscall (linux-arm-cgo), const EPOLLHUP = 16 pkg syscall (linux-arm-cgo), const EPOLLIN = 1 pkg syscall (linux-arm-cgo), const EPOLLMSG = 1024 pkg syscall (linux-arm-cgo), const EPOLLONESHOT = 1073741824 pkg syscall (linux-arm-cgo), const EPOLLOUT = 4 pkg syscall (linux-arm-cgo), const EPOLLPRI = 2 pkg syscall (linux-arm-cgo), const EPOLLRDBAND = 128 pkg syscall (linux-arm-cgo), const EPOLLRDHUP = 8192 pkg syscall (linux-arm-cgo), const EPOLLRDNORM = 64 pkg syscall (linux-arm-cgo), const EPOLLWRBAND = 512 pkg syscall (linux-arm-cgo), const EPOLLWRNORM = 256 pkg syscall (linux-arm-cgo), const EPOLL_CLOEXEC = 524288 pkg syscall (linux-arm-cgo), const EPOLL_CTL_ADD = 1 pkg syscall (linux-arm-cgo), const EPOLL_CTL_DEL = 2 pkg syscall (linux-arm-cgo), const EPOLL_CTL_MOD = 3 pkg syscall (linux-arm-cgo), const EPOLL_NONBLOCK = 2048 pkg syscall (linux-arm-cgo), const EPROTO = 71 pkg syscall (linux-arm-cgo), const EPROTONOSUPPORT = 93 pkg syscall (linux-arm-cgo), const EPROTOTYPE = 91 pkg syscall (linux-arm-cgo), const ERANGE = 34 pkg syscall (linux-arm-cgo), const EREMCHG = 78 pkg syscall (linux-arm-cgo), const EREMOTE = 66 pkg syscall (linux-arm-cgo), const EREMOTEIO = 121 pkg syscall (linux-arm-cgo), const ERESTART = 85 pkg syscall (linux-arm-cgo), const ERFKILL = 132 pkg syscall (linux-arm-cgo), const EROFS = 30 pkg syscall (linux-arm-cgo), const ESHUTDOWN = 108 pkg syscall (linux-arm-cgo), const ESOCKTNOSUPPORT = 94 pkg syscall (linux-arm-cgo), const ESPIPE = 29 pkg syscall (linux-arm-cgo), const ESRCH = 3 pkg syscall (linux-arm-cgo), const ESRMNT = 69 pkg syscall (linux-arm-cgo), const ESTALE = 116 pkg syscall (linux-arm-cgo), const ESTRPIPE = 86 pkg syscall (linux-arm-cgo), const ETH_P_1588 = 35063 pkg syscall (linux-arm-cgo), const ETH_P_8021Q = 33024 pkg syscall (linux-arm-cgo), const ETH_P_802_2 = 4 pkg syscall (linux-arm-cgo), const ETH_P_802_3 = 1 pkg syscall (linux-arm-cgo), const ETH_P_AARP = 33011 pkg syscall (linux-arm-cgo), const ETH_P_ALL = 3 pkg syscall (linux-arm-cgo), const ETH_P_AOE = 34978 pkg syscall (linux-arm-cgo), const ETH_P_ARCNET = 26 pkg syscall (linux-arm-cgo), const ETH_P_ARP = 2054 pkg syscall (linux-arm-cgo), const ETH_P_ATALK = 32923 pkg syscall (linux-arm-cgo), const ETH_P_ATMFATE = 34948 pkg syscall (linux-arm-cgo), const ETH_P_ATMMPOA = 34892 pkg syscall (linux-arm-cgo), const ETH_P_AX25 = 2 pkg syscall (linux-arm-cgo), const ETH_P_BPQ = 2303 pkg syscall (linux-arm-cgo), const ETH_P_CAIF = 247 pkg syscall (linux-arm-cgo), const ETH_P_CAN = 12 pkg syscall (linux-arm-cgo), const ETH_P_CONTROL = 22 pkg syscall (linux-arm-cgo), const ETH_P_CUST = 24582 pkg syscall (linux-arm-cgo), const ETH_P_DDCMP = 6 pkg syscall (linux-arm-cgo), const ETH_P_DEC = 24576 pkg syscall (linux-arm-cgo), const ETH_P_DIAG = 24581 pkg syscall (linux-arm-cgo), const ETH_P_DNA_DL = 24577 pkg syscall (linux-arm-cgo), const ETH_P_DNA_RC = 24578 pkg syscall (linux-arm-cgo), const ETH_P_DNA_RT = 24579 pkg syscall (linux-arm-cgo), const ETH_P_DSA = 27 pkg syscall (linux-arm-cgo), const ETH_P_ECONET = 24 pkg syscall (linux-arm-cgo), const ETH_P_EDSA = 56026 pkg syscall (linux-arm-cgo), const ETH_P_FCOE = 35078 pkg syscall (linux-arm-cgo), const ETH_P_FIP = 35092 pkg syscall (linux-arm-cgo), const ETH_P_HDLC = 25 pkg syscall (linux-arm-cgo), const ETH_P_IEEE802154 = 246 pkg syscall (linux-arm-cgo), const ETH_P_IEEEPUP = 2560 pkg syscall (linux-arm-cgo), const ETH_P_IEEEPUPAT = 2561 pkg syscall (linux-arm-cgo), const ETH_P_IP = 2048 pkg syscall (linux-arm-cgo), const ETH_P_IPV6 = 34525 pkg syscall (linux-arm-cgo), const ETH_P_IPX = 33079 pkg syscall (linux-arm-cgo), const ETH_P_IRDA = 23 pkg syscall (linux-arm-cgo), const ETH_P_LAT = 24580 pkg syscall (linux-arm-cgo), const ETH_P_LINK_CTL = 34924 pkg syscall (linux-arm-cgo), const ETH_P_LOCALTALK = 9 pkg syscall (linux-arm-cgo), const ETH_P_LOOP = 96 pkg syscall (linux-arm-cgo), const ETH_P_MOBITEX = 21 pkg syscall (linux-arm-cgo), const ETH_P_MPLS_MC = 34888 pkg syscall (linux-arm-cgo), const ETH_P_MPLS_UC = 34887 pkg syscall (linux-arm-cgo), const ETH_P_PAE = 34958 pkg syscall (linux-arm-cgo), const ETH_P_PAUSE = 34824 pkg syscall (linux-arm-cgo), const ETH_P_PHONET = 245 pkg syscall (linux-arm-cgo), const ETH_P_PPPTALK = 16 pkg syscall (linux-arm-cgo), const ETH_P_PPP_DISC = 34915 pkg syscall (linux-arm-cgo), const ETH_P_PPP_MP = 8 pkg syscall (linux-arm-cgo), const ETH_P_PPP_SES = 34916 pkg syscall (linux-arm-cgo), const ETH_P_PUP = 512 pkg syscall (linux-arm-cgo), const ETH_P_PUPAT = 513 pkg syscall (linux-arm-cgo), const ETH_P_RARP = 32821 pkg syscall (linux-arm-cgo), const ETH_P_SCA = 24583 pkg syscall (linux-arm-cgo), const ETH_P_SLOW = 34825 pkg syscall (linux-arm-cgo), const ETH_P_SNAP = 5 pkg syscall (linux-arm-cgo), const ETH_P_TEB = 25944 pkg syscall (linux-arm-cgo), const ETH_P_TIPC = 35018 pkg syscall (linux-arm-cgo), const ETH_P_TRAILER = 28 pkg syscall (linux-arm-cgo), const ETH_P_TR_802_2 = 17 pkg syscall (linux-arm-cgo), const ETH_P_WAN_PPP = 7 pkg syscall (linux-arm-cgo), const ETH_P_WCCP = 34878 pkg syscall (linux-arm-cgo), const ETH_P_X25 = 2053 pkg syscall (linux-arm-cgo), const ETIME = 62 pkg syscall (linux-arm-cgo), const ETIMEDOUT = 110 pkg syscall (linux-arm-cgo), const ETOOMANYREFS = 109 pkg syscall (linux-arm-cgo), const ETXTBSY = 26 pkg syscall (linux-arm-cgo), const EUCLEAN = 117 pkg syscall (linux-arm-cgo), const EUNATCH = 49 pkg syscall (linux-arm-cgo), const EUSERS = 87 pkg syscall (linux-arm-cgo), const EWOULDBLOCK = 11 pkg syscall (linux-arm-cgo), const EXDEV = 18 pkg syscall (linux-arm-cgo), const EXFULL = 54 pkg syscall (linux-arm-cgo), const FD_CLOEXEC = 1 pkg syscall (linux-arm-cgo), const FD_SETSIZE = 1024 pkg syscall (linux-arm-cgo), const FLUSHO = 4096 pkg syscall (linux-arm-cgo), const F_DUPFD = 0 pkg syscall (linux-arm-cgo), const F_DUPFD_CLOEXEC = 1030 pkg syscall (linux-arm-cgo), const F_EXLCK = 4 pkg syscall (linux-arm-cgo), const F_GETFD = 1 pkg syscall (linux-arm-cgo), const F_GETFL = 3 pkg syscall (linux-arm-cgo), const F_GETLEASE = 1025 pkg syscall (linux-arm-cgo), const F_GETLK = 12 pkg syscall (linux-arm-cgo), const F_GETLK64 = 12 pkg syscall (linux-arm-cgo), const F_GETOWN = 9 pkg syscall (linux-arm-cgo), const F_GETOWN_EX = 16 pkg syscall (linux-arm-cgo), const F_GETPIPE_SZ = 1032 pkg syscall (linux-arm-cgo), const F_GETSIG = 11 pkg syscall (linux-arm-cgo), const F_LOCK = 1 pkg syscall (linux-arm-cgo), const F_NOTIFY = 1026 pkg syscall (linux-arm-cgo), const F_OK = 0 pkg syscall (linux-arm-cgo), const F_RDLCK = 0 pkg syscall (linux-arm-cgo), const F_SETFD = 2 pkg syscall (linux-arm-cgo), const F_SETFL = 4 pkg syscall (linux-arm-cgo), const F_SETLEASE = 1024 pkg syscall (linux-arm-cgo), const F_SETLK = 13 pkg syscall (linux-arm-cgo), const F_SETLK64 = 13 pkg syscall (linux-arm-cgo), const F_SETLKW = 14 pkg syscall (linux-arm-cgo), const F_SETLKW64 = 14 pkg syscall (linux-arm-cgo), const F_SETOWN = 8 pkg syscall (linux-arm-cgo), const F_SETOWN_EX = 15 pkg syscall (linux-arm-cgo), const F_SETPIPE_SZ = 1031 pkg syscall (linux-arm-cgo), const F_SETSIG = 10 pkg syscall (linux-arm-cgo), const F_SHLCK = 8 pkg syscall (linux-arm-cgo), const F_TEST = 3 pkg syscall (linux-arm-cgo), const F_TLOCK = 2 pkg syscall (linux-arm-cgo), const F_ULOCK = 0 pkg syscall (linux-arm-cgo), const F_UNLCK = 2 pkg syscall (linux-arm-cgo), const F_WRLCK = 1 pkg syscall (linux-arm-cgo), const HUPCL = 1024 pkg syscall (linux-arm-cgo), const ICANON = 2 pkg syscall (linux-arm-cgo), const ICRNL = 256 pkg syscall (linux-arm-cgo), const IEXTEN = 32768 pkg syscall (linux-arm-cgo), const IFA_ADDRESS = 1 pkg syscall (linux-arm-cgo), const IFA_ANYCAST = 5 pkg syscall (linux-arm-cgo), const IFA_BROADCAST = 4 pkg syscall (linux-arm-cgo), const IFA_CACHEINFO = 6 pkg syscall (linux-arm-cgo), const IFA_F_DADFAILED = 8 pkg syscall (linux-arm-cgo), const IFA_F_DEPRECATED = 32 pkg syscall (linux-arm-cgo), const IFA_F_HOMEADDRESS = 16 pkg syscall (linux-arm-cgo), const IFA_F_NODAD = 2 pkg syscall (linux-arm-cgo), const IFA_F_OPTIMISTIC = 4 pkg syscall (linux-arm-cgo), const IFA_F_PERMANENT = 128 pkg syscall (linux-arm-cgo), const IFA_F_SECONDARY = 1 pkg syscall (linux-arm-cgo), const IFA_F_TEMPORARY = 1 pkg syscall (linux-arm-cgo), const IFA_F_TENTATIVE = 64 pkg syscall (linux-arm-cgo), const IFA_LABEL = 3 pkg syscall (linux-arm-cgo), const IFA_LOCAL = 2 pkg syscall (linux-arm-cgo), const IFA_MAX = 7 pkg syscall (linux-arm-cgo), const IFA_MULTICAST = 7 pkg syscall (linux-arm-cgo), const IFA_UNSPEC = 0 pkg syscall (linux-arm-cgo), const IFF_ALLMULTI = 512 pkg syscall (linux-arm-cgo), const IFF_AUTOMEDIA = 16384 pkg syscall (linux-arm-cgo), const IFF_DEBUG = 4 pkg syscall (linux-arm-cgo), const IFF_DYNAMIC = 32768 pkg syscall (linux-arm-cgo), const IFF_LOOPBACK = 8 pkg syscall (linux-arm-cgo), const IFF_MASTER = 1024 pkg syscall (linux-arm-cgo), const IFF_MULTICAST = 4096 pkg syscall (linux-arm-cgo), const IFF_NOARP = 128 pkg syscall (linux-arm-cgo), const IFF_NOTRAILERS = 32 pkg syscall (linux-arm-cgo), const IFF_NO_PI = 4096 pkg syscall (linux-arm-cgo), const IFF_ONE_QUEUE = 8192 pkg syscall (linux-arm-cgo), const IFF_POINTOPOINT = 16 pkg syscall (linux-arm-cgo), const IFF_PORTSEL = 8192 pkg syscall (linux-arm-cgo), const IFF_PROMISC = 256 pkg syscall (linux-arm-cgo), const IFF_RUNNING = 64 pkg syscall (linux-arm-cgo), const IFF_SLAVE = 2048 pkg syscall (linux-arm-cgo), const IFF_TAP = 2 pkg syscall (linux-arm-cgo), const IFF_TUN = 1 pkg syscall (linux-arm-cgo), const IFF_TUN_EXCL = 32768 pkg syscall (linux-arm-cgo), const IFF_VNET_HDR = 16384 pkg syscall (linux-arm-cgo), const IFLA_ADDRESS = 1 pkg syscall (linux-arm-cgo), const IFLA_BROADCAST = 2 pkg syscall (linux-arm-cgo), const IFLA_COST = 8 pkg syscall (linux-arm-cgo), const IFLA_IFALIAS = 20 pkg syscall (linux-arm-cgo), const IFLA_IFNAME = 3 pkg syscall (linux-arm-cgo), const IFLA_LINK = 5 pkg syscall (linux-arm-cgo), const IFLA_LINKINFO = 18 pkg syscall (linux-arm-cgo), const IFLA_LINKMODE = 17 pkg syscall (linux-arm-cgo), const IFLA_MAP = 14 pkg syscall (linux-arm-cgo), const IFLA_MASTER = 10 pkg syscall (linux-arm-cgo), const IFLA_MAX = 29 pkg syscall (linux-arm-cgo), const IFLA_MTU = 4 pkg syscall (linux-arm-cgo), const IFLA_NET_NS_PID = 19 pkg syscall (linux-arm-cgo), const IFLA_OPERSTATE = 16 pkg syscall (linux-arm-cgo), const IFLA_PRIORITY = 9 pkg syscall (linux-arm-cgo), const IFLA_PROTINFO = 12 pkg syscall (linux-arm-cgo), const IFLA_QDISC = 6 pkg syscall (linux-arm-cgo), const IFLA_STATS = 7 pkg syscall (linux-arm-cgo), const IFLA_TXQLEN = 13 pkg syscall (linux-arm-cgo), const IFLA_UNSPEC = 0 pkg syscall (linux-arm-cgo), const IFLA_WEIGHT = 15 pkg syscall (linux-arm-cgo), const IFLA_WIRELESS = 11 pkg syscall (linux-arm-cgo), const IFNAMSIZ = 16 pkg syscall (linux-arm-cgo), const IGNBRK = 1 pkg syscall (linux-arm-cgo), const IGNCR = 128 pkg syscall (linux-arm-cgo), const IGNPAR = 4 pkg syscall (linux-arm-cgo), const IMAXBEL = 8192 pkg syscall (linux-arm-cgo), const INLCR = 64 pkg syscall (linux-arm-cgo), const INPCK = 16 pkg syscall (linux-arm-cgo), const IN_ACCESS = 1 pkg syscall (linux-arm-cgo), const IN_ALL_EVENTS = 4095 pkg syscall (linux-arm-cgo), const IN_ATTRIB = 4 pkg syscall (linux-arm-cgo), const IN_CLASSA_HOST = 16777215 pkg syscall (linux-arm-cgo), const IN_CLASSA_MAX = 128 pkg syscall (linux-arm-cgo), const IN_CLASSA_NET = 4278190080 pkg syscall (linux-arm-cgo), const IN_CLASSA_NSHIFT = 24 pkg syscall (linux-arm-cgo), const IN_CLASSB_HOST = 65535 pkg syscall (linux-arm-cgo), const IN_CLASSB_MAX = 65536 pkg syscall (linux-arm-cgo), const IN_CLASSB_NET = 4294901760 pkg syscall (linux-arm-cgo), const IN_CLASSB_NSHIFT = 16 pkg syscall (linux-arm-cgo), const IN_CLASSC_HOST = 255 pkg syscall (linux-arm-cgo), const IN_CLASSC_NET = 4294967040 pkg syscall (linux-arm-cgo), const IN_CLASSC_NSHIFT = 8 pkg syscall (linux-arm-cgo), const IN_CLOEXEC = 524288 pkg syscall (linux-arm-cgo), const IN_CLOSE = 24 pkg syscall (linux-arm-cgo), const IN_CLOSE_NOWRITE = 16 pkg syscall (linux-arm-cgo), const IN_CLOSE_WRITE = 8 pkg syscall (linux-arm-cgo), const IN_CREATE = 256 pkg syscall (linux-arm-cgo), const IN_DELETE = 512 pkg syscall (linux-arm-cgo), const IN_DELETE_SELF = 1024 pkg syscall (linux-arm-cgo), const IN_DONT_FOLLOW = 33554432 pkg syscall (linux-arm-cgo), const IN_EXCL_UNLINK = 67108864 pkg syscall (linux-arm-cgo), const IN_IGNORED = 32768 pkg syscall (linux-arm-cgo), const IN_ISDIR = 1073741824 pkg syscall (linux-arm-cgo), const IN_LOOPBACKNET = 127 pkg syscall (linux-arm-cgo), const IN_MASK_ADD = 536870912 pkg syscall (linux-arm-cgo), const IN_MODIFY = 2 pkg syscall (linux-arm-cgo), const IN_MOVE = 192 pkg syscall (linux-arm-cgo), const IN_MOVED_FROM = 64 pkg syscall (linux-arm-cgo), const IN_MOVED_TO = 128 pkg syscall (linux-arm-cgo), const IN_MOVE_SELF = 2048 pkg syscall (linux-arm-cgo), const IN_NONBLOCK = 2048 pkg syscall (linux-arm-cgo), const IN_ONESHOT = 2147483648 pkg syscall (linux-arm-cgo), const IN_ONLYDIR = 16777216 pkg syscall (linux-arm-cgo), const IN_OPEN = 32 pkg syscall (linux-arm-cgo), const IN_Q_OVERFLOW = 16384 pkg syscall (linux-arm-cgo), const IN_UNMOUNT = 8192 pkg syscall (linux-arm-cgo), const IPPROTO_AH = 51 pkg syscall (linux-arm-cgo), const IPPROTO_COMP = 108 pkg syscall (linux-arm-cgo), const IPPROTO_DCCP = 33 pkg syscall (linux-arm-cgo), const IPPROTO_DSTOPTS = 60 pkg syscall (linux-arm-cgo), const IPPROTO_EGP = 8 pkg syscall (linux-arm-cgo), const IPPROTO_ENCAP = 98 pkg syscall (linux-arm-cgo), const IPPROTO_ESP = 50 pkg syscall (linux-arm-cgo), const IPPROTO_FRAGMENT = 44 pkg syscall (linux-arm-cgo), const IPPROTO_GRE = 47 pkg syscall (linux-arm-cgo), const IPPROTO_HOPOPTS = 0 pkg syscall (linux-arm-cgo), const IPPROTO_ICMP = 1 pkg syscall (linux-arm-cgo), const IPPROTO_ICMPV6 = 58 pkg syscall (linux-arm-cgo), const IPPROTO_IDP = 22 pkg syscall (linux-arm-cgo), const IPPROTO_IGMP = 2 pkg syscall (linux-arm-cgo), const IPPROTO_IPIP = 4 pkg syscall (linux-arm-cgo), const IPPROTO_MTP = 92 pkg syscall (linux-arm-cgo), const IPPROTO_NONE = 59 pkg syscall (linux-arm-cgo), const IPPROTO_PIM = 103 pkg syscall (linux-arm-cgo), const IPPROTO_PUP = 12 pkg syscall (linux-arm-cgo), const IPPROTO_RAW = 255 pkg syscall (linux-arm-cgo), const IPPROTO_ROUTING = 43 pkg syscall (linux-arm-cgo), const IPPROTO_RSVP = 46 pkg syscall (linux-arm-cgo), const IPPROTO_SCTP = 132 pkg syscall (linux-arm-cgo), const IPPROTO_TP = 29 pkg syscall (linux-arm-cgo), const IPPROTO_UDPLITE = 136 pkg syscall (linux-arm-cgo), const IPV6_2292DSTOPTS = 4 pkg syscall (linux-arm-cgo), const IPV6_2292HOPLIMIT = 8 pkg syscall (linux-arm-cgo), const IPV6_2292HOPOPTS = 3 pkg syscall (linux-arm-cgo), const IPV6_2292PKTINFO = 2 pkg syscall (linux-arm-cgo), const IPV6_2292PKTOPTIONS = 6 pkg syscall (linux-arm-cgo), const IPV6_2292RTHDR = 5 pkg syscall (linux-arm-cgo), const IPV6_ADDRFORM = 1 pkg syscall (linux-arm-cgo), const IPV6_ADD_MEMBERSHIP = 20 pkg syscall (linux-arm-cgo), const IPV6_AUTHHDR = 10 pkg syscall (linux-arm-cgo), const IPV6_CHECKSUM = 7 pkg syscall (linux-arm-cgo), const IPV6_DROP_MEMBERSHIP = 21 pkg syscall (linux-arm-cgo), const IPV6_DSTOPTS = 59 pkg syscall (linux-arm-cgo), const IPV6_HOPLIMIT = 52 pkg syscall (linux-arm-cgo), const IPV6_HOPOPTS = 54 pkg syscall (linux-arm-cgo), const IPV6_IPSEC_POLICY = 34 pkg syscall (linux-arm-cgo), const IPV6_JOIN_ANYCAST = 27 pkg syscall (linux-arm-cgo), const IPV6_JOIN_GROUP = 20 pkg syscall (linux-arm-cgo), const IPV6_LEAVE_ANYCAST = 28 pkg syscall (linux-arm-cgo), const IPV6_LEAVE_GROUP = 21 pkg syscall (linux-arm-cgo), const IPV6_MTU = 24 pkg syscall (linux-arm-cgo), const IPV6_MTU_DISCOVER = 23 pkg syscall (linux-arm-cgo), const IPV6_MULTICAST_HOPS = 18 pkg syscall (linux-arm-cgo), const IPV6_MULTICAST_IF = 17 pkg syscall (linux-arm-cgo), const IPV6_MULTICAST_LOOP = 19 pkg syscall (linux-arm-cgo), const IPV6_NEXTHOP = 9 pkg syscall (linux-arm-cgo), const IPV6_PKTINFO = 50 pkg syscall (linux-arm-cgo), const IPV6_PMTUDISC_DO = 2 pkg syscall (linux-arm-cgo), const IPV6_PMTUDISC_DONT = 0 pkg syscall (linux-arm-cgo), const IPV6_PMTUDISC_PROBE = 3 pkg syscall (linux-arm-cgo), const IPV6_PMTUDISC_WANT = 1 pkg syscall (linux-arm-cgo), const IPV6_RECVDSTOPTS = 58 pkg syscall (linux-arm-cgo), const IPV6_RECVERR = 25 pkg syscall (linux-arm-cgo), const IPV6_RECVHOPLIMIT = 51 pkg syscall (linux-arm-cgo), const IPV6_RECVHOPOPTS = 53 pkg syscall (linux-arm-cgo), const IPV6_RECVPKTINFO = 49 pkg syscall (linux-arm-cgo), const IPV6_RECVRTHDR = 56 pkg syscall (linux-arm-cgo), const IPV6_RECVTCLASS = 66 pkg syscall (linux-arm-cgo), const IPV6_ROUTER_ALERT = 22 pkg syscall (linux-arm-cgo), const IPV6_RTHDR = 57 pkg syscall (linux-arm-cgo), const IPV6_RTHDRDSTOPTS = 55 pkg syscall (linux-arm-cgo), const IPV6_RTHDR_LOOSE = 0 pkg syscall (linux-arm-cgo), const IPV6_RTHDR_STRICT = 1 pkg syscall (linux-arm-cgo), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (linux-arm-cgo), const IPV6_RXDSTOPTS = 59 pkg syscall (linux-arm-cgo), const IPV6_RXHOPOPTS = 54 pkg syscall (linux-arm-cgo), const IPV6_TCLASS = 67 pkg syscall (linux-arm-cgo), const IPV6_UNICAST_HOPS = 16 pkg syscall (linux-arm-cgo), const IPV6_V6ONLY = 26 pkg syscall (linux-arm-cgo), const IPV6_XFRM_POLICY = 35 pkg syscall (linux-arm-cgo), const IP_ADD_MEMBERSHIP = 35 pkg syscall (linux-arm-cgo), const IP_ADD_SOURCE_MEMBERSHIP = 39 pkg syscall (linux-arm-cgo), const IP_BLOCK_SOURCE = 38 pkg syscall (linux-arm-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (linux-arm-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (linux-arm-cgo), const IP_DF = 16384 pkg syscall (linux-arm-cgo), const IP_DROP_MEMBERSHIP = 36 pkg syscall (linux-arm-cgo), const IP_DROP_SOURCE_MEMBERSHIP = 40 pkg syscall (linux-arm-cgo), const IP_FREEBIND = 15 pkg syscall (linux-arm-cgo), const IP_HDRINCL = 3 pkg syscall (linux-arm-cgo), const IP_IPSEC_POLICY = 16 pkg syscall (linux-arm-cgo), const IP_MAXPACKET = 65535 pkg syscall (linux-arm-cgo), const IP_MAX_MEMBERSHIPS = 20 pkg syscall (linux-arm-cgo), const IP_MF = 8192 pkg syscall (linux-arm-cgo), const IP_MINTTL = 21 pkg syscall (linux-arm-cgo), const IP_MSFILTER = 41 pkg syscall (linux-arm-cgo), const IP_MSS = 576 pkg syscall (linux-arm-cgo), const IP_MTU = 14 pkg syscall (linux-arm-cgo), const IP_MTU_DISCOVER = 10 pkg syscall (linux-arm-cgo), const IP_MULTICAST_IF = 32 pkg syscall (linux-arm-cgo), const IP_MULTICAST_LOOP = 34 pkg syscall (linux-arm-cgo), const IP_MULTICAST_TTL = 33 pkg syscall (linux-arm-cgo), const IP_OFFMASK = 8191 pkg syscall (linux-arm-cgo), const IP_OPTIONS = 4 pkg syscall (linux-arm-cgo), const IP_ORIGDSTADDR = 20 pkg syscall (linux-arm-cgo), const IP_PASSSEC = 18 pkg syscall (linux-arm-cgo), const IP_PKTINFO = 8 pkg syscall (linux-arm-cgo), const IP_PKTOPTIONS = 9 pkg syscall (linux-arm-cgo), const IP_PMTUDISC = 10 pkg syscall (linux-arm-cgo), const IP_PMTUDISC_DO = 2 pkg syscall (linux-arm-cgo), const IP_PMTUDISC_DONT = 0 pkg syscall (linux-arm-cgo), const IP_PMTUDISC_PROBE = 3 pkg syscall (linux-arm-cgo), const IP_PMTUDISC_WANT = 1 pkg syscall (linux-arm-cgo), const IP_RECVERR = 11 pkg syscall (linux-arm-cgo), const IP_RECVOPTS = 6 pkg syscall (linux-arm-cgo), const IP_RECVORIGDSTADDR = 20 pkg syscall (linux-arm-cgo), const IP_RECVRETOPTS = 7 pkg syscall (linux-arm-cgo), const IP_RECVTOS = 13 pkg syscall (linux-arm-cgo), const IP_RECVTTL = 12 pkg syscall (linux-arm-cgo), const IP_RETOPTS = 7 pkg syscall (linux-arm-cgo), const IP_RF = 32768 pkg syscall (linux-arm-cgo), const IP_ROUTER_ALERT = 5 pkg syscall (linux-arm-cgo), const IP_TOS = 1 pkg syscall (linux-arm-cgo), const IP_TRANSPARENT = 19 pkg syscall (linux-arm-cgo), const IP_TTL = 2 pkg syscall (linux-arm-cgo), const IP_UNBLOCK_SOURCE = 37 pkg syscall (linux-arm-cgo), const IP_XFRM_POLICY = 17 pkg syscall (linux-arm-cgo), const ISIG = 1 pkg syscall (linux-arm-cgo), const ISTRIP = 32 pkg syscall (linux-arm-cgo), const IUCLC = 512 pkg syscall (linux-arm-cgo), const IUTF8 = 16384 pkg syscall (linux-arm-cgo), const IXANY = 2048 pkg syscall (linux-arm-cgo), const IXOFF = 4096 pkg syscall (linux-arm-cgo), const IXON = 1024 pkg syscall (linux-arm-cgo), const ImplementsGetwd = true pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_CAD_OFF = 0 pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_CAD_ON = 2309737967 pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_HALT = 3454992675 pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_KEXEC = 1163412803 pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_POWER_OFF = 1126301404 pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_RESTART = 19088743 pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_RESTART2 = 2712847316 pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_SW_SUSPEND = 3489725666 pkg syscall (linux-arm-cgo), const LINUX_REBOOT_MAGIC1 = 4276215469 pkg syscall (linux-arm-cgo), const LINUX_REBOOT_MAGIC2 = 672274793 pkg syscall (linux-arm-cgo), const LOCK_EX = 2 pkg syscall (linux-arm-cgo), const LOCK_NB = 4 pkg syscall (linux-arm-cgo), const LOCK_SH = 1 pkg syscall (linux-arm-cgo), const LOCK_UN = 8 pkg syscall (linux-arm-cgo), const MADV_DOFORK = 11 pkg syscall (linux-arm-cgo), const MADV_DONTFORK = 10 pkg syscall (linux-arm-cgo), const MADV_DONTNEED = 4 pkg syscall (linux-arm-cgo), const MADV_HUGEPAGE = 14 pkg syscall (linux-arm-cgo), const MADV_HWPOISON = 100 pkg syscall (linux-arm-cgo), const MADV_MERGEABLE = 12 pkg syscall (linux-arm-cgo), const MADV_NOHUGEPAGE = 15 pkg syscall (linux-arm-cgo), const MADV_NORMAL = 0 pkg syscall (linux-arm-cgo), const MADV_RANDOM = 1 pkg syscall (linux-arm-cgo), const MADV_REMOVE = 9 pkg syscall (linux-arm-cgo), const MADV_SEQUENTIAL = 2 pkg syscall (linux-arm-cgo), const MADV_UNMERGEABLE = 13 pkg syscall (linux-arm-cgo), const MADV_WILLNEED = 3 pkg syscall (linux-arm-cgo), const MAP_ANON = 32 pkg syscall (linux-arm-cgo), const MAP_ANONYMOUS = 32 pkg syscall (linux-arm-cgo), const MAP_DENYWRITE = 2048 pkg syscall (linux-arm-cgo), const MAP_EXECUTABLE = 4096 pkg syscall (linux-arm-cgo), const MAP_FILE = 0 pkg syscall (linux-arm-cgo), const MAP_FIXED = 16 pkg syscall (linux-arm-cgo), const MAP_GROWSDOWN = 256 pkg syscall (linux-arm-cgo), const MAP_LOCKED = 8192 pkg syscall (linux-arm-cgo), const MAP_NONBLOCK = 65536 pkg syscall (linux-arm-cgo), const MAP_NORESERVE = 16384 pkg syscall (linux-arm-cgo), const MAP_POPULATE = 32768 pkg syscall (linux-arm-cgo), const MAP_PRIVATE = 2 pkg syscall (linux-arm-cgo), const MAP_SHARED = 1 pkg syscall (linux-arm-cgo), const MAP_TYPE = 15 pkg syscall (linux-arm-cgo), const MCL_CURRENT = 1 pkg syscall (linux-arm-cgo), const MCL_FUTURE = 2 pkg syscall (linux-arm-cgo), const MNT_DETACH = 2 pkg syscall (linux-arm-cgo), const MNT_EXPIRE = 4 pkg syscall (linux-arm-cgo), const MNT_FORCE = 1 pkg syscall (linux-arm-cgo), const MSG_CMSG_CLOEXEC = 1073741824 pkg syscall (linux-arm-cgo), const MSG_CONFIRM = 2048 pkg syscall (linux-arm-cgo), const MSG_CTRUNC = 8 pkg syscall (linux-arm-cgo), const MSG_DONTROUTE = 4 pkg syscall (linux-arm-cgo), const MSG_DONTWAIT = 64 pkg syscall (linux-arm-cgo), const MSG_EOR = 128 pkg syscall (linux-arm-cgo), const MSG_ERRQUEUE = 8192 pkg syscall (linux-arm-cgo), const MSG_FASTOPEN = 536870912 pkg syscall (linux-arm-cgo), const MSG_FIN = 512 pkg syscall (linux-arm-cgo), const MSG_MORE = 32768 pkg syscall (linux-arm-cgo), const MSG_NOSIGNAL = 16384 pkg syscall (linux-arm-cgo), const MSG_OOB = 1 pkg syscall (linux-arm-cgo), const MSG_PEEK = 2 pkg syscall (linux-arm-cgo), const MSG_PROXY = 16 pkg syscall (linux-arm-cgo), const MSG_RST = 4096 pkg syscall (linux-arm-cgo), const MSG_SYN = 1024 pkg syscall (linux-arm-cgo), const MSG_TRUNC = 32 pkg syscall (linux-arm-cgo), const MSG_TRYHARD = 4 pkg syscall (linux-arm-cgo), const MSG_WAITALL = 256 pkg syscall (linux-arm-cgo), const MSG_WAITFORONE = 65536 pkg syscall (linux-arm-cgo), const MS_ACTIVE = 1073741824 pkg syscall (linux-arm-cgo), const MS_ASYNC = 1 pkg syscall (linux-arm-cgo), const MS_BIND = 4096 pkg syscall (linux-arm-cgo), const MS_DIRSYNC = 128 pkg syscall (linux-arm-cgo), const MS_INVALIDATE = 2 pkg syscall (linux-arm-cgo), const MS_I_VERSION = 8388608 pkg syscall (linux-arm-cgo), const MS_KERNMOUNT = 4194304 pkg syscall (linux-arm-cgo), const MS_MANDLOCK = 64 pkg syscall (linux-arm-cgo), const MS_MGC_MSK = 4294901760 pkg syscall (linux-arm-cgo), const MS_MGC_VAL = 3236757504 pkg syscall (linux-arm-cgo), const MS_MOVE = 8192 pkg syscall (linux-arm-cgo), const MS_NOATIME = 1024 pkg syscall (linux-arm-cgo), const MS_NODEV = 4 pkg syscall (linux-arm-cgo), const MS_NODIRATIME = 2048 pkg syscall (linux-arm-cgo), const MS_NOEXEC = 8 pkg syscall (linux-arm-cgo), const MS_NOSUID = 2 pkg syscall (linux-arm-cgo), const MS_NOUSER = -2147483648 pkg syscall (linux-arm-cgo), const MS_POSIXACL = 65536 pkg syscall (linux-arm-cgo), const MS_PRIVATE = 262144 pkg syscall (linux-arm-cgo), const MS_RDONLY = 1 pkg syscall (linux-arm-cgo), const MS_REC = 16384 pkg syscall (linux-arm-cgo), const MS_RELATIME = 2097152 pkg syscall (linux-arm-cgo), const MS_REMOUNT = 32 pkg syscall (linux-arm-cgo), const MS_RMT_MASK = 8388689 pkg syscall (linux-arm-cgo), const MS_SHARED = 1048576 pkg syscall (linux-arm-cgo), const MS_SILENT = 32768 pkg syscall (linux-arm-cgo), const MS_SLAVE = 524288 pkg syscall (linux-arm-cgo), const MS_STRICTATIME = 16777216 pkg syscall (linux-arm-cgo), const MS_SYNC = 4 pkg syscall (linux-arm-cgo), const MS_SYNCHRONOUS = 16 pkg syscall (linux-arm-cgo), const MS_UNBINDABLE = 131072 pkg syscall (linux-arm-cgo), const NAME_MAX = 255 pkg syscall (linux-arm-cgo), const NETLINK_ADD_MEMBERSHIP = 1 pkg syscall (linux-arm-cgo), const NETLINK_AUDIT = 9 pkg syscall (linux-arm-cgo), const NETLINK_BROADCAST_ERROR = 4 pkg syscall (linux-arm-cgo), const NETLINK_CONNECTOR = 11 pkg syscall (linux-arm-cgo), const NETLINK_DNRTMSG = 14 pkg syscall (linux-arm-cgo), const NETLINK_DROP_MEMBERSHIP = 2 pkg syscall (linux-arm-cgo), const NETLINK_ECRYPTFS = 19 pkg syscall (linux-arm-cgo), const NETLINK_FIB_LOOKUP = 10 pkg syscall (linux-arm-cgo), const NETLINK_FIREWALL = 3 pkg syscall (linux-arm-cgo), const NETLINK_GENERIC = 16 pkg syscall (linux-arm-cgo), const NETLINK_INET_DIAG = 4 pkg syscall (linux-arm-cgo), const NETLINK_IP6_FW = 13 pkg syscall (linux-arm-cgo), const NETLINK_ISCSI = 8 pkg syscall (linux-arm-cgo), const NETLINK_KOBJECT_UEVENT = 15 pkg syscall (linux-arm-cgo), const NETLINK_NETFILTER = 12 pkg syscall (linux-arm-cgo), const NETLINK_NFLOG = 5 pkg syscall (linux-arm-cgo), const NETLINK_NO_ENOBUFS = 5 pkg syscall (linux-arm-cgo), const NETLINK_PKTINFO = 3 pkg syscall (linux-arm-cgo), const NETLINK_RDMA = 20 pkg syscall (linux-arm-cgo), const NETLINK_ROUTE = 0 pkg syscall (linux-arm-cgo), const NETLINK_SCSITRANSPORT = 18 pkg syscall (linux-arm-cgo), const NETLINK_SELINUX = 7 pkg syscall (linux-arm-cgo), const NETLINK_UNUSED = 1 pkg syscall (linux-arm-cgo), const NETLINK_USERSOCK = 2 pkg syscall (linux-arm-cgo), const NETLINK_XFRM = 6 pkg syscall (linux-arm-cgo), const NLA_ALIGNTO = 4 pkg syscall (linux-arm-cgo), const NLA_F_NESTED = 32768 pkg syscall (linux-arm-cgo), const NLA_F_NET_BYTEORDER = 16384 pkg syscall (linux-arm-cgo), const NLA_HDRLEN = 4 pkg syscall (linux-arm-cgo), const NLMSG_ALIGNTO = 4 pkg syscall (linux-arm-cgo), const NLMSG_DONE = 3 pkg syscall (linux-arm-cgo), const NLMSG_ERROR = 2 pkg syscall (linux-arm-cgo), const NLMSG_HDRLEN = 16 pkg syscall (linux-arm-cgo), const NLMSG_MIN_TYPE = 16 pkg syscall (linux-arm-cgo), const NLMSG_NOOP = 1 pkg syscall (linux-arm-cgo), const NLMSG_OVERRUN = 4 pkg syscall (linux-arm-cgo), const NLM_F_ACK = 4 pkg syscall (linux-arm-cgo), const NLM_F_APPEND = 2048 pkg syscall (linux-arm-cgo), const NLM_F_ATOMIC = 1024 pkg syscall (linux-arm-cgo), const NLM_F_CREATE = 1024 pkg syscall (linux-arm-cgo), const NLM_F_DUMP = 768 pkg syscall (linux-arm-cgo), const NLM_F_ECHO = 8 pkg syscall (linux-arm-cgo), const NLM_F_EXCL = 512 pkg syscall (linux-arm-cgo), const NLM_F_MATCH = 512 pkg syscall (linux-arm-cgo), const NLM_F_MULTI = 2 pkg syscall (linux-arm-cgo), const NLM_F_REPLACE = 256 pkg syscall (linux-arm-cgo), const NLM_F_REQUEST = 1 pkg syscall (linux-arm-cgo), const NLM_F_ROOT = 256 pkg syscall (linux-arm-cgo), const NOFLSH = 128 pkg syscall (linux-arm-cgo), const OCRNL = 8 pkg syscall (linux-arm-cgo), const OFDEL = 128 pkg syscall (linux-arm-cgo), const OFILL = 64 pkg syscall (linux-arm-cgo), const OLCUC = 2 pkg syscall (linux-arm-cgo), const ONLCR = 4 pkg syscall (linux-arm-cgo), const ONLRET = 32 pkg syscall (linux-arm-cgo), const ONOCR = 16 pkg syscall (linux-arm-cgo), const OPOST = 1 pkg syscall (linux-arm-cgo), const O_ACCMODE = 3 pkg syscall (linux-arm-cgo), const O_APPEND = 1024 pkg syscall (linux-arm-cgo), const O_ASYNC = 8192 pkg syscall (linux-arm-cgo), const O_CLOEXEC = 524288 pkg syscall (linux-arm-cgo), const O_CREAT = 64 pkg syscall (linux-arm-cgo), const O_DIRECT = 65536 pkg syscall (linux-arm-cgo), const O_DIRECTORY = 16384 pkg syscall (linux-arm-cgo), const O_DSYNC = 4096 pkg syscall (linux-arm-cgo), const O_EXCL = 128 pkg syscall (linux-arm-cgo), const O_FSYNC = 4096 pkg syscall (linux-arm-cgo), const O_LARGEFILE = 131072 pkg syscall (linux-arm-cgo), const O_NDELAY = 2048 pkg syscall (linux-arm-cgo), const O_NOATIME = 262144 pkg syscall (linux-arm-cgo), const O_NOCTTY = 256 pkg syscall (linux-arm-cgo), const O_NOFOLLOW = 32768 pkg syscall (linux-arm-cgo), const O_NONBLOCK = 2048 pkg syscall (linux-arm-cgo), const O_RSYNC = 4096 pkg syscall (linux-arm-cgo), const O_SYNC = 4096 pkg syscall (linux-arm-cgo), const O_TRUNC = 512 pkg syscall (linux-arm-cgo), const PACKET_ADD_MEMBERSHIP = 1 pkg syscall (linux-arm-cgo), const PACKET_BROADCAST = 1 pkg syscall (linux-arm-cgo), const PACKET_DROP_MEMBERSHIP = 2 pkg syscall (linux-arm-cgo), const PACKET_FASTROUTE = 6 pkg syscall (linux-arm-cgo), const PACKET_HOST = 0 pkg syscall (linux-arm-cgo), const PACKET_LOOPBACK = 5 pkg syscall (linux-arm-cgo), const PACKET_MR_ALLMULTI = 2 pkg syscall (linux-arm-cgo), const PACKET_MR_MULTICAST = 0 pkg syscall (linux-arm-cgo), const PACKET_MR_PROMISC = 1 pkg syscall (linux-arm-cgo), const PACKET_MULTICAST = 2 pkg syscall (linux-arm-cgo), const PACKET_OTHERHOST = 3 pkg syscall (linux-arm-cgo), const PACKET_OUTGOING = 4 pkg syscall (linux-arm-cgo), const PACKET_RECV_OUTPUT = 3 pkg syscall (linux-arm-cgo), const PACKET_RX_RING = 5 pkg syscall (linux-arm-cgo), const PACKET_STATISTICS = 6 pkg syscall (linux-arm-cgo), const PARENB = 256 pkg syscall (linux-arm-cgo), const PARMRK = 8 pkg syscall (linux-arm-cgo), const PARODD = 512 pkg syscall (linux-arm-cgo), const PENDIN = 16384 pkg syscall (linux-arm-cgo), const PROT_EXEC = 4 pkg syscall (linux-arm-cgo), const PROT_GROWSDOWN = 16777216 pkg syscall (linux-arm-cgo), const PROT_GROWSUP = 33554432 pkg syscall (linux-arm-cgo), const PROT_NONE = 0 pkg syscall (linux-arm-cgo), const PROT_READ = 1 pkg syscall (linux-arm-cgo), const PROT_WRITE = 2 pkg syscall (linux-arm-cgo), const PR_CAPBSET_DROP = 24 pkg syscall (linux-arm-cgo), const PR_CAPBSET_READ = 23 pkg syscall (linux-arm-cgo), const PR_CLEAR_SECCOMP_FILTER = 37 pkg syscall (linux-arm-cgo), const PR_ENDIAN_BIG = 0 pkg syscall (linux-arm-cgo), const PR_ENDIAN_LITTLE = 1 pkg syscall (linux-arm-cgo), const PR_ENDIAN_PPC_LITTLE = 2 pkg syscall (linux-arm-cgo), const PR_FPEMU_NOPRINT = 1 pkg syscall (linux-arm-cgo), const PR_FPEMU_SIGFPE = 2 pkg syscall (linux-arm-cgo), const PR_FP_EXC_ASYNC = 2 pkg syscall (linux-arm-cgo), const PR_FP_EXC_DISABLED = 0 pkg syscall (linux-arm-cgo), const PR_FP_EXC_DIV = 65536 pkg syscall (linux-arm-cgo), const PR_FP_EXC_INV = 1048576 pkg syscall (linux-arm-cgo), const PR_FP_EXC_NONRECOV = 1 pkg syscall (linux-arm-cgo), const PR_FP_EXC_OVF = 131072 pkg syscall (linux-arm-cgo), const PR_FP_EXC_PRECISE = 3 pkg syscall (linux-arm-cgo), const PR_FP_EXC_RES = 524288 pkg syscall (linux-arm-cgo), const PR_FP_EXC_SW_ENABLE = 128 pkg syscall (linux-arm-cgo), const PR_FP_EXC_UND = 262144 pkg syscall (linux-arm-cgo), const PR_GET_DUMPABLE = 3 pkg syscall (linux-arm-cgo), const PR_GET_ENDIAN = 19 pkg syscall (linux-arm-cgo), const PR_GET_FPEMU = 9 pkg syscall (linux-arm-cgo), const PR_GET_FPEXC = 11 pkg syscall (linux-arm-cgo), const PR_GET_KEEPCAPS = 7 pkg syscall (linux-arm-cgo), const PR_GET_NAME = 16 pkg syscall (linux-arm-cgo), const PR_GET_PDEATHSIG = 2 pkg syscall (linux-arm-cgo), const PR_GET_SECCOMP = 21 pkg syscall (linux-arm-cgo), const PR_GET_SECCOMP_FILTER = 35 pkg syscall (linux-arm-cgo), const PR_GET_SECUREBITS = 27 pkg syscall (linux-arm-cgo), const PR_GET_TIMERSLACK = 30 pkg syscall (linux-arm-cgo), const PR_GET_TIMING = 13 pkg syscall (linux-arm-cgo), const PR_GET_TSC = 25 pkg syscall (linux-arm-cgo), const PR_GET_UNALIGN = 5 pkg syscall (linux-arm-cgo), const PR_MCE_KILL = 33 pkg syscall (linux-arm-cgo), const PR_MCE_KILL_CLEAR = 0 pkg syscall (linux-arm-cgo), const PR_MCE_KILL_DEFAULT = 2 pkg syscall (linux-arm-cgo), const PR_MCE_KILL_EARLY = 1 pkg syscall (linux-arm-cgo), const PR_MCE_KILL_GET = 34 pkg syscall (linux-arm-cgo), const PR_MCE_KILL_LATE = 0 pkg syscall (linux-arm-cgo), const PR_MCE_KILL_SET = 1 pkg syscall (linux-arm-cgo), const PR_SECCOMP_FILTER_EVENT = 1 pkg syscall (linux-arm-cgo), const PR_SECCOMP_FILTER_SYSCALL = 0 pkg syscall (linux-arm-cgo), const PR_SET_DUMPABLE = 4 pkg syscall (linux-arm-cgo), const PR_SET_ENDIAN = 20 pkg syscall (linux-arm-cgo), const PR_SET_FPEMU = 10 pkg syscall (linux-arm-cgo), const PR_SET_FPEXC = 12 pkg syscall (linux-arm-cgo), const PR_SET_KEEPCAPS = 8 pkg syscall (linux-arm-cgo), const PR_SET_NAME = 15 pkg syscall (linux-arm-cgo), const PR_SET_PDEATHSIG = 1 pkg syscall (linux-arm-cgo), const PR_SET_PTRACER = 1499557217 pkg syscall (linux-arm-cgo), const PR_SET_SECCOMP = 22 pkg syscall (linux-arm-cgo), const PR_SET_SECCOMP_FILTER = 36 pkg syscall (linux-arm-cgo), const PR_SET_SECUREBITS = 28 pkg syscall (linux-arm-cgo), const PR_SET_TIMERSLACK = 29 pkg syscall (linux-arm-cgo), const PR_SET_TIMING = 14 pkg syscall (linux-arm-cgo), const PR_SET_TSC = 26 pkg syscall (linux-arm-cgo), const PR_SET_UNALIGN = 6 pkg syscall (linux-arm-cgo), const PR_TASK_PERF_EVENTS_DISABLE = 31 pkg syscall (linux-arm-cgo), const PR_TASK_PERF_EVENTS_ENABLE = 32 pkg syscall (linux-arm-cgo), const PR_TIMING_STATISTICAL = 0 pkg syscall (linux-arm-cgo), const PR_TIMING_TIMESTAMP = 1 pkg syscall (linux-arm-cgo), const PR_TSC_ENABLE = 1 pkg syscall (linux-arm-cgo), const PR_TSC_SIGSEGV = 2 pkg syscall (linux-arm-cgo), const PR_UNALIGN_NOPRINT = 1 pkg syscall (linux-arm-cgo), const PR_UNALIGN_SIGBUS = 2 pkg syscall (linux-arm-cgo), const PTRACE_ATTACH = 16 pkg syscall (linux-arm-cgo), const PTRACE_CONT = 7 pkg syscall (linux-arm-cgo), const PTRACE_DETACH = 17 pkg syscall (linux-arm-cgo), const PTRACE_EVENT_CLONE = 3 pkg syscall (linux-arm-cgo), const PTRACE_EVENT_EXEC = 4 pkg syscall (linux-arm-cgo), const PTRACE_EVENT_EXIT = 6 pkg syscall (linux-arm-cgo), const PTRACE_EVENT_FORK = 1 pkg syscall (linux-arm-cgo), const PTRACE_EVENT_VFORK = 2 pkg syscall (linux-arm-cgo), const PTRACE_EVENT_VFORK_DONE = 5 pkg syscall (linux-arm-cgo), const PTRACE_GETCRUNCHREGS = 25 pkg syscall (linux-arm-cgo), const PTRACE_GETEVENTMSG = 16897 pkg syscall (linux-arm-cgo), const PTRACE_GETFPREGS = 14 pkg syscall (linux-arm-cgo), const PTRACE_GETHBPREGS = 29 pkg syscall (linux-arm-cgo), const PTRACE_GETREGS = 12 pkg syscall (linux-arm-cgo), const PTRACE_GETREGSET = 16900 pkg syscall (linux-arm-cgo), const PTRACE_GETSIGINFO = 16898 pkg syscall (linux-arm-cgo), const PTRACE_GETVFPREGS = 27 pkg syscall (linux-arm-cgo), const PTRACE_GETWMMXREGS = 18 pkg syscall (linux-arm-cgo), const PTRACE_GET_THREAD_AREA = 22 pkg syscall (linux-arm-cgo), const PTRACE_KILL = 8 pkg syscall (linux-arm-cgo), const PTRACE_OLDSETOPTIONS = 21 pkg syscall (linux-arm-cgo), const PTRACE_O_MASK = 127 pkg syscall (linux-arm-cgo), const PTRACE_O_TRACECLONE = 8 pkg syscall (linux-arm-cgo), const PTRACE_O_TRACEEXEC = 16 pkg syscall (linux-arm-cgo), const PTRACE_O_TRACEEXIT = 64 pkg syscall (linux-arm-cgo), const PTRACE_O_TRACEFORK = 2 pkg syscall (linux-arm-cgo), const PTRACE_O_TRACESYSGOOD = 1 pkg syscall (linux-arm-cgo), const PTRACE_O_TRACEVFORK = 4 pkg syscall (linux-arm-cgo), const PTRACE_O_TRACEVFORKDONE = 32 pkg syscall (linux-arm-cgo), const PTRACE_PEEKDATA = 2 pkg syscall (linux-arm-cgo), const PTRACE_PEEKTEXT = 1 pkg syscall (linux-arm-cgo), const PTRACE_PEEKUSR = 3 pkg syscall (linux-arm-cgo), const PTRACE_POKEDATA = 5 pkg syscall (linux-arm-cgo), const PTRACE_POKETEXT = 4 pkg syscall (linux-arm-cgo), const PTRACE_POKEUSR = 6 pkg syscall (linux-arm-cgo), const PTRACE_SETCRUNCHREGS = 26 pkg syscall (linux-arm-cgo), const PTRACE_SETFPREGS = 15 pkg syscall (linux-arm-cgo), const PTRACE_SETHBPREGS = 30 pkg syscall (linux-arm-cgo), const PTRACE_SETOPTIONS = 16896 pkg syscall (linux-arm-cgo), const PTRACE_SETREGS = 13 pkg syscall (linux-arm-cgo), const PTRACE_SETREGSET = 16901 pkg syscall (linux-arm-cgo), const PTRACE_SETSIGINFO = 16899 pkg syscall (linux-arm-cgo), const PTRACE_SETVFPREGS = 28 pkg syscall (linux-arm-cgo), const PTRACE_SETWMMXREGS = 19 pkg syscall (linux-arm-cgo), const PTRACE_SET_SYSCALL = 23 pkg syscall (linux-arm-cgo), const PTRACE_SINGLESTEP = 9 pkg syscall (linux-arm-cgo), const PTRACE_SYSCALL = 24 pkg syscall (linux-arm-cgo), const PTRACE_TRACEME = 0 pkg syscall (linux-arm-cgo), const PT_DATA_ADDR = 65540 pkg syscall (linux-arm-cgo), const PT_TEXT_ADDR = 65536 pkg syscall (linux-arm-cgo), const PT_TEXT_END_ADDR = 65544 pkg syscall (linux-arm-cgo), const PathMax = 4096 pkg syscall (linux-arm-cgo), const RLIMIT_AS = 9 pkg syscall (linux-arm-cgo), const RLIMIT_CORE = 4 pkg syscall (linux-arm-cgo), const RLIMIT_CPU = 0 pkg syscall (linux-arm-cgo), const RLIMIT_DATA = 2 pkg syscall (linux-arm-cgo), const RLIMIT_FSIZE = 1 pkg syscall (linux-arm-cgo), const RLIMIT_NOFILE = 7 pkg syscall (linux-arm-cgo), const RLIMIT_STACK = 3 pkg syscall (linux-arm-cgo), const RLIM_INFINITY = -1 pkg syscall (linux-arm-cgo), const RTAX_ADVMSS = 8 pkg syscall (linux-arm-cgo), const RTAX_CWND = 7 pkg syscall (linux-arm-cgo), const RTAX_FEATURES = 12 pkg syscall (linux-arm-cgo), const RTAX_FEATURE_ALLFRAG = 8 pkg syscall (linux-arm-cgo), const RTAX_FEATURE_ECN = 1 pkg syscall (linux-arm-cgo), const RTAX_FEATURE_SACK = 2 pkg syscall (linux-arm-cgo), const RTAX_FEATURE_TIMESTAMP = 4 pkg syscall (linux-arm-cgo), const RTAX_HOPLIMIT = 10 pkg syscall (linux-arm-cgo), const RTAX_INITCWND = 11 pkg syscall (linux-arm-cgo), const RTAX_INITRWND = 14 pkg syscall (linux-arm-cgo), const RTAX_LOCK = 1 pkg syscall (linux-arm-cgo), const RTAX_MAX = 14 pkg syscall (linux-arm-cgo), const RTAX_MTU = 2 pkg syscall (linux-arm-cgo), const RTAX_REORDERING = 9 pkg syscall (linux-arm-cgo), const RTAX_RTO_MIN = 13 pkg syscall (linux-arm-cgo), const RTAX_RTT = 4 pkg syscall (linux-arm-cgo), const RTAX_RTTVAR = 5 pkg syscall (linux-arm-cgo), const RTAX_SSTHRESH = 6 pkg syscall (linux-arm-cgo), const RTAX_UNSPEC = 0 pkg syscall (linux-arm-cgo), const RTAX_WINDOW = 3 pkg syscall (linux-arm-cgo), const RTA_ALIGNTO = 4 pkg syscall (linux-arm-cgo), const RTA_CACHEINFO = 12 pkg syscall (linux-arm-cgo), const RTA_DST = 1 pkg syscall (linux-arm-cgo), const RTA_FLOW = 11 pkg syscall (linux-arm-cgo), const RTA_GATEWAY = 5 pkg syscall (linux-arm-cgo), const RTA_IIF = 3 pkg syscall (linux-arm-cgo), const RTA_MAX = 16 pkg syscall (linux-arm-cgo), const RTA_METRICS = 8 pkg syscall (linux-arm-cgo), const RTA_MULTIPATH = 9 pkg syscall (linux-arm-cgo), const RTA_OIF = 4 pkg syscall (linux-arm-cgo), const RTA_PREFSRC = 7 pkg syscall (linux-arm-cgo), const RTA_PRIORITY = 6 pkg syscall (linux-arm-cgo), const RTA_SRC = 2 pkg syscall (linux-arm-cgo), const RTA_TABLE = 15 pkg syscall (linux-arm-cgo), const RTA_UNSPEC = 0 pkg syscall (linux-arm-cgo), const RTCF_DIRECTSRC = 67108864 pkg syscall (linux-arm-cgo), const RTCF_DOREDIRECT = 16777216 pkg syscall (linux-arm-cgo), const RTCF_LOG = 33554432 pkg syscall (linux-arm-cgo), const RTCF_MASQ = 4194304 pkg syscall (linux-arm-cgo), const RTCF_NAT = 8388608 pkg syscall (linux-arm-cgo), const RTCF_VALVE = 2097152 pkg syscall (linux-arm-cgo), const RTF_ADDRCLASSMASK = 4160749568 pkg syscall (linux-arm-cgo), const RTF_ADDRCONF = 262144 pkg syscall (linux-arm-cgo), const RTF_ALLONLINK = 131072 pkg syscall (linux-arm-cgo), const RTF_BROADCAST = 268435456 pkg syscall (linux-arm-cgo), const RTF_CACHE = 16777216 pkg syscall (linux-arm-cgo), const RTF_DEFAULT = 65536 pkg syscall (linux-arm-cgo), const RTF_DYNAMIC = 16 pkg syscall (linux-arm-cgo), const RTF_FLOW = 33554432 pkg syscall (linux-arm-cgo), const RTF_GATEWAY = 2 pkg syscall (linux-arm-cgo), const RTF_HOST = 4 pkg syscall (linux-arm-cgo), const RTF_INTERFACE = 1073741824 pkg syscall (linux-arm-cgo), const RTF_IRTT = 256 pkg syscall (linux-arm-cgo), const RTF_LINKRT = 1048576 pkg syscall (linux-arm-cgo), const RTF_LOCAL = 2147483648 pkg syscall (linux-arm-cgo), const RTF_MODIFIED = 32 pkg syscall (linux-arm-cgo), const RTF_MSS = 64 pkg syscall (linux-arm-cgo), const RTF_MTU = 64 pkg syscall (linux-arm-cgo), const RTF_MULTICAST = 536870912 pkg syscall (linux-arm-cgo), const RTF_NAT = 134217728 pkg syscall (linux-arm-cgo), const RTF_NOFORWARD = 4096 pkg syscall (linux-arm-cgo), const RTF_NONEXTHOP = 2097152 pkg syscall (linux-arm-cgo), const RTF_NOPMTUDISC = 16384 pkg syscall (linux-arm-cgo), const RTF_POLICY = 67108864 pkg syscall (linux-arm-cgo), const RTF_REINSTATE = 8 pkg syscall (linux-arm-cgo), const RTF_REJECT = 512 pkg syscall (linux-arm-cgo), const RTF_STATIC = 1024 pkg syscall (linux-arm-cgo), const RTF_THROW = 8192 pkg syscall (linux-arm-cgo), const RTF_UP = 1 pkg syscall (linux-arm-cgo), const RTF_WINDOW = 128 pkg syscall (linux-arm-cgo), const RTF_XRESOLVE = 2048 pkg syscall (linux-arm-cgo), const RTM_BASE = 16 pkg syscall (linux-arm-cgo), const RTM_DELACTION = 49 pkg syscall (linux-arm-cgo), const RTM_DELADDR = 21 pkg syscall (linux-arm-cgo), const RTM_DELADDRLABEL = 73 pkg syscall (linux-arm-cgo), const RTM_DELLINK = 17 pkg syscall (linux-arm-cgo), const RTM_DELNEIGH = 29 pkg syscall (linux-arm-cgo), const RTM_DELQDISC = 37 pkg syscall (linux-arm-cgo), const RTM_DELROUTE = 25 pkg syscall (linux-arm-cgo), const RTM_DELRULE = 33 pkg syscall (linux-arm-cgo), const RTM_DELTCLASS = 41 pkg syscall (linux-arm-cgo), const RTM_DELTFILTER = 45 pkg syscall (linux-arm-cgo), const RTM_F_CLONED = 512 pkg syscall (linux-arm-cgo), const RTM_F_EQUALIZE = 1024 pkg syscall (linux-arm-cgo), const RTM_F_NOTIFY = 256 pkg syscall (linux-arm-cgo), const RTM_F_PREFIX = 2048 pkg syscall (linux-arm-cgo), const RTM_GETACTION = 50 pkg syscall (linux-arm-cgo), const RTM_GETADDR = 22 pkg syscall (linux-arm-cgo), const RTM_GETADDRLABEL = 74 pkg syscall (linux-arm-cgo), const RTM_GETANYCAST = 62 pkg syscall (linux-arm-cgo), const RTM_GETDCB = 78 pkg syscall (linux-arm-cgo), const RTM_GETLINK = 18 pkg syscall (linux-arm-cgo), const RTM_GETMULTICAST = 58 pkg syscall (linux-arm-cgo), const RTM_GETNEIGH = 30 pkg syscall (linux-arm-cgo), const RTM_GETNEIGHTBL = 66 pkg syscall (linux-arm-cgo), const RTM_GETQDISC = 38 pkg syscall (linux-arm-cgo), const RTM_GETROUTE = 26 pkg syscall (linux-arm-cgo), const RTM_GETRULE = 34 pkg syscall (linux-arm-cgo), const RTM_GETTCLASS = 42 pkg syscall (linux-arm-cgo), const RTM_GETTFILTER = 46 pkg syscall (linux-arm-cgo), const RTM_MAX = 79 pkg syscall (linux-arm-cgo), const RTM_NEWACTION = 48 pkg syscall (linux-arm-cgo), const RTM_NEWADDR = 20 pkg syscall (linux-arm-cgo), const RTM_NEWADDRLABEL = 72 pkg syscall (linux-arm-cgo), const RTM_NEWLINK = 16 pkg syscall (linux-arm-cgo), const RTM_NEWNDUSEROPT = 68 pkg syscall (linux-arm-cgo), const RTM_NEWNEIGH = 28 pkg syscall (linux-arm-cgo), const RTM_NEWNEIGHTBL = 64 pkg syscall (linux-arm-cgo), const RTM_NEWPREFIX = 52 pkg syscall (linux-arm-cgo), const RTM_NEWQDISC = 36 pkg syscall (linux-arm-cgo), const RTM_NEWROUTE = 24 pkg syscall (linux-arm-cgo), const RTM_NEWRULE = 32 pkg syscall (linux-arm-cgo), const RTM_NEWTCLASS = 40 pkg syscall (linux-arm-cgo), const RTM_NEWTFILTER = 44 pkg syscall (linux-arm-cgo), const RTM_NR_FAMILIES = 16 pkg syscall (linux-arm-cgo), const RTM_NR_MSGTYPES = 64 pkg syscall (linux-arm-cgo), const RTM_SETDCB = 79 pkg syscall (linux-arm-cgo), const RTM_SETLINK = 19 pkg syscall (linux-arm-cgo), const RTM_SETNEIGHTBL = 67 pkg syscall (linux-arm-cgo), const RTNH_ALIGNTO = 4 pkg syscall (linux-arm-cgo), const RTNH_F_DEAD = 1 pkg syscall (linux-arm-cgo), const RTNH_F_ONLINK = 4 pkg syscall (linux-arm-cgo), const RTNH_F_PERVASIVE = 2 pkg syscall (linux-arm-cgo), const RTNLGRP_IPV4_IFADDR = 5 pkg syscall (linux-arm-cgo), const RTNLGRP_IPV4_MROUTE = 6 pkg syscall (linux-arm-cgo), const RTNLGRP_IPV4_ROUTE = 7 pkg syscall (linux-arm-cgo), const RTNLGRP_IPV4_RULE = 8 pkg syscall (linux-arm-cgo), const RTNLGRP_IPV6_IFADDR = 9 pkg syscall (linux-arm-cgo), const RTNLGRP_IPV6_IFINFO = 12 pkg syscall (linux-arm-cgo), const RTNLGRP_IPV6_MROUTE = 10 pkg syscall (linux-arm-cgo), const RTNLGRP_IPV6_PREFIX = 18 pkg syscall (linux-arm-cgo), const RTNLGRP_IPV6_ROUTE = 11 pkg syscall (linux-arm-cgo), const RTNLGRP_IPV6_RULE = 19 pkg syscall (linux-arm-cgo), const RTNLGRP_LINK = 1 pkg syscall (linux-arm-cgo), const RTNLGRP_ND_USEROPT = 20 pkg syscall (linux-arm-cgo), const RTNLGRP_NEIGH = 3 pkg syscall (linux-arm-cgo), const RTNLGRP_NONE = 0 pkg syscall (linux-arm-cgo), const RTNLGRP_NOTIFY = 2 pkg syscall (linux-arm-cgo), const RTNLGRP_TC = 4 pkg syscall (linux-arm-cgo), const RTN_ANYCAST = 4 pkg syscall (linux-arm-cgo), const RTN_BLACKHOLE = 6 pkg syscall (linux-arm-cgo), const RTN_BROADCAST = 3 pkg syscall (linux-arm-cgo), const RTN_LOCAL = 2 pkg syscall (linux-arm-cgo), const RTN_MAX = 11 pkg syscall (linux-arm-cgo), const RTN_MULTICAST = 5 pkg syscall (linux-arm-cgo), const RTN_NAT = 10 pkg syscall (linux-arm-cgo), const RTN_PROHIBIT = 8 pkg syscall (linux-arm-cgo), const RTN_THROW = 9 pkg syscall (linux-arm-cgo), const RTN_UNICAST = 1 pkg syscall (linux-arm-cgo), const RTN_UNREACHABLE = 7 pkg syscall (linux-arm-cgo), const RTN_UNSPEC = 0 pkg syscall (linux-arm-cgo), const RTN_XRESOLVE = 11 pkg syscall (linux-arm-cgo), const RTPROT_BIRD = 12 pkg syscall (linux-arm-cgo), const RTPROT_BOOT = 3 pkg syscall (linux-arm-cgo), const RTPROT_DHCP = 16 pkg syscall (linux-arm-cgo), const RTPROT_DNROUTED = 13 pkg syscall (linux-arm-cgo), const RTPROT_GATED = 8 pkg syscall (linux-arm-cgo), const RTPROT_KERNEL = 2 pkg syscall (linux-arm-cgo), const RTPROT_MRT = 10 pkg syscall (linux-arm-cgo), const RTPROT_NTK = 15 pkg syscall (linux-arm-cgo), const RTPROT_RA = 9 pkg syscall (linux-arm-cgo), const RTPROT_REDIRECT = 1 pkg syscall (linux-arm-cgo), const RTPROT_STATIC = 4 pkg syscall (linux-arm-cgo), const RTPROT_UNSPEC = 0 pkg syscall (linux-arm-cgo), const RTPROT_XORP = 14 pkg syscall (linux-arm-cgo), const RTPROT_ZEBRA = 11 pkg syscall (linux-arm-cgo), const RT_CLASS_DEFAULT = 253 pkg syscall (linux-arm-cgo), const RT_CLASS_LOCAL = 255 pkg syscall (linux-arm-cgo), const RT_CLASS_MAIN = 254 pkg syscall (linux-arm-cgo), const RT_CLASS_MAX = 255 pkg syscall (linux-arm-cgo), const RT_CLASS_UNSPEC = 0 pkg syscall (linux-arm-cgo), const RT_SCOPE_HOST = 254 pkg syscall (linux-arm-cgo), const RT_SCOPE_LINK = 253 pkg syscall (linux-arm-cgo), const RT_SCOPE_NOWHERE = 255 pkg syscall (linux-arm-cgo), const RT_SCOPE_SITE = 200 pkg syscall (linux-arm-cgo), const RT_SCOPE_UNIVERSE = 0 pkg syscall (linux-arm-cgo), const RT_TABLE_COMPAT = 252 pkg syscall (linux-arm-cgo), const RT_TABLE_DEFAULT = 253 pkg syscall (linux-arm-cgo), const RT_TABLE_LOCAL = 255 pkg syscall (linux-arm-cgo), const RT_TABLE_MAIN = 254 pkg syscall (linux-arm-cgo), const RT_TABLE_MAX = 4294967295 pkg syscall (linux-arm-cgo), const RT_TABLE_UNSPEC = 0 pkg syscall (linux-arm-cgo), const RUSAGE_CHILDREN = -1 pkg syscall (linux-arm-cgo), const RUSAGE_SELF = 0 pkg syscall (linux-arm-cgo), const RUSAGE_THREAD = 1 pkg syscall (linux-arm-cgo), const SCM_CREDENTIALS = 2 pkg syscall (linux-arm-cgo), const SCM_RIGHTS = 1 pkg syscall (linux-arm-cgo), const SCM_TIMESTAMP = 29 pkg syscall (linux-arm-cgo), const SCM_TIMESTAMPING = 37 pkg syscall (linux-arm-cgo), const SCM_TIMESTAMPNS = 35 pkg syscall (linux-arm-cgo), const SIGBUS = 7 pkg syscall (linux-arm-cgo), const SIGCHLD = 17 pkg syscall (linux-arm-cgo), const SIGCLD = 17 pkg syscall (linux-arm-cgo), const SIGCONT = 18 pkg syscall (linux-arm-cgo), const SIGIO = 29 pkg syscall (linux-arm-cgo), const SIGIOT = 6 pkg syscall (linux-arm-cgo), const SIGPOLL = 29 pkg syscall (linux-arm-cgo), const SIGPROF = 27 pkg syscall (linux-arm-cgo), const SIGPWR = 30 pkg syscall (linux-arm-cgo), const SIGSTKFLT = 16 pkg syscall (linux-arm-cgo), const SIGSTOP = 19 pkg syscall (linux-arm-cgo), const SIGSYS = 31 pkg syscall (linux-arm-cgo), const SIGTSTP = 20 pkg syscall (linux-arm-cgo), const SIGTTIN = 21 pkg syscall (linux-arm-cgo), const SIGTTOU = 22 pkg syscall (linux-arm-cgo), const SIGUNUSED = 31 pkg syscall (linux-arm-cgo), const SIGURG = 23 pkg syscall (linux-arm-cgo), const SIGUSR1 = 10 pkg syscall (linux-arm-cgo), const SIGUSR2 = 12 pkg syscall (linux-arm-cgo), const SIGVTALRM = 26 pkg syscall (linux-arm-cgo), const SIGWINCH = 28 pkg syscall (linux-arm-cgo), const SIGXCPU = 24 pkg syscall (linux-arm-cgo), const SIGXFSZ = 25 pkg syscall (linux-arm-cgo), const SIOCADDDLCI = 35200 pkg syscall (linux-arm-cgo), const SIOCADDMULTI = 35121 pkg syscall (linux-arm-cgo), const SIOCADDRT = 35083 pkg syscall (linux-arm-cgo), const SIOCATMARK = 35077 pkg syscall (linux-arm-cgo), const SIOCDARP = 35155 pkg syscall (linux-arm-cgo), const SIOCDELDLCI = 35201 pkg syscall (linux-arm-cgo), const SIOCDELMULTI = 35122 pkg syscall (linux-arm-cgo), const SIOCDELRT = 35084 pkg syscall (linux-arm-cgo), const SIOCDEVPRIVATE = 35312 pkg syscall (linux-arm-cgo), const SIOCDIFADDR = 35126 pkg syscall (linux-arm-cgo), const SIOCDRARP = 35168 pkg syscall (linux-arm-cgo), const SIOCGARP = 35156 pkg syscall (linux-arm-cgo), const SIOCGIFADDR = 35093 pkg syscall (linux-arm-cgo), const SIOCGIFBR = 35136 pkg syscall (linux-arm-cgo), const SIOCGIFBRDADDR = 35097 pkg syscall (linux-arm-cgo), const SIOCGIFCONF = 35090 pkg syscall (linux-arm-cgo), const SIOCGIFCOUNT = 35128 pkg syscall (linux-arm-cgo), const SIOCGIFDSTADDR = 35095 pkg syscall (linux-arm-cgo), const SIOCGIFENCAP = 35109 pkg syscall (linux-arm-cgo), const SIOCGIFFLAGS = 35091 pkg syscall (linux-arm-cgo), const SIOCGIFHWADDR = 35111 pkg syscall (linux-arm-cgo), const SIOCGIFINDEX = 35123 pkg syscall (linux-arm-cgo), const SIOCGIFMAP = 35184 pkg syscall (linux-arm-cgo), const SIOCGIFMEM = 35103 pkg syscall (linux-arm-cgo), const SIOCGIFMETRIC = 35101 pkg syscall (linux-arm-cgo), const SIOCGIFMTU = 35105 pkg syscall (linux-arm-cgo), const SIOCGIFNAME = 35088 pkg syscall (linux-arm-cgo), const SIOCGIFNETMASK = 35099 pkg syscall (linux-arm-cgo), const SIOCGIFPFLAGS = 35125 pkg syscall (linux-arm-cgo), const SIOCGIFSLAVE = 35113 pkg syscall (linux-arm-cgo), const SIOCGIFTXQLEN = 35138 pkg syscall (linux-arm-cgo), const SIOCGPGRP = 35076 pkg syscall (linux-arm-cgo), const SIOCGRARP = 35169 pkg syscall (linux-arm-cgo), const SIOCGSTAMP = 35078 pkg syscall (linux-arm-cgo), const SIOCGSTAMPNS = 35079 pkg syscall (linux-arm-cgo), const SIOCPROTOPRIVATE = 35296 pkg syscall (linux-arm-cgo), const SIOCRTMSG = 35085 pkg syscall (linux-arm-cgo), const SIOCSARP = 35157 pkg syscall (linux-arm-cgo), const SIOCSIFADDR = 35094 pkg syscall (linux-arm-cgo), const SIOCSIFBR = 35137 pkg syscall (linux-arm-cgo), const SIOCSIFBRDADDR = 35098 pkg syscall (linux-arm-cgo), const SIOCSIFDSTADDR = 35096 pkg syscall (linux-arm-cgo), const SIOCSIFENCAP = 35110 pkg syscall (linux-arm-cgo), const SIOCSIFFLAGS = 35092 pkg syscall (linux-arm-cgo), const SIOCSIFHWADDR = 35108 pkg syscall (linux-arm-cgo), const SIOCSIFHWBROADCAST = 35127 pkg syscall (linux-arm-cgo), const SIOCSIFLINK = 35089 pkg syscall (linux-arm-cgo), const SIOCSIFMAP = 35185 pkg syscall (linux-arm-cgo), const SIOCSIFMEM = 35104 pkg syscall (linux-arm-cgo), const SIOCSIFMETRIC = 35102 pkg syscall (linux-arm-cgo), const SIOCSIFMTU = 35106 pkg syscall (linux-arm-cgo), const SIOCSIFNAME = 35107 pkg syscall (linux-arm-cgo), const SIOCSIFNETMASK = 35100 pkg syscall (linux-arm-cgo), const SIOCSIFPFLAGS = 35124 pkg syscall (linux-arm-cgo), const SIOCSIFSLAVE = 35120 pkg syscall (linux-arm-cgo), const SIOCSIFTXQLEN = 35139 pkg syscall (linux-arm-cgo), const SIOCSPGRP = 35074 pkg syscall (linux-arm-cgo), const SIOCSRARP = 35170 pkg syscall (linux-arm-cgo), const SOCK_CLOEXEC = 524288 pkg syscall (linux-arm-cgo), const SOCK_DCCP = 6 pkg syscall (linux-arm-cgo), const SOCK_NONBLOCK = 2048 pkg syscall (linux-arm-cgo), const SOCK_PACKET = 10 pkg syscall (linux-arm-cgo), const SOCK_RDM = 4 pkg syscall (linux-arm-cgo), const SOL_AAL = 265 pkg syscall (linux-arm-cgo), const SOL_ATM = 264 pkg syscall (linux-arm-cgo), const SOL_DECNET = 261 pkg syscall (linux-arm-cgo), const SOL_ICMPV6 = 58 pkg syscall (linux-arm-cgo), const SOL_IP = 0 pkg syscall (linux-arm-cgo), const SOL_IPV6 = 41 pkg syscall (linux-arm-cgo), const SOL_IRDA = 266 pkg syscall (linux-arm-cgo), const SOL_PACKET = 263 pkg syscall (linux-arm-cgo), const SOL_RAW = 255 pkg syscall (linux-arm-cgo), const SOL_SOCKET = 1 pkg syscall (linux-arm-cgo), const SOL_TCP = 6 pkg syscall (linux-arm-cgo), const SOL_X25 = 262 pkg syscall (linux-arm-cgo), const SOMAXCONN = 128 pkg syscall (linux-arm-cgo), const SO_ACCEPTCONN = 30 pkg syscall (linux-arm-cgo), const SO_ATTACH_FILTER = 26 pkg syscall (linux-arm-cgo), const SO_BINDTODEVICE = 25 pkg syscall (linux-arm-cgo), const SO_BROADCAST = 6 pkg syscall (linux-arm-cgo), const SO_BSDCOMPAT = 14 pkg syscall (linux-arm-cgo), const SO_DEBUG = 1 pkg syscall (linux-arm-cgo), const SO_DETACH_FILTER = 27 pkg syscall (linux-arm-cgo), const SO_DOMAIN = 39 pkg syscall (linux-arm-cgo), const SO_DONTROUTE = 5 pkg syscall (linux-arm-cgo), const SO_ERROR = 4 pkg syscall (linux-arm-cgo), const SO_KEEPALIVE = 9 pkg syscall (linux-arm-cgo), const SO_LINGER = 13 pkg syscall (linux-arm-cgo), const SO_MARK = 36 pkg syscall (linux-arm-cgo), const SO_NO_CHECK = 11 pkg syscall (linux-arm-cgo), const SO_OOBINLINE = 10 pkg syscall (linux-arm-cgo), const SO_PASSCRED = 16 pkg syscall (linux-arm-cgo), const SO_PASSSEC = 34 pkg syscall (linux-arm-cgo), const SO_PEERCRED = 17 pkg syscall (linux-arm-cgo), const SO_PEERNAME = 28 pkg syscall (linux-arm-cgo), const SO_PEERSEC = 31 pkg syscall (linux-arm-cgo), const SO_PRIORITY = 12 pkg syscall (linux-arm-cgo), const SO_PROTOCOL = 38 pkg syscall (linux-arm-cgo), const SO_RCVBUF = 8 pkg syscall (linux-arm-cgo), const SO_RCVBUFFORCE = 33 pkg syscall (linux-arm-cgo), const SO_RCVLOWAT = 18 pkg syscall (linux-arm-cgo), const SO_RCVTIMEO = 20 pkg syscall (linux-arm-cgo), const SO_REUSEADDR = 2 pkg syscall (linux-arm-cgo), const SO_RXQ_OVFL = 40 pkg syscall (linux-arm-cgo), const SO_SECURITY_AUTHENTICATION = 22 pkg syscall (linux-arm-cgo), const SO_SECURITY_ENCRYPTION_NETWORK = 24 pkg syscall (linux-arm-cgo), const SO_SECURITY_ENCRYPTION_TRANSPORT = 23 pkg syscall (linux-arm-cgo), const SO_SNDBUF = 7 pkg syscall (linux-arm-cgo), const SO_SNDBUFFORCE = 32 pkg syscall (linux-arm-cgo), const SO_SNDLOWAT = 19 pkg syscall (linux-arm-cgo), const SO_SNDTIMEO = 21 pkg syscall (linux-arm-cgo), const SO_TIMESTAMP = 29 pkg syscall (linux-arm-cgo), const SO_TIMESTAMPING = 37 pkg syscall (linux-arm-cgo), const SO_TIMESTAMPNS = 35 pkg syscall (linux-arm-cgo), const SO_TYPE = 3 pkg syscall (linux-arm-cgo), const SYS_ACCEPT = 285 pkg syscall (linux-arm-cgo), const SYS_ACCEPT4 = 366 pkg syscall (linux-arm-cgo), const SYS_ACCESS = 33 pkg syscall (linux-arm-cgo), const SYS_ACCT = 51 pkg syscall (linux-arm-cgo), const SYS_ADD_KEY = 309 pkg syscall (linux-arm-cgo), const SYS_ADJTIMEX = 124 pkg syscall (linux-arm-cgo), const SYS_ALARM = 27 pkg syscall (linux-arm-cgo), const SYS_ARM_FADVISE64_64 = 270 pkg syscall (linux-arm-cgo), const SYS_ARM_SYNC_FILE_RANGE = 341 pkg syscall (linux-arm-cgo), const SYS_BDFLUSH = 134 pkg syscall (linux-arm-cgo), const SYS_BIND = 282 pkg syscall (linux-arm-cgo), const SYS_BRK = 45 pkg syscall (linux-arm-cgo), const SYS_CAPGET = 184 pkg syscall (linux-arm-cgo), const SYS_CAPSET = 185 pkg syscall (linux-arm-cgo), const SYS_CHDIR = 12 pkg syscall (linux-arm-cgo), const SYS_CHMOD = 15 pkg syscall (linux-arm-cgo), const SYS_CHOWN = 182 pkg syscall (linux-arm-cgo), const SYS_CHOWN32 = 212 pkg syscall (linux-arm-cgo), const SYS_CHROOT = 61 pkg syscall (linux-arm-cgo), const SYS_CLOCK_ADJTIME = 372 pkg syscall (linux-arm-cgo), const SYS_CLOCK_GETRES = 264 pkg syscall (linux-arm-cgo), const SYS_CLOCK_GETTIME = 263 pkg syscall (linux-arm-cgo), const SYS_CLOCK_NANOSLEEP = 265 pkg syscall (linux-arm-cgo), const SYS_CLOCK_SETTIME = 262 pkg syscall (linux-arm-cgo), const SYS_CLONE = 120 pkg syscall (linux-arm-cgo), const SYS_CLOSE = 6 pkg syscall (linux-arm-cgo), const SYS_CONNECT = 283 pkg syscall (linux-arm-cgo), const SYS_CREAT = 8 pkg syscall (linux-arm-cgo), const SYS_DELETE_MODULE = 129 pkg syscall (linux-arm-cgo), const SYS_DUP = 41 pkg syscall (linux-arm-cgo), const SYS_DUP2 = 63 pkg syscall (linux-arm-cgo), const SYS_DUP3 = 358 pkg syscall (linux-arm-cgo), const SYS_EPOLL_CREATE = 250 pkg syscall (linux-arm-cgo), const SYS_EPOLL_CREATE1 = 357 pkg syscall (linux-arm-cgo), const SYS_EPOLL_CTL = 251 pkg syscall (linux-arm-cgo), const SYS_EPOLL_PWAIT = 346 pkg syscall (linux-arm-cgo), const SYS_EPOLL_WAIT = 252 pkg syscall (linux-arm-cgo), const SYS_EVENTFD = 351 pkg syscall (linux-arm-cgo), const SYS_EVENTFD2 = 356 pkg syscall (linux-arm-cgo), const SYS_EXECVE = 11 pkg syscall (linux-arm-cgo), const SYS_EXIT = 1 pkg syscall (linux-arm-cgo), const SYS_EXIT_GROUP = 248 pkg syscall (linux-arm-cgo), const SYS_FACCESSAT = 334 pkg syscall (linux-arm-cgo), const SYS_FALLOCATE = 352 pkg syscall (linux-arm-cgo), const SYS_FANOTIFY_INIT = 367 pkg syscall (linux-arm-cgo), const SYS_FANOTIFY_MARK = 368 pkg syscall (linux-arm-cgo), const SYS_FCHDIR = 133 pkg syscall (linux-arm-cgo), const SYS_FCHMOD = 94 pkg syscall (linux-arm-cgo), const SYS_FCHMODAT = 333 pkg syscall (linux-arm-cgo), const SYS_FCHOWN = 95 pkg syscall (linux-arm-cgo), const SYS_FCHOWN32 = 207 pkg syscall (linux-arm-cgo), const SYS_FCHOWNAT = 325 pkg syscall (linux-arm-cgo), const SYS_FCNTL = 55 pkg syscall (linux-arm-cgo), const SYS_FCNTL64 = 221 pkg syscall (linux-arm-cgo), const SYS_FDATASYNC = 148 pkg syscall (linux-arm-cgo), const SYS_FGETXATTR = 231 pkg syscall (linux-arm-cgo), const SYS_FLISTXATTR = 234 pkg syscall (linux-arm-cgo), const SYS_FLOCK = 143 pkg syscall (linux-arm-cgo), const SYS_FORK = 2 pkg syscall (linux-arm-cgo), const SYS_FREMOVEXATTR = 237 pkg syscall (linux-arm-cgo), const SYS_FSETXATTR = 228 pkg syscall (linux-arm-cgo), const SYS_FSTAT = 108 pkg syscall (linux-arm-cgo), const SYS_FSTAT64 = 197 pkg syscall (linux-arm-cgo), const SYS_FSTATAT64 = 327 pkg syscall (linux-arm-cgo), const SYS_FSTATFS = 100 pkg syscall (linux-arm-cgo), const SYS_FSTATFS64 = 267 pkg syscall (linux-arm-cgo), const SYS_FSYNC = 118 pkg syscall (linux-arm-cgo), const SYS_FTRUNCATE = 93 pkg syscall (linux-arm-cgo), const SYS_FTRUNCATE64 = 194 pkg syscall (linux-arm-cgo), const SYS_FUTEX = 240 pkg syscall (linux-arm-cgo), const SYS_FUTIMESAT = 326 pkg syscall (linux-arm-cgo), const SYS_GETCPU = 345 pkg syscall (linux-arm-cgo), const SYS_GETCWD = 183 pkg syscall (linux-arm-cgo), const SYS_GETDENTS = 141 pkg syscall (linux-arm-cgo), const SYS_GETDENTS64 = 217 pkg syscall (linux-arm-cgo), const SYS_GETEGID = 50 pkg syscall (linux-arm-cgo), const SYS_GETEGID32 = 202 pkg syscall (linux-arm-cgo), const SYS_GETEUID = 49 pkg syscall (linux-arm-cgo), const SYS_GETEUID32 = 201 pkg syscall (linux-arm-cgo), const SYS_GETGID = 47 pkg syscall (linux-arm-cgo), const SYS_GETGID32 = 200 pkg syscall (linux-arm-cgo), const SYS_GETGROUPS = 80 pkg syscall (linux-arm-cgo), const SYS_GETGROUPS32 = 205 pkg syscall (linux-arm-cgo), const SYS_GETITIMER = 105 pkg syscall (linux-arm-cgo), const SYS_GETPEERNAME = 287 pkg syscall (linux-arm-cgo), const SYS_GETPGID = 132 pkg syscall (linux-arm-cgo), const SYS_GETPGRP = 65 pkg syscall (linux-arm-cgo), const SYS_GETPID = 20 pkg syscall (linux-arm-cgo), const SYS_GETPPID = 64 pkg syscall (linux-arm-cgo), const SYS_GETPRIORITY = 96 pkg syscall (linux-arm-cgo), const SYS_GETRESGID = 171 pkg syscall (linux-arm-cgo), const SYS_GETRESGID32 = 211 pkg syscall (linux-arm-cgo), const SYS_GETRESUID = 165 pkg syscall (linux-arm-cgo), const SYS_GETRESUID32 = 209 pkg syscall (linux-arm-cgo), const SYS_GETRLIMIT = 76 pkg syscall (linux-arm-cgo), const SYS_GETRUSAGE = 77 pkg syscall (linux-arm-cgo), const SYS_GETSID = 147 pkg syscall (linux-arm-cgo), const SYS_GETSOCKNAME = 286 pkg syscall (linux-arm-cgo), const SYS_GETSOCKOPT = 295 pkg syscall (linux-arm-cgo), const SYS_GETTID = 224 pkg syscall (linux-arm-cgo), const SYS_GETTIMEOFDAY = 78 pkg syscall (linux-arm-cgo), const SYS_GETUID = 24 pkg syscall (linux-arm-cgo), const SYS_GETUID32 = 199 pkg syscall (linux-arm-cgo), const SYS_GETXATTR = 229 pkg syscall (linux-arm-cgo), const SYS_GET_MEMPOLICY = 320 pkg syscall (linux-arm-cgo), const SYS_GET_ROBUST_LIST = 339 pkg syscall (linux-arm-cgo), const SYS_INIT_MODULE = 128 pkg syscall (linux-arm-cgo), const SYS_INOTIFY_ADD_WATCH = 317 pkg syscall (linux-arm-cgo), const SYS_INOTIFY_INIT = 316 pkg syscall (linux-arm-cgo), const SYS_INOTIFY_INIT1 = 360 pkg syscall (linux-arm-cgo), const SYS_INOTIFY_RM_WATCH = 318 pkg syscall (linux-arm-cgo), const SYS_IOCTL = 54 pkg syscall (linux-arm-cgo), const SYS_IOPRIO_GET = 315 pkg syscall (linux-arm-cgo), const SYS_IOPRIO_SET = 314 pkg syscall (linux-arm-cgo), const SYS_IO_CANCEL = 247 pkg syscall (linux-arm-cgo), const SYS_IO_DESTROY = 244 pkg syscall (linux-arm-cgo), const SYS_IO_GETEVENTS = 245 pkg syscall (linux-arm-cgo), const SYS_IO_SETUP = 243 pkg syscall (linux-arm-cgo), const SYS_IO_SUBMIT = 246 pkg syscall (linux-arm-cgo), const SYS_IPC = 117 pkg syscall (linux-arm-cgo), const SYS_KEXEC_LOAD = 347 pkg syscall (linux-arm-cgo), const SYS_KEYCTL = 311 pkg syscall (linux-arm-cgo), const SYS_KILL = 37 pkg syscall (linux-arm-cgo), const SYS_LCHOWN = 16 pkg syscall (linux-arm-cgo), const SYS_LCHOWN32 = 198 pkg syscall (linux-arm-cgo), const SYS_LGETXATTR = 230 pkg syscall (linux-arm-cgo), const SYS_LINK = 9 pkg syscall (linux-arm-cgo), const SYS_LINKAT = 330 pkg syscall (linux-arm-cgo), const SYS_LISTEN = 284 pkg syscall (linux-arm-cgo), const SYS_LISTXATTR = 232 pkg syscall (linux-arm-cgo), const SYS_LLISTXATTR = 233 pkg syscall (linux-arm-cgo), const SYS_LOOKUP_DCOOKIE = 249 pkg syscall (linux-arm-cgo), const SYS_LREMOVEXATTR = 236 pkg syscall (linux-arm-cgo), const SYS_LSEEK = 19 pkg syscall (linux-arm-cgo), const SYS_LSETXATTR = 227 pkg syscall (linux-arm-cgo), const SYS_LSTAT = 107 pkg syscall (linux-arm-cgo), const SYS_LSTAT64 = 196 pkg syscall (linux-arm-cgo), const SYS_MADVISE = 220 pkg syscall (linux-arm-cgo), const SYS_MBIND = 319 pkg syscall (linux-arm-cgo), const SYS_MINCORE = 219 pkg syscall (linux-arm-cgo), const SYS_MKDIR = 39 pkg syscall (linux-arm-cgo), const SYS_MKDIRAT = 323 pkg syscall (linux-arm-cgo), const SYS_MKNOD = 14 pkg syscall (linux-arm-cgo), const SYS_MKNODAT = 324 pkg syscall (linux-arm-cgo), const SYS_MLOCK = 150 pkg syscall (linux-arm-cgo), const SYS_MLOCKALL = 152 pkg syscall (linux-arm-cgo), const SYS_MMAP = 90 pkg syscall (linux-arm-cgo), const SYS_MMAP2 = 192 pkg syscall (linux-arm-cgo), const SYS_MOUNT = 21 pkg syscall (linux-arm-cgo), const SYS_MOVE_PAGES = 344 pkg syscall (linux-arm-cgo), const SYS_MPROTECT = 125 pkg syscall (linux-arm-cgo), const SYS_MQ_GETSETATTR = 279 pkg syscall (linux-arm-cgo), const SYS_MQ_NOTIFY = 278 pkg syscall (linux-arm-cgo), const SYS_MQ_OPEN = 274 pkg syscall (linux-arm-cgo), const SYS_MQ_TIMEDRECEIVE = 277 pkg syscall (linux-arm-cgo), const SYS_MQ_TIMEDSEND = 276 pkg syscall (linux-arm-cgo), const SYS_MQ_UNLINK = 275 pkg syscall (linux-arm-cgo), const SYS_MREMAP = 163 pkg syscall (linux-arm-cgo), const SYS_MSGCTL = 304 pkg syscall (linux-arm-cgo), const SYS_MSGGET = 303 pkg syscall (linux-arm-cgo), const SYS_MSGRCV = 302 pkg syscall (linux-arm-cgo), const SYS_MSGSND = 301 pkg syscall (linux-arm-cgo), const SYS_MSYNC = 144 pkg syscall (linux-arm-cgo), const SYS_MUNLOCK = 151 pkg syscall (linux-arm-cgo), const SYS_MUNLOCKALL = 153 pkg syscall (linux-arm-cgo), const SYS_MUNMAP = 91 pkg syscall (linux-arm-cgo), const SYS_NAME_TO_HANDLE_AT = 370 pkg syscall (linux-arm-cgo), const SYS_NANOSLEEP = 162 pkg syscall (linux-arm-cgo), const SYS_NFSSERVCTL = 169 pkg syscall (linux-arm-cgo), const SYS_NICE = 34 pkg syscall (linux-arm-cgo), const SYS_OABI_SYSCALL_BASE = 0 pkg syscall (linux-arm-cgo), const SYS_OPEN = 5 pkg syscall (linux-arm-cgo), const SYS_OPENAT = 322 pkg syscall (linux-arm-cgo), const SYS_OPEN_BY_HANDLE_AT = 371 pkg syscall (linux-arm-cgo), const SYS_PAUSE = 29 pkg syscall (linux-arm-cgo), const SYS_PCICONFIG_IOBASE = 271 pkg syscall (linux-arm-cgo), const SYS_PCICONFIG_READ = 272 pkg syscall (linux-arm-cgo), const SYS_PCICONFIG_WRITE = 273 pkg syscall (linux-arm-cgo), const SYS_PERF_EVENT_OPEN = 364 pkg syscall (linux-arm-cgo), const SYS_PERSONALITY = 136 pkg syscall (linux-arm-cgo), const SYS_PIPE = 42 pkg syscall (linux-arm-cgo), const SYS_PIPE2 = 359 pkg syscall (linux-arm-cgo), const SYS_PIVOT_ROOT = 218 pkg syscall (linux-arm-cgo), const SYS_POLL = 168 pkg syscall (linux-arm-cgo), const SYS_PPOLL = 336 pkg syscall (linux-arm-cgo), const SYS_PRCTL = 172 pkg syscall (linux-arm-cgo), const SYS_PREAD64 = 180 pkg syscall (linux-arm-cgo), const SYS_PREADV = 361 pkg syscall (linux-arm-cgo), const SYS_PRLIMIT64 = 369 pkg syscall (linux-arm-cgo), const SYS_PROCESS_VM_READV = 376 pkg syscall (linux-arm-cgo), const SYS_PROCESS_VM_WRITEV = 377 pkg syscall (linux-arm-cgo), const SYS_PSELECT6 = 335 pkg syscall (linux-arm-cgo), const SYS_PTRACE = 26 pkg syscall (linux-arm-cgo), const SYS_PWRITE64 = 181 pkg syscall (linux-arm-cgo), const SYS_PWRITEV = 362 pkg syscall (linux-arm-cgo), const SYS_QUOTACTL = 131 pkg syscall (linux-arm-cgo), const SYS_READ = 3 pkg syscall (linux-arm-cgo), const SYS_READAHEAD = 225 pkg syscall (linux-arm-cgo), const SYS_READDIR = 89 pkg syscall (linux-arm-cgo), const SYS_READLINK = 85 pkg syscall (linux-arm-cgo), const SYS_READLINKAT = 332 pkg syscall (linux-arm-cgo), const SYS_READV = 145 pkg syscall (linux-arm-cgo), const SYS_REBOOT = 88 pkg syscall (linux-arm-cgo), const SYS_RECV = 291 pkg syscall (linux-arm-cgo), const SYS_RECVFROM = 292 pkg syscall (linux-arm-cgo), const SYS_RECVMMSG = 365 pkg syscall (linux-arm-cgo), const SYS_RECVMSG = 297 pkg syscall (linux-arm-cgo), const SYS_REMAP_FILE_PAGES = 253 pkg syscall (linux-arm-cgo), const SYS_REMOVEXATTR = 235 pkg syscall (linux-arm-cgo), const SYS_RENAME = 38 pkg syscall (linux-arm-cgo), const SYS_RENAMEAT = 329 pkg syscall (linux-arm-cgo), const SYS_REQUEST_KEY = 310 pkg syscall (linux-arm-cgo), const SYS_RESTART_SYSCALL = 0 pkg syscall (linux-arm-cgo), const SYS_RMDIR = 40 pkg syscall (linux-arm-cgo), const SYS_RT_SIGACTION = 174 pkg syscall (linux-arm-cgo), const SYS_RT_SIGPENDING = 176 pkg syscall (linux-arm-cgo), const SYS_RT_SIGPROCMASK = 175 pkg syscall (linux-arm-cgo), const SYS_RT_SIGQUEUEINFO = 178 pkg syscall (linux-arm-cgo), const SYS_RT_SIGRETURN = 173 pkg syscall (linux-arm-cgo), const SYS_RT_SIGSUSPEND = 179 pkg syscall (linux-arm-cgo), const SYS_RT_SIGTIMEDWAIT = 177 pkg syscall (linux-arm-cgo), const SYS_RT_TGSIGQUEUEINFO = 363 pkg syscall (linux-arm-cgo), const SYS_SCHED_GETAFFINITY = 242 pkg syscall (linux-arm-cgo), const SYS_SCHED_GETPARAM = 155 pkg syscall (linux-arm-cgo), const SYS_SCHED_GETSCHEDULER = 157 pkg syscall (linux-arm-cgo), const SYS_SCHED_GET_PRIORITY_MAX = 159 pkg syscall (linux-arm-cgo), const SYS_SCHED_GET_PRIORITY_MIN = 160 pkg syscall (linux-arm-cgo), const SYS_SCHED_RR_GET_INTERVAL = 161 pkg syscall (linux-arm-cgo), const SYS_SCHED_SETAFFINITY = 241 pkg syscall (linux-arm-cgo), const SYS_SCHED_SETPARAM = 154 pkg syscall (linux-arm-cgo), const SYS_SCHED_SETSCHEDULER = 156 pkg syscall (linux-arm-cgo), const SYS_SCHED_YIELD = 158 pkg syscall (linux-arm-cgo), const SYS_SELECT = 82 pkg syscall (linux-arm-cgo), const SYS_SEMCTL = 300 pkg syscall (linux-arm-cgo), const SYS_SEMGET = 299 pkg syscall (linux-arm-cgo), const SYS_SEMOP = 298 pkg syscall (linux-arm-cgo), const SYS_SEMTIMEDOP = 312 pkg syscall (linux-arm-cgo), const SYS_SEND = 289 pkg syscall (linux-arm-cgo), const SYS_SENDFILE = 187 pkg syscall (linux-arm-cgo), const SYS_SENDFILE64 = 239 pkg syscall (linux-arm-cgo), const SYS_SENDMMSG = 374 pkg syscall (linux-arm-cgo), const SYS_SENDMSG = 296 pkg syscall (linux-arm-cgo), const SYS_SENDTO = 290 pkg syscall (linux-arm-cgo), const SYS_SETDOMAINNAME = 121 pkg syscall (linux-arm-cgo), const SYS_SETFSGID = 139 pkg syscall (linux-arm-cgo), const SYS_SETFSGID32 = 216 pkg syscall (linux-arm-cgo), const SYS_SETFSUID = 138 pkg syscall (linux-arm-cgo), const SYS_SETFSUID32 = 215 pkg syscall (linux-arm-cgo), const SYS_SETGID = 46 pkg syscall (linux-arm-cgo), const SYS_SETGID32 = 214 pkg syscall (linux-arm-cgo), const SYS_SETGROUPS = 81 pkg syscall (linux-arm-cgo), const SYS_SETGROUPS32 = 206 pkg syscall (linux-arm-cgo), const SYS_SETHOSTNAME = 74 pkg syscall (linux-arm-cgo), const SYS_SETITIMER = 104 pkg syscall (linux-arm-cgo), const SYS_SETNS = 375 pkg syscall (linux-arm-cgo), const SYS_SETPGID = 57 pkg syscall (linux-arm-cgo), const SYS_SETPRIORITY = 97 pkg syscall (linux-arm-cgo), const SYS_SETREGID = 71 pkg syscall (linux-arm-cgo), const SYS_SETREGID32 = 204 pkg syscall (linux-arm-cgo), const SYS_SETRESGID = 170 pkg syscall (linux-arm-cgo), const SYS_SETRESGID32 = 210 pkg syscall (linux-arm-cgo), const SYS_SETRESUID = 164 pkg syscall (linux-arm-cgo), const SYS_SETRESUID32 = 208 pkg syscall (linux-arm-cgo), const SYS_SETREUID = 70 pkg syscall (linux-arm-cgo), const SYS_SETREUID32 = 203 pkg syscall (linux-arm-cgo), const SYS_SETRLIMIT = 75 pkg syscall (linux-arm-cgo), const SYS_SETSID = 66 pkg syscall (linux-arm-cgo), const SYS_SETSOCKOPT = 294 pkg syscall (linux-arm-cgo), const SYS_SETTIMEOFDAY = 79 pkg syscall (linux-arm-cgo), const SYS_SETUID = 23 pkg syscall (linux-arm-cgo), const SYS_SETUID32 = 213 pkg syscall (linux-arm-cgo), const SYS_SETXATTR = 226 pkg syscall (linux-arm-cgo), const SYS_SET_MEMPOLICY = 321 pkg syscall (linux-arm-cgo), const SYS_SET_ROBUST_LIST = 338 pkg syscall (linux-arm-cgo), const SYS_SET_TID_ADDRESS = 256 pkg syscall (linux-arm-cgo), const SYS_SHMAT = 305 pkg syscall (linux-arm-cgo), const SYS_SHMCTL = 308 pkg syscall (linux-arm-cgo), const SYS_SHMDT = 306 pkg syscall (linux-arm-cgo), const SYS_SHMGET = 307 pkg syscall (linux-arm-cgo), const SYS_SHUTDOWN = 293 pkg syscall (linux-arm-cgo), const SYS_SIGACTION = 67 pkg syscall (linux-arm-cgo), const SYS_SIGALTSTACK = 186 pkg syscall (linux-arm-cgo), const SYS_SIGNALFD = 349 pkg syscall (linux-arm-cgo), const SYS_SIGNALFD4 = 355 pkg syscall (linux-arm-cgo), const SYS_SIGPENDING = 73 pkg syscall (linux-arm-cgo), const SYS_SIGPROCMASK = 126 pkg syscall (linux-arm-cgo), const SYS_SIGRETURN = 119 pkg syscall (linux-arm-cgo), const SYS_SIGSUSPEND = 72 pkg syscall (linux-arm-cgo), const SYS_SOCKET = 281 pkg syscall (linux-arm-cgo), const SYS_SOCKETCALL = 102 pkg syscall (linux-arm-cgo), const SYS_SOCKETPAIR = 288 pkg syscall (linux-arm-cgo), const SYS_SPLICE = 340 pkg syscall (linux-arm-cgo), const SYS_STAT = 106 pkg syscall (linux-arm-cgo), const SYS_STAT64 = 195 pkg syscall (linux-arm-cgo), const SYS_STATFS = 99 pkg syscall (linux-arm-cgo), const SYS_STATFS64 = 266 pkg syscall (linux-arm-cgo), const SYS_STIME = 25 pkg syscall (linux-arm-cgo), const SYS_SWAPOFF = 115 pkg syscall (linux-arm-cgo), const SYS_SWAPON = 87 pkg syscall (linux-arm-cgo), const SYS_SYMLINK = 83 pkg syscall (linux-arm-cgo), const SYS_SYMLINKAT = 331 pkg syscall (linux-arm-cgo), const SYS_SYNC = 36 pkg syscall (linux-arm-cgo), const SYS_SYNCFS = 373 pkg syscall (linux-arm-cgo), const SYS_SYSCALL = 113 pkg syscall (linux-arm-cgo), const SYS_SYSCALL_BASE = 0 pkg syscall (linux-arm-cgo), const SYS_SYSFS = 135 pkg syscall (linux-arm-cgo), const SYS_SYSINFO = 116 pkg syscall (linux-arm-cgo), const SYS_SYSLOG = 103 pkg syscall (linux-arm-cgo), const SYS_TEE = 342 pkg syscall (linux-arm-cgo), const SYS_TGKILL = 268 pkg syscall (linux-arm-cgo), const SYS_TIME = 13 pkg syscall (linux-arm-cgo), const SYS_TIMERFD_CREATE = 350 pkg syscall (linux-arm-cgo), const SYS_TIMERFD_GETTIME = 354 pkg syscall (linux-arm-cgo), const SYS_TIMERFD_SETTIME = 353 pkg syscall (linux-arm-cgo), const SYS_TIMER_CREATE = 257 pkg syscall (linux-arm-cgo), const SYS_TIMER_DELETE = 261 pkg syscall (linux-arm-cgo), const SYS_TIMER_GETOVERRUN = 260 pkg syscall (linux-arm-cgo), const SYS_TIMER_GETTIME = 259 pkg syscall (linux-arm-cgo), const SYS_TIMER_SETTIME = 258 pkg syscall (linux-arm-cgo), const SYS_TIMES = 43 pkg syscall (linux-arm-cgo), const SYS_TKILL = 238 pkg syscall (linux-arm-cgo), const SYS_TRUNCATE = 92 pkg syscall (linux-arm-cgo), const SYS_TRUNCATE64 = 193 pkg syscall (linux-arm-cgo), const SYS_UGETRLIMIT = 191 pkg syscall (linux-arm-cgo), const SYS_UMASK = 60 pkg syscall (linux-arm-cgo), const SYS_UMOUNT = 22 pkg syscall (linux-arm-cgo), const SYS_UMOUNT2 = 52 pkg syscall (linux-arm-cgo), const SYS_UNAME = 122 pkg syscall (linux-arm-cgo), const SYS_UNLINK = 10 pkg syscall (linux-arm-cgo), const SYS_UNLINKAT = 328 pkg syscall (linux-arm-cgo), const SYS_UNSHARE = 337 pkg syscall (linux-arm-cgo), const SYS_USELIB = 86 pkg syscall (linux-arm-cgo), const SYS_USTAT = 62 pkg syscall (linux-arm-cgo), const SYS_UTIME = 30 pkg syscall (linux-arm-cgo), const SYS_UTIMENSAT = 348 pkg syscall (linux-arm-cgo), const SYS_UTIMES = 269 pkg syscall (linux-arm-cgo), const SYS_VFORK = 190 pkg syscall (linux-arm-cgo), const SYS_VHANGUP = 111 pkg syscall (linux-arm-cgo), const SYS_VMSPLICE = 343 pkg syscall (linux-arm-cgo), const SYS_VSERVER = 313 pkg syscall (linux-arm-cgo), const SYS_WAIT4 = 114 pkg syscall (linux-arm-cgo), const SYS_WAITID = 280 pkg syscall (linux-arm-cgo), const SYS_WRITE = 4 pkg syscall (linux-arm-cgo), const SYS_WRITEV = 146 pkg syscall (linux-arm-cgo), const SYS__LLSEEK = 140 pkg syscall (linux-arm-cgo), const SYS__NEWSELECT = 142 pkg syscall (linux-arm-cgo), const SYS__SYSCTL = 149 pkg syscall (linux-arm-cgo), const S_BLKSIZE = 512 pkg syscall (linux-arm-cgo), const S_IEXEC = 64 pkg syscall (linux-arm-cgo), const S_IFMT = 61440 pkg syscall (linux-arm-cgo), const S_IREAD = 256 pkg syscall (linux-arm-cgo), const S_IRGRP = 32 pkg syscall (linux-arm-cgo), const S_IROTH = 4 pkg syscall (linux-arm-cgo), const S_IRWXG = 56 pkg syscall (linux-arm-cgo), const S_IRWXO = 7 pkg syscall (linux-arm-cgo), const S_IRWXU = 448 pkg syscall (linux-arm-cgo), const S_IWGRP = 16 pkg syscall (linux-arm-cgo), const S_IWOTH = 2 pkg syscall (linux-arm-cgo), const S_IWRITE = 128 pkg syscall (linux-arm-cgo), const S_IXGRP = 8 pkg syscall (linux-arm-cgo), const S_IXOTH = 1 pkg syscall (linux-arm-cgo), const SizeofCmsghdr = 12 pkg syscall (linux-arm-cgo), const SizeofIPMreq = 8 pkg syscall (linux-arm-cgo), const SizeofIPMreqn = 12 pkg syscall (linux-arm-cgo), const SizeofIPv6Mreq = 20 pkg syscall (linux-arm-cgo), const SizeofIfAddrmsg = 8 pkg syscall (linux-arm-cgo), const SizeofIfInfomsg = 16 pkg syscall (linux-arm-cgo), const SizeofInet4Pktinfo = 12 pkg syscall (linux-arm-cgo), const SizeofInet6Pktinfo = 20 pkg syscall (linux-arm-cgo), const SizeofInotifyEvent = 16 pkg syscall (linux-arm-cgo), const SizeofLinger = 8 pkg syscall (linux-arm-cgo), const SizeofMsghdr = 28 pkg syscall (linux-arm-cgo), const SizeofNlAttr = 4 pkg syscall (linux-arm-cgo), const SizeofNlMsgerr = 20 pkg syscall (linux-arm-cgo), const SizeofNlMsghdr = 16 pkg syscall (linux-arm-cgo), const SizeofRtAttr = 4 pkg syscall (linux-arm-cgo), const SizeofRtGenmsg = 1 pkg syscall (linux-arm-cgo), const SizeofRtMsg = 12 pkg syscall (linux-arm-cgo), const SizeofRtNexthop = 8 pkg syscall (linux-arm-cgo), const SizeofSockFilter = 8 pkg syscall (linux-arm-cgo), const SizeofSockFprog = 8 pkg syscall (linux-arm-cgo), const SizeofSockaddrAny = 112 pkg syscall (linux-arm-cgo), const SizeofSockaddrInet4 = 16 pkg syscall (linux-arm-cgo), const SizeofSockaddrInet6 = 28 pkg syscall (linux-arm-cgo), const SizeofSockaddrLinklayer = 20 pkg syscall (linux-arm-cgo), const SizeofSockaddrNetlink = 12 pkg syscall (linux-arm-cgo), const SizeofSockaddrUnix = 110 pkg syscall (linux-arm-cgo), const SizeofTCPInfo = 104 pkg syscall (linux-arm-cgo), const SizeofUcred = 12 pkg syscall (linux-arm-cgo), const TCGETS = 21505 pkg syscall (linux-arm-cgo), const TCP_CONGESTION = 13 pkg syscall (linux-arm-cgo), const TCP_CORK = 3 pkg syscall (linux-arm-cgo), const TCP_DEFER_ACCEPT = 9 pkg syscall (linux-arm-cgo), const TCP_INFO = 11 pkg syscall (linux-arm-cgo), const TCP_KEEPCNT = 6 pkg syscall (linux-arm-cgo), const TCP_KEEPIDLE = 4 pkg syscall (linux-arm-cgo), const TCP_KEEPINTVL = 5 pkg syscall (linux-arm-cgo), const TCP_LINGER2 = 8 pkg syscall (linux-arm-cgo), const TCP_MAXSEG = 2 pkg syscall (linux-arm-cgo), const TCP_MAXWIN = 65535 pkg syscall (linux-arm-cgo), const TCP_MAX_WINSHIFT = 14 pkg syscall (linux-arm-cgo), const TCP_MD5SIG = 14 pkg syscall (linux-arm-cgo), const TCP_MD5SIG_MAXKEYLEN = 80 pkg syscall (linux-arm-cgo), const TCP_MSS = 512 pkg syscall (linux-arm-cgo), const TCP_QUICKACK = 12 pkg syscall (linux-arm-cgo), const TCP_SYNCNT = 7 pkg syscall (linux-arm-cgo), const TCP_WINDOW_CLAMP = 10 pkg syscall (linux-arm-cgo), const TCSETS = 21506 pkg syscall (linux-arm-cgo), const TIOCCBRK = 21544 pkg syscall (linux-arm-cgo), const TIOCCONS = 21533 pkg syscall (linux-arm-cgo), const TIOCEXCL = 21516 pkg syscall (linux-arm-cgo), const TIOCGDEV = 2147767346 pkg syscall (linux-arm-cgo), const TIOCGETD = 21540 pkg syscall (linux-arm-cgo), const TIOCGICOUNT = 21597 pkg syscall (linux-arm-cgo), const TIOCGLCKTRMIOS = 21590 pkg syscall (linux-arm-cgo), const TIOCGPGRP = 21519 pkg syscall (linux-arm-cgo), const TIOCGPTN = 2147767344 pkg syscall (linux-arm-cgo), const TIOCGRS485 = 21550 pkg syscall (linux-arm-cgo), const TIOCGSERIAL = 21534 pkg syscall (linux-arm-cgo), const TIOCGSID = 21545 pkg syscall (linux-arm-cgo), const TIOCGSOFTCAR = 21529 pkg syscall (linux-arm-cgo), const TIOCGWINSZ = 21523 pkg syscall (linux-arm-cgo), const TIOCINQ = 21531 pkg syscall (linux-arm-cgo), const TIOCLINUX = 21532 pkg syscall (linux-arm-cgo), const TIOCMBIC = 21527 pkg syscall (linux-arm-cgo), const TIOCMBIS = 21526 pkg syscall (linux-arm-cgo), const TIOCMGET = 21525 pkg syscall (linux-arm-cgo), const TIOCMIWAIT = 21596 pkg syscall (linux-arm-cgo), const TIOCMSET = 21528 pkg syscall (linux-arm-cgo), const TIOCM_CAR = 64 pkg syscall (linux-arm-cgo), const TIOCM_CD = 64 pkg syscall (linux-arm-cgo), const TIOCM_CTS = 32 pkg syscall (linux-arm-cgo), const TIOCM_DSR = 256 pkg syscall (linux-arm-cgo), const TIOCM_DTR = 2 pkg syscall (linux-arm-cgo), const TIOCM_LE = 1 pkg syscall (linux-arm-cgo), const TIOCM_RI = 128 pkg syscall (linux-arm-cgo), const TIOCM_RNG = 128 pkg syscall (linux-arm-cgo), const TIOCM_RTS = 4 pkg syscall (linux-arm-cgo), const TIOCM_SR = 16 pkg syscall (linux-arm-cgo), const TIOCM_ST = 8 pkg syscall (linux-arm-cgo), const TIOCNOTTY = 21538 pkg syscall (linux-arm-cgo), const TIOCNXCL = 21517 pkg syscall (linux-arm-cgo), const TIOCOUTQ = 21521 pkg syscall (linux-arm-cgo), const TIOCPKT = 21536 pkg syscall (linux-arm-cgo), const TIOCPKT_DATA = 0 pkg syscall (linux-arm-cgo), const TIOCPKT_DOSTOP = 32 pkg syscall (linux-arm-cgo), const TIOCPKT_FLUSHREAD = 1 pkg syscall (linux-arm-cgo), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (linux-arm-cgo), const TIOCPKT_IOCTL = 64 pkg syscall (linux-arm-cgo), const TIOCPKT_NOSTOP = 16 pkg syscall (linux-arm-cgo), const TIOCPKT_START = 8 pkg syscall (linux-arm-cgo), const TIOCPKT_STOP = 4 pkg syscall (linux-arm-cgo), const TIOCSBRK = 21543 pkg syscall (linux-arm-cgo), const TIOCSCTTY = 21518 pkg syscall (linux-arm-cgo), const TIOCSERCONFIG = 21587 pkg syscall (linux-arm-cgo), const TIOCSERGETLSR = 21593 pkg syscall (linux-arm-cgo), const TIOCSERGETMULTI = 21594 pkg syscall (linux-arm-cgo), const TIOCSERGSTRUCT = 21592 pkg syscall (linux-arm-cgo), const TIOCSERGWILD = 21588 pkg syscall (linux-arm-cgo), const TIOCSERSETMULTI = 21595 pkg syscall (linux-arm-cgo), const TIOCSERSWILD = 21589 pkg syscall (linux-arm-cgo), const TIOCSER_TEMT = 1 pkg syscall (linux-arm-cgo), const TIOCSETD = 21539 pkg syscall (linux-arm-cgo), const TIOCSIG = 1074025526 pkg syscall (linux-arm-cgo), const TIOCSLCKTRMIOS = 21591 pkg syscall (linux-arm-cgo), const TIOCSPGRP = 21520 pkg syscall (linux-arm-cgo), const TIOCSPTLCK = 1074025521 pkg syscall (linux-arm-cgo), const TIOCSRS485 = 21551 pkg syscall (linux-arm-cgo), const TIOCSSERIAL = 21535 pkg syscall (linux-arm-cgo), const TIOCSSOFTCAR = 21530 pkg syscall (linux-arm-cgo), const TIOCSTI = 21522 pkg syscall (linux-arm-cgo), const TIOCSWINSZ = 21524 pkg syscall (linux-arm-cgo), const TIOCVHANGUP = 21559 pkg syscall (linux-arm-cgo), const TOSTOP = 256 pkg syscall (linux-arm-cgo), const TUNATTACHFILTER = 1074287829 pkg syscall (linux-arm-cgo), const TUNDETACHFILTER = 1074287830 pkg syscall (linux-arm-cgo), const TUNGETFEATURES = 2147767503 pkg syscall (linux-arm-cgo), const TUNGETIFF = 2147767506 pkg syscall (linux-arm-cgo), const TUNGETSNDBUF = 2147767507 pkg syscall (linux-arm-cgo), const TUNGETVNETHDRSZ = 2147767511 pkg syscall (linux-arm-cgo), const TUNSETDEBUG = 1074025673 pkg syscall (linux-arm-cgo), const TUNSETGROUP = 1074025678 pkg syscall (linux-arm-cgo), const TUNSETIFF = 1074025674 pkg syscall (linux-arm-cgo), const TUNSETLINK = 1074025677 pkg syscall (linux-arm-cgo), const TUNSETNOCSUM = 1074025672 pkg syscall (linux-arm-cgo), const TUNSETOFFLOAD = 1074025680 pkg syscall (linux-arm-cgo), const TUNSETOWNER = 1074025676 pkg syscall (linux-arm-cgo), const TUNSETPERSIST = 1074025675 pkg syscall (linux-arm-cgo), const TUNSETSNDBUF = 1074025684 pkg syscall (linux-arm-cgo), const TUNSETTXFILTER = 1074025681 pkg syscall (linux-arm-cgo), const TUNSETVNETHDRSZ = 1074025688 pkg syscall (linux-arm-cgo), const VDISCARD = 13 pkg syscall (linux-arm-cgo), const VEOF = 4 pkg syscall (linux-arm-cgo), const VEOL = 11 pkg syscall (linux-arm-cgo), const VEOL2 = 16 pkg syscall (linux-arm-cgo), const VERASE = 2 pkg syscall (linux-arm-cgo), const VINTR = 0 pkg syscall (linux-arm-cgo), const VKILL = 3 pkg syscall (linux-arm-cgo), const VLNEXT = 15 pkg syscall (linux-arm-cgo), const VMIN = 6 pkg syscall (linux-arm-cgo), const VQUIT = 1 pkg syscall (linux-arm-cgo), const VREPRINT = 12 pkg syscall (linux-arm-cgo), const VSTART = 8 pkg syscall (linux-arm-cgo), const VSTOP = 9 pkg syscall (linux-arm-cgo), const VSUSP = 10 pkg syscall (linux-arm-cgo), const VSWTC = 7 pkg syscall (linux-arm-cgo), const VTIME = 5 pkg syscall (linux-arm-cgo), const VWERASE = 14 pkg syscall (linux-arm-cgo), const WALL = 1073741824 pkg syscall (linux-arm-cgo), const WCLONE = 2147483648 pkg syscall (linux-arm-cgo), const WCONTINUED = 8 pkg syscall (linux-arm-cgo), const WEXITED = 4 pkg syscall (linux-arm-cgo), const WNOHANG = 1 pkg syscall (linux-arm-cgo), const WNOTHREAD = 536870912 pkg syscall (linux-arm-cgo), const WNOWAIT = 16777216 pkg syscall (linux-arm-cgo), const WORDSIZE = 32 pkg syscall (linux-arm-cgo), const WSTOPPED = 2 pkg syscall (linux-arm-cgo), const WUNTRACED = 2 pkg syscall (linux-arm-cgo), const XCASE = 4 pkg syscall (netbsd-386), const AF_APPLETALK = 16 pkg syscall (netbsd-386), const AF_ARP = 28 pkg syscall (netbsd-386), const AF_BLUETOOTH = 31 pkg syscall (netbsd-386), const AF_CCITT = 10 pkg syscall (netbsd-386), const AF_CHAOS = 5 pkg syscall (netbsd-386), const AF_CNT = 21 pkg syscall (netbsd-386), const AF_COIP = 20 pkg syscall (netbsd-386), const AF_DATAKIT = 9 pkg syscall (netbsd-386), const AF_DECnet = 12 pkg syscall (netbsd-386), const AF_DLI = 13 pkg syscall (netbsd-386), const AF_E164 = 26 pkg syscall (netbsd-386), const AF_ECMA = 8 pkg syscall (netbsd-386), const AF_HYLINK = 15 pkg syscall (netbsd-386), const AF_IEEE80211 = 32 pkg syscall (netbsd-386), const AF_IMPLINK = 3 pkg syscall (netbsd-386), const AF_INET6 = 24 pkg syscall (netbsd-386), const AF_IPX = 23 pkg syscall (netbsd-386), const AF_ISDN = 26 pkg syscall (netbsd-386), const AF_ISO = 7 pkg syscall (netbsd-386), const AF_LAT = 14 pkg syscall (netbsd-386), const AF_LINK = 18 pkg syscall (netbsd-386), const AF_LOCAL = 1 pkg syscall (netbsd-386), const AF_MAX = 35 pkg syscall (netbsd-386), const AF_MPLS = 33 pkg syscall (netbsd-386), const AF_NATM = 27 pkg syscall (netbsd-386), const AF_NS = 6 pkg syscall (netbsd-386), const AF_OROUTE = 17 pkg syscall (netbsd-386), const AF_OSI = 7 pkg syscall (netbsd-386), const AF_PUP = 4 pkg syscall (netbsd-386), const AF_ROUTE = 34 pkg syscall (netbsd-386), const AF_SNA = 11 pkg syscall (netbsd-386), const ARPHRD_ARCNET = 7 pkg syscall (netbsd-386), const ARPHRD_ETHER = 1 pkg syscall (netbsd-386), const ARPHRD_FRELAY = 15 pkg syscall (netbsd-386), const ARPHRD_IEEE1394 = 24 pkg syscall (netbsd-386), const ARPHRD_IEEE802 = 6 pkg syscall (netbsd-386), const ARPHRD_STRIP = 23 pkg syscall (netbsd-386), const B0 = 0 pkg syscall (netbsd-386), const B110 = 110 pkg syscall (netbsd-386), const B115200 = 115200 pkg syscall (netbsd-386), const B1200 = 1200 pkg syscall (netbsd-386), const B134 = 134 pkg syscall (netbsd-386), const B14400 = 14400 pkg syscall (netbsd-386), const B150 = 150 pkg syscall (netbsd-386), const B1800 = 1800 pkg syscall (netbsd-386), const B19200 = 19200 pkg syscall (netbsd-386), const B200 = 200 pkg syscall (netbsd-386), const B230400 = 230400 pkg syscall (netbsd-386), const B2400 = 2400 pkg syscall (netbsd-386), const B28800 = 28800 pkg syscall (netbsd-386), const B300 = 300 pkg syscall (netbsd-386), const B38400 = 38400 pkg syscall (netbsd-386), const B460800 = 460800 pkg syscall (netbsd-386), const B4800 = 4800 pkg syscall (netbsd-386), const B50 = 50 pkg syscall (netbsd-386), const B57600 = 57600 pkg syscall (netbsd-386), const B600 = 600 pkg syscall (netbsd-386), const B7200 = 7200 pkg syscall (netbsd-386), const B75 = 75 pkg syscall (netbsd-386), const B76800 = 76800 pkg syscall (netbsd-386), const B921600 = 921600 pkg syscall (netbsd-386), const B9600 = 9600 pkg syscall (netbsd-386), const BIOCFEEDBACK = 2147762813 pkg syscall (netbsd-386), const BIOCFLUSH = 536887912 pkg syscall (netbsd-386), const BIOCGBLEN = 1074020966 pkg syscall (netbsd-386), const BIOCGDLT = 1074020970 pkg syscall (netbsd-386), const BIOCGDLTLIST = 3221766775 pkg syscall (netbsd-386), const BIOCGETIF = 1083196011 pkg syscall (netbsd-386), const BIOCGFEEDBACK = 1074020988 pkg syscall (netbsd-386), const BIOCGHDRCMPLT = 1074020980 pkg syscall (netbsd-386), const BIOCGRTIMEOUT = 1074545275 pkg syscall (netbsd-386), const BIOCGSEESENT = 1074020984 pkg syscall (netbsd-386), const BIOCGSTATS = 1082147439 pkg syscall (netbsd-386), const BIOCGSTATSOLD = 1074283119 pkg syscall (netbsd-386), const BIOCIMMEDIATE = 2147762800 pkg syscall (netbsd-386), const BIOCPROMISC = 536887913 pkg syscall (netbsd-386), const BIOCSBLEN = 3221504614 pkg syscall (netbsd-386), const BIOCSDLT = 2147762806 pkg syscall (netbsd-386), const BIOCSETF = 2148024935 pkg syscall (netbsd-386), const BIOCSETIF = 2156937836 pkg syscall (netbsd-386), const BIOCSFEEDBACK = 2147762813 pkg syscall (netbsd-386), const BIOCSHDRCMPLT = 2147762805 pkg syscall (netbsd-386), const BIOCSRTIMEOUT = 2148287098 pkg syscall (netbsd-386), const BIOCSSEESENT = 2147762809 pkg syscall (netbsd-386), const BIOCSTCPF = 2148024946 pkg syscall (netbsd-386), const BIOCSUDPF = 2148024947 pkg syscall (netbsd-386), const BIOCVERSION = 1074020977 pkg syscall (netbsd-386), const BPF_A = 16 pkg syscall (netbsd-386), const BPF_ABS = 32 pkg syscall (netbsd-386), const BPF_ADD = 0 pkg syscall (netbsd-386), const BPF_ALIGNMENT = 4 pkg syscall (netbsd-386), const BPF_ALIGNMENT32 = 4 pkg syscall (netbsd-386), const BPF_ALU = 4 pkg syscall (netbsd-386), const BPF_AND = 80 pkg syscall (netbsd-386), const BPF_B = 16 pkg syscall (netbsd-386), const BPF_DFLTBUFSIZE = 1048576 pkg syscall (netbsd-386), const BPF_DIV = 48 pkg syscall (netbsd-386), const BPF_H = 8 pkg syscall (netbsd-386), const BPF_IMM = 0 pkg syscall (netbsd-386), const BPF_IND = 64 pkg syscall (netbsd-386), const BPF_JA = 0 pkg syscall (netbsd-386), const BPF_JEQ = 16 pkg syscall (netbsd-386), const BPF_JGE = 48 pkg syscall (netbsd-386), const BPF_JGT = 32 pkg syscall (netbsd-386), const BPF_JMP = 5 pkg syscall (netbsd-386), const BPF_JSET = 64 pkg syscall (netbsd-386), const BPF_K = 0 pkg syscall (netbsd-386), const BPF_LD = 0 pkg syscall (netbsd-386), const BPF_LDX = 1 pkg syscall (netbsd-386), const BPF_LEN = 128 pkg syscall (netbsd-386), const BPF_LSH = 96 pkg syscall (netbsd-386), const BPF_MAJOR_VERSION = 1 pkg syscall (netbsd-386), const BPF_MAXBUFSIZE = 16777216 pkg syscall (netbsd-386), const BPF_MAXINSNS = 512 pkg syscall (netbsd-386), const BPF_MEM = 96 pkg syscall (netbsd-386), const BPF_MEMWORDS = 16 pkg syscall (netbsd-386), const BPF_MINBUFSIZE = 32 pkg syscall (netbsd-386), const BPF_MINOR_VERSION = 1 pkg syscall (netbsd-386), const BPF_MISC = 7 pkg syscall (netbsd-386), const BPF_MSH = 160 pkg syscall (netbsd-386), const BPF_MUL = 32 pkg syscall (netbsd-386), const BPF_NEG = 128 pkg syscall (netbsd-386), const BPF_OR = 64 pkg syscall (netbsd-386), const BPF_RELEASE = 199606 pkg syscall (netbsd-386), const BPF_RET = 6 pkg syscall (netbsd-386), const BPF_RSH = 112 pkg syscall (netbsd-386), const BPF_ST = 2 pkg syscall (netbsd-386), const BPF_STX = 3 pkg syscall (netbsd-386), const BPF_SUB = 16 pkg syscall (netbsd-386), const BPF_TAX = 0 pkg syscall (netbsd-386), const BPF_TXA = 128 pkg syscall (netbsd-386), const BPF_W = 0 pkg syscall (netbsd-386), const BPF_X = 8 pkg syscall (netbsd-386), const BRKINT = 2 pkg syscall (netbsd-386), const CFLUSH = 15 pkg syscall (netbsd-386), const CLOCAL = 32768 pkg syscall (netbsd-386), const CREAD = 2048 pkg syscall (netbsd-386), const CS5 = 0 pkg syscall (netbsd-386), const CS6 = 256 pkg syscall (netbsd-386), const CS7 = 512 pkg syscall (netbsd-386), const CS8 = 768 pkg syscall (netbsd-386), const CSIZE = 768 pkg syscall (netbsd-386), const CSTART = 17 pkg syscall (netbsd-386), const CSTATUS = 20 pkg syscall (netbsd-386), const CSTOP = 19 pkg syscall (netbsd-386), const CSTOPB = 1024 pkg syscall (netbsd-386), const CSUSP = 26 pkg syscall (netbsd-386), const CTL_MAXNAME = 12 pkg syscall (netbsd-386), const CTL_NET = 4 pkg syscall (netbsd-386), const CTL_QUERY = -2 pkg syscall (netbsd-386), const DIOCBSFLUSH = 536896632 pkg syscall (netbsd-386), const DLT_A429 = 184 pkg syscall (netbsd-386), const DLT_A653_ICM = 185 pkg syscall (netbsd-386), const DLT_AIRONET_HEADER = 120 pkg syscall (netbsd-386), const DLT_AOS = 222 pkg syscall (netbsd-386), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (netbsd-386), const DLT_ARCNET = 7 pkg syscall (netbsd-386), const DLT_ARCNET_LINUX = 129 pkg syscall (netbsd-386), const DLT_ATM_CLIP = 19 pkg syscall (netbsd-386), const DLT_ATM_RFC1483 = 11 pkg syscall (netbsd-386), const DLT_AURORA = 126 pkg syscall (netbsd-386), const DLT_AX25 = 3 pkg syscall (netbsd-386), const DLT_AX25_KISS = 202 pkg syscall (netbsd-386), const DLT_BACNET_MS_TP = 165 pkg syscall (netbsd-386), const DLT_BLUETOOTH_HCI_H4 = 187 pkg syscall (netbsd-386), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 pkg syscall (netbsd-386), const DLT_CAN20B = 190 pkg syscall (netbsd-386), const DLT_CAN_SOCKETCAN = 227 pkg syscall (netbsd-386), const DLT_CHAOS = 5 pkg syscall (netbsd-386), const DLT_CISCO_IOS = 118 pkg syscall (netbsd-386), const DLT_C_HDLC = 104 pkg syscall (netbsd-386), const DLT_C_HDLC_WITH_DIR = 205 pkg syscall (netbsd-386), const DLT_DECT = 221 pkg syscall (netbsd-386), const DLT_DOCSIS = 143 pkg syscall (netbsd-386), const DLT_ECONET = 115 pkg syscall (netbsd-386), const DLT_EN10MB = 1 pkg syscall (netbsd-386), const DLT_EN3MB = 2 pkg syscall (netbsd-386), const DLT_ENC = 109 pkg syscall (netbsd-386), const DLT_ERF = 197 pkg syscall (netbsd-386), const DLT_ERF_ETH = 175 pkg syscall (netbsd-386), const DLT_ERF_POS = 176 pkg syscall (netbsd-386), const DLT_FC_2 = 224 pkg syscall (netbsd-386), const DLT_FC_2_WITH_FRAME_DELIMS = 225 pkg syscall (netbsd-386), const DLT_FDDI = 10 pkg syscall (netbsd-386), const DLT_FLEXRAY = 210 pkg syscall (netbsd-386), const DLT_FRELAY = 107 pkg syscall (netbsd-386), const DLT_FRELAY_WITH_DIR = 206 pkg syscall (netbsd-386), const DLT_GCOM_SERIAL = 173 pkg syscall (netbsd-386), const DLT_GCOM_T1E1 = 172 pkg syscall (netbsd-386), const DLT_GPF_F = 171 pkg syscall (netbsd-386), const DLT_GPF_T = 170 pkg syscall (netbsd-386), const DLT_GPRS_LLC = 169 pkg syscall (netbsd-386), const DLT_GSMTAP_ABIS = 218 pkg syscall (netbsd-386), const DLT_GSMTAP_UM = 217 pkg syscall (netbsd-386), const DLT_HDLC = 16 pkg syscall (netbsd-386), const DLT_HHDLC = 121 pkg syscall (netbsd-386), const DLT_HIPPI = 15 pkg syscall (netbsd-386), const DLT_IBM_SN = 146 pkg syscall (netbsd-386), const DLT_IBM_SP = 145 pkg syscall (netbsd-386), const DLT_IEEE802 = 6 pkg syscall (netbsd-386), const DLT_IEEE802_11 = 105 pkg syscall (netbsd-386), const DLT_IEEE802_11_RADIO = 127 pkg syscall (netbsd-386), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (netbsd-386), const DLT_IEEE802_15_4 = 195 pkg syscall (netbsd-386), const DLT_IEEE802_15_4_LINUX = 191 pkg syscall (netbsd-386), const DLT_IEEE802_15_4_NONASK_PHY = 215 pkg syscall (netbsd-386), const DLT_IEEE802_16_MAC_CPS = 188 pkg syscall (netbsd-386), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 pkg syscall (netbsd-386), const DLT_IPMB = 199 pkg syscall (netbsd-386), const DLT_IPMB_LINUX = 209 pkg syscall (netbsd-386), const DLT_IPNET = 226 pkg syscall (netbsd-386), const DLT_IPV4 = 228 pkg syscall (netbsd-386), const DLT_IPV6 = 229 pkg syscall (netbsd-386), const DLT_IP_OVER_FC = 122 pkg syscall (netbsd-386), const DLT_JUNIPER_ATM1 = 137 pkg syscall (netbsd-386), const DLT_JUNIPER_ATM2 = 135 pkg syscall (netbsd-386), const DLT_JUNIPER_CHDLC = 181 pkg syscall (netbsd-386), const DLT_JUNIPER_ES = 132 pkg syscall (netbsd-386), const DLT_JUNIPER_ETHER = 178 pkg syscall (netbsd-386), const DLT_JUNIPER_FRELAY = 180 pkg syscall (netbsd-386), const DLT_JUNIPER_GGSN = 133 pkg syscall (netbsd-386), const DLT_JUNIPER_ISM = 194 pkg syscall (netbsd-386), const DLT_JUNIPER_MFR = 134 pkg syscall (netbsd-386), const DLT_JUNIPER_MLFR = 131 pkg syscall (netbsd-386), const DLT_JUNIPER_MLPPP = 130 pkg syscall (netbsd-386), const DLT_JUNIPER_MONITOR = 164 pkg syscall (netbsd-386), const DLT_JUNIPER_PIC_PEER = 174 pkg syscall (netbsd-386), const DLT_JUNIPER_PPP = 179 pkg syscall (netbsd-386), const DLT_JUNIPER_PPPOE = 167 pkg syscall (netbsd-386), const DLT_JUNIPER_PPPOE_ATM = 168 pkg syscall (netbsd-386), const DLT_JUNIPER_SERVICES = 136 pkg syscall (netbsd-386), const DLT_JUNIPER_ST = 200 pkg syscall (netbsd-386), const DLT_JUNIPER_VP = 183 pkg syscall (netbsd-386), const DLT_LAPB_WITH_DIR = 207 pkg syscall (netbsd-386), const DLT_LAPD = 203 pkg syscall (netbsd-386), const DLT_LIN = 212 pkg syscall (netbsd-386), const DLT_LINUX_EVDEV = 216 pkg syscall (netbsd-386), const DLT_LINUX_IRDA = 144 pkg syscall (netbsd-386), const DLT_LINUX_LAPD = 177 pkg syscall (netbsd-386), const DLT_LINUX_SLL = 113 pkg syscall (netbsd-386), const DLT_LOOP = 108 pkg syscall (netbsd-386), const DLT_LTALK = 114 pkg syscall (netbsd-386), const DLT_MFR = 182 pkg syscall (netbsd-386), const DLT_MOST = 211 pkg syscall (netbsd-386), const DLT_MPLS = 219 pkg syscall (netbsd-386), const DLT_MTP2 = 140 pkg syscall (netbsd-386), const DLT_MTP2_WITH_PHDR = 139 pkg syscall (netbsd-386), const DLT_MTP3 = 141 pkg syscall (netbsd-386), const DLT_NULL = 0 pkg syscall (netbsd-386), const DLT_PCI_EXP = 125 pkg syscall (netbsd-386), const DLT_PFLOG = 117 pkg syscall (netbsd-386), const DLT_PFSYNC = 18 pkg syscall (netbsd-386), const DLT_PPI = 192 pkg syscall (netbsd-386), const DLT_PPP = 9 pkg syscall (netbsd-386), const DLT_PPP_BSDOS = 14 pkg syscall (netbsd-386), const DLT_PPP_ETHER = 51 pkg syscall (netbsd-386), const DLT_PPP_PPPD = 166 pkg syscall (netbsd-386), const DLT_PPP_SERIAL = 50 pkg syscall (netbsd-386), const DLT_PPP_WITH_DIR = 204 pkg syscall (netbsd-386), const DLT_PRISM_HEADER = 119 pkg syscall (netbsd-386), const DLT_PRONET = 4 pkg syscall (netbsd-386), const DLT_RAIF1 = 198 pkg syscall (netbsd-386), const DLT_RAW = 12 pkg syscall (netbsd-386), const DLT_RAWAF_MASK = 35913728 pkg syscall (netbsd-386), const DLT_RIO = 124 pkg syscall (netbsd-386), const DLT_SCCP = 142 pkg syscall (netbsd-386), const DLT_SITA = 196 pkg syscall (netbsd-386), const DLT_SLIP = 8 pkg syscall (netbsd-386), const DLT_SLIP_BSDOS = 13 pkg syscall (netbsd-386), const DLT_SUNATM = 123 pkg syscall (netbsd-386), const DLT_SYMANTEC_FIREWALL = 99 pkg syscall (netbsd-386), const DLT_TZSP = 128 pkg syscall (netbsd-386), const DLT_USB = 186 pkg syscall (netbsd-386), const DLT_USB_LINUX = 189 pkg syscall (netbsd-386), const DLT_USB_LINUX_MMAPPED = 220 pkg syscall (netbsd-386), const DLT_WIHART = 223 pkg syscall (netbsd-386), const DLT_X2E_SERIAL = 213 pkg syscall (netbsd-386), const DLT_X2E_XORAYA = 214 pkg syscall (netbsd-386), const DT_BLK = 6 pkg syscall (netbsd-386), const DT_CHR = 2 pkg syscall (netbsd-386), const DT_DIR = 4 pkg syscall (netbsd-386), const DT_FIFO = 1 pkg syscall (netbsd-386), const DT_LNK = 10 pkg syscall (netbsd-386), const DT_REG = 8 pkg syscall (netbsd-386), const DT_SOCK = 12 pkg syscall (netbsd-386), const DT_UNKNOWN = 0 pkg syscall (netbsd-386), const DT_WHT = 14 pkg syscall (netbsd-386), const E2BIG = 7 pkg syscall (netbsd-386), const EACCES = 13 pkg syscall (netbsd-386), const EADDRINUSE = 48 pkg syscall (netbsd-386), const EADDRNOTAVAIL = 49 pkg syscall (netbsd-386), const EAFNOSUPPORT = 47 pkg syscall (netbsd-386), const EAGAIN = 35 pkg syscall (netbsd-386), const EALREADY = 37 pkg syscall (netbsd-386), const EAUTH = 80 pkg syscall (netbsd-386), const EBADF = 9 pkg syscall (netbsd-386), const EBADMSG = 88 pkg syscall (netbsd-386), const EBADRPC = 72 pkg syscall (netbsd-386), const EBUSY = 16 pkg syscall (netbsd-386), const ECANCELED = 87 pkg syscall (netbsd-386), const ECHILD = 10 pkg syscall (netbsd-386), const ECHO = 8 pkg syscall (netbsd-386), const ECHOCTL = 64 pkg syscall (netbsd-386), const ECHOE = 2 pkg syscall (netbsd-386), const ECHOK = 4 pkg syscall (netbsd-386), const ECHOKE = 1 pkg syscall (netbsd-386), const ECHONL = 16 pkg syscall (netbsd-386), const ECHOPRT = 32 pkg syscall (netbsd-386), const ECONNABORTED = 53 pkg syscall (netbsd-386), const ECONNREFUSED = 61 pkg syscall (netbsd-386), const ECONNRESET = 54 pkg syscall (netbsd-386), const EDEADLK = 11 pkg syscall (netbsd-386), const EDESTADDRREQ = 39 pkg syscall (netbsd-386), const EDOM = 33 pkg syscall (netbsd-386), const EDQUOT = 69 pkg syscall (netbsd-386), const EEXIST = 17 pkg syscall (netbsd-386), const EFAULT = 14 pkg syscall (netbsd-386), const EFBIG = 27 pkg syscall (netbsd-386), const EFTYPE = 79 pkg syscall (netbsd-386), const EHOSTDOWN = 64 pkg syscall (netbsd-386), const EHOSTUNREACH = 65 pkg syscall (netbsd-386), const EIDRM = 82 pkg syscall (netbsd-386), const EILSEQ = 85 pkg syscall (netbsd-386), const EINPROGRESS = 36 pkg syscall (netbsd-386), const EINTR = 4 pkg syscall (netbsd-386), const EINVAL = 22 pkg syscall (netbsd-386), const EIO = 5 pkg syscall (netbsd-386), const EISCONN = 56 pkg syscall (netbsd-386), const EISDIR = 21 pkg syscall (netbsd-386), const ELAST = 96 pkg syscall (netbsd-386), const ELOOP = 62 pkg syscall (netbsd-386), const EMFILE = 24 pkg syscall (netbsd-386), const EMLINK = 31 pkg syscall (netbsd-386), const EMSGSIZE = 40 pkg syscall (netbsd-386), const EMULTIHOP = 94 pkg syscall (netbsd-386), const EMUL_LINUX = 1 pkg syscall (netbsd-386), const EMUL_LINUX32 = 5 pkg syscall (netbsd-386), const EMUL_MAXID = 6 pkg syscall (netbsd-386), const ENAMETOOLONG = 63 pkg syscall (netbsd-386), const ENEEDAUTH = 81 pkg syscall (netbsd-386), const ENETDOWN = 50 pkg syscall (netbsd-386), const ENETRESET = 52 pkg syscall (netbsd-386), const ENETUNREACH = 51 pkg syscall (netbsd-386), const ENFILE = 23 pkg syscall (netbsd-386), const ENOATTR = 93 pkg syscall (netbsd-386), const ENOBUFS = 55 pkg syscall (netbsd-386), const ENODATA = 89 pkg syscall (netbsd-386), const ENODEV = 19 pkg syscall (netbsd-386), const ENOEXEC = 8 pkg syscall (netbsd-386), const ENOLCK = 77 pkg syscall (netbsd-386), const ENOLINK = 95 pkg syscall (netbsd-386), const ENOMEM = 12 pkg syscall (netbsd-386), const ENOMSG = 83 pkg syscall (netbsd-386), const ENOPROTOOPT = 42 pkg syscall (netbsd-386), const ENOSPC = 28 pkg syscall (netbsd-386), const ENOSR = 90 pkg syscall (netbsd-386), const ENOSTR = 91 pkg syscall (netbsd-386), const ENOSYS = 78 pkg syscall (netbsd-386), const ENOTBLK = 15 pkg syscall (netbsd-386), const ENOTCONN = 57 pkg syscall (netbsd-386), const ENOTDIR = 20 pkg syscall (netbsd-386), const ENOTEMPTY = 66 pkg syscall (netbsd-386), const ENOTSOCK = 38 pkg syscall (netbsd-386), const ENOTSUP = 86 pkg syscall (netbsd-386), const ENOTTY = 25 pkg syscall (netbsd-386), const ENXIO = 6 pkg syscall (netbsd-386), const EN_SW_CTL_INF = 4096 pkg syscall (netbsd-386), const EN_SW_CTL_PREC = 768 pkg syscall (netbsd-386), const EN_SW_CTL_ROUND = 3072 pkg syscall (netbsd-386), const EN_SW_DATACHAIN = 128 pkg syscall (netbsd-386), const EN_SW_DENORM = 2 pkg syscall (netbsd-386), const EN_SW_INVOP = 1 pkg syscall (netbsd-386), const EN_SW_OVERFLOW = 8 pkg syscall (netbsd-386), const EN_SW_PRECLOSS = 32 pkg syscall (netbsd-386), const EN_SW_UNDERFLOW = 16 pkg syscall (netbsd-386), const EN_SW_ZERODIV = 4 pkg syscall (netbsd-386), const EOPNOTSUPP = 45 pkg syscall (netbsd-386), const EOVERFLOW = 84 pkg syscall (netbsd-386), const EPERM = 1 pkg syscall (netbsd-386), const EPFNOSUPPORT = 46 pkg syscall (netbsd-386), const EPIPE = 32 pkg syscall (netbsd-386), const EPROCLIM = 67 pkg syscall (netbsd-386), const EPROCUNAVAIL = 76 pkg syscall (netbsd-386), const EPROGMISMATCH = 75 pkg syscall (netbsd-386), const EPROGUNAVAIL = 74 pkg syscall (netbsd-386), const EPROTO = 96 pkg syscall (netbsd-386), const EPROTONOSUPPORT = 43 pkg syscall (netbsd-386), const EPROTOTYPE = 41 pkg syscall (netbsd-386), const ERANGE = 34 pkg syscall (netbsd-386), const EREMOTE = 71 pkg syscall (netbsd-386), const EROFS = 30 pkg syscall (netbsd-386), const ERPCMISMATCH = 73 pkg syscall (netbsd-386), const ESHUTDOWN = 58 pkg syscall (netbsd-386), const ESOCKTNOSUPPORT = 44 pkg syscall (netbsd-386), const ESPIPE = 29 pkg syscall (netbsd-386), const ESRCH = 3 pkg syscall (netbsd-386), const ESTALE = 70 pkg syscall (netbsd-386), const ETHERCAP_JUMBO_MTU = 4 pkg syscall (netbsd-386), const ETHERCAP_VLAN_HWTAGGING = 2 pkg syscall (netbsd-386), const ETHERCAP_VLAN_MTU = 1 pkg syscall (netbsd-386), const ETHERMIN = 46 pkg syscall (netbsd-386), const ETHERMTU = 1500 pkg syscall (netbsd-386), const ETHERMTU_JUMBO = 9000 pkg syscall (netbsd-386), const ETHERTYPE_8023 = 4 pkg syscall (netbsd-386), const ETHERTYPE_AARP = 33011 pkg syscall (netbsd-386), const ETHERTYPE_ACCTON = 33680 pkg syscall (netbsd-386), const ETHERTYPE_AEONIC = 32822 pkg syscall (netbsd-386), const ETHERTYPE_ALPHA = 33098 pkg syscall (netbsd-386), const ETHERTYPE_AMBER = 24584 pkg syscall (netbsd-386), const ETHERTYPE_AMOEBA = 33093 pkg syscall (netbsd-386), const ETHERTYPE_APOLLO = 33015 pkg syscall (netbsd-386), const ETHERTYPE_APOLLODOMAIN = 32793 pkg syscall (netbsd-386), const ETHERTYPE_APPLETALK = 32923 pkg syscall (netbsd-386), const ETHERTYPE_APPLITEK = 32967 pkg syscall (netbsd-386), const ETHERTYPE_ARGONAUT = 32826 pkg syscall (netbsd-386), const ETHERTYPE_ARP = 2054 pkg syscall (netbsd-386), const ETHERTYPE_AT = 32923 pkg syscall (netbsd-386), const ETHERTYPE_ATALK = 32923 pkg syscall (netbsd-386), const ETHERTYPE_ATOMIC = 34527 pkg syscall (netbsd-386), const ETHERTYPE_ATT = 32873 pkg syscall (netbsd-386), const ETHERTYPE_ATTSTANFORD = 32776 pkg syscall (netbsd-386), const ETHERTYPE_AUTOPHON = 32874 pkg syscall (netbsd-386), const ETHERTYPE_AXIS = 34902 pkg syscall (netbsd-386), const ETHERTYPE_BCLOOP = 36867 pkg syscall (netbsd-386), const ETHERTYPE_BOFL = 33026 pkg syscall (netbsd-386), const ETHERTYPE_CABLETRON = 28724 pkg syscall (netbsd-386), const ETHERTYPE_CHAOS = 2052 pkg syscall (netbsd-386), const ETHERTYPE_COMDESIGN = 32876 pkg syscall (netbsd-386), const ETHERTYPE_COMPUGRAPHIC = 32877 pkg syscall (netbsd-386), const ETHERTYPE_COUNTERPOINT = 32866 pkg syscall (netbsd-386), const ETHERTYPE_CRONUS = 32772 pkg syscall (netbsd-386), const ETHERTYPE_CRONUSVLN = 32771 pkg syscall (netbsd-386), const ETHERTYPE_DCA = 4660 pkg syscall (netbsd-386), const ETHERTYPE_DDE = 32891 pkg syscall (netbsd-386), const ETHERTYPE_DEBNI = 43690 pkg syscall (netbsd-386), const ETHERTYPE_DECAM = 32840 pkg syscall (netbsd-386), const ETHERTYPE_DECCUST = 24582 pkg syscall (netbsd-386), const ETHERTYPE_DECDIAG = 24581 pkg syscall (netbsd-386), const ETHERTYPE_DECDNS = 32828 pkg syscall (netbsd-386), const ETHERTYPE_DECDTS = 32830 pkg syscall (netbsd-386), const ETHERTYPE_DECEXPER = 24576 pkg syscall (netbsd-386), const ETHERTYPE_DECLAST = 32833 pkg syscall (netbsd-386), const ETHERTYPE_DECLTM = 32831 pkg syscall (netbsd-386), const ETHERTYPE_DECMUMPS = 24585 pkg syscall (netbsd-386), const ETHERTYPE_DECNETBIOS = 32832 pkg syscall (netbsd-386), const ETHERTYPE_DELTACON = 34526 pkg syscall (netbsd-386), const ETHERTYPE_DIDDLE = 17185 pkg syscall (netbsd-386), const ETHERTYPE_DLOG1 = 1632 pkg syscall (netbsd-386), const ETHERTYPE_DLOG2 = 1633 pkg syscall (netbsd-386), const ETHERTYPE_DN = 24579 pkg syscall (netbsd-386), const ETHERTYPE_DOGFIGHT = 6537 pkg syscall (netbsd-386), const ETHERTYPE_DSMD = 32825 pkg syscall (netbsd-386), const ETHERTYPE_ECMA = 2051 pkg syscall (netbsd-386), const ETHERTYPE_ENCRYPT = 32829 pkg syscall (netbsd-386), const ETHERTYPE_ES = 32861 pkg syscall (netbsd-386), const ETHERTYPE_EXCELAN = 32784 pkg syscall (netbsd-386), const ETHERTYPE_EXPERDATA = 32841 pkg syscall (netbsd-386), const ETHERTYPE_FLIP = 33094 pkg syscall (netbsd-386), const ETHERTYPE_FLOWCONTROL = 34824 pkg syscall (netbsd-386), const ETHERTYPE_FRARP = 2056 pkg syscall (netbsd-386), const ETHERTYPE_GENDYN = 32872 pkg syscall (netbsd-386), const ETHERTYPE_HAYES = 33072 pkg syscall (netbsd-386), const ETHERTYPE_HIPPI_FP = 33152 pkg syscall (netbsd-386), const ETHERTYPE_HITACHI = 34848 pkg syscall (netbsd-386), const ETHERTYPE_HP = 32773 pkg syscall (netbsd-386), const ETHERTYPE_IEEEPUP = 2560 pkg syscall (netbsd-386), const ETHERTYPE_IEEEPUPAT = 2561 pkg syscall (netbsd-386), const ETHERTYPE_IMLBL = 19522 pkg syscall (netbsd-386), const ETHERTYPE_IMLBLDIAG = 16972 pkg syscall (netbsd-386), const ETHERTYPE_IP = 2048 pkg syscall (netbsd-386), const ETHERTYPE_IPAS = 34668 pkg syscall (netbsd-386), const ETHERTYPE_IPV6 = 34525 pkg syscall (netbsd-386), const ETHERTYPE_IPX = 33079 pkg syscall (netbsd-386), const ETHERTYPE_IPXNEW = 32823 pkg syscall (netbsd-386), const ETHERTYPE_KALPANA = 34178 pkg syscall (netbsd-386), const ETHERTYPE_LANBRIDGE = 32824 pkg syscall (netbsd-386), const ETHERTYPE_LANPROBE = 34952 pkg syscall (netbsd-386), const ETHERTYPE_LAT = 24580 pkg syscall (netbsd-386), const ETHERTYPE_LBACK = 36864 pkg syscall (netbsd-386), const ETHERTYPE_LITTLE = 32864 pkg syscall (netbsd-386), const ETHERTYPE_LOGICRAFT = 33096 pkg syscall (netbsd-386), const ETHERTYPE_LOOPBACK = 36864 pkg syscall (netbsd-386), const ETHERTYPE_MATRA = 32890 pkg syscall (netbsd-386), const ETHERTYPE_MAX = 65535 pkg syscall (netbsd-386), const ETHERTYPE_MERIT = 32892 pkg syscall (netbsd-386), const ETHERTYPE_MICP = 34618 pkg syscall (netbsd-386), const ETHERTYPE_MOPDL = 24577 pkg syscall (netbsd-386), const ETHERTYPE_MOPRC = 24578 pkg syscall (netbsd-386), const ETHERTYPE_MOTOROLA = 33165 pkg syscall (netbsd-386), const ETHERTYPE_MPLS = 34887 pkg syscall (netbsd-386), const ETHERTYPE_MPLS_MCAST = 34888 pkg syscall (netbsd-386), const ETHERTYPE_MUMPS = 33087 pkg syscall (netbsd-386), const ETHERTYPE_NBPCC = 15364 pkg syscall (netbsd-386), const ETHERTYPE_NBPCLAIM = 15369 pkg syscall (netbsd-386), const ETHERTYPE_NBPCLREQ = 15365 pkg syscall (netbsd-386), const ETHERTYPE_NBPCLRSP = 15366 pkg syscall (netbsd-386), const ETHERTYPE_NBPCREQ = 15362 pkg syscall (netbsd-386), const ETHERTYPE_NBPCRSP = 15363 pkg syscall (netbsd-386), const ETHERTYPE_NBPDG = 15367 pkg syscall (netbsd-386), const ETHERTYPE_NBPDGB = 15368 pkg syscall (netbsd-386), const ETHERTYPE_NBPDLTE = 15370 pkg syscall (netbsd-386), const ETHERTYPE_NBPRAR = 15372 pkg syscall (netbsd-386), const ETHERTYPE_NBPRAS = 15371 pkg syscall (netbsd-386), const ETHERTYPE_NBPRST = 15373 pkg syscall (netbsd-386), const ETHERTYPE_NBPSCD = 15361 pkg syscall (netbsd-386), const ETHERTYPE_NBPVCD = 15360 pkg syscall (netbsd-386), const ETHERTYPE_NBS = 2050 pkg syscall (netbsd-386), const ETHERTYPE_NCD = 33097 pkg syscall (netbsd-386), const ETHERTYPE_NESTAR = 32774 pkg syscall (netbsd-386), const ETHERTYPE_NETBEUI = 33169 pkg syscall (netbsd-386), const ETHERTYPE_NOVELL = 33080 pkg syscall (netbsd-386), const ETHERTYPE_NS = 1536 pkg syscall (netbsd-386), const ETHERTYPE_NSAT = 1537 pkg syscall (netbsd-386), const ETHERTYPE_NSCOMPAT = 2055 pkg syscall (netbsd-386), const ETHERTYPE_NTRAILER = 16 pkg syscall (netbsd-386), const ETHERTYPE_OS9 = 28679 pkg syscall (netbsd-386), const ETHERTYPE_OS9NET = 28681 pkg syscall (netbsd-386), const ETHERTYPE_PACER = 32966 pkg syscall (netbsd-386), const ETHERTYPE_PAE = 34958 pkg syscall (netbsd-386), const ETHERTYPE_PCS = 16962 pkg syscall (netbsd-386), const ETHERTYPE_PLANNING = 32836 pkg syscall (netbsd-386), const ETHERTYPE_PPP = 34827 pkg syscall (netbsd-386), const ETHERTYPE_PPPOE = 34916 pkg syscall (netbsd-386), const ETHERTYPE_PPPOEDISC = 34915 pkg syscall (netbsd-386), const ETHERTYPE_PRIMENTS = 28721 pkg syscall (netbsd-386), const ETHERTYPE_PUP = 512 pkg syscall (netbsd-386), const ETHERTYPE_PUPAT = 512 pkg syscall (netbsd-386), const ETHERTYPE_RACAL = 28720 pkg syscall (netbsd-386), const ETHERTYPE_RATIONAL = 33104 pkg syscall (netbsd-386), const ETHERTYPE_RAWFR = 25945 pkg syscall (netbsd-386), const ETHERTYPE_RCL = 6549 pkg syscall (netbsd-386), const ETHERTYPE_RDP = 34617 pkg syscall (netbsd-386), const ETHERTYPE_RETIX = 33010 pkg syscall (netbsd-386), const ETHERTYPE_REVARP = 32821 pkg syscall (netbsd-386), const ETHERTYPE_SCA = 24583 pkg syscall (netbsd-386), const ETHERTYPE_SECTRA = 34523 pkg syscall (netbsd-386), const ETHERTYPE_SECUREDATA = 34669 pkg syscall (netbsd-386), const ETHERTYPE_SGITW = 33150 pkg syscall (netbsd-386), const ETHERTYPE_SG_BOUNCE = 32790 pkg syscall (netbsd-386), const ETHERTYPE_SG_DIAG = 32787 pkg syscall (netbsd-386), const ETHERTYPE_SG_NETGAMES = 32788 pkg syscall (netbsd-386), const ETHERTYPE_SG_RESV = 32789 pkg syscall (netbsd-386), const ETHERTYPE_SIMNET = 21000 pkg syscall (netbsd-386), const ETHERTYPE_SLOWPROTOCOLS = 34825 pkg syscall (netbsd-386), const ETHERTYPE_SNA = 32981 pkg syscall (netbsd-386), const ETHERTYPE_SNMP = 33100 pkg syscall (netbsd-386), const ETHERTYPE_SONIX = 64245 pkg syscall (netbsd-386), const ETHERTYPE_SPIDER = 32927 pkg syscall (netbsd-386), const ETHERTYPE_SPRITE = 1280 pkg syscall (netbsd-386), const ETHERTYPE_STP = 33153 pkg syscall (netbsd-386), const ETHERTYPE_TALARIS = 33067 pkg syscall (netbsd-386), const ETHERTYPE_TALARISMC = 34091 pkg syscall (netbsd-386), const ETHERTYPE_TCPCOMP = 34667 pkg syscall (netbsd-386), const ETHERTYPE_TCPSM = 36866 pkg syscall (netbsd-386), const ETHERTYPE_TEC = 33103 pkg syscall (netbsd-386), const ETHERTYPE_TIGAN = 32815 pkg syscall (netbsd-386), const ETHERTYPE_TRAIL = 4096 pkg syscall (netbsd-386), const ETHERTYPE_TRANSETHER = 25944 pkg syscall (netbsd-386), const ETHERTYPE_TYMSHARE = 32814 pkg syscall (netbsd-386), const ETHERTYPE_UBBST = 28677 pkg syscall (netbsd-386), const ETHERTYPE_UBDEBUG = 2304 pkg syscall (netbsd-386), const ETHERTYPE_UBDIAGLOOP = 28674 pkg syscall (netbsd-386), const ETHERTYPE_UBDL = 28672 pkg syscall (netbsd-386), const ETHERTYPE_UBNIU = 28673 pkg syscall (netbsd-386), const ETHERTYPE_UBNMC = 28675 pkg syscall (netbsd-386), const ETHERTYPE_VALID = 5632 pkg syscall (netbsd-386), const ETHERTYPE_VARIAN = 32989 pkg syscall (netbsd-386), const ETHERTYPE_VAXELN = 32827 pkg syscall (netbsd-386), const ETHERTYPE_VEECO = 32871 pkg syscall (netbsd-386), const ETHERTYPE_VEXP = 32859 pkg syscall (netbsd-386), const ETHERTYPE_VGLAB = 33073 pkg syscall (netbsd-386), const ETHERTYPE_VINES = 2989 pkg syscall (netbsd-386), const ETHERTYPE_VINESECHO = 2991 pkg syscall (netbsd-386), const ETHERTYPE_VINESLOOP = 2990 pkg syscall (netbsd-386), const ETHERTYPE_VITAL = 65280 pkg syscall (netbsd-386), const ETHERTYPE_VLAN = 33024 pkg syscall (netbsd-386), const ETHERTYPE_VLTLMAN = 32896 pkg syscall (netbsd-386), const ETHERTYPE_VPROD = 32860 pkg syscall (netbsd-386), const ETHERTYPE_VURESERVED = 33095 pkg syscall (netbsd-386), const ETHERTYPE_WATERLOO = 33072 pkg syscall (netbsd-386), const ETHERTYPE_WELLFLEET = 33027 pkg syscall (netbsd-386), const ETHERTYPE_X25 = 2053 pkg syscall (netbsd-386), const ETHERTYPE_X75 = 2049 pkg syscall (netbsd-386), const ETHERTYPE_XNSSM = 36865 pkg syscall (netbsd-386), const ETHERTYPE_XTP = 33149 pkg syscall (netbsd-386), const ETHER_ADDR_LEN = 6 pkg syscall (netbsd-386), const ETHER_CRC_LEN = 4 pkg syscall (netbsd-386), const ETHER_CRC_POLY_BE = 79764918 pkg syscall (netbsd-386), const ETHER_CRC_POLY_LE = 3988292384 pkg syscall (netbsd-386), const ETHER_HDR_LEN = 14 pkg syscall (netbsd-386), const ETHER_MAX_LEN = 1518 pkg syscall (netbsd-386), const ETHER_MAX_LEN_JUMBO = 9018 pkg syscall (netbsd-386), const ETHER_MIN_LEN = 64 pkg syscall (netbsd-386), const ETHER_PPPOE_ENCAP_LEN = 8 pkg syscall (netbsd-386), const ETHER_TYPE_LEN = 2 pkg syscall (netbsd-386), const ETHER_VLAN_ENCAP_LEN = 4 pkg syscall (netbsd-386), const ETIME = 92 pkg syscall (netbsd-386), const ETIMEDOUT = 60 pkg syscall (netbsd-386), const ETOOMANYREFS = 59 pkg syscall (netbsd-386), const ETXTBSY = 26 pkg syscall (netbsd-386), const EUSERS = 68 pkg syscall (netbsd-386), const EVFILT_AIO = 2 pkg syscall (netbsd-386), const EVFILT_PROC = 4 pkg syscall (netbsd-386), const EVFILT_READ = 0 pkg syscall (netbsd-386), const EVFILT_SIGNAL = 5 pkg syscall (netbsd-386), const EVFILT_SYSCOUNT = 7 pkg syscall (netbsd-386), const EVFILT_TIMER = 6 pkg syscall (netbsd-386), const EVFILT_VNODE = 3 pkg syscall (netbsd-386), const EVFILT_WRITE = 1 pkg syscall (netbsd-386), const EV_ADD = 1 pkg syscall (netbsd-386), const EV_CLEAR = 32 pkg syscall (netbsd-386), const EV_DELETE = 2 pkg syscall (netbsd-386), const EV_DISABLE = 8 pkg syscall (netbsd-386), const EV_ENABLE = 4 pkg syscall (netbsd-386), const EV_EOF = 32768 pkg syscall (netbsd-386), const EV_ERROR = 16384 pkg syscall (netbsd-386), const EV_FLAG1 = 8192 pkg syscall (netbsd-386), const EV_ONESHOT = 16 pkg syscall (netbsd-386), const EV_SYSFLAGS = 61440 pkg syscall (netbsd-386), const EWOULDBLOCK = 35 pkg syscall (netbsd-386), const EXDEV = 18 pkg syscall (netbsd-386), const EXTA = 19200 pkg syscall (netbsd-386), const EXTB = 38400 pkg syscall (netbsd-386), const EXTPROC = 2048 pkg syscall (netbsd-386), const FD_CLOEXEC = 1 pkg syscall (netbsd-386), const FD_SETSIZE = 256 pkg syscall (netbsd-386), const FLUSHO = 8388608 pkg syscall (netbsd-386), const F_CLOSEM = 10 pkg syscall (netbsd-386), const F_DUPFD = 0 pkg syscall (netbsd-386), const F_DUPFD_CLOEXEC = 12 pkg syscall (netbsd-386), const F_FSCTL = -2147483648 pkg syscall (netbsd-386), const F_FSDIRMASK = 1879048192 pkg syscall (netbsd-386), const F_FSIN = 268435456 pkg syscall (netbsd-386), const F_FSINOUT = 805306368 pkg syscall (netbsd-386), const F_FSOUT = 536870912 pkg syscall (netbsd-386), const F_FSPRIV = 32768 pkg syscall (netbsd-386), const F_FSVOID = 1073741824 pkg syscall (netbsd-386), const F_GETFD = 1 pkg syscall (netbsd-386), const F_GETFL = 3 pkg syscall (netbsd-386), const F_GETLK = 7 pkg syscall (netbsd-386), const F_GETNOSIGPIPE = 13 pkg syscall (netbsd-386), const F_GETOWN = 5 pkg syscall (netbsd-386), const F_MAXFD = 11 pkg syscall (netbsd-386), const F_OK = 0 pkg syscall (netbsd-386), const F_PARAM_MASK = 4095 pkg syscall (netbsd-386), const F_PARAM_MAX = 4095 pkg syscall (netbsd-386), const F_RDLCK = 1 pkg syscall (netbsd-386), const F_SETFD = 2 pkg syscall (netbsd-386), const F_SETFL = 4 pkg syscall (netbsd-386), const F_SETLK = 8 pkg syscall (netbsd-386), const F_SETLKW = 9 pkg syscall (netbsd-386), const F_SETNOSIGPIPE = 14 pkg syscall (netbsd-386), const F_SETOWN = 6 pkg syscall (netbsd-386), const F_UNLCK = 2 pkg syscall (netbsd-386), const F_WRLCK = 3 pkg syscall (netbsd-386), const HUPCL = 16384 pkg syscall (netbsd-386), const ICANON = 256 pkg syscall (netbsd-386), const ICRNL = 256 pkg syscall (netbsd-386), const IEXTEN = 1024 pkg syscall (netbsd-386), const IFAN_ARRIVAL = 0 pkg syscall (netbsd-386), const IFAN_DEPARTURE = 1 pkg syscall (netbsd-386), const IFA_ROUTE = 1 pkg syscall (netbsd-386), const IFF_ALLMULTI = 512 pkg syscall (netbsd-386), const IFF_CANTCHANGE = 36690 pkg syscall (netbsd-386), const IFF_DEBUG = 4 pkg syscall (netbsd-386), const IFF_LINK0 = 4096 pkg syscall (netbsd-386), const IFF_LINK1 = 8192 pkg syscall (netbsd-386), const IFF_LINK2 = 16384 pkg syscall (netbsd-386), const IFF_LOOPBACK = 8 pkg syscall (netbsd-386), const IFF_MULTICAST = 32768 pkg syscall (netbsd-386), const IFF_NOARP = 128 pkg syscall (netbsd-386), const IFF_NOTRAILERS = 32 pkg syscall (netbsd-386), const IFF_OACTIVE = 1024 pkg syscall (netbsd-386), const IFF_POINTOPOINT = 16 pkg syscall (netbsd-386), const IFF_PROMISC = 256 pkg syscall (netbsd-386), const IFF_RUNNING = 64 pkg syscall (netbsd-386), const IFF_SIMPLEX = 2048 pkg syscall (netbsd-386), const IFNAMSIZ = 16 pkg syscall (netbsd-386), const IFT_1822 = 2 pkg syscall (netbsd-386), const IFT_A12MPPSWITCH = 130 pkg syscall (netbsd-386), const IFT_AAL2 = 187 pkg syscall (netbsd-386), const IFT_AAL5 = 49 pkg syscall (netbsd-386), const IFT_ADSL = 94 pkg syscall (netbsd-386), const IFT_AFLANE8023 = 59 pkg syscall (netbsd-386), const IFT_AFLANE8025 = 60 pkg syscall (netbsd-386), const IFT_ARAP = 88 pkg syscall (netbsd-386), const IFT_ARCNET = 35 pkg syscall (netbsd-386), const IFT_ARCNETPLUS = 36 pkg syscall (netbsd-386), const IFT_ASYNC = 84 pkg syscall (netbsd-386), const IFT_ATM = 37 pkg syscall (netbsd-386), const IFT_ATMDXI = 105 pkg syscall (netbsd-386), const IFT_ATMFUNI = 106 pkg syscall (netbsd-386), const IFT_ATMIMA = 107 pkg syscall (netbsd-386), const IFT_ATMLOGICAL = 80 pkg syscall (netbsd-386), const IFT_ATMRADIO = 189 pkg syscall (netbsd-386), const IFT_ATMSUBINTERFACE = 134 pkg syscall (netbsd-386), const IFT_ATMVCIENDPT = 194 pkg syscall (netbsd-386), const IFT_ATMVIRTUAL = 149 pkg syscall (netbsd-386), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (netbsd-386), const IFT_BRIDGE = 209 pkg syscall (netbsd-386), const IFT_BSC = 83 pkg syscall (netbsd-386), const IFT_CARP = 248 pkg syscall (netbsd-386), const IFT_CCTEMUL = 61 pkg syscall (netbsd-386), const IFT_CEPT = 19 pkg syscall (netbsd-386), const IFT_CES = 133 pkg syscall (netbsd-386), const IFT_CHANNEL = 70 pkg syscall (netbsd-386), const IFT_CNR = 85 pkg syscall (netbsd-386), const IFT_COFFEE = 132 pkg syscall (netbsd-386), const IFT_COMPOSITELINK = 155 pkg syscall (netbsd-386), const IFT_DCN = 141 pkg syscall (netbsd-386), const IFT_DIGITALPOWERLINE = 138 pkg syscall (netbsd-386), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (netbsd-386), const IFT_DLSW = 74 pkg syscall (netbsd-386), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (netbsd-386), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (netbsd-386), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (netbsd-386), const IFT_DOCSCABLEUPSTREAMCHANNEL = 205 pkg syscall (netbsd-386), const IFT_DS0 = 81 pkg syscall (netbsd-386), const IFT_DS0BUNDLE = 82 pkg syscall (netbsd-386), const IFT_DS1FDL = 170 pkg syscall (netbsd-386), const IFT_DS3 = 30 pkg syscall (netbsd-386), const IFT_DTM = 140 pkg syscall (netbsd-386), const IFT_DVBASILN = 172 pkg syscall (netbsd-386), const IFT_DVBASIOUT = 173 pkg syscall (netbsd-386), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (netbsd-386), const IFT_DVBRCCMACLAYER = 146 pkg syscall (netbsd-386), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (netbsd-386), const IFT_ECONET = 206 pkg syscall (netbsd-386), const IFT_EON = 25 pkg syscall (netbsd-386), const IFT_EPLRS = 87 pkg syscall (netbsd-386), const IFT_ESCON = 73 pkg syscall (netbsd-386), const IFT_ETHER = 6 pkg syscall (netbsd-386), const IFT_FAITH = 242 pkg syscall (netbsd-386), const IFT_FAST = 125 pkg syscall (netbsd-386), const IFT_FASTETHER = 62 pkg syscall (netbsd-386), const IFT_FASTETHERFX = 69 pkg syscall (netbsd-386), const IFT_FDDI = 15 pkg syscall (netbsd-386), const IFT_FIBRECHANNEL = 56 pkg syscall (netbsd-386), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (netbsd-386), const IFT_FRAMERELAYMPI = 92 pkg syscall (netbsd-386), const IFT_FRDLCIENDPT = 193 pkg syscall (netbsd-386), const IFT_FRELAY = 32 pkg syscall (netbsd-386), const IFT_FRELAYDCE = 44 pkg syscall (netbsd-386), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (netbsd-386), const IFT_FRFORWARD = 158 pkg syscall (netbsd-386), const IFT_G703AT2MB = 67 pkg syscall (netbsd-386), const IFT_G703AT64K = 66 pkg syscall (netbsd-386), const IFT_GIF = 240 pkg syscall (netbsd-386), const IFT_GIGABITETHERNET = 117 pkg syscall (netbsd-386), const IFT_GR303IDT = 178 pkg syscall (netbsd-386), const IFT_GR303RDT = 177 pkg syscall (netbsd-386), const IFT_H323GATEKEEPER = 164 pkg syscall (netbsd-386), const IFT_H323PROXY = 165 pkg syscall (netbsd-386), const IFT_HDH1822 = 3 pkg syscall (netbsd-386), const IFT_HDLC = 118 pkg syscall (netbsd-386), const IFT_HDSL2 = 168 pkg syscall (netbsd-386), const IFT_HIPERLAN2 = 183 pkg syscall (netbsd-386), const IFT_HIPPI = 47 pkg syscall (netbsd-386), const IFT_HIPPIINTERFACE = 57 pkg syscall (netbsd-386), const IFT_HOSTPAD = 90 pkg syscall (netbsd-386), const IFT_HSSI = 46 pkg syscall (netbsd-386), const IFT_HY = 14 pkg syscall (netbsd-386), const IFT_IBM370PARCHAN = 72 pkg syscall (netbsd-386), const IFT_IDSL = 154 pkg syscall (netbsd-386), const IFT_IEEE1394 = 144 pkg syscall (netbsd-386), const IFT_IEEE80211 = 71 pkg syscall (netbsd-386), const IFT_IEEE80212 = 55 pkg syscall (netbsd-386), const IFT_IEEE8023ADLAG = 161 pkg syscall (netbsd-386), const IFT_IFGSN = 145 pkg syscall (netbsd-386), const IFT_IMT = 190 pkg syscall (netbsd-386), const IFT_INFINIBAND = 199 pkg syscall (netbsd-386), const IFT_INTERLEAVE = 124 pkg syscall (netbsd-386), const IFT_IP = 126 pkg syscall (netbsd-386), const IFT_IPFORWARD = 142 pkg syscall (netbsd-386), const IFT_IPOVERATM = 114 pkg syscall (netbsd-386), const IFT_IPOVERCDLC = 109 pkg syscall (netbsd-386), const IFT_IPOVERCLAW = 110 pkg syscall (netbsd-386), const IFT_IPSWITCH = 78 pkg syscall (netbsd-386), const IFT_ISDN = 63 pkg syscall (netbsd-386), const IFT_ISDNBASIC = 20 pkg syscall (netbsd-386), const IFT_ISDNPRIMARY = 21 pkg syscall (netbsd-386), const IFT_ISDNS = 75 pkg syscall (netbsd-386), const IFT_ISDNU = 76 pkg syscall (netbsd-386), const IFT_ISO88022LLC = 41 pkg syscall (netbsd-386), const IFT_ISO88023 = 7 pkg syscall (netbsd-386), const IFT_ISO88024 = 8 pkg syscall (netbsd-386), const IFT_ISO88025 = 9 pkg syscall (netbsd-386), const IFT_ISO88025CRFPINT = 98 pkg syscall (netbsd-386), const IFT_ISO88025DTR = 86 pkg syscall (netbsd-386), const IFT_ISO88025FIBER = 115 pkg syscall (netbsd-386), const IFT_ISO88026 = 10 pkg syscall (netbsd-386), const IFT_ISUP = 179 pkg syscall (netbsd-386), const IFT_L2VLAN = 135 pkg syscall (netbsd-386), const IFT_L3IPVLAN = 136 pkg syscall (netbsd-386), const IFT_L3IPXVLAN = 137 pkg syscall (netbsd-386), const IFT_LAPB = 16 pkg syscall (netbsd-386), const IFT_LAPD = 77 pkg syscall (netbsd-386), const IFT_LAPF = 119 pkg syscall (netbsd-386), const IFT_LINEGROUP = 210 pkg syscall (netbsd-386), const IFT_LOCALTALK = 42 pkg syscall (netbsd-386), const IFT_LOOP = 24 pkg syscall (netbsd-386), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (netbsd-386), const IFT_MFSIGLINK = 167 pkg syscall (netbsd-386), const IFT_MIOX25 = 38 pkg syscall (netbsd-386), const IFT_MODEM = 48 pkg syscall (netbsd-386), const IFT_MPC = 113 pkg syscall (netbsd-386), const IFT_MPLS = 166 pkg syscall (netbsd-386), const IFT_MPLSTUNNEL = 150 pkg syscall (netbsd-386), const IFT_MSDSL = 143 pkg syscall (netbsd-386), const IFT_MVL = 191 pkg syscall (netbsd-386), const IFT_MYRINET = 99 pkg syscall (netbsd-386), const IFT_NFAS = 175 pkg syscall (netbsd-386), const IFT_NSIP = 27 pkg syscall (netbsd-386), const IFT_OPTICALCHANNEL = 195 pkg syscall (netbsd-386), const IFT_OPTICALTRANSPORT = 196 pkg syscall (netbsd-386), const IFT_OTHER = 1 pkg syscall (netbsd-386), const IFT_P10 = 12 pkg syscall (netbsd-386), const IFT_P80 = 13 pkg syscall (netbsd-386), const IFT_PARA = 34 pkg syscall (netbsd-386), const IFT_PFLOG = 245 pkg syscall (netbsd-386), const IFT_PFSYNC = 246 pkg syscall (netbsd-386), const IFT_PLC = 174 pkg syscall (netbsd-386), const IFT_PON155 = 207 pkg syscall (netbsd-386), const IFT_PON622 = 208 pkg syscall (netbsd-386), const IFT_POS = 171 pkg syscall (netbsd-386), const IFT_PPP = 23 pkg syscall (netbsd-386), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (netbsd-386), const IFT_PROPATM = 197 pkg syscall (netbsd-386), const IFT_PROPBWAP2MP = 184 pkg syscall (netbsd-386), const IFT_PROPCNLS = 89 pkg syscall (netbsd-386), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (netbsd-386), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (netbsd-386), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (netbsd-386), const IFT_PROPMUX = 54 pkg syscall (netbsd-386), const IFT_PROPVIRTUAL = 53 pkg syscall (netbsd-386), const IFT_PROPWIRELESSP2P = 157 pkg syscall (netbsd-386), const IFT_PTPSERIAL = 22 pkg syscall (netbsd-386), const IFT_PVC = 241 pkg syscall (netbsd-386), const IFT_Q2931 = 201 pkg syscall (netbsd-386), const IFT_QLLC = 68 pkg syscall (netbsd-386), const IFT_RADIOMAC = 188 pkg syscall (netbsd-386), const IFT_RADSL = 95 pkg syscall (netbsd-386), const IFT_REACHDSL = 192 pkg syscall (netbsd-386), const IFT_RFC1483 = 159 pkg syscall (netbsd-386), const IFT_RS232 = 33 pkg syscall (netbsd-386), const IFT_RSRB = 79 pkg syscall (netbsd-386), const IFT_SDLC = 17 pkg syscall (netbsd-386), const IFT_SDSL = 96 pkg syscall (netbsd-386), const IFT_SHDSL = 169 pkg syscall (netbsd-386), const IFT_SIP = 31 pkg syscall (netbsd-386), const IFT_SIPSIG = 204 pkg syscall (netbsd-386), const IFT_SIPTG = 203 pkg syscall (netbsd-386), const IFT_SLIP = 28 pkg syscall (netbsd-386), const IFT_SMDSDXI = 43 pkg syscall (netbsd-386), const IFT_SMDSICIP = 52 pkg syscall (netbsd-386), const IFT_SONET = 39 pkg syscall (netbsd-386), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (netbsd-386), const IFT_SONETPATH = 50 pkg syscall (netbsd-386), const IFT_SONETVT = 51 pkg syscall (netbsd-386), const IFT_SRP = 151 pkg syscall (netbsd-386), const IFT_SS7SIGLINK = 156 pkg syscall (netbsd-386), const IFT_STACKTOSTACK = 111 pkg syscall (netbsd-386), const IFT_STARLAN = 11 pkg syscall (netbsd-386), const IFT_STF = 215 pkg syscall (netbsd-386), const IFT_T1 = 18 pkg syscall (netbsd-386), const IFT_TDLC = 116 pkg syscall (netbsd-386), const IFT_TELINK = 200 pkg syscall (netbsd-386), const IFT_TERMPAD = 91 pkg syscall (netbsd-386), const IFT_TR008 = 176 pkg syscall (netbsd-386), const IFT_TRANSPHDLC = 123 pkg syscall (netbsd-386), const IFT_TUNNEL = 131 pkg syscall (netbsd-386), const IFT_ULTRA = 29 pkg syscall (netbsd-386), const IFT_USB = 160 pkg syscall (netbsd-386), const IFT_V11 = 64 pkg syscall (netbsd-386), const IFT_V35 = 45 pkg syscall (netbsd-386), const IFT_V36 = 65 pkg syscall (netbsd-386), const IFT_V37 = 120 pkg syscall (netbsd-386), const IFT_VDSL = 97 pkg syscall (netbsd-386), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (netbsd-386), const IFT_VIRTUALTG = 202 pkg syscall (netbsd-386), const IFT_VOICEDID = 213 pkg syscall (netbsd-386), const IFT_VOICEEM = 100 pkg syscall (netbsd-386), const IFT_VOICEEMFGD = 211 pkg syscall (netbsd-386), const IFT_VOICEENCAP = 103 pkg syscall (netbsd-386), const IFT_VOICEFGDEANA = 212 pkg syscall (netbsd-386), const IFT_VOICEFXO = 101 pkg syscall (netbsd-386), const IFT_VOICEFXS = 102 pkg syscall (netbsd-386), const IFT_VOICEOVERATM = 152 pkg syscall (netbsd-386), const IFT_VOICEOVERCABLE = 198 pkg syscall (netbsd-386), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (netbsd-386), const IFT_VOICEOVERIP = 104 pkg syscall (netbsd-386), const IFT_X213 = 93 pkg syscall (netbsd-386), const IFT_X25 = 5 pkg syscall (netbsd-386), const IFT_X25DDN = 4 pkg syscall (netbsd-386), const IFT_X25HUNTGROUP = 122 pkg syscall (netbsd-386), const IFT_X25MLP = 121 pkg syscall (netbsd-386), const IFT_X25PLE = 40 pkg syscall (netbsd-386), const IFT_XETHER = 26 pkg syscall (netbsd-386), const IGNBRK = 1 pkg syscall (netbsd-386), const IGNCR = 128 pkg syscall (netbsd-386), const IGNPAR = 4 pkg syscall (netbsd-386), const IMAXBEL = 8192 pkg syscall (netbsd-386), const INLCR = 64 pkg syscall (netbsd-386), const INPCK = 16 pkg syscall (netbsd-386), const IN_CLASSA_HOST = 16777215 pkg syscall (netbsd-386), const IN_CLASSA_MAX = 128 pkg syscall (netbsd-386), const IN_CLASSA_NET = 4278190080 pkg syscall (netbsd-386), const IN_CLASSA_NSHIFT = 24 pkg syscall (netbsd-386), const IN_CLASSB_HOST = 65535 pkg syscall (netbsd-386), const IN_CLASSB_MAX = 65536 pkg syscall (netbsd-386), const IN_CLASSB_NET = 4294901760 pkg syscall (netbsd-386), const IN_CLASSB_NSHIFT = 16 pkg syscall (netbsd-386), const IN_CLASSC_HOST = 255 pkg syscall (netbsd-386), const IN_CLASSC_NET = 4294967040 pkg syscall (netbsd-386), const IN_CLASSC_NSHIFT = 8 pkg syscall (netbsd-386), const IN_CLASSD_HOST = 268435455 pkg syscall (netbsd-386), const IN_CLASSD_NET = 4026531840 pkg syscall (netbsd-386), const IN_CLASSD_NSHIFT = 28 pkg syscall (netbsd-386), const IN_LOOPBACKNET = 127 pkg syscall (netbsd-386), const IPPROTO_AH = 51 pkg syscall (netbsd-386), const IPPROTO_CARP = 112 pkg syscall (netbsd-386), const IPPROTO_DONE = 257 pkg syscall (netbsd-386), const IPPROTO_DSTOPTS = 60 pkg syscall (netbsd-386), const IPPROTO_EGP = 8 pkg syscall (netbsd-386), const IPPROTO_ENCAP = 98 pkg syscall (netbsd-386), const IPPROTO_EON = 80 pkg syscall (netbsd-386), const IPPROTO_ESP = 50 pkg syscall (netbsd-386), const IPPROTO_ETHERIP = 97 pkg syscall (netbsd-386), const IPPROTO_FRAGMENT = 44 pkg syscall (netbsd-386), const IPPROTO_GGP = 3 pkg syscall (netbsd-386), const IPPROTO_GRE = 47 pkg syscall (netbsd-386), const IPPROTO_HOPOPTS = 0 pkg syscall (netbsd-386), const IPPROTO_ICMP = 1 pkg syscall (netbsd-386), const IPPROTO_ICMPV6 = 58 pkg syscall (netbsd-386), const IPPROTO_IDP = 22 pkg syscall (netbsd-386), const IPPROTO_IGMP = 2 pkg syscall (netbsd-386), const IPPROTO_IPCOMP = 108 pkg syscall (netbsd-386), const IPPROTO_IPIP = 4 pkg syscall (netbsd-386), const IPPROTO_IPV4 = 4 pkg syscall (netbsd-386), const IPPROTO_IPV6_ICMP = 58 pkg syscall (netbsd-386), const IPPROTO_MAX = 256 pkg syscall (netbsd-386), const IPPROTO_MAXID = 52 pkg syscall (netbsd-386), const IPPROTO_MOBILE = 55 pkg syscall (netbsd-386), const IPPROTO_NONE = 59 pkg syscall (netbsd-386), const IPPROTO_PFSYNC = 240 pkg syscall (netbsd-386), const IPPROTO_PIM = 103 pkg syscall (netbsd-386), const IPPROTO_PUP = 12 pkg syscall (netbsd-386), const IPPROTO_RAW = 255 pkg syscall (netbsd-386), const IPPROTO_ROUTING = 43 pkg syscall (netbsd-386), const IPPROTO_RSVP = 46 pkg syscall (netbsd-386), const IPPROTO_TP = 29 pkg syscall (netbsd-386), const IPPROTO_VRRP = 112 pkg syscall (netbsd-386), const IPV6_CHECKSUM = 26 pkg syscall (netbsd-386), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (netbsd-386), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (netbsd-386), const IPV6_DEFHLIM = 64 pkg syscall (netbsd-386), const IPV6_DONTFRAG = 62 pkg syscall (netbsd-386), const IPV6_DSTOPTS = 50 pkg syscall (netbsd-386), const IPV6_FAITH = 29 pkg syscall (netbsd-386), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (netbsd-386), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (netbsd-386), const IPV6_FRAGTTL = 120 pkg syscall (netbsd-386), const IPV6_HLIMDEC = 1 pkg syscall (netbsd-386), const IPV6_HOPLIMIT = 47 pkg syscall (netbsd-386), const IPV6_HOPOPTS = 49 pkg syscall (netbsd-386), const IPV6_IPSEC_POLICY = 28 pkg syscall (netbsd-386), const IPV6_JOIN_GROUP = 12 pkg syscall (netbsd-386), const IPV6_LEAVE_GROUP = 13 pkg syscall (netbsd-386), const IPV6_MAXHLIM = 255 pkg syscall (netbsd-386), const IPV6_MAXPACKET = 65535 pkg syscall (netbsd-386), const IPV6_MMTU = 1280 pkg syscall (netbsd-386), const IPV6_MULTICAST_HOPS = 10 pkg syscall (netbsd-386), const IPV6_MULTICAST_IF = 9 pkg syscall (netbsd-386), const IPV6_MULTICAST_LOOP = 11 pkg syscall (netbsd-386), const IPV6_NEXTHOP = 48 pkg syscall (netbsd-386), const IPV6_PATHMTU = 44 pkg syscall (netbsd-386), const IPV6_PKTINFO = 46 pkg syscall (netbsd-386), const IPV6_PORTRANGE = 14 pkg syscall (netbsd-386), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (netbsd-386), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (netbsd-386), const IPV6_PORTRANGE_LOW = 2 pkg syscall (netbsd-386), const IPV6_RECVDSTOPTS = 40 pkg syscall (netbsd-386), const IPV6_RECVHOPLIMIT = 37 pkg syscall (netbsd-386), const IPV6_RECVHOPOPTS = 39 pkg syscall (netbsd-386), const IPV6_RECVPATHMTU = 43 pkg syscall (netbsd-386), const IPV6_RECVPKTINFO = 36 pkg syscall (netbsd-386), const IPV6_RECVRTHDR = 38 pkg syscall (netbsd-386), const IPV6_RECVTCLASS = 57 pkg syscall (netbsd-386), const IPV6_RTHDR = 51 pkg syscall (netbsd-386), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (netbsd-386), const IPV6_RTHDR_LOOSE = 0 pkg syscall (netbsd-386), const IPV6_RTHDR_STRICT = 1 pkg syscall (netbsd-386), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (netbsd-386), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (netbsd-386), const IPV6_TCLASS = 61 pkg syscall (netbsd-386), const IPV6_UNICAST_HOPS = 4 pkg syscall (netbsd-386), const IPV6_USE_MIN_MTU = 42 pkg syscall (netbsd-386), const IPV6_V6ONLY = 27 pkg syscall (netbsd-386), const IPV6_VERSION = 96 pkg syscall (netbsd-386), const IPV6_VERSION_MASK = 240 pkg syscall (netbsd-386), const IP_ADD_MEMBERSHIP = 12 pkg syscall (netbsd-386), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (netbsd-386), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (netbsd-386), const IP_DF = 16384 pkg syscall (netbsd-386), const IP_DROP_MEMBERSHIP = 13 pkg syscall (netbsd-386), const IP_EF = 32768 pkg syscall (netbsd-386), const IP_ERRORMTU = 21 pkg syscall (netbsd-386), const IP_HDRINCL = 2 pkg syscall (netbsd-386), const IP_IPSEC_POLICY = 22 pkg syscall (netbsd-386), const IP_MAXPACKET = 65535 pkg syscall (netbsd-386), const IP_MAX_MEMBERSHIPS = 20 pkg syscall (netbsd-386), const IP_MF = 8192 pkg syscall (netbsd-386), const IP_MINFRAGSIZE = 69 pkg syscall (netbsd-386), const IP_MINTTL = 24 pkg syscall (netbsd-386), const IP_MSS = 576 pkg syscall (netbsd-386), const IP_MULTICAST_IF = 9 pkg syscall (netbsd-386), const IP_MULTICAST_LOOP = 11 pkg syscall (netbsd-386), const IP_MULTICAST_TTL = 10 pkg syscall (netbsd-386), const IP_OFFMASK = 8191 pkg syscall (netbsd-386), const IP_OPTIONS = 1 pkg syscall (netbsd-386), const IP_PORTRANGE = 19 pkg syscall (netbsd-386), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (netbsd-386), const IP_PORTRANGE_HIGH = 1 pkg syscall (netbsd-386), const IP_PORTRANGE_LOW = 2 pkg syscall (netbsd-386), const IP_RECVDSTADDR = 7 pkg syscall (netbsd-386), const IP_RECVIF = 20 pkg syscall (netbsd-386), const IP_RECVOPTS = 5 pkg syscall (netbsd-386), const IP_RECVRETOPTS = 6 pkg syscall (netbsd-386), const IP_RECVTTL = 23 pkg syscall (netbsd-386), const IP_RETOPTS = 8 pkg syscall (netbsd-386), const IP_RF = 32768 pkg syscall (netbsd-386), const IP_TOS = 3 pkg syscall (netbsd-386), const IP_TTL = 4 pkg syscall (netbsd-386), const ISIG = 128 pkg syscall (netbsd-386), const ISTRIP = 32 pkg syscall (netbsd-386), const IXANY = 2048 pkg syscall (netbsd-386), const IXOFF = 1024 pkg syscall (netbsd-386), const IXON = 512 pkg syscall (netbsd-386), const ImplementsGetwd = false pkg syscall (netbsd-386), const LOCK_EX = 2 pkg syscall (netbsd-386), const LOCK_NB = 4 pkg syscall (netbsd-386), const LOCK_SH = 1 pkg syscall (netbsd-386), const LOCK_UN = 8 pkg syscall (netbsd-386), const MSG_BCAST = 256 pkg syscall (netbsd-386), const MSG_CMSG_CLOEXEC = 2048 pkg syscall (netbsd-386), const MSG_CONTROLMBUF = 33554432 pkg syscall (netbsd-386), const MSG_CTRUNC = 32 pkg syscall (netbsd-386), const MSG_DONTROUTE = 4 pkg syscall (netbsd-386), const MSG_DONTWAIT = 128 pkg syscall (netbsd-386), const MSG_EOR = 8 pkg syscall (netbsd-386), const MSG_IOVUSRSPACE = 67108864 pkg syscall (netbsd-386), const MSG_LENUSRSPACE = 134217728 pkg syscall (netbsd-386), const MSG_MCAST = 512 pkg syscall (netbsd-386), const MSG_NAMEMBUF = 16777216 pkg syscall (netbsd-386), const MSG_NBIO = 4096 pkg syscall (netbsd-386), const MSG_NOSIGNAL = 1024 pkg syscall (netbsd-386), const MSG_OOB = 1 pkg syscall (netbsd-386), const MSG_PEEK = 2 pkg syscall (netbsd-386), const MSG_TRUNC = 16 pkg syscall (netbsd-386), const MSG_USERFLAGS = 16777215 pkg syscall (netbsd-386), const MSG_WAITALL = 64 pkg syscall (netbsd-386), const NAME_MAX = 511 pkg syscall (netbsd-386), const NET_RT_DUMP = 1 pkg syscall (netbsd-386), const NET_RT_FLAGS = 2 pkg syscall (netbsd-386), const NET_RT_IFLIST = 5 pkg syscall (netbsd-386), const NET_RT_MAXID = 6 pkg syscall (netbsd-386), const NET_RT_OIFLIST = 4 pkg syscall (netbsd-386), const NET_RT_OOIFLIST = 3 pkg syscall (netbsd-386), const NOFLSH = 2147483648 pkg syscall (netbsd-386), const NOTE_ATTRIB = 8 pkg syscall (netbsd-386), const NOTE_CHILD = 4 pkg syscall (netbsd-386), const NOTE_DELETE = 1 pkg syscall (netbsd-386), const NOTE_EXEC = 536870912 pkg syscall (netbsd-386), const NOTE_EXIT = 2147483648 pkg syscall (netbsd-386), const NOTE_EXTEND = 4 pkg syscall (netbsd-386), const NOTE_FORK = 1073741824 pkg syscall (netbsd-386), const NOTE_LINK = 16 pkg syscall (netbsd-386), const NOTE_LOWAT = 1 pkg syscall (netbsd-386), const NOTE_PCTRLMASK = 4026531840 pkg syscall (netbsd-386), const NOTE_PDATAMASK = 1048575 pkg syscall (netbsd-386), const NOTE_RENAME = 32 pkg syscall (netbsd-386), const NOTE_REVOKE = 64 pkg syscall (netbsd-386), const NOTE_TRACK = 1 pkg syscall (netbsd-386), const NOTE_TRACKERR = 2 pkg syscall (netbsd-386), const NOTE_WRITE = 2 pkg syscall (netbsd-386), const OCRNL = 16 pkg syscall (netbsd-386), const OFIOGETBMAP = 3221513850 pkg syscall (netbsd-386), const ONLCR = 2 pkg syscall (netbsd-386), const ONLRET = 64 pkg syscall (netbsd-386), const ONOCR = 32 pkg syscall (netbsd-386), const ONOEOT = 8 pkg syscall (netbsd-386), const OPOST = 1 pkg syscall (netbsd-386), const O_ACCMODE = 3 pkg syscall (netbsd-386), const O_ALT_IO = 262144 pkg syscall (netbsd-386), const O_APPEND = 8 pkg syscall (netbsd-386), const O_ASYNC = 64 pkg syscall (netbsd-386), const O_CLOEXEC = 4194304 pkg syscall (netbsd-386), const O_CREAT = 512 pkg syscall (netbsd-386), const O_DIRECT = 524288 pkg syscall (netbsd-386), const O_DIRECTORY = 2097152 pkg syscall (netbsd-386), const O_DSYNC = 65536 pkg syscall (netbsd-386), const O_EXCL = 2048 pkg syscall (netbsd-386), const O_EXLOCK = 32 pkg syscall (netbsd-386), const O_FSYNC = 128 pkg syscall (netbsd-386), const O_NDELAY = 4 pkg syscall (netbsd-386), const O_NOCTTY = 32768 pkg syscall (netbsd-386), const O_NOFOLLOW = 256 pkg syscall (netbsd-386), const O_NONBLOCK = 4 pkg syscall (netbsd-386), const O_NOSIGPIPE = 16777216 pkg syscall (netbsd-386), const O_RSYNC = 131072 pkg syscall (netbsd-386), const O_SHLOCK = 16 pkg syscall (netbsd-386), const O_SYNC = 128 pkg syscall (netbsd-386), const O_TRUNC = 1024 pkg syscall (netbsd-386), const PARENB = 4096 pkg syscall (netbsd-386), const PARMRK = 8 pkg syscall (netbsd-386), const PARODD = 8192 pkg syscall (netbsd-386), const PENDIN = 536870912 pkg syscall (netbsd-386), const PRI_IOFLUSH = 124 pkg syscall (netbsd-386), const PTRACE_CONT = 7 pkg syscall (netbsd-386), const PTRACE_KILL = 8 pkg syscall (netbsd-386), const PTRACE_TRACEME = 0 pkg syscall (netbsd-386), const RLIMIT_AS = 10 pkg syscall (netbsd-386), const RLIMIT_CORE = 4 pkg syscall (netbsd-386), const RLIMIT_CPU = 0 pkg syscall (netbsd-386), const RLIMIT_DATA = 2 pkg syscall (netbsd-386), const RLIMIT_FSIZE = 1 pkg syscall (netbsd-386), const RLIMIT_NOFILE = 8 pkg syscall (netbsd-386), const RLIMIT_STACK = 3 pkg syscall (netbsd-386), const RLIM_INFINITY = 9223372036854775807 pkg syscall (netbsd-386), const RTAX_AUTHOR = 6 pkg syscall (netbsd-386), const RTAX_BRD = 7 pkg syscall (netbsd-386), const RTAX_DST = 0 pkg syscall (netbsd-386), const RTAX_GATEWAY = 1 pkg syscall (netbsd-386), const RTAX_GENMASK = 3 pkg syscall (netbsd-386), const RTAX_IFA = 5 pkg syscall (netbsd-386), const RTAX_IFP = 4 pkg syscall (netbsd-386), const RTAX_MAX = 9 pkg syscall (netbsd-386), const RTAX_NETMASK = 2 pkg syscall (netbsd-386), const RTAX_TAG = 8 pkg syscall (netbsd-386), const RTA_AUTHOR = 64 pkg syscall (netbsd-386), const RTA_BRD = 128 pkg syscall (netbsd-386), const RTA_DST = 1 pkg syscall (netbsd-386), const RTA_GATEWAY = 2 pkg syscall (netbsd-386), const RTA_GENMASK = 8 pkg syscall (netbsd-386), const RTA_IFA = 32 pkg syscall (netbsd-386), const RTA_IFP = 16 pkg syscall (netbsd-386), const RTA_NETMASK = 4 pkg syscall (netbsd-386), const RTA_TAG = 256 pkg syscall (netbsd-386), const RTF_ANNOUNCE = 131072 pkg syscall (netbsd-386), const RTF_BLACKHOLE = 4096 pkg syscall (netbsd-386), const RTF_CLONED = 8192 pkg syscall (netbsd-386), const RTF_CLONING = 256 pkg syscall (netbsd-386), const RTF_DONE = 64 pkg syscall (netbsd-386), const RTF_DYNAMIC = 16 pkg syscall (netbsd-386), const RTF_GATEWAY = 2 pkg syscall (netbsd-386), const RTF_HOST = 4 pkg syscall (netbsd-386), const RTF_LLINFO = 1024 pkg syscall (netbsd-386), const RTF_MASK = 128 pkg syscall (netbsd-386), const RTF_MODIFIED = 32 pkg syscall (netbsd-386), const RTF_PROTO1 = 32768 pkg syscall (netbsd-386), const RTF_PROTO2 = 16384 pkg syscall (netbsd-386), const RTF_REJECT = 8 pkg syscall (netbsd-386), const RTF_SRC = 65536 pkg syscall (netbsd-386), const RTF_STATIC = 2048 pkg syscall (netbsd-386), const RTF_UP = 1 pkg syscall (netbsd-386), const RTF_XRESOLVE = 512 pkg syscall (netbsd-386), const RTM_ADD = 1 pkg syscall (netbsd-386), const RTM_CHANGE = 3 pkg syscall (netbsd-386), const RTM_CHGADDR = 21 pkg syscall (netbsd-386), const RTM_DELADDR = 13 pkg syscall (netbsd-386), const RTM_DELETE = 2 pkg syscall (netbsd-386), const RTM_GET = 4 pkg syscall (netbsd-386), const RTM_IEEE80211 = 17 pkg syscall (netbsd-386), const RTM_IFANNOUNCE = 16 pkg syscall (netbsd-386), const RTM_IFINFO = 20 pkg syscall (netbsd-386), const RTM_LLINFO_UPD = 19 pkg syscall (netbsd-386), const RTM_LOCK = 8 pkg syscall (netbsd-386), const RTM_LOSING = 5 pkg syscall (netbsd-386), const RTM_MISS = 7 pkg syscall (netbsd-386), const RTM_NEWADDR = 12 pkg syscall (netbsd-386), const RTM_OIFINFO = 15 pkg syscall (netbsd-386), const RTM_OLDADD = 9 pkg syscall (netbsd-386), const RTM_OLDDEL = 10 pkg syscall (netbsd-386), const RTM_OOIFINFO = 14 pkg syscall (netbsd-386), const RTM_REDIRECT = 6 pkg syscall (netbsd-386), const RTM_RESOLVE = 11 pkg syscall (netbsd-386), const RTM_RTTUNIT = 1000000 pkg syscall (netbsd-386), const RTM_SETGATE = 18 pkg syscall (netbsd-386), const RTM_VERSION = 4 pkg syscall (netbsd-386), const RTV_EXPIRE = 4 pkg syscall (netbsd-386), const RTV_HOPCOUNT = 2 pkg syscall (netbsd-386), const RTV_MTU = 1 pkg syscall (netbsd-386), const RTV_RPIPE = 8 pkg syscall (netbsd-386), const RTV_RTT = 64 pkg syscall (netbsd-386), const RTV_RTTVAR = 128 pkg syscall (netbsd-386), const RTV_SPIPE = 16 pkg syscall (netbsd-386), const RTV_SSTHRESH = 32 pkg syscall (netbsd-386), const RUSAGE_CHILDREN = -1 pkg syscall (netbsd-386), const RUSAGE_SELF = 0 pkg syscall (netbsd-386), const SCM_CREDS = 4 pkg syscall (netbsd-386), const SCM_RIGHTS = 1 pkg syscall (netbsd-386), const SCM_TIMESTAMP = 8 pkg syscall (netbsd-386), const SIGBUS = 10 pkg syscall (netbsd-386), const SIGCHLD = 20 pkg syscall (netbsd-386), const SIGCONT = 19 pkg syscall (netbsd-386), const SIGEMT = 7 pkg syscall (netbsd-386), const SIGINFO = 29 pkg syscall (netbsd-386), const SIGIO = 23 pkg syscall (netbsd-386), const SIGIOT = 6 pkg syscall (netbsd-386), const SIGPROF = 27 pkg syscall (netbsd-386), const SIGPWR = 32 pkg syscall (netbsd-386), const SIGSTOP = 17 pkg syscall (netbsd-386), const SIGSYS = 12 pkg syscall (netbsd-386), const SIGTSTP = 18 pkg syscall (netbsd-386), const SIGTTIN = 21 pkg syscall (netbsd-386), const SIGTTOU = 22 pkg syscall (netbsd-386), const SIGURG = 16 pkg syscall (netbsd-386), const SIGUSR1 = 30 pkg syscall (netbsd-386), const SIGUSR2 = 31 pkg syscall (netbsd-386), const SIGVTALRM = 26 pkg syscall (netbsd-386), const SIGWINCH = 28 pkg syscall (netbsd-386), const SIGXCPU = 24 pkg syscall (netbsd-386), const SIGXFSZ = 25 pkg syscall (netbsd-386), const SIOCADDMULTI = 2156947761 pkg syscall (netbsd-386), const SIOCADDRT = 2150658570 pkg syscall (netbsd-386), const SIOCAIFADDR = 2151704858 pkg syscall (netbsd-386), const SIOCALIFADDR = 2165860636 pkg syscall (netbsd-386), const SIOCATMARK = 1074033415 pkg syscall (netbsd-386), const SIOCDELMULTI = 2156947762 pkg syscall (netbsd-386), const SIOCDELRT = 2150658571 pkg syscall (netbsd-386), const SIOCDIFADDR = 2156947737 pkg syscall (netbsd-386), const SIOCDIFPHYADDR = 2156947785 pkg syscall (netbsd-386), const SIOCDLIFADDR = 2165860638 pkg syscall (netbsd-386), const SIOCGDRVSPEC = 3223087483 pkg syscall (netbsd-386), const SIOCGETPFSYNC = 3230689784 pkg syscall (netbsd-386), const SIOCGETSGCNT = 3222566196 pkg syscall (netbsd-386), const SIOCGETVIFCNT = 3222566195 pkg syscall (netbsd-386), const SIOCGHIWAT = 1074033409 pkg syscall (netbsd-386), const SIOCGIFADDR = 3230689569 pkg syscall (netbsd-386), const SIOCGIFADDRPREF = 3230951712 pkg syscall (netbsd-386), const SIOCGIFALIAS = 3225446683 pkg syscall (netbsd-386), const SIOCGIFBRDADDR = 3230689571 pkg syscall (netbsd-386), const SIOCGIFCAP = 3223349622 pkg syscall (netbsd-386), const SIOCGIFCONF = 3221776678 pkg syscall (netbsd-386), const SIOCGIFDATA = 3230951813 pkg syscall (netbsd-386), const SIOCGIFDLT = 3230689655 pkg syscall (netbsd-386), const SIOCGIFDSTADDR = 3230689570 pkg syscall (netbsd-386), const SIOCGIFFLAGS = 3230689553 pkg syscall (netbsd-386), const SIOCGIFGENERIC = 3230689594 pkg syscall (netbsd-386), const SIOCGIFMEDIA = 3223873846 pkg syscall (netbsd-386), const SIOCGIFMETRIC = 3230689559 pkg syscall (netbsd-386), const SIOCGIFMTU = 3230689662 pkg syscall (netbsd-386), const SIOCGIFNETMASK = 3230689573 pkg syscall (netbsd-386), const SIOCGIFPDSTADDR = 3230689608 pkg syscall (netbsd-386), const SIOCGIFPSRCADDR = 3230689607 pkg syscall (netbsd-386), const SIOCGLIFADDR = 3239602461 pkg syscall (netbsd-386), const SIOCGLIFPHYADDR = 3239602507 pkg syscall (netbsd-386), const SIOCGLINKSTR = 3223087495 pkg syscall (netbsd-386), const SIOCGLOWAT = 1074033411 pkg syscall (netbsd-386), const SIOCGPGRP = 1074033417 pkg syscall (netbsd-386), const SIOCGVH = 3230689667 pkg syscall (netbsd-386), const SIOCIFCREATE = 2156947834 pkg syscall (netbsd-386), const SIOCIFDESTROY = 2156947833 pkg syscall (netbsd-386), const SIOCIFGCLONERS = 3222038904 pkg syscall (netbsd-386), const SIOCINITIFADDR = 3225708932 pkg syscall (netbsd-386), const SIOCSDRVSPEC = 2149345659 pkg syscall (netbsd-386), const SIOCSETPFSYNC = 2156947959 pkg syscall (netbsd-386), const SIOCSHIWAT = 2147775232 pkg syscall (netbsd-386), const SIOCSIFADDR = 2156947724 pkg syscall (netbsd-386), const SIOCSIFADDRPREF = 2157209887 pkg syscall (netbsd-386), const SIOCSIFBRDADDR = 2156947731 pkg syscall (netbsd-386), const SIOCSIFCAP = 2149607797 pkg syscall (netbsd-386), const SIOCSIFDSTADDR = 2156947726 pkg syscall (netbsd-386), const SIOCSIFFLAGS = 2156947728 pkg syscall (netbsd-386), const SIOCSIFGENERIC = 2156947769 pkg syscall (netbsd-386), const SIOCSIFMEDIA = 3230689589 pkg syscall (netbsd-386), const SIOCSIFMETRIC = 2156947736 pkg syscall (netbsd-386), const SIOCSIFMTU = 2156947839 pkg syscall (netbsd-386), const SIOCSIFNETMASK = 2156947734 pkg syscall (netbsd-386), const SIOCSIFPHYADDR = 2151704902 pkg syscall (netbsd-386), const SIOCSLIFPHYADDR = 2165860682 pkg syscall (netbsd-386), const SIOCSLINKSTR = 2149345672 pkg syscall (netbsd-386), const SIOCSLOWAT = 2147775234 pkg syscall (netbsd-386), const SIOCSPGRP = 2147775240 pkg syscall (netbsd-386), const SIOCSVH = 3230689666 pkg syscall (netbsd-386), const SIOCZIFDATA = 3230951814 pkg syscall (netbsd-386), const SOCK_CLOEXEC = 268435456 pkg syscall (netbsd-386), const SOCK_FLAGS_MASK = 4026531840 pkg syscall (netbsd-386), const SOCK_NONBLOCK = 536870912 pkg syscall (netbsd-386), const SOCK_NOSIGPIPE = 1073741824 pkg syscall (netbsd-386), const SOCK_RDM = 4 pkg syscall (netbsd-386), const SOL_SOCKET = 65535 pkg syscall (netbsd-386), const SOMAXCONN = 128 pkg syscall (netbsd-386), const SO_ACCEPTCONN = 2 pkg syscall (netbsd-386), const SO_ACCEPTFILTER = 4096 pkg syscall (netbsd-386), const SO_BROADCAST = 32 pkg syscall (netbsd-386), const SO_DEBUG = 1 pkg syscall (netbsd-386), const SO_DONTROUTE = 16 pkg syscall (netbsd-386), const SO_ERROR = 4103 pkg syscall (netbsd-386), const SO_KEEPALIVE = 8 pkg syscall (netbsd-386), const SO_LINGER = 128 pkg syscall (netbsd-386), const SO_NOHEADER = 4106 pkg syscall (netbsd-386), const SO_NOSIGPIPE = 2048 pkg syscall (netbsd-386), const SO_OOBINLINE = 256 pkg syscall (netbsd-386), const SO_OVERFLOWED = 4105 pkg syscall (netbsd-386), const SO_RCVBUF = 4098 pkg syscall (netbsd-386), const SO_RCVLOWAT = 4100 pkg syscall (netbsd-386), const SO_RCVTIMEO = 4108 pkg syscall (netbsd-386), const SO_REUSEADDR = 4 pkg syscall (netbsd-386), const SO_REUSEPORT = 512 pkg syscall (netbsd-386), const SO_SNDBUF = 4097 pkg syscall (netbsd-386), const SO_SNDLOWAT = 4099 pkg syscall (netbsd-386), const SO_SNDTIMEO = 4107 pkg syscall (netbsd-386), const SO_TIMESTAMP = 8192 pkg syscall (netbsd-386), const SO_TYPE = 4104 pkg syscall (netbsd-386), const SO_USELOOPBACK = 64 pkg syscall (netbsd-386), const SYSCTL_VERSION = 16777216 pkg syscall (netbsd-386), const SYSCTL_VERS_0 = 0 pkg syscall (netbsd-386), const SYSCTL_VERS_1 = 16777216 pkg syscall (netbsd-386), const SYSCTL_VERS_MASK = 4278190080 pkg syscall (netbsd-386), const SYS_ACCEPT = 30 pkg syscall (netbsd-386), const SYS_ACCESS = 33 pkg syscall (netbsd-386), const SYS_ACCT = 51 pkg syscall (netbsd-386), const SYS_ADJTIME = 421 pkg syscall (netbsd-386), const SYS_BIND = 104 pkg syscall (netbsd-386), const SYS_BREAK = 17 pkg syscall (netbsd-386), const SYS_CHDIR = 12 pkg syscall (netbsd-386), const SYS_CHFLAGS = 34 pkg syscall (netbsd-386), const SYS_CHMOD = 15 pkg syscall (netbsd-386), const SYS_CHOWN = 16 pkg syscall (netbsd-386), const SYS_CHROOT = 61 pkg syscall (netbsd-386), const SYS_CLOCK_GETRES = 429 pkg syscall (netbsd-386), const SYS_CLOCK_GETTIME = 427 pkg syscall (netbsd-386), const SYS_CLOCK_SETTIME = 428 pkg syscall (netbsd-386), const SYS_CLOSE = 6 pkg syscall (netbsd-386), const SYS_CONNECT = 98 pkg syscall (netbsd-386), const SYS_DUP = 41 pkg syscall (netbsd-386), const SYS_DUP2 = 90 pkg syscall (netbsd-386), const SYS_DUP3 = 454 pkg syscall (netbsd-386), const SYS_EXECVE = 59 pkg syscall (netbsd-386), const SYS_EXIT = 1 pkg syscall (netbsd-386), const SYS_EXTATTRCTL = 360 pkg syscall (netbsd-386), const SYS_EXTATTR_DELETE_FD = 366 pkg syscall (netbsd-386), const SYS_EXTATTR_DELETE_FILE = 363 pkg syscall (netbsd-386), const SYS_EXTATTR_DELETE_LINK = 369 pkg syscall (netbsd-386), const SYS_EXTATTR_GET_FD = 365 pkg syscall (netbsd-386), const SYS_EXTATTR_GET_FILE = 362 pkg syscall (netbsd-386), const SYS_EXTATTR_GET_LINK = 368 pkg syscall (netbsd-386), const SYS_EXTATTR_LIST_FD = 370 pkg syscall (netbsd-386), const SYS_EXTATTR_LIST_FILE = 371 pkg syscall (netbsd-386), const SYS_EXTATTR_LIST_LINK = 372 pkg syscall (netbsd-386), const SYS_EXTATTR_SET_FD = 364 pkg syscall (netbsd-386), const SYS_EXTATTR_SET_FILE = 361 pkg syscall (netbsd-386), const SYS_EXTATTR_SET_LINK = 367 pkg syscall (netbsd-386), const SYS_FACCESSAT = 462 pkg syscall (netbsd-386), const SYS_FCHDIR = 13 pkg syscall (netbsd-386), const SYS_FCHFLAGS = 35 pkg syscall (netbsd-386), const SYS_FCHMOD = 124 pkg syscall (netbsd-386), const SYS_FCHMODAT = 463 pkg syscall (netbsd-386), const SYS_FCHOWN = 123 pkg syscall (netbsd-386), const SYS_FCHOWNAT = 464 pkg syscall (netbsd-386), const SYS_FCHROOT = 297 pkg syscall (netbsd-386), const SYS_FCNTL = 92 pkg syscall (netbsd-386), const SYS_FDATASYNC = 241 pkg syscall (netbsd-386), const SYS_FEXECVE = 465 pkg syscall (netbsd-386), const SYS_FGETXATTR = 380 pkg syscall (netbsd-386), const SYS_FHSTAT = 451 pkg syscall (netbsd-386), const SYS_FKTRACE = 288 pkg syscall (netbsd-386), const SYS_FLISTXATTR = 383 pkg syscall (netbsd-386), const SYS_FLOCK = 131 pkg syscall (netbsd-386), const SYS_FORK = 2 pkg syscall (netbsd-386), const SYS_FPATHCONF = 192 pkg syscall (netbsd-386), const SYS_FREMOVEXATTR = 386 pkg syscall (netbsd-386), const SYS_FSETXATTR = 377 pkg syscall (netbsd-386), const SYS_FSTAT = 440 pkg syscall (netbsd-386), const SYS_FSTATAT = 466 pkg syscall (netbsd-386), const SYS_FSTATVFS1 = 358 pkg syscall (netbsd-386), const SYS_FSYNC = 95 pkg syscall (netbsd-386), const SYS_FSYNC_RANGE = 354 pkg syscall (netbsd-386), const SYS_FTRUNCATE = 201 pkg syscall (netbsd-386), const SYS_FUTIMENS = 472 pkg syscall (netbsd-386), const SYS_FUTIMES = 423 pkg syscall (netbsd-386), const SYS_GETCONTEXT = 307 pkg syscall (netbsd-386), const SYS_GETDENTS = 390 pkg syscall (netbsd-386), const SYS_GETEGID = 43 pkg syscall (netbsd-386), const SYS_GETEUID = 25 pkg syscall (netbsd-386), const SYS_GETFH = 395 pkg syscall (netbsd-386), const SYS_GETGID = 47 pkg syscall (netbsd-386), const SYS_GETGROUPS = 79 pkg syscall (netbsd-386), const SYS_GETITIMER = 426 pkg syscall (netbsd-386), const SYS_GETPEERNAME = 31 pkg syscall (netbsd-386), const SYS_GETPGID = 207 pkg syscall (netbsd-386), const SYS_GETPGRP = 81 pkg syscall (netbsd-386), const SYS_GETPID = 20 pkg syscall (netbsd-386), const SYS_GETPPID = 39 pkg syscall (netbsd-386), const SYS_GETPRIORITY = 100 pkg syscall (netbsd-386), const SYS_GETRLIMIT = 194 pkg syscall (netbsd-386), const SYS_GETRUSAGE = 445 pkg syscall (netbsd-386), const SYS_GETSID = 286 pkg syscall (netbsd-386), const SYS_GETSOCKNAME = 32 pkg syscall (netbsd-386), const SYS_GETSOCKOPT = 118 pkg syscall (netbsd-386), const SYS_GETTIMEOFDAY = 418 pkg syscall (netbsd-386), const SYS_GETUID = 24 pkg syscall (netbsd-386), const SYS_GETVFSSTAT = 356 pkg syscall (netbsd-386), const SYS_GETXATTR = 378 pkg syscall (netbsd-386), const SYS_IOCTL = 54 pkg syscall (netbsd-386), const SYS_ISSETUGID = 305 pkg syscall (netbsd-386), const SYS_KEVENT = 435 pkg syscall (netbsd-386), const SYS_KILL = 37 pkg syscall (netbsd-386), const SYS_KQUEUE = 344 pkg syscall (netbsd-386), const SYS_KQUEUE1 = 455 pkg syscall (netbsd-386), const SYS_KTRACE = 45 pkg syscall (netbsd-386), const SYS_LCHFLAGS = 304 pkg syscall (netbsd-386), const SYS_LCHMOD = 274 pkg syscall (netbsd-386), const SYS_LCHOWN = 275 pkg syscall (netbsd-386), const SYS_LGETXATTR = 379 pkg syscall (netbsd-386), const SYS_LINK = 9 pkg syscall (netbsd-386), const SYS_LINKAT = 457 pkg syscall (netbsd-386), const SYS_LISTEN = 106 pkg syscall (netbsd-386), const SYS_LISTXATTR = 381 pkg syscall (netbsd-386), const SYS_LLISTXATTR = 382 pkg syscall (netbsd-386), const SYS_LREMOVEXATTR = 385 pkg syscall (netbsd-386), const SYS_LSEEK = 199 pkg syscall (netbsd-386), const SYS_LSETXATTR = 376 pkg syscall (netbsd-386), const SYS_LSTAT = 441 pkg syscall (netbsd-386), const SYS_LUTIMES = 424 pkg syscall (netbsd-386), const SYS_MADVISE = 75 pkg syscall (netbsd-386), const SYS_MINCORE = 78 pkg syscall (netbsd-386), const SYS_MINHERIT = 273 pkg syscall (netbsd-386), const SYS_MKDIR = 136 pkg syscall (netbsd-386), const SYS_MKDIRAT = 461 pkg syscall (netbsd-386), const SYS_MKFIFO = 132 pkg syscall (netbsd-386), const SYS_MKFIFOAT = 459 pkg syscall (netbsd-386), const SYS_MKNOD = 450 pkg syscall (netbsd-386), const SYS_MKNODAT = 460 pkg syscall (netbsd-386), const SYS_MLOCK = 203 pkg syscall (netbsd-386), const SYS_MLOCKALL = 242 pkg syscall (netbsd-386), const SYS_MMAP = 197 pkg syscall (netbsd-386), const SYS_MODCTL = 246 pkg syscall (netbsd-386), const SYS_MOUNT = 410 pkg syscall (netbsd-386), const SYS_MPROTECT = 74 pkg syscall (netbsd-386), const SYS_MREMAP = 411 pkg syscall (netbsd-386), const SYS_MSGCTL = 444 pkg syscall (netbsd-386), const SYS_MSGGET = 225 pkg syscall (netbsd-386), const SYS_MSGRCV = 227 pkg syscall (netbsd-386), const SYS_MSGSND = 226 pkg syscall (netbsd-386), const SYS_MUNLOCK = 204 pkg syscall (netbsd-386), const SYS_MUNLOCKALL = 243 pkg syscall (netbsd-386), const SYS_MUNMAP = 73 pkg syscall (netbsd-386), const SYS_NANOSLEEP = 430 pkg syscall (netbsd-386), const SYS_NTP_ADJTIME = 176 pkg syscall (netbsd-386), const SYS_NTP_GETTIME = 448 pkg syscall (netbsd-386), const SYS_OPEN = 5 pkg syscall (netbsd-386), const SYS_OPENAT = 468 pkg syscall (netbsd-386), const SYS_PACCEPT = 456 pkg syscall (netbsd-386), const SYS_PATHCONF = 191 pkg syscall (netbsd-386), const SYS_PIPE = 42 pkg syscall (netbsd-386), const SYS_PIPE2 = 453 pkg syscall (netbsd-386), const SYS_PMC_CONTROL = 342 pkg syscall (netbsd-386), const SYS_PMC_GET_INFO = 341 pkg syscall (netbsd-386), const SYS_POLL = 209 pkg syscall (netbsd-386), const SYS_POLLTS = 437 pkg syscall (netbsd-386), const SYS_POSIX_FADVISE = 416 pkg syscall (netbsd-386), const SYS_POSIX_SPAWN = 474 pkg syscall (netbsd-386), const SYS_PREAD = 173 pkg syscall (netbsd-386), const SYS_PREADV = 289 pkg syscall (netbsd-386), const SYS_PROFIL = 44 pkg syscall (netbsd-386), const SYS_PSELECT = 436 pkg syscall (netbsd-386), const SYS_PSET_ASSIGN = 414 pkg syscall (netbsd-386), const SYS_PSET_CREATE = 412 pkg syscall (netbsd-386), const SYS_PSET_DESTROY = 413 pkg syscall (netbsd-386), const SYS_PTRACE = 26 pkg syscall (netbsd-386), const SYS_PWRITE = 174 pkg syscall (netbsd-386), const SYS_PWRITEV = 290 pkg syscall (netbsd-386), const SYS_RASCTL = 343 pkg syscall (netbsd-386), const SYS_READ = 3 pkg syscall (netbsd-386), const SYS_READLINK = 58 pkg syscall (netbsd-386), const SYS_READLINKAT = 469 pkg syscall (netbsd-386), const SYS_READV = 120 pkg syscall (netbsd-386), const SYS_REBOOT = 208 pkg syscall (netbsd-386), const SYS_RECVFROM = 29 pkg syscall (netbsd-386), const SYS_RECVMMSG = 475 pkg syscall (netbsd-386), const SYS_RECVMSG = 27 pkg syscall (netbsd-386), const SYS_REMOVEXATTR = 384 pkg syscall (netbsd-386), const SYS_RENAME = 128 pkg syscall (netbsd-386), const SYS_RENAMEAT = 458 pkg syscall (netbsd-386), const SYS_REVOKE = 56 pkg syscall (netbsd-386), const SYS_RMDIR = 137 pkg syscall (netbsd-386), const SYS_SBRK = 69 pkg syscall (netbsd-386), const SYS_SCHED_YIELD = 350 pkg syscall (netbsd-386), const SYS_SELECT = 417 pkg syscall (netbsd-386), const SYS_SEMCONFIG = 223 pkg syscall (netbsd-386), const SYS_SEMGET = 221 pkg syscall (netbsd-386), const SYS_SEMOP = 222 pkg syscall (netbsd-386), const SYS_SENDMMSG = 476 pkg syscall (netbsd-386), const SYS_SENDMSG = 28 pkg syscall (netbsd-386), const SYS_SENDTO = 133 pkg syscall (netbsd-386), const SYS_SETCONTEXT = 308 pkg syscall (netbsd-386), const SYS_SETEGID = 182 pkg syscall (netbsd-386), const SYS_SETEUID = 183 pkg syscall (netbsd-386), const SYS_SETGID = 181 pkg syscall (netbsd-386), const SYS_SETGROUPS = 80 pkg syscall (netbsd-386), const SYS_SETITIMER = 425 pkg syscall (netbsd-386), const SYS_SETPGID = 82 pkg syscall (netbsd-386), const SYS_SETPRIORITY = 96 pkg syscall (netbsd-386), const SYS_SETREGID = 127 pkg syscall (netbsd-386), const SYS_SETREUID = 126 pkg syscall (netbsd-386), const SYS_SETRLIMIT = 195 pkg syscall (netbsd-386), const SYS_SETSID = 147 pkg syscall (netbsd-386), const SYS_SETSOCKOPT = 105 pkg syscall (netbsd-386), const SYS_SETTIMEOFDAY = 419 pkg syscall (netbsd-386), const SYS_SETUID = 23 pkg syscall (netbsd-386), const SYS_SETXATTR = 375 pkg syscall (netbsd-386), const SYS_SHMAT = 228 pkg syscall (netbsd-386), const SYS_SHMCTL = 443 pkg syscall (netbsd-386), const SYS_SHMDT = 230 pkg syscall (netbsd-386), const SYS_SHMGET = 231 pkg syscall (netbsd-386), const SYS_SHUTDOWN = 134 pkg syscall (netbsd-386), const SYS_SIGQUEUEINFO = 245 pkg syscall (netbsd-386), const SYS_SOCKET = 394 pkg syscall (netbsd-386), const SYS_SOCKETPAIR = 135 pkg syscall (netbsd-386), const SYS_SSTK = 70 pkg syscall (netbsd-386), const SYS_STAT = 439 pkg syscall (netbsd-386), const SYS_STATVFS1 = 357 pkg syscall (netbsd-386), const SYS_SWAPCTL = 271 pkg syscall (netbsd-386), const SYS_SYMLINK = 57 pkg syscall (netbsd-386), const SYS_SYMLINKAT = 470 pkg syscall (netbsd-386), const SYS_SYNC = 36 pkg syscall (netbsd-386), const SYS_SYSARCH = 165 pkg syscall (netbsd-386), const SYS_TIMER_CREATE = 235 pkg syscall (netbsd-386), const SYS_TIMER_DELETE = 236 pkg syscall (netbsd-386), const SYS_TIMER_GETOVERRUN = 239 pkg syscall (netbsd-386), const SYS_TIMER_GETTIME = 447 pkg syscall (netbsd-386), const SYS_TIMER_SETTIME = 446 pkg syscall (netbsd-386), const SYS_TRUNCATE = 200 pkg syscall (netbsd-386), const SYS_UMASK = 60 pkg syscall (netbsd-386), const SYS_UNDELETE = 205 pkg syscall (netbsd-386), const SYS_UNLINK = 10 pkg syscall (netbsd-386), const SYS_UNLINKAT = 471 pkg syscall (netbsd-386), const SYS_UNMOUNT = 22 pkg syscall (netbsd-386), const SYS_UTIMENSAT = 467 pkg syscall (netbsd-386), const SYS_UTIMES = 420 pkg syscall (netbsd-386), const SYS_UTRACE = 306 pkg syscall (netbsd-386), const SYS_UUIDGEN = 355 pkg syscall (netbsd-386), const SYS_VADVISE = 72 pkg syscall (netbsd-386), const SYS_VFORK = 66 pkg syscall (netbsd-386), const SYS_WAIT4 = 449 pkg syscall (netbsd-386), const SYS_WRITE = 4 pkg syscall (netbsd-386), const SYS_WRITEV = 121 pkg syscall (netbsd-386), const SYS__LWP_CONTINUE = 314 pkg syscall (netbsd-386), const SYS__LWP_CREATE = 309 pkg syscall (netbsd-386), const SYS__LWP_CTL = 325 pkg syscall (netbsd-386), const SYS__LWP_DETACH = 319 pkg syscall (netbsd-386), const SYS__LWP_EXIT = 310 pkg syscall (netbsd-386), const SYS__LWP_GETNAME = 324 pkg syscall (netbsd-386), const SYS__LWP_GETPRIVATE = 316 pkg syscall (netbsd-386), const SYS__LWP_KILL = 318 pkg syscall (netbsd-386), const SYS__LWP_PARK = 434 pkg syscall (netbsd-386), const SYS__LWP_SELF = 311 pkg syscall (netbsd-386), const SYS__LWP_SETNAME = 323 pkg syscall (netbsd-386), const SYS__LWP_SETPRIVATE = 317 pkg syscall (netbsd-386), const SYS__LWP_SUSPEND = 313 pkg syscall (netbsd-386), const SYS__LWP_UNPARK = 321 pkg syscall (netbsd-386), const SYS__LWP_UNPARK_ALL = 322 pkg syscall (netbsd-386), const SYS__LWP_WAIT = 312 pkg syscall (netbsd-386), const SYS__LWP_WAKEUP = 315 pkg syscall (netbsd-386), const SYS__PSET_BIND = 415 pkg syscall (netbsd-386), const SYS__SCHED_GETAFFINITY = 349 pkg syscall (netbsd-386), const SYS__SCHED_GETPARAM = 347 pkg syscall (netbsd-386), const SYS__SCHED_SETAFFINITY = 348 pkg syscall (netbsd-386), const SYS__SCHED_SETPARAM = 346 pkg syscall (netbsd-386), const SYS___CLONE = 287 pkg syscall (netbsd-386), const SYS___GETCWD = 296 pkg syscall (netbsd-386), const SYS___GETLOGIN = 49 pkg syscall (netbsd-386), const SYS___POSIX_CHOWN = 283 pkg syscall (netbsd-386), const SYS___POSIX_FCHOWN = 284 pkg syscall (netbsd-386), const SYS___POSIX_LCHOWN = 285 pkg syscall (netbsd-386), const SYS___POSIX_RENAME = 270 pkg syscall (netbsd-386), const SYS___QUOTACTL = 473 pkg syscall (netbsd-386), const SYS___SEMCTL = 442 pkg syscall (netbsd-386), const SYS___SETLOGIN = 50 pkg syscall (netbsd-386), const SYS___SIGACTION_SIGTRAMP = 340 pkg syscall (netbsd-386), const SYS___SIGTIMEDWAIT = 431 pkg syscall (netbsd-386), const SYS___SYSCTL = 202 pkg syscall (netbsd-386), const S_ARCH1 = 65536 pkg syscall (netbsd-386), const S_ARCH2 = 131072 pkg syscall (netbsd-386), const S_BLKSIZE = 512 pkg syscall (netbsd-386), const S_IEXEC = 64 pkg syscall (netbsd-386), const S_IFMT = 61440 pkg syscall (netbsd-386), const S_IFWHT = 57344 pkg syscall (netbsd-386), const S_IREAD = 256 pkg syscall (netbsd-386), const S_IRGRP = 32 pkg syscall (netbsd-386), const S_IROTH = 4 pkg syscall (netbsd-386), const S_IRWXG = 56 pkg syscall (netbsd-386), const S_IRWXO = 7 pkg syscall (netbsd-386), const S_IRWXU = 448 pkg syscall (netbsd-386), const S_ISTXT = 512 pkg syscall (netbsd-386), const S_IWGRP = 16 pkg syscall (netbsd-386), const S_IWOTH = 2 pkg syscall (netbsd-386), const S_IWRITE = 128 pkg syscall (netbsd-386), const S_IXGRP = 8 pkg syscall (netbsd-386), const S_IXOTH = 1 pkg syscall (netbsd-386), const S_LOGIN_SET = 1 pkg syscall (netbsd-386), const SizeofBpfHdr = 20 pkg syscall (netbsd-386), const SizeofBpfInsn = 8 pkg syscall (netbsd-386), const SizeofBpfProgram = 8 pkg syscall (netbsd-386), const SizeofBpfStat = 128 pkg syscall (netbsd-386), const SizeofBpfVersion = 4 pkg syscall (netbsd-386), const SizeofCmsghdr = 12 pkg syscall (netbsd-386), const SizeofIPMreq = 8 pkg syscall (netbsd-386), const SizeofIPv6Mreq = 20 pkg syscall (netbsd-386), const SizeofIfAnnounceMsghdr = 24 pkg syscall (netbsd-386), const SizeofIfData = 132 pkg syscall (netbsd-386), const SizeofIfMsghdr = 152 pkg syscall (netbsd-386), const SizeofIfaMsghdr = 24 pkg syscall (netbsd-386), const SizeofInet6Pktinfo = 20 pkg syscall (netbsd-386), const SizeofLinger = 8 pkg syscall (netbsd-386), const SizeofMsghdr = 28 pkg syscall (netbsd-386), const SizeofRtMetrics = 80 pkg syscall (netbsd-386), const SizeofRtMsghdr = 120 pkg syscall (netbsd-386), const SizeofSockaddrAny = 108 pkg syscall (netbsd-386), const SizeofSockaddrDatalink = 20 pkg syscall (netbsd-386), const SizeofSockaddrInet4 = 16 pkg syscall (netbsd-386), const SizeofSockaddrInet6 = 28 pkg syscall (netbsd-386), const SizeofSockaddrUnix = 106 pkg syscall (netbsd-386), const TCIFLUSH = 1 pkg syscall (netbsd-386), const TCIOFLUSH = 3 pkg syscall (netbsd-386), const TCOFLUSH = 2 pkg syscall (netbsd-386), const TCP_CONGCTL = 32 pkg syscall (netbsd-386), const TCP_KEEPCNT = 6 pkg syscall (netbsd-386), const TCP_KEEPIDLE = 3 pkg syscall (netbsd-386), const TCP_KEEPINIT = 7 pkg syscall (netbsd-386), const TCP_KEEPINTVL = 5 pkg syscall (netbsd-386), const TCP_MAXBURST = 4 pkg syscall (netbsd-386), const TCP_MAXSEG = 2 pkg syscall (netbsd-386), const TCP_MAXWIN = 65535 pkg syscall (netbsd-386), const TCP_MAX_WINSHIFT = 14 pkg syscall (netbsd-386), const TCP_MD5SIG = 16 pkg syscall (netbsd-386), const TCP_MINMSS = 216 pkg syscall (netbsd-386), const TCP_MSS = 536 pkg syscall (netbsd-386), const TCSAFLUSH = 2 pkg syscall (netbsd-386), const TIOCCBRK = 536900730 pkg syscall (netbsd-386), const TIOCCDTR = 536900728 pkg syscall (netbsd-386), const TIOCCONS = 2147775586 pkg syscall (netbsd-386), const TIOCDCDTIMESTAMP = 1074558040 pkg syscall (netbsd-386), const TIOCDRAIN = 536900702 pkg syscall (netbsd-386), const TIOCEXCL = 536900621 pkg syscall (netbsd-386), const TIOCEXT = 2147775584 pkg syscall (netbsd-386), const TIOCFLAG_CDTRCTS = 16 pkg syscall (netbsd-386), const TIOCFLAG_CLOCAL = 2 pkg syscall (netbsd-386), const TIOCFLAG_CRTSCTS = 4 pkg syscall (netbsd-386), const TIOCFLAG_MDMBUF = 8 pkg syscall (netbsd-386), const TIOCFLAG_SOFTCAR = 1 pkg syscall (netbsd-386), const TIOCFLUSH = 2147775504 pkg syscall (netbsd-386), const TIOCGETA = 1076655123 pkg syscall (netbsd-386), const TIOCGETD = 1074033690 pkg syscall (netbsd-386), const TIOCGFLAGS = 1074033757 pkg syscall (netbsd-386), const TIOCGLINED = 1075868738 pkg syscall (netbsd-386), const TIOCGPGRP = 1074033783 pkg syscall (netbsd-386), const TIOCGQSIZE = 1074033793 pkg syscall (netbsd-386), const TIOCGRANTPT = 536900679 pkg syscall (netbsd-386), const TIOCGSID = 1074033763 pkg syscall (netbsd-386), const TIOCGSIZE = 1074295912 pkg syscall (netbsd-386), const TIOCGWINSZ = 1074295912 pkg syscall (netbsd-386), const TIOCMBIC = 2147775595 pkg syscall (netbsd-386), const TIOCMBIS = 2147775596 pkg syscall (netbsd-386), const TIOCMGET = 1074033770 pkg syscall (netbsd-386), const TIOCMSET = 2147775597 pkg syscall (netbsd-386), const TIOCM_CAR = 64 pkg syscall (netbsd-386), const TIOCM_CD = 64 pkg syscall (netbsd-386), const TIOCM_CTS = 32 pkg syscall (netbsd-386), const TIOCM_DSR = 256 pkg syscall (netbsd-386), const TIOCM_DTR = 2 pkg syscall (netbsd-386), const TIOCM_LE = 1 pkg syscall (netbsd-386), const TIOCM_RI = 128 pkg syscall (netbsd-386), const TIOCM_RNG = 128 pkg syscall (netbsd-386), const TIOCM_RTS = 4 pkg syscall (netbsd-386), const TIOCM_SR = 16 pkg syscall (netbsd-386), const TIOCM_ST = 8 pkg syscall (netbsd-386), const TIOCNOTTY = 536900721 pkg syscall (netbsd-386), const TIOCNXCL = 536900622 pkg syscall (netbsd-386), const TIOCOUTQ = 1074033779 pkg syscall (netbsd-386), const TIOCPKT = 2147775600 pkg syscall (netbsd-386), const TIOCPKT_DATA = 0 pkg syscall (netbsd-386), const TIOCPKT_DOSTOP = 32 pkg syscall (netbsd-386), const TIOCPKT_FLUSHREAD = 1 pkg syscall (netbsd-386), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (netbsd-386), const TIOCPKT_IOCTL = 64 pkg syscall (netbsd-386), const TIOCPKT_NOSTOP = 16 pkg syscall (netbsd-386), const TIOCPKT_START = 8 pkg syscall (netbsd-386), const TIOCPKT_STOP = 4 pkg syscall (netbsd-386), const TIOCPTMGET = 1076393030 pkg syscall (netbsd-386), const TIOCPTSNAME = 1076393032 pkg syscall (netbsd-386), const TIOCRCVFRAME = 2147775557 pkg syscall (netbsd-386), const TIOCREMOTE = 2147775593 pkg syscall (netbsd-386), const TIOCSBRK = 536900731 pkg syscall (netbsd-386), const TIOCSCTTY = 536900705 pkg syscall (netbsd-386), const TIOCSDTR = 536900729 pkg syscall (netbsd-386), const TIOCSETA = 2150396948 pkg syscall (netbsd-386), const TIOCSETAF = 2150396950 pkg syscall (netbsd-386), const TIOCSETAW = 2150396949 pkg syscall (netbsd-386), const TIOCSETD = 2147775515 pkg syscall (netbsd-386), const TIOCSFLAGS = 2147775580 pkg syscall (netbsd-386), const TIOCSIG = 536900703 pkg syscall (netbsd-386), const TIOCSLINED = 2149610563 pkg syscall (netbsd-386), const TIOCSPGRP = 2147775606 pkg syscall (netbsd-386), const TIOCSQSIZE = 2147775616 pkg syscall (netbsd-386), const TIOCSSIZE = 2148037735 pkg syscall (netbsd-386), const TIOCSTART = 536900718 pkg syscall (netbsd-386), const TIOCSTAT = 2147775589 pkg syscall (netbsd-386), const TIOCSTI = 2147578994 pkg syscall (netbsd-386), const TIOCSTOP = 536900719 pkg syscall (netbsd-386), const TIOCSWINSZ = 2148037735 pkg syscall (netbsd-386), const TIOCUCNTL = 2147775590 pkg syscall (netbsd-386), const TIOCXMTFRAME = 2147775556 pkg syscall (netbsd-386), const TOSTOP = 4194304 pkg syscall (netbsd-386), const VDISCARD = 15 pkg syscall (netbsd-386), const VDSUSP = 11 pkg syscall (netbsd-386), const VEOF = 0 pkg syscall (netbsd-386), const VEOL = 1 pkg syscall (netbsd-386), const VEOL2 = 2 pkg syscall (netbsd-386), const VERASE = 3 pkg syscall (netbsd-386), const VINTR = 8 pkg syscall (netbsd-386), const VKILL = 5 pkg syscall (netbsd-386), const VLNEXT = 14 pkg syscall (netbsd-386), const VMIN = 16 pkg syscall (netbsd-386), const VQUIT = 9 pkg syscall (netbsd-386), const VREPRINT = 6 pkg syscall (netbsd-386), const VSTART = 12 pkg syscall (netbsd-386), const VSTATUS = 18 pkg syscall (netbsd-386), const VSTOP = 13 pkg syscall (netbsd-386), const VSUSP = 10 pkg syscall (netbsd-386), const VTIME = 17 pkg syscall (netbsd-386), const VWERASE = 4 pkg syscall (netbsd-386), const WALL = 8 pkg syscall (netbsd-386), const WALLSIG = 8 pkg syscall (netbsd-386), const WALTSIG = 4 pkg syscall (netbsd-386), const WCLONE = 4 pkg syscall (netbsd-386), const WCOREFLAG = 128 pkg syscall (netbsd-386), const WNOHANG = 1 pkg syscall (netbsd-386), const WNOWAIT = 65536 pkg syscall (netbsd-386), const WNOZOMBIE = 131072 pkg syscall (netbsd-386), const WOPTSCHECKED = 262144 pkg syscall (netbsd-386), const WSTOPPED = 127 pkg syscall (netbsd-386), const WUNTRACED = 2 pkg syscall (netbsd-386-cgo), const AF_APPLETALK = 16 pkg syscall (netbsd-386-cgo), const AF_ARP = 28 pkg syscall (netbsd-386-cgo), const AF_BLUETOOTH = 31 pkg syscall (netbsd-386-cgo), const AF_CCITT = 10 pkg syscall (netbsd-386-cgo), const AF_CHAOS = 5 pkg syscall (netbsd-386-cgo), const AF_CNT = 21 pkg syscall (netbsd-386-cgo), const AF_COIP = 20 pkg syscall (netbsd-386-cgo), const AF_DATAKIT = 9 pkg syscall (netbsd-386-cgo), const AF_DECnet = 12 pkg syscall (netbsd-386-cgo), const AF_DLI = 13 pkg syscall (netbsd-386-cgo), const AF_E164 = 26 pkg syscall (netbsd-386-cgo), const AF_ECMA = 8 pkg syscall (netbsd-386-cgo), const AF_HYLINK = 15 pkg syscall (netbsd-386-cgo), const AF_IEEE80211 = 32 pkg syscall (netbsd-386-cgo), const AF_IMPLINK = 3 pkg syscall (netbsd-386-cgo), const AF_INET6 = 24 pkg syscall (netbsd-386-cgo), const AF_IPX = 23 pkg syscall (netbsd-386-cgo), const AF_ISDN = 26 pkg syscall (netbsd-386-cgo), const AF_ISO = 7 pkg syscall (netbsd-386-cgo), const AF_LAT = 14 pkg syscall (netbsd-386-cgo), const AF_LINK = 18 pkg syscall (netbsd-386-cgo), const AF_LOCAL = 1 pkg syscall (netbsd-386-cgo), const AF_MAX = 35 pkg syscall (netbsd-386-cgo), const AF_MPLS = 33 pkg syscall (netbsd-386-cgo), const AF_NATM = 27 pkg syscall (netbsd-386-cgo), const AF_NS = 6 pkg syscall (netbsd-386-cgo), const AF_OROUTE = 17 pkg syscall (netbsd-386-cgo), const AF_OSI = 7 pkg syscall (netbsd-386-cgo), const AF_PUP = 4 pkg syscall (netbsd-386-cgo), const AF_ROUTE = 34 pkg syscall (netbsd-386-cgo), const AF_SNA = 11 pkg syscall (netbsd-386-cgo), const ARPHRD_ARCNET = 7 pkg syscall (netbsd-386-cgo), const ARPHRD_ETHER = 1 pkg syscall (netbsd-386-cgo), const ARPHRD_FRELAY = 15 pkg syscall (netbsd-386-cgo), const ARPHRD_IEEE1394 = 24 pkg syscall (netbsd-386-cgo), const ARPHRD_IEEE802 = 6 pkg syscall (netbsd-386-cgo), const ARPHRD_STRIP = 23 pkg syscall (netbsd-386-cgo), const B0 = 0 pkg syscall (netbsd-386-cgo), const B110 = 110 pkg syscall (netbsd-386-cgo), const B115200 = 115200 pkg syscall (netbsd-386-cgo), const B1200 = 1200 pkg syscall (netbsd-386-cgo), const B134 = 134 pkg syscall (netbsd-386-cgo), const B14400 = 14400 pkg syscall (netbsd-386-cgo), const B150 = 150 pkg syscall (netbsd-386-cgo), const B1800 = 1800 pkg syscall (netbsd-386-cgo), const B19200 = 19200 pkg syscall (netbsd-386-cgo), const B200 = 200 pkg syscall (netbsd-386-cgo), const B230400 = 230400 pkg syscall (netbsd-386-cgo), const B2400 = 2400 pkg syscall (netbsd-386-cgo), const B28800 = 28800 pkg syscall (netbsd-386-cgo), const B300 = 300 pkg syscall (netbsd-386-cgo), const B38400 = 38400 pkg syscall (netbsd-386-cgo), const B460800 = 460800 pkg syscall (netbsd-386-cgo), const B4800 = 4800 pkg syscall (netbsd-386-cgo), const B50 = 50 pkg syscall (netbsd-386-cgo), const B57600 = 57600 pkg syscall (netbsd-386-cgo), const B600 = 600 pkg syscall (netbsd-386-cgo), const B7200 = 7200 pkg syscall (netbsd-386-cgo), const B75 = 75 pkg syscall (netbsd-386-cgo), const B76800 = 76800 pkg syscall (netbsd-386-cgo), const B921600 = 921600 pkg syscall (netbsd-386-cgo), const B9600 = 9600 pkg syscall (netbsd-386-cgo), const BIOCFEEDBACK = 2147762813 pkg syscall (netbsd-386-cgo), const BIOCFLUSH = 536887912 pkg syscall (netbsd-386-cgo), const BIOCGBLEN = 1074020966 pkg syscall (netbsd-386-cgo), const BIOCGDLT = 1074020970 pkg syscall (netbsd-386-cgo), const BIOCGDLTLIST = 3221766775 pkg syscall (netbsd-386-cgo), const BIOCGETIF = 1083196011 pkg syscall (netbsd-386-cgo), const BIOCGFEEDBACK = 1074020988 pkg syscall (netbsd-386-cgo), const BIOCGHDRCMPLT = 1074020980 pkg syscall (netbsd-386-cgo), const BIOCGRTIMEOUT = 1074545275 pkg syscall (netbsd-386-cgo), const BIOCGSEESENT = 1074020984 pkg syscall (netbsd-386-cgo), const BIOCGSTATS = 1082147439 pkg syscall (netbsd-386-cgo), const BIOCGSTATSOLD = 1074283119 pkg syscall (netbsd-386-cgo), const BIOCIMMEDIATE = 2147762800 pkg syscall (netbsd-386-cgo), const BIOCPROMISC = 536887913 pkg syscall (netbsd-386-cgo), const BIOCSBLEN = 3221504614 pkg syscall (netbsd-386-cgo), const BIOCSDLT = 2147762806 pkg syscall (netbsd-386-cgo), const BIOCSETF = 2148024935 pkg syscall (netbsd-386-cgo), const BIOCSETIF = 2156937836 pkg syscall (netbsd-386-cgo), const BIOCSFEEDBACK = 2147762813 pkg syscall (netbsd-386-cgo), const BIOCSHDRCMPLT = 2147762805 pkg syscall (netbsd-386-cgo), const BIOCSRTIMEOUT = 2148287098 pkg syscall (netbsd-386-cgo), const BIOCSSEESENT = 2147762809 pkg syscall (netbsd-386-cgo), const BIOCSTCPF = 2148024946 pkg syscall (netbsd-386-cgo), const BIOCSUDPF = 2148024947 pkg syscall (netbsd-386-cgo), const BIOCVERSION = 1074020977 pkg syscall (netbsd-386-cgo), const BPF_A = 16 pkg syscall (netbsd-386-cgo), const BPF_ABS = 32 pkg syscall (netbsd-386-cgo), const BPF_ADD = 0 pkg syscall (netbsd-386-cgo), const BPF_ALIGNMENT = 4 pkg syscall (netbsd-386-cgo), const BPF_ALIGNMENT32 = 4 pkg syscall (netbsd-386-cgo), const BPF_ALU = 4 pkg syscall (netbsd-386-cgo), const BPF_AND = 80 pkg syscall (netbsd-386-cgo), const BPF_B = 16 pkg syscall (netbsd-386-cgo), const BPF_DFLTBUFSIZE = 1048576 pkg syscall (netbsd-386-cgo), const BPF_DIV = 48 pkg syscall (netbsd-386-cgo), const BPF_H = 8 pkg syscall (netbsd-386-cgo), const BPF_IMM = 0 pkg syscall (netbsd-386-cgo), const BPF_IND = 64 pkg syscall (netbsd-386-cgo), const BPF_JA = 0 pkg syscall (netbsd-386-cgo), const BPF_JEQ = 16 pkg syscall (netbsd-386-cgo), const BPF_JGE = 48 pkg syscall (netbsd-386-cgo), const BPF_JGT = 32 pkg syscall (netbsd-386-cgo), const BPF_JMP = 5 pkg syscall (netbsd-386-cgo), const BPF_JSET = 64 pkg syscall (netbsd-386-cgo), const BPF_K = 0 pkg syscall (netbsd-386-cgo), const BPF_LD = 0 pkg syscall (netbsd-386-cgo), const BPF_LDX = 1 pkg syscall (netbsd-386-cgo), const BPF_LEN = 128 pkg syscall (netbsd-386-cgo), const BPF_LSH = 96 pkg syscall (netbsd-386-cgo), const BPF_MAJOR_VERSION = 1 pkg syscall (netbsd-386-cgo), const BPF_MAXBUFSIZE = 16777216 pkg syscall (netbsd-386-cgo), const BPF_MAXINSNS = 512 pkg syscall (netbsd-386-cgo), const BPF_MEM = 96 pkg syscall (netbsd-386-cgo), const BPF_MEMWORDS = 16 pkg syscall (netbsd-386-cgo), const BPF_MINBUFSIZE = 32 pkg syscall (netbsd-386-cgo), const BPF_MINOR_VERSION = 1 pkg syscall (netbsd-386-cgo), const BPF_MISC = 7 pkg syscall (netbsd-386-cgo), const BPF_MSH = 160 pkg syscall (netbsd-386-cgo), const BPF_MUL = 32 pkg syscall (netbsd-386-cgo), const BPF_NEG = 128 pkg syscall (netbsd-386-cgo), const BPF_OR = 64 pkg syscall (netbsd-386-cgo), const BPF_RELEASE = 199606 pkg syscall (netbsd-386-cgo), const BPF_RET = 6 pkg syscall (netbsd-386-cgo), const BPF_RSH = 112 pkg syscall (netbsd-386-cgo), const BPF_ST = 2 pkg syscall (netbsd-386-cgo), const BPF_STX = 3 pkg syscall (netbsd-386-cgo), const BPF_SUB = 16 pkg syscall (netbsd-386-cgo), const BPF_TAX = 0 pkg syscall (netbsd-386-cgo), const BPF_TXA = 128 pkg syscall (netbsd-386-cgo), const BPF_W = 0 pkg syscall (netbsd-386-cgo), const BPF_X = 8 pkg syscall (netbsd-386-cgo), const BRKINT = 2 pkg syscall (netbsd-386-cgo), const CFLUSH = 15 pkg syscall (netbsd-386-cgo), const CLOCAL = 32768 pkg syscall (netbsd-386-cgo), const CREAD = 2048 pkg syscall (netbsd-386-cgo), const CS5 = 0 pkg syscall (netbsd-386-cgo), const CS6 = 256 pkg syscall (netbsd-386-cgo), const CS7 = 512 pkg syscall (netbsd-386-cgo), const CS8 = 768 pkg syscall (netbsd-386-cgo), const CSIZE = 768 pkg syscall (netbsd-386-cgo), const CSTART = 17 pkg syscall (netbsd-386-cgo), const CSTATUS = 20 pkg syscall (netbsd-386-cgo), const CSTOP = 19 pkg syscall (netbsd-386-cgo), const CSTOPB = 1024 pkg syscall (netbsd-386-cgo), const CSUSP = 26 pkg syscall (netbsd-386-cgo), const CTL_MAXNAME = 12 pkg syscall (netbsd-386-cgo), const CTL_NET = 4 pkg syscall (netbsd-386-cgo), const CTL_QUERY = -2 pkg syscall (netbsd-386-cgo), const DIOCBSFLUSH = 536896632 pkg syscall (netbsd-386-cgo), const DLT_A429 = 184 pkg syscall (netbsd-386-cgo), const DLT_A653_ICM = 185 pkg syscall (netbsd-386-cgo), const DLT_AIRONET_HEADER = 120 pkg syscall (netbsd-386-cgo), const DLT_AOS = 222 pkg syscall (netbsd-386-cgo), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (netbsd-386-cgo), const DLT_ARCNET = 7 pkg syscall (netbsd-386-cgo), const DLT_ARCNET_LINUX = 129 pkg syscall (netbsd-386-cgo), const DLT_ATM_CLIP = 19 pkg syscall (netbsd-386-cgo), const DLT_ATM_RFC1483 = 11 pkg syscall (netbsd-386-cgo), const DLT_AURORA = 126 pkg syscall (netbsd-386-cgo), const DLT_AX25 = 3 pkg syscall (netbsd-386-cgo), const DLT_AX25_KISS = 202 pkg syscall (netbsd-386-cgo), const DLT_BACNET_MS_TP = 165 pkg syscall (netbsd-386-cgo), const DLT_BLUETOOTH_HCI_H4 = 187 pkg syscall (netbsd-386-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 pkg syscall (netbsd-386-cgo), const DLT_CAN20B = 190 pkg syscall (netbsd-386-cgo), const DLT_CAN_SOCKETCAN = 227 pkg syscall (netbsd-386-cgo), const DLT_CHAOS = 5 pkg syscall (netbsd-386-cgo), const DLT_CISCO_IOS = 118 pkg syscall (netbsd-386-cgo), const DLT_C_HDLC = 104 pkg syscall (netbsd-386-cgo), const DLT_C_HDLC_WITH_DIR = 205 pkg syscall (netbsd-386-cgo), const DLT_DECT = 221 pkg syscall (netbsd-386-cgo), const DLT_DOCSIS = 143 pkg syscall (netbsd-386-cgo), const DLT_ECONET = 115 pkg syscall (netbsd-386-cgo), const DLT_EN10MB = 1 pkg syscall (netbsd-386-cgo), const DLT_EN3MB = 2 pkg syscall (netbsd-386-cgo), const DLT_ENC = 109 pkg syscall (netbsd-386-cgo), const DLT_ERF = 197 pkg syscall (netbsd-386-cgo), const DLT_ERF_ETH = 175 pkg syscall (netbsd-386-cgo), const DLT_ERF_POS = 176 pkg syscall (netbsd-386-cgo), const DLT_FC_2 = 224 pkg syscall (netbsd-386-cgo), const DLT_FC_2_WITH_FRAME_DELIMS = 225 pkg syscall (netbsd-386-cgo), const DLT_FDDI = 10 pkg syscall (netbsd-386-cgo), const DLT_FLEXRAY = 210 pkg syscall (netbsd-386-cgo), const DLT_FRELAY = 107 pkg syscall (netbsd-386-cgo), const DLT_FRELAY_WITH_DIR = 206 pkg syscall (netbsd-386-cgo), const DLT_GCOM_SERIAL = 173 pkg syscall (netbsd-386-cgo), const DLT_GCOM_T1E1 = 172 pkg syscall (netbsd-386-cgo), const DLT_GPF_F = 171 pkg syscall (netbsd-386-cgo), const DLT_GPF_T = 170 pkg syscall (netbsd-386-cgo), const DLT_GPRS_LLC = 169 pkg syscall (netbsd-386-cgo), const DLT_GSMTAP_ABIS = 218 pkg syscall (netbsd-386-cgo), const DLT_GSMTAP_UM = 217 pkg syscall (netbsd-386-cgo), const DLT_HDLC = 16 pkg syscall (netbsd-386-cgo), const DLT_HHDLC = 121 pkg syscall (netbsd-386-cgo), const DLT_HIPPI = 15 pkg syscall (netbsd-386-cgo), const DLT_IBM_SN = 146 pkg syscall (netbsd-386-cgo), const DLT_IBM_SP = 145 pkg syscall (netbsd-386-cgo), const DLT_IEEE802 = 6 pkg syscall (netbsd-386-cgo), const DLT_IEEE802_11 = 105 pkg syscall (netbsd-386-cgo), const DLT_IEEE802_11_RADIO = 127 pkg syscall (netbsd-386-cgo), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (netbsd-386-cgo), const DLT_IEEE802_15_4 = 195 pkg syscall (netbsd-386-cgo), const DLT_IEEE802_15_4_LINUX = 191 pkg syscall (netbsd-386-cgo), const DLT_IEEE802_15_4_NONASK_PHY = 215 pkg syscall (netbsd-386-cgo), const DLT_IEEE802_16_MAC_CPS = 188 pkg syscall (netbsd-386-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 pkg syscall (netbsd-386-cgo), const DLT_IPMB = 199 pkg syscall (netbsd-386-cgo), const DLT_IPMB_LINUX = 209 pkg syscall (netbsd-386-cgo), const DLT_IPNET = 226 pkg syscall (netbsd-386-cgo), const DLT_IPV4 = 228 pkg syscall (netbsd-386-cgo), const DLT_IPV6 = 229 pkg syscall (netbsd-386-cgo), const DLT_IP_OVER_FC = 122 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_ATM1 = 137 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_ATM2 = 135 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_CHDLC = 181 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_ES = 132 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_ETHER = 178 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_FRELAY = 180 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_GGSN = 133 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_ISM = 194 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_MFR = 134 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_MLFR = 131 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_MLPPP = 130 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_MONITOR = 164 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_PIC_PEER = 174 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_PPP = 179 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_PPPOE = 167 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_PPPOE_ATM = 168 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_SERVICES = 136 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_ST = 200 pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_VP = 183 pkg syscall (netbsd-386-cgo), const DLT_LAPB_WITH_DIR = 207 pkg syscall (netbsd-386-cgo), const DLT_LAPD = 203 pkg syscall (netbsd-386-cgo), const DLT_LIN = 212 pkg syscall (netbsd-386-cgo), const DLT_LINUX_EVDEV = 216 pkg syscall (netbsd-386-cgo), const DLT_LINUX_IRDA = 144 pkg syscall (netbsd-386-cgo), const DLT_LINUX_LAPD = 177 pkg syscall (netbsd-386-cgo), const DLT_LINUX_SLL = 113 pkg syscall (netbsd-386-cgo), const DLT_LOOP = 108 pkg syscall (netbsd-386-cgo), const DLT_LTALK = 114 pkg syscall (netbsd-386-cgo), const DLT_MFR = 182 pkg syscall (netbsd-386-cgo), const DLT_MOST = 211 pkg syscall (netbsd-386-cgo), const DLT_MPLS = 219 pkg syscall (netbsd-386-cgo), const DLT_MTP2 = 140 pkg syscall (netbsd-386-cgo), const DLT_MTP2_WITH_PHDR = 139 pkg syscall (netbsd-386-cgo), const DLT_MTP3 = 141 pkg syscall (netbsd-386-cgo), const DLT_NULL = 0 pkg syscall (netbsd-386-cgo), const DLT_PCI_EXP = 125 pkg syscall (netbsd-386-cgo), const DLT_PFLOG = 117 pkg syscall (netbsd-386-cgo), const DLT_PFSYNC = 18 pkg syscall (netbsd-386-cgo), const DLT_PPI = 192 pkg syscall (netbsd-386-cgo), const DLT_PPP = 9 pkg syscall (netbsd-386-cgo), const DLT_PPP_BSDOS = 14 pkg syscall (netbsd-386-cgo), const DLT_PPP_ETHER = 51 pkg syscall (netbsd-386-cgo), const DLT_PPP_PPPD = 166 pkg syscall (netbsd-386-cgo), const DLT_PPP_SERIAL = 50 pkg syscall (netbsd-386-cgo), const DLT_PPP_WITH_DIR = 204 pkg syscall (netbsd-386-cgo), const DLT_PRISM_HEADER = 119 pkg syscall (netbsd-386-cgo), const DLT_PRONET = 4 pkg syscall (netbsd-386-cgo), const DLT_RAIF1 = 198 pkg syscall (netbsd-386-cgo), const DLT_RAW = 12 pkg syscall (netbsd-386-cgo), const DLT_RAWAF_MASK = 35913728 pkg syscall (netbsd-386-cgo), const DLT_RIO = 124 pkg syscall (netbsd-386-cgo), const DLT_SCCP = 142 pkg syscall (netbsd-386-cgo), const DLT_SITA = 196 pkg syscall (netbsd-386-cgo), const DLT_SLIP = 8 pkg syscall (netbsd-386-cgo), const DLT_SLIP_BSDOS = 13 pkg syscall (netbsd-386-cgo), const DLT_SUNATM = 123 pkg syscall (netbsd-386-cgo), const DLT_SYMANTEC_FIREWALL = 99 pkg syscall (netbsd-386-cgo), const DLT_TZSP = 128 pkg syscall (netbsd-386-cgo), const DLT_USB = 186 pkg syscall (netbsd-386-cgo), const DLT_USB_LINUX = 189 pkg syscall (netbsd-386-cgo), const DLT_USB_LINUX_MMAPPED = 220 pkg syscall (netbsd-386-cgo), const DLT_WIHART = 223 pkg syscall (netbsd-386-cgo), const DLT_X2E_SERIAL = 213 pkg syscall (netbsd-386-cgo), const DLT_X2E_XORAYA = 214 pkg syscall (netbsd-386-cgo), const DT_BLK = 6 pkg syscall (netbsd-386-cgo), const DT_CHR = 2 pkg syscall (netbsd-386-cgo), const DT_DIR = 4 pkg syscall (netbsd-386-cgo), const DT_FIFO = 1 pkg syscall (netbsd-386-cgo), const DT_LNK = 10 pkg syscall (netbsd-386-cgo), const DT_REG = 8 pkg syscall (netbsd-386-cgo), const DT_SOCK = 12 pkg syscall (netbsd-386-cgo), const DT_UNKNOWN = 0 pkg syscall (netbsd-386-cgo), const DT_WHT = 14 pkg syscall (netbsd-386-cgo), const E2BIG = 7 pkg syscall (netbsd-386-cgo), const EACCES = 13 pkg syscall (netbsd-386-cgo), const EADDRINUSE = 48 pkg syscall (netbsd-386-cgo), const EADDRNOTAVAIL = 49 pkg syscall (netbsd-386-cgo), const EAFNOSUPPORT = 47 pkg syscall (netbsd-386-cgo), const EAGAIN = 35 pkg syscall (netbsd-386-cgo), const EALREADY = 37 pkg syscall (netbsd-386-cgo), const EAUTH = 80 pkg syscall (netbsd-386-cgo), const EBADF = 9 pkg syscall (netbsd-386-cgo), const EBADMSG = 88 pkg syscall (netbsd-386-cgo), const EBADRPC = 72 pkg syscall (netbsd-386-cgo), const EBUSY = 16 pkg syscall (netbsd-386-cgo), const ECANCELED = 87 pkg syscall (netbsd-386-cgo), const ECHILD = 10 pkg syscall (netbsd-386-cgo), const ECHO = 8 pkg syscall (netbsd-386-cgo), const ECHOCTL = 64 pkg syscall (netbsd-386-cgo), const ECHOE = 2 pkg syscall (netbsd-386-cgo), const ECHOK = 4 pkg syscall (netbsd-386-cgo), const ECHOKE = 1 pkg syscall (netbsd-386-cgo), const ECHONL = 16 pkg syscall (netbsd-386-cgo), const ECHOPRT = 32 pkg syscall (netbsd-386-cgo), const ECONNABORTED = 53 pkg syscall (netbsd-386-cgo), const ECONNREFUSED = 61 pkg syscall (netbsd-386-cgo), const ECONNRESET = 54 pkg syscall (netbsd-386-cgo), const EDEADLK = 11 pkg syscall (netbsd-386-cgo), const EDESTADDRREQ = 39 pkg syscall (netbsd-386-cgo), const EDOM = 33 pkg syscall (netbsd-386-cgo), const EDQUOT = 69 pkg syscall (netbsd-386-cgo), const EEXIST = 17 pkg syscall (netbsd-386-cgo), const EFAULT = 14 pkg syscall (netbsd-386-cgo), const EFBIG = 27 pkg syscall (netbsd-386-cgo), const EFTYPE = 79 pkg syscall (netbsd-386-cgo), const EHOSTDOWN = 64 pkg syscall (netbsd-386-cgo), const EHOSTUNREACH = 65 pkg syscall (netbsd-386-cgo), const EIDRM = 82 pkg syscall (netbsd-386-cgo), const EILSEQ = 85 pkg syscall (netbsd-386-cgo), const EINPROGRESS = 36 pkg syscall (netbsd-386-cgo), const EINTR = 4 pkg syscall (netbsd-386-cgo), const EINVAL = 22 pkg syscall (netbsd-386-cgo), const EIO = 5 pkg syscall (netbsd-386-cgo), const EISCONN = 56 pkg syscall (netbsd-386-cgo), const EISDIR = 21 pkg syscall (netbsd-386-cgo), const ELAST = 96 pkg syscall (netbsd-386-cgo), const ELOOP = 62 pkg syscall (netbsd-386-cgo), const EMFILE = 24 pkg syscall (netbsd-386-cgo), const EMLINK = 31 pkg syscall (netbsd-386-cgo), const EMSGSIZE = 40 pkg syscall (netbsd-386-cgo), const EMULTIHOP = 94 pkg syscall (netbsd-386-cgo), const EMUL_LINUX = 1 pkg syscall (netbsd-386-cgo), const EMUL_LINUX32 = 5 pkg syscall (netbsd-386-cgo), const EMUL_MAXID = 6 pkg syscall (netbsd-386-cgo), const ENAMETOOLONG = 63 pkg syscall (netbsd-386-cgo), const ENEEDAUTH = 81 pkg syscall (netbsd-386-cgo), const ENETDOWN = 50 pkg syscall (netbsd-386-cgo), const ENETRESET = 52 pkg syscall (netbsd-386-cgo), const ENETUNREACH = 51 pkg syscall (netbsd-386-cgo), const ENFILE = 23 pkg syscall (netbsd-386-cgo), const ENOATTR = 93 pkg syscall (netbsd-386-cgo), const ENOBUFS = 55 pkg syscall (netbsd-386-cgo), const ENODATA = 89 pkg syscall (netbsd-386-cgo), const ENODEV = 19 pkg syscall (netbsd-386-cgo), const ENOEXEC = 8 pkg syscall (netbsd-386-cgo), const ENOLCK = 77 pkg syscall (netbsd-386-cgo), const ENOLINK = 95 pkg syscall (netbsd-386-cgo), const ENOMEM = 12 pkg syscall (netbsd-386-cgo), const ENOMSG = 83 pkg syscall (netbsd-386-cgo), const ENOPROTOOPT = 42 pkg syscall (netbsd-386-cgo), const ENOSPC = 28 pkg syscall (netbsd-386-cgo), const ENOSR = 90 pkg syscall (netbsd-386-cgo), const ENOSTR = 91 pkg syscall (netbsd-386-cgo), const ENOSYS = 78 pkg syscall (netbsd-386-cgo), const ENOTBLK = 15 pkg syscall (netbsd-386-cgo), const ENOTCONN = 57 pkg syscall (netbsd-386-cgo), const ENOTDIR = 20 pkg syscall (netbsd-386-cgo), const ENOTEMPTY = 66 pkg syscall (netbsd-386-cgo), const ENOTSOCK = 38 pkg syscall (netbsd-386-cgo), const ENOTSUP = 86 pkg syscall (netbsd-386-cgo), const ENOTTY = 25 pkg syscall (netbsd-386-cgo), const ENXIO = 6 pkg syscall (netbsd-386-cgo), const EN_SW_CTL_INF = 4096 pkg syscall (netbsd-386-cgo), const EN_SW_CTL_PREC = 768 pkg syscall (netbsd-386-cgo), const EN_SW_CTL_ROUND = 3072 pkg syscall (netbsd-386-cgo), const EN_SW_DATACHAIN = 128 pkg syscall (netbsd-386-cgo), const EN_SW_DENORM = 2 pkg syscall (netbsd-386-cgo), const EN_SW_INVOP = 1 pkg syscall (netbsd-386-cgo), const EN_SW_OVERFLOW = 8 pkg syscall (netbsd-386-cgo), const EN_SW_PRECLOSS = 32 pkg syscall (netbsd-386-cgo), const EN_SW_UNDERFLOW = 16 pkg syscall (netbsd-386-cgo), const EN_SW_ZERODIV = 4 pkg syscall (netbsd-386-cgo), const EOPNOTSUPP = 45 pkg syscall (netbsd-386-cgo), const EOVERFLOW = 84 pkg syscall (netbsd-386-cgo), const EPERM = 1 pkg syscall (netbsd-386-cgo), const EPFNOSUPPORT = 46 pkg syscall (netbsd-386-cgo), const EPIPE = 32 pkg syscall (netbsd-386-cgo), const EPROCLIM = 67 pkg syscall (netbsd-386-cgo), const EPROCUNAVAIL = 76 pkg syscall (netbsd-386-cgo), const EPROGMISMATCH = 75 pkg syscall (netbsd-386-cgo), const EPROGUNAVAIL = 74 pkg syscall (netbsd-386-cgo), const EPROTO = 96 pkg syscall (netbsd-386-cgo), const EPROTONOSUPPORT = 43 pkg syscall (netbsd-386-cgo), const EPROTOTYPE = 41 pkg syscall (netbsd-386-cgo), const ERANGE = 34 pkg syscall (netbsd-386-cgo), const EREMOTE = 71 pkg syscall (netbsd-386-cgo), const EROFS = 30 pkg syscall (netbsd-386-cgo), const ERPCMISMATCH = 73 pkg syscall (netbsd-386-cgo), const ESHUTDOWN = 58 pkg syscall (netbsd-386-cgo), const ESOCKTNOSUPPORT = 44 pkg syscall (netbsd-386-cgo), const ESPIPE = 29 pkg syscall (netbsd-386-cgo), const ESRCH = 3 pkg syscall (netbsd-386-cgo), const ESTALE = 70 pkg syscall (netbsd-386-cgo), const ETHERCAP_JUMBO_MTU = 4 pkg syscall (netbsd-386-cgo), const ETHERCAP_VLAN_HWTAGGING = 2 pkg syscall (netbsd-386-cgo), const ETHERCAP_VLAN_MTU = 1 pkg syscall (netbsd-386-cgo), const ETHERMIN = 46 pkg syscall (netbsd-386-cgo), const ETHERMTU = 1500 pkg syscall (netbsd-386-cgo), const ETHERMTU_JUMBO = 9000 pkg syscall (netbsd-386-cgo), const ETHERTYPE_8023 = 4 pkg syscall (netbsd-386-cgo), const ETHERTYPE_AARP = 33011 pkg syscall (netbsd-386-cgo), const ETHERTYPE_ACCTON = 33680 pkg syscall (netbsd-386-cgo), const ETHERTYPE_AEONIC = 32822 pkg syscall (netbsd-386-cgo), const ETHERTYPE_ALPHA = 33098 pkg syscall (netbsd-386-cgo), const ETHERTYPE_AMBER = 24584 pkg syscall (netbsd-386-cgo), const ETHERTYPE_AMOEBA = 33093 pkg syscall (netbsd-386-cgo), const ETHERTYPE_APOLLO = 33015 pkg syscall (netbsd-386-cgo), const ETHERTYPE_APOLLODOMAIN = 32793 pkg syscall (netbsd-386-cgo), const ETHERTYPE_APPLETALK = 32923 pkg syscall (netbsd-386-cgo), const ETHERTYPE_APPLITEK = 32967 pkg syscall (netbsd-386-cgo), const ETHERTYPE_ARGONAUT = 32826 pkg syscall (netbsd-386-cgo), const ETHERTYPE_ARP = 2054 pkg syscall (netbsd-386-cgo), const ETHERTYPE_AT = 32923 pkg syscall (netbsd-386-cgo), const ETHERTYPE_ATALK = 32923 pkg syscall (netbsd-386-cgo), const ETHERTYPE_ATOMIC = 34527 pkg syscall (netbsd-386-cgo), const ETHERTYPE_ATT = 32873 pkg syscall (netbsd-386-cgo), const ETHERTYPE_ATTSTANFORD = 32776 pkg syscall (netbsd-386-cgo), const ETHERTYPE_AUTOPHON = 32874 pkg syscall (netbsd-386-cgo), const ETHERTYPE_AXIS = 34902 pkg syscall (netbsd-386-cgo), const ETHERTYPE_BCLOOP = 36867 pkg syscall (netbsd-386-cgo), const ETHERTYPE_BOFL = 33026 pkg syscall (netbsd-386-cgo), const ETHERTYPE_CABLETRON = 28724 pkg syscall (netbsd-386-cgo), const ETHERTYPE_CHAOS = 2052 pkg syscall (netbsd-386-cgo), const ETHERTYPE_COMDESIGN = 32876 pkg syscall (netbsd-386-cgo), const ETHERTYPE_COMPUGRAPHIC = 32877 pkg syscall (netbsd-386-cgo), const ETHERTYPE_COUNTERPOINT = 32866 pkg syscall (netbsd-386-cgo), const ETHERTYPE_CRONUS = 32772 pkg syscall (netbsd-386-cgo), const ETHERTYPE_CRONUSVLN = 32771 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DCA = 4660 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DDE = 32891 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DEBNI = 43690 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECAM = 32840 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECCUST = 24582 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECDIAG = 24581 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECDNS = 32828 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECDTS = 32830 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECEXPER = 24576 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECLAST = 32833 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECLTM = 32831 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECMUMPS = 24585 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECNETBIOS = 32832 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DELTACON = 34526 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DIDDLE = 17185 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DLOG1 = 1632 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DLOG2 = 1633 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DN = 24579 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DOGFIGHT = 6537 pkg syscall (netbsd-386-cgo), const ETHERTYPE_DSMD = 32825 pkg syscall (netbsd-386-cgo), const ETHERTYPE_ECMA = 2051 pkg syscall (netbsd-386-cgo), const ETHERTYPE_ENCRYPT = 32829 pkg syscall (netbsd-386-cgo), const ETHERTYPE_ES = 32861 pkg syscall (netbsd-386-cgo), const ETHERTYPE_EXCELAN = 32784 pkg syscall (netbsd-386-cgo), const ETHERTYPE_EXPERDATA = 32841 pkg syscall (netbsd-386-cgo), const ETHERTYPE_FLIP = 33094 pkg syscall (netbsd-386-cgo), const ETHERTYPE_FLOWCONTROL = 34824 pkg syscall (netbsd-386-cgo), const ETHERTYPE_FRARP = 2056 pkg syscall (netbsd-386-cgo), const ETHERTYPE_GENDYN = 32872 pkg syscall (netbsd-386-cgo), const ETHERTYPE_HAYES = 33072 pkg syscall (netbsd-386-cgo), const ETHERTYPE_HIPPI_FP = 33152 pkg syscall (netbsd-386-cgo), const ETHERTYPE_HITACHI = 34848 pkg syscall (netbsd-386-cgo), const ETHERTYPE_HP = 32773 pkg syscall (netbsd-386-cgo), const ETHERTYPE_IEEEPUP = 2560 pkg syscall (netbsd-386-cgo), const ETHERTYPE_IEEEPUPAT = 2561 pkg syscall (netbsd-386-cgo), const ETHERTYPE_IMLBL = 19522 pkg syscall (netbsd-386-cgo), const ETHERTYPE_IMLBLDIAG = 16972 pkg syscall (netbsd-386-cgo), const ETHERTYPE_IP = 2048 pkg syscall (netbsd-386-cgo), const ETHERTYPE_IPAS = 34668 pkg syscall (netbsd-386-cgo), const ETHERTYPE_IPV6 = 34525 pkg syscall (netbsd-386-cgo), const ETHERTYPE_IPX = 33079 pkg syscall (netbsd-386-cgo), const ETHERTYPE_IPXNEW = 32823 pkg syscall (netbsd-386-cgo), const ETHERTYPE_KALPANA = 34178 pkg syscall (netbsd-386-cgo), const ETHERTYPE_LANBRIDGE = 32824 pkg syscall (netbsd-386-cgo), const ETHERTYPE_LANPROBE = 34952 pkg syscall (netbsd-386-cgo), const ETHERTYPE_LAT = 24580 pkg syscall (netbsd-386-cgo), const ETHERTYPE_LBACK = 36864 pkg syscall (netbsd-386-cgo), const ETHERTYPE_LITTLE = 32864 pkg syscall (netbsd-386-cgo), const ETHERTYPE_LOGICRAFT = 33096 pkg syscall (netbsd-386-cgo), const ETHERTYPE_LOOPBACK = 36864 pkg syscall (netbsd-386-cgo), const ETHERTYPE_MATRA = 32890 pkg syscall (netbsd-386-cgo), const ETHERTYPE_MAX = 65535 pkg syscall (netbsd-386-cgo), const ETHERTYPE_MERIT = 32892 pkg syscall (netbsd-386-cgo), const ETHERTYPE_MICP = 34618 pkg syscall (netbsd-386-cgo), const ETHERTYPE_MOPDL = 24577 pkg syscall (netbsd-386-cgo), const ETHERTYPE_MOPRC = 24578 pkg syscall (netbsd-386-cgo), const ETHERTYPE_MOTOROLA = 33165 pkg syscall (netbsd-386-cgo), const ETHERTYPE_MPLS = 34887 pkg syscall (netbsd-386-cgo), const ETHERTYPE_MPLS_MCAST = 34888 pkg syscall (netbsd-386-cgo), const ETHERTYPE_MUMPS = 33087 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPCC = 15364 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPCLAIM = 15369 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPCLREQ = 15365 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPCLRSP = 15366 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPCREQ = 15362 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPCRSP = 15363 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPDG = 15367 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPDGB = 15368 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPDLTE = 15370 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPRAR = 15372 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPRAS = 15371 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPRST = 15373 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPSCD = 15361 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPVCD = 15360 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBS = 2050 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NCD = 33097 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NESTAR = 32774 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NETBEUI = 33169 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NOVELL = 33080 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NS = 1536 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NSAT = 1537 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NSCOMPAT = 2055 pkg syscall (netbsd-386-cgo), const ETHERTYPE_NTRAILER = 16 pkg syscall (netbsd-386-cgo), const ETHERTYPE_OS9 = 28679 pkg syscall (netbsd-386-cgo), const ETHERTYPE_OS9NET = 28681 pkg syscall (netbsd-386-cgo), const ETHERTYPE_PACER = 32966 pkg syscall (netbsd-386-cgo), const ETHERTYPE_PAE = 34958 pkg syscall (netbsd-386-cgo), const ETHERTYPE_PCS = 16962 pkg syscall (netbsd-386-cgo), const ETHERTYPE_PLANNING = 32836 pkg syscall (netbsd-386-cgo), const ETHERTYPE_PPP = 34827 pkg syscall (netbsd-386-cgo), const ETHERTYPE_PPPOE = 34916 pkg syscall (netbsd-386-cgo), const ETHERTYPE_PPPOEDISC = 34915 pkg syscall (netbsd-386-cgo), const ETHERTYPE_PRIMENTS = 28721 pkg syscall (netbsd-386-cgo), const ETHERTYPE_PUP = 512 pkg syscall (netbsd-386-cgo), const ETHERTYPE_PUPAT = 512 pkg syscall (netbsd-386-cgo), const ETHERTYPE_RACAL = 28720 pkg syscall (netbsd-386-cgo), const ETHERTYPE_RATIONAL = 33104 pkg syscall (netbsd-386-cgo), const ETHERTYPE_RAWFR = 25945 pkg syscall (netbsd-386-cgo), const ETHERTYPE_RCL = 6549 pkg syscall (netbsd-386-cgo), const ETHERTYPE_RDP = 34617 pkg syscall (netbsd-386-cgo), const ETHERTYPE_RETIX = 33010 pkg syscall (netbsd-386-cgo), const ETHERTYPE_REVARP = 32821 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SCA = 24583 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SECTRA = 34523 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SECUREDATA = 34669 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SGITW = 33150 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SG_BOUNCE = 32790 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SG_DIAG = 32787 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SG_NETGAMES = 32788 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SG_RESV = 32789 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SIMNET = 21000 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SLOWPROTOCOLS = 34825 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SNA = 32981 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SNMP = 33100 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SONIX = 64245 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SPIDER = 32927 pkg syscall (netbsd-386-cgo), const ETHERTYPE_SPRITE = 1280 pkg syscall (netbsd-386-cgo), const ETHERTYPE_STP = 33153 pkg syscall (netbsd-386-cgo), const ETHERTYPE_TALARIS = 33067 pkg syscall (netbsd-386-cgo), const ETHERTYPE_TALARISMC = 34091 pkg syscall (netbsd-386-cgo), const ETHERTYPE_TCPCOMP = 34667 pkg syscall (netbsd-386-cgo), const ETHERTYPE_TCPSM = 36866 pkg syscall (netbsd-386-cgo), const ETHERTYPE_TEC = 33103 pkg syscall (netbsd-386-cgo), const ETHERTYPE_TIGAN = 32815 pkg syscall (netbsd-386-cgo), const ETHERTYPE_TRAIL = 4096 pkg syscall (netbsd-386-cgo), const ETHERTYPE_TRANSETHER = 25944 pkg syscall (netbsd-386-cgo), const ETHERTYPE_TYMSHARE = 32814 pkg syscall (netbsd-386-cgo), const ETHERTYPE_UBBST = 28677 pkg syscall (netbsd-386-cgo), const ETHERTYPE_UBDEBUG = 2304 pkg syscall (netbsd-386-cgo), const ETHERTYPE_UBDIAGLOOP = 28674 pkg syscall (netbsd-386-cgo), const ETHERTYPE_UBDL = 28672 pkg syscall (netbsd-386-cgo), const ETHERTYPE_UBNIU = 28673 pkg syscall (netbsd-386-cgo), const ETHERTYPE_UBNMC = 28675 pkg syscall (netbsd-386-cgo), const ETHERTYPE_VALID = 5632 pkg syscall (netbsd-386-cgo), const ETHERTYPE_VARIAN = 32989 pkg syscall (netbsd-386-cgo), const ETHERTYPE_VAXELN = 32827 pkg syscall (netbsd-386-cgo), const ETHERTYPE_VEECO = 32871 pkg syscall (netbsd-386-cgo), const ETHERTYPE_VEXP = 32859 pkg syscall (netbsd-386-cgo), const ETHERTYPE_VGLAB = 33073 pkg syscall (netbsd-386-cgo), const ETHERTYPE_VINES = 2989 pkg syscall (netbsd-386-cgo), const ETHERTYPE_VINESECHO = 2991 pkg syscall (netbsd-386-cgo), const ETHERTYPE_VINESLOOP = 2990 pkg syscall (netbsd-386-cgo), const ETHERTYPE_VITAL = 65280 pkg syscall (netbsd-386-cgo), const ETHERTYPE_VLAN = 33024 pkg syscall (netbsd-386-cgo), const ETHERTYPE_VLTLMAN = 32896 pkg syscall (netbsd-386-cgo), const ETHERTYPE_VPROD = 32860 pkg syscall (netbsd-386-cgo), const ETHERTYPE_VURESERVED = 33095 pkg syscall (netbsd-386-cgo), const ETHERTYPE_WATERLOO = 33072 pkg syscall (netbsd-386-cgo), const ETHERTYPE_WELLFLEET = 33027 pkg syscall (netbsd-386-cgo), const ETHERTYPE_X25 = 2053 pkg syscall (netbsd-386-cgo), const ETHERTYPE_X75 = 2049 pkg syscall (netbsd-386-cgo), const ETHERTYPE_XNSSM = 36865 pkg syscall (netbsd-386-cgo), const ETHERTYPE_XTP = 33149 pkg syscall (netbsd-386-cgo), const ETHER_ADDR_LEN = 6 pkg syscall (netbsd-386-cgo), const ETHER_CRC_LEN = 4 pkg syscall (netbsd-386-cgo), const ETHER_CRC_POLY_BE = 79764918 pkg syscall (netbsd-386-cgo), const ETHER_CRC_POLY_LE = 3988292384 pkg syscall (netbsd-386-cgo), const ETHER_HDR_LEN = 14 pkg syscall (netbsd-386-cgo), const ETHER_MAX_LEN = 1518 pkg syscall (netbsd-386-cgo), const ETHER_MAX_LEN_JUMBO = 9018 pkg syscall (netbsd-386-cgo), const ETHER_MIN_LEN = 64 pkg syscall (netbsd-386-cgo), const ETHER_PPPOE_ENCAP_LEN = 8 pkg syscall (netbsd-386-cgo), const ETHER_TYPE_LEN = 2 pkg syscall (netbsd-386-cgo), const ETHER_VLAN_ENCAP_LEN = 4 pkg syscall (netbsd-386-cgo), const ETIME = 92 pkg syscall (netbsd-386-cgo), const ETIMEDOUT = 60 pkg syscall (netbsd-386-cgo), const ETOOMANYREFS = 59 pkg syscall (netbsd-386-cgo), const ETXTBSY = 26 pkg syscall (netbsd-386-cgo), const EUSERS = 68 pkg syscall (netbsd-386-cgo), const EVFILT_AIO = 2 pkg syscall (netbsd-386-cgo), const EVFILT_PROC = 4 pkg syscall (netbsd-386-cgo), const EVFILT_READ = 0 pkg syscall (netbsd-386-cgo), const EVFILT_SIGNAL = 5 pkg syscall (netbsd-386-cgo), const EVFILT_SYSCOUNT = 7 pkg syscall (netbsd-386-cgo), const EVFILT_TIMER = 6 pkg syscall (netbsd-386-cgo), const EVFILT_VNODE = 3 pkg syscall (netbsd-386-cgo), const EVFILT_WRITE = 1 pkg syscall (netbsd-386-cgo), const EV_ADD = 1 pkg syscall (netbsd-386-cgo), const EV_CLEAR = 32 pkg syscall (netbsd-386-cgo), const EV_DELETE = 2 pkg syscall (netbsd-386-cgo), const EV_DISABLE = 8 pkg syscall (netbsd-386-cgo), const EV_ENABLE = 4 pkg syscall (netbsd-386-cgo), const EV_EOF = 32768 pkg syscall (netbsd-386-cgo), const EV_ERROR = 16384 pkg syscall (netbsd-386-cgo), const EV_FLAG1 = 8192 pkg syscall (netbsd-386-cgo), const EV_ONESHOT = 16 pkg syscall (netbsd-386-cgo), const EV_SYSFLAGS = 61440 pkg syscall (netbsd-386-cgo), const EWOULDBLOCK = 35 pkg syscall (netbsd-386-cgo), const EXDEV = 18 pkg syscall (netbsd-386-cgo), const EXTA = 19200 pkg syscall (netbsd-386-cgo), const EXTB = 38400 pkg syscall (netbsd-386-cgo), const EXTPROC = 2048 pkg syscall (netbsd-386-cgo), const FD_CLOEXEC = 1 pkg syscall (netbsd-386-cgo), const FD_SETSIZE = 256 pkg syscall (netbsd-386-cgo), const FLUSHO = 8388608 pkg syscall (netbsd-386-cgo), const F_CLOSEM = 10 pkg syscall (netbsd-386-cgo), const F_DUPFD = 0 pkg syscall (netbsd-386-cgo), const F_DUPFD_CLOEXEC = 12 pkg syscall (netbsd-386-cgo), const F_FSCTL = -2147483648 pkg syscall (netbsd-386-cgo), const F_FSDIRMASK = 1879048192 pkg syscall (netbsd-386-cgo), const F_FSIN = 268435456 pkg syscall (netbsd-386-cgo), const F_FSINOUT = 805306368 pkg syscall (netbsd-386-cgo), const F_FSOUT = 536870912 pkg syscall (netbsd-386-cgo), const F_FSPRIV = 32768 pkg syscall (netbsd-386-cgo), const F_FSVOID = 1073741824 pkg syscall (netbsd-386-cgo), const F_GETFD = 1 pkg syscall (netbsd-386-cgo), const F_GETFL = 3 pkg syscall (netbsd-386-cgo), const F_GETLK = 7 pkg syscall (netbsd-386-cgo), const F_GETNOSIGPIPE = 13 pkg syscall (netbsd-386-cgo), const F_GETOWN = 5 pkg syscall (netbsd-386-cgo), const F_MAXFD = 11 pkg syscall (netbsd-386-cgo), const F_OK = 0 pkg syscall (netbsd-386-cgo), const F_PARAM_MASK = 4095 pkg syscall (netbsd-386-cgo), const F_PARAM_MAX = 4095 pkg syscall (netbsd-386-cgo), const F_RDLCK = 1 pkg syscall (netbsd-386-cgo), const F_SETFD = 2 pkg syscall (netbsd-386-cgo), const F_SETFL = 4 pkg syscall (netbsd-386-cgo), const F_SETLK = 8 pkg syscall (netbsd-386-cgo), const F_SETLKW = 9 pkg syscall (netbsd-386-cgo), const F_SETNOSIGPIPE = 14 pkg syscall (netbsd-386-cgo), const F_SETOWN = 6 pkg syscall (netbsd-386-cgo), const F_UNLCK = 2 pkg syscall (netbsd-386-cgo), const F_WRLCK = 3 pkg syscall (netbsd-386-cgo), const HUPCL = 16384 pkg syscall (netbsd-386-cgo), const ICANON = 256 pkg syscall (netbsd-386-cgo), const ICRNL = 256 pkg syscall (netbsd-386-cgo), const IEXTEN = 1024 pkg syscall (netbsd-386-cgo), const IFAN_ARRIVAL = 0 pkg syscall (netbsd-386-cgo), const IFAN_DEPARTURE = 1 pkg syscall (netbsd-386-cgo), const IFA_ROUTE = 1 pkg syscall (netbsd-386-cgo), const IFF_ALLMULTI = 512 pkg syscall (netbsd-386-cgo), const IFF_CANTCHANGE = 36690 pkg syscall (netbsd-386-cgo), const IFF_DEBUG = 4 pkg syscall (netbsd-386-cgo), const IFF_LINK0 = 4096 pkg syscall (netbsd-386-cgo), const IFF_LINK1 = 8192 pkg syscall (netbsd-386-cgo), const IFF_LINK2 = 16384 pkg syscall (netbsd-386-cgo), const IFF_LOOPBACK = 8 pkg syscall (netbsd-386-cgo), const IFF_MULTICAST = 32768 pkg syscall (netbsd-386-cgo), const IFF_NOARP = 128 pkg syscall (netbsd-386-cgo), const IFF_NOTRAILERS = 32 pkg syscall (netbsd-386-cgo), const IFF_OACTIVE = 1024 pkg syscall (netbsd-386-cgo), const IFF_POINTOPOINT = 16 pkg syscall (netbsd-386-cgo), const IFF_PROMISC = 256 pkg syscall (netbsd-386-cgo), const IFF_RUNNING = 64 pkg syscall (netbsd-386-cgo), const IFF_SIMPLEX = 2048 pkg syscall (netbsd-386-cgo), const IFNAMSIZ = 16 pkg syscall (netbsd-386-cgo), const IFT_1822 = 2 pkg syscall (netbsd-386-cgo), const IFT_A12MPPSWITCH = 130 pkg syscall (netbsd-386-cgo), const IFT_AAL2 = 187 pkg syscall (netbsd-386-cgo), const IFT_AAL5 = 49 pkg syscall (netbsd-386-cgo), const IFT_ADSL = 94 pkg syscall (netbsd-386-cgo), const IFT_AFLANE8023 = 59 pkg syscall (netbsd-386-cgo), const IFT_AFLANE8025 = 60 pkg syscall (netbsd-386-cgo), const IFT_ARAP = 88 pkg syscall (netbsd-386-cgo), const IFT_ARCNET = 35 pkg syscall (netbsd-386-cgo), const IFT_ARCNETPLUS = 36 pkg syscall (netbsd-386-cgo), const IFT_ASYNC = 84 pkg syscall (netbsd-386-cgo), const IFT_ATM = 37 pkg syscall (netbsd-386-cgo), const IFT_ATMDXI = 105 pkg syscall (netbsd-386-cgo), const IFT_ATMFUNI = 106 pkg syscall (netbsd-386-cgo), const IFT_ATMIMA = 107 pkg syscall (netbsd-386-cgo), const IFT_ATMLOGICAL = 80 pkg syscall (netbsd-386-cgo), const IFT_ATMRADIO = 189 pkg syscall (netbsd-386-cgo), const IFT_ATMSUBINTERFACE = 134 pkg syscall (netbsd-386-cgo), const IFT_ATMVCIENDPT = 194 pkg syscall (netbsd-386-cgo), const IFT_ATMVIRTUAL = 149 pkg syscall (netbsd-386-cgo), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (netbsd-386-cgo), const IFT_BRIDGE = 209 pkg syscall (netbsd-386-cgo), const IFT_BSC = 83 pkg syscall (netbsd-386-cgo), const IFT_CARP = 248 pkg syscall (netbsd-386-cgo), const IFT_CCTEMUL = 61 pkg syscall (netbsd-386-cgo), const IFT_CEPT = 19 pkg syscall (netbsd-386-cgo), const IFT_CES = 133 pkg syscall (netbsd-386-cgo), const IFT_CHANNEL = 70 pkg syscall (netbsd-386-cgo), const IFT_CNR = 85 pkg syscall (netbsd-386-cgo), const IFT_COFFEE = 132 pkg syscall (netbsd-386-cgo), const IFT_COMPOSITELINK = 155 pkg syscall (netbsd-386-cgo), const IFT_DCN = 141 pkg syscall (netbsd-386-cgo), const IFT_DIGITALPOWERLINE = 138 pkg syscall (netbsd-386-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (netbsd-386-cgo), const IFT_DLSW = 74 pkg syscall (netbsd-386-cgo), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (netbsd-386-cgo), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (netbsd-386-cgo), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (netbsd-386-cgo), const IFT_DOCSCABLEUPSTREAMCHANNEL = 205 pkg syscall (netbsd-386-cgo), const IFT_DS0 = 81 pkg syscall (netbsd-386-cgo), const IFT_DS0BUNDLE = 82 pkg syscall (netbsd-386-cgo), const IFT_DS1FDL = 170 pkg syscall (netbsd-386-cgo), const IFT_DS3 = 30 pkg syscall (netbsd-386-cgo), const IFT_DTM = 140 pkg syscall (netbsd-386-cgo), const IFT_DVBASILN = 172 pkg syscall (netbsd-386-cgo), const IFT_DVBASIOUT = 173 pkg syscall (netbsd-386-cgo), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (netbsd-386-cgo), const IFT_DVBRCCMACLAYER = 146 pkg syscall (netbsd-386-cgo), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (netbsd-386-cgo), const IFT_ECONET = 206 pkg syscall (netbsd-386-cgo), const IFT_EON = 25 pkg syscall (netbsd-386-cgo), const IFT_EPLRS = 87 pkg syscall (netbsd-386-cgo), const IFT_ESCON = 73 pkg syscall (netbsd-386-cgo), const IFT_ETHER = 6 pkg syscall (netbsd-386-cgo), const IFT_FAITH = 242 pkg syscall (netbsd-386-cgo), const IFT_FAST = 125 pkg syscall (netbsd-386-cgo), const IFT_FASTETHER = 62 pkg syscall (netbsd-386-cgo), const IFT_FASTETHERFX = 69 pkg syscall (netbsd-386-cgo), const IFT_FDDI = 15 pkg syscall (netbsd-386-cgo), const IFT_FIBRECHANNEL = 56 pkg syscall (netbsd-386-cgo), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (netbsd-386-cgo), const IFT_FRAMERELAYMPI = 92 pkg syscall (netbsd-386-cgo), const IFT_FRDLCIENDPT = 193 pkg syscall (netbsd-386-cgo), const IFT_FRELAY = 32 pkg syscall (netbsd-386-cgo), const IFT_FRELAYDCE = 44 pkg syscall (netbsd-386-cgo), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (netbsd-386-cgo), const IFT_FRFORWARD = 158 pkg syscall (netbsd-386-cgo), const IFT_G703AT2MB = 67 pkg syscall (netbsd-386-cgo), const IFT_G703AT64K = 66 pkg syscall (netbsd-386-cgo), const IFT_GIF = 240 pkg syscall (netbsd-386-cgo), const IFT_GIGABITETHERNET = 117 pkg syscall (netbsd-386-cgo), const IFT_GR303IDT = 178 pkg syscall (netbsd-386-cgo), const IFT_GR303RDT = 177 pkg syscall (netbsd-386-cgo), const IFT_H323GATEKEEPER = 164 pkg syscall (netbsd-386-cgo), const IFT_H323PROXY = 165 pkg syscall (netbsd-386-cgo), const IFT_HDH1822 = 3 pkg syscall (netbsd-386-cgo), const IFT_HDLC = 118 pkg syscall (netbsd-386-cgo), const IFT_HDSL2 = 168 pkg syscall (netbsd-386-cgo), const IFT_HIPERLAN2 = 183 pkg syscall (netbsd-386-cgo), const IFT_HIPPI = 47 pkg syscall (netbsd-386-cgo), const IFT_HIPPIINTERFACE = 57 pkg syscall (netbsd-386-cgo), const IFT_HOSTPAD = 90 pkg syscall (netbsd-386-cgo), const IFT_HSSI = 46 pkg syscall (netbsd-386-cgo), const IFT_HY = 14 pkg syscall (netbsd-386-cgo), const IFT_IBM370PARCHAN = 72 pkg syscall (netbsd-386-cgo), const IFT_IDSL = 154 pkg syscall (netbsd-386-cgo), const IFT_IEEE1394 = 144 pkg syscall (netbsd-386-cgo), const IFT_IEEE80211 = 71 pkg syscall (netbsd-386-cgo), const IFT_IEEE80212 = 55 pkg syscall (netbsd-386-cgo), const IFT_IEEE8023ADLAG = 161 pkg syscall (netbsd-386-cgo), const IFT_IFGSN = 145 pkg syscall (netbsd-386-cgo), const IFT_IMT = 190 pkg syscall (netbsd-386-cgo), const IFT_INFINIBAND = 199 pkg syscall (netbsd-386-cgo), const IFT_INTERLEAVE = 124 pkg syscall (netbsd-386-cgo), const IFT_IP = 126 pkg syscall (netbsd-386-cgo), const IFT_IPFORWARD = 142 pkg syscall (netbsd-386-cgo), const IFT_IPOVERATM = 114 pkg syscall (netbsd-386-cgo), const IFT_IPOVERCDLC = 109 pkg syscall (netbsd-386-cgo), const IFT_IPOVERCLAW = 110 pkg syscall (netbsd-386-cgo), const IFT_IPSWITCH = 78 pkg syscall (netbsd-386-cgo), const IFT_ISDN = 63 pkg syscall (netbsd-386-cgo), const IFT_ISDNBASIC = 20 pkg syscall (netbsd-386-cgo), const IFT_ISDNPRIMARY = 21 pkg syscall (netbsd-386-cgo), const IFT_ISDNS = 75 pkg syscall (netbsd-386-cgo), const IFT_ISDNU = 76 pkg syscall (netbsd-386-cgo), const IFT_ISO88022LLC = 41 pkg syscall (netbsd-386-cgo), const IFT_ISO88023 = 7 pkg syscall (netbsd-386-cgo), const IFT_ISO88024 = 8 pkg syscall (netbsd-386-cgo), const IFT_ISO88025 = 9 pkg syscall (netbsd-386-cgo), const IFT_ISO88025CRFPINT = 98 pkg syscall (netbsd-386-cgo), const IFT_ISO88025DTR = 86 pkg syscall (netbsd-386-cgo), const IFT_ISO88025FIBER = 115 pkg syscall (netbsd-386-cgo), const IFT_ISO88026 = 10 pkg syscall (netbsd-386-cgo), const IFT_ISUP = 179 pkg syscall (netbsd-386-cgo), const IFT_L2VLAN = 135 pkg syscall (netbsd-386-cgo), const IFT_L3IPVLAN = 136 pkg syscall (netbsd-386-cgo), const IFT_L3IPXVLAN = 137 pkg syscall (netbsd-386-cgo), const IFT_LAPB = 16 pkg syscall (netbsd-386-cgo), const IFT_LAPD = 77 pkg syscall (netbsd-386-cgo), const IFT_LAPF = 119 pkg syscall (netbsd-386-cgo), const IFT_LINEGROUP = 210 pkg syscall (netbsd-386-cgo), const IFT_LOCALTALK = 42 pkg syscall (netbsd-386-cgo), const IFT_LOOP = 24 pkg syscall (netbsd-386-cgo), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (netbsd-386-cgo), const IFT_MFSIGLINK = 167 pkg syscall (netbsd-386-cgo), const IFT_MIOX25 = 38 pkg syscall (netbsd-386-cgo), const IFT_MODEM = 48 pkg syscall (netbsd-386-cgo), const IFT_MPC = 113 pkg syscall (netbsd-386-cgo), const IFT_MPLS = 166 pkg syscall (netbsd-386-cgo), const IFT_MPLSTUNNEL = 150 pkg syscall (netbsd-386-cgo), const IFT_MSDSL = 143 pkg syscall (netbsd-386-cgo), const IFT_MVL = 191 pkg syscall (netbsd-386-cgo), const IFT_MYRINET = 99 pkg syscall (netbsd-386-cgo), const IFT_NFAS = 175 pkg syscall (netbsd-386-cgo), const IFT_NSIP = 27 pkg syscall (netbsd-386-cgo), const IFT_OPTICALCHANNEL = 195 pkg syscall (netbsd-386-cgo), const IFT_OPTICALTRANSPORT = 196 pkg syscall (netbsd-386-cgo), const IFT_OTHER = 1 pkg syscall (netbsd-386-cgo), const IFT_P10 = 12 pkg syscall (netbsd-386-cgo), const IFT_P80 = 13 pkg syscall (netbsd-386-cgo), const IFT_PARA = 34 pkg syscall (netbsd-386-cgo), const IFT_PFLOG = 245 pkg syscall (netbsd-386-cgo), const IFT_PFSYNC = 246 pkg syscall (netbsd-386-cgo), const IFT_PLC = 174 pkg syscall (netbsd-386-cgo), const IFT_PON155 = 207 pkg syscall (netbsd-386-cgo), const IFT_PON622 = 208 pkg syscall (netbsd-386-cgo), const IFT_POS = 171 pkg syscall (netbsd-386-cgo), const IFT_PPP = 23 pkg syscall (netbsd-386-cgo), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (netbsd-386-cgo), const IFT_PROPATM = 197 pkg syscall (netbsd-386-cgo), const IFT_PROPBWAP2MP = 184 pkg syscall (netbsd-386-cgo), const IFT_PROPCNLS = 89 pkg syscall (netbsd-386-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (netbsd-386-cgo), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (netbsd-386-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (netbsd-386-cgo), const IFT_PROPMUX = 54 pkg syscall (netbsd-386-cgo), const IFT_PROPVIRTUAL = 53 pkg syscall (netbsd-386-cgo), const IFT_PROPWIRELESSP2P = 157 pkg syscall (netbsd-386-cgo), const IFT_PTPSERIAL = 22 pkg syscall (netbsd-386-cgo), const IFT_PVC = 241 pkg syscall (netbsd-386-cgo), const IFT_Q2931 = 201 pkg syscall (netbsd-386-cgo), const IFT_QLLC = 68 pkg syscall (netbsd-386-cgo), const IFT_RADIOMAC = 188 pkg syscall (netbsd-386-cgo), const IFT_RADSL = 95 pkg syscall (netbsd-386-cgo), const IFT_REACHDSL = 192 pkg syscall (netbsd-386-cgo), const IFT_RFC1483 = 159 pkg syscall (netbsd-386-cgo), const IFT_RS232 = 33 pkg syscall (netbsd-386-cgo), const IFT_RSRB = 79 pkg syscall (netbsd-386-cgo), const IFT_SDLC = 17 pkg syscall (netbsd-386-cgo), const IFT_SDSL = 96 pkg syscall (netbsd-386-cgo), const IFT_SHDSL = 169 pkg syscall (netbsd-386-cgo), const IFT_SIP = 31 pkg syscall (netbsd-386-cgo), const IFT_SIPSIG = 204 pkg syscall (netbsd-386-cgo), const IFT_SIPTG = 203 pkg syscall (netbsd-386-cgo), const IFT_SLIP = 28 pkg syscall (netbsd-386-cgo), const IFT_SMDSDXI = 43 pkg syscall (netbsd-386-cgo), const IFT_SMDSICIP = 52 pkg syscall (netbsd-386-cgo), const IFT_SONET = 39 pkg syscall (netbsd-386-cgo), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (netbsd-386-cgo), const IFT_SONETPATH = 50 pkg syscall (netbsd-386-cgo), const IFT_SONETVT = 51 pkg syscall (netbsd-386-cgo), const IFT_SRP = 151 pkg syscall (netbsd-386-cgo), const IFT_SS7SIGLINK = 156 pkg syscall (netbsd-386-cgo), const IFT_STACKTOSTACK = 111 pkg syscall (netbsd-386-cgo), const IFT_STARLAN = 11 pkg syscall (netbsd-386-cgo), const IFT_STF = 215 pkg syscall (netbsd-386-cgo), const IFT_T1 = 18 pkg syscall (netbsd-386-cgo), const IFT_TDLC = 116 pkg syscall (netbsd-386-cgo), const IFT_TELINK = 200 pkg syscall (netbsd-386-cgo), const IFT_TERMPAD = 91 pkg syscall (netbsd-386-cgo), const IFT_TR008 = 176 pkg syscall (netbsd-386-cgo), const IFT_TRANSPHDLC = 123 pkg syscall (netbsd-386-cgo), const IFT_TUNNEL = 131 pkg syscall (netbsd-386-cgo), const IFT_ULTRA = 29 pkg syscall (netbsd-386-cgo), const IFT_USB = 160 pkg syscall (netbsd-386-cgo), const IFT_V11 = 64 pkg syscall (netbsd-386-cgo), const IFT_V35 = 45 pkg syscall (netbsd-386-cgo), const IFT_V36 = 65 pkg syscall (netbsd-386-cgo), const IFT_V37 = 120 pkg syscall (netbsd-386-cgo), const IFT_VDSL = 97 pkg syscall (netbsd-386-cgo), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (netbsd-386-cgo), const IFT_VIRTUALTG = 202 pkg syscall (netbsd-386-cgo), const IFT_VOICEDID = 213 pkg syscall (netbsd-386-cgo), const IFT_VOICEEM = 100 pkg syscall (netbsd-386-cgo), const IFT_VOICEEMFGD = 211 pkg syscall (netbsd-386-cgo), const IFT_VOICEENCAP = 103 pkg syscall (netbsd-386-cgo), const IFT_VOICEFGDEANA = 212 pkg syscall (netbsd-386-cgo), const IFT_VOICEFXO = 101 pkg syscall (netbsd-386-cgo), const IFT_VOICEFXS = 102 pkg syscall (netbsd-386-cgo), const IFT_VOICEOVERATM = 152 pkg syscall (netbsd-386-cgo), const IFT_VOICEOVERCABLE = 198 pkg syscall (netbsd-386-cgo), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (netbsd-386-cgo), const IFT_VOICEOVERIP = 104 pkg syscall (netbsd-386-cgo), const IFT_X213 = 93 pkg syscall (netbsd-386-cgo), const IFT_X25 = 5 pkg syscall (netbsd-386-cgo), const IFT_X25DDN = 4 pkg syscall (netbsd-386-cgo), const IFT_X25HUNTGROUP = 122 pkg syscall (netbsd-386-cgo), const IFT_X25MLP = 121 pkg syscall (netbsd-386-cgo), const IFT_X25PLE = 40 pkg syscall (netbsd-386-cgo), const IFT_XETHER = 26 pkg syscall (netbsd-386-cgo), const IGNBRK = 1 pkg syscall (netbsd-386-cgo), const IGNCR = 128 pkg syscall (netbsd-386-cgo), const IGNPAR = 4 pkg syscall (netbsd-386-cgo), const IMAXBEL = 8192 pkg syscall (netbsd-386-cgo), const INLCR = 64 pkg syscall (netbsd-386-cgo), const INPCK = 16 pkg syscall (netbsd-386-cgo), const IN_CLASSA_HOST = 16777215 pkg syscall (netbsd-386-cgo), const IN_CLASSA_MAX = 128 pkg syscall (netbsd-386-cgo), const IN_CLASSA_NET = 4278190080 pkg syscall (netbsd-386-cgo), const IN_CLASSA_NSHIFT = 24 pkg syscall (netbsd-386-cgo), const IN_CLASSB_HOST = 65535 pkg syscall (netbsd-386-cgo), const IN_CLASSB_MAX = 65536 pkg syscall (netbsd-386-cgo), const IN_CLASSB_NET = 4294901760 pkg syscall (netbsd-386-cgo), const IN_CLASSB_NSHIFT = 16 pkg syscall (netbsd-386-cgo), const IN_CLASSC_HOST = 255 pkg syscall (netbsd-386-cgo), const IN_CLASSC_NET = 4294967040 pkg syscall (netbsd-386-cgo), const IN_CLASSC_NSHIFT = 8 pkg syscall (netbsd-386-cgo), const IN_CLASSD_HOST = 268435455 pkg syscall (netbsd-386-cgo), const IN_CLASSD_NET = 4026531840 pkg syscall (netbsd-386-cgo), const IN_CLASSD_NSHIFT = 28 pkg syscall (netbsd-386-cgo), const IN_LOOPBACKNET = 127 pkg syscall (netbsd-386-cgo), const IPPROTO_AH = 51 pkg syscall (netbsd-386-cgo), const IPPROTO_CARP = 112 pkg syscall (netbsd-386-cgo), const IPPROTO_DONE = 257 pkg syscall (netbsd-386-cgo), const IPPROTO_DSTOPTS = 60 pkg syscall (netbsd-386-cgo), const IPPROTO_EGP = 8 pkg syscall (netbsd-386-cgo), const IPPROTO_ENCAP = 98 pkg syscall (netbsd-386-cgo), const IPPROTO_EON = 80 pkg syscall (netbsd-386-cgo), const IPPROTO_ESP = 50 pkg syscall (netbsd-386-cgo), const IPPROTO_ETHERIP = 97 pkg syscall (netbsd-386-cgo), const IPPROTO_FRAGMENT = 44 pkg syscall (netbsd-386-cgo), const IPPROTO_GGP = 3 pkg syscall (netbsd-386-cgo), const IPPROTO_GRE = 47 pkg syscall (netbsd-386-cgo), const IPPROTO_HOPOPTS = 0 pkg syscall (netbsd-386-cgo), const IPPROTO_ICMP = 1 pkg syscall (netbsd-386-cgo), const IPPROTO_ICMPV6 = 58 pkg syscall (netbsd-386-cgo), const IPPROTO_IDP = 22 pkg syscall (netbsd-386-cgo), const IPPROTO_IGMP = 2 pkg syscall (netbsd-386-cgo), const IPPROTO_IPCOMP = 108 pkg syscall (netbsd-386-cgo), const IPPROTO_IPIP = 4 pkg syscall (netbsd-386-cgo), const IPPROTO_IPV4 = 4 pkg syscall (netbsd-386-cgo), const IPPROTO_IPV6_ICMP = 58 pkg syscall (netbsd-386-cgo), const IPPROTO_MAX = 256 pkg syscall (netbsd-386-cgo), const IPPROTO_MAXID = 52 pkg syscall (netbsd-386-cgo), const IPPROTO_MOBILE = 55 pkg syscall (netbsd-386-cgo), const IPPROTO_NONE = 59 pkg syscall (netbsd-386-cgo), const IPPROTO_PFSYNC = 240 pkg syscall (netbsd-386-cgo), const IPPROTO_PIM = 103 pkg syscall (netbsd-386-cgo), const IPPROTO_PUP = 12 pkg syscall (netbsd-386-cgo), const IPPROTO_RAW = 255 pkg syscall (netbsd-386-cgo), const IPPROTO_ROUTING = 43 pkg syscall (netbsd-386-cgo), const IPPROTO_RSVP = 46 pkg syscall (netbsd-386-cgo), const IPPROTO_TP = 29 pkg syscall (netbsd-386-cgo), const IPPROTO_VRRP = 112 pkg syscall (netbsd-386-cgo), const IPV6_CHECKSUM = 26 pkg syscall (netbsd-386-cgo), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (netbsd-386-cgo), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (netbsd-386-cgo), const IPV6_DEFHLIM = 64 pkg syscall (netbsd-386-cgo), const IPV6_DONTFRAG = 62 pkg syscall (netbsd-386-cgo), const IPV6_DSTOPTS = 50 pkg syscall (netbsd-386-cgo), const IPV6_FAITH = 29 pkg syscall (netbsd-386-cgo), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (netbsd-386-cgo), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (netbsd-386-cgo), const IPV6_FRAGTTL = 120 pkg syscall (netbsd-386-cgo), const IPV6_HLIMDEC = 1 pkg syscall (netbsd-386-cgo), const IPV6_HOPLIMIT = 47 pkg syscall (netbsd-386-cgo), const IPV6_HOPOPTS = 49 pkg syscall (netbsd-386-cgo), const IPV6_IPSEC_POLICY = 28 pkg syscall (netbsd-386-cgo), const IPV6_JOIN_GROUP = 12 pkg syscall (netbsd-386-cgo), const IPV6_LEAVE_GROUP = 13 pkg syscall (netbsd-386-cgo), const IPV6_MAXHLIM = 255 pkg syscall (netbsd-386-cgo), const IPV6_MAXPACKET = 65535 pkg syscall (netbsd-386-cgo), const IPV6_MMTU = 1280 pkg syscall (netbsd-386-cgo), const IPV6_MULTICAST_HOPS = 10 pkg syscall (netbsd-386-cgo), const IPV6_MULTICAST_IF = 9 pkg syscall (netbsd-386-cgo), const IPV6_MULTICAST_LOOP = 11 pkg syscall (netbsd-386-cgo), const IPV6_NEXTHOP = 48 pkg syscall (netbsd-386-cgo), const IPV6_PATHMTU = 44 pkg syscall (netbsd-386-cgo), const IPV6_PKTINFO = 46 pkg syscall (netbsd-386-cgo), const IPV6_PORTRANGE = 14 pkg syscall (netbsd-386-cgo), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (netbsd-386-cgo), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (netbsd-386-cgo), const IPV6_PORTRANGE_LOW = 2 pkg syscall (netbsd-386-cgo), const IPV6_RECVDSTOPTS = 40 pkg syscall (netbsd-386-cgo), const IPV6_RECVHOPLIMIT = 37 pkg syscall (netbsd-386-cgo), const IPV6_RECVHOPOPTS = 39 pkg syscall (netbsd-386-cgo), const IPV6_RECVPATHMTU = 43 pkg syscall (netbsd-386-cgo), const IPV6_RECVPKTINFO = 36 pkg syscall (netbsd-386-cgo), const IPV6_RECVRTHDR = 38 pkg syscall (netbsd-386-cgo), const IPV6_RECVTCLASS = 57 pkg syscall (netbsd-386-cgo), const IPV6_RTHDR = 51 pkg syscall (netbsd-386-cgo), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (netbsd-386-cgo), const IPV6_RTHDR_LOOSE = 0 pkg syscall (netbsd-386-cgo), const IPV6_RTHDR_STRICT = 1 pkg syscall (netbsd-386-cgo), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (netbsd-386-cgo), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (netbsd-386-cgo), const IPV6_TCLASS = 61 pkg syscall (netbsd-386-cgo), const IPV6_UNICAST_HOPS = 4 pkg syscall (netbsd-386-cgo), const IPV6_USE_MIN_MTU = 42 pkg syscall (netbsd-386-cgo), const IPV6_V6ONLY = 27 pkg syscall (netbsd-386-cgo), const IPV6_VERSION = 96 pkg syscall (netbsd-386-cgo), const IPV6_VERSION_MASK = 240 pkg syscall (netbsd-386-cgo), const IP_ADD_MEMBERSHIP = 12 pkg syscall (netbsd-386-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (netbsd-386-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (netbsd-386-cgo), const IP_DF = 16384 pkg syscall (netbsd-386-cgo), const IP_DROP_MEMBERSHIP = 13 pkg syscall (netbsd-386-cgo), const IP_EF = 32768 pkg syscall (netbsd-386-cgo), const IP_ERRORMTU = 21 pkg syscall (netbsd-386-cgo), const IP_HDRINCL = 2 pkg syscall (netbsd-386-cgo), const IP_IPSEC_POLICY = 22 pkg syscall (netbsd-386-cgo), const IP_MAXPACKET = 65535 pkg syscall (netbsd-386-cgo), const IP_MAX_MEMBERSHIPS = 20 pkg syscall (netbsd-386-cgo), const IP_MF = 8192 pkg syscall (netbsd-386-cgo), const IP_MINFRAGSIZE = 69 pkg syscall (netbsd-386-cgo), const IP_MINTTL = 24 pkg syscall (netbsd-386-cgo), const IP_MSS = 576 pkg syscall (netbsd-386-cgo), const IP_MULTICAST_IF = 9 pkg syscall (netbsd-386-cgo), const IP_MULTICAST_LOOP = 11 pkg syscall (netbsd-386-cgo), const IP_MULTICAST_TTL = 10 pkg syscall (netbsd-386-cgo), const IP_OFFMASK = 8191 pkg syscall (netbsd-386-cgo), const IP_OPTIONS = 1 pkg syscall (netbsd-386-cgo), const IP_PORTRANGE = 19 pkg syscall (netbsd-386-cgo), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (netbsd-386-cgo), const IP_PORTRANGE_HIGH = 1 pkg syscall (netbsd-386-cgo), const IP_PORTRANGE_LOW = 2 pkg syscall (netbsd-386-cgo), const IP_RECVDSTADDR = 7 pkg syscall (netbsd-386-cgo), const IP_RECVIF = 20 pkg syscall (netbsd-386-cgo), const IP_RECVOPTS = 5 pkg syscall (netbsd-386-cgo), const IP_RECVRETOPTS = 6 pkg syscall (netbsd-386-cgo), const IP_RECVTTL = 23 pkg syscall (netbsd-386-cgo), const IP_RETOPTS = 8 pkg syscall (netbsd-386-cgo), const IP_RF = 32768 pkg syscall (netbsd-386-cgo), const IP_TOS = 3 pkg syscall (netbsd-386-cgo), const IP_TTL = 4 pkg syscall (netbsd-386-cgo), const ISIG = 128 pkg syscall (netbsd-386-cgo), const ISTRIP = 32 pkg syscall (netbsd-386-cgo), const IXANY = 2048 pkg syscall (netbsd-386-cgo), const IXOFF = 1024 pkg syscall (netbsd-386-cgo), const IXON = 512 pkg syscall (netbsd-386-cgo), const ImplementsGetwd = false pkg syscall (netbsd-386-cgo), const LOCK_EX = 2 pkg syscall (netbsd-386-cgo), const LOCK_NB = 4 pkg syscall (netbsd-386-cgo), const LOCK_SH = 1 pkg syscall (netbsd-386-cgo), const LOCK_UN = 8 pkg syscall (netbsd-386-cgo), const MSG_BCAST = 256 pkg syscall (netbsd-386-cgo), const MSG_CMSG_CLOEXEC = 2048 pkg syscall (netbsd-386-cgo), const MSG_CONTROLMBUF = 33554432 pkg syscall (netbsd-386-cgo), const MSG_CTRUNC = 32 pkg syscall (netbsd-386-cgo), const MSG_DONTROUTE = 4 pkg syscall (netbsd-386-cgo), const MSG_DONTWAIT = 128 pkg syscall (netbsd-386-cgo), const MSG_EOR = 8 pkg syscall (netbsd-386-cgo), const MSG_IOVUSRSPACE = 67108864 pkg syscall (netbsd-386-cgo), const MSG_LENUSRSPACE = 134217728 pkg syscall (netbsd-386-cgo), const MSG_MCAST = 512 pkg syscall (netbsd-386-cgo), const MSG_NAMEMBUF = 16777216 pkg syscall (netbsd-386-cgo), const MSG_NBIO = 4096 pkg syscall (netbsd-386-cgo), const MSG_NOSIGNAL = 1024 pkg syscall (netbsd-386-cgo), const MSG_OOB = 1 pkg syscall (netbsd-386-cgo), const MSG_PEEK = 2 pkg syscall (netbsd-386-cgo), const MSG_TRUNC = 16 pkg syscall (netbsd-386-cgo), const MSG_USERFLAGS = 16777215 pkg syscall (netbsd-386-cgo), const MSG_WAITALL = 64 pkg syscall (netbsd-386-cgo), const NAME_MAX = 511 pkg syscall (netbsd-386-cgo), const NET_RT_DUMP = 1 pkg syscall (netbsd-386-cgo), const NET_RT_FLAGS = 2 pkg syscall (netbsd-386-cgo), const NET_RT_IFLIST = 5 pkg syscall (netbsd-386-cgo), const NET_RT_MAXID = 6 pkg syscall (netbsd-386-cgo), const NET_RT_OIFLIST = 4 pkg syscall (netbsd-386-cgo), const NET_RT_OOIFLIST = 3 pkg syscall (netbsd-386-cgo), const NOFLSH = 2147483648 pkg syscall (netbsd-386-cgo), const NOTE_ATTRIB = 8 pkg syscall (netbsd-386-cgo), const NOTE_CHILD = 4 pkg syscall (netbsd-386-cgo), const NOTE_DELETE = 1 pkg syscall (netbsd-386-cgo), const NOTE_EXEC = 536870912 pkg syscall (netbsd-386-cgo), const NOTE_EXIT = 2147483648 pkg syscall (netbsd-386-cgo), const NOTE_EXTEND = 4 pkg syscall (netbsd-386-cgo), const NOTE_FORK = 1073741824 pkg syscall (netbsd-386-cgo), const NOTE_LINK = 16 pkg syscall (netbsd-386-cgo), const NOTE_LOWAT = 1 pkg syscall (netbsd-386-cgo), const NOTE_PCTRLMASK = 4026531840 pkg syscall (netbsd-386-cgo), const NOTE_PDATAMASK = 1048575 pkg syscall (netbsd-386-cgo), const NOTE_RENAME = 32 pkg syscall (netbsd-386-cgo), const NOTE_REVOKE = 64 pkg syscall (netbsd-386-cgo), const NOTE_TRACK = 1 pkg syscall (netbsd-386-cgo), const NOTE_TRACKERR = 2 pkg syscall (netbsd-386-cgo), const NOTE_WRITE = 2 pkg syscall (netbsd-386-cgo), const OCRNL = 16 pkg syscall (netbsd-386-cgo), const OFIOGETBMAP = 3221513850 pkg syscall (netbsd-386-cgo), const ONLCR = 2 pkg syscall (netbsd-386-cgo), const ONLRET = 64 pkg syscall (netbsd-386-cgo), const ONOCR = 32 pkg syscall (netbsd-386-cgo), const ONOEOT = 8 pkg syscall (netbsd-386-cgo), const OPOST = 1 pkg syscall (netbsd-386-cgo), const O_ACCMODE = 3 pkg syscall (netbsd-386-cgo), const O_ALT_IO = 262144 pkg syscall (netbsd-386-cgo), const O_APPEND = 8 pkg syscall (netbsd-386-cgo), const O_ASYNC = 64 pkg syscall (netbsd-386-cgo), const O_CLOEXEC = 4194304 pkg syscall (netbsd-386-cgo), const O_CREAT = 512 pkg syscall (netbsd-386-cgo), const O_DIRECT = 524288 pkg syscall (netbsd-386-cgo), const O_DIRECTORY = 2097152 pkg syscall (netbsd-386-cgo), const O_DSYNC = 65536 pkg syscall (netbsd-386-cgo), const O_EXCL = 2048 pkg syscall (netbsd-386-cgo), const O_EXLOCK = 32 pkg syscall (netbsd-386-cgo), const O_FSYNC = 128 pkg syscall (netbsd-386-cgo), const O_NDELAY = 4 pkg syscall (netbsd-386-cgo), const O_NOCTTY = 32768 pkg syscall (netbsd-386-cgo), const O_NOFOLLOW = 256 pkg syscall (netbsd-386-cgo), const O_NONBLOCK = 4 pkg syscall (netbsd-386-cgo), const O_NOSIGPIPE = 16777216 pkg syscall (netbsd-386-cgo), const O_RSYNC = 131072 pkg syscall (netbsd-386-cgo), const O_SHLOCK = 16 pkg syscall (netbsd-386-cgo), const O_SYNC = 128 pkg syscall (netbsd-386-cgo), const O_TRUNC = 1024 pkg syscall (netbsd-386-cgo), const PARENB = 4096 pkg syscall (netbsd-386-cgo), const PARMRK = 8 pkg syscall (netbsd-386-cgo), const PARODD = 8192 pkg syscall (netbsd-386-cgo), const PENDIN = 536870912 pkg syscall (netbsd-386-cgo), const PRI_IOFLUSH = 124 pkg syscall (netbsd-386-cgo), const PTRACE_CONT = 7 pkg syscall (netbsd-386-cgo), const PTRACE_KILL = 8 pkg syscall (netbsd-386-cgo), const PTRACE_TRACEME = 0 pkg syscall (netbsd-386-cgo), const RLIMIT_AS = 10 pkg syscall (netbsd-386-cgo), const RLIMIT_CORE = 4 pkg syscall (netbsd-386-cgo), const RLIMIT_CPU = 0 pkg syscall (netbsd-386-cgo), const RLIMIT_DATA = 2 pkg syscall (netbsd-386-cgo), const RLIMIT_FSIZE = 1 pkg syscall (netbsd-386-cgo), const RLIMIT_NOFILE = 8 pkg syscall (netbsd-386-cgo), const RLIMIT_STACK = 3 pkg syscall (netbsd-386-cgo), const RLIM_INFINITY = 9223372036854775807 pkg syscall (netbsd-386-cgo), const RTAX_AUTHOR = 6 pkg syscall (netbsd-386-cgo), const RTAX_BRD = 7 pkg syscall (netbsd-386-cgo), const RTAX_DST = 0 pkg syscall (netbsd-386-cgo), const RTAX_GATEWAY = 1 pkg syscall (netbsd-386-cgo), const RTAX_GENMASK = 3 pkg syscall (netbsd-386-cgo), const RTAX_IFA = 5 pkg syscall (netbsd-386-cgo), const RTAX_IFP = 4 pkg syscall (netbsd-386-cgo), const RTAX_MAX = 9 pkg syscall (netbsd-386-cgo), const RTAX_NETMASK = 2 pkg syscall (netbsd-386-cgo), const RTAX_TAG = 8 pkg syscall (netbsd-386-cgo), const RTA_AUTHOR = 64 pkg syscall (netbsd-386-cgo), const RTA_BRD = 128 pkg syscall (netbsd-386-cgo), const RTA_DST = 1 pkg syscall (netbsd-386-cgo), const RTA_GATEWAY = 2 pkg syscall (netbsd-386-cgo), const RTA_GENMASK = 8 pkg syscall (netbsd-386-cgo), const RTA_IFA = 32 pkg syscall (netbsd-386-cgo), const RTA_IFP = 16 pkg syscall (netbsd-386-cgo), const RTA_NETMASK = 4 pkg syscall (netbsd-386-cgo), const RTA_TAG = 256 pkg syscall (netbsd-386-cgo), const RTF_ANNOUNCE = 131072 pkg syscall (netbsd-386-cgo), const RTF_BLACKHOLE = 4096 pkg syscall (netbsd-386-cgo), const RTF_CLONED = 8192 pkg syscall (netbsd-386-cgo), const RTF_CLONING = 256 pkg syscall (netbsd-386-cgo), const RTF_DONE = 64 pkg syscall (netbsd-386-cgo), const RTF_DYNAMIC = 16 pkg syscall (netbsd-386-cgo), const RTF_GATEWAY = 2 pkg syscall (netbsd-386-cgo), const RTF_HOST = 4 pkg syscall (netbsd-386-cgo), const RTF_LLINFO = 1024 pkg syscall (netbsd-386-cgo), const RTF_MASK = 128 pkg syscall (netbsd-386-cgo), const RTF_MODIFIED = 32 pkg syscall (netbsd-386-cgo), const RTF_PROTO1 = 32768 pkg syscall (netbsd-386-cgo), const RTF_PROTO2 = 16384 pkg syscall (netbsd-386-cgo), const RTF_REJECT = 8 pkg syscall (netbsd-386-cgo), const RTF_SRC = 65536 pkg syscall (netbsd-386-cgo), const RTF_STATIC = 2048 pkg syscall (netbsd-386-cgo), const RTF_UP = 1 pkg syscall (netbsd-386-cgo), const RTF_XRESOLVE = 512 pkg syscall (netbsd-386-cgo), const RTM_ADD = 1 pkg syscall (netbsd-386-cgo), const RTM_CHANGE = 3 pkg syscall (netbsd-386-cgo), const RTM_CHGADDR = 21 pkg syscall (netbsd-386-cgo), const RTM_DELADDR = 13 pkg syscall (netbsd-386-cgo), const RTM_DELETE = 2 pkg syscall (netbsd-386-cgo), const RTM_GET = 4 pkg syscall (netbsd-386-cgo), const RTM_IEEE80211 = 17 pkg syscall (netbsd-386-cgo), const RTM_IFANNOUNCE = 16 pkg syscall (netbsd-386-cgo), const RTM_IFINFO = 20 pkg syscall (netbsd-386-cgo), const RTM_LLINFO_UPD = 19 pkg syscall (netbsd-386-cgo), const RTM_LOCK = 8 pkg syscall (netbsd-386-cgo), const RTM_LOSING = 5 pkg syscall (netbsd-386-cgo), const RTM_MISS = 7 pkg syscall (netbsd-386-cgo), const RTM_NEWADDR = 12 pkg syscall (netbsd-386-cgo), const RTM_OIFINFO = 15 pkg syscall (netbsd-386-cgo), const RTM_OLDADD = 9 pkg syscall (netbsd-386-cgo), const RTM_OLDDEL = 10 pkg syscall (netbsd-386-cgo), const RTM_OOIFINFO = 14 pkg syscall (netbsd-386-cgo), const RTM_REDIRECT = 6 pkg syscall (netbsd-386-cgo), const RTM_RESOLVE = 11 pkg syscall (netbsd-386-cgo), const RTM_RTTUNIT = 1000000 pkg syscall (netbsd-386-cgo), const RTM_SETGATE = 18 pkg syscall (netbsd-386-cgo), const RTM_VERSION = 4 pkg syscall (netbsd-386-cgo), const RTV_EXPIRE = 4 pkg syscall (netbsd-386-cgo), const RTV_HOPCOUNT = 2 pkg syscall (netbsd-386-cgo), const RTV_MTU = 1 pkg syscall (netbsd-386-cgo), const RTV_RPIPE = 8 pkg syscall (netbsd-386-cgo), const RTV_RTT = 64 pkg syscall (netbsd-386-cgo), const RTV_RTTVAR = 128 pkg syscall (netbsd-386-cgo), const RTV_SPIPE = 16 pkg syscall (netbsd-386-cgo), const RTV_SSTHRESH = 32 pkg syscall (netbsd-386-cgo), const RUSAGE_CHILDREN = -1 pkg syscall (netbsd-386-cgo), const RUSAGE_SELF = 0 pkg syscall (netbsd-386-cgo), const SCM_CREDS = 4 pkg syscall (netbsd-386-cgo), const SCM_RIGHTS = 1 pkg syscall (netbsd-386-cgo), const SCM_TIMESTAMP = 8 pkg syscall (netbsd-386-cgo), const SIGBUS = 10 pkg syscall (netbsd-386-cgo), const SIGCHLD = 20 pkg syscall (netbsd-386-cgo), const SIGCONT = 19 pkg syscall (netbsd-386-cgo), const SIGEMT = 7 pkg syscall (netbsd-386-cgo), const SIGINFO = 29 pkg syscall (netbsd-386-cgo), const SIGIO = 23 pkg syscall (netbsd-386-cgo), const SIGIOT = 6 pkg syscall (netbsd-386-cgo), const SIGPROF = 27 pkg syscall (netbsd-386-cgo), const SIGPWR = 32 pkg syscall (netbsd-386-cgo), const SIGSTOP = 17 pkg syscall (netbsd-386-cgo), const SIGSYS = 12 pkg syscall (netbsd-386-cgo), const SIGTSTP = 18 pkg syscall (netbsd-386-cgo), const SIGTTIN = 21 pkg syscall (netbsd-386-cgo), const SIGTTOU = 22 pkg syscall (netbsd-386-cgo), const SIGURG = 16 pkg syscall (netbsd-386-cgo), const SIGUSR1 = 30 pkg syscall (netbsd-386-cgo), const SIGUSR2 = 31 pkg syscall (netbsd-386-cgo), const SIGVTALRM = 26 pkg syscall (netbsd-386-cgo), const SIGWINCH = 28 pkg syscall (netbsd-386-cgo), const SIGXCPU = 24 pkg syscall (netbsd-386-cgo), const SIGXFSZ = 25 pkg syscall (netbsd-386-cgo), const SIOCADDMULTI = 2156947761 pkg syscall (netbsd-386-cgo), const SIOCADDRT = 2150658570 pkg syscall (netbsd-386-cgo), const SIOCAIFADDR = 2151704858 pkg syscall (netbsd-386-cgo), const SIOCALIFADDR = 2165860636 pkg syscall (netbsd-386-cgo), const SIOCATMARK = 1074033415 pkg syscall (netbsd-386-cgo), const SIOCDELMULTI = 2156947762 pkg syscall (netbsd-386-cgo), const SIOCDELRT = 2150658571 pkg syscall (netbsd-386-cgo), const SIOCDIFADDR = 2156947737 pkg syscall (netbsd-386-cgo), const SIOCDIFPHYADDR = 2156947785 pkg syscall (netbsd-386-cgo), const SIOCDLIFADDR = 2165860638 pkg syscall (netbsd-386-cgo), const SIOCGDRVSPEC = 3223087483 pkg syscall (netbsd-386-cgo), const SIOCGETPFSYNC = 3230689784 pkg syscall (netbsd-386-cgo), const SIOCGETSGCNT = 3222566196 pkg syscall (netbsd-386-cgo), const SIOCGETVIFCNT = 3222566195 pkg syscall (netbsd-386-cgo), const SIOCGHIWAT = 1074033409 pkg syscall (netbsd-386-cgo), const SIOCGIFADDR = 3230689569 pkg syscall (netbsd-386-cgo), const SIOCGIFADDRPREF = 3230951712 pkg syscall (netbsd-386-cgo), const SIOCGIFALIAS = 3225446683 pkg syscall (netbsd-386-cgo), const SIOCGIFBRDADDR = 3230689571 pkg syscall (netbsd-386-cgo), const SIOCGIFCAP = 3223349622 pkg syscall (netbsd-386-cgo), const SIOCGIFCONF = 3221776678 pkg syscall (netbsd-386-cgo), const SIOCGIFDATA = 3230951813 pkg syscall (netbsd-386-cgo), const SIOCGIFDLT = 3230689655 pkg syscall (netbsd-386-cgo), const SIOCGIFDSTADDR = 3230689570 pkg syscall (netbsd-386-cgo), const SIOCGIFFLAGS = 3230689553 pkg syscall (netbsd-386-cgo), const SIOCGIFGENERIC = 3230689594 pkg syscall (netbsd-386-cgo), const SIOCGIFMEDIA = 3223873846 pkg syscall (netbsd-386-cgo), const SIOCGIFMETRIC = 3230689559 pkg syscall (netbsd-386-cgo), const SIOCGIFMTU = 3230689662 pkg syscall (netbsd-386-cgo), const SIOCGIFNETMASK = 3230689573 pkg syscall (netbsd-386-cgo), const SIOCGIFPDSTADDR = 3230689608 pkg syscall (netbsd-386-cgo), const SIOCGIFPSRCADDR = 3230689607 pkg syscall (netbsd-386-cgo), const SIOCGLIFADDR = 3239602461 pkg syscall (netbsd-386-cgo), const SIOCGLIFPHYADDR = 3239602507 pkg syscall (netbsd-386-cgo), const SIOCGLINKSTR = 3223087495 pkg syscall (netbsd-386-cgo), const SIOCGLOWAT = 1074033411 pkg syscall (netbsd-386-cgo), const SIOCGPGRP = 1074033417 pkg syscall (netbsd-386-cgo), const SIOCGVH = 3230689667 pkg syscall (netbsd-386-cgo), const SIOCIFCREATE = 2156947834 pkg syscall (netbsd-386-cgo), const SIOCIFDESTROY = 2156947833 pkg syscall (netbsd-386-cgo), const SIOCIFGCLONERS = 3222038904 pkg syscall (netbsd-386-cgo), const SIOCINITIFADDR = 3225708932 pkg syscall (netbsd-386-cgo), const SIOCSDRVSPEC = 2149345659 pkg syscall (netbsd-386-cgo), const SIOCSETPFSYNC = 2156947959 pkg syscall (netbsd-386-cgo), const SIOCSHIWAT = 2147775232 pkg syscall (netbsd-386-cgo), const SIOCSIFADDR = 2156947724 pkg syscall (netbsd-386-cgo), const SIOCSIFADDRPREF = 2157209887 pkg syscall (netbsd-386-cgo), const SIOCSIFBRDADDR = 2156947731 pkg syscall (netbsd-386-cgo), const SIOCSIFCAP = 2149607797 pkg syscall (netbsd-386-cgo), const SIOCSIFDSTADDR = 2156947726 pkg syscall (netbsd-386-cgo), const SIOCSIFFLAGS = 2156947728 pkg syscall (netbsd-386-cgo), const SIOCSIFGENERIC = 2156947769 pkg syscall (netbsd-386-cgo), const SIOCSIFMEDIA = 3230689589 pkg syscall (netbsd-386-cgo), const SIOCSIFMETRIC = 2156947736 pkg syscall (netbsd-386-cgo), const SIOCSIFMTU = 2156947839 pkg syscall (netbsd-386-cgo), const SIOCSIFNETMASK = 2156947734 pkg syscall (netbsd-386-cgo), const SIOCSIFPHYADDR = 2151704902 pkg syscall (netbsd-386-cgo), const SIOCSLIFPHYADDR = 2165860682 pkg syscall (netbsd-386-cgo), const SIOCSLINKSTR = 2149345672 pkg syscall (netbsd-386-cgo), const SIOCSLOWAT = 2147775234 pkg syscall (netbsd-386-cgo), const SIOCSPGRP = 2147775240 pkg syscall (netbsd-386-cgo), const SIOCSVH = 3230689666 pkg syscall (netbsd-386-cgo), const SIOCZIFDATA = 3230951814 pkg syscall (netbsd-386-cgo), const SOCK_CLOEXEC = 268435456 pkg syscall (netbsd-386-cgo), const SOCK_FLAGS_MASK = 4026531840 pkg syscall (netbsd-386-cgo), const SOCK_NONBLOCK = 536870912 pkg syscall (netbsd-386-cgo), const SOCK_NOSIGPIPE = 1073741824 pkg syscall (netbsd-386-cgo), const SOCK_RDM = 4 pkg syscall (netbsd-386-cgo), const SOL_SOCKET = 65535 pkg syscall (netbsd-386-cgo), const SOMAXCONN = 128 pkg syscall (netbsd-386-cgo), const SO_ACCEPTCONN = 2 pkg syscall (netbsd-386-cgo), const SO_ACCEPTFILTER = 4096 pkg syscall (netbsd-386-cgo), const SO_BROADCAST = 32 pkg syscall (netbsd-386-cgo), const SO_DEBUG = 1 pkg syscall (netbsd-386-cgo), const SO_DONTROUTE = 16 pkg syscall (netbsd-386-cgo), const SO_ERROR = 4103 pkg syscall (netbsd-386-cgo), const SO_KEEPALIVE = 8 pkg syscall (netbsd-386-cgo), const SO_LINGER = 128 pkg syscall (netbsd-386-cgo), const SO_NOHEADER = 4106 pkg syscall (netbsd-386-cgo), const SO_NOSIGPIPE = 2048 pkg syscall (netbsd-386-cgo), const SO_OOBINLINE = 256 pkg syscall (netbsd-386-cgo), const SO_OVERFLOWED = 4105 pkg syscall (netbsd-386-cgo), const SO_RCVBUF = 4098 pkg syscall (netbsd-386-cgo), const SO_RCVLOWAT = 4100 pkg syscall (netbsd-386-cgo), const SO_RCVTIMEO = 4108 pkg syscall (netbsd-386-cgo), const SO_REUSEADDR = 4 pkg syscall (netbsd-386-cgo), const SO_REUSEPORT = 512 pkg syscall (netbsd-386-cgo), const SO_SNDBUF = 4097 pkg syscall (netbsd-386-cgo), const SO_SNDLOWAT = 4099 pkg syscall (netbsd-386-cgo), const SO_SNDTIMEO = 4107 pkg syscall (netbsd-386-cgo), const SO_TIMESTAMP = 8192 pkg syscall (netbsd-386-cgo), const SO_TYPE = 4104 pkg syscall (netbsd-386-cgo), const SO_USELOOPBACK = 64 pkg syscall (netbsd-386-cgo), const SYSCTL_VERSION = 16777216 pkg syscall (netbsd-386-cgo), const SYSCTL_VERS_0 = 0 pkg syscall (netbsd-386-cgo), const SYSCTL_VERS_1 = 16777216 pkg syscall (netbsd-386-cgo), const SYSCTL_VERS_MASK = 4278190080 pkg syscall (netbsd-386-cgo), const SYS_ACCEPT = 30 pkg syscall (netbsd-386-cgo), const SYS_ACCESS = 33 pkg syscall (netbsd-386-cgo), const SYS_ACCT = 51 pkg syscall (netbsd-386-cgo), const SYS_ADJTIME = 421 pkg syscall (netbsd-386-cgo), const SYS_BIND = 104 pkg syscall (netbsd-386-cgo), const SYS_BREAK = 17 pkg syscall (netbsd-386-cgo), const SYS_CHDIR = 12 pkg syscall (netbsd-386-cgo), const SYS_CHFLAGS = 34 pkg syscall (netbsd-386-cgo), const SYS_CHMOD = 15 pkg syscall (netbsd-386-cgo), const SYS_CHOWN = 16 pkg syscall (netbsd-386-cgo), const SYS_CHROOT = 61 pkg syscall (netbsd-386-cgo), const SYS_CLOCK_GETRES = 429 pkg syscall (netbsd-386-cgo), const SYS_CLOCK_GETTIME = 427 pkg syscall (netbsd-386-cgo), const SYS_CLOCK_SETTIME = 428 pkg syscall (netbsd-386-cgo), const SYS_CLOSE = 6 pkg syscall (netbsd-386-cgo), const SYS_CONNECT = 98 pkg syscall (netbsd-386-cgo), const SYS_DUP = 41 pkg syscall (netbsd-386-cgo), const SYS_DUP2 = 90 pkg syscall (netbsd-386-cgo), const SYS_DUP3 = 454 pkg syscall (netbsd-386-cgo), const SYS_EXECVE = 59 pkg syscall (netbsd-386-cgo), const SYS_EXIT = 1 pkg syscall (netbsd-386-cgo), const SYS_EXTATTRCTL = 360 pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_DELETE_FD = 366 pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_DELETE_FILE = 363 pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_DELETE_LINK = 369 pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_GET_FD = 365 pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_GET_FILE = 362 pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_GET_LINK = 368 pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_LIST_FD = 370 pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_LIST_FILE = 371 pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_LIST_LINK = 372 pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_SET_FD = 364 pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_SET_FILE = 361 pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_SET_LINK = 367 pkg syscall (netbsd-386-cgo), const SYS_FACCESSAT = 462 pkg syscall (netbsd-386-cgo), const SYS_FCHDIR = 13 pkg syscall (netbsd-386-cgo), const SYS_FCHFLAGS = 35 pkg syscall (netbsd-386-cgo), const SYS_FCHMOD = 124 pkg syscall (netbsd-386-cgo), const SYS_FCHMODAT = 463 pkg syscall (netbsd-386-cgo), const SYS_FCHOWN = 123 pkg syscall (netbsd-386-cgo), const SYS_FCHOWNAT = 464 pkg syscall (netbsd-386-cgo), const SYS_FCHROOT = 297 pkg syscall (netbsd-386-cgo), const SYS_FCNTL = 92 pkg syscall (netbsd-386-cgo), const SYS_FDATASYNC = 241 pkg syscall (netbsd-386-cgo), const SYS_FEXECVE = 465 pkg syscall (netbsd-386-cgo), const SYS_FGETXATTR = 380 pkg syscall (netbsd-386-cgo), const SYS_FHSTAT = 451 pkg syscall (netbsd-386-cgo), const SYS_FKTRACE = 288 pkg syscall (netbsd-386-cgo), const SYS_FLISTXATTR = 383 pkg syscall (netbsd-386-cgo), const SYS_FLOCK = 131 pkg syscall (netbsd-386-cgo), const SYS_FORK = 2 pkg syscall (netbsd-386-cgo), const SYS_FPATHCONF = 192 pkg syscall (netbsd-386-cgo), const SYS_FREMOVEXATTR = 386 pkg syscall (netbsd-386-cgo), const SYS_FSETXATTR = 377 pkg syscall (netbsd-386-cgo), const SYS_FSTAT = 440 pkg syscall (netbsd-386-cgo), const SYS_FSTATAT = 466 pkg syscall (netbsd-386-cgo), const SYS_FSTATVFS1 = 358 pkg syscall (netbsd-386-cgo), const SYS_FSYNC = 95 pkg syscall (netbsd-386-cgo), const SYS_FSYNC_RANGE = 354 pkg syscall (netbsd-386-cgo), const SYS_FTRUNCATE = 201 pkg syscall (netbsd-386-cgo), const SYS_FUTIMENS = 472 pkg syscall (netbsd-386-cgo), const SYS_FUTIMES = 423 pkg syscall (netbsd-386-cgo), const SYS_GETCONTEXT = 307 pkg syscall (netbsd-386-cgo), const SYS_GETDENTS = 390 pkg syscall (netbsd-386-cgo), const SYS_GETEGID = 43 pkg syscall (netbsd-386-cgo), const SYS_GETEUID = 25 pkg syscall (netbsd-386-cgo), const SYS_GETFH = 395 pkg syscall (netbsd-386-cgo), const SYS_GETGID = 47 pkg syscall (netbsd-386-cgo), const SYS_GETGROUPS = 79 pkg syscall (netbsd-386-cgo), const SYS_GETITIMER = 426 pkg syscall (netbsd-386-cgo), const SYS_GETPEERNAME = 31 pkg syscall (netbsd-386-cgo), const SYS_GETPGID = 207 pkg syscall (netbsd-386-cgo), const SYS_GETPGRP = 81 pkg syscall (netbsd-386-cgo), const SYS_GETPID = 20 pkg syscall (netbsd-386-cgo), const SYS_GETPPID = 39 pkg syscall (netbsd-386-cgo), const SYS_GETPRIORITY = 100 pkg syscall (netbsd-386-cgo), const SYS_GETRLIMIT = 194 pkg syscall (netbsd-386-cgo), const SYS_GETRUSAGE = 445 pkg syscall (netbsd-386-cgo), const SYS_GETSID = 286 pkg syscall (netbsd-386-cgo), const SYS_GETSOCKNAME = 32 pkg syscall (netbsd-386-cgo), const SYS_GETSOCKOPT = 118 pkg syscall (netbsd-386-cgo), const SYS_GETTIMEOFDAY = 418 pkg syscall (netbsd-386-cgo), const SYS_GETUID = 24 pkg syscall (netbsd-386-cgo), const SYS_GETVFSSTAT = 356 pkg syscall (netbsd-386-cgo), const SYS_GETXATTR = 378 pkg syscall (netbsd-386-cgo), const SYS_IOCTL = 54 pkg syscall (netbsd-386-cgo), const SYS_ISSETUGID = 305 pkg syscall (netbsd-386-cgo), const SYS_KEVENT = 435 pkg syscall (netbsd-386-cgo), const SYS_KILL = 37 pkg syscall (netbsd-386-cgo), const SYS_KQUEUE = 344 pkg syscall (netbsd-386-cgo), const SYS_KQUEUE1 = 455 pkg syscall (netbsd-386-cgo), const SYS_KTRACE = 45 pkg syscall (netbsd-386-cgo), const SYS_LCHFLAGS = 304 pkg syscall (netbsd-386-cgo), const SYS_LCHMOD = 274 pkg syscall (netbsd-386-cgo), const SYS_LCHOWN = 275 pkg syscall (netbsd-386-cgo), const SYS_LGETXATTR = 379 pkg syscall (netbsd-386-cgo), const SYS_LINK = 9 pkg syscall (netbsd-386-cgo), const SYS_LINKAT = 457 pkg syscall (netbsd-386-cgo), const SYS_LISTEN = 106 pkg syscall (netbsd-386-cgo), const SYS_LISTXATTR = 381 pkg syscall (netbsd-386-cgo), const SYS_LLISTXATTR = 382 pkg syscall (netbsd-386-cgo), const SYS_LREMOVEXATTR = 385 pkg syscall (netbsd-386-cgo), const SYS_LSEEK = 199 pkg syscall (netbsd-386-cgo), const SYS_LSETXATTR = 376 pkg syscall (netbsd-386-cgo), const SYS_LSTAT = 441 pkg syscall (netbsd-386-cgo), const SYS_LUTIMES = 424 pkg syscall (netbsd-386-cgo), const SYS_MADVISE = 75 pkg syscall (netbsd-386-cgo), const SYS_MINCORE = 78 pkg syscall (netbsd-386-cgo), const SYS_MINHERIT = 273 pkg syscall (netbsd-386-cgo), const SYS_MKDIR = 136 pkg syscall (netbsd-386-cgo), const SYS_MKDIRAT = 461 pkg syscall (netbsd-386-cgo), const SYS_MKFIFO = 132 pkg syscall (netbsd-386-cgo), const SYS_MKFIFOAT = 459 pkg syscall (netbsd-386-cgo), const SYS_MKNOD = 450 pkg syscall (netbsd-386-cgo), const SYS_MKNODAT = 460 pkg syscall (netbsd-386-cgo), const SYS_MLOCK = 203 pkg syscall (netbsd-386-cgo), const SYS_MLOCKALL = 242 pkg syscall (netbsd-386-cgo), const SYS_MMAP = 197 pkg syscall (netbsd-386-cgo), const SYS_MODCTL = 246 pkg syscall (netbsd-386-cgo), const SYS_MOUNT = 410 pkg syscall (netbsd-386-cgo), const SYS_MPROTECT = 74 pkg syscall (netbsd-386-cgo), const SYS_MREMAP = 411 pkg syscall (netbsd-386-cgo), const SYS_MSGCTL = 444 pkg syscall (netbsd-386-cgo), const SYS_MSGGET = 225 pkg syscall (netbsd-386-cgo), const SYS_MSGRCV = 227 pkg syscall (netbsd-386-cgo), const SYS_MSGSND = 226 pkg syscall (netbsd-386-cgo), const SYS_MUNLOCK = 204 pkg syscall (netbsd-386-cgo), const SYS_MUNLOCKALL = 243 pkg syscall (netbsd-386-cgo), const SYS_MUNMAP = 73 pkg syscall (netbsd-386-cgo), const SYS_NANOSLEEP = 430 pkg syscall (netbsd-386-cgo), const SYS_NTP_ADJTIME = 176 pkg syscall (netbsd-386-cgo), const SYS_NTP_GETTIME = 448 pkg syscall (netbsd-386-cgo), const SYS_OPEN = 5 pkg syscall (netbsd-386-cgo), const SYS_OPENAT = 468 pkg syscall (netbsd-386-cgo), const SYS_PACCEPT = 456 pkg syscall (netbsd-386-cgo), const SYS_PATHCONF = 191 pkg syscall (netbsd-386-cgo), const SYS_PIPE = 42 pkg syscall (netbsd-386-cgo), const SYS_PIPE2 = 453 pkg syscall (netbsd-386-cgo), const SYS_PMC_CONTROL = 342 pkg syscall (netbsd-386-cgo), const SYS_PMC_GET_INFO = 341 pkg syscall (netbsd-386-cgo), const SYS_POLL = 209 pkg syscall (netbsd-386-cgo), const SYS_POLLTS = 437 pkg syscall (netbsd-386-cgo), const SYS_POSIX_FADVISE = 416 pkg syscall (netbsd-386-cgo), const SYS_POSIX_SPAWN = 474 pkg syscall (netbsd-386-cgo), const SYS_PREAD = 173 pkg syscall (netbsd-386-cgo), const SYS_PREADV = 289 pkg syscall (netbsd-386-cgo), const SYS_PROFIL = 44 pkg syscall (netbsd-386-cgo), const SYS_PSELECT = 436 pkg syscall (netbsd-386-cgo), const SYS_PSET_ASSIGN = 414 pkg syscall (netbsd-386-cgo), const SYS_PSET_CREATE = 412 pkg syscall (netbsd-386-cgo), const SYS_PSET_DESTROY = 413 pkg syscall (netbsd-386-cgo), const SYS_PTRACE = 26 pkg syscall (netbsd-386-cgo), const SYS_PWRITE = 174 pkg syscall (netbsd-386-cgo), const SYS_PWRITEV = 290 pkg syscall (netbsd-386-cgo), const SYS_RASCTL = 343 pkg syscall (netbsd-386-cgo), const SYS_READ = 3 pkg syscall (netbsd-386-cgo), const SYS_READLINK = 58 pkg syscall (netbsd-386-cgo), const SYS_READLINKAT = 469 pkg syscall (netbsd-386-cgo), const SYS_READV = 120 pkg syscall (netbsd-386-cgo), const SYS_REBOOT = 208 pkg syscall (netbsd-386-cgo), const SYS_RECVFROM = 29 pkg syscall (netbsd-386-cgo), const SYS_RECVMMSG = 475 pkg syscall (netbsd-386-cgo), const SYS_RECVMSG = 27 pkg syscall (netbsd-386-cgo), const SYS_REMOVEXATTR = 384 pkg syscall (netbsd-386-cgo), const SYS_RENAME = 128 pkg syscall (netbsd-386-cgo), const SYS_RENAMEAT = 458 pkg syscall (netbsd-386-cgo), const SYS_REVOKE = 56 pkg syscall (netbsd-386-cgo), const SYS_RMDIR = 137 pkg syscall (netbsd-386-cgo), const SYS_SBRK = 69 pkg syscall (netbsd-386-cgo), const SYS_SCHED_YIELD = 350 pkg syscall (netbsd-386-cgo), const SYS_SELECT = 417 pkg syscall (netbsd-386-cgo), const SYS_SEMCONFIG = 223 pkg syscall (netbsd-386-cgo), const SYS_SEMGET = 221 pkg syscall (netbsd-386-cgo), const SYS_SEMOP = 222 pkg syscall (netbsd-386-cgo), const SYS_SENDMMSG = 476 pkg syscall (netbsd-386-cgo), const SYS_SENDMSG = 28 pkg syscall (netbsd-386-cgo), const SYS_SENDTO = 133 pkg syscall (netbsd-386-cgo), const SYS_SETCONTEXT = 308 pkg syscall (netbsd-386-cgo), const SYS_SETEGID = 182 pkg syscall (netbsd-386-cgo), const SYS_SETEUID = 183 pkg syscall (netbsd-386-cgo), const SYS_SETGID = 181 pkg syscall (netbsd-386-cgo), const SYS_SETGROUPS = 80 pkg syscall (netbsd-386-cgo), const SYS_SETITIMER = 425 pkg syscall (netbsd-386-cgo), const SYS_SETPGID = 82 pkg syscall (netbsd-386-cgo), const SYS_SETPRIORITY = 96 pkg syscall (netbsd-386-cgo), const SYS_SETREGID = 127 pkg syscall (netbsd-386-cgo), const SYS_SETREUID = 126 pkg syscall (netbsd-386-cgo), const SYS_SETRLIMIT = 195 pkg syscall (netbsd-386-cgo), const SYS_SETSID = 147 pkg syscall (netbsd-386-cgo), const SYS_SETSOCKOPT = 105 pkg syscall (netbsd-386-cgo), const SYS_SETTIMEOFDAY = 419 pkg syscall (netbsd-386-cgo), const SYS_SETUID = 23 pkg syscall (netbsd-386-cgo), const SYS_SETXATTR = 375 pkg syscall (netbsd-386-cgo), const SYS_SHMAT = 228 pkg syscall (netbsd-386-cgo), const SYS_SHMCTL = 443 pkg syscall (netbsd-386-cgo), const SYS_SHMDT = 230 pkg syscall (netbsd-386-cgo), const SYS_SHMGET = 231 pkg syscall (netbsd-386-cgo), const SYS_SHUTDOWN = 134 pkg syscall (netbsd-386-cgo), const SYS_SIGQUEUEINFO = 245 pkg syscall (netbsd-386-cgo), const SYS_SOCKET = 394 pkg syscall (netbsd-386-cgo), const SYS_SOCKETPAIR = 135 pkg syscall (netbsd-386-cgo), const SYS_SSTK = 70 pkg syscall (netbsd-386-cgo), const SYS_STAT = 439 pkg syscall (netbsd-386-cgo), const SYS_STATVFS1 = 357 pkg syscall (netbsd-386-cgo), const SYS_SWAPCTL = 271 pkg syscall (netbsd-386-cgo), const SYS_SYMLINK = 57 pkg syscall (netbsd-386-cgo), const SYS_SYMLINKAT = 470 pkg syscall (netbsd-386-cgo), const SYS_SYNC = 36 pkg syscall (netbsd-386-cgo), const SYS_SYSARCH = 165 pkg syscall (netbsd-386-cgo), const SYS_TIMER_CREATE = 235 pkg syscall (netbsd-386-cgo), const SYS_TIMER_DELETE = 236 pkg syscall (netbsd-386-cgo), const SYS_TIMER_GETOVERRUN = 239 pkg syscall (netbsd-386-cgo), const SYS_TIMER_GETTIME = 447 pkg syscall (netbsd-386-cgo), const SYS_TIMER_SETTIME = 446 pkg syscall (netbsd-386-cgo), const SYS_TRUNCATE = 200 pkg syscall (netbsd-386-cgo), const SYS_UMASK = 60 pkg syscall (netbsd-386-cgo), const SYS_UNDELETE = 205 pkg syscall (netbsd-386-cgo), const SYS_UNLINK = 10 pkg syscall (netbsd-386-cgo), const SYS_UNLINKAT = 471 pkg syscall (netbsd-386-cgo), const SYS_UNMOUNT = 22 pkg syscall (netbsd-386-cgo), const SYS_UTIMENSAT = 467 pkg syscall (netbsd-386-cgo), const SYS_UTIMES = 420 pkg syscall (netbsd-386-cgo), const SYS_UTRACE = 306 pkg syscall (netbsd-386-cgo), const SYS_UUIDGEN = 355 pkg syscall (netbsd-386-cgo), const SYS_VADVISE = 72 pkg syscall (netbsd-386-cgo), const SYS_VFORK = 66 pkg syscall (netbsd-386-cgo), const SYS_WAIT4 = 449 pkg syscall (netbsd-386-cgo), const SYS_WRITE = 4 pkg syscall (netbsd-386-cgo), const SYS_WRITEV = 121 pkg syscall (netbsd-386-cgo), const SYS__LWP_CONTINUE = 314 pkg syscall (netbsd-386-cgo), const SYS__LWP_CREATE = 309 pkg syscall (netbsd-386-cgo), const SYS__LWP_CTL = 325 pkg syscall (netbsd-386-cgo), const SYS__LWP_DETACH = 319 pkg syscall (netbsd-386-cgo), const SYS__LWP_EXIT = 310 pkg syscall (netbsd-386-cgo), const SYS__LWP_GETNAME = 324 pkg syscall (netbsd-386-cgo), const SYS__LWP_GETPRIVATE = 316 pkg syscall (netbsd-386-cgo), const SYS__LWP_KILL = 318 pkg syscall (netbsd-386-cgo), const SYS__LWP_PARK = 434 pkg syscall (netbsd-386-cgo), const SYS__LWP_SELF = 311 pkg syscall (netbsd-386-cgo), const SYS__LWP_SETNAME = 323 pkg syscall (netbsd-386-cgo), const SYS__LWP_SETPRIVATE = 317 pkg syscall (netbsd-386-cgo), const SYS__LWP_SUSPEND = 313 pkg syscall (netbsd-386-cgo), const SYS__LWP_UNPARK = 321 pkg syscall (netbsd-386-cgo), const SYS__LWP_UNPARK_ALL = 322 pkg syscall (netbsd-386-cgo), const SYS__LWP_WAIT = 312 pkg syscall (netbsd-386-cgo), const SYS__LWP_WAKEUP = 315 pkg syscall (netbsd-386-cgo), const SYS__PSET_BIND = 415 pkg syscall (netbsd-386-cgo), const SYS__SCHED_GETAFFINITY = 349 pkg syscall (netbsd-386-cgo), const SYS__SCHED_GETPARAM = 347 pkg syscall (netbsd-386-cgo), const SYS__SCHED_SETAFFINITY = 348 pkg syscall (netbsd-386-cgo), const SYS__SCHED_SETPARAM = 346 pkg syscall (netbsd-386-cgo), const SYS___CLONE = 287 pkg syscall (netbsd-386-cgo), const SYS___GETCWD = 296 pkg syscall (netbsd-386-cgo), const SYS___GETLOGIN = 49 pkg syscall (netbsd-386-cgo), const SYS___POSIX_CHOWN = 283 pkg syscall (netbsd-386-cgo), const SYS___POSIX_FCHOWN = 284 pkg syscall (netbsd-386-cgo), const SYS___POSIX_LCHOWN = 285 pkg syscall (netbsd-386-cgo), const SYS___POSIX_RENAME = 270 pkg syscall (netbsd-386-cgo), const SYS___QUOTACTL = 473 pkg syscall (netbsd-386-cgo), const SYS___SEMCTL = 442 pkg syscall (netbsd-386-cgo), const SYS___SETLOGIN = 50 pkg syscall (netbsd-386-cgo), const SYS___SIGACTION_SIGTRAMP = 340 pkg syscall (netbsd-386-cgo), const SYS___SIGTIMEDWAIT = 431 pkg syscall (netbsd-386-cgo), const SYS___SYSCTL = 202 pkg syscall (netbsd-386-cgo), const S_ARCH1 = 65536 pkg syscall (netbsd-386-cgo), const S_ARCH2 = 131072 pkg syscall (netbsd-386-cgo), const S_BLKSIZE = 512 pkg syscall (netbsd-386-cgo), const S_IEXEC = 64 pkg syscall (netbsd-386-cgo), const S_IFMT = 61440 pkg syscall (netbsd-386-cgo), const S_IFWHT = 57344 pkg syscall (netbsd-386-cgo), const S_IREAD = 256 pkg syscall (netbsd-386-cgo), const S_IRGRP = 32 pkg syscall (netbsd-386-cgo), const S_IROTH = 4 pkg syscall (netbsd-386-cgo), const S_IRWXG = 56 pkg syscall (netbsd-386-cgo), const S_IRWXO = 7 pkg syscall (netbsd-386-cgo), const S_IRWXU = 448 pkg syscall (netbsd-386-cgo), const S_ISTXT = 512 pkg syscall (netbsd-386-cgo), const S_IWGRP = 16 pkg syscall (netbsd-386-cgo), const S_IWOTH = 2 pkg syscall (netbsd-386-cgo), const S_IWRITE = 128 pkg syscall (netbsd-386-cgo), const S_IXGRP = 8 pkg syscall (netbsd-386-cgo), const S_IXOTH = 1 pkg syscall (netbsd-386-cgo), const S_LOGIN_SET = 1 pkg syscall (netbsd-386-cgo), const SizeofBpfHdr = 20 pkg syscall (netbsd-386-cgo), const SizeofBpfInsn = 8 pkg syscall (netbsd-386-cgo), const SizeofBpfProgram = 8 pkg syscall (netbsd-386-cgo), const SizeofBpfStat = 128 pkg syscall (netbsd-386-cgo), const SizeofBpfVersion = 4 pkg syscall (netbsd-386-cgo), const SizeofCmsghdr = 12 pkg syscall (netbsd-386-cgo), const SizeofIPMreq = 8 pkg syscall (netbsd-386-cgo), const SizeofIPv6Mreq = 20 pkg syscall (netbsd-386-cgo), const SizeofIfAnnounceMsghdr = 24 pkg syscall (netbsd-386-cgo), const SizeofIfData = 132 pkg syscall (netbsd-386-cgo), const SizeofIfMsghdr = 152 pkg syscall (netbsd-386-cgo), const SizeofIfaMsghdr = 24 pkg syscall (netbsd-386-cgo), const SizeofInet6Pktinfo = 20 pkg syscall (netbsd-386-cgo), const SizeofLinger = 8 pkg syscall (netbsd-386-cgo), const SizeofMsghdr = 28 pkg syscall (netbsd-386-cgo), const SizeofRtMetrics = 80 pkg syscall (netbsd-386-cgo), const SizeofRtMsghdr = 120 pkg syscall (netbsd-386-cgo), const SizeofSockaddrAny = 108 pkg syscall (netbsd-386-cgo), const SizeofSockaddrDatalink = 20 pkg syscall (netbsd-386-cgo), const SizeofSockaddrInet4 = 16 pkg syscall (netbsd-386-cgo), const SizeofSockaddrInet6 = 28 pkg syscall (netbsd-386-cgo), const SizeofSockaddrUnix = 106 pkg syscall (netbsd-386-cgo), const TCIFLUSH = 1 pkg syscall (netbsd-386-cgo), const TCIOFLUSH = 3 pkg syscall (netbsd-386-cgo), const TCOFLUSH = 2 pkg syscall (netbsd-386-cgo), const TCP_CONGCTL = 32 pkg syscall (netbsd-386-cgo), const TCP_KEEPCNT = 6 pkg syscall (netbsd-386-cgo), const TCP_KEEPIDLE = 3 pkg syscall (netbsd-386-cgo), const TCP_KEEPINIT = 7 pkg syscall (netbsd-386-cgo), const TCP_KEEPINTVL = 5 pkg syscall (netbsd-386-cgo), const TCP_MAXBURST = 4 pkg syscall (netbsd-386-cgo), const TCP_MAXSEG = 2 pkg syscall (netbsd-386-cgo), const TCP_MAXWIN = 65535 pkg syscall (netbsd-386-cgo), const TCP_MAX_WINSHIFT = 14 pkg syscall (netbsd-386-cgo), const TCP_MD5SIG = 16 pkg syscall (netbsd-386-cgo), const TCP_MINMSS = 216 pkg syscall (netbsd-386-cgo), const TCP_MSS = 536 pkg syscall (netbsd-386-cgo), const TCSAFLUSH = 2 pkg syscall (netbsd-386-cgo), const TIOCCBRK = 536900730 pkg syscall (netbsd-386-cgo), const TIOCCDTR = 536900728 pkg syscall (netbsd-386-cgo), const TIOCCONS = 2147775586 pkg syscall (netbsd-386-cgo), const TIOCDCDTIMESTAMP = 1074558040 pkg syscall (netbsd-386-cgo), const TIOCDRAIN = 536900702 pkg syscall (netbsd-386-cgo), const TIOCEXCL = 536900621 pkg syscall (netbsd-386-cgo), const TIOCEXT = 2147775584 pkg syscall (netbsd-386-cgo), const TIOCFLAG_CDTRCTS = 16 pkg syscall (netbsd-386-cgo), const TIOCFLAG_CLOCAL = 2 pkg syscall (netbsd-386-cgo), const TIOCFLAG_CRTSCTS = 4 pkg syscall (netbsd-386-cgo), const TIOCFLAG_MDMBUF = 8 pkg syscall (netbsd-386-cgo), const TIOCFLAG_SOFTCAR = 1 pkg syscall (netbsd-386-cgo), const TIOCFLUSH = 2147775504 pkg syscall (netbsd-386-cgo), const TIOCGETA = 1076655123 pkg syscall (netbsd-386-cgo), const TIOCGETD = 1074033690 pkg syscall (netbsd-386-cgo), const TIOCGFLAGS = 1074033757 pkg syscall (netbsd-386-cgo), const TIOCGLINED = 1075868738 pkg syscall (netbsd-386-cgo), const TIOCGPGRP = 1074033783 pkg syscall (netbsd-386-cgo), const TIOCGQSIZE = 1074033793 pkg syscall (netbsd-386-cgo), const TIOCGRANTPT = 536900679 pkg syscall (netbsd-386-cgo), const TIOCGSID = 1074033763 pkg syscall (netbsd-386-cgo), const TIOCGSIZE = 1074295912 pkg syscall (netbsd-386-cgo), const TIOCGWINSZ = 1074295912 pkg syscall (netbsd-386-cgo), const TIOCMBIC = 2147775595 pkg syscall (netbsd-386-cgo), const TIOCMBIS = 2147775596 pkg syscall (netbsd-386-cgo), const TIOCMGET = 1074033770 pkg syscall (netbsd-386-cgo), const TIOCMSET = 2147775597 pkg syscall (netbsd-386-cgo), const TIOCM_CAR = 64 pkg syscall (netbsd-386-cgo), const TIOCM_CD = 64 pkg syscall (netbsd-386-cgo), const TIOCM_CTS = 32 pkg syscall (netbsd-386-cgo), const TIOCM_DSR = 256 pkg syscall (netbsd-386-cgo), const TIOCM_DTR = 2 pkg syscall (netbsd-386-cgo), const TIOCM_LE = 1 pkg syscall (netbsd-386-cgo), const TIOCM_RI = 128 pkg syscall (netbsd-386-cgo), const TIOCM_RNG = 128 pkg syscall (netbsd-386-cgo), const TIOCM_RTS = 4 pkg syscall (netbsd-386-cgo), const TIOCM_SR = 16 pkg syscall (netbsd-386-cgo), const TIOCM_ST = 8 pkg syscall (netbsd-386-cgo), const TIOCNOTTY = 536900721 pkg syscall (netbsd-386-cgo), const TIOCNXCL = 536900622 pkg syscall (netbsd-386-cgo), const TIOCOUTQ = 1074033779 pkg syscall (netbsd-386-cgo), const TIOCPKT = 2147775600 pkg syscall (netbsd-386-cgo), const TIOCPKT_DATA = 0 pkg syscall (netbsd-386-cgo), const TIOCPKT_DOSTOP = 32 pkg syscall (netbsd-386-cgo), const TIOCPKT_FLUSHREAD = 1 pkg syscall (netbsd-386-cgo), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (netbsd-386-cgo), const TIOCPKT_IOCTL = 64 pkg syscall (netbsd-386-cgo), const TIOCPKT_NOSTOP = 16 pkg syscall (netbsd-386-cgo), const TIOCPKT_START = 8 pkg syscall (netbsd-386-cgo), const TIOCPKT_STOP = 4 pkg syscall (netbsd-386-cgo), const TIOCPTMGET = 1076393030 pkg syscall (netbsd-386-cgo), const TIOCPTSNAME = 1076393032 pkg syscall (netbsd-386-cgo), const TIOCRCVFRAME = 2147775557 pkg syscall (netbsd-386-cgo), const TIOCREMOTE = 2147775593 pkg syscall (netbsd-386-cgo), const TIOCSBRK = 536900731 pkg syscall (netbsd-386-cgo), const TIOCSCTTY = 536900705 pkg syscall (netbsd-386-cgo), const TIOCSDTR = 536900729 pkg syscall (netbsd-386-cgo), const TIOCSETA = 2150396948 pkg syscall (netbsd-386-cgo), const TIOCSETAF = 2150396950 pkg syscall (netbsd-386-cgo), const TIOCSETAW = 2150396949 pkg syscall (netbsd-386-cgo), const TIOCSETD = 2147775515 pkg syscall (netbsd-386-cgo), const TIOCSFLAGS = 2147775580 pkg syscall (netbsd-386-cgo), const TIOCSIG = 536900703 pkg syscall (netbsd-386-cgo), const TIOCSLINED = 2149610563 pkg syscall (netbsd-386-cgo), const TIOCSPGRP = 2147775606 pkg syscall (netbsd-386-cgo), const TIOCSQSIZE = 2147775616 pkg syscall (netbsd-386-cgo), const TIOCSSIZE = 2148037735 pkg syscall (netbsd-386-cgo), const TIOCSTART = 536900718 pkg syscall (netbsd-386-cgo), const TIOCSTAT = 2147775589 pkg syscall (netbsd-386-cgo), const TIOCSTI = 2147578994 pkg syscall (netbsd-386-cgo), const TIOCSTOP = 536900719 pkg syscall (netbsd-386-cgo), const TIOCSWINSZ = 2148037735 pkg syscall (netbsd-386-cgo), const TIOCUCNTL = 2147775590 pkg syscall (netbsd-386-cgo), const TIOCXMTFRAME = 2147775556 pkg syscall (netbsd-386-cgo), const TOSTOP = 4194304 pkg syscall (netbsd-386-cgo), const VDISCARD = 15 pkg syscall (netbsd-386-cgo), const VDSUSP = 11 pkg syscall (netbsd-386-cgo), const VEOF = 0 pkg syscall (netbsd-386-cgo), const VEOL = 1 pkg syscall (netbsd-386-cgo), const VEOL2 = 2 pkg syscall (netbsd-386-cgo), const VERASE = 3 pkg syscall (netbsd-386-cgo), const VINTR = 8 pkg syscall (netbsd-386-cgo), const VKILL = 5 pkg syscall (netbsd-386-cgo), const VLNEXT = 14 pkg syscall (netbsd-386-cgo), const VMIN = 16 pkg syscall (netbsd-386-cgo), const VQUIT = 9 pkg syscall (netbsd-386-cgo), const VREPRINT = 6 pkg syscall (netbsd-386-cgo), const VSTART = 12 pkg syscall (netbsd-386-cgo), const VSTATUS = 18 pkg syscall (netbsd-386-cgo), const VSTOP = 13 pkg syscall (netbsd-386-cgo), const VSUSP = 10 pkg syscall (netbsd-386-cgo), const VTIME = 17 pkg syscall (netbsd-386-cgo), const VWERASE = 4 pkg syscall (netbsd-386-cgo), const WALL = 8 pkg syscall (netbsd-386-cgo), const WALLSIG = 8 pkg syscall (netbsd-386-cgo), const WALTSIG = 4 pkg syscall (netbsd-386-cgo), const WCLONE = 4 pkg syscall (netbsd-386-cgo), const WCOREFLAG = 128 pkg syscall (netbsd-386-cgo), const WNOHANG = 1 pkg syscall (netbsd-386-cgo), const WNOWAIT = 65536 pkg syscall (netbsd-386-cgo), const WNOZOMBIE = 131072 pkg syscall (netbsd-386-cgo), const WOPTSCHECKED = 262144 pkg syscall (netbsd-386-cgo), const WSTOPPED = 127 pkg syscall (netbsd-386-cgo), const WUNTRACED = 2 pkg syscall (netbsd-amd64), const AF_APPLETALK = 16 pkg syscall (netbsd-amd64), const AF_ARP = 28 pkg syscall (netbsd-amd64), const AF_BLUETOOTH = 31 pkg syscall (netbsd-amd64), const AF_CCITT = 10 pkg syscall (netbsd-amd64), const AF_CHAOS = 5 pkg syscall (netbsd-amd64), const AF_CNT = 21 pkg syscall (netbsd-amd64), const AF_COIP = 20 pkg syscall (netbsd-amd64), const AF_DATAKIT = 9 pkg syscall (netbsd-amd64), const AF_DECnet = 12 pkg syscall (netbsd-amd64), const AF_DLI = 13 pkg syscall (netbsd-amd64), const AF_E164 = 26 pkg syscall (netbsd-amd64), const AF_ECMA = 8 pkg syscall (netbsd-amd64), const AF_HYLINK = 15 pkg syscall (netbsd-amd64), const AF_IEEE80211 = 32 pkg syscall (netbsd-amd64), const AF_IMPLINK = 3 pkg syscall (netbsd-amd64), const AF_INET6 = 24 pkg syscall (netbsd-amd64), const AF_IPX = 23 pkg syscall (netbsd-amd64), const AF_ISDN = 26 pkg syscall (netbsd-amd64), const AF_ISO = 7 pkg syscall (netbsd-amd64), const AF_LAT = 14 pkg syscall (netbsd-amd64), const AF_LINK = 18 pkg syscall (netbsd-amd64), const AF_LOCAL = 1 pkg syscall (netbsd-amd64), const AF_MAX = 35 pkg syscall (netbsd-amd64), const AF_MPLS = 33 pkg syscall (netbsd-amd64), const AF_NATM = 27 pkg syscall (netbsd-amd64), const AF_NS = 6 pkg syscall (netbsd-amd64), const AF_OROUTE = 17 pkg syscall (netbsd-amd64), const AF_OSI = 7 pkg syscall (netbsd-amd64), const AF_PUP = 4 pkg syscall (netbsd-amd64), const AF_ROUTE = 34 pkg syscall (netbsd-amd64), const AF_SNA = 11 pkg syscall (netbsd-amd64), const ARPHRD_ARCNET = 7 pkg syscall (netbsd-amd64), const ARPHRD_ETHER = 1 pkg syscall (netbsd-amd64), const ARPHRD_FRELAY = 15 pkg syscall (netbsd-amd64), const ARPHRD_IEEE1394 = 24 pkg syscall (netbsd-amd64), const ARPHRD_IEEE802 = 6 pkg syscall (netbsd-amd64), const ARPHRD_STRIP = 23 pkg syscall (netbsd-amd64), const B0 = 0 pkg syscall (netbsd-amd64), const B110 = 110 pkg syscall (netbsd-amd64), const B115200 = 115200 pkg syscall (netbsd-amd64), const B1200 = 1200 pkg syscall (netbsd-amd64), const B134 = 134 pkg syscall (netbsd-amd64), const B14400 = 14400 pkg syscall (netbsd-amd64), const B150 = 150 pkg syscall (netbsd-amd64), const B1800 = 1800 pkg syscall (netbsd-amd64), const B19200 = 19200 pkg syscall (netbsd-amd64), const B200 = 200 pkg syscall (netbsd-amd64), const B230400 = 230400 pkg syscall (netbsd-amd64), const B2400 = 2400 pkg syscall (netbsd-amd64), const B28800 = 28800 pkg syscall (netbsd-amd64), const B300 = 300 pkg syscall (netbsd-amd64), const B38400 = 38400 pkg syscall (netbsd-amd64), const B460800 = 460800 pkg syscall (netbsd-amd64), const B4800 = 4800 pkg syscall (netbsd-amd64), const B50 = 50 pkg syscall (netbsd-amd64), const B57600 = 57600 pkg syscall (netbsd-amd64), const B600 = 600 pkg syscall (netbsd-amd64), const B7200 = 7200 pkg syscall (netbsd-amd64), const B75 = 75 pkg syscall (netbsd-amd64), const B76800 = 76800 pkg syscall (netbsd-amd64), const B921600 = 921600 pkg syscall (netbsd-amd64), const B9600 = 9600 pkg syscall (netbsd-amd64), const BIOCFEEDBACK = 2147762813 pkg syscall (netbsd-amd64), const BIOCFLUSH = 536887912 pkg syscall (netbsd-amd64), const BIOCGBLEN = 1074020966 pkg syscall (netbsd-amd64), const BIOCGDLT = 1074020970 pkg syscall (netbsd-amd64), const BIOCGDLTLIST = 3222291063 pkg syscall (netbsd-amd64), const BIOCGETIF = 1083196011 pkg syscall (netbsd-amd64), const BIOCGFEEDBACK = 1074020988 pkg syscall (netbsd-amd64), const BIOCGHDRCMPLT = 1074020980 pkg syscall (netbsd-amd64), const BIOCGRTIMEOUT = 1074807419 pkg syscall (netbsd-amd64), const BIOCGSEESENT = 1074020984 pkg syscall (netbsd-amd64), const BIOCGSTATS = 1082147439 pkg syscall (netbsd-amd64), const BIOCGSTATSOLD = 1074283119 pkg syscall (netbsd-amd64), const BIOCIMMEDIATE = 2147762800 pkg syscall (netbsd-amd64), const BIOCPROMISC = 536887913 pkg syscall (netbsd-amd64), const BIOCSBLEN = 3221504614 pkg syscall (netbsd-amd64), const BIOCSDLT = 2147762806 pkg syscall (netbsd-amd64), const BIOCSETF = 2148549223 pkg syscall (netbsd-amd64), const BIOCSETIF = 2156937836 pkg syscall (netbsd-amd64), const BIOCSFEEDBACK = 2147762813 pkg syscall (netbsd-amd64), const BIOCSHDRCMPLT = 2147762805 pkg syscall (netbsd-amd64), const BIOCSRTIMEOUT = 2148549242 pkg syscall (netbsd-amd64), const BIOCSSEESENT = 2147762809 pkg syscall (netbsd-amd64), const BIOCSTCPF = 2148549234 pkg syscall (netbsd-amd64), const BIOCSUDPF = 2148549235 pkg syscall (netbsd-amd64), const BIOCVERSION = 1074020977 pkg syscall (netbsd-amd64), const BPF_A = 16 pkg syscall (netbsd-amd64), const BPF_ABS = 32 pkg syscall (netbsd-amd64), const BPF_ADD = 0 pkg syscall (netbsd-amd64), const BPF_ALIGNMENT = 8 pkg syscall (netbsd-amd64), const BPF_ALIGNMENT32 = 4 pkg syscall (netbsd-amd64), const BPF_ALU = 4 pkg syscall (netbsd-amd64), const BPF_AND = 80 pkg syscall (netbsd-amd64), const BPF_B = 16 pkg syscall (netbsd-amd64), const BPF_DFLTBUFSIZE = 1048576 pkg syscall (netbsd-amd64), const BPF_DIV = 48 pkg syscall (netbsd-amd64), const BPF_H = 8 pkg syscall (netbsd-amd64), const BPF_IMM = 0 pkg syscall (netbsd-amd64), const BPF_IND = 64 pkg syscall (netbsd-amd64), const BPF_JA = 0 pkg syscall (netbsd-amd64), const BPF_JEQ = 16 pkg syscall (netbsd-amd64), const BPF_JGE = 48 pkg syscall (netbsd-amd64), const BPF_JGT = 32 pkg syscall (netbsd-amd64), const BPF_JMP = 5 pkg syscall (netbsd-amd64), const BPF_JSET = 64 pkg syscall (netbsd-amd64), const BPF_K = 0 pkg syscall (netbsd-amd64), const BPF_LD = 0 pkg syscall (netbsd-amd64), const BPF_LDX = 1 pkg syscall (netbsd-amd64), const BPF_LEN = 128 pkg syscall (netbsd-amd64), const BPF_LSH = 96 pkg syscall (netbsd-amd64), const BPF_MAJOR_VERSION = 1 pkg syscall (netbsd-amd64), const BPF_MAXBUFSIZE = 16777216 pkg syscall (netbsd-amd64), const BPF_MAXINSNS = 512 pkg syscall (netbsd-amd64), const BPF_MEM = 96 pkg syscall (netbsd-amd64), const BPF_MEMWORDS = 16 pkg syscall (netbsd-amd64), const BPF_MINBUFSIZE = 32 pkg syscall (netbsd-amd64), const BPF_MINOR_VERSION = 1 pkg syscall (netbsd-amd64), const BPF_MISC = 7 pkg syscall (netbsd-amd64), const BPF_MSH = 160 pkg syscall (netbsd-amd64), const BPF_MUL = 32 pkg syscall (netbsd-amd64), const BPF_NEG = 128 pkg syscall (netbsd-amd64), const BPF_OR = 64 pkg syscall (netbsd-amd64), const BPF_RELEASE = 199606 pkg syscall (netbsd-amd64), const BPF_RET = 6 pkg syscall (netbsd-amd64), const BPF_RSH = 112 pkg syscall (netbsd-amd64), const BPF_ST = 2 pkg syscall (netbsd-amd64), const BPF_STX = 3 pkg syscall (netbsd-amd64), const BPF_SUB = 16 pkg syscall (netbsd-amd64), const BPF_TAX = 0 pkg syscall (netbsd-amd64), const BPF_TXA = 128 pkg syscall (netbsd-amd64), const BPF_W = 0 pkg syscall (netbsd-amd64), const BPF_X = 8 pkg syscall (netbsd-amd64), const BRKINT = 2 pkg syscall (netbsd-amd64), const CFLUSH = 15 pkg syscall (netbsd-amd64), const CLOCAL = 32768 pkg syscall (netbsd-amd64), const CREAD = 2048 pkg syscall (netbsd-amd64), const CS5 = 0 pkg syscall (netbsd-amd64), const CS6 = 256 pkg syscall (netbsd-amd64), const CS7 = 512 pkg syscall (netbsd-amd64), const CS8 = 768 pkg syscall (netbsd-amd64), const CSIZE = 768 pkg syscall (netbsd-amd64), const CSTART = 17 pkg syscall (netbsd-amd64), const CSTATUS = 20 pkg syscall (netbsd-amd64), const CSTOP = 19 pkg syscall (netbsd-amd64), const CSTOPB = 1024 pkg syscall (netbsd-amd64), const CSUSP = 26 pkg syscall (netbsd-amd64), const CTL_MAXNAME = 12 pkg syscall (netbsd-amd64), const CTL_NET = 4 pkg syscall (netbsd-amd64), const CTL_QUERY = -2 pkg syscall (netbsd-amd64), const DIOCBSFLUSH = 536896632 pkg syscall (netbsd-amd64), const DLT_A429 = 184 pkg syscall (netbsd-amd64), const DLT_A653_ICM = 185 pkg syscall (netbsd-amd64), const DLT_AIRONET_HEADER = 120 pkg syscall (netbsd-amd64), const DLT_AOS = 222 pkg syscall (netbsd-amd64), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (netbsd-amd64), const DLT_ARCNET = 7 pkg syscall (netbsd-amd64), const DLT_ARCNET_LINUX = 129 pkg syscall (netbsd-amd64), const DLT_ATM_CLIP = 19 pkg syscall (netbsd-amd64), const DLT_ATM_RFC1483 = 11 pkg syscall (netbsd-amd64), const DLT_AURORA = 126 pkg syscall (netbsd-amd64), const DLT_AX25 = 3 pkg syscall (netbsd-amd64), const DLT_AX25_KISS = 202 pkg syscall (netbsd-amd64), const DLT_BACNET_MS_TP = 165 pkg syscall (netbsd-amd64), const DLT_BLUETOOTH_HCI_H4 = 187 pkg syscall (netbsd-amd64), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 pkg syscall (netbsd-amd64), const DLT_CAN20B = 190 pkg syscall (netbsd-amd64), const DLT_CAN_SOCKETCAN = 227 pkg syscall (netbsd-amd64), const DLT_CHAOS = 5 pkg syscall (netbsd-amd64), const DLT_CISCO_IOS = 118 pkg syscall (netbsd-amd64), const DLT_C_HDLC = 104 pkg syscall (netbsd-amd64), const DLT_C_HDLC_WITH_DIR = 205 pkg syscall (netbsd-amd64), const DLT_DECT = 221 pkg syscall (netbsd-amd64), const DLT_DOCSIS = 143 pkg syscall (netbsd-amd64), const DLT_ECONET = 115 pkg syscall (netbsd-amd64), const DLT_EN10MB = 1 pkg syscall (netbsd-amd64), const DLT_EN3MB = 2 pkg syscall (netbsd-amd64), const DLT_ENC = 109 pkg syscall (netbsd-amd64), const DLT_ERF = 197 pkg syscall (netbsd-amd64), const DLT_ERF_ETH = 175 pkg syscall (netbsd-amd64), const DLT_ERF_POS = 176 pkg syscall (netbsd-amd64), const DLT_FC_2 = 224 pkg syscall (netbsd-amd64), const DLT_FC_2_WITH_FRAME_DELIMS = 225 pkg syscall (netbsd-amd64), const DLT_FDDI = 10 pkg syscall (netbsd-amd64), const DLT_FLEXRAY = 210 pkg syscall (netbsd-amd64), const DLT_FRELAY = 107 pkg syscall (netbsd-amd64), const DLT_FRELAY_WITH_DIR = 206 pkg syscall (netbsd-amd64), const DLT_GCOM_SERIAL = 173 pkg syscall (netbsd-amd64), const DLT_GCOM_T1E1 = 172 pkg syscall (netbsd-amd64), const DLT_GPF_F = 171 pkg syscall (netbsd-amd64), const DLT_GPF_T = 170 pkg syscall (netbsd-amd64), const DLT_GPRS_LLC = 169 pkg syscall (netbsd-amd64), const DLT_GSMTAP_ABIS = 218 pkg syscall (netbsd-amd64), const DLT_GSMTAP_UM = 217 pkg syscall (netbsd-amd64), const DLT_HDLC = 16 pkg syscall (netbsd-amd64), const DLT_HHDLC = 121 pkg syscall (netbsd-amd64), const DLT_HIPPI = 15 pkg syscall (netbsd-amd64), const DLT_IBM_SN = 146 pkg syscall (netbsd-amd64), const DLT_IBM_SP = 145 pkg syscall (netbsd-amd64), const DLT_IEEE802 = 6 pkg syscall (netbsd-amd64), const DLT_IEEE802_11 = 105 pkg syscall (netbsd-amd64), const DLT_IEEE802_11_RADIO = 127 pkg syscall (netbsd-amd64), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (netbsd-amd64), const DLT_IEEE802_15_4 = 195 pkg syscall (netbsd-amd64), const DLT_IEEE802_15_4_LINUX = 191 pkg syscall (netbsd-amd64), const DLT_IEEE802_15_4_NONASK_PHY = 215 pkg syscall (netbsd-amd64), const DLT_IEEE802_16_MAC_CPS = 188 pkg syscall (netbsd-amd64), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 pkg syscall (netbsd-amd64), const DLT_IPMB = 199 pkg syscall (netbsd-amd64), const DLT_IPMB_LINUX = 209 pkg syscall (netbsd-amd64), const DLT_IPNET = 226 pkg syscall (netbsd-amd64), const DLT_IPV4 = 228 pkg syscall (netbsd-amd64), const DLT_IPV6 = 229 pkg syscall (netbsd-amd64), const DLT_IP_OVER_FC = 122 pkg syscall (netbsd-amd64), const DLT_JUNIPER_ATM1 = 137 pkg syscall (netbsd-amd64), const DLT_JUNIPER_ATM2 = 135 pkg syscall (netbsd-amd64), const DLT_JUNIPER_CHDLC = 181 pkg syscall (netbsd-amd64), const DLT_JUNIPER_ES = 132 pkg syscall (netbsd-amd64), const DLT_JUNIPER_ETHER = 178 pkg syscall (netbsd-amd64), const DLT_JUNIPER_FRELAY = 180 pkg syscall (netbsd-amd64), const DLT_JUNIPER_GGSN = 133 pkg syscall (netbsd-amd64), const DLT_JUNIPER_ISM = 194 pkg syscall (netbsd-amd64), const DLT_JUNIPER_MFR = 134 pkg syscall (netbsd-amd64), const DLT_JUNIPER_MLFR = 131 pkg syscall (netbsd-amd64), const DLT_JUNIPER_MLPPP = 130 pkg syscall (netbsd-amd64), const DLT_JUNIPER_MONITOR = 164 pkg syscall (netbsd-amd64), const DLT_JUNIPER_PIC_PEER = 174 pkg syscall (netbsd-amd64), const DLT_JUNIPER_PPP = 179 pkg syscall (netbsd-amd64), const DLT_JUNIPER_PPPOE = 167 pkg syscall (netbsd-amd64), const DLT_JUNIPER_PPPOE_ATM = 168 pkg syscall (netbsd-amd64), const DLT_JUNIPER_SERVICES = 136 pkg syscall (netbsd-amd64), const DLT_JUNIPER_ST = 200 pkg syscall (netbsd-amd64), const DLT_JUNIPER_VP = 183 pkg syscall (netbsd-amd64), const DLT_LAPB_WITH_DIR = 207 pkg syscall (netbsd-amd64), const DLT_LAPD = 203 pkg syscall (netbsd-amd64), const DLT_LIN = 212 pkg syscall (netbsd-amd64), const DLT_LINUX_EVDEV = 216 pkg syscall (netbsd-amd64), const DLT_LINUX_IRDA = 144 pkg syscall (netbsd-amd64), const DLT_LINUX_LAPD = 177 pkg syscall (netbsd-amd64), const DLT_LINUX_SLL = 113 pkg syscall (netbsd-amd64), const DLT_LOOP = 108 pkg syscall (netbsd-amd64), const DLT_LTALK = 114 pkg syscall (netbsd-amd64), const DLT_MFR = 182 pkg syscall (netbsd-amd64), const DLT_MOST = 211 pkg syscall (netbsd-amd64), const DLT_MPLS = 219 pkg syscall (netbsd-amd64), const DLT_MTP2 = 140 pkg syscall (netbsd-amd64), const DLT_MTP2_WITH_PHDR = 139 pkg syscall (netbsd-amd64), const DLT_MTP3 = 141 pkg syscall (netbsd-amd64), const DLT_NULL = 0 pkg syscall (netbsd-amd64), const DLT_PCI_EXP = 125 pkg syscall (netbsd-amd64), const DLT_PFLOG = 117 pkg syscall (netbsd-amd64), const DLT_PFSYNC = 18 pkg syscall (netbsd-amd64), const DLT_PPI = 192 pkg syscall (netbsd-amd64), const DLT_PPP = 9 pkg syscall (netbsd-amd64), const DLT_PPP_BSDOS = 14 pkg syscall (netbsd-amd64), const DLT_PPP_ETHER = 51 pkg syscall (netbsd-amd64), const DLT_PPP_PPPD = 166 pkg syscall (netbsd-amd64), const DLT_PPP_SERIAL = 50 pkg syscall (netbsd-amd64), const DLT_PPP_WITH_DIR = 204 pkg syscall (netbsd-amd64), const DLT_PRISM_HEADER = 119 pkg syscall (netbsd-amd64), const DLT_PRONET = 4 pkg syscall (netbsd-amd64), const DLT_RAIF1 = 198 pkg syscall (netbsd-amd64), const DLT_RAW = 12 pkg syscall (netbsd-amd64), const DLT_RAWAF_MASK = 35913728 pkg syscall (netbsd-amd64), const DLT_RIO = 124 pkg syscall (netbsd-amd64), const DLT_SCCP = 142 pkg syscall (netbsd-amd64), const DLT_SITA = 196 pkg syscall (netbsd-amd64), const DLT_SLIP = 8 pkg syscall (netbsd-amd64), const DLT_SLIP_BSDOS = 13 pkg syscall (netbsd-amd64), const DLT_SUNATM = 123 pkg syscall (netbsd-amd64), const DLT_SYMANTEC_FIREWALL = 99 pkg syscall (netbsd-amd64), const DLT_TZSP = 128 pkg syscall (netbsd-amd64), const DLT_USB = 186 pkg syscall (netbsd-amd64), const DLT_USB_LINUX = 189 pkg syscall (netbsd-amd64), const DLT_USB_LINUX_MMAPPED = 220 pkg syscall (netbsd-amd64), const DLT_WIHART = 223 pkg syscall (netbsd-amd64), const DLT_X2E_SERIAL = 213 pkg syscall (netbsd-amd64), const DLT_X2E_XORAYA = 214 pkg syscall (netbsd-amd64), const DT_BLK = 6 pkg syscall (netbsd-amd64), const DT_CHR = 2 pkg syscall (netbsd-amd64), const DT_DIR = 4 pkg syscall (netbsd-amd64), const DT_FIFO = 1 pkg syscall (netbsd-amd64), const DT_LNK = 10 pkg syscall (netbsd-amd64), const DT_REG = 8 pkg syscall (netbsd-amd64), const DT_SOCK = 12 pkg syscall (netbsd-amd64), const DT_UNKNOWN = 0 pkg syscall (netbsd-amd64), const DT_WHT = 14 pkg syscall (netbsd-amd64), const E2BIG = 7 pkg syscall (netbsd-amd64), const EACCES = 13 pkg syscall (netbsd-amd64), const EADDRINUSE = 48 pkg syscall (netbsd-amd64), const EADDRNOTAVAIL = 49 pkg syscall (netbsd-amd64), const EAFNOSUPPORT = 47 pkg syscall (netbsd-amd64), const EAGAIN = 35 pkg syscall (netbsd-amd64), const EALREADY = 37 pkg syscall (netbsd-amd64), const EAUTH = 80 pkg syscall (netbsd-amd64), const EBADF = 9 pkg syscall (netbsd-amd64), const EBADMSG = 88 pkg syscall (netbsd-amd64), const EBADRPC = 72 pkg syscall (netbsd-amd64), const EBUSY = 16 pkg syscall (netbsd-amd64), const ECANCELED = 87 pkg syscall (netbsd-amd64), const ECHILD = 10 pkg syscall (netbsd-amd64), const ECHO = 8 pkg syscall (netbsd-amd64), const ECHOCTL = 64 pkg syscall (netbsd-amd64), const ECHOE = 2 pkg syscall (netbsd-amd64), const ECHOK = 4 pkg syscall (netbsd-amd64), const ECHOKE = 1 pkg syscall (netbsd-amd64), const ECHONL = 16 pkg syscall (netbsd-amd64), const ECHOPRT = 32 pkg syscall (netbsd-amd64), const ECONNABORTED = 53 pkg syscall (netbsd-amd64), const ECONNREFUSED = 61 pkg syscall (netbsd-amd64), const ECONNRESET = 54 pkg syscall (netbsd-amd64), const EDEADLK = 11 pkg syscall (netbsd-amd64), const EDESTADDRREQ = 39 pkg syscall (netbsd-amd64), const EDOM = 33 pkg syscall (netbsd-amd64), const EDQUOT = 69 pkg syscall (netbsd-amd64), const EEXIST = 17 pkg syscall (netbsd-amd64), const EFAULT = 14 pkg syscall (netbsd-amd64), const EFBIG = 27 pkg syscall (netbsd-amd64), const EFTYPE = 79 pkg syscall (netbsd-amd64), const EHOSTDOWN = 64 pkg syscall (netbsd-amd64), const EHOSTUNREACH = 65 pkg syscall (netbsd-amd64), const EIDRM = 82 pkg syscall (netbsd-amd64), const EILSEQ = 85 pkg syscall (netbsd-amd64), const EINPROGRESS = 36 pkg syscall (netbsd-amd64), const EINTR = 4 pkg syscall (netbsd-amd64), const EINVAL = 22 pkg syscall (netbsd-amd64), const EIO = 5 pkg syscall (netbsd-amd64), const EISCONN = 56 pkg syscall (netbsd-amd64), const EISDIR = 21 pkg syscall (netbsd-amd64), const ELAST = 96 pkg syscall (netbsd-amd64), const ELOOP = 62 pkg syscall (netbsd-amd64), const EMFILE = 24 pkg syscall (netbsd-amd64), const EMLINK = 31 pkg syscall (netbsd-amd64), const EMSGSIZE = 40 pkg syscall (netbsd-amd64), const EMULTIHOP = 94 pkg syscall (netbsd-amd64), const EMUL_LINUX = 1 pkg syscall (netbsd-amd64), const EMUL_LINUX32 = 5 pkg syscall (netbsd-amd64), const EMUL_MAXID = 6 pkg syscall (netbsd-amd64), const ENAMETOOLONG = 63 pkg syscall (netbsd-amd64), const ENEEDAUTH = 81 pkg syscall (netbsd-amd64), const ENETDOWN = 50 pkg syscall (netbsd-amd64), const ENETRESET = 52 pkg syscall (netbsd-amd64), const ENETUNREACH = 51 pkg syscall (netbsd-amd64), const ENFILE = 23 pkg syscall (netbsd-amd64), const ENOATTR = 93 pkg syscall (netbsd-amd64), const ENOBUFS = 55 pkg syscall (netbsd-amd64), const ENODATA = 89 pkg syscall (netbsd-amd64), const ENODEV = 19 pkg syscall (netbsd-amd64), const ENOEXEC = 8 pkg syscall (netbsd-amd64), const ENOLCK = 77 pkg syscall (netbsd-amd64), const ENOLINK = 95 pkg syscall (netbsd-amd64), const ENOMEM = 12 pkg syscall (netbsd-amd64), const ENOMSG = 83 pkg syscall (netbsd-amd64), const ENOPROTOOPT = 42 pkg syscall (netbsd-amd64), const ENOSPC = 28 pkg syscall (netbsd-amd64), const ENOSR = 90 pkg syscall (netbsd-amd64), const ENOSTR = 91 pkg syscall (netbsd-amd64), const ENOSYS = 78 pkg syscall (netbsd-amd64), const ENOTBLK = 15 pkg syscall (netbsd-amd64), const ENOTCONN = 57 pkg syscall (netbsd-amd64), const ENOTDIR = 20 pkg syscall (netbsd-amd64), const ENOTEMPTY = 66 pkg syscall (netbsd-amd64), const ENOTSOCK = 38 pkg syscall (netbsd-amd64), const ENOTSUP = 86 pkg syscall (netbsd-amd64), const ENOTTY = 25 pkg syscall (netbsd-amd64), const ENXIO = 6 pkg syscall (netbsd-amd64), const EOPNOTSUPP = 45 pkg syscall (netbsd-amd64), const EOVERFLOW = 84 pkg syscall (netbsd-amd64), const EPERM = 1 pkg syscall (netbsd-amd64), const EPFNOSUPPORT = 46 pkg syscall (netbsd-amd64), const EPIPE = 32 pkg syscall (netbsd-amd64), const EPROCLIM = 67 pkg syscall (netbsd-amd64), const EPROCUNAVAIL = 76 pkg syscall (netbsd-amd64), const EPROGMISMATCH = 75 pkg syscall (netbsd-amd64), const EPROGUNAVAIL = 74 pkg syscall (netbsd-amd64), const EPROTO = 96 pkg syscall (netbsd-amd64), const EPROTONOSUPPORT = 43 pkg syscall (netbsd-amd64), const EPROTOTYPE = 41 pkg syscall (netbsd-amd64), const ERANGE = 34 pkg syscall (netbsd-amd64), const EREMOTE = 71 pkg syscall (netbsd-amd64), const EROFS = 30 pkg syscall (netbsd-amd64), const ERPCMISMATCH = 73 pkg syscall (netbsd-amd64), const ESHUTDOWN = 58 pkg syscall (netbsd-amd64), const ESOCKTNOSUPPORT = 44 pkg syscall (netbsd-amd64), const ESPIPE = 29 pkg syscall (netbsd-amd64), const ESRCH = 3 pkg syscall (netbsd-amd64), const ESTALE = 70 pkg syscall (netbsd-amd64), const ETHERCAP_JUMBO_MTU = 4 pkg syscall (netbsd-amd64), const ETHERCAP_VLAN_HWTAGGING = 2 pkg syscall (netbsd-amd64), const ETHERCAP_VLAN_MTU = 1 pkg syscall (netbsd-amd64), const ETHERMIN = 46 pkg syscall (netbsd-amd64), const ETHERMTU = 1500 pkg syscall (netbsd-amd64), const ETHERMTU_JUMBO = 9000 pkg syscall (netbsd-amd64), const ETHERTYPE_8023 = 4 pkg syscall (netbsd-amd64), const ETHERTYPE_AARP = 33011 pkg syscall (netbsd-amd64), const ETHERTYPE_ACCTON = 33680 pkg syscall (netbsd-amd64), const ETHERTYPE_AEONIC = 32822 pkg syscall (netbsd-amd64), const ETHERTYPE_ALPHA = 33098 pkg syscall (netbsd-amd64), const ETHERTYPE_AMBER = 24584 pkg syscall (netbsd-amd64), const ETHERTYPE_AMOEBA = 33093 pkg syscall (netbsd-amd64), const ETHERTYPE_APOLLO = 33015 pkg syscall (netbsd-amd64), const ETHERTYPE_APOLLODOMAIN = 32793 pkg syscall (netbsd-amd64), const ETHERTYPE_APPLETALK = 32923 pkg syscall (netbsd-amd64), const ETHERTYPE_APPLITEK = 32967 pkg syscall (netbsd-amd64), const ETHERTYPE_ARGONAUT = 32826 pkg syscall (netbsd-amd64), const ETHERTYPE_ARP = 2054 pkg syscall (netbsd-amd64), const ETHERTYPE_AT = 32923 pkg syscall (netbsd-amd64), const ETHERTYPE_ATALK = 32923 pkg syscall (netbsd-amd64), const ETHERTYPE_ATOMIC = 34527 pkg syscall (netbsd-amd64), const ETHERTYPE_ATT = 32873 pkg syscall (netbsd-amd64), const ETHERTYPE_ATTSTANFORD = 32776 pkg syscall (netbsd-amd64), const ETHERTYPE_AUTOPHON = 32874 pkg syscall (netbsd-amd64), const ETHERTYPE_AXIS = 34902 pkg syscall (netbsd-amd64), const ETHERTYPE_BCLOOP = 36867 pkg syscall (netbsd-amd64), const ETHERTYPE_BOFL = 33026 pkg syscall (netbsd-amd64), const ETHERTYPE_CABLETRON = 28724 pkg syscall (netbsd-amd64), const ETHERTYPE_CHAOS = 2052 pkg syscall (netbsd-amd64), const ETHERTYPE_COMDESIGN = 32876 pkg syscall (netbsd-amd64), const ETHERTYPE_COMPUGRAPHIC = 32877 pkg syscall (netbsd-amd64), const ETHERTYPE_COUNTERPOINT = 32866 pkg syscall (netbsd-amd64), const ETHERTYPE_CRONUS = 32772 pkg syscall (netbsd-amd64), const ETHERTYPE_CRONUSVLN = 32771 pkg syscall (netbsd-amd64), const ETHERTYPE_DCA = 4660 pkg syscall (netbsd-amd64), const ETHERTYPE_DDE = 32891 pkg syscall (netbsd-amd64), const ETHERTYPE_DEBNI = 43690 pkg syscall (netbsd-amd64), const ETHERTYPE_DECAM = 32840 pkg syscall (netbsd-amd64), const ETHERTYPE_DECCUST = 24582 pkg syscall (netbsd-amd64), const ETHERTYPE_DECDIAG = 24581 pkg syscall (netbsd-amd64), const ETHERTYPE_DECDNS = 32828 pkg syscall (netbsd-amd64), const ETHERTYPE_DECDTS = 32830 pkg syscall (netbsd-amd64), const ETHERTYPE_DECEXPER = 24576 pkg syscall (netbsd-amd64), const ETHERTYPE_DECLAST = 32833 pkg syscall (netbsd-amd64), const ETHERTYPE_DECLTM = 32831 pkg syscall (netbsd-amd64), const ETHERTYPE_DECMUMPS = 24585 pkg syscall (netbsd-amd64), const ETHERTYPE_DECNETBIOS = 32832 pkg syscall (netbsd-amd64), const ETHERTYPE_DELTACON = 34526 pkg syscall (netbsd-amd64), const ETHERTYPE_DIDDLE = 17185 pkg syscall (netbsd-amd64), const ETHERTYPE_DLOG1 = 1632 pkg syscall (netbsd-amd64), const ETHERTYPE_DLOG2 = 1633 pkg syscall (netbsd-amd64), const ETHERTYPE_DN = 24579 pkg syscall (netbsd-amd64), const ETHERTYPE_DOGFIGHT = 6537 pkg syscall (netbsd-amd64), const ETHERTYPE_DSMD = 32825 pkg syscall (netbsd-amd64), const ETHERTYPE_ECMA = 2051 pkg syscall (netbsd-amd64), const ETHERTYPE_ENCRYPT = 32829 pkg syscall (netbsd-amd64), const ETHERTYPE_ES = 32861 pkg syscall (netbsd-amd64), const ETHERTYPE_EXCELAN = 32784 pkg syscall (netbsd-amd64), const ETHERTYPE_EXPERDATA = 32841 pkg syscall (netbsd-amd64), const ETHERTYPE_FLIP = 33094 pkg syscall (netbsd-amd64), const ETHERTYPE_FLOWCONTROL = 34824 pkg syscall (netbsd-amd64), const ETHERTYPE_FRARP = 2056 pkg syscall (netbsd-amd64), const ETHERTYPE_GENDYN = 32872 pkg syscall (netbsd-amd64), const ETHERTYPE_HAYES = 33072 pkg syscall (netbsd-amd64), const ETHERTYPE_HIPPI_FP = 33152 pkg syscall (netbsd-amd64), const ETHERTYPE_HITACHI = 34848 pkg syscall (netbsd-amd64), const ETHERTYPE_HP = 32773 pkg syscall (netbsd-amd64), const ETHERTYPE_IEEEPUP = 2560 pkg syscall (netbsd-amd64), const ETHERTYPE_IEEEPUPAT = 2561 pkg syscall (netbsd-amd64), const ETHERTYPE_IMLBL = 19522 pkg syscall (netbsd-amd64), const ETHERTYPE_IMLBLDIAG = 16972 pkg syscall (netbsd-amd64), const ETHERTYPE_IP = 2048 pkg syscall (netbsd-amd64), const ETHERTYPE_IPAS = 34668 pkg syscall (netbsd-amd64), const ETHERTYPE_IPV6 = 34525 pkg syscall (netbsd-amd64), const ETHERTYPE_IPX = 33079 pkg syscall (netbsd-amd64), const ETHERTYPE_IPXNEW = 32823 pkg syscall (netbsd-amd64), const ETHERTYPE_KALPANA = 34178 pkg syscall (netbsd-amd64), const ETHERTYPE_LANBRIDGE = 32824 pkg syscall (netbsd-amd64), const ETHERTYPE_LANPROBE = 34952 pkg syscall (netbsd-amd64), const ETHERTYPE_LAT = 24580 pkg syscall (netbsd-amd64), const ETHERTYPE_LBACK = 36864 pkg syscall (netbsd-amd64), const ETHERTYPE_LITTLE = 32864 pkg syscall (netbsd-amd64), const ETHERTYPE_LOGICRAFT = 33096 pkg syscall (netbsd-amd64), const ETHERTYPE_LOOPBACK = 36864 pkg syscall (netbsd-amd64), const ETHERTYPE_MATRA = 32890 pkg syscall (netbsd-amd64), const ETHERTYPE_MAX = 65535 pkg syscall (netbsd-amd64), const ETHERTYPE_MERIT = 32892 pkg syscall (netbsd-amd64), const ETHERTYPE_MICP = 34618 pkg syscall (netbsd-amd64), const ETHERTYPE_MOPDL = 24577 pkg syscall (netbsd-amd64), const ETHERTYPE_MOPRC = 24578 pkg syscall (netbsd-amd64), const ETHERTYPE_MOTOROLA = 33165 pkg syscall (netbsd-amd64), const ETHERTYPE_MPLS = 34887 pkg syscall (netbsd-amd64), const ETHERTYPE_MPLS_MCAST = 34888 pkg syscall (netbsd-amd64), const ETHERTYPE_MUMPS = 33087 pkg syscall (netbsd-amd64), const ETHERTYPE_NBPCC = 15364 pkg syscall (netbsd-amd64), const ETHERTYPE_NBPCLAIM = 15369 pkg syscall (netbsd-amd64), const ETHERTYPE_NBPCLREQ = 15365 pkg syscall (netbsd-amd64), const ETHERTYPE_NBPCLRSP = 15366 pkg syscall (netbsd-amd64), const ETHERTYPE_NBPCREQ = 15362 pkg syscall (netbsd-amd64), const ETHERTYPE_NBPCRSP = 15363 pkg syscall (netbsd-amd64), const ETHERTYPE_NBPDG = 15367 pkg syscall (netbsd-amd64), const ETHERTYPE_NBPDGB = 15368 pkg syscall (netbsd-amd64), const ETHERTYPE_NBPDLTE = 15370 pkg syscall (netbsd-amd64), const ETHERTYPE_NBPRAR = 15372 pkg syscall (netbsd-amd64), const ETHERTYPE_NBPRAS = 15371 pkg syscall (netbsd-amd64), const ETHERTYPE_NBPRST = 15373 pkg syscall (netbsd-amd64), const ETHERTYPE_NBPSCD = 15361 pkg syscall (netbsd-amd64), const ETHERTYPE_NBPVCD = 15360 pkg syscall (netbsd-amd64), const ETHERTYPE_NBS = 2050 pkg syscall (netbsd-amd64), const ETHERTYPE_NCD = 33097 pkg syscall (netbsd-amd64), const ETHERTYPE_NESTAR = 32774 pkg syscall (netbsd-amd64), const ETHERTYPE_NETBEUI = 33169 pkg syscall (netbsd-amd64), const ETHERTYPE_NOVELL = 33080 pkg syscall (netbsd-amd64), const ETHERTYPE_NS = 1536 pkg syscall (netbsd-amd64), const ETHERTYPE_NSAT = 1537 pkg syscall (netbsd-amd64), const ETHERTYPE_NSCOMPAT = 2055 pkg syscall (netbsd-amd64), const ETHERTYPE_NTRAILER = 16 pkg syscall (netbsd-amd64), const ETHERTYPE_OS9 = 28679 pkg syscall (netbsd-amd64), const ETHERTYPE_OS9NET = 28681 pkg syscall (netbsd-amd64), const ETHERTYPE_PACER = 32966 pkg syscall (netbsd-amd64), const ETHERTYPE_PAE = 34958 pkg syscall (netbsd-amd64), const ETHERTYPE_PCS = 16962 pkg syscall (netbsd-amd64), const ETHERTYPE_PLANNING = 32836 pkg syscall (netbsd-amd64), const ETHERTYPE_PPP = 34827 pkg syscall (netbsd-amd64), const ETHERTYPE_PPPOE = 34916 pkg syscall (netbsd-amd64), const ETHERTYPE_PPPOEDISC = 34915 pkg syscall (netbsd-amd64), const ETHERTYPE_PRIMENTS = 28721 pkg syscall (netbsd-amd64), const ETHERTYPE_PUP = 512 pkg syscall (netbsd-amd64), const ETHERTYPE_PUPAT = 512 pkg syscall (netbsd-amd64), const ETHERTYPE_RACAL = 28720 pkg syscall (netbsd-amd64), const ETHERTYPE_RATIONAL = 33104 pkg syscall (netbsd-amd64), const ETHERTYPE_RAWFR = 25945 pkg syscall (netbsd-amd64), const ETHERTYPE_RCL = 6549 pkg syscall (netbsd-amd64), const ETHERTYPE_RDP = 34617 pkg syscall (netbsd-amd64), const ETHERTYPE_RETIX = 33010 pkg syscall (netbsd-amd64), const ETHERTYPE_REVARP = 32821 pkg syscall (netbsd-amd64), const ETHERTYPE_SCA = 24583 pkg syscall (netbsd-amd64), const ETHERTYPE_SECTRA = 34523 pkg syscall (netbsd-amd64), const ETHERTYPE_SECUREDATA = 34669 pkg syscall (netbsd-amd64), const ETHERTYPE_SGITW = 33150 pkg syscall (netbsd-amd64), const ETHERTYPE_SG_BOUNCE = 32790 pkg syscall (netbsd-amd64), const ETHERTYPE_SG_DIAG = 32787 pkg syscall (netbsd-amd64), const ETHERTYPE_SG_NETGAMES = 32788 pkg syscall (netbsd-amd64), const ETHERTYPE_SG_RESV = 32789 pkg syscall (netbsd-amd64), const ETHERTYPE_SIMNET = 21000 pkg syscall (netbsd-amd64), const ETHERTYPE_SLOWPROTOCOLS = 34825 pkg syscall (netbsd-amd64), const ETHERTYPE_SNA = 32981 pkg syscall (netbsd-amd64), const ETHERTYPE_SNMP = 33100 pkg syscall (netbsd-amd64), const ETHERTYPE_SONIX = 64245 pkg syscall (netbsd-amd64), const ETHERTYPE_SPIDER = 32927 pkg syscall (netbsd-amd64), const ETHERTYPE_SPRITE = 1280 pkg syscall (netbsd-amd64), const ETHERTYPE_STP = 33153 pkg syscall (netbsd-amd64), const ETHERTYPE_TALARIS = 33067 pkg syscall (netbsd-amd64), const ETHERTYPE_TALARISMC = 34091 pkg syscall (netbsd-amd64), const ETHERTYPE_TCPCOMP = 34667 pkg syscall (netbsd-amd64), const ETHERTYPE_TCPSM = 36866 pkg syscall (netbsd-amd64), const ETHERTYPE_TEC = 33103 pkg syscall (netbsd-amd64), const ETHERTYPE_TIGAN = 32815 pkg syscall (netbsd-amd64), const ETHERTYPE_TRAIL = 4096 pkg syscall (netbsd-amd64), const ETHERTYPE_TRANSETHER = 25944 pkg syscall (netbsd-amd64), const ETHERTYPE_TYMSHARE = 32814 pkg syscall (netbsd-amd64), const ETHERTYPE_UBBST = 28677 pkg syscall (netbsd-amd64), const ETHERTYPE_UBDEBUG = 2304 pkg syscall (netbsd-amd64), const ETHERTYPE_UBDIAGLOOP = 28674 pkg syscall (netbsd-amd64), const ETHERTYPE_UBDL = 28672 pkg syscall (netbsd-amd64), const ETHERTYPE_UBNIU = 28673 pkg syscall (netbsd-amd64), const ETHERTYPE_UBNMC = 28675 pkg syscall (netbsd-amd64), const ETHERTYPE_VALID = 5632 pkg syscall (netbsd-amd64), const ETHERTYPE_VARIAN = 32989 pkg syscall (netbsd-amd64), const ETHERTYPE_VAXELN = 32827 pkg syscall (netbsd-amd64), const ETHERTYPE_VEECO = 32871 pkg syscall (netbsd-amd64), const ETHERTYPE_VEXP = 32859 pkg syscall (netbsd-amd64), const ETHERTYPE_VGLAB = 33073 pkg syscall (netbsd-amd64), const ETHERTYPE_VINES = 2989 pkg syscall (netbsd-amd64), const ETHERTYPE_VINESECHO = 2991 pkg syscall (netbsd-amd64), const ETHERTYPE_VINESLOOP = 2990 pkg syscall (netbsd-amd64), const ETHERTYPE_VITAL = 65280 pkg syscall (netbsd-amd64), const ETHERTYPE_VLAN = 33024 pkg syscall (netbsd-amd64), const ETHERTYPE_VLTLMAN = 32896 pkg syscall (netbsd-amd64), const ETHERTYPE_VPROD = 32860 pkg syscall (netbsd-amd64), const ETHERTYPE_VURESERVED = 33095 pkg syscall (netbsd-amd64), const ETHERTYPE_WATERLOO = 33072 pkg syscall (netbsd-amd64), const ETHERTYPE_WELLFLEET = 33027 pkg syscall (netbsd-amd64), const ETHERTYPE_X25 = 2053 pkg syscall (netbsd-amd64), const ETHERTYPE_X75 = 2049 pkg syscall (netbsd-amd64), const ETHERTYPE_XNSSM = 36865 pkg syscall (netbsd-amd64), const ETHERTYPE_XTP = 33149 pkg syscall (netbsd-amd64), const ETHER_ADDR_LEN = 6 pkg syscall (netbsd-amd64), const ETHER_CRC_LEN = 4 pkg syscall (netbsd-amd64), const ETHER_CRC_POLY_BE = 79764918 pkg syscall (netbsd-amd64), const ETHER_CRC_POLY_LE = 3988292384 pkg syscall (netbsd-amd64), const ETHER_HDR_LEN = 14 pkg syscall (netbsd-amd64), const ETHER_MAX_LEN = 1518 pkg syscall (netbsd-amd64), const ETHER_MAX_LEN_JUMBO = 9018 pkg syscall (netbsd-amd64), const ETHER_MIN_LEN = 64 pkg syscall (netbsd-amd64), const ETHER_PPPOE_ENCAP_LEN = 8 pkg syscall (netbsd-amd64), const ETHER_TYPE_LEN = 2 pkg syscall (netbsd-amd64), const ETHER_VLAN_ENCAP_LEN = 4 pkg syscall (netbsd-amd64), const ETIME = 92 pkg syscall (netbsd-amd64), const ETIMEDOUT = 60 pkg syscall (netbsd-amd64), const ETOOMANYREFS = 59 pkg syscall (netbsd-amd64), const ETXTBSY = 26 pkg syscall (netbsd-amd64), const EUSERS = 68 pkg syscall (netbsd-amd64), const EVFILT_AIO = 2 pkg syscall (netbsd-amd64), const EVFILT_PROC = 4 pkg syscall (netbsd-amd64), const EVFILT_READ = 0 pkg syscall (netbsd-amd64), const EVFILT_SIGNAL = 5 pkg syscall (netbsd-amd64), const EVFILT_SYSCOUNT = 7 pkg syscall (netbsd-amd64), const EVFILT_TIMER = 6 pkg syscall (netbsd-amd64), const EVFILT_VNODE = 3 pkg syscall (netbsd-amd64), const EVFILT_WRITE = 1 pkg syscall (netbsd-amd64), const EV_ADD = 1 pkg syscall (netbsd-amd64), const EV_CLEAR = 32 pkg syscall (netbsd-amd64), const EV_DELETE = 2 pkg syscall (netbsd-amd64), const EV_DISABLE = 8 pkg syscall (netbsd-amd64), const EV_ENABLE = 4 pkg syscall (netbsd-amd64), const EV_EOF = 32768 pkg syscall (netbsd-amd64), const EV_ERROR = 16384 pkg syscall (netbsd-amd64), const EV_FLAG1 = 8192 pkg syscall (netbsd-amd64), const EV_ONESHOT = 16 pkg syscall (netbsd-amd64), const EV_SYSFLAGS = 61440 pkg syscall (netbsd-amd64), const EWOULDBLOCK = 35 pkg syscall (netbsd-amd64), const EXDEV = 18 pkg syscall (netbsd-amd64), const EXTA = 19200 pkg syscall (netbsd-amd64), const EXTB = 38400 pkg syscall (netbsd-amd64), const EXTPROC = 2048 pkg syscall (netbsd-amd64), const FD_CLOEXEC = 1 pkg syscall (netbsd-amd64), const FD_SETSIZE = 256 pkg syscall (netbsd-amd64), const FLUSHO = 8388608 pkg syscall (netbsd-amd64), const F_CLOSEM = 10 pkg syscall (netbsd-amd64), const F_DUPFD = 0 pkg syscall (netbsd-amd64), const F_DUPFD_CLOEXEC = 12 pkg syscall (netbsd-amd64), const F_FSCTL = -2147483648 pkg syscall (netbsd-amd64), const F_FSDIRMASK = 1879048192 pkg syscall (netbsd-amd64), const F_FSIN = 268435456 pkg syscall (netbsd-amd64), const F_FSINOUT = 805306368 pkg syscall (netbsd-amd64), const F_FSOUT = 536870912 pkg syscall (netbsd-amd64), const F_FSPRIV = 32768 pkg syscall (netbsd-amd64), const F_FSVOID = 1073741824 pkg syscall (netbsd-amd64), const F_GETFD = 1 pkg syscall (netbsd-amd64), const F_GETFL = 3 pkg syscall (netbsd-amd64), const F_GETLK = 7 pkg syscall (netbsd-amd64), const F_GETNOSIGPIPE = 13 pkg syscall (netbsd-amd64), const F_GETOWN = 5 pkg syscall (netbsd-amd64), const F_MAXFD = 11 pkg syscall (netbsd-amd64), const F_OK = 0 pkg syscall (netbsd-amd64), const F_PARAM_MASK = 4095 pkg syscall (netbsd-amd64), const F_PARAM_MAX = 4095 pkg syscall (netbsd-amd64), const F_RDLCK = 1 pkg syscall (netbsd-amd64), const F_SETFD = 2 pkg syscall (netbsd-amd64), const F_SETFL = 4 pkg syscall (netbsd-amd64), const F_SETLK = 8 pkg syscall (netbsd-amd64), const F_SETLKW = 9 pkg syscall (netbsd-amd64), const F_SETNOSIGPIPE = 14 pkg syscall (netbsd-amd64), const F_SETOWN = 6 pkg syscall (netbsd-amd64), const F_UNLCK = 2 pkg syscall (netbsd-amd64), const F_WRLCK = 3 pkg syscall (netbsd-amd64), const HUPCL = 16384 pkg syscall (netbsd-amd64), const ICANON = 256 pkg syscall (netbsd-amd64), const ICRNL = 256 pkg syscall (netbsd-amd64), const IEXTEN = 1024 pkg syscall (netbsd-amd64), const IFAN_ARRIVAL = 0 pkg syscall (netbsd-amd64), const IFAN_DEPARTURE = 1 pkg syscall (netbsd-amd64), const IFA_ROUTE = 1 pkg syscall (netbsd-amd64), const IFF_ALLMULTI = 512 pkg syscall (netbsd-amd64), const IFF_CANTCHANGE = 36690 pkg syscall (netbsd-amd64), const IFF_DEBUG = 4 pkg syscall (netbsd-amd64), const IFF_LINK0 = 4096 pkg syscall (netbsd-amd64), const IFF_LINK1 = 8192 pkg syscall (netbsd-amd64), const IFF_LINK2 = 16384 pkg syscall (netbsd-amd64), const IFF_LOOPBACK = 8 pkg syscall (netbsd-amd64), const IFF_MULTICAST = 32768 pkg syscall (netbsd-amd64), const IFF_NOARP = 128 pkg syscall (netbsd-amd64), const IFF_NOTRAILERS = 32 pkg syscall (netbsd-amd64), const IFF_OACTIVE = 1024 pkg syscall (netbsd-amd64), const IFF_POINTOPOINT = 16 pkg syscall (netbsd-amd64), const IFF_PROMISC = 256 pkg syscall (netbsd-amd64), const IFF_RUNNING = 64 pkg syscall (netbsd-amd64), const IFF_SIMPLEX = 2048 pkg syscall (netbsd-amd64), const IFNAMSIZ = 16 pkg syscall (netbsd-amd64), const IFT_1822 = 2 pkg syscall (netbsd-amd64), const IFT_A12MPPSWITCH = 130 pkg syscall (netbsd-amd64), const IFT_AAL2 = 187 pkg syscall (netbsd-amd64), const IFT_AAL5 = 49 pkg syscall (netbsd-amd64), const IFT_ADSL = 94 pkg syscall (netbsd-amd64), const IFT_AFLANE8023 = 59 pkg syscall (netbsd-amd64), const IFT_AFLANE8025 = 60 pkg syscall (netbsd-amd64), const IFT_ARAP = 88 pkg syscall (netbsd-amd64), const IFT_ARCNET = 35 pkg syscall (netbsd-amd64), const IFT_ARCNETPLUS = 36 pkg syscall (netbsd-amd64), const IFT_ASYNC = 84 pkg syscall (netbsd-amd64), const IFT_ATM = 37 pkg syscall (netbsd-amd64), const IFT_ATMDXI = 105 pkg syscall (netbsd-amd64), const IFT_ATMFUNI = 106 pkg syscall (netbsd-amd64), const IFT_ATMIMA = 107 pkg syscall (netbsd-amd64), const IFT_ATMLOGICAL = 80 pkg syscall (netbsd-amd64), const IFT_ATMRADIO = 189 pkg syscall (netbsd-amd64), const IFT_ATMSUBINTERFACE = 134 pkg syscall (netbsd-amd64), const IFT_ATMVCIENDPT = 194 pkg syscall (netbsd-amd64), const IFT_ATMVIRTUAL = 149 pkg syscall (netbsd-amd64), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (netbsd-amd64), const IFT_BRIDGE = 209 pkg syscall (netbsd-amd64), const IFT_BSC = 83 pkg syscall (netbsd-amd64), const IFT_CARP = 248 pkg syscall (netbsd-amd64), const IFT_CCTEMUL = 61 pkg syscall (netbsd-amd64), const IFT_CEPT = 19 pkg syscall (netbsd-amd64), const IFT_CES = 133 pkg syscall (netbsd-amd64), const IFT_CHANNEL = 70 pkg syscall (netbsd-amd64), const IFT_CNR = 85 pkg syscall (netbsd-amd64), const IFT_COFFEE = 132 pkg syscall (netbsd-amd64), const IFT_COMPOSITELINK = 155 pkg syscall (netbsd-amd64), const IFT_DCN = 141 pkg syscall (netbsd-amd64), const IFT_DIGITALPOWERLINE = 138 pkg syscall (netbsd-amd64), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (netbsd-amd64), const IFT_DLSW = 74 pkg syscall (netbsd-amd64), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (netbsd-amd64), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (netbsd-amd64), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (netbsd-amd64), const IFT_DOCSCABLEUPSTREAMCHANNEL = 205 pkg syscall (netbsd-amd64), const IFT_DS0 = 81 pkg syscall (netbsd-amd64), const IFT_DS0BUNDLE = 82 pkg syscall (netbsd-amd64), const IFT_DS1FDL = 170 pkg syscall (netbsd-amd64), const IFT_DS3 = 30 pkg syscall (netbsd-amd64), const IFT_DTM = 140 pkg syscall (netbsd-amd64), const IFT_DVBASILN = 172 pkg syscall (netbsd-amd64), const IFT_DVBASIOUT = 173 pkg syscall (netbsd-amd64), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (netbsd-amd64), const IFT_DVBRCCMACLAYER = 146 pkg syscall (netbsd-amd64), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (netbsd-amd64), const IFT_ECONET = 206 pkg syscall (netbsd-amd64), const IFT_EON = 25 pkg syscall (netbsd-amd64), const IFT_EPLRS = 87 pkg syscall (netbsd-amd64), const IFT_ESCON = 73 pkg syscall (netbsd-amd64), const IFT_ETHER = 6 pkg syscall (netbsd-amd64), const IFT_FAITH = 242 pkg syscall (netbsd-amd64), const IFT_FAST = 125 pkg syscall (netbsd-amd64), const IFT_FASTETHER = 62 pkg syscall (netbsd-amd64), const IFT_FASTETHERFX = 69 pkg syscall (netbsd-amd64), const IFT_FDDI = 15 pkg syscall (netbsd-amd64), const IFT_FIBRECHANNEL = 56 pkg syscall (netbsd-amd64), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (netbsd-amd64), const IFT_FRAMERELAYMPI = 92 pkg syscall (netbsd-amd64), const IFT_FRDLCIENDPT = 193 pkg syscall (netbsd-amd64), const IFT_FRELAY = 32 pkg syscall (netbsd-amd64), const IFT_FRELAYDCE = 44 pkg syscall (netbsd-amd64), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (netbsd-amd64), const IFT_FRFORWARD = 158 pkg syscall (netbsd-amd64), const IFT_G703AT2MB = 67 pkg syscall (netbsd-amd64), const IFT_G703AT64K = 66 pkg syscall (netbsd-amd64), const IFT_GIF = 240 pkg syscall (netbsd-amd64), const IFT_GIGABITETHERNET = 117 pkg syscall (netbsd-amd64), const IFT_GR303IDT = 178 pkg syscall (netbsd-amd64), const IFT_GR303RDT = 177 pkg syscall (netbsd-amd64), const IFT_H323GATEKEEPER = 164 pkg syscall (netbsd-amd64), const IFT_H323PROXY = 165 pkg syscall (netbsd-amd64), const IFT_HDH1822 = 3 pkg syscall (netbsd-amd64), const IFT_HDLC = 118 pkg syscall (netbsd-amd64), const IFT_HDSL2 = 168 pkg syscall (netbsd-amd64), const IFT_HIPERLAN2 = 183 pkg syscall (netbsd-amd64), const IFT_HIPPI = 47 pkg syscall (netbsd-amd64), const IFT_HIPPIINTERFACE = 57 pkg syscall (netbsd-amd64), const IFT_HOSTPAD = 90 pkg syscall (netbsd-amd64), const IFT_HSSI = 46 pkg syscall (netbsd-amd64), const IFT_HY = 14 pkg syscall (netbsd-amd64), const IFT_IBM370PARCHAN = 72 pkg syscall (netbsd-amd64), const IFT_IDSL = 154 pkg syscall (netbsd-amd64), const IFT_IEEE1394 = 144 pkg syscall (netbsd-amd64), const IFT_IEEE80211 = 71 pkg syscall (netbsd-amd64), const IFT_IEEE80212 = 55 pkg syscall (netbsd-amd64), const IFT_IEEE8023ADLAG = 161 pkg syscall (netbsd-amd64), const IFT_IFGSN = 145 pkg syscall (netbsd-amd64), const IFT_IMT = 190 pkg syscall (netbsd-amd64), const IFT_INFINIBAND = 199 pkg syscall (netbsd-amd64), const IFT_INTERLEAVE = 124 pkg syscall (netbsd-amd64), const IFT_IP = 126 pkg syscall (netbsd-amd64), const IFT_IPFORWARD = 142 pkg syscall (netbsd-amd64), const IFT_IPOVERATM = 114 pkg syscall (netbsd-amd64), const IFT_IPOVERCDLC = 109 pkg syscall (netbsd-amd64), const IFT_IPOVERCLAW = 110 pkg syscall (netbsd-amd64), const IFT_IPSWITCH = 78 pkg syscall (netbsd-amd64), const IFT_ISDN = 63 pkg syscall (netbsd-amd64), const IFT_ISDNBASIC = 20 pkg syscall (netbsd-amd64), const IFT_ISDNPRIMARY = 21 pkg syscall (netbsd-amd64), const IFT_ISDNS = 75 pkg syscall (netbsd-amd64), const IFT_ISDNU = 76 pkg syscall (netbsd-amd64), const IFT_ISO88022LLC = 41 pkg syscall (netbsd-amd64), const IFT_ISO88023 = 7 pkg syscall (netbsd-amd64), const IFT_ISO88024 = 8 pkg syscall (netbsd-amd64), const IFT_ISO88025 = 9 pkg syscall (netbsd-amd64), const IFT_ISO88025CRFPINT = 98 pkg syscall (netbsd-amd64), const IFT_ISO88025DTR = 86 pkg syscall (netbsd-amd64), const IFT_ISO88025FIBER = 115 pkg syscall (netbsd-amd64), const IFT_ISO88026 = 10 pkg syscall (netbsd-amd64), const IFT_ISUP = 179 pkg syscall (netbsd-amd64), const IFT_L2VLAN = 135 pkg syscall (netbsd-amd64), const IFT_L3IPVLAN = 136 pkg syscall (netbsd-amd64), const IFT_L3IPXVLAN = 137 pkg syscall (netbsd-amd64), const IFT_LAPB = 16 pkg syscall (netbsd-amd64), const IFT_LAPD = 77 pkg syscall (netbsd-amd64), const IFT_LAPF = 119 pkg syscall (netbsd-amd64), const IFT_LINEGROUP = 210 pkg syscall (netbsd-amd64), const IFT_LOCALTALK = 42 pkg syscall (netbsd-amd64), const IFT_LOOP = 24 pkg syscall (netbsd-amd64), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (netbsd-amd64), const IFT_MFSIGLINK = 167 pkg syscall (netbsd-amd64), const IFT_MIOX25 = 38 pkg syscall (netbsd-amd64), const IFT_MODEM = 48 pkg syscall (netbsd-amd64), const IFT_MPC = 113 pkg syscall (netbsd-amd64), const IFT_MPLS = 166 pkg syscall (netbsd-amd64), const IFT_MPLSTUNNEL = 150 pkg syscall (netbsd-amd64), const IFT_MSDSL = 143 pkg syscall (netbsd-amd64), const IFT_MVL = 191 pkg syscall (netbsd-amd64), const IFT_MYRINET = 99 pkg syscall (netbsd-amd64), const IFT_NFAS = 175 pkg syscall (netbsd-amd64), const IFT_NSIP = 27 pkg syscall (netbsd-amd64), const IFT_OPTICALCHANNEL = 195 pkg syscall (netbsd-amd64), const IFT_OPTICALTRANSPORT = 196 pkg syscall (netbsd-amd64), const IFT_OTHER = 1 pkg syscall (netbsd-amd64), const IFT_P10 = 12 pkg syscall (netbsd-amd64), const IFT_P80 = 13 pkg syscall (netbsd-amd64), const IFT_PARA = 34 pkg syscall (netbsd-amd64), const IFT_PFLOG = 245 pkg syscall (netbsd-amd64), const IFT_PFSYNC = 246 pkg syscall (netbsd-amd64), const IFT_PLC = 174 pkg syscall (netbsd-amd64), const IFT_PON155 = 207 pkg syscall (netbsd-amd64), const IFT_PON622 = 208 pkg syscall (netbsd-amd64), const IFT_POS = 171 pkg syscall (netbsd-amd64), const IFT_PPP = 23 pkg syscall (netbsd-amd64), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (netbsd-amd64), const IFT_PROPATM = 197 pkg syscall (netbsd-amd64), const IFT_PROPBWAP2MP = 184 pkg syscall (netbsd-amd64), const IFT_PROPCNLS = 89 pkg syscall (netbsd-amd64), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (netbsd-amd64), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (netbsd-amd64), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (netbsd-amd64), const IFT_PROPMUX = 54 pkg syscall (netbsd-amd64), const IFT_PROPVIRTUAL = 53 pkg syscall (netbsd-amd64), const IFT_PROPWIRELESSP2P = 157 pkg syscall (netbsd-amd64), const IFT_PTPSERIAL = 22 pkg syscall (netbsd-amd64), const IFT_PVC = 241 pkg syscall (netbsd-amd64), const IFT_Q2931 = 201 pkg syscall (netbsd-amd64), const IFT_QLLC = 68 pkg syscall (netbsd-amd64), const IFT_RADIOMAC = 188 pkg syscall (netbsd-amd64), const IFT_RADSL = 95 pkg syscall (netbsd-amd64), const IFT_REACHDSL = 192 pkg syscall (netbsd-amd64), const IFT_RFC1483 = 159 pkg syscall (netbsd-amd64), const IFT_RS232 = 33 pkg syscall (netbsd-amd64), const IFT_RSRB = 79 pkg syscall (netbsd-amd64), const IFT_SDLC = 17 pkg syscall (netbsd-amd64), const IFT_SDSL = 96 pkg syscall (netbsd-amd64), const IFT_SHDSL = 169 pkg syscall (netbsd-amd64), const IFT_SIP = 31 pkg syscall (netbsd-amd64), const IFT_SIPSIG = 204 pkg syscall (netbsd-amd64), const IFT_SIPTG = 203 pkg syscall (netbsd-amd64), const IFT_SLIP = 28 pkg syscall (netbsd-amd64), const IFT_SMDSDXI = 43 pkg syscall (netbsd-amd64), const IFT_SMDSICIP = 52 pkg syscall (netbsd-amd64), const IFT_SONET = 39 pkg syscall (netbsd-amd64), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (netbsd-amd64), const IFT_SONETPATH = 50 pkg syscall (netbsd-amd64), const IFT_SONETVT = 51 pkg syscall (netbsd-amd64), const IFT_SRP = 151 pkg syscall (netbsd-amd64), const IFT_SS7SIGLINK = 156 pkg syscall (netbsd-amd64), const IFT_STACKTOSTACK = 111 pkg syscall (netbsd-amd64), const IFT_STARLAN = 11 pkg syscall (netbsd-amd64), const IFT_STF = 215 pkg syscall (netbsd-amd64), const IFT_T1 = 18 pkg syscall (netbsd-amd64), const IFT_TDLC = 116 pkg syscall (netbsd-amd64), const IFT_TELINK = 200 pkg syscall (netbsd-amd64), const IFT_TERMPAD = 91 pkg syscall (netbsd-amd64), const IFT_TR008 = 176 pkg syscall (netbsd-amd64), const IFT_TRANSPHDLC = 123 pkg syscall (netbsd-amd64), const IFT_TUNNEL = 131 pkg syscall (netbsd-amd64), const IFT_ULTRA = 29 pkg syscall (netbsd-amd64), const IFT_USB = 160 pkg syscall (netbsd-amd64), const IFT_V11 = 64 pkg syscall (netbsd-amd64), const IFT_V35 = 45 pkg syscall (netbsd-amd64), const IFT_V36 = 65 pkg syscall (netbsd-amd64), const IFT_V37 = 120 pkg syscall (netbsd-amd64), const IFT_VDSL = 97 pkg syscall (netbsd-amd64), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (netbsd-amd64), const IFT_VIRTUALTG = 202 pkg syscall (netbsd-amd64), const IFT_VOICEDID = 213 pkg syscall (netbsd-amd64), const IFT_VOICEEM = 100 pkg syscall (netbsd-amd64), const IFT_VOICEEMFGD = 211 pkg syscall (netbsd-amd64), const IFT_VOICEENCAP = 103 pkg syscall (netbsd-amd64), const IFT_VOICEFGDEANA = 212 pkg syscall (netbsd-amd64), const IFT_VOICEFXO = 101 pkg syscall (netbsd-amd64), const IFT_VOICEFXS = 102 pkg syscall (netbsd-amd64), const IFT_VOICEOVERATM = 152 pkg syscall (netbsd-amd64), const IFT_VOICEOVERCABLE = 198 pkg syscall (netbsd-amd64), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (netbsd-amd64), const IFT_VOICEOVERIP = 104 pkg syscall (netbsd-amd64), const IFT_X213 = 93 pkg syscall (netbsd-amd64), const IFT_X25 = 5 pkg syscall (netbsd-amd64), const IFT_X25DDN = 4 pkg syscall (netbsd-amd64), const IFT_X25HUNTGROUP = 122 pkg syscall (netbsd-amd64), const IFT_X25MLP = 121 pkg syscall (netbsd-amd64), const IFT_X25PLE = 40 pkg syscall (netbsd-amd64), const IFT_XETHER = 26 pkg syscall (netbsd-amd64), const IGNBRK = 1 pkg syscall (netbsd-amd64), const IGNCR = 128 pkg syscall (netbsd-amd64), const IGNPAR = 4 pkg syscall (netbsd-amd64), const IMAXBEL = 8192 pkg syscall (netbsd-amd64), const INLCR = 64 pkg syscall (netbsd-amd64), const INPCK = 16 pkg syscall (netbsd-amd64), const IN_CLASSA_HOST = 16777215 pkg syscall (netbsd-amd64), const IN_CLASSA_MAX = 128 pkg syscall (netbsd-amd64), const IN_CLASSA_NET = 4278190080 pkg syscall (netbsd-amd64), const IN_CLASSA_NSHIFT = 24 pkg syscall (netbsd-amd64), const IN_CLASSB_HOST = 65535 pkg syscall (netbsd-amd64), const IN_CLASSB_MAX = 65536 pkg syscall (netbsd-amd64), const IN_CLASSB_NET = 4294901760 pkg syscall (netbsd-amd64), const IN_CLASSB_NSHIFT = 16 pkg syscall (netbsd-amd64), const IN_CLASSC_HOST = 255 pkg syscall (netbsd-amd64), const IN_CLASSC_NET = 4294967040 pkg syscall (netbsd-amd64), const IN_CLASSC_NSHIFT = 8 pkg syscall (netbsd-amd64), const IN_CLASSD_HOST = 268435455 pkg syscall (netbsd-amd64), const IN_CLASSD_NET = 4026531840 pkg syscall (netbsd-amd64), const IN_CLASSD_NSHIFT = 28 pkg syscall (netbsd-amd64), const IN_LOOPBACKNET = 127 pkg syscall (netbsd-amd64), const IPPROTO_AH = 51 pkg syscall (netbsd-amd64), const IPPROTO_CARP = 112 pkg syscall (netbsd-amd64), const IPPROTO_DONE = 257 pkg syscall (netbsd-amd64), const IPPROTO_DSTOPTS = 60 pkg syscall (netbsd-amd64), const IPPROTO_EGP = 8 pkg syscall (netbsd-amd64), const IPPROTO_ENCAP = 98 pkg syscall (netbsd-amd64), const IPPROTO_EON = 80 pkg syscall (netbsd-amd64), const IPPROTO_ESP = 50 pkg syscall (netbsd-amd64), const IPPROTO_ETHERIP = 97 pkg syscall (netbsd-amd64), const IPPROTO_FRAGMENT = 44 pkg syscall (netbsd-amd64), const IPPROTO_GGP = 3 pkg syscall (netbsd-amd64), const IPPROTO_GRE = 47 pkg syscall (netbsd-amd64), const IPPROTO_HOPOPTS = 0 pkg syscall (netbsd-amd64), const IPPROTO_ICMP = 1 pkg syscall (netbsd-amd64), const IPPROTO_ICMPV6 = 58 pkg syscall (netbsd-amd64), const IPPROTO_IDP = 22 pkg syscall (netbsd-amd64), const IPPROTO_IGMP = 2 pkg syscall (netbsd-amd64), const IPPROTO_IPCOMP = 108 pkg syscall (netbsd-amd64), const IPPROTO_IPIP = 4 pkg syscall (netbsd-amd64), const IPPROTO_IPV4 = 4 pkg syscall (netbsd-amd64), const IPPROTO_IPV6_ICMP = 58 pkg syscall (netbsd-amd64), const IPPROTO_MAX = 256 pkg syscall (netbsd-amd64), const IPPROTO_MAXID = 52 pkg syscall (netbsd-amd64), const IPPROTO_MOBILE = 55 pkg syscall (netbsd-amd64), const IPPROTO_NONE = 59 pkg syscall (netbsd-amd64), const IPPROTO_PFSYNC = 240 pkg syscall (netbsd-amd64), const IPPROTO_PIM = 103 pkg syscall (netbsd-amd64), const IPPROTO_PUP = 12 pkg syscall (netbsd-amd64), const IPPROTO_RAW = 255 pkg syscall (netbsd-amd64), const IPPROTO_ROUTING = 43 pkg syscall (netbsd-amd64), const IPPROTO_RSVP = 46 pkg syscall (netbsd-amd64), const IPPROTO_TP = 29 pkg syscall (netbsd-amd64), const IPPROTO_VRRP = 112 pkg syscall (netbsd-amd64), const IPV6_CHECKSUM = 26 pkg syscall (netbsd-amd64), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (netbsd-amd64), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (netbsd-amd64), const IPV6_DEFHLIM = 64 pkg syscall (netbsd-amd64), const IPV6_DONTFRAG = 62 pkg syscall (netbsd-amd64), const IPV6_DSTOPTS = 50 pkg syscall (netbsd-amd64), const IPV6_FAITH = 29 pkg syscall (netbsd-amd64), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (netbsd-amd64), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (netbsd-amd64), const IPV6_FRAGTTL = 120 pkg syscall (netbsd-amd64), const IPV6_HLIMDEC = 1 pkg syscall (netbsd-amd64), const IPV6_HOPLIMIT = 47 pkg syscall (netbsd-amd64), const IPV6_HOPOPTS = 49 pkg syscall (netbsd-amd64), const IPV6_IPSEC_POLICY = 28 pkg syscall (netbsd-amd64), const IPV6_JOIN_GROUP = 12 pkg syscall (netbsd-amd64), const IPV6_LEAVE_GROUP = 13 pkg syscall (netbsd-amd64), const IPV6_MAXHLIM = 255 pkg syscall (netbsd-amd64), const IPV6_MAXPACKET = 65535 pkg syscall (netbsd-amd64), const IPV6_MMTU = 1280 pkg syscall (netbsd-amd64), const IPV6_MULTICAST_HOPS = 10 pkg syscall (netbsd-amd64), const IPV6_MULTICAST_IF = 9 pkg syscall (netbsd-amd64), const IPV6_MULTICAST_LOOP = 11 pkg syscall (netbsd-amd64), const IPV6_NEXTHOP = 48 pkg syscall (netbsd-amd64), const IPV6_PATHMTU = 44 pkg syscall (netbsd-amd64), const IPV6_PKTINFO = 46 pkg syscall (netbsd-amd64), const IPV6_PORTRANGE = 14 pkg syscall (netbsd-amd64), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (netbsd-amd64), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (netbsd-amd64), const IPV6_PORTRANGE_LOW = 2 pkg syscall (netbsd-amd64), const IPV6_RECVDSTOPTS = 40 pkg syscall (netbsd-amd64), const IPV6_RECVHOPLIMIT = 37 pkg syscall (netbsd-amd64), const IPV6_RECVHOPOPTS = 39 pkg syscall (netbsd-amd64), const IPV6_RECVPATHMTU = 43 pkg syscall (netbsd-amd64), const IPV6_RECVPKTINFO = 36 pkg syscall (netbsd-amd64), const IPV6_RECVRTHDR = 38 pkg syscall (netbsd-amd64), const IPV6_RECVTCLASS = 57 pkg syscall (netbsd-amd64), const IPV6_RTHDR = 51 pkg syscall (netbsd-amd64), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (netbsd-amd64), const IPV6_RTHDR_LOOSE = 0 pkg syscall (netbsd-amd64), const IPV6_RTHDR_STRICT = 1 pkg syscall (netbsd-amd64), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (netbsd-amd64), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (netbsd-amd64), const IPV6_TCLASS = 61 pkg syscall (netbsd-amd64), const IPV6_UNICAST_HOPS = 4 pkg syscall (netbsd-amd64), const IPV6_USE_MIN_MTU = 42 pkg syscall (netbsd-amd64), const IPV6_V6ONLY = 27 pkg syscall (netbsd-amd64), const IPV6_VERSION = 96 pkg syscall (netbsd-amd64), const IPV6_VERSION_MASK = 240 pkg syscall (netbsd-amd64), const IP_ADD_MEMBERSHIP = 12 pkg syscall (netbsd-amd64), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (netbsd-amd64), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (netbsd-amd64), const IP_DF = 16384 pkg syscall (netbsd-amd64), const IP_DROP_MEMBERSHIP = 13 pkg syscall (netbsd-amd64), const IP_EF = 32768 pkg syscall (netbsd-amd64), const IP_ERRORMTU = 21 pkg syscall (netbsd-amd64), const IP_HDRINCL = 2 pkg syscall (netbsd-amd64), const IP_IPSEC_POLICY = 22 pkg syscall (netbsd-amd64), const IP_MAXPACKET = 65535 pkg syscall (netbsd-amd64), const IP_MAX_MEMBERSHIPS = 20 pkg syscall (netbsd-amd64), const IP_MF = 8192 pkg syscall (netbsd-amd64), const IP_MINFRAGSIZE = 69 pkg syscall (netbsd-amd64), const IP_MINTTL = 24 pkg syscall (netbsd-amd64), const IP_MSS = 576 pkg syscall (netbsd-amd64), const IP_MULTICAST_IF = 9 pkg syscall (netbsd-amd64), const IP_MULTICAST_LOOP = 11 pkg syscall (netbsd-amd64), const IP_MULTICAST_TTL = 10 pkg syscall (netbsd-amd64), const IP_OFFMASK = 8191 pkg syscall (netbsd-amd64), const IP_OPTIONS = 1 pkg syscall (netbsd-amd64), const IP_PORTRANGE = 19 pkg syscall (netbsd-amd64), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (netbsd-amd64), const IP_PORTRANGE_HIGH = 1 pkg syscall (netbsd-amd64), const IP_PORTRANGE_LOW = 2 pkg syscall (netbsd-amd64), const IP_RECVDSTADDR = 7 pkg syscall (netbsd-amd64), const IP_RECVIF = 20 pkg syscall (netbsd-amd64), const IP_RECVOPTS = 5 pkg syscall (netbsd-amd64), const IP_RECVRETOPTS = 6 pkg syscall (netbsd-amd64), const IP_RECVTTL = 23 pkg syscall (netbsd-amd64), const IP_RETOPTS = 8 pkg syscall (netbsd-amd64), const IP_RF = 32768 pkg syscall (netbsd-amd64), const IP_TOS = 3 pkg syscall (netbsd-amd64), const IP_TTL = 4 pkg syscall (netbsd-amd64), const ISIG = 128 pkg syscall (netbsd-amd64), const ISTRIP = 32 pkg syscall (netbsd-amd64), const IXANY = 2048 pkg syscall (netbsd-amd64), const IXOFF = 1024 pkg syscall (netbsd-amd64), const IXON = 512 pkg syscall (netbsd-amd64), const ImplementsGetwd = false pkg syscall (netbsd-amd64), const LOCK_EX = 2 pkg syscall (netbsd-amd64), const LOCK_NB = 4 pkg syscall (netbsd-amd64), const LOCK_SH = 1 pkg syscall (netbsd-amd64), const LOCK_UN = 8 pkg syscall (netbsd-amd64), const MSG_BCAST = 256 pkg syscall (netbsd-amd64), const MSG_CMSG_CLOEXEC = 2048 pkg syscall (netbsd-amd64), const MSG_CONTROLMBUF = 33554432 pkg syscall (netbsd-amd64), const MSG_CTRUNC = 32 pkg syscall (netbsd-amd64), const MSG_DONTROUTE = 4 pkg syscall (netbsd-amd64), const MSG_DONTWAIT = 128 pkg syscall (netbsd-amd64), const MSG_EOR = 8 pkg syscall (netbsd-amd64), const MSG_IOVUSRSPACE = 67108864 pkg syscall (netbsd-amd64), const MSG_LENUSRSPACE = 134217728 pkg syscall (netbsd-amd64), const MSG_MCAST = 512 pkg syscall (netbsd-amd64), const MSG_NAMEMBUF = 16777216 pkg syscall (netbsd-amd64), const MSG_NBIO = 4096 pkg syscall (netbsd-amd64), const MSG_NOSIGNAL = 1024 pkg syscall (netbsd-amd64), const MSG_OOB = 1 pkg syscall (netbsd-amd64), const MSG_PEEK = 2 pkg syscall (netbsd-amd64), const MSG_TRUNC = 16 pkg syscall (netbsd-amd64), const MSG_USERFLAGS = 16777215 pkg syscall (netbsd-amd64), const MSG_WAITALL = 64 pkg syscall (netbsd-amd64), const NAME_MAX = 511 pkg syscall (netbsd-amd64), const NET_RT_DUMP = 1 pkg syscall (netbsd-amd64), const NET_RT_FLAGS = 2 pkg syscall (netbsd-amd64), const NET_RT_IFLIST = 5 pkg syscall (netbsd-amd64), const NET_RT_MAXID = 6 pkg syscall (netbsd-amd64), const NET_RT_OIFLIST = 4 pkg syscall (netbsd-amd64), const NET_RT_OOIFLIST = 3 pkg syscall (netbsd-amd64), const NOFLSH = 2147483648 pkg syscall (netbsd-amd64), const NOTE_ATTRIB = 8 pkg syscall (netbsd-amd64), const NOTE_CHILD = 4 pkg syscall (netbsd-amd64), const NOTE_DELETE = 1 pkg syscall (netbsd-amd64), const NOTE_EXEC = 536870912 pkg syscall (netbsd-amd64), const NOTE_EXIT = 2147483648 pkg syscall (netbsd-amd64), const NOTE_EXTEND = 4 pkg syscall (netbsd-amd64), const NOTE_FORK = 1073741824 pkg syscall (netbsd-amd64), const NOTE_LINK = 16 pkg syscall (netbsd-amd64), const NOTE_LOWAT = 1 pkg syscall (netbsd-amd64), const NOTE_PCTRLMASK = 4026531840 pkg syscall (netbsd-amd64), const NOTE_PDATAMASK = 1048575 pkg syscall (netbsd-amd64), const NOTE_RENAME = 32 pkg syscall (netbsd-amd64), const NOTE_REVOKE = 64 pkg syscall (netbsd-amd64), const NOTE_TRACK = 1 pkg syscall (netbsd-amd64), const NOTE_TRACKERR = 2 pkg syscall (netbsd-amd64), const NOTE_WRITE = 2 pkg syscall (netbsd-amd64), const OCRNL = 16 pkg syscall (netbsd-amd64), const OFIOGETBMAP = 3221513850 pkg syscall (netbsd-amd64), const ONLCR = 2 pkg syscall (netbsd-amd64), const ONLRET = 64 pkg syscall (netbsd-amd64), const ONOCR = 32 pkg syscall (netbsd-amd64), const ONOEOT = 8 pkg syscall (netbsd-amd64), const OPOST = 1 pkg syscall (netbsd-amd64), const O_ACCMODE = 3 pkg syscall (netbsd-amd64), const O_ALT_IO = 262144 pkg syscall (netbsd-amd64), const O_APPEND = 8 pkg syscall (netbsd-amd64), const O_ASYNC = 64 pkg syscall (netbsd-amd64), const O_CLOEXEC = 4194304 pkg syscall (netbsd-amd64), const O_CREAT = 512 pkg syscall (netbsd-amd64), const O_DIRECT = 524288 pkg syscall (netbsd-amd64), const O_DIRECTORY = 2097152 pkg syscall (netbsd-amd64), const O_DSYNC = 65536 pkg syscall (netbsd-amd64), const O_EXCL = 2048 pkg syscall (netbsd-amd64), const O_EXLOCK = 32 pkg syscall (netbsd-amd64), const O_FSYNC = 128 pkg syscall (netbsd-amd64), const O_NDELAY = 4 pkg syscall (netbsd-amd64), const O_NOCTTY = 32768 pkg syscall (netbsd-amd64), const O_NOFOLLOW = 256 pkg syscall (netbsd-amd64), const O_NONBLOCK = 4 pkg syscall (netbsd-amd64), const O_NOSIGPIPE = 16777216 pkg syscall (netbsd-amd64), const O_RSYNC = 131072 pkg syscall (netbsd-amd64), const O_SHLOCK = 16 pkg syscall (netbsd-amd64), const O_SYNC = 128 pkg syscall (netbsd-amd64), const O_TRUNC = 1024 pkg syscall (netbsd-amd64), const PARENB = 4096 pkg syscall (netbsd-amd64), const PARMRK = 8 pkg syscall (netbsd-amd64), const PARODD = 8192 pkg syscall (netbsd-amd64), const PENDIN = 536870912 pkg syscall (netbsd-amd64), const PRI_IOFLUSH = 124 pkg syscall (netbsd-amd64), const PTRACE_CONT = 7 pkg syscall (netbsd-amd64), const PTRACE_KILL = 8 pkg syscall (netbsd-amd64), const PTRACE_TRACEME = 0 pkg syscall (netbsd-amd64), const RLIMIT_AS = 10 pkg syscall (netbsd-amd64), const RLIMIT_CORE = 4 pkg syscall (netbsd-amd64), const RLIMIT_CPU = 0 pkg syscall (netbsd-amd64), const RLIMIT_DATA = 2 pkg syscall (netbsd-amd64), const RLIMIT_FSIZE = 1 pkg syscall (netbsd-amd64), const RLIMIT_NOFILE = 8 pkg syscall (netbsd-amd64), const RLIMIT_STACK = 3 pkg syscall (netbsd-amd64), const RLIM_INFINITY = 9223372036854775807 pkg syscall (netbsd-amd64), const RTAX_AUTHOR = 6 pkg syscall (netbsd-amd64), const RTAX_BRD = 7 pkg syscall (netbsd-amd64), const RTAX_DST = 0 pkg syscall (netbsd-amd64), const RTAX_GATEWAY = 1 pkg syscall (netbsd-amd64), const RTAX_GENMASK = 3 pkg syscall (netbsd-amd64), const RTAX_IFA = 5 pkg syscall (netbsd-amd64), const RTAX_IFP = 4 pkg syscall (netbsd-amd64), const RTAX_MAX = 9 pkg syscall (netbsd-amd64), const RTAX_NETMASK = 2 pkg syscall (netbsd-amd64), const RTAX_TAG = 8 pkg syscall (netbsd-amd64), const RTA_AUTHOR = 64 pkg syscall (netbsd-amd64), const RTA_BRD = 128 pkg syscall (netbsd-amd64), const RTA_DST = 1 pkg syscall (netbsd-amd64), const RTA_GATEWAY = 2 pkg syscall (netbsd-amd64), const RTA_GENMASK = 8 pkg syscall (netbsd-amd64), const RTA_IFA = 32 pkg syscall (netbsd-amd64), const RTA_IFP = 16 pkg syscall (netbsd-amd64), const RTA_NETMASK = 4 pkg syscall (netbsd-amd64), const RTA_TAG = 256 pkg syscall (netbsd-amd64), const RTF_ANNOUNCE = 131072 pkg syscall (netbsd-amd64), const RTF_BLACKHOLE = 4096 pkg syscall (netbsd-amd64), const RTF_CLONED = 8192 pkg syscall (netbsd-amd64), const RTF_CLONING = 256 pkg syscall (netbsd-amd64), const RTF_DONE = 64 pkg syscall (netbsd-amd64), const RTF_DYNAMIC = 16 pkg syscall (netbsd-amd64), const RTF_GATEWAY = 2 pkg syscall (netbsd-amd64), const RTF_HOST = 4 pkg syscall (netbsd-amd64), const RTF_LLINFO = 1024 pkg syscall (netbsd-amd64), const RTF_MASK = 128 pkg syscall (netbsd-amd64), const RTF_MODIFIED = 32 pkg syscall (netbsd-amd64), const RTF_PROTO1 = 32768 pkg syscall (netbsd-amd64), const RTF_PROTO2 = 16384 pkg syscall (netbsd-amd64), const RTF_REJECT = 8 pkg syscall (netbsd-amd64), const RTF_SRC = 65536 pkg syscall (netbsd-amd64), const RTF_STATIC = 2048 pkg syscall (netbsd-amd64), const RTF_UP = 1 pkg syscall (netbsd-amd64), const RTF_XRESOLVE = 512 pkg syscall (netbsd-amd64), const RTM_ADD = 1 pkg syscall (netbsd-amd64), const RTM_CHANGE = 3 pkg syscall (netbsd-amd64), const RTM_CHGADDR = 21 pkg syscall (netbsd-amd64), const RTM_DELADDR = 13 pkg syscall (netbsd-amd64), const RTM_DELETE = 2 pkg syscall (netbsd-amd64), const RTM_GET = 4 pkg syscall (netbsd-amd64), const RTM_IEEE80211 = 17 pkg syscall (netbsd-amd64), const RTM_IFANNOUNCE = 16 pkg syscall (netbsd-amd64), const RTM_IFINFO = 20 pkg syscall (netbsd-amd64), const RTM_LLINFO_UPD = 19 pkg syscall (netbsd-amd64), const RTM_LOCK = 8 pkg syscall (netbsd-amd64), const RTM_LOSING = 5 pkg syscall (netbsd-amd64), const RTM_MISS = 7 pkg syscall (netbsd-amd64), const RTM_NEWADDR = 12 pkg syscall (netbsd-amd64), const RTM_OIFINFO = 15 pkg syscall (netbsd-amd64), const RTM_OLDADD = 9 pkg syscall (netbsd-amd64), const RTM_OLDDEL = 10 pkg syscall (netbsd-amd64), const RTM_OOIFINFO = 14 pkg syscall (netbsd-amd64), const RTM_REDIRECT = 6 pkg syscall (netbsd-amd64), const RTM_RESOLVE = 11 pkg syscall (netbsd-amd64), const RTM_RTTUNIT = 1000000 pkg syscall (netbsd-amd64), const RTM_SETGATE = 18 pkg syscall (netbsd-amd64), const RTM_VERSION = 4 pkg syscall (netbsd-amd64), const RTV_EXPIRE = 4 pkg syscall (netbsd-amd64), const RTV_HOPCOUNT = 2 pkg syscall (netbsd-amd64), const RTV_MTU = 1 pkg syscall (netbsd-amd64), const RTV_RPIPE = 8 pkg syscall (netbsd-amd64), const RTV_RTT = 64 pkg syscall (netbsd-amd64), const RTV_RTTVAR = 128 pkg syscall (netbsd-amd64), const RTV_SPIPE = 16 pkg syscall (netbsd-amd64), const RTV_SSTHRESH = 32 pkg syscall (netbsd-amd64), const RUSAGE_CHILDREN = -1 pkg syscall (netbsd-amd64), const RUSAGE_SELF = 0 pkg syscall (netbsd-amd64), const SCM_CREDS = 4 pkg syscall (netbsd-amd64), const SCM_RIGHTS = 1 pkg syscall (netbsd-amd64), const SCM_TIMESTAMP = 8 pkg syscall (netbsd-amd64), const SIGBUS = 10 pkg syscall (netbsd-amd64), const SIGCHLD = 20 pkg syscall (netbsd-amd64), const SIGCONT = 19 pkg syscall (netbsd-amd64), const SIGEMT = 7 pkg syscall (netbsd-amd64), const SIGINFO = 29 pkg syscall (netbsd-amd64), const SIGIO = 23 pkg syscall (netbsd-amd64), const SIGIOT = 6 pkg syscall (netbsd-amd64), const SIGPROF = 27 pkg syscall (netbsd-amd64), const SIGPWR = 32 pkg syscall (netbsd-amd64), const SIGSTOP = 17 pkg syscall (netbsd-amd64), const SIGSYS = 12 pkg syscall (netbsd-amd64), const SIGTSTP = 18 pkg syscall (netbsd-amd64), const SIGTTIN = 21 pkg syscall (netbsd-amd64), const SIGTTOU = 22 pkg syscall (netbsd-amd64), const SIGURG = 16 pkg syscall (netbsd-amd64), const SIGUSR1 = 30 pkg syscall (netbsd-amd64), const SIGUSR2 = 31 pkg syscall (netbsd-amd64), const SIGVTALRM = 26 pkg syscall (netbsd-amd64), const SIGWINCH = 28 pkg syscall (netbsd-amd64), const SIGXCPU = 24 pkg syscall (netbsd-amd64), const SIGXFSZ = 25 pkg syscall (netbsd-amd64), const SIOCADDMULTI = 2156947761 pkg syscall (netbsd-amd64), const SIOCADDRT = 2151182858 pkg syscall (netbsd-amd64), const SIOCAIFADDR = 2151704858 pkg syscall (netbsd-amd64), const SIOCALIFADDR = 2165860636 pkg syscall (netbsd-amd64), const SIOCATMARK = 1074033415 pkg syscall (netbsd-amd64), const SIOCDELMULTI = 2156947762 pkg syscall (netbsd-amd64), const SIOCDELRT = 2151182859 pkg syscall (netbsd-amd64), const SIOCDIFADDR = 2156947737 pkg syscall (netbsd-amd64), const SIOCDIFPHYADDR = 2156947785 pkg syscall (netbsd-amd64), const SIOCDLIFADDR = 2165860638 pkg syscall (netbsd-amd64), const SIOCGDRVSPEC = 3223873915 pkg syscall (netbsd-amd64), const SIOCGETPFSYNC = 3230689784 pkg syscall (netbsd-amd64), const SIOCGETSGCNT = 3223352628 pkg syscall (netbsd-amd64), const SIOCGETVIFCNT = 3223876915 pkg syscall (netbsd-amd64), const SIOCGHIWAT = 1074033409 pkg syscall (netbsd-amd64), const SIOCGIFADDR = 3230689569 pkg syscall (netbsd-amd64), const SIOCGIFADDRPREF = 3231213856 pkg syscall (netbsd-amd64), const SIOCGIFALIAS = 3225446683 pkg syscall (netbsd-amd64), const SIOCGIFBRDADDR = 3230689571 pkg syscall (netbsd-amd64), const SIOCGIFCAP = 3223349622 pkg syscall (netbsd-amd64), const SIOCGIFCONF = 3222300966 pkg syscall (netbsd-amd64), const SIOCGIFDATA = 3231213957 pkg syscall (netbsd-amd64), const SIOCGIFDLT = 3230689655 pkg syscall (netbsd-amd64), const SIOCGIFDSTADDR = 3230689570 pkg syscall (netbsd-amd64), const SIOCGIFFLAGS = 3230689553 pkg syscall (netbsd-amd64), const SIOCGIFGENERIC = 3230689594 pkg syscall (netbsd-amd64), const SIOCGIFMEDIA = 3224398134 pkg syscall (netbsd-amd64), const SIOCGIFMETRIC = 3230689559 pkg syscall (netbsd-amd64), const SIOCGIFMTU = 3230689662 pkg syscall (netbsd-amd64), const SIOCGIFNETMASK = 3230689573 pkg syscall (netbsd-amd64), const SIOCGIFPDSTADDR = 3230689608 pkg syscall (netbsd-amd64), const SIOCGIFPSRCADDR = 3230689607 pkg syscall (netbsd-amd64), const SIOCGLIFADDR = 3239602461 pkg syscall (netbsd-amd64), const SIOCGLIFPHYADDR = 3239602507 pkg syscall (netbsd-amd64), const SIOCGLINKSTR = 3223873927 pkg syscall (netbsd-amd64), const SIOCGLOWAT = 1074033411 pkg syscall (netbsd-amd64), const SIOCGPGRP = 1074033417 pkg syscall (netbsd-amd64), const SIOCGVH = 3230689667 pkg syscall (netbsd-amd64), const SIOCIFCREATE = 2156947834 pkg syscall (netbsd-amd64), const SIOCIFDESTROY = 2156947833 pkg syscall (netbsd-amd64), const SIOCIFGCLONERS = 3222301048 pkg syscall (netbsd-amd64), const SIOCINITIFADDR = 3228592516 pkg syscall (netbsd-amd64), const SIOCSDRVSPEC = 2150132091 pkg syscall (netbsd-amd64), const SIOCSETPFSYNC = 2156947959 pkg syscall (netbsd-amd64), const SIOCSHIWAT = 2147775232 pkg syscall (netbsd-amd64), const SIOCSIFADDR = 2156947724 pkg syscall (netbsd-amd64), const SIOCSIFADDRPREF = 2157472031 pkg syscall (netbsd-amd64), const SIOCSIFBRDADDR = 2156947731 pkg syscall (netbsd-amd64), const SIOCSIFCAP = 2149607797 pkg syscall (netbsd-amd64), const SIOCSIFDSTADDR = 2156947726 pkg syscall (netbsd-amd64), const SIOCSIFFLAGS = 2156947728 pkg syscall (netbsd-amd64), const SIOCSIFGENERIC = 2156947769 pkg syscall (netbsd-amd64), const SIOCSIFMEDIA = 3230689589 pkg syscall (netbsd-amd64), const SIOCSIFMETRIC = 2156947736 pkg syscall (netbsd-amd64), const SIOCSIFMTU = 2156947839 pkg syscall (netbsd-amd64), const SIOCSIFNETMASK = 2156947734 pkg syscall (netbsd-amd64), const SIOCSIFPHYADDR = 2151704902 pkg syscall (netbsd-amd64), const SIOCSLIFPHYADDR = 2165860682 pkg syscall (netbsd-amd64), const SIOCSLINKSTR = 2150132104 pkg syscall (netbsd-amd64), const SIOCSLOWAT = 2147775234 pkg syscall (netbsd-amd64), const SIOCSPGRP = 2147775240 pkg syscall (netbsd-amd64), const SIOCSVH = 3230689666 pkg syscall (netbsd-amd64), const SIOCZIFDATA = 3231213958 pkg syscall (netbsd-amd64), const SOCK_CLOEXEC = 268435456 pkg syscall (netbsd-amd64), const SOCK_FLAGS_MASK = 4026531840 pkg syscall (netbsd-amd64), const SOCK_NONBLOCK = 536870912 pkg syscall (netbsd-amd64), const SOCK_NOSIGPIPE = 1073741824 pkg syscall (netbsd-amd64), const SOCK_RDM = 4 pkg syscall (netbsd-amd64), const SOL_SOCKET = 65535 pkg syscall (netbsd-amd64), const SOMAXCONN = 128 pkg syscall (netbsd-amd64), const SO_ACCEPTCONN = 2 pkg syscall (netbsd-amd64), const SO_ACCEPTFILTER = 4096 pkg syscall (netbsd-amd64), const SO_BROADCAST = 32 pkg syscall (netbsd-amd64), const SO_DEBUG = 1 pkg syscall (netbsd-amd64), const SO_DONTROUTE = 16 pkg syscall (netbsd-amd64), const SO_ERROR = 4103 pkg syscall (netbsd-amd64), const SO_KEEPALIVE = 8 pkg syscall (netbsd-amd64), const SO_LINGER = 128 pkg syscall (netbsd-amd64), const SO_NOHEADER = 4106 pkg syscall (netbsd-amd64), const SO_NOSIGPIPE = 2048 pkg syscall (netbsd-amd64), const SO_OOBINLINE = 256 pkg syscall (netbsd-amd64), const SO_OVERFLOWED = 4105 pkg syscall (netbsd-amd64), const SO_RCVBUF = 4098 pkg syscall (netbsd-amd64), const SO_RCVLOWAT = 4100 pkg syscall (netbsd-amd64), const SO_RCVTIMEO = 4108 pkg syscall (netbsd-amd64), const SO_REUSEADDR = 4 pkg syscall (netbsd-amd64), const SO_REUSEPORT = 512 pkg syscall (netbsd-amd64), const SO_SNDBUF = 4097 pkg syscall (netbsd-amd64), const SO_SNDLOWAT = 4099 pkg syscall (netbsd-amd64), const SO_SNDTIMEO = 4107 pkg syscall (netbsd-amd64), const SO_TIMESTAMP = 8192 pkg syscall (netbsd-amd64), const SO_TYPE = 4104 pkg syscall (netbsd-amd64), const SO_USELOOPBACK = 64 pkg syscall (netbsd-amd64), const SYSCTL_VERSION = 16777216 pkg syscall (netbsd-amd64), const SYSCTL_VERS_0 = 0 pkg syscall (netbsd-amd64), const SYSCTL_VERS_1 = 16777216 pkg syscall (netbsd-amd64), const SYSCTL_VERS_MASK = 4278190080 pkg syscall (netbsd-amd64), const SYS_ACCEPT = 30 pkg syscall (netbsd-amd64), const SYS_ACCESS = 33 pkg syscall (netbsd-amd64), const SYS_ACCT = 51 pkg syscall (netbsd-amd64), const SYS_ADJTIME = 421 pkg syscall (netbsd-amd64), const SYS_BIND = 104 pkg syscall (netbsd-amd64), const SYS_BREAK = 17 pkg syscall (netbsd-amd64), const SYS_CHDIR = 12 pkg syscall (netbsd-amd64), const SYS_CHFLAGS = 34 pkg syscall (netbsd-amd64), const SYS_CHMOD = 15 pkg syscall (netbsd-amd64), const SYS_CHOWN = 16 pkg syscall (netbsd-amd64), const SYS_CHROOT = 61 pkg syscall (netbsd-amd64), const SYS_CLOCK_GETRES = 429 pkg syscall (netbsd-amd64), const SYS_CLOCK_GETTIME = 427 pkg syscall (netbsd-amd64), const SYS_CLOCK_SETTIME = 428 pkg syscall (netbsd-amd64), const SYS_CLOSE = 6 pkg syscall (netbsd-amd64), const SYS_CONNECT = 98 pkg syscall (netbsd-amd64), const SYS_DUP = 41 pkg syscall (netbsd-amd64), const SYS_DUP2 = 90 pkg syscall (netbsd-amd64), const SYS_DUP3 = 454 pkg syscall (netbsd-amd64), const SYS_EXECVE = 59 pkg syscall (netbsd-amd64), const SYS_EXIT = 1 pkg syscall (netbsd-amd64), const SYS_EXTATTRCTL = 360 pkg syscall (netbsd-amd64), const SYS_EXTATTR_DELETE_FD = 366 pkg syscall (netbsd-amd64), const SYS_EXTATTR_DELETE_FILE = 363 pkg syscall (netbsd-amd64), const SYS_EXTATTR_DELETE_LINK = 369 pkg syscall (netbsd-amd64), const SYS_EXTATTR_GET_FD = 365 pkg syscall (netbsd-amd64), const SYS_EXTATTR_GET_FILE = 362 pkg syscall (netbsd-amd64), const SYS_EXTATTR_GET_LINK = 368 pkg syscall (netbsd-amd64), const SYS_EXTATTR_LIST_FD = 370 pkg syscall (netbsd-amd64), const SYS_EXTATTR_LIST_FILE = 371 pkg syscall (netbsd-amd64), const SYS_EXTATTR_LIST_LINK = 372 pkg syscall (netbsd-amd64), const SYS_EXTATTR_SET_FD = 364 pkg syscall (netbsd-amd64), const SYS_EXTATTR_SET_FILE = 361 pkg syscall (netbsd-amd64), const SYS_EXTATTR_SET_LINK = 367 pkg syscall (netbsd-amd64), const SYS_FACCESSAT = 462 pkg syscall (netbsd-amd64), const SYS_FCHDIR = 13 pkg syscall (netbsd-amd64), const SYS_FCHFLAGS = 35 pkg syscall (netbsd-amd64), const SYS_FCHMOD = 124 pkg syscall (netbsd-amd64), const SYS_FCHMODAT = 463 pkg syscall (netbsd-amd64), const SYS_FCHOWN = 123 pkg syscall (netbsd-amd64), const SYS_FCHOWNAT = 464 pkg syscall (netbsd-amd64), const SYS_FCHROOT = 297 pkg syscall (netbsd-amd64), const SYS_FCNTL = 92 pkg syscall (netbsd-amd64), const SYS_FDATASYNC = 241 pkg syscall (netbsd-amd64), const SYS_FEXECVE = 465 pkg syscall (netbsd-amd64), const SYS_FGETXATTR = 380 pkg syscall (netbsd-amd64), const SYS_FHSTAT = 451 pkg syscall (netbsd-amd64), const SYS_FKTRACE = 288 pkg syscall (netbsd-amd64), const SYS_FLISTXATTR = 383 pkg syscall (netbsd-amd64), const SYS_FLOCK = 131 pkg syscall (netbsd-amd64), const SYS_FORK = 2 pkg syscall (netbsd-amd64), const SYS_FPATHCONF = 192 pkg syscall (netbsd-amd64), const SYS_FREMOVEXATTR = 386 pkg syscall (netbsd-amd64), const SYS_FSETXATTR = 377 pkg syscall (netbsd-amd64), const SYS_FSTAT = 440 pkg syscall (netbsd-amd64), const SYS_FSTATAT = 466 pkg syscall (netbsd-amd64), const SYS_FSTATVFS1 = 358 pkg syscall (netbsd-amd64), const SYS_FSYNC = 95 pkg syscall (netbsd-amd64), const SYS_FSYNC_RANGE = 354 pkg syscall (netbsd-amd64), const SYS_FTRUNCATE = 201 pkg syscall (netbsd-amd64), const SYS_FUTIMENS = 472 pkg syscall (netbsd-amd64), const SYS_FUTIMES = 423 pkg syscall (netbsd-amd64), const SYS_GETCONTEXT = 307 pkg syscall (netbsd-amd64), const SYS_GETDENTS = 390 pkg syscall (netbsd-amd64), const SYS_GETEGID = 43 pkg syscall (netbsd-amd64), const SYS_GETEUID = 25 pkg syscall (netbsd-amd64), const SYS_GETFH = 395 pkg syscall (netbsd-amd64), const SYS_GETGID = 47 pkg syscall (netbsd-amd64), const SYS_GETGROUPS = 79 pkg syscall (netbsd-amd64), const SYS_GETITIMER = 426 pkg syscall (netbsd-amd64), const SYS_GETPEERNAME = 31 pkg syscall (netbsd-amd64), const SYS_GETPGID = 207 pkg syscall (netbsd-amd64), const SYS_GETPGRP = 81 pkg syscall (netbsd-amd64), const SYS_GETPID = 20 pkg syscall (netbsd-amd64), const SYS_GETPPID = 39 pkg syscall (netbsd-amd64), const SYS_GETPRIORITY = 100 pkg syscall (netbsd-amd64), const SYS_GETRLIMIT = 194 pkg syscall (netbsd-amd64), const SYS_GETRUSAGE = 445 pkg syscall (netbsd-amd64), const SYS_GETSID = 286 pkg syscall (netbsd-amd64), const SYS_GETSOCKNAME = 32 pkg syscall (netbsd-amd64), const SYS_GETSOCKOPT = 118 pkg syscall (netbsd-amd64), const SYS_GETTIMEOFDAY = 418 pkg syscall (netbsd-amd64), const SYS_GETUID = 24 pkg syscall (netbsd-amd64), const SYS_GETVFSSTAT = 356 pkg syscall (netbsd-amd64), const SYS_GETXATTR = 378 pkg syscall (netbsd-amd64), const SYS_IOCTL = 54 pkg syscall (netbsd-amd64), const SYS_ISSETUGID = 305 pkg syscall (netbsd-amd64), const SYS_KEVENT = 435 pkg syscall (netbsd-amd64), const SYS_KILL = 37 pkg syscall (netbsd-amd64), const SYS_KQUEUE = 344 pkg syscall (netbsd-amd64), const SYS_KQUEUE1 = 455 pkg syscall (netbsd-amd64), const SYS_KTRACE = 45 pkg syscall (netbsd-amd64), const SYS_LCHFLAGS = 304 pkg syscall (netbsd-amd64), const SYS_LCHMOD = 274 pkg syscall (netbsd-amd64), const SYS_LCHOWN = 275 pkg syscall (netbsd-amd64), const SYS_LGETXATTR = 379 pkg syscall (netbsd-amd64), const SYS_LINK = 9 pkg syscall (netbsd-amd64), const SYS_LINKAT = 457 pkg syscall (netbsd-amd64), const SYS_LISTEN = 106 pkg syscall (netbsd-amd64), const SYS_LISTXATTR = 381 pkg syscall (netbsd-amd64), const SYS_LLISTXATTR = 382 pkg syscall (netbsd-amd64), const SYS_LREMOVEXATTR = 385 pkg syscall (netbsd-amd64), const SYS_LSEEK = 199 pkg syscall (netbsd-amd64), const SYS_LSETXATTR = 376 pkg syscall (netbsd-amd64), const SYS_LSTAT = 441 pkg syscall (netbsd-amd64), const SYS_LUTIMES = 424 pkg syscall (netbsd-amd64), const SYS_MADVISE = 75 pkg syscall (netbsd-amd64), const SYS_MINCORE = 78 pkg syscall (netbsd-amd64), const SYS_MINHERIT = 273 pkg syscall (netbsd-amd64), const SYS_MKDIR = 136 pkg syscall (netbsd-amd64), const SYS_MKDIRAT = 461 pkg syscall (netbsd-amd64), const SYS_MKFIFO = 132 pkg syscall (netbsd-amd64), const SYS_MKFIFOAT = 459 pkg syscall (netbsd-amd64), const SYS_MKNOD = 450 pkg syscall (netbsd-amd64), const SYS_MKNODAT = 460 pkg syscall (netbsd-amd64), const SYS_MLOCK = 203 pkg syscall (netbsd-amd64), const SYS_MLOCKALL = 242 pkg syscall (netbsd-amd64), const SYS_MMAP = 197 pkg syscall (netbsd-amd64), const SYS_MODCTL = 246 pkg syscall (netbsd-amd64), const SYS_MOUNT = 410 pkg syscall (netbsd-amd64), const SYS_MPROTECT = 74 pkg syscall (netbsd-amd64), const SYS_MREMAP = 411 pkg syscall (netbsd-amd64), const SYS_MSGCTL = 444 pkg syscall (netbsd-amd64), const SYS_MSGGET = 225 pkg syscall (netbsd-amd64), const SYS_MSGRCV = 227 pkg syscall (netbsd-amd64), const SYS_MSGSND = 226 pkg syscall (netbsd-amd64), const SYS_MUNLOCK = 204 pkg syscall (netbsd-amd64), const SYS_MUNLOCKALL = 243 pkg syscall (netbsd-amd64), const SYS_MUNMAP = 73 pkg syscall (netbsd-amd64), const SYS_NANOSLEEP = 430 pkg syscall (netbsd-amd64), const SYS_NTP_ADJTIME = 176 pkg syscall (netbsd-amd64), const SYS_NTP_GETTIME = 448 pkg syscall (netbsd-amd64), const SYS_OPEN = 5 pkg syscall (netbsd-amd64), const SYS_OPENAT = 468 pkg syscall (netbsd-amd64), const SYS_PACCEPT = 456 pkg syscall (netbsd-amd64), const SYS_PATHCONF = 191 pkg syscall (netbsd-amd64), const SYS_PIPE = 42 pkg syscall (netbsd-amd64), const SYS_PIPE2 = 453 pkg syscall (netbsd-amd64), const SYS_PMC_CONTROL = 342 pkg syscall (netbsd-amd64), const SYS_PMC_GET_INFO = 341 pkg syscall (netbsd-amd64), const SYS_POLL = 209 pkg syscall (netbsd-amd64), const SYS_POLLTS = 437 pkg syscall (netbsd-amd64), const SYS_POSIX_FADVISE = 416 pkg syscall (netbsd-amd64), const SYS_POSIX_SPAWN = 474 pkg syscall (netbsd-amd64), const SYS_PREAD = 173 pkg syscall (netbsd-amd64), const SYS_PREADV = 289 pkg syscall (netbsd-amd64), const SYS_PROFIL = 44 pkg syscall (netbsd-amd64), const SYS_PSELECT = 436 pkg syscall (netbsd-amd64), const SYS_PSET_ASSIGN = 414 pkg syscall (netbsd-amd64), const SYS_PSET_CREATE = 412 pkg syscall (netbsd-amd64), const SYS_PSET_DESTROY = 413 pkg syscall (netbsd-amd64), const SYS_PTRACE = 26 pkg syscall (netbsd-amd64), const SYS_PWRITE = 174 pkg syscall (netbsd-amd64), const SYS_PWRITEV = 290 pkg syscall (netbsd-amd64), const SYS_RASCTL = 343 pkg syscall (netbsd-amd64), const SYS_READ = 3 pkg syscall (netbsd-amd64), const SYS_READLINK = 58 pkg syscall (netbsd-amd64), const SYS_READLINKAT = 469 pkg syscall (netbsd-amd64), const SYS_READV = 120 pkg syscall (netbsd-amd64), const SYS_REBOOT = 208 pkg syscall (netbsd-amd64), const SYS_RECVFROM = 29 pkg syscall (netbsd-amd64), const SYS_RECVMMSG = 475 pkg syscall (netbsd-amd64), const SYS_RECVMSG = 27 pkg syscall (netbsd-amd64), const SYS_REMOVEXATTR = 384 pkg syscall (netbsd-amd64), const SYS_RENAME = 128 pkg syscall (netbsd-amd64), const SYS_RENAMEAT = 458 pkg syscall (netbsd-amd64), const SYS_REVOKE = 56 pkg syscall (netbsd-amd64), const SYS_RMDIR = 137 pkg syscall (netbsd-amd64), const SYS_SBRK = 69 pkg syscall (netbsd-amd64), const SYS_SCHED_YIELD = 350 pkg syscall (netbsd-amd64), const SYS_SELECT = 417 pkg syscall (netbsd-amd64), const SYS_SEMCONFIG = 223 pkg syscall (netbsd-amd64), const SYS_SEMGET = 221 pkg syscall (netbsd-amd64), const SYS_SEMOP = 222 pkg syscall (netbsd-amd64), const SYS_SENDMMSG = 476 pkg syscall (netbsd-amd64), const SYS_SENDMSG = 28 pkg syscall (netbsd-amd64), const SYS_SENDTO = 133 pkg syscall (netbsd-amd64), const SYS_SETCONTEXT = 308 pkg syscall (netbsd-amd64), const SYS_SETEGID = 182 pkg syscall (netbsd-amd64), const SYS_SETEUID = 183 pkg syscall (netbsd-amd64), const SYS_SETGID = 181 pkg syscall (netbsd-amd64), const SYS_SETGROUPS = 80 pkg syscall (netbsd-amd64), const SYS_SETITIMER = 425 pkg syscall (netbsd-amd64), const SYS_SETPGID = 82 pkg syscall (netbsd-amd64), const SYS_SETPRIORITY = 96 pkg syscall (netbsd-amd64), const SYS_SETREGID = 127 pkg syscall (netbsd-amd64), const SYS_SETREUID = 126 pkg syscall (netbsd-amd64), const SYS_SETRLIMIT = 195 pkg syscall (netbsd-amd64), const SYS_SETSID = 147 pkg syscall (netbsd-amd64), const SYS_SETSOCKOPT = 105 pkg syscall (netbsd-amd64), const SYS_SETTIMEOFDAY = 419 pkg syscall (netbsd-amd64), const SYS_SETUID = 23 pkg syscall (netbsd-amd64), const SYS_SETXATTR = 375 pkg syscall (netbsd-amd64), const SYS_SHMAT = 228 pkg syscall (netbsd-amd64), const SYS_SHMCTL = 443 pkg syscall (netbsd-amd64), const SYS_SHMDT = 230 pkg syscall (netbsd-amd64), const SYS_SHMGET = 231 pkg syscall (netbsd-amd64), const SYS_SHUTDOWN = 134 pkg syscall (netbsd-amd64), const SYS_SIGQUEUEINFO = 245 pkg syscall (netbsd-amd64), const SYS_SOCKET = 394 pkg syscall (netbsd-amd64), const SYS_SOCKETPAIR = 135 pkg syscall (netbsd-amd64), const SYS_SSTK = 70 pkg syscall (netbsd-amd64), const SYS_STAT = 439 pkg syscall (netbsd-amd64), const SYS_STATVFS1 = 357 pkg syscall (netbsd-amd64), const SYS_SWAPCTL = 271 pkg syscall (netbsd-amd64), const SYS_SYMLINK = 57 pkg syscall (netbsd-amd64), const SYS_SYMLINKAT = 470 pkg syscall (netbsd-amd64), const SYS_SYNC = 36 pkg syscall (netbsd-amd64), const SYS_SYSARCH = 165 pkg syscall (netbsd-amd64), const SYS_TIMER_CREATE = 235 pkg syscall (netbsd-amd64), const SYS_TIMER_DELETE = 236 pkg syscall (netbsd-amd64), const SYS_TIMER_GETOVERRUN = 239 pkg syscall (netbsd-amd64), const SYS_TIMER_GETTIME = 447 pkg syscall (netbsd-amd64), const SYS_TIMER_SETTIME = 446 pkg syscall (netbsd-amd64), const SYS_TRUNCATE = 200 pkg syscall (netbsd-amd64), const SYS_UMASK = 60 pkg syscall (netbsd-amd64), const SYS_UNDELETE = 205 pkg syscall (netbsd-amd64), const SYS_UNLINK = 10 pkg syscall (netbsd-amd64), const SYS_UNLINKAT = 471 pkg syscall (netbsd-amd64), const SYS_UNMOUNT = 22 pkg syscall (netbsd-amd64), const SYS_UTIMENSAT = 467 pkg syscall (netbsd-amd64), const SYS_UTIMES = 420 pkg syscall (netbsd-amd64), const SYS_UTRACE = 306 pkg syscall (netbsd-amd64), const SYS_UUIDGEN = 355 pkg syscall (netbsd-amd64), const SYS_VADVISE = 72 pkg syscall (netbsd-amd64), const SYS_VFORK = 66 pkg syscall (netbsd-amd64), const SYS_WAIT4 = 449 pkg syscall (netbsd-amd64), const SYS_WRITE = 4 pkg syscall (netbsd-amd64), const SYS_WRITEV = 121 pkg syscall (netbsd-amd64), const SYS__LWP_CONTINUE = 314 pkg syscall (netbsd-amd64), const SYS__LWP_CREATE = 309 pkg syscall (netbsd-amd64), const SYS__LWP_CTL = 325 pkg syscall (netbsd-amd64), const SYS__LWP_DETACH = 319 pkg syscall (netbsd-amd64), const SYS__LWP_EXIT = 310 pkg syscall (netbsd-amd64), const SYS__LWP_GETNAME = 324 pkg syscall (netbsd-amd64), const SYS__LWP_GETPRIVATE = 316 pkg syscall (netbsd-amd64), const SYS__LWP_KILL = 318 pkg syscall (netbsd-amd64), const SYS__LWP_PARK = 434 pkg syscall (netbsd-amd64), const SYS__LWP_SELF = 311 pkg syscall (netbsd-amd64), const SYS__LWP_SETNAME = 323 pkg syscall (netbsd-amd64), const SYS__LWP_SETPRIVATE = 317 pkg syscall (netbsd-amd64), const SYS__LWP_SUSPEND = 313 pkg syscall (netbsd-amd64), const SYS__LWP_UNPARK = 321 pkg syscall (netbsd-amd64), const SYS__LWP_UNPARK_ALL = 322 pkg syscall (netbsd-amd64), const SYS__LWP_WAIT = 312 pkg syscall (netbsd-amd64), const SYS__LWP_WAKEUP = 315 pkg syscall (netbsd-amd64), const SYS__PSET_BIND = 415 pkg syscall (netbsd-amd64), const SYS__SCHED_GETAFFINITY = 349 pkg syscall (netbsd-amd64), const SYS__SCHED_GETPARAM = 347 pkg syscall (netbsd-amd64), const SYS__SCHED_SETAFFINITY = 348 pkg syscall (netbsd-amd64), const SYS__SCHED_SETPARAM = 346 pkg syscall (netbsd-amd64), const SYS___CLONE = 287 pkg syscall (netbsd-amd64), const SYS___GETCWD = 296 pkg syscall (netbsd-amd64), const SYS___GETLOGIN = 49 pkg syscall (netbsd-amd64), const SYS___POSIX_CHOWN = 283 pkg syscall (netbsd-amd64), const SYS___POSIX_FCHOWN = 284 pkg syscall (netbsd-amd64), const SYS___POSIX_LCHOWN = 285 pkg syscall (netbsd-amd64), const SYS___POSIX_RENAME = 270 pkg syscall (netbsd-amd64), const SYS___QUOTACTL = 473 pkg syscall (netbsd-amd64), const SYS___SEMCTL = 442 pkg syscall (netbsd-amd64), const SYS___SETLOGIN = 50 pkg syscall (netbsd-amd64), const SYS___SIGACTION_SIGTRAMP = 340 pkg syscall (netbsd-amd64), const SYS___SIGTIMEDWAIT = 431 pkg syscall (netbsd-amd64), const SYS___SYSCTL = 202 pkg syscall (netbsd-amd64), const S_ARCH1 = 65536 pkg syscall (netbsd-amd64), const S_ARCH2 = 131072 pkg syscall (netbsd-amd64), const S_BLKSIZE = 512 pkg syscall (netbsd-amd64), const S_IEXEC = 64 pkg syscall (netbsd-amd64), const S_IFMT = 61440 pkg syscall (netbsd-amd64), const S_IFWHT = 57344 pkg syscall (netbsd-amd64), const S_IREAD = 256 pkg syscall (netbsd-amd64), const S_IRGRP = 32 pkg syscall (netbsd-amd64), const S_IROTH = 4 pkg syscall (netbsd-amd64), const S_IRWXG = 56 pkg syscall (netbsd-amd64), const S_IRWXO = 7 pkg syscall (netbsd-amd64), const S_IRWXU = 448 pkg syscall (netbsd-amd64), const S_ISTXT = 512 pkg syscall (netbsd-amd64), const S_IWGRP = 16 pkg syscall (netbsd-amd64), const S_IWOTH = 2 pkg syscall (netbsd-amd64), const S_IWRITE = 128 pkg syscall (netbsd-amd64), const S_IXGRP = 8 pkg syscall (netbsd-amd64), const S_IXOTH = 1 pkg syscall (netbsd-amd64), const S_LOGIN_SET = 1 pkg syscall (netbsd-amd64), const SizeofBpfHdr = 32 pkg syscall (netbsd-amd64), const SizeofBpfInsn = 8 pkg syscall (netbsd-amd64), const SizeofBpfProgram = 16 pkg syscall (netbsd-amd64), const SizeofBpfStat = 128 pkg syscall (netbsd-amd64), const SizeofBpfVersion = 4 pkg syscall (netbsd-amd64), const SizeofCmsghdr = 12 pkg syscall (netbsd-amd64), const SizeofIPMreq = 8 pkg syscall (netbsd-amd64), const SizeofIPv6Mreq = 20 pkg syscall (netbsd-amd64), const SizeofIfAnnounceMsghdr = 24 pkg syscall (netbsd-amd64), const SizeofIfData = 136 pkg syscall (netbsd-amd64), const SizeofIfMsghdr = 152 pkg syscall (netbsd-amd64), const SizeofIfaMsghdr = 24 pkg syscall (netbsd-amd64), const SizeofInet6Pktinfo = 20 pkg syscall (netbsd-amd64), const SizeofLinger = 8 pkg syscall (netbsd-amd64), const SizeofMsghdr = 48 pkg syscall (netbsd-amd64), const SizeofRtMetrics = 80 pkg syscall (netbsd-amd64), const SizeofRtMsghdr = 120 pkg syscall (netbsd-amd64), const SizeofSockaddrAny = 108 pkg syscall (netbsd-amd64), const SizeofSockaddrDatalink = 20 pkg syscall (netbsd-amd64), const SizeofSockaddrInet4 = 16 pkg syscall (netbsd-amd64), const SizeofSockaddrInet6 = 28 pkg syscall (netbsd-amd64), const SizeofSockaddrUnix = 106 pkg syscall (netbsd-amd64), const TCIFLUSH = 1 pkg syscall (netbsd-amd64), const TCIOFLUSH = 3 pkg syscall (netbsd-amd64), const TCOFLUSH = 2 pkg syscall (netbsd-amd64), const TCP_CONGCTL = 32 pkg syscall (netbsd-amd64), const TCP_KEEPCNT = 6 pkg syscall (netbsd-amd64), const TCP_KEEPIDLE = 3 pkg syscall (netbsd-amd64), const TCP_KEEPINIT = 7 pkg syscall (netbsd-amd64), const TCP_KEEPINTVL = 5 pkg syscall (netbsd-amd64), const TCP_MAXBURST = 4 pkg syscall (netbsd-amd64), const TCP_MAXSEG = 2 pkg syscall (netbsd-amd64), const TCP_MAXWIN = 65535 pkg syscall (netbsd-amd64), const TCP_MAX_WINSHIFT = 14 pkg syscall (netbsd-amd64), const TCP_MD5SIG = 16 pkg syscall (netbsd-amd64), const TCP_MINMSS = 216 pkg syscall (netbsd-amd64), const TCP_MSS = 536 pkg syscall (netbsd-amd64), const TCSAFLUSH = 2 pkg syscall (netbsd-amd64), const TIOCCBRK = 536900730 pkg syscall (netbsd-amd64), const TIOCCDTR = 536900728 pkg syscall (netbsd-amd64), const TIOCCONS = 2147775586 pkg syscall (netbsd-amd64), const TIOCDCDTIMESTAMP = 1074820184 pkg syscall (netbsd-amd64), const TIOCDRAIN = 536900702 pkg syscall (netbsd-amd64), const TIOCEXCL = 536900621 pkg syscall (netbsd-amd64), const TIOCEXT = 2147775584 pkg syscall (netbsd-amd64), const TIOCFLAG_CDTRCTS = 16 pkg syscall (netbsd-amd64), const TIOCFLAG_CLOCAL = 2 pkg syscall (netbsd-amd64), const TIOCFLAG_CRTSCTS = 4 pkg syscall (netbsd-amd64), const TIOCFLAG_MDMBUF = 8 pkg syscall (netbsd-amd64), const TIOCFLAG_SOFTCAR = 1 pkg syscall (netbsd-amd64), const TIOCFLUSH = 2147775504 pkg syscall (netbsd-amd64), const TIOCGETA = 1076655123 pkg syscall (netbsd-amd64), const TIOCGETD = 1074033690 pkg syscall (netbsd-amd64), const TIOCGFLAGS = 1074033757 pkg syscall (netbsd-amd64), const TIOCGLINED = 1075868738 pkg syscall (netbsd-amd64), const TIOCGPGRP = 1074033783 pkg syscall (netbsd-amd64), const TIOCGQSIZE = 1074033793 pkg syscall (netbsd-amd64), const TIOCGRANTPT = 536900679 pkg syscall (netbsd-amd64), const TIOCGSID = 1074033763 pkg syscall (netbsd-amd64), const TIOCGSIZE = 1074295912 pkg syscall (netbsd-amd64), const TIOCGWINSZ = 1074295912 pkg syscall (netbsd-amd64), const TIOCMBIC = 2147775595 pkg syscall (netbsd-amd64), const TIOCMBIS = 2147775596 pkg syscall (netbsd-amd64), const TIOCMGET = 1074033770 pkg syscall (netbsd-amd64), const TIOCMSET = 2147775597 pkg syscall (netbsd-amd64), const TIOCM_CAR = 64 pkg syscall (netbsd-amd64), const TIOCM_CD = 64 pkg syscall (netbsd-amd64), const TIOCM_CTS = 32 pkg syscall (netbsd-amd64), const TIOCM_DSR = 256 pkg syscall (netbsd-amd64), const TIOCM_DTR = 2 pkg syscall (netbsd-amd64), const TIOCM_LE = 1 pkg syscall (netbsd-amd64), const TIOCM_RI = 128 pkg syscall (netbsd-amd64), const TIOCM_RNG = 128 pkg syscall (netbsd-amd64), const TIOCM_RTS = 4 pkg syscall (netbsd-amd64), const TIOCM_SR = 16 pkg syscall (netbsd-amd64), const TIOCM_ST = 8 pkg syscall (netbsd-amd64), const TIOCNOTTY = 536900721 pkg syscall (netbsd-amd64), const TIOCNXCL = 536900622 pkg syscall (netbsd-amd64), const TIOCOUTQ = 1074033779 pkg syscall (netbsd-amd64), const TIOCPKT = 2147775600 pkg syscall (netbsd-amd64), const TIOCPKT_DATA = 0 pkg syscall (netbsd-amd64), const TIOCPKT_DOSTOP = 32 pkg syscall (netbsd-amd64), const TIOCPKT_FLUSHREAD = 1 pkg syscall (netbsd-amd64), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (netbsd-amd64), const TIOCPKT_IOCTL = 64 pkg syscall (netbsd-amd64), const TIOCPKT_NOSTOP = 16 pkg syscall (netbsd-amd64), const TIOCPKT_START = 8 pkg syscall (netbsd-amd64), const TIOCPKT_STOP = 4 pkg syscall (netbsd-amd64), const TIOCPTMGET = 1076393030 pkg syscall (netbsd-amd64), const TIOCPTSNAME = 1076393032 pkg syscall (netbsd-amd64), const TIOCRCVFRAME = 2148037701 pkg syscall (netbsd-amd64), const TIOCREMOTE = 2147775593 pkg syscall (netbsd-amd64), const TIOCSBRK = 536900731 pkg syscall (netbsd-amd64), const TIOCSCTTY = 536900705 pkg syscall (netbsd-amd64), const TIOCSDTR = 536900729 pkg syscall (netbsd-amd64), const TIOCSETA = 2150396948 pkg syscall (netbsd-amd64), const TIOCSETAF = 2150396950 pkg syscall (netbsd-amd64), const TIOCSETAW = 2150396949 pkg syscall (netbsd-amd64), const TIOCSETD = 2147775515 pkg syscall (netbsd-amd64), const TIOCSFLAGS = 2147775580 pkg syscall (netbsd-amd64), const TIOCSIG = 536900703 pkg syscall (netbsd-amd64), const TIOCSLINED = 2149610563 pkg syscall (netbsd-amd64), const TIOCSPGRP = 2147775606 pkg syscall (netbsd-amd64), const TIOCSQSIZE = 2147775616 pkg syscall (netbsd-amd64), const TIOCSSIZE = 2148037735 pkg syscall (netbsd-amd64), const TIOCSTART = 536900718 pkg syscall (netbsd-amd64), const TIOCSTAT = 2147775589 pkg syscall (netbsd-amd64), const TIOCSTI = 2147578994 pkg syscall (netbsd-amd64), const TIOCSTOP = 536900719 pkg syscall (netbsd-amd64), const TIOCSWINSZ = 2148037735 pkg syscall (netbsd-amd64), const TIOCUCNTL = 2147775590 pkg syscall (netbsd-amd64), const TIOCXMTFRAME = 2148037700 pkg syscall (netbsd-amd64), const TOSTOP = 4194304 pkg syscall (netbsd-amd64), const VDISCARD = 15 pkg syscall (netbsd-amd64), const VDSUSP = 11 pkg syscall (netbsd-amd64), const VEOF = 0 pkg syscall (netbsd-amd64), const VEOL = 1 pkg syscall (netbsd-amd64), const VEOL2 = 2 pkg syscall (netbsd-amd64), const VERASE = 3 pkg syscall (netbsd-amd64), const VINTR = 8 pkg syscall (netbsd-amd64), const VKILL = 5 pkg syscall (netbsd-amd64), const VLNEXT = 14 pkg syscall (netbsd-amd64), const VMIN = 16 pkg syscall (netbsd-amd64), const VQUIT = 9 pkg syscall (netbsd-amd64), const VREPRINT = 6 pkg syscall (netbsd-amd64), const VSTART = 12 pkg syscall (netbsd-amd64), const VSTATUS = 18 pkg syscall (netbsd-amd64), const VSTOP = 13 pkg syscall (netbsd-amd64), const VSUSP = 10 pkg syscall (netbsd-amd64), const VTIME = 17 pkg syscall (netbsd-amd64), const VWERASE = 4 pkg syscall (netbsd-amd64), const WALL = 8 pkg syscall (netbsd-amd64), const WALLSIG = 8 pkg syscall (netbsd-amd64), const WALTSIG = 4 pkg syscall (netbsd-amd64), const WCLONE = 4 pkg syscall (netbsd-amd64), const WCOREFLAG = 128 pkg syscall (netbsd-amd64), const WNOHANG = 1 pkg syscall (netbsd-amd64), const WNOWAIT = 65536 pkg syscall (netbsd-amd64), const WNOZOMBIE = 131072 pkg syscall (netbsd-amd64), const WOPTSCHECKED = 262144 pkg syscall (netbsd-amd64), const WSTOPPED = 127 pkg syscall (netbsd-amd64), const WUNTRACED = 2 pkg syscall (netbsd-amd64-cgo), const AF_APPLETALK = 16 pkg syscall (netbsd-amd64-cgo), const AF_ARP = 28 pkg syscall (netbsd-amd64-cgo), const AF_BLUETOOTH = 31 pkg syscall (netbsd-amd64-cgo), const AF_CCITT = 10 pkg syscall (netbsd-amd64-cgo), const AF_CHAOS = 5 pkg syscall (netbsd-amd64-cgo), const AF_CNT = 21 pkg syscall (netbsd-amd64-cgo), const AF_COIP = 20 pkg syscall (netbsd-amd64-cgo), const AF_DATAKIT = 9 pkg syscall (netbsd-amd64-cgo), const AF_DECnet = 12 pkg syscall (netbsd-amd64-cgo), const AF_DLI = 13 pkg syscall (netbsd-amd64-cgo), const AF_E164 = 26 pkg syscall (netbsd-amd64-cgo), const AF_ECMA = 8 pkg syscall (netbsd-amd64-cgo), const AF_HYLINK = 15 pkg syscall (netbsd-amd64-cgo), const AF_IEEE80211 = 32 pkg syscall (netbsd-amd64-cgo), const AF_IMPLINK = 3 pkg syscall (netbsd-amd64-cgo), const AF_INET6 = 24 pkg syscall (netbsd-amd64-cgo), const AF_IPX = 23 pkg syscall (netbsd-amd64-cgo), const AF_ISDN = 26 pkg syscall (netbsd-amd64-cgo), const AF_ISO = 7 pkg syscall (netbsd-amd64-cgo), const AF_LAT = 14 pkg syscall (netbsd-amd64-cgo), const AF_LINK = 18 pkg syscall (netbsd-amd64-cgo), const AF_LOCAL = 1 pkg syscall (netbsd-amd64-cgo), const AF_MAX = 35 pkg syscall (netbsd-amd64-cgo), const AF_MPLS = 33 pkg syscall (netbsd-amd64-cgo), const AF_NATM = 27 pkg syscall (netbsd-amd64-cgo), const AF_NS = 6 pkg syscall (netbsd-amd64-cgo), const AF_OROUTE = 17 pkg syscall (netbsd-amd64-cgo), const AF_OSI = 7 pkg syscall (netbsd-amd64-cgo), const AF_PUP = 4 pkg syscall (netbsd-amd64-cgo), const AF_ROUTE = 34 pkg syscall (netbsd-amd64-cgo), const AF_SNA = 11 pkg syscall (netbsd-amd64-cgo), const ARPHRD_ARCNET = 7 pkg syscall (netbsd-amd64-cgo), const ARPHRD_ETHER = 1 pkg syscall (netbsd-amd64-cgo), const ARPHRD_FRELAY = 15 pkg syscall (netbsd-amd64-cgo), const ARPHRD_IEEE1394 = 24 pkg syscall (netbsd-amd64-cgo), const ARPHRD_IEEE802 = 6 pkg syscall (netbsd-amd64-cgo), const ARPHRD_STRIP = 23 pkg syscall (netbsd-amd64-cgo), const B0 = 0 pkg syscall (netbsd-amd64-cgo), const B110 = 110 pkg syscall (netbsd-amd64-cgo), const B115200 = 115200 pkg syscall (netbsd-amd64-cgo), const B1200 = 1200 pkg syscall (netbsd-amd64-cgo), const B134 = 134 pkg syscall (netbsd-amd64-cgo), const B14400 = 14400 pkg syscall (netbsd-amd64-cgo), const B150 = 150 pkg syscall (netbsd-amd64-cgo), const B1800 = 1800 pkg syscall (netbsd-amd64-cgo), const B19200 = 19200 pkg syscall (netbsd-amd64-cgo), const B200 = 200 pkg syscall (netbsd-amd64-cgo), const B230400 = 230400 pkg syscall (netbsd-amd64-cgo), const B2400 = 2400 pkg syscall (netbsd-amd64-cgo), const B28800 = 28800 pkg syscall (netbsd-amd64-cgo), const B300 = 300 pkg syscall (netbsd-amd64-cgo), const B38400 = 38400 pkg syscall (netbsd-amd64-cgo), const B460800 = 460800 pkg syscall (netbsd-amd64-cgo), const B4800 = 4800 pkg syscall (netbsd-amd64-cgo), const B50 = 50 pkg syscall (netbsd-amd64-cgo), const B57600 = 57600 pkg syscall (netbsd-amd64-cgo), const B600 = 600 pkg syscall (netbsd-amd64-cgo), const B7200 = 7200 pkg syscall (netbsd-amd64-cgo), const B75 = 75 pkg syscall (netbsd-amd64-cgo), const B76800 = 76800 pkg syscall (netbsd-amd64-cgo), const B921600 = 921600 pkg syscall (netbsd-amd64-cgo), const B9600 = 9600 pkg syscall (netbsd-amd64-cgo), const BIOCFEEDBACK = 2147762813 pkg syscall (netbsd-amd64-cgo), const BIOCFLUSH = 536887912 pkg syscall (netbsd-amd64-cgo), const BIOCGBLEN = 1074020966 pkg syscall (netbsd-amd64-cgo), const BIOCGDLT = 1074020970 pkg syscall (netbsd-amd64-cgo), const BIOCGDLTLIST = 3222291063 pkg syscall (netbsd-amd64-cgo), const BIOCGETIF = 1083196011 pkg syscall (netbsd-amd64-cgo), const BIOCGFEEDBACK = 1074020988 pkg syscall (netbsd-amd64-cgo), const BIOCGHDRCMPLT = 1074020980 pkg syscall (netbsd-amd64-cgo), const BIOCGRTIMEOUT = 1074807419 pkg syscall (netbsd-amd64-cgo), const BIOCGSEESENT = 1074020984 pkg syscall (netbsd-amd64-cgo), const BIOCGSTATS = 1082147439 pkg syscall (netbsd-amd64-cgo), const BIOCGSTATSOLD = 1074283119 pkg syscall (netbsd-amd64-cgo), const BIOCIMMEDIATE = 2147762800 pkg syscall (netbsd-amd64-cgo), const BIOCPROMISC = 536887913 pkg syscall (netbsd-amd64-cgo), const BIOCSBLEN = 3221504614 pkg syscall (netbsd-amd64-cgo), const BIOCSDLT = 2147762806 pkg syscall (netbsd-amd64-cgo), const BIOCSETF = 2148549223 pkg syscall (netbsd-amd64-cgo), const BIOCSETIF = 2156937836 pkg syscall (netbsd-amd64-cgo), const BIOCSFEEDBACK = 2147762813 pkg syscall (netbsd-amd64-cgo), const BIOCSHDRCMPLT = 2147762805 pkg syscall (netbsd-amd64-cgo), const BIOCSRTIMEOUT = 2148549242 pkg syscall (netbsd-amd64-cgo), const BIOCSSEESENT = 2147762809 pkg syscall (netbsd-amd64-cgo), const BIOCSTCPF = 2148549234 pkg syscall (netbsd-amd64-cgo), const BIOCSUDPF = 2148549235 pkg syscall (netbsd-amd64-cgo), const BIOCVERSION = 1074020977 pkg syscall (netbsd-amd64-cgo), const BPF_A = 16 pkg syscall (netbsd-amd64-cgo), const BPF_ABS = 32 pkg syscall (netbsd-amd64-cgo), const BPF_ADD = 0 pkg syscall (netbsd-amd64-cgo), const BPF_ALIGNMENT = 8 pkg syscall (netbsd-amd64-cgo), const BPF_ALIGNMENT32 = 4 pkg syscall (netbsd-amd64-cgo), const BPF_ALU = 4 pkg syscall (netbsd-amd64-cgo), const BPF_AND = 80 pkg syscall (netbsd-amd64-cgo), const BPF_B = 16 pkg syscall (netbsd-amd64-cgo), const BPF_DFLTBUFSIZE = 1048576 pkg syscall (netbsd-amd64-cgo), const BPF_DIV = 48 pkg syscall (netbsd-amd64-cgo), const BPF_H = 8 pkg syscall (netbsd-amd64-cgo), const BPF_IMM = 0 pkg syscall (netbsd-amd64-cgo), const BPF_IND = 64 pkg syscall (netbsd-amd64-cgo), const BPF_JA = 0 pkg syscall (netbsd-amd64-cgo), const BPF_JEQ = 16 pkg syscall (netbsd-amd64-cgo), const BPF_JGE = 48 pkg syscall (netbsd-amd64-cgo), const BPF_JGT = 32 pkg syscall (netbsd-amd64-cgo), const BPF_JMP = 5 pkg syscall (netbsd-amd64-cgo), const BPF_JSET = 64 pkg syscall (netbsd-amd64-cgo), const BPF_K = 0 pkg syscall (netbsd-amd64-cgo), const BPF_LD = 0 pkg syscall (netbsd-amd64-cgo), const BPF_LDX = 1 pkg syscall (netbsd-amd64-cgo), const BPF_LEN = 128 pkg syscall (netbsd-amd64-cgo), const BPF_LSH = 96 pkg syscall (netbsd-amd64-cgo), const BPF_MAJOR_VERSION = 1 pkg syscall (netbsd-amd64-cgo), const BPF_MAXBUFSIZE = 16777216 pkg syscall (netbsd-amd64-cgo), const BPF_MAXINSNS = 512 pkg syscall (netbsd-amd64-cgo), const BPF_MEM = 96 pkg syscall (netbsd-amd64-cgo), const BPF_MEMWORDS = 16 pkg syscall (netbsd-amd64-cgo), const BPF_MINBUFSIZE = 32 pkg syscall (netbsd-amd64-cgo), const BPF_MINOR_VERSION = 1 pkg syscall (netbsd-amd64-cgo), const BPF_MISC = 7 pkg syscall (netbsd-amd64-cgo), const BPF_MSH = 160 pkg syscall (netbsd-amd64-cgo), const BPF_MUL = 32 pkg syscall (netbsd-amd64-cgo), const BPF_NEG = 128 pkg syscall (netbsd-amd64-cgo), const BPF_OR = 64 pkg syscall (netbsd-amd64-cgo), const BPF_RELEASE = 199606 pkg syscall (netbsd-amd64-cgo), const BPF_RET = 6 pkg syscall (netbsd-amd64-cgo), const BPF_RSH = 112 pkg syscall (netbsd-amd64-cgo), const BPF_ST = 2 pkg syscall (netbsd-amd64-cgo), const BPF_STX = 3 pkg syscall (netbsd-amd64-cgo), const BPF_SUB = 16 pkg syscall (netbsd-amd64-cgo), const BPF_TAX = 0 pkg syscall (netbsd-amd64-cgo), const BPF_TXA = 128 pkg syscall (netbsd-amd64-cgo), const BPF_W = 0 pkg syscall (netbsd-amd64-cgo), const BPF_X = 8 pkg syscall (netbsd-amd64-cgo), const BRKINT = 2 pkg syscall (netbsd-amd64-cgo), const CFLUSH = 15 pkg syscall (netbsd-amd64-cgo), const CLOCAL = 32768 pkg syscall (netbsd-amd64-cgo), const CREAD = 2048 pkg syscall (netbsd-amd64-cgo), const CS5 = 0 pkg syscall (netbsd-amd64-cgo), const CS6 = 256 pkg syscall (netbsd-amd64-cgo), const CS7 = 512 pkg syscall (netbsd-amd64-cgo), const CS8 = 768 pkg syscall (netbsd-amd64-cgo), const CSIZE = 768 pkg syscall (netbsd-amd64-cgo), const CSTART = 17 pkg syscall (netbsd-amd64-cgo), const CSTATUS = 20 pkg syscall (netbsd-amd64-cgo), const CSTOP = 19 pkg syscall (netbsd-amd64-cgo), const CSTOPB = 1024 pkg syscall (netbsd-amd64-cgo), const CSUSP = 26 pkg syscall (netbsd-amd64-cgo), const CTL_MAXNAME = 12 pkg syscall (netbsd-amd64-cgo), const CTL_NET = 4 pkg syscall (netbsd-amd64-cgo), const CTL_QUERY = -2 pkg syscall (netbsd-amd64-cgo), const DIOCBSFLUSH = 536896632 pkg syscall (netbsd-amd64-cgo), const DLT_A429 = 184 pkg syscall (netbsd-amd64-cgo), const DLT_A653_ICM = 185 pkg syscall (netbsd-amd64-cgo), const DLT_AIRONET_HEADER = 120 pkg syscall (netbsd-amd64-cgo), const DLT_AOS = 222 pkg syscall (netbsd-amd64-cgo), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (netbsd-amd64-cgo), const DLT_ARCNET = 7 pkg syscall (netbsd-amd64-cgo), const DLT_ARCNET_LINUX = 129 pkg syscall (netbsd-amd64-cgo), const DLT_ATM_CLIP = 19 pkg syscall (netbsd-amd64-cgo), const DLT_ATM_RFC1483 = 11 pkg syscall (netbsd-amd64-cgo), const DLT_AURORA = 126 pkg syscall (netbsd-amd64-cgo), const DLT_AX25 = 3 pkg syscall (netbsd-amd64-cgo), const DLT_AX25_KISS = 202 pkg syscall (netbsd-amd64-cgo), const DLT_BACNET_MS_TP = 165 pkg syscall (netbsd-amd64-cgo), const DLT_BLUETOOTH_HCI_H4 = 187 pkg syscall (netbsd-amd64-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 pkg syscall (netbsd-amd64-cgo), const DLT_CAN20B = 190 pkg syscall (netbsd-amd64-cgo), const DLT_CAN_SOCKETCAN = 227 pkg syscall (netbsd-amd64-cgo), const DLT_CHAOS = 5 pkg syscall (netbsd-amd64-cgo), const DLT_CISCO_IOS = 118 pkg syscall (netbsd-amd64-cgo), const DLT_C_HDLC = 104 pkg syscall (netbsd-amd64-cgo), const DLT_C_HDLC_WITH_DIR = 205 pkg syscall (netbsd-amd64-cgo), const DLT_DECT = 221 pkg syscall (netbsd-amd64-cgo), const DLT_DOCSIS = 143 pkg syscall (netbsd-amd64-cgo), const DLT_ECONET = 115 pkg syscall (netbsd-amd64-cgo), const DLT_EN10MB = 1 pkg syscall (netbsd-amd64-cgo), const DLT_EN3MB = 2 pkg syscall (netbsd-amd64-cgo), const DLT_ENC = 109 pkg syscall (netbsd-amd64-cgo), const DLT_ERF = 197 pkg syscall (netbsd-amd64-cgo), const DLT_ERF_ETH = 175 pkg syscall (netbsd-amd64-cgo), const DLT_ERF_POS = 176 pkg syscall (netbsd-amd64-cgo), const DLT_FC_2 = 224 pkg syscall (netbsd-amd64-cgo), const DLT_FC_2_WITH_FRAME_DELIMS = 225 pkg syscall (netbsd-amd64-cgo), const DLT_FDDI = 10 pkg syscall (netbsd-amd64-cgo), const DLT_FLEXRAY = 210 pkg syscall (netbsd-amd64-cgo), const DLT_FRELAY = 107 pkg syscall (netbsd-amd64-cgo), const DLT_FRELAY_WITH_DIR = 206 pkg syscall (netbsd-amd64-cgo), const DLT_GCOM_SERIAL = 173 pkg syscall (netbsd-amd64-cgo), const DLT_GCOM_T1E1 = 172 pkg syscall (netbsd-amd64-cgo), const DLT_GPF_F = 171 pkg syscall (netbsd-amd64-cgo), const DLT_GPF_T = 170 pkg syscall (netbsd-amd64-cgo), const DLT_GPRS_LLC = 169 pkg syscall (netbsd-amd64-cgo), const DLT_GSMTAP_ABIS = 218 pkg syscall (netbsd-amd64-cgo), const DLT_GSMTAP_UM = 217 pkg syscall (netbsd-amd64-cgo), const DLT_HDLC = 16 pkg syscall (netbsd-amd64-cgo), const DLT_HHDLC = 121 pkg syscall (netbsd-amd64-cgo), const DLT_HIPPI = 15 pkg syscall (netbsd-amd64-cgo), const DLT_IBM_SN = 146 pkg syscall (netbsd-amd64-cgo), const DLT_IBM_SP = 145 pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802 = 6 pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_11 = 105 pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_11_RADIO = 127 pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_15_4 = 195 pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_15_4_LINUX = 191 pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_15_4_NONASK_PHY = 215 pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_16_MAC_CPS = 188 pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 pkg syscall (netbsd-amd64-cgo), const DLT_IPMB = 199 pkg syscall (netbsd-amd64-cgo), const DLT_IPMB_LINUX = 209 pkg syscall (netbsd-amd64-cgo), const DLT_IPNET = 226 pkg syscall (netbsd-amd64-cgo), const DLT_IPV4 = 228 pkg syscall (netbsd-amd64-cgo), const DLT_IPV6 = 229 pkg syscall (netbsd-amd64-cgo), const DLT_IP_OVER_FC = 122 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_ATM1 = 137 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_ATM2 = 135 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_CHDLC = 181 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_ES = 132 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_ETHER = 178 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_FRELAY = 180 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_GGSN = 133 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_ISM = 194 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_MFR = 134 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_MLFR = 131 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_MLPPP = 130 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_MONITOR = 164 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_PIC_PEER = 174 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_PPP = 179 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_PPPOE = 167 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_PPPOE_ATM = 168 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_SERVICES = 136 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_ST = 200 pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_VP = 183 pkg syscall (netbsd-amd64-cgo), const DLT_LAPB_WITH_DIR = 207 pkg syscall (netbsd-amd64-cgo), const DLT_LAPD = 203 pkg syscall (netbsd-amd64-cgo), const DLT_LIN = 212 pkg syscall (netbsd-amd64-cgo), const DLT_LINUX_EVDEV = 216 pkg syscall (netbsd-amd64-cgo), const DLT_LINUX_IRDA = 144 pkg syscall (netbsd-amd64-cgo), const DLT_LINUX_LAPD = 177 pkg syscall (netbsd-amd64-cgo), const DLT_LINUX_SLL = 113 pkg syscall (netbsd-amd64-cgo), const DLT_LOOP = 108 pkg syscall (netbsd-amd64-cgo), const DLT_LTALK = 114 pkg syscall (netbsd-amd64-cgo), const DLT_MFR = 182 pkg syscall (netbsd-amd64-cgo), const DLT_MOST = 211 pkg syscall (netbsd-amd64-cgo), const DLT_MPLS = 219 pkg syscall (netbsd-amd64-cgo), const DLT_MTP2 = 140 pkg syscall (netbsd-amd64-cgo), const DLT_MTP2_WITH_PHDR = 139 pkg syscall (netbsd-amd64-cgo), const DLT_MTP3 = 141 pkg syscall (netbsd-amd64-cgo), const DLT_NULL = 0 pkg syscall (netbsd-amd64-cgo), const DLT_PCI_EXP = 125 pkg syscall (netbsd-amd64-cgo), const DLT_PFLOG = 117 pkg syscall (netbsd-amd64-cgo), const DLT_PFSYNC = 18 pkg syscall (netbsd-amd64-cgo), const DLT_PPI = 192 pkg syscall (netbsd-amd64-cgo), const DLT_PPP = 9 pkg syscall (netbsd-amd64-cgo), const DLT_PPP_BSDOS = 14 pkg syscall (netbsd-amd64-cgo), const DLT_PPP_ETHER = 51 pkg syscall (netbsd-amd64-cgo), const DLT_PPP_PPPD = 166 pkg syscall (netbsd-amd64-cgo), const DLT_PPP_SERIAL = 50 pkg syscall (netbsd-amd64-cgo), const DLT_PPP_WITH_DIR = 204 pkg syscall (netbsd-amd64-cgo), const DLT_PRISM_HEADER = 119 pkg syscall (netbsd-amd64-cgo), const DLT_PRONET = 4 pkg syscall (netbsd-amd64-cgo), const DLT_RAIF1 = 198 pkg syscall (netbsd-amd64-cgo), const DLT_RAW = 12 pkg syscall (netbsd-amd64-cgo), const DLT_RAWAF_MASK = 35913728 pkg syscall (netbsd-amd64-cgo), const DLT_RIO = 124 pkg syscall (netbsd-amd64-cgo), const DLT_SCCP = 142 pkg syscall (netbsd-amd64-cgo), const DLT_SITA = 196 pkg syscall (netbsd-amd64-cgo), const DLT_SLIP = 8 pkg syscall (netbsd-amd64-cgo), const DLT_SLIP_BSDOS = 13 pkg syscall (netbsd-amd64-cgo), const DLT_SUNATM = 123 pkg syscall (netbsd-amd64-cgo), const DLT_SYMANTEC_FIREWALL = 99 pkg syscall (netbsd-amd64-cgo), const DLT_TZSP = 128 pkg syscall (netbsd-amd64-cgo), const DLT_USB = 186 pkg syscall (netbsd-amd64-cgo), const DLT_USB_LINUX = 189 pkg syscall (netbsd-amd64-cgo), const DLT_USB_LINUX_MMAPPED = 220 pkg syscall (netbsd-amd64-cgo), const DLT_WIHART = 223 pkg syscall (netbsd-amd64-cgo), const DLT_X2E_SERIAL = 213 pkg syscall (netbsd-amd64-cgo), const DLT_X2E_XORAYA = 214 pkg syscall (netbsd-amd64-cgo), const DT_BLK = 6 pkg syscall (netbsd-amd64-cgo), const DT_CHR = 2 pkg syscall (netbsd-amd64-cgo), const DT_DIR = 4 pkg syscall (netbsd-amd64-cgo), const DT_FIFO = 1 pkg syscall (netbsd-amd64-cgo), const DT_LNK = 10 pkg syscall (netbsd-amd64-cgo), const DT_REG = 8 pkg syscall (netbsd-amd64-cgo), const DT_SOCK = 12 pkg syscall (netbsd-amd64-cgo), const DT_UNKNOWN = 0 pkg syscall (netbsd-amd64-cgo), const DT_WHT = 14 pkg syscall (netbsd-amd64-cgo), const E2BIG = 7 pkg syscall (netbsd-amd64-cgo), const EACCES = 13 pkg syscall (netbsd-amd64-cgo), const EADDRINUSE = 48 pkg syscall (netbsd-amd64-cgo), const EADDRNOTAVAIL = 49 pkg syscall (netbsd-amd64-cgo), const EAFNOSUPPORT = 47 pkg syscall (netbsd-amd64-cgo), const EAGAIN = 35 pkg syscall (netbsd-amd64-cgo), const EALREADY = 37 pkg syscall (netbsd-amd64-cgo), const EAUTH = 80 pkg syscall (netbsd-amd64-cgo), const EBADF = 9 pkg syscall (netbsd-amd64-cgo), const EBADMSG = 88 pkg syscall (netbsd-amd64-cgo), const EBADRPC = 72 pkg syscall (netbsd-amd64-cgo), const EBUSY = 16 pkg syscall (netbsd-amd64-cgo), const ECANCELED = 87 pkg syscall (netbsd-amd64-cgo), const ECHILD = 10 pkg syscall (netbsd-amd64-cgo), const ECHO = 8 pkg syscall (netbsd-amd64-cgo), const ECHOCTL = 64 pkg syscall (netbsd-amd64-cgo), const ECHOE = 2 pkg syscall (netbsd-amd64-cgo), const ECHOK = 4 pkg syscall (netbsd-amd64-cgo), const ECHOKE = 1 pkg syscall (netbsd-amd64-cgo), const ECHONL = 16 pkg syscall (netbsd-amd64-cgo), const ECHOPRT = 32 pkg syscall (netbsd-amd64-cgo), const ECONNABORTED = 53 pkg syscall (netbsd-amd64-cgo), const ECONNREFUSED = 61 pkg syscall (netbsd-amd64-cgo), const ECONNRESET = 54 pkg syscall (netbsd-amd64-cgo), const EDEADLK = 11 pkg syscall (netbsd-amd64-cgo), const EDESTADDRREQ = 39 pkg syscall (netbsd-amd64-cgo), const EDOM = 33 pkg syscall (netbsd-amd64-cgo), const EDQUOT = 69 pkg syscall (netbsd-amd64-cgo), const EEXIST = 17 pkg syscall (netbsd-amd64-cgo), const EFAULT = 14 pkg syscall (netbsd-amd64-cgo), const EFBIG = 27 pkg syscall (netbsd-amd64-cgo), const EFTYPE = 79 pkg syscall (netbsd-amd64-cgo), const EHOSTDOWN = 64 pkg syscall (netbsd-amd64-cgo), const EHOSTUNREACH = 65 pkg syscall (netbsd-amd64-cgo), const EIDRM = 82 pkg syscall (netbsd-amd64-cgo), const EILSEQ = 85 pkg syscall (netbsd-amd64-cgo), const EINPROGRESS = 36 pkg syscall (netbsd-amd64-cgo), const EINTR = 4 pkg syscall (netbsd-amd64-cgo), const EINVAL = 22 pkg syscall (netbsd-amd64-cgo), const EIO = 5 pkg syscall (netbsd-amd64-cgo), const EISCONN = 56 pkg syscall (netbsd-amd64-cgo), const EISDIR = 21 pkg syscall (netbsd-amd64-cgo), const ELAST = 96 pkg syscall (netbsd-amd64-cgo), const ELOOP = 62 pkg syscall (netbsd-amd64-cgo), const EMFILE = 24 pkg syscall (netbsd-amd64-cgo), const EMLINK = 31 pkg syscall (netbsd-amd64-cgo), const EMSGSIZE = 40 pkg syscall (netbsd-amd64-cgo), const EMULTIHOP = 94 pkg syscall (netbsd-amd64-cgo), const EMUL_LINUX = 1 pkg syscall (netbsd-amd64-cgo), const EMUL_LINUX32 = 5 pkg syscall (netbsd-amd64-cgo), const EMUL_MAXID = 6 pkg syscall (netbsd-amd64-cgo), const ENAMETOOLONG = 63 pkg syscall (netbsd-amd64-cgo), const ENEEDAUTH = 81 pkg syscall (netbsd-amd64-cgo), const ENETDOWN = 50 pkg syscall (netbsd-amd64-cgo), const ENETRESET = 52 pkg syscall (netbsd-amd64-cgo), const ENETUNREACH = 51 pkg syscall (netbsd-amd64-cgo), const ENFILE = 23 pkg syscall (netbsd-amd64-cgo), const ENOATTR = 93 pkg syscall (netbsd-amd64-cgo), const ENOBUFS = 55 pkg syscall (netbsd-amd64-cgo), const ENODATA = 89 pkg syscall (netbsd-amd64-cgo), const ENODEV = 19 pkg syscall (netbsd-amd64-cgo), const ENOEXEC = 8 pkg syscall (netbsd-amd64-cgo), const ENOLCK = 77 pkg syscall (netbsd-amd64-cgo), const ENOLINK = 95 pkg syscall (netbsd-amd64-cgo), const ENOMEM = 12 pkg syscall (netbsd-amd64-cgo), const ENOMSG = 83 pkg syscall (netbsd-amd64-cgo), const ENOPROTOOPT = 42 pkg syscall (netbsd-amd64-cgo), const ENOSPC = 28 pkg syscall (netbsd-amd64-cgo), const ENOSR = 90 pkg syscall (netbsd-amd64-cgo), const ENOSTR = 91 pkg syscall (netbsd-amd64-cgo), const ENOSYS = 78 pkg syscall (netbsd-amd64-cgo), const ENOTBLK = 15 pkg syscall (netbsd-amd64-cgo), const ENOTCONN = 57 pkg syscall (netbsd-amd64-cgo), const ENOTDIR = 20 pkg syscall (netbsd-amd64-cgo), const ENOTEMPTY = 66 pkg syscall (netbsd-amd64-cgo), const ENOTSOCK = 38 pkg syscall (netbsd-amd64-cgo), const ENOTSUP = 86 pkg syscall (netbsd-amd64-cgo), const ENOTTY = 25 pkg syscall (netbsd-amd64-cgo), const ENXIO = 6 pkg syscall (netbsd-amd64-cgo), const EOPNOTSUPP = 45 pkg syscall (netbsd-amd64-cgo), const EOVERFLOW = 84 pkg syscall (netbsd-amd64-cgo), const EPERM = 1 pkg syscall (netbsd-amd64-cgo), const EPFNOSUPPORT = 46 pkg syscall (netbsd-amd64-cgo), const EPIPE = 32 pkg syscall (netbsd-amd64-cgo), const EPROCLIM = 67 pkg syscall (netbsd-amd64-cgo), const EPROCUNAVAIL = 76 pkg syscall (netbsd-amd64-cgo), const EPROGMISMATCH = 75 pkg syscall (netbsd-amd64-cgo), const EPROGUNAVAIL = 74 pkg syscall (netbsd-amd64-cgo), const EPROTO = 96 pkg syscall (netbsd-amd64-cgo), const EPROTONOSUPPORT = 43 pkg syscall (netbsd-amd64-cgo), const EPROTOTYPE = 41 pkg syscall (netbsd-amd64-cgo), const ERANGE = 34 pkg syscall (netbsd-amd64-cgo), const EREMOTE = 71 pkg syscall (netbsd-amd64-cgo), const EROFS = 30 pkg syscall (netbsd-amd64-cgo), const ERPCMISMATCH = 73 pkg syscall (netbsd-amd64-cgo), const ESHUTDOWN = 58 pkg syscall (netbsd-amd64-cgo), const ESOCKTNOSUPPORT = 44 pkg syscall (netbsd-amd64-cgo), const ESPIPE = 29 pkg syscall (netbsd-amd64-cgo), const ESRCH = 3 pkg syscall (netbsd-amd64-cgo), const ESTALE = 70 pkg syscall (netbsd-amd64-cgo), const ETHERCAP_JUMBO_MTU = 4 pkg syscall (netbsd-amd64-cgo), const ETHERCAP_VLAN_HWTAGGING = 2 pkg syscall (netbsd-amd64-cgo), const ETHERCAP_VLAN_MTU = 1 pkg syscall (netbsd-amd64-cgo), const ETHERMIN = 46 pkg syscall (netbsd-amd64-cgo), const ETHERMTU = 1500 pkg syscall (netbsd-amd64-cgo), const ETHERMTU_JUMBO = 9000 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_8023 = 4 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_AARP = 33011 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ACCTON = 33680 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_AEONIC = 32822 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ALPHA = 33098 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_AMBER = 24584 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_AMOEBA = 33093 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_APOLLO = 33015 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_APOLLODOMAIN = 32793 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_APPLETALK = 32923 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_APPLITEK = 32967 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ARGONAUT = 32826 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ARP = 2054 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_AT = 32923 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ATALK = 32923 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ATOMIC = 34527 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ATT = 32873 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ATTSTANFORD = 32776 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_AUTOPHON = 32874 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_AXIS = 34902 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_BCLOOP = 36867 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_BOFL = 33026 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_CABLETRON = 28724 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_CHAOS = 2052 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_COMDESIGN = 32876 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_COMPUGRAPHIC = 32877 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_COUNTERPOINT = 32866 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_CRONUS = 32772 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_CRONUSVLN = 32771 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DCA = 4660 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DDE = 32891 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DEBNI = 43690 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECAM = 32840 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECCUST = 24582 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECDIAG = 24581 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECDNS = 32828 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECDTS = 32830 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECEXPER = 24576 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECLAST = 32833 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECLTM = 32831 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECMUMPS = 24585 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECNETBIOS = 32832 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DELTACON = 34526 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DIDDLE = 17185 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DLOG1 = 1632 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DLOG2 = 1633 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DN = 24579 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DOGFIGHT = 6537 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DSMD = 32825 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ECMA = 2051 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ENCRYPT = 32829 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ES = 32861 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_EXCELAN = 32784 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_EXPERDATA = 32841 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_FLIP = 33094 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_FLOWCONTROL = 34824 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_FRARP = 2056 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_GENDYN = 32872 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_HAYES = 33072 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_HIPPI_FP = 33152 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_HITACHI = 34848 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_HP = 32773 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IEEEPUP = 2560 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IEEEPUPAT = 2561 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IMLBL = 19522 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IMLBLDIAG = 16972 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IP = 2048 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IPAS = 34668 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IPV6 = 34525 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IPX = 33079 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IPXNEW = 32823 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_KALPANA = 34178 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_LANBRIDGE = 32824 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_LANPROBE = 34952 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_LAT = 24580 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_LBACK = 36864 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_LITTLE = 32864 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_LOGICRAFT = 33096 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_LOOPBACK = 36864 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MATRA = 32890 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MAX = 65535 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MERIT = 32892 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MICP = 34618 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MOPDL = 24577 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MOPRC = 24578 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MOTOROLA = 33165 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MPLS = 34887 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MPLS_MCAST = 34888 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MUMPS = 33087 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPCC = 15364 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPCLAIM = 15369 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPCLREQ = 15365 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPCLRSP = 15366 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPCREQ = 15362 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPCRSP = 15363 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPDG = 15367 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPDGB = 15368 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPDLTE = 15370 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPRAR = 15372 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPRAS = 15371 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPRST = 15373 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPSCD = 15361 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPVCD = 15360 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBS = 2050 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NCD = 33097 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NESTAR = 32774 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NETBEUI = 33169 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NOVELL = 33080 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NS = 1536 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NSAT = 1537 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NSCOMPAT = 2055 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NTRAILER = 16 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_OS9 = 28679 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_OS9NET = 28681 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PACER = 32966 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PAE = 34958 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PCS = 16962 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PLANNING = 32836 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PPP = 34827 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PPPOE = 34916 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PPPOEDISC = 34915 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PRIMENTS = 28721 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PUP = 512 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PUPAT = 512 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_RACAL = 28720 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_RATIONAL = 33104 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_RAWFR = 25945 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_RCL = 6549 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_RDP = 34617 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_RETIX = 33010 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_REVARP = 32821 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SCA = 24583 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SECTRA = 34523 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SECUREDATA = 34669 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SGITW = 33150 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SG_BOUNCE = 32790 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SG_DIAG = 32787 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SG_NETGAMES = 32788 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SG_RESV = 32789 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SIMNET = 21000 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SLOWPROTOCOLS = 34825 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SNA = 32981 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SNMP = 33100 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SONIX = 64245 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SPIDER = 32927 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SPRITE = 1280 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_STP = 33153 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TALARIS = 33067 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TALARISMC = 34091 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TCPCOMP = 34667 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TCPSM = 36866 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TEC = 33103 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TIGAN = 32815 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TRAIL = 4096 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TRANSETHER = 25944 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TYMSHARE = 32814 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_UBBST = 28677 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_UBDEBUG = 2304 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_UBDIAGLOOP = 28674 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_UBDL = 28672 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_UBNIU = 28673 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_UBNMC = 28675 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VALID = 5632 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VARIAN = 32989 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VAXELN = 32827 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VEECO = 32871 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VEXP = 32859 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VGLAB = 33073 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VINES = 2989 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VINESECHO = 2991 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VINESLOOP = 2990 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VITAL = 65280 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VLAN = 33024 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VLTLMAN = 32896 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VPROD = 32860 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VURESERVED = 33095 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_WATERLOO = 33072 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_WELLFLEET = 33027 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_X25 = 2053 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_X75 = 2049 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_XNSSM = 36865 pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_XTP = 33149 pkg syscall (netbsd-amd64-cgo), const ETHER_ADDR_LEN = 6 pkg syscall (netbsd-amd64-cgo), const ETHER_CRC_LEN = 4 pkg syscall (netbsd-amd64-cgo), const ETHER_CRC_POLY_BE = 79764918 pkg syscall (netbsd-amd64-cgo), const ETHER_CRC_POLY_LE = 3988292384 pkg syscall (netbsd-amd64-cgo), const ETHER_HDR_LEN = 14 pkg syscall (netbsd-amd64-cgo), const ETHER_MAX_LEN = 1518 pkg syscall (netbsd-amd64-cgo), const ETHER_MAX_LEN_JUMBO = 9018 pkg syscall (netbsd-amd64-cgo), const ETHER_MIN_LEN = 64 pkg syscall (netbsd-amd64-cgo), const ETHER_PPPOE_ENCAP_LEN = 8 pkg syscall (netbsd-amd64-cgo), const ETHER_TYPE_LEN = 2 pkg syscall (netbsd-amd64-cgo), const ETHER_VLAN_ENCAP_LEN = 4 pkg syscall (netbsd-amd64-cgo), const ETIME = 92 pkg syscall (netbsd-amd64-cgo), const ETIMEDOUT = 60 pkg syscall (netbsd-amd64-cgo), const ETOOMANYREFS = 59 pkg syscall (netbsd-amd64-cgo), const ETXTBSY = 26 pkg syscall (netbsd-amd64-cgo), const EUSERS = 68 pkg syscall (netbsd-amd64-cgo), const EVFILT_AIO = 2 pkg syscall (netbsd-amd64-cgo), const EVFILT_PROC = 4 pkg syscall (netbsd-amd64-cgo), const EVFILT_READ = 0 pkg syscall (netbsd-amd64-cgo), const EVFILT_SIGNAL = 5 pkg syscall (netbsd-amd64-cgo), const EVFILT_SYSCOUNT = 7 pkg syscall (netbsd-amd64-cgo), const EVFILT_TIMER = 6 pkg syscall (netbsd-amd64-cgo), const EVFILT_VNODE = 3 pkg syscall (netbsd-amd64-cgo), const EVFILT_WRITE = 1 pkg syscall (netbsd-amd64-cgo), const EV_ADD = 1 pkg syscall (netbsd-amd64-cgo), const EV_CLEAR = 32 pkg syscall (netbsd-amd64-cgo), const EV_DELETE = 2 pkg syscall (netbsd-amd64-cgo), const EV_DISABLE = 8 pkg syscall (netbsd-amd64-cgo), const EV_ENABLE = 4 pkg syscall (netbsd-amd64-cgo), const EV_EOF = 32768 pkg syscall (netbsd-amd64-cgo), const EV_ERROR = 16384 pkg syscall (netbsd-amd64-cgo), const EV_FLAG1 = 8192 pkg syscall (netbsd-amd64-cgo), const EV_ONESHOT = 16 pkg syscall (netbsd-amd64-cgo), const EV_SYSFLAGS = 61440 pkg syscall (netbsd-amd64-cgo), const EWOULDBLOCK = 35 pkg syscall (netbsd-amd64-cgo), const EXDEV = 18 pkg syscall (netbsd-amd64-cgo), const EXTA = 19200 pkg syscall (netbsd-amd64-cgo), const EXTB = 38400 pkg syscall (netbsd-amd64-cgo), const EXTPROC = 2048 pkg syscall (netbsd-amd64-cgo), const FD_CLOEXEC = 1 pkg syscall (netbsd-amd64-cgo), const FD_SETSIZE = 256 pkg syscall (netbsd-amd64-cgo), const FLUSHO = 8388608 pkg syscall (netbsd-amd64-cgo), const F_CLOSEM = 10 pkg syscall (netbsd-amd64-cgo), const F_DUPFD = 0 pkg syscall (netbsd-amd64-cgo), const F_DUPFD_CLOEXEC = 12 pkg syscall (netbsd-amd64-cgo), const F_FSCTL = -2147483648 pkg syscall (netbsd-amd64-cgo), const F_FSDIRMASK = 1879048192 pkg syscall (netbsd-amd64-cgo), const F_FSIN = 268435456 pkg syscall (netbsd-amd64-cgo), const F_FSINOUT = 805306368 pkg syscall (netbsd-amd64-cgo), const F_FSOUT = 536870912 pkg syscall (netbsd-amd64-cgo), const F_FSPRIV = 32768 pkg syscall (netbsd-amd64-cgo), const F_FSVOID = 1073741824 pkg syscall (netbsd-amd64-cgo), const F_GETFD = 1 pkg syscall (netbsd-amd64-cgo), const F_GETFL = 3 pkg syscall (netbsd-amd64-cgo), const F_GETLK = 7 pkg syscall (netbsd-amd64-cgo), const F_GETNOSIGPIPE = 13 pkg syscall (netbsd-amd64-cgo), const F_GETOWN = 5 pkg syscall (netbsd-amd64-cgo), const F_MAXFD = 11 pkg syscall (netbsd-amd64-cgo), const F_OK = 0 pkg syscall (netbsd-amd64-cgo), const F_PARAM_MASK = 4095 pkg syscall (netbsd-amd64-cgo), const F_PARAM_MAX = 4095 pkg syscall (netbsd-amd64-cgo), const F_RDLCK = 1 pkg syscall (netbsd-amd64-cgo), const F_SETFD = 2 pkg syscall (netbsd-amd64-cgo), const F_SETFL = 4 pkg syscall (netbsd-amd64-cgo), const F_SETLK = 8 pkg syscall (netbsd-amd64-cgo), const F_SETLKW = 9 pkg syscall (netbsd-amd64-cgo), const F_SETNOSIGPIPE = 14 pkg syscall (netbsd-amd64-cgo), const F_SETOWN = 6 pkg syscall (netbsd-amd64-cgo), const F_UNLCK = 2 pkg syscall (netbsd-amd64-cgo), const F_WRLCK = 3 pkg syscall (netbsd-amd64-cgo), const HUPCL = 16384 pkg syscall (netbsd-amd64-cgo), const ICANON = 256 pkg syscall (netbsd-amd64-cgo), const ICRNL = 256 pkg syscall (netbsd-amd64-cgo), const IEXTEN = 1024 pkg syscall (netbsd-amd64-cgo), const IFAN_ARRIVAL = 0 pkg syscall (netbsd-amd64-cgo), const IFAN_DEPARTURE = 1 pkg syscall (netbsd-amd64-cgo), const IFA_ROUTE = 1 pkg syscall (netbsd-amd64-cgo), const IFF_ALLMULTI = 512 pkg syscall (netbsd-amd64-cgo), const IFF_CANTCHANGE = 36690 pkg syscall (netbsd-amd64-cgo), const IFF_DEBUG = 4 pkg syscall (netbsd-amd64-cgo), const IFF_LINK0 = 4096 pkg syscall (netbsd-amd64-cgo), const IFF_LINK1 = 8192 pkg syscall (netbsd-amd64-cgo), const IFF_LINK2 = 16384 pkg syscall (netbsd-amd64-cgo), const IFF_LOOPBACK = 8 pkg syscall (netbsd-amd64-cgo), const IFF_MULTICAST = 32768 pkg syscall (netbsd-amd64-cgo), const IFF_NOARP = 128 pkg syscall (netbsd-amd64-cgo), const IFF_NOTRAILERS = 32 pkg syscall (netbsd-amd64-cgo), const IFF_OACTIVE = 1024 pkg syscall (netbsd-amd64-cgo), const IFF_POINTOPOINT = 16 pkg syscall (netbsd-amd64-cgo), const IFF_PROMISC = 256 pkg syscall (netbsd-amd64-cgo), const IFF_RUNNING = 64 pkg syscall (netbsd-amd64-cgo), const IFF_SIMPLEX = 2048 pkg syscall (netbsd-amd64-cgo), const IFNAMSIZ = 16 pkg syscall (netbsd-amd64-cgo), const IFT_1822 = 2 pkg syscall (netbsd-amd64-cgo), const IFT_A12MPPSWITCH = 130 pkg syscall (netbsd-amd64-cgo), const IFT_AAL2 = 187 pkg syscall (netbsd-amd64-cgo), const IFT_AAL5 = 49 pkg syscall (netbsd-amd64-cgo), const IFT_ADSL = 94 pkg syscall (netbsd-amd64-cgo), const IFT_AFLANE8023 = 59 pkg syscall (netbsd-amd64-cgo), const IFT_AFLANE8025 = 60 pkg syscall (netbsd-amd64-cgo), const IFT_ARAP = 88 pkg syscall (netbsd-amd64-cgo), const IFT_ARCNET = 35 pkg syscall (netbsd-amd64-cgo), const IFT_ARCNETPLUS = 36 pkg syscall (netbsd-amd64-cgo), const IFT_ASYNC = 84 pkg syscall (netbsd-amd64-cgo), const IFT_ATM = 37 pkg syscall (netbsd-amd64-cgo), const IFT_ATMDXI = 105 pkg syscall (netbsd-amd64-cgo), const IFT_ATMFUNI = 106 pkg syscall (netbsd-amd64-cgo), const IFT_ATMIMA = 107 pkg syscall (netbsd-amd64-cgo), const IFT_ATMLOGICAL = 80 pkg syscall (netbsd-amd64-cgo), const IFT_ATMRADIO = 189 pkg syscall (netbsd-amd64-cgo), const IFT_ATMSUBINTERFACE = 134 pkg syscall (netbsd-amd64-cgo), const IFT_ATMVCIENDPT = 194 pkg syscall (netbsd-amd64-cgo), const IFT_ATMVIRTUAL = 149 pkg syscall (netbsd-amd64-cgo), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (netbsd-amd64-cgo), const IFT_BRIDGE = 209 pkg syscall (netbsd-amd64-cgo), const IFT_BSC = 83 pkg syscall (netbsd-amd64-cgo), const IFT_CARP = 248 pkg syscall (netbsd-amd64-cgo), const IFT_CCTEMUL = 61 pkg syscall (netbsd-amd64-cgo), const IFT_CEPT = 19 pkg syscall (netbsd-amd64-cgo), const IFT_CES = 133 pkg syscall (netbsd-amd64-cgo), const IFT_CHANNEL = 70 pkg syscall (netbsd-amd64-cgo), const IFT_CNR = 85 pkg syscall (netbsd-amd64-cgo), const IFT_COFFEE = 132 pkg syscall (netbsd-amd64-cgo), const IFT_COMPOSITELINK = 155 pkg syscall (netbsd-amd64-cgo), const IFT_DCN = 141 pkg syscall (netbsd-amd64-cgo), const IFT_DIGITALPOWERLINE = 138 pkg syscall (netbsd-amd64-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (netbsd-amd64-cgo), const IFT_DLSW = 74 pkg syscall (netbsd-amd64-cgo), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (netbsd-amd64-cgo), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (netbsd-amd64-cgo), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (netbsd-amd64-cgo), const IFT_DOCSCABLEUPSTREAMCHANNEL = 205 pkg syscall (netbsd-amd64-cgo), const IFT_DS0 = 81 pkg syscall (netbsd-amd64-cgo), const IFT_DS0BUNDLE = 82 pkg syscall (netbsd-amd64-cgo), const IFT_DS1FDL = 170 pkg syscall (netbsd-amd64-cgo), const IFT_DS3 = 30 pkg syscall (netbsd-amd64-cgo), const IFT_DTM = 140 pkg syscall (netbsd-amd64-cgo), const IFT_DVBASILN = 172 pkg syscall (netbsd-amd64-cgo), const IFT_DVBASIOUT = 173 pkg syscall (netbsd-amd64-cgo), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (netbsd-amd64-cgo), const IFT_DVBRCCMACLAYER = 146 pkg syscall (netbsd-amd64-cgo), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (netbsd-amd64-cgo), const IFT_ECONET = 206 pkg syscall (netbsd-amd64-cgo), const IFT_EON = 25 pkg syscall (netbsd-amd64-cgo), const IFT_EPLRS = 87 pkg syscall (netbsd-amd64-cgo), const IFT_ESCON = 73 pkg syscall (netbsd-amd64-cgo), const IFT_ETHER = 6 pkg syscall (netbsd-amd64-cgo), const IFT_FAITH = 242 pkg syscall (netbsd-amd64-cgo), const IFT_FAST = 125 pkg syscall (netbsd-amd64-cgo), const IFT_FASTETHER = 62 pkg syscall (netbsd-amd64-cgo), const IFT_FASTETHERFX = 69 pkg syscall (netbsd-amd64-cgo), const IFT_FDDI = 15 pkg syscall (netbsd-amd64-cgo), const IFT_FIBRECHANNEL = 56 pkg syscall (netbsd-amd64-cgo), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (netbsd-amd64-cgo), const IFT_FRAMERELAYMPI = 92 pkg syscall (netbsd-amd64-cgo), const IFT_FRDLCIENDPT = 193 pkg syscall (netbsd-amd64-cgo), const IFT_FRELAY = 32 pkg syscall (netbsd-amd64-cgo), const IFT_FRELAYDCE = 44 pkg syscall (netbsd-amd64-cgo), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (netbsd-amd64-cgo), const IFT_FRFORWARD = 158 pkg syscall (netbsd-amd64-cgo), const IFT_G703AT2MB = 67 pkg syscall (netbsd-amd64-cgo), const IFT_G703AT64K = 66 pkg syscall (netbsd-amd64-cgo), const IFT_GIF = 240 pkg syscall (netbsd-amd64-cgo), const IFT_GIGABITETHERNET = 117 pkg syscall (netbsd-amd64-cgo), const IFT_GR303IDT = 178 pkg syscall (netbsd-amd64-cgo), const IFT_GR303RDT = 177 pkg syscall (netbsd-amd64-cgo), const IFT_H323GATEKEEPER = 164 pkg syscall (netbsd-amd64-cgo), const IFT_H323PROXY = 165 pkg syscall (netbsd-amd64-cgo), const IFT_HDH1822 = 3 pkg syscall (netbsd-amd64-cgo), const IFT_HDLC = 118 pkg syscall (netbsd-amd64-cgo), const IFT_HDSL2 = 168 pkg syscall (netbsd-amd64-cgo), const IFT_HIPERLAN2 = 183 pkg syscall (netbsd-amd64-cgo), const IFT_HIPPI = 47 pkg syscall (netbsd-amd64-cgo), const IFT_HIPPIINTERFACE = 57 pkg syscall (netbsd-amd64-cgo), const IFT_HOSTPAD = 90 pkg syscall (netbsd-amd64-cgo), const IFT_HSSI = 46 pkg syscall (netbsd-amd64-cgo), const IFT_HY = 14 pkg syscall (netbsd-amd64-cgo), const IFT_IBM370PARCHAN = 72 pkg syscall (netbsd-amd64-cgo), const IFT_IDSL = 154 pkg syscall (netbsd-amd64-cgo), const IFT_IEEE1394 = 144 pkg syscall (netbsd-amd64-cgo), const IFT_IEEE80211 = 71 pkg syscall (netbsd-amd64-cgo), const IFT_IEEE80212 = 55 pkg syscall (netbsd-amd64-cgo), const IFT_IEEE8023ADLAG = 161 pkg syscall (netbsd-amd64-cgo), const IFT_IFGSN = 145 pkg syscall (netbsd-amd64-cgo), const IFT_IMT = 190 pkg syscall (netbsd-amd64-cgo), const IFT_INFINIBAND = 199 pkg syscall (netbsd-amd64-cgo), const IFT_INTERLEAVE = 124 pkg syscall (netbsd-amd64-cgo), const IFT_IP = 126 pkg syscall (netbsd-amd64-cgo), const IFT_IPFORWARD = 142 pkg syscall (netbsd-amd64-cgo), const IFT_IPOVERATM = 114 pkg syscall (netbsd-amd64-cgo), const IFT_IPOVERCDLC = 109 pkg syscall (netbsd-amd64-cgo), const IFT_IPOVERCLAW = 110 pkg syscall (netbsd-amd64-cgo), const IFT_IPSWITCH = 78 pkg syscall (netbsd-amd64-cgo), const IFT_ISDN = 63 pkg syscall (netbsd-amd64-cgo), const IFT_ISDNBASIC = 20 pkg syscall (netbsd-amd64-cgo), const IFT_ISDNPRIMARY = 21 pkg syscall (netbsd-amd64-cgo), const IFT_ISDNS = 75 pkg syscall (netbsd-amd64-cgo), const IFT_ISDNU = 76 pkg syscall (netbsd-amd64-cgo), const IFT_ISO88022LLC = 41 pkg syscall (netbsd-amd64-cgo), const IFT_ISO88023 = 7 pkg syscall (netbsd-amd64-cgo), const IFT_ISO88024 = 8 pkg syscall (netbsd-amd64-cgo), const IFT_ISO88025 = 9 pkg syscall (netbsd-amd64-cgo), const IFT_ISO88025CRFPINT = 98 pkg syscall (netbsd-amd64-cgo), const IFT_ISO88025DTR = 86 pkg syscall (netbsd-amd64-cgo), const IFT_ISO88025FIBER = 115 pkg syscall (netbsd-amd64-cgo), const IFT_ISO88026 = 10 pkg syscall (netbsd-amd64-cgo), const IFT_ISUP = 179 pkg syscall (netbsd-amd64-cgo), const IFT_L2VLAN = 135 pkg syscall (netbsd-amd64-cgo), const IFT_L3IPVLAN = 136 pkg syscall (netbsd-amd64-cgo), const IFT_L3IPXVLAN = 137 pkg syscall (netbsd-amd64-cgo), const IFT_LAPB = 16 pkg syscall (netbsd-amd64-cgo), const IFT_LAPD = 77 pkg syscall (netbsd-amd64-cgo), const IFT_LAPF = 119 pkg syscall (netbsd-amd64-cgo), const IFT_LINEGROUP = 210 pkg syscall (netbsd-amd64-cgo), const IFT_LOCALTALK = 42 pkg syscall (netbsd-amd64-cgo), const IFT_LOOP = 24 pkg syscall (netbsd-amd64-cgo), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (netbsd-amd64-cgo), const IFT_MFSIGLINK = 167 pkg syscall (netbsd-amd64-cgo), const IFT_MIOX25 = 38 pkg syscall (netbsd-amd64-cgo), const IFT_MODEM = 48 pkg syscall (netbsd-amd64-cgo), const IFT_MPC = 113 pkg syscall (netbsd-amd64-cgo), const IFT_MPLS = 166 pkg syscall (netbsd-amd64-cgo), const IFT_MPLSTUNNEL = 150 pkg syscall (netbsd-amd64-cgo), const IFT_MSDSL = 143 pkg syscall (netbsd-amd64-cgo), const IFT_MVL = 191 pkg syscall (netbsd-amd64-cgo), const IFT_MYRINET = 99 pkg syscall (netbsd-amd64-cgo), const IFT_NFAS = 175 pkg syscall (netbsd-amd64-cgo), const IFT_NSIP = 27 pkg syscall (netbsd-amd64-cgo), const IFT_OPTICALCHANNEL = 195 pkg syscall (netbsd-amd64-cgo), const IFT_OPTICALTRANSPORT = 196 pkg syscall (netbsd-amd64-cgo), const IFT_OTHER = 1 pkg syscall (netbsd-amd64-cgo), const IFT_P10 = 12 pkg syscall (netbsd-amd64-cgo), const IFT_P80 = 13 pkg syscall (netbsd-amd64-cgo), const IFT_PARA = 34 pkg syscall (netbsd-amd64-cgo), const IFT_PFLOG = 245 pkg syscall (netbsd-amd64-cgo), const IFT_PFSYNC = 246 pkg syscall (netbsd-amd64-cgo), const IFT_PLC = 174 pkg syscall (netbsd-amd64-cgo), const IFT_PON155 = 207 pkg syscall (netbsd-amd64-cgo), const IFT_PON622 = 208 pkg syscall (netbsd-amd64-cgo), const IFT_POS = 171 pkg syscall (netbsd-amd64-cgo), const IFT_PPP = 23 pkg syscall (netbsd-amd64-cgo), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (netbsd-amd64-cgo), const IFT_PROPATM = 197 pkg syscall (netbsd-amd64-cgo), const IFT_PROPBWAP2MP = 184 pkg syscall (netbsd-amd64-cgo), const IFT_PROPCNLS = 89 pkg syscall (netbsd-amd64-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (netbsd-amd64-cgo), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (netbsd-amd64-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (netbsd-amd64-cgo), const IFT_PROPMUX = 54 pkg syscall (netbsd-amd64-cgo), const IFT_PROPVIRTUAL = 53 pkg syscall (netbsd-amd64-cgo), const IFT_PROPWIRELESSP2P = 157 pkg syscall (netbsd-amd64-cgo), const IFT_PTPSERIAL = 22 pkg syscall (netbsd-amd64-cgo), const IFT_PVC = 241 pkg syscall (netbsd-amd64-cgo), const IFT_Q2931 = 201 pkg syscall (netbsd-amd64-cgo), const IFT_QLLC = 68 pkg syscall (netbsd-amd64-cgo), const IFT_RADIOMAC = 188 pkg syscall (netbsd-amd64-cgo), const IFT_RADSL = 95 pkg syscall (netbsd-amd64-cgo), const IFT_REACHDSL = 192 pkg syscall (netbsd-amd64-cgo), const IFT_RFC1483 = 159 pkg syscall (netbsd-amd64-cgo), const IFT_RS232 = 33 pkg syscall (netbsd-amd64-cgo), const IFT_RSRB = 79 pkg syscall (netbsd-amd64-cgo), const IFT_SDLC = 17 pkg syscall (netbsd-amd64-cgo), const IFT_SDSL = 96 pkg syscall (netbsd-amd64-cgo), const IFT_SHDSL = 169 pkg syscall (netbsd-amd64-cgo), const IFT_SIP = 31 pkg syscall (netbsd-amd64-cgo), const IFT_SIPSIG = 204 pkg syscall (netbsd-amd64-cgo), const IFT_SIPTG = 203 pkg syscall (netbsd-amd64-cgo), const IFT_SLIP = 28 pkg syscall (netbsd-amd64-cgo), const IFT_SMDSDXI = 43 pkg syscall (netbsd-amd64-cgo), const IFT_SMDSICIP = 52 pkg syscall (netbsd-amd64-cgo), const IFT_SONET = 39 pkg syscall (netbsd-amd64-cgo), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (netbsd-amd64-cgo), const IFT_SONETPATH = 50 pkg syscall (netbsd-amd64-cgo), const IFT_SONETVT = 51 pkg syscall (netbsd-amd64-cgo), const IFT_SRP = 151 pkg syscall (netbsd-amd64-cgo), const IFT_SS7SIGLINK = 156 pkg syscall (netbsd-amd64-cgo), const IFT_STACKTOSTACK = 111 pkg syscall (netbsd-amd64-cgo), const IFT_STARLAN = 11 pkg syscall (netbsd-amd64-cgo), const IFT_STF = 215 pkg syscall (netbsd-amd64-cgo), const IFT_T1 = 18 pkg syscall (netbsd-amd64-cgo), const IFT_TDLC = 116 pkg syscall (netbsd-amd64-cgo), const IFT_TELINK = 200 pkg syscall (netbsd-amd64-cgo), const IFT_TERMPAD = 91 pkg syscall (netbsd-amd64-cgo), const IFT_TR008 = 176 pkg syscall (netbsd-amd64-cgo), const IFT_TRANSPHDLC = 123 pkg syscall (netbsd-amd64-cgo), const IFT_TUNNEL = 131 pkg syscall (netbsd-amd64-cgo), const IFT_ULTRA = 29 pkg syscall (netbsd-amd64-cgo), const IFT_USB = 160 pkg syscall (netbsd-amd64-cgo), const IFT_V11 = 64 pkg syscall (netbsd-amd64-cgo), const IFT_V35 = 45 pkg syscall (netbsd-amd64-cgo), const IFT_V36 = 65 pkg syscall (netbsd-amd64-cgo), const IFT_V37 = 120 pkg syscall (netbsd-amd64-cgo), const IFT_VDSL = 97 pkg syscall (netbsd-amd64-cgo), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (netbsd-amd64-cgo), const IFT_VIRTUALTG = 202 pkg syscall (netbsd-amd64-cgo), const IFT_VOICEDID = 213 pkg syscall (netbsd-amd64-cgo), const IFT_VOICEEM = 100 pkg syscall (netbsd-amd64-cgo), const IFT_VOICEEMFGD = 211 pkg syscall (netbsd-amd64-cgo), const IFT_VOICEENCAP = 103 pkg syscall (netbsd-amd64-cgo), const IFT_VOICEFGDEANA = 212 pkg syscall (netbsd-amd64-cgo), const IFT_VOICEFXO = 101 pkg syscall (netbsd-amd64-cgo), const IFT_VOICEFXS = 102 pkg syscall (netbsd-amd64-cgo), const IFT_VOICEOVERATM = 152 pkg syscall (netbsd-amd64-cgo), const IFT_VOICEOVERCABLE = 198 pkg syscall (netbsd-amd64-cgo), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (netbsd-amd64-cgo), const IFT_VOICEOVERIP = 104 pkg syscall (netbsd-amd64-cgo), const IFT_X213 = 93 pkg syscall (netbsd-amd64-cgo), const IFT_X25 = 5 pkg syscall (netbsd-amd64-cgo), const IFT_X25DDN = 4 pkg syscall (netbsd-amd64-cgo), const IFT_X25HUNTGROUP = 122 pkg syscall (netbsd-amd64-cgo), const IFT_X25MLP = 121 pkg syscall (netbsd-amd64-cgo), const IFT_X25PLE = 40 pkg syscall (netbsd-amd64-cgo), const IFT_XETHER = 26 pkg syscall (netbsd-amd64-cgo), const IGNBRK = 1 pkg syscall (netbsd-amd64-cgo), const IGNCR = 128 pkg syscall (netbsd-amd64-cgo), const IGNPAR = 4 pkg syscall (netbsd-amd64-cgo), const IMAXBEL = 8192 pkg syscall (netbsd-amd64-cgo), const INLCR = 64 pkg syscall (netbsd-amd64-cgo), const INPCK = 16 pkg syscall (netbsd-amd64-cgo), const IN_CLASSA_HOST = 16777215 pkg syscall (netbsd-amd64-cgo), const IN_CLASSA_MAX = 128 pkg syscall (netbsd-amd64-cgo), const IN_CLASSA_NET = 4278190080 pkg syscall (netbsd-amd64-cgo), const IN_CLASSA_NSHIFT = 24 pkg syscall (netbsd-amd64-cgo), const IN_CLASSB_HOST = 65535 pkg syscall (netbsd-amd64-cgo), const IN_CLASSB_MAX = 65536 pkg syscall (netbsd-amd64-cgo), const IN_CLASSB_NET = 4294901760 pkg syscall (netbsd-amd64-cgo), const IN_CLASSB_NSHIFT = 16 pkg syscall (netbsd-amd64-cgo), const IN_CLASSC_HOST = 255 pkg syscall (netbsd-amd64-cgo), const IN_CLASSC_NET = 4294967040 pkg syscall (netbsd-amd64-cgo), const IN_CLASSC_NSHIFT = 8 pkg syscall (netbsd-amd64-cgo), const IN_CLASSD_HOST = 268435455 pkg syscall (netbsd-amd64-cgo), const IN_CLASSD_NET = 4026531840 pkg syscall (netbsd-amd64-cgo), const IN_CLASSD_NSHIFT = 28 pkg syscall (netbsd-amd64-cgo), const IN_LOOPBACKNET = 127 pkg syscall (netbsd-amd64-cgo), const IPPROTO_AH = 51 pkg syscall (netbsd-amd64-cgo), const IPPROTO_CARP = 112 pkg syscall (netbsd-amd64-cgo), const IPPROTO_DONE = 257 pkg syscall (netbsd-amd64-cgo), const IPPROTO_DSTOPTS = 60 pkg syscall (netbsd-amd64-cgo), const IPPROTO_EGP = 8 pkg syscall (netbsd-amd64-cgo), const IPPROTO_ENCAP = 98 pkg syscall (netbsd-amd64-cgo), const IPPROTO_EON = 80 pkg syscall (netbsd-amd64-cgo), const IPPROTO_ESP = 50 pkg syscall (netbsd-amd64-cgo), const IPPROTO_ETHERIP = 97 pkg syscall (netbsd-amd64-cgo), const IPPROTO_FRAGMENT = 44 pkg syscall (netbsd-amd64-cgo), const IPPROTO_GGP = 3 pkg syscall (netbsd-amd64-cgo), const IPPROTO_GRE = 47 pkg syscall (netbsd-amd64-cgo), const IPPROTO_HOPOPTS = 0 pkg syscall (netbsd-amd64-cgo), const IPPROTO_ICMP = 1 pkg syscall (netbsd-amd64-cgo), const IPPROTO_ICMPV6 = 58 pkg syscall (netbsd-amd64-cgo), const IPPROTO_IDP = 22 pkg syscall (netbsd-amd64-cgo), const IPPROTO_IGMP = 2 pkg syscall (netbsd-amd64-cgo), const IPPROTO_IPCOMP = 108 pkg syscall (netbsd-amd64-cgo), const IPPROTO_IPIP = 4 pkg syscall (netbsd-amd64-cgo), const IPPROTO_IPV4 = 4 pkg syscall (netbsd-amd64-cgo), const IPPROTO_IPV6_ICMP = 58 pkg syscall (netbsd-amd64-cgo), const IPPROTO_MAX = 256 pkg syscall (netbsd-amd64-cgo), const IPPROTO_MAXID = 52 pkg syscall (netbsd-amd64-cgo), const IPPROTO_MOBILE = 55 pkg syscall (netbsd-amd64-cgo), const IPPROTO_NONE = 59 pkg syscall (netbsd-amd64-cgo), const IPPROTO_PFSYNC = 240 pkg syscall (netbsd-amd64-cgo), const IPPROTO_PIM = 103 pkg syscall (netbsd-amd64-cgo), const IPPROTO_PUP = 12 pkg syscall (netbsd-amd64-cgo), const IPPROTO_RAW = 255 pkg syscall (netbsd-amd64-cgo), const IPPROTO_ROUTING = 43 pkg syscall (netbsd-amd64-cgo), const IPPROTO_RSVP = 46 pkg syscall (netbsd-amd64-cgo), const IPPROTO_TP = 29 pkg syscall (netbsd-amd64-cgo), const IPPROTO_VRRP = 112 pkg syscall (netbsd-amd64-cgo), const IPV6_CHECKSUM = 26 pkg syscall (netbsd-amd64-cgo), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (netbsd-amd64-cgo), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (netbsd-amd64-cgo), const IPV6_DEFHLIM = 64 pkg syscall (netbsd-amd64-cgo), const IPV6_DONTFRAG = 62 pkg syscall (netbsd-amd64-cgo), const IPV6_DSTOPTS = 50 pkg syscall (netbsd-amd64-cgo), const IPV6_FAITH = 29 pkg syscall (netbsd-amd64-cgo), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (netbsd-amd64-cgo), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (netbsd-amd64-cgo), const IPV6_FRAGTTL = 120 pkg syscall (netbsd-amd64-cgo), const IPV6_HLIMDEC = 1 pkg syscall (netbsd-amd64-cgo), const IPV6_HOPLIMIT = 47 pkg syscall (netbsd-amd64-cgo), const IPV6_HOPOPTS = 49 pkg syscall (netbsd-amd64-cgo), const IPV6_IPSEC_POLICY = 28 pkg syscall (netbsd-amd64-cgo), const IPV6_JOIN_GROUP = 12 pkg syscall (netbsd-amd64-cgo), const IPV6_LEAVE_GROUP = 13 pkg syscall (netbsd-amd64-cgo), const IPV6_MAXHLIM = 255 pkg syscall (netbsd-amd64-cgo), const IPV6_MAXPACKET = 65535 pkg syscall (netbsd-amd64-cgo), const IPV6_MMTU = 1280 pkg syscall (netbsd-amd64-cgo), const IPV6_MULTICAST_HOPS = 10 pkg syscall (netbsd-amd64-cgo), const IPV6_MULTICAST_IF = 9 pkg syscall (netbsd-amd64-cgo), const IPV6_MULTICAST_LOOP = 11 pkg syscall (netbsd-amd64-cgo), const IPV6_NEXTHOP = 48 pkg syscall (netbsd-amd64-cgo), const IPV6_PATHMTU = 44 pkg syscall (netbsd-amd64-cgo), const IPV6_PKTINFO = 46 pkg syscall (netbsd-amd64-cgo), const IPV6_PORTRANGE = 14 pkg syscall (netbsd-amd64-cgo), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (netbsd-amd64-cgo), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (netbsd-amd64-cgo), const IPV6_PORTRANGE_LOW = 2 pkg syscall (netbsd-amd64-cgo), const IPV6_RECVDSTOPTS = 40 pkg syscall (netbsd-amd64-cgo), const IPV6_RECVHOPLIMIT = 37 pkg syscall (netbsd-amd64-cgo), const IPV6_RECVHOPOPTS = 39 pkg syscall (netbsd-amd64-cgo), const IPV6_RECVPATHMTU = 43 pkg syscall (netbsd-amd64-cgo), const IPV6_RECVPKTINFO = 36 pkg syscall (netbsd-amd64-cgo), const IPV6_RECVRTHDR = 38 pkg syscall (netbsd-amd64-cgo), const IPV6_RECVTCLASS = 57 pkg syscall (netbsd-amd64-cgo), const IPV6_RTHDR = 51 pkg syscall (netbsd-amd64-cgo), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (netbsd-amd64-cgo), const IPV6_RTHDR_LOOSE = 0 pkg syscall (netbsd-amd64-cgo), const IPV6_RTHDR_STRICT = 1 pkg syscall (netbsd-amd64-cgo), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (netbsd-amd64-cgo), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (netbsd-amd64-cgo), const IPV6_TCLASS = 61 pkg syscall (netbsd-amd64-cgo), const IPV6_UNICAST_HOPS = 4 pkg syscall (netbsd-amd64-cgo), const IPV6_USE_MIN_MTU = 42 pkg syscall (netbsd-amd64-cgo), const IPV6_V6ONLY = 27 pkg syscall (netbsd-amd64-cgo), const IPV6_VERSION = 96 pkg syscall (netbsd-amd64-cgo), const IPV6_VERSION_MASK = 240 pkg syscall (netbsd-amd64-cgo), const IP_ADD_MEMBERSHIP = 12 pkg syscall (netbsd-amd64-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (netbsd-amd64-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (netbsd-amd64-cgo), const IP_DF = 16384 pkg syscall (netbsd-amd64-cgo), const IP_DROP_MEMBERSHIP = 13 pkg syscall (netbsd-amd64-cgo), const IP_EF = 32768 pkg syscall (netbsd-amd64-cgo), const IP_ERRORMTU = 21 pkg syscall (netbsd-amd64-cgo), const IP_HDRINCL = 2 pkg syscall (netbsd-amd64-cgo), const IP_IPSEC_POLICY = 22 pkg syscall (netbsd-amd64-cgo), const IP_MAXPACKET = 65535 pkg syscall (netbsd-amd64-cgo), const IP_MAX_MEMBERSHIPS = 20 pkg syscall (netbsd-amd64-cgo), const IP_MF = 8192 pkg syscall (netbsd-amd64-cgo), const IP_MINFRAGSIZE = 69 pkg syscall (netbsd-amd64-cgo), const IP_MINTTL = 24 pkg syscall (netbsd-amd64-cgo), const IP_MSS = 576 pkg syscall (netbsd-amd64-cgo), const IP_MULTICAST_IF = 9 pkg syscall (netbsd-amd64-cgo), const IP_MULTICAST_LOOP = 11 pkg syscall (netbsd-amd64-cgo), const IP_MULTICAST_TTL = 10 pkg syscall (netbsd-amd64-cgo), const IP_OFFMASK = 8191 pkg syscall (netbsd-amd64-cgo), const IP_OPTIONS = 1 pkg syscall (netbsd-amd64-cgo), const IP_PORTRANGE = 19 pkg syscall (netbsd-amd64-cgo), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (netbsd-amd64-cgo), const IP_PORTRANGE_HIGH = 1 pkg syscall (netbsd-amd64-cgo), const IP_PORTRANGE_LOW = 2 pkg syscall (netbsd-amd64-cgo), const IP_RECVDSTADDR = 7 pkg syscall (netbsd-amd64-cgo), const IP_RECVIF = 20 pkg syscall (netbsd-amd64-cgo), const IP_RECVOPTS = 5 pkg syscall (netbsd-amd64-cgo), const IP_RECVRETOPTS = 6 pkg syscall (netbsd-amd64-cgo), const IP_RECVTTL = 23 pkg syscall (netbsd-amd64-cgo), const IP_RETOPTS = 8 pkg syscall (netbsd-amd64-cgo), const IP_RF = 32768 pkg syscall (netbsd-amd64-cgo), const IP_TOS = 3 pkg syscall (netbsd-amd64-cgo), const IP_TTL = 4 pkg syscall (netbsd-amd64-cgo), const ISIG = 128 pkg syscall (netbsd-amd64-cgo), const ISTRIP = 32 pkg syscall (netbsd-amd64-cgo), const IXANY = 2048 pkg syscall (netbsd-amd64-cgo), const IXOFF = 1024 pkg syscall (netbsd-amd64-cgo), const IXON = 512 pkg syscall (netbsd-amd64-cgo), const ImplementsGetwd = false pkg syscall (netbsd-amd64-cgo), const LOCK_EX = 2 pkg syscall (netbsd-amd64-cgo), const LOCK_NB = 4 pkg syscall (netbsd-amd64-cgo), const LOCK_SH = 1 pkg syscall (netbsd-amd64-cgo), const LOCK_UN = 8 pkg syscall (netbsd-amd64-cgo), const MSG_BCAST = 256 pkg syscall (netbsd-amd64-cgo), const MSG_CMSG_CLOEXEC = 2048 pkg syscall (netbsd-amd64-cgo), const MSG_CONTROLMBUF = 33554432 pkg syscall (netbsd-amd64-cgo), const MSG_CTRUNC = 32 pkg syscall (netbsd-amd64-cgo), const MSG_DONTROUTE = 4 pkg syscall (netbsd-amd64-cgo), const MSG_DONTWAIT = 128 pkg syscall (netbsd-amd64-cgo), const MSG_EOR = 8 pkg syscall (netbsd-amd64-cgo), const MSG_IOVUSRSPACE = 67108864 pkg syscall (netbsd-amd64-cgo), const MSG_LENUSRSPACE = 134217728 pkg syscall (netbsd-amd64-cgo), const MSG_MCAST = 512 pkg syscall (netbsd-amd64-cgo), const MSG_NAMEMBUF = 16777216 pkg syscall (netbsd-amd64-cgo), const MSG_NBIO = 4096 pkg syscall (netbsd-amd64-cgo), const MSG_NOSIGNAL = 1024 pkg syscall (netbsd-amd64-cgo), const MSG_OOB = 1 pkg syscall (netbsd-amd64-cgo), const MSG_PEEK = 2 pkg syscall (netbsd-amd64-cgo), const MSG_TRUNC = 16 pkg syscall (netbsd-amd64-cgo), const MSG_USERFLAGS = 16777215 pkg syscall (netbsd-amd64-cgo), const MSG_WAITALL = 64 pkg syscall (netbsd-amd64-cgo), const NAME_MAX = 511 pkg syscall (netbsd-amd64-cgo), const NET_RT_DUMP = 1 pkg syscall (netbsd-amd64-cgo), const NET_RT_FLAGS = 2 pkg syscall (netbsd-amd64-cgo), const NET_RT_IFLIST = 5 pkg syscall (netbsd-amd64-cgo), const NET_RT_MAXID = 6 pkg syscall (netbsd-amd64-cgo), const NET_RT_OIFLIST = 4 pkg syscall (netbsd-amd64-cgo), const NET_RT_OOIFLIST = 3 pkg syscall (netbsd-amd64-cgo), const NOFLSH = 2147483648 pkg syscall (netbsd-amd64-cgo), const NOTE_ATTRIB = 8 pkg syscall (netbsd-amd64-cgo), const NOTE_CHILD = 4 pkg syscall (netbsd-amd64-cgo), const NOTE_DELETE = 1 pkg syscall (netbsd-amd64-cgo), const NOTE_EXEC = 536870912 pkg syscall (netbsd-amd64-cgo), const NOTE_EXIT = 2147483648 pkg syscall (netbsd-amd64-cgo), const NOTE_EXTEND = 4 pkg syscall (netbsd-amd64-cgo), const NOTE_FORK = 1073741824 pkg syscall (netbsd-amd64-cgo), const NOTE_LINK = 16 pkg syscall (netbsd-amd64-cgo), const NOTE_LOWAT = 1 pkg syscall (netbsd-amd64-cgo), const NOTE_PCTRLMASK = 4026531840 pkg syscall (netbsd-amd64-cgo), const NOTE_PDATAMASK = 1048575 pkg syscall (netbsd-amd64-cgo), const NOTE_RENAME = 32 pkg syscall (netbsd-amd64-cgo), const NOTE_REVOKE = 64 pkg syscall (netbsd-amd64-cgo), const NOTE_TRACK = 1 pkg syscall (netbsd-amd64-cgo), const NOTE_TRACKERR = 2 pkg syscall (netbsd-amd64-cgo), const NOTE_WRITE = 2 pkg syscall (netbsd-amd64-cgo), const OCRNL = 16 pkg syscall (netbsd-amd64-cgo), const OFIOGETBMAP = 3221513850 pkg syscall (netbsd-amd64-cgo), const ONLCR = 2 pkg syscall (netbsd-amd64-cgo), const ONLRET = 64 pkg syscall (netbsd-amd64-cgo), const ONOCR = 32 pkg syscall (netbsd-amd64-cgo), const ONOEOT = 8 pkg syscall (netbsd-amd64-cgo), const OPOST = 1 pkg syscall (netbsd-amd64-cgo), const O_ACCMODE = 3 pkg syscall (netbsd-amd64-cgo), const O_ALT_IO = 262144 pkg syscall (netbsd-amd64-cgo), const O_APPEND = 8 pkg syscall (netbsd-amd64-cgo), const O_ASYNC = 64 pkg syscall (netbsd-amd64-cgo), const O_CLOEXEC = 4194304 pkg syscall (netbsd-amd64-cgo), const O_CREAT = 512 pkg syscall (netbsd-amd64-cgo), const O_DIRECT = 524288 pkg syscall (netbsd-amd64-cgo), const O_DIRECTORY = 2097152 pkg syscall (netbsd-amd64-cgo), const O_DSYNC = 65536 pkg syscall (netbsd-amd64-cgo), const O_EXCL = 2048 pkg syscall (netbsd-amd64-cgo), const O_EXLOCK = 32 pkg syscall (netbsd-amd64-cgo), const O_FSYNC = 128 pkg syscall (netbsd-amd64-cgo), const O_NDELAY = 4 pkg syscall (netbsd-amd64-cgo), const O_NOCTTY = 32768 pkg syscall (netbsd-amd64-cgo), const O_NOFOLLOW = 256 pkg syscall (netbsd-amd64-cgo), const O_NONBLOCK = 4 pkg syscall (netbsd-amd64-cgo), const O_NOSIGPIPE = 16777216 pkg syscall (netbsd-amd64-cgo), const O_RSYNC = 131072 pkg syscall (netbsd-amd64-cgo), const O_SHLOCK = 16 pkg syscall (netbsd-amd64-cgo), const O_SYNC = 128 pkg syscall (netbsd-amd64-cgo), const O_TRUNC = 1024 pkg syscall (netbsd-amd64-cgo), const PARENB = 4096 pkg syscall (netbsd-amd64-cgo), const PARMRK = 8 pkg syscall (netbsd-amd64-cgo), const PARODD = 8192 pkg syscall (netbsd-amd64-cgo), const PENDIN = 536870912 pkg syscall (netbsd-amd64-cgo), const PRI_IOFLUSH = 124 pkg syscall (netbsd-amd64-cgo), const PTRACE_CONT = 7 pkg syscall (netbsd-amd64-cgo), const PTRACE_KILL = 8 pkg syscall (netbsd-amd64-cgo), const PTRACE_TRACEME = 0 pkg syscall (netbsd-amd64-cgo), const RLIMIT_AS = 10 pkg syscall (netbsd-amd64-cgo), const RLIMIT_CORE = 4 pkg syscall (netbsd-amd64-cgo), const RLIMIT_CPU = 0 pkg syscall (netbsd-amd64-cgo), const RLIMIT_DATA = 2 pkg syscall (netbsd-amd64-cgo), const RLIMIT_FSIZE = 1 pkg syscall (netbsd-amd64-cgo), const RLIMIT_NOFILE = 8 pkg syscall (netbsd-amd64-cgo), const RLIMIT_STACK = 3 pkg syscall (netbsd-amd64-cgo), const RLIM_INFINITY = 9223372036854775807 pkg syscall (netbsd-amd64-cgo), const RTAX_AUTHOR = 6 pkg syscall (netbsd-amd64-cgo), const RTAX_BRD = 7 pkg syscall (netbsd-amd64-cgo), const RTAX_DST = 0 pkg syscall (netbsd-amd64-cgo), const RTAX_GATEWAY = 1 pkg syscall (netbsd-amd64-cgo), const RTAX_GENMASK = 3 pkg syscall (netbsd-amd64-cgo), const RTAX_IFA = 5 pkg syscall (netbsd-amd64-cgo), const RTAX_IFP = 4 pkg syscall (netbsd-amd64-cgo), const RTAX_MAX = 9 pkg syscall (netbsd-amd64-cgo), const RTAX_NETMASK = 2 pkg syscall (netbsd-amd64-cgo), const RTAX_TAG = 8 pkg syscall (netbsd-amd64-cgo), const RTA_AUTHOR = 64 pkg syscall (netbsd-amd64-cgo), const RTA_BRD = 128 pkg syscall (netbsd-amd64-cgo), const RTA_DST = 1 pkg syscall (netbsd-amd64-cgo), const RTA_GATEWAY = 2 pkg syscall (netbsd-amd64-cgo), const RTA_GENMASK = 8 pkg syscall (netbsd-amd64-cgo), const RTA_IFA = 32 pkg syscall (netbsd-amd64-cgo), const RTA_IFP = 16 pkg syscall (netbsd-amd64-cgo), const RTA_NETMASK = 4 pkg syscall (netbsd-amd64-cgo), const RTA_TAG = 256 pkg syscall (netbsd-amd64-cgo), const RTF_ANNOUNCE = 131072 pkg syscall (netbsd-amd64-cgo), const RTF_BLACKHOLE = 4096 pkg syscall (netbsd-amd64-cgo), const RTF_CLONED = 8192 pkg syscall (netbsd-amd64-cgo), const RTF_CLONING = 256 pkg syscall (netbsd-amd64-cgo), const RTF_DONE = 64 pkg syscall (netbsd-amd64-cgo), const RTF_DYNAMIC = 16 pkg syscall (netbsd-amd64-cgo), const RTF_GATEWAY = 2 pkg syscall (netbsd-amd64-cgo), const RTF_HOST = 4 pkg syscall (netbsd-amd64-cgo), const RTF_LLINFO = 1024 pkg syscall (netbsd-amd64-cgo), const RTF_MASK = 128 pkg syscall (netbsd-amd64-cgo), const RTF_MODIFIED = 32 pkg syscall (netbsd-amd64-cgo), const RTF_PROTO1 = 32768 pkg syscall (netbsd-amd64-cgo), const RTF_PROTO2 = 16384 pkg syscall (netbsd-amd64-cgo), const RTF_REJECT = 8 pkg syscall (netbsd-amd64-cgo), const RTF_SRC = 65536 pkg syscall (netbsd-amd64-cgo), const RTF_STATIC = 2048 pkg syscall (netbsd-amd64-cgo), const RTF_UP = 1 pkg syscall (netbsd-amd64-cgo), const RTF_XRESOLVE = 512 pkg syscall (netbsd-amd64-cgo), const RTM_ADD = 1 pkg syscall (netbsd-amd64-cgo), const RTM_CHANGE = 3 pkg syscall (netbsd-amd64-cgo), const RTM_CHGADDR = 21 pkg syscall (netbsd-amd64-cgo), const RTM_DELADDR = 13 pkg syscall (netbsd-amd64-cgo), const RTM_DELETE = 2 pkg syscall (netbsd-amd64-cgo), const RTM_GET = 4 pkg syscall (netbsd-amd64-cgo), const RTM_IEEE80211 = 17 pkg syscall (netbsd-amd64-cgo), const RTM_IFANNOUNCE = 16 pkg syscall (netbsd-amd64-cgo), const RTM_IFINFO = 20 pkg syscall (netbsd-amd64-cgo), const RTM_LLINFO_UPD = 19 pkg syscall (netbsd-amd64-cgo), const RTM_LOCK = 8 pkg syscall (netbsd-amd64-cgo), const RTM_LOSING = 5 pkg syscall (netbsd-amd64-cgo), const RTM_MISS = 7 pkg syscall (netbsd-amd64-cgo), const RTM_NEWADDR = 12 pkg syscall (netbsd-amd64-cgo), const RTM_OIFINFO = 15 pkg syscall (netbsd-amd64-cgo), const RTM_OLDADD = 9 pkg syscall (netbsd-amd64-cgo), const RTM_OLDDEL = 10 pkg syscall (netbsd-amd64-cgo), const RTM_OOIFINFO = 14 pkg syscall (netbsd-amd64-cgo), const RTM_REDIRECT = 6 pkg syscall (netbsd-amd64-cgo), const RTM_RESOLVE = 11 pkg syscall (netbsd-amd64-cgo), const RTM_RTTUNIT = 1000000 pkg syscall (netbsd-amd64-cgo), const RTM_SETGATE = 18 pkg syscall (netbsd-amd64-cgo), const RTM_VERSION = 4 pkg syscall (netbsd-amd64-cgo), const RTV_EXPIRE = 4 pkg syscall (netbsd-amd64-cgo), const RTV_HOPCOUNT = 2 pkg syscall (netbsd-amd64-cgo), const RTV_MTU = 1 pkg syscall (netbsd-amd64-cgo), const RTV_RPIPE = 8 pkg syscall (netbsd-amd64-cgo), const RTV_RTT = 64 pkg syscall (netbsd-amd64-cgo), const RTV_RTTVAR = 128 pkg syscall (netbsd-amd64-cgo), const RTV_SPIPE = 16 pkg syscall (netbsd-amd64-cgo), const RTV_SSTHRESH = 32 pkg syscall (netbsd-amd64-cgo), const RUSAGE_CHILDREN = -1 pkg syscall (netbsd-amd64-cgo), const RUSAGE_SELF = 0 pkg syscall (netbsd-amd64-cgo), const SCM_CREDS = 4 pkg syscall (netbsd-amd64-cgo), const SCM_RIGHTS = 1 pkg syscall (netbsd-amd64-cgo), const SCM_TIMESTAMP = 8 pkg syscall (netbsd-amd64-cgo), const SIGBUS = 10 pkg syscall (netbsd-amd64-cgo), const SIGCHLD = 20 pkg syscall (netbsd-amd64-cgo), const SIGCONT = 19 pkg syscall (netbsd-amd64-cgo), const SIGEMT = 7 pkg syscall (netbsd-amd64-cgo), const SIGINFO = 29 pkg syscall (netbsd-amd64-cgo), const SIGIO = 23 pkg syscall (netbsd-amd64-cgo), const SIGIOT = 6 pkg syscall (netbsd-amd64-cgo), const SIGPROF = 27 pkg syscall (netbsd-amd64-cgo), const SIGPWR = 32 pkg syscall (netbsd-amd64-cgo), const SIGSTOP = 17 pkg syscall (netbsd-amd64-cgo), const SIGSYS = 12 pkg syscall (netbsd-amd64-cgo), const SIGTSTP = 18 pkg syscall (netbsd-amd64-cgo), const SIGTTIN = 21 pkg syscall (netbsd-amd64-cgo), const SIGTTOU = 22 pkg syscall (netbsd-amd64-cgo), const SIGURG = 16 pkg syscall (netbsd-amd64-cgo), const SIGUSR1 = 30 pkg syscall (netbsd-amd64-cgo), const SIGUSR2 = 31 pkg syscall (netbsd-amd64-cgo), const SIGVTALRM = 26 pkg syscall (netbsd-amd64-cgo), const SIGWINCH = 28 pkg syscall (netbsd-amd64-cgo), const SIGXCPU = 24 pkg syscall (netbsd-amd64-cgo), const SIGXFSZ = 25 pkg syscall (netbsd-amd64-cgo), const SIOCADDMULTI = 2156947761 pkg syscall (netbsd-amd64-cgo), const SIOCADDRT = 2151182858 pkg syscall (netbsd-amd64-cgo), const SIOCAIFADDR = 2151704858 pkg syscall (netbsd-amd64-cgo), const SIOCALIFADDR = 2165860636 pkg syscall (netbsd-amd64-cgo), const SIOCATMARK = 1074033415 pkg syscall (netbsd-amd64-cgo), const SIOCDELMULTI = 2156947762 pkg syscall (netbsd-amd64-cgo), const SIOCDELRT = 2151182859 pkg syscall (netbsd-amd64-cgo), const SIOCDIFADDR = 2156947737 pkg syscall (netbsd-amd64-cgo), const SIOCDIFPHYADDR = 2156947785 pkg syscall (netbsd-amd64-cgo), const SIOCDLIFADDR = 2165860638 pkg syscall (netbsd-amd64-cgo), const SIOCGDRVSPEC = 3223873915 pkg syscall (netbsd-amd64-cgo), const SIOCGETPFSYNC = 3230689784 pkg syscall (netbsd-amd64-cgo), const SIOCGETSGCNT = 3223352628 pkg syscall (netbsd-amd64-cgo), const SIOCGETVIFCNT = 3223876915 pkg syscall (netbsd-amd64-cgo), const SIOCGHIWAT = 1074033409 pkg syscall (netbsd-amd64-cgo), const SIOCGIFADDR = 3230689569 pkg syscall (netbsd-amd64-cgo), const SIOCGIFADDRPREF = 3231213856 pkg syscall (netbsd-amd64-cgo), const SIOCGIFALIAS = 3225446683 pkg syscall (netbsd-amd64-cgo), const SIOCGIFBRDADDR = 3230689571 pkg syscall (netbsd-amd64-cgo), const SIOCGIFCAP = 3223349622 pkg syscall (netbsd-amd64-cgo), const SIOCGIFCONF = 3222300966 pkg syscall (netbsd-amd64-cgo), const SIOCGIFDATA = 3231213957 pkg syscall (netbsd-amd64-cgo), const SIOCGIFDLT = 3230689655 pkg syscall (netbsd-amd64-cgo), const SIOCGIFDSTADDR = 3230689570 pkg syscall (netbsd-amd64-cgo), const SIOCGIFFLAGS = 3230689553 pkg syscall (netbsd-amd64-cgo), const SIOCGIFGENERIC = 3230689594 pkg syscall (netbsd-amd64-cgo), const SIOCGIFMEDIA = 3224398134 pkg syscall (netbsd-amd64-cgo), const SIOCGIFMETRIC = 3230689559 pkg syscall (netbsd-amd64-cgo), const SIOCGIFMTU = 3230689662 pkg syscall (netbsd-amd64-cgo), const SIOCGIFNETMASK = 3230689573 pkg syscall (netbsd-amd64-cgo), const SIOCGIFPDSTADDR = 3230689608 pkg syscall (netbsd-amd64-cgo), const SIOCGIFPSRCADDR = 3230689607 pkg syscall (netbsd-amd64-cgo), const SIOCGLIFADDR = 3239602461 pkg syscall (netbsd-amd64-cgo), const SIOCGLIFPHYADDR = 3239602507 pkg syscall (netbsd-amd64-cgo), const SIOCGLINKSTR = 3223873927 pkg syscall (netbsd-amd64-cgo), const SIOCGLOWAT = 1074033411 pkg syscall (netbsd-amd64-cgo), const SIOCGPGRP = 1074033417 pkg syscall (netbsd-amd64-cgo), const SIOCGVH = 3230689667 pkg syscall (netbsd-amd64-cgo), const SIOCIFCREATE = 2156947834 pkg syscall (netbsd-amd64-cgo), const SIOCIFDESTROY = 2156947833 pkg syscall (netbsd-amd64-cgo), const SIOCIFGCLONERS = 3222301048 pkg syscall (netbsd-amd64-cgo), const SIOCINITIFADDR = 3228592516 pkg syscall (netbsd-amd64-cgo), const SIOCSDRVSPEC = 2150132091 pkg syscall (netbsd-amd64-cgo), const SIOCSETPFSYNC = 2156947959 pkg syscall (netbsd-amd64-cgo), const SIOCSHIWAT = 2147775232 pkg syscall (netbsd-amd64-cgo), const SIOCSIFADDR = 2156947724 pkg syscall (netbsd-amd64-cgo), const SIOCSIFADDRPREF = 2157472031 pkg syscall (netbsd-amd64-cgo), const SIOCSIFBRDADDR = 2156947731 pkg syscall (netbsd-amd64-cgo), const SIOCSIFCAP = 2149607797 pkg syscall (netbsd-amd64-cgo), const SIOCSIFDSTADDR = 2156947726 pkg syscall (netbsd-amd64-cgo), const SIOCSIFFLAGS = 2156947728 pkg syscall (netbsd-amd64-cgo), const SIOCSIFGENERIC = 2156947769 pkg syscall (netbsd-amd64-cgo), const SIOCSIFMEDIA = 3230689589 pkg syscall (netbsd-amd64-cgo), const SIOCSIFMETRIC = 2156947736 pkg syscall (netbsd-amd64-cgo), const SIOCSIFMTU = 2156947839 pkg syscall (netbsd-amd64-cgo), const SIOCSIFNETMASK = 2156947734 pkg syscall (netbsd-amd64-cgo), const SIOCSIFPHYADDR = 2151704902 pkg syscall (netbsd-amd64-cgo), const SIOCSLIFPHYADDR = 2165860682 pkg syscall (netbsd-amd64-cgo), const SIOCSLINKSTR = 2150132104 pkg syscall (netbsd-amd64-cgo), const SIOCSLOWAT = 2147775234 pkg syscall (netbsd-amd64-cgo), const SIOCSPGRP = 2147775240 pkg syscall (netbsd-amd64-cgo), const SIOCSVH = 3230689666 pkg syscall (netbsd-amd64-cgo), const SIOCZIFDATA = 3231213958 pkg syscall (netbsd-amd64-cgo), const SOCK_CLOEXEC = 268435456 pkg syscall (netbsd-amd64-cgo), const SOCK_FLAGS_MASK = 4026531840 pkg syscall (netbsd-amd64-cgo), const SOCK_NONBLOCK = 536870912 pkg syscall (netbsd-amd64-cgo), const SOCK_NOSIGPIPE = 1073741824 pkg syscall (netbsd-amd64-cgo), const SOCK_RDM = 4 pkg syscall (netbsd-amd64-cgo), const SOL_SOCKET = 65535 pkg syscall (netbsd-amd64-cgo), const SOMAXCONN = 128 pkg syscall (netbsd-amd64-cgo), const SO_ACCEPTCONN = 2 pkg syscall (netbsd-amd64-cgo), const SO_ACCEPTFILTER = 4096 pkg syscall (netbsd-amd64-cgo), const SO_BROADCAST = 32 pkg syscall (netbsd-amd64-cgo), const SO_DEBUG = 1 pkg syscall (netbsd-amd64-cgo), const SO_DONTROUTE = 16 pkg syscall (netbsd-amd64-cgo), const SO_ERROR = 4103 pkg syscall (netbsd-amd64-cgo), const SO_KEEPALIVE = 8 pkg syscall (netbsd-amd64-cgo), const SO_LINGER = 128 pkg syscall (netbsd-amd64-cgo), const SO_NOHEADER = 4106 pkg syscall (netbsd-amd64-cgo), const SO_NOSIGPIPE = 2048 pkg syscall (netbsd-amd64-cgo), const SO_OOBINLINE = 256 pkg syscall (netbsd-amd64-cgo), const SO_OVERFLOWED = 4105 pkg syscall (netbsd-amd64-cgo), const SO_RCVBUF = 4098 pkg syscall (netbsd-amd64-cgo), const SO_RCVLOWAT = 4100 pkg syscall (netbsd-amd64-cgo), const SO_RCVTIMEO = 4108 pkg syscall (netbsd-amd64-cgo), const SO_REUSEADDR = 4 pkg syscall (netbsd-amd64-cgo), const SO_REUSEPORT = 512 pkg syscall (netbsd-amd64-cgo), const SO_SNDBUF = 4097 pkg syscall (netbsd-amd64-cgo), const SO_SNDLOWAT = 4099 pkg syscall (netbsd-amd64-cgo), const SO_SNDTIMEO = 4107 pkg syscall (netbsd-amd64-cgo), const SO_TIMESTAMP = 8192 pkg syscall (netbsd-amd64-cgo), const SO_TYPE = 4104 pkg syscall (netbsd-amd64-cgo), const SO_USELOOPBACK = 64 pkg syscall (netbsd-amd64-cgo), const SYSCTL_VERSION = 16777216 pkg syscall (netbsd-amd64-cgo), const SYSCTL_VERS_0 = 0 pkg syscall (netbsd-amd64-cgo), const SYSCTL_VERS_1 = 16777216 pkg syscall (netbsd-amd64-cgo), const SYSCTL_VERS_MASK = 4278190080 pkg syscall (netbsd-amd64-cgo), const SYS_ACCEPT = 30 pkg syscall (netbsd-amd64-cgo), const SYS_ACCESS = 33 pkg syscall (netbsd-amd64-cgo), const SYS_ACCT = 51 pkg syscall (netbsd-amd64-cgo), const SYS_ADJTIME = 421 pkg syscall (netbsd-amd64-cgo), const SYS_BIND = 104 pkg syscall (netbsd-amd64-cgo), const SYS_BREAK = 17 pkg syscall (netbsd-amd64-cgo), const SYS_CHDIR = 12 pkg syscall (netbsd-amd64-cgo), const SYS_CHFLAGS = 34 pkg syscall (netbsd-amd64-cgo), const SYS_CHMOD = 15 pkg syscall (netbsd-amd64-cgo), const SYS_CHOWN = 16 pkg syscall (netbsd-amd64-cgo), const SYS_CHROOT = 61 pkg syscall (netbsd-amd64-cgo), const SYS_CLOCK_GETRES = 429 pkg syscall (netbsd-amd64-cgo), const SYS_CLOCK_GETTIME = 427 pkg syscall (netbsd-amd64-cgo), const SYS_CLOCK_SETTIME = 428 pkg syscall (netbsd-amd64-cgo), const SYS_CLOSE = 6 pkg syscall (netbsd-amd64-cgo), const SYS_CONNECT = 98 pkg syscall (netbsd-amd64-cgo), const SYS_DUP = 41 pkg syscall (netbsd-amd64-cgo), const SYS_DUP2 = 90 pkg syscall (netbsd-amd64-cgo), const SYS_DUP3 = 454 pkg syscall (netbsd-amd64-cgo), const SYS_EXECVE = 59 pkg syscall (netbsd-amd64-cgo), const SYS_EXIT = 1 pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTRCTL = 360 pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_DELETE_FD = 366 pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_DELETE_FILE = 363 pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_DELETE_LINK = 369 pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_GET_FD = 365 pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_GET_FILE = 362 pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_GET_LINK = 368 pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_LIST_FD = 370 pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_LIST_FILE = 371 pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_LIST_LINK = 372 pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_SET_FD = 364 pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_SET_FILE = 361 pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_SET_LINK = 367 pkg syscall (netbsd-amd64-cgo), const SYS_FACCESSAT = 462 pkg syscall (netbsd-amd64-cgo), const SYS_FCHDIR = 13 pkg syscall (netbsd-amd64-cgo), const SYS_FCHFLAGS = 35 pkg syscall (netbsd-amd64-cgo), const SYS_FCHMOD = 124 pkg syscall (netbsd-amd64-cgo), const SYS_FCHMODAT = 463 pkg syscall (netbsd-amd64-cgo), const SYS_FCHOWN = 123 pkg syscall (netbsd-amd64-cgo), const SYS_FCHOWNAT = 464 pkg syscall (netbsd-amd64-cgo), const SYS_FCHROOT = 297 pkg syscall (netbsd-amd64-cgo), const SYS_FCNTL = 92 pkg syscall (netbsd-amd64-cgo), const SYS_FDATASYNC = 241 pkg syscall (netbsd-amd64-cgo), const SYS_FEXECVE = 465 pkg syscall (netbsd-amd64-cgo), const SYS_FGETXATTR = 380 pkg syscall (netbsd-amd64-cgo), const SYS_FHSTAT = 451 pkg syscall (netbsd-amd64-cgo), const SYS_FKTRACE = 288 pkg syscall (netbsd-amd64-cgo), const SYS_FLISTXATTR = 383 pkg syscall (netbsd-amd64-cgo), const SYS_FLOCK = 131 pkg syscall (netbsd-amd64-cgo), const SYS_FORK = 2 pkg syscall (netbsd-amd64-cgo), const SYS_FPATHCONF = 192 pkg syscall (netbsd-amd64-cgo), const SYS_FREMOVEXATTR = 386 pkg syscall (netbsd-amd64-cgo), const SYS_FSETXATTR = 377 pkg syscall (netbsd-amd64-cgo), const SYS_FSTAT = 440 pkg syscall (netbsd-amd64-cgo), const SYS_FSTATAT = 466 pkg syscall (netbsd-amd64-cgo), const SYS_FSTATVFS1 = 358 pkg syscall (netbsd-amd64-cgo), const SYS_FSYNC = 95 pkg syscall (netbsd-amd64-cgo), const SYS_FSYNC_RANGE = 354 pkg syscall (netbsd-amd64-cgo), const SYS_FTRUNCATE = 201 pkg syscall (netbsd-amd64-cgo), const SYS_FUTIMENS = 472 pkg syscall (netbsd-amd64-cgo), const SYS_FUTIMES = 423 pkg syscall (netbsd-amd64-cgo), const SYS_GETCONTEXT = 307 pkg syscall (netbsd-amd64-cgo), const SYS_GETDENTS = 390 pkg syscall (netbsd-amd64-cgo), const SYS_GETEGID = 43 pkg syscall (netbsd-amd64-cgo), const SYS_GETEUID = 25 pkg syscall (netbsd-amd64-cgo), const SYS_GETFH = 395 pkg syscall (netbsd-amd64-cgo), const SYS_GETGID = 47 pkg syscall (netbsd-amd64-cgo), const SYS_GETGROUPS = 79 pkg syscall (netbsd-amd64-cgo), const SYS_GETITIMER = 426 pkg syscall (netbsd-amd64-cgo), const SYS_GETPEERNAME = 31 pkg syscall (netbsd-amd64-cgo), const SYS_GETPGID = 207 pkg syscall (netbsd-amd64-cgo), const SYS_GETPGRP = 81 pkg syscall (netbsd-amd64-cgo), const SYS_GETPID = 20 pkg syscall (netbsd-amd64-cgo), const SYS_GETPPID = 39 pkg syscall (netbsd-amd64-cgo), const SYS_GETPRIORITY = 100 pkg syscall (netbsd-amd64-cgo), const SYS_GETRLIMIT = 194 pkg syscall (netbsd-amd64-cgo), const SYS_GETRUSAGE = 445 pkg syscall (netbsd-amd64-cgo), const SYS_GETSID = 286 pkg syscall (netbsd-amd64-cgo), const SYS_GETSOCKNAME = 32 pkg syscall (netbsd-amd64-cgo), const SYS_GETSOCKOPT = 118 pkg syscall (netbsd-amd64-cgo), const SYS_GETTIMEOFDAY = 418 pkg syscall (netbsd-amd64-cgo), const SYS_GETUID = 24 pkg syscall (netbsd-amd64-cgo), const SYS_GETVFSSTAT = 356 pkg syscall (netbsd-amd64-cgo), const SYS_GETXATTR = 378 pkg syscall (netbsd-amd64-cgo), const SYS_IOCTL = 54 pkg syscall (netbsd-amd64-cgo), const SYS_ISSETUGID = 305 pkg syscall (netbsd-amd64-cgo), const SYS_KEVENT = 435 pkg syscall (netbsd-amd64-cgo), const SYS_KILL = 37 pkg syscall (netbsd-amd64-cgo), const SYS_KQUEUE = 344 pkg syscall (netbsd-amd64-cgo), const SYS_KQUEUE1 = 455 pkg syscall (netbsd-amd64-cgo), const SYS_KTRACE = 45 pkg syscall (netbsd-amd64-cgo), const SYS_LCHFLAGS = 304 pkg syscall (netbsd-amd64-cgo), const SYS_LCHMOD = 274 pkg syscall (netbsd-amd64-cgo), const SYS_LCHOWN = 275 pkg syscall (netbsd-amd64-cgo), const SYS_LGETXATTR = 379 pkg syscall (netbsd-amd64-cgo), const SYS_LINK = 9 pkg syscall (netbsd-amd64-cgo), const SYS_LINKAT = 457 pkg syscall (netbsd-amd64-cgo), const SYS_LISTEN = 106 pkg syscall (netbsd-amd64-cgo), const SYS_LISTXATTR = 381 pkg syscall (netbsd-amd64-cgo), const SYS_LLISTXATTR = 382 pkg syscall (netbsd-amd64-cgo), const SYS_LREMOVEXATTR = 385 pkg syscall (netbsd-amd64-cgo), const SYS_LSEEK = 199 pkg syscall (netbsd-amd64-cgo), const SYS_LSETXATTR = 376 pkg syscall (netbsd-amd64-cgo), const SYS_LSTAT = 441 pkg syscall (netbsd-amd64-cgo), const SYS_LUTIMES = 424 pkg syscall (netbsd-amd64-cgo), const SYS_MADVISE = 75 pkg syscall (netbsd-amd64-cgo), const SYS_MINCORE = 78 pkg syscall (netbsd-amd64-cgo), const SYS_MINHERIT = 273 pkg syscall (netbsd-amd64-cgo), const SYS_MKDIR = 136 pkg syscall (netbsd-amd64-cgo), const SYS_MKDIRAT = 461 pkg syscall (netbsd-amd64-cgo), const SYS_MKFIFO = 132 pkg syscall (netbsd-amd64-cgo), const SYS_MKFIFOAT = 459 pkg syscall (netbsd-amd64-cgo), const SYS_MKNOD = 450 pkg syscall (netbsd-amd64-cgo), const SYS_MKNODAT = 460 pkg syscall (netbsd-amd64-cgo), const SYS_MLOCK = 203 pkg syscall (netbsd-amd64-cgo), const SYS_MLOCKALL = 242 pkg syscall (netbsd-amd64-cgo), const SYS_MMAP = 197 pkg syscall (netbsd-amd64-cgo), const SYS_MODCTL = 246 pkg syscall (netbsd-amd64-cgo), const SYS_MOUNT = 410 pkg syscall (netbsd-amd64-cgo), const SYS_MPROTECT = 74 pkg syscall (netbsd-amd64-cgo), const SYS_MREMAP = 411 pkg syscall (netbsd-amd64-cgo), const SYS_MSGCTL = 444 pkg syscall (netbsd-amd64-cgo), const SYS_MSGGET = 225 pkg syscall (netbsd-amd64-cgo), const SYS_MSGRCV = 227 pkg syscall (netbsd-amd64-cgo), const SYS_MSGSND = 226 pkg syscall (netbsd-amd64-cgo), const SYS_MUNLOCK = 204 pkg syscall (netbsd-amd64-cgo), const SYS_MUNLOCKALL = 243 pkg syscall (netbsd-amd64-cgo), const SYS_MUNMAP = 73 pkg syscall (netbsd-amd64-cgo), const SYS_NANOSLEEP = 430 pkg syscall (netbsd-amd64-cgo), const SYS_NTP_ADJTIME = 176 pkg syscall (netbsd-amd64-cgo), const SYS_NTP_GETTIME = 448 pkg syscall (netbsd-amd64-cgo), const SYS_OPEN = 5 pkg syscall (netbsd-amd64-cgo), const SYS_OPENAT = 468 pkg syscall (netbsd-amd64-cgo), const SYS_PACCEPT = 456 pkg syscall (netbsd-amd64-cgo), const SYS_PATHCONF = 191 pkg syscall (netbsd-amd64-cgo), const SYS_PIPE = 42 pkg syscall (netbsd-amd64-cgo), const SYS_PIPE2 = 453 pkg syscall (netbsd-amd64-cgo), const SYS_PMC_CONTROL = 342 pkg syscall (netbsd-amd64-cgo), const SYS_PMC_GET_INFO = 341 pkg syscall (netbsd-amd64-cgo), const SYS_POLL = 209 pkg syscall (netbsd-amd64-cgo), const SYS_POLLTS = 437 pkg syscall (netbsd-amd64-cgo), const SYS_POSIX_FADVISE = 416 pkg syscall (netbsd-amd64-cgo), const SYS_POSIX_SPAWN = 474 pkg syscall (netbsd-amd64-cgo), const SYS_PREAD = 173 pkg syscall (netbsd-amd64-cgo), const SYS_PREADV = 289 pkg syscall (netbsd-amd64-cgo), const SYS_PROFIL = 44 pkg syscall (netbsd-amd64-cgo), const SYS_PSELECT = 436 pkg syscall (netbsd-amd64-cgo), const SYS_PSET_ASSIGN = 414 pkg syscall (netbsd-amd64-cgo), const SYS_PSET_CREATE = 412 pkg syscall (netbsd-amd64-cgo), const SYS_PSET_DESTROY = 413 pkg syscall (netbsd-amd64-cgo), const SYS_PTRACE = 26 pkg syscall (netbsd-amd64-cgo), const SYS_PWRITE = 174 pkg syscall (netbsd-amd64-cgo), const SYS_PWRITEV = 290 pkg syscall (netbsd-amd64-cgo), const SYS_RASCTL = 343 pkg syscall (netbsd-amd64-cgo), const SYS_READ = 3 pkg syscall (netbsd-amd64-cgo), const SYS_READLINK = 58 pkg syscall (netbsd-amd64-cgo), const SYS_READLINKAT = 469 pkg syscall (netbsd-amd64-cgo), const SYS_READV = 120 pkg syscall (netbsd-amd64-cgo), const SYS_REBOOT = 208 pkg syscall (netbsd-amd64-cgo), const SYS_RECVFROM = 29 pkg syscall (netbsd-amd64-cgo), const SYS_RECVMMSG = 475 pkg syscall (netbsd-amd64-cgo), const SYS_RECVMSG = 27 pkg syscall (netbsd-amd64-cgo), const SYS_REMOVEXATTR = 384 pkg syscall (netbsd-amd64-cgo), const SYS_RENAME = 128 pkg syscall (netbsd-amd64-cgo), const SYS_RENAMEAT = 458 pkg syscall (netbsd-amd64-cgo), const SYS_REVOKE = 56 pkg syscall (netbsd-amd64-cgo), const SYS_RMDIR = 137 pkg syscall (netbsd-amd64-cgo), const SYS_SBRK = 69 pkg syscall (netbsd-amd64-cgo), const SYS_SCHED_YIELD = 350 pkg syscall (netbsd-amd64-cgo), const SYS_SELECT = 417 pkg syscall (netbsd-amd64-cgo), const SYS_SEMCONFIG = 223 pkg syscall (netbsd-amd64-cgo), const SYS_SEMGET = 221 pkg syscall (netbsd-amd64-cgo), const SYS_SEMOP = 222 pkg syscall (netbsd-amd64-cgo), const SYS_SENDMMSG = 476 pkg syscall (netbsd-amd64-cgo), const SYS_SENDMSG = 28 pkg syscall (netbsd-amd64-cgo), const SYS_SENDTO = 133 pkg syscall (netbsd-amd64-cgo), const SYS_SETCONTEXT = 308 pkg syscall (netbsd-amd64-cgo), const SYS_SETEGID = 182 pkg syscall (netbsd-amd64-cgo), const SYS_SETEUID = 183 pkg syscall (netbsd-amd64-cgo), const SYS_SETGID = 181 pkg syscall (netbsd-amd64-cgo), const SYS_SETGROUPS = 80 pkg syscall (netbsd-amd64-cgo), const SYS_SETITIMER = 425 pkg syscall (netbsd-amd64-cgo), const SYS_SETPGID = 82 pkg syscall (netbsd-amd64-cgo), const SYS_SETPRIORITY = 96 pkg syscall (netbsd-amd64-cgo), const SYS_SETREGID = 127 pkg syscall (netbsd-amd64-cgo), const SYS_SETREUID = 126 pkg syscall (netbsd-amd64-cgo), const SYS_SETRLIMIT = 195 pkg syscall (netbsd-amd64-cgo), const SYS_SETSID = 147 pkg syscall (netbsd-amd64-cgo), const SYS_SETSOCKOPT = 105 pkg syscall (netbsd-amd64-cgo), const SYS_SETTIMEOFDAY = 419 pkg syscall (netbsd-amd64-cgo), const SYS_SETUID = 23 pkg syscall (netbsd-amd64-cgo), const SYS_SETXATTR = 375 pkg syscall (netbsd-amd64-cgo), const SYS_SHMAT = 228 pkg syscall (netbsd-amd64-cgo), const SYS_SHMCTL = 443 pkg syscall (netbsd-amd64-cgo), const SYS_SHMDT = 230 pkg syscall (netbsd-amd64-cgo), const SYS_SHMGET = 231 pkg syscall (netbsd-amd64-cgo), const SYS_SHUTDOWN = 134 pkg syscall (netbsd-amd64-cgo), const SYS_SIGQUEUEINFO = 245 pkg syscall (netbsd-amd64-cgo), const SYS_SOCKET = 394 pkg syscall (netbsd-amd64-cgo), const SYS_SOCKETPAIR = 135 pkg syscall (netbsd-amd64-cgo), const SYS_SSTK = 70 pkg syscall (netbsd-amd64-cgo), const SYS_STAT = 439 pkg syscall (netbsd-amd64-cgo), const SYS_STATVFS1 = 357 pkg syscall (netbsd-amd64-cgo), const SYS_SWAPCTL = 271 pkg syscall (netbsd-amd64-cgo), const SYS_SYMLINK = 57 pkg syscall (netbsd-amd64-cgo), const SYS_SYMLINKAT = 470 pkg syscall (netbsd-amd64-cgo), const SYS_SYNC = 36 pkg syscall (netbsd-amd64-cgo), const SYS_SYSARCH = 165 pkg syscall (netbsd-amd64-cgo), const SYS_TIMER_CREATE = 235 pkg syscall (netbsd-amd64-cgo), const SYS_TIMER_DELETE = 236 pkg syscall (netbsd-amd64-cgo), const SYS_TIMER_GETOVERRUN = 239 pkg syscall (netbsd-amd64-cgo), const SYS_TIMER_GETTIME = 447 pkg syscall (netbsd-amd64-cgo), const SYS_TIMER_SETTIME = 446 pkg syscall (netbsd-amd64-cgo), const SYS_TRUNCATE = 200 pkg syscall (netbsd-amd64-cgo), const SYS_UMASK = 60 pkg syscall (netbsd-amd64-cgo), const SYS_UNDELETE = 205 pkg syscall (netbsd-amd64-cgo), const SYS_UNLINK = 10 pkg syscall (netbsd-amd64-cgo), const SYS_UNLINKAT = 471 pkg syscall (netbsd-amd64-cgo), const SYS_UNMOUNT = 22 pkg syscall (netbsd-amd64-cgo), const SYS_UTIMENSAT = 467 pkg syscall (netbsd-amd64-cgo), const SYS_UTIMES = 420 pkg syscall (netbsd-amd64-cgo), const SYS_UTRACE = 306 pkg syscall (netbsd-amd64-cgo), const SYS_UUIDGEN = 355 pkg syscall (netbsd-amd64-cgo), const SYS_VADVISE = 72 pkg syscall (netbsd-amd64-cgo), const SYS_VFORK = 66 pkg syscall (netbsd-amd64-cgo), const SYS_WAIT4 = 449 pkg syscall (netbsd-amd64-cgo), const SYS_WRITE = 4 pkg syscall (netbsd-amd64-cgo), const SYS_WRITEV = 121 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_CONTINUE = 314 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_CREATE = 309 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_CTL = 325 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_DETACH = 319 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_EXIT = 310 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_GETNAME = 324 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_GETPRIVATE = 316 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_KILL = 318 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_PARK = 434 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_SELF = 311 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_SETNAME = 323 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_SETPRIVATE = 317 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_SUSPEND = 313 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_UNPARK = 321 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_UNPARK_ALL = 322 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_WAIT = 312 pkg syscall (netbsd-amd64-cgo), const SYS__LWP_WAKEUP = 315 pkg syscall (netbsd-amd64-cgo), const SYS__PSET_BIND = 415 pkg syscall (netbsd-amd64-cgo), const SYS__SCHED_GETAFFINITY = 349 pkg syscall (netbsd-amd64-cgo), const SYS__SCHED_GETPARAM = 347 pkg syscall (netbsd-amd64-cgo), const SYS__SCHED_SETAFFINITY = 348 pkg syscall (netbsd-amd64-cgo), const SYS__SCHED_SETPARAM = 346 pkg syscall (netbsd-amd64-cgo), const SYS___CLONE = 287 pkg syscall (netbsd-amd64-cgo), const SYS___GETCWD = 296 pkg syscall (netbsd-amd64-cgo), const SYS___GETLOGIN = 49 pkg syscall (netbsd-amd64-cgo), const SYS___POSIX_CHOWN = 283 pkg syscall (netbsd-amd64-cgo), const SYS___POSIX_FCHOWN = 284 pkg syscall (netbsd-amd64-cgo), const SYS___POSIX_LCHOWN = 285 pkg syscall (netbsd-amd64-cgo), const SYS___POSIX_RENAME = 270 pkg syscall (netbsd-amd64-cgo), const SYS___QUOTACTL = 473 pkg syscall (netbsd-amd64-cgo), const SYS___SEMCTL = 442 pkg syscall (netbsd-amd64-cgo), const SYS___SETLOGIN = 50 pkg syscall (netbsd-amd64-cgo), const SYS___SIGACTION_SIGTRAMP = 340 pkg syscall (netbsd-amd64-cgo), const SYS___SIGTIMEDWAIT = 431 pkg syscall (netbsd-amd64-cgo), const SYS___SYSCTL = 202 pkg syscall (netbsd-amd64-cgo), const S_ARCH1 = 65536 pkg syscall (netbsd-amd64-cgo), const S_ARCH2 = 131072 pkg syscall (netbsd-amd64-cgo), const S_BLKSIZE = 512 pkg syscall (netbsd-amd64-cgo), const S_IEXEC = 64 pkg syscall (netbsd-amd64-cgo), const S_IFMT = 61440 pkg syscall (netbsd-amd64-cgo), const S_IFWHT = 57344 pkg syscall (netbsd-amd64-cgo), const S_IREAD = 256 pkg syscall (netbsd-amd64-cgo), const S_IRGRP = 32 pkg syscall (netbsd-amd64-cgo), const S_IROTH = 4 pkg syscall (netbsd-amd64-cgo), const S_IRWXG = 56 pkg syscall (netbsd-amd64-cgo), const S_IRWXO = 7 pkg syscall (netbsd-amd64-cgo), const S_IRWXU = 448 pkg syscall (netbsd-amd64-cgo), const S_ISTXT = 512 pkg syscall (netbsd-amd64-cgo), const S_IWGRP = 16 pkg syscall (netbsd-amd64-cgo), const S_IWOTH = 2 pkg syscall (netbsd-amd64-cgo), const S_IWRITE = 128 pkg syscall (netbsd-amd64-cgo), const S_IXGRP = 8 pkg syscall (netbsd-amd64-cgo), const S_IXOTH = 1 pkg syscall (netbsd-amd64-cgo), const S_LOGIN_SET = 1 pkg syscall (netbsd-amd64-cgo), const SizeofBpfHdr = 32 pkg syscall (netbsd-amd64-cgo), const SizeofBpfInsn = 8 pkg syscall (netbsd-amd64-cgo), const SizeofBpfProgram = 16 pkg syscall (netbsd-amd64-cgo), const SizeofBpfStat = 128 pkg syscall (netbsd-amd64-cgo), const SizeofBpfVersion = 4 pkg syscall (netbsd-amd64-cgo), const SizeofCmsghdr = 12 pkg syscall (netbsd-amd64-cgo), const SizeofIPMreq = 8 pkg syscall (netbsd-amd64-cgo), const SizeofIPv6Mreq = 20 pkg syscall (netbsd-amd64-cgo), const SizeofIfAnnounceMsghdr = 24 pkg syscall (netbsd-amd64-cgo), const SizeofIfData = 136 pkg syscall (netbsd-amd64-cgo), const SizeofIfMsghdr = 152 pkg syscall (netbsd-amd64-cgo), const SizeofIfaMsghdr = 24 pkg syscall (netbsd-amd64-cgo), const SizeofInet6Pktinfo = 20 pkg syscall (netbsd-amd64-cgo), const SizeofLinger = 8 pkg syscall (netbsd-amd64-cgo), const SizeofMsghdr = 48 pkg syscall (netbsd-amd64-cgo), const SizeofRtMetrics = 80 pkg syscall (netbsd-amd64-cgo), const SizeofRtMsghdr = 120 pkg syscall (netbsd-amd64-cgo), const SizeofSockaddrAny = 108 pkg syscall (netbsd-amd64-cgo), const SizeofSockaddrDatalink = 20 pkg syscall (netbsd-amd64-cgo), const SizeofSockaddrInet4 = 16 pkg syscall (netbsd-amd64-cgo), const SizeofSockaddrInet6 = 28 pkg syscall (netbsd-amd64-cgo), const SizeofSockaddrUnix = 106 pkg syscall (netbsd-amd64-cgo), const TCIFLUSH = 1 pkg syscall (netbsd-amd64-cgo), const TCIOFLUSH = 3 pkg syscall (netbsd-amd64-cgo), const TCOFLUSH = 2 pkg syscall (netbsd-amd64-cgo), const TCP_CONGCTL = 32 pkg syscall (netbsd-amd64-cgo), const TCP_KEEPCNT = 6 pkg syscall (netbsd-amd64-cgo), const TCP_KEEPIDLE = 3 pkg syscall (netbsd-amd64-cgo), const TCP_KEEPINIT = 7 pkg syscall (netbsd-amd64-cgo), const TCP_KEEPINTVL = 5 pkg syscall (netbsd-amd64-cgo), const TCP_MAXBURST = 4 pkg syscall (netbsd-amd64-cgo), const TCP_MAXSEG = 2 pkg syscall (netbsd-amd64-cgo), const TCP_MAXWIN = 65535 pkg syscall (netbsd-amd64-cgo), const TCP_MAX_WINSHIFT = 14 pkg syscall (netbsd-amd64-cgo), const TCP_MD5SIG = 16 pkg syscall (netbsd-amd64-cgo), const TCP_MINMSS = 216 pkg syscall (netbsd-amd64-cgo), const TCP_MSS = 536 pkg syscall (netbsd-amd64-cgo), const TCSAFLUSH = 2 pkg syscall (netbsd-amd64-cgo), const TIOCCBRK = 536900730 pkg syscall (netbsd-amd64-cgo), const TIOCCDTR = 536900728 pkg syscall (netbsd-amd64-cgo), const TIOCCONS = 2147775586 pkg syscall (netbsd-amd64-cgo), const TIOCDCDTIMESTAMP = 1074820184 pkg syscall (netbsd-amd64-cgo), const TIOCDRAIN = 536900702 pkg syscall (netbsd-amd64-cgo), const TIOCEXCL = 536900621 pkg syscall (netbsd-amd64-cgo), const TIOCEXT = 2147775584 pkg syscall (netbsd-amd64-cgo), const TIOCFLAG_CDTRCTS = 16 pkg syscall (netbsd-amd64-cgo), const TIOCFLAG_CLOCAL = 2 pkg syscall (netbsd-amd64-cgo), const TIOCFLAG_CRTSCTS = 4 pkg syscall (netbsd-amd64-cgo), const TIOCFLAG_MDMBUF = 8 pkg syscall (netbsd-amd64-cgo), const TIOCFLAG_SOFTCAR = 1 pkg syscall (netbsd-amd64-cgo), const TIOCFLUSH = 2147775504 pkg syscall (netbsd-amd64-cgo), const TIOCGETA = 1076655123 pkg syscall (netbsd-amd64-cgo), const TIOCGETD = 1074033690 pkg syscall (netbsd-amd64-cgo), const TIOCGFLAGS = 1074033757 pkg syscall (netbsd-amd64-cgo), const TIOCGLINED = 1075868738 pkg syscall (netbsd-amd64-cgo), const TIOCGPGRP = 1074033783 pkg syscall (netbsd-amd64-cgo), const TIOCGQSIZE = 1074033793 pkg syscall (netbsd-amd64-cgo), const TIOCGRANTPT = 536900679 pkg syscall (netbsd-amd64-cgo), const TIOCGSID = 1074033763 pkg syscall (netbsd-amd64-cgo), const TIOCGSIZE = 1074295912 pkg syscall (netbsd-amd64-cgo), const TIOCGWINSZ = 1074295912 pkg syscall (netbsd-amd64-cgo), const TIOCMBIC = 2147775595 pkg syscall (netbsd-amd64-cgo), const TIOCMBIS = 2147775596 pkg syscall (netbsd-amd64-cgo), const TIOCMGET = 1074033770 pkg syscall (netbsd-amd64-cgo), const TIOCMSET = 2147775597 pkg syscall (netbsd-amd64-cgo), const TIOCM_CAR = 64 pkg syscall (netbsd-amd64-cgo), const TIOCM_CD = 64 pkg syscall (netbsd-amd64-cgo), const TIOCM_CTS = 32 pkg syscall (netbsd-amd64-cgo), const TIOCM_DSR = 256 pkg syscall (netbsd-amd64-cgo), const TIOCM_DTR = 2 pkg syscall (netbsd-amd64-cgo), const TIOCM_LE = 1 pkg syscall (netbsd-amd64-cgo), const TIOCM_RI = 128 pkg syscall (netbsd-amd64-cgo), const TIOCM_RNG = 128 pkg syscall (netbsd-amd64-cgo), const TIOCM_RTS = 4 pkg syscall (netbsd-amd64-cgo), const TIOCM_SR = 16 pkg syscall (netbsd-amd64-cgo), const TIOCM_ST = 8 pkg syscall (netbsd-amd64-cgo), const TIOCNOTTY = 536900721 pkg syscall (netbsd-amd64-cgo), const TIOCNXCL = 536900622 pkg syscall (netbsd-amd64-cgo), const TIOCOUTQ = 1074033779 pkg syscall (netbsd-amd64-cgo), const TIOCPKT = 2147775600 pkg syscall (netbsd-amd64-cgo), const TIOCPKT_DATA = 0 pkg syscall (netbsd-amd64-cgo), const TIOCPKT_DOSTOP = 32 pkg syscall (netbsd-amd64-cgo), const TIOCPKT_FLUSHREAD = 1 pkg syscall (netbsd-amd64-cgo), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (netbsd-amd64-cgo), const TIOCPKT_IOCTL = 64 pkg syscall (netbsd-amd64-cgo), const TIOCPKT_NOSTOP = 16 pkg syscall (netbsd-amd64-cgo), const TIOCPKT_START = 8 pkg syscall (netbsd-amd64-cgo), const TIOCPKT_STOP = 4 pkg syscall (netbsd-amd64-cgo), const TIOCPTMGET = 1076393030 pkg syscall (netbsd-amd64-cgo), const TIOCPTSNAME = 1076393032 pkg syscall (netbsd-amd64-cgo), const TIOCRCVFRAME = 2148037701 pkg syscall (netbsd-amd64-cgo), const TIOCREMOTE = 2147775593 pkg syscall (netbsd-amd64-cgo), const TIOCSBRK = 536900731 pkg syscall (netbsd-amd64-cgo), const TIOCSCTTY = 536900705 pkg syscall (netbsd-amd64-cgo), const TIOCSDTR = 536900729 pkg syscall (netbsd-amd64-cgo), const TIOCSETA = 2150396948 pkg syscall (netbsd-amd64-cgo), const TIOCSETAF = 2150396950 pkg syscall (netbsd-amd64-cgo), const TIOCSETAW = 2150396949 pkg syscall (netbsd-amd64-cgo), const TIOCSETD = 2147775515 pkg syscall (netbsd-amd64-cgo), const TIOCSFLAGS = 2147775580 pkg syscall (netbsd-amd64-cgo), const TIOCSIG = 536900703 pkg syscall (netbsd-amd64-cgo), const TIOCSLINED = 2149610563 pkg syscall (netbsd-amd64-cgo), const TIOCSPGRP = 2147775606 pkg syscall (netbsd-amd64-cgo), const TIOCSQSIZE = 2147775616 pkg syscall (netbsd-amd64-cgo), const TIOCSSIZE = 2148037735 pkg syscall (netbsd-amd64-cgo), const TIOCSTART = 536900718 pkg syscall (netbsd-amd64-cgo), const TIOCSTAT = 2147775589 pkg syscall (netbsd-amd64-cgo), const TIOCSTI = 2147578994 pkg syscall (netbsd-amd64-cgo), const TIOCSTOP = 536900719 pkg syscall (netbsd-amd64-cgo), const TIOCSWINSZ = 2148037735 pkg syscall (netbsd-amd64-cgo), const TIOCUCNTL = 2147775590 pkg syscall (netbsd-amd64-cgo), const TIOCXMTFRAME = 2148037700 pkg syscall (netbsd-amd64-cgo), const TOSTOP = 4194304 pkg syscall (netbsd-amd64-cgo), const VDISCARD = 15 pkg syscall (netbsd-amd64-cgo), const VDSUSP = 11 pkg syscall (netbsd-amd64-cgo), const VEOF = 0 pkg syscall (netbsd-amd64-cgo), const VEOL = 1 pkg syscall (netbsd-amd64-cgo), const VEOL2 = 2 pkg syscall (netbsd-amd64-cgo), const VERASE = 3 pkg syscall (netbsd-amd64-cgo), const VINTR = 8 pkg syscall (netbsd-amd64-cgo), const VKILL = 5 pkg syscall (netbsd-amd64-cgo), const VLNEXT = 14 pkg syscall (netbsd-amd64-cgo), const VMIN = 16 pkg syscall (netbsd-amd64-cgo), const VQUIT = 9 pkg syscall (netbsd-amd64-cgo), const VREPRINT = 6 pkg syscall (netbsd-amd64-cgo), const VSTART = 12 pkg syscall (netbsd-amd64-cgo), const VSTATUS = 18 pkg syscall (netbsd-amd64-cgo), const VSTOP = 13 pkg syscall (netbsd-amd64-cgo), const VSUSP = 10 pkg syscall (netbsd-amd64-cgo), const VTIME = 17 pkg syscall (netbsd-amd64-cgo), const VWERASE = 4 pkg syscall (netbsd-amd64-cgo), const WALL = 8 pkg syscall (netbsd-amd64-cgo), const WALLSIG = 8 pkg syscall (netbsd-amd64-cgo), const WALTSIG = 4 pkg syscall (netbsd-amd64-cgo), const WCLONE = 4 pkg syscall (netbsd-amd64-cgo), const WCOREFLAG = 128 pkg syscall (netbsd-amd64-cgo), const WNOHANG = 1 pkg syscall (netbsd-amd64-cgo), const WNOWAIT = 65536 pkg syscall (netbsd-amd64-cgo), const WNOZOMBIE = 131072 pkg syscall (netbsd-amd64-cgo), const WOPTSCHECKED = 262144 pkg syscall (netbsd-amd64-cgo), const WSTOPPED = 127 pkg syscall (netbsd-amd64-cgo), const WUNTRACED = 2 pkg syscall (netbsd-arm), const AF_APPLETALK = 16 pkg syscall (netbsd-arm), const AF_ARP = 28 pkg syscall (netbsd-arm), const AF_BLUETOOTH = 31 pkg syscall (netbsd-arm), const AF_CCITT = 10 pkg syscall (netbsd-arm), const AF_CHAOS = 5 pkg syscall (netbsd-arm), const AF_CNT = 21 pkg syscall (netbsd-arm), const AF_COIP = 20 pkg syscall (netbsd-arm), const AF_DATAKIT = 9 pkg syscall (netbsd-arm), const AF_DECnet = 12 pkg syscall (netbsd-arm), const AF_DLI = 13 pkg syscall (netbsd-arm), const AF_E164 = 26 pkg syscall (netbsd-arm), const AF_ECMA = 8 pkg syscall (netbsd-arm), const AF_HYLINK = 15 pkg syscall (netbsd-arm), const AF_IEEE80211 = 32 pkg syscall (netbsd-arm), const AF_IMPLINK = 3 pkg syscall (netbsd-arm), const AF_INET6 = 24 pkg syscall (netbsd-arm), const AF_IPX = 23 pkg syscall (netbsd-arm), const AF_ISDN = 26 pkg syscall (netbsd-arm), const AF_ISO = 7 pkg syscall (netbsd-arm), const AF_LAT = 14 pkg syscall (netbsd-arm), const AF_LINK = 18 pkg syscall (netbsd-arm), const AF_LOCAL = 1 pkg syscall (netbsd-arm), const AF_MAX = 35 pkg syscall (netbsd-arm), const AF_MPLS = 33 pkg syscall (netbsd-arm), const AF_NATM = 27 pkg syscall (netbsd-arm), const AF_NS = 6 pkg syscall (netbsd-arm), const AF_OROUTE = 17 pkg syscall (netbsd-arm), const AF_OSI = 7 pkg syscall (netbsd-arm), const AF_PUP = 4 pkg syscall (netbsd-arm), const AF_ROUTE = 34 pkg syscall (netbsd-arm), const AF_SNA = 11 pkg syscall (netbsd-arm), const ARPHRD_ARCNET = 7 pkg syscall (netbsd-arm), const ARPHRD_ETHER = 1 pkg syscall (netbsd-arm), const ARPHRD_FRELAY = 15 pkg syscall (netbsd-arm), const ARPHRD_IEEE1394 = 24 pkg syscall (netbsd-arm), const ARPHRD_IEEE802 = 6 pkg syscall (netbsd-arm), const ARPHRD_STRIP = 23 pkg syscall (netbsd-arm), const B0 = 0 pkg syscall (netbsd-arm), const B110 = 110 pkg syscall (netbsd-arm), const B115200 = 115200 pkg syscall (netbsd-arm), const B1200 = 1200 pkg syscall (netbsd-arm), const B134 = 134 pkg syscall (netbsd-arm), const B14400 = 14400 pkg syscall (netbsd-arm), const B150 = 150 pkg syscall (netbsd-arm), const B1800 = 1800 pkg syscall (netbsd-arm), const B19200 = 19200 pkg syscall (netbsd-arm), const B200 = 200 pkg syscall (netbsd-arm), const B230400 = 230400 pkg syscall (netbsd-arm), const B2400 = 2400 pkg syscall (netbsd-arm), const B28800 = 28800 pkg syscall (netbsd-arm), const B300 = 300 pkg syscall (netbsd-arm), const B38400 = 38400 pkg syscall (netbsd-arm), const B460800 = 460800 pkg syscall (netbsd-arm), const B4800 = 4800 pkg syscall (netbsd-arm), const B50 = 50 pkg syscall (netbsd-arm), const B57600 = 57600 pkg syscall (netbsd-arm), const B600 = 600 pkg syscall (netbsd-arm), const B7200 = 7200 pkg syscall (netbsd-arm), const B75 = 75 pkg syscall (netbsd-arm), const B76800 = 76800 pkg syscall (netbsd-arm), const B921600 = 921600 pkg syscall (netbsd-arm), const B9600 = 9600 pkg syscall (netbsd-arm), const BIOCFEEDBACK = 2147762813 pkg syscall (netbsd-arm), const BIOCFLUSH = 536887912 pkg syscall (netbsd-arm), const BIOCGBLEN = 1074020966 pkg syscall (netbsd-arm), const BIOCGDLT = 1074020970 pkg syscall (netbsd-arm), const BIOCGDLTLIST = 3221766775 pkg syscall (netbsd-arm), const BIOCGETIF = 1083196011 pkg syscall (netbsd-arm), const BIOCGFEEDBACK = 1074020988 pkg syscall (netbsd-arm), const BIOCGHDRCMPLT = 1074020980 pkg syscall (netbsd-arm), const BIOCGRTIMEOUT = 1074545275 pkg syscall (netbsd-arm), const BIOCGSEESENT = 1074020984 pkg syscall (netbsd-arm), const BIOCGSTATS = 1082147439 pkg syscall (netbsd-arm), const BIOCGSTATSOLD = 1074283119 pkg syscall (netbsd-arm), const BIOCIMMEDIATE = 2147762800 pkg syscall (netbsd-arm), const BIOCPROMISC = 536887913 pkg syscall (netbsd-arm), const BIOCSBLEN = 3221504614 pkg syscall (netbsd-arm), const BIOCSDLT = 2147762806 pkg syscall (netbsd-arm), const BIOCSETF = 2148024935 pkg syscall (netbsd-arm), const BIOCSETIF = 2156937836 pkg syscall (netbsd-arm), const BIOCSFEEDBACK = 2147762813 pkg syscall (netbsd-arm), const BIOCSHDRCMPLT = 2147762805 pkg syscall (netbsd-arm), const BIOCSRTIMEOUT = 2148287098 pkg syscall (netbsd-arm), const BIOCSSEESENT = 2147762809 pkg syscall (netbsd-arm), const BIOCSTCPF = 2148024946 pkg syscall (netbsd-arm), const BIOCSUDPF = 2148024947 pkg syscall (netbsd-arm), const BIOCVERSION = 1074020977 pkg syscall (netbsd-arm), const BPF_A = 16 pkg syscall (netbsd-arm), const BPF_ABS = 32 pkg syscall (netbsd-arm), const BPF_ADD = 0 pkg syscall (netbsd-arm), const BPF_ALIGNMENT = 4 pkg syscall (netbsd-arm), const BPF_ALIGNMENT32 = 4 pkg syscall (netbsd-arm), const BPF_ALU = 4 pkg syscall (netbsd-arm), const BPF_AND = 80 pkg syscall (netbsd-arm), const BPF_B = 16 pkg syscall (netbsd-arm), const BPF_DFLTBUFSIZE = 1048576 pkg syscall (netbsd-arm), const BPF_DIV = 48 pkg syscall (netbsd-arm), const BPF_H = 8 pkg syscall (netbsd-arm), const BPF_IMM = 0 pkg syscall (netbsd-arm), const BPF_IND = 64 pkg syscall (netbsd-arm), const BPF_JA = 0 pkg syscall (netbsd-arm), const BPF_JEQ = 16 pkg syscall (netbsd-arm), const BPF_JGE = 48 pkg syscall (netbsd-arm), const BPF_JGT = 32 pkg syscall (netbsd-arm), const BPF_JMP = 5 pkg syscall (netbsd-arm), const BPF_JSET = 64 pkg syscall (netbsd-arm), const BPF_K = 0 pkg syscall (netbsd-arm), const BPF_LD = 0 pkg syscall (netbsd-arm), const BPF_LDX = 1 pkg syscall (netbsd-arm), const BPF_LEN = 128 pkg syscall (netbsd-arm), const BPF_LSH = 96 pkg syscall (netbsd-arm), const BPF_MAJOR_VERSION = 1 pkg syscall (netbsd-arm), const BPF_MAXBUFSIZE = 16777216 pkg syscall (netbsd-arm), const BPF_MAXINSNS = 512 pkg syscall (netbsd-arm), const BPF_MEM = 96 pkg syscall (netbsd-arm), const BPF_MEMWORDS = 16 pkg syscall (netbsd-arm), const BPF_MINBUFSIZE = 32 pkg syscall (netbsd-arm), const BPF_MINOR_VERSION = 1 pkg syscall (netbsd-arm), const BPF_MISC = 7 pkg syscall (netbsd-arm), const BPF_MSH = 160 pkg syscall (netbsd-arm), const BPF_MUL = 32 pkg syscall (netbsd-arm), const BPF_NEG = 128 pkg syscall (netbsd-arm), const BPF_OR = 64 pkg syscall (netbsd-arm), const BPF_RELEASE = 199606 pkg syscall (netbsd-arm), const BPF_RET = 6 pkg syscall (netbsd-arm), const BPF_RSH = 112 pkg syscall (netbsd-arm), const BPF_ST = 2 pkg syscall (netbsd-arm), const BPF_STX = 3 pkg syscall (netbsd-arm), const BPF_SUB = 16 pkg syscall (netbsd-arm), const BPF_TAX = 0 pkg syscall (netbsd-arm), const BPF_TXA = 128 pkg syscall (netbsd-arm), const BPF_W = 0 pkg syscall (netbsd-arm), const BPF_X = 8 pkg syscall (netbsd-arm), const BRKINT = 2 pkg syscall (netbsd-arm), const CFLUSH = 15 pkg syscall (netbsd-arm), const CLOCAL = 32768 pkg syscall (netbsd-arm), const CREAD = 2048 pkg syscall (netbsd-arm), const CS5 = 0 pkg syscall (netbsd-arm), const CS6 = 256 pkg syscall (netbsd-arm), const CS7 = 512 pkg syscall (netbsd-arm), const CS8 = 768 pkg syscall (netbsd-arm), const CSIZE = 768 pkg syscall (netbsd-arm), const CSTART = 17 pkg syscall (netbsd-arm), const CSTATUS = 20 pkg syscall (netbsd-arm), const CSTOP = 19 pkg syscall (netbsd-arm), const CSTOPB = 1024 pkg syscall (netbsd-arm), const CSUSP = 26 pkg syscall (netbsd-arm), const CTL_MAXNAME = 12 pkg syscall (netbsd-arm), const CTL_NET = 4 pkg syscall (netbsd-arm), const CTL_QUERY = -2 pkg syscall (netbsd-arm), const DIOCBSFLUSH = 536896632 pkg syscall (netbsd-arm), const DLT_A429 = 184 pkg syscall (netbsd-arm), const DLT_A653_ICM = 185 pkg syscall (netbsd-arm), const DLT_AIRONET_HEADER = 120 pkg syscall (netbsd-arm), const DLT_AOS = 222 pkg syscall (netbsd-arm), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (netbsd-arm), const DLT_ARCNET = 7 pkg syscall (netbsd-arm), const DLT_ARCNET_LINUX = 129 pkg syscall (netbsd-arm), const DLT_ATM_CLIP = 19 pkg syscall (netbsd-arm), const DLT_ATM_RFC1483 = 11 pkg syscall (netbsd-arm), const DLT_AURORA = 126 pkg syscall (netbsd-arm), const DLT_AX25 = 3 pkg syscall (netbsd-arm), const DLT_AX25_KISS = 202 pkg syscall (netbsd-arm), const DLT_BACNET_MS_TP = 165 pkg syscall (netbsd-arm), const DLT_BLUETOOTH_HCI_H4 = 187 pkg syscall (netbsd-arm), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 pkg syscall (netbsd-arm), const DLT_CAN20B = 190 pkg syscall (netbsd-arm), const DLT_CAN_SOCKETCAN = 227 pkg syscall (netbsd-arm), const DLT_CHAOS = 5 pkg syscall (netbsd-arm), const DLT_CISCO_IOS = 118 pkg syscall (netbsd-arm), const DLT_C_HDLC = 104 pkg syscall (netbsd-arm), const DLT_C_HDLC_WITH_DIR = 205 pkg syscall (netbsd-arm), const DLT_DECT = 221 pkg syscall (netbsd-arm), const DLT_DOCSIS = 143 pkg syscall (netbsd-arm), const DLT_ECONET = 115 pkg syscall (netbsd-arm), const DLT_EN10MB = 1 pkg syscall (netbsd-arm), const DLT_EN3MB = 2 pkg syscall (netbsd-arm), const DLT_ENC = 109 pkg syscall (netbsd-arm), const DLT_ERF = 197 pkg syscall (netbsd-arm), const DLT_ERF_ETH = 175 pkg syscall (netbsd-arm), const DLT_ERF_POS = 176 pkg syscall (netbsd-arm), const DLT_FC_2 = 224 pkg syscall (netbsd-arm), const DLT_FC_2_WITH_FRAME_DELIMS = 225 pkg syscall (netbsd-arm), const DLT_FDDI = 10 pkg syscall (netbsd-arm), const DLT_FLEXRAY = 210 pkg syscall (netbsd-arm), const DLT_FRELAY = 107 pkg syscall (netbsd-arm), const DLT_FRELAY_WITH_DIR = 206 pkg syscall (netbsd-arm), const DLT_GCOM_SERIAL = 173 pkg syscall (netbsd-arm), const DLT_GCOM_T1E1 = 172 pkg syscall (netbsd-arm), const DLT_GPF_F = 171 pkg syscall (netbsd-arm), const DLT_GPF_T = 170 pkg syscall (netbsd-arm), const DLT_GPRS_LLC = 169 pkg syscall (netbsd-arm), const DLT_GSMTAP_ABIS = 218 pkg syscall (netbsd-arm), const DLT_GSMTAP_UM = 217 pkg syscall (netbsd-arm), const DLT_HDLC = 16 pkg syscall (netbsd-arm), const DLT_HHDLC = 121 pkg syscall (netbsd-arm), const DLT_HIPPI = 15 pkg syscall (netbsd-arm), const DLT_IBM_SN = 146 pkg syscall (netbsd-arm), const DLT_IBM_SP = 145 pkg syscall (netbsd-arm), const DLT_IEEE802 = 6 pkg syscall (netbsd-arm), const DLT_IEEE802_11 = 105 pkg syscall (netbsd-arm), const DLT_IEEE802_11_RADIO = 127 pkg syscall (netbsd-arm), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (netbsd-arm), const DLT_IEEE802_15_4 = 195 pkg syscall (netbsd-arm), const DLT_IEEE802_15_4_LINUX = 191 pkg syscall (netbsd-arm), const DLT_IEEE802_15_4_NONASK_PHY = 215 pkg syscall (netbsd-arm), const DLT_IEEE802_16_MAC_CPS = 188 pkg syscall (netbsd-arm), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 pkg syscall (netbsd-arm), const DLT_IPMB = 199 pkg syscall (netbsd-arm), const DLT_IPMB_LINUX = 209 pkg syscall (netbsd-arm), const DLT_IPNET = 226 pkg syscall (netbsd-arm), const DLT_IPV4 = 228 pkg syscall (netbsd-arm), const DLT_IPV6 = 229 pkg syscall (netbsd-arm), const DLT_IP_OVER_FC = 122 pkg syscall (netbsd-arm), const DLT_JUNIPER_ATM1 = 137 pkg syscall (netbsd-arm), const DLT_JUNIPER_ATM2 = 135 pkg syscall (netbsd-arm), const DLT_JUNIPER_CHDLC = 181 pkg syscall (netbsd-arm), const DLT_JUNIPER_ES = 132 pkg syscall (netbsd-arm), const DLT_JUNIPER_ETHER = 178 pkg syscall (netbsd-arm), const DLT_JUNIPER_FRELAY = 180 pkg syscall (netbsd-arm), const DLT_JUNIPER_GGSN = 133 pkg syscall (netbsd-arm), const DLT_JUNIPER_ISM = 194 pkg syscall (netbsd-arm), const DLT_JUNIPER_MFR = 134 pkg syscall (netbsd-arm), const DLT_JUNIPER_MLFR = 131 pkg syscall (netbsd-arm), const DLT_JUNIPER_MLPPP = 130 pkg syscall (netbsd-arm), const DLT_JUNIPER_MONITOR = 164 pkg syscall (netbsd-arm), const DLT_JUNIPER_PIC_PEER = 174 pkg syscall (netbsd-arm), const DLT_JUNIPER_PPP = 179 pkg syscall (netbsd-arm), const DLT_JUNIPER_PPPOE = 167 pkg syscall (netbsd-arm), const DLT_JUNIPER_PPPOE_ATM = 168 pkg syscall (netbsd-arm), const DLT_JUNIPER_SERVICES = 136 pkg syscall (netbsd-arm), const DLT_JUNIPER_ST = 200 pkg syscall (netbsd-arm), const DLT_JUNIPER_VP = 183 pkg syscall (netbsd-arm), const DLT_LAPB_WITH_DIR = 207 pkg syscall (netbsd-arm), const DLT_LAPD = 203 pkg syscall (netbsd-arm), const DLT_LIN = 212 pkg syscall (netbsd-arm), const DLT_LINUX_EVDEV = 216 pkg syscall (netbsd-arm), const DLT_LINUX_IRDA = 144 pkg syscall (netbsd-arm), const DLT_LINUX_LAPD = 177 pkg syscall (netbsd-arm), const DLT_LINUX_SLL = 113 pkg syscall (netbsd-arm), const DLT_LOOP = 108 pkg syscall (netbsd-arm), const DLT_LTALK = 114 pkg syscall (netbsd-arm), const DLT_MFR = 182 pkg syscall (netbsd-arm), const DLT_MOST = 211 pkg syscall (netbsd-arm), const DLT_MPLS = 219 pkg syscall (netbsd-arm), const DLT_MTP2 = 140 pkg syscall (netbsd-arm), const DLT_MTP2_WITH_PHDR = 139 pkg syscall (netbsd-arm), const DLT_MTP3 = 141 pkg syscall (netbsd-arm), const DLT_NULL = 0 pkg syscall (netbsd-arm), const DLT_PCI_EXP = 125 pkg syscall (netbsd-arm), const DLT_PFLOG = 117 pkg syscall (netbsd-arm), const DLT_PFSYNC = 18 pkg syscall (netbsd-arm), const DLT_PPI = 192 pkg syscall (netbsd-arm), const DLT_PPP = 9 pkg syscall (netbsd-arm), const DLT_PPP_BSDOS = 14 pkg syscall (netbsd-arm), const DLT_PPP_ETHER = 51 pkg syscall (netbsd-arm), const DLT_PPP_PPPD = 166 pkg syscall (netbsd-arm), const DLT_PPP_SERIAL = 50 pkg syscall (netbsd-arm), const DLT_PPP_WITH_DIR = 204 pkg syscall (netbsd-arm), const DLT_PRISM_HEADER = 119 pkg syscall (netbsd-arm), const DLT_PRONET = 4 pkg syscall (netbsd-arm), const DLT_RAIF1 = 198 pkg syscall (netbsd-arm), const DLT_RAW = 12 pkg syscall (netbsd-arm), const DLT_RAWAF_MASK = 35913728 pkg syscall (netbsd-arm), const DLT_RIO = 124 pkg syscall (netbsd-arm), const DLT_SCCP = 142 pkg syscall (netbsd-arm), const DLT_SITA = 196 pkg syscall (netbsd-arm), const DLT_SLIP = 8 pkg syscall (netbsd-arm), const DLT_SLIP_BSDOS = 13 pkg syscall (netbsd-arm), const DLT_SUNATM = 123 pkg syscall (netbsd-arm), const DLT_SYMANTEC_FIREWALL = 99 pkg syscall (netbsd-arm), const DLT_TZSP = 128 pkg syscall (netbsd-arm), const DLT_USB = 186 pkg syscall (netbsd-arm), const DLT_USB_LINUX = 189 pkg syscall (netbsd-arm), const DLT_USB_LINUX_MMAPPED = 220 pkg syscall (netbsd-arm), const DLT_WIHART = 223 pkg syscall (netbsd-arm), const DLT_X2E_SERIAL = 213 pkg syscall (netbsd-arm), const DLT_X2E_XORAYA = 214 pkg syscall (netbsd-arm), const DT_BLK = 6 pkg syscall (netbsd-arm), const DT_CHR = 2 pkg syscall (netbsd-arm), const DT_DIR = 4 pkg syscall (netbsd-arm), const DT_FIFO = 1 pkg syscall (netbsd-arm), const DT_LNK = 10 pkg syscall (netbsd-arm), const DT_REG = 8 pkg syscall (netbsd-arm), const DT_SOCK = 12 pkg syscall (netbsd-arm), const DT_UNKNOWN = 0 pkg syscall (netbsd-arm), const DT_WHT = 14 pkg syscall (netbsd-arm), const E2BIG = 7 pkg syscall (netbsd-arm), const EACCES = 13 pkg syscall (netbsd-arm), const EADDRINUSE = 48 pkg syscall (netbsd-arm), const EADDRNOTAVAIL = 49 pkg syscall (netbsd-arm), const EAFNOSUPPORT = 47 pkg syscall (netbsd-arm), const EAGAIN = 35 pkg syscall (netbsd-arm), const EALREADY = 37 pkg syscall (netbsd-arm), const EAUTH = 80 pkg syscall (netbsd-arm), const EBADF = 9 pkg syscall (netbsd-arm), const EBADMSG = 88 pkg syscall (netbsd-arm), const EBADRPC = 72 pkg syscall (netbsd-arm), const EBUSY = 16 pkg syscall (netbsd-arm), const ECANCELED = 87 pkg syscall (netbsd-arm), const ECHILD = 10 pkg syscall (netbsd-arm), const ECHO = 8 pkg syscall (netbsd-arm), const ECHOCTL = 64 pkg syscall (netbsd-arm), const ECHOE = 2 pkg syscall (netbsd-arm), const ECHOK = 4 pkg syscall (netbsd-arm), const ECHOKE = 1 pkg syscall (netbsd-arm), const ECHONL = 16 pkg syscall (netbsd-arm), const ECHOPRT = 32 pkg syscall (netbsd-arm), const ECONNABORTED = 53 pkg syscall (netbsd-arm), const ECONNREFUSED = 61 pkg syscall (netbsd-arm), const ECONNRESET = 54 pkg syscall (netbsd-arm), const EDEADLK = 11 pkg syscall (netbsd-arm), const EDESTADDRREQ = 39 pkg syscall (netbsd-arm), const EDOM = 33 pkg syscall (netbsd-arm), const EDQUOT = 69 pkg syscall (netbsd-arm), const EEXIST = 17 pkg syscall (netbsd-arm), const EFAULT = 14 pkg syscall (netbsd-arm), const EFBIG = 27 pkg syscall (netbsd-arm), const EFTYPE = 79 pkg syscall (netbsd-arm), const EHOSTDOWN = 64 pkg syscall (netbsd-arm), const EHOSTUNREACH = 65 pkg syscall (netbsd-arm), const EIDRM = 82 pkg syscall (netbsd-arm), const EILSEQ = 85 pkg syscall (netbsd-arm), const EINPROGRESS = 36 pkg syscall (netbsd-arm), const EINTR = 4 pkg syscall (netbsd-arm), const EINVAL = 22 pkg syscall (netbsd-arm), const EIO = 5 pkg syscall (netbsd-arm), const EISCONN = 56 pkg syscall (netbsd-arm), const EISDIR = 21 pkg syscall (netbsd-arm), const ELAST = 96 pkg syscall (netbsd-arm), const ELOOP = 62 pkg syscall (netbsd-arm), const EMFILE = 24 pkg syscall (netbsd-arm), const EMLINK = 31 pkg syscall (netbsd-arm), const EMSGSIZE = 40 pkg syscall (netbsd-arm), const EMULTIHOP = 94 pkg syscall (netbsd-arm), const EMUL_LINUX = 1 pkg syscall (netbsd-arm), const EMUL_LINUX32 = 5 pkg syscall (netbsd-arm), const EMUL_MAXID = 6 pkg syscall (netbsd-arm), const ENAMETOOLONG = 63 pkg syscall (netbsd-arm), const ENEEDAUTH = 81 pkg syscall (netbsd-arm), const ENETDOWN = 50 pkg syscall (netbsd-arm), const ENETRESET = 52 pkg syscall (netbsd-arm), const ENETUNREACH = 51 pkg syscall (netbsd-arm), const ENFILE = 23 pkg syscall (netbsd-arm), const ENOATTR = 93 pkg syscall (netbsd-arm), const ENOBUFS = 55 pkg syscall (netbsd-arm), const ENODATA = 89 pkg syscall (netbsd-arm), const ENODEV = 19 pkg syscall (netbsd-arm), const ENOEXEC = 8 pkg syscall (netbsd-arm), const ENOLCK = 77 pkg syscall (netbsd-arm), const ENOLINK = 95 pkg syscall (netbsd-arm), const ENOMEM = 12 pkg syscall (netbsd-arm), const ENOMSG = 83 pkg syscall (netbsd-arm), const ENOPROTOOPT = 42 pkg syscall (netbsd-arm), const ENOSPC = 28 pkg syscall (netbsd-arm), const ENOSR = 90 pkg syscall (netbsd-arm), const ENOSTR = 91 pkg syscall (netbsd-arm), const ENOSYS = 78 pkg syscall (netbsd-arm), const ENOTBLK = 15 pkg syscall (netbsd-arm), const ENOTCONN = 57 pkg syscall (netbsd-arm), const ENOTDIR = 20 pkg syscall (netbsd-arm), const ENOTEMPTY = 66 pkg syscall (netbsd-arm), const ENOTSOCK = 38 pkg syscall (netbsd-arm), const ENOTSUP = 86 pkg syscall (netbsd-arm), const ENOTTY = 25 pkg syscall (netbsd-arm), const ENXIO = 6 pkg syscall (netbsd-arm), const EOPNOTSUPP = 45 pkg syscall (netbsd-arm), const EOVERFLOW = 84 pkg syscall (netbsd-arm), const EPERM = 1 pkg syscall (netbsd-arm), const EPFNOSUPPORT = 46 pkg syscall (netbsd-arm), const EPIPE = 32 pkg syscall (netbsd-arm), const EPROCLIM = 67 pkg syscall (netbsd-arm), const EPROCUNAVAIL = 76 pkg syscall (netbsd-arm), const EPROGMISMATCH = 75 pkg syscall (netbsd-arm), const EPROGUNAVAIL = 74 pkg syscall (netbsd-arm), const EPROTO = 96 pkg syscall (netbsd-arm), const EPROTONOSUPPORT = 43 pkg syscall (netbsd-arm), const EPROTOTYPE = 41 pkg syscall (netbsd-arm), const ERANGE = 34 pkg syscall (netbsd-arm), const EREMOTE = 71 pkg syscall (netbsd-arm), const EROFS = 30 pkg syscall (netbsd-arm), const ERPCMISMATCH = 73 pkg syscall (netbsd-arm), const ESHUTDOWN = 58 pkg syscall (netbsd-arm), const ESOCKTNOSUPPORT = 44 pkg syscall (netbsd-arm), const ESPIPE = 29 pkg syscall (netbsd-arm), const ESRCH = 3 pkg syscall (netbsd-arm), const ESTALE = 70 pkg syscall (netbsd-arm), const ETHERCAP_JUMBO_MTU = 4 pkg syscall (netbsd-arm), const ETHERCAP_VLAN_HWTAGGING = 2 pkg syscall (netbsd-arm), const ETHERCAP_VLAN_MTU = 1 pkg syscall (netbsd-arm), const ETHERMIN = 46 pkg syscall (netbsd-arm), const ETHERMTU = 1500 pkg syscall (netbsd-arm), const ETHERMTU_JUMBO = 9000 pkg syscall (netbsd-arm), const ETHERTYPE_8023 = 4 pkg syscall (netbsd-arm), const ETHERTYPE_AARP = 33011 pkg syscall (netbsd-arm), const ETHERTYPE_ACCTON = 33680 pkg syscall (netbsd-arm), const ETHERTYPE_AEONIC = 32822 pkg syscall (netbsd-arm), const ETHERTYPE_ALPHA = 33098 pkg syscall (netbsd-arm), const ETHERTYPE_AMBER = 24584 pkg syscall (netbsd-arm), const ETHERTYPE_AMOEBA = 33093 pkg syscall (netbsd-arm), const ETHERTYPE_APOLLO = 33015 pkg syscall (netbsd-arm), const ETHERTYPE_APOLLODOMAIN = 32793 pkg syscall (netbsd-arm), const ETHERTYPE_APPLETALK = 32923 pkg syscall (netbsd-arm), const ETHERTYPE_APPLITEK = 32967 pkg syscall (netbsd-arm), const ETHERTYPE_ARGONAUT = 32826 pkg syscall (netbsd-arm), const ETHERTYPE_ARP = 2054 pkg syscall (netbsd-arm), const ETHERTYPE_AT = 32923 pkg syscall (netbsd-arm), const ETHERTYPE_ATALK = 32923 pkg syscall (netbsd-arm), const ETHERTYPE_ATOMIC = 34527 pkg syscall (netbsd-arm), const ETHERTYPE_ATT = 32873 pkg syscall (netbsd-arm), const ETHERTYPE_ATTSTANFORD = 32776 pkg syscall (netbsd-arm), const ETHERTYPE_AUTOPHON = 32874 pkg syscall (netbsd-arm), const ETHERTYPE_AXIS = 34902 pkg syscall (netbsd-arm), const ETHERTYPE_BCLOOP = 36867 pkg syscall (netbsd-arm), const ETHERTYPE_BOFL = 33026 pkg syscall (netbsd-arm), const ETHERTYPE_CABLETRON = 28724 pkg syscall (netbsd-arm), const ETHERTYPE_CHAOS = 2052 pkg syscall (netbsd-arm), const ETHERTYPE_COMDESIGN = 32876 pkg syscall (netbsd-arm), const ETHERTYPE_COMPUGRAPHIC = 32877 pkg syscall (netbsd-arm), const ETHERTYPE_COUNTERPOINT = 32866 pkg syscall (netbsd-arm), const ETHERTYPE_CRONUS = 32772 pkg syscall (netbsd-arm), const ETHERTYPE_CRONUSVLN = 32771 pkg syscall (netbsd-arm), const ETHERTYPE_DCA = 4660 pkg syscall (netbsd-arm), const ETHERTYPE_DDE = 32891 pkg syscall (netbsd-arm), const ETHERTYPE_DEBNI = 43690 pkg syscall (netbsd-arm), const ETHERTYPE_DECAM = 32840 pkg syscall (netbsd-arm), const ETHERTYPE_DECCUST = 24582 pkg syscall (netbsd-arm), const ETHERTYPE_DECDIAG = 24581 pkg syscall (netbsd-arm), const ETHERTYPE_DECDNS = 32828 pkg syscall (netbsd-arm), const ETHERTYPE_DECDTS = 32830 pkg syscall (netbsd-arm), const ETHERTYPE_DECEXPER = 24576 pkg syscall (netbsd-arm), const ETHERTYPE_DECLAST = 32833 pkg syscall (netbsd-arm), const ETHERTYPE_DECLTM = 32831 pkg syscall (netbsd-arm), const ETHERTYPE_DECMUMPS = 24585 pkg syscall (netbsd-arm), const ETHERTYPE_DECNETBIOS = 32832 pkg syscall (netbsd-arm), const ETHERTYPE_DELTACON = 34526 pkg syscall (netbsd-arm), const ETHERTYPE_DIDDLE = 17185 pkg syscall (netbsd-arm), const ETHERTYPE_DLOG1 = 1632 pkg syscall (netbsd-arm), const ETHERTYPE_DLOG2 = 1633 pkg syscall (netbsd-arm), const ETHERTYPE_DN = 24579 pkg syscall (netbsd-arm), const ETHERTYPE_DOGFIGHT = 6537 pkg syscall (netbsd-arm), const ETHERTYPE_DSMD = 32825 pkg syscall (netbsd-arm), const ETHERTYPE_ECMA = 2051 pkg syscall (netbsd-arm), const ETHERTYPE_ENCRYPT = 32829 pkg syscall (netbsd-arm), const ETHERTYPE_ES = 32861 pkg syscall (netbsd-arm), const ETHERTYPE_EXCELAN = 32784 pkg syscall (netbsd-arm), const ETHERTYPE_EXPERDATA = 32841 pkg syscall (netbsd-arm), const ETHERTYPE_FLIP = 33094 pkg syscall (netbsd-arm), const ETHERTYPE_FLOWCONTROL = 34824 pkg syscall (netbsd-arm), const ETHERTYPE_FRARP = 2056 pkg syscall (netbsd-arm), const ETHERTYPE_GENDYN = 32872 pkg syscall (netbsd-arm), const ETHERTYPE_HAYES = 33072 pkg syscall (netbsd-arm), const ETHERTYPE_HIPPI_FP = 33152 pkg syscall (netbsd-arm), const ETHERTYPE_HITACHI = 34848 pkg syscall (netbsd-arm), const ETHERTYPE_HP = 32773 pkg syscall (netbsd-arm), const ETHERTYPE_IEEEPUP = 2560 pkg syscall (netbsd-arm), const ETHERTYPE_IEEEPUPAT = 2561 pkg syscall (netbsd-arm), const ETHERTYPE_IMLBL = 19522 pkg syscall (netbsd-arm), const ETHERTYPE_IMLBLDIAG = 16972 pkg syscall (netbsd-arm), const ETHERTYPE_IP = 2048 pkg syscall (netbsd-arm), const ETHERTYPE_IPAS = 34668 pkg syscall (netbsd-arm), const ETHERTYPE_IPV6 = 34525 pkg syscall (netbsd-arm), const ETHERTYPE_IPX = 33079 pkg syscall (netbsd-arm), const ETHERTYPE_IPXNEW = 32823 pkg syscall (netbsd-arm), const ETHERTYPE_KALPANA = 34178 pkg syscall (netbsd-arm), const ETHERTYPE_LANBRIDGE = 32824 pkg syscall (netbsd-arm), const ETHERTYPE_LANPROBE = 34952 pkg syscall (netbsd-arm), const ETHERTYPE_LAT = 24580 pkg syscall (netbsd-arm), const ETHERTYPE_LBACK = 36864 pkg syscall (netbsd-arm), const ETHERTYPE_LITTLE = 32864 pkg syscall (netbsd-arm), const ETHERTYPE_LOGICRAFT = 33096 pkg syscall (netbsd-arm), const ETHERTYPE_LOOPBACK = 36864 pkg syscall (netbsd-arm), const ETHERTYPE_MATRA = 32890 pkg syscall (netbsd-arm), const ETHERTYPE_MAX = 65535 pkg syscall (netbsd-arm), const ETHERTYPE_MERIT = 32892 pkg syscall (netbsd-arm), const ETHERTYPE_MICP = 34618 pkg syscall (netbsd-arm), const ETHERTYPE_MOPDL = 24577 pkg syscall (netbsd-arm), const ETHERTYPE_MOPRC = 24578 pkg syscall (netbsd-arm), const ETHERTYPE_MOTOROLA = 33165 pkg syscall (netbsd-arm), const ETHERTYPE_MPLS = 34887 pkg syscall (netbsd-arm), const ETHERTYPE_MPLS_MCAST = 34888 pkg syscall (netbsd-arm), const ETHERTYPE_MUMPS = 33087 pkg syscall (netbsd-arm), const ETHERTYPE_NBPCC = 15364 pkg syscall (netbsd-arm), const ETHERTYPE_NBPCLAIM = 15369 pkg syscall (netbsd-arm), const ETHERTYPE_NBPCLREQ = 15365 pkg syscall (netbsd-arm), const ETHERTYPE_NBPCLRSP = 15366 pkg syscall (netbsd-arm), const ETHERTYPE_NBPCREQ = 15362 pkg syscall (netbsd-arm), const ETHERTYPE_NBPCRSP = 15363 pkg syscall (netbsd-arm), const ETHERTYPE_NBPDG = 15367 pkg syscall (netbsd-arm), const ETHERTYPE_NBPDGB = 15368 pkg syscall (netbsd-arm), const ETHERTYPE_NBPDLTE = 15370 pkg syscall (netbsd-arm), const ETHERTYPE_NBPRAR = 15372 pkg syscall (netbsd-arm), const ETHERTYPE_NBPRAS = 15371 pkg syscall (netbsd-arm), const ETHERTYPE_NBPRST = 15373 pkg syscall (netbsd-arm), const ETHERTYPE_NBPSCD = 15361 pkg syscall (netbsd-arm), const ETHERTYPE_NBPVCD = 15360 pkg syscall (netbsd-arm), const ETHERTYPE_NBS = 2050 pkg syscall (netbsd-arm), const ETHERTYPE_NCD = 33097 pkg syscall (netbsd-arm), const ETHERTYPE_NESTAR = 32774 pkg syscall (netbsd-arm), const ETHERTYPE_NETBEUI = 33169 pkg syscall (netbsd-arm), const ETHERTYPE_NOVELL = 33080 pkg syscall (netbsd-arm), const ETHERTYPE_NS = 1536 pkg syscall (netbsd-arm), const ETHERTYPE_NSAT = 1537 pkg syscall (netbsd-arm), const ETHERTYPE_NSCOMPAT = 2055 pkg syscall (netbsd-arm), const ETHERTYPE_NTRAILER = 16 pkg syscall (netbsd-arm), const ETHERTYPE_OS9 = 28679 pkg syscall (netbsd-arm), const ETHERTYPE_OS9NET = 28681 pkg syscall (netbsd-arm), const ETHERTYPE_PACER = 32966 pkg syscall (netbsd-arm), const ETHERTYPE_PAE = 34958 pkg syscall (netbsd-arm), const ETHERTYPE_PCS = 16962 pkg syscall (netbsd-arm), const ETHERTYPE_PLANNING = 32836 pkg syscall (netbsd-arm), const ETHERTYPE_PPP = 34827 pkg syscall (netbsd-arm), const ETHERTYPE_PPPOE = 34916 pkg syscall (netbsd-arm), const ETHERTYPE_PPPOEDISC = 34915 pkg syscall (netbsd-arm), const ETHERTYPE_PRIMENTS = 28721 pkg syscall (netbsd-arm), const ETHERTYPE_PUP = 512 pkg syscall (netbsd-arm), const ETHERTYPE_PUPAT = 512 pkg syscall (netbsd-arm), const ETHERTYPE_RACAL = 28720 pkg syscall (netbsd-arm), const ETHERTYPE_RATIONAL = 33104 pkg syscall (netbsd-arm), const ETHERTYPE_RAWFR = 25945 pkg syscall (netbsd-arm), const ETHERTYPE_RCL = 6549 pkg syscall (netbsd-arm), const ETHERTYPE_RDP = 34617 pkg syscall (netbsd-arm), const ETHERTYPE_RETIX = 33010 pkg syscall (netbsd-arm), const ETHERTYPE_REVARP = 32821 pkg syscall (netbsd-arm), const ETHERTYPE_SCA = 24583 pkg syscall (netbsd-arm), const ETHERTYPE_SECTRA = 34523 pkg syscall (netbsd-arm), const ETHERTYPE_SECUREDATA = 34669 pkg syscall (netbsd-arm), const ETHERTYPE_SGITW = 33150 pkg syscall (netbsd-arm), const ETHERTYPE_SG_BOUNCE = 32790 pkg syscall (netbsd-arm), const ETHERTYPE_SG_DIAG = 32787 pkg syscall (netbsd-arm), const ETHERTYPE_SG_NETGAMES = 32788 pkg syscall (netbsd-arm), const ETHERTYPE_SG_RESV = 32789 pkg syscall (netbsd-arm), const ETHERTYPE_SIMNET = 21000 pkg syscall (netbsd-arm), const ETHERTYPE_SLOWPROTOCOLS = 34825 pkg syscall (netbsd-arm), const ETHERTYPE_SNA = 32981 pkg syscall (netbsd-arm), const ETHERTYPE_SNMP = 33100 pkg syscall (netbsd-arm), const ETHERTYPE_SONIX = 64245 pkg syscall (netbsd-arm), const ETHERTYPE_SPIDER = 32927 pkg syscall (netbsd-arm), const ETHERTYPE_SPRITE = 1280 pkg syscall (netbsd-arm), const ETHERTYPE_STP = 33153 pkg syscall (netbsd-arm), const ETHERTYPE_TALARIS = 33067 pkg syscall (netbsd-arm), const ETHERTYPE_TALARISMC = 34091 pkg syscall (netbsd-arm), const ETHERTYPE_TCPCOMP = 34667 pkg syscall (netbsd-arm), const ETHERTYPE_TCPSM = 36866 pkg syscall (netbsd-arm), const ETHERTYPE_TEC = 33103 pkg syscall (netbsd-arm), const ETHERTYPE_TIGAN = 32815 pkg syscall (netbsd-arm), const ETHERTYPE_TRAIL = 4096 pkg syscall (netbsd-arm), const ETHERTYPE_TRANSETHER = 25944 pkg syscall (netbsd-arm), const ETHERTYPE_TYMSHARE = 32814 pkg syscall (netbsd-arm), const ETHERTYPE_UBBST = 28677 pkg syscall (netbsd-arm), const ETHERTYPE_UBDEBUG = 2304 pkg syscall (netbsd-arm), const ETHERTYPE_UBDIAGLOOP = 28674 pkg syscall (netbsd-arm), const ETHERTYPE_UBDL = 28672 pkg syscall (netbsd-arm), const ETHERTYPE_UBNIU = 28673 pkg syscall (netbsd-arm), const ETHERTYPE_UBNMC = 28675 pkg syscall (netbsd-arm), const ETHERTYPE_VALID = 5632 pkg syscall (netbsd-arm), const ETHERTYPE_VARIAN = 32989 pkg syscall (netbsd-arm), const ETHERTYPE_VAXELN = 32827 pkg syscall (netbsd-arm), const ETHERTYPE_VEECO = 32871 pkg syscall (netbsd-arm), const ETHERTYPE_VEXP = 32859 pkg syscall (netbsd-arm), const ETHERTYPE_VGLAB = 33073 pkg syscall (netbsd-arm), const ETHERTYPE_VINES = 2989 pkg syscall (netbsd-arm), const ETHERTYPE_VINESECHO = 2991 pkg syscall (netbsd-arm), const ETHERTYPE_VINESLOOP = 2990 pkg syscall (netbsd-arm), const ETHERTYPE_VITAL = 65280 pkg syscall (netbsd-arm), const ETHERTYPE_VLAN = 33024 pkg syscall (netbsd-arm), const ETHERTYPE_VLTLMAN = 32896 pkg syscall (netbsd-arm), const ETHERTYPE_VPROD = 32860 pkg syscall (netbsd-arm), const ETHERTYPE_VURESERVED = 33095 pkg syscall (netbsd-arm), const ETHERTYPE_WATERLOO = 33072 pkg syscall (netbsd-arm), const ETHERTYPE_WELLFLEET = 33027 pkg syscall (netbsd-arm), const ETHERTYPE_X25 = 2053 pkg syscall (netbsd-arm), const ETHERTYPE_X75 = 2049 pkg syscall (netbsd-arm), const ETHERTYPE_XNSSM = 36865 pkg syscall (netbsd-arm), const ETHERTYPE_XTP = 33149 pkg syscall (netbsd-arm), const ETHER_ADDR_LEN = 6 pkg syscall (netbsd-arm), const ETHER_CRC_LEN = 4 pkg syscall (netbsd-arm), const ETHER_CRC_POLY_BE = 79764918 pkg syscall (netbsd-arm), const ETHER_CRC_POLY_LE = 3988292384 pkg syscall (netbsd-arm), const ETHER_HDR_LEN = 14 pkg syscall (netbsd-arm), const ETHER_MAX_LEN = 1518 pkg syscall (netbsd-arm), const ETHER_MAX_LEN_JUMBO = 9018 pkg syscall (netbsd-arm), const ETHER_MIN_LEN = 64 pkg syscall (netbsd-arm), const ETHER_PPPOE_ENCAP_LEN = 8 pkg syscall (netbsd-arm), const ETHER_TYPE_LEN = 2 pkg syscall (netbsd-arm), const ETHER_VLAN_ENCAP_LEN = 4 pkg syscall (netbsd-arm), const ETIME = 92 pkg syscall (netbsd-arm), const ETIMEDOUT = 60 pkg syscall (netbsd-arm), const ETOOMANYREFS = 59 pkg syscall (netbsd-arm), const ETXTBSY = 26 pkg syscall (netbsd-arm), const EUSERS = 68 pkg syscall (netbsd-arm), const EVFILT_AIO = 2 pkg syscall (netbsd-arm), const EVFILT_PROC = 4 pkg syscall (netbsd-arm), const EVFILT_READ = 0 pkg syscall (netbsd-arm), const EVFILT_SIGNAL = 5 pkg syscall (netbsd-arm), const EVFILT_SYSCOUNT = 7 pkg syscall (netbsd-arm), const EVFILT_TIMER = 6 pkg syscall (netbsd-arm), const EVFILT_VNODE = 3 pkg syscall (netbsd-arm), const EVFILT_WRITE = 1 pkg syscall (netbsd-arm), const EV_ADD = 1 pkg syscall (netbsd-arm), const EV_CLEAR = 32 pkg syscall (netbsd-arm), const EV_DELETE = 2 pkg syscall (netbsd-arm), const EV_DISABLE = 8 pkg syscall (netbsd-arm), const EV_ENABLE = 4 pkg syscall (netbsd-arm), const EV_EOF = 32768 pkg syscall (netbsd-arm), const EV_ERROR = 16384 pkg syscall (netbsd-arm), const EV_FLAG1 = 8192 pkg syscall (netbsd-arm), const EV_ONESHOT = 16 pkg syscall (netbsd-arm), const EV_SYSFLAGS = 61440 pkg syscall (netbsd-arm), const EWOULDBLOCK = 35 pkg syscall (netbsd-arm), const EXDEV = 18 pkg syscall (netbsd-arm), const EXTA = 19200 pkg syscall (netbsd-arm), const EXTB = 38400 pkg syscall (netbsd-arm), const EXTPROC = 2048 pkg syscall (netbsd-arm), const FD_CLOEXEC = 1 pkg syscall (netbsd-arm), const FD_SETSIZE = 256 pkg syscall (netbsd-arm), const FLUSHO = 8388608 pkg syscall (netbsd-arm), const F_CLOSEM = 10 pkg syscall (netbsd-arm), const F_DUPFD = 0 pkg syscall (netbsd-arm), const F_DUPFD_CLOEXEC = 12 pkg syscall (netbsd-arm), const F_FSCTL = -2147483648 pkg syscall (netbsd-arm), const F_FSDIRMASK = 1879048192 pkg syscall (netbsd-arm), const F_FSIN = 268435456 pkg syscall (netbsd-arm), const F_FSINOUT = 805306368 pkg syscall (netbsd-arm), const F_FSOUT = 536870912 pkg syscall (netbsd-arm), const F_FSPRIV = 32768 pkg syscall (netbsd-arm), const F_FSVOID = 1073741824 pkg syscall (netbsd-arm), const F_GETFD = 1 pkg syscall (netbsd-arm), const F_GETFL = 3 pkg syscall (netbsd-arm), const F_GETLK = 7 pkg syscall (netbsd-arm), const F_GETNOSIGPIPE = 13 pkg syscall (netbsd-arm), const F_GETOWN = 5 pkg syscall (netbsd-arm), const F_MAXFD = 11 pkg syscall (netbsd-arm), const F_OK = 0 pkg syscall (netbsd-arm), const F_PARAM_MASK = 4095 pkg syscall (netbsd-arm), const F_PARAM_MAX = 4095 pkg syscall (netbsd-arm), const F_RDLCK = 1 pkg syscall (netbsd-arm), const F_SETFD = 2 pkg syscall (netbsd-arm), const F_SETFL = 4 pkg syscall (netbsd-arm), const F_SETLK = 8 pkg syscall (netbsd-arm), const F_SETLKW = 9 pkg syscall (netbsd-arm), const F_SETNOSIGPIPE = 14 pkg syscall (netbsd-arm), const F_SETOWN = 6 pkg syscall (netbsd-arm), const F_UNLCK = 2 pkg syscall (netbsd-arm), const F_WRLCK = 3 pkg syscall (netbsd-arm), const HUPCL = 16384 pkg syscall (netbsd-arm), const ICANON = 256 pkg syscall (netbsd-arm), const ICRNL = 256 pkg syscall (netbsd-arm), const IEXTEN = 1024 pkg syscall (netbsd-arm), const IFAN_ARRIVAL = 0 pkg syscall (netbsd-arm), const IFAN_DEPARTURE = 1 pkg syscall (netbsd-arm), const IFA_ROUTE = 1 pkg syscall (netbsd-arm), const IFF_ALLMULTI = 512 pkg syscall (netbsd-arm), const IFF_CANTCHANGE = 36690 pkg syscall (netbsd-arm), const IFF_DEBUG = 4 pkg syscall (netbsd-arm), const IFF_LINK0 = 4096 pkg syscall (netbsd-arm), const IFF_LINK1 = 8192 pkg syscall (netbsd-arm), const IFF_LINK2 = 16384 pkg syscall (netbsd-arm), const IFF_LOOPBACK = 8 pkg syscall (netbsd-arm), const IFF_MULTICAST = 32768 pkg syscall (netbsd-arm), const IFF_NOARP = 128 pkg syscall (netbsd-arm), const IFF_NOTRAILERS = 32 pkg syscall (netbsd-arm), const IFF_OACTIVE = 1024 pkg syscall (netbsd-arm), const IFF_POINTOPOINT = 16 pkg syscall (netbsd-arm), const IFF_PROMISC = 256 pkg syscall (netbsd-arm), const IFF_RUNNING = 64 pkg syscall (netbsd-arm), const IFF_SIMPLEX = 2048 pkg syscall (netbsd-arm), const IFNAMSIZ = 16 pkg syscall (netbsd-arm), const IFT_1822 = 2 pkg syscall (netbsd-arm), const IFT_A12MPPSWITCH = 130 pkg syscall (netbsd-arm), const IFT_AAL2 = 187 pkg syscall (netbsd-arm), const IFT_AAL5 = 49 pkg syscall (netbsd-arm), const IFT_ADSL = 94 pkg syscall (netbsd-arm), const IFT_AFLANE8023 = 59 pkg syscall (netbsd-arm), const IFT_AFLANE8025 = 60 pkg syscall (netbsd-arm), const IFT_ARAP = 88 pkg syscall (netbsd-arm), const IFT_ARCNET = 35 pkg syscall (netbsd-arm), const IFT_ARCNETPLUS = 36 pkg syscall (netbsd-arm), const IFT_ASYNC = 84 pkg syscall (netbsd-arm), const IFT_ATM = 37 pkg syscall (netbsd-arm), const IFT_ATMDXI = 105 pkg syscall (netbsd-arm), const IFT_ATMFUNI = 106 pkg syscall (netbsd-arm), const IFT_ATMIMA = 107 pkg syscall (netbsd-arm), const IFT_ATMLOGICAL = 80 pkg syscall (netbsd-arm), const IFT_ATMRADIO = 189 pkg syscall (netbsd-arm), const IFT_ATMSUBINTERFACE = 134 pkg syscall (netbsd-arm), const IFT_ATMVCIENDPT = 194 pkg syscall (netbsd-arm), const IFT_ATMVIRTUAL = 149 pkg syscall (netbsd-arm), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (netbsd-arm), const IFT_BRIDGE = 209 pkg syscall (netbsd-arm), const IFT_BSC = 83 pkg syscall (netbsd-arm), const IFT_CARP = 248 pkg syscall (netbsd-arm), const IFT_CCTEMUL = 61 pkg syscall (netbsd-arm), const IFT_CEPT = 19 pkg syscall (netbsd-arm), const IFT_CES = 133 pkg syscall (netbsd-arm), const IFT_CHANNEL = 70 pkg syscall (netbsd-arm), const IFT_CNR = 85 pkg syscall (netbsd-arm), const IFT_COFFEE = 132 pkg syscall (netbsd-arm), const IFT_COMPOSITELINK = 155 pkg syscall (netbsd-arm), const IFT_DCN = 141 pkg syscall (netbsd-arm), const IFT_DIGITALPOWERLINE = 138 pkg syscall (netbsd-arm), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (netbsd-arm), const IFT_DLSW = 74 pkg syscall (netbsd-arm), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (netbsd-arm), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (netbsd-arm), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (netbsd-arm), const IFT_DOCSCABLEUPSTREAMCHANNEL = 205 pkg syscall (netbsd-arm), const IFT_DS0 = 81 pkg syscall (netbsd-arm), const IFT_DS0BUNDLE = 82 pkg syscall (netbsd-arm), const IFT_DS1FDL = 170 pkg syscall (netbsd-arm), const IFT_DS3 = 30 pkg syscall (netbsd-arm), const IFT_DTM = 140 pkg syscall (netbsd-arm), const IFT_DVBASILN = 172 pkg syscall (netbsd-arm), const IFT_DVBASIOUT = 173 pkg syscall (netbsd-arm), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (netbsd-arm), const IFT_DVBRCCMACLAYER = 146 pkg syscall (netbsd-arm), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (netbsd-arm), const IFT_ECONET = 206 pkg syscall (netbsd-arm), const IFT_EON = 25 pkg syscall (netbsd-arm), const IFT_EPLRS = 87 pkg syscall (netbsd-arm), const IFT_ESCON = 73 pkg syscall (netbsd-arm), const IFT_ETHER = 6 pkg syscall (netbsd-arm), const IFT_FAITH = 242 pkg syscall (netbsd-arm), const IFT_FAST = 125 pkg syscall (netbsd-arm), const IFT_FASTETHER = 62 pkg syscall (netbsd-arm), const IFT_FASTETHERFX = 69 pkg syscall (netbsd-arm), const IFT_FDDI = 15 pkg syscall (netbsd-arm), const IFT_FIBRECHANNEL = 56 pkg syscall (netbsd-arm), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (netbsd-arm), const IFT_FRAMERELAYMPI = 92 pkg syscall (netbsd-arm), const IFT_FRDLCIENDPT = 193 pkg syscall (netbsd-arm), const IFT_FRELAY = 32 pkg syscall (netbsd-arm), const IFT_FRELAYDCE = 44 pkg syscall (netbsd-arm), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (netbsd-arm), const IFT_FRFORWARD = 158 pkg syscall (netbsd-arm), const IFT_G703AT2MB = 67 pkg syscall (netbsd-arm), const IFT_G703AT64K = 66 pkg syscall (netbsd-arm), const IFT_GIF = 240 pkg syscall (netbsd-arm), const IFT_GIGABITETHERNET = 117 pkg syscall (netbsd-arm), const IFT_GR303IDT = 178 pkg syscall (netbsd-arm), const IFT_GR303RDT = 177 pkg syscall (netbsd-arm), const IFT_H323GATEKEEPER = 164 pkg syscall (netbsd-arm), const IFT_H323PROXY = 165 pkg syscall (netbsd-arm), const IFT_HDH1822 = 3 pkg syscall (netbsd-arm), const IFT_HDLC = 118 pkg syscall (netbsd-arm), const IFT_HDSL2 = 168 pkg syscall (netbsd-arm), const IFT_HIPERLAN2 = 183 pkg syscall (netbsd-arm), const IFT_HIPPI = 47 pkg syscall (netbsd-arm), const IFT_HIPPIINTERFACE = 57 pkg syscall (netbsd-arm), const IFT_HOSTPAD = 90 pkg syscall (netbsd-arm), const IFT_HSSI = 46 pkg syscall (netbsd-arm), const IFT_HY = 14 pkg syscall (netbsd-arm), const IFT_IBM370PARCHAN = 72 pkg syscall (netbsd-arm), const IFT_IDSL = 154 pkg syscall (netbsd-arm), const IFT_IEEE1394 = 144 pkg syscall (netbsd-arm), const IFT_IEEE80211 = 71 pkg syscall (netbsd-arm), const IFT_IEEE80212 = 55 pkg syscall (netbsd-arm), const IFT_IEEE8023ADLAG = 161 pkg syscall (netbsd-arm), const IFT_IFGSN = 145 pkg syscall (netbsd-arm), const IFT_IMT = 190 pkg syscall (netbsd-arm), const IFT_INFINIBAND = 199 pkg syscall (netbsd-arm), const IFT_INTERLEAVE = 124 pkg syscall (netbsd-arm), const IFT_IP = 126 pkg syscall (netbsd-arm), const IFT_IPFORWARD = 142 pkg syscall (netbsd-arm), const IFT_IPOVERATM = 114 pkg syscall (netbsd-arm), const IFT_IPOVERCDLC = 109 pkg syscall (netbsd-arm), const IFT_IPOVERCLAW = 110 pkg syscall (netbsd-arm), const IFT_IPSWITCH = 78 pkg syscall (netbsd-arm), const IFT_ISDN = 63 pkg syscall (netbsd-arm), const IFT_ISDNBASIC = 20 pkg syscall (netbsd-arm), const IFT_ISDNPRIMARY = 21 pkg syscall (netbsd-arm), const IFT_ISDNS = 75 pkg syscall (netbsd-arm), const IFT_ISDNU = 76 pkg syscall (netbsd-arm), const IFT_ISO88022LLC = 41 pkg syscall (netbsd-arm), const IFT_ISO88023 = 7 pkg syscall (netbsd-arm), const IFT_ISO88024 = 8 pkg syscall (netbsd-arm), const IFT_ISO88025 = 9 pkg syscall (netbsd-arm), const IFT_ISO88025CRFPINT = 98 pkg syscall (netbsd-arm), const IFT_ISO88025DTR = 86 pkg syscall (netbsd-arm), const IFT_ISO88025FIBER = 115 pkg syscall (netbsd-arm), const IFT_ISO88026 = 10 pkg syscall (netbsd-arm), const IFT_ISUP = 179 pkg syscall (netbsd-arm), const IFT_L2VLAN = 135 pkg syscall (netbsd-arm), const IFT_L3IPVLAN = 136 pkg syscall (netbsd-arm), const IFT_L3IPXVLAN = 137 pkg syscall (netbsd-arm), const IFT_LAPB = 16 pkg syscall (netbsd-arm), const IFT_LAPD = 77 pkg syscall (netbsd-arm), const IFT_LAPF = 119 pkg syscall (netbsd-arm), const IFT_LINEGROUP = 210 pkg syscall (netbsd-arm), const IFT_LOCALTALK = 42 pkg syscall (netbsd-arm), const IFT_LOOP = 24 pkg syscall (netbsd-arm), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (netbsd-arm), const IFT_MFSIGLINK = 167 pkg syscall (netbsd-arm), const IFT_MIOX25 = 38 pkg syscall (netbsd-arm), const IFT_MODEM = 48 pkg syscall (netbsd-arm), const IFT_MPC = 113 pkg syscall (netbsd-arm), const IFT_MPLS = 166 pkg syscall (netbsd-arm), const IFT_MPLSTUNNEL = 150 pkg syscall (netbsd-arm), const IFT_MSDSL = 143 pkg syscall (netbsd-arm), const IFT_MVL = 191 pkg syscall (netbsd-arm), const IFT_MYRINET = 99 pkg syscall (netbsd-arm), const IFT_NFAS = 175 pkg syscall (netbsd-arm), const IFT_NSIP = 27 pkg syscall (netbsd-arm), const IFT_OPTICALCHANNEL = 195 pkg syscall (netbsd-arm), const IFT_OPTICALTRANSPORT = 196 pkg syscall (netbsd-arm), const IFT_OTHER = 1 pkg syscall (netbsd-arm), const IFT_P10 = 12 pkg syscall (netbsd-arm), const IFT_P80 = 13 pkg syscall (netbsd-arm), const IFT_PARA = 34 pkg syscall (netbsd-arm), const IFT_PFLOG = 245 pkg syscall (netbsd-arm), const IFT_PFSYNC = 246 pkg syscall (netbsd-arm), const IFT_PLC = 174 pkg syscall (netbsd-arm), const IFT_PON155 = 207 pkg syscall (netbsd-arm), const IFT_PON622 = 208 pkg syscall (netbsd-arm), const IFT_POS = 171 pkg syscall (netbsd-arm), const IFT_PPP = 23 pkg syscall (netbsd-arm), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (netbsd-arm), const IFT_PROPATM = 197 pkg syscall (netbsd-arm), const IFT_PROPBWAP2MP = 184 pkg syscall (netbsd-arm), const IFT_PROPCNLS = 89 pkg syscall (netbsd-arm), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (netbsd-arm), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (netbsd-arm), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (netbsd-arm), const IFT_PROPMUX = 54 pkg syscall (netbsd-arm), const IFT_PROPVIRTUAL = 53 pkg syscall (netbsd-arm), const IFT_PROPWIRELESSP2P = 157 pkg syscall (netbsd-arm), const IFT_PTPSERIAL = 22 pkg syscall (netbsd-arm), const IFT_PVC = 241 pkg syscall (netbsd-arm), const IFT_Q2931 = 201 pkg syscall (netbsd-arm), const IFT_QLLC = 68 pkg syscall (netbsd-arm), const IFT_RADIOMAC = 188 pkg syscall (netbsd-arm), const IFT_RADSL = 95 pkg syscall (netbsd-arm), const IFT_REACHDSL = 192 pkg syscall (netbsd-arm), const IFT_RFC1483 = 159 pkg syscall (netbsd-arm), const IFT_RS232 = 33 pkg syscall (netbsd-arm), const IFT_RSRB = 79 pkg syscall (netbsd-arm), const IFT_SDLC = 17 pkg syscall (netbsd-arm), const IFT_SDSL = 96 pkg syscall (netbsd-arm), const IFT_SHDSL = 169 pkg syscall (netbsd-arm), const IFT_SIP = 31 pkg syscall (netbsd-arm), const IFT_SIPSIG = 204 pkg syscall (netbsd-arm), const IFT_SIPTG = 203 pkg syscall (netbsd-arm), const IFT_SLIP = 28 pkg syscall (netbsd-arm), const IFT_SMDSDXI = 43 pkg syscall (netbsd-arm), const IFT_SMDSICIP = 52 pkg syscall (netbsd-arm), const IFT_SONET = 39 pkg syscall (netbsd-arm), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (netbsd-arm), const IFT_SONETPATH = 50 pkg syscall (netbsd-arm), const IFT_SONETVT = 51 pkg syscall (netbsd-arm), const IFT_SRP = 151 pkg syscall (netbsd-arm), const IFT_SS7SIGLINK = 156 pkg syscall (netbsd-arm), const IFT_STACKTOSTACK = 111 pkg syscall (netbsd-arm), const IFT_STARLAN = 11 pkg syscall (netbsd-arm), const IFT_STF = 215 pkg syscall (netbsd-arm), const IFT_T1 = 18 pkg syscall (netbsd-arm), const IFT_TDLC = 116 pkg syscall (netbsd-arm), const IFT_TELINK = 200 pkg syscall (netbsd-arm), const IFT_TERMPAD = 91 pkg syscall (netbsd-arm), const IFT_TR008 = 176 pkg syscall (netbsd-arm), const IFT_TRANSPHDLC = 123 pkg syscall (netbsd-arm), const IFT_TUNNEL = 131 pkg syscall (netbsd-arm), const IFT_ULTRA = 29 pkg syscall (netbsd-arm), const IFT_USB = 160 pkg syscall (netbsd-arm), const IFT_V11 = 64 pkg syscall (netbsd-arm), const IFT_V35 = 45 pkg syscall (netbsd-arm), const IFT_V36 = 65 pkg syscall (netbsd-arm), const IFT_V37 = 120 pkg syscall (netbsd-arm), const IFT_VDSL = 97 pkg syscall (netbsd-arm), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (netbsd-arm), const IFT_VIRTUALTG = 202 pkg syscall (netbsd-arm), const IFT_VOICEDID = 213 pkg syscall (netbsd-arm), const IFT_VOICEEM = 100 pkg syscall (netbsd-arm), const IFT_VOICEEMFGD = 211 pkg syscall (netbsd-arm), const IFT_VOICEENCAP = 103 pkg syscall (netbsd-arm), const IFT_VOICEFGDEANA = 212 pkg syscall (netbsd-arm), const IFT_VOICEFXO = 101 pkg syscall (netbsd-arm), const IFT_VOICEFXS = 102 pkg syscall (netbsd-arm), const IFT_VOICEOVERATM = 152 pkg syscall (netbsd-arm), const IFT_VOICEOVERCABLE = 198 pkg syscall (netbsd-arm), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (netbsd-arm), const IFT_VOICEOVERIP = 104 pkg syscall (netbsd-arm), const IFT_X213 = 93 pkg syscall (netbsd-arm), const IFT_X25 = 5 pkg syscall (netbsd-arm), const IFT_X25DDN = 4 pkg syscall (netbsd-arm), const IFT_X25HUNTGROUP = 122 pkg syscall (netbsd-arm), const IFT_X25MLP = 121 pkg syscall (netbsd-arm), const IFT_X25PLE = 40 pkg syscall (netbsd-arm), const IFT_XETHER = 26 pkg syscall (netbsd-arm), const IGNBRK = 1 pkg syscall (netbsd-arm), const IGNCR = 128 pkg syscall (netbsd-arm), const IGNPAR = 4 pkg syscall (netbsd-arm), const IMAXBEL = 8192 pkg syscall (netbsd-arm), const INLCR = 64 pkg syscall (netbsd-arm), const INPCK = 16 pkg syscall (netbsd-arm), const IN_CLASSA_HOST = 16777215 pkg syscall (netbsd-arm), const IN_CLASSA_MAX = 128 pkg syscall (netbsd-arm), const IN_CLASSA_NET = 4278190080 pkg syscall (netbsd-arm), const IN_CLASSA_NSHIFT = 24 pkg syscall (netbsd-arm), const IN_CLASSB_HOST = 65535 pkg syscall (netbsd-arm), const IN_CLASSB_MAX = 65536 pkg syscall (netbsd-arm), const IN_CLASSB_NET = 4294901760 pkg syscall (netbsd-arm), const IN_CLASSB_NSHIFT = 16 pkg syscall (netbsd-arm), const IN_CLASSC_HOST = 255 pkg syscall (netbsd-arm), const IN_CLASSC_NET = 4294967040 pkg syscall (netbsd-arm), const IN_CLASSC_NSHIFT = 8 pkg syscall (netbsd-arm), const IN_CLASSD_HOST = 268435455 pkg syscall (netbsd-arm), const IN_CLASSD_NET = 4026531840 pkg syscall (netbsd-arm), const IN_CLASSD_NSHIFT = 28 pkg syscall (netbsd-arm), const IN_LOOPBACKNET = 127 pkg syscall (netbsd-arm), const IPPROTO_AH = 51 pkg syscall (netbsd-arm), const IPPROTO_CARP = 112 pkg syscall (netbsd-arm), const IPPROTO_DONE = 257 pkg syscall (netbsd-arm), const IPPROTO_DSTOPTS = 60 pkg syscall (netbsd-arm), const IPPROTO_EGP = 8 pkg syscall (netbsd-arm), const IPPROTO_ENCAP = 98 pkg syscall (netbsd-arm), const IPPROTO_EON = 80 pkg syscall (netbsd-arm), const IPPROTO_ESP = 50 pkg syscall (netbsd-arm), const IPPROTO_ETHERIP = 97 pkg syscall (netbsd-arm), const IPPROTO_FRAGMENT = 44 pkg syscall (netbsd-arm), const IPPROTO_GGP = 3 pkg syscall (netbsd-arm), const IPPROTO_GRE = 47 pkg syscall (netbsd-arm), const IPPROTO_HOPOPTS = 0 pkg syscall (netbsd-arm), const IPPROTO_ICMP = 1 pkg syscall (netbsd-arm), const IPPROTO_ICMPV6 = 58 pkg syscall (netbsd-arm), const IPPROTO_IDP = 22 pkg syscall (netbsd-arm), const IPPROTO_IGMP = 2 pkg syscall (netbsd-arm), const IPPROTO_IPCOMP = 108 pkg syscall (netbsd-arm), const IPPROTO_IPIP = 4 pkg syscall (netbsd-arm), const IPPROTO_IPV4 = 4 pkg syscall (netbsd-arm), const IPPROTO_IPV6_ICMP = 58 pkg syscall (netbsd-arm), const IPPROTO_MAX = 256 pkg syscall (netbsd-arm), const IPPROTO_MAXID = 52 pkg syscall (netbsd-arm), const IPPROTO_MOBILE = 55 pkg syscall (netbsd-arm), const IPPROTO_NONE = 59 pkg syscall (netbsd-arm), const IPPROTO_PFSYNC = 240 pkg syscall (netbsd-arm), const IPPROTO_PIM = 103 pkg syscall (netbsd-arm), const IPPROTO_PUP = 12 pkg syscall (netbsd-arm), const IPPROTO_RAW = 255 pkg syscall (netbsd-arm), const IPPROTO_ROUTING = 43 pkg syscall (netbsd-arm), const IPPROTO_RSVP = 46 pkg syscall (netbsd-arm), const IPPROTO_TP = 29 pkg syscall (netbsd-arm), const IPPROTO_VRRP = 112 pkg syscall (netbsd-arm), const IPV6_CHECKSUM = 26 pkg syscall (netbsd-arm), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (netbsd-arm), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (netbsd-arm), const IPV6_DEFHLIM = 64 pkg syscall (netbsd-arm), const IPV6_DONTFRAG = 62 pkg syscall (netbsd-arm), const IPV6_DSTOPTS = 50 pkg syscall (netbsd-arm), const IPV6_FAITH = 29 pkg syscall (netbsd-arm), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (netbsd-arm), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (netbsd-arm), const IPV6_FRAGTTL = 120 pkg syscall (netbsd-arm), const IPV6_HLIMDEC = 1 pkg syscall (netbsd-arm), const IPV6_HOPLIMIT = 47 pkg syscall (netbsd-arm), const IPV6_HOPOPTS = 49 pkg syscall (netbsd-arm), const IPV6_IPSEC_POLICY = 28 pkg syscall (netbsd-arm), const IPV6_JOIN_GROUP = 12 pkg syscall (netbsd-arm), const IPV6_LEAVE_GROUP = 13 pkg syscall (netbsd-arm), const IPV6_MAXHLIM = 255 pkg syscall (netbsd-arm), const IPV6_MAXPACKET = 65535 pkg syscall (netbsd-arm), const IPV6_MMTU = 1280 pkg syscall (netbsd-arm), const IPV6_MULTICAST_HOPS = 10 pkg syscall (netbsd-arm), const IPV6_MULTICAST_IF = 9 pkg syscall (netbsd-arm), const IPV6_MULTICAST_LOOP = 11 pkg syscall (netbsd-arm), const IPV6_NEXTHOP = 48 pkg syscall (netbsd-arm), const IPV6_PATHMTU = 44 pkg syscall (netbsd-arm), const IPV6_PKTINFO = 46 pkg syscall (netbsd-arm), const IPV6_PORTRANGE = 14 pkg syscall (netbsd-arm), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (netbsd-arm), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (netbsd-arm), const IPV6_PORTRANGE_LOW = 2 pkg syscall (netbsd-arm), const IPV6_RECVDSTOPTS = 40 pkg syscall (netbsd-arm), const IPV6_RECVHOPLIMIT = 37 pkg syscall (netbsd-arm), const IPV6_RECVHOPOPTS = 39 pkg syscall (netbsd-arm), const IPV6_RECVPATHMTU = 43 pkg syscall (netbsd-arm), const IPV6_RECVPKTINFO = 36 pkg syscall (netbsd-arm), const IPV6_RECVRTHDR = 38 pkg syscall (netbsd-arm), const IPV6_RECVTCLASS = 57 pkg syscall (netbsd-arm), const IPV6_RTHDR = 51 pkg syscall (netbsd-arm), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (netbsd-arm), const IPV6_RTHDR_LOOSE = 0 pkg syscall (netbsd-arm), const IPV6_RTHDR_STRICT = 1 pkg syscall (netbsd-arm), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (netbsd-arm), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (netbsd-arm), const IPV6_TCLASS = 61 pkg syscall (netbsd-arm), const IPV6_UNICAST_HOPS = 4 pkg syscall (netbsd-arm), const IPV6_USE_MIN_MTU = 42 pkg syscall (netbsd-arm), const IPV6_V6ONLY = 27 pkg syscall (netbsd-arm), const IPV6_VERSION = 96 pkg syscall (netbsd-arm), const IPV6_VERSION_MASK = 240 pkg syscall (netbsd-arm), const IP_ADD_MEMBERSHIP = 12 pkg syscall (netbsd-arm), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (netbsd-arm), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (netbsd-arm), const IP_DF = 16384 pkg syscall (netbsd-arm), const IP_DROP_MEMBERSHIP = 13 pkg syscall (netbsd-arm), const IP_EF = 32768 pkg syscall (netbsd-arm), const IP_ERRORMTU = 21 pkg syscall (netbsd-arm), const IP_HDRINCL = 2 pkg syscall (netbsd-arm), const IP_IPSEC_POLICY = 22 pkg syscall (netbsd-arm), const IP_MAXPACKET = 65535 pkg syscall (netbsd-arm), const IP_MAX_MEMBERSHIPS = 20 pkg syscall (netbsd-arm), const IP_MF = 8192 pkg syscall (netbsd-arm), const IP_MINFRAGSIZE = 69 pkg syscall (netbsd-arm), const IP_MINTTL = 24 pkg syscall (netbsd-arm), const IP_MSS = 576 pkg syscall (netbsd-arm), const IP_MULTICAST_IF = 9 pkg syscall (netbsd-arm), const IP_MULTICAST_LOOP = 11 pkg syscall (netbsd-arm), const IP_MULTICAST_TTL = 10 pkg syscall (netbsd-arm), const IP_OFFMASK = 8191 pkg syscall (netbsd-arm), const IP_OPTIONS = 1 pkg syscall (netbsd-arm), const IP_PORTRANGE = 19 pkg syscall (netbsd-arm), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (netbsd-arm), const IP_PORTRANGE_HIGH = 1 pkg syscall (netbsd-arm), const IP_PORTRANGE_LOW = 2 pkg syscall (netbsd-arm), const IP_RECVDSTADDR = 7 pkg syscall (netbsd-arm), const IP_RECVIF = 20 pkg syscall (netbsd-arm), const IP_RECVOPTS = 5 pkg syscall (netbsd-arm), const IP_RECVRETOPTS = 6 pkg syscall (netbsd-arm), const IP_RECVTTL = 23 pkg syscall (netbsd-arm), const IP_RETOPTS = 8 pkg syscall (netbsd-arm), const IP_RF = 32768 pkg syscall (netbsd-arm), const IP_TOS = 3 pkg syscall (netbsd-arm), const IP_TTL = 4 pkg syscall (netbsd-arm), const ISIG = 128 pkg syscall (netbsd-arm), const ISTRIP = 32 pkg syscall (netbsd-arm), const IXANY = 2048 pkg syscall (netbsd-arm), const IXOFF = 1024 pkg syscall (netbsd-arm), const IXON = 512 pkg syscall (netbsd-arm), const ImplementsGetwd = false pkg syscall (netbsd-arm), const LOCK_EX = 2 pkg syscall (netbsd-arm), const LOCK_NB = 4 pkg syscall (netbsd-arm), const LOCK_SH = 1 pkg syscall (netbsd-arm), const LOCK_UN = 8 pkg syscall (netbsd-arm), const MSG_BCAST = 256 pkg syscall (netbsd-arm), const MSG_CMSG_CLOEXEC = 2048 pkg syscall (netbsd-arm), const MSG_CONTROLMBUF = 33554432 pkg syscall (netbsd-arm), const MSG_CTRUNC = 32 pkg syscall (netbsd-arm), const MSG_DONTROUTE = 4 pkg syscall (netbsd-arm), const MSG_DONTWAIT = 128 pkg syscall (netbsd-arm), const MSG_EOR = 8 pkg syscall (netbsd-arm), const MSG_IOVUSRSPACE = 67108864 pkg syscall (netbsd-arm), const MSG_LENUSRSPACE = 134217728 pkg syscall (netbsd-arm), const MSG_MCAST = 512 pkg syscall (netbsd-arm), const MSG_NAMEMBUF = 16777216 pkg syscall (netbsd-arm), const MSG_NBIO = 4096 pkg syscall (netbsd-arm), const MSG_NOSIGNAL = 1024 pkg syscall (netbsd-arm), const MSG_OOB = 1 pkg syscall (netbsd-arm), const MSG_PEEK = 2 pkg syscall (netbsd-arm), const MSG_TRUNC = 16 pkg syscall (netbsd-arm), const MSG_USERFLAGS = 16777215 pkg syscall (netbsd-arm), const MSG_WAITALL = 64 pkg syscall (netbsd-arm), const NAME_MAX = 511 pkg syscall (netbsd-arm), const NET_RT_DUMP = 1 pkg syscall (netbsd-arm), const NET_RT_FLAGS = 2 pkg syscall (netbsd-arm), const NET_RT_IFLIST = 5 pkg syscall (netbsd-arm), const NET_RT_MAXID = 6 pkg syscall (netbsd-arm), const NET_RT_OIFLIST = 4 pkg syscall (netbsd-arm), const NET_RT_OOIFLIST = 3 pkg syscall (netbsd-arm), const NOFLSH = 2147483648 pkg syscall (netbsd-arm), const NOTE_ATTRIB = 8 pkg syscall (netbsd-arm), const NOTE_CHILD = 4 pkg syscall (netbsd-arm), const NOTE_DELETE = 1 pkg syscall (netbsd-arm), const NOTE_EXEC = 536870912 pkg syscall (netbsd-arm), const NOTE_EXIT = 2147483648 pkg syscall (netbsd-arm), const NOTE_EXTEND = 4 pkg syscall (netbsd-arm), const NOTE_FORK = 1073741824 pkg syscall (netbsd-arm), const NOTE_LINK = 16 pkg syscall (netbsd-arm), const NOTE_LOWAT = 1 pkg syscall (netbsd-arm), const NOTE_PCTRLMASK = 4026531840 pkg syscall (netbsd-arm), const NOTE_PDATAMASK = 1048575 pkg syscall (netbsd-arm), const NOTE_RENAME = 32 pkg syscall (netbsd-arm), const NOTE_REVOKE = 64 pkg syscall (netbsd-arm), const NOTE_TRACK = 1 pkg syscall (netbsd-arm), const NOTE_TRACKERR = 2 pkg syscall (netbsd-arm), const NOTE_WRITE = 2 pkg syscall (netbsd-arm), const OCRNL = 16 pkg syscall (netbsd-arm), const OFIOGETBMAP = 3221513850 pkg syscall (netbsd-arm), const ONLCR = 2 pkg syscall (netbsd-arm), const ONLRET = 64 pkg syscall (netbsd-arm), const ONOCR = 32 pkg syscall (netbsd-arm), const ONOEOT = 8 pkg syscall (netbsd-arm), const OPOST = 1 pkg syscall (netbsd-arm), const O_ACCMODE = 3 pkg syscall (netbsd-arm), const O_ALT_IO = 262144 pkg syscall (netbsd-arm), const O_APPEND = 8 pkg syscall (netbsd-arm), const O_ASYNC = 64 pkg syscall (netbsd-arm), const O_CLOEXEC = 4194304 pkg syscall (netbsd-arm), const O_CREAT = 512 pkg syscall (netbsd-arm), const O_DIRECT = 524288 pkg syscall (netbsd-arm), const O_DIRECTORY = 2097152 pkg syscall (netbsd-arm), const O_DSYNC = 65536 pkg syscall (netbsd-arm), const O_EXCL = 2048 pkg syscall (netbsd-arm), const O_EXLOCK = 32 pkg syscall (netbsd-arm), const O_FSYNC = 128 pkg syscall (netbsd-arm), const O_NDELAY = 4 pkg syscall (netbsd-arm), const O_NOCTTY = 32768 pkg syscall (netbsd-arm), const O_NOFOLLOW = 256 pkg syscall (netbsd-arm), const O_NONBLOCK = 4 pkg syscall (netbsd-arm), const O_NOSIGPIPE = 16777216 pkg syscall (netbsd-arm), const O_RSYNC = 131072 pkg syscall (netbsd-arm), const O_SHLOCK = 16 pkg syscall (netbsd-arm), const O_SYNC = 128 pkg syscall (netbsd-arm), const O_TRUNC = 1024 pkg syscall (netbsd-arm), const PARENB = 4096 pkg syscall (netbsd-arm), const PARMRK = 8 pkg syscall (netbsd-arm), const PARODD = 8192 pkg syscall (netbsd-arm), const PENDIN = 536870912 pkg syscall (netbsd-arm), const PRI_IOFLUSH = 124 pkg syscall (netbsd-arm), const PTRACE_CONT = 7 pkg syscall (netbsd-arm), const PTRACE_KILL = 8 pkg syscall (netbsd-arm), const PTRACE_TRACEME = 0 pkg syscall (netbsd-arm), const RLIMIT_AS = 10 pkg syscall (netbsd-arm), const RLIMIT_CORE = 4 pkg syscall (netbsd-arm), const RLIMIT_CPU = 0 pkg syscall (netbsd-arm), const RLIMIT_DATA = 2 pkg syscall (netbsd-arm), const RLIMIT_FSIZE = 1 pkg syscall (netbsd-arm), const RLIMIT_NOFILE = 8 pkg syscall (netbsd-arm), const RLIMIT_STACK = 3 pkg syscall (netbsd-arm), const RLIM_INFINITY = 9223372036854775807 pkg syscall (netbsd-arm), const RTAX_AUTHOR = 6 pkg syscall (netbsd-arm), const RTAX_BRD = 7 pkg syscall (netbsd-arm), const RTAX_DST = 0 pkg syscall (netbsd-arm), const RTAX_GATEWAY = 1 pkg syscall (netbsd-arm), const RTAX_GENMASK = 3 pkg syscall (netbsd-arm), const RTAX_IFA = 5 pkg syscall (netbsd-arm), const RTAX_IFP = 4 pkg syscall (netbsd-arm), const RTAX_MAX = 9 pkg syscall (netbsd-arm), const RTAX_NETMASK = 2 pkg syscall (netbsd-arm), const RTAX_TAG = 8 pkg syscall (netbsd-arm), const RTA_AUTHOR = 64 pkg syscall (netbsd-arm), const RTA_BRD = 128 pkg syscall (netbsd-arm), const RTA_DST = 1 pkg syscall (netbsd-arm), const RTA_GATEWAY = 2 pkg syscall (netbsd-arm), const RTA_GENMASK = 8 pkg syscall (netbsd-arm), const RTA_IFA = 32 pkg syscall (netbsd-arm), const RTA_IFP = 16 pkg syscall (netbsd-arm), const RTA_NETMASK = 4 pkg syscall (netbsd-arm), const RTA_TAG = 256 pkg syscall (netbsd-arm), const RTF_ANNOUNCE = 131072 pkg syscall (netbsd-arm), const RTF_BLACKHOLE = 4096 pkg syscall (netbsd-arm), const RTF_CLONED = 8192 pkg syscall (netbsd-arm), const RTF_CLONING = 256 pkg syscall (netbsd-arm), const RTF_DONE = 64 pkg syscall (netbsd-arm), const RTF_DYNAMIC = 16 pkg syscall (netbsd-arm), const RTF_GATEWAY = 2 pkg syscall (netbsd-arm), const RTF_HOST = 4 pkg syscall (netbsd-arm), const RTF_LLINFO = 1024 pkg syscall (netbsd-arm), const RTF_MASK = 128 pkg syscall (netbsd-arm), const RTF_MODIFIED = 32 pkg syscall (netbsd-arm), const RTF_PROTO1 = 32768 pkg syscall (netbsd-arm), const RTF_PROTO2 = 16384 pkg syscall (netbsd-arm), const RTF_REJECT = 8 pkg syscall (netbsd-arm), const RTF_SRC = 65536 pkg syscall (netbsd-arm), const RTF_STATIC = 2048 pkg syscall (netbsd-arm), const RTF_UP = 1 pkg syscall (netbsd-arm), const RTF_XRESOLVE = 512 pkg syscall (netbsd-arm), const RTM_ADD = 1 pkg syscall (netbsd-arm), const RTM_CHANGE = 3 pkg syscall (netbsd-arm), const RTM_CHGADDR = 21 pkg syscall (netbsd-arm), const RTM_DELADDR = 13 pkg syscall (netbsd-arm), const RTM_DELETE = 2 pkg syscall (netbsd-arm), const RTM_GET = 4 pkg syscall (netbsd-arm), const RTM_IEEE80211 = 17 pkg syscall (netbsd-arm), const RTM_IFANNOUNCE = 16 pkg syscall (netbsd-arm), const RTM_IFINFO = 20 pkg syscall (netbsd-arm), const RTM_LLINFO_UPD = 19 pkg syscall (netbsd-arm), const RTM_LOCK = 8 pkg syscall (netbsd-arm), const RTM_LOSING = 5 pkg syscall (netbsd-arm), const RTM_MISS = 7 pkg syscall (netbsd-arm), const RTM_NEWADDR = 12 pkg syscall (netbsd-arm), const RTM_OIFINFO = 15 pkg syscall (netbsd-arm), const RTM_OLDADD = 9 pkg syscall (netbsd-arm), const RTM_OLDDEL = 10 pkg syscall (netbsd-arm), const RTM_OOIFINFO = 14 pkg syscall (netbsd-arm), const RTM_REDIRECT = 6 pkg syscall (netbsd-arm), const RTM_RESOLVE = 11 pkg syscall (netbsd-arm), const RTM_RTTUNIT = 1000000 pkg syscall (netbsd-arm), const RTM_SETGATE = 18 pkg syscall (netbsd-arm), const RTM_VERSION = 4 pkg syscall (netbsd-arm), const RTV_EXPIRE = 4 pkg syscall (netbsd-arm), const RTV_HOPCOUNT = 2 pkg syscall (netbsd-arm), const RTV_MTU = 1 pkg syscall (netbsd-arm), const RTV_RPIPE = 8 pkg syscall (netbsd-arm), const RTV_RTT = 64 pkg syscall (netbsd-arm), const RTV_RTTVAR = 128 pkg syscall (netbsd-arm), const RTV_SPIPE = 16 pkg syscall (netbsd-arm), const RTV_SSTHRESH = 32 pkg syscall (netbsd-arm), const RUSAGE_CHILDREN = -1 pkg syscall (netbsd-arm), const RUSAGE_SELF = 0 pkg syscall (netbsd-arm), const SCM_CREDS = 4 pkg syscall (netbsd-arm), const SCM_RIGHTS = 1 pkg syscall (netbsd-arm), const SCM_TIMESTAMP = 8 pkg syscall (netbsd-arm), const SIGBUS = 10 pkg syscall (netbsd-arm), const SIGCHLD = 20 pkg syscall (netbsd-arm), const SIGCONT = 19 pkg syscall (netbsd-arm), const SIGEMT = 7 pkg syscall (netbsd-arm), const SIGINFO = 29 pkg syscall (netbsd-arm), const SIGIO = 23 pkg syscall (netbsd-arm), const SIGIOT = 6 pkg syscall (netbsd-arm), const SIGPROF = 27 pkg syscall (netbsd-arm), const SIGPWR = 32 pkg syscall (netbsd-arm), const SIGSTOP = 17 pkg syscall (netbsd-arm), const SIGSYS = 12 pkg syscall (netbsd-arm), const SIGTSTP = 18 pkg syscall (netbsd-arm), const SIGTTIN = 21 pkg syscall (netbsd-arm), const SIGTTOU = 22 pkg syscall (netbsd-arm), const SIGURG = 16 pkg syscall (netbsd-arm), const SIGUSR1 = 30 pkg syscall (netbsd-arm), const SIGUSR2 = 31 pkg syscall (netbsd-arm), const SIGVTALRM = 26 pkg syscall (netbsd-arm), const SIGWINCH = 28 pkg syscall (netbsd-arm), const SIGXCPU = 24 pkg syscall (netbsd-arm), const SIGXFSZ = 25 pkg syscall (netbsd-arm), const SIOCADDMULTI = 2156947761 pkg syscall (netbsd-arm), const SIOCADDRT = 2150658570 pkg syscall (netbsd-arm), const SIOCAIFADDR = 2151704858 pkg syscall (netbsd-arm), const SIOCALIFADDR = 2165860636 pkg syscall (netbsd-arm), const SIOCATMARK = 1074033415 pkg syscall (netbsd-arm), const SIOCDELMULTI = 2156947762 pkg syscall (netbsd-arm), const SIOCDELRT = 2150658571 pkg syscall (netbsd-arm), const SIOCDIFADDR = 2156947737 pkg syscall (netbsd-arm), const SIOCDIFPHYADDR = 2156947785 pkg syscall (netbsd-arm), const SIOCDLIFADDR = 2165860638 pkg syscall (netbsd-arm), const SIOCGDRVSPEC = 3223087483 pkg syscall (netbsd-arm), const SIOCGETPFSYNC = 3230689784 pkg syscall (netbsd-arm), const SIOCGETSGCNT = 3222566196 pkg syscall (netbsd-arm), const SIOCGETVIFCNT = 3222566195 pkg syscall (netbsd-arm), const SIOCGHIWAT = 1074033409 pkg syscall (netbsd-arm), const SIOCGIFADDR = 3230689569 pkg syscall (netbsd-arm), const SIOCGIFADDRPREF = 3230951712 pkg syscall (netbsd-arm), const SIOCGIFALIAS = 3225446683 pkg syscall (netbsd-arm), const SIOCGIFBRDADDR = 3230689571 pkg syscall (netbsd-arm), const SIOCGIFCAP = 3223349622 pkg syscall (netbsd-arm), const SIOCGIFCONF = 3221776678 pkg syscall (netbsd-arm), const SIOCGIFDATA = 3230951813 pkg syscall (netbsd-arm), const SIOCGIFDLT = 3230689655 pkg syscall (netbsd-arm), const SIOCGIFDSTADDR = 3230689570 pkg syscall (netbsd-arm), const SIOCGIFFLAGS = 3230689553 pkg syscall (netbsd-arm), const SIOCGIFGENERIC = 3230689594 pkg syscall (netbsd-arm), const SIOCGIFMEDIA = 3223873846 pkg syscall (netbsd-arm), const SIOCGIFMETRIC = 3230689559 pkg syscall (netbsd-arm), const SIOCGIFMTU = 3230689662 pkg syscall (netbsd-arm), const SIOCGIFNETMASK = 3230689573 pkg syscall (netbsd-arm), const SIOCGIFPDSTADDR = 3230689608 pkg syscall (netbsd-arm), const SIOCGIFPSRCADDR = 3230689607 pkg syscall (netbsd-arm), const SIOCGLIFADDR = 3239602461 pkg syscall (netbsd-arm), const SIOCGLIFPHYADDR = 3239602507 pkg syscall (netbsd-arm), const SIOCGLINKSTR = 3223087495 pkg syscall (netbsd-arm), const SIOCGLOWAT = 1074033411 pkg syscall (netbsd-arm), const SIOCGPGRP = 1074033417 pkg syscall (netbsd-arm), const SIOCGVH = 3230689667 pkg syscall (netbsd-arm), const SIOCIFCREATE = 2156947834 pkg syscall (netbsd-arm), const SIOCIFDESTROY = 2156947833 pkg syscall (netbsd-arm), const SIOCIFGCLONERS = 3222038904 pkg syscall (netbsd-arm), const SIOCINITIFADDR = 3225708932 pkg syscall (netbsd-arm), const SIOCSDRVSPEC = 2149345659 pkg syscall (netbsd-arm), const SIOCSETPFSYNC = 2156947959 pkg syscall (netbsd-arm), const SIOCSHIWAT = 2147775232 pkg syscall (netbsd-arm), const SIOCSIFADDR = 2156947724 pkg syscall (netbsd-arm), const SIOCSIFADDRPREF = 2157209887 pkg syscall (netbsd-arm), const SIOCSIFBRDADDR = 2156947731 pkg syscall (netbsd-arm), const SIOCSIFCAP = 2149607797 pkg syscall (netbsd-arm), const SIOCSIFDSTADDR = 2156947726 pkg syscall (netbsd-arm), const SIOCSIFFLAGS = 2156947728 pkg syscall (netbsd-arm), const SIOCSIFGENERIC = 2156947769 pkg syscall (netbsd-arm), const SIOCSIFMEDIA = 3230689589 pkg syscall (netbsd-arm), const SIOCSIFMETRIC = 2156947736 pkg syscall (netbsd-arm), const SIOCSIFMTU = 2156947839 pkg syscall (netbsd-arm), const SIOCSIFNETMASK = 2156947734 pkg syscall (netbsd-arm), const SIOCSIFPHYADDR = 2151704902 pkg syscall (netbsd-arm), const SIOCSLIFPHYADDR = 2165860682 pkg syscall (netbsd-arm), const SIOCSLINKSTR = 2149345672 pkg syscall (netbsd-arm), const SIOCSLOWAT = 2147775234 pkg syscall (netbsd-arm), const SIOCSPGRP = 2147775240 pkg syscall (netbsd-arm), const SIOCSVH = 3230689666 pkg syscall (netbsd-arm), const SIOCZIFDATA = 3230951814 pkg syscall (netbsd-arm), const SOCK_CLOEXEC = 268435456 pkg syscall (netbsd-arm), const SOCK_FLAGS_MASK = 4026531840 pkg syscall (netbsd-arm), const SOCK_NONBLOCK = 536870912 pkg syscall (netbsd-arm), const SOCK_NOSIGPIPE = 1073741824 pkg syscall (netbsd-arm), const SOCK_RDM = 4 pkg syscall (netbsd-arm), const SOL_SOCKET = 65535 pkg syscall (netbsd-arm), const SOMAXCONN = 128 pkg syscall (netbsd-arm), const SO_ACCEPTCONN = 2 pkg syscall (netbsd-arm), const SO_ACCEPTFILTER = 4096 pkg syscall (netbsd-arm), const SO_BROADCAST = 32 pkg syscall (netbsd-arm), const SO_DEBUG = 1 pkg syscall (netbsd-arm), const SO_DONTROUTE = 16 pkg syscall (netbsd-arm), const SO_ERROR = 4103 pkg syscall (netbsd-arm), const SO_KEEPALIVE = 8 pkg syscall (netbsd-arm), const SO_LINGER = 128 pkg syscall (netbsd-arm), const SO_NOHEADER = 4106 pkg syscall (netbsd-arm), const SO_NOSIGPIPE = 2048 pkg syscall (netbsd-arm), const SO_OOBINLINE = 256 pkg syscall (netbsd-arm), const SO_OVERFLOWED = 4105 pkg syscall (netbsd-arm), const SO_RCVBUF = 4098 pkg syscall (netbsd-arm), const SO_RCVLOWAT = 4100 pkg syscall (netbsd-arm), const SO_RCVTIMEO = 4108 pkg syscall (netbsd-arm), const SO_REUSEADDR = 4 pkg syscall (netbsd-arm), const SO_REUSEPORT = 512 pkg syscall (netbsd-arm), const SO_SNDBUF = 4097 pkg syscall (netbsd-arm), const SO_SNDLOWAT = 4099 pkg syscall (netbsd-arm), const SO_SNDTIMEO = 4107 pkg syscall (netbsd-arm), const SO_TIMESTAMP = 8192 pkg syscall (netbsd-arm), const SO_TYPE = 4104 pkg syscall (netbsd-arm), const SO_USELOOPBACK = 64 pkg syscall (netbsd-arm), const SYSCTL_VERSION = 16777216 pkg syscall (netbsd-arm), const SYSCTL_VERS_0 = 0 pkg syscall (netbsd-arm), const SYSCTL_VERS_1 = 16777216 pkg syscall (netbsd-arm), const SYSCTL_VERS_MASK = 4278190080 pkg syscall (netbsd-arm), const SYS_ACCEPT = 30 pkg syscall (netbsd-arm), const SYS_ACCESS = 33 pkg syscall (netbsd-arm), const SYS_ACCT = 51 pkg syscall (netbsd-arm), const SYS_ADJTIME = 421 pkg syscall (netbsd-arm), const SYS_BIND = 104 pkg syscall (netbsd-arm), const SYS_BREAK = 17 pkg syscall (netbsd-arm), const SYS_CHDIR = 12 pkg syscall (netbsd-arm), const SYS_CHFLAGS = 34 pkg syscall (netbsd-arm), const SYS_CHMOD = 15 pkg syscall (netbsd-arm), const SYS_CHOWN = 16 pkg syscall (netbsd-arm), const SYS_CHROOT = 61 pkg syscall (netbsd-arm), const SYS_CLOCK_GETRES = 429 pkg syscall (netbsd-arm), const SYS_CLOCK_GETTIME = 427 pkg syscall (netbsd-arm), const SYS_CLOCK_SETTIME = 428 pkg syscall (netbsd-arm), const SYS_CLOSE = 6 pkg syscall (netbsd-arm), const SYS_CONNECT = 98 pkg syscall (netbsd-arm), const SYS_DUP = 41 pkg syscall (netbsd-arm), const SYS_DUP2 = 90 pkg syscall (netbsd-arm), const SYS_DUP3 = 454 pkg syscall (netbsd-arm), const SYS_EXECVE = 59 pkg syscall (netbsd-arm), const SYS_EXIT = 1 pkg syscall (netbsd-arm), const SYS_EXTATTRCTL = 360 pkg syscall (netbsd-arm), const SYS_EXTATTR_DELETE_FD = 366 pkg syscall (netbsd-arm), const SYS_EXTATTR_DELETE_FILE = 363 pkg syscall (netbsd-arm), const SYS_EXTATTR_DELETE_LINK = 369 pkg syscall (netbsd-arm), const SYS_EXTATTR_GET_FD = 365 pkg syscall (netbsd-arm), const SYS_EXTATTR_GET_FILE = 362 pkg syscall (netbsd-arm), const SYS_EXTATTR_GET_LINK = 368 pkg syscall (netbsd-arm), const SYS_EXTATTR_LIST_FD = 370 pkg syscall (netbsd-arm), const SYS_EXTATTR_LIST_FILE = 371 pkg syscall (netbsd-arm), const SYS_EXTATTR_LIST_LINK = 372 pkg syscall (netbsd-arm), const SYS_EXTATTR_SET_FD = 364 pkg syscall (netbsd-arm), const SYS_EXTATTR_SET_FILE = 361 pkg syscall (netbsd-arm), const SYS_EXTATTR_SET_LINK = 367 pkg syscall (netbsd-arm), const SYS_FACCESSAT = 462 pkg syscall (netbsd-arm), const SYS_FCHDIR = 13 pkg syscall (netbsd-arm), const SYS_FCHFLAGS = 35 pkg syscall (netbsd-arm), const SYS_FCHMOD = 124 pkg syscall (netbsd-arm), const SYS_FCHMODAT = 463 pkg syscall (netbsd-arm), const SYS_FCHOWN = 123 pkg syscall (netbsd-arm), const SYS_FCHOWNAT = 464 pkg syscall (netbsd-arm), const SYS_FCHROOT = 297 pkg syscall (netbsd-arm), const SYS_FCNTL = 92 pkg syscall (netbsd-arm), const SYS_FDATASYNC = 241 pkg syscall (netbsd-arm), const SYS_FEXECVE = 465 pkg syscall (netbsd-arm), const SYS_FGETXATTR = 380 pkg syscall (netbsd-arm), const SYS_FHSTAT = 451 pkg syscall (netbsd-arm), const SYS_FKTRACE = 288 pkg syscall (netbsd-arm), const SYS_FLISTXATTR = 383 pkg syscall (netbsd-arm), const SYS_FLOCK = 131 pkg syscall (netbsd-arm), const SYS_FORK = 2 pkg syscall (netbsd-arm), const SYS_FPATHCONF = 192 pkg syscall (netbsd-arm), const SYS_FREMOVEXATTR = 386 pkg syscall (netbsd-arm), const SYS_FSETXATTR = 377 pkg syscall (netbsd-arm), const SYS_FSTAT = 440 pkg syscall (netbsd-arm), const SYS_FSTATAT = 466 pkg syscall (netbsd-arm), const SYS_FSTATVFS1 = 358 pkg syscall (netbsd-arm), const SYS_FSYNC = 95 pkg syscall (netbsd-arm), const SYS_FSYNC_RANGE = 354 pkg syscall (netbsd-arm), const SYS_FTRUNCATE = 201 pkg syscall (netbsd-arm), const SYS_FUTIMENS = 472 pkg syscall (netbsd-arm), const SYS_FUTIMES = 423 pkg syscall (netbsd-arm), const SYS_GETCONTEXT = 307 pkg syscall (netbsd-arm), const SYS_GETDENTS = 390 pkg syscall (netbsd-arm), const SYS_GETEGID = 43 pkg syscall (netbsd-arm), const SYS_GETEUID = 25 pkg syscall (netbsd-arm), const SYS_GETFH = 395 pkg syscall (netbsd-arm), const SYS_GETGID = 47 pkg syscall (netbsd-arm), const SYS_GETGROUPS = 79 pkg syscall (netbsd-arm), const SYS_GETITIMER = 426 pkg syscall (netbsd-arm), const SYS_GETPEERNAME = 31 pkg syscall (netbsd-arm), const SYS_GETPGID = 207 pkg syscall (netbsd-arm), const SYS_GETPGRP = 81 pkg syscall (netbsd-arm), const SYS_GETPID = 20 pkg syscall (netbsd-arm), const SYS_GETPPID = 39 pkg syscall (netbsd-arm), const SYS_GETPRIORITY = 100 pkg syscall (netbsd-arm), const SYS_GETRLIMIT = 194 pkg syscall (netbsd-arm), const SYS_GETRUSAGE = 445 pkg syscall (netbsd-arm), const SYS_GETSID = 286 pkg syscall (netbsd-arm), const SYS_GETSOCKNAME = 32 pkg syscall (netbsd-arm), const SYS_GETSOCKOPT = 118 pkg syscall (netbsd-arm), const SYS_GETTIMEOFDAY = 418 pkg syscall (netbsd-arm), const SYS_GETUID = 24 pkg syscall (netbsd-arm), const SYS_GETVFSSTAT = 356 pkg syscall (netbsd-arm), const SYS_GETXATTR = 378 pkg syscall (netbsd-arm), const SYS_IOCTL = 54 pkg syscall (netbsd-arm), const SYS_ISSETUGID = 305 pkg syscall (netbsd-arm), const SYS_KEVENT = 435 pkg syscall (netbsd-arm), const SYS_KILL = 37 pkg syscall (netbsd-arm), const SYS_KQUEUE = 344 pkg syscall (netbsd-arm), const SYS_KQUEUE1 = 455 pkg syscall (netbsd-arm), const SYS_KTRACE = 45 pkg syscall (netbsd-arm), const SYS_LCHFLAGS = 304 pkg syscall (netbsd-arm), const SYS_LCHMOD = 274 pkg syscall (netbsd-arm), const SYS_LCHOWN = 275 pkg syscall (netbsd-arm), const SYS_LGETXATTR = 379 pkg syscall (netbsd-arm), const SYS_LINK = 9 pkg syscall (netbsd-arm), const SYS_LINKAT = 457 pkg syscall (netbsd-arm), const SYS_LISTEN = 106 pkg syscall (netbsd-arm), const SYS_LISTXATTR = 381 pkg syscall (netbsd-arm), const SYS_LLISTXATTR = 382 pkg syscall (netbsd-arm), const SYS_LREMOVEXATTR = 385 pkg syscall (netbsd-arm), const SYS_LSEEK = 199 pkg syscall (netbsd-arm), const SYS_LSETXATTR = 376 pkg syscall (netbsd-arm), const SYS_LSTAT = 441 pkg syscall (netbsd-arm), const SYS_LUTIMES = 424 pkg syscall (netbsd-arm), const SYS_MADVISE = 75 pkg syscall (netbsd-arm), const SYS_MINCORE = 78 pkg syscall (netbsd-arm), const SYS_MINHERIT = 273 pkg syscall (netbsd-arm), const SYS_MKDIR = 136 pkg syscall (netbsd-arm), const SYS_MKDIRAT = 461 pkg syscall (netbsd-arm), const SYS_MKFIFO = 132 pkg syscall (netbsd-arm), const SYS_MKFIFOAT = 459 pkg syscall (netbsd-arm), const SYS_MKNOD = 450 pkg syscall (netbsd-arm), const SYS_MKNODAT = 460 pkg syscall (netbsd-arm), const SYS_MLOCK = 203 pkg syscall (netbsd-arm), const SYS_MLOCKALL = 242 pkg syscall (netbsd-arm), const SYS_MMAP = 197 pkg syscall (netbsd-arm), const SYS_MODCTL = 246 pkg syscall (netbsd-arm), const SYS_MOUNT = 410 pkg syscall (netbsd-arm), const SYS_MPROTECT = 74 pkg syscall (netbsd-arm), const SYS_MREMAP = 411 pkg syscall (netbsd-arm), const SYS_MSGCTL = 444 pkg syscall (netbsd-arm), const SYS_MSGGET = 225 pkg syscall (netbsd-arm), const SYS_MSGRCV = 227 pkg syscall (netbsd-arm), const SYS_MSGSND = 226 pkg syscall (netbsd-arm), const SYS_MUNLOCK = 204 pkg syscall (netbsd-arm), const SYS_MUNLOCKALL = 243 pkg syscall (netbsd-arm), const SYS_MUNMAP = 73 pkg syscall (netbsd-arm), const SYS_NANOSLEEP = 430 pkg syscall (netbsd-arm), const SYS_NTP_ADJTIME = 176 pkg syscall (netbsd-arm), const SYS_NTP_GETTIME = 448 pkg syscall (netbsd-arm), const SYS_OPEN = 5 pkg syscall (netbsd-arm), const SYS_OPENAT = 468 pkg syscall (netbsd-arm), const SYS_PACCEPT = 456 pkg syscall (netbsd-arm), const SYS_PATHCONF = 191 pkg syscall (netbsd-arm), const SYS_PIPE = 42 pkg syscall (netbsd-arm), const SYS_PIPE2 = 453 pkg syscall (netbsd-arm), const SYS_PMC_CONTROL = 342 pkg syscall (netbsd-arm), const SYS_PMC_GET_INFO = 341 pkg syscall (netbsd-arm), const SYS_POLL = 209 pkg syscall (netbsd-arm), const SYS_POLLTS = 437 pkg syscall (netbsd-arm), const SYS_POSIX_FADVISE = 416 pkg syscall (netbsd-arm), const SYS_POSIX_SPAWN = 474 pkg syscall (netbsd-arm), const SYS_PREAD = 173 pkg syscall (netbsd-arm), const SYS_PREADV = 289 pkg syscall (netbsd-arm), const SYS_PROFIL = 44 pkg syscall (netbsd-arm), const SYS_PSELECT = 436 pkg syscall (netbsd-arm), const SYS_PSET_ASSIGN = 414 pkg syscall (netbsd-arm), const SYS_PSET_CREATE = 412 pkg syscall (netbsd-arm), const SYS_PSET_DESTROY = 413 pkg syscall (netbsd-arm), const SYS_PTRACE = 26 pkg syscall (netbsd-arm), const SYS_PWRITE = 174 pkg syscall (netbsd-arm), const SYS_PWRITEV = 290 pkg syscall (netbsd-arm), const SYS_RASCTL = 343 pkg syscall (netbsd-arm), const SYS_READ = 3 pkg syscall (netbsd-arm), const SYS_READLINK = 58 pkg syscall (netbsd-arm), const SYS_READLINKAT = 469 pkg syscall (netbsd-arm), const SYS_READV = 120 pkg syscall (netbsd-arm), const SYS_REBOOT = 208 pkg syscall (netbsd-arm), const SYS_RECVFROM = 29 pkg syscall (netbsd-arm), const SYS_RECVMMSG = 475 pkg syscall (netbsd-arm), const SYS_RECVMSG = 27 pkg syscall (netbsd-arm), const SYS_REMOVEXATTR = 384 pkg syscall (netbsd-arm), const SYS_RENAME = 128 pkg syscall (netbsd-arm), const SYS_RENAMEAT = 458 pkg syscall (netbsd-arm), const SYS_REVOKE = 56 pkg syscall (netbsd-arm), const SYS_RMDIR = 137 pkg syscall (netbsd-arm), const SYS_SBRK = 69 pkg syscall (netbsd-arm), const SYS_SCHED_YIELD = 350 pkg syscall (netbsd-arm), const SYS_SELECT = 417 pkg syscall (netbsd-arm), const SYS_SEMCONFIG = 223 pkg syscall (netbsd-arm), const SYS_SEMGET = 221 pkg syscall (netbsd-arm), const SYS_SEMOP = 222 pkg syscall (netbsd-arm), const SYS_SENDMMSG = 476 pkg syscall (netbsd-arm), const SYS_SENDMSG = 28 pkg syscall (netbsd-arm), const SYS_SENDTO = 133 pkg syscall (netbsd-arm), const SYS_SETCONTEXT = 308 pkg syscall (netbsd-arm), const SYS_SETEGID = 182 pkg syscall (netbsd-arm), const SYS_SETEUID = 183 pkg syscall (netbsd-arm), const SYS_SETGID = 181 pkg syscall (netbsd-arm), const SYS_SETGROUPS = 80 pkg syscall (netbsd-arm), const SYS_SETITIMER = 425 pkg syscall (netbsd-arm), const SYS_SETPGID = 82 pkg syscall (netbsd-arm), const SYS_SETPRIORITY = 96 pkg syscall (netbsd-arm), const SYS_SETREGID = 127 pkg syscall (netbsd-arm), const SYS_SETREUID = 126 pkg syscall (netbsd-arm), const SYS_SETRLIMIT = 195 pkg syscall (netbsd-arm), const SYS_SETSID = 147 pkg syscall (netbsd-arm), const SYS_SETSOCKOPT = 105 pkg syscall (netbsd-arm), const SYS_SETTIMEOFDAY = 419 pkg syscall (netbsd-arm), const SYS_SETUID = 23 pkg syscall (netbsd-arm), const SYS_SETXATTR = 375 pkg syscall (netbsd-arm), const SYS_SHMAT = 228 pkg syscall (netbsd-arm), const SYS_SHMCTL = 443 pkg syscall (netbsd-arm), const SYS_SHMDT = 230 pkg syscall (netbsd-arm), const SYS_SHMGET = 231 pkg syscall (netbsd-arm), const SYS_SHUTDOWN = 134 pkg syscall (netbsd-arm), const SYS_SIGQUEUEINFO = 245 pkg syscall (netbsd-arm), const SYS_SOCKET = 394 pkg syscall (netbsd-arm), const SYS_SOCKETPAIR = 135 pkg syscall (netbsd-arm), const SYS_SSTK = 70 pkg syscall (netbsd-arm), const SYS_STAT = 439 pkg syscall (netbsd-arm), const SYS_STATVFS1 = 357 pkg syscall (netbsd-arm), const SYS_SWAPCTL = 271 pkg syscall (netbsd-arm), const SYS_SYMLINK = 57 pkg syscall (netbsd-arm), const SYS_SYMLINKAT = 470 pkg syscall (netbsd-arm), const SYS_SYNC = 36 pkg syscall (netbsd-arm), const SYS_SYSARCH = 165 pkg syscall (netbsd-arm), const SYS_TIMER_CREATE = 235 pkg syscall (netbsd-arm), const SYS_TIMER_DELETE = 236 pkg syscall (netbsd-arm), const SYS_TIMER_GETOVERRUN = 239 pkg syscall (netbsd-arm), const SYS_TIMER_GETTIME = 447 pkg syscall (netbsd-arm), const SYS_TIMER_SETTIME = 446 pkg syscall (netbsd-arm), const SYS_TRUNCATE = 200 pkg syscall (netbsd-arm), const SYS_UMASK = 60 pkg syscall (netbsd-arm), const SYS_UNDELETE = 205 pkg syscall (netbsd-arm), const SYS_UNLINK = 10 pkg syscall (netbsd-arm), const SYS_UNLINKAT = 471 pkg syscall (netbsd-arm), const SYS_UNMOUNT = 22 pkg syscall (netbsd-arm), const SYS_UTIMENSAT = 467 pkg syscall (netbsd-arm), const SYS_UTIMES = 420 pkg syscall (netbsd-arm), const SYS_UTRACE = 306 pkg syscall (netbsd-arm), const SYS_UUIDGEN = 355 pkg syscall (netbsd-arm), const SYS_VADVISE = 72 pkg syscall (netbsd-arm), const SYS_VFORK = 66 pkg syscall (netbsd-arm), const SYS_WAIT4 = 449 pkg syscall (netbsd-arm), const SYS_WRITE = 4 pkg syscall (netbsd-arm), const SYS_WRITEV = 121 pkg syscall (netbsd-arm), const SYS__LWP_CONTINUE = 314 pkg syscall (netbsd-arm), const SYS__LWP_CREATE = 309 pkg syscall (netbsd-arm), const SYS__LWP_CTL = 325 pkg syscall (netbsd-arm), const SYS__LWP_DETACH = 319 pkg syscall (netbsd-arm), const SYS__LWP_EXIT = 310 pkg syscall (netbsd-arm), const SYS__LWP_GETNAME = 324 pkg syscall (netbsd-arm), const SYS__LWP_GETPRIVATE = 316 pkg syscall (netbsd-arm), const SYS__LWP_KILL = 318 pkg syscall (netbsd-arm), const SYS__LWP_PARK = 434 pkg syscall (netbsd-arm), const SYS__LWP_SELF = 311 pkg syscall (netbsd-arm), const SYS__LWP_SETNAME = 323 pkg syscall (netbsd-arm), const SYS__LWP_SETPRIVATE = 317 pkg syscall (netbsd-arm), const SYS__LWP_SUSPEND = 313 pkg syscall (netbsd-arm), const SYS__LWP_UNPARK = 321 pkg syscall (netbsd-arm), const SYS__LWP_UNPARK_ALL = 322 pkg syscall (netbsd-arm), const SYS__LWP_WAIT = 312 pkg syscall (netbsd-arm), const SYS__LWP_WAKEUP = 315 pkg syscall (netbsd-arm), const SYS__PSET_BIND = 415 pkg syscall (netbsd-arm), const SYS__SCHED_GETAFFINITY = 349 pkg syscall (netbsd-arm), const SYS__SCHED_GETPARAM = 347 pkg syscall (netbsd-arm), const SYS__SCHED_SETAFFINITY = 348 pkg syscall (netbsd-arm), const SYS__SCHED_SETPARAM = 346 pkg syscall (netbsd-arm), const SYS___CLONE = 287 pkg syscall (netbsd-arm), const SYS___GETCWD = 296 pkg syscall (netbsd-arm), const SYS___GETLOGIN = 49 pkg syscall (netbsd-arm), const SYS___POSIX_CHOWN = 283 pkg syscall (netbsd-arm), const SYS___POSIX_FCHOWN = 284 pkg syscall (netbsd-arm), const SYS___POSIX_LCHOWN = 285 pkg syscall (netbsd-arm), const SYS___POSIX_RENAME = 270 pkg syscall (netbsd-arm), const SYS___QUOTACTL = 473 pkg syscall (netbsd-arm), const SYS___SEMCTL = 442 pkg syscall (netbsd-arm), const SYS___SETLOGIN = 50 pkg syscall (netbsd-arm), const SYS___SIGACTION_SIGTRAMP = 340 pkg syscall (netbsd-arm), const SYS___SIGTIMEDWAIT = 431 pkg syscall (netbsd-arm), const SYS___SYSCTL = 202 pkg syscall (netbsd-arm), const S_ARCH1 = 65536 pkg syscall (netbsd-arm), const S_ARCH2 = 131072 pkg syscall (netbsd-arm), const S_BLKSIZE = 512 pkg syscall (netbsd-arm), const S_IEXEC = 64 pkg syscall (netbsd-arm), const S_IFMT = 61440 pkg syscall (netbsd-arm), const S_IFWHT = 57344 pkg syscall (netbsd-arm), const S_IREAD = 256 pkg syscall (netbsd-arm), const S_IRGRP = 32 pkg syscall (netbsd-arm), const S_IROTH = 4 pkg syscall (netbsd-arm), const S_IRWXG = 56 pkg syscall (netbsd-arm), const S_IRWXO = 7 pkg syscall (netbsd-arm), const S_IRWXU = 448 pkg syscall (netbsd-arm), const S_ISTXT = 512 pkg syscall (netbsd-arm), const S_IWGRP = 16 pkg syscall (netbsd-arm), const S_IWOTH = 2 pkg syscall (netbsd-arm), const S_IWRITE = 128 pkg syscall (netbsd-arm), const S_IXGRP = 8 pkg syscall (netbsd-arm), const S_IXOTH = 1 pkg syscall (netbsd-arm), const SizeofBpfHdr = 20 pkg syscall (netbsd-arm), const SizeofBpfInsn = 8 pkg syscall (netbsd-arm), const SizeofBpfProgram = 8 pkg syscall (netbsd-arm), const SizeofBpfStat = 128 pkg syscall (netbsd-arm), const SizeofBpfVersion = 4 pkg syscall (netbsd-arm), const SizeofCmsghdr = 12 pkg syscall (netbsd-arm), const SizeofIPMreq = 8 pkg syscall (netbsd-arm), const SizeofIPv6Mreq = 20 pkg syscall (netbsd-arm), const SizeofIfAnnounceMsghdr = 24 pkg syscall (netbsd-arm), const SizeofIfData = 132 pkg syscall (netbsd-arm), const SizeofIfMsghdr = 152 pkg syscall (netbsd-arm), const SizeofIfaMsghdr = 24 pkg syscall (netbsd-arm), const SizeofInet6Pktinfo = 20 pkg syscall (netbsd-arm), const SizeofLinger = 8 pkg syscall (netbsd-arm), const SizeofMsghdr = 28 pkg syscall (netbsd-arm), const SizeofRtMetrics = 80 pkg syscall (netbsd-arm), const SizeofRtMsghdr = 120 pkg syscall (netbsd-arm), const SizeofSockaddrAny = 108 pkg syscall (netbsd-arm), const SizeofSockaddrDatalink = 20 pkg syscall (netbsd-arm), const SizeofSockaddrInet4 = 16 pkg syscall (netbsd-arm), const SizeofSockaddrInet6 = 28 pkg syscall (netbsd-arm), const SizeofSockaddrUnix = 106 pkg syscall (netbsd-arm), const TCIFLUSH = 1 pkg syscall (netbsd-arm), const TCIOFLUSH = 3 pkg syscall (netbsd-arm), const TCOFLUSH = 2 pkg syscall (netbsd-arm), const TCP_CONGCTL = 32 pkg syscall (netbsd-arm), const TCP_KEEPCNT = 6 pkg syscall (netbsd-arm), const TCP_KEEPIDLE = 3 pkg syscall (netbsd-arm), const TCP_KEEPINIT = 7 pkg syscall (netbsd-arm), const TCP_KEEPINTVL = 5 pkg syscall (netbsd-arm), const TCP_MAXBURST = 4 pkg syscall (netbsd-arm), const TCP_MAXSEG = 2 pkg syscall (netbsd-arm), const TCP_MAXWIN = 65535 pkg syscall (netbsd-arm), const TCP_MAX_WINSHIFT = 14 pkg syscall (netbsd-arm), const TCP_MD5SIG = 16 pkg syscall (netbsd-arm), const TCP_MINMSS = 216 pkg syscall (netbsd-arm), const TCP_MSS = 536 pkg syscall (netbsd-arm), const TCSAFLUSH = 2 pkg syscall (netbsd-arm), const TIOCCBRK = 536900730 pkg syscall (netbsd-arm), const TIOCCDTR = 536900728 pkg syscall (netbsd-arm), const TIOCCONS = 2147775586 pkg syscall (netbsd-arm), const TIOCDCDTIMESTAMP = 1074558040 pkg syscall (netbsd-arm), const TIOCDRAIN = 536900702 pkg syscall (netbsd-arm), const TIOCEXCL = 536900621 pkg syscall (netbsd-arm), const TIOCEXT = 2147775584 pkg syscall (netbsd-arm), const TIOCFLAG_CDTRCTS = 16 pkg syscall (netbsd-arm), const TIOCFLAG_CLOCAL = 2 pkg syscall (netbsd-arm), const TIOCFLAG_CRTSCTS = 4 pkg syscall (netbsd-arm), const TIOCFLAG_MDMBUF = 8 pkg syscall (netbsd-arm), const TIOCFLAG_SOFTCAR = 1 pkg syscall (netbsd-arm), const TIOCFLUSH = 2147775504 pkg syscall (netbsd-arm), const TIOCGETA = 1076655123 pkg syscall (netbsd-arm), const TIOCGETD = 1074033690 pkg syscall (netbsd-arm), const TIOCGFLAGS = 1074033757 pkg syscall (netbsd-arm), const TIOCGLINED = 1075868738 pkg syscall (netbsd-arm), const TIOCGPGRP = 1074033783 pkg syscall (netbsd-arm), const TIOCGQSIZE = 1074033793 pkg syscall (netbsd-arm), const TIOCGRANTPT = 536900679 pkg syscall (netbsd-arm), const TIOCGSID = 1074033763 pkg syscall (netbsd-arm), const TIOCGSIZE = 1074295912 pkg syscall (netbsd-arm), const TIOCGWINSZ = 1074295912 pkg syscall (netbsd-arm), const TIOCMBIC = 2147775595 pkg syscall (netbsd-arm), const TIOCMBIS = 2147775596 pkg syscall (netbsd-arm), const TIOCMGET = 1074033770 pkg syscall (netbsd-arm), const TIOCMSET = 2147775597 pkg syscall (netbsd-arm), const TIOCM_CAR = 64 pkg syscall (netbsd-arm), const TIOCM_CD = 64 pkg syscall (netbsd-arm), const TIOCM_CTS = 32 pkg syscall (netbsd-arm), const TIOCM_DSR = 256 pkg syscall (netbsd-arm), const TIOCM_DTR = 2 pkg syscall (netbsd-arm), const TIOCM_LE = 1 pkg syscall (netbsd-arm), const TIOCM_RI = 128 pkg syscall (netbsd-arm), const TIOCM_RNG = 128 pkg syscall (netbsd-arm), const TIOCM_RTS = 4 pkg syscall (netbsd-arm), const TIOCM_SR = 16 pkg syscall (netbsd-arm), const TIOCM_ST = 8 pkg syscall (netbsd-arm), const TIOCNOTTY = 536900721 pkg syscall (netbsd-arm), const TIOCNXCL = 536900622 pkg syscall (netbsd-arm), const TIOCOUTQ = 1074033779 pkg syscall (netbsd-arm), const TIOCPKT = 2147775600 pkg syscall (netbsd-arm), const TIOCPKT_DATA = 0 pkg syscall (netbsd-arm), const TIOCPKT_DOSTOP = 32 pkg syscall (netbsd-arm), const TIOCPKT_FLUSHREAD = 1 pkg syscall (netbsd-arm), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (netbsd-arm), const TIOCPKT_IOCTL = 64 pkg syscall (netbsd-arm), const TIOCPKT_NOSTOP = 16 pkg syscall (netbsd-arm), const TIOCPKT_START = 8 pkg syscall (netbsd-arm), const TIOCPKT_STOP = 4 pkg syscall (netbsd-arm), const TIOCPTMGET = 1208513606 pkg syscall (netbsd-arm), const TIOCPTSNAME = 1208513608 pkg syscall (netbsd-arm), const TIOCRCVFRAME = 2147775557 pkg syscall (netbsd-arm), const TIOCREMOTE = 2147775593 pkg syscall (netbsd-arm), const TIOCSBRK = 536900731 pkg syscall (netbsd-arm), const TIOCSCTTY = 536900705 pkg syscall (netbsd-arm), const TIOCSDTR = 536900729 pkg syscall (netbsd-arm), const TIOCSETA = 2150396948 pkg syscall (netbsd-arm), const TIOCSETAF = 2150396950 pkg syscall (netbsd-arm), const TIOCSETAW = 2150396949 pkg syscall (netbsd-arm), const TIOCSETD = 2147775515 pkg syscall (netbsd-arm), const TIOCSFLAGS = 2147775580 pkg syscall (netbsd-arm), const TIOCSIG = 536900703 pkg syscall (netbsd-arm), const TIOCSLINED = 2149610563 pkg syscall (netbsd-arm), const TIOCSPGRP = 2147775606 pkg syscall (netbsd-arm), const TIOCSQSIZE = 2147775616 pkg syscall (netbsd-arm), const TIOCSSIZE = 2148037735 pkg syscall (netbsd-arm), const TIOCSTART = 536900718 pkg syscall (netbsd-arm), const TIOCSTAT = 2147775589 pkg syscall (netbsd-arm), const TIOCSTI = 2147578994 pkg syscall (netbsd-arm), const TIOCSTOP = 536900719 pkg syscall (netbsd-arm), const TIOCSWINSZ = 2148037735 pkg syscall (netbsd-arm), const TIOCUCNTL = 2147775590 pkg syscall (netbsd-arm), const TIOCXMTFRAME = 2147775556 pkg syscall (netbsd-arm), const TOSTOP = 4194304 pkg syscall (netbsd-arm), const VDISCARD = 15 pkg syscall (netbsd-arm), const VDSUSP = 11 pkg syscall (netbsd-arm), const VEOF = 0 pkg syscall (netbsd-arm), const VEOL = 1 pkg syscall (netbsd-arm), const VEOL2 = 2 pkg syscall (netbsd-arm), const VERASE = 3 pkg syscall (netbsd-arm), const VINTR = 8 pkg syscall (netbsd-arm), const VKILL = 5 pkg syscall (netbsd-arm), const VLNEXT = 14 pkg syscall (netbsd-arm), const VMIN = 16 pkg syscall (netbsd-arm), const VQUIT = 9 pkg syscall (netbsd-arm), const VREPRINT = 6 pkg syscall (netbsd-arm), const VSTART = 12 pkg syscall (netbsd-arm), const VSTATUS = 18 pkg syscall (netbsd-arm), const VSTOP = 13 pkg syscall (netbsd-arm), const VSUSP = 10 pkg syscall (netbsd-arm), const VTIME = 17 pkg syscall (netbsd-arm), const VWERASE = 4 pkg syscall (netbsd-arm), const WALL = 8 pkg syscall (netbsd-arm), const WALLSIG = 8 pkg syscall (netbsd-arm), const WALTSIG = 4 pkg syscall (netbsd-arm), const WCLONE = 4 pkg syscall (netbsd-arm), const WCOREFLAG = 128 pkg syscall (netbsd-arm), const WNOHANG = 1 pkg syscall (netbsd-arm), const WNOWAIT = 65536 pkg syscall (netbsd-arm), const WNOZOMBIE = 131072 pkg syscall (netbsd-arm), const WOPTSCHECKED = 262144 pkg syscall (netbsd-arm), const WSTOPPED = 127 pkg syscall (netbsd-arm), const WUNTRACED = 2 pkg syscall (netbsd-arm-cgo), const AF_APPLETALK = 16 pkg syscall (netbsd-arm-cgo), const AF_ARP = 28 pkg syscall (netbsd-arm-cgo), const AF_BLUETOOTH = 31 pkg syscall (netbsd-arm-cgo), const AF_CCITT = 10 pkg syscall (netbsd-arm-cgo), const AF_CHAOS = 5 pkg syscall (netbsd-arm-cgo), const AF_CNT = 21 pkg syscall (netbsd-arm-cgo), const AF_COIP = 20 pkg syscall (netbsd-arm-cgo), const AF_DATAKIT = 9 pkg syscall (netbsd-arm-cgo), const AF_DECnet = 12 pkg syscall (netbsd-arm-cgo), const AF_DLI = 13 pkg syscall (netbsd-arm-cgo), const AF_E164 = 26 pkg syscall (netbsd-arm-cgo), const AF_ECMA = 8 pkg syscall (netbsd-arm-cgo), const AF_HYLINK = 15 pkg syscall (netbsd-arm-cgo), const AF_IEEE80211 = 32 pkg syscall (netbsd-arm-cgo), const AF_IMPLINK = 3 pkg syscall (netbsd-arm-cgo), const AF_INET6 = 24 pkg syscall (netbsd-arm-cgo), const AF_IPX = 23 pkg syscall (netbsd-arm-cgo), const AF_ISDN = 26 pkg syscall (netbsd-arm-cgo), const AF_ISO = 7 pkg syscall (netbsd-arm-cgo), const AF_LAT = 14 pkg syscall (netbsd-arm-cgo), const AF_LINK = 18 pkg syscall (netbsd-arm-cgo), const AF_LOCAL = 1 pkg syscall (netbsd-arm-cgo), const AF_MAX = 35 pkg syscall (netbsd-arm-cgo), const AF_MPLS = 33 pkg syscall (netbsd-arm-cgo), const AF_NATM = 27 pkg syscall (netbsd-arm-cgo), const AF_NS = 6 pkg syscall (netbsd-arm-cgo), const AF_OROUTE = 17 pkg syscall (netbsd-arm-cgo), const AF_OSI = 7 pkg syscall (netbsd-arm-cgo), const AF_PUP = 4 pkg syscall (netbsd-arm-cgo), const AF_ROUTE = 34 pkg syscall (netbsd-arm-cgo), const AF_SNA = 11 pkg syscall (netbsd-arm-cgo), const ARPHRD_ARCNET = 7 pkg syscall (netbsd-arm-cgo), const ARPHRD_ETHER = 1 pkg syscall (netbsd-arm-cgo), const ARPHRD_FRELAY = 15 pkg syscall (netbsd-arm-cgo), const ARPHRD_IEEE1394 = 24 pkg syscall (netbsd-arm-cgo), const ARPHRD_IEEE802 = 6 pkg syscall (netbsd-arm-cgo), const ARPHRD_STRIP = 23 pkg syscall (netbsd-arm-cgo), const B0 = 0 pkg syscall (netbsd-arm-cgo), const B110 = 110 pkg syscall (netbsd-arm-cgo), const B115200 = 115200 pkg syscall (netbsd-arm-cgo), const B1200 = 1200 pkg syscall (netbsd-arm-cgo), const B134 = 134 pkg syscall (netbsd-arm-cgo), const B14400 = 14400 pkg syscall (netbsd-arm-cgo), const B150 = 150 pkg syscall (netbsd-arm-cgo), const B1800 = 1800 pkg syscall (netbsd-arm-cgo), const B19200 = 19200 pkg syscall (netbsd-arm-cgo), const B200 = 200 pkg syscall (netbsd-arm-cgo), const B230400 = 230400 pkg syscall (netbsd-arm-cgo), const B2400 = 2400 pkg syscall (netbsd-arm-cgo), const B28800 = 28800 pkg syscall (netbsd-arm-cgo), const B300 = 300 pkg syscall (netbsd-arm-cgo), const B38400 = 38400 pkg syscall (netbsd-arm-cgo), const B460800 = 460800 pkg syscall (netbsd-arm-cgo), const B4800 = 4800 pkg syscall (netbsd-arm-cgo), const B50 = 50 pkg syscall (netbsd-arm-cgo), const B57600 = 57600 pkg syscall (netbsd-arm-cgo), const B600 = 600 pkg syscall (netbsd-arm-cgo), const B7200 = 7200 pkg syscall (netbsd-arm-cgo), const B75 = 75 pkg syscall (netbsd-arm-cgo), const B76800 = 76800 pkg syscall (netbsd-arm-cgo), const B921600 = 921600 pkg syscall (netbsd-arm-cgo), const B9600 = 9600 pkg syscall (netbsd-arm-cgo), const BIOCFEEDBACK = 2147762813 pkg syscall (netbsd-arm-cgo), const BIOCFLUSH = 536887912 pkg syscall (netbsd-arm-cgo), const BIOCGBLEN = 1074020966 pkg syscall (netbsd-arm-cgo), const BIOCGDLT = 1074020970 pkg syscall (netbsd-arm-cgo), const BIOCGDLTLIST = 3221766775 pkg syscall (netbsd-arm-cgo), const BIOCGETIF = 1083196011 pkg syscall (netbsd-arm-cgo), const BIOCGFEEDBACK = 1074020988 pkg syscall (netbsd-arm-cgo), const BIOCGHDRCMPLT = 1074020980 pkg syscall (netbsd-arm-cgo), const BIOCGRTIMEOUT = 1074545275 pkg syscall (netbsd-arm-cgo), const BIOCGSEESENT = 1074020984 pkg syscall (netbsd-arm-cgo), const BIOCGSTATS = 1082147439 pkg syscall (netbsd-arm-cgo), const BIOCGSTATSOLD = 1074283119 pkg syscall (netbsd-arm-cgo), const BIOCIMMEDIATE = 2147762800 pkg syscall (netbsd-arm-cgo), const BIOCPROMISC = 536887913 pkg syscall (netbsd-arm-cgo), const BIOCSBLEN = 3221504614 pkg syscall (netbsd-arm-cgo), const BIOCSDLT = 2147762806 pkg syscall (netbsd-arm-cgo), const BIOCSETF = 2148024935 pkg syscall (netbsd-arm-cgo), const BIOCSETIF = 2156937836 pkg syscall (netbsd-arm-cgo), const BIOCSFEEDBACK = 2147762813 pkg syscall (netbsd-arm-cgo), const BIOCSHDRCMPLT = 2147762805 pkg syscall (netbsd-arm-cgo), const BIOCSRTIMEOUT = 2148287098 pkg syscall (netbsd-arm-cgo), const BIOCSSEESENT = 2147762809 pkg syscall (netbsd-arm-cgo), const BIOCSTCPF = 2148024946 pkg syscall (netbsd-arm-cgo), const BIOCSUDPF = 2148024947 pkg syscall (netbsd-arm-cgo), const BIOCVERSION = 1074020977 pkg syscall (netbsd-arm-cgo), const BPF_A = 16 pkg syscall (netbsd-arm-cgo), const BPF_ABS = 32 pkg syscall (netbsd-arm-cgo), const BPF_ADD = 0 pkg syscall (netbsd-arm-cgo), const BPF_ALIGNMENT = 4 pkg syscall (netbsd-arm-cgo), const BPF_ALIGNMENT32 = 4 pkg syscall (netbsd-arm-cgo), const BPF_ALU = 4 pkg syscall (netbsd-arm-cgo), const BPF_AND = 80 pkg syscall (netbsd-arm-cgo), const BPF_B = 16 pkg syscall (netbsd-arm-cgo), const BPF_DFLTBUFSIZE = 1048576 pkg syscall (netbsd-arm-cgo), const BPF_DIV = 48 pkg syscall (netbsd-arm-cgo), const BPF_H = 8 pkg syscall (netbsd-arm-cgo), const BPF_IMM = 0 pkg syscall (netbsd-arm-cgo), const BPF_IND = 64 pkg syscall (netbsd-arm-cgo), const BPF_JA = 0 pkg syscall (netbsd-arm-cgo), const BPF_JEQ = 16 pkg syscall (netbsd-arm-cgo), const BPF_JGE = 48 pkg syscall (netbsd-arm-cgo), const BPF_JGT = 32 pkg syscall (netbsd-arm-cgo), const BPF_JMP = 5 pkg syscall (netbsd-arm-cgo), const BPF_JSET = 64 pkg syscall (netbsd-arm-cgo), const BPF_K = 0 pkg syscall (netbsd-arm-cgo), const BPF_LD = 0 pkg syscall (netbsd-arm-cgo), const BPF_LDX = 1 pkg syscall (netbsd-arm-cgo), const BPF_LEN = 128 pkg syscall (netbsd-arm-cgo), const BPF_LSH = 96 pkg syscall (netbsd-arm-cgo), const BPF_MAJOR_VERSION = 1 pkg syscall (netbsd-arm-cgo), const BPF_MAXBUFSIZE = 16777216 pkg syscall (netbsd-arm-cgo), const BPF_MAXINSNS = 512 pkg syscall (netbsd-arm-cgo), const BPF_MEM = 96 pkg syscall (netbsd-arm-cgo), const BPF_MEMWORDS = 16 pkg syscall (netbsd-arm-cgo), const BPF_MINBUFSIZE = 32 pkg syscall (netbsd-arm-cgo), const BPF_MINOR_VERSION = 1 pkg syscall (netbsd-arm-cgo), const BPF_MISC = 7 pkg syscall (netbsd-arm-cgo), const BPF_MSH = 160 pkg syscall (netbsd-arm-cgo), const BPF_MUL = 32 pkg syscall (netbsd-arm-cgo), const BPF_NEG = 128 pkg syscall (netbsd-arm-cgo), const BPF_OR = 64 pkg syscall (netbsd-arm-cgo), const BPF_RELEASE = 199606 pkg syscall (netbsd-arm-cgo), const BPF_RET = 6 pkg syscall (netbsd-arm-cgo), const BPF_RSH = 112 pkg syscall (netbsd-arm-cgo), const BPF_ST = 2 pkg syscall (netbsd-arm-cgo), const BPF_STX = 3 pkg syscall (netbsd-arm-cgo), const BPF_SUB = 16 pkg syscall (netbsd-arm-cgo), const BPF_TAX = 0 pkg syscall (netbsd-arm-cgo), const BPF_TXA = 128 pkg syscall (netbsd-arm-cgo), const BPF_W = 0 pkg syscall (netbsd-arm-cgo), const BPF_X = 8 pkg syscall (netbsd-arm-cgo), const BRKINT = 2 pkg syscall (netbsd-arm-cgo), const CFLUSH = 15 pkg syscall (netbsd-arm-cgo), const CLOCAL = 32768 pkg syscall (netbsd-arm-cgo), const CREAD = 2048 pkg syscall (netbsd-arm-cgo), const CS5 = 0 pkg syscall (netbsd-arm-cgo), const CS6 = 256 pkg syscall (netbsd-arm-cgo), const CS7 = 512 pkg syscall (netbsd-arm-cgo), const CS8 = 768 pkg syscall (netbsd-arm-cgo), const CSIZE = 768 pkg syscall (netbsd-arm-cgo), const CSTART = 17 pkg syscall (netbsd-arm-cgo), const CSTATUS = 20 pkg syscall (netbsd-arm-cgo), const CSTOP = 19 pkg syscall (netbsd-arm-cgo), const CSTOPB = 1024 pkg syscall (netbsd-arm-cgo), const CSUSP = 26 pkg syscall (netbsd-arm-cgo), const CTL_MAXNAME = 12 pkg syscall (netbsd-arm-cgo), const CTL_NET = 4 pkg syscall (netbsd-arm-cgo), const CTL_QUERY = -2 pkg syscall (netbsd-arm-cgo), const DIOCBSFLUSH = 536896632 pkg syscall (netbsd-arm-cgo), const DLT_A429 = 184 pkg syscall (netbsd-arm-cgo), const DLT_A653_ICM = 185 pkg syscall (netbsd-arm-cgo), const DLT_AIRONET_HEADER = 120 pkg syscall (netbsd-arm-cgo), const DLT_AOS = 222 pkg syscall (netbsd-arm-cgo), const DLT_APPLE_IP_OVER_IEEE1394 = 138 pkg syscall (netbsd-arm-cgo), const DLT_ARCNET = 7 pkg syscall (netbsd-arm-cgo), const DLT_ARCNET_LINUX = 129 pkg syscall (netbsd-arm-cgo), const DLT_ATM_CLIP = 19 pkg syscall (netbsd-arm-cgo), const DLT_ATM_RFC1483 = 11 pkg syscall (netbsd-arm-cgo), const DLT_AURORA = 126 pkg syscall (netbsd-arm-cgo), const DLT_AX25 = 3 pkg syscall (netbsd-arm-cgo), const DLT_AX25_KISS = 202 pkg syscall (netbsd-arm-cgo), const DLT_BACNET_MS_TP = 165 pkg syscall (netbsd-arm-cgo), const DLT_BLUETOOTH_HCI_H4 = 187 pkg syscall (netbsd-arm-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 pkg syscall (netbsd-arm-cgo), const DLT_CAN20B = 190 pkg syscall (netbsd-arm-cgo), const DLT_CAN_SOCKETCAN = 227 pkg syscall (netbsd-arm-cgo), const DLT_CHAOS = 5 pkg syscall (netbsd-arm-cgo), const DLT_CISCO_IOS = 118 pkg syscall (netbsd-arm-cgo), const DLT_C_HDLC = 104 pkg syscall (netbsd-arm-cgo), const DLT_C_HDLC_WITH_DIR = 205 pkg syscall (netbsd-arm-cgo), const DLT_DECT = 221 pkg syscall (netbsd-arm-cgo), const DLT_DOCSIS = 143 pkg syscall (netbsd-arm-cgo), const DLT_ECONET = 115 pkg syscall (netbsd-arm-cgo), const DLT_EN10MB = 1 pkg syscall (netbsd-arm-cgo), const DLT_EN3MB = 2 pkg syscall (netbsd-arm-cgo), const DLT_ENC = 109 pkg syscall (netbsd-arm-cgo), const DLT_ERF = 197 pkg syscall (netbsd-arm-cgo), const DLT_ERF_ETH = 175 pkg syscall (netbsd-arm-cgo), const DLT_ERF_POS = 176 pkg syscall (netbsd-arm-cgo), const DLT_FC_2 = 224 pkg syscall (netbsd-arm-cgo), const DLT_FC_2_WITH_FRAME_DELIMS = 225 pkg syscall (netbsd-arm-cgo), const DLT_FDDI = 10 pkg syscall (netbsd-arm-cgo), const DLT_FLEXRAY = 210 pkg syscall (netbsd-arm-cgo), const DLT_FRELAY = 107 pkg syscall (netbsd-arm-cgo), const DLT_FRELAY_WITH_DIR = 206 pkg syscall (netbsd-arm-cgo), const DLT_GCOM_SERIAL = 173 pkg syscall (netbsd-arm-cgo), const DLT_GCOM_T1E1 = 172 pkg syscall (netbsd-arm-cgo), const DLT_GPF_F = 171 pkg syscall (netbsd-arm-cgo), const DLT_GPF_T = 170 pkg syscall (netbsd-arm-cgo), const DLT_GPRS_LLC = 169 pkg syscall (netbsd-arm-cgo), const DLT_GSMTAP_ABIS = 218 pkg syscall (netbsd-arm-cgo), const DLT_GSMTAP_UM = 217 pkg syscall (netbsd-arm-cgo), const DLT_HDLC = 16 pkg syscall (netbsd-arm-cgo), const DLT_HHDLC = 121 pkg syscall (netbsd-arm-cgo), const DLT_HIPPI = 15 pkg syscall (netbsd-arm-cgo), const DLT_IBM_SN = 146 pkg syscall (netbsd-arm-cgo), const DLT_IBM_SP = 145 pkg syscall (netbsd-arm-cgo), const DLT_IEEE802 = 6 pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_11 = 105 pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_11_RADIO = 127 pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_11_RADIO_AVS = 163 pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_15_4 = 195 pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_15_4_LINUX = 191 pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_15_4_NONASK_PHY = 215 pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_16_MAC_CPS = 188 pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 pkg syscall (netbsd-arm-cgo), const DLT_IPMB = 199 pkg syscall (netbsd-arm-cgo), const DLT_IPMB_LINUX = 209 pkg syscall (netbsd-arm-cgo), const DLT_IPNET = 226 pkg syscall (netbsd-arm-cgo), const DLT_IPV4 = 228 pkg syscall (netbsd-arm-cgo), const DLT_IPV6 = 229 pkg syscall (netbsd-arm-cgo), const DLT_IP_OVER_FC = 122 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_ATM1 = 137 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_ATM2 = 135 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_CHDLC = 181 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_ES = 132 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_ETHER = 178 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_FRELAY = 180 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_GGSN = 133 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_ISM = 194 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_MFR = 134 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_MLFR = 131 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_MLPPP = 130 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_MONITOR = 164 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_PIC_PEER = 174 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_PPP = 179 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_PPPOE = 167 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_PPPOE_ATM = 168 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_SERVICES = 136 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_ST = 200 pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_VP = 183 pkg syscall (netbsd-arm-cgo), const DLT_LAPB_WITH_DIR = 207 pkg syscall (netbsd-arm-cgo), const DLT_LAPD = 203 pkg syscall (netbsd-arm-cgo), const DLT_LIN = 212 pkg syscall (netbsd-arm-cgo), const DLT_LINUX_EVDEV = 216 pkg syscall (netbsd-arm-cgo), const DLT_LINUX_IRDA = 144 pkg syscall (netbsd-arm-cgo), const DLT_LINUX_LAPD = 177 pkg syscall (netbsd-arm-cgo), const DLT_LINUX_SLL = 113 pkg syscall (netbsd-arm-cgo), const DLT_LOOP = 108 pkg syscall (netbsd-arm-cgo), const DLT_LTALK = 114 pkg syscall (netbsd-arm-cgo), const DLT_MFR = 182 pkg syscall (netbsd-arm-cgo), const DLT_MOST = 211 pkg syscall (netbsd-arm-cgo), const DLT_MPLS = 219 pkg syscall (netbsd-arm-cgo), const DLT_MTP2 = 140 pkg syscall (netbsd-arm-cgo), const DLT_MTP2_WITH_PHDR = 139 pkg syscall (netbsd-arm-cgo), const DLT_MTP3 = 141 pkg syscall (netbsd-arm-cgo), const DLT_NULL = 0 pkg syscall (netbsd-arm-cgo), const DLT_PCI_EXP = 125 pkg syscall (netbsd-arm-cgo), const DLT_PFLOG = 117 pkg syscall (netbsd-arm-cgo), const DLT_PFSYNC = 18 pkg syscall (netbsd-arm-cgo), const DLT_PPI = 192 pkg syscall (netbsd-arm-cgo), const DLT_PPP = 9 pkg syscall (netbsd-arm-cgo), const DLT_PPP_BSDOS = 14 pkg syscall (netbsd-arm-cgo), const DLT_PPP_ETHER = 51 pkg syscall (netbsd-arm-cgo), const DLT_PPP_PPPD = 166 pkg syscall (netbsd-arm-cgo), const DLT_PPP_SERIAL = 50 pkg syscall (netbsd-arm-cgo), const DLT_PPP_WITH_DIR = 204 pkg syscall (netbsd-arm-cgo), const DLT_PRISM_HEADER = 119 pkg syscall (netbsd-arm-cgo), const DLT_PRONET = 4 pkg syscall (netbsd-arm-cgo), const DLT_RAIF1 = 198 pkg syscall (netbsd-arm-cgo), const DLT_RAW = 12 pkg syscall (netbsd-arm-cgo), const DLT_RAWAF_MASK = 35913728 pkg syscall (netbsd-arm-cgo), const DLT_RIO = 124 pkg syscall (netbsd-arm-cgo), const DLT_SCCP = 142 pkg syscall (netbsd-arm-cgo), const DLT_SITA = 196 pkg syscall (netbsd-arm-cgo), const DLT_SLIP = 8 pkg syscall (netbsd-arm-cgo), const DLT_SLIP_BSDOS = 13 pkg syscall (netbsd-arm-cgo), const DLT_SUNATM = 123 pkg syscall (netbsd-arm-cgo), const DLT_SYMANTEC_FIREWALL = 99 pkg syscall (netbsd-arm-cgo), const DLT_TZSP = 128 pkg syscall (netbsd-arm-cgo), const DLT_USB = 186 pkg syscall (netbsd-arm-cgo), const DLT_USB_LINUX = 189 pkg syscall (netbsd-arm-cgo), const DLT_USB_LINUX_MMAPPED = 220 pkg syscall (netbsd-arm-cgo), const DLT_WIHART = 223 pkg syscall (netbsd-arm-cgo), const DLT_X2E_SERIAL = 213 pkg syscall (netbsd-arm-cgo), const DLT_X2E_XORAYA = 214 pkg syscall (netbsd-arm-cgo), const DT_BLK = 6 pkg syscall (netbsd-arm-cgo), const DT_CHR = 2 pkg syscall (netbsd-arm-cgo), const DT_DIR = 4 pkg syscall (netbsd-arm-cgo), const DT_FIFO = 1 pkg syscall (netbsd-arm-cgo), const DT_LNK = 10 pkg syscall (netbsd-arm-cgo), const DT_REG = 8 pkg syscall (netbsd-arm-cgo), const DT_SOCK = 12 pkg syscall (netbsd-arm-cgo), const DT_UNKNOWN = 0 pkg syscall (netbsd-arm-cgo), const DT_WHT = 14 pkg syscall (netbsd-arm-cgo), const E2BIG = 7 pkg syscall (netbsd-arm-cgo), const EACCES = 13 pkg syscall (netbsd-arm-cgo), const EADDRINUSE = 48 pkg syscall (netbsd-arm-cgo), const EADDRNOTAVAIL = 49 pkg syscall (netbsd-arm-cgo), const EAFNOSUPPORT = 47 pkg syscall (netbsd-arm-cgo), const EAGAIN = 35 pkg syscall (netbsd-arm-cgo), const EALREADY = 37 pkg syscall (netbsd-arm-cgo), const EAUTH = 80 pkg syscall (netbsd-arm-cgo), const EBADF = 9 pkg syscall (netbsd-arm-cgo), const EBADMSG = 88 pkg syscall (netbsd-arm-cgo), const EBADRPC = 72 pkg syscall (netbsd-arm-cgo), const EBUSY = 16 pkg syscall (netbsd-arm-cgo), const ECANCELED = 87 pkg syscall (netbsd-arm-cgo), const ECHILD = 10 pkg syscall (netbsd-arm-cgo), const ECHO = 8 pkg syscall (netbsd-arm-cgo), const ECHOCTL = 64 pkg syscall (netbsd-arm-cgo), const ECHOE = 2 pkg syscall (netbsd-arm-cgo), const ECHOK = 4 pkg syscall (netbsd-arm-cgo), const ECHOKE = 1 pkg syscall (netbsd-arm-cgo), const ECHONL = 16 pkg syscall (netbsd-arm-cgo), const ECHOPRT = 32 pkg syscall (netbsd-arm-cgo), const ECONNABORTED = 53 pkg syscall (netbsd-arm-cgo), const ECONNREFUSED = 61 pkg syscall (netbsd-arm-cgo), const ECONNRESET = 54 pkg syscall (netbsd-arm-cgo), const EDEADLK = 11 pkg syscall (netbsd-arm-cgo), const EDESTADDRREQ = 39 pkg syscall (netbsd-arm-cgo), const EDOM = 33 pkg syscall (netbsd-arm-cgo), const EDQUOT = 69 pkg syscall (netbsd-arm-cgo), const EEXIST = 17 pkg syscall (netbsd-arm-cgo), const EFAULT = 14 pkg syscall (netbsd-arm-cgo), const EFBIG = 27 pkg syscall (netbsd-arm-cgo), const EFTYPE = 79 pkg syscall (netbsd-arm-cgo), const EHOSTDOWN = 64 pkg syscall (netbsd-arm-cgo), const EHOSTUNREACH = 65 pkg syscall (netbsd-arm-cgo), const EIDRM = 82 pkg syscall (netbsd-arm-cgo), const EILSEQ = 85 pkg syscall (netbsd-arm-cgo), const EINPROGRESS = 36 pkg syscall (netbsd-arm-cgo), const EINTR = 4 pkg syscall (netbsd-arm-cgo), const EINVAL = 22 pkg syscall (netbsd-arm-cgo), const EIO = 5 pkg syscall (netbsd-arm-cgo), const EISCONN = 56 pkg syscall (netbsd-arm-cgo), const EISDIR = 21 pkg syscall (netbsd-arm-cgo), const ELAST = 96 pkg syscall (netbsd-arm-cgo), const ELOOP = 62 pkg syscall (netbsd-arm-cgo), const EMFILE = 24 pkg syscall (netbsd-arm-cgo), const EMLINK = 31 pkg syscall (netbsd-arm-cgo), const EMSGSIZE = 40 pkg syscall (netbsd-arm-cgo), const EMULTIHOP = 94 pkg syscall (netbsd-arm-cgo), const EMUL_LINUX = 1 pkg syscall (netbsd-arm-cgo), const EMUL_LINUX32 = 5 pkg syscall (netbsd-arm-cgo), const EMUL_MAXID = 6 pkg syscall (netbsd-arm-cgo), const ENAMETOOLONG = 63 pkg syscall (netbsd-arm-cgo), const ENEEDAUTH = 81 pkg syscall (netbsd-arm-cgo), const ENETDOWN = 50 pkg syscall (netbsd-arm-cgo), const ENETRESET = 52 pkg syscall (netbsd-arm-cgo), const ENETUNREACH = 51 pkg syscall (netbsd-arm-cgo), const ENFILE = 23 pkg syscall (netbsd-arm-cgo), const ENOATTR = 93 pkg syscall (netbsd-arm-cgo), const ENOBUFS = 55 pkg syscall (netbsd-arm-cgo), const ENODATA = 89 pkg syscall (netbsd-arm-cgo), const ENODEV = 19 pkg syscall (netbsd-arm-cgo), const ENOEXEC = 8 pkg syscall (netbsd-arm-cgo), const ENOLCK = 77 pkg syscall (netbsd-arm-cgo), const ENOLINK = 95 pkg syscall (netbsd-arm-cgo), const ENOMEM = 12 pkg syscall (netbsd-arm-cgo), const ENOMSG = 83 pkg syscall (netbsd-arm-cgo), const ENOPROTOOPT = 42 pkg syscall (netbsd-arm-cgo), const ENOSPC = 28 pkg syscall (netbsd-arm-cgo), const ENOSR = 90 pkg syscall (netbsd-arm-cgo), const ENOSTR = 91 pkg syscall (netbsd-arm-cgo), const ENOSYS = 78 pkg syscall (netbsd-arm-cgo), const ENOTBLK = 15 pkg syscall (netbsd-arm-cgo), const ENOTCONN = 57 pkg syscall (netbsd-arm-cgo), const ENOTDIR = 20 pkg syscall (netbsd-arm-cgo), const ENOTEMPTY = 66 pkg syscall (netbsd-arm-cgo), const ENOTSOCK = 38 pkg syscall (netbsd-arm-cgo), const ENOTSUP = 86 pkg syscall (netbsd-arm-cgo), const ENOTTY = 25 pkg syscall (netbsd-arm-cgo), const ENXIO = 6 pkg syscall (netbsd-arm-cgo), const EOPNOTSUPP = 45 pkg syscall (netbsd-arm-cgo), const EOVERFLOW = 84 pkg syscall (netbsd-arm-cgo), const EPERM = 1 pkg syscall (netbsd-arm-cgo), const EPFNOSUPPORT = 46 pkg syscall (netbsd-arm-cgo), const EPIPE = 32 pkg syscall (netbsd-arm-cgo), const EPROCLIM = 67 pkg syscall (netbsd-arm-cgo), const EPROCUNAVAIL = 76 pkg syscall (netbsd-arm-cgo), const EPROGMISMATCH = 75 pkg syscall (netbsd-arm-cgo), const EPROGUNAVAIL = 74 pkg syscall (netbsd-arm-cgo), const EPROTO = 96 pkg syscall (netbsd-arm-cgo), const EPROTONOSUPPORT = 43 pkg syscall (netbsd-arm-cgo), const EPROTOTYPE = 41 pkg syscall (netbsd-arm-cgo), const ERANGE = 34 pkg syscall (netbsd-arm-cgo), const EREMOTE = 71 pkg syscall (netbsd-arm-cgo), const EROFS = 30 pkg syscall (netbsd-arm-cgo), const ERPCMISMATCH = 73 pkg syscall (netbsd-arm-cgo), const ESHUTDOWN = 58 pkg syscall (netbsd-arm-cgo), const ESOCKTNOSUPPORT = 44 pkg syscall (netbsd-arm-cgo), const ESPIPE = 29 pkg syscall (netbsd-arm-cgo), const ESRCH = 3 pkg syscall (netbsd-arm-cgo), const ESTALE = 70 pkg syscall (netbsd-arm-cgo), const ETHERCAP_JUMBO_MTU = 4 pkg syscall (netbsd-arm-cgo), const ETHERCAP_VLAN_HWTAGGING = 2 pkg syscall (netbsd-arm-cgo), const ETHERCAP_VLAN_MTU = 1 pkg syscall (netbsd-arm-cgo), const ETHERMIN = 46 pkg syscall (netbsd-arm-cgo), const ETHERMTU = 1500 pkg syscall (netbsd-arm-cgo), const ETHERMTU_JUMBO = 9000 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_8023 = 4 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_AARP = 33011 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ACCTON = 33680 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_AEONIC = 32822 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ALPHA = 33098 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_AMBER = 24584 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_AMOEBA = 33093 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_APOLLO = 33015 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_APOLLODOMAIN = 32793 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_APPLETALK = 32923 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_APPLITEK = 32967 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ARGONAUT = 32826 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ARP = 2054 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_AT = 32923 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ATALK = 32923 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ATOMIC = 34527 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ATT = 32873 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ATTSTANFORD = 32776 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_AUTOPHON = 32874 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_AXIS = 34902 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_BCLOOP = 36867 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_BOFL = 33026 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_CABLETRON = 28724 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_CHAOS = 2052 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_COMDESIGN = 32876 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_COMPUGRAPHIC = 32877 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_COUNTERPOINT = 32866 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_CRONUS = 32772 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_CRONUSVLN = 32771 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DCA = 4660 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DDE = 32891 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DEBNI = 43690 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECAM = 32840 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECCUST = 24582 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECDIAG = 24581 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECDNS = 32828 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECDTS = 32830 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECEXPER = 24576 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECLAST = 32833 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECLTM = 32831 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECMUMPS = 24585 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECNETBIOS = 32832 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DELTACON = 34526 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DIDDLE = 17185 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DLOG1 = 1632 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DLOG2 = 1633 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DN = 24579 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DOGFIGHT = 6537 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DSMD = 32825 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ECMA = 2051 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ENCRYPT = 32829 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ES = 32861 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_EXCELAN = 32784 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_EXPERDATA = 32841 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_FLIP = 33094 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_FLOWCONTROL = 34824 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_FRARP = 2056 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_GENDYN = 32872 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_HAYES = 33072 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_HIPPI_FP = 33152 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_HITACHI = 34848 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_HP = 32773 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IEEEPUP = 2560 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IEEEPUPAT = 2561 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IMLBL = 19522 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IMLBLDIAG = 16972 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IP = 2048 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IPAS = 34668 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IPV6 = 34525 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IPX = 33079 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IPXNEW = 32823 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_KALPANA = 34178 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_LANBRIDGE = 32824 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_LANPROBE = 34952 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_LAT = 24580 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_LBACK = 36864 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_LITTLE = 32864 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_LOGICRAFT = 33096 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_LOOPBACK = 36864 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MATRA = 32890 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MAX = 65535 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MERIT = 32892 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MICP = 34618 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MOPDL = 24577 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MOPRC = 24578 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MOTOROLA = 33165 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MPLS = 34887 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MPLS_MCAST = 34888 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MUMPS = 33087 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPCC = 15364 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPCLAIM = 15369 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPCLREQ = 15365 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPCLRSP = 15366 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPCREQ = 15362 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPCRSP = 15363 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPDG = 15367 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPDGB = 15368 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPDLTE = 15370 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPRAR = 15372 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPRAS = 15371 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPRST = 15373 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPSCD = 15361 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPVCD = 15360 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBS = 2050 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NCD = 33097 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NESTAR = 32774 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NETBEUI = 33169 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NOVELL = 33080 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NS = 1536 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NSAT = 1537 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NSCOMPAT = 2055 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NTRAILER = 16 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_OS9 = 28679 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_OS9NET = 28681 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PACER = 32966 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PAE = 34958 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PCS = 16962 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PLANNING = 32836 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PPP = 34827 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PPPOE = 34916 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PPPOEDISC = 34915 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PRIMENTS = 28721 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PUP = 512 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PUPAT = 512 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_RACAL = 28720 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_RATIONAL = 33104 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_RAWFR = 25945 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_RCL = 6549 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_RDP = 34617 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_RETIX = 33010 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_REVARP = 32821 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SCA = 24583 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SECTRA = 34523 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SECUREDATA = 34669 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SGITW = 33150 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SG_BOUNCE = 32790 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SG_DIAG = 32787 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SG_NETGAMES = 32788 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SG_RESV = 32789 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SIMNET = 21000 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SLOWPROTOCOLS = 34825 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SNA = 32981 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SNMP = 33100 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SONIX = 64245 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SPIDER = 32927 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SPRITE = 1280 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_STP = 33153 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TALARIS = 33067 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TALARISMC = 34091 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TCPCOMP = 34667 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TCPSM = 36866 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TEC = 33103 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TIGAN = 32815 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TRAIL = 4096 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TRANSETHER = 25944 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TYMSHARE = 32814 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_UBBST = 28677 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_UBDEBUG = 2304 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_UBDIAGLOOP = 28674 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_UBDL = 28672 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_UBNIU = 28673 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_UBNMC = 28675 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VALID = 5632 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VARIAN = 32989 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VAXELN = 32827 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VEECO = 32871 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VEXP = 32859 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VGLAB = 33073 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VINES = 2989 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VINESECHO = 2991 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VINESLOOP = 2990 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VITAL = 65280 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VLAN = 33024 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VLTLMAN = 32896 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VPROD = 32860 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VURESERVED = 33095 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_WATERLOO = 33072 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_WELLFLEET = 33027 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_X25 = 2053 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_X75 = 2049 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_XNSSM = 36865 pkg syscall (netbsd-arm-cgo), const ETHERTYPE_XTP = 33149 pkg syscall (netbsd-arm-cgo), const ETHER_ADDR_LEN = 6 pkg syscall (netbsd-arm-cgo), const ETHER_CRC_LEN = 4 pkg syscall (netbsd-arm-cgo), const ETHER_CRC_POLY_BE = 79764918 pkg syscall (netbsd-arm-cgo), const ETHER_CRC_POLY_LE = 3988292384 pkg syscall (netbsd-arm-cgo), const ETHER_HDR_LEN = 14 pkg syscall (netbsd-arm-cgo), const ETHER_MAX_LEN = 1518 pkg syscall (netbsd-arm-cgo), const ETHER_MAX_LEN_JUMBO = 9018 pkg syscall (netbsd-arm-cgo), const ETHER_MIN_LEN = 64 pkg syscall (netbsd-arm-cgo), const ETHER_PPPOE_ENCAP_LEN = 8 pkg syscall (netbsd-arm-cgo), const ETHER_TYPE_LEN = 2 pkg syscall (netbsd-arm-cgo), const ETHER_VLAN_ENCAP_LEN = 4 pkg syscall (netbsd-arm-cgo), const ETIME = 92 pkg syscall (netbsd-arm-cgo), const ETIMEDOUT = 60 pkg syscall (netbsd-arm-cgo), const ETOOMANYREFS = 59 pkg syscall (netbsd-arm-cgo), const ETXTBSY = 26 pkg syscall (netbsd-arm-cgo), const EUSERS = 68 pkg syscall (netbsd-arm-cgo), const EVFILT_AIO = 2 pkg syscall (netbsd-arm-cgo), const EVFILT_PROC = 4 pkg syscall (netbsd-arm-cgo), const EVFILT_READ = 0 pkg syscall (netbsd-arm-cgo), const EVFILT_SIGNAL = 5 pkg syscall (netbsd-arm-cgo), const EVFILT_SYSCOUNT = 7 pkg syscall (netbsd-arm-cgo), const EVFILT_TIMER = 6 pkg syscall (netbsd-arm-cgo), const EVFILT_VNODE = 3 pkg syscall (netbsd-arm-cgo), const EVFILT_WRITE = 1 pkg syscall (netbsd-arm-cgo), const EV_ADD = 1 pkg syscall (netbsd-arm-cgo), const EV_CLEAR = 32 pkg syscall (netbsd-arm-cgo), const EV_DELETE = 2 pkg syscall (netbsd-arm-cgo), const EV_DISABLE = 8 pkg syscall (netbsd-arm-cgo), const EV_ENABLE = 4 pkg syscall (netbsd-arm-cgo), const EV_EOF = 32768 pkg syscall (netbsd-arm-cgo), const EV_ERROR = 16384 pkg syscall (netbsd-arm-cgo), const EV_FLAG1 = 8192 pkg syscall (netbsd-arm-cgo), const EV_ONESHOT = 16 pkg syscall (netbsd-arm-cgo), const EV_SYSFLAGS = 61440 pkg syscall (netbsd-arm-cgo), const EWOULDBLOCK = 35 pkg syscall (netbsd-arm-cgo), const EXDEV = 18 pkg syscall (netbsd-arm-cgo), const EXTA = 19200 pkg syscall (netbsd-arm-cgo), const EXTB = 38400 pkg syscall (netbsd-arm-cgo), const EXTPROC = 2048 pkg syscall (netbsd-arm-cgo), const FD_CLOEXEC = 1 pkg syscall (netbsd-arm-cgo), const FD_SETSIZE = 256 pkg syscall (netbsd-arm-cgo), const FLUSHO = 8388608 pkg syscall (netbsd-arm-cgo), const F_CLOSEM = 10 pkg syscall (netbsd-arm-cgo), const F_DUPFD = 0 pkg syscall (netbsd-arm-cgo), const F_DUPFD_CLOEXEC = 12 pkg syscall (netbsd-arm-cgo), const F_FSCTL = -2147483648 pkg syscall (netbsd-arm-cgo), const F_FSDIRMASK = 1879048192 pkg syscall (netbsd-arm-cgo), const F_FSIN = 268435456 pkg syscall (netbsd-arm-cgo), const F_FSINOUT = 805306368 pkg syscall (netbsd-arm-cgo), const F_FSOUT = 536870912 pkg syscall (netbsd-arm-cgo), const F_FSPRIV = 32768 pkg syscall (netbsd-arm-cgo), const F_FSVOID = 1073741824 pkg syscall (netbsd-arm-cgo), const F_GETFD = 1 pkg syscall (netbsd-arm-cgo), const F_GETFL = 3 pkg syscall (netbsd-arm-cgo), const F_GETLK = 7 pkg syscall (netbsd-arm-cgo), const F_GETNOSIGPIPE = 13 pkg syscall (netbsd-arm-cgo), const F_GETOWN = 5 pkg syscall (netbsd-arm-cgo), const F_MAXFD = 11 pkg syscall (netbsd-arm-cgo), const F_OK = 0 pkg syscall (netbsd-arm-cgo), const F_PARAM_MASK = 4095 pkg syscall (netbsd-arm-cgo), const F_PARAM_MAX = 4095 pkg syscall (netbsd-arm-cgo), const F_RDLCK = 1 pkg syscall (netbsd-arm-cgo), const F_SETFD = 2 pkg syscall (netbsd-arm-cgo), const F_SETFL = 4 pkg syscall (netbsd-arm-cgo), const F_SETLK = 8 pkg syscall (netbsd-arm-cgo), const F_SETLKW = 9 pkg syscall (netbsd-arm-cgo), const F_SETNOSIGPIPE = 14 pkg syscall (netbsd-arm-cgo), const F_SETOWN = 6 pkg syscall (netbsd-arm-cgo), const F_UNLCK = 2 pkg syscall (netbsd-arm-cgo), const F_WRLCK = 3 pkg syscall (netbsd-arm-cgo), const HUPCL = 16384 pkg syscall (netbsd-arm-cgo), const ICANON = 256 pkg syscall (netbsd-arm-cgo), const ICRNL = 256 pkg syscall (netbsd-arm-cgo), const IEXTEN = 1024 pkg syscall (netbsd-arm-cgo), const IFAN_ARRIVAL = 0 pkg syscall (netbsd-arm-cgo), const IFAN_DEPARTURE = 1 pkg syscall (netbsd-arm-cgo), const IFA_ROUTE = 1 pkg syscall (netbsd-arm-cgo), const IFF_ALLMULTI = 512 pkg syscall (netbsd-arm-cgo), const IFF_CANTCHANGE = 36690 pkg syscall (netbsd-arm-cgo), const IFF_DEBUG = 4 pkg syscall (netbsd-arm-cgo), const IFF_LINK0 = 4096 pkg syscall (netbsd-arm-cgo), const IFF_LINK1 = 8192 pkg syscall (netbsd-arm-cgo), const IFF_LINK2 = 16384 pkg syscall (netbsd-arm-cgo), const IFF_LOOPBACK = 8 pkg syscall (netbsd-arm-cgo), const IFF_MULTICAST = 32768 pkg syscall (netbsd-arm-cgo), const IFF_NOARP = 128 pkg syscall (netbsd-arm-cgo), const IFF_NOTRAILERS = 32 pkg syscall (netbsd-arm-cgo), const IFF_OACTIVE = 1024 pkg syscall (netbsd-arm-cgo), const IFF_POINTOPOINT = 16 pkg syscall (netbsd-arm-cgo), const IFF_PROMISC = 256 pkg syscall (netbsd-arm-cgo), const IFF_RUNNING = 64 pkg syscall (netbsd-arm-cgo), const IFF_SIMPLEX = 2048 pkg syscall (netbsd-arm-cgo), const IFNAMSIZ = 16 pkg syscall (netbsd-arm-cgo), const IFT_1822 = 2 pkg syscall (netbsd-arm-cgo), const IFT_A12MPPSWITCH = 130 pkg syscall (netbsd-arm-cgo), const IFT_AAL2 = 187 pkg syscall (netbsd-arm-cgo), const IFT_AAL5 = 49 pkg syscall (netbsd-arm-cgo), const IFT_ADSL = 94 pkg syscall (netbsd-arm-cgo), const IFT_AFLANE8023 = 59 pkg syscall (netbsd-arm-cgo), const IFT_AFLANE8025 = 60 pkg syscall (netbsd-arm-cgo), const IFT_ARAP = 88 pkg syscall (netbsd-arm-cgo), const IFT_ARCNET = 35 pkg syscall (netbsd-arm-cgo), const IFT_ARCNETPLUS = 36 pkg syscall (netbsd-arm-cgo), const IFT_ASYNC = 84 pkg syscall (netbsd-arm-cgo), const IFT_ATM = 37 pkg syscall (netbsd-arm-cgo), const IFT_ATMDXI = 105 pkg syscall (netbsd-arm-cgo), const IFT_ATMFUNI = 106 pkg syscall (netbsd-arm-cgo), const IFT_ATMIMA = 107 pkg syscall (netbsd-arm-cgo), const IFT_ATMLOGICAL = 80 pkg syscall (netbsd-arm-cgo), const IFT_ATMRADIO = 189 pkg syscall (netbsd-arm-cgo), const IFT_ATMSUBINTERFACE = 134 pkg syscall (netbsd-arm-cgo), const IFT_ATMVCIENDPT = 194 pkg syscall (netbsd-arm-cgo), const IFT_ATMVIRTUAL = 149 pkg syscall (netbsd-arm-cgo), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (netbsd-arm-cgo), const IFT_BRIDGE = 209 pkg syscall (netbsd-arm-cgo), const IFT_BSC = 83 pkg syscall (netbsd-arm-cgo), const IFT_CARP = 248 pkg syscall (netbsd-arm-cgo), const IFT_CCTEMUL = 61 pkg syscall (netbsd-arm-cgo), const IFT_CEPT = 19 pkg syscall (netbsd-arm-cgo), const IFT_CES = 133 pkg syscall (netbsd-arm-cgo), const IFT_CHANNEL = 70 pkg syscall (netbsd-arm-cgo), const IFT_CNR = 85 pkg syscall (netbsd-arm-cgo), const IFT_COFFEE = 132 pkg syscall (netbsd-arm-cgo), const IFT_COMPOSITELINK = 155 pkg syscall (netbsd-arm-cgo), const IFT_DCN = 141 pkg syscall (netbsd-arm-cgo), const IFT_DIGITALPOWERLINE = 138 pkg syscall (netbsd-arm-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (netbsd-arm-cgo), const IFT_DLSW = 74 pkg syscall (netbsd-arm-cgo), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (netbsd-arm-cgo), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (netbsd-arm-cgo), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (netbsd-arm-cgo), const IFT_DOCSCABLEUPSTREAMCHANNEL = 205 pkg syscall (netbsd-arm-cgo), const IFT_DS0 = 81 pkg syscall (netbsd-arm-cgo), const IFT_DS0BUNDLE = 82 pkg syscall (netbsd-arm-cgo), const IFT_DS1FDL = 170 pkg syscall (netbsd-arm-cgo), const IFT_DS3 = 30 pkg syscall (netbsd-arm-cgo), const IFT_DTM = 140 pkg syscall (netbsd-arm-cgo), const IFT_DVBASILN = 172 pkg syscall (netbsd-arm-cgo), const IFT_DVBASIOUT = 173 pkg syscall (netbsd-arm-cgo), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (netbsd-arm-cgo), const IFT_DVBRCCMACLAYER = 146 pkg syscall (netbsd-arm-cgo), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (netbsd-arm-cgo), const IFT_ECONET = 206 pkg syscall (netbsd-arm-cgo), const IFT_EON = 25 pkg syscall (netbsd-arm-cgo), const IFT_EPLRS = 87 pkg syscall (netbsd-arm-cgo), const IFT_ESCON = 73 pkg syscall (netbsd-arm-cgo), const IFT_ETHER = 6 pkg syscall (netbsd-arm-cgo), const IFT_FAITH = 242 pkg syscall (netbsd-arm-cgo), const IFT_FAST = 125 pkg syscall (netbsd-arm-cgo), const IFT_FASTETHER = 62 pkg syscall (netbsd-arm-cgo), const IFT_FASTETHERFX = 69 pkg syscall (netbsd-arm-cgo), const IFT_FDDI = 15 pkg syscall (netbsd-arm-cgo), const IFT_FIBRECHANNEL = 56 pkg syscall (netbsd-arm-cgo), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (netbsd-arm-cgo), const IFT_FRAMERELAYMPI = 92 pkg syscall (netbsd-arm-cgo), const IFT_FRDLCIENDPT = 193 pkg syscall (netbsd-arm-cgo), const IFT_FRELAY = 32 pkg syscall (netbsd-arm-cgo), const IFT_FRELAYDCE = 44 pkg syscall (netbsd-arm-cgo), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (netbsd-arm-cgo), const IFT_FRFORWARD = 158 pkg syscall (netbsd-arm-cgo), const IFT_G703AT2MB = 67 pkg syscall (netbsd-arm-cgo), const IFT_G703AT64K = 66 pkg syscall (netbsd-arm-cgo), const IFT_GIF = 240 pkg syscall (netbsd-arm-cgo), const IFT_GIGABITETHERNET = 117 pkg syscall (netbsd-arm-cgo), const IFT_GR303IDT = 178 pkg syscall (netbsd-arm-cgo), const IFT_GR303RDT = 177 pkg syscall (netbsd-arm-cgo), const IFT_H323GATEKEEPER = 164 pkg syscall (netbsd-arm-cgo), const IFT_H323PROXY = 165 pkg syscall (netbsd-arm-cgo), const IFT_HDH1822 = 3 pkg syscall (netbsd-arm-cgo), const IFT_HDLC = 118 pkg syscall (netbsd-arm-cgo), const IFT_HDSL2 = 168 pkg syscall (netbsd-arm-cgo), const IFT_HIPERLAN2 = 183 pkg syscall (netbsd-arm-cgo), const IFT_HIPPI = 47 pkg syscall (netbsd-arm-cgo), const IFT_HIPPIINTERFACE = 57 pkg syscall (netbsd-arm-cgo), const IFT_HOSTPAD = 90 pkg syscall (netbsd-arm-cgo), const IFT_HSSI = 46 pkg syscall (netbsd-arm-cgo), const IFT_HY = 14 pkg syscall (netbsd-arm-cgo), const IFT_IBM370PARCHAN = 72 pkg syscall (netbsd-arm-cgo), const IFT_IDSL = 154 pkg syscall (netbsd-arm-cgo), const IFT_IEEE1394 = 144 pkg syscall (netbsd-arm-cgo), const IFT_IEEE80211 = 71 pkg syscall (netbsd-arm-cgo), const IFT_IEEE80212 = 55 pkg syscall (netbsd-arm-cgo), const IFT_IEEE8023ADLAG = 161 pkg syscall (netbsd-arm-cgo), const IFT_IFGSN = 145 pkg syscall (netbsd-arm-cgo), const IFT_IMT = 190 pkg syscall (netbsd-arm-cgo), const IFT_INFINIBAND = 199 pkg syscall (netbsd-arm-cgo), const IFT_INTERLEAVE = 124 pkg syscall (netbsd-arm-cgo), const IFT_IP = 126 pkg syscall (netbsd-arm-cgo), const IFT_IPFORWARD = 142 pkg syscall (netbsd-arm-cgo), const IFT_IPOVERATM = 114 pkg syscall (netbsd-arm-cgo), const IFT_IPOVERCDLC = 109 pkg syscall (netbsd-arm-cgo), const IFT_IPOVERCLAW = 110 pkg syscall (netbsd-arm-cgo), const IFT_IPSWITCH = 78 pkg syscall (netbsd-arm-cgo), const IFT_ISDN = 63 pkg syscall (netbsd-arm-cgo), const IFT_ISDNBASIC = 20 pkg syscall (netbsd-arm-cgo), const IFT_ISDNPRIMARY = 21 pkg syscall (netbsd-arm-cgo), const IFT_ISDNS = 75 pkg syscall (netbsd-arm-cgo), const IFT_ISDNU = 76 pkg syscall (netbsd-arm-cgo), const IFT_ISO88022LLC = 41 pkg syscall (netbsd-arm-cgo), const IFT_ISO88023 = 7 pkg syscall (netbsd-arm-cgo), const IFT_ISO88024 = 8 pkg syscall (netbsd-arm-cgo), const IFT_ISO88025 = 9 pkg syscall (netbsd-arm-cgo), const IFT_ISO88025CRFPINT = 98 pkg syscall (netbsd-arm-cgo), const IFT_ISO88025DTR = 86 pkg syscall (netbsd-arm-cgo), const IFT_ISO88025FIBER = 115 pkg syscall (netbsd-arm-cgo), const IFT_ISO88026 = 10 pkg syscall (netbsd-arm-cgo), const IFT_ISUP = 179 pkg syscall (netbsd-arm-cgo), const IFT_L2VLAN = 135 pkg syscall (netbsd-arm-cgo), const IFT_L3IPVLAN = 136 pkg syscall (netbsd-arm-cgo), const IFT_L3IPXVLAN = 137 pkg syscall (netbsd-arm-cgo), const IFT_LAPB = 16 pkg syscall (netbsd-arm-cgo), const IFT_LAPD = 77 pkg syscall (netbsd-arm-cgo), const IFT_LAPF = 119 pkg syscall (netbsd-arm-cgo), const IFT_LINEGROUP = 210 pkg syscall (netbsd-arm-cgo), const IFT_LOCALTALK = 42 pkg syscall (netbsd-arm-cgo), const IFT_LOOP = 24 pkg syscall (netbsd-arm-cgo), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (netbsd-arm-cgo), const IFT_MFSIGLINK = 167 pkg syscall (netbsd-arm-cgo), const IFT_MIOX25 = 38 pkg syscall (netbsd-arm-cgo), const IFT_MODEM = 48 pkg syscall (netbsd-arm-cgo), const IFT_MPC = 113 pkg syscall (netbsd-arm-cgo), const IFT_MPLS = 166 pkg syscall (netbsd-arm-cgo), const IFT_MPLSTUNNEL = 150 pkg syscall (netbsd-arm-cgo), const IFT_MSDSL = 143 pkg syscall (netbsd-arm-cgo), const IFT_MVL = 191 pkg syscall (netbsd-arm-cgo), const IFT_MYRINET = 99 pkg syscall (netbsd-arm-cgo), const IFT_NFAS = 175 pkg syscall (netbsd-arm-cgo), const IFT_NSIP = 27 pkg syscall (netbsd-arm-cgo), const IFT_OPTICALCHANNEL = 195 pkg syscall (netbsd-arm-cgo), const IFT_OPTICALTRANSPORT = 196 pkg syscall (netbsd-arm-cgo), const IFT_OTHER = 1 pkg syscall (netbsd-arm-cgo), const IFT_P10 = 12 pkg syscall (netbsd-arm-cgo), const IFT_P80 = 13 pkg syscall (netbsd-arm-cgo), const IFT_PARA = 34 pkg syscall (netbsd-arm-cgo), const IFT_PFLOG = 245 pkg syscall (netbsd-arm-cgo), const IFT_PFSYNC = 246 pkg syscall (netbsd-arm-cgo), const IFT_PLC = 174 pkg syscall (netbsd-arm-cgo), const IFT_PON155 = 207 pkg syscall (netbsd-arm-cgo), const IFT_PON622 = 208 pkg syscall (netbsd-arm-cgo), const IFT_POS = 171 pkg syscall (netbsd-arm-cgo), const IFT_PPP = 23 pkg syscall (netbsd-arm-cgo), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (netbsd-arm-cgo), const IFT_PROPATM = 197 pkg syscall (netbsd-arm-cgo), const IFT_PROPBWAP2MP = 184 pkg syscall (netbsd-arm-cgo), const IFT_PROPCNLS = 89 pkg syscall (netbsd-arm-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (netbsd-arm-cgo), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (netbsd-arm-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (netbsd-arm-cgo), const IFT_PROPMUX = 54 pkg syscall (netbsd-arm-cgo), const IFT_PROPVIRTUAL = 53 pkg syscall (netbsd-arm-cgo), const IFT_PROPWIRELESSP2P = 157 pkg syscall (netbsd-arm-cgo), const IFT_PTPSERIAL = 22 pkg syscall (netbsd-arm-cgo), const IFT_PVC = 241 pkg syscall (netbsd-arm-cgo), const IFT_Q2931 = 201 pkg syscall (netbsd-arm-cgo), const IFT_QLLC = 68 pkg syscall (netbsd-arm-cgo), const IFT_RADIOMAC = 188 pkg syscall (netbsd-arm-cgo), const IFT_RADSL = 95 pkg syscall (netbsd-arm-cgo), const IFT_REACHDSL = 192 pkg syscall (netbsd-arm-cgo), const IFT_RFC1483 = 159 pkg syscall (netbsd-arm-cgo), const IFT_RS232 = 33 pkg syscall (netbsd-arm-cgo), const IFT_RSRB = 79 pkg syscall (netbsd-arm-cgo), const IFT_SDLC = 17 pkg syscall (netbsd-arm-cgo), const IFT_SDSL = 96 pkg syscall (netbsd-arm-cgo), const IFT_SHDSL = 169 pkg syscall (netbsd-arm-cgo), const IFT_SIP = 31 pkg syscall (netbsd-arm-cgo), const IFT_SIPSIG = 204 pkg syscall (netbsd-arm-cgo), const IFT_SIPTG = 203 pkg syscall (netbsd-arm-cgo), const IFT_SLIP = 28 pkg syscall (netbsd-arm-cgo), const IFT_SMDSDXI = 43 pkg syscall (netbsd-arm-cgo), const IFT_SMDSICIP = 52 pkg syscall (netbsd-arm-cgo), const IFT_SONET = 39 pkg syscall (netbsd-arm-cgo), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (netbsd-arm-cgo), const IFT_SONETPATH = 50 pkg syscall (netbsd-arm-cgo), const IFT_SONETVT = 51 pkg syscall (netbsd-arm-cgo), const IFT_SRP = 151 pkg syscall (netbsd-arm-cgo), const IFT_SS7SIGLINK = 156 pkg syscall (netbsd-arm-cgo), const IFT_STACKTOSTACK = 111 pkg syscall (netbsd-arm-cgo), const IFT_STARLAN = 11 pkg syscall (netbsd-arm-cgo), const IFT_STF = 215 pkg syscall (netbsd-arm-cgo), const IFT_T1 = 18 pkg syscall (netbsd-arm-cgo), const IFT_TDLC = 116 pkg syscall (netbsd-arm-cgo), const IFT_TELINK = 200 pkg syscall (netbsd-arm-cgo), const IFT_TERMPAD = 91 pkg syscall (netbsd-arm-cgo), const IFT_TR008 = 176 pkg syscall (netbsd-arm-cgo), const IFT_TRANSPHDLC = 123 pkg syscall (netbsd-arm-cgo), const IFT_TUNNEL = 131 pkg syscall (netbsd-arm-cgo), const IFT_ULTRA = 29 pkg syscall (netbsd-arm-cgo), const IFT_USB = 160 pkg syscall (netbsd-arm-cgo), const IFT_V11 = 64 pkg syscall (netbsd-arm-cgo), const IFT_V35 = 45 pkg syscall (netbsd-arm-cgo), const IFT_V36 = 65 pkg syscall (netbsd-arm-cgo), const IFT_V37 = 120 pkg syscall (netbsd-arm-cgo), const IFT_VDSL = 97 pkg syscall (netbsd-arm-cgo), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (netbsd-arm-cgo), const IFT_VIRTUALTG = 202 pkg syscall (netbsd-arm-cgo), const IFT_VOICEDID = 213 pkg syscall (netbsd-arm-cgo), const IFT_VOICEEM = 100 pkg syscall (netbsd-arm-cgo), const IFT_VOICEEMFGD = 211 pkg syscall (netbsd-arm-cgo), const IFT_VOICEENCAP = 103 pkg syscall (netbsd-arm-cgo), const IFT_VOICEFGDEANA = 212 pkg syscall (netbsd-arm-cgo), const IFT_VOICEFXO = 101 pkg syscall (netbsd-arm-cgo), const IFT_VOICEFXS = 102 pkg syscall (netbsd-arm-cgo), const IFT_VOICEOVERATM = 152 pkg syscall (netbsd-arm-cgo), const IFT_VOICEOVERCABLE = 198 pkg syscall (netbsd-arm-cgo), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (netbsd-arm-cgo), const IFT_VOICEOVERIP = 104 pkg syscall (netbsd-arm-cgo), const IFT_X213 = 93 pkg syscall (netbsd-arm-cgo), const IFT_X25 = 5 pkg syscall (netbsd-arm-cgo), const IFT_X25DDN = 4 pkg syscall (netbsd-arm-cgo), const IFT_X25HUNTGROUP = 122 pkg syscall (netbsd-arm-cgo), const IFT_X25MLP = 121 pkg syscall (netbsd-arm-cgo), const IFT_X25PLE = 40 pkg syscall (netbsd-arm-cgo), const IFT_XETHER = 26 pkg syscall (netbsd-arm-cgo), const IGNBRK = 1 pkg syscall (netbsd-arm-cgo), const IGNCR = 128 pkg syscall (netbsd-arm-cgo), const IGNPAR = 4 pkg syscall (netbsd-arm-cgo), const IMAXBEL = 8192 pkg syscall (netbsd-arm-cgo), const INLCR = 64 pkg syscall (netbsd-arm-cgo), const INPCK = 16 pkg syscall (netbsd-arm-cgo), const IN_CLASSA_HOST = 16777215 pkg syscall (netbsd-arm-cgo), const IN_CLASSA_MAX = 128 pkg syscall (netbsd-arm-cgo), const IN_CLASSA_NET = 4278190080 pkg syscall (netbsd-arm-cgo), const IN_CLASSA_NSHIFT = 24 pkg syscall (netbsd-arm-cgo), const IN_CLASSB_HOST = 65535 pkg syscall (netbsd-arm-cgo), const IN_CLASSB_MAX = 65536 pkg syscall (netbsd-arm-cgo), const IN_CLASSB_NET = 4294901760 pkg syscall (netbsd-arm-cgo), const IN_CLASSB_NSHIFT = 16 pkg syscall (netbsd-arm-cgo), const IN_CLASSC_HOST = 255 pkg syscall (netbsd-arm-cgo), const IN_CLASSC_NET = 4294967040 pkg syscall (netbsd-arm-cgo), const IN_CLASSC_NSHIFT = 8 pkg syscall (netbsd-arm-cgo), const IN_CLASSD_HOST = 268435455 pkg syscall (netbsd-arm-cgo), const IN_CLASSD_NET = 4026531840 pkg syscall (netbsd-arm-cgo), const IN_CLASSD_NSHIFT = 28 pkg syscall (netbsd-arm-cgo), const IN_LOOPBACKNET = 127 pkg syscall (netbsd-arm-cgo), const IPPROTO_AH = 51 pkg syscall (netbsd-arm-cgo), const IPPROTO_CARP = 112 pkg syscall (netbsd-arm-cgo), const IPPROTO_DONE = 257 pkg syscall (netbsd-arm-cgo), const IPPROTO_DSTOPTS = 60 pkg syscall (netbsd-arm-cgo), const IPPROTO_EGP = 8 pkg syscall (netbsd-arm-cgo), const IPPROTO_ENCAP = 98 pkg syscall (netbsd-arm-cgo), const IPPROTO_EON = 80 pkg syscall (netbsd-arm-cgo), const IPPROTO_ESP = 50 pkg syscall (netbsd-arm-cgo), const IPPROTO_ETHERIP = 97 pkg syscall (netbsd-arm-cgo), const IPPROTO_FRAGMENT = 44 pkg syscall (netbsd-arm-cgo), const IPPROTO_GGP = 3 pkg syscall (netbsd-arm-cgo), const IPPROTO_GRE = 47 pkg syscall (netbsd-arm-cgo), const IPPROTO_HOPOPTS = 0 pkg syscall (netbsd-arm-cgo), const IPPROTO_ICMP = 1 pkg syscall (netbsd-arm-cgo), const IPPROTO_ICMPV6 = 58 pkg syscall (netbsd-arm-cgo), const IPPROTO_IDP = 22 pkg syscall (netbsd-arm-cgo), const IPPROTO_IGMP = 2 pkg syscall (netbsd-arm-cgo), const IPPROTO_IPCOMP = 108 pkg syscall (netbsd-arm-cgo), const IPPROTO_IPIP = 4 pkg syscall (netbsd-arm-cgo), const IPPROTO_IPV4 = 4 pkg syscall (netbsd-arm-cgo), const IPPROTO_IPV6_ICMP = 58 pkg syscall (netbsd-arm-cgo), const IPPROTO_MAX = 256 pkg syscall (netbsd-arm-cgo), const IPPROTO_MAXID = 52 pkg syscall (netbsd-arm-cgo), const IPPROTO_MOBILE = 55 pkg syscall (netbsd-arm-cgo), const IPPROTO_NONE = 59 pkg syscall (netbsd-arm-cgo), const IPPROTO_PFSYNC = 240 pkg syscall (netbsd-arm-cgo), const IPPROTO_PIM = 103 pkg syscall (netbsd-arm-cgo), const IPPROTO_PUP = 12 pkg syscall (netbsd-arm-cgo), const IPPROTO_RAW = 255 pkg syscall (netbsd-arm-cgo), const IPPROTO_ROUTING = 43 pkg syscall (netbsd-arm-cgo), const IPPROTO_RSVP = 46 pkg syscall (netbsd-arm-cgo), const IPPROTO_TP = 29 pkg syscall (netbsd-arm-cgo), const IPPROTO_VRRP = 112 pkg syscall (netbsd-arm-cgo), const IPV6_CHECKSUM = 26 pkg syscall (netbsd-arm-cgo), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (netbsd-arm-cgo), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (netbsd-arm-cgo), const IPV6_DEFHLIM = 64 pkg syscall (netbsd-arm-cgo), const IPV6_DONTFRAG = 62 pkg syscall (netbsd-arm-cgo), const IPV6_DSTOPTS = 50 pkg syscall (netbsd-arm-cgo), const IPV6_FAITH = 29 pkg syscall (netbsd-arm-cgo), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (netbsd-arm-cgo), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (netbsd-arm-cgo), const IPV6_FRAGTTL = 120 pkg syscall (netbsd-arm-cgo), const IPV6_HLIMDEC = 1 pkg syscall (netbsd-arm-cgo), const IPV6_HOPLIMIT = 47 pkg syscall (netbsd-arm-cgo), const IPV6_HOPOPTS = 49 pkg syscall (netbsd-arm-cgo), const IPV6_IPSEC_POLICY = 28 pkg syscall (netbsd-arm-cgo), const IPV6_JOIN_GROUP = 12 pkg syscall (netbsd-arm-cgo), const IPV6_LEAVE_GROUP = 13 pkg syscall (netbsd-arm-cgo), const IPV6_MAXHLIM = 255 pkg syscall (netbsd-arm-cgo), const IPV6_MAXPACKET = 65535 pkg syscall (netbsd-arm-cgo), const IPV6_MMTU = 1280 pkg syscall (netbsd-arm-cgo), const IPV6_MULTICAST_HOPS = 10 pkg syscall (netbsd-arm-cgo), const IPV6_MULTICAST_IF = 9 pkg syscall (netbsd-arm-cgo), const IPV6_MULTICAST_LOOP = 11 pkg syscall (netbsd-arm-cgo), const IPV6_NEXTHOP = 48 pkg syscall (netbsd-arm-cgo), const IPV6_PATHMTU = 44 pkg syscall (netbsd-arm-cgo), const IPV6_PKTINFO = 46 pkg syscall (netbsd-arm-cgo), const IPV6_PORTRANGE = 14 pkg syscall (netbsd-arm-cgo), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (netbsd-arm-cgo), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (netbsd-arm-cgo), const IPV6_PORTRANGE_LOW = 2 pkg syscall (netbsd-arm-cgo), const IPV6_RECVDSTOPTS = 40 pkg syscall (netbsd-arm-cgo), const IPV6_RECVHOPLIMIT = 37 pkg syscall (netbsd-arm-cgo), const IPV6_RECVHOPOPTS = 39 pkg syscall (netbsd-arm-cgo), const IPV6_RECVPATHMTU = 43 pkg syscall (netbsd-arm-cgo), const IPV6_RECVPKTINFO = 36 pkg syscall (netbsd-arm-cgo), const IPV6_RECVRTHDR = 38 pkg syscall (netbsd-arm-cgo), const IPV6_RECVTCLASS = 57 pkg syscall (netbsd-arm-cgo), const IPV6_RTHDR = 51 pkg syscall (netbsd-arm-cgo), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (netbsd-arm-cgo), const IPV6_RTHDR_LOOSE = 0 pkg syscall (netbsd-arm-cgo), const IPV6_RTHDR_STRICT = 1 pkg syscall (netbsd-arm-cgo), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (netbsd-arm-cgo), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (netbsd-arm-cgo), const IPV6_TCLASS = 61 pkg syscall (netbsd-arm-cgo), const IPV6_UNICAST_HOPS = 4 pkg syscall (netbsd-arm-cgo), const IPV6_USE_MIN_MTU = 42 pkg syscall (netbsd-arm-cgo), const IPV6_V6ONLY = 27 pkg syscall (netbsd-arm-cgo), const IPV6_VERSION = 96 pkg syscall (netbsd-arm-cgo), const IPV6_VERSION_MASK = 240 pkg syscall (netbsd-arm-cgo), const IP_ADD_MEMBERSHIP = 12 pkg syscall (netbsd-arm-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (netbsd-arm-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (netbsd-arm-cgo), const IP_DF = 16384 pkg syscall (netbsd-arm-cgo), const IP_DROP_MEMBERSHIP = 13 pkg syscall (netbsd-arm-cgo), const IP_EF = 32768 pkg syscall (netbsd-arm-cgo), const IP_ERRORMTU = 21 pkg syscall (netbsd-arm-cgo), const IP_HDRINCL = 2 pkg syscall (netbsd-arm-cgo), const IP_IPSEC_POLICY = 22 pkg syscall (netbsd-arm-cgo), const IP_MAXPACKET = 65535 pkg syscall (netbsd-arm-cgo), const IP_MAX_MEMBERSHIPS = 20 pkg syscall (netbsd-arm-cgo), const IP_MF = 8192 pkg syscall (netbsd-arm-cgo), const IP_MINFRAGSIZE = 69 pkg syscall (netbsd-arm-cgo), const IP_MINTTL = 24 pkg syscall (netbsd-arm-cgo), const IP_MSS = 576 pkg syscall (netbsd-arm-cgo), const IP_MULTICAST_IF = 9 pkg syscall (netbsd-arm-cgo), const IP_MULTICAST_LOOP = 11 pkg syscall (netbsd-arm-cgo), const IP_MULTICAST_TTL = 10 pkg syscall (netbsd-arm-cgo), const IP_OFFMASK = 8191 pkg syscall (netbsd-arm-cgo), const IP_OPTIONS = 1 pkg syscall (netbsd-arm-cgo), const IP_PORTRANGE = 19 pkg syscall (netbsd-arm-cgo), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (netbsd-arm-cgo), const IP_PORTRANGE_HIGH = 1 pkg syscall (netbsd-arm-cgo), const IP_PORTRANGE_LOW = 2 pkg syscall (netbsd-arm-cgo), const IP_RECVDSTADDR = 7 pkg syscall (netbsd-arm-cgo), const IP_RECVIF = 20 pkg syscall (netbsd-arm-cgo), const IP_RECVOPTS = 5 pkg syscall (netbsd-arm-cgo), const IP_RECVRETOPTS = 6 pkg syscall (netbsd-arm-cgo), const IP_RECVTTL = 23 pkg syscall (netbsd-arm-cgo), const IP_RETOPTS = 8 pkg syscall (netbsd-arm-cgo), const IP_RF = 32768 pkg syscall (netbsd-arm-cgo), const IP_TOS = 3 pkg syscall (netbsd-arm-cgo), const IP_TTL = 4 pkg syscall (netbsd-arm-cgo), const ISIG = 128 pkg syscall (netbsd-arm-cgo), const ISTRIP = 32 pkg syscall (netbsd-arm-cgo), const IXANY = 2048 pkg syscall (netbsd-arm-cgo), const IXOFF = 1024 pkg syscall (netbsd-arm-cgo), const IXON = 512 pkg syscall (netbsd-arm-cgo), const ImplementsGetwd = false pkg syscall (netbsd-arm-cgo), const LOCK_EX = 2 pkg syscall (netbsd-arm-cgo), const LOCK_NB = 4 pkg syscall (netbsd-arm-cgo), const LOCK_SH = 1 pkg syscall (netbsd-arm-cgo), const LOCK_UN = 8 pkg syscall (netbsd-arm-cgo), const MSG_BCAST = 256 pkg syscall (netbsd-arm-cgo), const MSG_CMSG_CLOEXEC = 2048 pkg syscall (netbsd-arm-cgo), const MSG_CONTROLMBUF = 33554432 pkg syscall (netbsd-arm-cgo), const MSG_CTRUNC = 32 pkg syscall (netbsd-arm-cgo), const MSG_DONTROUTE = 4 pkg syscall (netbsd-arm-cgo), const MSG_DONTWAIT = 128 pkg syscall (netbsd-arm-cgo), const MSG_EOR = 8 pkg syscall (netbsd-arm-cgo), const MSG_IOVUSRSPACE = 67108864 pkg syscall (netbsd-arm-cgo), const MSG_LENUSRSPACE = 134217728 pkg syscall (netbsd-arm-cgo), const MSG_MCAST = 512 pkg syscall (netbsd-arm-cgo), const MSG_NAMEMBUF = 16777216 pkg syscall (netbsd-arm-cgo), const MSG_NBIO = 4096 pkg syscall (netbsd-arm-cgo), const MSG_NOSIGNAL = 1024 pkg syscall (netbsd-arm-cgo), const MSG_OOB = 1 pkg syscall (netbsd-arm-cgo), const MSG_PEEK = 2 pkg syscall (netbsd-arm-cgo), const MSG_TRUNC = 16 pkg syscall (netbsd-arm-cgo), const MSG_USERFLAGS = 16777215 pkg syscall (netbsd-arm-cgo), const MSG_WAITALL = 64 pkg syscall (netbsd-arm-cgo), const NAME_MAX = 511 pkg syscall (netbsd-arm-cgo), const NET_RT_DUMP = 1 pkg syscall (netbsd-arm-cgo), const NET_RT_FLAGS = 2 pkg syscall (netbsd-arm-cgo), const NET_RT_IFLIST = 5 pkg syscall (netbsd-arm-cgo), const NET_RT_MAXID = 6 pkg syscall (netbsd-arm-cgo), const NET_RT_OIFLIST = 4 pkg syscall (netbsd-arm-cgo), const NET_RT_OOIFLIST = 3 pkg syscall (netbsd-arm-cgo), const NOFLSH = 2147483648 pkg syscall (netbsd-arm-cgo), const NOTE_ATTRIB = 8 pkg syscall (netbsd-arm-cgo), const NOTE_CHILD = 4 pkg syscall (netbsd-arm-cgo), const NOTE_DELETE = 1 pkg syscall (netbsd-arm-cgo), const NOTE_EXEC = 536870912 pkg syscall (netbsd-arm-cgo), const NOTE_EXIT = 2147483648 pkg syscall (netbsd-arm-cgo), const NOTE_EXTEND = 4 pkg syscall (netbsd-arm-cgo), const NOTE_FORK = 1073741824 pkg syscall (netbsd-arm-cgo), const NOTE_LINK = 16 pkg syscall (netbsd-arm-cgo), const NOTE_LOWAT = 1 pkg syscall (netbsd-arm-cgo), const NOTE_PCTRLMASK = 4026531840 pkg syscall (netbsd-arm-cgo), const NOTE_PDATAMASK = 1048575 pkg syscall (netbsd-arm-cgo), const NOTE_RENAME = 32 pkg syscall (netbsd-arm-cgo), const NOTE_REVOKE = 64 pkg syscall (netbsd-arm-cgo), const NOTE_TRACK = 1 pkg syscall (netbsd-arm-cgo), const NOTE_TRACKERR = 2 pkg syscall (netbsd-arm-cgo), const NOTE_WRITE = 2 pkg syscall (netbsd-arm-cgo), const OCRNL = 16 pkg syscall (netbsd-arm-cgo), const OFIOGETBMAP = 3221513850 pkg syscall (netbsd-arm-cgo), const ONLCR = 2 pkg syscall (netbsd-arm-cgo), const ONLRET = 64 pkg syscall (netbsd-arm-cgo), const ONOCR = 32 pkg syscall (netbsd-arm-cgo), const ONOEOT = 8 pkg syscall (netbsd-arm-cgo), const OPOST = 1 pkg syscall (netbsd-arm-cgo), const O_ACCMODE = 3 pkg syscall (netbsd-arm-cgo), const O_ALT_IO = 262144 pkg syscall (netbsd-arm-cgo), const O_APPEND = 8 pkg syscall (netbsd-arm-cgo), const O_ASYNC = 64 pkg syscall (netbsd-arm-cgo), const O_CLOEXEC = 4194304 pkg syscall (netbsd-arm-cgo), const O_CREAT = 512 pkg syscall (netbsd-arm-cgo), const O_DIRECT = 524288 pkg syscall (netbsd-arm-cgo), const O_DIRECTORY = 2097152 pkg syscall (netbsd-arm-cgo), const O_DSYNC = 65536 pkg syscall (netbsd-arm-cgo), const O_EXCL = 2048 pkg syscall (netbsd-arm-cgo), const O_EXLOCK = 32 pkg syscall (netbsd-arm-cgo), const O_FSYNC = 128 pkg syscall (netbsd-arm-cgo), const O_NDELAY = 4 pkg syscall (netbsd-arm-cgo), const O_NOCTTY = 32768 pkg syscall (netbsd-arm-cgo), const O_NOFOLLOW = 256 pkg syscall (netbsd-arm-cgo), const O_NONBLOCK = 4 pkg syscall (netbsd-arm-cgo), const O_NOSIGPIPE = 16777216 pkg syscall (netbsd-arm-cgo), const O_RSYNC = 131072 pkg syscall (netbsd-arm-cgo), const O_SHLOCK = 16 pkg syscall (netbsd-arm-cgo), const O_SYNC = 128 pkg syscall (netbsd-arm-cgo), const O_TRUNC = 1024 pkg syscall (netbsd-arm-cgo), const PARENB = 4096 pkg syscall (netbsd-arm-cgo), const PARMRK = 8 pkg syscall (netbsd-arm-cgo), const PARODD = 8192 pkg syscall (netbsd-arm-cgo), const PENDIN = 536870912 pkg syscall (netbsd-arm-cgo), const PRI_IOFLUSH = 124 pkg syscall (netbsd-arm-cgo), const PTRACE_CONT = 7 pkg syscall (netbsd-arm-cgo), const PTRACE_KILL = 8 pkg syscall (netbsd-arm-cgo), const PTRACE_TRACEME = 0 pkg syscall (netbsd-arm-cgo), const RLIMIT_AS = 10 pkg syscall (netbsd-arm-cgo), const RLIMIT_CORE = 4 pkg syscall (netbsd-arm-cgo), const RLIMIT_CPU = 0 pkg syscall (netbsd-arm-cgo), const RLIMIT_DATA = 2 pkg syscall (netbsd-arm-cgo), const RLIMIT_FSIZE = 1 pkg syscall (netbsd-arm-cgo), const RLIMIT_NOFILE = 8 pkg syscall (netbsd-arm-cgo), const RLIMIT_STACK = 3 pkg syscall (netbsd-arm-cgo), const RLIM_INFINITY = 9223372036854775807 pkg syscall (netbsd-arm-cgo), const RTAX_AUTHOR = 6 pkg syscall (netbsd-arm-cgo), const RTAX_BRD = 7 pkg syscall (netbsd-arm-cgo), const RTAX_DST = 0 pkg syscall (netbsd-arm-cgo), const RTAX_GATEWAY = 1 pkg syscall (netbsd-arm-cgo), const RTAX_GENMASK = 3 pkg syscall (netbsd-arm-cgo), const RTAX_IFA = 5 pkg syscall (netbsd-arm-cgo), const RTAX_IFP = 4 pkg syscall (netbsd-arm-cgo), const RTAX_MAX = 9 pkg syscall (netbsd-arm-cgo), const RTAX_NETMASK = 2 pkg syscall (netbsd-arm-cgo), const RTAX_TAG = 8 pkg syscall (netbsd-arm-cgo), const RTA_AUTHOR = 64 pkg syscall (netbsd-arm-cgo), const RTA_BRD = 128 pkg syscall (netbsd-arm-cgo), const RTA_DST = 1 pkg syscall (netbsd-arm-cgo), const RTA_GATEWAY = 2 pkg syscall (netbsd-arm-cgo), const RTA_GENMASK = 8 pkg syscall (netbsd-arm-cgo), const RTA_IFA = 32 pkg syscall (netbsd-arm-cgo), const RTA_IFP = 16 pkg syscall (netbsd-arm-cgo), const RTA_NETMASK = 4 pkg syscall (netbsd-arm-cgo), const RTA_TAG = 256 pkg syscall (netbsd-arm-cgo), const RTF_ANNOUNCE = 131072 pkg syscall (netbsd-arm-cgo), const RTF_BLACKHOLE = 4096 pkg syscall (netbsd-arm-cgo), const RTF_CLONED = 8192 pkg syscall (netbsd-arm-cgo), const RTF_CLONING = 256 pkg syscall (netbsd-arm-cgo), const RTF_DONE = 64 pkg syscall (netbsd-arm-cgo), const RTF_DYNAMIC = 16 pkg syscall (netbsd-arm-cgo), const RTF_GATEWAY = 2 pkg syscall (netbsd-arm-cgo), const RTF_HOST = 4 pkg syscall (netbsd-arm-cgo), const RTF_LLINFO = 1024 pkg syscall (netbsd-arm-cgo), const RTF_MASK = 128 pkg syscall (netbsd-arm-cgo), const RTF_MODIFIED = 32 pkg syscall (netbsd-arm-cgo), const RTF_PROTO1 = 32768 pkg syscall (netbsd-arm-cgo), const RTF_PROTO2 = 16384 pkg syscall (netbsd-arm-cgo), const RTF_REJECT = 8 pkg syscall (netbsd-arm-cgo), const RTF_SRC = 65536 pkg syscall (netbsd-arm-cgo), const RTF_STATIC = 2048 pkg syscall (netbsd-arm-cgo), const RTF_UP = 1 pkg syscall (netbsd-arm-cgo), const RTF_XRESOLVE = 512 pkg syscall (netbsd-arm-cgo), const RTM_ADD = 1 pkg syscall (netbsd-arm-cgo), const RTM_CHANGE = 3 pkg syscall (netbsd-arm-cgo), const RTM_CHGADDR = 21 pkg syscall (netbsd-arm-cgo), const RTM_DELADDR = 13 pkg syscall (netbsd-arm-cgo), const RTM_DELETE = 2 pkg syscall (netbsd-arm-cgo), const RTM_GET = 4 pkg syscall (netbsd-arm-cgo), const RTM_IEEE80211 = 17 pkg syscall (netbsd-arm-cgo), const RTM_IFANNOUNCE = 16 pkg syscall (netbsd-arm-cgo), const RTM_IFINFO = 20 pkg syscall (netbsd-arm-cgo), const RTM_LLINFO_UPD = 19 pkg syscall (netbsd-arm-cgo), const RTM_LOCK = 8 pkg syscall (netbsd-arm-cgo), const RTM_LOSING = 5 pkg syscall (netbsd-arm-cgo), const RTM_MISS = 7 pkg syscall (netbsd-arm-cgo), const RTM_NEWADDR = 12 pkg syscall (netbsd-arm-cgo), const RTM_OIFINFO = 15 pkg syscall (netbsd-arm-cgo), const RTM_OLDADD = 9 pkg syscall (netbsd-arm-cgo), const RTM_OLDDEL = 10 pkg syscall (netbsd-arm-cgo), const RTM_OOIFINFO = 14 pkg syscall (netbsd-arm-cgo), const RTM_REDIRECT = 6 pkg syscall (netbsd-arm-cgo), const RTM_RESOLVE = 11 pkg syscall (netbsd-arm-cgo), const RTM_RTTUNIT = 1000000 pkg syscall (netbsd-arm-cgo), const RTM_SETGATE = 18 pkg syscall (netbsd-arm-cgo), const RTM_VERSION = 4 pkg syscall (netbsd-arm-cgo), const RTV_EXPIRE = 4 pkg syscall (netbsd-arm-cgo), const RTV_HOPCOUNT = 2 pkg syscall (netbsd-arm-cgo), const RTV_MTU = 1 pkg syscall (netbsd-arm-cgo), const RTV_RPIPE = 8 pkg syscall (netbsd-arm-cgo), const RTV_RTT = 64 pkg syscall (netbsd-arm-cgo), const RTV_RTTVAR = 128 pkg syscall (netbsd-arm-cgo), const RTV_SPIPE = 16 pkg syscall (netbsd-arm-cgo), const RTV_SSTHRESH = 32 pkg syscall (netbsd-arm-cgo), const RUSAGE_CHILDREN = -1 pkg syscall (netbsd-arm-cgo), const RUSAGE_SELF = 0 pkg syscall (netbsd-arm-cgo), const SCM_CREDS = 4 pkg syscall (netbsd-arm-cgo), const SCM_RIGHTS = 1 pkg syscall (netbsd-arm-cgo), const SCM_TIMESTAMP = 8 pkg syscall (netbsd-arm-cgo), const SIGBUS = 10 pkg syscall (netbsd-arm-cgo), const SIGCHLD = 20 pkg syscall (netbsd-arm-cgo), const SIGCONT = 19 pkg syscall (netbsd-arm-cgo), const SIGEMT = 7 pkg syscall (netbsd-arm-cgo), const SIGINFO = 29 pkg syscall (netbsd-arm-cgo), const SIGIO = 23 pkg syscall (netbsd-arm-cgo), const SIGIOT = 6 pkg syscall (netbsd-arm-cgo), const SIGPROF = 27 pkg syscall (netbsd-arm-cgo), const SIGPWR = 32 pkg syscall (netbsd-arm-cgo), const SIGSTOP = 17 pkg syscall (netbsd-arm-cgo), const SIGSYS = 12 pkg syscall (netbsd-arm-cgo), const SIGTSTP = 18 pkg syscall (netbsd-arm-cgo), const SIGTTIN = 21 pkg syscall (netbsd-arm-cgo), const SIGTTOU = 22 pkg syscall (netbsd-arm-cgo), const SIGURG = 16 pkg syscall (netbsd-arm-cgo), const SIGUSR1 = 30 pkg syscall (netbsd-arm-cgo), const SIGUSR2 = 31 pkg syscall (netbsd-arm-cgo), const SIGVTALRM = 26 pkg syscall (netbsd-arm-cgo), const SIGWINCH = 28 pkg syscall (netbsd-arm-cgo), const SIGXCPU = 24 pkg syscall (netbsd-arm-cgo), const SIGXFSZ = 25 pkg syscall (netbsd-arm-cgo), const SIOCADDMULTI = 2156947761 pkg syscall (netbsd-arm-cgo), const SIOCADDRT = 2150658570 pkg syscall (netbsd-arm-cgo), const SIOCAIFADDR = 2151704858 pkg syscall (netbsd-arm-cgo), const SIOCALIFADDR = 2165860636 pkg syscall (netbsd-arm-cgo), const SIOCATMARK = 1074033415 pkg syscall (netbsd-arm-cgo), const SIOCDELMULTI = 2156947762 pkg syscall (netbsd-arm-cgo), const SIOCDELRT = 2150658571 pkg syscall (netbsd-arm-cgo), const SIOCDIFADDR = 2156947737 pkg syscall (netbsd-arm-cgo), const SIOCDIFPHYADDR = 2156947785 pkg syscall (netbsd-arm-cgo), const SIOCDLIFADDR = 2165860638 pkg syscall (netbsd-arm-cgo), const SIOCGDRVSPEC = 3223087483 pkg syscall (netbsd-arm-cgo), const SIOCGETPFSYNC = 3230689784 pkg syscall (netbsd-arm-cgo), const SIOCGETSGCNT = 3222566196 pkg syscall (netbsd-arm-cgo), const SIOCGETVIFCNT = 3222566195 pkg syscall (netbsd-arm-cgo), const SIOCGHIWAT = 1074033409 pkg syscall (netbsd-arm-cgo), const SIOCGIFADDR = 3230689569 pkg syscall (netbsd-arm-cgo), const SIOCGIFADDRPREF = 3230951712 pkg syscall (netbsd-arm-cgo), const SIOCGIFALIAS = 3225446683 pkg syscall (netbsd-arm-cgo), const SIOCGIFBRDADDR = 3230689571 pkg syscall (netbsd-arm-cgo), const SIOCGIFCAP = 3223349622 pkg syscall (netbsd-arm-cgo), const SIOCGIFCONF = 3221776678 pkg syscall (netbsd-arm-cgo), const SIOCGIFDATA = 3230951813 pkg syscall (netbsd-arm-cgo), const SIOCGIFDLT = 3230689655 pkg syscall (netbsd-arm-cgo), const SIOCGIFDSTADDR = 3230689570 pkg syscall (netbsd-arm-cgo), const SIOCGIFFLAGS = 3230689553 pkg syscall (netbsd-arm-cgo), const SIOCGIFGENERIC = 3230689594 pkg syscall (netbsd-arm-cgo), const SIOCGIFMEDIA = 3223873846 pkg syscall (netbsd-arm-cgo), const SIOCGIFMETRIC = 3230689559 pkg syscall (netbsd-arm-cgo), const SIOCGIFMTU = 3230689662 pkg syscall (netbsd-arm-cgo), const SIOCGIFNETMASK = 3230689573 pkg syscall (netbsd-arm-cgo), const SIOCGIFPDSTADDR = 3230689608 pkg syscall (netbsd-arm-cgo), const SIOCGIFPSRCADDR = 3230689607 pkg syscall (netbsd-arm-cgo), const SIOCGLIFADDR = 3239602461 pkg syscall (netbsd-arm-cgo), const SIOCGLIFPHYADDR = 3239602507 pkg syscall (netbsd-arm-cgo), const SIOCGLINKSTR = 3223087495 pkg syscall (netbsd-arm-cgo), const SIOCGLOWAT = 1074033411 pkg syscall (netbsd-arm-cgo), const SIOCGPGRP = 1074033417 pkg syscall (netbsd-arm-cgo), const SIOCGVH = 3230689667 pkg syscall (netbsd-arm-cgo), const SIOCIFCREATE = 2156947834 pkg syscall (netbsd-arm-cgo), const SIOCIFDESTROY = 2156947833 pkg syscall (netbsd-arm-cgo), const SIOCIFGCLONERS = 3222038904 pkg syscall (netbsd-arm-cgo), const SIOCINITIFADDR = 3225708932 pkg syscall (netbsd-arm-cgo), const SIOCSDRVSPEC = 2149345659 pkg syscall (netbsd-arm-cgo), const SIOCSETPFSYNC = 2156947959 pkg syscall (netbsd-arm-cgo), const SIOCSHIWAT = 2147775232 pkg syscall (netbsd-arm-cgo), const SIOCSIFADDR = 2156947724 pkg syscall (netbsd-arm-cgo), const SIOCSIFADDRPREF = 2157209887 pkg syscall (netbsd-arm-cgo), const SIOCSIFBRDADDR = 2156947731 pkg syscall (netbsd-arm-cgo), const SIOCSIFCAP = 2149607797 pkg syscall (netbsd-arm-cgo), const SIOCSIFDSTADDR = 2156947726 pkg syscall (netbsd-arm-cgo), const SIOCSIFFLAGS = 2156947728 pkg syscall (netbsd-arm-cgo), const SIOCSIFGENERIC = 2156947769 pkg syscall (netbsd-arm-cgo), const SIOCSIFMEDIA = 3230689589 pkg syscall (netbsd-arm-cgo), const SIOCSIFMETRIC = 2156947736 pkg syscall (netbsd-arm-cgo), const SIOCSIFMTU = 2156947839 pkg syscall (netbsd-arm-cgo), const SIOCSIFNETMASK = 2156947734 pkg syscall (netbsd-arm-cgo), const SIOCSIFPHYADDR = 2151704902 pkg syscall (netbsd-arm-cgo), const SIOCSLIFPHYADDR = 2165860682 pkg syscall (netbsd-arm-cgo), const SIOCSLINKSTR = 2149345672 pkg syscall (netbsd-arm-cgo), const SIOCSLOWAT = 2147775234 pkg syscall (netbsd-arm-cgo), const SIOCSPGRP = 2147775240 pkg syscall (netbsd-arm-cgo), const SIOCSVH = 3230689666 pkg syscall (netbsd-arm-cgo), const SIOCZIFDATA = 3230951814 pkg syscall (netbsd-arm-cgo), const SOCK_CLOEXEC = 268435456 pkg syscall (netbsd-arm-cgo), const SOCK_FLAGS_MASK = 4026531840 pkg syscall (netbsd-arm-cgo), const SOCK_NONBLOCK = 536870912 pkg syscall (netbsd-arm-cgo), const SOCK_NOSIGPIPE = 1073741824 pkg syscall (netbsd-arm-cgo), const SOCK_RDM = 4 pkg syscall (netbsd-arm-cgo), const SOL_SOCKET = 65535 pkg syscall (netbsd-arm-cgo), const SOMAXCONN = 128 pkg syscall (netbsd-arm-cgo), const SO_ACCEPTCONN = 2 pkg syscall (netbsd-arm-cgo), const SO_ACCEPTFILTER = 4096 pkg syscall (netbsd-arm-cgo), const SO_BROADCAST = 32 pkg syscall (netbsd-arm-cgo), const SO_DEBUG = 1 pkg syscall (netbsd-arm-cgo), const SO_DONTROUTE = 16 pkg syscall (netbsd-arm-cgo), const SO_ERROR = 4103 pkg syscall (netbsd-arm-cgo), const SO_KEEPALIVE = 8 pkg syscall (netbsd-arm-cgo), const SO_LINGER = 128 pkg syscall (netbsd-arm-cgo), const SO_NOHEADER = 4106 pkg syscall (netbsd-arm-cgo), const SO_NOSIGPIPE = 2048 pkg syscall (netbsd-arm-cgo), const SO_OOBINLINE = 256 pkg syscall (netbsd-arm-cgo), const SO_OVERFLOWED = 4105 pkg syscall (netbsd-arm-cgo), const SO_RCVBUF = 4098 pkg syscall (netbsd-arm-cgo), const SO_RCVLOWAT = 4100 pkg syscall (netbsd-arm-cgo), const SO_RCVTIMEO = 4108 pkg syscall (netbsd-arm-cgo), const SO_REUSEADDR = 4 pkg syscall (netbsd-arm-cgo), const SO_REUSEPORT = 512 pkg syscall (netbsd-arm-cgo), const SO_SNDBUF = 4097 pkg syscall (netbsd-arm-cgo), const SO_SNDLOWAT = 4099 pkg syscall (netbsd-arm-cgo), const SO_SNDTIMEO = 4107 pkg syscall (netbsd-arm-cgo), const SO_TIMESTAMP = 8192 pkg syscall (netbsd-arm-cgo), const SO_TYPE = 4104 pkg syscall (netbsd-arm-cgo), const SO_USELOOPBACK = 64 pkg syscall (netbsd-arm-cgo), const SYSCTL_VERSION = 16777216 pkg syscall (netbsd-arm-cgo), const SYSCTL_VERS_0 = 0 pkg syscall (netbsd-arm-cgo), const SYSCTL_VERS_1 = 16777216 pkg syscall (netbsd-arm-cgo), const SYSCTL_VERS_MASK = 4278190080 pkg syscall (netbsd-arm-cgo), const SYS_ACCEPT = 30 pkg syscall (netbsd-arm-cgo), const SYS_ACCESS = 33 pkg syscall (netbsd-arm-cgo), const SYS_ACCT = 51 pkg syscall (netbsd-arm-cgo), const SYS_ADJTIME = 421 pkg syscall (netbsd-arm-cgo), const SYS_BIND = 104 pkg syscall (netbsd-arm-cgo), const SYS_BREAK = 17 pkg syscall (netbsd-arm-cgo), const SYS_CHDIR = 12 pkg syscall (netbsd-arm-cgo), const SYS_CHFLAGS = 34 pkg syscall (netbsd-arm-cgo), const SYS_CHMOD = 15 pkg syscall (netbsd-arm-cgo), const SYS_CHOWN = 16 pkg syscall (netbsd-arm-cgo), const SYS_CHROOT = 61 pkg syscall (netbsd-arm-cgo), const SYS_CLOCK_GETRES = 429 pkg syscall (netbsd-arm-cgo), const SYS_CLOCK_GETTIME = 427 pkg syscall (netbsd-arm-cgo), const SYS_CLOCK_SETTIME = 428 pkg syscall (netbsd-arm-cgo), const SYS_CLOSE = 6 pkg syscall (netbsd-arm-cgo), const SYS_CONNECT = 98 pkg syscall (netbsd-arm-cgo), const SYS_DUP = 41 pkg syscall (netbsd-arm-cgo), const SYS_DUP2 = 90 pkg syscall (netbsd-arm-cgo), const SYS_DUP3 = 454 pkg syscall (netbsd-arm-cgo), const SYS_EXECVE = 59 pkg syscall (netbsd-arm-cgo), const SYS_EXIT = 1 pkg syscall (netbsd-arm-cgo), const SYS_EXTATTRCTL = 360 pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_DELETE_FD = 366 pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_DELETE_FILE = 363 pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_DELETE_LINK = 369 pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_GET_FD = 365 pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_GET_FILE = 362 pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_GET_LINK = 368 pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_LIST_FD = 370 pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_LIST_FILE = 371 pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_LIST_LINK = 372 pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_SET_FD = 364 pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_SET_FILE = 361 pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_SET_LINK = 367 pkg syscall (netbsd-arm-cgo), const SYS_FACCESSAT = 462 pkg syscall (netbsd-arm-cgo), const SYS_FCHDIR = 13 pkg syscall (netbsd-arm-cgo), const SYS_FCHFLAGS = 35 pkg syscall (netbsd-arm-cgo), const SYS_FCHMOD = 124 pkg syscall (netbsd-arm-cgo), const SYS_FCHMODAT = 463 pkg syscall (netbsd-arm-cgo), const SYS_FCHOWN = 123 pkg syscall (netbsd-arm-cgo), const SYS_FCHOWNAT = 464 pkg syscall (netbsd-arm-cgo), const SYS_FCHROOT = 297 pkg syscall (netbsd-arm-cgo), const SYS_FCNTL = 92 pkg syscall (netbsd-arm-cgo), const SYS_FDATASYNC = 241 pkg syscall (netbsd-arm-cgo), const SYS_FEXECVE = 465 pkg syscall (netbsd-arm-cgo), const SYS_FGETXATTR = 380 pkg syscall (netbsd-arm-cgo), const SYS_FHSTAT = 451 pkg syscall (netbsd-arm-cgo), const SYS_FKTRACE = 288 pkg syscall (netbsd-arm-cgo), const SYS_FLISTXATTR = 383 pkg syscall (netbsd-arm-cgo), const SYS_FLOCK = 131 pkg syscall (netbsd-arm-cgo), const SYS_FORK = 2 pkg syscall (netbsd-arm-cgo), const SYS_FPATHCONF = 192 pkg syscall (netbsd-arm-cgo), const SYS_FREMOVEXATTR = 386 pkg syscall (netbsd-arm-cgo), const SYS_FSETXATTR = 377 pkg syscall (netbsd-arm-cgo), const SYS_FSTAT = 440 pkg syscall (netbsd-arm-cgo), const SYS_FSTATAT = 466 pkg syscall (netbsd-arm-cgo), const SYS_FSTATVFS1 = 358 pkg syscall (netbsd-arm-cgo), const SYS_FSYNC = 95 pkg syscall (netbsd-arm-cgo), const SYS_FSYNC_RANGE = 354 pkg syscall (netbsd-arm-cgo), const SYS_FTRUNCATE = 201 pkg syscall (netbsd-arm-cgo), const SYS_FUTIMENS = 472 pkg syscall (netbsd-arm-cgo), const SYS_FUTIMES = 423 pkg syscall (netbsd-arm-cgo), const SYS_GETCONTEXT = 307 pkg syscall (netbsd-arm-cgo), const SYS_GETDENTS = 390 pkg syscall (netbsd-arm-cgo), const SYS_GETEGID = 43 pkg syscall (netbsd-arm-cgo), const SYS_GETEUID = 25 pkg syscall (netbsd-arm-cgo), const SYS_GETFH = 395 pkg syscall (netbsd-arm-cgo), const SYS_GETGID = 47 pkg syscall (netbsd-arm-cgo), const SYS_GETGROUPS = 79 pkg syscall (netbsd-arm-cgo), const SYS_GETITIMER = 426 pkg syscall (netbsd-arm-cgo), const SYS_GETPEERNAME = 31 pkg syscall (netbsd-arm-cgo), const SYS_GETPGID = 207 pkg syscall (netbsd-arm-cgo), const SYS_GETPGRP = 81 pkg syscall (netbsd-arm-cgo), const SYS_GETPID = 20 pkg syscall (netbsd-arm-cgo), const SYS_GETPPID = 39 pkg syscall (netbsd-arm-cgo), const SYS_GETPRIORITY = 100 pkg syscall (netbsd-arm-cgo), const SYS_GETRLIMIT = 194 pkg syscall (netbsd-arm-cgo), const SYS_GETRUSAGE = 445 pkg syscall (netbsd-arm-cgo), const SYS_GETSID = 286 pkg syscall (netbsd-arm-cgo), const SYS_GETSOCKNAME = 32 pkg syscall (netbsd-arm-cgo), const SYS_GETSOCKOPT = 118 pkg syscall (netbsd-arm-cgo), const SYS_GETTIMEOFDAY = 418 pkg syscall (netbsd-arm-cgo), const SYS_GETUID = 24 pkg syscall (netbsd-arm-cgo), const SYS_GETVFSSTAT = 356 pkg syscall (netbsd-arm-cgo), const SYS_GETXATTR = 378 pkg syscall (netbsd-arm-cgo), const SYS_IOCTL = 54 pkg syscall (netbsd-arm-cgo), const SYS_ISSETUGID = 305 pkg syscall (netbsd-arm-cgo), const SYS_KEVENT = 435 pkg syscall (netbsd-arm-cgo), const SYS_KILL = 37 pkg syscall (netbsd-arm-cgo), const SYS_KQUEUE = 344 pkg syscall (netbsd-arm-cgo), const SYS_KQUEUE1 = 455 pkg syscall (netbsd-arm-cgo), const SYS_KTRACE = 45 pkg syscall (netbsd-arm-cgo), const SYS_LCHFLAGS = 304 pkg syscall (netbsd-arm-cgo), const SYS_LCHMOD = 274 pkg syscall (netbsd-arm-cgo), const SYS_LCHOWN = 275 pkg syscall (netbsd-arm-cgo), const SYS_LGETXATTR = 379 pkg syscall (netbsd-arm-cgo), const SYS_LINK = 9 pkg syscall (netbsd-arm-cgo), const SYS_LINKAT = 457 pkg syscall (netbsd-arm-cgo), const SYS_LISTEN = 106 pkg syscall (netbsd-arm-cgo), const SYS_LISTXATTR = 381 pkg syscall (netbsd-arm-cgo), const SYS_LLISTXATTR = 382 pkg syscall (netbsd-arm-cgo), const SYS_LREMOVEXATTR = 385 pkg syscall (netbsd-arm-cgo), const SYS_LSEEK = 199 pkg syscall (netbsd-arm-cgo), const SYS_LSETXATTR = 376 pkg syscall (netbsd-arm-cgo), const SYS_LSTAT = 441 pkg syscall (netbsd-arm-cgo), const SYS_LUTIMES = 424 pkg syscall (netbsd-arm-cgo), const SYS_MADVISE = 75 pkg syscall (netbsd-arm-cgo), const SYS_MINCORE = 78 pkg syscall (netbsd-arm-cgo), const SYS_MINHERIT = 273 pkg syscall (netbsd-arm-cgo), const SYS_MKDIR = 136 pkg syscall (netbsd-arm-cgo), const SYS_MKDIRAT = 461 pkg syscall (netbsd-arm-cgo), const SYS_MKFIFO = 132 pkg syscall (netbsd-arm-cgo), const SYS_MKFIFOAT = 459 pkg syscall (netbsd-arm-cgo), const SYS_MKNOD = 450 pkg syscall (netbsd-arm-cgo), const SYS_MKNODAT = 460 pkg syscall (netbsd-arm-cgo), const SYS_MLOCK = 203 pkg syscall (netbsd-arm-cgo), const SYS_MLOCKALL = 242 pkg syscall (netbsd-arm-cgo), const SYS_MMAP = 197 pkg syscall (netbsd-arm-cgo), const SYS_MODCTL = 246 pkg syscall (netbsd-arm-cgo), const SYS_MOUNT = 410 pkg syscall (netbsd-arm-cgo), const SYS_MPROTECT = 74 pkg syscall (netbsd-arm-cgo), const SYS_MREMAP = 411 pkg syscall (netbsd-arm-cgo), const SYS_MSGCTL = 444 pkg syscall (netbsd-arm-cgo), const SYS_MSGGET = 225 pkg syscall (netbsd-arm-cgo), const SYS_MSGRCV = 227 pkg syscall (netbsd-arm-cgo), const SYS_MSGSND = 226 pkg syscall (netbsd-arm-cgo), const SYS_MUNLOCK = 204 pkg syscall (netbsd-arm-cgo), const SYS_MUNLOCKALL = 243 pkg syscall (netbsd-arm-cgo), const SYS_MUNMAP = 73 pkg syscall (netbsd-arm-cgo), const SYS_NANOSLEEP = 430 pkg syscall (netbsd-arm-cgo), const SYS_NTP_ADJTIME = 176 pkg syscall (netbsd-arm-cgo), const SYS_NTP_GETTIME = 448 pkg syscall (netbsd-arm-cgo), const SYS_OPEN = 5 pkg syscall (netbsd-arm-cgo), const SYS_OPENAT = 468 pkg syscall (netbsd-arm-cgo), const SYS_PACCEPT = 456 pkg syscall (netbsd-arm-cgo), const SYS_PATHCONF = 191 pkg syscall (netbsd-arm-cgo), const SYS_PIPE = 42 pkg syscall (netbsd-arm-cgo), const SYS_PIPE2 = 453 pkg syscall (netbsd-arm-cgo), const SYS_PMC_CONTROL = 342 pkg syscall (netbsd-arm-cgo), const SYS_PMC_GET_INFO = 341 pkg syscall (netbsd-arm-cgo), const SYS_POLL = 209 pkg syscall (netbsd-arm-cgo), const SYS_POLLTS = 437 pkg syscall (netbsd-arm-cgo), const SYS_POSIX_FADVISE = 416 pkg syscall (netbsd-arm-cgo), const SYS_POSIX_SPAWN = 474 pkg syscall (netbsd-arm-cgo), const SYS_PREAD = 173 pkg syscall (netbsd-arm-cgo), const SYS_PREADV = 289 pkg syscall (netbsd-arm-cgo), const SYS_PROFIL = 44 pkg syscall (netbsd-arm-cgo), const SYS_PSELECT = 436 pkg syscall (netbsd-arm-cgo), const SYS_PSET_ASSIGN = 414 pkg syscall (netbsd-arm-cgo), const SYS_PSET_CREATE = 412 pkg syscall (netbsd-arm-cgo), const SYS_PSET_DESTROY = 413 pkg syscall (netbsd-arm-cgo), const SYS_PTRACE = 26 pkg syscall (netbsd-arm-cgo), const SYS_PWRITE = 174 pkg syscall (netbsd-arm-cgo), const SYS_PWRITEV = 290 pkg syscall (netbsd-arm-cgo), const SYS_RASCTL = 343 pkg syscall (netbsd-arm-cgo), const SYS_READ = 3 pkg syscall (netbsd-arm-cgo), const SYS_READLINK = 58 pkg syscall (netbsd-arm-cgo), const SYS_READLINKAT = 469 pkg syscall (netbsd-arm-cgo), const SYS_READV = 120 pkg syscall (netbsd-arm-cgo), const SYS_REBOOT = 208 pkg syscall (netbsd-arm-cgo), const SYS_RECVFROM = 29 pkg syscall (netbsd-arm-cgo), const SYS_RECVMMSG = 475 pkg syscall (netbsd-arm-cgo), const SYS_RECVMSG = 27 pkg syscall (netbsd-arm-cgo), const SYS_REMOVEXATTR = 384 pkg syscall (netbsd-arm-cgo), const SYS_RENAME = 128 pkg syscall (netbsd-arm-cgo), const SYS_RENAMEAT = 458 pkg syscall (netbsd-arm-cgo), const SYS_REVOKE = 56 pkg syscall (netbsd-arm-cgo), const SYS_RMDIR = 137 pkg syscall (netbsd-arm-cgo), const SYS_SBRK = 69 pkg syscall (netbsd-arm-cgo), const SYS_SCHED_YIELD = 350 pkg syscall (netbsd-arm-cgo), const SYS_SELECT = 417 pkg syscall (netbsd-arm-cgo), const SYS_SEMCONFIG = 223 pkg syscall (netbsd-arm-cgo), const SYS_SEMGET = 221 pkg syscall (netbsd-arm-cgo), const SYS_SEMOP = 222 pkg syscall (netbsd-arm-cgo), const SYS_SENDMMSG = 476 pkg syscall (netbsd-arm-cgo), const SYS_SENDMSG = 28 pkg syscall (netbsd-arm-cgo), const SYS_SENDTO = 133 pkg syscall (netbsd-arm-cgo), const SYS_SETCONTEXT = 308 pkg syscall (netbsd-arm-cgo), const SYS_SETEGID = 182 pkg syscall (netbsd-arm-cgo), const SYS_SETEUID = 183 pkg syscall (netbsd-arm-cgo), const SYS_SETGID = 181 pkg syscall (netbsd-arm-cgo), const SYS_SETGROUPS = 80 pkg syscall (netbsd-arm-cgo), const SYS_SETITIMER = 425 pkg syscall (netbsd-arm-cgo), const SYS_SETPGID = 82 pkg syscall (netbsd-arm-cgo), const SYS_SETPRIORITY = 96 pkg syscall (netbsd-arm-cgo), const SYS_SETREGID = 127 pkg syscall (netbsd-arm-cgo), const SYS_SETREUID = 126 pkg syscall (netbsd-arm-cgo), const SYS_SETRLIMIT = 195 pkg syscall (netbsd-arm-cgo), const SYS_SETSID = 147 pkg syscall (netbsd-arm-cgo), const SYS_SETSOCKOPT = 105 pkg syscall (netbsd-arm-cgo), const SYS_SETTIMEOFDAY = 419 pkg syscall (netbsd-arm-cgo), const SYS_SETUID = 23 pkg syscall (netbsd-arm-cgo), const SYS_SETXATTR = 375 pkg syscall (netbsd-arm-cgo), const SYS_SHMAT = 228 pkg syscall (netbsd-arm-cgo), const SYS_SHMCTL = 443 pkg syscall (netbsd-arm-cgo), const SYS_SHMDT = 230 pkg syscall (netbsd-arm-cgo), const SYS_SHMGET = 231 pkg syscall (netbsd-arm-cgo), const SYS_SHUTDOWN = 134 pkg syscall (netbsd-arm-cgo), const SYS_SIGQUEUEINFO = 245 pkg syscall (netbsd-arm-cgo), const SYS_SOCKET = 394 pkg syscall (netbsd-arm-cgo), const SYS_SOCKETPAIR = 135 pkg syscall (netbsd-arm-cgo), const SYS_SSTK = 70 pkg syscall (netbsd-arm-cgo), const SYS_STAT = 439 pkg syscall (netbsd-arm-cgo), const SYS_STATVFS1 = 357 pkg syscall (netbsd-arm-cgo), const SYS_SWAPCTL = 271 pkg syscall (netbsd-arm-cgo), const SYS_SYMLINK = 57 pkg syscall (netbsd-arm-cgo), const SYS_SYMLINKAT = 470 pkg syscall (netbsd-arm-cgo), const SYS_SYNC = 36 pkg syscall (netbsd-arm-cgo), const SYS_SYSARCH = 165 pkg syscall (netbsd-arm-cgo), const SYS_TIMER_CREATE = 235 pkg syscall (netbsd-arm-cgo), const SYS_TIMER_DELETE = 236 pkg syscall (netbsd-arm-cgo), const SYS_TIMER_GETOVERRUN = 239 pkg syscall (netbsd-arm-cgo), const SYS_TIMER_GETTIME = 447 pkg syscall (netbsd-arm-cgo), const SYS_TIMER_SETTIME = 446 pkg syscall (netbsd-arm-cgo), const SYS_TRUNCATE = 200 pkg syscall (netbsd-arm-cgo), const SYS_UMASK = 60 pkg syscall (netbsd-arm-cgo), const SYS_UNDELETE = 205 pkg syscall (netbsd-arm-cgo), const SYS_UNLINK = 10 pkg syscall (netbsd-arm-cgo), const SYS_UNLINKAT = 471 pkg syscall (netbsd-arm-cgo), const SYS_UNMOUNT = 22 pkg syscall (netbsd-arm-cgo), const SYS_UTIMENSAT = 467 pkg syscall (netbsd-arm-cgo), const SYS_UTIMES = 420 pkg syscall (netbsd-arm-cgo), const SYS_UTRACE = 306 pkg syscall (netbsd-arm-cgo), const SYS_UUIDGEN = 355 pkg syscall (netbsd-arm-cgo), const SYS_VADVISE = 72 pkg syscall (netbsd-arm-cgo), const SYS_VFORK = 66 pkg syscall (netbsd-arm-cgo), const SYS_WAIT4 = 449 pkg syscall (netbsd-arm-cgo), const SYS_WRITE = 4 pkg syscall (netbsd-arm-cgo), const SYS_WRITEV = 121 pkg syscall (netbsd-arm-cgo), const SYS__LWP_CONTINUE = 314 pkg syscall (netbsd-arm-cgo), const SYS__LWP_CREATE = 309 pkg syscall (netbsd-arm-cgo), const SYS__LWP_CTL = 325 pkg syscall (netbsd-arm-cgo), const SYS__LWP_DETACH = 319 pkg syscall (netbsd-arm-cgo), const SYS__LWP_EXIT = 310 pkg syscall (netbsd-arm-cgo), const SYS__LWP_GETNAME = 324 pkg syscall (netbsd-arm-cgo), const SYS__LWP_GETPRIVATE = 316 pkg syscall (netbsd-arm-cgo), const SYS__LWP_KILL = 318 pkg syscall (netbsd-arm-cgo), const SYS__LWP_PARK = 434 pkg syscall (netbsd-arm-cgo), const SYS__LWP_SELF = 311 pkg syscall (netbsd-arm-cgo), const SYS__LWP_SETNAME = 323 pkg syscall (netbsd-arm-cgo), const SYS__LWP_SETPRIVATE = 317 pkg syscall (netbsd-arm-cgo), const SYS__LWP_SUSPEND = 313 pkg syscall (netbsd-arm-cgo), const SYS__LWP_UNPARK = 321 pkg syscall (netbsd-arm-cgo), const SYS__LWP_UNPARK_ALL = 322 pkg syscall (netbsd-arm-cgo), const SYS__LWP_WAIT = 312 pkg syscall (netbsd-arm-cgo), const SYS__LWP_WAKEUP = 315 pkg syscall (netbsd-arm-cgo), const SYS__PSET_BIND = 415 pkg syscall (netbsd-arm-cgo), const SYS__SCHED_GETAFFINITY = 349 pkg syscall (netbsd-arm-cgo), const SYS__SCHED_GETPARAM = 347 pkg syscall (netbsd-arm-cgo), const SYS__SCHED_SETAFFINITY = 348 pkg syscall (netbsd-arm-cgo), const SYS__SCHED_SETPARAM = 346 pkg syscall (netbsd-arm-cgo), const SYS___CLONE = 287 pkg syscall (netbsd-arm-cgo), const SYS___GETCWD = 296 pkg syscall (netbsd-arm-cgo), const SYS___GETLOGIN = 49 pkg syscall (netbsd-arm-cgo), const SYS___POSIX_CHOWN = 283 pkg syscall (netbsd-arm-cgo), const SYS___POSIX_FCHOWN = 284 pkg syscall (netbsd-arm-cgo), const SYS___POSIX_LCHOWN = 285 pkg syscall (netbsd-arm-cgo), const SYS___POSIX_RENAME = 270 pkg syscall (netbsd-arm-cgo), const SYS___QUOTACTL = 473 pkg syscall (netbsd-arm-cgo), const SYS___SEMCTL = 442 pkg syscall (netbsd-arm-cgo), const SYS___SETLOGIN = 50 pkg syscall (netbsd-arm-cgo), const SYS___SIGACTION_SIGTRAMP = 340 pkg syscall (netbsd-arm-cgo), const SYS___SIGTIMEDWAIT = 431 pkg syscall (netbsd-arm-cgo), const SYS___SYSCTL = 202 pkg syscall (netbsd-arm-cgo), const S_ARCH1 = 65536 pkg syscall (netbsd-arm-cgo), const S_ARCH2 = 131072 pkg syscall (netbsd-arm-cgo), const S_BLKSIZE = 512 pkg syscall (netbsd-arm-cgo), const S_IEXEC = 64 pkg syscall (netbsd-arm-cgo), const S_IFMT = 61440 pkg syscall (netbsd-arm-cgo), const S_IFWHT = 57344 pkg syscall (netbsd-arm-cgo), const S_IREAD = 256 pkg syscall (netbsd-arm-cgo), const S_IRGRP = 32 pkg syscall (netbsd-arm-cgo), const S_IROTH = 4 pkg syscall (netbsd-arm-cgo), const S_IRWXG = 56 pkg syscall (netbsd-arm-cgo), const S_IRWXO = 7 pkg syscall (netbsd-arm-cgo), const S_IRWXU = 448 pkg syscall (netbsd-arm-cgo), const S_ISTXT = 512 pkg syscall (netbsd-arm-cgo), const S_IWGRP = 16 pkg syscall (netbsd-arm-cgo), const S_IWOTH = 2 pkg syscall (netbsd-arm-cgo), const S_IWRITE = 128 pkg syscall (netbsd-arm-cgo), const S_IXGRP = 8 pkg syscall (netbsd-arm-cgo), const S_IXOTH = 1 pkg syscall (netbsd-arm-cgo), const SizeofBpfHdr = 20 pkg syscall (netbsd-arm-cgo), const SizeofBpfInsn = 8 pkg syscall (netbsd-arm-cgo), const SizeofBpfProgram = 8 pkg syscall (netbsd-arm-cgo), const SizeofBpfStat = 128 pkg syscall (netbsd-arm-cgo), const SizeofBpfVersion = 4 pkg syscall (netbsd-arm-cgo), const SizeofCmsghdr = 12 pkg syscall (netbsd-arm-cgo), const SizeofIPMreq = 8 pkg syscall (netbsd-arm-cgo), const SizeofIPv6Mreq = 20 pkg syscall (netbsd-arm-cgo), const SizeofIfAnnounceMsghdr = 24 pkg syscall (netbsd-arm-cgo), const SizeofIfData = 132 pkg syscall (netbsd-arm-cgo), const SizeofIfMsghdr = 152 pkg syscall (netbsd-arm-cgo), const SizeofIfaMsghdr = 24 pkg syscall (netbsd-arm-cgo), const SizeofInet6Pktinfo = 20 pkg syscall (netbsd-arm-cgo), const SizeofLinger = 8 pkg syscall (netbsd-arm-cgo), const SizeofMsghdr = 28 pkg syscall (netbsd-arm-cgo), const SizeofRtMetrics = 80 pkg syscall (netbsd-arm-cgo), const SizeofRtMsghdr = 120 pkg syscall (netbsd-arm-cgo), const SizeofSockaddrAny = 108 pkg syscall (netbsd-arm-cgo), const SizeofSockaddrDatalink = 20 pkg syscall (netbsd-arm-cgo), const SizeofSockaddrInet4 = 16 pkg syscall (netbsd-arm-cgo), const SizeofSockaddrInet6 = 28 pkg syscall (netbsd-arm-cgo), const SizeofSockaddrUnix = 106 pkg syscall (netbsd-arm-cgo), const TCIFLUSH = 1 pkg syscall (netbsd-arm-cgo), const TCIOFLUSH = 3 pkg syscall (netbsd-arm-cgo), const TCOFLUSH = 2 pkg syscall (netbsd-arm-cgo), const TCP_CONGCTL = 32 pkg syscall (netbsd-arm-cgo), const TCP_KEEPCNT = 6 pkg syscall (netbsd-arm-cgo), const TCP_KEEPIDLE = 3 pkg syscall (netbsd-arm-cgo), const TCP_KEEPINIT = 7 pkg syscall (netbsd-arm-cgo), const TCP_KEEPINTVL = 5 pkg syscall (netbsd-arm-cgo), const TCP_MAXBURST = 4 pkg syscall (netbsd-arm-cgo), const TCP_MAXSEG = 2 pkg syscall (netbsd-arm-cgo), const TCP_MAXWIN = 65535 pkg syscall (netbsd-arm-cgo), const TCP_MAX_WINSHIFT = 14 pkg syscall (netbsd-arm-cgo), const TCP_MD5SIG = 16 pkg syscall (netbsd-arm-cgo), const TCP_MINMSS = 216 pkg syscall (netbsd-arm-cgo), const TCP_MSS = 536 pkg syscall (netbsd-arm-cgo), const TCSAFLUSH = 2 pkg syscall (netbsd-arm-cgo), const TIOCCBRK = 536900730 pkg syscall (netbsd-arm-cgo), const TIOCCDTR = 536900728 pkg syscall (netbsd-arm-cgo), const TIOCCONS = 2147775586 pkg syscall (netbsd-arm-cgo), const TIOCDCDTIMESTAMP = 1074558040 pkg syscall (netbsd-arm-cgo), const TIOCDRAIN = 536900702 pkg syscall (netbsd-arm-cgo), const TIOCEXCL = 536900621 pkg syscall (netbsd-arm-cgo), const TIOCEXT = 2147775584 pkg syscall (netbsd-arm-cgo), const TIOCFLAG_CDTRCTS = 16 pkg syscall (netbsd-arm-cgo), const TIOCFLAG_CLOCAL = 2 pkg syscall (netbsd-arm-cgo), const TIOCFLAG_CRTSCTS = 4 pkg syscall (netbsd-arm-cgo), const TIOCFLAG_MDMBUF = 8 pkg syscall (netbsd-arm-cgo), const TIOCFLAG_SOFTCAR = 1 pkg syscall (netbsd-arm-cgo), const TIOCFLUSH = 2147775504 pkg syscall (netbsd-arm-cgo), const TIOCGETA = 1076655123 pkg syscall (netbsd-arm-cgo), const TIOCGETD = 1074033690 pkg syscall (netbsd-arm-cgo), const TIOCGFLAGS = 1074033757 pkg syscall (netbsd-arm-cgo), const TIOCGLINED = 1075868738 pkg syscall (netbsd-arm-cgo), const TIOCGPGRP = 1074033783 pkg syscall (netbsd-arm-cgo), const TIOCGQSIZE = 1074033793 pkg syscall (netbsd-arm-cgo), const TIOCGRANTPT = 536900679 pkg syscall (netbsd-arm-cgo), const TIOCGSID = 1074033763 pkg syscall (netbsd-arm-cgo), const TIOCGSIZE = 1074295912 pkg syscall (netbsd-arm-cgo), const TIOCGWINSZ = 1074295912 pkg syscall (netbsd-arm-cgo), const TIOCMBIC = 2147775595 pkg syscall (netbsd-arm-cgo), const TIOCMBIS = 2147775596 pkg syscall (netbsd-arm-cgo), const TIOCMGET = 1074033770 pkg syscall (netbsd-arm-cgo), const TIOCMSET = 2147775597 pkg syscall (netbsd-arm-cgo), const TIOCM_CAR = 64 pkg syscall (netbsd-arm-cgo), const TIOCM_CD = 64 pkg syscall (netbsd-arm-cgo), const TIOCM_CTS = 32 pkg syscall (netbsd-arm-cgo), const TIOCM_DSR = 256 pkg syscall (netbsd-arm-cgo), const TIOCM_DTR = 2 pkg syscall (netbsd-arm-cgo), const TIOCM_LE = 1 pkg syscall (netbsd-arm-cgo), const TIOCM_RI = 128 pkg syscall (netbsd-arm-cgo), const TIOCM_RNG = 128 pkg syscall (netbsd-arm-cgo), const TIOCM_RTS = 4 pkg syscall (netbsd-arm-cgo), const TIOCM_SR = 16 pkg syscall (netbsd-arm-cgo), const TIOCM_ST = 8 pkg syscall (netbsd-arm-cgo), const TIOCNOTTY = 536900721 pkg syscall (netbsd-arm-cgo), const TIOCNXCL = 536900622 pkg syscall (netbsd-arm-cgo), const TIOCOUTQ = 1074033779 pkg syscall (netbsd-arm-cgo), const TIOCPKT = 2147775600 pkg syscall (netbsd-arm-cgo), const TIOCPKT_DATA = 0 pkg syscall (netbsd-arm-cgo), const TIOCPKT_DOSTOP = 32 pkg syscall (netbsd-arm-cgo), const TIOCPKT_FLUSHREAD = 1 pkg syscall (netbsd-arm-cgo), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (netbsd-arm-cgo), const TIOCPKT_IOCTL = 64 pkg syscall (netbsd-arm-cgo), const TIOCPKT_NOSTOP = 16 pkg syscall (netbsd-arm-cgo), const TIOCPKT_START = 8 pkg syscall (netbsd-arm-cgo), const TIOCPKT_STOP = 4 pkg syscall (netbsd-arm-cgo), const TIOCPTMGET = 1208513606 pkg syscall (netbsd-arm-cgo), const TIOCPTSNAME = 1208513608 pkg syscall (netbsd-arm-cgo), const TIOCRCVFRAME = 2147775557 pkg syscall (netbsd-arm-cgo), const TIOCREMOTE = 2147775593 pkg syscall (netbsd-arm-cgo), const TIOCSBRK = 536900731 pkg syscall (netbsd-arm-cgo), const TIOCSCTTY = 536900705 pkg syscall (netbsd-arm-cgo), const TIOCSDTR = 536900729 pkg syscall (netbsd-arm-cgo), const TIOCSETA = 2150396948 pkg syscall (netbsd-arm-cgo), const TIOCSETAF = 2150396950 pkg syscall (netbsd-arm-cgo), const TIOCSETAW = 2150396949 pkg syscall (netbsd-arm-cgo), const TIOCSETD = 2147775515 pkg syscall (netbsd-arm-cgo), const TIOCSFLAGS = 2147775580 pkg syscall (netbsd-arm-cgo), const TIOCSIG = 536900703 pkg syscall (netbsd-arm-cgo), const TIOCSLINED = 2149610563 pkg syscall (netbsd-arm-cgo), const TIOCSPGRP = 2147775606 pkg syscall (netbsd-arm-cgo), const TIOCSQSIZE = 2147775616 pkg syscall (netbsd-arm-cgo), const TIOCSSIZE = 2148037735 pkg syscall (netbsd-arm-cgo), const TIOCSTART = 536900718 pkg syscall (netbsd-arm-cgo), const TIOCSTAT = 2147775589 pkg syscall (netbsd-arm-cgo), const TIOCSTI = 2147578994 pkg syscall (netbsd-arm-cgo), const TIOCSTOP = 536900719 pkg syscall (netbsd-arm-cgo), const TIOCSWINSZ = 2148037735 pkg syscall (netbsd-arm-cgo), const TIOCUCNTL = 2147775590 pkg syscall (netbsd-arm-cgo), const TIOCXMTFRAME = 2147775556 pkg syscall (netbsd-arm-cgo), const TOSTOP = 4194304 pkg syscall (netbsd-arm-cgo), const VDISCARD = 15 pkg syscall (netbsd-arm-cgo), const VDSUSP = 11 pkg syscall (netbsd-arm-cgo), const VEOF = 0 pkg syscall (netbsd-arm-cgo), const VEOL = 1 pkg syscall (netbsd-arm-cgo), const VEOL2 = 2 pkg syscall (netbsd-arm-cgo), const VERASE = 3 pkg syscall (netbsd-arm-cgo), const VINTR = 8 pkg syscall (netbsd-arm-cgo), const VKILL = 5 pkg syscall (netbsd-arm-cgo), const VLNEXT = 14 pkg syscall (netbsd-arm-cgo), const VMIN = 16 pkg syscall (netbsd-arm-cgo), const VQUIT = 9 pkg syscall (netbsd-arm-cgo), const VREPRINT = 6 pkg syscall (netbsd-arm-cgo), const VSTART = 12 pkg syscall (netbsd-arm-cgo), const VSTATUS = 18 pkg syscall (netbsd-arm-cgo), const VSTOP = 13 pkg syscall (netbsd-arm-cgo), const VSUSP = 10 pkg syscall (netbsd-arm-cgo), const VTIME = 17 pkg syscall (netbsd-arm-cgo), const VWERASE = 4 pkg syscall (netbsd-arm-cgo), const WALL = 8 pkg syscall (netbsd-arm-cgo), const WALLSIG = 8 pkg syscall (netbsd-arm-cgo), const WALTSIG = 4 pkg syscall (netbsd-arm-cgo), const WCLONE = 4 pkg syscall (netbsd-arm-cgo), const WCOREFLAG = 128 pkg syscall (netbsd-arm-cgo), const WNOHANG = 1 pkg syscall (netbsd-arm-cgo), const WNOWAIT = 65536 pkg syscall (netbsd-arm-cgo), const WNOZOMBIE = 131072 pkg syscall (netbsd-arm-cgo), const WOPTSCHECKED = 262144 pkg syscall (netbsd-arm-cgo), const WSTOPPED = 127 pkg syscall (netbsd-arm-cgo), const WUNTRACED = 2 pkg syscall (openbsd-386), const AF_APPLETALK = 16 pkg syscall (openbsd-386), const AF_BLUETOOTH = 32 pkg syscall (openbsd-386), const AF_CCITT = 10 pkg syscall (openbsd-386), const AF_CHAOS = 5 pkg syscall (openbsd-386), const AF_CNT = 21 pkg syscall (openbsd-386), const AF_COIP = 20 pkg syscall (openbsd-386), const AF_DATAKIT = 9 pkg syscall (openbsd-386), const AF_DECnet = 12 pkg syscall (openbsd-386), const AF_DLI = 13 pkg syscall (openbsd-386), const AF_E164 = 26 pkg syscall (openbsd-386), const AF_ECMA = 8 pkg syscall (openbsd-386), const AF_ENCAP = 28 pkg syscall (openbsd-386), const AF_HYLINK = 15 pkg syscall (openbsd-386), const AF_IMPLINK = 3 pkg syscall (openbsd-386), const AF_INET6 = 24 pkg syscall (openbsd-386), const AF_IPX = 23 pkg syscall (openbsd-386), const AF_ISDN = 26 pkg syscall (openbsd-386), const AF_ISO = 7 pkg syscall (openbsd-386), const AF_KEY = 30 pkg syscall (openbsd-386), const AF_LAT = 14 pkg syscall (openbsd-386), const AF_LINK = 18 pkg syscall (openbsd-386), const AF_LOCAL = 1 pkg syscall (openbsd-386), const AF_MAX = 36 pkg syscall (openbsd-386), const AF_MPLS = 33 pkg syscall (openbsd-386), const AF_NATM = 27 pkg syscall (openbsd-386), const AF_NS = 6 pkg syscall (openbsd-386), const AF_OSI = 7 pkg syscall (openbsd-386), const AF_PUP = 4 pkg syscall (openbsd-386), const AF_ROUTE = 17 pkg syscall (openbsd-386), const AF_SIP = 29 pkg syscall (openbsd-386), const AF_SNA = 11 pkg syscall (openbsd-386), const ARPHRD_ETHER = 1 pkg syscall (openbsd-386), const ARPHRD_FRELAY = 15 pkg syscall (openbsd-386), const ARPHRD_IEEE1394 = 24 pkg syscall (openbsd-386), const ARPHRD_IEEE802 = 6 pkg syscall (openbsd-386), const B0 = 0 pkg syscall (openbsd-386), const B110 = 110 pkg syscall (openbsd-386), const B115200 = 115200 pkg syscall (openbsd-386), const B1200 = 1200 pkg syscall (openbsd-386), const B134 = 134 pkg syscall (openbsd-386), const B14400 = 14400 pkg syscall (openbsd-386), const B150 = 150 pkg syscall (openbsd-386), const B1800 = 1800 pkg syscall (openbsd-386), const B19200 = 19200 pkg syscall (openbsd-386), const B200 = 200 pkg syscall (openbsd-386), const B230400 = 230400 pkg syscall (openbsd-386), const B2400 = 2400 pkg syscall (openbsd-386), const B28800 = 28800 pkg syscall (openbsd-386), const B300 = 300 pkg syscall (openbsd-386), const B38400 = 38400 pkg syscall (openbsd-386), const B4800 = 4800 pkg syscall (openbsd-386), const B50 = 50 pkg syscall (openbsd-386), const B57600 = 57600 pkg syscall (openbsd-386), const B600 = 600 pkg syscall (openbsd-386), const B7200 = 7200 pkg syscall (openbsd-386), const B75 = 75 pkg syscall (openbsd-386), const B76800 = 76800 pkg syscall (openbsd-386), const B9600 = 9600 pkg syscall (openbsd-386), const BIOCFLUSH = 536887912 pkg syscall (openbsd-386), const BIOCGBLEN = 1074020966 pkg syscall (openbsd-386), const BIOCGDIRFILT = 1074020988 pkg syscall (openbsd-386), const BIOCGDLT = 1074020970 pkg syscall (openbsd-386), const BIOCGDLTLIST = 3221766779 pkg syscall (openbsd-386), const BIOCGETIF = 1075855979 pkg syscall (openbsd-386), const BIOCGFILDROP = 1074020984 pkg syscall (openbsd-386), const BIOCGHDRCMPLT = 1074020980 pkg syscall (openbsd-386), const BIOCGRSIG = 1074020979 pkg syscall (openbsd-386), const BIOCGRTIMEOUT = 1074283118 pkg syscall (openbsd-386), const BIOCGSTATS = 1074283119 pkg syscall (openbsd-386), const BIOCIMMEDIATE = 2147762800 pkg syscall (openbsd-386), const BIOCLOCK = 536887926 pkg syscall (openbsd-386), const BIOCPROMISC = 536887913 pkg syscall (openbsd-386), const BIOCSBLEN = 3221504614 pkg syscall (openbsd-386), const BIOCSDIRFILT = 2147762813 pkg syscall (openbsd-386), const BIOCSDLT = 2147762810 pkg syscall (openbsd-386), const BIOCSETF = 2148024935 pkg syscall (openbsd-386), const BIOCSETIF = 2149597804 pkg syscall (openbsd-386), const BIOCSETWF = 2148024951 pkg syscall (openbsd-386), const BIOCSFILDROP = 2147762809 pkg syscall (openbsd-386), const BIOCSHDRCMPLT = 2147762805 pkg syscall (openbsd-386), const BIOCSRSIG = 2147762802 pkg syscall (openbsd-386), const BIOCSRTIMEOUT = 2148024941 pkg syscall (openbsd-386), const BIOCVERSION = 1074020977 pkg syscall (openbsd-386), const BPF_A = 16 pkg syscall (openbsd-386), const BPF_ABS = 32 pkg syscall (openbsd-386), const BPF_ADD = 0 pkg syscall (openbsd-386), const BPF_ALIGNMENT = 4 pkg syscall (openbsd-386), const BPF_ALU = 4 pkg syscall (openbsd-386), const BPF_AND = 80 pkg syscall (openbsd-386), const BPF_B = 16 pkg syscall (openbsd-386), const BPF_DIRECTION_IN = 1 pkg syscall (openbsd-386), const BPF_DIRECTION_OUT = 2 pkg syscall (openbsd-386), const BPF_DIV = 48 pkg syscall (openbsd-386), const BPF_H = 8 pkg syscall (openbsd-386), const BPF_IMM = 0 pkg syscall (openbsd-386), const BPF_IND = 64 pkg syscall (openbsd-386), const BPF_JA = 0 pkg syscall (openbsd-386), const BPF_JEQ = 16 pkg syscall (openbsd-386), const BPF_JGE = 48 pkg syscall (openbsd-386), const BPF_JGT = 32 pkg syscall (openbsd-386), const BPF_JMP = 5 pkg syscall (openbsd-386), const BPF_JSET = 64 pkg syscall (openbsd-386), const BPF_K = 0 pkg syscall (openbsd-386), const BPF_LD = 0 pkg syscall (openbsd-386), const BPF_LDX = 1 pkg syscall (openbsd-386), const BPF_LEN = 128 pkg syscall (openbsd-386), const BPF_LSH = 96 pkg syscall (openbsd-386), const BPF_MAJOR_VERSION = 1 pkg syscall (openbsd-386), const BPF_MAXBUFSIZE = 2097152 pkg syscall (openbsd-386), const BPF_MAXINSNS = 512 pkg syscall (openbsd-386), const BPF_MEM = 96 pkg syscall (openbsd-386), const BPF_MEMWORDS = 16 pkg syscall (openbsd-386), const BPF_MINBUFSIZE = 32 pkg syscall (openbsd-386), const BPF_MINOR_VERSION = 1 pkg syscall (openbsd-386), const BPF_MISC = 7 pkg syscall (openbsd-386), const BPF_MSH = 160 pkg syscall (openbsd-386), const BPF_MUL = 32 pkg syscall (openbsd-386), const BPF_NEG = 128 pkg syscall (openbsd-386), const BPF_OR = 64 pkg syscall (openbsd-386), const BPF_RELEASE = 199606 pkg syscall (openbsd-386), const BPF_RET = 6 pkg syscall (openbsd-386), const BPF_RSH = 112 pkg syscall (openbsd-386), const BPF_ST = 2 pkg syscall (openbsd-386), const BPF_STX = 3 pkg syscall (openbsd-386), const BPF_SUB = 16 pkg syscall (openbsd-386), const BPF_TAX = 0 pkg syscall (openbsd-386), const BPF_TXA = 128 pkg syscall (openbsd-386), const BPF_W = 0 pkg syscall (openbsd-386), const BPF_X = 8 pkg syscall (openbsd-386), const BRKINT = 2 pkg syscall (openbsd-386), const CFLUSH = 15 pkg syscall (openbsd-386), const CLOCAL = 32768 pkg syscall (openbsd-386), const CREAD = 2048 pkg syscall (openbsd-386), const CS5 = 0 pkg syscall (openbsd-386), const CS6 = 256 pkg syscall (openbsd-386), const CS7 = 512 pkg syscall (openbsd-386), const CS8 = 768 pkg syscall (openbsd-386), const CSIZE = 768 pkg syscall (openbsd-386), const CSTART = 17 pkg syscall (openbsd-386), const CSTATUS = 255 pkg syscall (openbsd-386), const CSTOP = 19 pkg syscall (openbsd-386), const CSTOPB = 1024 pkg syscall (openbsd-386), const CSUSP = 26 pkg syscall (openbsd-386), const CTL_MAXNAME = 12 pkg syscall (openbsd-386), const CTL_NET = 4 pkg syscall (openbsd-386), const DIOCOSFPFLUSH = 536888398 pkg syscall (openbsd-386), const DLT_ARCNET = 7 pkg syscall (openbsd-386), const DLT_ATM_RFC1483 = 11 pkg syscall (openbsd-386), const DLT_AX25 = 3 pkg syscall (openbsd-386), const DLT_CHAOS = 5 pkg syscall (openbsd-386), const DLT_C_HDLC = 104 pkg syscall (openbsd-386), const DLT_EN10MB = 1 pkg syscall (openbsd-386), const DLT_EN3MB = 2 pkg syscall (openbsd-386), const DLT_ENC = 13 pkg syscall (openbsd-386), const DLT_FDDI = 10 pkg syscall (openbsd-386), const DLT_IEEE802 = 6 pkg syscall (openbsd-386), const DLT_IEEE802_11 = 105 pkg syscall (openbsd-386), const DLT_IEEE802_11_RADIO = 127 pkg syscall (openbsd-386), const DLT_LOOP = 12 pkg syscall (openbsd-386), const DLT_MPLS = 219 pkg syscall (openbsd-386), const DLT_NULL = 0 pkg syscall (openbsd-386), const DLT_PFLOG = 117 pkg syscall (openbsd-386), const DLT_PFSYNC = 18 pkg syscall (openbsd-386), const DLT_PPP = 9 pkg syscall (openbsd-386), const DLT_PPP_BSDOS = 16 pkg syscall (openbsd-386), const DLT_PPP_ETHER = 51 pkg syscall (openbsd-386), const DLT_PPP_SERIAL = 50 pkg syscall (openbsd-386), const DLT_PRONET = 4 pkg syscall (openbsd-386), const DLT_RAW = 14 pkg syscall (openbsd-386), const DLT_SLIP = 8 pkg syscall (openbsd-386), const DLT_SLIP_BSDOS = 15 pkg syscall (openbsd-386), const DT_BLK = 6 pkg syscall (openbsd-386), const DT_CHR = 2 pkg syscall (openbsd-386), const DT_DIR = 4 pkg syscall (openbsd-386), const DT_FIFO = 1 pkg syscall (openbsd-386), const DT_LNK = 10 pkg syscall (openbsd-386), const DT_REG = 8 pkg syscall (openbsd-386), const DT_SOCK = 12 pkg syscall (openbsd-386), const DT_UNKNOWN = 0 pkg syscall (openbsd-386), const E2BIG = 7 pkg syscall (openbsd-386), const EACCES = 13 pkg syscall (openbsd-386), const EADDRINUSE = 48 pkg syscall (openbsd-386), const EADDRNOTAVAIL = 49 pkg syscall (openbsd-386), const EAFNOSUPPORT = 47 pkg syscall (openbsd-386), const EAGAIN = 35 pkg syscall (openbsd-386), const EALREADY = 37 pkg syscall (openbsd-386), const EAUTH = 80 pkg syscall (openbsd-386), const EBADF = 9 pkg syscall (openbsd-386), const EBADRPC = 72 pkg syscall (openbsd-386), const EBUSY = 16 pkg syscall (openbsd-386), const ECANCELED = 88 pkg syscall (openbsd-386), const ECHILD = 10 pkg syscall (openbsd-386), const ECHO = 8 pkg syscall (openbsd-386), const ECHOCTL = 64 pkg syscall (openbsd-386), const ECHOE = 2 pkg syscall (openbsd-386), const ECHOK = 4 pkg syscall (openbsd-386), const ECHOKE = 1 pkg syscall (openbsd-386), const ECHONL = 16 pkg syscall (openbsd-386), const ECHOPRT = 32 pkg syscall (openbsd-386), const ECONNABORTED = 53 pkg syscall (openbsd-386), const ECONNREFUSED = 61 pkg syscall (openbsd-386), const ECONNRESET = 54 pkg syscall (openbsd-386), const EDEADLK = 11 pkg syscall (openbsd-386), const EDESTADDRREQ = 39 pkg syscall (openbsd-386), const EDOM = 33 pkg syscall (openbsd-386), const EDQUOT = 69 pkg syscall (openbsd-386), const EEXIST = 17 pkg syscall (openbsd-386), const EFAULT = 14 pkg syscall (openbsd-386), const EFBIG = 27 pkg syscall (openbsd-386), const EFTYPE = 79 pkg syscall (openbsd-386), const EHOSTDOWN = 64 pkg syscall (openbsd-386), const EHOSTUNREACH = 65 pkg syscall (openbsd-386), const EIDRM = 89 pkg syscall (openbsd-386), const EILSEQ = 84 pkg syscall (openbsd-386), const EINPROGRESS = 36 pkg syscall (openbsd-386), const EINTR = 4 pkg syscall (openbsd-386), const EINVAL = 22 pkg syscall (openbsd-386), const EIO = 5 pkg syscall (openbsd-386), const EIPSEC = 82 pkg syscall (openbsd-386), const EISCONN = 56 pkg syscall (openbsd-386), const EISDIR = 21 pkg syscall (openbsd-386), const ELAST = 91 pkg syscall (openbsd-386), const ELOOP = 62 pkg syscall (openbsd-386), const EMEDIUMTYPE = 86 pkg syscall (openbsd-386), const EMFILE = 24 pkg syscall (openbsd-386), const EMLINK = 31 pkg syscall (openbsd-386), const EMSGSIZE = 40 pkg syscall (openbsd-386), const EMT_TAGOVF = 1 pkg syscall (openbsd-386), const EMUL_ENABLED = 1 pkg syscall (openbsd-386), const EMUL_NATIVE = 2 pkg syscall (openbsd-386), const ENAMETOOLONG = 63 pkg syscall (openbsd-386), const ENDRUNDISC = 9 pkg syscall (openbsd-386), const ENEEDAUTH = 81 pkg syscall (openbsd-386), const ENETDOWN = 50 pkg syscall (openbsd-386), const ENETRESET = 52 pkg syscall (openbsd-386), const ENETUNREACH = 51 pkg syscall (openbsd-386), const ENFILE = 23 pkg syscall (openbsd-386), const ENOATTR = 83 pkg syscall (openbsd-386), const ENOBUFS = 55 pkg syscall (openbsd-386), const ENODEV = 19 pkg syscall (openbsd-386), const ENOEXEC = 8 pkg syscall (openbsd-386), const ENOLCK = 77 pkg syscall (openbsd-386), const ENOMEDIUM = 85 pkg syscall (openbsd-386), const ENOMEM = 12 pkg syscall (openbsd-386), const ENOMSG = 90 pkg syscall (openbsd-386), const ENOPROTOOPT = 42 pkg syscall (openbsd-386), const ENOSPC = 28 pkg syscall (openbsd-386), const ENOSYS = 78 pkg syscall (openbsd-386), const ENOTBLK = 15 pkg syscall (openbsd-386), const ENOTCONN = 57 pkg syscall (openbsd-386), const ENOTDIR = 20 pkg syscall (openbsd-386), const ENOTEMPTY = 66 pkg syscall (openbsd-386), const ENOTSOCK = 38 pkg syscall (openbsd-386), const ENOTSUP = 91 pkg syscall (openbsd-386), const ENOTTY = 25 pkg syscall (openbsd-386), const ENXIO = 6 pkg syscall (openbsd-386), const EOPNOTSUPP = 45 pkg syscall (openbsd-386), const EOVERFLOW = 87 pkg syscall (openbsd-386), const EPERM = 1 pkg syscall (openbsd-386), const EPFNOSUPPORT = 46 pkg syscall (openbsd-386), const EPIPE = 32 pkg syscall (openbsd-386), const EPROCLIM = 67 pkg syscall (openbsd-386), const EPROCUNAVAIL = 76 pkg syscall (openbsd-386), const EPROGMISMATCH = 75 pkg syscall (openbsd-386), const EPROGUNAVAIL = 74 pkg syscall (openbsd-386), const EPROTONOSUPPORT = 43 pkg syscall (openbsd-386), const EPROTOTYPE = 41 pkg syscall (openbsd-386), const ERANGE = 34 pkg syscall (openbsd-386), const EREMOTE = 71 pkg syscall (openbsd-386), const EROFS = 30 pkg syscall (openbsd-386), const ERPCMISMATCH = 73 pkg syscall (openbsd-386), const ESHUTDOWN = 58 pkg syscall (openbsd-386), const ESOCKTNOSUPPORT = 44 pkg syscall (openbsd-386), const ESPIPE = 29 pkg syscall (openbsd-386), const ESRCH = 3 pkg syscall (openbsd-386), const ESTALE = 70 pkg syscall (openbsd-386), const ETHERMIN = 46 pkg syscall (openbsd-386), const ETHERMTU = 1500 pkg syscall (openbsd-386), const ETHERTYPE_8023 = 4 pkg syscall (openbsd-386), const ETHERTYPE_AARP = 33011 pkg syscall (openbsd-386), const ETHERTYPE_ACCTON = 33680 pkg syscall (openbsd-386), const ETHERTYPE_AEONIC = 32822 pkg syscall (openbsd-386), const ETHERTYPE_ALPHA = 33098 pkg syscall (openbsd-386), const ETHERTYPE_AMBER = 24584 pkg syscall (openbsd-386), const ETHERTYPE_AMOEBA = 33093 pkg syscall (openbsd-386), const ETHERTYPE_AOE = 34978 pkg syscall (openbsd-386), const ETHERTYPE_APOLLO = 33015 pkg syscall (openbsd-386), const ETHERTYPE_APOLLODOMAIN = 32793 pkg syscall (openbsd-386), const ETHERTYPE_APPLETALK = 32923 pkg syscall (openbsd-386), const ETHERTYPE_APPLITEK = 32967 pkg syscall (openbsd-386), const ETHERTYPE_ARGONAUT = 32826 pkg syscall (openbsd-386), const ETHERTYPE_ARP = 2054 pkg syscall (openbsd-386), const ETHERTYPE_AT = 32923 pkg syscall (openbsd-386), const ETHERTYPE_ATALK = 32923 pkg syscall (openbsd-386), const ETHERTYPE_ATOMIC = 34527 pkg syscall (openbsd-386), const ETHERTYPE_ATT = 32873 pkg syscall (openbsd-386), const ETHERTYPE_ATTSTANFORD = 32776 pkg syscall (openbsd-386), const ETHERTYPE_AUTOPHON = 32874 pkg syscall (openbsd-386), const ETHERTYPE_AXIS = 34902 pkg syscall (openbsd-386), const ETHERTYPE_BCLOOP = 36867 pkg syscall (openbsd-386), const ETHERTYPE_BOFL = 33026 pkg syscall (openbsd-386), const ETHERTYPE_CABLETRON = 28724 pkg syscall (openbsd-386), const ETHERTYPE_CHAOS = 2052 pkg syscall (openbsd-386), const ETHERTYPE_COMDESIGN = 32876 pkg syscall (openbsd-386), const ETHERTYPE_COMPUGRAPHIC = 32877 pkg syscall (openbsd-386), const ETHERTYPE_COUNTERPOINT = 32866 pkg syscall (openbsd-386), const ETHERTYPE_CRONUS = 32772 pkg syscall (openbsd-386), const ETHERTYPE_CRONUSVLN = 32771 pkg syscall (openbsd-386), const ETHERTYPE_DCA = 4660 pkg syscall (openbsd-386), const ETHERTYPE_DDE = 32891 pkg syscall (openbsd-386), const ETHERTYPE_DEBNI = 43690 pkg syscall (openbsd-386), const ETHERTYPE_DECAM = 32840 pkg syscall (openbsd-386), const ETHERTYPE_DECCUST = 24582 pkg syscall (openbsd-386), const ETHERTYPE_DECDIAG = 24581 pkg syscall (openbsd-386), const ETHERTYPE_DECDNS = 32828 pkg syscall (openbsd-386), const ETHERTYPE_DECDTS = 32830 pkg syscall (openbsd-386), const ETHERTYPE_DECEXPER = 24576 pkg syscall (openbsd-386), const ETHERTYPE_DECLAST = 32833 pkg syscall (openbsd-386), const ETHERTYPE_DECLTM = 32831 pkg syscall (openbsd-386), const ETHERTYPE_DECMUMPS = 24585 pkg syscall (openbsd-386), const ETHERTYPE_DECNETBIOS = 32832 pkg syscall (openbsd-386), const ETHERTYPE_DELTACON = 34526 pkg syscall (openbsd-386), const ETHERTYPE_DIDDLE = 17185 pkg syscall (openbsd-386), const ETHERTYPE_DLOG1 = 1632 pkg syscall (openbsd-386), const ETHERTYPE_DLOG2 = 1633 pkg syscall (openbsd-386), const ETHERTYPE_DN = 24579 pkg syscall (openbsd-386), const ETHERTYPE_DOGFIGHT = 6537 pkg syscall (openbsd-386), const ETHERTYPE_DSMD = 32825 pkg syscall (openbsd-386), const ETHERTYPE_ECMA = 2051 pkg syscall (openbsd-386), const ETHERTYPE_ENCRYPT = 32829 pkg syscall (openbsd-386), const ETHERTYPE_ES = 32861 pkg syscall (openbsd-386), const ETHERTYPE_EXCELAN = 32784 pkg syscall (openbsd-386), const ETHERTYPE_EXPERDATA = 32841 pkg syscall (openbsd-386), const ETHERTYPE_FLIP = 33094 pkg syscall (openbsd-386), const ETHERTYPE_FLOWCONTROL = 34824 pkg syscall (openbsd-386), const ETHERTYPE_FRARP = 2056 pkg syscall (openbsd-386), const ETHERTYPE_GENDYN = 32872 pkg syscall (openbsd-386), const ETHERTYPE_HAYES = 33072 pkg syscall (openbsd-386), const ETHERTYPE_HIPPI_FP = 33152 pkg syscall (openbsd-386), const ETHERTYPE_HITACHI = 34848 pkg syscall (openbsd-386), const ETHERTYPE_HP = 32773 pkg syscall (openbsd-386), const ETHERTYPE_IEEEPUP = 2560 pkg syscall (openbsd-386), const ETHERTYPE_IEEEPUPAT = 2561 pkg syscall (openbsd-386), const ETHERTYPE_IMLBL = 19522 pkg syscall (openbsd-386), const ETHERTYPE_IMLBLDIAG = 16972 pkg syscall (openbsd-386), const ETHERTYPE_IP = 2048 pkg syscall (openbsd-386), const ETHERTYPE_IPAS = 34668 pkg syscall (openbsd-386), const ETHERTYPE_IPV6 = 34525 pkg syscall (openbsd-386), const ETHERTYPE_IPX = 33079 pkg syscall (openbsd-386), const ETHERTYPE_IPXNEW = 32823 pkg syscall (openbsd-386), const ETHERTYPE_KALPANA = 34178 pkg syscall (openbsd-386), const ETHERTYPE_LANBRIDGE = 32824 pkg syscall (openbsd-386), const ETHERTYPE_LANPROBE = 34952 pkg syscall (openbsd-386), const ETHERTYPE_LAT = 24580 pkg syscall (openbsd-386), const ETHERTYPE_LBACK = 36864 pkg syscall (openbsd-386), const ETHERTYPE_LITTLE = 32864 pkg syscall (openbsd-386), const ETHERTYPE_LLDP = 35020 pkg syscall (openbsd-386), const ETHERTYPE_LOGICRAFT = 33096 pkg syscall (openbsd-386), const ETHERTYPE_LOOPBACK = 36864 pkg syscall (openbsd-386), const ETHERTYPE_MATRA = 32890 pkg syscall (openbsd-386), const ETHERTYPE_MAX = 65535 pkg syscall (openbsd-386), const ETHERTYPE_MERIT = 32892 pkg syscall (openbsd-386), const ETHERTYPE_MICP = 34618 pkg syscall (openbsd-386), const ETHERTYPE_MOPDL = 24577 pkg syscall (openbsd-386), const ETHERTYPE_MOPRC = 24578 pkg syscall (openbsd-386), const ETHERTYPE_MOTOROLA = 33165 pkg syscall (openbsd-386), const ETHERTYPE_MPLS = 34887 pkg syscall (openbsd-386), const ETHERTYPE_MPLS_MCAST = 34888 pkg syscall (openbsd-386), const ETHERTYPE_MUMPS = 33087 pkg syscall (openbsd-386), const ETHERTYPE_NBPCC = 15364 pkg syscall (openbsd-386), const ETHERTYPE_NBPCLAIM = 15369 pkg syscall (openbsd-386), const ETHERTYPE_NBPCLREQ = 15365 pkg syscall (openbsd-386), const ETHERTYPE_NBPCLRSP = 15366 pkg syscall (openbsd-386), const ETHERTYPE_NBPCREQ = 15362 pkg syscall (openbsd-386), const ETHERTYPE_NBPCRSP = 15363 pkg syscall (openbsd-386), const ETHERTYPE_NBPDG = 15367 pkg syscall (openbsd-386), const ETHERTYPE_NBPDGB = 15368 pkg syscall (openbsd-386), const ETHERTYPE_NBPDLTE = 15370 pkg syscall (openbsd-386), const ETHERTYPE_NBPRAR = 15372 pkg syscall (openbsd-386), const ETHERTYPE_NBPRAS = 15371 pkg syscall (openbsd-386), const ETHERTYPE_NBPRST = 15373 pkg syscall (openbsd-386), const ETHERTYPE_NBPSCD = 15361 pkg syscall (openbsd-386), const ETHERTYPE_NBPVCD = 15360 pkg syscall (openbsd-386), const ETHERTYPE_NBS = 2050 pkg syscall (openbsd-386), const ETHERTYPE_NCD = 33097 pkg syscall (openbsd-386), const ETHERTYPE_NESTAR = 32774 pkg syscall (openbsd-386), const ETHERTYPE_NETBEUI = 33169 pkg syscall (openbsd-386), const ETHERTYPE_NOVELL = 33080 pkg syscall (openbsd-386), const ETHERTYPE_NS = 1536 pkg syscall (openbsd-386), const ETHERTYPE_NSAT = 1537 pkg syscall (openbsd-386), const ETHERTYPE_NSCOMPAT = 2055 pkg syscall (openbsd-386), const ETHERTYPE_NTRAILER = 16 pkg syscall (openbsd-386), const ETHERTYPE_OS9 = 28679 pkg syscall (openbsd-386), const ETHERTYPE_OS9NET = 28681 pkg syscall (openbsd-386), const ETHERTYPE_PACER = 32966 pkg syscall (openbsd-386), const ETHERTYPE_PAE = 34958 pkg syscall (openbsd-386), const ETHERTYPE_PCS = 16962 pkg syscall (openbsd-386), const ETHERTYPE_PLANNING = 32836 pkg syscall (openbsd-386), const ETHERTYPE_PPP = 34827 pkg syscall (openbsd-386), const ETHERTYPE_PPPOE = 34916 pkg syscall (openbsd-386), const ETHERTYPE_PPPOEDISC = 34915 pkg syscall (openbsd-386), const ETHERTYPE_PRIMENTS = 28721 pkg syscall (openbsd-386), const ETHERTYPE_PUP = 512 pkg syscall (openbsd-386), const ETHERTYPE_PUPAT = 512 pkg syscall (openbsd-386), const ETHERTYPE_QINQ = 34984 pkg syscall (openbsd-386), const ETHERTYPE_RACAL = 28720 pkg syscall (openbsd-386), const ETHERTYPE_RATIONAL = 33104 pkg syscall (openbsd-386), const ETHERTYPE_RAWFR = 25945 pkg syscall (openbsd-386), const ETHERTYPE_RCL = 6549 pkg syscall (openbsd-386), const ETHERTYPE_RDP = 34617 pkg syscall (openbsd-386), const ETHERTYPE_RETIX = 33010 pkg syscall (openbsd-386), const ETHERTYPE_REVARP = 32821 pkg syscall (openbsd-386), const ETHERTYPE_SCA = 24583 pkg syscall (openbsd-386), const ETHERTYPE_SECTRA = 34523 pkg syscall (openbsd-386), const ETHERTYPE_SECUREDATA = 34669 pkg syscall (openbsd-386), const ETHERTYPE_SGITW = 33150 pkg syscall (openbsd-386), const ETHERTYPE_SG_BOUNCE = 32790 pkg syscall (openbsd-386), const ETHERTYPE_SG_DIAG = 32787 pkg syscall (openbsd-386), const ETHERTYPE_SG_NETGAMES = 32788 pkg syscall (openbsd-386), const ETHERTYPE_SG_RESV = 32789 pkg syscall (openbsd-386), const ETHERTYPE_SIMNET = 21000 pkg syscall (openbsd-386), const ETHERTYPE_SLOW = 34825 pkg syscall (openbsd-386), const ETHERTYPE_SNA = 32981 pkg syscall (openbsd-386), const ETHERTYPE_SNMP = 33100 pkg syscall (openbsd-386), const ETHERTYPE_SONIX = 64245 pkg syscall (openbsd-386), const ETHERTYPE_SPIDER = 32927 pkg syscall (openbsd-386), const ETHERTYPE_SPRITE = 1280 pkg syscall (openbsd-386), const ETHERTYPE_STP = 33153 pkg syscall (openbsd-386), const ETHERTYPE_TALARIS = 33067 pkg syscall (openbsd-386), const ETHERTYPE_TALARISMC = 34091 pkg syscall (openbsd-386), const ETHERTYPE_TCPCOMP = 34667 pkg syscall (openbsd-386), const ETHERTYPE_TCPSM = 36866 pkg syscall (openbsd-386), const ETHERTYPE_TEC = 33103 pkg syscall (openbsd-386), const ETHERTYPE_TIGAN = 32815 pkg syscall (openbsd-386), const ETHERTYPE_TRAIL = 4096 pkg syscall (openbsd-386), const ETHERTYPE_TRANSETHER = 25944 pkg syscall (openbsd-386), const ETHERTYPE_TYMSHARE = 32814 pkg syscall (openbsd-386), const ETHERTYPE_UBBST = 28677 pkg syscall (openbsd-386), const ETHERTYPE_UBDEBUG = 2304 pkg syscall (openbsd-386), const ETHERTYPE_UBDIAGLOOP = 28674 pkg syscall (openbsd-386), const ETHERTYPE_UBDL = 28672 pkg syscall (openbsd-386), const ETHERTYPE_UBNIU = 28673 pkg syscall (openbsd-386), const ETHERTYPE_UBNMC = 28675 pkg syscall (openbsd-386), const ETHERTYPE_VALID = 5632 pkg syscall (openbsd-386), const ETHERTYPE_VARIAN = 32989 pkg syscall (openbsd-386), const ETHERTYPE_VAXELN = 32827 pkg syscall (openbsd-386), const ETHERTYPE_VEECO = 32871 pkg syscall (openbsd-386), const ETHERTYPE_VEXP = 32859 pkg syscall (openbsd-386), const ETHERTYPE_VGLAB = 33073 pkg syscall (openbsd-386), const ETHERTYPE_VINES = 2989 pkg syscall (openbsd-386), const ETHERTYPE_VINESECHO = 2991 pkg syscall (openbsd-386), const ETHERTYPE_VINESLOOP = 2990 pkg syscall (openbsd-386), const ETHERTYPE_VITAL = 65280 pkg syscall (openbsd-386), const ETHERTYPE_VLAN = 33024 pkg syscall (openbsd-386), const ETHERTYPE_VLTLMAN = 32896 pkg syscall (openbsd-386), const ETHERTYPE_VPROD = 32860 pkg syscall (openbsd-386), const ETHERTYPE_VURESERVED = 33095 pkg syscall (openbsd-386), const ETHERTYPE_WATERLOO = 33072 pkg syscall (openbsd-386), const ETHERTYPE_WELLFLEET = 33027 pkg syscall (openbsd-386), const ETHERTYPE_X25 = 2053 pkg syscall (openbsd-386), const ETHERTYPE_X75 = 2049 pkg syscall (openbsd-386), const ETHERTYPE_XNSSM = 36865 pkg syscall (openbsd-386), const ETHERTYPE_XTP = 33149 pkg syscall (openbsd-386), const ETHER_ADDR_LEN = 6 pkg syscall (openbsd-386), const ETHER_ALIGN = 2 pkg syscall (openbsd-386), const ETHER_CRC_LEN = 4 pkg syscall (openbsd-386), const ETHER_CRC_POLY_BE = 79764918 pkg syscall (openbsd-386), const ETHER_CRC_POLY_LE = 3988292384 pkg syscall (openbsd-386), const ETHER_HDR_LEN = 14 pkg syscall (openbsd-386), const ETHER_MAX_DIX_LEN = 1536 pkg syscall (openbsd-386), const ETHER_MAX_LEN = 1518 pkg syscall (openbsd-386), const ETHER_MIN_LEN = 64 pkg syscall (openbsd-386), const ETHER_TYPE_LEN = 2 pkg syscall (openbsd-386), const ETHER_VLAN_ENCAP_LEN = 4 pkg syscall (openbsd-386), const ETIMEDOUT = 60 pkg syscall (openbsd-386), const ETOOMANYREFS = 59 pkg syscall (openbsd-386), const ETXTBSY = 26 pkg syscall (openbsd-386), const EUSERS = 68 pkg syscall (openbsd-386), const EVFILT_AIO = -3 pkg syscall (openbsd-386), const EVFILT_PROC = -5 pkg syscall (openbsd-386), const EVFILT_READ = -1 pkg syscall (openbsd-386), const EVFILT_SIGNAL = -6 pkg syscall (openbsd-386), const EVFILT_SYSCOUNT = 7 pkg syscall (openbsd-386), const EVFILT_TIMER = -7 pkg syscall (openbsd-386), const EVFILT_VNODE = -4 pkg syscall (openbsd-386), const EVFILT_WRITE = -2 pkg syscall (openbsd-386), const EV_ADD = 1 pkg syscall (openbsd-386), const EV_CLEAR = 32 pkg syscall (openbsd-386), const EV_DELETE = 2 pkg syscall (openbsd-386), const EV_DISABLE = 8 pkg syscall (openbsd-386), const EV_ENABLE = 4 pkg syscall (openbsd-386), const EV_EOF = 32768 pkg syscall (openbsd-386), const EV_ERROR = 16384 pkg syscall (openbsd-386), const EV_FLAG1 = 8192 pkg syscall (openbsd-386), const EV_ONESHOT = 16 pkg syscall (openbsd-386), const EV_SYSFLAGS = 61440 pkg syscall (openbsd-386), const EWOULDBLOCK = 35 pkg syscall (openbsd-386), const EXDEV = 18 pkg syscall (openbsd-386), const EXTA = 19200 pkg syscall (openbsd-386), const EXTB = 38400 pkg syscall (openbsd-386), const EXTPROC = 2048 pkg syscall (openbsd-386), const FD_CLOEXEC = 1 pkg syscall (openbsd-386), const FD_SETSIZE = 1024 pkg syscall (openbsd-386), const FLUSHO = 8388608 pkg syscall (openbsd-386), const F_DUPFD = 0 pkg syscall (openbsd-386), const F_DUPFD_CLOEXEC = 10 pkg syscall (openbsd-386), const F_GETFD = 1 pkg syscall (openbsd-386), const F_GETFL = 3 pkg syscall (openbsd-386), const F_GETLK = 7 pkg syscall (openbsd-386), const F_GETOWN = 5 pkg syscall (openbsd-386), const F_OK = 0 pkg syscall (openbsd-386), const F_RDLCK = 1 pkg syscall (openbsd-386), const F_SETFD = 2 pkg syscall (openbsd-386), const F_SETFL = 4 pkg syscall (openbsd-386), const F_SETLK = 8 pkg syscall (openbsd-386), const F_SETLKW = 9 pkg syscall (openbsd-386), const F_SETOWN = 6 pkg syscall (openbsd-386), const F_UNLCK = 2 pkg syscall (openbsd-386), const F_WRLCK = 3 pkg syscall (openbsd-386), const HUPCL = 16384 pkg syscall (openbsd-386), const ICANON = 256 pkg syscall (openbsd-386), const ICRNL = 256 pkg syscall (openbsd-386), const IEXTEN = 1024 pkg syscall (openbsd-386), const IFAN_ARRIVAL = 0 pkg syscall (openbsd-386), const IFAN_DEPARTURE = 1 pkg syscall (openbsd-386), const IFA_ROUTE = 1 pkg syscall (openbsd-386), const IFF_ALLMULTI = 512 pkg syscall (openbsd-386), const IFF_CANTCHANGE = 36434 pkg syscall (openbsd-386), const IFF_DEBUG = 4 pkg syscall (openbsd-386), const IFF_LINK0 = 4096 pkg syscall (openbsd-386), const IFF_LINK1 = 8192 pkg syscall (openbsd-386), const IFF_LINK2 = 16384 pkg syscall (openbsd-386), const IFF_LOOPBACK = 8 pkg syscall (openbsd-386), const IFF_MULTICAST = 32768 pkg syscall (openbsd-386), const IFF_NOARP = 128 pkg syscall (openbsd-386), const IFF_NOTRAILERS = 32 pkg syscall (openbsd-386), const IFF_OACTIVE = 1024 pkg syscall (openbsd-386), const IFF_POINTOPOINT = 16 pkg syscall (openbsd-386), const IFF_PROMISC = 256 pkg syscall (openbsd-386), const IFF_RUNNING = 64 pkg syscall (openbsd-386), const IFF_SIMPLEX = 2048 pkg syscall (openbsd-386), const IFNAMSIZ = 16 pkg syscall (openbsd-386), const IFT_1822 = 2 pkg syscall (openbsd-386), const IFT_A12MPPSWITCH = 130 pkg syscall (openbsd-386), const IFT_AAL2 = 187 pkg syscall (openbsd-386), const IFT_AAL5 = 49 pkg syscall (openbsd-386), const IFT_ADSL = 94 pkg syscall (openbsd-386), const IFT_AFLANE8023 = 59 pkg syscall (openbsd-386), const IFT_AFLANE8025 = 60 pkg syscall (openbsd-386), const IFT_ARAP = 88 pkg syscall (openbsd-386), const IFT_ARCNET = 35 pkg syscall (openbsd-386), const IFT_ARCNETPLUS = 36 pkg syscall (openbsd-386), const IFT_ASYNC = 84 pkg syscall (openbsd-386), const IFT_ATM = 37 pkg syscall (openbsd-386), const IFT_ATMDXI = 105 pkg syscall (openbsd-386), const IFT_ATMFUNI = 106 pkg syscall (openbsd-386), const IFT_ATMIMA = 107 pkg syscall (openbsd-386), const IFT_ATMLOGICAL = 80 pkg syscall (openbsd-386), const IFT_ATMRADIO = 189 pkg syscall (openbsd-386), const IFT_ATMSUBINTERFACE = 134 pkg syscall (openbsd-386), const IFT_ATMVCIENDPT = 194 pkg syscall (openbsd-386), const IFT_ATMVIRTUAL = 149 pkg syscall (openbsd-386), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (openbsd-386), const IFT_BLUETOOTH = 248 pkg syscall (openbsd-386), const IFT_BRIDGE = 209 pkg syscall (openbsd-386), const IFT_BSC = 83 pkg syscall (openbsd-386), const IFT_CARP = 247 pkg syscall (openbsd-386), const IFT_CCTEMUL = 61 pkg syscall (openbsd-386), const IFT_CEPT = 19 pkg syscall (openbsd-386), const IFT_CES = 133 pkg syscall (openbsd-386), const IFT_CHANNEL = 70 pkg syscall (openbsd-386), const IFT_CNR = 85 pkg syscall (openbsd-386), const IFT_COFFEE = 132 pkg syscall (openbsd-386), const IFT_COMPOSITELINK = 155 pkg syscall (openbsd-386), const IFT_DCN = 141 pkg syscall (openbsd-386), const IFT_DIGITALPOWERLINE = 138 pkg syscall (openbsd-386), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (openbsd-386), const IFT_DLSW = 74 pkg syscall (openbsd-386), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (openbsd-386), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (openbsd-386), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (openbsd-386), const IFT_DOCSCABLEUPSTREAMCHANNEL = 205 pkg syscall (openbsd-386), const IFT_DS0 = 81 pkg syscall (openbsd-386), const IFT_DS0BUNDLE = 82 pkg syscall (openbsd-386), const IFT_DS1FDL = 170 pkg syscall (openbsd-386), const IFT_DS3 = 30 pkg syscall (openbsd-386), const IFT_DTM = 140 pkg syscall (openbsd-386), const IFT_DUMMY = 241 pkg syscall (openbsd-386), const IFT_DVBASILN = 172 pkg syscall (openbsd-386), const IFT_DVBASIOUT = 173 pkg syscall (openbsd-386), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (openbsd-386), const IFT_DVBRCCMACLAYER = 146 pkg syscall (openbsd-386), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (openbsd-386), const IFT_ECONET = 206 pkg syscall (openbsd-386), const IFT_ENC = 244 pkg syscall (openbsd-386), const IFT_EON = 25 pkg syscall (openbsd-386), const IFT_EPLRS = 87 pkg syscall (openbsd-386), const IFT_ESCON = 73 pkg syscall (openbsd-386), const IFT_ETHER = 6 pkg syscall (openbsd-386), const IFT_FAITH = 243 pkg syscall (openbsd-386), const IFT_FAST = 125 pkg syscall (openbsd-386), const IFT_FASTETHER = 62 pkg syscall (openbsd-386), const IFT_FASTETHERFX = 69 pkg syscall (openbsd-386), const IFT_FDDI = 15 pkg syscall (openbsd-386), const IFT_FIBRECHANNEL = 56 pkg syscall (openbsd-386), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (openbsd-386), const IFT_FRAMERELAYMPI = 92 pkg syscall (openbsd-386), const IFT_FRDLCIENDPT = 193 pkg syscall (openbsd-386), const IFT_FRELAY = 32 pkg syscall (openbsd-386), const IFT_FRELAYDCE = 44 pkg syscall (openbsd-386), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (openbsd-386), const IFT_FRFORWARD = 158 pkg syscall (openbsd-386), const IFT_G703AT2MB = 67 pkg syscall (openbsd-386), const IFT_G703AT64K = 66 pkg syscall (openbsd-386), const IFT_GIF = 240 pkg syscall (openbsd-386), const IFT_GIGABITETHERNET = 117 pkg syscall (openbsd-386), const IFT_GR303IDT = 178 pkg syscall (openbsd-386), const IFT_GR303RDT = 177 pkg syscall (openbsd-386), const IFT_H323GATEKEEPER = 164 pkg syscall (openbsd-386), const IFT_H323PROXY = 165 pkg syscall (openbsd-386), const IFT_HDH1822 = 3 pkg syscall (openbsd-386), const IFT_HDLC = 118 pkg syscall (openbsd-386), const IFT_HDSL2 = 168 pkg syscall (openbsd-386), const IFT_HIPERLAN2 = 183 pkg syscall (openbsd-386), const IFT_HIPPI = 47 pkg syscall (openbsd-386), const IFT_HIPPIINTERFACE = 57 pkg syscall (openbsd-386), const IFT_HOSTPAD = 90 pkg syscall (openbsd-386), const IFT_HSSI = 46 pkg syscall (openbsd-386), const IFT_HY = 14 pkg syscall (openbsd-386), const IFT_IBM370PARCHAN = 72 pkg syscall (openbsd-386), const IFT_IDSL = 154 pkg syscall (openbsd-386), const IFT_IEEE1394 = 144 pkg syscall (openbsd-386), const IFT_IEEE80211 = 71 pkg syscall (openbsd-386), const IFT_IEEE80212 = 55 pkg syscall (openbsd-386), const IFT_IEEE8023ADLAG = 161 pkg syscall (openbsd-386), const IFT_IFGSN = 145 pkg syscall (openbsd-386), const IFT_IMT = 190 pkg syscall (openbsd-386), const IFT_INFINIBAND = 199 pkg syscall (openbsd-386), const IFT_INTERLEAVE = 124 pkg syscall (openbsd-386), const IFT_IP = 126 pkg syscall (openbsd-386), const IFT_IPFORWARD = 142 pkg syscall (openbsd-386), const IFT_IPOVERATM = 114 pkg syscall (openbsd-386), const IFT_IPOVERCDLC = 109 pkg syscall (openbsd-386), const IFT_IPOVERCLAW = 110 pkg syscall (openbsd-386), const IFT_IPSWITCH = 78 pkg syscall (openbsd-386), const IFT_ISDN = 63 pkg syscall (openbsd-386), const IFT_ISDNBASIC = 20 pkg syscall (openbsd-386), const IFT_ISDNPRIMARY = 21 pkg syscall (openbsd-386), const IFT_ISDNS = 75 pkg syscall (openbsd-386), const IFT_ISDNU = 76 pkg syscall (openbsd-386), const IFT_ISO88022LLC = 41 pkg syscall (openbsd-386), const IFT_ISO88023 = 7 pkg syscall (openbsd-386), const IFT_ISO88024 = 8 pkg syscall (openbsd-386), const IFT_ISO88025 = 9 pkg syscall (openbsd-386), const IFT_ISO88025CRFPINT = 98 pkg syscall (openbsd-386), const IFT_ISO88025DTR = 86 pkg syscall (openbsd-386), const IFT_ISO88025FIBER = 115 pkg syscall (openbsd-386), const IFT_ISO88026 = 10 pkg syscall (openbsd-386), const IFT_ISUP = 179 pkg syscall (openbsd-386), const IFT_L2VLAN = 135 pkg syscall (openbsd-386), const IFT_L3IPVLAN = 136 pkg syscall (openbsd-386), const IFT_L3IPXVLAN = 137 pkg syscall (openbsd-386), const IFT_LAPB = 16 pkg syscall (openbsd-386), const IFT_LAPD = 77 pkg syscall (openbsd-386), const IFT_LAPF = 119 pkg syscall (openbsd-386), const IFT_LINEGROUP = 210 pkg syscall (openbsd-386), const IFT_LOCALTALK = 42 pkg syscall (openbsd-386), const IFT_LOOP = 24 pkg syscall (openbsd-386), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (openbsd-386), const IFT_MFSIGLINK = 167 pkg syscall (openbsd-386), const IFT_MIOX25 = 38 pkg syscall (openbsd-386), const IFT_MODEM = 48 pkg syscall (openbsd-386), const IFT_MPC = 113 pkg syscall (openbsd-386), const IFT_MPLS = 166 pkg syscall (openbsd-386), const IFT_MPLSTUNNEL = 150 pkg syscall (openbsd-386), const IFT_MSDSL = 143 pkg syscall (openbsd-386), const IFT_MVL = 191 pkg syscall (openbsd-386), const IFT_MYRINET = 99 pkg syscall (openbsd-386), const IFT_NFAS = 175 pkg syscall (openbsd-386), const IFT_NSIP = 27 pkg syscall (openbsd-386), const IFT_OPTICALCHANNEL = 195 pkg syscall (openbsd-386), const IFT_OPTICALTRANSPORT = 196 pkg syscall (openbsd-386), const IFT_OTHER = 1 pkg syscall (openbsd-386), const IFT_P10 = 12 pkg syscall (openbsd-386), const IFT_P80 = 13 pkg syscall (openbsd-386), const IFT_PARA = 34 pkg syscall (openbsd-386), const IFT_PFLOG = 245 pkg syscall (openbsd-386), const IFT_PFLOW = 249 pkg syscall (openbsd-386), const IFT_PFSYNC = 246 pkg syscall (openbsd-386), const IFT_PLC = 174 pkg syscall (openbsd-386), const IFT_PON155 = 207 pkg syscall (openbsd-386), const IFT_PON622 = 208 pkg syscall (openbsd-386), const IFT_POS = 171 pkg syscall (openbsd-386), const IFT_PPP = 23 pkg syscall (openbsd-386), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (openbsd-386), const IFT_PROPATM = 197 pkg syscall (openbsd-386), const IFT_PROPBWAP2MP = 184 pkg syscall (openbsd-386), const IFT_PROPCNLS = 89 pkg syscall (openbsd-386), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (openbsd-386), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (openbsd-386), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (openbsd-386), const IFT_PROPMUX = 54 pkg syscall (openbsd-386), const IFT_PROPVIRTUAL = 53 pkg syscall (openbsd-386), const IFT_PROPWIRELESSP2P = 157 pkg syscall (openbsd-386), const IFT_PTPSERIAL = 22 pkg syscall (openbsd-386), const IFT_PVC = 242 pkg syscall (openbsd-386), const IFT_Q2931 = 201 pkg syscall (openbsd-386), const IFT_QLLC = 68 pkg syscall (openbsd-386), const IFT_RADIOMAC = 188 pkg syscall (openbsd-386), const IFT_RADSL = 95 pkg syscall (openbsd-386), const IFT_REACHDSL = 192 pkg syscall (openbsd-386), const IFT_RFC1483 = 159 pkg syscall (openbsd-386), const IFT_RS232 = 33 pkg syscall (openbsd-386), const IFT_RSRB = 79 pkg syscall (openbsd-386), const IFT_SDLC = 17 pkg syscall (openbsd-386), const IFT_SDSL = 96 pkg syscall (openbsd-386), const IFT_SHDSL = 169 pkg syscall (openbsd-386), const IFT_SIP = 31 pkg syscall (openbsd-386), const IFT_SIPSIG = 204 pkg syscall (openbsd-386), const IFT_SIPTG = 203 pkg syscall (openbsd-386), const IFT_SLIP = 28 pkg syscall (openbsd-386), const IFT_SMDSDXI = 43 pkg syscall (openbsd-386), const IFT_SMDSICIP = 52 pkg syscall (openbsd-386), const IFT_SONET = 39 pkg syscall (openbsd-386), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (openbsd-386), const IFT_SONETPATH = 50 pkg syscall (openbsd-386), const IFT_SONETVT = 51 pkg syscall (openbsd-386), const IFT_SRP = 151 pkg syscall (openbsd-386), const IFT_SS7SIGLINK = 156 pkg syscall (openbsd-386), const IFT_STACKTOSTACK = 111 pkg syscall (openbsd-386), const IFT_STARLAN = 11 pkg syscall (openbsd-386), const IFT_T1 = 18 pkg syscall (openbsd-386), const IFT_TDLC = 116 pkg syscall (openbsd-386), const IFT_TELINK = 200 pkg syscall (openbsd-386), const IFT_TERMPAD = 91 pkg syscall (openbsd-386), const IFT_TR008 = 176 pkg syscall (openbsd-386), const IFT_TRANSPHDLC = 123 pkg syscall (openbsd-386), const IFT_TUNNEL = 131 pkg syscall (openbsd-386), const IFT_ULTRA = 29 pkg syscall (openbsd-386), const IFT_USB = 160 pkg syscall (openbsd-386), const IFT_V11 = 64 pkg syscall (openbsd-386), const IFT_V35 = 45 pkg syscall (openbsd-386), const IFT_V36 = 65 pkg syscall (openbsd-386), const IFT_V37 = 120 pkg syscall (openbsd-386), const IFT_VDSL = 97 pkg syscall (openbsd-386), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (openbsd-386), const IFT_VIRTUALTG = 202 pkg syscall (openbsd-386), const IFT_VOICEDID = 213 pkg syscall (openbsd-386), const IFT_VOICEEM = 100 pkg syscall (openbsd-386), const IFT_VOICEEMFGD = 211 pkg syscall (openbsd-386), const IFT_VOICEENCAP = 103 pkg syscall (openbsd-386), const IFT_VOICEFGDEANA = 212 pkg syscall (openbsd-386), const IFT_VOICEFXO = 101 pkg syscall (openbsd-386), const IFT_VOICEFXS = 102 pkg syscall (openbsd-386), const IFT_VOICEOVERATM = 152 pkg syscall (openbsd-386), const IFT_VOICEOVERCABLE = 198 pkg syscall (openbsd-386), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (openbsd-386), const IFT_VOICEOVERIP = 104 pkg syscall (openbsd-386), const IFT_X213 = 93 pkg syscall (openbsd-386), const IFT_X25 = 5 pkg syscall (openbsd-386), const IFT_X25DDN = 4 pkg syscall (openbsd-386), const IFT_X25HUNTGROUP = 122 pkg syscall (openbsd-386), const IFT_X25MLP = 121 pkg syscall (openbsd-386), const IFT_X25PLE = 40 pkg syscall (openbsd-386), const IFT_XETHER = 26 pkg syscall (openbsd-386), const IGNBRK = 1 pkg syscall (openbsd-386), const IGNCR = 128 pkg syscall (openbsd-386), const IGNPAR = 4 pkg syscall (openbsd-386), const IMAXBEL = 8192 pkg syscall (openbsd-386), const INLCR = 64 pkg syscall (openbsd-386), const INPCK = 16 pkg syscall (openbsd-386), const IN_CLASSA_HOST = 16777215 pkg syscall (openbsd-386), const IN_CLASSA_MAX = 128 pkg syscall (openbsd-386), const IN_CLASSA_NET = 4278190080 pkg syscall (openbsd-386), const IN_CLASSA_NSHIFT = 24 pkg syscall (openbsd-386), const IN_CLASSB_HOST = 65535 pkg syscall (openbsd-386), const IN_CLASSB_MAX = 65536 pkg syscall (openbsd-386), const IN_CLASSB_NET = 4294901760 pkg syscall (openbsd-386), const IN_CLASSB_NSHIFT = 16 pkg syscall (openbsd-386), const IN_CLASSC_HOST = 255 pkg syscall (openbsd-386), const IN_CLASSC_NET = 4294967040 pkg syscall (openbsd-386), const IN_CLASSC_NSHIFT = 8 pkg syscall (openbsd-386), const IN_CLASSD_HOST = 268435455 pkg syscall (openbsd-386), const IN_CLASSD_NET = 4026531840 pkg syscall (openbsd-386), const IN_CLASSD_NSHIFT = 28 pkg syscall (openbsd-386), const IN_LOOPBACKNET = 127 pkg syscall (openbsd-386), const IN_RFC3021_HOST = 1 pkg syscall (openbsd-386), const IN_RFC3021_NET = 4294967294 pkg syscall (openbsd-386), const IN_RFC3021_NSHIFT = 31 pkg syscall (openbsd-386), const IPPROTO_AH = 51 pkg syscall (openbsd-386), const IPPROTO_CARP = 112 pkg syscall (openbsd-386), const IPPROTO_DIVERT = 258 pkg syscall (openbsd-386), const IPPROTO_DONE = 257 pkg syscall (openbsd-386), const IPPROTO_DSTOPTS = 60 pkg syscall (openbsd-386), const IPPROTO_EGP = 8 pkg syscall (openbsd-386), const IPPROTO_ENCAP = 98 pkg syscall (openbsd-386), const IPPROTO_EON = 80 pkg syscall (openbsd-386), const IPPROTO_ESP = 50 pkg syscall (openbsd-386), const IPPROTO_ETHERIP = 97 pkg syscall (openbsd-386), const IPPROTO_FRAGMENT = 44 pkg syscall (openbsd-386), const IPPROTO_GGP = 3 pkg syscall (openbsd-386), const IPPROTO_GRE = 47 pkg syscall (openbsd-386), const IPPROTO_HOPOPTS = 0 pkg syscall (openbsd-386), const IPPROTO_ICMP = 1 pkg syscall (openbsd-386), const IPPROTO_ICMPV6 = 58 pkg syscall (openbsd-386), const IPPROTO_IDP = 22 pkg syscall (openbsd-386), const IPPROTO_IGMP = 2 pkg syscall (openbsd-386), const IPPROTO_IPCOMP = 108 pkg syscall (openbsd-386), const IPPROTO_IPIP = 4 pkg syscall (openbsd-386), const IPPROTO_IPV4 = 4 pkg syscall (openbsd-386), const IPPROTO_MAX = 256 pkg syscall (openbsd-386), const IPPROTO_MAXID = 259 pkg syscall (openbsd-386), const IPPROTO_MOBILE = 55 pkg syscall (openbsd-386), const IPPROTO_MPLS = 137 pkg syscall (openbsd-386), const IPPROTO_NONE = 59 pkg syscall (openbsd-386), const IPPROTO_PFSYNC = 240 pkg syscall (openbsd-386), const IPPROTO_PIM = 103 pkg syscall (openbsd-386), const IPPROTO_PUP = 12 pkg syscall (openbsd-386), const IPPROTO_RAW = 255 pkg syscall (openbsd-386), const IPPROTO_ROUTING = 43 pkg syscall (openbsd-386), const IPPROTO_RSVP = 46 pkg syscall (openbsd-386), const IPPROTO_TP = 29 pkg syscall (openbsd-386), const IPV6_AUTH_LEVEL = 53 pkg syscall (openbsd-386), const IPV6_AUTOFLOWLABEL = 59 pkg syscall (openbsd-386), const IPV6_CHECKSUM = 26 pkg syscall (openbsd-386), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (openbsd-386), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (openbsd-386), const IPV6_DEFHLIM = 64 pkg syscall (openbsd-386), const IPV6_DONTFRAG = 62 pkg syscall (openbsd-386), const IPV6_DSTOPTS = 50 pkg syscall (openbsd-386), const IPV6_ESP_NETWORK_LEVEL = 55 pkg syscall (openbsd-386), const IPV6_ESP_TRANS_LEVEL = 54 pkg syscall (openbsd-386), const IPV6_FAITH = 29 pkg syscall (openbsd-386), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (openbsd-386), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (openbsd-386), const IPV6_FRAGTTL = 120 pkg syscall (openbsd-386), const IPV6_HLIMDEC = 1 pkg syscall (openbsd-386), const IPV6_HOPLIMIT = 47 pkg syscall (openbsd-386), const IPV6_HOPOPTS = 49 pkg syscall (openbsd-386), const IPV6_IPCOMP_LEVEL = 60 pkg syscall (openbsd-386), const IPV6_JOIN_GROUP = 12 pkg syscall (openbsd-386), const IPV6_LEAVE_GROUP = 13 pkg syscall (openbsd-386), const IPV6_MAXHLIM = 255 pkg syscall (openbsd-386), const IPV6_MAXPACKET = 65535 pkg syscall (openbsd-386), const IPV6_MMTU = 1280 pkg syscall (openbsd-386), const IPV6_MULTICAST_HOPS = 10 pkg syscall (openbsd-386), const IPV6_MULTICAST_IF = 9 pkg syscall (openbsd-386), const IPV6_MULTICAST_LOOP = 11 pkg syscall (openbsd-386), const IPV6_NEXTHOP = 48 pkg syscall (openbsd-386), const IPV6_OPTIONS = 1 pkg syscall (openbsd-386), const IPV6_PATHMTU = 44 pkg syscall (openbsd-386), const IPV6_PIPEX = 63 pkg syscall (openbsd-386), const IPV6_PKTINFO = 46 pkg syscall (openbsd-386), const IPV6_PORTRANGE = 14 pkg syscall (openbsd-386), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (openbsd-386), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (openbsd-386), const IPV6_PORTRANGE_LOW = 2 pkg syscall (openbsd-386), const IPV6_RECVDSTOPTS = 40 pkg syscall (openbsd-386), const IPV6_RECVHOPLIMIT = 37 pkg syscall (openbsd-386), const IPV6_RECVHOPOPTS = 39 pkg syscall (openbsd-386), const IPV6_RECVPATHMTU = 43 pkg syscall (openbsd-386), const IPV6_RECVPKTINFO = 36 pkg syscall (openbsd-386), const IPV6_RECVRTHDR = 38 pkg syscall (openbsd-386), const IPV6_RECVTCLASS = 57 pkg syscall (openbsd-386), const IPV6_RTABLE = 4129 pkg syscall (openbsd-386), const IPV6_RTHDR = 51 pkg syscall (openbsd-386), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (openbsd-386), const IPV6_RTHDR_LOOSE = 0 pkg syscall (openbsd-386), const IPV6_RTHDR_STRICT = 1 pkg syscall (openbsd-386), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (openbsd-386), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (openbsd-386), const IPV6_TCLASS = 61 pkg syscall (openbsd-386), const IPV6_UNICAST_HOPS = 4 pkg syscall (openbsd-386), const IPV6_USE_MIN_MTU = 42 pkg syscall (openbsd-386), const IPV6_V6ONLY = 27 pkg syscall (openbsd-386), const IPV6_VERSION = 96 pkg syscall (openbsd-386), const IPV6_VERSION_MASK = 240 pkg syscall (openbsd-386), const IP_ADD_MEMBERSHIP = 12 pkg syscall (openbsd-386), const IP_AUTH_LEVEL = 20 pkg syscall (openbsd-386), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (openbsd-386), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (openbsd-386), const IP_DF = 16384 pkg syscall (openbsd-386), const IP_DROP_MEMBERSHIP = 13 pkg syscall (openbsd-386), const IP_ESP_NETWORK_LEVEL = 22 pkg syscall (openbsd-386), const IP_ESP_TRANS_LEVEL = 21 pkg syscall (openbsd-386), const IP_HDRINCL = 2 pkg syscall (openbsd-386), const IP_IPCOMP_LEVEL = 29 pkg syscall (openbsd-386), const IP_IPSECFLOWINFO = 36 pkg syscall (openbsd-386), const IP_IPSEC_LOCAL_AUTH = 27 pkg syscall (openbsd-386), const IP_IPSEC_LOCAL_CRED = 25 pkg syscall (openbsd-386), const IP_IPSEC_LOCAL_ID = 23 pkg syscall (openbsd-386), const IP_IPSEC_REMOTE_AUTH = 28 pkg syscall (openbsd-386), const IP_IPSEC_REMOTE_CRED = 26 pkg syscall (openbsd-386), const IP_IPSEC_REMOTE_ID = 24 pkg syscall (openbsd-386), const IP_MAXPACKET = 65535 pkg syscall (openbsd-386), const IP_MAX_MEMBERSHIPS = 4095 pkg syscall (openbsd-386), const IP_MF = 8192 pkg syscall (openbsd-386), const IP_MINTTL = 32 pkg syscall (openbsd-386), const IP_MIN_MEMBERSHIPS = 15 pkg syscall (openbsd-386), const IP_MSS = 576 pkg syscall (openbsd-386), const IP_MULTICAST_IF = 9 pkg syscall (openbsd-386), const IP_MULTICAST_LOOP = 11 pkg syscall (openbsd-386), const IP_MULTICAST_TTL = 10 pkg syscall (openbsd-386), const IP_OFFMASK = 8191 pkg syscall (openbsd-386), const IP_OPTIONS = 1 pkg syscall (openbsd-386), const IP_PIPEX = 34 pkg syscall (openbsd-386), const IP_PORTRANGE = 19 pkg syscall (openbsd-386), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (openbsd-386), const IP_PORTRANGE_HIGH = 1 pkg syscall (openbsd-386), const IP_PORTRANGE_LOW = 2 pkg syscall (openbsd-386), const IP_RECVDSTADDR = 7 pkg syscall (openbsd-386), const IP_RECVDSTPORT = 33 pkg syscall (openbsd-386), const IP_RECVIF = 30 pkg syscall (openbsd-386), const IP_RECVOPTS = 5 pkg syscall (openbsd-386), const IP_RECVRETOPTS = 6 pkg syscall (openbsd-386), const IP_RECVRTABLE = 35 pkg syscall (openbsd-386), const IP_RECVTTL = 31 pkg syscall (openbsd-386), const IP_RETOPTS = 8 pkg syscall (openbsd-386), const IP_RF = 32768 pkg syscall (openbsd-386), const IP_RTABLE = 4129 pkg syscall (openbsd-386), const IP_TOS = 3 pkg syscall (openbsd-386), const IP_TTL = 4 pkg syscall (openbsd-386), const ISIG = 128 pkg syscall (openbsd-386), const ISTRIP = 32 pkg syscall (openbsd-386), const IXANY = 2048 pkg syscall (openbsd-386), const IXOFF = 1024 pkg syscall (openbsd-386), const IXON = 512 pkg syscall (openbsd-386), const ImplementsGetwd = false pkg syscall (openbsd-386), const LCNT_OVERLOAD_FLUSH = 6 pkg syscall (openbsd-386), const LOCK_EX = 2 pkg syscall (openbsd-386), const LOCK_NB = 4 pkg syscall (openbsd-386), const LOCK_SH = 1 pkg syscall (openbsd-386), const LOCK_UN = 8 pkg syscall (openbsd-386), const MSG_BCAST = 256 pkg syscall (openbsd-386), const MSG_CTRUNC = 32 pkg syscall (openbsd-386), const MSG_DONTROUTE = 4 pkg syscall (openbsd-386), const MSG_DONTWAIT = 128 pkg syscall (openbsd-386), const MSG_EOR = 8 pkg syscall (openbsd-386), const MSG_MCAST = 512 pkg syscall (openbsd-386), const MSG_NOSIGNAL = 1024 pkg syscall (openbsd-386), const MSG_OOB = 1 pkg syscall (openbsd-386), const MSG_PEEK = 2 pkg syscall (openbsd-386), const MSG_TRUNC = 16 pkg syscall (openbsd-386), const MSG_WAITALL = 64 pkg syscall (openbsd-386), const NAME_MAX = 255 pkg syscall (openbsd-386), const NET_RT_DUMP = 1 pkg syscall (openbsd-386), const NET_RT_FLAGS = 2 pkg syscall (openbsd-386), const NET_RT_IFLIST = 3 pkg syscall (openbsd-386), const NET_RT_MAXID = 6 pkg syscall (openbsd-386), const NET_RT_STATS = 4 pkg syscall (openbsd-386), const NET_RT_TABLE = 5 pkg syscall (openbsd-386), const NOFLSH = 2147483648 pkg syscall (openbsd-386), const NOTE_ATTRIB = 8 pkg syscall (openbsd-386), const NOTE_CHILD = 4 pkg syscall (openbsd-386), const NOTE_DELETE = 1 pkg syscall (openbsd-386), const NOTE_EOF = 2 pkg syscall (openbsd-386), const NOTE_EXEC = 536870912 pkg syscall (openbsd-386), const NOTE_EXIT = 2147483648 pkg syscall (openbsd-386), const NOTE_EXTEND = 4 pkg syscall (openbsd-386), const NOTE_FORK = 1073741824 pkg syscall (openbsd-386), const NOTE_LINK = 16 pkg syscall (openbsd-386), const NOTE_LOWAT = 1 pkg syscall (openbsd-386), const NOTE_PCTRLMASK = 4026531840 pkg syscall (openbsd-386), const NOTE_PDATAMASK = 1048575 pkg syscall (openbsd-386), const NOTE_RENAME = 32 pkg syscall (openbsd-386), const NOTE_REVOKE = 64 pkg syscall (openbsd-386), const NOTE_TRACK = 1 pkg syscall (openbsd-386), const NOTE_TRACKERR = 2 pkg syscall (openbsd-386), const NOTE_TRUNCATE = 128 pkg syscall (openbsd-386), const NOTE_WRITE = 2 pkg syscall (openbsd-386), const OCRNL = 16 pkg syscall (openbsd-386), const ONLCR = 2 pkg syscall (openbsd-386), const ONLRET = 128 pkg syscall (openbsd-386), const ONOCR = 64 pkg syscall (openbsd-386), const ONOEOT = 8 pkg syscall (openbsd-386), const OPOST = 1 pkg syscall (openbsd-386), const O_ACCMODE = 3 pkg syscall (openbsd-386), const O_APPEND = 8 pkg syscall (openbsd-386), const O_ASYNC = 64 pkg syscall (openbsd-386), const O_CLOEXEC = 65536 pkg syscall (openbsd-386), const O_CREAT = 512 pkg syscall (openbsd-386), const O_DIRECTORY = 131072 pkg syscall (openbsd-386), const O_DSYNC = 128 pkg syscall (openbsd-386), const O_EXCL = 2048 pkg syscall (openbsd-386), const O_EXLOCK = 32 pkg syscall (openbsd-386), const O_FSYNC = 128 pkg syscall (openbsd-386), const O_NDELAY = 4 pkg syscall (openbsd-386), const O_NOCTTY = 32768 pkg syscall (openbsd-386), const O_NOFOLLOW = 256 pkg syscall (openbsd-386), const O_NONBLOCK = 4 pkg syscall (openbsd-386), const O_RSYNC = 128 pkg syscall (openbsd-386), const O_SHLOCK = 16 pkg syscall (openbsd-386), const O_SYNC = 128 pkg syscall (openbsd-386), const O_TRUNC = 1024 pkg syscall (openbsd-386), const PARENB = 4096 pkg syscall (openbsd-386), const PARMRK = 8 pkg syscall (openbsd-386), const PARODD = 8192 pkg syscall (openbsd-386), const PENDIN = 536870912 pkg syscall (openbsd-386), const PF_FLUSH = 1 pkg syscall (openbsd-386), const PTRACE_CONT = 7 pkg syscall (openbsd-386), const PTRACE_KILL = 8 pkg syscall (openbsd-386), const PTRACE_TRACEME = 0 pkg syscall (openbsd-386), const PT_MASK = 4190208 pkg syscall (openbsd-386), const RLIMIT_CORE = 4 pkg syscall (openbsd-386), const RLIMIT_CPU = 0 pkg syscall (openbsd-386), const RLIMIT_DATA = 2 pkg syscall (openbsd-386), const RLIMIT_FSIZE = 1 pkg syscall (openbsd-386), const RLIMIT_NOFILE = 8 pkg syscall (openbsd-386), const RLIMIT_STACK = 3 pkg syscall (openbsd-386), const RLIM_INFINITY = 9223372036854775807 pkg syscall (openbsd-386), const RTAX_AUTHOR = 6 pkg syscall (openbsd-386), const RTAX_BRD = 7 pkg syscall (openbsd-386), const RTAX_DST = 0 pkg syscall (openbsd-386), const RTAX_GATEWAY = 1 pkg syscall (openbsd-386), const RTAX_GENMASK = 3 pkg syscall (openbsd-386), const RTAX_IFA = 5 pkg syscall (openbsd-386), const RTAX_IFP = 4 pkg syscall (openbsd-386), const RTAX_LABEL = 10 pkg syscall (openbsd-386), const RTAX_MAX = 11 pkg syscall (openbsd-386), const RTAX_NETMASK = 2 pkg syscall (openbsd-386), const RTAX_SRC = 8 pkg syscall (openbsd-386), const RTAX_SRCMASK = 9 pkg syscall (openbsd-386), const RTA_AUTHOR = 64 pkg syscall (openbsd-386), const RTA_BRD = 128 pkg syscall (openbsd-386), const RTA_DST = 1 pkg syscall (openbsd-386), const RTA_GATEWAY = 2 pkg syscall (openbsd-386), const RTA_GENMASK = 8 pkg syscall (openbsd-386), const RTA_IFA = 32 pkg syscall (openbsd-386), const RTA_IFP = 16 pkg syscall (openbsd-386), const RTA_LABEL = 1024 pkg syscall (openbsd-386), const RTA_NETMASK = 4 pkg syscall (openbsd-386), const RTA_SRC = 256 pkg syscall (openbsd-386), const RTA_SRCMASK = 512 pkg syscall (openbsd-386), const RTF_ANNOUNCE = 16384 pkg syscall (openbsd-386), const RTF_BLACKHOLE = 4096 pkg syscall (openbsd-386), const RTF_CLONED = 65536 pkg syscall (openbsd-386), const RTF_CLONING = 256 pkg syscall (openbsd-386), const RTF_DONE = 64 pkg syscall (openbsd-386), const RTF_DYNAMIC = 16 pkg syscall (openbsd-386), const RTF_FMASK = 63496 pkg syscall (openbsd-386), const RTF_GATEWAY = 2 pkg syscall (openbsd-386), const RTF_HOST = 4 pkg syscall (openbsd-386), const RTF_LLINFO = 1024 pkg syscall (openbsd-386), const RTF_MASK = 128 pkg syscall (openbsd-386), const RTF_MODIFIED = 32 pkg syscall (openbsd-386), const RTF_MPATH = 262144 pkg syscall (openbsd-386), const RTF_MPLS = 1048576 pkg syscall (openbsd-386), const RTF_PERMANENT_ARP = 8192 pkg syscall (openbsd-386), const RTF_PROTO1 = 32768 pkg syscall (openbsd-386), const RTF_PROTO2 = 16384 pkg syscall (openbsd-386), const RTF_PROTO3 = 8192 pkg syscall (openbsd-386), const RTF_REJECT = 8 pkg syscall (openbsd-386), const RTF_SOURCE = 131072 pkg syscall (openbsd-386), const RTF_STATIC = 2048 pkg syscall (openbsd-386), const RTF_TUNNEL = 1048576 pkg syscall (openbsd-386), const RTF_UP = 1 pkg syscall (openbsd-386), const RTF_USETRAILERS = 32768 pkg syscall (openbsd-386), const RTF_XRESOLVE = 512 pkg syscall (openbsd-386), const RTM_ADD = 1 pkg syscall (openbsd-386), const RTM_CHANGE = 3 pkg syscall (openbsd-386), const RTM_DELADDR = 13 pkg syscall (openbsd-386), const RTM_DELETE = 2 pkg syscall (openbsd-386), const RTM_DESYNC = 16 pkg syscall (openbsd-386), const RTM_GET = 4 pkg syscall (openbsd-386), const RTM_IFANNOUNCE = 15 pkg syscall (openbsd-386), const RTM_IFINFO = 14 pkg syscall (openbsd-386), const RTM_LOCK = 8 pkg syscall (openbsd-386), const RTM_LOSING = 5 pkg syscall (openbsd-386), const RTM_MAXSIZE = 2048 pkg syscall (openbsd-386), const RTM_MISS = 7 pkg syscall (openbsd-386), const RTM_NEWADDR = 12 pkg syscall (openbsd-386), const RTM_REDIRECT = 6 pkg syscall (openbsd-386), const RTM_RESOLVE = 11 pkg syscall (openbsd-386), const RTM_RTTUNIT = 1000000 pkg syscall (openbsd-386), const RTM_VERSION = 4 pkg syscall (openbsd-386), const RTV_EXPIRE = 4 pkg syscall (openbsd-386), const RTV_HOPCOUNT = 2 pkg syscall (openbsd-386), const RTV_MTU = 1 pkg syscall (openbsd-386), const RTV_RPIPE = 8 pkg syscall (openbsd-386), const RTV_RTT = 64 pkg syscall (openbsd-386), const RTV_RTTVAR = 128 pkg syscall (openbsd-386), const RTV_SPIPE = 16 pkg syscall (openbsd-386), const RTV_SSTHRESH = 32 pkg syscall (openbsd-386), const RT_TABLEID_MAX = 255 pkg syscall (openbsd-386), const RUSAGE_CHILDREN = -1 pkg syscall (openbsd-386), const RUSAGE_SELF = 0 pkg syscall (openbsd-386), const RUSAGE_THREAD = 1 pkg syscall (openbsd-386), const SCM_RIGHTS = 1 pkg syscall (openbsd-386), const SCM_TIMESTAMP = 4 pkg syscall (openbsd-386), const SIGBUS = 10 pkg syscall (openbsd-386), const SIGCHLD = 20 pkg syscall (openbsd-386), const SIGCONT = 19 pkg syscall (openbsd-386), const SIGEMT = 7 pkg syscall (openbsd-386), const SIGINFO = 29 pkg syscall (openbsd-386), const SIGIO = 23 pkg syscall (openbsd-386), const SIGIOT = 6 pkg syscall (openbsd-386), const SIGPROF = 27 pkg syscall (openbsd-386), const SIGSTOP = 17 pkg syscall (openbsd-386), const SIGSYS = 12 pkg syscall (openbsd-386), const SIGTHR = 32 pkg syscall (openbsd-386), const SIGTSTP = 18 pkg syscall (openbsd-386), const SIGTTIN = 21 pkg syscall (openbsd-386), const SIGTTOU = 22 pkg syscall (openbsd-386), const SIGURG = 16 pkg syscall (openbsd-386), const SIGUSR1 = 30 pkg syscall (openbsd-386), const SIGUSR2 = 31 pkg syscall (openbsd-386), const SIGVTALRM = 26 pkg syscall (openbsd-386), const SIGWINCH = 28 pkg syscall (openbsd-386), const SIGXCPU = 24 pkg syscall (openbsd-386), const SIGXFSZ = 25 pkg syscall (openbsd-386), const SIOCADDMULTI = 2149607729 pkg syscall (openbsd-386), const SIOCAIFADDR = 2151704858 pkg syscall (openbsd-386), const SIOCAIFGROUP = 2149869959 pkg syscall (openbsd-386), const SIOCALIFADDR = 2182637852 pkg syscall (openbsd-386), const SIOCATMARK = 1074033415 pkg syscall (openbsd-386), const SIOCBRDGADD = 2153015612 pkg syscall (openbsd-386), const SIOCBRDGADDS = 2153015617 pkg syscall (openbsd-386), const SIOCBRDGARL = 2154719565 pkg syscall (openbsd-386), const SIOCBRDGDADDR = 2150132039 pkg syscall (openbsd-386), const SIOCBRDGDEL = 2153015613 pkg syscall (openbsd-386), const SIOCBRDGDELS = 2153015618 pkg syscall (openbsd-386), const SIOCBRDGFLUSH = 2153015624 pkg syscall (openbsd-386), const SIOCBRDGFRL = 2154719566 pkg syscall (openbsd-386), const SIOCBRDGGCACHE = 3222563137 pkg syscall (openbsd-386), const SIOCBRDGGFD = 3222563154 pkg syscall (openbsd-386), const SIOCBRDGGHT = 3222563153 pkg syscall (openbsd-386), const SIOCBRDGGIFFLGS = 3226757438 pkg syscall (openbsd-386), const SIOCBRDGGMA = 3222563155 pkg syscall (openbsd-386), const SIOCBRDGGPARAM = 3224922456 pkg syscall (openbsd-386), const SIOCBRDGGPRI = 3222563152 pkg syscall (openbsd-386), const SIOCBRDGGRL = 3223873871 pkg syscall (openbsd-386), const SIOCBRDGGSIFS = 3226757436 pkg syscall (openbsd-386), const SIOCBRDGGTO = 3222563142 pkg syscall (openbsd-386), const SIOCBRDGIFS = 3226757442 pkg syscall (openbsd-386), const SIOCBRDGRTS = 3222825283 pkg syscall (openbsd-386), const SIOCBRDGSADDR = 3223873860 pkg syscall (openbsd-386), const SIOCBRDGSCACHE = 2148821312 pkg syscall (openbsd-386), const SIOCBRDGSFD = 2148821330 pkg syscall (openbsd-386), const SIOCBRDGSHT = 2148821329 pkg syscall (openbsd-386), const SIOCBRDGSIFCOST = 2153015637 pkg syscall (openbsd-386), const SIOCBRDGSIFFLGS = 2153015615 pkg syscall (openbsd-386), const SIOCBRDGSIFPRIO = 2153015636 pkg syscall (openbsd-386), const SIOCBRDGSMA = 2148821331 pkg syscall (openbsd-386), const SIOCBRDGSPRI = 2148821328 pkg syscall (openbsd-386), const SIOCBRDGSPROTO = 2148821338 pkg syscall (openbsd-386), const SIOCBRDGSTO = 2148821317 pkg syscall (openbsd-386), const SIOCBRDGSTXHC = 2148821337 pkg syscall (openbsd-386), const SIOCDELMULTI = 2149607730 pkg syscall (openbsd-386), const SIOCDIFADDR = 2149607705 pkg syscall (openbsd-386), const SIOCDIFGROUP = 2149869961 pkg syscall (openbsd-386), const SIOCDIFPHYADDR = 2149607753 pkg syscall (openbsd-386), const SIOCDLIFADDR = 2182637854 pkg syscall (openbsd-386), const SIOCGETKALIVE = 3222825380 pkg syscall (openbsd-386), const SIOCGETLABEL = 2149607834 pkg syscall (openbsd-386), const SIOCGETPFLOW = 3223349758 pkg syscall (openbsd-386), const SIOCGETPFSYNC = 3223349752 pkg syscall (openbsd-386), const SIOCGETSGCNT = 3222566196 pkg syscall (openbsd-386), const SIOCGETVIFCNT = 3222566195 pkg syscall (openbsd-386), const SIOCGHIWAT = 1074033409 pkg syscall (openbsd-386), const SIOCGIFADDR = 3223349537 pkg syscall (openbsd-386), const SIOCGIFASYNCMAP = 3223349628 pkg syscall (openbsd-386), const SIOCGIFBRDADDR = 3223349539 pkg syscall (openbsd-386), const SIOCGIFCONF = 3221776676 pkg syscall (openbsd-386), const SIOCGIFDATA = 3223349531 pkg syscall (openbsd-386), const SIOCGIFDESCR = 3223349633 pkg syscall (openbsd-386), const SIOCGIFDSTADDR = 3223349538 pkg syscall (openbsd-386), const SIOCGIFFLAGS = 3223349521 pkg syscall (openbsd-386), const SIOCGIFGATTR = 3223611787 pkg syscall (openbsd-386), const SIOCGIFGENERIC = 3223349562 pkg syscall (openbsd-386), const SIOCGIFGMEMB = 3223611786 pkg syscall (openbsd-386), const SIOCGIFGROUP = 3223611784 pkg syscall (openbsd-386), const SIOCGIFMEDIA = 3223873846 pkg syscall (openbsd-386), const SIOCGIFMETRIC = 3223349527 pkg syscall (openbsd-386), const SIOCGIFMTU = 3223349630 pkg syscall (openbsd-386), const SIOCGIFNETMASK = 3223349541 pkg syscall (openbsd-386), const SIOCGIFPDSTADDR = 3223349576 pkg syscall (openbsd-386), const SIOCGIFPRIORITY = 3223349660 pkg syscall (openbsd-386), const SIOCGIFPSRCADDR = 3223349575 pkg syscall (openbsd-386), const SIOCGIFRDOMAIN = 3223349664 pkg syscall (openbsd-386), const SIOCGIFRTLABEL = 3223349635 pkg syscall (openbsd-386), const SIOCGIFTIMESLOT = 3223349638 pkg syscall (openbsd-386), const SIOCGIFXFLAGS = 3223349662 pkg syscall (openbsd-386), const SIOCGLIFADDR = 3256379677 pkg syscall (openbsd-386), const SIOCGLIFPHYADDR = 3256379723 pkg syscall (openbsd-386), const SIOCGLIFPHYRTABLE = 3223349666 pkg syscall (openbsd-386), const SIOCGLOWAT = 1074033411 pkg syscall (openbsd-386), const SIOCGPGRP = 1074033417 pkg syscall (openbsd-386), const SIOCGVH = 3223349750 pkg syscall (openbsd-386), const SIOCIFCREATE = 2149607802 pkg syscall (openbsd-386), const SIOCIFDESTROY = 2149607801 pkg syscall (openbsd-386), const SIOCIFGCLONERS = 3222038904 pkg syscall (openbsd-386), const SIOCSETKALIVE = 2149083555 pkg syscall (openbsd-386), const SIOCSETLABEL = 2149607833 pkg syscall (openbsd-386), const SIOCSETPFLOW = 2149607933 pkg syscall (openbsd-386), const SIOCSETPFSYNC = 2149607927 pkg syscall (openbsd-386), const SIOCSHIWAT = 2147775232 pkg syscall (openbsd-386), const SIOCSIFADDR = 2149607692 pkg syscall (openbsd-386), const SIOCSIFASYNCMAP = 2149607805 pkg syscall (openbsd-386), const SIOCSIFBRDADDR = 2149607699 pkg syscall (openbsd-386), const SIOCSIFDESCR = 2149607808 pkg syscall (openbsd-386), const SIOCSIFDSTADDR = 2149607694 pkg syscall (openbsd-386), const SIOCSIFFLAGS = 2149607696 pkg syscall (openbsd-386), const SIOCSIFGATTR = 2149869964 pkg syscall (openbsd-386), const SIOCSIFGENERIC = 2149607737 pkg syscall (openbsd-386), const SIOCSIFLLADDR = 2149607711 pkg syscall (openbsd-386), const SIOCSIFMEDIA = 3223349557 pkg syscall (openbsd-386), const SIOCSIFMETRIC = 2149607704 pkg syscall (openbsd-386), const SIOCSIFMTU = 2149607807 pkg syscall (openbsd-386), const SIOCSIFNETMASK = 2149607702 pkg syscall (openbsd-386), const SIOCSIFPHYADDR = 2151704902 pkg syscall (openbsd-386), const SIOCSIFPRIORITY = 2149607835 pkg syscall (openbsd-386), const SIOCSIFRDOMAIN = 2149607839 pkg syscall (openbsd-386), const SIOCSIFRTLABEL = 2149607810 pkg syscall (openbsd-386), const SIOCSIFTIMESLOT = 2149607813 pkg syscall (openbsd-386), const SIOCSIFXFLAGS = 2149607837 pkg syscall (openbsd-386), const SIOCSLIFPHYADDR = 2182637898 pkg syscall (openbsd-386), const SIOCSLIFPHYRTABLE = 2149607841 pkg syscall (openbsd-386), const SIOCSLOWAT = 2147775234 pkg syscall (openbsd-386), const SIOCSPGRP = 2147775240 pkg syscall (openbsd-386), const SIOCSVH = 3223349749 pkg syscall (openbsd-386), const SOCK_RDM = 4 pkg syscall (openbsd-386), const SOL_SOCKET = 65535 pkg syscall (openbsd-386), const SOMAXCONN = 128 pkg syscall (openbsd-386), const SO_ACCEPTCONN = 2 pkg syscall (openbsd-386), const SO_BINDANY = 4096 pkg syscall (openbsd-386), const SO_BROADCAST = 32 pkg syscall (openbsd-386), const SO_DEBUG = 1 pkg syscall (openbsd-386), const SO_DONTROUTE = 16 pkg syscall (openbsd-386), const SO_ERROR = 4103 pkg syscall (openbsd-386), const SO_KEEPALIVE = 8 pkg syscall (openbsd-386), const SO_LINGER = 128 pkg syscall (openbsd-386), const SO_NETPROC = 4128 pkg syscall (openbsd-386), const SO_OOBINLINE = 256 pkg syscall (openbsd-386), const SO_PEERCRED = 4130 pkg syscall (openbsd-386), const SO_RCVBUF = 4098 pkg syscall (openbsd-386), const SO_RCVLOWAT = 4100 pkg syscall (openbsd-386), const SO_RCVTIMEO = 4102 pkg syscall (openbsd-386), const SO_REUSEADDR = 4 pkg syscall (openbsd-386), const SO_REUSEPORT = 512 pkg syscall (openbsd-386), const SO_RTABLE = 4129 pkg syscall (openbsd-386), const SO_SNDBUF = 4097 pkg syscall (openbsd-386), const SO_SNDLOWAT = 4099 pkg syscall (openbsd-386), const SO_SNDTIMEO = 4101 pkg syscall (openbsd-386), const SO_SPLICE = 4131 pkg syscall (openbsd-386), const SO_TIMESTAMP = 2048 pkg syscall (openbsd-386), const SO_TYPE = 4104 pkg syscall (openbsd-386), const SO_USELOOPBACK = 64 pkg syscall (openbsd-386), const SYS_ACCEPT = 30 pkg syscall (openbsd-386), const SYS_ACCESS = 33 pkg syscall (openbsd-386), const SYS_ACCT = 51 pkg syscall (openbsd-386), const SYS_ADJFREQ = 305 pkg syscall (openbsd-386), const SYS_ADJTIME = 140 pkg syscall (openbsd-386), const SYS_BIND = 104 pkg syscall (openbsd-386), const SYS_CHDIR = 12 pkg syscall (openbsd-386), const SYS_CHFLAGS = 34 pkg syscall (openbsd-386), const SYS_CHMOD = 15 pkg syscall (openbsd-386), const SYS_CHOWN = 16 pkg syscall (openbsd-386), const SYS_CHROOT = 61 pkg syscall (openbsd-386), const SYS_CLOCK_GETRES = 234 pkg syscall (openbsd-386), const SYS_CLOCK_GETTIME = 232 pkg syscall (openbsd-386), const SYS_CLOCK_SETTIME = 233 pkg syscall (openbsd-386), const SYS_CLOSE = 6 pkg syscall (openbsd-386), const SYS_CLOSEFROM = 287 pkg syscall (openbsd-386), const SYS_CONNECT = 98 pkg syscall (openbsd-386), const SYS_DUP = 41 pkg syscall (openbsd-386), const SYS_DUP2 = 90 pkg syscall (openbsd-386), const SYS_EXECVE = 59 pkg syscall (openbsd-386), const SYS_EXIT = 1 pkg syscall (openbsd-386), const SYS_FACCESSAT = 313 pkg syscall (openbsd-386), const SYS_FCHDIR = 13 pkg syscall (openbsd-386), const SYS_FCHFLAGS = 35 pkg syscall (openbsd-386), const SYS_FCHMOD = 124 pkg syscall (openbsd-386), const SYS_FCHMODAT = 314 pkg syscall (openbsd-386), const SYS_FCHOWN = 123 pkg syscall (openbsd-386), const SYS_FCHOWNAT = 315 pkg syscall (openbsd-386), const SYS_FCNTL = 92 pkg syscall (openbsd-386), const SYS_FHOPEN = 264 pkg syscall (openbsd-386), const SYS_FHSTAT = 294 pkg syscall (openbsd-386), const SYS_FHSTATFS = 309 pkg syscall (openbsd-386), const SYS_FLOCK = 131 pkg syscall (openbsd-386), const SYS_FORK = 2 pkg syscall (openbsd-386), const SYS_FPATHCONF = 192 pkg syscall (openbsd-386), const SYS_FSTAT = 292 pkg syscall (openbsd-386), const SYS_FSTATAT = 316 pkg syscall (openbsd-386), const SYS_FSTATFS = 308 pkg syscall (openbsd-386), const SYS_FSYNC = 95 pkg syscall (openbsd-386), const SYS_FTRUNCATE = 201 pkg syscall (openbsd-386), const SYS_FUTIMENS = 327 pkg syscall (openbsd-386), const SYS_FUTIMES = 206 pkg syscall (openbsd-386), const SYS_GETDIRENTRIES = 312 pkg syscall (openbsd-386), const SYS_GETDTABLECOUNT = 18 pkg syscall (openbsd-386), const SYS_GETEGID = 43 pkg syscall (openbsd-386), const SYS_GETEUID = 25 pkg syscall (openbsd-386), const SYS_GETFH = 161 pkg syscall (openbsd-386), const SYS_GETFSSTAT = 306 pkg syscall (openbsd-386), const SYS_GETGID = 47 pkg syscall (openbsd-386), const SYS_GETGROUPS = 79 pkg syscall (openbsd-386), const SYS_GETITIMER = 86 pkg syscall (openbsd-386), const SYS_GETLOGIN = 49 pkg syscall (openbsd-386), const SYS_GETPEERNAME = 31 pkg syscall (openbsd-386), const SYS_GETPGID = 207 pkg syscall (openbsd-386), const SYS_GETPGRP = 81 pkg syscall (openbsd-386), const SYS_GETPID = 20 pkg syscall (openbsd-386), const SYS_GETPPID = 39 pkg syscall (openbsd-386), const SYS_GETPRIORITY = 100 pkg syscall (openbsd-386), const SYS_GETRESGID = 283 pkg syscall (openbsd-386), const SYS_GETRESUID = 281 pkg syscall (openbsd-386), const SYS_GETRLIMIT = 194 pkg syscall (openbsd-386), const SYS_GETRTABLE = 311 pkg syscall (openbsd-386), const SYS_GETRUSAGE = 117 pkg syscall (openbsd-386), const SYS_GETSID = 255 pkg syscall (openbsd-386), const SYS_GETSOCKNAME = 32 pkg syscall (openbsd-386), const SYS_GETSOCKOPT = 118 pkg syscall (openbsd-386), const SYS_GETTHRID = 299 pkg syscall (openbsd-386), const SYS_GETTIMEOFDAY = 116 pkg syscall (openbsd-386), const SYS_GETUID = 24 pkg syscall (openbsd-386), const SYS_IOCTL = 54 pkg syscall (openbsd-386), const SYS_ISSETUGID = 253 pkg syscall (openbsd-386), const SYS_KEVENT = 270 pkg syscall (openbsd-386), const SYS_KILL = 37 pkg syscall (openbsd-386), const SYS_KQUEUE = 269 pkg syscall (openbsd-386), const SYS_KTRACE = 45 pkg syscall (openbsd-386), const SYS_LCHOWN = 254 pkg syscall (openbsd-386), const SYS_LINK = 9 pkg syscall (openbsd-386), const SYS_LINKAT = 317 pkg syscall (openbsd-386), const SYS_LISTEN = 106 pkg syscall (openbsd-386), const SYS_LSEEK = 199 pkg syscall (openbsd-386), const SYS_LSTAT = 293 pkg syscall (openbsd-386), const SYS_MADVISE = 75 pkg syscall (openbsd-386), const SYS_MINCORE = 78 pkg syscall (openbsd-386), const SYS_MINHERIT = 250 pkg syscall (openbsd-386), const SYS_MKDIR = 136 pkg syscall (openbsd-386), const SYS_MKDIRAT = 318 pkg syscall (openbsd-386), const SYS_MKFIFO = 132 pkg syscall (openbsd-386), const SYS_MKFIFOAT = 319 pkg syscall (openbsd-386), const SYS_MKNOD = 14 pkg syscall (openbsd-386), const SYS_MKNODAT = 320 pkg syscall (openbsd-386), const SYS_MLOCK = 203 pkg syscall (openbsd-386), const SYS_MLOCKALL = 271 pkg syscall (openbsd-386), const SYS_MMAP = 197 pkg syscall (openbsd-386), const SYS_MOUNT = 21 pkg syscall (openbsd-386), const SYS_MPROTECT = 74 pkg syscall (openbsd-386), const SYS_MQUERY = 286 pkg syscall (openbsd-386), const SYS_MSGCTL = 297 pkg syscall (openbsd-386), const SYS_MSGGET = 225 pkg syscall (openbsd-386), const SYS_MSGRCV = 227 pkg syscall (openbsd-386), const SYS_MSGSND = 226 pkg syscall (openbsd-386), const SYS_MSYNC = 256 pkg syscall (openbsd-386), const SYS_MUNLOCK = 204 pkg syscall (openbsd-386), const SYS_MUNLOCKALL = 272 pkg syscall (openbsd-386), const SYS_MUNMAP = 73 pkg syscall (openbsd-386), const SYS_NANOSLEEP = 240 pkg syscall (openbsd-386), const SYS_NFSSVC = 155 pkg syscall (openbsd-386), const SYS_OBREAK = 17 pkg syscall (openbsd-386), const SYS_OPEN = 5 pkg syscall (openbsd-386), const SYS_OPENAT = 321 pkg syscall (openbsd-386), const SYS_PATHCONF = 191 pkg syscall (openbsd-386), const SYS_PIPE = 263 pkg syscall (openbsd-386), const SYS_POLL = 252 pkg syscall (openbsd-386), const SYS_PREAD = 173 pkg syscall (openbsd-386), const SYS_PREADV = 267 pkg syscall (openbsd-386), const SYS_PROFIL = 44 pkg syscall (openbsd-386), const SYS_PTRACE = 26 pkg syscall (openbsd-386), const SYS_PWRITE = 174 pkg syscall (openbsd-386), const SYS_PWRITEV = 268 pkg syscall (openbsd-386), const SYS_QUOTACTL = 148 pkg syscall (openbsd-386), const SYS_READ = 3 pkg syscall (openbsd-386), const SYS_READLINK = 58 pkg syscall (openbsd-386), const SYS_READLINKAT = 322 pkg syscall (openbsd-386), const SYS_READV = 120 pkg syscall (openbsd-386), const SYS_REBOOT = 55 pkg syscall (openbsd-386), const SYS_RECVFROM = 29 pkg syscall (openbsd-386), const SYS_RECVMSG = 27 pkg syscall (openbsd-386), const SYS_RENAME = 128 pkg syscall (openbsd-386), const SYS_RENAMEAT = 323 pkg syscall (openbsd-386), const SYS_REVOKE = 56 pkg syscall (openbsd-386), const SYS_RMDIR = 137 pkg syscall (openbsd-386), const SYS_SCHED_YIELD = 298 pkg syscall (openbsd-386), const SYS_SELECT = 93 pkg syscall (openbsd-386), const SYS_SEMGET = 221 pkg syscall (openbsd-386), const SYS_SEMOP = 290 pkg syscall (openbsd-386), const SYS_SENDMSG = 28 pkg syscall (openbsd-386), const SYS_SENDTO = 133 pkg syscall (openbsd-386), const SYS_SETEGID = 182 pkg syscall (openbsd-386), const SYS_SETEUID = 183 pkg syscall (openbsd-386), const SYS_SETGID = 181 pkg syscall (openbsd-386), const SYS_SETGROUPS = 80 pkg syscall (openbsd-386), const SYS_SETITIMER = 83 pkg syscall (openbsd-386), const SYS_SETLOGIN = 50 pkg syscall (openbsd-386), const SYS_SETPGID = 82 pkg syscall (openbsd-386), const SYS_SETPRIORITY = 96 pkg syscall (openbsd-386), const SYS_SETREGID = 127 pkg syscall (openbsd-386), const SYS_SETRESGID = 284 pkg syscall (openbsd-386), const SYS_SETRESUID = 282 pkg syscall (openbsd-386), const SYS_SETREUID = 126 pkg syscall (openbsd-386), const SYS_SETRLIMIT = 195 pkg syscall (openbsd-386), const SYS_SETRTABLE = 310 pkg syscall (openbsd-386), const SYS_SETSID = 147 pkg syscall (openbsd-386), const SYS_SETSOCKOPT = 105 pkg syscall (openbsd-386), const SYS_SETTIMEOFDAY = 122 pkg syscall (openbsd-386), const SYS_SETUID = 23 pkg syscall (openbsd-386), const SYS_SHMAT = 228 pkg syscall (openbsd-386), const SYS_SHMCTL = 296 pkg syscall (openbsd-386), const SYS_SHMDT = 230 pkg syscall (openbsd-386), const SYS_SHMGET = 289 pkg syscall (openbsd-386), const SYS_SHUTDOWN = 134 pkg syscall (openbsd-386), const SYS_SIGACTION = 46 pkg syscall (openbsd-386), const SYS_SIGALTSTACK = 288 pkg syscall (openbsd-386), const SYS_SIGPENDING = 52 pkg syscall (openbsd-386), const SYS_SIGPROCMASK = 48 pkg syscall (openbsd-386), const SYS_SIGRETURN = 103 pkg syscall (openbsd-386), const SYS_SIGSUSPEND = 111 pkg syscall (openbsd-386), const SYS_SOCKET = 97 pkg syscall (openbsd-386), const SYS_SOCKETPAIR = 135 pkg syscall (openbsd-386), const SYS_STAT = 291 pkg syscall (openbsd-386), const SYS_STATFS = 307 pkg syscall (openbsd-386), const SYS_SWAPCTL = 193 pkg syscall (openbsd-386), const SYS_SYMLINK = 57 pkg syscall (openbsd-386), const SYS_SYMLINKAT = 324 pkg syscall (openbsd-386), const SYS_SYNC = 36 pkg syscall (openbsd-386), const SYS_SYSARCH = 165 pkg syscall (openbsd-386), const SYS_TRUNCATE = 200 pkg syscall (openbsd-386), const SYS_UMASK = 60 pkg syscall (openbsd-386), const SYS_UNLINK = 10 pkg syscall (openbsd-386), const SYS_UNLINKAT = 325 pkg syscall (openbsd-386), const SYS_UNMOUNT = 22 pkg syscall (openbsd-386), const SYS_UTIMENSAT = 326 pkg syscall (openbsd-386), const SYS_UTIMES = 138 pkg syscall (openbsd-386), const SYS_VFORK = 66 pkg syscall (openbsd-386), const SYS_WAIT4 = 7 pkg syscall (openbsd-386), const SYS_WRITE = 4 pkg syscall (openbsd-386), const SYS_WRITEV = 121 pkg syscall (openbsd-386), const SYS___GETCWD = 304 pkg syscall (openbsd-386), const SYS___GET_TCB = 330 pkg syscall (openbsd-386), const SYS___SEMCTL = 295 pkg syscall (openbsd-386), const SYS___SET_TCB = 329 pkg syscall (openbsd-386), const SYS___SYSCTL = 202 pkg syscall (openbsd-386), const SYS___TFORK = 8 pkg syscall (openbsd-386), const SYS___THREXIT = 302 pkg syscall (openbsd-386), const SYS___THRSIGDIVERT = 303 pkg syscall (openbsd-386), const SYS___THRSLEEP = 300 pkg syscall (openbsd-386), const SYS___THRWAKEUP = 301 pkg syscall (openbsd-386), const S_IFMT = 61440 pkg syscall (openbsd-386), const SizeofBpfHdr = 20 pkg syscall (openbsd-386), const SizeofBpfInsn = 8 pkg syscall (openbsd-386), const SizeofBpfProgram = 8 pkg syscall (openbsd-386), const SizeofBpfStat = 8 pkg syscall (openbsd-386), const SizeofBpfVersion = 4 pkg syscall (openbsd-386), const SizeofCmsghdr = 12 pkg syscall (openbsd-386), const SizeofIPMreq = 8 pkg syscall (openbsd-386), const SizeofIPv6Mreq = 20 pkg syscall (openbsd-386), const SizeofIfAnnounceMsghdr = 26 pkg syscall (openbsd-386), const SizeofIfData = 208 pkg syscall (openbsd-386), const SizeofIfMsghdr = 232 pkg syscall (openbsd-386), const SizeofIfaMsghdr = 24 pkg syscall (openbsd-386), const SizeofInet6Pktinfo = 20 pkg syscall (openbsd-386), const SizeofLinger = 8 pkg syscall (openbsd-386), const SizeofMsghdr = 28 pkg syscall (openbsd-386), const SizeofRtMetrics = 48 pkg syscall (openbsd-386), const SizeofRtMsghdr = 88 pkg syscall (openbsd-386), const SizeofSockaddrAny = 108 pkg syscall (openbsd-386), const SizeofSockaddrDatalink = 32 pkg syscall (openbsd-386), const SizeofSockaddrInet4 = 16 pkg syscall (openbsd-386), const SizeofSockaddrInet6 = 28 pkg syscall (openbsd-386), const SizeofSockaddrUnix = 106 pkg syscall (openbsd-386), const TCIFLUSH = 1 pkg syscall (openbsd-386), const TCIOFLUSH = 3 pkg syscall (openbsd-386), const TCOFLUSH = 2 pkg syscall (openbsd-386), const TCP_MAXBURST = 4 pkg syscall (openbsd-386), const TCP_MAXSEG = 2 pkg syscall (openbsd-386), const TCP_MAXWIN = 65535 pkg syscall (openbsd-386), const TCP_MAX_SACK = 3 pkg syscall (openbsd-386), const TCP_MAX_WINSHIFT = 14 pkg syscall (openbsd-386), const TCP_MD5SIG = 4 pkg syscall (openbsd-386), const TCP_MSS = 512 pkg syscall (openbsd-386), const TCP_NSTATES = 11 pkg syscall (openbsd-386), const TCP_SACK_ENABLE = 8 pkg syscall (openbsd-386), const TCSAFLUSH = 2 pkg syscall (openbsd-386), const TIOCCBRK = 536900730 pkg syscall (openbsd-386), const TIOCCDTR = 536900728 pkg syscall (openbsd-386), const TIOCCONS = 2147775586 pkg syscall (openbsd-386), const TIOCDRAIN = 536900702 pkg syscall (openbsd-386), const TIOCEXCL = 536900621 pkg syscall (openbsd-386), const TIOCEXT = 2147775584 pkg syscall (openbsd-386), const TIOCFLAG_CLOCAL = 2 pkg syscall (openbsd-386), const TIOCFLAG_CRTSCTS = 4 pkg syscall (openbsd-386), const TIOCFLAG_MDMBUF = 8 pkg syscall (openbsd-386), const TIOCFLAG_PPS = 16 pkg syscall (openbsd-386), const TIOCFLAG_SOFTCAR = 1 pkg syscall (openbsd-386), const TIOCFLUSH = 2147775504 pkg syscall (openbsd-386), const TIOCGETA = 1076655123 pkg syscall (openbsd-386), const TIOCGETD = 1074033690 pkg syscall (openbsd-386), const TIOCGFLAGS = 1074033757 pkg syscall (openbsd-386), const TIOCGPGRP = 1074033783 pkg syscall (openbsd-386), const TIOCGTSTAMP = 1074295899 pkg syscall (openbsd-386), const TIOCGWINSZ = 1074295912 pkg syscall (openbsd-386), const TIOCMBIC = 2147775595 pkg syscall (openbsd-386), const TIOCMBIS = 2147775596 pkg syscall (openbsd-386), const TIOCMGET = 1074033770 pkg syscall (openbsd-386), const TIOCMODG = 1074033770 pkg syscall (openbsd-386), const TIOCMODS = 2147775597 pkg syscall (openbsd-386), const TIOCMSET = 2147775597 pkg syscall (openbsd-386), const TIOCM_CAR = 64 pkg syscall (openbsd-386), const TIOCM_CD = 64 pkg syscall (openbsd-386), const TIOCM_CTS = 32 pkg syscall (openbsd-386), const TIOCM_DSR = 256 pkg syscall (openbsd-386), const TIOCM_DTR = 2 pkg syscall (openbsd-386), const TIOCM_LE = 1 pkg syscall (openbsd-386), const TIOCM_RI = 128 pkg syscall (openbsd-386), const TIOCM_RNG = 128 pkg syscall (openbsd-386), const TIOCM_RTS = 4 pkg syscall (openbsd-386), const TIOCM_SR = 16 pkg syscall (openbsd-386), const TIOCM_ST = 8 pkg syscall (openbsd-386), const TIOCNOTTY = 536900721 pkg syscall (openbsd-386), const TIOCNXCL = 536900622 pkg syscall (openbsd-386), const TIOCOUTQ = 1074033779 pkg syscall (openbsd-386), const TIOCPKT = 2147775600 pkg syscall (openbsd-386), const TIOCPKT_DATA = 0 pkg syscall (openbsd-386), const TIOCPKT_DOSTOP = 32 pkg syscall (openbsd-386), const TIOCPKT_FLUSHREAD = 1 pkg syscall (openbsd-386), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (openbsd-386), const TIOCPKT_IOCTL = 64 pkg syscall (openbsd-386), const TIOCPKT_NOSTOP = 16 pkg syscall (openbsd-386), const TIOCPKT_START = 8 pkg syscall (openbsd-386), const TIOCPKT_STOP = 4 pkg syscall (openbsd-386), const TIOCREMOTE = 2147775593 pkg syscall (openbsd-386), const TIOCSBRK = 536900731 pkg syscall (openbsd-386), const TIOCSCTTY = 536900705 pkg syscall (openbsd-386), const TIOCSDTR = 536900729 pkg syscall (openbsd-386), const TIOCSETA = 2150396948 pkg syscall (openbsd-386), const TIOCSETAF = 2150396950 pkg syscall (openbsd-386), const TIOCSETAW = 2150396949 pkg syscall (openbsd-386), const TIOCSETD = 2147775515 pkg syscall (openbsd-386), const TIOCSFLAGS = 2147775580 pkg syscall (openbsd-386), const TIOCSIG = 2147775583 pkg syscall (openbsd-386), const TIOCSPGRP = 2147775606 pkg syscall (openbsd-386), const TIOCSTART = 536900718 pkg syscall (openbsd-386), const TIOCSTAT = 2147775589 pkg syscall (openbsd-386), const TIOCSTI = 2147578994 pkg syscall (openbsd-386), const TIOCSTOP = 536900719 pkg syscall (openbsd-386), const TIOCSTSTAMP = 2148037722 pkg syscall (openbsd-386), const TIOCSWINSZ = 2148037735 pkg syscall (openbsd-386), const TIOCUCNTL = 2147775590 pkg syscall (openbsd-386), const TOSTOP = 4194304 pkg syscall (openbsd-386), const VDISCARD = 15 pkg syscall (openbsd-386), const VDSUSP = 11 pkg syscall (openbsd-386), const VEOF = 0 pkg syscall (openbsd-386), const VEOL = 1 pkg syscall (openbsd-386), const VEOL2 = 2 pkg syscall (openbsd-386), const VERASE = 3 pkg syscall (openbsd-386), const VINTR = 8 pkg syscall (openbsd-386), const VKILL = 5 pkg syscall (openbsd-386), const VLNEXT = 14 pkg syscall (openbsd-386), const VMIN = 16 pkg syscall (openbsd-386), const VQUIT = 9 pkg syscall (openbsd-386), const VREPRINT = 6 pkg syscall (openbsd-386), const VSTART = 12 pkg syscall (openbsd-386), const VSTATUS = 18 pkg syscall (openbsd-386), const VSTOP = 13 pkg syscall (openbsd-386), const VSUSP = 10 pkg syscall (openbsd-386), const VTIME = 17 pkg syscall (openbsd-386), const VWERASE = 4 pkg syscall (openbsd-386), const WALTSIG = 4 pkg syscall (openbsd-386), const WCONTINUED = 8 pkg syscall (openbsd-386), const WCOREFLAG = 128 pkg syscall (openbsd-386), const WNOHANG = 1 pkg syscall (openbsd-386), const WSTOPPED = 127 pkg syscall (openbsd-386), const WUNTRACED = 2 pkg syscall (openbsd-386-cgo), const AF_APPLETALK = 16 pkg syscall (openbsd-386-cgo), const AF_BLUETOOTH = 32 pkg syscall (openbsd-386-cgo), const AF_CCITT = 10 pkg syscall (openbsd-386-cgo), const AF_CHAOS = 5 pkg syscall (openbsd-386-cgo), const AF_CNT = 21 pkg syscall (openbsd-386-cgo), const AF_COIP = 20 pkg syscall (openbsd-386-cgo), const AF_DATAKIT = 9 pkg syscall (openbsd-386-cgo), const AF_DECnet = 12 pkg syscall (openbsd-386-cgo), const AF_DLI = 13 pkg syscall (openbsd-386-cgo), const AF_E164 = 26 pkg syscall (openbsd-386-cgo), const AF_ECMA = 8 pkg syscall (openbsd-386-cgo), const AF_ENCAP = 28 pkg syscall (openbsd-386-cgo), const AF_HYLINK = 15 pkg syscall (openbsd-386-cgo), const AF_IMPLINK = 3 pkg syscall (openbsd-386-cgo), const AF_INET6 = 24 pkg syscall (openbsd-386-cgo), const AF_IPX = 23 pkg syscall (openbsd-386-cgo), const AF_ISDN = 26 pkg syscall (openbsd-386-cgo), const AF_ISO = 7 pkg syscall (openbsd-386-cgo), const AF_KEY = 30 pkg syscall (openbsd-386-cgo), const AF_LAT = 14 pkg syscall (openbsd-386-cgo), const AF_LINK = 18 pkg syscall (openbsd-386-cgo), const AF_LOCAL = 1 pkg syscall (openbsd-386-cgo), const AF_MAX = 36 pkg syscall (openbsd-386-cgo), const AF_MPLS = 33 pkg syscall (openbsd-386-cgo), const AF_NATM = 27 pkg syscall (openbsd-386-cgo), const AF_NS = 6 pkg syscall (openbsd-386-cgo), const AF_OSI = 7 pkg syscall (openbsd-386-cgo), const AF_PUP = 4 pkg syscall (openbsd-386-cgo), const AF_ROUTE = 17 pkg syscall (openbsd-386-cgo), const AF_SIP = 29 pkg syscall (openbsd-386-cgo), const AF_SNA = 11 pkg syscall (openbsd-386-cgo), const ARPHRD_ETHER = 1 pkg syscall (openbsd-386-cgo), const ARPHRD_FRELAY = 15 pkg syscall (openbsd-386-cgo), const ARPHRD_IEEE1394 = 24 pkg syscall (openbsd-386-cgo), const ARPHRD_IEEE802 = 6 pkg syscall (openbsd-386-cgo), const B0 = 0 pkg syscall (openbsd-386-cgo), const B110 = 110 pkg syscall (openbsd-386-cgo), const B115200 = 115200 pkg syscall (openbsd-386-cgo), const B1200 = 1200 pkg syscall (openbsd-386-cgo), const B134 = 134 pkg syscall (openbsd-386-cgo), const B14400 = 14400 pkg syscall (openbsd-386-cgo), const B150 = 150 pkg syscall (openbsd-386-cgo), const B1800 = 1800 pkg syscall (openbsd-386-cgo), const B19200 = 19200 pkg syscall (openbsd-386-cgo), const B200 = 200 pkg syscall (openbsd-386-cgo), const B230400 = 230400 pkg syscall (openbsd-386-cgo), const B2400 = 2400 pkg syscall (openbsd-386-cgo), const B28800 = 28800 pkg syscall (openbsd-386-cgo), const B300 = 300 pkg syscall (openbsd-386-cgo), const B38400 = 38400 pkg syscall (openbsd-386-cgo), const B4800 = 4800 pkg syscall (openbsd-386-cgo), const B50 = 50 pkg syscall (openbsd-386-cgo), const B57600 = 57600 pkg syscall (openbsd-386-cgo), const B600 = 600 pkg syscall (openbsd-386-cgo), const B7200 = 7200 pkg syscall (openbsd-386-cgo), const B75 = 75 pkg syscall (openbsd-386-cgo), const B76800 = 76800 pkg syscall (openbsd-386-cgo), const B9600 = 9600 pkg syscall (openbsd-386-cgo), const BIOCFLUSH = 536887912 pkg syscall (openbsd-386-cgo), const BIOCGBLEN = 1074020966 pkg syscall (openbsd-386-cgo), const BIOCGDIRFILT = 1074020988 pkg syscall (openbsd-386-cgo), const BIOCGDLT = 1074020970 pkg syscall (openbsd-386-cgo), const BIOCGDLTLIST = 3221766779 pkg syscall (openbsd-386-cgo), const BIOCGETIF = 1075855979 pkg syscall (openbsd-386-cgo), const BIOCGFILDROP = 1074020984 pkg syscall (openbsd-386-cgo), const BIOCGHDRCMPLT = 1074020980 pkg syscall (openbsd-386-cgo), const BIOCGRSIG = 1074020979 pkg syscall (openbsd-386-cgo), const BIOCGRTIMEOUT = 1074283118 pkg syscall (openbsd-386-cgo), const BIOCGSTATS = 1074283119 pkg syscall (openbsd-386-cgo), const BIOCIMMEDIATE = 2147762800 pkg syscall (openbsd-386-cgo), const BIOCLOCK = 536887926 pkg syscall (openbsd-386-cgo), const BIOCPROMISC = 536887913 pkg syscall (openbsd-386-cgo), const BIOCSBLEN = 3221504614 pkg syscall (openbsd-386-cgo), const BIOCSDIRFILT = 2147762813 pkg syscall (openbsd-386-cgo), const BIOCSDLT = 2147762810 pkg syscall (openbsd-386-cgo), const BIOCSETF = 2148024935 pkg syscall (openbsd-386-cgo), const BIOCSETIF = 2149597804 pkg syscall (openbsd-386-cgo), const BIOCSETWF = 2148024951 pkg syscall (openbsd-386-cgo), const BIOCSFILDROP = 2147762809 pkg syscall (openbsd-386-cgo), const BIOCSHDRCMPLT = 2147762805 pkg syscall (openbsd-386-cgo), const BIOCSRSIG = 2147762802 pkg syscall (openbsd-386-cgo), const BIOCSRTIMEOUT = 2148024941 pkg syscall (openbsd-386-cgo), const BIOCVERSION = 1074020977 pkg syscall (openbsd-386-cgo), const BPF_A = 16 pkg syscall (openbsd-386-cgo), const BPF_ABS = 32 pkg syscall (openbsd-386-cgo), const BPF_ADD = 0 pkg syscall (openbsd-386-cgo), const BPF_ALIGNMENT = 4 pkg syscall (openbsd-386-cgo), const BPF_ALU = 4 pkg syscall (openbsd-386-cgo), const BPF_AND = 80 pkg syscall (openbsd-386-cgo), const BPF_B = 16 pkg syscall (openbsd-386-cgo), const BPF_DIRECTION_IN = 1 pkg syscall (openbsd-386-cgo), const BPF_DIRECTION_OUT = 2 pkg syscall (openbsd-386-cgo), const BPF_DIV = 48 pkg syscall (openbsd-386-cgo), const BPF_H = 8 pkg syscall (openbsd-386-cgo), const BPF_IMM = 0 pkg syscall (openbsd-386-cgo), const BPF_IND = 64 pkg syscall (openbsd-386-cgo), const BPF_JA = 0 pkg syscall (openbsd-386-cgo), const BPF_JEQ = 16 pkg syscall (openbsd-386-cgo), const BPF_JGE = 48 pkg syscall (openbsd-386-cgo), const BPF_JGT = 32 pkg syscall (openbsd-386-cgo), const BPF_JMP = 5 pkg syscall (openbsd-386-cgo), const BPF_JSET = 64 pkg syscall (openbsd-386-cgo), const BPF_K = 0 pkg syscall (openbsd-386-cgo), const BPF_LD = 0 pkg syscall (openbsd-386-cgo), const BPF_LDX = 1 pkg syscall (openbsd-386-cgo), const BPF_LEN = 128 pkg syscall (openbsd-386-cgo), const BPF_LSH = 96 pkg syscall (openbsd-386-cgo), const BPF_MAJOR_VERSION = 1 pkg syscall (openbsd-386-cgo), const BPF_MAXBUFSIZE = 2097152 pkg syscall (openbsd-386-cgo), const BPF_MAXINSNS = 512 pkg syscall (openbsd-386-cgo), const BPF_MEM = 96 pkg syscall (openbsd-386-cgo), const BPF_MEMWORDS = 16 pkg syscall (openbsd-386-cgo), const BPF_MINBUFSIZE = 32 pkg syscall (openbsd-386-cgo), const BPF_MINOR_VERSION = 1 pkg syscall (openbsd-386-cgo), const BPF_MISC = 7 pkg syscall (openbsd-386-cgo), const BPF_MSH = 160 pkg syscall (openbsd-386-cgo), const BPF_MUL = 32 pkg syscall (openbsd-386-cgo), const BPF_NEG = 128 pkg syscall (openbsd-386-cgo), const BPF_OR = 64 pkg syscall (openbsd-386-cgo), const BPF_RELEASE = 199606 pkg syscall (openbsd-386-cgo), const BPF_RET = 6 pkg syscall (openbsd-386-cgo), const BPF_RSH = 112 pkg syscall (openbsd-386-cgo), const BPF_ST = 2 pkg syscall (openbsd-386-cgo), const BPF_STX = 3 pkg syscall (openbsd-386-cgo), const BPF_SUB = 16 pkg syscall (openbsd-386-cgo), const BPF_TAX = 0 pkg syscall (openbsd-386-cgo), const BPF_TXA = 128 pkg syscall (openbsd-386-cgo), const BPF_W = 0 pkg syscall (openbsd-386-cgo), const BPF_X = 8 pkg syscall (openbsd-386-cgo), const BRKINT = 2 pkg syscall (openbsd-386-cgo), const CFLUSH = 15 pkg syscall (openbsd-386-cgo), const CLOCAL = 32768 pkg syscall (openbsd-386-cgo), const CREAD = 2048 pkg syscall (openbsd-386-cgo), const CS5 = 0 pkg syscall (openbsd-386-cgo), const CS6 = 256 pkg syscall (openbsd-386-cgo), const CS7 = 512 pkg syscall (openbsd-386-cgo), const CS8 = 768 pkg syscall (openbsd-386-cgo), const CSIZE = 768 pkg syscall (openbsd-386-cgo), const CSTART = 17 pkg syscall (openbsd-386-cgo), const CSTATUS = 255 pkg syscall (openbsd-386-cgo), const CSTOP = 19 pkg syscall (openbsd-386-cgo), const CSTOPB = 1024 pkg syscall (openbsd-386-cgo), const CSUSP = 26 pkg syscall (openbsd-386-cgo), const CTL_MAXNAME = 12 pkg syscall (openbsd-386-cgo), const CTL_NET = 4 pkg syscall (openbsd-386-cgo), const DIOCOSFPFLUSH = 536888398 pkg syscall (openbsd-386-cgo), const DLT_ARCNET = 7 pkg syscall (openbsd-386-cgo), const DLT_ATM_RFC1483 = 11 pkg syscall (openbsd-386-cgo), const DLT_AX25 = 3 pkg syscall (openbsd-386-cgo), const DLT_CHAOS = 5 pkg syscall (openbsd-386-cgo), const DLT_C_HDLC = 104 pkg syscall (openbsd-386-cgo), const DLT_EN10MB = 1 pkg syscall (openbsd-386-cgo), const DLT_EN3MB = 2 pkg syscall (openbsd-386-cgo), const DLT_ENC = 13 pkg syscall (openbsd-386-cgo), const DLT_FDDI = 10 pkg syscall (openbsd-386-cgo), const DLT_IEEE802 = 6 pkg syscall (openbsd-386-cgo), const DLT_IEEE802_11 = 105 pkg syscall (openbsd-386-cgo), const DLT_IEEE802_11_RADIO = 127 pkg syscall (openbsd-386-cgo), const DLT_LOOP = 12 pkg syscall (openbsd-386-cgo), const DLT_MPLS = 219 pkg syscall (openbsd-386-cgo), const DLT_NULL = 0 pkg syscall (openbsd-386-cgo), const DLT_PFLOG = 117 pkg syscall (openbsd-386-cgo), const DLT_PFSYNC = 18 pkg syscall (openbsd-386-cgo), const DLT_PPP = 9 pkg syscall (openbsd-386-cgo), const DLT_PPP_BSDOS = 16 pkg syscall (openbsd-386-cgo), const DLT_PPP_ETHER = 51 pkg syscall (openbsd-386-cgo), const DLT_PPP_SERIAL = 50 pkg syscall (openbsd-386-cgo), const DLT_PRONET = 4 pkg syscall (openbsd-386-cgo), const DLT_RAW = 14 pkg syscall (openbsd-386-cgo), const DLT_SLIP = 8 pkg syscall (openbsd-386-cgo), const DLT_SLIP_BSDOS = 15 pkg syscall (openbsd-386-cgo), const DT_BLK = 6 pkg syscall (openbsd-386-cgo), const DT_CHR = 2 pkg syscall (openbsd-386-cgo), const DT_DIR = 4 pkg syscall (openbsd-386-cgo), const DT_FIFO = 1 pkg syscall (openbsd-386-cgo), const DT_LNK = 10 pkg syscall (openbsd-386-cgo), const DT_REG = 8 pkg syscall (openbsd-386-cgo), const DT_SOCK = 12 pkg syscall (openbsd-386-cgo), const DT_UNKNOWN = 0 pkg syscall (openbsd-386-cgo), const E2BIG = 7 pkg syscall (openbsd-386-cgo), const EACCES = 13 pkg syscall (openbsd-386-cgo), const EADDRINUSE = 48 pkg syscall (openbsd-386-cgo), const EADDRNOTAVAIL = 49 pkg syscall (openbsd-386-cgo), const EAFNOSUPPORT = 47 pkg syscall (openbsd-386-cgo), const EAGAIN = 35 pkg syscall (openbsd-386-cgo), const EALREADY = 37 pkg syscall (openbsd-386-cgo), const EAUTH = 80 pkg syscall (openbsd-386-cgo), const EBADF = 9 pkg syscall (openbsd-386-cgo), const EBADRPC = 72 pkg syscall (openbsd-386-cgo), const EBUSY = 16 pkg syscall (openbsd-386-cgo), const ECANCELED = 88 pkg syscall (openbsd-386-cgo), const ECHILD = 10 pkg syscall (openbsd-386-cgo), const ECHO = 8 pkg syscall (openbsd-386-cgo), const ECHOCTL = 64 pkg syscall (openbsd-386-cgo), const ECHOE = 2 pkg syscall (openbsd-386-cgo), const ECHOK = 4 pkg syscall (openbsd-386-cgo), const ECHOKE = 1 pkg syscall (openbsd-386-cgo), const ECHONL = 16 pkg syscall (openbsd-386-cgo), const ECHOPRT = 32 pkg syscall (openbsd-386-cgo), const ECONNABORTED = 53 pkg syscall (openbsd-386-cgo), const ECONNREFUSED = 61 pkg syscall (openbsd-386-cgo), const ECONNRESET = 54 pkg syscall (openbsd-386-cgo), const EDEADLK = 11 pkg syscall (openbsd-386-cgo), const EDESTADDRREQ = 39 pkg syscall (openbsd-386-cgo), const EDOM = 33 pkg syscall (openbsd-386-cgo), const EDQUOT = 69 pkg syscall (openbsd-386-cgo), const EEXIST = 17 pkg syscall (openbsd-386-cgo), const EFAULT = 14 pkg syscall (openbsd-386-cgo), const EFBIG = 27 pkg syscall (openbsd-386-cgo), const EFTYPE = 79 pkg syscall (openbsd-386-cgo), const EHOSTDOWN = 64 pkg syscall (openbsd-386-cgo), const EHOSTUNREACH = 65 pkg syscall (openbsd-386-cgo), const EIDRM = 89 pkg syscall (openbsd-386-cgo), const EILSEQ = 84 pkg syscall (openbsd-386-cgo), const EINPROGRESS = 36 pkg syscall (openbsd-386-cgo), const EINTR = 4 pkg syscall (openbsd-386-cgo), const EINVAL = 22 pkg syscall (openbsd-386-cgo), const EIO = 5 pkg syscall (openbsd-386-cgo), const EIPSEC = 82 pkg syscall (openbsd-386-cgo), const EISCONN = 56 pkg syscall (openbsd-386-cgo), const EISDIR = 21 pkg syscall (openbsd-386-cgo), const ELAST = 91 pkg syscall (openbsd-386-cgo), const ELOOP = 62 pkg syscall (openbsd-386-cgo), const EMEDIUMTYPE = 86 pkg syscall (openbsd-386-cgo), const EMFILE = 24 pkg syscall (openbsd-386-cgo), const EMLINK = 31 pkg syscall (openbsd-386-cgo), const EMSGSIZE = 40 pkg syscall (openbsd-386-cgo), const EMT_TAGOVF = 1 pkg syscall (openbsd-386-cgo), const EMUL_ENABLED = 1 pkg syscall (openbsd-386-cgo), const EMUL_NATIVE = 2 pkg syscall (openbsd-386-cgo), const ENAMETOOLONG = 63 pkg syscall (openbsd-386-cgo), const ENDRUNDISC = 9 pkg syscall (openbsd-386-cgo), const ENEEDAUTH = 81 pkg syscall (openbsd-386-cgo), const ENETDOWN = 50 pkg syscall (openbsd-386-cgo), const ENETRESET = 52 pkg syscall (openbsd-386-cgo), const ENETUNREACH = 51 pkg syscall (openbsd-386-cgo), const ENFILE = 23 pkg syscall (openbsd-386-cgo), const ENOATTR = 83 pkg syscall (openbsd-386-cgo), const ENOBUFS = 55 pkg syscall (openbsd-386-cgo), const ENODEV = 19 pkg syscall (openbsd-386-cgo), const ENOEXEC = 8 pkg syscall (openbsd-386-cgo), const ENOLCK = 77 pkg syscall (openbsd-386-cgo), const ENOMEDIUM = 85 pkg syscall (openbsd-386-cgo), const ENOMEM = 12 pkg syscall (openbsd-386-cgo), const ENOMSG = 90 pkg syscall (openbsd-386-cgo), const ENOPROTOOPT = 42 pkg syscall (openbsd-386-cgo), const ENOSPC = 28 pkg syscall (openbsd-386-cgo), const ENOSYS = 78 pkg syscall (openbsd-386-cgo), const ENOTBLK = 15 pkg syscall (openbsd-386-cgo), const ENOTCONN = 57 pkg syscall (openbsd-386-cgo), const ENOTDIR = 20 pkg syscall (openbsd-386-cgo), const ENOTEMPTY = 66 pkg syscall (openbsd-386-cgo), const ENOTSOCK = 38 pkg syscall (openbsd-386-cgo), const ENOTSUP = 91 pkg syscall (openbsd-386-cgo), const ENOTTY = 25 pkg syscall (openbsd-386-cgo), const ENXIO = 6 pkg syscall (openbsd-386-cgo), const EOPNOTSUPP = 45 pkg syscall (openbsd-386-cgo), const EOVERFLOW = 87 pkg syscall (openbsd-386-cgo), const EPERM = 1 pkg syscall (openbsd-386-cgo), const EPFNOSUPPORT = 46 pkg syscall (openbsd-386-cgo), const EPIPE = 32 pkg syscall (openbsd-386-cgo), const EPROCLIM = 67 pkg syscall (openbsd-386-cgo), const EPROCUNAVAIL = 76 pkg syscall (openbsd-386-cgo), const EPROGMISMATCH = 75 pkg syscall (openbsd-386-cgo), const EPROGUNAVAIL = 74 pkg syscall (openbsd-386-cgo), const EPROTONOSUPPORT = 43 pkg syscall (openbsd-386-cgo), const EPROTOTYPE = 41 pkg syscall (openbsd-386-cgo), const ERANGE = 34 pkg syscall (openbsd-386-cgo), const EREMOTE = 71 pkg syscall (openbsd-386-cgo), const EROFS = 30 pkg syscall (openbsd-386-cgo), const ERPCMISMATCH = 73 pkg syscall (openbsd-386-cgo), const ESHUTDOWN = 58 pkg syscall (openbsd-386-cgo), const ESOCKTNOSUPPORT = 44 pkg syscall (openbsd-386-cgo), const ESPIPE = 29 pkg syscall (openbsd-386-cgo), const ESRCH = 3 pkg syscall (openbsd-386-cgo), const ESTALE = 70 pkg syscall (openbsd-386-cgo), const ETHERMIN = 46 pkg syscall (openbsd-386-cgo), const ETHERMTU = 1500 pkg syscall (openbsd-386-cgo), const ETHERTYPE_8023 = 4 pkg syscall (openbsd-386-cgo), const ETHERTYPE_AARP = 33011 pkg syscall (openbsd-386-cgo), const ETHERTYPE_ACCTON = 33680 pkg syscall (openbsd-386-cgo), const ETHERTYPE_AEONIC = 32822 pkg syscall (openbsd-386-cgo), const ETHERTYPE_ALPHA = 33098 pkg syscall (openbsd-386-cgo), const ETHERTYPE_AMBER = 24584 pkg syscall (openbsd-386-cgo), const ETHERTYPE_AMOEBA = 33093 pkg syscall (openbsd-386-cgo), const ETHERTYPE_AOE = 34978 pkg syscall (openbsd-386-cgo), const ETHERTYPE_APOLLO = 33015 pkg syscall (openbsd-386-cgo), const ETHERTYPE_APOLLODOMAIN = 32793 pkg syscall (openbsd-386-cgo), const ETHERTYPE_APPLETALK = 32923 pkg syscall (openbsd-386-cgo), const ETHERTYPE_APPLITEK = 32967 pkg syscall (openbsd-386-cgo), const ETHERTYPE_ARGONAUT = 32826 pkg syscall (openbsd-386-cgo), const ETHERTYPE_ARP = 2054 pkg syscall (openbsd-386-cgo), const ETHERTYPE_AT = 32923 pkg syscall (openbsd-386-cgo), const ETHERTYPE_ATALK = 32923 pkg syscall (openbsd-386-cgo), const ETHERTYPE_ATOMIC = 34527 pkg syscall (openbsd-386-cgo), const ETHERTYPE_ATT = 32873 pkg syscall (openbsd-386-cgo), const ETHERTYPE_ATTSTANFORD = 32776 pkg syscall (openbsd-386-cgo), const ETHERTYPE_AUTOPHON = 32874 pkg syscall (openbsd-386-cgo), const ETHERTYPE_AXIS = 34902 pkg syscall (openbsd-386-cgo), const ETHERTYPE_BCLOOP = 36867 pkg syscall (openbsd-386-cgo), const ETHERTYPE_BOFL = 33026 pkg syscall (openbsd-386-cgo), const ETHERTYPE_CABLETRON = 28724 pkg syscall (openbsd-386-cgo), const ETHERTYPE_CHAOS = 2052 pkg syscall (openbsd-386-cgo), const ETHERTYPE_COMDESIGN = 32876 pkg syscall (openbsd-386-cgo), const ETHERTYPE_COMPUGRAPHIC = 32877 pkg syscall (openbsd-386-cgo), const ETHERTYPE_COUNTERPOINT = 32866 pkg syscall (openbsd-386-cgo), const ETHERTYPE_CRONUS = 32772 pkg syscall (openbsd-386-cgo), const ETHERTYPE_CRONUSVLN = 32771 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DCA = 4660 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DDE = 32891 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DEBNI = 43690 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECAM = 32840 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECCUST = 24582 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECDIAG = 24581 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECDNS = 32828 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECDTS = 32830 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECEXPER = 24576 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECLAST = 32833 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECLTM = 32831 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECMUMPS = 24585 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECNETBIOS = 32832 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DELTACON = 34526 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DIDDLE = 17185 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DLOG1 = 1632 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DLOG2 = 1633 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DN = 24579 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DOGFIGHT = 6537 pkg syscall (openbsd-386-cgo), const ETHERTYPE_DSMD = 32825 pkg syscall (openbsd-386-cgo), const ETHERTYPE_ECMA = 2051 pkg syscall (openbsd-386-cgo), const ETHERTYPE_ENCRYPT = 32829 pkg syscall (openbsd-386-cgo), const ETHERTYPE_ES = 32861 pkg syscall (openbsd-386-cgo), const ETHERTYPE_EXCELAN = 32784 pkg syscall (openbsd-386-cgo), const ETHERTYPE_EXPERDATA = 32841 pkg syscall (openbsd-386-cgo), const ETHERTYPE_FLIP = 33094 pkg syscall (openbsd-386-cgo), const ETHERTYPE_FLOWCONTROL = 34824 pkg syscall (openbsd-386-cgo), const ETHERTYPE_FRARP = 2056 pkg syscall (openbsd-386-cgo), const ETHERTYPE_GENDYN = 32872 pkg syscall (openbsd-386-cgo), const ETHERTYPE_HAYES = 33072 pkg syscall (openbsd-386-cgo), const ETHERTYPE_HIPPI_FP = 33152 pkg syscall (openbsd-386-cgo), const ETHERTYPE_HITACHI = 34848 pkg syscall (openbsd-386-cgo), const ETHERTYPE_HP = 32773 pkg syscall (openbsd-386-cgo), const ETHERTYPE_IEEEPUP = 2560 pkg syscall (openbsd-386-cgo), const ETHERTYPE_IEEEPUPAT = 2561 pkg syscall (openbsd-386-cgo), const ETHERTYPE_IMLBL = 19522 pkg syscall (openbsd-386-cgo), const ETHERTYPE_IMLBLDIAG = 16972 pkg syscall (openbsd-386-cgo), const ETHERTYPE_IP = 2048 pkg syscall (openbsd-386-cgo), const ETHERTYPE_IPAS = 34668 pkg syscall (openbsd-386-cgo), const ETHERTYPE_IPV6 = 34525 pkg syscall (openbsd-386-cgo), const ETHERTYPE_IPX = 33079 pkg syscall (openbsd-386-cgo), const ETHERTYPE_IPXNEW = 32823 pkg syscall (openbsd-386-cgo), const ETHERTYPE_KALPANA = 34178 pkg syscall (openbsd-386-cgo), const ETHERTYPE_LANBRIDGE = 32824 pkg syscall (openbsd-386-cgo), const ETHERTYPE_LANPROBE = 34952 pkg syscall (openbsd-386-cgo), const ETHERTYPE_LAT = 24580 pkg syscall (openbsd-386-cgo), const ETHERTYPE_LBACK = 36864 pkg syscall (openbsd-386-cgo), const ETHERTYPE_LITTLE = 32864 pkg syscall (openbsd-386-cgo), const ETHERTYPE_LLDP = 35020 pkg syscall (openbsd-386-cgo), const ETHERTYPE_LOGICRAFT = 33096 pkg syscall (openbsd-386-cgo), const ETHERTYPE_LOOPBACK = 36864 pkg syscall (openbsd-386-cgo), const ETHERTYPE_MATRA = 32890 pkg syscall (openbsd-386-cgo), const ETHERTYPE_MAX = 65535 pkg syscall (openbsd-386-cgo), const ETHERTYPE_MERIT = 32892 pkg syscall (openbsd-386-cgo), const ETHERTYPE_MICP = 34618 pkg syscall (openbsd-386-cgo), const ETHERTYPE_MOPDL = 24577 pkg syscall (openbsd-386-cgo), const ETHERTYPE_MOPRC = 24578 pkg syscall (openbsd-386-cgo), const ETHERTYPE_MOTOROLA = 33165 pkg syscall (openbsd-386-cgo), const ETHERTYPE_MPLS = 34887 pkg syscall (openbsd-386-cgo), const ETHERTYPE_MPLS_MCAST = 34888 pkg syscall (openbsd-386-cgo), const ETHERTYPE_MUMPS = 33087 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPCC = 15364 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPCLAIM = 15369 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPCLREQ = 15365 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPCLRSP = 15366 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPCREQ = 15362 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPCRSP = 15363 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPDG = 15367 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPDGB = 15368 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPDLTE = 15370 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPRAR = 15372 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPRAS = 15371 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPRST = 15373 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPSCD = 15361 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPVCD = 15360 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBS = 2050 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NCD = 33097 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NESTAR = 32774 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NETBEUI = 33169 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NOVELL = 33080 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NS = 1536 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NSAT = 1537 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NSCOMPAT = 2055 pkg syscall (openbsd-386-cgo), const ETHERTYPE_NTRAILER = 16 pkg syscall (openbsd-386-cgo), const ETHERTYPE_OS9 = 28679 pkg syscall (openbsd-386-cgo), const ETHERTYPE_OS9NET = 28681 pkg syscall (openbsd-386-cgo), const ETHERTYPE_PACER = 32966 pkg syscall (openbsd-386-cgo), const ETHERTYPE_PAE = 34958 pkg syscall (openbsd-386-cgo), const ETHERTYPE_PCS = 16962 pkg syscall (openbsd-386-cgo), const ETHERTYPE_PLANNING = 32836 pkg syscall (openbsd-386-cgo), const ETHERTYPE_PPP = 34827 pkg syscall (openbsd-386-cgo), const ETHERTYPE_PPPOE = 34916 pkg syscall (openbsd-386-cgo), const ETHERTYPE_PPPOEDISC = 34915 pkg syscall (openbsd-386-cgo), const ETHERTYPE_PRIMENTS = 28721 pkg syscall (openbsd-386-cgo), const ETHERTYPE_PUP = 512 pkg syscall (openbsd-386-cgo), const ETHERTYPE_PUPAT = 512 pkg syscall (openbsd-386-cgo), const ETHERTYPE_QINQ = 34984 pkg syscall (openbsd-386-cgo), const ETHERTYPE_RACAL = 28720 pkg syscall (openbsd-386-cgo), const ETHERTYPE_RATIONAL = 33104 pkg syscall (openbsd-386-cgo), const ETHERTYPE_RAWFR = 25945 pkg syscall (openbsd-386-cgo), const ETHERTYPE_RCL = 6549 pkg syscall (openbsd-386-cgo), const ETHERTYPE_RDP = 34617 pkg syscall (openbsd-386-cgo), const ETHERTYPE_RETIX = 33010 pkg syscall (openbsd-386-cgo), const ETHERTYPE_REVARP = 32821 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SCA = 24583 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SECTRA = 34523 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SECUREDATA = 34669 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SGITW = 33150 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SG_BOUNCE = 32790 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SG_DIAG = 32787 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SG_NETGAMES = 32788 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SG_RESV = 32789 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SIMNET = 21000 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SLOW = 34825 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SNA = 32981 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SNMP = 33100 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SONIX = 64245 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SPIDER = 32927 pkg syscall (openbsd-386-cgo), const ETHERTYPE_SPRITE = 1280 pkg syscall (openbsd-386-cgo), const ETHERTYPE_STP = 33153 pkg syscall (openbsd-386-cgo), const ETHERTYPE_TALARIS = 33067 pkg syscall (openbsd-386-cgo), const ETHERTYPE_TALARISMC = 34091 pkg syscall (openbsd-386-cgo), const ETHERTYPE_TCPCOMP = 34667 pkg syscall (openbsd-386-cgo), const ETHERTYPE_TCPSM = 36866 pkg syscall (openbsd-386-cgo), const ETHERTYPE_TEC = 33103 pkg syscall (openbsd-386-cgo), const ETHERTYPE_TIGAN = 32815 pkg syscall (openbsd-386-cgo), const ETHERTYPE_TRAIL = 4096 pkg syscall (openbsd-386-cgo), const ETHERTYPE_TRANSETHER = 25944 pkg syscall (openbsd-386-cgo), const ETHERTYPE_TYMSHARE = 32814 pkg syscall (openbsd-386-cgo), const ETHERTYPE_UBBST = 28677 pkg syscall (openbsd-386-cgo), const ETHERTYPE_UBDEBUG = 2304 pkg syscall (openbsd-386-cgo), const ETHERTYPE_UBDIAGLOOP = 28674 pkg syscall (openbsd-386-cgo), const ETHERTYPE_UBDL = 28672 pkg syscall (openbsd-386-cgo), const ETHERTYPE_UBNIU = 28673 pkg syscall (openbsd-386-cgo), const ETHERTYPE_UBNMC = 28675 pkg syscall (openbsd-386-cgo), const ETHERTYPE_VALID = 5632 pkg syscall (openbsd-386-cgo), const ETHERTYPE_VARIAN = 32989 pkg syscall (openbsd-386-cgo), const ETHERTYPE_VAXELN = 32827 pkg syscall (openbsd-386-cgo), const ETHERTYPE_VEECO = 32871 pkg syscall (openbsd-386-cgo), const ETHERTYPE_VEXP = 32859 pkg syscall (openbsd-386-cgo), const ETHERTYPE_VGLAB = 33073 pkg syscall (openbsd-386-cgo), const ETHERTYPE_VINES = 2989 pkg syscall (openbsd-386-cgo), const ETHERTYPE_VINESECHO = 2991 pkg syscall (openbsd-386-cgo), const ETHERTYPE_VINESLOOP = 2990 pkg syscall (openbsd-386-cgo), const ETHERTYPE_VITAL = 65280 pkg syscall (openbsd-386-cgo), const ETHERTYPE_VLAN = 33024 pkg syscall (openbsd-386-cgo), const ETHERTYPE_VLTLMAN = 32896 pkg syscall (openbsd-386-cgo), const ETHERTYPE_VPROD = 32860 pkg syscall (openbsd-386-cgo), const ETHERTYPE_VURESERVED = 33095 pkg syscall (openbsd-386-cgo), const ETHERTYPE_WATERLOO = 33072 pkg syscall (openbsd-386-cgo), const ETHERTYPE_WELLFLEET = 33027 pkg syscall (openbsd-386-cgo), const ETHERTYPE_X25 = 2053 pkg syscall (openbsd-386-cgo), const ETHERTYPE_X75 = 2049 pkg syscall (openbsd-386-cgo), const ETHERTYPE_XNSSM = 36865 pkg syscall (openbsd-386-cgo), const ETHERTYPE_XTP = 33149 pkg syscall (openbsd-386-cgo), const ETHER_ADDR_LEN = 6 pkg syscall (openbsd-386-cgo), const ETHER_ALIGN = 2 pkg syscall (openbsd-386-cgo), const ETHER_CRC_LEN = 4 pkg syscall (openbsd-386-cgo), const ETHER_CRC_POLY_BE = 79764918 pkg syscall (openbsd-386-cgo), const ETHER_CRC_POLY_LE = 3988292384 pkg syscall (openbsd-386-cgo), const ETHER_HDR_LEN = 14 pkg syscall (openbsd-386-cgo), const ETHER_MAX_DIX_LEN = 1536 pkg syscall (openbsd-386-cgo), const ETHER_MAX_LEN = 1518 pkg syscall (openbsd-386-cgo), const ETHER_MIN_LEN = 64 pkg syscall (openbsd-386-cgo), const ETHER_TYPE_LEN = 2 pkg syscall (openbsd-386-cgo), const ETHER_VLAN_ENCAP_LEN = 4 pkg syscall (openbsd-386-cgo), const ETIMEDOUT = 60 pkg syscall (openbsd-386-cgo), const ETOOMANYREFS = 59 pkg syscall (openbsd-386-cgo), const ETXTBSY = 26 pkg syscall (openbsd-386-cgo), const EUSERS = 68 pkg syscall (openbsd-386-cgo), const EVFILT_AIO = -3 pkg syscall (openbsd-386-cgo), const EVFILT_PROC = -5 pkg syscall (openbsd-386-cgo), const EVFILT_READ = -1 pkg syscall (openbsd-386-cgo), const EVFILT_SIGNAL = -6 pkg syscall (openbsd-386-cgo), const EVFILT_SYSCOUNT = 7 pkg syscall (openbsd-386-cgo), const EVFILT_TIMER = -7 pkg syscall (openbsd-386-cgo), const EVFILT_VNODE = -4 pkg syscall (openbsd-386-cgo), const EVFILT_WRITE = -2 pkg syscall (openbsd-386-cgo), const EV_ADD = 1 pkg syscall (openbsd-386-cgo), const EV_CLEAR = 32 pkg syscall (openbsd-386-cgo), const EV_DELETE = 2 pkg syscall (openbsd-386-cgo), const EV_DISABLE = 8 pkg syscall (openbsd-386-cgo), const EV_ENABLE = 4 pkg syscall (openbsd-386-cgo), const EV_EOF = 32768 pkg syscall (openbsd-386-cgo), const EV_ERROR = 16384 pkg syscall (openbsd-386-cgo), const EV_FLAG1 = 8192 pkg syscall (openbsd-386-cgo), const EV_ONESHOT = 16 pkg syscall (openbsd-386-cgo), const EV_SYSFLAGS = 61440 pkg syscall (openbsd-386-cgo), const EWOULDBLOCK = 35 pkg syscall (openbsd-386-cgo), const EXDEV = 18 pkg syscall (openbsd-386-cgo), const EXTA = 19200 pkg syscall (openbsd-386-cgo), const EXTB = 38400 pkg syscall (openbsd-386-cgo), const EXTPROC = 2048 pkg syscall (openbsd-386-cgo), const FD_CLOEXEC = 1 pkg syscall (openbsd-386-cgo), const FD_SETSIZE = 1024 pkg syscall (openbsd-386-cgo), const FLUSHO = 8388608 pkg syscall (openbsd-386-cgo), const F_DUPFD = 0 pkg syscall (openbsd-386-cgo), const F_DUPFD_CLOEXEC = 10 pkg syscall (openbsd-386-cgo), const F_GETFD = 1 pkg syscall (openbsd-386-cgo), const F_GETFL = 3 pkg syscall (openbsd-386-cgo), const F_GETLK = 7 pkg syscall (openbsd-386-cgo), const F_GETOWN = 5 pkg syscall (openbsd-386-cgo), const F_OK = 0 pkg syscall (openbsd-386-cgo), const F_RDLCK = 1 pkg syscall (openbsd-386-cgo), const F_SETFD = 2 pkg syscall (openbsd-386-cgo), const F_SETFL = 4 pkg syscall (openbsd-386-cgo), const F_SETLK = 8 pkg syscall (openbsd-386-cgo), const F_SETLKW = 9 pkg syscall (openbsd-386-cgo), const F_SETOWN = 6 pkg syscall (openbsd-386-cgo), const F_UNLCK = 2 pkg syscall (openbsd-386-cgo), const F_WRLCK = 3 pkg syscall (openbsd-386-cgo), const HUPCL = 16384 pkg syscall (openbsd-386-cgo), const ICANON = 256 pkg syscall (openbsd-386-cgo), const ICRNL = 256 pkg syscall (openbsd-386-cgo), const IEXTEN = 1024 pkg syscall (openbsd-386-cgo), const IFAN_ARRIVAL = 0 pkg syscall (openbsd-386-cgo), const IFAN_DEPARTURE = 1 pkg syscall (openbsd-386-cgo), const IFA_ROUTE = 1 pkg syscall (openbsd-386-cgo), const IFF_ALLMULTI = 512 pkg syscall (openbsd-386-cgo), const IFF_CANTCHANGE = 36434 pkg syscall (openbsd-386-cgo), const IFF_DEBUG = 4 pkg syscall (openbsd-386-cgo), const IFF_LINK0 = 4096 pkg syscall (openbsd-386-cgo), const IFF_LINK1 = 8192 pkg syscall (openbsd-386-cgo), const IFF_LINK2 = 16384 pkg syscall (openbsd-386-cgo), const IFF_LOOPBACK = 8 pkg syscall (openbsd-386-cgo), const IFF_MULTICAST = 32768 pkg syscall (openbsd-386-cgo), const IFF_NOARP = 128 pkg syscall (openbsd-386-cgo), const IFF_NOTRAILERS = 32 pkg syscall (openbsd-386-cgo), const IFF_OACTIVE = 1024 pkg syscall (openbsd-386-cgo), const IFF_POINTOPOINT = 16 pkg syscall (openbsd-386-cgo), const IFF_PROMISC = 256 pkg syscall (openbsd-386-cgo), const IFF_RUNNING = 64 pkg syscall (openbsd-386-cgo), const IFF_SIMPLEX = 2048 pkg syscall (openbsd-386-cgo), const IFNAMSIZ = 16 pkg syscall (openbsd-386-cgo), const IFT_1822 = 2 pkg syscall (openbsd-386-cgo), const IFT_A12MPPSWITCH = 130 pkg syscall (openbsd-386-cgo), const IFT_AAL2 = 187 pkg syscall (openbsd-386-cgo), const IFT_AAL5 = 49 pkg syscall (openbsd-386-cgo), const IFT_ADSL = 94 pkg syscall (openbsd-386-cgo), const IFT_AFLANE8023 = 59 pkg syscall (openbsd-386-cgo), const IFT_AFLANE8025 = 60 pkg syscall (openbsd-386-cgo), const IFT_ARAP = 88 pkg syscall (openbsd-386-cgo), const IFT_ARCNET = 35 pkg syscall (openbsd-386-cgo), const IFT_ARCNETPLUS = 36 pkg syscall (openbsd-386-cgo), const IFT_ASYNC = 84 pkg syscall (openbsd-386-cgo), const IFT_ATM = 37 pkg syscall (openbsd-386-cgo), const IFT_ATMDXI = 105 pkg syscall (openbsd-386-cgo), const IFT_ATMFUNI = 106 pkg syscall (openbsd-386-cgo), const IFT_ATMIMA = 107 pkg syscall (openbsd-386-cgo), const IFT_ATMLOGICAL = 80 pkg syscall (openbsd-386-cgo), const IFT_ATMRADIO = 189 pkg syscall (openbsd-386-cgo), const IFT_ATMSUBINTERFACE = 134 pkg syscall (openbsd-386-cgo), const IFT_ATMVCIENDPT = 194 pkg syscall (openbsd-386-cgo), const IFT_ATMVIRTUAL = 149 pkg syscall (openbsd-386-cgo), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (openbsd-386-cgo), const IFT_BLUETOOTH = 248 pkg syscall (openbsd-386-cgo), const IFT_BRIDGE = 209 pkg syscall (openbsd-386-cgo), const IFT_BSC = 83 pkg syscall (openbsd-386-cgo), const IFT_CARP = 247 pkg syscall (openbsd-386-cgo), const IFT_CCTEMUL = 61 pkg syscall (openbsd-386-cgo), const IFT_CEPT = 19 pkg syscall (openbsd-386-cgo), const IFT_CES = 133 pkg syscall (openbsd-386-cgo), const IFT_CHANNEL = 70 pkg syscall (openbsd-386-cgo), const IFT_CNR = 85 pkg syscall (openbsd-386-cgo), const IFT_COFFEE = 132 pkg syscall (openbsd-386-cgo), const IFT_COMPOSITELINK = 155 pkg syscall (openbsd-386-cgo), const IFT_DCN = 141 pkg syscall (openbsd-386-cgo), const IFT_DIGITALPOWERLINE = 138 pkg syscall (openbsd-386-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (openbsd-386-cgo), const IFT_DLSW = 74 pkg syscall (openbsd-386-cgo), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (openbsd-386-cgo), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (openbsd-386-cgo), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (openbsd-386-cgo), const IFT_DOCSCABLEUPSTREAMCHANNEL = 205 pkg syscall (openbsd-386-cgo), const IFT_DS0 = 81 pkg syscall (openbsd-386-cgo), const IFT_DS0BUNDLE = 82 pkg syscall (openbsd-386-cgo), const IFT_DS1FDL = 170 pkg syscall (openbsd-386-cgo), const IFT_DS3 = 30 pkg syscall (openbsd-386-cgo), const IFT_DTM = 140 pkg syscall (openbsd-386-cgo), const IFT_DUMMY = 241 pkg syscall (openbsd-386-cgo), const IFT_DVBASILN = 172 pkg syscall (openbsd-386-cgo), const IFT_DVBASIOUT = 173 pkg syscall (openbsd-386-cgo), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (openbsd-386-cgo), const IFT_DVBRCCMACLAYER = 146 pkg syscall (openbsd-386-cgo), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (openbsd-386-cgo), const IFT_ECONET = 206 pkg syscall (openbsd-386-cgo), const IFT_ENC = 244 pkg syscall (openbsd-386-cgo), const IFT_EON = 25 pkg syscall (openbsd-386-cgo), const IFT_EPLRS = 87 pkg syscall (openbsd-386-cgo), const IFT_ESCON = 73 pkg syscall (openbsd-386-cgo), const IFT_ETHER = 6 pkg syscall (openbsd-386-cgo), const IFT_FAITH = 243 pkg syscall (openbsd-386-cgo), const IFT_FAST = 125 pkg syscall (openbsd-386-cgo), const IFT_FASTETHER = 62 pkg syscall (openbsd-386-cgo), const IFT_FASTETHERFX = 69 pkg syscall (openbsd-386-cgo), const IFT_FDDI = 15 pkg syscall (openbsd-386-cgo), const IFT_FIBRECHANNEL = 56 pkg syscall (openbsd-386-cgo), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (openbsd-386-cgo), const IFT_FRAMERELAYMPI = 92 pkg syscall (openbsd-386-cgo), const IFT_FRDLCIENDPT = 193 pkg syscall (openbsd-386-cgo), const IFT_FRELAY = 32 pkg syscall (openbsd-386-cgo), const IFT_FRELAYDCE = 44 pkg syscall (openbsd-386-cgo), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (openbsd-386-cgo), const IFT_FRFORWARD = 158 pkg syscall (openbsd-386-cgo), const IFT_G703AT2MB = 67 pkg syscall (openbsd-386-cgo), const IFT_G703AT64K = 66 pkg syscall (openbsd-386-cgo), const IFT_GIF = 240 pkg syscall (openbsd-386-cgo), const IFT_GIGABITETHERNET = 117 pkg syscall (openbsd-386-cgo), const IFT_GR303IDT = 178 pkg syscall (openbsd-386-cgo), const IFT_GR303RDT = 177 pkg syscall (openbsd-386-cgo), const IFT_H323GATEKEEPER = 164 pkg syscall (openbsd-386-cgo), const IFT_H323PROXY = 165 pkg syscall (openbsd-386-cgo), const IFT_HDH1822 = 3 pkg syscall (openbsd-386-cgo), const IFT_HDLC = 118 pkg syscall (openbsd-386-cgo), const IFT_HDSL2 = 168 pkg syscall (openbsd-386-cgo), const IFT_HIPERLAN2 = 183 pkg syscall (openbsd-386-cgo), const IFT_HIPPI = 47 pkg syscall (openbsd-386-cgo), const IFT_HIPPIINTERFACE = 57 pkg syscall (openbsd-386-cgo), const IFT_HOSTPAD = 90 pkg syscall (openbsd-386-cgo), const IFT_HSSI = 46 pkg syscall (openbsd-386-cgo), const IFT_HY = 14 pkg syscall (openbsd-386-cgo), const IFT_IBM370PARCHAN = 72 pkg syscall (openbsd-386-cgo), const IFT_IDSL = 154 pkg syscall (openbsd-386-cgo), const IFT_IEEE1394 = 144 pkg syscall (openbsd-386-cgo), const IFT_IEEE80211 = 71 pkg syscall (openbsd-386-cgo), const IFT_IEEE80212 = 55 pkg syscall (openbsd-386-cgo), const IFT_IEEE8023ADLAG = 161 pkg syscall (openbsd-386-cgo), const IFT_IFGSN = 145 pkg syscall (openbsd-386-cgo), const IFT_IMT = 190 pkg syscall (openbsd-386-cgo), const IFT_INFINIBAND = 199 pkg syscall (openbsd-386-cgo), const IFT_INTERLEAVE = 124 pkg syscall (openbsd-386-cgo), const IFT_IP = 126 pkg syscall (openbsd-386-cgo), const IFT_IPFORWARD = 142 pkg syscall (openbsd-386-cgo), const IFT_IPOVERATM = 114 pkg syscall (openbsd-386-cgo), const IFT_IPOVERCDLC = 109 pkg syscall (openbsd-386-cgo), const IFT_IPOVERCLAW = 110 pkg syscall (openbsd-386-cgo), const IFT_IPSWITCH = 78 pkg syscall (openbsd-386-cgo), const IFT_ISDN = 63 pkg syscall (openbsd-386-cgo), const IFT_ISDNBASIC = 20 pkg syscall (openbsd-386-cgo), const IFT_ISDNPRIMARY = 21 pkg syscall (openbsd-386-cgo), const IFT_ISDNS = 75 pkg syscall (openbsd-386-cgo), const IFT_ISDNU = 76 pkg syscall (openbsd-386-cgo), const IFT_ISO88022LLC = 41 pkg syscall (openbsd-386-cgo), const IFT_ISO88023 = 7 pkg syscall (openbsd-386-cgo), const IFT_ISO88024 = 8 pkg syscall (openbsd-386-cgo), const IFT_ISO88025 = 9 pkg syscall (openbsd-386-cgo), const IFT_ISO88025CRFPINT = 98 pkg syscall (openbsd-386-cgo), const IFT_ISO88025DTR = 86 pkg syscall (openbsd-386-cgo), const IFT_ISO88025FIBER = 115 pkg syscall (openbsd-386-cgo), const IFT_ISO88026 = 10 pkg syscall (openbsd-386-cgo), const IFT_ISUP = 179 pkg syscall (openbsd-386-cgo), const IFT_L2VLAN = 135 pkg syscall (openbsd-386-cgo), const IFT_L3IPVLAN = 136 pkg syscall (openbsd-386-cgo), const IFT_L3IPXVLAN = 137 pkg syscall (openbsd-386-cgo), const IFT_LAPB = 16 pkg syscall (openbsd-386-cgo), const IFT_LAPD = 77 pkg syscall (openbsd-386-cgo), const IFT_LAPF = 119 pkg syscall (openbsd-386-cgo), const IFT_LINEGROUP = 210 pkg syscall (openbsd-386-cgo), const IFT_LOCALTALK = 42 pkg syscall (openbsd-386-cgo), const IFT_LOOP = 24 pkg syscall (openbsd-386-cgo), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (openbsd-386-cgo), const IFT_MFSIGLINK = 167 pkg syscall (openbsd-386-cgo), const IFT_MIOX25 = 38 pkg syscall (openbsd-386-cgo), const IFT_MODEM = 48 pkg syscall (openbsd-386-cgo), const IFT_MPC = 113 pkg syscall (openbsd-386-cgo), const IFT_MPLS = 166 pkg syscall (openbsd-386-cgo), const IFT_MPLSTUNNEL = 150 pkg syscall (openbsd-386-cgo), const IFT_MSDSL = 143 pkg syscall (openbsd-386-cgo), const IFT_MVL = 191 pkg syscall (openbsd-386-cgo), const IFT_MYRINET = 99 pkg syscall (openbsd-386-cgo), const IFT_NFAS = 175 pkg syscall (openbsd-386-cgo), const IFT_NSIP = 27 pkg syscall (openbsd-386-cgo), const IFT_OPTICALCHANNEL = 195 pkg syscall (openbsd-386-cgo), const IFT_OPTICALTRANSPORT = 196 pkg syscall (openbsd-386-cgo), const IFT_OTHER = 1 pkg syscall (openbsd-386-cgo), const IFT_P10 = 12 pkg syscall (openbsd-386-cgo), const IFT_P80 = 13 pkg syscall (openbsd-386-cgo), const IFT_PARA = 34 pkg syscall (openbsd-386-cgo), const IFT_PFLOG = 245 pkg syscall (openbsd-386-cgo), const IFT_PFLOW = 249 pkg syscall (openbsd-386-cgo), const IFT_PFSYNC = 246 pkg syscall (openbsd-386-cgo), const IFT_PLC = 174 pkg syscall (openbsd-386-cgo), const IFT_PON155 = 207 pkg syscall (openbsd-386-cgo), const IFT_PON622 = 208 pkg syscall (openbsd-386-cgo), const IFT_POS = 171 pkg syscall (openbsd-386-cgo), const IFT_PPP = 23 pkg syscall (openbsd-386-cgo), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (openbsd-386-cgo), const IFT_PROPATM = 197 pkg syscall (openbsd-386-cgo), const IFT_PROPBWAP2MP = 184 pkg syscall (openbsd-386-cgo), const IFT_PROPCNLS = 89 pkg syscall (openbsd-386-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (openbsd-386-cgo), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (openbsd-386-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (openbsd-386-cgo), const IFT_PROPMUX = 54 pkg syscall (openbsd-386-cgo), const IFT_PROPVIRTUAL = 53 pkg syscall (openbsd-386-cgo), const IFT_PROPWIRELESSP2P = 157 pkg syscall (openbsd-386-cgo), const IFT_PTPSERIAL = 22 pkg syscall (openbsd-386-cgo), const IFT_PVC = 242 pkg syscall (openbsd-386-cgo), const IFT_Q2931 = 201 pkg syscall (openbsd-386-cgo), const IFT_QLLC = 68 pkg syscall (openbsd-386-cgo), const IFT_RADIOMAC = 188 pkg syscall (openbsd-386-cgo), const IFT_RADSL = 95 pkg syscall (openbsd-386-cgo), const IFT_REACHDSL = 192 pkg syscall (openbsd-386-cgo), const IFT_RFC1483 = 159 pkg syscall (openbsd-386-cgo), const IFT_RS232 = 33 pkg syscall (openbsd-386-cgo), const IFT_RSRB = 79 pkg syscall (openbsd-386-cgo), const IFT_SDLC = 17 pkg syscall (openbsd-386-cgo), const IFT_SDSL = 96 pkg syscall (openbsd-386-cgo), const IFT_SHDSL = 169 pkg syscall (openbsd-386-cgo), const IFT_SIP = 31 pkg syscall (openbsd-386-cgo), const IFT_SIPSIG = 204 pkg syscall (openbsd-386-cgo), const IFT_SIPTG = 203 pkg syscall (openbsd-386-cgo), const IFT_SLIP = 28 pkg syscall (openbsd-386-cgo), const IFT_SMDSDXI = 43 pkg syscall (openbsd-386-cgo), const IFT_SMDSICIP = 52 pkg syscall (openbsd-386-cgo), const IFT_SONET = 39 pkg syscall (openbsd-386-cgo), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (openbsd-386-cgo), const IFT_SONETPATH = 50 pkg syscall (openbsd-386-cgo), const IFT_SONETVT = 51 pkg syscall (openbsd-386-cgo), const IFT_SRP = 151 pkg syscall (openbsd-386-cgo), const IFT_SS7SIGLINK = 156 pkg syscall (openbsd-386-cgo), const IFT_STACKTOSTACK = 111 pkg syscall (openbsd-386-cgo), const IFT_STARLAN = 11 pkg syscall (openbsd-386-cgo), const IFT_T1 = 18 pkg syscall (openbsd-386-cgo), const IFT_TDLC = 116 pkg syscall (openbsd-386-cgo), const IFT_TELINK = 200 pkg syscall (openbsd-386-cgo), const IFT_TERMPAD = 91 pkg syscall (openbsd-386-cgo), const IFT_TR008 = 176 pkg syscall (openbsd-386-cgo), const IFT_TRANSPHDLC = 123 pkg syscall (openbsd-386-cgo), const IFT_TUNNEL = 131 pkg syscall (openbsd-386-cgo), const IFT_ULTRA = 29 pkg syscall (openbsd-386-cgo), const IFT_USB = 160 pkg syscall (openbsd-386-cgo), const IFT_V11 = 64 pkg syscall (openbsd-386-cgo), const IFT_V35 = 45 pkg syscall (openbsd-386-cgo), const IFT_V36 = 65 pkg syscall (openbsd-386-cgo), const IFT_V37 = 120 pkg syscall (openbsd-386-cgo), const IFT_VDSL = 97 pkg syscall (openbsd-386-cgo), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (openbsd-386-cgo), const IFT_VIRTUALTG = 202 pkg syscall (openbsd-386-cgo), const IFT_VOICEDID = 213 pkg syscall (openbsd-386-cgo), const IFT_VOICEEM = 100 pkg syscall (openbsd-386-cgo), const IFT_VOICEEMFGD = 211 pkg syscall (openbsd-386-cgo), const IFT_VOICEENCAP = 103 pkg syscall (openbsd-386-cgo), const IFT_VOICEFGDEANA = 212 pkg syscall (openbsd-386-cgo), const IFT_VOICEFXO = 101 pkg syscall (openbsd-386-cgo), const IFT_VOICEFXS = 102 pkg syscall (openbsd-386-cgo), const IFT_VOICEOVERATM = 152 pkg syscall (openbsd-386-cgo), const IFT_VOICEOVERCABLE = 198 pkg syscall (openbsd-386-cgo), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (openbsd-386-cgo), const IFT_VOICEOVERIP = 104 pkg syscall (openbsd-386-cgo), const IFT_X213 = 93 pkg syscall (openbsd-386-cgo), const IFT_X25 = 5 pkg syscall (openbsd-386-cgo), const IFT_X25DDN = 4 pkg syscall (openbsd-386-cgo), const IFT_X25HUNTGROUP = 122 pkg syscall (openbsd-386-cgo), const IFT_X25MLP = 121 pkg syscall (openbsd-386-cgo), const IFT_X25PLE = 40 pkg syscall (openbsd-386-cgo), const IFT_XETHER = 26 pkg syscall (openbsd-386-cgo), const IGNBRK = 1 pkg syscall (openbsd-386-cgo), const IGNCR = 128 pkg syscall (openbsd-386-cgo), const IGNPAR = 4 pkg syscall (openbsd-386-cgo), const IMAXBEL = 8192 pkg syscall (openbsd-386-cgo), const INLCR = 64 pkg syscall (openbsd-386-cgo), const INPCK = 16 pkg syscall (openbsd-386-cgo), const IN_CLASSA_HOST = 16777215 pkg syscall (openbsd-386-cgo), const IN_CLASSA_MAX = 128 pkg syscall (openbsd-386-cgo), const IN_CLASSA_NET = 4278190080 pkg syscall (openbsd-386-cgo), const IN_CLASSA_NSHIFT = 24 pkg syscall (openbsd-386-cgo), const IN_CLASSB_HOST = 65535 pkg syscall (openbsd-386-cgo), const IN_CLASSB_MAX = 65536 pkg syscall (openbsd-386-cgo), const IN_CLASSB_NET = 4294901760 pkg syscall (openbsd-386-cgo), const IN_CLASSB_NSHIFT = 16 pkg syscall (openbsd-386-cgo), const IN_CLASSC_HOST = 255 pkg syscall (openbsd-386-cgo), const IN_CLASSC_NET = 4294967040 pkg syscall (openbsd-386-cgo), const IN_CLASSC_NSHIFT = 8 pkg syscall (openbsd-386-cgo), const IN_CLASSD_HOST = 268435455 pkg syscall (openbsd-386-cgo), const IN_CLASSD_NET = 4026531840 pkg syscall (openbsd-386-cgo), const IN_CLASSD_NSHIFT = 28 pkg syscall (openbsd-386-cgo), const IN_LOOPBACKNET = 127 pkg syscall (openbsd-386-cgo), const IN_RFC3021_HOST = 1 pkg syscall (openbsd-386-cgo), const IN_RFC3021_NET = 4294967294 pkg syscall (openbsd-386-cgo), const IN_RFC3021_NSHIFT = 31 pkg syscall (openbsd-386-cgo), const IPPROTO_AH = 51 pkg syscall (openbsd-386-cgo), const IPPROTO_CARP = 112 pkg syscall (openbsd-386-cgo), const IPPROTO_DIVERT = 258 pkg syscall (openbsd-386-cgo), const IPPROTO_DONE = 257 pkg syscall (openbsd-386-cgo), const IPPROTO_DSTOPTS = 60 pkg syscall (openbsd-386-cgo), const IPPROTO_EGP = 8 pkg syscall (openbsd-386-cgo), const IPPROTO_ENCAP = 98 pkg syscall (openbsd-386-cgo), const IPPROTO_EON = 80 pkg syscall (openbsd-386-cgo), const IPPROTO_ESP = 50 pkg syscall (openbsd-386-cgo), const IPPROTO_ETHERIP = 97 pkg syscall (openbsd-386-cgo), const IPPROTO_FRAGMENT = 44 pkg syscall (openbsd-386-cgo), const IPPROTO_GGP = 3 pkg syscall (openbsd-386-cgo), const IPPROTO_GRE = 47 pkg syscall (openbsd-386-cgo), const IPPROTO_HOPOPTS = 0 pkg syscall (openbsd-386-cgo), const IPPROTO_ICMP = 1 pkg syscall (openbsd-386-cgo), const IPPROTO_ICMPV6 = 58 pkg syscall (openbsd-386-cgo), const IPPROTO_IDP = 22 pkg syscall (openbsd-386-cgo), const IPPROTO_IGMP = 2 pkg syscall (openbsd-386-cgo), const IPPROTO_IPCOMP = 108 pkg syscall (openbsd-386-cgo), const IPPROTO_IPIP = 4 pkg syscall (openbsd-386-cgo), const IPPROTO_IPV4 = 4 pkg syscall (openbsd-386-cgo), const IPPROTO_MAX = 256 pkg syscall (openbsd-386-cgo), const IPPROTO_MAXID = 259 pkg syscall (openbsd-386-cgo), const IPPROTO_MOBILE = 55 pkg syscall (openbsd-386-cgo), const IPPROTO_MPLS = 137 pkg syscall (openbsd-386-cgo), const IPPROTO_NONE = 59 pkg syscall (openbsd-386-cgo), const IPPROTO_PFSYNC = 240 pkg syscall (openbsd-386-cgo), const IPPROTO_PIM = 103 pkg syscall (openbsd-386-cgo), const IPPROTO_PUP = 12 pkg syscall (openbsd-386-cgo), const IPPROTO_RAW = 255 pkg syscall (openbsd-386-cgo), const IPPROTO_ROUTING = 43 pkg syscall (openbsd-386-cgo), const IPPROTO_RSVP = 46 pkg syscall (openbsd-386-cgo), const IPPROTO_TP = 29 pkg syscall (openbsd-386-cgo), const IPV6_AUTH_LEVEL = 53 pkg syscall (openbsd-386-cgo), const IPV6_AUTOFLOWLABEL = 59 pkg syscall (openbsd-386-cgo), const IPV6_CHECKSUM = 26 pkg syscall (openbsd-386-cgo), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (openbsd-386-cgo), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (openbsd-386-cgo), const IPV6_DEFHLIM = 64 pkg syscall (openbsd-386-cgo), const IPV6_DONTFRAG = 62 pkg syscall (openbsd-386-cgo), const IPV6_DSTOPTS = 50 pkg syscall (openbsd-386-cgo), const IPV6_ESP_NETWORK_LEVEL = 55 pkg syscall (openbsd-386-cgo), const IPV6_ESP_TRANS_LEVEL = 54 pkg syscall (openbsd-386-cgo), const IPV6_FAITH = 29 pkg syscall (openbsd-386-cgo), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (openbsd-386-cgo), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (openbsd-386-cgo), const IPV6_FRAGTTL = 120 pkg syscall (openbsd-386-cgo), const IPV6_HLIMDEC = 1 pkg syscall (openbsd-386-cgo), const IPV6_HOPLIMIT = 47 pkg syscall (openbsd-386-cgo), const IPV6_HOPOPTS = 49 pkg syscall (openbsd-386-cgo), const IPV6_IPCOMP_LEVEL = 60 pkg syscall (openbsd-386-cgo), const IPV6_JOIN_GROUP = 12 pkg syscall (openbsd-386-cgo), const IPV6_LEAVE_GROUP = 13 pkg syscall (openbsd-386-cgo), const IPV6_MAXHLIM = 255 pkg syscall (openbsd-386-cgo), const IPV6_MAXPACKET = 65535 pkg syscall (openbsd-386-cgo), const IPV6_MMTU = 1280 pkg syscall (openbsd-386-cgo), const IPV6_MULTICAST_HOPS = 10 pkg syscall (openbsd-386-cgo), const IPV6_MULTICAST_IF = 9 pkg syscall (openbsd-386-cgo), const IPV6_MULTICAST_LOOP = 11 pkg syscall (openbsd-386-cgo), const IPV6_NEXTHOP = 48 pkg syscall (openbsd-386-cgo), const IPV6_OPTIONS = 1 pkg syscall (openbsd-386-cgo), const IPV6_PATHMTU = 44 pkg syscall (openbsd-386-cgo), const IPV6_PIPEX = 63 pkg syscall (openbsd-386-cgo), const IPV6_PKTINFO = 46 pkg syscall (openbsd-386-cgo), const IPV6_PORTRANGE = 14 pkg syscall (openbsd-386-cgo), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (openbsd-386-cgo), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (openbsd-386-cgo), const IPV6_PORTRANGE_LOW = 2 pkg syscall (openbsd-386-cgo), const IPV6_RECVDSTOPTS = 40 pkg syscall (openbsd-386-cgo), const IPV6_RECVHOPLIMIT = 37 pkg syscall (openbsd-386-cgo), const IPV6_RECVHOPOPTS = 39 pkg syscall (openbsd-386-cgo), const IPV6_RECVPATHMTU = 43 pkg syscall (openbsd-386-cgo), const IPV6_RECVPKTINFO = 36 pkg syscall (openbsd-386-cgo), const IPV6_RECVRTHDR = 38 pkg syscall (openbsd-386-cgo), const IPV6_RECVTCLASS = 57 pkg syscall (openbsd-386-cgo), const IPV6_RTABLE = 4129 pkg syscall (openbsd-386-cgo), const IPV6_RTHDR = 51 pkg syscall (openbsd-386-cgo), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (openbsd-386-cgo), const IPV6_RTHDR_LOOSE = 0 pkg syscall (openbsd-386-cgo), const IPV6_RTHDR_STRICT = 1 pkg syscall (openbsd-386-cgo), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (openbsd-386-cgo), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (openbsd-386-cgo), const IPV6_TCLASS = 61 pkg syscall (openbsd-386-cgo), const IPV6_UNICAST_HOPS = 4 pkg syscall (openbsd-386-cgo), const IPV6_USE_MIN_MTU = 42 pkg syscall (openbsd-386-cgo), const IPV6_V6ONLY = 27 pkg syscall (openbsd-386-cgo), const IPV6_VERSION = 96 pkg syscall (openbsd-386-cgo), const IPV6_VERSION_MASK = 240 pkg syscall (openbsd-386-cgo), const IP_ADD_MEMBERSHIP = 12 pkg syscall (openbsd-386-cgo), const IP_AUTH_LEVEL = 20 pkg syscall (openbsd-386-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (openbsd-386-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (openbsd-386-cgo), const IP_DF = 16384 pkg syscall (openbsd-386-cgo), const IP_DROP_MEMBERSHIP = 13 pkg syscall (openbsd-386-cgo), const IP_ESP_NETWORK_LEVEL = 22 pkg syscall (openbsd-386-cgo), const IP_ESP_TRANS_LEVEL = 21 pkg syscall (openbsd-386-cgo), const IP_HDRINCL = 2 pkg syscall (openbsd-386-cgo), const IP_IPCOMP_LEVEL = 29 pkg syscall (openbsd-386-cgo), const IP_IPSECFLOWINFO = 36 pkg syscall (openbsd-386-cgo), const IP_IPSEC_LOCAL_AUTH = 27 pkg syscall (openbsd-386-cgo), const IP_IPSEC_LOCAL_CRED = 25 pkg syscall (openbsd-386-cgo), const IP_IPSEC_LOCAL_ID = 23 pkg syscall (openbsd-386-cgo), const IP_IPSEC_REMOTE_AUTH = 28 pkg syscall (openbsd-386-cgo), const IP_IPSEC_REMOTE_CRED = 26 pkg syscall (openbsd-386-cgo), const IP_IPSEC_REMOTE_ID = 24 pkg syscall (openbsd-386-cgo), const IP_MAXPACKET = 65535 pkg syscall (openbsd-386-cgo), const IP_MAX_MEMBERSHIPS = 4095 pkg syscall (openbsd-386-cgo), const IP_MF = 8192 pkg syscall (openbsd-386-cgo), const IP_MINTTL = 32 pkg syscall (openbsd-386-cgo), const IP_MIN_MEMBERSHIPS = 15 pkg syscall (openbsd-386-cgo), const IP_MSS = 576 pkg syscall (openbsd-386-cgo), const IP_MULTICAST_IF = 9 pkg syscall (openbsd-386-cgo), const IP_MULTICAST_LOOP = 11 pkg syscall (openbsd-386-cgo), const IP_MULTICAST_TTL = 10 pkg syscall (openbsd-386-cgo), const IP_OFFMASK = 8191 pkg syscall (openbsd-386-cgo), const IP_OPTIONS = 1 pkg syscall (openbsd-386-cgo), const IP_PIPEX = 34 pkg syscall (openbsd-386-cgo), const IP_PORTRANGE = 19 pkg syscall (openbsd-386-cgo), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (openbsd-386-cgo), const IP_PORTRANGE_HIGH = 1 pkg syscall (openbsd-386-cgo), const IP_PORTRANGE_LOW = 2 pkg syscall (openbsd-386-cgo), const IP_RECVDSTADDR = 7 pkg syscall (openbsd-386-cgo), const IP_RECVDSTPORT = 33 pkg syscall (openbsd-386-cgo), const IP_RECVIF = 30 pkg syscall (openbsd-386-cgo), const IP_RECVOPTS = 5 pkg syscall (openbsd-386-cgo), const IP_RECVRETOPTS = 6 pkg syscall (openbsd-386-cgo), const IP_RECVRTABLE = 35 pkg syscall (openbsd-386-cgo), const IP_RECVTTL = 31 pkg syscall (openbsd-386-cgo), const IP_RETOPTS = 8 pkg syscall (openbsd-386-cgo), const IP_RF = 32768 pkg syscall (openbsd-386-cgo), const IP_RTABLE = 4129 pkg syscall (openbsd-386-cgo), const IP_TOS = 3 pkg syscall (openbsd-386-cgo), const IP_TTL = 4 pkg syscall (openbsd-386-cgo), const ISIG = 128 pkg syscall (openbsd-386-cgo), const ISTRIP = 32 pkg syscall (openbsd-386-cgo), const IXANY = 2048 pkg syscall (openbsd-386-cgo), const IXOFF = 1024 pkg syscall (openbsd-386-cgo), const IXON = 512 pkg syscall (openbsd-386-cgo), const ImplementsGetwd = false pkg syscall (openbsd-386-cgo), const LCNT_OVERLOAD_FLUSH = 6 pkg syscall (openbsd-386-cgo), const LOCK_EX = 2 pkg syscall (openbsd-386-cgo), const LOCK_NB = 4 pkg syscall (openbsd-386-cgo), const LOCK_SH = 1 pkg syscall (openbsd-386-cgo), const LOCK_UN = 8 pkg syscall (openbsd-386-cgo), const MSG_BCAST = 256 pkg syscall (openbsd-386-cgo), const MSG_CTRUNC = 32 pkg syscall (openbsd-386-cgo), const MSG_DONTROUTE = 4 pkg syscall (openbsd-386-cgo), const MSG_DONTWAIT = 128 pkg syscall (openbsd-386-cgo), const MSG_EOR = 8 pkg syscall (openbsd-386-cgo), const MSG_MCAST = 512 pkg syscall (openbsd-386-cgo), const MSG_NOSIGNAL = 1024 pkg syscall (openbsd-386-cgo), const MSG_OOB = 1 pkg syscall (openbsd-386-cgo), const MSG_PEEK = 2 pkg syscall (openbsd-386-cgo), const MSG_TRUNC = 16 pkg syscall (openbsd-386-cgo), const MSG_WAITALL = 64 pkg syscall (openbsd-386-cgo), const NAME_MAX = 255 pkg syscall (openbsd-386-cgo), const NET_RT_DUMP = 1 pkg syscall (openbsd-386-cgo), const NET_RT_FLAGS = 2 pkg syscall (openbsd-386-cgo), const NET_RT_IFLIST = 3 pkg syscall (openbsd-386-cgo), const NET_RT_MAXID = 6 pkg syscall (openbsd-386-cgo), const NET_RT_STATS = 4 pkg syscall (openbsd-386-cgo), const NET_RT_TABLE = 5 pkg syscall (openbsd-386-cgo), const NOFLSH = 2147483648 pkg syscall (openbsd-386-cgo), const NOTE_ATTRIB = 8 pkg syscall (openbsd-386-cgo), const NOTE_CHILD = 4 pkg syscall (openbsd-386-cgo), const NOTE_DELETE = 1 pkg syscall (openbsd-386-cgo), const NOTE_EOF = 2 pkg syscall (openbsd-386-cgo), const NOTE_EXEC = 536870912 pkg syscall (openbsd-386-cgo), const NOTE_EXIT = 2147483648 pkg syscall (openbsd-386-cgo), const NOTE_EXTEND = 4 pkg syscall (openbsd-386-cgo), const NOTE_FORK = 1073741824 pkg syscall (openbsd-386-cgo), const NOTE_LINK = 16 pkg syscall (openbsd-386-cgo), const NOTE_LOWAT = 1 pkg syscall (openbsd-386-cgo), const NOTE_PCTRLMASK = 4026531840 pkg syscall (openbsd-386-cgo), const NOTE_PDATAMASK = 1048575 pkg syscall (openbsd-386-cgo), const NOTE_RENAME = 32 pkg syscall (openbsd-386-cgo), const NOTE_REVOKE = 64 pkg syscall (openbsd-386-cgo), const NOTE_TRACK = 1 pkg syscall (openbsd-386-cgo), const NOTE_TRACKERR = 2 pkg syscall (openbsd-386-cgo), const NOTE_TRUNCATE = 128 pkg syscall (openbsd-386-cgo), const NOTE_WRITE = 2 pkg syscall (openbsd-386-cgo), const OCRNL = 16 pkg syscall (openbsd-386-cgo), const ONLCR = 2 pkg syscall (openbsd-386-cgo), const ONLRET = 128 pkg syscall (openbsd-386-cgo), const ONOCR = 64 pkg syscall (openbsd-386-cgo), const ONOEOT = 8 pkg syscall (openbsd-386-cgo), const OPOST = 1 pkg syscall (openbsd-386-cgo), const O_ACCMODE = 3 pkg syscall (openbsd-386-cgo), const O_APPEND = 8 pkg syscall (openbsd-386-cgo), const O_ASYNC = 64 pkg syscall (openbsd-386-cgo), const O_CLOEXEC = 65536 pkg syscall (openbsd-386-cgo), const O_CREAT = 512 pkg syscall (openbsd-386-cgo), const O_DIRECTORY = 131072 pkg syscall (openbsd-386-cgo), const O_DSYNC = 128 pkg syscall (openbsd-386-cgo), const O_EXCL = 2048 pkg syscall (openbsd-386-cgo), const O_EXLOCK = 32 pkg syscall (openbsd-386-cgo), const O_FSYNC = 128 pkg syscall (openbsd-386-cgo), const O_NDELAY = 4 pkg syscall (openbsd-386-cgo), const O_NOCTTY = 32768 pkg syscall (openbsd-386-cgo), const O_NOFOLLOW = 256 pkg syscall (openbsd-386-cgo), const O_NONBLOCK = 4 pkg syscall (openbsd-386-cgo), const O_RSYNC = 128 pkg syscall (openbsd-386-cgo), const O_SHLOCK = 16 pkg syscall (openbsd-386-cgo), const O_SYNC = 128 pkg syscall (openbsd-386-cgo), const O_TRUNC = 1024 pkg syscall (openbsd-386-cgo), const PARENB = 4096 pkg syscall (openbsd-386-cgo), const PARMRK = 8 pkg syscall (openbsd-386-cgo), const PARODD = 8192 pkg syscall (openbsd-386-cgo), const PENDIN = 536870912 pkg syscall (openbsd-386-cgo), const PF_FLUSH = 1 pkg syscall (openbsd-386-cgo), const PTRACE_CONT = 7 pkg syscall (openbsd-386-cgo), const PTRACE_KILL = 8 pkg syscall (openbsd-386-cgo), const PTRACE_TRACEME = 0 pkg syscall (openbsd-386-cgo), const PT_MASK = 4190208 pkg syscall (openbsd-386-cgo), const RLIMIT_CORE = 4 pkg syscall (openbsd-386-cgo), const RLIMIT_CPU = 0 pkg syscall (openbsd-386-cgo), const RLIMIT_DATA = 2 pkg syscall (openbsd-386-cgo), const RLIMIT_FSIZE = 1 pkg syscall (openbsd-386-cgo), const RLIMIT_NOFILE = 8 pkg syscall (openbsd-386-cgo), const RLIMIT_STACK = 3 pkg syscall (openbsd-386-cgo), const RLIM_INFINITY = 9223372036854775807 pkg syscall (openbsd-386-cgo), const RTAX_AUTHOR = 6 pkg syscall (openbsd-386-cgo), const RTAX_BRD = 7 pkg syscall (openbsd-386-cgo), const RTAX_DST = 0 pkg syscall (openbsd-386-cgo), const RTAX_GATEWAY = 1 pkg syscall (openbsd-386-cgo), const RTAX_GENMASK = 3 pkg syscall (openbsd-386-cgo), const RTAX_IFA = 5 pkg syscall (openbsd-386-cgo), const RTAX_IFP = 4 pkg syscall (openbsd-386-cgo), const RTAX_LABEL = 10 pkg syscall (openbsd-386-cgo), const RTAX_MAX = 11 pkg syscall (openbsd-386-cgo), const RTAX_NETMASK = 2 pkg syscall (openbsd-386-cgo), const RTAX_SRC = 8 pkg syscall (openbsd-386-cgo), const RTAX_SRCMASK = 9 pkg syscall (openbsd-386-cgo), const RTA_AUTHOR = 64 pkg syscall (openbsd-386-cgo), const RTA_BRD = 128 pkg syscall (openbsd-386-cgo), const RTA_DST = 1 pkg syscall (openbsd-386-cgo), const RTA_GATEWAY = 2 pkg syscall (openbsd-386-cgo), const RTA_GENMASK = 8 pkg syscall (openbsd-386-cgo), const RTA_IFA = 32 pkg syscall (openbsd-386-cgo), const RTA_IFP = 16 pkg syscall (openbsd-386-cgo), const RTA_LABEL = 1024 pkg syscall (openbsd-386-cgo), const RTA_NETMASK = 4 pkg syscall (openbsd-386-cgo), const RTA_SRC = 256 pkg syscall (openbsd-386-cgo), const RTA_SRCMASK = 512 pkg syscall (openbsd-386-cgo), const RTF_ANNOUNCE = 16384 pkg syscall (openbsd-386-cgo), const RTF_BLACKHOLE = 4096 pkg syscall (openbsd-386-cgo), const RTF_CLONED = 65536 pkg syscall (openbsd-386-cgo), const RTF_CLONING = 256 pkg syscall (openbsd-386-cgo), const RTF_DONE = 64 pkg syscall (openbsd-386-cgo), const RTF_DYNAMIC = 16 pkg syscall (openbsd-386-cgo), const RTF_FMASK = 63496 pkg syscall (openbsd-386-cgo), const RTF_GATEWAY = 2 pkg syscall (openbsd-386-cgo), const RTF_HOST = 4 pkg syscall (openbsd-386-cgo), const RTF_LLINFO = 1024 pkg syscall (openbsd-386-cgo), const RTF_MASK = 128 pkg syscall (openbsd-386-cgo), const RTF_MODIFIED = 32 pkg syscall (openbsd-386-cgo), const RTF_MPATH = 262144 pkg syscall (openbsd-386-cgo), const RTF_MPLS = 1048576 pkg syscall (openbsd-386-cgo), const RTF_PERMANENT_ARP = 8192 pkg syscall (openbsd-386-cgo), const RTF_PROTO1 = 32768 pkg syscall (openbsd-386-cgo), const RTF_PROTO2 = 16384 pkg syscall (openbsd-386-cgo), const RTF_PROTO3 = 8192 pkg syscall (openbsd-386-cgo), const RTF_REJECT = 8 pkg syscall (openbsd-386-cgo), const RTF_SOURCE = 131072 pkg syscall (openbsd-386-cgo), const RTF_STATIC = 2048 pkg syscall (openbsd-386-cgo), const RTF_TUNNEL = 1048576 pkg syscall (openbsd-386-cgo), const RTF_UP = 1 pkg syscall (openbsd-386-cgo), const RTF_USETRAILERS = 32768 pkg syscall (openbsd-386-cgo), const RTF_XRESOLVE = 512 pkg syscall (openbsd-386-cgo), const RTM_ADD = 1 pkg syscall (openbsd-386-cgo), const RTM_CHANGE = 3 pkg syscall (openbsd-386-cgo), const RTM_DELADDR = 13 pkg syscall (openbsd-386-cgo), const RTM_DELETE = 2 pkg syscall (openbsd-386-cgo), const RTM_DESYNC = 16 pkg syscall (openbsd-386-cgo), const RTM_GET = 4 pkg syscall (openbsd-386-cgo), const RTM_IFANNOUNCE = 15 pkg syscall (openbsd-386-cgo), const RTM_IFINFO = 14 pkg syscall (openbsd-386-cgo), const RTM_LOCK = 8 pkg syscall (openbsd-386-cgo), const RTM_LOSING = 5 pkg syscall (openbsd-386-cgo), const RTM_MAXSIZE = 2048 pkg syscall (openbsd-386-cgo), const RTM_MISS = 7 pkg syscall (openbsd-386-cgo), const RTM_NEWADDR = 12 pkg syscall (openbsd-386-cgo), const RTM_REDIRECT = 6 pkg syscall (openbsd-386-cgo), const RTM_RESOLVE = 11 pkg syscall (openbsd-386-cgo), const RTM_RTTUNIT = 1000000 pkg syscall (openbsd-386-cgo), const RTM_VERSION = 4 pkg syscall (openbsd-386-cgo), const RTV_EXPIRE = 4 pkg syscall (openbsd-386-cgo), const RTV_HOPCOUNT = 2 pkg syscall (openbsd-386-cgo), const RTV_MTU = 1 pkg syscall (openbsd-386-cgo), const RTV_RPIPE = 8 pkg syscall (openbsd-386-cgo), const RTV_RTT = 64 pkg syscall (openbsd-386-cgo), const RTV_RTTVAR = 128 pkg syscall (openbsd-386-cgo), const RTV_SPIPE = 16 pkg syscall (openbsd-386-cgo), const RTV_SSTHRESH = 32 pkg syscall (openbsd-386-cgo), const RT_TABLEID_MAX = 255 pkg syscall (openbsd-386-cgo), const RUSAGE_CHILDREN = -1 pkg syscall (openbsd-386-cgo), const RUSAGE_SELF = 0 pkg syscall (openbsd-386-cgo), const RUSAGE_THREAD = 1 pkg syscall (openbsd-386-cgo), const SCM_RIGHTS = 1 pkg syscall (openbsd-386-cgo), const SCM_TIMESTAMP = 4 pkg syscall (openbsd-386-cgo), const SIGBUS = 10 pkg syscall (openbsd-386-cgo), const SIGCHLD = 20 pkg syscall (openbsd-386-cgo), const SIGCONT = 19 pkg syscall (openbsd-386-cgo), const SIGEMT = 7 pkg syscall (openbsd-386-cgo), const SIGINFO = 29 pkg syscall (openbsd-386-cgo), const SIGIO = 23 pkg syscall (openbsd-386-cgo), const SIGIOT = 6 pkg syscall (openbsd-386-cgo), const SIGPROF = 27 pkg syscall (openbsd-386-cgo), const SIGSTOP = 17 pkg syscall (openbsd-386-cgo), const SIGSYS = 12 pkg syscall (openbsd-386-cgo), const SIGTHR = 32 pkg syscall (openbsd-386-cgo), const SIGTSTP = 18 pkg syscall (openbsd-386-cgo), const SIGTTIN = 21 pkg syscall (openbsd-386-cgo), const SIGTTOU = 22 pkg syscall (openbsd-386-cgo), const SIGURG = 16 pkg syscall (openbsd-386-cgo), const SIGUSR1 = 30 pkg syscall (openbsd-386-cgo), const SIGUSR2 = 31 pkg syscall (openbsd-386-cgo), const SIGVTALRM = 26 pkg syscall (openbsd-386-cgo), const SIGWINCH = 28 pkg syscall (openbsd-386-cgo), const SIGXCPU = 24 pkg syscall (openbsd-386-cgo), const SIGXFSZ = 25 pkg syscall (openbsd-386-cgo), const SIOCADDMULTI = 2149607729 pkg syscall (openbsd-386-cgo), const SIOCAIFADDR = 2151704858 pkg syscall (openbsd-386-cgo), const SIOCAIFGROUP = 2149869959 pkg syscall (openbsd-386-cgo), const SIOCALIFADDR = 2182637852 pkg syscall (openbsd-386-cgo), const SIOCATMARK = 1074033415 pkg syscall (openbsd-386-cgo), const SIOCBRDGADD = 2153015612 pkg syscall (openbsd-386-cgo), const SIOCBRDGADDS = 2153015617 pkg syscall (openbsd-386-cgo), const SIOCBRDGARL = 2154719565 pkg syscall (openbsd-386-cgo), const SIOCBRDGDADDR = 2150132039 pkg syscall (openbsd-386-cgo), const SIOCBRDGDEL = 2153015613 pkg syscall (openbsd-386-cgo), const SIOCBRDGDELS = 2153015618 pkg syscall (openbsd-386-cgo), const SIOCBRDGFLUSH = 2153015624 pkg syscall (openbsd-386-cgo), const SIOCBRDGFRL = 2154719566 pkg syscall (openbsd-386-cgo), const SIOCBRDGGCACHE = 3222563137 pkg syscall (openbsd-386-cgo), const SIOCBRDGGFD = 3222563154 pkg syscall (openbsd-386-cgo), const SIOCBRDGGHT = 3222563153 pkg syscall (openbsd-386-cgo), const SIOCBRDGGIFFLGS = 3226757438 pkg syscall (openbsd-386-cgo), const SIOCBRDGGMA = 3222563155 pkg syscall (openbsd-386-cgo), const SIOCBRDGGPARAM = 3224922456 pkg syscall (openbsd-386-cgo), const SIOCBRDGGPRI = 3222563152 pkg syscall (openbsd-386-cgo), const SIOCBRDGGRL = 3223873871 pkg syscall (openbsd-386-cgo), const SIOCBRDGGSIFS = 3226757436 pkg syscall (openbsd-386-cgo), const SIOCBRDGGTO = 3222563142 pkg syscall (openbsd-386-cgo), const SIOCBRDGIFS = 3226757442 pkg syscall (openbsd-386-cgo), const SIOCBRDGRTS = 3222825283 pkg syscall (openbsd-386-cgo), const SIOCBRDGSADDR = 3223873860 pkg syscall (openbsd-386-cgo), const SIOCBRDGSCACHE = 2148821312 pkg syscall (openbsd-386-cgo), const SIOCBRDGSFD = 2148821330 pkg syscall (openbsd-386-cgo), const SIOCBRDGSHT = 2148821329 pkg syscall (openbsd-386-cgo), const SIOCBRDGSIFCOST = 2153015637 pkg syscall (openbsd-386-cgo), const SIOCBRDGSIFFLGS = 2153015615 pkg syscall (openbsd-386-cgo), const SIOCBRDGSIFPRIO = 2153015636 pkg syscall (openbsd-386-cgo), const SIOCBRDGSMA = 2148821331 pkg syscall (openbsd-386-cgo), const SIOCBRDGSPRI = 2148821328 pkg syscall (openbsd-386-cgo), const SIOCBRDGSPROTO = 2148821338 pkg syscall (openbsd-386-cgo), const SIOCBRDGSTO = 2148821317 pkg syscall (openbsd-386-cgo), const SIOCBRDGSTXHC = 2148821337 pkg syscall (openbsd-386-cgo), const SIOCDELMULTI = 2149607730 pkg syscall (openbsd-386-cgo), const SIOCDIFADDR = 2149607705 pkg syscall (openbsd-386-cgo), const SIOCDIFGROUP = 2149869961 pkg syscall (openbsd-386-cgo), const SIOCDIFPHYADDR = 2149607753 pkg syscall (openbsd-386-cgo), const SIOCDLIFADDR = 2182637854 pkg syscall (openbsd-386-cgo), const SIOCGETKALIVE = 3222825380 pkg syscall (openbsd-386-cgo), const SIOCGETLABEL = 2149607834 pkg syscall (openbsd-386-cgo), const SIOCGETPFLOW = 3223349758 pkg syscall (openbsd-386-cgo), const SIOCGETPFSYNC = 3223349752 pkg syscall (openbsd-386-cgo), const SIOCGETSGCNT = 3222566196 pkg syscall (openbsd-386-cgo), const SIOCGETVIFCNT = 3222566195 pkg syscall (openbsd-386-cgo), const SIOCGHIWAT = 1074033409 pkg syscall (openbsd-386-cgo), const SIOCGIFADDR = 3223349537 pkg syscall (openbsd-386-cgo), const SIOCGIFASYNCMAP = 3223349628 pkg syscall (openbsd-386-cgo), const SIOCGIFBRDADDR = 3223349539 pkg syscall (openbsd-386-cgo), const SIOCGIFCONF = 3221776676 pkg syscall (openbsd-386-cgo), const SIOCGIFDATA = 3223349531 pkg syscall (openbsd-386-cgo), const SIOCGIFDESCR = 3223349633 pkg syscall (openbsd-386-cgo), const SIOCGIFDSTADDR = 3223349538 pkg syscall (openbsd-386-cgo), const SIOCGIFFLAGS = 3223349521 pkg syscall (openbsd-386-cgo), const SIOCGIFGATTR = 3223611787 pkg syscall (openbsd-386-cgo), const SIOCGIFGENERIC = 3223349562 pkg syscall (openbsd-386-cgo), const SIOCGIFGMEMB = 3223611786 pkg syscall (openbsd-386-cgo), const SIOCGIFGROUP = 3223611784 pkg syscall (openbsd-386-cgo), const SIOCGIFMEDIA = 3223873846 pkg syscall (openbsd-386-cgo), const SIOCGIFMETRIC = 3223349527 pkg syscall (openbsd-386-cgo), const SIOCGIFMTU = 3223349630 pkg syscall (openbsd-386-cgo), const SIOCGIFNETMASK = 3223349541 pkg syscall (openbsd-386-cgo), const SIOCGIFPDSTADDR = 3223349576 pkg syscall (openbsd-386-cgo), const SIOCGIFPRIORITY = 3223349660 pkg syscall (openbsd-386-cgo), const SIOCGIFPSRCADDR = 3223349575 pkg syscall (openbsd-386-cgo), const SIOCGIFRDOMAIN = 3223349664 pkg syscall (openbsd-386-cgo), const SIOCGIFRTLABEL = 3223349635 pkg syscall (openbsd-386-cgo), const SIOCGIFTIMESLOT = 3223349638 pkg syscall (openbsd-386-cgo), const SIOCGIFXFLAGS = 3223349662 pkg syscall (openbsd-386-cgo), const SIOCGLIFADDR = 3256379677 pkg syscall (openbsd-386-cgo), const SIOCGLIFPHYADDR = 3256379723 pkg syscall (openbsd-386-cgo), const SIOCGLIFPHYRTABLE = 3223349666 pkg syscall (openbsd-386-cgo), const SIOCGLOWAT = 1074033411 pkg syscall (openbsd-386-cgo), const SIOCGPGRP = 1074033417 pkg syscall (openbsd-386-cgo), const SIOCGVH = 3223349750 pkg syscall (openbsd-386-cgo), const SIOCIFCREATE = 2149607802 pkg syscall (openbsd-386-cgo), const SIOCIFDESTROY = 2149607801 pkg syscall (openbsd-386-cgo), const SIOCIFGCLONERS = 3222038904 pkg syscall (openbsd-386-cgo), const SIOCSETKALIVE = 2149083555 pkg syscall (openbsd-386-cgo), const SIOCSETLABEL = 2149607833 pkg syscall (openbsd-386-cgo), const SIOCSETPFLOW = 2149607933 pkg syscall (openbsd-386-cgo), const SIOCSETPFSYNC = 2149607927 pkg syscall (openbsd-386-cgo), const SIOCSHIWAT = 2147775232 pkg syscall (openbsd-386-cgo), const SIOCSIFADDR = 2149607692 pkg syscall (openbsd-386-cgo), const SIOCSIFASYNCMAP = 2149607805 pkg syscall (openbsd-386-cgo), const SIOCSIFBRDADDR = 2149607699 pkg syscall (openbsd-386-cgo), const SIOCSIFDESCR = 2149607808 pkg syscall (openbsd-386-cgo), const SIOCSIFDSTADDR = 2149607694 pkg syscall (openbsd-386-cgo), const SIOCSIFFLAGS = 2149607696 pkg syscall (openbsd-386-cgo), const SIOCSIFGATTR = 2149869964 pkg syscall (openbsd-386-cgo), const SIOCSIFGENERIC = 2149607737 pkg syscall (openbsd-386-cgo), const SIOCSIFLLADDR = 2149607711 pkg syscall (openbsd-386-cgo), const SIOCSIFMEDIA = 3223349557 pkg syscall (openbsd-386-cgo), const SIOCSIFMETRIC = 2149607704 pkg syscall (openbsd-386-cgo), const SIOCSIFMTU = 2149607807 pkg syscall (openbsd-386-cgo), const SIOCSIFNETMASK = 2149607702 pkg syscall (openbsd-386-cgo), const SIOCSIFPHYADDR = 2151704902 pkg syscall (openbsd-386-cgo), const SIOCSIFPRIORITY = 2149607835 pkg syscall (openbsd-386-cgo), const SIOCSIFRDOMAIN = 2149607839 pkg syscall (openbsd-386-cgo), const SIOCSIFRTLABEL = 2149607810 pkg syscall (openbsd-386-cgo), const SIOCSIFTIMESLOT = 2149607813 pkg syscall (openbsd-386-cgo), const SIOCSIFXFLAGS = 2149607837 pkg syscall (openbsd-386-cgo), const SIOCSLIFPHYADDR = 2182637898 pkg syscall (openbsd-386-cgo), const SIOCSLIFPHYRTABLE = 2149607841 pkg syscall (openbsd-386-cgo), const SIOCSLOWAT = 2147775234 pkg syscall (openbsd-386-cgo), const SIOCSPGRP = 2147775240 pkg syscall (openbsd-386-cgo), const SIOCSVH = 3223349749 pkg syscall (openbsd-386-cgo), const SOCK_RDM = 4 pkg syscall (openbsd-386-cgo), const SOL_SOCKET = 65535 pkg syscall (openbsd-386-cgo), const SOMAXCONN = 128 pkg syscall (openbsd-386-cgo), const SO_ACCEPTCONN = 2 pkg syscall (openbsd-386-cgo), const SO_BINDANY = 4096 pkg syscall (openbsd-386-cgo), const SO_BROADCAST = 32 pkg syscall (openbsd-386-cgo), const SO_DEBUG = 1 pkg syscall (openbsd-386-cgo), const SO_DONTROUTE = 16 pkg syscall (openbsd-386-cgo), const SO_ERROR = 4103 pkg syscall (openbsd-386-cgo), const SO_KEEPALIVE = 8 pkg syscall (openbsd-386-cgo), const SO_LINGER = 128 pkg syscall (openbsd-386-cgo), const SO_NETPROC = 4128 pkg syscall (openbsd-386-cgo), const SO_OOBINLINE = 256 pkg syscall (openbsd-386-cgo), const SO_PEERCRED = 4130 pkg syscall (openbsd-386-cgo), const SO_RCVBUF = 4098 pkg syscall (openbsd-386-cgo), const SO_RCVLOWAT = 4100 pkg syscall (openbsd-386-cgo), const SO_RCVTIMEO = 4102 pkg syscall (openbsd-386-cgo), const SO_REUSEADDR = 4 pkg syscall (openbsd-386-cgo), const SO_REUSEPORT = 512 pkg syscall (openbsd-386-cgo), const SO_RTABLE = 4129 pkg syscall (openbsd-386-cgo), const SO_SNDBUF = 4097 pkg syscall (openbsd-386-cgo), const SO_SNDLOWAT = 4099 pkg syscall (openbsd-386-cgo), const SO_SNDTIMEO = 4101 pkg syscall (openbsd-386-cgo), const SO_SPLICE = 4131 pkg syscall (openbsd-386-cgo), const SO_TIMESTAMP = 2048 pkg syscall (openbsd-386-cgo), const SO_TYPE = 4104 pkg syscall (openbsd-386-cgo), const SO_USELOOPBACK = 64 pkg syscall (openbsd-386-cgo), const SYS_ACCEPT = 30 pkg syscall (openbsd-386-cgo), const SYS_ACCESS = 33 pkg syscall (openbsd-386-cgo), const SYS_ACCT = 51 pkg syscall (openbsd-386-cgo), const SYS_ADJFREQ = 305 pkg syscall (openbsd-386-cgo), const SYS_ADJTIME = 140 pkg syscall (openbsd-386-cgo), const SYS_BIND = 104 pkg syscall (openbsd-386-cgo), const SYS_CHDIR = 12 pkg syscall (openbsd-386-cgo), const SYS_CHFLAGS = 34 pkg syscall (openbsd-386-cgo), const SYS_CHMOD = 15 pkg syscall (openbsd-386-cgo), const SYS_CHOWN = 16 pkg syscall (openbsd-386-cgo), const SYS_CHROOT = 61 pkg syscall (openbsd-386-cgo), const SYS_CLOCK_GETRES = 234 pkg syscall (openbsd-386-cgo), const SYS_CLOCK_GETTIME = 232 pkg syscall (openbsd-386-cgo), const SYS_CLOCK_SETTIME = 233 pkg syscall (openbsd-386-cgo), const SYS_CLOSE = 6 pkg syscall (openbsd-386-cgo), const SYS_CLOSEFROM = 287 pkg syscall (openbsd-386-cgo), const SYS_CONNECT = 98 pkg syscall (openbsd-386-cgo), const SYS_DUP = 41 pkg syscall (openbsd-386-cgo), const SYS_DUP2 = 90 pkg syscall (openbsd-386-cgo), const SYS_EXECVE = 59 pkg syscall (openbsd-386-cgo), const SYS_EXIT = 1 pkg syscall (openbsd-386-cgo), const SYS_FACCESSAT = 313 pkg syscall (openbsd-386-cgo), const SYS_FCHDIR = 13 pkg syscall (openbsd-386-cgo), const SYS_FCHFLAGS = 35 pkg syscall (openbsd-386-cgo), const SYS_FCHMOD = 124 pkg syscall (openbsd-386-cgo), const SYS_FCHMODAT = 314 pkg syscall (openbsd-386-cgo), const SYS_FCHOWN = 123 pkg syscall (openbsd-386-cgo), const SYS_FCHOWNAT = 315 pkg syscall (openbsd-386-cgo), const SYS_FCNTL = 92 pkg syscall (openbsd-386-cgo), const SYS_FHOPEN = 264 pkg syscall (openbsd-386-cgo), const SYS_FHSTAT = 294 pkg syscall (openbsd-386-cgo), const SYS_FHSTATFS = 309 pkg syscall (openbsd-386-cgo), const SYS_FLOCK = 131 pkg syscall (openbsd-386-cgo), const SYS_FORK = 2 pkg syscall (openbsd-386-cgo), const SYS_FPATHCONF = 192 pkg syscall (openbsd-386-cgo), const SYS_FSTAT = 292 pkg syscall (openbsd-386-cgo), const SYS_FSTATAT = 316 pkg syscall (openbsd-386-cgo), const SYS_FSTATFS = 308 pkg syscall (openbsd-386-cgo), const SYS_FSYNC = 95 pkg syscall (openbsd-386-cgo), const SYS_FTRUNCATE = 201 pkg syscall (openbsd-386-cgo), const SYS_FUTIMENS = 327 pkg syscall (openbsd-386-cgo), const SYS_FUTIMES = 206 pkg syscall (openbsd-386-cgo), const SYS_GETDIRENTRIES = 312 pkg syscall (openbsd-386-cgo), const SYS_GETDTABLECOUNT = 18 pkg syscall (openbsd-386-cgo), const SYS_GETEGID = 43 pkg syscall (openbsd-386-cgo), const SYS_GETEUID = 25 pkg syscall (openbsd-386-cgo), const SYS_GETFH = 161 pkg syscall (openbsd-386-cgo), const SYS_GETFSSTAT = 306 pkg syscall (openbsd-386-cgo), const SYS_GETGID = 47 pkg syscall (openbsd-386-cgo), const SYS_GETGROUPS = 79 pkg syscall (openbsd-386-cgo), const SYS_GETITIMER = 86 pkg syscall (openbsd-386-cgo), const SYS_GETLOGIN = 49 pkg syscall (openbsd-386-cgo), const SYS_GETPEERNAME = 31 pkg syscall (openbsd-386-cgo), const SYS_GETPGID = 207 pkg syscall (openbsd-386-cgo), const SYS_GETPGRP = 81 pkg syscall (openbsd-386-cgo), const SYS_GETPID = 20 pkg syscall (openbsd-386-cgo), const SYS_GETPPID = 39 pkg syscall (openbsd-386-cgo), const SYS_GETPRIORITY = 100 pkg syscall (openbsd-386-cgo), const SYS_GETRESGID = 283 pkg syscall (openbsd-386-cgo), const SYS_GETRESUID = 281 pkg syscall (openbsd-386-cgo), const SYS_GETRLIMIT = 194 pkg syscall (openbsd-386-cgo), const SYS_GETRTABLE = 311 pkg syscall (openbsd-386-cgo), const SYS_GETRUSAGE = 117 pkg syscall (openbsd-386-cgo), const SYS_GETSID = 255 pkg syscall (openbsd-386-cgo), const SYS_GETSOCKNAME = 32 pkg syscall (openbsd-386-cgo), const SYS_GETSOCKOPT = 118 pkg syscall (openbsd-386-cgo), const SYS_GETTHRID = 299 pkg syscall (openbsd-386-cgo), const SYS_GETTIMEOFDAY = 116 pkg syscall (openbsd-386-cgo), const SYS_GETUID = 24 pkg syscall (openbsd-386-cgo), const SYS_IOCTL = 54 pkg syscall (openbsd-386-cgo), const SYS_ISSETUGID = 253 pkg syscall (openbsd-386-cgo), const SYS_KEVENT = 270 pkg syscall (openbsd-386-cgo), const SYS_KILL = 37 pkg syscall (openbsd-386-cgo), const SYS_KQUEUE = 269 pkg syscall (openbsd-386-cgo), const SYS_KTRACE = 45 pkg syscall (openbsd-386-cgo), const SYS_LCHOWN = 254 pkg syscall (openbsd-386-cgo), const SYS_LINK = 9 pkg syscall (openbsd-386-cgo), const SYS_LINKAT = 317 pkg syscall (openbsd-386-cgo), const SYS_LISTEN = 106 pkg syscall (openbsd-386-cgo), const SYS_LSEEK = 199 pkg syscall (openbsd-386-cgo), const SYS_LSTAT = 293 pkg syscall (openbsd-386-cgo), const SYS_MADVISE = 75 pkg syscall (openbsd-386-cgo), const SYS_MINCORE = 78 pkg syscall (openbsd-386-cgo), const SYS_MINHERIT = 250 pkg syscall (openbsd-386-cgo), const SYS_MKDIR = 136 pkg syscall (openbsd-386-cgo), const SYS_MKDIRAT = 318 pkg syscall (openbsd-386-cgo), const SYS_MKFIFO = 132 pkg syscall (openbsd-386-cgo), const SYS_MKFIFOAT = 319 pkg syscall (openbsd-386-cgo), const SYS_MKNOD = 14 pkg syscall (openbsd-386-cgo), const SYS_MKNODAT = 320 pkg syscall (openbsd-386-cgo), const SYS_MLOCK = 203 pkg syscall (openbsd-386-cgo), const SYS_MLOCKALL = 271 pkg syscall (openbsd-386-cgo), const SYS_MMAP = 197 pkg syscall (openbsd-386-cgo), const SYS_MOUNT = 21 pkg syscall (openbsd-386-cgo), const SYS_MPROTECT = 74 pkg syscall (openbsd-386-cgo), const SYS_MQUERY = 286 pkg syscall (openbsd-386-cgo), const SYS_MSGCTL = 297 pkg syscall (openbsd-386-cgo), const SYS_MSGGET = 225 pkg syscall (openbsd-386-cgo), const SYS_MSGRCV = 227 pkg syscall (openbsd-386-cgo), const SYS_MSGSND = 226 pkg syscall (openbsd-386-cgo), const SYS_MSYNC = 256 pkg syscall (openbsd-386-cgo), const SYS_MUNLOCK = 204 pkg syscall (openbsd-386-cgo), const SYS_MUNLOCKALL = 272 pkg syscall (openbsd-386-cgo), const SYS_MUNMAP = 73 pkg syscall (openbsd-386-cgo), const SYS_NANOSLEEP = 240 pkg syscall (openbsd-386-cgo), const SYS_NFSSVC = 155 pkg syscall (openbsd-386-cgo), const SYS_OBREAK = 17 pkg syscall (openbsd-386-cgo), const SYS_OPEN = 5 pkg syscall (openbsd-386-cgo), const SYS_OPENAT = 321 pkg syscall (openbsd-386-cgo), const SYS_PATHCONF = 191 pkg syscall (openbsd-386-cgo), const SYS_PIPE = 263 pkg syscall (openbsd-386-cgo), const SYS_POLL = 252 pkg syscall (openbsd-386-cgo), const SYS_PREAD = 173 pkg syscall (openbsd-386-cgo), const SYS_PREADV = 267 pkg syscall (openbsd-386-cgo), const SYS_PROFIL = 44 pkg syscall (openbsd-386-cgo), const SYS_PTRACE = 26 pkg syscall (openbsd-386-cgo), const SYS_PWRITE = 174 pkg syscall (openbsd-386-cgo), const SYS_PWRITEV = 268 pkg syscall (openbsd-386-cgo), const SYS_QUOTACTL = 148 pkg syscall (openbsd-386-cgo), const SYS_READ = 3 pkg syscall (openbsd-386-cgo), const SYS_READLINK = 58 pkg syscall (openbsd-386-cgo), const SYS_READLINKAT = 322 pkg syscall (openbsd-386-cgo), const SYS_READV = 120 pkg syscall (openbsd-386-cgo), const SYS_REBOOT = 55 pkg syscall (openbsd-386-cgo), const SYS_RECVFROM = 29 pkg syscall (openbsd-386-cgo), const SYS_RECVMSG = 27 pkg syscall (openbsd-386-cgo), const SYS_RENAME = 128 pkg syscall (openbsd-386-cgo), const SYS_RENAMEAT = 323 pkg syscall (openbsd-386-cgo), const SYS_REVOKE = 56 pkg syscall (openbsd-386-cgo), const SYS_RMDIR = 137 pkg syscall (openbsd-386-cgo), const SYS_SCHED_YIELD = 298 pkg syscall (openbsd-386-cgo), const SYS_SELECT = 93 pkg syscall (openbsd-386-cgo), const SYS_SEMGET = 221 pkg syscall (openbsd-386-cgo), const SYS_SEMOP = 290 pkg syscall (openbsd-386-cgo), const SYS_SENDMSG = 28 pkg syscall (openbsd-386-cgo), const SYS_SENDTO = 133 pkg syscall (openbsd-386-cgo), const SYS_SETEGID = 182 pkg syscall (openbsd-386-cgo), const SYS_SETEUID = 183 pkg syscall (openbsd-386-cgo), const SYS_SETGID = 181 pkg syscall (openbsd-386-cgo), const SYS_SETGROUPS = 80 pkg syscall (openbsd-386-cgo), const SYS_SETITIMER = 83 pkg syscall (openbsd-386-cgo), const SYS_SETLOGIN = 50 pkg syscall (openbsd-386-cgo), const SYS_SETPGID = 82 pkg syscall (openbsd-386-cgo), const SYS_SETPRIORITY = 96 pkg syscall (openbsd-386-cgo), const SYS_SETREGID = 127 pkg syscall (openbsd-386-cgo), const SYS_SETRESGID = 284 pkg syscall (openbsd-386-cgo), const SYS_SETRESUID = 282 pkg syscall (openbsd-386-cgo), const SYS_SETREUID = 126 pkg syscall (openbsd-386-cgo), const SYS_SETRLIMIT = 195 pkg syscall (openbsd-386-cgo), const SYS_SETRTABLE = 310 pkg syscall (openbsd-386-cgo), const SYS_SETSID = 147 pkg syscall (openbsd-386-cgo), const SYS_SETSOCKOPT = 105 pkg syscall (openbsd-386-cgo), const SYS_SETTIMEOFDAY = 122 pkg syscall (openbsd-386-cgo), const SYS_SETUID = 23 pkg syscall (openbsd-386-cgo), const SYS_SHMAT = 228 pkg syscall (openbsd-386-cgo), const SYS_SHMCTL = 296 pkg syscall (openbsd-386-cgo), const SYS_SHMDT = 230 pkg syscall (openbsd-386-cgo), const SYS_SHMGET = 289 pkg syscall (openbsd-386-cgo), const SYS_SHUTDOWN = 134 pkg syscall (openbsd-386-cgo), const SYS_SIGACTION = 46 pkg syscall (openbsd-386-cgo), const SYS_SIGALTSTACK = 288 pkg syscall (openbsd-386-cgo), const SYS_SIGPENDING = 52 pkg syscall (openbsd-386-cgo), const SYS_SIGPROCMASK = 48 pkg syscall (openbsd-386-cgo), const SYS_SIGRETURN = 103 pkg syscall (openbsd-386-cgo), const SYS_SIGSUSPEND = 111 pkg syscall (openbsd-386-cgo), const SYS_SOCKET = 97 pkg syscall (openbsd-386-cgo), const SYS_SOCKETPAIR = 135 pkg syscall (openbsd-386-cgo), const SYS_STAT = 291 pkg syscall (openbsd-386-cgo), const SYS_STATFS = 307 pkg syscall (openbsd-386-cgo), const SYS_SWAPCTL = 193 pkg syscall (openbsd-386-cgo), const SYS_SYMLINK = 57 pkg syscall (openbsd-386-cgo), const SYS_SYMLINKAT = 324 pkg syscall (openbsd-386-cgo), const SYS_SYNC = 36 pkg syscall (openbsd-386-cgo), const SYS_SYSARCH = 165 pkg syscall (openbsd-386-cgo), const SYS_TRUNCATE = 200 pkg syscall (openbsd-386-cgo), const SYS_UMASK = 60 pkg syscall (openbsd-386-cgo), const SYS_UNLINK = 10 pkg syscall (openbsd-386-cgo), const SYS_UNLINKAT = 325 pkg syscall (openbsd-386-cgo), const SYS_UNMOUNT = 22 pkg syscall (openbsd-386-cgo), const SYS_UTIMENSAT = 326 pkg syscall (openbsd-386-cgo), const SYS_UTIMES = 138 pkg syscall (openbsd-386-cgo), const SYS_VFORK = 66 pkg syscall (openbsd-386-cgo), const SYS_WAIT4 = 7 pkg syscall (openbsd-386-cgo), const SYS_WRITE = 4 pkg syscall (openbsd-386-cgo), const SYS_WRITEV = 121 pkg syscall (openbsd-386-cgo), const SYS___GETCWD = 304 pkg syscall (openbsd-386-cgo), const SYS___GET_TCB = 330 pkg syscall (openbsd-386-cgo), const SYS___SEMCTL = 295 pkg syscall (openbsd-386-cgo), const SYS___SET_TCB = 329 pkg syscall (openbsd-386-cgo), const SYS___SYSCTL = 202 pkg syscall (openbsd-386-cgo), const SYS___TFORK = 8 pkg syscall (openbsd-386-cgo), const SYS___THREXIT = 302 pkg syscall (openbsd-386-cgo), const SYS___THRSIGDIVERT = 303 pkg syscall (openbsd-386-cgo), const SYS___THRSLEEP = 300 pkg syscall (openbsd-386-cgo), const SYS___THRWAKEUP = 301 pkg syscall (openbsd-386-cgo), const S_IFMT = 61440 pkg syscall (openbsd-386-cgo), const SizeofBpfHdr = 20 pkg syscall (openbsd-386-cgo), const SizeofBpfInsn = 8 pkg syscall (openbsd-386-cgo), const SizeofBpfProgram = 8 pkg syscall (openbsd-386-cgo), const SizeofBpfStat = 8 pkg syscall (openbsd-386-cgo), const SizeofBpfVersion = 4 pkg syscall (openbsd-386-cgo), const SizeofCmsghdr = 12 pkg syscall (openbsd-386-cgo), const SizeofIPMreq = 8 pkg syscall (openbsd-386-cgo), const SizeofIPv6Mreq = 20 pkg syscall (openbsd-386-cgo), const SizeofIfAnnounceMsghdr = 26 pkg syscall (openbsd-386-cgo), const SizeofIfData = 208 pkg syscall (openbsd-386-cgo), const SizeofIfMsghdr = 232 pkg syscall (openbsd-386-cgo), const SizeofIfaMsghdr = 24 pkg syscall (openbsd-386-cgo), const SizeofInet6Pktinfo = 20 pkg syscall (openbsd-386-cgo), const SizeofLinger = 8 pkg syscall (openbsd-386-cgo), const SizeofMsghdr = 28 pkg syscall (openbsd-386-cgo), const SizeofRtMetrics = 48 pkg syscall (openbsd-386-cgo), const SizeofRtMsghdr = 88 pkg syscall (openbsd-386-cgo), const SizeofSockaddrAny = 108 pkg syscall (openbsd-386-cgo), const SizeofSockaddrDatalink = 32 pkg syscall (openbsd-386-cgo), const SizeofSockaddrInet4 = 16 pkg syscall (openbsd-386-cgo), const SizeofSockaddrInet6 = 28 pkg syscall (openbsd-386-cgo), const SizeofSockaddrUnix = 106 pkg syscall (openbsd-386-cgo), const TCIFLUSH = 1 pkg syscall (openbsd-386-cgo), const TCIOFLUSH = 3 pkg syscall (openbsd-386-cgo), const TCOFLUSH = 2 pkg syscall (openbsd-386-cgo), const TCP_MAXBURST = 4 pkg syscall (openbsd-386-cgo), const TCP_MAXSEG = 2 pkg syscall (openbsd-386-cgo), const TCP_MAXWIN = 65535 pkg syscall (openbsd-386-cgo), const TCP_MAX_SACK = 3 pkg syscall (openbsd-386-cgo), const TCP_MAX_WINSHIFT = 14 pkg syscall (openbsd-386-cgo), const TCP_MD5SIG = 4 pkg syscall (openbsd-386-cgo), const TCP_MSS = 512 pkg syscall (openbsd-386-cgo), const TCP_NSTATES = 11 pkg syscall (openbsd-386-cgo), const TCP_SACK_ENABLE = 8 pkg syscall (openbsd-386-cgo), const TCSAFLUSH = 2 pkg syscall (openbsd-386-cgo), const TIOCCBRK = 536900730 pkg syscall (openbsd-386-cgo), const TIOCCDTR = 536900728 pkg syscall (openbsd-386-cgo), const TIOCCONS = 2147775586 pkg syscall (openbsd-386-cgo), const TIOCDRAIN = 536900702 pkg syscall (openbsd-386-cgo), const TIOCEXCL = 536900621 pkg syscall (openbsd-386-cgo), const TIOCEXT = 2147775584 pkg syscall (openbsd-386-cgo), const TIOCFLAG_CLOCAL = 2 pkg syscall (openbsd-386-cgo), const TIOCFLAG_CRTSCTS = 4 pkg syscall (openbsd-386-cgo), const TIOCFLAG_MDMBUF = 8 pkg syscall (openbsd-386-cgo), const TIOCFLAG_PPS = 16 pkg syscall (openbsd-386-cgo), const TIOCFLAG_SOFTCAR = 1 pkg syscall (openbsd-386-cgo), const TIOCFLUSH = 2147775504 pkg syscall (openbsd-386-cgo), const TIOCGETA = 1076655123 pkg syscall (openbsd-386-cgo), const TIOCGETD = 1074033690 pkg syscall (openbsd-386-cgo), const TIOCGFLAGS = 1074033757 pkg syscall (openbsd-386-cgo), const TIOCGPGRP = 1074033783 pkg syscall (openbsd-386-cgo), const TIOCGTSTAMP = 1074295899 pkg syscall (openbsd-386-cgo), const TIOCGWINSZ = 1074295912 pkg syscall (openbsd-386-cgo), const TIOCMBIC = 2147775595 pkg syscall (openbsd-386-cgo), const TIOCMBIS = 2147775596 pkg syscall (openbsd-386-cgo), const TIOCMGET = 1074033770 pkg syscall (openbsd-386-cgo), const TIOCMODG = 1074033770 pkg syscall (openbsd-386-cgo), const TIOCMODS = 2147775597 pkg syscall (openbsd-386-cgo), const TIOCMSET = 2147775597 pkg syscall (openbsd-386-cgo), const TIOCM_CAR = 64 pkg syscall (openbsd-386-cgo), const TIOCM_CD = 64 pkg syscall (openbsd-386-cgo), const TIOCM_CTS = 32 pkg syscall (openbsd-386-cgo), const TIOCM_DSR = 256 pkg syscall (openbsd-386-cgo), const TIOCM_DTR = 2 pkg syscall (openbsd-386-cgo), const TIOCM_LE = 1 pkg syscall (openbsd-386-cgo), const TIOCM_RI = 128 pkg syscall (openbsd-386-cgo), const TIOCM_RNG = 128 pkg syscall (openbsd-386-cgo), const TIOCM_RTS = 4 pkg syscall (openbsd-386-cgo), const TIOCM_SR = 16 pkg syscall (openbsd-386-cgo), const TIOCM_ST = 8 pkg syscall (openbsd-386-cgo), const TIOCNOTTY = 536900721 pkg syscall (openbsd-386-cgo), const TIOCNXCL = 536900622 pkg syscall (openbsd-386-cgo), const TIOCOUTQ = 1074033779 pkg syscall (openbsd-386-cgo), const TIOCPKT = 2147775600 pkg syscall (openbsd-386-cgo), const TIOCPKT_DATA = 0 pkg syscall (openbsd-386-cgo), const TIOCPKT_DOSTOP = 32 pkg syscall (openbsd-386-cgo), const TIOCPKT_FLUSHREAD = 1 pkg syscall (openbsd-386-cgo), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (openbsd-386-cgo), const TIOCPKT_IOCTL = 64 pkg syscall (openbsd-386-cgo), const TIOCPKT_NOSTOP = 16 pkg syscall (openbsd-386-cgo), const TIOCPKT_START = 8 pkg syscall (openbsd-386-cgo), const TIOCPKT_STOP = 4 pkg syscall (openbsd-386-cgo), const TIOCREMOTE = 2147775593 pkg syscall (openbsd-386-cgo), const TIOCSBRK = 536900731 pkg syscall (openbsd-386-cgo), const TIOCSCTTY = 536900705 pkg syscall (openbsd-386-cgo), const TIOCSDTR = 536900729 pkg syscall (openbsd-386-cgo), const TIOCSETA = 2150396948 pkg syscall (openbsd-386-cgo), const TIOCSETAF = 2150396950 pkg syscall (openbsd-386-cgo), const TIOCSETAW = 2150396949 pkg syscall (openbsd-386-cgo), const TIOCSETD = 2147775515 pkg syscall (openbsd-386-cgo), const TIOCSFLAGS = 2147775580 pkg syscall (openbsd-386-cgo), const TIOCSIG = 2147775583 pkg syscall (openbsd-386-cgo), const TIOCSPGRP = 2147775606 pkg syscall (openbsd-386-cgo), const TIOCSTART = 536900718 pkg syscall (openbsd-386-cgo), const TIOCSTAT = 2147775589 pkg syscall (openbsd-386-cgo), const TIOCSTI = 2147578994 pkg syscall (openbsd-386-cgo), const TIOCSTOP = 536900719 pkg syscall (openbsd-386-cgo), const TIOCSTSTAMP = 2148037722 pkg syscall (openbsd-386-cgo), const TIOCSWINSZ = 2148037735 pkg syscall (openbsd-386-cgo), const TIOCUCNTL = 2147775590 pkg syscall (openbsd-386-cgo), const TOSTOP = 4194304 pkg syscall (openbsd-386-cgo), const VDISCARD = 15 pkg syscall (openbsd-386-cgo), const VDSUSP = 11 pkg syscall (openbsd-386-cgo), const VEOF = 0 pkg syscall (openbsd-386-cgo), const VEOL = 1 pkg syscall (openbsd-386-cgo), const VEOL2 = 2 pkg syscall (openbsd-386-cgo), const VERASE = 3 pkg syscall (openbsd-386-cgo), const VINTR = 8 pkg syscall (openbsd-386-cgo), const VKILL = 5 pkg syscall (openbsd-386-cgo), const VLNEXT = 14 pkg syscall (openbsd-386-cgo), const VMIN = 16 pkg syscall (openbsd-386-cgo), const VQUIT = 9 pkg syscall (openbsd-386-cgo), const VREPRINT = 6 pkg syscall (openbsd-386-cgo), const VSTART = 12 pkg syscall (openbsd-386-cgo), const VSTATUS = 18 pkg syscall (openbsd-386-cgo), const VSTOP = 13 pkg syscall (openbsd-386-cgo), const VSUSP = 10 pkg syscall (openbsd-386-cgo), const VTIME = 17 pkg syscall (openbsd-386-cgo), const VWERASE = 4 pkg syscall (openbsd-386-cgo), const WALTSIG = 4 pkg syscall (openbsd-386-cgo), const WCONTINUED = 8 pkg syscall (openbsd-386-cgo), const WCOREFLAG = 128 pkg syscall (openbsd-386-cgo), const WNOHANG = 1 pkg syscall (openbsd-386-cgo), const WSTOPPED = 127 pkg syscall (openbsd-386-cgo), const WUNTRACED = 2 pkg syscall (openbsd-amd64), const AF_APPLETALK = 16 pkg syscall (openbsd-amd64), const AF_BLUETOOTH = 32 pkg syscall (openbsd-amd64), const AF_CCITT = 10 pkg syscall (openbsd-amd64), const AF_CHAOS = 5 pkg syscall (openbsd-amd64), const AF_CNT = 21 pkg syscall (openbsd-amd64), const AF_COIP = 20 pkg syscall (openbsd-amd64), const AF_DATAKIT = 9 pkg syscall (openbsd-amd64), const AF_DECnet = 12 pkg syscall (openbsd-amd64), const AF_DLI = 13 pkg syscall (openbsd-amd64), const AF_E164 = 26 pkg syscall (openbsd-amd64), const AF_ECMA = 8 pkg syscall (openbsd-amd64), const AF_ENCAP = 28 pkg syscall (openbsd-amd64), const AF_HYLINK = 15 pkg syscall (openbsd-amd64), const AF_IMPLINK = 3 pkg syscall (openbsd-amd64), const AF_INET6 = 24 pkg syscall (openbsd-amd64), const AF_IPX = 23 pkg syscall (openbsd-amd64), const AF_ISDN = 26 pkg syscall (openbsd-amd64), const AF_ISO = 7 pkg syscall (openbsd-amd64), const AF_KEY = 30 pkg syscall (openbsd-amd64), const AF_LAT = 14 pkg syscall (openbsd-amd64), const AF_LINK = 18 pkg syscall (openbsd-amd64), const AF_LOCAL = 1 pkg syscall (openbsd-amd64), const AF_MAX = 36 pkg syscall (openbsd-amd64), const AF_MPLS = 33 pkg syscall (openbsd-amd64), const AF_NATM = 27 pkg syscall (openbsd-amd64), const AF_NS = 6 pkg syscall (openbsd-amd64), const AF_OSI = 7 pkg syscall (openbsd-amd64), const AF_PUP = 4 pkg syscall (openbsd-amd64), const AF_ROUTE = 17 pkg syscall (openbsd-amd64), const AF_SIP = 29 pkg syscall (openbsd-amd64), const AF_SNA = 11 pkg syscall (openbsd-amd64), const ARPHRD_ETHER = 1 pkg syscall (openbsd-amd64), const ARPHRD_FRELAY = 15 pkg syscall (openbsd-amd64), const ARPHRD_IEEE1394 = 24 pkg syscall (openbsd-amd64), const ARPHRD_IEEE802 = 6 pkg syscall (openbsd-amd64), const B0 = 0 pkg syscall (openbsd-amd64), const B110 = 110 pkg syscall (openbsd-amd64), const B115200 = 115200 pkg syscall (openbsd-amd64), const B1200 = 1200 pkg syscall (openbsd-amd64), const B134 = 134 pkg syscall (openbsd-amd64), const B14400 = 14400 pkg syscall (openbsd-amd64), const B150 = 150 pkg syscall (openbsd-amd64), const B1800 = 1800 pkg syscall (openbsd-amd64), const B19200 = 19200 pkg syscall (openbsd-amd64), const B200 = 200 pkg syscall (openbsd-amd64), const B230400 = 230400 pkg syscall (openbsd-amd64), const B2400 = 2400 pkg syscall (openbsd-amd64), const B28800 = 28800 pkg syscall (openbsd-amd64), const B300 = 300 pkg syscall (openbsd-amd64), const B38400 = 38400 pkg syscall (openbsd-amd64), const B4800 = 4800 pkg syscall (openbsd-amd64), const B50 = 50 pkg syscall (openbsd-amd64), const B57600 = 57600 pkg syscall (openbsd-amd64), const B600 = 600 pkg syscall (openbsd-amd64), const B7200 = 7200 pkg syscall (openbsd-amd64), const B75 = 75 pkg syscall (openbsd-amd64), const B76800 = 76800 pkg syscall (openbsd-amd64), const B9600 = 9600 pkg syscall (openbsd-amd64), const BIOCFLUSH = 536887912 pkg syscall (openbsd-amd64), const BIOCGBLEN = 1074020966 pkg syscall (openbsd-amd64), const BIOCGDIRFILT = 1074020988 pkg syscall (openbsd-amd64), const BIOCGDLT = 1074020970 pkg syscall (openbsd-amd64), const BIOCGDLTLIST = 3222291067 pkg syscall (openbsd-amd64), const BIOCGETIF = 1075855979 pkg syscall (openbsd-amd64), const BIOCGFILDROP = 1074020984 pkg syscall (openbsd-amd64), const BIOCGHDRCMPLT = 1074020980 pkg syscall (openbsd-amd64), const BIOCGRSIG = 1074020979 pkg syscall (openbsd-amd64), const BIOCGRTIMEOUT = 1074807406 pkg syscall (openbsd-amd64), const BIOCGSTATS = 1074283119 pkg syscall (openbsd-amd64), const BIOCIMMEDIATE = 2147762800 pkg syscall (openbsd-amd64), const BIOCLOCK = 536887926 pkg syscall (openbsd-amd64), const BIOCPROMISC = 536887913 pkg syscall (openbsd-amd64), const BIOCSBLEN = 3221504614 pkg syscall (openbsd-amd64), const BIOCSDIRFILT = 2147762813 pkg syscall (openbsd-amd64), const BIOCSDLT = 2147762810 pkg syscall (openbsd-amd64), const BIOCSETF = 2148549223 pkg syscall (openbsd-amd64), const BIOCSETIF = 2149597804 pkg syscall (openbsd-amd64), const BIOCSETWF = 2148549239 pkg syscall (openbsd-amd64), const BIOCSFILDROP = 2147762809 pkg syscall (openbsd-amd64), const BIOCSHDRCMPLT = 2147762805 pkg syscall (openbsd-amd64), const BIOCSRSIG = 2147762802 pkg syscall (openbsd-amd64), const BIOCSRTIMEOUT = 2148549229 pkg syscall (openbsd-amd64), const BIOCVERSION = 1074020977 pkg syscall (openbsd-amd64), const BPF_A = 16 pkg syscall (openbsd-amd64), const BPF_ABS = 32 pkg syscall (openbsd-amd64), const BPF_ADD = 0 pkg syscall (openbsd-amd64), const BPF_ALIGNMENT = 4 pkg syscall (openbsd-amd64), const BPF_ALU = 4 pkg syscall (openbsd-amd64), const BPF_AND = 80 pkg syscall (openbsd-amd64), const BPF_B = 16 pkg syscall (openbsd-amd64), const BPF_DIRECTION_IN = 1 pkg syscall (openbsd-amd64), const BPF_DIRECTION_OUT = 2 pkg syscall (openbsd-amd64), const BPF_DIV = 48 pkg syscall (openbsd-amd64), const BPF_H = 8 pkg syscall (openbsd-amd64), const BPF_IMM = 0 pkg syscall (openbsd-amd64), const BPF_IND = 64 pkg syscall (openbsd-amd64), const BPF_JA = 0 pkg syscall (openbsd-amd64), const BPF_JEQ = 16 pkg syscall (openbsd-amd64), const BPF_JGE = 48 pkg syscall (openbsd-amd64), const BPF_JGT = 32 pkg syscall (openbsd-amd64), const BPF_JMP = 5 pkg syscall (openbsd-amd64), const BPF_JSET = 64 pkg syscall (openbsd-amd64), const BPF_K = 0 pkg syscall (openbsd-amd64), const BPF_LD = 0 pkg syscall (openbsd-amd64), const BPF_LDX = 1 pkg syscall (openbsd-amd64), const BPF_LEN = 128 pkg syscall (openbsd-amd64), const BPF_LSH = 96 pkg syscall (openbsd-amd64), const BPF_MAJOR_VERSION = 1 pkg syscall (openbsd-amd64), const BPF_MAXBUFSIZE = 2097152 pkg syscall (openbsd-amd64), const BPF_MAXINSNS = 512 pkg syscall (openbsd-amd64), const BPF_MEM = 96 pkg syscall (openbsd-amd64), const BPF_MEMWORDS = 16 pkg syscall (openbsd-amd64), const BPF_MINBUFSIZE = 32 pkg syscall (openbsd-amd64), const BPF_MINOR_VERSION = 1 pkg syscall (openbsd-amd64), const BPF_MISC = 7 pkg syscall (openbsd-amd64), const BPF_MSH = 160 pkg syscall (openbsd-amd64), const BPF_MUL = 32 pkg syscall (openbsd-amd64), const BPF_NEG = 128 pkg syscall (openbsd-amd64), const BPF_OR = 64 pkg syscall (openbsd-amd64), const BPF_RELEASE = 199606 pkg syscall (openbsd-amd64), const BPF_RET = 6 pkg syscall (openbsd-amd64), const BPF_RSH = 112 pkg syscall (openbsd-amd64), const BPF_ST = 2 pkg syscall (openbsd-amd64), const BPF_STX = 3 pkg syscall (openbsd-amd64), const BPF_SUB = 16 pkg syscall (openbsd-amd64), const BPF_TAX = 0 pkg syscall (openbsd-amd64), const BPF_TXA = 128 pkg syscall (openbsd-amd64), const BPF_W = 0 pkg syscall (openbsd-amd64), const BPF_X = 8 pkg syscall (openbsd-amd64), const BRKINT = 2 pkg syscall (openbsd-amd64), const CCR0_FLUSH = 16 pkg syscall (openbsd-amd64), const CFLUSH = 15 pkg syscall (openbsd-amd64), const CLOCAL = 32768 pkg syscall (openbsd-amd64), const CPUID_CFLUSH = 524288 pkg syscall (openbsd-amd64), const CREAD = 2048 pkg syscall (openbsd-amd64), const CS5 = 0 pkg syscall (openbsd-amd64), const CS6 = 256 pkg syscall (openbsd-amd64), const CS7 = 512 pkg syscall (openbsd-amd64), const CS8 = 768 pkg syscall (openbsd-amd64), const CSIZE = 768 pkg syscall (openbsd-amd64), const CSTART = 17 pkg syscall (openbsd-amd64), const CSTATUS = 255 pkg syscall (openbsd-amd64), const CSTOP = 19 pkg syscall (openbsd-amd64), const CSTOPB = 1024 pkg syscall (openbsd-amd64), const CSUSP = 26 pkg syscall (openbsd-amd64), const CTL_MAXNAME = 12 pkg syscall (openbsd-amd64), const CTL_NET = 4 pkg syscall (openbsd-amd64), const DIOCOSFPFLUSH = 536888398 pkg syscall (openbsd-amd64), const DLT_ARCNET = 7 pkg syscall (openbsd-amd64), const DLT_ATM_RFC1483 = 11 pkg syscall (openbsd-amd64), const DLT_AX25 = 3 pkg syscall (openbsd-amd64), const DLT_CHAOS = 5 pkg syscall (openbsd-amd64), const DLT_C_HDLC = 104 pkg syscall (openbsd-amd64), const DLT_EN10MB = 1 pkg syscall (openbsd-amd64), const DLT_EN3MB = 2 pkg syscall (openbsd-amd64), const DLT_ENC = 13 pkg syscall (openbsd-amd64), const DLT_FDDI = 10 pkg syscall (openbsd-amd64), const DLT_IEEE802 = 6 pkg syscall (openbsd-amd64), const DLT_IEEE802_11 = 105 pkg syscall (openbsd-amd64), const DLT_IEEE802_11_RADIO = 127 pkg syscall (openbsd-amd64), const DLT_LOOP = 12 pkg syscall (openbsd-amd64), const DLT_MPLS = 219 pkg syscall (openbsd-amd64), const DLT_NULL = 0 pkg syscall (openbsd-amd64), const DLT_PFLOG = 117 pkg syscall (openbsd-amd64), const DLT_PFSYNC = 18 pkg syscall (openbsd-amd64), const DLT_PPP = 9 pkg syscall (openbsd-amd64), const DLT_PPP_BSDOS = 16 pkg syscall (openbsd-amd64), const DLT_PPP_ETHER = 51 pkg syscall (openbsd-amd64), const DLT_PPP_SERIAL = 50 pkg syscall (openbsd-amd64), const DLT_PRONET = 4 pkg syscall (openbsd-amd64), const DLT_RAW = 14 pkg syscall (openbsd-amd64), const DLT_SLIP = 8 pkg syscall (openbsd-amd64), const DLT_SLIP_BSDOS = 15 pkg syscall (openbsd-amd64), const DT_BLK = 6 pkg syscall (openbsd-amd64), const DT_CHR = 2 pkg syscall (openbsd-amd64), const DT_DIR = 4 pkg syscall (openbsd-amd64), const DT_FIFO = 1 pkg syscall (openbsd-amd64), const DT_LNK = 10 pkg syscall (openbsd-amd64), const DT_REG = 8 pkg syscall (openbsd-amd64), const DT_SOCK = 12 pkg syscall (openbsd-amd64), const DT_UNKNOWN = 0 pkg syscall (openbsd-amd64), const E2BIG = 7 pkg syscall (openbsd-amd64), const EACCES = 13 pkg syscall (openbsd-amd64), const EADDRINUSE = 48 pkg syscall (openbsd-amd64), const EADDRNOTAVAIL = 49 pkg syscall (openbsd-amd64), const EAFNOSUPPORT = 47 pkg syscall (openbsd-amd64), const EAGAIN = 35 pkg syscall (openbsd-amd64), const EALREADY = 37 pkg syscall (openbsd-amd64), const EAUTH = 80 pkg syscall (openbsd-amd64), const EBADF = 9 pkg syscall (openbsd-amd64), const EBADRPC = 72 pkg syscall (openbsd-amd64), const EBUSY = 16 pkg syscall (openbsd-amd64), const ECANCELED = 88 pkg syscall (openbsd-amd64), const ECHILD = 10 pkg syscall (openbsd-amd64), const ECHO = 8 pkg syscall (openbsd-amd64), const ECHOCTL = 64 pkg syscall (openbsd-amd64), const ECHOE = 2 pkg syscall (openbsd-amd64), const ECHOK = 4 pkg syscall (openbsd-amd64), const ECHOKE = 1 pkg syscall (openbsd-amd64), const ECHONL = 16 pkg syscall (openbsd-amd64), const ECHOPRT = 32 pkg syscall (openbsd-amd64), const ECONNABORTED = 53 pkg syscall (openbsd-amd64), const ECONNREFUSED = 61 pkg syscall (openbsd-amd64), const ECONNRESET = 54 pkg syscall (openbsd-amd64), const EDEADLK = 11 pkg syscall (openbsd-amd64), const EDESTADDRREQ = 39 pkg syscall (openbsd-amd64), const EDOM = 33 pkg syscall (openbsd-amd64), const EDQUOT = 69 pkg syscall (openbsd-amd64), const EEXIST = 17 pkg syscall (openbsd-amd64), const EFAULT = 14 pkg syscall (openbsd-amd64), const EFBIG = 27 pkg syscall (openbsd-amd64), const EFER_LMA = 1024 pkg syscall (openbsd-amd64), const EFER_LME = 256 pkg syscall (openbsd-amd64), const EFER_NXE = 2048 pkg syscall (openbsd-amd64), const EFER_SCE = 1 pkg syscall (openbsd-amd64), const EFTYPE = 79 pkg syscall (openbsd-amd64), const EHOSTDOWN = 64 pkg syscall (openbsd-amd64), const EHOSTUNREACH = 65 pkg syscall (openbsd-amd64), const EIDRM = 89 pkg syscall (openbsd-amd64), const EILSEQ = 84 pkg syscall (openbsd-amd64), const EINPROGRESS = 36 pkg syscall (openbsd-amd64), const EINTR = 4 pkg syscall (openbsd-amd64), const EINVAL = 22 pkg syscall (openbsd-amd64), const EIO = 5 pkg syscall (openbsd-amd64), const EIPSEC = 82 pkg syscall (openbsd-amd64), const EISCONN = 56 pkg syscall (openbsd-amd64), const EISDIR = 21 pkg syscall (openbsd-amd64), const ELAST = 91 pkg syscall (openbsd-amd64), const ELOOP = 62 pkg syscall (openbsd-amd64), const EMEDIUMTYPE = 86 pkg syscall (openbsd-amd64), const EMFILE = 24 pkg syscall (openbsd-amd64), const EMLINK = 31 pkg syscall (openbsd-amd64), const EMSGSIZE = 40 pkg syscall (openbsd-amd64), const EMT_TAGOVF = 1 pkg syscall (openbsd-amd64), const EMUL_ENABLED = 1 pkg syscall (openbsd-amd64), const EMUL_NATIVE = 2 pkg syscall (openbsd-amd64), const ENAMETOOLONG = 63 pkg syscall (openbsd-amd64), const ENDRUNDISC = 9 pkg syscall (openbsd-amd64), const ENEEDAUTH = 81 pkg syscall (openbsd-amd64), const ENETDOWN = 50 pkg syscall (openbsd-amd64), const ENETRESET = 52 pkg syscall (openbsd-amd64), const ENETUNREACH = 51 pkg syscall (openbsd-amd64), const ENFILE = 23 pkg syscall (openbsd-amd64), const ENOATTR = 83 pkg syscall (openbsd-amd64), const ENOBUFS = 55 pkg syscall (openbsd-amd64), const ENODEV = 19 pkg syscall (openbsd-amd64), const ENOEXEC = 8 pkg syscall (openbsd-amd64), const ENOLCK = 77 pkg syscall (openbsd-amd64), const ENOMEDIUM = 85 pkg syscall (openbsd-amd64), const ENOMEM = 12 pkg syscall (openbsd-amd64), const ENOMSG = 90 pkg syscall (openbsd-amd64), const ENOPROTOOPT = 42 pkg syscall (openbsd-amd64), const ENOSPC = 28 pkg syscall (openbsd-amd64), const ENOSYS = 78 pkg syscall (openbsd-amd64), const ENOTBLK = 15 pkg syscall (openbsd-amd64), const ENOTCONN = 57 pkg syscall (openbsd-amd64), const ENOTDIR = 20 pkg syscall (openbsd-amd64), const ENOTEMPTY = 66 pkg syscall (openbsd-amd64), const ENOTSOCK = 38 pkg syscall (openbsd-amd64), const ENOTSUP = 91 pkg syscall (openbsd-amd64), const ENOTTY = 25 pkg syscall (openbsd-amd64), const ENXIO = 6 pkg syscall (openbsd-amd64), const EOPNOTSUPP = 45 pkg syscall (openbsd-amd64), const EOVERFLOW = 87 pkg syscall (openbsd-amd64), const EPERM = 1 pkg syscall (openbsd-amd64), const EPFNOSUPPORT = 46 pkg syscall (openbsd-amd64), const EPIPE = 32 pkg syscall (openbsd-amd64), const EPROCLIM = 67 pkg syscall (openbsd-amd64), const EPROCUNAVAIL = 76 pkg syscall (openbsd-amd64), const EPROGMISMATCH = 75 pkg syscall (openbsd-amd64), const EPROGUNAVAIL = 74 pkg syscall (openbsd-amd64), const EPROTONOSUPPORT = 43 pkg syscall (openbsd-amd64), const EPROTOTYPE = 41 pkg syscall (openbsd-amd64), const ERANGE = 34 pkg syscall (openbsd-amd64), const EREMOTE = 71 pkg syscall (openbsd-amd64), const EROFS = 30 pkg syscall (openbsd-amd64), const ERPCMISMATCH = 73 pkg syscall (openbsd-amd64), const ESHUTDOWN = 58 pkg syscall (openbsd-amd64), const ESOCKTNOSUPPORT = 44 pkg syscall (openbsd-amd64), const ESPIPE = 29 pkg syscall (openbsd-amd64), const ESRCH = 3 pkg syscall (openbsd-amd64), const ESTALE = 70 pkg syscall (openbsd-amd64), const ETHERMIN = 46 pkg syscall (openbsd-amd64), const ETHERMTU = 1500 pkg syscall (openbsd-amd64), const ETHERTYPE_8023 = 4 pkg syscall (openbsd-amd64), const ETHERTYPE_AARP = 33011 pkg syscall (openbsd-amd64), const ETHERTYPE_ACCTON = 33680 pkg syscall (openbsd-amd64), const ETHERTYPE_AEONIC = 32822 pkg syscall (openbsd-amd64), const ETHERTYPE_ALPHA = 33098 pkg syscall (openbsd-amd64), const ETHERTYPE_AMBER = 24584 pkg syscall (openbsd-amd64), const ETHERTYPE_AMOEBA = 33093 pkg syscall (openbsd-amd64), const ETHERTYPE_AOE = 34978 pkg syscall (openbsd-amd64), const ETHERTYPE_APOLLO = 33015 pkg syscall (openbsd-amd64), const ETHERTYPE_APOLLODOMAIN = 32793 pkg syscall (openbsd-amd64), const ETHERTYPE_APPLETALK = 32923 pkg syscall (openbsd-amd64), const ETHERTYPE_APPLITEK = 32967 pkg syscall (openbsd-amd64), const ETHERTYPE_ARGONAUT = 32826 pkg syscall (openbsd-amd64), const ETHERTYPE_ARP = 2054 pkg syscall (openbsd-amd64), const ETHERTYPE_AT = 32923 pkg syscall (openbsd-amd64), const ETHERTYPE_ATALK = 32923 pkg syscall (openbsd-amd64), const ETHERTYPE_ATOMIC = 34527 pkg syscall (openbsd-amd64), const ETHERTYPE_ATT = 32873 pkg syscall (openbsd-amd64), const ETHERTYPE_ATTSTANFORD = 32776 pkg syscall (openbsd-amd64), const ETHERTYPE_AUTOPHON = 32874 pkg syscall (openbsd-amd64), const ETHERTYPE_AXIS = 34902 pkg syscall (openbsd-amd64), const ETHERTYPE_BCLOOP = 36867 pkg syscall (openbsd-amd64), const ETHERTYPE_BOFL = 33026 pkg syscall (openbsd-amd64), const ETHERTYPE_CABLETRON = 28724 pkg syscall (openbsd-amd64), const ETHERTYPE_CHAOS = 2052 pkg syscall (openbsd-amd64), const ETHERTYPE_COMDESIGN = 32876 pkg syscall (openbsd-amd64), const ETHERTYPE_COMPUGRAPHIC = 32877 pkg syscall (openbsd-amd64), const ETHERTYPE_COUNTERPOINT = 32866 pkg syscall (openbsd-amd64), const ETHERTYPE_CRONUS = 32772 pkg syscall (openbsd-amd64), const ETHERTYPE_CRONUSVLN = 32771 pkg syscall (openbsd-amd64), const ETHERTYPE_DCA = 4660 pkg syscall (openbsd-amd64), const ETHERTYPE_DDE = 32891 pkg syscall (openbsd-amd64), const ETHERTYPE_DEBNI = 43690 pkg syscall (openbsd-amd64), const ETHERTYPE_DECAM = 32840 pkg syscall (openbsd-amd64), const ETHERTYPE_DECCUST = 24582 pkg syscall (openbsd-amd64), const ETHERTYPE_DECDIAG = 24581 pkg syscall (openbsd-amd64), const ETHERTYPE_DECDNS = 32828 pkg syscall (openbsd-amd64), const ETHERTYPE_DECDTS = 32830 pkg syscall (openbsd-amd64), const ETHERTYPE_DECEXPER = 24576 pkg syscall (openbsd-amd64), const ETHERTYPE_DECLAST = 32833 pkg syscall (openbsd-amd64), const ETHERTYPE_DECLTM = 32831 pkg syscall (openbsd-amd64), const ETHERTYPE_DECMUMPS = 24585 pkg syscall (openbsd-amd64), const ETHERTYPE_DECNETBIOS = 32832 pkg syscall (openbsd-amd64), const ETHERTYPE_DELTACON = 34526 pkg syscall (openbsd-amd64), const ETHERTYPE_DIDDLE = 17185 pkg syscall (openbsd-amd64), const ETHERTYPE_DLOG1 = 1632 pkg syscall (openbsd-amd64), const ETHERTYPE_DLOG2 = 1633 pkg syscall (openbsd-amd64), const ETHERTYPE_DN = 24579 pkg syscall (openbsd-amd64), const ETHERTYPE_DOGFIGHT = 6537 pkg syscall (openbsd-amd64), const ETHERTYPE_DSMD = 32825 pkg syscall (openbsd-amd64), const ETHERTYPE_ECMA = 2051 pkg syscall (openbsd-amd64), const ETHERTYPE_ENCRYPT = 32829 pkg syscall (openbsd-amd64), const ETHERTYPE_ES = 32861 pkg syscall (openbsd-amd64), const ETHERTYPE_EXCELAN = 32784 pkg syscall (openbsd-amd64), const ETHERTYPE_EXPERDATA = 32841 pkg syscall (openbsd-amd64), const ETHERTYPE_FLIP = 33094 pkg syscall (openbsd-amd64), const ETHERTYPE_FLOWCONTROL = 34824 pkg syscall (openbsd-amd64), const ETHERTYPE_FRARP = 2056 pkg syscall (openbsd-amd64), const ETHERTYPE_GENDYN = 32872 pkg syscall (openbsd-amd64), const ETHERTYPE_HAYES = 33072 pkg syscall (openbsd-amd64), const ETHERTYPE_HIPPI_FP = 33152 pkg syscall (openbsd-amd64), const ETHERTYPE_HITACHI = 34848 pkg syscall (openbsd-amd64), const ETHERTYPE_HP = 32773 pkg syscall (openbsd-amd64), const ETHERTYPE_IEEEPUP = 2560 pkg syscall (openbsd-amd64), const ETHERTYPE_IEEEPUPAT = 2561 pkg syscall (openbsd-amd64), const ETHERTYPE_IMLBL = 19522 pkg syscall (openbsd-amd64), const ETHERTYPE_IMLBLDIAG = 16972 pkg syscall (openbsd-amd64), const ETHERTYPE_IP = 2048 pkg syscall (openbsd-amd64), const ETHERTYPE_IPAS = 34668 pkg syscall (openbsd-amd64), const ETHERTYPE_IPV6 = 34525 pkg syscall (openbsd-amd64), const ETHERTYPE_IPX = 33079 pkg syscall (openbsd-amd64), const ETHERTYPE_IPXNEW = 32823 pkg syscall (openbsd-amd64), const ETHERTYPE_KALPANA = 34178 pkg syscall (openbsd-amd64), const ETHERTYPE_LANBRIDGE = 32824 pkg syscall (openbsd-amd64), const ETHERTYPE_LANPROBE = 34952 pkg syscall (openbsd-amd64), const ETHERTYPE_LAT = 24580 pkg syscall (openbsd-amd64), const ETHERTYPE_LBACK = 36864 pkg syscall (openbsd-amd64), const ETHERTYPE_LITTLE = 32864 pkg syscall (openbsd-amd64), const ETHERTYPE_LLDP = 35020 pkg syscall (openbsd-amd64), const ETHERTYPE_LOGICRAFT = 33096 pkg syscall (openbsd-amd64), const ETHERTYPE_LOOPBACK = 36864 pkg syscall (openbsd-amd64), const ETHERTYPE_MATRA = 32890 pkg syscall (openbsd-amd64), const ETHERTYPE_MAX = 65535 pkg syscall (openbsd-amd64), const ETHERTYPE_MERIT = 32892 pkg syscall (openbsd-amd64), const ETHERTYPE_MICP = 34618 pkg syscall (openbsd-amd64), const ETHERTYPE_MOPDL = 24577 pkg syscall (openbsd-amd64), const ETHERTYPE_MOPRC = 24578 pkg syscall (openbsd-amd64), const ETHERTYPE_MOTOROLA = 33165 pkg syscall (openbsd-amd64), const ETHERTYPE_MPLS = 34887 pkg syscall (openbsd-amd64), const ETHERTYPE_MPLS_MCAST = 34888 pkg syscall (openbsd-amd64), const ETHERTYPE_MUMPS = 33087 pkg syscall (openbsd-amd64), const ETHERTYPE_NBPCC = 15364 pkg syscall (openbsd-amd64), const ETHERTYPE_NBPCLAIM = 15369 pkg syscall (openbsd-amd64), const ETHERTYPE_NBPCLREQ = 15365 pkg syscall (openbsd-amd64), const ETHERTYPE_NBPCLRSP = 15366 pkg syscall (openbsd-amd64), const ETHERTYPE_NBPCREQ = 15362 pkg syscall (openbsd-amd64), const ETHERTYPE_NBPCRSP = 15363 pkg syscall (openbsd-amd64), const ETHERTYPE_NBPDG = 15367 pkg syscall (openbsd-amd64), const ETHERTYPE_NBPDGB = 15368 pkg syscall (openbsd-amd64), const ETHERTYPE_NBPDLTE = 15370 pkg syscall (openbsd-amd64), const ETHERTYPE_NBPRAR = 15372 pkg syscall (openbsd-amd64), const ETHERTYPE_NBPRAS = 15371 pkg syscall (openbsd-amd64), const ETHERTYPE_NBPRST = 15373 pkg syscall (openbsd-amd64), const ETHERTYPE_NBPSCD = 15361 pkg syscall (openbsd-amd64), const ETHERTYPE_NBPVCD = 15360 pkg syscall (openbsd-amd64), const ETHERTYPE_NBS = 2050 pkg syscall (openbsd-amd64), const ETHERTYPE_NCD = 33097 pkg syscall (openbsd-amd64), const ETHERTYPE_NESTAR = 32774 pkg syscall (openbsd-amd64), const ETHERTYPE_NETBEUI = 33169 pkg syscall (openbsd-amd64), const ETHERTYPE_NOVELL = 33080 pkg syscall (openbsd-amd64), const ETHERTYPE_NS = 1536 pkg syscall (openbsd-amd64), const ETHERTYPE_NSAT = 1537 pkg syscall (openbsd-amd64), const ETHERTYPE_NSCOMPAT = 2055 pkg syscall (openbsd-amd64), const ETHERTYPE_NTRAILER = 16 pkg syscall (openbsd-amd64), const ETHERTYPE_OS9 = 28679 pkg syscall (openbsd-amd64), const ETHERTYPE_OS9NET = 28681 pkg syscall (openbsd-amd64), const ETHERTYPE_PACER = 32966 pkg syscall (openbsd-amd64), const ETHERTYPE_PAE = 34958 pkg syscall (openbsd-amd64), const ETHERTYPE_PCS = 16962 pkg syscall (openbsd-amd64), const ETHERTYPE_PLANNING = 32836 pkg syscall (openbsd-amd64), const ETHERTYPE_PPP = 34827 pkg syscall (openbsd-amd64), const ETHERTYPE_PPPOE = 34916 pkg syscall (openbsd-amd64), const ETHERTYPE_PPPOEDISC = 34915 pkg syscall (openbsd-amd64), const ETHERTYPE_PRIMENTS = 28721 pkg syscall (openbsd-amd64), const ETHERTYPE_PUP = 512 pkg syscall (openbsd-amd64), const ETHERTYPE_PUPAT = 512 pkg syscall (openbsd-amd64), const ETHERTYPE_QINQ = 34984 pkg syscall (openbsd-amd64), const ETHERTYPE_RACAL = 28720 pkg syscall (openbsd-amd64), const ETHERTYPE_RATIONAL = 33104 pkg syscall (openbsd-amd64), const ETHERTYPE_RAWFR = 25945 pkg syscall (openbsd-amd64), const ETHERTYPE_RCL = 6549 pkg syscall (openbsd-amd64), const ETHERTYPE_RDP = 34617 pkg syscall (openbsd-amd64), const ETHERTYPE_RETIX = 33010 pkg syscall (openbsd-amd64), const ETHERTYPE_REVARP = 32821 pkg syscall (openbsd-amd64), const ETHERTYPE_SCA = 24583 pkg syscall (openbsd-amd64), const ETHERTYPE_SECTRA = 34523 pkg syscall (openbsd-amd64), const ETHERTYPE_SECUREDATA = 34669 pkg syscall (openbsd-amd64), const ETHERTYPE_SGITW = 33150 pkg syscall (openbsd-amd64), const ETHERTYPE_SG_BOUNCE = 32790 pkg syscall (openbsd-amd64), const ETHERTYPE_SG_DIAG = 32787 pkg syscall (openbsd-amd64), const ETHERTYPE_SG_NETGAMES = 32788 pkg syscall (openbsd-amd64), const ETHERTYPE_SG_RESV = 32789 pkg syscall (openbsd-amd64), const ETHERTYPE_SIMNET = 21000 pkg syscall (openbsd-amd64), const ETHERTYPE_SLOW = 34825 pkg syscall (openbsd-amd64), const ETHERTYPE_SNA = 32981 pkg syscall (openbsd-amd64), const ETHERTYPE_SNMP = 33100 pkg syscall (openbsd-amd64), const ETHERTYPE_SONIX = 64245 pkg syscall (openbsd-amd64), const ETHERTYPE_SPIDER = 32927 pkg syscall (openbsd-amd64), const ETHERTYPE_SPRITE = 1280 pkg syscall (openbsd-amd64), const ETHERTYPE_STP = 33153 pkg syscall (openbsd-amd64), const ETHERTYPE_TALARIS = 33067 pkg syscall (openbsd-amd64), const ETHERTYPE_TALARISMC = 34091 pkg syscall (openbsd-amd64), const ETHERTYPE_TCPCOMP = 34667 pkg syscall (openbsd-amd64), const ETHERTYPE_TCPSM = 36866 pkg syscall (openbsd-amd64), const ETHERTYPE_TEC = 33103 pkg syscall (openbsd-amd64), const ETHERTYPE_TIGAN = 32815 pkg syscall (openbsd-amd64), const ETHERTYPE_TRAIL = 4096 pkg syscall (openbsd-amd64), const ETHERTYPE_TRANSETHER = 25944 pkg syscall (openbsd-amd64), const ETHERTYPE_TYMSHARE = 32814 pkg syscall (openbsd-amd64), const ETHERTYPE_UBBST = 28677 pkg syscall (openbsd-amd64), const ETHERTYPE_UBDEBUG = 2304 pkg syscall (openbsd-amd64), const ETHERTYPE_UBDIAGLOOP = 28674 pkg syscall (openbsd-amd64), const ETHERTYPE_UBDL = 28672 pkg syscall (openbsd-amd64), const ETHERTYPE_UBNIU = 28673 pkg syscall (openbsd-amd64), const ETHERTYPE_UBNMC = 28675 pkg syscall (openbsd-amd64), const ETHERTYPE_VALID = 5632 pkg syscall (openbsd-amd64), const ETHERTYPE_VARIAN = 32989 pkg syscall (openbsd-amd64), const ETHERTYPE_VAXELN = 32827 pkg syscall (openbsd-amd64), const ETHERTYPE_VEECO = 32871 pkg syscall (openbsd-amd64), const ETHERTYPE_VEXP = 32859 pkg syscall (openbsd-amd64), const ETHERTYPE_VGLAB = 33073 pkg syscall (openbsd-amd64), const ETHERTYPE_VINES = 2989 pkg syscall (openbsd-amd64), const ETHERTYPE_VINESECHO = 2991 pkg syscall (openbsd-amd64), const ETHERTYPE_VINESLOOP = 2990 pkg syscall (openbsd-amd64), const ETHERTYPE_VITAL = 65280 pkg syscall (openbsd-amd64), const ETHERTYPE_VLAN = 33024 pkg syscall (openbsd-amd64), const ETHERTYPE_VLTLMAN = 32896 pkg syscall (openbsd-amd64), const ETHERTYPE_VPROD = 32860 pkg syscall (openbsd-amd64), const ETHERTYPE_VURESERVED = 33095 pkg syscall (openbsd-amd64), const ETHERTYPE_WATERLOO = 33072 pkg syscall (openbsd-amd64), const ETHERTYPE_WELLFLEET = 33027 pkg syscall (openbsd-amd64), const ETHERTYPE_X25 = 2053 pkg syscall (openbsd-amd64), const ETHERTYPE_X75 = 2049 pkg syscall (openbsd-amd64), const ETHERTYPE_XNSSM = 36865 pkg syscall (openbsd-amd64), const ETHERTYPE_XTP = 33149 pkg syscall (openbsd-amd64), const ETHER_ADDR_LEN = 6 pkg syscall (openbsd-amd64), const ETHER_ALIGN = 2 pkg syscall (openbsd-amd64), const ETHER_CRC_LEN = 4 pkg syscall (openbsd-amd64), const ETHER_CRC_POLY_BE = 79764918 pkg syscall (openbsd-amd64), const ETHER_CRC_POLY_LE = 3988292384 pkg syscall (openbsd-amd64), const ETHER_HDR_LEN = 14 pkg syscall (openbsd-amd64), const ETHER_MAX_DIX_LEN = 1536 pkg syscall (openbsd-amd64), const ETHER_MAX_LEN = 1518 pkg syscall (openbsd-amd64), const ETHER_MIN_LEN = 64 pkg syscall (openbsd-amd64), const ETHER_TYPE_LEN = 2 pkg syscall (openbsd-amd64), const ETHER_VLAN_ENCAP_LEN = 4 pkg syscall (openbsd-amd64), const ETIMEDOUT = 60 pkg syscall (openbsd-amd64), const ETOOMANYREFS = 59 pkg syscall (openbsd-amd64), const ETXTBSY = 26 pkg syscall (openbsd-amd64), const EUSERS = 68 pkg syscall (openbsd-amd64), const EVFILT_AIO = -3 pkg syscall (openbsd-amd64), const EVFILT_PROC = -5 pkg syscall (openbsd-amd64), const EVFILT_READ = -1 pkg syscall (openbsd-amd64), const EVFILT_SIGNAL = -6 pkg syscall (openbsd-amd64), const EVFILT_SYSCOUNT = 7 pkg syscall (openbsd-amd64), const EVFILT_TIMER = -7 pkg syscall (openbsd-amd64), const EVFILT_VNODE = -4 pkg syscall (openbsd-amd64), const EVFILT_WRITE = -2 pkg syscall (openbsd-amd64), const EV_ADD = 1 pkg syscall (openbsd-amd64), const EV_CLEAR = 32 pkg syscall (openbsd-amd64), const EV_DELETE = 2 pkg syscall (openbsd-amd64), const EV_DISABLE = 8 pkg syscall (openbsd-amd64), const EV_ENABLE = 4 pkg syscall (openbsd-amd64), const EV_EOF = 32768 pkg syscall (openbsd-amd64), const EV_ERROR = 16384 pkg syscall (openbsd-amd64), const EV_FLAG1 = 8192 pkg syscall (openbsd-amd64), const EV_ONESHOT = 16 pkg syscall (openbsd-amd64), const EV_SYSFLAGS = 61440 pkg syscall (openbsd-amd64), const EWOULDBLOCK = 35 pkg syscall (openbsd-amd64), const EXDEV = 18 pkg syscall (openbsd-amd64), const EXTA = 19200 pkg syscall (openbsd-amd64), const EXTB = 38400 pkg syscall (openbsd-amd64), const EXTPROC = 2048 pkg syscall (openbsd-amd64), const FD_CLOEXEC = 1 pkg syscall (openbsd-amd64), const FD_SETSIZE = 1024 pkg syscall (openbsd-amd64), const FLUSHO = 8388608 pkg syscall (openbsd-amd64), const F_DUPFD = 0 pkg syscall (openbsd-amd64), const F_DUPFD_CLOEXEC = 10 pkg syscall (openbsd-amd64), const F_GETFD = 1 pkg syscall (openbsd-amd64), const F_GETFL = 3 pkg syscall (openbsd-amd64), const F_GETLK = 7 pkg syscall (openbsd-amd64), const F_GETOWN = 5 pkg syscall (openbsd-amd64), const F_OK = 0 pkg syscall (openbsd-amd64), const F_RDLCK = 1 pkg syscall (openbsd-amd64), const F_SETFD = 2 pkg syscall (openbsd-amd64), const F_SETFL = 4 pkg syscall (openbsd-amd64), const F_SETLK = 8 pkg syscall (openbsd-amd64), const F_SETLKW = 9 pkg syscall (openbsd-amd64), const F_SETOWN = 6 pkg syscall (openbsd-amd64), const F_UNLCK = 2 pkg syscall (openbsd-amd64), const F_WRLCK = 3 pkg syscall (openbsd-amd64), const HUPCL = 16384 pkg syscall (openbsd-amd64), const ICANON = 256 pkg syscall (openbsd-amd64), const ICRNL = 256 pkg syscall (openbsd-amd64), const IEXTEN = 1024 pkg syscall (openbsd-amd64), const IFAN_ARRIVAL = 0 pkg syscall (openbsd-amd64), const IFAN_DEPARTURE = 1 pkg syscall (openbsd-amd64), const IFA_ROUTE = 1 pkg syscall (openbsd-amd64), const IFF_ALLMULTI = 512 pkg syscall (openbsd-amd64), const IFF_CANTCHANGE = 36434 pkg syscall (openbsd-amd64), const IFF_DEBUG = 4 pkg syscall (openbsd-amd64), const IFF_LINK0 = 4096 pkg syscall (openbsd-amd64), const IFF_LINK1 = 8192 pkg syscall (openbsd-amd64), const IFF_LINK2 = 16384 pkg syscall (openbsd-amd64), const IFF_LOOPBACK = 8 pkg syscall (openbsd-amd64), const IFF_MULTICAST = 32768 pkg syscall (openbsd-amd64), const IFF_NOARP = 128 pkg syscall (openbsd-amd64), const IFF_NOTRAILERS = 32 pkg syscall (openbsd-amd64), const IFF_OACTIVE = 1024 pkg syscall (openbsd-amd64), const IFF_POINTOPOINT = 16 pkg syscall (openbsd-amd64), const IFF_PROMISC = 256 pkg syscall (openbsd-amd64), const IFF_RUNNING = 64 pkg syscall (openbsd-amd64), const IFF_SIMPLEX = 2048 pkg syscall (openbsd-amd64), const IFNAMSIZ = 16 pkg syscall (openbsd-amd64), const IFT_1822 = 2 pkg syscall (openbsd-amd64), const IFT_A12MPPSWITCH = 130 pkg syscall (openbsd-amd64), const IFT_AAL2 = 187 pkg syscall (openbsd-amd64), const IFT_AAL5 = 49 pkg syscall (openbsd-amd64), const IFT_ADSL = 94 pkg syscall (openbsd-amd64), const IFT_AFLANE8023 = 59 pkg syscall (openbsd-amd64), const IFT_AFLANE8025 = 60 pkg syscall (openbsd-amd64), const IFT_ARAP = 88 pkg syscall (openbsd-amd64), const IFT_ARCNET = 35 pkg syscall (openbsd-amd64), const IFT_ARCNETPLUS = 36 pkg syscall (openbsd-amd64), const IFT_ASYNC = 84 pkg syscall (openbsd-amd64), const IFT_ATM = 37 pkg syscall (openbsd-amd64), const IFT_ATMDXI = 105 pkg syscall (openbsd-amd64), const IFT_ATMFUNI = 106 pkg syscall (openbsd-amd64), const IFT_ATMIMA = 107 pkg syscall (openbsd-amd64), const IFT_ATMLOGICAL = 80 pkg syscall (openbsd-amd64), const IFT_ATMRADIO = 189 pkg syscall (openbsd-amd64), const IFT_ATMSUBINTERFACE = 134 pkg syscall (openbsd-amd64), const IFT_ATMVCIENDPT = 194 pkg syscall (openbsd-amd64), const IFT_ATMVIRTUAL = 149 pkg syscall (openbsd-amd64), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (openbsd-amd64), const IFT_BLUETOOTH = 248 pkg syscall (openbsd-amd64), const IFT_BRIDGE = 209 pkg syscall (openbsd-amd64), const IFT_BSC = 83 pkg syscall (openbsd-amd64), const IFT_CARP = 247 pkg syscall (openbsd-amd64), const IFT_CCTEMUL = 61 pkg syscall (openbsd-amd64), const IFT_CEPT = 19 pkg syscall (openbsd-amd64), const IFT_CES = 133 pkg syscall (openbsd-amd64), const IFT_CHANNEL = 70 pkg syscall (openbsd-amd64), const IFT_CNR = 85 pkg syscall (openbsd-amd64), const IFT_COFFEE = 132 pkg syscall (openbsd-amd64), const IFT_COMPOSITELINK = 155 pkg syscall (openbsd-amd64), const IFT_DCN = 141 pkg syscall (openbsd-amd64), const IFT_DIGITALPOWERLINE = 138 pkg syscall (openbsd-amd64), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (openbsd-amd64), const IFT_DLSW = 74 pkg syscall (openbsd-amd64), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (openbsd-amd64), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (openbsd-amd64), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (openbsd-amd64), const IFT_DOCSCABLEUPSTREAMCHANNEL = 205 pkg syscall (openbsd-amd64), const IFT_DS0 = 81 pkg syscall (openbsd-amd64), const IFT_DS0BUNDLE = 82 pkg syscall (openbsd-amd64), const IFT_DS1FDL = 170 pkg syscall (openbsd-amd64), const IFT_DS3 = 30 pkg syscall (openbsd-amd64), const IFT_DTM = 140 pkg syscall (openbsd-amd64), const IFT_DUMMY = 241 pkg syscall (openbsd-amd64), const IFT_DVBASILN = 172 pkg syscall (openbsd-amd64), const IFT_DVBASIOUT = 173 pkg syscall (openbsd-amd64), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (openbsd-amd64), const IFT_DVBRCCMACLAYER = 146 pkg syscall (openbsd-amd64), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (openbsd-amd64), const IFT_ECONET = 206 pkg syscall (openbsd-amd64), const IFT_ENC = 244 pkg syscall (openbsd-amd64), const IFT_EON = 25 pkg syscall (openbsd-amd64), const IFT_EPLRS = 87 pkg syscall (openbsd-amd64), const IFT_ESCON = 73 pkg syscall (openbsd-amd64), const IFT_ETHER = 6 pkg syscall (openbsd-amd64), const IFT_FAITH = 243 pkg syscall (openbsd-amd64), const IFT_FAST = 125 pkg syscall (openbsd-amd64), const IFT_FASTETHER = 62 pkg syscall (openbsd-amd64), const IFT_FASTETHERFX = 69 pkg syscall (openbsd-amd64), const IFT_FDDI = 15 pkg syscall (openbsd-amd64), const IFT_FIBRECHANNEL = 56 pkg syscall (openbsd-amd64), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (openbsd-amd64), const IFT_FRAMERELAYMPI = 92 pkg syscall (openbsd-amd64), const IFT_FRDLCIENDPT = 193 pkg syscall (openbsd-amd64), const IFT_FRELAY = 32 pkg syscall (openbsd-amd64), const IFT_FRELAYDCE = 44 pkg syscall (openbsd-amd64), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (openbsd-amd64), const IFT_FRFORWARD = 158 pkg syscall (openbsd-amd64), const IFT_G703AT2MB = 67 pkg syscall (openbsd-amd64), const IFT_G703AT64K = 66 pkg syscall (openbsd-amd64), const IFT_GIF = 240 pkg syscall (openbsd-amd64), const IFT_GIGABITETHERNET = 117 pkg syscall (openbsd-amd64), const IFT_GR303IDT = 178 pkg syscall (openbsd-amd64), const IFT_GR303RDT = 177 pkg syscall (openbsd-amd64), const IFT_H323GATEKEEPER = 164 pkg syscall (openbsd-amd64), const IFT_H323PROXY = 165 pkg syscall (openbsd-amd64), const IFT_HDH1822 = 3 pkg syscall (openbsd-amd64), const IFT_HDLC = 118 pkg syscall (openbsd-amd64), const IFT_HDSL2 = 168 pkg syscall (openbsd-amd64), const IFT_HIPERLAN2 = 183 pkg syscall (openbsd-amd64), const IFT_HIPPI = 47 pkg syscall (openbsd-amd64), const IFT_HIPPIINTERFACE = 57 pkg syscall (openbsd-amd64), const IFT_HOSTPAD = 90 pkg syscall (openbsd-amd64), const IFT_HSSI = 46 pkg syscall (openbsd-amd64), const IFT_HY = 14 pkg syscall (openbsd-amd64), const IFT_IBM370PARCHAN = 72 pkg syscall (openbsd-amd64), const IFT_IDSL = 154 pkg syscall (openbsd-amd64), const IFT_IEEE1394 = 144 pkg syscall (openbsd-amd64), const IFT_IEEE80211 = 71 pkg syscall (openbsd-amd64), const IFT_IEEE80212 = 55 pkg syscall (openbsd-amd64), const IFT_IEEE8023ADLAG = 161 pkg syscall (openbsd-amd64), const IFT_IFGSN = 145 pkg syscall (openbsd-amd64), const IFT_IMT = 190 pkg syscall (openbsd-amd64), const IFT_INFINIBAND = 199 pkg syscall (openbsd-amd64), const IFT_INTERLEAVE = 124 pkg syscall (openbsd-amd64), const IFT_IP = 126 pkg syscall (openbsd-amd64), const IFT_IPFORWARD = 142 pkg syscall (openbsd-amd64), const IFT_IPOVERATM = 114 pkg syscall (openbsd-amd64), const IFT_IPOVERCDLC = 109 pkg syscall (openbsd-amd64), const IFT_IPOVERCLAW = 110 pkg syscall (openbsd-amd64), const IFT_IPSWITCH = 78 pkg syscall (openbsd-amd64), const IFT_ISDN = 63 pkg syscall (openbsd-amd64), const IFT_ISDNBASIC = 20 pkg syscall (openbsd-amd64), const IFT_ISDNPRIMARY = 21 pkg syscall (openbsd-amd64), const IFT_ISDNS = 75 pkg syscall (openbsd-amd64), const IFT_ISDNU = 76 pkg syscall (openbsd-amd64), const IFT_ISO88022LLC = 41 pkg syscall (openbsd-amd64), const IFT_ISO88023 = 7 pkg syscall (openbsd-amd64), const IFT_ISO88024 = 8 pkg syscall (openbsd-amd64), const IFT_ISO88025 = 9 pkg syscall (openbsd-amd64), const IFT_ISO88025CRFPINT = 98 pkg syscall (openbsd-amd64), const IFT_ISO88025DTR = 86 pkg syscall (openbsd-amd64), const IFT_ISO88025FIBER = 115 pkg syscall (openbsd-amd64), const IFT_ISO88026 = 10 pkg syscall (openbsd-amd64), const IFT_ISUP = 179 pkg syscall (openbsd-amd64), const IFT_L2VLAN = 135 pkg syscall (openbsd-amd64), const IFT_L3IPVLAN = 136 pkg syscall (openbsd-amd64), const IFT_L3IPXVLAN = 137 pkg syscall (openbsd-amd64), const IFT_LAPB = 16 pkg syscall (openbsd-amd64), const IFT_LAPD = 77 pkg syscall (openbsd-amd64), const IFT_LAPF = 119 pkg syscall (openbsd-amd64), const IFT_LINEGROUP = 210 pkg syscall (openbsd-amd64), const IFT_LOCALTALK = 42 pkg syscall (openbsd-amd64), const IFT_LOOP = 24 pkg syscall (openbsd-amd64), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (openbsd-amd64), const IFT_MFSIGLINK = 167 pkg syscall (openbsd-amd64), const IFT_MIOX25 = 38 pkg syscall (openbsd-amd64), const IFT_MODEM = 48 pkg syscall (openbsd-amd64), const IFT_MPC = 113 pkg syscall (openbsd-amd64), const IFT_MPLS = 166 pkg syscall (openbsd-amd64), const IFT_MPLSTUNNEL = 150 pkg syscall (openbsd-amd64), const IFT_MSDSL = 143 pkg syscall (openbsd-amd64), const IFT_MVL = 191 pkg syscall (openbsd-amd64), const IFT_MYRINET = 99 pkg syscall (openbsd-amd64), const IFT_NFAS = 175 pkg syscall (openbsd-amd64), const IFT_NSIP = 27 pkg syscall (openbsd-amd64), const IFT_OPTICALCHANNEL = 195 pkg syscall (openbsd-amd64), const IFT_OPTICALTRANSPORT = 196 pkg syscall (openbsd-amd64), const IFT_OTHER = 1 pkg syscall (openbsd-amd64), const IFT_P10 = 12 pkg syscall (openbsd-amd64), const IFT_P80 = 13 pkg syscall (openbsd-amd64), const IFT_PARA = 34 pkg syscall (openbsd-amd64), const IFT_PFLOG = 245 pkg syscall (openbsd-amd64), const IFT_PFLOW = 249 pkg syscall (openbsd-amd64), const IFT_PFSYNC = 246 pkg syscall (openbsd-amd64), const IFT_PLC = 174 pkg syscall (openbsd-amd64), const IFT_PON155 = 207 pkg syscall (openbsd-amd64), const IFT_PON622 = 208 pkg syscall (openbsd-amd64), const IFT_POS = 171 pkg syscall (openbsd-amd64), const IFT_PPP = 23 pkg syscall (openbsd-amd64), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (openbsd-amd64), const IFT_PROPATM = 197 pkg syscall (openbsd-amd64), const IFT_PROPBWAP2MP = 184 pkg syscall (openbsd-amd64), const IFT_PROPCNLS = 89 pkg syscall (openbsd-amd64), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (openbsd-amd64), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (openbsd-amd64), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (openbsd-amd64), const IFT_PROPMUX = 54 pkg syscall (openbsd-amd64), const IFT_PROPVIRTUAL = 53 pkg syscall (openbsd-amd64), const IFT_PROPWIRELESSP2P = 157 pkg syscall (openbsd-amd64), const IFT_PTPSERIAL = 22 pkg syscall (openbsd-amd64), const IFT_PVC = 242 pkg syscall (openbsd-amd64), const IFT_Q2931 = 201 pkg syscall (openbsd-amd64), const IFT_QLLC = 68 pkg syscall (openbsd-amd64), const IFT_RADIOMAC = 188 pkg syscall (openbsd-amd64), const IFT_RADSL = 95 pkg syscall (openbsd-amd64), const IFT_REACHDSL = 192 pkg syscall (openbsd-amd64), const IFT_RFC1483 = 159 pkg syscall (openbsd-amd64), const IFT_RS232 = 33 pkg syscall (openbsd-amd64), const IFT_RSRB = 79 pkg syscall (openbsd-amd64), const IFT_SDLC = 17 pkg syscall (openbsd-amd64), const IFT_SDSL = 96 pkg syscall (openbsd-amd64), const IFT_SHDSL = 169 pkg syscall (openbsd-amd64), const IFT_SIP = 31 pkg syscall (openbsd-amd64), const IFT_SIPSIG = 204 pkg syscall (openbsd-amd64), const IFT_SIPTG = 203 pkg syscall (openbsd-amd64), const IFT_SLIP = 28 pkg syscall (openbsd-amd64), const IFT_SMDSDXI = 43 pkg syscall (openbsd-amd64), const IFT_SMDSICIP = 52 pkg syscall (openbsd-amd64), const IFT_SONET = 39 pkg syscall (openbsd-amd64), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (openbsd-amd64), const IFT_SONETPATH = 50 pkg syscall (openbsd-amd64), const IFT_SONETVT = 51 pkg syscall (openbsd-amd64), const IFT_SRP = 151 pkg syscall (openbsd-amd64), const IFT_SS7SIGLINK = 156 pkg syscall (openbsd-amd64), const IFT_STACKTOSTACK = 111 pkg syscall (openbsd-amd64), const IFT_STARLAN = 11 pkg syscall (openbsd-amd64), const IFT_T1 = 18 pkg syscall (openbsd-amd64), const IFT_TDLC = 116 pkg syscall (openbsd-amd64), const IFT_TELINK = 200 pkg syscall (openbsd-amd64), const IFT_TERMPAD = 91 pkg syscall (openbsd-amd64), const IFT_TR008 = 176 pkg syscall (openbsd-amd64), const IFT_TRANSPHDLC = 123 pkg syscall (openbsd-amd64), const IFT_TUNNEL = 131 pkg syscall (openbsd-amd64), const IFT_ULTRA = 29 pkg syscall (openbsd-amd64), const IFT_USB = 160 pkg syscall (openbsd-amd64), const IFT_V11 = 64 pkg syscall (openbsd-amd64), const IFT_V35 = 45 pkg syscall (openbsd-amd64), const IFT_V36 = 65 pkg syscall (openbsd-amd64), const IFT_V37 = 120 pkg syscall (openbsd-amd64), const IFT_VDSL = 97 pkg syscall (openbsd-amd64), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (openbsd-amd64), const IFT_VIRTUALTG = 202 pkg syscall (openbsd-amd64), const IFT_VOICEDID = 213 pkg syscall (openbsd-amd64), const IFT_VOICEEM = 100 pkg syscall (openbsd-amd64), const IFT_VOICEEMFGD = 211 pkg syscall (openbsd-amd64), const IFT_VOICEENCAP = 103 pkg syscall (openbsd-amd64), const IFT_VOICEFGDEANA = 212 pkg syscall (openbsd-amd64), const IFT_VOICEFXO = 101 pkg syscall (openbsd-amd64), const IFT_VOICEFXS = 102 pkg syscall (openbsd-amd64), const IFT_VOICEOVERATM = 152 pkg syscall (openbsd-amd64), const IFT_VOICEOVERCABLE = 198 pkg syscall (openbsd-amd64), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (openbsd-amd64), const IFT_VOICEOVERIP = 104 pkg syscall (openbsd-amd64), const IFT_X213 = 93 pkg syscall (openbsd-amd64), const IFT_X25 = 5 pkg syscall (openbsd-amd64), const IFT_X25DDN = 4 pkg syscall (openbsd-amd64), const IFT_X25HUNTGROUP = 122 pkg syscall (openbsd-amd64), const IFT_X25MLP = 121 pkg syscall (openbsd-amd64), const IFT_X25PLE = 40 pkg syscall (openbsd-amd64), const IFT_XETHER = 26 pkg syscall (openbsd-amd64), const IGNBRK = 1 pkg syscall (openbsd-amd64), const IGNCR = 128 pkg syscall (openbsd-amd64), const IGNPAR = 4 pkg syscall (openbsd-amd64), const IMAXBEL = 8192 pkg syscall (openbsd-amd64), const INLCR = 64 pkg syscall (openbsd-amd64), const INPCK = 16 pkg syscall (openbsd-amd64), const IN_CLASSA_HOST = 16777215 pkg syscall (openbsd-amd64), const IN_CLASSA_MAX = 128 pkg syscall (openbsd-amd64), const IN_CLASSA_NET = 4278190080 pkg syscall (openbsd-amd64), const IN_CLASSA_NSHIFT = 24 pkg syscall (openbsd-amd64), const IN_CLASSB_HOST = 65535 pkg syscall (openbsd-amd64), const IN_CLASSB_MAX = 65536 pkg syscall (openbsd-amd64), const IN_CLASSB_NET = 4294901760 pkg syscall (openbsd-amd64), const IN_CLASSB_NSHIFT = 16 pkg syscall (openbsd-amd64), const IN_CLASSC_HOST = 255 pkg syscall (openbsd-amd64), const IN_CLASSC_NET = 4294967040 pkg syscall (openbsd-amd64), const IN_CLASSC_NSHIFT = 8 pkg syscall (openbsd-amd64), const IN_CLASSD_HOST = 268435455 pkg syscall (openbsd-amd64), const IN_CLASSD_NET = 4026531840 pkg syscall (openbsd-amd64), const IN_CLASSD_NSHIFT = 28 pkg syscall (openbsd-amd64), const IN_LOOPBACKNET = 127 pkg syscall (openbsd-amd64), const IN_RFC3021_HOST = 1 pkg syscall (openbsd-amd64), const IN_RFC3021_NET = 4294967294 pkg syscall (openbsd-amd64), const IN_RFC3021_NSHIFT = 31 pkg syscall (openbsd-amd64), const IPPROTO_AH = 51 pkg syscall (openbsd-amd64), const IPPROTO_CARP = 112 pkg syscall (openbsd-amd64), const IPPROTO_DIVERT = 258 pkg syscall (openbsd-amd64), const IPPROTO_DONE = 257 pkg syscall (openbsd-amd64), const IPPROTO_DSTOPTS = 60 pkg syscall (openbsd-amd64), const IPPROTO_EGP = 8 pkg syscall (openbsd-amd64), const IPPROTO_ENCAP = 98 pkg syscall (openbsd-amd64), const IPPROTO_EON = 80 pkg syscall (openbsd-amd64), const IPPROTO_ESP = 50 pkg syscall (openbsd-amd64), const IPPROTO_ETHERIP = 97 pkg syscall (openbsd-amd64), const IPPROTO_FRAGMENT = 44 pkg syscall (openbsd-amd64), const IPPROTO_GGP = 3 pkg syscall (openbsd-amd64), const IPPROTO_GRE = 47 pkg syscall (openbsd-amd64), const IPPROTO_HOPOPTS = 0 pkg syscall (openbsd-amd64), const IPPROTO_ICMP = 1 pkg syscall (openbsd-amd64), const IPPROTO_ICMPV6 = 58 pkg syscall (openbsd-amd64), const IPPROTO_IDP = 22 pkg syscall (openbsd-amd64), const IPPROTO_IGMP = 2 pkg syscall (openbsd-amd64), const IPPROTO_IPCOMP = 108 pkg syscall (openbsd-amd64), const IPPROTO_IPIP = 4 pkg syscall (openbsd-amd64), const IPPROTO_IPV4 = 4 pkg syscall (openbsd-amd64), const IPPROTO_MAX = 256 pkg syscall (openbsd-amd64), const IPPROTO_MAXID = 259 pkg syscall (openbsd-amd64), const IPPROTO_MOBILE = 55 pkg syscall (openbsd-amd64), const IPPROTO_MPLS = 137 pkg syscall (openbsd-amd64), const IPPROTO_NONE = 59 pkg syscall (openbsd-amd64), const IPPROTO_PFSYNC = 240 pkg syscall (openbsd-amd64), const IPPROTO_PIM = 103 pkg syscall (openbsd-amd64), const IPPROTO_PUP = 12 pkg syscall (openbsd-amd64), const IPPROTO_RAW = 255 pkg syscall (openbsd-amd64), const IPPROTO_ROUTING = 43 pkg syscall (openbsd-amd64), const IPPROTO_RSVP = 46 pkg syscall (openbsd-amd64), const IPPROTO_TP = 29 pkg syscall (openbsd-amd64), const IPV6_AUTH_LEVEL = 53 pkg syscall (openbsd-amd64), const IPV6_AUTOFLOWLABEL = 59 pkg syscall (openbsd-amd64), const IPV6_CHECKSUM = 26 pkg syscall (openbsd-amd64), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (openbsd-amd64), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (openbsd-amd64), const IPV6_DEFHLIM = 64 pkg syscall (openbsd-amd64), const IPV6_DONTFRAG = 62 pkg syscall (openbsd-amd64), const IPV6_DSTOPTS = 50 pkg syscall (openbsd-amd64), const IPV6_ESP_NETWORK_LEVEL = 55 pkg syscall (openbsd-amd64), const IPV6_ESP_TRANS_LEVEL = 54 pkg syscall (openbsd-amd64), const IPV6_FAITH = 29 pkg syscall (openbsd-amd64), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (openbsd-amd64), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (openbsd-amd64), const IPV6_FRAGTTL = 120 pkg syscall (openbsd-amd64), const IPV6_HLIMDEC = 1 pkg syscall (openbsd-amd64), const IPV6_HOPLIMIT = 47 pkg syscall (openbsd-amd64), const IPV6_HOPOPTS = 49 pkg syscall (openbsd-amd64), const IPV6_IPCOMP_LEVEL = 60 pkg syscall (openbsd-amd64), const IPV6_JOIN_GROUP = 12 pkg syscall (openbsd-amd64), const IPV6_LEAVE_GROUP = 13 pkg syscall (openbsd-amd64), const IPV6_MAXHLIM = 255 pkg syscall (openbsd-amd64), const IPV6_MAXPACKET = 65535 pkg syscall (openbsd-amd64), const IPV6_MMTU = 1280 pkg syscall (openbsd-amd64), const IPV6_MULTICAST_HOPS = 10 pkg syscall (openbsd-amd64), const IPV6_MULTICAST_IF = 9 pkg syscall (openbsd-amd64), const IPV6_MULTICAST_LOOP = 11 pkg syscall (openbsd-amd64), const IPV6_NEXTHOP = 48 pkg syscall (openbsd-amd64), const IPV6_OPTIONS = 1 pkg syscall (openbsd-amd64), const IPV6_PATHMTU = 44 pkg syscall (openbsd-amd64), const IPV6_PIPEX = 63 pkg syscall (openbsd-amd64), const IPV6_PKTINFO = 46 pkg syscall (openbsd-amd64), const IPV6_PORTRANGE = 14 pkg syscall (openbsd-amd64), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (openbsd-amd64), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (openbsd-amd64), const IPV6_PORTRANGE_LOW = 2 pkg syscall (openbsd-amd64), const IPV6_RECVDSTOPTS = 40 pkg syscall (openbsd-amd64), const IPV6_RECVHOPLIMIT = 37 pkg syscall (openbsd-amd64), const IPV6_RECVHOPOPTS = 39 pkg syscall (openbsd-amd64), const IPV6_RECVPATHMTU = 43 pkg syscall (openbsd-amd64), const IPV6_RECVPKTINFO = 36 pkg syscall (openbsd-amd64), const IPV6_RECVRTHDR = 38 pkg syscall (openbsd-amd64), const IPV6_RECVTCLASS = 57 pkg syscall (openbsd-amd64), const IPV6_RTABLE = 4129 pkg syscall (openbsd-amd64), const IPV6_RTHDR = 51 pkg syscall (openbsd-amd64), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (openbsd-amd64), const IPV6_RTHDR_LOOSE = 0 pkg syscall (openbsd-amd64), const IPV6_RTHDR_STRICT = 1 pkg syscall (openbsd-amd64), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (openbsd-amd64), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (openbsd-amd64), const IPV6_TCLASS = 61 pkg syscall (openbsd-amd64), const IPV6_UNICAST_HOPS = 4 pkg syscall (openbsd-amd64), const IPV6_USE_MIN_MTU = 42 pkg syscall (openbsd-amd64), const IPV6_V6ONLY = 27 pkg syscall (openbsd-amd64), const IPV6_VERSION = 96 pkg syscall (openbsd-amd64), const IPV6_VERSION_MASK = 240 pkg syscall (openbsd-amd64), const IP_ADD_MEMBERSHIP = 12 pkg syscall (openbsd-amd64), const IP_AUTH_LEVEL = 20 pkg syscall (openbsd-amd64), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (openbsd-amd64), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (openbsd-amd64), const IP_DF = 16384 pkg syscall (openbsd-amd64), const IP_DROP_MEMBERSHIP = 13 pkg syscall (openbsd-amd64), const IP_ESP_NETWORK_LEVEL = 22 pkg syscall (openbsd-amd64), const IP_ESP_TRANS_LEVEL = 21 pkg syscall (openbsd-amd64), const IP_HDRINCL = 2 pkg syscall (openbsd-amd64), const IP_IPCOMP_LEVEL = 29 pkg syscall (openbsd-amd64), const IP_IPSECFLOWINFO = 36 pkg syscall (openbsd-amd64), const IP_IPSEC_LOCAL_AUTH = 27 pkg syscall (openbsd-amd64), const IP_IPSEC_LOCAL_CRED = 25 pkg syscall (openbsd-amd64), const IP_IPSEC_LOCAL_ID = 23 pkg syscall (openbsd-amd64), const IP_IPSEC_REMOTE_AUTH = 28 pkg syscall (openbsd-amd64), const IP_IPSEC_REMOTE_CRED = 26 pkg syscall (openbsd-amd64), const IP_IPSEC_REMOTE_ID = 24 pkg syscall (openbsd-amd64), const IP_MAXPACKET = 65535 pkg syscall (openbsd-amd64), const IP_MAX_MEMBERSHIPS = 4095 pkg syscall (openbsd-amd64), const IP_MF = 8192 pkg syscall (openbsd-amd64), const IP_MINTTL = 32 pkg syscall (openbsd-amd64), const IP_MIN_MEMBERSHIPS = 15 pkg syscall (openbsd-amd64), const IP_MSS = 576 pkg syscall (openbsd-amd64), const IP_MULTICAST_IF = 9 pkg syscall (openbsd-amd64), const IP_MULTICAST_LOOP = 11 pkg syscall (openbsd-amd64), const IP_MULTICAST_TTL = 10 pkg syscall (openbsd-amd64), const IP_OFFMASK = 8191 pkg syscall (openbsd-amd64), const IP_OPTIONS = 1 pkg syscall (openbsd-amd64), const IP_PIPEX = 34 pkg syscall (openbsd-amd64), const IP_PORTRANGE = 19 pkg syscall (openbsd-amd64), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (openbsd-amd64), const IP_PORTRANGE_HIGH = 1 pkg syscall (openbsd-amd64), const IP_PORTRANGE_LOW = 2 pkg syscall (openbsd-amd64), const IP_RECVDSTADDR = 7 pkg syscall (openbsd-amd64), const IP_RECVDSTPORT = 33 pkg syscall (openbsd-amd64), const IP_RECVIF = 30 pkg syscall (openbsd-amd64), const IP_RECVOPTS = 5 pkg syscall (openbsd-amd64), const IP_RECVRETOPTS = 6 pkg syscall (openbsd-amd64), const IP_RECVRTABLE = 35 pkg syscall (openbsd-amd64), const IP_RECVTTL = 31 pkg syscall (openbsd-amd64), const IP_RETOPTS = 8 pkg syscall (openbsd-amd64), const IP_RF = 32768 pkg syscall (openbsd-amd64), const IP_RTABLE = 4129 pkg syscall (openbsd-amd64), const IP_TOS = 3 pkg syscall (openbsd-amd64), const IP_TTL = 4 pkg syscall (openbsd-amd64), const ISIG = 128 pkg syscall (openbsd-amd64), const ISTRIP = 32 pkg syscall (openbsd-amd64), const IXANY = 2048 pkg syscall (openbsd-amd64), const IXOFF = 1024 pkg syscall (openbsd-amd64), const IXON = 512 pkg syscall (openbsd-amd64), const ImplementsGetwd = false pkg syscall (openbsd-amd64), const LCNT_OVERLOAD_FLUSH = 6 pkg syscall (openbsd-amd64), const LOCK_EX = 2 pkg syscall (openbsd-amd64), const LOCK_NB = 4 pkg syscall (openbsd-amd64), const LOCK_SH = 1 pkg syscall (openbsd-amd64), const LOCK_UN = 8 pkg syscall (openbsd-amd64), const MSG_BCAST = 256 pkg syscall (openbsd-amd64), const MSG_CTRUNC = 32 pkg syscall (openbsd-amd64), const MSG_DONTROUTE = 4 pkg syscall (openbsd-amd64), const MSG_DONTWAIT = 128 pkg syscall (openbsd-amd64), const MSG_EOR = 8 pkg syscall (openbsd-amd64), const MSG_MCAST = 512 pkg syscall (openbsd-amd64), const MSG_NOSIGNAL = 1024 pkg syscall (openbsd-amd64), const MSG_OOB = 1 pkg syscall (openbsd-amd64), const MSG_PEEK = 2 pkg syscall (openbsd-amd64), const MSG_TRUNC = 16 pkg syscall (openbsd-amd64), const MSG_WAITALL = 64 pkg syscall (openbsd-amd64), const NAME_MAX = 255 pkg syscall (openbsd-amd64), const NET_RT_DUMP = 1 pkg syscall (openbsd-amd64), const NET_RT_FLAGS = 2 pkg syscall (openbsd-amd64), const NET_RT_IFLIST = 3 pkg syscall (openbsd-amd64), const NET_RT_MAXID = 6 pkg syscall (openbsd-amd64), const NET_RT_STATS = 4 pkg syscall (openbsd-amd64), const NET_RT_TABLE = 5 pkg syscall (openbsd-amd64), const NOFLSH = 2147483648 pkg syscall (openbsd-amd64), const NOTE_ATTRIB = 8 pkg syscall (openbsd-amd64), const NOTE_CHILD = 4 pkg syscall (openbsd-amd64), const NOTE_DELETE = 1 pkg syscall (openbsd-amd64), const NOTE_EOF = 2 pkg syscall (openbsd-amd64), const NOTE_EXEC = 536870912 pkg syscall (openbsd-amd64), const NOTE_EXIT = 2147483648 pkg syscall (openbsd-amd64), const NOTE_EXTEND = 4 pkg syscall (openbsd-amd64), const NOTE_FORK = 1073741824 pkg syscall (openbsd-amd64), const NOTE_LINK = 16 pkg syscall (openbsd-amd64), const NOTE_LOWAT = 1 pkg syscall (openbsd-amd64), const NOTE_PCTRLMASK = 4026531840 pkg syscall (openbsd-amd64), const NOTE_PDATAMASK = 1048575 pkg syscall (openbsd-amd64), const NOTE_RENAME = 32 pkg syscall (openbsd-amd64), const NOTE_REVOKE = 64 pkg syscall (openbsd-amd64), const NOTE_TRACK = 1 pkg syscall (openbsd-amd64), const NOTE_TRACKERR = 2 pkg syscall (openbsd-amd64), const NOTE_TRUNCATE = 128 pkg syscall (openbsd-amd64), const NOTE_WRITE = 2 pkg syscall (openbsd-amd64), const OCRNL = 16 pkg syscall (openbsd-amd64), const ONLCR = 2 pkg syscall (openbsd-amd64), const ONLRET = 128 pkg syscall (openbsd-amd64), const ONOCR = 64 pkg syscall (openbsd-amd64), const ONOEOT = 8 pkg syscall (openbsd-amd64), const OPOST = 1 pkg syscall (openbsd-amd64), const O_ACCMODE = 3 pkg syscall (openbsd-amd64), const O_APPEND = 8 pkg syscall (openbsd-amd64), const O_ASYNC = 64 pkg syscall (openbsd-amd64), const O_CLOEXEC = 65536 pkg syscall (openbsd-amd64), const O_CREAT = 512 pkg syscall (openbsd-amd64), const O_DIRECTORY = 131072 pkg syscall (openbsd-amd64), const O_DSYNC = 128 pkg syscall (openbsd-amd64), const O_EXCL = 2048 pkg syscall (openbsd-amd64), const O_EXLOCK = 32 pkg syscall (openbsd-amd64), const O_FSYNC = 128 pkg syscall (openbsd-amd64), const O_NDELAY = 4 pkg syscall (openbsd-amd64), const O_NOCTTY = 32768 pkg syscall (openbsd-amd64), const O_NOFOLLOW = 256 pkg syscall (openbsd-amd64), const O_NONBLOCK = 4 pkg syscall (openbsd-amd64), const O_RSYNC = 128 pkg syscall (openbsd-amd64), const O_SHLOCK = 16 pkg syscall (openbsd-amd64), const O_SYNC = 128 pkg syscall (openbsd-amd64), const O_TRUNC = 1024 pkg syscall (openbsd-amd64), const PARENB = 4096 pkg syscall (openbsd-amd64), const PARMRK = 8 pkg syscall (openbsd-amd64), const PARODD = 8192 pkg syscall (openbsd-amd64), const PENDIN = 536870912 pkg syscall (openbsd-amd64), const PF_FLUSH = 1 pkg syscall (openbsd-amd64), const PMC5_PIPELINE_FLUSH = 21 pkg syscall (openbsd-amd64), const PTRACE_CONT = 7 pkg syscall (openbsd-amd64), const PTRACE_KILL = 8 pkg syscall (openbsd-amd64), const PTRACE_TRACEME = 0 pkg syscall (openbsd-amd64), const RLIMIT_CORE = 4 pkg syscall (openbsd-amd64), const RLIMIT_CPU = 0 pkg syscall (openbsd-amd64), const RLIMIT_DATA = 2 pkg syscall (openbsd-amd64), const RLIMIT_FSIZE = 1 pkg syscall (openbsd-amd64), const RLIMIT_NOFILE = 8 pkg syscall (openbsd-amd64), const RLIMIT_STACK = 3 pkg syscall (openbsd-amd64), const RLIM_INFINITY = 9223372036854775807 pkg syscall (openbsd-amd64), const RTAX_AUTHOR = 6 pkg syscall (openbsd-amd64), const RTAX_BRD = 7 pkg syscall (openbsd-amd64), const RTAX_DST = 0 pkg syscall (openbsd-amd64), const RTAX_GATEWAY = 1 pkg syscall (openbsd-amd64), const RTAX_GENMASK = 3 pkg syscall (openbsd-amd64), const RTAX_IFA = 5 pkg syscall (openbsd-amd64), const RTAX_IFP = 4 pkg syscall (openbsd-amd64), const RTAX_LABEL = 10 pkg syscall (openbsd-amd64), const RTAX_MAX = 11 pkg syscall (openbsd-amd64), const RTAX_NETMASK = 2 pkg syscall (openbsd-amd64), const RTAX_SRC = 8 pkg syscall (openbsd-amd64), const RTAX_SRCMASK = 9 pkg syscall (openbsd-amd64), const RTA_AUTHOR = 64 pkg syscall (openbsd-amd64), const RTA_BRD = 128 pkg syscall (openbsd-amd64), const RTA_DST = 1 pkg syscall (openbsd-amd64), const RTA_GATEWAY = 2 pkg syscall (openbsd-amd64), const RTA_GENMASK = 8 pkg syscall (openbsd-amd64), const RTA_IFA = 32 pkg syscall (openbsd-amd64), const RTA_IFP = 16 pkg syscall (openbsd-amd64), const RTA_LABEL = 1024 pkg syscall (openbsd-amd64), const RTA_NETMASK = 4 pkg syscall (openbsd-amd64), const RTA_SRC = 256 pkg syscall (openbsd-amd64), const RTA_SRCMASK = 512 pkg syscall (openbsd-amd64), const RTF_ANNOUNCE = 16384 pkg syscall (openbsd-amd64), const RTF_BLACKHOLE = 4096 pkg syscall (openbsd-amd64), const RTF_CLONED = 65536 pkg syscall (openbsd-amd64), const RTF_CLONING = 256 pkg syscall (openbsd-amd64), const RTF_DONE = 64 pkg syscall (openbsd-amd64), const RTF_DYNAMIC = 16 pkg syscall (openbsd-amd64), const RTF_FMASK = 63496 pkg syscall (openbsd-amd64), const RTF_GATEWAY = 2 pkg syscall (openbsd-amd64), const RTF_HOST = 4 pkg syscall (openbsd-amd64), const RTF_LLINFO = 1024 pkg syscall (openbsd-amd64), const RTF_MASK = 128 pkg syscall (openbsd-amd64), const RTF_MODIFIED = 32 pkg syscall (openbsd-amd64), const RTF_MPATH = 262144 pkg syscall (openbsd-amd64), const RTF_MPLS = 1048576 pkg syscall (openbsd-amd64), const RTF_PERMANENT_ARP = 8192 pkg syscall (openbsd-amd64), const RTF_PROTO1 = 32768 pkg syscall (openbsd-amd64), const RTF_PROTO2 = 16384 pkg syscall (openbsd-amd64), const RTF_PROTO3 = 8192 pkg syscall (openbsd-amd64), const RTF_REJECT = 8 pkg syscall (openbsd-amd64), const RTF_SOURCE = 131072 pkg syscall (openbsd-amd64), const RTF_STATIC = 2048 pkg syscall (openbsd-amd64), const RTF_TUNNEL = 1048576 pkg syscall (openbsd-amd64), const RTF_UP = 1 pkg syscall (openbsd-amd64), const RTF_USETRAILERS = 32768 pkg syscall (openbsd-amd64), const RTF_XRESOLVE = 512 pkg syscall (openbsd-amd64), const RTM_ADD = 1 pkg syscall (openbsd-amd64), const RTM_CHANGE = 3 pkg syscall (openbsd-amd64), const RTM_DELADDR = 13 pkg syscall (openbsd-amd64), const RTM_DELETE = 2 pkg syscall (openbsd-amd64), const RTM_DESYNC = 16 pkg syscall (openbsd-amd64), const RTM_GET = 4 pkg syscall (openbsd-amd64), const RTM_IFANNOUNCE = 15 pkg syscall (openbsd-amd64), const RTM_IFINFO = 14 pkg syscall (openbsd-amd64), const RTM_LOCK = 8 pkg syscall (openbsd-amd64), const RTM_LOSING = 5 pkg syscall (openbsd-amd64), const RTM_MAXSIZE = 2048 pkg syscall (openbsd-amd64), const RTM_MISS = 7 pkg syscall (openbsd-amd64), const RTM_NEWADDR = 12 pkg syscall (openbsd-amd64), const RTM_REDIRECT = 6 pkg syscall (openbsd-amd64), const RTM_RESOLVE = 11 pkg syscall (openbsd-amd64), const RTM_RTTUNIT = 1000000 pkg syscall (openbsd-amd64), const RTM_VERSION = 4 pkg syscall (openbsd-amd64), const RTV_EXPIRE = 4 pkg syscall (openbsd-amd64), const RTV_HOPCOUNT = 2 pkg syscall (openbsd-amd64), const RTV_MTU = 1 pkg syscall (openbsd-amd64), const RTV_RPIPE = 8 pkg syscall (openbsd-amd64), const RTV_RTT = 64 pkg syscall (openbsd-amd64), const RTV_RTTVAR = 128 pkg syscall (openbsd-amd64), const RTV_SPIPE = 16 pkg syscall (openbsd-amd64), const RTV_SSTHRESH = 32 pkg syscall (openbsd-amd64), const RT_TABLEID_MAX = 255 pkg syscall (openbsd-amd64), const RUSAGE_CHILDREN = -1 pkg syscall (openbsd-amd64), const RUSAGE_SELF = 0 pkg syscall (openbsd-amd64), const RUSAGE_THREAD = 1 pkg syscall (openbsd-amd64), const SCM_RIGHTS = 1 pkg syscall (openbsd-amd64), const SCM_TIMESTAMP = 4 pkg syscall (openbsd-amd64), const SIGBUS = 10 pkg syscall (openbsd-amd64), const SIGCHLD = 20 pkg syscall (openbsd-amd64), const SIGCONT = 19 pkg syscall (openbsd-amd64), const SIGEMT = 7 pkg syscall (openbsd-amd64), const SIGINFO = 29 pkg syscall (openbsd-amd64), const SIGIO = 23 pkg syscall (openbsd-amd64), const SIGIOT = 6 pkg syscall (openbsd-amd64), const SIGPROF = 27 pkg syscall (openbsd-amd64), const SIGSTOP = 17 pkg syscall (openbsd-amd64), const SIGSYS = 12 pkg syscall (openbsd-amd64), const SIGTHR = 32 pkg syscall (openbsd-amd64), const SIGTSTP = 18 pkg syscall (openbsd-amd64), const SIGTTIN = 21 pkg syscall (openbsd-amd64), const SIGTTOU = 22 pkg syscall (openbsd-amd64), const SIGURG = 16 pkg syscall (openbsd-amd64), const SIGUSR1 = 30 pkg syscall (openbsd-amd64), const SIGUSR2 = 31 pkg syscall (openbsd-amd64), const SIGVTALRM = 26 pkg syscall (openbsd-amd64), const SIGWINCH = 28 pkg syscall (openbsd-amd64), const SIGXCPU = 24 pkg syscall (openbsd-amd64), const SIGXFSZ = 25 pkg syscall (openbsd-amd64), const SIOCADDMULTI = 2149607729 pkg syscall (openbsd-amd64), const SIOCAIFADDR = 2151704858 pkg syscall (openbsd-amd64), const SIOCAIFGROUP = 2150132103 pkg syscall (openbsd-amd64), const SIOCALIFADDR = 2182637852 pkg syscall (openbsd-amd64), const SIOCATMARK = 1074033415 pkg syscall (openbsd-amd64), const SIOCBRDGADD = 2153277756 pkg syscall (openbsd-amd64), const SIOCBRDGADDS = 2153277761 pkg syscall (openbsd-amd64), const SIOCBRDGARL = 2154719565 pkg syscall (openbsd-amd64), const SIOCBRDGDADDR = 2150132039 pkg syscall (openbsd-amd64), const SIOCBRDGDEL = 2153277757 pkg syscall (openbsd-amd64), const SIOCBRDGDELS = 2153277762 pkg syscall (openbsd-amd64), const SIOCBRDGFLUSH = 2153277768 pkg syscall (openbsd-amd64), const SIOCBRDGFRL = 2154719566 pkg syscall (openbsd-amd64), const SIOCBRDGGCACHE = 3222563137 pkg syscall (openbsd-amd64), const SIOCBRDGGFD = 3222563154 pkg syscall (openbsd-amd64), const SIOCBRDGGHT = 3222563153 pkg syscall (openbsd-amd64), const SIOCBRDGGIFFLGS = 3227019582 pkg syscall (openbsd-amd64), const SIOCBRDGGMA = 3222563155 pkg syscall (openbsd-amd64), const SIOCBRDGGPARAM = 3225446744 pkg syscall (openbsd-amd64), const SIOCBRDGGPRI = 3222563152 pkg syscall (openbsd-amd64), const SIOCBRDGGRL = 3224398159 pkg syscall (openbsd-amd64), const SIOCBRDGGSIFS = 3227019580 pkg syscall (openbsd-amd64), const SIOCBRDGGTO = 3222563142 pkg syscall (openbsd-amd64), const SIOCBRDGIFS = 3227019586 pkg syscall (openbsd-amd64), const SIOCBRDGRTS = 3223349571 pkg syscall (openbsd-amd64), const SIOCBRDGSADDR = 3223873860 pkg syscall (openbsd-amd64), const SIOCBRDGSCACHE = 2148821312 pkg syscall (openbsd-amd64), const SIOCBRDGSFD = 2148821330 pkg syscall (openbsd-amd64), const SIOCBRDGSHT = 2148821329 pkg syscall (openbsd-amd64), const SIOCBRDGSIFCOST = 2153277781 pkg syscall (openbsd-amd64), const SIOCBRDGSIFFLGS = 2153277759 pkg syscall (openbsd-amd64), const SIOCBRDGSIFPRIO = 2153277780 pkg syscall (openbsd-amd64), const SIOCBRDGSMA = 2148821331 pkg syscall (openbsd-amd64), const SIOCBRDGSPRI = 2148821328 pkg syscall (openbsd-amd64), const SIOCBRDGSPROTO = 2148821338 pkg syscall (openbsd-amd64), const SIOCBRDGSTO = 2148821317 pkg syscall (openbsd-amd64), const SIOCBRDGSTXHC = 2148821337 pkg syscall (openbsd-amd64), const SIOCDELMULTI = 2149607730 pkg syscall (openbsd-amd64), const SIOCDIFADDR = 2149607705 pkg syscall (openbsd-amd64), const SIOCDIFGROUP = 2150132105 pkg syscall (openbsd-amd64), const SIOCDIFPHYADDR = 2149607753 pkg syscall (openbsd-amd64), const SIOCDLIFADDR = 2182637854 pkg syscall (openbsd-amd64), const SIOCGETKALIVE = 3222825380 pkg syscall (openbsd-amd64), const SIOCGETLABEL = 2149607834 pkg syscall (openbsd-amd64), const SIOCGETPFLOW = 3223349758 pkg syscall (openbsd-amd64), const SIOCGETPFSYNC = 3223349752 pkg syscall (openbsd-amd64), const SIOCGETSGCNT = 3223352628 pkg syscall (openbsd-amd64), const SIOCGETVIFCNT = 3223876915 pkg syscall (openbsd-amd64), const SIOCGHIWAT = 1074033409 pkg syscall (openbsd-amd64), const SIOCGIFADDR = 3223349537 pkg syscall (openbsd-amd64), const SIOCGIFASYNCMAP = 3223349628 pkg syscall (openbsd-amd64), const SIOCGIFBRDADDR = 3223349539 pkg syscall (openbsd-amd64), const SIOCGIFCONF = 3222300964 pkg syscall (openbsd-amd64), const SIOCGIFDATA = 3223349531 pkg syscall (openbsd-amd64), const SIOCGIFDESCR = 3223349633 pkg syscall (openbsd-amd64), const SIOCGIFDSTADDR = 3223349538 pkg syscall (openbsd-amd64), const SIOCGIFFLAGS = 3223349521 pkg syscall (openbsd-amd64), const SIOCGIFGATTR = 3223873931 pkg syscall (openbsd-amd64), const SIOCGIFGENERIC = 3223349562 pkg syscall (openbsd-amd64), const SIOCGIFGMEMB = 3223873930 pkg syscall (openbsd-amd64), const SIOCGIFGROUP = 3223873928 pkg syscall (openbsd-amd64), const SIOCGIFMEDIA = 3224398134 pkg syscall (openbsd-amd64), const SIOCGIFMETRIC = 3223349527 pkg syscall (openbsd-amd64), const SIOCGIFMTU = 3223349630 pkg syscall (openbsd-amd64), const SIOCGIFNETMASK = 3223349541 pkg syscall (openbsd-amd64), const SIOCGIFPDSTADDR = 3223349576 pkg syscall (openbsd-amd64), const SIOCGIFPRIORITY = 3223349660 pkg syscall (openbsd-amd64), const SIOCGIFPSRCADDR = 3223349575 pkg syscall (openbsd-amd64), const SIOCGIFRDOMAIN = 3223349664 pkg syscall (openbsd-amd64), const SIOCGIFRTLABEL = 3223349635 pkg syscall (openbsd-amd64), const SIOCGIFTIMESLOT = 3223349638 pkg syscall (openbsd-amd64), const SIOCGIFXFLAGS = 3223349662 pkg syscall (openbsd-amd64), const SIOCGLIFADDR = 3256379677 pkg syscall (openbsd-amd64), const SIOCGLIFPHYADDR = 3256379723 pkg syscall (openbsd-amd64), const SIOCGLIFPHYRTABLE = 3223349666 pkg syscall (openbsd-amd64), const SIOCGLOWAT = 1074033411 pkg syscall (openbsd-amd64), const SIOCGPGRP = 1074033417 pkg syscall (openbsd-amd64), const SIOCGVH = 3223349750 pkg syscall (openbsd-amd64), const SIOCIFCREATE = 2149607802 pkg syscall (openbsd-amd64), const SIOCIFDESTROY = 2149607801 pkg syscall (openbsd-amd64), const SIOCIFGCLONERS = 3222301048 pkg syscall (openbsd-amd64), const SIOCSETKALIVE = 2149083555 pkg syscall (openbsd-amd64), const SIOCSETLABEL = 2149607833 pkg syscall (openbsd-amd64), const SIOCSETPFLOW = 2149607933 pkg syscall (openbsd-amd64), const SIOCSETPFSYNC = 2149607927 pkg syscall (openbsd-amd64), const SIOCSHIWAT = 2147775232 pkg syscall (openbsd-amd64), const SIOCSIFADDR = 2149607692 pkg syscall (openbsd-amd64), const SIOCSIFASYNCMAP = 2149607805 pkg syscall (openbsd-amd64), const SIOCSIFBRDADDR = 2149607699 pkg syscall (openbsd-amd64), const SIOCSIFDESCR = 2149607808 pkg syscall (openbsd-amd64), const SIOCSIFDSTADDR = 2149607694 pkg syscall (openbsd-amd64), const SIOCSIFFLAGS = 2149607696 pkg syscall (openbsd-amd64), const SIOCSIFGATTR = 2150132108 pkg syscall (openbsd-amd64), const SIOCSIFGENERIC = 2149607737 pkg syscall (openbsd-amd64), const SIOCSIFLLADDR = 2149607711 pkg syscall (openbsd-amd64), const SIOCSIFMEDIA = 3223349557 pkg syscall (openbsd-amd64), const SIOCSIFMETRIC = 2149607704 pkg syscall (openbsd-amd64), const SIOCSIFMTU = 2149607807 pkg syscall (openbsd-amd64), const SIOCSIFNETMASK = 2149607702 pkg syscall (openbsd-amd64), const SIOCSIFPHYADDR = 2151704902 pkg syscall (openbsd-amd64), const SIOCSIFPRIORITY = 2149607835 pkg syscall (openbsd-amd64), const SIOCSIFRDOMAIN = 2149607839 pkg syscall (openbsd-amd64), const SIOCSIFRTLABEL = 2149607810 pkg syscall (openbsd-amd64), const SIOCSIFTIMESLOT = 2149607813 pkg syscall (openbsd-amd64), const SIOCSIFXFLAGS = 2149607837 pkg syscall (openbsd-amd64), const SIOCSLIFPHYADDR = 2182637898 pkg syscall (openbsd-amd64), const SIOCSLIFPHYRTABLE = 2149607841 pkg syscall (openbsd-amd64), const SIOCSLOWAT = 2147775234 pkg syscall (openbsd-amd64), const SIOCSPGRP = 2147775240 pkg syscall (openbsd-amd64), const SIOCSVH = 3223349749 pkg syscall (openbsd-amd64), const SOCK_RDM = 4 pkg syscall (openbsd-amd64), const SOL_SOCKET = 65535 pkg syscall (openbsd-amd64), const SOMAXCONN = 128 pkg syscall (openbsd-amd64), const SO_ACCEPTCONN = 2 pkg syscall (openbsd-amd64), const SO_BINDANY = 4096 pkg syscall (openbsd-amd64), const SO_BROADCAST = 32 pkg syscall (openbsd-amd64), const SO_DEBUG = 1 pkg syscall (openbsd-amd64), const SO_DONTROUTE = 16 pkg syscall (openbsd-amd64), const SO_ERROR = 4103 pkg syscall (openbsd-amd64), const SO_KEEPALIVE = 8 pkg syscall (openbsd-amd64), const SO_LINGER = 128 pkg syscall (openbsd-amd64), const SO_NETPROC = 4128 pkg syscall (openbsd-amd64), const SO_OOBINLINE = 256 pkg syscall (openbsd-amd64), const SO_PEERCRED = 4130 pkg syscall (openbsd-amd64), const SO_RCVBUF = 4098 pkg syscall (openbsd-amd64), const SO_RCVLOWAT = 4100 pkg syscall (openbsd-amd64), const SO_RCVTIMEO = 4102 pkg syscall (openbsd-amd64), const SO_REUSEADDR = 4 pkg syscall (openbsd-amd64), const SO_REUSEPORT = 512 pkg syscall (openbsd-amd64), const SO_RTABLE = 4129 pkg syscall (openbsd-amd64), const SO_SNDBUF = 4097 pkg syscall (openbsd-amd64), const SO_SNDLOWAT = 4099 pkg syscall (openbsd-amd64), const SO_SNDTIMEO = 4101 pkg syscall (openbsd-amd64), const SO_SPLICE = 4131 pkg syscall (openbsd-amd64), const SO_TIMESTAMP = 2048 pkg syscall (openbsd-amd64), const SO_TYPE = 4104 pkg syscall (openbsd-amd64), const SO_USELOOPBACK = 64 pkg syscall (openbsd-amd64), const SYS_ACCEPT = 30 pkg syscall (openbsd-amd64), const SYS_ACCESS = 33 pkg syscall (openbsd-amd64), const SYS_ACCT = 51 pkg syscall (openbsd-amd64), const SYS_ADJFREQ = 305 pkg syscall (openbsd-amd64), const SYS_ADJTIME = 140 pkg syscall (openbsd-amd64), const SYS_BIND = 104 pkg syscall (openbsd-amd64), const SYS_CHDIR = 12 pkg syscall (openbsd-amd64), const SYS_CHFLAGS = 34 pkg syscall (openbsd-amd64), const SYS_CHMOD = 15 pkg syscall (openbsd-amd64), const SYS_CHOWN = 16 pkg syscall (openbsd-amd64), const SYS_CHROOT = 61 pkg syscall (openbsd-amd64), const SYS_CLOCK_GETRES = 234 pkg syscall (openbsd-amd64), const SYS_CLOCK_GETTIME = 232 pkg syscall (openbsd-amd64), const SYS_CLOCK_SETTIME = 233 pkg syscall (openbsd-amd64), const SYS_CLOSE = 6 pkg syscall (openbsd-amd64), const SYS_CLOSEFROM = 287 pkg syscall (openbsd-amd64), const SYS_CONNECT = 98 pkg syscall (openbsd-amd64), const SYS_DUP = 41 pkg syscall (openbsd-amd64), const SYS_DUP2 = 90 pkg syscall (openbsd-amd64), const SYS_EXECVE = 59 pkg syscall (openbsd-amd64), const SYS_EXIT = 1 pkg syscall (openbsd-amd64), const SYS_FACCESSAT = 313 pkg syscall (openbsd-amd64), const SYS_FCHDIR = 13 pkg syscall (openbsd-amd64), const SYS_FCHFLAGS = 35 pkg syscall (openbsd-amd64), const SYS_FCHMOD = 124 pkg syscall (openbsd-amd64), const SYS_FCHMODAT = 314 pkg syscall (openbsd-amd64), const SYS_FCHOWN = 123 pkg syscall (openbsd-amd64), const SYS_FCHOWNAT = 315 pkg syscall (openbsd-amd64), const SYS_FCNTL = 92 pkg syscall (openbsd-amd64), const SYS_FHOPEN = 264 pkg syscall (openbsd-amd64), const SYS_FHSTAT = 294 pkg syscall (openbsd-amd64), const SYS_FHSTATFS = 309 pkg syscall (openbsd-amd64), const SYS_FLOCK = 131 pkg syscall (openbsd-amd64), const SYS_FORK = 2 pkg syscall (openbsd-amd64), const SYS_FPATHCONF = 192 pkg syscall (openbsd-amd64), const SYS_FSTAT = 292 pkg syscall (openbsd-amd64), const SYS_FSTATAT = 316 pkg syscall (openbsd-amd64), const SYS_FSTATFS = 308 pkg syscall (openbsd-amd64), const SYS_FSYNC = 95 pkg syscall (openbsd-amd64), const SYS_FTRUNCATE = 201 pkg syscall (openbsd-amd64), const SYS_FUTIMENS = 327 pkg syscall (openbsd-amd64), const SYS_FUTIMES = 206 pkg syscall (openbsd-amd64), const SYS_GETDIRENTRIES = 312 pkg syscall (openbsd-amd64), const SYS_GETDTABLECOUNT = 18 pkg syscall (openbsd-amd64), const SYS_GETEGID = 43 pkg syscall (openbsd-amd64), const SYS_GETEUID = 25 pkg syscall (openbsd-amd64), const SYS_GETFH = 161 pkg syscall (openbsd-amd64), const SYS_GETFSSTAT = 306 pkg syscall (openbsd-amd64), const SYS_GETGID = 47 pkg syscall (openbsd-amd64), const SYS_GETGROUPS = 79 pkg syscall (openbsd-amd64), const SYS_GETITIMER = 86 pkg syscall (openbsd-amd64), const SYS_GETLOGIN = 49 pkg syscall (openbsd-amd64), const SYS_GETPEERNAME = 31 pkg syscall (openbsd-amd64), const SYS_GETPGID = 207 pkg syscall (openbsd-amd64), const SYS_GETPGRP = 81 pkg syscall (openbsd-amd64), const SYS_GETPID = 20 pkg syscall (openbsd-amd64), const SYS_GETPPID = 39 pkg syscall (openbsd-amd64), const SYS_GETPRIORITY = 100 pkg syscall (openbsd-amd64), const SYS_GETRESGID = 283 pkg syscall (openbsd-amd64), const SYS_GETRESUID = 281 pkg syscall (openbsd-amd64), const SYS_GETRLIMIT = 194 pkg syscall (openbsd-amd64), const SYS_GETRTABLE = 311 pkg syscall (openbsd-amd64), const SYS_GETRUSAGE = 117 pkg syscall (openbsd-amd64), const SYS_GETSID = 255 pkg syscall (openbsd-amd64), const SYS_GETSOCKNAME = 32 pkg syscall (openbsd-amd64), const SYS_GETSOCKOPT = 118 pkg syscall (openbsd-amd64), const SYS_GETTHRID = 299 pkg syscall (openbsd-amd64), const SYS_GETTIMEOFDAY = 116 pkg syscall (openbsd-amd64), const SYS_GETUID = 24 pkg syscall (openbsd-amd64), const SYS_IOCTL = 54 pkg syscall (openbsd-amd64), const SYS_ISSETUGID = 253 pkg syscall (openbsd-amd64), const SYS_KEVENT = 270 pkg syscall (openbsd-amd64), const SYS_KILL = 37 pkg syscall (openbsd-amd64), const SYS_KQUEUE = 269 pkg syscall (openbsd-amd64), const SYS_KTRACE = 45 pkg syscall (openbsd-amd64), const SYS_LCHOWN = 254 pkg syscall (openbsd-amd64), const SYS_LINK = 9 pkg syscall (openbsd-amd64), const SYS_LINKAT = 317 pkg syscall (openbsd-amd64), const SYS_LISTEN = 106 pkg syscall (openbsd-amd64), const SYS_LSEEK = 199 pkg syscall (openbsd-amd64), const SYS_LSTAT = 293 pkg syscall (openbsd-amd64), const SYS_MADVISE = 75 pkg syscall (openbsd-amd64), const SYS_MINCORE = 78 pkg syscall (openbsd-amd64), const SYS_MINHERIT = 250 pkg syscall (openbsd-amd64), const SYS_MKDIR = 136 pkg syscall (openbsd-amd64), const SYS_MKDIRAT = 318 pkg syscall (openbsd-amd64), const SYS_MKFIFO = 132 pkg syscall (openbsd-amd64), const SYS_MKFIFOAT = 319 pkg syscall (openbsd-amd64), const SYS_MKNOD = 14 pkg syscall (openbsd-amd64), const SYS_MKNODAT = 320 pkg syscall (openbsd-amd64), const SYS_MLOCK = 203 pkg syscall (openbsd-amd64), const SYS_MLOCKALL = 271 pkg syscall (openbsd-amd64), const SYS_MMAP = 197 pkg syscall (openbsd-amd64), const SYS_MOUNT = 21 pkg syscall (openbsd-amd64), const SYS_MPROTECT = 74 pkg syscall (openbsd-amd64), const SYS_MQUERY = 286 pkg syscall (openbsd-amd64), const SYS_MSGCTL = 297 pkg syscall (openbsd-amd64), const SYS_MSGGET = 225 pkg syscall (openbsd-amd64), const SYS_MSGRCV = 227 pkg syscall (openbsd-amd64), const SYS_MSGSND = 226 pkg syscall (openbsd-amd64), const SYS_MSYNC = 256 pkg syscall (openbsd-amd64), const SYS_MUNLOCK = 204 pkg syscall (openbsd-amd64), const SYS_MUNLOCKALL = 272 pkg syscall (openbsd-amd64), const SYS_MUNMAP = 73 pkg syscall (openbsd-amd64), const SYS_NANOSLEEP = 240 pkg syscall (openbsd-amd64), const SYS_NFSSVC = 155 pkg syscall (openbsd-amd64), const SYS_OBREAK = 17 pkg syscall (openbsd-amd64), const SYS_OPEN = 5 pkg syscall (openbsd-amd64), const SYS_OPENAT = 321 pkg syscall (openbsd-amd64), const SYS_PATHCONF = 191 pkg syscall (openbsd-amd64), const SYS_PIPE = 263 pkg syscall (openbsd-amd64), const SYS_POLL = 252 pkg syscall (openbsd-amd64), const SYS_PREAD = 173 pkg syscall (openbsd-amd64), const SYS_PREADV = 267 pkg syscall (openbsd-amd64), const SYS_PROFIL = 44 pkg syscall (openbsd-amd64), const SYS_PTRACE = 26 pkg syscall (openbsd-amd64), const SYS_PWRITE = 174 pkg syscall (openbsd-amd64), const SYS_PWRITEV = 268 pkg syscall (openbsd-amd64), const SYS_QUOTACTL = 148 pkg syscall (openbsd-amd64), const SYS_READ = 3 pkg syscall (openbsd-amd64), const SYS_READLINK = 58 pkg syscall (openbsd-amd64), const SYS_READLINKAT = 322 pkg syscall (openbsd-amd64), const SYS_READV = 120 pkg syscall (openbsd-amd64), const SYS_REBOOT = 55 pkg syscall (openbsd-amd64), const SYS_RECVFROM = 29 pkg syscall (openbsd-amd64), const SYS_RECVMSG = 27 pkg syscall (openbsd-amd64), const SYS_RENAME = 128 pkg syscall (openbsd-amd64), const SYS_RENAMEAT = 323 pkg syscall (openbsd-amd64), const SYS_REVOKE = 56 pkg syscall (openbsd-amd64), const SYS_RMDIR = 137 pkg syscall (openbsd-amd64), const SYS_SCHED_YIELD = 298 pkg syscall (openbsd-amd64), const SYS_SELECT = 93 pkg syscall (openbsd-amd64), const SYS_SEMGET = 221 pkg syscall (openbsd-amd64), const SYS_SEMOP = 290 pkg syscall (openbsd-amd64), const SYS_SENDMSG = 28 pkg syscall (openbsd-amd64), const SYS_SENDTO = 133 pkg syscall (openbsd-amd64), const SYS_SETEGID = 182 pkg syscall (openbsd-amd64), const SYS_SETEUID = 183 pkg syscall (openbsd-amd64), const SYS_SETGID = 181 pkg syscall (openbsd-amd64), const SYS_SETGROUPS = 80 pkg syscall (openbsd-amd64), const SYS_SETITIMER = 83 pkg syscall (openbsd-amd64), const SYS_SETLOGIN = 50 pkg syscall (openbsd-amd64), const SYS_SETPGID = 82 pkg syscall (openbsd-amd64), const SYS_SETPRIORITY = 96 pkg syscall (openbsd-amd64), const SYS_SETREGID = 127 pkg syscall (openbsd-amd64), const SYS_SETRESGID = 284 pkg syscall (openbsd-amd64), const SYS_SETRESUID = 282 pkg syscall (openbsd-amd64), const SYS_SETREUID = 126 pkg syscall (openbsd-amd64), const SYS_SETRLIMIT = 195 pkg syscall (openbsd-amd64), const SYS_SETRTABLE = 310 pkg syscall (openbsd-amd64), const SYS_SETSID = 147 pkg syscall (openbsd-amd64), const SYS_SETSOCKOPT = 105 pkg syscall (openbsd-amd64), const SYS_SETTIMEOFDAY = 122 pkg syscall (openbsd-amd64), const SYS_SETUID = 23 pkg syscall (openbsd-amd64), const SYS_SHMAT = 228 pkg syscall (openbsd-amd64), const SYS_SHMCTL = 296 pkg syscall (openbsd-amd64), const SYS_SHMDT = 230 pkg syscall (openbsd-amd64), const SYS_SHMGET = 289 pkg syscall (openbsd-amd64), const SYS_SHUTDOWN = 134 pkg syscall (openbsd-amd64), const SYS_SIGACTION = 46 pkg syscall (openbsd-amd64), const SYS_SIGALTSTACK = 288 pkg syscall (openbsd-amd64), const SYS_SIGPENDING = 52 pkg syscall (openbsd-amd64), const SYS_SIGPROCMASK = 48 pkg syscall (openbsd-amd64), const SYS_SIGRETURN = 103 pkg syscall (openbsd-amd64), const SYS_SIGSUSPEND = 111 pkg syscall (openbsd-amd64), const SYS_SOCKET = 97 pkg syscall (openbsd-amd64), const SYS_SOCKETPAIR = 135 pkg syscall (openbsd-amd64), const SYS_STAT = 291 pkg syscall (openbsd-amd64), const SYS_STATFS = 307 pkg syscall (openbsd-amd64), const SYS_SWAPCTL = 193 pkg syscall (openbsd-amd64), const SYS_SYMLINK = 57 pkg syscall (openbsd-amd64), const SYS_SYMLINKAT = 324 pkg syscall (openbsd-amd64), const SYS_SYNC = 36 pkg syscall (openbsd-amd64), const SYS_SYSARCH = 165 pkg syscall (openbsd-amd64), const SYS_TRUNCATE = 200 pkg syscall (openbsd-amd64), const SYS_UMASK = 60 pkg syscall (openbsd-amd64), const SYS_UNLINK = 10 pkg syscall (openbsd-amd64), const SYS_UNLINKAT = 325 pkg syscall (openbsd-amd64), const SYS_UNMOUNT = 22 pkg syscall (openbsd-amd64), const SYS_UTIMENSAT = 326 pkg syscall (openbsd-amd64), const SYS_UTIMES = 138 pkg syscall (openbsd-amd64), const SYS_VFORK = 66 pkg syscall (openbsd-amd64), const SYS_WAIT4 = 7 pkg syscall (openbsd-amd64), const SYS_WRITE = 4 pkg syscall (openbsd-amd64), const SYS_WRITEV = 121 pkg syscall (openbsd-amd64), const SYS___GETCWD = 304 pkg syscall (openbsd-amd64), const SYS___GET_TCB = 330 pkg syscall (openbsd-amd64), const SYS___SEMCTL = 295 pkg syscall (openbsd-amd64), const SYS___SET_TCB = 329 pkg syscall (openbsd-amd64), const SYS___SYSCTL = 202 pkg syscall (openbsd-amd64), const SYS___TFORK = 8 pkg syscall (openbsd-amd64), const SYS___THREXIT = 302 pkg syscall (openbsd-amd64), const SYS___THRSIGDIVERT = 303 pkg syscall (openbsd-amd64), const SYS___THRSLEEP = 300 pkg syscall (openbsd-amd64), const SYS___THRWAKEUP = 301 pkg syscall (openbsd-amd64), const S_IFMT = 61440 pkg syscall (openbsd-amd64), const SizeofBpfHdr = 20 pkg syscall (openbsd-amd64), const SizeofBpfInsn = 8 pkg syscall (openbsd-amd64), const SizeofBpfProgram = 16 pkg syscall (openbsd-amd64), const SizeofBpfStat = 8 pkg syscall (openbsd-amd64), const SizeofBpfVersion = 4 pkg syscall (openbsd-amd64), const SizeofCmsghdr = 12 pkg syscall (openbsd-amd64), const SizeofIPMreq = 8 pkg syscall (openbsd-amd64), const SizeofIPv6Mreq = 20 pkg syscall (openbsd-amd64), const SizeofIfAnnounceMsghdr = 26 pkg syscall (openbsd-amd64), const SizeofIfData = 224 pkg syscall (openbsd-amd64), const SizeofIfMsghdr = 248 pkg syscall (openbsd-amd64), const SizeofIfaMsghdr = 24 pkg syscall (openbsd-amd64), const SizeofInet6Pktinfo = 20 pkg syscall (openbsd-amd64), const SizeofLinger = 8 pkg syscall (openbsd-amd64), const SizeofMsghdr = 48 pkg syscall (openbsd-amd64), const SizeofRtMetrics = 48 pkg syscall (openbsd-amd64), const SizeofRtMsghdr = 88 pkg syscall (openbsd-amd64), const SizeofSockaddrAny = 108 pkg syscall (openbsd-amd64), const SizeofSockaddrDatalink = 32 pkg syscall (openbsd-amd64), const SizeofSockaddrInet4 = 16 pkg syscall (openbsd-amd64), const SizeofSockaddrInet6 = 28 pkg syscall (openbsd-amd64), const SizeofSockaddrUnix = 106 pkg syscall (openbsd-amd64), const TCIFLUSH = 1 pkg syscall (openbsd-amd64), const TCIOFLUSH = 3 pkg syscall (openbsd-amd64), const TCOFLUSH = 2 pkg syscall (openbsd-amd64), const TCP_MAXBURST = 4 pkg syscall (openbsd-amd64), const TCP_MAXSEG = 2 pkg syscall (openbsd-amd64), const TCP_MAXWIN = 65535 pkg syscall (openbsd-amd64), const TCP_MAX_SACK = 3 pkg syscall (openbsd-amd64), const TCP_MAX_WINSHIFT = 14 pkg syscall (openbsd-amd64), const TCP_MD5SIG = 4 pkg syscall (openbsd-amd64), const TCP_MSS = 512 pkg syscall (openbsd-amd64), const TCP_NSTATES = 11 pkg syscall (openbsd-amd64), const TCP_SACK_ENABLE = 8 pkg syscall (openbsd-amd64), const TCSAFLUSH = 2 pkg syscall (openbsd-amd64), const TIOCCBRK = 536900730 pkg syscall (openbsd-amd64), const TIOCCDTR = 536900728 pkg syscall (openbsd-amd64), const TIOCCONS = 2147775586 pkg syscall (openbsd-amd64), const TIOCDRAIN = 536900702 pkg syscall (openbsd-amd64), const TIOCEXCL = 536900621 pkg syscall (openbsd-amd64), const TIOCEXT = 2147775584 pkg syscall (openbsd-amd64), const TIOCFLAG_CLOCAL = 2 pkg syscall (openbsd-amd64), const TIOCFLAG_CRTSCTS = 4 pkg syscall (openbsd-amd64), const TIOCFLAG_MDMBUF = 8 pkg syscall (openbsd-amd64), const TIOCFLAG_PPS = 16 pkg syscall (openbsd-amd64), const TIOCFLAG_SOFTCAR = 1 pkg syscall (openbsd-amd64), const TIOCFLUSH = 2147775504 pkg syscall (openbsd-amd64), const TIOCGETA = 1076655123 pkg syscall (openbsd-amd64), const TIOCGETD = 1074033690 pkg syscall (openbsd-amd64), const TIOCGFLAGS = 1074033757 pkg syscall (openbsd-amd64), const TIOCGPGRP = 1074033783 pkg syscall (openbsd-amd64), const TIOCGTSTAMP = 1074820187 pkg syscall (openbsd-amd64), const TIOCGWINSZ = 1074295912 pkg syscall (openbsd-amd64), const TIOCMBIC = 2147775595 pkg syscall (openbsd-amd64), const TIOCMBIS = 2147775596 pkg syscall (openbsd-amd64), const TIOCMGET = 1074033770 pkg syscall (openbsd-amd64), const TIOCMODG = 1074033770 pkg syscall (openbsd-amd64), const TIOCMODS = 2147775597 pkg syscall (openbsd-amd64), const TIOCMSET = 2147775597 pkg syscall (openbsd-amd64), const TIOCM_CAR = 64 pkg syscall (openbsd-amd64), const TIOCM_CD = 64 pkg syscall (openbsd-amd64), const TIOCM_CTS = 32 pkg syscall (openbsd-amd64), const TIOCM_DSR = 256 pkg syscall (openbsd-amd64), const TIOCM_DTR = 2 pkg syscall (openbsd-amd64), const TIOCM_LE = 1 pkg syscall (openbsd-amd64), const TIOCM_RI = 128 pkg syscall (openbsd-amd64), const TIOCM_RNG = 128 pkg syscall (openbsd-amd64), const TIOCM_RTS = 4 pkg syscall (openbsd-amd64), const TIOCM_SR = 16 pkg syscall (openbsd-amd64), const TIOCM_ST = 8 pkg syscall (openbsd-amd64), const TIOCNOTTY = 536900721 pkg syscall (openbsd-amd64), const TIOCNXCL = 536900622 pkg syscall (openbsd-amd64), const TIOCOUTQ = 1074033779 pkg syscall (openbsd-amd64), const TIOCPKT = 2147775600 pkg syscall (openbsd-amd64), const TIOCPKT_DATA = 0 pkg syscall (openbsd-amd64), const TIOCPKT_DOSTOP = 32 pkg syscall (openbsd-amd64), const TIOCPKT_FLUSHREAD = 1 pkg syscall (openbsd-amd64), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (openbsd-amd64), const TIOCPKT_IOCTL = 64 pkg syscall (openbsd-amd64), const TIOCPKT_NOSTOP = 16 pkg syscall (openbsd-amd64), const TIOCPKT_START = 8 pkg syscall (openbsd-amd64), const TIOCPKT_STOP = 4 pkg syscall (openbsd-amd64), const TIOCREMOTE = 2147775593 pkg syscall (openbsd-amd64), const TIOCSBRK = 536900731 pkg syscall (openbsd-amd64), const TIOCSCTTY = 536900705 pkg syscall (openbsd-amd64), const TIOCSDTR = 536900729 pkg syscall (openbsd-amd64), const TIOCSETA = 2150396948 pkg syscall (openbsd-amd64), const TIOCSETAF = 2150396950 pkg syscall (openbsd-amd64), const TIOCSETAW = 2150396949 pkg syscall (openbsd-amd64), const TIOCSETD = 2147775515 pkg syscall (openbsd-amd64), const TIOCSFLAGS = 2147775580 pkg syscall (openbsd-amd64), const TIOCSIG = 2147775583 pkg syscall (openbsd-amd64), const TIOCSPGRP = 2147775606 pkg syscall (openbsd-amd64), const TIOCSTART = 536900718 pkg syscall (openbsd-amd64), const TIOCSTAT = 2147775589 pkg syscall (openbsd-amd64), const TIOCSTI = 2147578994 pkg syscall (openbsd-amd64), const TIOCSTOP = 536900719 pkg syscall (openbsd-amd64), const TIOCSTSTAMP = 2148037722 pkg syscall (openbsd-amd64), const TIOCSWINSZ = 2148037735 pkg syscall (openbsd-amd64), const TIOCUCNTL = 2147775590 pkg syscall (openbsd-amd64), const TOSTOP = 4194304 pkg syscall (openbsd-amd64), const VDISCARD = 15 pkg syscall (openbsd-amd64), const VDSUSP = 11 pkg syscall (openbsd-amd64), const VEOF = 0 pkg syscall (openbsd-amd64), const VEOL = 1 pkg syscall (openbsd-amd64), const VEOL2 = 2 pkg syscall (openbsd-amd64), const VERASE = 3 pkg syscall (openbsd-amd64), const VINTR = 8 pkg syscall (openbsd-amd64), const VKILL = 5 pkg syscall (openbsd-amd64), const VLNEXT = 14 pkg syscall (openbsd-amd64), const VMIN = 16 pkg syscall (openbsd-amd64), const VQUIT = 9 pkg syscall (openbsd-amd64), const VREPRINT = 6 pkg syscall (openbsd-amd64), const VSTART = 12 pkg syscall (openbsd-amd64), const VSTATUS = 18 pkg syscall (openbsd-amd64), const VSTOP = 13 pkg syscall (openbsd-amd64), const VSUSP = 10 pkg syscall (openbsd-amd64), const VTIME = 17 pkg syscall (openbsd-amd64), const VWERASE = 4 pkg syscall (openbsd-amd64), const WALTSIG = 4 pkg syscall (openbsd-amd64), const WCONTINUED = 8 pkg syscall (openbsd-amd64), const WCOREFLAG = 128 pkg syscall (openbsd-amd64), const WNOHANG = 1 pkg syscall (openbsd-amd64), const WSTOPPED = 127 pkg syscall (openbsd-amd64), const WUNTRACED = 2 pkg syscall (openbsd-amd64-cgo), const AF_APPLETALK = 16 pkg syscall (openbsd-amd64-cgo), const AF_BLUETOOTH = 32 pkg syscall (openbsd-amd64-cgo), const AF_CCITT = 10 pkg syscall (openbsd-amd64-cgo), const AF_CHAOS = 5 pkg syscall (openbsd-amd64-cgo), const AF_CNT = 21 pkg syscall (openbsd-amd64-cgo), const AF_COIP = 20 pkg syscall (openbsd-amd64-cgo), const AF_DATAKIT = 9 pkg syscall (openbsd-amd64-cgo), const AF_DECnet = 12 pkg syscall (openbsd-amd64-cgo), const AF_DLI = 13 pkg syscall (openbsd-amd64-cgo), const AF_E164 = 26 pkg syscall (openbsd-amd64-cgo), const AF_ECMA = 8 pkg syscall (openbsd-amd64-cgo), const AF_ENCAP = 28 pkg syscall (openbsd-amd64-cgo), const AF_HYLINK = 15 pkg syscall (openbsd-amd64-cgo), const AF_IMPLINK = 3 pkg syscall (openbsd-amd64-cgo), const AF_INET6 = 24 pkg syscall (openbsd-amd64-cgo), const AF_IPX = 23 pkg syscall (openbsd-amd64-cgo), const AF_ISDN = 26 pkg syscall (openbsd-amd64-cgo), const AF_ISO = 7 pkg syscall (openbsd-amd64-cgo), const AF_KEY = 30 pkg syscall (openbsd-amd64-cgo), const AF_LAT = 14 pkg syscall (openbsd-amd64-cgo), const AF_LINK = 18 pkg syscall (openbsd-amd64-cgo), const AF_LOCAL = 1 pkg syscall (openbsd-amd64-cgo), const AF_MAX = 36 pkg syscall (openbsd-amd64-cgo), const AF_MPLS = 33 pkg syscall (openbsd-amd64-cgo), const AF_NATM = 27 pkg syscall (openbsd-amd64-cgo), const AF_NS = 6 pkg syscall (openbsd-amd64-cgo), const AF_OSI = 7 pkg syscall (openbsd-amd64-cgo), const AF_PUP = 4 pkg syscall (openbsd-amd64-cgo), const AF_ROUTE = 17 pkg syscall (openbsd-amd64-cgo), const AF_SIP = 29 pkg syscall (openbsd-amd64-cgo), const AF_SNA = 11 pkg syscall (openbsd-amd64-cgo), const ARPHRD_ETHER = 1 pkg syscall (openbsd-amd64-cgo), const ARPHRD_FRELAY = 15 pkg syscall (openbsd-amd64-cgo), const ARPHRD_IEEE1394 = 24 pkg syscall (openbsd-amd64-cgo), const ARPHRD_IEEE802 = 6 pkg syscall (openbsd-amd64-cgo), const B0 = 0 pkg syscall (openbsd-amd64-cgo), const B110 = 110 pkg syscall (openbsd-amd64-cgo), const B115200 = 115200 pkg syscall (openbsd-amd64-cgo), const B1200 = 1200 pkg syscall (openbsd-amd64-cgo), const B134 = 134 pkg syscall (openbsd-amd64-cgo), const B14400 = 14400 pkg syscall (openbsd-amd64-cgo), const B150 = 150 pkg syscall (openbsd-amd64-cgo), const B1800 = 1800 pkg syscall (openbsd-amd64-cgo), const B19200 = 19200 pkg syscall (openbsd-amd64-cgo), const B200 = 200 pkg syscall (openbsd-amd64-cgo), const B230400 = 230400 pkg syscall (openbsd-amd64-cgo), const B2400 = 2400 pkg syscall (openbsd-amd64-cgo), const B28800 = 28800 pkg syscall (openbsd-amd64-cgo), const B300 = 300 pkg syscall (openbsd-amd64-cgo), const B38400 = 38400 pkg syscall (openbsd-amd64-cgo), const B4800 = 4800 pkg syscall (openbsd-amd64-cgo), const B50 = 50 pkg syscall (openbsd-amd64-cgo), const B57600 = 57600 pkg syscall (openbsd-amd64-cgo), const B600 = 600 pkg syscall (openbsd-amd64-cgo), const B7200 = 7200 pkg syscall (openbsd-amd64-cgo), const B75 = 75 pkg syscall (openbsd-amd64-cgo), const B76800 = 76800 pkg syscall (openbsd-amd64-cgo), const B9600 = 9600 pkg syscall (openbsd-amd64-cgo), const BIOCFLUSH = 536887912 pkg syscall (openbsd-amd64-cgo), const BIOCGBLEN = 1074020966 pkg syscall (openbsd-amd64-cgo), const BIOCGDIRFILT = 1074020988 pkg syscall (openbsd-amd64-cgo), const BIOCGDLT = 1074020970 pkg syscall (openbsd-amd64-cgo), const BIOCGDLTLIST = 3222291067 pkg syscall (openbsd-amd64-cgo), const BIOCGETIF = 1075855979 pkg syscall (openbsd-amd64-cgo), const BIOCGFILDROP = 1074020984 pkg syscall (openbsd-amd64-cgo), const BIOCGHDRCMPLT = 1074020980 pkg syscall (openbsd-amd64-cgo), const BIOCGRSIG = 1074020979 pkg syscall (openbsd-amd64-cgo), const BIOCGRTIMEOUT = 1074807406 pkg syscall (openbsd-amd64-cgo), const BIOCGSTATS = 1074283119 pkg syscall (openbsd-amd64-cgo), const BIOCIMMEDIATE = 2147762800 pkg syscall (openbsd-amd64-cgo), const BIOCLOCK = 536887926 pkg syscall (openbsd-amd64-cgo), const BIOCPROMISC = 536887913 pkg syscall (openbsd-amd64-cgo), const BIOCSBLEN = 3221504614 pkg syscall (openbsd-amd64-cgo), const BIOCSDIRFILT = 2147762813 pkg syscall (openbsd-amd64-cgo), const BIOCSDLT = 2147762810 pkg syscall (openbsd-amd64-cgo), const BIOCSETF = 2148549223 pkg syscall (openbsd-amd64-cgo), const BIOCSETIF = 2149597804 pkg syscall (openbsd-amd64-cgo), const BIOCSETWF = 2148549239 pkg syscall (openbsd-amd64-cgo), const BIOCSFILDROP = 2147762809 pkg syscall (openbsd-amd64-cgo), const BIOCSHDRCMPLT = 2147762805 pkg syscall (openbsd-amd64-cgo), const BIOCSRSIG = 2147762802 pkg syscall (openbsd-amd64-cgo), const BIOCSRTIMEOUT = 2148549229 pkg syscall (openbsd-amd64-cgo), const BIOCVERSION = 1074020977 pkg syscall (openbsd-amd64-cgo), const BPF_A = 16 pkg syscall (openbsd-amd64-cgo), const BPF_ABS = 32 pkg syscall (openbsd-amd64-cgo), const BPF_ADD = 0 pkg syscall (openbsd-amd64-cgo), const BPF_ALIGNMENT = 4 pkg syscall (openbsd-amd64-cgo), const BPF_ALU = 4 pkg syscall (openbsd-amd64-cgo), const BPF_AND = 80 pkg syscall (openbsd-amd64-cgo), const BPF_B = 16 pkg syscall (openbsd-amd64-cgo), const BPF_DIRECTION_IN = 1 pkg syscall (openbsd-amd64-cgo), const BPF_DIRECTION_OUT = 2 pkg syscall (openbsd-amd64-cgo), const BPF_DIV = 48 pkg syscall (openbsd-amd64-cgo), const BPF_H = 8 pkg syscall (openbsd-amd64-cgo), const BPF_IMM = 0 pkg syscall (openbsd-amd64-cgo), const BPF_IND = 64 pkg syscall (openbsd-amd64-cgo), const BPF_JA = 0 pkg syscall (openbsd-amd64-cgo), const BPF_JEQ = 16 pkg syscall (openbsd-amd64-cgo), const BPF_JGE = 48 pkg syscall (openbsd-amd64-cgo), const BPF_JGT = 32 pkg syscall (openbsd-amd64-cgo), const BPF_JMP = 5 pkg syscall (openbsd-amd64-cgo), const BPF_JSET = 64 pkg syscall (openbsd-amd64-cgo), const BPF_K = 0 pkg syscall (openbsd-amd64-cgo), const BPF_LD = 0 pkg syscall (openbsd-amd64-cgo), const BPF_LDX = 1 pkg syscall (openbsd-amd64-cgo), const BPF_LEN = 128 pkg syscall (openbsd-amd64-cgo), const BPF_LSH = 96 pkg syscall (openbsd-amd64-cgo), const BPF_MAJOR_VERSION = 1 pkg syscall (openbsd-amd64-cgo), const BPF_MAXBUFSIZE = 2097152 pkg syscall (openbsd-amd64-cgo), const BPF_MAXINSNS = 512 pkg syscall (openbsd-amd64-cgo), const BPF_MEM = 96 pkg syscall (openbsd-amd64-cgo), const BPF_MEMWORDS = 16 pkg syscall (openbsd-amd64-cgo), const BPF_MINBUFSIZE = 32 pkg syscall (openbsd-amd64-cgo), const BPF_MINOR_VERSION = 1 pkg syscall (openbsd-amd64-cgo), const BPF_MISC = 7 pkg syscall (openbsd-amd64-cgo), const BPF_MSH = 160 pkg syscall (openbsd-amd64-cgo), const BPF_MUL = 32 pkg syscall (openbsd-amd64-cgo), const BPF_NEG = 128 pkg syscall (openbsd-amd64-cgo), const BPF_OR = 64 pkg syscall (openbsd-amd64-cgo), const BPF_RELEASE = 199606 pkg syscall (openbsd-amd64-cgo), const BPF_RET = 6 pkg syscall (openbsd-amd64-cgo), const BPF_RSH = 112 pkg syscall (openbsd-amd64-cgo), const BPF_ST = 2 pkg syscall (openbsd-amd64-cgo), const BPF_STX = 3 pkg syscall (openbsd-amd64-cgo), const BPF_SUB = 16 pkg syscall (openbsd-amd64-cgo), const BPF_TAX = 0 pkg syscall (openbsd-amd64-cgo), const BPF_TXA = 128 pkg syscall (openbsd-amd64-cgo), const BPF_W = 0 pkg syscall (openbsd-amd64-cgo), const BPF_X = 8 pkg syscall (openbsd-amd64-cgo), const BRKINT = 2 pkg syscall (openbsd-amd64-cgo), const CCR0_FLUSH = 16 pkg syscall (openbsd-amd64-cgo), const CFLUSH = 15 pkg syscall (openbsd-amd64-cgo), const CLOCAL = 32768 pkg syscall (openbsd-amd64-cgo), const CPUID_CFLUSH = 524288 pkg syscall (openbsd-amd64-cgo), const CREAD = 2048 pkg syscall (openbsd-amd64-cgo), const CS5 = 0 pkg syscall (openbsd-amd64-cgo), const CS6 = 256 pkg syscall (openbsd-amd64-cgo), const CS7 = 512 pkg syscall (openbsd-amd64-cgo), const CS8 = 768 pkg syscall (openbsd-amd64-cgo), const CSIZE = 768 pkg syscall (openbsd-amd64-cgo), const CSTART = 17 pkg syscall (openbsd-amd64-cgo), const CSTATUS = 255 pkg syscall (openbsd-amd64-cgo), const CSTOP = 19 pkg syscall (openbsd-amd64-cgo), const CSTOPB = 1024 pkg syscall (openbsd-amd64-cgo), const CSUSP = 26 pkg syscall (openbsd-amd64-cgo), const CTL_MAXNAME = 12 pkg syscall (openbsd-amd64-cgo), const CTL_NET = 4 pkg syscall (openbsd-amd64-cgo), const DIOCOSFPFLUSH = 536888398 pkg syscall (openbsd-amd64-cgo), const DLT_ARCNET = 7 pkg syscall (openbsd-amd64-cgo), const DLT_ATM_RFC1483 = 11 pkg syscall (openbsd-amd64-cgo), const DLT_AX25 = 3 pkg syscall (openbsd-amd64-cgo), const DLT_CHAOS = 5 pkg syscall (openbsd-amd64-cgo), const DLT_C_HDLC = 104 pkg syscall (openbsd-amd64-cgo), const DLT_EN10MB = 1 pkg syscall (openbsd-amd64-cgo), const DLT_EN3MB = 2 pkg syscall (openbsd-amd64-cgo), const DLT_ENC = 13 pkg syscall (openbsd-amd64-cgo), const DLT_FDDI = 10 pkg syscall (openbsd-amd64-cgo), const DLT_IEEE802 = 6 pkg syscall (openbsd-amd64-cgo), const DLT_IEEE802_11 = 105 pkg syscall (openbsd-amd64-cgo), const DLT_IEEE802_11_RADIO = 127 pkg syscall (openbsd-amd64-cgo), const DLT_LOOP = 12 pkg syscall (openbsd-amd64-cgo), const DLT_MPLS = 219 pkg syscall (openbsd-amd64-cgo), const DLT_NULL = 0 pkg syscall (openbsd-amd64-cgo), const DLT_PFLOG = 117 pkg syscall (openbsd-amd64-cgo), const DLT_PFSYNC = 18 pkg syscall (openbsd-amd64-cgo), const DLT_PPP = 9 pkg syscall (openbsd-amd64-cgo), const DLT_PPP_BSDOS = 16 pkg syscall (openbsd-amd64-cgo), const DLT_PPP_ETHER = 51 pkg syscall (openbsd-amd64-cgo), const DLT_PPP_SERIAL = 50 pkg syscall (openbsd-amd64-cgo), const DLT_PRONET = 4 pkg syscall (openbsd-amd64-cgo), const DLT_RAW = 14 pkg syscall (openbsd-amd64-cgo), const DLT_SLIP = 8 pkg syscall (openbsd-amd64-cgo), const DLT_SLIP_BSDOS = 15 pkg syscall (openbsd-amd64-cgo), const DT_BLK = 6 pkg syscall (openbsd-amd64-cgo), const DT_CHR = 2 pkg syscall (openbsd-amd64-cgo), const DT_DIR = 4 pkg syscall (openbsd-amd64-cgo), const DT_FIFO = 1 pkg syscall (openbsd-amd64-cgo), const DT_LNK = 10 pkg syscall (openbsd-amd64-cgo), const DT_REG = 8 pkg syscall (openbsd-amd64-cgo), const DT_SOCK = 12 pkg syscall (openbsd-amd64-cgo), const DT_UNKNOWN = 0 pkg syscall (openbsd-amd64-cgo), const E2BIG = 7 pkg syscall (openbsd-amd64-cgo), const EACCES = 13 pkg syscall (openbsd-amd64-cgo), const EADDRINUSE = 48 pkg syscall (openbsd-amd64-cgo), const EADDRNOTAVAIL = 49 pkg syscall (openbsd-amd64-cgo), const EAFNOSUPPORT = 47 pkg syscall (openbsd-amd64-cgo), const EAGAIN = 35 pkg syscall (openbsd-amd64-cgo), const EALREADY = 37 pkg syscall (openbsd-amd64-cgo), const EAUTH = 80 pkg syscall (openbsd-amd64-cgo), const EBADF = 9 pkg syscall (openbsd-amd64-cgo), const EBADRPC = 72 pkg syscall (openbsd-amd64-cgo), const EBUSY = 16 pkg syscall (openbsd-amd64-cgo), const ECANCELED = 88 pkg syscall (openbsd-amd64-cgo), const ECHILD = 10 pkg syscall (openbsd-amd64-cgo), const ECHO = 8 pkg syscall (openbsd-amd64-cgo), const ECHOCTL = 64 pkg syscall (openbsd-amd64-cgo), const ECHOE = 2 pkg syscall (openbsd-amd64-cgo), const ECHOK = 4 pkg syscall (openbsd-amd64-cgo), const ECHOKE = 1 pkg syscall (openbsd-amd64-cgo), const ECHONL = 16 pkg syscall (openbsd-amd64-cgo), const ECHOPRT = 32 pkg syscall (openbsd-amd64-cgo), const ECONNABORTED = 53 pkg syscall (openbsd-amd64-cgo), const ECONNREFUSED = 61 pkg syscall (openbsd-amd64-cgo), const ECONNRESET = 54 pkg syscall (openbsd-amd64-cgo), const EDEADLK = 11 pkg syscall (openbsd-amd64-cgo), const EDESTADDRREQ = 39 pkg syscall (openbsd-amd64-cgo), const EDOM = 33 pkg syscall (openbsd-amd64-cgo), const EDQUOT = 69 pkg syscall (openbsd-amd64-cgo), const EEXIST = 17 pkg syscall (openbsd-amd64-cgo), const EFAULT = 14 pkg syscall (openbsd-amd64-cgo), const EFBIG = 27 pkg syscall (openbsd-amd64-cgo), const EFER_LMA = 1024 pkg syscall (openbsd-amd64-cgo), const EFER_LME = 256 pkg syscall (openbsd-amd64-cgo), const EFER_NXE = 2048 pkg syscall (openbsd-amd64-cgo), const EFER_SCE = 1 pkg syscall (openbsd-amd64-cgo), const EFTYPE = 79 pkg syscall (openbsd-amd64-cgo), const EHOSTDOWN = 64 pkg syscall (openbsd-amd64-cgo), const EHOSTUNREACH = 65 pkg syscall (openbsd-amd64-cgo), const EIDRM = 89 pkg syscall (openbsd-amd64-cgo), const EILSEQ = 84 pkg syscall (openbsd-amd64-cgo), const EINPROGRESS = 36 pkg syscall (openbsd-amd64-cgo), const EINTR = 4 pkg syscall (openbsd-amd64-cgo), const EINVAL = 22 pkg syscall (openbsd-amd64-cgo), const EIO = 5 pkg syscall (openbsd-amd64-cgo), const EIPSEC = 82 pkg syscall (openbsd-amd64-cgo), const EISCONN = 56 pkg syscall (openbsd-amd64-cgo), const EISDIR = 21 pkg syscall (openbsd-amd64-cgo), const ELAST = 91 pkg syscall (openbsd-amd64-cgo), const ELOOP = 62 pkg syscall (openbsd-amd64-cgo), const EMEDIUMTYPE = 86 pkg syscall (openbsd-amd64-cgo), const EMFILE = 24 pkg syscall (openbsd-amd64-cgo), const EMLINK = 31 pkg syscall (openbsd-amd64-cgo), const EMSGSIZE = 40 pkg syscall (openbsd-amd64-cgo), const EMT_TAGOVF = 1 pkg syscall (openbsd-amd64-cgo), const EMUL_ENABLED = 1 pkg syscall (openbsd-amd64-cgo), const EMUL_NATIVE = 2 pkg syscall (openbsd-amd64-cgo), const ENAMETOOLONG = 63 pkg syscall (openbsd-amd64-cgo), const ENDRUNDISC = 9 pkg syscall (openbsd-amd64-cgo), const ENEEDAUTH = 81 pkg syscall (openbsd-amd64-cgo), const ENETDOWN = 50 pkg syscall (openbsd-amd64-cgo), const ENETRESET = 52 pkg syscall (openbsd-amd64-cgo), const ENETUNREACH = 51 pkg syscall (openbsd-amd64-cgo), const ENFILE = 23 pkg syscall (openbsd-amd64-cgo), const ENOATTR = 83 pkg syscall (openbsd-amd64-cgo), const ENOBUFS = 55 pkg syscall (openbsd-amd64-cgo), const ENODEV = 19 pkg syscall (openbsd-amd64-cgo), const ENOEXEC = 8 pkg syscall (openbsd-amd64-cgo), const ENOLCK = 77 pkg syscall (openbsd-amd64-cgo), const ENOMEDIUM = 85 pkg syscall (openbsd-amd64-cgo), const ENOMEM = 12 pkg syscall (openbsd-amd64-cgo), const ENOMSG = 90 pkg syscall (openbsd-amd64-cgo), const ENOPROTOOPT = 42 pkg syscall (openbsd-amd64-cgo), const ENOSPC = 28 pkg syscall (openbsd-amd64-cgo), const ENOSYS = 78 pkg syscall (openbsd-amd64-cgo), const ENOTBLK = 15 pkg syscall (openbsd-amd64-cgo), const ENOTCONN = 57 pkg syscall (openbsd-amd64-cgo), const ENOTDIR = 20 pkg syscall (openbsd-amd64-cgo), const ENOTEMPTY = 66 pkg syscall (openbsd-amd64-cgo), const ENOTSOCK = 38 pkg syscall (openbsd-amd64-cgo), const ENOTSUP = 91 pkg syscall (openbsd-amd64-cgo), const ENOTTY = 25 pkg syscall (openbsd-amd64-cgo), const ENXIO = 6 pkg syscall (openbsd-amd64-cgo), const EOPNOTSUPP = 45 pkg syscall (openbsd-amd64-cgo), const EOVERFLOW = 87 pkg syscall (openbsd-amd64-cgo), const EPERM = 1 pkg syscall (openbsd-amd64-cgo), const EPFNOSUPPORT = 46 pkg syscall (openbsd-amd64-cgo), const EPIPE = 32 pkg syscall (openbsd-amd64-cgo), const EPROCLIM = 67 pkg syscall (openbsd-amd64-cgo), const EPROCUNAVAIL = 76 pkg syscall (openbsd-amd64-cgo), const EPROGMISMATCH = 75 pkg syscall (openbsd-amd64-cgo), const EPROGUNAVAIL = 74 pkg syscall (openbsd-amd64-cgo), const EPROTONOSUPPORT = 43 pkg syscall (openbsd-amd64-cgo), const EPROTOTYPE = 41 pkg syscall (openbsd-amd64-cgo), const ERANGE = 34 pkg syscall (openbsd-amd64-cgo), const EREMOTE = 71 pkg syscall (openbsd-amd64-cgo), const EROFS = 30 pkg syscall (openbsd-amd64-cgo), const ERPCMISMATCH = 73 pkg syscall (openbsd-amd64-cgo), const ESHUTDOWN = 58 pkg syscall (openbsd-amd64-cgo), const ESOCKTNOSUPPORT = 44 pkg syscall (openbsd-amd64-cgo), const ESPIPE = 29 pkg syscall (openbsd-amd64-cgo), const ESRCH = 3 pkg syscall (openbsd-amd64-cgo), const ESTALE = 70 pkg syscall (openbsd-amd64-cgo), const ETHERMIN = 46 pkg syscall (openbsd-amd64-cgo), const ETHERMTU = 1500 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_8023 = 4 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AARP = 33011 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ACCTON = 33680 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AEONIC = 32822 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ALPHA = 33098 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AMBER = 24584 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AMOEBA = 33093 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AOE = 34978 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_APOLLO = 33015 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_APOLLODOMAIN = 32793 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_APPLETALK = 32923 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_APPLITEK = 32967 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ARGONAUT = 32826 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ARP = 2054 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AT = 32923 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ATALK = 32923 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ATOMIC = 34527 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ATT = 32873 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ATTSTANFORD = 32776 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AUTOPHON = 32874 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AXIS = 34902 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_BCLOOP = 36867 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_BOFL = 33026 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_CABLETRON = 28724 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_CHAOS = 2052 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_COMDESIGN = 32876 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_COMPUGRAPHIC = 32877 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_COUNTERPOINT = 32866 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_CRONUS = 32772 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_CRONUSVLN = 32771 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DCA = 4660 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DDE = 32891 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DEBNI = 43690 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECAM = 32840 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECCUST = 24582 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECDIAG = 24581 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECDNS = 32828 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECDTS = 32830 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECEXPER = 24576 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECLAST = 32833 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECLTM = 32831 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECMUMPS = 24585 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECNETBIOS = 32832 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DELTACON = 34526 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DIDDLE = 17185 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DLOG1 = 1632 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DLOG2 = 1633 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DN = 24579 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DOGFIGHT = 6537 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DSMD = 32825 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ECMA = 2051 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ENCRYPT = 32829 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ES = 32861 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_EXCELAN = 32784 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_EXPERDATA = 32841 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_FLIP = 33094 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_FLOWCONTROL = 34824 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_FRARP = 2056 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_GENDYN = 32872 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_HAYES = 33072 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_HIPPI_FP = 33152 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_HITACHI = 34848 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_HP = 32773 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IEEEPUP = 2560 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IEEEPUPAT = 2561 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IMLBL = 19522 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IMLBLDIAG = 16972 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IP = 2048 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IPAS = 34668 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IPV6 = 34525 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IPX = 33079 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IPXNEW = 32823 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_KALPANA = 34178 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LANBRIDGE = 32824 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LANPROBE = 34952 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LAT = 24580 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LBACK = 36864 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LITTLE = 32864 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LLDP = 35020 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LOGICRAFT = 33096 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LOOPBACK = 36864 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MATRA = 32890 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MAX = 65535 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MERIT = 32892 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MICP = 34618 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MOPDL = 24577 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MOPRC = 24578 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MOTOROLA = 33165 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MPLS = 34887 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MPLS_MCAST = 34888 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MUMPS = 33087 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPCC = 15364 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPCLAIM = 15369 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPCLREQ = 15365 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPCLRSP = 15366 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPCREQ = 15362 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPCRSP = 15363 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPDG = 15367 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPDGB = 15368 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPDLTE = 15370 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPRAR = 15372 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPRAS = 15371 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPRST = 15373 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPSCD = 15361 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPVCD = 15360 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBS = 2050 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NCD = 33097 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NESTAR = 32774 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NETBEUI = 33169 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NOVELL = 33080 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NS = 1536 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NSAT = 1537 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NSCOMPAT = 2055 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NTRAILER = 16 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_OS9 = 28679 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_OS9NET = 28681 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PACER = 32966 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PAE = 34958 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PCS = 16962 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PLANNING = 32836 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PPP = 34827 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PPPOE = 34916 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PPPOEDISC = 34915 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PRIMENTS = 28721 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PUP = 512 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PUPAT = 512 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_QINQ = 34984 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_RACAL = 28720 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_RATIONAL = 33104 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_RAWFR = 25945 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_RCL = 6549 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_RDP = 34617 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_RETIX = 33010 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_REVARP = 32821 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SCA = 24583 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SECTRA = 34523 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SECUREDATA = 34669 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SGITW = 33150 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SG_BOUNCE = 32790 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SG_DIAG = 32787 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SG_NETGAMES = 32788 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SG_RESV = 32789 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SIMNET = 21000 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SLOW = 34825 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SNA = 32981 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SNMP = 33100 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SONIX = 64245 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SPIDER = 32927 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SPRITE = 1280 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_STP = 33153 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TALARIS = 33067 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TALARISMC = 34091 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TCPCOMP = 34667 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TCPSM = 36866 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TEC = 33103 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TIGAN = 32815 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TRAIL = 4096 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TRANSETHER = 25944 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TYMSHARE = 32814 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_UBBST = 28677 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_UBDEBUG = 2304 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_UBDIAGLOOP = 28674 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_UBDL = 28672 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_UBNIU = 28673 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_UBNMC = 28675 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VALID = 5632 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VARIAN = 32989 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VAXELN = 32827 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VEECO = 32871 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VEXP = 32859 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VGLAB = 33073 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VINES = 2989 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VINESECHO = 2991 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VINESLOOP = 2990 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VITAL = 65280 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VLAN = 33024 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VLTLMAN = 32896 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VPROD = 32860 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VURESERVED = 33095 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_WATERLOO = 33072 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_WELLFLEET = 33027 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_X25 = 2053 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_X75 = 2049 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_XNSSM = 36865 pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_XTP = 33149 pkg syscall (openbsd-amd64-cgo), const ETHER_ADDR_LEN = 6 pkg syscall (openbsd-amd64-cgo), const ETHER_ALIGN = 2 pkg syscall (openbsd-amd64-cgo), const ETHER_CRC_LEN = 4 pkg syscall (openbsd-amd64-cgo), const ETHER_CRC_POLY_BE = 79764918 pkg syscall (openbsd-amd64-cgo), const ETHER_CRC_POLY_LE = 3988292384 pkg syscall (openbsd-amd64-cgo), const ETHER_HDR_LEN = 14 pkg syscall (openbsd-amd64-cgo), const ETHER_MAX_DIX_LEN = 1536 pkg syscall (openbsd-amd64-cgo), const ETHER_MAX_LEN = 1518 pkg syscall (openbsd-amd64-cgo), const ETHER_MIN_LEN = 64 pkg syscall (openbsd-amd64-cgo), const ETHER_TYPE_LEN = 2 pkg syscall (openbsd-amd64-cgo), const ETHER_VLAN_ENCAP_LEN = 4 pkg syscall (openbsd-amd64-cgo), const ETIMEDOUT = 60 pkg syscall (openbsd-amd64-cgo), const ETOOMANYREFS = 59 pkg syscall (openbsd-amd64-cgo), const ETXTBSY = 26 pkg syscall (openbsd-amd64-cgo), const EUSERS = 68 pkg syscall (openbsd-amd64-cgo), const EVFILT_AIO = -3 pkg syscall (openbsd-amd64-cgo), const EVFILT_PROC = -5 pkg syscall (openbsd-amd64-cgo), const EVFILT_READ = -1 pkg syscall (openbsd-amd64-cgo), const EVFILT_SIGNAL = -6 pkg syscall (openbsd-amd64-cgo), const EVFILT_SYSCOUNT = 7 pkg syscall (openbsd-amd64-cgo), const EVFILT_TIMER = -7 pkg syscall (openbsd-amd64-cgo), const EVFILT_VNODE = -4 pkg syscall (openbsd-amd64-cgo), const EVFILT_WRITE = -2 pkg syscall (openbsd-amd64-cgo), const EV_ADD = 1 pkg syscall (openbsd-amd64-cgo), const EV_CLEAR = 32 pkg syscall (openbsd-amd64-cgo), const EV_DELETE = 2 pkg syscall (openbsd-amd64-cgo), const EV_DISABLE = 8 pkg syscall (openbsd-amd64-cgo), const EV_ENABLE = 4 pkg syscall (openbsd-amd64-cgo), const EV_EOF = 32768 pkg syscall (openbsd-amd64-cgo), const EV_ERROR = 16384 pkg syscall (openbsd-amd64-cgo), const EV_FLAG1 = 8192 pkg syscall (openbsd-amd64-cgo), const EV_ONESHOT = 16 pkg syscall (openbsd-amd64-cgo), const EV_SYSFLAGS = 61440 pkg syscall (openbsd-amd64-cgo), const EWOULDBLOCK = 35 pkg syscall (openbsd-amd64-cgo), const EXDEV = 18 pkg syscall (openbsd-amd64-cgo), const EXTA = 19200 pkg syscall (openbsd-amd64-cgo), const EXTB = 38400 pkg syscall (openbsd-amd64-cgo), const EXTPROC = 2048 pkg syscall (openbsd-amd64-cgo), const FD_CLOEXEC = 1 pkg syscall (openbsd-amd64-cgo), const FD_SETSIZE = 1024 pkg syscall (openbsd-amd64-cgo), const FLUSHO = 8388608 pkg syscall (openbsd-amd64-cgo), const F_DUPFD = 0 pkg syscall (openbsd-amd64-cgo), const F_DUPFD_CLOEXEC = 10 pkg syscall (openbsd-amd64-cgo), const F_GETFD = 1 pkg syscall (openbsd-amd64-cgo), const F_GETFL = 3 pkg syscall (openbsd-amd64-cgo), const F_GETLK = 7 pkg syscall (openbsd-amd64-cgo), const F_GETOWN = 5 pkg syscall (openbsd-amd64-cgo), const F_OK = 0 pkg syscall (openbsd-amd64-cgo), const F_RDLCK = 1 pkg syscall (openbsd-amd64-cgo), const F_SETFD = 2 pkg syscall (openbsd-amd64-cgo), const F_SETFL = 4 pkg syscall (openbsd-amd64-cgo), const F_SETLK = 8 pkg syscall (openbsd-amd64-cgo), const F_SETLKW = 9 pkg syscall (openbsd-amd64-cgo), const F_SETOWN = 6 pkg syscall (openbsd-amd64-cgo), const F_UNLCK = 2 pkg syscall (openbsd-amd64-cgo), const F_WRLCK = 3 pkg syscall (openbsd-amd64-cgo), const HUPCL = 16384 pkg syscall (openbsd-amd64-cgo), const ICANON = 256 pkg syscall (openbsd-amd64-cgo), const ICRNL = 256 pkg syscall (openbsd-amd64-cgo), const IEXTEN = 1024 pkg syscall (openbsd-amd64-cgo), const IFAN_ARRIVAL = 0 pkg syscall (openbsd-amd64-cgo), const IFAN_DEPARTURE = 1 pkg syscall (openbsd-amd64-cgo), const IFA_ROUTE = 1 pkg syscall (openbsd-amd64-cgo), const IFF_ALLMULTI = 512 pkg syscall (openbsd-amd64-cgo), const IFF_CANTCHANGE = 36434 pkg syscall (openbsd-amd64-cgo), const IFF_DEBUG = 4 pkg syscall (openbsd-amd64-cgo), const IFF_LINK0 = 4096 pkg syscall (openbsd-amd64-cgo), const IFF_LINK1 = 8192 pkg syscall (openbsd-amd64-cgo), const IFF_LINK2 = 16384 pkg syscall (openbsd-amd64-cgo), const IFF_LOOPBACK = 8 pkg syscall (openbsd-amd64-cgo), const IFF_MULTICAST = 32768 pkg syscall (openbsd-amd64-cgo), const IFF_NOARP = 128 pkg syscall (openbsd-amd64-cgo), const IFF_NOTRAILERS = 32 pkg syscall (openbsd-amd64-cgo), const IFF_OACTIVE = 1024 pkg syscall (openbsd-amd64-cgo), const IFF_POINTOPOINT = 16 pkg syscall (openbsd-amd64-cgo), const IFF_PROMISC = 256 pkg syscall (openbsd-amd64-cgo), const IFF_RUNNING = 64 pkg syscall (openbsd-amd64-cgo), const IFF_SIMPLEX = 2048 pkg syscall (openbsd-amd64-cgo), const IFNAMSIZ = 16 pkg syscall (openbsd-amd64-cgo), const IFT_1822 = 2 pkg syscall (openbsd-amd64-cgo), const IFT_A12MPPSWITCH = 130 pkg syscall (openbsd-amd64-cgo), const IFT_AAL2 = 187 pkg syscall (openbsd-amd64-cgo), const IFT_AAL5 = 49 pkg syscall (openbsd-amd64-cgo), const IFT_ADSL = 94 pkg syscall (openbsd-amd64-cgo), const IFT_AFLANE8023 = 59 pkg syscall (openbsd-amd64-cgo), const IFT_AFLANE8025 = 60 pkg syscall (openbsd-amd64-cgo), const IFT_ARAP = 88 pkg syscall (openbsd-amd64-cgo), const IFT_ARCNET = 35 pkg syscall (openbsd-amd64-cgo), const IFT_ARCNETPLUS = 36 pkg syscall (openbsd-amd64-cgo), const IFT_ASYNC = 84 pkg syscall (openbsd-amd64-cgo), const IFT_ATM = 37 pkg syscall (openbsd-amd64-cgo), const IFT_ATMDXI = 105 pkg syscall (openbsd-amd64-cgo), const IFT_ATMFUNI = 106 pkg syscall (openbsd-amd64-cgo), const IFT_ATMIMA = 107 pkg syscall (openbsd-amd64-cgo), const IFT_ATMLOGICAL = 80 pkg syscall (openbsd-amd64-cgo), const IFT_ATMRADIO = 189 pkg syscall (openbsd-amd64-cgo), const IFT_ATMSUBINTERFACE = 134 pkg syscall (openbsd-amd64-cgo), const IFT_ATMVCIENDPT = 194 pkg syscall (openbsd-amd64-cgo), const IFT_ATMVIRTUAL = 149 pkg syscall (openbsd-amd64-cgo), const IFT_BGPPOLICYACCOUNTING = 162 pkg syscall (openbsd-amd64-cgo), const IFT_BLUETOOTH = 248 pkg syscall (openbsd-amd64-cgo), const IFT_BRIDGE = 209 pkg syscall (openbsd-amd64-cgo), const IFT_BSC = 83 pkg syscall (openbsd-amd64-cgo), const IFT_CARP = 247 pkg syscall (openbsd-amd64-cgo), const IFT_CCTEMUL = 61 pkg syscall (openbsd-amd64-cgo), const IFT_CEPT = 19 pkg syscall (openbsd-amd64-cgo), const IFT_CES = 133 pkg syscall (openbsd-amd64-cgo), const IFT_CHANNEL = 70 pkg syscall (openbsd-amd64-cgo), const IFT_CNR = 85 pkg syscall (openbsd-amd64-cgo), const IFT_COFFEE = 132 pkg syscall (openbsd-amd64-cgo), const IFT_COMPOSITELINK = 155 pkg syscall (openbsd-amd64-cgo), const IFT_DCN = 141 pkg syscall (openbsd-amd64-cgo), const IFT_DIGITALPOWERLINE = 138 pkg syscall (openbsd-amd64-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 pkg syscall (openbsd-amd64-cgo), const IFT_DLSW = 74 pkg syscall (openbsd-amd64-cgo), const IFT_DOCSCABLEDOWNSTREAM = 128 pkg syscall (openbsd-amd64-cgo), const IFT_DOCSCABLEMACLAYER = 127 pkg syscall (openbsd-amd64-cgo), const IFT_DOCSCABLEUPSTREAM = 129 pkg syscall (openbsd-amd64-cgo), const IFT_DOCSCABLEUPSTREAMCHANNEL = 205 pkg syscall (openbsd-amd64-cgo), const IFT_DS0 = 81 pkg syscall (openbsd-amd64-cgo), const IFT_DS0BUNDLE = 82 pkg syscall (openbsd-amd64-cgo), const IFT_DS1FDL = 170 pkg syscall (openbsd-amd64-cgo), const IFT_DS3 = 30 pkg syscall (openbsd-amd64-cgo), const IFT_DTM = 140 pkg syscall (openbsd-amd64-cgo), const IFT_DUMMY = 241 pkg syscall (openbsd-amd64-cgo), const IFT_DVBASILN = 172 pkg syscall (openbsd-amd64-cgo), const IFT_DVBASIOUT = 173 pkg syscall (openbsd-amd64-cgo), const IFT_DVBRCCDOWNSTREAM = 147 pkg syscall (openbsd-amd64-cgo), const IFT_DVBRCCMACLAYER = 146 pkg syscall (openbsd-amd64-cgo), const IFT_DVBRCCUPSTREAM = 148 pkg syscall (openbsd-amd64-cgo), const IFT_ECONET = 206 pkg syscall (openbsd-amd64-cgo), const IFT_ENC = 244 pkg syscall (openbsd-amd64-cgo), const IFT_EON = 25 pkg syscall (openbsd-amd64-cgo), const IFT_EPLRS = 87 pkg syscall (openbsd-amd64-cgo), const IFT_ESCON = 73 pkg syscall (openbsd-amd64-cgo), const IFT_ETHER = 6 pkg syscall (openbsd-amd64-cgo), const IFT_FAITH = 243 pkg syscall (openbsd-amd64-cgo), const IFT_FAST = 125 pkg syscall (openbsd-amd64-cgo), const IFT_FASTETHER = 62 pkg syscall (openbsd-amd64-cgo), const IFT_FASTETHERFX = 69 pkg syscall (openbsd-amd64-cgo), const IFT_FDDI = 15 pkg syscall (openbsd-amd64-cgo), const IFT_FIBRECHANNEL = 56 pkg syscall (openbsd-amd64-cgo), const IFT_FRAMERELAYINTERCONNECT = 58 pkg syscall (openbsd-amd64-cgo), const IFT_FRAMERELAYMPI = 92 pkg syscall (openbsd-amd64-cgo), const IFT_FRDLCIENDPT = 193 pkg syscall (openbsd-amd64-cgo), const IFT_FRELAY = 32 pkg syscall (openbsd-amd64-cgo), const IFT_FRELAYDCE = 44 pkg syscall (openbsd-amd64-cgo), const IFT_FRF16MFRBUNDLE = 163 pkg syscall (openbsd-amd64-cgo), const IFT_FRFORWARD = 158 pkg syscall (openbsd-amd64-cgo), const IFT_G703AT2MB = 67 pkg syscall (openbsd-amd64-cgo), const IFT_G703AT64K = 66 pkg syscall (openbsd-amd64-cgo), const IFT_GIF = 240 pkg syscall (openbsd-amd64-cgo), const IFT_GIGABITETHERNET = 117 pkg syscall (openbsd-amd64-cgo), const IFT_GR303IDT = 178 pkg syscall (openbsd-amd64-cgo), const IFT_GR303RDT = 177 pkg syscall (openbsd-amd64-cgo), const IFT_H323GATEKEEPER = 164 pkg syscall (openbsd-amd64-cgo), const IFT_H323PROXY = 165 pkg syscall (openbsd-amd64-cgo), const IFT_HDH1822 = 3 pkg syscall (openbsd-amd64-cgo), const IFT_HDLC = 118 pkg syscall (openbsd-amd64-cgo), const IFT_HDSL2 = 168 pkg syscall (openbsd-amd64-cgo), const IFT_HIPERLAN2 = 183 pkg syscall (openbsd-amd64-cgo), const IFT_HIPPI = 47 pkg syscall (openbsd-amd64-cgo), const IFT_HIPPIINTERFACE = 57 pkg syscall (openbsd-amd64-cgo), const IFT_HOSTPAD = 90 pkg syscall (openbsd-amd64-cgo), const IFT_HSSI = 46 pkg syscall (openbsd-amd64-cgo), const IFT_HY = 14 pkg syscall (openbsd-amd64-cgo), const IFT_IBM370PARCHAN = 72 pkg syscall (openbsd-amd64-cgo), const IFT_IDSL = 154 pkg syscall (openbsd-amd64-cgo), const IFT_IEEE1394 = 144 pkg syscall (openbsd-amd64-cgo), const IFT_IEEE80211 = 71 pkg syscall (openbsd-amd64-cgo), const IFT_IEEE80212 = 55 pkg syscall (openbsd-amd64-cgo), const IFT_IEEE8023ADLAG = 161 pkg syscall (openbsd-amd64-cgo), const IFT_IFGSN = 145 pkg syscall (openbsd-amd64-cgo), const IFT_IMT = 190 pkg syscall (openbsd-amd64-cgo), const IFT_INFINIBAND = 199 pkg syscall (openbsd-amd64-cgo), const IFT_INTERLEAVE = 124 pkg syscall (openbsd-amd64-cgo), const IFT_IP = 126 pkg syscall (openbsd-amd64-cgo), const IFT_IPFORWARD = 142 pkg syscall (openbsd-amd64-cgo), const IFT_IPOVERATM = 114 pkg syscall (openbsd-amd64-cgo), const IFT_IPOVERCDLC = 109 pkg syscall (openbsd-amd64-cgo), const IFT_IPOVERCLAW = 110 pkg syscall (openbsd-amd64-cgo), const IFT_IPSWITCH = 78 pkg syscall (openbsd-amd64-cgo), const IFT_ISDN = 63 pkg syscall (openbsd-amd64-cgo), const IFT_ISDNBASIC = 20 pkg syscall (openbsd-amd64-cgo), const IFT_ISDNPRIMARY = 21 pkg syscall (openbsd-amd64-cgo), const IFT_ISDNS = 75 pkg syscall (openbsd-amd64-cgo), const IFT_ISDNU = 76 pkg syscall (openbsd-amd64-cgo), const IFT_ISO88022LLC = 41 pkg syscall (openbsd-amd64-cgo), const IFT_ISO88023 = 7 pkg syscall (openbsd-amd64-cgo), const IFT_ISO88024 = 8 pkg syscall (openbsd-amd64-cgo), const IFT_ISO88025 = 9 pkg syscall (openbsd-amd64-cgo), const IFT_ISO88025CRFPINT = 98 pkg syscall (openbsd-amd64-cgo), const IFT_ISO88025DTR = 86 pkg syscall (openbsd-amd64-cgo), const IFT_ISO88025FIBER = 115 pkg syscall (openbsd-amd64-cgo), const IFT_ISO88026 = 10 pkg syscall (openbsd-amd64-cgo), const IFT_ISUP = 179 pkg syscall (openbsd-amd64-cgo), const IFT_L2VLAN = 135 pkg syscall (openbsd-amd64-cgo), const IFT_L3IPVLAN = 136 pkg syscall (openbsd-amd64-cgo), const IFT_L3IPXVLAN = 137 pkg syscall (openbsd-amd64-cgo), const IFT_LAPB = 16 pkg syscall (openbsd-amd64-cgo), const IFT_LAPD = 77 pkg syscall (openbsd-amd64-cgo), const IFT_LAPF = 119 pkg syscall (openbsd-amd64-cgo), const IFT_LINEGROUP = 210 pkg syscall (openbsd-amd64-cgo), const IFT_LOCALTALK = 42 pkg syscall (openbsd-amd64-cgo), const IFT_LOOP = 24 pkg syscall (openbsd-amd64-cgo), const IFT_MEDIAMAILOVERIP = 139 pkg syscall (openbsd-amd64-cgo), const IFT_MFSIGLINK = 167 pkg syscall (openbsd-amd64-cgo), const IFT_MIOX25 = 38 pkg syscall (openbsd-amd64-cgo), const IFT_MODEM = 48 pkg syscall (openbsd-amd64-cgo), const IFT_MPC = 113 pkg syscall (openbsd-amd64-cgo), const IFT_MPLS = 166 pkg syscall (openbsd-amd64-cgo), const IFT_MPLSTUNNEL = 150 pkg syscall (openbsd-amd64-cgo), const IFT_MSDSL = 143 pkg syscall (openbsd-amd64-cgo), const IFT_MVL = 191 pkg syscall (openbsd-amd64-cgo), const IFT_MYRINET = 99 pkg syscall (openbsd-amd64-cgo), const IFT_NFAS = 175 pkg syscall (openbsd-amd64-cgo), const IFT_NSIP = 27 pkg syscall (openbsd-amd64-cgo), const IFT_OPTICALCHANNEL = 195 pkg syscall (openbsd-amd64-cgo), const IFT_OPTICALTRANSPORT = 196 pkg syscall (openbsd-amd64-cgo), const IFT_OTHER = 1 pkg syscall (openbsd-amd64-cgo), const IFT_P10 = 12 pkg syscall (openbsd-amd64-cgo), const IFT_P80 = 13 pkg syscall (openbsd-amd64-cgo), const IFT_PARA = 34 pkg syscall (openbsd-amd64-cgo), const IFT_PFLOG = 245 pkg syscall (openbsd-amd64-cgo), const IFT_PFLOW = 249 pkg syscall (openbsd-amd64-cgo), const IFT_PFSYNC = 246 pkg syscall (openbsd-amd64-cgo), const IFT_PLC = 174 pkg syscall (openbsd-amd64-cgo), const IFT_PON155 = 207 pkg syscall (openbsd-amd64-cgo), const IFT_PON622 = 208 pkg syscall (openbsd-amd64-cgo), const IFT_POS = 171 pkg syscall (openbsd-amd64-cgo), const IFT_PPP = 23 pkg syscall (openbsd-amd64-cgo), const IFT_PPPMULTILINKBUNDLE = 108 pkg syscall (openbsd-amd64-cgo), const IFT_PROPATM = 197 pkg syscall (openbsd-amd64-cgo), const IFT_PROPBWAP2MP = 184 pkg syscall (openbsd-amd64-cgo), const IFT_PROPCNLS = 89 pkg syscall (openbsd-amd64-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 pkg syscall (openbsd-amd64-cgo), const IFT_PROPDOCSWIRELESSMACLAYER = 180 pkg syscall (openbsd-amd64-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 pkg syscall (openbsd-amd64-cgo), const IFT_PROPMUX = 54 pkg syscall (openbsd-amd64-cgo), const IFT_PROPVIRTUAL = 53 pkg syscall (openbsd-amd64-cgo), const IFT_PROPWIRELESSP2P = 157 pkg syscall (openbsd-amd64-cgo), const IFT_PTPSERIAL = 22 pkg syscall (openbsd-amd64-cgo), const IFT_PVC = 242 pkg syscall (openbsd-amd64-cgo), const IFT_Q2931 = 201 pkg syscall (openbsd-amd64-cgo), const IFT_QLLC = 68 pkg syscall (openbsd-amd64-cgo), const IFT_RADIOMAC = 188 pkg syscall (openbsd-amd64-cgo), const IFT_RADSL = 95 pkg syscall (openbsd-amd64-cgo), const IFT_REACHDSL = 192 pkg syscall (openbsd-amd64-cgo), const IFT_RFC1483 = 159 pkg syscall (openbsd-amd64-cgo), const IFT_RS232 = 33 pkg syscall (openbsd-amd64-cgo), const IFT_RSRB = 79 pkg syscall (openbsd-amd64-cgo), const IFT_SDLC = 17 pkg syscall (openbsd-amd64-cgo), const IFT_SDSL = 96 pkg syscall (openbsd-amd64-cgo), const IFT_SHDSL = 169 pkg syscall (openbsd-amd64-cgo), const IFT_SIP = 31 pkg syscall (openbsd-amd64-cgo), const IFT_SIPSIG = 204 pkg syscall (openbsd-amd64-cgo), const IFT_SIPTG = 203 pkg syscall (openbsd-amd64-cgo), const IFT_SLIP = 28 pkg syscall (openbsd-amd64-cgo), const IFT_SMDSDXI = 43 pkg syscall (openbsd-amd64-cgo), const IFT_SMDSICIP = 52 pkg syscall (openbsd-amd64-cgo), const IFT_SONET = 39 pkg syscall (openbsd-amd64-cgo), const IFT_SONETOVERHEADCHANNEL = 185 pkg syscall (openbsd-amd64-cgo), const IFT_SONETPATH = 50 pkg syscall (openbsd-amd64-cgo), const IFT_SONETVT = 51 pkg syscall (openbsd-amd64-cgo), const IFT_SRP = 151 pkg syscall (openbsd-amd64-cgo), const IFT_SS7SIGLINK = 156 pkg syscall (openbsd-amd64-cgo), const IFT_STACKTOSTACK = 111 pkg syscall (openbsd-amd64-cgo), const IFT_STARLAN = 11 pkg syscall (openbsd-amd64-cgo), const IFT_T1 = 18 pkg syscall (openbsd-amd64-cgo), const IFT_TDLC = 116 pkg syscall (openbsd-amd64-cgo), const IFT_TELINK = 200 pkg syscall (openbsd-amd64-cgo), const IFT_TERMPAD = 91 pkg syscall (openbsd-amd64-cgo), const IFT_TR008 = 176 pkg syscall (openbsd-amd64-cgo), const IFT_TRANSPHDLC = 123 pkg syscall (openbsd-amd64-cgo), const IFT_TUNNEL = 131 pkg syscall (openbsd-amd64-cgo), const IFT_ULTRA = 29 pkg syscall (openbsd-amd64-cgo), const IFT_USB = 160 pkg syscall (openbsd-amd64-cgo), const IFT_V11 = 64 pkg syscall (openbsd-amd64-cgo), const IFT_V35 = 45 pkg syscall (openbsd-amd64-cgo), const IFT_V36 = 65 pkg syscall (openbsd-amd64-cgo), const IFT_V37 = 120 pkg syscall (openbsd-amd64-cgo), const IFT_VDSL = 97 pkg syscall (openbsd-amd64-cgo), const IFT_VIRTUALIPADDRESS = 112 pkg syscall (openbsd-amd64-cgo), const IFT_VIRTUALTG = 202 pkg syscall (openbsd-amd64-cgo), const IFT_VOICEDID = 213 pkg syscall (openbsd-amd64-cgo), const IFT_VOICEEM = 100 pkg syscall (openbsd-amd64-cgo), const IFT_VOICEEMFGD = 211 pkg syscall (openbsd-amd64-cgo), const IFT_VOICEENCAP = 103 pkg syscall (openbsd-amd64-cgo), const IFT_VOICEFGDEANA = 212 pkg syscall (openbsd-amd64-cgo), const IFT_VOICEFXO = 101 pkg syscall (openbsd-amd64-cgo), const IFT_VOICEFXS = 102 pkg syscall (openbsd-amd64-cgo), const IFT_VOICEOVERATM = 152 pkg syscall (openbsd-amd64-cgo), const IFT_VOICEOVERCABLE = 198 pkg syscall (openbsd-amd64-cgo), const IFT_VOICEOVERFRAMERELAY = 153 pkg syscall (openbsd-amd64-cgo), const IFT_VOICEOVERIP = 104 pkg syscall (openbsd-amd64-cgo), const IFT_X213 = 93 pkg syscall (openbsd-amd64-cgo), const IFT_X25 = 5 pkg syscall (openbsd-amd64-cgo), const IFT_X25DDN = 4 pkg syscall (openbsd-amd64-cgo), const IFT_X25HUNTGROUP = 122 pkg syscall (openbsd-amd64-cgo), const IFT_X25MLP = 121 pkg syscall (openbsd-amd64-cgo), const IFT_X25PLE = 40 pkg syscall (openbsd-amd64-cgo), const IFT_XETHER = 26 pkg syscall (openbsd-amd64-cgo), const IGNBRK = 1 pkg syscall (openbsd-amd64-cgo), const IGNCR = 128 pkg syscall (openbsd-amd64-cgo), const IGNPAR = 4 pkg syscall (openbsd-amd64-cgo), const IMAXBEL = 8192 pkg syscall (openbsd-amd64-cgo), const INLCR = 64 pkg syscall (openbsd-amd64-cgo), const INPCK = 16 pkg syscall (openbsd-amd64-cgo), const IN_CLASSA_HOST = 16777215 pkg syscall (openbsd-amd64-cgo), const IN_CLASSA_MAX = 128 pkg syscall (openbsd-amd64-cgo), const IN_CLASSA_NET = 4278190080 pkg syscall (openbsd-amd64-cgo), const IN_CLASSA_NSHIFT = 24 pkg syscall (openbsd-amd64-cgo), const IN_CLASSB_HOST = 65535 pkg syscall (openbsd-amd64-cgo), const IN_CLASSB_MAX = 65536 pkg syscall (openbsd-amd64-cgo), const IN_CLASSB_NET = 4294901760 pkg syscall (openbsd-amd64-cgo), const IN_CLASSB_NSHIFT = 16 pkg syscall (openbsd-amd64-cgo), const IN_CLASSC_HOST = 255 pkg syscall (openbsd-amd64-cgo), const IN_CLASSC_NET = 4294967040 pkg syscall (openbsd-amd64-cgo), const IN_CLASSC_NSHIFT = 8 pkg syscall (openbsd-amd64-cgo), const IN_CLASSD_HOST = 268435455 pkg syscall (openbsd-amd64-cgo), const IN_CLASSD_NET = 4026531840 pkg syscall (openbsd-amd64-cgo), const IN_CLASSD_NSHIFT = 28 pkg syscall (openbsd-amd64-cgo), const IN_LOOPBACKNET = 127 pkg syscall (openbsd-amd64-cgo), const IN_RFC3021_HOST = 1 pkg syscall (openbsd-amd64-cgo), const IN_RFC3021_NET = 4294967294 pkg syscall (openbsd-amd64-cgo), const IN_RFC3021_NSHIFT = 31 pkg syscall (openbsd-amd64-cgo), const IPPROTO_AH = 51 pkg syscall (openbsd-amd64-cgo), const IPPROTO_CARP = 112 pkg syscall (openbsd-amd64-cgo), const IPPROTO_DIVERT = 258 pkg syscall (openbsd-amd64-cgo), const IPPROTO_DONE = 257 pkg syscall (openbsd-amd64-cgo), const IPPROTO_DSTOPTS = 60 pkg syscall (openbsd-amd64-cgo), const IPPROTO_EGP = 8 pkg syscall (openbsd-amd64-cgo), const IPPROTO_ENCAP = 98 pkg syscall (openbsd-amd64-cgo), const IPPROTO_EON = 80 pkg syscall (openbsd-amd64-cgo), const IPPROTO_ESP = 50 pkg syscall (openbsd-amd64-cgo), const IPPROTO_ETHERIP = 97 pkg syscall (openbsd-amd64-cgo), const IPPROTO_FRAGMENT = 44 pkg syscall (openbsd-amd64-cgo), const IPPROTO_GGP = 3 pkg syscall (openbsd-amd64-cgo), const IPPROTO_GRE = 47 pkg syscall (openbsd-amd64-cgo), const IPPROTO_HOPOPTS = 0 pkg syscall (openbsd-amd64-cgo), const IPPROTO_ICMP = 1 pkg syscall (openbsd-amd64-cgo), const IPPROTO_ICMPV6 = 58 pkg syscall (openbsd-amd64-cgo), const IPPROTO_IDP = 22 pkg syscall (openbsd-amd64-cgo), const IPPROTO_IGMP = 2 pkg syscall (openbsd-amd64-cgo), const IPPROTO_IPCOMP = 108 pkg syscall (openbsd-amd64-cgo), const IPPROTO_IPIP = 4 pkg syscall (openbsd-amd64-cgo), const IPPROTO_IPV4 = 4 pkg syscall (openbsd-amd64-cgo), const IPPROTO_MAX = 256 pkg syscall (openbsd-amd64-cgo), const IPPROTO_MAXID = 259 pkg syscall (openbsd-amd64-cgo), const IPPROTO_MOBILE = 55 pkg syscall (openbsd-amd64-cgo), const IPPROTO_MPLS = 137 pkg syscall (openbsd-amd64-cgo), const IPPROTO_NONE = 59 pkg syscall (openbsd-amd64-cgo), const IPPROTO_PFSYNC = 240 pkg syscall (openbsd-amd64-cgo), const IPPROTO_PIM = 103 pkg syscall (openbsd-amd64-cgo), const IPPROTO_PUP = 12 pkg syscall (openbsd-amd64-cgo), const IPPROTO_RAW = 255 pkg syscall (openbsd-amd64-cgo), const IPPROTO_ROUTING = 43 pkg syscall (openbsd-amd64-cgo), const IPPROTO_RSVP = 46 pkg syscall (openbsd-amd64-cgo), const IPPROTO_TP = 29 pkg syscall (openbsd-amd64-cgo), const IPV6_AUTH_LEVEL = 53 pkg syscall (openbsd-amd64-cgo), const IPV6_AUTOFLOWLABEL = 59 pkg syscall (openbsd-amd64-cgo), const IPV6_CHECKSUM = 26 pkg syscall (openbsd-amd64-cgo), const IPV6_DEFAULT_MULTICAST_HOPS = 1 pkg syscall (openbsd-amd64-cgo), const IPV6_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (openbsd-amd64-cgo), const IPV6_DEFHLIM = 64 pkg syscall (openbsd-amd64-cgo), const IPV6_DONTFRAG = 62 pkg syscall (openbsd-amd64-cgo), const IPV6_DSTOPTS = 50 pkg syscall (openbsd-amd64-cgo), const IPV6_ESP_NETWORK_LEVEL = 55 pkg syscall (openbsd-amd64-cgo), const IPV6_ESP_TRANS_LEVEL = 54 pkg syscall (openbsd-amd64-cgo), const IPV6_FAITH = 29 pkg syscall (openbsd-amd64-cgo), const IPV6_FLOWINFO_MASK = 4294967055 pkg syscall (openbsd-amd64-cgo), const IPV6_FLOWLABEL_MASK = 4294905600 pkg syscall (openbsd-amd64-cgo), const IPV6_FRAGTTL = 120 pkg syscall (openbsd-amd64-cgo), const IPV6_HLIMDEC = 1 pkg syscall (openbsd-amd64-cgo), const IPV6_HOPLIMIT = 47 pkg syscall (openbsd-amd64-cgo), const IPV6_HOPOPTS = 49 pkg syscall (openbsd-amd64-cgo), const IPV6_IPCOMP_LEVEL = 60 pkg syscall (openbsd-amd64-cgo), const IPV6_JOIN_GROUP = 12 pkg syscall (openbsd-amd64-cgo), const IPV6_LEAVE_GROUP = 13 pkg syscall (openbsd-amd64-cgo), const IPV6_MAXHLIM = 255 pkg syscall (openbsd-amd64-cgo), const IPV6_MAXPACKET = 65535 pkg syscall (openbsd-amd64-cgo), const IPV6_MMTU = 1280 pkg syscall (openbsd-amd64-cgo), const IPV6_MULTICAST_HOPS = 10 pkg syscall (openbsd-amd64-cgo), const IPV6_MULTICAST_IF = 9 pkg syscall (openbsd-amd64-cgo), const IPV6_MULTICAST_LOOP = 11 pkg syscall (openbsd-amd64-cgo), const IPV6_NEXTHOP = 48 pkg syscall (openbsd-amd64-cgo), const IPV6_OPTIONS = 1 pkg syscall (openbsd-amd64-cgo), const IPV6_PATHMTU = 44 pkg syscall (openbsd-amd64-cgo), const IPV6_PIPEX = 63 pkg syscall (openbsd-amd64-cgo), const IPV6_PKTINFO = 46 pkg syscall (openbsd-amd64-cgo), const IPV6_PORTRANGE = 14 pkg syscall (openbsd-amd64-cgo), const IPV6_PORTRANGE_DEFAULT = 0 pkg syscall (openbsd-amd64-cgo), const IPV6_PORTRANGE_HIGH = 1 pkg syscall (openbsd-amd64-cgo), const IPV6_PORTRANGE_LOW = 2 pkg syscall (openbsd-amd64-cgo), const IPV6_RECVDSTOPTS = 40 pkg syscall (openbsd-amd64-cgo), const IPV6_RECVHOPLIMIT = 37 pkg syscall (openbsd-amd64-cgo), const IPV6_RECVHOPOPTS = 39 pkg syscall (openbsd-amd64-cgo), const IPV6_RECVPATHMTU = 43 pkg syscall (openbsd-amd64-cgo), const IPV6_RECVPKTINFO = 36 pkg syscall (openbsd-amd64-cgo), const IPV6_RECVRTHDR = 38 pkg syscall (openbsd-amd64-cgo), const IPV6_RECVTCLASS = 57 pkg syscall (openbsd-amd64-cgo), const IPV6_RTABLE = 4129 pkg syscall (openbsd-amd64-cgo), const IPV6_RTHDR = 51 pkg syscall (openbsd-amd64-cgo), const IPV6_RTHDRDSTOPTS = 35 pkg syscall (openbsd-amd64-cgo), const IPV6_RTHDR_LOOSE = 0 pkg syscall (openbsd-amd64-cgo), const IPV6_RTHDR_STRICT = 1 pkg syscall (openbsd-amd64-cgo), const IPV6_RTHDR_TYPE_0 = 0 pkg syscall (openbsd-amd64-cgo), const IPV6_SOCKOPT_RESERVED1 = 3 pkg syscall (openbsd-amd64-cgo), const IPV6_TCLASS = 61 pkg syscall (openbsd-amd64-cgo), const IPV6_UNICAST_HOPS = 4 pkg syscall (openbsd-amd64-cgo), const IPV6_USE_MIN_MTU = 42 pkg syscall (openbsd-amd64-cgo), const IPV6_V6ONLY = 27 pkg syscall (openbsd-amd64-cgo), const IPV6_VERSION = 96 pkg syscall (openbsd-amd64-cgo), const IPV6_VERSION_MASK = 240 pkg syscall (openbsd-amd64-cgo), const IP_ADD_MEMBERSHIP = 12 pkg syscall (openbsd-amd64-cgo), const IP_AUTH_LEVEL = 20 pkg syscall (openbsd-amd64-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 pkg syscall (openbsd-amd64-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 pkg syscall (openbsd-amd64-cgo), const IP_DF = 16384 pkg syscall (openbsd-amd64-cgo), const IP_DROP_MEMBERSHIP = 13 pkg syscall (openbsd-amd64-cgo), const IP_ESP_NETWORK_LEVEL = 22 pkg syscall (openbsd-amd64-cgo), const IP_ESP_TRANS_LEVEL = 21 pkg syscall (openbsd-amd64-cgo), const IP_HDRINCL = 2 pkg syscall (openbsd-amd64-cgo), const IP_IPCOMP_LEVEL = 29 pkg syscall (openbsd-amd64-cgo), const IP_IPSECFLOWINFO = 36 pkg syscall (openbsd-amd64-cgo), const IP_IPSEC_LOCAL_AUTH = 27 pkg syscall (openbsd-amd64-cgo), const IP_IPSEC_LOCAL_CRED = 25 pkg syscall (openbsd-amd64-cgo), const IP_IPSEC_LOCAL_ID = 23 pkg syscall (openbsd-amd64-cgo), const IP_IPSEC_REMOTE_AUTH = 28 pkg syscall (openbsd-amd64-cgo), const IP_IPSEC_REMOTE_CRED = 26 pkg syscall (openbsd-amd64-cgo), const IP_IPSEC_REMOTE_ID = 24 pkg syscall (openbsd-amd64-cgo), const IP_MAXPACKET = 65535 pkg syscall (openbsd-amd64-cgo), const IP_MAX_MEMBERSHIPS = 4095 pkg syscall (openbsd-amd64-cgo), const IP_MF = 8192 pkg syscall (openbsd-amd64-cgo), const IP_MINTTL = 32 pkg syscall (openbsd-amd64-cgo), const IP_MIN_MEMBERSHIPS = 15 pkg syscall (openbsd-amd64-cgo), const IP_MSS = 576 pkg syscall (openbsd-amd64-cgo), const IP_MULTICAST_IF = 9 pkg syscall (openbsd-amd64-cgo), const IP_MULTICAST_LOOP = 11 pkg syscall (openbsd-amd64-cgo), const IP_MULTICAST_TTL = 10 pkg syscall (openbsd-amd64-cgo), const IP_OFFMASK = 8191 pkg syscall (openbsd-amd64-cgo), const IP_OPTIONS = 1 pkg syscall (openbsd-amd64-cgo), const IP_PIPEX = 34 pkg syscall (openbsd-amd64-cgo), const IP_PORTRANGE = 19 pkg syscall (openbsd-amd64-cgo), const IP_PORTRANGE_DEFAULT = 0 pkg syscall (openbsd-amd64-cgo), const IP_PORTRANGE_HIGH = 1 pkg syscall (openbsd-amd64-cgo), const IP_PORTRANGE_LOW = 2 pkg syscall (openbsd-amd64-cgo), const IP_RECVDSTADDR = 7 pkg syscall (openbsd-amd64-cgo), const IP_RECVDSTPORT = 33 pkg syscall (openbsd-amd64-cgo), const IP_RECVIF = 30 pkg syscall (openbsd-amd64-cgo), const IP_RECVOPTS = 5 pkg syscall (openbsd-amd64-cgo), const IP_RECVRETOPTS = 6 pkg syscall (openbsd-amd64-cgo), const IP_RECVRTABLE = 35 pkg syscall (openbsd-amd64-cgo), const IP_RECVTTL = 31 pkg syscall (openbsd-amd64-cgo), const IP_RETOPTS = 8 pkg syscall (openbsd-amd64-cgo), const IP_RF = 32768 pkg syscall (openbsd-amd64-cgo), const IP_RTABLE = 4129 pkg syscall (openbsd-amd64-cgo), const IP_TOS = 3 pkg syscall (openbsd-amd64-cgo), const IP_TTL = 4 pkg syscall (openbsd-amd64-cgo), const ISIG = 128 pkg syscall (openbsd-amd64-cgo), const ISTRIP = 32 pkg syscall (openbsd-amd64-cgo), const IXANY = 2048 pkg syscall (openbsd-amd64-cgo), const IXOFF = 1024 pkg syscall (openbsd-amd64-cgo), const IXON = 512 pkg syscall (openbsd-amd64-cgo), const ImplementsGetwd = false pkg syscall (openbsd-amd64-cgo), const LCNT_OVERLOAD_FLUSH = 6 pkg syscall (openbsd-amd64-cgo), const LOCK_EX = 2 pkg syscall (openbsd-amd64-cgo), const LOCK_NB = 4 pkg syscall (openbsd-amd64-cgo), const LOCK_SH = 1 pkg syscall (openbsd-amd64-cgo), const LOCK_UN = 8 pkg syscall (openbsd-amd64-cgo), const MSG_BCAST = 256 pkg syscall (openbsd-amd64-cgo), const MSG_CTRUNC = 32 pkg syscall (openbsd-amd64-cgo), const MSG_DONTROUTE = 4 pkg syscall (openbsd-amd64-cgo), const MSG_DONTWAIT = 128 pkg syscall (openbsd-amd64-cgo), const MSG_EOR = 8 pkg syscall (openbsd-amd64-cgo), const MSG_MCAST = 512 pkg syscall (openbsd-amd64-cgo), const MSG_NOSIGNAL = 1024 pkg syscall (openbsd-amd64-cgo), const MSG_OOB = 1 pkg syscall (openbsd-amd64-cgo), const MSG_PEEK = 2 pkg syscall (openbsd-amd64-cgo), const MSG_TRUNC = 16 pkg syscall (openbsd-amd64-cgo), const MSG_WAITALL = 64 pkg syscall (openbsd-amd64-cgo), const NAME_MAX = 255 pkg syscall (openbsd-amd64-cgo), const NET_RT_DUMP = 1 pkg syscall (openbsd-amd64-cgo), const NET_RT_FLAGS = 2 pkg syscall (openbsd-amd64-cgo), const NET_RT_IFLIST = 3 pkg syscall (openbsd-amd64-cgo), const NET_RT_MAXID = 6 pkg syscall (openbsd-amd64-cgo), const NET_RT_STATS = 4 pkg syscall (openbsd-amd64-cgo), const NET_RT_TABLE = 5 pkg syscall (openbsd-amd64-cgo), const NOFLSH = 2147483648 pkg syscall (openbsd-amd64-cgo), const NOTE_ATTRIB = 8 pkg syscall (openbsd-amd64-cgo), const NOTE_CHILD = 4 pkg syscall (openbsd-amd64-cgo), const NOTE_DELETE = 1 pkg syscall (openbsd-amd64-cgo), const NOTE_EOF = 2 pkg syscall (openbsd-amd64-cgo), const NOTE_EXEC = 536870912 pkg syscall (openbsd-amd64-cgo), const NOTE_EXIT = 2147483648 pkg syscall (openbsd-amd64-cgo), const NOTE_EXTEND = 4 pkg syscall (openbsd-amd64-cgo), const NOTE_FORK = 1073741824 pkg syscall (openbsd-amd64-cgo), const NOTE_LINK = 16 pkg syscall (openbsd-amd64-cgo), const NOTE_LOWAT = 1 pkg syscall (openbsd-amd64-cgo), const NOTE_PCTRLMASK = 4026531840 pkg syscall (openbsd-amd64-cgo), const NOTE_PDATAMASK = 1048575 pkg syscall (openbsd-amd64-cgo), const NOTE_RENAME = 32 pkg syscall (openbsd-amd64-cgo), const NOTE_REVOKE = 64 pkg syscall (openbsd-amd64-cgo), const NOTE_TRACK = 1 pkg syscall (openbsd-amd64-cgo), const NOTE_TRACKERR = 2 pkg syscall (openbsd-amd64-cgo), const NOTE_TRUNCATE = 128 pkg syscall (openbsd-amd64-cgo), const NOTE_WRITE = 2 pkg syscall (openbsd-amd64-cgo), const OCRNL = 16 pkg syscall (openbsd-amd64-cgo), const ONLCR = 2 pkg syscall (openbsd-amd64-cgo), const ONLRET = 128 pkg syscall (openbsd-amd64-cgo), const ONOCR = 64 pkg syscall (openbsd-amd64-cgo), const ONOEOT = 8 pkg syscall (openbsd-amd64-cgo), const OPOST = 1 pkg syscall (openbsd-amd64-cgo), const O_ACCMODE = 3 pkg syscall (openbsd-amd64-cgo), const O_APPEND = 8 pkg syscall (openbsd-amd64-cgo), const O_ASYNC = 64 pkg syscall (openbsd-amd64-cgo), const O_CLOEXEC = 65536 pkg syscall (openbsd-amd64-cgo), const O_CREAT = 512 pkg syscall (openbsd-amd64-cgo), const O_DIRECTORY = 131072 pkg syscall (openbsd-amd64-cgo), const O_DSYNC = 128 pkg syscall (openbsd-amd64-cgo), const O_EXCL = 2048 pkg syscall (openbsd-amd64-cgo), const O_EXLOCK = 32 pkg syscall (openbsd-amd64-cgo), const O_FSYNC = 128 pkg syscall (openbsd-amd64-cgo), const O_NDELAY = 4 pkg syscall (openbsd-amd64-cgo), const O_NOCTTY = 32768 pkg syscall (openbsd-amd64-cgo), const O_NOFOLLOW = 256 pkg syscall (openbsd-amd64-cgo), const O_NONBLOCK = 4 pkg syscall (openbsd-amd64-cgo), const O_RSYNC = 128 pkg syscall (openbsd-amd64-cgo), const O_SHLOCK = 16 pkg syscall (openbsd-amd64-cgo), const O_SYNC = 128 pkg syscall (openbsd-amd64-cgo), const O_TRUNC = 1024 pkg syscall (openbsd-amd64-cgo), const PARENB = 4096 pkg syscall (openbsd-amd64-cgo), const PARMRK = 8 pkg syscall (openbsd-amd64-cgo), const PARODD = 8192 pkg syscall (openbsd-amd64-cgo), const PENDIN = 536870912 pkg syscall (openbsd-amd64-cgo), const PF_FLUSH = 1 pkg syscall (openbsd-amd64-cgo), const PMC5_PIPELINE_FLUSH = 21 pkg syscall (openbsd-amd64-cgo), const PTRACE_CONT = 7 pkg syscall (openbsd-amd64-cgo), const PTRACE_KILL = 8 pkg syscall (openbsd-amd64-cgo), const PTRACE_TRACEME = 0 pkg syscall (openbsd-amd64-cgo), const RLIMIT_CORE = 4 pkg syscall (openbsd-amd64-cgo), const RLIMIT_CPU = 0 pkg syscall (openbsd-amd64-cgo), const RLIMIT_DATA = 2 pkg syscall (openbsd-amd64-cgo), const RLIMIT_FSIZE = 1 pkg syscall (openbsd-amd64-cgo), const RLIMIT_NOFILE = 8 pkg syscall (openbsd-amd64-cgo), const RLIMIT_STACK = 3 pkg syscall (openbsd-amd64-cgo), const RLIM_INFINITY = 9223372036854775807 pkg syscall (openbsd-amd64-cgo), const RTAX_AUTHOR = 6 pkg syscall (openbsd-amd64-cgo), const RTAX_BRD = 7 pkg syscall (openbsd-amd64-cgo), const RTAX_DST = 0 pkg syscall (openbsd-amd64-cgo), const RTAX_GATEWAY = 1 pkg syscall (openbsd-amd64-cgo), const RTAX_GENMASK = 3 pkg syscall (openbsd-amd64-cgo), const RTAX_IFA = 5 pkg syscall (openbsd-amd64-cgo), const RTAX_IFP = 4 pkg syscall (openbsd-amd64-cgo), const RTAX_LABEL = 10 pkg syscall (openbsd-amd64-cgo), const RTAX_MAX = 11 pkg syscall (openbsd-amd64-cgo), const RTAX_NETMASK = 2 pkg syscall (openbsd-amd64-cgo), const RTAX_SRC = 8 pkg syscall (openbsd-amd64-cgo), const RTAX_SRCMASK = 9 pkg syscall (openbsd-amd64-cgo), const RTA_AUTHOR = 64 pkg syscall (openbsd-amd64-cgo), const RTA_BRD = 128 pkg syscall (openbsd-amd64-cgo), const RTA_DST = 1 pkg syscall (openbsd-amd64-cgo), const RTA_GATEWAY = 2 pkg syscall (openbsd-amd64-cgo), const RTA_GENMASK = 8 pkg syscall (openbsd-amd64-cgo), const RTA_IFA = 32 pkg syscall (openbsd-amd64-cgo), const RTA_IFP = 16 pkg syscall (openbsd-amd64-cgo), const RTA_LABEL = 1024 pkg syscall (openbsd-amd64-cgo), const RTA_NETMASK = 4 pkg syscall (openbsd-amd64-cgo), const RTA_SRC = 256 pkg syscall (openbsd-amd64-cgo), const RTA_SRCMASK = 512 pkg syscall (openbsd-amd64-cgo), const RTF_ANNOUNCE = 16384 pkg syscall (openbsd-amd64-cgo), const RTF_BLACKHOLE = 4096 pkg syscall (openbsd-amd64-cgo), const RTF_CLONED = 65536 pkg syscall (openbsd-amd64-cgo), const RTF_CLONING = 256 pkg syscall (openbsd-amd64-cgo), const RTF_DONE = 64 pkg syscall (openbsd-amd64-cgo), const RTF_DYNAMIC = 16 pkg syscall (openbsd-amd64-cgo), const RTF_FMASK = 63496 pkg syscall (openbsd-amd64-cgo), const RTF_GATEWAY = 2 pkg syscall (openbsd-amd64-cgo), const RTF_HOST = 4 pkg syscall (openbsd-amd64-cgo), const RTF_LLINFO = 1024 pkg syscall (openbsd-amd64-cgo), const RTF_MASK = 128 pkg syscall (openbsd-amd64-cgo), const RTF_MODIFIED = 32 pkg syscall (openbsd-amd64-cgo), const RTF_MPATH = 262144 pkg syscall (openbsd-amd64-cgo), const RTF_MPLS = 1048576 pkg syscall (openbsd-amd64-cgo), const RTF_PERMANENT_ARP = 8192 pkg syscall (openbsd-amd64-cgo), const RTF_PROTO1 = 32768 pkg syscall (openbsd-amd64-cgo), const RTF_PROTO2 = 16384 pkg syscall (openbsd-amd64-cgo), const RTF_PROTO3 = 8192 pkg syscall (openbsd-amd64-cgo), const RTF_REJECT = 8 pkg syscall (openbsd-amd64-cgo), const RTF_SOURCE = 131072 pkg syscall (openbsd-amd64-cgo), const RTF_STATIC = 2048 pkg syscall (openbsd-amd64-cgo), const RTF_TUNNEL = 1048576 pkg syscall (openbsd-amd64-cgo), const RTF_UP = 1 pkg syscall (openbsd-amd64-cgo), const RTF_USETRAILERS = 32768 pkg syscall (openbsd-amd64-cgo), const RTF_XRESOLVE = 512 pkg syscall (openbsd-amd64-cgo), const RTM_ADD = 1 pkg syscall (openbsd-amd64-cgo), const RTM_CHANGE = 3 pkg syscall (openbsd-amd64-cgo), const RTM_DELADDR = 13 pkg syscall (openbsd-amd64-cgo), const RTM_DELETE = 2 pkg syscall (openbsd-amd64-cgo), const RTM_DESYNC = 16 pkg syscall (openbsd-amd64-cgo), const RTM_GET = 4 pkg syscall (openbsd-amd64-cgo), const RTM_IFANNOUNCE = 15 pkg syscall (openbsd-amd64-cgo), const RTM_IFINFO = 14 pkg syscall (openbsd-amd64-cgo), const RTM_LOCK = 8 pkg syscall (openbsd-amd64-cgo), const RTM_LOSING = 5 pkg syscall (openbsd-amd64-cgo), const RTM_MAXSIZE = 2048 pkg syscall (openbsd-amd64-cgo), const RTM_MISS = 7 pkg syscall (openbsd-amd64-cgo), const RTM_NEWADDR = 12 pkg syscall (openbsd-amd64-cgo), const RTM_REDIRECT = 6 pkg syscall (openbsd-amd64-cgo), const RTM_RESOLVE = 11 pkg syscall (openbsd-amd64-cgo), const RTM_RTTUNIT = 1000000 pkg syscall (openbsd-amd64-cgo), const RTM_VERSION = 4 pkg syscall (openbsd-amd64-cgo), const RTV_EXPIRE = 4 pkg syscall (openbsd-amd64-cgo), const RTV_HOPCOUNT = 2 pkg syscall (openbsd-amd64-cgo), const RTV_MTU = 1 pkg syscall (openbsd-amd64-cgo), const RTV_RPIPE = 8 pkg syscall (openbsd-amd64-cgo), const RTV_RTT = 64 pkg syscall (openbsd-amd64-cgo), const RTV_RTTVAR = 128 pkg syscall (openbsd-amd64-cgo), const RTV_SPIPE = 16 pkg syscall (openbsd-amd64-cgo), const RTV_SSTHRESH = 32 pkg syscall (openbsd-amd64-cgo), const RT_TABLEID_MAX = 255 pkg syscall (openbsd-amd64-cgo), const RUSAGE_CHILDREN = -1 pkg syscall (openbsd-amd64-cgo), const RUSAGE_SELF = 0 pkg syscall (openbsd-amd64-cgo), const RUSAGE_THREAD = 1 pkg syscall (openbsd-amd64-cgo), const SCM_RIGHTS = 1 pkg syscall (openbsd-amd64-cgo), const SCM_TIMESTAMP = 4 pkg syscall (openbsd-amd64-cgo), const SIGBUS = 10 pkg syscall (openbsd-amd64-cgo), const SIGCHLD = 20 pkg syscall (openbsd-amd64-cgo), const SIGCONT = 19 pkg syscall (openbsd-amd64-cgo), const SIGEMT = 7 pkg syscall (openbsd-amd64-cgo), const SIGINFO = 29 pkg syscall (openbsd-amd64-cgo), const SIGIO = 23 pkg syscall (openbsd-amd64-cgo), const SIGIOT = 6 pkg syscall (openbsd-amd64-cgo), const SIGPROF = 27 pkg syscall (openbsd-amd64-cgo), const SIGSTOP = 17 pkg syscall (openbsd-amd64-cgo), const SIGSYS = 12 pkg syscall (openbsd-amd64-cgo), const SIGTHR = 32 pkg syscall (openbsd-amd64-cgo), const SIGTSTP = 18 pkg syscall (openbsd-amd64-cgo), const SIGTTIN = 21 pkg syscall (openbsd-amd64-cgo), const SIGTTOU = 22 pkg syscall (openbsd-amd64-cgo), const SIGURG = 16 pkg syscall (openbsd-amd64-cgo), const SIGUSR1 = 30 pkg syscall (openbsd-amd64-cgo), const SIGUSR2 = 31 pkg syscall (openbsd-amd64-cgo), const SIGVTALRM = 26 pkg syscall (openbsd-amd64-cgo), const SIGWINCH = 28 pkg syscall (openbsd-amd64-cgo), const SIGXCPU = 24 pkg syscall (openbsd-amd64-cgo), const SIGXFSZ = 25 pkg syscall (openbsd-amd64-cgo), const SIOCADDMULTI = 2149607729 pkg syscall (openbsd-amd64-cgo), const SIOCAIFADDR = 2151704858 pkg syscall (openbsd-amd64-cgo), const SIOCAIFGROUP = 2150132103 pkg syscall (openbsd-amd64-cgo), const SIOCALIFADDR = 2182637852 pkg syscall (openbsd-amd64-cgo), const SIOCATMARK = 1074033415 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGADD = 2153277756 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGADDS = 2153277761 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGARL = 2154719565 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGDADDR = 2150132039 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGDEL = 2153277757 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGDELS = 2153277762 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGFLUSH = 2153277768 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGFRL = 2154719566 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGCACHE = 3222563137 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGFD = 3222563154 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGHT = 3222563153 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGIFFLGS = 3227019582 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGMA = 3222563155 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGPARAM = 3225446744 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGPRI = 3222563152 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGRL = 3224398159 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGSIFS = 3227019580 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGTO = 3222563142 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGIFS = 3227019586 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGRTS = 3223349571 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSADDR = 3223873860 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSCACHE = 2148821312 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSFD = 2148821330 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSHT = 2148821329 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSIFCOST = 2153277781 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSIFFLGS = 2153277759 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSIFPRIO = 2153277780 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSMA = 2148821331 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSPRI = 2148821328 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSPROTO = 2148821338 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSTO = 2148821317 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSTXHC = 2148821337 pkg syscall (openbsd-amd64-cgo), const SIOCDELMULTI = 2149607730 pkg syscall (openbsd-amd64-cgo), const SIOCDIFADDR = 2149607705 pkg syscall (openbsd-amd64-cgo), const SIOCDIFGROUP = 2150132105 pkg syscall (openbsd-amd64-cgo), const SIOCDIFPHYADDR = 2149607753 pkg syscall (openbsd-amd64-cgo), const SIOCDLIFADDR = 2182637854 pkg syscall (openbsd-amd64-cgo), const SIOCGETKALIVE = 3222825380 pkg syscall (openbsd-amd64-cgo), const SIOCGETLABEL = 2149607834 pkg syscall (openbsd-amd64-cgo), const SIOCGETPFLOW = 3223349758 pkg syscall (openbsd-amd64-cgo), const SIOCGETPFSYNC = 3223349752 pkg syscall (openbsd-amd64-cgo), const SIOCGETSGCNT = 3223352628 pkg syscall (openbsd-amd64-cgo), const SIOCGETVIFCNT = 3223876915 pkg syscall (openbsd-amd64-cgo), const SIOCGHIWAT = 1074033409 pkg syscall (openbsd-amd64-cgo), const SIOCGIFADDR = 3223349537 pkg syscall (openbsd-amd64-cgo), const SIOCGIFASYNCMAP = 3223349628 pkg syscall (openbsd-amd64-cgo), const SIOCGIFBRDADDR = 3223349539 pkg syscall (openbsd-amd64-cgo), const SIOCGIFCONF = 3222300964 pkg syscall (openbsd-amd64-cgo), const SIOCGIFDATA = 3223349531 pkg syscall (openbsd-amd64-cgo), const SIOCGIFDESCR = 3223349633 pkg syscall (openbsd-amd64-cgo), const SIOCGIFDSTADDR = 3223349538 pkg syscall (openbsd-amd64-cgo), const SIOCGIFFLAGS = 3223349521 pkg syscall (openbsd-amd64-cgo), const SIOCGIFGATTR = 3223873931 pkg syscall (openbsd-amd64-cgo), const SIOCGIFGENERIC = 3223349562 pkg syscall (openbsd-amd64-cgo), const SIOCGIFGMEMB = 3223873930 pkg syscall (openbsd-amd64-cgo), const SIOCGIFGROUP = 3223873928 pkg syscall (openbsd-amd64-cgo), const SIOCGIFMEDIA = 3224398134 pkg syscall (openbsd-amd64-cgo), const SIOCGIFMETRIC = 3223349527 pkg syscall (openbsd-amd64-cgo), const SIOCGIFMTU = 3223349630 pkg syscall (openbsd-amd64-cgo), const SIOCGIFNETMASK = 3223349541 pkg syscall (openbsd-amd64-cgo), const SIOCGIFPDSTADDR = 3223349576 pkg syscall (openbsd-amd64-cgo), const SIOCGIFPRIORITY = 3223349660 pkg syscall (openbsd-amd64-cgo), const SIOCGIFPSRCADDR = 3223349575 pkg syscall (openbsd-amd64-cgo), const SIOCGIFRDOMAIN = 3223349664 pkg syscall (openbsd-amd64-cgo), const SIOCGIFRTLABEL = 3223349635 pkg syscall (openbsd-amd64-cgo), const SIOCGIFTIMESLOT = 3223349638 pkg syscall (openbsd-amd64-cgo), const SIOCGIFXFLAGS = 3223349662 pkg syscall (openbsd-amd64-cgo), const SIOCGLIFADDR = 3256379677 pkg syscall (openbsd-amd64-cgo), const SIOCGLIFPHYADDR = 3256379723 pkg syscall (openbsd-amd64-cgo), const SIOCGLIFPHYRTABLE = 3223349666 pkg syscall (openbsd-amd64-cgo), const SIOCGLOWAT = 1074033411 pkg syscall (openbsd-amd64-cgo), const SIOCGPGRP = 1074033417 pkg syscall (openbsd-amd64-cgo), const SIOCGVH = 3223349750 pkg syscall (openbsd-amd64-cgo), const SIOCIFCREATE = 2149607802 pkg syscall (openbsd-amd64-cgo), const SIOCIFDESTROY = 2149607801 pkg syscall (openbsd-amd64-cgo), const SIOCIFGCLONERS = 3222301048 pkg syscall (openbsd-amd64-cgo), const SIOCSETKALIVE = 2149083555 pkg syscall (openbsd-amd64-cgo), const SIOCSETLABEL = 2149607833 pkg syscall (openbsd-amd64-cgo), const SIOCSETPFLOW = 2149607933 pkg syscall (openbsd-amd64-cgo), const SIOCSETPFSYNC = 2149607927 pkg syscall (openbsd-amd64-cgo), const SIOCSHIWAT = 2147775232 pkg syscall (openbsd-amd64-cgo), const SIOCSIFADDR = 2149607692 pkg syscall (openbsd-amd64-cgo), const SIOCSIFASYNCMAP = 2149607805 pkg syscall (openbsd-amd64-cgo), const SIOCSIFBRDADDR = 2149607699 pkg syscall (openbsd-amd64-cgo), const SIOCSIFDESCR = 2149607808 pkg syscall (openbsd-amd64-cgo), const SIOCSIFDSTADDR = 2149607694 pkg syscall (openbsd-amd64-cgo), const SIOCSIFFLAGS = 2149607696 pkg syscall (openbsd-amd64-cgo), const SIOCSIFGATTR = 2150132108 pkg syscall (openbsd-amd64-cgo), const SIOCSIFGENERIC = 2149607737 pkg syscall (openbsd-amd64-cgo), const SIOCSIFLLADDR = 2149607711 pkg syscall (openbsd-amd64-cgo), const SIOCSIFMEDIA = 3223349557 pkg syscall (openbsd-amd64-cgo), const SIOCSIFMETRIC = 2149607704 pkg syscall (openbsd-amd64-cgo), const SIOCSIFMTU = 2149607807 pkg syscall (openbsd-amd64-cgo), const SIOCSIFNETMASK = 2149607702 pkg syscall (openbsd-amd64-cgo), const SIOCSIFPHYADDR = 2151704902 pkg syscall (openbsd-amd64-cgo), const SIOCSIFPRIORITY = 2149607835 pkg syscall (openbsd-amd64-cgo), const SIOCSIFRDOMAIN = 2149607839 pkg syscall (openbsd-amd64-cgo), const SIOCSIFRTLABEL = 2149607810 pkg syscall (openbsd-amd64-cgo), const SIOCSIFTIMESLOT = 2149607813 pkg syscall (openbsd-amd64-cgo), const SIOCSIFXFLAGS = 2149607837 pkg syscall (openbsd-amd64-cgo), const SIOCSLIFPHYADDR = 2182637898 pkg syscall (openbsd-amd64-cgo), const SIOCSLIFPHYRTABLE = 2149607841 pkg syscall (openbsd-amd64-cgo), const SIOCSLOWAT = 2147775234 pkg syscall (openbsd-amd64-cgo), const SIOCSPGRP = 2147775240 pkg syscall (openbsd-amd64-cgo), const SIOCSVH = 3223349749 pkg syscall (openbsd-amd64-cgo), const SOCK_RDM = 4 pkg syscall (openbsd-amd64-cgo), const SOL_SOCKET = 65535 pkg syscall (openbsd-amd64-cgo), const SOMAXCONN = 128 pkg syscall (openbsd-amd64-cgo), const SO_ACCEPTCONN = 2 pkg syscall (openbsd-amd64-cgo), const SO_BINDANY = 4096 pkg syscall (openbsd-amd64-cgo), const SO_BROADCAST = 32 pkg syscall (openbsd-amd64-cgo), const SO_DEBUG = 1 pkg syscall (openbsd-amd64-cgo), const SO_DONTROUTE = 16 pkg syscall (openbsd-amd64-cgo), const SO_ERROR = 4103 pkg syscall (openbsd-amd64-cgo), const SO_KEEPALIVE = 8 pkg syscall (openbsd-amd64-cgo), const SO_LINGER = 128 pkg syscall (openbsd-amd64-cgo), const SO_NETPROC = 4128 pkg syscall (openbsd-amd64-cgo), const SO_OOBINLINE = 256 pkg syscall (openbsd-amd64-cgo), const SO_PEERCRED = 4130 pkg syscall (openbsd-amd64-cgo), const SO_RCVBUF = 4098 pkg syscall (openbsd-amd64-cgo), const SO_RCVLOWAT = 4100 pkg syscall (openbsd-amd64-cgo), const SO_RCVTIMEO = 4102 pkg syscall (openbsd-amd64-cgo), const SO_REUSEADDR = 4 pkg syscall (openbsd-amd64-cgo), const SO_REUSEPORT = 512 pkg syscall (openbsd-amd64-cgo), const SO_RTABLE = 4129 pkg syscall (openbsd-amd64-cgo), const SO_SNDBUF = 4097 pkg syscall (openbsd-amd64-cgo), const SO_SNDLOWAT = 4099 pkg syscall (openbsd-amd64-cgo), const SO_SNDTIMEO = 4101 pkg syscall (openbsd-amd64-cgo), const SO_SPLICE = 4131 pkg syscall (openbsd-amd64-cgo), const SO_TIMESTAMP = 2048 pkg syscall (openbsd-amd64-cgo), const SO_TYPE = 4104 pkg syscall (openbsd-amd64-cgo), const SO_USELOOPBACK = 64 pkg syscall (openbsd-amd64-cgo), const SYS_ACCEPT = 30 pkg syscall (openbsd-amd64-cgo), const SYS_ACCESS = 33 pkg syscall (openbsd-amd64-cgo), const SYS_ACCT = 51 pkg syscall (openbsd-amd64-cgo), const SYS_ADJFREQ = 305 pkg syscall (openbsd-amd64-cgo), const SYS_ADJTIME = 140 pkg syscall (openbsd-amd64-cgo), const SYS_BIND = 104 pkg syscall (openbsd-amd64-cgo), const SYS_CHDIR = 12 pkg syscall (openbsd-amd64-cgo), const SYS_CHFLAGS = 34 pkg syscall (openbsd-amd64-cgo), const SYS_CHMOD = 15 pkg syscall (openbsd-amd64-cgo), const SYS_CHOWN = 16 pkg syscall (openbsd-amd64-cgo), const SYS_CHROOT = 61 pkg syscall (openbsd-amd64-cgo), const SYS_CLOCK_GETRES = 234 pkg syscall (openbsd-amd64-cgo), const SYS_CLOCK_GETTIME = 232 pkg syscall (openbsd-amd64-cgo), const SYS_CLOCK_SETTIME = 233 pkg syscall (openbsd-amd64-cgo), const SYS_CLOSE = 6 pkg syscall (openbsd-amd64-cgo), const SYS_CLOSEFROM = 287 pkg syscall (openbsd-amd64-cgo), const SYS_CONNECT = 98 pkg syscall (openbsd-amd64-cgo), const SYS_DUP = 41 pkg syscall (openbsd-amd64-cgo), const SYS_DUP2 = 90 pkg syscall (openbsd-amd64-cgo), const SYS_EXECVE = 59 pkg syscall (openbsd-amd64-cgo), const SYS_EXIT = 1 pkg syscall (openbsd-amd64-cgo), const SYS_FACCESSAT = 313 pkg syscall (openbsd-amd64-cgo), const SYS_FCHDIR = 13 pkg syscall (openbsd-amd64-cgo), const SYS_FCHFLAGS = 35 pkg syscall (openbsd-amd64-cgo), const SYS_FCHMOD = 124 pkg syscall (openbsd-amd64-cgo), const SYS_FCHMODAT = 314 pkg syscall (openbsd-amd64-cgo), const SYS_FCHOWN = 123 pkg syscall (openbsd-amd64-cgo), const SYS_FCHOWNAT = 315 pkg syscall (openbsd-amd64-cgo), const SYS_FCNTL = 92 pkg syscall (openbsd-amd64-cgo), const SYS_FHOPEN = 264 pkg syscall (openbsd-amd64-cgo), const SYS_FHSTAT = 294 pkg syscall (openbsd-amd64-cgo), const SYS_FHSTATFS = 309 pkg syscall (openbsd-amd64-cgo), const SYS_FLOCK = 131 pkg syscall (openbsd-amd64-cgo), const SYS_FORK = 2 pkg syscall (openbsd-amd64-cgo), const SYS_FPATHCONF = 192 pkg syscall (openbsd-amd64-cgo), const SYS_FSTAT = 292 pkg syscall (openbsd-amd64-cgo), const SYS_FSTATAT = 316 pkg syscall (openbsd-amd64-cgo), const SYS_FSTATFS = 308 pkg syscall (openbsd-amd64-cgo), const SYS_FSYNC = 95 pkg syscall (openbsd-amd64-cgo), const SYS_FTRUNCATE = 201 pkg syscall (openbsd-amd64-cgo), const SYS_FUTIMENS = 327 pkg syscall (openbsd-amd64-cgo), const SYS_FUTIMES = 206 pkg syscall (openbsd-amd64-cgo), const SYS_GETDIRENTRIES = 312 pkg syscall (openbsd-amd64-cgo), const SYS_GETDTABLECOUNT = 18 pkg syscall (openbsd-amd64-cgo), const SYS_GETEGID = 43 pkg syscall (openbsd-amd64-cgo), const SYS_GETEUID = 25 pkg syscall (openbsd-amd64-cgo), const SYS_GETFH = 161 pkg syscall (openbsd-amd64-cgo), const SYS_GETFSSTAT = 306 pkg syscall (openbsd-amd64-cgo), const SYS_GETGID = 47 pkg syscall (openbsd-amd64-cgo), const SYS_GETGROUPS = 79 pkg syscall (openbsd-amd64-cgo), const SYS_GETITIMER = 86 pkg syscall (openbsd-amd64-cgo), const SYS_GETLOGIN = 49 pkg syscall (openbsd-amd64-cgo), const SYS_GETPEERNAME = 31 pkg syscall (openbsd-amd64-cgo), const SYS_GETPGID = 207 pkg syscall (openbsd-amd64-cgo), const SYS_GETPGRP = 81 pkg syscall (openbsd-amd64-cgo), const SYS_GETPID = 20 pkg syscall (openbsd-amd64-cgo), const SYS_GETPPID = 39 pkg syscall (openbsd-amd64-cgo), const SYS_GETPRIORITY = 100 pkg syscall (openbsd-amd64-cgo), const SYS_GETRESGID = 283 pkg syscall (openbsd-amd64-cgo), const SYS_GETRESUID = 281 pkg syscall (openbsd-amd64-cgo), const SYS_GETRLIMIT = 194 pkg syscall (openbsd-amd64-cgo), const SYS_GETRTABLE = 311 pkg syscall (openbsd-amd64-cgo), const SYS_GETRUSAGE = 117 pkg syscall (openbsd-amd64-cgo), const SYS_GETSID = 255 pkg syscall (openbsd-amd64-cgo), const SYS_GETSOCKNAME = 32 pkg syscall (openbsd-amd64-cgo), const SYS_GETSOCKOPT = 118 pkg syscall (openbsd-amd64-cgo), const SYS_GETTHRID = 299 pkg syscall (openbsd-amd64-cgo), const SYS_GETTIMEOFDAY = 116 pkg syscall (openbsd-amd64-cgo), const SYS_GETUID = 24 pkg syscall (openbsd-amd64-cgo), const SYS_IOCTL = 54 pkg syscall (openbsd-amd64-cgo), const SYS_ISSETUGID = 253 pkg syscall (openbsd-amd64-cgo), const SYS_KEVENT = 270 pkg syscall (openbsd-amd64-cgo), const SYS_KILL = 37 pkg syscall (openbsd-amd64-cgo), const SYS_KQUEUE = 269 pkg syscall (openbsd-amd64-cgo), const SYS_KTRACE = 45 pkg syscall (openbsd-amd64-cgo), const SYS_LCHOWN = 254 pkg syscall (openbsd-amd64-cgo), const SYS_LINK = 9 pkg syscall (openbsd-amd64-cgo), const SYS_LINKAT = 317 pkg syscall (openbsd-amd64-cgo), const SYS_LISTEN = 106 pkg syscall (openbsd-amd64-cgo), const SYS_LSEEK = 199 pkg syscall (openbsd-amd64-cgo), const SYS_LSTAT = 293 pkg syscall (openbsd-amd64-cgo), const SYS_MADVISE = 75 pkg syscall (openbsd-amd64-cgo), const SYS_MINCORE = 78 pkg syscall (openbsd-amd64-cgo), const SYS_MINHERIT = 250 pkg syscall (openbsd-amd64-cgo), const SYS_MKDIR = 136 pkg syscall (openbsd-amd64-cgo), const SYS_MKDIRAT = 318 pkg syscall (openbsd-amd64-cgo), const SYS_MKFIFO = 132 pkg syscall (openbsd-amd64-cgo), const SYS_MKFIFOAT = 319 pkg syscall (openbsd-amd64-cgo), const SYS_MKNOD = 14 pkg syscall (openbsd-amd64-cgo), const SYS_MKNODAT = 320 pkg syscall (openbsd-amd64-cgo), const SYS_MLOCK = 203 pkg syscall (openbsd-amd64-cgo), const SYS_MLOCKALL = 271 pkg syscall (openbsd-amd64-cgo), const SYS_MMAP = 197 pkg syscall (openbsd-amd64-cgo), const SYS_MOUNT = 21 pkg syscall (openbsd-amd64-cgo), const SYS_MPROTECT = 74 pkg syscall (openbsd-amd64-cgo), const SYS_MQUERY = 286 pkg syscall (openbsd-amd64-cgo), const SYS_MSGCTL = 297 pkg syscall (openbsd-amd64-cgo), const SYS_MSGGET = 225 pkg syscall (openbsd-amd64-cgo), const SYS_MSGRCV = 227 pkg syscall (openbsd-amd64-cgo), const SYS_MSGSND = 226 pkg syscall (openbsd-amd64-cgo), const SYS_MSYNC = 256 pkg syscall (openbsd-amd64-cgo), const SYS_MUNLOCK = 204 pkg syscall (openbsd-amd64-cgo), const SYS_MUNLOCKALL = 272 pkg syscall (openbsd-amd64-cgo), const SYS_MUNMAP = 73 pkg syscall (openbsd-amd64-cgo), const SYS_NANOSLEEP = 240 pkg syscall (openbsd-amd64-cgo), const SYS_NFSSVC = 155 pkg syscall (openbsd-amd64-cgo), const SYS_OBREAK = 17 pkg syscall (openbsd-amd64-cgo), const SYS_OPEN = 5 pkg syscall (openbsd-amd64-cgo), const SYS_OPENAT = 321 pkg syscall (openbsd-amd64-cgo), const SYS_PATHCONF = 191 pkg syscall (openbsd-amd64-cgo), const SYS_PIPE = 263 pkg syscall (openbsd-amd64-cgo), const SYS_POLL = 252 pkg syscall (openbsd-amd64-cgo), const SYS_PREAD = 173 pkg syscall (openbsd-amd64-cgo), const SYS_PREADV = 267 pkg syscall (openbsd-amd64-cgo), const SYS_PROFIL = 44 pkg syscall (openbsd-amd64-cgo), const SYS_PTRACE = 26 pkg syscall (openbsd-amd64-cgo), const SYS_PWRITE = 174 pkg syscall (openbsd-amd64-cgo), const SYS_PWRITEV = 268 pkg syscall (openbsd-amd64-cgo), const SYS_QUOTACTL = 148 pkg syscall (openbsd-amd64-cgo), const SYS_READ = 3 pkg syscall (openbsd-amd64-cgo), const SYS_READLINK = 58 pkg syscall (openbsd-amd64-cgo), const SYS_READLINKAT = 322 pkg syscall (openbsd-amd64-cgo), const SYS_READV = 120 pkg syscall (openbsd-amd64-cgo), const SYS_REBOOT = 55 pkg syscall (openbsd-amd64-cgo), const SYS_RECVFROM = 29 pkg syscall (openbsd-amd64-cgo), const SYS_RECVMSG = 27 pkg syscall (openbsd-amd64-cgo), const SYS_RENAME = 128 pkg syscall (openbsd-amd64-cgo), const SYS_RENAMEAT = 323 pkg syscall (openbsd-amd64-cgo), const SYS_REVOKE = 56 pkg syscall (openbsd-amd64-cgo), const SYS_RMDIR = 137 pkg syscall (openbsd-amd64-cgo), const SYS_SCHED_YIELD = 298 pkg syscall (openbsd-amd64-cgo), const SYS_SELECT = 93 pkg syscall (openbsd-amd64-cgo), const SYS_SEMGET = 221 pkg syscall (openbsd-amd64-cgo), const SYS_SEMOP = 290 pkg syscall (openbsd-amd64-cgo), const SYS_SENDMSG = 28 pkg syscall (openbsd-amd64-cgo), const SYS_SENDTO = 133 pkg syscall (openbsd-amd64-cgo), const SYS_SETEGID = 182 pkg syscall (openbsd-amd64-cgo), const SYS_SETEUID = 183 pkg syscall (openbsd-amd64-cgo), const SYS_SETGID = 181 pkg syscall (openbsd-amd64-cgo), const SYS_SETGROUPS = 80 pkg syscall (openbsd-amd64-cgo), const SYS_SETITIMER = 83 pkg syscall (openbsd-amd64-cgo), const SYS_SETLOGIN = 50 pkg syscall (openbsd-amd64-cgo), const SYS_SETPGID = 82 pkg syscall (openbsd-amd64-cgo), const SYS_SETPRIORITY = 96 pkg syscall (openbsd-amd64-cgo), const SYS_SETREGID = 127 pkg syscall (openbsd-amd64-cgo), const SYS_SETRESGID = 284 pkg syscall (openbsd-amd64-cgo), const SYS_SETRESUID = 282 pkg syscall (openbsd-amd64-cgo), const SYS_SETREUID = 126 pkg syscall (openbsd-amd64-cgo), const SYS_SETRLIMIT = 195 pkg syscall (openbsd-amd64-cgo), const SYS_SETRTABLE = 310 pkg syscall (openbsd-amd64-cgo), const SYS_SETSID = 147 pkg syscall (openbsd-amd64-cgo), const SYS_SETSOCKOPT = 105 pkg syscall (openbsd-amd64-cgo), const SYS_SETTIMEOFDAY = 122 pkg syscall (openbsd-amd64-cgo), const SYS_SETUID = 23 pkg syscall (openbsd-amd64-cgo), const SYS_SHMAT = 228 pkg syscall (openbsd-amd64-cgo), const SYS_SHMCTL = 296 pkg syscall (openbsd-amd64-cgo), const SYS_SHMDT = 230 pkg syscall (openbsd-amd64-cgo), const SYS_SHMGET = 289 pkg syscall (openbsd-amd64-cgo), const SYS_SHUTDOWN = 134 pkg syscall (openbsd-amd64-cgo), const SYS_SIGACTION = 46 pkg syscall (openbsd-amd64-cgo), const SYS_SIGALTSTACK = 288 pkg syscall (openbsd-amd64-cgo), const SYS_SIGPENDING = 52 pkg syscall (openbsd-amd64-cgo), const SYS_SIGPROCMASK = 48 pkg syscall (openbsd-amd64-cgo), const SYS_SIGRETURN = 103 pkg syscall (openbsd-amd64-cgo), const SYS_SIGSUSPEND = 111 pkg syscall (openbsd-amd64-cgo), const SYS_SOCKET = 97 pkg syscall (openbsd-amd64-cgo), const SYS_SOCKETPAIR = 135 pkg syscall (openbsd-amd64-cgo), const SYS_STAT = 291 pkg syscall (openbsd-amd64-cgo), const SYS_STATFS = 307 pkg syscall (openbsd-amd64-cgo), const SYS_SWAPCTL = 193 pkg syscall (openbsd-amd64-cgo), const SYS_SYMLINK = 57 pkg syscall (openbsd-amd64-cgo), const SYS_SYMLINKAT = 324 pkg syscall (openbsd-amd64-cgo), const SYS_SYNC = 36 pkg syscall (openbsd-amd64-cgo), const SYS_SYSARCH = 165 pkg syscall (openbsd-amd64-cgo), const SYS_TRUNCATE = 200 pkg syscall (openbsd-amd64-cgo), const SYS_UMASK = 60 pkg syscall (openbsd-amd64-cgo), const SYS_UNLINK = 10 pkg syscall (openbsd-amd64-cgo), const SYS_UNLINKAT = 325 pkg syscall (openbsd-amd64-cgo), const SYS_UNMOUNT = 22 pkg syscall (openbsd-amd64-cgo), const SYS_UTIMENSAT = 326 pkg syscall (openbsd-amd64-cgo), const SYS_UTIMES = 138 pkg syscall (openbsd-amd64-cgo), const SYS_VFORK = 66 pkg syscall (openbsd-amd64-cgo), const SYS_WAIT4 = 7 pkg syscall (openbsd-amd64-cgo), const SYS_WRITE = 4 pkg syscall (openbsd-amd64-cgo), const SYS_WRITEV = 121 pkg syscall (openbsd-amd64-cgo), const SYS___GETCWD = 304 pkg syscall (openbsd-amd64-cgo), const SYS___GET_TCB = 330 pkg syscall (openbsd-amd64-cgo), const SYS___SEMCTL = 295 pkg syscall (openbsd-amd64-cgo), const SYS___SET_TCB = 329 pkg syscall (openbsd-amd64-cgo), const SYS___SYSCTL = 202 pkg syscall (openbsd-amd64-cgo), const SYS___TFORK = 8 pkg syscall (openbsd-amd64-cgo), const SYS___THREXIT = 302 pkg syscall (openbsd-amd64-cgo), const SYS___THRSIGDIVERT = 303 pkg syscall (openbsd-amd64-cgo), const SYS___THRSLEEP = 300 pkg syscall (openbsd-amd64-cgo), const SYS___THRWAKEUP = 301 pkg syscall (openbsd-amd64-cgo), const S_IFMT = 61440 pkg syscall (openbsd-amd64-cgo), const SizeofBpfHdr = 20 pkg syscall (openbsd-amd64-cgo), const SizeofBpfInsn = 8 pkg syscall (openbsd-amd64-cgo), const SizeofBpfProgram = 16 pkg syscall (openbsd-amd64-cgo), const SizeofBpfStat = 8 pkg syscall (openbsd-amd64-cgo), const SizeofBpfVersion = 4 pkg syscall (openbsd-amd64-cgo), const SizeofCmsghdr = 12 pkg syscall (openbsd-amd64-cgo), const SizeofIPMreq = 8 pkg syscall (openbsd-amd64-cgo), const SizeofIPv6Mreq = 20 pkg syscall (openbsd-amd64-cgo), const SizeofIfAnnounceMsghdr = 26 pkg syscall (openbsd-amd64-cgo), const SizeofIfData = 224 pkg syscall (openbsd-amd64-cgo), const SizeofIfMsghdr = 248 pkg syscall (openbsd-amd64-cgo), const SizeofIfaMsghdr = 24 pkg syscall (openbsd-amd64-cgo), const SizeofInet6Pktinfo = 20 pkg syscall (openbsd-amd64-cgo), const SizeofLinger = 8 pkg syscall (openbsd-amd64-cgo), const SizeofMsghdr = 48 pkg syscall (openbsd-amd64-cgo), const SizeofRtMetrics = 48 pkg syscall (openbsd-amd64-cgo), const SizeofRtMsghdr = 88 pkg syscall (openbsd-amd64-cgo), const SizeofSockaddrAny = 108 pkg syscall (openbsd-amd64-cgo), const SizeofSockaddrDatalink = 32 pkg syscall (openbsd-amd64-cgo), const SizeofSockaddrInet4 = 16 pkg syscall (openbsd-amd64-cgo), const SizeofSockaddrInet6 = 28 pkg syscall (openbsd-amd64-cgo), const SizeofSockaddrUnix = 106 pkg syscall (openbsd-amd64-cgo), const TCIFLUSH = 1 pkg syscall (openbsd-amd64-cgo), const TCIOFLUSH = 3 pkg syscall (openbsd-amd64-cgo), const TCOFLUSH = 2 pkg syscall (openbsd-amd64-cgo), const TCP_MAXBURST = 4 pkg syscall (openbsd-amd64-cgo), const TCP_MAXSEG = 2 pkg syscall (openbsd-amd64-cgo), const TCP_MAXWIN = 65535 pkg syscall (openbsd-amd64-cgo), const TCP_MAX_SACK = 3 pkg syscall (openbsd-amd64-cgo), const TCP_MAX_WINSHIFT = 14 pkg syscall (openbsd-amd64-cgo), const TCP_MD5SIG = 4 pkg syscall (openbsd-amd64-cgo), const TCP_MSS = 512 pkg syscall (openbsd-amd64-cgo), const TCP_NSTATES = 11 pkg syscall (openbsd-amd64-cgo), const TCP_SACK_ENABLE = 8 pkg syscall (openbsd-amd64-cgo), const TCSAFLUSH = 2 pkg syscall (openbsd-amd64-cgo), const TIOCCBRK = 536900730 pkg syscall (openbsd-amd64-cgo), const TIOCCDTR = 536900728 pkg syscall (openbsd-amd64-cgo), const TIOCCONS = 2147775586 pkg syscall (openbsd-amd64-cgo), const TIOCDRAIN = 536900702 pkg syscall (openbsd-amd64-cgo), const TIOCEXCL = 536900621 pkg syscall (openbsd-amd64-cgo), const TIOCEXT = 2147775584 pkg syscall (openbsd-amd64-cgo), const TIOCFLAG_CLOCAL = 2 pkg syscall (openbsd-amd64-cgo), const TIOCFLAG_CRTSCTS = 4 pkg syscall (openbsd-amd64-cgo), const TIOCFLAG_MDMBUF = 8 pkg syscall (openbsd-amd64-cgo), const TIOCFLAG_PPS = 16 pkg syscall (openbsd-amd64-cgo), const TIOCFLAG_SOFTCAR = 1 pkg syscall (openbsd-amd64-cgo), const TIOCFLUSH = 2147775504 pkg syscall (openbsd-amd64-cgo), const TIOCGETA = 1076655123 pkg syscall (openbsd-amd64-cgo), const TIOCGETD = 1074033690 pkg syscall (openbsd-amd64-cgo), const TIOCGFLAGS = 1074033757 pkg syscall (openbsd-amd64-cgo), const TIOCGPGRP = 1074033783 pkg syscall (openbsd-amd64-cgo), const TIOCGTSTAMP = 1074820187 pkg syscall (openbsd-amd64-cgo), const TIOCGWINSZ = 1074295912 pkg syscall (openbsd-amd64-cgo), const TIOCMBIC = 2147775595 pkg syscall (openbsd-amd64-cgo), const TIOCMBIS = 2147775596 pkg syscall (openbsd-amd64-cgo), const TIOCMGET = 1074033770 pkg syscall (openbsd-amd64-cgo), const TIOCMODG = 1074033770 pkg syscall (openbsd-amd64-cgo), const TIOCMODS = 2147775597 pkg syscall (openbsd-amd64-cgo), const TIOCMSET = 2147775597 pkg syscall (openbsd-amd64-cgo), const TIOCM_CAR = 64 pkg syscall (openbsd-amd64-cgo), const TIOCM_CD = 64 pkg syscall (openbsd-amd64-cgo), const TIOCM_CTS = 32 pkg syscall (openbsd-amd64-cgo), const TIOCM_DSR = 256 pkg syscall (openbsd-amd64-cgo), const TIOCM_DTR = 2 pkg syscall (openbsd-amd64-cgo), const TIOCM_LE = 1 pkg syscall (openbsd-amd64-cgo), const TIOCM_RI = 128 pkg syscall (openbsd-amd64-cgo), const TIOCM_RNG = 128 pkg syscall (openbsd-amd64-cgo), const TIOCM_RTS = 4 pkg syscall (openbsd-amd64-cgo), const TIOCM_SR = 16 pkg syscall (openbsd-amd64-cgo), const TIOCM_ST = 8 pkg syscall (openbsd-amd64-cgo), const TIOCNOTTY = 536900721 pkg syscall (openbsd-amd64-cgo), const TIOCNXCL = 536900622 pkg syscall (openbsd-amd64-cgo), const TIOCOUTQ = 1074033779 pkg syscall (openbsd-amd64-cgo), const TIOCPKT = 2147775600 pkg syscall (openbsd-amd64-cgo), const TIOCPKT_DATA = 0 pkg syscall (openbsd-amd64-cgo), const TIOCPKT_DOSTOP = 32 pkg syscall (openbsd-amd64-cgo), const TIOCPKT_FLUSHREAD = 1 pkg syscall (openbsd-amd64-cgo), const TIOCPKT_FLUSHWRITE = 2 pkg syscall (openbsd-amd64-cgo), const TIOCPKT_IOCTL = 64 pkg syscall (openbsd-amd64-cgo), const TIOCPKT_NOSTOP = 16 pkg syscall (openbsd-amd64-cgo), const TIOCPKT_START = 8 pkg syscall (openbsd-amd64-cgo), const TIOCPKT_STOP = 4 pkg syscall (openbsd-amd64-cgo), const TIOCREMOTE = 2147775593 pkg syscall (openbsd-amd64-cgo), const TIOCSBRK = 536900731 pkg syscall (openbsd-amd64-cgo), const TIOCSCTTY = 536900705 pkg syscall (openbsd-amd64-cgo), const TIOCSDTR = 536900729 pkg syscall (openbsd-amd64-cgo), const TIOCSETA = 2150396948 pkg syscall (openbsd-amd64-cgo), const TIOCSETAF = 2150396950 pkg syscall (openbsd-amd64-cgo), const TIOCSETAW = 2150396949 pkg syscall (openbsd-amd64-cgo), const TIOCSETD = 2147775515 pkg syscall (openbsd-amd64-cgo), const TIOCSFLAGS = 2147775580 pkg syscall (openbsd-amd64-cgo), const TIOCSIG = 2147775583 pkg syscall (openbsd-amd64-cgo), const TIOCSPGRP = 2147775606 pkg syscall (openbsd-amd64-cgo), const TIOCSTART = 536900718 pkg syscall (openbsd-amd64-cgo), const TIOCSTAT = 2147775589 pkg syscall (openbsd-amd64-cgo), const TIOCSTI = 2147578994 pkg syscall (openbsd-amd64-cgo), const TIOCSTOP = 536900719 pkg syscall (openbsd-amd64-cgo), const TIOCSTSTAMP = 2148037722 pkg syscall (openbsd-amd64-cgo), const TIOCSWINSZ = 2148037735 pkg syscall (openbsd-amd64-cgo), const TIOCUCNTL = 2147775590 pkg syscall (openbsd-amd64-cgo), const TOSTOP = 4194304 pkg syscall (openbsd-amd64-cgo), const VDISCARD = 15 pkg syscall (openbsd-amd64-cgo), const VDSUSP = 11 pkg syscall (openbsd-amd64-cgo), const VEOF = 0 pkg syscall (openbsd-amd64-cgo), const VEOL = 1 pkg syscall (openbsd-amd64-cgo), const VEOL2 = 2 pkg syscall (openbsd-amd64-cgo), const VERASE = 3 pkg syscall (openbsd-amd64-cgo), const VINTR = 8 pkg syscall (openbsd-amd64-cgo), const VKILL = 5 pkg syscall (openbsd-amd64-cgo), const VLNEXT = 14 pkg syscall (openbsd-amd64-cgo), const VMIN = 16 pkg syscall (openbsd-amd64-cgo), const VQUIT = 9 pkg syscall (openbsd-amd64-cgo), const VREPRINT = 6 pkg syscall (openbsd-amd64-cgo), const VSTART = 12 pkg syscall (openbsd-amd64-cgo), const VSTATUS = 18 pkg syscall (openbsd-amd64-cgo), const VSTOP = 13 pkg syscall (openbsd-amd64-cgo), const VSUSP = 10 pkg syscall (openbsd-amd64-cgo), const VTIME = 17 pkg syscall (openbsd-amd64-cgo), const VWERASE = 4 pkg syscall (openbsd-amd64-cgo), const WALTSIG = 4 pkg syscall (openbsd-amd64-cgo), const WCONTINUED = 8 pkg syscall (openbsd-amd64-cgo), const WCOREFLAG = 128 pkg syscall (openbsd-amd64-cgo), const WNOHANG = 1 pkg syscall (openbsd-amd64-cgo), const WSTOPPED = 127 pkg syscall (openbsd-amd64-cgo), const WUNTRACED = 2 pkg syscall (windows-386), const AF_INET6 = 23 pkg syscall (windows-386), const AF_NETBIOS = 17 pkg syscall (windows-386), const AI_CANONNAME = 2 pkg syscall (windows-386), const AI_CANONNAME ideal-int pkg syscall (windows-386), const AI_NUMERICHOST = 4 pkg syscall (windows-386), const AI_NUMERICHOST ideal-int pkg syscall (windows-386), const AI_PASSIVE = 1 pkg syscall (windows-386), const AI_PASSIVE ideal-int pkg syscall (windows-386), const APPLICATION_ERROR = 536870912 pkg syscall (windows-386), const AUTHTYPE_CLIENT = 1 pkg syscall (windows-386), const AUTHTYPE_SERVER = 2 pkg syscall (windows-386), const CERT_CHAIN_POLICY_AUTHENTICODE = 2 pkg syscall (windows-386), const CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3 pkg syscall (windows-386), const CERT_CHAIN_POLICY_BASE = 1 pkg syscall (windows-386), const CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5 pkg syscall (windows-386), const CERT_CHAIN_POLICY_EV = 8 pkg syscall (windows-386), const CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7 pkg syscall (windows-386), const CERT_CHAIN_POLICY_NT_AUTH = 6 pkg syscall (windows-386), const CERT_CHAIN_POLICY_SSL = 4 pkg syscall (windows-386), const CERT_E_CN_NO_MATCH = 2148204815 pkg syscall (windows-386), const CERT_E_EXPIRED = 2148204801 pkg syscall (windows-386), const CERT_E_PURPOSE = 2148204806 pkg syscall (windows-386), const CERT_E_ROLE = 2148204803 pkg syscall (windows-386), const CERT_E_UNTRUSTEDROOT = 2148204809 pkg syscall (windows-386), const CERT_STORE_ADD_ALWAYS = 4 pkg syscall (windows-386), const CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 4 pkg syscall (windows-386), const CERT_STORE_PROV_MEMORY = 2 pkg syscall (windows-386), const CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 32768 pkg syscall (windows-386), const CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 8192 pkg syscall (windows-386), const CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 16384 pkg syscall (windows-386), const CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 134217728 pkg syscall (windows-386), const CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 4096 pkg syscall (windows-386), const CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 1024 pkg syscall (windows-386), const CERT_TRUST_INVALID_EXTENSION = 256 pkg syscall (windows-386), const CERT_TRUST_INVALID_NAME_CONSTRAINTS = 2048 pkg syscall (windows-386), const CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 512 pkg syscall (windows-386), const CERT_TRUST_IS_CYCLIC = 128 pkg syscall (windows-386), const CERT_TRUST_IS_EXPLICIT_DISTRUST = 67108864 pkg syscall (windows-386), const CERT_TRUST_IS_NOT_SIGNATURE_VALID = 8 pkg syscall (windows-386), const CERT_TRUST_IS_NOT_TIME_VALID = 1 pkg syscall (windows-386), const CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 16 pkg syscall (windows-386), const CERT_TRUST_IS_OFFLINE_REVOCATION = 16777216 pkg syscall (windows-386), const CERT_TRUST_IS_REVOKED = 4 pkg syscall (windows-386), const CERT_TRUST_IS_UNTRUSTED_ROOT = 32 pkg syscall (windows-386), const CERT_TRUST_NO_ERROR = 0 pkg syscall (windows-386), const CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 33554432 pkg syscall (windows-386), const CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 64 pkg syscall (windows-386), const CREATE_ALWAYS = 2 pkg syscall (windows-386), const CREATE_NEW = 1 pkg syscall (windows-386), const CREATE_NEW_PROCESS_GROUP = 512 pkg syscall (windows-386), const CREATE_NEW_PROCESS_GROUP ideal-int pkg syscall (windows-386), const CREATE_UNICODE_ENVIRONMENT = 1024 pkg syscall (windows-386), const CRYPT_DEFAULT_CONTAINER_OPTIONAL = 128 pkg syscall (windows-386), const CRYPT_DELETEKEYSET = 16 pkg syscall (windows-386), const CRYPT_MACHINE_KEYSET = 32 pkg syscall (windows-386), const CRYPT_NEWKEYSET = 8 pkg syscall (windows-386), const CRYPT_SILENT = 64 pkg syscall (windows-386), const CRYPT_VERIFYCONTEXT = 4026531840 pkg syscall (windows-386), const CTRL_BREAK_EVENT = 1 pkg syscall (windows-386), const CTRL_BREAK_EVENT ideal-int pkg syscall (windows-386), const CTRL_C_EVENT = 0 pkg syscall (windows-386), const CTRL_C_EVENT ideal-int pkg syscall (windows-386), const DNS_TYPE_A = 1 pkg syscall (windows-386), const DNS_TYPE_A6 = 38 pkg syscall (windows-386), const DNS_TYPE_AAAA = 28 pkg syscall (windows-386), const DNS_TYPE_ADDRS = 248 pkg syscall (windows-386), const DNS_TYPE_AFSDB = 18 pkg syscall (windows-386), const DNS_TYPE_ALL = 255 pkg syscall (windows-386), const DNS_TYPE_ANY = 255 pkg syscall (windows-386), const DNS_TYPE_ATMA = 34 pkg syscall (windows-386), const DNS_TYPE_AXFR = 252 pkg syscall (windows-386), const DNS_TYPE_CERT = 37 pkg syscall (windows-386), const DNS_TYPE_CNAME = 5 pkg syscall (windows-386), const DNS_TYPE_DHCID = 49 pkg syscall (windows-386), const DNS_TYPE_DNAME = 39 pkg syscall (windows-386), const DNS_TYPE_DNSKEY = 48 pkg syscall (windows-386), const DNS_TYPE_DS = 43 pkg syscall (windows-386), const DNS_TYPE_EID = 31 pkg syscall (windows-386), const DNS_TYPE_GID = 102 pkg syscall (windows-386), const DNS_TYPE_GPOS = 27 pkg syscall (windows-386), const DNS_TYPE_HINFO = 13 pkg syscall (windows-386), const DNS_TYPE_ISDN = 20 pkg syscall (windows-386), const DNS_TYPE_IXFR = 251 pkg syscall (windows-386), const DNS_TYPE_KEY = 25 pkg syscall (windows-386), const DNS_TYPE_KX = 36 pkg syscall (windows-386), const DNS_TYPE_LOC = 29 pkg syscall (windows-386), const DNS_TYPE_MAILA = 254 pkg syscall (windows-386), const DNS_TYPE_MAILB = 253 pkg syscall (windows-386), const DNS_TYPE_MB = 7 pkg syscall (windows-386), const DNS_TYPE_MD = 3 pkg syscall (windows-386), const DNS_TYPE_MF = 4 pkg syscall (windows-386), const DNS_TYPE_MG = 8 pkg syscall (windows-386), const DNS_TYPE_MINFO = 14 pkg syscall (windows-386), const DNS_TYPE_MR = 9 pkg syscall (windows-386), const DNS_TYPE_MX = 15 pkg syscall (windows-386), const DNS_TYPE_NAPTR = 35 pkg syscall (windows-386), const DNS_TYPE_NBSTAT = 65281 pkg syscall (windows-386), const DNS_TYPE_NIMLOC = 32 pkg syscall (windows-386), const DNS_TYPE_NS = 2 pkg syscall (windows-386), const DNS_TYPE_NSAP = 22 pkg syscall (windows-386), const DNS_TYPE_NSAPPTR = 23 pkg syscall (windows-386), const DNS_TYPE_NSEC = 47 pkg syscall (windows-386), const DNS_TYPE_NULL = 10 pkg syscall (windows-386), const DNS_TYPE_NXT = 30 pkg syscall (windows-386), const DNS_TYPE_OPT = 41 pkg syscall (windows-386), const DNS_TYPE_PTR = 12 pkg syscall (windows-386), const DNS_TYPE_PX = 26 pkg syscall (windows-386), const DNS_TYPE_RP = 17 pkg syscall (windows-386), const DNS_TYPE_RRSIG = 46 pkg syscall (windows-386), const DNS_TYPE_RT = 21 pkg syscall (windows-386), const DNS_TYPE_SIG = 24 pkg syscall (windows-386), const DNS_TYPE_SINK = 40 pkg syscall (windows-386), const DNS_TYPE_SOA = 6 pkg syscall (windows-386), const DNS_TYPE_SRV = 33 pkg syscall (windows-386), const DNS_TYPE_TEXT = 16 pkg syscall (windows-386), const DNS_TYPE_TKEY = 249 pkg syscall (windows-386), const DNS_TYPE_TSIG = 250 pkg syscall (windows-386), const DNS_TYPE_UID = 101 pkg syscall (windows-386), const DNS_TYPE_UINFO = 100 pkg syscall (windows-386), const DNS_TYPE_UNSPEC = 103 pkg syscall (windows-386), const DNS_TYPE_WINS = 65281 pkg syscall (windows-386), const DNS_TYPE_WINSR = 65282 pkg syscall (windows-386), const DNS_TYPE_WKS = 11 pkg syscall (windows-386), const DNS_TYPE_X25 = 19 pkg syscall (windows-386), const DUPLICATE_CLOSE_SOURCE = 1 pkg syscall (windows-386), const DUPLICATE_SAME_ACCESS = 2 pkg syscall (windows-386), const E2BIG = 536870912 pkg syscall (windows-386), const EACCES = 536870913 pkg syscall (windows-386), const EADDRINUSE = 536870914 pkg syscall (windows-386), const EADDRNOTAVAIL = 536870915 pkg syscall (windows-386), const EADV = 536870916 pkg syscall (windows-386), const EAFNOSUPPORT = 536870917 pkg syscall (windows-386), const EAGAIN = 536870918 pkg syscall (windows-386), const EALREADY = 536870919 pkg syscall (windows-386), const EBADE = 536870920 pkg syscall (windows-386), const EBADF = 536870921 pkg syscall (windows-386), const EBADFD = 536870922 pkg syscall (windows-386), const EBADMSG = 536870923 pkg syscall (windows-386), const EBADR = 536870924 pkg syscall (windows-386), const EBADRQC = 536870925 pkg syscall (windows-386), const EBADSLT = 536870926 pkg syscall (windows-386), const EBFONT = 536870927 pkg syscall (windows-386), const EBUSY = 536870928 pkg syscall (windows-386), const ECANCELED = 536870929 pkg syscall (windows-386), const ECHILD = 536870930 pkg syscall (windows-386), const ECHRNG = 536870931 pkg syscall (windows-386), const ECOMM = 536870932 pkg syscall (windows-386), const ECONNABORTED = 536870933 pkg syscall (windows-386), const ECONNREFUSED = 536870934 pkg syscall (windows-386), const ECONNRESET = 536870935 pkg syscall (windows-386), const EDEADLK = 536870936 pkg syscall (windows-386), const EDEADLOCK = 536870937 pkg syscall (windows-386), const EDESTADDRREQ = 536870938 pkg syscall (windows-386), const EDOM = 536870939 pkg syscall (windows-386), const EDOTDOT = 536870940 pkg syscall (windows-386), const EDQUOT = 536870941 pkg syscall (windows-386), const EEXIST = 536870942 pkg syscall (windows-386), const EFAULT = 536870943 pkg syscall (windows-386), const EFBIG = 536870944 pkg syscall (windows-386), const EHOSTDOWN = 536870945 pkg syscall (windows-386), const EHOSTUNREACH = 536870946 pkg syscall (windows-386), const EIDRM = 536870947 pkg syscall (windows-386), const EILSEQ = 536870948 pkg syscall (windows-386), const EINPROGRESS = 536870949 pkg syscall (windows-386), const EINTR = 536870950 pkg syscall (windows-386), const EINVAL = 536870951 pkg syscall (windows-386), const EIO = 536870952 pkg syscall (windows-386), const EISCONN = 536870953 pkg syscall (windows-386), const EISDIR = 536870954 pkg syscall (windows-386), const EISNAM = 536870955 pkg syscall (windows-386), const EKEYEXPIRED = 536870956 pkg syscall (windows-386), const EKEYREJECTED = 536870957 pkg syscall (windows-386), const EKEYREVOKED = 536870958 pkg syscall (windows-386), const EL2HLT = 536870959 pkg syscall (windows-386), const EL2NSYNC = 536870960 pkg syscall (windows-386), const EL3HLT = 536870961 pkg syscall (windows-386), const EL3RST = 536870962 pkg syscall (windows-386), const ELIBACC = 536870963 pkg syscall (windows-386), const ELIBBAD = 536870964 pkg syscall (windows-386), const ELIBEXEC = 536870965 pkg syscall (windows-386), const ELIBMAX = 536870966 pkg syscall (windows-386), const ELIBSCN = 536870967 pkg syscall (windows-386), const ELNRNG = 536870968 pkg syscall (windows-386), const ELOOP = 536870969 pkg syscall (windows-386), const EMEDIUMTYPE = 536870970 pkg syscall (windows-386), const EMFILE = 536870971 pkg syscall (windows-386), const EMLINK = 536870972 pkg syscall (windows-386), const EMSGSIZE = 536870973 pkg syscall (windows-386), const EMULTIHOP = 536870974 pkg syscall (windows-386), const ENAMETOOLONG = 536870975 pkg syscall (windows-386), const ENAVAIL = 536870976 pkg syscall (windows-386), const ENETDOWN = 536870977 pkg syscall (windows-386), const ENETRESET = 536870978 pkg syscall (windows-386), const ENETUNREACH = 536870979 pkg syscall (windows-386), const ENFILE = 536870980 pkg syscall (windows-386), const ENOANO = 536870981 pkg syscall (windows-386), const ENOBUFS = 536870982 pkg syscall (windows-386), const ENOCSI = 536870983 pkg syscall (windows-386), const ENODATA = 536870984 pkg syscall (windows-386), const ENODEV = 536870985 pkg syscall (windows-386), const ENOEXEC = 536870986 pkg syscall (windows-386), const ENOKEY = 536870987 pkg syscall (windows-386), const ENOLCK = 536870988 pkg syscall (windows-386), const ENOLINK = 536870989 pkg syscall (windows-386), const ENOMEDIUM = 536870990 pkg syscall (windows-386), const ENOMEM = 536870991 pkg syscall (windows-386), const ENOMSG = 536870992 pkg syscall (windows-386), const ENONET = 536870993 pkg syscall (windows-386), const ENOPKG = 536870994 pkg syscall (windows-386), const ENOPROTOOPT = 536870995 pkg syscall (windows-386), const ENOSPC = 536870996 pkg syscall (windows-386), const ENOSR = 536870997 pkg syscall (windows-386), const ENOSTR = 536870998 pkg syscall (windows-386), const ENOSYS = 536870999 pkg syscall (windows-386), const ENOTBLK = 536871000 pkg syscall (windows-386), const ENOTCONN = 536871001 pkg syscall (windows-386), const ENOTDIR = 3 pkg syscall (windows-386), const ENOTEMPTY = 536871002 pkg syscall (windows-386), const ENOTNAM = 536871003 pkg syscall (windows-386), const ENOTRECOVERABLE = 536871004 pkg syscall (windows-386), const ENOTSOCK = 536871005 pkg syscall (windows-386), const ENOTSUP = 536871006 pkg syscall (windows-386), const ENOTTY = 536871007 pkg syscall (windows-386), const ENOTUNIQ = 536871008 pkg syscall (windows-386), const ENXIO = 536871009 pkg syscall (windows-386), const EOPNOTSUPP = 536871010 pkg syscall (windows-386), const EOVERFLOW = 536871011 pkg syscall (windows-386), const EOWNERDEAD = 536871012 pkg syscall (windows-386), const EPERM = 536871013 pkg syscall (windows-386), const EPFNOSUPPORT = 536871014 pkg syscall (windows-386), const EPIPE = 536871015 pkg syscall (windows-386), const EPROTO = 536871016 pkg syscall (windows-386), const EPROTONOSUPPORT = 536871017 pkg syscall (windows-386), const EPROTOTYPE = 536871018 pkg syscall (windows-386), const ERANGE = 536871019 pkg syscall (windows-386), const EREMCHG = 536871020 pkg syscall (windows-386), const EREMOTE = 536871021 pkg syscall (windows-386), const EREMOTEIO = 536871022 pkg syscall (windows-386), const ERESTART = 536871023 pkg syscall (windows-386), const EROFS = 536871024 pkg syscall (windows-386), const ERROR_ACCESS_DENIED = 5 pkg syscall (windows-386), const ERROR_ALREADY_EXISTS = 183 pkg syscall (windows-386), const ERROR_BROKEN_PIPE = 109 pkg syscall (windows-386), const ERROR_BUFFER_OVERFLOW = 111 pkg syscall (windows-386), const ERROR_ENVVAR_NOT_FOUND = 203 pkg syscall (windows-386), const ERROR_FILE_EXISTS = 80 pkg syscall (windows-386), const ERROR_FILE_NOT_FOUND = 2 pkg syscall (windows-386), const ERROR_INSUFFICIENT_BUFFER = 122 pkg syscall (windows-386), const ERROR_IO_PENDING = 997 pkg syscall (windows-386), const ERROR_MOD_NOT_FOUND = 126 pkg syscall (windows-386), const ERROR_NOT_FOUND = 1168 pkg syscall (windows-386), const ERROR_NOT_FOUND Errno pkg syscall (windows-386), const ERROR_NO_MORE_FILES = 18 pkg syscall (windows-386), const ERROR_OPERATION_ABORTED = 995 pkg syscall (windows-386), const ERROR_PATH_NOT_FOUND = 3 pkg syscall (windows-386), const ERROR_PROC_NOT_FOUND = 127 pkg syscall (windows-386), const ESHUTDOWN = 536871025 pkg syscall (windows-386), const ESOCKTNOSUPPORT = 536871026 pkg syscall (windows-386), const ESPIPE = 536871027 pkg syscall (windows-386), const ESRCH = 536871028 pkg syscall (windows-386), const ESRMNT = 536871029 pkg syscall (windows-386), const ESTALE = 536871030 pkg syscall (windows-386), const ESTRPIPE = 536871031 pkg syscall (windows-386), const ETIME = 536871032 pkg syscall (windows-386), const ETIMEDOUT = 536871033 pkg syscall (windows-386), const ETOOMANYREFS = 536871034 pkg syscall (windows-386), const ETXTBSY = 536871035 pkg syscall (windows-386), const EUCLEAN = 536871036 pkg syscall (windows-386), const EUNATCH = 536871037 pkg syscall (windows-386), const EUSERS = 536871038 pkg syscall (windows-386), const EWINDOWS = 536871042 pkg syscall (windows-386), const EWOULDBLOCK = 536871039 pkg syscall (windows-386), const EXDEV = 536871040 pkg syscall (windows-386), const EXFULL = 536871041 pkg syscall (windows-386), const FILE_ACTION_ADDED = 1 pkg syscall (windows-386), const FILE_ACTION_MODIFIED = 3 pkg syscall (windows-386), const FILE_ACTION_REMOVED = 2 pkg syscall (windows-386), const FILE_ACTION_RENAMED_NEW_NAME = 5 pkg syscall (windows-386), const FILE_ACTION_RENAMED_OLD_NAME = 4 pkg syscall (windows-386), const FILE_APPEND_DATA = 4 pkg syscall (windows-386), const FILE_ATTRIBUTE_ARCHIVE = 32 pkg syscall (windows-386), const FILE_ATTRIBUTE_DIRECTORY = 16 pkg syscall (windows-386), const FILE_ATTRIBUTE_HIDDEN = 2 pkg syscall (windows-386), const FILE_ATTRIBUTE_NORMAL = 128 pkg syscall (windows-386), const FILE_ATTRIBUTE_READONLY = 1 pkg syscall (windows-386), const FILE_ATTRIBUTE_SYSTEM = 4 pkg syscall (windows-386), const FILE_BEGIN = 0 pkg syscall (windows-386), const FILE_CURRENT = 1 pkg syscall (windows-386), const FILE_END = 2 pkg syscall (windows-386), const FILE_FLAG_BACKUP_SEMANTICS = 33554432 pkg syscall (windows-386), const FILE_FLAG_OVERLAPPED = 1073741824 pkg syscall (windows-386), const FILE_LIST_DIRECTORY = 1 pkg syscall (windows-386), const FILE_MAP_COPY = 1 pkg syscall (windows-386), const FILE_MAP_EXECUTE = 32 pkg syscall (windows-386), const FILE_MAP_READ = 4 pkg syscall (windows-386), const FILE_MAP_WRITE = 2 pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_ATTRIBUTES = 4 pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_CREATION = 64 pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_DIR_NAME = 2 pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_FILE_NAME = 1 pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_LAST_ACCESS = 32 pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_LAST_WRITE = 16 pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_SIZE = 8 pkg syscall (windows-386), const FILE_SHARE_DELETE = 4 pkg syscall (windows-386), const FILE_SHARE_READ = 1 pkg syscall (windows-386), const FILE_SHARE_WRITE = 2 pkg syscall (windows-386), const FILE_TYPE_CHAR = 2 pkg syscall (windows-386), const FILE_TYPE_DISK = 1 pkg syscall (windows-386), const FILE_TYPE_PIPE = 3 pkg syscall (windows-386), const FILE_TYPE_REMOTE = 32768 pkg syscall (windows-386), const FILE_TYPE_UNKNOWN = 0 pkg syscall (windows-386), const FILE_WRITE_ATTRIBUTES = 256 pkg syscall (windows-386), const FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 pkg syscall (windows-386), const FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192 pkg syscall (windows-386), const FORMAT_MESSAGE_FROM_HMODULE = 2048 pkg syscall (windows-386), const FORMAT_MESSAGE_FROM_STRING = 1024 pkg syscall (windows-386), const FORMAT_MESSAGE_FROM_SYSTEM = 4096 pkg syscall (windows-386), const FORMAT_MESSAGE_IGNORE_INSERTS = 512 pkg syscall (windows-386), const FORMAT_MESSAGE_MAX_WIDTH_MASK = 255 pkg syscall (windows-386), const GENERIC_ALL = 268435456 pkg syscall (windows-386), const GENERIC_EXECUTE = 536870912 pkg syscall (windows-386), const GENERIC_READ = 2147483648 pkg syscall (windows-386), const GENERIC_WRITE = 1073741824 pkg syscall (windows-386), const GetFileExInfoStandard = 0 pkg syscall (windows-386), const GetFileExMaxInfoLevel = 1 pkg syscall (windows-386), const HANDLE_FLAG_INHERIT = 1 pkg syscall (windows-386), const HKEY_CLASSES_ROOT = 2147483648 pkg syscall (windows-386), const HKEY_CURRENT_CONFIG = 2147483653 pkg syscall (windows-386), const HKEY_CURRENT_USER = 2147483649 pkg syscall (windows-386), const HKEY_DYN_DATA = 2147483654 pkg syscall (windows-386), const HKEY_LOCAL_MACHINE = 2147483650 pkg syscall (windows-386), const HKEY_PERFORMANCE_DATA = 2147483652 pkg syscall (windows-386), const HKEY_USERS = 2147483651 pkg syscall (windows-386), const IFF_LOOPBACK = 4 pkg syscall (windows-386), const IFF_MULTICAST = 16 pkg syscall (windows-386), const IFF_POINTTOPOINT = 8 pkg syscall (windows-386), const IGNORE = 0 pkg syscall (windows-386), const INFINITE = 4294967295 pkg syscall (windows-386), const INVALID_FILE_ATTRIBUTES = 4294967295 pkg syscall (windows-386), const IOC_IN = 2147483648 pkg syscall (windows-386), const IOC_IN ideal-int pkg syscall (windows-386), const IOC_INOUT = 3221225472 pkg syscall (windows-386), const IOC_INOUT ideal-int pkg syscall (windows-386), const IOC_OUT = 1073741824 pkg syscall (windows-386), const IOC_OUT ideal-int pkg syscall (windows-386), const IOC_WS2 = 134217728 pkg syscall (windows-386), const IOC_WS2 ideal-int pkg syscall (windows-386), const IPV6_JOIN_GROUP = 12 pkg syscall (windows-386), const IPV6_LEAVE_GROUP = 13 pkg syscall (windows-386), const IPV6_MULTICAST_HOPS = 10 pkg syscall (windows-386), const IPV6_MULTICAST_IF = 9 pkg syscall (windows-386), const IPV6_MULTICAST_LOOP = 11 pkg syscall (windows-386), const IPV6_UNICAST_HOPS = 4 pkg syscall (windows-386), const IPV6_V6ONLY = 27 pkg syscall (windows-386), const IP_ADD_MEMBERSHIP = 12 pkg syscall (windows-386), const IP_DROP_MEMBERSHIP = 13 pkg syscall (windows-386), const IP_MULTICAST_IF = 9 pkg syscall (windows-386), const IP_MULTICAST_LOOP = 11 pkg syscall (windows-386), const IP_MULTICAST_TTL = 10 pkg syscall (windows-386), const IP_TOS = 3 pkg syscall (windows-386), const IP_TTL = 4 pkg syscall (windows-386), const ImplementsGetwd = true pkg syscall (windows-386), const InvalidHandle = 18446744073709551615 pkg syscall (windows-386), const KEY_ALL_ACCESS = 983103 pkg syscall (windows-386), const KEY_CREATE_LINK = 32 pkg syscall (windows-386), const KEY_CREATE_SUB_KEY = 4 pkg syscall (windows-386), const KEY_ENUMERATE_SUB_KEYS = 8 pkg syscall (windows-386), const KEY_EXECUTE = 131097 pkg syscall (windows-386), const KEY_NOTIFY = 16 pkg syscall (windows-386), const KEY_QUERY_VALUE = 1 pkg syscall (windows-386), const KEY_READ = 131097 pkg syscall (windows-386), const KEY_SET_VALUE = 2 pkg syscall (windows-386), const KEY_WOW64_32KEY = 512 pkg syscall (windows-386), const KEY_WOW64_64KEY = 256 pkg syscall (windows-386), const KEY_WRITE = 131078 pkg syscall (windows-386), const LANG_ENGLISH = 9 pkg syscall (windows-386), const MAXLEN_IFDESCR = 256 pkg syscall (windows-386), const MAXLEN_PHYSADDR = 8 pkg syscall (windows-386), const MAX_ADAPTER_ADDRESS_LENGTH = 8 pkg syscall (windows-386), const MAX_ADAPTER_DESCRIPTION_LENGTH = 128 pkg syscall (windows-386), const MAX_ADAPTER_NAME_LENGTH = 256 pkg syscall (windows-386), const MAX_COMPUTERNAME_LENGTH = 15 pkg syscall (windows-386), const MAX_INTERFACE_NAME_LEN = 256 pkg syscall (windows-386), const MAX_LONG_PATH = 32768 pkg syscall (windows-386), const MAX_PATH = 260 pkg syscall (windows-386), const MaxTokenInfoClass = 29 pkg syscall (windows-386), const NameCanonical = 7 pkg syscall (windows-386), const NameCanonicalEx = 9 pkg syscall (windows-386), const NameDisplay = 3 pkg syscall (windows-386), const NameDnsDomain = 12 pkg syscall (windows-386), const NameFullyQualifiedDN = 1 pkg syscall (windows-386), const NameSamCompatible = 2 pkg syscall (windows-386), const NameServicePrincipal = 10 pkg syscall (windows-386), const NameUniqueId = 6 pkg syscall (windows-386), const NameUnknown = 0 pkg syscall (windows-386), const NameUserPrincipal = 8 pkg syscall (windows-386), const OPEN_ALWAYS = 4 pkg syscall (windows-386), const OPEN_EXISTING = 3 pkg syscall (windows-386), const O_APPEND = 1024 pkg syscall (windows-386), const O_ASYNC = 8192 pkg syscall (windows-386), const O_CLOEXEC = 524288 pkg syscall (windows-386), const O_CREAT = 64 pkg syscall (windows-386), const O_EXCL = 128 pkg syscall (windows-386), const O_NOCTTY = 256 pkg syscall (windows-386), const O_NONBLOCK = 2048 pkg syscall (windows-386), const O_SYNC = 4096 pkg syscall (windows-386), const O_TRUNC = 512 pkg syscall (windows-386), const PAGE_EXECUTE_READ = 32 pkg syscall (windows-386), const PAGE_EXECUTE_READWRITE = 64 pkg syscall (windows-386), const PAGE_EXECUTE_WRITECOPY = 128 pkg syscall (windows-386), const PAGE_READONLY = 2 pkg syscall (windows-386), const PAGE_READWRITE = 4 pkg syscall (windows-386), const PAGE_WRITECOPY = 8 pkg syscall (windows-386), const PKCS_7_ASN_ENCODING = 65536 pkg syscall (windows-386), const PROCESS_QUERY_INFORMATION = 1024 pkg syscall (windows-386), const PROV_DH_SCHANNEL = 18 pkg syscall (windows-386), const PROV_DSS = 3 pkg syscall (windows-386), const PROV_DSS_DH = 13 pkg syscall (windows-386), const PROV_EC_ECDSA_FULL = 16 pkg syscall (windows-386), const PROV_EC_ECDSA_SIG = 14 pkg syscall (windows-386), const PROV_EC_ECNRA_FULL = 17 pkg syscall (windows-386), const PROV_EC_ECNRA_SIG = 15 pkg syscall (windows-386), const PROV_FORTEZZA = 4 pkg syscall (windows-386), const PROV_INTEL_SEC = 22 pkg syscall (windows-386), const PROV_MS_EXCHANGE = 5 pkg syscall (windows-386), const PROV_REPLACE_OWF = 23 pkg syscall (windows-386), const PROV_RNG = 21 pkg syscall (windows-386), const PROV_RSA_AES = 24 pkg syscall (windows-386), const PROV_RSA_FULL = 1 pkg syscall (windows-386), const PROV_RSA_SCHANNEL = 12 pkg syscall (windows-386), const PROV_RSA_SIG = 2 pkg syscall (windows-386), const PROV_SPYRUS_LYNKS = 20 pkg syscall (windows-386), const PROV_SSL = 6 pkg syscall (windows-386), const REG_BINARY = 3 pkg syscall (windows-386), const REG_DWORD = 4 pkg syscall (windows-386), const REG_DWORD_BIG_ENDIAN = 5 pkg syscall (windows-386), const REG_DWORD_LITTLE_ENDIAN = 4 pkg syscall (windows-386), const REG_EXPAND_SZ = 2 pkg syscall (windows-386), const REG_FULL_RESOURCE_DESCRIPTOR = 9 pkg syscall (windows-386), const REG_LINK = 6 pkg syscall (windows-386), const REG_MULTI_SZ = 7 pkg syscall (windows-386), const REG_NONE = 0 pkg syscall (windows-386), const REG_QWORD = 11 pkg syscall (windows-386), const REG_QWORD_LITTLE_ENDIAN = 11 pkg syscall (windows-386), const REG_RESOURCE_LIST = 8 pkg syscall (windows-386), const REG_RESOURCE_REQUIREMENTS_LIST = 10 pkg syscall (windows-386), const REG_SZ = 1 pkg syscall (windows-386), const SIGBUS = 7 pkg syscall (windows-386), const SIO_GET_EXTENSION_FUNCTION_POINTER = 3355443206 pkg syscall (windows-386), const SIO_GET_EXTENSION_FUNCTION_POINTER ideal-int pkg syscall (windows-386), const SIO_GET_INTERFACE_LIST = 1074033791 pkg syscall (windows-386), const SOL_SOCKET = 65535 pkg syscall (windows-386), const SOMAXCONN = 2147483647 pkg syscall (windows-386), const SO_BROADCAST = 32 pkg syscall (windows-386), const SO_DONTROUTE = 16 pkg syscall (windows-386), const SO_KEEPALIVE = 8 pkg syscall (windows-386), const SO_LINGER = 128 pkg syscall (windows-386), const SO_RCVBUF = 4098 pkg syscall (windows-386), const SO_REUSEADDR = 4 pkg syscall (windows-386), const SO_SNDBUF = 4097 pkg syscall (windows-386), const SO_UPDATE_ACCEPT_CONTEXT = 28683 pkg syscall (windows-386), const SO_UPDATE_CONNECT_CONTEXT = 28688 pkg syscall (windows-386), const SO_UPDATE_CONNECT_CONTEXT ideal-int pkg syscall (windows-386), const STANDARD_RIGHTS_ALL = 2031616 pkg syscall (windows-386), const STANDARD_RIGHTS_EXECUTE = 131072 pkg syscall (windows-386), const STANDARD_RIGHTS_READ = 131072 pkg syscall (windows-386), const STANDARD_RIGHTS_REQUIRED = 983040 pkg syscall (windows-386), const STANDARD_RIGHTS_WRITE = 131072 pkg syscall (windows-386), const STARTF_USESHOWWINDOW = 1 pkg syscall (windows-386), const STARTF_USESTDHANDLES = 256 pkg syscall (windows-386), const STD_ERROR_HANDLE = -12 pkg syscall (windows-386), const STD_INPUT_HANDLE = -10 pkg syscall (windows-386), const STD_OUTPUT_HANDLE = -11 pkg syscall (windows-386), const SUBLANG_ENGLISH_US = 1 pkg syscall (windows-386), const SW_FORCEMINIMIZE = 11 pkg syscall (windows-386), const SW_HIDE = 0 pkg syscall (windows-386), const SW_MAXIMIZE = 3 pkg syscall (windows-386), const SW_MINIMIZE = 6 pkg syscall (windows-386), const SW_NORMAL = 1 pkg syscall (windows-386), const SW_RESTORE = 9 pkg syscall (windows-386), const SW_SHOW = 5 pkg syscall (windows-386), const SW_SHOWDEFAULT = 10 pkg syscall (windows-386), const SW_SHOWMAXIMIZED = 3 pkg syscall (windows-386), const SW_SHOWMINIMIZED = 2 pkg syscall (windows-386), const SW_SHOWMINNOACTIVE = 7 pkg syscall (windows-386), const SW_SHOWNA = 8 pkg syscall (windows-386), const SW_SHOWNOACTIVATE = 4 pkg syscall (windows-386), const SW_SHOWNORMAL = 1 pkg syscall (windows-386), const SYNCHRONIZE = 1048576 pkg syscall (windows-386), const S_IFMT = 126976 pkg syscall (windows-386), const S_IWRITE = 128 pkg syscall (windows-386), const SidTypeAlias = 4 pkg syscall (windows-386), const SidTypeComputer = 9 pkg syscall (windows-386), const SidTypeDeletedAccount = 6 pkg syscall (windows-386), const SidTypeDomain = 3 pkg syscall (windows-386), const SidTypeGroup = 2 pkg syscall (windows-386), const SidTypeInvalid = 7 pkg syscall (windows-386), const SidTypeLabel = 10 pkg syscall (windows-386), const SidTypeUnknown = 8 pkg syscall (windows-386), const SidTypeUser = 1 pkg syscall (windows-386), const SidTypeWellKnownGroup = 5 pkg syscall (windows-386), const TF_DISCONNECT = 1 pkg syscall (windows-386), const TF_REUSE_SOCKET = 2 pkg syscall (windows-386), const TF_USE_DEFAULT_WORKER = 0 pkg syscall (windows-386), const TF_USE_KERNEL_APC = 32 pkg syscall (windows-386), const TF_USE_SYSTEM_THREAD = 16 pkg syscall (windows-386), const TF_WRITE_BEHIND = 4 pkg syscall (windows-386), const TIME_ZONE_ID_DAYLIGHT = 2 pkg syscall (windows-386), const TIME_ZONE_ID_STANDARD = 1 pkg syscall (windows-386), const TIME_ZONE_ID_UNKNOWN = 0 pkg syscall (windows-386), const TOKEN_ADJUST_DEFAULT = 128 pkg syscall (windows-386), const TOKEN_ADJUST_GROUPS = 64 pkg syscall (windows-386), const TOKEN_ADJUST_PRIVILEGES = 32 pkg syscall (windows-386), const TOKEN_ALL_ACCESS = 983295 pkg syscall (windows-386), const TOKEN_ASSIGN_PRIMARY = 1 pkg syscall (windows-386), const TOKEN_DUPLICATE = 2 pkg syscall (windows-386), const TOKEN_EXECUTE = 131072 pkg syscall (windows-386), const TOKEN_IMPERSONATE = 4 pkg syscall (windows-386), const TOKEN_QUERY = 8 pkg syscall (windows-386), const TOKEN_QUERY_SOURCE = 16 pkg syscall (windows-386), const TOKEN_READ = 131080 pkg syscall (windows-386), const TOKEN_WRITE = 131296 pkg syscall (windows-386), const TRUNCATE_EXISTING = 5 pkg syscall (windows-386), const TokenAccessInformation = 22 pkg syscall (windows-386), const TokenAuditPolicy = 16 pkg syscall (windows-386), const TokenDefaultDacl = 6 pkg syscall (windows-386), const TokenElevation = 20 pkg syscall (windows-386), const TokenElevationType = 18 pkg syscall (windows-386), const TokenGroups = 2 pkg syscall (windows-386), const TokenGroupsAndPrivileges = 13 pkg syscall (windows-386), const TokenHasRestrictions = 21 pkg syscall (windows-386), const TokenImpersonationLevel = 9 pkg syscall (windows-386), const TokenIntegrityLevel = 25 pkg syscall (windows-386), const TokenLinkedToken = 19 pkg syscall (windows-386), const TokenLogonSid = 28 pkg syscall (windows-386), const TokenMandatoryPolicy = 27 pkg syscall (windows-386), const TokenOrigin = 17 pkg syscall (windows-386), const TokenOwner = 4 pkg syscall (windows-386), const TokenPrimaryGroup = 5 pkg syscall (windows-386), const TokenPrivileges = 3 pkg syscall (windows-386), const TokenRestrictedSids = 11 pkg syscall (windows-386), const TokenSandBoxInert = 15 pkg syscall (windows-386), const TokenSessionId = 12 pkg syscall (windows-386), const TokenSessionReference = 14 pkg syscall (windows-386), const TokenSource = 7 pkg syscall (windows-386), const TokenStatistics = 10 pkg syscall (windows-386), const TokenType = 8 pkg syscall (windows-386), const TokenUIAccess = 26 pkg syscall (windows-386), const TokenUser = 1 pkg syscall (windows-386), const TokenVirtualizationAllowed = 23 pkg syscall (windows-386), const TokenVirtualizationEnabled = 24 pkg syscall (windows-386), const USAGE_MATCH_TYPE_AND = 0 pkg syscall (windows-386), const USAGE_MATCH_TYPE_OR = 1 pkg syscall (windows-386), const WAIT_ABANDONED = 128 pkg syscall (windows-386), const WAIT_FAILED = 4294967295 pkg syscall (windows-386), const WAIT_OBJECT_0 = 0 pkg syscall (windows-386), const WAIT_TIMEOUT = 258 pkg syscall (windows-386), const WSADESCRIPTION_LEN = 256 pkg syscall (windows-386), const WSASYS_STATUS_LEN = 128 pkg syscall (windows-386), const X509_ASN_ENCODING = 1 pkg syscall (windows-386), func CancelIoEx(Handle, *Overlapped) error pkg syscall (windows-386), func ConnectEx(Handle, Sockaddr, *uint8, uint32, *uint32, *Overlapped) error pkg syscall (windows-386), func FreeAddrInfoW(*AddrinfoW) pkg syscall (windows-386), func GetAddrInfoW(*uint16, *uint16, *AddrinfoW, **AddrinfoW) error pkg syscall (windows-386), func GetConsoleMode(Handle, *uint32) error pkg syscall (windows-386), func Getsockopt(Handle, int32, int32, *uint8, *int32) error pkg syscall (windows-386), func LoadCancelIoEx() error pkg syscall (windows-386), func LoadConnectEx() error pkg syscall (windows-386), func LoadGetAddrInfo() error pkg syscall (windows-386), func ReadConsole(Handle, *uint16, uint32, *uint32, *uint8) error pkg syscall (windows-386), func UTF16FromString(string) ([]uint16, error) pkg syscall (windows-386), func UTF16PtrFromString(string) (*uint16, error) pkg syscall (windows-386), func WriteConsole(Handle, *uint16, uint32, *uint32, *uint8) error pkg syscall (windows-386), type AddrinfoW struct pkg syscall (windows-386), type AddrinfoW struct, Addr uintptr pkg syscall (windows-386), type AddrinfoW struct, Addrlen uintptr pkg syscall (windows-386), type AddrinfoW struct, Canonname *uint16 pkg syscall (windows-386), type AddrinfoW struct, Family int32 pkg syscall (windows-386), type AddrinfoW struct, Flags int32 pkg syscall (windows-386), type AddrinfoW struct, Next *AddrinfoW pkg syscall (windows-386), type AddrinfoW struct, Protocol int32 pkg syscall (windows-386), type AddrinfoW struct, Socktype int32 pkg syscall (windows-386), type GUID struct pkg syscall (windows-386), type GUID struct, Data1 uint32 pkg syscall (windows-386), type GUID struct, Data2 uint16 pkg syscall (windows-386), type GUID struct, Data3 uint16 pkg syscall (windows-386), type GUID struct, Data4 [8]uint8 pkg syscall (windows-386), type RawSockaddrInet6 struct, Family uint16 pkg syscall (windows-386), type SysProcAttr struct, CreationFlags uint32 pkg syscall (windows-386), var WSAID_CONNECTEX GUID pkg syscall (windows-amd64), const AF_INET6 = 23 pkg syscall (windows-amd64), const AF_NETBIOS = 17 pkg syscall (windows-amd64), const AI_CANONNAME = 2 pkg syscall (windows-amd64), const AI_CANONNAME ideal-int pkg syscall (windows-amd64), const AI_NUMERICHOST = 4 pkg syscall (windows-amd64), const AI_NUMERICHOST ideal-int pkg syscall (windows-amd64), const AI_PASSIVE = 1 pkg syscall (windows-amd64), const AI_PASSIVE ideal-int pkg syscall (windows-amd64), const APPLICATION_ERROR = 536870912 pkg syscall (windows-amd64), const AUTHTYPE_CLIENT = 1 pkg syscall (windows-amd64), const AUTHTYPE_SERVER = 2 pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_AUTHENTICODE = 2 pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3 pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_BASE = 1 pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5 pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_EV = 8 pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7 pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_NT_AUTH = 6 pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_SSL = 4 pkg syscall (windows-amd64), const CERT_E_CN_NO_MATCH = 2148204815 pkg syscall (windows-amd64), const CERT_E_EXPIRED = 2148204801 pkg syscall (windows-amd64), const CERT_E_PURPOSE = 2148204806 pkg syscall (windows-amd64), const CERT_E_ROLE = 2148204803 pkg syscall (windows-amd64), const CERT_E_UNTRUSTEDROOT = 2148204809 pkg syscall (windows-amd64), const CERT_STORE_ADD_ALWAYS = 4 pkg syscall (windows-amd64), const CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 4 pkg syscall (windows-amd64), const CERT_STORE_PROV_MEMORY = 2 pkg syscall (windows-amd64), const CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 32768 pkg syscall (windows-amd64), const CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 8192 pkg syscall (windows-amd64), const CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 16384 pkg syscall (windows-amd64), const CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 134217728 pkg syscall (windows-amd64), const CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 4096 pkg syscall (windows-amd64), const CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 1024 pkg syscall (windows-amd64), const CERT_TRUST_INVALID_EXTENSION = 256 pkg syscall (windows-amd64), const CERT_TRUST_INVALID_NAME_CONSTRAINTS = 2048 pkg syscall (windows-amd64), const CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 512 pkg syscall (windows-amd64), const CERT_TRUST_IS_CYCLIC = 128 pkg syscall (windows-amd64), const CERT_TRUST_IS_EXPLICIT_DISTRUST = 67108864 pkg syscall (windows-amd64), const CERT_TRUST_IS_NOT_SIGNATURE_VALID = 8 pkg syscall (windows-amd64), const CERT_TRUST_IS_NOT_TIME_VALID = 1 pkg syscall (windows-amd64), const CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 16 pkg syscall (windows-amd64), const CERT_TRUST_IS_OFFLINE_REVOCATION = 16777216 pkg syscall (windows-amd64), const CERT_TRUST_IS_REVOKED = 4 pkg syscall (windows-amd64), const CERT_TRUST_IS_UNTRUSTED_ROOT = 32 pkg syscall (windows-amd64), const CERT_TRUST_NO_ERROR = 0 pkg syscall (windows-amd64), const CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 33554432 pkg syscall (windows-amd64), const CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 64 pkg syscall (windows-amd64), const CREATE_ALWAYS = 2 pkg syscall (windows-amd64), const CREATE_NEW = 1 pkg syscall (windows-amd64), const CREATE_NEW_PROCESS_GROUP = 512 pkg syscall (windows-amd64), const CREATE_NEW_PROCESS_GROUP ideal-int pkg syscall (windows-amd64), const CREATE_UNICODE_ENVIRONMENT = 1024 pkg syscall (windows-amd64), const CRYPT_DEFAULT_CONTAINER_OPTIONAL = 128 pkg syscall (windows-amd64), const CRYPT_DELETEKEYSET = 16 pkg syscall (windows-amd64), const CRYPT_MACHINE_KEYSET = 32 pkg syscall (windows-amd64), const CRYPT_NEWKEYSET = 8 pkg syscall (windows-amd64), const CRYPT_SILENT = 64 pkg syscall (windows-amd64), const CRYPT_VERIFYCONTEXT = 4026531840 pkg syscall (windows-amd64), const CTRL_BREAK_EVENT = 1 pkg syscall (windows-amd64), const CTRL_BREAK_EVENT ideal-int pkg syscall (windows-amd64), const CTRL_C_EVENT = 0 pkg syscall (windows-amd64), const CTRL_C_EVENT ideal-int pkg syscall (windows-amd64), const DNS_TYPE_A = 1 pkg syscall (windows-amd64), const DNS_TYPE_A6 = 38 pkg syscall (windows-amd64), const DNS_TYPE_AAAA = 28 pkg syscall (windows-amd64), const DNS_TYPE_ADDRS = 248 pkg syscall (windows-amd64), const DNS_TYPE_AFSDB = 18 pkg syscall (windows-amd64), const DNS_TYPE_ALL = 255 pkg syscall (windows-amd64), const DNS_TYPE_ANY = 255 pkg syscall (windows-amd64), const DNS_TYPE_ATMA = 34 pkg syscall (windows-amd64), const DNS_TYPE_AXFR = 252 pkg syscall (windows-amd64), const DNS_TYPE_CERT = 37 pkg syscall (windows-amd64), const DNS_TYPE_CNAME = 5 pkg syscall (windows-amd64), const DNS_TYPE_DHCID = 49 pkg syscall (windows-amd64), const DNS_TYPE_DNAME = 39 pkg syscall (windows-amd64), const DNS_TYPE_DNSKEY = 48 pkg syscall (windows-amd64), const DNS_TYPE_DS = 43 pkg syscall (windows-amd64), const DNS_TYPE_EID = 31 pkg syscall (windows-amd64), const DNS_TYPE_GID = 102 pkg syscall (windows-amd64), const DNS_TYPE_GPOS = 27 pkg syscall (windows-amd64), const DNS_TYPE_HINFO = 13 pkg syscall (windows-amd64), const DNS_TYPE_ISDN = 20 pkg syscall (windows-amd64), const DNS_TYPE_IXFR = 251 pkg syscall (windows-amd64), const DNS_TYPE_KEY = 25 pkg syscall (windows-amd64), const DNS_TYPE_KX = 36 pkg syscall (windows-amd64), const DNS_TYPE_LOC = 29 pkg syscall (windows-amd64), const DNS_TYPE_MAILA = 254 pkg syscall (windows-amd64), const DNS_TYPE_MAILB = 253 pkg syscall (windows-amd64), const DNS_TYPE_MB = 7 pkg syscall (windows-amd64), const DNS_TYPE_MD = 3 pkg syscall (windows-amd64), const DNS_TYPE_MF = 4 pkg syscall (windows-amd64), const DNS_TYPE_MG = 8 pkg syscall (windows-amd64), const DNS_TYPE_MINFO = 14 pkg syscall (windows-amd64), const DNS_TYPE_MR = 9 pkg syscall (windows-amd64), const DNS_TYPE_MX = 15 pkg syscall (windows-amd64), const DNS_TYPE_NAPTR = 35 pkg syscall (windows-amd64), const DNS_TYPE_NBSTAT = 65281 pkg syscall (windows-amd64), const DNS_TYPE_NIMLOC = 32 pkg syscall (windows-amd64), const DNS_TYPE_NS = 2 pkg syscall (windows-amd64), const DNS_TYPE_NSAP = 22 pkg syscall (windows-amd64), const DNS_TYPE_NSAPPTR = 23 pkg syscall (windows-amd64), const DNS_TYPE_NSEC = 47 pkg syscall (windows-amd64), const DNS_TYPE_NULL = 10 pkg syscall (windows-amd64), const DNS_TYPE_NXT = 30 pkg syscall (windows-amd64), const DNS_TYPE_OPT = 41 pkg syscall (windows-amd64), const DNS_TYPE_PTR = 12 pkg syscall (windows-amd64), const DNS_TYPE_PX = 26 pkg syscall (windows-amd64), const DNS_TYPE_RP = 17 pkg syscall (windows-amd64), const DNS_TYPE_RRSIG = 46 pkg syscall (windows-amd64), const DNS_TYPE_RT = 21 pkg syscall (windows-amd64), const DNS_TYPE_SIG = 24 pkg syscall (windows-amd64), const DNS_TYPE_SINK = 40 pkg syscall (windows-amd64), const DNS_TYPE_SOA = 6 pkg syscall (windows-amd64), const DNS_TYPE_SRV = 33 pkg syscall (windows-amd64), const DNS_TYPE_TEXT = 16 pkg syscall (windows-amd64), const DNS_TYPE_TKEY = 249 pkg syscall (windows-amd64), const DNS_TYPE_TSIG = 250 pkg syscall (windows-amd64), const DNS_TYPE_UID = 101 pkg syscall (windows-amd64), const DNS_TYPE_UINFO = 100 pkg syscall (windows-amd64), const DNS_TYPE_UNSPEC = 103 pkg syscall (windows-amd64), const DNS_TYPE_WINS = 65281 pkg syscall (windows-amd64), const DNS_TYPE_WINSR = 65282 pkg syscall (windows-amd64), const DNS_TYPE_WKS = 11 pkg syscall (windows-amd64), const DNS_TYPE_X25 = 19 pkg syscall (windows-amd64), const DUPLICATE_CLOSE_SOURCE = 1 pkg syscall (windows-amd64), const DUPLICATE_SAME_ACCESS = 2 pkg syscall (windows-amd64), const E2BIG = 536870912 pkg syscall (windows-amd64), const EACCES = 536870913 pkg syscall (windows-amd64), const EADDRINUSE = 536870914 pkg syscall (windows-amd64), const EADDRNOTAVAIL = 536870915 pkg syscall (windows-amd64), const EADV = 536870916 pkg syscall (windows-amd64), const EAFNOSUPPORT = 536870917 pkg syscall (windows-amd64), const EAGAIN = 536870918 pkg syscall (windows-amd64), const EALREADY = 536870919 pkg syscall (windows-amd64), const EBADE = 536870920 pkg syscall (windows-amd64), const EBADF = 536870921 pkg syscall (windows-amd64), const EBADFD = 536870922 pkg syscall (windows-amd64), const EBADMSG = 536870923 pkg syscall (windows-amd64), const EBADR = 536870924 pkg syscall (windows-amd64), const EBADRQC = 536870925 pkg syscall (windows-amd64), const EBADSLT = 536870926 pkg syscall (windows-amd64), const EBFONT = 536870927 pkg syscall (windows-amd64), const EBUSY = 536870928 pkg syscall (windows-amd64), const ECANCELED = 536870929 pkg syscall (windows-amd64), const ECHILD = 536870930 pkg syscall (windows-amd64), const ECHRNG = 536870931 pkg syscall (windows-amd64), const ECOMM = 536870932 pkg syscall (windows-amd64), const ECONNABORTED = 536870933 pkg syscall (windows-amd64), const ECONNREFUSED = 536870934 pkg syscall (windows-amd64), const ECONNRESET = 536870935 pkg syscall (windows-amd64), const EDEADLK = 536870936 pkg syscall (windows-amd64), const EDEADLOCK = 536870937 pkg syscall (windows-amd64), const EDESTADDRREQ = 536870938 pkg syscall (windows-amd64), const EDOM = 536870939 pkg syscall (windows-amd64), const EDOTDOT = 536870940 pkg syscall (windows-amd64), const EDQUOT = 536870941 pkg syscall (windows-amd64), const EEXIST = 536870942 pkg syscall (windows-amd64), const EFAULT = 536870943 pkg syscall (windows-amd64), const EFBIG = 536870944 pkg syscall (windows-amd64), const EHOSTDOWN = 536870945 pkg syscall (windows-amd64), const EHOSTUNREACH = 536870946 pkg syscall (windows-amd64), const EIDRM = 536870947 pkg syscall (windows-amd64), const EILSEQ = 536870948 pkg syscall (windows-amd64), const EINPROGRESS = 536870949 pkg syscall (windows-amd64), const EINTR = 536870950 pkg syscall (windows-amd64), const EINVAL = 536870951 pkg syscall (windows-amd64), const EIO = 536870952 pkg syscall (windows-amd64), const EISCONN = 536870953 pkg syscall (windows-amd64), const EISDIR = 536870954 pkg syscall (windows-amd64), const EISNAM = 536870955 pkg syscall (windows-amd64), const EKEYEXPIRED = 536870956 pkg syscall (windows-amd64), const EKEYREJECTED = 536870957 pkg syscall (windows-amd64), const EKEYREVOKED = 536870958 pkg syscall (windows-amd64), const EL2HLT = 536870959 pkg syscall (windows-amd64), const EL2NSYNC = 536870960 pkg syscall (windows-amd64), const EL3HLT = 536870961 pkg syscall (windows-amd64), const EL3RST = 536870962 pkg syscall (windows-amd64), const ELIBACC = 536870963 pkg syscall (windows-amd64), const ELIBBAD = 536870964 pkg syscall (windows-amd64), const ELIBEXEC = 536870965 pkg syscall (windows-amd64), const ELIBMAX = 536870966 pkg syscall (windows-amd64), const ELIBSCN = 536870967 pkg syscall (windows-amd64), const ELNRNG = 536870968 pkg syscall (windows-amd64), const ELOOP = 536870969 pkg syscall (windows-amd64), const EMEDIUMTYPE = 536870970 pkg syscall (windows-amd64), const EMFILE = 536870971 pkg syscall (windows-amd64), const EMLINK = 536870972 pkg syscall (windows-amd64), const EMSGSIZE = 536870973 pkg syscall (windows-amd64), const EMULTIHOP = 536870974 pkg syscall (windows-amd64), const ENAMETOOLONG = 536870975 pkg syscall (windows-amd64), const ENAVAIL = 536870976 pkg syscall (windows-amd64), const ENETDOWN = 536870977 pkg syscall (windows-amd64), const ENETRESET = 536870978 pkg syscall (windows-amd64), const ENETUNREACH = 536870979 pkg syscall (windows-amd64), const ENFILE = 536870980 pkg syscall (windows-amd64), const ENOANO = 536870981 pkg syscall (windows-amd64), const ENOBUFS = 536870982 pkg syscall (windows-amd64), const ENOCSI = 536870983 pkg syscall (windows-amd64), const ENODATA = 536870984 pkg syscall (windows-amd64), const ENODEV = 536870985 pkg syscall (windows-amd64), const ENOEXEC = 536870986 pkg syscall (windows-amd64), const ENOKEY = 536870987 pkg syscall (windows-amd64), const ENOLCK = 536870988 pkg syscall (windows-amd64), const ENOLINK = 536870989 pkg syscall (windows-amd64), const ENOMEDIUM = 536870990 pkg syscall (windows-amd64), const ENOMEM = 536870991 pkg syscall (windows-amd64), const ENOMSG = 536870992 pkg syscall (windows-amd64), const ENONET = 536870993 pkg syscall (windows-amd64), const ENOPKG = 536870994 pkg syscall (windows-amd64), const ENOPROTOOPT = 536870995 pkg syscall (windows-amd64), const ENOSPC = 536870996 pkg syscall (windows-amd64), const ENOSR = 536870997 pkg syscall (windows-amd64), const ENOSTR = 536870998 pkg syscall (windows-amd64), const ENOSYS = 536870999 pkg syscall (windows-amd64), const ENOTBLK = 536871000 pkg syscall (windows-amd64), const ENOTCONN = 536871001 pkg syscall (windows-amd64), const ENOTDIR = 3 pkg syscall (windows-amd64), const ENOTEMPTY = 536871002 pkg syscall (windows-amd64), const ENOTNAM = 536871003 pkg syscall (windows-amd64), const ENOTRECOVERABLE = 536871004 pkg syscall (windows-amd64), const ENOTSOCK = 536871005 pkg syscall (windows-amd64), const ENOTSUP = 536871006 pkg syscall (windows-amd64), const ENOTTY = 536871007 pkg syscall (windows-amd64), const ENOTUNIQ = 536871008 pkg syscall (windows-amd64), const ENXIO = 536871009 pkg syscall (windows-amd64), const EOPNOTSUPP = 536871010 pkg syscall (windows-amd64), const EOVERFLOW = 536871011 pkg syscall (windows-amd64), const EOWNERDEAD = 536871012 pkg syscall (windows-amd64), const EPERM = 536871013 pkg syscall (windows-amd64), const EPFNOSUPPORT = 536871014 pkg syscall (windows-amd64), const EPIPE = 536871015 pkg syscall (windows-amd64), const EPROTO = 536871016 pkg syscall (windows-amd64), const EPROTONOSUPPORT = 536871017 pkg syscall (windows-amd64), const EPROTOTYPE = 536871018 pkg syscall (windows-amd64), const ERANGE = 536871019 pkg syscall (windows-amd64), const EREMCHG = 536871020 pkg syscall (windows-amd64), const EREMOTE = 536871021 pkg syscall (windows-amd64), const EREMOTEIO = 536871022 pkg syscall (windows-amd64), const ERESTART = 536871023 pkg syscall (windows-amd64), const EROFS = 536871024 pkg syscall (windows-amd64), const ERROR_ACCESS_DENIED = 5 pkg syscall (windows-amd64), const ERROR_ALREADY_EXISTS = 183 pkg syscall (windows-amd64), const ERROR_BROKEN_PIPE = 109 pkg syscall (windows-amd64), const ERROR_BUFFER_OVERFLOW = 111 pkg syscall (windows-amd64), const ERROR_ENVVAR_NOT_FOUND = 203 pkg syscall (windows-amd64), const ERROR_FILE_EXISTS = 80 pkg syscall (windows-amd64), const ERROR_FILE_NOT_FOUND = 2 pkg syscall (windows-amd64), const ERROR_INSUFFICIENT_BUFFER = 122 pkg syscall (windows-amd64), const ERROR_IO_PENDING = 997 pkg syscall (windows-amd64), const ERROR_MOD_NOT_FOUND = 126 pkg syscall (windows-amd64), const ERROR_NOT_FOUND = 1168 pkg syscall (windows-amd64), const ERROR_NOT_FOUND Errno pkg syscall (windows-amd64), const ERROR_NO_MORE_FILES = 18 pkg syscall (windows-amd64), const ERROR_OPERATION_ABORTED = 995 pkg syscall (windows-amd64), const ERROR_PATH_NOT_FOUND = 3 pkg syscall (windows-amd64), const ERROR_PROC_NOT_FOUND = 127 pkg syscall (windows-amd64), const ESHUTDOWN = 536871025 pkg syscall (windows-amd64), const ESOCKTNOSUPPORT = 536871026 pkg syscall (windows-amd64), const ESPIPE = 536871027 pkg syscall (windows-amd64), const ESRCH = 536871028 pkg syscall (windows-amd64), const ESRMNT = 536871029 pkg syscall (windows-amd64), const ESTALE = 536871030 pkg syscall (windows-amd64), const ESTRPIPE = 536871031 pkg syscall (windows-amd64), const ETIME = 536871032 pkg syscall (windows-amd64), const ETIMEDOUT = 536871033 pkg syscall (windows-amd64), const ETOOMANYREFS = 536871034 pkg syscall (windows-amd64), const ETXTBSY = 536871035 pkg syscall (windows-amd64), const EUCLEAN = 536871036 pkg syscall (windows-amd64), const EUNATCH = 536871037 pkg syscall (windows-amd64), const EUSERS = 536871038 pkg syscall (windows-amd64), const EWINDOWS = 536871042 pkg syscall (windows-amd64), const EWOULDBLOCK = 536871039 pkg syscall (windows-amd64), const EXDEV = 536871040 pkg syscall (windows-amd64), const EXFULL = 536871041 pkg syscall (windows-amd64), const FILE_ACTION_ADDED = 1 pkg syscall (windows-amd64), const FILE_ACTION_MODIFIED = 3 pkg syscall (windows-amd64), const FILE_ACTION_REMOVED = 2 pkg syscall (windows-amd64), const FILE_ACTION_RENAMED_NEW_NAME = 5 pkg syscall (windows-amd64), const FILE_ACTION_RENAMED_OLD_NAME = 4 pkg syscall (windows-amd64), const FILE_APPEND_DATA = 4 pkg syscall (windows-amd64), const FILE_ATTRIBUTE_ARCHIVE = 32 pkg syscall (windows-amd64), const FILE_ATTRIBUTE_DIRECTORY = 16 pkg syscall (windows-amd64), const FILE_ATTRIBUTE_HIDDEN = 2 pkg syscall (windows-amd64), const FILE_ATTRIBUTE_NORMAL = 128 pkg syscall (windows-amd64), const FILE_ATTRIBUTE_READONLY = 1 pkg syscall (windows-amd64), const FILE_ATTRIBUTE_SYSTEM = 4 pkg syscall (windows-amd64), const FILE_BEGIN = 0 pkg syscall (windows-amd64), const FILE_CURRENT = 1 pkg syscall (windows-amd64), const FILE_END = 2 pkg syscall (windows-amd64), const FILE_FLAG_BACKUP_SEMANTICS = 33554432 pkg syscall (windows-amd64), const FILE_FLAG_OVERLAPPED = 1073741824 pkg syscall (windows-amd64), const FILE_LIST_DIRECTORY = 1 pkg syscall (windows-amd64), const FILE_MAP_COPY = 1 pkg syscall (windows-amd64), const FILE_MAP_EXECUTE = 32 pkg syscall (windows-amd64), const FILE_MAP_READ = 4 pkg syscall (windows-amd64), const FILE_MAP_WRITE = 2 pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_ATTRIBUTES = 4 pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_CREATION = 64 pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_DIR_NAME = 2 pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_FILE_NAME = 1 pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_LAST_ACCESS = 32 pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_LAST_WRITE = 16 pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_SIZE = 8 pkg syscall (windows-amd64), const FILE_SHARE_DELETE = 4 pkg syscall (windows-amd64), const FILE_SHARE_READ = 1 pkg syscall (windows-amd64), const FILE_SHARE_WRITE = 2 pkg syscall (windows-amd64), const FILE_TYPE_CHAR = 2 pkg syscall (windows-amd64), const FILE_TYPE_DISK = 1 pkg syscall (windows-amd64), const FILE_TYPE_PIPE = 3 pkg syscall (windows-amd64), const FILE_TYPE_REMOTE = 32768 pkg syscall (windows-amd64), const FILE_TYPE_UNKNOWN = 0 pkg syscall (windows-amd64), const FILE_WRITE_ATTRIBUTES = 256 pkg syscall (windows-amd64), const FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 pkg syscall (windows-amd64), const FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192 pkg syscall (windows-amd64), const FORMAT_MESSAGE_FROM_HMODULE = 2048 pkg syscall (windows-amd64), const FORMAT_MESSAGE_FROM_STRING = 1024 pkg syscall (windows-amd64), const FORMAT_MESSAGE_FROM_SYSTEM = 4096 pkg syscall (windows-amd64), const FORMAT_MESSAGE_IGNORE_INSERTS = 512 pkg syscall (windows-amd64), const FORMAT_MESSAGE_MAX_WIDTH_MASK = 255 pkg syscall (windows-amd64), const GENERIC_ALL = 268435456 pkg syscall (windows-amd64), const GENERIC_EXECUTE = 536870912 pkg syscall (windows-amd64), const GENERIC_READ = 2147483648 pkg syscall (windows-amd64), const GENERIC_WRITE = 1073741824 pkg syscall (windows-amd64), const GetFileExInfoStandard = 0 pkg syscall (windows-amd64), const GetFileExMaxInfoLevel = 1 pkg syscall (windows-amd64), const HANDLE_FLAG_INHERIT = 1 pkg syscall (windows-amd64), const HKEY_CLASSES_ROOT = 2147483648 pkg syscall (windows-amd64), const HKEY_CURRENT_CONFIG = 2147483653 pkg syscall (windows-amd64), const HKEY_CURRENT_USER = 2147483649 pkg syscall (windows-amd64), const HKEY_DYN_DATA = 2147483654 pkg syscall (windows-amd64), const HKEY_LOCAL_MACHINE = 2147483650 pkg syscall (windows-amd64), const HKEY_PERFORMANCE_DATA = 2147483652 pkg syscall (windows-amd64), const HKEY_USERS = 2147483651 pkg syscall (windows-amd64), const IFF_LOOPBACK = 4 pkg syscall (windows-amd64), const IFF_MULTICAST = 16 pkg syscall (windows-amd64), const IFF_POINTTOPOINT = 8 pkg syscall (windows-amd64), const IGNORE = 0 pkg syscall (windows-amd64), const INFINITE = 4294967295 pkg syscall (windows-amd64), const INVALID_FILE_ATTRIBUTES = 4294967295 pkg syscall (windows-amd64), const IOC_IN = 2147483648 pkg syscall (windows-amd64), const IOC_IN ideal-int pkg syscall (windows-amd64), const IOC_INOUT = 3221225472 pkg syscall (windows-amd64), const IOC_INOUT ideal-int pkg syscall (windows-amd64), const IOC_OUT = 1073741824 pkg syscall (windows-amd64), const IOC_OUT ideal-int pkg syscall (windows-amd64), const IOC_WS2 = 134217728 pkg syscall (windows-amd64), const IOC_WS2 ideal-int pkg syscall (windows-amd64), const IPV6_JOIN_GROUP = 12 pkg syscall (windows-amd64), const IPV6_LEAVE_GROUP = 13 pkg syscall (windows-amd64), const IPV6_MULTICAST_HOPS = 10 pkg syscall (windows-amd64), const IPV6_MULTICAST_IF = 9 pkg syscall (windows-amd64), const IPV6_MULTICAST_LOOP = 11 pkg syscall (windows-amd64), const IPV6_UNICAST_HOPS = 4 pkg syscall (windows-amd64), const IPV6_V6ONLY = 27 pkg syscall (windows-amd64), const IP_ADD_MEMBERSHIP = 12 pkg syscall (windows-amd64), const IP_DROP_MEMBERSHIP = 13 pkg syscall (windows-amd64), const IP_MULTICAST_IF = 9 pkg syscall (windows-amd64), const IP_MULTICAST_LOOP = 11 pkg syscall (windows-amd64), const IP_MULTICAST_TTL = 10 pkg syscall (windows-amd64), const IP_TOS = 3 pkg syscall (windows-amd64), const IP_TTL = 4 pkg syscall (windows-amd64), const ImplementsGetwd = true pkg syscall (windows-amd64), const InvalidHandle = 18446744073709551615 pkg syscall (windows-amd64), const KEY_ALL_ACCESS = 983103 pkg syscall (windows-amd64), const KEY_CREATE_LINK = 32 pkg syscall (windows-amd64), const KEY_CREATE_SUB_KEY = 4 pkg syscall (windows-amd64), const KEY_ENUMERATE_SUB_KEYS = 8 pkg syscall (windows-amd64), const KEY_EXECUTE = 131097 pkg syscall (windows-amd64), const KEY_NOTIFY = 16 pkg syscall (windows-amd64), const KEY_QUERY_VALUE = 1 pkg syscall (windows-amd64), const KEY_READ = 131097 pkg syscall (windows-amd64), const KEY_SET_VALUE = 2 pkg syscall (windows-amd64), const KEY_WOW64_32KEY = 512 pkg syscall (windows-amd64), const KEY_WOW64_64KEY = 256 pkg syscall (windows-amd64), const KEY_WRITE = 131078 pkg syscall (windows-amd64), const LANG_ENGLISH = 9 pkg syscall (windows-amd64), const MAXLEN_IFDESCR = 256 pkg syscall (windows-amd64), const MAXLEN_PHYSADDR = 8 pkg syscall (windows-amd64), const MAX_ADAPTER_ADDRESS_LENGTH = 8 pkg syscall (windows-amd64), const MAX_ADAPTER_DESCRIPTION_LENGTH = 128 pkg syscall (windows-amd64), const MAX_ADAPTER_NAME_LENGTH = 256 pkg syscall (windows-amd64), const MAX_COMPUTERNAME_LENGTH = 15 pkg syscall (windows-amd64), const MAX_INTERFACE_NAME_LEN = 256 pkg syscall (windows-amd64), const MAX_LONG_PATH = 32768 pkg syscall (windows-amd64), const MAX_PATH = 260 pkg syscall (windows-amd64), const MaxTokenInfoClass = 29 pkg syscall (windows-amd64), const NameCanonical = 7 pkg syscall (windows-amd64), const NameCanonicalEx = 9 pkg syscall (windows-amd64), const NameDisplay = 3 pkg syscall (windows-amd64), const NameDnsDomain = 12 pkg syscall (windows-amd64), const NameFullyQualifiedDN = 1 pkg syscall (windows-amd64), const NameSamCompatible = 2 pkg syscall (windows-amd64), const NameServicePrincipal = 10 pkg syscall (windows-amd64), const NameUniqueId = 6 pkg syscall (windows-amd64), const NameUnknown = 0 pkg syscall (windows-amd64), const NameUserPrincipal = 8 pkg syscall (windows-amd64), const OPEN_ALWAYS = 4 pkg syscall (windows-amd64), const OPEN_EXISTING = 3 pkg syscall (windows-amd64), const O_APPEND = 1024 pkg syscall (windows-amd64), const O_ASYNC = 8192 pkg syscall (windows-amd64), const O_CLOEXEC = 524288 pkg syscall (windows-amd64), const O_CREAT = 64 pkg syscall (windows-amd64), const O_EXCL = 128 pkg syscall (windows-amd64), const O_NOCTTY = 256 pkg syscall (windows-amd64), const O_NONBLOCK = 2048 pkg syscall (windows-amd64), const O_SYNC = 4096 pkg syscall (windows-amd64), const O_TRUNC = 512 pkg syscall (windows-amd64), const PAGE_EXECUTE_READ = 32 pkg syscall (windows-amd64), const PAGE_EXECUTE_READWRITE = 64 pkg syscall (windows-amd64), const PAGE_EXECUTE_WRITECOPY = 128 pkg syscall (windows-amd64), const PAGE_READONLY = 2 pkg syscall (windows-amd64), const PAGE_READWRITE = 4 pkg syscall (windows-amd64), const PAGE_WRITECOPY = 8 pkg syscall (windows-amd64), const PKCS_7_ASN_ENCODING = 65536 pkg syscall (windows-amd64), const PROCESS_QUERY_INFORMATION = 1024 pkg syscall (windows-amd64), const PROV_DH_SCHANNEL = 18 pkg syscall (windows-amd64), const PROV_DSS = 3 pkg syscall (windows-amd64), const PROV_DSS_DH = 13 pkg syscall (windows-amd64), const PROV_EC_ECDSA_FULL = 16 pkg syscall (windows-amd64), const PROV_EC_ECDSA_SIG = 14 pkg syscall (windows-amd64), const PROV_EC_ECNRA_FULL = 17 pkg syscall (windows-amd64), const PROV_EC_ECNRA_SIG = 15 pkg syscall (windows-amd64), const PROV_FORTEZZA = 4 pkg syscall (windows-amd64), const PROV_INTEL_SEC = 22 pkg syscall (windows-amd64), const PROV_MS_EXCHANGE = 5 pkg syscall (windows-amd64), const PROV_REPLACE_OWF = 23 pkg syscall (windows-amd64), const PROV_RNG = 21 pkg syscall (windows-amd64), const PROV_RSA_AES = 24 pkg syscall (windows-amd64), const PROV_RSA_FULL = 1 pkg syscall (windows-amd64), const PROV_RSA_SCHANNEL = 12 pkg syscall (windows-amd64), const PROV_RSA_SIG = 2 pkg syscall (windows-amd64), const PROV_SPYRUS_LYNKS = 20 pkg syscall (windows-amd64), const PROV_SSL = 6 pkg syscall (windows-amd64), const REG_BINARY = 3 pkg syscall (windows-amd64), const REG_DWORD = 4 pkg syscall (windows-amd64), const REG_DWORD_BIG_ENDIAN = 5 pkg syscall (windows-amd64), const REG_DWORD_LITTLE_ENDIAN = 4 pkg syscall (windows-amd64), const REG_EXPAND_SZ = 2 pkg syscall (windows-amd64), const REG_FULL_RESOURCE_DESCRIPTOR = 9 pkg syscall (windows-amd64), const REG_LINK = 6 pkg syscall (windows-amd64), const REG_MULTI_SZ = 7 pkg syscall (windows-amd64), const REG_NONE = 0 pkg syscall (windows-amd64), const REG_QWORD = 11 pkg syscall (windows-amd64), const REG_QWORD_LITTLE_ENDIAN = 11 pkg syscall (windows-amd64), const REG_RESOURCE_LIST = 8 pkg syscall (windows-amd64), const REG_RESOURCE_REQUIREMENTS_LIST = 10 pkg syscall (windows-amd64), const REG_SZ = 1 pkg syscall (windows-amd64), const SIGBUS = 7 pkg syscall (windows-amd64), const SIO_GET_EXTENSION_FUNCTION_POINTER = 3355443206 pkg syscall (windows-amd64), const SIO_GET_EXTENSION_FUNCTION_POINTER ideal-int pkg syscall (windows-amd64), const SIO_GET_INTERFACE_LIST = 1074033791 pkg syscall (windows-amd64), const SOL_SOCKET = 65535 pkg syscall (windows-amd64), const SOMAXCONN = 2147483647 pkg syscall (windows-amd64), const SO_BROADCAST = 32 pkg syscall (windows-amd64), const SO_DONTROUTE = 16 pkg syscall (windows-amd64), const SO_KEEPALIVE = 8 pkg syscall (windows-amd64), const SO_LINGER = 128 pkg syscall (windows-amd64), const SO_RCVBUF = 4098 pkg syscall (windows-amd64), const SO_REUSEADDR = 4 pkg syscall (windows-amd64), const SO_SNDBUF = 4097 pkg syscall (windows-amd64), const SO_UPDATE_ACCEPT_CONTEXT = 28683 pkg syscall (windows-amd64), const SO_UPDATE_CONNECT_CONTEXT = 28688 pkg syscall (windows-amd64), const SO_UPDATE_CONNECT_CONTEXT ideal-int pkg syscall (windows-amd64), const STANDARD_RIGHTS_ALL = 2031616 pkg syscall (windows-amd64), const STANDARD_RIGHTS_EXECUTE = 131072 pkg syscall (windows-amd64), const STANDARD_RIGHTS_READ = 131072 pkg syscall (windows-amd64), const STANDARD_RIGHTS_REQUIRED = 983040 pkg syscall (windows-amd64), const STANDARD_RIGHTS_WRITE = 131072 pkg syscall (windows-amd64), const STARTF_USESHOWWINDOW = 1 pkg syscall (windows-amd64), const STARTF_USESTDHANDLES = 256 pkg syscall (windows-amd64), const STD_ERROR_HANDLE = -12 pkg syscall (windows-amd64), const STD_INPUT_HANDLE = -10 pkg syscall (windows-amd64), const STD_OUTPUT_HANDLE = -11 pkg syscall (windows-amd64), const SUBLANG_ENGLISH_US = 1 pkg syscall (windows-amd64), const SW_FORCEMINIMIZE = 11 pkg syscall (windows-amd64), const SW_HIDE = 0 pkg syscall (windows-amd64), const SW_MAXIMIZE = 3 pkg syscall (windows-amd64), const SW_MINIMIZE = 6 pkg syscall (windows-amd64), const SW_NORMAL = 1 pkg syscall (windows-amd64), const SW_RESTORE = 9 pkg syscall (windows-amd64), const SW_SHOW = 5 pkg syscall (windows-amd64), const SW_SHOWDEFAULT = 10 pkg syscall (windows-amd64), const SW_SHOWMAXIMIZED = 3 pkg syscall (windows-amd64), const SW_SHOWMINIMIZED = 2 pkg syscall (windows-amd64), const SW_SHOWMINNOACTIVE = 7 pkg syscall (windows-amd64), const SW_SHOWNA = 8 pkg syscall (windows-amd64), const SW_SHOWNOACTIVATE = 4 pkg syscall (windows-amd64), const SW_SHOWNORMAL = 1 pkg syscall (windows-amd64), const SYNCHRONIZE = 1048576 pkg syscall (windows-amd64), const S_IFMT = 126976 pkg syscall (windows-amd64), const S_IWRITE = 128 pkg syscall (windows-amd64), const SidTypeAlias = 4 pkg syscall (windows-amd64), const SidTypeComputer = 9 pkg syscall (windows-amd64), const SidTypeDeletedAccount = 6 pkg syscall (windows-amd64), const SidTypeDomain = 3 pkg syscall (windows-amd64), const SidTypeGroup = 2 pkg syscall (windows-amd64), const SidTypeInvalid = 7 pkg syscall (windows-amd64), const SidTypeLabel = 10 pkg syscall (windows-amd64), const SidTypeUnknown = 8 pkg syscall (windows-amd64), const SidTypeUser = 1 pkg syscall (windows-amd64), const SidTypeWellKnownGroup = 5 pkg syscall (windows-amd64), const TF_DISCONNECT = 1 pkg syscall (windows-amd64), const TF_REUSE_SOCKET = 2 pkg syscall (windows-amd64), const TF_USE_DEFAULT_WORKER = 0 pkg syscall (windows-amd64), const TF_USE_KERNEL_APC = 32 pkg syscall (windows-amd64), const TF_USE_SYSTEM_THREAD = 16 pkg syscall (windows-amd64), const TF_WRITE_BEHIND = 4 pkg syscall (windows-amd64), const TIME_ZONE_ID_DAYLIGHT = 2 pkg syscall (windows-amd64), const TIME_ZONE_ID_STANDARD = 1 pkg syscall (windows-amd64), const TIME_ZONE_ID_UNKNOWN = 0 pkg syscall (windows-amd64), const TOKEN_ADJUST_DEFAULT = 128 pkg syscall (windows-amd64), const TOKEN_ADJUST_GROUPS = 64 pkg syscall (windows-amd64), const TOKEN_ADJUST_PRIVILEGES = 32 pkg syscall (windows-amd64), const TOKEN_ALL_ACCESS = 983295 pkg syscall (windows-amd64), const TOKEN_ASSIGN_PRIMARY = 1 pkg syscall (windows-amd64), const TOKEN_DUPLICATE = 2 pkg syscall (windows-amd64), const TOKEN_EXECUTE = 131072 pkg syscall (windows-amd64), const TOKEN_IMPERSONATE = 4 pkg syscall (windows-amd64), const TOKEN_QUERY = 8 pkg syscall (windows-amd64), const TOKEN_QUERY_SOURCE = 16 pkg syscall (windows-amd64), const TOKEN_READ = 131080 pkg syscall (windows-amd64), const TOKEN_WRITE = 131296 pkg syscall (windows-amd64), const TRUNCATE_EXISTING = 5 pkg syscall (windows-amd64), const TokenAccessInformation = 22 pkg syscall (windows-amd64), const TokenAuditPolicy = 16 pkg syscall (windows-amd64), const TokenDefaultDacl = 6 pkg syscall (windows-amd64), const TokenElevation = 20 pkg syscall (windows-amd64), const TokenElevationType = 18 pkg syscall (windows-amd64), const TokenGroups = 2 pkg syscall (windows-amd64), const TokenGroupsAndPrivileges = 13 pkg syscall (windows-amd64), const TokenHasRestrictions = 21 pkg syscall (windows-amd64), const TokenImpersonationLevel = 9 pkg syscall (windows-amd64), const TokenIntegrityLevel = 25 pkg syscall (windows-amd64), const TokenLinkedToken = 19 pkg syscall (windows-amd64), const TokenLogonSid = 28 pkg syscall (windows-amd64), const TokenMandatoryPolicy = 27 pkg syscall (windows-amd64), const TokenOrigin = 17 pkg syscall (windows-amd64), const TokenOwner = 4 pkg syscall (windows-amd64), const TokenPrimaryGroup = 5 pkg syscall (windows-amd64), const TokenPrivileges = 3 pkg syscall (windows-amd64), const TokenRestrictedSids = 11 pkg syscall (windows-amd64), const TokenSandBoxInert = 15 pkg syscall (windows-amd64), const TokenSessionId = 12 pkg syscall (windows-amd64), const TokenSessionReference = 14 pkg syscall (windows-amd64), const TokenSource = 7 pkg syscall (windows-amd64), const TokenStatistics = 10 pkg syscall (windows-amd64), const TokenType = 8 pkg syscall (windows-amd64), const TokenUIAccess = 26 pkg syscall (windows-amd64), const TokenUser = 1 pkg syscall (windows-amd64), const TokenVirtualizationAllowed = 23 pkg syscall (windows-amd64), const TokenVirtualizationEnabled = 24 pkg syscall (windows-amd64), const USAGE_MATCH_TYPE_AND = 0 pkg syscall (windows-amd64), const USAGE_MATCH_TYPE_OR = 1 pkg syscall (windows-amd64), const WAIT_ABANDONED = 128 pkg syscall (windows-amd64), const WAIT_FAILED = 4294967295 pkg syscall (windows-amd64), const WAIT_OBJECT_0 = 0 pkg syscall (windows-amd64), const WAIT_TIMEOUT = 258 pkg syscall (windows-amd64), const WSADESCRIPTION_LEN = 256 pkg syscall (windows-amd64), const WSASYS_STATUS_LEN = 128 pkg syscall (windows-amd64), const X509_ASN_ENCODING = 1 pkg syscall (windows-amd64), func CancelIoEx(Handle, *Overlapped) error pkg syscall (windows-amd64), func ConnectEx(Handle, Sockaddr, *uint8, uint32, *uint32, *Overlapped) error pkg syscall (windows-amd64), func FreeAddrInfoW(*AddrinfoW) pkg syscall (windows-amd64), func GetAddrInfoW(*uint16, *uint16, *AddrinfoW, **AddrinfoW) error pkg syscall (windows-amd64), func GetConsoleMode(Handle, *uint32) error pkg syscall (windows-amd64), func Getsockopt(Handle, int32, int32, *uint8, *int32) error pkg syscall (windows-amd64), func LoadCancelIoEx() error pkg syscall (windows-amd64), func LoadConnectEx() error pkg syscall (windows-amd64), func LoadGetAddrInfo() error pkg syscall (windows-amd64), func ReadConsole(Handle, *uint16, uint32, *uint32, *uint8) error pkg syscall (windows-amd64), func UTF16FromString(string) ([]uint16, error) pkg syscall (windows-amd64), func UTF16PtrFromString(string) (*uint16, error) pkg syscall (windows-amd64), func WriteConsole(Handle, *uint16, uint32, *uint32, *uint8) error pkg syscall (windows-amd64), type AddrinfoW struct pkg syscall (windows-amd64), type AddrinfoW struct, Addr uintptr pkg syscall (windows-amd64), type AddrinfoW struct, Addrlen uintptr pkg syscall (windows-amd64), type AddrinfoW struct, Canonname *uint16 pkg syscall (windows-amd64), type AddrinfoW struct, Family int32 pkg syscall (windows-amd64), type AddrinfoW struct, Flags int32 pkg syscall (windows-amd64), type AddrinfoW struct, Next *AddrinfoW pkg syscall (windows-amd64), type AddrinfoW struct, Protocol int32 pkg syscall (windows-amd64), type AddrinfoW struct, Socktype int32 pkg syscall (windows-amd64), type GUID struct pkg syscall (windows-amd64), type GUID struct, Data1 uint32 pkg syscall (windows-amd64), type GUID struct, Data2 uint16 pkg syscall (windows-amd64), type GUID struct, Data3 uint16 pkg syscall (windows-amd64), type GUID struct, Data4 [8]uint8 pkg syscall (windows-amd64), type RawSockaddrInet6 struct, Family uint16 pkg syscall (windows-amd64), type SysProcAttr struct, CreationFlags uint32 pkg syscall (windows-amd64), var WSAID_CONNECTEX GUID pkg syscall, const AF_INET = 2 pkg syscall, const AF_UNIX = 1 pkg syscall, const AF_UNSPEC = 0 pkg syscall, const ENOENT = 2 pkg syscall, const IFF_BROADCAST = 2 pkg syscall, const IFF_UP = 1 pkg syscall, const IPPROTO_IP = 0 pkg syscall, const IPPROTO_IPV6 = 41 pkg syscall, const IPPROTO_TCP = 6 pkg syscall, const IPPROTO_UDP = 17 pkg syscall, const O_RDONLY = 0 pkg syscall, const O_RDWR = 2 pkg syscall, const O_WRONLY = 1 pkg syscall, const SHUT_RD = 0 pkg syscall, const SHUT_RDWR = 2 pkg syscall, const SHUT_WR = 1 pkg syscall, const SIGABRT = 6 pkg syscall, const SIGALRM = 14 pkg syscall, const SIGFPE = 8 pkg syscall, const SIGHUP = 1 pkg syscall, const SIGILL = 4 pkg syscall, const SIGINT = 2 pkg syscall, const SIGKILL = 9 pkg syscall, const SIGPIPE = 13 pkg syscall, const SIGQUIT = 3 pkg syscall, const SIGSEGV = 11 pkg syscall, const SIGTERM = 15 pkg syscall, const SIGTRAP = 5 pkg syscall, const SOCK_DGRAM = 2 pkg syscall, const SOCK_RAW = 3 pkg syscall, const SOCK_SEQPACKET = 5 pkg syscall, const SOCK_STREAM = 1 pkg syscall, const S_IFBLK = 24576 pkg syscall, const S_IFCHR = 8192 pkg syscall, const S_IFDIR = 16384 pkg syscall, const S_IFIFO = 4096 pkg syscall, const S_IFLNK = 40960 pkg syscall, const S_IFREG = 32768 pkg syscall, const S_IFSOCK = 49152 pkg syscall, const S_IRUSR = 256 pkg syscall, const S_ISGID = 1024 pkg syscall, const S_ISUID = 2048 pkg syscall, const S_ISVTX = 512 pkg syscall, const S_IWUSR = 128 pkg syscall, const S_IXUSR = 64 pkg syscall, const TCP_NODELAY = 1 pkg syscall, func BytePtrFromString(string) (*uint8, error) pkg syscall, func ByteSliceFromString(string) ([]uint8, error) pkg syscall, func NsecToTimespec(int64) Timespec pkg syscall, func TimespecToNsec(Timespec) int64 pkg syscall, func UtimesNano(string, []Timespec) error pkg syscall, type RawSockaddrInet6 struct pkg syscall, type RawSockaddrInet6 struct, Addr [16]uint8 pkg syscall, type RawSockaddrInet6 struct, Flowinfo uint32 pkg syscall, type RawSockaddrInet6 struct, Port uint16 pkg syscall, type RawSockaddrInet6 struct, Scope_id uint32 pkg testing, func AllocsPerRun(int, func()) float64 pkg testing, func Verbose() bool pkg testing, method (*B) ReportAllocs() pkg testing, method (*B) Skip(...interface{}) pkg testing, method (*B) SkipNow() pkg testing, method (*B) Skipf(string, ...interface{}) pkg testing, method (*B) Skipped() bool pkg testing, method (*T) Skip(...interface{}) pkg testing, method (*T) SkipNow() pkg testing, method (*T) Skipf(string, ...interface{}) pkg testing, method (*T) Skipped() bool pkg testing, method (BenchmarkResult) AllocedBytesPerOp() int64 pkg testing, method (BenchmarkResult) AllocsPerOp() int64 pkg testing, method (BenchmarkResult) MemString() string pkg testing, type BenchmarkResult struct, MemAllocs uint64 pkg testing, type BenchmarkResult struct, MemBytes uint64 pkg text/scanner, const Char = -5 pkg text/scanner, const Comment = -8 pkg text/scanner, const EOF = -1 pkg text/scanner, const Float = -4 pkg text/scanner, const GoTokens = 1012 pkg text/scanner, const GoWhitespace = 4294977024 pkg text/scanner, const Ident = -2 pkg text/scanner, const Int = -3 pkg text/scanner, const RawString = -7 pkg text/scanner, const ScanChars = 32 pkg text/scanner, const ScanComments = 256 pkg text/scanner, const ScanFloats = 16 pkg text/scanner, const ScanIdents = 4 pkg text/scanner, const ScanInts = 8 pkg text/scanner, const ScanRawStrings = 128 pkg text/scanner, const ScanStrings = 64 pkg text/scanner, const SkipComments = 512 pkg text/scanner, const String = -6 pkg text/tabwriter, const AlignRight = 4 pkg text/tabwriter, const Debug = 32 pkg text/tabwriter, const DiscardEmptyColumns = 8 pkg text/tabwriter, const Escape = 255 pkg text/tabwriter, const FilterHTML = 1 pkg text/tabwriter, const StripEscape = 2 pkg text/tabwriter, const TabIndent = 16 pkg text/template, method (Template) ErrorContext(parse.Node) (string, string) pkg text/template/parse, const NodeAction = 1 pkg text/template/parse, const NodeBool = 2 pkg text/template/parse, const NodeChain = 3 pkg text/template/parse, const NodeChain NodeType pkg text/template/parse, const NodeCommand = 4 pkg text/template/parse, const NodeDot = 5 pkg text/template/parse, const NodeField = 8 pkg text/template/parse, const NodeIdentifier = 9 pkg text/template/parse, const NodeIf = 10 pkg text/template/parse, const NodeList = 11 pkg text/template/parse, const NodeNil = 12 pkg text/template/parse, const NodeNil NodeType pkg text/template/parse, const NodeNumber = 13 pkg text/template/parse, const NodePipe = 14 pkg text/template/parse, const NodeRange = 15 pkg text/template/parse, const NodeString = 16 pkg text/template/parse, const NodeTemplate = 17 pkg text/template/parse, const NodeText = 0 pkg text/template/parse, const NodeVariable = 18 pkg text/template/parse, const NodeWith = 19 pkg text/template/parse, method (*ChainNode) Add(string) pkg text/template/parse, method (*ChainNode) Copy() Node pkg text/template/parse, method (*ChainNode) String() string pkg text/template/parse, method (*IdentifierNode) SetPos(Pos) *IdentifierNode pkg text/template/parse, method (*NilNode) Copy() Node pkg text/template/parse, method (*NilNode) String() string pkg text/template/parse, method (*NilNode) Type() NodeType pkg text/template/parse, method (*Tree) ErrorContext(Node) (string, string) pkg text/template/parse, method (ActionNode) Position() Pos pkg text/template/parse, method (BoolNode) Position() Pos pkg text/template/parse, method (BranchNode) Position() Pos pkg text/template/parse, method (ChainNode) Position() Pos pkg text/template/parse, method (ChainNode) Type() NodeType pkg text/template/parse, method (CommandNode) Position() Pos pkg text/template/parse, method (DotNode) Position() Pos pkg text/template/parse, method (FieldNode) Position() Pos pkg text/template/parse, method (IdentifierNode) Position() Pos pkg text/template/parse, method (IfNode) Position() Pos pkg text/template/parse, method (ListNode) Position() Pos pkg text/template/parse, method (NilNode) Position() Pos pkg text/template/parse, method (NumberNode) Position() Pos pkg text/template/parse, method (PipeNode) Position() Pos pkg text/template/parse, method (Pos) Position() Pos pkg text/template/parse, method (RangeNode) Position() Pos pkg text/template/parse, method (StringNode) Position() Pos pkg text/template/parse, method (TemplateNode) Position() Pos pkg text/template/parse, method (TextNode) Position() Pos pkg text/template/parse, method (VariableNode) Position() Pos pkg text/template/parse, method (WithNode) Position() Pos pkg text/template/parse, type ActionNode struct, embedded Pos pkg text/template/parse, type BoolNode struct, embedded Pos pkg text/template/parse, type BranchNode struct, embedded Pos pkg text/template/parse, type ChainNode struct pkg text/template/parse, type ChainNode struct, Field []string pkg text/template/parse, type ChainNode struct, Node Node pkg text/template/parse, type ChainNode struct, embedded NodeType pkg text/template/parse, type ChainNode struct, embedded Pos pkg text/template/parse, type CommandNode struct, embedded Pos pkg text/template/parse, type DotNode struct pkg text/template/parse, type DotNode struct, embedded Pos pkg text/template/parse, type FieldNode struct, embedded Pos pkg text/template/parse, type IdentifierNode struct, embedded Pos pkg text/template/parse, type ListNode struct, embedded Pos pkg text/template/parse, type NilNode struct pkg text/template/parse, type NilNode struct, embedded Pos pkg text/template/parse, type Node interface, Position() Pos pkg text/template/parse, type Node interface, unexported methods pkg text/template/parse, type NumberNode struct, embedded Pos pkg text/template/parse, type PipeNode struct, embedded Pos pkg text/template/parse, type Pos int pkg text/template/parse, type StringNode struct, embedded Pos pkg text/template/parse, type TemplateNode struct, embedded Pos pkg text/template/parse, type TextNode struct, embedded Pos pkg text/template/parse, type Tree struct, ParseName string pkg text/template/parse, type VariableNode struct, embedded Pos pkg time, const ANSIC = "Mon Jan _2 15:04:05 2006" pkg time, const April = 4 pkg time, const August = 8 pkg time, const December = 12 pkg time, const February = 2 pkg time, const Friday = 5 pkg time, const Hour = 3600000000000 pkg time, const January = 1 pkg time, const July = 7 pkg time, const June = 6 pkg time, const Kitchen = "3:04PM" pkg time, const March = 3 pkg time, const May = 5 pkg time, const Microsecond = 1000 pkg time, const Millisecond = 1000000 pkg time, const Minute = 60000000000 pkg time, const Monday = 1 pkg time, const Nanosecond = 1 pkg time, const November = 11 pkg time, const October = 10 pkg time, const RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST" pkg time, const RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" pkg time, const RFC3339 = "2006-01-02T15:04:05Z07:00" pkg time, const RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00" pkg time, const RFC822 = "02 Jan 06 15:04 MST" pkg time, const RFC822Z = "02 Jan 06 15:04 -0700" pkg time, const RFC850 = "Monday, 02-Jan-06 15:04:05 MST" pkg time, const RubyDate = "Mon Jan 02 15:04:05 -0700 2006" pkg time, const Saturday = 6 pkg time, const Second = 1000000000 pkg time, const September = 9 pkg time, const Stamp = "Jan _2 15:04:05" pkg time, const StampMicro = "Jan _2 15:04:05.000000" pkg time, const StampMilli = "Jan _2 15:04:05.000" pkg time, const StampNano = "Jan _2 15:04:05.000000000" pkg time, const Sunday = 0 pkg time, const Thursday = 4 pkg time, const Tuesday = 2 pkg time, const UnixDate = "Mon Jan _2 15:04:05 MST 2006" pkg time, const Wednesday = 3 pkg time, func ParseInLocation(string, string, *Location) (Time, error) pkg time, method (*Timer) Reset(Duration) bool pkg time, method (Time) Round(Duration) Time pkg time, method (Time) Truncate(Duration) Time pkg time, method (Time) YearDay() int pkg unicode, const LowerCase = 1 pkg unicode, const MaxASCII = 127 pkg unicode, const MaxCase = 3 pkg unicode, const MaxLatin1 = 255 pkg unicode, const MaxRune = 1114111 pkg unicode, const ReplacementChar = 65533 pkg unicode, const TitleCase = 2 pkg unicode, const UpperCase = 0 pkg unicode, const UpperLower = 1114112 pkg unicode, const Version = "6.2.0" pkg unicode, type RangeTable struct, LatinOffset int pkg unicode, var Chakma *RangeTable pkg unicode, var Meroitic_Cursive *RangeTable pkg unicode, var Meroitic_Hieroglyphs *RangeTable pkg unicode, var Miao *RangeTable pkg unicode, var Sharada *RangeTable pkg unicode, var Sora_Sompeng *RangeTable pkg unicode, var Takri *RangeTable pkg unicode/utf8, const MaxRune = 1114111 pkg unicode/utf8, const RuneError = 65533 pkg unicode/utf8, const RuneSelf = 128 pkg unicode/utf8, const UTFMax = 4 pkg unicode/utf8, func ValidRune(int32) bool go/api/go1.2.txt0100644000000000000000000732416012412656734013651 0ustar00rootroot00000000000000pkg archive/zip, func RegisterCompressor(uint16, Compressor) pkg archive/zip, func RegisterDecompressor(uint16, Decompressor) pkg archive/zip, method (*File) DataOffset() (int64, error) pkg archive/zip, type Compressor func(io.Writer) (io.WriteCloser, error) pkg archive/zip, type Decompressor func(io.Reader) io.ReadCloser pkg bufio, method (*Reader) Reset(io.Reader) pkg bufio, method (*Writer) Reset(io.Writer) pkg compress/flate, method (*Writer) Reset(io.Writer) pkg compress/gzip, method (*Writer) Reset(io.Writer) pkg compress/zlib, method (*Writer) Reset(io.Writer) pkg container/heap, func Fix(Interface, int) pkg container/list, method (*List) MoveAfter(*Element, *Element) pkg container/list, method (*List) MoveBefore(*Element, *Element) pkg crypto, type PublicKey interface {} pkg crypto/cipher, func NewGCM(Block) (AEAD, error) pkg crypto/cipher, type AEAD interface { NonceSize, Open, Overhead, Seal } pkg crypto/cipher, type AEAD interface, NonceSize() int pkg crypto/cipher, type AEAD interface, Open([]uint8, []uint8, []uint8, []uint8) ([]uint8, error) pkg crypto/cipher, type AEAD interface, Overhead() int pkg crypto/cipher, type AEAD interface, Seal([]uint8, []uint8, []uint8, []uint8) []uint8 pkg crypto/md5, func Sum([]uint8) [16]uint8 pkg crypto/rsa, const PSSSaltLengthAuto = 0 pkg crypto/rsa, const PSSSaltLengthAuto ideal-int pkg crypto/rsa, const PSSSaltLengthEqualsHash = -1 pkg crypto/rsa, const PSSSaltLengthEqualsHash ideal-int pkg crypto/rsa, func SignPSS(io.Reader, *PrivateKey, crypto.Hash, []uint8, *PSSOptions) ([]uint8, error) pkg crypto/rsa, func VerifyPSS(*PublicKey, crypto.Hash, []uint8, []uint8, *PSSOptions) error pkg crypto/rsa, type PSSOptions struct pkg crypto/rsa, type PSSOptions struct, SaltLength int pkg crypto/sha1, func Sum([]uint8) [20]uint8 pkg crypto/sha256, func Sum224([]uint8) [28]uint8 pkg crypto/sha256, func Sum256([]uint8) [32]uint8 pkg crypto/sha512, func Sum384([]uint8) [48]uint8 pkg crypto/sha512, func Sum512([]uint8) [64]uint8 pkg crypto/subtle, func ConstantTimeLessOrEq(int, int) int pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = 49161 pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA uint16 pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 49195 pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 uint16 pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = 49162 pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA uint16 pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_RC4_128_SHA = 49159 pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_RC4_128_SHA uint16 pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 49199 pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 uint16 pkg crypto/tls, const VersionSSL30 = 768 pkg crypto/tls, const VersionSSL30 ideal-int pkg crypto/tls, const VersionTLS10 = 769 pkg crypto/tls, const VersionTLS10 ideal-int pkg crypto/tls, const VersionTLS11 = 770 pkg crypto/tls, const VersionTLS11 ideal-int pkg crypto/tls, const VersionTLS12 = 771 pkg crypto/tls, const VersionTLS12 ideal-int pkg crypto/tls, type Config struct, MaxVersion uint16 pkg crypto/tls, type Config struct, MinVersion uint16 pkg crypto/x509, func MarshalECPrivateKey(*ecdsa.PrivateKey) ([]uint8, error) pkg crypto/x509, type Certificate struct, CRLDistributionPoints []string pkg crypto/x509, type Certificate struct, Extensions []pkix.Extension pkg crypto/x509, type Certificate struct, ExtraExtensions []pkix.Extension pkg crypto/x509, type Certificate struct, IssuingCertificateURL []string pkg crypto/x509, type Certificate struct, OCSPServer []string pkg database/sql, method (*DB) SetMaxOpenConns(int) pkg encoding, type BinaryMarshaler interface { MarshalBinary } pkg encoding, type BinaryMarshaler interface, MarshalBinary() ([]uint8, error) pkg encoding, type BinaryUnmarshaler interface { UnmarshalBinary } pkg encoding, type BinaryUnmarshaler interface, UnmarshalBinary([]uint8) error pkg encoding, type TextMarshaler interface { MarshalText } pkg encoding, type TextMarshaler interface, MarshalText() ([]uint8, error) pkg encoding, type TextUnmarshaler interface { UnmarshalText } pkg encoding, type TextUnmarshaler interface, UnmarshalText([]uint8) error pkg encoding/xml, method (*Encoder) EncodeElement(interface{}, StartElement) error pkg encoding/xml, method (*Encoder) EncodeToken(Token) error pkg encoding/xml, method (*Encoder) Flush() error pkg encoding/xml, method (StartElement) End() EndElement pkg encoding/xml, type Marshaler interface { MarshalXML } pkg encoding/xml, type Marshaler interface, MarshalXML(*Encoder, StartElement) error pkg encoding/xml, type MarshalerAttr interface { MarshalXMLAttr } pkg encoding/xml, type MarshalerAttr interface, MarshalXMLAttr(Name) (Attr, error) pkg encoding/xml, type Unmarshaler interface { UnmarshalXML } pkg encoding/xml, type Unmarshaler interface, UnmarshalXML(*Decoder, StartElement) error pkg encoding/xml, type UnmarshalerAttr interface { UnmarshalXMLAttr } pkg encoding/xml, type UnmarshalerAttr interface, UnmarshalXMLAttr(Attr) error pkg flag, type Getter interface { Get, Set, String } pkg flag, type Getter interface, Get() interface{} pkg flag, type Getter interface, Set(string) error pkg flag, type Getter interface, String() string pkg flag, var CommandLine *FlagSet pkg go/ast, type SliceExpr struct, Max Expr pkg go/ast, type SliceExpr struct, Slice3 bool pkg go/ast, type TypeAssertExpr struct, Lparen token.Pos pkg go/ast, type TypeAssertExpr struct, Rparen token.Pos pkg go/build, method (*Context) MatchFile(string, string) (bool, error) pkg go/build, type Package struct, AllTags []string pkg go/build, type Package struct, CXXFiles []string pkg go/build, type Package struct, CgoCPPFLAGS []string pkg go/build, type Package struct, CgoCXXFLAGS []string pkg go/build, type Package struct, ConflictDir string pkg go/token, method (*File) MergeLine(int) pkg html/template, type Template struct, Tree *parse.Tree pkg image/color/palette, var Plan9 []color.Color pkg image/color/palette, var WebSafe []color.Color pkg image/draw, method (Op) Draw(Image, image.Rectangle, image.Image, image.Point) pkg image/draw, type Drawer interface { Draw } pkg image/draw, type Drawer interface, Draw(Image, image.Rectangle, image.Image, image.Point) pkg image/draw, type Quantizer interface { Quantize } pkg image/draw, type Quantizer interface, Quantize(color.Palette, image.Image) color.Palette pkg image/draw, var FloydSteinberg Drawer pkg image/gif, func Encode(io.Writer, image.Image, *Options) error pkg image/gif, func EncodeAll(io.Writer, *GIF) error pkg image/gif, type Options struct pkg image/gif, type Options struct, Drawer draw.Drawer pkg image/gif, type Options struct, NumColors int pkg image/gif, type Options struct, Quantizer draw.Quantizer pkg log/syslog (freebsd-386-cgo), const LOG_ALERT Priority pkg log/syslog (freebsd-386-cgo), const LOG_AUTH Priority pkg log/syslog (freebsd-386-cgo), const LOG_AUTHPRIV Priority pkg log/syslog (freebsd-386-cgo), const LOG_CRIT Priority pkg log/syslog (freebsd-386-cgo), const LOG_CRON Priority pkg log/syslog (freebsd-386-cgo), const LOG_DAEMON Priority pkg log/syslog (freebsd-386-cgo), const LOG_DEBUG Priority pkg log/syslog (freebsd-386-cgo), const LOG_EMERG Priority pkg log/syslog (freebsd-386-cgo), const LOG_ERR Priority pkg log/syslog (freebsd-386-cgo), const LOG_FTP Priority pkg log/syslog (freebsd-386-cgo), const LOG_INFO Priority pkg log/syslog (freebsd-386-cgo), const LOG_KERN Priority pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL0 Priority pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL1 Priority pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL2 Priority pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL3 Priority pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL4 Priority pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL5 Priority pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL6 Priority pkg log/syslog (freebsd-386-cgo), const LOG_LOCAL7 Priority pkg log/syslog (freebsd-386-cgo), const LOG_LPR Priority pkg log/syslog (freebsd-386-cgo), const LOG_MAIL Priority pkg log/syslog (freebsd-386-cgo), const LOG_NEWS Priority pkg log/syslog (freebsd-386-cgo), const LOG_NOTICE Priority pkg log/syslog (freebsd-386-cgo), const LOG_SYSLOG Priority pkg log/syslog (freebsd-386-cgo), const LOG_USER Priority pkg log/syslog (freebsd-386-cgo), const LOG_UUCP Priority pkg log/syslog (freebsd-386-cgo), const LOG_WARNING Priority pkg log/syslog (freebsd-386-cgo), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (freebsd-386-cgo), func New(Priority, string) (*Writer, error) pkg log/syslog (freebsd-386-cgo), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (freebsd-386-cgo), method (*Writer) Alert(string) error pkg log/syslog (freebsd-386-cgo), method (*Writer) Close() error pkg log/syslog (freebsd-386-cgo), method (*Writer) Crit(string) error pkg log/syslog (freebsd-386-cgo), method (*Writer) Debug(string) error pkg log/syslog (freebsd-386-cgo), method (*Writer) Emerg(string) error pkg log/syslog (freebsd-386-cgo), method (*Writer) Err(string) error pkg log/syslog (freebsd-386-cgo), method (*Writer) Info(string) error pkg log/syslog (freebsd-386-cgo), method (*Writer) Notice(string) error pkg log/syslog (freebsd-386-cgo), method (*Writer) Warning(string) error pkg log/syslog (freebsd-386-cgo), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (freebsd-386-cgo), type Priority int pkg log/syslog (freebsd-386-cgo), type Writer struct pkg log/syslog (freebsd-amd64-cgo), const LOG_ALERT Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_AUTH Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_AUTHPRIV Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_CRIT Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_CRON Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_DAEMON Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_DEBUG Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_EMERG Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_ERR Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_FTP Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_INFO Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_KERN Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL0 Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL1 Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL2 Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL3 Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL4 Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL5 Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL6 Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_LOCAL7 Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_LPR Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_MAIL Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_NEWS Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_NOTICE Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_SYSLOG Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_USER Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_UUCP Priority pkg log/syslog (freebsd-amd64-cgo), const LOG_WARNING Priority pkg log/syslog (freebsd-amd64-cgo), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (freebsd-amd64-cgo), func New(Priority, string) (*Writer, error) pkg log/syslog (freebsd-amd64-cgo), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (freebsd-amd64-cgo), method (*Writer) Alert(string) error pkg log/syslog (freebsd-amd64-cgo), method (*Writer) Close() error pkg log/syslog (freebsd-amd64-cgo), method (*Writer) Crit(string) error pkg log/syslog (freebsd-amd64-cgo), method (*Writer) Debug(string) error pkg log/syslog (freebsd-amd64-cgo), method (*Writer) Emerg(string) error pkg log/syslog (freebsd-amd64-cgo), method (*Writer) Err(string) error pkg log/syslog (freebsd-amd64-cgo), method (*Writer) Info(string) error pkg log/syslog (freebsd-amd64-cgo), method (*Writer) Notice(string) error pkg log/syslog (freebsd-amd64-cgo), method (*Writer) Warning(string) error pkg log/syslog (freebsd-amd64-cgo), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (freebsd-amd64-cgo), type Priority int pkg log/syslog (freebsd-amd64-cgo), type Writer struct pkg log/syslog (freebsd-arm), const LOG_ALERT Priority pkg log/syslog (freebsd-arm), const LOG_AUTH Priority pkg log/syslog (freebsd-arm), const LOG_AUTHPRIV Priority pkg log/syslog (freebsd-arm), const LOG_CRIT Priority pkg log/syslog (freebsd-arm), const LOG_CRON Priority pkg log/syslog (freebsd-arm), const LOG_DAEMON Priority pkg log/syslog (freebsd-arm), const LOG_DEBUG Priority pkg log/syslog (freebsd-arm), const LOG_EMERG Priority pkg log/syslog (freebsd-arm), const LOG_ERR Priority pkg log/syslog (freebsd-arm), const LOG_FTP Priority pkg log/syslog (freebsd-arm), const LOG_INFO Priority pkg log/syslog (freebsd-arm), const LOG_KERN Priority pkg log/syslog (freebsd-arm), const LOG_LOCAL0 Priority pkg log/syslog (freebsd-arm), const LOG_LOCAL1 Priority pkg log/syslog (freebsd-arm), const LOG_LOCAL2 Priority pkg log/syslog (freebsd-arm), const LOG_LOCAL3 Priority pkg log/syslog (freebsd-arm), const LOG_LOCAL4 Priority pkg log/syslog (freebsd-arm), const LOG_LOCAL5 Priority pkg log/syslog (freebsd-arm), const LOG_LOCAL6 Priority pkg log/syslog (freebsd-arm), const LOG_LOCAL7 Priority pkg log/syslog (freebsd-arm), const LOG_LPR Priority pkg log/syslog (freebsd-arm), const LOG_MAIL Priority pkg log/syslog (freebsd-arm), const LOG_NEWS Priority pkg log/syslog (freebsd-arm), const LOG_NOTICE Priority pkg log/syslog (freebsd-arm), const LOG_SYSLOG Priority pkg log/syslog (freebsd-arm), const LOG_USER Priority pkg log/syslog (freebsd-arm), const LOG_UUCP Priority pkg log/syslog (freebsd-arm), const LOG_WARNING Priority pkg log/syslog (freebsd-arm), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (freebsd-arm), func New(Priority, string) (*Writer, error) pkg log/syslog (freebsd-arm), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (freebsd-arm), method (*Writer) Alert(string) error pkg log/syslog (freebsd-arm), method (*Writer) Close() error pkg log/syslog (freebsd-arm), method (*Writer) Crit(string) error pkg log/syslog (freebsd-arm), method (*Writer) Debug(string) error pkg log/syslog (freebsd-arm), method (*Writer) Emerg(string) error pkg log/syslog (freebsd-arm), method (*Writer) Err(string) error pkg log/syslog (freebsd-arm), method (*Writer) Info(string) error pkg log/syslog (freebsd-arm), method (*Writer) Notice(string) error pkg log/syslog (freebsd-arm), method (*Writer) Warning(string) error pkg log/syslog (freebsd-arm), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (freebsd-arm), type Priority int pkg log/syslog (freebsd-arm), type Writer struct pkg log/syslog (freebsd-arm-cgo), const LOG_ALERT Priority pkg log/syslog (freebsd-arm-cgo), const LOG_AUTH Priority pkg log/syslog (freebsd-arm-cgo), const LOG_AUTHPRIV Priority pkg log/syslog (freebsd-arm-cgo), const LOG_CRIT Priority pkg log/syslog (freebsd-arm-cgo), const LOG_CRON Priority pkg log/syslog (freebsd-arm-cgo), const LOG_DAEMON Priority pkg log/syslog (freebsd-arm-cgo), const LOG_DEBUG Priority pkg log/syslog (freebsd-arm-cgo), const LOG_EMERG Priority pkg log/syslog (freebsd-arm-cgo), const LOG_ERR Priority pkg log/syslog (freebsd-arm-cgo), const LOG_FTP Priority pkg log/syslog (freebsd-arm-cgo), const LOG_INFO Priority pkg log/syslog (freebsd-arm-cgo), const LOG_KERN Priority pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL0 Priority pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL1 Priority pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL2 Priority pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL3 Priority pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL4 Priority pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL5 Priority pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL6 Priority pkg log/syslog (freebsd-arm-cgo), const LOG_LOCAL7 Priority pkg log/syslog (freebsd-arm-cgo), const LOG_LPR Priority pkg log/syslog (freebsd-arm-cgo), const LOG_MAIL Priority pkg log/syslog (freebsd-arm-cgo), const LOG_NEWS Priority pkg log/syslog (freebsd-arm-cgo), const LOG_NOTICE Priority pkg log/syslog (freebsd-arm-cgo), const LOG_SYSLOG Priority pkg log/syslog (freebsd-arm-cgo), const LOG_USER Priority pkg log/syslog (freebsd-arm-cgo), const LOG_UUCP Priority pkg log/syslog (freebsd-arm-cgo), const LOG_WARNING Priority pkg log/syslog (freebsd-arm-cgo), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (freebsd-arm-cgo), func New(Priority, string) (*Writer, error) pkg log/syslog (freebsd-arm-cgo), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (freebsd-arm-cgo), method (*Writer) Alert(string) error pkg log/syslog (freebsd-arm-cgo), method (*Writer) Close() error pkg log/syslog (freebsd-arm-cgo), method (*Writer) Crit(string) error pkg log/syslog (freebsd-arm-cgo), method (*Writer) Debug(string) error pkg log/syslog (freebsd-arm-cgo), method (*Writer) Emerg(string) error pkg log/syslog (freebsd-arm-cgo), method (*Writer) Err(string) error pkg log/syslog (freebsd-arm-cgo), method (*Writer) Info(string) error pkg log/syslog (freebsd-arm-cgo), method (*Writer) Notice(string) error pkg log/syslog (freebsd-arm-cgo), method (*Writer) Warning(string) error pkg log/syslog (freebsd-arm-cgo), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (freebsd-arm-cgo), type Priority int pkg log/syslog (freebsd-arm-cgo), type Writer struct pkg log/syslog (linux-arm-cgo), const LOG_ALERT Priority pkg log/syslog (linux-arm-cgo), const LOG_AUTH Priority pkg log/syslog (linux-arm-cgo), const LOG_AUTHPRIV Priority pkg log/syslog (linux-arm-cgo), const LOG_CRIT Priority pkg log/syslog (linux-arm-cgo), const LOG_CRON Priority pkg log/syslog (linux-arm-cgo), const LOG_DAEMON Priority pkg log/syslog (linux-arm-cgo), const LOG_DEBUG Priority pkg log/syslog (linux-arm-cgo), const LOG_EMERG Priority pkg log/syslog (linux-arm-cgo), const LOG_ERR Priority pkg log/syslog (linux-arm-cgo), const LOG_FTP Priority pkg log/syslog (linux-arm-cgo), const LOG_INFO Priority pkg log/syslog (linux-arm-cgo), const LOG_KERN Priority pkg log/syslog (linux-arm-cgo), const LOG_LOCAL0 Priority pkg log/syslog (linux-arm-cgo), const LOG_LOCAL1 Priority pkg log/syslog (linux-arm-cgo), const LOG_LOCAL2 Priority pkg log/syslog (linux-arm-cgo), const LOG_LOCAL3 Priority pkg log/syslog (linux-arm-cgo), const LOG_LOCAL4 Priority pkg log/syslog (linux-arm-cgo), const LOG_LOCAL5 Priority pkg log/syslog (linux-arm-cgo), const LOG_LOCAL6 Priority pkg log/syslog (linux-arm-cgo), const LOG_LOCAL7 Priority pkg log/syslog (linux-arm-cgo), const LOG_LPR Priority pkg log/syslog (linux-arm-cgo), const LOG_MAIL Priority pkg log/syslog (linux-arm-cgo), const LOG_NEWS Priority pkg log/syslog (linux-arm-cgo), const LOG_NOTICE Priority pkg log/syslog (linux-arm-cgo), const LOG_SYSLOG Priority pkg log/syslog (linux-arm-cgo), const LOG_USER Priority pkg log/syslog (linux-arm-cgo), const LOG_UUCP Priority pkg log/syslog (linux-arm-cgo), const LOG_WARNING Priority pkg log/syslog (linux-arm-cgo), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (linux-arm-cgo), func New(Priority, string) (*Writer, error) pkg log/syslog (linux-arm-cgo), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (linux-arm-cgo), method (*Writer) Alert(string) error pkg log/syslog (linux-arm-cgo), method (*Writer) Close() error pkg log/syslog (linux-arm-cgo), method (*Writer) Crit(string) error pkg log/syslog (linux-arm-cgo), method (*Writer) Debug(string) error pkg log/syslog (linux-arm-cgo), method (*Writer) Emerg(string) error pkg log/syslog (linux-arm-cgo), method (*Writer) Err(string) error pkg log/syslog (linux-arm-cgo), method (*Writer) Info(string) error pkg log/syslog (linux-arm-cgo), method (*Writer) Notice(string) error pkg log/syslog (linux-arm-cgo), method (*Writer) Warning(string) error pkg log/syslog (linux-arm-cgo), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (linux-arm-cgo), type Priority int pkg log/syslog (linux-arm-cgo), type Writer struct pkg log/syslog (netbsd-386), const LOG_ALERT Priority pkg log/syslog (netbsd-386), const LOG_AUTH Priority pkg log/syslog (netbsd-386), const LOG_AUTHPRIV Priority pkg log/syslog (netbsd-386), const LOG_CRIT Priority pkg log/syslog (netbsd-386), const LOG_CRON Priority pkg log/syslog (netbsd-386), const LOG_DAEMON Priority pkg log/syslog (netbsd-386), const LOG_DEBUG Priority pkg log/syslog (netbsd-386), const LOG_EMERG Priority pkg log/syslog (netbsd-386), const LOG_ERR Priority pkg log/syslog (netbsd-386), const LOG_FTP Priority pkg log/syslog (netbsd-386), const LOG_INFO Priority pkg log/syslog (netbsd-386), const LOG_KERN Priority pkg log/syslog (netbsd-386), const LOG_LOCAL0 Priority pkg log/syslog (netbsd-386), const LOG_LOCAL1 Priority pkg log/syslog (netbsd-386), const LOG_LOCAL2 Priority pkg log/syslog (netbsd-386), const LOG_LOCAL3 Priority pkg log/syslog (netbsd-386), const LOG_LOCAL4 Priority pkg log/syslog (netbsd-386), const LOG_LOCAL5 Priority pkg log/syslog (netbsd-386), const LOG_LOCAL6 Priority pkg log/syslog (netbsd-386), const LOG_LOCAL7 Priority pkg log/syslog (netbsd-386), const LOG_LPR Priority pkg log/syslog (netbsd-386), const LOG_MAIL Priority pkg log/syslog (netbsd-386), const LOG_NEWS Priority pkg log/syslog (netbsd-386), const LOG_NOTICE Priority pkg log/syslog (netbsd-386), const LOG_SYSLOG Priority pkg log/syslog (netbsd-386), const LOG_USER Priority pkg log/syslog (netbsd-386), const LOG_UUCP Priority pkg log/syslog (netbsd-386), const LOG_WARNING Priority pkg log/syslog (netbsd-386), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (netbsd-386), func New(Priority, string) (*Writer, error) pkg log/syslog (netbsd-386), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (netbsd-386), method (*Writer) Alert(string) error pkg log/syslog (netbsd-386), method (*Writer) Close() error pkg log/syslog (netbsd-386), method (*Writer) Crit(string) error pkg log/syslog (netbsd-386), method (*Writer) Debug(string) error pkg log/syslog (netbsd-386), method (*Writer) Emerg(string) error pkg log/syslog (netbsd-386), method (*Writer) Err(string) error pkg log/syslog (netbsd-386), method (*Writer) Info(string) error pkg log/syslog (netbsd-386), method (*Writer) Notice(string) error pkg log/syslog (netbsd-386), method (*Writer) Warning(string) error pkg log/syslog (netbsd-386), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (netbsd-386), type Priority int pkg log/syslog (netbsd-386), type Writer struct pkg log/syslog (netbsd-386-cgo), const LOG_ALERT Priority pkg log/syslog (netbsd-386-cgo), const LOG_AUTH Priority pkg log/syslog (netbsd-386-cgo), const LOG_AUTHPRIV Priority pkg log/syslog (netbsd-386-cgo), const LOG_CRIT Priority pkg log/syslog (netbsd-386-cgo), const LOG_CRON Priority pkg log/syslog (netbsd-386-cgo), const LOG_DAEMON Priority pkg log/syslog (netbsd-386-cgo), const LOG_DEBUG Priority pkg log/syslog (netbsd-386-cgo), const LOG_EMERG Priority pkg log/syslog (netbsd-386-cgo), const LOG_ERR Priority pkg log/syslog (netbsd-386-cgo), const LOG_FTP Priority pkg log/syslog (netbsd-386-cgo), const LOG_INFO Priority pkg log/syslog (netbsd-386-cgo), const LOG_KERN Priority pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL0 Priority pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL1 Priority pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL2 Priority pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL3 Priority pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL4 Priority pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL5 Priority pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL6 Priority pkg log/syslog (netbsd-386-cgo), const LOG_LOCAL7 Priority pkg log/syslog (netbsd-386-cgo), const LOG_LPR Priority pkg log/syslog (netbsd-386-cgo), const LOG_MAIL Priority pkg log/syslog (netbsd-386-cgo), const LOG_NEWS Priority pkg log/syslog (netbsd-386-cgo), const LOG_NOTICE Priority pkg log/syslog (netbsd-386-cgo), const LOG_SYSLOG Priority pkg log/syslog (netbsd-386-cgo), const LOG_USER Priority pkg log/syslog (netbsd-386-cgo), const LOG_UUCP Priority pkg log/syslog (netbsd-386-cgo), const LOG_WARNING Priority pkg log/syslog (netbsd-386-cgo), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (netbsd-386-cgo), func New(Priority, string) (*Writer, error) pkg log/syslog (netbsd-386-cgo), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (netbsd-386-cgo), method (*Writer) Alert(string) error pkg log/syslog (netbsd-386-cgo), method (*Writer) Close() error pkg log/syslog (netbsd-386-cgo), method (*Writer) Crit(string) error pkg log/syslog (netbsd-386-cgo), method (*Writer) Debug(string) error pkg log/syslog (netbsd-386-cgo), method (*Writer) Emerg(string) error pkg log/syslog (netbsd-386-cgo), method (*Writer) Err(string) error pkg log/syslog (netbsd-386-cgo), method (*Writer) Info(string) error pkg log/syslog (netbsd-386-cgo), method (*Writer) Notice(string) error pkg log/syslog (netbsd-386-cgo), method (*Writer) Warning(string) error pkg log/syslog (netbsd-386-cgo), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (netbsd-386-cgo), type Priority int pkg log/syslog (netbsd-386-cgo), type Writer struct pkg log/syslog (netbsd-amd64), const LOG_ALERT Priority pkg log/syslog (netbsd-amd64), const LOG_AUTH Priority pkg log/syslog (netbsd-amd64), const LOG_AUTHPRIV Priority pkg log/syslog (netbsd-amd64), const LOG_CRIT Priority pkg log/syslog (netbsd-amd64), const LOG_CRON Priority pkg log/syslog (netbsd-amd64), const LOG_DAEMON Priority pkg log/syslog (netbsd-amd64), const LOG_DEBUG Priority pkg log/syslog (netbsd-amd64), const LOG_EMERG Priority pkg log/syslog (netbsd-amd64), const LOG_ERR Priority pkg log/syslog (netbsd-amd64), const LOG_FTP Priority pkg log/syslog (netbsd-amd64), const LOG_INFO Priority pkg log/syslog (netbsd-amd64), const LOG_KERN Priority pkg log/syslog (netbsd-amd64), const LOG_LOCAL0 Priority pkg log/syslog (netbsd-amd64), const LOG_LOCAL1 Priority pkg log/syslog (netbsd-amd64), const LOG_LOCAL2 Priority pkg log/syslog (netbsd-amd64), const LOG_LOCAL3 Priority pkg log/syslog (netbsd-amd64), const LOG_LOCAL4 Priority pkg log/syslog (netbsd-amd64), const LOG_LOCAL5 Priority pkg log/syslog (netbsd-amd64), const LOG_LOCAL6 Priority pkg log/syslog (netbsd-amd64), const LOG_LOCAL7 Priority pkg log/syslog (netbsd-amd64), const LOG_LPR Priority pkg log/syslog (netbsd-amd64), const LOG_MAIL Priority pkg log/syslog (netbsd-amd64), const LOG_NEWS Priority pkg log/syslog (netbsd-amd64), const LOG_NOTICE Priority pkg log/syslog (netbsd-amd64), const LOG_SYSLOG Priority pkg log/syslog (netbsd-amd64), const LOG_USER Priority pkg log/syslog (netbsd-amd64), const LOG_UUCP Priority pkg log/syslog (netbsd-amd64), const LOG_WARNING Priority pkg log/syslog (netbsd-amd64), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (netbsd-amd64), func New(Priority, string) (*Writer, error) pkg log/syslog (netbsd-amd64), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (netbsd-amd64), method (*Writer) Alert(string) error pkg log/syslog (netbsd-amd64), method (*Writer) Close() error pkg log/syslog (netbsd-amd64), method (*Writer) Crit(string) error pkg log/syslog (netbsd-amd64), method (*Writer) Debug(string) error pkg log/syslog (netbsd-amd64), method (*Writer) Emerg(string) error pkg log/syslog (netbsd-amd64), method (*Writer) Err(string) error pkg log/syslog (netbsd-amd64), method (*Writer) Info(string) error pkg log/syslog (netbsd-amd64), method (*Writer) Notice(string) error pkg log/syslog (netbsd-amd64), method (*Writer) Warning(string) error pkg log/syslog (netbsd-amd64), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (netbsd-amd64), type Priority int pkg log/syslog (netbsd-amd64), type Writer struct pkg log/syslog (netbsd-amd64-cgo), const LOG_ALERT Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_AUTH Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_AUTHPRIV Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_CRIT Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_CRON Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_DAEMON Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_DEBUG Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_EMERG Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_ERR Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_FTP Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_INFO Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_KERN Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL0 Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL1 Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL2 Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL3 Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL4 Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL5 Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL6 Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_LOCAL7 Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_LPR Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_MAIL Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_NEWS Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_NOTICE Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_SYSLOG Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_USER Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_UUCP Priority pkg log/syslog (netbsd-amd64-cgo), const LOG_WARNING Priority pkg log/syslog (netbsd-amd64-cgo), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (netbsd-amd64-cgo), func New(Priority, string) (*Writer, error) pkg log/syslog (netbsd-amd64-cgo), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (netbsd-amd64-cgo), method (*Writer) Alert(string) error pkg log/syslog (netbsd-amd64-cgo), method (*Writer) Close() error pkg log/syslog (netbsd-amd64-cgo), method (*Writer) Crit(string) error pkg log/syslog (netbsd-amd64-cgo), method (*Writer) Debug(string) error pkg log/syslog (netbsd-amd64-cgo), method (*Writer) Emerg(string) error pkg log/syslog (netbsd-amd64-cgo), method (*Writer) Err(string) error pkg log/syslog (netbsd-amd64-cgo), method (*Writer) Info(string) error pkg log/syslog (netbsd-amd64-cgo), method (*Writer) Notice(string) error pkg log/syslog (netbsd-amd64-cgo), method (*Writer) Warning(string) error pkg log/syslog (netbsd-amd64-cgo), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (netbsd-amd64-cgo), type Priority int pkg log/syslog (netbsd-amd64-cgo), type Writer struct pkg log/syslog (netbsd-arm), const LOG_ALERT Priority pkg log/syslog (netbsd-arm), const LOG_AUTH Priority pkg log/syslog (netbsd-arm), const LOG_AUTHPRIV Priority pkg log/syslog (netbsd-arm), const LOG_CRIT Priority pkg log/syslog (netbsd-arm), const LOG_CRON Priority pkg log/syslog (netbsd-arm), const LOG_DAEMON Priority pkg log/syslog (netbsd-arm), const LOG_DEBUG Priority pkg log/syslog (netbsd-arm), const LOG_EMERG Priority pkg log/syslog (netbsd-arm), const LOG_ERR Priority pkg log/syslog (netbsd-arm), const LOG_FTP Priority pkg log/syslog (netbsd-arm), const LOG_INFO Priority pkg log/syslog (netbsd-arm), const LOG_KERN Priority pkg log/syslog (netbsd-arm), const LOG_LOCAL0 Priority pkg log/syslog (netbsd-arm), const LOG_LOCAL1 Priority pkg log/syslog (netbsd-arm), const LOG_LOCAL2 Priority pkg log/syslog (netbsd-arm), const LOG_LOCAL3 Priority pkg log/syslog (netbsd-arm), const LOG_LOCAL4 Priority pkg log/syslog (netbsd-arm), const LOG_LOCAL5 Priority pkg log/syslog (netbsd-arm), const LOG_LOCAL6 Priority pkg log/syslog (netbsd-arm), const LOG_LOCAL7 Priority pkg log/syslog (netbsd-arm), const LOG_LPR Priority pkg log/syslog (netbsd-arm), const LOG_MAIL Priority pkg log/syslog (netbsd-arm), const LOG_NEWS Priority pkg log/syslog (netbsd-arm), const LOG_NOTICE Priority pkg log/syslog (netbsd-arm), const LOG_SYSLOG Priority pkg log/syslog (netbsd-arm), const LOG_USER Priority pkg log/syslog (netbsd-arm), const LOG_UUCP Priority pkg log/syslog (netbsd-arm), const LOG_WARNING Priority pkg log/syslog (netbsd-arm), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (netbsd-arm), func New(Priority, string) (*Writer, error) pkg log/syslog (netbsd-arm), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (netbsd-arm), method (*Writer) Alert(string) error pkg log/syslog (netbsd-arm), method (*Writer) Close() error pkg log/syslog (netbsd-arm), method (*Writer) Crit(string) error pkg log/syslog (netbsd-arm), method (*Writer) Debug(string) error pkg log/syslog (netbsd-arm), method (*Writer) Emerg(string) error pkg log/syslog (netbsd-arm), method (*Writer) Err(string) error pkg log/syslog (netbsd-arm), method (*Writer) Info(string) error pkg log/syslog (netbsd-arm), method (*Writer) Notice(string) error pkg log/syslog (netbsd-arm), method (*Writer) Warning(string) error pkg log/syslog (netbsd-arm), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (netbsd-arm), type Priority int pkg log/syslog (netbsd-arm), type Writer struct pkg log/syslog (netbsd-arm-cgo), const LOG_ALERT Priority pkg log/syslog (netbsd-arm-cgo), const LOG_AUTH Priority pkg log/syslog (netbsd-arm-cgo), const LOG_AUTHPRIV Priority pkg log/syslog (netbsd-arm-cgo), const LOG_CRIT Priority pkg log/syslog (netbsd-arm-cgo), const LOG_CRON Priority pkg log/syslog (netbsd-arm-cgo), const LOG_DAEMON Priority pkg log/syslog (netbsd-arm-cgo), const LOG_DEBUG Priority pkg log/syslog (netbsd-arm-cgo), const LOG_EMERG Priority pkg log/syslog (netbsd-arm-cgo), const LOG_ERR Priority pkg log/syslog (netbsd-arm-cgo), const LOG_FTP Priority pkg log/syslog (netbsd-arm-cgo), const LOG_INFO Priority pkg log/syslog (netbsd-arm-cgo), const LOG_KERN Priority pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL0 Priority pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL1 Priority pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL2 Priority pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL3 Priority pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL4 Priority pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL5 Priority pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL6 Priority pkg log/syslog (netbsd-arm-cgo), const LOG_LOCAL7 Priority pkg log/syslog (netbsd-arm-cgo), const LOG_LPR Priority pkg log/syslog (netbsd-arm-cgo), const LOG_MAIL Priority pkg log/syslog (netbsd-arm-cgo), const LOG_NEWS Priority pkg log/syslog (netbsd-arm-cgo), const LOG_NOTICE Priority pkg log/syslog (netbsd-arm-cgo), const LOG_SYSLOG Priority pkg log/syslog (netbsd-arm-cgo), const LOG_USER Priority pkg log/syslog (netbsd-arm-cgo), const LOG_UUCP Priority pkg log/syslog (netbsd-arm-cgo), const LOG_WARNING Priority pkg log/syslog (netbsd-arm-cgo), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (netbsd-arm-cgo), func New(Priority, string) (*Writer, error) pkg log/syslog (netbsd-arm-cgo), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (netbsd-arm-cgo), method (*Writer) Alert(string) error pkg log/syslog (netbsd-arm-cgo), method (*Writer) Close() error pkg log/syslog (netbsd-arm-cgo), method (*Writer) Crit(string) error pkg log/syslog (netbsd-arm-cgo), method (*Writer) Debug(string) error pkg log/syslog (netbsd-arm-cgo), method (*Writer) Emerg(string) error pkg log/syslog (netbsd-arm-cgo), method (*Writer) Err(string) error pkg log/syslog (netbsd-arm-cgo), method (*Writer) Info(string) error pkg log/syslog (netbsd-arm-cgo), method (*Writer) Notice(string) error pkg log/syslog (netbsd-arm-cgo), method (*Writer) Warning(string) error pkg log/syslog (netbsd-arm-cgo), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (netbsd-arm-cgo), type Priority int pkg log/syslog (netbsd-arm-cgo), type Writer struct pkg log/syslog (openbsd-386), const LOG_ALERT Priority pkg log/syslog (openbsd-386), const LOG_AUTH Priority pkg log/syslog (openbsd-386), const LOG_AUTHPRIV Priority pkg log/syslog (openbsd-386), const LOG_CRIT Priority pkg log/syslog (openbsd-386), const LOG_CRON Priority pkg log/syslog (openbsd-386), const LOG_DAEMON Priority pkg log/syslog (openbsd-386), const LOG_DEBUG Priority pkg log/syslog (openbsd-386), const LOG_EMERG Priority pkg log/syslog (openbsd-386), const LOG_ERR Priority pkg log/syslog (openbsd-386), const LOG_FTP Priority pkg log/syslog (openbsd-386), const LOG_INFO Priority pkg log/syslog (openbsd-386), const LOG_KERN Priority pkg log/syslog (openbsd-386), const LOG_LOCAL0 Priority pkg log/syslog (openbsd-386), const LOG_LOCAL1 Priority pkg log/syslog (openbsd-386), const LOG_LOCAL2 Priority pkg log/syslog (openbsd-386), const LOG_LOCAL3 Priority pkg log/syslog (openbsd-386), const LOG_LOCAL4 Priority pkg log/syslog (openbsd-386), const LOG_LOCAL5 Priority pkg log/syslog (openbsd-386), const LOG_LOCAL6 Priority pkg log/syslog (openbsd-386), const LOG_LOCAL7 Priority pkg log/syslog (openbsd-386), const LOG_LPR Priority pkg log/syslog (openbsd-386), const LOG_MAIL Priority pkg log/syslog (openbsd-386), const LOG_NEWS Priority pkg log/syslog (openbsd-386), const LOG_NOTICE Priority pkg log/syslog (openbsd-386), const LOG_SYSLOG Priority pkg log/syslog (openbsd-386), const LOG_USER Priority pkg log/syslog (openbsd-386), const LOG_UUCP Priority pkg log/syslog (openbsd-386), const LOG_WARNING Priority pkg log/syslog (openbsd-386), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (openbsd-386), func New(Priority, string) (*Writer, error) pkg log/syslog (openbsd-386), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (openbsd-386), method (*Writer) Alert(string) error pkg log/syslog (openbsd-386), method (*Writer) Close() error pkg log/syslog (openbsd-386), method (*Writer) Crit(string) error pkg log/syslog (openbsd-386), method (*Writer) Debug(string) error pkg log/syslog (openbsd-386), method (*Writer) Emerg(string) error pkg log/syslog (openbsd-386), method (*Writer) Err(string) error pkg log/syslog (openbsd-386), method (*Writer) Info(string) error pkg log/syslog (openbsd-386), method (*Writer) Notice(string) error pkg log/syslog (openbsd-386), method (*Writer) Warning(string) error pkg log/syslog (openbsd-386), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (openbsd-386), type Priority int pkg log/syslog (openbsd-386), type Writer struct pkg log/syslog (openbsd-386-cgo), const LOG_ALERT Priority pkg log/syslog (openbsd-386-cgo), const LOG_AUTH Priority pkg log/syslog (openbsd-386-cgo), const LOG_AUTHPRIV Priority pkg log/syslog (openbsd-386-cgo), const LOG_CRIT Priority pkg log/syslog (openbsd-386-cgo), const LOG_CRON Priority pkg log/syslog (openbsd-386-cgo), const LOG_DAEMON Priority pkg log/syslog (openbsd-386-cgo), const LOG_DEBUG Priority pkg log/syslog (openbsd-386-cgo), const LOG_EMERG Priority pkg log/syslog (openbsd-386-cgo), const LOG_ERR Priority pkg log/syslog (openbsd-386-cgo), const LOG_FTP Priority pkg log/syslog (openbsd-386-cgo), const LOG_INFO Priority pkg log/syslog (openbsd-386-cgo), const LOG_KERN Priority pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL0 Priority pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL1 Priority pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL2 Priority pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL3 Priority pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL4 Priority pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL5 Priority pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL6 Priority pkg log/syslog (openbsd-386-cgo), const LOG_LOCAL7 Priority pkg log/syslog (openbsd-386-cgo), const LOG_LPR Priority pkg log/syslog (openbsd-386-cgo), const LOG_MAIL Priority pkg log/syslog (openbsd-386-cgo), const LOG_NEWS Priority pkg log/syslog (openbsd-386-cgo), const LOG_NOTICE Priority pkg log/syslog (openbsd-386-cgo), const LOG_SYSLOG Priority pkg log/syslog (openbsd-386-cgo), const LOG_USER Priority pkg log/syslog (openbsd-386-cgo), const LOG_UUCP Priority pkg log/syslog (openbsd-386-cgo), const LOG_WARNING Priority pkg log/syslog (openbsd-386-cgo), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (openbsd-386-cgo), func New(Priority, string) (*Writer, error) pkg log/syslog (openbsd-386-cgo), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (openbsd-386-cgo), method (*Writer) Alert(string) error pkg log/syslog (openbsd-386-cgo), method (*Writer) Close() error pkg log/syslog (openbsd-386-cgo), method (*Writer) Crit(string) error pkg log/syslog (openbsd-386-cgo), method (*Writer) Debug(string) error pkg log/syslog (openbsd-386-cgo), method (*Writer) Emerg(string) error pkg log/syslog (openbsd-386-cgo), method (*Writer) Err(string) error pkg log/syslog (openbsd-386-cgo), method (*Writer) Info(string) error pkg log/syslog (openbsd-386-cgo), method (*Writer) Notice(string) error pkg log/syslog (openbsd-386-cgo), method (*Writer) Warning(string) error pkg log/syslog (openbsd-386-cgo), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (openbsd-386-cgo), type Priority int pkg log/syslog (openbsd-386-cgo), type Writer struct pkg log/syslog (openbsd-amd64), const LOG_ALERT Priority pkg log/syslog (openbsd-amd64), const LOG_AUTH Priority pkg log/syslog (openbsd-amd64), const LOG_AUTHPRIV Priority pkg log/syslog (openbsd-amd64), const LOG_CRIT Priority pkg log/syslog (openbsd-amd64), const LOG_CRON Priority pkg log/syslog (openbsd-amd64), const LOG_DAEMON Priority pkg log/syslog (openbsd-amd64), const LOG_DEBUG Priority pkg log/syslog (openbsd-amd64), const LOG_EMERG Priority pkg log/syslog (openbsd-amd64), const LOG_ERR Priority pkg log/syslog (openbsd-amd64), const LOG_FTP Priority pkg log/syslog (openbsd-amd64), const LOG_INFO Priority pkg log/syslog (openbsd-amd64), const LOG_KERN Priority pkg log/syslog (openbsd-amd64), const LOG_LOCAL0 Priority pkg log/syslog (openbsd-amd64), const LOG_LOCAL1 Priority pkg log/syslog (openbsd-amd64), const LOG_LOCAL2 Priority pkg log/syslog (openbsd-amd64), const LOG_LOCAL3 Priority pkg log/syslog (openbsd-amd64), const LOG_LOCAL4 Priority pkg log/syslog (openbsd-amd64), const LOG_LOCAL5 Priority pkg log/syslog (openbsd-amd64), const LOG_LOCAL6 Priority pkg log/syslog (openbsd-amd64), const LOG_LOCAL7 Priority pkg log/syslog (openbsd-amd64), const LOG_LPR Priority pkg log/syslog (openbsd-amd64), const LOG_MAIL Priority pkg log/syslog (openbsd-amd64), const LOG_NEWS Priority pkg log/syslog (openbsd-amd64), const LOG_NOTICE Priority pkg log/syslog (openbsd-amd64), const LOG_SYSLOG Priority pkg log/syslog (openbsd-amd64), const LOG_USER Priority pkg log/syslog (openbsd-amd64), const LOG_UUCP Priority pkg log/syslog (openbsd-amd64), const LOG_WARNING Priority pkg log/syslog (openbsd-amd64), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (openbsd-amd64), func New(Priority, string) (*Writer, error) pkg log/syslog (openbsd-amd64), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (openbsd-amd64), method (*Writer) Alert(string) error pkg log/syslog (openbsd-amd64), method (*Writer) Close() error pkg log/syslog (openbsd-amd64), method (*Writer) Crit(string) error pkg log/syslog (openbsd-amd64), method (*Writer) Debug(string) error pkg log/syslog (openbsd-amd64), method (*Writer) Emerg(string) error pkg log/syslog (openbsd-amd64), method (*Writer) Err(string) error pkg log/syslog (openbsd-amd64), method (*Writer) Info(string) error pkg log/syslog (openbsd-amd64), method (*Writer) Notice(string) error pkg log/syslog (openbsd-amd64), method (*Writer) Warning(string) error pkg log/syslog (openbsd-amd64), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (openbsd-amd64), type Priority int pkg log/syslog (openbsd-amd64), type Writer struct pkg log/syslog (openbsd-amd64-cgo), const LOG_ALERT Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_AUTH Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_AUTHPRIV Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_CRIT Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_CRON Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_DAEMON Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_DEBUG Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_EMERG Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_ERR Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_FTP Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_INFO Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_KERN Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL0 Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL1 Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL2 Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL3 Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL4 Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL5 Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL6 Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_LOCAL7 Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_LPR Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_MAIL Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_NEWS Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_NOTICE Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_SYSLOG Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_USER Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_UUCP Priority pkg log/syslog (openbsd-amd64-cgo), const LOG_WARNING Priority pkg log/syslog (openbsd-amd64-cgo), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (openbsd-amd64-cgo), func New(Priority, string) (*Writer, error) pkg log/syslog (openbsd-amd64-cgo), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (openbsd-amd64-cgo), method (*Writer) Alert(string) error pkg log/syslog (openbsd-amd64-cgo), method (*Writer) Close() error pkg log/syslog (openbsd-amd64-cgo), method (*Writer) Crit(string) error pkg log/syslog (openbsd-amd64-cgo), method (*Writer) Debug(string) error pkg log/syslog (openbsd-amd64-cgo), method (*Writer) Emerg(string) error pkg log/syslog (openbsd-amd64-cgo), method (*Writer) Err(string) error pkg log/syslog (openbsd-amd64-cgo), method (*Writer) Info(string) error pkg log/syslog (openbsd-amd64-cgo), method (*Writer) Notice(string) error pkg log/syslog (openbsd-amd64-cgo), method (*Writer) Warning(string) error pkg log/syslog (openbsd-amd64-cgo), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (openbsd-amd64-cgo), type Priority int pkg log/syslog (openbsd-amd64-cgo), type Writer struct pkg net, method (*IP) UnmarshalText([]uint8) error pkg net, method (*TCPConn) SetKeepAlivePeriod(time.Duration) error pkg net, method (IP) MarshalText() ([]uint8, error) pkg net, type Dialer struct, DualStack bool pkg net/smtp, method (*Client) Close() error pkg os (linux-arm), const O_SYNC = 1052672 pkg os (linux-arm-cgo), const O_SYNC = 1052672 pkg reflect, method (Value) SetCap(int) pkg reflect, method (Value) Slice3(int, int, int) Value pkg runtime, type MemStats struct, GCSys uint64 pkg runtime, type MemStats struct, OtherSys uint64 pkg runtime/debug, func SetMaxStack(int) int pkg runtime/debug, func SetMaxThreads(int) int pkg sort, func Stable(Interface) pkg strings, func IndexByte(string, uint8) int pkg sync/atomic, func SwapInt32(*int32, int32) int32 pkg sync/atomic, func SwapInt64(*int64, int64) int64 pkg sync/atomic, func SwapPointer(*unsafe.Pointer, unsafe.Pointer) unsafe.Pointer pkg sync/atomic, func SwapUint32(*uint32, uint32) uint32 pkg sync/atomic, func SwapUint64(*uint64, uint64) uint64 pkg sync/atomic, func SwapUintptr(*uintptr, uintptr) uintptr pkg syscall (darwin-386), const ICMP6_FILTER = 18 pkg syscall (darwin-386), const ICMP6_FILTER ideal-int pkg syscall (darwin-386), const ImplementsGetwd = true pkg syscall (darwin-386), const PRIO_PGRP = 1 pkg syscall (darwin-386), const PRIO_PGRP ideal-int pkg syscall (darwin-386), const PRIO_PROCESS = 0 pkg syscall (darwin-386), const PRIO_PROCESS ideal-int pkg syscall (darwin-386), const PRIO_USER = 2 pkg syscall (darwin-386), const PRIO_USER ideal-int pkg syscall (darwin-386), const SizeofICMPv6Filter = 32 pkg syscall (darwin-386), const SizeofICMPv6Filter ideal-int pkg syscall (darwin-386), const SizeofIPv6MTUInfo = 32 pkg syscall (darwin-386), const SizeofIPv6MTUInfo ideal-int pkg syscall (darwin-386), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (darwin-386), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (darwin-386), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (darwin-386), type ICMPv6Filter struct pkg syscall (darwin-386), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (darwin-386), type IPv6MTUInfo struct pkg syscall (darwin-386), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (darwin-386), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (darwin-386-cgo), const ICMP6_FILTER = 18 pkg syscall (darwin-386-cgo), const ICMP6_FILTER ideal-int pkg syscall (darwin-386-cgo), const ImplementsGetwd = true pkg syscall (darwin-386-cgo), const PRIO_PGRP = 1 pkg syscall (darwin-386-cgo), const PRIO_PGRP ideal-int pkg syscall (darwin-386-cgo), const PRIO_PROCESS = 0 pkg syscall (darwin-386-cgo), const PRIO_PROCESS ideal-int pkg syscall (darwin-386-cgo), const PRIO_USER = 2 pkg syscall (darwin-386-cgo), const PRIO_USER ideal-int pkg syscall (darwin-386-cgo), const SizeofICMPv6Filter = 32 pkg syscall (darwin-386-cgo), const SizeofICMPv6Filter ideal-int pkg syscall (darwin-386-cgo), const SizeofIPv6MTUInfo = 32 pkg syscall (darwin-386-cgo), const SizeofIPv6MTUInfo ideal-int pkg syscall (darwin-386-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (darwin-386-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (darwin-386-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (darwin-386-cgo), type ICMPv6Filter struct pkg syscall (darwin-386-cgo), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (darwin-386-cgo), type IPv6MTUInfo struct pkg syscall (darwin-386-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (darwin-386-cgo), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (darwin-amd64), const ICMP6_FILTER = 18 pkg syscall (darwin-amd64), const ICMP6_FILTER ideal-int pkg syscall (darwin-amd64), const ImplementsGetwd = true pkg syscall (darwin-amd64), const PRIO_PGRP = 1 pkg syscall (darwin-amd64), const PRIO_PGRP ideal-int pkg syscall (darwin-amd64), const PRIO_PROCESS = 0 pkg syscall (darwin-amd64), const PRIO_PROCESS ideal-int pkg syscall (darwin-amd64), const PRIO_USER = 2 pkg syscall (darwin-amd64), const PRIO_USER ideal-int pkg syscall (darwin-amd64), const SizeofICMPv6Filter = 32 pkg syscall (darwin-amd64), const SizeofICMPv6Filter ideal-int pkg syscall (darwin-amd64), const SizeofIPv6MTUInfo = 32 pkg syscall (darwin-amd64), const SizeofIPv6MTUInfo ideal-int pkg syscall (darwin-amd64), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (darwin-amd64), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (darwin-amd64), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (darwin-amd64), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-amd64), type ICMPv6Filter struct pkg syscall (darwin-amd64), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (darwin-amd64), type IPv6MTUInfo struct pkg syscall (darwin-amd64), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (darwin-amd64), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (darwin-amd64-cgo), const ICMP6_FILTER = 18 pkg syscall (darwin-amd64-cgo), const ICMP6_FILTER ideal-int pkg syscall (darwin-amd64-cgo), const ImplementsGetwd = true pkg syscall (darwin-amd64-cgo), const PRIO_PGRP = 1 pkg syscall (darwin-amd64-cgo), const PRIO_PGRP ideal-int pkg syscall (darwin-amd64-cgo), const PRIO_PROCESS = 0 pkg syscall (darwin-amd64-cgo), const PRIO_PROCESS ideal-int pkg syscall (darwin-amd64-cgo), const PRIO_USER = 2 pkg syscall (darwin-amd64-cgo), const PRIO_USER ideal-int pkg syscall (darwin-amd64-cgo), const SizeofICMPv6Filter = 32 pkg syscall (darwin-amd64-cgo), const SizeofICMPv6Filter ideal-int pkg syscall (darwin-amd64-cgo), const SizeofIPv6MTUInfo = 32 pkg syscall (darwin-amd64-cgo), const SizeofIPv6MTUInfo ideal-int pkg syscall (darwin-amd64-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (darwin-amd64-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (darwin-amd64-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (darwin-amd64-cgo), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-amd64-cgo), type ICMPv6Filter struct pkg syscall (darwin-amd64-cgo), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (darwin-amd64-cgo), type IPv6MTUInfo struct pkg syscall (darwin-amd64-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (darwin-amd64-cgo), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (freebsd-386), const F_DUP2FD_CLOEXEC = 18 pkg syscall (freebsd-386), const F_DUP2FD_CLOEXEC ideal-int pkg syscall (freebsd-386), const F_DUPFD_CLOEXEC = 17 pkg syscall (freebsd-386), const F_DUPFD_CLOEXEC ideal-int pkg syscall (freebsd-386), const ICMP6_FILTER = 18 pkg syscall (freebsd-386), const ICMP6_FILTER ideal-int pkg syscall (freebsd-386), const PRIO_PGRP = 1 pkg syscall (freebsd-386), const PRIO_PGRP ideal-int pkg syscall (freebsd-386), const PRIO_PROCESS = 0 pkg syscall (freebsd-386), const PRIO_PROCESS ideal-int pkg syscall (freebsd-386), const PRIO_USER = 2 pkg syscall (freebsd-386), const PRIO_USER ideal-int pkg syscall (freebsd-386), const SizeofICMPv6Filter = 32 pkg syscall (freebsd-386), const SizeofICMPv6Filter ideal-int pkg syscall (freebsd-386), const SizeofIPv6MTUInfo = 32 pkg syscall (freebsd-386), const SizeofIPv6MTUInfo ideal-int pkg syscall (freebsd-386), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (freebsd-386), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (freebsd-386), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (freebsd-386), type ICMPv6Filter struct pkg syscall (freebsd-386), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (freebsd-386), type IPv6MTUInfo struct pkg syscall (freebsd-386), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (freebsd-386), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (freebsd-386-cgo), const AF_APPLETALK ideal-int pkg syscall (freebsd-386-cgo), const AF_ARP ideal-int pkg syscall (freebsd-386-cgo), const AF_ATM ideal-int pkg syscall (freebsd-386-cgo), const AF_BLUETOOTH ideal-int pkg syscall (freebsd-386-cgo), const AF_CCITT ideal-int pkg syscall (freebsd-386-cgo), const AF_CHAOS ideal-int pkg syscall (freebsd-386-cgo), const AF_CNT ideal-int pkg syscall (freebsd-386-cgo), const AF_COIP ideal-int pkg syscall (freebsd-386-cgo), const AF_DATAKIT ideal-int pkg syscall (freebsd-386-cgo), const AF_DECnet ideal-int pkg syscall (freebsd-386-cgo), const AF_DLI ideal-int pkg syscall (freebsd-386-cgo), const AF_E164 ideal-int pkg syscall (freebsd-386-cgo), const AF_ECMA ideal-int pkg syscall (freebsd-386-cgo), const AF_HYLINK ideal-int pkg syscall (freebsd-386-cgo), const AF_IEEE80211 ideal-int pkg syscall (freebsd-386-cgo), const AF_IMPLINK ideal-int pkg syscall (freebsd-386-cgo), const AF_IPX ideal-int pkg syscall (freebsd-386-cgo), const AF_ISDN ideal-int pkg syscall (freebsd-386-cgo), const AF_ISO ideal-int pkg syscall (freebsd-386-cgo), const AF_LAT ideal-int pkg syscall (freebsd-386-cgo), const AF_LINK ideal-int pkg syscall (freebsd-386-cgo), const AF_LOCAL ideal-int pkg syscall (freebsd-386-cgo), const AF_MAX ideal-int pkg syscall (freebsd-386-cgo), const AF_NATM ideal-int pkg syscall (freebsd-386-cgo), const AF_NETBIOS ideal-int pkg syscall (freebsd-386-cgo), const AF_NETGRAPH ideal-int pkg syscall (freebsd-386-cgo), const AF_OSI ideal-int pkg syscall (freebsd-386-cgo), const AF_PUP ideal-int pkg syscall (freebsd-386-cgo), const AF_ROUTE ideal-int pkg syscall (freebsd-386-cgo), const AF_SCLUSTER ideal-int pkg syscall (freebsd-386-cgo), const AF_SIP ideal-int pkg syscall (freebsd-386-cgo), const AF_SLOW ideal-int pkg syscall (freebsd-386-cgo), const AF_SNA ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR00 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR01 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR02 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR03 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR04 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR05 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR06 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR07 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR08 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR09 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR10 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR11 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR12 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR13 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR14 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR15 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR16 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR17 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR18 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR19 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR20 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR21 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR22 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR23 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR24 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR25 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR26 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR27 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR28 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR29 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR30 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR31 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR32 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR33 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR34 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR35 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR36 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR37 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR38 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR39 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR40 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR41 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR42 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR43 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR44 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR45 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR46 ideal-int pkg syscall (freebsd-386-cgo), const AF_VENDOR47 ideal-int pkg syscall (freebsd-386-cgo), const B0 ideal-int pkg syscall (freebsd-386-cgo), const B110 ideal-int pkg syscall (freebsd-386-cgo), const B115200 ideal-int pkg syscall (freebsd-386-cgo), const B1200 ideal-int pkg syscall (freebsd-386-cgo), const B134 ideal-int pkg syscall (freebsd-386-cgo), const B14400 ideal-int pkg syscall (freebsd-386-cgo), const B150 ideal-int pkg syscall (freebsd-386-cgo), const B1800 ideal-int pkg syscall (freebsd-386-cgo), const B19200 ideal-int pkg syscall (freebsd-386-cgo), const B200 ideal-int pkg syscall (freebsd-386-cgo), const B230400 ideal-int pkg syscall (freebsd-386-cgo), const B2400 ideal-int pkg syscall (freebsd-386-cgo), const B28800 ideal-int pkg syscall (freebsd-386-cgo), const B300 ideal-int pkg syscall (freebsd-386-cgo), const B38400 ideal-int pkg syscall (freebsd-386-cgo), const B460800 ideal-int pkg syscall (freebsd-386-cgo), const B4800 ideal-int pkg syscall (freebsd-386-cgo), const B50 ideal-int pkg syscall (freebsd-386-cgo), const B57600 ideal-int pkg syscall (freebsd-386-cgo), const B600 ideal-int pkg syscall (freebsd-386-cgo), const B7200 ideal-int pkg syscall (freebsd-386-cgo), const B75 ideal-int pkg syscall (freebsd-386-cgo), const B76800 ideal-int pkg syscall (freebsd-386-cgo), const B921600 ideal-int pkg syscall (freebsd-386-cgo), const B9600 ideal-int pkg syscall (freebsd-386-cgo), const BIOCFEEDBACK ideal-int pkg syscall (freebsd-386-cgo), const BIOCFLUSH ideal-int pkg syscall (freebsd-386-cgo), const BIOCGBLEN ideal-int pkg syscall (freebsd-386-cgo), const BIOCGDIRECTION ideal-int pkg syscall (freebsd-386-cgo), const BIOCGDLT ideal-int pkg syscall (freebsd-386-cgo), const BIOCGDLTLIST ideal-int pkg syscall (freebsd-386-cgo), const BIOCGETBUFMODE ideal-int pkg syscall (freebsd-386-cgo), const BIOCGETIF ideal-int pkg syscall (freebsd-386-cgo), const BIOCGETZMAX ideal-int pkg syscall (freebsd-386-cgo), const BIOCGHDRCMPLT ideal-int pkg syscall (freebsd-386-cgo), const BIOCGRSIG ideal-int pkg syscall (freebsd-386-cgo), const BIOCGRTIMEOUT ideal-int pkg syscall (freebsd-386-cgo), const BIOCGSEESENT ideal-int pkg syscall (freebsd-386-cgo), const BIOCGSTATS ideal-int pkg syscall (freebsd-386-cgo), const BIOCGTSTAMP ideal-int pkg syscall (freebsd-386-cgo), const BIOCIMMEDIATE ideal-int pkg syscall (freebsd-386-cgo), const BIOCLOCK ideal-int pkg syscall (freebsd-386-cgo), const BIOCPROMISC ideal-int pkg syscall (freebsd-386-cgo), const BIOCROTZBUF ideal-int pkg syscall (freebsd-386-cgo), const BIOCSBLEN ideal-int pkg syscall (freebsd-386-cgo), const BIOCSDIRECTION ideal-int pkg syscall (freebsd-386-cgo), const BIOCSDLT ideal-int pkg syscall (freebsd-386-cgo), const BIOCSETBUFMODE ideal-int pkg syscall (freebsd-386-cgo), const BIOCSETF ideal-int pkg syscall (freebsd-386-cgo), const BIOCSETFNR ideal-int pkg syscall (freebsd-386-cgo), const BIOCSETIF ideal-int pkg syscall (freebsd-386-cgo), const BIOCSETWF ideal-int pkg syscall (freebsd-386-cgo), const BIOCSETZBUF ideal-int pkg syscall (freebsd-386-cgo), const BIOCSHDRCMPLT ideal-int pkg syscall (freebsd-386-cgo), const BIOCSRSIG ideal-int pkg syscall (freebsd-386-cgo), const BIOCSRTIMEOUT ideal-int pkg syscall (freebsd-386-cgo), const BIOCSSEESENT ideal-int pkg syscall (freebsd-386-cgo), const BIOCSTSTAMP ideal-int pkg syscall (freebsd-386-cgo), const BIOCVERSION ideal-int pkg syscall (freebsd-386-cgo), const BPF_A ideal-int pkg syscall (freebsd-386-cgo), const BPF_ABS ideal-int pkg syscall (freebsd-386-cgo), const BPF_ADD ideal-int pkg syscall (freebsd-386-cgo), const BPF_ALIGNMENT ideal-int pkg syscall (freebsd-386-cgo), const BPF_ALU ideal-int pkg syscall (freebsd-386-cgo), const BPF_AND ideal-int pkg syscall (freebsd-386-cgo), const BPF_B ideal-int pkg syscall (freebsd-386-cgo), const BPF_BUFMODE_BUFFER ideal-int pkg syscall (freebsd-386-cgo), const BPF_BUFMODE_ZBUF ideal-int pkg syscall (freebsd-386-cgo), const BPF_DIV ideal-int pkg syscall (freebsd-386-cgo), const BPF_H ideal-int pkg syscall (freebsd-386-cgo), const BPF_IMM ideal-int pkg syscall (freebsd-386-cgo), const BPF_IND ideal-int pkg syscall (freebsd-386-cgo), const BPF_JA ideal-int pkg syscall (freebsd-386-cgo), const BPF_JEQ ideal-int pkg syscall (freebsd-386-cgo), const BPF_JGE ideal-int pkg syscall (freebsd-386-cgo), const BPF_JGT ideal-int pkg syscall (freebsd-386-cgo), const BPF_JMP ideal-int pkg syscall (freebsd-386-cgo), const BPF_JSET ideal-int pkg syscall (freebsd-386-cgo), const BPF_K ideal-int pkg syscall (freebsd-386-cgo), const BPF_LD ideal-int pkg syscall (freebsd-386-cgo), const BPF_LDX ideal-int pkg syscall (freebsd-386-cgo), const BPF_LEN ideal-int pkg syscall (freebsd-386-cgo), const BPF_LSH ideal-int pkg syscall (freebsd-386-cgo), const BPF_MAJOR_VERSION ideal-int pkg syscall (freebsd-386-cgo), const BPF_MAXBUFSIZE ideal-int pkg syscall (freebsd-386-cgo), const BPF_MAXINSNS ideal-int pkg syscall (freebsd-386-cgo), const BPF_MEM ideal-int pkg syscall (freebsd-386-cgo), const BPF_MEMWORDS ideal-int pkg syscall (freebsd-386-cgo), const BPF_MINBUFSIZE ideal-int pkg syscall (freebsd-386-cgo), const BPF_MINOR_VERSION ideal-int pkg syscall (freebsd-386-cgo), const BPF_MISC ideal-int pkg syscall (freebsd-386-cgo), const BPF_MSH ideal-int pkg syscall (freebsd-386-cgo), const BPF_MUL ideal-int pkg syscall (freebsd-386-cgo), const BPF_NEG ideal-int pkg syscall (freebsd-386-cgo), const BPF_OR ideal-int pkg syscall (freebsd-386-cgo), const BPF_RELEASE ideal-int pkg syscall (freebsd-386-cgo), const BPF_RET ideal-int pkg syscall (freebsd-386-cgo), const BPF_RSH ideal-int pkg syscall (freebsd-386-cgo), const BPF_ST ideal-int pkg syscall (freebsd-386-cgo), const BPF_STX ideal-int pkg syscall (freebsd-386-cgo), const BPF_SUB ideal-int pkg syscall (freebsd-386-cgo), const BPF_TAX ideal-int pkg syscall (freebsd-386-cgo), const BPF_TXA ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_BINTIME ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_BINTIME_FAST ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_BINTIME_MONOTONIC ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_BINTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_FAST ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_FLAG_MASK ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_FORMAT_MASK ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_MICROTIME ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_MICROTIME_FAST ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_MICROTIME_MONOTONIC ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_MICROTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_MONOTONIC ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_MONOTONIC_FAST ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_NANOTIME ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_NANOTIME_FAST ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_NANOTIME_MONOTONIC ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_NANOTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_NONE ideal-int pkg syscall (freebsd-386-cgo), const BPF_T_NORMAL ideal-int pkg syscall (freebsd-386-cgo), const BPF_W ideal-int pkg syscall (freebsd-386-cgo), const BPF_X ideal-int pkg syscall (freebsd-386-cgo), const BRKINT ideal-int pkg syscall (freebsd-386-cgo), const CFLUSH ideal-int pkg syscall (freebsd-386-cgo), const CLOCAL ideal-int pkg syscall (freebsd-386-cgo), const CREAD ideal-int pkg syscall (freebsd-386-cgo), const CS5 ideal-int pkg syscall (freebsd-386-cgo), const CS6 ideal-int pkg syscall (freebsd-386-cgo), const CS7 ideal-int pkg syscall (freebsd-386-cgo), const CS8 ideal-int pkg syscall (freebsd-386-cgo), const CSIZE ideal-int pkg syscall (freebsd-386-cgo), const CSTART ideal-int pkg syscall (freebsd-386-cgo), const CSTATUS ideal-int pkg syscall (freebsd-386-cgo), const CSTOP ideal-int pkg syscall (freebsd-386-cgo), const CSTOPB ideal-int pkg syscall (freebsd-386-cgo), const CSUSP ideal-int pkg syscall (freebsd-386-cgo), const CTL_MAXNAME ideal-int pkg syscall (freebsd-386-cgo), const CTL_NET ideal-int pkg syscall (freebsd-386-cgo), const DLT_A429 ideal-int pkg syscall (freebsd-386-cgo), const DLT_A653_ICM ideal-int pkg syscall (freebsd-386-cgo), const DLT_AIRONET_HEADER ideal-int pkg syscall (freebsd-386-cgo), const DLT_AOS ideal-int pkg syscall (freebsd-386-cgo), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (freebsd-386-cgo), const DLT_ARCNET ideal-int pkg syscall (freebsd-386-cgo), const DLT_ARCNET_LINUX ideal-int pkg syscall (freebsd-386-cgo), const DLT_ATM_CLIP ideal-int pkg syscall (freebsd-386-cgo), const DLT_ATM_RFC1483 ideal-int pkg syscall (freebsd-386-cgo), const DLT_AURORA ideal-int pkg syscall (freebsd-386-cgo), const DLT_AX25 ideal-int pkg syscall (freebsd-386-cgo), const DLT_AX25_KISS ideal-int pkg syscall (freebsd-386-cgo), const DLT_BACNET_MS_TP ideal-int pkg syscall (freebsd-386-cgo), const DLT_BLUETOOTH_HCI_H4 ideal-int pkg syscall (freebsd-386-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int pkg syscall (freebsd-386-cgo), const DLT_CAN20B ideal-int pkg syscall (freebsd-386-cgo), const DLT_CAN_SOCKETCAN ideal-int pkg syscall (freebsd-386-cgo), const DLT_CHAOS ideal-int pkg syscall (freebsd-386-cgo), const DLT_CHDLC ideal-int pkg syscall (freebsd-386-cgo), const DLT_CISCO_IOS ideal-int pkg syscall (freebsd-386-cgo), const DLT_C_HDLC ideal-int pkg syscall (freebsd-386-cgo), const DLT_C_HDLC_WITH_DIR ideal-int pkg syscall (freebsd-386-cgo), const DLT_DBUS ideal-int pkg syscall (freebsd-386-cgo), const DLT_DECT ideal-int pkg syscall (freebsd-386-cgo), const DLT_DOCSIS ideal-int pkg syscall (freebsd-386-cgo), const DLT_DVB_CI ideal-int pkg syscall (freebsd-386-cgo), const DLT_ECONET ideal-int pkg syscall (freebsd-386-cgo), const DLT_EN10MB ideal-int pkg syscall (freebsd-386-cgo), const DLT_EN3MB ideal-int pkg syscall (freebsd-386-cgo), const DLT_ENC ideal-int pkg syscall (freebsd-386-cgo), const DLT_ERF ideal-int pkg syscall (freebsd-386-cgo), const DLT_ERF_ETH ideal-int pkg syscall (freebsd-386-cgo), const DLT_ERF_POS ideal-int pkg syscall (freebsd-386-cgo), const DLT_FC_2 ideal-int pkg syscall (freebsd-386-cgo), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int pkg syscall (freebsd-386-cgo), const DLT_FDDI ideal-int pkg syscall (freebsd-386-cgo), const DLT_FLEXRAY ideal-int pkg syscall (freebsd-386-cgo), const DLT_FRELAY ideal-int pkg syscall (freebsd-386-cgo), const DLT_FRELAY_WITH_DIR ideal-int pkg syscall (freebsd-386-cgo), const DLT_GCOM_SERIAL ideal-int pkg syscall (freebsd-386-cgo), const DLT_GCOM_T1E1 ideal-int pkg syscall (freebsd-386-cgo), const DLT_GPF_F ideal-int pkg syscall (freebsd-386-cgo), const DLT_GPF_T ideal-int pkg syscall (freebsd-386-cgo), const DLT_GPRS_LLC ideal-int pkg syscall (freebsd-386-cgo), const DLT_GSMTAP_ABIS ideal-int pkg syscall (freebsd-386-cgo), const DLT_GSMTAP_UM ideal-int pkg syscall (freebsd-386-cgo), const DLT_HHDLC ideal-int pkg syscall (freebsd-386-cgo), const DLT_IBM_SN ideal-int pkg syscall (freebsd-386-cgo), const DLT_IBM_SP ideal-int pkg syscall (freebsd-386-cgo), const DLT_IEEE802 ideal-int pkg syscall (freebsd-386-cgo), const DLT_IEEE802_11 ideal-int pkg syscall (freebsd-386-cgo), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (freebsd-386-cgo), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (freebsd-386-cgo), const DLT_IEEE802_15_4 ideal-int pkg syscall (freebsd-386-cgo), const DLT_IEEE802_15_4_LINUX ideal-int pkg syscall (freebsd-386-cgo), const DLT_IEEE802_15_4_NOFCS ideal-int pkg syscall (freebsd-386-cgo), const DLT_IEEE802_15_4_NONASK_PHY ideal-int pkg syscall (freebsd-386-cgo), const DLT_IEEE802_16_MAC_CPS ideal-int pkg syscall (freebsd-386-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int pkg syscall (freebsd-386-cgo), const DLT_IPFILTER ideal-int pkg syscall (freebsd-386-cgo), const DLT_IPMB ideal-int pkg syscall (freebsd-386-cgo), const DLT_IPMB_LINUX ideal-int pkg syscall (freebsd-386-cgo), const DLT_IPNET ideal-int pkg syscall (freebsd-386-cgo), const DLT_IPOIB ideal-int pkg syscall (freebsd-386-cgo), const DLT_IPV4 ideal-int pkg syscall (freebsd-386-cgo), const DLT_IPV6 ideal-int pkg syscall (freebsd-386-cgo), const DLT_IP_OVER_FC ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_ATM1 ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_ATM2 ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_ATM_CEMIC ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_CHDLC ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_ES ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_ETHER ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_FIBRECHANNEL ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_FRELAY ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_GGSN ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_ISM ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_MFR ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_MLFR ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_MLPPP ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_MONITOR ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_PIC_PEER ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_PPP ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_PPPOE ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_PPPOE_ATM ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_SERVICES ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_SRX_E2E ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_ST ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_VP ideal-int pkg syscall (freebsd-386-cgo), const DLT_JUNIPER_VS ideal-int pkg syscall (freebsd-386-cgo), const DLT_LAPB_WITH_DIR ideal-int pkg syscall (freebsd-386-cgo), const DLT_LAPD ideal-int pkg syscall (freebsd-386-cgo), const DLT_LIN ideal-int pkg syscall (freebsd-386-cgo), const DLT_LINUX_EVDEV ideal-int pkg syscall (freebsd-386-cgo), const DLT_LINUX_IRDA ideal-int pkg syscall (freebsd-386-cgo), const DLT_LINUX_LAPD ideal-int pkg syscall (freebsd-386-cgo), const DLT_LINUX_PPP_WITHDIRECTION ideal-int pkg syscall (freebsd-386-cgo), const DLT_LINUX_SLL ideal-int pkg syscall (freebsd-386-cgo), const DLT_LOOP ideal-int pkg syscall (freebsd-386-cgo), const DLT_LTALK ideal-int pkg syscall (freebsd-386-cgo), const DLT_MATCHING_MAX ideal-int pkg syscall (freebsd-386-cgo), const DLT_MATCHING_MIN ideal-int pkg syscall (freebsd-386-cgo), const DLT_MFR ideal-int pkg syscall (freebsd-386-cgo), const DLT_MOST ideal-int pkg syscall (freebsd-386-cgo), const DLT_MPLS ideal-int pkg syscall (freebsd-386-cgo), const DLT_MTP2 ideal-int pkg syscall (freebsd-386-cgo), const DLT_MTP2_WITH_PHDR ideal-int pkg syscall (freebsd-386-cgo), const DLT_MTP3 ideal-int pkg syscall (freebsd-386-cgo), const DLT_MUX27010 ideal-int pkg syscall (freebsd-386-cgo), const DLT_NETANALYZER ideal-int pkg syscall (freebsd-386-cgo), const DLT_NETANALYZER_TRANSPARENT ideal-int pkg syscall (freebsd-386-cgo), const DLT_NFLOG ideal-int pkg syscall (freebsd-386-cgo), const DLT_NULL ideal-int pkg syscall (freebsd-386-cgo), const DLT_PCI_EXP ideal-int pkg syscall (freebsd-386-cgo), const DLT_PFLOG ideal-int pkg syscall (freebsd-386-cgo), const DLT_PFSYNC ideal-int pkg syscall (freebsd-386-cgo), const DLT_PPI ideal-int pkg syscall (freebsd-386-cgo), const DLT_PPP ideal-int pkg syscall (freebsd-386-cgo), const DLT_PPP_BSDOS ideal-int pkg syscall (freebsd-386-cgo), const DLT_PPP_ETHER ideal-int pkg syscall (freebsd-386-cgo), const DLT_PPP_PPPD ideal-int pkg syscall (freebsd-386-cgo), const DLT_PPP_SERIAL ideal-int pkg syscall (freebsd-386-cgo), const DLT_PPP_WITH_DIR ideal-int pkg syscall (freebsd-386-cgo), const DLT_PPP_WITH_DIRECTION ideal-int pkg syscall (freebsd-386-cgo), const DLT_PRISM_HEADER ideal-int pkg syscall (freebsd-386-cgo), const DLT_PRONET ideal-int pkg syscall (freebsd-386-cgo), const DLT_RAIF1 ideal-int pkg syscall (freebsd-386-cgo), const DLT_RAW ideal-int pkg syscall (freebsd-386-cgo), const DLT_RIO ideal-int pkg syscall (freebsd-386-cgo), const DLT_SCCP ideal-int pkg syscall (freebsd-386-cgo), const DLT_SITA ideal-int pkg syscall (freebsd-386-cgo), const DLT_SLIP ideal-int pkg syscall (freebsd-386-cgo), const DLT_SLIP_BSDOS ideal-int pkg syscall (freebsd-386-cgo), const DLT_STANAG_5066_D_PDU ideal-int pkg syscall (freebsd-386-cgo), const DLT_SUNATM ideal-int pkg syscall (freebsd-386-cgo), const DLT_SYMANTEC_FIREWALL ideal-int pkg syscall (freebsd-386-cgo), const DLT_TZSP ideal-int pkg syscall (freebsd-386-cgo), const DLT_USB ideal-int pkg syscall (freebsd-386-cgo), const DLT_USB_LINUX ideal-int pkg syscall (freebsd-386-cgo), const DLT_USB_LINUX_MMAPPED ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER0 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER1 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER10 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER11 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER12 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER13 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER14 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER15 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER2 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER3 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER4 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER5 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER6 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER7 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER8 ideal-int pkg syscall (freebsd-386-cgo), const DLT_USER9 ideal-int pkg syscall (freebsd-386-cgo), const DLT_WIHART ideal-int pkg syscall (freebsd-386-cgo), const DLT_X2E_SERIAL ideal-int pkg syscall (freebsd-386-cgo), const DLT_X2E_XORAYA ideal-int pkg syscall (freebsd-386-cgo), const DT_BLK ideal-int pkg syscall (freebsd-386-cgo), const DT_CHR ideal-int pkg syscall (freebsd-386-cgo), const DT_DIR ideal-int pkg syscall (freebsd-386-cgo), const DT_FIFO ideal-int pkg syscall (freebsd-386-cgo), const DT_LNK ideal-int pkg syscall (freebsd-386-cgo), const DT_REG ideal-int pkg syscall (freebsd-386-cgo), const DT_SOCK ideal-int pkg syscall (freebsd-386-cgo), const DT_UNKNOWN ideal-int pkg syscall (freebsd-386-cgo), const DT_WHT ideal-int pkg syscall (freebsd-386-cgo), const EAUTH Errno pkg syscall (freebsd-386-cgo), const EBADMSG Errno pkg syscall (freebsd-386-cgo), const EBADRPC Errno pkg syscall (freebsd-386-cgo), const ECAPMODE Errno pkg syscall (freebsd-386-cgo), const ECHO ideal-int pkg syscall (freebsd-386-cgo), const ECHOCTL ideal-int pkg syscall (freebsd-386-cgo), const ECHOE ideal-int pkg syscall (freebsd-386-cgo), const ECHOK ideal-int pkg syscall (freebsd-386-cgo), const ECHOKE ideal-int pkg syscall (freebsd-386-cgo), const ECHONL ideal-int pkg syscall (freebsd-386-cgo), const ECHOPRT ideal-int pkg syscall (freebsd-386-cgo), const EDOOFUS Errno pkg syscall (freebsd-386-cgo), const EFTYPE Errno pkg syscall (freebsd-386-cgo), const ELAST Errno pkg syscall (freebsd-386-cgo), const EMULTIHOP Errno pkg syscall (freebsd-386-cgo), const ENEEDAUTH Errno pkg syscall (freebsd-386-cgo), const ENOATTR Errno pkg syscall (freebsd-386-cgo), const ENOLINK Errno pkg syscall (freebsd-386-cgo), const ENOTCAPABLE Errno pkg syscall (freebsd-386-cgo), const EPROCLIM Errno pkg syscall (freebsd-386-cgo), const EPROCUNAVAIL Errno pkg syscall (freebsd-386-cgo), const EPROGMISMATCH Errno pkg syscall (freebsd-386-cgo), const EPROGUNAVAIL Errno pkg syscall (freebsd-386-cgo), const EPROTO Errno pkg syscall (freebsd-386-cgo), const ERPCMISMATCH Errno pkg syscall (freebsd-386-cgo), const EVFILT_AIO ideal-int pkg syscall (freebsd-386-cgo), const EVFILT_FS ideal-int pkg syscall (freebsd-386-cgo), const EVFILT_LIO ideal-int pkg syscall (freebsd-386-cgo), const EVFILT_PROC ideal-int pkg syscall (freebsd-386-cgo), const EVFILT_READ ideal-int pkg syscall (freebsd-386-cgo), const EVFILT_SIGNAL ideal-int pkg syscall (freebsd-386-cgo), const EVFILT_SYSCOUNT ideal-int pkg syscall (freebsd-386-cgo), const EVFILT_TIMER ideal-int pkg syscall (freebsd-386-cgo), const EVFILT_USER ideal-int pkg syscall (freebsd-386-cgo), const EVFILT_VNODE ideal-int pkg syscall (freebsd-386-cgo), const EVFILT_WRITE ideal-int pkg syscall (freebsd-386-cgo), const EV_ADD ideal-int pkg syscall (freebsd-386-cgo), const EV_CLEAR ideal-int pkg syscall (freebsd-386-cgo), const EV_DELETE ideal-int pkg syscall (freebsd-386-cgo), const EV_DISABLE ideal-int pkg syscall (freebsd-386-cgo), const EV_DISPATCH ideal-int pkg syscall (freebsd-386-cgo), const EV_ENABLE ideal-int pkg syscall (freebsd-386-cgo), const EV_EOF ideal-int pkg syscall (freebsd-386-cgo), const EV_ERROR ideal-int pkg syscall (freebsd-386-cgo), const EV_FLAG1 ideal-int pkg syscall (freebsd-386-cgo), const EV_ONESHOT ideal-int pkg syscall (freebsd-386-cgo), const EV_RECEIPT ideal-int pkg syscall (freebsd-386-cgo), const EV_SYSFLAGS ideal-int pkg syscall (freebsd-386-cgo), const EXTA ideal-int pkg syscall (freebsd-386-cgo), const EXTB ideal-int pkg syscall (freebsd-386-cgo), const EXTPROC ideal-int pkg syscall (freebsd-386-cgo), const FD_CLOEXEC ideal-int pkg syscall (freebsd-386-cgo), const FD_SETSIZE ideal-int pkg syscall (freebsd-386-cgo), const FLUSHO ideal-int pkg syscall (freebsd-386-cgo), const F_CANCEL ideal-int pkg syscall (freebsd-386-cgo), const F_DUP2FD ideal-int pkg syscall (freebsd-386-cgo), const F_DUP2FD_CLOEXEC = 18 pkg syscall (freebsd-386-cgo), const F_DUP2FD_CLOEXEC ideal-int pkg syscall (freebsd-386-cgo), const F_DUPFD ideal-int pkg syscall (freebsd-386-cgo), const F_DUPFD_CLOEXEC = 17 pkg syscall (freebsd-386-cgo), const F_DUPFD_CLOEXEC ideal-int pkg syscall (freebsd-386-cgo), const F_GETFD ideal-int pkg syscall (freebsd-386-cgo), const F_GETFL ideal-int pkg syscall (freebsd-386-cgo), const F_GETLK ideal-int pkg syscall (freebsd-386-cgo), const F_GETOWN ideal-int pkg syscall (freebsd-386-cgo), const F_OGETLK ideal-int pkg syscall (freebsd-386-cgo), const F_OK ideal-int pkg syscall (freebsd-386-cgo), const F_OSETLK ideal-int pkg syscall (freebsd-386-cgo), const F_OSETLKW ideal-int pkg syscall (freebsd-386-cgo), const F_RDAHEAD ideal-int pkg syscall (freebsd-386-cgo), const F_RDLCK ideal-int pkg syscall (freebsd-386-cgo), const F_READAHEAD ideal-int pkg syscall (freebsd-386-cgo), const F_SETFD ideal-int pkg syscall (freebsd-386-cgo), const F_SETFL ideal-int pkg syscall (freebsd-386-cgo), const F_SETLK ideal-int pkg syscall (freebsd-386-cgo), const F_SETLKW ideal-int pkg syscall (freebsd-386-cgo), const F_SETLK_REMOTE ideal-int pkg syscall (freebsd-386-cgo), const F_SETOWN ideal-int pkg syscall (freebsd-386-cgo), const F_UNLCK ideal-int pkg syscall (freebsd-386-cgo), const F_UNLCKSYS ideal-int pkg syscall (freebsd-386-cgo), const F_WRLCK ideal-int pkg syscall (freebsd-386-cgo), const HUPCL ideal-int pkg syscall (freebsd-386-cgo), const ICANON ideal-int pkg syscall (freebsd-386-cgo), const ICMP6_FILTER = 18 pkg syscall (freebsd-386-cgo), const ICMP6_FILTER ideal-int pkg syscall (freebsd-386-cgo), const ICRNL ideal-int pkg syscall (freebsd-386-cgo), const IEXTEN ideal-int pkg syscall (freebsd-386-cgo), const IFAN_ARRIVAL ideal-int pkg syscall (freebsd-386-cgo), const IFAN_DEPARTURE ideal-int pkg syscall (freebsd-386-cgo), const IFF_ALLMULTI ideal-int pkg syscall (freebsd-386-cgo), const IFF_ALTPHYS ideal-int pkg syscall (freebsd-386-cgo), const IFF_CANTCHANGE ideal-int pkg syscall (freebsd-386-cgo), const IFF_CANTCONFIG ideal-int pkg syscall (freebsd-386-cgo), const IFF_DEBUG ideal-int pkg syscall (freebsd-386-cgo), const IFF_DRV_OACTIVE ideal-int pkg syscall (freebsd-386-cgo), const IFF_DRV_RUNNING ideal-int pkg syscall (freebsd-386-cgo), const IFF_DYING ideal-int pkg syscall (freebsd-386-cgo), const IFF_LINK0 ideal-int pkg syscall (freebsd-386-cgo), const IFF_LINK1 ideal-int pkg syscall (freebsd-386-cgo), const IFF_LINK2 ideal-int pkg syscall (freebsd-386-cgo), const IFF_MONITOR ideal-int pkg syscall (freebsd-386-cgo), const IFF_NOARP ideal-int pkg syscall (freebsd-386-cgo), const IFF_OACTIVE ideal-int pkg syscall (freebsd-386-cgo), const IFF_POINTOPOINT ideal-int pkg syscall (freebsd-386-cgo), const IFF_PPROMISC ideal-int pkg syscall (freebsd-386-cgo), const IFF_PROMISC ideal-int pkg syscall (freebsd-386-cgo), const IFF_RENAMING ideal-int pkg syscall (freebsd-386-cgo), const IFF_RUNNING ideal-int pkg syscall (freebsd-386-cgo), const IFF_SIMPLEX ideal-int pkg syscall (freebsd-386-cgo), const IFF_SMART ideal-int pkg syscall (freebsd-386-cgo), const IFF_STATICARP ideal-int pkg syscall (freebsd-386-cgo), const IFNAMSIZ ideal-int pkg syscall (freebsd-386-cgo), const IFT_1822 ideal-int pkg syscall (freebsd-386-cgo), const IFT_A12MPPSWITCH ideal-int pkg syscall (freebsd-386-cgo), const IFT_AAL2 ideal-int pkg syscall (freebsd-386-cgo), const IFT_AAL5 ideal-int pkg syscall (freebsd-386-cgo), const IFT_ADSL ideal-int pkg syscall (freebsd-386-cgo), const IFT_AFLANE8023 ideal-int pkg syscall (freebsd-386-cgo), const IFT_AFLANE8025 ideal-int pkg syscall (freebsd-386-cgo), const IFT_ARAP ideal-int pkg syscall (freebsd-386-cgo), const IFT_ARCNET ideal-int pkg syscall (freebsd-386-cgo), const IFT_ARCNETPLUS ideal-int pkg syscall (freebsd-386-cgo), const IFT_ASYNC ideal-int pkg syscall (freebsd-386-cgo), const IFT_ATM ideal-int pkg syscall (freebsd-386-cgo), const IFT_ATMDXI ideal-int pkg syscall (freebsd-386-cgo), const IFT_ATMFUNI ideal-int pkg syscall (freebsd-386-cgo), const IFT_ATMIMA ideal-int pkg syscall (freebsd-386-cgo), const IFT_ATMLOGICAL ideal-int pkg syscall (freebsd-386-cgo), const IFT_ATMRADIO ideal-int pkg syscall (freebsd-386-cgo), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (freebsd-386-cgo), const IFT_ATMVCIENDPT ideal-int pkg syscall (freebsd-386-cgo), const IFT_ATMVIRTUAL ideal-int pkg syscall (freebsd-386-cgo), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (freebsd-386-cgo), const IFT_BRIDGE ideal-int pkg syscall (freebsd-386-cgo), const IFT_BSC ideal-int pkg syscall (freebsd-386-cgo), const IFT_CARP ideal-int pkg syscall (freebsd-386-cgo), const IFT_CCTEMUL ideal-int pkg syscall (freebsd-386-cgo), const IFT_CEPT ideal-int pkg syscall (freebsd-386-cgo), const IFT_CES ideal-int pkg syscall (freebsd-386-cgo), const IFT_CHANNEL ideal-int pkg syscall (freebsd-386-cgo), const IFT_CNR ideal-int pkg syscall (freebsd-386-cgo), const IFT_COFFEE ideal-int pkg syscall (freebsd-386-cgo), const IFT_COMPOSITELINK ideal-int pkg syscall (freebsd-386-cgo), const IFT_DCN ideal-int pkg syscall (freebsd-386-cgo), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (freebsd-386-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (freebsd-386-cgo), const IFT_DLSW ideal-int pkg syscall (freebsd-386-cgo), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (freebsd-386-cgo), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (freebsd-386-cgo), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (freebsd-386-cgo), const IFT_DS0 ideal-int pkg syscall (freebsd-386-cgo), const IFT_DS0BUNDLE ideal-int pkg syscall (freebsd-386-cgo), const IFT_DS1FDL ideal-int pkg syscall (freebsd-386-cgo), const IFT_DS3 ideal-int pkg syscall (freebsd-386-cgo), const IFT_DTM ideal-int pkg syscall (freebsd-386-cgo), const IFT_DVBASILN ideal-int pkg syscall (freebsd-386-cgo), const IFT_DVBASIOUT ideal-int pkg syscall (freebsd-386-cgo), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (freebsd-386-cgo), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (freebsd-386-cgo), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (freebsd-386-cgo), const IFT_ENC ideal-int pkg syscall (freebsd-386-cgo), const IFT_EON ideal-int pkg syscall (freebsd-386-cgo), const IFT_EPLRS ideal-int pkg syscall (freebsd-386-cgo), const IFT_ESCON ideal-int pkg syscall (freebsd-386-cgo), const IFT_ETHER ideal-int pkg syscall (freebsd-386-cgo), const IFT_FAITH ideal-int pkg syscall (freebsd-386-cgo), const IFT_FAST ideal-int pkg syscall (freebsd-386-cgo), const IFT_FASTETHER ideal-int pkg syscall (freebsd-386-cgo), const IFT_FASTETHERFX ideal-int pkg syscall (freebsd-386-cgo), const IFT_FDDI ideal-int pkg syscall (freebsd-386-cgo), const IFT_FIBRECHANNEL ideal-int pkg syscall (freebsd-386-cgo), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (freebsd-386-cgo), const IFT_FRAMERELAYMPI ideal-int pkg syscall (freebsd-386-cgo), const IFT_FRDLCIENDPT ideal-int pkg syscall (freebsd-386-cgo), const IFT_FRELAY ideal-int pkg syscall (freebsd-386-cgo), const IFT_FRELAYDCE ideal-int pkg syscall (freebsd-386-cgo), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (freebsd-386-cgo), const IFT_FRFORWARD ideal-int pkg syscall (freebsd-386-cgo), const IFT_G703AT2MB ideal-int pkg syscall (freebsd-386-cgo), const IFT_G703AT64K ideal-int pkg syscall (freebsd-386-cgo), const IFT_GIF ideal-int pkg syscall (freebsd-386-cgo), const IFT_GIGABITETHERNET ideal-int pkg syscall (freebsd-386-cgo), const IFT_GR303IDT ideal-int pkg syscall (freebsd-386-cgo), const IFT_GR303RDT ideal-int pkg syscall (freebsd-386-cgo), const IFT_H323GATEKEEPER ideal-int pkg syscall (freebsd-386-cgo), const IFT_H323PROXY ideal-int pkg syscall (freebsd-386-cgo), const IFT_HDH1822 ideal-int pkg syscall (freebsd-386-cgo), const IFT_HDLC ideal-int pkg syscall (freebsd-386-cgo), const IFT_HDSL2 ideal-int pkg syscall (freebsd-386-cgo), const IFT_HIPERLAN2 ideal-int pkg syscall (freebsd-386-cgo), const IFT_HIPPI ideal-int pkg syscall (freebsd-386-cgo), const IFT_HIPPIINTERFACE ideal-int pkg syscall (freebsd-386-cgo), const IFT_HOSTPAD ideal-int pkg syscall (freebsd-386-cgo), const IFT_HSSI ideal-int pkg syscall (freebsd-386-cgo), const IFT_HY ideal-int pkg syscall (freebsd-386-cgo), const IFT_IBM370PARCHAN ideal-int pkg syscall (freebsd-386-cgo), const IFT_IDSL ideal-int pkg syscall (freebsd-386-cgo), const IFT_IEEE1394 ideal-int pkg syscall (freebsd-386-cgo), const IFT_IEEE80211 ideal-int pkg syscall (freebsd-386-cgo), const IFT_IEEE80212 ideal-int pkg syscall (freebsd-386-cgo), const IFT_IEEE8023ADLAG ideal-int pkg syscall (freebsd-386-cgo), const IFT_IFGSN ideal-int pkg syscall (freebsd-386-cgo), const IFT_IMT ideal-int pkg syscall (freebsd-386-cgo), const IFT_INFINIBAND ideal-int pkg syscall (freebsd-386-cgo), const IFT_INTERLEAVE ideal-int pkg syscall (freebsd-386-cgo), const IFT_IP ideal-int pkg syscall (freebsd-386-cgo), const IFT_IPFORWARD ideal-int pkg syscall (freebsd-386-cgo), const IFT_IPOVERATM ideal-int pkg syscall (freebsd-386-cgo), const IFT_IPOVERCDLC ideal-int pkg syscall (freebsd-386-cgo), const IFT_IPOVERCLAW ideal-int pkg syscall (freebsd-386-cgo), const IFT_IPSWITCH ideal-int pkg syscall (freebsd-386-cgo), const IFT_IPXIP ideal-int pkg syscall (freebsd-386-cgo), const IFT_ISDN ideal-int pkg syscall (freebsd-386-cgo), const IFT_ISDNBASIC ideal-int pkg syscall (freebsd-386-cgo), const IFT_ISDNPRIMARY ideal-int pkg syscall (freebsd-386-cgo), const IFT_ISDNS ideal-int pkg syscall (freebsd-386-cgo), const IFT_ISDNU ideal-int pkg syscall (freebsd-386-cgo), const IFT_ISO88022LLC ideal-int pkg syscall (freebsd-386-cgo), const IFT_ISO88023 ideal-int pkg syscall (freebsd-386-cgo), const IFT_ISO88024 ideal-int pkg syscall (freebsd-386-cgo), const IFT_ISO88025 ideal-int pkg syscall (freebsd-386-cgo), const IFT_ISO88025CRFPINT ideal-int pkg syscall (freebsd-386-cgo), const IFT_ISO88025DTR ideal-int pkg syscall (freebsd-386-cgo), const IFT_ISO88025FIBER ideal-int pkg syscall (freebsd-386-cgo), const IFT_ISO88026 ideal-int pkg syscall (freebsd-386-cgo), const IFT_ISUP ideal-int pkg syscall (freebsd-386-cgo), const IFT_L2VLAN ideal-int pkg syscall (freebsd-386-cgo), const IFT_L3IPVLAN ideal-int pkg syscall (freebsd-386-cgo), const IFT_L3IPXVLAN ideal-int pkg syscall (freebsd-386-cgo), const IFT_LAPB ideal-int pkg syscall (freebsd-386-cgo), const IFT_LAPD ideal-int pkg syscall (freebsd-386-cgo), const IFT_LAPF ideal-int pkg syscall (freebsd-386-cgo), const IFT_LOCALTALK ideal-int pkg syscall (freebsd-386-cgo), const IFT_LOOP ideal-int pkg syscall (freebsd-386-cgo), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (freebsd-386-cgo), const IFT_MFSIGLINK ideal-int pkg syscall (freebsd-386-cgo), const IFT_MIOX25 ideal-int pkg syscall (freebsd-386-cgo), const IFT_MODEM ideal-int pkg syscall (freebsd-386-cgo), const IFT_MPC ideal-int pkg syscall (freebsd-386-cgo), const IFT_MPLS ideal-int pkg syscall (freebsd-386-cgo), const IFT_MPLSTUNNEL ideal-int pkg syscall (freebsd-386-cgo), const IFT_MSDSL ideal-int pkg syscall (freebsd-386-cgo), const IFT_MVL ideal-int pkg syscall (freebsd-386-cgo), const IFT_MYRINET ideal-int pkg syscall (freebsd-386-cgo), const IFT_NFAS ideal-int pkg syscall (freebsd-386-cgo), const IFT_NSIP ideal-int pkg syscall (freebsd-386-cgo), const IFT_OPTICALCHANNEL ideal-int pkg syscall (freebsd-386-cgo), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (freebsd-386-cgo), const IFT_OTHER ideal-int pkg syscall (freebsd-386-cgo), const IFT_P10 ideal-int pkg syscall (freebsd-386-cgo), const IFT_P80 ideal-int pkg syscall (freebsd-386-cgo), const IFT_PARA ideal-int pkg syscall (freebsd-386-cgo), const IFT_PFLOG ideal-int pkg syscall (freebsd-386-cgo), const IFT_PFSYNC ideal-int pkg syscall (freebsd-386-cgo), const IFT_PLC ideal-int pkg syscall (freebsd-386-cgo), const IFT_POS ideal-int pkg syscall (freebsd-386-cgo), const IFT_PPP ideal-int pkg syscall (freebsd-386-cgo), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (freebsd-386-cgo), const IFT_PROPBWAP2MP ideal-int pkg syscall (freebsd-386-cgo), const IFT_PROPCNLS ideal-int pkg syscall (freebsd-386-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (freebsd-386-cgo), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (freebsd-386-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (freebsd-386-cgo), const IFT_PROPMUX ideal-int pkg syscall (freebsd-386-cgo), const IFT_PROPVIRTUAL ideal-int pkg syscall (freebsd-386-cgo), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (freebsd-386-cgo), const IFT_PTPSERIAL ideal-int pkg syscall (freebsd-386-cgo), const IFT_PVC ideal-int pkg syscall (freebsd-386-cgo), const IFT_QLLC ideal-int pkg syscall (freebsd-386-cgo), const IFT_RADIOMAC ideal-int pkg syscall (freebsd-386-cgo), const IFT_RADSL ideal-int pkg syscall (freebsd-386-cgo), const IFT_REACHDSL ideal-int pkg syscall (freebsd-386-cgo), const IFT_RFC1483 ideal-int pkg syscall (freebsd-386-cgo), const IFT_RS232 ideal-int pkg syscall (freebsd-386-cgo), const IFT_RSRB ideal-int pkg syscall (freebsd-386-cgo), const IFT_SDLC ideal-int pkg syscall (freebsd-386-cgo), const IFT_SDSL ideal-int pkg syscall (freebsd-386-cgo), const IFT_SHDSL ideal-int pkg syscall (freebsd-386-cgo), const IFT_SIP ideal-int pkg syscall (freebsd-386-cgo), const IFT_SLIP ideal-int pkg syscall (freebsd-386-cgo), const IFT_SMDSDXI ideal-int pkg syscall (freebsd-386-cgo), const IFT_SMDSICIP ideal-int pkg syscall (freebsd-386-cgo), const IFT_SONET ideal-int pkg syscall (freebsd-386-cgo), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (freebsd-386-cgo), const IFT_SONETPATH ideal-int pkg syscall (freebsd-386-cgo), const IFT_SONETVT ideal-int pkg syscall (freebsd-386-cgo), const IFT_SRP ideal-int pkg syscall (freebsd-386-cgo), const IFT_SS7SIGLINK ideal-int pkg syscall (freebsd-386-cgo), const IFT_STACKTOSTACK ideal-int pkg syscall (freebsd-386-cgo), const IFT_STARLAN ideal-int pkg syscall (freebsd-386-cgo), const IFT_STF ideal-int pkg syscall (freebsd-386-cgo), const IFT_T1 ideal-int pkg syscall (freebsd-386-cgo), const IFT_TDLC ideal-int pkg syscall (freebsd-386-cgo), const IFT_TERMPAD ideal-int pkg syscall (freebsd-386-cgo), const IFT_TR008 ideal-int pkg syscall (freebsd-386-cgo), const IFT_TRANSPHDLC ideal-int pkg syscall (freebsd-386-cgo), const IFT_TUNNEL ideal-int pkg syscall (freebsd-386-cgo), const IFT_ULTRA ideal-int pkg syscall (freebsd-386-cgo), const IFT_USB ideal-int pkg syscall (freebsd-386-cgo), const IFT_V11 ideal-int pkg syscall (freebsd-386-cgo), const IFT_V35 ideal-int pkg syscall (freebsd-386-cgo), const IFT_V36 ideal-int pkg syscall (freebsd-386-cgo), const IFT_V37 ideal-int pkg syscall (freebsd-386-cgo), const IFT_VDSL ideal-int pkg syscall (freebsd-386-cgo), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (freebsd-386-cgo), const IFT_VOICEEM ideal-int pkg syscall (freebsd-386-cgo), const IFT_VOICEENCAP ideal-int pkg syscall (freebsd-386-cgo), const IFT_VOICEFXO ideal-int pkg syscall (freebsd-386-cgo), const IFT_VOICEFXS ideal-int pkg syscall (freebsd-386-cgo), const IFT_VOICEOVERATM ideal-int pkg syscall (freebsd-386-cgo), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (freebsd-386-cgo), const IFT_VOICEOVERIP ideal-int pkg syscall (freebsd-386-cgo), const IFT_X213 ideal-int pkg syscall (freebsd-386-cgo), const IFT_X25 ideal-int pkg syscall (freebsd-386-cgo), const IFT_X25DDN ideal-int pkg syscall (freebsd-386-cgo), const IFT_X25HUNTGROUP ideal-int pkg syscall (freebsd-386-cgo), const IFT_X25MLP ideal-int pkg syscall (freebsd-386-cgo), const IFT_X25PLE ideal-int pkg syscall (freebsd-386-cgo), const IFT_XETHER ideal-int pkg syscall (freebsd-386-cgo), const IGNBRK ideal-int pkg syscall (freebsd-386-cgo), const IGNCR ideal-int pkg syscall (freebsd-386-cgo), const IGNPAR ideal-int pkg syscall (freebsd-386-cgo), const IMAXBEL ideal-int pkg syscall (freebsd-386-cgo), const INLCR ideal-int pkg syscall (freebsd-386-cgo), const INPCK ideal-int pkg syscall (freebsd-386-cgo), const IN_CLASSA_HOST ideal-int pkg syscall (freebsd-386-cgo), const IN_CLASSA_MAX ideal-int pkg syscall (freebsd-386-cgo), const IN_CLASSA_NET ideal-int pkg syscall (freebsd-386-cgo), const IN_CLASSA_NSHIFT ideal-int pkg syscall (freebsd-386-cgo), const IN_CLASSB_HOST ideal-int pkg syscall (freebsd-386-cgo), const IN_CLASSB_MAX ideal-int pkg syscall (freebsd-386-cgo), const IN_CLASSB_NET ideal-int pkg syscall (freebsd-386-cgo), const IN_CLASSB_NSHIFT ideal-int pkg syscall (freebsd-386-cgo), const IN_CLASSC_HOST ideal-int pkg syscall (freebsd-386-cgo), const IN_CLASSC_NET ideal-int pkg syscall (freebsd-386-cgo), const IN_CLASSC_NSHIFT ideal-int pkg syscall (freebsd-386-cgo), const IN_CLASSD_HOST ideal-int pkg syscall (freebsd-386-cgo), const IN_CLASSD_NET ideal-int pkg syscall (freebsd-386-cgo), const IN_CLASSD_NSHIFT ideal-int pkg syscall (freebsd-386-cgo), const IN_LOOPBACKNET ideal-int pkg syscall (freebsd-386-cgo), const IN_RFC3021_MASK ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_3PC ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_ADFS ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_AH ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_AHIP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_APES ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_ARGUS ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_AX25 ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_BHA ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_BLT ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_BRSATMON ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_CARP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_CFTP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_CHAOS ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_CMTP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_CPHB ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_CPNX ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_DDP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_DGP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_DIVERT ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_DONE ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_DSTOPTS ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_EGP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_EMCON ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_ENCAP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_EON ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_ESP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_ETHERIP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_FRAGMENT ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_GGP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_GMTP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_GRE ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_HELLO ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_HMP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_HOPOPTS ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_ICMP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_ICMPV6 ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_IDP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_IDPR ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_IDRP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_IGMP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_IGP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_IGRP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_IL ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_INLSP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_INP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_IPCOMP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_IPCV ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_IPEIP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_IPIP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_IPPC ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_IPV4 ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_IRTP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_KRYPTOLAN ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_LARP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_LEAF1 ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_LEAF2 ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_MAX ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_MAXID ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_MEAS ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_MH ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_MHRP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_MICP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_MOBILE ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_MTP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_MUX ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_ND ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_NHRP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_NONE ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_NSP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_NVPII ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_OLD_DIVERT ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_OSPFIGP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_PFSYNC ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_PGM ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_PIGP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_PIM ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_PRM ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_PUP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_PVP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_RAW ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_RCCMON ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_RDP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_ROUTING ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_RSVP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_RVD ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_SATEXPAK ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_SATMON ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_SCCSP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_SCTP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_SDRP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_SEND ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_SEP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_SKIP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_SPACER ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_SRPC ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_ST ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_SVMTP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_SWIPE ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_TCF ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_TLSP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_TP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_TPXX ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_TRUNK1 ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_TRUNK2 ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_TTP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_VINES ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_VISA ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_VMTP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_WBEXPAK ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_WBMON ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_WSN ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_XNET ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_XTP ideal-int pkg syscall (freebsd-386-cgo), const IPV6_AUTOFLOWLABEL ideal-int pkg syscall (freebsd-386-cgo), const IPV6_BINDANY ideal-int pkg syscall (freebsd-386-cgo), const IPV6_BINDV6ONLY ideal-int pkg syscall (freebsd-386-cgo), const IPV6_CHECKSUM ideal-int pkg syscall (freebsd-386-cgo), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (freebsd-386-cgo), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (freebsd-386-cgo), const IPV6_DEFHLIM ideal-int pkg syscall (freebsd-386-cgo), const IPV6_DONTFRAG ideal-int pkg syscall (freebsd-386-cgo), const IPV6_DSTOPTS ideal-int pkg syscall (freebsd-386-cgo), const IPV6_FAITH ideal-int pkg syscall (freebsd-386-cgo), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (freebsd-386-cgo), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (freebsd-386-cgo), const IPV6_FRAGTTL ideal-int pkg syscall (freebsd-386-cgo), const IPV6_FW_ADD ideal-int pkg syscall (freebsd-386-cgo), const IPV6_FW_DEL ideal-int pkg syscall (freebsd-386-cgo), const IPV6_FW_FLUSH ideal-int pkg syscall (freebsd-386-cgo), const IPV6_FW_GET ideal-int pkg syscall (freebsd-386-cgo), const IPV6_FW_ZERO ideal-int pkg syscall (freebsd-386-cgo), const IPV6_HLIMDEC ideal-int pkg syscall (freebsd-386-cgo), const IPV6_HOPLIMIT ideal-int pkg syscall (freebsd-386-cgo), const IPV6_HOPOPTS ideal-int pkg syscall (freebsd-386-cgo), const IPV6_IPSEC_POLICY ideal-int pkg syscall (freebsd-386-cgo), const IPV6_MAXHLIM ideal-int pkg syscall (freebsd-386-cgo), const IPV6_MAXOPTHDR ideal-int pkg syscall (freebsd-386-cgo), const IPV6_MAXPACKET ideal-int pkg syscall (freebsd-386-cgo), const IPV6_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (freebsd-386-cgo), const IPV6_MAX_MEMBERSHIPS ideal-int pkg syscall (freebsd-386-cgo), const IPV6_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (freebsd-386-cgo), const IPV6_MIN_MEMBERSHIPS ideal-int pkg syscall (freebsd-386-cgo), const IPV6_MMTU ideal-int pkg syscall (freebsd-386-cgo), const IPV6_MSFILTER ideal-int pkg syscall (freebsd-386-cgo), const IPV6_NEXTHOP ideal-int pkg syscall (freebsd-386-cgo), const IPV6_PATHMTU ideal-int pkg syscall (freebsd-386-cgo), const IPV6_PKTINFO ideal-int pkg syscall (freebsd-386-cgo), const IPV6_PORTRANGE ideal-int pkg syscall (freebsd-386-cgo), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (freebsd-386-cgo), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (freebsd-386-cgo), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (freebsd-386-cgo), const IPV6_PREFER_TEMPADDR ideal-int pkg syscall (freebsd-386-cgo), const IPV6_RECVDSTOPTS ideal-int pkg syscall (freebsd-386-cgo), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (freebsd-386-cgo), const IPV6_RECVHOPOPTS ideal-int pkg syscall (freebsd-386-cgo), const IPV6_RECVPATHMTU ideal-int pkg syscall (freebsd-386-cgo), const IPV6_RECVPKTINFO ideal-int pkg syscall (freebsd-386-cgo), const IPV6_RECVRTHDR ideal-int pkg syscall (freebsd-386-cgo), const IPV6_RECVTCLASS ideal-int pkg syscall (freebsd-386-cgo), const IPV6_RTHDR ideal-int pkg syscall (freebsd-386-cgo), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (freebsd-386-cgo), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (freebsd-386-cgo), const IPV6_RTHDR_STRICT ideal-int pkg syscall (freebsd-386-cgo), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (freebsd-386-cgo), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (freebsd-386-cgo), const IPV6_TCLASS ideal-int pkg syscall (freebsd-386-cgo), const IPV6_USE_MIN_MTU ideal-int pkg syscall (freebsd-386-cgo), const IPV6_VERSION ideal-int pkg syscall (freebsd-386-cgo), const IPV6_VERSION_MASK ideal-int pkg syscall (freebsd-386-cgo), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (freebsd-386-cgo), const IP_BINDANY ideal-int pkg syscall (freebsd-386-cgo), const IP_BLOCK_SOURCE ideal-int pkg syscall (freebsd-386-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (freebsd-386-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (freebsd-386-cgo), const IP_DF ideal-int pkg syscall (freebsd-386-cgo), const IP_DONTFRAG ideal-int pkg syscall (freebsd-386-cgo), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (freebsd-386-cgo), const IP_DUMMYNET3 ideal-int pkg syscall (freebsd-386-cgo), const IP_DUMMYNET_CONFIGURE ideal-int pkg syscall (freebsd-386-cgo), const IP_DUMMYNET_DEL ideal-int pkg syscall (freebsd-386-cgo), const IP_DUMMYNET_FLUSH ideal-int pkg syscall (freebsd-386-cgo), const IP_DUMMYNET_GET ideal-int pkg syscall (freebsd-386-cgo), const IP_FAITH ideal-int pkg syscall (freebsd-386-cgo), const IP_FW3 ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_ADD ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_DEL ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_FLUSH ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_GET ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_NAT_CFG ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_NAT_DEL ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_NAT_GET_CONFIG ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_NAT_GET_LOG ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_RESETLOG ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_TABLE_ADD ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_TABLE_DEL ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_TABLE_FLUSH ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_TABLE_GETSIZE ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_TABLE_LIST ideal-int pkg syscall (freebsd-386-cgo), const IP_FW_ZERO ideal-int pkg syscall (freebsd-386-cgo), const IP_HDRINCL ideal-int pkg syscall (freebsd-386-cgo), const IP_IPSEC_POLICY ideal-int pkg syscall (freebsd-386-cgo), const IP_MAXPACKET ideal-int pkg syscall (freebsd-386-cgo), const IP_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (freebsd-386-cgo), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (freebsd-386-cgo), const IP_MAX_SOCK_MUTE_FILTER ideal-int pkg syscall (freebsd-386-cgo), const IP_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (freebsd-386-cgo), const IP_MAX_SOURCE_FILTER ideal-int pkg syscall (freebsd-386-cgo), const IP_MF ideal-int pkg syscall (freebsd-386-cgo), const IP_MINTTL ideal-int pkg syscall (freebsd-386-cgo), const IP_MIN_MEMBERSHIPS ideal-int pkg syscall (freebsd-386-cgo), const IP_MSFILTER ideal-int pkg syscall (freebsd-386-cgo), const IP_MSS ideal-int pkg syscall (freebsd-386-cgo), const IP_MULTICAST_VIF ideal-int pkg syscall (freebsd-386-cgo), const IP_OFFMASK ideal-int pkg syscall (freebsd-386-cgo), const IP_ONESBCAST ideal-int pkg syscall (freebsd-386-cgo), const IP_OPTIONS ideal-int pkg syscall (freebsd-386-cgo), const IP_PORTRANGE ideal-int pkg syscall (freebsd-386-cgo), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (freebsd-386-cgo), const IP_PORTRANGE_HIGH ideal-int pkg syscall (freebsd-386-cgo), const IP_PORTRANGE_LOW ideal-int pkg syscall (freebsd-386-cgo), const IP_RECVDSTADDR ideal-int pkg syscall (freebsd-386-cgo), const IP_RECVIF ideal-int pkg syscall (freebsd-386-cgo), const IP_RECVOPTS ideal-int pkg syscall (freebsd-386-cgo), const IP_RECVRETOPTS ideal-int pkg syscall (freebsd-386-cgo), const IP_RECVTOS ideal-int pkg syscall (freebsd-386-cgo), const IP_RECVTTL ideal-int pkg syscall (freebsd-386-cgo), const IP_RETOPTS ideal-int pkg syscall (freebsd-386-cgo), const IP_RF ideal-int pkg syscall (freebsd-386-cgo), const IP_RSVP_OFF ideal-int pkg syscall (freebsd-386-cgo), const IP_RSVP_ON ideal-int pkg syscall (freebsd-386-cgo), const IP_RSVP_VIF_OFF ideal-int pkg syscall (freebsd-386-cgo), const IP_RSVP_VIF_ON ideal-int pkg syscall (freebsd-386-cgo), const IP_SENDSRCADDR ideal-int pkg syscall (freebsd-386-cgo), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (freebsd-386-cgo), const ISIG ideal-int pkg syscall (freebsd-386-cgo), const ISTRIP ideal-int pkg syscall (freebsd-386-cgo), const IXANY ideal-int pkg syscall (freebsd-386-cgo), const IXOFF ideal-int pkg syscall (freebsd-386-cgo), const IXON ideal-int pkg syscall (freebsd-386-cgo), const LOCK_EX ideal-int pkg syscall (freebsd-386-cgo), const LOCK_NB ideal-int pkg syscall (freebsd-386-cgo), const LOCK_SH ideal-int pkg syscall (freebsd-386-cgo), const LOCK_UN ideal-int pkg syscall (freebsd-386-cgo), const MADV_AUTOSYNC ideal-int pkg syscall (freebsd-386-cgo), const MADV_CORE ideal-int pkg syscall (freebsd-386-cgo), const MADV_DONTNEED ideal-int pkg syscall (freebsd-386-cgo), const MADV_FREE ideal-int pkg syscall (freebsd-386-cgo), const MADV_NOCORE ideal-int pkg syscall (freebsd-386-cgo), const MADV_NORMAL ideal-int pkg syscall (freebsd-386-cgo), const MADV_NOSYNC ideal-int pkg syscall (freebsd-386-cgo), const MADV_PROTECT ideal-int pkg syscall (freebsd-386-cgo), const MADV_RANDOM ideal-int pkg syscall (freebsd-386-cgo), const MADV_SEQUENTIAL ideal-int pkg syscall (freebsd-386-cgo), const MADV_WILLNEED ideal-int pkg syscall (freebsd-386-cgo), const MAP_ANON ideal-int pkg syscall (freebsd-386-cgo), const MAP_ANONYMOUS ideal-int pkg syscall (freebsd-386-cgo), const MAP_COPY ideal-int pkg syscall (freebsd-386-cgo), const MAP_FILE ideal-int pkg syscall (freebsd-386-cgo), const MAP_FIXED ideal-int pkg syscall (freebsd-386-cgo), const MAP_HASSEMAPHORE ideal-int pkg syscall (freebsd-386-cgo), const MAP_NOCORE ideal-int pkg syscall (freebsd-386-cgo), const MAP_NORESERVE ideal-int pkg syscall (freebsd-386-cgo), const MAP_NOSYNC ideal-int pkg syscall (freebsd-386-cgo), const MAP_PREFAULT_READ ideal-int pkg syscall (freebsd-386-cgo), const MAP_PRIVATE ideal-int pkg syscall (freebsd-386-cgo), const MAP_RENAME ideal-int pkg syscall (freebsd-386-cgo), const MAP_RESERVED0080 ideal-int pkg syscall (freebsd-386-cgo), const MAP_RESERVED0100 ideal-int pkg syscall (freebsd-386-cgo), const MAP_SHARED ideal-int pkg syscall (freebsd-386-cgo), const MAP_STACK ideal-int pkg syscall (freebsd-386-cgo), const MCL_CURRENT ideal-int pkg syscall (freebsd-386-cgo), const MCL_FUTURE ideal-int pkg syscall (freebsd-386-cgo), const MSG_COMPAT ideal-int pkg syscall (freebsd-386-cgo), const MSG_CTRUNC ideal-int pkg syscall (freebsd-386-cgo), const MSG_DONTROUTE ideal-int pkg syscall (freebsd-386-cgo), const MSG_DONTWAIT ideal-int pkg syscall (freebsd-386-cgo), const MSG_EOF ideal-int pkg syscall (freebsd-386-cgo), const MSG_EOR ideal-int pkg syscall (freebsd-386-cgo), const MSG_NBIO ideal-int pkg syscall (freebsd-386-cgo), const MSG_NOSIGNAL ideal-int pkg syscall (freebsd-386-cgo), const MSG_NOTIFICATION ideal-int pkg syscall (freebsd-386-cgo), const MSG_OOB ideal-int pkg syscall (freebsd-386-cgo), const MSG_PEEK ideal-int pkg syscall (freebsd-386-cgo), const MSG_TRUNC ideal-int pkg syscall (freebsd-386-cgo), const MSG_WAITALL ideal-int pkg syscall (freebsd-386-cgo), const MS_ASYNC ideal-int pkg syscall (freebsd-386-cgo), const MS_INVALIDATE ideal-int pkg syscall (freebsd-386-cgo), const MS_SYNC ideal-int pkg syscall (freebsd-386-cgo), const NET_RT_DUMP ideal-int pkg syscall (freebsd-386-cgo), const NET_RT_FLAGS ideal-int pkg syscall (freebsd-386-cgo), const NET_RT_IFLIST ideal-int pkg syscall (freebsd-386-cgo), const NET_RT_IFLISTL ideal-int pkg syscall (freebsd-386-cgo), const NET_RT_IFMALIST ideal-int pkg syscall (freebsd-386-cgo), const NET_RT_MAXID ideal-int pkg syscall (freebsd-386-cgo), const NOFLSH ideal-int pkg syscall (freebsd-386-cgo), const NOTE_ATTRIB ideal-int pkg syscall (freebsd-386-cgo), const NOTE_CHILD ideal-int pkg syscall (freebsd-386-cgo), const NOTE_DELETE ideal-int pkg syscall (freebsd-386-cgo), const NOTE_EXEC ideal-int pkg syscall (freebsd-386-cgo), const NOTE_EXIT ideal-int pkg syscall (freebsd-386-cgo), const NOTE_EXTEND ideal-int pkg syscall (freebsd-386-cgo), const NOTE_FFAND ideal-int pkg syscall (freebsd-386-cgo), const NOTE_FFCOPY ideal-int pkg syscall (freebsd-386-cgo), const NOTE_FFCTRLMASK ideal-int pkg syscall (freebsd-386-cgo), const NOTE_FFLAGSMASK ideal-int pkg syscall (freebsd-386-cgo), const NOTE_FFNOP ideal-int pkg syscall (freebsd-386-cgo), const NOTE_FFOR ideal-int pkg syscall (freebsd-386-cgo), const NOTE_FORK ideal-int pkg syscall (freebsd-386-cgo), const NOTE_LINK ideal-int pkg syscall (freebsd-386-cgo), const NOTE_LOWAT ideal-int pkg syscall (freebsd-386-cgo), const NOTE_PCTRLMASK ideal-int pkg syscall (freebsd-386-cgo), const NOTE_PDATAMASK ideal-int pkg syscall (freebsd-386-cgo), const NOTE_RENAME ideal-int pkg syscall (freebsd-386-cgo), const NOTE_REVOKE ideal-int pkg syscall (freebsd-386-cgo), const NOTE_TRACK ideal-int pkg syscall (freebsd-386-cgo), const NOTE_TRACKERR ideal-int pkg syscall (freebsd-386-cgo), const NOTE_TRIGGER ideal-int pkg syscall (freebsd-386-cgo), const NOTE_WRITE ideal-int pkg syscall (freebsd-386-cgo), const OCRNL ideal-int pkg syscall (freebsd-386-cgo), const ONLCR ideal-int pkg syscall (freebsd-386-cgo), const ONLRET ideal-int pkg syscall (freebsd-386-cgo), const ONOCR ideal-int pkg syscall (freebsd-386-cgo), const ONOEOT ideal-int pkg syscall (freebsd-386-cgo), const OPOST ideal-int pkg syscall (freebsd-386-cgo), const O_ACCMODE ideal-int pkg syscall (freebsd-386-cgo), const O_DIRECT ideal-int pkg syscall (freebsd-386-cgo), const O_DIRECTORY ideal-int pkg syscall (freebsd-386-cgo), const O_EXEC ideal-int pkg syscall (freebsd-386-cgo), const O_EXLOCK ideal-int pkg syscall (freebsd-386-cgo), const O_FSYNC ideal-int pkg syscall (freebsd-386-cgo), const O_NDELAY ideal-int pkg syscall (freebsd-386-cgo), const O_NOFOLLOW ideal-int pkg syscall (freebsd-386-cgo), const O_SHLOCK ideal-int pkg syscall (freebsd-386-cgo), const O_TTY_INIT ideal-int pkg syscall (freebsd-386-cgo), const PARENB ideal-int pkg syscall (freebsd-386-cgo), const PARMRK ideal-int pkg syscall (freebsd-386-cgo), const PARODD ideal-int pkg syscall (freebsd-386-cgo), const PENDIN ideal-int pkg syscall (freebsd-386-cgo), const PRIO_PGRP = 1 pkg syscall (freebsd-386-cgo), const PRIO_PGRP ideal-int pkg syscall (freebsd-386-cgo), const PRIO_PROCESS = 0 pkg syscall (freebsd-386-cgo), const PRIO_PROCESS ideal-int pkg syscall (freebsd-386-cgo), const PRIO_USER = 2 pkg syscall (freebsd-386-cgo), const PRIO_USER ideal-int pkg syscall (freebsd-386-cgo), const PROT_EXEC ideal-int pkg syscall (freebsd-386-cgo), const PROT_NONE ideal-int pkg syscall (freebsd-386-cgo), const PROT_READ ideal-int pkg syscall (freebsd-386-cgo), const PROT_WRITE ideal-int pkg syscall (freebsd-386-cgo), const PTRACE_CONT ideal-int pkg syscall (freebsd-386-cgo), const PTRACE_KILL ideal-int pkg syscall (freebsd-386-cgo), const PTRACE_TRACEME ideal-int pkg syscall (freebsd-386-cgo), const RLIMIT_AS ideal-int pkg syscall (freebsd-386-cgo), const RLIMIT_CORE ideal-int pkg syscall (freebsd-386-cgo), const RLIMIT_CPU ideal-int pkg syscall (freebsd-386-cgo), const RLIMIT_DATA ideal-int pkg syscall (freebsd-386-cgo), const RLIMIT_FSIZE ideal-int pkg syscall (freebsd-386-cgo), const RLIMIT_NOFILE ideal-int pkg syscall (freebsd-386-cgo), const RLIMIT_STACK ideal-int pkg syscall (freebsd-386-cgo), const RLIM_INFINITY ideal-int pkg syscall (freebsd-386-cgo), const RTAX_AUTHOR ideal-int pkg syscall (freebsd-386-cgo), const RTAX_BRD ideal-int pkg syscall (freebsd-386-cgo), const RTAX_DST ideal-int pkg syscall (freebsd-386-cgo), const RTAX_GATEWAY ideal-int pkg syscall (freebsd-386-cgo), const RTAX_GENMASK ideal-int pkg syscall (freebsd-386-cgo), const RTAX_IFA ideal-int pkg syscall (freebsd-386-cgo), const RTAX_IFP ideal-int pkg syscall (freebsd-386-cgo), const RTAX_MAX ideal-int pkg syscall (freebsd-386-cgo), const RTAX_NETMASK ideal-int pkg syscall (freebsd-386-cgo), const RTA_AUTHOR ideal-int pkg syscall (freebsd-386-cgo), const RTA_BRD ideal-int pkg syscall (freebsd-386-cgo), const RTA_DST ideal-int pkg syscall (freebsd-386-cgo), const RTA_GATEWAY ideal-int pkg syscall (freebsd-386-cgo), const RTA_GENMASK ideal-int pkg syscall (freebsd-386-cgo), const RTA_IFA ideal-int pkg syscall (freebsd-386-cgo), const RTA_IFP ideal-int pkg syscall (freebsd-386-cgo), const RTA_NETMASK ideal-int pkg syscall (freebsd-386-cgo), const RTF_BLACKHOLE ideal-int pkg syscall (freebsd-386-cgo), const RTF_BROADCAST ideal-int pkg syscall (freebsd-386-cgo), const RTF_DONE ideal-int pkg syscall (freebsd-386-cgo), const RTF_DYNAMIC ideal-int pkg syscall (freebsd-386-cgo), const RTF_FMASK ideal-int pkg syscall (freebsd-386-cgo), const RTF_GATEWAY ideal-int pkg syscall (freebsd-386-cgo), const RTF_HOST ideal-int pkg syscall (freebsd-386-cgo), const RTF_LLDATA ideal-int pkg syscall (freebsd-386-cgo), const RTF_LLINFO ideal-int pkg syscall (freebsd-386-cgo), const RTF_LOCAL ideal-int pkg syscall (freebsd-386-cgo), const RTF_MODIFIED ideal-int pkg syscall (freebsd-386-cgo), const RTF_MULTICAST ideal-int pkg syscall (freebsd-386-cgo), const RTF_PINNED ideal-int pkg syscall (freebsd-386-cgo), const RTF_PRCLONING ideal-int pkg syscall (freebsd-386-cgo), const RTF_PROTO1 ideal-int pkg syscall (freebsd-386-cgo), const RTF_PROTO2 ideal-int pkg syscall (freebsd-386-cgo), const RTF_PROTO3 ideal-int pkg syscall (freebsd-386-cgo), const RTF_REJECT ideal-int pkg syscall (freebsd-386-cgo), const RTF_RNH_LOCKED ideal-int pkg syscall (freebsd-386-cgo), const RTF_STATIC ideal-int pkg syscall (freebsd-386-cgo), const RTF_STICKY ideal-int pkg syscall (freebsd-386-cgo), const RTF_UP ideal-int pkg syscall (freebsd-386-cgo), const RTF_XRESOLVE ideal-int pkg syscall (freebsd-386-cgo), const RTM_ADD ideal-int pkg syscall (freebsd-386-cgo), const RTM_CHANGE ideal-int pkg syscall (freebsd-386-cgo), const RTM_DELADDR ideal-int pkg syscall (freebsd-386-cgo), const RTM_DELETE ideal-int pkg syscall (freebsd-386-cgo), const RTM_DELMADDR ideal-int pkg syscall (freebsd-386-cgo), const RTM_GET ideal-int pkg syscall (freebsd-386-cgo), const RTM_IEEE80211 ideal-int pkg syscall (freebsd-386-cgo), const RTM_IFANNOUNCE ideal-int pkg syscall (freebsd-386-cgo), const RTM_IFINFO ideal-int pkg syscall (freebsd-386-cgo), const RTM_LOCK ideal-int pkg syscall (freebsd-386-cgo), const RTM_LOSING ideal-int pkg syscall (freebsd-386-cgo), const RTM_MISS ideal-int pkg syscall (freebsd-386-cgo), const RTM_NEWADDR ideal-int pkg syscall (freebsd-386-cgo), const RTM_NEWMADDR ideal-int pkg syscall (freebsd-386-cgo), const RTM_OLDADD ideal-int pkg syscall (freebsd-386-cgo), const RTM_OLDDEL ideal-int pkg syscall (freebsd-386-cgo), const RTM_REDIRECT ideal-int pkg syscall (freebsd-386-cgo), const RTM_RESOLVE ideal-int pkg syscall (freebsd-386-cgo), const RTM_RTTUNIT ideal-int pkg syscall (freebsd-386-cgo), const RTM_VERSION ideal-int pkg syscall (freebsd-386-cgo), const RTV_EXPIRE ideal-int pkg syscall (freebsd-386-cgo), const RTV_HOPCOUNT ideal-int pkg syscall (freebsd-386-cgo), const RTV_MTU ideal-int pkg syscall (freebsd-386-cgo), const RTV_RPIPE ideal-int pkg syscall (freebsd-386-cgo), const RTV_RTT ideal-int pkg syscall (freebsd-386-cgo), const RTV_RTTVAR ideal-int pkg syscall (freebsd-386-cgo), const RTV_SPIPE ideal-int pkg syscall (freebsd-386-cgo), const RTV_SSTHRESH ideal-int pkg syscall (freebsd-386-cgo), const RTV_WEIGHT ideal-int pkg syscall (freebsd-386-cgo), const RT_CACHING_CONTEXT ideal-int pkg syscall (freebsd-386-cgo), const RT_DEFAULT_FIB ideal-int pkg syscall (freebsd-386-cgo), const RUSAGE_CHILDREN ideal-int pkg syscall (freebsd-386-cgo), const RUSAGE_SELF ideal-int pkg syscall (freebsd-386-cgo), const RUSAGE_THREAD ideal-int pkg syscall (freebsd-386-cgo), const SCM_BINTIME ideal-int pkg syscall (freebsd-386-cgo), const SCM_CREDS ideal-int pkg syscall (freebsd-386-cgo), const SCM_RIGHTS ideal-int pkg syscall (freebsd-386-cgo), const SCM_TIMESTAMP ideal-int pkg syscall (freebsd-386-cgo), const SIGCHLD Signal pkg syscall (freebsd-386-cgo), const SIGCONT Signal pkg syscall (freebsd-386-cgo), const SIGEMT Signal pkg syscall (freebsd-386-cgo), const SIGINFO Signal pkg syscall (freebsd-386-cgo), const SIGIO Signal pkg syscall (freebsd-386-cgo), const SIGIOT Signal pkg syscall (freebsd-386-cgo), const SIGLWP Signal pkg syscall (freebsd-386-cgo), const SIGPROF Signal pkg syscall (freebsd-386-cgo), const SIGSTOP Signal pkg syscall (freebsd-386-cgo), const SIGSYS Signal pkg syscall (freebsd-386-cgo), const SIGTHR Signal pkg syscall (freebsd-386-cgo), const SIGTSTP Signal pkg syscall (freebsd-386-cgo), const SIGTTIN Signal pkg syscall (freebsd-386-cgo), const SIGTTOU Signal pkg syscall (freebsd-386-cgo), const SIGURG Signal pkg syscall (freebsd-386-cgo), const SIGUSR1 Signal pkg syscall (freebsd-386-cgo), const SIGUSR2 Signal pkg syscall (freebsd-386-cgo), const SIGVTALRM Signal pkg syscall (freebsd-386-cgo), const SIGWINCH Signal pkg syscall (freebsd-386-cgo), const SIGXCPU Signal pkg syscall (freebsd-386-cgo), const SIGXFSZ Signal pkg syscall (freebsd-386-cgo), const SIOCADDMULTI ideal-int pkg syscall (freebsd-386-cgo), const SIOCADDRT ideal-int pkg syscall (freebsd-386-cgo), const SIOCAIFADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCAIFGROUP ideal-int pkg syscall (freebsd-386-cgo), const SIOCALIFADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCATMARK ideal-int pkg syscall (freebsd-386-cgo), const SIOCDELMULTI ideal-int pkg syscall (freebsd-386-cgo), const SIOCDELRT ideal-int pkg syscall (freebsd-386-cgo), const SIOCDIFADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCDIFGROUP ideal-int pkg syscall (freebsd-386-cgo), const SIOCDIFPHYADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCDLIFADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCGDRVSPEC ideal-int pkg syscall (freebsd-386-cgo), const SIOCGETSGCNT ideal-int pkg syscall (freebsd-386-cgo), const SIOCGETVIFCNT ideal-int pkg syscall (freebsd-386-cgo), const SIOCGHIWAT ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFBRDADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFCAP ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFCONF ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFDESCR ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFDSTADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFFIB ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFFLAGS ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFGENERIC ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFGMEMB ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFGROUP ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFINDEX ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFMAC ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFMEDIA ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFMETRIC ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFMTU ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFNETMASK ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFPDSTADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFPHYS ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFPSRCADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCGIFSTATUS ideal-int pkg syscall (freebsd-386-cgo), const SIOCGLIFADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCGLIFPHYADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCGLOWAT ideal-int pkg syscall (freebsd-386-cgo), const SIOCGPGRP ideal-int pkg syscall (freebsd-386-cgo), const SIOCGPRIVATE_0 ideal-int pkg syscall (freebsd-386-cgo), const SIOCGPRIVATE_1 ideal-int pkg syscall (freebsd-386-cgo), const SIOCIFCREATE ideal-int pkg syscall (freebsd-386-cgo), const SIOCIFCREATE2 ideal-int pkg syscall (freebsd-386-cgo), const SIOCIFDESTROY ideal-int pkg syscall (freebsd-386-cgo), const SIOCIFGCLONERS ideal-int pkg syscall (freebsd-386-cgo), const SIOCSDRVSPEC ideal-int pkg syscall (freebsd-386-cgo), const SIOCSHIWAT ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFBRDADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFCAP ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFDESCR ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFDSTADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFFIB ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFFLAGS ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFGENERIC ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFLLADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFMAC ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFMEDIA ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFMETRIC ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFMTU ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFNAME ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFNETMASK ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFPHYADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFPHYS ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFRVNET ideal-int pkg syscall (freebsd-386-cgo), const SIOCSIFVNET ideal-int pkg syscall (freebsd-386-cgo), const SIOCSLIFPHYADDR ideal-int pkg syscall (freebsd-386-cgo), const SIOCSLOWAT ideal-int pkg syscall (freebsd-386-cgo), const SIOCSPGRP ideal-int pkg syscall (freebsd-386-cgo), const SOCK_MAXADDRLEN ideal-int pkg syscall (freebsd-386-cgo), const SOCK_RDM ideal-int pkg syscall (freebsd-386-cgo), const SO_ACCEPTCONN ideal-int pkg syscall (freebsd-386-cgo), const SO_ACCEPTFILTER ideal-int pkg syscall (freebsd-386-cgo), const SO_BINTIME ideal-int pkg syscall (freebsd-386-cgo), const SO_DEBUG ideal-int pkg syscall (freebsd-386-cgo), const SO_ERROR ideal-int pkg syscall (freebsd-386-cgo), const SO_LABEL ideal-int pkg syscall (freebsd-386-cgo), const SO_LISTENINCQLEN ideal-int pkg syscall (freebsd-386-cgo), const SO_LISTENQLEN ideal-int pkg syscall (freebsd-386-cgo), const SO_LISTENQLIMIT ideal-int pkg syscall (freebsd-386-cgo), const SO_NOSIGPIPE ideal-int pkg syscall (freebsd-386-cgo), const SO_NO_DDP ideal-int pkg syscall (freebsd-386-cgo), const SO_NO_OFFLOAD ideal-int pkg syscall (freebsd-386-cgo), const SO_OOBINLINE ideal-int pkg syscall (freebsd-386-cgo), const SO_PEERLABEL ideal-int pkg syscall (freebsd-386-cgo), const SO_PROTOCOL ideal-int pkg syscall (freebsd-386-cgo), const SO_PROTOTYPE ideal-int pkg syscall (freebsd-386-cgo), const SO_RCVLOWAT ideal-int pkg syscall (freebsd-386-cgo), const SO_RCVTIMEO ideal-int pkg syscall (freebsd-386-cgo), const SO_REUSEPORT ideal-int pkg syscall (freebsd-386-cgo), const SO_SETFIB ideal-int pkg syscall (freebsd-386-cgo), const SO_SNDLOWAT ideal-int pkg syscall (freebsd-386-cgo), const SO_SNDTIMEO ideal-int pkg syscall (freebsd-386-cgo), const SO_TIMESTAMP ideal-int pkg syscall (freebsd-386-cgo), const SO_TYPE ideal-int pkg syscall (freebsd-386-cgo), const SO_USELOOPBACK ideal-int pkg syscall (freebsd-386-cgo), const SO_USER_COOKIE ideal-int pkg syscall (freebsd-386-cgo), const SYS_ABORT2 ideal-int pkg syscall (freebsd-386-cgo), const SYS_ACCEPT ideal-int pkg syscall (freebsd-386-cgo), const SYS_ACCESS ideal-int pkg syscall (freebsd-386-cgo), const SYS_ACCT ideal-int pkg syscall (freebsd-386-cgo), const SYS_ADJTIME ideal-int pkg syscall (freebsd-386-cgo), const SYS_AUDIT ideal-int pkg syscall (freebsd-386-cgo), const SYS_AUDITCTL ideal-int pkg syscall (freebsd-386-cgo), const SYS_AUDITON ideal-int pkg syscall (freebsd-386-cgo), const SYS_BIND ideal-int pkg syscall (freebsd-386-cgo), const SYS_CAP_ENTER ideal-int pkg syscall (freebsd-386-cgo), const SYS_CAP_GETMODE ideal-int pkg syscall (freebsd-386-cgo), const SYS_CAP_GETRIGHTS ideal-int pkg syscall (freebsd-386-cgo), const SYS_CAP_NEW ideal-int pkg syscall (freebsd-386-cgo), const SYS_CHDIR ideal-int pkg syscall (freebsd-386-cgo), const SYS_CHFLAGS ideal-int pkg syscall (freebsd-386-cgo), const SYS_CHMOD ideal-int pkg syscall (freebsd-386-cgo), const SYS_CHOWN ideal-int pkg syscall (freebsd-386-cgo), const SYS_CHROOT ideal-int pkg syscall (freebsd-386-cgo), const SYS_CLOCK_GETCPUCLOCKID2 ideal-int pkg syscall (freebsd-386-cgo), const SYS_CLOCK_GETRES ideal-int pkg syscall (freebsd-386-cgo), const SYS_CLOCK_GETTIME ideal-int pkg syscall (freebsd-386-cgo), const SYS_CLOCK_SETTIME ideal-int pkg syscall (freebsd-386-cgo), const SYS_CLOSE ideal-int pkg syscall (freebsd-386-cgo), const SYS_CLOSEFROM ideal-int pkg syscall (freebsd-386-cgo), const SYS_CONNECT ideal-int pkg syscall (freebsd-386-cgo), const SYS_CPUSET ideal-int pkg syscall (freebsd-386-cgo), const SYS_CPUSET_GETAFFINITY ideal-int pkg syscall (freebsd-386-cgo), const SYS_CPUSET_GETID ideal-int pkg syscall (freebsd-386-cgo), const SYS_CPUSET_SETAFFINITY ideal-int pkg syscall (freebsd-386-cgo), const SYS_CPUSET_SETID ideal-int pkg syscall (freebsd-386-cgo), const SYS_DUP ideal-int pkg syscall (freebsd-386-cgo), const SYS_DUP2 ideal-int pkg syscall (freebsd-386-cgo), const SYS_EACCESS ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXECVE ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXIT ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXTATTRCTL ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_DELETE_FD ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_DELETE_FILE ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_DELETE_LINK ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_GET_FD ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_GET_FILE ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_GET_LINK ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_LIST_FD ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_LIST_FILE ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_LIST_LINK ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_SET_FD ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_SET_FILE ideal-int pkg syscall (freebsd-386-cgo), const SYS_EXTATTR_SET_LINK ideal-int pkg syscall (freebsd-386-cgo), const SYS_FACCESSAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_FCHDIR ideal-int pkg syscall (freebsd-386-cgo), const SYS_FCHFLAGS ideal-int pkg syscall (freebsd-386-cgo), const SYS_FCHMOD ideal-int pkg syscall (freebsd-386-cgo), const SYS_FCHMODAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_FCHOWN ideal-int pkg syscall (freebsd-386-cgo), const SYS_FCHOWNAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_FCNTL ideal-int pkg syscall (freebsd-386-cgo), const SYS_FEXECVE ideal-int pkg syscall (freebsd-386-cgo), const SYS_FFCLOCK_GETCOUNTER ideal-int pkg syscall (freebsd-386-cgo), const SYS_FFCLOCK_GETESTIMATE ideal-int pkg syscall (freebsd-386-cgo), const SYS_FFCLOCK_SETESTIMATE ideal-int pkg syscall (freebsd-386-cgo), const SYS_FHOPEN ideal-int pkg syscall (freebsd-386-cgo), const SYS_FHSTAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_FHSTATFS ideal-int pkg syscall (freebsd-386-cgo), const SYS_FLOCK ideal-int pkg syscall (freebsd-386-cgo), const SYS_FORK ideal-int pkg syscall (freebsd-386-cgo), const SYS_FPATHCONF ideal-int pkg syscall (freebsd-386-cgo), const SYS_FREEBSD6_FTRUNCATE ideal-int pkg syscall (freebsd-386-cgo), const SYS_FREEBSD6_LSEEK ideal-int pkg syscall (freebsd-386-cgo), const SYS_FREEBSD6_MMAP ideal-int pkg syscall (freebsd-386-cgo), const SYS_FREEBSD6_PREAD ideal-int pkg syscall (freebsd-386-cgo), const SYS_FREEBSD6_PWRITE ideal-int pkg syscall (freebsd-386-cgo), const SYS_FREEBSD6_TRUNCATE ideal-int pkg syscall (freebsd-386-cgo), const SYS_FSTAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_FSTATAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_FSTATFS ideal-int pkg syscall (freebsd-386-cgo), const SYS_FSYNC ideal-int pkg syscall (freebsd-386-cgo), const SYS_FTRUNCATE ideal-int pkg syscall (freebsd-386-cgo), const SYS_FUTIMES ideal-int pkg syscall (freebsd-386-cgo), const SYS_FUTIMESAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETAUDIT ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETAUDIT_ADDR ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETAUID ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETCONTEXT ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETDENTS ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETDIRENTRIES ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETDTABLESIZE ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETEGID ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETEUID ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETFH ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETFSSTAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETGID ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETGROUPS ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETITIMER ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETLOGIN ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETLOGINCLASS ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETPEERNAME ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETPGID ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETPGRP ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETPID ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETPPID ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETPRIORITY ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETRESGID ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETRESUID ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETRLIMIT ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETRUSAGE ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETSID ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETSOCKNAME ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETSOCKOPT ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETTIMEOFDAY ideal-int pkg syscall (freebsd-386-cgo), const SYS_GETUID ideal-int pkg syscall (freebsd-386-cgo), const SYS_IOCTL ideal-int pkg syscall (freebsd-386-cgo), const SYS_ISSETUGID ideal-int pkg syscall (freebsd-386-cgo), const SYS_JAIL ideal-int pkg syscall (freebsd-386-cgo), const SYS_JAIL_ATTACH ideal-int pkg syscall (freebsd-386-cgo), const SYS_JAIL_GET ideal-int pkg syscall (freebsd-386-cgo), const SYS_JAIL_REMOVE ideal-int pkg syscall (freebsd-386-cgo), const SYS_JAIL_SET ideal-int pkg syscall (freebsd-386-cgo), const SYS_KENV ideal-int pkg syscall (freebsd-386-cgo), const SYS_KEVENT ideal-int pkg syscall (freebsd-386-cgo), const SYS_KILL ideal-int pkg syscall (freebsd-386-cgo), const SYS_KLDFIND ideal-int pkg syscall (freebsd-386-cgo), const SYS_KLDFIRSTMOD ideal-int pkg syscall (freebsd-386-cgo), const SYS_KLDLOAD ideal-int pkg syscall (freebsd-386-cgo), const SYS_KLDNEXT ideal-int pkg syscall (freebsd-386-cgo), const SYS_KLDSTAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_KLDSYM ideal-int pkg syscall (freebsd-386-cgo), const SYS_KLDUNLOAD ideal-int pkg syscall (freebsd-386-cgo), const SYS_KLDUNLOADF ideal-int pkg syscall (freebsd-386-cgo), const SYS_KQUEUE ideal-int pkg syscall (freebsd-386-cgo), const SYS_KTIMER_CREATE ideal-int pkg syscall (freebsd-386-cgo), const SYS_KTIMER_DELETE ideal-int pkg syscall (freebsd-386-cgo), const SYS_KTIMER_GETOVERRUN ideal-int pkg syscall (freebsd-386-cgo), const SYS_KTIMER_GETTIME ideal-int pkg syscall (freebsd-386-cgo), const SYS_KTIMER_SETTIME ideal-int pkg syscall (freebsd-386-cgo), const SYS_KTRACE ideal-int pkg syscall (freebsd-386-cgo), const SYS_LCHFLAGS ideal-int pkg syscall (freebsd-386-cgo), const SYS_LCHMOD ideal-int pkg syscall (freebsd-386-cgo), const SYS_LCHOWN ideal-int pkg syscall (freebsd-386-cgo), const SYS_LGETFH ideal-int pkg syscall (freebsd-386-cgo), const SYS_LINK ideal-int pkg syscall (freebsd-386-cgo), const SYS_LINKAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_LISTEN ideal-int pkg syscall (freebsd-386-cgo), const SYS_LPATHCONF ideal-int pkg syscall (freebsd-386-cgo), const SYS_LSEEK ideal-int pkg syscall (freebsd-386-cgo), const SYS_LSTAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_LUTIMES ideal-int pkg syscall (freebsd-386-cgo), const SYS_MAC_SYSCALL ideal-int pkg syscall (freebsd-386-cgo), const SYS_MADVISE ideal-int pkg syscall (freebsd-386-cgo), const SYS_MINCORE ideal-int pkg syscall (freebsd-386-cgo), const SYS_MINHERIT ideal-int pkg syscall (freebsd-386-cgo), const SYS_MKDIR ideal-int pkg syscall (freebsd-386-cgo), const SYS_MKDIRAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_MKFIFO ideal-int pkg syscall (freebsd-386-cgo), const SYS_MKFIFOAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_MKNOD ideal-int pkg syscall (freebsd-386-cgo), const SYS_MKNODAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_MLOCK ideal-int pkg syscall (freebsd-386-cgo), const SYS_MLOCKALL ideal-int pkg syscall (freebsd-386-cgo), const SYS_MMAP ideal-int pkg syscall (freebsd-386-cgo), const SYS_MODFIND ideal-int pkg syscall (freebsd-386-cgo), const SYS_MODFNEXT ideal-int pkg syscall (freebsd-386-cgo), const SYS_MODNEXT ideal-int pkg syscall (freebsd-386-cgo), const SYS_MODSTAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_MOUNT ideal-int pkg syscall (freebsd-386-cgo), const SYS_MPROTECT ideal-int pkg syscall (freebsd-386-cgo), const SYS_MSYNC ideal-int pkg syscall (freebsd-386-cgo), const SYS_MUNLOCK ideal-int pkg syscall (freebsd-386-cgo), const SYS_MUNLOCKALL ideal-int pkg syscall (freebsd-386-cgo), const SYS_MUNMAP ideal-int pkg syscall (freebsd-386-cgo), const SYS_NANOSLEEP ideal-int pkg syscall (freebsd-386-cgo), const SYS_NFSTAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_NLSTAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_NMOUNT ideal-int pkg syscall (freebsd-386-cgo), const SYS_NSTAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_NTP_ADJTIME ideal-int pkg syscall (freebsd-386-cgo), const SYS_NTP_GETTIME ideal-int pkg syscall (freebsd-386-cgo), const SYS_OBREAK ideal-int pkg syscall (freebsd-386-cgo), const SYS_OPEN ideal-int pkg syscall (freebsd-386-cgo), const SYS_OPENAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_OPENBSD_POLL ideal-int pkg syscall (freebsd-386-cgo), const SYS_OVADVISE ideal-int pkg syscall (freebsd-386-cgo), const SYS_PATHCONF ideal-int pkg syscall (freebsd-386-cgo), const SYS_PDFORK ideal-int pkg syscall (freebsd-386-cgo), const SYS_PDGETPID ideal-int pkg syscall (freebsd-386-cgo), const SYS_PDKILL ideal-int pkg syscall (freebsd-386-cgo), const SYS_PIPE ideal-int pkg syscall (freebsd-386-cgo), const SYS_POLL ideal-int pkg syscall (freebsd-386-cgo), const SYS_POSIX_FADVISE ideal-int pkg syscall (freebsd-386-cgo), const SYS_POSIX_FALLOCATE ideal-int pkg syscall (freebsd-386-cgo), const SYS_POSIX_OPENPT ideal-int pkg syscall (freebsd-386-cgo), const SYS_PREAD ideal-int pkg syscall (freebsd-386-cgo), const SYS_PREADV ideal-int pkg syscall (freebsd-386-cgo), const SYS_PROFIL ideal-int pkg syscall (freebsd-386-cgo), const SYS_PSELECT ideal-int pkg syscall (freebsd-386-cgo), const SYS_PTRACE ideal-int pkg syscall (freebsd-386-cgo), const SYS_PWRITE ideal-int pkg syscall (freebsd-386-cgo), const SYS_PWRITEV ideal-int pkg syscall (freebsd-386-cgo), const SYS_QUOTACTL ideal-int pkg syscall (freebsd-386-cgo), const SYS_RCTL_ADD_RULE ideal-int pkg syscall (freebsd-386-cgo), const SYS_RCTL_GET_LIMITS ideal-int pkg syscall (freebsd-386-cgo), const SYS_RCTL_GET_RACCT ideal-int pkg syscall (freebsd-386-cgo), const SYS_RCTL_GET_RULES ideal-int pkg syscall (freebsd-386-cgo), const SYS_RCTL_REMOVE_RULE ideal-int pkg syscall (freebsd-386-cgo), const SYS_READ ideal-int pkg syscall (freebsd-386-cgo), const SYS_READLINK ideal-int pkg syscall (freebsd-386-cgo), const SYS_READLINKAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_READV ideal-int pkg syscall (freebsd-386-cgo), const SYS_REBOOT ideal-int pkg syscall (freebsd-386-cgo), const SYS_RECVFROM ideal-int pkg syscall (freebsd-386-cgo), const SYS_RECVMSG ideal-int pkg syscall (freebsd-386-cgo), const SYS_RENAME ideal-int pkg syscall (freebsd-386-cgo), const SYS_RENAMEAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_REVOKE ideal-int pkg syscall (freebsd-386-cgo), const SYS_RFORK ideal-int pkg syscall (freebsd-386-cgo), const SYS_RMDIR ideal-int pkg syscall (freebsd-386-cgo), const SYS_RTPRIO ideal-int pkg syscall (freebsd-386-cgo), const SYS_RTPRIO_THREAD ideal-int pkg syscall (freebsd-386-cgo), const SYS_SBRK ideal-int pkg syscall (freebsd-386-cgo), const SYS_SCHED_GETPARAM ideal-int pkg syscall (freebsd-386-cgo), const SYS_SCHED_GETSCHEDULER ideal-int pkg syscall (freebsd-386-cgo), const SYS_SCHED_GET_PRIORITY_MAX ideal-int pkg syscall (freebsd-386-cgo), const SYS_SCHED_GET_PRIORITY_MIN ideal-int pkg syscall (freebsd-386-cgo), const SYS_SCHED_RR_GET_INTERVAL ideal-int pkg syscall (freebsd-386-cgo), const SYS_SCHED_SETPARAM ideal-int pkg syscall (freebsd-386-cgo), const SYS_SCHED_SETSCHEDULER ideal-int pkg syscall (freebsd-386-cgo), const SYS_SCHED_YIELD ideal-int pkg syscall (freebsd-386-cgo), const SYS_SCTP_GENERIC_RECVMSG ideal-int pkg syscall (freebsd-386-cgo), const SYS_SCTP_GENERIC_SENDMSG ideal-int pkg syscall (freebsd-386-cgo), const SYS_SCTP_GENERIC_SENDMSG_IOV ideal-int pkg syscall (freebsd-386-cgo), const SYS_SCTP_PEELOFF ideal-int pkg syscall (freebsd-386-cgo), const SYS_SELECT ideal-int pkg syscall (freebsd-386-cgo), const SYS_SENDFILE ideal-int pkg syscall (freebsd-386-cgo), const SYS_SENDMSG ideal-int pkg syscall (freebsd-386-cgo), const SYS_SENDTO ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETAUDIT ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETAUDIT_ADDR ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETAUID ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETCONTEXT ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETEGID ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETEUID ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETFIB ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETGID ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETGROUPS ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETITIMER ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETLOGIN ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETLOGINCLASS ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETPGID ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETPRIORITY ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETREGID ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETRESGID ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETRESUID ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETREUID ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETRLIMIT ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETSID ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETSOCKOPT ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETTIMEOFDAY ideal-int pkg syscall (freebsd-386-cgo), const SYS_SETUID ideal-int pkg syscall (freebsd-386-cgo), const SYS_SHM_OPEN ideal-int pkg syscall (freebsd-386-cgo), const SYS_SHM_UNLINK ideal-int pkg syscall (freebsd-386-cgo), const SYS_SHUTDOWN ideal-int pkg syscall (freebsd-386-cgo), const SYS_SIGACTION ideal-int pkg syscall (freebsd-386-cgo), const SYS_SIGALTSTACK ideal-int pkg syscall (freebsd-386-cgo), const SYS_SIGPENDING ideal-int pkg syscall (freebsd-386-cgo), const SYS_SIGPROCMASK ideal-int pkg syscall (freebsd-386-cgo), const SYS_SIGQUEUE ideal-int pkg syscall (freebsd-386-cgo), const SYS_SIGRETURN ideal-int pkg syscall (freebsd-386-cgo), const SYS_SIGSUSPEND ideal-int pkg syscall (freebsd-386-cgo), const SYS_SIGTIMEDWAIT ideal-int pkg syscall (freebsd-386-cgo), const SYS_SIGWAIT ideal-int pkg syscall (freebsd-386-cgo), const SYS_SIGWAITINFO ideal-int pkg syscall (freebsd-386-cgo), const SYS_SOCKET ideal-int pkg syscall (freebsd-386-cgo), const SYS_SOCKETPAIR ideal-int pkg syscall (freebsd-386-cgo), const SYS_SSTK ideal-int pkg syscall (freebsd-386-cgo), const SYS_STAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_STATFS ideal-int pkg syscall (freebsd-386-cgo), const SYS_SWAPCONTEXT ideal-int pkg syscall (freebsd-386-cgo), const SYS_SWAPOFF ideal-int pkg syscall (freebsd-386-cgo), const SYS_SWAPON ideal-int pkg syscall (freebsd-386-cgo), const SYS_SYMLINK ideal-int pkg syscall (freebsd-386-cgo), const SYS_SYMLINKAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_SYNC ideal-int pkg syscall (freebsd-386-cgo), const SYS_SYSARCH ideal-int pkg syscall (freebsd-386-cgo), const SYS_THR_CREATE ideal-int pkg syscall (freebsd-386-cgo), const SYS_THR_EXIT ideal-int pkg syscall (freebsd-386-cgo), const SYS_THR_KILL ideal-int pkg syscall (freebsd-386-cgo), const SYS_THR_KILL2 ideal-int pkg syscall (freebsd-386-cgo), const SYS_THR_NEW ideal-int pkg syscall (freebsd-386-cgo), const SYS_THR_SELF ideal-int pkg syscall (freebsd-386-cgo), const SYS_THR_SET_NAME ideal-int pkg syscall (freebsd-386-cgo), const SYS_THR_SUSPEND ideal-int pkg syscall (freebsd-386-cgo), const SYS_THR_WAKE ideal-int pkg syscall (freebsd-386-cgo), const SYS_TRUNCATE ideal-int pkg syscall (freebsd-386-cgo), const SYS_UMASK ideal-int pkg syscall (freebsd-386-cgo), const SYS_UNDELETE ideal-int pkg syscall (freebsd-386-cgo), const SYS_UNLINK ideal-int pkg syscall (freebsd-386-cgo), const SYS_UNLINKAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_UNMOUNT ideal-int pkg syscall (freebsd-386-cgo), const SYS_UTIMES ideal-int pkg syscall (freebsd-386-cgo), const SYS_UTRACE ideal-int pkg syscall (freebsd-386-cgo), const SYS_UUIDGEN ideal-int pkg syscall (freebsd-386-cgo), const SYS_VFORK ideal-int pkg syscall (freebsd-386-cgo), const SYS_WAIT4 ideal-int pkg syscall (freebsd-386-cgo), const SYS_WAIT6 ideal-int pkg syscall (freebsd-386-cgo), const SYS_WRITE ideal-int pkg syscall (freebsd-386-cgo), const SYS_WRITEV ideal-int pkg syscall (freebsd-386-cgo), const SYS_YIELD ideal-int pkg syscall (freebsd-386-cgo), const SYS__UMTX_LOCK ideal-int pkg syscall (freebsd-386-cgo), const SYS__UMTX_OP ideal-int pkg syscall (freebsd-386-cgo), const SYS__UMTX_UNLOCK ideal-int pkg syscall (freebsd-386-cgo), const SYS___ACL_ACLCHECK_FD ideal-int pkg syscall (freebsd-386-cgo), const SYS___ACL_ACLCHECK_FILE ideal-int pkg syscall (freebsd-386-cgo), const SYS___ACL_ACLCHECK_LINK ideal-int pkg syscall (freebsd-386-cgo), const SYS___ACL_DELETE_FD ideal-int pkg syscall (freebsd-386-cgo), const SYS___ACL_DELETE_FILE ideal-int pkg syscall (freebsd-386-cgo), const SYS___ACL_DELETE_LINK ideal-int pkg syscall (freebsd-386-cgo), const SYS___ACL_GET_FD ideal-int pkg syscall (freebsd-386-cgo), const SYS___ACL_GET_FILE ideal-int pkg syscall (freebsd-386-cgo), const SYS___ACL_GET_LINK ideal-int pkg syscall (freebsd-386-cgo), const SYS___ACL_SET_FD ideal-int pkg syscall (freebsd-386-cgo), const SYS___ACL_SET_FILE ideal-int pkg syscall (freebsd-386-cgo), const SYS___ACL_SET_LINK ideal-int pkg syscall (freebsd-386-cgo), const SYS___GETCWD ideal-int pkg syscall (freebsd-386-cgo), const SYS___MAC_EXECVE ideal-int pkg syscall (freebsd-386-cgo), const SYS___MAC_GET_FD ideal-int pkg syscall (freebsd-386-cgo), const SYS___MAC_GET_FILE ideal-int pkg syscall (freebsd-386-cgo), const SYS___MAC_GET_LINK ideal-int pkg syscall (freebsd-386-cgo), const SYS___MAC_GET_PID ideal-int pkg syscall (freebsd-386-cgo), const SYS___MAC_GET_PROC ideal-int pkg syscall (freebsd-386-cgo), const SYS___MAC_SET_FD ideal-int pkg syscall (freebsd-386-cgo), const SYS___MAC_SET_FILE ideal-int pkg syscall (freebsd-386-cgo), const SYS___MAC_SET_LINK ideal-int pkg syscall (freebsd-386-cgo), const SYS___MAC_SET_PROC ideal-int pkg syscall (freebsd-386-cgo), const SYS___SETUGID ideal-int pkg syscall (freebsd-386-cgo), const SYS___SYSCTL ideal-int pkg syscall (freebsd-386-cgo), const SizeofBpfHdr ideal-int pkg syscall (freebsd-386-cgo), const SizeofBpfInsn ideal-int pkg syscall (freebsd-386-cgo), const SizeofBpfProgram ideal-int pkg syscall (freebsd-386-cgo), const SizeofBpfStat ideal-int pkg syscall (freebsd-386-cgo), const SizeofBpfVersion ideal-int pkg syscall (freebsd-386-cgo), const SizeofBpfZbuf ideal-int pkg syscall (freebsd-386-cgo), const SizeofBpfZbufHeader ideal-int pkg syscall (freebsd-386-cgo), const SizeofCmsghdr ideal-int pkg syscall (freebsd-386-cgo), const SizeofICMPv6Filter = 32 pkg syscall (freebsd-386-cgo), const SizeofICMPv6Filter ideal-int pkg syscall (freebsd-386-cgo), const SizeofIPMreq ideal-int pkg syscall (freebsd-386-cgo), const SizeofIPMreqn ideal-int pkg syscall (freebsd-386-cgo), const SizeofIPv6MTUInfo = 32 pkg syscall (freebsd-386-cgo), const SizeofIPv6MTUInfo ideal-int pkg syscall (freebsd-386-cgo), const SizeofIPv6Mreq ideal-int pkg syscall (freebsd-386-cgo), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (freebsd-386-cgo), const SizeofIfData ideal-int pkg syscall (freebsd-386-cgo), const SizeofIfMsghdr ideal-int pkg syscall (freebsd-386-cgo), const SizeofIfaMsghdr ideal-int pkg syscall (freebsd-386-cgo), const SizeofIfmaMsghdr ideal-int pkg syscall (freebsd-386-cgo), const SizeofInet6Pktinfo ideal-int pkg syscall (freebsd-386-cgo), const SizeofLinger ideal-int pkg syscall (freebsd-386-cgo), const SizeofMsghdr ideal-int pkg syscall (freebsd-386-cgo), const SizeofRtMetrics ideal-int pkg syscall (freebsd-386-cgo), const SizeofRtMsghdr ideal-int pkg syscall (freebsd-386-cgo), const SizeofSockaddrAny ideal-int pkg syscall (freebsd-386-cgo), const SizeofSockaddrDatalink ideal-int pkg syscall (freebsd-386-cgo), const SizeofSockaddrInet4 ideal-int pkg syscall (freebsd-386-cgo), const SizeofSockaddrInet6 ideal-int pkg syscall (freebsd-386-cgo), const SizeofSockaddrUnix ideal-int pkg syscall (freebsd-386-cgo), const TCIFLUSH ideal-int pkg syscall (freebsd-386-cgo), const TCIOFLUSH ideal-int pkg syscall (freebsd-386-cgo), const TCOFLUSH ideal-int pkg syscall (freebsd-386-cgo), const TCP_CA_NAME_MAX ideal-int pkg syscall (freebsd-386-cgo), const TCP_CONGESTION ideal-int pkg syscall (freebsd-386-cgo), const TCP_INFO ideal-int pkg syscall (freebsd-386-cgo), const TCP_KEEPCNT ideal-int pkg syscall (freebsd-386-cgo), const TCP_KEEPIDLE ideal-int pkg syscall (freebsd-386-cgo), const TCP_KEEPINIT ideal-int pkg syscall (freebsd-386-cgo), const TCP_KEEPINTVL ideal-int pkg syscall (freebsd-386-cgo), const TCP_MAXBURST ideal-int pkg syscall (freebsd-386-cgo), const TCP_MAXHLEN ideal-int pkg syscall (freebsd-386-cgo), const TCP_MAXOLEN ideal-int pkg syscall (freebsd-386-cgo), const TCP_MAXSEG ideal-int pkg syscall (freebsd-386-cgo), const TCP_MAXWIN ideal-int pkg syscall (freebsd-386-cgo), const TCP_MAX_SACK ideal-int pkg syscall (freebsd-386-cgo), const TCP_MAX_WINSHIFT ideal-int pkg syscall (freebsd-386-cgo), const TCP_MD5SIG ideal-int pkg syscall (freebsd-386-cgo), const TCP_MINMSS ideal-int pkg syscall (freebsd-386-cgo), const TCP_MSS ideal-int pkg syscall (freebsd-386-cgo), const TCP_NOOPT ideal-int pkg syscall (freebsd-386-cgo), const TCP_NOPUSH ideal-int pkg syscall (freebsd-386-cgo), const TCSAFLUSH ideal-int pkg syscall (freebsd-386-cgo), const TIOCCBRK ideal-int pkg syscall (freebsd-386-cgo), const TIOCCDTR ideal-int pkg syscall (freebsd-386-cgo), const TIOCCONS ideal-int pkg syscall (freebsd-386-cgo), const TIOCDRAIN ideal-int pkg syscall (freebsd-386-cgo), const TIOCEXCL ideal-int pkg syscall (freebsd-386-cgo), const TIOCEXT ideal-int pkg syscall (freebsd-386-cgo), const TIOCFLUSH ideal-int pkg syscall (freebsd-386-cgo), const TIOCGDRAINWAIT ideal-int pkg syscall (freebsd-386-cgo), const TIOCGETA ideal-int pkg syscall (freebsd-386-cgo), const TIOCGETD ideal-int pkg syscall (freebsd-386-cgo), const TIOCGPGRP ideal-int pkg syscall (freebsd-386-cgo), const TIOCGPTN ideal-int pkg syscall (freebsd-386-cgo), const TIOCGSID ideal-int pkg syscall (freebsd-386-cgo), const TIOCGWINSZ ideal-int pkg syscall (freebsd-386-cgo), const TIOCMBIC ideal-int pkg syscall (freebsd-386-cgo), const TIOCMBIS ideal-int pkg syscall (freebsd-386-cgo), const TIOCMGDTRWAIT ideal-int pkg syscall (freebsd-386-cgo), const TIOCMGET ideal-int pkg syscall (freebsd-386-cgo), const TIOCMSDTRWAIT ideal-int pkg syscall (freebsd-386-cgo), const TIOCMSET ideal-int pkg syscall (freebsd-386-cgo), const TIOCM_CAR ideal-int pkg syscall (freebsd-386-cgo), const TIOCM_CD ideal-int pkg syscall (freebsd-386-cgo), const TIOCM_CTS ideal-int pkg syscall (freebsd-386-cgo), const TIOCM_DCD ideal-int pkg syscall (freebsd-386-cgo), const TIOCM_DSR ideal-int pkg syscall (freebsd-386-cgo), const TIOCM_DTR ideal-int pkg syscall (freebsd-386-cgo), const TIOCM_LE ideal-int pkg syscall (freebsd-386-cgo), const TIOCM_RI ideal-int pkg syscall (freebsd-386-cgo), const TIOCM_RNG ideal-int pkg syscall (freebsd-386-cgo), const TIOCM_RTS ideal-int pkg syscall (freebsd-386-cgo), const TIOCM_SR ideal-int pkg syscall (freebsd-386-cgo), const TIOCM_ST ideal-int pkg syscall (freebsd-386-cgo), const TIOCNOTTY ideal-int pkg syscall (freebsd-386-cgo), const TIOCNXCL ideal-int pkg syscall (freebsd-386-cgo), const TIOCOUTQ ideal-int pkg syscall (freebsd-386-cgo), const TIOCPKT ideal-int pkg syscall (freebsd-386-cgo), const TIOCPKT_DATA ideal-int pkg syscall (freebsd-386-cgo), const TIOCPKT_DOSTOP ideal-int pkg syscall (freebsd-386-cgo), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (freebsd-386-cgo), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (freebsd-386-cgo), const TIOCPKT_IOCTL ideal-int pkg syscall (freebsd-386-cgo), const TIOCPKT_NOSTOP ideal-int pkg syscall (freebsd-386-cgo), const TIOCPKT_START ideal-int pkg syscall (freebsd-386-cgo), const TIOCPKT_STOP ideal-int pkg syscall (freebsd-386-cgo), const TIOCPTMASTER ideal-int pkg syscall (freebsd-386-cgo), const TIOCSBRK ideal-int pkg syscall (freebsd-386-cgo), const TIOCSCTTY ideal-int pkg syscall (freebsd-386-cgo), const TIOCSDRAINWAIT ideal-int pkg syscall (freebsd-386-cgo), const TIOCSDTR ideal-int pkg syscall (freebsd-386-cgo), const TIOCSETA ideal-int pkg syscall (freebsd-386-cgo), const TIOCSETAF ideal-int pkg syscall (freebsd-386-cgo), const TIOCSETAW ideal-int pkg syscall (freebsd-386-cgo), const TIOCSETD ideal-int pkg syscall (freebsd-386-cgo), const TIOCSIG ideal-int pkg syscall (freebsd-386-cgo), const TIOCSPGRP ideal-int pkg syscall (freebsd-386-cgo), const TIOCSTART ideal-int pkg syscall (freebsd-386-cgo), const TIOCSTAT ideal-int pkg syscall (freebsd-386-cgo), const TIOCSTI ideal-int pkg syscall (freebsd-386-cgo), const TIOCSTOP ideal-int pkg syscall (freebsd-386-cgo), const TIOCSWINSZ ideal-int pkg syscall (freebsd-386-cgo), const TIOCTIMESTAMP ideal-int pkg syscall (freebsd-386-cgo), const TIOCUCNTL ideal-int pkg syscall (freebsd-386-cgo), const TOSTOP ideal-int pkg syscall (freebsd-386-cgo), const VDISCARD ideal-int pkg syscall (freebsd-386-cgo), const VDSUSP ideal-int pkg syscall (freebsd-386-cgo), const VEOF ideal-int pkg syscall (freebsd-386-cgo), const VEOL ideal-int pkg syscall (freebsd-386-cgo), const VEOL2 ideal-int pkg syscall (freebsd-386-cgo), const VERASE ideal-int pkg syscall (freebsd-386-cgo), const VERASE2 ideal-int pkg syscall (freebsd-386-cgo), const VINTR ideal-int pkg syscall (freebsd-386-cgo), const VKILL ideal-int pkg syscall (freebsd-386-cgo), const VLNEXT ideal-int pkg syscall (freebsd-386-cgo), const VMIN ideal-int pkg syscall (freebsd-386-cgo), const VQUIT ideal-int pkg syscall (freebsd-386-cgo), const VREPRINT ideal-int pkg syscall (freebsd-386-cgo), const VSTART ideal-int pkg syscall (freebsd-386-cgo), const VSTATUS ideal-int pkg syscall (freebsd-386-cgo), const VSTOP ideal-int pkg syscall (freebsd-386-cgo), const VSUSP ideal-int pkg syscall (freebsd-386-cgo), const VTIME ideal-int pkg syscall (freebsd-386-cgo), const VWERASE ideal-int pkg syscall (freebsd-386-cgo), const WCONTINUED ideal-int pkg syscall (freebsd-386-cgo), const WCOREFLAG ideal-int pkg syscall (freebsd-386-cgo), const WLINUXCLONE ideal-int pkg syscall (freebsd-386-cgo), const WNOHANG ideal-int pkg syscall (freebsd-386-cgo), const WNOWAIT ideal-int pkg syscall (freebsd-386-cgo), const WSTOPPED ideal-int pkg syscall (freebsd-386-cgo), const WUNTRACED ideal-int pkg syscall (freebsd-386-cgo), func Accept(int) (int, Sockaddr, error) pkg syscall (freebsd-386-cgo), func Access(string, uint32) error pkg syscall (freebsd-386-cgo), func Adjtime(*Timeval, *Timeval) error pkg syscall (freebsd-386-cgo), func Bind(int, Sockaddr) error pkg syscall (freebsd-386-cgo), func BpfBuflen(int) (int, error) pkg syscall (freebsd-386-cgo), func BpfDatalink(int) (int, error) pkg syscall (freebsd-386-cgo), func BpfHeadercmpl(int) (int, error) pkg syscall (freebsd-386-cgo), func BpfInterface(int, string) (string, error) pkg syscall (freebsd-386-cgo), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (freebsd-386-cgo), func BpfStats(int) (*BpfStat, error) pkg syscall (freebsd-386-cgo), func BpfStmt(int, int) *BpfInsn pkg syscall (freebsd-386-cgo), func BpfTimeout(int) (*Timeval, error) pkg syscall (freebsd-386-cgo), func CheckBpfVersion(int) error pkg syscall (freebsd-386-cgo), func Chflags(string, int) error pkg syscall (freebsd-386-cgo), func Chroot(string) error pkg syscall (freebsd-386-cgo), func Close(int) error pkg syscall (freebsd-386-cgo), func CloseOnExec(int) pkg syscall (freebsd-386-cgo), func CmsgLen(int) int pkg syscall (freebsd-386-cgo), func CmsgSpace(int) int pkg syscall (freebsd-386-cgo), func Connect(int, Sockaddr) error pkg syscall (freebsd-386-cgo), func Dup(int) (int, error) pkg syscall (freebsd-386-cgo), func Dup2(int, int) error pkg syscall (freebsd-386-cgo), func Fchdir(int) error pkg syscall (freebsd-386-cgo), func Fchflags(int, int) error pkg syscall (freebsd-386-cgo), func Fchmod(int, uint32) error pkg syscall (freebsd-386-cgo), func Fchown(int, int, int) error pkg syscall (freebsd-386-cgo), func Flock(int, int) error pkg syscall (freebsd-386-cgo), func FlushBpf(int) error pkg syscall (freebsd-386-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (freebsd-386-cgo), func Fpathconf(int, int) (int, error) pkg syscall (freebsd-386-cgo), func Fstat(int, *Stat_t) error pkg syscall (freebsd-386-cgo), func Fstatfs(int, *Statfs_t) error pkg syscall (freebsd-386-cgo), func Fsync(int) error pkg syscall (freebsd-386-cgo), func Ftruncate(int, int64) error pkg syscall (freebsd-386-cgo), func Futimes(int, []Timeval) error pkg syscall (freebsd-386-cgo), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (freebsd-386-cgo), func Getdtablesize() int pkg syscall (freebsd-386-cgo), func Getfsstat([]Statfs_t, int) (int, error) pkg syscall (freebsd-386-cgo), func Getpeername(int) (Sockaddr, error) pkg syscall (freebsd-386-cgo), func Getpgid(int) (int, error) pkg syscall (freebsd-386-cgo), func Getpgrp() int pkg syscall (freebsd-386-cgo), func Getpriority(int, int) (int, error) pkg syscall (freebsd-386-cgo), func Getrlimit(int, *Rlimit) error pkg syscall (freebsd-386-cgo), func Getrusage(int, *Rusage) error pkg syscall (freebsd-386-cgo), func Getsid(int) (int, error) pkg syscall (freebsd-386-cgo), func Getsockname(int) (Sockaddr, error) pkg syscall (freebsd-386-cgo), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (freebsd-386-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (freebsd-386-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (freebsd-386-cgo), func GetsockoptIPMreqn(int, int, int) (*IPMreqn, error) pkg syscall (freebsd-386-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (freebsd-386-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (freebsd-386-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (freebsd-386-cgo), func GetsockoptInt(int, int, int) (int, error) pkg syscall (freebsd-386-cgo), func Issetugid() bool pkg syscall (freebsd-386-cgo), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (freebsd-386-cgo), func Kill(int, Signal) error pkg syscall (freebsd-386-cgo), func Kqueue() (int, error) pkg syscall (freebsd-386-cgo), func Listen(int, int) error pkg syscall (freebsd-386-cgo), func Lstat(string, *Stat_t) error pkg syscall (freebsd-386-cgo), func Mkfifo(string, uint32) error pkg syscall (freebsd-386-cgo), func Mknod(string, uint32, int) error pkg syscall (freebsd-386-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (freebsd-386-cgo), func Munmap([]uint8) error pkg syscall (freebsd-386-cgo), func Nanosleep(*Timespec, *Timespec) error pkg syscall (freebsd-386-cgo), func Open(string, int, uint32) (int, error) pkg syscall (freebsd-386-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (freebsd-386-cgo), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (freebsd-386-cgo), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (freebsd-386-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (freebsd-386-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (freebsd-386-cgo), func Pathconf(string, int) (int, error) pkg syscall (freebsd-386-cgo), func Pipe([]int) error pkg syscall (freebsd-386-cgo), func Pread(int, []uint8, int64) (int, error) pkg syscall (freebsd-386-cgo), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (freebsd-386-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-386-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-386-cgo), func Read(int, []uint8) (int, error) pkg syscall (freebsd-386-cgo), func ReadDirent(int, []uint8) (int, error) pkg syscall (freebsd-386-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (freebsd-386-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (freebsd-386-cgo), func Revoke(string) error pkg syscall (freebsd-386-cgo), func RouteRIB(int, int) ([]uint8, error) pkg syscall (freebsd-386-cgo), func Seek(int, int64, int) (int64, error) pkg syscall (freebsd-386-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (freebsd-386-cgo), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (freebsd-386-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (freebsd-386-cgo), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (freebsd-386-cgo), func SetBpf(int, []BpfInsn) error pkg syscall (freebsd-386-cgo), func SetBpfBuflen(int, int) (int, error) pkg syscall (freebsd-386-cgo), func SetBpfDatalink(int, int) (int, error) pkg syscall (freebsd-386-cgo), func SetBpfHeadercmpl(int, int) error pkg syscall (freebsd-386-cgo), func SetBpfImmediate(int, int) error pkg syscall (freebsd-386-cgo), func SetBpfInterface(int, string) error pkg syscall (freebsd-386-cgo), func SetBpfPromisc(int, int) error pkg syscall (freebsd-386-cgo), func SetBpfTimeout(int, *Timeval) error pkg syscall (freebsd-386-cgo), func SetKevent(*Kevent_t, int, int, int) pkg syscall (freebsd-386-cgo), func SetNonblock(int, bool) error pkg syscall (freebsd-386-cgo), func Setegid(int) error pkg syscall (freebsd-386-cgo), func Seteuid(int) error pkg syscall (freebsd-386-cgo), func Setgid(int) error pkg syscall (freebsd-386-cgo), func Setgroups([]int) error pkg syscall (freebsd-386-cgo), func Setlogin(string) error pkg syscall (freebsd-386-cgo), func Setpgid(int, int) error pkg syscall (freebsd-386-cgo), func Setpriority(int, int, int) error pkg syscall (freebsd-386-cgo), func Setregid(int, int) error pkg syscall (freebsd-386-cgo), func Setreuid(int, int) error pkg syscall (freebsd-386-cgo), func Setrlimit(int, *Rlimit) error pkg syscall (freebsd-386-cgo), func Setsid() (int, error) pkg syscall (freebsd-386-cgo), func SetsockoptByte(int, int, int, uint8) error pkg syscall (freebsd-386-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (freebsd-386-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (freebsd-386-cgo), func SetsockoptIPMreqn(int, int, int, *IPMreqn) error pkg syscall (freebsd-386-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (freebsd-386-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (freebsd-386-cgo), func SetsockoptInt(int, int, int, int) error pkg syscall (freebsd-386-cgo), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (freebsd-386-cgo), func SetsockoptString(int, int, int, string) error pkg syscall (freebsd-386-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (freebsd-386-cgo), func Settimeofday(*Timeval) error pkg syscall (freebsd-386-cgo), func Setuid(int) error pkg syscall (freebsd-386-cgo), func Shutdown(int, int) error pkg syscall (freebsd-386-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (freebsd-386-cgo), func Socket(int, int, int) (int, error) pkg syscall (freebsd-386-cgo), func Socketpair(int, int, int) ([2]int, error) pkg syscall (freebsd-386-cgo), func Stat(string, *Stat_t) error pkg syscall (freebsd-386-cgo), func Statfs(string, *Statfs_t) error pkg syscall (freebsd-386-cgo), func StringSlicePtr([]string) []*uint8 pkg syscall (freebsd-386-cgo), func Sync() error pkg syscall (freebsd-386-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-386-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-386-cgo), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-386-cgo), func Sysctl(string) (string, error) pkg syscall (freebsd-386-cgo), func SysctlUint32(string) (uint32, error) pkg syscall (freebsd-386-cgo), func TimevalToNsec(Timeval) int64 pkg syscall (freebsd-386-cgo), func Truncate(string, int64) error pkg syscall (freebsd-386-cgo), func Umask(int) int pkg syscall (freebsd-386-cgo), func Undelete(string) error pkg syscall (freebsd-386-cgo), func UnixRights(...int) []uint8 pkg syscall (freebsd-386-cgo), func Unmount(string, int) error pkg syscall (freebsd-386-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (freebsd-386-cgo), func Write(int, []uint8) (int, error) pkg syscall (freebsd-386-cgo), method (*Cmsghdr) SetLen(int) pkg syscall (freebsd-386-cgo), method (*Iovec) SetLen(int) pkg syscall (freebsd-386-cgo), method (*Msghdr) SetControllen(int) pkg syscall (freebsd-386-cgo), type BpfHdr struct pkg syscall (freebsd-386-cgo), type BpfHdr struct, Caplen uint32 pkg syscall (freebsd-386-cgo), type BpfHdr struct, Datalen uint32 pkg syscall (freebsd-386-cgo), type BpfHdr struct, Hdrlen uint16 pkg syscall (freebsd-386-cgo), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-386-cgo), type BpfHdr struct, Tstamp Timeval pkg syscall (freebsd-386-cgo), type BpfInsn struct pkg syscall (freebsd-386-cgo), type BpfInsn struct, Code uint16 pkg syscall (freebsd-386-cgo), type BpfInsn struct, Jf uint8 pkg syscall (freebsd-386-cgo), type BpfInsn struct, Jt uint8 pkg syscall (freebsd-386-cgo), type BpfInsn struct, K uint32 pkg syscall (freebsd-386-cgo), type BpfProgram struct pkg syscall (freebsd-386-cgo), type BpfProgram struct, Insns *BpfInsn pkg syscall (freebsd-386-cgo), type BpfProgram struct, Len uint32 pkg syscall (freebsd-386-cgo), type BpfStat struct pkg syscall (freebsd-386-cgo), type BpfStat struct, Drop uint32 pkg syscall (freebsd-386-cgo), type BpfStat struct, Recv uint32 pkg syscall (freebsd-386-cgo), type BpfVersion struct pkg syscall (freebsd-386-cgo), type BpfVersion struct, Major uint16 pkg syscall (freebsd-386-cgo), type BpfVersion struct, Minor uint16 pkg syscall (freebsd-386-cgo), type BpfZbuf struct pkg syscall (freebsd-386-cgo), type BpfZbuf struct, Bufa *uint8 pkg syscall (freebsd-386-cgo), type BpfZbuf struct, Bufb *uint8 pkg syscall (freebsd-386-cgo), type BpfZbuf struct, Buflen uint32 pkg syscall (freebsd-386-cgo), type BpfZbufHeader struct pkg syscall (freebsd-386-cgo), type BpfZbufHeader struct, Kernel_gen uint32 pkg syscall (freebsd-386-cgo), type BpfZbufHeader struct, Kernel_len uint32 pkg syscall (freebsd-386-cgo), type BpfZbufHeader struct, User_gen uint32 pkg syscall (freebsd-386-cgo), type BpfZbufHeader struct, X_bzh_pad [5]uint32 pkg syscall (freebsd-386-cgo), type Cmsghdr struct pkg syscall (freebsd-386-cgo), type Cmsghdr struct, Len uint32 pkg syscall (freebsd-386-cgo), type Cmsghdr struct, Level int32 pkg syscall (freebsd-386-cgo), type Cmsghdr struct, Type int32 pkg syscall (freebsd-386-cgo), type Credential struct pkg syscall (freebsd-386-cgo), type Credential struct, Gid uint32 pkg syscall (freebsd-386-cgo), type Credential struct, Groups []uint32 pkg syscall (freebsd-386-cgo), type Credential struct, Uid uint32 pkg syscall (freebsd-386-cgo), type Dirent struct pkg syscall (freebsd-386-cgo), type Dirent struct, Fileno uint32 pkg syscall (freebsd-386-cgo), type Dirent struct, Name [256]int8 pkg syscall (freebsd-386-cgo), type Dirent struct, Namlen uint8 pkg syscall (freebsd-386-cgo), type Dirent struct, Reclen uint16 pkg syscall (freebsd-386-cgo), type Dirent struct, Type uint8 pkg syscall (freebsd-386-cgo), type FdSet struct pkg syscall (freebsd-386-cgo), type FdSet struct, X__fds_bits [32]uint32 pkg syscall (freebsd-386-cgo), type Flock_t struct pkg syscall (freebsd-386-cgo), type Flock_t struct, Len int64 pkg syscall (freebsd-386-cgo), type Flock_t struct, Pid int32 pkg syscall (freebsd-386-cgo), type Flock_t struct, Start int64 pkg syscall (freebsd-386-cgo), type Flock_t struct, Sysid int32 pkg syscall (freebsd-386-cgo), type Flock_t struct, Type int16 pkg syscall (freebsd-386-cgo), type Flock_t struct, Whence int16 pkg syscall (freebsd-386-cgo), type Fsid struct pkg syscall (freebsd-386-cgo), type Fsid struct, Val [2]int32 pkg syscall (freebsd-386-cgo), type ICMPv6Filter struct pkg syscall (freebsd-386-cgo), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (freebsd-386-cgo), type IPMreqn struct pkg syscall (freebsd-386-cgo), type IPMreqn struct, Address [4]uint8 pkg syscall (freebsd-386-cgo), type IPMreqn struct, Ifindex int32 pkg syscall (freebsd-386-cgo), type IPMreqn struct, Multiaddr [4]uint8 pkg syscall (freebsd-386-cgo), type IPv6MTUInfo struct pkg syscall (freebsd-386-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (freebsd-386-cgo), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (freebsd-386-cgo), type IfAnnounceMsghdr struct pkg syscall (freebsd-386-cgo), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (freebsd-386-cgo), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (freebsd-386-cgo), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (freebsd-386-cgo), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (freebsd-386-cgo), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (freebsd-386-cgo), type IfAnnounceMsghdr struct, What uint16 pkg syscall (freebsd-386-cgo), type IfData struct pkg syscall (freebsd-386-cgo), type IfData struct, Addrlen uint8 pkg syscall (freebsd-386-cgo), type IfData struct, Baudrate uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Collisions uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Datalen uint8 pkg syscall (freebsd-386-cgo), type IfData struct, Epoch int32 pkg syscall (freebsd-386-cgo), type IfData struct, Hdrlen uint8 pkg syscall (freebsd-386-cgo), type IfData struct, Hwassist uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Ibytes uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Ierrors uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Imcasts uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Ipackets uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Iqdrops uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Lastchange Timeval pkg syscall (freebsd-386-cgo), type IfData struct, Link_state uint8 pkg syscall (freebsd-386-cgo), type IfData struct, Metric uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Mtu uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Noproto uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Obytes uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Oerrors uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Omcasts uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Opackets uint32 pkg syscall (freebsd-386-cgo), type IfData struct, Physical uint8 pkg syscall (freebsd-386-cgo), type IfData struct, Spare_char1 uint8 pkg syscall (freebsd-386-cgo), type IfData struct, Spare_char2 uint8 pkg syscall (freebsd-386-cgo), type IfData struct, Type uint8 pkg syscall (freebsd-386-cgo), type IfMsghdr struct pkg syscall (freebsd-386-cgo), type IfMsghdr struct, Addrs int32 pkg syscall (freebsd-386-cgo), type IfMsghdr struct, Data IfData pkg syscall (freebsd-386-cgo), type IfMsghdr struct, Flags int32 pkg syscall (freebsd-386-cgo), type IfMsghdr struct, Index uint16 pkg syscall (freebsd-386-cgo), type IfMsghdr struct, Msglen uint16 pkg syscall (freebsd-386-cgo), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-386-cgo), type IfMsghdr struct, Type uint8 pkg syscall (freebsd-386-cgo), type IfMsghdr struct, Version uint8 pkg syscall (freebsd-386-cgo), type IfaMsghdr struct pkg syscall (freebsd-386-cgo), type IfaMsghdr struct, Addrs int32 pkg syscall (freebsd-386-cgo), type IfaMsghdr struct, Flags int32 pkg syscall (freebsd-386-cgo), type IfaMsghdr struct, Index uint16 pkg syscall (freebsd-386-cgo), type IfaMsghdr struct, Metric int32 pkg syscall (freebsd-386-cgo), type IfaMsghdr struct, Msglen uint16 pkg syscall (freebsd-386-cgo), type IfaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-386-cgo), type IfaMsghdr struct, Type uint8 pkg syscall (freebsd-386-cgo), type IfaMsghdr struct, Version uint8 pkg syscall (freebsd-386-cgo), type IfmaMsghdr struct pkg syscall (freebsd-386-cgo), type IfmaMsghdr struct, Addrs int32 pkg syscall (freebsd-386-cgo), type IfmaMsghdr struct, Flags int32 pkg syscall (freebsd-386-cgo), type IfmaMsghdr struct, Index uint16 pkg syscall (freebsd-386-cgo), type IfmaMsghdr struct, Msglen uint16 pkg syscall (freebsd-386-cgo), type IfmaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-386-cgo), type IfmaMsghdr struct, Type uint8 pkg syscall (freebsd-386-cgo), type IfmaMsghdr struct, Version uint8 pkg syscall (freebsd-386-cgo), type Inet6Pktinfo struct pkg syscall (freebsd-386-cgo), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (freebsd-386-cgo), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (freebsd-386-cgo), type InterfaceAddrMessage struct pkg syscall (freebsd-386-cgo), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (freebsd-386-cgo), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (freebsd-386-cgo), type InterfaceAnnounceMessage struct pkg syscall (freebsd-386-cgo), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (freebsd-386-cgo), type InterfaceMessage struct pkg syscall (freebsd-386-cgo), type InterfaceMessage struct, Data []uint8 pkg syscall (freebsd-386-cgo), type InterfaceMessage struct, Header IfMsghdr pkg syscall (freebsd-386-cgo), type InterfaceMulticastAddrMessage struct pkg syscall (freebsd-386-cgo), type InterfaceMulticastAddrMessage struct, Data []uint8 pkg syscall (freebsd-386-cgo), type InterfaceMulticastAddrMessage struct, Header IfmaMsghdr pkg syscall (freebsd-386-cgo), type Iovec struct pkg syscall (freebsd-386-cgo), type Iovec struct, Base *uint8 pkg syscall (freebsd-386-cgo), type Iovec struct, Len uint32 pkg syscall (freebsd-386-cgo), type Kevent_t struct pkg syscall (freebsd-386-cgo), type Kevent_t struct, Data int32 pkg syscall (freebsd-386-cgo), type Kevent_t struct, Fflags uint32 pkg syscall (freebsd-386-cgo), type Kevent_t struct, Filter int16 pkg syscall (freebsd-386-cgo), type Kevent_t struct, Flags uint16 pkg syscall (freebsd-386-cgo), type Kevent_t struct, Ident uint32 pkg syscall (freebsd-386-cgo), type Kevent_t struct, Udata *uint8 pkg syscall (freebsd-386-cgo), type Msghdr struct pkg syscall (freebsd-386-cgo), type Msghdr struct, Control *uint8 pkg syscall (freebsd-386-cgo), type Msghdr struct, Controllen uint32 pkg syscall (freebsd-386-cgo), type Msghdr struct, Flags int32 pkg syscall (freebsd-386-cgo), type Msghdr struct, Iov *Iovec pkg syscall (freebsd-386-cgo), type Msghdr struct, Iovlen int32 pkg syscall (freebsd-386-cgo), type Msghdr struct, Name *uint8 pkg syscall (freebsd-386-cgo), type Msghdr struct, Namelen uint32 pkg syscall (freebsd-386-cgo), type RawSockaddr struct, Data [14]int8 pkg syscall (freebsd-386-cgo), type RawSockaddr struct, Family uint8 pkg syscall (freebsd-386-cgo), type RawSockaddr struct, Len uint8 pkg syscall (freebsd-386-cgo), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (freebsd-386-cgo), type RawSockaddrDatalink struct pkg syscall (freebsd-386-cgo), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (freebsd-386-cgo), type RawSockaddrDatalink struct, Data [46]int8 pkg syscall (freebsd-386-cgo), type RawSockaddrDatalink struct, Family uint8 pkg syscall (freebsd-386-cgo), type RawSockaddrDatalink struct, Index uint16 pkg syscall (freebsd-386-cgo), type RawSockaddrDatalink struct, Len uint8 pkg syscall (freebsd-386-cgo), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (freebsd-386-cgo), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (freebsd-386-cgo), type RawSockaddrDatalink struct, Type uint8 pkg syscall (freebsd-386-cgo), type RawSockaddrInet4 struct, Family uint8 pkg syscall (freebsd-386-cgo), type RawSockaddrInet4 struct, Len uint8 pkg syscall (freebsd-386-cgo), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (freebsd-386-cgo), type RawSockaddrInet6 struct, Family uint8 pkg syscall (freebsd-386-cgo), type RawSockaddrInet6 struct, Len uint8 pkg syscall (freebsd-386-cgo), type RawSockaddrUnix struct pkg syscall (freebsd-386-cgo), type RawSockaddrUnix struct, Family uint8 pkg syscall (freebsd-386-cgo), type RawSockaddrUnix struct, Len uint8 pkg syscall (freebsd-386-cgo), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (freebsd-386-cgo), type Rlimit struct pkg syscall (freebsd-386-cgo), type Rlimit struct, Cur int64 pkg syscall (freebsd-386-cgo), type Rlimit struct, Max int64 pkg syscall (freebsd-386-cgo), type RouteMessage struct pkg syscall (freebsd-386-cgo), type RouteMessage struct, Data []uint8 pkg syscall (freebsd-386-cgo), type RouteMessage struct, Header RtMsghdr pkg syscall (freebsd-386-cgo), type RoutingMessage interface, unexported methods pkg syscall (freebsd-386-cgo), type RtMetrics struct pkg syscall (freebsd-386-cgo), type RtMetrics struct, Expire uint32 pkg syscall (freebsd-386-cgo), type RtMetrics struct, Filler [3]uint32 pkg syscall (freebsd-386-cgo), type RtMetrics struct, Hopcount uint32 pkg syscall (freebsd-386-cgo), type RtMetrics struct, Locks uint32 pkg syscall (freebsd-386-cgo), type RtMetrics struct, Mtu uint32 pkg syscall (freebsd-386-cgo), type RtMetrics struct, Pksent uint32 pkg syscall (freebsd-386-cgo), type RtMetrics struct, Recvpipe uint32 pkg syscall (freebsd-386-cgo), type RtMetrics struct, Rtt uint32 pkg syscall (freebsd-386-cgo), type RtMetrics struct, Rttvar uint32 pkg syscall (freebsd-386-cgo), type RtMetrics struct, Sendpipe uint32 pkg syscall (freebsd-386-cgo), type RtMetrics struct, Ssthresh uint32 pkg syscall (freebsd-386-cgo), type RtMetrics struct, Weight uint32 pkg syscall (freebsd-386-cgo), type RtMsghdr struct pkg syscall (freebsd-386-cgo), type RtMsghdr struct, Addrs int32 pkg syscall (freebsd-386-cgo), type RtMsghdr struct, Errno int32 pkg syscall (freebsd-386-cgo), type RtMsghdr struct, Flags int32 pkg syscall (freebsd-386-cgo), type RtMsghdr struct, Fmask int32 pkg syscall (freebsd-386-cgo), type RtMsghdr struct, Index uint16 pkg syscall (freebsd-386-cgo), type RtMsghdr struct, Inits uint32 pkg syscall (freebsd-386-cgo), type RtMsghdr struct, Msglen uint16 pkg syscall (freebsd-386-cgo), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-386-cgo), type RtMsghdr struct, Pid int32 pkg syscall (freebsd-386-cgo), type RtMsghdr struct, Rmx RtMetrics pkg syscall (freebsd-386-cgo), type RtMsghdr struct, Seq int32 pkg syscall (freebsd-386-cgo), type RtMsghdr struct, Type uint8 pkg syscall (freebsd-386-cgo), type RtMsghdr struct, Version uint8 pkg syscall (freebsd-386-cgo), type Rusage struct, Idrss int32 pkg syscall (freebsd-386-cgo), type Rusage struct, Inblock int32 pkg syscall (freebsd-386-cgo), type Rusage struct, Isrss int32 pkg syscall (freebsd-386-cgo), type Rusage struct, Ixrss int32 pkg syscall (freebsd-386-cgo), type Rusage struct, Majflt int32 pkg syscall (freebsd-386-cgo), type Rusage struct, Maxrss int32 pkg syscall (freebsd-386-cgo), type Rusage struct, Minflt int32 pkg syscall (freebsd-386-cgo), type Rusage struct, Msgrcv int32 pkg syscall (freebsd-386-cgo), type Rusage struct, Msgsnd int32 pkg syscall (freebsd-386-cgo), type Rusage struct, Nivcsw int32 pkg syscall (freebsd-386-cgo), type Rusage struct, Nsignals int32 pkg syscall (freebsd-386-cgo), type Rusage struct, Nswap int32 pkg syscall (freebsd-386-cgo), type Rusage struct, Nvcsw int32 pkg syscall (freebsd-386-cgo), type Rusage struct, Oublock int32 pkg syscall (freebsd-386-cgo), type Rusage struct, Stime Timeval pkg syscall (freebsd-386-cgo), type Rusage struct, Utime Timeval pkg syscall (freebsd-386-cgo), type SockaddrDatalink struct pkg syscall (freebsd-386-cgo), type SockaddrDatalink struct, Alen uint8 pkg syscall (freebsd-386-cgo), type SockaddrDatalink struct, Data [46]int8 pkg syscall (freebsd-386-cgo), type SockaddrDatalink struct, Family uint8 pkg syscall (freebsd-386-cgo), type SockaddrDatalink struct, Index uint16 pkg syscall (freebsd-386-cgo), type SockaddrDatalink struct, Len uint8 pkg syscall (freebsd-386-cgo), type SockaddrDatalink struct, Nlen uint8 pkg syscall (freebsd-386-cgo), type SockaddrDatalink struct, Slen uint8 pkg syscall (freebsd-386-cgo), type SockaddrDatalink struct, Type uint8 pkg syscall (freebsd-386-cgo), type SocketControlMessage struct pkg syscall (freebsd-386-cgo), type SocketControlMessage struct, Data []uint8 pkg syscall (freebsd-386-cgo), type SocketControlMessage struct, Header Cmsghdr pkg syscall (freebsd-386-cgo), type Stat_t struct pkg syscall (freebsd-386-cgo), type Stat_t struct, Atimespec Timespec pkg syscall (freebsd-386-cgo), type Stat_t struct, Birthtimespec Timespec pkg syscall (freebsd-386-cgo), type Stat_t struct, Blksize uint32 pkg syscall (freebsd-386-cgo), type Stat_t struct, Blocks int64 pkg syscall (freebsd-386-cgo), type Stat_t struct, Ctimespec Timespec pkg syscall (freebsd-386-cgo), type Stat_t struct, Dev uint32 pkg syscall (freebsd-386-cgo), type Stat_t struct, Flags uint32 pkg syscall (freebsd-386-cgo), type Stat_t struct, Gen uint32 pkg syscall (freebsd-386-cgo), type Stat_t struct, Gid uint32 pkg syscall (freebsd-386-cgo), type Stat_t struct, Ino uint32 pkg syscall (freebsd-386-cgo), type Stat_t struct, Lspare int32 pkg syscall (freebsd-386-cgo), type Stat_t struct, Mode uint16 pkg syscall (freebsd-386-cgo), type Stat_t struct, Mtimespec Timespec pkg syscall (freebsd-386-cgo), type Stat_t struct, Nlink uint16 pkg syscall (freebsd-386-cgo), type Stat_t struct, Pad_cgo_0 [8]uint8 pkg syscall (freebsd-386-cgo), type Stat_t struct, Rdev uint32 pkg syscall (freebsd-386-cgo), type Stat_t struct, Size int64 pkg syscall (freebsd-386-cgo), type Stat_t struct, Uid uint32 pkg syscall (freebsd-386-cgo), type Statfs_t struct pkg syscall (freebsd-386-cgo), type Statfs_t struct, Asyncreads uint64 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Asyncwrites uint64 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Bavail int64 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Bfree uint64 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Blocks uint64 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Bsize uint64 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Charspare [80]int8 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Ffree int64 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Files uint64 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Flags uint64 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Fsid Fsid pkg syscall (freebsd-386-cgo), type Statfs_t struct, Fstypename [16]int8 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Iosize uint64 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Mntfromname [88]int8 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Mntonname [88]int8 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Namemax uint32 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Owner uint32 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Spare [10]uint64 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Syncreads uint64 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Syncwrites uint64 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Type uint32 pkg syscall (freebsd-386-cgo), type Statfs_t struct, Version uint32 pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Chroot string pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Credential *Credential pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Noctty bool pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Ptrace bool pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Setctty bool pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Setpgid bool pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Setsid bool pkg syscall (freebsd-386-cgo), type Timespec struct, Nsec int32 pkg syscall (freebsd-386-cgo), type Timespec struct, Sec int32 pkg syscall (freebsd-386-cgo), type Timeval struct, Sec int32 pkg syscall (freebsd-386-cgo), type Timeval struct, Usec int32 pkg syscall (freebsd-386-cgo), type WaitStatus uint32 pkg syscall (freebsd-386-cgo), var Stderr int pkg syscall (freebsd-386-cgo), var Stdin int pkg syscall (freebsd-386-cgo), var Stdout int pkg syscall (freebsd-amd64), const F_DUP2FD_CLOEXEC = 18 pkg syscall (freebsd-amd64), const F_DUP2FD_CLOEXEC ideal-int pkg syscall (freebsd-amd64), const F_DUPFD_CLOEXEC = 17 pkg syscall (freebsd-amd64), const F_DUPFD_CLOEXEC ideal-int pkg syscall (freebsd-amd64), const ICMP6_FILTER = 18 pkg syscall (freebsd-amd64), const ICMP6_FILTER ideal-int pkg syscall (freebsd-amd64), const PRIO_PGRP = 1 pkg syscall (freebsd-amd64), const PRIO_PGRP ideal-int pkg syscall (freebsd-amd64), const PRIO_PROCESS = 0 pkg syscall (freebsd-amd64), const PRIO_PROCESS ideal-int pkg syscall (freebsd-amd64), const PRIO_USER = 2 pkg syscall (freebsd-amd64), const PRIO_USER ideal-int pkg syscall (freebsd-amd64), const SizeofICMPv6Filter = 32 pkg syscall (freebsd-amd64), const SizeofICMPv6Filter ideal-int pkg syscall (freebsd-amd64), const SizeofIPv6MTUInfo = 32 pkg syscall (freebsd-amd64), const SizeofIPv6MTUInfo ideal-int pkg syscall (freebsd-amd64), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (freebsd-amd64), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (freebsd-amd64), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (freebsd-amd64), type ICMPv6Filter struct pkg syscall (freebsd-amd64), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (freebsd-amd64), type IPv6MTUInfo struct pkg syscall (freebsd-amd64), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (freebsd-amd64), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (freebsd-amd64-cgo), const AF_APPLETALK ideal-int pkg syscall (freebsd-amd64-cgo), const AF_ARP ideal-int pkg syscall (freebsd-amd64-cgo), const AF_ATM ideal-int pkg syscall (freebsd-amd64-cgo), const AF_BLUETOOTH ideal-int pkg syscall (freebsd-amd64-cgo), const AF_CCITT ideal-int pkg syscall (freebsd-amd64-cgo), const AF_CHAOS ideal-int pkg syscall (freebsd-amd64-cgo), const AF_CNT ideal-int pkg syscall (freebsd-amd64-cgo), const AF_COIP ideal-int pkg syscall (freebsd-amd64-cgo), const AF_DATAKIT ideal-int pkg syscall (freebsd-amd64-cgo), const AF_DECnet ideal-int pkg syscall (freebsd-amd64-cgo), const AF_DLI ideal-int pkg syscall (freebsd-amd64-cgo), const AF_E164 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_ECMA ideal-int pkg syscall (freebsd-amd64-cgo), const AF_HYLINK ideal-int pkg syscall (freebsd-amd64-cgo), const AF_IEEE80211 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_IMPLINK ideal-int pkg syscall (freebsd-amd64-cgo), const AF_IPX ideal-int pkg syscall (freebsd-amd64-cgo), const AF_ISDN ideal-int pkg syscall (freebsd-amd64-cgo), const AF_ISO ideal-int pkg syscall (freebsd-amd64-cgo), const AF_LAT ideal-int pkg syscall (freebsd-amd64-cgo), const AF_LINK ideal-int pkg syscall (freebsd-amd64-cgo), const AF_LOCAL ideal-int pkg syscall (freebsd-amd64-cgo), const AF_MAX ideal-int pkg syscall (freebsd-amd64-cgo), const AF_NATM ideal-int pkg syscall (freebsd-amd64-cgo), const AF_NETBIOS ideal-int pkg syscall (freebsd-amd64-cgo), const AF_NETGRAPH ideal-int pkg syscall (freebsd-amd64-cgo), const AF_OSI ideal-int pkg syscall (freebsd-amd64-cgo), const AF_PUP ideal-int pkg syscall (freebsd-amd64-cgo), const AF_ROUTE ideal-int pkg syscall (freebsd-amd64-cgo), const AF_SCLUSTER ideal-int pkg syscall (freebsd-amd64-cgo), const AF_SIP ideal-int pkg syscall (freebsd-amd64-cgo), const AF_SLOW ideal-int pkg syscall (freebsd-amd64-cgo), const AF_SNA ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR00 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR01 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR02 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR03 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR04 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR05 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR06 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR07 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR08 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR09 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR10 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR11 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR12 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR13 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR14 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR15 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR16 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR17 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR18 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR19 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR20 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR21 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR22 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR23 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR24 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR25 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR26 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR27 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR28 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR29 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR30 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR31 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR32 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR33 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR34 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR35 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR36 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR37 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR38 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR39 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR40 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR41 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR42 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR43 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR44 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR45 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR46 ideal-int pkg syscall (freebsd-amd64-cgo), const AF_VENDOR47 ideal-int pkg syscall (freebsd-amd64-cgo), const B0 ideal-int pkg syscall (freebsd-amd64-cgo), const B110 ideal-int pkg syscall (freebsd-amd64-cgo), const B115200 ideal-int pkg syscall (freebsd-amd64-cgo), const B1200 ideal-int pkg syscall (freebsd-amd64-cgo), const B134 ideal-int pkg syscall (freebsd-amd64-cgo), const B14400 ideal-int pkg syscall (freebsd-amd64-cgo), const B150 ideal-int pkg syscall (freebsd-amd64-cgo), const B1800 ideal-int pkg syscall (freebsd-amd64-cgo), const B19200 ideal-int pkg syscall (freebsd-amd64-cgo), const B200 ideal-int pkg syscall (freebsd-amd64-cgo), const B230400 ideal-int pkg syscall (freebsd-amd64-cgo), const B2400 ideal-int pkg syscall (freebsd-amd64-cgo), const B28800 ideal-int pkg syscall (freebsd-amd64-cgo), const B300 ideal-int pkg syscall (freebsd-amd64-cgo), const B38400 ideal-int pkg syscall (freebsd-amd64-cgo), const B460800 ideal-int pkg syscall (freebsd-amd64-cgo), const B4800 ideal-int pkg syscall (freebsd-amd64-cgo), const B50 ideal-int pkg syscall (freebsd-amd64-cgo), const B57600 ideal-int pkg syscall (freebsd-amd64-cgo), const B600 ideal-int pkg syscall (freebsd-amd64-cgo), const B7200 ideal-int pkg syscall (freebsd-amd64-cgo), const B75 ideal-int pkg syscall (freebsd-amd64-cgo), const B76800 ideal-int pkg syscall (freebsd-amd64-cgo), const B921600 ideal-int pkg syscall (freebsd-amd64-cgo), const B9600 ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCFEEDBACK ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCFLUSH ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCGBLEN ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCGDIRECTION ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCGDLT ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCGDLTLIST ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCGETBUFMODE ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCGETIF ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCGETZMAX ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCGHDRCMPLT ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCGRSIG ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCGRTIMEOUT ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCGSEESENT ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCGSTATS ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCGTSTAMP ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCIMMEDIATE ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCLOCK ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCPROMISC ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCROTZBUF ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCSBLEN ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCSDIRECTION ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCSDLT ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCSETBUFMODE ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCSETF ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCSETFNR ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCSETIF ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCSETWF ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCSETZBUF ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCSHDRCMPLT ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCSRSIG ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCSRTIMEOUT ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCSSEESENT ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCSTSTAMP ideal-int pkg syscall (freebsd-amd64-cgo), const BIOCVERSION ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_A ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_ABS ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_ADD ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_ALIGNMENT ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_ALU ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_AND ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_B ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_BUFMODE_BUFFER ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_BUFMODE_ZBUF ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_DIV ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_H ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_IMM ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_IND ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_JA ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_JEQ ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_JGE ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_JGT ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_JMP ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_JSET ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_K ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_LD ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_LDX ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_LEN ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_LSH ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_MAJOR_VERSION ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_MAXBUFSIZE ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_MAXINSNS ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_MEM ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_MEMWORDS ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_MINBUFSIZE ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_MINOR_VERSION ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_MISC ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_MSH ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_MUL ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_NEG ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_OR ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_RELEASE ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_RET ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_RSH ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_ST ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_STX ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_SUB ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_TAX ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_TXA ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_BINTIME ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_BINTIME_FAST ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_BINTIME_MONOTONIC ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_BINTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_FAST ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_FLAG_MASK ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_FORMAT_MASK ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_MICROTIME ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_MICROTIME_FAST ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_MICROTIME_MONOTONIC ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_MICROTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_MONOTONIC ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_MONOTONIC_FAST ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_NANOTIME ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_NANOTIME_FAST ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_NANOTIME_MONOTONIC ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_NANOTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_NONE ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_T_NORMAL ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_W ideal-int pkg syscall (freebsd-amd64-cgo), const BPF_X ideal-int pkg syscall (freebsd-amd64-cgo), const BRKINT ideal-int pkg syscall (freebsd-amd64-cgo), const CFLUSH ideal-int pkg syscall (freebsd-amd64-cgo), const CLOCAL ideal-int pkg syscall (freebsd-amd64-cgo), const CREAD ideal-int pkg syscall (freebsd-amd64-cgo), const CS5 ideal-int pkg syscall (freebsd-amd64-cgo), const CS6 ideal-int pkg syscall (freebsd-amd64-cgo), const CS7 ideal-int pkg syscall (freebsd-amd64-cgo), const CS8 ideal-int pkg syscall (freebsd-amd64-cgo), const CSIZE ideal-int pkg syscall (freebsd-amd64-cgo), const CSTART ideal-int pkg syscall (freebsd-amd64-cgo), const CSTATUS ideal-int pkg syscall (freebsd-amd64-cgo), const CSTOP ideal-int pkg syscall (freebsd-amd64-cgo), const CSTOPB ideal-int pkg syscall (freebsd-amd64-cgo), const CSUSP ideal-int pkg syscall (freebsd-amd64-cgo), const CTL_MAXNAME ideal-int pkg syscall (freebsd-amd64-cgo), const CTL_NET ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_A429 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_A653_ICM ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_AIRONET_HEADER ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_AOS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_ARCNET ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_ARCNET_LINUX ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_ATM_CLIP ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_ATM_RFC1483 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_AURORA ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_AX25 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_AX25_KISS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_BACNET_MS_TP ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_BLUETOOTH_HCI_H4 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_CAN20B ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_CAN_SOCKETCAN ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_CHAOS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_CHDLC ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_CISCO_IOS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_C_HDLC ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_C_HDLC_WITH_DIR ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_DBUS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_DECT ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_DOCSIS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_DVB_CI ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_ECONET ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_EN10MB ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_EN3MB ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_ENC ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_ERF ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_ERF_ETH ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_ERF_POS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_FC_2 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_FDDI ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_FLEXRAY ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_FRELAY ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_FRELAY_WITH_DIR ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_GCOM_SERIAL ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_GCOM_T1E1 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_GPF_F ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_GPF_T ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_GPRS_LLC ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_GSMTAP_ABIS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_GSMTAP_UM ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_HHDLC ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IBM_SN ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IBM_SP ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_11 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_15_4 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_15_4_LINUX ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_15_4_NOFCS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_15_4_NONASK_PHY ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_16_MAC_CPS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IPFILTER ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IPMB ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IPMB_LINUX ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IPNET ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IPOIB ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IPV4 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IPV6 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_IP_OVER_FC ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_ATM1 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_ATM2 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_ATM_CEMIC ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_CHDLC ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_ES ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_ETHER ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_FIBRECHANNEL ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_FRELAY ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_GGSN ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_ISM ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_MFR ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_MLFR ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_MLPPP ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_MONITOR ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_PIC_PEER ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_PPP ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_PPPOE ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_PPPOE_ATM ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_SERVICES ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_SRX_E2E ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_ST ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_VP ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_JUNIPER_VS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_LAPB_WITH_DIR ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_LAPD ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_LIN ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_LINUX_EVDEV ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_LINUX_IRDA ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_LINUX_LAPD ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_LINUX_PPP_WITHDIRECTION ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_LINUX_SLL ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_LOOP ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_LTALK ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_MATCHING_MAX ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_MATCHING_MIN ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_MFR ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_MOST ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_MPLS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_MTP2 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_MTP2_WITH_PHDR ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_MTP3 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_MUX27010 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_NETANALYZER ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_NETANALYZER_TRANSPARENT ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_NFLOG ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_NULL ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_PCI_EXP ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_PFLOG ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_PFSYNC ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_PPI ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_PPP ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_PPP_BSDOS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_PPP_ETHER ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_PPP_PPPD ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_PPP_SERIAL ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_PPP_WITH_DIR ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_PPP_WITH_DIRECTION ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_PRISM_HEADER ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_PRONET ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_RAIF1 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_RAW ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_RIO ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_SCCP ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_SITA ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_SLIP ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_SLIP_BSDOS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_STANAG_5066_D_PDU ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_SUNATM ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_SYMANTEC_FIREWALL ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_TZSP ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USB ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USB_LINUX ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USB_LINUX_MMAPPED ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER0 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER1 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER10 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER11 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER12 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER13 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER14 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER15 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER2 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER3 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER4 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER5 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER6 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER7 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER8 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_USER9 ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_WIHART ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_X2E_SERIAL ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_X2E_XORAYA ideal-int pkg syscall (freebsd-amd64-cgo), const DT_BLK ideal-int pkg syscall (freebsd-amd64-cgo), const DT_CHR ideal-int pkg syscall (freebsd-amd64-cgo), const DT_DIR ideal-int pkg syscall (freebsd-amd64-cgo), const DT_FIFO ideal-int pkg syscall (freebsd-amd64-cgo), const DT_LNK ideal-int pkg syscall (freebsd-amd64-cgo), const DT_REG ideal-int pkg syscall (freebsd-amd64-cgo), const DT_SOCK ideal-int pkg syscall (freebsd-amd64-cgo), const DT_UNKNOWN ideal-int pkg syscall (freebsd-amd64-cgo), const DT_WHT ideal-int pkg syscall (freebsd-amd64-cgo), const EAUTH Errno pkg syscall (freebsd-amd64-cgo), const EBADMSG Errno pkg syscall (freebsd-amd64-cgo), const EBADRPC Errno pkg syscall (freebsd-amd64-cgo), const ECAPMODE Errno pkg syscall (freebsd-amd64-cgo), const ECHO ideal-int pkg syscall (freebsd-amd64-cgo), const ECHOCTL ideal-int pkg syscall (freebsd-amd64-cgo), const ECHOE ideal-int pkg syscall (freebsd-amd64-cgo), const ECHOK ideal-int pkg syscall (freebsd-amd64-cgo), const ECHOKE ideal-int pkg syscall (freebsd-amd64-cgo), const ECHONL ideal-int pkg syscall (freebsd-amd64-cgo), const ECHOPRT ideal-int pkg syscall (freebsd-amd64-cgo), const EDOOFUS Errno pkg syscall (freebsd-amd64-cgo), const EFTYPE Errno pkg syscall (freebsd-amd64-cgo), const ELAST Errno pkg syscall (freebsd-amd64-cgo), const EMULTIHOP Errno pkg syscall (freebsd-amd64-cgo), const ENEEDAUTH Errno pkg syscall (freebsd-amd64-cgo), const ENOATTR Errno pkg syscall (freebsd-amd64-cgo), const ENOLINK Errno pkg syscall (freebsd-amd64-cgo), const ENOTCAPABLE Errno pkg syscall (freebsd-amd64-cgo), const EPROCLIM Errno pkg syscall (freebsd-amd64-cgo), const EPROCUNAVAIL Errno pkg syscall (freebsd-amd64-cgo), const EPROGMISMATCH Errno pkg syscall (freebsd-amd64-cgo), const EPROGUNAVAIL Errno pkg syscall (freebsd-amd64-cgo), const EPROTO Errno pkg syscall (freebsd-amd64-cgo), const ERPCMISMATCH Errno pkg syscall (freebsd-amd64-cgo), const EVFILT_AIO ideal-int pkg syscall (freebsd-amd64-cgo), const EVFILT_FS ideal-int pkg syscall (freebsd-amd64-cgo), const EVFILT_LIO ideal-int pkg syscall (freebsd-amd64-cgo), const EVFILT_PROC ideal-int pkg syscall (freebsd-amd64-cgo), const EVFILT_READ ideal-int pkg syscall (freebsd-amd64-cgo), const EVFILT_SIGNAL ideal-int pkg syscall (freebsd-amd64-cgo), const EVFILT_SYSCOUNT ideal-int pkg syscall (freebsd-amd64-cgo), const EVFILT_TIMER ideal-int pkg syscall (freebsd-amd64-cgo), const EVFILT_USER ideal-int pkg syscall (freebsd-amd64-cgo), const EVFILT_VNODE ideal-int pkg syscall (freebsd-amd64-cgo), const EVFILT_WRITE ideal-int pkg syscall (freebsd-amd64-cgo), const EV_ADD ideal-int pkg syscall (freebsd-amd64-cgo), const EV_CLEAR ideal-int pkg syscall (freebsd-amd64-cgo), const EV_DELETE ideal-int pkg syscall (freebsd-amd64-cgo), const EV_DISABLE ideal-int pkg syscall (freebsd-amd64-cgo), const EV_DISPATCH ideal-int pkg syscall (freebsd-amd64-cgo), const EV_ENABLE ideal-int pkg syscall (freebsd-amd64-cgo), const EV_EOF ideal-int pkg syscall (freebsd-amd64-cgo), const EV_ERROR ideal-int pkg syscall (freebsd-amd64-cgo), const EV_FLAG1 ideal-int pkg syscall (freebsd-amd64-cgo), const EV_ONESHOT ideal-int pkg syscall (freebsd-amd64-cgo), const EV_RECEIPT ideal-int pkg syscall (freebsd-amd64-cgo), const EV_SYSFLAGS ideal-int pkg syscall (freebsd-amd64-cgo), const EXTA ideal-int pkg syscall (freebsd-amd64-cgo), const EXTB ideal-int pkg syscall (freebsd-amd64-cgo), const EXTPROC ideal-int pkg syscall (freebsd-amd64-cgo), const FD_CLOEXEC ideal-int pkg syscall (freebsd-amd64-cgo), const FD_SETSIZE ideal-int pkg syscall (freebsd-amd64-cgo), const FLUSHO ideal-int pkg syscall (freebsd-amd64-cgo), const F_CANCEL ideal-int pkg syscall (freebsd-amd64-cgo), const F_DUP2FD ideal-int pkg syscall (freebsd-amd64-cgo), const F_DUP2FD_CLOEXEC = 18 pkg syscall (freebsd-amd64-cgo), const F_DUP2FD_CLOEXEC ideal-int pkg syscall (freebsd-amd64-cgo), const F_DUPFD ideal-int pkg syscall (freebsd-amd64-cgo), const F_DUPFD_CLOEXEC = 17 pkg syscall (freebsd-amd64-cgo), const F_DUPFD_CLOEXEC ideal-int pkg syscall (freebsd-amd64-cgo), const F_GETFD ideal-int pkg syscall (freebsd-amd64-cgo), const F_GETFL ideal-int pkg syscall (freebsd-amd64-cgo), const F_GETLK ideal-int pkg syscall (freebsd-amd64-cgo), const F_GETOWN ideal-int pkg syscall (freebsd-amd64-cgo), const F_OGETLK ideal-int pkg syscall (freebsd-amd64-cgo), const F_OK ideal-int pkg syscall (freebsd-amd64-cgo), const F_OSETLK ideal-int pkg syscall (freebsd-amd64-cgo), const F_OSETLKW ideal-int pkg syscall (freebsd-amd64-cgo), const F_RDAHEAD ideal-int pkg syscall (freebsd-amd64-cgo), const F_RDLCK ideal-int pkg syscall (freebsd-amd64-cgo), const F_READAHEAD ideal-int pkg syscall (freebsd-amd64-cgo), const F_SETFD ideal-int pkg syscall (freebsd-amd64-cgo), const F_SETFL ideal-int pkg syscall (freebsd-amd64-cgo), const F_SETLK ideal-int pkg syscall (freebsd-amd64-cgo), const F_SETLKW ideal-int pkg syscall (freebsd-amd64-cgo), const F_SETLK_REMOTE ideal-int pkg syscall (freebsd-amd64-cgo), const F_SETOWN ideal-int pkg syscall (freebsd-amd64-cgo), const F_UNLCK ideal-int pkg syscall (freebsd-amd64-cgo), const F_UNLCKSYS ideal-int pkg syscall (freebsd-amd64-cgo), const F_WRLCK ideal-int pkg syscall (freebsd-amd64-cgo), const HUPCL ideal-int pkg syscall (freebsd-amd64-cgo), const ICANON ideal-int pkg syscall (freebsd-amd64-cgo), const ICMP6_FILTER = 18 pkg syscall (freebsd-amd64-cgo), const ICMP6_FILTER ideal-int pkg syscall (freebsd-amd64-cgo), const ICRNL ideal-int pkg syscall (freebsd-amd64-cgo), const IEXTEN ideal-int pkg syscall (freebsd-amd64-cgo), const IFAN_ARRIVAL ideal-int pkg syscall (freebsd-amd64-cgo), const IFAN_DEPARTURE ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_ALLMULTI ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_ALTPHYS ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_CANTCHANGE ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_CANTCONFIG ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_DEBUG ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_DRV_OACTIVE ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_DRV_RUNNING ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_DYING ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_LINK0 ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_LINK1 ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_LINK2 ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_MONITOR ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_NOARP ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_OACTIVE ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_POINTOPOINT ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_PPROMISC ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_PROMISC ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_RENAMING ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_RUNNING ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_SIMPLEX ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_SMART ideal-int pkg syscall (freebsd-amd64-cgo), const IFF_STATICARP ideal-int pkg syscall (freebsd-amd64-cgo), const IFNAMSIZ ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_1822 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_A12MPPSWITCH ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_AAL2 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_AAL5 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ADSL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_AFLANE8023 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_AFLANE8025 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ARAP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ARCNET ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ARCNETPLUS ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ASYNC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ATM ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ATMDXI ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ATMFUNI ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ATMIMA ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ATMLOGICAL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ATMRADIO ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ATMVCIENDPT ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ATMVIRTUAL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_BRIDGE ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_BSC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_CARP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_CCTEMUL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_CEPT ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_CES ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_CHANNEL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_CNR ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_COFFEE ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_COMPOSITELINK ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DCN ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DLSW ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DS0 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DS0BUNDLE ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DS1FDL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DS3 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DTM ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DVBASILN ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DVBASIOUT ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ENC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_EON ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_EPLRS ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ESCON ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ETHER ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_FAITH ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_FAST ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_FASTETHER ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_FASTETHERFX ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_FDDI ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_FIBRECHANNEL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_FRAMERELAYMPI ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_FRDLCIENDPT ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_FRELAY ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_FRELAYDCE ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_FRFORWARD ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_G703AT2MB ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_G703AT64K ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_GIF ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_GIGABITETHERNET ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_GR303IDT ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_GR303RDT ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_H323GATEKEEPER ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_H323PROXY ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_HDH1822 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_HDLC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_HDSL2 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_HIPERLAN2 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_HIPPI ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_HIPPIINTERFACE ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_HOSTPAD ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_HSSI ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_HY ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IBM370PARCHAN ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IDSL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IEEE1394 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IEEE80211 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IEEE80212 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IEEE8023ADLAG ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IFGSN ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IMT ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_INFINIBAND ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_INTERLEAVE ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IPFORWARD ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IPOVERATM ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IPOVERCDLC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IPOVERCLAW ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IPSWITCH ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_IPXIP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ISDN ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ISDNBASIC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ISDNPRIMARY ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ISDNS ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ISDNU ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ISO88022LLC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ISO88023 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ISO88024 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ISO88025 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ISO88025CRFPINT ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ISO88025DTR ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ISO88025FIBER ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ISO88026 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ISUP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_L2VLAN ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_L3IPVLAN ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_L3IPXVLAN ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_LAPB ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_LAPD ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_LAPF ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_LOCALTALK ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_LOOP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_MFSIGLINK ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_MIOX25 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_MODEM ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_MPC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_MPLS ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_MPLSTUNNEL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_MSDSL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_MVL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_MYRINET ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_NFAS ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_NSIP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_OPTICALCHANNEL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_OTHER ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_P10 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_P80 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PARA ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PFLOG ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PFSYNC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PLC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_POS ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PPP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PROPBWAP2MP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PROPCNLS ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PROPMUX ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PROPVIRTUAL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PTPSERIAL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_PVC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_QLLC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_RADIOMAC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_RADSL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_REACHDSL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_RFC1483 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_RS232 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_RSRB ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_SDLC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_SDSL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_SHDSL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_SIP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_SLIP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_SMDSDXI ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_SMDSICIP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_SONET ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_SONETPATH ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_SONETVT ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_SRP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_SS7SIGLINK ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_STACKTOSTACK ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_STARLAN ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_STF ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_T1 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_TDLC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_TERMPAD ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_TR008 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_TRANSPHDLC ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_TUNNEL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_ULTRA ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_USB ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_V11 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_V35 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_V36 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_V37 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_VDSL ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_VOICEEM ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_VOICEENCAP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_VOICEFXO ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_VOICEFXS ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_VOICEOVERATM ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_VOICEOVERIP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_X213 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_X25 ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_X25DDN ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_X25HUNTGROUP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_X25MLP ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_X25PLE ideal-int pkg syscall (freebsd-amd64-cgo), const IFT_XETHER ideal-int pkg syscall (freebsd-amd64-cgo), const IGNBRK ideal-int pkg syscall (freebsd-amd64-cgo), const IGNCR ideal-int pkg syscall (freebsd-amd64-cgo), const IGNPAR ideal-int pkg syscall (freebsd-amd64-cgo), const IMAXBEL ideal-int pkg syscall (freebsd-amd64-cgo), const INLCR ideal-int pkg syscall (freebsd-amd64-cgo), const INPCK ideal-int pkg syscall (freebsd-amd64-cgo), const IN_CLASSA_HOST ideal-int pkg syscall (freebsd-amd64-cgo), const IN_CLASSA_MAX ideal-int pkg syscall (freebsd-amd64-cgo), const IN_CLASSA_NET ideal-int pkg syscall (freebsd-amd64-cgo), const IN_CLASSA_NSHIFT ideal-int pkg syscall (freebsd-amd64-cgo), const IN_CLASSB_HOST ideal-int pkg syscall (freebsd-amd64-cgo), const IN_CLASSB_MAX ideal-int pkg syscall (freebsd-amd64-cgo), const IN_CLASSB_NET ideal-int pkg syscall (freebsd-amd64-cgo), const IN_CLASSB_NSHIFT ideal-int pkg syscall (freebsd-amd64-cgo), const IN_CLASSC_HOST ideal-int pkg syscall (freebsd-amd64-cgo), const IN_CLASSC_NET ideal-int pkg syscall (freebsd-amd64-cgo), const IN_CLASSC_NSHIFT ideal-int pkg syscall (freebsd-amd64-cgo), const IN_CLASSD_HOST ideal-int pkg syscall (freebsd-amd64-cgo), const IN_CLASSD_NET ideal-int pkg syscall (freebsd-amd64-cgo), const IN_CLASSD_NSHIFT ideal-int pkg syscall (freebsd-amd64-cgo), const IN_LOOPBACKNET ideal-int pkg syscall (freebsd-amd64-cgo), const IN_RFC3021_MASK ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_3PC ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_ADFS ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_AH ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_AHIP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_APES ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_ARGUS ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_AX25 ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_BHA ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_BLT ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_BRSATMON ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_CARP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_CFTP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_CHAOS ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_CMTP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_CPHB ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_CPNX ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_DDP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_DGP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_DIVERT ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_DONE ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_DSTOPTS ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_EGP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_EMCON ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_ENCAP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_EON ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_ESP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_ETHERIP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_FRAGMENT ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_GGP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_GMTP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_GRE ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_HELLO ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_HMP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_HOPOPTS ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_ICMP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_ICMPV6 ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_IDP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_IDPR ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_IDRP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_IGMP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_IGP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_IGRP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_IL ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_INLSP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_INP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_IPCOMP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_IPCV ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_IPEIP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_IPIP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_IPPC ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_IPV4 ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_IRTP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_KRYPTOLAN ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_LARP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_LEAF1 ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_LEAF2 ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_MAX ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_MAXID ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_MEAS ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_MH ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_MHRP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_MICP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_MOBILE ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_MTP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_MUX ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_ND ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_NHRP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_NONE ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_NSP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_NVPII ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_OLD_DIVERT ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_OSPFIGP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_PFSYNC ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_PGM ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_PIGP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_PIM ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_PRM ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_PUP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_PVP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_RAW ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_RCCMON ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_RDP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_ROUTING ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_RSVP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_RVD ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_SATEXPAK ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_SATMON ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_SCCSP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_SCTP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_SDRP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_SEND ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_SEP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_SKIP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_SPACER ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_SRPC ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_ST ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_SVMTP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_SWIPE ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_TCF ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_TLSP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_TP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_TPXX ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_TRUNK1 ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_TRUNK2 ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_TTP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_VINES ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_VISA ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_VMTP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_WBEXPAK ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_WBMON ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_WSN ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_XNET ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_XTP ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_AUTOFLOWLABEL ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_BINDANY ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_BINDV6ONLY ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_CHECKSUM ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_DEFHLIM ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_DONTFRAG ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_DSTOPTS ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_FAITH ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_FRAGTTL ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_FW_ADD ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_FW_DEL ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_FW_FLUSH ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_FW_GET ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_FW_ZERO ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_HLIMDEC ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_HOPLIMIT ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_HOPOPTS ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_IPSEC_POLICY ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_MAXHLIM ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_MAXOPTHDR ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_MAXPACKET ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_MAX_MEMBERSHIPS ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_MIN_MEMBERSHIPS ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_MMTU ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_MSFILTER ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_NEXTHOP ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_PATHMTU ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_PKTINFO ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_PORTRANGE ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_PREFER_TEMPADDR ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_RECVDSTOPTS ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_RECVHOPOPTS ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_RECVPATHMTU ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_RECVPKTINFO ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_RECVRTHDR ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_RECVTCLASS ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_RTHDR ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_RTHDR_STRICT ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_TCLASS ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_USE_MIN_MTU ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_VERSION ideal-int pkg syscall (freebsd-amd64-cgo), const IPV6_VERSION_MASK ideal-int pkg syscall (freebsd-amd64-cgo), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (freebsd-amd64-cgo), const IP_BINDANY ideal-int pkg syscall (freebsd-amd64-cgo), const IP_BLOCK_SOURCE ideal-int pkg syscall (freebsd-amd64-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (freebsd-amd64-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (freebsd-amd64-cgo), const IP_DF ideal-int pkg syscall (freebsd-amd64-cgo), const IP_DONTFRAG ideal-int pkg syscall (freebsd-amd64-cgo), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (freebsd-amd64-cgo), const IP_DUMMYNET3 ideal-int pkg syscall (freebsd-amd64-cgo), const IP_DUMMYNET_CONFIGURE ideal-int pkg syscall (freebsd-amd64-cgo), const IP_DUMMYNET_DEL ideal-int pkg syscall (freebsd-amd64-cgo), const IP_DUMMYNET_FLUSH ideal-int pkg syscall (freebsd-amd64-cgo), const IP_DUMMYNET_GET ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FAITH ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW3 ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_ADD ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_DEL ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_FLUSH ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_GET ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_NAT_CFG ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_NAT_DEL ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_NAT_GET_CONFIG ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_NAT_GET_LOG ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_RESETLOG ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_TABLE_ADD ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_TABLE_DEL ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_TABLE_FLUSH ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_TABLE_GETSIZE ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_TABLE_LIST ideal-int pkg syscall (freebsd-amd64-cgo), const IP_FW_ZERO ideal-int pkg syscall (freebsd-amd64-cgo), const IP_HDRINCL ideal-int pkg syscall (freebsd-amd64-cgo), const IP_IPSEC_POLICY ideal-int pkg syscall (freebsd-amd64-cgo), const IP_MAXPACKET ideal-int pkg syscall (freebsd-amd64-cgo), const IP_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (freebsd-amd64-cgo), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (freebsd-amd64-cgo), const IP_MAX_SOCK_MUTE_FILTER ideal-int pkg syscall (freebsd-amd64-cgo), const IP_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (freebsd-amd64-cgo), const IP_MAX_SOURCE_FILTER ideal-int pkg syscall (freebsd-amd64-cgo), const IP_MF ideal-int pkg syscall (freebsd-amd64-cgo), const IP_MINTTL ideal-int pkg syscall (freebsd-amd64-cgo), const IP_MIN_MEMBERSHIPS ideal-int pkg syscall (freebsd-amd64-cgo), const IP_MSFILTER ideal-int pkg syscall (freebsd-amd64-cgo), const IP_MSS ideal-int pkg syscall (freebsd-amd64-cgo), const IP_MULTICAST_VIF ideal-int pkg syscall (freebsd-amd64-cgo), const IP_OFFMASK ideal-int pkg syscall (freebsd-amd64-cgo), const IP_ONESBCAST ideal-int pkg syscall (freebsd-amd64-cgo), const IP_OPTIONS ideal-int pkg syscall (freebsd-amd64-cgo), const IP_PORTRANGE ideal-int pkg syscall (freebsd-amd64-cgo), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (freebsd-amd64-cgo), const IP_PORTRANGE_HIGH ideal-int pkg syscall (freebsd-amd64-cgo), const IP_PORTRANGE_LOW ideal-int pkg syscall (freebsd-amd64-cgo), const IP_RECVDSTADDR ideal-int pkg syscall (freebsd-amd64-cgo), const IP_RECVIF ideal-int pkg syscall (freebsd-amd64-cgo), const IP_RECVOPTS ideal-int pkg syscall (freebsd-amd64-cgo), const IP_RECVRETOPTS ideal-int pkg syscall (freebsd-amd64-cgo), const IP_RECVTOS ideal-int pkg syscall (freebsd-amd64-cgo), const IP_RECVTTL ideal-int pkg syscall (freebsd-amd64-cgo), const IP_RETOPTS ideal-int pkg syscall (freebsd-amd64-cgo), const IP_RF ideal-int pkg syscall (freebsd-amd64-cgo), const IP_RSVP_OFF ideal-int pkg syscall (freebsd-amd64-cgo), const IP_RSVP_ON ideal-int pkg syscall (freebsd-amd64-cgo), const IP_RSVP_VIF_OFF ideal-int pkg syscall (freebsd-amd64-cgo), const IP_RSVP_VIF_ON ideal-int pkg syscall (freebsd-amd64-cgo), const IP_SENDSRCADDR ideal-int pkg syscall (freebsd-amd64-cgo), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (freebsd-amd64-cgo), const ISIG ideal-int pkg syscall (freebsd-amd64-cgo), const ISTRIP ideal-int pkg syscall (freebsd-amd64-cgo), const IXANY ideal-int pkg syscall (freebsd-amd64-cgo), const IXOFF ideal-int pkg syscall (freebsd-amd64-cgo), const IXON ideal-int pkg syscall (freebsd-amd64-cgo), const LOCK_EX ideal-int pkg syscall (freebsd-amd64-cgo), const LOCK_NB ideal-int pkg syscall (freebsd-amd64-cgo), const LOCK_SH ideal-int pkg syscall (freebsd-amd64-cgo), const LOCK_UN ideal-int pkg syscall (freebsd-amd64-cgo), const MADV_AUTOSYNC ideal-int pkg syscall (freebsd-amd64-cgo), const MADV_CORE ideal-int pkg syscall (freebsd-amd64-cgo), const MADV_DONTNEED ideal-int pkg syscall (freebsd-amd64-cgo), const MADV_FREE ideal-int pkg syscall (freebsd-amd64-cgo), const MADV_NOCORE ideal-int pkg syscall (freebsd-amd64-cgo), const MADV_NORMAL ideal-int pkg syscall (freebsd-amd64-cgo), const MADV_NOSYNC ideal-int pkg syscall (freebsd-amd64-cgo), const MADV_PROTECT ideal-int pkg syscall (freebsd-amd64-cgo), const MADV_RANDOM ideal-int pkg syscall (freebsd-amd64-cgo), const MADV_SEQUENTIAL ideal-int pkg syscall (freebsd-amd64-cgo), const MADV_WILLNEED ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_ANON ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_ANONYMOUS ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_COPY ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_FILE ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_FIXED ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_HASSEMAPHORE ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_NOCORE ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_NORESERVE ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_NOSYNC ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_PREFAULT_READ ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_PRIVATE ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_RENAME ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_RESERVED0080 ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_RESERVED0100 ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_SHARED ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_STACK ideal-int pkg syscall (freebsd-amd64-cgo), const MCL_CURRENT ideal-int pkg syscall (freebsd-amd64-cgo), const MCL_FUTURE ideal-int pkg syscall (freebsd-amd64-cgo), const MSG_COMPAT ideal-int pkg syscall (freebsd-amd64-cgo), const MSG_CTRUNC ideal-int pkg syscall (freebsd-amd64-cgo), const MSG_DONTROUTE ideal-int pkg syscall (freebsd-amd64-cgo), const MSG_DONTWAIT ideal-int pkg syscall (freebsd-amd64-cgo), const MSG_EOF ideal-int pkg syscall (freebsd-amd64-cgo), const MSG_EOR ideal-int pkg syscall (freebsd-amd64-cgo), const MSG_NBIO ideal-int pkg syscall (freebsd-amd64-cgo), const MSG_NOSIGNAL ideal-int pkg syscall (freebsd-amd64-cgo), const MSG_NOTIFICATION ideal-int pkg syscall (freebsd-amd64-cgo), const MSG_OOB ideal-int pkg syscall (freebsd-amd64-cgo), const MSG_PEEK ideal-int pkg syscall (freebsd-amd64-cgo), const MSG_TRUNC ideal-int pkg syscall (freebsd-amd64-cgo), const MSG_WAITALL ideal-int pkg syscall (freebsd-amd64-cgo), const MS_ASYNC ideal-int pkg syscall (freebsd-amd64-cgo), const MS_INVALIDATE ideal-int pkg syscall (freebsd-amd64-cgo), const MS_SYNC ideal-int pkg syscall (freebsd-amd64-cgo), const NET_RT_DUMP ideal-int pkg syscall (freebsd-amd64-cgo), const NET_RT_FLAGS ideal-int pkg syscall (freebsd-amd64-cgo), const NET_RT_IFLIST ideal-int pkg syscall (freebsd-amd64-cgo), const NET_RT_IFLISTL ideal-int pkg syscall (freebsd-amd64-cgo), const NET_RT_IFMALIST ideal-int pkg syscall (freebsd-amd64-cgo), const NET_RT_MAXID ideal-int pkg syscall (freebsd-amd64-cgo), const NOFLSH ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_ATTRIB ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_CHILD ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_DELETE ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_EXEC ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_EXIT ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_EXTEND ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_FFAND ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_FFCOPY ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_FFCTRLMASK ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_FFLAGSMASK ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_FFNOP ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_FFOR ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_FORK ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_LINK ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_LOWAT ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_PCTRLMASK ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_PDATAMASK ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_RENAME ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_REVOKE ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_TRACK ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_TRACKERR ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_TRIGGER ideal-int pkg syscall (freebsd-amd64-cgo), const NOTE_WRITE ideal-int pkg syscall (freebsd-amd64-cgo), const OCRNL ideal-int pkg syscall (freebsd-amd64-cgo), const ONLCR ideal-int pkg syscall (freebsd-amd64-cgo), const ONLRET ideal-int pkg syscall (freebsd-amd64-cgo), const ONOCR ideal-int pkg syscall (freebsd-amd64-cgo), const ONOEOT ideal-int pkg syscall (freebsd-amd64-cgo), const OPOST ideal-int pkg syscall (freebsd-amd64-cgo), const O_ACCMODE ideal-int pkg syscall (freebsd-amd64-cgo), const O_DIRECT ideal-int pkg syscall (freebsd-amd64-cgo), const O_DIRECTORY ideal-int pkg syscall (freebsd-amd64-cgo), const O_EXEC ideal-int pkg syscall (freebsd-amd64-cgo), const O_EXLOCK ideal-int pkg syscall (freebsd-amd64-cgo), const O_FSYNC ideal-int pkg syscall (freebsd-amd64-cgo), const O_NDELAY ideal-int pkg syscall (freebsd-amd64-cgo), const O_NOFOLLOW ideal-int pkg syscall (freebsd-amd64-cgo), const O_SHLOCK ideal-int pkg syscall (freebsd-amd64-cgo), const O_TTY_INIT ideal-int pkg syscall (freebsd-amd64-cgo), const PARENB ideal-int pkg syscall (freebsd-amd64-cgo), const PARMRK ideal-int pkg syscall (freebsd-amd64-cgo), const PARODD ideal-int pkg syscall (freebsd-amd64-cgo), const PENDIN ideal-int pkg syscall (freebsd-amd64-cgo), const PRIO_PGRP = 1 pkg syscall (freebsd-amd64-cgo), const PRIO_PGRP ideal-int pkg syscall (freebsd-amd64-cgo), const PRIO_PROCESS = 0 pkg syscall (freebsd-amd64-cgo), const PRIO_PROCESS ideal-int pkg syscall (freebsd-amd64-cgo), const PRIO_USER = 2 pkg syscall (freebsd-amd64-cgo), const PRIO_USER ideal-int pkg syscall (freebsd-amd64-cgo), const PROT_EXEC ideal-int pkg syscall (freebsd-amd64-cgo), const PROT_NONE ideal-int pkg syscall (freebsd-amd64-cgo), const PROT_READ ideal-int pkg syscall (freebsd-amd64-cgo), const PROT_WRITE ideal-int pkg syscall (freebsd-amd64-cgo), const PTRACE_CONT ideal-int pkg syscall (freebsd-amd64-cgo), const PTRACE_KILL ideal-int pkg syscall (freebsd-amd64-cgo), const PTRACE_TRACEME ideal-int pkg syscall (freebsd-amd64-cgo), const RLIMIT_AS ideal-int pkg syscall (freebsd-amd64-cgo), const RLIMIT_CORE ideal-int pkg syscall (freebsd-amd64-cgo), const RLIMIT_CPU ideal-int pkg syscall (freebsd-amd64-cgo), const RLIMIT_DATA ideal-int pkg syscall (freebsd-amd64-cgo), const RLIMIT_FSIZE ideal-int pkg syscall (freebsd-amd64-cgo), const RLIMIT_NOFILE ideal-int pkg syscall (freebsd-amd64-cgo), const RLIMIT_STACK ideal-int pkg syscall (freebsd-amd64-cgo), const RLIM_INFINITY ideal-int pkg syscall (freebsd-amd64-cgo), const RTAX_AUTHOR ideal-int pkg syscall (freebsd-amd64-cgo), const RTAX_BRD ideal-int pkg syscall (freebsd-amd64-cgo), const RTAX_DST ideal-int pkg syscall (freebsd-amd64-cgo), const RTAX_GATEWAY ideal-int pkg syscall (freebsd-amd64-cgo), const RTAX_GENMASK ideal-int pkg syscall (freebsd-amd64-cgo), const RTAX_IFA ideal-int pkg syscall (freebsd-amd64-cgo), const RTAX_IFP ideal-int pkg syscall (freebsd-amd64-cgo), const RTAX_MAX ideal-int pkg syscall (freebsd-amd64-cgo), const RTAX_NETMASK ideal-int pkg syscall (freebsd-amd64-cgo), const RTA_AUTHOR ideal-int pkg syscall (freebsd-amd64-cgo), const RTA_BRD ideal-int pkg syscall (freebsd-amd64-cgo), const RTA_DST ideal-int pkg syscall (freebsd-amd64-cgo), const RTA_GATEWAY ideal-int pkg syscall (freebsd-amd64-cgo), const RTA_GENMASK ideal-int pkg syscall (freebsd-amd64-cgo), const RTA_IFA ideal-int pkg syscall (freebsd-amd64-cgo), const RTA_IFP ideal-int pkg syscall (freebsd-amd64-cgo), const RTA_NETMASK ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_BLACKHOLE ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_BROADCAST ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_DONE ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_DYNAMIC ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_FMASK ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_GATEWAY ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_HOST ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_LLDATA ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_LLINFO ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_LOCAL ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_MODIFIED ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_MULTICAST ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_PINNED ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_PRCLONING ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_PROTO1 ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_PROTO2 ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_PROTO3 ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_REJECT ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_RNH_LOCKED ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_STATIC ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_STICKY ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_UP ideal-int pkg syscall (freebsd-amd64-cgo), const RTF_XRESOLVE ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_ADD ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_CHANGE ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_DELADDR ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_DELETE ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_DELMADDR ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_GET ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_IEEE80211 ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_IFANNOUNCE ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_IFINFO ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_LOCK ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_LOSING ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_MISS ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_NEWADDR ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_NEWMADDR ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_OLDADD ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_OLDDEL ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_REDIRECT ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_RESOLVE ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_RTTUNIT ideal-int pkg syscall (freebsd-amd64-cgo), const RTM_VERSION ideal-int pkg syscall (freebsd-amd64-cgo), const RTV_EXPIRE ideal-int pkg syscall (freebsd-amd64-cgo), const RTV_HOPCOUNT ideal-int pkg syscall (freebsd-amd64-cgo), const RTV_MTU ideal-int pkg syscall (freebsd-amd64-cgo), const RTV_RPIPE ideal-int pkg syscall (freebsd-amd64-cgo), const RTV_RTT ideal-int pkg syscall (freebsd-amd64-cgo), const RTV_RTTVAR ideal-int pkg syscall (freebsd-amd64-cgo), const RTV_SPIPE ideal-int pkg syscall (freebsd-amd64-cgo), const RTV_SSTHRESH ideal-int pkg syscall (freebsd-amd64-cgo), const RTV_WEIGHT ideal-int pkg syscall (freebsd-amd64-cgo), const RT_CACHING_CONTEXT ideal-int pkg syscall (freebsd-amd64-cgo), const RT_DEFAULT_FIB ideal-int pkg syscall (freebsd-amd64-cgo), const RUSAGE_CHILDREN ideal-int pkg syscall (freebsd-amd64-cgo), const RUSAGE_SELF ideal-int pkg syscall (freebsd-amd64-cgo), const RUSAGE_THREAD ideal-int pkg syscall (freebsd-amd64-cgo), const SCM_BINTIME ideal-int pkg syscall (freebsd-amd64-cgo), const SCM_CREDS ideal-int pkg syscall (freebsd-amd64-cgo), const SCM_RIGHTS ideal-int pkg syscall (freebsd-amd64-cgo), const SCM_TIMESTAMP ideal-int pkg syscall (freebsd-amd64-cgo), const SIGCHLD Signal pkg syscall (freebsd-amd64-cgo), const SIGCONT Signal pkg syscall (freebsd-amd64-cgo), const SIGEMT Signal pkg syscall (freebsd-amd64-cgo), const SIGINFO Signal pkg syscall (freebsd-amd64-cgo), const SIGIO Signal pkg syscall (freebsd-amd64-cgo), const SIGIOT Signal pkg syscall (freebsd-amd64-cgo), const SIGLWP Signal pkg syscall (freebsd-amd64-cgo), const SIGPROF Signal pkg syscall (freebsd-amd64-cgo), const SIGSTOP Signal pkg syscall (freebsd-amd64-cgo), const SIGSYS Signal pkg syscall (freebsd-amd64-cgo), const SIGTHR Signal pkg syscall (freebsd-amd64-cgo), const SIGTSTP Signal pkg syscall (freebsd-amd64-cgo), const SIGTTIN Signal pkg syscall (freebsd-amd64-cgo), const SIGTTOU Signal pkg syscall (freebsd-amd64-cgo), const SIGURG Signal pkg syscall (freebsd-amd64-cgo), const SIGUSR1 Signal pkg syscall (freebsd-amd64-cgo), const SIGUSR2 Signal pkg syscall (freebsd-amd64-cgo), const SIGVTALRM Signal pkg syscall (freebsd-amd64-cgo), const SIGWINCH Signal pkg syscall (freebsd-amd64-cgo), const SIGXCPU Signal pkg syscall (freebsd-amd64-cgo), const SIGXFSZ Signal pkg syscall (freebsd-amd64-cgo), const SIOCADDMULTI ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCADDRT ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCAIFADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCAIFGROUP ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCALIFADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCATMARK ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCDELMULTI ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCDELRT ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCDIFADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCDIFGROUP ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCDIFPHYADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCDLIFADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGDRVSPEC ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGETSGCNT ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGETVIFCNT ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGHIWAT ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFBRDADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFCAP ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFCONF ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFDESCR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFDSTADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFFIB ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFFLAGS ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFGENERIC ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFGMEMB ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFGROUP ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFINDEX ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFMAC ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFMEDIA ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFMETRIC ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFMTU ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFNETMASK ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFPDSTADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFPHYS ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFPSRCADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGIFSTATUS ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGLIFADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGLIFPHYADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGLOWAT ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGPGRP ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGPRIVATE_0 ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCGPRIVATE_1 ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCIFCREATE ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCIFCREATE2 ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCIFDESTROY ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCIFGCLONERS ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSDRVSPEC ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSHIWAT ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFBRDADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFCAP ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFDESCR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFDSTADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFFIB ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFFLAGS ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFGENERIC ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFLLADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFMAC ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFMEDIA ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFMETRIC ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFMTU ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFNAME ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFNETMASK ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFPHYADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFPHYS ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFRVNET ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSIFVNET ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSLIFPHYADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSLOWAT ideal-int pkg syscall (freebsd-amd64-cgo), const SIOCSPGRP ideal-int pkg syscall (freebsd-amd64-cgo), const SOCK_MAXADDRLEN ideal-int pkg syscall (freebsd-amd64-cgo), const SOCK_RDM ideal-int pkg syscall (freebsd-amd64-cgo), const SO_ACCEPTCONN ideal-int pkg syscall (freebsd-amd64-cgo), const SO_ACCEPTFILTER ideal-int pkg syscall (freebsd-amd64-cgo), const SO_BINTIME ideal-int pkg syscall (freebsd-amd64-cgo), const SO_DEBUG ideal-int pkg syscall (freebsd-amd64-cgo), const SO_ERROR ideal-int pkg syscall (freebsd-amd64-cgo), const SO_LABEL ideal-int pkg syscall (freebsd-amd64-cgo), const SO_LISTENINCQLEN ideal-int pkg syscall (freebsd-amd64-cgo), const SO_LISTENQLEN ideal-int pkg syscall (freebsd-amd64-cgo), const SO_LISTENQLIMIT ideal-int pkg syscall (freebsd-amd64-cgo), const SO_NOSIGPIPE ideal-int pkg syscall (freebsd-amd64-cgo), const SO_NO_DDP ideal-int pkg syscall (freebsd-amd64-cgo), const SO_NO_OFFLOAD ideal-int pkg syscall (freebsd-amd64-cgo), const SO_OOBINLINE ideal-int pkg syscall (freebsd-amd64-cgo), const SO_PEERLABEL ideal-int pkg syscall (freebsd-amd64-cgo), const SO_PROTOCOL ideal-int pkg syscall (freebsd-amd64-cgo), const SO_PROTOTYPE ideal-int pkg syscall (freebsd-amd64-cgo), const SO_RCVLOWAT ideal-int pkg syscall (freebsd-amd64-cgo), const SO_RCVTIMEO ideal-int pkg syscall (freebsd-amd64-cgo), const SO_REUSEPORT ideal-int pkg syscall (freebsd-amd64-cgo), const SO_SETFIB ideal-int pkg syscall (freebsd-amd64-cgo), const SO_SNDLOWAT ideal-int pkg syscall (freebsd-amd64-cgo), const SO_SNDTIMEO ideal-int pkg syscall (freebsd-amd64-cgo), const SO_TIMESTAMP ideal-int pkg syscall (freebsd-amd64-cgo), const SO_TYPE ideal-int pkg syscall (freebsd-amd64-cgo), const SO_USELOOPBACK ideal-int pkg syscall (freebsd-amd64-cgo), const SO_USER_COOKIE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_ABORT2 ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_ACCEPT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_ACCESS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_ACCT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_ADJTIME ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_AUDIT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_AUDITCTL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_AUDITON ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_BIND ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CAP_ENTER ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CAP_GETMODE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CAP_GETRIGHTS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CAP_NEW ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CHDIR ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CHFLAGS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CHMOD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CHOWN ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CHROOT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CLOCK_GETCPUCLOCKID2 ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CLOCK_GETRES ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CLOCK_GETTIME ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CLOCK_SETTIME ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CLOSE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CLOSEFROM ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CONNECT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CPUSET ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CPUSET_GETAFFINITY ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CPUSET_GETID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CPUSET_SETAFFINITY ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CPUSET_SETID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_DUP ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_DUP2 ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EACCESS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXECVE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXIT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTRCTL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_DELETE_FD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_DELETE_FILE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_DELETE_LINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_GET_FD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_GET_FILE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_GET_LINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_LIST_FD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_LIST_FILE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_LIST_LINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_SET_FD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_SET_FILE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_EXTATTR_SET_LINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FACCESSAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FCHDIR ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FCHFLAGS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FCHMOD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FCHMODAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FCHOWN ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FCHOWNAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FCNTL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FEXECVE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FFCLOCK_GETCOUNTER ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FFCLOCK_GETESTIMATE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FFCLOCK_SETESTIMATE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FHOPEN ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FHSTAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FHSTATFS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FLOCK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FORK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FPATHCONF ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FREEBSD6_FTRUNCATE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FREEBSD6_LSEEK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FREEBSD6_MMAP ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FREEBSD6_PREAD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FREEBSD6_PWRITE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FREEBSD6_TRUNCATE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FSTAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FSTATAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FSTATFS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FSYNC ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FTRUNCATE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FUTIMES ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_FUTIMESAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETAUDIT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETAUDIT_ADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETAUID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETCONTEXT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETDENTS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETDIRENTRIES ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETDTABLESIZE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETEGID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETEUID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETFH ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETFSSTAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETGID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETGROUPS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETITIMER ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETLOGIN ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETLOGINCLASS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETPEERNAME ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETPGID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETPGRP ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETPID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETPPID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETPRIORITY ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETRESGID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETRESUID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETRLIMIT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETRUSAGE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETSID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETSOCKNAME ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETSOCKOPT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETTIMEOFDAY ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_GETUID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_IOCTL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_ISSETUGID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_JAIL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_JAIL_ATTACH ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_JAIL_GET ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_JAIL_REMOVE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_JAIL_SET ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KENV ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KEVENT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KILL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KLDFIND ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KLDFIRSTMOD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KLDLOAD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KLDNEXT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KLDSTAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KLDSYM ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KLDUNLOAD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KLDUNLOADF ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KQUEUE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KTIMER_CREATE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KTIMER_DELETE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KTIMER_GETOVERRUN ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KTIMER_GETTIME ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KTIMER_SETTIME ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_KTRACE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_LCHFLAGS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_LCHMOD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_LCHOWN ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_LGETFH ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_LINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_LINKAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_LISTEN ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_LPATHCONF ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_LSEEK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_LSTAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_LUTIMES ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MAC_SYSCALL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MADVISE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MINCORE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MINHERIT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MKDIR ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MKDIRAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MKFIFO ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MKFIFOAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MKNOD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MKNODAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MLOCK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MLOCKALL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MMAP ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MODFIND ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MODFNEXT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MODNEXT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MODSTAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MOUNT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MPROTECT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MSYNC ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MUNLOCK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MUNLOCKALL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_MUNMAP ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_NANOSLEEP ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_NFSTAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_NLSTAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_NMOUNT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_NSTAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_NTP_ADJTIME ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_NTP_GETTIME ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_OBREAK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_OPEN ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_OPENAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_OPENBSD_POLL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_OVADVISE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_PATHCONF ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_PDFORK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_PDGETPID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_PDKILL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_PIPE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_POLL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_POSIX_FADVISE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_POSIX_FALLOCATE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_POSIX_OPENPT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_PREAD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_PREADV ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_PROFIL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_PSELECT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_PTRACE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_PWRITE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_PWRITEV ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_QUOTACTL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_RCTL_ADD_RULE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_RCTL_GET_LIMITS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_RCTL_GET_RACCT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_RCTL_GET_RULES ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_RCTL_REMOVE_RULE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_READ ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_READLINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_READLINKAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_READV ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_REBOOT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_RECVFROM ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_RECVMSG ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_RENAME ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_RENAMEAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_REVOKE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_RFORK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_RMDIR ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_RTPRIO ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_RTPRIO_THREAD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SBRK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_GETPARAM ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_GETSCHEDULER ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_GET_PRIORITY_MAX ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_GET_PRIORITY_MIN ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_RR_GET_INTERVAL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_SETPARAM ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_SETSCHEDULER ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SCHED_YIELD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SCTP_GENERIC_RECVMSG ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SCTP_GENERIC_SENDMSG ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SCTP_GENERIC_SENDMSG_IOV ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SCTP_PEELOFF ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SELECT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SENDFILE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SENDMSG ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SENDTO ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETAUDIT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETAUDIT_ADDR ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETAUID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETCONTEXT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETEGID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETEUID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETFIB ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETGID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETGROUPS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETITIMER ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETLOGIN ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETLOGINCLASS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETPGID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETPRIORITY ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETREGID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETRESGID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETRESUID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETREUID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETRLIMIT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETSID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETSOCKOPT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETTIMEOFDAY ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SETUID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SHM_OPEN ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SHM_UNLINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SHUTDOWN ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SIGACTION ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SIGALTSTACK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SIGPENDING ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SIGPROCMASK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SIGQUEUE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SIGRETURN ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SIGSUSPEND ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SIGTIMEDWAIT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SIGWAIT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SIGWAITINFO ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SOCKET ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SOCKETPAIR ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SSTK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_STAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_STATFS ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SWAPCONTEXT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SWAPOFF ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SWAPON ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SYMLINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SYMLINKAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SYNC ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_SYSARCH ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_THR_CREATE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_THR_EXIT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_THR_KILL ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_THR_KILL2 ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_THR_NEW ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_THR_SELF ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_THR_SET_NAME ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_THR_SUSPEND ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_THR_WAKE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_TRUNCATE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_UMASK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_UNDELETE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_UNLINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_UNLINKAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_UNMOUNT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_UTIMES ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_UTRACE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_UUIDGEN ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_VFORK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_WAIT4 ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_WAIT6 ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_WRITE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_WRITEV ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_YIELD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS__UMTX_LOCK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS__UMTX_OP ideal-int pkg syscall (freebsd-amd64-cgo), const SYS__UMTX_UNLOCK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___ACL_ACLCHECK_FD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___ACL_ACLCHECK_FILE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___ACL_ACLCHECK_LINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___ACL_DELETE_FD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___ACL_DELETE_FILE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___ACL_DELETE_LINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___ACL_GET_FD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___ACL_GET_FILE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___ACL_GET_LINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___ACL_SET_FD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___ACL_SET_FILE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___ACL_SET_LINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___GETCWD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___MAC_EXECVE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___MAC_GET_FD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___MAC_GET_FILE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___MAC_GET_LINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___MAC_GET_PID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___MAC_GET_PROC ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___MAC_SET_FD ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___MAC_SET_FILE ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___MAC_SET_LINK ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___MAC_SET_PROC ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___SETUGID ideal-int pkg syscall (freebsd-amd64-cgo), const SYS___SYSCTL ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofBpfHdr ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofBpfInsn ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofBpfProgram ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofBpfStat ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofBpfVersion ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofBpfZbuf ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofBpfZbufHeader ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofCmsghdr ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofICMPv6Filter = 32 pkg syscall (freebsd-amd64-cgo), const SizeofICMPv6Filter ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofIPMreq ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofIPMreqn ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofIPv6MTUInfo = 32 pkg syscall (freebsd-amd64-cgo), const SizeofIPv6MTUInfo ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofIPv6Mreq ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofIfData ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofIfMsghdr ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofIfaMsghdr ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofIfmaMsghdr ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofInet6Pktinfo ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofLinger ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofMsghdr ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofRtMetrics ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofRtMsghdr ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofSockaddrAny ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofSockaddrDatalink ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofSockaddrInet4 ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofSockaddrInet6 ideal-int pkg syscall (freebsd-amd64-cgo), const SizeofSockaddrUnix ideal-int pkg syscall (freebsd-amd64-cgo), const TCIFLUSH ideal-int pkg syscall (freebsd-amd64-cgo), const TCIOFLUSH ideal-int pkg syscall (freebsd-amd64-cgo), const TCOFLUSH ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_CA_NAME_MAX ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_CONGESTION ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_INFO ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_KEEPCNT ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_KEEPIDLE ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_KEEPINIT ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_KEEPINTVL ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_MAXBURST ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_MAXHLEN ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_MAXOLEN ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_MAXSEG ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_MAXWIN ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_MAX_SACK ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_MAX_WINSHIFT ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_MD5SIG ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_MINMSS ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_MSS ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_NOOPT ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_NOPUSH ideal-int pkg syscall (freebsd-amd64-cgo), const TCSAFLUSH ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCCBRK ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCCDTR ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCCONS ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCDRAIN ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCEXCL ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCEXT ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCFLUSH ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCGDRAINWAIT ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCGETA ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCGETD ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCGPGRP ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCGPTN ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCGSID ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCGWINSZ ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCMBIC ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCMBIS ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCMGDTRWAIT ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCMGET ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCMSDTRWAIT ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCMSET ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCM_CAR ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCM_CD ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCM_CTS ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCM_DCD ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCM_DSR ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCM_DTR ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCM_LE ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCM_RI ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCM_RNG ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCM_RTS ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCM_SR ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCM_ST ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCNOTTY ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCNXCL ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCOUTQ ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCPKT ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCPKT_DATA ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCPKT_DOSTOP ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCPKT_IOCTL ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCPKT_NOSTOP ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCPKT_START ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCPKT_STOP ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCPTMASTER ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSBRK ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSCTTY ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSDRAINWAIT ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSDTR ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSETA ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSETAF ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSETAW ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSETD ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSIG ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSPGRP ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSTART ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSTAT ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSTI ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSTOP ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCSWINSZ ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCTIMESTAMP ideal-int pkg syscall (freebsd-amd64-cgo), const TIOCUCNTL ideal-int pkg syscall (freebsd-amd64-cgo), const TOSTOP ideal-int pkg syscall (freebsd-amd64-cgo), const VDISCARD ideal-int pkg syscall (freebsd-amd64-cgo), const VDSUSP ideal-int pkg syscall (freebsd-amd64-cgo), const VEOF ideal-int pkg syscall (freebsd-amd64-cgo), const VEOL ideal-int pkg syscall (freebsd-amd64-cgo), const VEOL2 ideal-int pkg syscall (freebsd-amd64-cgo), const VERASE ideal-int pkg syscall (freebsd-amd64-cgo), const VERASE2 ideal-int pkg syscall (freebsd-amd64-cgo), const VINTR ideal-int pkg syscall (freebsd-amd64-cgo), const VKILL ideal-int pkg syscall (freebsd-amd64-cgo), const VLNEXT ideal-int pkg syscall (freebsd-amd64-cgo), const VMIN ideal-int pkg syscall (freebsd-amd64-cgo), const VQUIT ideal-int pkg syscall (freebsd-amd64-cgo), const VREPRINT ideal-int pkg syscall (freebsd-amd64-cgo), const VSTART ideal-int pkg syscall (freebsd-amd64-cgo), const VSTATUS ideal-int pkg syscall (freebsd-amd64-cgo), const VSTOP ideal-int pkg syscall (freebsd-amd64-cgo), const VSUSP ideal-int pkg syscall (freebsd-amd64-cgo), const VTIME ideal-int pkg syscall (freebsd-amd64-cgo), const VWERASE ideal-int pkg syscall (freebsd-amd64-cgo), const WCONTINUED ideal-int pkg syscall (freebsd-amd64-cgo), const WCOREFLAG ideal-int pkg syscall (freebsd-amd64-cgo), const WLINUXCLONE ideal-int pkg syscall (freebsd-amd64-cgo), const WNOHANG ideal-int pkg syscall (freebsd-amd64-cgo), const WNOWAIT ideal-int pkg syscall (freebsd-amd64-cgo), const WSTOPPED ideal-int pkg syscall (freebsd-amd64-cgo), const WUNTRACED ideal-int pkg syscall (freebsd-amd64-cgo), func Accept(int) (int, Sockaddr, error) pkg syscall (freebsd-amd64-cgo), func Access(string, uint32) error pkg syscall (freebsd-amd64-cgo), func Adjtime(*Timeval, *Timeval) error pkg syscall (freebsd-amd64-cgo), func Bind(int, Sockaddr) error pkg syscall (freebsd-amd64-cgo), func BpfBuflen(int) (int, error) pkg syscall (freebsd-amd64-cgo), func BpfDatalink(int) (int, error) pkg syscall (freebsd-amd64-cgo), func BpfHeadercmpl(int) (int, error) pkg syscall (freebsd-amd64-cgo), func BpfInterface(int, string) (string, error) pkg syscall (freebsd-amd64-cgo), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (freebsd-amd64-cgo), func BpfStats(int) (*BpfStat, error) pkg syscall (freebsd-amd64-cgo), func BpfStmt(int, int) *BpfInsn pkg syscall (freebsd-amd64-cgo), func BpfTimeout(int) (*Timeval, error) pkg syscall (freebsd-amd64-cgo), func CheckBpfVersion(int) error pkg syscall (freebsd-amd64-cgo), func Chflags(string, int) error pkg syscall (freebsd-amd64-cgo), func Chroot(string) error pkg syscall (freebsd-amd64-cgo), func Close(int) error pkg syscall (freebsd-amd64-cgo), func CloseOnExec(int) pkg syscall (freebsd-amd64-cgo), func CmsgLen(int) int pkg syscall (freebsd-amd64-cgo), func CmsgSpace(int) int pkg syscall (freebsd-amd64-cgo), func Connect(int, Sockaddr) error pkg syscall (freebsd-amd64-cgo), func Dup(int) (int, error) pkg syscall (freebsd-amd64-cgo), func Dup2(int, int) error pkg syscall (freebsd-amd64-cgo), func Fchdir(int) error pkg syscall (freebsd-amd64-cgo), func Fchflags(int, int) error pkg syscall (freebsd-amd64-cgo), func Fchmod(int, uint32) error pkg syscall (freebsd-amd64-cgo), func Fchown(int, int, int) error pkg syscall (freebsd-amd64-cgo), func Flock(int, int) error pkg syscall (freebsd-amd64-cgo), func FlushBpf(int) error pkg syscall (freebsd-amd64-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (freebsd-amd64-cgo), func Fpathconf(int, int) (int, error) pkg syscall (freebsd-amd64-cgo), func Fstat(int, *Stat_t) error pkg syscall (freebsd-amd64-cgo), func Fstatfs(int, *Statfs_t) error pkg syscall (freebsd-amd64-cgo), func Fsync(int) error pkg syscall (freebsd-amd64-cgo), func Ftruncate(int, int64) error pkg syscall (freebsd-amd64-cgo), func Futimes(int, []Timeval) error pkg syscall (freebsd-amd64-cgo), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (freebsd-amd64-cgo), func Getdtablesize() int pkg syscall (freebsd-amd64-cgo), func Getfsstat([]Statfs_t, int) (int, error) pkg syscall (freebsd-amd64-cgo), func Getpeername(int) (Sockaddr, error) pkg syscall (freebsd-amd64-cgo), func Getpgid(int) (int, error) pkg syscall (freebsd-amd64-cgo), func Getpgrp() int pkg syscall (freebsd-amd64-cgo), func Getpriority(int, int) (int, error) pkg syscall (freebsd-amd64-cgo), func Getrlimit(int, *Rlimit) error pkg syscall (freebsd-amd64-cgo), func Getrusage(int, *Rusage) error pkg syscall (freebsd-amd64-cgo), func Getsid(int) (int, error) pkg syscall (freebsd-amd64-cgo), func Getsockname(int) (Sockaddr, error) pkg syscall (freebsd-amd64-cgo), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (freebsd-amd64-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (freebsd-amd64-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (freebsd-amd64-cgo), func GetsockoptIPMreqn(int, int, int) (*IPMreqn, error) pkg syscall (freebsd-amd64-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (freebsd-amd64-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (freebsd-amd64-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (freebsd-amd64-cgo), func GetsockoptInt(int, int, int) (int, error) pkg syscall (freebsd-amd64-cgo), func Issetugid() bool pkg syscall (freebsd-amd64-cgo), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (freebsd-amd64-cgo), func Kill(int, Signal) error pkg syscall (freebsd-amd64-cgo), func Kqueue() (int, error) pkg syscall (freebsd-amd64-cgo), func Listen(int, int) error pkg syscall (freebsd-amd64-cgo), func Lstat(string, *Stat_t) error pkg syscall (freebsd-amd64-cgo), func Mkfifo(string, uint32) error pkg syscall (freebsd-amd64-cgo), func Mknod(string, uint32, int) error pkg syscall (freebsd-amd64-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (freebsd-amd64-cgo), func Munmap([]uint8) error pkg syscall (freebsd-amd64-cgo), func Nanosleep(*Timespec, *Timespec) error pkg syscall (freebsd-amd64-cgo), func Open(string, int, uint32) (int, error) pkg syscall (freebsd-amd64-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (freebsd-amd64-cgo), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (freebsd-amd64-cgo), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (freebsd-amd64-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (freebsd-amd64-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (freebsd-amd64-cgo), func Pathconf(string, int) (int, error) pkg syscall (freebsd-amd64-cgo), func Pipe([]int) error pkg syscall (freebsd-amd64-cgo), func Pread(int, []uint8, int64) (int, error) pkg syscall (freebsd-amd64-cgo), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (freebsd-amd64-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-amd64-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-amd64-cgo), func Read(int, []uint8) (int, error) pkg syscall (freebsd-amd64-cgo), func ReadDirent(int, []uint8) (int, error) pkg syscall (freebsd-amd64-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (freebsd-amd64-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (freebsd-amd64-cgo), func Revoke(string) error pkg syscall (freebsd-amd64-cgo), func RouteRIB(int, int) ([]uint8, error) pkg syscall (freebsd-amd64-cgo), func Seek(int, int64, int) (int64, error) pkg syscall (freebsd-amd64-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (freebsd-amd64-cgo), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (freebsd-amd64-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (freebsd-amd64-cgo), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (freebsd-amd64-cgo), func SetBpf(int, []BpfInsn) error pkg syscall (freebsd-amd64-cgo), func SetBpfBuflen(int, int) (int, error) pkg syscall (freebsd-amd64-cgo), func SetBpfDatalink(int, int) (int, error) pkg syscall (freebsd-amd64-cgo), func SetBpfHeadercmpl(int, int) error pkg syscall (freebsd-amd64-cgo), func SetBpfImmediate(int, int) error pkg syscall (freebsd-amd64-cgo), func SetBpfInterface(int, string) error pkg syscall (freebsd-amd64-cgo), func SetBpfPromisc(int, int) error pkg syscall (freebsd-amd64-cgo), func SetBpfTimeout(int, *Timeval) error pkg syscall (freebsd-amd64-cgo), func SetKevent(*Kevent_t, int, int, int) pkg syscall (freebsd-amd64-cgo), func SetNonblock(int, bool) error pkg syscall (freebsd-amd64-cgo), func Setegid(int) error pkg syscall (freebsd-amd64-cgo), func Seteuid(int) error pkg syscall (freebsd-amd64-cgo), func Setgid(int) error pkg syscall (freebsd-amd64-cgo), func Setgroups([]int) error pkg syscall (freebsd-amd64-cgo), func Setlogin(string) error pkg syscall (freebsd-amd64-cgo), func Setpgid(int, int) error pkg syscall (freebsd-amd64-cgo), func Setpriority(int, int, int) error pkg syscall (freebsd-amd64-cgo), func Setregid(int, int) error pkg syscall (freebsd-amd64-cgo), func Setreuid(int, int) error pkg syscall (freebsd-amd64-cgo), func Setrlimit(int, *Rlimit) error pkg syscall (freebsd-amd64-cgo), func Setsid() (int, error) pkg syscall (freebsd-amd64-cgo), func SetsockoptByte(int, int, int, uint8) error pkg syscall (freebsd-amd64-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (freebsd-amd64-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (freebsd-amd64-cgo), func SetsockoptIPMreqn(int, int, int, *IPMreqn) error pkg syscall (freebsd-amd64-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (freebsd-amd64-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (freebsd-amd64-cgo), func SetsockoptInt(int, int, int, int) error pkg syscall (freebsd-amd64-cgo), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (freebsd-amd64-cgo), func SetsockoptString(int, int, int, string) error pkg syscall (freebsd-amd64-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (freebsd-amd64-cgo), func Settimeofday(*Timeval) error pkg syscall (freebsd-amd64-cgo), func Setuid(int) error pkg syscall (freebsd-amd64-cgo), func Shutdown(int, int) error pkg syscall (freebsd-amd64-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (freebsd-amd64-cgo), func Socket(int, int, int) (int, error) pkg syscall (freebsd-amd64-cgo), func Socketpair(int, int, int) ([2]int, error) pkg syscall (freebsd-amd64-cgo), func Stat(string, *Stat_t) error pkg syscall (freebsd-amd64-cgo), func Statfs(string, *Statfs_t) error pkg syscall (freebsd-amd64-cgo), func StringSlicePtr([]string) []*uint8 pkg syscall (freebsd-amd64-cgo), func Sync() error pkg syscall (freebsd-amd64-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-amd64-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-amd64-cgo), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-amd64-cgo), func Sysctl(string) (string, error) pkg syscall (freebsd-amd64-cgo), func SysctlUint32(string) (uint32, error) pkg syscall (freebsd-amd64-cgo), func TimevalToNsec(Timeval) int64 pkg syscall (freebsd-amd64-cgo), func Truncate(string, int64) error pkg syscall (freebsd-amd64-cgo), func Umask(int) int pkg syscall (freebsd-amd64-cgo), func Undelete(string) error pkg syscall (freebsd-amd64-cgo), func UnixRights(...int) []uint8 pkg syscall (freebsd-amd64-cgo), func Unmount(string, int) error pkg syscall (freebsd-amd64-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (freebsd-amd64-cgo), func Write(int, []uint8) (int, error) pkg syscall (freebsd-amd64-cgo), method (*Cmsghdr) SetLen(int) pkg syscall (freebsd-amd64-cgo), method (*Iovec) SetLen(int) pkg syscall (freebsd-amd64-cgo), method (*Msghdr) SetControllen(int) pkg syscall (freebsd-amd64-cgo), type BpfHdr struct pkg syscall (freebsd-amd64-cgo), type BpfHdr struct, Caplen uint32 pkg syscall (freebsd-amd64-cgo), type BpfHdr struct, Datalen uint32 pkg syscall (freebsd-amd64-cgo), type BpfHdr struct, Hdrlen uint16 pkg syscall (freebsd-amd64-cgo), type BpfHdr struct, Pad_cgo_0 [6]uint8 pkg syscall (freebsd-amd64-cgo), type BpfHdr struct, Tstamp Timeval pkg syscall (freebsd-amd64-cgo), type BpfInsn struct pkg syscall (freebsd-amd64-cgo), type BpfInsn struct, Code uint16 pkg syscall (freebsd-amd64-cgo), type BpfInsn struct, Jf uint8 pkg syscall (freebsd-amd64-cgo), type BpfInsn struct, Jt uint8 pkg syscall (freebsd-amd64-cgo), type BpfInsn struct, K uint32 pkg syscall (freebsd-amd64-cgo), type BpfProgram struct pkg syscall (freebsd-amd64-cgo), type BpfProgram struct, Insns *BpfInsn pkg syscall (freebsd-amd64-cgo), type BpfProgram struct, Len uint32 pkg syscall (freebsd-amd64-cgo), type BpfProgram struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-amd64-cgo), type BpfStat struct pkg syscall (freebsd-amd64-cgo), type BpfStat struct, Drop uint32 pkg syscall (freebsd-amd64-cgo), type BpfStat struct, Recv uint32 pkg syscall (freebsd-amd64-cgo), type BpfVersion struct pkg syscall (freebsd-amd64-cgo), type BpfVersion struct, Major uint16 pkg syscall (freebsd-amd64-cgo), type BpfVersion struct, Minor uint16 pkg syscall (freebsd-amd64-cgo), type BpfZbuf struct pkg syscall (freebsd-amd64-cgo), type BpfZbuf struct, Bufa *uint8 pkg syscall (freebsd-amd64-cgo), type BpfZbuf struct, Bufb *uint8 pkg syscall (freebsd-amd64-cgo), type BpfZbuf struct, Buflen uint64 pkg syscall (freebsd-amd64-cgo), type BpfZbufHeader struct pkg syscall (freebsd-amd64-cgo), type BpfZbufHeader struct, Kernel_gen uint32 pkg syscall (freebsd-amd64-cgo), type BpfZbufHeader struct, Kernel_len uint32 pkg syscall (freebsd-amd64-cgo), type BpfZbufHeader struct, User_gen uint32 pkg syscall (freebsd-amd64-cgo), type BpfZbufHeader struct, X_bzh_pad [5]uint32 pkg syscall (freebsd-amd64-cgo), type Cmsghdr struct pkg syscall (freebsd-amd64-cgo), type Cmsghdr struct, Len uint32 pkg syscall (freebsd-amd64-cgo), type Cmsghdr struct, Level int32 pkg syscall (freebsd-amd64-cgo), type Cmsghdr struct, Type int32 pkg syscall (freebsd-amd64-cgo), type Credential struct pkg syscall (freebsd-amd64-cgo), type Credential struct, Gid uint32 pkg syscall (freebsd-amd64-cgo), type Credential struct, Groups []uint32 pkg syscall (freebsd-amd64-cgo), type Credential struct, Uid uint32 pkg syscall (freebsd-amd64-cgo), type Dirent struct pkg syscall (freebsd-amd64-cgo), type Dirent struct, Fileno uint32 pkg syscall (freebsd-amd64-cgo), type Dirent struct, Name [256]int8 pkg syscall (freebsd-amd64-cgo), type Dirent struct, Namlen uint8 pkg syscall (freebsd-amd64-cgo), type Dirent struct, Reclen uint16 pkg syscall (freebsd-amd64-cgo), type Dirent struct, Type uint8 pkg syscall (freebsd-amd64-cgo), type FdSet struct pkg syscall (freebsd-amd64-cgo), type FdSet struct, X__fds_bits [16]uint64 pkg syscall (freebsd-amd64-cgo), type Flock_t struct pkg syscall (freebsd-amd64-cgo), type Flock_t struct, Len int64 pkg syscall (freebsd-amd64-cgo), type Flock_t struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-amd64-cgo), type Flock_t struct, Pid int32 pkg syscall (freebsd-amd64-cgo), type Flock_t struct, Start int64 pkg syscall (freebsd-amd64-cgo), type Flock_t struct, Sysid int32 pkg syscall (freebsd-amd64-cgo), type Flock_t struct, Type int16 pkg syscall (freebsd-amd64-cgo), type Flock_t struct, Whence int16 pkg syscall (freebsd-amd64-cgo), type Fsid struct pkg syscall (freebsd-amd64-cgo), type Fsid struct, Val [2]int32 pkg syscall (freebsd-amd64-cgo), type ICMPv6Filter struct pkg syscall (freebsd-amd64-cgo), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (freebsd-amd64-cgo), type IPMreqn struct pkg syscall (freebsd-amd64-cgo), type IPMreqn struct, Address [4]uint8 pkg syscall (freebsd-amd64-cgo), type IPMreqn struct, Ifindex int32 pkg syscall (freebsd-amd64-cgo), type IPMreqn struct, Multiaddr [4]uint8 pkg syscall (freebsd-amd64-cgo), type IPv6MTUInfo struct pkg syscall (freebsd-amd64-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (freebsd-amd64-cgo), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (freebsd-amd64-cgo), type IfAnnounceMsghdr struct pkg syscall (freebsd-amd64-cgo), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (freebsd-amd64-cgo), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (freebsd-amd64-cgo), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (freebsd-amd64-cgo), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (freebsd-amd64-cgo), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (freebsd-amd64-cgo), type IfAnnounceMsghdr struct, What uint16 pkg syscall (freebsd-amd64-cgo), type IfData struct pkg syscall (freebsd-amd64-cgo), type IfData struct, Addrlen uint8 pkg syscall (freebsd-amd64-cgo), type IfData struct, Baudrate uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Collisions uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Datalen uint8 pkg syscall (freebsd-amd64-cgo), type IfData struct, Epoch int64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Hdrlen uint8 pkg syscall (freebsd-amd64-cgo), type IfData struct, Hwassist uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Ibytes uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Ierrors uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Imcasts uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Ipackets uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Iqdrops uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Lastchange Timeval pkg syscall (freebsd-amd64-cgo), type IfData struct, Link_state uint8 pkg syscall (freebsd-amd64-cgo), type IfData struct, Metric uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Mtu uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Noproto uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Obytes uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Oerrors uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Omcasts uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Opackets uint64 pkg syscall (freebsd-amd64-cgo), type IfData struct, Physical uint8 pkg syscall (freebsd-amd64-cgo), type IfData struct, Spare_char1 uint8 pkg syscall (freebsd-amd64-cgo), type IfData struct, Spare_char2 uint8 pkg syscall (freebsd-amd64-cgo), type IfData struct, Type uint8 pkg syscall (freebsd-amd64-cgo), type IfMsghdr struct pkg syscall (freebsd-amd64-cgo), type IfMsghdr struct, Addrs int32 pkg syscall (freebsd-amd64-cgo), type IfMsghdr struct, Data IfData pkg syscall (freebsd-amd64-cgo), type IfMsghdr struct, Flags int32 pkg syscall (freebsd-amd64-cgo), type IfMsghdr struct, Index uint16 pkg syscall (freebsd-amd64-cgo), type IfMsghdr struct, Msglen uint16 pkg syscall (freebsd-amd64-cgo), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-amd64-cgo), type IfMsghdr struct, Type uint8 pkg syscall (freebsd-amd64-cgo), type IfMsghdr struct, Version uint8 pkg syscall (freebsd-amd64-cgo), type IfaMsghdr struct pkg syscall (freebsd-amd64-cgo), type IfaMsghdr struct, Addrs int32 pkg syscall (freebsd-amd64-cgo), type IfaMsghdr struct, Flags int32 pkg syscall (freebsd-amd64-cgo), type IfaMsghdr struct, Index uint16 pkg syscall (freebsd-amd64-cgo), type IfaMsghdr struct, Metric int32 pkg syscall (freebsd-amd64-cgo), type IfaMsghdr struct, Msglen uint16 pkg syscall (freebsd-amd64-cgo), type IfaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-amd64-cgo), type IfaMsghdr struct, Type uint8 pkg syscall (freebsd-amd64-cgo), type IfaMsghdr struct, Version uint8 pkg syscall (freebsd-amd64-cgo), type IfmaMsghdr struct pkg syscall (freebsd-amd64-cgo), type IfmaMsghdr struct, Addrs int32 pkg syscall (freebsd-amd64-cgo), type IfmaMsghdr struct, Flags int32 pkg syscall (freebsd-amd64-cgo), type IfmaMsghdr struct, Index uint16 pkg syscall (freebsd-amd64-cgo), type IfmaMsghdr struct, Msglen uint16 pkg syscall (freebsd-amd64-cgo), type IfmaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-amd64-cgo), type IfmaMsghdr struct, Type uint8 pkg syscall (freebsd-amd64-cgo), type IfmaMsghdr struct, Version uint8 pkg syscall (freebsd-amd64-cgo), type Inet6Pktinfo struct pkg syscall (freebsd-amd64-cgo), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (freebsd-amd64-cgo), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (freebsd-amd64-cgo), type InterfaceAddrMessage struct pkg syscall (freebsd-amd64-cgo), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (freebsd-amd64-cgo), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (freebsd-amd64-cgo), type InterfaceAnnounceMessage struct pkg syscall (freebsd-amd64-cgo), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (freebsd-amd64-cgo), type InterfaceMessage struct pkg syscall (freebsd-amd64-cgo), type InterfaceMessage struct, Data []uint8 pkg syscall (freebsd-amd64-cgo), type InterfaceMessage struct, Header IfMsghdr pkg syscall (freebsd-amd64-cgo), type InterfaceMulticastAddrMessage struct pkg syscall (freebsd-amd64-cgo), type InterfaceMulticastAddrMessage struct, Data []uint8 pkg syscall (freebsd-amd64-cgo), type InterfaceMulticastAddrMessage struct, Header IfmaMsghdr pkg syscall (freebsd-amd64-cgo), type Iovec struct pkg syscall (freebsd-amd64-cgo), type Iovec struct, Base *uint8 pkg syscall (freebsd-amd64-cgo), type Iovec struct, Len uint64 pkg syscall (freebsd-amd64-cgo), type Kevent_t struct pkg syscall (freebsd-amd64-cgo), type Kevent_t struct, Data int64 pkg syscall (freebsd-amd64-cgo), type Kevent_t struct, Fflags uint32 pkg syscall (freebsd-amd64-cgo), type Kevent_t struct, Filter int16 pkg syscall (freebsd-amd64-cgo), type Kevent_t struct, Flags uint16 pkg syscall (freebsd-amd64-cgo), type Kevent_t struct, Ident uint64 pkg syscall (freebsd-amd64-cgo), type Kevent_t struct, Udata *uint8 pkg syscall (freebsd-amd64-cgo), type Msghdr struct pkg syscall (freebsd-amd64-cgo), type Msghdr struct, Control *uint8 pkg syscall (freebsd-amd64-cgo), type Msghdr struct, Controllen uint32 pkg syscall (freebsd-amd64-cgo), type Msghdr struct, Flags int32 pkg syscall (freebsd-amd64-cgo), type Msghdr struct, Iov *Iovec pkg syscall (freebsd-amd64-cgo), type Msghdr struct, Iovlen int32 pkg syscall (freebsd-amd64-cgo), type Msghdr struct, Name *uint8 pkg syscall (freebsd-amd64-cgo), type Msghdr struct, Namelen uint32 pkg syscall (freebsd-amd64-cgo), type Msghdr struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-amd64-cgo), type Msghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddr struct, Data [14]int8 pkg syscall (freebsd-amd64-cgo), type RawSockaddr struct, Family uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddr struct, Len uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrDatalink struct pkg syscall (freebsd-amd64-cgo), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrDatalink struct, Data [46]int8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrDatalink struct, Family uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrDatalink struct, Index uint16 pkg syscall (freebsd-amd64-cgo), type RawSockaddrDatalink struct, Len uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrDatalink struct, Type uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrInet4 struct, Family uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrInet4 struct, Len uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrInet6 struct, Family uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrInet6 struct, Len uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrUnix struct pkg syscall (freebsd-amd64-cgo), type RawSockaddrUnix struct, Family uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrUnix struct, Len uint8 pkg syscall (freebsd-amd64-cgo), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (freebsd-amd64-cgo), type Rlimit struct pkg syscall (freebsd-amd64-cgo), type Rlimit struct, Cur int64 pkg syscall (freebsd-amd64-cgo), type Rlimit struct, Max int64 pkg syscall (freebsd-amd64-cgo), type RouteMessage struct pkg syscall (freebsd-amd64-cgo), type RouteMessage struct, Data []uint8 pkg syscall (freebsd-amd64-cgo), type RouteMessage struct, Header RtMsghdr pkg syscall (freebsd-amd64-cgo), type RoutingMessage interface, unexported methods pkg syscall (freebsd-amd64-cgo), type RtMetrics struct pkg syscall (freebsd-amd64-cgo), type RtMetrics struct, Expire uint64 pkg syscall (freebsd-amd64-cgo), type RtMetrics struct, Filler [3]uint64 pkg syscall (freebsd-amd64-cgo), type RtMetrics struct, Hopcount uint64 pkg syscall (freebsd-amd64-cgo), type RtMetrics struct, Locks uint64 pkg syscall (freebsd-amd64-cgo), type RtMetrics struct, Mtu uint64 pkg syscall (freebsd-amd64-cgo), type RtMetrics struct, Pksent uint64 pkg syscall (freebsd-amd64-cgo), type RtMetrics struct, Recvpipe uint64 pkg syscall (freebsd-amd64-cgo), type RtMetrics struct, Rtt uint64 pkg syscall (freebsd-amd64-cgo), type RtMetrics struct, Rttvar uint64 pkg syscall (freebsd-amd64-cgo), type RtMetrics struct, Sendpipe uint64 pkg syscall (freebsd-amd64-cgo), type RtMetrics struct, Ssthresh uint64 pkg syscall (freebsd-amd64-cgo), type RtMetrics struct, Weight uint64 pkg syscall (freebsd-amd64-cgo), type RtMsghdr struct pkg syscall (freebsd-amd64-cgo), type RtMsghdr struct, Addrs int32 pkg syscall (freebsd-amd64-cgo), type RtMsghdr struct, Errno int32 pkg syscall (freebsd-amd64-cgo), type RtMsghdr struct, Flags int32 pkg syscall (freebsd-amd64-cgo), type RtMsghdr struct, Fmask int32 pkg syscall (freebsd-amd64-cgo), type RtMsghdr struct, Index uint16 pkg syscall (freebsd-amd64-cgo), type RtMsghdr struct, Inits uint64 pkg syscall (freebsd-amd64-cgo), type RtMsghdr struct, Msglen uint16 pkg syscall (freebsd-amd64-cgo), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-amd64-cgo), type RtMsghdr struct, Pid int32 pkg syscall (freebsd-amd64-cgo), type RtMsghdr struct, Rmx RtMetrics pkg syscall (freebsd-amd64-cgo), type RtMsghdr struct, Seq int32 pkg syscall (freebsd-amd64-cgo), type RtMsghdr struct, Type uint8 pkg syscall (freebsd-amd64-cgo), type RtMsghdr struct, Version uint8 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Idrss int64 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Inblock int64 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Isrss int64 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Ixrss int64 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Majflt int64 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Maxrss int64 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Minflt int64 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Msgrcv int64 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Msgsnd int64 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Nivcsw int64 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Nsignals int64 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Nswap int64 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Nvcsw int64 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Oublock int64 pkg syscall (freebsd-amd64-cgo), type Rusage struct, Stime Timeval pkg syscall (freebsd-amd64-cgo), type Rusage struct, Utime Timeval pkg syscall (freebsd-amd64-cgo), type SockaddrDatalink struct pkg syscall (freebsd-amd64-cgo), type SockaddrDatalink struct, Alen uint8 pkg syscall (freebsd-amd64-cgo), type SockaddrDatalink struct, Data [46]int8 pkg syscall (freebsd-amd64-cgo), type SockaddrDatalink struct, Family uint8 pkg syscall (freebsd-amd64-cgo), type SockaddrDatalink struct, Index uint16 pkg syscall (freebsd-amd64-cgo), type SockaddrDatalink struct, Len uint8 pkg syscall (freebsd-amd64-cgo), type SockaddrDatalink struct, Nlen uint8 pkg syscall (freebsd-amd64-cgo), type SockaddrDatalink struct, Slen uint8 pkg syscall (freebsd-amd64-cgo), type SockaddrDatalink struct, Type uint8 pkg syscall (freebsd-amd64-cgo), type SocketControlMessage struct pkg syscall (freebsd-amd64-cgo), type SocketControlMessage struct, Data []uint8 pkg syscall (freebsd-amd64-cgo), type SocketControlMessage struct, Header Cmsghdr pkg syscall (freebsd-amd64-cgo), type Stat_t struct pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Atimespec Timespec pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Birthtimespec Timespec pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Blksize uint32 pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Blocks int64 pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Ctimespec Timespec pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Dev uint32 pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Flags uint32 pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Gen uint32 pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Gid uint32 pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Ino uint32 pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Lspare int32 pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Mode uint16 pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Mtimespec Timespec pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Nlink uint16 pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Rdev uint32 pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Size int64 pkg syscall (freebsd-amd64-cgo), type Stat_t struct, Uid uint32 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Asyncreads uint64 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Asyncwrites uint64 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Bavail int64 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Bfree uint64 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Blocks uint64 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Bsize uint64 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Charspare [80]int8 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Ffree int64 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Files uint64 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Flags uint64 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Fsid Fsid pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Fstypename [16]int8 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Iosize uint64 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Mntfromname [88]int8 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Mntonname [88]int8 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Namemax uint32 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Owner uint32 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Spare [10]uint64 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Syncreads uint64 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Syncwrites uint64 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Type uint32 pkg syscall (freebsd-amd64-cgo), type Statfs_t struct, Version uint32 pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Chroot string pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Credential *Credential pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Noctty bool pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Ptrace bool pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Setctty bool pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Setpgid bool pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Setsid bool pkg syscall (freebsd-amd64-cgo), type Timespec struct, Nsec int64 pkg syscall (freebsd-amd64-cgo), type Timespec struct, Sec int64 pkg syscall (freebsd-amd64-cgo), type Timeval struct, Sec int64 pkg syscall (freebsd-amd64-cgo), type Timeval struct, Usec int64 pkg syscall (freebsd-amd64-cgo), type WaitStatus uint32 pkg syscall (freebsd-amd64-cgo), var Stderr int pkg syscall (freebsd-amd64-cgo), var Stdin int pkg syscall (freebsd-amd64-cgo), var Stdout int pkg syscall (freebsd-arm), const AF_APPLETALK ideal-int pkg syscall (freebsd-arm), const AF_ARP ideal-int pkg syscall (freebsd-arm), const AF_ATM ideal-int pkg syscall (freebsd-arm), const AF_BLUETOOTH ideal-int pkg syscall (freebsd-arm), const AF_CCITT ideal-int pkg syscall (freebsd-arm), const AF_CHAOS ideal-int pkg syscall (freebsd-arm), const AF_CNT ideal-int pkg syscall (freebsd-arm), const AF_COIP ideal-int pkg syscall (freebsd-arm), const AF_DATAKIT ideal-int pkg syscall (freebsd-arm), const AF_DECnet ideal-int pkg syscall (freebsd-arm), const AF_DLI ideal-int pkg syscall (freebsd-arm), const AF_E164 ideal-int pkg syscall (freebsd-arm), const AF_ECMA ideal-int pkg syscall (freebsd-arm), const AF_HYLINK ideal-int pkg syscall (freebsd-arm), const AF_IEEE80211 ideal-int pkg syscall (freebsd-arm), const AF_IMPLINK ideal-int pkg syscall (freebsd-arm), const AF_IPX ideal-int pkg syscall (freebsd-arm), const AF_ISDN ideal-int pkg syscall (freebsd-arm), const AF_ISO ideal-int pkg syscall (freebsd-arm), const AF_LAT ideal-int pkg syscall (freebsd-arm), const AF_LINK ideal-int pkg syscall (freebsd-arm), const AF_LOCAL ideal-int pkg syscall (freebsd-arm), const AF_MAX ideal-int pkg syscall (freebsd-arm), const AF_NATM ideal-int pkg syscall (freebsd-arm), const AF_NETBIOS ideal-int pkg syscall (freebsd-arm), const AF_NETGRAPH ideal-int pkg syscall (freebsd-arm), const AF_OSI ideal-int pkg syscall (freebsd-arm), const AF_PUP ideal-int pkg syscall (freebsd-arm), const AF_ROUTE ideal-int pkg syscall (freebsd-arm), const AF_SCLUSTER ideal-int pkg syscall (freebsd-arm), const AF_SIP ideal-int pkg syscall (freebsd-arm), const AF_SLOW ideal-int pkg syscall (freebsd-arm), const AF_SNA ideal-int pkg syscall (freebsd-arm), const AF_VENDOR00 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR01 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR02 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR03 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR04 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR05 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR06 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR07 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR08 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR09 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR10 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR11 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR12 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR13 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR14 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR15 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR16 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR17 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR18 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR19 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR20 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR21 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR22 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR23 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR24 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR25 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR26 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR27 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR28 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR29 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR30 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR31 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR32 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR33 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR34 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR35 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR36 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR37 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR38 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR39 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR40 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR41 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR42 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR43 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR44 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR45 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR46 ideal-int pkg syscall (freebsd-arm), const AF_VENDOR47 ideal-int pkg syscall (freebsd-arm), const B0 ideal-int pkg syscall (freebsd-arm), const B110 ideal-int pkg syscall (freebsd-arm), const B115200 ideal-int pkg syscall (freebsd-arm), const B1200 ideal-int pkg syscall (freebsd-arm), const B134 ideal-int pkg syscall (freebsd-arm), const B14400 ideal-int pkg syscall (freebsd-arm), const B150 ideal-int pkg syscall (freebsd-arm), const B1800 ideal-int pkg syscall (freebsd-arm), const B19200 ideal-int pkg syscall (freebsd-arm), const B200 ideal-int pkg syscall (freebsd-arm), const B230400 ideal-int pkg syscall (freebsd-arm), const B2400 ideal-int pkg syscall (freebsd-arm), const B28800 ideal-int pkg syscall (freebsd-arm), const B300 ideal-int pkg syscall (freebsd-arm), const B38400 ideal-int pkg syscall (freebsd-arm), const B460800 ideal-int pkg syscall (freebsd-arm), const B4800 ideal-int pkg syscall (freebsd-arm), const B50 ideal-int pkg syscall (freebsd-arm), const B57600 ideal-int pkg syscall (freebsd-arm), const B600 ideal-int pkg syscall (freebsd-arm), const B7200 ideal-int pkg syscall (freebsd-arm), const B75 ideal-int pkg syscall (freebsd-arm), const B76800 ideal-int pkg syscall (freebsd-arm), const B921600 ideal-int pkg syscall (freebsd-arm), const B9600 ideal-int pkg syscall (freebsd-arm), const BIOCFEEDBACK ideal-int pkg syscall (freebsd-arm), const BIOCFLUSH ideal-int pkg syscall (freebsd-arm), const BIOCGBLEN ideal-int pkg syscall (freebsd-arm), const BIOCGDIRECTION ideal-int pkg syscall (freebsd-arm), const BIOCGDLT ideal-int pkg syscall (freebsd-arm), const BIOCGDLTLIST ideal-int pkg syscall (freebsd-arm), const BIOCGETBUFMODE ideal-int pkg syscall (freebsd-arm), const BIOCGETIF ideal-int pkg syscall (freebsd-arm), const BIOCGETZMAX ideal-int pkg syscall (freebsd-arm), const BIOCGHDRCMPLT ideal-int pkg syscall (freebsd-arm), const BIOCGRSIG ideal-int pkg syscall (freebsd-arm), const BIOCGRTIMEOUT ideal-int pkg syscall (freebsd-arm), const BIOCGSEESENT ideal-int pkg syscall (freebsd-arm), const BIOCGSTATS ideal-int pkg syscall (freebsd-arm), const BIOCGTSTAMP ideal-int pkg syscall (freebsd-arm), const BIOCIMMEDIATE ideal-int pkg syscall (freebsd-arm), const BIOCLOCK ideal-int pkg syscall (freebsd-arm), const BIOCPROMISC ideal-int pkg syscall (freebsd-arm), const BIOCROTZBUF ideal-int pkg syscall (freebsd-arm), const BIOCSBLEN ideal-int pkg syscall (freebsd-arm), const BIOCSDIRECTION ideal-int pkg syscall (freebsd-arm), const BIOCSDLT ideal-int pkg syscall (freebsd-arm), const BIOCSETBUFMODE ideal-int pkg syscall (freebsd-arm), const BIOCSETF ideal-int pkg syscall (freebsd-arm), const BIOCSETFNR ideal-int pkg syscall (freebsd-arm), const BIOCSETIF ideal-int pkg syscall (freebsd-arm), const BIOCSETWF ideal-int pkg syscall (freebsd-arm), const BIOCSETZBUF ideal-int pkg syscall (freebsd-arm), const BIOCSHDRCMPLT ideal-int pkg syscall (freebsd-arm), const BIOCSRSIG ideal-int pkg syscall (freebsd-arm), const BIOCSRTIMEOUT ideal-int pkg syscall (freebsd-arm), const BIOCSSEESENT ideal-int pkg syscall (freebsd-arm), const BIOCSTSTAMP ideal-int pkg syscall (freebsd-arm), const BIOCVERSION ideal-int pkg syscall (freebsd-arm), const BPF_A ideal-int pkg syscall (freebsd-arm), const BPF_ABS ideal-int pkg syscall (freebsd-arm), const BPF_ADD ideal-int pkg syscall (freebsd-arm), const BPF_ALIGNMENT ideal-int pkg syscall (freebsd-arm), const BPF_ALU ideal-int pkg syscall (freebsd-arm), const BPF_AND ideal-int pkg syscall (freebsd-arm), const BPF_B ideal-int pkg syscall (freebsd-arm), const BPF_BUFMODE_BUFFER ideal-int pkg syscall (freebsd-arm), const BPF_BUFMODE_ZBUF ideal-int pkg syscall (freebsd-arm), const BPF_DIV ideal-int pkg syscall (freebsd-arm), const BPF_H ideal-int pkg syscall (freebsd-arm), const BPF_IMM ideal-int pkg syscall (freebsd-arm), const BPF_IND ideal-int pkg syscall (freebsd-arm), const BPF_JA ideal-int pkg syscall (freebsd-arm), const BPF_JEQ ideal-int pkg syscall (freebsd-arm), const BPF_JGE ideal-int pkg syscall (freebsd-arm), const BPF_JGT ideal-int pkg syscall (freebsd-arm), const BPF_JMP ideal-int pkg syscall (freebsd-arm), const BPF_JSET ideal-int pkg syscall (freebsd-arm), const BPF_K ideal-int pkg syscall (freebsd-arm), const BPF_LD ideal-int pkg syscall (freebsd-arm), const BPF_LDX ideal-int pkg syscall (freebsd-arm), const BPF_LEN ideal-int pkg syscall (freebsd-arm), const BPF_LSH ideal-int pkg syscall (freebsd-arm), const BPF_MAJOR_VERSION ideal-int pkg syscall (freebsd-arm), const BPF_MAXBUFSIZE ideal-int pkg syscall (freebsd-arm), const BPF_MAXINSNS ideal-int pkg syscall (freebsd-arm), const BPF_MEM ideal-int pkg syscall (freebsd-arm), const BPF_MEMWORDS ideal-int pkg syscall (freebsd-arm), const BPF_MINBUFSIZE ideal-int pkg syscall (freebsd-arm), const BPF_MINOR_VERSION ideal-int pkg syscall (freebsd-arm), const BPF_MISC ideal-int pkg syscall (freebsd-arm), const BPF_MSH ideal-int pkg syscall (freebsd-arm), const BPF_MUL ideal-int pkg syscall (freebsd-arm), const BPF_NEG ideal-int pkg syscall (freebsd-arm), const BPF_OR ideal-int pkg syscall (freebsd-arm), const BPF_RELEASE ideal-int pkg syscall (freebsd-arm), const BPF_RET ideal-int pkg syscall (freebsd-arm), const BPF_RSH ideal-int pkg syscall (freebsd-arm), const BPF_ST ideal-int pkg syscall (freebsd-arm), const BPF_STX ideal-int pkg syscall (freebsd-arm), const BPF_SUB ideal-int pkg syscall (freebsd-arm), const BPF_TAX ideal-int pkg syscall (freebsd-arm), const BPF_TXA ideal-int pkg syscall (freebsd-arm), const BPF_T_BINTIME ideal-int pkg syscall (freebsd-arm), const BPF_T_BINTIME_FAST ideal-int pkg syscall (freebsd-arm), const BPF_T_BINTIME_MONOTONIC ideal-int pkg syscall (freebsd-arm), const BPF_T_BINTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-arm), const BPF_T_FAST ideal-int pkg syscall (freebsd-arm), const BPF_T_FLAG_MASK ideal-int pkg syscall (freebsd-arm), const BPF_T_FORMAT_MASK ideal-int pkg syscall (freebsd-arm), const BPF_T_MICROTIME ideal-int pkg syscall (freebsd-arm), const BPF_T_MICROTIME_FAST ideal-int pkg syscall (freebsd-arm), const BPF_T_MICROTIME_MONOTONIC ideal-int pkg syscall (freebsd-arm), const BPF_T_MICROTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-arm), const BPF_T_MONOTONIC ideal-int pkg syscall (freebsd-arm), const BPF_T_MONOTONIC_FAST ideal-int pkg syscall (freebsd-arm), const BPF_T_NANOTIME ideal-int pkg syscall (freebsd-arm), const BPF_T_NANOTIME_FAST ideal-int pkg syscall (freebsd-arm), const BPF_T_NANOTIME_MONOTONIC ideal-int pkg syscall (freebsd-arm), const BPF_T_NANOTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-arm), const BPF_T_NONE ideal-int pkg syscall (freebsd-arm), const BPF_T_NORMAL ideal-int pkg syscall (freebsd-arm), const BPF_W ideal-int pkg syscall (freebsd-arm), const BPF_X ideal-int pkg syscall (freebsd-arm), const BRKINT ideal-int pkg syscall (freebsd-arm), const CFLUSH ideal-int pkg syscall (freebsd-arm), const CLOCAL ideal-int pkg syscall (freebsd-arm), const CREAD ideal-int pkg syscall (freebsd-arm), const CS5 ideal-int pkg syscall (freebsd-arm), const CS6 ideal-int pkg syscall (freebsd-arm), const CS7 ideal-int pkg syscall (freebsd-arm), const CS8 ideal-int pkg syscall (freebsd-arm), const CSIZE ideal-int pkg syscall (freebsd-arm), const CSTART ideal-int pkg syscall (freebsd-arm), const CSTATUS ideal-int pkg syscall (freebsd-arm), const CSTOP ideal-int pkg syscall (freebsd-arm), const CSTOPB ideal-int pkg syscall (freebsd-arm), const CSUSP ideal-int pkg syscall (freebsd-arm), const CTL_MAXNAME ideal-int pkg syscall (freebsd-arm), const CTL_NET ideal-int pkg syscall (freebsd-arm), const DLT_A429 ideal-int pkg syscall (freebsd-arm), const DLT_A653_ICM ideal-int pkg syscall (freebsd-arm), const DLT_AIRONET_HEADER ideal-int pkg syscall (freebsd-arm), const DLT_AOS ideal-int pkg syscall (freebsd-arm), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (freebsd-arm), const DLT_ARCNET ideal-int pkg syscall (freebsd-arm), const DLT_ARCNET_LINUX ideal-int pkg syscall (freebsd-arm), const DLT_ATM_CLIP ideal-int pkg syscall (freebsd-arm), const DLT_ATM_RFC1483 ideal-int pkg syscall (freebsd-arm), const DLT_AURORA ideal-int pkg syscall (freebsd-arm), const DLT_AX25 ideal-int pkg syscall (freebsd-arm), const DLT_AX25_KISS ideal-int pkg syscall (freebsd-arm), const DLT_BACNET_MS_TP ideal-int pkg syscall (freebsd-arm), const DLT_BLUETOOTH_HCI_H4 ideal-int pkg syscall (freebsd-arm), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int pkg syscall (freebsd-arm), const DLT_CAN20B ideal-int pkg syscall (freebsd-arm), const DLT_CAN_SOCKETCAN ideal-int pkg syscall (freebsd-arm), const DLT_CHAOS ideal-int pkg syscall (freebsd-arm), const DLT_CHDLC ideal-int pkg syscall (freebsd-arm), const DLT_CISCO_IOS ideal-int pkg syscall (freebsd-arm), const DLT_C_HDLC ideal-int pkg syscall (freebsd-arm), const DLT_C_HDLC_WITH_DIR ideal-int pkg syscall (freebsd-arm), const DLT_DBUS ideal-int pkg syscall (freebsd-arm), const DLT_DECT ideal-int pkg syscall (freebsd-arm), const DLT_DOCSIS ideal-int pkg syscall (freebsd-arm), const DLT_DVB_CI ideal-int pkg syscall (freebsd-arm), const DLT_ECONET ideal-int pkg syscall (freebsd-arm), const DLT_EN10MB ideal-int pkg syscall (freebsd-arm), const DLT_EN3MB ideal-int pkg syscall (freebsd-arm), const DLT_ENC ideal-int pkg syscall (freebsd-arm), const DLT_ERF ideal-int pkg syscall (freebsd-arm), const DLT_ERF_ETH ideal-int pkg syscall (freebsd-arm), const DLT_ERF_POS ideal-int pkg syscall (freebsd-arm), const DLT_FC_2 ideal-int pkg syscall (freebsd-arm), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int pkg syscall (freebsd-arm), const DLT_FDDI ideal-int pkg syscall (freebsd-arm), const DLT_FLEXRAY ideal-int pkg syscall (freebsd-arm), const DLT_FRELAY ideal-int pkg syscall (freebsd-arm), const DLT_FRELAY_WITH_DIR ideal-int pkg syscall (freebsd-arm), const DLT_GCOM_SERIAL ideal-int pkg syscall (freebsd-arm), const DLT_GCOM_T1E1 ideal-int pkg syscall (freebsd-arm), const DLT_GPF_F ideal-int pkg syscall (freebsd-arm), const DLT_GPF_T ideal-int pkg syscall (freebsd-arm), const DLT_GPRS_LLC ideal-int pkg syscall (freebsd-arm), const DLT_GSMTAP_ABIS ideal-int pkg syscall (freebsd-arm), const DLT_GSMTAP_UM ideal-int pkg syscall (freebsd-arm), const DLT_HHDLC ideal-int pkg syscall (freebsd-arm), const DLT_IBM_SN ideal-int pkg syscall (freebsd-arm), const DLT_IBM_SP ideal-int pkg syscall (freebsd-arm), const DLT_IEEE802 ideal-int pkg syscall (freebsd-arm), const DLT_IEEE802_11 ideal-int pkg syscall (freebsd-arm), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (freebsd-arm), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (freebsd-arm), const DLT_IEEE802_15_4 ideal-int pkg syscall (freebsd-arm), const DLT_IEEE802_15_4_LINUX ideal-int pkg syscall (freebsd-arm), const DLT_IEEE802_15_4_NOFCS ideal-int pkg syscall (freebsd-arm), const DLT_IEEE802_15_4_NONASK_PHY ideal-int pkg syscall (freebsd-arm), const DLT_IEEE802_16_MAC_CPS ideal-int pkg syscall (freebsd-arm), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int pkg syscall (freebsd-arm), const DLT_IPFILTER ideal-int pkg syscall (freebsd-arm), const DLT_IPMB ideal-int pkg syscall (freebsd-arm), const DLT_IPMB_LINUX ideal-int pkg syscall (freebsd-arm), const DLT_IPNET ideal-int pkg syscall (freebsd-arm), const DLT_IPOIB ideal-int pkg syscall (freebsd-arm), const DLT_IPV4 ideal-int pkg syscall (freebsd-arm), const DLT_IPV6 ideal-int pkg syscall (freebsd-arm), const DLT_IP_OVER_FC ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_ATM1 ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_ATM2 ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_ATM_CEMIC ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_CHDLC ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_ES ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_ETHER ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_FIBRECHANNEL ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_FRELAY ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_GGSN ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_ISM ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_MFR ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_MLFR ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_MLPPP ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_MONITOR ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_PIC_PEER ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_PPP ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_PPPOE ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_PPPOE_ATM ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_SERVICES ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_SRX_E2E ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_ST ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_VP ideal-int pkg syscall (freebsd-arm), const DLT_JUNIPER_VS ideal-int pkg syscall (freebsd-arm), const DLT_LAPB_WITH_DIR ideal-int pkg syscall (freebsd-arm), const DLT_LAPD ideal-int pkg syscall (freebsd-arm), const DLT_LIN ideal-int pkg syscall (freebsd-arm), const DLT_LINUX_EVDEV ideal-int pkg syscall (freebsd-arm), const DLT_LINUX_IRDA ideal-int pkg syscall (freebsd-arm), const DLT_LINUX_LAPD ideal-int pkg syscall (freebsd-arm), const DLT_LINUX_PPP_WITHDIRECTION ideal-int pkg syscall (freebsd-arm), const DLT_LINUX_SLL ideal-int pkg syscall (freebsd-arm), const DLT_LOOP ideal-int pkg syscall (freebsd-arm), const DLT_LTALK ideal-int pkg syscall (freebsd-arm), const DLT_MATCHING_MAX ideal-int pkg syscall (freebsd-arm), const DLT_MATCHING_MIN ideal-int pkg syscall (freebsd-arm), const DLT_MFR ideal-int pkg syscall (freebsd-arm), const DLT_MOST ideal-int pkg syscall (freebsd-arm), const DLT_MPEG_2_TS ideal-int pkg syscall (freebsd-arm), const DLT_MPLS ideal-int pkg syscall (freebsd-arm), const DLT_MTP2 ideal-int pkg syscall (freebsd-arm), const DLT_MTP2_WITH_PHDR ideal-int pkg syscall (freebsd-arm), const DLT_MTP3 ideal-int pkg syscall (freebsd-arm), const DLT_MUX27010 ideal-int pkg syscall (freebsd-arm), const DLT_NETANALYZER ideal-int pkg syscall (freebsd-arm), const DLT_NETANALYZER_TRANSPARENT ideal-int pkg syscall (freebsd-arm), const DLT_NFC_LLCP ideal-int pkg syscall (freebsd-arm), const DLT_NFLOG ideal-int pkg syscall (freebsd-arm), const DLT_NG40 ideal-int pkg syscall (freebsd-arm), const DLT_NULL ideal-int pkg syscall (freebsd-arm), const DLT_PCI_EXP ideal-int pkg syscall (freebsd-arm), const DLT_PFLOG ideal-int pkg syscall (freebsd-arm), const DLT_PFSYNC ideal-int pkg syscall (freebsd-arm), const DLT_PPI ideal-int pkg syscall (freebsd-arm), const DLT_PPP ideal-int pkg syscall (freebsd-arm), const DLT_PPP_BSDOS ideal-int pkg syscall (freebsd-arm), const DLT_PPP_ETHER ideal-int pkg syscall (freebsd-arm), const DLT_PPP_PPPD ideal-int pkg syscall (freebsd-arm), const DLT_PPP_SERIAL ideal-int pkg syscall (freebsd-arm), const DLT_PPP_WITH_DIR ideal-int pkg syscall (freebsd-arm), const DLT_PPP_WITH_DIRECTION ideal-int pkg syscall (freebsd-arm), const DLT_PRISM_HEADER ideal-int pkg syscall (freebsd-arm), const DLT_PRONET ideal-int pkg syscall (freebsd-arm), const DLT_RAIF1 ideal-int pkg syscall (freebsd-arm), const DLT_RAW ideal-int pkg syscall (freebsd-arm), const DLT_RIO ideal-int pkg syscall (freebsd-arm), const DLT_SCCP ideal-int pkg syscall (freebsd-arm), const DLT_SITA ideal-int pkg syscall (freebsd-arm), const DLT_SLIP ideal-int pkg syscall (freebsd-arm), const DLT_SLIP_BSDOS ideal-int pkg syscall (freebsd-arm), const DLT_STANAG_5066_D_PDU ideal-int pkg syscall (freebsd-arm), const DLT_SUNATM ideal-int pkg syscall (freebsd-arm), const DLT_SYMANTEC_FIREWALL ideal-int pkg syscall (freebsd-arm), const DLT_TZSP ideal-int pkg syscall (freebsd-arm), const DLT_USB ideal-int pkg syscall (freebsd-arm), const DLT_USB_LINUX ideal-int pkg syscall (freebsd-arm), const DLT_USB_LINUX_MMAPPED ideal-int pkg syscall (freebsd-arm), const DLT_USER0 ideal-int pkg syscall (freebsd-arm), const DLT_USER1 ideal-int pkg syscall (freebsd-arm), const DLT_USER10 ideal-int pkg syscall (freebsd-arm), const DLT_USER11 ideal-int pkg syscall (freebsd-arm), const DLT_USER12 ideal-int pkg syscall (freebsd-arm), const DLT_USER13 ideal-int pkg syscall (freebsd-arm), const DLT_USER14 ideal-int pkg syscall (freebsd-arm), const DLT_USER15 ideal-int pkg syscall (freebsd-arm), const DLT_USER2 ideal-int pkg syscall (freebsd-arm), const DLT_USER3 ideal-int pkg syscall (freebsd-arm), const DLT_USER4 ideal-int pkg syscall (freebsd-arm), const DLT_USER5 ideal-int pkg syscall (freebsd-arm), const DLT_USER6 ideal-int pkg syscall (freebsd-arm), const DLT_USER7 ideal-int pkg syscall (freebsd-arm), const DLT_USER8 ideal-int pkg syscall (freebsd-arm), const DLT_USER9 ideal-int pkg syscall (freebsd-arm), const DLT_WIHART ideal-int pkg syscall (freebsd-arm), const DLT_X2E_SERIAL ideal-int pkg syscall (freebsd-arm), const DLT_X2E_XORAYA ideal-int pkg syscall (freebsd-arm), const DT_BLK ideal-int pkg syscall (freebsd-arm), const DT_CHR ideal-int pkg syscall (freebsd-arm), const DT_DIR ideal-int pkg syscall (freebsd-arm), const DT_FIFO ideal-int pkg syscall (freebsd-arm), const DT_LNK ideal-int pkg syscall (freebsd-arm), const DT_REG ideal-int pkg syscall (freebsd-arm), const DT_SOCK ideal-int pkg syscall (freebsd-arm), const DT_UNKNOWN ideal-int pkg syscall (freebsd-arm), const DT_WHT ideal-int pkg syscall (freebsd-arm), const EAUTH Errno pkg syscall (freebsd-arm), const EBADMSG Errno pkg syscall (freebsd-arm), const EBADRPC Errno pkg syscall (freebsd-arm), const ECAPMODE Errno pkg syscall (freebsd-arm), const ECHO ideal-int pkg syscall (freebsd-arm), const ECHOCTL ideal-int pkg syscall (freebsd-arm), const ECHOE ideal-int pkg syscall (freebsd-arm), const ECHOK ideal-int pkg syscall (freebsd-arm), const ECHOKE ideal-int pkg syscall (freebsd-arm), const ECHONL ideal-int pkg syscall (freebsd-arm), const ECHOPRT ideal-int pkg syscall (freebsd-arm), const EDOOFUS Errno pkg syscall (freebsd-arm), const EFTYPE Errno pkg syscall (freebsd-arm), const ELAST Errno pkg syscall (freebsd-arm), const EMULTIHOP Errno pkg syscall (freebsd-arm), const ENEEDAUTH Errno pkg syscall (freebsd-arm), const ENOATTR Errno pkg syscall (freebsd-arm), const ENOLINK Errno pkg syscall (freebsd-arm), const ENOTCAPABLE Errno pkg syscall (freebsd-arm), const EPROCLIM Errno pkg syscall (freebsd-arm), const EPROCUNAVAIL Errno pkg syscall (freebsd-arm), const EPROGMISMATCH Errno pkg syscall (freebsd-arm), const EPROGUNAVAIL Errno pkg syscall (freebsd-arm), const EPROTO Errno pkg syscall (freebsd-arm), const ERPCMISMATCH Errno pkg syscall (freebsd-arm), const EVFILT_AIO ideal-int pkg syscall (freebsd-arm), const EVFILT_FS ideal-int pkg syscall (freebsd-arm), const EVFILT_LIO ideal-int pkg syscall (freebsd-arm), const EVFILT_PROC ideal-int pkg syscall (freebsd-arm), const EVFILT_READ ideal-int pkg syscall (freebsd-arm), const EVFILT_SIGNAL ideal-int pkg syscall (freebsd-arm), const EVFILT_SYSCOUNT ideal-int pkg syscall (freebsd-arm), const EVFILT_TIMER ideal-int pkg syscall (freebsd-arm), const EVFILT_USER ideal-int pkg syscall (freebsd-arm), const EVFILT_VNODE ideal-int pkg syscall (freebsd-arm), const EVFILT_WRITE ideal-int pkg syscall (freebsd-arm), const EV_ADD ideal-int pkg syscall (freebsd-arm), const EV_CLEAR ideal-int pkg syscall (freebsd-arm), const EV_DELETE ideal-int pkg syscall (freebsd-arm), const EV_DISABLE ideal-int pkg syscall (freebsd-arm), const EV_DISPATCH ideal-int pkg syscall (freebsd-arm), const EV_ENABLE ideal-int pkg syscall (freebsd-arm), const EV_EOF ideal-int pkg syscall (freebsd-arm), const EV_ERROR ideal-int pkg syscall (freebsd-arm), const EV_FLAG1 ideal-int pkg syscall (freebsd-arm), const EV_ONESHOT ideal-int pkg syscall (freebsd-arm), const EV_RECEIPT ideal-int pkg syscall (freebsd-arm), const EV_SYSFLAGS ideal-int pkg syscall (freebsd-arm), const EXTA ideal-int pkg syscall (freebsd-arm), const EXTB ideal-int pkg syscall (freebsd-arm), const EXTPROC ideal-int pkg syscall (freebsd-arm), const FD_CLOEXEC ideal-int pkg syscall (freebsd-arm), const FD_SETSIZE ideal-int pkg syscall (freebsd-arm), const FLUSHO ideal-int pkg syscall (freebsd-arm), const F_CANCEL ideal-int pkg syscall (freebsd-arm), const F_DUP2FD ideal-int pkg syscall (freebsd-arm), const F_DUP2FD_CLOEXEC ideal-int pkg syscall (freebsd-arm), const F_DUPFD ideal-int pkg syscall (freebsd-arm), const F_DUPFD_CLOEXEC ideal-int pkg syscall (freebsd-arm), const F_GETFD ideal-int pkg syscall (freebsd-arm), const F_GETFL ideal-int pkg syscall (freebsd-arm), const F_GETLK ideal-int pkg syscall (freebsd-arm), const F_GETOWN ideal-int pkg syscall (freebsd-arm), const F_OGETLK ideal-int pkg syscall (freebsd-arm), const F_OK ideal-int pkg syscall (freebsd-arm), const F_OSETLK ideal-int pkg syscall (freebsd-arm), const F_OSETLKW ideal-int pkg syscall (freebsd-arm), const F_RDAHEAD ideal-int pkg syscall (freebsd-arm), const F_RDLCK ideal-int pkg syscall (freebsd-arm), const F_READAHEAD ideal-int pkg syscall (freebsd-arm), const F_SETFD ideal-int pkg syscall (freebsd-arm), const F_SETFL ideal-int pkg syscall (freebsd-arm), const F_SETLK ideal-int pkg syscall (freebsd-arm), const F_SETLKW ideal-int pkg syscall (freebsd-arm), const F_SETLK_REMOTE ideal-int pkg syscall (freebsd-arm), const F_SETOWN ideal-int pkg syscall (freebsd-arm), const F_UNLCK ideal-int pkg syscall (freebsd-arm), const F_UNLCKSYS ideal-int pkg syscall (freebsd-arm), const F_WRLCK ideal-int pkg syscall (freebsd-arm), const HUPCL ideal-int pkg syscall (freebsd-arm), const ICANON ideal-int pkg syscall (freebsd-arm), const ICMP6_FILTER = 18 pkg syscall (freebsd-arm), const ICMP6_FILTER ideal-int pkg syscall (freebsd-arm), const ICRNL ideal-int pkg syscall (freebsd-arm), const IEXTEN ideal-int pkg syscall (freebsd-arm), const IFAN_ARRIVAL ideal-int pkg syscall (freebsd-arm), const IFAN_DEPARTURE ideal-int pkg syscall (freebsd-arm), const IFF_ALLMULTI ideal-int pkg syscall (freebsd-arm), const IFF_ALTPHYS ideal-int pkg syscall (freebsd-arm), const IFF_CANTCHANGE ideal-int pkg syscall (freebsd-arm), const IFF_CANTCONFIG ideal-int pkg syscall (freebsd-arm), const IFF_DEBUG ideal-int pkg syscall (freebsd-arm), const IFF_DRV_OACTIVE ideal-int pkg syscall (freebsd-arm), const IFF_DRV_RUNNING ideal-int pkg syscall (freebsd-arm), const IFF_DYING ideal-int pkg syscall (freebsd-arm), const IFF_LINK0 ideal-int pkg syscall (freebsd-arm), const IFF_LINK1 ideal-int pkg syscall (freebsd-arm), const IFF_LINK2 ideal-int pkg syscall (freebsd-arm), const IFF_MONITOR ideal-int pkg syscall (freebsd-arm), const IFF_NOARP ideal-int pkg syscall (freebsd-arm), const IFF_OACTIVE ideal-int pkg syscall (freebsd-arm), const IFF_POINTOPOINT ideal-int pkg syscall (freebsd-arm), const IFF_PPROMISC ideal-int pkg syscall (freebsd-arm), const IFF_PROMISC ideal-int pkg syscall (freebsd-arm), const IFF_RENAMING ideal-int pkg syscall (freebsd-arm), const IFF_RUNNING ideal-int pkg syscall (freebsd-arm), const IFF_SIMPLEX ideal-int pkg syscall (freebsd-arm), const IFF_SMART ideal-int pkg syscall (freebsd-arm), const IFF_STATICARP ideal-int pkg syscall (freebsd-arm), const IFNAMSIZ ideal-int pkg syscall (freebsd-arm), const IFT_1822 ideal-int pkg syscall (freebsd-arm), const IFT_A12MPPSWITCH ideal-int pkg syscall (freebsd-arm), const IFT_AAL2 ideal-int pkg syscall (freebsd-arm), const IFT_AAL5 ideal-int pkg syscall (freebsd-arm), const IFT_ADSL ideal-int pkg syscall (freebsd-arm), const IFT_AFLANE8023 ideal-int pkg syscall (freebsd-arm), const IFT_AFLANE8025 ideal-int pkg syscall (freebsd-arm), const IFT_ARAP ideal-int pkg syscall (freebsd-arm), const IFT_ARCNET ideal-int pkg syscall (freebsd-arm), const IFT_ARCNETPLUS ideal-int pkg syscall (freebsd-arm), const IFT_ASYNC ideal-int pkg syscall (freebsd-arm), const IFT_ATM ideal-int pkg syscall (freebsd-arm), const IFT_ATMDXI ideal-int pkg syscall (freebsd-arm), const IFT_ATMFUNI ideal-int pkg syscall (freebsd-arm), const IFT_ATMIMA ideal-int pkg syscall (freebsd-arm), const IFT_ATMLOGICAL ideal-int pkg syscall (freebsd-arm), const IFT_ATMRADIO ideal-int pkg syscall (freebsd-arm), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (freebsd-arm), const IFT_ATMVCIENDPT ideal-int pkg syscall (freebsd-arm), const IFT_ATMVIRTUAL ideal-int pkg syscall (freebsd-arm), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (freebsd-arm), const IFT_BRIDGE ideal-int pkg syscall (freebsd-arm), const IFT_BSC ideal-int pkg syscall (freebsd-arm), const IFT_CCTEMUL ideal-int pkg syscall (freebsd-arm), const IFT_CEPT ideal-int pkg syscall (freebsd-arm), const IFT_CES ideal-int pkg syscall (freebsd-arm), const IFT_CHANNEL ideal-int pkg syscall (freebsd-arm), const IFT_CNR ideal-int pkg syscall (freebsd-arm), const IFT_COFFEE ideal-int pkg syscall (freebsd-arm), const IFT_COMPOSITELINK ideal-int pkg syscall (freebsd-arm), const IFT_DCN ideal-int pkg syscall (freebsd-arm), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (freebsd-arm), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (freebsd-arm), const IFT_DLSW ideal-int pkg syscall (freebsd-arm), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (freebsd-arm), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (freebsd-arm), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (freebsd-arm), const IFT_DS0 ideal-int pkg syscall (freebsd-arm), const IFT_DS0BUNDLE ideal-int pkg syscall (freebsd-arm), const IFT_DS1FDL ideal-int pkg syscall (freebsd-arm), const IFT_DS3 ideal-int pkg syscall (freebsd-arm), const IFT_DTM ideal-int pkg syscall (freebsd-arm), const IFT_DVBASILN ideal-int pkg syscall (freebsd-arm), const IFT_DVBASIOUT ideal-int pkg syscall (freebsd-arm), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (freebsd-arm), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (freebsd-arm), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (freebsd-arm), const IFT_ENC ideal-int pkg syscall (freebsd-arm), const IFT_EON ideal-int pkg syscall (freebsd-arm), const IFT_EPLRS ideal-int pkg syscall (freebsd-arm), const IFT_ESCON ideal-int pkg syscall (freebsd-arm), const IFT_ETHER ideal-int pkg syscall (freebsd-arm), const IFT_FAITH ideal-int pkg syscall (freebsd-arm), const IFT_FAST ideal-int pkg syscall (freebsd-arm), const IFT_FASTETHER ideal-int pkg syscall (freebsd-arm), const IFT_FASTETHERFX ideal-int pkg syscall (freebsd-arm), const IFT_FDDI ideal-int pkg syscall (freebsd-arm), const IFT_FIBRECHANNEL ideal-int pkg syscall (freebsd-arm), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (freebsd-arm), const IFT_FRAMERELAYMPI ideal-int pkg syscall (freebsd-arm), const IFT_FRDLCIENDPT ideal-int pkg syscall (freebsd-arm), const IFT_FRELAY ideal-int pkg syscall (freebsd-arm), const IFT_FRELAYDCE ideal-int pkg syscall (freebsd-arm), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (freebsd-arm), const IFT_FRFORWARD ideal-int pkg syscall (freebsd-arm), const IFT_G703AT2MB ideal-int pkg syscall (freebsd-arm), const IFT_G703AT64K ideal-int pkg syscall (freebsd-arm), const IFT_GIF ideal-int pkg syscall (freebsd-arm), const IFT_GIGABITETHERNET ideal-int pkg syscall (freebsd-arm), const IFT_GR303IDT ideal-int pkg syscall (freebsd-arm), const IFT_GR303RDT ideal-int pkg syscall (freebsd-arm), const IFT_H323GATEKEEPER ideal-int pkg syscall (freebsd-arm), const IFT_H323PROXY ideal-int pkg syscall (freebsd-arm), const IFT_HDH1822 ideal-int pkg syscall (freebsd-arm), const IFT_HDLC ideal-int pkg syscall (freebsd-arm), const IFT_HDSL2 ideal-int pkg syscall (freebsd-arm), const IFT_HIPERLAN2 ideal-int pkg syscall (freebsd-arm), const IFT_HIPPI ideal-int pkg syscall (freebsd-arm), const IFT_HIPPIINTERFACE ideal-int pkg syscall (freebsd-arm), const IFT_HOSTPAD ideal-int pkg syscall (freebsd-arm), const IFT_HSSI ideal-int pkg syscall (freebsd-arm), const IFT_HY ideal-int pkg syscall (freebsd-arm), const IFT_IBM370PARCHAN ideal-int pkg syscall (freebsd-arm), const IFT_IDSL ideal-int pkg syscall (freebsd-arm), const IFT_IEEE1394 ideal-int pkg syscall (freebsd-arm), const IFT_IEEE80211 ideal-int pkg syscall (freebsd-arm), const IFT_IEEE80212 ideal-int pkg syscall (freebsd-arm), const IFT_IEEE8023ADLAG ideal-int pkg syscall (freebsd-arm), const IFT_IFGSN ideal-int pkg syscall (freebsd-arm), const IFT_IMT ideal-int pkg syscall (freebsd-arm), const IFT_INFINIBAND ideal-int pkg syscall (freebsd-arm), const IFT_INTERLEAVE ideal-int pkg syscall (freebsd-arm), const IFT_IP ideal-int pkg syscall (freebsd-arm), const IFT_IPFORWARD ideal-int pkg syscall (freebsd-arm), const IFT_IPOVERATM ideal-int pkg syscall (freebsd-arm), const IFT_IPOVERCDLC ideal-int pkg syscall (freebsd-arm), const IFT_IPOVERCLAW ideal-int pkg syscall (freebsd-arm), const IFT_IPSWITCH ideal-int pkg syscall (freebsd-arm), const IFT_IPXIP ideal-int pkg syscall (freebsd-arm), const IFT_ISDN ideal-int pkg syscall (freebsd-arm), const IFT_ISDNBASIC ideal-int pkg syscall (freebsd-arm), const IFT_ISDNPRIMARY ideal-int pkg syscall (freebsd-arm), const IFT_ISDNS ideal-int pkg syscall (freebsd-arm), const IFT_ISDNU ideal-int pkg syscall (freebsd-arm), const IFT_ISO88022LLC ideal-int pkg syscall (freebsd-arm), const IFT_ISO88023 ideal-int pkg syscall (freebsd-arm), const IFT_ISO88024 ideal-int pkg syscall (freebsd-arm), const IFT_ISO88025 ideal-int pkg syscall (freebsd-arm), const IFT_ISO88025CRFPINT ideal-int pkg syscall (freebsd-arm), const IFT_ISO88025DTR ideal-int pkg syscall (freebsd-arm), const IFT_ISO88025FIBER ideal-int pkg syscall (freebsd-arm), const IFT_ISO88026 ideal-int pkg syscall (freebsd-arm), const IFT_ISUP ideal-int pkg syscall (freebsd-arm), const IFT_L2VLAN ideal-int pkg syscall (freebsd-arm), const IFT_L3IPVLAN ideal-int pkg syscall (freebsd-arm), const IFT_L3IPXVLAN ideal-int pkg syscall (freebsd-arm), const IFT_LAPB ideal-int pkg syscall (freebsd-arm), const IFT_LAPD ideal-int pkg syscall (freebsd-arm), const IFT_LAPF ideal-int pkg syscall (freebsd-arm), const IFT_LOCALTALK ideal-int pkg syscall (freebsd-arm), const IFT_LOOP ideal-int pkg syscall (freebsd-arm), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (freebsd-arm), const IFT_MFSIGLINK ideal-int pkg syscall (freebsd-arm), const IFT_MIOX25 ideal-int pkg syscall (freebsd-arm), const IFT_MODEM ideal-int pkg syscall (freebsd-arm), const IFT_MPC ideal-int pkg syscall (freebsd-arm), const IFT_MPLS ideal-int pkg syscall (freebsd-arm), const IFT_MPLSTUNNEL ideal-int pkg syscall (freebsd-arm), const IFT_MSDSL ideal-int pkg syscall (freebsd-arm), const IFT_MVL ideal-int pkg syscall (freebsd-arm), const IFT_MYRINET ideal-int pkg syscall (freebsd-arm), const IFT_NFAS ideal-int pkg syscall (freebsd-arm), const IFT_NSIP ideal-int pkg syscall (freebsd-arm), const IFT_OPTICALCHANNEL ideal-int pkg syscall (freebsd-arm), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (freebsd-arm), const IFT_OTHER ideal-int pkg syscall (freebsd-arm), const IFT_P10 ideal-int pkg syscall (freebsd-arm), const IFT_P80 ideal-int pkg syscall (freebsd-arm), const IFT_PARA ideal-int pkg syscall (freebsd-arm), const IFT_PFLOG ideal-int pkg syscall (freebsd-arm), const IFT_PFSYNC ideal-int pkg syscall (freebsd-arm), const IFT_PLC ideal-int pkg syscall (freebsd-arm), const IFT_POS ideal-int pkg syscall (freebsd-arm), const IFT_PPP ideal-int pkg syscall (freebsd-arm), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (freebsd-arm), const IFT_PROPBWAP2MP ideal-int pkg syscall (freebsd-arm), const IFT_PROPCNLS ideal-int pkg syscall (freebsd-arm), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (freebsd-arm), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (freebsd-arm), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (freebsd-arm), const IFT_PROPMUX ideal-int pkg syscall (freebsd-arm), const IFT_PROPVIRTUAL ideal-int pkg syscall (freebsd-arm), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (freebsd-arm), const IFT_PTPSERIAL ideal-int pkg syscall (freebsd-arm), const IFT_PVC ideal-int pkg syscall (freebsd-arm), const IFT_QLLC ideal-int pkg syscall (freebsd-arm), const IFT_RADIOMAC ideal-int pkg syscall (freebsd-arm), const IFT_RADSL ideal-int pkg syscall (freebsd-arm), const IFT_REACHDSL ideal-int pkg syscall (freebsd-arm), const IFT_RFC1483 ideal-int pkg syscall (freebsd-arm), const IFT_RS232 ideal-int pkg syscall (freebsd-arm), const IFT_RSRB ideal-int pkg syscall (freebsd-arm), const IFT_SDLC ideal-int pkg syscall (freebsd-arm), const IFT_SDSL ideal-int pkg syscall (freebsd-arm), const IFT_SHDSL ideal-int pkg syscall (freebsd-arm), const IFT_SIP ideal-int pkg syscall (freebsd-arm), const IFT_SLIP ideal-int pkg syscall (freebsd-arm), const IFT_SMDSDXI ideal-int pkg syscall (freebsd-arm), const IFT_SMDSICIP ideal-int pkg syscall (freebsd-arm), const IFT_SONET ideal-int pkg syscall (freebsd-arm), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (freebsd-arm), const IFT_SONETPATH ideal-int pkg syscall (freebsd-arm), const IFT_SONETVT ideal-int pkg syscall (freebsd-arm), const IFT_SRP ideal-int pkg syscall (freebsd-arm), const IFT_SS7SIGLINK ideal-int pkg syscall (freebsd-arm), const IFT_STACKTOSTACK ideal-int pkg syscall (freebsd-arm), const IFT_STARLAN ideal-int pkg syscall (freebsd-arm), const IFT_STF ideal-int pkg syscall (freebsd-arm), const IFT_T1 ideal-int pkg syscall (freebsd-arm), const IFT_TDLC ideal-int pkg syscall (freebsd-arm), const IFT_TERMPAD ideal-int pkg syscall (freebsd-arm), const IFT_TR008 ideal-int pkg syscall (freebsd-arm), const IFT_TRANSPHDLC ideal-int pkg syscall (freebsd-arm), const IFT_TUNNEL ideal-int pkg syscall (freebsd-arm), const IFT_ULTRA ideal-int pkg syscall (freebsd-arm), const IFT_USB ideal-int pkg syscall (freebsd-arm), const IFT_V11 ideal-int pkg syscall (freebsd-arm), const IFT_V35 ideal-int pkg syscall (freebsd-arm), const IFT_V36 ideal-int pkg syscall (freebsd-arm), const IFT_V37 ideal-int pkg syscall (freebsd-arm), const IFT_VDSL ideal-int pkg syscall (freebsd-arm), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (freebsd-arm), const IFT_VOICEEM ideal-int pkg syscall (freebsd-arm), const IFT_VOICEENCAP ideal-int pkg syscall (freebsd-arm), const IFT_VOICEFXO ideal-int pkg syscall (freebsd-arm), const IFT_VOICEFXS ideal-int pkg syscall (freebsd-arm), const IFT_VOICEOVERATM ideal-int pkg syscall (freebsd-arm), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (freebsd-arm), const IFT_VOICEOVERIP ideal-int pkg syscall (freebsd-arm), const IFT_X213 ideal-int pkg syscall (freebsd-arm), const IFT_X25 ideal-int pkg syscall (freebsd-arm), const IFT_X25DDN ideal-int pkg syscall (freebsd-arm), const IFT_X25HUNTGROUP ideal-int pkg syscall (freebsd-arm), const IFT_X25MLP ideal-int pkg syscall (freebsd-arm), const IFT_X25PLE ideal-int pkg syscall (freebsd-arm), const IFT_XETHER ideal-int pkg syscall (freebsd-arm), const IGNBRK ideal-int pkg syscall (freebsd-arm), const IGNCR ideal-int pkg syscall (freebsd-arm), const IGNPAR ideal-int pkg syscall (freebsd-arm), const IMAXBEL ideal-int pkg syscall (freebsd-arm), const INLCR ideal-int pkg syscall (freebsd-arm), const INPCK ideal-int pkg syscall (freebsd-arm), const IN_CLASSA_HOST ideal-int pkg syscall (freebsd-arm), const IN_CLASSA_MAX ideal-int pkg syscall (freebsd-arm), const IN_CLASSA_NET ideal-int pkg syscall (freebsd-arm), const IN_CLASSA_NSHIFT ideal-int pkg syscall (freebsd-arm), const IN_CLASSB_HOST ideal-int pkg syscall (freebsd-arm), const IN_CLASSB_MAX ideal-int pkg syscall (freebsd-arm), const IN_CLASSB_NET ideal-int pkg syscall (freebsd-arm), const IN_CLASSB_NSHIFT ideal-int pkg syscall (freebsd-arm), const IN_CLASSC_HOST ideal-int pkg syscall (freebsd-arm), const IN_CLASSC_NET ideal-int pkg syscall (freebsd-arm), const IN_CLASSC_NSHIFT ideal-int pkg syscall (freebsd-arm), const IN_CLASSD_HOST ideal-int pkg syscall (freebsd-arm), const IN_CLASSD_NET ideal-int pkg syscall (freebsd-arm), const IN_CLASSD_NSHIFT ideal-int pkg syscall (freebsd-arm), const IN_LOOPBACKNET ideal-int pkg syscall (freebsd-arm), const IN_RFC3021_MASK ideal-int pkg syscall (freebsd-arm), const IPPROTO_3PC ideal-int pkg syscall (freebsd-arm), const IPPROTO_ADFS ideal-int pkg syscall (freebsd-arm), const IPPROTO_AH ideal-int pkg syscall (freebsd-arm), const IPPROTO_AHIP ideal-int pkg syscall (freebsd-arm), const IPPROTO_APES ideal-int pkg syscall (freebsd-arm), const IPPROTO_ARGUS ideal-int pkg syscall (freebsd-arm), const IPPROTO_AX25 ideal-int pkg syscall (freebsd-arm), const IPPROTO_BHA ideal-int pkg syscall (freebsd-arm), const IPPROTO_BLT ideal-int pkg syscall (freebsd-arm), const IPPROTO_BRSATMON ideal-int pkg syscall (freebsd-arm), const IPPROTO_CARP ideal-int pkg syscall (freebsd-arm), const IPPROTO_CFTP ideal-int pkg syscall (freebsd-arm), const IPPROTO_CHAOS ideal-int pkg syscall (freebsd-arm), const IPPROTO_CMTP ideal-int pkg syscall (freebsd-arm), const IPPROTO_CPHB ideal-int pkg syscall (freebsd-arm), const IPPROTO_CPNX ideal-int pkg syscall (freebsd-arm), const IPPROTO_DDP ideal-int pkg syscall (freebsd-arm), const IPPROTO_DGP ideal-int pkg syscall (freebsd-arm), const IPPROTO_DIVERT ideal-int pkg syscall (freebsd-arm), const IPPROTO_DONE ideal-int pkg syscall (freebsd-arm), const IPPROTO_DSTOPTS ideal-int pkg syscall (freebsd-arm), const IPPROTO_EGP ideal-int pkg syscall (freebsd-arm), const IPPROTO_EMCON ideal-int pkg syscall (freebsd-arm), const IPPROTO_ENCAP ideal-int pkg syscall (freebsd-arm), const IPPROTO_EON ideal-int pkg syscall (freebsd-arm), const IPPROTO_ESP ideal-int pkg syscall (freebsd-arm), const IPPROTO_ETHERIP ideal-int pkg syscall (freebsd-arm), const IPPROTO_FRAGMENT ideal-int pkg syscall (freebsd-arm), const IPPROTO_GGP ideal-int pkg syscall (freebsd-arm), const IPPROTO_GMTP ideal-int pkg syscall (freebsd-arm), const IPPROTO_GRE ideal-int pkg syscall (freebsd-arm), const IPPROTO_HELLO ideal-int pkg syscall (freebsd-arm), const IPPROTO_HMP ideal-int pkg syscall (freebsd-arm), const IPPROTO_HOPOPTS ideal-int pkg syscall (freebsd-arm), const IPPROTO_ICMP ideal-int pkg syscall (freebsd-arm), const IPPROTO_ICMPV6 ideal-int pkg syscall (freebsd-arm), const IPPROTO_IDP ideal-int pkg syscall (freebsd-arm), const IPPROTO_IDPR ideal-int pkg syscall (freebsd-arm), const IPPROTO_IDRP ideal-int pkg syscall (freebsd-arm), const IPPROTO_IGMP ideal-int pkg syscall (freebsd-arm), const IPPROTO_IGP ideal-int pkg syscall (freebsd-arm), const IPPROTO_IGRP ideal-int pkg syscall (freebsd-arm), const IPPROTO_IL ideal-int pkg syscall (freebsd-arm), const IPPROTO_INLSP ideal-int pkg syscall (freebsd-arm), const IPPROTO_INP ideal-int pkg syscall (freebsd-arm), const IPPROTO_IPCOMP ideal-int pkg syscall (freebsd-arm), const IPPROTO_IPCV ideal-int pkg syscall (freebsd-arm), const IPPROTO_IPEIP ideal-int pkg syscall (freebsd-arm), const IPPROTO_IPIP ideal-int pkg syscall (freebsd-arm), const IPPROTO_IPPC ideal-int pkg syscall (freebsd-arm), const IPPROTO_IPV4 ideal-int pkg syscall (freebsd-arm), const IPPROTO_IRTP ideal-int pkg syscall (freebsd-arm), const IPPROTO_KRYPTOLAN ideal-int pkg syscall (freebsd-arm), const IPPROTO_LARP ideal-int pkg syscall (freebsd-arm), const IPPROTO_LEAF1 ideal-int pkg syscall (freebsd-arm), const IPPROTO_LEAF2 ideal-int pkg syscall (freebsd-arm), const IPPROTO_MAX ideal-int pkg syscall (freebsd-arm), const IPPROTO_MAXID ideal-int pkg syscall (freebsd-arm), const IPPROTO_MEAS ideal-int pkg syscall (freebsd-arm), const IPPROTO_MH ideal-int pkg syscall (freebsd-arm), const IPPROTO_MHRP ideal-int pkg syscall (freebsd-arm), const IPPROTO_MICP ideal-int pkg syscall (freebsd-arm), const IPPROTO_MOBILE ideal-int pkg syscall (freebsd-arm), const IPPROTO_MPLS ideal-int pkg syscall (freebsd-arm), const IPPROTO_MTP ideal-int pkg syscall (freebsd-arm), const IPPROTO_MUX ideal-int pkg syscall (freebsd-arm), const IPPROTO_ND ideal-int pkg syscall (freebsd-arm), const IPPROTO_NHRP ideal-int pkg syscall (freebsd-arm), const IPPROTO_NONE ideal-int pkg syscall (freebsd-arm), const IPPROTO_NSP ideal-int pkg syscall (freebsd-arm), const IPPROTO_NVPII ideal-int pkg syscall (freebsd-arm), const IPPROTO_OLD_DIVERT ideal-int pkg syscall (freebsd-arm), const IPPROTO_OSPFIGP ideal-int pkg syscall (freebsd-arm), const IPPROTO_PFSYNC ideal-int pkg syscall (freebsd-arm), const IPPROTO_PGM ideal-int pkg syscall (freebsd-arm), const IPPROTO_PIGP ideal-int pkg syscall (freebsd-arm), const IPPROTO_PIM ideal-int pkg syscall (freebsd-arm), const IPPROTO_PRM ideal-int pkg syscall (freebsd-arm), const IPPROTO_PUP ideal-int pkg syscall (freebsd-arm), const IPPROTO_PVP ideal-int pkg syscall (freebsd-arm), const IPPROTO_RAW ideal-int pkg syscall (freebsd-arm), const IPPROTO_RCCMON ideal-int pkg syscall (freebsd-arm), const IPPROTO_RDP ideal-int pkg syscall (freebsd-arm), const IPPROTO_ROUTING ideal-int pkg syscall (freebsd-arm), const IPPROTO_RSVP ideal-int pkg syscall (freebsd-arm), const IPPROTO_RVD ideal-int pkg syscall (freebsd-arm), const IPPROTO_SATEXPAK ideal-int pkg syscall (freebsd-arm), const IPPROTO_SATMON ideal-int pkg syscall (freebsd-arm), const IPPROTO_SCCSP ideal-int pkg syscall (freebsd-arm), const IPPROTO_SCTP ideal-int pkg syscall (freebsd-arm), const IPPROTO_SDRP ideal-int pkg syscall (freebsd-arm), const IPPROTO_SEND ideal-int pkg syscall (freebsd-arm), const IPPROTO_SEP ideal-int pkg syscall (freebsd-arm), const IPPROTO_SKIP ideal-int pkg syscall (freebsd-arm), const IPPROTO_SPACER ideal-int pkg syscall (freebsd-arm), const IPPROTO_SRPC ideal-int pkg syscall (freebsd-arm), const IPPROTO_ST ideal-int pkg syscall (freebsd-arm), const IPPROTO_SVMTP ideal-int pkg syscall (freebsd-arm), const IPPROTO_SWIPE ideal-int pkg syscall (freebsd-arm), const IPPROTO_TCF ideal-int pkg syscall (freebsd-arm), const IPPROTO_TLSP ideal-int pkg syscall (freebsd-arm), const IPPROTO_TP ideal-int pkg syscall (freebsd-arm), const IPPROTO_TPXX ideal-int pkg syscall (freebsd-arm), const IPPROTO_TRUNK1 ideal-int pkg syscall (freebsd-arm), const IPPROTO_TRUNK2 ideal-int pkg syscall (freebsd-arm), const IPPROTO_TTP ideal-int pkg syscall (freebsd-arm), const IPPROTO_VINES ideal-int pkg syscall (freebsd-arm), const IPPROTO_VISA ideal-int pkg syscall (freebsd-arm), const IPPROTO_VMTP ideal-int pkg syscall (freebsd-arm), const IPPROTO_WBEXPAK ideal-int pkg syscall (freebsd-arm), const IPPROTO_WBMON ideal-int pkg syscall (freebsd-arm), const IPPROTO_WSN ideal-int pkg syscall (freebsd-arm), const IPPROTO_XNET ideal-int pkg syscall (freebsd-arm), const IPPROTO_XTP ideal-int pkg syscall (freebsd-arm), const IPV6_AUTOFLOWLABEL ideal-int pkg syscall (freebsd-arm), const IPV6_BINDANY ideal-int pkg syscall (freebsd-arm), const IPV6_BINDV6ONLY ideal-int pkg syscall (freebsd-arm), const IPV6_CHECKSUM ideal-int pkg syscall (freebsd-arm), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (freebsd-arm), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (freebsd-arm), const IPV6_DEFHLIM ideal-int pkg syscall (freebsd-arm), const IPV6_DONTFRAG ideal-int pkg syscall (freebsd-arm), const IPV6_DSTOPTS ideal-int pkg syscall (freebsd-arm), const IPV6_FAITH ideal-int pkg syscall (freebsd-arm), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (freebsd-arm), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (freebsd-arm), const IPV6_FRAGTTL ideal-int pkg syscall (freebsd-arm), const IPV6_FW_ADD ideal-int pkg syscall (freebsd-arm), const IPV6_FW_DEL ideal-int pkg syscall (freebsd-arm), const IPV6_FW_FLUSH ideal-int pkg syscall (freebsd-arm), const IPV6_FW_GET ideal-int pkg syscall (freebsd-arm), const IPV6_FW_ZERO ideal-int pkg syscall (freebsd-arm), const IPV6_HLIMDEC ideal-int pkg syscall (freebsd-arm), const IPV6_HOPLIMIT ideal-int pkg syscall (freebsd-arm), const IPV6_HOPOPTS ideal-int pkg syscall (freebsd-arm), const IPV6_IPSEC_POLICY ideal-int pkg syscall (freebsd-arm), const IPV6_MAXHLIM ideal-int pkg syscall (freebsd-arm), const IPV6_MAXOPTHDR ideal-int pkg syscall (freebsd-arm), const IPV6_MAXPACKET ideal-int pkg syscall (freebsd-arm), const IPV6_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (freebsd-arm), const IPV6_MAX_MEMBERSHIPS ideal-int pkg syscall (freebsd-arm), const IPV6_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (freebsd-arm), const IPV6_MIN_MEMBERSHIPS ideal-int pkg syscall (freebsd-arm), const IPV6_MMTU ideal-int pkg syscall (freebsd-arm), const IPV6_MSFILTER ideal-int pkg syscall (freebsd-arm), const IPV6_NEXTHOP ideal-int pkg syscall (freebsd-arm), const IPV6_PATHMTU ideal-int pkg syscall (freebsd-arm), const IPV6_PKTINFO ideal-int pkg syscall (freebsd-arm), const IPV6_PORTRANGE ideal-int pkg syscall (freebsd-arm), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (freebsd-arm), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (freebsd-arm), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (freebsd-arm), const IPV6_PREFER_TEMPADDR ideal-int pkg syscall (freebsd-arm), const IPV6_RECVDSTOPTS ideal-int pkg syscall (freebsd-arm), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (freebsd-arm), const IPV6_RECVHOPOPTS ideal-int pkg syscall (freebsd-arm), const IPV6_RECVPATHMTU ideal-int pkg syscall (freebsd-arm), const IPV6_RECVPKTINFO ideal-int pkg syscall (freebsd-arm), const IPV6_RECVRTHDR ideal-int pkg syscall (freebsd-arm), const IPV6_RECVTCLASS ideal-int pkg syscall (freebsd-arm), const IPV6_RTHDR ideal-int pkg syscall (freebsd-arm), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (freebsd-arm), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (freebsd-arm), const IPV6_RTHDR_STRICT ideal-int pkg syscall (freebsd-arm), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (freebsd-arm), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (freebsd-arm), const IPV6_TCLASS ideal-int pkg syscall (freebsd-arm), const IPV6_USE_MIN_MTU ideal-int pkg syscall (freebsd-arm), const IPV6_VERSION ideal-int pkg syscall (freebsd-arm), const IPV6_VERSION_MASK ideal-int pkg syscall (freebsd-arm), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (freebsd-arm), const IP_BINDANY ideal-int pkg syscall (freebsd-arm), const IP_BLOCK_SOURCE ideal-int pkg syscall (freebsd-arm), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (freebsd-arm), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (freebsd-arm), const IP_DF ideal-int pkg syscall (freebsd-arm), const IP_DONTFRAG ideal-int pkg syscall (freebsd-arm), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (freebsd-arm), const IP_DUMMYNET3 ideal-int pkg syscall (freebsd-arm), const IP_DUMMYNET_CONFIGURE ideal-int pkg syscall (freebsd-arm), const IP_DUMMYNET_DEL ideal-int pkg syscall (freebsd-arm), const IP_DUMMYNET_FLUSH ideal-int pkg syscall (freebsd-arm), const IP_DUMMYNET_GET ideal-int pkg syscall (freebsd-arm), const IP_FAITH ideal-int pkg syscall (freebsd-arm), const IP_FW3 ideal-int pkg syscall (freebsd-arm), const IP_FW_ADD ideal-int pkg syscall (freebsd-arm), const IP_FW_DEL ideal-int pkg syscall (freebsd-arm), const IP_FW_FLUSH ideal-int pkg syscall (freebsd-arm), const IP_FW_GET ideal-int pkg syscall (freebsd-arm), const IP_FW_NAT_CFG ideal-int pkg syscall (freebsd-arm), const IP_FW_NAT_DEL ideal-int pkg syscall (freebsd-arm), const IP_FW_NAT_GET_CONFIG ideal-int pkg syscall (freebsd-arm), const IP_FW_NAT_GET_LOG ideal-int pkg syscall (freebsd-arm), const IP_FW_RESETLOG ideal-int pkg syscall (freebsd-arm), const IP_FW_TABLE_ADD ideal-int pkg syscall (freebsd-arm), const IP_FW_TABLE_DEL ideal-int pkg syscall (freebsd-arm), const IP_FW_TABLE_FLUSH ideal-int pkg syscall (freebsd-arm), const IP_FW_TABLE_GETSIZE ideal-int pkg syscall (freebsd-arm), const IP_FW_TABLE_LIST ideal-int pkg syscall (freebsd-arm), const IP_FW_ZERO ideal-int pkg syscall (freebsd-arm), const IP_HDRINCL ideal-int pkg syscall (freebsd-arm), const IP_IPSEC_POLICY ideal-int pkg syscall (freebsd-arm), const IP_MAXPACKET ideal-int pkg syscall (freebsd-arm), const IP_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (freebsd-arm), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (freebsd-arm), const IP_MAX_SOCK_MUTE_FILTER ideal-int pkg syscall (freebsd-arm), const IP_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (freebsd-arm), const IP_MAX_SOURCE_FILTER ideal-int pkg syscall (freebsd-arm), const IP_MF ideal-int pkg syscall (freebsd-arm), const IP_MINTTL ideal-int pkg syscall (freebsd-arm), const IP_MIN_MEMBERSHIPS ideal-int pkg syscall (freebsd-arm), const IP_MSFILTER ideal-int pkg syscall (freebsd-arm), const IP_MSS ideal-int pkg syscall (freebsd-arm), const IP_MULTICAST_VIF ideal-int pkg syscall (freebsd-arm), const IP_OFFMASK ideal-int pkg syscall (freebsd-arm), const IP_ONESBCAST ideal-int pkg syscall (freebsd-arm), const IP_OPTIONS ideal-int pkg syscall (freebsd-arm), const IP_PORTRANGE ideal-int pkg syscall (freebsd-arm), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (freebsd-arm), const IP_PORTRANGE_HIGH ideal-int pkg syscall (freebsd-arm), const IP_PORTRANGE_LOW ideal-int pkg syscall (freebsd-arm), const IP_RECVDSTADDR ideal-int pkg syscall (freebsd-arm), const IP_RECVIF ideal-int pkg syscall (freebsd-arm), const IP_RECVOPTS ideal-int pkg syscall (freebsd-arm), const IP_RECVRETOPTS ideal-int pkg syscall (freebsd-arm), const IP_RECVTOS ideal-int pkg syscall (freebsd-arm), const IP_RECVTTL ideal-int pkg syscall (freebsd-arm), const IP_RETOPTS ideal-int pkg syscall (freebsd-arm), const IP_RF ideal-int pkg syscall (freebsd-arm), const IP_RSVP_OFF ideal-int pkg syscall (freebsd-arm), const IP_RSVP_ON ideal-int pkg syscall (freebsd-arm), const IP_RSVP_VIF_OFF ideal-int pkg syscall (freebsd-arm), const IP_RSVP_VIF_ON ideal-int pkg syscall (freebsd-arm), const IP_SENDSRCADDR ideal-int pkg syscall (freebsd-arm), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (freebsd-arm), const ISIG ideal-int pkg syscall (freebsd-arm), const ISTRIP ideal-int pkg syscall (freebsd-arm), const IXANY ideal-int pkg syscall (freebsd-arm), const IXOFF ideal-int pkg syscall (freebsd-arm), const IXON ideal-int pkg syscall (freebsd-arm), const LOCK_EX ideal-int pkg syscall (freebsd-arm), const LOCK_NB ideal-int pkg syscall (freebsd-arm), const LOCK_SH ideal-int pkg syscall (freebsd-arm), const LOCK_UN ideal-int pkg syscall (freebsd-arm), const MADV_AUTOSYNC ideal-int pkg syscall (freebsd-arm), const MADV_CORE ideal-int pkg syscall (freebsd-arm), const MADV_DONTNEED ideal-int pkg syscall (freebsd-arm), const MADV_FREE ideal-int pkg syscall (freebsd-arm), const MADV_NOCORE ideal-int pkg syscall (freebsd-arm), const MADV_NORMAL ideal-int pkg syscall (freebsd-arm), const MADV_NOSYNC ideal-int pkg syscall (freebsd-arm), const MADV_PROTECT ideal-int pkg syscall (freebsd-arm), const MADV_RANDOM ideal-int pkg syscall (freebsd-arm), const MADV_SEQUENTIAL ideal-int pkg syscall (freebsd-arm), const MADV_WILLNEED ideal-int pkg syscall (freebsd-arm), const MAP_ANON ideal-int pkg syscall (freebsd-arm), const MAP_ANONYMOUS ideal-int pkg syscall (freebsd-arm), const MAP_COPY ideal-int pkg syscall (freebsd-arm), const MAP_FILE ideal-int pkg syscall (freebsd-arm), const MAP_FIXED ideal-int pkg syscall (freebsd-arm), const MAP_HASSEMAPHORE ideal-int pkg syscall (freebsd-arm), const MAP_NOCORE ideal-int pkg syscall (freebsd-arm), const MAP_NORESERVE ideal-int pkg syscall (freebsd-arm), const MAP_NOSYNC ideal-int pkg syscall (freebsd-arm), const MAP_PREFAULT_READ ideal-int pkg syscall (freebsd-arm), const MAP_PRIVATE ideal-int pkg syscall (freebsd-arm), const MAP_RENAME ideal-int pkg syscall (freebsd-arm), const MAP_RESERVED0080 ideal-int pkg syscall (freebsd-arm), const MAP_RESERVED0100 ideal-int pkg syscall (freebsd-arm), const MAP_SHARED ideal-int pkg syscall (freebsd-arm), const MAP_STACK ideal-int pkg syscall (freebsd-arm), const MCL_CURRENT ideal-int pkg syscall (freebsd-arm), const MCL_FUTURE ideal-int pkg syscall (freebsd-arm), const MSG_COMPAT ideal-int pkg syscall (freebsd-arm), const MSG_CTRUNC ideal-int pkg syscall (freebsd-arm), const MSG_DONTROUTE ideal-int pkg syscall (freebsd-arm), const MSG_DONTWAIT ideal-int pkg syscall (freebsd-arm), const MSG_EOF ideal-int pkg syscall (freebsd-arm), const MSG_EOR ideal-int pkg syscall (freebsd-arm), const MSG_NBIO ideal-int pkg syscall (freebsd-arm), const MSG_NOSIGNAL ideal-int pkg syscall (freebsd-arm), const MSG_NOTIFICATION ideal-int pkg syscall (freebsd-arm), const MSG_OOB ideal-int pkg syscall (freebsd-arm), const MSG_PEEK ideal-int pkg syscall (freebsd-arm), const MSG_TRUNC ideal-int pkg syscall (freebsd-arm), const MSG_WAITALL ideal-int pkg syscall (freebsd-arm), const MS_ASYNC ideal-int pkg syscall (freebsd-arm), const MS_INVALIDATE ideal-int pkg syscall (freebsd-arm), const MS_SYNC ideal-int pkg syscall (freebsd-arm), const NET_RT_DUMP ideal-int pkg syscall (freebsd-arm), const NET_RT_FLAGS ideal-int pkg syscall (freebsd-arm), const NET_RT_IFLIST ideal-int pkg syscall (freebsd-arm), const NET_RT_IFLISTL ideal-int pkg syscall (freebsd-arm), const NET_RT_IFMALIST ideal-int pkg syscall (freebsd-arm), const NET_RT_MAXID ideal-int pkg syscall (freebsd-arm), const NOFLSH ideal-int pkg syscall (freebsd-arm), const NOTE_ATTRIB ideal-int pkg syscall (freebsd-arm), const NOTE_CHILD ideal-int pkg syscall (freebsd-arm), const NOTE_DELETE ideal-int pkg syscall (freebsd-arm), const NOTE_EXEC ideal-int pkg syscall (freebsd-arm), const NOTE_EXIT ideal-int pkg syscall (freebsd-arm), const NOTE_EXTEND ideal-int pkg syscall (freebsd-arm), const NOTE_FFAND ideal-int pkg syscall (freebsd-arm), const NOTE_FFCOPY ideal-int pkg syscall (freebsd-arm), const NOTE_FFCTRLMASK ideal-int pkg syscall (freebsd-arm), const NOTE_FFLAGSMASK ideal-int pkg syscall (freebsd-arm), const NOTE_FFNOP ideal-int pkg syscall (freebsd-arm), const NOTE_FFOR ideal-int pkg syscall (freebsd-arm), const NOTE_FORK ideal-int pkg syscall (freebsd-arm), const NOTE_LINK ideal-int pkg syscall (freebsd-arm), const NOTE_LOWAT ideal-int pkg syscall (freebsd-arm), const NOTE_PCTRLMASK ideal-int pkg syscall (freebsd-arm), const NOTE_PDATAMASK ideal-int pkg syscall (freebsd-arm), const NOTE_RENAME ideal-int pkg syscall (freebsd-arm), const NOTE_REVOKE ideal-int pkg syscall (freebsd-arm), const NOTE_TRACK ideal-int pkg syscall (freebsd-arm), const NOTE_TRACKERR ideal-int pkg syscall (freebsd-arm), const NOTE_TRIGGER ideal-int pkg syscall (freebsd-arm), const NOTE_WRITE ideal-int pkg syscall (freebsd-arm), const OCRNL ideal-int pkg syscall (freebsd-arm), const ONLCR ideal-int pkg syscall (freebsd-arm), const ONLRET ideal-int pkg syscall (freebsd-arm), const ONOCR ideal-int pkg syscall (freebsd-arm), const ONOEOT ideal-int pkg syscall (freebsd-arm), const OPOST ideal-int pkg syscall (freebsd-arm), const O_ACCMODE ideal-int pkg syscall (freebsd-arm), const O_DIRECT ideal-int pkg syscall (freebsd-arm), const O_DIRECTORY ideal-int pkg syscall (freebsd-arm), const O_EXEC ideal-int pkg syscall (freebsd-arm), const O_EXLOCK ideal-int pkg syscall (freebsd-arm), const O_FSYNC ideal-int pkg syscall (freebsd-arm), const O_NDELAY ideal-int pkg syscall (freebsd-arm), const O_NOFOLLOW ideal-int pkg syscall (freebsd-arm), const O_SHLOCK ideal-int pkg syscall (freebsd-arm), const O_TTY_INIT ideal-int pkg syscall (freebsd-arm), const PARENB ideal-int pkg syscall (freebsd-arm), const PARMRK ideal-int pkg syscall (freebsd-arm), const PARODD ideal-int pkg syscall (freebsd-arm), const PENDIN ideal-int pkg syscall (freebsd-arm), const PRIO_PGRP = 1 pkg syscall (freebsd-arm), const PRIO_PGRP ideal-int pkg syscall (freebsd-arm), const PRIO_PROCESS = 0 pkg syscall (freebsd-arm), const PRIO_PROCESS ideal-int pkg syscall (freebsd-arm), const PRIO_USER = 2 pkg syscall (freebsd-arm), const PRIO_USER ideal-int pkg syscall (freebsd-arm), const PROT_EXEC ideal-int pkg syscall (freebsd-arm), const PROT_NONE ideal-int pkg syscall (freebsd-arm), const PROT_READ ideal-int pkg syscall (freebsd-arm), const PROT_WRITE ideal-int pkg syscall (freebsd-arm), const PTRACE_CONT ideal-int pkg syscall (freebsd-arm), const PTRACE_KILL ideal-int pkg syscall (freebsd-arm), const PTRACE_TRACEME ideal-int pkg syscall (freebsd-arm), const RLIMIT_AS ideal-int pkg syscall (freebsd-arm), const RLIMIT_CORE ideal-int pkg syscall (freebsd-arm), const RLIMIT_CPU ideal-int pkg syscall (freebsd-arm), const RLIMIT_DATA ideal-int pkg syscall (freebsd-arm), const RLIMIT_FSIZE ideal-int pkg syscall (freebsd-arm), const RLIMIT_NOFILE ideal-int pkg syscall (freebsd-arm), const RLIMIT_STACK ideal-int pkg syscall (freebsd-arm), const RLIM_INFINITY ideal-int pkg syscall (freebsd-arm), const RTAX_AUTHOR ideal-int pkg syscall (freebsd-arm), const RTAX_BRD ideal-int pkg syscall (freebsd-arm), const RTAX_DST ideal-int pkg syscall (freebsd-arm), const RTAX_GATEWAY ideal-int pkg syscall (freebsd-arm), const RTAX_GENMASK ideal-int pkg syscall (freebsd-arm), const RTAX_IFA ideal-int pkg syscall (freebsd-arm), const RTAX_IFP ideal-int pkg syscall (freebsd-arm), const RTAX_MAX ideal-int pkg syscall (freebsd-arm), const RTAX_NETMASK ideal-int pkg syscall (freebsd-arm), const RTA_AUTHOR ideal-int pkg syscall (freebsd-arm), const RTA_BRD ideal-int pkg syscall (freebsd-arm), const RTA_DST ideal-int pkg syscall (freebsd-arm), const RTA_GATEWAY ideal-int pkg syscall (freebsd-arm), const RTA_GENMASK ideal-int pkg syscall (freebsd-arm), const RTA_IFA ideal-int pkg syscall (freebsd-arm), const RTA_IFP ideal-int pkg syscall (freebsd-arm), const RTA_NETMASK ideal-int pkg syscall (freebsd-arm), const RTF_BLACKHOLE ideal-int pkg syscall (freebsd-arm), const RTF_BROADCAST ideal-int pkg syscall (freebsd-arm), const RTF_DONE ideal-int pkg syscall (freebsd-arm), const RTF_DYNAMIC ideal-int pkg syscall (freebsd-arm), const RTF_FMASK ideal-int pkg syscall (freebsd-arm), const RTF_GATEWAY ideal-int pkg syscall (freebsd-arm), const RTF_HOST ideal-int pkg syscall (freebsd-arm), const RTF_LLDATA ideal-int pkg syscall (freebsd-arm), const RTF_LLINFO ideal-int pkg syscall (freebsd-arm), const RTF_LOCAL ideal-int pkg syscall (freebsd-arm), const RTF_MODIFIED ideal-int pkg syscall (freebsd-arm), const RTF_MULTICAST ideal-int pkg syscall (freebsd-arm), const RTF_PINNED ideal-int pkg syscall (freebsd-arm), const RTF_PRCLONING ideal-int pkg syscall (freebsd-arm), const RTF_PROTO1 ideal-int pkg syscall (freebsd-arm), const RTF_PROTO2 ideal-int pkg syscall (freebsd-arm), const RTF_PROTO3 ideal-int pkg syscall (freebsd-arm), const RTF_REJECT ideal-int pkg syscall (freebsd-arm), const RTF_RNH_LOCKED ideal-int pkg syscall (freebsd-arm), const RTF_STATIC ideal-int pkg syscall (freebsd-arm), const RTF_STICKY ideal-int pkg syscall (freebsd-arm), const RTF_UP ideal-int pkg syscall (freebsd-arm), const RTF_XRESOLVE ideal-int pkg syscall (freebsd-arm), const RTM_ADD ideal-int pkg syscall (freebsd-arm), const RTM_CHANGE ideal-int pkg syscall (freebsd-arm), const RTM_DELADDR ideal-int pkg syscall (freebsd-arm), const RTM_DELETE ideal-int pkg syscall (freebsd-arm), const RTM_DELMADDR ideal-int pkg syscall (freebsd-arm), const RTM_GET ideal-int pkg syscall (freebsd-arm), const RTM_IEEE80211 ideal-int pkg syscall (freebsd-arm), const RTM_IFANNOUNCE ideal-int pkg syscall (freebsd-arm), const RTM_IFINFO ideal-int pkg syscall (freebsd-arm), const RTM_LOCK ideal-int pkg syscall (freebsd-arm), const RTM_LOSING ideal-int pkg syscall (freebsd-arm), const RTM_MISS ideal-int pkg syscall (freebsd-arm), const RTM_NEWADDR ideal-int pkg syscall (freebsd-arm), const RTM_NEWMADDR ideal-int pkg syscall (freebsd-arm), const RTM_OLDADD ideal-int pkg syscall (freebsd-arm), const RTM_OLDDEL ideal-int pkg syscall (freebsd-arm), const RTM_REDIRECT ideal-int pkg syscall (freebsd-arm), const RTM_RESOLVE ideal-int pkg syscall (freebsd-arm), const RTM_RTTUNIT ideal-int pkg syscall (freebsd-arm), const RTM_VERSION ideal-int pkg syscall (freebsd-arm), const RTV_EXPIRE ideal-int pkg syscall (freebsd-arm), const RTV_HOPCOUNT ideal-int pkg syscall (freebsd-arm), const RTV_MTU ideal-int pkg syscall (freebsd-arm), const RTV_RPIPE ideal-int pkg syscall (freebsd-arm), const RTV_RTT ideal-int pkg syscall (freebsd-arm), const RTV_RTTVAR ideal-int pkg syscall (freebsd-arm), const RTV_SPIPE ideal-int pkg syscall (freebsd-arm), const RTV_SSTHRESH ideal-int pkg syscall (freebsd-arm), const RTV_WEIGHT ideal-int pkg syscall (freebsd-arm), const RT_CACHING_CONTEXT ideal-int pkg syscall (freebsd-arm), const RT_DEFAULT_FIB ideal-int pkg syscall (freebsd-arm), const RT_NORTREF ideal-int pkg syscall (freebsd-arm), const RUSAGE_CHILDREN ideal-int pkg syscall (freebsd-arm), const RUSAGE_SELF ideal-int pkg syscall (freebsd-arm), const RUSAGE_THREAD ideal-int pkg syscall (freebsd-arm), const SCM_BINTIME ideal-int pkg syscall (freebsd-arm), const SCM_CREDS ideal-int pkg syscall (freebsd-arm), const SCM_RIGHTS ideal-int pkg syscall (freebsd-arm), const SCM_TIMESTAMP ideal-int pkg syscall (freebsd-arm), const SIGCHLD Signal pkg syscall (freebsd-arm), const SIGCONT Signal pkg syscall (freebsd-arm), const SIGEMT Signal pkg syscall (freebsd-arm), const SIGINFO Signal pkg syscall (freebsd-arm), const SIGIO Signal pkg syscall (freebsd-arm), const SIGIOT Signal pkg syscall (freebsd-arm), const SIGLIBRT Signal pkg syscall (freebsd-arm), const SIGLWP Signal pkg syscall (freebsd-arm), const SIGPROF Signal pkg syscall (freebsd-arm), const SIGSTOP Signal pkg syscall (freebsd-arm), const SIGSYS Signal pkg syscall (freebsd-arm), const SIGTHR Signal pkg syscall (freebsd-arm), const SIGTSTP Signal pkg syscall (freebsd-arm), const SIGTTIN Signal pkg syscall (freebsd-arm), const SIGTTOU Signal pkg syscall (freebsd-arm), const SIGURG Signal pkg syscall (freebsd-arm), const SIGUSR1 Signal pkg syscall (freebsd-arm), const SIGUSR2 Signal pkg syscall (freebsd-arm), const SIGVTALRM Signal pkg syscall (freebsd-arm), const SIGWINCH Signal pkg syscall (freebsd-arm), const SIGXCPU Signal pkg syscall (freebsd-arm), const SIGXFSZ Signal pkg syscall (freebsd-arm), const SIOCADDMULTI ideal-int pkg syscall (freebsd-arm), const SIOCADDRT ideal-int pkg syscall (freebsd-arm), const SIOCAIFADDR ideal-int pkg syscall (freebsd-arm), const SIOCAIFGROUP ideal-int pkg syscall (freebsd-arm), const SIOCALIFADDR ideal-int pkg syscall (freebsd-arm), const SIOCATMARK ideal-int pkg syscall (freebsd-arm), const SIOCDELMULTI ideal-int pkg syscall (freebsd-arm), const SIOCDELRT ideal-int pkg syscall (freebsd-arm), const SIOCDIFADDR ideal-int pkg syscall (freebsd-arm), const SIOCDIFGROUP ideal-int pkg syscall (freebsd-arm), const SIOCDIFPHYADDR ideal-int pkg syscall (freebsd-arm), const SIOCDLIFADDR ideal-int pkg syscall (freebsd-arm), const SIOCGDRVSPEC ideal-int pkg syscall (freebsd-arm), const SIOCGETSGCNT ideal-int pkg syscall (freebsd-arm), const SIOCGETVIFCNT ideal-int pkg syscall (freebsd-arm), const SIOCGHIWAT ideal-int pkg syscall (freebsd-arm), const SIOCGIFADDR ideal-int pkg syscall (freebsd-arm), const SIOCGIFBRDADDR ideal-int pkg syscall (freebsd-arm), const SIOCGIFCAP ideal-int pkg syscall (freebsd-arm), const SIOCGIFCONF ideal-int pkg syscall (freebsd-arm), const SIOCGIFDESCR ideal-int pkg syscall (freebsd-arm), const SIOCGIFDSTADDR ideal-int pkg syscall (freebsd-arm), const SIOCGIFFIB ideal-int pkg syscall (freebsd-arm), const SIOCGIFFLAGS ideal-int pkg syscall (freebsd-arm), const SIOCGIFGENERIC ideal-int pkg syscall (freebsd-arm), const SIOCGIFGMEMB ideal-int pkg syscall (freebsd-arm), const SIOCGIFGROUP ideal-int pkg syscall (freebsd-arm), const SIOCGIFINDEX ideal-int pkg syscall (freebsd-arm), const SIOCGIFMAC ideal-int pkg syscall (freebsd-arm), const SIOCGIFMEDIA ideal-int pkg syscall (freebsd-arm), const SIOCGIFMETRIC ideal-int pkg syscall (freebsd-arm), const SIOCGIFMTU ideal-int pkg syscall (freebsd-arm), const SIOCGIFNETMASK ideal-int pkg syscall (freebsd-arm), const SIOCGIFPDSTADDR ideal-int pkg syscall (freebsd-arm), const SIOCGIFPHYS ideal-int pkg syscall (freebsd-arm), const SIOCGIFPSRCADDR ideal-int pkg syscall (freebsd-arm), const SIOCGIFSTATUS ideal-int pkg syscall (freebsd-arm), const SIOCGLIFADDR ideal-int pkg syscall (freebsd-arm), const SIOCGLIFPHYADDR ideal-int pkg syscall (freebsd-arm), const SIOCGLOWAT ideal-int pkg syscall (freebsd-arm), const SIOCGPGRP ideal-int pkg syscall (freebsd-arm), const SIOCGPRIVATE_0 ideal-int pkg syscall (freebsd-arm), const SIOCGPRIVATE_1 ideal-int pkg syscall (freebsd-arm), const SIOCIFCREATE ideal-int pkg syscall (freebsd-arm), const SIOCIFCREATE2 ideal-int pkg syscall (freebsd-arm), const SIOCIFDESTROY ideal-int pkg syscall (freebsd-arm), const SIOCIFGCLONERS ideal-int pkg syscall (freebsd-arm), const SIOCSDRVSPEC ideal-int pkg syscall (freebsd-arm), const SIOCSHIWAT ideal-int pkg syscall (freebsd-arm), const SIOCSIFADDR ideal-int pkg syscall (freebsd-arm), const SIOCSIFBRDADDR ideal-int pkg syscall (freebsd-arm), const SIOCSIFCAP ideal-int pkg syscall (freebsd-arm), const SIOCSIFDESCR ideal-int pkg syscall (freebsd-arm), const SIOCSIFDSTADDR ideal-int pkg syscall (freebsd-arm), const SIOCSIFFIB ideal-int pkg syscall (freebsd-arm), const SIOCSIFFLAGS ideal-int pkg syscall (freebsd-arm), const SIOCSIFGENERIC ideal-int pkg syscall (freebsd-arm), const SIOCSIFLLADDR ideal-int pkg syscall (freebsd-arm), const SIOCSIFMAC ideal-int pkg syscall (freebsd-arm), const SIOCSIFMEDIA ideal-int pkg syscall (freebsd-arm), const SIOCSIFMETRIC ideal-int pkg syscall (freebsd-arm), const SIOCSIFMTU ideal-int pkg syscall (freebsd-arm), const SIOCSIFNAME ideal-int pkg syscall (freebsd-arm), const SIOCSIFNETMASK ideal-int pkg syscall (freebsd-arm), const SIOCSIFPHYADDR ideal-int pkg syscall (freebsd-arm), const SIOCSIFPHYS ideal-int pkg syscall (freebsd-arm), const SIOCSIFRVNET ideal-int pkg syscall (freebsd-arm), const SIOCSIFVNET ideal-int pkg syscall (freebsd-arm), const SIOCSLIFPHYADDR ideal-int pkg syscall (freebsd-arm), const SIOCSLOWAT ideal-int pkg syscall (freebsd-arm), const SIOCSPGRP ideal-int pkg syscall (freebsd-arm), const SOCK_MAXADDRLEN ideal-int pkg syscall (freebsd-arm), const SOCK_RDM ideal-int pkg syscall (freebsd-arm), const SO_ACCEPTCONN ideal-int pkg syscall (freebsd-arm), const SO_ACCEPTFILTER ideal-int pkg syscall (freebsd-arm), const SO_BINTIME ideal-int pkg syscall (freebsd-arm), const SO_DEBUG ideal-int pkg syscall (freebsd-arm), const SO_ERROR ideal-int pkg syscall (freebsd-arm), const SO_LABEL ideal-int pkg syscall (freebsd-arm), const SO_LISTENINCQLEN ideal-int pkg syscall (freebsd-arm), const SO_LISTENQLEN ideal-int pkg syscall (freebsd-arm), const SO_LISTENQLIMIT ideal-int pkg syscall (freebsd-arm), const SO_NOSIGPIPE ideal-int pkg syscall (freebsd-arm), const SO_NO_DDP ideal-int pkg syscall (freebsd-arm), const SO_NO_OFFLOAD ideal-int pkg syscall (freebsd-arm), const SO_OOBINLINE ideal-int pkg syscall (freebsd-arm), const SO_PEERLABEL ideal-int pkg syscall (freebsd-arm), const SO_PROTOCOL ideal-int pkg syscall (freebsd-arm), const SO_PROTOTYPE ideal-int pkg syscall (freebsd-arm), const SO_RCVLOWAT ideal-int pkg syscall (freebsd-arm), const SO_RCVTIMEO ideal-int pkg syscall (freebsd-arm), const SO_REUSEPORT ideal-int pkg syscall (freebsd-arm), const SO_SETFIB ideal-int pkg syscall (freebsd-arm), const SO_SNDLOWAT ideal-int pkg syscall (freebsd-arm), const SO_SNDTIMEO ideal-int pkg syscall (freebsd-arm), const SO_TIMESTAMP ideal-int pkg syscall (freebsd-arm), const SO_TYPE ideal-int pkg syscall (freebsd-arm), const SO_USELOOPBACK ideal-int pkg syscall (freebsd-arm), const SO_USER_COOKIE ideal-int pkg syscall (freebsd-arm), const SYS_ABORT2 ideal-int pkg syscall (freebsd-arm), const SYS_ACCEPT ideal-int pkg syscall (freebsd-arm), const SYS_ACCESS ideal-int pkg syscall (freebsd-arm), const SYS_ACCT ideal-int pkg syscall (freebsd-arm), const SYS_ADJTIME ideal-int pkg syscall (freebsd-arm), const SYS_AUDIT ideal-int pkg syscall (freebsd-arm), const SYS_AUDITCTL ideal-int pkg syscall (freebsd-arm), const SYS_AUDITON ideal-int pkg syscall (freebsd-arm), const SYS_BIND ideal-int pkg syscall (freebsd-arm), const SYS_CAP_ENTER ideal-int pkg syscall (freebsd-arm), const SYS_CAP_FCNTLS_GET ideal-int pkg syscall (freebsd-arm), const SYS_CAP_FCNTLS_LIMIT ideal-int pkg syscall (freebsd-arm), const SYS_CAP_GETMODE ideal-int pkg syscall (freebsd-arm), const SYS_CAP_IOCTLS_GET ideal-int pkg syscall (freebsd-arm), const SYS_CAP_IOCTLS_LIMIT ideal-int pkg syscall (freebsd-arm), const SYS_CAP_NEW ideal-int pkg syscall (freebsd-arm), const SYS_CAP_RIGHTS_GET ideal-int pkg syscall (freebsd-arm), const SYS_CAP_RIGHTS_LIMIT ideal-int pkg syscall (freebsd-arm), const SYS_CHDIR ideal-int pkg syscall (freebsd-arm), const SYS_CHFLAGS ideal-int pkg syscall (freebsd-arm), const SYS_CHMOD ideal-int pkg syscall (freebsd-arm), const SYS_CHOWN ideal-int pkg syscall (freebsd-arm), const SYS_CHROOT ideal-int pkg syscall (freebsd-arm), const SYS_CLOCK_GETCPUCLOCKID2 ideal-int pkg syscall (freebsd-arm), const SYS_CLOCK_GETRES ideal-int pkg syscall (freebsd-arm), const SYS_CLOCK_GETTIME ideal-int pkg syscall (freebsd-arm), const SYS_CLOCK_SETTIME ideal-int pkg syscall (freebsd-arm), const SYS_CLOSE ideal-int pkg syscall (freebsd-arm), const SYS_CLOSEFROM ideal-int pkg syscall (freebsd-arm), const SYS_CONNECT ideal-int pkg syscall (freebsd-arm), const SYS_CPUSET ideal-int pkg syscall (freebsd-arm), const SYS_CPUSET_GETAFFINITY ideal-int pkg syscall (freebsd-arm), const SYS_CPUSET_GETID ideal-int pkg syscall (freebsd-arm), const SYS_CPUSET_SETAFFINITY ideal-int pkg syscall (freebsd-arm), const SYS_CPUSET_SETID ideal-int pkg syscall (freebsd-arm), const SYS_DUP ideal-int pkg syscall (freebsd-arm), const SYS_DUP2 ideal-int pkg syscall (freebsd-arm), const SYS_EACCESS ideal-int pkg syscall (freebsd-arm), const SYS_EXECVE ideal-int pkg syscall (freebsd-arm), const SYS_EXIT ideal-int pkg syscall (freebsd-arm), const SYS_EXTATTRCTL ideal-int pkg syscall (freebsd-arm), const SYS_EXTATTR_DELETE_FD ideal-int pkg syscall (freebsd-arm), const SYS_EXTATTR_DELETE_FILE ideal-int pkg syscall (freebsd-arm), const SYS_EXTATTR_DELETE_LINK ideal-int pkg syscall (freebsd-arm), const SYS_EXTATTR_GET_FD ideal-int pkg syscall (freebsd-arm), const SYS_EXTATTR_GET_FILE ideal-int pkg syscall (freebsd-arm), const SYS_EXTATTR_GET_LINK ideal-int pkg syscall (freebsd-arm), const SYS_EXTATTR_LIST_FD ideal-int pkg syscall (freebsd-arm), const SYS_EXTATTR_LIST_FILE ideal-int pkg syscall (freebsd-arm), const SYS_EXTATTR_LIST_LINK ideal-int pkg syscall (freebsd-arm), const SYS_EXTATTR_SET_FD ideal-int pkg syscall (freebsd-arm), const SYS_EXTATTR_SET_FILE ideal-int pkg syscall (freebsd-arm), const SYS_EXTATTR_SET_LINK ideal-int pkg syscall (freebsd-arm), const SYS_FACCESSAT ideal-int pkg syscall (freebsd-arm), const SYS_FCHDIR ideal-int pkg syscall (freebsd-arm), const SYS_FCHFLAGS ideal-int pkg syscall (freebsd-arm), const SYS_FCHMOD ideal-int pkg syscall (freebsd-arm), const SYS_FCHMODAT ideal-int pkg syscall (freebsd-arm), const SYS_FCHOWN ideal-int pkg syscall (freebsd-arm), const SYS_FCHOWNAT ideal-int pkg syscall (freebsd-arm), const SYS_FCNTL ideal-int pkg syscall (freebsd-arm), const SYS_FEXECVE ideal-int pkg syscall (freebsd-arm), const SYS_FFCLOCK_GETCOUNTER ideal-int pkg syscall (freebsd-arm), const SYS_FFCLOCK_GETESTIMATE ideal-int pkg syscall (freebsd-arm), const SYS_FFCLOCK_SETESTIMATE ideal-int pkg syscall (freebsd-arm), const SYS_FHOPEN ideal-int pkg syscall (freebsd-arm), const SYS_FHSTAT ideal-int pkg syscall (freebsd-arm), const SYS_FHSTATFS ideal-int pkg syscall (freebsd-arm), const SYS_FLOCK ideal-int pkg syscall (freebsd-arm), const SYS_FORK ideal-int pkg syscall (freebsd-arm), const SYS_FPATHCONF ideal-int pkg syscall (freebsd-arm), const SYS_FREEBSD6_FTRUNCATE ideal-int pkg syscall (freebsd-arm), const SYS_FREEBSD6_LSEEK ideal-int pkg syscall (freebsd-arm), const SYS_FREEBSD6_MMAP ideal-int pkg syscall (freebsd-arm), const SYS_FREEBSD6_PREAD ideal-int pkg syscall (freebsd-arm), const SYS_FREEBSD6_PWRITE ideal-int pkg syscall (freebsd-arm), const SYS_FREEBSD6_TRUNCATE ideal-int pkg syscall (freebsd-arm), const SYS_FSTAT ideal-int pkg syscall (freebsd-arm), const SYS_FSTATAT ideal-int pkg syscall (freebsd-arm), const SYS_FSTATFS ideal-int pkg syscall (freebsd-arm), const SYS_FSYNC ideal-int pkg syscall (freebsd-arm), const SYS_FTRUNCATE ideal-int pkg syscall (freebsd-arm), const SYS_FUTIMES ideal-int pkg syscall (freebsd-arm), const SYS_FUTIMESAT ideal-int pkg syscall (freebsd-arm), const SYS_GETAUDIT ideal-int pkg syscall (freebsd-arm), const SYS_GETAUDIT_ADDR ideal-int pkg syscall (freebsd-arm), const SYS_GETAUID ideal-int pkg syscall (freebsd-arm), const SYS_GETCONTEXT ideal-int pkg syscall (freebsd-arm), const SYS_GETDENTS ideal-int pkg syscall (freebsd-arm), const SYS_GETDIRENTRIES ideal-int pkg syscall (freebsd-arm), const SYS_GETDTABLESIZE ideal-int pkg syscall (freebsd-arm), const SYS_GETEGID ideal-int pkg syscall (freebsd-arm), const SYS_GETEUID ideal-int pkg syscall (freebsd-arm), const SYS_GETFH ideal-int pkg syscall (freebsd-arm), const SYS_GETFSSTAT ideal-int pkg syscall (freebsd-arm), const SYS_GETGID ideal-int pkg syscall (freebsd-arm), const SYS_GETGROUPS ideal-int pkg syscall (freebsd-arm), const SYS_GETITIMER ideal-int pkg syscall (freebsd-arm), const SYS_GETLOGIN ideal-int pkg syscall (freebsd-arm), const SYS_GETLOGINCLASS ideal-int pkg syscall (freebsd-arm), const SYS_GETPEERNAME ideal-int pkg syscall (freebsd-arm), const SYS_GETPGID ideal-int pkg syscall (freebsd-arm), const SYS_GETPGRP ideal-int pkg syscall (freebsd-arm), const SYS_GETPID ideal-int pkg syscall (freebsd-arm), const SYS_GETPPID ideal-int pkg syscall (freebsd-arm), const SYS_GETPRIORITY ideal-int pkg syscall (freebsd-arm), const SYS_GETRESGID ideal-int pkg syscall (freebsd-arm), const SYS_GETRESUID ideal-int pkg syscall (freebsd-arm), const SYS_GETRLIMIT ideal-int pkg syscall (freebsd-arm), const SYS_GETRUSAGE ideal-int pkg syscall (freebsd-arm), const SYS_GETSID ideal-int pkg syscall (freebsd-arm), const SYS_GETSOCKNAME ideal-int pkg syscall (freebsd-arm), const SYS_GETSOCKOPT ideal-int pkg syscall (freebsd-arm), const SYS_GETTIMEOFDAY ideal-int pkg syscall (freebsd-arm), const SYS_GETUID ideal-int pkg syscall (freebsd-arm), const SYS_IOCTL ideal-int pkg syscall (freebsd-arm), const SYS_ISSETUGID ideal-int pkg syscall (freebsd-arm), const SYS_JAIL ideal-int pkg syscall (freebsd-arm), const SYS_JAIL_ATTACH ideal-int pkg syscall (freebsd-arm), const SYS_JAIL_GET ideal-int pkg syscall (freebsd-arm), const SYS_JAIL_REMOVE ideal-int pkg syscall (freebsd-arm), const SYS_JAIL_SET ideal-int pkg syscall (freebsd-arm), const SYS_KENV ideal-int pkg syscall (freebsd-arm), const SYS_KEVENT ideal-int pkg syscall (freebsd-arm), const SYS_KILL ideal-int pkg syscall (freebsd-arm), const SYS_KLDFIND ideal-int pkg syscall (freebsd-arm), const SYS_KLDFIRSTMOD ideal-int pkg syscall (freebsd-arm), const SYS_KLDLOAD ideal-int pkg syscall (freebsd-arm), const SYS_KLDNEXT ideal-int pkg syscall (freebsd-arm), const SYS_KLDSTAT ideal-int pkg syscall (freebsd-arm), const SYS_KLDSYM ideal-int pkg syscall (freebsd-arm), const SYS_KLDUNLOAD ideal-int pkg syscall (freebsd-arm), const SYS_KLDUNLOADF ideal-int pkg syscall (freebsd-arm), const SYS_KQUEUE ideal-int pkg syscall (freebsd-arm), const SYS_KTIMER_CREATE ideal-int pkg syscall (freebsd-arm), const SYS_KTIMER_DELETE ideal-int pkg syscall (freebsd-arm), const SYS_KTIMER_GETOVERRUN ideal-int pkg syscall (freebsd-arm), const SYS_KTIMER_GETTIME ideal-int pkg syscall (freebsd-arm), const SYS_KTIMER_SETTIME ideal-int pkg syscall (freebsd-arm), const SYS_KTRACE ideal-int pkg syscall (freebsd-arm), const SYS_LCHFLAGS ideal-int pkg syscall (freebsd-arm), const SYS_LCHMOD ideal-int pkg syscall (freebsd-arm), const SYS_LCHOWN ideal-int pkg syscall (freebsd-arm), const SYS_LGETFH ideal-int pkg syscall (freebsd-arm), const SYS_LINK ideal-int pkg syscall (freebsd-arm), const SYS_LINKAT ideal-int pkg syscall (freebsd-arm), const SYS_LISTEN ideal-int pkg syscall (freebsd-arm), const SYS_LPATHCONF ideal-int pkg syscall (freebsd-arm), const SYS_LSEEK ideal-int pkg syscall (freebsd-arm), const SYS_LSTAT ideal-int pkg syscall (freebsd-arm), const SYS_LUTIMES ideal-int pkg syscall (freebsd-arm), const SYS_MAC_SYSCALL ideal-int pkg syscall (freebsd-arm), const SYS_MADVISE ideal-int pkg syscall (freebsd-arm), const SYS_MINCORE ideal-int pkg syscall (freebsd-arm), const SYS_MINHERIT ideal-int pkg syscall (freebsd-arm), const SYS_MKDIR ideal-int pkg syscall (freebsd-arm), const SYS_MKDIRAT ideal-int pkg syscall (freebsd-arm), const SYS_MKFIFO ideal-int pkg syscall (freebsd-arm), const SYS_MKFIFOAT ideal-int pkg syscall (freebsd-arm), const SYS_MKNOD ideal-int pkg syscall (freebsd-arm), const SYS_MKNODAT ideal-int pkg syscall (freebsd-arm), const SYS_MLOCK ideal-int pkg syscall (freebsd-arm), const SYS_MLOCKALL ideal-int pkg syscall (freebsd-arm), const SYS_MMAP ideal-int pkg syscall (freebsd-arm), const SYS_MODFIND ideal-int pkg syscall (freebsd-arm), const SYS_MODFNEXT ideal-int pkg syscall (freebsd-arm), const SYS_MODNEXT ideal-int pkg syscall (freebsd-arm), const SYS_MODSTAT ideal-int pkg syscall (freebsd-arm), const SYS_MOUNT ideal-int pkg syscall (freebsd-arm), const SYS_MPROTECT ideal-int pkg syscall (freebsd-arm), const SYS_MSYNC ideal-int pkg syscall (freebsd-arm), const SYS_MUNLOCK ideal-int pkg syscall (freebsd-arm), const SYS_MUNLOCKALL ideal-int pkg syscall (freebsd-arm), const SYS_MUNMAP ideal-int pkg syscall (freebsd-arm), const SYS_NANOSLEEP ideal-int pkg syscall (freebsd-arm), const SYS_NFSTAT ideal-int pkg syscall (freebsd-arm), const SYS_NLSTAT ideal-int pkg syscall (freebsd-arm), const SYS_NMOUNT ideal-int pkg syscall (freebsd-arm), const SYS_NSTAT ideal-int pkg syscall (freebsd-arm), const SYS_NTP_ADJTIME ideal-int pkg syscall (freebsd-arm), const SYS_NTP_GETTIME ideal-int pkg syscall (freebsd-arm), const SYS_OBREAK ideal-int pkg syscall (freebsd-arm), const SYS_OPEN ideal-int pkg syscall (freebsd-arm), const SYS_OPENAT ideal-int pkg syscall (freebsd-arm), const SYS_OPENBSD_POLL ideal-int pkg syscall (freebsd-arm), const SYS_OVADVISE ideal-int pkg syscall (freebsd-arm), const SYS_PATHCONF ideal-int pkg syscall (freebsd-arm), const SYS_PDFORK ideal-int pkg syscall (freebsd-arm), const SYS_PDGETPID ideal-int pkg syscall (freebsd-arm), const SYS_PDKILL ideal-int pkg syscall (freebsd-arm), const SYS_PIPE ideal-int pkg syscall (freebsd-arm), const SYS_POLL ideal-int pkg syscall (freebsd-arm), const SYS_POSIX_FADVISE ideal-int pkg syscall (freebsd-arm), const SYS_POSIX_FALLOCATE ideal-int pkg syscall (freebsd-arm), const SYS_POSIX_OPENPT ideal-int pkg syscall (freebsd-arm), const SYS_PREAD ideal-int pkg syscall (freebsd-arm), const SYS_PREADV ideal-int pkg syscall (freebsd-arm), const SYS_PROFIL ideal-int pkg syscall (freebsd-arm), const SYS_PSELECT ideal-int pkg syscall (freebsd-arm), const SYS_PTRACE ideal-int pkg syscall (freebsd-arm), const SYS_PWRITE ideal-int pkg syscall (freebsd-arm), const SYS_PWRITEV ideal-int pkg syscall (freebsd-arm), const SYS_QUOTACTL ideal-int pkg syscall (freebsd-arm), const SYS_RCTL_ADD_RULE ideal-int pkg syscall (freebsd-arm), const SYS_RCTL_GET_LIMITS ideal-int pkg syscall (freebsd-arm), const SYS_RCTL_GET_RACCT ideal-int pkg syscall (freebsd-arm), const SYS_RCTL_GET_RULES ideal-int pkg syscall (freebsd-arm), const SYS_RCTL_REMOVE_RULE ideal-int pkg syscall (freebsd-arm), const SYS_READ ideal-int pkg syscall (freebsd-arm), const SYS_READLINK ideal-int pkg syscall (freebsd-arm), const SYS_READLINKAT ideal-int pkg syscall (freebsd-arm), const SYS_READV ideal-int pkg syscall (freebsd-arm), const SYS_REBOOT ideal-int pkg syscall (freebsd-arm), const SYS_RECVFROM ideal-int pkg syscall (freebsd-arm), const SYS_RECVMSG ideal-int pkg syscall (freebsd-arm), const SYS_RENAME ideal-int pkg syscall (freebsd-arm), const SYS_RENAMEAT ideal-int pkg syscall (freebsd-arm), const SYS_REVOKE ideal-int pkg syscall (freebsd-arm), const SYS_RFORK ideal-int pkg syscall (freebsd-arm), const SYS_RMDIR ideal-int pkg syscall (freebsd-arm), const SYS_RTPRIO ideal-int pkg syscall (freebsd-arm), const SYS_RTPRIO_THREAD ideal-int pkg syscall (freebsd-arm), const SYS_SBRK ideal-int pkg syscall (freebsd-arm), const SYS_SCHED_GETPARAM ideal-int pkg syscall (freebsd-arm), const SYS_SCHED_GETSCHEDULER ideal-int pkg syscall (freebsd-arm), const SYS_SCHED_GET_PRIORITY_MAX ideal-int pkg syscall (freebsd-arm), const SYS_SCHED_GET_PRIORITY_MIN ideal-int pkg syscall (freebsd-arm), const SYS_SCHED_RR_GET_INTERVAL ideal-int pkg syscall (freebsd-arm), const SYS_SCHED_SETPARAM ideal-int pkg syscall (freebsd-arm), const SYS_SCHED_SETSCHEDULER ideal-int pkg syscall (freebsd-arm), const SYS_SCHED_YIELD ideal-int pkg syscall (freebsd-arm), const SYS_SCTP_GENERIC_RECVMSG ideal-int pkg syscall (freebsd-arm), const SYS_SCTP_GENERIC_SENDMSG ideal-int pkg syscall (freebsd-arm), const SYS_SCTP_GENERIC_SENDMSG_IOV ideal-int pkg syscall (freebsd-arm), const SYS_SCTP_PEELOFF ideal-int pkg syscall (freebsd-arm), const SYS_SELECT ideal-int pkg syscall (freebsd-arm), const SYS_SENDFILE ideal-int pkg syscall (freebsd-arm), const SYS_SENDMSG ideal-int pkg syscall (freebsd-arm), const SYS_SENDTO ideal-int pkg syscall (freebsd-arm), const SYS_SETAUDIT ideal-int pkg syscall (freebsd-arm), const SYS_SETAUDIT_ADDR ideal-int pkg syscall (freebsd-arm), const SYS_SETAUID ideal-int pkg syscall (freebsd-arm), const SYS_SETCONTEXT ideal-int pkg syscall (freebsd-arm), const SYS_SETEGID ideal-int pkg syscall (freebsd-arm), const SYS_SETEUID ideal-int pkg syscall (freebsd-arm), const SYS_SETFIB ideal-int pkg syscall (freebsd-arm), const SYS_SETGID ideal-int pkg syscall (freebsd-arm), const SYS_SETGROUPS ideal-int pkg syscall (freebsd-arm), const SYS_SETITIMER ideal-int pkg syscall (freebsd-arm), const SYS_SETLOGIN ideal-int pkg syscall (freebsd-arm), const SYS_SETLOGINCLASS ideal-int pkg syscall (freebsd-arm), const SYS_SETPGID ideal-int pkg syscall (freebsd-arm), const SYS_SETPRIORITY ideal-int pkg syscall (freebsd-arm), const SYS_SETREGID ideal-int pkg syscall (freebsd-arm), const SYS_SETRESGID ideal-int pkg syscall (freebsd-arm), const SYS_SETRESUID ideal-int pkg syscall (freebsd-arm), const SYS_SETREUID ideal-int pkg syscall (freebsd-arm), const SYS_SETRLIMIT ideal-int pkg syscall (freebsd-arm), const SYS_SETSID ideal-int pkg syscall (freebsd-arm), const SYS_SETSOCKOPT ideal-int pkg syscall (freebsd-arm), const SYS_SETTIMEOFDAY ideal-int pkg syscall (freebsd-arm), const SYS_SETUID ideal-int pkg syscall (freebsd-arm), const SYS_SHM_OPEN ideal-int pkg syscall (freebsd-arm), const SYS_SHM_UNLINK ideal-int pkg syscall (freebsd-arm), const SYS_SHUTDOWN ideal-int pkg syscall (freebsd-arm), const SYS_SIGACTION ideal-int pkg syscall (freebsd-arm), const SYS_SIGALTSTACK ideal-int pkg syscall (freebsd-arm), const SYS_SIGPENDING ideal-int pkg syscall (freebsd-arm), const SYS_SIGPROCMASK ideal-int pkg syscall (freebsd-arm), const SYS_SIGQUEUE ideal-int pkg syscall (freebsd-arm), const SYS_SIGRETURN ideal-int pkg syscall (freebsd-arm), const SYS_SIGSUSPEND ideal-int pkg syscall (freebsd-arm), const SYS_SIGTIMEDWAIT ideal-int pkg syscall (freebsd-arm), const SYS_SIGWAIT ideal-int pkg syscall (freebsd-arm), const SYS_SIGWAITINFO ideal-int pkg syscall (freebsd-arm), const SYS_SOCKET ideal-int pkg syscall (freebsd-arm), const SYS_SOCKETPAIR ideal-int pkg syscall (freebsd-arm), const SYS_SSTK ideal-int pkg syscall (freebsd-arm), const SYS_STAT ideal-int pkg syscall (freebsd-arm), const SYS_STATFS ideal-int pkg syscall (freebsd-arm), const SYS_SWAPCONTEXT ideal-int pkg syscall (freebsd-arm), const SYS_SWAPOFF ideal-int pkg syscall (freebsd-arm), const SYS_SWAPON ideal-int pkg syscall (freebsd-arm), const SYS_SYMLINK ideal-int pkg syscall (freebsd-arm), const SYS_SYMLINKAT ideal-int pkg syscall (freebsd-arm), const SYS_SYNC ideal-int pkg syscall (freebsd-arm), const SYS_SYSARCH ideal-int pkg syscall (freebsd-arm), const SYS_THR_CREATE ideal-int pkg syscall (freebsd-arm), const SYS_THR_EXIT ideal-int pkg syscall (freebsd-arm), const SYS_THR_KILL ideal-int pkg syscall (freebsd-arm), const SYS_THR_KILL2 ideal-int pkg syscall (freebsd-arm), const SYS_THR_NEW ideal-int pkg syscall (freebsd-arm), const SYS_THR_SELF ideal-int pkg syscall (freebsd-arm), const SYS_THR_SET_NAME ideal-int pkg syscall (freebsd-arm), const SYS_THR_SUSPEND ideal-int pkg syscall (freebsd-arm), const SYS_THR_WAKE ideal-int pkg syscall (freebsd-arm), const SYS_TRUNCATE ideal-int pkg syscall (freebsd-arm), const SYS_UMASK ideal-int pkg syscall (freebsd-arm), const SYS_UNDELETE ideal-int pkg syscall (freebsd-arm), const SYS_UNLINK ideal-int pkg syscall (freebsd-arm), const SYS_UNLINKAT ideal-int pkg syscall (freebsd-arm), const SYS_UNMOUNT ideal-int pkg syscall (freebsd-arm), const SYS_UTIMES ideal-int pkg syscall (freebsd-arm), const SYS_UTRACE ideal-int pkg syscall (freebsd-arm), const SYS_UUIDGEN ideal-int pkg syscall (freebsd-arm), const SYS_VFORK ideal-int pkg syscall (freebsd-arm), const SYS_WAIT4 ideal-int pkg syscall (freebsd-arm), const SYS_WAIT6 ideal-int pkg syscall (freebsd-arm), const SYS_WRITE ideal-int pkg syscall (freebsd-arm), const SYS_WRITEV ideal-int pkg syscall (freebsd-arm), const SYS_YIELD ideal-int pkg syscall (freebsd-arm), const SYS__UMTX_LOCK ideal-int pkg syscall (freebsd-arm), const SYS__UMTX_OP ideal-int pkg syscall (freebsd-arm), const SYS__UMTX_UNLOCK ideal-int pkg syscall (freebsd-arm), const SYS___ACL_ACLCHECK_FD ideal-int pkg syscall (freebsd-arm), const SYS___ACL_ACLCHECK_FILE ideal-int pkg syscall (freebsd-arm), const SYS___ACL_ACLCHECK_LINK ideal-int pkg syscall (freebsd-arm), const SYS___ACL_DELETE_FD ideal-int pkg syscall (freebsd-arm), const SYS___ACL_DELETE_FILE ideal-int pkg syscall (freebsd-arm), const SYS___ACL_DELETE_LINK ideal-int pkg syscall (freebsd-arm), const SYS___ACL_GET_FD ideal-int pkg syscall (freebsd-arm), const SYS___ACL_GET_FILE ideal-int pkg syscall (freebsd-arm), const SYS___ACL_GET_LINK ideal-int pkg syscall (freebsd-arm), const SYS___ACL_SET_FD ideal-int pkg syscall (freebsd-arm), const SYS___ACL_SET_FILE ideal-int pkg syscall (freebsd-arm), const SYS___ACL_SET_LINK ideal-int pkg syscall (freebsd-arm), const SYS___GETCWD ideal-int pkg syscall (freebsd-arm), const SYS___MAC_EXECVE ideal-int pkg syscall (freebsd-arm), const SYS___MAC_GET_FD ideal-int pkg syscall (freebsd-arm), const SYS___MAC_GET_FILE ideal-int pkg syscall (freebsd-arm), const SYS___MAC_GET_LINK ideal-int pkg syscall (freebsd-arm), const SYS___MAC_GET_PID ideal-int pkg syscall (freebsd-arm), const SYS___MAC_GET_PROC ideal-int pkg syscall (freebsd-arm), const SYS___MAC_SET_FD ideal-int pkg syscall (freebsd-arm), const SYS___MAC_SET_FILE ideal-int pkg syscall (freebsd-arm), const SYS___MAC_SET_LINK ideal-int pkg syscall (freebsd-arm), const SYS___MAC_SET_PROC ideal-int pkg syscall (freebsd-arm), const SYS___SETUGID ideal-int pkg syscall (freebsd-arm), const SYS___SYSCTL ideal-int pkg syscall (freebsd-arm), const SizeofBpfHdr ideal-int pkg syscall (freebsd-arm), const SizeofBpfInsn ideal-int pkg syscall (freebsd-arm), const SizeofBpfProgram ideal-int pkg syscall (freebsd-arm), const SizeofBpfStat ideal-int pkg syscall (freebsd-arm), const SizeofBpfVersion ideal-int pkg syscall (freebsd-arm), const SizeofBpfZbuf ideal-int pkg syscall (freebsd-arm), const SizeofBpfZbufHeader ideal-int pkg syscall (freebsd-arm), const SizeofCmsghdr ideal-int pkg syscall (freebsd-arm), const SizeofICMPv6Filter = 32 pkg syscall (freebsd-arm), const SizeofICMPv6Filter ideal-int pkg syscall (freebsd-arm), const SizeofIPMreq ideal-int pkg syscall (freebsd-arm), const SizeofIPMreqn ideal-int pkg syscall (freebsd-arm), const SizeofIPv6MTUInfo = 32 pkg syscall (freebsd-arm), const SizeofIPv6MTUInfo ideal-int pkg syscall (freebsd-arm), const SizeofIPv6Mreq ideal-int pkg syscall (freebsd-arm), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (freebsd-arm), const SizeofIfData ideal-int pkg syscall (freebsd-arm), const SizeofIfMsghdr ideal-int pkg syscall (freebsd-arm), const SizeofIfaMsghdr ideal-int pkg syscall (freebsd-arm), const SizeofIfmaMsghdr ideal-int pkg syscall (freebsd-arm), const SizeofInet6Pktinfo ideal-int pkg syscall (freebsd-arm), const SizeofLinger ideal-int pkg syscall (freebsd-arm), const SizeofMsghdr ideal-int pkg syscall (freebsd-arm), const SizeofRtMetrics ideal-int pkg syscall (freebsd-arm), const SizeofRtMsghdr ideal-int pkg syscall (freebsd-arm), const SizeofSockaddrAny ideal-int pkg syscall (freebsd-arm), const SizeofSockaddrDatalink ideal-int pkg syscall (freebsd-arm), const SizeofSockaddrInet4 ideal-int pkg syscall (freebsd-arm), const SizeofSockaddrInet6 ideal-int pkg syscall (freebsd-arm), const SizeofSockaddrUnix ideal-int pkg syscall (freebsd-arm), const TCIFLUSH ideal-int pkg syscall (freebsd-arm), const TCIOFLUSH ideal-int pkg syscall (freebsd-arm), const TCOFLUSH ideal-int pkg syscall (freebsd-arm), const TCP_CA_NAME_MAX ideal-int pkg syscall (freebsd-arm), const TCP_CONGESTION ideal-int pkg syscall (freebsd-arm), const TCP_INFO ideal-int pkg syscall (freebsd-arm), const TCP_KEEPCNT ideal-int pkg syscall (freebsd-arm), const TCP_KEEPIDLE ideal-int pkg syscall (freebsd-arm), const TCP_KEEPINIT ideal-int pkg syscall (freebsd-arm), const TCP_KEEPINTVL ideal-int pkg syscall (freebsd-arm), const TCP_MAXBURST ideal-int pkg syscall (freebsd-arm), const TCP_MAXHLEN ideal-int pkg syscall (freebsd-arm), const TCP_MAXOLEN ideal-int pkg syscall (freebsd-arm), const TCP_MAXSEG ideal-int pkg syscall (freebsd-arm), const TCP_MAXWIN ideal-int pkg syscall (freebsd-arm), const TCP_MAX_SACK ideal-int pkg syscall (freebsd-arm), const TCP_MAX_WINSHIFT ideal-int pkg syscall (freebsd-arm), const TCP_MD5SIG ideal-int pkg syscall (freebsd-arm), const TCP_MINMSS ideal-int pkg syscall (freebsd-arm), const TCP_MSS ideal-int pkg syscall (freebsd-arm), const TCP_NOOPT ideal-int pkg syscall (freebsd-arm), const TCP_NOPUSH ideal-int pkg syscall (freebsd-arm), const TCSAFLUSH ideal-int pkg syscall (freebsd-arm), const TIOCCBRK ideal-int pkg syscall (freebsd-arm), const TIOCCDTR ideal-int pkg syscall (freebsd-arm), const TIOCCONS ideal-int pkg syscall (freebsd-arm), const TIOCDRAIN ideal-int pkg syscall (freebsd-arm), const TIOCEXCL ideal-int pkg syscall (freebsd-arm), const TIOCEXT ideal-int pkg syscall (freebsd-arm), const TIOCFLUSH ideal-int pkg syscall (freebsd-arm), const TIOCGDRAINWAIT ideal-int pkg syscall (freebsd-arm), const TIOCGETA ideal-int pkg syscall (freebsd-arm), const TIOCGETD ideal-int pkg syscall (freebsd-arm), const TIOCGPGRP ideal-int pkg syscall (freebsd-arm), const TIOCGPTN ideal-int pkg syscall (freebsd-arm), const TIOCGSID ideal-int pkg syscall (freebsd-arm), const TIOCGWINSZ ideal-int pkg syscall (freebsd-arm), const TIOCMBIC ideal-int pkg syscall (freebsd-arm), const TIOCMBIS ideal-int pkg syscall (freebsd-arm), const TIOCMGDTRWAIT ideal-int pkg syscall (freebsd-arm), const TIOCMGET ideal-int pkg syscall (freebsd-arm), const TIOCMSDTRWAIT ideal-int pkg syscall (freebsd-arm), const TIOCMSET ideal-int pkg syscall (freebsd-arm), const TIOCM_CAR ideal-int pkg syscall (freebsd-arm), const TIOCM_CD ideal-int pkg syscall (freebsd-arm), const TIOCM_CTS ideal-int pkg syscall (freebsd-arm), const TIOCM_DCD ideal-int pkg syscall (freebsd-arm), const TIOCM_DSR ideal-int pkg syscall (freebsd-arm), const TIOCM_DTR ideal-int pkg syscall (freebsd-arm), const TIOCM_LE ideal-int pkg syscall (freebsd-arm), const TIOCM_RI ideal-int pkg syscall (freebsd-arm), const TIOCM_RNG ideal-int pkg syscall (freebsd-arm), const TIOCM_RTS ideal-int pkg syscall (freebsd-arm), const TIOCM_SR ideal-int pkg syscall (freebsd-arm), const TIOCM_ST ideal-int pkg syscall (freebsd-arm), const TIOCNOTTY ideal-int pkg syscall (freebsd-arm), const TIOCNXCL ideal-int pkg syscall (freebsd-arm), const TIOCOUTQ ideal-int pkg syscall (freebsd-arm), const TIOCPKT ideal-int pkg syscall (freebsd-arm), const TIOCPKT_DATA ideal-int pkg syscall (freebsd-arm), const TIOCPKT_DOSTOP ideal-int pkg syscall (freebsd-arm), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (freebsd-arm), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (freebsd-arm), const TIOCPKT_IOCTL ideal-int pkg syscall (freebsd-arm), const TIOCPKT_NOSTOP ideal-int pkg syscall (freebsd-arm), const TIOCPKT_START ideal-int pkg syscall (freebsd-arm), const TIOCPKT_STOP ideal-int pkg syscall (freebsd-arm), const TIOCPTMASTER ideal-int pkg syscall (freebsd-arm), const TIOCSBRK ideal-int pkg syscall (freebsd-arm), const TIOCSCTTY ideal-int pkg syscall (freebsd-arm), const TIOCSDRAINWAIT ideal-int pkg syscall (freebsd-arm), const TIOCSDTR ideal-int pkg syscall (freebsd-arm), const TIOCSETA ideal-int pkg syscall (freebsd-arm), const TIOCSETAF ideal-int pkg syscall (freebsd-arm), const TIOCSETAW ideal-int pkg syscall (freebsd-arm), const TIOCSETD ideal-int pkg syscall (freebsd-arm), const TIOCSIG ideal-int pkg syscall (freebsd-arm), const TIOCSPGRP ideal-int pkg syscall (freebsd-arm), const TIOCSTART ideal-int pkg syscall (freebsd-arm), const TIOCSTAT ideal-int pkg syscall (freebsd-arm), const TIOCSTI ideal-int pkg syscall (freebsd-arm), const TIOCSTOP ideal-int pkg syscall (freebsd-arm), const TIOCSWINSZ ideal-int pkg syscall (freebsd-arm), const TIOCTIMESTAMP ideal-int pkg syscall (freebsd-arm), const TIOCUCNTL ideal-int pkg syscall (freebsd-arm), const TOSTOP ideal-int pkg syscall (freebsd-arm), const VDISCARD ideal-int pkg syscall (freebsd-arm), const VDSUSP ideal-int pkg syscall (freebsd-arm), const VEOF ideal-int pkg syscall (freebsd-arm), const VEOL ideal-int pkg syscall (freebsd-arm), const VEOL2 ideal-int pkg syscall (freebsd-arm), const VERASE ideal-int pkg syscall (freebsd-arm), const VERASE2 ideal-int pkg syscall (freebsd-arm), const VINTR ideal-int pkg syscall (freebsd-arm), const VKILL ideal-int pkg syscall (freebsd-arm), const VLNEXT ideal-int pkg syscall (freebsd-arm), const VMIN ideal-int pkg syscall (freebsd-arm), const VQUIT ideal-int pkg syscall (freebsd-arm), const VREPRINT ideal-int pkg syscall (freebsd-arm), const VSTART ideal-int pkg syscall (freebsd-arm), const VSTATUS ideal-int pkg syscall (freebsd-arm), const VSTOP ideal-int pkg syscall (freebsd-arm), const VSUSP ideal-int pkg syscall (freebsd-arm), const VTIME ideal-int pkg syscall (freebsd-arm), const VWERASE ideal-int pkg syscall (freebsd-arm), const WCONTINUED ideal-int pkg syscall (freebsd-arm), const WCOREFLAG ideal-int pkg syscall (freebsd-arm), const WEXITED ideal-int pkg syscall (freebsd-arm), const WLINUXCLONE ideal-int pkg syscall (freebsd-arm), const WNOHANG ideal-int pkg syscall (freebsd-arm), const WNOWAIT ideal-int pkg syscall (freebsd-arm), const WSTOPPED ideal-int pkg syscall (freebsd-arm), const WTRAPPED ideal-int pkg syscall (freebsd-arm), const WUNTRACED ideal-int pkg syscall (freebsd-arm), func Accept(int) (int, Sockaddr, error) pkg syscall (freebsd-arm), func Access(string, uint32) error pkg syscall (freebsd-arm), func Adjtime(*Timeval, *Timeval) error pkg syscall (freebsd-arm), func Bind(int, Sockaddr) error pkg syscall (freebsd-arm), func BpfBuflen(int) (int, error) pkg syscall (freebsd-arm), func BpfDatalink(int) (int, error) pkg syscall (freebsd-arm), func BpfHeadercmpl(int) (int, error) pkg syscall (freebsd-arm), func BpfInterface(int, string) (string, error) pkg syscall (freebsd-arm), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (freebsd-arm), func BpfStats(int) (*BpfStat, error) pkg syscall (freebsd-arm), func BpfStmt(int, int) *BpfInsn pkg syscall (freebsd-arm), func BpfTimeout(int) (*Timeval, error) pkg syscall (freebsd-arm), func CheckBpfVersion(int) error pkg syscall (freebsd-arm), func Chflags(string, int) error pkg syscall (freebsd-arm), func Chroot(string) error pkg syscall (freebsd-arm), func Close(int) error pkg syscall (freebsd-arm), func CloseOnExec(int) pkg syscall (freebsd-arm), func CmsgLen(int) int pkg syscall (freebsd-arm), func CmsgSpace(int) int pkg syscall (freebsd-arm), func Connect(int, Sockaddr) error pkg syscall (freebsd-arm), func Dup(int) (int, error) pkg syscall (freebsd-arm), func Dup2(int, int) error pkg syscall (freebsd-arm), func Fchdir(int) error pkg syscall (freebsd-arm), func Fchflags(string, int) error pkg syscall (freebsd-arm), func Fchmod(int, uint32) error pkg syscall (freebsd-arm), func Fchown(int, int, int) error pkg syscall (freebsd-arm), func Flock(int, int) error pkg syscall (freebsd-arm), func FlushBpf(int) error pkg syscall (freebsd-arm), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (freebsd-arm), func Fpathconf(int, int) (int, error) pkg syscall (freebsd-arm), func Fstat(int, *Stat_t) error pkg syscall (freebsd-arm), func Fstatfs(int, *Statfs_t) error pkg syscall (freebsd-arm), func Fsync(int) error pkg syscall (freebsd-arm), func Ftruncate(int, int64) error pkg syscall (freebsd-arm), func Futimes(int, []Timeval) error pkg syscall (freebsd-arm), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (freebsd-arm), func Getdtablesize() int pkg syscall (freebsd-arm), func Getfsstat([]Statfs_t, int) (int, error) pkg syscall (freebsd-arm), func Getpeername(int) (Sockaddr, error) pkg syscall (freebsd-arm), func Getpgid(int) (int, error) pkg syscall (freebsd-arm), func Getpgrp() int pkg syscall (freebsd-arm), func Getpriority(int, int) (int, error) pkg syscall (freebsd-arm), func Getrlimit(int, *Rlimit) error pkg syscall (freebsd-arm), func Getrusage(int, *Rusage) error pkg syscall (freebsd-arm), func Getsid(int) (int, error) pkg syscall (freebsd-arm), func Getsockname(int) (Sockaddr, error) pkg syscall (freebsd-arm), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (freebsd-arm), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (freebsd-arm), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (freebsd-arm), func GetsockoptIPMreqn(int, int, int) (*IPMreqn, error) pkg syscall (freebsd-arm), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (freebsd-arm), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (freebsd-arm), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (freebsd-arm), func GetsockoptInt(int, int, int) (int, error) pkg syscall (freebsd-arm), func Issetugid() bool pkg syscall (freebsd-arm), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (freebsd-arm), func Kill(int, Signal) error pkg syscall (freebsd-arm), func Kqueue() (int, error) pkg syscall (freebsd-arm), func Listen(int, int) error pkg syscall (freebsd-arm), func Lstat(string, *Stat_t) error pkg syscall (freebsd-arm), func Mkfifo(string, uint32) error pkg syscall (freebsd-arm), func Mknod(string, uint32, int) error pkg syscall (freebsd-arm), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (freebsd-arm), func Munmap([]uint8) error pkg syscall (freebsd-arm), func Nanosleep(*Timespec, *Timespec) error pkg syscall (freebsd-arm), func Open(string, int, uint32) (int, error) pkg syscall (freebsd-arm), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (freebsd-arm), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (freebsd-arm), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (freebsd-arm), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (freebsd-arm), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (freebsd-arm), func Pathconf(string, int) (int, error) pkg syscall (freebsd-arm), func Pipe([]int) error pkg syscall (freebsd-arm), func Pread(int, []uint8, int64) (int, error) pkg syscall (freebsd-arm), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (freebsd-arm), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-arm), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-arm), func Read(int, []uint8) (int, error) pkg syscall (freebsd-arm), func ReadDirent(int, []uint8) (int, error) pkg syscall (freebsd-arm), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (freebsd-arm), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (freebsd-arm), func Revoke(string) error pkg syscall (freebsd-arm), func RouteRIB(int, int) ([]uint8, error) pkg syscall (freebsd-arm), func Seek(int, int64, int) (int64, error) pkg syscall (freebsd-arm), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (freebsd-arm), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (freebsd-arm), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (freebsd-arm), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (freebsd-arm), func SetBpf(int, []BpfInsn) error pkg syscall (freebsd-arm), func SetBpfBuflen(int, int) (int, error) pkg syscall (freebsd-arm), func SetBpfDatalink(int, int) (int, error) pkg syscall (freebsd-arm), func SetBpfHeadercmpl(int, int) error pkg syscall (freebsd-arm), func SetBpfImmediate(int, int) error pkg syscall (freebsd-arm), func SetBpfInterface(int, string) error pkg syscall (freebsd-arm), func SetBpfPromisc(int, int) error pkg syscall (freebsd-arm), func SetBpfTimeout(int, *Timeval) error pkg syscall (freebsd-arm), func SetKevent(*Kevent_t, int, int, int) pkg syscall (freebsd-arm), func SetNonblock(int, bool) error pkg syscall (freebsd-arm), func Setegid(int) error pkg syscall (freebsd-arm), func Seteuid(int) error pkg syscall (freebsd-arm), func Setgid(int) error pkg syscall (freebsd-arm), func Setgroups([]int) error pkg syscall (freebsd-arm), func Setlogin(string) error pkg syscall (freebsd-arm), func Setpgid(int, int) error pkg syscall (freebsd-arm), func Setpriority(int, int, int) error pkg syscall (freebsd-arm), func Setregid(int, int) error pkg syscall (freebsd-arm), func Setreuid(int, int) error pkg syscall (freebsd-arm), func Setrlimit(int, *Rlimit) error pkg syscall (freebsd-arm), func Setsid() (int, error) pkg syscall (freebsd-arm), func SetsockoptByte(int, int, int, uint8) error pkg syscall (freebsd-arm), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (freebsd-arm), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (freebsd-arm), func SetsockoptIPMreqn(int, int, int, *IPMreqn) error pkg syscall (freebsd-arm), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (freebsd-arm), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (freebsd-arm), func SetsockoptInt(int, int, int, int) error pkg syscall (freebsd-arm), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (freebsd-arm), func SetsockoptString(int, int, int, string) error pkg syscall (freebsd-arm), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (freebsd-arm), func Settimeofday(*Timeval) error pkg syscall (freebsd-arm), func Setuid(int) error pkg syscall (freebsd-arm), func Shutdown(int, int) error pkg syscall (freebsd-arm), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (freebsd-arm), func Socket(int, int, int) (int, error) pkg syscall (freebsd-arm), func Socketpair(int, int, int) ([2]int, error) pkg syscall (freebsd-arm), func Stat(string, *Stat_t) error pkg syscall (freebsd-arm), func Statfs(string, *Statfs_t) error pkg syscall (freebsd-arm), func StringSlicePtr([]string) []*uint8 pkg syscall (freebsd-arm), func Sync() error pkg syscall (freebsd-arm), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-arm), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-arm), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-arm), func Sysctl(string) (string, error) pkg syscall (freebsd-arm), func SysctlUint32(string) (uint32, error) pkg syscall (freebsd-arm), func TimevalToNsec(Timeval) int64 pkg syscall (freebsd-arm), func Truncate(string, int64) error pkg syscall (freebsd-arm), func Umask(int) int pkg syscall (freebsd-arm), func Undelete(string) error pkg syscall (freebsd-arm), func UnixRights(...int) []uint8 pkg syscall (freebsd-arm), func Unmount(string, int) error pkg syscall (freebsd-arm), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (freebsd-arm), func Write(int, []uint8) (int, error) pkg syscall (freebsd-arm), method (*Cmsghdr) SetLen(int) pkg syscall (freebsd-arm), method (*Iovec) SetLen(int) pkg syscall (freebsd-arm), method (*Msghdr) SetControllen(int) pkg syscall (freebsd-arm), type BpfHdr struct pkg syscall (freebsd-arm), type BpfHdr struct, Caplen uint32 pkg syscall (freebsd-arm), type BpfHdr struct, Datalen uint32 pkg syscall (freebsd-arm), type BpfHdr struct, Hdrlen uint16 pkg syscall (freebsd-arm), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm), type BpfHdr struct, Tstamp Timeval pkg syscall (freebsd-arm), type BpfInsn struct pkg syscall (freebsd-arm), type BpfInsn struct, Code uint16 pkg syscall (freebsd-arm), type BpfInsn struct, Jf uint8 pkg syscall (freebsd-arm), type BpfInsn struct, Jt uint8 pkg syscall (freebsd-arm), type BpfInsn struct, K uint32 pkg syscall (freebsd-arm), type BpfProgram struct pkg syscall (freebsd-arm), type BpfProgram struct, Insns *BpfInsn pkg syscall (freebsd-arm), type BpfProgram struct, Len uint32 pkg syscall (freebsd-arm), type BpfStat struct pkg syscall (freebsd-arm), type BpfStat struct, Drop uint32 pkg syscall (freebsd-arm), type BpfStat struct, Recv uint32 pkg syscall (freebsd-arm), type BpfVersion struct pkg syscall (freebsd-arm), type BpfVersion struct, Major uint16 pkg syscall (freebsd-arm), type BpfVersion struct, Minor uint16 pkg syscall (freebsd-arm), type BpfZbuf struct pkg syscall (freebsd-arm), type BpfZbuf struct, Bufa *uint8 pkg syscall (freebsd-arm), type BpfZbuf struct, Bufb *uint8 pkg syscall (freebsd-arm), type BpfZbuf struct, Buflen uint32 pkg syscall (freebsd-arm), type BpfZbufHeader struct pkg syscall (freebsd-arm), type BpfZbufHeader struct, Kernel_gen uint32 pkg syscall (freebsd-arm), type BpfZbufHeader struct, Kernel_len uint32 pkg syscall (freebsd-arm), type BpfZbufHeader struct, User_gen uint32 pkg syscall (freebsd-arm), type BpfZbufHeader struct, X_bzh_pad [5]uint32 pkg syscall (freebsd-arm), type Cmsghdr struct pkg syscall (freebsd-arm), type Cmsghdr struct, Len uint32 pkg syscall (freebsd-arm), type Cmsghdr struct, Level int32 pkg syscall (freebsd-arm), type Cmsghdr struct, Type int32 pkg syscall (freebsd-arm), type Credential struct pkg syscall (freebsd-arm), type Credential struct, Gid uint32 pkg syscall (freebsd-arm), type Credential struct, Groups []uint32 pkg syscall (freebsd-arm), type Credential struct, Uid uint32 pkg syscall (freebsd-arm), type Dirent struct pkg syscall (freebsd-arm), type Dirent struct, Fileno uint32 pkg syscall (freebsd-arm), type Dirent struct, Name [256]int8 pkg syscall (freebsd-arm), type Dirent struct, Namlen uint8 pkg syscall (freebsd-arm), type Dirent struct, Reclen uint16 pkg syscall (freebsd-arm), type Dirent struct, Type uint8 pkg syscall (freebsd-arm), type FdSet struct pkg syscall (freebsd-arm), type FdSet struct, X__fds_bits [32]uint32 pkg syscall (freebsd-arm), type Flock_t struct pkg syscall (freebsd-arm), type Flock_t struct, Len int64 pkg syscall (freebsd-arm), type Flock_t struct, Pid int32 pkg syscall (freebsd-arm), type Flock_t struct, Start int64 pkg syscall (freebsd-arm), type Flock_t struct, Sysid int32 pkg syscall (freebsd-arm), type Flock_t struct, Type int16 pkg syscall (freebsd-arm), type Flock_t struct, Whence int16 pkg syscall (freebsd-arm), type Fsid struct pkg syscall (freebsd-arm), type Fsid struct, Val [2]int32 pkg syscall (freebsd-arm), type ICMPv6Filter struct pkg syscall (freebsd-arm), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (freebsd-arm), type IPMreqn struct pkg syscall (freebsd-arm), type IPMreqn struct, Address [4]uint8 pkg syscall (freebsd-arm), type IPMreqn struct, Ifindex int32 pkg syscall (freebsd-arm), type IPMreqn struct, Multiaddr [4]uint8 pkg syscall (freebsd-arm), type IPv6MTUInfo struct pkg syscall (freebsd-arm), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (freebsd-arm), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (freebsd-arm), type IfAnnounceMsghdr struct pkg syscall (freebsd-arm), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (freebsd-arm), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (freebsd-arm), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (freebsd-arm), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (freebsd-arm), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (freebsd-arm), type IfAnnounceMsghdr struct, What uint16 pkg syscall (freebsd-arm), type IfData struct pkg syscall (freebsd-arm), type IfData struct, Addrlen uint8 pkg syscall (freebsd-arm), type IfData struct, Baudrate uint32 pkg syscall (freebsd-arm), type IfData struct, Collisions uint32 pkg syscall (freebsd-arm), type IfData struct, Datalen uint8 pkg syscall (freebsd-arm), type IfData struct, Epoch int64 pkg syscall (freebsd-arm), type IfData struct, Hdrlen uint8 pkg syscall (freebsd-arm), type IfData struct, Hwassist uint32 pkg syscall (freebsd-arm), type IfData struct, Ibytes uint32 pkg syscall (freebsd-arm), type IfData struct, Ierrors uint32 pkg syscall (freebsd-arm), type IfData struct, Imcasts uint32 pkg syscall (freebsd-arm), type IfData struct, Ipackets uint32 pkg syscall (freebsd-arm), type IfData struct, Iqdrops uint32 pkg syscall (freebsd-arm), type IfData struct, Lastchange Timeval pkg syscall (freebsd-arm), type IfData struct, Link_state uint8 pkg syscall (freebsd-arm), type IfData struct, Metric uint32 pkg syscall (freebsd-arm), type IfData struct, Mtu uint32 pkg syscall (freebsd-arm), type IfData struct, Noproto uint32 pkg syscall (freebsd-arm), type IfData struct, Obytes uint32 pkg syscall (freebsd-arm), type IfData struct, Oerrors uint32 pkg syscall (freebsd-arm), type IfData struct, Omcasts uint32 pkg syscall (freebsd-arm), type IfData struct, Opackets uint32 pkg syscall (freebsd-arm), type IfData struct, Physical uint8 pkg syscall (freebsd-arm), type IfData struct, Spare_char1 uint8 pkg syscall (freebsd-arm), type IfData struct, Spare_char2 uint8 pkg syscall (freebsd-arm), type IfData struct, Type uint8 pkg syscall (freebsd-arm), type IfMsghdr struct pkg syscall (freebsd-arm), type IfMsghdr struct, Addrs int32 pkg syscall (freebsd-arm), type IfMsghdr struct, Data IfData pkg syscall (freebsd-arm), type IfMsghdr struct, Flags int32 pkg syscall (freebsd-arm), type IfMsghdr struct, Index uint16 pkg syscall (freebsd-arm), type IfMsghdr struct, Msglen uint16 pkg syscall (freebsd-arm), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm), type IfMsghdr struct, Type uint8 pkg syscall (freebsd-arm), type IfMsghdr struct, Version uint8 pkg syscall (freebsd-arm), type IfaMsghdr struct pkg syscall (freebsd-arm), type IfaMsghdr struct, Addrs int32 pkg syscall (freebsd-arm), type IfaMsghdr struct, Flags int32 pkg syscall (freebsd-arm), type IfaMsghdr struct, Index uint16 pkg syscall (freebsd-arm), type IfaMsghdr struct, Metric int32 pkg syscall (freebsd-arm), type IfaMsghdr struct, Msglen uint16 pkg syscall (freebsd-arm), type IfaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm), type IfaMsghdr struct, Type uint8 pkg syscall (freebsd-arm), type IfaMsghdr struct, Version uint8 pkg syscall (freebsd-arm), type IfmaMsghdr struct pkg syscall (freebsd-arm), type IfmaMsghdr struct, Addrs int32 pkg syscall (freebsd-arm), type IfmaMsghdr struct, Flags int32 pkg syscall (freebsd-arm), type IfmaMsghdr struct, Index uint16 pkg syscall (freebsd-arm), type IfmaMsghdr struct, Msglen uint16 pkg syscall (freebsd-arm), type IfmaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm), type IfmaMsghdr struct, Type uint8 pkg syscall (freebsd-arm), type IfmaMsghdr struct, Version uint8 pkg syscall (freebsd-arm), type Inet6Pktinfo struct pkg syscall (freebsd-arm), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (freebsd-arm), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (freebsd-arm), type InterfaceAddrMessage struct pkg syscall (freebsd-arm), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (freebsd-arm), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (freebsd-arm), type InterfaceAnnounceMessage struct pkg syscall (freebsd-arm), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (freebsd-arm), type InterfaceMessage struct pkg syscall (freebsd-arm), type InterfaceMessage struct, Data []uint8 pkg syscall (freebsd-arm), type InterfaceMessage struct, Header IfMsghdr pkg syscall (freebsd-arm), type InterfaceMulticastAddrMessage struct pkg syscall (freebsd-arm), type InterfaceMulticastAddrMessage struct, Data []uint8 pkg syscall (freebsd-arm), type InterfaceMulticastAddrMessage struct, Header IfmaMsghdr pkg syscall (freebsd-arm), type Iovec struct pkg syscall (freebsd-arm), type Iovec struct, Base *uint8 pkg syscall (freebsd-arm), type Iovec struct, Len uint32 pkg syscall (freebsd-arm), type Kevent_t struct pkg syscall (freebsd-arm), type Kevent_t struct, Data int32 pkg syscall (freebsd-arm), type Kevent_t struct, Fflags uint32 pkg syscall (freebsd-arm), type Kevent_t struct, Filter int16 pkg syscall (freebsd-arm), type Kevent_t struct, Flags uint16 pkg syscall (freebsd-arm), type Kevent_t struct, Ident uint32 pkg syscall (freebsd-arm), type Kevent_t struct, Udata *uint8 pkg syscall (freebsd-arm), type Msghdr struct pkg syscall (freebsd-arm), type Msghdr struct, Control *uint8 pkg syscall (freebsd-arm), type Msghdr struct, Controllen uint32 pkg syscall (freebsd-arm), type Msghdr struct, Flags int32 pkg syscall (freebsd-arm), type Msghdr struct, Iov *Iovec pkg syscall (freebsd-arm), type Msghdr struct, Iovlen int32 pkg syscall (freebsd-arm), type Msghdr struct, Name *uint8 pkg syscall (freebsd-arm), type Msghdr struct, Namelen uint32 pkg syscall (freebsd-arm), type RawSockaddr struct, Data [14]int8 pkg syscall (freebsd-arm), type RawSockaddr struct, Family uint8 pkg syscall (freebsd-arm), type RawSockaddr struct, Len uint8 pkg syscall (freebsd-arm), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (freebsd-arm), type RawSockaddrDatalink struct pkg syscall (freebsd-arm), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (freebsd-arm), type RawSockaddrDatalink struct, Data [46]int8 pkg syscall (freebsd-arm), type RawSockaddrDatalink struct, Family uint8 pkg syscall (freebsd-arm), type RawSockaddrDatalink struct, Index uint16 pkg syscall (freebsd-arm), type RawSockaddrDatalink struct, Len uint8 pkg syscall (freebsd-arm), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (freebsd-arm), type RawSockaddrDatalink struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (freebsd-arm), type RawSockaddrDatalink struct, Type uint8 pkg syscall (freebsd-arm), type RawSockaddrInet4 struct, Family uint8 pkg syscall (freebsd-arm), type RawSockaddrInet4 struct, Len uint8 pkg syscall (freebsd-arm), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (freebsd-arm), type RawSockaddrInet6 struct, Family uint8 pkg syscall (freebsd-arm), type RawSockaddrInet6 struct, Len uint8 pkg syscall (freebsd-arm), type RawSockaddrUnix struct pkg syscall (freebsd-arm), type RawSockaddrUnix struct, Family uint8 pkg syscall (freebsd-arm), type RawSockaddrUnix struct, Len uint8 pkg syscall (freebsd-arm), type RawSockaddrUnix struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (freebsd-arm), type Rlimit struct pkg syscall (freebsd-arm), type Rlimit struct, Cur int64 pkg syscall (freebsd-arm), type Rlimit struct, Max int64 pkg syscall (freebsd-arm), type RouteMessage struct pkg syscall (freebsd-arm), type RouteMessage struct, Data []uint8 pkg syscall (freebsd-arm), type RouteMessage struct, Header RtMsghdr pkg syscall (freebsd-arm), type RoutingMessage interface, unexported methods pkg syscall (freebsd-arm), type RtMetrics struct pkg syscall (freebsd-arm), type RtMetrics struct, Expire uint32 pkg syscall (freebsd-arm), type RtMetrics struct, Filler [3]uint32 pkg syscall (freebsd-arm), type RtMetrics struct, Hopcount uint32 pkg syscall (freebsd-arm), type RtMetrics struct, Locks uint32 pkg syscall (freebsd-arm), type RtMetrics struct, Mtu uint32 pkg syscall (freebsd-arm), type RtMetrics struct, Pksent uint32 pkg syscall (freebsd-arm), type RtMetrics struct, Recvpipe uint32 pkg syscall (freebsd-arm), type RtMetrics struct, Rtt uint32 pkg syscall (freebsd-arm), type RtMetrics struct, Rttvar uint32 pkg syscall (freebsd-arm), type RtMetrics struct, Sendpipe uint32 pkg syscall (freebsd-arm), type RtMetrics struct, Ssthresh uint32 pkg syscall (freebsd-arm), type RtMetrics struct, Weight uint32 pkg syscall (freebsd-arm), type RtMsghdr struct pkg syscall (freebsd-arm), type RtMsghdr struct, Addrs int32 pkg syscall (freebsd-arm), type RtMsghdr struct, Errno int32 pkg syscall (freebsd-arm), type RtMsghdr struct, Flags int32 pkg syscall (freebsd-arm), type RtMsghdr struct, Fmask int32 pkg syscall (freebsd-arm), type RtMsghdr struct, Index uint16 pkg syscall (freebsd-arm), type RtMsghdr struct, Inits uint32 pkg syscall (freebsd-arm), type RtMsghdr struct, Msglen uint16 pkg syscall (freebsd-arm), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm), type RtMsghdr struct, Pid int32 pkg syscall (freebsd-arm), type RtMsghdr struct, Rmx RtMetrics pkg syscall (freebsd-arm), type RtMsghdr struct, Seq int32 pkg syscall (freebsd-arm), type RtMsghdr struct, Type uint8 pkg syscall (freebsd-arm), type RtMsghdr struct, Version uint8 pkg syscall (freebsd-arm), type Rusage struct, Idrss int32 pkg syscall (freebsd-arm), type Rusage struct, Inblock int32 pkg syscall (freebsd-arm), type Rusage struct, Isrss int32 pkg syscall (freebsd-arm), type Rusage struct, Ixrss int32 pkg syscall (freebsd-arm), type Rusage struct, Majflt int32 pkg syscall (freebsd-arm), type Rusage struct, Maxrss int32 pkg syscall (freebsd-arm), type Rusage struct, Minflt int32 pkg syscall (freebsd-arm), type Rusage struct, Msgrcv int32 pkg syscall (freebsd-arm), type Rusage struct, Msgsnd int32 pkg syscall (freebsd-arm), type Rusage struct, Nivcsw int32 pkg syscall (freebsd-arm), type Rusage struct, Nsignals int32 pkg syscall (freebsd-arm), type Rusage struct, Nswap int32 pkg syscall (freebsd-arm), type Rusage struct, Nvcsw int32 pkg syscall (freebsd-arm), type Rusage struct, Oublock int32 pkg syscall (freebsd-arm), type Rusage struct, Stime Timeval pkg syscall (freebsd-arm), type Rusage struct, Utime Timeval pkg syscall (freebsd-arm), type SockaddrDatalink struct pkg syscall (freebsd-arm), type SockaddrDatalink struct, Alen uint8 pkg syscall (freebsd-arm), type SockaddrDatalink struct, Data [46]int8 pkg syscall (freebsd-arm), type SockaddrDatalink struct, Family uint8 pkg syscall (freebsd-arm), type SockaddrDatalink struct, Index uint16 pkg syscall (freebsd-arm), type SockaddrDatalink struct, Len uint8 pkg syscall (freebsd-arm), type SockaddrDatalink struct, Nlen uint8 pkg syscall (freebsd-arm), type SockaddrDatalink struct, Slen uint8 pkg syscall (freebsd-arm), type SockaddrDatalink struct, Type uint8 pkg syscall (freebsd-arm), type SocketControlMessage struct pkg syscall (freebsd-arm), type SocketControlMessage struct, Data []uint8 pkg syscall (freebsd-arm), type SocketControlMessage struct, Header Cmsghdr pkg syscall (freebsd-arm), type Stat_t struct pkg syscall (freebsd-arm), type Stat_t struct, Atimespec Timespec pkg syscall (freebsd-arm), type Stat_t struct, Birthtimespec Timespec pkg syscall (freebsd-arm), type Stat_t struct, Blksize uint32 pkg syscall (freebsd-arm), type Stat_t struct, Blocks int64 pkg syscall (freebsd-arm), type Stat_t struct, Ctimespec Timespec pkg syscall (freebsd-arm), type Stat_t struct, Dev uint32 pkg syscall (freebsd-arm), type Stat_t struct, Flags uint32 pkg syscall (freebsd-arm), type Stat_t struct, Gen uint32 pkg syscall (freebsd-arm), type Stat_t struct, Gid uint32 pkg syscall (freebsd-arm), type Stat_t struct, Ino uint32 pkg syscall (freebsd-arm), type Stat_t struct, Lspare int32 pkg syscall (freebsd-arm), type Stat_t struct, Mode uint16 pkg syscall (freebsd-arm), type Stat_t struct, Mtimespec Timespec pkg syscall (freebsd-arm), type Stat_t struct, Nlink uint16 pkg syscall (freebsd-arm), type Stat_t struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-arm), type Stat_t struct, Rdev uint32 pkg syscall (freebsd-arm), type Stat_t struct, Size int64 pkg syscall (freebsd-arm), type Stat_t struct, Uid uint32 pkg syscall (freebsd-arm), type Statfs_t struct pkg syscall (freebsd-arm), type Statfs_t struct, Asyncreads uint64 pkg syscall (freebsd-arm), type Statfs_t struct, Asyncwrites uint64 pkg syscall (freebsd-arm), type Statfs_t struct, Bavail int64 pkg syscall (freebsd-arm), type Statfs_t struct, Bfree uint64 pkg syscall (freebsd-arm), type Statfs_t struct, Blocks uint64 pkg syscall (freebsd-arm), type Statfs_t struct, Bsize uint64 pkg syscall (freebsd-arm), type Statfs_t struct, Charspare [80]int8 pkg syscall (freebsd-arm), type Statfs_t struct, Ffree int64 pkg syscall (freebsd-arm), type Statfs_t struct, Files uint64 pkg syscall (freebsd-arm), type Statfs_t struct, Flags uint64 pkg syscall (freebsd-arm), type Statfs_t struct, Fsid Fsid pkg syscall (freebsd-arm), type Statfs_t struct, Fstypename [16]int8 pkg syscall (freebsd-arm), type Statfs_t struct, Iosize uint64 pkg syscall (freebsd-arm), type Statfs_t struct, Mntfromname [88]int8 pkg syscall (freebsd-arm), type Statfs_t struct, Mntonname [88]int8 pkg syscall (freebsd-arm), type Statfs_t struct, Namemax uint32 pkg syscall (freebsd-arm), type Statfs_t struct, Owner uint32 pkg syscall (freebsd-arm), type Statfs_t struct, Spare [10]uint64 pkg syscall (freebsd-arm), type Statfs_t struct, Syncreads uint64 pkg syscall (freebsd-arm), type Statfs_t struct, Syncwrites uint64 pkg syscall (freebsd-arm), type Statfs_t struct, Type uint32 pkg syscall (freebsd-arm), type Statfs_t struct, Version uint32 pkg syscall (freebsd-arm), type SysProcAttr struct, Chroot string pkg syscall (freebsd-arm), type SysProcAttr struct, Credential *Credential pkg syscall (freebsd-arm), type SysProcAttr struct, Noctty bool pkg syscall (freebsd-arm), type SysProcAttr struct, Ptrace bool pkg syscall (freebsd-arm), type SysProcAttr struct, Setctty bool pkg syscall (freebsd-arm), type SysProcAttr struct, Setpgid bool pkg syscall (freebsd-arm), type SysProcAttr struct, Setsid bool pkg syscall (freebsd-arm), type Timespec struct, Nsec int32 pkg syscall (freebsd-arm), type Timespec struct, Sec int64 pkg syscall (freebsd-arm), type Timeval struct, Sec int64 pkg syscall (freebsd-arm), type Timeval struct, Usec int32 pkg syscall (freebsd-arm), type WaitStatus uint32 pkg syscall (freebsd-arm), var Stderr int pkg syscall (freebsd-arm), var Stdin int pkg syscall (freebsd-arm), var Stdout int pkg syscall (freebsd-arm-cgo), const AF_APPLETALK ideal-int pkg syscall (freebsd-arm-cgo), const AF_ARP ideal-int pkg syscall (freebsd-arm-cgo), const AF_ATM ideal-int pkg syscall (freebsd-arm-cgo), const AF_BLUETOOTH ideal-int pkg syscall (freebsd-arm-cgo), const AF_CCITT ideal-int pkg syscall (freebsd-arm-cgo), const AF_CHAOS ideal-int pkg syscall (freebsd-arm-cgo), const AF_CNT ideal-int pkg syscall (freebsd-arm-cgo), const AF_COIP ideal-int pkg syscall (freebsd-arm-cgo), const AF_DATAKIT ideal-int pkg syscall (freebsd-arm-cgo), const AF_DECnet ideal-int pkg syscall (freebsd-arm-cgo), const AF_DLI ideal-int pkg syscall (freebsd-arm-cgo), const AF_E164 ideal-int pkg syscall (freebsd-arm-cgo), const AF_ECMA ideal-int pkg syscall (freebsd-arm-cgo), const AF_HYLINK ideal-int pkg syscall (freebsd-arm-cgo), const AF_IEEE80211 ideal-int pkg syscall (freebsd-arm-cgo), const AF_IMPLINK ideal-int pkg syscall (freebsd-arm-cgo), const AF_IPX ideal-int pkg syscall (freebsd-arm-cgo), const AF_ISDN ideal-int pkg syscall (freebsd-arm-cgo), const AF_ISO ideal-int pkg syscall (freebsd-arm-cgo), const AF_LAT ideal-int pkg syscall (freebsd-arm-cgo), const AF_LINK ideal-int pkg syscall (freebsd-arm-cgo), const AF_LOCAL ideal-int pkg syscall (freebsd-arm-cgo), const AF_MAX ideal-int pkg syscall (freebsd-arm-cgo), const AF_NATM ideal-int pkg syscall (freebsd-arm-cgo), const AF_NETBIOS ideal-int pkg syscall (freebsd-arm-cgo), const AF_NETGRAPH ideal-int pkg syscall (freebsd-arm-cgo), const AF_OSI ideal-int pkg syscall (freebsd-arm-cgo), const AF_PUP ideal-int pkg syscall (freebsd-arm-cgo), const AF_ROUTE ideal-int pkg syscall (freebsd-arm-cgo), const AF_SCLUSTER ideal-int pkg syscall (freebsd-arm-cgo), const AF_SIP ideal-int pkg syscall (freebsd-arm-cgo), const AF_SLOW ideal-int pkg syscall (freebsd-arm-cgo), const AF_SNA ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR00 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR01 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR02 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR03 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR04 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR05 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR06 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR07 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR08 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR09 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR10 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR11 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR12 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR13 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR14 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR15 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR16 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR17 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR18 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR19 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR20 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR21 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR22 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR23 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR24 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR25 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR26 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR27 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR28 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR29 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR30 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR31 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR32 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR33 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR34 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR35 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR36 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR37 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR38 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR39 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR40 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR41 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR42 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR43 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR44 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR45 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR46 ideal-int pkg syscall (freebsd-arm-cgo), const AF_VENDOR47 ideal-int pkg syscall (freebsd-arm-cgo), const B0 ideal-int pkg syscall (freebsd-arm-cgo), const B110 ideal-int pkg syscall (freebsd-arm-cgo), const B115200 ideal-int pkg syscall (freebsd-arm-cgo), const B1200 ideal-int pkg syscall (freebsd-arm-cgo), const B134 ideal-int pkg syscall (freebsd-arm-cgo), const B14400 ideal-int pkg syscall (freebsd-arm-cgo), const B150 ideal-int pkg syscall (freebsd-arm-cgo), const B1800 ideal-int pkg syscall (freebsd-arm-cgo), const B19200 ideal-int pkg syscall (freebsd-arm-cgo), const B200 ideal-int pkg syscall (freebsd-arm-cgo), const B230400 ideal-int pkg syscall (freebsd-arm-cgo), const B2400 ideal-int pkg syscall (freebsd-arm-cgo), const B28800 ideal-int pkg syscall (freebsd-arm-cgo), const B300 ideal-int pkg syscall (freebsd-arm-cgo), const B38400 ideal-int pkg syscall (freebsd-arm-cgo), const B460800 ideal-int pkg syscall (freebsd-arm-cgo), const B4800 ideal-int pkg syscall (freebsd-arm-cgo), const B50 ideal-int pkg syscall (freebsd-arm-cgo), const B57600 ideal-int pkg syscall (freebsd-arm-cgo), const B600 ideal-int pkg syscall (freebsd-arm-cgo), const B7200 ideal-int pkg syscall (freebsd-arm-cgo), const B75 ideal-int pkg syscall (freebsd-arm-cgo), const B76800 ideal-int pkg syscall (freebsd-arm-cgo), const B921600 ideal-int pkg syscall (freebsd-arm-cgo), const B9600 ideal-int pkg syscall (freebsd-arm-cgo), const BIOCFEEDBACK ideal-int pkg syscall (freebsd-arm-cgo), const BIOCFLUSH ideal-int pkg syscall (freebsd-arm-cgo), const BIOCGBLEN ideal-int pkg syscall (freebsd-arm-cgo), const BIOCGDIRECTION ideal-int pkg syscall (freebsd-arm-cgo), const BIOCGDLT ideal-int pkg syscall (freebsd-arm-cgo), const BIOCGDLTLIST ideal-int pkg syscall (freebsd-arm-cgo), const BIOCGETBUFMODE ideal-int pkg syscall (freebsd-arm-cgo), const BIOCGETIF ideal-int pkg syscall (freebsd-arm-cgo), const BIOCGETZMAX ideal-int pkg syscall (freebsd-arm-cgo), const BIOCGHDRCMPLT ideal-int pkg syscall (freebsd-arm-cgo), const BIOCGRSIG ideal-int pkg syscall (freebsd-arm-cgo), const BIOCGRTIMEOUT ideal-int pkg syscall (freebsd-arm-cgo), const BIOCGSEESENT ideal-int pkg syscall (freebsd-arm-cgo), const BIOCGSTATS ideal-int pkg syscall (freebsd-arm-cgo), const BIOCGTSTAMP ideal-int pkg syscall (freebsd-arm-cgo), const BIOCIMMEDIATE ideal-int pkg syscall (freebsd-arm-cgo), const BIOCLOCK ideal-int pkg syscall (freebsd-arm-cgo), const BIOCPROMISC ideal-int pkg syscall (freebsd-arm-cgo), const BIOCROTZBUF ideal-int pkg syscall (freebsd-arm-cgo), const BIOCSBLEN ideal-int pkg syscall (freebsd-arm-cgo), const BIOCSDIRECTION ideal-int pkg syscall (freebsd-arm-cgo), const BIOCSDLT ideal-int pkg syscall (freebsd-arm-cgo), const BIOCSETBUFMODE ideal-int pkg syscall (freebsd-arm-cgo), const BIOCSETF ideal-int pkg syscall (freebsd-arm-cgo), const BIOCSETFNR ideal-int pkg syscall (freebsd-arm-cgo), const BIOCSETIF ideal-int pkg syscall (freebsd-arm-cgo), const BIOCSETWF ideal-int pkg syscall (freebsd-arm-cgo), const BIOCSETZBUF ideal-int pkg syscall (freebsd-arm-cgo), const BIOCSHDRCMPLT ideal-int pkg syscall (freebsd-arm-cgo), const BIOCSRSIG ideal-int pkg syscall (freebsd-arm-cgo), const BIOCSRTIMEOUT ideal-int pkg syscall (freebsd-arm-cgo), const BIOCSSEESENT ideal-int pkg syscall (freebsd-arm-cgo), const BIOCSTSTAMP ideal-int pkg syscall (freebsd-arm-cgo), const BIOCVERSION ideal-int pkg syscall (freebsd-arm-cgo), const BPF_A ideal-int pkg syscall (freebsd-arm-cgo), const BPF_ABS ideal-int pkg syscall (freebsd-arm-cgo), const BPF_ADD ideal-int pkg syscall (freebsd-arm-cgo), const BPF_ALIGNMENT ideal-int pkg syscall (freebsd-arm-cgo), const BPF_ALU ideal-int pkg syscall (freebsd-arm-cgo), const BPF_AND ideal-int pkg syscall (freebsd-arm-cgo), const BPF_B ideal-int pkg syscall (freebsd-arm-cgo), const BPF_BUFMODE_BUFFER ideal-int pkg syscall (freebsd-arm-cgo), const BPF_BUFMODE_ZBUF ideal-int pkg syscall (freebsd-arm-cgo), const BPF_DIV ideal-int pkg syscall (freebsd-arm-cgo), const BPF_H ideal-int pkg syscall (freebsd-arm-cgo), const BPF_IMM ideal-int pkg syscall (freebsd-arm-cgo), const BPF_IND ideal-int pkg syscall (freebsd-arm-cgo), const BPF_JA ideal-int pkg syscall (freebsd-arm-cgo), const BPF_JEQ ideal-int pkg syscall (freebsd-arm-cgo), const BPF_JGE ideal-int pkg syscall (freebsd-arm-cgo), const BPF_JGT ideal-int pkg syscall (freebsd-arm-cgo), const BPF_JMP ideal-int pkg syscall (freebsd-arm-cgo), const BPF_JSET ideal-int pkg syscall (freebsd-arm-cgo), const BPF_K ideal-int pkg syscall (freebsd-arm-cgo), const BPF_LD ideal-int pkg syscall (freebsd-arm-cgo), const BPF_LDX ideal-int pkg syscall (freebsd-arm-cgo), const BPF_LEN ideal-int pkg syscall (freebsd-arm-cgo), const BPF_LSH ideal-int pkg syscall (freebsd-arm-cgo), const BPF_MAJOR_VERSION ideal-int pkg syscall (freebsd-arm-cgo), const BPF_MAXBUFSIZE ideal-int pkg syscall (freebsd-arm-cgo), const BPF_MAXINSNS ideal-int pkg syscall (freebsd-arm-cgo), const BPF_MEM ideal-int pkg syscall (freebsd-arm-cgo), const BPF_MEMWORDS ideal-int pkg syscall (freebsd-arm-cgo), const BPF_MINBUFSIZE ideal-int pkg syscall (freebsd-arm-cgo), const BPF_MINOR_VERSION ideal-int pkg syscall (freebsd-arm-cgo), const BPF_MISC ideal-int pkg syscall (freebsd-arm-cgo), const BPF_MSH ideal-int pkg syscall (freebsd-arm-cgo), const BPF_MUL ideal-int pkg syscall (freebsd-arm-cgo), const BPF_NEG ideal-int pkg syscall (freebsd-arm-cgo), const BPF_OR ideal-int pkg syscall (freebsd-arm-cgo), const BPF_RELEASE ideal-int pkg syscall (freebsd-arm-cgo), const BPF_RET ideal-int pkg syscall (freebsd-arm-cgo), const BPF_RSH ideal-int pkg syscall (freebsd-arm-cgo), const BPF_ST ideal-int pkg syscall (freebsd-arm-cgo), const BPF_STX ideal-int pkg syscall (freebsd-arm-cgo), const BPF_SUB ideal-int pkg syscall (freebsd-arm-cgo), const BPF_TAX ideal-int pkg syscall (freebsd-arm-cgo), const BPF_TXA ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_BINTIME ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_BINTIME_FAST ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_BINTIME_MONOTONIC ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_BINTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_FAST ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_FLAG_MASK ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_FORMAT_MASK ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_MICROTIME ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_MICROTIME_FAST ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_MICROTIME_MONOTONIC ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_MICROTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_MONOTONIC ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_MONOTONIC_FAST ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_NANOTIME ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_NANOTIME_FAST ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_NANOTIME_MONOTONIC ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_NANOTIME_MONOTONIC_FAST ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_NONE ideal-int pkg syscall (freebsd-arm-cgo), const BPF_T_NORMAL ideal-int pkg syscall (freebsd-arm-cgo), const BPF_W ideal-int pkg syscall (freebsd-arm-cgo), const BPF_X ideal-int pkg syscall (freebsd-arm-cgo), const BRKINT ideal-int pkg syscall (freebsd-arm-cgo), const CFLUSH ideal-int pkg syscall (freebsd-arm-cgo), const CLOCAL ideal-int pkg syscall (freebsd-arm-cgo), const CREAD ideal-int pkg syscall (freebsd-arm-cgo), const CS5 ideal-int pkg syscall (freebsd-arm-cgo), const CS6 ideal-int pkg syscall (freebsd-arm-cgo), const CS7 ideal-int pkg syscall (freebsd-arm-cgo), const CS8 ideal-int pkg syscall (freebsd-arm-cgo), const CSIZE ideal-int pkg syscall (freebsd-arm-cgo), const CSTART ideal-int pkg syscall (freebsd-arm-cgo), const CSTATUS ideal-int pkg syscall (freebsd-arm-cgo), const CSTOP ideal-int pkg syscall (freebsd-arm-cgo), const CSTOPB ideal-int pkg syscall (freebsd-arm-cgo), const CSUSP ideal-int pkg syscall (freebsd-arm-cgo), const CTL_MAXNAME ideal-int pkg syscall (freebsd-arm-cgo), const CTL_NET ideal-int pkg syscall (freebsd-arm-cgo), const DLT_A429 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_A653_ICM ideal-int pkg syscall (freebsd-arm-cgo), const DLT_AIRONET_HEADER ideal-int pkg syscall (freebsd-arm-cgo), const DLT_AOS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_ARCNET ideal-int pkg syscall (freebsd-arm-cgo), const DLT_ARCNET_LINUX ideal-int pkg syscall (freebsd-arm-cgo), const DLT_ATM_CLIP ideal-int pkg syscall (freebsd-arm-cgo), const DLT_ATM_RFC1483 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_AURORA ideal-int pkg syscall (freebsd-arm-cgo), const DLT_AX25 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_AX25_KISS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_BACNET_MS_TP ideal-int pkg syscall (freebsd-arm-cgo), const DLT_BLUETOOTH_HCI_H4 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int pkg syscall (freebsd-arm-cgo), const DLT_CAN20B ideal-int pkg syscall (freebsd-arm-cgo), const DLT_CAN_SOCKETCAN ideal-int pkg syscall (freebsd-arm-cgo), const DLT_CHAOS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_CHDLC ideal-int pkg syscall (freebsd-arm-cgo), const DLT_CISCO_IOS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_C_HDLC ideal-int pkg syscall (freebsd-arm-cgo), const DLT_C_HDLC_WITH_DIR ideal-int pkg syscall (freebsd-arm-cgo), const DLT_DBUS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_DECT ideal-int pkg syscall (freebsd-arm-cgo), const DLT_DOCSIS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_DVB_CI ideal-int pkg syscall (freebsd-arm-cgo), const DLT_ECONET ideal-int pkg syscall (freebsd-arm-cgo), const DLT_EN10MB ideal-int pkg syscall (freebsd-arm-cgo), const DLT_EN3MB ideal-int pkg syscall (freebsd-arm-cgo), const DLT_ENC ideal-int pkg syscall (freebsd-arm-cgo), const DLT_ERF ideal-int pkg syscall (freebsd-arm-cgo), const DLT_ERF_ETH ideal-int pkg syscall (freebsd-arm-cgo), const DLT_ERF_POS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_FC_2 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_FDDI ideal-int pkg syscall (freebsd-arm-cgo), const DLT_FLEXRAY ideal-int pkg syscall (freebsd-arm-cgo), const DLT_FRELAY ideal-int pkg syscall (freebsd-arm-cgo), const DLT_FRELAY_WITH_DIR ideal-int pkg syscall (freebsd-arm-cgo), const DLT_GCOM_SERIAL ideal-int pkg syscall (freebsd-arm-cgo), const DLT_GCOM_T1E1 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_GPF_F ideal-int pkg syscall (freebsd-arm-cgo), const DLT_GPF_T ideal-int pkg syscall (freebsd-arm-cgo), const DLT_GPRS_LLC ideal-int pkg syscall (freebsd-arm-cgo), const DLT_GSMTAP_ABIS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_GSMTAP_UM ideal-int pkg syscall (freebsd-arm-cgo), const DLT_HHDLC ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IBM_SN ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IBM_SP ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IEEE802 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_11 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_15_4 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_15_4_LINUX ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_15_4_NOFCS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_15_4_NONASK_PHY ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_16_MAC_CPS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IPFILTER ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IPMB ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IPMB_LINUX ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IPNET ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IPOIB ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IPV4 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IPV6 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_IP_OVER_FC ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_ATM1 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_ATM2 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_ATM_CEMIC ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_CHDLC ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_ES ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_ETHER ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_FIBRECHANNEL ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_FRELAY ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_GGSN ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_ISM ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_MFR ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_MLFR ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_MLPPP ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_MONITOR ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_PIC_PEER ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_PPP ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_PPPOE ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_PPPOE_ATM ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_SERVICES ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_SRX_E2E ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_ST ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_VP ideal-int pkg syscall (freebsd-arm-cgo), const DLT_JUNIPER_VS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_LAPB_WITH_DIR ideal-int pkg syscall (freebsd-arm-cgo), const DLT_LAPD ideal-int pkg syscall (freebsd-arm-cgo), const DLT_LIN ideal-int pkg syscall (freebsd-arm-cgo), const DLT_LINUX_EVDEV ideal-int pkg syscall (freebsd-arm-cgo), const DLT_LINUX_IRDA ideal-int pkg syscall (freebsd-arm-cgo), const DLT_LINUX_LAPD ideal-int pkg syscall (freebsd-arm-cgo), const DLT_LINUX_PPP_WITHDIRECTION ideal-int pkg syscall (freebsd-arm-cgo), const DLT_LINUX_SLL ideal-int pkg syscall (freebsd-arm-cgo), const DLT_LOOP ideal-int pkg syscall (freebsd-arm-cgo), const DLT_LTALK ideal-int pkg syscall (freebsd-arm-cgo), const DLT_MATCHING_MAX ideal-int pkg syscall (freebsd-arm-cgo), const DLT_MATCHING_MIN ideal-int pkg syscall (freebsd-arm-cgo), const DLT_MFR ideal-int pkg syscall (freebsd-arm-cgo), const DLT_MOST ideal-int pkg syscall (freebsd-arm-cgo), const DLT_MPEG_2_TS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_MPLS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_MTP2 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_MTP2_WITH_PHDR ideal-int pkg syscall (freebsd-arm-cgo), const DLT_MTP3 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_MUX27010 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_NETANALYZER ideal-int pkg syscall (freebsd-arm-cgo), const DLT_NETANALYZER_TRANSPARENT ideal-int pkg syscall (freebsd-arm-cgo), const DLT_NFC_LLCP ideal-int pkg syscall (freebsd-arm-cgo), const DLT_NFLOG ideal-int pkg syscall (freebsd-arm-cgo), const DLT_NG40 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_NULL ideal-int pkg syscall (freebsd-arm-cgo), const DLT_PCI_EXP ideal-int pkg syscall (freebsd-arm-cgo), const DLT_PFLOG ideal-int pkg syscall (freebsd-arm-cgo), const DLT_PFSYNC ideal-int pkg syscall (freebsd-arm-cgo), const DLT_PPI ideal-int pkg syscall (freebsd-arm-cgo), const DLT_PPP ideal-int pkg syscall (freebsd-arm-cgo), const DLT_PPP_BSDOS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_PPP_ETHER ideal-int pkg syscall (freebsd-arm-cgo), const DLT_PPP_PPPD ideal-int pkg syscall (freebsd-arm-cgo), const DLT_PPP_SERIAL ideal-int pkg syscall (freebsd-arm-cgo), const DLT_PPP_WITH_DIR ideal-int pkg syscall (freebsd-arm-cgo), const DLT_PPP_WITH_DIRECTION ideal-int pkg syscall (freebsd-arm-cgo), const DLT_PRISM_HEADER ideal-int pkg syscall (freebsd-arm-cgo), const DLT_PRONET ideal-int pkg syscall (freebsd-arm-cgo), const DLT_RAIF1 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_RAW ideal-int pkg syscall (freebsd-arm-cgo), const DLT_RIO ideal-int pkg syscall (freebsd-arm-cgo), const DLT_SCCP ideal-int pkg syscall (freebsd-arm-cgo), const DLT_SITA ideal-int pkg syscall (freebsd-arm-cgo), const DLT_SLIP ideal-int pkg syscall (freebsd-arm-cgo), const DLT_SLIP_BSDOS ideal-int pkg syscall (freebsd-arm-cgo), const DLT_STANAG_5066_D_PDU ideal-int pkg syscall (freebsd-arm-cgo), const DLT_SUNATM ideal-int pkg syscall (freebsd-arm-cgo), const DLT_SYMANTEC_FIREWALL ideal-int pkg syscall (freebsd-arm-cgo), const DLT_TZSP ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USB ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USB_LINUX ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USB_LINUX_MMAPPED ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER0 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER1 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER10 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER11 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER12 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER13 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER14 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER15 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER2 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER3 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER4 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER5 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER6 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER7 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER8 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_USER9 ideal-int pkg syscall (freebsd-arm-cgo), const DLT_WIHART ideal-int pkg syscall (freebsd-arm-cgo), const DLT_X2E_SERIAL ideal-int pkg syscall (freebsd-arm-cgo), const DLT_X2E_XORAYA ideal-int pkg syscall (freebsd-arm-cgo), const DT_BLK ideal-int pkg syscall (freebsd-arm-cgo), const DT_CHR ideal-int pkg syscall (freebsd-arm-cgo), const DT_DIR ideal-int pkg syscall (freebsd-arm-cgo), const DT_FIFO ideal-int pkg syscall (freebsd-arm-cgo), const DT_LNK ideal-int pkg syscall (freebsd-arm-cgo), const DT_REG ideal-int pkg syscall (freebsd-arm-cgo), const DT_SOCK ideal-int pkg syscall (freebsd-arm-cgo), const DT_UNKNOWN ideal-int pkg syscall (freebsd-arm-cgo), const DT_WHT ideal-int pkg syscall (freebsd-arm-cgo), const EAUTH Errno pkg syscall (freebsd-arm-cgo), const EBADMSG Errno pkg syscall (freebsd-arm-cgo), const EBADRPC Errno pkg syscall (freebsd-arm-cgo), const ECAPMODE Errno pkg syscall (freebsd-arm-cgo), const ECHO ideal-int pkg syscall (freebsd-arm-cgo), const ECHOCTL ideal-int pkg syscall (freebsd-arm-cgo), const ECHOE ideal-int pkg syscall (freebsd-arm-cgo), const ECHOK ideal-int pkg syscall (freebsd-arm-cgo), const ECHOKE ideal-int pkg syscall (freebsd-arm-cgo), const ECHONL ideal-int pkg syscall (freebsd-arm-cgo), const ECHOPRT ideal-int pkg syscall (freebsd-arm-cgo), const EDOOFUS Errno pkg syscall (freebsd-arm-cgo), const EFTYPE Errno pkg syscall (freebsd-arm-cgo), const ELAST Errno pkg syscall (freebsd-arm-cgo), const EMULTIHOP Errno pkg syscall (freebsd-arm-cgo), const ENEEDAUTH Errno pkg syscall (freebsd-arm-cgo), const ENOATTR Errno pkg syscall (freebsd-arm-cgo), const ENOLINK Errno pkg syscall (freebsd-arm-cgo), const ENOTCAPABLE Errno pkg syscall (freebsd-arm-cgo), const EPROCLIM Errno pkg syscall (freebsd-arm-cgo), const EPROCUNAVAIL Errno pkg syscall (freebsd-arm-cgo), const EPROGMISMATCH Errno pkg syscall (freebsd-arm-cgo), const EPROGUNAVAIL Errno pkg syscall (freebsd-arm-cgo), const EPROTO Errno pkg syscall (freebsd-arm-cgo), const ERPCMISMATCH Errno pkg syscall (freebsd-arm-cgo), const EVFILT_AIO ideal-int pkg syscall (freebsd-arm-cgo), const EVFILT_FS ideal-int pkg syscall (freebsd-arm-cgo), const EVFILT_LIO ideal-int pkg syscall (freebsd-arm-cgo), const EVFILT_PROC ideal-int pkg syscall (freebsd-arm-cgo), const EVFILT_READ ideal-int pkg syscall (freebsd-arm-cgo), const EVFILT_SIGNAL ideal-int pkg syscall (freebsd-arm-cgo), const EVFILT_SYSCOUNT ideal-int pkg syscall (freebsd-arm-cgo), const EVFILT_TIMER ideal-int pkg syscall (freebsd-arm-cgo), const EVFILT_USER ideal-int pkg syscall (freebsd-arm-cgo), const EVFILT_VNODE ideal-int pkg syscall (freebsd-arm-cgo), const EVFILT_WRITE ideal-int pkg syscall (freebsd-arm-cgo), const EV_ADD ideal-int pkg syscall (freebsd-arm-cgo), const EV_CLEAR ideal-int pkg syscall (freebsd-arm-cgo), const EV_DELETE ideal-int pkg syscall (freebsd-arm-cgo), const EV_DISABLE ideal-int pkg syscall (freebsd-arm-cgo), const EV_DISPATCH ideal-int pkg syscall (freebsd-arm-cgo), const EV_ENABLE ideal-int pkg syscall (freebsd-arm-cgo), const EV_EOF ideal-int pkg syscall (freebsd-arm-cgo), const EV_ERROR ideal-int pkg syscall (freebsd-arm-cgo), const EV_FLAG1 ideal-int pkg syscall (freebsd-arm-cgo), const EV_ONESHOT ideal-int pkg syscall (freebsd-arm-cgo), const EV_RECEIPT ideal-int pkg syscall (freebsd-arm-cgo), const EV_SYSFLAGS ideal-int pkg syscall (freebsd-arm-cgo), const EXTA ideal-int pkg syscall (freebsd-arm-cgo), const EXTB ideal-int pkg syscall (freebsd-arm-cgo), const EXTPROC ideal-int pkg syscall (freebsd-arm-cgo), const FD_CLOEXEC ideal-int pkg syscall (freebsd-arm-cgo), const FD_SETSIZE ideal-int pkg syscall (freebsd-arm-cgo), const FLUSHO ideal-int pkg syscall (freebsd-arm-cgo), const F_CANCEL ideal-int pkg syscall (freebsd-arm-cgo), const F_DUP2FD ideal-int pkg syscall (freebsd-arm-cgo), const F_DUP2FD_CLOEXEC ideal-int pkg syscall (freebsd-arm-cgo), const F_DUPFD ideal-int pkg syscall (freebsd-arm-cgo), const F_DUPFD_CLOEXEC ideal-int pkg syscall (freebsd-arm-cgo), const F_GETFD ideal-int pkg syscall (freebsd-arm-cgo), const F_GETFL ideal-int pkg syscall (freebsd-arm-cgo), const F_GETLK ideal-int pkg syscall (freebsd-arm-cgo), const F_GETOWN ideal-int pkg syscall (freebsd-arm-cgo), const F_OGETLK ideal-int pkg syscall (freebsd-arm-cgo), const F_OK ideal-int pkg syscall (freebsd-arm-cgo), const F_OSETLK ideal-int pkg syscall (freebsd-arm-cgo), const F_OSETLKW ideal-int pkg syscall (freebsd-arm-cgo), const F_RDAHEAD ideal-int pkg syscall (freebsd-arm-cgo), const F_RDLCK ideal-int pkg syscall (freebsd-arm-cgo), const F_READAHEAD ideal-int pkg syscall (freebsd-arm-cgo), const F_SETFD ideal-int pkg syscall (freebsd-arm-cgo), const F_SETFL ideal-int pkg syscall (freebsd-arm-cgo), const F_SETLK ideal-int pkg syscall (freebsd-arm-cgo), const F_SETLKW ideal-int pkg syscall (freebsd-arm-cgo), const F_SETLK_REMOTE ideal-int pkg syscall (freebsd-arm-cgo), const F_SETOWN ideal-int pkg syscall (freebsd-arm-cgo), const F_UNLCK ideal-int pkg syscall (freebsd-arm-cgo), const F_UNLCKSYS ideal-int pkg syscall (freebsd-arm-cgo), const F_WRLCK ideal-int pkg syscall (freebsd-arm-cgo), const HUPCL ideal-int pkg syscall (freebsd-arm-cgo), const ICANON ideal-int pkg syscall (freebsd-arm-cgo), const ICMP6_FILTER = 18 pkg syscall (freebsd-arm-cgo), const ICMP6_FILTER ideal-int pkg syscall (freebsd-arm-cgo), const ICRNL ideal-int pkg syscall (freebsd-arm-cgo), const IEXTEN ideal-int pkg syscall (freebsd-arm-cgo), const IFAN_ARRIVAL ideal-int pkg syscall (freebsd-arm-cgo), const IFAN_DEPARTURE ideal-int pkg syscall (freebsd-arm-cgo), const IFF_ALLMULTI ideal-int pkg syscall (freebsd-arm-cgo), const IFF_ALTPHYS ideal-int pkg syscall (freebsd-arm-cgo), const IFF_CANTCHANGE ideal-int pkg syscall (freebsd-arm-cgo), const IFF_CANTCONFIG ideal-int pkg syscall (freebsd-arm-cgo), const IFF_DEBUG ideal-int pkg syscall (freebsd-arm-cgo), const IFF_DRV_OACTIVE ideal-int pkg syscall (freebsd-arm-cgo), const IFF_DRV_RUNNING ideal-int pkg syscall (freebsd-arm-cgo), const IFF_DYING ideal-int pkg syscall (freebsd-arm-cgo), const IFF_LINK0 ideal-int pkg syscall (freebsd-arm-cgo), const IFF_LINK1 ideal-int pkg syscall (freebsd-arm-cgo), const IFF_LINK2 ideal-int pkg syscall (freebsd-arm-cgo), const IFF_MONITOR ideal-int pkg syscall (freebsd-arm-cgo), const IFF_NOARP ideal-int pkg syscall (freebsd-arm-cgo), const IFF_OACTIVE ideal-int pkg syscall (freebsd-arm-cgo), const IFF_POINTOPOINT ideal-int pkg syscall (freebsd-arm-cgo), const IFF_PPROMISC ideal-int pkg syscall (freebsd-arm-cgo), const IFF_PROMISC ideal-int pkg syscall (freebsd-arm-cgo), const IFF_RENAMING ideal-int pkg syscall (freebsd-arm-cgo), const IFF_RUNNING ideal-int pkg syscall (freebsd-arm-cgo), const IFF_SIMPLEX ideal-int pkg syscall (freebsd-arm-cgo), const IFF_SMART ideal-int pkg syscall (freebsd-arm-cgo), const IFF_STATICARP ideal-int pkg syscall (freebsd-arm-cgo), const IFNAMSIZ ideal-int pkg syscall (freebsd-arm-cgo), const IFT_1822 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_A12MPPSWITCH ideal-int pkg syscall (freebsd-arm-cgo), const IFT_AAL2 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_AAL5 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ADSL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_AFLANE8023 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_AFLANE8025 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ARAP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ARCNET ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ARCNETPLUS ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ASYNC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ATM ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ATMDXI ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ATMFUNI ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ATMIMA ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ATMLOGICAL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ATMRADIO ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ATMVCIENDPT ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ATMVIRTUAL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (freebsd-arm-cgo), const IFT_BRIDGE ideal-int pkg syscall (freebsd-arm-cgo), const IFT_BSC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_CCTEMUL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_CEPT ideal-int pkg syscall (freebsd-arm-cgo), const IFT_CES ideal-int pkg syscall (freebsd-arm-cgo), const IFT_CHANNEL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_CNR ideal-int pkg syscall (freebsd-arm-cgo), const IFT_COFFEE ideal-int pkg syscall (freebsd-arm-cgo), const IFT_COMPOSITELINK ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DCN ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DLSW ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DS0 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DS0BUNDLE ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DS1FDL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DS3 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DTM ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DVBASILN ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DVBASIOUT ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (freebsd-arm-cgo), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ENC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_EON ideal-int pkg syscall (freebsd-arm-cgo), const IFT_EPLRS ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ESCON ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ETHER ideal-int pkg syscall (freebsd-arm-cgo), const IFT_FAITH ideal-int pkg syscall (freebsd-arm-cgo), const IFT_FAST ideal-int pkg syscall (freebsd-arm-cgo), const IFT_FASTETHER ideal-int pkg syscall (freebsd-arm-cgo), const IFT_FASTETHERFX ideal-int pkg syscall (freebsd-arm-cgo), const IFT_FDDI ideal-int pkg syscall (freebsd-arm-cgo), const IFT_FIBRECHANNEL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (freebsd-arm-cgo), const IFT_FRAMERELAYMPI ideal-int pkg syscall (freebsd-arm-cgo), const IFT_FRDLCIENDPT ideal-int pkg syscall (freebsd-arm-cgo), const IFT_FRELAY ideal-int pkg syscall (freebsd-arm-cgo), const IFT_FRELAYDCE ideal-int pkg syscall (freebsd-arm-cgo), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (freebsd-arm-cgo), const IFT_FRFORWARD ideal-int pkg syscall (freebsd-arm-cgo), const IFT_G703AT2MB ideal-int pkg syscall (freebsd-arm-cgo), const IFT_G703AT64K ideal-int pkg syscall (freebsd-arm-cgo), const IFT_GIF ideal-int pkg syscall (freebsd-arm-cgo), const IFT_GIGABITETHERNET ideal-int pkg syscall (freebsd-arm-cgo), const IFT_GR303IDT ideal-int pkg syscall (freebsd-arm-cgo), const IFT_GR303RDT ideal-int pkg syscall (freebsd-arm-cgo), const IFT_H323GATEKEEPER ideal-int pkg syscall (freebsd-arm-cgo), const IFT_H323PROXY ideal-int pkg syscall (freebsd-arm-cgo), const IFT_HDH1822 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_HDLC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_HDSL2 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_HIPERLAN2 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_HIPPI ideal-int pkg syscall (freebsd-arm-cgo), const IFT_HIPPIINTERFACE ideal-int pkg syscall (freebsd-arm-cgo), const IFT_HOSTPAD ideal-int pkg syscall (freebsd-arm-cgo), const IFT_HSSI ideal-int pkg syscall (freebsd-arm-cgo), const IFT_HY ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IBM370PARCHAN ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IDSL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IEEE1394 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IEEE80211 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IEEE80212 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IEEE8023ADLAG ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IFGSN ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IMT ideal-int pkg syscall (freebsd-arm-cgo), const IFT_INFINIBAND ideal-int pkg syscall (freebsd-arm-cgo), const IFT_INTERLEAVE ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IPFORWARD ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IPOVERATM ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IPOVERCDLC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IPOVERCLAW ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IPSWITCH ideal-int pkg syscall (freebsd-arm-cgo), const IFT_IPXIP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ISDN ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ISDNBASIC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ISDNPRIMARY ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ISDNS ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ISDNU ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ISO88022LLC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ISO88023 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ISO88024 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ISO88025 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ISO88025CRFPINT ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ISO88025DTR ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ISO88025FIBER ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ISO88026 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ISUP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_L2VLAN ideal-int pkg syscall (freebsd-arm-cgo), const IFT_L3IPVLAN ideal-int pkg syscall (freebsd-arm-cgo), const IFT_L3IPXVLAN ideal-int pkg syscall (freebsd-arm-cgo), const IFT_LAPB ideal-int pkg syscall (freebsd-arm-cgo), const IFT_LAPD ideal-int pkg syscall (freebsd-arm-cgo), const IFT_LAPF ideal-int pkg syscall (freebsd-arm-cgo), const IFT_LOCALTALK ideal-int pkg syscall (freebsd-arm-cgo), const IFT_LOOP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_MFSIGLINK ideal-int pkg syscall (freebsd-arm-cgo), const IFT_MIOX25 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_MODEM ideal-int pkg syscall (freebsd-arm-cgo), const IFT_MPC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_MPLS ideal-int pkg syscall (freebsd-arm-cgo), const IFT_MPLSTUNNEL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_MSDSL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_MVL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_MYRINET ideal-int pkg syscall (freebsd-arm-cgo), const IFT_NFAS ideal-int pkg syscall (freebsd-arm-cgo), const IFT_NSIP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_OPTICALCHANNEL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (freebsd-arm-cgo), const IFT_OTHER ideal-int pkg syscall (freebsd-arm-cgo), const IFT_P10 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_P80 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PARA ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PFLOG ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PFSYNC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PLC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_POS ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PPP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PROPBWAP2MP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PROPCNLS ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PROPMUX ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PROPVIRTUAL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PTPSERIAL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_PVC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_QLLC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_RADIOMAC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_RADSL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_REACHDSL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_RFC1483 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_RS232 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_RSRB ideal-int pkg syscall (freebsd-arm-cgo), const IFT_SDLC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_SDSL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_SHDSL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_SIP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_SLIP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_SMDSDXI ideal-int pkg syscall (freebsd-arm-cgo), const IFT_SMDSICIP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_SONET ideal-int pkg syscall (freebsd-arm-cgo), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_SONETPATH ideal-int pkg syscall (freebsd-arm-cgo), const IFT_SONETVT ideal-int pkg syscall (freebsd-arm-cgo), const IFT_SRP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_SS7SIGLINK ideal-int pkg syscall (freebsd-arm-cgo), const IFT_STACKTOSTACK ideal-int pkg syscall (freebsd-arm-cgo), const IFT_STARLAN ideal-int pkg syscall (freebsd-arm-cgo), const IFT_STF ideal-int pkg syscall (freebsd-arm-cgo), const IFT_T1 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_TDLC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_TERMPAD ideal-int pkg syscall (freebsd-arm-cgo), const IFT_TR008 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_TRANSPHDLC ideal-int pkg syscall (freebsd-arm-cgo), const IFT_TUNNEL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_ULTRA ideal-int pkg syscall (freebsd-arm-cgo), const IFT_USB ideal-int pkg syscall (freebsd-arm-cgo), const IFT_V11 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_V35 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_V36 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_V37 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_VDSL ideal-int pkg syscall (freebsd-arm-cgo), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (freebsd-arm-cgo), const IFT_VOICEEM ideal-int pkg syscall (freebsd-arm-cgo), const IFT_VOICEENCAP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_VOICEFXO ideal-int pkg syscall (freebsd-arm-cgo), const IFT_VOICEFXS ideal-int pkg syscall (freebsd-arm-cgo), const IFT_VOICEOVERATM ideal-int pkg syscall (freebsd-arm-cgo), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (freebsd-arm-cgo), const IFT_VOICEOVERIP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_X213 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_X25 ideal-int pkg syscall (freebsd-arm-cgo), const IFT_X25DDN ideal-int pkg syscall (freebsd-arm-cgo), const IFT_X25HUNTGROUP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_X25MLP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_X25PLE ideal-int pkg syscall (freebsd-arm-cgo), const IFT_XETHER ideal-int pkg syscall (freebsd-arm-cgo), const IGNBRK ideal-int pkg syscall (freebsd-arm-cgo), const IGNCR ideal-int pkg syscall (freebsd-arm-cgo), const IGNPAR ideal-int pkg syscall (freebsd-arm-cgo), const IMAXBEL ideal-int pkg syscall (freebsd-arm-cgo), const INLCR ideal-int pkg syscall (freebsd-arm-cgo), const INPCK ideal-int pkg syscall (freebsd-arm-cgo), const IN_CLASSA_HOST ideal-int pkg syscall (freebsd-arm-cgo), const IN_CLASSA_MAX ideal-int pkg syscall (freebsd-arm-cgo), const IN_CLASSA_NET ideal-int pkg syscall (freebsd-arm-cgo), const IN_CLASSA_NSHIFT ideal-int pkg syscall (freebsd-arm-cgo), const IN_CLASSB_HOST ideal-int pkg syscall (freebsd-arm-cgo), const IN_CLASSB_MAX ideal-int pkg syscall (freebsd-arm-cgo), const IN_CLASSB_NET ideal-int pkg syscall (freebsd-arm-cgo), const IN_CLASSB_NSHIFT ideal-int pkg syscall (freebsd-arm-cgo), const IN_CLASSC_HOST ideal-int pkg syscall (freebsd-arm-cgo), const IN_CLASSC_NET ideal-int pkg syscall (freebsd-arm-cgo), const IN_CLASSC_NSHIFT ideal-int pkg syscall (freebsd-arm-cgo), const IN_CLASSD_HOST ideal-int pkg syscall (freebsd-arm-cgo), const IN_CLASSD_NET ideal-int pkg syscall (freebsd-arm-cgo), const IN_CLASSD_NSHIFT ideal-int pkg syscall (freebsd-arm-cgo), const IN_LOOPBACKNET ideal-int pkg syscall (freebsd-arm-cgo), const IN_RFC3021_MASK ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_3PC ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_ADFS ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_AH ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_AHIP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_APES ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_ARGUS ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_AX25 ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_BHA ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_BLT ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_BRSATMON ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_CARP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_CFTP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_CHAOS ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_CMTP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_CPHB ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_CPNX ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_DDP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_DGP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_DIVERT ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_DONE ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_DSTOPTS ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_EGP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_EMCON ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_ENCAP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_EON ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_ESP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_ETHERIP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_FRAGMENT ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_GGP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_GMTP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_GRE ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_HELLO ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_HMP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_HOPOPTS ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_ICMP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_ICMPV6 ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_IDP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_IDPR ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_IDRP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_IGMP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_IGP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_IGRP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_IL ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_INLSP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_INP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_IPCOMP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_IPCV ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_IPEIP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_IPIP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_IPPC ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_IPV4 ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_IRTP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_KRYPTOLAN ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_LARP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_LEAF1 ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_LEAF2 ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_MAX ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_MAXID ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_MEAS ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_MH ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_MHRP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_MICP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_MOBILE ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_MPLS ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_MTP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_MUX ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_ND ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_NHRP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_NONE ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_NSP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_NVPII ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_OLD_DIVERT ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_OSPFIGP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_PFSYNC ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_PGM ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_PIGP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_PIM ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_PRM ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_PUP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_PVP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_RAW ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_RCCMON ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_RDP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_ROUTING ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_RSVP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_RVD ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_SATEXPAK ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_SATMON ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_SCCSP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_SCTP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_SDRP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_SEND ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_SEP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_SKIP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_SPACER ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_SRPC ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_ST ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_SVMTP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_SWIPE ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_TCF ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_TLSP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_TP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_TPXX ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_TRUNK1 ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_TRUNK2 ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_TTP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_VINES ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_VISA ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_VMTP ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_WBEXPAK ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_WBMON ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_WSN ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_XNET ideal-int pkg syscall (freebsd-arm-cgo), const IPPROTO_XTP ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_AUTOFLOWLABEL ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_BINDANY ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_BINDV6ONLY ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_CHECKSUM ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_DEFHLIM ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_DONTFRAG ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_DSTOPTS ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_FAITH ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_FRAGTTL ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_FW_ADD ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_FW_DEL ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_FW_FLUSH ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_FW_GET ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_FW_ZERO ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_HLIMDEC ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_HOPLIMIT ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_HOPOPTS ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_IPSEC_POLICY ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_MAXHLIM ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_MAXOPTHDR ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_MAXPACKET ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_MAX_MEMBERSHIPS ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_MIN_MEMBERSHIPS ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_MMTU ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_MSFILTER ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_NEXTHOP ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_PATHMTU ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_PKTINFO ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_PORTRANGE ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_PREFER_TEMPADDR ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_RECVDSTOPTS ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_RECVHOPOPTS ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_RECVPATHMTU ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_RECVPKTINFO ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_RECVRTHDR ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_RECVTCLASS ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_RTHDR ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_RTHDR_STRICT ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_TCLASS ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_USE_MIN_MTU ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_VERSION ideal-int pkg syscall (freebsd-arm-cgo), const IPV6_VERSION_MASK ideal-int pkg syscall (freebsd-arm-cgo), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (freebsd-arm-cgo), const IP_BINDANY ideal-int pkg syscall (freebsd-arm-cgo), const IP_BLOCK_SOURCE ideal-int pkg syscall (freebsd-arm-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (freebsd-arm-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (freebsd-arm-cgo), const IP_DF ideal-int pkg syscall (freebsd-arm-cgo), const IP_DONTFRAG ideal-int pkg syscall (freebsd-arm-cgo), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (freebsd-arm-cgo), const IP_DUMMYNET3 ideal-int pkg syscall (freebsd-arm-cgo), const IP_DUMMYNET_CONFIGURE ideal-int pkg syscall (freebsd-arm-cgo), const IP_DUMMYNET_DEL ideal-int pkg syscall (freebsd-arm-cgo), const IP_DUMMYNET_FLUSH ideal-int pkg syscall (freebsd-arm-cgo), const IP_DUMMYNET_GET ideal-int pkg syscall (freebsd-arm-cgo), const IP_FAITH ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW3 ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_ADD ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_DEL ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_FLUSH ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_GET ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_NAT_CFG ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_NAT_DEL ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_NAT_GET_CONFIG ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_NAT_GET_LOG ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_RESETLOG ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_TABLE_ADD ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_TABLE_DEL ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_TABLE_FLUSH ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_TABLE_GETSIZE ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_TABLE_LIST ideal-int pkg syscall (freebsd-arm-cgo), const IP_FW_ZERO ideal-int pkg syscall (freebsd-arm-cgo), const IP_HDRINCL ideal-int pkg syscall (freebsd-arm-cgo), const IP_IPSEC_POLICY ideal-int pkg syscall (freebsd-arm-cgo), const IP_MAXPACKET ideal-int pkg syscall (freebsd-arm-cgo), const IP_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (freebsd-arm-cgo), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (freebsd-arm-cgo), const IP_MAX_SOCK_MUTE_FILTER ideal-int pkg syscall (freebsd-arm-cgo), const IP_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (freebsd-arm-cgo), const IP_MAX_SOURCE_FILTER ideal-int pkg syscall (freebsd-arm-cgo), const IP_MF ideal-int pkg syscall (freebsd-arm-cgo), const IP_MINTTL ideal-int pkg syscall (freebsd-arm-cgo), const IP_MIN_MEMBERSHIPS ideal-int pkg syscall (freebsd-arm-cgo), const IP_MSFILTER ideal-int pkg syscall (freebsd-arm-cgo), const IP_MSS ideal-int pkg syscall (freebsd-arm-cgo), const IP_MULTICAST_VIF ideal-int pkg syscall (freebsd-arm-cgo), const IP_OFFMASK ideal-int pkg syscall (freebsd-arm-cgo), const IP_ONESBCAST ideal-int pkg syscall (freebsd-arm-cgo), const IP_OPTIONS ideal-int pkg syscall (freebsd-arm-cgo), const IP_PORTRANGE ideal-int pkg syscall (freebsd-arm-cgo), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (freebsd-arm-cgo), const IP_PORTRANGE_HIGH ideal-int pkg syscall (freebsd-arm-cgo), const IP_PORTRANGE_LOW ideal-int pkg syscall (freebsd-arm-cgo), const IP_RECVDSTADDR ideal-int pkg syscall (freebsd-arm-cgo), const IP_RECVIF ideal-int pkg syscall (freebsd-arm-cgo), const IP_RECVOPTS ideal-int pkg syscall (freebsd-arm-cgo), const IP_RECVRETOPTS ideal-int pkg syscall (freebsd-arm-cgo), const IP_RECVTOS ideal-int pkg syscall (freebsd-arm-cgo), const IP_RECVTTL ideal-int pkg syscall (freebsd-arm-cgo), const IP_RETOPTS ideal-int pkg syscall (freebsd-arm-cgo), const IP_RF ideal-int pkg syscall (freebsd-arm-cgo), const IP_RSVP_OFF ideal-int pkg syscall (freebsd-arm-cgo), const IP_RSVP_ON ideal-int pkg syscall (freebsd-arm-cgo), const IP_RSVP_VIF_OFF ideal-int pkg syscall (freebsd-arm-cgo), const IP_RSVP_VIF_ON ideal-int pkg syscall (freebsd-arm-cgo), const IP_SENDSRCADDR ideal-int pkg syscall (freebsd-arm-cgo), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (freebsd-arm-cgo), const ISIG ideal-int pkg syscall (freebsd-arm-cgo), const ISTRIP ideal-int pkg syscall (freebsd-arm-cgo), const IXANY ideal-int pkg syscall (freebsd-arm-cgo), const IXOFF ideal-int pkg syscall (freebsd-arm-cgo), const IXON ideal-int pkg syscall (freebsd-arm-cgo), const LOCK_EX ideal-int pkg syscall (freebsd-arm-cgo), const LOCK_NB ideal-int pkg syscall (freebsd-arm-cgo), const LOCK_SH ideal-int pkg syscall (freebsd-arm-cgo), const LOCK_UN ideal-int pkg syscall (freebsd-arm-cgo), const MADV_AUTOSYNC ideal-int pkg syscall (freebsd-arm-cgo), const MADV_CORE ideal-int pkg syscall (freebsd-arm-cgo), const MADV_DONTNEED ideal-int pkg syscall (freebsd-arm-cgo), const MADV_FREE ideal-int pkg syscall (freebsd-arm-cgo), const MADV_NOCORE ideal-int pkg syscall (freebsd-arm-cgo), const MADV_NORMAL ideal-int pkg syscall (freebsd-arm-cgo), const MADV_NOSYNC ideal-int pkg syscall (freebsd-arm-cgo), const MADV_PROTECT ideal-int pkg syscall (freebsd-arm-cgo), const MADV_RANDOM ideal-int pkg syscall (freebsd-arm-cgo), const MADV_SEQUENTIAL ideal-int pkg syscall (freebsd-arm-cgo), const MADV_WILLNEED ideal-int pkg syscall (freebsd-arm-cgo), const MAP_ANON ideal-int pkg syscall (freebsd-arm-cgo), const MAP_ANONYMOUS ideal-int pkg syscall (freebsd-arm-cgo), const MAP_COPY ideal-int pkg syscall (freebsd-arm-cgo), const MAP_FILE ideal-int pkg syscall (freebsd-arm-cgo), const MAP_FIXED ideal-int pkg syscall (freebsd-arm-cgo), const MAP_HASSEMAPHORE ideal-int pkg syscall (freebsd-arm-cgo), const MAP_NOCORE ideal-int pkg syscall (freebsd-arm-cgo), const MAP_NORESERVE ideal-int pkg syscall (freebsd-arm-cgo), const MAP_NOSYNC ideal-int pkg syscall (freebsd-arm-cgo), const MAP_PREFAULT_READ ideal-int pkg syscall (freebsd-arm-cgo), const MAP_PRIVATE ideal-int pkg syscall (freebsd-arm-cgo), const MAP_RENAME ideal-int pkg syscall (freebsd-arm-cgo), const MAP_RESERVED0080 ideal-int pkg syscall (freebsd-arm-cgo), const MAP_RESERVED0100 ideal-int pkg syscall (freebsd-arm-cgo), const MAP_SHARED ideal-int pkg syscall (freebsd-arm-cgo), const MAP_STACK ideal-int pkg syscall (freebsd-arm-cgo), const MCL_CURRENT ideal-int pkg syscall (freebsd-arm-cgo), const MCL_FUTURE ideal-int pkg syscall (freebsd-arm-cgo), const MSG_COMPAT ideal-int pkg syscall (freebsd-arm-cgo), const MSG_CTRUNC ideal-int pkg syscall (freebsd-arm-cgo), const MSG_DONTROUTE ideal-int pkg syscall (freebsd-arm-cgo), const MSG_DONTWAIT ideal-int pkg syscall (freebsd-arm-cgo), const MSG_EOF ideal-int pkg syscall (freebsd-arm-cgo), const MSG_EOR ideal-int pkg syscall (freebsd-arm-cgo), const MSG_NBIO ideal-int pkg syscall (freebsd-arm-cgo), const MSG_NOSIGNAL ideal-int pkg syscall (freebsd-arm-cgo), const MSG_NOTIFICATION ideal-int pkg syscall (freebsd-arm-cgo), const MSG_OOB ideal-int pkg syscall (freebsd-arm-cgo), const MSG_PEEK ideal-int pkg syscall (freebsd-arm-cgo), const MSG_TRUNC ideal-int pkg syscall (freebsd-arm-cgo), const MSG_WAITALL ideal-int pkg syscall (freebsd-arm-cgo), const MS_ASYNC ideal-int pkg syscall (freebsd-arm-cgo), const MS_INVALIDATE ideal-int pkg syscall (freebsd-arm-cgo), const MS_SYNC ideal-int pkg syscall (freebsd-arm-cgo), const NET_RT_DUMP ideal-int pkg syscall (freebsd-arm-cgo), const NET_RT_FLAGS ideal-int pkg syscall (freebsd-arm-cgo), const NET_RT_IFLIST ideal-int pkg syscall (freebsd-arm-cgo), const NET_RT_IFLISTL ideal-int pkg syscall (freebsd-arm-cgo), const NET_RT_IFMALIST ideal-int pkg syscall (freebsd-arm-cgo), const NET_RT_MAXID ideal-int pkg syscall (freebsd-arm-cgo), const NOFLSH ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_ATTRIB ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_CHILD ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_DELETE ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_EXEC ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_EXIT ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_EXTEND ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_FFAND ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_FFCOPY ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_FFCTRLMASK ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_FFLAGSMASK ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_FFNOP ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_FFOR ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_FORK ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_LINK ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_LOWAT ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_PCTRLMASK ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_PDATAMASK ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_RENAME ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_REVOKE ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_TRACK ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_TRACKERR ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_TRIGGER ideal-int pkg syscall (freebsd-arm-cgo), const NOTE_WRITE ideal-int pkg syscall (freebsd-arm-cgo), const OCRNL ideal-int pkg syscall (freebsd-arm-cgo), const ONLCR ideal-int pkg syscall (freebsd-arm-cgo), const ONLRET ideal-int pkg syscall (freebsd-arm-cgo), const ONOCR ideal-int pkg syscall (freebsd-arm-cgo), const ONOEOT ideal-int pkg syscall (freebsd-arm-cgo), const OPOST ideal-int pkg syscall (freebsd-arm-cgo), const O_ACCMODE ideal-int pkg syscall (freebsd-arm-cgo), const O_DIRECT ideal-int pkg syscall (freebsd-arm-cgo), const O_DIRECTORY ideal-int pkg syscall (freebsd-arm-cgo), const O_EXEC ideal-int pkg syscall (freebsd-arm-cgo), const O_EXLOCK ideal-int pkg syscall (freebsd-arm-cgo), const O_FSYNC ideal-int pkg syscall (freebsd-arm-cgo), const O_NDELAY ideal-int pkg syscall (freebsd-arm-cgo), const O_NOFOLLOW ideal-int pkg syscall (freebsd-arm-cgo), const O_SHLOCK ideal-int pkg syscall (freebsd-arm-cgo), const O_TTY_INIT ideal-int pkg syscall (freebsd-arm-cgo), const PARENB ideal-int pkg syscall (freebsd-arm-cgo), const PARMRK ideal-int pkg syscall (freebsd-arm-cgo), const PARODD ideal-int pkg syscall (freebsd-arm-cgo), const PENDIN ideal-int pkg syscall (freebsd-arm-cgo), const PRIO_PGRP = 1 pkg syscall (freebsd-arm-cgo), const PRIO_PGRP ideal-int pkg syscall (freebsd-arm-cgo), const PRIO_PROCESS = 0 pkg syscall (freebsd-arm-cgo), const PRIO_PROCESS ideal-int pkg syscall (freebsd-arm-cgo), const PRIO_USER = 2 pkg syscall (freebsd-arm-cgo), const PRIO_USER ideal-int pkg syscall (freebsd-arm-cgo), const PROT_EXEC ideal-int pkg syscall (freebsd-arm-cgo), const PROT_NONE ideal-int pkg syscall (freebsd-arm-cgo), const PROT_READ ideal-int pkg syscall (freebsd-arm-cgo), const PROT_WRITE ideal-int pkg syscall (freebsd-arm-cgo), const PTRACE_CONT ideal-int pkg syscall (freebsd-arm-cgo), const PTRACE_KILL ideal-int pkg syscall (freebsd-arm-cgo), const PTRACE_TRACEME ideal-int pkg syscall (freebsd-arm-cgo), const RLIMIT_AS ideal-int pkg syscall (freebsd-arm-cgo), const RLIMIT_CORE ideal-int pkg syscall (freebsd-arm-cgo), const RLIMIT_CPU ideal-int pkg syscall (freebsd-arm-cgo), const RLIMIT_DATA ideal-int pkg syscall (freebsd-arm-cgo), const RLIMIT_FSIZE ideal-int pkg syscall (freebsd-arm-cgo), const RLIMIT_NOFILE ideal-int pkg syscall (freebsd-arm-cgo), const RLIMIT_STACK ideal-int pkg syscall (freebsd-arm-cgo), const RLIM_INFINITY ideal-int pkg syscall (freebsd-arm-cgo), const RTAX_AUTHOR ideal-int pkg syscall (freebsd-arm-cgo), const RTAX_BRD ideal-int pkg syscall (freebsd-arm-cgo), const RTAX_DST ideal-int pkg syscall (freebsd-arm-cgo), const RTAX_GATEWAY ideal-int pkg syscall (freebsd-arm-cgo), const RTAX_GENMASK ideal-int pkg syscall (freebsd-arm-cgo), const RTAX_IFA ideal-int pkg syscall (freebsd-arm-cgo), const RTAX_IFP ideal-int pkg syscall (freebsd-arm-cgo), const RTAX_MAX ideal-int pkg syscall (freebsd-arm-cgo), const RTAX_NETMASK ideal-int pkg syscall (freebsd-arm-cgo), const RTA_AUTHOR ideal-int pkg syscall (freebsd-arm-cgo), const RTA_BRD ideal-int pkg syscall (freebsd-arm-cgo), const RTA_DST ideal-int pkg syscall (freebsd-arm-cgo), const RTA_GATEWAY ideal-int pkg syscall (freebsd-arm-cgo), const RTA_GENMASK ideal-int pkg syscall (freebsd-arm-cgo), const RTA_IFA ideal-int pkg syscall (freebsd-arm-cgo), const RTA_IFP ideal-int pkg syscall (freebsd-arm-cgo), const RTA_NETMASK ideal-int pkg syscall (freebsd-arm-cgo), const RTF_BLACKHOLE ideal-int pkg syscall (freebsd-arm-cgo), const RTF_BROADCAST ideal-int pkg syscall (freebsd-arm-cgo), const RTF_DONE ideal-int pkg syscall (freebsd-arm-cgo), const RTF_DYNAMIC ideal-int pkg syscall (freebsd-arm-cgo), const RTF_FMASK ideal-int pkg syscall (freebsd-arm-cgo), const RTF_GATEWAY ideal-int pkg syscall (freebsd-arm-cgo), const RTF_HOST ideal-int pkg syscall (freebsd-arm-cgo), const RTF_LLDATA ideal-int pkg syscall (freebsd-arm-cgo), const RTF_LLINFO ideal-int pkg syscall (freebsd-arm-cgo), const RTF_LOCAL ideal-int pkg syscall (freebsd-arm-cgo), const RTF_MODIFIED ideal-int pkg syscall (freebsd-arm-cgo), const RTF_MULTICAST ideal-int pkg syscall (freebsd-arm-cgo), const RTF_PINNED ideal-int pkg syscall (freebsd-arm-cgo), const RTF_PRCLONING ideal-int pkg syscall (freebsd-arm-cgo), const RTF_PROTO1 ideal-int pkg syscall (freebsd-arm-cgo), const RTF_PROTO2 ideal-int pkg syscall (freebsd-arm-cgo), const RTF_PROTO3 ideal-int pkg syscall (freebsd-arm-cgo), const RTF_REJECT ideal-int pkg syscall (freebsd-arm-cgo), const RTF_RNH_LOCKED ideal-int pkg syscall (freebsd-arm-cgo), const RTF_STATIC ideal-int pkg syscall (freebsd-arm-cgo), const RTF_STICKY ideal-int pkg syscall (freebsd-arm-cgo), const RTF_UP ideal-int pkg syscall (freebsd-arm-cgo), const RTF_XRESOLVE ideal-int pkg syscall (freebsd-arm-cgo), const RTM_ADD ideal-int pkg syscall (freebsd-arm-cgo), const RTM_CHANGE ideal-int pkg syscall (freebsd-arm-cgo), const RTM_DELADDR ideal-int pkg syscall (freebsd-arm-cgo), const RTM_DELETE ideal-int pkg syscall (freebsd-arm-cgo), const RTM_DELMADDR ideal-int pkg syscall (freebsd-arm-cgo), const RTM_GET ideal-int pkg syscall (freebsd-arm-cgo), const RTM_IEEE80211 ideal-int pkg syscall (freebsd-arm-cgo), const RTM_IFANNOUNCE ideal-int pkg syscall (freebsd-arm-cgo), const RTM_IFINFO ideal-int pkg syscall (freebsd-arm-cgo), const RTM_LOCK ideal-int pkg syscall (freebsd-arm-cgo), const RTM_LOSING ideal-int pkg syscall (freebsd-arm-cgo), const RTM_MISS ideal-int pkg syscall (freebsd-arm-cgo), const RTM_NEWADDR ideal-int pkg syscall (freebsd-arm-cgo), const RTM_NEWMADDR ideal-int pkg syscall (freebsd-arm-cgo), const RTM_OLDADD ideal-int pkg syscall (freebsd-arm-cgo), const RTM_OLDDEL ideal-int pkg syscall (freebsd-arm-cgo), const RTM_REDIRECT ideal-int pkg syscall (freebsd-arm-cgo), const RTM_RESOLVE ideal-int pkg syscall (freebsd-arm-cgo), const RTM_RTTUNIT ideal-int pkg syscall (freebsd-arm-cgo), const RTM_VERSION ideal-int pkg syscall (freebsd-arm-cgo), const RTV_EXPIRE ideal-int pkg syscall (freebsd-arm-cgo), const RTV_HOPCOUNT ideal-int pkg syscall (freebsd-arm-cgo), const RTV_MTU ideal-int pkg syscall (freebsd-arm-cgo), const RTV_RPIPE ideal-int pkg syscall (freebsd-arm-cgo), const RTV_RTT ideal-int pkg syscall (freebsd-arm-cgo), const RTV_RTTVAR ideal-int pkg syscall (freebsd-arm-cgo), const RTV_SPIPE ideal-int pkg syscall (freebsd-arm-cgo), const RTV_SSTHRESH ideal-int pkg syscall (freebsd-arm-cgo), const RTV_WEIGHT ideal-int pkg syscall (freebsd-arm-cgo), const RT_CACHING_CONTEXT ideal-int pkg syscall (freebsd-arm-cgo), const RT_DEFAULT_FIB ideal-int pkg syscall (freebsd-arm-cgo), const RT_NORTREF ideal-int pkg syscall (freebsd-arm-cgo), const RUSAGE_CHILDREN ideal-int pkg syscall (freebsd-arm-cgo), const RUSAGE_SELF ideal-int pkg syscall (freebsd-arm-cgo), const RUSAGE_THREAD ideal-int pkg syscall (freebsd-arm-cgo), const SCM_BINTIME ideal-int pkg syscall (freebsd-arm-cgo), const SCM_CREDS ideal-int pkg syscall (freebsd-arm-cgo), const SCM_RIGHTS ideal-int pkg syscall (freebsd-arm-cgo), const SCM_TIMESTAMP ideal-int pkg syscall (freebsd-arm-cgo), const SIGCHLD Signal pkg syscall (freebsd-arm-cgo), const SIGCONT Signal pkg syscall (freebsd-arm-cgo), const SIGEMT Signal pkg syscall (freebsd-arm-cgo), const SIGINFO Signal pkg syscall (freebsd-arm-cgo), const SIGIO Signal pkg syscall (freebsd-arm-cgo), const SIGIOT Signal pkg syscall (freebsd-arm-cgo), const SIGLIBRT Signal pkg syscall (freebsd-arm-cgo), const SIGLWP Signal pkg syscall (freebsd-arm-cgo), const SIGPROF Signal pkg syscall (freebsd-arm-cgo), const SIGSTOP Signal pkg syscall (freebsd-arm-cgo), const SIGSYS Signal pkg syscall (freebsd-arm-cgo), const SIGTHR Signal pkg syscall (freebsd-arm-cgo), const SIGTSTP Signal pkg syscall (freebsd-arm-cgo), const SIGTTIN Signal pkg syscall (freebsd-arm-cgo), const SIGTTOU Signal pkg syscall (freebsd-arm-cgo), const SIGURG Signal pkg syscall (freebsd-arm-cgo), const SIGUSR1 Signal pkg syscall (freebsd-arm-cgo), const SIGUSR2 Signal pkg syscall (freebsd-arm-cgo), const SIGVTALRM Signal pkg syscall (freebsd-arm-cgo), const SIGWINCH Signal pkg syscall (freebsd-arm-cgo), const SIGXCPU Signal pkg syscall (freebsd-arm-cgo), const SIGXFSZ Signal pkg syscall (freebsd-arm-cgo), const SIOCADDMULTI ideal-int pkg syscall (freebsd-arm-cgo), const SIOCADDRT ideal-int pkg syscall (freebsd-arm-cgo), const SIOCAIFADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCAIFGROUP ideal-int pkg syscall (freebsd-arm-cgo), const SIOCALIFADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCATMARK ideal-int pkg syscall (freebsd-arm-cgo), const SIOCDELMULTI ideal-int pkg syscall (freebsd-arm-cgo), const SIOCDELRT ideal-int pkg syscall (freebsd-arm-cgo), const SIOCDIFADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCDIFGROUP ideal-int pkg syscall (freebsd-arm-cgo), const SIOCDIFPHYADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCDLIFADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGDRVSPEC ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGETSGCNT ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGETVIFCNT ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGHIWAT ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFBRDADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFCAP ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFCONF ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFDESCR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFDSTADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFFIB ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFFLAGS ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFGENERIC ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFGMEMB ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFGROUP ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFINDEX ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFMAC ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFMEDIA ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFMETRIC ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFMTU ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFNETMASK ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFPDSTADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFPHYS ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFPSRCADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGIFSTATUS ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGLIFADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGLIFPHYADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGLOWAT ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGPGRP ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGPRIVATE_0 ideal-int pkg syscall (freebsd-arm-cgo), const SIOCGPRIVATE_1 ideal-int pkg syscall (freebsd-arm-cgo), const SIOCIFCREATE ideal-int pkg syscall (freebsd-arm-cgo), const SIOCIFCREATE2 ideal-int pkg syscall (freebsd-arm-cgo), const SIOCIFDESTROY ideal-int pkg syscall (freebsd-arm-cgo), const SIOCIFGCLONERS ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSDRVSPEC ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSHIWAT ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFBRDADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFCAP ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFDESCR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFDSTADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFFIB ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFFLAGS ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFGENERIC ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFLLADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFMAC ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFMEDIA ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFMETRIC ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFMTU ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFNAME ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFNETMASK ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFPHYADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFPHYS ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFRVNET ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSIFVNET ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSLIFPHYADDR ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSLOWAT ideal-int pkg syscall (freebsd-arm-cgo), const SIOCSPGRP ideal-int pkg syscall (freebsd-arm-cgo), const SOCK_MAXADDRLEN ideal-int pkg syscall (freebsd-arm-cgo), const SOCK_RDM ideal-int pkg syscall (freebsd-arm-cgo), const SO_ACCEPTCONN ideal-int pkg syscall (freebsd-arm-cgo), const SO_ACCEPTFILTER ideal-int pkg syscall (freebsd-arm-cgo), const SO_BINTIME ideal-int pkg syscall (freebsd-arm-cgo), const SO_DEBUG ideal-int pkg syscall (freebsd-arm-cgo), const SO_ERROR ideal-int pkg syscall (freebsd-arm-cgo), const SO_LABEL ideal-int pkg syscall (freebsd-arm-cgo), const SO_LISTENINCQLEN ideal-int pkg syscall (freebsd-arm-cgo), const SO_LISTENQLEN ideal-int pkg syscall (freebsd-arm-cgo), const SO_LISTENQLIMIT ideal-int pkg syscall (freebsd-arm-cgo), const SO_NOSIGPIPE ideal-int pkg syscall (freebsd-arm-cgo), const SO_NO_DDP ideal-int pkg syscall (freebsd-arm-cgo), const SO_NO_OFFLOAD ideal-int pkg syscall (freebsd-arm-cgo), const SO_OOBINLINE ideal-int pkg syscall (freebsd-arm-cgo), const SO_PEERLABEL ideal-int pkg syscall (freebsd-arm-cgo), const SO_PROTOCOL ideal-int pkg syscall (freebsd-arm-cgo), const SO_PROTOTYPE ideal-int pkg syscall (freebsd-arm-cgo), const SO_RCVLOWAT ideal-int pkg syscall (freebsd-arm-cgo), const SO_RCVTIMEO ideal-int pkg syscall (freebsd-arm-cgo), const SO_REUSEPORT ideal-int pkg syscall (freebsd-arm-cgo), const SO_SETFIB ideal-int pkg syscall (freebsd-arm-cgo), const SO_SNDLOWAT ideal-int pkg syscall (freebsd-arm-cgo), const SO_SNDTIMEO ideal-int pkg syscall (freebsd-arm-cgo), const SO_TIMESTAMP ideal-int pkg syscall (freebsd-arm-cgo), const SO_TYPE ideal-int pkg syscall (freebsd-arm-cgo), const SO_USELOOPBACK ideal-int pkg syscall (freebsd-arm-cgo), const SO_USER_COOKIE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_ABORT2 ideal-int pkg syscall (freebsd-arm-cgo), const SYS_ACCEPT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_ACCESS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_ACCT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_ADJTIME ideal-int pkg syscall (freebsd-arm-cgo), const SYS_AUDIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_AUDITCTL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_AUDITON ideal-int pkg syscall (freebsd-arm-cgo), const SYS_BIND ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_ENTER ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_FCNTLS_GET ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_FCNTLS_LIMIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_GETMODE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_IOCTLS_GET ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_IOCTLS_LIMIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_NEW ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_RIGHTS_GET ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_RIGHTS_LIMIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CHDIR ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CHFLAGS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CHMOD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CHOWN ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CHROOT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CLOCK_GETCPUCLOCKID2 ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CLOCK_GETRES ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CLOCK_GETTIME ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CLOCK_SETTIME ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CLOSE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CLOSEFROM ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CONNECT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CPUSET ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CPUSET_GETAFFINITY ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CPUSET_GETID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CPUSET_SETAFFINITY ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CPUSET_SETID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_DUP ideal-int pkg syscall (freebsd-arm-cgo), const SYS_DUP2 ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EACCESS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXECVE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXTATTRCTL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_DELETE_FD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_DELETE_FILE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_DELETE_LINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_GET_FD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_GET_FILE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_GET_LINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_LIST_FD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_LIST_FILE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_LIST_LINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_SET_FD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_SET_FILE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_EXTATTR_SET_LINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FACCESSAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FCHDIR ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FCHFLAGS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FCHMOD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FCHMODAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FCHOWN ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FCHOWNAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FCNTL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FEXECVE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FFCLOCK_GETCOUNTER ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FFCLOCK_GETESTIMATE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FFCLOCK_SETESTIMATE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FHOPEN ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FHSTAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FHSTATFS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FLOCK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FORK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FPATHCONF ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FREEBSD6_FTRUNCATE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FREEBSD6_LSEEK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FREEBSD6_MMAP ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FREEBSD6_PREAD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FREEBSD6_PWRITE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FREEBSD6_TRUNCATE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FSTAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FSTATAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FSTATFS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FSYNC ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FTRUNCATE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FUTIMES ideal-int pkg syscall (freebsd-arm-cgo), const SYS_FUTIMESAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETAUDIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETAUDIT_ADDR ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETAUID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETCONTEXT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETDENTS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETDIRENTRIES ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETDTABLESIZE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETEGID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETEUID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETFH ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETFSSTAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETGID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETGROUPS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETITIMER ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETLOGIN ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETLOGINCLASS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETPEERNAME ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETPGID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETPGRP ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETPID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETPPID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETPRIORITY ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETRESGID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETRESUID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETRLIMIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETRUSAGE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETSID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETSOCKNAME ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETSOCKOPT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETTIMEOFDAY ideal-int pkg syscall (freebsd-arm-cgo), const SYS_GETUID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_IOCTL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_ISSETUGID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_JAIL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_JAIL_ATTACH ideal-int pkg syscall (freebsd-arm-cgo), const SYS_JAIL_GET ideal-int pkg syscall (freebsd-arm-cgo), const SYS_JAIL_REMOVE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_JAIL_SET ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KENV ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KEVENT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KILL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KLDFIND ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KLDFIRSTMOD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KLDLOAD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KLDNEXT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KLDSTAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KLDSYM ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KLDUNLOAD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KLDUNLOADF ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KQUEUE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KTIMER_CREATE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KTIMER_DELETE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KTIMER_GETOVERRUN ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KTIMER_GETTIME ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KTIMER_SETTIME ideal-int pkg syscall (freebsd-arm-cgo), const SYS_KTRACE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_LCHFLAGS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_LCHMOD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_LCHOWN ideal-int pkg syscall (freebsd-arm-cgo), const SYS_LGETFH ideal-int pkg syscall (freebsd-arm-cgo), const SYS_LINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_LINKAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_LISTEN ideal-int pkg syscall (freebsd-arm-cgo), const SYS_LPATHCONF ideal-int pkg syscall (freebsd-arm-cgo), const SYS_LSEEK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_LSTAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_LUTIMES ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MAC_SYSCALL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MADVISE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MINCORE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MINHERIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MKDIR ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MKDIRAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MKFIFO ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MKFIFOAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MKNOD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MKNODAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MLOCK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MLOCKALL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MMAP ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MODFIND ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MODFNEXT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MODNEXT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MODSTAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MOUNT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MPROTECT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MSYNC ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MUNLOCK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MUNLOCKALL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_MUNMAP ideal-int pkg syscall (freebsd-arm-cgo), const SYS_NANOSLEEP ideal-int pkg syscall (freebsd-arm-cgo), const SYS_NFSTAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_NLSTAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_NMOUNT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_NSTAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_NTP_ADJTIME ideal-int pkg syscall (freebsd-arm-cgo), const SYS_NTP_GETTIME ideal-int pkg syscall (freebsd-arm-cgo), const SYS_OBREAK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_OPEN ideal-int pkg syscall (freebsd-arm-cgo), const SYS_OPENAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_OPENBSD_POLL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_OVADVISE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_PATHCONF ideal-int pkg syscall (freebsd-arm-cgo), const SYS_PDFORK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_PDGETPID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_PDKILL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_PIPE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_POLL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_POSIX_FADVISE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_POSIX_FALLOCATE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_POSIX_OPENPT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_PREAD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_PREADV ideal-int pkg syscall (freebsd-arm-cgo), const SYS_PROFIL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_PSELECT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_PTRACE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_PWRITE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_PWRITEV ideal-int pkg syscall (freebsd-arm-cgo), const SYS_QUOTACTL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_RCTL_ADD_RULE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_RCTL_GET_LIMITS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_RCTL_GET_RACCT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_RCTL_GET_RULES ideal-int pkg syscall (freebsd-arm-cgo), const SYS_RCTL_REMOVE_RULE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_READ ideal-int pkg syscall (freebsd-arm-cgo), const SYS_READLINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_READLINKAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_READV ideal-int pkg syscall (freebsd-arm-cgo), const SYS_REBOOT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_RECVFROM ideal-int pkg syscall (freebsd-arm-cgo), const SYS_RECVMSG ideal-int pkg syscall (freebsd-arm-cgo), const SYS_RENAME ideal-int pkg syscall (freebsd-arm-cgo), const SYS_RENAMEAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_REVOKE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_RFORK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_RMDIR ideal-int pkg syscall (freebsd-arm-cgo), const SYS_RTPRIO ideal-int pkg syscall (freebsd-arm-cgo), const SYS_RTPRIO_THREAD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SBRK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SCHED_GETPARAM ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SCHED_GETSCHEDULER ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SCHED_GET_PRIORITY_MAX ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SCHED_GET_PRIORITY_MIN ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SCHED_RR_GET_INTERVAL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SCHED_SETPARAM ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SCHED_SETSCHEDULER ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SCHED_YIELD ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SCTP_GENERIC_RECVMSG ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SCTP_GENERIC_SENDMSG ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SCTP_GENERIC_SENDMSG_IOV ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SCTP_PEELOFF ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SELECT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SENDFILE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SENDMSG ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SENDTO ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETAUDIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETAUDIT_ADDR ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETAUID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETCONTEXT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETEGID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETEUID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETFIB ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETGID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETGROUPS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETITIMER ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETLOGIN ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETLOGINCLASS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETPGID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETPRIORITY ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETREGID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETRESGID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETRESUID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETREUID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETRLIMIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETSID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETSOCKOPT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETTIMEOFDAY ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SETUID ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SHM_OPEN ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SHM_UNLINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SHUTDOWN ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SIGACTION ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SIGALTSTACK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SIGPENDING ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SIGPROCMASK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SIGQUEUE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SIGRETURN ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SIGSUSPEND ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SIGTIMEDWAIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SIGWAIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SIGWAITINFO ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SOCKET ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SOCKETPAIR ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SSTK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_STAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_STATFS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SWAPCONTEXT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SWAPOFF ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SWAPON ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SYMLINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SYMLINKAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SYNC ideal-int pkg syscall (freebsd-arm-cgo), const SYS_SYSARCH ideal-int pkg syscall (freebsd-arm-cgo), const SYS_THR_CREATE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_THR_EXIT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_THR_KILL ideal-int pkg syscall (freebsd-arm-cgo), const SYS_THR_KILL2 ideal-int pkg syscall (freebsd-arm-cgo), const SYS_THR_NEW ideal-int pkg syscall (freebsd-arm-cgo), const SYS_THR_SELF ideal-int pkg syscall (freebsd-arm-cgo), const SYS_THR_SET_NAME ideal-int pkg syscall (freebsd-arm-cgo), const SYS_THR_SUSPEND ideal-int pkg syscall (freebsd-arm-cgo), const SYS_THR_WAKE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_TRUNCATE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_UMASK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_UNDELETE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_UNLINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_UNLINKAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_UNMOUNT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_UTIMES ideal-int pkg syscall (freebsd-arm-cgo), const SYS_UTRACE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_UUIDGEN ideal-int pkg syscall (freebsd-arm-cgo), const SYS_VFORK ideal-int pkg syscall (freebsd-arm-cgo), const SYS_WAIT4 ideal-int pkg syscall (freebsd-arm-cgo), const SYS_WAIT6 ideal-int pkg syscall (freebsd-arm-cgo), const SYS_WRITE ideal-int pkg syscall (freebsd-arm-cgo), const SYS_WRITEV ideal-int pkg syscall (freebsd-arm-cgo), const SYS_YIELD ideal-int pkg syscall (freebsd-arm-cgo), const SYS__UMTX_LOCK ideal-int pkg syscall (freebsd-arm-cgo), const SYS__UMTX_OP ideal-int pkg syscall (freebsd-arm-cgo), const SYS__UMTX_UNLOCK ideal-int pkg syscall (freebsd-arm-cgo), const SYS___ACL_ACLCHECK_FD ideal-int pkg syscall (freebsd-arm-cgo), const SYS___ACL_ACLCHECK_FILE ideal-int pkg syscall (freebsd-arm-cgo), const SYS___ACL_ACLCHECK_LINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS___ACL_DELETE_FD ideal-int pkg syscall (freebsd-arm-cgo), const SYS___ACL_DELETE_FILE ideal-int pkg syscall (freebsd-arm-cgo), const SYS___ACL_DELETE_LINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS___ACL_GET_FD ideal-int pkg syscall (freebsd-arm-cgo), const SYS___ACL_GET_FILE ideal-int pkg syscall (freebsd-arm-cgo), const SYS___ACL_GET_LINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS___ACL_SET_FD ideal-int pkg syscall (freebsd-arm-cgo), const SYS___ACL_SET_FILE ideal-int pkg syscall (freebsd-arm-cgo), const SYS___ACL_SET_LINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS___GETCWD ideal-int pkg syscall (freebsd-arm-cgo), const SYS___MAC_EXECVE ideal-int pkg syscall (freebsd-arm-cgo), const SYS___MAC_GET_FD ideal-int pkg syscall (freebsd-arm-cgo), const SYS___MAC_GET_FILE ideal-int pkg syscall (freebsd-arm-cgo), const SYS___MAC_GET_LINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS___MAC_GET_PID ideal-int pkg syscall (freebsd-arm-cgo), const SYS___MAC_GET_PROC ideal-int pkg syscall (freebsd-arm-cgo), const SYS___MAC_SET_FD ideal-int pkg syscall (freebsd-arm-cgo), const SYS___MAC_SET_FILE ideal-int pkg syscall (freebsd-arm-cgo), const SYS___MAC_SET_LINK ideal-int pkg syscall (freebsd-arm-cgo), const SYS___MAC_SET_PROC ideal-int pkg syscall (freebsd-arm-cgo), const SYS___SETUGID ideal-int pkg syscall (freebsd-arm-cgo), const SYS___SYSCTL ideal-int pkg syscall (freebsd-arm-cgo), const SizeofBpfHdr ideal-int pkg syscall (freebsd-arm-cgo), const SizeofBpfInsn ideal-int pkg syscall (freebsd-arm-cgo), const SizeofBpfProgram ideal-int pkg syscall (freebsd-arm-cgo), const SizeofBpfStat ideal-int pkg syscall (freebsd-arm-cgo), const SizeofBpfVersion ideal-int pkg syscall (freebsd-arm-cgo), const SizeofBpfZbuf ideal-int pkg syscall (freebsd-arm-cgo), const SizeofBpfZbufHeader ideal-int pkg syscall (freebsd-arm-cgo), const SizeofCmsghdr ideal-int pkg syscall (freebsd-arm-cgo), const SizeofICMPv6Filter = 32 pkg syscall (freebsd-arm-cgo), const SizeofICMPv6Filter ideal-int pkg syscall (freebsd-arm-cgo), const SizeofIPMreq ideal-int pkg syscall (freebsd-arm-cgo), const SizeofIPMreqn ideal-int pkg syscall (freebsd-arm-cgo), const SizeofIPv6MTUInfo = 32 pkg syscall (freebsd-arm-cgo), const SizeofIPv6MTUInfo ideal-int pkg syscall (freebsd-arm-cgo), const SizeofIPv6Mreq ideal-int pkg syscall (freebsd-arm-cgo), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (freebsd-arm-cgo), const SizeofIfData ideal-int pkg syscall (freebsd-arm-cgo), const SizeofIfMsghdr ideal-int pkg syscall (freebsd-arm-cgo), const SizeofIfaMsghdr ideal-int pkg syscall (freebsd-arm-cgo), const SizeofIfmaMsghdr ideal-int pkg syscall (freebsd-arm-cgo), const SizeofInet6Pktinfo ideal-int pkg syscall (freebsd-arm-cgo), const SizeofLinger ideal-int pkg syscall (freebsd-arm-cgo), const SizeofMsghdr ideal-int pkg syscall (freebsd-arm-cgo), const SizeofRtMetrics ideal-int pkg syscall (freebsd-arm-cgo), const SizeofRtMsghdr ideal-int pkg syscall (freebsd-arm-cgo), const SizeofSockaddrAny ideal-int pkg syscall (freebsd-arm-cgo), const SizeofSockaddrDatalink ideal-int pkg syscall (freebsd-arm-cgo), const SizeofSockaddrInet4 ideal-int pkg syscall (freebsd-arm-cgo), const SizeofSockaddrInet6 ideal-int pkg syscall (freebsd-arm-cgo), const SizeofSockaddrUnix ideal-int pkg syscall (freebsd-arm-cgo), const TCIFLUSH ideal-int pkg syscall (freebsd-arm-cgo), const TCIOFLUSH ideal-int pkg syscall (freebsd-arm-cgo), const TCOFLUSH ideal-int pkg syscall (freebsd-arm-cgo), const TCP_CA_NAME_MAX ideal-int pkg syscall (freebsd-arm-cgo), const TCP_CONGESTION ideal-int pkg syscall (freebsd-arm-cgo), const TCP_INFO ideal-int pkg syscall (freebsd-arm-cgo), const TCP_KEEPCNT ideal-int pkg syscall (freebsd-arm-cgo), const TCP_KEEPIDLE ideal-int pkg syscall (freebsd-arm-cgo), const TCP_KEEPINIT ideal-int pkg syscall (freebsd-arm-cgo), const TCP_KEEPINTVL ideal-int pkg syscall (freebsd-arm-cgo), const TCP_MAXBURST ideal-int pkg syscall (freebsd-arm-cgo), const TCP_MAXHLEN ideal-int pkg syscall (freebsd-arm-cgo), const TCP_MAXOLEN ideal-int pkg syscall (freebsd-arm-cgo), const TCP_MAXSEG ideal-int pkg syscall (freebsd-arm-cgo), const TCP_MAXWIN ideal-int pkg syscall (freebsd-arm-cgo), const TCP_MAX_SACK ideal-int pkg syscall (freebsd-arm-cgo), const TCP_MAX_WINSHIFT ideal-int pkg syscall (freebsd-arm-cgo), const TCP_MD5SIG ideal-int pkg syscall (freebsd-arm-cgo), const TCP_MINMSS ideal-int pkg syscall (freebsd-arm-cgo), const TCP_MSS ideal-int pkg syscall (freebsd-arm-cgo), const TCP_NOOPT ideal-int pkg syscall (freebsd-arm-cgo), const TCP_NOPUSH ideal-int pkg syscall (freebsd-arm-cgo), const TCSAFLUSH ideal-int pkg syscall (freebsd-arm-cgo), const TIOCCBRK ideal-int pkg syscall (freebsd-arm-cgo), const TIOCCDTR ideal-int pkg syscall (freebsd-arm-cgo), const TIOCCONS ideal-int pkg syscall (freebsd-arm-cgo), const TIOCDRAIN ideal-int pkg syscall (freebsd-arm-cgo), const TIOCEXCL ideal-int pkg syscall (freebsd-arm-cgo), const TIOCEXT ideal-int pkg syscall (freebsd-arm-cgo), const TIOCFLUSH ideal-int pkg syscall (freebsd-arm-cgo), const TIOCGDRAINWAIT ideal-int pkg syscall (freebsd-arm-cgo), const TIOCGETA ideal-int pkg syscall (freebsd-arm-cgo), const TIOCGETD ideal-int pkg syscall (freebsd-arm-cgo), const TIOCGPGRP ideal-int pkg syscall (freebsd-arm-cgo), const TIOCGPTN ideal-int pkg syscall (freebsd-arm-cgo), const TIOCGSID ideal-int pkg syscall (freebsd-arm-cgo), const TIOCGWINSZ ideal-int pkg syscall (freebsd-arm-cgo), const TIOCMBIC ideal-int pkg syscall (freebsd-arm-cgo), const TIOCMBIS ideal-int pkg syscall (freebsd-arm-cgo), const TIOCMGDTRWAIT ideal-int pkg syscall (freebsd-arm-cgo), const TIOCMGET ideal-int pkg syscall (freebsd-arm-cgo), const TIOCMSDTRWAIT ideal-int pkg syscall (freebsd-arm-cgo), const TIOCMSET ideal-int pkg syscall (freebsd-arm-cgo), const TIOCM_CAR ideal-int pkg syscall (freebsd-arm-cgo), const TIOCM_CD ideal-int pkg syscall (freebsd-arm-cgo), const TIOCM_CTS ideal-int pkg syscall (freebsd-arm-cgo), const TIOCM_DCD ideal-int pkg syscall (freebsd-arm-cgo), const TIOCM_DSR ideal-int pkg syscall (freebsd-arm-cgo), const TIOCM_DTR ideal-int pkg syscall (freebsd-arm-cgo), const TIOCM_LE ideal-int pkg syscall (freebsd-arm-cgo), const TIOCM_RI ideal-int pkg syscall (freebsd-arm-cgo), const TIOCM_RNG ideal-int pkg syscall (freebsd-arm-cgo), const TIOCM_RTS ideal-int pkg syscall (freebsd-arm-cgo), const TIOCM_SR ideal-int pkg syscall (freebsd-arm-cgo), const TIOCM_ST ideal-int pkg syscall (freebsd-arm-cgo), const TIOCNOTTY ideal-int pkg syscall (freebsd-arm-cgo), const TIOCNXCL ideal-int pkg syscall (freebsd-arm-cgo), const TIOCOUTQ ideal-int pkg syscall (freebsd-arm-cgo), const TIOCPKT ideal-int pkg syscall (freebsd-arm-cgo), const TIOCPKT_DATA ideal-int pkg syscall (freebsd-arm-cgo), const TIOCPKT_DOSTOP ideal-int pkg syscall (freebsd-arm-cgo), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (freebsd-arm-cgo), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (freebsd-arm-cgo), const TIOCPKT_IOCTL ideal-int pkg syscall (freebsd-arm-cgo), const TIOCPKT_NOSTOP ideal-int pkg syscall (freebsd-arm-cgo), const TIOCPKT_START ideal-int pkg syscall (freebsd-arm-cgo), const TIOCPKT_STOP ideal-int pkg syscall (freebsd-arm-cgo), const TIOCPTMASTER ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSBRK ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSCTTY ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSDRAINWAIT ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSDTR ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSETA ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSETAF ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSETAW ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSETD ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSIG ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSPGRP ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSTART ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSTAT ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSTI ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSTOP ideal-int pkg syscall (freebsd-arm-cgo), const TIOCSWINSZ ideal-int pkg syscall (freebsd-arm-cgo), const TIOCTIMESTAMP ideal-int pkg syscall (freebsd-arm-cgo), const TIOCUCNTL ideal-int pkg syscall (freebsd-arm-cgo), const TOSTOP ideal-int pkg syscall (freebsd-arm-cgo), const VDISCARD ideal-int pkg syscall (freebsd-arm-cgo), const VDSUSP ideal-int pkg syscall (freebsd-arm-cgo), const VEOF ideal-int pkg syscall (freebsd-arm-cgo), const VEOL ideal-int pkg syscall (freebsd-arm-cgo), const VEOL2 ideal-int pkg syscall (freebsd-arm-cgo), const VERASE ideal-int pkg syscall (freebsd-arm-cgo), const VERASE2 ideal-int pkg syscall (freebsd-arm-cgo), const VINTR ideal-int pkg syscall (freebsd-arm-cgo), const VKILL ideal-int pkg syscall (freebsd-arm-cgo), const VLNEXT ideal-int pkg syscall (freebsd-arm-cgo), const VMIN ideal-int pkg syscall (freebsd-arm-cgo), const VQUIT ideal-int pkg syscall (freebsd-arm-cgo), const VREPRINT ideal-int pkg syscall (freebsd-arm-cgo), const VSTART ideal-int pkg syscall (freebsd-arm-cgo), const VSTATUS ideal-int pkg syscall (freebsd-arm-cgo), const VSTOP ideal-int pkg syscall (freebsd-arm-cgo), const VSUSP ideal-int pkg syscall (freebsd-arm-cgo), const VTIME ideal-int pkg syscall (freebsd-arm-cgo), const VWERASE ideal-int pkg syscall (freebsd-arm-cgo), const WCONTINUED ideal-int pkg syscall (freebsd-arm-cgo), const WCOREFLAG ideal-int pkg syscall (freebsd-arm-cgo), const WEXITED ideal-int pkg syscall (freebsd-arm-cgo), const WLINUXCLONE ideal-int pkg syscall (freebsd-arm-cgo), const WNOHANG ideal-int pkg syscall (freebsd-arm-cgo), const WNOWAIT ideal-int pkg syscall (freebsd-arm-cgo), const WSTOPPED ideal-int pkg syscall (freebsd-arm-cgo), const WTRAPPED ideal-int pkg syscall (freebsd-arm-cgo), const WUNTRACED ideal-int pkg syscall (freebsd-arm-cgo), func Accept(int) (int, Sockaddr, error) pkg syscall (freebsd-arm-cgo), func Access(string, uint32) error pkg syscall (freebsd-arm-cgo), func Adjtime(*Timeval, *Timeval) error pkg syscall (freebsd-arm-cgo), func Bind(int, Sockaddr) error pkg syscall (freebsd-arm-cgo), func BpfBuflen(int) (int, error) pkg syscall (freebsd-arm-cgo), func BpfDatalink(int) (int, error) pkg syscall (freebsd-arm-cgo), func BpfHeadercmpl(int) (int, error) pkg syscall (freebsd-arm-cgo), func BpfInterface(int, string) (string, error) pkg syscall (freebsd-arm-cgo), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (freebsd-arm-cgo), func BpfStats(int) (*BpfStat, error) pkg syscall (freebsd-arm-cgo), func BpfStmt(int, int) *BpfInsn pkg syscall (freebsd-arm-cgo), func BpfTimeout(int) (*Timeval, error) pkg syscall (freebsd-arm-cgo), func CheckBpfVersion(int) error pkg syscall (freebsd-arm-cgo), func Chflags(string, int) error pkg syscall (freebsd-arm-cgo), func Chroot(string) error pkg syscall (freebsd-arm-cgo), func Close(int) error pkg syscall (freebsd-arm-cgo), func CloseOnExec(int) pkg syscall (freebsd-arm-cgo), func CmsgLen(int) int pkg syscall (freebsd-arm-cgo), func CmsgSpace(int) int pkg syscall (freebsd-arm-cgo), func Connect(int, Sockaddr) error pkg syscall (freebsd-arm-cgo), func Dup(int) (int, error) pkg syscall (freebsd-arm-cgo), func Dup2(int, int) error pkg syscall (freebsd-arm-cgo), func Fchdir(int) error pkg syscall (freebsd-arm-cgo), func Fchflags(string, int) error pkg syscall (freebsd-arm-cgo), func Fchmod(int, uint32) error pkg syscall (freebsd-arm-cgo), func Fchown(int, int, int) error pkg syscall (freebsd-arm-cgo), func Flock(int, int) error pkg syscall (freebsd-arm-cgo), func FlushBpf(int) error pkg syscall (freebsd-arm-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (freebsd-arm-cgo), func Fpathconf(int, int) (int, error) pkg syscall (freebsd-arm-cgo), func Fstat(int, *Stat_t) error pkg syscall (freebsd-arm-cgo), func Fstatfs(int, *Statfs_t) error pkg syscall (freebsd-arm-cgo), func Fsync(int) error pkg syscall (freebsd-arm-cgo), func Ftruncate(int, int64) error pkg syscall (freebsd-arm-cgo), func Futimes(int, []Timeval) error pkg syscall (freebsd-arm-cgo), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (freebsd-arm-cgo), func Getdtablesize() int pkg syscall (freebsd-arm-cgo), func Getfsstat([]Statfs_t, int) (int, error) pkg syscall (freebsd-arm-cgo), func Getpeername(int) (Sockaddr, error) pkg syscall (freebsd-arm-cgo), func Getpgid(int) (int, error) pkg syscall (freebsd-arm-cgo), func Getpgrp() int pkg syscall (freebsd-arm-cgo), func Getpriority(int, int) (int, error) pkg syscall (freebsd-arm-cgo), func Getrlimit(int, *Rlimit) error pkg syscall (freebsd-arm-cgo), func Getrusage(int, *Rusage) error pkg syscall (freebsd-arm-cgo), func Getsid(int) (int, error) pkg syscall (freebsd-arm-cgo), func Getsockname(int) (Sockaddr, error) pkg syscall (freebsd-arm-cgo), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (freebsd-arm-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (freebsd-arm-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (freebsd-arm-cgo), func GetsockoptIPMreqn(int, int, int) (*IPMreqn, error) pkg syscall (freebsd-arm-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (freebsd-arm-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (freebsd-arm-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (freebsd-arm-cgo), func GetsockoptInt(int, int, int) (int, error) pkg syscall (freebsd-arm-cgo), func Issetugid() bool pkg syscall (freebsd-arm-cgo), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (freebsd-arm-cgo), func Kill(int, Signal) error pkg syscall (freebsd-arm-cgo), func Kqueue() (int, error) pkg syscall (freebsd-arm-cgo), func Listen(int, int) error pkg syscall (freebsd-arm-cgo), func Lstat(string, *Stat_t) error pkg syscall (freebsd-arm-cgo), func Mkfifo(string, uint32) error pkg syscall (freebsd-arm-cgo), func Mknod(string, uint32, int) error pkg syscall (freebsd-arm-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (freebsd-arm-cgo), func Munmap([]uint8) error pkg syscall (freebsd-arm-cgo), func Nanosleep(*Timespec, *Timespec) error pkg syscall (freebsd-arm-cgo), func Open(string, int, uint32) (int, error) pkg syscall (freebsd-arm-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (freebsd-arm-cgo), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (freebsd-arm-cgo), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (freebsd-arm-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (freebsd-arm-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (freebsd-arm-cgo), func Pathconf(string, int) (int, error) pkg syscall (freebsd-arm-cgo), func Pipe([]int) error pkg syscall (freebsd-arm-cgo), func Pread(int, []uint8, int64) (int, error) pkg syscall (freebsd-arm-cgo), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (freebsd-arm-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-arm-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-arm-cgo), func Read(int, []uint8) (int, error) pkg syscall (freebsd-arm-cgo), func ReadDirent(int, []uint8) (int, error) pkg syscall (freebsd-arm-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (freebsd-arm-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (freebsd-arm-cgo), func Revoke(string) error pkg syscall (freebsd-arm-cgo), func RouteRIB(int, int) ([]uint8, error) pkg syscall (freebsd-arm-cgo), func Seek(int, int64, int) (int64, error) pkg syscall (freebsd-arm-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (freebsd-arm-cgo), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (freebsd-arm-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (freebsd-arm-cgo), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (freebsd-arm-cgo), func SetBpf(int, []BpfInsn) error pkg syscall (freebsd-arm-cgo), func SetBpfBuflen(int, int) (int, error) pkg syscall (freebsd-arm-cgo), func SetBpfDatalink(int, int) (int, error) pkg syscall (freebsd-arm-cgo), func SetBpfHeadercmpl(int, int) error pkg syscall (freebsd-arm-cgo), func SetBpfImmediate(int, int) error pkg syscall (freebsd-arm-cgo), func SetBpfInterface(int, string) error pkg syscall (freebsd-arm-cgo), func SetBpfPromisc(int, int) error pkg syscall (freebsd-arm-cgo), func SetBpfTimeout(int, *Timeval) error pkg syscall (freebsd-arm-cgo), func SetKevent(*Kevent_t, int, int, int) pkg syscall (freebsd-arm-cgo), func SetNonblock(int, bool) error pkg syscall (freebsd-arm-cgo), func Setegid(int) error pkg syscall (freebsd-arm-cgo), func Seteuid(int) error pkg syscall (freebsd-arm-cgo), func Setgid(int) error pkg syscall (freebsd-arm-cgo), func Setgroups([]int) error pkg syscall (freebsd-arm-cgo), func Setlogin(string) error pkg syscall (freebsd-arm-cgo), func Setpgid(int, int) error pkg syscall (freebsd-arm-cgo), func Setpriority(int, int, int) error pkg syscall (freebsd-arm-cgo), func Setregid(int, int) error pkg syscall (freebsd-arm-cgo), func Setreuid(int, int) error pkg syscall (freebsd-arm-cgo), func Setrlimit(int, *Rlimit) error pkg syscall (freebsd-arm-cgo), func Setsid() (int, error) pkg syscall (freebsd-arm-cgo), func SetsockoptByte(int, int, int, uint8) error pkg syscall (freebsd-arm-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (freebsd-arm-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (freebsd-arm-cgo), func SetsockoptIPMreqn(int, int, int, *IPMreqn) error pkg syscall (freebsd-arm-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (freebsd-arm-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (freebsd-arm-cgo), func SetsockoptInt(int, int, int, int) error pkg syscall (freebsd-arm-cgo), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (freebsd-arm-cgo), func SetsockoptString(int, int, int, string) error pkg syscall (freebsd-arm-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (freebsd-arm-cgo), func Settimeofday(*Timeval) error pkg syscall (freebsd-arm-cgo), func Setuid(int) error pkg syscall (freebsd-arm-cgo), func Shutdown(int, int) error pkg syscall (freebsd-arm-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (freebsd-arm-cgo), func Socket(int, int, int) (int, error) pkg syscall (freebsd-arm-cgo), func Socketpair(int, int, int) ([2]int, error) pkg syscall (freebsd-arm-cgo), func Stat(string, *Stat_t) error pkg syscall (freebsd-arm-cgo), func Statfs(string, *Statfs_t) error pkg syscall (freebsd-arm-cgo), func StringSlicePtr([]string) []*uint8 pkg syscall (freebsd-arm-cgo), func Sync() error pkg syscall (freebsd-arm-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-arm-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-arm-cgo), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-arm-cgo), func Sysctl(string) (string, error) pkg syscall (freebsd-arm-cgo), func SysctlUint32(string) (uint32, error) pkg syscall (freebsd-arm-cgo), func TimevalToNsec(Timeval) int64 pkg syscall (freebsd-arm-cgo), func Truncate(string, int64) error pkg syscall (freebsd-arm-cgo), func Umask(int) int pkg syscall (freebsd-arm-cgo), func Undelete(string) error pkg syscall (freebsd-arm-cgo), func UnixRights(...int) []uint8 pkg syscall (freebsd-arm-cgo), func Unmount(string, int) error pkg syscall (freebsd-arm-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (freebsd-arm-cgo), func Write(int, []uint8) (int, error) pkg syscall (freebsd-arm-cgo), method (*Cmsghdr) SetLen(int) pkg syscall (freebsd-arm-cgo), method (*Iovec) SetLen(int) pkg syscall (freebsd-arm-cgo), method (*Msghdr) SetControllen(int) pkg syscall (freebsd-arm-cgo), type BpfHdr struct pkg syscall (freebsd-arm-cgo), type BpfHdr struct, Caplen uint32 pkg syscall (freebsd-arm-cgo), type BpfHdr struct, Datalen uint32 pkg syscall (freebsd-arm-cgo), type BpfHdr struct, Hdrlen uint16 pkg syscall (freebsd-arm-cgo), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm-cgo), type BpfHdr struct, Tstamp Timeval pkg syscall (freebsd-arm-cgo), type BpfInsn struct pkg syscall (freebsd-arm-cgo), type BpfInsn struct, Code uint16 pkg syscall (freebsd-arm-cgo), type BpfInsn struct, Jf uint8 pkg syscall (freebsd-arm-cgo), type BpfInsn struct, Jt uint8 pkg syscall (freebsd-arm-cgo), type BpfInsn struct, K uint32 pkg syscall (freebsd-arm-cgo), type BpfProgram struct pkg syscall (freebsd-arm-cgo), type BpfProgram struct, Insns *BpfInsn pkg syscall (freebsd-arm-cgo), type BpfProgram struct, Len uint32 pkg syscall (freebsd-arm-cgo), type BpfStat struct pkg syscall (freebsd-arm-cgo), type BpfStat struct, Drop uint32 pkg syscall (freebsd-arm-cgo), type BpfStat struct, Recv uint32 pkg syscall (freebsd-arm-cgo), type BpfVersion struct pkg syscall (freebsd-arm-cgo), type BpfVersion struct, Major uint16 pkg syscall (freebsd-arm-cgo), type BpfVersion struct, Minor uint16 pkg syscall (freebsd-arm-cgo), type BpfZbuf struct pkg syscall (freebsd-arm-cgo), type BpfZbuf struct, Bufa *uint8 pkg syscall (freebsd-arm-cgo), type BpfZbuf struct, Bufb *uint8 pkg syscall (freebsd-arm-cgo), type BpfZbuf struct, Buflen uint32 pkg syscall (freebsd-arm-cgo), type BpfZbufHeader struct pkg syscall (freebsd-arm-cgo), type BpfZbufHeader struct, Kernel_gen uint32 pkg syscall (freebsd-arm-cgo), type BpfZbufHeader struct, Kernel_len uint32 pkg syscall (freebsd-arm-cgo), type BpfZbufHeader struct, User_gen uint32 pkg syscall (freebsd-arm-cgo), type BpfZbufHeader struct, X_bzh_pad [5]uint32 pkg syscall (freebsd-arm-cgo), type Cmsghdr struct pkg syscall (freebsd-arm-cgo), type Cmsghdr struct, Len uint32 pkg syscall (freebsd-arm-cgo), type Cmsghdr struct, Level int32 pkg syscall (freebsd-arm-cgo), type Cmsghdr struct, Type int32 pkg syscall (freebsd-arm-cgo), type Credential struct pkg syscall (freebsd-arm-cgo), type Credential struct, Gid uint32 pkg syscall (freebsd-arm-cgo), type Credential struct, Groups []uint32 pkg syscall (freebsd-arm-cgo), type Credential struct, Uid uint32 pkg syscall (freebsd-arm-cgo), type Dirent struct pkg syscall (freebsd-arm-cgo), type Dirent struct, Fileno uint32 pkg syscall (freebsd-arm-cgo), type Dirent struct, Name [256]int8 pkg syscall (freebsd-arm-cgo), type Dirent struct, Namlen uint8 pkg syscall (freebsd-arm-cgo), type Dirent struct, Reclen uint16 pkg syscall (freebsd-arm-cgo), type Dirent struct, Type uint8 pkg syscall (freebsd-arm-cgo), type FdSet struct pkg syscall (freebsd-arm-cgo), type FdSet struct, X__fds_bits [32]uint32 pkg syscall (freebsd-arm-cgo), type Flock_t struct pkg syscall (freebsd-arm-cgo), type Flock_t struct, Len int64 pkg syscall (freebsd-arm-cgo), type Flock_t struct, Pid int32 pkg syscall (freebsd-arm-cgo), type Flock_t struct, Start int64 pkg syscall (freebsd-arm-cgo), type Flock_t struct, Sysid int32 pkg syscall (freebsd-arm-cgo), type Flock_t struct, Type int16 pkg syscall (freebsd-arm-cgo), type Flock_t struct, Whence int16 pkg syscall (freebsd-arm-cgo), type Fsid struct pkg syscall (freebsd-arm-cgo), type Fsid struct, Val [2]int32 pkg syscall (freebsd-arm-cgo), type ICMPv6Filter struct pkg syscall (freebsd-arm-cgo), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (freebsd-arm-cgo), type IPMreqn struct pkg syscall (freebsd-arm-cgo), type IPMreqn struct, Address [4]uint8 pkg syscall (freebsd-arm-cgo), type IPMreqn struct, Ifindex int32 pkg syscall (freebsd-arm-cgo), type IPMreqn struct, Multiaddr [4]uint8 pkg syscall (freebsd-arm-cgo), type IPv6MTUInfo struct pkg syscall (freebsd-arm-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (freebsd-arm-cgo), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (freebsd-arm-cgo), type IfAnnounceMsghdr struct pkg syscall (freebsd-arm-cgo), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (freebsd-arm-cgo), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (freebsd-arm-cgo), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (freebsd-arm-cgo), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (freebsd-arm-cgo), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (freebsd-arm-cgo), type IfAnnounceMsghdr struct, What uint16 pkg syscall (freebsd-arm-cgo), type IfData struct pkg syscall (freebsd-arm-cgo), type IfData struct, Addrlen uint8 pkg syscall (freebsd-arm-cgo), type IfData struct, Baudrate uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Collisions uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Datalen uint8 pkg syscall (freebsd-arm-cgo), type IfData struct, Epoch int64 pkg syscall (freebsd-arm-cgo), type IfData struct, Hdrlen uint8 pkg syscall (freebsd-arm-cgo), type IfData struct, Hwassist uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Ibytes uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Ierrors uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Imcasts uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Ipackets uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Iqdrops uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Lastchange Timeval pkg syscall (freebsd-arm-cgo), type IfData struct, Link_state uint8 pkg syscall (freebsd-arm-cgo), type IfData struct, Metric uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Mtu uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Noproto uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Obytes uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Oerrors uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Omcasts uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Opackets uint32 pkg syscall (freebsd-arm-cgo), type IfData struct, Physical uint8 pkg syscall (freebsd-arm-cgo), type IfData struct, Spare_char1 uint8 pkg syscall (freebsd-arm-cgo), type IfData struct, Spare_char2 uint8 pkg syscall (freebsd-arm-cgo), type IfData struct, Type uint8 pkg syscall (freebsd-arm-cgo), type IfMsghdr struct pkg syscall (freebsd-arm-cgo), type IfMsghdr struct, Addrs int32 pkg syscall (freebsd-arm-cgo), type IfMsghdr struct, Data IfData pkg syscall (freebsd-arm-cgo), type IfMsghdr struct, Flags int32 pkg syscall (freebsd-arm-cgo), type IfMsghdr struct, Index uint16 pkg syscall (freebsd-arm-cgo), type IfMsghdr struct, Msglen uint16 pkg syscall (freebsd-arm-cgo), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm-cgo), type IfMsghdr struct, Type uint8 pkg syscall (freebsd-arm-cgo), type IfMsghdr struct, Version uint8 pkg syscall (freebsd-arm-cgo), type IfaMsghdr struct pkg syscall (freebsd-arm-cgo), type IfaMsghdr struct, Addrs int32 pkg syscall (freebsd-arm-cgo), type IfaMsghdr struct, Flags int32 pkg syscall (freebsd-arm-cgo), type IfaMsghdr struct, Index uint16 pkg syscall (freebsd-arm-cgo), type IfaMsghdr struct, Metric int32 pkg syscall (freebsd-arm-cgo), type IfaMsghdr struct, Msglen uint16 pkg syscall (freebsd-arm-cgo), type IfaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm-cgo), type IfaMsghdr struct, Type uint8 pkg syscall (freebsd-arm-cgo), type IfaMsghdr struct, Version uint8 pkg syscall (freebsd-arm-cgo), type IfmaMsghdr struct pkg syscall (freebsd-arm-cgo), type IfmaMsghdr struct, Addrs int32 pkg syscall (freebsd-arm-cgo), type IfmaMsghdr struct, Flags int32 pkg syscall (freebsd-arm-cgo), type IfmaMsghdr struct, Index uint16 pkg syscall (freebsd-arm-cgo), type IfmaMsghdr struct, Msglen uint16 pkg syscall (freebsd-arm-cgo), type IfmaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm-cgo), type IfmaMsghdr struct, Type uint8 pkg syscall (freebsd-arm-cgo), type IfmaMsghdr struct, Version uint8 pkg syscall (freebsd-arm-cgo), type Inet6Pktinfo struct pkg syscall (freebsd-arm-cgo), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (freebsd-arm-cgo), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (freebsd-arm-cgo), type InterfaceAddrMessage struct pkg syscall (freebsd-arm-cgo), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (freebsd-arm-cgo), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (freebsd-arm-cgo), type InterfaceAnnounceMessage struct pkg syscall (freebsd-arm-cgo), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (freebsd-arm-cgo), type InterfaceMessage struct pkg syscall (freebsd-arm-cgo), type InterfaceMessage struct, Data []uint8 pkg syscall (freebsd-arm-cgo), type InterfaceMessage struct, Header IfMsghdr pkg syscall (freebsd-arm-cgo), type InterfaceMulticastAddrMessage struct pkg syscall (freebsd-arm-cgo), type InterfaceMulticastAddrMessage struct, Data []uint8 pkg syscall (freebsd-arm-cgo), type InterfaceMulticastAddrMessage struct, Header IfmaMsghdr pkg syscall (freebsd-arm-cgo), type Iovec struct pkg syscall (freebsd-arm-cgo), type Iovec struct, Base *uint8 pkg syscall (freebsd-arm-cgo), type Iovec struct, Len uint32 pkg syscall (freebsd-arm-cgo), type Kevent_t struct pkg syscall (freebsd-arm-cgo), type Kevent_t struct, Data int32 pkg syscall (freebsd-arm-cgo), type Kevent_t struct, Fflags uint32 pkg syscall (freebsd-arm-cgo), type Kevent_t struct, Filter int16 pkg syscall (freebsd-arm-cgo), type Kevent_t struct, Flags uint16 pkg syscall (freebsd-arm-cgo), type Kevent_t struct, Ident uint32 pkg syscall (freebsd-arm-cgo), type Kevent_t struct, Udata *uint8 pkg syscall (freebsd-arm-cgo), type Msghdr struct pkg syscall (freebsd-arm-cgo), type Msghdr struct, Control *uint8 pkg syscall (freebsd-arm-cgo), type Msghdr struct, Controllen uint32 pkg syscall (freebsd-arm-cgo), type Msghdr struct, Flags int32 pkg syscall (freebsd-arm-cgo), type Msghdr struct, Iov *Iovec pkg syscall (freebsd-arm-cgo), type Msghdr struct, Iovlen int32 pkg syscall (freebsd-arm-cgo), type Msghdr struct, Name *uint8 pkg syscall (freebsd-arm-cgo), type Msghdr struct, Namelen uint32 pkg syscall (freebsd-arm-cgo), type RawSockaddr struct, Data [14]int8 pkg syscall (freebsd-arm-cgo), type RawSockaddr struct, Family uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddr struct, Len uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (freebsd-arm-cgo), type RawSockaddrDatalink struct pkg syscall (freebsd-arm-cgo), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrDatalink struct, Data [46]int8 pkg syscall (freebsd-arm-cgo), type RawSockaddrDatalink struct, Family uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrDatalink struct, Index uint16 pkg syscall (freebsd-arm-cgo), type RawSockaddrDatalink struct, Len uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrDatalink struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrDatalink struct, Type uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrInet4 struct, Family uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrInet4 struct, Len uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (freebsd-arm-cgo), type RawSockaddrInet6 struct, Family uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrInet6 struct, Len uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrUnix struct pkg syscall (freebsd-arm-cgo), type RawSockaddrUnix struct, Family uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrUnix struct, Len uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrUnix struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm-cgo), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (freebsd-arm-cgo), type Rlimit struct pkg syscall (freebsd-arm-cgo), type Rlimit struct, Cur int64 pkg syscall (freebsd-arm-cgo), type Rlimit struct, Max int64 pkg syscall (freebsd-arm-cgo), type RouteMessage struct pkg syscall (freebsd-arm-cgo), type RouteMessage struct, Data []uint8 pkg syscall (freebsd-arm-cgo), type RouteMessage struct, Header RtMsghdr pkg syscall (freebsd-arm-cgo), type RoutingMessage interface, unexported methods pkg syscall (freebsd-arm-cgo), type RtMetrics struct pkg syscall (freebsd-arm-cgo), type RtMetrics struct, Expire uint32 pkg syscall (freebsd-arm-cgo), type RtMetrics struct, Filler [3]uint32 pkg syscall (freebsd-arm-cgo), type RtMetrics struct, Hopcount uint32 pkg syscall (freebsd-arm-cgo), type RtMetrics struct, Locks uint32 pkg syscall (freebsd-arm-cgo), type RtMetrics struct, Mtu uint32 pkg syscall (freebsd-arm-cgo), type RtMetrics struct, Pksent uint32 pkg syscall (freebsd-arm-cgo), type RtMetrics struct, Recvpipe uint32 pkg syscall (freebsd-arm-cgo), type RtMetrics struct, Rtt uint32 pkg syscall (freebsd-arm-cgo), type RtMetrics struct, Rttvar uint32 pkg syscall (freebsd-arm-cgo), type RtMetrics struct, Sendpipe uint32 pkg syscall (freebsd-arm-cgo), type RtMetrics struct, Ssthresh uint32 pkg syscall (freebsd-arm-cgo), type RtMetrics struct, Weight uint32 pkg syscall (freebsd-arm-cgo), type RtMsghdr struct pkg syscall (freebsd-arm-cgo), type RtMsghdr struct, Addrs int32 pkg syscall (freebsd-arm-cgo), type RtMsghdr struct, Errno int32 pkg syscall (freebsd-arm-cgo), type RtMsghdr struct, Flags int32 pkg syscall (freebsd-arm-cgo), type RtMsghdr struct, Fmask int32 pkg syscall (freebsd-arm-cgo), type RtMsghdr struct, Index uint16 pkg syscall (freebsd-arm-cgo), type RtMsghdr struct, Inits uint32 pkg syscall (freebsd-arm-cgo), type RtMsghdr struct, Msglen uint16 pkg syscall (freebsd-arm-cgo), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-arm-cgo), type RtMsghdr struct, Pid int32 pkg syscall (freebsd-arm-cgo), type RtMsghdr struct, Rmx RtMetrics pkg syscall (freebsd-arm-cgo), type RtMsghdr struct, Seq int32 pkg syscall (freebsd-arm-cgo), type RtMsghdr struct, Type uint8 pkg syscall (freebsd-arm-cgo), type RtMsghdr struct, Version uint8 pkg syscall (freebsd-arm-cgo), type Rusage struct, Idrss int32 pkg syscall (freebsd-arm-cgo), type Rusage struct, Inblock int32 pkg syscall (freebsd-arm-cgo), type Rusage struct, Isrss int32 pkg syscall (freebsd-arm-cgo), type Rusage struct, Ixrss int32 pkg syscall (freebsd-arm-cgo), type Rusage struct, Majflt int32 pkg syscall (freebsd-arm-cgo), type Rusage struct, Maxrss int32 pkg syscall (freebsd-arm-cgo), type Rusage struct, Minflt int32 pkg syscall (freebsd-arm-cgo), type Rusage struct, Msgrcv int32 pkg syscall (freebsd-arm-cgo), type Rusage struct, Msgsnd int32 pkg syscall (freebsd-arm-cgo), type Rusage struct, Nivcsw int32 pkg syscall (freebsd-arm-cgo), type Rusage struct, Nsignals int32 pkg syscall (freebsd-arm-cgo), type Rusage struct, Nswap int32 pkg syscall (freebsd-arm-cgo), type Rusage struct, Nvcsw int32 pkg syscall (freebsd-arm-cgo), type Rusage struct, Oublock int32 pkg syscall (freebsd-arm-cgo), type Rusage struct, Stime Timeval pkg syscall (freebsd-arm-cgo), type Rusage struct, Utime Timeval pkg syscall (freebsd-arm-cgo), type SockaddrDatalink struct pkg syscall (freebsd-arm-cgo), type SockaddrDatalink struct, Alen uint8 pkg syscall (freebsd-arm-cgo), type SockaddrDatalink struct, Data [46]int8 pkg syscall (freebsd-arm-cgo), type SockaddrDatalink struct, Family uint8 pkg syscall (freebsd-arm-cgo), type SockaddrDatalink struct, Index uint16 pkg syscall (freebsd-arm-cgo), type SockaddrDatalink struct, Len uint8 pkg syscall (freebsd-arm-cgo), type SockaddrDatalink struct, Nlen uint8 pkg syscall (freebsd-arm-cgo), type SockaddrDatalink struct, Slen uint8 pkg syscall (freebsd-arm-cgo), type SockaddrDatalink struct, Type uint8 pkg syscall (freebsd-arm-cgo), type SocketControlMessage struct pkg syscall (freebsd-arm-cgo), type SocketControlMessage struct, Data []uint8 pkg syscall (freebsd-arm-cgo), type SocketControlMessage struct, Header Cmsghdr pkg syscall (freebsd-arm-cgo), type Stat_t struct pkg syscall (freebsd-arm-cgo), type Stat_t struct, Atimespec Timespec pkg syscall (freebsd-arm-cgo), type Stat_t struct, Birthtimespec Timespec pkg syscall (freebsd-arm-cgo), type Stat_t struct, Blksize uint32 pkg syscall (freebsd-arm-cgo), type Stat_t struct, Blocks int64 pkg syscall (freebsd-arm-cgo), type Stat_t struct, Ctimespec Timespec pkg syscall (freebsd-arm-cgo), type Stat_t struct, Dev uint32 pkg syscall (freebsd-arm-cgo), type Stat_t struct, Flags uint32 pkg syscall (freebsd-arm-cgo), type Stat_t struct, Gen uint32 pkg syscall (freebsd-arm-cgo), type Stat_t struct, Gid uint32 pkg syscall (freebsd-arm-cgo), type Stat_t struct, Ino uint32 pkg syscall (freebsd-arm-cgo), type Stat_t struct, Lspare int32 pkg syscall (freebsd-arm-cgo), type Stat_t struct, Mode uint16 pkg syscall (freebsd-arm-cgo), type Stat_t struct, Mtimespec Timespec pkg syscall (freebsd-arm-cgo), type Stat_t struct, Nlink uint16 pkg syscall (freebsd-arm-cgo), type Stat_t struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-arm-cgo), type Stat_t struct, Rdev uint32 pkg syscall (freebsd-arm-cgo), type Stat_t struct, Size int64 pkg syscall (freebsd-arm-cgo), type Stat_t struct, Uid uint32 pkg syscall (freebsd-arm-cgo), type Statfs_t struct pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Asyncreads uint64 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Asyncwrites uint64 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Bavail int64 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Bfree uint64 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Blocks uint64 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Bsize uint64 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Charspare [80]int8 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Ffree int64 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Files uint64 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Flags uint64 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Fsid Fsid pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Fstypename [16]int8 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Iosize uint64 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Mntfromname [88]int8 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Mntonname [88]int8 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Namemax uint32 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Owner uint32 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Spare [10]uint64 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Syncreads uint64 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Syncwrites uint64 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Type uint32 pkg syscall (freebsd-arm-cgo), type Statfs_t struct, Version uint32 pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Chroot string pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Credential *Credential pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Noctty bool pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Ptrace bool pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Setctty bool pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Setpgid bool pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Setsid bool pkg syscall (freebsd-arm-cgo), type Timespec struct, Nsec int32 pkg syscall (freebsd-arm-cgo), type Timespec struct, Sec int64 pkg syscall (freebsd-arm-cgo), type Timeval struct, Sec int64 pkg syscall (freebsd-arm-cgo), type Timeval struct, Usec int32 pkg syscall (freebsd-arm-cgo), type WaitStatus uint32 pkg syscall (freebsd-arm-cgo), var Stderr int pkg syscall (freebsd-arm-cgo), var Stdin int pkg syscall (freebsd-arm-cgo), var Stdout int pkg syscall (linux-386), const CLONE_CHILD_CLEARTID = 2097152 pkg syscall (linux-386), const CLONE_CHILD_CLEARTID ideal-int pkg syscall (linux-386), const CLONE_CHILD_SETTID = 16777216 pkg syscall (linux-386), const CLONE_CHILD_SETTID ideal-int pkg syscall (linux-386), const CLONE_DETACHED = 4194304 pkg syscall (linux-386), const CLONE_DETACHED ideal-int pkg syscall (linux-386), const CLONE_FILES = 1024 pkg syscall (linux-386), const CLONE_FILES ideal-int pkg syscall (linux-386), const CLONE_FS = 512 pkg syscall (linux-386), const CLONE_FS ideal-int pkg syscall (linux-386), const CLONE_IO = 2147483648 pkg syscall (linux-386), const CLONE_IO ideal-int pkg syscall (linux-386), const CLONE_NEWIPC = 134217728 pkg syscall (linux-386), const CLONE_NEWIPC ideal-int pkg syscall (linux-386), const CLONE_NEWNET = 1073741824 pkg syscall (linux-386), const CLONE_NEWNET ideal-int pkg syscall (linux-386), const CLONE_NEWNS = 131072 pkg syscall (linux-386), const CLONE_NEWNS ideal-int pkg syscall (linux-386), const CLONE_NEWPID = 536870912 pkg syscall (linux-386), const CLONE_NEWPID ideal-int pkg syscall (linux-386), const CLONE_NEWUSER = 268435456 pkg syscall (linux-386), const CLONE_NEWUSER ideal-int pkg syscall (linux-386), const CLONE_NEWUTS = 67108864 pkg syscall (linux-386), const CLONE_NEWUTS ideal-int pkg syscall (linux-386), const CLONE_PARENT = 32768 pkg syscall (linux-386), const CLONE_PARENT ideal-int pkg syscall (linux-386), const CLONE_PARENT_SETTID = 1048576 pkg syscall (linux-386), const CLONE_PARENT_SETTID ideal-int pkg syscall (linux-386), const CLONE_PTRACE = 8192 pkg syscall (linux-386), const CLONE_PTRACE ideal-int pkg syscall (linux-386), const CLONE_SETTLS = 524288 pkg syscall (linux-386), const CLONE_SETTLS ideal-int pkg syscall (linux-386), const CLONE_SIGHAND = 2048 pkg syscall (linux-386), const CLONE_SIGHAND ideal-int pkg syscall (linux-386), const CLONE_SYSVSEM = 262144 pkg syscall (linux-386), const CLONE_SYSVSEM ideal-int pkg syscall (linux-386), const CLONE_THREAD = 65536 pkg syscall (linux-386), const CLONE_THREAD ideal-int pkg syscall (linux-386), const CLONE_UNTRACED = 8388608 pkg syscall (linux-386), const CLONE_UNTRACED ideal-int pkg syscall (linux-386), const CLONE_VFORK = 16384 pkg syscall (linux-386), const CLONE_VFORK ideal-int pkg syscall (linux-386), const CLONE_VM = 256 pkg syscall (linux-386), const CLONE_VM ideal-int pkg syscall (linux-386), const ICMPV6_FILTER = 1 pkg syscall (linux-386), const ICMPV6_FILTER ideal-int pkg syscall (linux-386), const PRIO_PGRP = 1 pkg syscall (linux-386), const PRIO_PGRP ideal-int pkg syscall (linux-386), const PRIO_PROCESS = 0 pkg syscall (linux-386), const PRIO_PROCESS ideal-int pkg syscall (linux-386), const PRIO_USER = 2 pkg syscall (linux-386), const PRIO_USER ideal-int pkg syscall (linux-386), const SizeofICMPv6Filter = 32 pkg syscall (linux-386), const SizeofICMPv6Filter ideal-int pkg syscall (linux-386), const SizeofIPv6MTUInfo = 32 pkg syscall (linux-386), const SizeofIPv6MTUInfo ideal-int pkg syscall (linux-386), const TCIFLUSH = 0 pkg syscall (linux-386), const TCIFLUSH ideal-int pkg syscall (linux-386), const TCIOFLUSH = 2 pkg syscall (linux-386), const TCIOFLUSH ideal-int pkg syscall (linux-386), const TCOFLUSH = 1 pkg syscall (linux-386), const TCOFLUSH ideal-int pkg syscall (linux-386), func Dup3(int, int, int) error pkg syscall (linux-386), func Getpriority(int, int) (int, error) pkg syscall (linux-386), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (linux-386), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (linux-386), func Setpriority(int, int, int) error pkg syscall (linux-386), func SetsockoptByte(int, int, int, uint8) error pkg syscall (linux-386), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (linux-386), type ICMPv6Filter struct pkg syscall (linux-386), type ICMPv6Filter struct, Data [8]uint32 pkg syscall (linux-386), type IPv6MTUInfo struct pkg syscall (linux-386), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (linux-386), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (linux-386), type SysProcAttr struct, Cloneflags uintptr pkg syscall (linux-386-cgo), const CLONE_CHILD_CLEARTID = 2097152 pkg syscall (linux-386-cgo), const CLONE_CHILD_CLEARTID ideal-int pkg syscall (linux-386-cgo), const CLONE_CHILD_SETTID = 16777216 pkg syscall (linux-386-cgo), const CLONE_CHILD_SETTID ideal-int pkg syscall (linux-386-cgo), const CLONE_DETACHED = 4194304 pkg syscall (linux-386-cgo), const CLONE_DETACHED ideal-int pkg syscall (linux-386-cgo), const CLONE_FILES = 1024 pkg syscall (linux-386-cgo), const CLONE_FILES ideal-int pkg syscall (linux-386-cgo), const CLONE_FS = 512 pkg syscall (linux-386-cgo), const CLONE_FS ideal-int pkg syscall (linux-386-cgo), const CLONE_IO = 2147483648 pkg syscall (linux-386-cgo), const CLONE_IO ideal-int pkg syscall (linux-386-cgo), const CLONE_NEWIPC = 134217728 pkg syscall (linux-386-cgo), const CLONE_NEWIPC ideal-int pkg syscall (linux-386-cgo), const CLONE_NEWNET = 1073741824 pkg syscall (linux-386-cgo), const CLONE_NEWNET ideal-int pkg syscall (linux-386-cgo), const CLONE_NEWNS = 131072 pkg syscall (linux-386-cgo), const CLONE_NEWNS ideal-int pkg syscall (linux-386-cgo), const CLONE_NEWPID = 536870912 pkg syscall (linux-386-cgo), const CLONE_NEWPID ideal-int pkg syscall (linux-386-cgo), const CLONE_NEWUSER = 268435456 pkg syscall (linux-386-cgo), const CLONE_NEWUSER ideal-int pkg syscall (linux-386-cgo), const CLONE_NEWUTS = 67108864 pkg syscall (linux-386-cgo), const CLONE_NEWUTS ideal-int pkg syscall (linux-386-cgo), const CLONE_PARENT = 32768 pkg syscall (linux-386-cgo), const CLONE_PARENT ideal-int pkg syscall (linux-386-cgo), const CLONE_PARENT_SETTID = 1048576 pkg syscall (linux-386-cgo), const CLONE_PARENT_SETTID ideal-int pkg syscall (linux-386-cgo), const CLONE_PTRACE = 8192 pkg syscall (linux-386-cgo), const CLONE_PTRACE ideal-int pkg syscall (linux-386-cgo), const CLONE_SETTLS = 524288 pkg syscall (linux-386-cgo), const CLONE_SETTLS ideal-int pkg syscall (linux-386-cgo), const CLONE_SIGHAND = 2048 pkg syscall (linux-386-cgo), const CLONE_SIGHAND ideal-int pkg syscall (linux-386-cgo), const CLONE_SYSVSEM = 262144 pkg syscall (linux-386-cgo), const CLONE_SYSVSEM ideal-int pkg syscall (linux-386-cgo), const CLONE_THREAD = 65536 pkg syscall (linux-386-cgo), const CLONE_THREAD ideal-int pkg syscall (linux-386-cgo), const CLONE_UNTRACED = 8388608 pkg syscall (linux-386-cgo), const CLONE_UNTRACED ideal-int pkg syscall (linux-386-cgo), const CLONE_VFORK = 16384 pkg syscall (linux-386-cgo), const CLONE_VFORK ideal-int pkg syscall (linux-386-cgo), const CLONE_VM = 256 pkg syscall (linux-386-cgo), const CLONE_VM ideal-int pkg syscall (linux-386-cgo), const ICMPV6_FILTER = 1 pkg syscall (linux-386-cgo), const ICMPV6_FILTER ideal-int pkg syscall (linux-386-cgo), const PRIO_PGRP = 1 pkg syscall (linux-386-cgo), const PRIO_PGRP ideal-int pkg syscall (linux-386-cgo), const PRIO_PROCESS = 0 pkg syscall (linux-386-cgo), const PRIO_PROCESS ideal-int pkg syscall (linux-386-cgo), const PRIO_USER = 2 pkg syscall (linux-386-cgo), const PRIO_USER ideal-int pkg syscall (linux-386-cgo), const SizeofICMPv6Filter = 32 pkg syscall (linux-386-cgo), const SizeofICMPv6Filter ideal-int pkg syscall (linux-386-cgo), const SizeofIPv6MTUInfo = 32 pkg syscall (linux-386-cgo), const SizeofIPv6MTUInfo ideal-int pkg syscall (linux-386-cgo), const TCIFLUSH = 0 pkg syscall (linux-386-cgo), const TCIFLUSH ideal-int pkg syscall (linux-386-cgo), const TCIOFLUSH = 2 pkg syscall (linux-386-cgo), const TCIOFLUSH ideal-int pkg syscall (linux-386-cgo), const TCOFLUSH = 1 pkg syscall (linux-386-cgo), const TCOFLUSH ideal-int pkg syscall (linux-386-cgo), func Dup3(int, int, int) error pkg syscall (linux-386-cgo), func Getpriority(int, int) (int, error) pkg syscall (linux-386-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (linux-386-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (linux-386-cgo), func Setpriority(int, int, int) error pkg syscall (linux-386-cgo), func SetsockoptByte(int, int, int, uint8) error pkg syscall (linux-386-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (linux-386-cgo), type ICMPv6Filter struct pkg syscall (linux-386-cgo), type ICMPv6Filter struct, Data [8]uint32 pkg syscall (linux-386-cgo), type IPv6MTUInfo struct pkg syscall (linux-386-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (linux-386-cgo), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (linux-386-cgo), type SysProcAttr struct, Cloneflags uintptr pkg syscall (linux-amd64), const CLONE_CHILD_CLEARTID = 2097152 pkg syscall (linux-amd64), const CLONE_CHILD_CLEARTID ideal-int pkg syscall (linux-amd64), const CLONE_CHILD_SETTID = 16777216 pkg syscall (linux-amd64), const CLONE_CHILD_SETTID ideal-int pkg syscall (linux-amd64), const CLONE_DETACHED = 4194304 pkg syscall (linux-amd64), const CLONE_DETACHED ideal-int pkg syscall (linux-amd64), const CLONE_FILES = 1024 pkg syscall (linux-amd64), const CLONE_FILES ideal-int pkg syscall (linux-amd64), const CLONE_FS = 512 pkg syscall (linux-amd64), const CLONE_FS ideal-int pkg syscall (linux-amd64), const CLONE_IO = 2147483648 pkg syscall (linux-amd64), const CLONE_IO ideal-int pkg syscall (linux-amd64), const CLONE_NEWIPC = 134217728 pkg syscall (linux-amd64), const CLONE_NEWIPC ideal-int pkg syscall (linux-amd64), const CLONE_NEWNET = 1073741824 pkg syscall (linux-amd64), const CLONE_NEWNET ideal-int pkg syscall (linux-amd64), const CLONE_NEWNS = 131072 pkg syscall (linux-amd64), const CLONE_NEWNS ideal-int pkg syscall (linux-amd64), const CLONE_NEWPID = 536870912 pkg syscall (linux-amd64), const CLONE_NEWPID ideal-int pkg syscall (linux-amd64), const CLONE_NEWUSER = 268435456 pkg syscall (linux-amd64), const CLONE_NEWUSER ideal-int pkg syscall (linux-amd64), const CLONE_NEWUTS = 67108864 pkg syscall (linux-amd64), const CLONE_NEWUTS ideal-int pkg syscall (linux-amd64), const CLONE_PARENT = 32768 pkg syscall (linux-amd64), const CLONE_PARENT ideal-int pkg syscall (linux-amd64), const CLONE_PARENT_SETTID = 1048576 pkg syscall (linux-amd64), const CLONE_PARENT_SETTID ideal-int pkg syscall (linux-amd64), const CLONE_PTRACE = 8192 pkg syscall (linux-amd64), const CLONE_PTRACE ideal-int pkg syscall (linux-amd64), const CLONE_SETTLS = 524288 pkg syscall (linux-amd64), const CLONE_SETTLS ideal-int pkg syscall (linux-amd64), const CLONE_SIGHAND = 2048 pkg syscall (linux-amd64), const CLONE_SIGHAND ideal-int pkg syscall (linux-amd64), const CLONE_SYSVSEM = 262144 pkg syscall (linux-amd64), const CLONE_SYSVSEM ideal-int pkg syscall (linux-amd64), const CLONE_THREAD = 65536 pkg syscall (linux-amd64), const CLONE_THREAD ideal-int pkg syscall (linux-amd64), const CLONE_UNTRACED = 8388608 pkg syscall (linux-amd64), const CLONE_UNTRACED ideal-int pkg syscall (linux-amd64), const CLONE_VFORK = 16384 pkg syscall (linux-amd64), const CLONE_VFORK ideal-int pkg syscall (linux-amd64), const CLONE_VM = 256 pkg syscall (linux-amd64), const CLONE_VM ideal-int pkg syscall (linux-amd64), const ICMPV6_FILTER = 1 pkg syscall (linux-amd64), const ICMPV6_FILTER ideal-int pkg syscall (linux-amd64), const PRIO_PGRP = 1 pkg syscall (linux-amd64), const PRIO_PGRP ideal-int pkg syscall (linux-amd64), const PRIO_PROCESS = 0 pkg syscall (linux-amd64), const PRIO_PROCESS ideal-int pkg syscall (linux-amd64), const PRIO_USER = 2 pkg syscall (linux-amd64), const PRIO_USER ideal-int pkg syscall (linux-amd64), const SizeofICMPv6Filter = 32 pkg syscall (linux-amd64), const SizeofICMPv6Filter ideal-int pkg syscall (linux-amd64), const SizeofIPv6MTUInfo = 32 pkg syscall (linux-amd64), const SizeofIPv6MTUInfo ideal-int pkg syscall (linux-amd64), const TCIFLUSH = 0 pkg syscall (linux-amd64), const TCIFLUSH ideal-int pkg syscall (linux-amd64), const TCIOFLUSH = 2 pkg syscall (linux-amd64), const TCIOFLUSH ideal-int pkg syscall (linux-amd64), const TCOFLUSH = 1 pkg syscall (linux-amd64), const TCOFLUSH ideal-int pkg syscall (linux-amd64), func Dup3(int, int, int) error pkg syscall (linux-amd64), func Getpriority(int, int) (int, error) pkg syscall (linux-amd64), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (linux-amd64), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (linux-amd64), func Setpriority(int, int, int) error pkg syscall (linux-amd64), func SetsockoptByte(int, int, int, uint8) error pkg syscall (linux-amd64), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (linux-amd64), type ICMPv6Filter struct pkg syscall (linux-amd64), type ICMPv6Filter struct, Data [8]uint32 pkg syscall (linux-amd64), type IPv6MTUInfo struct pkg syscall (linux-amd64), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (linux-amd64), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (linux-amd64), type SysProcAttr struct, Cloneflags uintptr pkg syscall (linux-amd64-cgo), const CLONE_CHILD_CLEARTID = 2097152 pkg syscall (linux-amd64-cgo), const CLONE_CHILD_CLEARTID ideal-int pkg syscall (linux-amd64-cgo), const CLONE_CHILD_SETTID = 16777216 pkg syscall (linux-amd64-cgo), const CLONE_CHILD_SETTID ideal-int pkg syscall (linux-amd64-cgo), const CLONE_DETACHED = 4194304 pkg syscall (linux-amd64-cgo), const CLONE_DETACHED ideal-int pkg syscall (linux-amd64-cgo), const CLONE_FILES = 1024 pkg syscall (linux-amd64-cgo), const CLONE_FILES ideal-int pkg syscall (linux-amd64-cgo), const CLONE_FS = 512 pkg syscall (linux-amd64-cgo), const CLONE_FS ideal-int pkg syscall (linux-amd64-cgo), const CLONE_IO = 2147483648 pkg syscall (linux-amd64-cgo), const CLONE_IO ideal-int pkg syscall (linux-amd64-cgo), const CLONE_NEWIPC = 134217728 pkg syscall (linux-amd64-cgo), const CLONE_NEWIPC ideal-int pkg syscall (linux-amd64-cgo), const CLONE_NEWNET = 1073741824 pkg syscall (linux-amd64-cgo), const CLONE_NEWNET ideal-int pkg syscall (linux-amd64-cgo), const CLONE_NEWNS = 131072 pkg syscall (linux-amd64-cgo), const CLONE_NEWNS ideal-int pkg syscall (linux-amd64-cgo), const CLONE_NEWPID = 536870912 pkg syscall (linux-amd64-cgo), const CLONE_NEWPID ideal-int pkg syscall (linux-amd64-cgo), const CLONE_NEWUSER = 268435456 pkg syscall (linux-amd64-cgo), const CLONE_NEWUSER ideal-int pkg syscall (linux-amd64-cgo), const CLONE_NEWUTS = 67108864 pkg syscall (linux-amd64-cgo), const CLONE_NEWUTS ideal-int pkg syscall (linux-amd64-cgo), const CLONE_PARENT = 32768 pkg syscall (linux-amd64-cgo), const CLONE_PARENT ideal-int pkg syscall (linux-amd64-cgo), const CLONE_PARENT_SETTID = 1048576 pkg syscall (linux-amd64-cgo), const CLONE_PARENT_SETTID ideal-int pkg syscall (linux-amd64-cgo), const CLONE_PTRACE = 8192 pkg syscall (linux-amd64-cgo), const CLONE_PTRACE ideal-int pkg syscall (linux-amd64-cgo), const CLONE_SETTLS = 524288 pkg syscall (linux-amd64-cgo), const CLONE_SETTLS ideal-int pkg syscall (linux-amd64-cgo), const CLONE_SIGHAND = 2048 pkg syscall (linux-amd64-cgo), const CLONE_SIGHAND ideal-int pkg syscall (linux-amd64-cgo), const CLONE_SYSVSEM = 262144 pkg syscall (linux-amd64-cgo), const CLONE_SYSVSEM ideal-int pkg syscall (linux-amd64-cgo), const CLONE_THREAD = 65536 pkg syscall (linux-amd64-cgo), const CLONE_THREAD ideal-int pkg syscall (linux-amd64-cgo), const CLONE_UNTRACED = 8388608 pkg syscall (linux-amd64-cgo), const CLONE_UNTRACED ideal-int pkg syscall (linux-amd64-cgo), const CLONE_VFORK = 16384 pkg syscall (linux-amd64-cgo), const CLONE_VFORK ideal-int pkg syscall (linux-amd64-cgo), const CLONE_VM = 256 pkg syscall (linux-amd64-cgo), const CLONE_VM ideal-int pkg syscall (linux-amd64-cgo), const ICMPV6_FILTER = 1 pkg syscall (linux-amd64-cgo), const ICMPV6_FILTER ideal-int pkg syscall (linux-amd64-cgo), const PRIO_PGRP = 1 pkg syscall (linux-amd64-cgo), const PRIO_PGRP ideal-int pkg syscall (linux-amd64-cgo), const PRIO_PROCESS = 0 pkg syscall (linux-amd64-cgo), const PRIO_PROCESS ideal-int pkg syscall (linux-amd64-cgo), const PRIO_USER = 2 pkg syscall (linux-amd64-cgo), const PRIO_USER ideal-int pkg syscall (linux-amd64-cgo), const SizeofICMPv6Filter = 32 pkg syscall (linux-amd64-cgo), const SizeofICMPv6Filter ideal-int pkg syscall (linux-amd64-cgo), const SizeofIPv6MTUInfo = 32 pkg syscall (linux-amd64-cgo), const SizeofIPv6MTUInfo ideal-int pkg syscall (linux-amd64-cgo), const TCIFLUSH = 0 pkg syscall (linux-amd64-cgo), const TCIFLUSH ideal-int pkg syscall (linux-amd64-cgo), const TCIOFLUSH = 2 pkg syscall (linux-amd64-cgo), const TCIOFLUSH ideal-int pkg syscall (linux-amd64-cgo), const TCOFLUSH = 1 pkg syscall (linux-amd64-cgo), const TCOFLUSH ideal-int pkg syscall (linux-amd64-cgo), func Dup3(int, int, int) error pkg syscall (linux-amd64-cgo), func Getpriority(int, int) (int, error) pkg syscall (linux-amd64-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (linux-amd64-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (linux-amd64-cgo), func Setpriority(int, int, int) error pkg syscall (linux-amd64-cgo), func SetsockoptByte(int, int, int, uint8) error pkg syscall (linux-amd64-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (linux-amd64-cgo), type ICMPv6Filter struct pkg syscall (linux-amd64-cgo), type ICMPv6Filter struct, Data [8]uint32 pkg syscall (linux-amd64-cgo), type IPv6MTUInfo struct pkg syscall (linux-amd64-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (linux-amd64-cgo), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Cloneflags uintptr pkg syscall (linux-arm), const CLONE_CHILD_CLEARTID = 2097152 pkg syscall (linux-arm), const CLONE_CHILD_CLEARTID ideal-int pkg syscall (linux-arm), const CLONE_CHILD_SETTID = 16777216 pkg syscall (linux-arm), const CLONE_CHILD_SETTID ideal-int pkg syscall (linux-arm), const CLONE_DETACHED = 4194304 pkg syscall (linux-arm), const CLONE_DETACHED ideal-int pkg syscall (linux-arm), const CLONE_FILES = 1024 pkg syscall (linux-arm), const CLONE_FILES ideal-int pkg syscall (linux-arm), const CLONE_FS = 512 pkg syscall (linux-arm), const CLONE_FS ideal-int pkg syscall (linux-arm), const CLONE_IO = 2147483648 pkg syscall (linux-arm), const CLONE_IO ideal-int pkg syscall (linux-arm), const CLONE_NEWIPC = 134217728 pkg syscall (linux-arm), const CLONE_NEWIPC ideal-int pkg syscall (linux-arm), const CLONE_NEWNET = 1073741824 pkg syscall (linux-arm), const CLONE_NEWNET ideal-int pkg syscall (linux-arm), const CLONE_NEWNS = 131072 pkg syscall (linux-arm), const CLONE_NEWNS ideal-int pkg syscall (linux-arm), const CLONE_NEWPID = 536870912 pkg syscall (linux-arm), const CLONE_NEWPID ideal-int pkg syscall (linux-arm), const CLONE_NEWUSER = 268435456 pkg syscall (linux-arm), const CLONE_NEWUSER ideal-int pkg syscall (linux-arm), const CLONE_NEWUTS = 67108864 pkg syscall (linux-arm), const CLONE_NEWUTS ideal-int pkg syscall (linux-arm), const CLONE_PARENT = 32768 pkg syscall (linux-arm), const CLONE_PARENT ideal-int pkg syscall (linux-arm), const CLONE_PARENT_SETTID = 1048576 pkg syscall (linux-arm), const CLONE_PARENT_SETTID ideal-int pkg syscall (linux-arm), const CLONE_PTRACE = 8192 pkg syscall (linux-arm), const CLONE_PTRACE ideal-int pkg syscall (linux-arm), const CLONE_SETTLS = 524288 pkg syscall (linux-arm), const CLONE_SETTLS ideal-int pkg syscall (linux-arm), const CLONE_SIGHAND = 2048 pkg syscall (linux-arm), const CLONE_SIGHAND ideal-int pkg syscall (linux-arm), const CLONE_SYSVSEM = 262144 pkg syscall (linux-arm), const CLONE_SYSVSEM ideal-int pkg syscall (linux-arm), const CLONE_THREAD = 65536 pkg syscall (linux-arm), const CLONE_THREAD ideal-int pkg syscall (linux-arm), const CLONE_UNTRACED = 8388608 pkg syscall (linux-arm), const CLONE_UNTRACED ideal-int pkg syscall (linux-arm), const CLONE_VFORK = 16384 pkg syscall (linux-arm), const CLONE_VFORK ideal-int pkg syscall (linux-arm), const CLONE_VM = 256 pkg syscall (linux-arm), const CLONE_VM ideal-int pkg syscall (linux-arm), const ICMPV6_FILTER = 1 pkg syscall (linux-arm), const ICMPV6_FILTER ideal-int pkg syscall (linux-arm), const PRIO_PGRP = 1 pkg syscall (linux-arm), const PRIO_PGRP ideal-int pkg syscall (linux-arm), const PRIO_PROCESS = 0 pkg syscall (linux-arm), const PRIO_PROCESS ideal-int pkg syscall (linux-arm), const PRIO_USER = 2 pkg syscall (linux-arm), const PRIO_USER ideal-int pkg syscall (linux-arm), const SizeofICMPv6Filter = 32 pkg syscall (linux-arm), const SizeofICMPv6Filter ideal-int pkg syscall (linux-arm), const SizeofIPv6MTUInfo = 32 pkg syscall (linux-arm), const SizeofIPv6MTUInfo ideal-int pkg syscall (linux-arm), const TCIFLUSH = 0 pkg syscall (linux-arm), const TCIFLUSH ideal-int pkg syscall (linux-arm), const TCIOFLUSH = 2 pkg syscall (linux-arm), const TCIOFLUSH ideal-int pkg syscall (linux-arm), const TCOFLUSH = 1 pkg syscall (linux-arm), const TCOFLUSH ideal-int pkg syscall (linux-arm), func Dup3(int, int, int) error pkg syscall (linux-arm), func Getpriority(int, int) (int, error) pkg syscall (linux-arm), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (linux-arm), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (linux-arm), func Setpriority(int, int, int) error pkg syscall (linux-arm), func SetsockoptByte(int, int, int, uint8) error pkg syscall (linux-arm), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (linux-arm), type ICMPv6Filter struct pkg syscall (linux-arm), type ICMPv6Filter struct, Data [8]uint32 pkg syscall (linux-arm), type IPv6MTUInfo struct pkg syscall (linux-arm), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (linux-arm), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (linux-arm), type SysProcAttr struct, Cloneflags uintptr pkg syscall (linux-arm-cgo), const AF_ALG ideal-int pkg syscall (linux-arm-cgo), const AF_APPLETALK ideal-int pkg syscall (linux-arm-cgo), const AF_ASH ideal-int pkg syscall (linux-arm-cgo), const AF_ATMPVC ideal-int pkg syscall (linux-arm-cgo), const AF_ATMSVC ideal-int pkg syscall (linux-arm-cgo), const AF_AX25 ideal-int pkg syscall (linux-arm-cgo), const AF_BLUETOOTH ideal-int pkg syscall (linux-arm-cgo), const AF_BRIDGE ideal-int pkg syscall (linux-arm-cgo), const AF_CAIF ideal-int pkg syscall (linux-arm-cgo), const AF_CAN ideal-int pkg syscall (linux-arm-cgo), const AF_DECnet ideal-int pkg syscall (linux-arm-cgo), const AF_ECONET ideal-int pkg syscall (linux-arm-cgo), const AF_FILE ideal-int pkg syscall (linux-arm-cgo), const AF_IEEE802154 ideal-int pkg syscall (linux-arm-cgo), const AF_IPX ideal-int pkg syscall (linux-arm-cgo), const AF_IRDA ideal-int pkg syscall (linux-arm-cgo), const AF_ISDN ideal-int pkg syscall (linux-arm-cgo), const AF_IUCV ideal-int pkg syscall (linux-arm-cgo), const AF_KEY ideal-int pkg syscall (linux-arm-cgo), const AF_LLC ideal-int pkg syscall (linux-arm-cgo), const AF_LOCAL ideal-int pkg syscall (linux-arm-cgo), const AF_MAX ideal-int pkg syscall (linux-arm-cgo), const AF_NETBEUI ideal-int pkg syscall (linux-arm-cgo), const AF_NETLINK ideal-int pkg syscall (linux-arm-cgo), const AF_NETROM ideal-int pkg syscall (linux-arm-cgo), const AF_PACKET ideal-int pkg syscall (linux-arm-cgo), const AF_PHONET ideal-int pkg syscall (linux-arm-cgo), const AF_PPPOX ideal-int pkg syscall (linux-arm-cgo), const AF_RDS ideal-int pkg syscall (linux-arm-cgo), const AF_ROSE ideal-int pkg syscall (linux-arm-cgo), const AF_ROUTE ideal-int pkg syscall (linux-arm-cgo), const AF_RXRPC ideal-int pkg syscall (linux-arm-cgo), const AF_SECURITY ideal-int pkg syscall (linux-arm-cgo), const AF_SNA ideal-int pkg syscall (linux-arm-cgo), const AF_TIPC ideal-int pkg syscall (linux-arm-cgo), const AF_WANPIPE ideal-int pkg syscall (linux-arm-cgo), const AF_X25 ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_ADAPT ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_APPLETLK ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_ARCNET ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_ASH ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_ATM ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_AX25 ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_BIF ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_CHAOS ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_CISCO ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_CSLIP ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_CSLIP6 ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_DDCMP ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_DLCI ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_ECONET ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_EETHER ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_ETHER ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_EUI64 ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_FCAL ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_FCFABRIC ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_FCPL ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_FCPP ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_FDDI ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_FRAD ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_HDLC ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_HIPPI ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_HWX25 ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_IEEE1394 ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_IEEE802 ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_IEEE80211 ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_IEEE80211_PRISM ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_IEEE80211_RADIOTAP ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_IEEE802154 ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_IEEE802154_PHY ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_IEEE802_TR ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_INFINIBAND ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_IPDDP ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_IPGRE ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_IRDA ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_LAPB ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_LOCALTLK ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_LOOPBACK ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_METRICOM ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_NETROM ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_NONE ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_PIMREG ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_PPP ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_PRONET ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_RAWHDLC ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_ROSE ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_RSRVD ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_SIT ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_SKIP ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_SLIP ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_SLIP6 ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_TUNNEL ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_TUNNEL6 ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_VOID ideal-int pkg syscall (linux-arm-cgo), const ARPHRD_X25 ideal-int pkg syscall (linux-arm-cgo), const B0 ideal-int pkg syscall (linux-arm-cgo), const B1000000 ideal-int pkg syscall (linux-arm-cgo), const B110 ideal-int pkg syscall (linux-arm-cgo), const B115200 ideal-int pkg syscall (linux-arm-cgo), const B1152000 ideal-int pkg syscall (linux-arm-cgo), const B1200 ideal-int pkg syscall (linux-arm-cgo), const B134 ideal-int pkg syscall (linux-arm-cgo), const B150 ideal-int pkg syscall (linux-arm-cgo), const B1500000 ideal-int pkg syscall (linux-arm-cgo), const B1800 ideal-int pkg syscall (linux-arm-cgo), const B19200 ideal-int pkg syscall (linux-arm-cgo), const B200 ideal-int pkg syscall (linux-arm-cgo), const B2000000 ideal-int pkg syscall (linux-arm-cgo), const B230400 ideal-int pkg syscall (linux-arm-cgo), const B2400 ideal-int pkg syscall (linux-arm-cgo), const B2500000 ideal-int pkg syscall (linux-arm-cgo), const B300 ideal-int pkg syscall (linux-arm-cgo), const B3000000 ideal-int pkg syscall (linux-arm-cgo), const B3500000 ideal-int pkg syscall (linux-arm-cgo), const B38400 ideal-int pkg syscall (linux-arm-cgo), const B4000000 ideal-int pkg syscall (linux-arm-cgo), const B460800 ideal-int pkg syscall (linux-arm-cgo), const B4800 ideal-int pkg syscall (linux-arm-cgo), const B50 ideal-int pkg syscall (linux-arm-cgo), const B500000 ideal-int pkg syscall (linux-arm-cgo), const B57600 ideal-int pkg syscall (linux-arm-cgo), const B576000 ideal-int pkg syscall (linux-arm-cgo), const B600 ideal-int pkg syscall (linux-arm-cgo), const B75 ideal-int pkg syscall (linux-arm-cgo), const B921600 ideal-int pkg syscall (linux-arm-cgo), const B9600 ideal-int pkg syscall (linux-arm-cgo), const BPF_A ideal-int pkg syscall (linux-arm-cgo), const BPF_ABS ideal-int pkg syscall (linux-arm-cgo), const BPF_ADD ideal-int pkg syscall (linux-arm-cgo), const BPF_ALU ideal-int pkg syscall (linux-arm-cgo), const BPF_AND ideal-int pkg syscall (linux-arm-cgo), const BPF_B ideal-int pkg syscall (linux-arm-cgo), const BPF_DIV ideal-int pkg syscall (linux-arm-cgo), const BPF_H ideal-int pkg syscall (linux-arm-cgo), const BPF_IMM ideal-int pkg syscall (linux-arm-cgo), const BPF_IND ideal-int pkg syscall (linux-arm-cgo), const BPF_JA ideal-int pkg syscall (linux-arm-cgo), const BPF_JEQ ideal-int pkg syscall (linux-arm-cgo), const BPF_JGE ideal-int pkg syscall (linux-arm-cgo), const BPF_JGT ideal-int pkg syscall (linux-arm-cgo), const BPF_JMP ideal-int pkg syscall (linux-arm-cgo), const BPF_JSET ideal-int pkg syscall (linux-arm-cgo), const BPF_K ideal-int pkg syscall (linux-arm-cgo), const BPF_LD ideal-int pkg syscall (linux-arm-cgo), const BPF_LDX ideal-int pkg syscall (linux-arm-cgo), const BPF_LEN ideal-int pkg syscall (linux-arm-cgo), const BPF_LSH ideal-int pkg syscall (linux-arm-cgo), const BPF_MAJOR_VERSION ideal-int pkg syscall (linux-arm-cgo), const BPF_MAXINSNS ideal-int pkg syscall (linux-arm-cgo), const BPF_MEM ideal-int pkg syscall (linux-arm-cgo), const BPF_MEMWORDS ideal-int pkg syscall (linux-arm-cgo), const BPF_MINOR_VERSION ideal-int pkg syscall (linux-arm-cgo), const BPF_MISC ideal-int pkg syscall (linux-arm-cgo), const BPF_MSH ideal-int pkg syscall (linux-arm-cgo), const BPF_MUL ideal-int pkg syscall (linux-arm-cgo), const BPF_NEG ideal-int pkg syscall (linux-arm-cgo), const BPF_OR ideal-int pkg syscall (linux-arm-cgo), const BPF_RET ideal-int pkg syscall (linux-arm-cgo), const BPF_RSH ideal-int pkg syscall (linux-arm-cgo), const BPF_ST ideal-int pkg syscall (linux-arm-cgo), const BPF_STX ideal-int pkg syscall (linux-arm-cgo), const BPF_SUB ideal-int pkg syscall (linux-arm-cgo), const BPF_TAX ideal-int pkg syscall (linux-arm-cgo), const BPF_TXA ideal-int pkg syscall (linux-arm-cgo), const BPF_W ideal-int pkg syscall (linux-arm-cgo), const BPF_X ideal-int pkg syscall (linux-arm-cgo), const BRKINT ideal-int pkg syscall (linux-arm-cgo), const CLOCAL ideal-int pkg syscall (linux-arm-cgo), const CLONE_CHILD_CLEARTID = 2097152 pkg syscall (linux-arm-cgo), const CLONE_CHILD_CLEARTID ideal-int pkg syscall (linux-arm-cgo), const CLONE_CHILD_SETTID = 16777216 pkg syscall (linux-arm-cgo), const CLONE_CHILD_SETTID ideal-int pkg syscall (linux-arm-cgo), const CLONE_DETACHED = 4194304 pkg syscall (linux-arm-cgo), const CLONE_DETACHED ideal-int pkg syscall (linux-arm-cgo), const CLONE_FILES = 1024 pkg syscall (linux-arm-cgo), const CLONE_FILES ideal-int pkg syscall (linux-arm-cgo), const CLONE_FS = 512 pkg syscall (linux-arm-cgo), const CLONE_FS ideal-int pkg syscall (linux-arm-cgo), const CLONE_IO = 2147483648 pkg syscall (linux-arm-cgo), const CLONE_IO ideal-int pkg syscall (linux-arm-cgo), const CLONE_NEWIPC = 134217728 pkg syscall (linux-arm-cgo), const CLONE_NEWIPC ideal-int pkg syscall (linux-arm-cgo), const CLONE_NEWNET = 1073741824 pkg syscall (linux-arm-cgo), const CLONE_NEWNET ideal-int pkg syscall (linux-arm-cgo), const CLONE_NEWNS = 131072 pkg syscall (linux-arm-cgo), const CLONE_NEWNS ideal-int pkg syscall (linux-arm-cgo), const CLONE_NEWPID = 536870912 pkg syscall (linux-arm-cgo), const CLONE_NEWPID ideal-int pkg syscall (linux-arm-cgo), const CLONE_NEWUSER = 268435456 pkg syscall (linux-arm-cgo), const CLONE_NEWUSER ideal-int pkg syscall (linux-arm-cgo), const CLONE_NEWUTS = 67108864 pkg syscall (linux-arm-cgo), const CLONE_NEWUTS ideal-int pkg syscall (linux-arm-cgo), const CLONE_PARENT = 32768 pkg syscall (linux-arm-cgo), const CLONE_PARENT ideal-int pkg syscall (linux-arm-cgo), const CLONE_PARENT_SETTID = 1048576 pkg syscall (linux-arm-cgo), const CLONE_PARENT_SETTID ideal-int pkg syscall (linux-arm-cgo), const CLONE_PTRACE = 8192 pkg syscall (linux-arm-cgo), const CLONE_PTRACE ideal-int pkg syscall (linux-arm-cgo), const CLONE_SETTLS = 524288 pkg syscall (linux-arm-cgo), const CLONE_SETTLS ideal-int pkg syscall (linux-arm-cgo), const CLONE_SIGHAND = 2048 pkg syscall (linux-arm-cgo), const CLONE_SIGHAND ideal-int pkg syscall (linux-arm-cgo), const CLONE_SYSVSEM = 262144 pkg syscall (linux-arm-cgo), const CLONE_SYSVSEM ideal-int pkg syscall (linux-arm-cgo), const CLONE_THREAD = 65536 pkg syscall (linux-arm-cgo), const CLONE_THREAD ideal-int pkg syscall (linux-arm-cgo), const CLONE_UNTRACED = 8388608 pkg syscall (linux-arm-cgo), const CLONE_UNTRACED ideal-int pkg syscall (linux-arm-cgo), const CLONE_VFORK = 16384 pkg syscall (linux-arm-cgo), const CLONE_VFORK ideal-int pkg syscall (linux-arm-cgo), const CLONE_VM = 256 pkg syscall (linux-arm-cgo), const CLONE_VM ideal-int pkg syscall (linux-arm-cgo), const CREAD ideal-int pkg syscall (linux-arm-cgo), const CS5 ideal-int pkg syscall (linux-arm-cgo), const CS6 ideal-int pkg syscall (linux-arm-cgo), const CS7 ideal-int pkg syscall (linux-arm-cgo), const CS8 ideal-int pkg syscall (linux-arm-cgo), const CSIZE ideal-int pkg syscall (linux-arm-cgo), const CSTOPB ideal-int pkg syscall (linux-arm-cgo), const DT_BLK ideal-int pkg syscall (linux-arm-cgo), const DT_CHR ideal-int pkg syscall (linux-arm-cgo), const DT_DIR ideal-int pkg syscall (linux-arm-cgo), const DT_FIFO ideal-int pkg syscall (linux-arm-cgo), const DT_LNK ideal-int pkg syscall (linux-arm-cgo), const DT_REG ideal-int pkg syscall (linux-arm-cgo), const DT_SOCK ideal-int pkg syscall (linux-arm-cgo), const DT_UNKNOWN ideal-int pkg syscall (linux-arm-cgo), const DT_WHT ideal-int pkg syscall (linux-arm-cgo), const EADV Errno pkg syscall (linux-arm-cgo), const EBADE Errno pkg syscall (linux-arm-cgo), const EBADFD Errno pkg syscall (linux-arm-cgo), const EBADMSG Errno pkg syscall (linux-arm-cgo), const EBADR Errno pkg syscall (linux-arm-cgo), const EBADRQC Errno pkg syscall (linux-arm-cgo), const EBADSLT Errno pkg syscall (linux-arm-cgo), const EBFONT Errno pkg syscall (linux-arm-cgo), const ECHO ideal-int pkg syscall (linux-arm-cgo), const ECHOCTL ideal-int pkg syscall (linux-arm-cgo), const ECHOE ideal-int pkg syscall (linux-arm-cgo), const ECHOK ideal-int pkg syscall (linux-arm-cgo), const ECHOKE ideal-int pkg syscall (linux-arm-cgo), const ECHONL ideal-int pkg syscall (linux-arm-cgo), const ECHOPRT ideal-int pkg syscall (linux-arm-cgo), const ECHRNG Errno pkg syscall (linux-arm-cgo), const ECOMM Errno pkg syscall (linux-arm-cgo), const EDEADLOCK Errno pkg syscall (linux-arm-cgo), const EDOTDOT Errno pkg syscall (linux-arm-cgo), const EHWPOISON Errno pkg syscall (linux-arm-cgo), const EISNAM Errno pkg syscall (linux-arm-cgo), const EKEYEXPIRED Errno pkg syscall (linux-arm-cgo), const EKEYREJECTED Errno pkg syscall (linux-arm-cgo), const EKEYREVOKED Errno pkg syscall (linux-arm-cgo), const EL2HLT Errno pkg syscall (linux-arm-cgo), const EL2NSYNC Errno pkg syscall (linux-arm-cgo), const EL3HLT Errno pkg syscall (linux-arm-cgo), const EL3RST Errno pkg syscall (linux-arm-cgo), const ELF_NGREG ideal-int pkg syscall (linux-arm-cgo), const ELF_PRARGSZ ideal-int pkg syscall (linux-arm-cgo), const ELIBACC Errno pkg syscall (linux-arm-cgo), const ELIBBAD Errno pkg syscall (linux-arm-cgo), const ELIBEXEC Errno pkg syscall (linux-arm-cgo), const ELIBMAX Errno pkg syscall (linux-arm-cgo), const ELIBSCN Errno pkg syscall (linux-arm-cgo), const ELNRNG Errno pkg syscall (linux-arm-cgo), const EMEDIUMTYPE Errno pkg syscall (linux-arm-cgo), const EMULTIHOP Errno pkg syscall (linux-arm-cgo), const ENAVAIL Errno pkg syscall (linux-arm-cgo), const ENOANO Errno pkg syscall (linux-arm-cgo), const ENOCSI Errno pkg syscall (linux-arm-cgo), const ENODATA Errno pkg syscall (linux-arm-cgo), const ENOKEY Errno pkg syscall (linux-arm-cgo), const ENOLINK Errno pkg syscall (linux-arm-cgo), const ENOMEDIUM Errno pkg syscall (linux-arm-cgo), const ENONET Errno pkg syscall (linux-arm-cgo), const ENOPKG Errno pkg syscall (linux-arm-cgo), const ENOSR Errno pkg syscall (linux-arm-cgo), const ENOSTR Errno pkg syscall (linux-arm-cgo), const ENOTNAM Errno pkg syscall (linux-arm-cgo), const ENOTRECOVERABLE Errno pkg syscall (linux-arm-cgo), const ENOTUNIQ Errno pkg syscall (linux-arm-cgo), const EOWNERDEAD Errno pkg syscall (linux-arm-cgo), const EPOLLERR ideal-int pkg syscall (linux-arm-cgo), const EPOLLET ideal-int pkg syscall (linux-arm-cgo), const EPOLLHUP ideal-int pkg syscall (linux-arm-cgo), const EPOLLIN ideal-int pkg syscall (linux-arm-cgo), const EPOLLMSG ideal-int pkg syscall (linux-arm-cgo), const EPOLLONESHOT ideal-int pkg syscall (linux-arm-cgo), const EPOLLOUT ideal-int pkg syscall (linux-arm-cgo), const EPOLLPRI ideal-int pkg syscall (linux-arm-cgo), const EPOLLRDBAND ideal-int pkg syscall (linux-arm-cgo), const EPOLLRDHUP ideal-int pkg syscall (linux-arm-cgo), const EPOLLRDNORM ideal-int pkg syscall (linux-arm-cgo), const EPOLLWRBAND ideal-int pkg syscall (linux-arm-cgo), const EPOLLWRNORM ideal-int pkg syscall (linux-arm-cgo), const EPOLL_CLOEXEC ideal-int pkg syscall (linux-arm-cgo), const EPOLL_CTL_ADD ideal-int pkg syscall (linux-arm-cgo), const EPOLL_CTL_DEL ideal-int pkg syscall (linux-arm-cgo), const EPOLL_CTL_MOD ideal-int pkg syscall (linux-arm-cgo), const EPOLL_NONBLOCK ideal-int pkg syscall (linux-arm-cgo), const EPROTO Errno pkg syscall (linux-arm-cgo), const EREMCHG Errno pkg syscall (linux-arm-cgo), const EREMOTEIO Errno pkg syscall (linux-arm-cgo), const ERESTART Errno pkg syscall (linux-arm-cgo), const ERFKILL Errno pkg syscall (linux-arm-cgo), const ESRMNT Errno pkg syscall (linux-arm-cgo), const ESTRPIPE Errno pkg syscall (linux-arm-cgo), const ETH_P_1588 ideal-int pkg syscall (linux-arm-cgo), const ETH_P_8021Q ideal-int pkg syscall (linux-arm-cgo), const ETH_P_802_2 ideal-int pkg syscall (linux-arm-cgo), const ETH_P_802_3 ideal-int pkg syscall (linux-arm-cgo), const ETH_P_AARP ideal-int pkg syscall (linux-arm-cgo), const ETH_P_ALL ideal-int pkg syscall (linux-arm-cgo), const ETH_P_AOE ideal-int pkg syscall (linux-arm-cgo), const ETH_P_ARCNET ideal-int pkg syscall (linux-arm-cgo), const ETH_P_ARP ideal-int pkg syscall (linux-arm-cgo), const ETH_P_ATALK ideal-int pkg syscall (linux-arm-cgo), const ETH_P_ATMFATE ideal-int pkg syscall (linux-arm-cgo), const ETH_P_ATMMPOA ideal-int pkg syscall (linux-arm-cgo), const ETH_P_AX25 ideal-int pkg syscall (linux-arm-cgo), const ETH_P_BPQ ideal-int pkg syscall (linux-arm-cgo), const ETH_P_CAIF ideal-int pkg syscall (linux-arm-cgo), const ETH_P_CAN ideal-int pkg syscall (linux-arm-cgo), const ETH_P_CONTROL ideal-int pkg syscall (linux-arm-cgo), const ETH_P_CUST ideal-int pkg syscall (linux-arm-cgo), const ETH_P_DDCMP ideal-int pkg syscall (linux-arm-cgo), const ETH_P_DEC ideal-int pkg syscall (linux-arm-cgo), const ETH_P_DIAG ideal-int pkg syscall (linux-arm-cgo), const ETH_P_DNA_DL ideal-int pkg syscall (linux-arm-cgo), const ETH_P_DNA_RC ideal-int pkg syscall (linux-arm-cgo), const ETH_P_DNA_RT ideal-int pkg syscall (linux-arm-cgo), const ETH_P_DSA ideal-int pkg syscall (linux-arm-cgo), const ETH_P_ECONET ideal-int pkg syscall (linux-arm-cgo), const ETH_P_EDSA ideal-int pkg syscall (linux-arm-cgo), const ETH_P_FCOE ideal-int pkg syscall (linux-arm-cgo), const ETH_P_FIP ideal-int pkg syscall (linux-arm-cgo), const ETH_P_HDLC ideal-int pkg syscall (linux-arm-cgo), const ETH_P_IEEE802154 ideal-int pkg syscall (linux-arm-cgo), const ETH_P_IEEEPUP ideal-int pkg syscall (linux-arm-cgo), const ETH_P_IEEEPUPAT ideal-int pkg syscall (linux-arm-cgo), const ETH_P_IP ideal-int pkg syscall (linux-arm-cgo), const ETH_P_IPV6 ideal-int pkg syscall (linux-arm-cgo), const ETH_P_IPX ideal-int pkg syscall (linux-arm-cgo), const ETH_P_IRDA ideal-int pkg syscall (linux-arm-cgo), const ETH_P_LAT ideal-int pkg syscall (linux-arm-cgo), const ETH_P_LINK_CTL ideal-int pkg syscall (linux-arm-cgo), const ETH_P_LOCALTALK ideal-int pkg syscall (linux-arm-cgo), const ETH_P_LOOP ideal-int pkg syscall (linux-arm-cgo), const ETH_P_MOBITEX ideal-int pkg syscall (linux-arm-cgo), const ETH_P_MPLS_MC ideal-int pkg syscall (linux-arm-cgo), const ETH_P_MPLS_UC ideal-int pkg syscall (linux-arm-cgo), const ETH_P_PAE ideal-int pkg syscall (linux-arm-cgo), const ETH_P_PAUSE ideal-int pkg syscall (linux-arm-cgo), const ETH_P_PHONET ideal-int pkg syscall (linux-arm-cgo), const ETH_P_PPPTALK ideal-int pkg syscall (linux-arm-cgo), const ETH_P_PPP_DISC ideal-int pkg syscall (linux-arm-cgo), const ETH_P_PPP_MP ideal-int pkg syscall (linux-arm-cgo), const ETH_P_PPP_SES ideal-int pkg syscall (linux-arm-cgo), const ETH_P_PUP ideal-int pkg syscall (linux-arm-cgo), const ETH_P_PUPAT ideal-int pkg syscall (linux-arm-cgo), const ETH_P_RARP ideal-int pkg syscall (linux-arm-cgo), const ETH_P_SCA ideal-int pkg syscall (linux-arm-cgo), const ETH_P_SLOW ideal-int pkg syscall (linux-arm-cgo), const ETH_P_SNAP ideal-int pkg syscall (linux-arm-cgo), const ETH_P_TEB ideal-int pkg syscall (linux-arm-cgo), const ETH_P_TIPC ideal-int pkg syscall (linux-arm-cgo), const ETH_P_TRAILER ideal-int pkg syscall (linux-arm-cgo), const ETH_P_TR_802_2 ideal-int pkg syscall (linux-arm-cgo), const ETH_P_WAN_PPP ideal-int pkg syscall (linux-arm-cgo), const ETH_P_WCCP ideal-int pkg syscall (linux-arm-cgo), const ETH_P_X25 ideal-int pkg syscall (linux-arm-cgo), const ETIME Errno pkg syscall (linux-arm-cgo), const EUCLEAN Errno pkg syscall (linux-arm-cgo), const EUNATCH Errno pkg syscall (linux-arm-cgo), const EXFULL Errno pkg syscall (linux-arm-cgo), const FD_CLOEXEC ideal-int pkg syscall (linux-arm-cgo), const FD_SETSIZE ideal-int pkg syscall (linux-arm-cgo), const FLUSHO ideal-int pkg syscall (linux-arm-cgo), const F_DUPFD ideal-int pkg syscall (linux-arm-cgo), const F_DUPFD_CLOEXEC ideal-int pkg syscall (linux-arm-cgo), const F_EXLCK ideal-int pkg syscall (linux-arm-cgo), const F_GETFD ideal-int pkg syscall (linux-arm-cgo), const F_GETFL ideal-int pkg syscall (linux-arm-cgo), const F_GETLEASE ideal-int pkg syscall (linux-arm-cgo), const F_GETLK ideal-int pkg syscall (linux-arm-cgo), const F_GETLK64 ideal-int pkg syscall (linux-arm-cgo), const F_GETOWN ideal-int pkg syscall (linux-arm-cgo), const F_GETOWN_EX ideal-int pkg syscall (linux-arm-cgo), const F_GETPIPE_SZ ideal-int pkg syscall (linux-arm-cgo), const F_GETSIG ideal-int pkg syscall (linux-arm-cgo), const F_LOCK ideal-int pkg syscall (linux-arm-cgo), const F_NOTIFY ideal-int pkg syscall (linux-arm-cgo), const F_OK ideal-int pkg syscall (linux-arm-cgo), const F_RDLCK ideal-int pkg syscall (linux-arm-cgo), const F_SETFD ideal-int pkg syscall (linux-arm-cgo), const F_SETFL ideal-int pkg syscall (linux-arm-cgo), const F_SETLEASE ideal-int pkg syscall (linux-arm-cgo), const F_SETLK ideal-int pkg syscall (linux-arm-cgo), const F_SETLK64 ideal-int pkg syscall (linux-arm-cgo), const F_SETLKW ideal-int pkg syscall (linux-arm-cgo), const F_SETLKW64 ideal-int pkg syscall (linux-arm-cgo), const F_SETOWN ideal-int pkg syscall (linux-arm-cgo), const F_SETOWN_EX ideal-int pkg syscall (linux-arm-cgo), const F_SETPIPE_SZ ideal-int pkg syscall (linux-arm-cgo), const F_SETSIG ideal-int pkg syscall (linux-arm-cgo), const F_SHLCK ideal-int pkg syscall (linux-arm-cgo), const F_TEST ideal-int pkg syscall (linux-arm-cgo), const F_TLOCK ideal-int pkg syscall (linux-arm-cgo), const F_ULOCK ideal-int pkg syscall (linux-arm-cgo), const F_UNLCK ideal-int pkg syscall (linux-arm-cgo), const F_WRLCK ideal-int pkg syscall (linux-arm-cgo), const HUPCL ideal-int pkg syscall (linux-arm-cgo), const ICANON ideal-int pkg syscall (linux-arm-cgo), const ICMPV6_FILTER = 1 pkg syscall (linux-arm-cgo), const ICMPV6_FILTER ideal-int pkg syscall (linux-arm-cgo), const ICRNL ideal-int pkg syscall (linux-arm-cgo), const IEXTEN ideal-int pkg syscall (linux-arm-cgo), const IFA_ADDRESS ideal-int pkg syscall (linux-arm-cgo), const IFA_ANYCAST ideal-int pkg syscall (linux-arm-cgo), const IFA_BROADCAST ideal-int pkg syscall (linux-arm-cgo), const IFA_CACHEINFO ideal-int pkg syscall (linux-arm-cgo), const IFA_F_DADFAILED ideal-int pkg syscall (linux-arm-cgo), const IFA_F_DEPRECATED ideal-int pkg syscall (linux-arm-cgo), const IFA_F_HOMEADDRESS ideal-int pkg syscall (linux-arm-cgo), const IFA_F_NODAD ideal-int pkg syscall (linux-arm-cgo), const IFA_F_OPTIMISTIC ideal-int pkg syscall (linux-arm-cgo), const IFA_F_PERMANENT ideal-int pkg syscall (linux-arm-cgo), const IFA_F_SECONDARY ideal-int pkg syscall (linux-arm-cgo), const IFA_F_TEMPORARY ideal-int pkg syscall (linux-arm-cgo), const IFA_F_TENTATIVE ideal-int pkg syscall (linux-arm-cgo), const IFA_LABEL ideal-int pkg syscall (linux-arm-cgo), const IFA_LOCAL ideal-int pkg syscall (linux-arm-cgo), const IFA_MAX ideal-int pkg syscall (linux-arm-cgo), const IFA_MULTICAST ideal-int pkg syscall (linux-arm-cgo), const IFA_UNSPEC ideal-int pkg syscall (linux-arm-cgo), const IFF_ALLMULTI ideal-int pkg syscall (linux-arm-cgo), const IFF_AUTOMEDIA ideal-int pkg syscall (linux-arm-cgo), const IFF_DEBUG ideal-int pkg syscall (linux-arm-cgo), const IFF_DYNAMIC ideal-int pkg syscall (linux-arm-cgo), const IFF_MASTER ideal-int pkg syscall (linux-arm-cgo), const IFF_NOARP ideal-int pkg syscall (linux-arm-cgo), const IFF_NOTRAILERS ideal-int pkg syscall (linux-arm-cgo), const IFF_NO_PI ideal-int pkg syscall (linux-arm-cgo), const IFF_ONE_QUEUE ideal-int pkg syscall (linux-arm-cgo), const IFF_POINTOPOINT ideal-int pkg syscall (linux-arm-cgo), const IFF_PORTSEL ideal-int pkg syscall (linux-arm-cgo), const IFF_PROMISC ideal-int pkg syscall (linux-arm-cgo), const IFF_RUNNING ideal-int pkg syscall (linux-arm-cgo), const IFF_SLAVE ideal-int pkg syscall (linux-arm-cgo), const IFF_TAP ideal-int pkg syscall (linux-arm-cgo), const IFF_TUN ideal-int pkg syscall (linux-arm-cgo), const IFF_TUN_EXCL ideal-int pkg syscall (linux-arm-cgo), const IFF_VNET_HDR ideal-int pkg syscall (linux-arm-cgo), const IFLA_ADDRESS ideal-int pkg syscall (linux-arm-cgo), const IFLA_BROADCAST ideal-int pkg syscall (linux-arm-cgo), const IFLA_COST ideal-int pkg syscall (linux-arm-cgo), const IFLA_IFALIAS ideal-int pkg syscall (linux-arm-cgo), const IFLA_IFNAME ideal-int pkg syscall (linux-arm-cgo), const IFLA_LINK ideal-int pkg syscall (linux-arm-cgo), const IFLA_LINKINFO ideal-int pkg syscall (linux-arm-cgo), const IFLA_LINKMODE ideal-int pkg syscall (linux-arm-cgo), const IFLA_MAP ideal-int pkg syscall (linux-arm-cgo), const IFLA_MASTER ideal-int pkg syscall (linux-arm-cgo), const IFLA_MAX ideal-int pkg syscall (linux-arm-cgo), const IFLA_MTU ideal-int pkg syscall (linux-arm-cgo), const IFLA_NET_NS_PID ideal-int pkg syscall (linux-arm-cgo), const IFLA_OPERSTATE ideal-int pkg syscall (linux-arm-cgo), const IFLA_PRIORITY ideal-int pkg syscall (linux-arm-cgo), const IFLA_PROTINFO ideal-int pkg syscall (linux-arm-cgo), const IFLA_QDISC ideal-int pkg syscall (linux-arm-cgo), const IFLA_STATS ideal-int pkg syscall (linux-arm-cgo), const IFLA_TXQLEN ideal-int pkg syscall (linux-arm-cgo), const IFLA_UNSPEC ideal-int pkg syscall (linux-arm-cgo), const IFLA_WEIGHT ideal-int pkg syscall (linux-arm-cgo), const IFLA_WIRELESS ideal-int pkg syscall (linux-arm-cgo), const IFNAMSIZ ideal-int pkg syscall (linux-arm-cgo), const IGNBRK ideal-int pkg syscall (linux-arm-cgo), const IGNCR ideal-int pkg syscall (linux-arm-cgo), const IGNPAR ideal-int pkg syscall (linux-arm-cgo), const IMAXBEL ideal-int pkg syscall (linux-arm-cgo), const INLCR ideal-int pkg syscall (linux-arm-cgo), const INPCK ideal-int pkg syscall (linux-arm-cgo), const IN_ACCESS ideal-int pkg syscall (linux-arm-cgo), const IN_ALL_EVENTS ideal-int pkg syscall (linux-arm-cgo), const IN_ATTRIB ideal-int pkg syscall (linux-arm-cgo), const IN_CLASSA_HOST ideal-int pkg syscall (linux-arm-cgo), const IN_CLASSA_MAX ideal-int pkg syscall (linux-arm-cgo), const IN_CLASSA_NET ideal-int pkg syscall (linux-arm-cgo), const IN_CLASSA_NSHIFT ideal-int pkg syscall (linux-arm-cgo), const IN_CLASSB_HOST ideal-int pkg syscall (linux-arm-cgo), const IN_CLASSB_MAX ideal-int pkg syscall (linux-arm-cgo), const IN_CLASSB_NET ideal-int pkg syscall (linux-arm-cgo), const IN_CLASSB_NSHIFT ideal-int pkg syscall (linux-arm-cgo), const IN_CLASSC_HOST ideal-int pkg syscall (linux-arm-cgo), const IN_CLASSC_NET ideal-int pkg syscall (linux-arm-cgo), const IN_CLASSC_NSHIFT ideal-int pkg syscall (linux-arm-cgo), const IN_CLOEXEC ideal-int pkg syscall (linux-arm-cgo), const IN_CLOSE ideal-int pkg syscall (linux-arm-cgo), const IN_CLOSE_NOWRITE ideal-int pkg syscall (linux-arm-cgo), const IN_CLOSE_WRITE ideal-int pkg syscall (linux-arm-cgo), const IN_CREATE ideal-int pkg syscall (linux-arm-cgo), const IN_DELETE ideal-int pkg syscall (linux-arm-cgo), const IN_DELETE_SELF ideal-int pkg syscall (linux-arm-cgo), const IN_DONT_FOLLOW ideal-int pkg syscall (linux-arm-cgo), const IN_EXCL_UNLINK ideal-int pkg syscall (linux-arm-cgo), const IN_IGNORED ideal-int pkg syscall (linux-arm-cgo), const IN_ISDIR ideal-int pkg syscall (linux-arm-cgo), const IN_LOOPBACKNET ideal-int pkg syscall (linux-arm-cgo), const IN_MASK_ADD ideal-int pkg syscall (linux-arm-cgo), const IN_MODIFY ideal-int pkg syscall (linux-arm-cgo), const IN_MOVE ideal-int pkg syscall (linux-arm-cgo), const IN_MOVED_FROM ideal-int pkg syscall (linux-arm-cgo), const IN_MOVED_TO ideal-int pkg syscall (linux-arm-cgo), const IN_MOVE_SELF ideal-int pkg syscall (linux-arm-cgo), const IN_NONBLOCK ideal-int pkg syscall (linux-arm-cgo), const IN_ONESHOT ideal-int pkg syscall (linux-arm-cgo), const IN_ONLYDIR ideal-int pkg syscall (linux-arm-cgo), const IN_OPEN ideal-int pkg syscall (linux-arm-cgo), const IN_Q_OVERFLOW ideal-int pkg syscall (linux-arm-cgo), const IN_UNMOUNT ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_AH ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_COMP ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_DCCP ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_DSTOPTS ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_EGP ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_ENCAP ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_ESP ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_FRAGMENT ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_GRE ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_HOPOPTS ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_ICMP ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_ICMPV6 ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_IDP ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_IGMP ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_IPIP ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_MTP ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_NONE ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_PIM ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_PUP ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_RAW ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_ROUTING ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_RSVP ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_SCTP ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_TP ideal-int pkg syscall (linux-arm-cgo), const IPPROTO_UDPLITE ideal-int pkg syscall (linux-arm-cgo), const IPV6_2292DSTOPTS ideal-int pkg syscall (linux-arm-cgo), const IPV6_2292HOPLIMIT ideal-int pkg syscall (linux-arm-cgo), const IPV6_2292HOPOPTS ideal-int pkg syscall (linux-arm-cgo), const IPV6_2292PKTINFO ideal-int pkg syscall (linux-arm-cgo), const IPV6_2292PKTOPTIONS ideal-int pkg syscall (linux-arm-cgo), const IPV6_2292RTHDR ideal-int pkg syscall (linux-arm-cgo), const IPV6_ADDRFORM ideal-int pkg syscall (linux-arm-cgo), const IPV6_ADD_MEMBERSHIP ideal-int pkg syscall (linux-arm-cgo), const IPV6_AUTHHDR ideal-int pkg syscall (linux-arm-cgo), const IPV6_CHECKSUM ideal-int pkg syscall (linux-arm-cgo), const IPV6_DROP_MEMBERSHIP ideal-int pkg syscall (linux-arm-cgo), const IPV6_DSTOPTS ideal-int pkg syscall (linux-arm-cgo), const IPV6_HOPLIMIT ideal-int pkg syscall (linux-arm-cgo), const IPV6_HOPOPTS ideal-int pkg syscall (linux-arm-cgo), const IPV6_IPSEC_POLICY ideal-int pkg syscall (linux-arm-cgo), const IPV6_JOIN_ANYCAST ideal-int pkg syscall (linux-arm-cgo), const IPV6_LEAVE_ANYCAST ideal-int pkg syscall (linux-arm-cgo), const IPV6_MTU ideal-int pkg syscall (linux-arm-cgo), const IPV6_MTU_DISCOVER ideal-int pkg syscall (linux-arm-cgo), const IPV6_NEXTHOP ideal-int pkg syscall (linux-arm-cgo), const IPV6_PKTINFO ideal-int pkg syscall (linux-arm-cgo), const IPV6_PMTUDISC_DO ideal-int pkg syscall (linux-arm-cgo), const IPV6_PMTUDISC_DONT ideal-int pkg syscall (linux-arm-cgo), const IPV6_PMTUDISC_PROBE ideal-int pkg syscall (linux-arm-cgo), const IPV6_PMTUDISC_WANT ideal-int pkg syscall (linux-arm-cgo), const IPV6_RECVDSTOPTS ideal-int pkg syscall (linux-arm-cgo), const IPV6_RECVERR ideal-int pkg syscall (linux-arm-cgo), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (linux-arm-cgo), const IPV6_RECVHOPOPTS ideal-int pkg syscall (linux-arm-cgo), const IPV6_RECVPKTINFO ideal-int pkg syscall (linux-arm-cgo), const IPV6_RECVRTHDR ideal-int pkg syscall (linux-arm-cgo), const IPV6_RECVTCLASS ideal-int pkg syscall (linux-arm-cgo), const IPV6_ROUTER_ALERT ideal-int pkg syscall (linux-arm-cgo), const IPV6_RTHDR ideal-int pkg syscall (linux-arm-cgo), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (linux-arm-cgo), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (linux-arm-cgo), const IPV6_RTHDR_STRICT ideal-int pkg syscall (linux-arm-cgo), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (linux-arm-cgo), const IPV6_RXDSTOPTS ideal-int pkg syscall (linux-arm-cgo), const IPV6_RXHOPOPTS ideal-int pkg syscall (linux-arm-cgo), const IPV6_TCLASS ideal-int pkg syscall (linux-arm-cgo), const IPV6_XFRM_POLICY ideal-int pkg syscall (linux-arm-cgo), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (linux-arm-cgo), const IP_BLOCK_SOURCE ideal-int pkg syscall (linux-arm-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (linux-arm-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (linux-arm-cgo), const IP_DF ideal-int pkg syscall (linux-arm-cgo), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (linux-arm-cgo), const IP_FREEBIND ideal-int pkg syscall (linux-arm-cgo), const IP_HDRINCL ideal-int pkg syscall (linux-arm-cgo), const IP_IPSEC_POLICY ideal-int pkg syscall (linux-arm-cgo), const IP_MAXPACKET ideal-int pkg syscall (linux-arm-cgo), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (linux-arm-cgo), const IP_MF ideal-int pkg syscall (linux-arm-cgo), const IP_MINTTL ideal-int pkg syscall (linux-arm-cgo), const IP_MSFILTER ideal-int pkg syscall (linux-arm-cgo), const IP_MSS ideal-int pkg syscall (linux-arm-cgo), const IP_MTU ideal-int pkg syscall (linux-arm-cgo), const IP_MTU_DISCOVER ideal-int pkg syscall (linux-arm-cgo), const IP_OFFMASK ideal-int pkg syscall (linux-arm-cgo), const IP_OPTIONS ideal-int pkg syscall (linux-arm-cgo), const IP_ORIGDSTADDR ideal-int pkg syscall (linux-arm-cgo), const IP_PASSSEC ideal-int pkg syscall (linux-arm-cgo), const IP_PKTINFO ideal-int pkg syscall (linux-arm-cgo), const IP_PKTOPTIONS ideal-int pkg syscall (linux-arm-cgo), const IP_PMTUDISC ideal-int pkg syscall (linux-arm-cgo), const IP_PMTUDISC_DO ideal-int pkg syscall (linux-arm-cgo), const IP_PMTUDISC_DONT ideal-int pkg syscall (linux-arm-cgo), const IP_PMTUDISC_PROBE ideal-int pkg syscall (linux-arm-cgo), const IP_PMTUDISC_WANT ideal-int pkg syscall (linux-arm-cgo), const IP_RECVERR ideal-int pkg syscall (linux-arm-cgo), const IP_RECVOPTS ideal-int pkg syscall (linux-arm-cgo), const IP_RECVORIGDSTADDR ideal-int pkg syscall (linux-arm-cgo), const IP_RECVRETOPTS ideal-int pkg syscall (linux-arm-cgo), const IP_RECVTOS ideal-int pkg syscall (linux-arm-cgo), const IP_RECVTTL ideal-int pkg syscall (linux-arm-cgo), const IP_RETOPTS ideal-int pkg syscall (linux-arm-cgo), const IP_RF ideal-int pkg syscall (linux-arm-cgo), const IP_ROUTER_ALERT ideal-int pkg syscall (linux-arm-cgo), const IP_TRANSPARENT ideal-int pkg syscall (linux-arm-cgo), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (linux-arm-cgo), const IP_XFRM_POLICY ideal-int pkg syscall (linux-arm-cgo), const ISIG ideal-int pkg syscall (linux-arm-cgo), const ISTRIP ideal-int pkg syscall (linux-arm-cgo), const IUCLC ideal-int pkg syscall (linux-arm-cgo), const IUTF8 ideal-int pkg syscall (linux-arm-cgo), const IXANY ideal-int pkg syscall (linux-arm-cgo), const IXOFF ideal-int pkg syscall (linux-arm-cgo), const IXON ideal-int pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_CAD_OFF ideal-int pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_CAD_ON ideal-int pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_HALT ideal-int pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_KEXEC ideal-int pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_POWER_OFF ideal-int pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_RESTART ideal-int pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_RESTART2 ideal-int pkg syscall (linux-arm-cgo), const LINUX_REBOOT_CMD_SW_SUSPEND ideal-int pkg syscall (linux-arm-cgo), const LINUX_REBOOT_MAGIC1 ideal-int pkg syscall (linux-arm-cgo), const LINUX_REBOOT_MAGIC2 ideal-int pkg syscall (linux-arm-cgo), const LOCK_EX ideal-int pkg syscall (linux-arm-cgo), const LOCK_NB ideal-int pkg syscall (linux-arm-cgo), const LOCK_SH ideal-int pkg syscall (linux-arm-cgo), const LOCK_UN ideal-int pkg syscall (linux-arm-cgo), const MADV_DOFORK ideal-int pkg syscall (linux-arm-cgo), const MADV_DONTFORK ideal-int pkg syscall (linux-arm-cgo), const MADV_DONTNEED ideal-int pkg syscall (linux-arm-cgo), const MADV_HUGEPAGE ideal-int pkg syscall (linux-arm-cgo), const MADV_HWPOISON ideal-int pkg syscall (linux-arm-cgo), const MADV_MERGEABLE ideal-int pkg syscall (linux-arm-cgo), const MADV_NOHUGEPAGE ideal-int pkg syscall (linux-arm-cgo), const MADV_NORMAL ideal-int pkg syscall (linux-arm-cgo), const MADV_RANDOM ideal-int pkg syscall (linux-arm-cgo), const MADV_REMOVE ideal-int pkg syscall (linux-arm-cgo), const MADV_SEQUENTIAL ideal-int pkg syscall (linux-arm-cgo), const MADV_UNMERGEABLE ideal-int pkg syscall (linux-arm-cgo), const MADV_WILLNEED ideal-int pkg syscall (linux-arm-cgo), const MAP_ANON ideal-int pkg syscall (linux-arm-cgo), const MAP_ANONYMOUS ideal-int pkg syscall (linux-arm-cgo), const MAP_DENYWRITE ideal-int pkg syscall (linux-arm-cgo), const MAP_EXECUTABLE ideal-int pkg syscall (linux-arm-cgo), const MAP_FILE ideal-int pkg syscall (linux-arm-cgo), const MAP_FIXED ideal-int pkg syscall (linux-arm-cgo), const MAP_GROWSDOWN ideal-int pkg syscall (linux-arm-cgo), const MAP_LOCKED ideal-int pkg syscall (linux-arm-cgo), const MAP_NONBLOCK ideal-int pkg syscall (linux-arm-cgo), const MAP_NORESERVE ideal-int pkg syscall (linux-arm-cgo), const MAP_POPULATE ideal-int pkg syscall (linux-arm-cgo), const MAP_PRIVATE ideal-int pkg syscall (linux-arm-cgo), const MAP_SHARED ideal-int pkg syscall (linux-arm-cgo), const MAP_TYPE ideal-int pkg syscall (linux-arm-cgo), const MCL_CURRENT ideal-int pkg syscall (linux-arm-cgo), const MCL_FUTURE ideal-int pkg syscall (linux-arm-cgo), const MNT_DETACH ideal-int pkg syscall (linux-arm-cgo), const MNT_EXPIRE ideal-int pkg syscall (linux-arm-cgo), const MNT_FORCE ideal-int pkg syscall (linux-arm-cgo), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (linux-arm-cgo), const MSG_CONFIRM ideal-int pkg syscall (linux-arm-cgo), const MSG_CTRUNC ideal-int pkg syscall (linux-arm-cgo), const MSG_DONTROUTE ideal-int pkg syscall (linux-arm-cgo), const MSG_DONTWAIT ideal-int pkg syscall (linux-arm-cgo), const MSG_EOR ideal-int pkg syscall (linux-arm-cgo), const MSG_ERRQUEUE ideal-int pkg syscall (linux-arm-cgo), const MSG_FASTOPEN ideal-int pkg syscall (linux-arm-cgo), const MSG_FIN ideal-int pkg syscall (linux-arm-cgo), const MSG_MORE ideal-int pkg syscall (linux-arm-cgo), const MSG_NOSIGNAL ideal-int pkg syscall (linux-arm-cgo), const MSG_OOB ideal-int pkg syscall (linux-arm-cgo), const MSG_PEEK ideal-int pkg syscall (linux-arm-cgo), const MSG_PROXY ideal-int pkg syscall (linux-arm-cgo), const MSG_RST ideal-int pkg syscall (linux-arm-cgo), const MSG_SYN ideal-int pkg syscall (linux-arm-cgo), const MSG_TRUNC ideal-int pkg syscall (linux-arm-cgo), const MSG_TRYHARD ideal-int pkg syscall (linux-arm-cgo), const MSG_WAITALL ideal-int pkg syscall (linux-arm-cgo), const MSG_WAITFORONE ideal-int pkg syscall (linux-arm-cgo), const MS_ACTIVE ideal-int pkg syscall (linux-arm-cgo), const MS_ASYNC ideal-int pkg syscall (linux-arm-cgo), const MS_BIND ideal-int pkg syscall (linux-arm-cgo), const MS_DIRSYNC ideal-int pkg syscall (linux-arm-cgo), const MS_INVALIDATE ideal-int pkg syscall (linux-arm-cgo), const MS_I_VERSION ideal-int pkg syscall (linux-arm-cgo), const MS_KERNMOUNT ideal-int pkg syscall (linux-arm-cgo), const MS_MANDLOCK ideal-int pkg syscall (linux-arm-cgo), const MS_MGC_MSK ideal-int pkg syscall (linux-arm-cgo), const MS_MGC_VAL ideal-int pkg syscall (linux-arm-cgo), const MS_MOVE ideal-int pkg syscall (linux-arm-cgo), const MS_NOATIME ideal-int pkg syscall (linux-arm-cgo), const MS_NODEV ideal-int pkg syscall (linux-arm-cgo), const MS_NODIRATIME ideal-int pkg syscall (linux-arm-cgo), const MS_NOEXEC ideal-int pkg syscall (linux-arm-cgo), const MS_NOSUID ideal-int pkg syscall (linux-arm-cgo), const MS_NOUSER ideal-int pkg syscall (linux-arm-cgo), const MS_POSIXACL ideal-int pkg syscall (linux-arm-cgo), const MS_PRIVATE ideal-int pkg syscall (linux-arm-cgo), const MS_RDONLY ideal-int pkg syscall (linux-arm-cgo), const MS_REC ideal-int pkg syscall (linux-arm-cgo), const MS_RELATIME ideal-int pkg syscall (linux-arm-cgo), const MS_REMOUNT ideal-int pkg syscall (linux-arm-cgo), const MS_RMT_MASK ideal-int pkg syscall (linux-arm-cgo), const MS_SHARED ideal-int pkg syscall (linux-arm-cgo), const MS_SILENT ideal-int pkg syscall (linux-arm-cgo), const MS_SLAVE ideal-int pkg syscall (linux-arm-cgo), const MS_STRICTATIME ideal-int pkg syscall (linux-arm-cgo), const MS_SYNC ideal-int pkg syscall (linux-arm-cgo), const MS_SYNCHRONOUS ideal-int pkg syscall (linux-arm-cgo), const MS_UNBINDABLE ideal-int pkg syscall (linux-arm-cgo), const NAME_MAX ideal-int pkg syscall (linux-arm-cgo), const NETLINK_ADD_MEMBERSHIP ideal-int pkg syscall (linux-arm-cgo), const NETLINK_AUDIT ideal-int pkg syscall (linux-arm-cgo), const NETLINK_BROADCAST_ERROR ideal-int pkg syscall (linux-arm-cgo), const NETLINK_CONNECTOR ideal-int pkg syscall (linux-arm-cgo), const NETLINK_DNRTMSG ideal-int pkg syscall (linux-arm-cgo), const NETLINK_DROP_MEMBERSHIP ideal-int pkg syscall (linux-arm-cgo), const NETLINK_ECRYPTFS ideal-int pkg syscall (linux-arm-cgo), const NETLINK_FIB_LOOKUP ideal-int pkg syscall (linux-arm-cgo), const NETLINK_FIREWALL ideal-int pkg syscall (linux-arm-cgo), const NETLINK_GENERIC ideal-int pkg syscall (linux-arm-cgo), const NETLINK_INET_DIAG ideal-int pkg syscall (linux-arm-cgo), const NETLINK_IP6_FW ideal-int pkg syscall (linux-arm-cgo), const NETLINK_ISCSI ideal-int pkg syscall (linux-arm-cgo), const NETLINK_KOBJECT_UEVENT ideal-int pkg syscall (linux-arm-cgo), const NETLINK_NETFILTER ideal-int pkg syscall (linux-arm-cgo), const NETLINK_NFLOG ideal-int pkg syscall (linux-arm-cgo), const NETLINK_NO_ENOBUFS ideal-int pkg syscall (linux-arm-cgo), const NETLINK_PKTINFO ideal-int pkg syscall (linux-arm-cgo), const NETLINK_RDMA ideal-int pkg syscall (linux-arm-cgo), const NETLINK_ROUTE ideal-int pkg syscall (linux-arm-cgo), const NETLINK_SCSITRANSPORT ideal-int pkg syscall (linux-arm-cgo), const NETLINK_SELINUX ideal-int pkg syscall (linux-arm-cgo), const NETLINK_UNUSED ideal-int pkg syscall (linux-arm-cgo), const NETLINK_USERSOCK ideal-int pkg syscall (linux-arm-cgo), const NETLINK_XFRM ideal-int pkg syscall (linux-arm-cgo), const NLA_ALIGNTO ideal-int pkg syscall (linux-arm-cgo), const NLA_F_NESTED ideal-int pkg syscall (linux-arm-cgo), const NLA_F_NET_BYTEORDER ideal-int pkg syscall (linux-arm-cgo), const NLA_HDRLEN ideal-int pkg syscall (linux-arm-cgo), const NLMSG_ALIGNTO ideal-int pkg syscall (linux-arm-cgo), const NLMSG_DONE ideal-int pkg syscall (linux-arm-cgo), const NLMSG_ERROR ideal-int pkg syscall (linux-arm-cgo), const NLMSG_HDRLEN ideal-int pkg syscall (linux-arm-cgo), const NLMSG_MIN_TYPE ideal-int pkg syscall (linux-arm-cgo), const NLMSG_NOOP ideal-int pkg syscall (linux-arm-cgo), const NLMSG_OVERRUN ideal-int pkg syscall (linux-arm-cgo), const NLM_F_ACK ideal-int pkg syscall (linux-arm-cgo), const NLM_F_APPEND ideal-int pkg syscall (linux-arm-cgo), const NLM_F_ATOMIC ideal-int pkg syscall (linux-arm-cgo), const NLM_F_CREATE ideal-int pkg syscall (linux-arm-cgo), const NLM_F_DUMP ideal-int pkg syscall (linux-arm-cgo), const NLM_F_ECHO ideal-int pkg syscall (linux-arm-cgo), const NLM_F_EXCL ideal-int pkg syscall (linux-arm-cgo), const NLM_F_MATCH ideal-int pkg syscall (linux-arm-cgo), const NLM_F_MULTI ideal-int pkg syscall (linux-arm-cgo), const NLM_F_REPLACE ideal-int pkg syscall (linux-arm-cgo), const NLM_F_REQUEST ideal-int pkg syscall (linux-arm-cgo), const NLM_F_ROOT ideal-int pkg syscall (linux-arm-cgo), const NOFLSH ideal-int pkg syscall (linux-arm-cgo), const OCRNL ideal-int pkg syscall (linux-arm-cgo), const OFDEL ideal-int pkg syscall (linux-arm-cgo), const OFILL ideal-int pkg syscall (linux-arm-cgo), const OLCUC ideal-int pkg syscall (linux-arm-cgo), const ONLCR ideal-int pkg syscall (linux-arm-cgo), const ONLRET ideal-int pkg syscall (linux-arm-cgo), const ONOCR ideal-int pkg syscall (linux-arm-cgo), const OPOST ideal-int pkg syscall (linux-arm-cgo), const O_ACCMODE ideal-int pkg syscall (linux-arm-cgo), const O_DIRECT ideal-int pkg syscall (linux-arm-cgo), const O_DIRECTORY ideal-int pkg syscall (linux-arm-cgo), const O_DSYNC ideal-int pkg syscall (linux-arm-cgo), const O_FSYNC ideal-int pkg syscall (linux-arm-cgo), const O_LARGEFILE ideal-int pkg syscall (linux-arm-cgo), const O_NDELAY ideal-int pkg syscall (linux-arm-cgo), const O_NOATIME ideal-int pkg syscall (linux-arm-cgo), const O_NOFOLLOW ideal-int pkg syscall (linux-arm-cgo), const O_RSYNC ideal-int pkg syscall (linux-arm-cgo), const PACKET_ADD_MEMBERSHIP ideal-int pkg syscall (linux-arm-cgo), const PACKET_BROADCAST ideal-int pkg syscall (linux-arm-cgo), const PACKET_DROP_MEMBERSHIP ideal-int pkg syscall (linux-arm-cgo), const PACKET_FASTROUTE ideal-int pkg syscall (linux-arm-cgo), const PACKET_HOST ideal-int pkg syscall (linux-arm-cgo), const PACKET_LOOPBACK ideal-int pkg syscall (linux-arm-cgo), const PACKET_MR_ALLMULTI ideal-int pkg syscall (linux-arm-cgo), const PACKET_MR_MULTICAST ideal-int pkg syscall (linux-arm-cgo), const PACKET_MR_PROMISC ideal-int pkg syscall (linux-arm-cgo), const PACKET_MULTICAST ideal-int pkg syscall (linux-arm-cgo), const PACKET_OTHERHOST ideal-int pkg syscall (linux-arm-cgo), const PACKET_OUTGOING ideal-int pkg syscall (linux-arm-cgo), const PACKET_RECV_OUTPUT ideal-int pkg syscall (linux-arm-cgo), const PACKET_RX_RING ideal-int pkg syscall (linux-arm-cgo), const PACKET_STATISTICS ideal-int pkg syscall (linux-arm-cgo), const PARENB ideal-int pkg syscall (linux-arm-cgo), const PARMRK ideal-int pkg syscall (linux-arm-cgo), const PARODD ideal-int pkg syscall (linux-arm-cgo), const PENDIN ideal-int pkg syscall (linux-arm-cgo), const PRIO_PGRP = 1 pkg syscall (linux-arm-cgo), const PRIO_PGRP ideal-int pkg syscall (linux-arm-cgo), const PRIO_PROCESS = 0 pkg syscall (linux-arm-cgo), const PRIO_PROCESS ideal-int pkg syscall (linux-arm-cgo), const PRIO_USER = 2 pkg syscall (linux-arm-cgo), const PRIO_USER ideal-int pkg syscall (linux-arm-cgo), const PROT_EXEC ideal-int pkg syscall (linux-arm-cgo), const PROT_GROWSDOWN ideal-int pkg syscall (linux-arm-cgo), const PROT_GROWSUP ideal-int pkg syscall (linux-arm-cgo), const PROT_NONE ideal-int pkg syscall (linux-arm-cgo), const PROT_READ ideal-int pkg syscall (linux-arm-cgo), const PROT_WRITE ideal-int pkg syscall (linux-arm-cgo), const PR_CAPBSET_DROP ideal-int pkg syscall (linux-arm-cgo), const PR_CAPBSET_READ ideal-int pkg syscall (linux-arm-cgo), const PR_CLEAR_SECCOMP_FILTER ideal-int pkg syscall (linux-arm-cgo), const PR_ENDIAN_BIG ideal-int pkg syscall (linux-arm-cgo), const PR_ENDIAN_LITTLE ideal-int pkg syscall (linux-arm-cgo), const PR_ENDIAN_PPC_LITTLE ideal-int pkg syscall (linux-arm-cgo), const PR_FPEMU_NOPRINT ideal-int pkg syscall (linux-arm-cgo), const PR_FPEMU_SIGFPE ideal-int pkg syscall (linux-arm-cgo), const PR_FP_EXC_ASYNC ideal-int pkg syscall (linux-arm-cgo), const PR_FP_EXC_DISABLED ideal-int pkg syscall (linux-arm-cgo), const PR_FP_EXC_DIV ideal-int pkg syscall (linux-arm-cgo), const PR_FP_EXC_INV ideal-int pkg syscall (linux-arm-cgo), const PR_FP_EXC_NONRECOV ideal-int pkg syscall (linux-arm-cgo), const PR_FP_EXC_OVF ideal-int pkg syscall (linux-arm-cgo), const PR_FP_EXC_PRECISE ideal-int pkg syscall (linux-arm-cgo), const PR_FP_EXC_RES ideal-int pkg syscall (linux-arm-cgo), const PR_FP_EXC_SW_ENABLE ideal-int pkg syscall (linux-arm-cgo), const PR_FP_EXC_UND ideal-int pkg syscall (linux-arm-cgo), const PR_GET_DUMPABLE ideal-int pkg syscall (linux-arm-cgo), const PR_GET_ENDIAN ideal-int pkg syscall (linux-arm-cgo), const PR_GET_FPEMU ideal-int pkg syscall (linux-arm-cgo), const PR_GET_FPEXC ideal-int pkg syscall (linux-arm-cgo), const PR_GET_KEEPCAPS ideal-int pkg syscall (linux-arm-cgo), const PR_GET_NAME ideal-int pkg syscall (linux-arm-cgo), const PR_GET_PDEATHSIG ideal-int pkg syscall (linux-arm-cgo), const PR_GET_SECCOMP ideal-int pkg syscall (linux-arm-cgo), const PR_GET_SECCOMP_FILTER ideal-int pkg syscall (linux-arm-cgo), const PR_GET_SECUREBITS ideal-int pkg syscall (linux-arm-cgo), const PR_GET_TIMERSLACK ideal-int pkg syscall (linux-arm-cgo), const PR_GET_TIMING ideal-int pkg syscall (linux-arm-cgo), const PR_GET_TSC ideal-int pkg syscall (linux-arm-cgo), const PR_GET_UNALIGN ideal-int pkg syscall (linux-arm-cgo), const PR_MCE_KILL ideal-int pkg syscall (linux-arm-cgo), const PR_MCE_KILL_CLEAR ideal-int pkg syscall (linux-arm-cgo), const PR_MCE_KILL_DEFAULT ideal-int pkg syscall (linux-arm-cgo), const PR_MCE_KILL_EARLY ideal-int pkg syscall (linux-arm-cgo), const PR_MCE_KILL_GET ideal-int pkg syscall (linux-arm-cgo), const PR_MCE_KILL_LATE ideal-int pkg syscall (linux-arm-cgo), const PR_MCE_KILL_SET ideal-int pkg syscall (linux-arm-cgo), const PR_SECCOMP_FILTER_EVENT ideal-int pkg syscall (linux-arm-cgo), const PR_SECCOMP_FILTER_SYSCALL ideal-int pkg syscall (linux-arm-cgo), const PR_SET_DUMPABLE ideal-int pkg syscall (linux-arm-cgo), const PR_SET_ENDIAN ideal-int pkg syscall (linux-arm-cgo), const PR_SET_FPEMU ideal-int pkg syscall (linux-arm-cgo), const PR_SET_FPEXC ideal-int pkg syscall (linux-arm-cgo), const PR_SET_KEEPCAPS ideal-int pkg syscall (linux-arm-cgo), const PR_SET_NAME ideal-int pkg syscall (linux-arm-cgo), const PR_SET_PDEATHSIG ideal-int pkg syscall (linux-arm-cgo), const PR_SET_PTRACER ideal-int pkg syscall (linux-arm-cgo), const PR_SET_SECCOMP ideal-int pkg syscall (linux-arm-cgo), const PR_SET_SECCOMP_FILTER ideal-int pkg syscall (linux-arm-cgo), const PR_SET_SECUREBITS ideal-int pkg syscall (linux-arm-cgo), const PR_SET_TIMERSLACK ideal-int pkg syscall (linux-arm-cgo), const PR_SET_TIMING ideal-int pkg syscall (linux-arm-cgo), const PR_SET_TSC ideal-int pkg syscall (linux-arm-cgo), const PR_SET_UNALIGN ideal-int pkg syscall (linux-arm-cgo), const PR_TASK_PERF_EVENTS_DISABLE ideal-int pkg syscall (linux-arm-cgo), const PR_TASK_PERF_EVENTS_ENABLE ideal-int pkg syscall (linux-arm-cgo), const PR_TIMING_STATISTICAL ideal-int pkg syscall (linux-arm-cgo), const PR_TIMING_TIMESTAMP ideal-int pkg syscall (linux-arm-cgo), const PR_TSC_ENABLE ideal-int pkg syscall (linux-arm-cgo), const PR_TSC_SIGSEGV ideal-int pkg syscall (linux-arm-cgo), const PR_UNALIGN_NOPRINT ideal-int pkg syscall (linux-arm-cgo), const PR_UNALIGN_SIGBUS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_ATTACH ideal-int pkg syscall (linux-arm-cgo), const PTRACE_CONT ideal-int pkg syscall (linux-arm-cgo), const PTRACE_DETACH ideal-int pkg syscall (linux-arm-cgo), const PTRACE_EVENT_CLONE ideal-int pkg syscall (linux-arm-cgo), const PTRACE_EVENT_EXEC ideal-int pkg syscall (linux-arm-cgo), const PTRACE_EVENT_EXIT ideal-int pkg syscall (linux-arm-cgo), const PTRACE_EVENT_FORK ideal-int pkg syscall (linux-arm-cgo), const PTRACE_EVENT_VFORK ideal-int pkg syscall (linux-arm-cgo), const PTRACE_EVENT_VFORK_DONE ideal-int pkg syscall (linux-arm-cgo), const PTRACE_GETCRUNCHREGS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_GETEVENTMSG ideal-int pkg syscall (linux-arm-cgo), const PTRACE_GETFPREGS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_GETHBPREGS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_GETREGS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_GETREGSET ideal-int pkg syscall (linux-arm-cgo), const PTRACE_GETSIGINFO ideal-int pkg syscall (linux-arm-cgo), const PTRACE_GETVFPREGS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_GETWMMXREGS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_GET_THREAD_AREA ideal-int pkg syscall (linux-arm-cgo), const PTRACE_KILL ideal-int pkg syscall (linux-arm-cgo), const PTRACE_OLDSETOPTIONS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_O_MASK ideal-int pkg syscall (linux-arm-cgo), const PTRACE_O_TRACECLONE ideal-int pkg syscall (linux-arm-cgo), const PTRACE_O_TRACEEXEC ideal-int pkg syscall (linux-arm-cgo), const PTRACE_O_TRACEEXIT ideal-int pkg syscall (linux-arm-cgo), const PTRACE_O_TRACEFORK ideal-int pkg syscall (linux-arm-cgo), const PTRACE_O_TRACESYSGOOD ideal-int pkg syscall (linux-arm-cgo), const PTRACE_O_TRACEVFORK ideal-int pkg syscall (linux-arm-cgo), const PTRACE_O_TRACEVFORKDONE ideal-int pkg syscall (linux-arm-cgo), const PTRACE_PEEKDATA ideal-int pkg syscall (linux-arm-cgo), const PTRACE_PEEKTEXT ideal-int pkg syscall (linux-arm-cgo), const PTRACE_PEEKUSR ideal-int pkg syscall (linux-arm-cgo), const PTRACE_POKEDATA ideal-int pkg syscall (linux-arm-cgo), const PTRACE_POKETEXT ideal-int pkg syscall (linux-arm-cgo), const PTRACE_POKEUSR ideal-int pkg syscall (linux-arm-cgo), const PTRACE_SETCRUNCHREGS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_SETFPREGS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_SETHBPREGS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_SETOPTIONS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_SETREGS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_SETREGSET ideal-int pkg syscall (linux-arm-cgo), const PTRACE_SETSIGINFO ideal-int pkg syscall (linux-arm-cgo), const PTRACE_SETVFPREGS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_SETWMMXREGS ideal-int pkg syscall (linux-arm-cgo), const PTRACE_SET_SYSCALL ideal-int pkg syscall (linux-arm-cgo), const PTRACE_SINGLESTEP ideal-int pkg syscall (linux-arm-cgo), const PTRACE_SYSCALL ideal-int pkg syscall (linux-arm-cgo), const PTRACE_TRACEME ideal-int pkg syscall (linux-arm-cgo), const PT_DATA_ADDR ideal-int pkg syscall (linux-arm-cgo), const PT_TEXT_ADDR ideal-int pkg syscall (linux-arm-cgo), const PT_TEXT_END_ADDR ideal-int pkg syscall (linux-arm-cgo), const PathMax ideal-int pkg syscall (linux-arm-cgo), const RLIMIT_AS ideal-int pkg syscall (linux-arm-cgo), const RLIMIT_CORE ideal-int pkg syscall (linux-arm-cgo), const RLIMIT_CPU ideal-int pkg syscall (linux-arm-cgo), const RLIMIT_DATA ideal-int pkg syscall (linux-arm-cgo), const RLIMIT_FSIZE ideal-int pkg syscall (linux-arm-cgo), const RLIMIT_NOFILE ideal-int pkg syscall (linux-arm-cgo), const RLIMIT_STACK ideal-int pkg syscall (linux-arm-cgo), const RLIM_INFINITY ideal-int pkg syscall (linux-arm-cgo), const RTAX_ADVMSS ideal-int pkg syscall (linux-arm-cgo), const RTAX_CWND ideal-int pkg syscall (linux-arm-cgo), const RTAX_FEATURES ideal-int pkg syscall (linux-arm-cgo), const RTAX_FEATURE_ALLFRAG ideal-int pkg syscall (linux-arm-cgo), const RTAX_FEATURE_ECN ideal-int pkg syscall (linux-arm-cgo), const RTAX_FEATURE_SACK ideal-int pkg syscall (linux-arm-cgo), const RTAX_FEATURE_TIMESTAMP ideal-int pkg syscall (linux-arm-cgo), const RTAX_HOPLIMIT ideal-int pkg syscall (linux-arm-cgo), const RTAX_INITCWND ideal-int pkg syscall (linux-arm-cgo), const RTAX_INITRWND ideal-int pkg syscall (linux-arm-cgo), const RTAX_LOCK ideal-int pkg syscall (linux-arm-cgo), const RTAX_MAX ideal-int pkg syscall (linux-arm-cgo), const RTAX_MTU ideal-int pkg syscall (linux-arm-cgo), const RTAX_REORDERING ideal-int pkg syscall (linux-arm-cgo), const RTAX_RTO_MIN ideal-int pkg syscall (linux-arm-cgo), const RTAX_RTT ideal-int pkg syscall (linux-arm-cgo), const RTAX_RTTVAR ideal-int pkg syscall (linux-arm-cgo), const RTAX_SSTHRESH ideal-int pkg syscall (linux-arm-cgo), const RTAX_UNSPEC ideal-int pkg syscall (linux-arm-cgo), const RTAX_WINDOW ideal-int pkg syscall (linux-arm-cgo), const RTA_ALIGNTO ideal-int pkg syscall (linux-arm-cgo), const RTA_CACHEINFO ideal-int pkg syscall (linux-arm-cgo), const RTA_DST ideal-int pkg syscall (linux-arm-cgo), const RTA_FLOW ideal-int pkg syscall (linux-arm-cgo), const RTA_GATEWAY ideal-int pkg syscall (linux-arm-cgo), const RTA_IIF ideal-int pkg syscall (linux-arm-cgo), const RTA_MAX ideal-int pkg syscall (linux-arm-cgo), const RTA_METRICS ideal-int pkg syscall (linux-arm-cgo), const RTA_MULTIPATH ideal-int pkg syscall (linux-arm-cgo), const RTA_OIF ideal-int pkg syscall (linux-arm-cgo), const RTA_PREFSRC ideal-int pkg syscall (linux-arm-cgo), const RTA_PRIORITY ideal-int pkg syscall (linux-arm-cgo), const RTA_SRC ideal-int pkg syscall (linux-arm-cgo), const RTA_TABLE ideal-int pkg syscall (linux-arm-cgo), const RTA_UNSPEC ideal-int pkg syscall (linux-arm-cgo), const RTCF_DIRECTSRC ideal-int pkg syscall (linux-arm-cgo), const RTCF_DOREDIRECT ideal-int pkg syscall (linux-arm-cgo), const RTCF_LOG ideal-int pkg syscall (linux-arm-cgo), const RTCF_MASQ ideal-int pkg syscall (linux-arm-cgo), const RTCF_NAT ideal-int pkg syscall (linux-arm-cgo), const RTCF_VALVE ideal-int pkg syscall (linux-arm-cgo), const RTF_ADDRCLASSMASK ideal-int pkg syscall (linux-arm-cgo), const RTF_ADDRCONF ideal-int pkg syscall (linux-arm-cgo), const RTF_ALLONLINK ideal-int pkg syscall (linux-arm-cgo), const RTF_BROADCAST ideal-int pkg syscall (linux-arm-cgo), const RTF_CACHE ideal-int pkg syscall (linux-arm-cgo), const RTF_DEFAULT ideal-int pkg syscall (linux-arm-cgo), const RTF_DYNAMIC ideal-int pkg syscall (linux-arm-cgo), const RTF_FLOW ideal-int pkg syscall (linux-arm-cgo), const RTF_GATEWAY ideal-int pkg syscall (linux-arm-cgo), const RTF_HOST ideal-int pkg syscall (linux-arm-cgo), const RTF_INTERFACE ideal-int pkg syscall (linux-arm-cgo), const RTF_IRTT ideal-int pkg syscall (linux-arm-cgo), const RTF_LINKRT ideal-int pkg syscall (linux-arm-cgo), const RTF_LOCAL ideal-int pkg syscall (linux-arm-cgo), const RTF_MODIFIED ideal-int pkg syscall (linux-arm-cgo), const RTF_MSS ideal-int pkg syscall (linux-arm-cgo), const RTF_MTU ideal-int pkg syscall (linux-arm-cgo), const RTF_MULTICAST ideal-int pkg syscall (linux-arm-cgo), const RTF_NAT ideal-int pkg syscall (linux-arm-cgo), const RTF_NOFORWARD ideal-int pkg syscall (linux-arm-cgo), const RTF_NONEXTHOP ideal-int pkg syscall (linux-arm-cgo), const RTF_NOPMTUDISC ideal-int pkg syscall (linux-arm-cgo), const RTF_POLICY ideal-int pkg syscall (linux-arm-cgo), const RTF_REINSTATE ideal-int pkg syscall (linux-arm-cgo), const RTF_REJECT ideal-int pkg syscall (linux-arm-cgo), const RTF_STATIC ideal-int pkg syscall (linux-arm-cgo), const RTF_THROW ideal-int pkg syscall (linux-arm-cgo), const RTF_UP ideal-int pkg syscall (linux-arm-cgo), const RTF_WINDOW ideal-int pkg syscall (linux-arm-cgo), const RTF_XRESOLVE ideal-int pkg syscall (linux-arm-cgo), const RTM_BASE ideal-int pkg syscall (linux-arm-cgo), const RTM_DELACTION ideal-int pkg syscall (linux-arm-cgo), const RTM_DELADDR ideal-int pkg syscall (linux-arm-cgo), const RTM_DELADDRLABEL ideal-int pkg syscall (linux-arm-cgo), const RTM_DELLINK ideal-int pkg syscall (linux-arm-cgo), const RTM_DELNEIGH ideal-int pkg syscall (linux-arm-cgo), const RTM_DELQDISC ideal-int pkg syscall (linux-arm-cgo), const RTM_DELROUTE ideal-int pkg syscall (linux-arm-cgo), const RTM_DELRULE ideal-int pkg syscall (linux-arm-cgo), const RTM_DELTCLASS ideal-int pkg syscall (linux-arm-cgo), const RTM_DELTFILTER ideal-int pkg syscall (linux-arm-cgo), const RTM_F_CLONED ideal-int pkg syscall (linux-arm-cgo), const RTM_F_EQUALIZE ideal-int pkg syscall (linux-arm-cgo), const RTM_F_NOTIFY ideal-int pkg syscall (linux-arm-cgo), const RTM_F_PREFIX ideal-int pkg syscall (linux-arm-cgo), const RTM_GETACTION ideal-int pkg syscall (linux-arm-cgo), const RTM_GETADDR ideal-int pkg syscall (linux-arm-cgo), const RTM_GETADDRLABEL ideal-int pkg syscall (linux-arm-cgo), const RTM_GETANYCAST ideal-int pkg syscall (linux-arm-cgo), const RTM_GETDCB ideal-int pkg syscall (linux-arm-cgo), const RTM_GETLINK ideal-int pkg syscall (linux-arm-cgo), const RTM_GETMULTICAST ideal-int pkg syscall (linux-arm-cgo), const RTM_GETNEIGH ideal-int pkg syscall (linux-arm-cgo), const RTM_GETNEIGHTBL ideal-int pkg syscall (linux-arm-cgo), const RTM_GETQDISC ideal-int pkg syscall (linux-arm-cgo), const RTM_GETROUTE ideal-int pkg syscall (linux-arm-cgo), const RTM_GETRULE ideal-int pkg syscall (linux-arm-cgo), const RTM_GETTCLASS ideal-int pkg syscall (linux-arm-cgo), const RTM_GETTFILTER ideal-int pkg syscall (linux-arm-cgo), const RTM_MAX ideal-int pkg syscall (linux-arm-cgo), const RTM_NEWACTION ideal-int pkg syscall (linux-arm-cgo), const RTM_NEWADDR ideal-int pkg syscall (linux-arm-cgo), const RTM_NEWADDRLABEL ideal-int pkg syscall (linux-arm-cgo), const RTM_NEWLINK ideal-int pkg syscall (linux-arm-cgo), const RTM_NEWNDUSEROPT ideal-int pkg syscall (linux-arm-cgo), const RTM_NEWNEIGH ideal-int pkg syscall (linux-arm-cgo), const RTM_NEWNEIGHTBL ideal-int pkg syscall (linux-arm-cgo), const RTM_NEWPREFIX ideal-int pkg syscall (linux-arm-cgo), const RTM_NEWQDISC ideal-int pkg syscall (linux-arm-cgo), const RTM_NEWROUTE ideal-int pkg syscall (linux-arm-cgo), const RTM_NEWRULE ideal-int pkg syscall (linux-arm-cgo), const RTM_NEWTCLASS ideal-int pkg syscall (linux-arm-cgo), const RTM_NEWTFILTER ideal-int pkg syscall (linux-arm-cgo), const RTM_NR_FAMILIES ideal-int pkg syscall (linux-arm-cgo), const RTM_NR_MSGTYPES ideal-int pkg syscall (linux-arm-cgo), const RTM_SETDCB ideal-int pkg syscall (linux-arm-cgo), const RTM_SETLINK ideal-int pkg syscall (linux-arm-cgo), const RTM_SETNEIGHTBL ideal-int pkg syscall (linux-arm-cgo), const RTNH_ALIGNTO ideal-int pkg syscall (linux-arm-cgo), const RTNH_F_DEAD ideal-int pkg syscall (linux-arm-cgo), const RTNH_F_ONLINK ideal-int pkg syscall (linux-arm-cgo), const RTNH_F_PERVASIVE ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_IPV4_IFADDR ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_IPV4_MROUTE ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_IPV4_ROUTE ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_IPV4_RULE ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_IPV6_IFADDR ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_IPV6_IFINFO ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_IPV6_MROUTE ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_IPV6_PREFIX ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_IPV6_ROUTE ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_IPV6_RULE ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_LINK ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_ND_USEROPT ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_NEIGH ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_NONE ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_NOTIFY ideal-int pkg syscall (linux-arm-cgo), const RTNLGRP_TC ideal-int pkg syscall (linux-arm-cgo), const RTN_ANYCAST ideal-int pkg syscall (linux-arm-cgo), const RTN_BLACKHOLE ideal-int pkg syscall (linux-arm-cgo), const RTN_BROADCAST ideal-int pkg syscall (linux-arm-cgo), const RTN_LOCAL ideal-int pkg syscall (linux-arm-cgo), const RTN_MAX ideal-int pkg syscall (linux-arm-cgo), const RTN_MULTICAST ideal-int pkg syscall (linux-arm-cgo), const RTN_NAT ideal-int pkg syscall (linux-arm-cgo), const RTN_PROHIBIT ideal-int pkg syscall (linux-arm-cgo), const RTN_THROW ideal-int pkg syscall (linux-arm-cgo), const RTN_UNICAST ideal-int pkg syscall (linux-arm-cgo), const RTN_UNREACHABLE ideal-int pkg syscall (linux-arm-cgo), const RTN_UNSPEC ideal-int pkg syscall (linux-arm-cgo), const RTN_XRESOLVE ideal-int pkg syscall (linux-arm-cgo), const RTPROT_BIRD ideal-int pkg syscall (linux-arm-cgo), const RTPROT_BOOT ideal-int pkg syscall (linux-arm-cgo), const RTPROT_DHCP ideal-int pkg syscall (linux-arm-cgo), const RTPROT_DNROUTED ideal-int pkg syscall (linux-arm-cgo), const RTPROT_GATED ideal-int pkg syscall (linux-arm-cgo), const RTPROT_KERNEL ideal-int pkg syscall (linux-arm-cgo), const RTPROT_MRT ideal-int pkg syscall (linux-arm-cgo), const RTPROT_NTK ideal-int pkg syscall (linux-arm-cgo), const RTPROT_RA ideal-int pkg syscall (linux-arm-cgo), const RTPROT_REDIRECT ideal-int pkg syscall (linux-arm-cgo), const RTPROT_STATIC ideal-int pkg syscall (linux-arm-cgo), const RTPROT_UNSPEC ideal-int pkg syscall (linux-arm-cgo), const RTPROT_XORP ideal-int pkg syscall (linux-arm-cgo), const RTPROT_ZEBRA ideal-int pkg syscall (linux-arm-cgo), const RT_CLASS_DEFAULT ideal-int pkg syscall (linux-arm-cgo), const RT_CLASS_LOCAL ideal-int pkg syscall (linux-arm-cgo), const RT_CLASS_MAIN ideal-int pkg syscall (linux-arm-cgo), const RT_CLASS_MAX ideal-int pkg syscall (linux-arm-cgo), const RT_CLASS_UNSPEC ideal-int pkg syscall (linux-arm-cgo), const RT_SCOPE_HOST ideal-int pkg syscall (linux-arm-cgo), const RT_SCOPE_LINK ideal-int pkg syscall (linux-arm-cgo), const RT_SCOPE_NOWHERE ideal-int pkg syscall (linux-arm-cgo), const RT_SCOPE_SITE ideal-int pkg syscall (linux-arm-cgo), const RT_SCOPE_UNIVERSE ideal-int pkg syscall (linux-arm-cgo), const RT_TABLE_COMPAT ideal-int pkg syscall (linux-arm-cgo), const RT_TABLE_DEFAULT ideal-int pkg syscall (linux-arm-cgo), const RT_TABLE_LOCAL ideal-int pkg syscall (linux-arm-cgo), const RT_TABLE_MAIN ideal-int pkg syscall (linux-arm-cgo), const RT_TABLE_MAX ideal-int pkg syscall (linux-arm-cgo), const RT_TABLE_UNSPEC ideal-int pkg syscall (linux-arm-cgo), const RUSAGE_CHILDREN ideal-int pkg syscall (linux-arm-cgo), const RUSAGE_SELF ideal-int pkg syscall (linux-arm-cgo), const RUSAGE_THREAD ideal-int pkg syscall (linux-arm-cgo), const SCM_CREDENTIALS ideal-int pkg syscall (linux-arm-cgo), const SCM_RIGHTS ideal-int pkg syscall (linux-arm-cgo), const SCM_TIMESTAMP ideal-int pkg syscall (linux-arm-cgo), const SCM_TIMESTAMPING ideal-int pkg syscall (linux-arm-cgo), const SCM_TIMESTAMPNS ideal-int pkg syscall (linux-arm-cgo), const SIGCHLD Signal pkg syscall (linux-arm-cgo), const SIGCLD Signal pkg syscall (linux-arm-cgo), const SIGCONT Signal pkg syscall (linux-arm-cgo), const SIGIO Signal pkg syscall (linux-arm-cgo), const SIGIOT Signal pkg syscall (linux-arm-cgo), const SIGPOLL Signal pkg syscall (linux-arm-cgo), const SIGPROF Signal pkg syscall (linux-arm-cgo), const SIGPWR Signal pkg syscall (linux-arm-cgo), const SIGSTKFLT Signal pkg syscall (linux-arm-cgo), const SIGSTOP Signal pkg syscall (linux-arm-cgo), const SIGSYS Signal pkg syscall (linux-arm-cgo), const SIGTSTP Signal pkg syscall (linux-arm-cgo), const SIGTTIN Signal pkg syscall (linux-arm-cgo), const SIGTTOU Signal pkg syscall (linux-arm-cgo), const SIGUNUSED Signal pkg syscall (linux-arm-cgo), const SIGURG Signal pkg syscall (linux-arm-cgo), const SIGUSR1 Signal pkg syscall (linux-arm-cgo), const SIGUSR2 Signal pkg syscall (linux-arm-cgo), const SIGVTALRM Signal pkg syscall (linux-arm-cgo), const SIGWINCH Signal pkg syscall (linux-arm-cgo), const SIGXCPU Signal pkg syscall (linux-arm-cgo), const SIGXFSZ Signal pkg syscall (linux-arm-cgo), const SIOCADDDLCI ideal-int pkg syscall (linux-arm-cgo), const SIOCADDMULTI ideal-int pkg syscall (linux-arm-cgo), const SIOCADDRT ideal-int pkg syscall (linux-arm-cgo), const SIOCATMARK ideal-int pkg syscall (linux-arm-cgo), const SIOCDARP ideal-int pkg syscall (linux-arm-cgo), const SIOCDELDLCI ideal-int pkg syscall (linux-arm-cgo), const SIOCDELMULTI ideal-int pkg syscall (linux-arm-cgo), const SIOCDELRT ideal-int pkg syscall (linux-arm-cgo), const SIOCDEVPRIVATE ideal-int pkg syscall (linux-arm-cgo), const SIOCDIFADDR ideal-int pkg syscall (linux-arm-cgo), const SIOCDRARP ideal-int pkg syscall (linux-arm-cgo), const SIOCGARP ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFADDR ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFBR ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFBRDADDR ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFCONF ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFCOUNT ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFDSTADDR ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFENCAP ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFFLAGS ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFHWADDR ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFINDEX ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFMAP ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFMEM ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFMETRIC ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFMTU ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFNAME ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFNETMASK ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFPFLAGS ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFSLAVE ideal-int pkg syscall (linux-arm-cgo), const SIOCGIFTXQLEN ideal-int pkg syscall (linux-arm-cgo), const SIOCGPGRP ideal-int pkg syscall (linux-arm-cgo), const SIOCGRARP ideal-int pkg syscall (linux-arm-cgo), const SIOCGSTAMP ideal-int pkg syscall (linux-arm-cgo), const SIOCGSTAMPNS ideal-int pkg syscall (linux-arm-cgo), const SIOCPROTOPRIVATE ideal-int pkg syscall (linux-arm-cgo), const SIOCRTMSG ideal-int pkg syscall (linux-arm-cgo), const SIOCSARP ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFADDR ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFBR ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFBRDADDR ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFDSTADDR ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFENCAP ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFFLAGS ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFHWADDR ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFHWBROADCAST ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFLINK ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFMAP ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFMEM ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFMETRIC ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFMTU ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFNAME ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFNETMASK ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFPFLAGS ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFSLAVE ideal-int pkg syscall (linux-arm-cgo), const SIOCSIFTXQLEN ideal-int pkg syscall (linux-arm-cgo), const SIOCSPGRP ideal-int pkg syscall (linux-arm-cgo), const SIOCSRARP ideal-int pkg syscall (linux-arm-cgo), const SOCK_CLOEXEC ideal-int pkg syscall (linux-arm-cgo), const SOCK_DCCP ideal-int pkg syscall (linux-arm-cgo), const SOCK_NONBLOCK ideal-int pkg syscall (linux-arm-cgo), const SOCK_PACKET ideal-int pkg syscall (linux-arm-cgo), const SOCK_RDM ideal-int pkg syscall (linux-arm-cgo), const SOL_AAL ideal-int pkg syscall (linux-arm-cgo), const SOL_ATM ideal-int pkg syscall (linux-arm-cgo), const SOL_DECNET ideal-int pkg syscall (linux-arm-cgo), const SOL_ICMPV6 ideal-int pkg syscall (linux-arm-cgo), const SOL_IP ideal-int pkg syscall (linux-arm-cgo), const SOL_IPV6 ideal-int pkg syscall (linux-arm-cgo), const SOL_IRDA ideal-int pkg syscall (linux-arm-cgo), const SOL_PACKET ideal-int pkg syscall (linux-arm-cgo), const SOL_RAW ideal-int pkg syscall (linux-arm-cgo), const SOL_TCP ideal-int pkg syscall (linux-arm-cgo), const SOL_X25 ideal-int pkg syscall (linux-arm-cgo), const SO_ACCEPTCONN ideal-int pkg syscall (linux-arm-cgo), const SO_ATTACH_FILTER ideal-int pkg syscall (linux-arm-cgo), const SO_BINDTODEVICE ideal-int pkg syscall (linux-arm-cgo), const SO_BSDCOMPAT ideal-int pkg syscall (linux-arm-cgo), const SO_DEBUG ideal-int pkg syscall (linux-arm-cgo), const SO_DETACH_FILTER ideal-int pkg syscall (linux-arm-cgo), const SO_DOMAIN ideal-int pkg syscall (linux-arm-cgo), const SO_ERROR ideal-int pkg syscall (linux-arm-cgo), const SO_MARK ideal-int pkg syscall (linux-arm-cgo), const SO_NO_CHECK ideal-int pkg syscall (linux-arm-cgo), const SO_OOBINLINE ideal-int pkg syscall (linux-arm-cgo), const SO_PASSCRED ideal-int pkg syscall (linux-arm-cgo), const SO_PASSSEC ideal-int pkg syscall (linux-arm-cgo), const SO_PEERCRED ideal-int pkg syscall (linux-arm-cgo), const SO_PEERNAME ideal-int pkg syscall (linux-arm-cgo), const SO_PEERSEC ideal-int pkg syscall (linux-arm-cgo), const SO_PRIORITY ideal-int pkg syscall (linux-arm-cgo), const SO_PROTOCOL ideal-int pkg syscall (linux-arm-cgo), const SO_RCVBUFFORCE ideal-int pkg syscall (linux-arm-cgo), const SO_RCVLOWAT ideal-int pkg syscall (linux-arm-cgo), const SO_RCVTIMEO ideal-int pkg syscall (linux-arm-cgo), const SO_RXQ_OVFL ideal-int pkg syscall (linux-arm-cgo), const SO_SECURITY_AUTHENTICATION ideal-int pkg syscall (linux-arm-cgo), const SO_SECURITY_ENCRYPTION_NETWORK ideal-int pkg syscall (linux-arm-cgo), const SO_SECURITY_ENCRYPTION_TRANSPORT ideal-int pkg syscall (linux-arm-cgo), const SO_SNDBUFFORCE ideal-int pkg syscall (linux-arm-cgo), const SO_SNDLOWAT ideal-int pkg syscall (linux-arm-cgo), const SO_SNDTIMEO ideal-int pkg syscall (linux-arm-cgo), const SO_TIMESTAMP ideal-int pkg syscall (linux-arm-cgo), const SO_TIMESTAMPING ideal-int pkg syscall (linux-arm-cgo), const SO_TIMESTAMPNS ideal-int pkg syscall (linux-arm-cgo), const SO_TYPE ideal-int pkg syscall (linux-arm-cgo), const SYS_ACCEPT ideal-int pkg syscall (linux-arm-cgo), const SYS_ACCEPT4 ideal-int pkg syscall (linux-arm-cgo), const SYS_ACCESS ideal-int pkg syscall (linux-arm-cgo), const SYS_ACCT ideal-int pkg syscall (linux-arm-cgo), const SYS_ADD_KEY ideal-int pkg syscall (linux-arm-cgo), const SYS_ADJTIMEX ideal-int pkg syscall (linux-arm-cgo), const SYS_ALARM ideal-int pkg syscall (linux-arm-cgo), const SYS_ARM_FADVISE64_64 ideal-int pkg syscall (linux-arm-cgo), const SYS_ARM_SYNC_FILE_RANGE ideal-int pkg syscall (linux-arm-cgo), const SYS_BDFLUSH ideal-int pkg syscall (linux-arm-cgo), const SYS_BIND ideal-int pkg syscall (linux-arm-cgo), const SYS_BRK ideal-int pkg syscall (linux-arm-cgo), const SYS_CAPGET ideal-int pkg syscall (linux-arm-cgo), const SYS_CAPSET ideal-int pkg syscall (linux-arm-cgo), const SYS_CHDIR ideal-int pkg syscall (linux-arm-cgo), const SYS_CHMOD ideal-int pkg syscall (linux-arm-cgo), const SYS_CHOWN ideal-int pkg syscall (linux-arm-cgo), const SYS_CHOWN32 ideal-int pkg syscall (linux-arm-cgo), const SYS_CHROOT ideal-int pkg syscall (linux-arm-cgo), const SYS_CLOCK_ADJTIME ideal-int pkg syscall (linux-arm-cgo), const SYS_CLOCK_GETRES ideal-int pkg syscall (linux-arm-cgo), const SYS_CLOCK_GETTIME ideal-int pkg syscall (linux-arm-cgo), const SYS_CLOCK_NANOSLEEP ideal-int pkg syscall (linux-arm-cgo), const SYS_CLOCK_SETTIME ideal-int pkg syscall (linux-arm-cgo), const SYS_CLONE ideal-int pkg syscall (linux-arm-cgo), const SYS_CLOSE ideal-int pkg syscall (linux-arm-cgo), const SYS_CONNECT ideal-int pkg syscall (linux-arm-cgo), const SYS_CREAT ideal-int pkg syscall (linux-arm-cgo), const SYS_DELETE_MODULE ideal-int pkg syscall (linux-arm-cgo), const SYS_DUP ideal-int pkg syscall (linux-arm-cgo), const SYS_DUP2 ideal-int pkg syscall (linux-arm-cgo), const SYS_DUP3 ideal-int pkg syscall (linux-arm-cgo), const SYS_EPOLL_CREATE ideal-int pkg syscall (linux-arm-cgo), const SYS_EPOLL_CREATE1 ideal-int pkg syscall (linux-arm-cgo), const SYS_EPOLL_CTL ideal-int pkg syscall (linux-arm-cgo), const SYS_EPOLL_PWAIT ideal-int pkg syscall (linux-arm-cgo), const SYS_EPOLL_WAIT ideal-int pkg syscall (linux-arm-cgo), const SYS_EVENTFD ideal-int pkg syscall (linux-arm-cgo), const SYS_EVENTFD2 ideal-int pkg syscall (linux-arm-cgo), const SYS_EXECVE ideal-int pkg syscall (linux-arm-cgo), const SYS_EXIT ideal-int pkg syscall (linux-arm-cgo), const SYS_EXIT_GROUP ideal-int pkg syscall (linux-arm-cgo), const SYS_FACCESSAT ideal-int pkg syscall (linux-arm-cgo), const SYS_FALLOCATE ideal-int pkg syscall (linux-arm-cgo), const SYS_FANOTIFY_INIT ideal-int pkg syscall (linux-arm-cgo), const SYS_FANOTIFY_MARK ideal-int pkg syscall (linux-arm-cgo), const SYS_FCHDIR ideal-int pkg syscall (linux-arm-cgo), const SYS_FCHMOD ideal-int pkg syscall (linux-arm-cgo), const SYS_FCHMODAT ideal-int pkg syscall (linux-arm-cgo), const SYS_FCHOWN ideal-int pkg syscall (linux-arm-cgo), const SYS_FCHOWN32 ideal-int pkg syscall (linux-arm-cgo), const SYS_FCHOWNAT ideal-int pkg syscall (linux-arm-cgo), const SYS_FCNTL ideal-int pkg syscall (linux-arm-cgo), const SYS_FCNTL64 ideal-int pkg syscall (linux-arm-cgo), const SYS_FDATASYNC ideal-int pkg syscall (linux-arm-cgo), const SYS_FGETXATTR ideal-int pkg syscall (linux-arm-cgo), const SYS_FLISTXATTR ideal-int pkg syscall (linux-arm-cgo), const SYS_FLOCK ideal-int pkg syscall (linux-arm-cgo), const SYS_FORK ideal-int pkg syscall (linux-arm-cgo), const SYS_FREMOVEXATTR ideal-int pkg syscall (linux-arm-cgo), const SYS_FSETXATTR ideal-int pkg syscall (linux-arm-cgo), const SYS_FSTAT ideal-int pkg syscall (linux-arm-cgo), const SYS_FSTAT64 ideal-int pkg syscall (linux-arm-cgo), const SYS_FSTATAT64 ideal-int pkg syscall (linux-arm-cgo), const SYS_FSTATFS ideal-int pkg syscall (linux-arm-cgo), const SYS_FSTATFS64 ideal-int pkg syscall (linux-arm-cgo), const SYS_FSYNC ideal-int pkg syscall (linux-arm-cgo), const SYS_FTRUNCATE ideal-int pkg syscall (linux-arm-cgo), const SYS_FTRUNCATE64 ideal-int pkg syscall (linux-arm-cgo), const SYS_FUTEX ideal-int pkg syscall (linux-arm-cgo), const SYS_FUTIMESAT ideal-int pkg syscall (linux-arm-cgo), const SYS_GETCPU ideal-int pkg syscall (linux-arm-cgo), const SYS_GETCWD ideal-int pkg syscall (linux-arm-cgo), const SYS_GETDENTS ideal-int pkg syscall (linux-arm-cgo), const SYS_GETDENTS64 ideal-int pkg syscall (linux-arm-cgo), const SYS_GETEGID ideal-int pkg syscall (linux-arm-cgo), const SYS_GETEGID32 ideal-int pkg syscall (linux-arm-cgo), const SYS_GETEUID ideal-int pkg syscall (linux-arm-cgo), const SYS_GETEUID32 ideal-int pkg syscall (linux-arm-cgo), const SYS_GETGID ideal-int pkg syscall (linux-arm-cgo), const SYS_GETGID32 ideal-int pkg syscall (linux-arm-cgo), const SYS_GETGROUPS ideal-int pkg syscall (linux-arm-cgo), const SYS_GETGROUPS32 ideal-int pkg syscall (linux-arm-cgo), const SYS_GETITIMER ideal-int pkg syscall (linux-arm-cgo), const SYS_GETPEERNAME ideal-int pkg syscall (linux-arm-cgo), const SYS_GETPGID ideal-int pkg syscall (linux-arm-cgo), const SYS_GETPGRP ideal-int pkg syscall (linux-arm-cgo), const SYS_GETPID ideal-int pkg syscall (linux-arm-cgo), const SYS_GETPPID ideal-int pkg syscall (linux-arm-cgo), const SYS_GETPRIORITY ideal-int pkg syscall (linux-arm-cgo), const SYS_GETRESGID ideal-int pkg syscall (linux-arm-cgo), const SYS_GETRESGID32 ideal-int pkg syscall (linux-arm-cgo), const SYS_GETRESUID ideal-int pkg syscall (linux-arm-cgo), const SYS_GETRESUID32 ideal-int pkg syscall (linux-arm-cgo), const SYS_GETRLIMIT ideal-int pkg syscall (linux-arm-cgo), const SYS_GETRUSAGE ideal-int pkg syscall (linux-arm-cgo), const SYS_GETSID ideal-int pkg syscall (linux-arm-cgo), const SYS_GETSOCKNAME ideal-int pkg syscall (linux-arm-cgo), const SYS_GETSOCKOPT ideal-int pkg syscall (linux-arm-cgo), const SYS_GETTID ideal-int pkg syscall (linux-arm-cgo), const SYS_GETTIMEOFDAY ideal-int pkg syscall (linux-arm-cgo), const SYS_GETUID ideal-int pkg syscall (linux-arm-cgo), const SYS_GETUID32 ideal-int pkg syscall (linux-arm-cgo), const SYS_GETXATTR ideal-int pkg syscall (linux-arm-cgo), const SYS_GET_MEMPOLICY ideal-int pkg syscall (linux-arm-cgo), const SYS_GET_ROBUST_LIST ideal-int pkg syscall (linux-arm-cgo), const SYS_INIT_MODULE ideal-int pkg syscall (linux-arm-cgo), const SYS_INOTIFY_ADD_WATCH ideal-int pkg syscall (linux-arm-cgo), const SYS_INOTIFY_INIT ideal-int pkg syscall (linux-arm-cgo), const SYS_INOTIFY_INIT1 ideal-int pkg syscall (linux-arm-cgo), const SYS_INOTIFY_RM_WATCH ideal-int pkg syscall (linux-arm-cgo), const SYS_IOCTL ideal-int pkg syscall (linux-arm-cgo), const SYS_IOPRIO_GET ideal-int pkg syscall (linux-arm-cgo), const SYS_IOPRIO_SET ideal-int pkg syscall (linux-arm-cgo), const SYS_IO_CANCEL ideal-int pkg syscall (linux-arm-cgo), const SYS_IO_DESTROY ideal-int pkg syscall (linux-arm-cgo), const SYS_IO_GETEVENTS ideal-int pkg syscall (linux-arm-cgo), const SYS_IO_SETUP ideal-int pkg syscall (linux-arm-cgo), const SYS_IO_SUBMIT ideal-int pkg syscall (linux-arm-cgo), const SYS_IPC ideal-int pkg syscall (linux-arm-cgo), const SYS_KEXEC_LOAD ideal-int pkg syscall (linux-arm-cgo), const SYS_KEYCTL ideal-int pkg syscall (linux-arm-cgo), const SYS_KILL ideal-int pkg syscall (linux-arm-cgo), const SYS_LCHOWN ideal-int pkg syscall (linux-arm-cgo), const SYS_LCHOWN32 ideal-int pkg syscall (linux-arm-cgo), const SYS_LGETXATTR ideal-int pkg syscall (linux-arm-cgo), const SYS_LINK ideal-int pkg syscall (linux-arm-cgo), const SYS_LINKAT ideal-int pkg syscall (linux-arm-cgo), const SYS_LISTEN ideal-int pkg syscall (linux-arm-cgo), const SYS_LISTXATTR ideal-int pkg syscall (linux-arm-cgo), const SYS_LLISTXATTR ideal-int pkg syscall (linux-arm-cgo), const SYS_LOOKUP_DCOOKIE ideal-int pkg syscall (linux-arm-cgo), const SYS_LREMOVEXATTR ideal-int pkg syscall (linux-arm-cgo), const SYS_LSEEK ideal-int pkg syscall (linux-arm-cgo), const SYS_LSETXATTR ideal-int pkg syscall (linux-arm-cgo), const SYS_LSTAT ideal-int pkg syscall (linux-arm-cgo), const SYS_LSTAT64 ideal-int pkg syscall (linux-arm-cgo), const SYS_MADVISE ideal-int pkg syscall (linux-arm-cgo), const SYS_MBIND ideal-int pkg syscall (linux-arm-cgo), const SYS_MINCORE ideal-int pkg syscall (linux-arm-cgo), const SYS_MKDIR ideal-int pkg syscall (linux-arm-cgo), const SYS_MKDIRAT ideal-int pkg syscall (linux-arm-cgo), const SYS_MKNOD ideal-int pkg syscall (linux-arm-cgo), const SYS_MKNODAT ideal-int pkg syscall (linux-arm-cgo), const SYS_MLOCK ideal-int pkg syscall (linux-arm-cgo), const SYS_MLOCKALL ideal-int pkg syscall (linux-arm-cgo), const SYS_MMAP ideal-int pkg syscall (linux-arm-cgo), const SYS_MMAP2 ideal-int pkg syscall (linux-arm-cgo), const SYS_MOUNT ideal-int pkg syscall (linux-arm-cgo), const SYS_MOVE_PAGES ideal-int pkg syscall (linux-arm-cgo), const SYS_MPROTECT ideal-int pkg syscall (linux-arm-cgo), const SYS_MQ_GETSETATTR ideal-int pkg syscall (linux-arm-cgo), const SYS_MQ_NOTIFY ideal-int pkg syscall (linux-arm-cgo), const SYS_MQ_OPEN ideal-int pkg syscall (linux-arm-cgo), const SYS_MQ_TIMEDRECEIVE ideal-int pkg syscall (linux-arm-cgo), const SYS_MQ_TIMEDSEND ideal-int pkg syscall (linux-arm-cgo), const SYS_MQ_UNLINK ideal-int pkg syscall (linux-arm-cgo), const SYS_MREMAP ideal-int pkg syscall (linux-arm-cgo), const SYS_MSGCTL ideal-int pkg syscall (linux-arm-cgo), const SYS_MSGGET ideal-int pkg syscall (linux-arm-cgo), const SYS_MSGRCV ideal-int pkg syscall (linux-arm-cgo), const SYS_MSGSND ideal-int pkg syscall (linux-arm-cgo), const SYS_MSYNC ideal-int pkg syscall (linux-arm-cgo), const SYS_MUNLOCK ideal-int pkg syscall (linux-arm-cgo), const SYS_MUNLOCKALL ideal-int pkg syscall (linux-arm-cgo), const SYS_MUNMAP ideal-int pkg syscall (linux-arm-cgo), const SYS_NAME_TO_HANDLE_AT ideal-int pkg syscall (linux-arm-cgo), const SYS_NANOSLEEP ideal-int pkg syscall (linux-arm-cgo), const SYS_NFSSERVCTL ideal-int pkg syscall (linux-arm-cgo), const SYS_NICE ideal-int pkg syscall (linux-arm-cgo), const SYS_OABI_SYSCALL_BASE ideal-int pkg syscall (linux-arm-cgo), const SYS_OPEN ideal-int pkg syscall (linux-arm-cgo), const SYS_OPENAT ideal-int pkg syscall (linux-arm-cgo), const SYS_OPEN_BY_HANDLE_AT ideal-int pkg syscall (linux-arm-cgo), const SYS_PAUSE ideal-int pkg syscall (linux-arm-cgo), const SYS_PCICONFIG_IOBASE ideal-int pkg syscall (linux-arm-cgo), const SYS_PCICONFIG_READ ideal-int pkg syscall (linux-arm-cgo), const SYS_PCICONFIG_WRITE ideal-int pkg syscall (linux-arm-cgo), const SYS_PERF_EVENT_OPEN ideal-int pkg syscall (linux-arm-cgo), const SYS_PERSONALITY ideal-int pkg syscall (linux-arm-cgo), const SYS_PIPE ideal-int pkg syscall (linux-arm-cgo), const SYS_PIPE2 ideal-int pkg syscall (linux-arm-cgo), const SYS_PIVOT_ROOT ideal-int pkg syscall (linux-arm-cgo), const SYS_POLL ideal-int pkg syscall (linux-arm-cgo), const SYS_PPOLL ideal-int pkg syscall (linux-arm-cgo), const SYS_PRCTL ideal-int pkg syscall (linux-arm-cgo), const SYS_PREAD64 ideal-int pkg syscall (linux-arm-cgo), const SYS_PREADV ideal-int pkg syscall (linux-arm-cgo), const SYS_PRLIMIT64 ideal-int pkg syscall (linux-arm-cgo), const SYS_PROCESS_VM_READV ideal-int pkg syscall (linux-arm-cgo), const SYS_PROCESS_VM_WRITEV ideal-int pkg syscall (linux-arm-cgo), const SYS_PSELECT6 ideal-int pkg syscall (linux-arm-cgo), const SYS_PTRACE ideal-int pkg syscall (linux-arm-cgo), const SYS_PWRITE64 ideal-int pkg syscall (linux-arm-cgo), const SYS_PWRITEV ideal-int pkg syscall (linux-arm-cgo), const SYS_QUOTACTL ideal-int pkg syscall (linux-arm-cgo), const SYS_READ ideal-int pkg syscall (linux-arm-cgo), const SYS_READAHEAD ideal-int pkg syscall (linux-arm-cgo), const SYS_READDIR ideal-int pkg syscall (linux-arm-cgo), const SYS_READLINK ideal-int pkg syscall (linux-arm-cgo), const SYS_READLINKAT ideal-int pkg syscall (linux-arm-cgo), const SYS_READV ideal-int pkg syscall (linux-arm-cgo), const SYS_REBOOT ideal-int pkg syscall (linux-arm-cgo), const SYS_RECV ideal-int pkg syscall (linux-arm-cgo), const SYS_RECVFROM ideal-int pkg syscall (linux-arm-cgo), const SYS_RECVMMSG ideal-int pkg syscall (linux-arm-cgo), const SYS_RECVMSG ideal-int pkg syscall (linux-arm-cgo), const SYS_REMAP_FILE_PAGES ideal-int pkg syscall (linux-arm-cgo), const SYS_REMOVEXATTR ideal-int pkg syscall (linux-arm-cgo), const SYS_RENAME ideal-int pkg syscall (linux-arm-cgo), const SYS_RENAMEAT ideal-int pkg syscall (linux-arm-cgo), const SYS_REQUEST_KEY ideal-int pkg syscall (linux-arm-cgo), const SYS_RESTART_SYSCALL ideal-int pkg syscall (linux-arm-cgo), const SYS_RMDIR ideal-int pkg syscall (linux-arm-cgo), const SYS_RT_SIGACTION ideal-int pkg syscall (linux-arm-cgo), const SYS_RT_SIGPENDING ideal-int pkg syscall (linux-arm-cgo), const SYS_RT_SIGPROCMASK ideal-int pkg syscall (linux-arm-cgo), const SYS_RT_SIGQUEUEINFO ideal-int pkg syscall (linux-arm-cgo), const SYS_RT_SIGRETURN ideal-int pkg syscall (linux-arm-cgo), const SYS_RT_SIGSUSPEND ideal-int pkg syscall (linux-arm-cgo), const SYS_RT_SIGTIMEDWAIT ideal-int pkg syscall (linux-arm-cgo), const SYS_RT_TGSIGQUEUEINFO ideal-int pkg syscall (linux-arm-cgo), const SYS_SCHED_GETAFFINITY ideal-int pkg syscall (linux-arm-cgo), const SYS_SCHED_GETPARAM ideal-int pkg syscall (linux-arm-cgo), const SYS_SCHED_GETSCHEDULER ideal-int pkg syscall (linux-arm-cgo), const SYS_SCHED_GET_PRIORITY_MAX ideal-int pkg syscall (linux-arm-cgo), const SYS_SCHED_GET_PRIORITY_MIN ideal-int pkg syscall (linux-arm-cgo), const SYS_SCHED_RR_GET_INTERVAL ideal-int pkg syscall (linux-arm-cgo), const SYS_SCHED_SETAFFINITY ideal-int pkg syscall (linux-arm-cgo), const SYS_SCHED_SETPARAM ideal-int pkg syscall (linux-arm-cgo), const SYS_SCHED_SETSCHEDULER ideal-int pkg syscall (linux-arm-cgo), const SYS_SCHED_YIELD ideal-int pkg syscall (linux-arm-cgo), const SYS_SELECT ideal-int pkg syscall (linux-arm-cgo), const SYS_SEMCTL ideal-int pkg syscall (linux-arm-cgo), const SYS_SEMGET ideal-int pkg syscall (linux-arm-cgo), const SYS_SEMOP ideal-int pkg syscall (linux-arm-cgo), const SYS_SEMTIMEDOP ideal-int pkg syscall (linux-arm-cgo), const SYS_SEND ideal-int pkg syscall (linux-arm-cgo), const SYS_SENDFILE ideal-int pkg syscall (linux-arm-cgo), const SYS_SENDFILE64 ideal-int pkg syscall (linux-arm-cgo), const SYS_SENDMMSG ideal-int pkg syscall (linux-arm-cgo), const SYS_SENDMSG ideal-int pkg syscall (linux-arm-cgo), const SYS_SENDTO ideal-int pkg syscall (linux-arm-cgo), const SYS_SETDOMAINNAME ideal-int pkg syscall (linux-arm-cgo), const SYS_SETFSGID ideal-int pkg syscall (linux-arm-cgo), const SYS_SETFSGID32 ideal-int pkg syscall (linux-arm-cgo), const SYS_SETFSUID ideal-int pkg syscall (linux-arm-cgo), const SYS_SETFSUID32 ideal-int pkg syscall (linux-arm-cgo), const SYS_SETGID ideal-int pkg syscall (linux-arm-cgo), const SYS_SETGID32 ideal-int pkg syscall (linux-arm-cgo), const SYS_SETGROUPS ideal-int pkg syscall (linux-arm-cgo), const SYS_SETGROUPS32 ideal-int pkg syscall (linux-arm-cgo), const SYS_SETHOSTNAME ideal-int pkg syscall (linux-arm-cgo), const SYS_SETITIMER ideal-int pkg syscall (linux-arm-cgo), const SYS_SETNS ideal-int pkg syscall (linux-arm-cgo), const SYS_SETPGID ideal-int pkg syscall (linux-arm-cgo), const SYS_SETPRIORITY ideal-int pkg syscall (linux-arm-cgo), const SYS_SETREGID ideal-int pkg syscall (linux-arm-cgo), const SYS_SETREGID32 ideal-int pkg syscall (linux-arm-cgo), const SYS_SETRESGID ideal-int pkg syscall (linux-arm-cgo), const SYS_SETRESGID32 ideal-int pkg syscall (linux-arm-cgo), const SYS_SETRESUID ideal-int pkg syscall (linux-arm-cgo), const SYS_SETRESUID32 ideal-int pkg syscall (linux-arm-cgo), const SYS_SETREUID ideal-int pkg syscall (linux-arm-cgo), const SYS_SETREUID32 ideal-int pkg syscall (linux-arm-cgo), const SYS_SETRLIMIT ideal-int pkg syscall (linux-arm-cgo), const SYS_SETSID ideal-int pkg syscall (linux-arm-cgo), const SYS_SETSOCKOPT ideal-int pkg syscall (linux-arm-cgo), const SYS_SETTIMEOFDAY ideal-int pkg syscall (linux-arm-cgo), const SYS_SETUID ideal-int pkg syscall (linux-arm-cgo), const SYS_SETUID32 ideal-int pkg syscall (linux-arm-cgo), const SYS_SETXATTR ideal-int pkg syscall (linux-arm-cgo), const SYS_SET_MEMPOLICY ideal-int pkg syscall (linux-arm-cgo), const SYS_SET_ROBUST_LIST ideal-int pkg syscall (linux-arm-cgo), const SYS_SET_TID_ADDRESS ideal-int pkg syscall (linux-arm-cgo), const SYS_SHMAT ideal-int pkg syscall (linux-arm-cgo), const SYS_SHMCTL ideal-int pkg syscall (linux-arm-cgo), const SYS_SHMDT ideal-int pkg syscall (linux-arm-cgo), const SYS_SHMGET ideal-int pkg syscall (linux-arm-cgo), const SYS_SHUTDOWN ideal-int pkg syscall (linux-arm-cgo), const SYS_SIGACTION ideal-int pkg syscall (linux-arm-cgo), const SYS_SIGALTSTACK ideal-int pkg syscall (linux-arm-cgo), const SYS_SIGNALFD ideal-int pkg syscall (linux-arm-cgo), const SYS_SIGNALFD4 ideal-int pkg syscall (linux-arm-cgo), const SYS_SIGPENDING ideal-int pkg syscall (linux-arm-cgo), const SYS_SIGPROCMASK ideal-int pkg syscall (linux-arm-cgo), const SYS_SIGRETURN ideal-int pkg syscall (linux-arm-cgo), const SYS_SIGSUSPEND ideal-int pkg syscall (linux-arm-cgo), const SYS_SOCKET ideal-int pkg syscall (linux-arm-cgo), const SYS_SOCKETCALL ideal-int pkg syscall (linux-arm-cgo), const SYS_SOCKETPAIR ideal-int pkg syscall (linux-arm-cgo), const SYS_SPLICE ideal-int pkg syscall (linux-arm-cgo), const SYS_STAT ideal-int pkg syscall (linux-arm-cgo), const SYS_STAT64 ideal-int pkg syscall (linux-arm-cgo), const SYS_STATFS ideal-int pkg syscall (linux-arm-cgo), const SYS_STATFS64 ideal-int pkg syscall (linux-arm-cgo), const SYS_STIME ideal-int pkg syscall (linux-arm-cgo), const SYS_SWAPOFF ideal-int pkg syscall (linux-arm-cgo), const SYS_SWAPON ideal-int pkg syscall (linux-arm-cgo), const SYS_SYMLINK ideal-int pkg syscall (linux-arm-cgo), const SYS_SYMLINKAT ideal-int pkg syscall (linux-arm-cgo), const SYS_SYNC ideal-int pkg syscall (linux-arm-cgo), const SYS_SYNCFS ideal-int pkg syscall (linux-arm-cgo), const SYS_SYSCALL ideal-int pkg syscall (linux-arm-cgo), const SYS_SYSCALL_BASE ideal-int pkg syscall (linux-arm-cgo), const SYS_SYSFS ideal-int pkg syscall (linux-arm-cgo), const SYS_SYSINFO ideal-int pkg syscall (linux-arm-cgo), const SYS_SYSLOG ideal-int pkg syscall (linux-arm-cgo), const SYS_TEE ideal-int pkg syscall (linux-arm-cgo), const SYS_TGKILL ideal-int pkg syscall (linux-arm-cgo), const SYS_TIME ideal-int pkg syscall (linux-arm-cgo), const SYS_TIMERFD_CREATE ideal-int pkg syscall (linux-arm-cgo), const SYS_TIMERFD_GETTIME ideal-int pkg syscall (linux-arm-cgo), const SYS_TIMERFD_SETTIME ideal-int pkg syscall (linux-arm-cgo), const SYS_TIMER_CREATE ideal-int pkg syscall (linux-arm-cgo), const SYS_TIMER_DELETE ideal-int pkg syscall (linux-arm-cgo), const SYS_TIMER_GETOVERRUN ideal-int pkg syscall (linux-arm-cgo), const SYS_TIMER_GETTIME ideal-int pkg syscall (linux-arm-cgo), const SYS_TIMER_SETTIME ideal-int pkg syscall (linux-arm-cgo), const SYS_TIMES ideal-int pkg syscall (linux-arm-cgo), const SYS_TKILL ideal-int pkg syscall (linux-arm-cgo), const SYS_TRUNCATE ideal-int pkg syscall (linux-arm-cgo), const SYS_TRUNCATE64 ideal-int pkg syscall (linux-arm-cgo), const SYS_UGETRLIMIT ideal-int pkg syscall (linux-arm-cgo), const SYS_UMASK ideal-int pkg syscall (linux-arm-cgo), const SYS_UMOUNT ideal-int pkg syscall (linux-arm-cgo), const SYS_UMOUNT2 ideal-int pkg syscall (linux-arm-cgo), const SYS_UNAME ideal-int pkg syscall (linux-arm-cgo), const SYS_UNLINK ideal-int pkg syscall (linux-arm-cgo), const SYS_UNLINKAT ideal-int pkg syscall (linux-arm-cgo), const SYS_UNSHARE ideal-int pkg syscall (linux-arm-cgo), const SYS_USELIB ideal-int pkg syscall (linux-arm-cgo), const SYS_USTAT ideal-int pkg syscall (linux-arm-cgo), const SYS_UTIME ideal-int pkg syscall (linux-arm-cgo), const SYS_UTIMENSAT ideal-int pkg syscall (linux-arm-cgo), const SYS_UTIMES ideal-int pkg syscall (linux-arm-cgo), const SYS_VFORK ideal-int pkg syscall (linux-arm-cgo), const SYS_VHANGUP ideal-int pkg syscall (linux-arm-cgo), const SYS_VMSPLICE ideal-int pkg syscall (linux-arm-cgo), const SYS_VSERVER ideal-int pkg syscall (linux-arm-cgo), const SYS_WAIT4 ideal-int pkg syscall (linux-arm-cgo), const SYS_WAITID ideal-int pkg syscall (linux-arm-cgo), const SYS_WRITE ideal-int pkg syscall (linux-arm-cgo), const SYS_WRITEV ideal-int pkg syscall (linux-arm-cgo), const SYS__LLSEEK ideal-int pkg syscall (linux-arm-cgo), const SYS__NEWSELECT ideal-int pkg syscall (linux-arm-cgo), const SYS__SYSCTL ideal-int pkg syscall (linux-arm-cgo), const S_BLKSIZE ideal-int pkg syscall (linux-arm-cgo), const S_IEXEC ideal-int pkg syscall (linux-arm-cgo), const S_IREAD ideal-int pkg syscall (linux-arm-cgo), const S_IRGRP ideal-int pkg syscall (linux-arm-cgo), const S_IROTH ideal-int pkg syscall (linux-arm-cgo), const S_IRWXG ideal-int pkg syscall (linux-arm-cgo), const S_IRWXO ideal-int pkg syscall (linux-arm-cgo), const S_IRWXU ideal-int pkg syscall (linux-arm-cgo), const S_IWGRP ideal-int pkg syscall (linux-arm-cgo), const S_IWOTH ideal-int pkg syscall (linux-arm-cgo), const S_IWRITE ideal-int pkg syscall (linux-arm-cgo), const S_IXGRP ideal-int pkg syscall (linux-arm-cgo), const S_IXOTH ideal-int pkg syscall (linux-arm-cgo), const SizeofCmsghdr ideal-int pkg syscall (linux-arm-cgo), const SizeofICMPv6Filter = 32 pkg syscall (linux-arm-cgo), const SizeofICMPv6Filter ideal-int pkg syscall (linux-arm-cgo), const SizeofIPMreq ideal-int pkg syscall (linux-arm-cgo), const SizeofIPMreqn ideal-int pkg syscall (linux-arm-cgo), const SizeofIPv6MTUInfo = 32 pkg syscall (linux-arm-cgo), const SizeofIPv6MTUInfo ideal-int pkg syscall (linux-arm-cgo), const SizeofIPv6Mreq ideal-int pkg syscall (linux-arm-cgo), const SizeofIfAddrmsg ideal-int pkg syscall (linux-arm-cgo), const SizeofIfInfomsg ideal-int pkg syscall (linux-arm-cgo), const SizeofInet4Pktinfo ideal-int pkg syscall (linux-arm-cgo), const SizeofInet6Pktinfo ideal-int pkg syscall (linux-arm-cgo), const SizeofInotifyEvent ideal-int pkg syscall (linux-arm-cgo), const SizeofLinger ideal-int pkg syscall (linux-arm-cgo), const SizeofMsghdr ideal-int pkg syscall (linux-arm-cgo), const SizeofNlAttr ideal-int pkg syscall (linux-arm-cgo), const SizeofNlMsgerr ideal-int pkg syscall (linux-arm-cgo), const SizeofNlMsghdr ideal-int pkg syscall (linux-arm-cgo), const SizeofRtAttr ideal-int pkg syscall (linux-arm-cgo), const SizeofRtGenmsg ideal-int pkg syscall (linux-arm-cgo), const SizeofRtMsg ideal-int pkg syscall (linux-arm-cgo), const SizeofRtNexthop ideal-int pkg syscall (linux-arm-cgo), const SizeofSockFilter ideal-int pkg syscall (linux-arm-cgo), const SizeofSockFprog ideal-int pkg syscall (linux-arm-cgo), const SizeofSockaddrAny ideal-int pkg syscall (linux-arm-cgo), const SizeofSockaddrInet4 ideal-int pkg syscall (linux-arm-cgo), const SizeofSockaddrInet6 ideal-int pkg syscall (linux-arm-cgo), const SizeofSockaddrLinklayer ideal-int pkg syscall (linux-arm-cgo), const SizeofSockaddrNetlink ideal-int pkg syscall (linux-arm-cgo), const SizeofSockaddrUnix ideal-int pkg syscall (linux-arm-cgo), const SizeofTCPInfo ideal-int pkg syscall (linux-arm-cgo), const SizeofUcred ideal-int pkg syscall (linux-arm-cgo), const TCGETS ideal-int pkg syscall (linux-arm-cgo), const TCIFLUSH = 0 pkg syscall (linux-arm-cgo), const TCIFLUSH ideal-int pkg syscall (linux-arm-cgo), const TCIOFLUSH = 2 pkg syscall (linux-arm-cgo), const TCIOFLUSH ideal-int pkg syscall (linux-arm-cgo), const TCOFLUSH = 1 pkg syscall (linux-arm-cgo), const TCOFLUSH ideal-int pkg syscall (linux-arm-cgo), const TCP_CONGESTION ideal-int pkg syscall (linux-arm-cgo), const TCP_CORK ideal-int pkg syscall (linux-arm-cgo), const TCP_DEFER_ACCEPT ideal-int pkg syscall (linux-arm-cgo), const TCP_INFO ideal-int pkg syscall (linux-arm-cgo), const TCP_KEEPCNT ideal-int pkg syscall (linux-arm-cgo), const TCP_KEEPIDLE ideal-int pkg syscall (linux-arm-cgo), const TCP_KEEPINTVL ideal-int pkg syscall (linux-arm-cgo), const TCP_LINGER2 ideal-int pkg syscall (linux-arm-cgo), const TCP_MAXSEG ideal-int pkg syscall (linux-arm-cgo), const TCP_MAXWIN ideal-int pkg syscall (linux-arm-cgo), const TCP_MAX_WINSHIFT ideal-int pkg syscall (linux-arm-cgo), const TCP_MD5SIG ideal-int pkg syscall (linux-arm-cgo), const TCP_MD5SIG_MAXKEYLEN ideal-int pkg syscall (linux-arm-cgo), const TCP_MSS ideal-int pkg syscall (linux-arm-cgo), const TCP_QUICKACK ideal-int pkg syscall (linux-arm-cgo), const TCP_SYNCNT ideal-int pkg syscall (linux-arm-cgo), const TCP_WINDOW_CLAMP ideal-int pkg syscall (linux-arm-cgo), const TCSETS ideal-int pkg syscall (linux-arm-cgo), const TIOCCBRK ideal-int pkg syscall (linux-arm-cgo), const TIOCCONS ideal-int pkg syscall (linux-arm-cgo), const TIOCEXCL ideal-int pkg syscall (linux-arm-cgo), const TIOCGDEV ideal-int pkg syscall (linux-arm-cgo), const TIOCGETD ideal-int pkg syscall (linux-arm-cgo), const TIOCGICOUNT ideal-int pkg syscall (linux-arm-cgo), const TIOCGLCKTRMIOS ideal-int pkg syscall (linux-arm-cgo), const TIOCGPGRP ideal-int pkg syscall (linux-arm-cgo), const TIOCGPTN ideal-int pkg syscall (linux-arm-cgo), const TIOCGRS485 ideal-int pkg syscall (linux-arm-cgo), const TIOCGSERIAL ideal-int pkg syscall (linux-arm-cgo), const TIOCGSID ideal-int pkg syscall (linux-arm-cgo), const TIOCGSOFTCAR ideal-int pkg syscall (linux-arm-cgo), const TIOCGWINSZ ideal-int pkg syscall (linux-arm-cgo), const TIOCINQ ideal-int pkg syscall (linux-arm-cgo), const TIOCLINUX ideal-int pkg syscall (linux-arm-cgo), const TIOCMBIC ideal-int pkg syscall (linux-arm-cgo), const TIOCMBIS ideal-int pkg syscall (linux-arm-cgo), const TIOCMGET ideal-int pkg syscall (linux-arm-cgo), const TIOCMIWAIT ideal-int pkg syscall (linux-arm-cgo), const TIOCMSET ideal-int pkg syscall (linux-arm-cgo), const TIOCM_CAR ideal-int pkg syscall (linux-arm-cgo), const TIOCM_CD ideal-int pkg syscall (linux-arm-cgo), const TIOCM_CTS ideal-int pkg syscall (linux-arm-cgo), const TIOCM_DSR ideal-int pkg syscall (linux-arm-cgo), const TIOCM_DTR ideal-int pkg syscall (linux-arm-cgo), const TIOCM_LE ideal-int pkg syscall (linux-arm-cgo), const TIOCM_RI ideal-int pkg syscall (linux-arm-cgo), const TIOCM_RNG ideal-int pkg syscall (linux-arm-cgo), const TIOCM_RTS ideal-int pkg syscall (linux-arm-cgo), const TIOCM_SR ideal-int pkg syscall (linux-arm-cgo), const TIOCM_ST ideal-int pkg syscall (linux-arm-cgo), const TIOCNOTTY ideal-int pkg syscall (linux-arm-cgo), const TIOCNXCL ideal-int pkg syscall (linux-arm-cgo), const TIOCOUTQ ideal-int pkg syscall (linux-arm-cgo), const TIOCPKT ideal-int pkg syscall (linux-arm-cgo), const TIOCPKT_DATA ideal-int pkg syscall (linux-arm-cgo), const TIOCPKT_DOSTOP ideal-int pkg syscall (linux-arm-cgo), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (linux-arm-cgo), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (linux-arm-cgo), const TIOCPKT_IOCTL ideal-int pkg syscall (linux-arm-cgo), const TIOCPKT_NOSTOP ideal-int pkg syscall (linux-arm-cgo), const TIOCPKT_START ideal-int pkg syscall (linux-arm-cgo), const TIOCPKT_STOP ideal-int pkg syscall (linux-arm-cgo), const TIOCSBRK ideal-int pkg syscall (linux-arm-cgo), const TIOCSCTTY ideal-int pkg syscall (linux-arm-cgo), const TIOCSERCONFIG ideal-int pkg syscall (linux-arm-cgo), const TIOCSERGETLSR ideal-int pkg syscall (linux-arm-cgo), const TIOCSERGETMULTI ideal-int pkg syscall (linux-arm-cgo), const TIOCSERGSTRUCT ideal-int pkg syscall (linux-arm-cgo), const TIOCSERGWILD ideal-int pkg syscall (linux-arm-cgo), const TIOCSERSETMULTI ideal-int pkg syscall (linux-arm-cgo), const TIOCSERSWILD ideal-int pkg syscall (linux-arm-cgo), const TIOCSER_TEMT ideal-int pkg syscall (linux-arm-cgo), const TIOCSETD ideal-int pkg syscall (linux-arm-cgo), const TIOCSIG ideal-int pkg syscall (linux-arm-cgo), const TIOCSLCKTRMIOS ideal-int pkg syscall (linux-arm-cgo), const TIOCSPGRP ideal-int pkg syscall (linux-arm-cgo), const TIOCSPTLCK ideal-int pkg syscall (linux-arm-cgo), const TIOCSRS485 ideal-int pkg syscall (linux-arm-cgo), const TIOCSSERIAL ideal-int pkg syscall (linux-arm-cgo), const TIOCSSOFTCAR ideal-int pkg syscall (linux-arm-cgo), const TIOCSTI ideal-int pkg syscall (linux-arm-cgo), const TIOCSWINSZ ideal-int pkg syscall (linux-arm-cgo), const TIOCVHANGUP ideal-int pkg syscall (linux-arm-cgo), const TOSTOP ideal-int pkg syscall (linux-arm-cgo), const TUNATTACHFILTER ideal-int pkg syscall (linux-arm-cgo), const TUNDETACHFILTER ideal-int pkg syscall (linux-arm-cgo), const TUNGETFEATURES ideal-int pkg syscall (linux-arm-cgo), const TUNGETIFF ideal-int pkg syscall (linux-arm-cgo), const TUNGETSNDBUF ideal-int pkg syscall (linux-arm-cgo), const TUNGETVNETHDRSZ ideal-int pkg syscall (linux-arm-cgo), const TUNSETDEBUG ideal-int pkg syscall (linux-arm-cgo), const TUNSETGROUP ideal-int pkg syscall (linux-arm-cgo), const TUNSETIFF ideal-int pkg syscall (linux-arm-cgo), const TUNSETLINK ideal-int pkg syscall (linux-arm-cgo), const TUNSETNOCSUM ideal-int pkg syscall (linux-arm-cgo), const TUNSETOFFLOAD ideal-int pkg syscall (linux-arm-cgo), const TUNSETOWNER ideal-int pkg syscall (linux-arm-cgo), const TUNSETPERSIST ideal-int pkg syscall (linux-arm-cgo), const TUNSETSNDBUF ideal-int pkg syscall (linux-arm-cgo), const TUNSETTXFILTER ideal-int pkg syscall (linux-arm-cgo), const TUNSETVNETHDRSZ ideal-int pkg syscall (linux-arm-cgo), const VDISCARD ideal-int pkg syscall (linux-arm-cgo), const VEOF ideal-int pkg syscall (linux-arm-cgo), const VEOL ideal-int pkg syscall (linux-arm-cgo), const VEOL2 ideal-int pkg syscall (linux-arm-cgo), const VERASE ideal-int pkg syscall (linux-arm-cgo), const VINTR ideal-int pkg syscall (linux-arm-cgo), const VKILL ideal-int pkg syscall (linux-arm-cgo), const VLNEXT ideal-int pkg syscall (linux-arm-cgo), const VMIN ideal-int pkg syscall (linux-arm-cgo), const VQUIT ideal-int pkg syscall (linux-arm-cgo), const VREPRINT ideal-int pkg syscall (linux-arm-cgo), const VSTART ideal-int pkg syscall (linux-arm-cgo), const VSTOP ideal-int pkg syscall (linux-arm-cgo), const VSUSP ideal-int pkg syscall (linux-arm-cgo), const VSWTC ideal-int pkg syscall (linux-arm-cgo), const VTIME ideal-int pkg syscall (linux-arm-cgo), const VWERASE ideal-int pkg syscall (linux-arm-cgo), const WALL ideal-int pkg syscall (linux-arm-cgo), const WCLONE ideal-int pkg syscall (linux-arm-cgo), const WCONTINUED ideal-int pkg syscall (linux-arm-cgo), const WEXITED ideal-int pkg syscall (linux-arm-cgo), const WNOHANG ideal-int pkg syscall (linux-arm-cgo), const WNOTHREAD ideal-int pkg syscall (linux-arm-cgo), const WNOWAIT ideal-int pkg syscall (linux-arm-cgo), const WORDSIZE ideal-int pkg syscall (linux-arm-cgo), const WSTOPPED ideal-int pkg syscall (linux-arm-cgo), const WUNTRACED ideal-int pkg syscall (linux-arm-cgo), const XCASE ideal-int pkg syscall (linux-arm-cgo), func Accept(int) (int, Sockaddr, error) pkg syscall (linux-arm-cgo), func Accept4(int, int) (int, Sockaddr, error) pkg syscall (linux-arm-cgo), func Access(string, uint32) error pkg syscall (linux-arm-cgo), func Acct(string) error pkg syscall (linux-arm-cgo), func Adjtimex(*Timex) (int, error) pkg syscall (linux-arm-cgo), func AttachLsf(int, []SockFilter) error pkg syscall (linux-arm-cgo), func Bind(int, Sockaddr) error pkg syscall (linux-arm-cgo), func BindToDevice(int, string) error pkg syscall (linux-arm-cgo), func Chroot(string) error pkg syscall (linux-arm-cgo), func Close(int) error pkg syscall (linux-arm-cgo), func CloseOnExec(int) pkg syscall (linux-arm-cgo), func CmsgLen(int) int pkg syscall (linux-arm-cgo), func CmsgSpace(int) int pkg syscall (linux-arm-cgo), func Connect(int, Sockaddr) error pkg syscall (linux-arm-cgo), func Creat(string, uint32) (int, error) pkg syscall (linux-arm-cgo), func DetachLsf(int) error pkg syscall (linux-arm-cgo), func Dup(int) (int, error) pkg syscall (linux-arm-cgo), func Dup2(int, int) error pkg syscall (linux-arm-cgo), func Dup3(int, int, int) error pkg syscall (linux-arm-cgo), func EpollCreate(int) (int, error) pkg syscall (linux-arm-cgo), func EpollCreate1(int) (int, error) pkg syscall (linux-arm-cgo), func EpollCtl(int, int, int, *EpollEvent) error pkg syscall (linux-arm-cgo), func EpollWait(int, []EpollEvent, int) (int, error) pkg syscall (linux-arm-cgo), func Faccessat(int, string, uint32, int) error pkg syscall (linux-arm-cgo), func Fallocate(int, uint32, int64, int64) error pkg syscall (linux-arm-cgo), func Fchdir(int) error pkg syscall (linux-arm-cgo), func Fchmod(int, uint32) error pkg syscall (linux-arm-cgo), func Fchmodat(int, string, uint32, int) error pkg syscall (linux-arm-cgo), func Fchown(int, int, int) error pkg syscall (linux-arm-cgo), func Fchownat(int, string, int, int, int) error pkg syscall (linux-arm-cgo), func Fdatasync(int) error pkg syscall (linux-arm-cgo), func Flock(int, int) error pkg syscall (linux-arm-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (linux-arm-cgo), func Fstat(int, *Stat_t) error pkg syscall (linux-arm-cgo), func Fstatfs(int, *Statfs_t) error pkg syscall (linux-arm-cgo), func Fsync(int) error pkg syscall (linux-arm-cgo), func Ftruncate(int, int64) error pkg syscall (linux-arm-cgo), func Futimes(int, []Timeval) error pkg syscall (linux-arm-cgo), func Futimesat(int, string, []Timeval) error pkg syscall (linux-arm-cgo), func Getcwd([]uint8) (int, error) pkg syscall (linux-arm-cgo), func Getdents(int, []uint8) (int, error) pkg syscall (linux-arm-cgo), func Getpeername(int) (Sockaddr, error) pkg syscall (linux-arm-cgo), func Getpgid(int) (int, error) pkg syscall (linux-arm-cgo), func Getpgrp() int pkg syscall (linux-arm-cgo), func Getpriority(int, int) (int, error) pkg syscall (linux-arm-cgo), func Getrlimit(int, *Rlimit) error pkg syscall (linux-arm-cgo), func Getrusage(int, *Rusage) error pkg syscall (linux-arm-cgo), func Getsockname(int) (Sockaddr, error) pkg syscall (linux-arm-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (linux-arm-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (linux-arm-cgo), func GetsockoptIPMreqn(int, int, int) (*IPMreqn, error) pkg syscall (linux-arm-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (linux-arm-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (linux-arm-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (linux-arm-cgo), func GetsockoptInt(int, int, int) (int, error) pkg syscall (linux-arm-cgo), func GetsockoptUcred(int, int, int) (*Ucred, error) pkg syscall (linux-arm-cgo), func Gettid() int pkg syscall (linux-arm-cgo), func Getxattr(string, string, []uint8) (int, error) pkg syscall (linux-arm-cgo), func InotifyAddWatch(int, string, uint32) (int, error) pkg syscall (linux-arm-cgo), func InotifyInit() (int, error) pkg syscall (linux-arm-cgo), func InotifyInit1(int) (int, error) pkg syscall (linux-arm-cgo), func InotifyRmWatch(int, uint32) (int, error) pkg syscall (linux-arm-cgo), func Kill(int, Signal) error pkg syscall (linux-arm-cgo), func Klogctl(int, []uint8) (int, error) pkg syscall (linux-arm-cgo), func Listen(int, int) error pkg syscall (linux-arm-cgo), func Listxattr(string, []uint8) (int, error) pkg syscall (linux-arm-cgo), func LsfJump(int, int, int, int) *SockFilter pkg syscall (linux-arm-cgo), func LsfSocket(int, int) (int, error) pkg syscall (linux-arm-cgo), func LsfStmt(int, int) *SockFilter pkg syscall (linux-arm-cgo), func Lstat(string, *Stat_t) error pkg syscall (linux-arm-cgo), func Madvise([]uint8, int) error pkg syscall (linux-arm-cgo), func Mkdirat(int, string, uint32) error pkg syscall (linux-arm-cgo), func Mkfifo(string, uint32) error pkg syscall (linux-arm-cgo), func Mknod(string, uint32, int) error pkg syscall (linux-arm-cgo), func Mknodat(int, string, uint32, int) error pkg syscall (linux-arm-cgo), func Mlock([]uint8) error pkg syscall (linux-arm-cgo), func Mlockall(int) error pkg syscall (linux-arm-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (linux-arm-cgo), func Mount(string, string, string, uintptr, string) error pkg syscall (linux-arm-cgo), func Mprotect([]uint8, int) error pkg syscall (linux-arm-cgo), func Munlock([]uint8) error pkg syscall (linux-arm-cgo), func Munlockall() error pkg syscall (linux-arm-cgo), func Munmap([]uint8) error pkg syscall (linux-arm-cgo), func Nanosleep(*Timespec, *Timespec) error pkg syscall (linux-arm-cgo), func NetlinkRIB(int, int) ([]uint8, error) pkg syscall (linux-arm-cgo), func Open(string, int, uint32) (int, error) pkg syscall (linux-arm-cgo), func Openat(int, string, int, uint32) (int, error) pkg syscall (linux-arm-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (linux-arm-cgo), func ParseNetlinkMessage([]uint8) ([]NetlinkMessage, error) pkg syscall (linux-arm-cgo), func ParseNetlinkRouteAttr(*NetlinkMessage) ([]NetlinkRouteAttr, error) pkg syscall (linux-arm-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (linux-arm-cgo), func ParseUnixCredentials(*SocketControlMessage) (*Ucred, error) pkg syscall (linux-arm-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (linux-arm-cgo), func Pause() error pkg syscall (linux-arm-cgo), func Pipe([]int) error pkg syscall (linux-arm-cgo), func Pipe2([]int, int) error pkg syscall (linux-arm-cgo), func PivotRoot(string, string) error pkg syscall (linux-arm-cgo), func Pread(int, []uint8, int64) (int, error) pkg syscall (linux-arm-cgo), func PtraceAttach(int) error pkg syscall (linux-arm-cgo), func PtraceCont(int, int) error pkg syscall (linux-arm-cgo), func PtraceDetach(int) error pkg syscall (linux-arm-cgo), func PtraceGetEventMsg(int) (uint, error) pkg syscall (linux-arm-cgo), func PtraceGetRegs(int, *PtraceRegs) error pkg syscall (linux-arm-cgo), func PtracePeekData(int, uintptr, []uint8) (int, error) pkg syscall (linux-arm-cgo), func PtracePeekText(int, uintptr, []uint8) (int, error) pkg syscall (linux-arm-cgo), func PtracePokeData(int, uintptr, []uint8) (int, error) pkg syscall (linux-arm-cgo), func PtracePokeText(int, uintptr, []uint8) (int, error) pkg syscall (linux-arm-cgo), func PtraceSetOptions(int, int) error pkg syscall (linux-arm-cgo), func PtraceSetRegs(int, *PtraceRegs) error pkg syscall (linux-arm-cgo), func PtraceSingleStep(int) error pkg syscall (linux-arm-cgo), func PtraceSyscall(int, int) error pkg syscall (linux-arm-cgo), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (linux-arm-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-arm-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-arm-cgo), func Read(int, []uint8) (int, error) pkg syscall (linux-arm-cgo), func ReadDirent(int, []uint8) (int, error) pkg syscall (linux-arm-cgo), func Reboot(int) error pkg syscall (linux-arm-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (linux-arm-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (linux-arm-cgo), func Removexattr(string, string) error pkg syscall (linux-arm-cgo), func Renameat(int, string, int, string) error pkg syscall (linux-arm-cgo), func Seek(int, int64, int) (int64, error) pkg syscall (linux-arm-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) (int, error) pkg syscall (linux-arm-cgo), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (linux-arm-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (linux-arm-cgo), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (linux-arm-cgo), func SetLsfPromisc(string, bool) error pkg syscall (linux-arm-cgo), func SetNonblock(int, bool) error pkg syscall (linux-arm-cgo), func Setdomainname([]uint8) error pkg syscall (linux-arm-cgo), func Setfsgid(int) error pkg syscall (linux-arm-cgo), func Setfsuid(int) error pkg syscall (linux-arm-cgo), func Setgid(int) error pkg syscall (linux-arm-cgo), func Setgroups([]int) error pkg syscall (linux-arm-cgo), func Sethostname([]uint8) error pkg syscall (linux-arm-cgo), func Setpgid(int, int) error pkg syscall (linux-arm-cgo), func Setpriority(int, int, int) error pkg syscall (linux-arm-cgo), func Setregid(int, int) error pkg syscall (linux-arm-cgo), func Setresgid(int, int, int) error pkg syscall (linux-arm-cgo), func Setresuid(int, int, int) error pkg syscall (linux-arm-cgo), func Setreuid(int, int) error pkg syscall (linux-arm-cgo), func Setrlimit(int, *Rlimit) error pkg syscall (linux-arm-cgo), func Setsid() (int, error) pkg syscall (linux-arm-cgo), func SetsockoptByte(int, int, int, uint8) error pkg syscall (linux-arm-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (linux-arm-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (linux-arm-cgo), func SetsockoptIPMreqn(int, int, int, *IPMreqn) error pkg syscall (linux-arm-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (linux-arm-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (linux-arm-cgo), func SetsockoptInt(int, int, int, int) error pkg syscall (linux-arm-cgo), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (linux-arm-cgo), func SetsockoptString(int, int, int, string) error pkg syscall (linux-arm-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (linux-arm-cgo), func Settimeofday(*Timeval) error pkg syscall (linux-arm-cgo), func Setuid(int) error pkg syscall (linux-arm-cgo), func Setxattr(string, string, []uint8, int) error pkg syscall (linux-arm-cgo), func Shutdown(int, int) error pkg syscall (linux-arm-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (linux-arm-cgo), func Socket(int, int, int) (int, error) pkg syscall (linux-arm-cgo), func Socketpair(int, int, int) ([2]int, error) pkg syscall (linux-arm-cgo), func Splice(int, *int64, int, *int64, int, int) (int, error) pkg syscall (linux-arm-cgo), func Stat(string, *Stat_t) error pkg syscall (linux-arm-cgo), func Statfs(string, *Statfs_t) error pkg syscall (linux-arm-cgo), func StringSlicePtr([]string) []*uint8 pkg syscall (linux-arm-cgo), func Sync() pkg syscall (linux-arm-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-arm-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-arm-cgo), func Sysinfo(*Sysinfo_t) error pkg syscall (linux-arm-cgo), func Tee(int, int, int, int) (int64, error) pkg syscall (linux-arm-cgo), func Tgkill(int, int, Signal) error pkg syscall (linux-arm-cgo), func Time(*Time_t) (Time_t, error) pkg syscall (linux-arm-cgo), func Times(*Tms) (uintptr, error) pkg syscall (linux-arm-cgo), func Truncate(string, int64) error pkg syscall (linux-arm-cgo), func Umask(int) int pkg syscall (linux-arm-cgo), func Uname(*Utsname) error pkg syscall (linux-arm-cgo), func UnixCredentials(*Ucred) []uint8 pkg syscall (linux-arm-cgo), func UnixRights(...int) []uint8 pkg syscall (linux-arm-cgo), func Unlinkat(int, string) error pkg syscall (linux-arm-cgo), func Unmount(string, int) error pkg syscall (linux-arm-cgo), func Unshare(int) error pkg syscall (linux-arm-cgo), func Ustat(int, *Ustat_t) error pkg syscall (linux-arm-cgo), func Utime(string, *Utimbuf) error pkg syscall (linux-arm-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (linux-arm-cgo), func Write(int, []uint8) (int, error) pkg syscall (linux-arm-cgo), method (*Cmsghdr) SetLen(int) pkg syscall (linux-arm-cgo), method (*Iovec) SetLen(int) pkg syscall (linux-arm-cgo), method (*Msghdr) SetControllen(int) pkg syscall (linux-arm-cgo), method (*PtraceRegs) PC() uint64 pkg syscall (linux-arm-cgo), method (*PtraceRegs) SetPC(uint64) pkg syscall (linux-arm-cgo), type Cmsghdr struct pkg syscall (linux-arm-cgo), type Cmsghdr struct, Len uint32 pkg syscall (linux-arm-cgo), type Cmsghdr struct, Level int32 pkg syscall (linux-arm-cgo), type Cmsghdr struct, Type int32 pkg syscall (linux-arm-cgo), type Cmsghdr struct, X__cmsg_data [0]uint8 pkg syscall (linux-arm-cgo), type Credential struct pkg syscall (linux-arm-cgo), type Credential struct, Gid uint32 pkg syscall (linux-arm-cgo), type Credential struct, Groups []uint32 pkg syscall (linux-arm-cgo), type Credential struct, Uid uint32 pkg syscall (linux-arm-cgo), type Dirent struct pkg syscall (linux-arm-cgo), type Dirent struct, Ino uint64 pkg syscall (linux-arm-cgo), type Dirent struct, Name [256]uint8 pkg syscall (linux-arm-cgo), type Dirent struct, Off int64 pkg syscall (linux-arm-cgo), type Dirent struct, Pad_cgo_0 [5]uint8 pkg syscall (linux-arm-cgo), type Dirent struct, Reclen uint16 pkg syscall (linux-arm-cgo), type Dirent struct, Type uint8 pkg syscall (linux-arm-cgo), type EpollEvent struct pkg syscall (linux-arm-cgo), type EpollEvent struct, Events uint32 pkg syscall (linux-arm-cgo), type EpollEvent struct, Fd int32 pkg syscall (linux-arm-cgo), type EpollEvent struct, Pad int32 pkg syscall (linux-arm-cgo), type EpollEvent struct, PadFd int32 pkg syscall (linux-arm-cgo), type FdSet struct pkg syscall (linux-arm-cgo), type FdSet struct, Bits [32]int32 pkg syscall (linux-arm-cgo), type Fsid struct pkg syscall (linux-arm-cgo), type Fsid struct, X__val [2]int32 pkg syscall (linux-arm-cgo), type ICMPv6Filter struct pkg syscall (linux-arm-cgo), type ICMPv6Filter struct, Data [8]uint32 pkg syscall (linux-arm-cgo), type IPMreqn struct pkg syscall (linux-arm-cgo), type IPMreqn struct, Address [4]uint8 pkg syscall (linux-arm-cgo), type IPMreqn struct, Ifindex int32 pkg syscall (linux-arm-cgo), type IPMreqn struct, Multiaddr [4]uint8 pkg syscall (linux-arm-cgo), type IPv6MTUInfo struct pkg syscall (linux-arm-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (linux-arm-cgo), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (linux-arm-cgo), type IfAddrmsg struct pkg syscall (linux-arm-cgo), type IfAddrmsg struct, Family uint8 pkg syscall (linux-arm-cgo), type IfAddrmsg struct, Flags uint8 pkg syscall (linux-arm-cgo), type IfAddrmsg struct, Index uint32 pkg syscall (linux-arm-cgo), type IfAddrmsg struct, Prefixlen uint8 pkg syscall (linux-arm-cgo), type IfAddrmsg struct, Scope uint8 pkg syscall (linux-arm-cgo), type IfInfomsg struct pkg syscall (linux-arm-cgo), type IfInfomsg struct, Change uint32 pkg syscall (linux-arm-cgo), type IfInfomsg struct, Family uint8 pkg syscall (linux-arm-cgo), type IfInfomsg struct, Flags uint32 pkg syscall (linux-arm-cgo), type IfInfomsg struct, Index int32 pkg syscall (linux-arm-cgo), type IfInfomsg struct, Type uint16 pkg syscall (linux-arm-cgo), type IfInfomsg struct, X__ifi_pad uint8 pkg syscall (linux-arm-cgo), type Inet4Pktinfo struct pkg syscall (linux-arm-cgo), type Inet4Pktinfo struct, Addr [4]uint8 pkg syscall (linux-arm-cgo), type Inet4Pktinfo struct, Ifindex int32 pkg syscall (linux-arm-cgo), type Inet4Pktinfo struct, Spec_dst [4]uint8 pkg syscall (linux-arm-cgo), type Inet6Pktinfo struct pkg syscall (linux-arm-cgo), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (linux-arm-cgo), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (linux-arm-cgo), type InotifyEvent struct pkg syscall (linux-arm-cgo), type InotifyEvent struct, Cookie uint32 pkg syscall (linux-arm-cgo), type InotifyEvent struct, Len uint32 pkg syscall (linux-arm-cgo), type InotifyEvent struct, Mask uint32 pkg syscall (linux-arm-cgo), type InotifyEvent struct, Name [0]uint8 pkg syscall (linux-arm-cgo), type InotifyEvent struct, Wd int32 pkg syscall (linux-arm-cgo), type Iovec struct pkg syscall (linux-arm-cgo), type Iovec struct, Base *uint8 pkg syscall (linux-arm-cgo), type Iovec struct, Len uint32 pkg syscall (linux-arm-cgo), type Msghdr struct pkg syscall (linux-arm-cgo), type Msghdr struct, Control *uint8 pkg syscall (linux-arm-cgo), type Msghdr struct, Controllen uint32 pkg syscall (linux-arm-cgo), type Msghdr struct, Flags int32 pkg syscall (linux-arm-cgo), type Msghdr struct, Iov *Iovec pkg syscall (linux-arm-cgo), type Msghdr struct, Iovlen uint32 pkg syscall (linux-arm-cgo), type Msghdr struct, Name *uint8 pkg syscall (linux-arm-cgo), type Msghdr struct, Namelen uint32 pkg syscall (linux-arm-cgo), type NetlinkMessage struct pkg syscall (linux-arm-cgo), type NetlinkMessage struct, Data []uint8 pkg syscall (linux-arm-cgo), type NetlinkMessage struct, Header NlMsghdr pkg syscall (linux-arm-cgo), type NetlinkRouteAttr struct pkg syscall (linux-arm-cgo), type NetlinkRouteAttr struct, Attr RtAttr pkg syscall (linux-arm-cgo), type NetlinkRouteAttr struct, Value []uint8 pkg syscall (linux-arm-cgo), type NetlinkRouteRequest struct pkg syscall (linux-arm-cgo), type NetlinkRouteRequest struct, Data RtGenmsg pkg syscall (linux-arm-cgo), type NetlinkRouteRequest struct, Header NlMsghdr pkg syscall (linux-arm-cgo), type NlAttr struct pkg syscall (linux-arm-cgo), type NlAttr struct, Len uint16 pkg syscall (linux-arm-cgo), type NlAttr struct, Type uint16 pkg syscall (linux-arm-cgo), type NlMsgerr struct pkg syscall (linux-arm-cgo), type NlMsgerr struct, Error int32 pkg syscall (linux-arm-cgo), type NlMsgerr struct, Msg NlMsghdr pkg syscall (linux-arm-cgo), type NlMsghdr struct pkg syscall (linux-arm-cgo), type NlMsghdr struct, Flags uint16 pkg syscall (linux-arm-cgo), type NlMsghdr struct, Len uint32 pkg syscall (linux-arm-cgo), type NlMsghdr struct, Pid uint32 pkg syscall (linux-arm-cgo), type NlMsghdr struct, Seq uint32 pkg syscall (linux-arm-cgo), type NlMsghdr struct, Type uint16 pkg syscall (linux-arm-cgo), type PtraceRegs struct pkg syscall (linux-arm-cgo), type PtraceRegs struct, Uregs [18]uint32 pkg syscall (linux-arm-cgo), type RawSockaddr struct, Data [14]uint8 pkg syscall (linux-arm-cgo), type RawSockaddr struct, Family uint16 pkg syscall (linux-arm-cgo), type RawSockaddrAny struct, Pad [96]uint8 pkg syscall (linux-arm-cgo), type RawSockaddrInet4 struct, Family uint16 pkg syscall (linux-arm-cgo), type RawSockaddrInet4 struct, Zero [8]uint8 pkg syscall (linux-arm-cgo), type RawSockaddrInet6 struct, Family uint16 pkg syscall (linux-arm-cgo), type RawSockaddrLinklayer struct pkg syscall (linux-arm-cgo), type RawSockaddrLinklayer struct, Addr [8]uint8 pkg syscall (linux-arm-cgo), type RawSockaddrLinklayer struct, Family uint16 pkg syscall (linux-arm-cgo), type RawSockaddrLinklayer struct, Halen uint8 pkg syscall (linux-arm-cgo), type RawSockaddrLinklayer struct, Hatype uint16 pkg syscall (linux-arm-cgo), type RawSockaddrLinklayer struct, Ifindex int32 pkg syscall (linux-arm-cgo), type RawSockaddrLinklayer struct, Pkttype uint8 pkg syscall (linux-arm-cgo), type RawSockaddrLinklayer struct, Protocol uint16 pkg syscall (linux-arm-cgo), type RawSockaddrNetlink struct pkg syscall (linux-arm-cgo), type RawSockaddrNetlink struct, Family uint16 pkg syscall (linux-arm-cgo), type RawSockaddrNetlink struct, Groups uint32 pkg syscall (linux-arm-cgo), type RawSockaddrNetlink struct, Pad uint16 pkg syscall (linux-arm-cgo), type RawSockaddrNetlink struct, Pid uint32 pkg syscall (linux-arm-cgo), type RawSockaddrUnix struct pkg syscall (linux-arm-cgo), type RawSockaddrUnix struct, Family uint16 pkg syscall (linux-arm-cgo), type RawSockaddrUnix struct, Path [108]int8 pkg syscall (linux-arm-cgo), type Rlimit struct pkg syscall (linux-arm-cgo), type Rlimit struct, Cur uint64 pkg syscall (linux-arm-cgo), type Rlimit struct, Max uint64 pkg syscall (linux-arm-cgo), type RtAttr struct pkg syscall (linux-arm-cgo), type RtAttr struct, Len uint16 pkg syscall (linux-arm-cgo), type RtAttr struct, Type uint16 pkg syscall (linux-arm-cgo), type RtGenmsg struct pkg syscall (linux-arm-cgo), type RtGenmsg struct, Family uint8 pkg syscall (linux-arm-cgo), type RtMsg struct pkg syscall (linux-arm-cgo), type RtMsg struct, Dst_len uint8 pkg syscall (linux-arm-cgo), type RtMsg struct, Family uint8 pkg syscall (linux-arm-cgo), type RtMsg struct, Flags uint32 pkg syscall (linux-arm-cgo), type RtMsg struct, Protocol uint8 pkg syscall (linux-arm-cgo), type RtMsg struct, Scope uint8 pkg syscall (linux-arm-cgo), type RtMsg struct, Src_len uint8 pkg syscall (linux-arm-cgo), type RtMsg struct, Table uint8 pkg syscall (linux-arm-cgo), type RtMsg struct, Tos uint8 pkg syscall (linux-arm-cgo), type RtMsg struct, Type uint8 pkg syscall (linux-arm-cgo), type RtNexthop struct pkg syscall (linux-arm-cgo), type RtNexthop struct, Flags uint8 pkg syscall (linux-arm-cgo), type RtNexthop struct, Hops uint8 pkg syscall (linux-arm-cgo), type RtNexthop struct, Ifindex int32 pkg syscall (linux-arm-cgo), type RtNexthop struct, Len uint16 pkg syscall (linux-arm-cgo), type Rusage struct, Idrss int32 pkg syscall (linux-arm-cgo), type Rusage struct, Inblock int32 pkg syscall (linux-arm-cgo), type Rusage struct, Isrss int32 pkg syscall (linux-arm-cgo), type Rusage struct, Ixrss int32 pkg syscall (linux-arm-cgo), type Rusage struct, Majflt int32 pkg syscall (linux-arm-cgo), type Rusage struct, Maxrss int32 pkg syscall (linux-arm-cgo), type Rusage struct, Minflt int32 pkg syscall (linux-arm-cgo), type Rusage struct, Msgrcv int32 pkg syscall (linux-arm-cgo), type Rusage struct, Msgsnd int32 pkg syscall (linux-arm-cgo), type Rusage struct, Nivcsw int32 pkg syscall (linux-arm-cgo), type Rusage struct, Nsignals int32 pkg syscall (linux-arm-cgo), type Rusage struct, Nswap int32 pkg syscall (linux-arm-cgo), type Rusage struct, Nvcsw int32 pkg syscall (linux-arm-cgo), type Rusage struct, Oublock int32 pkg syscall (linux-arm-cgo), type Rusage struct, Stime Timeval pkg syscall (linux-arm-cgo), type Rusage struct, Utime Timeval pkg syscall (linux-arm-cgo), type SockFilter struct pkg syscall (linux-arm-cgo), type SockFilter struct, Code uint16 pkg syscall (linux-arm-cgo), type SockFilter struct, Jf uint8 pkg syscall (linux-arm-cgo), type SockFilter struct, Jt uint8 pkg syscall (linux-arm-cgo), type SockFilter struct, K uint32 pkg syscall (linux-arm-cgo), type SockFprog struct pkg syscall (linux-arm-cgo), type SockFprog struct, Filter *SockFilter pkg syscall (linux-arm-cgo), type SockFprog struct, Len uint16 pkg syscall (linux-arm-cgo), type SockFprog struct, Pad_cgo_0 [2]uint8 pkg syscall (linux-arm-cgo), type SockaddrLinklayer struct pkg syscall (linux-arm-cgo), type SockaddrLinklayer struct, Addr [8]uint8 pkg syscall (linux-arm-cgo), type SockaddrLinklayer struct, Halen uint8 pkg syscall (linux-arm-cgo), type SockaddrLinklayer struct, Hatype uint16 pkg syscall (linux-arm-cgo), type SockaddrLinklayer struct, Ifindex int pkg syscall (linux-arm-cgo), type SockaddrLinklayer struct, Pkttype uint8 pkg syscall (linux-arm-cgo), type SockaddrLinklayer struct, Protocol uint16 pkg syscall (linux-arm-cgo), type SockaddrNetlink struct pkg syscall (linux-arm-cgo), type SockaddrNetlink struct, Family uint16 pkg syscall (linux-arm-cgo), type SockaddrNetlink struct, Groups uint32 pkg syscall (linux-arm-cgo), type SockaddrNetlink struct, Pad uint16 pkg syscall (linux-arm-cgo), type SockaddrNetlink struct, Pid uint32 pkg syscall (linux-arm-cgo), type SocketControlMessage struct pkg syscall (linux-arm-cgo), type SocketControlMessage struct, Data []uint8 pkg syscall (linux-arm-cgo), type SocketControlMessage struct, Header Cmsghdr pkg syscall (linux-arm-cgo), type Stat_t struct pkg syscall (linux-arm-cgo), type Stat_t struct, Atim Timespec pkg syscall (linux-arm-cgo), type Stat_t struct, Blksize int32 pkg syscall (linux-arm-cgo), type Stat_t struct, Blocks int64 pkg syscall (linux-arm-cgo), type Stat_t struct, Ctim Timespec pkg syscall (linux-arm-cgo), type Stat_t struct, Dev uint64 pkg syscall (linux-arm-cgo), type Stat_t struct, Gid uint32 pkg syscall (linux-arm-cgo), type Stat_t struct, Ino uint64 pkg syscall (linux-arm-cgo), type Stat_t struct, Mode uint32 pkg syscall (linux-arm-cgo), type Stat_t struct, Mtim Timespec pkg syscall (linux-arm-cgo), type Stat_t struct, Nlink uint32 pkg syscall (linux-arm-cgo), type Stat_t struct, Pad_cgo_0 [2]uint8 pkg syscall (linux-arm-cgo), type Stat_t struct, Pad_cgo_1 [6]uint8 pkg syscall (linux-arm-cgo), type Stat_t struct, Pad_cgo_2 [4]uint8 pkg syscall (linux-arm-cgo), type Stat_t struct, Rdev uint64 pkg syscall (linux-arm-cgo), type Stat_t struct, Size int64 pkg syscall (linux-arm-cgo), type Stat_t struct, Uid uint32 pkg syscall (linux-arm-cgo), type Stat_t struct, X__pad1 uint16 pkg syscall (linux-arm-cgo), type Stat_t struct, X__pad2 uint16 pkg syscall (linux-arm-cgo), type Stat_t struct, X__st_ino uint32 pkg syscall (linux-arm-cgo), type Statfs_t struct pkg syscall (linux-arm-cgo), type Statfs_t struct, Bavail uint64 pkg syscall (linux-arm-cgo), type Statfs_t struct, Bfree uint64 pkg syscall (linux-arm-cgo), type Statfs_t struct, Blocks uint64 pkg syscall (linux-arm-cgo), type Statfs_t struct, Bsize int32 pkg syscall (linux-arm-cgo), type Statfs_t struct, Ffree uint64 pkg syscall (linux-arm-cgo), type Statfs_t struct, Files uint64 pkg syscall (linux-arm-cgo), type Statfs_t struct, Flags int32 pkg syscall (linux-arm-cgo), type Statfs_t struct, Frsize int32 pkg syscall (linux-arm-cgo), type Statfs_t struct, Fsid Fsid pkg syscall (linux-arm-cgo), type Statfs_t struct, Namelen int32 pkg syscall (linux-arm-cgo), type Statfs_t struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-arm-cgo), type Statfs_t struct, Spare [4]int32 pkg syscall (linux-arm-cgo), type Statfs_t struct, Type int32 pkg syscall (linux-arm-cgo), type SysProcAttr struct, Chroot string pkg syscall (linux-arm-cgo), type SysProcAttr struct, Cloneflags uintptr pkg syscall (linux-arm-cgo), type SysProcAttr struct, Credential *Credential pkg syscall (linux-arm-cgo), type SysProcAttr struct, Ctty int pkg syscall (linux-arm-cgo), type SysProcAttr struct, Noctty bool pkg syscall (linux-arm-cgo), type SysProcAttr struct, Pdeathsig Signal pkg syscall (linux-arm-cgo), type SysProcAttr struct, Ptrace bool pkg syscall (linux-arm-cgo), type SysProcAttr struct, Setctty bool pkg syscall (linux-arm-cgo), type SysProcAttr struct, Setpgid bool pkg syscall (linux-arm-cgo), type SysProcAttr struct, Setsid bool pkg syscall (linux-arm-cgo), type Sysinfo_t struct pkg syscall (linux-arm-cgo), type Sysinfo_t struct, Bufferram uint32 pkg syscall (linux-arm-cgo), type Sysinfo_t struct, Freehigh uint32 pkg syscall (linux-arm-cgo), type Sysinfo_t struct, Freeram uint32 pkg syscall (linux-arm-cgo), type Sysinfo_t struct, Freeswap uint32 pkg syscall (linux-arm-cgo), type Sysinfo_t struct, Loads [3]uint32 pkg syscall (linux-arm-cgo), type Sysinfo_t struct, Pad uint16 pkg syscall (linux-arm-cgo), type Sysinfo_t struct, Procs uint16 pkg syscall (linux-arm-cgo), type Sysinfo_t struct, Sharedram uint32 pkg syscall (linux-arm-cgo), type Sysinfo_t struct, Totalhigh uint32 pkg syscall (linux-arm-cgo), type Sysinfo_t struct, Totalram uint32 pkg syscall (linux-arm-cgo), type Sysinfo_t struct, Totalswap uint32 pkg syscall (linux-arm-cgo), type Sysinfo_t struct, Unit uint32 pkg syscall (linux-arm-cgo), type Sysinfo_t struct, Uptime int32 pkg syscall (linux-arm-cgo), type Sysinfo_t struct, X_f [8]uint8 pkg syscall (linux-arm-cgo), type TCPInfo struct pkg syscall (linux-arm-cgo), type TCPInfo struct, Advmss uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Ato uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Backoff uint8 pkg syscall (linux-arm-cgo), type TCPInfo struct, Ca_state uint8 pkg syscall (linux-arm-cgo), type TCPInfo struct, Fackets uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Last_ack_recv uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Last_ack_sent uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Last_data_recv uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Last_data_sent uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Lost uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Options uint8 pkg syscall (linux-arm-cgo), type TCPInfo struct, Pad_cgo_0 [2]uint8 pkg syscall (linux-arm-cgo), type TCPInfo struct, Pmtu uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Probes uint8 pkg syscall (linux-arm-cgo), type TCPInfo struct, Rcv_mss uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Rcv_rtt uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Rcv_space uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Rcv_ssthresh uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Reordering uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Retrans uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Retransmits uint8 pkg syscall (linux-arm-cgo), type TCPInfo struct, Rto uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Rtt uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Rttvar uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Sacked uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Snd_cwnd uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Snd_mss uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Snd_ssthresh uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, State uint8 pkg syscall (linux-arm-cgo), type TCPInfo struct, Total_retrans uint32 pkg syscall (linux-arm-cgo), type TCPInfo struct, Unacked uint32 pkg syscall (linux-arm-cgo), type Termios struct pkg syscall (linux-arm-cgo), type Termios struct, Cc [32]uint8 pkg syscall (linux-arm-cgo), type Termios struct, Cflag uint32 pkg syscall (linux-arm-cgo), type Termios struct, Iflag uint32 pkg syscall (linux-arm-cgo), type Termios struct, Ispeed uint32 pkg syscall (linux-arm-cgo), type Termios struct, Lflag uint32 pkg syscall (linux-arm-cgo), type Termios struct, Line uint8 pkg syscall (linux-arm-cgo), type Termios struct, Oflag uint32 pkg syscall (linux-arm-cgo), type Termios struct, Ospeed uint32 pkg syscall (linux-arm-cgo), type Termios struct, Pad_cgo_0 [3]uint8 pkg syscall (linux-arm-cgo), type Time_t int32 pkg syscall (linux-arm-cgo), type Timespec struct, Nsec int32 pkg syscall (linux-arm-cgo), type Timespec struct, Sec int32 pkg syscall (linux-arm-cgo), type Timeval struct, Sec int32 pkg syscall (linux-arm-cgo), type Timeval struct, Usec int32 pkg syscall (linux-arm-cgo), type Timex struct pkg syscall (linux-arm-cgo), type Timex struct, Calcnt int32 pkg syscall (linux-arm-cgo), type Timex struct, Constant int32 pkg syscall (linux-arm-cgo), type Timex struct, Errcnt int32 pkg syscall (linux-arm-cgo), type Timex struct, Esterror int32 pkg syscall (linux-arm-cgo), type Timex struct, Freq int32 pkg syscall (linux-arm-cgo), type Timex struct, Jitcnt int32 pkg syscall (linux-arm-cgo), type Timex struct, Jitter int32 pkg syscall (linux-arm-cgo), type Timex struct, Maxerror int32 pkg syscall (linux-arm-cgo), type Timex struct, Modes uint32 pkg syscall (linux-arm-cgo), type Timex struct, Offset int32 pkg syscall (linux-arm-cgo), type Timex struct, Pad_cgo_0 [44]uint8 pkg syscall (linux-arm-cgo), type Timex struct, Ppsfreq int32 pkg syscall (linux-arm-cgo), type Timex struct, Precision int32 pkg syscall (linux-arm-cgo), type Timex struct, Shift int32 pkg syscall (linux-arm-cgo), type Timex struct, Stabil int32 pkg syscall (linux-arm-cgo), type Timex struct, Status int32 pkg syscall (linux-arm-cgo), type Timex struct, Stbcnt int32 pkg syscall (linux-arm-cgo), type Timex struct, Tai int32 pkg syscall (linux-arm-cgo), type Timex struct, Tick int32 pkg syscall (linux-arm-cgo), type Timex struct, Time Timeval pkg syscall (linux-arm-cgo), type Timex struct, Tolerance int32 pkg syscall (linux-arm-cgo), type Tms struct pkg syscall (linux-arm-cgo), type Tms struct, Cstime int32 pkg syscall (linux-arm-cgo), type Tms struct, Cutime int32 pkg syscall (linux-arm-cgo), type Tms struct, Stime int32 pkg syscall (linux-arm-cgo), type Tms struct, Utime int32 pkg syscall (linux-arm-cgo), type Ucred struct pkg syscall (linux-arm-cgo), type Ucred struct, Gid uint32 pkg syscall (linux-arm-cgo), type Ucred struct, Pid int32 pkg syscall (linux-arm-cgo), type Ucred struct, Uid uint32 pkg syscall (linux-arm-cgo), type Ustat_t struct pkg syscall (linux-arm-cgo), type Ustat_t struct, Fname [6]uint8 pkg syscall (linux-arm-cgo), type Ustat_t struct, Fpack [6]uint8 pkg syscall (linux-arm-cgo), type Ustat_t struct, Tfree int32 pkg syscall (linux-arm-cgo), type Ustat_t struct, Tinode uint32 pkg syscall (linux-arm-cgo), type Utimbuf struct pkg syscall (linux-arm-cgo), type Utimbuf struct, Actime int32 pkg syscall (linux-arm-cgo), type Utimbuf struct, Modtime int32 pkg syscall (linux-arm-cgo), type Utsname struct pkg syscall (linux-arm-cgo), type Utsname struct, Domainname [65]uint8 pkg syscall (linux-arm-cgo), type Utsname struct, Machine [65]uint8 pkg syscall (linux-arm-cgo), type Utsname struct, Nodename [65]uint8 pkg syscall (linux-arm-cgo), type Utsname struct, Release [65]uint8 pkg syscall (linux-arm-cgo), type Utsname struct, Sysname [65]uint8 pkg syscall (linux-arm-cgo), type Utsname struct, Version [65]uint8 pkg syscall (linux-arm-cgo), type WaitStatus uint32 pkg syscall (linux-arm-cgo), var Stderr int pkg syscall (linux-arm-cgo), var Stdin int pkg syscall (linux-arm-cgo), var Stdout int pkg syscall (netbsd-386), const AF_APPLETALK ideal-int pkg syscall (netbsd-386), const AF_ARP ideal-int pkg syscall (netbsd-386), const AF_BLUETOOTH ideal-int pkg syscall (netbsd-386), const AF_CCITT ideal-int pkg syscall (netbsd-386), const AF_CHAOS ideal-int pkg syscall (netbsd-386), const AF_CNT ideal-int pkg syscall (netbsd-386), const AF_COIP ideal-int pkg syscall (netbsd-386), const AF_DATAKIT ideal-int pkg syscall (netbsd-386), const AF_DECnet ideal-int pkg syscall (netbsd-386), const AF_DLI ideal-int pkg syscall (netbsd-386), const AF_E164 ideal-int pkg syscall (netbsd-386), const AF_ECMA ideal-int pkg syscall (netbsd-386), const AF_HYLINK ideal-int pkg syscall (netbsd-386), const AF_IEEE80211 ideal-int pkg syscall (netbsd-386), const AF_IMPLINK ideal-int pkg syscall (netbsd-386), const AF_IPX ideal-int pkg syscall (netbsd-386), const AF_ISDN ideal-int pkg syscall (netbsd-386), const AF_ISO ideal-int pkg syscall (netbsd-386), const AF_LAT ideal-int pkg syscall (netbsd-386), const AF_LINK ideal-int pkg syscall (netbsd-386), const AF_LOCAL ideal-int pkg syscall (netbsd-386), const AF_MAX ideal-int pkg syscall (netbsd-386), const AF_MPLS ideal-int pkg syscall (netbsd-386), const AF_NATM ideal-int pkg syscall (netbsd-386), const AF_NS ideal-int pkg syscall (netbsd-386), const AF_OROUTE ideal-int pkg syscall (netbsd-386), const AF_OSI ideal-int pkg syscall (netbsd-386), const AF_PUP ideal-int pkg syscall (netbsd-386), const AF_ROUTE ideal-int pkg syscall (netbsd-386), const AF_SNA ideal-int pkg syscall (netbsd-386), const ARPHRD_ARCNET ideal-int pkg syscall (netbsd-386), const ARPHRD_ETHER ideal-int pkg syscall (netbsd-386), const ARPHRD_FRELAY ideal-int pkg syscall (netbsd-386), const ARPHRD_IEEE1394 ideal-int pkg syscall (netbsd-386), const ARPHRD_IEEE802 ideal-int pkg syscall (netbsd-386), const ARPHRD_STRIP ideal-int pkg syscall (netbsd-386), const B0 ideal-int pkg syscall (netbsd-386), const B110 ideal-int pkg syscall (netbsd-386), const B115200 ideal-int pkg syscall (netbsd-386), const B1200 ideal-int pkg syscall (netbsd-386), const B134 ideal-int pkg syscall (netbsd-386), const B14400 ideal-int pkg syscall (netbsd-386), const B150 ideal-int pkg syscall (netbsd-386), const B1800 ideal-int pkg syscall (netbsd-386), const B19200 ideal-int pkg syscall (netbsd-386), const B200 ideal-int pkg syscall (netbsd-386), const B230400 ideal-int pkg syscall (netbsd-386), const B2400 ideal-int pkg syscall (netbsd-386), const B28800 ideal-int pkg syscall (netbsd-386), const B300 ideal-int pkg syscall (netbsd-386), const B38400 ideal-int pkg syscall (netbsd-386), const B460800 ideal-int pkg syscall (netbsd-386), const B4800 ideal-int pkg syscall (netbsd-386), const B50 ideal-int pkg syscall (netbsd-386), const B57600 ideal-int pkg syscall (netbsd-386), const B600 ideal-int pkg syscall (netbsd-386), const B7200 ideal-int pkg syscall (netbsd-386), const B75 ideal-int pkg syscall (netbsd-386), const B76800 ideal-int pkg syscall (netbsd-386), const B921600 ideal-int pkg syscall (netbsd-386), const B9600 ideal-int pkg syscall (netbsd-386), const BIOCFEEDBACK ideal-int pkg syscall (netbsd-386), const BIOCFLUSH ideal-int pkg syscall (netbsd-386), const BIOCGBLEN ideal-int pkg syscall (netbsd-386), const BIOCGDLT ideal-int pkg syscall (netbsd-386), const BIOCGDLTLIST ideal-int pkg syscall (netbsd-386), const BIOCGETIF ideal-int pkg syscall (netbsd-386), const BIOCGFEEDBACK ideal-int pkg syscall (netbsd-386), const BIOCGHDRCMPLT ideal-int pkg syscall (netbsd-386), const BIOCGRTIMEOUT ideal-int pkg syscall (netbsd-386), const BIOCGSEESENT ideal-int pkg syscall (netbsd-386), const BIOCGSTATS ideal-int pkg syscall (netbsd-386), const BIOCGSTATSOLD ideal-int pkg syscall (netbsd-386), const BIOCIMMEDIATE ideal-int pkg syscall (netbsd-386), const BIOCPROMISC ideal-int pkg syscall (netbsd-386), const BIOCSBLEN ideal-int pkg syscall (netbsd-386), const BIOCSDLT ideal-int pkg syscall (netbsd-386), const BIOCSETF ideal-int pkg syscall (netbsd-386), const BIOCSETIF ideal-int pkg syscall (netbsd-386), const BIOCSFEEDBACK ideal-int pkg syscall (netbsd-386), const BIOCSHDRCMPLT ideal-int pkg syscall (netbsd-386), const BIOCSRTIMEOUT ideal-int pkg syscall (netbsd-386), const BIOCSSEESENT ideal-int pkg syscall (netbsd-386), const BIOCSTCPF ideal-int pkg syscall (netbsd-386), const BIOCSUDPF ideal-int pkg syscall (netbsd-386), const BIOCVERSION ideal-int pkg syscall (netbsd-386), const BPF_A ideal-int pkg syscall (netbsd-386), const BPF_ABS ideal-int pkg syscall (netbsd-386), const BPF_ADD ideal-int pkg syscall (netbsd-386), const BPF_ALIGNMENT ideal-int pkg syscall (netbsd-386), const BPF_ALIGNMENT32 ideal-int pkg syscall (netbsd-386), const BPF_ALU ideal-int pkg syscall (netbsd-386), const BPF_AND ideal-int pkg syscall (netbsd-386), const BPF_B ideal-int pkg syscall (netbsd-386), const BPF_DFLTBUFSIZE ideal-int pkg syscall (netbsd-386), const BPF_DIV ideal-int pkg syscall (netbsd-386), const BPF_H ideal-int pkg syscall (netbsd-386), const BPF_IMM ideal-int pkg syscall (netbsd-386), const BPF_IND ideal-int pkg syscall (netbsd-386), const BPF_JA ideal-int pkg syscall (netbsd-386), const BPF_JEQ ideal-int pkg syscall (netbsd-386), const BPF_JGE ideal-int pkg syscall (netbsd-386), const BPF_JGT ideal-int pkg syscall (netbsd-386), const BPF_JMP ideal-int pkg syscall (netbsd-386), const BPF_JSET ideal-int pkg syscall (netbsd-386), const BPF_K ideal-int pkg syscall (netbsd-386), const BPF_LD ideal-int pkg syscall (netbsd-386), const BPF_LDX ideal-int pkg syscall (netbsd-386), const BPF_LEN ideal-int pkg syscall (netbsd-386), const BPF_LSH ideal-int pkg syscall (netbsd-386), const BPF_MAJOR_VERSION ideal-int pkg syscall (netbsd-386), const BPF_MAXBUFSIZE ideal-int pkg syscall (netbsd-386), const BPF_MAXINSNS ideal-int pkg syscall (netbsd-386), const BPF_MEM ideal-int pkg syscall (netbsd-386), const BPF_MEMWORDS ideal-int pkg syscall (netbsd-386), const BPF_MINBUFSIZE ideal-int pkg syscall (netbsd-386), const BPF_MINOR_VERSION ideal-int pkg syscall (netbsd-386), const BPF_MISC ideal-int pkg syscall (netbsd-386), const BPF_MSH ideal-int pkg syscall (netbsd-386), const BPF_MUL ideal-int pkg syscall (netbsd-386), const BPF_NEG ideal-int pkg syscall (netbsd-386), const BPF_OR ideal-int pkg syscall (netbsd-386), const BPF_RELEASE ideal-int pkg syscall (netbsd-386), const BPF_RET ideal-int pkg syscall (netbsd-386), const BPF_RSH ideal-int pkg syscall (netbsd-386), const BPF_ST ideal-int pkg syscall (netbsd-386), const BPF_STX ideal-int pkg syscall (netbsd-386), const BPF_SUB ideal-int pkg syscall (netbsd-386), const BPF_TAX ideal-int pkg syscall (netbsd-386), const BPF_TXA ideal-int pkg syscall (netbsd-386), const BPF_W ideal-int pkg syscall (netbsd-386), const BPF_X ideal-int pkg syscall (netbsd-386), const BRKINT ideal-int pkg syscall (netbsd-386), const CFLUSH ideal-int pkg syscall (netbsd-386), const CLOCAL ideal-int pkg syscall (netbsd-386), const CREAD ideal-int pkg syscall (netbsd-386), const CS5 ideal-int pkg syscall (netbsd-386), const CS6 ideal-int pkg syscall (netbsd-386), const CS7 ideal-int pkg syscall (netbsd-386), const CS8 ideal-int pkg syscall (netbsd-386), const CSIZE ideal-int pkg syscall (netbsd-386), const CSTART ideal-int pkg syscall (netbsd-386), const CSTATUS ideal-int pkg syscall (netbsd-386), const CSTOP ideal-int pkg syscall (netbsd-386), const CSTOPB ideal-int pkg syscall (netbsd-386), const CSUSP ideal-int pkg syscall (netbsd-386), const CTL_MAXNAME ideal-int pkg syscall (netbsd-386), const CTL_NET ideal-int pkg syscall (netbsd-386), const CTL_QUERY ideal-int pkg syscall (netbsd-386), const DIOCBSFLUSH ideal-int pkg syscall (netbsd-386), const DLT_A429 ideal-int pkg syscall (netbsd-386), const DLT_A653_ICM ideal-int pkg syscall (netbsd-386), const DLT_AIRONET_HEADER ideal-int pkg syscall (netbsd-386), const DLT_AOS ideal-int pkg syscall (netbsd-386), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (netbsd-386), const DLT_ARCNET ideal-int pkg syscall (netbsd-386), const DLT_ARCNET_LINUX ideal-int pkg syscall (netbsd-386), const DLT_ATM_CLIP ideal-int pkg syscall (netbsd-386), const DLT_ATM_RFC1483 ideal-int pkg syscall (netbsd-386), const DLT_AURORA ideal-int pkg syscall (netbsd-386), const DLT_AX25 ideal-int pkg syscall (netbsd-386), const DLT_AX25_KISS ideal-int pkg syscall (netbsd-386), const DLT_BACNET_MS_TP ideal-int pkg syscall (netbsd-386), const DLT_BLUETOOTH_HCI_H4 ideal-int pkg syscall (netbsd-386), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int pkg syscall (netbsd-386), const DLT_CAN20B ideal-int pkg syscall (netbsd-386), const DLT_CAN_SOCKETCAN ideal-int pkg syscall (netbsd-386), const DLT_CHAOS ideal-int pkg syscall (netbsd-386), const DLT_CISCO_IOS ideal-int pkg syscall (netbsd-386), const DLT_C_HDLC ideal-int pkg syscall (netbsd-386), const DLT_C_HDLC_WITH_DIR ideal-int pkg syscall (netbsd-386), const DLT_DECT ideal-int pkg syscall (netbsd-386), const DLT_DOCSIS ideal-int pkg syscall (netbsd-386), const DLT_ECONET ideal-int pkg syscall (netbsd-386), const DLT_EN10MB ideal-int pkg syscall (netbsd-386), const DLT_EN3MB ideal-int pkg syscall (netbsd-386), const DLT_ENC ideal-int pkg syscall (netbsd-386), const DLT_ERF ideal-int pkg syscall (netbsd-386), const DLT_ERF_ETH ideal-int pkg syscall (netbsd-386), const DLT_ERF_POS ideal-int pkg syscall (netbsd-386), const DLT_FC_2 ideal-int pkg syscall (netbsd-386), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int pkg syscall (netbsd-386), const DLT_FDDI ideal-int pkg syscall (netbsd-386), const DLT_FLEXRAY ideal-int pkg syscall (netbsd-386), const DLT_FRELAY ideal-int pkg syscall (netbsd-386), const DLT_FRELAY_WITH_DIR ideal-int pkg syscall (netbsd-386), const DLT_GCOM_SERIAL ideal-int pkg syscall (netbsd-386), const DLT_GCOM_T1E1 ideal-int pkg syscall (netbsd-386), const DLT_GPF_F ideal-int pkg syscall (netbsd-386), const DLT_GPF_T ideal-int pkg syscall (netbsd-386), const DLT_GPRS_LLC ideal-int pkg syscall (netbsd-386), const DLT_GSMTAP_ABIS ideal-int pkg syscall (netbsd-386), const DLT_GSMTAP_UM ideal-int pkg syscall (netbsd-386), const DLT_HDLC ideal-int pkg syscall (netbsd-386), const DLT_HHDLC ideal-int pkg syscall (netbsd-386), const DLT_HIPPI ideal-int pkg syscall (netbsd-386), const DLT_IBM_SN ideal-int pkg syscall (netbsd-386), const DLT_IBM_SP ideal-int pkg syscall (netbsd-386), const DLT_IEEE802 ideal-int pkg syscall (netbsd-386), const DLT_IEEE802_11 ideal-int pkg syscall (netbsd-386), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (netbsd-386), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (netbsd-386), const DLT_IEEE802_15_4 ideal-int pkg syscall (netbsd-386), const DLT_IEEE802_15_4_LINUX ideal-int pkg syscall (netbsd-386), const DLT_IEEE802_15_4_NONASK_PHY ideal-int pkg syscall (netbsd-386), const DLT_IEEE802_16_MAC_CPS ideal-int pkg syscall (netbsd-386), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int pkg syscall (netbsd-386), const DLT_IPMB ideal-int pkg syscall (netbsd-386), const DLT_IPMB_LINUX ideal-int pkg syscall (netbsd-386), const DLT_IPNET ideal-int pkg syscall (netbsd-386), const DLT_IPV4 ideal-int pkg syscall (netbsd-386), const DLT_IPV6 ideal-int pkg syscall (netbsd-386), const DLT_IP_OVER_FC ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_ATM1 ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_ATM2 ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_CHDLC ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_ES ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_ETHER ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_FRELAY ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_GGSN ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_ISM ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_MFR ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_MLFR ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_MLPPP ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_MONITOR ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_PIC_PEER ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_PPP ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_PPPOE ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_PPPOE_ATM ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_SERVICES ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_ST ideal-int pkg syscall (netbsd-386), const DLT_JUNIPER_VP ideal-int pkg syscall (netbsd-386), const DLT_LAPB_WITH_DIR ideal-int pkg syscall (netbsd-386), const DLT_LAPD ideal-int pkg syscall (netbsd-386), const DLT_LIN ideal-int pkg syscall (netbsd-386), const DLT_LINUX_EVDEV ideal-int pkg syscall (netbsd-386), const DLT_LINUX_IRDA ideal-int pkg syscall (netbsd-386), const DLT_LINUX_LAPD ideal-int pkg syscall (netbsd-386), const DLT_LINUX_SLL ideal-int pkg syscall (netbsd-386), const DLT_LOOP ideal-int pkg syscall (netbsd-386), const DLT_LTALK ideal-int pkg syscall (netbsd-386), const DLT_MFR ideal-int pkg syscall (netbsd-386), const DLT_MOST ideal-int pkg syscall (netbsd-386), const DLT_MPLS ideal-int pkg syscall (netbsd-386), const DLT_MTP2 ideal-int pkg syscall (netbsd-386), const DLT_MTP2_WITH_PHDR ideal-int pkg syscall (netbsd-386), const DLT_MTP3 ideal-int pkg syscall (netbsd-386), const DLT_NULL ideal-int pkg syscall (netbsd-386), const DLT_PCI_EXP ideal-int pkg syscall (netbsd-386), const DLT_PFLOG ideal-int pkg syscall (netbsd-386), const DLT_PFSYNC ideal-int pkg syscall (netbsd-386), const DLT_PPI ideal-int pkg syscall (netbsd-386), const DLT_PPP ideal-int pkg syscall (netbsd-386), const DLT_PPP_BSDOS ideal-int pkg syscall (netbsd-386), const DLT_PPP_ETHER ideal-int pkg syscall (netbsd-386), const DLT_PPP_PPPD ideal-int pkg syscall (netbsd-386), const DLT_PPP_SERIAL ideal-int pkg syscall (netbsd-386), const DLT_PPP_WITH_DIR ideal-int pkg syscall (netbsd-386), const DLT_PRISM_HEADER ideal-int pkg syscall (netbsd-386), const DLT_PRONET ideal-int pkg syscall (netbsd-386), const DLT_RAIF1 ideal-int pkg syscall (netbsd-386), const DLT_RAW ideal-int pkg syscall (netbsd-386), const DLT_RAWAF_MASK ideal-int pkg syscall (netbsd-386), const DLT_RIO ideal-int pkg syscall (netbsd-386), const DLT_SCCP ideal-int pkg syscall (netbsd-386), const DLT_SITA ideal-int pkg syscall (netbsd-386), const DLT_SLIP ideal-int pkg syscall (netbsd-386), const DLT_SLIP_BSDOS ideal-int pkg syscall (netbsd-386), const DLT_SUNATM ideal-int pkg syscall (netbsd-386), const DLT_SYMANTEC_FIREWALL ideal-int pkg syscall (netbsd-386), const DLT_TZSP ideal-int pkg syscall (netbsd-386), const DLT_USB ideal-int pkg syscall (netbsd-386), const DLT_USB_LINUX ideal-int pkg syscall (netbsd-386), const DLT_USB_LINUX_MMAPPED ideal-int pkg syscall (netbsd-386), const DLT_WIHART ideal-int pkg syscall (netbsd-386), const DLT_X2E_SERIAL ideal-int pkg syscall (netbsd-386), const DLT_X2E_XORAYA ideal-int pkg syscall (netbsd-386), const DT_BLK ideal-int pkg syscall (netbsd-386), const DT_CHR ideal-int pkg syscall (netbsd-386), const DT_DIR ideal-int pkg syscall (netbsd-386), const DT_FIFO ideal-int pkg syscall (netbsd-386), const DT_LNK ideal-int pkg syscall (netbsd-386), const DT_REG ideal-int pkg syscall (netbsd-386), const DT_SOCK ideal-int pkg syscall (netbsd-386), const DT_UNKNOWN ideal-int pkg syscall (netbsd-386), const DT_WHT ideal-int pkg syscall (netbsd-386), const EAUTH Errno pkg syscall (netbsd-386), const EBADMSG Errno pkg syscall (netbsd-386), const EBADRPC Errno pkg syscall (netbsd-386), const ECHO ideal-int pkg syscall (netbsd-386), const ECHOCTL ideal-int pkg syscall (netbsd-386), const ECHOE ideal-int pkg syscall (netbsd-386), const ECHOK ideal-int pkg syscall (netbsd-386), const ECHOKE ideal-int pkg syscall (netbsd-386), const ECHONL ideal-int pkg syscall (netbsd-386), const ECHOPRT ideal-int pkg syscall (netbsd-386), const EFTYPE Errno pkg syscall (netbsd-386), const ELAST Errno pkg syscall (netbsd-386), const EMULTIHOP Errno pkg syscall (netbsd-386), const EMUL_LINUX ideal-int pkg syscall (netbsd-386), const EMUL_LINUX32 ideal-int pkg syscall (netbsd-386), const EMUL_MAXID ideal-int pkg syscall (netbsd-386), const ENEEDAUTH Errno pkg syscall (netbsd-386), const ENOATTR Errno pkg syscall (netbsd-386), const ENODATA Errno pkg syscall (netbsd-386), const ENOLINK Errno pkg syscall (netbsd-386), const ENOSR Errno pkg syscall (netbsd-386), const ENOSTR Errno pkg syscall (netbsd-386), const EN_SW_CTL_INF ideal-int pkg syscall (netbsd-386), const EN_SW_CTL_PREC ideal-int pkg syscall (netbsd-386), const EN_SW_CTL_ROUND ideal-int pkg syscall (netbsd-386), const EN_SW_DATACHAIN ideal-int pkg syscall (netbsd-386), const EN_SW_DENORM ideal-int pkg syscall (netbsd-386), const EN_SW_INVOP ideal-int pkg syscall (netbsd-386), const EN_SW_OVERFLOW ideal-int pkg syscall (netbsd-386), const EN_SW_PRECLOSS ideal-int pkg syscall (netbsd-386), const EN_SW_UNDERFLOW ideal-int pkg syscall (netbsd-386), const EN_SW_ZERODIV ideal-int pkg syscall (netbsd-386), const EPROCLIM Errno pkg syscall (netbsd-386), const EPROCUNAVAIL Errno pkg syscall (netbsd-386), const EPROGMISMATCH Errno pkg syscall (netbsd-386), const EPROGUNAVAIL Errno pkg syscall (netbsd-386), const EPROTO Errno pkg syscall (netbsd-386), const ERPCMISMATCH Errno pkg syscall (netbsd-386), const ETHERCAP_JUMBO_MTU ideal-int pkg syscall (netbsd-386), const ETHERCAP_VLAN_HWTAGGING ideal-int pkg syscall (netbsd-386), const ETHERCAP_VLAN_MTU ideal-int pkg syscall (netbsd-386), const ETHERMIN ideal-int pkg syscall (netbsd-386), const ETHERMTU ideal-int pkg syscall (netbsd-386), const ETHERMTU_JUMBO ideal-int pkg syscall (netbsd-386), const ETHERTYPE_8023 ideal-int pkg syscall (netbsd-386), const ETHERTYPE_AARP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_ACCTON ideal-int pkg syscall (netbsd-386), const ETHERTYPE_AEONIC ideal-int pkg syscall (netbsd-386), const ETHERTYPE_ALPHA ideal-int pkg syscall (netbsd-386), const ETHERTYPE_AMBER ideal-int pkg syscall (netbsd-386), const ETHERTYPE_AMOEBA ideal-int pkg syscall (netbsd-386), const ETHERTYPE_APOLLO ideal-int pkg syscall (netbsd-386), const ETHERTYPE_APOLLODOMAIN ideal-int pkg syscall (netbsd-386), const ETHERTYPE_APPLETALK ideal-int pkg syscall (netbsd-386), const ETHERTYPE_APPLITEK ideal-int pkg syscall (netbsd-386), const ETHERTYPE_ARGONAUT ideal-int pkg syscall (netbsd-386), const ETHERTYPE_ARP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_AT ideal-int pkg syscall (netbsd-386), const ETHERTYPE_ATALK ideal-int pkg syscall (netbsd-386), const ETHERTYPE_ATOMIC ideal-int pkg syscall (netbsd-386), const ETHERTYPE_ATT ideal-int pkg syscall (netbsd-386), const ETHERTYPE_ATTSTANFORD ideal-int pkg syscall (netbsd-386), const ETHERTYPE_AUTOPHON ideal-int pkg syscall (netbsd-386), const ETHERTYPE_AXIS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_BCLOOP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_BOFL ideal-int pkg syscall (netbsd-386), const ETHERTYPE_CABLETRON ideal-int pkg syscall (netbsd-386), const ETHERTYPE_CHAOS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_COMDESIGN ideal-int pkg syscall (netbsd-386), const ETHERTYPE_COMPUGRAPHIC ideal-int pkg syscall (netbsd-386), const ETHERTYPE_COUNTERPOINT ideal-int pkg syscall (netbsd-386), const ETHERTYPE_CRONUS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_CRONUSVLN ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DCA ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DDE ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DEBNI ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DECAM ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DECCUST ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DECDIAG ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DECDNS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DECDTS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DECEXPER ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DECLAST ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DECLTM ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DECMUMPS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DECNETBIOS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DELTACON ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DIDDLE ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DLOG1 ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DLOG2 ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DN ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DOGFIGHT ideal-int pkg syscall (netbsd-386), const ETHERTYPE_DSMD ideal-int pkg syscall (netbsd-386), const ETHERTYPE_ECMA ideal-int pkg syscall (netbsd-386), const ETHERTYPE_ENCRYPT ideal-int pkg syscall (netbsd-386), const ETHERTYPE_ES ideal-int pkg syscall (netbsd-386), const ETHERTYPE_EXCELAN ideal-int pkg syscall (netbsd-386), const ETHERTYPE_EXPERDATA ideal-int pkg syscall (netbsd-386), const ETHERTYPE_FLIP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_FLOWCONTROL ideal-int pkg syscall (netbsd-386), const ETHERTYPE_FRARP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_GENDYN ideal-int pkg syscall (netbsd-386), const ETHERTYPE_HAYES ideal-int pkg syscall (netbsd-386), const ETHERTYPE_HIPPI_FP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_HITACHI ideal-int pkg syscall (netbsd-386), const ETHERTYPE_HP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_IEEEPUP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_IEEEPUPAT ideal-int pkg syscall (netbsd-386), const ETHERTYPE_IMLBL ideal-int pkg syscall (netbsd-386), const ETHERTYPE_IMLBLDIAG ideal-int pkg syscall (netbsd-386), const ETHERTYPE_IP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_IPAS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_IPV6 ideal-int pkg syscall (netbsd-386), const ETHERTYPE_IPX ideal-int pkg syscall (netbsd-386), const ETHERTYPE_IPXNEW ideal-int pkg syscall (netbsd-386), const ETHERTYPE_KALPANA ideal-int pkg syscall (netbsd-386), const ETHERTYPE_LANBRIDGE ideal-int pkg syscall (netbsd-386), const ETHERTYPE_LANPROBE ideal-int pkg syscall (netbsd-386), const ETHERTYPE_LAT ideal-int pkg syscall (netbsd-386), const ETHERTYPE_LBACK ideal-int pkg syscall (netbsd-386), const ETHERTYPE_LITTLE ideal-int pkg syscall (netbsd-386), const ETHERTYPE_LOGICRAFT ideal-int pkg syscall (netbsd-386), const ETHERTYPE_LOOPBACK ideal-int pkg syscall (netbsd-386), const ETHERTYPE_MATRA ideal-int pkg syscall (netbsd-386), const ETHERTYPE_MAX ideal-int pkg syscall (netbsd-386), const ETHERTYPE_MERIT ideal-int pkg syscall (netbsd-386), const ETHERTYPE_MICP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_MOPDL ideal-int pkg syscall (netbsd-386), const ETHERTYPE_MOPRC ideal-int pkg syscall (netbsd-386), const ETHERTYPE_MOTOROLA ideal-int pkg syscall (netbsd-386), const ETHERTYPE_MPLS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_MPLS_MCAST ideal-int pkg syscall (netbsd-386), const ETHERTYPE_MUMPS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBPCC ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBPCLAIM ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBPCLREQ ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBPCLRSP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBPCREQ ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBPCRSP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBPDG ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBPDGB ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBPDLTE ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBPRAR ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBPRAS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBPRST ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBPSCD ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBPVCD ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NBS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NCD ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NESTAR ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NETBEUI ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NOVELL ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NSAT ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NSCOMPAT ideal-int pkg syscall (netbsd-386), const ETHERTYPE_NTRAILER ideal-int pkg syscall (netbsd-386), const ETHERTYPE_OS9 ideal-int pkg syscall (netbsd-386), const ETHERTYPE_OS9NET ideal-int pkg syscall (netbsd-386), const ETHERTYPE_PACER ideal-int pkg syscall (netbsd-386), const ETHERTYPE_PAE ideal-int pkg syscall (netbsd-386), const ETHERTYPE_PCS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_PLANNING ideal-int pkg syscall (netbsd-386), const ETHERTYPE_PPP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_PPPOE ideal-int pkg syscall (netbsd-386), const ETHERTYPE_PPPOEDISC ideal-int pkg syscall (netbsd-386), const ETHERTYPE_PRIMENTS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_PUP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_PUPAT ideal-int pkg syscall (netbsd-386), const ETHERTYPE_RACAL ideal-int pkg syscall (netbsd-386), const ETHERTYPE_RATIONAL ideal-int pkg syscall (netbsd-386), const ETHERTYPE_RAWFR ideal-int pkg syscall (netbsd-386), const ETHERTYPE_RCL ideal-int pkg syscall (netbsd-386), const ETHERTYPE_RDP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_RETIX ideal-int pkg syscall (netbsd-386), const ETHERTYPE_REVARP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SCA ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SECTRA ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SECUREDATA ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SGITW ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SG_BOUNCE ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SG_DIAG ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SG_NETGAMES ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SG_RESV ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SIMNET ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SLOWPROTOCOLS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SNA ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SNMP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SONIX ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SPIDER ideal-int pkg syscall (netbsd-386), const ETHERTYPE_SPRITE ideal-int pkg syscall (netbsd-386), const ETHERTYPE_STP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_TALARIS ideal-int pkg syscall (netbsd-386), const ETHERTYPE_TALARISMC ideal-int pkg syscall (netbsd-386), const ETHERTYPE_TCPCOMP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_TCPSM ideal-int pkg syscall (netbsd-386), const ETHERTYPE_TEC ideal-int pkg syscall (netbsd-386), const ETHERTYPE_TIGAN ideal-int pkg syscall (netbsd-386), const ETHERTYPE_TRAIL ideal-int pkg syscall (netbsd-386), const ETHERTYPE_TRANSETHER ideal-int pkg syscall (netbsd-386), const ETHERTYPE_TYMSHARE ideal-int pkg syscall (netbsd-386), const ETHERTYPE_UBBST ideal-int pkg syscall (netbsd-386), const ETHERTYPE_UBDEBUG ideal-int pkg syscall (netbsd-386), const ETHERTYPE_UBDIAGLOOP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_UBDL ideal-int pkg syscall (netbsd-386), const ETHERTYPE_UBNIU ideal-int pkg syscall (netbsd-386), const ETHERTYPE_UBNMC ideal-int pkg syscall (netbsd-386), const ETHERTYPE_VALID ideal-int pkg syscall (netbsd-386), const ETHERTYPE_VARIAN ideal-int pkg syscall (netbsd-386), const ETHERTYPE_VAXELN ideal-int pkg syscall (netbsd-386), const ETHERTYPE_VEECO ideal-int pkg syscall (netbsd-386), const ETHERTYPE_VEXP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_VGLAB ideal-int pkg syscall (netbsd-386), const ETHERTYPE_VINES ideal-int pkg syscall (netbsd-386), const ETHERTYPE_VINESECHO ideal-int pkg syscall (netbsd-386), const ETHERTYPE_VINESLOOP ideal-int pkg syscall (netbsd-386), const ETHERTYPE_VITAL ideal-int pkg syscall (netbsd-386), const ETHERTYPE_VLAN ideal-int pkg syscall (netbsd-386), const ETHERTYPE_VLTLMAN ideal-int pkg syscall (netbsd-386), const ETHERTYPE_VPROD ideal-int pkg syscall (netbsd-386), const ETHERTYPE_VURESERVED ideal-int pkg syscall (netbsd-386), const ETHERTYPE_WATERLOO ideal-int pkg syscall (netbsd-386), const ETHERTYPE_WELLFLEET ideal-int pkg syscall (netbsd-386), const ETHERTYPE_X25 ideal-int pkg syscall (netbsd-386), const ETHERTYPE_X75 ideal-int pkg syscall (netbsd-386), const ETHERTYPE_XNSSM ideal-int pkg syscall (netbsd-386), const ETHERTYPE_XTP ideal-int pkg syscall (netbsd-386), const ETHER_ADDR_LEN ideal-int pkg syscall (netbsd-386), const ETHER_CRC_LEN ideal-int pkg syscall (netbsd-386), const ETHER_CRC_POLY_BE ideal-int pkg syscall (netbsd-386), const ETHER_CRC_POLY_LE ideal-int pkg syscall (netbsd-386), const ETHER_HDR_LEN ideal-int pkg syscall (netbsd-386), const ETHER_MAX_LEN ideal-int pkg syscall (netbsd-386), const ETHER_MAX_LEN_JUMBO ideal-int pkg syscall (netbsd-386), const ETHER_MIN_LEN ideal-int pkg syscall (netbsd-386), const ETHER_PPPOE_ENCAP_LEN ideal-int pkg syscall (netbsd-386), const ETHER_TYPE_LEN ideal-int pkg syscall (netbsd-386), const ETHER_VLAN_ENCAP_LEN ideal-int pkg syscall (netbsd-386), const ETIME Errno pkg syscall (netbsd-386), const EVFILT_AIO ideal-int pkg syscall (netbsd-386), const EVFILT_PROC ideal-int pkg syscall (netbsd-386), const EVFILT_READ ideal-int pkg syscall (netbsd-386), const EVFILT_SIGNAL ideal-int pkg syscall (netbsd-386), const EVFILT_SYSCOUNT ideal-int pkg syscall (netbsd-386), const EVFILT_TIMER ideal-int pkg syscall (netbsd-386), const EVFILT_VNODE ideal-int pkg syscall (netbsd-386), const EVFILT_WRITE ideal-int pkg syscall (netbsd-386), const EV_ADD ideal-int pkg syscall (netbsd-386), const EV_CLEAR ideal-int pkg syscall (netbsd-386), const EV_DELETE ideal-int pkg syscall (netbsd-386), const EV_DISABLE ideal-int pkg syscall (netbsd-386), const EV_ENABLE ideal-int pkg syscall (netbsd-386), const EV_EOF ideal-int pkg syscall (netbsd-386), const EV_ERROR ideal-int pkg syscall (netbsd-386), const EV_FLAG1 ideal-int pkg syscall (netbsd-386), const EV_ONESHOT ideal-int pkg syscall (netbsd-386), const EV_SYSFLAGS ideal-int pkg syscall (netbsd-386), const EXTA ideal-int pkg syscall (netbsd-386), const EXTB ideal-int pkg syscall (netbsd-386), const EXTPROC ideal-int pkg syscall (netbsd-386), const FD_CLOEXEC ideal-int pkg syscall (netbsd-386), const FD_SETSIZE ideal-int pkg syscall (netbsd-386), const FLUSHO ideal-int pkg syscall (netbsd-386), const F_CLOSEM ideal-int pkg syscall (netbsd-386), const F_DUPFD ideal-int pkg syscall (netbsd-386), const F_DUPFD_CLOEXEC ideal-int pkg syscall (netbsd-386), const F_FSCTL ideal-int pkg syscall (netbsd-386), const F_FSDIRMASK ideal-int pkg syscall (netbsd-386), const F_FSIN ideal-int pkg syscall (netbsd-386), const F_FSINOUT ideal-int pkg syscall (netbsd-386), const F_FSOUT ideal-int pkg syscall (netbsd-386), const F_FSPRIV ideal-int pkg syscall (netbsd-386), const F_FSVOID ideal-int pkg syscall (netbsd-386), const F_GETFD ideal-int pkg syscall (netbsd-386), const F_GETFL ideal-int pkg syscall (netbsd-386), const F_GETLK ideal-int pkg syscall (netbsd-386), const F_GETNOSIGPIPE ideal-int pkg syscall (netbsd-386), const F_GETOWN ideal-int pkg syscall (netbsd-386), const F_MAXFD ideal-int pkg syscall (netbsd-386), const F_OK ideal-int pkg syscall (netbsd-386), const F_PARAM_MASK ideal-int pkg syscall (netbsd-386), const F_PARAM_MAX ideal-int pkg syscall (netbsd-386), const F_RDLCK ideal-int pkg syscall (netbsd-386), const F_SETFD ideal-int pkg syscall (netbsd-386), const F_SETFL ideal-int pkg syscall (netbsd-386), const F_SETLK ideal-int pkg syscall (netbsd-386), const F_SETLKW ideal-int pkg syscall (netbsd-386), const F_SETNOSIGPIPE ideal-int pkg syscall (netbsd-386), const F_SETOWN ideal-int pkg syscall (netbsd-386), const F_UNLCK ideal-int pkg syscall (netbsd-386), const F_WRLCK ideal-int pkg syscall (netbsd-386), const HUPCL ideal-int pkg syscall (netbsd-386), const ICANON ideal-int pkg syscall (netbsd-386), const ICMP6_FILTER = 18 pkg syscall (netbsd-386), const ICMP6_FILTER ideal-int pkg syscall (netbsd-386), const ICRNL ideal-int pkg syscall (netbsd-386), const IEXTEN ideal-int pkg syscall (netbsd-386), const IFAN_ARRIVAL ideal-int pkg syscall (netbsd-386), const IFAN_DEPARTURE ideal-int pkg syscall (netbsd-386), const IFA_ROUTE ideal-int pkg syscall (netbsd-386), const IFF_ALLMULTI ideal-int pkg syscall (netbsd-386), const IFF_CANTCHANGE ideal-int pkg syscall (netbsd-386), const IFF_DEBUG ideal-int pkg syscall (netbsd-386), const IFF_LINK0 ideal-int pkg syscall (netbsd-386), const IFF_LINK1 ideal-int pkg syscall (netbsd-386), const IFF_LINK2 ideal-int pkg syscall (netbsd-386), const IFF_NOARP ideal-int pkg syscall (netbsd-386), const IFF_NOTRAILERS ideal-int pkg syscall (netbsd-386), const IFF_OACTIVE ideal-int pkg syscall (netbsd-386), const IFF_POINTOPOINT ideal-int pkg syscall (netbsd-386), const IFF_PROMISC ideal-int pkg syscall (netbsd-386), const IFF_RUNNING ideal-int pkg syscall (netbsd-386), const IFF_SIMPLEX ideal-int pkg syscall (netbsd-386), const IFNAMSIZ ideal-int pkg syscall (netbsd-386), const IFT_1822 ideal-int pkg syscall (netbsd-386), const IFT_A12MPPSWITCH ideal-int pkg syscall (netbsd-386), const IFT_AAL2 ideal-int pkg syscall (netbsd-386), const IFT_AAL5 ideal-int pkg syscall (netbsd-386), const IFT_ADSL ideal-int pkg syscall (netbsd-386), const IFT_AFLANE8023 ideal-int pkg syscall (netbsd-386), const IFT_AFLANE8025 ideal-int pkg syscall (netbsd-386), const IFT_ARAP ideal-int pkg syscall (netbsd-386), const IFT_ARCNET ideal-int pkg syscall (netbsd-386), const IFT_ARCNETPLUS ideal-int pkg syscall (netbsd-386), const IFT_ASYNC ideal-int pkg syscall (netbsd-386), const IFT_ATM ideal-int pkg syscall (netbsd-386), const IFT_ATMDXI ideal-int pkg syscall (netbsd-386), const IFT_ATMFUNI ideal-int pkg syscall (netbsd-386), const IFT_ATMIMA ideal-int pkg syscall (netbsd-386), const IFT_ATMLOGICAL ideal-int pkg syscall (netbsd-386), const IFT_ATMRADIO ideal-int pkg syscall (netbsd-386), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (netbsd-386), const IFT_ATMVCIENDPT ideal-int pkg syscall (netbsd-386), const IFT_ATMVIRTUAL ideal-int pkg syscall (netbsd-386), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (netbsd-386), const IFT_BRIDGE ideal-int pkg syscall (netbsd-386), const IFT_BSC ideal-int pkg syscall (netbsd-386), const IFT_CARP ideal-int pkg syscall (netbsd-386), const IFT_CCTEMUL ideal-int pkg syscall (netbsd-386), const IFT_CEPT ideal-int pkg syscall (netbsd-386), const IFT_CES ideal-int pkg syscall (netbsd-386), const IFT_CHANNEL ideal-int pkg syscall (netbsd-386), const IFT_CNR ideal-int pkg syscall (netbsd-386), const IFT_COFFEE ideal-int pkg syscall (netbsd-386), const IFT_COMPOSITELINK ideal-int pkg syscall (netbsd-386), const IFT_DCN ideal-int pkg syscall (netbsd-386), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (netbsd-386), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (netbsd-386), const IFT_DLSW ideal-int pkg syscall (netbsd-386), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (netbsd-386), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (netbsd-386), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (netbsd-386), const IFT_DOCSCABLEUPSTREAMCHANNEL ideal-int pkg syscall (netbsd-386), const IFT_DS0 ideal-int pkg syscall (netbsd-386), const IFT_DS0BUNDLE ideal-int pkg syscall (netbsd-386), const IFT_DS1FDL ideal-int pkg syscall (netbsd-386), const IFT_DS3 ideal-int pkg syscall (netbsd-386), const IFT_DTM ideal-int pkg syscall (netbsd-386), const IFT_DVBASILN ideal-int pkg syscall (netbsd-386), const IFT_DVBASIOUT ideal-int pkg syscall (netbsd-386), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (netbsd-386), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (netbsd-386), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (netbsd-386), const IFT_ECONET ideal-int pkg syscall (netbsd-386), const IFT_EON ideal-int pkg syscall (netbsd-386), const IFT_EPLRS ideal-int pkg syscall (netbsd-386), const IFT_ESCON ideal-int pkg syscall (netbsd-386), const IFT_ETHER ideal-int pkg syscall (netbsd-386), const IFT_FAITH ideal-int pkg syscall (netbsd-386), const IFT_FAST ideal-int pkg syscall (netbsd-386), const IFT_FASTETHER ideal-int pkg syscall (netbsd-386), const IFT_FASTETHERFX ideal-int pkg syscall (netbsd-386), const IFT_FDDI ideal-int pkg syscall (netbsd-386), const IFT_FIBRECHANNEL ideal-int pkg syscall (netbsd-386), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (netbsd-386), const IFT_FRAMERELAYMPI ideal-int pkg syscall (netbsd-386), const IFT_FRDLCIENDPT ideal-int pkg syscall (netbsd-386), const IFT_FRELAY ideal-int pkg syscall (netbsd-386), const IFT_FRELAYDCE ideal-int pkg syscall (netbsd-386), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (netbsd-386), const IFT_FRFORWARD ideal-int pkg syscall (netbsd-386), const IFT_G703AT2MB ideal-int pkg syscall (netbsd-386), const IFT_G703AT64K ideal-int pkg syscall (netbsd-386), const IFT_GIF ideal-int pkg syscall (netbsd-386), const IFT_GIGABITETHERNET ideal-int pkg syscall (netbsd-386), const IFT_GR303IDT ideal-int pkg syscall (netbsd-386), const IFT_GR303RDT ideal-int pkg syscall (netbsd-386), const IFT_H323GATEKEEPER ideal-int pkg syscall (netbsd-386), const IFT_H323PROXY ideal-int pkg syscall (netbsd-386), const IFT_HDH1822 ideal-int pkg syscall (netbsd-386), const IFT_HDLC ideal-int pkg syscall (netbsd-386), const IFT_HDSL2 ideal-int pkg syscall (netbsd-386), const IFT_HIPERLAN2 ideal-int pkg syscall (netbsd-386), const IFT_HIPPI ideal-int pkg syscall (netbsd-386), const IFT_HIPPIINTERFACE ideal-int pkg syscall (netbsd-386), const IFT_HOSTPAD ideal-int pkg syscall (netbsd-386), const IFT_HSSI ideal-int pkg syscall (netbsd-386), const IFT_HY ideal-int pkg syscall (netbsd-386), const IFT_IBM370PARCHAN ideal-int pkg syscall (netbsd-386), const IFT_IDSL ideal-int pkg syscall (netbsd-386), const IFT_IEEE1394 ideal-int pkg syscall (netbsd-386), const IFT_IEEE80211 ideal-int pkg syscall (netbsd-386), const IFT_IEEE80212 ideal-int pkg syscall (netbsd-386), const IFT_IEEE8023ADLAG ideal-int pkg syscall (netbsd-386), const IFT_IFGSN ideal-int pkg syscall (netbsd-386), const IFT_IMT ideal-int pkg syscall (netbsd-386), const IFT_INFINIBAND ideal-int pkg syscall (netbsd-386), const IFT_INTERLEAVE ideal-int pkg syscall (netbsd-386), const IFT_IP ideal-int pkg syscall (netbsd-386), const IFT_IPFORWARD ideal-int pkg syscall (netbsd-386), const IFT_IPOVERATM ideal-int pkg syscall (netbsd-386), const IFT_IPOVERCDLC ideal-int pkg syscall (netbsd-386), const IFT_IPOVERCLAW ideal-int pkg syscall (netbsd-386), const IFT_IPSWITCH ideal-int pkg syscall (netbsd-386), const IFT_ISDN ideal-int pkg syscall (netbsd-386), const IFT_ISDNBASIC ideal-int pkg syscall (netbsd-386), const IFT_ISDNPRIMARY ideal-int pkg syscall (netbsd-386), const IFT_ISDNS ideal-int pkg syscall (netbsd-386), const IFT_ISDNU ideal-int pkg syscall (netbsd-386), const IFT_ISO88022LLC ideal-int pkg syscall (netbsd-386), const IFT_ISO88023 ideal-int pkg syscall (netbsd-386), const IFT_ISO88024 ideal-int pkg syscall (netbsd-386), const IFT_ISO88025 ideal-int pkg syscall (netbsd-386), const IFT_ISO88025CRFPINT ideal-int pkg syscall (netbsd-386), const IFT_ISO88025DTR ideal-int pkg syscall (netbsd-386), const IFT_ISO88025FIBER ideal-int pkg syscall (netbsd-386), const IFT_ISO88026 ideal-int pkg syscall (netbsd-386), const IFT_ISUP ideal-int pkg syscall (netbsd-386), const IFT_L2VLAN ideal-int pkg syscall (netbsd-386), const IFT_L3IPVLAN ideal-int pkg syscall (netbsd-386), const IFT_L3IPXVLAN ideal-int pkg syscall (netbsd-386), const IFT_LAPB ideal-int pkg syscall (netbsd-386), const IFT_LAPD ideal-int pkg syscall (netbsd-386), const IFT_LAPF ideal-int pkg syscall (netbsd-386), const IFT_LINEGROUP ideal-int pkg syscall (netbsd-386), const IFT_LOCALTALK ideal-int pkg syscall (netbsd-386), const IFT_LOOP ideal-int pkg syscall (netbsd-386), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (netbsd-386), const IFT_MFSIGLINK ideal-int pkg syscall (netbsd-386), const IFT_MIOX25 ideal-int pkg syscall (netbsd-386), const IFT_MODEM ideal-int pkg syscall (netbsd-386), const IFT_MPC ideal-int pkg syscall (netbsd-386), const IFT_MPLS ideal-int pkg syscall (netbsd-386), const IFT_MPLSTUNNEL ideal-int pkg syscall (netbsd-386), const IFT_MSDSL ideal-int pkg syscall (netbsd-386), const IFT_MVL ideal-int pkg syscall (netbsd-386), const IFT_MYRINET ideal-int pkg syscall (netbsd-386), const IFT_NFAS ideal-int pkg syscall (netbsd-386), const IFT_NSIP ideal-int pkg syscall (netbsd-386), const IFT_OPTICALCHANNEL ideal-int pkg syscall (netbsd-386), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (netbsd-386), const IFT_OTHER ideal-int pkg syscall (netbsd-386), const IFT_P10 ideal-int pkg syscall (netbsd-386), const IFT_P80 ideal-int pkg syscall (netbsd-386), const IFT_PARA ideal-int pkg syscall (netbsd-386), const IFT_PFLOG ideal-int pkg syscall (netbsd-386), const IFT_PFSYNC ideal-int pkg syscall (netbsd-386), const IFT_PLC ideal-int pkg syscall (netbsd-386), const IFT_PON155 ideal-int pkg syscall (netbsd-386), const IFT_PON622 ideal-int pkg syscall (netbsd-386), const IFT_POS ideal-int pkg syscall (netbsd-386), const IFT_PPP ideal-int pkg syscall (netbsd-386), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (netbsd-386), const IFT_PROPATM ideal-int pkg syscall (netbsd-386), const IFT_PROPBWAP2MP ideal-int pkg syscall (netbsd-386), const IFT_PROPCNLS ideal-int pkg syscall (netbsd-386), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (netbsd-386), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (netbsd-386), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (netbsd-386), const IFT_PROPMUX ideal-int pkg syscall (netbsd-386), const IFT_PROPVIRTUAL ideal-int pkg syscall (netbsd-386), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (netbsd-386), const IFT_PTPSERIAL ideal-int pkg syscall (netbsd-386), const IFT_PVC ideal-int pkg syscall (netbsd-386), const IFT_Q2931 ideal-int pkg syscall (netbsd-386), const IFT_QLLC ideal-int pkg syscall (netbsd-386), const IFT_RADIOMAC ideal-int pkg syscall (netbsd-386), const IFT_RADSL ideal-int pkg syscall (netbsd-386), const IFT_REACHDSL ideal-int pkg syscall (netbsd-386), const IFT_RFC1483 ideal-int pkg syscall (netbsd-386), const IFT_RS232 ideal-int pkg syscall (netbsd-386), const IFT_RSRB ideal-int pkg syscall (netbsd-386), const IFT_SDLC ideal-int pkg syscall (netbsd-386), const IFT_SDSL ideal-int pkg syscall (netbsd-386), const IFT_SHDSL ideal-int pkg syscall (netbsd-386), const IFT_SIP ideal-int pkg syscall (netbsd-386), const IFT_SIPSIG ideal-int pkg syscall (netbsd-386), const IFT_SIPTG ideal-int pkg syscall (netbsd-386), const IFT_SLIP ideal-int pkg syscall (netbsd-386), const IFT_SMDSDXI ideal-int pkg syscall (netbsd-386), const IFT_SMDSICIP ideal-int pkg syscall (netbsd-386), const IFT_SONET ideal-int pkg syscall (netbsd-386), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (netbsd-386), const IFT_SONETPATH ideal-int pkg syscall (netbsd-386), const IFT_SONETVT ideal-int pkg syscall (netbsd-386), const IFT_SRP ideal-int pkg syscall (netbsd-386), const IFT_SS7SIGLINK ideal-int pkg syscall (netbsd-386), const IFT_STACKTOSTACK ideal-int pkg syscall (netbsd-386), const IFT_STARLAN ideal-int pkg syscall (netbsd-386), const IFT_STF ideal-int pkg syscall (netbsd-386), const IFT_T1 ideal-int pkg syscall (netbsd-386), const IFT_TDLC ideal-int pkg syscall (netbsd-386), const IFT_TELINK ideal-int pkg syscall (netbsd-386), const IFT_TERMPAD ideal-int pkg syscall (netbsd-386), const IFT_TR008 ideal-int pkg syscall (netbsd-386), const IFT_TRANSPHDLC ideal-int pkg syscall (netbsd-386), const IFT_TUNNEL ideal-int pkg syscall (netbsd-386), const IFT_ULTRA ideal-int pkg syscall (netbsd-386), const IFT_USB ideal-int pkg syscall (netbsd-386), const IFT_V11 ideal-int pkg syscall (netbsd-386), const IFT_V35 ideal-int pkg syscall (netbsd-386), const IFT_V36 ideal-int pkg syscall (netbsd-386), const IFT_V37 ideal-int pkg syscall (netbsd-386), const IFT_VDSL ideal-int pkg syscall (netbsd-386), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (netbsd-386), const IFT_VIRTUALTG ideal-int pkg syscall (netbsd-386), const IFT_VOICEDID ideal-int pkg syscall (netbsd-386), const IFT_VOICEEM ideal-int pkg syscall (netbsd-386), const IFT_VOICEEMFGD ideal-int pkg syscall (netbsd-386), const IFT_VOICEENCAP ideal-int pkg syscall (netbsd-386), const IFT_VOICEFGDEANA ideal-int pkg syscall (netbsd-386), const IFT_VOICEFXO ideal-int pkg syscall (netbsd-386), const IFT_VOICEFXS ideal-int pkg syscall (netbsd-386), const IFT_VOICEOVERATM ideal-int pkg syscall (netbsd-386), const IFT_VOICEOVERCABLE ideal-int pkg syscall (netbsd-386), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (netbsd-386), const IFT_VOICEOVERIP ideal-int pkg syscall (netbsd-386), const IFT_X213 ideal-int pkg syscall (netbsd-386), const IFT_X25 ideal-int pkg syscall (netbsd-386), const IFT_X25DDN ideal-int pkg syscall (netbsd-386), const IFT_X25HUNTGROUP ideal-int pkg syscall (netbsd-386), const IFT_X25MLP ideal-int pkg syscall (netbsd-386), const IFT_X25PLE ideal-int pkg syscall (netbsd-386), const IFT_XETHER ideal-int pkg syscall (netbsd-386), const IGNBRK ideal-int pkg syscall (netbsd-386), const IGNCR ideal-int pkg syscall (netbsd-386), const IGNPAR ideal-int pkg syscall (netbsd-386), const IMAXBEL ideal-int pkg syscall (netbsd-386), const INLCR ideal-int pkg syscall (netbsd-386), const INPCK ideal-int pkg syscall (netbsd-386), const IN_CLASSA_HOST ideal-int pkg syscall (netbsd-386), const IN_CLASSA_MAX ideal-int pkg syscall (netbsd-386), const IN_CLASSA_NET ideal-int pkg syscall (netbsd-386), const IN_CLASSA_NSHIFT ideal-int pkg syscall (netbsd-386), const IN_CLASSB_HOST ideal-int pkg syscall (netbsd-386), const IN_CLASSB_MAX ideal-int pkg syscall (netbsd-386), const IN_CLASSB_NET ideal-int pkg syscall (netbsd-386), const IN_CLASSB_NSHIFT ideal-int pkg syscall (netbsd-386), const IN_CLASSC_HOST ideal-int pkg syscall (netbsd-386), const IN_CLASSC_NET ideal-int pkg syscall (netbsd-386), const IN_CLASSC_NSHIFT ideal-int pkg syscall (netbsd-386), const IN_CLASSD_HOST ideal-int pkg syscall (netbsd-386), const IN_CLASSD_NET ideal-int pkg syscall (netbsd-386), const IN_CLASSD_NSHIFT ideal-int pkg syscall (netbsd-386), const IN_LOOPBACKNET ideal-int pkg syscall (netbsd-386), const IPPROTO_AH ideal-int pkg syscall (netbsd-386), const IPPROTO_CARP ideal-int pkg syscall (netbsd-386), const IPPROTO_DONE ideal-int pkg syscall (netbsd-386), const IPPROTO_DSTOPTS ideal-int pkg syscall (netbsd-386), const IPPROTO_EGP ideal-int pkg syscall (netbsd-386), const IPPROTO_ENCAP ideal-int pkg syscall (netbsd-386), const IPPROTO_EON ideal-int pkg syscall (netbsd-386), const IPPROTO_ESP ideal-int pkg syscall (netbsd-386), const IPPROTO_ETHERIP ideal-int pkg syscall (netbsd-386), const IPPROTO_FRAGMENT ideal-int pkg syscall (netbsd-386), const IPPROTO_GGP ideal-int pkg syscall (netbsd-386), const IPPROTO_GRE ideal-int pkg syscall (netbsd-386), const IPPROTO_HOPOPTS ideal-int pkg syscall (netbsd-386), const IPPROTO_ICMP ideal-int pkg syscall (netbsd-386), const IPPROTO_ICMPV6 ideal-int pkg syscall (netbsd-386), const IPPROTO_IDP ideal-int pkg syscall (netbsd-386), const IPPROTO_IGMP ideal-int pkg syscall (netbsd-386), const IPPROTO_IPCOMP ideal-int pkg syscall (netbsd-386), const IPPROTO_IPIP ideal-int pkg syscall (netbsd-386), const IPPROTO_IPV4 ideal-int pkg syscall (netbsd-386), const IPPROTO_IPV6_ICMP ideal-int pkg syscall (netbsd-386), const IPPROTO_MAX ideal-int pkg syscall (netbsd-386), const IPPROTO_MAXID ideal-int pkg syscall (netbsd-386), const IPPROTO_MOBILE ideal-int pkg syscall (netbsd-386), const IPPROTO_NONE ideal-int pkg syscall (netbsd-386), const IPPROTO_PFSYNC ideal-int pkg syscall (netbsd-386), const IPPROTO_PIM ideal-int pkg syscall (netbsd-386), const IPPROTO_PUP ideal-int pkg syscall (netbsd-386), const IPPROTO_RAW ideal-int pkg syscall (netbsd-386), const IPPROTO_ROUTING ideal-int pkg syscall (netbsd-386), const IPPROTO_RSVP ideal-int pkg syscall (netbsd-386), const IPPROTO_TP ideal-int pkg syscall (netbsd-386), const IPPROTO_VRRP ideal-int pkg syscall (netbsd-386), const IPV6_CHECKSUM ideal-int pkg syscall (netbsd-386), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (netbsd-386), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (netbsd-386), const IPV6_DEFHLIM ideal-int pkg syscall (netbsd-386), const IPV6_DONTFRAG ideal-int pkg syscall (netbsd-386), const IPV6_DSTOPTS ideal-int pkg syscall (netbsd-386), const IPV6_FAITH ideal-int pkg syscall (netbsd-386), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (netbsd-386), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (netbsd-386), const IPV6_FRAGTTL ideal-int pkg syscall (netbsd-386), const IPV6_HLIMDEC ideal-int pkg syscall (netbsd-386), const IPV6_HOPLIMIT ideal-int pkg syscall (netbsd-386), const IPV6_HOPOPTS ideal-int pkg syscall (netbsd-386), const IPV6_IPSEC_POLICY ideal-int pkg syscall (netbsd-386), const IPV6_MAXHLIM ideal-int pkg syscall (netbsd-386), const IPV6_MAXPACKET ideal-int pkg syscall (netbsd-386), const IPV6_MMTU ideal-int pkg syscall (netbsd-386), const IPV6_NEXTHOP ideal-int pkg syscall (netbsd-386), const IPV6_PATHMTU ideal-int pkg syscall (netbsd-386), const IPV6_PKTINFO ideal-int pkg syscall (netbsd-386), const IPV6_PORTRANGE ideal-int pkg syscall (netbsd-386), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (netbsd-386), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (netbsd-386), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (netbsd-386), const IPV6_RECVDSTOPTS ideal-int pkg syscall (netbsd-386), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (netbsd-386), const IPV6_RECVHOPOPTS ideal-int pkg syscall (netbsd-386), const IPV6_RECVPATHMTU ideal-int pkg syscall (netbsd-386), const IPV6_RECVPKTINFO ideal-int pkg syscall (netbsd-386), const IPV6_RECVRTHDR ideal-int pkg syscall (netbsd-386), const IPV6_RECVTCLASS ideal-int pkg syscall (netbsd-386), const IPV6_RTHDR ideal-int pkg syscall (netbsd-386), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (netbsd-386), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (netbsd-386), const IPV6_RTHDR_STRICT ideal-int pkg syscall (netbsd-386), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (netbsd-386), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (netbsd-386), const IPV6_TCLASS ideal-int pkg syscall (netbsd-386), const IPV6_USE_MIN_MTU ideal-int pkg syscall (netbsd-386), const IPV6_VERSION ideal-int pkg syscall (netbsd-386), const IPV6_VERSION_MASK ideal-int pkg syscall (netbsd-386), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (netbsd-386), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (netbsd-386), const IP_DF ideal-int pkg syscall (netbsd-386), const IP_EF ideal-int pkg syscall (netbsd-386), const IP_ERRORMTU ideal-int pkg syscall (netbsd-386), const IP_HDRINCL ideal-int pkg syscall (netbsd-386), const IP_IPSEC_POLICY ideal-int pkg syscall (netbsd-386), const IP_MAXPACKET ideal-int pkg syscall (netbsd-386), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (netbsd-386), const IP_MF ideal-int pkg syscall (netbsd-386), const IP_MINFRAGSIZE ideal-int pkg syscall (netbsd-386), const IP_MINTTL ideal-int pkg syscall (netbsd-386), const IP_MSS ideal-int pkg syscall (netbsd-386), const IP_OFFMASK ideal-int pkg syscall (netbsd-386), const IP_OPTIONS ideal-int pkg syscall (netbsd-386), const IP_PORTRANGE ideal-int pkg syscall (netbsd-386), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (netbsd-386), const IP_PORTRANGE_HIGH ideal-int pkg syscall (netbsd-386), const IP_PORTRANGE_LOW ideal-int pkg syscall (netbsd-386), const IP_RECVDSTADDR ideal-int pkg syscall (netbsd-386), const IP_RECVIF ideal-int pkg syscall (netbsd-386), const IP_RECVOPTS ideal-int pkg syscall (netbsd-386), const IP_RECVRETOPTS ideal-int pkg syscall (netbsd-386), const IP_RECVTTL ideal-int pkg syscall (netbsd-386), const IP_RETOPTS ideal-int pkg syscall (netbsd-386), const IP_RF ideal-int pkg syscall (netbsd-386), const ISIG ideal-int pkg syscall (netbsd-386), const ISTRIP ideal-int pkg syscall (netbsd-386), const IXANY ideal-int pkg syscall (netbsd-386), const IXOFF ideal-int pkg syscall (netbsd-386), const IXON ideal-int pkg syscall (netbsd-386), const LOCK_EX ideal-int pkg syscall (netbsd-386), const LOCK_NB ideal-int pkg syscall (netbsd-386), const LOCK_SH ideal-int pkg syscall (netbsd-386), const LOCK_UN ideal-int pkg syscall (netbsd-386), const MSG_BCAST ideal-int pkg syscall (netbsd-386), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (netbsd-386), const MSG_CONTROLMBUF ideal-int pkg syscall (netbsd-386), const MSG_CTRUNC ideal-int pkg syscall (netbsd-386), const MSG_DONTROUTE ideal-int pkg syscall (netbsd-386), const MSG_DONTWAIT ideal-int pkg syscall (netbsd-386), const MSG_EOR ideal-int pkg syscall (netbsd-386), const MSG_IOVUSRSPACE ideal-int pkg syscall (netbsd-386), const MSG_LENUSRSPACE ideal-int pkg syscall (netbsd-386), const MSG_MCAST ideal-int pkg syscall (netbsd-386), const MSG_NAMEMBUF ideal-int pkg syscall (netbsd-386), const MSG_NBIO ideal-int pkg syscall (netbsd-386), const MSG_NOSIGNAL ideal-int pkg syscall (netbsd-386), const MSG_OOB ideal-int pkg syscall (netbsd-386), const MSG_PEEK ideal-int pkg syscall (netbsd-386), const MSG_TRUNC ideal-int pkg syscall (netbsd-386), const MSG_USERFLAGS ideal-int pkg syscall (netbsd-386), const MSG_WAITALL ideal-int pkg syscall (netbsd-386), const NAME_MAX ideal-int pkg syscall (netbsd-386), const NET_RT_DUMP ideal-int pkg syscall (netbsd-386), const NET_RT_FLAGS ideal-int pkg syscall (netbsd-386), const NET_RT_IFLIST ideal-int pkg syscall (netbsd-386), const NET_RT_MAXID ideal-int pkg syscall (netbsd-386), const NET_RT_OIFLIST ideal-int pkg syscall (netbsd-386), const NET_RT_OOIFLIST ideal-int pkg syscall (netbsd-386), const NOFLSH ideal-int pkg syscall (netbsd-386), const NOTE_ATTRIB ideal-int pkg syscall (netbsd-386), const NOTE_CHILD ideal-int pkg syscall (netbsd-386), const NOTE_DELETE ideal-int pkg syscall (netbsd-386), const NOTE_EXEC ideal-int pkg syscall (netbsd-386), const NOTE_EXIT ideal-int pkg syscall (netbsd-386), const NOTE_EXTEND ideal-int pkg syscall (netbsd-386), const NOTE_FORK ideal-int pkg syscall (netbsd-386), const NOTE_LINK ideal-int pkg syscall (netbsd-386), const NOTE_LOWAT ideal-int pkg syscall (netbsd-386), const NOTE_PCTRLMASK ideal-int pkg syscall (netbsd-386), const NOTE_PDATAMASK ideal-int pkg syscall (netbsd-386), const NOTE_RENAME ideal-int pkg syscall (netbsd-386), const NOTE_REVOKE ideal-int pkg syscall (netbsd-386), const NOTE_TRACK ideal-int pkg syscall (netbsd-386), const NOTE_TRACKERR ideal-int pkg syscall (netbsd-386), const NOTE_WRITE ideal-int pkg syscall (netbsd-386), const OCRNL ideal-int pkg syscall (netbsd-386), const OFIOGETBMAP ideal-int pkg syscall (netbsd-386), const ONLCR ideal-int pkg syscall (netbsd-386), const ONLRET ideal-int pkg syscall (netbsd-386), const ONOCR ideal-int pkg syscall (netbsd-386), const ONOEOT ideal-int pkg syscall (netbsd-386), const OPOST ideal-int pkg syscall (netbsd-386), const O_ACCMODE ideal-int pkg syscall (netbsd-386), const O_ALT_IO ideal-int pkg syscall (netbsd-386), const O_DIRECT ideal-int pkg syscall (netbsd-386), const O_DIRECTORY ideal-int pkg syscall (netbsd-386), const O_DSYNC ideal-int pkg syscall (netbsd-386), const O_EXLOCK ideal-int pkg syscall (netbsd-386), const O_FSYNC ideal-int pkg syscall (netbsd-386), const O_NDELAY ideal-int pkg syscall (netbsd-386), const O_NOFOLLOW ideal-int pkg syscall (netbsd-386), const O_NOSIGPIPE ideal-int pkg syscall (netbsd-386), const O_RSYNC ideal-int pkg syscall (netbsd-386), const O_SHLOCK ideal-int pkg syscall (netbsd-386), const PARENB ideal-int pkg syscall (netbsd-386), const PARMRK ideal-int pkg syscall (netbsd-386), const PARODD ideal-int pkg syscall (netbsd-386), const PENDIN ideal-int pkg syscall (netbsd-386), const PRIO_PGRP = 1 pkg syscall (netbsd-386), const PRIO_PGRP ideal-int pkg syscall (netbsd-386), const PRIO_PROCESS = 0 pkg syscall (netbsd-386), const PRIO_PROCESS ideal-int pkg syscall (netbsd-386), const PRIO_USER = 2 pkg syscall (netbsd-386), const PRIO_USER ideal-int pkg syscall (netbsd-386), const PRI_IOFLUSH ideal-int pkg syscall (netbsd-386), const PTRACE_CONT ideal-int pkg syscall (netbsd-386), const PTRACE_KILL ideal-int pkg syscall (netbsd-386), const PTRACE_TRACEME ideal-int pkg syscall (netbsd-386), const RLIMIT_AS ideal-int pkg syscall (netbsd-386), const RLIMIT_CORE ideal-int pkg syscall (netbsd-386), const RLIMIT_CPU ideal-int pkg syscall (netbsd-386), const RLIMIT_DATA ideal-int pkg syscall (netbsd-386), const RLIMIT_FSIZE ideal-int pkg syscall (netbsd-386), const RLIMIT_NOFILE ideal-int pkg syscall (netbsd-386), const RLIMIT_STACK ideal-int pkg syscall (netbsd-386), const RLIM_INFINITY ideal-int pkg syscall (netbsd-386), const RTAX_AUTHOR ideal-int pkg syscall (netbsd-386), const RTAX_BRD ideal-int pkg syscall (netbsd-386), const RTAX_DST ideal-int pkg syscall (netbsd-386), const RTAX_GATEWAY ideal-int pkg syscall (netbsd-386), const RTAX_GENMASK ideal-int pkg syscall (netbsd-386), const RTAX_IFA ideal-int pkg syscall (netbsd-386), const RTAX_IFP ideal-int pkg syscall (netbsd-386), const RTAX_MAX ideal-int pkg syscall (netbsd-386), const RTAX_NETMASK ideal-int pkg syscall (netbsd-386), const RTAX_TAG ideal-int pkg syscall (netbsd-386), const RTA_AUTHOR ideal-int pkg syscall (netbsd-386), const RTA_BRD ideal-int pkg syscall (netbsd-386), const RTA_DST ideal-int pkg syscall (netbsd-386), const RTA_GATEWAY ideal-int pkg syscall (netbsd-386), const RTA_GENMASK ideal-int pkg syscall (netbsd-386), const RTA_IFA ideal-int pkg syscall (netbsd-386), const RTA_IFP ideal-int pkg syscall (netbsd-386), const RTA_NETMASK ideal-int pkg syscall (netbsd-386), const RTA_TAG ideal-int pkg syscall (netbsd-386), const RTF_ANNOUNCE ideal-int pkg syscall (netbsd-386), const RTF_BLACKHOLE ideal-int pkg syscall (netbsd-386), const RTF_CLONED ideal-int pkg syscall (netbsd-386), const RTF_CLONING ideal-int pkg syscall (netbsd-386), const RTF_DONE ideal-int pkg syscall (netbsd-386), const RTF_DYNAMIC ideal-int pkg syscall (netbsd-386), const RTF_GATEWAY ideal-int pkg syscall (netbsd-386), const RTF_HOST ideal-int pkg syscall (netbsd-386), const RTF_LLINFO ideal-int pkg syscall (netbsd-386), const RTF_MASK ideal-int pkg syscall (netbsd-386), const RTF_MODIFIED ideal-int pkg syscall (netbsd-386), const RTF_PROTO1 ideal-int pkg syscall (netbsd-386), const RTF_PROTO2 ideal-int pkg syscall (netbsd-386), const RTF_REJECT ideal-int pkg syscall (netbsd-386), const RTF_SRC ideal-int pkg syscall (netbsd-386), const RTF_STATIC ideal-int pkg syscall (netbsd-386), const RTF_UP ideal-int pkg syscall (netbsd-386), const RTF_XRESOLVE ideal-int pkg syscall (netbsd-386), const RTM_ADD ideal-int pkg syscall (netbsd-386), const RTM_CHANGE ideal-int pkg syscall (netbsd-386), const RTM_CHGADDR ideal-int pkg syscall (netbsd-386), const RTM_DELADDR ideal-int pkg syscall (netbsd-386), const RTM_DELETE ideal-int pkg syscall (netbsd-386), const RTM_GET ideal-int pkg syscall (netbsd-386), const RTM_IEEE80211 ideal-int pkg syscall (netbsd-386), const RTM_IFANNOUNCE ideal-int pkg syscall (netbsd-386), const RTM_IFINFO ideal-int pkg syscall (netbsd-386), const RTM_LLINFO_UPD ideal-int pkg syscall (netbsd-386), const RTM_LOCK ideal-int pkg syscall (netbsd-386), const RTM_LOSING ideal-int pkg syscall (netbsd-386), const RTM_MISS ideal-int pkg syscall (netbsd-386), const RTM_NEWADDR ideal-int pkg syscall (netbsd-386), const RTM_OIFINFO ideal-int pkg syscall (netbsd-386), const RTM_OLDADD ideal-int pkg syscall (netbsd-386), const RTM_OLDDEL ideal-int pkg syscall (netbsd-386), const RTM_OOIFINFO ideal-int pkg syscall (netbsd-386), const RTM_REDIRECT ideal-int pkg syscall (netbsd-386), const RTM_RESOLVE ideal-int pkg syscall (netbsd-386), const RTM_RTTUNIT ideal-int pkg syscall (netbsd-386), const RTM_SETGATE ideal-int pkg syscall (netbsd-386), const RTM_VERSION ideal-int pkg syscall (netbsd-386), const RTV_EXPIRE ideal-int pkg syscall (netbsd-386), const RTV_HOPCOUNT ideal-int pkg syscall (netbsd-386), const RTV_MTU ideal-int pkg syscall (netbsd-386), const RTV_RPIPE ideal-int pkg syscall (netbsd-386), const RTV_RTT ideal-int pkg syscall (netbsd-386), const RTV_RTTVAR ideal-int pkg syscall (netbsd-386), const RTV_SPIPE ideal-int pkg syscall (netbsd-386), const RTV_SSTHRESH ideal-int pkg syscall (netbsd-386), const RUSAGE_CHILDREN ideal-int pkg syscall (netbsd-386), const RUSAGE_SELF ideal-int pkg syscall (netbsd-386), const SCM_CREDS ideal-int pkg syscall (netbsd-386), const SCM_RIGHTS ideal-int pkg syscall (netbsd-386), const SCM_TIMESTAMP ideal-int pkg syscall (netbsd-386), const SIGCHLD Signal pkg syscall (netbsd-386), const SIGCONT Signal pkg syscall (netbsd-386), const SIGEMT Signal pkg syscall (netbsd-386), const SIGINFO Signal pkg syscall (netbsd-386), const SIGIO Signal pkg syscall (netbsd-386), const SIGIOT Signal pkg syscall (netbsd-386), const SIGPROF Signal pkg syscall (netbsd-386), const SIGPWR Signal pkg syscall (netbsd-386), const SIGSTOP Signal pkg syscall (netbsd-386), const SIGSYS Signal pkg syscall (netbsd-386), const SIGTSTP Signal pkg syscall (netbsd-386), const SIGTTIN Signal pkg syscall (netbsd-386), const SIGTTOU Signal pkg syscall (netbsd-386), const SIGURG Signal pkg syscall (netbsd-386), const SIGUSR1 Signal pkg syscall (netbsd-386), const SIGUSR2 Signal pkg syscall (netbsd-386), const SIGVTALRM Signal pkg syscall (netbsd-386), const SIGWINCH Signal pkg syscall (netbsd-386), const SIGXCPU Signal pkg syscall (netbsd-386), const SIGXFSZ Signal pkg syscall (netbsd-386), const SIOCADDMULTI ideal-int pkg syscall (netbsd-386), const SIOCADDRT ideal-int pkg syscall (netbsd-386), const SIOCAIFADDR ideal-int pkg syscall (netbsd-386), const SIOCALIFADDR ideal-int pkg syscall (netbsd-386), const SIOCATMARK ideal-int pkg syscall (netbsd-386), const SIOCDELMULTI ideal-int pkg syscall (netbsd-386), const SIOCDELRT ideal-int pkg syscall (netbsd-386), const SIOCDIFADDR ideal-int pkg syscall (netbsd-386), const SIOCDIFPHYADDR ideal-int pkg syscall (netbsd-386), const SIOCDLIFADDR ideal-int pkg syscall (netbsd-386), const SIOCGDRVSPEC ideal-int pkg syscall (netbsd-386), const SIOCGETPFSYNC ideal-int pkg syscall (netbsd-386), const SIOCGETSGCNT ideal-int pkg syscall (netbsd-386), const SIOCGETVIFCNT ideal-int pkg syscall (netbsd-386), const SIOCGHIWAT ideal-int pkg syscall (netbsd-386), const SIOCGIFADDR ideal-int pkg syscall (netbsd-386), const SIOCGIFADDRPREF ideal-int pkg syscall (netbsd-386), const SIOCGIFALIAS ideal-int pkg syscall (netbsd-386), const SIOCGIFBRDADDR ideal-int pkg syscall (netbsd-386), const SIOCGIFCAP ideal-int pkg syscall (netbsd-386), const SIOCGIFCONF ideal-int pkg syscall (netbsd-386), const SIOCGIFDATA ideal-int pkg syscall (netbsd-386), const SIOCGIFDLT ideal-int pkg syscall (netbsd-386), const SIOCGIFDSTADDR ideal-int pkg syscall (netbsd-386), const SIOCGIFFLAGS ideal-int pkg syscall (netbsd-386), const SIOCGIFGENERIC ideal-int pkg syscall (netbsd-386), const SIOCGIFMEDIA ideal-int pkg syscall (netbsd-386), const SIOCGIFMETRIC ideal-int pkg syscall (netbsd-386), const SIOCGIFMTU ideal-int pkg syscall (netbsd-386), const SIOCGIFNETMASK ideal-int pkg syscall (netbsd-386), const SIOCGIFPDSTADDR ideal-int pkg syscall (netbsd-386), const SIOCGIFPSRCADDR ideal-int pkg syscall (netbsd-386), const SIOCGLIFADDR ideal-int pkg syscall (netbsd-386), const SIOCGLIFPHYADDR ideal-int pkg syscall (netbsd-386), const SIOCGLINKSTR ideal-int pkg syscall (netbsd-386), const SIOCGLOWAT ideal-int pkg syscall (netbsd-386), const SIOCGPGRP ideal-int pkg syscall (netbsd-386), const SIOCGVH ideal-int pkg syscall (netbsd-386), const SIOCIFCREATE ideal-int pkg syscall (netbsd-386), const SIOCIFDESTROY ideal-int pkg syscall (netbsd-386), const SIOCIFGCLONERS ideal-int pkg syscall (netbsd-386), const SIOCINITIFADDR ideal-int pkg syscall (netbsd-386), const SIOCSDRVSPEC ideal-int pkg syscall (netbsd-386), const SIOCSETPFSYNC ideal-int pkg syscall (netbsd-386), const SIOCSHIWAT ideal-int pkg syscall (netbsd-386), const SIOCSIFADDR ideal-int pkg syscall (netbsd-386), const SIOCSIFADDRPREF ideal-int pkg syscall (netbsd-386), const SIOCSIFBRDADDR ideal-int pkg syscall (netbsd-386), const SIOCSIFCAP ideal-int pkg syscall (netbsd-386), const SIOCSIFDSTADDR ideal-int pkg syscall (netbsd-386), const SIOCSIFFLAGS ideal-int pkg syscall (netbsd-386), const SIOCSIFGENERIC ideal-int pkg syscall (netbsd-386), const SIOCSIFMEDIA ideal-int pkg syscall (netbsd-386), const SIOCSIFMETRIC ideal-int pkg syscall (netbsd-386), const SIOCSIFMTU ideal-int pkg syscall (netbsd-386), const SIOCSIFNETMASK ideal-int pkg syscall (netbsd-386), const SIOCSIFPHYADDR ideal-int pkg syscall (netbsd-386), const SIOCSLIFPHYADDR ideal-int pkg syscall (netbsd-386), const SIOCSLINKSTR ideal-int pkg syscall (netbsd-386), const SIOCSLOWAT ideal-int pkg syscall (netbsd-386), const SIOCSPGRP ideal-int pkg syscall (netbsd-386), const SIOCSVH ideal-int pkg syscall (netbsd-386), const SIOCZIFDATA ideal-int pkg syscall (netbsd-386), const SOCK_CLOEXEC ideal-int pkg syscall (netbsd-386), const SOCK_FLAGS_MASK ideal-int pkg syscall (netbsd-386), const SOCK_NONBLOCK ideal-int pkg syscall (netbsd-386), const SOCK_NOSIGPIPE ideal-int pkg syscall (netbsd-386), const SOCK_RDM ideal-int pkg syscall (netbsd-386), const SO_ACCEPTCONN ideal-int pkg syscall (netbsd-386), const SO_ACCEPTFILTER ideal-int pkg syscall (netbsd-386), const SO_DEBUG ideal-int pkg syscall (netbsd-386), const SO_ERROR ideal-int pkg syscall (netbsd-386), const SO_NOHEADER ideal-int pkg syscall (netbsd-386), const SO_NOSIGPIPE ideal-int pkg syscall (netbsd-386), const SO_OOBINLINE ideal-int pkg syscall (netbsd-386), const SO_OVERFLOWED ideal-int pkg syscall (netbsd-386), const SO_RCVLOWAT ideal-int pkg syscall (netbsd-386), const SO_RCVTIMEO ideal-int pkg syscall (netbsd-386), const SO_REUSEPORT ideal-int pkg syscall (netbsd-386), const SO_SNDLOWAT ideal-int pkg syscall (netbsd-386), const SO_SNDTIMEO ideal-int pkg syscall (netbsd-386), const SO_TIMESTAMP ideal-int pkg syscall (netbsd-386), const SO_TYPE ideal-int pkg syscall (netbsd-386), const SO_USELOOPBACK ideal-int pkg syscall (netbsd-386), const SYSCTL_VERSION ideal-int pkg syscall (netbsd-386), const SYSCTL_VERS_0 ideal-int pkg syscall (netbsd-386), const SYSCTL_VERS_1 ideal-int pkg syscall (netbsd-386), const SYSCTL_VERS_MASK ideal-int pkg syscall (netbsd-386), const SYS_ACCEPT ideal-int pkg syscall (netbsd-386), const SYS_ACCESS ideal-int pkg syscall (netbsd-386), const SYS_ACCT ideal-int pkg syscall (netbsd-386), const SYS_ADJTIME ideal-int pkg syscall (netbsd-386), const SYS_BIND ideal-int pkg syscall (netbsd-386), const SYS_BREAK ideal-int pkg syscall (netbsd-386), const SYS_CHDIR ideal-int pkg syscall (netbsd-386), const SYS_CHFLAGS ideal-int pkg syscall (netbsd-386), const SYS_CHMOD ideal-int pkg syscall (netbsd-386), const SYS_CHOWN ideal-int pkg syscall (netbsd-386), const SYS_CHROOT ideal-int pkg syscall (netbsd-386), const SYS_CLOCK_GETRES ideal-int pkg syscall (netbsd-386), const SYS_CLOCK_GETTIME ideal-int pkg syscall (netbsd-386), const SYS_CLOCK_SETTIME ideal-int pkg syscall (netbsd-386), const SYS_CLOSE ideal-int pkg syscall (netbsd-386), const SYS_CONNECT ideal-int pkg syscall (netbsd-386), const SYS_DUP ideal-int pkg syscall (netbsd-386), const SYS_DUP2 ideal-int pkg syscall (netbsd-386), const SYS_DUP3 ideal-int pkg syscall (netbsd-386), const SYS_EXECVE ideal-int pkg syscall (netbsd-386), const SYS_EXIT ideal-int pkg syscall (netbsd-386), const SYS_EXTATTRCTL ideal-int pkg syscall (netbsd-386), const SYS_EXTATTR_DELETE_FD ideal-int pkg syscall (netbsd-386), const SYS_EXTATTR_DELETE_FILE ideal-int pkg syscall (netbsd-386), const SYS_EXTATTR_DELETE_LINK ideal-int pkg syscall (netbsd-386), const SYS_EXTATTR_GET_FD ideal-int pkg syscall (netbsd-386), const SYS_EXTATTR_GET_FILE ideal-int pkg syscall (netbsd-386), const SYS_EXTATTR_GET_LINK ideal-int pkg syscall (netbsd-386), const SYS_EXTATTR_LIST_FD ideal-int pkg syscall (netbsd-386), const SYS_EXTATTR_LIST_FILE ideal-int pkg syscall (netbsd-386), const SYS_EXTATTR_LIST_LINK ideal-int pkg syscall (netbsd-386), const SYS_EXTATTR_SET_FD ideal-int pkg syscall (netbsd-386), const SYS_EXTATTR_SET_FILE ideal-int pkg syscall (netbsd-386), const SYS_EXTATTR_SET_LINK ideal-int pkg syscall (netbsd-386), const SYS_FACCESSAT ideal-int pkg syscall (netbsd-386), const SYS_FCHDIR ideal-int pkg syscall (netbsd-386), const SYS_FCHFLAGS ideal-int pkg syscall (netbsd-386), const SYS_FCHMOD ideal-int pkg syscall (netbsd-386), const SYS_FCHMODAT ideal-int pkg syscall (netbsd-386), const SYS_FCHOWN ideal-int pkg syscall (netbsd-386), const SYS_FCHOWNAT ideal-int pkg syscall (netbsd-386), const SYS_FCHROOT ideal-int pkg syscall (netbsd-386), const SYS_FCNTL ideal-int pkg syscall (netbsd-386), const SYS_FDATASYNC ideal-int pkg syscall (netbsd-386), const SYS_FEXECVE ideal-int pkg syscall (netbsd-386), const SYS_FGETXATTR ideal-int pkg syscall (netbsd-386), const SYS_FHSTAT ideal-int pkg syscall (netbsd-386), const SYS_FKTRACE ideal-int pkg syscall (netbsd-386), const SYS_FLISTXATTR ideal-int pkg syscall (netbsd-386), const SYS_FLOCK ideal-int pkg syscall (netbsd-386), const SYS_FORK ideal-int pkg syscall (netbsd-386), const SYS_FPATHCONF ideal-int pkg syscall (netbsd-386), const SYS_FREMOVEXATTR ideal-int pkg syscall (netbsd-386), const SYS_FSETXATTR ideal-int pkg syscall (netbsd-386), const SYS_FSTAT ideal-int pkg syscall (netbsd-386), const SYS_FSTATAT ideal-int pkg syscall (netbsd-386), const SYS_FSTATVFS1 ideal-int pkg syscall (netbsd-386), const SYS_FSYNC ideal-int pkg syscall (netbsd-386), const SYS_FSYNC_RANGE ideal-int pkg syscall (netbsd-386), const SYS_FTRUNCATE ideal-int pkg syscall (netbsd-386), const SYS_FUTIMENS ideal-int pkg syscall (netbsd-386), const SYS_FUTIMES ideal-int pkg syscall (netbsd-386), const SYS_GETCONTEXT ideal-int pkg syscall (netbsd-386), const SYS_GETDENTS ideal-int pkg syscall (netbsd-386), const SYS_GETEGID ideal-int pkg syscall (netbsd-386), const SYS_GETEUID ideal-int pkg syscall (netbsd-386), const SYS_GETFH ideal-int pkg syscall (netbsd-386), const SYS_GETGID ideal-int pkg syscall (netbsd-386), const SYS_GETGROUPS ideal-int pkg syscall (netbsd-386), const SYS_GETITIMER ideal-int pkg syscall (netbsd-386), const SYS_GETPEERNAME ideal-int pkg syscall (netbsd-386), const SYS_GETPGID ideal-int pkg syscall (netbsd-386), const SYS_GETPGRP ideal-int pkg syscall (netbsd-386), const SYS_GETPID ideal-int pkg syscall (netbsd-386), const SYS_GETPPID ideal-int pkg syscall (netbsd-386), const SYS_GETPRIORITY ideal-int pkg syscall (netbsd-386), const SYS_GETRLIMIT ideal-int pkg syscall (netbsd-386), const SYS_GETRUSAGE ideal-int pkg syscall (netbsd-386), const SYS_GETSID ideal-int pkg syscall (netbsd-386), const SYS_GETSOCKNAME ideal-int pkg syscall (netbsd-386), const SYS_GETSOCKOPT ideal-int pkg syscall (netbsd-386), const SYS_GETTIMEOFDAY ideal-int pkg syscall (netbsd-386), const SYS_GETUID ideal-int pkg syscall (netbsd-386), const SYS_GETVFSSTAT ideal-int pkg syscall (netbsd-386), const SYS_GETXATTR ideal-int pkg syscall (netbsd-386), const SYS_IOCTL ideal-int pkg syscall (netbsd-386), const SYS_ISSETUGID ideal-int pkg syscall (netbsd-386), const SYS_KEVENT ideal-int pkg syscall (netbsd-386), const SYS_KILL ideal-int pkg syscall (netbsd-386), const SYS_KQUEUE ideal-int pkg syscall (netbsd-386), const SYS_KQUEUE1 ideal-int pkg syscall (netbsd-386), const SYS_KTRACE ideal-int pkg syscall (netbsd-386), const SYS_LCHFLAGS ideal-int pkg syscall (netbsd-386), const SYS_LCHMOD ideal-int pkg syscall (netbsd-386), const SYS_LCHOWN ideal-int pkg syscall (netbsd-386), const SYS_LGETXATTR ideal-int pkg syscall (netbsd-386), const SYS_LINK ideal-int pkg syscall (netbsd-386), const SYS_LINKAT ideal-int pkg syscall (netbsd-386), const SYS_LISTEN ideal-int pkg syscall (netbsd-386), const SYS_LISTXATTR ideal-int pkg syscall (netbsd-386), const SYS_LLISTXATTR ideal-int pkg syscall (netbsd-386), const SYS_LREMOVEXATTR ideal-int pkg syscall (netbsd-386), const SYS_LSEEK ideal-int pkg syscall (netbsd-386), const SYS_LSETXATTR ideal-int pkg syscall (netbsd-386), const SYS_LSTAT ideal-int pkg syscall (netbsd-386), const SYS_LUTIMES ideal-int pkg syscall (netbsd-386), const SYS_MADVISE ideal-int pkg syscall (netbsd-386), const SYS_MINCORE ideal-int pkg syscall (netbsd-386), const SYS_MINHERIT ideal-int pkg syscall (netbsd-386), const SYS_MKDIR ideal-int pkg syscall (netbsd-386), const SYS_MKDIRAT ideal-int pkg syscall (netbsd-386), const SYS_MKFIFO ideal-int pkg syscall (netbsd-386), const SYS_MKFIFOAT ideal-int pkg syscall (netbsd-386), const SYS_MKNOD ideal-int pkg syscall (netbsd-386), const SYS_MKNODAT ideal-int pkg syscall (netbsd-386), const SYS_MLOCK ideal-int pkg syscall (netbsd-386), const SYS_MLOCKALL ideal-int pkg syscall (netbsd-386), const SYS_MMAP ideal-int pkg syscall (netbsd-386), const SYS_MODCTL ideal-int pkg syscall (netbsd-386), const SYS_MOUNT ideal-int pkg syscall (netbsd-386), const SYS_MPROTECT ideal-int pkg syscall (netbsd-386), const SYS_MREMAP ideal-int pkg syscall (netbsd-386), const SYS_MSGCTL ideal-int pkg syscall (netbsd-386), const SYS_MSGGET ideal-int pkg syscall (netbsd-386), const SYS_MSGRCV ideal-int pkg syscall (netbsd-386), const SYS_MSGSND ideal-int pkg syscall (netbsd-386), const SYS_MUNLOCK ideal-int pkg syscall (netbsd-386), const SYS_MUNLOCKALL ideal-int pkg syscall (netbsd-386), const SYS_MUNMAP ideal-int pkg syscall (netbsd-386), const SYS_NANOSLEEP ideal-int pkg syscall (netbsd-386), const SYS_NTP_ADJTIME ideal-int pkg syscall (netbsd-386), const SYS_NTP_GETTIME ideal-int pkg syscall (netbsd-386), const SYS_OPEN ideal-int pkg syscall (netbsd-386), const SYS_OPENAT ideal-int pkg syscall (netbsd-386), const SYS_PACCEPT ideal-int pkg syscall (netbsd-386), const SYS_PATHCONF ideal-int pkg syscall (netbsd-386), const SYS_PIPE ideal-int pkg syscall (netbsd-386), const SYS_PIPE2 ideal-int pkg syscall (netbsd-386), const SYS_PMC_CONTROL ideal-int pkg syscall (netbsd-386), const SYS_PMC_GET_INFO ideal-int pkg syscall (netbsd-386), const SYS_POLL ideal-int pkg syscall (netbsd-386), const SYS_POLLTS ideal-int pkg syscall (netbsd-386), const SYS_POSIX_FADVISE ideal-int pkg syscall (netbsd-386), const SYS_POSIX_SPAWN ideal-int pkg syscall (netbsd-386), const SYS_PREAD ideal-int pkg syscall (netbsd-386), const SYS_PREADV ideal-int pkg syscall (netbsd-386), const SYS_PROFIL ideal-int pkg syscall (netbsd-386), const SYS_PSELECT ideal-int pkg syscall (netbsd-386), const SYS_PSET_ASSIGN ideal-int pkg syscall (netbsd-386), const SYS_PSET_CREATE ideal-int pkg syscall (netbsd-386), const SYS_PSET_DESTROY ideal-int pkg syscall (netbsd-386), const SYS_PTRACE ideal-int pkg syscall (netbsd-386), const SYS_PWRITE ideal-int pkg syscall (netbsd-386), const SYS_PWRITEV ideal-int pkg syscall (netbsd-386), const SYS_RASCTL ideal-int pkg syscall (netbsd-386), const SYS_READ ideal-int pkg syscall (netbsd-386), const SYS_READLINK ideal-int pkg syscall (netbsd-386), const SYS_READLINKAT ideal-int pkg syscall (netbsd-386), const SYS_READV ideal-int pkg syscall (netbsd-386), const SYS_REBOOT ideal-int pkg syscall (netbsd-386), const SYS_RECVFROM ideal-int pkg syscall (netbsd-386), const SYS_RECVMMSG ideal-int pkg syscall (netbsd-386), const SYS_RECVMSG ideal-int pkg syscall (netbsd-386), const SYS_REMOVEXATTR ideal-int pkg syscall (netbsd-386), const SYS_RENAME ideal-int pkg syscall (netbsd-386), const SYS_RENAMEAT ideal-int pkg syscall (netbsd-386), const SYS_REVOKE ideal-int pkg syscall (netbsd-386), const SYS_RMDIR ideal-int pkg syscall (netbsd-386), const SYS_SBRK ideal-int pkg syscall (netbsd-386), const SYS_SCHED_YIELD ideal-int pkg syscall (netbsd-386), const SYS_SELECT ideal-int pkg syscall (netbsd-386), const SYS_SEMCONFIG ideal-int pkg syscall (netbsd-386), const SYS_SEMGET ideal-int pkg syscall (netbsd-386), const SYS_SEMOP ideal-int pkg syscall (netbsd-386), const SYS_SENDMMSG ideal-int pkg syscall (netbsd-386), const SYS_SENDMSG ideal-int pkg syscall (netbsd-386), const SYS_SENDTO ideal-int pkg syscall (netbsd-386), const SYS_SETCONTEXT ideal-int pkg syscall (netbsd-386), const SYS_SETEGID ideal-int pkg syscall (netbsd-386), const SYS_SETEUID ideal-int pkg syscall (netbsd-386), const SYS_SETGID ideal-int pkg syscall (netbsd-386), const SYS_SETGROUPS ideal-int pkg syscall (netbsd-386), const SYS_SETITIMER ideal-int pkg syscall (netbsd-386), const SYS_SETPGID ideal-int pkg syscall (netbsd-386), const SYS_SETPRIORITY ideal-int pkg syscall (netbsd-386), const SYS_SETREGID ideal-int pkg syscall (netbsd-386), const SYS_SETREUID ideal-int pkg syscall (netbsd-386), const SYS_SETRLIMIT ideal-int pkg syscall (netbsd-386), const SYS_SETSID ideal-int pkg syscall (netbsd-386), const SYS_SETSOCKOPT ideal-int pkg syscall (netbsd-386), const SYS_SETTIMEOFDAY ideal-int pkg syscall (netbsd-386), const SYS_SETUID ideal-int pkg syscall (netbsd-386), const SYS_SETXATTR ideal-int pkg syscall (netbsd-386), const SYS_SHMAT ideal-int pkg syscall (netbsd-386), const SYS_SHMCTL ideal-int pkg syscall (netbsd-386), const SYS_SHMDT ideal-int pkg syscall (netbsd-386), const SYS_SHMGET ideal-int pkg syscall (netbsd-386), const SYS_SHUTDOWN ideal-int pkg syscall (netbsd-386), const SYS_SIGQUEUEINFO ideal-int pkg syscall (netbsd-386), const SYS_SOCKET ideal-int pkg syscall (netbsd-386), const SYS_SOCKETPAIR ideal-int pkg syscall (netbsd-386), const SYS_SSTK ideal-int pkg syscall (netbsd-386), const SYS_STAT ideal-int pkg syscall (netbsd-386), const SYS_STATVFS1 ideal-int pkg syscall (netbsd-386), const SYS_SWAPCTL ideal-int pkg syscall (netbsd-386), const SYS_SYMLINK ideal-int pkg syscall (netbsd-386), const SYS_SYMLINKAT ideal-int pkg syscall (netbsd-386), const SYS_SYNC ideal-int pkg syscall (netbsd-386), const SYS_SYSARCH ideal-int pkg syscall (netbsd-386), const SYS_TIMER_CREATE ideal-int pkg syscall (netbsd-386), const SYS_TIMER_DELETE ideal-int pkg syscall (netbsd-386), const SYS_TIMER_GETOVERRUN ideal-int pkg syscall (netbsd-386), const SYS_TIMER_GETTIME ideal-int pkg syscall (netbsd-386), const SYS_TIMER_SETTIME ideal-int pkg syscall (netbsd-386), const SYS_TRUNCATE ideal-int pkg syscall (netbsd-386), const SYS_UMASK ideal-int pkg syscall (netbsd-386), const SYS_UNDELETE ideal-int pkg syscall (netbsd-386), const SYS_UNLINK ideal-int pkg syscall (netbsd-386), const SYS_UNLINKAT ideal-int pkg syscall (netbsd-386), const SYS_UNMOUNT ideal-int pkg syscall (netbsd-386), const SYS_UTIMENSAT ideal-int pkg syscall (netbsd-386), const SYS_UTIMES ideal-int pkg syscall (netbsd-386), const SYS_UTRACE ideal-int pkg syscall (netbsd-386), const SYS_UUIDGEN ideal-int pkg syscall (netbsd-386), const SYS_VADVISE ideal-int pkg syscall (netbsd-386), const SYS_VFORK ideal-int pkg syscall (netbsd-386), const SYS_WAIT4 ideal-int pkg syscall (netbsd-386), const SYS_WRITE ideal-int pkg syscall (netbsd-386), const SYS_WRITEV ideal-int pkg syscall (netbsd-386), const SYS__LWP_CONTINUE ideal-int pkg syscall (netbsd-386), const SYS__LWP_CREATE ideal-int pkg syscall (netbsd-386), const SYS__LWP_CTL ideal-int pkg syscall (netbsd-386), const SYS__LWP_DETACH ideal-int pkg syscall (netbsd-386), const SYS__LWP_EXIT ideal-int pkg syscall (netbsd-386), const SYS__LWP_GETNAME ideal-int pkg syscall (netbsd-386), const SYS__LWP_GETPRIVATE ideal-int pkg syscall (netbsd-386), const SYS__LWP_KILL ideal-int pkg syscall (netbsd-386), const SYS__LWP_PARK ideal-int pkg syscall (netbsd-386), const SYS__LWP_SELF ideal-int pkg syscall (netbsd-386), const SYS__LWP_SETNAME ideal-int pkg syscall (netbsd-386), const SYS__LWP_SETPRIVATE ideal-int pkg syscall (netbsd-386), const SYS__LWP_SUSPEND ideal-int pkg syscall (netbsd-386), const SYS__LWP_UNPARK ideal-int pkg syscall (netbsd-386), const SYS__LWP_UNPARK_ALL ideal-int pkg syscall (netbsd-386), const SYS__LWP_WAIT ideal-int pkg syscall (netbsd-386), const SYS__LWP_WAKEUP ideal-int pkg syscall (netbsd-386), const SYS__PSET_BIND ideal-int pkg syscall (netbsd-386), const SYS__SCHED_GETAFFINITY ideal-int pkg syscall (netbsd-386), const SYS__SCHED_GETPARAM ideal-int pkg syscall (netbsd-386), const SYS__SCHED_SETAFFINITY ideal-int pkg syscall (netbsd-386), const SYS__SCHED_SETPARAM ideal-int pkg syscall (netbsd-386), const SYS___CLONE ideal-int pkg syscall (netbsd-386), const SYS___GETCWD ideal-int pkg syscall (netbsd-386), const SYS___GETLOGIN ideal-int pkg syscall (netbsd-386), const SYS___POSIX_CHOWN ideal-int pkg syscall (netbsd-386), const SYS___POSIX_FCHOWN ideal-int pkg syscall (netbsd-386), const SYS___POSIX_LCHOWN ideal-int pkg syscall (netbsd-386), const SYS___POSIX_RENAME ideal-int pkg syscall (netbsd-386), const SYS___QUOTACTL ideal-int pkg syscall (netbsd-386), const SYS___SEMCTL ideal-int pkg syscall (netbsd-386), const SYS___SETLOGIN ideal-int pkg syscall (netbsd-386), const SYS___SIGACTION_SIGTRAMP ideal-int pkg syscall (netbsd-386), const SYS___SIGTIMEDWAIT ideal-int pkg syscall (netbsd-386), const SYS___SYSCTL ideal-int pkg syscall (netbsd-386), const S_ARCH1 ideal-int pkg syscall (netbsd-386), const S_ARCH2 ideal-int pkg syscall (netbsd-386), const S_BLKSIZE ideal-int pkg syscall (netbsd-386), const S_IEXEC ideal-int pkg syscall (netbsd-386), const S_IFWHT ideal-int pkg syscall (netbsd-386), const S_IREAD ideal-int pkg syscall (netbsd-386), const S_IRGRP ideal-int pkg syscall (netbsd-386), const S_IROTH ideal-int pkg syscall (netbsd-386), const S_IRWXG ideal-int pkg syscall (netbsd-386), const S_IRWXO ideal-int pkg syscall (netbsd-386), const S_IRWXU ideal-int pkg syscall (netbsd-386), const S_ISTXT ideal-int pkg syscall (netbsd-386), const S_IWGRP ideal-int pkg syscall (netbsd-386), const S_IWOTH ideal-int pkg syscall (netbsd-386), const S_IWRITE ideal-int pkg syscall (netbsd-386), const S_IXGRP ideal-int pkg syscall (netbsd-386), const S_IXOTH ideal-int pkg syscall (netbsd-386), const S_LOGIN_SET ideal-int pkg syscall (netbsd-386), const SizeofBpfHdr ideal-int pkg syscall (netbsd-386), const SizeofBpfInsn ideal-int pkg syscall (netbsd-386), const SizeofBpfProgram ideal-int pkg syscall (netbsd-386), const SizeofBpfStat ideal-int pkg syscall (netbsd-386), const SizeofBpfVersion ideal-int pkg syscall (netbsd-386), const SizeofCmsghdr ideal-int pkg syscall (netbsd-386), const SizeofICMPv6Filter = 32 pkg syscall (netbsd-386), const SizeofICMPv6Filter ideal-int pkg syscall (netbsd-386), const SizeofIPMreq ideal-int pkg syscall (netbsd-386), const SizeofIPv6MTUInfo = 32 pkg syscall (netbsd-386), const SizeofIPv6MTUInfo ideal-int pkg syscall (netbsd-386), const SizeofIPv6Mreq ideal-int pkg syscall (netbsd-386), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (netbsd-386), const SizeofIfData ideal-int pkg syscall (netbsd-386), const SizeofIfMsghdr ideal-int pkg syscall (netbsd-386), const SizeofIfaMsghdr ideal-int pkg syscall (netbsd-386), const SizeofInet6Pktinfo ideal-int pkg syscall (netbsd-386), const SizeofLinger ideal-int pkg syscall (netbsd-386), const SizeofMsghdr ideal-int pkg syscall (netbsd-386), const SizeofRtMetrics ideal-int pkg syscall (netbsd-386), const SizeofRtMsghdr ideal-int pkg syscall (netbsd-386), const SizeofSockaddrAny ideal-int pkg syscall (netbsd-386), const SizeofSockaddrDatalink ideal-int pkg syscall (netbsd-386), const SizeofSockaddrInet4 ideal-int pkg syscall (netbsd-386), const SizeofSockaddrInet6 ideal-int pkg syscall (netbsd-386), const SizeofSockaddrUnix ideal-int pkg syscall (netbsd-386), const TCIFLUSH ideal-int pkg syscall (netbsd-386), const TCIOFLUSH ideal-int pkg syscall (netbsd-386), const TCOFLUSH ideal-int pkg syscall (netbsd-386), const TCP_CONGCTL ideal-int pkg syscall (netbsd-386), const TCP_KEEPCNT ideal-int pkg syscall (netbsd-386), const TCP_KEEPIDLE ideal-int pkg syscall (netbsd-386), const TCP_KEEPINIT ideal-int pkg syscall (netbsd-386), const TCP_KEEPINTVL ideal-int pkg syscall (netbsd-386), const TCP_MAXBURST ideal-int pkg syscall (netbsd-386), const TCP_MAXSEG ideal-int pkg syscall (netbsd-386), const TCP_MAXWIN ideal-int pkg syscall (netbsd-386), const TCP_MAX_WINSHIFT ideal-int pkg syscall (netbsd-386), const TCP_MD5SIG ideal-int pkg syscall (netbsd-386), const TCP_MINMSS ideal-int pkg syscall (netbsd-386), const TCP_MSS ideal-int pkg syscall (netbsd-386), const TCSAFLUSH ideal-int pkg syscall (netbsd-386), const TIOCCBRK ideal-int pkg syscall (netbsd-386), const TIOCCDTR ideal-int pkg syscall (netbsd-386), const TIOCCONS ideal-int pkg syscall (netbsd-386), const TIOCDCDTIMESTAMP ideal-int pkg syscall (netbsd-386), const TIOCDRAIN ideal-int pkg syscall (netbsd-386), const TIOCEXCL ideal-int pkg syscall (netbsd-386), const TIOCEXT ideal-int pkg syscall (netbsd-386), const TIOCFLAG_CDTRCTS ideal-int pkg syscall (netbsd-386), const TIOCFLAG_CLOCAL ideal-int pkg syscall (netbsd-386), const TIOCFLAG_CRTSCTS ideal-int pkg syscall (netbsd-386), const TIOCFLAG_MDMBUF ideal-int pkg syscall (netbsd-386), const TIOCFLAG_SOFTCAR ideal-int pkg syscall (netbsd-386), const TIOCFLUSH ideal-int pkg syscall (netbsd-386), const TIOCGETA ideal-int pkg syscall (netbsd-386), const TIOCGETD ideal-int pkg syscall (netbsd-386), const TIOCGFLAGS ideal-int pkg syscall (netbsd-386), const TIOCGLINED ideal-int pkg syscall (netbsd-386), const TIOCGPGRP ideal-int pkg syscall (netbsd-386), const TIOCGQSIZE ideal-int pkg syscall (netbsd-386), const TIOCGRANTPT ideal-int pkg syscall (netbsd-386), const TIOCGSID ideal-int pkg syscall (netbsd-386), const TIOCGSIZE ideal-int pkg syscall (netbsd-386), const TIOCGWINSZ ideal-int pkg syscall (netbsd-386), const TIOCMBIC ideal-int pkg syscall (netbsd-386), const TIOCMBIS ideal-int pkg syscall (netbsd-386), const TIOCMGET ideal-int pkg syscall (netbsd-386), const TIOCMSET ideal-int pkg syscall (netbsd-386), const TIOCM_CAR ideal-int pkg syscall (netbsd-386), const TIOCM_CD ideal-int pkg syscall (netbsd-386), const TIOCM_CTS ideal-int pkg syscall (netbsd-386), const TIOCM_DSR ideal-int pkg syscall (netbsd-386), const TIOCM_DTR ideal-int pkg syscall (netbsd-386), const TIOCM_LE ideal-int pkg syscall (netbsd-386), const TIOCM_RI ideal-int pkg syscall (netbsd-386), const TIOCM_RNG ideal-int pkg syscall (netbsd-386), const TIOCM_RTS ideal-int pkg syscall (netbsd-386), const TIOCM_SR ideal-int pkg syscall (netbsd-386), const TIOCM_ST ideal-int pkg syscall (netbsd-386), const TIOCNOTTY ideal-int pkg syscall (netbsd-386), const TIOCNXCL ideal-int pkg syscall (netbsd-386), const TIOCOUTQ ideal-int pkg syscall (netbsd-386), const TIOCPKT ideal-int pkg syscall (netbsd-386), const TIOCPKT_DATA ideal-int pkg syscall (netbsd-386), const TIOCPKT_DOSTOP ideal-int pkg syscall (netbsd-386), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (netbsd-386), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (netbsd-386), const TIOCPKT_IOCTL ideal-int pkg syscall (netbsd-386), const TIOCPKT_NOSTOP ideal-int pkg syscall (netbsd-386), const TIOCPKT_START ideal-int pkg syscall (netbsd-386), const TIOCPKT_STOP ideal-int pkg syscall (netbsd-386), const TIOCPTMGET ideal-int pkg syscall (netbsd-386), const TIOCPTSNAME ideal-int pkg syscall (netbsd-386), const TIOCRCVFRAME ideal-int pkg syscall (netbsd-386), const TIOCREMOTE ideal-int pkg syscall (netbsd-386), const TIOCSBRK ideal-int pkg syscall (netbsd-386), const TIOCSCTTY ideal-int pkg syscall (netbsd-386), const TIOCSDTR ideal-int pkg syscall (netbsd-386), const TIOCSETA ideal-int pkg syscall (netbsd-386), const TIOCSETAF ideal-int pkg syscall (netbsd-386), const TIOCSETAW ideal-int pkg syscall (netbsd-386), const TIOCSETD ideal-int pkg syscall (netbsd-386), const TIOCSFLAGS ideal-int pkg syscall (netbsd-386), const TIOCSIG ideal-int pkg syscall (netbsd-386), const TIOCSLINED ideal-int pkg syscall (netbsd-386), const TIOCSPGRP ideal-int pkg syscall (netbsd-386), const TIOCSQSIZE ideal-int pkg syscall (netbsd-386), const TIOCSSIZE ideal-int pkg syscall (netbsd-386), const TIOCSTART ideal-int pkg syscall (netbsd-386), const TIOCSTAT ideal-int pkg syscall (netbsd-386), const TIOCSTI ideal-int pkg syscall (netbsd-386), const TIOCSTOP ideal-int pkg syscall (netbsd-386), const TIOCSWINSZ ideal-int pkg syscall (netbsd-386), const TIOCUCNTL ideal-int pkg syscall (netbsd-386), const TIOCXMTFRAME ideal-int pkg syscall (netbsd-386), const TOSTOP ideal-int pkg syscall (netbsd-386), const VDISCARD ideal-int pkg syscall (netbsd-386), const VDSUSP ideal-int pkg syscall (netbsd-386), const VEOF ideal-int pkg syscall (netbsd-386), const VEOL ideal-int pkg syscall (netbsd-386), const VEOL2 ideal-int pkg syscall (netbsd-386), const VERASE ideal-int pkg syscall (netbsd-386), const VINTR ideal-int pkg syscall (netbsd-386), const VKILL ideal-int pkg syscall (netbsd-386), const VLNEXT ideal-int pkg syscall (netbsd-386), const VMIN ideal-int pkg syscall (netbsd-386), const VQUIT ideal-int pkg syscall (netbsd-386), const VREPRINT ideal-int pkg syscall (netbsd-386), const VSTART ideal-int pkg syscall (netbsd-386), const VSTATUS ideal-int pkg syscall (netbsd-386), const VSTOP ideal-int pkg syscall (netbsd-386), const VSUSP ideal-int pkg syscall (netbsd-386), const VTIME ideal-int pkg syscall (netbsd-386), const VWERASE ideal-int pkg syscall (netbsd-386), const WALL ideal-int pkg syscall (netbsd-386), const WALLSIG ideal-int pkg syscall (netbsd-386), const WALTSIG ideal-int pkg syscall (netbsd-386), const WCLONE ideal-int pkg syscall (netbsd-386), const WCOREFLAG ideal-int pkg syscall (netbsd-386), const WNOHANG ideal-int pkg syscall (netbsd-386), const WNOWAIT ideal-int pkg syscall (netbsd-386), const WNOZOMBIE ideal-int pkg syscall (netbsd-386), const WOPTSCHECKED ideal-int pkg syscall (netbsd-386), const WSTOPPED ideal-int pkg syscall (netbsd-386), const WUNTRACED ideal-int pkg syscall (netbsd-386), func Accept(int) (int, Sockaddr, error) pkg syscall (netbsd-386), func Access(string, uint32) error pkg syscall (netbsd-386), func Adjtime(*Timeval, *Timeval) error pkg syscall (netbsd-386), func Bind(int, Sockaddr) error pkg syscall (netbsd-386), func BpfBuflen(int) (int, error) pkg syscall (netbsd-386), func BpfDatalink(int) (int, error) pkg syscall (netbsd-386), func BpfHeadercmpl(int) (int, error) pkg syscall (netbsd-386), func BpfInterface(int, string) (string, error) pkg syscall (netbsd-386), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (netbsd-386), func BpfStats(int) (*BpfStat, error) pkg syscall (netbsd-386), func BpfStmt(int, int) *BpfInsn pkg syscall (netbsd-386), func BpfTimeout(int) (*Timeval, error) pkg syscall (netbsd-386), func CheckBpfVersion(int) error pkg syscall (netbsd-386), func Chflags(string, int) error pkg syscall (netbsd-386), func Chroot(string) error pkg syscall (netbsd-386), func Close(int) error pkg syscall (netbsd-386), func CloseOnExec(int) pkg syscall (netbsd-386), func CmsgLen(int) int pkg syscall (netbsd-386), func CmsgSpace(int) int pkg syscall (netbsd-386), func Connect(int, Sockaddr) error pkg syscall (netbsd-386), func Dup(int) (int, error) pkg syscall (netbsd-386), func Dup2(int, int) error pkg syscall (netbsd-386), func Fchdir(int) error pkg syscall (netbsd-386), func Fchflags(int, int) error pkg syscall (netbsd-386), func Fchmod(int, uint32) error pkg syscall (netbsd-386), func Fchown(int, int, int) error pkg syscall (netbsd-386), func Flock(int, int) error pkg syscall (netbsd-386), func FlushBpf(int) error pkg syscall (netbsd-386), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (netbsd-386), func Fpathconf(int, int) (int, error) pkg syscall (netbsd-386), func Fstat(int, *Stat_t) error pkg syscall (netbsd-386), func Fsync(int) error pkg syscall (netbsd-386), func Ftruncate(int, int64) error pkg syscall (netbsd-386), func Futimes(int, []Timeval) error pkg syscall (netbsd-386), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (netbsd-386), func Getpeername(int) (Sockaddr, error) pkg syscall (netbsd-386), func Getpgid(int) (int, error) pkg syscall (netbsd-386), func Getpgrp() int pkg syscall (netbsd-386), func Getpriority(int, int) (int, error) pkg syscall (netbsd-386), func Getrlimit(int, *Rlimit) error pkg syscall (netbsd-386), func Getrusage(int, *Rusage) error pkg syscall (netbsd-386), func Getsid(int) (int, error) pkg syscall (netbsd-386), func Getsockname(int) (Sockaddr, error) pkg syscall (netbsd-386), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (netbsd-386), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (netbsd-386), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (netbsd-386), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (netbsd-386), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (netbsd-386), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (netbsd-386), func GetsockoptInt(int, int, int) (int, error) pkg syscall (netbsd-386), func Issetugid() bool pkg syscall (netbsd-386), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (netbsd-386), func Kill(int, Signal) error pkg syscall (netbsd-386), func Kqueue() (int, error) pkg syscall (netbsd-386), func Listen(int, int) error pkg syscall (netbsd-386), func Lstat(string, *Stat_t) error pkg syscall (netbsd-386), func Mkfifo(string, uint32) error pkg syscall (netbsd-386), func Mknod(string, uint32, int) error pkg syscall (netbsd-386), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (netbsd-386), func Munmap([]uint8) error pkg syscall (netbsd-386), func Nanosleep(*Timespec, *Timespec) error pkg syscall (netbsd-386), func Open(string, int, uint32) (int, error) pkg syscall (netbsd-386), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (netbsd-386), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (netbsd-386), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (netbsd-386), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (netbsd-386), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (netbsd-386), func Pathconf(string, int) (int, error) pkg syscall (netbsd-386), func Pipe([]int) error pkg syscall (netbsd-386), func Pread(int, []uint8, int64) (int, error) pkg syscall (netbsd-386), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (netbsd-386), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-386), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-386), func Read(int, []uint8) (int, error) pkg syscall (netbsd-386), func ReadDirent(int, []uint8) (int, error) pkg syscall (netbsd-386), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (netbsd-386), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (netbsd-386), func Revoke(string) error pkg syscall (netbsd-386), func RouteRIB(int, int) ([]uint8, error) pkg syscall (netbsd-386), func Seek(int, int64, int) (int64, error) pkg syscall (netbsd-386), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (netbsd-386), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (netbsd-386), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (netbsd-386), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (netbsd-386), func SetBpf(int, []BpfInsn) error pkg syscall (netbsd-386), func SetBpfBuflen(int, int) (int, error) pkg syscall (netbsd-386), func SetBpfDatalink(int, int) (int, error) pkg syscall (netbsd-386), func SetBpfHeadercmpl(int, int) error pkg syscall (netbsd-386), func SetBpfImmediate(int, int) error pkg syscall (netbsd-386), func SetBpfInterface(int, string) error pkg syscall (netbsd-386), func SetBpfPromisc(int, int) error pkg syscall (netbsd-386), func SetBpfTimeout(int, *Timeval) error pkg syscall (netbsd-386), func SetKevent(*Kevent_t, int, int, int) pkg syscall (netbsd-386), func SetNonblock(int, bool) error pkg syscall (netbsd-386), func Setegid(int) error pkg syscall (netbsd-386), func Seteuid(int) error pkg syscall (netbsd-386), func Setgid(int) error pkg syscall (netbsd-386), func Setgroups([]int) error pkg syscall (netbsd-386), func Setpgid(int, int) error pkg syscall (netbsd-386), func Setpriority(int, int, int) error pkg syscall (netbsd-386), func Setregid(int, int) error pkg syscall (netbsd-386), func Setreuid(int, int) error pkg syscall (netbsd-386), func Setrlimit(int, *Rlimit) error pkg syscall (netbsd-386), func Setsid() (int, error) pkg syscall (netbsd-386), func SetsockoptByte(int, int, int, uint8) error pkg syscall (netbsd-386), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (netbsd-386), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (netbsd-386), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (netbsd-386), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (netbsd-386), func SetsockoptInt(int, int, int, int) error pkg syscall (netbsd-386), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (netbsd-386), func SetsockoptString(int, int, int, string) error pkg syscall (netbsd-386), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (netbsd-386), func Settimeofday(*Timeval) error pkg syscall (netbsd-386), func Setuid(int) error pkg syscall (netbsd-386), func Shutdown(int, int) error pkg syscall (netbsd-386), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (netbsd-386), func Socket(int, int, int) (int, error) pkg syscall (netbsd-386), func Socketpair(int, int, int) ([2]int, error) pkg syscall (netbsd-386), func Stat(string, *Stat_t) error pkg syscall (netbsd-386), func StringSlicePtr([]string) []*uint8 pkg syscall (netbsd-386), func Sync() error pkg syscall (netbsd-386), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-386), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-386), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-386), func Sysctl(string) (string, error) pkg syscall (netbsd-386), func SysctlUint32(string) (uint32, error) pkg syscall (netbsd-386), func TimevalToNsec(Timeval) int64 pkg syscall (netbsd-386), func Truncate(string, int64) error pkg syscall (netbsd-386), func Umask(int) int pkg syscall (netbsd-386), func UnixRights(...int) []uint8 pkg syscall (netbsd-386), func Unmount(string, int) error pkg syscall (netbsd-386), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (netbsd-386), func Write(int, []uint8) (int, error) pkg syscall (netbsd-386), method (*Cmsghdr) SetLen(int) pkg syscall (netbsd-386), method (*Iovec) SetLen(int) pkg syscall (netbsd-386), method (*Msghdr) SetControllen(int) pkg syscall (netbsd-386), type BpfHdr struct pkg syscall (netbsd-386), type BpfHdr struct, Caplen uint32 pkg syscall (netbsd-386), type BpfHdr struct, Datalen uint32 pkg syscall (netbsd-386), type BpfHdr struct, Hdrlen uint16 pkg syscall (netbsd-386), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-386), type BpfHdr struct, Tstamp BpfTimeval pkg syscall (netbsd-386), type BpfInsn struct pkg syscall (netbsd-386), type BpfInsn struct, Code uint16 pkg syscall (netbsd-386), type BpfInsn struct, Jf uint8 pkg syscall (netbsd-386), type BpfInsn struct, Jt uint8 pkg syscall (netbsd-386), type BpfInsn struct, K uint32 pkg syscall (netbsd-386), type BpfProgram struct pkg syscall (netbsd-386), type BpfProgram struct, Insns *BpfInsn pkg syscall (netbsd-386), type BpfProgram struct, Len uint32 pkg syscall (netbsd-386), type BpfStat struct pkg syscall (netbsd-386), type BpfStat struct, Capt uint64 pkg syscall (netbsd-386), type BpfStat struct, Drop uint64 pkg syscall (netbsd-386), type BpfStat struct, Padding [13]uint64 pkg syscall (netbsd-386), type BpfStat struct, Recv uint64 pkg syscall (netbsd-386), type BpfTimeval struct pkg syscall (netbsd-386), type BpfTimeval struct, Sec int32 pkg syscall (netbsd-386), type BpfTimeval struct, Usec int32 pkg syscall (netbsd-386), type BpfVersion struct pkg syscall (netbsd-386), type BpfVersion struct, Major uint16 pkg syscall (netbsd-386), type BpfVersion struct, Minor uint16 pkg syscall (netbsd-386), type Cmsghdr struct pkg syscall (netbsd-386), type Cmsghdr struct, Len uint32 pkg syscall (netbsd-386), type Cmsghdr struct, Level int32 pkg syscall (netbsd-386), type Cmsghdr struct, Type int32 pkg syscall (netbsd-386), type Credential struct pkg syscall (netbsd-386), type Credential struct, Gid uint32 pkg syscall (netbsd-386), type Credential struct, Groups []uint32 pkg syscall (netbsd-386), type Credential struct, Uid uint32 pkg syscall (netbsd-386), type Dirent struct pkg syscall (netbsd-386), type Dirent struct, Fileno uint64 pkg syscall (netbsd-386), type Dirent struct, Name [512]int8 pkg syscall (netbsd-386), type Dirent struct, Namlen uint16 pkg syscall (netbsd-386), type Dirent struct, Pad_cgo_0 [3]uint8 pkg syscall (netbsd-386), type Dirent struct, Reclen uint16 pkg syscall (netbsd-386), type Dirent struct, Type uint8 pkg syscall (netbsd-386), type FdSet struct pkg syscall (netbsd-386), type FdSet struct, Bits [8]uint32 pkg syscall (netbsd-386), type Flock_t struct pkg syscall (netbsd-386), type Flock_t struct, Len int64 pkg syscall (netbsd-386), type Flock_t struct, Pid int32 pkg syscall (netbsd-386), type Flock_t struct, Start int64 pkg syscall (netbsd-386), type Flock_t struct, Type int16 pkg syscall (netbsd-386), type Flock_t struct, Whence int16 pkg syscall (netbsd-386), type Fsid struct pkg syscall (netbsd-386), type Fsid struct, X__fsid_val [2]int32 pkg syscall (netbsd-386), type ICMPv6Filter struct pkg syscall (netbsd-386), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (netbsd-386), type IPv6MTUInfo struct pkg syscall (netbsd-386), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (netbsd-386), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (netbsd-386), type IfAnnounceMsghdr struct pkg syscall (netbsd-386), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (netbsd-386), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (netbsd-386), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (netbsd-386), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (netbsd-386), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (netbsd-386), type IfAnnounceMsghdr struct, What uint16 pkg syscall (netbsd-386), type IfData struct pkg syscall (netbsd-386), type IfData struct, Addrlen uint8 pkg syscall (netbsd-386), type IfData struct, Baudrate uint64 pkg syscall (netbsd-386), type IfData struct, Collisions uint64 pkg syscall (netbsd-386), type IfData struct, Hdrlen uint8 pkg syscall (netbsd-386), type IfData struct, Ibytes uint64 pkg syscall (netbsd-386), type IfData struct, Ierrors uint64 pkg syscall (netbsd-386), type IfData struct, Imcasts uint64 pkg syscall (netbsd-386), type IfData struct, Ipackets uint64 pkg syscall (netbsd-386), type IfData struct, Iqdrops uint64 pkg syscall (netbsd-386), type IfData struct, Lastchange Timespec pkg syscall (netbsd-386), type IfData struct, Link_state int32 pkg syscall (netbsd-386), type IfData struct, Metric uint64 pkg syscall (netbsd-386), type IfData struct, Mtu uint64 pkg syscall (netbsd-386), type IfData struct, Noproto uint64 pkg syscall (netbsd-386), type IfData struct, Obytes uint64 pkg syscall (netbsd-386), type IfData struct, Oerrors uint64 pkg syscall (netbsd-386), type IfData struct, Omcasts uint64 pkg syscall (netbsd-386), type IfData struct, Opackets uint64 pkg syscall (netbsd-386), type IfData struct, Pad_cgo_0 [1]uint8 pkg syscall (netbsd-386), type IfData struct, Type uint8 pkg syscall (netbsd-386), type IfMsghdr struct pkg syscall (netbsd-386), type IfMsghdr struct, Addrs int32 pkg syscall (netbsd-386), type IfMsghdr struct, Data IfData pkg syscall (netbsd-386), type IfMsghdr struct, Flags int32 pkg syscall (netbsd-386), type IfMsghdr struct, Index uint16 pkg syscall (netbsd-386), type IfMsghdr struct, Msglen uint16 pkg syscall (netbsd-386), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-386), type IfMsghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-386), type IfMsghdr struct, Type uint8 pkg syscall (netbsd-386), type IfMsghdr struct, Version uint8 pkg syscall (netbsd-386), type IfaMsghdr struct pkg syscall (netbsd-386), type IfaMsghdr struct, Addrs int32 pkg syscall (netbsd-386), type IfaMsghdr struct, Flags int32 pkg syscall (netbsd-386), type IfaMsghdr struct, Index uint16 pkg syscall (netbsd-386), type IfaMsghdr struct, Metric int32 pkg syscall (netbsd-386), type IfaMsghdr struct, Msglen uint16 pkg syscall (netbsd-386), type IfaMsghdr struct, Pad_cgo_0 [6]uint8 pkg syscall (netbsd-386), type IfaMsghdr struct, Type uint8 pkg syscall (netbsd-386), type IfaMsghdr struct, Version uint8 pkg syscall (netbsd-386), type Inet6Pktinfo struct pkg syscall (netbsd-386), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (netbsd-386), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (netbsd-386), type InterfaceAddrMessage struct pkg syscall (netbsd-386), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (netbsd-386), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (netbsd-386), type InterfaceAnnounceMessage struct pkg syscall (netbsd-386), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (netbsd-386), type InterfaceMessage struct pkg syscall (netbsd-386), type InterfaceMessage struct, Data []uint8 pkg syscall (netbsd-386), type InterfaceMessage struct, Header IfMsghdr pkg syscall (netbsd-386), type Iovec struct pkg syscall (netbsd-386), type Iovec struct, Base *uint8 pkg syscall (netbsd-386), type Iovec struct, Len uint32 pkg syscall (netbsd-386), type Kevent_t struct pkg syscall (netbsd-386), type Kevent_t struct, Data int64 pkg syscall (netbsd-386), type Kevent_t struct, Fflags uint32 pkg syscall (netbsd-386), type Kevent_t struct, Filter uint32 pkg syscall (netbsd-386), type Kevent_t struct, Flags uint32 pkg syscall (netbsd-386), type Kevent_t struct, Ident uint32 pkg syscall (netbsd-386), type Kevent_t struct, Udata int32 pkg syscall (netbsd-386), type Mclpool [0]uint8 pkg syscall (netbsd-386), type Msghdr struct pkg syscall (netbsd-386), type Msghdr struct, Control *uint8 pkg syscall (netbsd-386), type Msghdr struct, Controllen uint32 pkg syscall (netbsd-386), type Msghdr struct, Flags int32 pkg syscall (netbsd-386), type Msghdr struct, Iov *Iovec pkg syscall (netbsd-386), type Msghdr struct, Iovlen int32 pkg syscall (netbsd-386), type Msghdr struct, Name *uint8 pkg syscall (netbsd-386), type Msghdr struct, Namelen uint32 pkg syscall (netbsd-386), type RawSockaddr struct, Data [14]int8 pkg syscall (netbsd-386), type RawSockaddr struct, Family uint8 pkg syscall (netbsd-386), type RawSockaddr struct, Len uint8 pkg syscall (netbsd-386), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (netbsd-386), type RawSockaddrDatalink struct pkg syscall (netbsd-386), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (netbsd-386), type RawSockaddrDatalink struct, Data [12]int8 pkg syscall (netbsd-386), type RawSockaddrDatalink struct, Family uint8 pkg syscall (netbsd-386), type RawSockaddrDatalink struct, Index uint16 pkg syscall (netbsd-386), type RawSockaddrDatalink struct, Len uint8 pkg syscall (netbsd-386), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (netbsd-386), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (netbsd-386), type RawSockaddrDatalink struct, Type uint8 pkg syscall (netbsd-386), type RawSockaddrInet4 struct, Family uint8 pkg syscall (netbsd-386), type RawSockaddrInet4 struct, Len uint8 pkg syscall (netbsd-386), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (netbsd-386), type RawSockaddrInet6 struct, Family uint8 pkg syscall (netbsd-386), type RawSockaddrInet6 struct, Len uint8 pkg syscall (netbsd-386), type RawSockaddrUnix struct pkg syscall (netbsd-386), type RawSockaddrUnix struct, Family uint8 pkg syscall (netbsd-386), type RawSockaddrUnix struct, Len uint8 pkg syscall (netbsd-386), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (netbsd-386), type Rlimit struct pkg syscall (netbsd-386), type Rlimit struct, Cur uint64 pkg syscall (netbsd-386), type Rlimit struct, Max uint64 pkg syscall (netbsd-386), type RouteMessage struct pkg syscall (netbsd-386), type RouteMessage struct, Data []uint8 pkg syscall (netbsd-386), type RouteMessage struct, Header RtMsghdr pkg syscall (netbsd-386), type RoutingMessage interface, unexported methods pkg syscall (netbsd-386), type RtMetrics struct pkg syscall (netbsd-386), type RtMetrics struct, Expire int64 pkg syscall (netbsd-386), type RtMetrics struct, Hopcount uint64 pkg syscall (netbsd-386), type RtMetrics struct, Locks uint64 pkg syscall (netbsd-386), type RtMetrics struct, Mtu uint64 pkg syscall (netbsd-386), type RtMetrics struct, Pksent int64 pkg syscall (netbsd-386), type RtMetrics struct, Recvpipe uint64 pkg syscall (netbsd-386), type RtMetrics struct, Rtt uint64 pkg syscall (netbsd-386), type RtMetrics struct, Rttvar uint64 pkg syscall (netbsd-386), type RtMetrics struct, Sendpipe uint64 pkg syscall (netbsd-386), type RtMetrics struct, Ssthresh uint64 pkg syscall (netbsd-386), type RtMsghdr struct pkg syscall (netbsd-386), type RtMsghdr struct, Addrs int32 pkg syscall (netbsd-386), type RtMsghdr struct, Errno int32 pkg syscall (netbsd-386), type RtMsghdr struct, Flags int32 pkg syscall (netbsd-386), type RtMsghdr struct, Index uint16 pkg syscall (netbsd-386), type RtMsghdr struct, Inits int32 pkg syscall (netbsd-386), type RtMsghdr struct, Msglen uint16 pkg syscall (netbsd-386), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-386), type RtMsghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-386), type RtMsghdr struct, Pid int32 pkg syscall (netbsd-386), type RtMsghdr struct, Rmx RtMetrics pkg syscall (netbsd-386), type RtMsghdr struct, Seq int32 pkg syscall (netbsd-386), type RtMsghdr struct, Type uint8 pkg syscall (netbsd-386), type RtMsghdr struct, Use int32 pkg syscall (netbsd-386), type RtMsghdr struct, Version uint8 pkg syscall (netbsd-386), type Rusage struct, Idrss int32 pkg syscall (netbsd-386), type Rusage struct, Inblock int32 pkg syscall (netbsd-386), type Rusage struct, Isrss int32 pkg syscall (netbsd-386), type Rusage struct, Ixrss int32 pkg syscall (netbsd-386), type Rusage struct, Majflt int32 pkg syscall (netbsd-386), type Rusage struct, Maxrss int32 pkg syscall (netbsd-386), type Rusage struct, Minflt int32 pkg syscall (netbsd-386), type Rusage struct, Msgrcv int32 pkg syscall (netbsd-386), type Rusage struct, Msgsnd int32 pkg syscall (netbsd-386), type Rusage struct, Nivcsw int32 pkg syscall (netbsd-386), type Rusage struct, Nsignals int32 pkg syscall (netbsd-386), type Rusage struct, Nswap int32 pkg syscall (netbsd-386), type Rusage struct, Nvcsw int32 pkg syscall (netbsd-386), type Rusage struct, Oublock int32 pkg syscall (netbsd-386), type Rusage struct, Stime Timeval pkg syscall (netbsd-386), type Rusage struct, Utime Timeval pkg syscall (netbsd-386), type SockaddrDatalink struct pkg syscall (netbsd-386), type SockaddrDatalink struct, Alen uint8 pkg syscall (netbsd-386), type SockaddrDatalink struct, Data [12]int8 pkg syscall (netbsd-386), type SockaddrDatalink struct, Family uint8 pkg syscall (netbsd-386), type SockaddrDatalink struct, Index uint16 pkg syscall (netbsd-386), type SockaddrDatalink struct, Len uint8 pkg syscall (netbsd-386), type SockaddrDatalink struct, Nlen uint8 pkg syscall (netbsd-386), type SockaddrDatalink struct, Slen uint8 pkg syscall (netbsd-386), type SockaddrDatalink struct, Type uint8 pkg syscall (netbsd-386), type SocketControlMessage struct pkg syscall (netbsd-386), type SocketControlMessage struct, Data []uint8 pkg syscall (netbsd-386), type SocketControlMessage struct, Header Cmsghdr pkg syscall (netbsd-386), type Stat_t struct pkg syscall (netbsd-386), type Stat_t struct, Atimespec Timespec pkg syscall (netbsd-386), type Stat_t struct, Birthtimespec Timespec pkg syscall (netbsd-386), type Stat_t struct, Blksize uint32 pkg syscall (netbsd-386), type Stat_t struct, Blocks int64 pkg syscall (netbsd-386), type Stat_t struct, Ctimespec Timespec pkg syscall (netbsd-386), type Stat_t struct, Dev uint64 pkg syscall (netbsd-386), type Stat_t struct, Flags uint32 pkg syscall (netbsd-386), type Stat_t struct, Gen uint32 pkg syscall (netbsd-386), type Stat_t struct, Gid uint32 pkg syscall (netbsd-386), type Stat_t struct, Ino uint64 pkg syscall (netbsd-386), type Stat_t struct, Mode uint32 pkg syscall (netbsd-386), type Stat_t struct, Mtimespec Timespec pkg syscall (netbsd-386), type Stat_t struct, Nlink uint32 pkg syscall (netbsd-386), type Stat_t struct, Rdev uint64 pkg syscall (netbsd-386), type Stat_t struct, Size int64 pkg syscall (netbsd-386), type Stat_t struct, Spare [2]uint32 pkg syscall (netbsd-386), type Stat_t struct, Uid uint32 pkg syscall (netbsd-386), type Statfs_t [0]uint8 pkg syscall (netbsd-386), type SysProcAttr struct, Chroot string pkg syscall (netbsd-386), type SysProcAttr struct, Credential *Credential pkg syscall (netbsd-386), type SysProcAttr struct, Noctty bool pkg syscall (netbsd-386), type SysProcAttr struct, Ptrace bool pkg syscall (netbsd-386), type SysProcAttr struct, Setctty bool pkg syscall (netbsd-386), type SysProcAttr struct, Setpgid bool pkg syscall (netbsd-386), type SysProcAttr struct, Setsid bool pkg syscall (netbsd-386), type Sysctlnode struct pkg syscall (netbsd-386), type Sysctlnode struct, Flags uint32 pkg syscall (netbsd-386), type Sysctlnode struct, Name [32]int8 pkg syscall (netbsd-386), type Sysctlnode struct, Num int32 pkg syscall (netbsd-386), type Sysctlnode struct, Un [16]uint8 pkg syscall (netbsd-386), type Sysctlnode struct, Ver uint32 pkg syscall (netbsd-386), type Sysctlnode struct, X__rsvd uint32 pkg syscall (netbsd-386), type Sysctlnode struct, X_sysctl_desc [8]uint8 pkg syscall (netbsd-386), type Sysctlnode struct, X_sysctl_func [8]uint8 pkg syscall (netbsd-386), type Sysctlnode struct, X_sysctl_parent [8]uint8 pkg syscall (netbsd-386), type Sysctlnode struct, X_sysctl_size [8]uint8 pkg syscall (netbsd-386), type Timespec struct, Nsec int32 pkg syscall (netbsd-386), type Timespec struct, Sec int64 pkg syscall (netbsd-386), type Timeval struct, Sec int64 pkg syscall (netbsd-386), type Timeval struct, Usec int32 pkg syscall (netbsd-386), type WaitStatus uint32 pkg syscall (netbsd-386), var Stderr int pkg syscall (netbsd-386), var Stdin int pkg syscall (netbsd-386), var Stdout int pkg syscall (netbsd-386-cgo), const AF_APPLETALK ideal-int pkg syscall (netbsd-386-cgo), const AF_ARP ideal-int pkg syscall (netbsd-386-cgo), const AF_BLUETOOTH ideal-int pkg syscall (netbsd-386-cgo), const AF_CCITT ideal-int pkg syscall (netbsd-386-cgo), const AF_CHAOS ideal-int pkg syscall (netbsd-386-cgo), const AF_CNT ideal-int pkg syscall (netbsd-386-cgo), const AF_COIP ideal-int pkg syscall (netbsd-386-cgo), const AF_DATAKIT ideal-int pkg syscall (netbsd-386-cgo), const AF_DECnet ideal-int pkg syscall (netbsd-386-cgo), const AF_DLI ideal-int pkg syscall (netbsd-386-cgo), const AF_E164 ideal-int pkg syscall (netbsd-386-cgo), const AF_ECMA ideal-int pkg syscall (netbsd-386-cgo), const AF_HYLINK ideal-int pkg syscall (netbsd-386-cgo), const AF_IEEE80211 ideal-int pkg syscall (netbsd-386-cgo), const AF_IMPLINK ideal-int pkg syscall (netbsd-386-cgo), const AF_IPX ideal-int pkg syscall (netbsd-386-cgo), const AF_ISDN ideal-int pkg syscall (netbsd-386-cgo), const AF_ISO ideal-int pkg syscall (netbsd-386-cgo), const AF_LAT ideal-int pkg syscall (netbsd-386-cgo), const AF_LINK ideal-int pkg syscall (netbsd-386-cgo), const AF_LOCAL ideal-int pkg syscall (netbsd-386-cgo), const AF_MAX ideal-int pkg syscall (netbsd-386-cgo), const AF_MPLS ideal-int pkg syscall (netbsd-386-cgo), const AF_NATM ideal-int pkg syscall (netbsd-386-cgo), const AF_NS ideal-int pkg syscall (netbsd-386-cgo), const AF_OROUTE ideal-int pkg syscall (netbsd-386-cgo), const AF_OSI ideal-int pkg syscall (netbsd-386-cgo), const AF_PUP ideal-int pkg syscall (netbsd-386-cgo), const AF_ROUTE ideal-int pkg syscall (netbsd-386-cgo), const AF_SNA ideal-int pkg syscall (netbsd-386-cgo), const ARPHRD_ARCNET ideal-int pkg syscall (netbsd-386-cgo), const ARPHRD_ETHER ideal-int pkg syscall (netbsd-386-cgo), const ARPHRD_FRELAY ideal-int pkg syscall (netbsd-386-cgo), const ARPHRD_IEEE1394 ideal-int pkg syscall (netbsd-386-cgo), const ARPHRD_IEEE802 ideal-int pkg syscall (netbsd-386-cgo), const ARPHRD_STRIP ideal-int pkg syscall (netbsd-386-cgo), const B0 ideal-int pkg syscall (netbsd-386-cgo), const B110 ideal-int pkg syscall (netbsd-386-cgo), const B115200 ideal-int pkg syscall (netbsd-386-cgo), const B1200 ideal-int pkg syscall (netbsd-386-cgo), const B134 ideal-int pkg syscall (netbsd-386-cgo), const B14400 ideal-int pkg syscall (netbsd-386-cgo), const B150 ideal-int pkg syscall (netbsd-386-cgo), const B1800 ideal-int pkg syscall (netbsd-386-cgo), const B19200 ideal-int pkg syscall (netbsd-386-cgo), const B200 ideal-int pkg syscall (netbsd-386-cgo), const B230400 ideal-int pkg syscall (netbsd-386-cgo), const B2400 ideal-int pkg syscall (netbsd-386-cgo), const B28800 ideal-int pkg syscall (netbsd-386-cgo), const B300 ideal-int pkg syscall (netbsd-386-cgo), const B38400 ideal-int pkg syscall (netbsd-386-cgo), const B460800 ideal-int pkg syscall (netbsd-386-cgo), const B4800 ideal-int pkg syscall (netbsd-386-cgo), const B50 ideal-int pkg syscall (netbsd-386-cgo), const B57600 ideal-int pkg syscall (netbsd-386-cgo), const B600 ideal-int pkg syscall (netbsd-386-cgo), const B7200 ideal-int pkg syscall (netbsd-386-cgo), const B75 ideal-int pkg syscall (netbsd-386-cgo), const B76800 ideal-int pkg syscall (netbsd-386-cgo), const B921600 ideal-int pkg syscall (netbsd-386-cgo), const B9600 ideal-int pkg syscall (netbsd-386-cgo), const BIOCFEEDBACK ideal-int pkg syscall (netbsd-386-cgo), const BIOCFLUSH ideal-int pkg syscall (netbsd-386-cgo), const BIOCGBLEN ideal-int pkg syscall (netbsd-386-cgo), const BIOCGDLT ideal-int pkg syscall (netbsd-386-cgo), const BIOCGDLTLIST ideal-int pkg syscall (netbsd-386-cgo), const BIOCGETIF ideal-int pkg syscall (netbsd-386-cgo), const BIOCGFEEDBACK ideal-int pkg syscall (netbsd-386-cgo), const BIOCGHDRCMPLT ideal-int pkg syscall (netbsd-386-cgo), const BIOCGRTIMEOUT ideal-int pkg syscall (netbsd-386-cgo), const BIOCGSEESENT ideal-int pkg syscall (netbsd-386-cgo), const BIOCGSTATS ideal-int pkg syscall (netbsd-386-cgo), const BIOCGSTATSOLD ideal-int pkg syscall (netbsd-386-cgo), const BIOCIMMEDIATE ideal-int pkg syscall (netbsd-386-cgo), const BIOCPROMISC ideal-int pkg syscall (netbsd-386-cgo), const BIOCSBLEN ideal-int pkg syscall (netbsd-386-cgo), const BIOCSDLT ideal-int pkg syscall (netbsd-386-cgo), const BIOCSETF ideal-int pkg syscall (netbsd-386-cgo), const BIOCSETIF ideal-int pkg syscall (netbsd-386-cgo), const BIOCSFEEDBACK ideal-int pkg syscall (netbsd-386-cgo), const BIOCSHDRCMPLT ideal-int pkg syscall (netbsd-386-cgo), const BIOCSRTIMEOUT ideal-int pkg syscall (netbsd-386-cgo), const BIOCSSEESENT ideal-int pkg syscall (netbsd-386-cgo), const BIOCSTCPF ideal-int pkg syscall (netbsd-386-cgo), const BIOCSUDPF ideal-int pkg syscall (netbsd-386-cgo), const BIOCVERSION ideal-int pkg syscall (netbsd-386-cgo), const BPF_A ideal-int pkg syscall (netbsd-386-cgo), const BPF_ABS ideal-int pkg syscall (netbsd-386-cgo), const BPF_ADD ideal-int pkg syscall (netbsd-386-cgo), const BPF_ALIGNMENT ideal-int pkg syscall (netbsd-386-cgo), const BPF_ALIGNMENT32 ideal-int pkg syscall (netbsd-386-cgo), const BPF_ALU ideal-int pkg syscall (netbsd-386-cgo), const BPF_AND ideal-int pkg syscall (netbsd-386-cgo), const BPF_B ideal-int pkg syscall (netbsd-386-cgo), const BPF_DFLTBUFSIZE ideal-int pkg syscall (netbsd-386-cgo), const BPF_DIV ideal-int pkg syscall (netbsd-386-cgo), const BPF_H ideal-int pkg syscall (netbsd-386-cgo), const BPF_IMM ideal-int pkg syscall (netbsd-386-cgo), const BPF_IND ideal-int pkg syscall (netbsd-386-cgo), const BPF_JA ideal-int pkg syscall (netbsd-386-cgo), const BPF_JEQ ideal-int pkg syscall (netbsd-386-cgo), const BPF_JGE ideal-int pkg syscall (netbsd-386-cgo), const BPF_JGT ideal-int pkg syscall (netbsd-386-cgo), const BPF_JMP ideal-int pkg syscall (netbsd-386-cgo), const BPF_JSET ideal-int pkg syscall (netbsd-386-cgo), const BPF_K ideal-int pkg syscall (netbsd-386-cgo), const BPF_LD ideal-int pkg syscall (netbsd-386-cgo), const BPF_LDX ideal-int pkg syscall (netbsd-386-cgo), const BPF_LEN ideal-int pkg syscall (netbsd-386-cgo), const BPF_LSH ideal-int pkg syscall (netbsd-386-cgo), const BPF_MAJOR_VERSION ideal-int pkg syscall (netbsd-386-cgo), const BPF_MAXBUFSIZE ideal-int pkg syscall (netbsd-386-cgo), const BPF_MAXINSNS ideal-int pkg syscall (netbsd-386-cgo), const BPF_MEM ideal-int pkg syscall (netbsd-386-cgo), const BPF_MEMWORDS ideal-int pkg syscall (netbsd-386-cgo), const BPF_MINBUFSIZE ideal-int pkg syscall (netbsd-386-cgo), const BPF_MINOR_VERSION ideal-int pkg syscall (netbsd-386-cgo), const BPF_MISC ideal-int pkg syscall (netbsd-386-cgo), const BPF_MSH ideal-int pkg syscall (netbsd-386-cgo), const BPF_MUL ideal-int pkg syscall (netbsd-386-cgo), const BPF_NEG ideal-int pkg syscall (netbsd-386-cgo), const BPF_OR ideal-int pkg syscall (netbsd-386-cgo), const BPF_RELEASE ideal-int pkg syscall (netbsd-386-cgo), const BPF_RET ideal-int pkg syscall (netbsd-386-cgo), const BPF_RSH ideal-int pkg syscall (netbsd-386-cgo), const BPF_ST ideal-int pkg syscall (netbsd-386-cgo), const BPF_STX ideal-int pkg syscall (netbsd-386-cgo), const BPF_SUB ideal-int pkg syscall (netbsd-386-cgo), const BPF_TAX ideal-int pkg syscall (netbsd-386-cgo), const BPF_TXA ideal-int pkg syscall (netbsd-386-cgo), const BPF_W ideal-int pkg syscall (netbsd-386-cgo), const BPF_X ideal-int pkg syscall (netbsd-386-cgo), const BRKINT ideal-int pkg syscall (netbsd-386-cgo), const CFLUSH ideal-int pkg syscall (netbsd-386-cgo), const CLOCAL ideal-int pkg syscall (netbsd-386-cgo), const CREAD ideal-int pkg syscall (netbsd-386-cgo), const CS5 ideal-int pkg syscall (netbsd-386-cgo), const CS6 ideal-int pkg syscall (netbsd-386-cgo), const CS7 ideal-int pkg syscall (netbsd-386-cgo), const CS8 ideal-int pkg syscall (netbsd-386-cgo), const CSIZE ideal-int pkg syscall (netbsd-386-cgo), const CSTART ideal-int pkg syscall (netbsd-386-cgo), const CSTATUS ideal-int pkg syscall (netbsd-386-cgo), const CSTOP ideal-int pkg syscall (netbsd-386-cgo), const CSTOPB ideal-int pkg syscall (netbsd-386-cgo), const CSUSP ideal-int pkg syscall (netbsd-386-cgo), const CTL_MAXNAME ideal-int pkg syscall (netbsd-386-cgo), const CTL_NET ideal-int pkg syscall (netbsd-386-cgo), const CTL_QUERY ideal-int pkg syscall (netbsd-386-cgo), const DIOCBSFLUSH ideal-int pkg syscall (netbsd-386-cgo), const DLT_A429 ideal-int pkg syscall (netbsd-386-cgo), const DLT_A653_ICM ideal-int pkg syscall (netbsd-386-cgo), const DLT_AIRONET_HEADER ideal-int pkg syscall (netbsd-386-cgo), const DLT_AOS ideal-int pkg syscall (netbsd-386-cgo), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (netbsd-386-cgo), const DLT_ARCNET ideal-int pkg syscall (netbsd-386-cgo), const DLT_ARCNET_LINUX ideal-int pkg syscall (netbsd-386-cgo), const DLT_ATM_CLIP ideal-int pkg syscall (netbsd-386-cgo), const DLT_ATM_RFC1483 ideal-int pkg syscall (netbsd-386-cgo), const DLT_AURORA ideal-int pkg syscall (netbsd-386-cgo), const DLT_AX25 ideal-int pkg syscall (netbsd-386-cgo), const DLT_AX25_KISS ideal-int pkg syscall (netbsd-386-cgo), const DLT_BACNET_MS_TP ideal-int pkg syscall (netbsd-386-cgo), const DLT_BLUETOOTH_HCI_H4 ideal-int pkg syscall (netbsd-386-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int pkg syscall (netbsd-386-cgo), const DLT_CAN20B ideal-int pkg syscall (netbsd-386-cgo), const DLT_CAN_SOCKETCAN ideal-int pkg syscall (netbsd-386-cgo), const DLT_CHAOS ideal-int pkg syscall (netbsd-386-cgo), const DLT_CISCO_IOS ideal-int pkg syscall (netbsd-386-cgo), const DLT_C_HDLC ideal-int pkg syscall (netbsd-386-cgo), const DLT_C_HDLC_WITH_DIR ideal-int pkg syscall (netbsd-386-cgo), const DLT_DECT ideal-int pkg syscall (netbsd-386-cgo), const DLT_DOCSIS ideal-int pkg syscall (netbsd-386-cgo), const DLT_ECONET ideal-int pkg syscall (netbsd-386-cgo), const DLT_EN10MB ideal-int pkg syscall (netbsd-386-cgo), const DLT_EN3MB ideal-int pkg syscall (netbsd-386-cgo), const DLT_ENC ideal-int pkg syscall (netbsd-386-cgo), const DLT_ERF ideal-int pkg syscall (netbsd-386-cgo), const DLT_ERF_ETH ideal-int pkg syscall (netbsd-386-cgo), const DLT_ERF_POS ideal-int pkg syscall (netbsd-386-cgo), const DLT_FC_2 ideal-int pkg syscall (netbsd-386-cgo), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int pkg syscall (netbsd-386-cgo), const DLT_FDDI ideal-int pkg syscall (netbsd-386-cgo), const DLT_FLEXRAY ideal-int pkg syscall (netbsd-386-cgo), const DLT_FRELAY ideal-int pkg syscall (netbsd-386-cgo), const DLT_FRELAY_WITH_DIR ideal-int pkg syscall (netbsd-386-cgo), const DLT_GCOM_SERIAL ideal-int pkg syscall (netbsd-386-cgo), const DLT_GCOM_T1E1 ideal-int pkg syscall (netbsd-386-cgo), const DLT_GPF_F ideal-int pkg syscall (netbsd-386-cgo), const DLT_GPF_T ideal-int pkg syscall (netbsd-386-cgo), const DLT_GPRS_LLC ideal-int pkg syscall (netbsd-386-cgo), const DLT_GSMTAP_ABIS ideal-int pkg syscall (netbsd-386-cgo), const DLT_GSMTAP_UM ideal-int pkg syscall (netbsd-386-cgo), const DLT_HDLC ideal-int pkg syscall (netbsd-386-cgo), const DLT_HHDLC ideal-int pkg syscall (netbsd-386-cgo), const DLT_HIPPI ideal-int pkg syscall (netbsd-386-cgo), const DLT_IBM_SN ideal-int pkg syscall (netbsd-386-cgo), const DLT_IBM_SP ideal-int pkg syscall (netbsd-386-cgo), const DLT_IEEE802 ideal-int pkg syscall (netbsd-386-cgo), const DLT_IEEE802_11 ideal-int pkg syscall (netbsd-386-cgo), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (netbsd-386-cgo), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (netbsd-386-cgo), const DLT_IEEE802_15_4 ideal-int pkg syscall (netbsd-386-cgo), const DLT_IEEE802_15_4_LINUX ideal-int pkg syscall (netbsd-386-cgo), const DLT_IEEE802_15_4_NONASK_PHY ideal-int pkg syscall (netbsd-386-cgo), const DLT_IEEE802_16_MAC_CPS ideal-int pkg syscall (netbsd-386-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int pkg syscall (netbsd-386-cgo), const DLT_IPMB ideal-int pkg syscall (netbsd-386-cgo), const DLT_IPMB_LINUX ideal-int pkg syscall (netbsd-386-cgo), const DLT_IPNET ideal-int pkg syscall (netbsd-386-cgo), const DLT_IPV4 ideal-int pkg syscall (netbsd-386-cgo), const DLT_IPV6 ideal-int pkg syscall (netbsd-386-cgo), const DLT_IP_OVER_FC ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_ATM1 ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_ATM2 ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_CHDLC ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_ES ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_ETHER ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_FRELAY ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_GGSN ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_ISM ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_MFR ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_MLFR ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_MLPPP ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_MONITOR ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_PIC_PEER ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_PPP ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_PPPOE ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_PPPOE_ATM ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_SERVICES ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_ST ideal-int pkg syscall (netbsd-386-cgo), const DLT_JUNIPER_VP ideal-int pkg syscall (netbsd-386-cgo), const DLT_LAPB_WITH_DIR ideal-int pkg syscall (netbsd-386-cgo), const DLT_LAPD ideal-int pkg syscall (netbsd-386-cgo), const DLT_LIN ideal-int pkg syscall (netbsd-386-cgo), const DLT_LINUX_EVDEV ideal-int pkg syscall (netbsd-386-cgo), const DLT_LINUX_IRDA ideal-int pkg syscall (netbsd-386-cgo), const DLT_LINUX_LAPD ideal-int pkg syscall (netbsd-386-cgo), const DLT_LINUX_SLL ideal-int pkg syscall (netbsd-386-cgo), const DLT_LOOP ideal-int pkg syscall (netbsd-386-cgo), const DLT_LTALK ideal-int pkg syscall (netbsd-386-cgo), const DLT_MFR ideal-int pkg syscall (netbsd-386-cgo), const DLT_MOST ideal-int pkg syscall (netbsd-386-cgo), const DLT_MPLS ideal-int pkg syscall (netbsd-386-cgo), const DLT_MTP2 ideal-int pkg syscall (netbsd-386-cgo), const DLT_MTP2_WITH_PHDR ideal-int pkg syscall (netbsd-386-cgo), const DLT_MTP3 ideal-int pkg syscall (netbsd-386-cgo), const DLT_NULL ideal-int pkg syscall (netbsd-386-cgo), const DLT_PCI_EXP ideal-int pkg syscall (netbsd-386-cgo), const DLT_PFLOG ideal-int pkg syscall (netbsd-386-cgo), const DLT_PFSYNC ideal-int pkg syscall (netbsd-386-cgo), const DLT_PPI ideal-int pkg syscall (netbsd-386-cgo), const DLT_PPP ideal-int pkg syscall (netbsd-386-cgo), const DLT_PPP_BSDOS ideal-int pkg syscall (netbsd-386-cgo), const DLT_PPP_ETHER ideal-int pkg syscall (netbsd-386-cgo), const DLT_PPP_PPPD ideal-int pkg syscall (netbsd-386-cgo), const DLT_PPP_SERIAL ideal-int pkg syscall (netbsd-386-cgo), const DLT_PPP_WITH_DIR ideal-int pkg syscall (netbsd-386-cgo), const DLT_PRISM_HEADER ideal-int pkg syscall (netbsd-386-cgo), const DLT_PRONET ideal-int pkg syscall (netbsd-386-cgo), const DLT_RAIF1 ideal-int pkg syscall (netbsd-386-cgo), const DLT_RAW ideal-int pkg syscall (netbsd-386-cgo), const DLT_RAWAF_MASK ideal-int pkg syscall (netbsd-386-cgo), const DLT_RIO ideal-int pkg syscall (netbsd-386-cgo), const DLT_SCCP ideal-int pkg syscall (netbsd-386-cgo), const DLT_SITA ideal-int pkg syscall (netbsd-386-cgo), const DLT_SLIP ideal-int pkg syscall (netbsd-386-cgo), const DLT_SLIP_BSDOS ideal-int pkg syscall (netbsd-386-cgo), const DLT_SUNATM ideal-int pkg syscall (netbsd-386-cgo), const DLT_SYMANTEC_FIREWALL ideal-int pkg syscall (netbsd-386-cgo), const DLT_TZSP ideal-int pkg syscall (netbsd-386-cgo), const DLT_USB ideal-int pkg syscall (netbsd-386-cgo), const DLT_USB_LINUX ideal-int pkg syscall (netbsd-386-cgo), const DLT_USB_LINUX_MMAPPED ideal-int pkg syscall (netbsd-386-cgo), const DLT_WIHART ideal-int pkg syscall (netbsd-386-cgo), const DLT_X2E_SERIAL ideal-int pkg syscall (netbsd-386-cgo), const DLT_X2E_XORAYA ideal-int pkg syscall (netbsd-386-cgo), const DT_BLK ideal-int pkg syscall (netbsd-386-cgo), const DT_CHR ideal-int pkg syscall (netbsd-386-cgo), const DT_DIR ideal-int pkg syscall (netbsd-386-cgo), const DT_FIFO ideal-int pkg syscall (netbsd-386-cgo), const DT_LNK ideal-int pkg syscall (netbsd-386-cgo), const DT_REG ideal-int pkg syscall (netbsd-386-cgo), const DT_SOCK ideal-int pkg syscall (netbsd-386-cgo), const DT_UNKNOWN ideal-int pkg syscall (netbsd-386-cgo), const DT_WHT ideal-int pkg syscall (netbsd-386-cgo), const EAUTH Errno pkg syscall (netbsd-386-cgo), const EBADMSG Errno pkg syscall (netbsd-386-cgo), const EBADRPC Errno pkg syscall (netbsd-386-cgo), const ECHO ideal-int pkg syscall (netbsd-386-cgo), const ECHOCTL ideal-int pkg syscall (netbsd-386-cgo), const ECHOE ideal-int pkg syscall (netbsd-386-cgo), const ECHOK ideal-int pkg syscall (netbsd-386-cgo), const ECHOKE ideal-int pkg syscall (netbsd-386-cgo), const ECHONL ideal-int pkg syscall (netbsd-386-cgo), const ECHOPRT ideal-int pkg syscall (netbsd-386-cgo), const EFTYPE Errno pkg syscall (netbsd-386-cgo), const ELAST Errno pkg syscall (netbsd-386-cgo), const EMULTIHOP Errno pkg syscall (netbsd-386-cgo), const EMUL_LINUX ideal-int pkg syscall (netbsd-386-cgo), const EMUL_LINUX32 ideal-int pkg syscall (netbsd-386-cgo), const EMUL_MAXID ideal-int pkg syscall (netbsd-386-cgo), const ENEEDAUTH Errno pkg syscall (netbsd-386-cgo), const ENOATTR Errno pkg syscall (netbsd-386-cgo), const ENODATA Errno pkg syscall (netbsd-386-cgo), const ENOLINK Errno pkg syscall (netbsd-386-cgo), const ENOSR Errno pkg syscall (netbsd-386-cgo), const ENOSTR Errno pkg syscall (netbsd-386-cgo), const EN_SW_CTL_INF ideal-int pkg syscall (netbsd-386-cgo), const EN_SW_CTL_PREC ideal-int pkg syscall (netbsd-386-cgo), const EN_SW_CTL_ROUND ideal-int pkg syscall (netbsd-386-cgo), const EN_SW_DATACHAIN ideal-int pkg syscall (netbsd-386-cgo), const EN_SW_DENORM ideal-int pkg syscall (netbsd-386-cgo), const EN_SW_INVOP ideal-int pkg syscall (netbsd-386-cgo), const EN_SW_OVERFLOW ideal-int pkg syscall (netbsd-386-cgo), const EN_SW_PRECLOSS ideal-int pkg syscall (netbsd-386-cgo), const EN_SW_UNDERFLOW ideal-int pkg syscall (netbsd-386-cgo), const EN_SW_ZERODIV ideal-int pkg syscall (netbsd-386-cgo), const EPROCLIM Errno pkg syscall (netbsd-386-cgo), const EPROCUNAVAIL Errno pkg syscall (netbsd-386-cgo), const EPROGMISMATCH Errno pkg syscall (netbsd-386-cgo), const EPROGUNAVAIL Errno pkg syscall (netbsd-386-cgo), const EPROTO Errno pkg syscall (netbsd-386-cgo), const ERPCMISMATCH Errno pkg syscall (netbsd-386-cgo), const ETHERCAP_JUMBO_MTU ideal-int pkg syscall (netbsd-386-cgo), const ETHERCAP_VLAN_HWTAGGING ideal-int pkg syscall (netbsd-386-cgo), const ETHERCAP_VLAN_MTU ideal-int pkg syscall (netbsd-386-cgo), const ETHERMIN ideal-int pkg syscall (netbsd-386-cgo), const ETHERMTU ideal-int pkg syscall (netbsd-386-cgo), const ETHERMTU_JUMBO ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_8023 ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_AARP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_ACCTON ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_AEONIC ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_ALPHA ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_AMBER ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_AMOEBA ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_APOLLO ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_APOLLODOMAIN ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_APPLETALK ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_APPLITEK ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_ARGONAUT ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_ARP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_AT ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_ATALK ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_ATOMIC ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_ATT ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_ATTSTANFORD ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_AUTOPHON ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_AXIS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_BCLOOP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_BOFL ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_CABLETRON ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_CHAOS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_COMDESIGN ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_COMPUGRAPHIC ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_COUNTERPOINT ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_CRONUS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_CRONUSVLN ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DCA ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DDE ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DEBNI ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECAM ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECCUST ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECDIAG ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECDNS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECDTS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECEXPER ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECLAST ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECLTM ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECMUMPS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DECNETBIOS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DELTACON ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DIDDLE ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DLOG1 ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DLOG2 ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DN ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DOGFIGHT ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_DSMD ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_ECMA ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_ENCRYPT ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_ES ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_EXCELAN ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_EXPERDATA ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_FLIP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_FLOWCONTROL ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_FRARP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_GENDYN ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_HAYES ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_HIPPI_FP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_HITACHI ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_HP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_IEEEPUP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_IEEEPUPAT ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_IMLBL ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_IMLBLDIAG ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_IP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_IPAS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_IPV6 ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_IPX ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_IPXNEW ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_KALPANA ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_LANBRIDGE ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_LANPROBE ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_LAT ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_LBACK ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_LITTLE ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_LOGICRAFT ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_LOOPBACK ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_MATRA ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_MAX ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_MERIT ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_MICP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_MOPDL ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_MOPRC ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_MOTOROLA ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_MPLS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_MPLS_MCAST ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_MUMPS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPCC ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPCLAIM ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPCLREQ ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPCLRSP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPCREQ ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPCRSP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPDG ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPDGB ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPDLTE ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPRAR ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPRAS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPRST ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPSCD ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBPVCD ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NBS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NCD ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NESTAR ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NETBEUI ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NOVELL ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NSAT ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NSCOMPAT ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_NTRAILER ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_OS9 ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_OS9NET ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_PACER ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_PAE ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_PCS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_PLANNING ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_PPP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_PPPOE ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_PPPOEDISC ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_PRIMENTS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_PUP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_PUPAT ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_RACAL ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_RATIONAL ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_RAWFR ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_RCL ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_RDP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_RETIX ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_REVARP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SCA ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SECTRA ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SECUREDATA ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SGITW ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SG_BOUNCE ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SG_DIAG ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SG_NETGAMES ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SG_RESV ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SIMNET ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SLOWPROTOCOLS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SNA ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SNMP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SONIX ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SPIDER ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_SPRITE ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_STP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_TALARIS ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_TALARISMC ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_TCPCOMP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_TCPSM ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_TEC ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_TIGAN ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_TRAIL ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_TRANSETHER ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_TYMSHARE ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_UBBST ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_UBDEBUG ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_UBDIAGLOOP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_UBDL ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_UBNIU ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_UBNMC ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_VALID ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_VARIAN ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_VAXELN ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_VEECO ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_VEXP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_VGLAB ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_VINES ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_VINESECHO ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_VINESLOOP ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_VITAL ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_VLAN ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_VLTLMAN ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_VPROD ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_VURESERVED ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_WATERLOO ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_WELLFLEET ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_X25 ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_X75 ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_XNSSM ideal-int pkg syscall (netbsd-386-cgo), const ETHERTYPE_XTP ideal-int pkg syscall (netbsd-386-cgo), const ETHER_ADDR_LEN ideal-int pkg syscall (netbsd-386-cgo), const ETHER_CRC_LEN ideal-int pkg syscall (netbsd-386-cgo), const ETHER_CRC_POLY_BE ideal-int pkg syscall (netbsd-386-cgo), const ETHER_CRC_POLY_LE ideal-int pkg syscall (netbsd-386-cgo), const ETHER_HDR_LEN ideal-int pkg syscall (netbsd-386-cgo), const ETHER_MAX_LEN ideal-int pkg syscall (netbsd-386-cgo), const ETHER_MAX_LEN_JUMBO ideal-int pkg syscall (netbsd-386-cgo), const ETHER_MIN_LEN ideal-int pkg syscall (netbsd-386-cgo), const ETHER_PPPOE_ENCAP_LEN ideal-int pkg syscall (netbsd-386-cgo), const ETHER_TYPE_LEN ideal-int pkg syscall (netbsd-386-cgo), const ETHER_VLAN_ENCAP_LEN ideal-int pkg syscall (netbsd-386-cgo), const ETIME Errno pkg syscall (netbsd-386-cgo), const EVFILT_AIO ideal-int pkg syscall (netbsd-386-cgo), const EVFILT_PROC ideal-int pkg syscall (netbsd-386-cgo), const EVFILT_READ ideal-int pkg syscall (netbsd-386-cgo), const EVFILT_SIGNAL ideal-int pkg syscall (netbsd-386-cgo), const EVFILT_SYSCOUNT ideal-int pkg syscall (netbsd-386-cgo), const EVFILT_TIMER ideal-int pkg syscall (netbsd-386-cgo), const EVFILT_VNODE ideal-int pkg syscall (netbsd-386-cgo), const EVFILT_WRITE ideal-int pkg syscall (netbsd-386-cgo), const EV_ADD ideal-int pkg syscall (netbsd-386-cgo), const EV_CLEAR ideal-int pkg syscall (netbsd-386-cgo), const EV_DELETE ideal-int pkg syscall (netbsd-386-cgo), const EV_DISABLE ideal-int pkg syscall (netbsd-386-cgo), const EV_ENABLE ideal-int pkg syscall (netbsd-386-cgo), const EV_EOF ideal-int pkg syscall (netbsd-386-cgo), const EV_ERROR ideal-int pkg syscall (netbsd-386-cgo), const EV_FLAG1 ideal-int pkg syscall (netbsd-386-cgo), const EV_ONESHOT ideal-int pkg syscall (netbsd-386-cgo), const EV_SYSFLAGS ideal-int pkg syscall (netbsd-386-cgo), const EXTA ideal-int pkg syscall (netbsd-386-cgo), const EXTB ideal-int pkg syscall (netbsd-386-cgo), const EXTPROC ideal-int pkg syscall (netbsd-386-cgo), const FD_CLOEXEC ideal-int pkg syscall (netbsd-386-cgo), const FD_SETSIZE ideal-int pkg syscall (netbsd-386-cgo), const FLUSHO ideal-int pkg syscall (netbsd-386-cgo), const F_CLOSEM ideal-int pkg syscall (netbsd-386-cgo), const F_DUPFD ideal-int pkg syscall (netbsd-386-cgo), const F_DUPFD_CLOEXEC ideal-int pkg syscall (netbsd-386-cgo), const F_FSCTL ideal-int pkg syscall (netbsd-386-cgo), const F_FSDIRMASK ideal-int pkg syscall (netbsd-386-cgo), const F_FSIN ideal-int pkg syscall (netbsd-386-cgo), const F_FSINOUT ideal-int pkg syscall (netbsd-386-cgo), const F_FSOUT ideal-int pkg syscall (netbsd-386-cgo), const F_FSPRIV ideal-int pkg syscall (netbsd-386-cgo), const F_FSVOID ideal-int pkg syscall (netbsd-386-cgo), const F_GETFD ideal-int pkg syscall (netbsd-386-cgo), const F_GETFL ideal-int pkg syscall (netbsd-386-cgo), const F_GETLK ideal-int pkg syscall (netbsd-386-cgo), const F_GETNOSIGPIPE ideal-int pkg syscall (netbsd-386-cgo), const F_GETOWN ideal-int pkg syscall (netbsd-386-cgo), const F_MAXFD ideal-int pkg syscall (netbsd-386-cgo), const F_OK ideal-int pkg syscall (netbsd-386-cgo), const F_PARAM_MASK ideal-int pkg syscall (netbsd-386-cgo), const F_PARAM_MAX ideal-int pkg syscall (netbsd-386-cgo), const F_RDLCK ideal-int pkg syscall (netbsd-386-cgo), const F_SETFD ideal-int pkg syscall (netbsd-386-cgo), const F_SETFL ideal-int pkg syscall (netbsd-386-cgo), const F_SETLK ideal-int pkg syscall (netbsd-386-cgo), const F_SETLKW ideal-int pkg syscall (netbsd-386-cgo), const F_SETNOSIGPIPE ideal-int pkg syscall (netbsd-386-cgo), const F_SETOWN ideal-int pkg syscall (netbsd-386-cgo), const F_UNLCK ideal-int pkg syscall (netbsd-386-cgo), const F_WRLCK ideal-int pkg syscall (netbsd-386-cgo), const HUPCL ideal-int pkg syscall (netbsd-386-cgo), const ICANON ideal-int pkg syscall (netbsd-386-cgo), const ICMP6_FILTER = 18 pkg syscall (netbsd-386-cgo), const ICMP6_FILTER ideal-int pkg syscall (netbsd-386-cgo), const ICRNL ideal-int pkg syscall (netbsd-386-cgo), const IEXTEN ideal-int pkg syscall (netbsd-386-cgo), const IFAN_ARRIVAL ideal-int pkg syscall (netbsd-386-cgo), const IFAN_DEPARTURE ideal-int pkg syscall (netbsd-386-cgo), const IFA_ROUTE ideal-int pkg syscall (netbsd-386-cgo), const IFF_ALLMULTI ideal-int pkg syscall (netbsd-386-cgo), const IFF_CANTCHANGE ideal-int pkg syscall (netbsd-386-cgo), const IFF_DEBUG ideal-int pkg syscall (netbsd-386-cgo), const IFF_LINK0 ideal-int pkg syscall (netbsd-386-cgo), const IFF_LINK1 ideal-int pkg syscall (netbsd-386-cgo), const IFF_LINK2 ideal-int pkg syscall (netbsd-386-cgo), const IFF_NOARP ideal-int pkg syscall (netbsd-386-cgo), const IFF_NOTRAILERS ideal-int pkg syscall (netbsd-386-cgo), const IFF_OACTIVE ideal-int pkg syscall (netbsd-386-cgo), const IFF_POINTOPOINT ideal-int pkg syscall (netbsd-386-cgo), const IFF_PROMISC ideal-int pkg syscall (netbsd-386-cgo), const IFF_RUNNING ideal-int pkg syscall (netbsd-386-cgo), const IFF_SIMPLEX ideal-int pkg syscall (netbsd-386-cgo), const IFNAMSIZ ideal-int pkg syscall (netbsd-386-cgo), const IFT_1822 ideal-int pkg syscall (netbsd-386-cgo), const IFT_A12MPPSWITCH ideal-int pkg syscall (netbsd-386-cgo), const IFT_AAL2 ideal-int pkg syscall (netbsd-386-cgo), const IFT_AAL5 ideal-int pkg syscall (netbsd-386-cgo), const IFT_ADSL ideal-int pkg syscall (netbsd-386-cgo), const IFT_AFLANE8023 ideal-int pkg syscall (netbsd-386-cgo), const IFT_AFLANE8025 ideal-int pkg syscall (netbsd-386-cgo), const IFT_ARAP ideal-int pkg syscall (netbsd-386-cgo), const IFT_ARCNET ideal-int pkg syscall (netbsd-386-cgo), const IFT_ARCNETPLUS ideal-int pkg syscall (netbsd-386-cgo), const IFT_ASYNC ideal-int pkg syscall (netbsd-386-cgo), const IFT_ATM ideal-int pkg syscall (netbsd-386-cgo), const IFT_ATMDXI ideal-int pkg syscall (netbsd-386-cgo), const IFT_ATMFUNI ideal-int pkg syscall (netbsd-386-cgo), const IFT_ATMIMA ideal-int pkg syscall (netbsd-386-cgo), const IFT_ATMLOGICAL ideal-int pkg syscall (netbsd-386-cgo), const IFT_ATMRADIO ideal-int pkg syscall (netbsd-386-cgo), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (netbsd-386-cgo), const IFT_ATMVCIENDPT ideal-int pkg syscall (netbsd-386-cgo), const IFT_ATMVIRTUAL ideal-int pkg syscall (netbsd-386-cgo), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (netbsd-386-cgo), const IFT_BRIDGE ideal-int pkg syscall (netbsd-386-cgo), const IFT_BSC ideal-int pkg syscall (netbsd-386-cgo), const IFT_CARP ideal-int pkg syscall (netbsd-386-cgo), const IFT_CCTEMUL ideal-int pkg syscall (netbsd-386-cgo), const IFT_CEPT ideal-int pkg syscall (netbsd-386-cgo), const IFT_CES ideal-int pkg syscall (netbsd-386-cgo), const IFT_CHANNEL ideal-int pkg syscall (netbsd-386-cgo), const IFT_CNR ideal-int pkg syscall (netbsd-386-cgo), const IFT_COFFEE ideal-int pkg syscall (netbsd-386-cgo), const IFT_COMPOSITELINK ideal-int pkg syscall (netbsd-386-cgo), const IFT_DCN ideal-int pkg syscall (netbsd-386-cgo), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (netbsd-386-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (netbsd-386-cgo), const IFT_DLSW ideal-int pkg syscall (netbsd-386-cgo), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (netbsd-386-cgo), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (netbsd-386-cgo), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (netbsd-386-cgo), const IFT_DOCSCABLEUPSTREAMCHANNEL ideal-int pkg syscall (netbsd-386-cgo), const IFT_DS0 ideal-int pkg syscall (netbsd-386-cgo), const IFT_DS0BUNDLE ideal-int pkg syscall (netbsd-386-cgo), const IFT_DS1FDL ideal-int pkg syscall (netbsd-386-cgo), const IFT_DS3 ideal-int pkg syscall (netbsd-386-cgo), const IFT_DTM ideal-int pkg syscall (netbsd-386-cgo), const IFT_DVBASILN ideal-int pkg syscall (netbsd-386-cgo), const IFT_DVBASIOUT ideal-int pkg syscall (netbsd-386-cgo), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (netbsd-386-cgo), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (netbsd-386-cgo), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (netbsd-386-cgo), const IFT_ECONET ideal-int pkg syscall (netbsd-386-cgo), const IFT_EON ideal-int pkg syscall (netbsd-386-cgo), const IFT_EPLRS ideal-int pkg syscall (netbsd-386-cgo), const IFT_ESCON ideal-int pkg syscall (netbsd-386-cgo), const IFT_ETHER ideal-int pkg syscall (netbsd-386-cgo), const IFT_FAITH ideal-int pkg syscall (netbsd-386-cgo), const IFT_FAST ideal-int pkg syscall (netbsd-386-cgo), const IFT_FASTETHER ideal-int pkg syscall (netbsd-386-cgo), const IFT_FASTETHERFX ideal-int pkg syscall (netbsd-386-cgo), const IFT_FDDI ideal-int pkg syscall (netbsd-386-cgo), const IFT_FIBRECHANNEL ideal-int pkg syscall (netbsd-386-cgo), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (netbsd-386-cgo), const IFT_FRAMERELAYMPI ideal-int pkg syscall (netbsd-386-cgo), const IFT_FRDLCIENDPT ideal-int pkg syscall (netbsd-386-cgo), const IFT_FRELAY ideal-int pkg syscall (netbsd-386-cgo), const IFT_FRELAYDCE ideal-int pkg syscall (netbsd-386-cgo), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (netbsd-386-cgo), const IFT_FRFORWARD ideal-int pkg syscall (netbsd-386-cgo), const IFT_G703AT2MB ideal-int pkg syscall (netbsd-386-cgo), const IFT_G703AT64K ideal-int pkg syscall (netbsd-386-cgo), const IFT_GIF ideal-int pkg syscall (netbsd-386-cgo), const IFT_GIGABITETHERNET ideal-int pkg syscall (netbsd-386-cgo), const IFT_GR303IDT ideal-int pkg syscall (netbsd-386-cgo), const IFT_GR303RDT ideal-int pkg syscall (netbsd-386-cgo), const IFT_H323GATEKEEPER ideal-int pkg syscall (netbsd-386-cgo), const IFT_H323PROXY ideal-int pkg syscall (netbsd-386-cgo), const IFT_HDH1822 ideal-int pkg syscall (netbsd-386-cgo), const IFT_HDLC ideal-int pkg syscall (netbsd-386-cgo), const IFT_HDSL2 ideal-int pkg syscall (netbsd-386-cgo), const IFT_HIPERLAN2 ideal-int pkg syscall (netbsd-386-cgo), const IFT_HIPPI ideal-int pkg syscall (netbsd-386-cgo), const IFT_HIPPIINTERFACE ideal-int pkg syscall (netbsd-386-cgo), const IFT_HOSTPAD ideal-int pkg syscall (netbsd-386-cgo), const IFT_HSSI ideal-int pkg syscall (netbsd-386-cgo), const IFT_HY ideal-int pkg syscall (netbsd-386-cgo), const IFT_IBM370PARCHAN ideal-int pkg syscall (netbsd-386-cgo), const IFT_IDSL ideal-int pkg syscall (netbsd-386-cgo), const IFT_IEEE1394 ideal-int pkg syscall (netbsd-386-cgo), const IFT_IEEE80211 ideal-int pkg syscall (netbsd-386-cgo), const IFT_IEEE80212 ideal-int pkg syscall (netbsd-386-cgo), const IFT_IEEE8023ADLAG ideal-int pkg syscall (netbsd-386-cgo), const IFT_IFGSN ideal-int pkg syscall (netbsd-386-cgo), const IFT_IMT ideal-int pkg syscall (netbsd-386-cgo), const IFT_INFINIBAND ideal-int pkg syscall (netbsd-386-cgo), const IFT_INTERLEAVE ideal-int pkg syscall (netbsd-386-cgo), const IFT_IP ideal-int pkg syscall (netbsd-386-cgo), const IFT_IPFORWARD ideal-int pkg syscall (netbsd-386-cgo), const IFT_IPOVERATM ideal-int pkg syscall (netbsd-386-cgo), const IFT_IPOVERCDLC ideal-int pkg syscall (netbsd-386-cgo), const IFT_IPOVERCLAW ideal-int pkg syscall (netbsd-386-cgo), const IFT_IPSWITCH ideal-int pkg syscall (netbsd-386-cgo), const IFT_ISDN ideal-int pkg syscall (netbsd-386-cgo), const IFT_ISDNBASIC ideal-int pkg syscall (netbsd-386-cgo), const IFT_ISDNPRIMARY ideal-int pkg syscall (netbsd-386-cgo), const IFT_ISDNS ideal-int pkg syscall (netbsd-386-cgo), const IFT_ISDNU ideal-int pkg syscall (netbsd-386-cgo), const IFT_ISO88022LLC ideal-int pkg syscall (netbsd-386-cgo), const IFT_ISO88023 ideal-int pkg syscall (netbsd-386-cgo), const IFT_ISO88024 ideal-int pkg syscall (netbsd-386-cgo), const IFT_ISO88025 ideal-int pkg syscall (netbsd-386-cgo), const IFT_ISO88025CRFPINT ideal-int pkg syscall (netbsd-386-cgo), const IFT_ISO88025DTR ideal-int pkg syscall (netbsd-386-cgo), const IFT_ISO88025FIBER ideal-int pkg syscall (netbsd-386-cgo), const IFT_ISO88026 ideal-int pkg syscall (netbsd-386-cgo), const IFT_ISUP ideal-int pkg syscall (netbsd-386-cgo), const IFT_L2VLAN ideal-int pkg syscall (netbsd-386-cgo), const IFT_L3IPVLAN ideal-int pkg syscall (netbsd-386-cgo), const IFT_L3IPXVLAN ideal-int pkg syscall (netbsd-386-cgo), const IFT_LAPB ideal-int pkg syscall (netbsd-386-cgo), const IFT_LAPD ideal-int pkg syscall (netbsd-386-cgo), const IFT_LAPF ideal-int pkg syscall (netbsd-386-cgo), const IFT_LINEGROUP ideal-int pkg syscall (netbsd-386-cgo), const IFT_LOCALTALK ideal-int pkg syscall (netbsd-386-cgo), const IFT_LOOP ideal-int pkg syscall (netbsd-386-cgo), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (netbsd-386-cgo), const IFT_MFSIGLINK ideal-int pkg syscall (netbsd-386-cgo), const IFT_MIOX25 ideal-int pkg syscall (netbsd-386-cgo), const IFT_MODEM ideal-int pkg syscall (netbsd-386-cgo), const IFT_MPC ideal-int pkg syscall (netbsd-386-cgo), const IFT_MPLS ideal-int pkg syscall (netbsd-386-cgo), const IFT_MPLSTUNNEL ideal-int pkg syscall (netbsd-386-cgo), const IFT_MSDSL ideal-int pkg syscall (netbsd-386-cgo), const IFT_MVL ideal-int pkg syscall (netbsd-386-cgo), const IFT_MYRINET ideal-int pkg syscall (netbsd-386-cgo), const IFT_NFAS ideal-int pkg syscall (netbsd-386-cgo), const IFT_NSIP ideal-int pkg syscall (netbsd-386-cgo), const IFT_OPTICALCHANNEL ideal-int pkg syscall (netbsd-386-cgo), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (netbsd-386-cgo), const IFT_OTHER ideal-int pkg syscall (netbsd-386-cgo), const IFT_P10 ideal-int pkg syscall (netbsd-386-cgo), const IFT_P80 ideal-int pkg syscall (netbsd-386-cgo), const IFT_PARA ideal-int pkg syscall (netbsd-386-cgo), const IFT_PFLOG ideal-int pkg syscall (netbsd-386-cgo), const IFT_PFSYNC ideal-int pkg syscall (netbsd-386-cgo), const IFT_PLC ideal-int pkg syscall (netbsd-386-cgo), const IFT_PON155 ideal-int pkg syscall (netbsd-386-cgo), const IFT_PON622 ideal-int pkg syscall (netbsd-386-cgo), const IFT_POS ideal-int pkg syscall (netbsd-386-cgo), const IFT_PPP ideal-int pkg syscall (netbsd-386-cgo), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (netbsd-386-cgo), const IFT_PROPATM ideal-int pkg syscall (netbsd-386-cgo), const IFT_PROPBWAP2MP ideal-int pkg syscall (netbsd-386-cgo), const IFT_PROPCNLS ideal-int pkg syscall (netbsd-386-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (netbsd-386-cgo), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (netbsd-386-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (netbsd-386-cgo), const IFT_PROPMUX ideal-int pkg syscall (netbsd-386-cgo), const IFT_PROPVIRTUAL ideal-int pkg syscall (netbsd-386-cgo), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (netbsd-386-cgo), const IFT_PTPSERIAL ideal-int pkg syscall (netbsd-386-cgo), const IFT_PVC ideal-int pkg syscall (netbsd-386-cgo), const IFT_Q2931 ideal-int pkg syscall (netbsd-386-cgo), const IFT_QLLC ideal-int pkg syscall (netbsd-386-cgo), const IFT_RADIOMAC ideal-int pkg syscall (netbsd-386-cgo), const IFT_RADSL ideal-int pkg syscall (netbsd-386-cgo), const IFT_REACHDSL ideal-int pkg syscall (netbsd-386-cgo), const IFT_RFC1483 ideal-int pkg syscall (netbsd-386-cgo), const IFT_RS232 ideal-int pkg syscall (netbsd-386-cgo), const IFT_RSRB ideal-int pkg syscall (netbsd-386-cgo), const IFT_SDLC ideal-int pkg syscall (netbsd-386-cgo), const IFT_SDSL ideal-int pkg syscall (netbsd-386-cgo), const IFT_SHDSL ideal-int pkg syscall (netbsd-386-cgo), const IFT_SIP ideal-int pkg syscall (netbsd-386-cgo), const IFT_SIPSIG ideal-int pkg syscall (netbsd-386-cgo), const IFT_SIPTG ideal-int pkg syscall (netbsd-386-cgo), const IFT_SLIP ideal-int pkg syscall (netbsd-386-cgo), const IFT_SMDSDXI ideal-int pkg syscall (netbsd-386-cgo), const IFT_SMDSICIP ideal-int pkg syscall (netbsd-386-cgo), const IFT_SONET ideal-int pkg syscall (netbsd-386-cgo), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (netbsd-386-cgo), const IFT_SONETPATH ideal-int pkg syscall (netbsd-386-cgo), const IFT_SONETVT ideal-int pkg syscall (netbsd-386-cgo), const IFT_SRP ideal-int pkg syscall (netbsd-386-cgo), const IFT_SS7SIGLINK ideal-int pkg syscall (netbsd-386-cgo), const IFT_STACKTOSTACK ideal-int pkg syscall (netbsd-386-cgo), const IFT_STARLAN ideal-int pkg syscall (netbsd-386-cgo), const IFT_STF ideal-int pkg syscall (netbsd-386-cgo), const IFT_T1 ideal-int pkg syscall (netbsd-386-cgo), const IFT_TDLC ideal-int pkg syscall (netbsd-386-cgo), const IFT_TELINK ideal-int pkg syscall (netbsd-386-cgo), const IFT_TERMPAD ideal-int pkg syscall (netbsd-386-cgo), const IFT_TR008 ideal-int pkg syscall (netbsd-386-cgo), const IFT_TRANSPHDLC ideal-int pkg syscall (netbsd-386-cgo), const IFT_TUNNEL ideal-int pkg syscall (netbsd-386-cgo), const IFT_ULTRA ideal-int pkg syscall (netbsd-386-cgo), const IFT_USB ideal-int pkg syscall (netbsd-386-cgo), const IFT_V11 ideal-int pkg syscall (netbsd-386-cgo), const IFT_V35 ideal-int pkg syscall (netbsd-386-cgo), const IFT_V36 ideal-int pkg syscall (netbsd-386-cgo), const IFT_V37 ideal-int pkg syscall (netbsd-386-cgo), const IFT_VDSL ideal-int pkg syscall (netbsd-386-cgo), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (netbsd-386-cgo), const IFT_VIRTUALTG ideal-int pkg syscall (netbsd-386-cgo), const IFT_VOICEDID ideal-int pkg syscall (netbsd-386-cgo), const IFT_VOICEEM ideal-int pkg syscall (netbsd-386-cgo), const IFT_VOICEEMFGD ideal-int pkg syscall (netbsd-386-cgo), const IFT_VOICEENCAP ideal-int pkg syscall (netbsd-386-cgo), const IFT_VOICEFGDEANA ideal-int pkg syscall (netbsd-386-cgo), const IFT_VOICEFXO ideal-int pkg syscall (netbsd-386-cgo), const IFT_VOICEFXS ideal-int pkg syscall (netbsd-386-cgo), const IFT_VOICEOVERATM ideal-int pkg syscall (netbsd-386-cgo), const IFT_VOICEOVERCABLE ideal-int pkg syscall (netbsd-386-cgo), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (netbsd-386-cgo), const IFT_VOICEOVERIP ideal-int pkg syscall (netbsd-386-cgo), const IFT_X213 ideal-int pkg syscall (netbsd-386-cgo), const IFT_X25 ideal-int pkg syscall (netbsd-386-cgo), const IFT_X25DDN ideal-int pkg syscall (netbsd-386-cgo), const IFT_X25HUNTGROUP ideal-int pkg syscall (netbsd-386-cgo), const IFT_X25MLP ideal-int pkg syscall (netbsd-386-cgo), const IFT_X25PLE ideal-int pkg syscall (netbsd-386-cgo), const IFT_XETHER ideal-int pkg syscall (netbsd-386-cgo), const IGNBRK ideal-int pkg syscall (netbsd-386-cgo), const IGNCR ideal-int pkg syscall (netbsd-386-cgo), const IGNPAR ideal-int pkg syscall (netbsd-386-cgo), const IMAXBEL ideal-int pkg syscall (netbsd-386-cgo), const INLCR ideal-int pkg syscall (netbsd-386-cgo), const INPCK ideal-int pkg syscall (netbsd-386-cgo), const IN_CLASSA_HOST ideal-int pkg syscall (netbsd-386-cgo), const IN_CLASSA_MAX ideal-int pkg syscall (netbsd-386-cgo), const IN_CLASSA_NET ideal-int pkg syscall (netbsd-386-cgo), const IN_CLASSA_NSHIFT ideal-int pkg syscall (netbsd-386-cgo), const IN_CLASSB_HOST ideal-int pkg syscall (netbsd-386-cgo), const IN_CLASSB_MAX ideal-int pkg syscall (netbsd-386-cgo), const IN_CLASSB_NET ideal-int pkg syscall (netbsd-386-cgo), const IN_CLASSB_NSHIFT ideal-int pkg syscall (netbsd-386-cgo), const IN_CLASSC_HOST ideal-int pkg syscall (netbsd-386-cgo), const IN_CLASSC_NET ideal-int pkg syscall (netbsd-386-cgo), const IN_CLASSC_NSHIFT ideal-int pkg syscall (netbsd-386-cgo), const IN_CLASSD_HOST ideal-int pkg syscall (netbsd-386-cgo), const IN_CLASSD_NET ideal-int pkg syscall (netbsd-386-cgo), const IN_CLASSD_NSHIFT ideal-int pkg syscall (netbsd-386-cgo), const IN_LOOPBACKNET ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_AH ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_CARP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_DONE ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_DSTOPTS ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_EGP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_ENCAP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_EON ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_ESP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_ETHERIP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_FRAGMENT ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_GGP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_GRE ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_HOPOPTS ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_ICMP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_ICMPV6 ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_IDP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_IGMP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_IPCOMP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_IPIP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_IPV4 ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_IPV6_ICMP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_MAX ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_MAXID ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_MOBILE ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_NONE ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_PFSYNC ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_PIM ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_PUP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_RAW ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_ROUTING ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_RSVP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_TP ideal-int pkg syscall (netbsd-386-cgo), const IPPROTO_VRRP ideal-int pkg syscall (netbsd-386-cgo), const IPV6_CHECKSUM ideal-int pkg syscall (netbsd-386-cgo), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (netbsd-386-cgo), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (netbsd-386-cgo), const IPV6_DEFHLIM ideal-int pkg syscall (netbsd-386-cgo), const IPV6_DONTFRAG ideal-int pkg syscall (netbsd-386-cgo), const IPV6_DSTOPTS ideal-int pkg syscall (netbsd-386-cgo), const IPV6_FAITH ideal-int pkg syscall (netbsd-386-cgo), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (netbsd-386-cgo), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (netbsd-386-cgo), const IPV6_FRAGTTL ideal-int pkg syscall (netbsd-386-cgo), const IPV6_HLIMDEC ideal-int pkg syscall (netbsd-386-cgo), const IPV6_HOPLIMIT ideal-int pkg syscall (netbsd-386-cgo), const IPV6_HOPOPTS ideal-int pkg syscall (netbsd-386-cgo), const IPV6_IPSEC_POLICY ideal-int pkg syscall (netbsd-386-cgo), const IPV6_MAXHLIM ideal-int pkg syscall (netbsd-386-cgo), const IPV6_MAXPACKET ideal-int pkg syscall (netbsd-386-cgo), const IPV6_MMTU ideal-int pkg syscall (netbsd-386-cgo), const IPV6_NEXTHOP ideal-int pkg syscall (netbsd-386-cgo), const IPV6_PATHMTU ideal-int pkg syscall (netbsd-386-cgo), const IPV6_PKTINFO ideal-int pkg syscall (netbsd-386-cgo), const IPV6_PORTRANGE ideal-int pkg syscall (netbsd-386-cgo), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (netbsd-386-cgo), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (netbsd-386-cgo), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (netbsd-386-cgo), const IPV6_RECVDSTOPTS ideal-int pkg syscall (netbsd-386-cgo), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (netbsd-386-cgo), const IPV6_RECVHOPOPTS ideal-int pkg syscall (netbsd-386-cgo), const IPV6_RECVPATHMTU ideal-int pkg syscall (netbsd-386-cgo), const IPV6_RECVPKTINFO ideal-int pkg syscall (netbsd-386-cgo), const IPV6_RECVRTHDR ideal-int pkg syscall (netbsd-386-cgo), const IPV6_RECVTCLASS ideal-int pkg syscall (netbsd-386-cgo), const IPV6_RTHDR ideal-int pkg syscall (netbsd-386-cgo), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (netbsd-386-cgo), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (netbsd-386-cgo), const IPV6_RTHDR_STRICT ideal-int pkg syscall (netbsd-386-cgo), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (netbsd-386-cgo), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (netbsd-386-cgo), const IPV6_TCLASS ideal-int pkg syscall (netbsd-386-cgo), const IPV6_USE_MIN_MTU ideal-int pkg syscall (netbsd-386-cgo), const IPV6_VERSION ideal-int pkg syscall (netbsd-386-cgo), const IPV6_VERSION_MASK ideal-int pkg syscall (netbsd-386-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (netbsd-386-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (netbsd-386-cgo), const IP_DF ideal-int pkg syscall (netbsd-386-cgo), const IP_EF ideal-int pkg syscall (netbsd-386-cgo), const IP_ERRORMTU ideal-int pkg syscall (netbsd-386-cgo), const IP_HDRINCL ideal-int pkg syscall (netbsd-386-cgo), const IP_IPSEC_POLICY ideal-int pkg syscall (netbsd-386-cgo), const IP_MAXPACKET ideal-int pkg syscall (netbsd-386-cgo), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (netbsd-386-cgo), const IP_MF ideal-int pkg syscall (netbsd-386-cgo), const IP_MINFRAGSIZE ideal-int pkg syscall (netbsd-386-cgo), const IP_MINTTL ideal-int pkg syscall (netbsd-386-cgo), const IP_MSS ideal-int pkg syscall (netbsd-386-cgo), const IP_OFFMASK ideal-int pkg syscall (netbsd-386-cgo), const IP_OPTIONS ideal-int pkg syscall (netbsd-386-cgo), const IP_PORTRANGE ideal-int pkg syscall (netbsd-386-cgo), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (netbsd-386-cgo), const IP_PORTRANGE_HIGH ideal-int pkg syscall (netbsd-386-cgo), const IP_PORTRANGE_LOW ideal-int pkg syscall (netbsd-386-cgo), const IP_RECVDSTADDR ideal-int pkg syscall (netbsd-386-cgo), const IP_RECVIF ideal-int pkg syscall (netbsd-386-cgo), const IP_RECVOPTS ideal-int pkg syscall (netbsd-386-cgo), const IP_RECVRETOPTS ideal-int pkg syscall (netbsd-386-cgo), const IP_RECVTTL ideal-int pkg syscall (netbsd-386-cgo), const IP_RETOPTS ideal-int pkg syscall (netbsd-386-cgo), const IP_RF ideal-int pkg syscall (netbsd-386-cgo), const ISIG ideal-int pkg syscall (netbsd-386-cgo), const ISTRIP ideal-int pkg syscall (netbsd-386-cgo), const IXANY ideal-int pkg syscall (netbsd-386-cgo), const IXOFF ideal-int pkg syscall (netbsd-386-cgo), const IXON ideal-int pkg syscall (netbsd-386-cgo), const LOCK_EX ideal-int pkg syscall (netbsd-386-cgo), const LOCK_NB ideal-int pkg syscall (netbsd-386-cgo), const LOCK_SH ideal-int pkg syscall (netbsd-386-cgo), const LOCK_UN ideal-int pkg syscall (netbsd-386-cgo), const MSG_BCAST ideal-int pkg syscall (netbsd-386-cgo), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (netbsd-386-cgo), const MSG_CONTROLMBUF ideal-int pkg syscall (netbsd-386-cgo), const MSG_CTRUNC ideal-int pkg syscall (netbsd-386-cgo), const MSG_DONTROUTE ideal-int pkg syscall (netbsd-386-cgo), const MSG_DONTWAIT ideal-int pkg syscall (netbsd-386-cgo), const MSG_EOR ideal-int pkg syscall (netbsd-386-cgo), const MSG_IOVUSRSPACE ideal-int pkg syscall (netbsd-386-cgo), const MSG_LENUSRSPACE ideal-int pkg syscall (netbsd-386-cgo), const MSG_MCAST ideal-int pkg syscall (netbsd-386-cgo), const MSG_NAMEMBUF ideal-int pkg syscall (netbsd-386-cgo), const MSG_NBIO ideal-int pkg syscall (netbsd-386-cgo), const MSG_NOSIGNAL ideal-int pkg syscall (netbsd-386-cgo), const MSG_OOB ideal-int pkg syscall (netbsd-386-cgo), const MSG_PEEK ideal-int pkg syscall (netbsd-386-cgo), const MSG_TRUNC ideal-int pkg syscall (netbsd-386-cgo), const MSG_USERFLAGS ideal-int pkg syscall (netbsd-386-cgo), const MSG_WAITALL ideal-int pkg syscall (netbsd-386-cgo), const NAME_MAX ideal-int pkg syscall (netbsd-386-cgo), const NET_RT_DUMP ideal-int pkg syscall (netbsd-386-cgo), const NET_RT_FLAGS ideal-int pkg syscall (netbsd-386-cgo), const NET_RT_IFLIST ideal-int pkg syscall (netbsd-386-cgo), const NET_RT_MAXID ideal-int pkg syscall (netbsd-386-cgo), const NET_RT_OIFLIST ideal-int pkg syscall (netbsd-386-cgo), const NET_RT_OOIFLIST ideal-int pkg syscall (netbsd-386-cgo), const NOFLSH ideal-int pkg syscall (netbsd-386-cgo), const NOTE_ATTRIB ideal-int pkg syscall (netbsd-386-cgo), const NOTE_CHILD ideal-int pkg syscall (netbsd-386-cgo), const NOTE_DELETE ideal-int pkg syscall (netbsd-386-cgo), const NOTE_EXEC ideal-int pkg syscall (netbsd-386-cgo), const NOTE_EXIT ideal-int pkg syscall (netbsd-386-cgo), const NOTE_EXTEND ideal-int pkg syscall (netbsd-386-cgo), const NOTE_FORK ideal-int pkg syscall (netbsd-386-cgo), const NOTE_LINK ideal-int pkg syscall (netbsd-386-cgo), const NOTE_LOWAT ideal-int pkg syscall (netbsd-386-cgo), const NOTE_PCTRLMASK ideal-int pkg syscall (netbsd-386-cgo), const NOTE_PDATAMASK ideal-int pkg syscall (netbsd-386-cgo), const NOTE_RENAME ideal-int pkg syscall (netbsd-386-cgo), const NOTE_REVOKE ideal-int pkg syscall (netbsd-386-cgo), const NOTE_TRACK ideal-int pkg syscall (netbsd-386-cgo), const NOTE_TRACKERR ideal-int pkg syscall (netbsd-386-cgo), const NOTE_WRITE ideal-int pkg syscall (netbsd-386-cgo), const OCRNL ideal-int pkg syscall (netbsd-386-cgo), const OFIOGETBMAP ideal-int pkg syscall (netbsd-386-cgo), const ONLCR ideal-int pkg syscall (netbsd-386-cgo), const ONLRET ideal-int pkg syscall (netbsd-386-cgo), const ONOCR ideal-int pkg syscall (netbsd-386-cgo), const ONOEOT ideal-int pkg syscall (netbsd-386-cgo), const OPOST ideal-int pkg syscall (netbsd-386-cgo), const O_ACCMODE ideal-int pkg syscall (netbsd-386-cgo), const O_ALT_IO ideal-int pkg syscall (netbsd-386-cgo), const O_DIRECT ideal-int pkg syscall (netbsd-386-cgo), const O_DIRECTORY ideal-int pkg syscall (netbsd-386-cgo), const O_DSYNC ideal-int pkg syscall (netbsd-386-cgo), const O_EXLOCK ideal-int pkg syscall (netbsd-386-cgo), const O_FSYNC ideal-int pkg syscall (netbsd-386-cgo), const O_NDELAY ideal-int pkg syscall (netbsd-386-cgo), const O_NOFOLLOW ideal-int pkg syscall (netbsd-386-cgo), const O_NOSIGPIPE ideal-int pkg syscall (netbsd-386-cgo), const O_RSYNC ideal-int pkg syscall (netbsd-386-cgo), const O_SHLOCK ideal-int pkg syscall (netbsd-386-cgo), const PARENB ideal-int pkg syscall (netbsd-386-cgo), const PARMRK ideal-int pkg syscall (netbsd-386-cgo), const PARODD ideal-int pkg syscall (netbsd-386-cgo), const PENDIN ideal-int pkg syscall (netbsd-386-cgo), const PRIO_PGRP = 1 pkg syscall (netbsd-386-cgo), const PRIO_PGRP ideal-int pkg syscall (netbsd-386-cgo), const PRIO_PROCESS = 0 pkg syscall (netbsd-386-cgo), const PRIO_PROCESS ideal-int pkg syscall (netbsd-386-cgo), const PRIO_USER = 2 pkg syscall (netbsd-386-cgo), const PRIO_USER ideal-int pkg syscall (netbsd-386-cgo), const PRI_IOFLUSH ideal-int pkg syscall (netbsd-386-cgo), const PTRACE_CONT ideal-int pkg syscall (netbsd-386-cgo), const PTRACE_KILL ideal-int pkg syscall (netbsd-386-cgo), const PTRACE_TRACEME ideal-int pkg syscall (netbsd-386-cgo), const RLIMIT_AS ideal-int pkg syscall (netbsd-386-cgo), const RLIMIT_CORE ideal-int pkg syscall (netbsd-386-cgo), const RLIMIT_CPU ideal-int pkg syscall (netbsd-386-cgo), const RLIMIT_DATA ideal-int pkg syscall (netbsd-386-cgo), const RLIMIT_FSIZE ideal-int pkg syscall (netbsd-386-cgo), const RLIMIT_NOFILE ideal-int pkg syscall (netbsd-386-cgo), const RLIMIT_STACK ideal-int pkg syscall (netbsd-386-cgo), const RLIM_INFINITY ideal-int pkg syscall (netbsd-386-cgo), const RTAX_AUTHOR ideal-int pkg syscall (netbsd-386-cgo), const RTAX_BRD ideal-int pkg syscall (netbsd-386-cgo), const RTAX_DST ideal-int pkg syscall (netbsd-386-cgo), const RTAX_GATEWAY ideal-int pkg syscall (netbsd-386-cgo), const RTAX_GENMASK ideal-int pkg syscall (netbsd-386-cgo), const RTAX_IFA ideal-int pkg syscall (netbsd-386-cgo), const RTAX_IFP ideal-int pkg syscall (netbsd-386-cgo), const RTAX_MAX ideal-int pkg syscall (netbsd-386-cgo), const RTAX_NETMASK ideal-int pkg syscall (netbsd-386-cgo), const RTAX_TAG ideal-int pkg syscall (netbsd-386-cgo), const RTA_AUTHOR ideal-int pkg syscall (netbsd-386-cgo), const RTA_BRD ideal-int pkg syscall (netbsd-386-cgo), const RTA_DST ideal-int pkg syscall (netbsd-386-cgo), const RTA_GATEWAY ideal-int pkg syscall (netbsd-386-cgo), const RTA_GENMASK ideal-int pkg syscall (netbsd-386-cgo), const RTA_IFA ideal-int pkg syscall (netbsd-386-cgo), const RTA_IFP ideal-int pkg syscall (netbsd-386-cgo), const RTA_NETMASK ideal-int pkg syscall (netbsd-386-cgo), const RTA_TAG ideal-int pkg syscall (netbsd-386-cgo), const RTF_ANNOUNCE ideal-int pkg syscall (netbsd-386-cgo), const RTF_BLACKHOLE ideal-int pkg syscall (netbsd-386-cgo), const RTF_CLONED ideal-int pkg syscall (netbsd-386-cgo), const RTF_CLONING ideal-int pkg syscall (netbsd-386-cgo), const RTF_DONE ideal-int pkg syscall (netbsd-386-cgo), const RTF_DYNAMIC ideal-int pkg syscall (netbsd-386-cgo), const RTF_GATEWAY ideal-int pkg syscall (netbsd-386-cgo), const RTF_HOST ideal-int pkg syscall (netbsd-386-cgo), const RTF_LLINFO ideal-int pkg syscall (netbsd-386-cgo), const RTF_MASK ideal-int pkg syscall (netbsd-386-cgo), const RTF_MODIFIED ideal-int pkg syscall (netbsd-386-cgo), const RTF_PROTO1 ideal-int pkg syscall (netbsd-386-cgo), const RTF_PROTO2 ideal-int pkg syscall (netbsd-386-cgo), const RTF_REJECT ideal-int pkg syscall (netbsd-386-cgo), const RTF_SRC ideal-int pkg syscall (netbsd-386-cgo), const RTF_STATIC ideal-int pkg syscall (netbsd-386-cgo), const RTF_UP ideal-int pkg syscall (netbsd-386-cgo), const RTF_XRESOLVE ideal-int pkg syscall (netbsd-386-cgo), const RTM_ADD ideal-int pkg syscall (netbsd-386-cgo), const RTM_CHANGE ideal-int pkg syscall (netbsd-386-cgo), const RTM_CHGADDR ideal-int pkg syscall (netbsd-386-cgo), const RTM_DELADDR ideal-int pkg syscall (netbsd-386-cgo), const RTM_DELETE ideal-int pkg syscall (netbsd-386-cgo), const RTM_GET ideal-int pkg syscall (netbsd-386-cgo), const RTM_IEEE80211 ideal-int pkg syscall (netbsd-386-cgo), const RTM_IFANNOUNCE ideal-int pkg syscall (netbsd-386-cgo), const RTM_IFINFO ideal-int pkg syscall (netbsd-386-cgo), const RTM_LLINFO_UPD ideal-int pkg syscall (netbsd-386-cgo), const RTM_LOCK ideal-int pkg syscall (netbsd-386-cgo), const RTM_LOSING ideal-int pkg syscall (netbsd-386-cgo), const RTM_MISS ideal-int pkg syscall (netbsd-386-cgo), const RTM_NEWADDR ideal-int pkg syscall (netbsd-386-cgo), const RTM_OIFINFO ideal-int pkg syscall (netbsd-386-cgo), const RTM_OLDADD ideal-int pkg syscall (netbsd-386-cgo), const RTM_OLDDEL ideal-int pkg syscall (netbsd-386-cgo), const RTM_OOIFINFO ideal-int pkg syscall (netbsd-386-cgo), const RTM_REDIRECT ideal-int pkg syscall (netbsd-386-cgo), const RTM_RESOLVE ideal-int pkg syscall (netbsd-386-cgo), const RTM_RTTUNIT ideal-int pkg syscall (netbsd-386-cgo), const RTM_SETGATE ideal-int pkg syscall (netbsd-386-cgo), const RTM_VERSION ideal-int pkg syscall (netbsd-386-cgo), const RTV_EXPIRE ideal-int pkg syscall (netbsd-386-cgo), const RTV_HOPCOUNT ideal-int pkg syscall (netbsd-386-cgo), const RTV_MTU ideal-int pkg syscall (netbsd-386-cgo), const RTV_RPIPE ideal-int pkg syscall (netbsd-386-cgo), const RTV_RTT ideal-int pkg syscall (netbsd-386-cgo), const RTV_RTTVAR ideal-int pkg syscall (netbsd-386-cgo), const RTV_SPIPE ideal-int pkg syscall (netbsd-386-cgo), const RTV_SSTHRESH ideal-int pkg syscall (netbsd-386-cgo), const RUSAGE_CHILDREN ideal-int pkg syscall (netbsd-386-cgo), const RUSAGE_SELF ideal-int pkg syscall (netbsd-386-cgo), const SCM_CREDS ideal-int pkg syscall (netbsd-386-cgo), const SCM_RIGHTS ideal-int pkg syscall (netbsd-386-cgo), const SCM_TIMESTAMP ideal-int pkg syscall (netbsd-386-cgo), const SIGCHLD Signal pkg syscall (netbsd-386-cgo), const SIGCONT Signal pkg syscall (netbsd-386-cgo), const SIGEMT Signal pkg syscall (netbsd-386-cgo), const SIGINFO Signal pkg syscall (netbsd-386-cgo), const SIGIO Signal pkg syscall (netbsd-386-cgo), const SIGIOT Signal pkg syscall (netbsd-386-cgo), const SIGPROF Signal pkg syscall (netbsd-386-cgo), const SIGPWR Signal pkg syscall (netbsd-386-cgo), const SIGSTOP Signal pkg syscall (netbsd-386-cgo), const SIGSYS Signal pkg syscall (netbsd-386-cgo), const SIGTSTP Signal pkg syscall (netbsd-386-cgo), const SIGTTIN Signal pkg syscall (netbsd-386-cgo), const SIGTTOU Signal pkg syscall (netbsd-386-cgo), const SIGURG Signal pkg syscall (netbsd-386-cgo), const SIGUSR1 Signal pkg syscall (netbsd-386-cgo), const SIGUSR2 Signal pkg syscall (netbsd-386-cgo), const SIGVTALRM Signal pkg syscall (netbsd-386-cgo), const SIGWINCH Signal pkg syscall (netbsd-386-cgo), const SIGXCPU Signal pkg syscall (netbsd-386-cgo), const SIGXFSZ Signal pkg syscall (netbsd-386-cgo), const SIOCADDMULTI ideal-int pkg syscall (netbsd-386-cgo), const SIOCADDRT ideal-int pkg syscall (netbsd-386-cgo), const SIOCAIFADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCALIFADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCATMARK ideal-int pkg syscall (netbsd-386-cgo), const SIOCDELMULTI ideal-int pkg syscall (netbsd-386-cgo), const SIOCDELRT ideal-int pkg syscall (netbsd-386-cgo), const SIOCDIFADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCDIFPHYADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCDLIFADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCGDRVSPEC ideal-int pkg syscall (netbsd-386-cgo), const SIOCGETPFSYNC ideal-int pkg syscall (netbsd-386-cgo), const SIOCGETSGCNT ideal-int pkg syscall (netbsd-386-cgo), const SIOCGETVIFCNT ideal-int pkg syscall (netbsd-386-cgo), const SIOCGHIWAT ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFADDRPREF ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFALIAS ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFBRDADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFCAP ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFCONF ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFDATA ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFDLT ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFDSTADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFFLAGS ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFGENERIC ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFMEDIA ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFMETRIC ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFMTU ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFNETMASK ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFPDSTADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCGIFPSRCADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCGLIFADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCGLIFPHYADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCGLINKSTR ideal-int pkg syscall (netbsd-386-cgo), const SIOCGLOWAT ideal-int pkg syscall (netbsd-386-cgo), const SIOCGPGRP ideal-int pkg syscall (netbsd-386-cgo), const SIOCGVH ideal-int pkg syscall (netbsd-386-cgo), const SIOCIFCREATE ideal-int pkg syscall (netbsd-386-cgo), const SIOCIFDESTROY ideal-int pkg syscall (netbsd-386-cgo), const SIOCIFGCLONERS ideal-int pkg syscall (netbsd-386-cgo), const SIOCINITIFADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCSDRVSPEC ideal-int pkg syscall (netbsd-386-cgo), const SIOCSETPFSYNC ideal-int pkg syscall (netbsd-386-cgo), const SIOCSHIWAT ideal-int pkg syscall (netbsd-386-cgo), const SIOCSIFADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCSIFADDRPREF ideal-int pkg syscall (netbsd-386-cgo), const SIOCSIFBRDADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCSIFCAP ideal-int pkg syscall (netbsd-386-cgo), const SIOCSIFDSTADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCSIFFLAGS ideal-int pkg syscall (netbsd-386-cgo), const SIOCSIFGENERIC ideal-int pkg syscall (netbsd-386-cgo), const SIOCSIFMEDIA ideal-int pkg syscall (netbsd-386-cgo), const SIOCSIFMETRIC ideal-int pkg syscall (netbsd-386-cgo), const SIOCSIFMTU ideal-int pkg syscall (netbsd-386-cgo), const SIOCSIFNETMASK ideal-int pkg syscall (netbsd-386-cgo), const SIOCSIFPHYADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCSLIFPHYADDR ideal-int pkg syscall (netbsd-386-cgo), const SIOCSLINKSTR ideal-int pkg syscall (netbsd-386-cgo), const SIOCSLOWAT ideal-int pkg syscall (netbsd-386-cgo), const SIOCSPGRP ideal-int pkg syscall (netbsd-386-cgo), const SIOCSVH ideal-int pkg syscall (netbsd-386-cgo), const SIOCZIFDATA ideal-int pkg syscall (netbsd-386-cgo), const SOCK_CLOEXEC ideal-int pkg syscall (netbsd-386-cgo), const SOCK_FLAGS_MASK ideal-int pkg syscall (netbsd-386-cgo), const SOCK_NONBLOCK ideal-int pkg syscall (netbsd-386-cgo), const SOCK_NOSIGPIPE ideal-int pkg syscall (netbsd-386-cgo), const SOCK_RDM ideal-int pkg syscall (netbsd-386-cgo), const SO_ACCEPTCONN ideal-int pkg syscall (netbsd-386-cgo), const SO_ACCEPTFILTER ideal-int pkg syscall (netbsd-386-cgo), const SO_DEBUG ideal-int pkg syscall (netbsd-386-cgo), const SO_ERROR ideal-int pkg syscall (netbsd-386-cgo), const SO_NOHEADER ideal-int pkg syscall (netbsd-386-cgo), const SO_NOSIGPIPE ideal-int pkg syscall (netbsd-386-cgo), const SO_OOBINLINE ideal-int pkg syscall (netbsd-386-cgo), const SO_OVERFLOWED ideal-int pkg syscall (netbsd-386-cgo), const SO_RCVLOWAT ideal-int pkg syscall (netbsd-386-cgo), const SO_RCVTIMEO ideal-int pkg syscall (netbsd-386-cgo), const SO_REUSEPORT ideal-int pkg syscall (netbsd-386-cgo), const SO_SNDLOWAT ideal-int pkg syscall (netbsd-386-cgo), const SO_SNDTIMEO ideal-int pkg syscall (netbsd-386-cgo), const SO_TIMESTAMP ideal-int pkg syscall (netbsd-386-cgo), const SO_TYPE ideal-int pkg syscall (netbsd-386-cgo), const SO_USELOOPBACK ideal-int pkg syscall (netbsd-386-cgo), const SYSCTL_VERSION ideal-int pkg syscall (netbsd-386-cgo), const SYSCTL_VERS_0 ideal-int pkg syscall (netbsd-386-cgo), const SYSCTL_VERS_1 ideal-int pkg syscall (netbsd-386-cgo), const SYSCTL_VERS_MASK ideal-int pkg syscall (netbsd-386-cgo), const SYS_ACCEPT ideal-int pkg syscall (netbsd-386-cgo), const SYS_ACCESS ideal-int pkg syscall (netbsd-386-cgo), const SYS_ACCT ideal-int pkg syscall (netbsd-386-cgo), const SYS_ADJTIME ideal-int pkg syscall (netbsd-386-cgo), const SYS_BIND ideal-int pkg syscall (netbsd-386-cgo), const SYS_BREAK ideal-int pkg syscall (netbsd-386-cgo), const SYS_CHDIR ideal-int pkg syscall (netbsd-386-cgo), const SYS_CHFLAGS ideal-int pkg syscall (netbsd-386-cgo), const SYS_CHMOD ideal-int pkg syscall (netbsd-386-cgo), const SYS_CHOWN ideal-int pkg syscall (netbsd-386-cgo), const SYS_CHROOT ideal-int pkg syscall (netbsd-386-cgo), const SYS_CLOCK_GETRES ideal-int pkg syscall (netbsd-386-cgo), const SYS_CLOCK_GETTIME ideal-int pkg syscall (netbsd-386-cgo), const SYS_CLOCK_SETTIME ideal-int pkg syscall (netbsd-386-cgo), const SYS_CLOSE ideal-int pkg syscall (netbsd-386-cgo), const SYS_CONNECT ideal-int pkg syscall (netbsd-386-cgo), const SYS_DUP ideal-int pkg syscall (netbsd-386-cgo), const SYS_DUP2 ideal-int pkg syscall (netbsd-386-cgo), const SYS_DUP3 ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXECVE ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXIT ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXTATTRCTL ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_DELETE_FD ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_DELETE_FILE ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_DELETE_LINK ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_GET_FD ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_GET_FILE ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_GET_LINK ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_LIST_FD ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_LIST_FILE ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_LIST_LINK ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_SET_FD ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_SET_FILE ideal-int pkg syscall (netbsd-386-cgo), const SYS_EXTATTR_SET_LINK ideal-int pkg syscall (netbsd-386-cgo), const SYS_FACCESSAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_FCHDIR ideal-int pkg syscall (netbsd-386-cgo), const SYS_FCHFLAGS ideal-int pkg syscall (netbsd-386-cgo), const SYS_FCHMOD ideal-int pkg syscall (netbsd-386-cgo), const SYS_FCHMODAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_FCHOWN ideal-int pkg syscall (netbsd-386-cgo), const SYS_FCHOWNAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_FCHROOT ideal-int pkg syscall (netbsd-386-cgo), const SYS_FCNTL ideal-int pkg syscall (netbsd-386-cgo), const SYS_FDATASYNC ideal-int pkg syscall (netbsd-386-cgo), const SYS_FEXECVE ideal-int pkg syscall (netbsd-386-cgo), const SYS_FGETXATTR ideal-int pkg syscall (netbsd-386-cgo), const SYS_FHSTAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_FKTRACE ideal-int pkg syscall (netbsd-386-cgo), const SYS_FLISTXATTR ideal-int pkg syscall (netbsd-386-cgo), const SYS_FLOCK ideal-int pkg syscall (netbsd-386-cgo), const SYS_FORK ideal-int pkg syscall (netbsd-386-cgo), const SYS_FPATHCONF ideal-int pkg syscall (netbsd-386-cgo), const SYS_FREMOVEXATTR ideal-int pkg syscall (netbsd-386-cgo), const SYS_FSETXATTR ideal-int pkg syscall (netbsd-386-cgo), const SYS_FSTAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_FSTATAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_FSTATVFS1 ideal-int pkg syscall (netbsd-386-cgo), const SYS_FSYNC ideal-int pkg syscall (netbsd-386-cgo), const SYS_FSYNC_RANGE ideal-int pkg syscall (netbsd-386-cgo), const SYS_FTRUNCATE ideal-int pkg syscall (netbsd-386-cgo), const SYS_FUTIMENS ideal-int pkg syscall (netbsd-386-cgo), const SYS_FUTIMES ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETCONTEXT ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETDENTS ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETEGID ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETEUID ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETFH ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETGID ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETGROUPS ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETITIMER ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETPEERNAME ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETPGID ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETPGRP ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETPID ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETPPID ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETPRIORITY ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETRLIMIT ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETRUSAGE ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETSID ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETSOCKNAME ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETSOCKOPT ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETTIMEOFDAY ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETUID ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETVFSSTAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_GETXATTR ideal-int pkg syscall (netbsd-386-cgo), const SYS_IOCTL ideal-int pkg syscall (netbsd-386-cgo), const SYS_ISSETUGID ideal-int pkg syscall (netbsd-386-cgo), const SYS_KEVENT ideal-int pkg syscall (netbsd-386-cgo), const SYS_KILL ideal-int pkg syscall (netbsd-386-cgo), const SYS_KQUEUE ideal-int pkg syscall (netbsd-386-cgo), const SYS_KQUEUE1 ideal-int pkg syscall (netbsd-386-cgo), const SYS_KTRACE ideal-int pkg syscall (netbsd-386-cgo), const SYS_LCHFLAGS ideal-int pkg syscall (netbsd-386-cgo), const SYS_LCHMOD ideal-int pkg syscall (netbsd-386-cgo), const SYS_LCHOWN ideal-int pkg syscall (netbsd-386-cgo), const SYS_LGETXATTR ideal-int pkg syscall (netbsd-386-cgo), const SYS_LINK ideal-int pkg syscall (netbsd-386-cgo), const SYS_LINKAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_LISTEN ideal-int pkg syscall (netbsd-386-cgo), const SYS_LISTXATTR ideal-int pkg syscall (netbsd-386-cgo), const SYS_LLISTXATTR ideal-int pkg syscall (netbsd-386-cgo), const SYS_LREMOVEXATTR ideal-int pkg syscall (netbsd-386-cgo), const SYS_LSEEK ideal-int pkg syscall (netbsd-386-cgo), const SYS_LSETXATTR ideal-int pkg syscall (netbsd-386-cgo), const SYS_LSTAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_LUTIMES ideal-int pkg syscall (netbsd-386-cgo), const SYS_MADVISE ideal-int pkg syscall (netbsd-386-cgo), const SYS_MINCORE ideal-int pkg syscall (netbsd-386-cgo), const SYS_MINHERIT ideal-int pkg syscall (netbsd-386-cgo), const SYS_MKDIR ideal-int pkg syscall (netbsd-386-cgo), const SYS_MKDIRAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_MKFIFO ideal-int pkg syscall (netbsd-386-cgo), const SYS_MKFIFOAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_MKNOD ideal-int pkg syscall (netbsd-386-cgo), const SYS_MKNODAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_MLOCK ideal-int pkg syscall (netbsd-386-cgo), const SYS_MLOCKALL ideal-int pkg syscall (netbsd-386-cgo), const SYS_MMAP ideal-int pkg syscall (netbsd-386-cgo), const SYS_MODCTL ideal-int pkg syscall (netbsd-386-cgo), const SYS_MOUNT ideal-int pkg syscall (netbsd-386-cgo), const SYS_MPROTECT ideal-int pkg syscall (netbsd-386-cgo), const SYS_MREMAP ideal-int pkg syscall (netbsd-386-cgo), const SYS_MSGCTL ideal-int pkg syscall (netbsd-386-cgo), const SYS_MSGGET ideal-int pkg syscall (netbsd-386-cgo), const SYS_MSGRCV ideal-int pkg syscall (netbsd-386-cgo), const SYS_MSGSND ideal-int pkg syscall (netbsd-386-cgo), const SYS_MUNLOCK ideal-int pkg syscall (netbsd-386-cgo), const SYS_MUNLOCKALL ideal-int pkg syscall (netbsd-386-cgo), const SYS_MUNMAP ideal-int pkg syscall (netbsd-386-cgo), const SYS_NANOSLEEP ideal-int pkg syscall (netbsd-386-cgo), const SYS_NTP_ADJTIME ideal-int pkg syscall (netbsd-386-cgo), const SYS_NTP_GETTIME ideal-int pkg syscall (netbsd-386-cgo), const SYS_OPEN ideal-int pkg syscall (netbsd-386-cgo), const SYS_OPENAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_PACCEPT ideal-int pkg syscall (netbsd-386-cgo), const SYS_PATHCONF ideal-int pkg syscall (netbsd-386-cgo), const SYS_PIPE ideal-int pkg syscall (netbsd-386-cgo), const SYS_PIPE2 ideal-int pkg syscall (netbsd-386-cgo), const SYS_PMC_CONTROL ideal-int pkg syscall (netbsd-386-cgo), const SYS_PMC_GET_INFO ideal-int pkg syscall (netbsd-386-cgo), const SYS_POLL ideal-int pkg syscall (netbsd-386-cgo), const SYS_POLLTS ideal-int pkg syscall (netbsd-386-cgo), const SYS_POSIX_FADVISE ideal-int pkg syscall (netbsd-386-cgo), const SYS_POSIX_SPAWN ideal-int pkg syscall (netbsd-386-cgo), const SYS_PREAD ideal-int pkg syscall (netbsd-386-cgo), const SYS_PREADV ideal-int pkg syscall (netbsd-386-cgo), const SYS_PROFIL ideal-int pkg syscall (netbsd-386-cgo), const SYS_PSELECT ideal-int pkg syscall (netbsd-386-cgo), const SYS_PSET_ASSIGN ideal-int pkg syscall (netbsd-386-cgo), const SYS_PSET_CREATE ideal-int pkg syscall (netbsd-386-cgo), const SYS_PSET_DESTROY ideal-int pkg syscall (netbsd-386-cgo), const SYS_PTRACE ideal-int pkg syscall (netbsd-386-cgo), const SYS_PWRITE ideal-int pkg syscall (netbsd-386-cgo), const SYS_PWRITEV ideal-int pkg syscall (netbsd-386-cgo), const SYS_RASCTL ideal-int pkg syscall (netbsd-386-cgo), const SYS_READ ideal-int pkg syscall (netbsd-386-cgo), const SYS_READLINK ideal-int pkg syscall (netbsd-386-cgo), const SYS_READLINKAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_READV ideal-int pkg syscall (netbsd-386-cgo), const SYS_REBOOT ideal-int pkg syscall (netbsd-386-cgo), const SYS_RECVFROM ideal-int pkg syscall (netbsd-386-cgo), const SYS_RECVMMSG ideal-int pkg syscall (netbsd-386-cgo), const SYS_RECVMSG ideal-int pkg syscall (netbsd-386-cgo), const SYS_REMOVEXATTR ideal-int pkg syscall (netbsd-386-cgo), const SYS_RENAME ideal-int pkg syscall (netbsd-386-cgo), const SYS_RENAMEAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_REVOKE ideal-int pkg syscall (netbsd-386-cgo), const SYS_RMDIR ideal-int pkg syscall (netbsd-386-cgo), const SYS_SBRK ideal-int pkg syscall (netbsd-386-cgo), const SYS_SCHED_YIELD ideal-int pkg syscall (netbsd-386-cgo), const SYS_SELECT ideal-int pkg syscall (netbsd-386-cgo), const SYS_SEMCONFIG ideal-int pkg syscall (netbsd-386-cgo), const SYS_SEMGET ideal-int pkg syscall (netbsd-386-cgo), const SYS_SEMOP ideal-int pkg syscall (netbsd-386-cgo), const SYS_SENDMMSG ideal-int pkg syscall (netbsd-386-cgo), const SYS_SENDMSG ideal-int pkg syscall (netbsd-386-cgo), const SYS_SENDTO ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETCONTEXT ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETEGID ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETEUID ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETGID ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETGROUPS ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETITIMER ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETPGID ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETPRIORITY ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETREGID ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETREUID ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETRLIMIT ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETSID ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETSOCKOPT ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETTIMEOFDAY ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETUID ideal-int pkg syscall (netbsd-386-cgo), const SYS_SETXATTR ideal-int pkg syscall (netbsd-386-cgo), const SYS_SHMAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_SHMCTL ideal-int pkg syscall (netbsd-386-cgo), const SYS_SHMDT ideal-int pkg syscall (netbsd-386-cgo), const SYS_SHMGET ideal-int pkg syscall (netbsd-386-cgo), const SYS_SHUTDOWN ideal-int pkg syscall (netbsd-386-cgo), const SYS_SIGQUEUEINFO ideal-int pkg syscall (netbsd-386-cgo), const SYS_SOCKET ideal-int pkg syscall (netbsd-386-cgo), const SYS_SOCKETPAIR ideal-int pkg syscall (netbsd-386-cgo), const SYS_SSTK ideal-int pkg syscall (netbsd-386-cgo), const SYS_STAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_STATVFS1 ideal-int pkg syscall (netbsd-386-cgo), const SYS_SWAPCTL ideal-int pkg syscall (netbsd-386-cgo), const SYS_SYMLINK ideal-int pkg syscall (netbsd-386-cgo), const SYS_SYMLINKAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_SYNC ideal-int pkg syscall (netbsd-386-cgo), const SYS_SYSARCH ideal-int pkg syscall (netbsd-386-cgo), const SYS_TIMER_CREATE ideal-int pkg syscall (netbsd-386-cgo), const SYS_TIMER_DELETE ideal-int pkg syscall (netbsd-386-cgo), const SYS_TIMER_GETOVERRUN ideal-int pkg syscall (netbsd-386-cgo), const SYS_TIMER_GETTIME ideal-int pkg syscall (netbsd-386-cgo), const SYS_TIMER_SETTIME ideal-int pkg syscall (netbsd-386-cgo), const SYS_TRUNCATE ideal-int pkg syscall (netbsd-386-cgo), const SYS_UMASK ideal-int pkg syscall (netbsd-386-cgo), const SYS_UNDELETE ideal-int pkg syscall (netbsd-386-cgo), const SYS_UNLINK ideal-int pkg syscall (netbsd-386-cgo), const SYS_UNLINKAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_UNMOUNT ideal-int pkg syscall (netbsd-386-cgo), const SYS_UTIMENSAT ideal-int pkg syscall (netbsd-386-cgo), const SYS_UTIMES ideal-int pkg syscall (netbsd-386-cgo), const SYS_UTRACE ideal-int pkg syscall (netbsd-386-cgo), const SYS_UUIDGEN ideal-int pkg syscall (netbsd-386-cgo), const SYS_VADVISE ideal-int pkg syscall (netbsd-386-cgo), const SYS_VFORK ideal-int pkg syscall (netbsd-386-cgo), const SYS_WAIT4 ideal-int pkg syscall (netbsd-386-cgo), const SYS_WRITE ideal-int pkg syscall (netbsd-386-cgo), const SYS_WRITEV ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_CONTINUE ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_CREATE ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_CTL ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_DETACH ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_EXIT ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_GETNAME ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_GETPRIVATE ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_KILL ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_PARK ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_SELF ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_SETNAME ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_SETPRIVATE ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_SUSPEND ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_UNPARK ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_UNPARK_ALL ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_WAIT ideal-int pkg syscall (netbsd-386-cgo), const SYS__LWP_WAKEUP ideal-int pkg syscall (netbsd-386-cgo), const SYS__PSET_BIND ideal-int pkg syscall (netbsd-386-cgo), const SYS__SCHED_GETAFFINITY ideal-int pkg syscall (netbsd-386-cgo), const SYS__SCHED_GETPARAM ideal-int pkg syscall (netbsd-386-cgo), const SYS__SCHED_SETAFFINITY ideal-int pkg syscall (netbsd-386-cgo), const SYS__SCHED_SETPARAM ideal-int pkg syscall (netbsd-386-cgo), const SYS___CLONE ideal-int pkg syscall (netbsd-386-cgo), const SYS___GETCWD ideal-int pkg syscall (netbsd-386-cgo), const SYS___GETLOGIN ideal-int pkg syscall (netbsd-386-cgo), const SYS___POSIX_CHOWN ideal-int pkg syscall (netbsd-386-cgo), const SYS___POSIX_FCHOWN ideal-int pkg syscall (netbsd-386-cgo), const SYS___POSIX_LCHOWN ideal-int pkg syscall (netbsd-386-cgo), const SYS___POSIX_RENAME ideal-int pkg syscall (netbsd-386-cgo), const SYS___QUOTACTL ideal-int pkg syscall (netbsd-386-cgo), const SYS___SEMCTL ideal-int pkg syscall (netbsd-386-cgo), const SYS___SETLOGIN ideal-int pkg syscall (netbsd-386-cgo), const SYS___SIGACTION_SIGTRAMP ideal-int pkg syscall (netbsd-386-cgo), const SYS___SIGTIMEDWAIT ideal-int pkg syscall (netbsd-386-cgo), const SYS___SYSCTL ideal-int pkg syscall (netbsd-386-cgo), const S_ARCH1 ideal-int pkg syscall (netbsd-386-cgo), const S_ARCH2 ideal-int pkg syscall (netbsd-386-cgo), const S_BLKSIZE ideal-int pkg syscall (netbsd-386-cgo), const S_IEXEC ideal-int pkg syscall (netbsd-386-cgo), const S_IFWHT ideal-int pkg syscall (netbsd-386-cgo), const S_IREAD ideal-int pkg syscall (netbsd-386-cgo), const S_IRGRP ideal-int pkg syscall (netbsd-386-cgo), const S_IROTH ideal-int pkg syscall (netbsd-386-cgo), const S_IRWXG ideal-int pkg syscall (netbsd-386-cgo), const S_IRWXO ideal-int pkg syscall (netbsd-386-cgo), const S_IRWXU ideal-int pkg syscall (netbsd-386-cgo), const S_ISTXT ideal-int pkg syscall (netbsd-386-cgo), const S_IWGRP ideal-int pkg syscall (netbsd-386-cgo), const S_IWOTH ideal-int pkg syscall (netbsd-386-cgo), const S_IWRITE ideal-int pkg syscall (netbsd-386-cgo), const S_IXGRP ideal-int pkg syscall (netbsd-386-cgo), const S_IXOTH ideal-int pkg syscall (netbsd-386-cgo), const S_LOGIN_SET ideal-int pkg syscall (netbsd-386-cgo), const SizeofBpfHdr ideal-int pkg syscall (netbsd-386-cgo), const SizeofBpfInsn ideal-int pkg syscall (netbsd-386-cgo), const SizeofBpfProgram ideal-int pkg syscall (netbsd-386-cgo), const SizeofBpfStat ideal-int pkg syscall (netbsd-386-cgo), const SizeofBpfVersion ideal-int pkg syscall (netbsd-386-cgo), const SizeofCmsghdr ideal-int pkg syscall (netbsd-386-cgo), const SizeofICMPv6Filter = 32 pkg syscall (netbsd-386-cgo), const SizeofICMPv6Filter ideal-int pkg syscall (netbsd-386-cgo), const SizeofIPMreq ideal-int pkg syscall (netbsd-386-cgo), const SizeofIPv6MTUInfo = 32 pkg syscall (netbsd-386-cgo), const SizeofIPv6MTUInfo ideal-int pkg syscall (netbsd-386-cgo), const SizeofIPv6Mreq ideal-int pkg syscall (netbsd-386-cgo), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (netbsd-386-cgo), const SizeofIfData ideal-int pkg syscall (netbsd-386-cgo), const SizeofIfMsghdr ideal-int pkg syscall (netbsd-386-cgo), const SizeofIfaMsghdr ideal-int pkg syscall (netbsd-386-cgo), const SizeofInet6Pktinfo ideal-int pkg syscall (netbsd-386-cgo), const SizeofLinger ideal-int pkg syscall (netbsd-386-cgo), const SizeofMsghdr ideal-int pkg syscall (netbsd-386-cgo), const SizeofRtMetrics ideal-int pkg syscall (netbsd-386-cgo), const SizeofRtMsghdr ideal-int pkg syscall (netbsd-386-cgo), const SizeofSockaddrAny ideal-int pkg syscall (netbsd-386-cgo), const SizeofSockaddrDatalink ideal-int pkg syscall (netbsd-386-cgo), const SizeofSockaddrInet4 ideal-int pkg syscall (netbsd-386-cgo), const SizeofSockaddrInet6 ideal-int pkg syscall (netbsd-386-cgo), const SizeofSockaddrUnix ideal-int pkg syscall (netbsd-386-cgo), const TCIFLUSH ideal-int pkg syscall (netbsd-386-cgo), const TCIOFLUSH ideal-int pkg syscall (netbsd-386-cgo), const TCOFLUSH ideal-int pkg syscall (netbsd-386-cgo), const TCP_CONGCTL ideal-int pkg syscall (netbsd-386-cgo), const TCP_KEEPCNT ideal-int pkg syscall (netbsd-386-cgo), const TCP_KEEPIDLE ideal-int pkg syscall (netbsd-386-cgo), const TCP_KEEPINIT ideal-int pkg syscall (netbsd-386-cgo), const TCP_KEEPINTVL ideal-int pkg syscall (netbsd-386-cgo), const TCP_MAXBURST ideal-int pkg syscall (netbsd-386-cgo), const TCP_MAXSEG ideal-int pkg syscall (netbsd-386-cgo), const TCP_MAXWIN ideal-int pkg syscall (netbsd-386-cgo), const TCP_MAX_WINSHIFT ideal-int pkg syscall (netbsd-386-cgo), const TCP_MD5SIG ideal-int pkg syscall (netbsd-386-cgo), const TCP_MINMSS ideal-int pkg syscall (netbsd-386-cgo), const TCP_MSS ideal-int pkg syscall (netbsd-386-cgo), const TCSAFLUSH ideal-int pkg syscall (netbsd-386-cgo), const TIOCCBRK ideal-int pkg syscall (netbsd-386-cgo), const TIOCCDTR ideal-int pkg syscall (netbsd-386-cgo), const TIOCCONS ideal-int pkg syscall (netbsd-386-cgo), const TIOCDCDTIMESTAMP ideal-int pkg syscall (netbsd-386-cgo), const TIOCDRAIN ideal-int pkg syscall (netbsd-386-cgo), const TIOCEXCL ideal-int pkg syscall (netbsd-386-cgo), const TIOCEXT ideal-int pkg syscall (netbsd-386-cgo), const TIOCFLAG_CDTRCTS ideal-int pkg syscall (netbsd-386-cgo), const TIOCFLAG_CLOCAL ideal-int pkg syscall (netbsd-386-cgo), const TIOCFLAG_CRTSCTS ideal-int pkg syscall (netbsd-386-cgo), const TIOCFLAG_MDMBUF ideal-int pkg syscall (netbsd-386-cgo), const TIOCFLAG_SOFTCAR ideal-int pkg syscall (netbsd-386-cgo), const TIOCFLUSH ideal-int pkg syscall (netbsd-386-cgo), const TIOCGETA ideal-int pkg syscall (netbsd-386-cgo), const TIOCGETD ideal-int pkg syscall (netbsd-386-cgo), const TIOCGFLAGS ideal-int pkg syscall (netbsd-386-cgo), const TIOCGLINED ideal-int pkg syscall (netbsd-386-cgo), const TIOCGPGRP ideal-int pkg syscall (netbsd-386-cgo), const TIOCGQSIZE ideal-int pkg syscall (netbsd-386-cgo), const TIOCGRANTPT ideal-int pkg syscall (netbsd-386-cgo), const TIOCGSID ideal-int pkg syscall (netbsd-386-cgo), const TIOCGSIZE ideal-int pkg syscall (netbsd-386-cgo), const TIOCGWINSZ ideal-int pkg syscall (netbsd-386-cgo), const TIOCMBIC ideal-int pkg syscall (netbsd-386-cgo), const TIOCMBIS ideal-int pkg syscall (netbsd-386-cgo), const TIOCMGET ideal-int pkg syscall (netbsd-386-cgo), const TIOCMSET ideal-int pkg syscall (netbsd-386-cgo), const TIOCM_CAR ideal-int pkg syscall (netbsd-386-cgo), const TIOCM_CD ideal-int pkg syscall (netbsd-386-cgo), const TIOCM_CTS ideal-int pkg syscall (netbsd-386-cgo), const TIOCM_DSR ideal-int pkg syscall (netbsd-386-cgo), const TIOCM_DTR ideal-int pkg syscall (netbsd-386-cgo), const TIOCM_LE ideal-int pkg syscall (netbsd-386-cgo), const TIOCM_RI ideal-int pkg syscall (netbsd-386-cgo), const TIOCM_RNG ideal-int pkg syscall (netbsd-386-cgo), const TIOCM_RTS ideal-int pkg syscall (netbsd-386-cgo), const TIOCM_SR ideal-int pkg syscall (netbsd-386-cgo), const TIOCM_ST ideal-int pkg syscall (netbsd-386-cgo), const TIOCNOTTY ideal-int pkg syscall (netbsd-386-cgo), const TIOCNXCL ideal-int pkg syscall (netbsd-386-cgo), const TIOCOUTQ ideal-int pkg syscall (netbsd-386-cgo), const TIOCPKT ideal-int pkg syscall (netbsd-386-cgo), const TIOCPKT_DATA ideal-int pkg syscall (netbsd-386-cgo), const TIOCPKT_DOSTOP ideal-int pkg syscall (netbsd-386-cgo), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (netbsd-386-cgo), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (netbsd-386-cgo), const TIOCPKT_IOCTL ideal-int pkg syscall (netbsd-386-cgo), const TIOCPKT_NOSTOP ideal-int pkg syscall (netbsd-386-cgo), const TIOCPKT_START ideal-int pkg syscall (netbsd-386-cgo), const TIOCPKT_STOP ideal-int pkg syscall (netbsd-386-cgo), const TIOCPTMGET ideal-int pkg syscall (netbsd-386-cgo), const TIOCPTSNAME ideal-int pkg syscall (netbsd-386-cgo), const TIOCRCVFRAME ideal-int pkg syscall (netbsd-386-cgo), const TIOCREMOTE ideal-int pkg syscall (netbsd-386-cgo), const TIOCSBRK ideal-int pkg syscall (netbsd-386-cgo), const TIOCSCTTY ideal-int pkg syscall (netbsd-386-cgo), const TIOCSDTR ideal-int pkg syscall (netbsd-386-cgo), const TIOCSETA ideal-int pkg syscall (netbsd-386-cgo), const TIOCSETAF ideal-int pkg syscall (netbsd-386-cgo), const TIOCSETAW ideal-int pkg syscall (netbsd-386-cgo), const TIOCSETD ideal-int pkg syscall (netbsd-386-cgo), const TIOCSFLAGS ideal-int pkg syscall (netbsd-386-cgo), const TIOCSIG ideal-int pkg syscall (netbsd-386-cgo), const TIOCSLINED ideal-int pkg syscall (netbsd-386-cgo), const TIOCSPGRP ideal-int pkg syscall (netbsd-386-cgo), const TIOCSQSIZE ideal-int pkg syscall (netbsd-386-cgo), const TIOCSSIZE ideal-int pkg syscall (netbsd-386-cgo), const TIOCSTART ideal-int pkg syscall (netbsd-386-cgo), const TIOCSTAT ideal-int pkg syscall (netbsd-386-cgo), const TIOCSTI ideal-int pkg syscall (netbsd-386-cgo), const TIOCSTOP ideal-int pkg syscall (netbsd-386-cgo), const TIOCSWINSZ ideal-int pkg syscall (netbsd-386-cgo), const TIOCUCNTL ideal-int pkg syscall (netbsd-386-cgo), const TIOCXMTFRAME ideal-int pkg syscall (netbsd-386-cgo), const TOSTOP ideal-int pkg syscall (netbsd-386-cgo), const VDISCARD ideal-int pkg syscall (netbsd-386-cgo), const VDSUSP ideal-int pkg syscall (netbsd-386-cgo), const VEOF ideal-int pkg syscall (netbsd-386-cgo), const VEOL ideal-int pkg syscall (netbsd-386-cgo), const VEOL2 ideal-int pkg syscall (netbsd-386-cgo), const VERASE ideal-int pkg syscall (netbsd-386-cgo), const VINTR ideal-int pkg syscall (netbsd-386-cgo), const VKILL ideal-int pkg syscall (netbsd-386-cgo), const VLNEXT ideal-int pkg syscall (netbsd-386-cgo), const VMIN ideal-int pkg syscall (netbsd-386-cgo), const VQUIT ideal-int pkg syscall (netbsd-386-cgo), const VREPRINT ideal-int pkg syscall (netbsd-386-cgo), const VSTART ideal-int pkg syscall (netbsd-386-cgo), const VSTATUS ideal-int pkg syscall (netbsd-386-cgo), const VSTOP ideal-int pkg syscall (netbsd-386-cgo), const VSUSP ideal-int pkg syscall (netbsd-386-cgo), const VTIME ideal-int pkg syscall (netbsd-386-cgo), const VWERASE ideal-int pkg syscall (netbsd-386-cgo), const WALL ideal-int pkg syscall (netbsd-386-cgo), const WALLSIG ideal-int pkg syscall (netbsd-386-cgo), const WALTSIG ideal-int pkg syscall (netbsd-386-cgo), const WCLONE ideal-int pkg syscall (netbsd-386-cgo), const WCOREFLAG ideal-int pkg syscall (netbsd-386-cgo), const WNOHANG ideal-int pkg syscall (netbsd-386-cgo), const WNOWAIT ideal-int pkg syscall (netbsd-386-cgo), const WNOZOMBIE ideal-int pkg syscall (netbsd-386-cgo), const WOPTSCHECKED ideal-int pkg syscall (netbsd-386-cgo), const WSTOPPED ideal-int pkg syscall (netbsd-386-cgo), const WUNTRACED ideal-int pkg syscall (netbsd-386-cgo), func Accept(int) (int, Sockaddr, error) pkg syscall (netbsd-386-cgo), func Access(string, uint32) error pkg syscall (netbsd-386-cgo), func Adjtime(*Timeval, *Timeval) error pkg syscall (netbsd-386-cgo), func Bind(int, Sockaddr) error pkg syscall (netbsd-386-cgo), func BpfBuflen(int) (int, error) pkg syscall (netbsd-386-cgo), func BpfDatalink(int) (int, error) pkg syscall (netbsd-386-cgo), func BpfHeadercmpl(int) (int, error) pkg syscall (netbsd-386-cgo), func BpfInterface(int, string) (string, error) pkg syscall (netbsd-386-cgo), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (netbsd-386-cgo), func BpfStats(int) (*BpfStat, error) pkg syscall (netbsd-386-cgo), func BpfStmt(int, int) *BpfInsn pkg syscall (netbsd-386-cgo), func BpfTimeout(int) (*Timeval, error) pkg syscall (netbsd-386-cgo), func CheckBpfVersion(int) error pkg syscall (netbsd-386-cgo), func Chflags(string, int) error pkg syscall (netbsd-386-cgo), func Chroot(string) error pkg syscall (netbsd-386-cgo), func Close(int) error pkg syscall (netbsd-386-cgo), func CloseOnExec(int) pkg syscall (netbsd-386-cgo), func CmsgLen(int) int pkg syscall (netbsd-386-cgo), func CmsgSpace(int) int pkg syscall (netbsd-386-cgo), func Connect(int, Sockaddr) error pkg syscall (netbsd-386-cgo), func Dup(int) (int, error) pkg syscall (netbsd-386-cgo), func Dup2(int, int) error pkg syscall (netbsd-386-cgo), func Fchdir(int) error pkg syscall (netbsd-386-cgo), func Fchflags(int, int) error pkg syscall (netbsd-386-cgo), func Fchmod(int, uint32) error pkg syscall (netbsd-386-cgo), func Fchown(int, int, int) error pkg syscall (netbsd-386-cgo), func Flock(int, int) error pkg syscall (netbsd-386-cgo), func FlushBpf(int) error pkg syscall (netbsd-386-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (netbsd-386-cgo), func Fpathconf(int, int) (int, error) pkg syscall (netbsd-386-cgo), func Fstat(int, *Stat_t) error pkg syscall (netbsd-386-cgo), func Fsync(int) error pkg syscall (netbsd-386-cgo), func Ftruncate(int, int64) error pkg syscall (netbsd-386-cgo), func Futimes(int, []Timeval) error pkg syscall (netbsd-386-cgo), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (netbsd-386-cgo), func Getpeername(int) (Sockaddr, error) pkg syscall (netbsd-386-cgo), func Getpgid(int) (int, error) pkg syscall (netbsd-386-cgo), func Getpgrp() int pkg syscall (netbsd-386-cgo), func Getpriority(int, int) (int, error) pkg syscall (netbsd-386-cgo), func Getrlimit(int, *Rlimit) error pkg syscall (netbsd-386-cgo), func Getrusage(int, *Rusage) error pkg syscall (netbsd-386-cgo), func Getsid(int) (int, error) pkg syscall (netbsd-386-cgo), func Getsockname(int) (Sockaddr, error) pkg syscall (netbsd-386-cgo), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (netbsd-386-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (netbsd-386-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (netbsd-386-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (netbsd-386-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (netbsd-386-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (netbsd-386-cgo), func GetsockoptInt(int, int, int) (int, error) pkg syscall (netbsd-386-cgo), func Issetugid() bool pkg syscall (netbsd-386-cgo), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (netbsd-386-cgo), func Kill(int, Signal) error pkg syscall (netbsd-386-cgo), func Kqueue() (int, error) pkg syscall (netbsd-386-cgo), func Listen(int, int) error pkg syscall (netbsd-386-cgo), func Lstat(string, *Stat_t) error pkg syscall (netbsd-386-cgo), func Mkfifo(string, uint32) error pkg syscall (netbsd-386-cgo), func Mknod(string, uint32, int) error pkg syscall (netbsd-386-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (netbsd-386-cgo), func Munmap([]uint8) error pkg syscall (netbsd-386-cgo), func Nanosleep(*Timespec, *Timespec) error pkg syscall (netbsd-386-cgo), func Open(string, int, uint32) (int, error) pkg syscall (netbsd-386-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (netbsd-386-cgo), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (netbsd-386-cgo), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (netbsd-386-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (netbsd-386-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (netbsd-386-cgo), func Pathconf(string, int) (int, error) pkg syscall (netbsd-386-cgo), func Pipe([]int) error pkg syscall (netbsd-386-cgo), func Pread(int, []uint8, int64) (int, error) pkg syscall (netbsd-386-cgo), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (netbsd-386-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-386-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-386-cgo), func Read(int, []uint8) (int, error) pkg syscall (netbsd-386-cgo), func ReadDirent(int, []uint8) (int, error) pkg syscall (netbsd-386-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (netbsd-386-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (netbsd-386-cgo), func Revoke(string) error pkg syscall (netbsd-386-cgo), func RouteRIB(int, int) ([]uint8, error) pkg syscall (netbsd-386-cgo), func Seek(int, int64, int) (int64, error) pkg syscall (netbsd-386-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (netbsd-386-cgo), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (netbsd-386-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (netbsd-386-cgo), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (netbsd-386-cgo), func SetBpf(int, []BpfInsn) error pkg syscall (netbsd-386-cgo), func SetBpfBuflen(int, int) (int, error) pkg syscall (netbsd-386-cgo), func SetBpfDatalink(int, int) (int, error) pkg syscall (netbsd-386-cgo), func SetBpfHeadercmpl(int, int) error pkg syscall (netbsd-386-cgo), func SetBpfImmediate(int, int) error pkg syscall (netbsd-386-cgo), func SetBpfInterface(int, string) error pkg syscall (netbsd-386-cgo), func SetBpfPromisc(int, int) error pkg syscall (netbsd-386-cgo), func SetBpfTimeout(int, *Timeval) error pkg syscall (netbsd-386-cgo), func SetKevent(*Kevent_t, int, int, int) pkg syscall (netbsd-386-cgo), func SetNonblock(int, bool) error pkg syscall (netbsd-386-cgo), func Setegid(int) error pkg syscall (netbsd-386-cgo), func Seteuid(int) error pkg syscall (netbsd-386-cgo), func Setgid(int) error pkg syscall (netbsd-386-cgo), func Setgroups([]int) error pkg syscall (netbsd-386-cgo), func Setpgid(int, int) error pkg syscall (netbsd-386-cgo), func Setpriority(int, int, int) error pkg syscall (netbsd-386-cgo), func Setregid(int, int) error pkg syscall (netbsd-386-cgo), func Setreuid(int, int) error pkg syscall (netbsd-386-cgo), func Setrlimit(int, *Rlimit) error pkg syscall (netbsd-386-cgo), func Setsid() (int, error) pkg syscall (netbsd-386-cgo), func SetsockoptByte(int, int, int, uint8) error pkg syscall (netbsd-386-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (netbsd-386-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (netbsd-386-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (netbsd-386-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (netbsd-386-cgo), func SetsockoptInt(int, int, int, int) error pkg syscall (netbsd-386-cgo), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (netbsd-386-cgo), func SetsockoptString(int, int, int, string) error pkg syscall (netbsd-386-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (netbsd-386-cgo), func Settimeofday(*Timeval) error pkg syscall (netbsd-386-cgo), func Setuid(int) error pkg syscall (netbsd-386-cgo), func Shutdown(int, int) error pkg syscall (netbsd-386-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (netbsd-386-cgo), func Socket(int, int, int) (int, error) pkg syscall (netbsd-386-cgo), func Socketpair(int, int, int) ([2]int, error) pkg syscall (netbsd-386-cgo), func Stat(string, *Stat_t) error pkg syscall (netbsd-386-cgo), func StringSlicePtr([]string) []*uint8 pkg syscall (netbsd-386-cgo), func Sync() error pkg syscall (netbsd-386-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-386-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-386-cgo), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-386-cgo), func Sysctl(string) (string, error) pkg syscall (netbsd-386-cgo), func SysctlUint32(string) (uint32, error) pkg syscall (netbsd-386-cgo), func TimevalToNsec(Timeval) int64 pkg syscall (netbsd-386-cgo), func Truncate(string, int64) error pkg syscall (netbsd-386-cgo), func Umask(int) int pkg syscall (netbsd-386-cgo), func UnixRights(...int) []uint8 pkg syscall (netbsd-386-cgo), func Unmount(string, int) error pkg syscall (netbsd-386-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (netbsd-386-cgo), func Write(int, []uint8) (int, error) pkg syscall (netbsd-386-cgo), method (*Cmsghdr) SetLen(int) pkg syscall (netbsd-386-cgo), method (*Iovec) SetLen(int) pkg syscall (netbsd-386-cgo), method (*Msghdr) SetControllen(int) pkg syscall (netbsd-386-cgo), type BpfHdr struct pkg syscall (netbsd-386-cgo), type BpfHdr struct, Caplen uint32 pkg syscall (netbsd-386-cgo), type BpfHdr struct, Datalen uint32 pkg syscall (netbsd-386-cgo), type BpfHdr struct, Hdrlen uint16 pkg syscall (netbsd-386-cgo), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-386-cgo), type BpfHdr struct, Tstamp BpfTimeval pkg syscall (netbsd-386-cgo), type BpfInsn struct pkg syscall (netbsd-386-cgo), type BpfInsn struct, Code uint16 pkg syscall (netbsd-386-cgo), type BpfInsn struct, Jf uint8 pkg syscall (netbsd-386-cgo), type BpfInsn struct, Jt uint8 pkg syscall (netbsd-386-cgo), type BpfInsn struct, K uint32 pkg syscall (netbsd-386-cgo), type BpfProgram struct pkg syscall (netbsd-386-cgo), type BpfProgram struct, Insns *BpfInsn pkg syscall (netbsd-386-cgo), type BpfProgram struct, Len uint32 pkg syscall (netbsd-386-cgo), type BpfStat struct pkg syscall (netbsd-386-cgo), type BpfStat struct, Capt uint64 pkg syscall (netbsd-386-cgo), type BpfStat struct, Drop uint64 pkg syscall (netbsd-386-cgo), type BpfStat struct, Padding [13]uint64 pkg syscall (netbsd-386-cgo), type BpfStat struct, Recv uint64 pkg syscall (netbsd-386-cgo), type BpfTimeval struct pkg syscall (netbsd-386-cgo), type BpfTimeval struct, Sec int32 pkg syscall (netbsd-386-cgo), type BpfTimeval struct, Usec int32 pkg syscall (netbsd-386-cgo), type BpfVersion struct pkg syscall (netbsd-386-cgo), type BpfVersion struct, Major uint16 pkg syscall (netbsd-386-cgo), type BpfVersion struct, Minor uint16 pkg syscall (netbsd-386-cgo), type Cmsghdr struct pkg syscall (netbsd-386-cgo), type Cmsghdr struct, Len uint32 pkg syscall (netbsd-386-cgo), type Cmsghdr struct, Level int32 pkg syscall (netbsd-386-cgo), type Cmsghdr struct, Type int32 pkg syscall (netbsd-386-cgo), type Credential struct pkg syscall (netbsd-386-cgo), type Credential struct, Gid uint32 pkg syscall (netbsd-386-cgo), type Credential struct, Groups []uint32 pkg syscall (netbsd-386-cgo), type Credential struct, Uid uint32 pkg syscall (netbsd-386-cgo), type Dirent struct pkg syscall (netbsd-386-cgo), type Dirent struct, Fileno uint64 pkg syscall (netbsd-386-cgo), type Dirent struct, Name [512]int8 pkg syscall (netbsd-386-cgo), type Dirent struct, Namlen uint16 pkg syscall (netbsd-386-cgo), type Dirent struct, Pad_cgo_0 [3]uint8 pkg syscall (netbsd-386-cgo), type Dirent struct, Reclen uint16 pkg syscall (netbsd-386-cgo), type Dirent struct, Type uint8 pkg syscall (netbsd-386-cgo), type FdSet struct pkg syscall (netbsd-386-cgo), type FdSet struct, Bits [8]uint32 pkg syscall (netbsd-386-cgo), type Flock_t struct pkg syscall (netbsd-386-cgo), type Flock_t struct, Len int64 pkg syscall (netbsd-386-cgo), type Flock_t struct, Pid int32 pkg syscall (netbsd-386-cgo), type Flock_t struct, Start int64 pkg syscall (netbsd-386-cgo), type Flock_t struct, Type int16 pkg syscall (netbsd-386-cgo), type Flock_t struct, Whence int16 pkg syscall (netbsd-386-cgo), type Fsid struct pkg syscall (netbsd-386-cgo), type Fsid struct, X__fsid_val [2]int32 pkg syscall (netbsd-386-cgo), type ICMPv6Filter struct pkg syscall (netbsd-386-cgo), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (netbsd-386-cgo), type IPv6MTUInfo struct pkg syscall (netbsd-386-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (netbsd-386-cgo), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (netbsd-386-cgo), type IfAnnounceMsghdr struct pkg syscall (netbsd-386-cgo), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (netbsd-386-cgo), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (netbsd-386-cgo), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (netbsd-386-cgo), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (netbsd-386-cgo), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (netbsd-386-cgo), type IfAnnounceMsghdr struct, What uint16 pkg syscall (netbsd-386-cgo), type IfData struct pkg syscall (netbsd-386-cgo), type IfData struct, Addrlen uint8 pkg syscall (netbsd-386-cgo), type IfData struct, Baudrate uint64 pkg syscall (netbsd-386-cgo), type IfData struct, Collisions uint64 pkg syscall (netbsd-386-cgo), type IfData struct, Hdrlen uint8 pkg syscall (netbsd-386-cgo), type IfData struct, Ibytes uint64 pkg syscall (netbsd-386-cgo), type IfData struct, Ierrors uint64 pkg syscall (netbsd-386-cgo), type IfData struct, Imcasts uint64 pkg syscall (netbsd-386-cgo), type IfData struct, Ipackets uint64 pkg syscall (netbsd-386-cgo), type IfData struct, Iqdrops uint64 pkg syscall (netbsd-386-cgo), type IfData struct, Lastchange Timespec pkg syscall (netbsd-386-cgo), type IfData struct, Link_state int32 pkg syscall (netbsd-386-cgo), type IfData struct, Metric uint64 pkg syscall (netbsd-386-cgo), type IfData struct, Mtu uint64 pkg syscall (netbsd-386-cgo), type IfData struct, Noproto uint64 pkg syscall (netbsd-386-cgo), type IfData struct, Obytes uint64 pkg syscall (netbsd-386-cgo), type IfData struct, Oerrors uint64 pkg syscall (netbsd-386-cgo), type IfData struct, Omcasts uint64 pkg syscall (netbsd-386-cgo), type IfData struct, Opackets uint64 pkg syscall (netbsd-386-cgo), type IfData struct, Pad_cgo_0 [1]uint8 pkg syscall (netbsd-386-cgo), type IfData struct, Type uint8 pkg syscall (netbsd-386-cgo), type IfMsghdr struct pkg syscall (netbsd-386-cgo), type IfMsghdr struct, Addrs int32 pkg syscall (netbsd-386-cgo), type IfMsghdr struct, Data IfData pkg syscall (netbsd-386-cgo), type IfMsghdr struct, Flags int32 pkg syscall (netbsd-386-cgo), type IfMsghdr struct, Index uint16 pkg syscall (netbsd-386-cgo), type IfMsghdr struct, Msglen uint16 pkg syscall (netbsd-386-cgo), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-386-cgo), type IfMsghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-386-cgo), type IfMsghdr struct, Type uint8 pkg syscall (netbsd-386-cgo), type IfMsghdr struct, Version uint8 pkg syscall (netbsd-386-cgo), type IfaMsghdr struct pkg syscall (netbsd-386-cgo), type IfaMsghdr struct, Addrs int32 pkg syscall (netbsd-386-cgo), type IfaMsghdr struct, Flags int32 pkg syscall (netbsd-386-cgo), type IfaMsghdr struct, Index uint16 pkg syscall (netbsd-386-cgo), type IfaMsghdr struct, Metric int32 pkg syscall (netbsd-386-cgo), type IfaMsghdr struct, Msglen uint16 pkg syscall (netbsd-386-cgo), type IfaMsghdr struct, Pad_cgo_0 [6]uint8 pkg syscall (netbsd-386-cgo), type IfaMsghdr struct, Type uint8 pkg syscall (netbsd-386-cgo), type IfaMsghdr struct, Version uint8 pkg syscall (netbsd-386-cgo), type Inet6Pktinfo struct pkg syscall (netbsd-386-cgo), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (netbsd-386-cgo), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (netbsd-386-cgo), type InterfaceAddrMessage struct pkg syscall (netbsd-386-cgo), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (netbsd-386-cgo), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (netbsd-386-cgo), type InterfaceAnnounceMessage struct pkg syscall (netbsd-386-cgo), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (netbsd-386-cgo), type InterfaceMessage struct pkg syscall (netbsd-386-cgo), type InterfaceMessage struct, Data []uint8 pkg syscall (netbsd-386-cgo), type InterfaceMessage struct, Header IfMsghdr pkg syscall (netbsd-386-cgo), type Iovec struct pkg syscall (netbsd-386-cgo), type Iovec struct, Base *uint8 pkg syscall (netbsd-386-cgo), type Iovec struct, Len uint32 pkg syscall (netbsd-386-cgo), type Kevent_t struct pkg syscall (netbsd-386-cgo), type Kevent_t struct, Data int64 pkg syscall (netbsd-386-cgo), type Kevent_t struct, Fflags uint32 pkg syscall (netbsd-386-cgo), type Kevent_t struct, Filter uint32 pkg syscall (netbsd-386-cgo), type Kevent_t struct, Flags uint32 pkg syscall (netbsd-386-cgo), type Kevent_t struct, Ident uint32 pkg syscall (netbsd-386-cgo), type Kevent_t struct, Udata int32 pkg syscall (netbsd-386-cgo), type Mclpool [0]uint8 pkg syscall (netbsd-386-cgo), type Msghdr struct pkg syscall (netbsd-386-cgo), type Msghdr struct, Control *uint8 pkg syscall (netbsd-386-cgo), type Msghdr struct, Controllen uint32 pkg syscall (netbsd-386-cgo), type Msghdr struct, Flags int32 pkg syscall (netbsd-386-cgo), type Msghdr struct, Iov *Iovec pkg syscall (netbsd-386-cgo), type Msghdr struct, Iovlen int32 pkg syscall (netbsd-386-cgo), type Msghdr struct, Name *uint8 pkg syscall (netbsd-386-cgo), type Msghdr struct, Namelen uint32 pkg syscall (netbsd-386-cgo), type RawSockaddr struct, Data [14]int8 pkg syscall (netbsd-386-cgo), type RawSockaddr struct, Family uint8 pkg syscall (netbsd-386-cgo), type RawSockaddr struct, Len uint8 pkg syscall (netbsd-386-cgo), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (netbsd-386-cgo), type RawSockaddrDatalink struct pkg syscall (netbsd-386-cgo), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (netbsd-386-cgo), type RawSockaddrDatalink struct, Data [12]int8 pkg syscall (netbsd-386-cgo), type RawSockaddrDatalink struct, Family uint8 pkg syscall (netbsd-386-cgo), type RawSockaddrDatalink struct, Index uint16 pkg syscall (netbsd-386-cgo), type RawSockaddrDatalink struct, Len uint8 pkg syscall (netbsd-386-cgo), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (netbsd-386-cgo), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (netbsd-386-cgo), type RawSockaddrDatalink struct, Type uint8 pkg syscall (netbsd-386-cgo), type RawSockaddrInet4 struct, Family uint8 pkg syscall (netbsd-386-cgo), type RawSockaddrInet4 struct, Len uint8 pkg syscall (netbsd-386-cgo), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (netbsd-386-cgo), type RawSockaddrInet6 struct, Family uint8 pkg syscall (netbsd-386-cgo), type RawSockaddrInet6 struct, Len uint8 pkg syscall (netbsd-386-cgo), type RawSockaddrUnix struct pkg syscall (netbsd-386-cgo), type RawSockaddrUnix struct, Family uint8 pkg syscall (netbsd-386-cgo), type RawSockaddrUnix struct, Len uint8 pkg syscall (netbsd-386-cgo), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (netbsd-386-cgo), type Rlimit struct pkg syscall (netbsd-386-cgo), type Rlimit struct, Cur uint64 pkg syscall (netbsd-386-cgo), type Rlimit struct, Max uint64 pkg syscall (netbsd-386-cgo), type RouteMessage struct pkg syscall (netbsd-386-cgo), type RouteMessage struct, Data []uint8 pkg syscall (netbsd-386-cgo), type RouteMessage struct, Header RtMsghdr pkg syscall (netbsd-386-cgo), type RoutingMessage interface, unexported methods pkg syscall (netbsd-386-cgo), type RtMetrics struct pkg syscall (netbsd-386-cgo), type RtMetrics struct, Expire int64 pkg syscall (netbsd-386-cgo), type RtMetrics struct, Hopcount uint64 pkg syscall (netbsd-386-cgo), type RtMetrics struct, Locks uint64 pkg syscall (netbsd-386-cgo), type RtMetrics struct, Mtu uint64 pkg syscall (netbsd-386-cgo), type RtMetrics struct, Pksent int64 pkg syscall (netbsd-386-cgo), type RtMetrics struct, Recvpipe uint64 pkg syscall (netbsd-386-cgo), type RtMetrics struct, Rtt uint64 pkg syscall (netbsd-386-cgo), type RtMetrics struct, Rttvar uint64 pkg syscall (netbsd-386-cgo), type RtMetrics struct, Sendpipe uint64 pkg syscall (netbsd-386-cgo), type RtMetrics struct, Ssthresh uint64 pkg syscall (netbsd-386-cgo), type RtMsghdr struct pkg syscall (netbsd-386-cgo), type RtMsghdr struct, Addrs int32 pkg syscall (netbsd-386-cgo), type RtMsghdr struct, Errno int32 pkg syscall (netbsd-386-cgo), type RtMsghdr struct, Flags int32 pkg syscall (netbsd-386-cgo), type RtMsghdr struct, Index uint16 pkg syscall (netbsd-386-cgo), type RtMsghdr struct, Inits int32 pkg syscall (netbsd-386-cgo), type RtMsghdr struct, Msglen uint16 pkg syscall (netbsd-386-cgo), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-386-cgo), type RtMsghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-386-cgo), type RtMsghdr struct, Pid int32 pkg syscall (netbsd-386-cgo), type RtMsghdr struct, Rmx RtMetrics pkg syscall (netbsd-386-cgo), type RtMsghdr struct, Seq int32 pkg syscall (netbsd-386-cgo), type RtMsghdr struct, Type uint8 pkg syscall (netbsd-386-cgo), type RtMsghdr struct, Use int32 pkg syscall (netbsd-386-cgo), type RtMsghdr struct, Version uint8 pkg syscall (netbsd-386-cgo), type Rusage struct, Idrss int32 pkg syscall (netbsd-386-cgo), type Rusage struct, Inblock int32 pkg syscall (netbsd-386-cgo), type Rusage struct, Isrss int32 pkg syscall (netbsd-386-cgo), type Rusage struct, Ixrss int32 pkg syscall (netbsd-386-cgo), type Rusage struct, Majflt int32 pkg syscall (netbsd-386-cgo), type Rusage struct, Maxrss int32 pkg syscall (netbsd-386-cgo), type Rusage struct, Minflt int32 pkg syscall (netbsd-386-cgo), type Rusage struct, Msgrcv int32 pkg syscall (netbsd-386-cgo), type Rusage struct, Msgsnd int32 pkg syscall (netbsd-386-cgo), type Rusage struct, Nivcsw int32 pkg syscall (netbsd-386-cgo), type Rusage struct, Nsignals int32 pkg syscall (netbsd-386-cgo), type Rusage struct, Nswap int32 pkg syscall (netbsd-386-cgo), type Rusage struct, Nvcsw int32 pkg syscall (netbsd-386-cgo), type Rusage struct, Oublock int32 pkg syscall (netbsd-386-cgo), type Rusage struct, Stime Timeval pkg syscall (netbsd-386-cgo), type Rusage struct, Utime Timeval pkg syscall (netbsd-386-cgo), type SockaddrDatalink struct pkg syscall (netbsd-386-cgo), type SockaddrDatalink struct, Alen uint8 pkg syscall (netbsd-386-cgo), type SockaddrDatalink struct, Data [12]int8 pkg syscall (netbsd-386-cgo), type SockaddrDatalink struct, Family uint8 pkg syscall (netbsd-386-cgo), type SockaddrDatalink struct, Index uint16 pkg syscall (netbsd-386-cgo), type SockaddrDatalink struct, Len uint8 pkg syscall (netbsd-386-cgo), type SockaddrDatalink struct, Nlen uint8 pkg syscall (netbsd-386-cgo), type SockaddrDatalink struct, Slen uint8 pkg syscall (netbsd-386-cgo), type SockaddrDatalink struct, Type uint8 pkg syscall (netbsd-386-cgo), type SocketControlMessage struct pkg syscall (netbsd-386-cgo), type SocketControlMessage struct, Data []uint8 pkg syscall (netbsd-386-cgo), type SocketControlMessage struct, Header Cmsghdr pkg syscall (netbsd-386-cgo), type Stat_t struct pkg syscall (netbsd-386-cgo), type Stat_t struct, Atimespec Timespec pkg syscall (netbsd-386-cgo), type Stat_t struct, Birthtimespec Timespec pkg syscall (netbsd-386-cgo), type Stat_t struct, Blksize uint32 pkg syscall (netbsd-386-cgo), type Stat_t struct, Blocks int64 pkg syscall (netbsd-386-cgo), type Stat_t struct, Ctimespec Timespec pkg syscall (netbsd-386-cgo), type Stat_t struct, Dev uint64 pkg syscall (netbsd-386-cgo), type Stat_t struct, Flags uint32 pkg syscall (netbsd-386-cgo), type Stat_t struct, Gen uint32 pkg syscall (netbsd-386-cgo), type Stat_t struct, Gid uint32 pkg syscall (netbsd-386-cgo), type Stat_t struct, Ino uint64 pkg syscall (netbsd-386-cgo), type Stat_t struct, Mode uint32 pkg syscall (netbsd-386-cgo), type Stat_t struct, Mtimespec Timespec pkg syscall (netbsd-386-cgo), type Stat_t struct, Nlink uint32 pkg syscall (netbsd-386-cgo), type Stat_t struct, Rdev uint64 pkg syscall (netbsd-386-cgo), type Stat_t struct, Size int64 pkg syscall (netbsd-386-cgo), type Stat_t struct, Spare [2]uint32 pkg syscall (netbsd-386-cgo), type Stat_t struct, Uid uint32 pkg syscall (netbsd-386-cgo), type Statfs_t [0]uint8 pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Chroot string pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Credential *Credential pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Noctty bool pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Ptrace bool pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Setctty bool pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Setpgid bool pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Setsid bool pkg syscall (netbsd-386-cgo), type Sysctlnode struct pkg syscall (netbsd-386-cgo), type Sysctlnode struct, Flags uint32 pkg syscall (netbsd-386-cgo), type Sysctlnode struct, Name [32]int8 pkg syscall (netbsd-386-cgo), type Sysctlnode struct, Num int32 pkg syscall (netbsd-386-cgo), type Sysctlnode struct, Un [16]uint8 pkg syscall (netbsd-386-cgo), type Sysctlnode struct, Ver uint32 pkg syscall (netbsd-386-cgo), type Sysctlnode struct, X__rsvd uint32 pkg syscall (netbsd-386-cgo), type Sysctlnode struct, X_sysctl_desc [8]uint8 pkg syscall (netbsd-386-cgo), type Sysctlnode struct, X_sysctl_func [8]uint8 pkg syscall (netbsd-386-cgo), type Sysctlnode struct, X_sysctl_parent [8]uint8 pkg syscall (netbsd-386-cgo), type Sysctlnode struct, X_sysctl_size [8]uint8 pkg syscall (netbsd-386-cgo), type Timespec struct, Nsec int32 pkg syscall (netbsd-386-cgo), type Timespec struct, Sec int64 pkg syscall (netbsd-386-cgo), type Timeval struct, Sec int64 pkg syscall (netbsd-386-cgo), type Timeval struct, Usec int32 pkg syscall (netbsd-386-cgo), type WaitStatus uint32 pkg syscall (netbsd-386-cgo), var Stderr int pkg syscall (netbsd-386-cgo), var Stdin int pkg syscall (netbsd-386-cgo), var Stdout int pkg syscall (netbsd-amd64), const AF_APPLETALK ideal-int pkg syscall (netbsd-amd64), const AF_ARP ideal-int pkg syscall (netbsd-amd64), const AF_BLUETOOTH ideal-int pkg syscall (netbsd-amd64), const AF_CCITT ideal-int pkg syscall (netbsd-amd64), const AF_CHAOS ideal-int pkg syscall (netbsd-amd64), const AF_CNT ideal-int pkg syscall (netbsd-amd64), const AF_COIP ideal-int pkg syscall (netbsd-amd64), const AF_DATAKIT ideal-int pkg syscall (netbsd-amd64), const AF_DECnet ideal-int pkg syscall (netbsd-amd64), const AF_DLI ideal-int pkg syscall (netbsd-amd64), const AF_E164 ideal-int pkg syscall (netbsd-amd64), const AF_ECMA ideal-int pkg syscall (netbsd-amd64), const AF_HYLINK ideal-int pkg syscall (netbsd-amd64), const AF_IEEE80211 ideal-int pkg syscall (netbsd-amd64), const AF_IMPLINK ideal-int pkg syscall (netbsd-amd64), const AF_IPX ideal-int pkg syscall (netbsd-amd64), const AF_ISDN ideal-int pkg syscall (netbsd-amd64), const AF_ISO ideal-int pkg syscall (netbsd-amd64), const AF_LAT ideal-int pkg syscall (netbsd-amd64), const AF_LINK ideal-int pkg syscall (netbsd-amd64), const AF_LOCAL ideal-int pkg syscall (netbsd-amd64), const AF_MAX ideal-int pkg syscall (netbsd-amd64), const AF_MPLS ideal-int pkg syscall (netbsd-amd64), const AF_NATM ideal-int pkg syscall (netbsd-amd64), const AF_NS ideal-int pkg syscall (netbsd-amd64), const AF_OROUTE ideal-int pkg syscall (netbsd-amd64), const AF_OSI ideal-int pkg syscall (netbsd-amd64), const AF_PUP ideal-int pkg syscall (netbsd-amd64), const AF_ROUTE ideal-int pkg syscall (netbsd-amd64), const AF_SNA ideal-int pkg syscall (netbsd-amd64), const ARPHRD_ARCNET ideal-int pkg syscall (netbsd-amd64), const ARPHRD_ETHER ideal-int pkg syscall (netbsd-amd64), const ARPHRD_FRELAY ideal-int pkg syscall (netbsd-amd64), const ARPHRD_IEEE1394 ideal-int pkg syscall (netbsd-amd64), const ARPHRD_IEEE802 ideal-int pkg syscall (netbsd-amd64), const ARPHRD_STRIP ideal-int pkg syscall (netbsd-amd64), const B0 ideal-int pkg syscall (netbsd-amd64), const B110 ideal-int pkg syscall (netbsd-amd64), const B115200 ideal-int pkg syscall (netbsd-amd64), const B1200 ideal-int pkg syscall (netbsd-amd64), const B134 ideal-int pkg syscall (netbsd-amd64), const B14400 ideal-int pkg syscall (netbsd-amd64), const B150 ideal-int pkg syscall (netbsd-amd64), const B1800 ideal-int pkg syscall (netbsd-amd64), const B19200 ideal-int pkg syscall (netbsd-amd64), const B200 ideal-int pkg syscall (netbsd-amd64), const B230400 ideal-int pkg syscall (netbsd-amd64), const B2400 ideal-int pkg syscall (netbsd-amd64), const B28800 ideal-int pkg syscall (netbsd-amd64), const B300 ideal-int pkg syscall (netbsd-amd64), const B38400 ideal-int pkg syscall (netbsd-amd64), const B460800 ideal-int pkg syscall (netbsd-amd64), const B4800 ideal-int pkg syscall (netbsd-amd64), const B50 ideal-int pkg syscall (netbsd-amd64), const B57600 ideal-int pkg syscall (netbsd-amd64), const B600 ideal-int pkg syscall (netbsd-amd64), const B7200 ideal-int pkg syscall (netbsd-amd64), const B75 ideal-int pkg syscall (netbsd-amd64), const B76800 ideal-int pkg syscall (netbsd-amd64), const B921600 ideal-int pkg syscall (netbsd-amd64), const B9600 ideal-int pkg syscall (netbsd-amd64), const BIOCFEEDBACK ideal-int pkg syscall (netbsd-amd64), const BIOCFLUSH ideal-int pkg syscall (netbsd-amd64), const BIOCGBLEN ideal-int pkg syscall (netbsd-amd64), const BIOCGDLT ideal-int pkg syscall (netbsd-amd64), const BIOCGDLTLIST ideal-int pkg syscall (netbsd-amd64), const BIOCGETIF ideal-int pkg syscall (netbsd-amd64), const BIOCGFEEDBACK ideal-int pkg syscall (netbsd-amd64), const BIOCGHDRCMPLT ideal-int pkg syscall (netbsd-amd64), const BIOCGRTIMEOUT ideal-int pkg syscall (netbsd-amd64), const BIOCGSEESENT ideal-int pkg syscall (netbsd-amd64), const BIOCGSTATS ideal-int pkg syscall (netbsd-amd64), const BIOCGSTATSOLD ideal-int pkg syscall (netbsd-amd64), const BIOCIMMEDIATE ideal-int pkg syscall (netbsd-amd64), const BIOCPROMISC ideal-int pkg syscall (netbsd-amd64), const BIOCSBLEN ideal-int pkg syscall (netbsd-amd64), const BIOCSDLT ideal-int pkg syscall (netbsd-amd64), const BIOCSETF ideal-int pkg syscall (netbsd-amd64), const BIOCSETIF ideal-int pkg syscall (netbsd-amd64), const BIOCSFEEDBACK ideal-int pkg syscall (netbsd-amd64), const BIOCSHDRCMPLT ideal-int pkg syscall (netbsd-amd64), const BIOCSRTIMEOUT ideal-int pkg syscall (netbsd-amd64), const BIOCSSEESENT ideal-int pkg syscall (netbsd-amd64), const BIOCSTCPF ideal-int pkg syscall (netbsd-amd64), const BIOCSUDPF ideal-int pkg syscall (netbsd-amd64), const BIOCVERSION ideal-int pkg syscall (netbsd-amd64), const BPF_A ideal-int pkg syscall (netbsd-amd64), const BPF_ABS ideal-int pkg syscall (netbsd-amd64), const BPF_ADD ideal-int pkg syscall (netbsd-amd64), const BPF_ALIGNMENT ideal-int pkg syscall (netbsd-amd64), const BPF_ALIGNMENT32 ideal-int pkg syscall (netbsd-amd64), const BPF_ALU ideal-int pkg syscall (netbsd-amd64), const BPF_AND ideal-int pkg syscall (netbsd-amd64), const BPF_B ideal-int pkg syscall (netbsd-amd64), const BPF_DFLTBUFSIZE ideal-int pkg syscall (netbsd-amd64), const BPF_DIV ideal-int pkg syscall (netbsd-amd64), const BPF_H ideal-int pkg syscall (netbsd-amd64), const BPF_IMM ideal-int pkg syscall (netbsd-amd64), const BPF_IND ideal-int pkg syscall (netbsd-amd64), const BPF_JA ideal-int pkg syscall (netbsd-amd64), const BPF_JEQ ideal-int pkg syscall (netbsd-amd64), const BPF_JGE ideal-int pkg syscall (netbsd-amd64), const BPF_JGT ideal-int pkg syscall (netbsd-amd64), const BPF_JMP ideal-int pkg syscall (netbsd-amd64), const BPF_JSET ideal-int pkg syscall (netbsd-amd64), const BPF_K ideal-int pkg syscall (netbsd-amd64), const BPF_LD ideal-int pkg syscall (netbsd-amd64), const BPF_LDX ideal-int pkg syscall (netbsd-amd64), const BPF_LEN ideal-int pkg syscall (netbsd-amd64), const BPF_LSH ideal-int pkg syscall (netbsd-amd64), const BPF_MAJOR_VERSION ideal-int pkg syscall (netbsd-amd64), const BPF_MAXBUFSIZE ideal-int pkg syscall (netbsd-amd64), const BPF_MAXINSNS ideal-int pkg syscall (netbsd-amd64), const BPF_MEM ideal-int pkg syscall (netbsd-amd64), const BPF_MEMWORDS ideal-int pkg syscall (netbsd-amd64), const BPF_MINBUFSIZE ideal-int pkg syscall (netbsd-amd64), const BPF_MINOR_VERSION ideal-int pkg syscall (netbsd-amd64), const BPF_MISC ideal-int pkg syscall (netbsd-amd64), const BPF_MSH ideal-int pkg syscall (netbsd-amd64), const BPF_MUL ideal-int pkg syscall (netbsd-amd64), const BPF_NEG ideal-int pkg syscall (netbsd-amd64), const BPF_OR ideal-int pkg syscall (netbsd-amd64), const BPF_RELEASE ideal-int pkg syscall (netbsd-amd64), const BPF_RET ideal-int pkg syscall (netbsd-amd64), const BPF_RSH ideal-int pkg syscall (netbsd-amd64), const BPF_ST ideal-int pkg syscall (netbsd-amd64), const BPF_STX ideal-int pkg syscall (netbsd-amd64), const BPF_SUB ideal-int pkg syscall (netbsd-amd64), const BPF_TAX ideal-int pkg syscall (netbsd-amd64), const BPF_TXA ideal-int pkg syscall (netbsd-amd64), const BPF_W ideal-int pkg syscall (netbsd-amd64), const BPF_X ideal-int pkg syscall (netbsd-amd64), const BRKINT ideal-int pkg syscall (netbsd-amd64), const CFLUSH ideal-int pkg syscall (netbsd-amd64), const CLOCAL ideal-int pkg syscall (netbsd-amd64), const CREAD ideal-int pkg syscall (netbsd-amd64), const CS5 ideal-int pkg syscall (netbsd-amd64), const CS6 ideal-int pkg syscall (netbsd-amd64), const CS7 ideal-int pkg syscall (netbsd-amd64), const CS8 ideal-int pkg syscall (netbsd-amd64), const CSIZE ideal-int pkg syscall (netbsd-amd64), const CSTART ideal-int pkg syscall (netbsd-amd64), const CSTATUS ideal-int pkg syscall (netbsd-amd64), const CSTOP ideal-int pkg syscall (netbsd-amd64), const CSTOPB ideal-int pkg syscall (netbsd-amd64), const CSUSP ideal-int pkg syscall (netbsd-amd64), const CTL_MAXNAME ideal-int pkg syscall (netbsd-amd64), const CTL_NET ideal-int pkg syscall (netbsd-amd64), const CTL_QUERY ideal-int pkg syscall (netbsd-amd64), const DIOCBSFLUSH ideal-int pkg syscall (netbsd-amd64), const DLT_A429 ideal-int pkg syscall (netbsd-amd64), const DLT_A653_ICM ideal-int pkg syscall (netbsd-amd64), const DLT_AIRONET_HEADER ideal-int pkg syscall (netbsd-amd64), const DLT_AOS ideal-int pkg syscall (netbsd-amd64), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (netbsd-amd64), const DLT_ARCNET ideal-int pkg syscall (netbsd-amd64), const DLT_ARCNET_LINUX ideal-int pkg syscall (netbsd-amd64), const DLT_ATM_CLIP ideal-int pkg syscall (netbsd-amd64), const DLT_ATM_RFC1483 ideal-int pkg syscall (netbsd-amd64), const DLT_AURORA ideal-int pkg syscall (netbsd-amd64), const DLT_AX25 ideal-int pkg syscall (netbsd-amd64), const DLT_AX25_KISS ideal-int pkg syscall (netbsd-amd64), const DLT_BACNET_MS_TP ideal-int pkg syscall (netbsd-amd64), const DLT_BLUETOOTH_HCI_H4 ideal-int pkg syscall (netbsd-amd64), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int pkg syscall (netbsd-amd64), const DLT_CAN20B ideal-int pkg syscall (netbsd-amd64), const DLT_CAN_SOCKETCAN ideal-int pkg syscall (netbsd-amd64), const DLT_CHAOS ideal-int pkg syscall (netbsd-amd64), const DLT_CISCO_IOS ideal-int pkg syscall (netbsd-amd64), const DLT_C_HDLC ideal-int pkg syscall (netbsd-amd64), const DLT_C_HDLC_WITH_DIR ideal-int pkg syscall (netbsd-amd64), const DLT_DECT ideal-int pkg syscall (netbsd-amd64), const DLT_DOCSIS ideal-int pkg syscall (netbsd-amd64), const DLT_ECONET ideal-int pkg syscall (netbsd-amd64), const DLT_EN10MB ideal-int pkg syscall (netbsd-amd64), const DLT_EN3MB ideal-int pkg syscall (netbsd-amd64), const DLT_ENC ideal-int pkg syscall (netbsd-amd64), const DLT_ERF ideal-int pkg syscall (netbsd-amd64), const DLT_ERF_ETH ideal-int pkg syscall (netbsd-amd64), const DLT_ERF_POS ideal-int pkg syscall (netbsd-amd64), const DLT_FC_2 ideal-int pkg syscall (netbsd-amd64), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int pkg syscall (netbsd-amd64), const DLT_FDDI ideal-int pkg syscall (netbsd-amd64), const DLT_FLEXRAY ideal-int pkg syscall (netbsd-amd64), const DLT_FRELAY ideal-int pkg syscall (netbsd-amd64), const DLT_FRELAY_WITH_DIR ideal-int pkg syscall (netbsd-amd64), const DLT_GCOM_SERIAL ideal-int pkg syscall (netbsd-amd64), const DLT_GCOM_T1E1 ideal-int pkg syscall (netbsd-amd64), const DLT_GPF_F ideal-int pkg syscall (netbsd-amd64), const DLT_GPF_T ideal-int pkg syscall (netbsd-amd64), const DLT_GPRS_LLC ideal-int pkg syscall (netbsd-amd64), const DLT_GSMTAP_ABIS ideal-int pkg syscall (netbsd-amd64), const DLT_GSMTAP_UM ideal-int pkg syscall (netbsd-amd64), const DLT_HDLC ideal-int pkg syscall (netbsd-amd64), const DLT_HHDLC ideal-int pkg syscall (netbsd-amd64), const DLT_HIPPI ideal-int pkg syscall (netbsd-amd64), const DLT_IBM_SN ideal-int pkg syscall (netbsd-amd64), const DLT_IBM_SP ideal-int pkg syscall (netbsd-amd64), const DLT_IEEE802 ideal-int pkg syscall (netbsd-amd64), const DLT_IEEE802_11 ideal-int pkg syscall (netbsd-amd64), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (netbsd-amd64), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (netbsd-amd64), const DLT_IEEE802_15_4 ideal-int pkg syscall (netbsd-amd64), const DLT_IEEE802_15_4_LINUX ideal-int pkg syscall (netbsd-amd64), const DLT_IEEE802_15_4_NONASK_PHY ideal-int pkg syscall (netbsd-amd64), const DLT_IEEE802_16_MAC_CPS ideal-int pkg syscall (netbsd-amd64), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int pkg syscall (netbsd-amd64), const DLT_IPMB ideal-int pkg syscall (netbsd-amd64), const DLT_IPMB_LINUX ideal-int pkg syscall (netbsd-amd64), const DLT_IPNET ideal-int pkg syscall (netbsd-amd64), const DLT_IPV4 ideal-int pkg syscall (netbsd-amd64), const DLT_IPV6 ideal-int pkg syscall (netbsd-amd64), const DLT_IP_OVER_FC ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_ATM1 ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_ATM2 ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_CHDLC ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_ES ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_ETHER ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_FRELAY ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_GGSN ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_ISM ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_MFR ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_MLFR ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_MLPPP ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_MONITOR ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_PIC_PEER ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_PPP ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_PPPOE ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_PPPOE_ATM ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_SERVICES ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_ST ideal-int pkg syscall (netbsd-amd64), const DLT_JUNIPER_VP ideal-int pkg syscall (netbsd-amd64), const DLT_LAPB_WITH_DIR ideal-int pkg syscall (netbsd-amd64), const DLT_LAPD ideal-int pkg syscall (netbsd-amd64), const DLT_LIN ideal-int pkg syscall (netbsd-amd64), const DLT_LINUX_EVDEV ideal-int pkg syscall (netbsd-amd64), const DLT_LINUX_IRDA ideal-int pkg syscall (netbsd-amd64), const DLT_LINUX_LAPD ideal-int pkg syscall (netbsd-amd64), const DLT_LINUX_SLL ideal-int pkg syscall (netbsd-amd64), const DLT_LOOP ideal-int pkg syscall (netbsd-amd64), const DLT_LTALK ideal-int pkg syscall (netbsd-amd64), const DLT_MFR ideal-int pkg syscall (netbsd-amd64), const DLT_MOST ideal-int pkg syscall (netbsd-amd64), const DLT_MPLS ideal-int pkg syscall (netbsd-amd64), const DLT_MTP2 ideal-int pkg syscall (netbsd-amd64), const DLT_MTP2_WITH_PHDR ideal-int pkg syscall (netbsd-amd64), const DLT_MTP3 ideal-int pkg syscall (netbsd-amd64), const DLT_NULL ideal-int pkg syscall (netbsd-amd64), const DLT_PCI_EXP ideal-int pkg syscall (netbsd-amd64), const DLT_PFLOG ideal-int pkg syscall (netbsd-amd64), const DLT_PFSYNC ideal-int pkg syscall (netbsd-amd64), const DLT_PPI ideal-int pkg syscall (netbsd-amd64), const DLT_PPP ideal-int pkg syscall (netbsd-amd64), const DLT_PPP_BSDOS ideal-int pkg syscall (netbsd-amd64), const DLT_PPP_ETHER ideal-int pkg syscall (netbsd-amd64), const DLT_PPP_PPPD ideal-int pkg syscall (netbsd-amd64), const DLT_PPP_SERIAL ideal-int pkg syscall (netbsd-amd64), const DLT_PPP_WITH_DIR ideal-int pkg syscall (netbsd-amd64), const DLT_PRISM_HEADER ideal-int pkg syscall (netbsd-amd64), const DLT_PRONET ideal-int pkg syscall (netbsd-amd64), const DLT_RAIF1 ideal-int pkg syscall (netbsd-amd64), const DLT_RAW ideal-int pkg syscall (netbsd-amd64), const DLT_RAWAF_MASK ideal-int pkg syscall (netbsd-amd64), const DLT_RIO ideal-int pkg syscall (netbsd-amd64), const DLT_SCCP ideal-int pkg syscall (netbsd-amd64), const DLT_SITA ideal-int pkg syscall (netbsd-amd64), const DLT_SLIP ideal-int pkg syscall (netbsd-amd64), const DLT_SLIP_BSDOS ideal-int pkg syscall (netbsd-amd64), const DLT_SUNATM ideal-int pkg syscall (netbsd-amd64), const DLT_SYMANTEC_FIREWALL ideal-int pkg syscall (netbsd-amd64), const DLT_TZSP ideal-int pkg syscall (netbsd-amd64), const DLT_USB ideal-int pkg syscall (netbsd-amd64), const DLT_USB_LINUX ideal-int pkg syscall (netbsd-amd64), const DLT_USB_LINUX_MMAPPED ideal-int pkg syscall (netbsd-amd64), const DLT_WIHART ideal-int pkg syscall (netbsd-amd64), const DLT_X2E_SERIAL ideal-int pkg syscall (netbsd-amd64), const DLT_X2E_XORAYA ideal-int pkg syscall (netbsd-amd64), const DT_BLK ideal-int pkg syscall (netbsd-amd64), const DT_CHR ideal-int pkg syscall (netbsd-amd64), const DT_DIR ideal-int pkg syscall (netbsd-amd64), const DT_FIFO ideal-int pkg syscall (netbsd-amd64), const DT_LNK ideal-int pkg syscall (netbsd-amd64), const DT_REG ideal-int pkg syscall (netbsd-amd64), const DT_SOCK ideal-int pkg syscall (netbsd-amd64), const DT_UNKNOWN ideal-int pkg syscall (netbsd-amd64), const DT_WHT ideal-int pkg syscall (netbsd-amd64), const EAUTH Errno pkg syscall (netbsd-amd64), const EBADMSG Errno pkg syscall (netbsd-amd64), const EBADRPC Errno pkg syscall (netbsd-amd64), const ECHO ideal-int pkg syscall (netbsd-amd64), const ECHOCTL ideal-int pkg syscall (netbsd-amd64), const ECHOE ideal-int pkg syscall (netbsd-amd64), const ECHOK ideal-int pkg syscall (netbsd-amd64), const ECHOKE ideal-int pkg syscall (netbsd-amd64), const ECHONL ideal-int pkg syscall (netbsd-amd64), const ECHOPRT ideal-int pkg syscall (netbsd-amd64), const EFTYPE Errno pkg syscall (netbsd-amd64), const ELAST Errno pkg syscall (netbsd-amd64), const EMULTIHOP Errno pkg syscall (netbsd-amd64), const EMUL_LINUX ideal-int pkg syscall (netbsd-amd64), const EMUL_LINUX32 ideal-int pkg syscall (netbsd-amd64), const EMUL_MAXID ideal-int pkg syscall (netbsd-amd64), const ENEEDAUTH Errno pkg syscall (netbsd-amd64), const ENOATTR Errno pkg syscall (netbsd-amd64), const ENODATA Errno pkg syscall (netbsd-amd64), const ENOLINK Errno pkg syscall (netbsd-amd64), const ENOSR Errno pkg syscall (netbsd-amd64), const ENOSTR Errno pkg syscall (netbsd-amd64), const EPROCLIM Errno pkg syscall (netbsd-amd64), const EPROCUNAVAIL Errno pkg syscall (netbsd-amd64), const EPROGMISMATCH Errno pkg syscall (netbsd-amd64), const EPROGUNAVAIL Errno pkg syscall (netbsd-amd64), const EPROTO Errno pkg syscall (netbsd-amd64), const ERPCMISMATCH Errno pkg syscall (netbsd-amd64), const ETHERCAP_JUMBO_MTU ideal-int pkg syscall (netbsd-amd64), const ETHERCAP_VLAN_HWTAGGING ideal-int pkg syscall (netbsd-amd64), const ETHERCAP_VLAN_MTU ideal-int pkg syscall (netbsd-amd64), const ETHERMIN ideal-int pkg syscall (netbsd-amd64), const ETHERMTU ideal-int pkg syscall (netbsd-amd64), const ETHERMTU_JUMBO ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_8023 ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_AARP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_ACCTON ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_AEONIC ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_ALPHA ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_AMBER ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_AMOEBA ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_APOLLO ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_APOLLODOMAIN ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_APPLETALK ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_APPLITEK ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_ARGONAUT ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_ARP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_AT ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_ATALK ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_ATOMIC ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_ATT ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_ATTSTANFORD ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_AUTOPHON ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_AXIS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_BCLOOP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_BOFL ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_CABLETRON ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_CHAOS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_COMDESIGN ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_COMPUGRAPHIC ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_COUNTERPOINT ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_CRONUS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_CRONUSVLN ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DCA ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DDE ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DEBNI ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DECAM ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DECCUST ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DECDIAG ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DECDNS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DECDTS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DECEXPER ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DECLAST ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DECLTM ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DECMUMPS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DECNETBIOS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DELTACON ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DIDDLE ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DLOG1 ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DLOG2 ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DN ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DOGFIGHT ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_DSMD ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_ECMA ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_ENCRYPT ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_ES ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_EXCELAN ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_EXPERDATA ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_FLIP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_FLOWCONTROL ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_FRARP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_GENDYN ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_HAYES ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_HIPPI_FP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_HITACHI ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_HP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_IEEEPUP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_IEEEPUPAT ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_IMLBL ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_IMLBLDIAG ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_IP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_IPAS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_IPV6 ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_IPX ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_IPXNEW ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_KALPANA ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_LANBRIDGE ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_LANPROBE ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_LAT ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_LBACK ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_LITTLE ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_LOGICRAFT ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_LOOPBACK ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_MATRA ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_MAX ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_MERIT ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_MICP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_MOPDL ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_MOPRC ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_MOTOROLA ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_MPLS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_MPLS_MCAST ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_MUMPS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBPCC ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBPCLAIM ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBPCLREQ ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBPCLRSP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBPCREQ ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBPCRSP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBPDG ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBPDGB ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBPDLTE ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBPRAR ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBPRAS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBPRST ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBPSCD ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBPVCD ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NBS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NCD ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NESTAR ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NETBEUI ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NOVELL ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NSAT ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NSCOMPAT ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_NTRAILER ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_OS9 ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_OS9NET ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_PACER ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_PAE ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_PCS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_PLANNING ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_PPP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_PPPOE ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_PPPOEDISC ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_PRIMENTS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_PUP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_PUPAT ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_RACAL ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_RATIONAL ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_RAWFR ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_RCL ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_RDP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_RETIX ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_REVARP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SCA ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SECTRA ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SECUREDATA ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SGITW ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SG_BOUNCE ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SG_DIAG ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SG_NETGAMES ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SG_RESV ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SIMNET ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SLOWPROTOCOLS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SNA ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SNMP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SONIX ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SPIDER ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_SPRITE ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_STP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_TALARIS ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_TALARISMC ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_TCPCOMP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_TCPSM ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_TEC ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_TIGAN ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_TRAIL ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_TRANSETHER ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_TYMSHARE ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_UBBST ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_UBDEBUG ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_UBDIAGLOOP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_UBDL ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_UBNIU ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_UBNMC ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_VALID ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_VARIAN ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_VAXELN ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_VEECO ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_VEXP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_VGLAB ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_VINES ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_VINESECHO ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_VINESLOOP ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_VITAL ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_VLAN ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_VLTLMAN ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_VPROD ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_VURESERVED ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_WATERLOO ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_WELLFLEET ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_X25 ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_X75 ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_XNSSM ideal-int pkg syscall (netbsd-amd64), const ETHERTYPE_XTP ideal-int pkg syscall (netbsd-amd64), const ETHER_ADDR_LEN ideal-int pkg syscall (netbsd-amd64), const ETHER_CRC_LEN ideal-int pkg syscall (netbsd-amd64), const ETHER_CRC_POLY_BE ideal-int pkg syscall (netbsd-amd64), const ETHER_CRC_POLY_LE ideal-int pkg syscall (netbsd-amd64), const ETHER_HDR_LEN ideal-int pkg syscall (netbsd-amd64), const ETHER_MAX_LEN ideal-int pkg syscall (netbsd-amd64), const ETHER_MAX_LEN_JUMBO ideal-int pkg syscall (netbsd-amd64), const ETHER_MIN_LEN ideal-int pkg syscall (netbsd-amd64), const ETHER_PPPOE_ENCAP_LEN ideal-int pkg syscall (netbsd-amd64), const ETHER_TYPE_LEN ideal-int pkg syscall (netbsd-amd64), const ETHER_VLAN_ENCAP_LEN ideal-int pkg syscall (netbsd-amd64), const ETIME Errno pkg syscall (netbsd-amd64), const EVFILT_AIO ideal-int pkg syscall (netbsd-amd64), const EVFILT_PROC ideal-int pkg syscall (netbsd-amd64), const EVFILT_READ ideal-int pkg syscall (netbsd-amd64), const EVFILT_SIGNAL ideal-int pkg syscall (netbsd-amd64), const EVFILT_SYSCOUNT ideal-int pkg syscall (netbsd-amd64), const EVFILT_TIMER ideal-int pkg syscall (netbsd-amd64), const EVFILT_VNODE ideal-int pkg syscall (netbsd-amd64), const EVFILT_WRITE ideal-int pkg syscall (netbsd-amd64), const EV_ADD ideal-int pkg syscall (netbsd-amd64), const EV_CLEAR ideal-int pkg syscall (netbsd-amd64), const EV_DELETE ideal-int pkg syscall (netbsd-amd64), const EV_DISABLE ideal-int pkg syscall (netbsd-amd64), const EV_ENABLE ideal-int pkg syscall (netbsd-amd64), const EV_EOF ideal-int pkg syscall (netbsd-amd64), const EV_ERROR ideal-int pkg syscall (netbsd-amd64), const EV_FLAG1 ideal-int pkg syscall (netbsd-amd64), const EV_ONESHOT ideal-int pkg syscall (netbsd-amd64), const EV_SYSFLAGS ideal-int pkg syscall (netbsd-amd64), const EXTA ideal-int pkg syscall (netbsd-amd64), const EXTB ideal-int pkg syscall (netbsd-amd64), const EXTPROC ideal-int pkg syscall (netbsd-amd64), const FD_CLOEXEC ideal-int pkg syscall (netbsd-amd64), const FD_SETSIZE ideal-int pkg syscall (netbsd-amd64), const FLUSHO ideal-int pkg syscall (netbsd-amd64), const F_CLOSEM ideal-int pkg syscall (netbsd-amd64), const F_DUPFD ideal-int pkg syscall (netbsd-amd64), const F_DUPFD_CLOEXEC ideal-int pkg syscall (netbsd-amd64), const F_FSCTL ideal-int pkg syscall (netbsd-amd64), const F_FSDIRMASK ideal-int pkg syscall (netbsd-amd64), const F_FSIN ideal-int pkg syscall (netbsd-amd64), const F_FSINOUT ideal-int pkg syscall (netbsd-amd64), const F_FSOUT ideal-int pkg syscall (netbsd-amd64), const F_FSPRIV ideal-int pkg syscall (netbsd-amd64), const F_FSVOID ideal-int pkg syscall (netbsd-amd64), const F_GETFD ideal-int pkg syscall (netbsd-amd64), const F_GETFL ideal-int pkg syscall (netbsd-amd64), const F_GETLK ideal-int pkg syscall (netbsd-amd64), const F_GETNOSIGPIPE ideal-int pkg syscall (netbsd-amd64), const F_GETOWN ideal-int pkg syscall (netbsd-amd64), const F_MAXFD ideal-int pkg syscall (netbsd-amd64), const F_OK ideal-int pkg syscall (netbsd-amd64), const F_PARAM_MASK ideal-int pkg syscall (netbsd-amd64), const F_PARAM_MAX ideal-int pkg syscall (netbsd-amd64), const F_RDLCK ideal-int pkg syscall (netbsd-amd64), const F_SETFD ideal-int pkg syscall (netbsd-amd64), const F_SETFL ideal-int pkg syscall (netbsd-amd64), const F_SETLK ideal-int pkg syscall (netbsd-amd64), const F_SETLKW ideal-int pkg syscall (netbsd-amd64), const F_SETNOSIGPIPE ideal-int pkg syscall (netbsd-amd64), const F_SETOWN ideal-int pkg syscall (netbsd-amd64), const F_UNLCK ideal-int pkg syscall (netbsd-amd64), const F_WRLCK ideal-int pkg syscall (netbsd-amd64), const HUPCL ideal-int pkg syscall (netbsd-amd64), const ICANON ideal-int pkg syscall (netbsd-amd64), const ICMP6_FILTER = 18 pkg syscall (netbsd-amd64), const ICMP6_FILTER ideal-int pkg syscall (netbsd-amd64), const ICRNL ideal-int pkg syscall (netbsd-amd64), const IEXTEN ideal-int pkg syscall (netbsd-amd64), const IFAN_ARRIVAL ideal-int pkg syscall (netbsd-amd64), const IFAN_DEPARTURE ideal-int pkg syscall (netbsd-amd64), const IFA_ROUTE ideal-int pkg syscall (netbsd-amd64), const IFF_ALLMULTI ideal-int pkg syscall (netbsd-amd64), const IFF_CANTCHANGE ideal-int pkg syscall (netbsd-amd64), const IFF_DEBUG ideal-int pkg syscall (netbsd-amd64), const IFF_LINK0 ideal-int pkg syscall (netbsd-amd64), const IFF_LINK1 ideal-int pkg syscall (netbsd-amd64), const IFF_LINK2 ideal-int pkg syscall (netbsd-amd64), const IFF_NOARP ideal-int pkg syscall (netbsd-amd64), const IFF_NOTRAILERS ideal-int pkg syscall (netbsd-amd64), const IFF_OACTIVE ideal-int pkg syscall (netbsd-amd64), const IFF_POINTOPOINT ideal-int pkg syscall (netbsd-amd64), const IFF_PROMISC ideal-int pkg syscall (netbsd-amd64), const IFF_RUNNING ideal-int pkg syscall (netbsd-amd64), const IFF_SIMPLEX ideal-int pkg syscall (netbsd-amd64), const IFNAMSIZ ideal-int pkg syscall (netbsd-amd64), const IFT_1822 ideal-int pkg syscall (netbsd-amd64), const IFT_A12MPPSWITCH ideal-int pkg syscall (netbsd-amd64), const IFT_AAL2 ideal-int pkg syscall (netbsd-amd64), const IFT_AAL5 ideal-int pkg syscall (netbsd-amd64), const IFT_ADSL ideal-int pkg syscall (netbsd-amd64), const IFT_AFLANE8023 ideal-int pkg syscall (netbsd-amd64), const IFT_AFLANE8025 ideal-int pkg syscall (netbsd-amd64), const IFT_ARAP ideal-int pkg syscall (netbsd-amd64), const IFT_ARCNET ideal-int pkg syscall (netbsd-amd64), const IFT_ARCNETPLUS ideal-int pkg syscall (netbsd-amd64), const IFT_ASYNC ideal-int pkg syscall (netbsd-amd64), const IFT_ATM ideal-int pkg syscall (netbsd-amd64), const IFT_ATMDXI ideal-int pkg syscall (netbsd-amd64), const IFT_ATMFUNI ideal-int pkg syscall (netbsd-amd64), const IFT_ATMIMA ideal-int pkg syscall (netbsd-amd64), const IFT_ATMLOGICAL ideal-int pkg syscall (netbsd-amd64), const IFT_ATMRADIO ideal-int pkg syscall (netbsd-amd64), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (netbsd-amd64), const IFT_ATMVCIENDPT ideal-int pkg syscall (netbsd-amd64), const IFT_ATMVIRTUAL ideal-int pkg syscall (netbsd-amd64), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (netbsd-amd64), const IFT_BRIDGE ideal-int pkg syscall (netbsd-amd64), const IFT_BSC ideal-int pkg syscall (netbsd-amd64), const IFT_CARP ideal-int pkg syscall (netbsd-amd64), const IFT_CCTEMUL ideal-int pkg syscall (netbsd-amd64), const IFT_CEPT ideal-int pkg syscall (netbsd-amd64), const IFT_CES ideal-int pkg syscall (netbsd-amd64), const IFT_CHANNEL ideal-int pkg syscall (netbsd-amd64), const IFT_CNR ideal-int pkg syscall (netbsd-amd64), const IFT_COFFEE ideal-int pkg syscall (netbsd-amd64), const IFT_COMPOSITELINK ideal-int pkg syscall (netbsd-amd64), const IFT_DCN ideal-int pkg syscall (netbsd-amd64), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (netbsd-amd64), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (netbsd-amd64), const IFT_DLSW ideal-int pkg syscall (netbsd-amd64), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (netbsd-amd64), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (netbsd-amd64), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (netbsd-amd64), const IFT_DOCSCABLEUPSTREAMCHANNEL ideal-int pkg syscall (netbsd-amd64), const IFT_DS0 ideal-int pkg syscall (netbsd-amd64), const IFT_DS0BUNDLE ideal-int pkg syscall (netbsd-amd64), const IFT_DS1FDL ideal-int pkg syscall (netbsd-amd64), const IFT_DS3 ideal-int pkg syscall (netbsd-amd64), const IFT_DTM ideal-int pkg syscall (netbsd-amd64), const IFT_DVBASILN ideal-int pkg syscall (netbsd-amd64), const IFT_DVBASIOUT ideal-int pkg syscall (netbsd-amd64), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (netbsd-amd64), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (netbsd-amd64), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (netbsd-amd64), const IFT_ECONET ideal-int pkg syscall (netbsd-amd64), const IFT_EON ideal-int pkg syscall (netbsd-amd64), const IFT_EPLRS ideal-int pkg syscall (netbsd-amd64), const IFT_ESCON ideal-int pkg syscall (netbsd-amd64), const IFT_ETHER ideal-int pkg syscall (netbsd-amd64), const IFT_FAITH ideal-int pkg syscall (netbsd-amd64), const IFT_FAST ideal-int pkg syscall (netbsd-amd64), const IFT_FASTETHER ideal-int pkg syscall (netbsd-amd64), const IFT_FASTETHERFX ideal-int pkg syscall (netbsd-amd64), const IFT_FDDI ideal-int pkg syscall (netbsd-amd64), const IFT_FIBRECHANNEL ideal-int pkg syscall (netbsd-amd64), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (netbsd-amd64), const IFT_FRAMERELAYMPI ideal-int pkg syscall (netbsd-amd64), const IFT_FRDLCIENDPT ideal-int pkg syscall (netbsd-amd64), const IFT_FRELAY ideal-int pkg syscall (netbsd-amd64), const IFT_FRELAYDCE ideal-int pkg syscall (netbsd-amd64), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (netbsd-amd64), const IFT_FRFORWARD ideal-int pkg syscall (netbsd-amd64), const IFT_G703AT2MB ideal-int pkg syscall (netbsd-amd64), const IFT_G703AT64K ideal-int pkg syscall (netbsd-amd64), const IFT_GIF ideal-int pkg syscall (netbsd-amd64), const IFT_GIGABITETHERNET ideal-int pkg syscall (netbsd-amd64), const IFT_GR303IDT ideal-int pkg syscall (netbsd-amd64), const IFT_GR303RDT ideal-int pkg syscall (netbsd-amd64), const IFT_H323GATEKEEPER ideal-int pkg syscall (netbsd-amd64), const IFT_H323PROXY ideal-int pkg syscall (netbsd-amd64), const IFT_HDH1822 ideal-int pkg syscall (netbsd-amd64), const IFT_HDLC ideal-int pkg syscall (netbsd-amd64), const IFT_HDSL2 ideal-int pkg syscall (netbsd-amd64), const IFT_HIPERLAN2 ideal-int pkg syscall (netbsd-amd64), const IFT_HIPPI ideal-int pkg syscall (netbsd-amd64), const IFT_HIPPIINTERFACE ideal-int pkg syscall (netbsd-amd64), const IFT_HOSTPAD ideal-int pkg syscall (netbsd-amd64), const IFT_HSSI ideal-int pkg syscall (netbsd-amd64), const IFT_HY ideal-int pkg syscall (netbsd-amd64), const IFT_IBM370PARCHAN ideal-int pkg syscall (netbsd-amd64), const IFT_IDSL ideal-int pkg syscall (netbsd-amd64), const IFT_IEEE1394 ideal-int pkg syscall (netbsd-amd64), const IFT_IEEE80211 ideal-int pkg syscall (netbsd-amd64), const IFT_IEEE80212 ideal-int pkg syscall (netbsd-amd64), const IFT_IEEE8023ADLAG ideal-int pkg syscall (netbsd-amd64), const IFT_IFGSN ideal-int pkg syscall (netbsd-amd64), const IFT_IMT ideal-int pkg syscall (netbsd-amd64), const IFT_INFINIBAND ideal-int pkg syscall (netbsd-amd64), const IFT_INTERLEAVE ideal-int pkg syscall (netbsd-amd64), const IFT_IP ideal-int pkg syscall (netbsd-amd64), const IFT_IPFORWARD ideal-int pkg syscall (netbsd-amd64), const IFT_IPOVERATM ideal-int pkg syscall (netbsd-amd64), const IFT_IPOVERCDLC ideal-int pkg syscall (netbsd-amd64), const IFT_IPOVERCLAW ideal-int pkg syscall (netbsd-amd64), const IFT_IPSWITCH ideal-int pkg syscall (netbsd-amd64), const IFT_ISDN ideal-int pkg syscall (netbsd-amd64), const IFT_ISDNBASIC ideal-int pkg syscall (netbsd-amd64), const IFT_ISDNPRIMARY ideal-int pkg syscall (netbsd-amd64), const IFT_ISDNS ideal-int pkg syscall (netbsd-amd64), const IFT_ISDNU ideal-int pkg syscall (netbsd-amd64), const IFT_ISO88022LLC ideal-int pkg syscall (netbsd-amd64), const IFT_ISO88023 ideal-int pkg syscall (netbsd-amd64), const IFT_ISO88024 ideal-int pkg syscall (netbsd-amd64), const IFT_ISO88025 ideal-int pkg syscall (netbsd-amd64), const IFT_ISO88025CRFPINT ideal-int pkg syscall (netbsd-amd64), const IFT_ISO88025DTR ideal-int pkg syscall (netbsd-amd64), const IFT_ISO88025FIBER ideal-int pkg syscall (netbsd-amd64), const IFT_ISO88026 ideal-int pkg syscall (netbsd-amd64), const IFT_ISUP ideal-int pkg syscall (netbsd-amd64), const IFT_L2VLAN ideal-int pkg syscall (netbsd-amd64), const IFT_L3IPVLAN ideal-int pkg syscall (netbsd-amd64), const IFT_L3IPXVLAN ideal-int pkg syscall (netbsd-amd64), const IFT_LAPB ideal-int pkg syscall (netbsd-amd64), const IFT_LAPD ideal-int pkg syscall (netbsd-amd64), const IFT_LAPF ideal-int pkg syscall (netbsd-amd64), const IFT_LINEGROUP ideal-int pkg syscall (netbsd-amd64), const IFT_LOCALTALK ideal-int pkg syscall (netbsd-amd64), const IFT_LOOP ideal-int pkg syscall (netbsd-amd64), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (netbsd-amd64), const IFT_MFSIGLINK ideal-int pkg syscall (netbsd-amd64), const IFT_MIOX25 ideal-int pkg syscall (netbsd-amd64), const IFT_MODEM ideal-int pkg syscall (netbsd-amd64), const IFT_MPC ideal-int pkg syscall (netbsd-amd64), const IFT_MPLS ideal-int pkg syscall (netbsd-amd64), const IFT_MPLSTUNNEL ideal-int pkg syscall (netbsd-amd64), const IFT_MSDSL ideal-int pkg syscall (netbsd-amd64), const IFT_MVL ideal-int pkg syscall (netbsd-amd64), const IFT_MYRINET ideal-int pkg syscall (netbsd-amd64), const IFT_NFAS ideal-int pkg syscall (netbsd-amd64), const IFT_NSIP ideal-int pkg syscall (netbsd-amd64), const IFT_OPTICALCHANNEL ideal-int pkg syscall (netbsd-amd64), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (netbsd-amd64), const IFT_OTHER ideal-int pkg syscall (netbsd-amd64), const IFT_P10 ideal-int pkg syscall (netbsd-amd64), const IFT_P80 ideal-int pkg syscall (netbsd-amd64), const IFT_PARA ideal-int pkg syscall (netbsd-amd64), const IFT_PFLOG ideal-int pkg syscall (netbsd-amd64), const IFT_PFSYNC ideal-int pkg syscall (netbsd-amd64), const IFT_PLC ideal-int pkg syscall (netbsd-amd64), const IFT_PON155 ideal-int pkg syscall (netbsd-amd64), const IFT_PON622 ideal-int pkg syscall (netbsd-amd64), const IFT_POS ideal-int pkg syscall (netbsd-amd64), const IFT_PPP ideal-int pkg syscall (netbsd-amd64), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (netbsd-amd64), const IFT_PROPATM ideal-int pkg syscall (netbsd-amd64), const IFT_PROPBWAP2MP ideal-int pkg syscall (netbsd-amd64), const IFT_PROPCNLS ideal-int pkg syscall (netbsd-amd64), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (netbsd-amd64), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (netbsd-amd64), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (netbsd-amd64), const IFT_PROPMUX ideal-int pkg syscall (netbsd-amd64), const IFT_PROPVIRTUAL ideal-int pkg syscall (netbsd-amd64), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (netbsd-amd64), const IFT_PTPSERIAL ideal-int pkg syscall (netbsd-amd64), const IFT_PVC ideal-int pkg syscall (netbsd-amd64), const IFT_Q2931 ideal-int pkg syscall (netbsd-amd64), const IFT_QLLC ideal-int pkg syscall (netbsd-amd64), const IFT_RADIOMAC ideal-int pkg syscall (netbsd-amd64), const IFT_RADSL ideal-int pkg syscall (netbsd-amd64), const IFT_REACHDSL ideal-int pkg syscall (netbsd-amd64), const IFT_RFC1483 ideal-int pkg syscall (netbsd-amd64), const IFT_RS232 ideal-int pkg syscall (netbsd-amd64), const IFT_RSRB ideal-int pkg syscall (netbsd-amd64), const IFT_SDLC ideal-int pkg syscall (netbsd-amd64), const IFT_SDSL ideal-int pkg syscall (netbsd-amd64), const IFT_SHDSL ideal-int pkg syscall (netbsd-amd64), const IFT_SIP ideal-int pkg syscall (netbsd-amd64), const IFT_SIPSIG ideal-int pkg syscall (netbsd-amd64), const IFT_SIPTG ideal-int pkg syscall (netbsd-amd64), const IFT_SLIP ideal-int pkg syscall (netbsd-amd64), const IFT_SMDSDXI ideal-int pkg syscall (netbsd-amd64), const IFT_SMDSICIP ideal-int pkg syscall (netbsd-amd64), const IFT_SONET ideal-int pkg syscall (netbsd-amd64), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (netbsd-amd64), const IFT_SONETPATH ideal-int pkg syscall (netbsd-amd64), const IFT_SONETVT ideal-int pkg syscall (netbsd-amd64), const IFT_SRP ideal-int pkg syscall (netbsd-amd64), const IFT_SS7SIGLINK ideal-int pkg syscall (netbsd-amd64), const IFT_STACKTOSTACK ideal-int pkg syscall (netbsd-amd64), const IFT_STARLAN ideal-int pkg syscall (netbsd-amd64), const IFT_STF ideal-int pkg syscall (netbsd-amd64), const IFT_T1 ideal-int pkg syscall (netbsd-amd64), const IFT_TDLC ideal-int pkg syscall (netbsd-amd64), const IFT_TELINK ideal-int pkg syscall (netbsd-amd64), const IFT_TERMPAD ideal-int pkg syscall (netbsd-amd64), const IFT_TR008 ideal-int pkg syscall (netbsd-amd64), const IFT_TRANSPHDLC ideal-int pkg syscall (netbsd-amd64), const IFT_TUNNEL ideal-int pkg syscall (netbsd-amd64), const IFT_ULTRA ideal-int pkg syscall (netbsd-amd64), const IFT_USB ideal-int pkg syscall (netbsd-amd64), const IFT_V11 ideal-int pkg syscall (netbsd-amd64), const IFT_V35 ideal-int pkg syscall (netbsd-amd64), const IFT_V36 ideal-int pkg syscall (netbsd-amd64), const IFT_V37 ideal-int pkg syscall (netbsd-amd64), const IFT_VDSL ideal-int pkg syscall (netbsd-amd64), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (netbsd-amd64), const IFT_VIRTUALTG ideal-int pkg syscall (netbsd-amd64), const IFT_VOICEDID ideal-int pkg syscall (netbsd-amd64), const IFT_VOICEEM ideal-int pkg syscall (netbsd-amd64), const IFT_VOICEEMFGD ideal-int pkg syscall (netbsd-amd64), const IFT_VOICEENCAP ideal-int pkg syscall (netbsd-amd64), const IFT_VOICEFGDEANA ideal-int pkg syscall (netbsd-amd64), const IFT_VOICEFXO ideal-int pkg syscall (netbsd-amd64), const IFT_VOICEFXS ideal-int pkg syscall (netbsd-amd64), const IFT_VOICEOVERATM ideal-int pkg syscall (netbsd-amd64), const IFT_VOICEOVERCABLE ideal-int pkg syscall (netbsd-amd64), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (netbsd-amd64), const IFT_VOICEOVERIP ideal-int pkg syscall (netbsd-amd64), const IFT_X213 ideal-int pkg syscall (netbsd-amd64), const IFT_X25 ideal-int pkg syscall (netbsd-amd64), const IFT_X25DDN ideal-int pkg syscall (netbsd-amd64), const IFT_X25HUNTGROUP ideal-int pkg syscall (netbsd-amd64), const IFT_X25MLP ideal-int pkg syscall (netbsd-amd64), const IFT_X25PLE ideal-int pkg syscall (netbsd-amd64), const IFT_XETHER ideal-int pkg syscall (netbsd-amd64), const IGNBRK ideal-int pkg syscall (netbsd-amd64), const IGNCR ideal-int pkg syscall (netbsd-amd64), const IGNPAR ideal-int pkg syscall (netbsd-amd64), const IMAXBEL ideal-int pkg syscall (netbsd-amd64), const INLCR ideal-int pkg syscall (netbsd-amd64), const INPCK ideal-int pkg syscall (netbsd-amd64), const IN_CLASSA_HOST ideal-int pkg syscall (netbsd-amd64), const IN_CLASSA_MAX ideal-int pkg syscall (netbsd-amd64), const IN_CLASSA_NET ideal-int pkg syscall (netbsd-amd64), const IN_CLASSA_NSHIFT ideal-int pkg syscall (netbsd-amd64), const IN_CLASSB_HOST ideal-int pkg syscall (netbsd-amd64), const IN_CLASSB_MAX ideal-int pkg syscall (netbsd-amd64), const IN_CLASSB_NET ideal-int pkg syscall (netbsd-amd64), const IN_CLASSB_NSHIFT ideal-int pkg syscall (netbsd-amd64), const IN_CLASSC_HOST ideal-int pkg syscall (netbsd-amd64), const IN_CLASSC_NET ideal-int pkg syscall (netbsd-amd64), const IN_CLASSC_NSHIFT ideal-int pkg syscall (netbsd-amd64), const IN_CLASSD_HOST ideal-int pkg syscall (netbsd-amd64), const IN_CLASSD_NET ideal-int pkg syscall (netbsd-amd64), const IN_CLASSD_NSHIFT ideal-int pkg syscall (netbsd-amd64), const IN_LOOPBACKNET ideal-int pkg syscall (netbsd-amd64), const IPPROTO_AH ideal-int pkg syscall (netbsd-amd64), const IPPROTO_CARP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_DONE ideal-int pkg syscall (netbsd-amd64), const IPPROTO_DSTOPTS ideal-int pkg syscall (netbsd-amd64), const IPPROTO_EGP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_ENCAP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_EON ideal-int pkg syscall (netbsd-amd64), const IPPROTO_ESP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_ETHERIP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_FRAGMENT ideal-int pkg syscall (netbsd-amd64), const IPPROTO_GGP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_GRE ideal-int pkg syscall (netbsd-amd64), const IPPROTO_HOPOPTS ideal-int pkg syscall (netbsd-amd64), const IPPROTO_ICMP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_ICMPV6 ideal-int pkg syscall (netbsd-amd64), const IPPROTO_IDP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_IGMP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_IPCOMP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_IPIP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_IPV4 ideal-int pkg syscall (netbsd-amd64), const IPPROTO_IPV6_ICMP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_MAX ideal-int pkg syscall (netbsd-amd64), const IPPROTO_MAXID ideal-int pkg syscall (netbsd-amd64), const IPPROTO_MOBILE ideal-int pkg syscall (netbsd-amd64), const IPPROTO_NONE ideal-int pkg syscall (netbsd-amd64), const IPPROTO_PFSYNC ideal-int pkg syscall (netbsd-amd64), const IPPROTO_PIM ideal-int pkg syscall (netbsd-amd64), const IPPROTO_PUP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_RAW ideal-int pkg syscall (netbsd-amd64), const IPPROTO_ROUTING ideal-int pkg syscall (netbsd-amd64), const IPPROTO_RSVP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_TP ideal-int pkg syscall (netbsd-amd64), const IPPROTO_VRRP ideal-int pkg syscall (netbsd-amd64), const IPV6_CHECKSUM ideal-int pkg syscall (netbsd-amd64), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (netbsd-amd64), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (netbsd-amd64), const IPV6_DEFHLIM ideal-int pkg syscall (netbsd-amd64), const IPV6_DONTFRAG ideal-int pkg syscall (netbsd-amd64), const IPV6_DSTOPTS ideal-int pkg syscall (netbsd-amd64), const IPV6_FAITH ideal-int pkg syscall (netbsd-amd64), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (netbsd-amd64), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (netbsd-amd64), const IPV6_FRAGTTL ideal-int pkg syscall (netbsd-amd64), const IPV6_HLIMDEC ideal-int pkg syscall (netbsd-amd64), const IPV6_HOPLIMIT ideal-int pkg syscall (netbsd-amd64), const IPV6_HOPOPTS ideal-int pkg syscall (netbsd-amd64), const IPV6_IPSEC_POLICY ideal-int pkg syscall (netbsd-amd64), const IPV6_MAXHLIM ideal-int pkg syscall (netbsd-amd64), const IPV6_MAXPACKET ideal-int pkg syscall (netbsd-amd64), const IPV6_MMTU ideal-int pkg syscall (netbsd-amd64), const IPV6_NEXTHOP ideal-int pkg syscall (netbsd-amd64), const IPV6_PATHMTU ideal-int pkg syscall (netbsd-amd64), const IPV6_PKTINFO ideal-int pkg syscall (netbsd-amd64), const IPV6_PORTRANGE ideal-int pkg syscall (netbsd-amd64), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (netbsd-amd64), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (netbsd-amd64), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (netbsd-amd64), const IPV6_RECVDSTOPTS ideal-int pkg syscall (netbsd-amd64), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (netbsd-amd64), const IPV6_RECVHOPOPTS ideal-int pkg syscall (netbsd-amd64), const IPV6_RECVPATHMTU ideal-int pkg syscall (netbsd-amd64), const IPV6_RECVPKTINFO ideal-int pkg syscall (netbsd-amd64), const IPV6_RECVRTHDR ideal-int pkg syscall (netbsd-amd64), const IPV6_RECVTCLASS ideal-int pkg syscall (netbsd-amd64), const IPV6_RTHDR ideal-int pkg syscall (netbsd-amd64), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (netbsd-amd64), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (netbsd-amd64), const IPV6_RTHDR_STRICT ideal-int pkg syscall (netbsd-amd64), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (netbsd-amd64), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (netbsd-amd64), const IPV6_TCLASS ideal-int pkg syscall (netbsd-amd64), const IPV6_USE_MIN_MTU ideal-int pkg syscall (netbsd-amd64), const IPV6_VERSION ideal-int pkg syscall (netbsd-amd64), const IPV6_VERSION_MASK ideal-int pkg syscall (netbsd-amd64), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (netbsd-amd64), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (netbsd-amd64), const IP_DF ideal-int pkg syscall (netbsd-amd64), const IP_EF ideal-int pkg syscall (netbsd-amd64), const IP_ERRORMTU ideal-int pkg syscall (netbsd-amd64), const IP_HDRINCL ideal-int pkg syscall (netbsd-amd64), const IP_IPSEC_POLICY ideal-int pkg syscall (netbsd-amd64), const IP_MAXPACKET ideal-int pkg syscall (netbsd-amd64), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (netbsd-amd64), const IP_MF ideal-int pkg syscall (netbsd-amd64), const IP_MINFRAGSIZE ideal-int pkg syscall (netbsd-amd64), const IP_MINTTL ideal-int pkg syscall (netbsd-amd64), const IP_MSS ideal-int pkg syscall (netbsd-amd64), const IP_OFFMASK ideal-int pkg syscall (netbsd-amd64), const IP_OPTIONS ideal-int pkg syscall (netbsd-amd64), const IP_PORTRANGE ideal-int pkg syscall (netbsd-amd64), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (netbsd-amd64), const IP_PORTRANGE_HIGH ideal-int pkg syscall (netbsd-amd64), const IP_PORTRANGE_LOW ideal-int pkg syscall (netbsd-amd64), const IP_RECVDSTADDR ideal-int pkg syscall (netbsd-amd64), const IP_RECVIF ideal-int pkg syscall (netbsd-amd64), const IP_RECVOPTS ideal-int pkg syscall (netbsd-amd64), const IP_RECVRETOPTS ideal-int pkg syscall (netbsd-amd64), const IP_RECVTTL ideal-int pkg syscall (netbsd-amd64), const IP_RETOPTS ideal-int pkg syscall (netbsd-amd64), const IP_RF ideal-int pkg syscall (netbsd-amd64), const ISIG ideal-int pkg syscall (netbsd-amd64), const ISTRIP ideal-int pkg syscall (netbsd-amd64), const IXANY ideal-int pkg syscall (netbsd-amd64), const IXOFF ideal-int pkg syscall (netbsd-amd64), const IXON ideal-int pkg syscall (netbsd-amd64), const LOCK_EX ideal-int pkg syscall (netbsd-amd64), const LOCK_NB ideal-int pkg syscall (netbsd-amd64), const LOCK_SH ideal-int pkg syscall (netbsd-amd64), const LOCK_UN ideal-int pkg syscall (netbsd-amd64), const MSG_BCAST ideal-int pkg syscall (netbsd-amd64), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (netbsd-amd64), const MSG_CONTROLMBUF ideal-int pkg syscall (netbsd-amd64), const MSG_CTRUNC ideal-int pkg syscall (netbsd-amd64), const MSG_DONTROUTE ideal-int pkg syscall (netbsd-amd64), const MSG_DONTWAIT ideal-int pkg syscall (netbsd-amd64), const MSG_EOR ideal-int pkg syscall (netbsd-amd64), const MSG_IOVUSRSPACE ideal-int pkg syscall (netbsd-amd64), const MSG_LENUSRSPACE ideal-int pkg syscall (netbsd-amd64), const MSG_MCAST ideal-int pkg syscall (netbsd-amd64), const MSG_NAMEMBUF ideal-int pkg syscall (netbsd-amd64), const MSG_NBIO ideal-int pkg syscall (netbsd-amd64), const MSG_NOSIGNAL ideal-int pkg syscall (netbsd-amd64), const MSG_OOB ideal-int pkg syscall (netbsd-amd64), const MSG_PEEK ideal-int pkg syscall (netbsd-amd64), const MSG_TRUNC ideal-int pkg syscall (netbsd-amd64), const MSG_USERFLAGS ideal-int pkg syscall (netbsd-amd64), const MSG_WAITALL ideal-int pkg syscall (netbsd-amd64), const NAME_MAX ideal-int pkg syscall (netbsd-amd64), const NET_RT_DUMP ideal-int pkg syscall (netbsd-amd64), const NET_RT_FLAGS ideal-int pkg syscall (netbsd-amd64), const NET_RT_IFLIST ideal-int pkg syscall (netbsd-amd64), const NET_RT_MAXID ideal-int pkg syscall (netbsd-amd64), const NET_RT_OIFLIST ideal-int pkg syscall (netbsd-amd64), const NET_RT_OOIFLIST ideal-int pkg syscall (netbsd-amd64), const NOFLSH ideal-int pkg syscall (netbsd-amd64), const NOTE_ATTRIB ideal-int pkg syscall (netbsd-amd64), const NOTE_CHILD ideal-int pkg syscall (netbsd-amd64), const NOTE_DELETE ideal-int pkg syscall (netbsd-amd64), const NOTE_EXEC ideal-int pkg syscall (netbsd-amd64), const NOTE_EXIT ideal-int pkg syscall (netbsd-amd64), const NOTE_EXTEND ideal-int pkg syscall (netbsd-amd64), const NOTE_FORK ideal-int pkg syscall (netbsd-amd64), const NOTE_LINK ideal-int pkg syscall (netbsd-amd64), const NOTE_LOWAT ideal-int pkg syscall (netbsd-amd64), const NOTE_PCTRLMASK ideal-int pkg syscall (netbsd-amd64), const NOTE_PDATAMASK ideal-int pkg syscall (netbsd-amd64), const NOTE_RENAME ideal-int pkg syscall (netbsd-amd64), const NOTE_REVOKE ideal-int pkg syscall (netbsd-amd64), const NOTE_TRACK ideal-int pkg syscall (netbsd-amd64), const NOTE_TRACKERR ideal-int pkg syscall (netbsd-amd64), const NOTE_WRITE ideal-int pkg syscall (netbsd-amd64), const OCRNL ideal-int pkg syscall (netbsd-amd64), const OFIOGETBMAP ideal-int pkg syscall (netbsd-amd64), const ONLCR ideal-int pkg syscall (netbsd-amd64), const ONLRET ideal-int pkg syscall (netbsd-amd64), const ONOCR ideal-int pkg syscall (netbsd-amd64), const ONOEOT ideal-int pkg syscall (netbsd-amd64), const OPOST ideal-int pkg syscall (netbsd-amd64), const O_ACCMODE ideal-int pkg syscall (netbsd-amd64), const O_ALT_IO ideal-int pkg syscall (netbsd-amd64), const O_DIRECT ideal-int pkg syscall (netbsd-amd64), const O_DIRECTORY ideal-int pkg syscall (netbsd-amd64), const O_DSYNC ideal-int pkg syscall (netbsd-amd64), const O_EXLOCK ideal-int pkg syscall (netbsd-amd64), const O_FSYNC ideal-int pkg syscall (netbsd-amd64), const O_NDELAY ideal-int pkg syscall (netbsd-amd64), const O_NOFOLLOW ideal-int pkg syscall (netbsd-amd64), const O_NOSIGPIPE ideal-int pkg syscall (netbsd-amd64), const O_RSYNC ideal-int pkg syscall (netbsd-amd64), const O_SHLOCK ideal-int pkg syscall (netbsd-amd64), const PARENB ideal-int pkg syscall (netbsd-amd64), const PARMRK ideal-int pkg syscall (netbsd-amd64), const PARODD ideal-int pkg syscall (netbsd-amd64), const PENDIN ideal-int pkg syscall (netbsd-amd64), const PRIO_PGRP = 1 pkg syscall (netbsd-amd64), const PRIO_PGRP ideal-int pkg syscall (netbsd-amd64), const PRIO_PROCESS = 0 pkg syscall (netbsd-amd64), const PRIO_PROCESS ideal-int pkg syscall (netbsd-amd64), const PRIO_USER = 2 pkg syscall (netbsd-amd64), const PRIO_USER ideal-int pkg syscall (netbsd-amd64), const PRI_IOFLUSH ideal-int pkg syscall (netbsd-amd64), const PTRACE_CONT ideal-int pkg syscall (netbsd-amd64), const PTRACE_KILL ideal-int pkg syscall (netbsd-amd64), const PTRACE_TRACEME ideal-int pkg syscall (netbsd-amd64), const RLIMIT_AS ideal-int pkg syscall (netbsd-amd64), const RLIMIT_CORE ideal-int pkg syscall (netbsd-amd64), const RLIMIT_CPU ideal-int pkg syscall (netbsd-amd64), const RLIMIT_DATA ideal-int pkg syscall (netbsd-amd64), const RLIMIT_FSIZE ideal-int pkg syscall (netbsd-amd64), const RLIMIT_NOFILE ideal-int pkg syscall (netbsd-amd64), const RLIMIT_STACK ideal-int pkg syscall (netbsd-amd64), const RLIM_INFINITY ideal-int pkg syscall (netbsd-amd64), const RTAX_AUTHOR ideal-int pkg syscall (netbsd-amd64), const RTAX_BRD ideal-int pkg syscall (netbsd-amd64), const RTAX_DST ideal-int pkg syscall (netbsd-amd64), const RTAX_GATEWAY ideal-int pkg syscall (netbsd-amd64), const RTAX_GENMASK ideal-int pkg syscall (netbsd-amd64), const RTAX_IFA ideal-int pkg syscall (netbsd-amd64), const RTAX_IFP ideal-int pkg syscall (netbsd-amd64), const RTAX_MAX ideal-int pkg syscall (netbsd-amd64), const RTAX_NETMASK ideal-int pkg syscall (netbsd-amd64), const RTAX_TAG ideal-int pkg syscall (netbsd-amd64), const RTA_AUTHOR ideal-int pkg syscall (netbsd-amd64), const RTA_BRD ideal-int pkg syscall (netbsd-amd64), const RTA_DST ideal-int pkg syscall (netbsd-amd64), const RTA_GATEWAY ideal-int pkg syscall (netbsd-amd64), const RTA_GENMASK ideal-int pkg syscall (netbsd-amd64), const RTA_IFA ideal-int pkg syscall (netbsd-amd64), const RTA_IFP ideal-int pkg syscall (netbsd-amd64), const RTA_NETMASK ideal-int pkg syscall (netbsd-amd64), const RTA_TAG ideal-int pkg syscall (netbsd-amd64), const RTF_ANNOUNCE ideal-int pkg syscall (netbsd-amd64), const RTF_BLACKHOLE ideal-int pkg syscall (netbsd-amd64), const RTF_CLONED ideal-int pkg syscall (netbsd-amd64), const RTF_CLONING ideal-int pkg syscall (netbsd-amd64), const RTF_DONE ideal-int pkg syscall (netbsd-amd64), const RTF_DYNAMIC ideal-int pkg syscall (netbsd-amd64), const RTF_GATEWAY ideal-int pkg syscall (netbsd-amd64), const RTF_HOST ideal-int pkg syscall (netbsd-amd64), const RTF_LLINFO ideal-int pkg syscall (netbsd-amd64), const RTF_MASK ideal-int pkg syscall (netbsd-amd64), const RTF_MODIFIED ideal-int pkg syscall (netbsd-amd64), const RTF_PROTO1 ideal-int pkg syscall (netbsd-amd64), const RTF_PROTO2 ideal-int pkg syscall (netbsd-amd64), const RTF_REJECT ideal-int pkg syscall (netbsd-amd64), const RTF_SRC ideal-int pkg syscall (netbsd-amd64), const RTF_STATIC ideal-int pkg syscall (netbsd-amd64), const RTF_UP ideal-int pkg syscall (netbsd-amd64), const RTF_XRESOLVE ideal-int pkg syscall (netbsd-amd64), const RTM_ADD ideal-int pkg syscall (netbsd-amd64), const RTM_CHANGE ideal-int pkg syscall (netbsd-amd64), const RTM_CHGADDR ideal-int pkg syscall (netbsd-amd64), const RTM_DELADDR ideal-int pkg syscall (netbsd-amd64), const RTM_DELETE ideal-int pkg syscall (netbsd-amd64), const RTM_GET ideal-int pkg syscall (netbsd-amd64), const RTM_IEEE80211 ideal-int pkg syscall (netbsd-amd64), const RTM_IFANNOUNCE ideal-int pkg syscall (netbsd-amd64), const RTM_IFINFO ideal-int pkg syscall (netbsd-amd64), const RTM_LLINFO_UPD ideal-int pkg syscall (netbsd-amd64), const RTM_LOCK ideal-int pkg syscall (netbsd-amd64), const RTM_LOSING ideal-int pkg syscall (netbsd-amd64), const RTM_MISS ideal-int pkg syscall (netbsd-amd64), const RTM_NEWADDR ideal-int pkg syscall (netbsd-amd64), const RTM_OIFINFO ideal-int pkg syscall (netbsd-amd64), const RTM_OLDADD ideal-int pkg syscall (netbsd-amd64), const RTM_OLDDEL ideal-int pkg syscall (netbsd-amd64), const RTM_OOIFINFO ideal-int pkg syscall (netbsd-amd64), const RTM_REDIRECT ideal-int pkg syscall (netbsd-amd64), const RTM_RESOLVE ideal-int pkg syscall (netbsd-amd64), const RTM_RTTUNIT ideal-int pkg syscall (netbsd-amd64), const RTM_SETGATE ideal-int pkg syscall (netbsd-amd64), const RTM_VERSION ideal-int pkg syscall (netbsd-amd64), const RTV_EXPIRE ideal-int pkg syscall (netbsd-amd64), const RTV_HOPCOUNT ideal-int pkg syscall (netbsd-amd64), const RTV_MTU ideal-int pkg syscall (netbsd-amd64), const RTV_RPIPE ideal-int pkg syscall (netbsd-amd64), const RTV_RTT ideal-int pkg syscall (netbsd-amd64), const RTV_RTTVAR ideal-int pkg syscall (netbsd-amd64), const RTV_SPIPE ideal-int pkg syscall (netbsd-amd64), const RTV_SSTHRESH ideal-int pkg syscall (netbsd-amd64), const RUSAGE_CHILDREN ideal-int pkg syscall (netbsd-amd64), const RUSAGE_SELF ideal-int pkg syscall (netbsd-amd64), const SCM_CREDS ideal-int pkg syscall (netbsd-amd64), const SCM_RIGHTS ideal-int pkg syscall (netbsd-amd64), const SCM_TIMESTAMP ideal-int pkg syscall (netbsd-amd64), const SIGCHLD Signal pkg syscall (netbsd-amd64), const SIGCONT Signal pkg syscall (netbsd-amd64), const SIGEMT Signal pkg syscall (netbsd-amd64), const SIGINFO Signal pkg syscall (netbsd-amd64), const SIGIO Signal pkg syscall (netbsd-amd64), const SIGIOT Signal pkg syscall (netbsd-amd64), const SIGPROF Signal pkg syscall (netbsd-amd64), const SIGPWR Signal pkg syscall (netbsd-amd64), const SIGSTOP Signal pkg syscall (netbsd-amd64), const SIGSYS Signal pkg syscall (netbsd-amd64), const SIGTSTP Signal pkg syscall (netbsd-amd64), const SIGTTIN Signal pkg syscall (netbsd-amd64), const SIGTTOU Signal pkg syscall (netbsd-amd64), const SIGURG Signal pkg syscall (netbsd-amd64), const SIGUSR1 Signal pkg syscall (netbsd-amd64), const SIGUSR2 Signal pkg syscall (netbsd-amd64), const SIGVTALRM Signal pkg syscall (netbsd-amd64), const SIGWINCH Signal pkg syscall (netbsd-amd64), const SIGXCPU Signal pkg syscall (netbsd-amd64), const SIGXFSZ Signal pkg syscall (netbsd-amd64), const SIOCADDMULTI ideal-int pkg syscall (netbsd-amd64), const SIOCADDRT ideal-int pkg syscall (netbsd-amd64), const SIOCAIFADDR ideal-int pkg syscall (netbsd-amd64), const SIOCALIFADDR ideal-int pkg syscall (netbsd-amd64), const SIOCATMARK ideal-int pkg syscall (netbsd-amd64), const SIOCDELMULTI ideal-int pkg syscall (netbsd-amd64), const SIOCDELRT ideal-int pkg syscall (netbsd-amd64), const SIOCDIFADDR ideal-int pkg syscall (netbsd-amd64), const SIOCDIFPHYADDR ideal-int pkg syscall (netbsd-amd64), const SIOCDLIFADDR ideal-int pkg syscall (netbsd-amd64), const SIOCGDRVSPEC ideal-int pkg syscall (netbsd-amd64), const SIOCGETPFSYNC ideal-int pkg syscall (netbsd-amd64), const SIOCGETSGCNT ideal-int pkg syscall (netbsd-amd64), const SIOCGETVIFCNT ideal-int pkg syscall (netbsd-amd64), const SIOCGHIWAT ideal-int pkg syscall (netbsd-amd64), const SIOCGIFADDR ideal-int pkg syscall (netbsd-amd64), const SIOCGIFADDRPREF ideal-int pkg syscall (netbsd-amd64), const SIOCGIFALIAS ideal-int pkg syscall (netbsd-amd64), const SIOCGIFBRDADDR ideal-int pkg syscall (netbsd-amd64), const SIOCGIFCAP ideal-int pkg syscall (netbsd-amd64), const SIOCGIFCONF ideal-int pkg syscall (netbsd-amd64), const SIOCGIFDATA ideal-int pkg syscall (netbsd-amd64), const SIOCGIFDLT ideal-int pkg syscall (netbsd-amd64), const SIOCGIFDSTADDR ideal-int pkg syscall (netbsd-amd64), const SIOCGIFFLAGS ideal-int pkg syscall (netbsd-amd64), const SIOCGIFGENERIC ideal-int pkg syscall (netbsd-amd64), const SIOCGIFMEDIA ideal-int pkg syscall (netbsd-amd64), const SIOCGIFMETRIC ideal-int pkg syscall (netbsd-amd64), const SIOCGIFMTU ideal-int pkg syscall (netbsd-amd64), const SIOCGIFNETMASK ideal-int pkg syscall (netbsd-amd64), const SIOCGIFPDSTADDR ideal-int pkg syscall (netbsd-amd64), const SIOCGIFPSRCADDR ideal-int pkg syscall (netbsd-amd64), const SIOCGLIFADDR ideal-int pkg syscall (netbsd-amd64), const SIOCGLIFPHYADDR ideal-int pkg syscall (netbsd-amd64), const SIOCGLINKSTR ideal-int pkg syscall (netbsd-amd64), const SIOCGLOWAT ideal-int pkg syscall (netbsd-amd64), const SIOCGPGRP ideal-int pkg syscall (netbsd-amd64), const SIOCGVH ideal-int pkg syscall (netbsd-amd64), const SIOCIFCREATE ideal-int pkg syscall (netbsd-amd64), const SIOCIFDESTROY ideal-int pkg syscall (netbsd-amd64), const SIOCIFGCLONERS ideal-int pkg syscall (netbsd-amd64), const SIOCINITIFADDR ideal-int pkg syscall (netbsd-amd64), const SIOCSDRVSPEC ideal-int pkg syscall (netbsd-amd64), const SIOCSETPFSYNC ideal-int pkg syscall (netbsd-amd64), const SIOCSHIWAT ideal-int pkg syscall (netbsd-amd64), const SIOCSIFADDR ideal-int pkg syscall (netbsd-amd64), const SIOCSIFADDRPREF ideal-int pkg syscall (netbsd-amd64), const SIOCSIFBRDADDR ideal-int pkg syscall (netbsd-amd64), const SIOCSIFCAP ideal-int pkg syscall (netbsd-amd64), const SIOCSIFDSTADDR ideal-int pkg syscall (netbsd-amd64), const SIOCSIFFLAGS ideal-int pkg syscall (netbsd-amd64), const SIOCSIFGENERIC ideal-int pkg syscall (netbsd-amd64), const SIOCSIFMEDIA ideal-int pkg syscall (netbsd-amd64), const SIOCSIFMETRIC ideal-int pkg syscall (netbsd-amd64), const SIOCSIFMTU ideal-int pkg syscall (netbsd-amd64), const SIOCSIFNETMASK ideal-int pkg syscall (netbsd-amd64), const SIOCSIFPHYADDR ideal-int pkg syscall (netbsd-amd64), const SIOCSLIFPHYADDR ideal-int pkg syscall (netbsd-amd64), const SIOCSLINKSTR ideal-int pkg syscall (netbsd-amd64), const SIOCSLOWAT ideal-int pkg syscall (netbsd-amd64), const SIOCSPGRP ideal-int pkg syscall (netbsd-amd64), const SIOCSVH ideal-int pkg syscall (netbsd-amd64), const SIOCZIFDATA ideal-int pkg syscall (netbsd-amd64), const SOCK_CLOEXEC ideal-int pkg syscall (netbsd-amd64), const SOCK_FLAGS_MASK ideal-int pkg syscall (netbsd-amd64), const SOCK_NONBLOCK ideal-int pkg syscall (netbsd-amd64), const SOCK_NOSIGPIPE ideal-int pkg syscall (netbsd-amd64), const SOCK_RDM ideal-int pkg syscall (netbsd-amd64), const SO_ACCEPTCONN ideal-int pkg syscall (netbsd-amd64), const SO_ACCEPTFILTER ideal-int pkg syscall (netbsd-amd64), const SO_DEBUG ideal-int pkg syscall (netbsd-amd64), const SO_ERROR ideal-int pkg syscall (netbsd-amd64), const SO_NOHEADER ideal-int pkg syscall (netbsd-amd64), const SO_NOSIGPIPE ideal-int pkg syscall (netbsd-amd64), const SO_OOBINLINE ideal-int pkg syscall (netbsd-amd64), const SO_OVERFLOWED ideal-int pkg syscall (netbsd-amd64), const SO_RCVLOWAT ideal-int pkg syscall (netbsd-amd64), const SO_RCVTIMEO ideal-int pkg syscall (netbsd-amd64), const SO_REUSEPORT ideal-int pkg syscall (netbsd-amd64), const SO_SNDLOWAT ideal-int pkg syscall (netbsd-amd64), const SO_SNDTIMEO ideal-int pkg syscall (netbsd-amd64), const SO_TIMESTAMP ideal-int pkg syscall (netbsd-amd64), const SO_TYPE ideal-int pkg syscall (netbsd-amd64), const SO_USELOOPBACK ideal-int pkg syscall (netbsd-amd64), const SYSCTL_VERSION ideal-int pkg syscall (netbsd-amd64), const SYSCTL_VERS_0 ideal-int pkg syscall (netbsd-amd64), const SYSCTL_VERS_1 ideal-int pkg syscall (netbsd-amd64), const SYSCTL_VERS_MASK ideal-int pkg syscall (netbsd-amd64), const SYS_ACCEPT ideal-int pkg syscall (netbsd-amd64), const SYS_ACCESS ideal-int pkg syscall (netbsd-amd64), const SYS_ACCT ideal-int pkg syscall (netbsd-amd64), const SYS_ADJTIME ideal-int pkg syscall (netbsd-amd64), const SYS_BIND ideal-int pkg syscall (netbsd-amd64), const SYS_BREAK ideal-int pkg syscall (netbsd-amd64), const SYS_CHDIR ideal-int pkg syscall (netbsd-amd64), const SYS_CHFLAGS ideal-int pkg syscall (netbsd-amd64), const SYS_CHMOD ideal-int pkg syscall (netbsd-amd64), const SYS_CHOWN ideal-int pkg syscall (netbsd-amd64), const SYS_CHROOT ideal-int pkg syscall (netbsd-amd64), const SYS_CLOCK_GETRES ideal-int pkg syscall (netbsd-amd64), const SYS_CLOCK_GETTIME ideal-int pkg syscall (netbsd-amd64), const SYS_CLOCK_SETTIME ideal-int pkg syscall (netbsd-amd64), const SYS_CLOSE ideal-int pkg syscall (netbsd-amd64), const SYS_CONNECT ideal-int pkg syscall (netbsd-amd64), const SYS_DUP ideal-int pkg syscall (netbsd-amd64), const SYS_DUP2 ideal-int pkg syscall (netbsd-amd64), const SYS_DUP3 ideal-int pkg syscall (netbsd-amd64), const SYS_EXECVE ideal-int pkg syscall (netbsd-amd64), const SYS_EXIT ideal-int pkg syscall (netbsd-amd64), const SYS_EXTATTRCTL ideal-int pkg syscall (netbsd-amd64), const SYS_EXTATTR_DELETE_FD ideal-int pkg syscall (netbsd-amd64), const SYS_EXTATTR_DELETE_FILE ideal-int pkg syscall (netbsd-amd64), const SYS_EXTATTR_DELETE_LINK ideal-int pkg syscall (netbsd-amd64), const SYS_EXTATTR_GET_FD ideal-int pkg syscall (netbsd-amd64), const SYS_EXTATTR_GET_FILE ideal-int pkg syscall (netbsd-amd64), const SYS_EXTATTR_GET_LINK ideal-int pkg syscall (netbsd-amd64), const SYS_EXTATTR_LIST_FD ideal-int pkg syscall (netbsd-amd64), const SYS_EXTATTR_LIST_FILE ideal-int pkg syscall (netbsd-amd64), const SYS_EXTATTR_LIST_LINK ideal-int pkg syscall (netbsd-amd64), const SYS_EXTATTR_SET_FD ideal-int pkg syscall (netbsd-amd64), const SYS_EXTATTR_SET_FILE ideal-int pkg syscall (netbsd-amd64), const SYS_EXTATTR_SET_LINK ideal-int pkg syscall (netbsd-amd64), const SYS_FACCESSAT ideal-int pkg syscall (netbsd-amd64), const SYS_FCHDIR ideal-int pkg syscall (netbsd-amd64), const SYS_FCHFLAGS ideal-int pkg syscall (netbsd-amd64), const SYS_FCHMOD ideal-int pkg syscall (netbsd-amd64), const SYS_FCHMODAT ideal-int pkg syscall (netbsd-amd64), const SYS_FCHOWN ideal-int pkg syscall (netbsd-amd64), const SYS_FCHOWNAT ideal-int pkg syscall (netbsd-amd64), const SYS_FCHROOT ideal-int pkg syscall (netbsd-amd64), const SYS_FCNTL ideal-int pkg syscall (netbsd-amd64), const SYS_FDATASYNC ideal-int pkg syscall (netbsd-amd64), const SYS_FEXECVE ideal-int pkg syscall (netbsd-amd64), const SYS_FGETXATTR ideal-int pkg syscall (netbsd-amd64), const SYS_FHSTAT ideal-int pkg syscall (netbsd-amd64), const SYS_FKTRACE ideal-int pkg syscall (netbsd-amd64), const SYS_FLISTXATTR ideal-int pkg syscall (netbsd-amd64), const SYS_FLOCK ideal-int pkg syscall (netbsd-amd64), const SYS_FORK ideal-int pkg syscall (netbsd-amd64), const SYS_FPATHCONF ideal-int pkg syscall (netbsd-amd64), const SYS_FREMOVEXATTR ideal-int pkg syscall (netbsd-amd64), const SYS_FSETXATTR ideal-int pkg syscall (netbsd-amd64), const SYS_FSTAT ideal-int pkg syscall (netbsd-amd64), const SYS_FSTATAT ideal-int pkg syscall (netbsd-amd64), const SYS_FSTATVFS1 ideal-int pkg syscall (netbsd-amd64), const SYS_FSYNC ideal-int pkg syscall (netbsd-amd64), const SYS_FSYNC_RANGE ideal-int pkg syscall (netbsd-amd64), const SYS_FTRUNCATE ideal-int pkg syscall (netbsd-amd64), const SYS_FUTIMENS ideal-int pkg syscall (netbsd-amd64), const SYS_FUTIMES ideal-int pkg syscall (netbsd-amd64), const SYS_GETCONTEXT ideal-int pkg syscall (netbsd-amd64), const SYS_GETDENTS ideal-int pkg syscall (netbsd-amd64), const SYS_GETEGID ideal-int pkg syscall (netbsd-amd64), const SYS_GETEUID ideal-int pkg syscall (netbsd-amd64), const SYS_GETFH ideal-int pkg syscall (netbsd-amd64), const SYS_GETGID ideal-int pkg syscall (netbsd-amd64), const SYS_GETGROUPS ideal-int pkg syscall (netbsd-amd64), const SYS_GETITIMER ideal-int pkg syscall (netbsd-amd64), const SYS_GETPEERNAME ideal-int pkg syscall (netbsd-amd64), const SYS_GETPGID ideal-int pkg syscall (netbsd-amd64), const SYS_GETPGRP ideal-int pkg syscall (netbsd-amd64), const SYS_GETPID ideal-int pkg syscall (netbsd-amd64), const SYS_GETPPID ideal-int pkg syscall (netbsd-amd64), const SYS_GETPRIORITY ideal-int pkg syscall (netbsd-amd64), const SYS_GETRLIMIT ideal-int pkg syscall (netbsd-amd64), const SYS_GETRUSAGE ideal-int pkg syscall (netbsd-amd64), const SYS_GETSID ideal-int pkg syscall (netbsd-amd64), const SYS_GETSOCKNAME ideal-int pkg syscall (netbsd-amd64), const SYS_GETSOCKOPT ideal-int pkg syscall (netbsd-amd64), const SYS_GETTIMEOFDAY ideal-int pkg syscall (netbsd-amd64), const SYS_GETUID ideal-int pkg syscall (netbsd-amd64), const SYS_GETVFSSTAT ideal-int pkg syscall (netbsd-amd64), const SYS_GETXATTR ideal-int pkg syscall (netbsd-amd64), const SYS_IOCTL ideal-int pkg syscall (netbsd-amd64), const SYS_ISSETUGID ideal-int pkg syscall (netbsd-amd64), const SYS_KEVENT ideal-int pkg syscall (netbsd-amd64), const SYS_KILL ideal-int pkg syscall (netbsd-amd64), const SYS_KQUEUE ideal-int pkg syscall (netbsd-amd64), const SYS_KQUEUE1 ideal-int pkg syscall (netbsd-amd64), const SYS_KTRACE ideal-int pkg syscall (netbsd-amd64), const SYS_LCHFLAGS ideal-int pkg syscall (netbsd-amd64), const SYS_LCHMOD ideal-int pkg syscall (netbsd-amd64), const SYS_LCHOWN ideal-int pkg syscall (netbsd-amd64), const SYS_LGETXATTR ideal-int pkg syscall (netbsd-amd64), const SYS_LINK ideal-int pkg syscall (netbsd-amd64), const SYS_LINKAT ideal-int pkg syscall (netbsd-amd64), const SYS_LISTEN ideal-int pkg syscall (netbsd-amd64), const SYS_LISTXATTR ideal-int pkg syscall (netbsd-amd64), const SYS_LLISTXATTR ideal-int pkg syscall (netbsd-amd64), const SYS_LREMOVEXATTR ideal-int pkg syscall (netbsd-amd64), const SYS_LSEEK ideal-int pkg syscall (netbsd-amd64), const SYS_LSETXATTR ideal-int pkg syscall (netbsd-amd64), const SYS_LSTAT ideal-int pkg syscall (netbsd-amd64), const SYS_LUTIMES ideal-int pkg syscall (netbsd-amd64), const SYS_MADVISE ideal-int pkg syscall (netbsd-amd64), const SYS_MINCORE ideal-int pkg syscall (netbsd-amd64), const SYS_MINHERIT ideal-int pkg syscall (netbsd-amd64), const SYS_MKDIR ideal-int pkg syscall (netbsd-amd64), const SYS_MKDIRAT ideal-int pkg syscall (netbsd-amd64), const SYS_MKFIFO ideal-int pkg syscall (netbsd-amd64), const SYS_MKFIFOAT ideal-int pkg syscall (netbsd-amd64), const SYS_MKNOD ideal-int pkg syscall (netbsd-amd64), const SYS_MKNODAT ideal-int pkg syscall (netbsd-amd64), const SYS_MLOCK ideal-int pkg syscall (netbsd-amd64), const SYS_MLOCKALL ideal-int pkg syscall (netbsd-amd64), const SYS_MMAP ideal-int pkg syscall (netbsd-amd64), const SYS_MODCTL ideal-int pkg syscall (netbsd-amd64), const SYS_MOUNT ideal-int pkg syscall (netbsd-amd64), const SYS_MPROTECT ideal-int pkg syscall (netbsd-amd64), const SYS_MREMAP ideal-int pkg syscall (netbsd-amd64), const SYS_MSGCTL ideal-int pkg syscall (netbsd-amd64), const SYS_MSGGET ideal-int pkg syscall (netbsd-amd64), const SYS_MSGRCV ideal-int pkg syscall (netbsd-amd64), const SYS_MSGSND ideal-int pkg syscall (netbsd-amd64), const SYS_MUNLOCK ideal-int pkg syscall (netbsd-amd64), const SYS_MUNLOCKALL ideal-int pkg syscall (netbsd-amd64), const SYS_MUNMAP ideal-int pkg syscall (netbsd-amd64), const SYS_NANOSLEEP ideal-int pkg syscall (netbsd-amd64), const SYS_NTP_ADJTIME ideal-int pkg syscall (netbsd-amd64), const SYS_NTP_GETTIME ideal-int pkg syscall (netbsd-amd64), const SYS_OPEN ideal-int pkg syscall (netbsd-amd64), const SYS_OPENAT ideal-int pkg syscall (netbsd-amd64), const SYS_PACCEPT ideal-int pkg syscall (netbsd-amd64), const SYS_PATHCONF ideal-int pkg syscall (netbsd-amd64), const SYS_PIPE ideal-int pkg syscall (netbsd-amd64), const SYS_PIPE2 ideal-int pkg syscall (netbsd-amd64), const SYS_PMC_CONTROL ideal-int pkg syscall (netbsd-amd64), const SYS_PMC_GET_INFO ideal-int pkg syscall (netbsd-amd64), const SYS_POLL ideal-int pkg syscall (netbsd-amd64), const SYS_POLLTS ideal-int pkg syscall (netbsd-amd64), const SYS_POSIX_FADVISE ideal-int pkg syscall (netbsd-amd64), const SYS_POSIX_SPAWN ideal-int pkg syscall (netbsd-amd64), const SYS_PREAD ideal-int pkg syscall (netbsd-amd64), const SYS_PREADV ideal-int pkg syscall (netbsd-amd64), const SYS_PROFIL ideal-int pkg syscall (netbsd-amd64), const SYS_PSELECT ideal-int pkg syscall (netbsd-amd64), const SYS_PSET_ASSIGN ideal-int pkg syscall (netbsd-amd64), const SYS_PSET_CREATE ideal-int pkg syscall (netbsd-amd64), const SYS_PSET_DESTROY ideal-int pkg syscall (netbsd-amd64), const SYS_PTRACE ideal-int pkg syscall (netbsd-amd64), const SYS_PWRITE ideal-int pkg syscall (netbsd-amd64), const SYS_PWRITEV ideal-int pkg syscall (netbsd-amd64), const SYS_RASCTL ideal-int pkg syscall (netbsd-amd64), const SYS_READ ideal-int pkg syscall (netbsd-amd64), const SYS_READLINK ideal-int pkg syscall (netbsd-amd64), const SYS_READLINKAT ideal-int pkg syscall (netbsd-amd64), const SYS_READV ideal-int pkg syscall (netbsd-amd64), const SYS_REBOOT ideal-int pkg syscall (netbsd-amd64), const SYS_RECVFROM ideal-int pkg syscall (netbsd-amd64), const SYS_RECVMMSG ideal-int pkg syscall (netbsd-amd64), const SYS_RECVMSG ideal-int pkg syscall (netbsd-amd64), const SYS_REMOVEXATTR ideal-int pkg syscall (netbsd-amd64), const SYS_RENAME ideal-int pkg syscall (netbsd-amd64), const SYS_RENAMEAT ideal-int pkg syscall (netbsd-amd64), const SYS_REVOKE ideal-int pkg syscall (netbsd-amd64), const SYS_RMDIR ideal-int pkg syscall (netbsd-amd64), const SYS_SBRK ideal-int pkg syscall (netbsd-amd64), const SYS_SCHED_YIELD ideal-int pkg syscall (netbsd-amd64), const SYS_SELECT ideal-int pkg syscall (netbsd-amd64), const SYS_SEMCONFIG ideal-int pkg syscall (netbsd-amd64), const SYS_SEMGET ideal-int pkg syscall (netbsd-amd64), const SYS_SEMOP ideal-int pkg syscall (netbsd-amd64), const SYS_SENDMMSG ideal-int pkg syscall (netbsd-amd64), const SYS_SENDMSG ideal-int pkg syscall (netbsd-amd64), const SYS_SENDTO ideal-int pkg syscall (netbsd-amd64), const SYS_SETCONTEXT ideal-int pkg syscall (netbsd-amd64), const SYS_SETEGID ideal-int pkg syscall (netbsd-amd64), const SYS_SETEUID ideal-int pkg syscall (netbsd-amd64), const SYS_SETGID ideal-int pkg syscall (netbsd-amd64), const SYS_SETGROUPS ideal-int pkg syscall (netbsd-amd64), const SYS_SETITIMER ideal-int pkg syscall (netbsd-amd64), const SYS_SETPGID ideal-int pkg syscall (netbsd-amd64), const SYS_SETPRIORITY ideal-int pkg syscall (netbsd-amd64), const SYS_SETREGID ideal-int pkg syscall (netbsd-amd64), const SYS_SETREUID ideal-int pkg syscall (netbsd-amd64), const SYS_SETRLIMIT ideal-int pkg syscall (netbsd-amd64), const SYS_SETSID ideal-int pkg syscall (netbsd-amd64), const SYS_SETSOCKOPT ideal-int pkg syscall (netbsd-amd64), const SYS_SETTIMEOFDAY ideal-int pkg syscall (netbsd-amd64), const SYS_SETUID ideal-int pkg syscall (netbsd-amd64), const SYS_SETXATTR ideal-int pkg syscall (netbsd-amd64), const SYS_SHMAT ideal-int pkg syscall (netbsd-amd64), const SYS_SHMCTL ideal-int pkg syscall (netbsd-amd64), const SYS_SHMDT ideal-int pkg syscall (netbsd-amd64), const SYS_SHMGET ideal-int pkg syscall (netbsd-amd64), const SYS_SHUTDOWN ideal-int pkg syscall (netbsd-amd64), const SYS_SIGQUEUEINFO ideal-int pkg syscall (netbsd-amd64), const SYS_SOCKET ideal-int pkg syscall (netbsd-amd64), const SYS_SOCKETPAIR ideal-int pkg syscall (netbsd-amd64), const SYS_SSTK ideal-int pkg syscall (netbsd-amd64), const SYS_STAT ideal-int pkg syscall (netbsd-amd64), const SYS_STATVFS1 ideal-int pkg syscall (netbsd-amd64), const SYS_SWAPCTL ideal-int pkg syscall (netbsd-amd64), const SYS_SYMLINK ideal-int pkg syscall (netbsd-amd64), const SYS_SYMLINKAT ideal-int pkg syscall (netbsd-amd64), const SYS_SYNC ideal-int pkg syscall (netbsd-amd64), const SYS_SYSARCH ideal-int pkg syscall (netbsd-amd64), const SYS_TIMER_CREATE ideal-int pkg syscall (netbsd-amd64), const SYS_TIMER_DELETE ideal-int pkg syscall (netbsd-amd64), const SYS_TIMER_GETOVERRUN ideal-int pkg syscall (netbsd-amd64), const SYS_TIMER_GETTIME ideal-int pkg syscall (netbsd-amd64), const SYS_TIMER_SETTIME ideal-int pkg syscall (netbsd-amd64), const SYS_TRUNCATE ideal-int pkg syscall (netbsd-amd64), const SYS_UMASK ideal-int pkg syscall (netbsd-amd64), const SYS_UNDELETE ideal-int pkg syscall (netbsd-amd64), const SYS_UNLINK ideal-int pkg syscall (netbsd-amd64), const SYS_UNLINKAT ideal-int pkg syscall (netbsd-amd64), const SYS_UNMOUNT ideal-int pkg syscall (netbsd-amd64), const SYS_UTIMENSAT ideal-int pkg syscall (netbsd-amd64), const SYS_UTIMES ideal-int pkg syscall (netbsd-amd64), const SYS_UTRACE ideal-int pkg syscall (netbsd-amd64), const SYS_UUIDGEN ideal-int pkg syscall (netbsd-amd64), const SYS_VADVISE ideal-int pkg syscall (netbsd-amd64), const SYS_VFORK ideal-int pkg syscall (netbsd-amd64), const SYS_WAIT4 ideal-int pkg syscall (netbsd-amd64), const SYS_WRITE ideal-int pkg syscall (netbsd-amd64), const SYS_WRITEV ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_CONTINUE ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_CREATE ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_CTL ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_DETACH ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_EXIT ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_GETNAME ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_GETPRIVATE ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_KILL ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_PARK ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_SELF ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_SETNAME ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_SETPRIVATE ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_SUSPEND ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_UNPARK ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_UNPARK_ALL ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_WAIT ideal-int pkg syscall (netbsd-amd64), const SYS__LWP_WAKEUP ideal-int pkg syscall (netbsd-amd64), const SYS__PSET_BIND ideal-int pkg syscall (netbsd-amd64), const SYS__SCHED_GETAFFINITY ideal-int pkg syscall (netbsd-amd64), const SYS__SCHED_GETPARAM ideal-int pkg syscall (netbsd-amd64), const SYS__SCHED_SETAFFINITY ideal-int pkg syscall (netbsd-amd64), const SYS__SCHED_SETPARAM ideal-int pkg syscall (netbsd-amd64), const SYS___CLONE ideal-int pkg syscall (netbsd-amd64), const SYS___GETCWD ideal-int pkg syscall (netbsd-amd64), const SYS___GETLOGIN ideal-int pkg syscall (netbsd-amd64), const SYS___POSIX_CHOWN ideal-int pkg syscall (netbsd-amd64), const SYS___POSIX_FCHOWN ideal-int pkg syscall (netbsd-amd64), const SYS___POSIX_LCHOWN ideal-int pkg syscall (netbsd-amd64), const SYS___POSIX_RENAME ideal-int pkg syscall (netbsd-amd64), const SYS___QUOTACTL ideal-int pkg syscall (netbsd-amd64), const SYS___SEMCTL ideal-int pkg syscall (netbsd-amd64), const SYS___SETLOGIN ideal-int pkg syscall (netbsd-amd64), const SYS___SIGACTION_SIGTRAMP ideal-int pkg syscall (netbsd-amd64), const SYS___SIGTIMEDWAIT ideal-int pkg syscall (netbsd-amd64), const SYS___SYSCTL ideal-int pkg syscall (netbsd-amd64), const S_ARCH1 ideal-int pkg syscall (netbsd-amd64), const S_ARCH2 ideal-int pkg syscall (netbsd-amd64), const S_BLKSIZE ideal-int pkg syscall (netbsd-amd64), const S_IEXEC ideal-int pkg syscall (netbsd-amd64), const S_IFWHT ideal-int pkg syscall (netbsd-amd64), const S_IREAD ideal-int pkg syscall (netbsd-amd64), const S_IRGRP ideal-int pkg syscall (netbsd-amd64), const S_IROTH ideal-int pkg syscall (netbsd-amd64), const S_IRWXG ideal-int pkg syscall (netbsd-amd64), const S_IRWXO ideal-int pkg syscall (netbsd-amd64), const S_IRWXU ideal-int pkg syscall (netbsd-amd64), const S_ISTXT ideal-int pkg syscall (netbsd-amd64), const S_IWGRP ideal-int pkg syscall (netbsd-amd64), const S_IWOTH ideal-int pkg syscall (netbsd-amd64), const S_IWRITE ideal-int pkg syscall (netbsd-amd64), const S_IXGRP ideal-int pkg syscall (netbsd-amd64), const S_IXOTH ideal-int pkg syscall (netbsd-amd64), const S_LOGIN_SET ideal-int pkg syscall (netbsd-amd64), const SizeofBpfHdr ideal-int pkg syscall (netbsd-amd64), const SizeofBpfInsn ideal-int pkg syscall (netbsd-amd64), const SizeofBpfProgram ideal-int pkg syscall (netbsd-amd64), const SizeofBpfStat ideal-int pkg syscall (netbsd-amd64), const SizeofBpfVersion ideal-int pkg syscall (netbsd-amd64), const SizeofCmsghdr ideal-int pkg syscall (netbsd-amd64), const SizeofICMPv6Filter = 32 pkg syscall (netbsd-amd64), const SizeofICMPv6Filter ideal-int pkg syscall (netbsd-amd64), const SizeofIPMreq ideal-int pkg syscall (netbsd-amd64), const SizeofIPv6MTUInfo = 32 pkg syscall (netbsd-amd64), const SizeofIPv6MTUInfo ideal-int pkg syscall (netbsd-amd64), const SizeofIPv6Mreq ideal-int pkg syscall (netbsd-amd64), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (netbsd-amd64), const SizeofIfData ideal-int pkg syscall (netbsd-amd64), const SizeofIfMsghdr ideal-int pkg syscall (netbsd-amd64), const SizeofIfaMsghdr ideal-int pkg syscall (netbsd-amd64), const SizeofInet6Pktinfo ideal-int pkg syscall (netbsd-amd64), const SizeofLinger ideal-int pkg syscall (netbsd-amd64), const SizeofMsghdr ideal-int pkg syscall (netbsd-amd64), const SizeofRtMetrics ideal-int pkg syscall (netbsd-amd64), const SizeofRtMsghdr ideal-int pkg syscall (netbsd-amd64), const SizeofSockaddrAny ideal-int pkg syscall (netbsd-amd64), const SizeofSockaddrDatalink ideal-int pkg syscall (netbsd-amd64), const SizeofSockaddrInet4 ideal-int pkg syscall (netbsd-amd64), const SizeofSockaddrInet6 ideal-int pkg syscall (netbsd-amd64), const SizeofSockaddrUnix ideal-int pkg syscall (netbsd-amd64), const TCIFLUSH ideal-int pkg syscall (netbsd-amd64), const TCIOFLUSH ideal-int pkg syscall (netbsd-amd64), const TCOFLUSH ideal-int pkg syscall (netbsd-amd64), const TCP_CONGCTL ideal-int pkg syscall (netbsd-amd64), const TCP_KEEPCNT ideal-int pkg syscall (netbsd-amd64), const TCP_KEEPIDLE ideal-int pkg syscall (netbsd-amd64), const TCP_KEEPINIT ideal-int pkg syscall (netbsd-amd64), const TCP_KEEPINTVL ideal-int pkg syscall (netbsd-amd64), const TCP_MAXBURST ideal-int pkg syscall (netbsd-amd64), const TCP_MAXSEG ideal-int pkg syscall (netbsd-amd64), const TCP_MAXWIN ideal-int pkg syscall (netbsd-amd64), const TCP_MAX_WINSHIFT ideal-int pkg syscall (netbsd-amd64), const TCP_MD5SIG ideal-int pkg syscall (netbsd-amd64), const TCP_MINMSS ideal-int pkg syscall (netbsd-amd64), const TCP_MSS ideal-int pkg syscall (netbsd-amd64), const TCSAFLUSH ideal-int pkg syscall (netbsd-amd64), const TIOCCBRK ideal-int pkg syscall (netbsd-amd64), const TIOCCDTR ideal-int pkg syscall (netbsd-amd64), const TIOCCONS ideal-int pkg syscall (netbsd-amd64), const TIOCDCDTIMESTAMP ideal-int pkg syscall (netbsd-amd64), const TIOCDRAIN ideal-int pkg syscall (netbsd-amd64), const TIOCEXCL ideal-int pkg syscall (netbsd-amd64), const TIOCEXT ideal-int pkg syscall (netbsd-amd64), const TIOCFLAG_CDTRCTS ideal-int pkg syscall (netbsd-amd64), const TIOCFLAG_CLOCAL ideal-int pkg syscall (netbsd-amd64), const TIOCFLAG_CRTSCTS ideal-int pkg syscall (netbsd-amd64), const TIOCFLAG_MDMBUF ideal-int pkg syscall (netbsd-amd64), const TIOCFLAG_SOFTCAR ideal-int pkg syscall (netbsd-amd64), const TIOCFLUSH ideal-int pkg syscall (netbsd-amd64), const TIOCGETA ideal-int pkg syscall (netbsd-amd64), const TIOCGETD ideal-int pkg syscall (netbsd-amd64), const TIOCGFLAGS ideal-int pkg syscall (netbsd-amd64), const TIOCGLINED ideal-int pkg syscall (netbsd-amd64), const TIOCGPGRP ideal-int pkg syscall (netbsd-amd64), const TIOCGQSIZE ideal-int pkg syscall (netbsd-amd64), const TIOCGRANTPT ideal-int pkg syscall (netbsd-amd64), const TIOCGSID ideal-int pkg syscall (netbsd-amd64), const TIOCGSIZE ideal-int pkg syscall (netbsd-amd64), const TIOCGWINSZ ideal-int pkg syscall (netbsd-amd64), const TIOCMBIC ideal-int pkg syscall (netbsd-amd64), const TIOCMBIS ideal-int pkg syscall (netbsd-amd64), const TIOCMGET ideal-int pkg syscall (netbsd-amd64), const TIOCMSET ideal-int pkg syscall (netbsd-amd64), const TIOCM_CAR ideal-int pkg syscall (netbsd-amd64), const TIOCM_CD ideal-int pkg syscall (netbsd-amd64), const TIOCM_CTS ideal-int pkg syscall (netbsd-amd64), const TIOCM_DSR ideal-int pkg syscall (netbsd-amd64), const TIOCM_DTR ideal-int pkg syscall (netbsd-amd64), const TIOCM_LE ideal-int pkg syscall (netbsd-amd64), const TIOCM_RI ideal-int pkg syscall (netbsd-amd64), const TIOCM_RNG ideal-int pkg syscall (netbsd-amd64), const TIOCM_RTS ideal-int pkg syscall (netbsd-amd64), const TIOCM_SR ideal-int pkg syscall (netbsd-amd64), const TIOCM_ST ideal-int pkg syscall (netbsd-amd64), const TIOCNOTTY ideal-int pkg syscall (netbsd-amd64), const TIOCNXCL ideal-int pkg syscall (netbsd-amd64), const TIOCOUTQ ideal-int pkg syscall (netbsd-amd64), const TIOCPKT ideal-int pkg syscall (netbsd-amd64), const TIOCPKT_DATA ideal-int pkg syscall (netbsd-amd64), const TIOCPKT_DOSTOP ideal-int pkg syscall (netbsd-amd64), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (netbsd-amd64), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (netbsd-amd64), const TIOCPKT_IOCTL ideal-int pkg syscall (netbsd-amd64), const TIOCPKT_NOSTOP ideal-int pkg syscall (netbsd-amd64), const TIOCPKT_START ideal-int pkg syscall (netbsd-amd64), const TIOCPKT_STOP ideal-int pkg syscall (netbsd-amd64), const TIOCPTMGET ideal-int pkg syscall (netbsd-amd64), const TIOCPTSNAME ideal-int pkg syscall (netbsd-amd64), const TIOCRCVFRAME ideal-int pkg syscall (netbsd-amd64), const TIOCREMOTE ideal-int pkg syscall (netbsd-amd64), const TIOCSBRK ideal-int pkg syscall (netbsd-amd64), const TIOCSCTTY ideal-int pkg syscall (netbsd-amd64), const TIOCSDTR ideal-int pkg syscall (netbsd-amd64), const TIOCSETA ideal-int pkg syscall (netbsd-amd64), const TIOCSETAF ideal-int pkg syscall (netbsd-amd64), const TIOCSETAW ideal-int pkg syscall (netbsd-amd64), const TIOCSETD ideal-int pkg syscall (netbsd-amd64), const TIOCSFLAGS ideal-int pkg syscall (netbsd-amd64), const TIOCSIG ideal-int pkg syscall (netbsd-amd64), const TIOCSLINED ideal-int pkg syscall (netbsd-amd64), const TIOCSPGRP ideal-int pkg syscall (netbsd-amd64), const TIOCSQSIZE ideal-int pkg syscall (netbsd-amd64), const TIOCSSIZE ideal-int pkg syscall (netbsd-amd64), const TIOCSTART ideal-int pkg syscall (netbsd-amd64), const TIOCSTAT ideal-int pkg syscall (netbsd-amd64), const TIOCSTI ideal-int pkg syscall (netbsd-amd64), const TIOCSTOP ideal-int pkg syscall (netbsd-amd64), const TIOCSWINSZ ideal-int pkg syscall (netbsd-amd64), const TIOCUCNTL ideal-int pkg syscall (netbsd-amd64), const TIOCXMTFRAME ideal-int pkg syscall (netbsd-amd64), const TOSTOP ideal-int pkg syscall (netbsd-amd64), const VDISCARD ideal-int pkg syscall (netbsd-amd64), const VDSUSP ideal-int pkg syscall (netbsd-amd64), const VEOF ideal-int pkg syscall (netbsd-amd64), const VEOL ideal-int pkg syscall (netbsd-amd64), const VEOL2 ideal-int pkg syscall (netbsd-amd64), const VERASE ideal-int pkg syscall (netbsd-amd64), const VINTR ideal-int pkg syscall (netbsd-amd64), const VKILL ideal-int pkg syscall (netbsd-amd64), const VLNEXT ideal-int pkg syscall (netbsd-amd64), const VMIN ideal-int pkg syscall (netbsd-amd64), const VQUIT ideal-int pkg syscall (netbsd-amd64), const VREPRINT ideal-int pkg syscall (netbsd-amd64), const VSTART ideal-int pkg syscall (netbsd-amd64), const VSTATUS ideal-int pkg syscall (netbsd-amd64), const VSTOP ideal-int pkg syscall (netbsd-amd64), const VSUSP ideal-int pkg syscall (netbsd-amd64), const VTIME ideal-int pkg syscall (netbsd-amd64), const VWERASE ideal-int pkg syscall (netbsd-amd64), const WALL ideal-int pkg syscall (netbsd-amd64), const WALLSIG ideal-int pkg syscall (netbsd-amd64), const WALTSIG ideal-int pkg syscall (netbsd-amd64), const WCLONE ideal-int pkg syscall (netbsd-amd64), const WCOREFLAG ideal-int pkg syscall (netbsd-amd64), const WNOHANG ideal-int pkg syscall (netbsd-amd64), const WNOWAIT ideal-int pkg syscall (netbsd-amd64), const WNOZOMBIE ideal-int pkg syscall (netbsd-amd64), const WOPTSCHECKED ideal-int pkg syscall (netbsd-amd64), const WSTOPPED ideal-int pkg syscall (netbsd-amd64), const WUNTRACED ideal-int pkg syscall (netbsd-amd64), func Accept(int) (int, Sockaddr, error) pkg syscall (netbsd-amd64), func Access(string, uint32) error pkg syscall (netbsd-amd64), func Adjtime(*Timeval, *Timeval) error pkg syscall (netbsd-amd64), func Bind(int, Sockaddr) error pkg syscall (netbsd-amd64), func BpfBuflen(int) (int, error) pkg syscall (netbsd-amd64), func BpfDatalink(int) (int, error) pkg syscall (netbsd-amd64), func BpfHeadercmpl(int) (int, error) pkg syscall (netbsd-amd64), func BpfInterface(int, string) (string, error) pkg syscall (netbsd-amd64), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (netbsd-amd64), func BpfStats(int) (*BpfStat, error) pkg syscall (netbsd-amd64), func BpfStmt(int, int) *BpfInsn pkg syscall (netbsd-amd64), func BpfTimeout(int) (*Timeval, error) pkg syscall (netbsd-amd64), func CheckBpfVersion(int) error pkg syscall (netbsd-amd64), func Chflags(string, int) error pkg syscall (netbsd-amd64), func Chroot(string) error pkg syscall (netbsd-amd64), func Close(int) error pkg syscall (netbsd-amd64), func CloseOnExec(int) pkg syscall (netbsd-amd64), func CmsgLen(int) int pkg syscall (netbsd-amd64), func CmsgSpace(int) int pkg syscall (netbsd-amd64), func Connect(int, Sockaddr) error pkg syscall (netbsd-amd64), func Dup(int) (int, error) pkg syscall (netbsd-amd64), func Dup2(int, int) error pkg syscall (netbsd-amd64), func Fchdir(int) error pkg syscall (netbsd-amd64), func Fchflags(int, int) error pkg syscall (netbsd-amd64), func Fchmod(int, uint32) error pkg syscall (netbsd-amd64), func Fchown(int, int, int) error pkg syscall (netbsd-amd64), func Flock(int, int) error pkg syscall (netbsd-amd64), func FlushBpf(int) error pkg syscall (netbsd-amd64), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (netbsd-amd64), func Fpathconf(int, int) (int, error) pkg syscall (netbsd-amd64), func Fstat(int, *Stat_t) error pkg syscall (netbsd-amd64), func Fsync(int) error pkg syscall (netbsd-amd64), func Ftruncate(int, int64) error pkg syscall (netbsd-amd64), func Futimes(int, []Timeval) error pkg syscall (netbsd-amd64), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (netbsd-amd64), func Getpeername(int) (Sockaddr, error) pkg syscall (netbsd-amd64), func Getpgid(int) (int, error) pkg syscall (netbsd-amd64), func Getpgrp() int pkg syscall (netbsd-amd64), func Getpriority(int, int) (int, error) pkg syscall (netbsd-amd64), func Getrlimit(int, *Rlimit) error pkg syscall (netbsd-amd64), func Getrusage(int, *Rusage) error pkg syscall (netbsd-amd64), func Getsid(int) (int, error) pkg syscall (netbsd-amd64), func Getsockname(int) (Sockaddr, error) pkg syscall (netbsd-amd64), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (netbsd-amd64), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (netbsd-amd64), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (netbsd-amd64), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (netbsd-amd64), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (netbsd-amd64), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (netbsd-amd64), func GetsockoptInt(int, int, int) (int, error) pkg syscall (netbsd-amd64), func Issetugid() bool pkg syscall (netbsd-amd64), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (netbsd-amd64), func Kill(int, Signal) error pkg syscall (netbsd-amd64), func Kqueue() (int, error) pkg syscall (netbsd-amd64), func Listen(int, int) error pkg syscall (netbsd-amd64), func Lstat(string, *Stat_t) error pkg syscall (netbsd-amd64), func Mkfifo(string, uint32) error pkg syscall (netbsd-amd64), func Mknod(string, uint32, int) error pkg syscall (netbsd-amd64), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (netbsd-amd64), func Munmap([]uint8) error pkg syscall (netbsd-amd64), func Nanosleep(*Timespec, *Timespec) error pkg syscall (netbsd-amd64), func Open(string, int, uint32) (int, error) pkg syscall (netbsd-amd64), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (netbsd-amd64), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (netbsd-amd64), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (netbsd-amd64), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (netbsd-amd64), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (netbsd-amd64), func Pathconf(string, int) (int, error) pkg syscall (netbsd-amd64), func Pipe([]int) error pkg syscall (netbsd-amd64), func Pread(int, []uint8, int64) (int, error) pkg syscall (netbsd-amd64), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (netbsd-amd64), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-amd64), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-amd64), func Read(int, []uint8) (int, error) pkg syscall (netbsd-amd64), func ReadDirent(int, []uint8) (int, error) pkg syscall (netbsd-amd64), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (netbsd-amd64), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (netbsd-amd64), func Revoke(string) error pkg syscall (netbsd-amd64), func RouteRIB(int, int) ([]uint8, error) pkg syscall (netbsd-amd64), func Seek(int, int64, int) (int64, error) pkg syscall (netbsd-amd64), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (netbsd-amd64), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (netbsd-amd64), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (netbsd-amd64), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (netbsd-amd64), func SetBpf(int, []BpfInsn) error pkg syscall (netbsd-amd64), func SetBpfBuflen(int, int) (int, error) pkg syscall (netbsd-amd64), func SetBpfDatalink(int, int) (int, error) pkg syscall (netbsd-amd64), func SetBpfHeadercmpl(int, int) error pkg syscall (netbsd-amd64), func SetBpfImmediate(int, int) error pkg syscall (netbsd-amd64), func SetBpfInterface(int, string) error pkg syscall (netbsd-amd64), func SetBpfPromisc(int, int) error pkg syscall (netbsd-amd64), func SetBpfTimeout(int, *Timeval) error pkg syscall (netbsd-amd64), func SetKevent(*Kevent_t, int, int, int) pkg syscall (netbsd-amd64), func SetNonblock(int, bool) error pkg syscall (netbsd-amd64), func Setegid(int) error pkg syscall (netbsd-amd64), func Seteuid(int) error pkg syscall (netbsd-amd64), func Setgid(int) error pkg syscall (netbsd-amd64), func Setgroups([]int) error pkg syscall (netbsd-amd64), func Setpgid(int, int) error pkg syscall (netbsd-amd64), func Setpriority(int, int, int) error pkg syscall (netbsd-amd64), func Setregid(int, int) error pkg syscall (netbsd-amd64), func Setreuid(int, int) error pkg syscall (netbsd-amd64), func Setrlimit(int, *Rlimit) error pkg syscall (netbsd-amd64), func Setsid() (int, error) pkg syscall (netbsd-amd64), func SetsockoptByte(int, int, int, uint8) error pkg syscall (netbsd-amd64), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (netbsd-amd64), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (netbsd-amd64), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (netbsd-amd64), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (netbsd-amd64), func SetsockoptInt(int, int, int, int) error pkg syscall (netbsd-amd64), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (netbsd-amd64), func SetsockoptString(int, int, int, string) error pkg syscall (netbsd-amd64), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (netbsd-amd64), func Settimeofday(*Timeval) error pkg syscall (netbsd-amd64), func Setuid(int) error pkg syscall (netbsd-amd64), func Shutdown(int, int) error pkg syscall (netbsd-amd64), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (netbsd-amd64), func Socket(int, int, int) (int, error) pkg syscall (netbsd-amd64), func Socketpair(int, int, int) ([2]int, error) pkg syscall (netbsd-amd64), func Stat(string, *Stat_t) error pkg syscall (netbsd-amd64), func StringSlicePtr([]string) []*uint8 pkg syscall (netbsd-amd64), func Sync() error pkg syscall (netbsd-amd64), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-amd64), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-amd64), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-amd64), func Sysctl(string) (string, error) pkg syscall (netbsd-amd64), func SysctlUint32(string) (uint32, error) pkg syscall (netbsd-amd64), func TimevalToNsec(Timeval) int64 pkg syscall (netbsd-amd64), func Truncate(string, int64) error pkg syscall (netbsd-amd64), func Umask(int) int pkg syscall (netbsd-amd64), func UnixRights(...int) []uint8 pkg syscall (netbsd-amd64), func Unmount(string, int) error pkg syscall (netbsd-amd64), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (netbsd-amd64), func Write(int, []uint8) (int, error) pkg syscall (netbsd-amd64), method (*Cmsghdr) SetLen(int) pkg syscall (netbsd-amd64), method (*Iovec) SetLen(int) pkg syscall (netbsd-amd64), method (*Msghdr) SetControllen(int) pkg syscall (netbsd-amd64), type BpfHdr struct pkg syscall (netbsd-amd64), type BpfHdr struct, Caplen uint32 pkg syscall (netbsd-amd64), type BpfHdr struct, Datalen uint32 pkg syscall (netbsd-amd64), type BpfHdr struct, Hdrlen uint16 pkg syscall (netbsd-amd64), type BpfHdr struct, Pad_cgo_0 [6]uint8 pkg syscall (netbsd-amd64), type BpfHdr struct, Tstamp BpfTimeval pkg syscall (netbsd-amd64), type BpfInsn struct pkg syscall (netbsd-amd64), type BpfInsn struct, Code uint16 pkg syscall (netbsd-amd64), type BpfInsn struct, Jf uint8 pkg syscall (netbsd-amd64), type BpfInsn struct, Jt uint8 pkg syscall (netbsd-amd64), type BpfInsn struct, K uint32 pkg syscall (netbsd-amd64), type BpfProgram struct pkg syscall (netbsd-amd64), type BpfProgram struct, Insns *BpfInsn pkg syscall (netbsd-amd64), type BpfProgram struct, Len uint32 pkg syscall (netbsd-amd64), type BpfProgram struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-amd64), type BpfStat struct pkg syscall (netbsd-amd64), type BpfStat struct, Capt uint64 pkg syscall (netbsd-amd64), type BpfStat struct, Drop uint64 pkg syscall (netbsd-amd64), type BpfStat struct, Padding [13]uint64 pkg syscall (netbsd-amd64), type BpfStat struct, Recv uint64 pkg syscall (netbsd-amd64), type BpfTimeval struct pkg syscall (netbsd-amd64), type BpfTimeval struct, Sec int64 pkg syscall (netbsd-amd64), type BpfTimeval struct, Usec int64 pkg syscall (netbsd-amd64), type BpfVersion struct pkg syscall (netbsd-amd64), type BpfVersion struct, Major uint16 pkg syscall (netbsd-amd64), type BpfVersion struct, Minor uint16 pkg syscall (netbsd-amd64), type Cmsghdr struct pkg syscall (netbsd-amd64), type Cmsghdr struct, Len uint32 pkg syscall (netbsd-amd64), type Cmsghdr struct, Level int32 pkg syscall (netbsd-amd64), type Cmsghdr struct, Type int32 pkg syscall (netbsd-amd64), type Credential struct pkg syscall (netbsd-amd64), type Credential struct, Gid uint32 pkg syscall (netbsd-amd64), type Credential struct, Groups []uint32 pkg syscall (netbsd-amd64), type Credential struct, Uid uint32 pkg syscall (netbsd-amd64), type Dirent struct pkg syscall (netbsd-amd64), type Dirent struct, Fileno uint64 pkg syscall (netbsd-amd64), type Dirent struct, Name [512]int8 pkg syscall (netbsd-amd64), type Dirent struct, Namlen uint16 pkg syscall (netbsd-amd64), type Dirent struct, Pad_cgo_0 [3]uint8 pkg syscall (netbsd-amd64), type Dirent struct, Reclen uint16 pkg syscall (netbsd-amd64), type Dirent struct, Type uint8 pkg syscall (netbsd-amd64), type FdSet struct pkg syscall (netbsd-amd64), type FdSet struct, Bits [8]uint32 pkg syscall (netbsd-amd64), type Flock_t struct pkg syscall (netbsd-amd64), type Flock_t struct, Len int64 pkg syscall (netbsd-amd64), type Flock_t struct, Pid int32 pkg syscall (netbsd-amd64), type Flock_t struct, Start int64 pkg syscall (netbsd-amd64), type Flock_t struct, Type int16 pkg syscall (netbsd-amd64), type Flock_t struct, Whence int16 pkg syscall (netbsd-amd64), type Fsid struct pkg syscall (netbsd-amd64), type Fsid struct, X__fsid_val [2]int32 pkg syscall (netbsd-amd64), type ICMPv6Filter struct pkg syscall (netbsd-amd64), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (netbsd-amd64), type IPv6MTUInfo struct pkg syscall (netbsd-amd64), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (netbsd-amd64), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (netbsd-amd64), type IfAnnounceMsghdr struct pkg syscall (netbsd-amd64), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (netbsd-amd64), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (netbsd-amd64), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (netbsd-amd64), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (netbsd-amd64), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (netbsd-amd64), type IfAnnounceMsghdr struct, What uint16 pkg syscall (netbsd-amd64), type IfData struct pkg syscall (netbsd-amd64), type IfData struct, Addrlen uint8 pkg syscall (netbsd-amd64), type IfData struct, Baudrate uint64 pkg syscall (netbsd-amd64), type IfData struct, Collisions uint64 pkg syscall (netbsd-amd64), type IfData struct, Hdrlen uint8 pkg syscall (netbsd-amd64), type IfData struct, Ibytes uint64 pkg syscall (netbsd-amd64), type IfData struct, Ierrors uint64 pkg syscall (netbsd-amd64), type IfData struct, Imcasts uint64 pkg syscall (netbsd-amd64), type IfData struct, Ipackets uint64 pkg syscall (netbsd-amd64), type IfData struct, Iqdrops uint64 pkg syscall (netbsd-amd64), type IfData struct, Lastchange Timespec pkg syscall (netbsd-amd64), type IfData struct, Link_state int32 pkg syscall (netbsd-amd64), type IfData struct, Metric uint64 pkg syscall (netbsd-amd64), type IfData struct, Mtu uint64 pkg syscall (netbsd-amd64), type IfData struct, Noproto uint64 pkg syscall (netbsd-amd64), type IfData struct, Obytes uint64 pkg syscall (netbsd-amd64), type IfData struct, Oerrors uint64 pkg syscall (netbsd-amd64), type IfData struct, Omcasts uint64 pkg syscall (netbsd-amd64), type IfData struct, Opackets uint64 pkg syscall (netbsd-amd64), type IfData struct, Pad_cgo_0 [1]uint8 pkg syscall (netbsd-amd64), type IfData struct, Type uint8 pkg syscall (netbsd-amd64), type IfMsghdr struct pkg syscall (netbsd-amd64), type IfMsghdr struct, Addrs int32 pkg syscall (netbsd-amd64), type IfMsghdr struct, Data IfData pkg syscall (netbsd-amd64), type IfMsghdr struct, Flags int32 pkg syscall (netbsd-amd64), type IfMsghdr struct, Index uint16 pkg syscall (netbsd-amd64), type IfMsghdr struct, Msglen uint16 pkg syscall (netbsd-amd64), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-amd64), type IfMsghdr struct, Type uint8 pkg syscall (netbsd-amd64), type IfMsghdr struct, Version uint8 pkg syscall (netbsd-amd64), type IfaMsghdr struct pkg syscall (netbsd-amd64), type IfaMsghdr struct, Addrs int32 pkg syscall (netbsd-amd64), type IfaMsghdr struct, Flags int32 pkg syscall (netbsd-amd64), type IfaMsghdr struct, Index uint16 pkg syscall (netbsd-amd64), type IfaMsghdr struct, Metric int32 pkg syscall (netbsd-amd64), type IfaMsghdr struct, Msglen uint16 pkg syscall (netbsd-amd64), type IfaMsghdr struct, Pad_cgo_0 [6]uint8 pkg syscall (netbsd-amd64), type IfaMsghdr struct, Type uint8 pkg syscall (netbsd-amd64), type IfaMsghdr struct, Version uint8 pkg syscall (netbsd-amd64), type Inet6Pktinfo struct pkg syscall (netbsd-amd64), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (netbsd-amd64), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (netbsd-amd64), type InterfaceAddrMessage struct pkg syscall (netbsd-amd64), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (netbsd-amd64), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (netbsd-amd64), type InterfaceAnnounceMessage struct pkg syscall (netbsd-amd64), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (netbsd-amd64), type InterfaceMessage struct pkg syscall (netbsd-amd64), type InterfaceMessage struct, Data []uint8 pkg syscall (netbsd-amd64), type InterfaceMessage struct, Header IfMsghdr pkg syscall (netbsd-amd64), type Iovec struct pkg syscall (netbsd-amd64), type Iovec struct, Base *uint8 pkg syscall (netbsd-amd64), type Iovec struct, Len uint64 pkg syscall (netbsd-amd64), type Kevent_t struct pkg syscall (netbsd-amd64), type Kevent_t struct, Data int64 pkg syscall (netbsd-amd64), type Kevent_t struct, Fflags uint32 pkg syscall (netbsd-amd64), type Kevent_t struct, Filter uint32 pkg syscall (netbsd-amd64), type Kevent_t struct, Flags uint32 pkg syscall (netbsd-amd64), type Kevent_t struct, Ident uint64 pkg syscall (netbsd-amd64), type Kevent_t struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-amd64), type Kevent_t struct, Udata int64 pkg syscall (netbsd-amd64), type Mclpool [0]uint8 pkg syscall (netbsd-amd64), type Msghdr struct pkg syscall (netbsd-amd64), type Msghdr struct, Control *uint8 pkg syscall (netbsd-amd64), type Msghdr struct, Controllen uint32 pkg syscall (netbsd-amd64), type Msghdr struct, Flags int32 pkg syscall (netbsd-amd64), type Msghdr struct, Iov *Iovec pkg syscall (netbsd-amd64), type Msghdr struct, Iovlen int32 pkg syscall (netbsd-amd64), type Msghdr struct, Name *uint8 pkg syscall (netbsd-amd64), type Msghdr struct, Namelen uint32 pkg syscall (netbsd-amd64), type Msghdr struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-amd64), type Msghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-amd64), type RawSockaddr struct, Data [14]int8 pkg syscall (netbsd-amd64), type RawSockaddr struct, Family uint8 pkg syscall (netbsd-amd64), type RawSockaddr struct, Len uint8 pkg syscall (netbsd-amd64), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (netbsd-amd64), type RawSockaddrDatalink struct pkg syscall (netbsd-amd64), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (netbsd-amd64), type RawSockaddrDatalink struct, Data [12]int8 pkg syscall (netbsd-amd64), type RawSockaddrDatalink struct, Family uint8 pkg syscall (netbsd-amd64), type RawSockaddrDatalink struct, Index uint16 pkg syscall (netbsd-amd64), type RawSockaddrDatalink struct, Len uint8 pkg syscall (netbsd-amd64), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (netbsd-amd64), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (netbsd-amd64), type RawSockaddrDatalink struct, Type uint8 pkg syscall (netbsd-amd64), type RawSockaddrInet4 struct, Family uint8 pkg syscall (netbsd-amd64), type RawSockaddrInet4 struct, Len uint8 pkg syscall (netbsd-amd64), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (netbsd-amd64), type RawSockaddrInet6 struct, Family uint8 pkg syscall (netbsd-amd64), type RawSockaddrInet6 struct, Len uint8 pkg syscall (netbsd-amd64), type RawSockaddrUnix struct pkg syscall (netbsd-amd64), type RawSockaddrUnix struct, Family uint8 pkg syscall (netbsd-amd64), type RawSockaddrUnix struct, Len uint8 pkg syscall (netbsd-amd64), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (netbsd-amd64), type Rlimit struct pkg syscall (netbsd-amd64), type Rlimit struct, Cur uint64 pkg syscall (netbsd-amd64), type Rlimit struct, Max uint64 pkg syscall (netbsd-amd64), type RouteMessage struct pkg syscall (netbsd-amd64), type RouteMessage struct, Data []uint8 pkg syscall (netbsd-amd64), type RouteMessage struct, Header RtMsghdr pkg syscall (netbsd-amd64), type RoutingMessage interface, unexported methods pkg syscall (netbsd-amd64), type RtMetrics struct pkg syscall (netbsd-amd64), type RtMetrics struct, Expire int64 pkg syscall (netbsd-amd64), type RtMetrics struct, Hopcount uint64 pkg syscall (netbsd-amd64), type RtMetrics struct, Locks uint64 pkg syscall (netbsd-amd64), type RtMetrics struct, Mtu uint64 pkg syscall (netbsd-amd64), type RtMetrics struct, Pksent int64 pkg syscall (netbsd-amd64), type RtMetrics struct, Recvpipe uint64 pkg syscall (netbsd-amd64), type RtMetrics struct, Rtt uint64 pkg syscall (netbsd-amd64), type RtMetrics struct, Rttvar uint64 pkg syscall (netbsd-amd64), type RtMetrics struct, Sendpipe uint64 pkg syscall (netbsd-amd64), type RtMetrics struct, Ssthresh uint64 pkg syscall (netbsd-amd64), type RtMsghdr struct pkg syscall (netbsd-amd64), type RtMsghdr struct, Addrs int32 pkg syscall (netbsd-amd64), type RtMsghdr struct, Errno int32 pkg syscall (netbsd-amd64), type RtMsghdr struct, Flags int32 pkg syscall (netbsd-amd64), type RtMsghdr struct, Index uint16 pkg syscall (netbsd-amd64), type RtMsghdr struct, Inits int32 pkg syscall (netbsd-amd64), type RtMsghdr struct, Msglen uint16 pkg syscall (netbsd-amd64), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-amd64), type RtMsghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-amd64), type RtMsghdr struct, Pid int32 pkg syscall (netbsd-amd64), type RtMsghdr struct, Rmx RtMetrics pkg syscall (netbsd-amd64), type RtMsghdr struct, Seq int32 pkg syscall (netbsd-amd64), type RtMsghdr struct, Type uint8 pkg syscall (netbsd-amd64), type RtMsghdr struct, Use int32 pkg syscall (netbsd-amd64), type RtMsghdr struct, Version uint8 pkg syscall (netbsd-amd64), type Rusage struct, Idrss int64 pkg syscall (netbsd-amd64), type Rusage struct, Inblock int64 pkg syscall (netbsd-amd64), type Rusage struct, Isrss int64 pkg syscall (netbsd-amd64), type Rusage struct, Ixrss int64 pkg syscall (netbsd-amd64), type Rusage struct, Majflt int64 pkg syscall (netbsd-amd64), type Rusage struct, Maxrss int64 pkg syscall (netbsd-amd64), type Rusage struct, Minflt int64 pkg syscall (netbsd-amd64), type Rusage struct, Msgrcv int64 pkg syscall (netbsd-amd64), type Rusage struct, Msgsnd int64 pkg syscall (netbsd-amd64), type Rusage struct, Nivcsw int64 pkg syscall (netbsd-amd64), type Rusage struct, Nsignals int64 pkg syscall (netbsd-amd64), type Rusage struct, Nswap int64 pkg syscall (netbsd-amd64), type Rusage struct, Nvcsw int64 pkg syscall (netbsd-amd64), type Rusage struct, Oublock int64 pkg syscall (netbsd-amd64), type Rusage struct, Stime Timeval pkg syscall (netbsd-amd64), type Rusage struct, Utime Timeval pkg syscall (netbsd-amd64), type SockaddrDatalink struct pkg syscall (netbsd-amd64), type SockaddrDatalink struct, Alen uint8 pkg syscall (netbsd-amd64), type SockaddrDatalink struct, Data [12]int8 pkg syscall (netbsd-amd64), type SockaddrDatalink struct, Family uint8 pkg syscall (netbsd-amd64), type SockaddrDatalink struct, Index uint16 pkg syscall (netbsd-amd64), type SockaddrDatalink struct, Len uint8 pkg syscall (netbsd-amd64), type SockaddrDatalink struct, Nlen uint8 pkg syscall (netbsd-amd64), type SockaddrDatalink struct, Slen uint8 pkg syscall (netbsd-amd64), type SockaddrDatalink struct, Type uint8 pkg syscall (netbsd-amd64), type SocketControlMessage struct pkg syscall (netbsd-amd64), type SocketControlMessage struct, Data []uint8 pkg syscall (netbsd-amd64), type SocketControlMessage struct, Header Cmsghdr pkg syscall (netbsd-amd64), type Stat_t struct pkg syscall (netbsd-amd64), type Stat_t struct, Atimespec Timespec pkg syscall (netbsd-amd64), type Stat_t struct, Birthtimespec Timespec pkg syscall (netbsd-amd64), type Stat_t struct, Blksize uint32 pkg syscall (netbsd-amd64), type Stat_t struct, Blocks int64 pkg syscall (netbsd-amd64), type Stat_t struct, Ctimespec Timespec pkg syscall (netbsd-amd64), type Stat_t struct, Dev uint64 pkg syscall (netbsd-amd64), type Stat_t struct, Flags uint32 pkg syscall (netbsd-amd64), type Stat_t struct, Gen uint32 pkg syscall (netbsd-amd64), type Stat_t struct, Gid uint32 pkg syscall (netbsd-amd64), type Stat_t struct, Ino uint64 pkg syscall (netbsd-amd64), type Stat_t struct, Mode uint32 pkg syscall (netbsd-amd64), type Stat_t struct, Mtimespec Timespec pkg syscall (netbsd-amd64), type Stat_t struct, Nlink uint32 pkg syscall (netbsd-amd64), type Stat_t struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-amd64), type Stat_t struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-amd64), type Stat_t struct, Pad_cgo_2 [4]uint8 pkg syscall (netbsd-amd64), type Stat_t struct, Rdev uint64 pkg syscall (netbsd-amd64), type Stat_t struct, Size int64 pkg syscall (netbsd-amd64), type Stat_t struct, Spare [2]uint32 pkg syscall (netbsd-amd64), type Stat_t struct, Uid uint32 pkg syscall (netbsd-amd64), type Statfs_t [0]uint8 pkg syscall (netbsd-amd64), type SysProcAttr struct, Chroot string pkg syscall (netbsd-amd64), type SysProcAttr struct, Credential *Credential pkg syscall (netbsd-amd64), type SysProcAttr struct, Noctty bool pkg syscall (netbsd-amd64), type SysProcAttr struct, Ptrace bool pkg syscall (netbsd-amd64), type SysProcAttr struct, Setctty bool pkg syscall (netbsd-amd64), type SysProcAttr struct, Setpgid bool pkg syscall (netbsd-amd64), type SysProcAttr struct, Setsid bool pkg syscall (netbsd-amd64), type Sysctlnode struct pkg syscall (netbsd-amd64), type Sysctlnode struct, Flags uint32 pkg syscall (netbsd-amd64), type Sysctlnode struct, Name [32]int8 pkg syscall (netbsd-amd64), type Sysctlnode struct, Num int32 pkg syscall (netbsd-amd64), type Sysctlnode struct, Un [16]uint8 pkg syscall (netbsd-amd64), type Sysctlnode struct, Ver uint32 pkg syscall (netbsd-amd64), type Sysctlnode struct, X__rsvd uint32 pkg syscall (netbsd-amd64), type Sysctlnode struct, X_sysctl_desc [8]uint8 pkg syscall (netbsd-amd64), type Sysctlnode struct, X_sysctl_func [8]uint8 pkg syscall (netbsd-amd64), type Sysctlnode struct, X_sysctl_parent [8]uint8 pkg syscall (netbsd-amd64), type Sysctlnode struct, X_sysctl_size [8]uint8 pkg syscall (netbsd-amd64), type Timespec struct, Nsec int64 pkg syscall (netbsd-amd64), type Timespec struct, Sec int64 pkg syscall (netbsd-amd64), type Timeval struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-amd64), type Timeval struct, Sec int64 pkg syscall (netbsd-amd64), type Timeval struct, Usec int32 pkg syscall (netbsd-amd64), type WaitStatus uint32 pkg syscall (netbsd-amd64), var Stderr int pkg syscall (netbsd-amd64), var Stdin int pkg syscall (netbsd-amd64), var Stdout int pkg syscall (netbsd-amd64-cgo), const AF_APPLETALK ideal-int pkg syscall (netbsd-amd64-cgo), const AF_ARP ideal-int pkg syscall (netbsd-amd64-cgo), const AF_BLUETOOTH ideal-int pkg syscall (netbsd-amd64-cgo), const AF_CCITT ideal-int pkg syscall (netbsd-amd64-cgo), const AF_CHAOS ideal-int pkg syscall (netbsd-amd64-cgo), const AF_CNT ideal-int pkg syscall (netbsd-amd64-cgo), const AF_COIP ideal-int pkg syscall (netbsd-amd64-cgo), const AF_DATAKIT ideal-int pkg syscall (netbsd-amd64-cgo), const AF_DECnet ideal-int pkg syscall (netbsd-amd64-cgo), const AF_DLI ideal-int pkg syscall (netbsd-amd64-cgo), const AF_E164 ideal-int pkg syscall (netbsd-amd64-cgo), const AF_ECMA ideal-int pkg syscall (netbsd-amd64-cgo), const AF_HYLINK ideal-int pkg syscall (netbsd-amd64-cgo), const AF_IEEE80211 ideal-int pkg syscall (netbsd-amd64-cgo), const AF_IMPLINK ideal-int pkg syscall (netbsd-amd64-cgo), const AF_IPX ideal-int pkg syscall (netbsd-amd64-cgo), const AF_ISDN ideal-int pkg syscall (netbsd-amd64-cgo), const AF_ISO ideal-int pkg syscall (netbsd-amd64-cgo), const AF_LAT ideal-int pkg syscall (netbsd-amd64-cgo), const AF_LINK ideal-int pkg syscall (netbsd-amd64-cgo), const AF_LOCAL ideal-int pkg syscall (netbsd-amd64-cgo), const AF_MAX ideal-int pkg syscall (netbsd-amd64-cgo), const AF_MPLS ideal-int pkg syscall (netbsd-amd64-cgo), const AF_NATM ideal-int pkg syscall (netbsd-amd64-cgo), const AF_NS ideal-int pkg syscall (netbsd-amd64-cgo), const AF_OROUTE ideal-int pkg syscall (netbsd-amd64-cgo), const AF_OSI ideal-int pkg syscall (netbsd-amd64-cgo), const AF_PUP ideal-int pkg syscall (netbsd-amd64-cgo), const AF_ROUTE ideal-int pkg syscall (netbsd-amd64-cgo), const AF_SNA ideal-int pkg syscall (netbsd-amd64-cgo), const ARPHRD_ARCNET ideal-int pkg syscall (netbsd-amd64-cgo), const ARPHRD_ETHER ideal-int pkg syscall (netbsd-amd64-cgo), const ARPHRD_FRELAY ideal-int pkg syscall (netbsd-amd64-cgo), const ARPHRD_IEEE1394 ideal-int pkg syscall (netbsd-amd64-cgo), const ARPHRD_IEEE802 ideal-int pkg syscall (netbsd-amd64-cgo), const ARPHRD_STRIP ideal-int pkg syscall (netbsd-amd64-cgo), const B0 ideal-int pkg syscall (netbsd-amd64-cgo), const B110 ideal-int pkg syscall (netbsd-amd64-cgo), const B115200 ideal-int pkg syscall (netbsd-amd64-cgo), const B1200 ideal-int pkg syscall (netbsd-amd64-cgo), const B134 ideal-int pkg syscall (netbsd-amd64-cgo), const B14400 ideal-int pkg syscall (netbsd-amd64-cgo), const B150 ideal-int pkg syscall (netbsd-amd64-cgo), const B1800 ideal-int pkg syscall (netbsd-amd64-cgo), const B19200 ideal-int pkg syscall (netbsd-amd64-cgo), const B200 ideal-int pkg syscall (netbsd-amd64-cgo), const B230400 ideal-int pkg syscall (netbsd-amd64-cgo), const B2400 ideal-int pkg syscall (netbsd-amd64-cgo), const B28800 ideal-int pkg syscall (netbsd-amd64-cgo), const B300 ideal-int pkg syscall (netbsd-amd64-cgo), const B38400 ideal-int pkg syscall (netbsd-amd64-cgo), const B460800 ideal-int pkg syscall (netbsd-amd64-cgo), const B4800 ideal-int pkg syscall (netbsd-amd64-cgo), const B50 ideal-int pkg syscall (netbsd-amd64-cgo), const B57600 ideal-int pkg syscall (netbsd-amd64-cgo), const B600 ideal-int pkg syscall (netbsd-amd64-cgo), const B7200 ideal-int pkg syscall (netbsd-amd64-cgo), const B75 ideal-int pkg syscall (netbsd-amd64-cgo), const B76800 ideal-int pkg syscall (netbsd-amd64-cgo), const B921600 ideal-int pkg syscall (netbsd-amd64-cgo), const B9600 ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCFEEDBACK ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCFLUSH ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCGBLEN ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCGDLT ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCGDLTLIST ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCGETIF ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCGFEEDBACK ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCGHDRCMPLT ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCGRTIMEOUT ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCGSEESENT ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCGSTATS ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCGSTATSOLD ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCIMMEDIATE ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCPROMISC ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCSBLEN ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCSDLT ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCSETF ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCSETIF ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCSFEEDBACK ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCSHDRCMPLT ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCSRTIMEOUT ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCSSEESENT ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCSTCPF ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCSUDPF ideal-int pkg syscall (netbsd-amd64-cgo), const BIOCVERSION ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_A ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_ABS ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_ADD ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_ALIGNMENT ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_ALIGNMENT32 ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_ALU ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_AND ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_B ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_DFLTBUFSIZE ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_DIV ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_H ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_IMM ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_IND ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_JA ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_JEQ ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_JGE ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_JGT ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_JMP ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_JSET ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_K ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_LD ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_LDX ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_LEN ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_LSH ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_MAJOR_VERSION ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_MAXBUFSIZE ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_MAXINSNS ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_MEM ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_MEMWORDS ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_MINBUFSIZE ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_MINOR_VERSION ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_MISC ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_MSH ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_MUL ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_NEG ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_OR ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_RELEASE ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_RET ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_RSH ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_ST ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_STX ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_SUB ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_TAX ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_TXA ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_W ideal-int pkg syscall (netbsd-amd64-cgo), const BPF_X ideal-int pkg syscall (netbsd-amd64-cgo), const BRKINT ideal-int pkg syscall (netbsd-amd64-cgo), const CFLUSH ideal-int pkg syscall (netbsd-amd64-cgo), const CLOCAL ideal-int pkg syscall (netbsd-amd64-cgo), const CREAD ideal-int pkg syscall (netbsd-amd64-cgo), const CS5 ideal-int pkg syscall (netbsd-amd64-cgo), const CS6 ideal-int pkg syscall (netbsd-amd64-cgo), const CS7 ideal-int pkg syscall (netbsd-amd64-cgo), const CS8 ideal-int pkg syscall (netbsd-amd64-cgo), const CSIZE ideal-int pkg syscall (netbsd-amd64-cgo), const CSTART ideal-int pkg syscall (netbsd-amd64-cgo), const CSTATUS ideal-int pkg syscall (netbsd-amd64-cgo), const CSTOP ideal-int pkg syscall (netbsd-amd64-cgo), const CSTOPB ideal-int pkg syscall (netbsd-amd64-cgo), const CSUSP ideal-int pkg syscall (netbsd-amd64-cgo), const CTL_MAXNAME ideal-int pkg syscall (netbsd-amd64-cgo), const CTL_NET ideal-int pkg syscall (netbsd-amd64-cgo), const CTL_QUERY ideal-int pkg syscall (netbsd-amd64-cgo), const DIOCBSFLUSH ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_A429 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_A653_ICM ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_AIRONET_HEADER ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_AOS ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_ARCNET ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_ARCNET_LINUX ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_ATM_CLIP ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_ATM_RFC1483 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_AURORA ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_AX25 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_AX25_KISS ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_BACNET_MS_TP ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_BLUETOOTH_HCI_H4 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_CAN20B ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_CAN_SOCKETCAN ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_CHAOS ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_CISCO_IOS ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_C_HDLC ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_C_HDLC_WITH_DIR ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_DECT ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_DOCSIS ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_ECONET ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_EN10MB ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_EN3MB ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_ENC ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_ERF ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_ERF_ETH ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_ERF_POS ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_FC_2 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_FDDI ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_FLEXRAY ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_FRELAY ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_FRELAY_WITH_DIR ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_GCOM_SERIAL ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_GCOM_T1E1 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_GPF_F ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_GPF_T ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_GPRS_LLC ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_GSMTAP_ABIS ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_GSMTAP_UM ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_HDLC ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_HHDLC ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_HIPPI ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IBM_SN ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IBM_SP ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_11 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_15_4 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_15_4_LINUX ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_15_4_NONASK_PHY ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_16_MAC_CPS ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IPMB ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IPMB_LINUX ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IPNET ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IPV4 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IPV6 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_IP_OVER_FC ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_ATM1 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_ATM2 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_CHDLC ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_ES ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_ETHER ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_FRELAY ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_GGSN ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_ISM ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_MFR ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_MLFR ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_MLPPP ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_MONITOR ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_PIC_PEER ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_PPP ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_PPPOE ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_PPPOE_ATM ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_SERVICES ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_ST ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_JUNIPER_VP ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_LAPB_WITH_DIR ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_LAPD ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_LIN ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_LINUX_EVDEV ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_LINUX_IRDA ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_LINUX_LAPD ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_LINUX_SLL ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_LOOP ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_LTALK ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_MFR ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_MOST ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_MPLS ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_MTP2 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_MTP2_WITH_PHDR ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_MTP3 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_NULL ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_PCI_EXP ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_PFLOG ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_PFSYNC ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_PPI ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_PPP ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_PPP_BSDOS ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_PPP_ETHER ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_PPP_PPPD ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_PPP_SERIAL ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_PPP_WITH_DIR ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_PRISM_HEADER ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_PRONET ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_RAIF1 ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_RAW ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_RAWAF_MASK ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_RIO ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_SCCP ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_SITA ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_SLIP ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_SLIP_BSDOS ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_SUNATM ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_SYMANTEC_FIREWALL ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_TZSP ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_USB ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_USB_LINUX ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_USB_LINUX_MMAPPED ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_WIHART ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_X2E_SERIAL ideal-int pkg syscall (netbsd-amd64-cgo), const DLT_X2E_XORAYA ideal-int pkg syscall (netbsd-amd64-cgo), const DT_BLK ideal-int pkg syscall (netbsd-amd64-cgo), const DT_CHR ideal-int pkg syscall (netbsd-amd64-cgo), const DT_DIR ideal-int pkg syscall (netbsd-amd64-cgo), const DT_FIFO ideal-int pkg syscall (netbsd-amd64-cgo), const DT_LNK ideal-int pkg syscall (netbsd-amd64-cgo), const DT_REG ideal-int pkg syscall (netbsd-amd64-cgo), const DT_SOCK ideal-int pkg syscall (netbsd-amd64-cgo), const DT_UNKNOWN ideal-int pkg syscall (netbsd-amd64-cgo), const DT_WHT ideal-int pkg syscall (netbsd-amd64-cgo), const EAUTH Errno pkg syscall (netbsd-amd64-cgo), const EBADMSG Errno pkg syscall (netbsd-amd64-cgo), const EBADRPC Errno pkg syscall (netbsd-amd64-cgo), const ECHO ideal-int pkg syscall (netbsd-amd64-cgo), const ECHOCTL ideal-int pkg syscall (netbsd-amd64-cgo), const ECHOE ideal-int pkg syscall (netbsd-amd64-cgo), const ECHOK ideal-int pkg syscall (netbsd-amd64-cgo), const ECHOKE ideal-int pkg syscall (netbsd-amd64-cgo), const ECHONL ideal-int pkg syscall (netbsd-amd64-cgo), const ECHOPRT ideal-int pkg syscall (netbsd-amd64-cgo), const EFTYPE Errno pkg syscall (netbsd-amd64-cgo), const ELAST Errno pkg syscall (netbsd-amd64-cgo), const EMULTIHOP Errno pkg syscall (netbsd-amd64-cgo), const EMUL_LINUX ideal-int pkg syscall (netbsd-amd64-cgo), const EMUL_LINUX32 ideal-int pkg syscall (netbsd-amd64-cgo), const EMUL_MAXID ideal-int pkg syscall (netbsd-amd64-cgo), const ENEEDAUTH Errno pkg syscall (netbsd-amd64-cgo), const ENOATTR Errno pkg syscall (netbsd-amd64-cgo), const ENODATA Errno pkg syscall (netbsd-amd64-cgo), const ENOLINK Errno pkg syscall (netbsd-amd64-cgo), const ENOSR Errno pkg syscall (netbsd-amd64-cgo), const ENOSTR Errno pkg syscall (netbsd-amd64-cgo), const EPROCLIM Errno pkg syscall (netbsd-amd64-cgo), const EPROCUNAVAIL Errno pkg syscall (netbsd-amd64-cgo), const EPROGMISMATCH Errno pkg syscall (netbsd-amd64-cgo), const EPROGUNAVAIL Errno pkg syscall (netbsd-amd64-cgo), const EPROTO Errno pkg syscall (netbsd-amd64-cgo), const ERPCMISMATCH Errno pkg syscall (netbsd-amd64-cgo), const ETHERCAP_JUMBO_MTU ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERCAP_VLAN_HWTAGGING ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERCAP_VLAN_MTU ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERMIN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERMTU ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERMTU_JUMBO ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_8023 ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_AARP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ACCTON ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_AEONIC ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ALPHA ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_AMBER ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_AMOEBA ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_APOLLO ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_APOLLODOMAIN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_APPLETALK ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_APPLITEK ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ARGONAUT ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ARP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_AT ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ATALK ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ATOMIC ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ATT ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ATTSTANFORD ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_AUTOPHON ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_AXIS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_BCLOOP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_BOFL ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_CABLETRON ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_CHAOS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_COMDESIGN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_COMPUGRAPHIC ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_COUNTERPOINT ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_CRONUS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_CRONUSVLN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DCA ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DDE ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DEBNI ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECAM ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECCUST ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECDIAG ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECDNS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECDTS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECEXPER ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECLAST ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECLTM ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECMUMPS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DECNETBIOS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DELTACON ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DIDDLE ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DLOG1 ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DLOG2 ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DOGFIGHT ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_DSMD ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ECMA ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ENCRYPT ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_ES ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_EXCELAN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_EXPERDATA ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_FLIP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_FLOWCONTROL ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_FRARP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_GENDYN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_HAYES ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_HIPPI_FP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_HITACHI ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_HP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IEEEPUP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IEEEPUPAT ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IMLBL ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IMLBLDIAG ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IPAS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IPV6 ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IPX ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_IPXNEW ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_KALPANA ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_LANBRIDGE ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_LANPROBE ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_LAT ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_LBACK ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_LITTLE ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_LOGICRAFT ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_LOOPBACK ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MATRA ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MAX ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MERIT ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MICP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MOPDL ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MOPRC ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MOTOROLA ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MPLS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MPLS_MCAST ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_MUMPS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPCC ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPCLAIM ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPCLREQ ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPCLRSP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPCREQ ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPCRSP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPDG ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPDGB ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPDLTE ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPRAR ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPRAS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPRST ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPSCD ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBPVCD ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NBS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NCD ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NESTAR ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NETBEUI ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NOVELL ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NSAT ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NSCOMPAT ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_NTRAILER ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_OS9 ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_OS9NET ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PACER ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PAE ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PCS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PLANNING ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PPP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PPPOE ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PPPOEDISC ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PRIMENTS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PUP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_PUPAT ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_RACAL ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_RATIONAL ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_RAWFR ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_RCL ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_RDP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_RETIX ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_REVARP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SCA ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SECTRA ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SECUREDATA ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SGITW ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SG_BOUNCE ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SG_DIAG ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SG_NETGAMES ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SG_RESV ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SIMNET ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SLOWPROTOCOLS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SNA ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SNMP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SONIX ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SPIDER ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_SPRITE ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_STP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TALARIS ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TALARISMC ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TCPCOMP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TCPSM ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TEC ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TIGAN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TRAIL ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TRANSETHER ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_TYMSHARE ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_UBBST ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_UBDEBUG ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_UBDIAGLOOP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_UBDL ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_UBNIU ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_UBNMC ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VALID ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VARIAN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VAXELN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VEECO ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VEXP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VGLAB ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VINES ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VINESECHO ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VINESLOOP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VITAL ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VLAN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VLTLMAN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VPROD ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_VURESERVED ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_WATERLOO ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_WELLFLEET ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_X25 ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_X75 ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_XNSSM ideal-int pkg syscall (netbsd-amd64-cgo), const ETHERTYPE_XTP ideal-int pkg syscall (netbsd-amd64-cgo), const ETHER_ADDR_LEN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHER_CRC_LEN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHER_CRC_POLY_BE ideal-int pkg syscall (netbsd-amd64-cgo), const ETHER_CRC_POLY_LE ideal-int pkg syscall (netbsd-amd64-cgo), const ETHER_HDR_LEN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHER_MAX_LEN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHER_MAX_LEN_JUMBO ideal-int pkg syscall (netbsd-amd64-cgo), const ETHER_MIN_LEN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHER_PPPOE_ENCAP_LEN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHER_TYPE_LEN ideal-int pkg syscall (netbsd-amd64-cgo), const ETHER_VLAN_ENCAP_LEN ideal-int pkg syscall (netbsd-amd64-cgo), const ETIME Errno pkg syscall (netbsd-amd64-cgo), const EVFILT_AIO ideal-int pkg syscall (netbsd-amd64-cgo), const EVFILT_PROC ideal-int pkg syscall (netbsd-amd64-cgo), const EVFILT_READ ideal-int pkg syscall (netbsd-amd64-cgo), const EVFILT_SIGNAL ideal-int pkg syscall (netbsd-amd64-cgo), const EVFILT_SYSCOUNT ideal-int pkg syscall (netbsd-amd64-cgo), const EVFILT_TIMER ideal-int pkg syscall (netbsd-amd64-cgo), const EVFILT_VNODE ideal-int pkg syscall (netbsd-amd64-cgo), const EVFILT_WRITE ideal-int pkg syscall (netbsd-amd64-cgo), const EV_ADD ideal-int pkg syscall (netbsd-amd64-cgo), const EV_CLEAR ideal-int pkg syscall (netbsd-amd64-cgo), const EV_DELETE ideal-int pkg syscall (netbsd-amd64-cgo), const EV_DISABLE ideal-int pkg syscall (netbsd-amd64-cgo), const EV_ENABLE ideal-int pkg syscall (netbsd-amd64-cgo), const EV_EOF ideal-int pkg syscall (netbsd-amd64-cgo), const EV_ERROR ideal-int pkg syscall (netbsd-amd64-cgo), const EV_FLAG1 ideal-int pkg syscall (netbsd-amd64-cgo), const EV_ONESHOT ideal-int pkg syscall (netbsd-amd64-cgo), const EV_SYSFLAGS ideal-int pkg syscall (netbsd-amd64-cgo), const EXTA ideal-int pkg syscall (netbsd-amd64-cgo), const EXTB ideal-int pkg syscall (netbsd-amd64-cgo), const EXTPROC ideal-int pkg syscall (netbsd-amd64-cgo), const FD_CLOEXEC ideal-int pkg syscall (netbsd-amd64-cgo), const FD_SETSIZE ideal-int pkg syscall (netbsd-amd64-cgo), const FLUSHO ideal-int pkg syscall (netbsd-amd64-cgo), const F_CLOSEM ideal-int pkg syscall (netbsd-amd64-cgo), const F_DUPFD ideal-int pkg syscall (netbsd-amd64-cgo), const F_DUPFD_CLOEXEC ideal-int pkg syscall (netbsd-amd64-cgo), const F_FSCTL ideal-int pkg syscall (netbsd-amd64-cgo), const F_FSDIRMASK ideal-int pkg syscall (netbsd-amd64-cgo), const F_FSIN ideal-int pkg syscall (netbsd-amd64-cgo), const F_FSINOUT ideal-int pkg syscall (netbsd-amd64-cgo), const F_FSOUT ideal-int pkg syscall (netbsd-amd64-cgo), const F_FSPRIV ideal-int pkg syscall (netbsd-amd64-cgo), const F_FSVOID ideal-int pkg syscall (netbsd-amd64-cgo), const F_GETFD ideal-int pkg syscall (netbsd-amd64-cgo), const F_GETFL ideal-int pkg syscall (netbsd-amd64-cgo), const F_GETLK ideal-int pkg syscall (netbsd-amd64-cgo), const F_GETNOSIGPIPE ideal-int pkg syscall (netbsd-amd64-cgo), const F_GETOWN ideal-int pkg syscall (netbsd-amd64-cgo), const F_MAXFD ideal-int pkg syscall (netbsd-amd64-cgo), const F_OK ideal-int pkg syscall (netbsd-amd64-cgo), const F_PARAM_MASK ideal-int pkg syscall (netbsd-amd64-cgo), const F_PARAM_MAX ideal-int pkg syscall (netbsd-amd64-cgo), const F_RDLCK ideal-int pkg syscall (netbsd-amd64-cgo), const F_SETFD ideal-int pkg syscall (netbsd-amd64-cgo), const F_SETFL ideal-int pkg syscall (netbsd-amd64-cgo), const F_SETLK ideal-int pkg syscall (netbsd-amd64-cgo), const F_SETLKW ideal-int pkg syscall (netbsd-amd64-cgo), const F_SETNOSIGPIPE ideal-int pkg syscall (netbsd-amd64-cgo), const F_SETOWN ideal-int pkg syscall (netbsd-amd64-cgo), const F_UNLCK ideal-int pkg syscall (netbsd-amd64-cgo), const F_WRLCK ideal-int pkg syscall (netbsd-amd64-cgo), const HUPCL ideal-int pkg syscall (netbsd-amd64-cgo), const ICANON ideal-int pkg syscall (netbsd-amd64-cgo), const ICMP6_FILTER = 18 pkg syscall (netbsd-amd64-cgo), const ICMP6_FILTER ideal-int pkg syscall (netbsd-amd64-cgo), const ICRNL ideal-int pkg syscall (netbsd-amd64-cgo), const IEXTEN ideal-int pkg syscall (netbsd-amd64-cgo), const IFAN_ARRIVAL ideal-int pkg syscall (netbsd-amd64-cgo), const IFAN_DEPARTURE ideal-int pkg syscall (netbsd-amd64-cgo), const IFA_ROUTE ideal-int pkg syscall (netbsd-amd64-cgo), const IFF_ALLMULTI ideal-int pkg syscall (netbsd-amd64-cgo), const IFF_CANTCHANGE ideal-int pkg syscall (netbsd-amd64-cgo), const IFF_DEBUG ideal-int pkg syscall (netbsd-amd64-cgo), const IFF_LINK0 ideal-int pkg syscall (netbsd-amd64-cgo), const IFF_LINK1 ideal-int pkg syscall (netbsd-amd64-cgo), const IFF_LINK2 ideal-int pkg syscall (netbsd-amd64-cgo), const IFF_NOARP ideal-int pkg syscall (netbsd-amd64-cgo), const IFF_NOTRAILERS ideal-int pkg syscall (netbsd-amd64-cgo), const IFF_OACTIVE ideal-int pkg syscall (netbsd-amd64-cgo), const IFF_POINTOPOINT ideal-int pkg syscall (netbsd-amd64-cgo), const IFF_PROMISC ideal-int pkg syscall (netbsd-amd64-cgo), const IFF_RUNNING ideal-int pkg syscall (netbsd-amd64-cgo), const IFF_SIMPLEX ideal-int pkg syscall (netbsd-amd64-cgo), const IFNAMSIZ ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_1822 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_A12MPPSWITCH ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_AAL2 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_AAL5 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ADSL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_AFLANE8023 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_AFLANE8025 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ARAP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ARCNET ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ARCNETPLUS ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ASYNC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ATM ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ATMDXI ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ATMFUNI ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ATMIMA ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ATMLOGICAL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ATMRADIO ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ATMVCIENDPT ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ATMVIRTUAL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_BRIDGE ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_BSC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_CARP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_CCTEMUL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_CEPT ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_CES ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_CHANNEL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_CNR ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_COFFEE ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_COMPOSITELINK ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DCN ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DLSW ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DOCSCABLEUPSTREAMCHANNEL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DS0 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DS0BUNDLE ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DS1FDL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DS3 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DTM ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DVBASILN ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DVBASIOUT ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ECONET ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_EON ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_EPLRS ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ESCON ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ETHER ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_FAITH ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_FAST ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_FASTETHER ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_FASTETHERFX ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_FDDI ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_FIBRECHANNEL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_FRAMERELAYMPI ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_FRDLCIENDPT ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_FRELAY ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_FRELAYDCE ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_FRFORWARD ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_G703AT2MB ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_G703AT64K ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_GIF ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_GIGABITETHERNET ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_GR303IDT ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_GR303RDT ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_H323GATEKEEPER ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_H323PROXY ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_HDH1822 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_HDLC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_HDSL2 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_HIPERLAN2 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_HIPPI ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_HIPPIINTERFACE ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_HOSTPAD ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_HSSI ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_HY ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_IBM370PARCHAN ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_IDSL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_IEEE1394 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_IEEE80211 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_IEEE80212 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_IEEE8023ADLAG ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_IFGSN ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_IMT ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_INFINIBAND ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_INTERLEAVE ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_IP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_IPFORWARD ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_IPOVERATM ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_IPOVERCDLC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_IPOVERCLAW ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_IPSWITCH ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ISDN ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ISDNBASIC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ISDNPRIMARY ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ISDNS ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ISDNU ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ISO88022LLC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ISO88023 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ISO88024 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ISO88025 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ISO88025CRFPINT ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ISO88025DTR ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ISO88025FIBER ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ISO88026 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ISUP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_L2VLAN ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_L3IPVLAN ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_L3IPXVLAN ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_LAPB ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_LAPD ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_LAPF ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_LINEGROUP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_LOCALTALK ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_LOOP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_MFSIGLINK ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_MIOX25 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_MODEM ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_MPC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_MPLS ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_MPLSTUNNEL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_MSDSL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_MVL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_MYRINET ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_NFAS ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_NSIP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_OPTICALCHANNEL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_OTHER ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_P10 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_P80 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PARA ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PFLOG ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PFSYNC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PLC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PON155 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PON622 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_POS ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PPP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PROPATM ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PROPBWAP2MP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PROPCNLS ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PROPMUX ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PROPVIRTUAL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PTPSERIAL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_PVC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_Q2931 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_QLLC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_RADIOMAC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_RADSL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_REACHDSL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_RFC1483 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_RS232 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_RSRB ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SDLC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SDSL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SHDSL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SIP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SIPSIG ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SIPTG ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SLIP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SMDSDXI ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SMDSICIP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SONET ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SONETPATH ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SONETVT ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SRP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_SS7SIGLINK ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_STACKTOSTACK ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_STARLAN ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_STF ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_T1 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_TDLC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_TELINK ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_TERMPAD ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_TR008 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_TRANSPHDLC ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_TUNNEL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_ULTRA ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_USB ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_V11 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_V35 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_V36 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_V37 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_VDSL ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_VIRTUALTG ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_VOICEDID ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_VOICEEM ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_VOICEEMFGD ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_VOICEENCAP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_VOICEFGDEANA ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_VOICEFXO ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_VOICEFXS ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_VOICEOVERATM ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_VOICEOVERCABLE ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_VOICEOVERIP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_X213 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_X25 ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_X25DDN ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_X25HUNTGROUP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_X25MLP ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_X25PLE ideal-int pkg syscall (netbsd-amd64-cgo), const IFT_XETHER ideal-int pkg syscall (netbsd-amd64-cgo), const IGNBRK ideal-int pkg syscall (netbsd-amd64-cgo), const IGNCR ideal-int pkg syscall (netbsd-amd64-cgo), const IGNPAR ideal-int pkg syscall (netbsd-amd64-cgo), const IMAXBEL ideal-int pkg syscall (netbsd-amd64-cgo), const INLCR ideal-int pkg syscall (netbsd-amd64-cgo), const INPCK ideal-int pkg syscall (netbsd-amd64-cgo), const IN_CLASSA_HOST ideal-int pkg syscall (netbsd-amd64-cgo), const IN_CLASSA_MAX ideal-int pkg syscall (netbsd-amd64-cgo), const IN_CLASSA_NET ideal-int pkg syscall (netbsd-amd64-cgo), const IN_CLASSA_NSHIFT ideal-int pkg syscall (netbsd-amd64-cgo), const IN_CLASSB_HOST ideal-int pkg syscall (netbsd-amd64-cgo), const IN_CLASSB_MAX ideal-int pkg syscall (netbsd-amd64-cgo), const IN_CLASSB_NET ideal-int pkg syscall (netbsd-amd64-cgo), const IN_CLASSB_NSHIFT ideal-int pkg syscall (netbsd-amd64-cgo), const IN_CLASSC_HOST ideal-int pkg syscall (netbsd-amd64-cgo), const IN_CLASSC_NET ideal-int pkg syscall (netbsd-amd64-cgo), const IN_CLASSC_NSHIFT ideal-int pkg syscall (netbsd-amd64-cgo), const IN_CLASSD_HOST ideal-int pkg syscall (netbsd-amd64-cgo), const IN_CLASSD_NET ideal-int pkg syscall (netbsd-amd64-cgo), const IN_CLASSD_NSHIFT ideal-int pkg syscall (netbsd-amd64-cgo), const IN_LOOPBACKNET ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_AH ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_CARP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_DONE ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_DSTOPTS ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_EGP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_ENCAP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_EON ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_ESP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_ETHERIP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_FRAGMENT ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_GGP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_GRE ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_HOPOPTS ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_ICMP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_ICMPV6 ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_IDP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_IGMP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_IPCOMP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_IPIP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_IPV4 ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_IPV6_ICMP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_MAX ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_MAXID ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_MOBILE ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_NONE ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_PFSYNC ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_PIM ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_PUP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_RAW ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_ROUTING ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_RSVP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_TP ideal-int pkg syscall (netbsd-amd64-cgo), const IPPROTO_VRRP ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_CHECKSUM ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_DEFHLIM ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_DONTFRAG ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_DSTOPTS ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_FAITH ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_FRAGTTL ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_HLIMDEC ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_HOPLIMIT ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_HOPOPTS ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_IPSEC_POLICY ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_MAXHLIM ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_MAXPACKET ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_MMTU ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_NEXTHOP ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_PATHMTU ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_PKTINFO ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_PORTRANGE ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_RECVDSTOPTS ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_RECVHOPOPTS ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_RECVPATHMTU ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_RECVPKTINFO ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_RECVRTHDR ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_RECVTCLASS ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_RTHDR ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_RTHDR_STRICT ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_TCLASS ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_USE_MIN_MTU ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_VERSION ideal-int pkg syscall (netbsd-amd64-cgo), const IPV6_VERSION_MASK ideal-int pkg syscall (netbsd-amd64-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (netbsd-amd64-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (netbsd-amd64-cgo), const IP_DF ideal-int pkg syscall (netbsd-amd64-cgo), const IP_EF ideal-int pkg syscall (netbsd-amd64-cgo), const IP_ERRORMTU ideal-int pkg syscall (netbsd-amd64-cgo), const IP_HDRINCL ideal-int pkg syscall (netbsd-amd64-cgo), const IP_IPSEC_POLICY ideal-int pkg syscall (netbsd-amd64-cgo), const IP_MAXPACKET ideal-int pkg syscall (netbsd-amd64-cgo), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (netbsd-amd64-cgo), const IP_MF ideal-int pkg syscall (netbsd-amd64-cgo), const IP_MINFRAGSIZE ideal-int pkg syscall (netbsd-amd64-cgo), const IP_MINTTL ideal-int pkg syscall (netbsd-amd64-cgo), const IP_MSS ideal-int pkg syscall (netbsd-amd64-cgo), const IP_OFFMASK ideal-int pkg syscall (netbsd-amd64-cgo), const IP_OPTIONS ideal-int pkg syscall (netbsd-amd64-cgo), const IP_PORTRANGE ideal-int pkg syscall (netbsd-amd64-cgo), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (netbsd-amd64-cgo), const IP_PORTRANGE_HIGH ideal-int pkg syscall (netbsd-amd64-cgo), const IP_PORTRANGE_LOW ideal-int pkg syscall (netbsd-amd64-cgo), const IP_RECVDSTADDR ideal-int pkg syscall (netbsd-amd64-cgo), const IP_RECVIF ideal-int pkg syscall (netbsd-amd64-cgo), const IP_RECVOPTS ideal-int pkg syscall (netbsd-amd64-cgo), const IP_RECVRETOPTS ideal-int pkg syscall (netbsd-amd64-cgo), const IP_RECVTTL ideal-int pkg syscall (netbsd-amd64-cgo), const IP_RETOPTS ideal-int pkg syscall (netbsd-amd64-cgo), const IP_RF ideal-int pkg syscall (netbsd-amd64-cgo), const ISIG ideal-int pkg syscall (netbsd-amd64-cgo), const ISTRIP ideal-int pkg syscall (netbsd-amd64-cgo), const IXANY ideal-int pkg syscall (netbsd-amd64-cgo), const IXOFF ideal-int pkg syscall (netbsd-amd64-cgo), const IXON ideal-int pkg syscall (netbsd-amd64-cgo), const LOCK_EX ideal-int pkg syscall (netbsd-amd64-cgo), const LOCK_NB ideal-int pkg syscall (netbsd-amd64-cgo), const LOCK_SH ideal-int pkg syscall (netbsd-amd64-cgo), const LOCK_UN ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_BCAST ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_CONTROLMBUF ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_CTRUNC ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_DONTROUTE ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_DONTWAIT ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_EOR ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_IOVUSRSPACE ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_LENUSRSPACE ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_MCAST ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_NAMEMBUF ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_NBIO ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_NOSIGNAL ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_OOB ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_PEEK ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_TRUNC ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_USERFLAGS ideal-int pkg syscall (netbsd-amd64-cgo), const MSG_WAITALL ideal-int pkg syscall (netbsd-amd64-cgo), const NAME_MAX ideal-int pkg syscall (netbsd-amd64-cgo), const NET_RT_DUMP ideal-int pkg syscall (netbsd-amd64-cgo), const NET_RT_FLAGS ideal-int pkg syscall (netbsd-amd64-cgo), const NET_RT_IFLIST ideal-int pkg syscall (netbsd-amd64-cgo), const NET_RT_MAXID ideal-int pkg syscall (netbsd-amd64-cgo), const NET_RT_OIFLIST ideal-int pkg syscall (netbsd-amd64-cgo), const NET_RT_OOIFLIST ideal-int pkg syscall (netbsd-amd64-cgo), const NOFLSH ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_ATTRIB ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_CHILD ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_DELETE ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_EXEC ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_EXIT ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_EXTEND ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_FORK ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_LINK ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_LOWAT ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_PCTRLMASK ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_PDATAMASK ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_RENAME ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_REVOKE ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_TRACK ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_TRACKERR ideal-int pkg syscall (netbsd-amd64-cgo), const NOTE_WRITE ideal-int pkg syscall (netbsd-amd64-cgo), const OCRNL ideal-int pkg syscall (netbsd-amd64-cgo), const OFIOGETBMAP ideal-int pkg syscall (netbsd-amd64-cgo), const ONLCR ideal-int pkg syscall (netbsd-amd64-cgo), const ONLRET ideal-int pkg syscall (netbsd-amd64-cgo), const ONOCR ideal-int pkg syscall (netbsd-amd64-cgo), const ONOEOT ideal-int pkg syscall (netbsd-amd64-cgo), const OPOST ideal-int pkg syscall (netbsd-amd64-cgo), const O_ACCMODE ideal-int pkg syscall (netbsd-amd64-cgo), const O_ALT_IO ideal-int pkg syscall (netbsd-amd64-cgo), const O_DIRECT ideal-int pkg syscall (netbsd-amd64-cgo), const O_DIRECTORY ideal-int pkg syscall (netbsd-amd64-cgo), const O_DSYNC ideal-int pkg syscall (netbsd-amd64-cgo), const O_EXLOCK ideal-int pkg syscall (netbsd-amd64-cgo), const O_FSYNC ideal-int pkg syscall (netbsd-amd64-cgo), const O_NDELAY ideal-int pkg syscall (netbsd-amd64-cgo), const O_NOFOLLOW ideal-int pkg syscall (netbsd-amd64-cgo), const O_NOSIGPIPE ideal-int pkg syscall (netbsd-amd64-cgo), const O_RSYNC ideal-int pkg syscall (netbsd-amd64-cgo), const O_SHLOCK ideal-int pkg syscall (netbsd-amd64-cgo), const PARENB ideal-int pkg syscall (netbsd-amd64-cgo), const PARMRK ideal-int pkg syscall (netbsd-amd64-cgo), const PARODD ideal-int pkg syscall (netbsd-amd64-cgo), const PENDIN ideal-int pkg syscall (netbsd-amd64-cgo), const PRIO_PGRP = 1 pkg syscall (netbsd-amd64-cgo), const PRIO_PGRP ideal-int pkg syscall (netbsd-amd64-cgo), const PRIO_PROCESS = 0 pkg syscall (netbsd-amd64-cgo), const PRIO_PROCESS ideal-int pkg syscall (netbsd-amd64-cgo), const PRIO_USER = 2 pkg syscall (netbsd-amd64-cgo), const PRIO_USER ideal-int pkg syscall (netbsd-amd64-cgo), const PRI_IOFLUSH ideal-int pkg syscall (netbsd-amd64-cgo), const PTRACE_CONT ideal-int pkg syscall (netbsd-amd64-cgo), const PTRACE_KILL ideal-int pkg syscall (netbsd-amd64-cgo), const PTRACE_TRACEME ideal-int pkg syscall (netbsd-amd64-cgo), const RLIMIT_AS ideal-int pkg syscall (netbsd-amd64-cgo), const RLIMIT_CORE ideal-int pkg syscall (netbsd-amd64-cgo), const RLIMIT_CPU ideal-int pkg syscall (netbsd-amd64-cgo), const RLIMIT_DATA ideal-int pkg syscall (netbsd-amd64-cgo), const RLIMIT_FSIZE ideal-int pkg syscall (netbsd-amd64-cgo), const RLIMIT_NOFILE ideal-int pkg syscall (netbsd-amd64-cgo), const RLIMIT_STACK ideal-int pkg syscall (netbsd-amd64-cgo), const RLIM_INFINITY ideal-int pkg syscall (netbsd-amd64-cgo), const RTAX_AUTHOR ideal-int pkg syscall (netbsd-amd64-cgo), const RTAX_BRD ideal-int pkg syscall (netbsd-amd64-cgo), const RTAX_DST ideal-int pkg syscall (netbsd-amd64-cgo), const RTAX_GATEWAY ideal-int pkg syscall (netbsd-amd64-cgo), const RTAX_GENMASK ideal-int pkg syscall (netbsd-amd64-cgo), const RTAX_IFA ideal-int pkg syscall (netbsd-amd64-cgo), const RTAX_IFP ideal-int pkg syscall (netbsd-amd64-cgo), const RTAX_MAX ideal-int pkg syscall (netbsd-amd64-cgo), const RTAX_NETMASK ideal-int pkg syscall (netbsd-amd64-cgo), const RTAX_TAG ideal-int pkg syscall (netbsd-amd64-cgo), const RTA_AUTHOR ideal-int pkg syscall (netbsd-amd64-cgo), const RTA_BRD ideal-int pkg syscall (netbsd-amd64-cgo), const RTA_DST ideal-int pkg syscall (netbsd-amd64-cgo), const RTA_GATEWAY ideal-int pkg syscall (netbsd-amd64-cgo), const RTA_GENMASK ideal-int pkg syscall (netbsd-amd64-cgo), const RTA_IFA ideal-int pkg syscall (netbsd-amd64-cgo), const RTA_IFP ideal-int pkg syscall (netbsd-amd64-cgo), const RTA_NETMASK ideal-int pkg syscall (netbsd-amd64-cgo), const RTA_TAG ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_ANNOUNCE ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_BLACKHOLE ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_CLONED ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_CLONING ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_DONE ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_DYNAMIC ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_GATEWAY ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_HOST ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_LLINFO ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_MASK ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_MODIFIED ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_PROTO1 ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_PROTO2 ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_REJECT ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_SRC ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_STATIC ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_UP ideal-int pkg syscall (netbsd-amd64-cgo), const RTF_XRESOLVE ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_ADD ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_CHANGE ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_CHGADDR ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_DELADDR ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_DELETE ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_GET ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_IEEE80211 ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_IFANNOUNCE ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_IFINFO ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_LLINFO_UPD ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_LOCK ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_LOSING ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_MISS ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_NEWADDR ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_OIFINFO ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_OLDADD ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_OLDDEL ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_OOIFINFO ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_REDIRECT ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_RESOLVE ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_RTTUNIT ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_SETGATE ideal-int pkg syscall (netbsd-amd64-cgo), const RTM_VERSION ideal-int pkg syscall (netbsd-amd64-cgo), const RTV_EXPIRE ideal-int pkg syscall (netbsd-amd64-cgo), const RTV_HOPCOUNT ideal-int pkg syscall (netbsd-amd64-cgo), const RTV_MTU ideal-int pkg syscall (netbsd-amd64-cgo), const RTV_RPIPE ideal-int pkg syscall (netbsd-amd64-cgo), const RTV_RTT ideal-int pkg syscall (netbsd-amd64-cgo), const RTV_RTTVAR ideal-int pkg syscall (netbsd-amd64-cgo), const RTV_SPIPE ideal-int pkg syscall (netbsd-amd64-cgo), const RTV_SSTHRESH ideal-int pkg syscall (netbsd-amd64-cgo), const RUSAGE_CHILDREN ideal-int pkg syscall (netbsd-amd64-cgo), const RUSAGE_SELF ideal-int pkg syscall (netbsd-amd64-cgo), const SCM_CREDS ideal-int pkg syscall (netbsd-amd64-cgo), const SCM_RIGHTS ideal-int pkg syscall (netbsd-amd64-cgo), const SCM_TIMESTAMP ideal-int pkg syscall (netbsd-amd64-cgo), const SIGCHLD Signal pkg syscall (netbsd-amd64-cgo), const SIGCONT Signal pkg syscall (netbsd-amd64-cgo), const SIGEMT Signal pkg syscall (netbsd-amd64-cgo), const SIGINFO Signal pkg syscall (netbsd-amd64-cgo), const SIGIO Signal pkg syscall (netbsd-amd64-cgo), const SIGIOT Signal pkg syscall (netbsd-amd64-cgo), const SIGPROF Signal pkg syscall (netbsd-amd64-cgo), const SIGPWR Signal pkg syscall (netbsd-amd64-cgo), const SIGSTOP Signal pkg syscall (netbsd-amd64-cgo), const SIGSYS Signal pkg syscall (netbsd-amd64-cgo), const SIGTSTP Signal pkg syscall (netbsd-amd64-cgo), const SIGTTIN Signal pkg syscall (netbsd-amd64-cgo), const SIGTTOU Signal pkg syscall (netbsd-amd64-cgo), const SIGURG Signal pkg syscall (netbsd-amd64-cgo), const SIGUSR1 Signal pkg syscall (netbsd-amd64-cgo), const SIGUSR2 Signal pkg syscall (netbsd-amd64-cgo), const SIGVTALRM Signal pkg syscall (netbsd-amd64-cgo), const SIGWINCH Signal pkg syscall (netbsd-amd64-cgo), const SIGXCPU Signal pkg syscall (netbsd-amd64-cgo), const SIGXFSZ Signal pkg syscall (netbsd-amd64-cgo), const SIOCADDMULTI ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCADDRT ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCAIFADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCALIFADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCATMARK ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCDELMULTI ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCDELRT ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCDIFADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCDIFPHYADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCDLIFADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGDRVSPEC ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGETPFSYNC ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGETSGCNT ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGETVIFCNT ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGHIWAT ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFADDRPREF ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFALIAS ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFBRDADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFCAP ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFCONF ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFDATA ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFDLT ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFDSTADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFFLAGS ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFGENERIC ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFMEDIA ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFMETRIC ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFMTU ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFNETMASK ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFPDSTADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGIFPSRCADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGLIFADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGLIFPHYADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGLINKSTR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGLOWAT ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGPGRP ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCGVH ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCIFCREATE ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCIFDESTROY ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCIFGCLONERS ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCINITIFADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSDRVSPEC ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSETPFSYNC ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSHIWAT ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSIFADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSIFADDRPREF ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSIFBRDADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSIFCAP ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSIFDSTADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSIFFLAGS ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSIFGENERIC ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSIFMEDIA ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSIFMETRIC ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSIFMTU ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSIFNETMASK ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSIFPHYADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSLIFPHYADDR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSLINKSTR ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSLOWAT ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSPGRP ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCSVH ideal-int pkg syscall (netbsd-amd64-cgo), const SIOCZIFDATA ideal-int pkg syscall (netbsd-amd64-cgo), const SOCK_CLOEXEC ideal-int pkg syscall (netbsd-amd64-cgo), const SOCK_FLAGS_MASK ideal-int pkg syscall (netbsd-amd64-cgo), const SOCK_NONBLOCK ideal-int pkg syscall (netbsd-amd64-cgo), const SOCK_NOSIGPIPE ideal-int pkg syscall (netbsd-amd64-cgo), const SOCK_RDM ideal-int pkg syscall (netbsd-amd64-cgo), const SO_ACCEPTCONN ideal-int pkg syscall (netbsd-amd64-cgo), const SO_ACCEPTFILTER ideal-int pkg syscall (netbsd-amd64-cgo), const SO_DEBUG ideal-int pkg syscall (netbsd-amd64-cgo), const SO_ERROR ideal-int pkg syscall (netbsd-amd64-cgo), const SO_NOHEADER ideal-int pkg syscall (netbsd-amd64-cgo), const SO_NOSIGPIPE ideal-int pkg syscall (netbsd-amd64-cgo), const SO_OOBINLINE ideal-int pkg syscall (netbsd-amd64-cgo), const SO_OVERFLOWED ideal-int pkg syscall (netbsd-amd64-cgo), const SO_RCVLOWAT ideal-int pkg syscall (netbsd-amd64-cgo), const SO_RCVTIMEO ideal-int pkg syscall (netbsd-amd64-cgo), const SO_REUSEPORT ideal-int pkg syscall (netbsd-amd64-cgo), const SO_SNDLOWAT ideal-int pkg syscall (netbsd-amd64-cgo), const SO_SNDTIMEO ideal-int pkg syscall (netbsd-amd64-cgo), const SO_TIMESTAMP ideal-int pkg syscall (netbsd-amd64-cgo), const SO_TYPE ideal-int pkg syscall (netbsd-amd64-cgo), const SO_USELOOPBACK ideal-int pkg syscall (netbsd-amd64-cgo), const SYSCTL_VERSION ideal-int pkg syscall (netbsd-amd64-cgo), const SYSCTL_VERS_0 ideal-int pkg syscall (netbsd-amd64-cgo), const SYSCTL_VERS_1 ideal-int pkg syscall (netbsd-amd64-cgo), const SYSCTL_VERS_MASK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_ACCEPT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_ACCESS ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_ACCT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_ADJTIME ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_BIND ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_BREAK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_CHDIR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_CHFLAGS ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_CHMOD ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_CHOWN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_CHROOT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_CLOCK_GETRES ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_CLOCK_GETTIME ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_CLOCK_SETTIME ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_CLOSE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_CONNECT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_DUP ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_DUP2 ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_DUP3 ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXECVE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXIT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTRCTL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_DELETE_FD ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_DELETE_FILE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_DELETE_LINK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_GET_FD ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_GET_FILE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_GET_LINK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_LIST_FD ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_LIST_FILE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_LIST_LINK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_SET_FD ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_SET_FILE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_EXTATTR_SET_LINK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FACCESSAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FCHDIR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FCHFLAGS ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FCHMOD ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FCHMODAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FCHOWN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FCHOWNAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FCHROOT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FCNTL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FDATASYNC ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FEXECVE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FGETXATTR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FHSTAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FKTRACE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FLISTXATTR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FLOCK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FORK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FPATHCONF ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FREMOVEXATTR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FSETXATTR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FSTAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FSTATAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FSTATVFS1 ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FSYNC ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FSYNC_RANGE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FTRUNCATE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FUTIMENS ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_FUTIMES ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETCONTEXT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETDENTS ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETEGID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETEUID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETFH ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETGID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETGROUPS ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETITIMER ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETPEERNAME ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETPGID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETPGRP ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETPID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETPPID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETPRIORITY ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETRLIMIT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETRUSAGE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETSID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETSOCKNAME ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETSOCKOPT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETTIMEOFDAY ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETUID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETVFSSTAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_GETXATTR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_IOCTL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_ISSETUGID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_KEVENT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_KILL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_KQUEUE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_KQUEUE1 ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_KTRACE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_LCHFLAGS ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_LCHMOD ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_LCHOWN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_LGETXATTR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_LINK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_LINKAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_LISTEN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_LISTXATTR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_LLISTXATTR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_LREMOVEXATTR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_LSEEK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_LSETXATTR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_LSTAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_LUTIMES ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MADVISE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MINCORE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MINHERIT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MKDIR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MKDIRAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MKFIFO ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MKFIFOAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MKNOD ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MKNODAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MLOCK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MLOCKALL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MMAP ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MODCTL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MOUNT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MPROTECT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MREMAP ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MSGCTL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MSGGET ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MSGRCV ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MSGSND ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MUNLOCK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MUNLOCKALL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_MUNMAP ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_NANOSLEEP ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_NTP_ADJTIME ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_NTP_GETTIME ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_OPEN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_OPENAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PACCEPT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PATHCONF ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PIPE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PIPE2 ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PMC_CONTROL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PMC_GET_INFO ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_POLL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_POLLTS ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_POSIX_FADVISE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_POSIX_SPAWN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PREAD ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PREADV ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PROFIL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PSELECT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PSET_ASSIGN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PSET_CREATE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PSET_DESTROY ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PTRACE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PWRITE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_PWRITEV ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_RASCTL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_READ ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_READLINK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_READLINKAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_READV ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_REBOOT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_RECVFROM ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_RECVMMSG ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_RECVMSG ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_REMOVEXATTR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_RENAME ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_RENAMEAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_REVOKE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_RMDIR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SBRK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SCHED_YIELD ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SELECT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SEMCONFIG ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SEMGET ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SEMOP ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SENDMMSG ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SENDMSG ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SENDTO ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETCONTEXT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETEGID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETEUID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETGID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETGROUPS ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETITIMER ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETPGID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETPRIORITY ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETREGID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETREUID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETRLIMIT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETSID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETSOCKOPT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETTIMEOFDAY ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETUID ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SETXATTR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SHMAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SHMCTL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SHMDT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SHMGET ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SHUTDOWN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SIGQUEUEINFO ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SOCKET ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SOCKETPAIR ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SSTK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_STAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_STATVFS1 ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SWAPCTL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SYMLINK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SYMLINKAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SYNC ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_SYSARCH ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_TIMER_CREATE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_TIMER_DELETE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_TIMER_GETOVERRUN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_TIMER_GETTIME ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_TIMER_SETTIME ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_TRUNCATE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_UMASK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_UNDELETE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_UNLINK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_UNLINKAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_UNMOUNT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_UTIMENSAT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_UTIMES ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_UTRACE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_UUIDGEN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_VADVISE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_VFORK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_WAIT4 ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_WRITE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS_WRITEV ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_CONTINUE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_CREATE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_CTL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_DETACH ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_EXIT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_GETNAME ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_GETPRIVATE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_KILL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_PARK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_SELF ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_SETNAME ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_SETPRIVATE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_SUSPEND ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_UNPARK ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_UNPARK_ALL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_WAIT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__LWP_WAKEUP ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__PSET_BIND ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__SCHED_GETAFFINITY ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__SCHED_GETPARAM ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__SCHED_SETAFFINITY ideal-int pkg syscall (netbsd-amd64-cgo), const SYS__SCHED_SETPARAM ideal-int pkg syscall (netbsd-amd64-cgo), const SYS___CLONE ideal-int pkg syscall (netbsd-amd64-cgo), const SYS___GETCWD ideal-int pkg syscall (netbsd-amd64-cgo), const SYS___GETLOGIN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS___POSIX_CHOWN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS___POSIX_FCHOWN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS___POSIX_LCHOWN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS___POSIX_RENAME ideal-int pkg syscall (netbsd-amd64-cgo), const SYS___QUOTACTL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS___SEMCTL ideal-int pkg syscall (netbsd-amd64-cgo), const SYS___SETLOGIN ideal-int pkg syscall (netbsd-amd64-cgo), const SYS___SIGACTION_SIGTRAMP ideal-int pkg syscall (netbsd-amd64-cgo), const SYS___SIGTIMEDWAIT ideal-int pkg syscall (netbsd-amd64-cgo), const SYS___SYSCTL ideal-int pkg syscall (netbsd-amd64-cgo), const S_ARCH1 ideal-int pkg syscall (netbsd-amd64-cgo), const S_ARCH2 ideal-int pkg syscall (netbsd-amd64-cgo), const S_BLKSIZE ideal-int pkg syscall (netbsd-amd64-cgo), const S_IEXEC ideal-int pkg syscall (netbsd-amd64-cgo), const S_IFWHT ideal-int pkg syscall (netbsd-amd64-cgo), const S_IREAD ideal-int pkg syscall (netbsd-amd64-cgo), const S_IRGRP ideal-int pkg syscall (netbsd-amd64-cgo), const S_IROTH ideal-int pkg syscall (netbsd-amd64-cgo), const S_IRWXG ideal-int pkg syscall (netbsd-amd64-cgo), const S_IRWXO ideal-int pkg syscall (netbsd-amd64-cgo), const S_IRWXU ideal-int pkg syscall (netbsd-amd64-cgo), const S_ISTXT ideal-int pkg syscall (netbsd-amd64-cgo), const S_IWGRP ideal-int pkg syscall (netbsd-amd64-cgo), const S_IWOTH ideal-int pkg syscall (netbsd-amd64-cgo), const S_IWRITE ideal-int pkg syscall (netbsd-amd64-cgo), const S_IXGRP ideal-int pkg syscall (netbsd-amd64-cgo), const S_IXOTH ideal-int pkg syscall (netbsd-amd64-cgo), const S_LOGIN_SET ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofBpfHdr ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofBpfInsn ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofBpfProgram ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofBpfStat ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofBpfVersion ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofCmsghdr ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofICMPv6Filter = 32 pkg syscall (netbsd-amd64-cgo), const SizeofICMPv6Filter ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofIPMreq ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofIPv6MTUInfo = 32 pkg syscall (netbsd-amd64-cgo), const SizeofIPv6MTUInfo ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofIPv6Mreq ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofIfData ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofIfMsghdr ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofIfaMsghdr ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofInet6Pktinfo ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofLinger ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofMsghdr ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofRtMetrics ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofRtMsghdr ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofSockaddrAny ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofSockaddrDatalink ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofSockaddrInet4 ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofSockaddrInet6 ideal-int pkg syscall (netbsd-amd64-cgo), const SizeofSockaddrUnix ideal-int pkg syscall (netbsd-amd64-cgo), const TCIFLUSH ideal-int pkg syscall (netbsd-amd64-cgo), const TCIOFLUSH ideal-int pkg syscall (netbsd-amd64-cgo), const TCOFLUSH ideal-int pkg syscall (netbsd-amd64-cgo), const TCP_CONGCTL ideal-int pkg syscall (netbsd-amd64-cgo), const TCP_KEEPCNT ideal-int pkg syscall (netbsd-amd64-cgo), const TCP_KEEPIDLE ideal-int pkg syscall (netbsd-amd64-cgo), const TCP_KEEPINIT ideal-int pkg syscall (netbsd-amd64-cgo), const TCP_KEEPINTVL ideal-int pkg syscall (netbsd-amd64-cgo), const TCP_MAXBURST ideal-int pkg syscall (netbsd-amd64-cgo), const TCP_MAXSEG ideal-int pkg syscall (netbsd-amd64-cgo), const TCP_MAXWIN ideal-int pkg syscall (netbsd-amd64-cgo), const TCP_MAX_WINSHIFT ideal-int pkg syscall (netbsd-amd64-cgo), const TCP_MD5SIG ideal-int pkg syscall (netbsd-amd64-cgo), const TCP_MINMSS ideal-int pkg syscall (netbsd-amd64-cgo), const TCP_MSS ideal-int pkg syscall (netbsd-amd64-cgo), const TCSAFLUSH ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCCBRK ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCCDTR ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCCONS ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCDCDTIMESTAMP ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCDRAIN ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCEXCL ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCEXT ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCFLAG_CDTRCTS ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCFLAG_CLOCAL ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCFLAG_CRTSCTS ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCFLAG_MDMBUF ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCFLAG_SOFTCAR ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCFLUSH ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCGETA ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCGETD ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCGFLAGS ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCGLINED ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCGPGRP ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCGQSIZE ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCGRANTPT ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCGSID ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCGSIZE ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCGWINSZ ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCMBIC ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCMBIS ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCMGET ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCMSET ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCM_CAR ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCM_CD ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCM_CTS ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCM_DSR ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCM_DTR ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCM_LE ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCM_RI ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCM_RNG ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCM_RTS ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCM_SR ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCM_ST ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCNOTTY ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCNXCL ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCOUTQ ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCPKT ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCPKT_DATA ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCPKT_DOSTOP ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCPKT_IOCTL ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCPKT_NOSTOP ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCPKT_START ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCPKT_STOP ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCPTMGET ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCPTSNAME ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCRCVFRAME ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCREMOTE ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSBRK ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSCTTY ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSDTR ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSETA ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSETAF ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSETAW ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSETD ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSFLAGS ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSIG ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSLINED ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSPGRP ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSQSIZE ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSSIZE ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSTART ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSTAT ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSTI ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSTOP ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCSWINSZ ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCUCNTL ideal-int pkg syscall (netbsd-amd64-cgo), const TIOCXMTFRAME ideal-int pkg syscall (netbsd-amd64-cgo), const TOSTOP ideal-int pkg syscall (netbsd-amd64-cgo), const VDISCARD ideal-int pkg syscall (netbsd-amd64-cgo), const VDSUSP ideal-int pkg syscall (netbsd-amd64-cgo), const VEOF ideal-int pkg syscall (netbsd-amd64-cgo), const VEOL ideal-int pkg syscall (netbsd-amd64-cgo), const VEOL2 ideal-int pkg syscall (netbsd-amd64-cgo), const VERASE ideal-int pkg syscall (netbsd-amd64-cgo), const VINTR ideal-int pkg syscall (netbsd-amd64-cgo), const VKILL ideal-int pkg syscall (netbsd-amd64-cgo), const VLNEXT ideal-int pkg syscall (netbsd-amd64-cgo), const VMIN ideal-int pkg syscall (netbsd-amd64-cgo), const VQUIT ideal-int pkg syscall (netbsd-amd64-cgo), const VREPRINT ideal-int pkg syscall (netbsd-amd64-cgo), const VSTART ideal-int pkg syscall (netbsd-amd64-cgo), const VSTATUS ideal-int pkg syscall (netbsd-amd64-cgo), const VSTOP ideal-int pkg syscall (netbsd-amd64-cgo), const VSUSP ideal-int pkg syscall (netbsd-amd64-cgo), const VTIME ideal-int pkg syscall (netbsd-amd64-cgo), const VWERASE ideal-int pkg syscall (netbsd-amd64-cgo), const WALL ideal-int pkg syscall (netbsd-amd64-cgo), const WALLSIG ideal-int pkg syscall (netbsd-amd64-cgo), const WALTSIG ideal-int pkg syscall (netbsd-amd64-cgo), const WCLONE ideal-int pkg syscall (netbsd-amd64-cgo), const WCOREFLAG ideal-int pkg syscall (netbsd-amd64-cgo), const WNOHANG ideal-int pkg syscall (netbsd-amd64-cgo), const WNOWAIT ideal-int pkg syscall (netbsd-amd64-cgo), const WNOZOMBIE ideal-int pkg syscall (netbsd-amd64-cgo), const WOPTSCHECKED ideal-int pkg syscall (netbsd-amd64-cgo), const WSTOPPED ideal-int pkg syscall (netbsd-amd64-cgo), const WUNTRACED ideal-int pkg syscall (netbsd-amd64-cgo), func Accept(int) (int, Sockaddr, error) pkg syscall (netbsd-amd64-cgo), func Access(string, uint32) error pkg syscall (netbsd-amd64-cgo), func Adjtime(*Timeval, *Timeval) error pkg syscall (netbsd-amd64-cgo), func Bind(int, Sockaddr) error pkg syscall (netbsd-amd64-cgo), func BpfBuflen(int) (int, error) pkg syscall (netbsd-amd64-cgo), func BpfDatalink(int) (int, error) pkg syscall (netbsd-amd64-cgo), func BpfHeadercmpl(int) (int, error) pkg syscall (netbsd-amd64-cgo), func BpfInterface(int, string) (string, error) pkg syscall (netbsd-amd64-cgo), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (netbsd-amd64-cgo), func BpfStats(int) (*BpfStat, error) pkg syscall (netbsd-amd64-cgo), func BpfStmt(int, int) *BpfInsn pkg syscall (netbsd-amd64-cgo), func BpfTimeout(int) (*Timeval, error) pkg syscall (netbsd-amd64-cgo), func CheckBpfVersion(int) error pkg syscall (netbsd-amd64-cgo), func Chflags(string, int) error pkg syscall (netbsd-amd64-cgo), func Chroot(string) error pkg syscall (netbsd-amd64-cgo), func Close(int) error pkg syscall (netbsd-amd64-cgo), func CloseOnExec(int) pkg syscall (netbsd-amd64-cgo), func CmsgLen(int) int pkg syscall (netbsd-amd64-cgo), func CmsgSpace(int) int pkg syscall (netbsd-amd64-cgo), func Connect(int, Sockaddr) error pkg syscall (netbsd-amd64-cgo), func Dup(int) (int, error) pkg syscall (netbsd-amd64-cgo), func Dup2(int, int) error pkg syscall (netbsd-amd64-cgo), func Fchdir(int) error pkg syscall (netbsd-amd64-cgo), func Fchflags(int, int) error pkg syscall (netbsd-amd64-cgo), func Fchmod(int, uint32) error pkg syscall (netbsd-amd64-cgo), func Fchown(int, int, int) error pkg syscall (netbsd-amd64-cgo), func Flock(int, int) error pkg syscall (netbsd-amd64-cgo), func FlushBpf(int) error pkg syscall (netbsd-amd64-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (netbsd-amd64-cgo), func Fpathconf(int, int) (int, error) pkg syscall (netbsd-amd64-cgo), func Fstat(int, *Stat_t) error pkg syscall (netbsd-amd64-cgo), func Fsync(int) error pkg syscall (netbsd-amd64-cgo), func Ftruncate(int, int64) error pkg syscall (netbsd-amd64-cgo), func Futimes(int, []Timeval) error pkg syscall (netbsd-amd64-cgo), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (netbsd-amd64-cgo), func Getpeername(int) (Sockaddr, error) pkg syscall (netbsd-amd64-cgo), func Getpgid(int) (int, error) pkg syscall (netbsd-amd64-cgo), func Getpgrp() int pkg syscall (netbsd-amd64-cgo), func Getpriority(int, int) (int, error) pkg syscall (netbsd-amd64-cgo), func Getrlimit(int, *Rlimit) error pkg syscall (netbsd-amd64-cgo), func Getrusage(int, *Rusage) error pkg syscall (netbsd-amd64-cgo), func Getsid(int) (int, error) pkg syscall (netbsd-amd64-cgo), func Getsockname(int) (Sockaddr, error) pkg syscall (netbsd-amd64-cgo), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (netbsd-amd64-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (netbsd-amd64-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (netbsd-amd64-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (netbsd-amd64-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (netbsd-amd64-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (netbsd-amd64-cgo), func GetsockoptInt(int, int, int) (int, error) pkg syscall (netbsd-amd64-cgo), func Issetugid() bool pkg syscall (netbsd-amd64-cgo), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (netbsd-amd64-cgo), func Kill(int, Signal) error pkg syscall (netbsd-amd64-cgo), func Kqueue() (int, error) pkg syscall (netbsd-amd64-cgo), func Listen(int, int) error pkg syscall (netbsd-amd64-cgo), func Lstat(string, *Stat_t) error pkg syscall (netbsd-amd64-cgo), func Mkfifo(string, uint32) error pkg syscall (netbsd-amd64-cgo), func Mknod(string, uint32, int) error pkg syscall (netbsd-amd64-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (netbsd-amd64-cgo), func Munmap([]uint8) error pkg syscall (netbsd-amd64-cgo), func Nanosleep(*Timespec, *Timespec) error pkg syscall (netbsd-amd64-cgo), func Open(string, int, uint32) (int, error) pkg syscall (netbsd-amd64-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (netbsd-amd64-cgo), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (netbsd-amd64-cgo), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (netbsd-amd64-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (netbsd-amd64-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (netbsd-amd64-cgo), func Pathconf(string, int) (int, error) pkg syscall (netbsd-amd64-cgo), func Pipe([]int) error pkg syscall (netbsd-amd64-cgo), func Pread(int, []uint8, int64) (int, error) pkg syscall (netbsd-amd64-cgo), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (netbsd-amd64-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-amd64-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-amd64-cgo), func Read(int, []uint8) (int, error) pkg syscall (netbsd-amd64-cgo), func ReadDirent(int, []uint8) (int, error) pkg syscall (netbsd-amd64-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (netbsd-amd64-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (netbsd-amd64-cgo), func Revoke(string) error pkg syscall (netbsd-amd64-cgo), func RouteRIB(int, int) ([]uint8, error) pkg syscall (netbsd-amd64-cgo), func Seek(int, int64, int) (int64, error) pkg syscall (netbsd-amd64-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (netbsd-amd64-cgo), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (netbsd-amd64-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (netbsd-amd64-cgo), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (netbsd-amd64-cgo), func SetBpf(int, []BpfInsn) error pkg syscall (netbsd-amd64-cgo), func SetBpfBuflen(int, int) (int, error) pkg syscall (netbsd-amd64-cgo), func SetBpfDatalink(int, int) (int, error) pkg syscall (netbsd-amd64-cgo), func SetBpfHeadercmpl(int, int) error pkg syscall (netbsd-amd64-cgo), func SetBpfImmediate(int, int) error pkg syscall (netbsd-amd64-cgo), func SetBpfInterface(int, string) error pkg syscall (netbsd-amd64-cgo), func SetBpfPromisc(int, int) error pkg syscall (netbsd-amd64-cgo), func SetBpfTimeout(int, *Timeval) error pkg syscall (netbsd-amd64-cgo), func SetKevent(*Kevent_t, int, int, int) pkg syscall (netbsd-amd64-cgo), func SetNonblock(int, bool) error pkg syscall (netbsd-amd64-cgo), func Setegid(int) error pkg syscall (netbsd-amd64-cgo), func Seteuid(int) error pkg syscall (netbsd-amd64-cgo), func Setgid(int) error pkg syscall (netbsd-amd64-cgo), func Setgroups([]int) error pkg syscall (netbsd-amd64-cgo), func Setpgid(int, int) error pkg syscall (netbsd-amd64-cgo), func Setpriority(int, int, int) error pkg syscall (netbsd-amd64-cgo), func Setregid(int, int) error pkg syscall (netbsd-amd64-cgo), func Setreuid(int, int) error pkg syscall (netbsd-amd64-cgo), func Setrlimit(int, *Rlimit) error pkg syscall (netbsd-amd64-cgo), func Setsid() (int, error) pkg syscall (netbsd-amd64-cgo), func SetsockoptByte(int, int, int, uint8) error pkg syscall (netbsd-amd64-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (netbsd-amd64-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (netbsd-amd64-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (netbsd-amd64-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (netbsd-amd64-cgo), func SetsockoptInt(int, int, int, int) error pkg syscall (netbsd-amd64-cgo), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (netbsd-amd64-cgo), func SetsockoptString(int, int, int, string) error pkg syscall (netbsd-amd64-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (netbsd-amd64-cgo), func Settimeofday(*Timeval) error pkg syscall (netbsd-amd64-cgo), func Setuid(int) error pkg syscall (netbsd-amd64-cgo), func Shutdown(int, int) error pkg syscall (netbsd-amd64-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (netbsd-amd64-cgo), func Socket(int, int, int) (int, error) pkg syscall (netbsd-amd64-cgo), func Socketpair(int, int, int) ([2]int, error) pkg syscall (netbsd-amd64-cgo), func Stat(string, *Stat_t) error pkg syscall (netbsd-amd64-cgo), func StringSlicePtr([]string) []*uint8 pkg syscall (netbsd-amd64-cgo), func Sync() error pkg syscall (netbsd-amd64-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-amd64-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-amd64-cgo), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-amd64-cgo), func Sysctl(string) (string, error) pkg syscall (netbsd-amd64-cgo), func SysctlUint32(string) (uint32, error) pkg syscall (netbsd-amd64-cgo), func TimevalToNsec(Timeval) int64 pkg syscall (netbsd-amd64-cgo), func Truncate(string, int64) error pkg syscall (netbsd-amd64-cgo), func Umask(int) int pkg syscall (netbsd-amd64-cgo), func UnixRights(...int) []uint8 pkg syscall (netbsd-amd64-cgo), func Unmount(string, int) error pkg syscall (netbsd-amd64-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (netbsd-amd64-cgo), func Write(int, []uint8) (int, error) pkg syscall (netbsd-amd64-cgo), method (*Cmsghdr) SetLen(int) pkg syscall (netbsd-amd64-cgo), method (*Iovec) SetLen(int) pkg syscall (netbsd-amd64-cgo), method (*Msghdr) SetControllen(int) pkg syscall (netbsd-amd64-cgo), type BpfHdr struct pkg syscall (netbsd-amd64-cgo), type BpfHdr struct, Caplen uint32 pkg syscall (netbsd-amd64-cgo), type BpfHdr struct, Datalen uint32 pkg syscall (netbsd-amd64-cgo), type BpfHdr struct, Hdrlen uint16 pkg syscall (netbsd-amd64-cgo), type BpfHdr struct, Pad_cgo_0 [6]uint8 pkg syscall (netbsd-amd64-cgo), type BpfHdr struct, Tstamp BpfTimeval pkg syscall (netbsd-amd64-cgo), type BpfInsn struct pkg syscall (netbsd-amd64-cgo), type BpfInsn struct, Code uint16 pkg syscall (netbsd-amd64-cgo), type BpfInsn struct, Jf uint8 pkg syscall (netbsd-amd64-cgo), type BpfInsn struct, Jt uint8 pkg syscall (netbsd-amd64-cgo), type BpfInsn struct, K uint32 pkg syscall (netbsd-amd64-cgo), type BpfProgram struct pkg syscall (netbsd-amd64-cgo), type BpfProgram struct, Insns *BpfInsn pkg syscall (netbsd-amd64-cgo), type BpfProgram struct, Len uint32 pkg syscall (netbsd-amd64-cgo), type BpfProgram struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-amd64-cgo), type BpfStat struct pkg syscall (netbsd-amd64-cgo), type BpfStat struct, Capt uint64 pkg syscall (netbsd-amd64-cgo), type BpfStat struct, Drop uint64 pkg syscall (netbsd-amd64-cgo), type BpfStat struct, Padding [13]uint64 pkg syscall (netbsd-amd64-cgo), type BpfStat struct, Recv uint64 pkg syscall (netbsd-amd64-cgo), type BpfTimeval struct pkg syscall (netbsd-amd64-cgo), type BpfTimeval struct, Sec int64 pkg syscall (netbsd-amd64-cgo), type BpfTimeval struct, Usec int64 pkg syscall (netbsd-amd64-cgo), type BpfVersion struct pkg syscall (netbsd-amd64-cgo), type BpfVersion struct, Major uint16 pkg syscall (netbsd-amd64-cgo), type BpfVersion struct, Minor uint16 pkg syscall (netbsd-amd64-cgo), type Cmsghdr struct pkg syscall (netbsd-amd64-cgo), type Cmsghdr struct, Len uint32 pkg syscall (netbsd-amd64-cgo), type Cmsghdr struct, Level int32 pkg syscall (netbsd-amd64-cgo), type Cmsghdr struct, Type int32 pkg syscall (netbsd-amd64-cgo), type Credential struct pkg syscall (netbsd-amd64-cgo), type Credential struct, Gid uint32 pkg syscall (netbsd-amd64-cgo), type Credential struct, Groups []uint32 pkg syscall (netbsd-amd64-cgo), type Credential struct, Uid uint32 pkg syscall (netbsd-amd64-cgo), type Dirent struct pkg syscall (netbsd-amd64-cgo), type Dirent struct, Fileno uint64 pkg syscall (netbsd-amd64-cgo), type Dirent struct, Name [512]int8 pkg syscall (netbsd-amd64-cgo), type Dirent struct, Namlen uint16 pkg syscall (netbsd-amd64-cgo), type Dirent struct, Pad_cgo_0 [3]uint8 pkg syscall (netbsd-amd64-cgo), type Dirent struct, Reclen uint16 pkg syscall (netbsd-amd64-cgo), type Dirent struct, Type uint8 pkg syscall (netbsd-amd64-cgo), type FdSet struct pkg syscall (netbsd-amd64-cgo), type FdSet struct, Bits [8]uint32 pkg syscall (netbsd-amd64-cgo), type Flock_t struct pkg syscall (netbsd-amd64-cgo), type Flock_t struct, Len int64 pkg syscall (netbsd-amd64-cgo), type Flock_t struct, Pid int32 pkg syscall (netbsd-amd64-cgo), type Flock_t struct, Start int64 pkg syscall (netbsd-amd64-cgo), type Flock_t struct, Type int16 pkg syscall (netbsd-amd64-cgo), type Flock_t struct, Whence int16 pkg syscall (netbsd-amd64-cgo), type Fsid struct pkg syscall (netbsd-amd64-cgo), type Fsid struct, X__fsid_val [2]int32 pkg syscall (netbsd-amd64-cgo), type ICMPv6Filter struct pkg syscall (netbsd-amd64-cgo), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (netbsd-amd64-cgo), type IPv6MTUInfo struct pkg syscall (netbsd-amd64-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (netbsd-amd64-cgo), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (netbsd-amd64-cgo), type IfAnnounceMsghdr struct pkg syscall (netbsd-amd64-cgo), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (netbsd-amd64-cgo), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (netbsd-amd64-cgo), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (netbsd-amd64-cgo), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (netbsd-amd64-cgo), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (netbsd-amd64-cgo), type IfAnnounceMsghdr struct, What uint16 pkg syscall (netbsd-amd64-cgo), type IfData struct pkg syscall (netbsd-amd64-cgo), type IfData struct, Addrlen uint8 pkg syscall (netbsd-amd64-cgo), type IfData struct, Baudrate uint64 pkg syscall (netbsd-amd64-cgo), type IfData struct, Collisions uint64 pkg syscall (netbsd-amd64-cgo), type IfData struct, Hdrlen uint8 pkg syscall (netbsd-amd64-cgo), type IfData struct, Ibytes uint64 pkg syscall (netbsd-amd64-cgo), type IfData struct, Ierrors uint64 pkg syscall (netbsd-amd64-cgo), type IfData struct, Imcasts uint64 pkg syscall (netbsd-amd64-cgo), type IfData struct, Ipackets uint64 pkg syscall (netbsd-amd64-cgo), type IfData struct, Iqdrops uint64 pkg syscall (netbsd-amd64-cgo), type IfData struct, Lastchange Timespec pkg syscall (netbsd-amd64-cgo), type IfData struct, Link_state int32 pkg syscall (netbsd-amd64-cgo), type IfData struct, Metric uint64 pkg syscall (netbsd-amd64-cgo), type IfData struct, Mtu uint64 pkg syscall (netbsd-amd64-cgo), type IfData struct, Noproto uint64 pkg syscall (netbsd-amd64-cgo), type IfData struct, Obytes uint64 pkg syscall (netbsd-amd64-cgo), type IfData struct, Oerrors uint64 pkg syscall (netbsd-amd64-cgo), type IfData struct, Omcasts uint64 pkg syscall (netbsd-amd64-cgo), type IfData struct, Opackets uint64 pkg syscall (netbsd-amd64-cgo), type IfData struct, Pad_cgo_0 [1]uint8 pkg syscall (netbsd-amd64-cgo), type IfData struct, Type uint8 pkg syscall (netbsd-amd64-cgo), type IfMsghdr struct pkg syscall (netbsd-amd64-cgo), type IfMsghdr struct, Addrs int32 pkg syscall (netbsd-amd64-cgo), type IfMsghdr struct, Data IfData pkg syscall (netbsd-amd64-cgo), type IfMsghdr struct, Flags int32 pkg syscall (netbsd-amd64-cgo), type IfMsghdr struct, Index uint16 pkg syscall (netbsd-amd64-cgo), type IfMsghdr struct, Msglen uint16 pkg syscall (netbsd-amd64-cgo), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-amd64-cgo), type IfMsghdr struct, Type uint8 pkg syscall (netbsd-amd64-cgo), type IfMsghdr struct, Version uint8 pkg syscall (netbsd-amd64-cgo), type IfaMsghdr struct pkg syscall (netbsd-amd64-cgo), type IfaMsghdr struct, Addrs int32 pkg syscall (netbsd-amd64-cgo), type IfaMsghdr struct, Flags int32 pkg syscall (netbsd-amd64-cgo), type IfaMsghdr struct, Index uint16 pkg syscall (netbsd-amd64-cgo), type IfaMsghdr struct, Metric int32 pkg syscall (netbsd-amd64-cgo), type IfaMsghdr struct, Msglen uint16 pkg syscall (netbsd-amd64-cgo), type IfaMsghdr struct, Pad_cgo_0 [6]uint8 pkg syscall (netbsd-amd64-cgo), type IfaMsghdr struct, Type uint8 pkg syscall (netbsd-amd64-cgo), type IfaMsghdr struct, Version uint8 pkg syscall (netbsd-amd64-cgo), type Inet6Pktinfo struct pkg syscall (netbsd-amd64-cgo), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (netbsd-amd64-cgo), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (netbsd-amd64-cgo), type InterfaceAddrMessage struct pkg syscall (netbsd-amd64-cgo), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (netbsd-amd64-cgo), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (netbsd-amd64-cgo), type InterfaceAnnounceMessage struct pkg syscall (netbsd-amd64-cgo), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (netbsd-amd64-cgo), type InterfaceMessage struct pkg syscall (netbsd-amd64-cgo), type InterfaceMessage struct, Data []uint8 pkg syscall (netbsd-amd64-cgo), type InterfaceMessage struct, Header IfMsghdr pkg syscall (netbsd-amd64-cgo), type Iovec struct pkg syscall (netbsd-amd64-cgo), type Iovec struct, Base *uint8 pkg syscall (netbsd-amd64-cgo), type Iovec struct, Len uint64 pkg syscall (netbsd-amd64-cgo), type Kevent_t struct pkg syscall (netbsd-amd64-cgo), type Kevent_t struct, Data int64 pkg syscall (netbsd-amd64-cgo), type Kevent_t struct, Fflags uint32 pkg syscall (netbsd-amd64-cgo), type Kevent_t struct, Filter uint32 pkg syscall (netbsd-amd64-cgo), type Kevent_t struct, Flags uint32 pkg syscall (netbsd-amd64-cgo), type Kevent_t struct, Ident uint64 pkg syscall (netbsd-amd64-cgo), type Kevent_t struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-amd64-cgo), type Kevent_t struct, Udata int64 pkg syscall (netbsd-amd64-cgo), type Mclpool [0]uint8 pkg syscall (netbsd-amd64-cgo), type Msghdr struct pkg syscall (netbsd-amd64-cgo), type Msghdr struct, Control *uint8 pkg syscall (netbsd-amd64-cgo), type Msghdr struct, Controllen uint32 pkg syscall (netbsd-amd64-cgo), type Msghdr struct, Flags int32 pkg syscall (netbsd-amd64-cgo), type Msghdr struct, Iov *Iovec pkg syscall (netbsd-amd64-cgo), type Msghdr struct, Iovlen int32 pkg syscall (netbsd-amd64-cgo), type Msghdr struct, Name *uint8 pkg syscall (netbsd-amd64-cgo), type Msghdr struct, Namelen uint32 pkg syscall (netbsd-amd64-cgo), type Msghdr struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-amd64-cgo), type Msghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddr struct, Data [14]int8 pkg syscall (netbsd-amd64-cgo), type RawSockaddr struct, Family uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddr struct, Len uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrDatalink struct pkg syscall (netbsd-amd64-cgo), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrDatalink struct, Data [12]int8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrDatalink struct, Family uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrDatalink struct, Index uint16 pkg syscall (netbsd-amd64-cgo), type RawSockaddrDatalink struct, Len uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrDatalink struct, Type uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrInet4 struct, Family uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrInet4 struct, Len uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrInet6 struct, Family uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrInet6 struct, Len uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrUnix struct pkg syscall (netbsd-amd64-cgo), type RawSockaddrUnix struct, Family uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrUnix struct, Len uint8 pkg syscall (netbsd-amd64-cgo), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (netbsd-amd64-cgo), type Rlimit struct pkg syscall (netbsd-amd64-cgo), type Rlimit struct, Cur uint64 pkg syscall (netbsd-amd64-cgo), type Rlimit struct, Max uint64 pkg syscall (netbsd-amd64-cgo), type RouteMessage struct pkg syscall (netbsd-amd64-cgo), type RouteMessage struct, Data []uint8 pkg syscall (netbsd-amd64-cgo), type RouteMessage struct, Header RtMsghdr pkg syscall (netbsd-amd64-cgo), type RoutingMessage interface, unexported methods pkg syscall (netbsd-amd64-cgo), type RtMetrics struct pkg syscall (netbsd-amd64-cgo), type RtMetrics struct, Expire int64 pkg syscall (netbsd-amd64-cgo), type RtMetrics struct, Hopcount uint64 pkg syscall (netbsd-amd64-cgo), type RtMetrics struct, Locks uint64 pkg syscall (netbsd-amd64-cgo), type RtMetrics struct, Mtu uint64 pkg syscall (netbsd-amd64-cgo), type RtMetrics struct, Pksent int64 pkg syscall (netbsd-amd64-cgo), type RtMetrics struct, Recvpipe uint64 pkg syscall (netbsd-amd64-cgo), type RtMetrics struct, Rtt uint64 pkg syscall (netbsd-amd64-cgo), type RtMetrics struct, Rttvar uint64 pkg syscall (netbsd-amd64-cgo), type RtMetrics struct, Sendpipe uint64 pkg syscall (netbsd-amd64-cgo), type RtMetrics struct, Ssthresh uint64 pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct, Addrs int32 pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct, Errno int32 pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct, Flags int32 pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct, Index uint16 pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct, Inits int32 pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct, Msglen uint16 pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct, Pid int32 pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct, Rmx RtMetrics pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct, Seq int32 pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct, Type uint8 pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct, Use int32 pkg syscall (netbsd-amd64-cgo), type RtMsghdr struct, Version uint8 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Idrss int64 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Inblock int64 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Isrss int64 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Ixrss int64 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Majflt int64 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Maxrss int64 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Minflt int64 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Msgrcv int64 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Msgsnd int64 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Nivcsw int64 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Nsignals int64 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Nswap int64 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Nvcsw int64 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Oublock int64 pkg syscall (netbsd-amd64-cgo), type Rusage struct, Stime Timeval pkg syscall (netbsd-amd64-cgo), type Rusage struct, Utime Timeval pkg syscall (netbsd-amd64-cgo), type SockaddrDatalink struct pkg syscall (netbsd-amd64-cgo), type SockaddrDatalink struct, Alen uint8 pkg syscall (netbsd-amd64-cgo), type SockaddrDatalink struct, Data [12]int8 pkg syscall (netbsd-amd64-cgo), type SockaddrDatalink struct, Family uint8 pkg syscall (netbsd-amd64-cgo), type SockaddrDatalink struct, Index uint16 pkg syscall (netbsd-amd64-cgo), type SockaddrDatalink struct, Len uint8 pkg syscall (netbsd-amd64-cgo), type SockaddrDatalink struct, Nlen uint8 pkg syscall (netbsd-amd64-cgo), type SockaddrDatalink struct, Slen uint8 pkg syscall (netbsd-amd64-cgo), type SockaddrDatalink struct, Type uint8 pkg syscall (netbsd-amd64-cgo), type SocketControlMessage struct pkg syscall (netbsd-amd64-cgo), type SocketControlMessage struct, Data []uint8 pkg syscall (netbsd-amd64-cgo), type SocketControlMessage struct, Header Cmsghdr pkg syscall (netbsd-amd64-cgo), type Stat_t struct pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Atimespec Timespec pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Birthtimespec Timespec pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Blksize uint32 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Blocks int64 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Ctimespec Timespec pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Dev uint64 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Flags uint32 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Gen uint32 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Gid uint32 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Ino uint64 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Mode uint32 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Mtimespec Timespec pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Nlink uint32 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Pad_cgo_2 [4]uint8 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Rdev uint64 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Size int64 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Spare [2]uint32 pkg syscall (netbsd-amd64-cgo), type Stat_t struct, Uid uint32 pkg syscall (netbsd-amd64-cgo), type Statfs_t [0]uint8 pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Chroot string pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Credential *Credential pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Noctty bool pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Ptrace bool pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Setctty bool pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Setpgid bool pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Setsid bool pkg syscall (netbsd-amd64-cgo), type Sysctlnode struct pkg syscall (netbsd-amd64-cgo), type Sysctlnode struct, Flags uint32 pkg syscall (netbsd-amd64-cgo), type Sysctlnode struct, Name [32]int8 pkg syscall (netbsd-amd64-cgo), type Sysctlnode struct, Num int32 pkg syscall (netbsd-amd64-cgo), type Sysctlnode struct, Un [16]uint8 pkg syscall (netbsd-amd64-cgo), type Sysctlnode struct, Ver uint32 pkg syscall (netbsd-amd64-cgo), type Sysctlnode struct, X__rsvd uint32 pkg syscall (netbsd-amd64-cgo), type Sysctlnode struct, X_sysctl_desc [8]uint8 pkg syscall (netbsd-amd64-cgo), type Sysctlnode struct, X_sysctl_func [8]uint8 pkg syscall (netbsd-amd64-cgo), type Sysctlnode struct, X_sysctl_parent [8]uint8 pkg syscall (netbsd-amd64-cgo), type Sysctlnode struct, X_sysctl_size [8]uint8 pkg syscall (netbsd-amd64-cgo), type Timespec struct, Nsec int64 pkg syscall (netbsd-amd64-cgo), type Timespec struct, Sec int64 pkg syscall (netbsd-amd64-cgo), type Timeval struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-amd64-cgo), type Timeval struct, Sec int64 pkg syscall (netbsd-amd64-cgo), type Timeval struct, Usec int32 pkg syscall (netbsd-amd64-cgo), type WaitStatus uint32 pkg syscall (netbsd-amd64-cgo), var Stderr int pkg syscall (netbsd-amd64-cgo), var Stdin int pkg syscall (netbsd-amd64-cgo), var Stdout int pkg syscall (netbsd-arm), const AF_APPLETALK ideal-int pkg syscall (netbsd-arm), const AF_ARP ideal-int pkg syscall (netbsd-arm), const AF_BLUETOOTH ideal-int pkg syscall (netbsd-arm), const AF_CCITT ideal-int pkg syscall (netbsd-arm), const AF_CHAOS ideal-int pkg syscall (netbsd-arm), const AF_CNT ideal-int pkg syscall (netbsd-arm), const AF_COIP ideal-int pkg syscall (netbsd-arm), const AF_DATAKIT ideal-int pkg syscall (netbsd-arm), const AF_DECnet ideal-int pkg syscall (netbsd-arm), const AF_DLI ideal-int pkg syscall (netbsd-arm), const AF_E164 ideal-int pkg syscall (netbsd-arm), const AF_ECMA ideal-int pkg syscall (netbsd-arm), const AF_HYLINK ideal-int pkg syscall (netbsd-arm), const AF_IEEE80211 ideal-int pkg syscall (netbsd-arm), const AF_IMPLINK ideal-int pkg syscall (netbsd-arm), const AF_IPX ideal-int pkg syscall (netbsd-arm), const AF_ISDN ideal-int pkg syscall (netbsd-arm), const AF_ISO ideal-int pkg syscall (netbsd-arm), const AF_LAT ideal-int pkg syscall (netbsd-arm), const AF_LINK ideal-int pkg syscall (netbsd-arm), const AF_LOCAL ideal-int pkg syscall (netbsd-arm), const AF_MAX ideal-int pkg syscall (netbsd-arm), const AF_MPLS ideal-int pkg syscall (netbsd-arm), const AF_NATM ideal-int pkg syscall (netbsd-arm), const AF_NS ideal-int pkg syscall (netbsd-arm), const AF_OROUTE ideal-int pkg syscall (netbsd-arm), const AF_OSI ideal-int pkg syscall (netbsd-arm), const AF_PUP ideal-int pkg syscall (netbsd-arm), const AF_ROUTE ideal-int pkg syscall (netbsd-arm), const AF_SNA ideal-int pkg syscall (netbsd-arm), const ARPHRD_ARCNET ideal-int pkg syscall (netbsd-arm), const ARPHRD_ETHER ideal-int pkg syscall (netbsd-arm), const ARPHRD_FRELAY ideal-int pkg syscall (netbsd-arm), const ARPHRD_IEEE1394 ideal-int pkg syscall (netbsd-arm), const ARPHRD_IEEE802 ideal-int pkg syscall (netbsd-arm), const ARPHRD_STRIP ideal-int pkg syscall (netbsd-arm), const B0 ideal-int pkg syscall (netbsd-arm), const B110 ideal-int pkg syscall (netbsd-arm), const B115200 ideal-int pkg syscall (netbsd-arm), const B1200 ideal-int pkg syscall (netbsd-arm), const B134 ideal-int pkg syscall (netbsd-arm), const B14400 ideal-int pkg syscall (netbsd-arm), const B150 ideal-int pkg syscall (netbsd-arm), const B1800 ideal-int pkg syscall (netbsd-arm), const B19200 ideal-int pkg syscall (netbsd-arm), const B200 ideal-int pkg syscall (netbsd-arm), const B230400 ideal-int pkg syscall (netbsd-arm), const B2400 ideal-int pkg syscall (netbsd-arm), const B28800 ideal-int pkg syscall (netbsd-arm), const B300 ideal-int pkg syscall (netbsd-arm), const B38400 ideal-int pkg syscall (netbsd-arm), const B460800 ideal-int pkg syscall (netbsd-arm), const B4800 ideal-int pkg syscall (netbsd-arm), const B50 ideal-int pkg syscall (netbsd-arm), const B57600 ideal-int pkg syscall (netbsd-arm), const B600 ideal-int pkg syscall (netbsd-arm), const B7200 ideal-int pkg syscall (netbsd-arm), const B75 ideal-int pkg syscall (netbsd-arm), const B76800 ideal-int pkg syscall (netbsd-arm), const B921600 ideal-int pkg syscall (netbsd-arm), const B9600 ideal-int pkg syscall (netbsd-arm), const BIOCFEEDBACK ideal-int pkg syscall (netbsd-arm), const BIOCFLUSH ideal-int pkg syscall (netbsd-arm), const BIOCGBLEN ideal-int pkg syscall (netbsd-arm), const BIOCGDLT ideal-int pkg syscall (netbsd-arm), const BIOCGDLTLIST ideal-int pkg syscall (netbsd-arm), const BIOCGETIF ideal-int pkg syscall (netbsd-arm), const BIOCGFEEDBACK ideal-int pkg syscall (netbsd-arm), const BIOCGHDRCMPLT ideal-int pkg syscall (netbsd-arm), const BIOCGRTIMEOUT ideal-int pkg syscall (netbsd-arm), const BIOCGSEESENT ideal-int pkg syscall (netbsd-arm), const BIOCGSTATS ideal-int pkg syscall (netbsd-arm), const BIOCGSTATSOLD ideal-int pkg syscall (netbsd-arm), const BIOCIMMEDIATE ideal-int pkg syscall (netbsd-arm), const BIOCPROMISC ideal-int pkg syscall (netbsd-arm), const BIOCSBLEN ideal-int pkg syscall (netbsd-arm), const BIOCSDLT ideal-int pkg syscall (netbsd-arm), const BIOCSETF ideal-int pkg syscall (netbsd-arm), const BIOCSETIF ideal-int pkg syscall (netbsd-arm), const BIOCSFEEDBACK ideal-int pkg syscall (netbsd-arm), const BIOCSHDRCMPLT ideal-int pkg syscall (netbsd-arm), const BIOCSRTIMEOUT ideal-int pkg syscall (netbsd-arm), const BIOCSSEESENT ideal-int pkg syscall (netbsd-arm), const BIOCSTCPF ideal-int pkg syscall (netbsd-arm), const BIOCSUDPF ideal-int pkg syscall (netbsd-arm), const BIOCVERSION ideal-int pkg syscall (netbsd-arm), const BPF_A ideal-int pkg syscall (netbsd-arm), const BPF_ABS ideal-int pkg syscall (netbsd-arm), const BPF_ADD ideal-int pkg syscall (netbsd-arm), const BPF_ALIGNMENT ideal-int pkg syscall (netbsd-arm), const BPF_ALIGNMENT32 ideal-int pkg syscall (netbsd-arm), const BPF_ALU ideal-int pkg syscall (netbsd-arm), const BPF_AND ideal-int pkg syscall (netbsd-arm), const BPF_B ideal-int pkg syscall (netbsd-arm), const BPF_DFLTBUFSIZE ideal-int pkg syscall (netbsd-arm), const BPF_DIV ideal-int pkg syscall (netbsd-arm), const BPF_H ideal-int pkg syscall (netbsd-arm), const BPF_IMM ideal-int pkg syscall (netbsd-arm), const BPF_IND ideal-int pkg syscall (netbsd-arm), const BPF_JA ideal-int pkg syscall (netbsd-arm), const BPF_JEQ ideal-int pkg syscall (netbsd-arm), const BPF_JGE ideal-int pkg syscall (netbsd-arm), const BPF_JGT ideal-int pkg syscall (netbsd-arm), const BPF_JMP ideal-int pkg syscall (netbsd-arm), const BPF_JSET ideal-int pkg syscall (netbsd-arm), const BPF_K ideal-int pkg syscall (netbsd-arm), const BPF_LD ideal-int pkg syscall (netbsd-arm), const BPF_LDX ideal-int pkg syscall (netbsd-arm), const BPF_LEN ideal-int pkg syscall (netbsd-arm), const BPF_LSH ideal-int pkg syscall (netbsd-arm), const BPF_MAJOR_VERSION ideal-int pkg syscall (netbsd-arm), const BPF_MAXBUFSIZE ideal-int pkg syscall (netbsd-arm), const BPF_MAXINSNS ideal-int pkg syscall (netbsd-arm), const BPF_MEM ideal-int pkg syscall (netbsd-arm), const BPF_MEMWORDS ideal-int pkg syscall (netbsd-arm), const BPF_MINBUFSIZE ideal-int pkg syscall (netbsd-arm), const BPF_MINOR_VERSION ideal-int pkg syscall (netbsd-arm), const BPF_MISC ideal-int pkg syscall (netbsd-arm), const BPF_MSH ideal-int pkg syscall (netbsd-arm), const BPF_MUL ideal-int pkg syscall (netbsd-arm), const BPF_NEG ideal-int pkg syscall (netbsd-arm), const BPF_OR ideal-int pkg syscall (netbsd-arm), const BPF_RELEASE ideal-int pkg syscall (netbsd-arm), const BPF_RET ideal-int pkg syscall (netbsd-arm), const BPF_RSH ideal-int pkg syscall (netbsd-arm), const BPF_ST ideal-int pkg syscall (netbsd-arm), const BPF_STX ideal-int pkg syscall (netbsd-arm), const BPF_SUB ideal-int pkg syscall (netbsd-arm), const BPF_TAX ideal-int pkg syscall (netbsd-arm), const BPF_TXA ideal-int pkg syscall (netbsd-arm), const BPF_W ideal-int pkg syscall (netbsd-arm), const BPF_X ideal-int pkg syscall (netbsd-arm), const BRKINT ideal-int pkg syscall (netbsd-arm), const CFLUSH ideal-int pkg syscall (netbsd-arm), const CLOCAL ideal-int pkg syscall (netbsd-arm), const CREAD ideal-int pkg syscall (netbsd-arm), const CS5 ideal-int pkg syscall (netbsd-arm), const CS6 ideal-int pkg syscall (netbsd-arm), const CS7 ideal-int pkg syscall (netbsd-arm), const CS8 ideal-int pkg syscall (netbsd-arm), const CSIZE ideal-int pkg syscall (netbsd-arm), const CSTART ideal-int pkg syscall (netbsd-arm), const CSTATUS ideal-int pkg syscall (netbsd-arm), const CSTOP ideal-int pkg syscall (netbsd-arm), const CSTOPB ideal-int pkg syscall (netbsd-arm), const CSUSP ideal-int pkg syscall (netbsd-arm), const CTL_MAXNAME ideal-int pkg syscall (netbsd-arm), const CTL_NET ideal-int pkg syscall (netbsd-arm), const CTL_QUERY ideal-int pkg syscall (netbsd-arm), const DIOCBSFLUSH ideal-int pkg syscall (netbsd-arm), const DLT_A429 ideal-int pkg syscall (netbsd-arm), const DLT_A653_ICM ideal-int pkg syscall (netbsd-arm), const DLT_AIRONET_HEADER ideal-int pkg syscall (netbsd-arm), const DLT_AOS ideal-int pkg syscall (netbsd-arm), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (netbsd-arm), const DLT_ARCNET ideal-int pkg syscall (netbsd-arm), const DLT_ARCNET_LINUX ideal-int pkg syscall (netbsd-arm), const DLT_ATM_CLIP ideal-int pkg syscall (netbsd-arm), const DLT_ATM_RFC1483 ideal-int pkg syscall (netbsd-arm), const DLT_AURORA ideal-int pkg syscall (netbsd-arm), const DLT_AX25 ideal-int pkg syscall (netbsd-arm), const DLT_AX25_KISS ideal-int pkg syscall (netbsd-arm), const DLT_BACNET_MS_TP ideal-int pkg syscall (netbsd-arm), const DLT_BLUETOOTH_HCI_H4 ideal-int pkg syscall (netbsd-arm), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int pkg syscall (netbsd-arm), const DLT_CAN20B ideal-int pkg syscall (netbsd-arm), const DLT_CAN_SOCKETCAN ideal-int pkg syscall (netbsd-arm), const DLT_CHAOS ideal-int pkg syscall (netbsd-arm), const DLT_CISCO_IOS ideal-int pkg syscall (netbsd-arm), const DLT_C_HDLC ideal-int pkg syscall (netbsd-arm), const DLT_C_HDLC_WITH_DIR ideal-int pkg syscall (netbsd-arm), const DLT_DECT ideal-int pkg syscall (netbsd-arm), const DLT_DOCSIS ideal-int pkg syscall (netbsd-arm), const DLT_ECONET ideal-int pkg syscall (netbsd-arm), const DLT_EN10MB ideal-int pkg syscall (netbsd-arm), const DLT_EN3MB ideal-int pkg syscall (netbsd-arm), const DLT_ENC ideal-int pkg syscall (netbsd-arm), const DLT_ERF ideal-int pkg syscall (netbsd-arm), const DLT_ERF_ETH ideal-int pkg syscall (netbsd-arm), const DLT_ERF_POS ideal-int pkg syscall (netbsd-arm), const DLT_FC_2 ideal-int pkg syscall (netbsd-arm), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int pkg syscall (netbsd-arm), const DLT_FDDI ideal-int pkg syscall (netbsd-arm), const DLT_FLEXRAY ideal-int pkg syscall (netbsd-arm), const DLT_FRELAY ideal-int pkg syscall (netbsd-arm), const DLT_FRELAY_WITH_DIR ideal-int pkg syscall (netbsd-arm), const DLT_GCOM_SERIAL ideal-int pkg syscall (netbsd-arm), const DLT_GCOM_T1E1 ideal-int pkg syscall (netbsd-arm), const DLT_GPF_F ideal-int pkg syscall (netbsd-arm), const DLT_GPF_T ideal-int pkg syscall (netbsd-arm), const DLT_GPRS_LLC ideal-int pkg syscall (netbsd-arm), const DLT_GSMTAP_ABIS ideal-int pkg syscall (netbsd-arm), const DLT_GSMTAP_UM ideal-int pkg syscall (netbsd-arm), const DLT_HDLC ideal-int pkg syscall (netbsd-arm), const DLT_HHDLC ideal-int pkg syscall (netbsd-arm), const DLT_HIPPI ideal-int pkg syscall (netbsd-arm), const DLT_IBM_SN ideal-int pkg syscall (netbsd-arm), const DLT_IBM_SP ideal-int pkg syscall (netbsd-arm), const DLT_IEEE802 ideal-int pkg syscall (netbsd-arm), const DLT_IEEE802_11 ideal-int pkg syscall (netbsd-arm), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (netbsd-arm), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (netbsd-arm), const DLT_IEEE802_15_4 ideal-int pkg syscall (netbsd-arm), const DLT_IEEE802_15_4_LINUX ideal-int pkg syscall (netbsd-arm), const DLT_IEEE802_15_4_NONASK_PHY ideal-int pkg syscall (netbsd-arm), const DLT_IEEE802_16_MAC_CPS ideal-int pkg syscall (netbsd-arm), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int pkg syscall (netbsd-arm), const DLT_IPMB ideal-int pkg syscall (netbsd-arm), const DLT_IPMB_LINUX ideal-int pkg syscall (netbsd-arm), const DLT_IPNET ideal-int pkg syscall (netbsd-arm), const DLT_IPV4 ideal-int pkg syscall (netbsd-arm), const DLT_IPV6 ideal-int pkg syscall (netbsd-arm), const DLT_IP_OVER_FC ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_ATM1 ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_ATM2 ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_CHDLC ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_ES ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_ETHER ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_FRELAY ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_GGSN ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_ISM ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_MFR ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_MLFR ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_MLPPP ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_MONITOR ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_PIC_PEER ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_PPP ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_PPPOE ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_PPPOE_ATM ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_SERVICES ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_ST ideal-int pkg syscall (netbsd-arm), const DLT_JUNIPER_VP ideal-int pkg syscall (netbsd-arm), const DLT_LAPB_WITH_DIR ideal-int pkg syscall (netbsd-arm), const DLT_LAPD ideal-int pkg syscall (netbsd-arm), const DLT_LIN ideal-int pkg syscall (netbsd-arm), const DLT_LINUX_EVDEV ideal-int pkg syscall (netbsd-arm), const DLT_LINUX_IRDA ideal-int pkg syscall (netbsd-arm), const DLT_LINUX_LAPD ideal-int pkg syscall (netbsd-arm), const DLT_LINUX_SLL ideal-int pkg syscall (netbsd-arm), const DLT_LOOP ideal-int pkg syscall (netbsd-arm), const DLT_LTALK ideal-int pkg syscall (netbsd-arm), const DLT_MFR ideal-int pkg syscall (netbsd-arm), const DLT_MOST ideal-int pkg syscall (netbsd-arm), const DLT_MPLS ideal-int pkg syscall (netbsd-arm), const DLT_MTP2 ideal-int pkg syscall (netbsd-arm), const DLT_MTP2_WITH_PHDR ideal-int pkg syscall (netbsd-arm), const DLT_MTP3 ideal-int pkg syscall (netbsd-arm), const DLT_NULL ideal-int pkg syscall (netbsd-arm), const DLT_PCI_EXP ideal-int pkg syscall (netbsd-arm), const DLT_PFLOG ideal-int pkg syscall (netbsd-arm), const DLT_PFSYNC ideal-int pkg syscall (netbsd-arm), const DLT_PPI ideal-int pkg syscall (netbsd-arm), const DLT_PPP ideal-int pkg syscall (netbsd-arm), const DLT_PPP_BSDOS ideal-int pkg syscall (netbsd-arm), const DLT_PPP_ETHER ideal-int pkg syscall (netbsd-arm), const DLT_PPP_PPPD ideal-int pkg syscall (netbsd-arm), const DLT_PPP_SERIAL ideal-int pkg syscall (netbsd-arm), const DLT_PPP_WITH_DIR ideal-int pkg syscall (netbsd-arm), const DLT_PRISM_HEADER ideal-int pkg syscall (netbsd-arm), const DLT_PRONET ideal-int pkg syscall (netbsd-arm), const DLT_RAIF1 ideal-int pkg syscall (netbsd-arm), const DLT_RAW ideal-int pkg syscall (netbsd-arm), const DLT_RAWAF_MASK ideal-int pkg syscall (netbsd-arm), const DLT_RIO ideal-int pkg syscall (netbsd-arm), const DLT_SCCP ideal-int pkg syscall (netbsd-arm), const DLT_SITA ideal-int pkg syscall (netbsd-arm), const DLT_SLIP ideal-int pkg syscall (netbsd-arm), const DLT_SLIP_BSDOS ideal-int pkg syscall (netbsd-arm), const DLT_SUNATM ideal-int pkg syscall (netbsd-arm), const DLT_SYMANTEC_FIREWALL ideal-int pkg syscall (netbsd-arm), const DLT_TZSP ideal-int pkg syscall (netbsd-arm), const DLT_USB ideal-int pkg syscall (netbsd-arm), const DLT_USB_LINUX ideal-int pkg syscall (netbsd-arm), const DLT_USB_LINUX_MMAPPED ideal-int pkg syscall (netbsd-arm), const DLT_WIHART ideal-int pkg syscall (netbsd-arm), const DLT_X2E_SERIAL ideal-int pkg syscall (netbsd-arm), const DLT_X2E_XORAYA ideal-int pkg syscall (netbsd-arm), const DT_BLK ideal-int pkg syscall (netbsd-arm), const DT_CHR ideal-int pkg syscall (netbsd-arm), const DT_DIR ideal-int pkg syscall (netbsd-arm), const DT_FIFO ideal-int pkg syscall (netbsd-arm), const DT_LNK ideal-int pkg syscall (netbsd-arm), const DT_REG ideal-int pkg syscall (netbsd-arm), const DT_SOCK ideal-int pkg syscall (netbsd-arm), const DT_UNKNOWN ideal-int pkg syscall (netbsd-arm), const DT_WHT ideal-int pkg syscall (netbsd-arm), const EAUTH Errno pkg syscall (netbsd-arm), const EBADMSG Errno pkg syscall (netbsd-arm), const EBADRPC Errno pkg syscall (netbsd-arm), const ECHO ideal-int pkg syscall (netbsd-arm), const ECHOCTL ideal-int pkg syscall (netbsd-arm), const ECHOE ideal-int pkg syscall (netbsd-arm), const ECHOK ideal-int pkg syscall (netbsd-arm), const ECHOKE ideal-int pkg syscall (netbsd-arm), const ECHONL ideal-int pkg syscall (netbsd-arm), const ECHOPRT ideal-int pkg syscall (netbsd-arm), const EFTYPE Errno pkg syscall (netbsd-arm), const ELAST Errno pkg syscall (netbsd-arm), const EMULTIHOP Errno pkg syscall (netbsd-arm), const EMUL_LINUX ideal-int pkg syscall (netbsd-arm), const EMUL_LINUX32 ideal-int pkg syscall (netbsd-arm), const EMUL_MAXID ideal-int pkg syscall (netbsd-arm), const ENEEDAUTH Errno pkg syscall (netbsd-arm), const ENOATTR Errno pkg syscall (netbsd-arm), const ENODATA Errno pkg syscall (netbsd-arm), const ENOLINK Errno pkg syscall (netbsd-arm), const ENOSR Errno pkg syscall (netbsd-arm), const ENOSTR Errno pkg syscall (netbsd-arm), const EPROCLIM Errno pkg syscall (netbsd-arm), const EPROCUNAVAIL Errno pkg syscall (netbsd-arm), const EPROGMISMATCH Errno pkg syscall (netbsd-arm), const EPROGUNAVAIL Errno pkg syscall (netbsd-arm), const EPROTO Errno pkg syscall (netbsd-arm), const ERPCMISMATCH Errno pkg syscall (netbsd-arm), const ETHERCAP_JUMBO_MTU ideal-int pkg syscall (netbsd-arm), const ETHERCAP_VLAN_HWTAGGING ideal-int pkg syscall (netbsd-arm), const ETHERCAP_VLAN_MTU ideal-int pkg syscall (netbsd-arm), const ETHERMIN ideal-int pkg syscall (netbsd-arm), const ETHERMTU ideal-int pkg syscall (netbsd-arm), const ETHERMTU_JUMBO ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_8023 ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_AARP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_ACCTON ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_AEONIC ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_ALPHA ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_AMBER ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_AMOEBA ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_APOLLO ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_APOLLODOMAIN ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_APPLETALK ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_APPLITEK ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_ARGONAUT ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_ARP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_AT ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_ATALK ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_ATOMIC ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_ATT ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_ATTSTANFORD ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_AUTOPHON ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_AXIS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_BCLOOP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_BOFL ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_CABLETRON ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_CHAOS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_COMDESIGN ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_COMPUGRAPHIC ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_COUNTERPOINT ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_CRONUS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_CRONUSVLN ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DCA ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DDE ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DEBNI ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DECAM ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DECCUST ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DECDIAG ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DECDNS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DECDTS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DECEXPER ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DECLAST ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DECLTM ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DECMUMPS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DECNETBIOS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DELTACON ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DIDDLE ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DLOG1 ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DLOG2 ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DN ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DOGFIGHT ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_DSMD ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_ECMA ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_ENCRYPT ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_ES ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_EXCELAN ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_EXPERDATA ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_FLIP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_FLOWCONTROL ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_FRARP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_GENDYN ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_HAYES ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_HIPPI_FP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_HITACHI ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_HP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_IEEEPUP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_IEEEPUPAT ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_IMLBL ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_IMLBLDIAG ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_IP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_IPAS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_IPV6 ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_IPX ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_IPXNEW ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_KALPANA ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_LANBRIDGE ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_LANPROBE ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_LAT ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_LBACK ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_LITTLE ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_LOGICRAFT ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_LOOPBACK ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_MATRA ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_MAX ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_MERIT ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_MICP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_MOPDL ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_MOPRC ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_MOTOROLA ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_MPLS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_MPLS_MCAST ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_MUMPS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBPCC ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBPCLAIM ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBPCLREQ ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBPCLRSP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBPCREQ ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBPCRSP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBPDG ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBPDGB ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBPDLTE ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBPRAR ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBPRAS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBPRST ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBPSCD ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBPVCD ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NBS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NCD ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NESTAR ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NETBEUI ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NOVELL ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NSAT ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NSCOMPAT ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_NTRAILER ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_OS9 ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_OS9NET ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_PACER ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_PAE ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_PCS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_PLANNING ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_PPP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_PPPOE ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_PPPOEDISC ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_PRIMENTS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_PUP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_PUPAT ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_RACAL ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_RATIONAL ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_RAWFR ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_RCL ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_RDP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_RETIX ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_REVARP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SCA ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SECTRA ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SECUREDATA ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SGITW ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SG_BOUNCE ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SG_DIAG ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SG_NETGAMES ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SG_RESV ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SIMNET ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SLOWPROTOCOLS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SNA ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SNMP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SONIX ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SPIDER ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_SPRITE ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_STP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_TALARIS ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_TALARISMC ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_TCPCOMP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_TCPSM ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_TEC ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_TIGAN ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_TRAIL ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_TRANSETHER ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_TYMSHARE ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_UBBST ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_UBDEBUG ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_UBDIAGLOOP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_UBDL ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_UBNIU ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_UBNMC ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_VALID ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_VARIAN ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_VAXELN ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_VEECO ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_VEXP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_VGLAB ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_VINES ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_VINESECHO ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_VINESLOOP ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_VITAL ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_VLAN ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_VLTLMAN ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_VPROD ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_VURESERVED ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_WATERLOO ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_WELLFLEET ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_X25 ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_X75 ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_XNSSM ideal-int pkg syscall (netbsd-arm), const ETHERTYPE_XTP ideal-int pkg syscall (netbsd-arm), const ETHER_ADDR_LEN ideal-int pkg syscall (netbsd-arm), const ETHER_CRC_LEN ideal-int pkg syscall (netbsd-arm), const ETHER_CRC_POLY_BE ideal-int pkg syscall (netbsd-arm), const ETHER_CRC_POLY_LE ideal-int pkg syscall (netbsd-arm), const ETHER_HDR_LEN ideal-int pkg syscall (netbsd-arm), const ETHER_MAX_LEN ideal-int pkg syscall (netbsd-arm), const ETHER_MAX_LEN_JUMBO ideal-int pkg syscall (netbsd-arm), const ETHER_MIN_LEN ideal-int pkg syscall (netbsd-arm), const ETHER_PPPOE_ENCAP_LEN ideal-int pkg syscall (netbsd-arm), const ETHER_TYPE_LEN ideal-int pkg syscall (netbsd-arm), const ETHER_VLAN_ENCAP_LEN ideal-int pkg syscall (netbsd-arm), const ETIME Errno pkg syscall (netbsd-arm), const EVFILT_AIO ideal-int pkg syscall (netbsd-arm), const EVFILT_PROC ideal-int pkg syscall (netbsd-arm), const EVFILT_READ ideal-int pkg syscall (netbsd-arm), const EVFILT_SIGNAL ideal-int pkg syscall (netbsd-arm), const EVFILT_SYSCOUNT ideal-int pkg syscall (netbsd-arm), const EVFILT_TIMER ideal-int pkg syscall (netbsd-arm), const EVFILT_VNODE ideal-int pkg syscall (netbsd-arm), const EVFILT_WRITE ideal-int pkg syscall (netbsd-arm), const EV_ADD ideal-int pkg syscall (netbsd-arm), const EV_CLEAR ideal-int pkg syscall (netbsd-arm), const EV_DELETE ideal-int pkg syscall (netbsd-arm), const EV_DISABLE ideal-int pkg syscall (netbsd-arm), const EV_ENABLE ideal-int pkg syscall (netbsd-arm), const EV_EOF ideal-int pkg syscall (netbsd-arm), const EV_ERROR ideal-int pkg syscall (netbsd-arm), const EV_FLAG1 ideal-int pkg syscall (netbsd-arm), const EV_ONESHOT ideal-int pkg syscall (netbsd-arm), const EV_SYSFLAGS ideal-int pkg syscall (netbsd-arm), const EXTA ideal-int pkg syscall (netbsd-arm), const EXTB ideal-int pkg syscall (netbsd-arm), const EXTPROC ideal-int pkg syscall (netbsd-arm), const FD_CLOEXEC ideal-int pkg syscall (netbsd-arm), const FD_SETSIZE ideal-int pkg syscall (netbsd-arm), const FLUSHO ideal-int pkg syscall (netbsd-arm), const F_CLOSEM ideal-int pkg syscall (netbsd-arm), const F_DUPFD ideal-int pkg syscall (netbsd-arm), const F_DUPFD_CLOEXEC ideal-int pkg syscall (netbsd-arm), const F_FSCTL ideal-int pkg syscall (netbsd-arm), const F_FSDIRMASK ideal-int pkg syscall (netbsd-arm), const F_FSIN ideal-int pkg syscall (netbsd-arm), const F_FSINOUT ideal-int pkg syscall (netbsd-arm), const F_FSOUT ideal-int pkg syscall (netbsd-arm), const F_FSPRIV ideal-int pkg syscall (netbsd-arm), const F_FSVOID ideal-int pkg syscall (netbsd-arm), const F_GETFD ideal-int pkg syscall (netbsd-arm), const F_GETFL ideal-int pkg syscall (netbsd-arm), const F_GETLK ideal-int pkg syscall (netbsd-arm), const F_GETNOSIGPIPE ideal-int pkg syscall (netbsd-arm), const F_GETOWN ideal-int pkg syscall (netbsd-arm), const F_MAXFD ideal-int pkg syscall (netbsd-arm), const F_OK ideal-int pkg syscall (netbsd-arm), const F_PARAM_MASK ideal-int pkg syscall (netbsd-arm), const F_PARAM_MAX ideal-int pkg syscall (netbsd-arm), const F_RDLCK ideal-int pkg syscall (netbsd-arm), const F_SETFD ideal-int pkg syscall (netbsd-arm), const F_SETFL ideal-int pkg syscall (netbsd-arm), const F_SETLK ideal-int pkg syscall (netbsd-arm), const F_SETLKW ideal-int pkg syscall (netbsd-arm), const F_SETNOSIGPIPE ideal-int pkg syscall (netbsd-arm), const F_SETOWN ideal-int pkg syscall (netbsd-arm), const F_UNLCK ideal-int pkg syscall (netbsd-arm), const F_WRLCK ideal-int pkg syscall (netbsd-arm), const HUPCL ideal-int pkg syscall (netbsd-arm), const ICANON ideal-int pkg syscall (netbsd-arm), const ICMP6_FILTER = 18 pkg syscall (netbsd-arm), const ICMP6_FILTER ideal-int pkg syscall (netbsd-arm), const ICRNL ideal-int pkg syscall (netbsd-arm), const IEXTEN ideal-int pkg syscall (netbsd-arm), const IFAN_ARRIVAL ideal-int pkg syscall (netbsd-arm), const IFAN_DEPARTURE ideal-int pkg syscall (netbsd-arm), const IFA_ROUTE ideal-int pkg syscall (netbsd-arm), const IFF_ALLMULTI ideal-int pkg syscall (netbsd-arm), const IFF_CANTCHANGE ideal-int pkg syscall (netbsd-arm), const IFF_DEBUG ideal-int pkg syscall (netbsd-arm), const IFF_LINK0 ideal-int pkg syscall (netbsd-arm), const IFF_LINK1 ideal-int pkg syscall (netbsd-arm), const IFF_LINK2 ideal-int pkg syscall (netbsd-arm), const IFF_NOARP ideal-int pkg syscall (netbsd-arm), const IFF_NOTRAILERS ideal-int pkg syscall (netbsd-arm), const IFF_OACTIVE ideal-int pkg syscall (netbsd-arm), const IFF_POINTOPOINT ideal-int pkg syscall (netbsd-arm), const IFF_PROMISC ideal-int pkg syscall (netbsd-arm), const IFF_RUNNING ideal-int pkg syscall (netbsd-arm), const IFF_SIMPLEX ideal-int pkg syscall (netbsd-arm), const IFNAMSIZ ideal-int pkg syscall (netbsd-arm), const IFT_1822 ideal-int pkg syscall (netbsd-arm), const IFT_A12MPPSWITCH ideal-int pkg syscall (netbsd-arm), const IFT_AAL2 ideal-int pkg syscall (netbsd-arm), const IFT_AAL5 ideal-int pkg syscall (netbsd-arm), const IFT_ADSL ideal-int pkg syscall (netbsd-arm), const IFT_AFLANE8023 ideal-int pkg syscall (netbsd-arm), const IFT_AFLANE8025 ideal-int pkg syscall (netbsd-arm), const IFT_ARAP ideal-int pkg syscall (netbsd-arm), const IFT_ARCNET ideal-int pkg syscall (netbsd-arm), const IFT_ARCNETPLUS ideal-int pkg syscall (netbsd-arm), const IFT_ASYNC ideal-int pkg syscall (netbsd-arm), const IFT_ATM ideal-int pkg syscall (netbsd-arm), const IFT_ATMDXI ideal-int pkg syscall (netbsd-arm), const IFT_ATMFUNI ideal-int pkg syscall (netbsd-arm), const IFT_ATMIMA ideal-int pkg syscall (netbsd-arm), const IFT_ATMLOGICAL ideal-int pkg syscall (netbsd-arm), const IFT_ATMRADIO ideal-int pkg syscall (netbsd-arm), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (netbsd-arm), const IFT_ATMVCIENDPT ideal-int pkg syscall (netbsd-arm), const IFT_ATMVIRTUAL ideal-int pkg syscall (netbsd-arm), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (netbsd-arm), const IFT_BRIDGE ideal-int pkg syscall (netbsd-arm), const IFT_BSC ideal-int pkg syscall (netbsd-arm), const IFT_CARP ideal-int pkg syscall (netbsd-arm), const IFT_CCTEMUL ideal-int pkg syscall (netbsd-arm), const IFT_CEPT ideal-int pkg syscall (netbsd-arm), const IFT_CES ideal-int pkg syscall (netbsd-arm), const IFT_CHANNEL ideal-int pkg syscall (netbsd-arm), const IFT_CNR ideal-int pkg syscall (netbsd-arm), const IFT_COFFEE ideal-int pkg syscall (netbsd-arm), const IFT_COMPOSITELINK ideal-int pkg syscall (netbsd-arm), const IFT_DCN ideal-int pkg syscall (netbsd-arm), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (netbsd-arm), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (netbsd-arm), const IFT_DLSW ideal-int pkg syscall (netbsd-arm), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (netbsd-arm), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (netbsd-arm), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (netbsd-arm), const IFT_DOCSCABLEUPSTREAMCHANNEL ideal-int pkg syscall (netbsd-arm), const IFT_DS0 ideal-int pkg syscall (netbsd-arm), const IFT_DS0BUNDLE ideal-int pkg syscall (netbsd-arm), const IFT_DS1FDL ideal-int pkg syscall (netbsd-arm), const IFT_DS3 ideal-int pkg syscall (netbsd-arm), const IFT_DTM ideal-int pkg syscall (netbsd-arm), const IFT_DVBASILN ideal-int pkg syscall (netbsd-arm), const IFT_DVBASIOUT ideal-int pkg syscall (netbsd-arm), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (netbsd-arm), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (netbsd-arm), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (netbsd-arm), const IFT_ECONET ideal-int pkg syscall (netbsd-arm), const IFT_EON ideal-int pkg syscall (netbsd-arm), const IFT_EPLRS ideal-int pkg syscall (netbsd-arm), const IFT_ESCON ideal-int pkg syscall (netbsd-arm), const IFT_ETHER ideal-int pkg syscall (netbsd-arm), const IFT_FAITH ideal-int pkg syscall (netbsd-arm), const IFT_FAST ideal-int pkg syscall (netbsd-arm), const IFT_FASTETHER ideal-int pkg syscall (netbsd-arm), const IFT_FASTETHERFX ideal-int pkg syscall (netbsd-arm), const IFT_FDDI ideal-int pkg syscall (netbsd-arm), const IFT_FIBRECHANNEL ideal-int pkg syscall (netbsd-arm), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (netbsd-arm), const IFT_FRAMERELAYMPI ideal-int pkg syscall (netbsd-arm), const IFT_FRDLCIENDPT ideal-int pkg syscall (netbsd-arm), const IFT_FRELAY ideal-int pkg syscall (netbsd-arm), const IFT_FRELAYDCE ideal-int pkg syscall (netbsd-arm), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (netbsd-arm), const IFT_FRFORWARD ideal-int pkg syscall (netbsd-arm), const IFT_G703AT2MB ideal-int pkg syscall (netbsd-arm), const IFT_G703AT64K ideal-int pkg syscall (netbsd-arm), const IFT_GIF ideal-int pkg syscall (netbsd-arm), const IFT_GIGABITETHERNET ideal-int pkg syscall (netbsd-arm), const IFT_GR303IDT ideal-int pkg syscall (netbsd-arm), const IFT_GR303RDT ideal-int pkg syscall (netbsd-arm), const IFT_H323GATEKEEPER ideal-int pkg syscall (netbsd-arm), const IFT_H323PROXY ideal-int pkg syscall (netbsd-arm), const IFT_HDH1822 ideal-int pkg syscall (netbsd-arm), const IFT_HDLC ideal-int pkg syscall (netbsd-arm), const IFT_HDSL2 ideal-int pkg syscall (netbsd-arm), const IFT_HIPERLAN2 ideal-int pkg syscall (netbsd-arm), const IFT_HIPPI ideal-int pkg syscall (netbsd-arm), const IFT_HIPPIINTERFACE ideal-int pkg syscall (netbsd-arm), const IFT_HOSTPAD ideal-int pkg syscall (netbsd-arm), const IFT_HSSI ideal-int pkg syscall (netbsd-arm), const IFT_HY ideal-int pkg syscall (netbsd-arm), const IFT_IBM370PARCHAN ideal-int pkg syscall (netbsd-arm), const IFT_IDSL ideal-int pkg syscall (netbsd-arm), const IFT_IEEE1394 ideal-int pkg syscall (netbsd-arm), const IFT_IEEE80211 ideal-int pkg syscall (netbsd-arm), const IFT_IEEE80212 ideal-int pkg syscall (netbsd-arm), const IFT_IEEE8023ADLAG ideal-int pkg syscall (netbsd-arm), const IFT_IFGSN ideal-int pkg syscall (netbsd-arm), const IFT_IMT ideal-int pkg syscall (netbsd-arm), const IFT_INFINIBAND ideal-int pkg syscall (netbsd-arm), const IFT_INTERLEAVE ideal-int pkg syscall (netbsd-arm), const IFT_IP ideal-int pkg syscall (netbsd-arm), const IFT_IPFORWARD ideal-int pkg syscall (netbsd-arm), const IFT_IPOVERATM ideal-int pkg syscall (netbsd-arm), const IFT_IPOVERCDLC ideal-int pkg syscall (netbsd-arm), const IFT_IPOVERCLAW ideal-int pkg syscall (netbsd-arm), const IFT_IPSWITCH ideal-int pkg syscall (netbsd-arm), const IFT_ISDN ideal-int pkg syscall (netbsd-arm), const IFT_ISDNBASIC ideal-int pkg syscall (netbsd-arm), const IFT_ISDNPRIMARY ideal-int pkg syscall (netbsd-arm), const IFT_ISDNS ideal-int pkg syscall (netbsd-arm), const IFT_ISDNU ideal-int pkg syscall (netbsd-arm), const IFT_ISO88022LLC ideal-int pkg syscall (netbsd-arm), const IFT_ISO88023 ideal-int pkg syscall (netbsd-arm), const IFT_ISO88024 ideal-int pkg syscall (netbsd-arm), const IFT_ISO88025 ideal-int pkg syscall (netbsd-arm), const IFT_ISO88025CRFPINT ideal-int pkg syscall (netbsd-arm), const IFT_ISO88025DTR ideal-int pkg syscall (netbsd-arm), const IFT_ISO88025FIBER ideal-int pkg syscall (netbsd-arm), const IFT_ISO88026 ideal-int pkg syscall (netbsd-arm), const IFT_ISUP ideal-int pkg syscall (netbsd-arm), const IFT_L2VLAN ideal-int pkg syscall (netbsd-arm), const IFT_L3IPVLAN ideal-int pkg syscall (netbsd-arm), const IFT_L3IPXVLAN ideal-int pkg syscall (netbsd-arm), const IFT_LAPB ideal-int pkg syscall (netbsd-arm), const IFT_LAPD ideal-int pkg syscall (netbsd-arm), const IFT_LAPF ideal-int pkg syscall (netbsd-arm), const IFT_LINEGROUP ideal-int pkg syscall (netbsd-arm), const IFT_LOCALTALK ideal-int pkg syscall (netbsd-arm), const IFT_LOOP ideal-int pkg syscall (netbsd-arm), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (netbsd-arm), const IFT_MFSIGLINK ideal-int pkg syscall (netbsd-arm), const IFT_MIOX25 ideal-int pkg syscall (netbsd-arm), const IFT_MODEM ideal-int pkg syscall (netbsd-arm), const IFT_MPC ideal-int pkg syscall (netbsd-arm), const IFT_MPLS ideal-int pkg syscall (netbsd-arm), const IFT_MPLSTUNNEL ideal-int pkg syscall (netbsd-arm), const IFT_MSDSL ideal-int pkg syscall (netbsd-arm), const IFT_MVL ideal-int pkg syscall (netbsd-arm), const IFT_MYRINET ideal-int pkg syscall (netbsd-arm), const IFT_NFAS ideal-int pkg syscall (netbsd-arm), const IFT_NSIP ideal-int pkg syscall (netbsd-arm), const IFT_OPTICALCHANNEL ideal-int pkg syscall (netbsd-arm), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (netbsd-arm), const IFT_OTHER ideal-int pkg syscall (netbsd-arm), const IFT_P10 ideal-int pkg syscall (netbsd-arm), const IFT_P80 ideal-int pkg syscall (netbsd-arm), const IFT_PARA ideal-int pkg syscall (netbsd-arm), const IFT_PFLOG ideal-int pkg syscall (netbsd-arm), const IFT_PFSYNC ideal-int pkg syscall (netbsd-arm), const IFT_PLC ideal-int pkg syscall (netbsd-arm), const IFT_PON155 ideal-int pkg syscall (netbsd-arm), const IFT_PON622 ideal-int pkg syscall (netbsd-arm), const IFT_POS ideal-int pkg syscall (netbsd-arm), const IFT_PPP ideal-int pkg syscall (netbsd-arm), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (netbsd-arm), const IFT_PROPATM ideal-int pkg syscall (netbsd-arm), const IFT_PROPBWAP2MP ideal-int pkg syscall (netbsd-arm), const IFT_PROPCNLS ideal-int pkg syscall (netbsd-arm), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (netbsd-arm), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (netbsd-arm), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (netbsd-arm), const IFT_PROPMUX ideal-int pkg syscall (netbsd-arm), const IFT_PROPVIRTUAL ideal-int pkg syscall (netbsd-arm), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (netbsd-arm), const IFT_PTPSERIAL ideal-int pkg syscall (netbsd-arm), const IFT_PVC ideal-int pkg syscall (netbsd-arm), const IFT_Q2931 ideal-int pkg syscall (netbsd-arm), const IFT_QLLC ideal-int pkg syscall (netbsd-arm), const IFT_RADIOMAC ideal-int pkg syscall (netbsd-arm), const IFT_RADSL ideal-int pkg syscall (netbsd-arm), const IFT_REACHDSL ideal-int pkg syscall (netbsd-arm), const IFT_RFC1483 ideal-int pkg syscall (netbsd-arm), const IFT_RS232 ideal-int pkg syscall (netbsd-arm), const IFT_RSRB ideal-int pkg syscall (netbsd-arm), const IFT_SDLC ideal-int pkg syscall (netbsd-arm), const IFT_SDSL ideal-int pkg syscall (netbsd-arm), const IFT_SHDSL ideal-int pkg syscall (netbsd-arm), const IFT_SIP ideal-int pkg syscall (netbsd-arm), const IFT_SIPSIG ideal-int pkg syscall (netbsd-arm), const IFT_SIPTG ideal-int pkg syscall (netbsd-arm), const IFT_SLIP ideal-int pkg syscall (netbsd-arm), const IFT_SMDSDXI ideal-int pkg syscall (netbsd-arm), const IFT_SMDSICIP ideal-int pkg syscall (netbsd-arm), const IFT_SONET ideal-int pkg syscall (netbsd-arm), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (netbsd-arm), const IFT_SONETPATH ideal-int pkg syscall (netbsd-arm), const IFT_SONETVT ideal-int pkg syscall (netbsd-arm), const IFT_SRP ideal-int pkg syscall (netbsd-arm), const IFT_SS7SIGLINK ideal-int pkg syscall (netbsd-arm), const IFT_STACKTOSTACK ideal-int pkg syscall (netbsd-arm), const IFT_STARLAN ideal-int pkg syscall (netbsd-arm), const IFT_STF ideal-int pkg syscall (netbsd-arm), const IFT_T1 ideal-int pkg syscall (netbsd-arm), const IFT_TDLC ideal-int pkg syscall (netbsd-arm), const IFT_TELINK ideal-int pkg syscall (netbsd-arm), const IFT_TERMPAD ideal-int pkg syscall (netbsd-arm), const IFT_TR008 ideal-int pkg syscall (netbsd-arm), const IFT_TRANSPHDLC ideal-int pkg syscall (netbsd-arm), const IFT_TUNNEL ideal-int pkg syscall (netbsd-arm), const IFT_ULTRA ideal-int pkg syscall (netbsd-arm), const IFT_USB ideal-int pkg syscall (netbsd-arm), const IFT_V11 ideal-int pkg syscall (netbsd-arm), const IFT_V35 ideal-int pkg syscall (netbsd-arm), const IFT_V36 ideal-int pkg syscall (netbsd-arm), const IFT_V37 ideal-int pkg syscall (netbsd-arm), const IFT_VDSL ideal-int pkg syscall (netbsd-arm), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (netbsd-arm), const IFT_VIRTUALTG ideal-int pkg syscall (netbsd-arm), const IFT_VOICEDID ideal-int pkg syscall (netbsd-arm), const IFT_VOICEEM ideal-int pkg syscall (netbsd-arm), const IFT_VOICEEMFGD ideal-int pkg syscall (netbsd-arm), const IFT_VOICEENCAP ideal-int pkg syscall (netbsd-arm), const IFT_VOICEFGDEANA ideal-int pkg syscall (netbsd-arm), const IFT_VOICEFXO ideal-int pkg syscall (netbsd-arm), const IFT_VOICEFXS ideal-int pkg syscall (netbsd-arm), const IFT_VOICEOVERATM ideal-int pkg syscall (netbsd-arm), const IFT_VOICEOVERCABLE ideal-int pkg syscall (netbsd-arm), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (netbsd-arm), const IFT_VOICEOVERIP ideal-int pkg syscall (netbsd-arm), const IFT_X213 ideal-int pkg syscall (netbsd-arm), const IFT_X25 ideal-int pkg syscall (netbsd-arm), const IFT_X25DDN ideal-int pkg syscall (netbsd-arm), const IFT_X25HUNTGROUP ideal-int pkg syscall (netbsd-arm), const IFT_X25MLP ideal-int pkg syscall (netbsd-arm), const IFT_X25PLE ideal-int pkg syscall (netbsd-arm), const IFT_XETHER ideal-int pkg syscall (netbsd-arm), const IGNBRK ideal-int pkg syscall (netbsd-arm), const IGNCR ideal-int pkg syscall (netbsd-arm), const IGNPAR ideal-int pkg syscall (netbsd-arm), const IMAXBEL ideal-int pkg syscall (netbsd-arm), const INLCR ideal-int pkg syscall (netbsd-arm), const INPCK ideal-int pkg syscall (netbsd-arm), const IN_CLASSA_HOST ideal-int pkg syscall (netbsd-arm), const IN_CLASSA_MAX ideal-int pkg syscall (netbsd-arm), const IN_CLASSA_NET ideal-int pkg syscall (netbsd-arm), const IN_CLASSA_NSHIFT ideal-int pkg syscall (netbsd-arm), const IN_CLASSB_HOST ideal-int pkg syscall (netbsd-arm), const IN_CLASSB_MAX ideal-int pkg syscall (netbsd-arm), const IN_CLASSB_NET ideal-int pkg syscall (netbsd-arm), const IN_CLASSB_NSHIFT ideal-int pkg syscall (netbsd-arm), const IN_CLASSC_HOST ideal-int pkg syscall (netbsd-arm), const IN_CLASSC_NET ideal-int pkg syscall (netbsd-arm), const IN_CLASSC_NSHIFT ideal-int pkg syscall (netbsd-arm), const IN_CLASSD_HOST ideal-int pkg syscall (netbsd-arm), const IN_CLASSD_NET ideal-int pkg syscall (netbsd-arm), const IN_CLASSD_NSHIFT ideal-int pkg syscall (netbsd-arm), const IN_LOOPBACKNET ideal-int pkg syscall (netbsd-arm), const IPPROTO_AH ideal-int pkg syscall (netbsd-arm), const IPPROTO_CARP ideal-int pkg syscall (netbsd-arm), const IPPROTO_DONE ideal-int pkg syscall (netbsd-arm), const IPPROTO_DSTOPTS ideal-int pkg syscall (netbsd-arm), const IPPROTO_EGP ideal-int pkg syscall (netbsd-arm), const IPPROTO_ENCAP ideal-int pkg syscall (netbsd-arm), const IPPROTO_EON ideal-int pkg syscall (netbsd-arm), const IPPROTO_ESP ideal-int pkg syscall (netbsd-arm), const IPPROTO_ETHERIP ideal-int pkg syscall (netbsd-arm), const IPPROTO_FRAGMENT ideal-int pkg syscall (netbsd-arm), const IPPROTO_GGP ideal-int pkg syscall (netbsd-arm), const IPPROTO_GRE ideal-int pkg syscall (netbsd-arm), const IPPROTO_HOPOPTS ideal-int pkg syscall (netbsd-arm), const IPPROTO_ICMP ideal-int pkg syscall (netbsd-arm), const IPPROTO_ICMPV6 ideal-int pkg syscall (netbsd-arm), const IPPROTO_IDP ideal-int pkg syscall (netbsd-arm), const IPPROTO_IGMP ideal-int pkg syscall (netbsd-arm), const IPPROTO_IPCOMP ideal-int pkg syscall (netbsd-arm), const IPPROTO_IPIP ideal-int pkg syscall (netbsd-arm), const IPPROTO_IPV4 ideal-int pkg syscall (netbsd-arm), const IPPROTO_IPV6_ICMP ideal-int pkg syscall (netbsd-arm), const IPPROTO_MAX ideal-int pkg syscall (netbsd-arm), const IPPROTO_MAXID ideal-int pkg syscall (netbsd-arm), const IPPROTO_MOBILE ideal-int pkg syscall (netbsd-arm), const IPPROTO_NONE ideal-int pkg syscall (netbsd-arm), const IPPROTO_PFSYNC ideal-int pkg syscall (netbsd-arm), const IPPROTO_PIM ideal-int pkg syscall (netbsd-arm), const IPPROTO_PUP ideal-int pkg syscall (netbsd-arm), const IPPROTO_RAW ideal-int pkg syscall (netbsd-arm), const IPPROTO_ROUTING ideal-int pkg syscall (netbsd-arm), const IPPROTO_RSVP ideal-int pkg syscall (netbsd-arm), const IPPROTO_TP ideal-int pkg syscall (netbsd-arm), const IPPROTO_VRRP ideal-int pkg syscall (netbsd-arm), const IPV6_CHECKSUM ideal-int pkg syscall (netbsd-arm), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (netbsd-arm), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (netbsd-arm), const IPV6_DEFHLIM ideal-int pkg syscall (netbsd-arm), const IPV6_DONTFRAG ideal-int pkg syscall (netbsd-arm), const IPV6_DSTOPTS ideal-int pkg syscall (netbsd-arm), const IPV6_FAITH ideal-int pkg syscall (netbsd-arm), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (netbsd-arm), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (netbsd-arm), const IPV6_FRAGTTL ideal-int pkg syscall (netbsd-arm), const IPV6_HLIMDEC ideal-int pkg syscall (netbsd-arm), const IPV6_HOPLIMIT ideal-int pkg syscall (netbsd-arm), const IPV6_HOPOPTS ideal-int pkg syscall (netbsd-arm), const IPV6_IPSEC_POLICY ideal-int pkg syscall (netbsd-arm), const IPV6_MAXHLIM ideal-int pkg syscall (netbsd-arm), const IPV6_MAXPACKET ideal-int pkg syscall (netbsd-arm), const IPV6_MMTU ideal-int pkg syscall (netbsd-arm), const IPV6_NEXTHOP ideal-int pkg syscall (netbsd-arm), const IPV6_PATHMTU ideal-int pkg syscall (netbsd-arm), const IPV6_PKTINFO ideal-int pkg syscall (netbsd-arm), const IPV6_PORTRANGE ideal-int pkg syscall (netbsd-arm), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (netbsd-arm), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (netbsd-arm), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (netbsd-arm), const IPV6_RECVDSTOPTS ideal-int pkg syscall (netbsd-arm), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (netbsd-arm), const IPV6_RECVHOPOPTS ideal-int pkg syscall (netbsd-arm), const IPV6_RECVPATHMTU ideal-int pkg syscall (netbsd-arm), const IPV6_RECVPKTINFO ideal-int pkg syscall (netbsd-arm), const IPV6_RECVRTHDR ideal-int pkg syscall (netbsd-arm), const IPV6_RECVTCLASS ideal-int pkg syscall (netbsd-arm), const IPV6_RTHDR ideal-int pkg syscall (netbsd-arm), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (netbsd-arm), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (netbsd-arm), const IPV6_RTHDR_STRICT ideal-int pkg syscall (netbsd-arm), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (netbsd-arm), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (netbsd-arm), const IPV6_TCLASS ideal-int pkg syscall (netbsd-arm), const IPV6_USE_MIN_MTU ideal-int pkg syscall (netbsd-arm), const IPV6_VERSION ideal-int pkg syscall (netbsd-arm), const IPV6_VERSION_MASK ideal-int pkg syscall (netbsd-arm), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (netbsd-arm), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (netbsd-arm), const IP_DF ideal-int pkg syscall (netbsd-arm), const IP_EF ideal-int pkg syscall (netbsd-arm), const IP_ERRORMTU ideal-int pkg syscall (netbsd-arm), const IP_HDRINCL ideal-int pkg syscall (netbsd-arm), const IP_IPSEC_POLICY ideal-int pkg syscall (netbsd-arm), const IP_MAXPACKET ideal-int pkg syscall (netbsd-arm), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (netbsd-arm), const IP_MF ideal-int pkg syscall (netbsd-arm), const IP_MINFRAGSIZE ideal-int pkg syscall (netbsd-arm), const IP_MINTTL ideal-int pkg syscall (netbsd-arm), const IP_MSS ideal-int pkg syscall (netbsd-arm), const IP_OFFMASK ideal-int pkg syscall (netbsd-arm), const IP_OPTIONS ideal-int pkg syscall (netbsd-arm), const IP_PORTRANGE ideal-int pkg syscall (netbsd-arm), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (netbsd-arm), const IP_PORTRANGE_HIGH ideal-int pkg syscall (netbsd-arm), const IP_PORTRANGE_LOW ideal-int pkg syscall (netbsd-arm), const IP_RECVDSTADDR ideal-int pkg syscall (netbsd-arm), const IP_RECVIF ideal-int pkg syscall (netbsd-arm), const IP_RECVOPTS ideal-int pkg syscall (netbsd-arm), const IP_RECVRETOPTS ideal-int pkg syscall (netbsd-arm), const IP_RECVTTL ideal-int pkg syscall (netbsd-arm), const IP_RETOPTS ideal-int pkg syscall (netbsd-arm), const IP_RF ideal-int pkg syscall (netbsd-arm), const ISIG ideal-int pkg syscall (netbsd-arm), const ISTRIP ideal-int pkg syscall (netbsd-arm), const IXANY ideal-int pkg syscall (netbsd-arm), const IXOFF ideal-int pkg syscall (netbsd-arm), const IXON ideal-int pkg syscall (netbsd-arm), const LOCK_EX ideal-int pkg syscall (netbsd-arm), const LOCK_NB ideal-int pkg syscall (netbsd-arm), const LOCK_SH ideal-int pkg syscall (netbsd-arm), const LOCK_UN ideal-int pkg syscall (netbsd-arm), const MSG_BCAST ideal-int pkg syscall (netbsd-arm), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (netbsd-arm), const MSG_CONTROLMBUF ideal-int pkg syscall (netbsd-arm), const MSG_CTRUNC ideal-int pkg syscall (netbsd-arm), const MSG_DONTROUTE ideal-int pkg syscall (netbsd-arm), const MSG_DONTWAIT ideal-int pkg syscall (netbsd-arm), const MSG_EOR ideal-int pkg syscall (netbsd-arm), const MSG_IOVUSRSPACE ideal-int pkg syscall (netbsd-arm), const MSG_LENUSRSPACE ideal-int pkg syscall (netbsd-arm), const MSG_MCAST ideal-int pkg syscall (netbsd-arm), const MSG_NAMEMBUF ideal-int pkg syscall (netbsd-arm), const MSG_NBIO ideal-int pkg syscall (netbsd-arm), const MSG_NOSIGNAL ideal-int pkg syscall (netbsd-arm), const MSG_OOB ideal-int pkg syscall (netbsd-arm), const MSG_PEEK ideal-int pkg syscall (netbsd-arm), const MSG_TRUNC ideal-int pkg syscall (netbsd-arm), const MSG_USERFLAGS ideal-int pkg syscall (netbsd-arm), const MSG_WAITALL ideal-int pkg syscall (netbsd-arm), const NAME_MAX ideal-int pkg syscall (netbsd-arm), const NET_RT_DUMP ideal-int pkg syscall (netbsd-arm), const NET_RT_FLAGS ideal-int pkg syscall (netbsd-arm), const NET_RT_IFLIST ideal-int pkg syscall (netbsd-arm), const NET_RT_MAXID ideal-int pkg syscall (netbsd-arm), const NET_RT_OIFLIST ideal-int pkg syscall (netbsd-arm), const NET_RT_OOIFLIST ideal-int pkg syscall (netbsd-arm), const NOFLSH ideal-int pkg syscall (netbsd-arm), const NOTE_ATTRIB ideal-int pkg syscall (netbsd-arm), const NOTE_CHILD ideal-int pkg syscall (netbsd-arm), const NOTE_DELETE ideal-int pkg syscall (netbsd-arm), const NOTE_EXEC ideal-int pkg syscall (netbsd-arm), const NOTE_EXIT ideal-int pkg syscall (netbsd-arm), const NOTE_EXTEND ideal-int pkg syscall (netbsd-arm), const NOTE_FORK ideal-int pkg syscall (netbsd-arm), const NOTE_LINK ideal-int pkg syscall (netbsd-arm), const NOTE_LOWAT ideal-int pkg syscall (netbsd-arm), const NOTE_PCTRLMASK ideal-int pkg syscall (netbsd-arm), const NOTE_PDATAMASK ideal-int pkg syscall (netbsd-arm), const NOTE_RENAME ideal-int pkg syscall (netbsd-arm), const NOTE_REVOKE ideal-int pkg syscall (netbsd-arm), const NOTE_TRACK ideal-int pkg syscall (netbsd-arm), const NOTE_TRACKERR ideal-int pkg syscall (netbsd-arm), const NOTE_WRITE ideal-int pkg syscall (netbsd-arm), const OCRNL ideal-int pkg syscall (netbsd-arm), const OFIOGETBMAP ideal-int pkg syscall (netbsd-arm), const ONLCR ideal-int pkg syscall (netbsd-arm), const ONLRET ideal-int pkg syscall (netbsd-arm), const ONOCR ideal-int pkg syscall (netbsd-arm), const ONOEOT ideal-int pkg syscall (netbsd-arm), const OPOST ideal-int pkg syscall (netbsd-arm), const O_ACCMODE ideal-int pkg syscall (netbsd-arm), const O_ALT_IO ideal-int pkg syscall (netbsd-arm), const O_DIRECT ideal-int pkg syscall (netbsd-arm), const O_DIRECTORY ideal-int pkg syscall (netbsd-arm), const O_DSYNC ideal-int pkg syscall (netbsd-arm), const O_EXLOCK ideal-int pkg syscall (netbsd-arm), const O_FSYNC ideal-int pkg syscall (netbsd-arm), const O_NDELAY ideal-int pkg syscall (netbsd-arm), const O_NOFOLLOW ideal-int pkg syscall (netbsd-arm), const O_NOSIGPIPE ideal-int pkg syscall (netbsd-arm), const O_RSYNC ideal-int pkg syscall (netbsd-arm), const O_SHLOCK ideal-int pkg syscall (netbsd-arm), const PARENB ideal-int pkg syscall (netbsd-arm), const PARMRK ideal-int pkg syscall (netbsd-arm), const PARODD ideal-int pkg syscall (netbsd-arm), const PENDIN ideal-int pkg syscall (netbsd-arm), const PRIO_PGRP = 1 pkg syscall (netbsd-arm), const PRIO_PGRP ideal-int pkg syscall (netbsd-arm), const PRIO_PROCESS = 0 pkg syscall (netbsd-arm), const PRIO_PROCESS ideal-int pkg syscall (netbsd-arm), const PRIO_USER = 2 pkg syscall (netbsd-arm), const PRIO_USER ideal-int pkg syscall (netbsd-arm), const PRI_IOFLUSH ideal-int pkg syscall (netbsd-arm), const PTRACE_CONT ideal-int pkg syscall (netbsd-arm), const PTRACE_KILL ideal-int pkg syscall (netbsd-arm), const PTRACE_TRACEME ideal-int pkg syscall (netbsd-arm), const RLIMIT_AS ideal-int pkg syscall (netbsd-arm), const RLIMIT_CORE ideal-int pkg syscall (netbsd-arm), const RLIMIT_CPU ideal-int pkg syscall (netbsd-arm), const RLIMIT_DATA ideal-int pkg syscall (netbsd-arm), const RLIMIT_FSIZE ideal-int pkg syscall (netbsd-arm), const RLIMIT_NOFILE ideal-int pkg syscall (netbsd-arm), const RLIMIT_STACK ideal-int pkg syscall (netbsd-arm), const RLIM_INFINITY ideal-int pkg syscall (netbsd-arm), const RTAX_AUTHOR ideal-int pkg syscall (netbsd-arm), const RTAX_BRD ideal-int pkg syscall (netbsd-arm), const RTAX_DST ideal-int pkg syscall (netbsd-arm), const RTAX_GATEWAY ideal-int pkg syscall (netbsd-arm), const RTAX_GENMASK ideal-int pkg syscall (netbsd-arm), const RTAX_IFA ideal-int pkg syscall (netbsd-arm), const RTAX_IFP ideal-int pkg syscall (netbsd-arm), const RTAX_MAX ideal-int pkg syscall (netbsd-arm), const RTAX_NETMASK ideal-int pkg syscall (netbsd-arm), const RTAX_TAG ideal-int pkg syscall (netbsd-arm), const RTA_AUTHOR ideal-int pkg syscall (netbsd-arm), const RTA_BRD ideal-int pkg syscall (netbsd-arm), const RTA_DST ideal-int pkg syscall (netbsd-arm), const RTA_GATEWAY ideal-int pkg syscall (netbsd-arm), const RTA_GENMASK ideal-int pkg syscall (netbsd-arm), const RTA_IFA ideal-int pkg syscall (netbsd-arm), const RTA_IFP ideal-int pkg syscall (netbsd-arm), const RTA_NETMASK ideal-int pkg syscall (netbsd-arm), const RTA_TAG ideal-int pkg syscall (netbsd-arm), const RTF_ANNOUNCE ideal-int pkg syscall (netbsd-arm), const RTF_BLACKHOLE ideal-int pkg syscall (netbsd-arm), const RTF_CLONED ideal-int pkg syscall (netbsd-arm), const RTF_CLONING ideal-int pkg syscall (netbsd-arm), const RTF_DONE ideal-int pkg syscall (netbsd-arm), const RTF_DYNAMIC ideal-int pkg syscall (netbsd-arm), const RTF_GATEWAY ideal-int pkg syscall (netbsd-arm), const RTF_HOST ideal-int pkg syscall (netbsd-arm), const RTF_LLINFO ideal-int pkg syscall (netbsd-arm), const RTF_MASK ideal-int pkg syscall (netbsd-arm), const RTF_MODIFIED ideal-int pkg syscall (netbsd-arm), const RTF_PROTO1 ideal-int pkg syscall (netbsd-arm), const RTF_PROTO2 ideal-int pkg syscall (netbsd-arm), const RTF_REJECT ideal-int pkg syscall (netbsd-arm), const RTF_SRC ideal-int pkg syscall (netbsd-arm), const RTF_STATIC ideal-int pkg syscall (netbsd-arm), const RTF_UP ideal-int pkg syscall (netbsd-arm), const RTF_XRESOLVE ideal-int pkg syscall (netbsd-arm), const RTM_ADD ideal-int pkg syscall (netbsd-arm), const RTM_CHANGE ideal-int pkg syscall (netbsd-arm), const RTM_CHGADDR ideal-int pkg syscall (netbsd-arm), const RTM_DELADDR ideal-int pkg syscall (netbsd-arm), const RTM_DELETE ideal-int pkg syscall (netbsd-arm), const RTM_GET ideal-int pkg syscall (netbsd-arm), const RTM_IEEE80211 ideal-int pkg syscall (netbsd-arm), const RTM_IFANNOUNCE ideal-int pkg syscall (netbsd-arm), const RTM_IFINFO ideal-int pkg syscall (netbsd-arm), const RTM_LLINFO_UPD ideal-int pkg syscall (netbsd-arm), const RTM_LOCK ideal-int pkg syscall (netbsd-arm), const RTM_LOSING ideal-int pkg syscall (netbsd-arm), const RTM_MISS ideal-int pkg syscall (netbsd-arm), const RTM_NEWADDR ideal-int pkg syscall (netbsd-arm), const RTM_OIFINFO ideal-int pkg syscall (netbsd-arm), const RTM_OLDADD ideal-int pkg syscall (netbsd-arm), const RTM_OLDDEL ideal-int pkg syscall (netbsd-arm), const RTM_OOIFINFO ideal-int pkg syscall (netbsd-arm), const RTM_REDIRECT ideal-int pkg syscall (netbsd-arm), const RTM_RESOLVE ideal-int pkg syscall (netbsd-arm), const RTM_RTTUNIT ideal-int pkg syscall (netbsd-arm), const RTM_SETGATE ideal-int pkg syscall (netbsd-arm), const RTM_VERSION ideal-int pkg syscall (netbsd-arm), const RTV_EXPIRE ideal-int pkg syscall (netbsd-arm), const RTV_HOPCOUNT ideal-int pkg syscall (netbsd-arm), const RTV_MTU ideal-int pkg syscall (netbsd-arm), const RTV_RPIPE ideal-int pkg syscall (netbsd-arm), const RTV_RTT ideal-int pkg syscall (netbsd-arm), const RTV_RTTVAR ideal-int pkg syscall (netbsd-arm), const RTV_SPIPE ideal-int pkg syscall (netbsd-arm), const RTV_SSTHRESH ideal-int pkg syscall (netbsd-arm), const RUSAGE_CHILDREN ideal-int pkg syscall (netbsd-arm), const RUSAGE_SELF ideal-int pkg syscall (netbsd-arm), const SCM_CREDS ideal-int pkg syscall (netbsd-arm), const SCM_RIGHTS ideal-int pkg syscall (netbsd-arm), const SCM_TIMESTAMP ideal-int pkg syscall (netbsd-arm), const SIGCHLD Signal pkg syscall (netbsd-arm), const SIGCONT Signal pkg syscall (netbsd-arm), const SIGEMT Signal pkg syscall (netbsd-arm), const SIGINFO Signal pkg syscall (netbsd-arm), const SIGIO Signal pkg syscall (netbsd-arm), const SIGIOT Signal pkg syscall (netbsd-arm), const SIGPROF Signal pkg syscall (netbsd-arm), const SIGPWR Signal pkg syscall (netbsd-arm), const SIGSTOP Signal pkg syscall (netbsd-arm), const SIGSYS Signal pkg syscall (netbsd-arm), const SIGTSTP Signal pkg syscall (netbsd-arm), const SIGTTIN Signal pkg syscall (netbsd-arm), const SIGTTOU Signal pkg syscall (netbsd-arm), const SIGURG Signal pkg syscall (netbsd-arm), const SIGUSR1 Signal pkg syscall (netbsd-arm), const SIGUSR2 Signal pkg syscall (netbsd-arm), const SIGVTALRM Signal pkg syscall (netbsd-arm), const SIGWINCH Signal pkg syscall (netbsd-arm), const SIGXCPU Signal pkg syscall (netbsd-arm), const SIGXFSZ Signal pkg syscall (netbsd-arm), const SIOCADDMULTI ideal-int pkg syscall (netbsd-arm), const SIOCADDRT ideal-int pkg syscall (netbsd-arm), const SIOCAIFADDR ideal-int pkg syscall (netbsd-arm), const SIOCALIFADDR ideal-int pkg syscall (netbsd-arm), const SIOCATMARK ideal-int pkg syscall (netbsd-arm), const SIOCDELMULTI ideal-int pkg syscall (netbsd-arm), const SIOCDELRT ideal-int pkg syscall (netbsd-arm), const SIOCDIFADDR ideal-int pkg syscall (netbsd-arm), const SIOCDIFPHYADDR ideal-int pkg syscall (netbsd-arm), const SIOCDLIFADDR ideal-int pkg syscall (netbsd-arm), const SIOCGDRVSPEC ideal-int pkg syscall (netbsd-arm), const SIOCGETPFSYNC ideal-int pkg syscall (netbsd-arm), const SIOCGETSGCNT ideal-int pkg syscall (netbsd-arm), const SIOCGETVIFCNT ideal-int pkg syscall (netbsd-arm), const SIOCGHIWAT ideal-int pkg syscall (netbsd-arm), const SIOCGIFADDR ideal-int pkg syscall (netbsd-arm), const SIOCGIFADDRPREF ideal-int pkg syscall (netbsd-arm), const SIOCGIFALIAS ideal-int pkg syscall (netbsd-arm), const SIOCGIFBRDADDR ideal-int pkg syscall (netbsd-arm), const SIOCGIFCAP ideal-int pkg syscall (netbsd-arm), const SIOCGIFCONF ideal-int pkg syscall (netbsd-arm), const SIOCGIFDATA ideal-int pkg syscall (netbsd-arm), const SIOCGIFDLT ideal-int pkg syscall (netbsd-arm), const SIOCGIFDSTADDR ideal-int pkg syscall (netbsd-arm), const SIOCGIFFLAGS ideal-int pkg syscall (netbsd-arm), const SIOCGIFGENERIC ideal-int pkg syscall (netbsd-arm), const SIOCGIFMEDIA ideal-int pkg syscall (netbsd-arm), const SIOCGIFMETRIC ideal-int pkg syscall (netbsd-arm), const SIOCGIFMTU ideal-int pkg syscall (netbsd-arm), const SIOCGIFNETMASK ideal-int pkg syscall (netbsd-arm), const SIOCGIFPDSTADDR ideal-int pkg syscall (netbsd-arm), const SIOCGIFPSRCADDR ideal-int pkg syscall (netbsd-arm), const SIOCGLIFADDR ideal-int pkg syscall (netbsd-arm), const SIOCGLIFPHYADDR ideal-int pkg syscall (netbsd-arm), const SIOCGLINKSTR ideal-int pkg syscall (netbsd-arm), const SIOCGLOWAT ideal-int pkg syscall (netbsd-arm), const SIOCGPGRP ideal-int pkg syscall (netbsd-arm), const SIOCGVH ideal-int pkg syscall (netbsd-arm), const SIOCIFCREATE ideal-int pkg syscall (netbsd-arm), const SIOCIFDESTROY ideal-int pkg syscall (netbsd-arm), const SIOCIFGCLONERS ideal-int pkg syscall (netbsd-arm), const SIOCINITIFADDR ideal-int pkg syscall (netbsd-arm), const SIOCSDRVSPEC ideal-int pkg syscall (netbsd-arm), const SIOCSETPFSYNC ideal-int pkg syscall (netbsd-arm), const SIOCSHIWAT ideal-int pkg syscall (netbsd-arm), const SIOCSIFADDR ideal-int pkg syscall (netbsd-arm), const SIOCSIFADDRPREF ideal-int pkg syscall (netbsd-arm), const SIOCSIFBRDADDR ideal-int pkg syscall (netbsd-arm), const SIOCSIFCAP ideal-int pkg syscall (netbsd-arm), const SIOCSIFDSTADDR ideal-int pkg syscall (netbsd-arm), const SIOCSIFFLAGS ideal-int pkg syscall (netbsd-arm), const SIOCSIFGENERIC ideal-int pkg syscall (netbsd-arm), const SIOCSIFMEDIA ideal-int pkg syscall (netbsd-arm), const SIOCSIFMETRIC ideal-int pkg syscall (netbsd-arm), const SIOCSIFMTU ideal-int pkg syscall (netbsd-arm), const SIOCSIFNETMASK ideal-int pkg syscall (netbsd-arm), const SIOCSIFPHYADDR ideal-int pkg syscall (netbsd-arm), const SIOCSLIFPHYADDR ideal-int pkg syscall (netbsd-arm), const SIOCSLINKSTR ideal-int pkg syscall (netbsd-arm), const SIOCSLOWAT ideal-int pkg syscall (netbsd-arm), const SIOCSPGRP ideal-int pkg syscall (netbsd-arm), const SIOCSVH ideal-int pkg syscall (netbsd-arm), const SIOCZIFDATA ideal-int pkg syscall (netbsd-arm), const SOCK_CLOEXEC ideal-int pkg syscall (netbsd-arm), const SOCK_FLAGS_MASK ideal-int pkg syscall (netbsd-arm), const SOCK_NONBLOCK ideal-int pkg syscall (netbsd-arm), const SOCK_NOSIGPIPE ideal-int pkg syscall (netbsd-arm), const SOCK_RDM ideal-int pkg syscall (netbsd-arm), const SO_ACCEPTCONN ideal-int pkg syscall (netbsd-arm), const SO_ACCEPTFILTER ideal-int pkg syscall (netbsd-arm), const SO_DEBUG ideal-int pkg syscall (netbsd-arm), const SO_ERROR ideal-int pkg syscall (netbsd-arm), const SO_NOHEADER ideal-int pkg syscall (netbsd-arm), const SO_NOSIGPIPE ideal-int pkg syscall (netbsd-arm), const SO_OOBINLINE ideal-int pkg syscall (netbsd-arm), const SO_OVERFLOWED ideal-int pkg syscall (netbsd-arm), const SO_RCVLOWAT ideal-int pkg syscall (netbsd-arm), const SO_RCVTIMEO ideal-int pkg syscall (netbsd-arm), const SO_REUSEPORT ideal-int pkg syscall (netbsd-arm), const SO_SNDLOWAT ideal-int pkg syscall (netbsd-arm), const SO_SNDTIMEO ideal-int pkg syscall (netbsd-arm), const SO_TIMESTAMP ideal-int pkg syscall (netbsd-arm), const SO_TYPE ideal-int pkg syscall (netbsd-arm), const SO_USELOOPBACK ideal-int pkg syscall (netbsd-arm), const SYSCTL_VERSION ideal-int pkg syscall (netbsd-arm), const SYSCTL_VERS_0 ideal-int pkg syscall (netbsd-arm), const SYSCTL_VERS_1 ideal-int pkg syscall (netbsd-arm), const SYSCTL_VERS_MASK ideal-int pkg syscall (netbsd-arm), const SYS_ACCEPT ideal-int pkg syscall (netbsd-arm), const SYS_ACCESS ideal-int pkg syscall (netbsd-arm), const SYS_ACCT ideal-int pkg syscall (netbsd-arm), const SYS_ADJTIME ideal-int pkg syscall (netbsd-arm), const SYS_BIND ideal-int pkg syscall (netbsd-arm), const SYS_BREAK ideal-int pkg syscall (netbsd-arm), const SYS_CHDIR ideal-int pkg syscall (netbsd-arm), const SYS_CHFLAGS ideal-int pkg syscall (netbsd-arm), const SYS_CHMOD ideal-int pkg syscall (netbsd-arm), const SYS_CHOWN ideal-int pkg syscall (netbsd-arm), const SYS_CHROOT ideal-int pkg syscall (netbsd-arm), const SYS_CLOCK_GETRES ideal-int pkg syscall (netbsd-arm), const SYS_CLOCK_GETTIME ideal-int pkg syscall (netbsd-arm), const SYS_CLOCK_SETTIME ideal-int pkg syscall (netbsd-arm), const SYS_CLOSE ideal-int pkg syscall (netbsd-arm), const SYS_CONNECT ideal-int pkg syscall (netbsd-arm), const SYS_DUP ideal-int pkg syscall (netbsd-arm), const SYS_DUP2 ideal-int pkg syscall (netbsd-arm), const SYS_DUP3 ideal-int pkg syscall (netbsd-arm), const SYS_EXECVE ideal-int pkg syscall (netbsd-arm), const SYS_EXIT ideal-int pkg syscall (netbsd-arm), const SYS_EXTATTRCTL ideal-int pkg syscall (netbsd-arm), const SYS_EXTATTR_DELETE_FD ideal-int pkg syscall (netbsd-arm), const SYS_EXTATTR_DELETE_FILE ideal-int pkg syscall (netbsd-arm), const SYS_EXTATTR_DELETE_LINK ideal-int pkg syscall (netbsd-arm), const SYS_EXTATTR_GET_FD ideal-int pkg syscall (netbsd-arm), const SYS_EXTATTR_GET_FILE ideal-int pkg syscall (netbsd-arm), const SYS_EXTATTR_GET_LINK ideal-int pkg syscall (netbsd-arm), const SYS_EXTATTR_LIST_FD ideal-int pkg syscall (netbsd-arm), const SYS_EXTATTR_LIST_FILE ideal-int pkg syscall (netbsd-arm), const SYS_EXTATTR_LIST_LINK ideal-int pkg syscall (netbsd-arm), const SYS_EXTATTR_SET_FD ideal-int pkg syscall (netbsd-arm), const SYS_EXTATTR_SET_FILE ideal-int pkg syscall (netbsd-arm), const SYS_EXTATTR_SET_LINK ideal-int pkg syscall (netbsd-arm), const SYS_FACCESSAT ideal-int pkg syscall (netbsd-arm), const SYS_FCHDIR ideal-int pkg syscall (netbsd-arm), const SYS_FCHFLAGS ideal-int pkg syscall (netbsd-arm), const SYS_FCHMOD ideal-int pkg syscall (netbsd-arm), const SYS_FCHMODAT ideal-int pkg syscall (netbsd-arm), const SYS_FCHOWN ideal-int pkg syscall (netbsd-arm), const SYS_FCHOWNAT ideal-int pkg syscall (netbsd-arm), const SYS_FCHROOT ideal-int pkg syscall (netbsd-arm), const SYS_FCNTL ideal-int pkg syscall (netbsd-arm), const SYS_FDATASYNC ideal-int pkg syscall (netbsd-arm), const SYS_FEXECVE ideal-int pkg syscall (netbsd-arm), const SYS_FGETXATTR ideal-int pkg syscall (netbsd-arm), const SYS_FHSTAT ideal-int pkg syscall (netbsd-arm), const SYS_FKTRACE ideal-int pkg syscall (netbsd-arm), const SYS_FLISTXATTR ideal-int pkg syscall (netbsd-arm), const SYS_FLOCK ideal-int pkg syscall (netbsd-arm), const SYS_FORK ideal-int pkg syscall (netbsd-arm), const SYS_FPATHCONF ideal-int pkg syscall (netbsd-arm), const SYS_FREMOVEXATTR ideal-int pkg syscall (netbsd-arm), const SYS_FSETXATTR ideal-int pkg syscall (netbsd-arm), const SYS_FSTAT ideal-int pkg syscall (netbsd-arm), const SYS_FSTATAT ideal-int pkg syscall (netbsd-arm), const SYS_FSTATVFS1 ideal-int pkg syscall (netbsd-arm), const SYS_FSYNC ideal-int pkg syscall (netbsd-arm), const SYS_FSYNC_RANGE ideal-int pkg syscall (netbsd-arm), const SYS_FTRUNCATE ideal-int pkg syscall (netbsd-arm), const SYS_FUTIMENS ideal-int pkg syscall (netbsd-arm), const SYS_FUTIMES ideal-int pkg syscall (netbsd-arm), const SYS_GETCONTEXT ideal-int pkg syscall (netbsd-arm), const SYS_GETDENTS ideal-int pkg syscall (netbsd-arm), const SYS_GETEGID ideal-int pkg syscall (netbsd-arm), const SYS_GETEUID ideal-int pkg syscall (netbsd-arm), const SYS_GETFH ideal-int pkg syscall (netbsd-arm), const SYS_GETGID ideal-int pkg syscall (netbsd-arm), const SYS_GETGROUPS ideal-int pkg syscall (netbsd-arm), const SYS_GETITIMER ideal-int pkg syscall (netbsd-arm), const SYS_GETPEERNAME ideal-int pkg syscall (netbsd-arm), const SYS_GETPGID ideal-int pkg syscall (netbsd-arm), const SYS_GETPGRP ideal-int pkg syscall (netbsd-arm), const SYS_GETPID ideal-int pkg syscall (netbsd-arm), const SYS_GETPPID ideal-int pkg syscall (netbsd-arm), const SYS_GETPRIORITY ideal-int pkg syscall (netbsd-arm), const SYS_GETRLIMIT ideal-int pkg syscall (netbsd-arm), const SYS_GETRUSAGE ideal-int pkg syscall (netbsd-arm), const SYS_GETSID ideal-int pkg syscall (netbsd-arm), const SYS_GETSOCKNAME ideal-int pkg syscall (netbsd-arm), const SYS_GETSOCKOPT ideal-int pkg syscall (netbsd-arm), const SYS_GETTIMEOFDAY ideal-int pkg syscall (netbsd-arm), const SYS_GETUID ideal-int pkg syscall (netbsd-arm), const SYS_GETVFSSTAT ideal-int pkg syscall (netbsd-arm), const SYS_GETXATTR ideal-int pkg syscall (netbsd-arm), const SYS_IOCTL ideal-int pkg syscall (netbsd-arm), const SYS_ISSETUGID ideal-int pkg syscall (netbsd-arm), const SYS_KEVENT ideal-int pkg syscall (netbsd-arm), const SYS_KILL ideal-int pkg syscall (netbsd-arm), const SYS_KQUEUE ideal-int pkg syscall (netbsd-arm), const SYS_KQUEUE1 ideal-int pkg syscall (netbsd-arm), const SYS_KTRACE ideal-int pkg syscall (netbsd-arm), const SYS_LCHFLAGS ideal-int pkg syscall (netbsd-arm), const SYS_LCHMOD ideal-int pkg syscall (netbsd-arm), const SYS_LCHOWN ideal-int pkg syscall (netbsd-arm), const SYS_LGETXATTR ideal-int pkg syscall (netbsd-arm), const SYS_LINK ideal-int pkg syscall (netbsd-arm), const SYS_LINKAT ideal-int pkg syscall (netbsd-arm), const SYS_LISTEN ideal-int pkg syscall (netbsd-arm), const SYS_LISTXATTR ideal-int pkg syscall (netbsd-arm), const SYS_LLISTXATTR ideal-int pkg syscall (netbsd-arm), const SYS_LREMOVEXATTR ideal-int pkg syscall (netbsd-arm), const SYS_LSEEK ideal-int pkg syscall (netbsd-arm), const SYS_LSETXATTR ideal-int pkg syscall (netbsd-arm), const SYS_LSTAT ideal-int pkg syscall (netbsd-arm), const SYS_LUTIMES ideal-int pkg syscall (netbsd-arm), const SYS_MADVISE ideal-int pkg syscall (netbsd-arm), const SYS_MINCORE ideal-int pkg syscall (netbsd-arm), const SYS_MINHERIT ideal-int pkg syscall (netbsd-arm), const SYS_MKDIR ideal-int pkg syscall (netbsd-arm), const SYS_MKDIRAT ideal-int pkg syscall (netbsd-arm), const SYS_MKFIFO ideal-int pkg syscall (netbsd-arm), const SYS_MKFIFOAT ideal-int pkg syscall (netbsd-arm), const SYS_MKNOD ideal-int pkg syscall (netbsd-arm), const SYS_MKNODAT ideal-int pkg syscall (netbsd-arm), const SYS_MLOCK ideal-int pkg syscall (netbsd-arm), const SYS_MLOCKALL ideal-int pkg syscall (netbsd-arm), const SYS_MMAP ideal-int pkg syscall (netbsd-arm), const SYS_MODCTL ideal-int pkg syscall (netbsd-arm), const SYS_MOUNT ideal-int pkg syscall (netbsd-arm), const SYS_MPROTECT ideal-int pkg syscall (netbsd-arm), const SYS_MREMAP ideal-int pkg syscall (netbsd-arm), const SYS_MSGCTL ideal-int pkg syscall (netbsd-arm), const SYS_MSGGET ideal-int pkg syscall (netbsd-arm), const SYS_MSGRCV ideal-int pkg syscall (netbsd-arm), const SYS_MSGSND ideal-int pkg syscall (netbsd-arm), const SYS_MUNLOCK ideal-int pkg syscall (netbsd-arm), const SYS_MUNLOCKALL ideal-int pkg syscall (netbsd-arm), const SYS_MUNMAP ideal-int pkg syscall (netbsd-arm), const SYS_NANOSLEEP ideal-int pkg syscall (netbsd-arm), const SYS_NTP_ADJTIME ideal-int pkg syscall (netbsd-arm), const SYS_NTP_GETTIME ideal-int pkg syscall (netbsd-arm), const SYS_OPEN ideal-int pkg syscall (netbsd-arm), const SYS_OPENAT ideal-int pkg syscall (netbsd-arm), const SYS_PACCEPT ideal-int pkg syscall (netbsd-arm), const SYS_PATHCONF ideal-int pkg syscall (netbsd-arm), const SYS_PIPE ideal-int pkg syscall (netbsd-arm), const SYS_PIPE2 ideal-int pkg syscall (netbsd-arm), const SYS_PMC_CONTROL ideal-int pkg syscall (netbsd-arm), const SYS_PMC_GET_INFO ideal-int pkg syscall (netbsd-arm), const SYS_POLL ideal-int pkg syscall (netbsd-arm), const SYS_POLLTS ideal-int pkg syscall (netbsd-arm), const SYS_POSIX_FADVISE ideal-int pkg syscall (netbsd-arm), const SYS_POSIX_SPAWN ideal-int pkg syscall (netbsd-arm), const SYS_PREAD ideal-int pkg syscall (netbsd-arm), const SYS_PREADV ideal-int pkg syscall (netbsd-arm), const SYS_PROFIL ideal-int pkg syscall (netbsd-arm), const SYS_PSELECT ideal-int pkg syscall (netbsd-arm), const SYS_PSET_ASSIGN ideal-int pkg syscall (netbsd-arm), const SYS_PSET_CREATE ideal-int pkg syscall (netbsd-arm), const SYS_PSET_DESTROY ideal-int pkg syscall (netbsd-arm), const SYS_PTRACE ideal-int pkg syscall (netbsd-arm), const SYS_PWRITE ideal-int pkg syscall (netbsd-arm), const SYS_PWRITEV ideal-int pkg syscall (netbsd-arm), const SYS_RASCTL ideal-int pkg syscall (netbsd-arm), const SYS_READ ideal-int pkg syscall (netbsd-arm), const SYS_READLINK ideal-int pkg syscall (netbsd-arm), const SYS_READLINKAT ideal-int pkg syscall (netbsd-arm), const SYS_READV ideal-int pkg syscall (netbsd-arm), const SYS_REBOOT ideal-int pkg syscall (netbsd-arm), const SYS_RECVFROM ideal-int pkg syscall (netbsd-arm), const SYS_RECVMMSG ideal-int pkg syscall (netbsd-arm), const SYS_RECVMSG ideal-int pkg syscall (netbsd-arm), const SYS_REMOVEXATTR ideal-int pkg syscall (netbsd-arm), const SYS_RENAME ideal-int pkg syscall (netbsd-arm), const SYS_RENAMEAT ideal-int pkg syscall (netbsd-arm), const SYS_REVOKE ideal-int pkg syscall (netbsd-arm), const SYS_RMDIR ideal-int pkg syscall (netbsd-arm), const SYS_SBRK ideal-int pkg syscall (netbsd-arm), const SYS_SCHED_YIELD ideal-int pkg syscall (netbsd-arm), const SYS_SELECT ideal-int pkg syscall (netbsd-arm), const SYS_SEMCONFIG ideal-int pkg syscall (netbsd-arm), const SYS_SEMGET ideal-int pkg syscall (netbsd-arm), const SYS_SEMOP ideal-int pkg syscall (netbsd-arm), const SYS_SENDMMSG ideal-int pkg syscall (netbsd-arm), const SYS_SENDMSG ideal-int pkg syscall (netbsd-arm), const SYS_SENDTO ideal-int pkg syscall (netbsd-arm), const SYS_SETCONTEXT ideal-int pkg syscall (netbsd-arm), const SYS_SETEGID ideal-int pkg syscall (netbsd-arm), const SYS_SETEUID ideal-int pkg syscall (netbsd-arm), const SYS_SETGID ideal-int pkg syscall (netbsd-arm), const SYS_SETGROUPS ideal-int pkg syscall (netbsd-arm), const SYS_SETITIMER ideal-int pkg syscall (netbsd-arm), const SYS_SETPGID ideal-int pkg syscall (netbsd-arm), const SYS_SETPRIORITY ideal-int pkg syscall (netbsd-arm), const SYS_SETREGID ideal-int pkg syscall (netbsd-arm), const SYS_SETREUID ideal-int pkg syscall (netbsd-arm), const SYS_SETRLIMIT ideal-int pkg syscall (netbsd-arm), const SYS_SETSID ideal-int pkg syscall (netbsd-arm), const SYS_SETSOCKOPT ideal-int pkg syscall (netbsd-arm), const SYS_SETTIMEOFDAY ideal-int pkg syscall (netbsd-arm), const SYS_SETUID ideal-int pkg syscall (netbsd-arm), const SYS_SETXATTR ideal-int pkg syscall (netbsd-arm), const SYS_SHMAT ideal-int pkg syscall (netbsd-arm), const SYS_SHMCTL ideal-int pkg syscall (netbsd-arm), const SYS_SHMDT ideal-int pkg syscall (netbsd-arm), const SYS_SHMGET ideal-int pkg syscall (netbsd-arm), const SYS_SHUTDOWN ideal-int pkg syscall (netbsd-arm), const SYS_SIGQUEUEINFO ideal-int pkg syscall (netbsd-arm), const SYS_SOCKET ideal-int pkg syscall (netbsd-arm), const SYS_SOCKETPAIR ideal-int pkg syscall (netbsd-arm), const SYS_SSTK ideal-int pkg syscall (netbsd-arm), const SYS_STAT ideal-int pkg syscall (netbsd-arm), const SYS_STATVFS1 ideal-int pkg syscall (netbsd-arm), const SYS_SWAPCTL ideal-int pkg syscall (netbsd-arm), const SYS_SYMLINK ideal-int pkg syscall (netbsd-arm), const SYS_SYMLINKAT ideal-int pkg syscall (netbsd-arm), const SYS_SYNC ideal-int pkg syscall (netbsd-arm), const SYS_SYSARCH ideal-int pkg syscall (netbsd-arm), const SYS_TIMER_CREATE ideal-int pkg syscall (netbsd-arm), const SYS_TIMER_DELETE ideal-int pkg syscall (netbsd-arm), const SYS_TIMER_GETOVERRUN ideal-int pkg syscall (netbsd-arm), const SYS_TIMER_GETTIME ideal-int pkg syscall (netbsd-arm), const SYS_TIMER_SETTIME ideal-int pkg syscall (netbsd-arm), const SYS_TRUNCATE ideal-int pkg syscall (netbsd-arm), const SYS_UMASK ideal-int pkg syscall (netbsd-arm), const SYS_UNDELETE ideal-int pkg syscall (netbsd-arm), const SYS_UNLINK ideal-int pkg syscall (netbsd-arm), const SYS_UNLINKAT ideal-int pkg syscall (netbsd-arm), const SYS_UNMOUNT ideal-int pkg syscall (netbsd-arm), const SYS_UTIMENSAT ideal-int pkg syscall (netbsd-arm), const SYS_UTIMES ideal-int pkg syscall (netbsd-arm), const SYS_UTRACE ideal-int pkg syscall (netbsd-arm), const SYS_UUIDGEN ideal-int pkg syscall (netbsd-arm), const SYS_VADVISE ideal-int pkg syscall (netbsd-arm), const SYS_VFORK ideal-int pkg syscall (netbsd-arm), const SYS_WAIT4 ideal-int pkg syscall (netbsd-arm), const SYS_WRITE ideal-int pkg syscall (netbsd-arm), const SYS_WRITEV ideal-int pkg syscall (netbsd-arm), const SYS__LWP_CONTINUE ideal-int pkg syscall (netbsd-arm), const SYS__LWP_CREATE ideal-int pkg syscall (netbsd-arm), const SYS__LWP_CTL ideal-int pkg syscall (netbsd-arm), const SYS__LWP_DETACH ideal-int pkg syscall (netbsd-arm), const SYS__LWP_EXIT ideal-int pkg syscall (netbsd-arm), const SYS__LWP_GETNAME ideal-int pkg syscall (netbsd-arm), const SYS__LWP_GETPRIVATE ideal-int pkg syscall (netbsd-arm), const SYS__LWP_KILL ideal-int pkg syscall (netbsd-arm), const SYS__LWP_PARK ideal-int pkg syscall (netbsd-arm), const SYS__LWP_SELF ideal-int pkg syscall (netbsd-arm), const SYS__LWP_SETNAME ideal-int pkg syscall (netbsd-arm), const SYS__LWP_SETPRIVATE ideal-int pkg syscall (netbsd-arm), const SYS__LWP_SUSPEND ideal-int pkg syscall (netbsd-arm), const SYS__LWP_UNPARK ideal-int pkg syscall (netbsd-arm), const SYS__LWP_UNPARK_ALL ideal-int pkg syscall (netbsd-arm), const SYS__LWP_WAIT ideal-int pkg syscall (netbsd-arm), const SYS__LWP_WAKEUP ideal-int pkg syscall (netbsd-arm), const SYS__PSET_BIND ideal-int pkg syscall (netbsd-arm), const SYS__SCHED_GETAFFINITY ideal-int pkg syscall (netbsd-arm), const SYS__SCHED_GETPARAM ideal-int pkg syscall (netbsd-arm), const SYS__SCHED_SETAFFINITY ideal-int pkg syscall (netbsd-arm), const SYS__SCHED_SETPARAM ideal-int pkg syscall (netbsd-arm), const SYS___CLONE ideal-int pkg syscall (netbsd-arm), const SYS___GETCWD ideal-int pkg syscall (netbsd-arm), const SYS___GETLOGIN ideal-int pkg syscall (netbsd-arm), const SYS___POSIX_CHOWN ideal-int pkg syscall (netbsd-arm), const SYS___POSIX_FCHOWN ideal-int pkg syscall (netbsd-arm), const SYS___POSIX_LCHOWN ideal-int pkg syscall (netbsd-arm), const SYS___POSIX_RENAME ideal-int pkg syscall (netbsd-arm), const SYS___QUOTACTL ideal-int pkg syscall (netbsd-arm), const SYS___SEMCTL ideal-int pkg syscall (netbsd-arm), const SYS___SETLOGIN ideal-int pkg syscall (netbsd-arm), const SYS___SIGACTION_SIGTRAMP ideal-int pkg syscall (netbsd-arm), const SYS___SIGTIMEDWAIT ideal-int pkg syscall (netbsd-arm), const SYS___SYSCTL ideal-int pkg syscall (netbsd-arm), const S_ARCH1 ideal-int pkg syscall (netbsd-arm), const S_ARCH2 ideal-int pkg syscall (netbsd-arm), const S_BLKSIZE ideal-int pkg syscall (netbsd-arm), const S_IEXEC ideal-int pkg syscall (netbsd-arm), const S_IFWHT ideal-int pkg syscall (netbsd-arm), const S_IREAD ideal-int pkg syscall (netbsd-arm), const S_IRGRP ideal-int pkg syscall (netbsd-arm), const S_IROTH ideal-int pkg syscall (netbsd-arm), const S_IRWXG ideal-int pkg syscall (netbsd-arm), const S_IRWXO ideal-int pkg syscall (netbsd-arm), const S_IRWXU ideal-int pkg syscall (netbsd-arm), const S_ISTXT ideal-int pkg syscall (netbsd-arm), const S_IWGRP ideal-int pkg syscall (netbsd-arm), const S_IWOTH ideal-int pkg syscall (netbsd-arm), const S_IWRITE ideal-int pkg syscall (netbsd-arm), const S_IXGRP ideal-int pkg syscall (netbsd-arm), const S_IXOTH ideal-int pkg syscall (netbsd-arm), const SizeofBpfHdr ideal-int pkg syscall (netbsd-arm), const SizeofBpfInsn ideal-int pkg syscall (netbsd-arm), const SizeofBpfProgram ideal-int pkg syscall (netbsd-arm), const SizeofBpfStat ideal-int pkg syscall (netbsd-arm), const SizeofBpfVersion ideal-int pkg syscall (netbsd-arm), const SizeofCmsghdr ideal-int pkg syscall (netbsd-arm), const SizeofICMPv6Filter = 32 pkg syscall (netbsd-arm), const SizeofICMPv6Filter ideal-int pkg syscall (netbsd-arm), const SizeofIPMreq ideal-int pkg syscall (netbsd-arm), const SizeofIPv6MTUInfo = 32 pkg syscall (netbsd-arm), const SizeofIPv6MTUInfo ideal-int pkg syscall (netbsd-arm), const SizeofIPv6Mreq ideal-int pkg syscall (netbsd-arm), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (netbsd-arm), const SizeofIfData ideal-int pkg syscall (netbsd-arm), const SizeofIfMsghdr ideal-int pkg syscall (netbsd-arm), const SizeofIfaMsghdr ideal-int pkg syscall (netbsd-arm), const SizeofInet6Pktinfo ideal-int pkg syscall (netbsd-arm), const SizeofLinger ideal-int pkg syscall (netbsd-arm), const SizeofMsghdr ideal-int pkg syscall (netbsd-arm), const SizeofRtMetrics ideal-int pkg syscall (netbsd-arm), const SizeofRtMsghdr ideal-int pkg syscall (netbsd-arm), const SizeofSockaddrAny ideal-int pkg syscall (netbsd-arm), const SizeofSockaddrDatalink ideal-int pkg syscall (netbsd-arm), const SizeofSockaddrInet4 ideal-int pkg syscall (netbsd-arm), const SizeofSockaddrInet6 ideal-int pkg syscall (netbsd-arm), const SizeofSockaddrUnix ideal-int pkg syscall (netbsd-arm), const TCIFLUSH ideal-int pkg syscall (netbsd-arm), const TCIOFLUSH ideal-int pkg syscall (netbsd-arm), const TCOFLUSH ideal-int pkg syscall (netbsd-arm), const TCP_CONGCTL ideal-int pkg syscall (netbsd-arm), const TCP_KEEPCNT ideal-int pkg syscall (netbsd-arm), const TCP_KEEPIDLE ideal-int pkg syscall (netbsd-arm), const TCP_KEEPINIT ideal-int pkg syscall (netbsd-arm), const TCP_KEEPINTVL ideal-int pkg syscall (netbsd-arm), const TCP_MAXBURST ideal-int pkg syscall (netbsd-arm), const TCP_MAXSEG ideal-int pkg syscall (netbsd-arm), const TCP_MAXWIN ideal-int pkg syscall (netbsd-arm), const TCP_MAX_WINSHIFT ideal-int pkg syscall (netbsd-arm), const TCP_MD5SIG ideal-int pkg syscall (netbsd-arm), const TCP_MINMSS ideal-int pkg syscall (netbsd-arm), const TCP_MSS ideal-int pkg syscall (netbsd-arm), const TCSAFLUSH ideal-int pkg syscall (netbsd-arm), const TIOCCBRK ideal-int pkg syscall (netbsd-arm), const TIOCCDTR ideal-int pkg syscall (netbsd-arm), const TIOCCONS ideal-int pkg syscall (netbsd-arm), const TIOCDCDTIMESTAMP ideal-int pkg syscall (netbsd-arm), const TIOCDRAIN ideal-int pkg syscall (netbsd-arm), const TIOCEXCL ideal-int pkg syscall (netbsd-arm), const TIOCEXT ideal-int pkg syscall (netbsd-arm), const TIOCFLAG_CDTRCTS ideal-int pkg syscall (netbsd-arm), const TIOCFLAG_CLOCAL ideal-int pkg syscall (netbsd-arm), const TIOCFLAG_CRTSCTS ideal-int pkg syscall (netbsd-arm), const TIOCFLAG_MDMBUF ideal-int pkg syscall (netbsd-arm), const TIOCFLAG_SOFTCAR ideal-int pkg syscall (netbsd-arm), const TIOCFLUSH ideal-int pkg syscall (netbsd-arm), const TIOCGETA ideal-int pkg syscall (netbsd-arm), const TIOCGETD ideal-int pkg syscall (netbsd-arm), const TIOCGFLAGS ideal-int pkg syscall (netbsd-arm), const TIOCGLINED ideal-int pkg syscall (netbsd-arm), const TIOCGPGRP ideal-int pkg syscall (netbsd-arm), const TIOCGQSIZE ideal-int pkg syscall (netbsd-arm), const TIOCGRANTPT ideal-int pkg syscall (netbsd-arm), const TIOCGSID ideal-int pkg syscall (netbsd-arm), const TIOCGSIZE ideal-int pkg syscall (netbsd-arm), const TIOCGWINSZ ideal-int pkg syscall (netbsd-arm), const TIOCMBIC ideal-int pkg syscall (netbsd-arm), const TIOCMBIS ideal-int pkg syscall (netbsd-arm), const TIOCMGET ideal-int pkg syscall (netbsd-arm), const TIOCMSET ideal-int pkg syscall (netbsd-arm), const TIOCM_CAR ideal-int pkg syscall (netbsd-arm), const TIOCM_CD ideal-int pkg syscall (netbsd-arm), const TIOCM_CTS ideal-int pkg syscall (netbsd-arm), const TIOCM_DSR ideal-int pkg syscall (netbsd-arm), const TIOCM_DTR ideal-int pkg syscall (netbsd-arm), const TIOCM_LE ideal-int pkg syscall (netbsd-arm), const TIOCM_RI ideal-int pkg syscall (netbsd-arm), const TIOCM_RNG ideal-int pkg syscall (netbsd-arm), const TIOCM_RTS ideal-int pkg syscall (netbsd-arm), const TIOCM_SR ideal-int pkg syscall (netbsd-arm), const TIOCM_ST ideal-int pkg syscall (netbsd-arm), const TIOCNOTTY ideal-int pkg syscall (netbsd-arm), const TIOCNXCL ideal-int pkg syscall (netbsd-arm), const TIOCOUTQ ideal-int pkg syscall (netbsd-arm), const TIOCPKT ideal-int pkg syscall (netbsd-arm), const TIOCPKT_DATA ideal-int pkg syscall (netbsd-arm), const TIOCPKT_DOSTOP ideal-int pkg syscall (netbsd-arm), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (netbsd-arm), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (netbsd-arm), const TIOCPKT_IOCTL ideal-int pkg syscall (netbsd-arm), const TIOCPKT_NOSTOP ideal-int pkg syscall (netbsd-arm), const TIOCPKT_START ideal-int pkg syscall (netbsd-arm), const TIOCPKT_STOP ideal-int pkg syscall (netbsd-arm), const TIOCPTMGET ideal-int pkg syscall (netbsd-arm), const TIOCPTSNAME ideal-int pkg syscall (netbsd-arm), const TIOCRCVFRAME ideal-int pkg syscall (netbsd-arm), const TIOCREMOTE ideal-int pkg syscall (netbsd-arm), const TIOCSBRK ideal-int pkg syscall (netbsd-arm), const TIOCSCTTY ideal-int pkg syscall (netbsd-arm), const TIOCSDTR ideal-int pkg syscall (netbsd-arm), const TIOCSETA ideal-int pkg syscall (netbsd-arm), const TIOCSETAF ideal-int pkg syscall (netbsd-arm), const TIOCSETAW ideal-int pkg syscall (netbsd-arm), const TIOCSETD ideal-int pkg syscall (netbsd-arm), const TIOCSFLAGS ideal-int pkg syscall (netbsd-arm), const TIOCSIG ideal-int pkg syscall (netbsd-arm), const TIOCSLINED ideal-int pkg syscall (netbsd-arm), const TIOCSPGRP ideal-int pkg syscall (netbsd-arm), const TIOCSQSIZE ideal-int pkg syscall (netbsd-arm), const TIOCSSIZE ideal-int pkg syscall (netbsd-arm), const TIOCSTART ideal-int pkg syscall (netbsd-arm), const TIOCSTAT ideal-int pkg syscall (netbsd-arm), const TIOCSTI ideal-int pkg syscall (netbsd-arm), const TIOCSTOP ideal-int pkg syscall (netbsd-arm), const TIOCSWINSZ ideal-int pkg syscall (netbsd-arm), const TIOCUCNTL ideal-int pkg syscall (netbsd-arm), const TIOCXMTFRAME ideal-int pkg syscall (netbsd-arm), const TOSTOP ideal-int pkg syscall (netbsd-arm), const VDISCARD ideal-int pkg syscall (netbsd-arm), const VDSUSP ideal-int pkg syscall (netbsd-arm), const VEOF ideal-int pkg syscall (netbsd-arm), const VEOL ideal-int pkg syscall (netbsd-arm), const VEOL2 ideal-int pkg syscall (netbsd-arm), const VERASE ideal-int pkg syscall (netbsd-arm), const VINTR ideal-int pkg syscall (netbsd-arm), const VKILL ideal-int pkg syscall (netbsd-arm), const VLNEXT ideal-int pkg syscall (netbsd-arm), const VMIN ideal-int pkg syscall (netbsd-arm), const VQUIT ideal-int pkg syscall (netbsd-arm), const VREPRINT ideal-int pkg syscall (netbsd-arm), const VSTART ideal-int pkg syscall (netbsd-arm), const VSTATUS ideal-int pkg syscall (netbsd-arm), const VSTOP ideal-int pkg syscall (netbsd-arm), const VSUSP ideal-int pkg syscall (netbsd-arm), const VTIME ideal-int pkg syscall (netbsd-arm), const VWERASE ideal-int pkg syscall (netbsd-arm), const WALL ideal-int pkg syscall (netbsd-arm), const WALLSIG ideal-int pkg syscall (netbsd-arm), const WALTSIG ideal-int pkg syscall (netbsd-arm), const WCLONE ideal-int pkg syscall (netbsd-arm), const WCOREFLAG ideal-int pkg syscall (netbsd-arm), const WNOHANG ideal-int pkg syscall (netbsd-arm), const WNOWAIT ideal-int pkg syscall (netbsd-arm), const WNOZOMBIE ideal-int pkg syscall (netbsd-arm), const WOPTSCHECKED ideal-int pkg syscall (netbsd-arm), const WSTOPPED ideal-int pkg syscall (netbsd-arm), const WUNTRACED ideal-int pkg syscall (netbsd-arm), func Accept(int) (int, Sockaddr, error) pkg syscall (netbsd-arm), func Access(string, uint32) error pkg syscall (netbsd-arm), func Adjtime(*Timeval, *Timeval) error pkg syscall (netbsd-arm), func Bind(int, Sockaddr) error pkg syscall (netbsd-arm), func BpfBuflen(int) (int, error) pkg syscall (netbsd-arm), func BpfDatalink(int) (int, error) pkg syscall (netbsd-arm), func BpfHeadercmpl(int) (int, error) pkg syscall (netbsd-arm), func BpfInterface(int, string) (string, error) pkg syscall (netbsd-arm), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (netbsd-arm), func BpfStats(int) (*BpfStat, error) pkg syscall (netbsd-arm), func BpfStmt(int, int) *BpfInsn pkg syscall (netbsd-arm), func BpfTimeout(int) (*Timeval, error) pkg syscall (netbsd-arm), func CheckBpfVersion(int) error pkg syscall (netbsd-arm), func Chflags(string, int) error pkg syscall (netbsd-arm), func Chroot(string) error pkg syscall (netbsd-arm), func Close(int) error pkg syscall (netbsd-arm), func CloseOnExec(int) pkg syscall (netbsd-arm), func CmsgLen(int) int pkg syscall (netbsd-arm), func CmsgSpace(int) int pkg syscall (netbsd-arm), func Connect(int, Sockaddr) error pkg syscall (netbsd-arm), func Dup(int) (int, error) pkg syscall (netbsd-arm), func Dup2(int, int) error pkg syscall (netbsd-arm), func Fchdir(int) error pkg syscall (netbsd-arm), func Fchflags(string, int) error pkg syscall (netbsd-arm), func Fchmod(int, uint32) error pkg syscall (netbsd-arm), func Fchown(int, int, int) error pkg syscall (netbsd-arm), func Flock(int, int) error pkg syscall (netbsd-arm), func FlushBpf(int) error pkg syscall (netbsd-arm), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (netbsd-arm), func Fpathconf(int, int) (int, error) pkg syscall (netbsd-arm), func Fstat(int, *Stat_t) error pkg syscall (netbsd-arm), func Fsync(int) error pkg syscall (netbsd-arm), func Ftruncate(int, int64) error pkg syscall (netbsd-arm), func Futimes(int, []Timeval) error pkg syscall (netbsd-arm), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (netbsd-arm), func Getpeername(int) (Sockaddr, error) pkg syscall (netbsd-arm), func Getpgid(int) (int, error) pkg syscall (netbsd-arm), func Getpgrp() int pkg syscall (netbsd-arm), func Getpriority(int, int) (int, error) pkg syscall (netbsd-arm), func Getrlimit(int, *Rlimit) error pkg syscall (netbsd-arm), func Getrusage(int, *Rusage) error pkg syscall (netbsd-arm), func Getsid(int) (int, error) pkg syscall (netbsd-arm), func Getsockname(int) (Sockaddr, error) pkg syscall (netbsd-arm), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (netbsd-arm), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (netbsd-arm), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (netbsd-arm), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (netbsd-arm), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (netbsd-arm), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (netbsd-arm), func GetsockoptInt(int, int, int) (int, error) pkg syscall (netbsd-arm), func Issetugid() bool pkg syscall (netbsd-arm), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (netbsd-arm), func Kill(int, Signal) error pkg syscall (netbsd-arm), func Kqueue() (int, error) pkg syscall (netbsd-arm), func Listen(int, int) error pkg syscall (netbsd-arm), func Lstat(string, *Stat_t) error pkg syscall (netbsd-arm), func Mkfifo(string, uint32) error pkg syscall (netbsd-arm), func Mknod(string, uint32, int) error pkg syscall (netbsd-arm), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (netbsd-arm), func Munmap([]uint8) error pkg syscall (netbsd-arm), func Nanosleep(*Timespec, *Timespec) error pkg syscall (netbsd-arm), func Open(string, int, uint32) (int, error) pkg syscall (netbsd-arm), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (netbsd-arm), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (netbsd-arm), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (netbsd-arm), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (netbsd-arm), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (netbsd-arm), func Pathconf(string, int) (int, error) pkg syscall (netbsd-arm), func Pipe([]int) error pkg syscall (netbsd-arm), func Pread(int, []uint8, int64) (int, error) pkg syscall (netbsd-arm), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (netbsd-arm), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-arm), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-arm), func Read(int, []uint8) (int, error) pkg syscall (netbsd-arm), func ReadDirent(int, []uint8) (int, error) pkg syscall (netbsd-arm), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (netbsd-arm), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (netbsd-arm), func Revoke(string) error pkg syscall (netbsd-arm), func RouteRIB(int, int) ([]uint8, error) pkg syscall (netbsd-arm), func Seek(int, int64, int) (int64, error) pkg syscall (netbsd-arm), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (netbsd-arm), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (netbsd-arm), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (netbsd-arm), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (netbsd-arm), func SetBpf(int, []BpfInsn) error pkg syscall (netbsd-arm), func SetBpfBuflen(int, int) (int, error) pkg syscall (netbsd-arm), func SetBpfDatalink(int, int) (int, error) pkg syscall (netbsd-arm), func SetBpfHeadercmpl(int, int) error pkg syscall (netbsd-arm), func SetBpfImmediate(int, int) error pkg syscall (netbsd-arm), func SetBpfInterface(int, string) error pkg syscall (netbsd-arm), func SetBpfPromisc(int, int) error pkg syscall (netbsd-arm), func SetBpfTimeout(int, *Timeval) error pkg syscall (netbsd-arm), func SetKevent(*Kevent_t, int, int, int) pkg syscall (netbsd-arm), func SetNonblock(int, bool) error pkg syscall (netbsd-arm), func Setegid(int) error pkg syscall (netbsd-arm), func Seteuid(int) error pkg syscall (netbsd-arm), func Setgid(int) error pkg syscall (netbsd-arm), func Setgroups([]int) error pkg syscall (netbsd-arm), func Setpgid(int, int) error pkg syscall (netbsd-arm), func Setpriority(int, int, int) error pkg syscall (netbsd-arm), func Setregid(int, int) error pkg syscall (netbsd-arm), func Setreuid(int, int) error pkg syscall (netbsd-arm), func Setrlimit(int, *Rlimit) error pkg syscall (netbsd-arm), func Setsid() (int, error) pkg syscall (netbsd-arm), func SetsockoptByte(int, int, int, uint8) error pkg syscall (netbsd-arm), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (netbsd-arm), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (netbsd-arm), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (netbsd-arm), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (netbsd-arm), func SetsockoptInt(int, int, int, int) error pkg syscall (netbsd-arm), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (netbsd-arm), func SetsockoptString(int, int, int, string) error pkg syscall (netbsd-arm), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (netbsd-arm), func Settimeofday(*Timeval) error pkg syscall (netbsd-arm), func Setuid(int) error pkg syscall (netbsd-arm), func Shutdown(int, int) error pkg syscall (netbsd-arm), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (netbsd-arm), func Socket(int, int, int) (int, error) pkg syscall (netbsd-arm), func Socketpair(int, int, int) ([2]int, error) pkg syscall (netbsd-arm), func Stat(string, *Stat_t) error pkg syscall (netbsd-arm), func StringSlicePtr([]string) []*uint8 pkg syscall (netbsd-arm), func Sync() error pkg syscall (netbsd-arm), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-arm), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-arm), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-arm), func Sysctl(string) (string, error) pkg syscall (netbsd-arm), func SysctlUint32(string) (uint32, error) pkg syscall (netbsd-arm), func TimevalToNsec(Timeval) int64 pkg syscall (netbsd-arm), func Truncate(string, int64) error pkg syscall (netbsd-arm), func Umask(int) int pkg syscall (netbsd-arm), func UnixRights(...int) []uint8 pkg syscall (netbsd-arm), func Unmount(string, int) error pkg syscall (netbsd-arm), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (netbsd-arm), func Write(int, []uint8) (int, error) pkg syscall (netbsd-arm), method (*Cmsghdr) SetLen(int) pkg syscall (netbsd-arm), method (*Iovec) SetLen(int) pkg syscall (netbsd-arm), method (*Msghdr) SetControllen(int) pkg syscall (netbsd-arm), type BpfHdr struct pkg syscall (netbsd-arm), type BpfHdr struct, Caplen uint32 pkg syscall (netbsd-arm), type BpfHdr struct, Datalen uint32 pkg syscall (netbsd-arm), type BpfHdr struct, Hdrlen uint16 pkg syscall (netbsd-arm), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-arm), type BpfHdr struct, Tstamp BpfTimeval pkg syscall (netbsd-arm), type BpfInsn struct pkg syscall (netbsd-arm), type BpfInsn struct, Code uint16 pkg syscall (netbsd-arm), type BpfInsn struct, Jf uint8 pkg syscall (netbsd-arm), type BpfInsn struct, Jt uint8 pkg syscall (netbsd-arm), type BpfInsn struct, K uint32 pkg syscall (netbsd-arm), type BpfProgram struct pkg syscall (netbsd-arm), type BpfProgram struct, Insns *BpfInsn pkg syscall (netbsd-arm), type BpfProgram struct, Len uint32 pkg syscall (netbsd-arm), type BpfStat struct pkg syscall (netbsd-arm), type BpfStat struct, Capt uint64 pkg syscall (netbsd-arm), type BpfStat struct, Drop uint64 pkg syscall (netbsd-arm), type BpfStat struct, Padding [13]uint64 pkg syscall (netbsd-arm), type BpfStat struct, Recv uint64 pkg syscall (netbsd-arm), type BpfTimeval struct pkg syscall (netbsd-arm), type BpfTimeval struct, Sec int32 pkg syscall (netbsd-arm), type BpfTimeval struct, Usec int32 pkg syscall (netbsd-arm), type BpfVersion struct pkg syscall (netbsd-arm), type BpfVersion struct, Major uint16 pkg syscall (netbsd-arm), type BpfVersion struct, Minor uint16 pkg syscall (netbsd-arm), type Cmsghdr struct pkg syscall (netbsd-arm), type Cmsghdr struct, Len uint32 pkg syscall (netbsd-arm), type Cmsghdr struct, Level int32 pkg syscall (netbsd-arm), type Cmsghdr struct, Type int32 pkg syscall (netbsd-arm), type Credential struct pkg syscall (netbsd-arm), type Credential struct, Gid uint32 pkg syscall (netbsd-arm), type Credential struct, Groups []uint32 pkg syscall (netbsd-arm), type Credential struct, Uid uint32 pkg syscall (netbsd-arm), type Dirent struct pkg syscall (netbsd-arm), type Dirent struct, Fileno uint64 pkg syscall (netbsd-arm), type Dirent struct, Name [512]int8 pkg syscall (netbsd-arm), type Dirent struct, Namlen uint16 pkg syscall (netbsd-arm), type Dirent struct, Pad_cgo_0 [3]uint8 pkg syscall (netbsd-arm), type Dirent struct, Reclen uint16 pkg syscall (netbsd-arm), type Dirent struct, Type uint8 pkg syscall (netbsd-arm), type FdSet struct pkg syscall (netbsd-arm), type FdSet struct, Bits [8]uint32 pkg syscall (netbsd-arm), type Flock_t struct pkg syscall (netbsd-arm), type Flock_t struct, Len int64 pkg syscall (netbsd-arm), type Flock_t struct, Pid int32 pkg syscall (netbsd-arm), type Flock_t struct, Start int64 pkg syscall (netbsd-arm), type Flock_t struct, Type int16 pkg syscall (netbsd-arm), type Flock_t struct, Whence int16 pkg syscall (netbsd-arm), type Fsid struct pkg syscall (netbsd-arm), type Fsid struct, X__fsid_val [2]int32 pkg syscall (netbsd-arm), type ICMPv6Filter struct pkg syscall (netbsd-arm), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (netbsd-arm), type IPv6MTUInfo struct pkg syscall (netbsd-arm), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (netbsd-arm), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (netbsd-arm), type IfAnnounceMsghdr struct pkg syscall (netbsd-arm), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (netbsd-arm), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (netbsd-arm), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (netbsd-arm), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (netbsd-arm), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (netbsd-arm), type IfAnnounceMsghdr struct, What uint16 pkg syscall (netbsd-arm), type IfData struct pkg syscall (netbsd-arm), type IfData struct, Addrlen uint8 pkg syscall (netbsd-arm), type IfData struct, Baudrate uint64 pkg syscall (netbsd-arm), type IfData struct, Collisions uint64 pkg syscall (netbsd-arm), type IfData struct, Hdrlen uint8 pkg syscall (netbsd-arm), type IfData struct, Ibytes uint64 pkg syscall (netbsd-arm), type IfData struct, Ierrors uint64 pkg syscall (netbsd-arm), type IfData struct, Imcasts uint64 pkg syscall (netbsd-arm), type IfData struct, Ipackets uint64 pkg syscall (netbsd-arm), type IfData struct, Iqdrops uint64 pkg syscall (netbsd-arm), type IfData struct, Lastchange Timespec pkg syscall (netbsd-arm), type IfData struct, Link_state int32 pkg syscall (netbsd-arm), type IfData struct, Metric uint64 pkg syscall (netbsd-arm), type IfData struct, Mtu uint64 pkg syscall (netbsd-arm), type IfData struct, Noproto uint64 pkg syscall (netbsd-arm), type IfData struct, Obytes uint64 pkg syscall (netbsd-arm), type IfData struct, Oerrors uint64 pkg syscall (netbsd-arm), type IfData struct, Omcasts uint64 pkg syscall (netbsd-arm), type IfData struct, Opackets uint64 pkg syscall (netbsd-arm), type IfData struct, Pad_cgo_0 [1]uint8 pkg syscall (netbsd-arm), type IfData struct, Type uint8 pkg syscall (netbsd-arm), type IfMsghdr struct pkg syscall (netbsd-arm), type IfMsghdr struct, Addrs int32 pkg syscall (netbsd-arm), type IfMsghdr struct, Data IfData pkg syscall (netbsd-arm), type IfMsghdr struct, Flags int32 pkg syscall (netbsd-arm), type IfMsghdr struct, Index uint16 pkg syscall (netbsd-arm), type IfMsghdr struct, Msglen uint16 pkg syscall (netbsd-arm), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-arm), type IfMsghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-arm), type IfMsghdr struct, Type uint8 pkg syscall (netbsd-arm), type IfMsghdr struct, Version uint8 pkg syscall (netbsd-arm), type IfaMsghdr struct pkg syscall (netbsd-arm), type IfaMsghdr struct, Addrs int32 pkg syscall (netbsd-arm), type IfaMsghdr struct, Flags int32 pkg syscall (netbsd-arm), type IfaMsghdr struct, Index uint16 pkg syscall (netbsd-arm), type IfaMsghdr struct, Metric int32 pkg syscall (netbsd-arm), type IfaMsghdr struct, Msglen uint16 pkg syscall (netbsd-arm), type IfaMsghdr struct, Pad_cgo_0 [6]uint8 pkg syscall (netbsd-arm), type IfaMsghdr struct, Type uint8 pkg syscall (netbsd-arm), type IfaMsghdr struct, Version uint8 pkg syscall (netbsd-arm), type Inet6Pktinfo struct pkg syscall (netbsd-arm), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (netbsd-arm), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (netbsd-arm), type InterfaceAddrMessage struct pkg syscall (netbsd-arm), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (netbsd-arm), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (netbsd-arm), type InterfaceAnnounceMessage struct pkg syscall (netbsd-arm), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (netbsd-arm), type InterfaceMessage struct pkg syscall (netbsd-arm), type InterfaceMessage struct, Data []uint8 pkg syscall (netbsd-arm), type InterfaceMessage struct, Header IfMsghdr pkg syscall (netbsd-arm), type Iovec struct pkg syscall (netbsd-arm), type Iovec struct, Base *uint8 pkg syscall (netbsd-arm), type Iovec struct, Len uint32 pkg syscall (netbsd-arm), type Kevent_t struct pkg syscall (netbsd-arm), type Kevent_t struct, Data int64 pkg syscall (netbsd-arm), type Kevent_t struct, Fflags uint32 pkg syscall (netbsd-arm), type Kevent_t struct, Filter uint32 pkg syscall (netbsd-arm), type Kevent_t struct, Flags uint32 pkg syscall (netbsd-arm), type Kevent_t struct, Ident uint32 pkg syscall (netbsd-arm), type Kevent_t struct, Udata int32 pkg syscall (netbsd-arm), type Mclpool [0]uint8 pkg syscall (netbsd-arm), type Msghdr struct pkg syscall (netbsd-arm), type Msghdr struct, Control *uint8 pkg syscall (netbsd-arm), type Msghdr struct, Controllen uint32 pkg syscall (netbsd-arm), type Msghdr struct, Flags int32 pkg syscall (netbsd-arm), type Msghdr struct, Iov *Iovec pkg syscall (netbsd-arm), type Msghdr struct, Iovlen int32 pkg syscall (netbsd-arm), type Msghdr struct, Name *uint8 pkg syscall (netbsd-arm), type Msghdr struct, Namelen uint32 pkg syscall (netbsd-arm), type RawSockaddr struct, Data [14]int8 pkg syscall (netbsd-arm), type RawSockaddr struct, Family uint8 pkg syscall (netbsd-arm), type RawSockaddr struct, Len uint8 pkg syscall (netbsd-arm), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (netbsd-arm), type RawSockaddrDatalink struct pkg syscall (netbsd-arm), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (netbsd-arm), type RawSockaddrDatalink struct, Data [12]int8 pkg syscall (netbsd-arm), type RawSockaddrDatalink struct, Family uint8 pkg syscall (netbsd-arm), type RawSockaddrDatalink struct, Index uint16 pkg syscall (netbsd-arm), type RawSockaddrDatalink struct, Len uint8 pkg syscall (netbsd-arm), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (netbsd-arm), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (netbsd-arm), type RawSockaddrDatalink struct, Type uint8 pkg syscall (netbsd-arm), type RawSockaddrInet4 struct, Family uint8 pkg syscall (netbsd-arm), type RawSockaddrInet4 struct, Len uint8 pkg syscall (netbsd-arm), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (netbsd-arm), type RawSockaddrInet6 struct, Family uint8 pkg syscall (netbsd-arm), type RawSockaddrInet6 struct, Len uint8 pkg syscall (netbsd-arm), type RawSockaddrUnix struct pkg syscall (netbsd-arm), type RawSockaddrUnix struct, Family uint8 pkg syscall (netbsd-arm), type RawSockaddrUnix struct, Len uint8 pkg syscall (netbsd-arm), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (netbsd-arm), type Rlimit struct pkg syscall (netbsd-arm), type Rlimit struct, Cur uint64 pkg syscall (netbsd-arm), type Rlimit struct, Max uint64 pkg syscall (netbsd-arm), type RouteMessage struct pkg syscall (netbsd-arm), type RouteMessage struct, Data []uint8 pkg syscall (netbsd-arm), type RouteMessage struct, Header RtMsghdr pkg syscall (netbsd-arm), type RoutingMessage interface, unexported methods pkg syscall (netbsd-arm), type RtMetrics struct pkg syscall (netbsd-arm), type RtMetrics struct, Expire int64 pkg syscall (netbsd-arm), type RtMetrics struct, Hopcount uint64 pkg syscall (netbsd-arm), type RtMetrics struct, Locks uint64 pkg syscall (netbsd-arm), type RtMetrics struct, Mtu uint64 pkg syscall (netbsd-arm), type RtMetrics struct, Pksent int64 pkg syscall (netbsd-arm), type RtMetrics struct, Recvpipe uint64 pkg syscall (netbsd-arm), type RtMetrics struct, Rtt uint64 pkg syscall (netbsd-arm), type RtMetrics struct, Rttvar uint64 pkg syscall (netbsd-arm), type RtMetrics struct, Sendpipe uint64 pkg syscall (netbsd-arm), type RtMetrics struct, Ssthresh uint64 pkg syscall (netbsd-arm), type RtMsghdr struct pkg syscall (netbsd-arm), type RtMsghdr struct, Addrs int32 pkg syscall (netbsd-arm), type RtMsghdr struct, Errno int32 pkg syscall (netbsd-arm), type RtMsghdr struct, Flags int32 pkg syscall (netbsd-arm), type RtMsghdr struct, Index uint16 pkg syscall (netbsd-arm), type RtMsghdr struct, Inits int32 pkg syscall (netbsd-arm), type RtMsghdr struct, Msglen uint16 pkg syscall (netbsd-arm), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-arm), type RtMsghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-arm), type RtMsghdr struct, Pid int32 pkg syscall (netbsd-arm), type RtMsghdr struct, Rmx RtMetrics pkg syscall (netbsd-arm), type RtMsghdr struct, Seq int32 pkg syscall (netbsd-arm), type RtMsghdr struct, Type uint8 pkg syscall (netbsd-arm), type RtMsghdr struct, Use int32 pkg syscall (netbsd-arm), type RtMsghdr struct, Version uint8 pkg syscall (netbsd-arm), type Rusage struct, Idrss int32 pkg syscall (netbsd-arm), type Rusage struct, Inblock int32 pkg syscall (netbsd-arm), type Rusage struct, Isrss int32 pkg syscall (netbsd-arm), type Rusage struct, Ixrss int32 pkg syscall (netbsd-arm), type Rusage struct, Majflt int32 pkg syscall (netbsd-arm), type Rusage struct, Maxrss int32 pkg syscall (netbsd-arm), type Rusage struct, Minflt int32 pkg syscall (netbsd-arm), type Rusage struct, Msgrcv int32 pkg syscall (netbsd-arm), type Rusage struct, Msgsnd int32 pkg syscall (netbsd-arm), type Rusage struct, Nivcsw int32 pkg syscall (netbsd-arm), type Rusage struct, Nsignals int32 pkg syscall (netbsd-arm), type Rusage struct, Nswap int32 pkg syscall (netbsd-arm), type Rusage struct, Nvcsw int32 pkg syscall (netbsd-arm), type Rusage struct, Oublock int32 pkg syscall (netbsd-arm), type Rusage struct, Stime Timeval pkg syscall (netbsd-arm), type Rusage struct, Utime Timeval pkg syscall (netbsd-arm), type SockaddrDatalink struct pkg syscall (netbsd-arm), type SockaddrDatalink struct, Alen uint8 pkg syscall (netbsd-arm), type SockaddrDatalink struct, Data [12]int8 pkg syscall (netbsd-arm), type SockaddrDatalink struct, Family uint8 pkg syscall (netbsd-arm), type SockaddrDatalink struct, Index uint16 pkg syscall (netbsd-arm), type SockaddrDatalink struct, Len uint8 pkg syscall (netbsd-arm), type SockaddrDatalink struct, Nlen uint8 pkg syscall (netbsd-arm), type SockaddrDatalink struct, Slen uint8 pkg syscall (netbsd-arm), type SockaddrDatalink struct, Type uint8 pkg syscall (netbsd-arm), type SocketControlMessage struct pkg syscall (netbsd-arm), type SocketControlMessage struct, Data []uint8 pkg syscall (netbsd-arm), type SocketControlMessage struct, Header Cmsghdr pkg syscall (netbsd-arm), type Stat_t struct pkg syscall (netbsd-arm), type Stat_t struct, Atimespec Timespec pkg syscall (netbsd-arm), type Stat_t struct, Birthtimespec Timespec pkg syscall (netbsd-arm), type Stat_t struct, Blksize uint32 pkg syscall (netbsd-arm), type Stat_t struct, Blocks int64 pkg syscall (netbsd-arm), type Stat_t struct, Ctimespec Timespec pkg syscall (netbsd-arm), type Stat_t struct, Dev uint64 pkg syscall (netbsd-arm), type Stat_t struct, Flags uint32 pkg syscall (netbsd-arm), type Stat_t struct, Gen uint32 pkg syscall (netbsd-arm), type Stat_t struct, Gid uint32 pkg syscall (netbsd-arm), type Stat_t struct, Ino uint64 pkg syscall (netbsd-arm), type Stat_t struct, Mode uint32 pkg syscall (netbsd-arm), type Stat_t struct, Mtimespec Timespec pkg syscall (netbsd-arm), type Stat_t struct, Nlink uint32 pkg syscall (netbsd-arm), type Stat_t struct, Rdev uint64 pkg syscall (netbsd-arm), type Stat_t struct, Size int64 pkg syscall (netbsd-arm), type Stat_t struct, Spare [2]uint32 pkg syscall (netbsd-arm), type Stat_t struct, Uid uint32 pkg syscall (netbsd-arm), type Statfs_t [0]uint8 pkg syscall (netbsd-arm), type SysProcAttr struct, Chroot string pkg syscall (netbsd-arm), type SysProcAttr struct, Credential *Credential pkg syscall (netbsd-arm), type SysProcAttr struct, Noctty bool pkg syscall (netbsd-arm), type SysProcAttr struct, Ptrace bool pkg syscall (netbsd-arm), type SysProcAttr struct, Setctty bool pkg syscall (netbsd-arm), type SysProcAttr struct, Setpgid bool pkg syscall (netbsd-arm), type SysProcAttr struct, Setsid bool pkg syscall (netbsd-arm), type Sysctlnode struct pkg syscall (netbsd-arm), type Sysctlnode struct, Flags uint32 pkg syscall (netbsd-arm), type Sysctlnode struct, Name [32]int8 pkg syscall (netbsd-arm), type Sysctlnode struct, Num int32 pkg syscall (netbsd-arm), type Sysctlnode struct, Un [16]uint8 pkg syscall (netbsd-arm), type Sysctlnode struct, Ver uint32 pkg syscall (netbsd-arm), type Sysctlnode struct, X__rsvd uint32 pkg syscall (netbsd-arm), type Sysctlnode struct, X_sysctl_desc [8]uint8 pkg syscall (netbsd-arm), type Sysctlnode struct, X_sysctl_func [8]uint8 pkg syscall (netbsd-arm), type Sysctlnode struct, X_sysctl_parent [8]uint8 pkg syscall (netbsd-arm), type Sysctlnode struct, X_sysctl_size [8]uint8 pkg syscall (netbsd-arm), type Timespec struct, Nsec int32 pkg syscall (netbsd-arm), type Timespec struct, Sec int64 pkg syscall (netbsd-arm), type Timeval struct, Sec int64 pkg syscall (netbsd-arm), type Timeval struct, Usec int32 pkg syscall (netbsd-arm), type WaitStatus uint32 pkg syscall (netbsd-arm), var Stderr int pkg syscall (netbsd-arm), var Stdin int pkg syscall (netbsd-arm), var Stdout int pkg syscall (netbsd-arm-cgo), const AF_APPLETALK ideal-int pkg syscall (netbsd-arm-cgo), const AF_ARP ideal-int pkg syscall (netbsd-arm-cgo), const AF_BLUETOOTH ideal-int pkg syscall (netbsd-arm-cgo), const AF_CCITT ideal-int pkg syscall (netbsd-arm-cgo), const AF_CHAOS ideal-int pkg syscall (netbsd-arm-cgo), const AF_CNT ideal-int pkg syscall (netbsd-arm-cgo), const AF_COIP ideal-int pkg syscall (netbsd-arm-cgo), const AF_DATAKIT ideal-int pkg syscall (netbsd-arm-cgo), const AF_DECnet ideal-int pkg syscall (netbsd-arm-cgo), const AF_DLI ideal-int pkg syscall (netbsd-arm-cgo), const AF_E164 ideal-int pkg syscall (netbsd-arm-cgo), const AF_ECMA ideal-int pkg syscall (netbsd-arm-cgo), const AF_HYLINK ideal-int pkg syscall (netbsd-arm-cgo), const AF_IEEE80211 ideal-int pkg syscall (netbsd-arm-cgo), const AF_IMPLINK ideal-int pkg syscall (netbsd-arm-cgo), const AF_IPX ideal-int pkg syscall (netbsd-arm-cgo), const AF_ISDN ideal-int pkg syscall (netbsd-arm-cgo), const AF_ISO ideal-int pkg syscall (netbsd-arm-cgo), const AF_LAT ideal-int pkg syscall (netbsd-arm-cgo), const AF_LINK ideal-int pkg syscall (netbsd-arm-cgo), const AF_LOCAL ideal-int pkg syscall (netbsd-arm-cgo), const AF_MAX ideal-int pkg syscall (netbsd-arm-cgo), const AF_MPLS ideal-int pkg syscall (netbsd-arm-cgo), const AF_NATM ideal-int pkg syscall (netbsd-arm-cgo), const AF_NS ideal-int pkg syscall (netbsd-arm-cgo), const AF_OROUTE ideal-int pkg syscall (netbsd-arm-cgo), const AF_OSI ideal-int pkg syscall (netbsd-arm-cgo), const AF_PUP ideal-int pkg syscall (netbsd-arm-cgo), const AF_ROUTE ideal-int pkg syscall (netbsd-arm-cgo), const AF_SNA ideal-int pkg syscall (netbsd-arm-cgo), const ARPHRD_ARCNET ideal-int pkg syscall (netbsd-arm-cgo), const ARPHRD_ETHER ideal-int pkg syscall (netbsd-arm-cgo), const ARPHRD_FRELAY ideal-int pkg syscall (netbsd-arm-cgo), const ARPHRD_IEEE1394 ideal-int pkg syscall (netbsd-arm-cgo), const ARPHRD_IEEE802 ideal-int pkg syscall (netbsd-arm-cgo), const ARPHRD_STRIP ideal-int pkg syscall (netbsd-arm-cgo), const B0 ideal-int pkg syscall (netbsd-arm-cgo), const B110 ideal-int pkg syscall (netbsd-arm-cgo), const B115200 ideal-int pkg syscall (netbsd-arm-cgo), const B1200 ideal-int pkg syscall (netbsd-arm-cgo), const B134 ideal-int pkg syscall (netbsd-arm-cgo), const B14400 ideal-int pkg syscall (netbsd-arm-cgo), const B150 ideal-int pkg syscall (netbsd-arm-cgo), const B1800 ideal-int pkg syscall (netbsd-arm-cgo), const B19200 ideal-int pkg syscall (netbsd-arm-cgo), const B200 ideal-int pkg syscall (netbsd-arm-cgo), const B230400 ideal-int pkg syscall (netbsd-arm-cgo), const B2400 ideal-int pkg syscall (netbsd-arm-cgo), const B28800 ideal-int pkg syscall (netbsd-arm-cgo), const B300 ideal-int pkg syscall (netbsd-arm-cgo), const B38400 ideal-int pkg syscall (netbsd-arm-cgo), const B460800 ideal-int pkg syscall (netbsd-arm-cgo), const B4800 ideal-int pkg syscall (netbsd-arm-cgo), const B50 ideal-int pkg syscall (netbsd-arm-cgo), const B57600 ideal-int pkg syscall (netbsd-arm-cgo), const B600 ideal-int pkg syscall (netbsd-arm-cgo), const B7200 ideal-int pkg syscall (netbsd-arm-cgo), const B75 ideal-int pkg syscall (netbsd-arm-cgo), const B76800 ideal-int pkg syscall (netbsd-arm-cgo), const B921600 ideal-int pkg syscall (netbsd-arm-cgo), const B9600 ideal-int pkg syscall (netbsd-arm-cgo), const BIOCFEEDBACK ideal-int pkg syscall (netbsd-arm-cgo), const BIOCFLUSH ideal-int pkg syscall (netbsd-arm-cgo), const BIOCGBLEN ideal-int pkg syscall (netbsd-arm-cgo), const BIOCGDLT ideal-int pkg syscall (netbsd-arm-cgo), const BIOCGDLTLIST ideal-int pkg syscall (netbsd-arm-cgo), const BIOCGETIF ideal-int pkg syscall (netbsd-arm-cgo), const BIOCGFEEDBACK ideal-int pkg syscall (netbsd-arm-cgo), const BIOCGHDRCMPLT ideal-int pkg syscall (netbsd-arm-cgo), const BIOCGRTIMEOUT ideal-int pkg syscall (netbsd-arm-cgo), const BIOCGSEESENT ideal-int pkg syscall (netbsd-arm-cgo), const BIOCGSTATS ideal-int pkg syscall (netbsd-arm-cgo), const BIOCGSTATSOLD ideal-int pkg syscall (netbsd-arm-cgo), const BIOCIMMEDIATE ideal-int pkg syscall (netbsd-arm-cgo), const BIOCPROMISC ideal-int pkg syscall (netbsd-arm-cgo), const BIOCSBLEN ideal-int pkg syscall (netbsd-arm-cgo), const BIOCSDLT ideal-int pkg syscall (netbsd-arm-cgo), const BIOCSETF ideal-int pkg syscall (netbsd-arm-cgo), const BIOCSETIF ideal-int pkg syscall (netbsd-arm-cgo), const BIOCSFEEDBACK ideal-int pkg syscall (netbsd-arm-cgo), const BIOCSHDRCMPLT ideal-int pkg syscall (netbsd-arm-cgo), const BIOCSRTIMEOUT ideal-int pkg syscall (netbsd-arm-cgo), const BIOCSSEESENT ideal-int pkg syscall (netbsd-arm-cgo), const BIOCSTCPF ideal-int pkg syscall (netbsd-arm-cgo), const BIOCSUDPF ideal-int pkg syscall (netbsd-arm-cgo), const BIOCVERSION ideal-int pkg syscall (netbsd-arm-cgo), const BPF_A ideal-int pkg syscall (netbsd-arm-cgo), const BPF_ABS ideal-int pkg syscall (netbsd-arm-cgo), const BPF_ADD ideal-int pkg syscall (netbsd-arm-cgo), const BPF_ALIGNMENT ideal-int pkg syscall (netbsd-arm-cgo), const BPF_ALIGNMENT32 ideal-int pkg syscall (netbsd-arm-cgo), const BPF_ALU ideal-int pkg syscall (netbsd-arm-cgo), const BPF_AND ideal-int pkg syscall (netbsd-arm-cgo), const BPF_B ideal-int pkg syscall (netbsd-arm-cgo), const BPF_DFLTBUFSIZE ideal-int pkg syscall (netbsd-arm-cgo), const BPF_DIV ideal-int pkg syscall (netbsd-arm-cgo), const BPF_H ideal-int pkg syscall (netbsd-arm-cgo), const BPF_IMM ideal-int pkg syscall (netbsd-arm-cgo), const BPF_IND ideal-int pkg syscall (netbsd-arm-cgo), const BPF_JA ideal-int pkg syscall (netbsd-arm-cgo), const BPF_JEQ ideal-int pkg syscall (netbsd-arm-cgo), const BPF_JGE ideal-int pkg syscall (netbsd-arm-cgo), const BPF_JGT ideal-int pkg syscall (netbsd-arm-cgo), const BPF_JMP ideal-int pkg syscall (netbsd-arm-cgo), const BPF_JSET ideal-int pkg syscall (netbsd-arm-cgo), const BPF_K ideal-int pkg syscall (netbsd-arm-cgo), const BPF_LD ideal-int pkg syscall (netbsd-arm-cgo), const BPF_LDX ideal-int pkg syscall (netbsd-arm-cgo), const BPF_LEN ideal-int pkg syscall (netbsd-arm-cgo), const BPF_LSH ideal-int pkg syscall (netbsd-arm-cgo), const BPF_MAJOR_VERSION ideal-int pkg syscall (netbsd-arm-cgo), const BPF_MAXBUFSIZE ideal-int pkg syscall (netbsd-arm-cgo), const BPF_MAXINSNS ideal-int pkg syscall (netbsd-arm-cgo), const BPF_MEM ideal-int pkg syscall (netbsd-arm-cgo), const BPF_MEMWORDS ideal-int pkg syscall (netbsd-arm-cgo), const BPF_MINBUFSIZE ideal-int pkg syscall (netbsd-arm-cgo), const BPF_MINOR_VERSION ideal-int pkg syscall (netbsd-arm-cgo), const BPF_MISC ideal-int pkg syscall (netbsd-arm-cgo), const BPF_MSH ideal-int pkg syscall (netbsd-arm-cgo), const BPF_MUL ideal-int pkg syscall (netbsd-arm-cgo), const BPF_NEG ideal-int pkg syscall (netbsd-arm-cgo), const BPF_OR ideal-int pkg syscall (netbsd-arm-cgo), const BPF_RELEASE ideal-int pkg syscall (netbsd-arm-cgo), const BPF_RET ideal-int pkg syscall (netbsd-arm-cgo), const BPF_RSH ideal-int pkg syscall (netbsd-arm-cgo), const BPF_ST ideal-int pkg syscall (netbsd-arm-cgo), const BPF_STX ideal-int pkg syscall (netbsd-arm-cgo), const BPF_SUB ideal-int pkg syscall (netbsd-arm-cgo), const BPF_TAX ideal-int pkg syscall (netbsd-arm-cgo), const BPF_TXA ideal-int pkg syscall (netbsd-arm-cgo), const BPF_W ideal-int pkg syscall (netbsd-arm-cgo), const BPF_X ideal-int pkg syscall (netbsd-arm-cgo), const BRKINT ideal-int pkg syscall (netbsd-arm-cgo), const CFLUSH ideal-int pkg syscall (netbsd-arm-cgo), const CLOCAL ideal-int pkg syscall (netbsd-arm-cgo), const CREAD ideal-int pkg syscall (netbsd-arm-cgo), const CS5 ideal-int pkg syscall (netbsd-arm-cgo), const CS6 ideal-int pkg syscall (netbsd-arm-cgo), const CS7 ideal-int pkg syscall (netbsd-arm-cgo), const CS8 ideal-int pkg syscall (netbsd-arm-cgo), const CSIZE ideal-int pkg syscall (netbsd-arm-cgo), const CSTART ideal-int pkg syscall (netbsd-arm-cgo), const CSTATUS ideal-int pkg syscall (netbsd-arm-cgo), const CSTOP ideal-int pkg syscall (netbsd-arm-cgo), const CSTOPB ideal-int pkg syscall (netbsd-arm-cgo), const CSUSP ideal-int pkg syscall (netbsd-arm-cgo), const CTL_MAXNAME ideal-int pkg syscall (netbsd-arm-cgo), const CTL_NET ideal-int pkg syscall (netbsd-arm-cgo), const CTL_QUERY ideal-int pkg syscall (netbsd-arm-cgo), const DIOCBSFLUSH ideal-int pkg syscall (netbsd-arm-cgo), const DLT_A429 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_A653_ICM ideal-int pkg syscall (netbsd-arm-cgo), const DLT_AIRONET_HEADER ideal-int pkg syscall (netbsd-arm-cgo), const DLT_AOS ideal-int pkg syscall (netbsd-arm-cgo), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_ARCNET ideal-int pkg syscall (netbsd-arm-cgo), const DLT_ARCNET_LINUX ideal-int pkg syscall (netbsd-arm-cgo), const DLT_ATM_CLIP ideal-int pkg syscall (netbsd-arm-cgo), const DLT_ATM_RFC1483 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_AURORA ideal-int pkg syscall (netbsd-arm-cgo), const DLT_AX25 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_AX25_KISS ideal-int pkg syscall (netbsd-arm-cgo), const DLT_BACNET_MS_TP ideal-int pkg syscall (netbsd-arm-cgo), const DLT_BLUETOOTH_HCI_H4 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int pkg syscall (netbsd-arm-cgo), const DLT_CAN20B ideal-int pkg syscall (netbsd-arm-cgo), const DLT_CAN_SOCKETCAN ideal-int pkg syscall (netbsd-arm-cgo), const DLT_CHAOS ideal-int pkg syscall (netbsd-arm-cgo), const DLT_CISCO_IOS ideal-int pkg syscall (netbsd-arm-cgo), const DLT_C_HDLC ideal-int pkg syscall (netbsd-arm-cgo), const DLT_C_HDLC_WITH_DIR ideal-int pkg syscall (netbsd-arm-cgo), const DLT_DECT ideal-int pkg syscall (netbsd-arm-cgo), const DLT_DOCSIS ideal-int pkg syscall (netbsd-arm-cgo), const DLT_ECONET ideal-int pkg syscall (netbsd-arm-cgo), const DLT_EN10MB ideal-int pkg syscall (netbsd-arm-cgo), const DLT_EN3MB ideal-int pkg syscall (netbsd-arm-cgo), const DLT_ENC ideal-int pkg syscall (netbsd-arm-cgo), const DLT_ERF ideal-int pkg syscall (netbsd-arm-cgo), const DLT_ERF_ETH ideal-int pkg syscall (netbsd-arm-cgo), const DLT_ERF_POS ideal-int pkg syscall (netbsd-arm-cgo), const DLT_FC_2 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int pkg syscall (netbsd-arm-cgo), const DLT_FDDI ideal-int pkg syscall (netbsd-arm-cgo), const DLT_FLEXRAY ideal-int pkg syscall (netbsd-arm-cgo), const DLT_FRELAY ideal-int pkg syscall (netbsd-arm-cgo), const DLT_FRELAY_WITH_DIR ideal-int pkg syscall (netbsd-arm-cgo), const DLT_GCOM_SERIAL ideal-int pkg syscall (netbsd-arm-cgo), const DLT_GCOM_T1E1 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_GPF_F ideal-int pkg syscall (netbsd-arm-cgo), const DLT_GPF_T ideal-int pkg syscall (netbsd-arm-cgo), const DLT_GPRS_LLC ideal-int pkg syscall (netbsd-arm-cgo), const DLT_GSMTAP_ABIS ideal-int pkg syscall (netbsd-arm-cgo), const DLT_GSMTAP_UM ideal-int pkg syscall (netbsd-arm-cgo), const DLT_HDLC ideal-int pkg syscall (netbsd-arm-cgo), const DLT_HHDLC ideal-int pkg syscall (netbsd-arm-cgo), const DLT_HIPPI ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IBM_SN ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IBM_SP ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IEEE802 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_11 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_15_4 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_15_4_LINUX ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_15_4_NONASK_PHY ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_16_MAC_CPS ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IPMB ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IPMB_LINUX ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IPNET ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IPV4 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IPV6 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_IP_OVER_FC ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_ATM1 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_ATM2 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_CHDLC ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_ES ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_ETHER ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_FRELAY ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_GGSN ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_ISM ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_MFR ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_MLFR ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_MLPPP ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_MONITOR ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_PIC_PEER ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_PPP ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_PPPOE ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_PPPOE_ATM ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_SERVICES ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_ST ideal-int pkg syscall (netbsd-arm-cgo), const DLT_JUNIPER_VP ideal-int pkg syscall (netbsd-arm-cgo), const DLT_LAPB_WITH_DIR ideal-int pkg syscall (netbsd-arm-cgo), const DLT_LAPD ideal-int pkg syscall (netbsd-arm-cgo), const DLT_LIN ideal-int pkg syscall (netbsd-arm-cgo), const DLT_LINUX_EVDEV ideal-int pkg syscall (netbsd-arm-cgo), const DLT_LINUX_IRDA ideal-int pkg syscall (netbsd-arm-cgo), const DLT_LINUX_LAPD ideal-int pkg syscall (netbsd-arm-cgo), const DLT_LINUX_SLL ideal-int pkg syscall (netbsd-arm-cgo), const DLT_LOOP ideal-int pkg syscall (netbsd-arm-cgo), const DLT_LTALK ideal-int pkg syscall (netbsd-arm-cgo), const DLT_MFR ideal-int pkg syscall (netbsd-arm-cgo), const DLT_MOST ideal-int pkg syscall (netbsd-arm-cgo), const DLT_MPLS ideal-int pkg syscall (netbsd-arm-cgo), const DLT_MTP2 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_MTP2_WITH_PHDR ideal-int pkg syscall (netbsd-arm-cgo), const DLT_MTP3 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_NULL ideal-int pkg syscall (netbsd-arm-cgo), const DLT_PCI_EXP ideal-int pkg syscall (netbsd-arm-cgo), const DLT_PFLOG ideal-int pkg syscall (netbsd-arm-cgo), const DLT_PFSYNC ideal-int pkg syscall (netbsd-arm-cgo), const DLT_PPI ideal-int pkg syscall (netbsd-arm-cgo), const DLT_PPP ideal-int pkg syscall (netbsd-arm-cgo), const DLT_PPP_BSDOS ideal-int pkg syscall (netbsd-arm-cgo), const DLT_PPP_ETHER ideal-int pkg syscall (netbsd-arm-cgo), const DLT_PPP_PPPD ideal-int pkg syscall (netbsd-arm-cgo), const DLT_PPP_SERIAL ideal-int pkg syscall (netbsd-arm-cgo), const DLT_PPP_WITH_DIR ideal-int pkg syscall (netbsd-arm-cgo), const DLT_PRISM_HEADER ideal-int pkg syscall (netbsd-arm-cgo), const DLT_PRONET ideal-int pkg syscall (netbsd-arm-cgo), const DLT_RAIF1 ideal-int pkg syscall (netbsd-arm-cgo), const DLT_RAW ideal-int pkg syscall (netbsd-arm-cgo), const DLT_RAWAF_MASK ideal-int pkg syscall (netbsd-arm-cgo), const DLT_RIO ideal-int pkg syscall (netbsd-arm-cgo), const DLT_SCCP ideal-int pkg syscall (netbsd-arm-cgo), const DLT_SITA ideal-int pkg syscall (netbsd-arm-cgo), const DLT_SLIP ideal-int pkg syscall (netbsd-arm-cgo), const DLT_SLIP_BSDOS ideal-int pkg syscall (netbsd-arm-cgo), const DLT_SUNATM ideal-int pkg syscall (netbsd-arm-cgo), const DLT_SYMANTEC_FIREWALL ideal-int pkg syscall (netbsd-arm-cgo), const DLT_TZSP ideal-int pkg syscall (netbsd-arm-cgo), const DLT_USB ideal-int pkg syscall (netbsd-arm-cgo), const DLT_USB_LINUX ideal-int pkg syscall (netbsd-arm-cgo), const DLT_USB_LINUX_MMAPPED ideal-int pkg syscall (netbsd-arm-cgo), const DLT_WIHART ideal-int pkg syscall (netbsd-arm-cgo), const DLT_X2E_SERIAL ideal-int pkg syscall (netbsd-arm-cgo), const DLT_X2E_XORAYA ideal-int pkg syscall (netbsd-arm-cgo), const DT_BLK ideal-int pkg syscall (netbsd-arm-cgo), const DT_CHR ideal-int pkg syscall (netbsd-arm-cgo), const DT_DIR ideal-int pkg syscall (netbsd-arm-cgo), const DT_FIFO ideal-int pkg syscall (netbsd-arm-cgo), const DT_LNK ideal-int pkg syscall (netbsd-arm-cgo), const DT_REG ideal-int pkg syscall (netbsd-arm-cgo), const DT_SOCK ideal-int pkg syscall (netbsd-arm-cgo), const DT_UNKNOWN ideal-int pkg syscall (netbsd-arm-cgo), const DT_WHT ideal-int pkg syscall (netbsd-arm-cgo), const EAUTH Errno pkg syscall (netbsd-arm-cgo), const EBADMSG Errno pkg syscall (netbsd-arm-cgo), const EBADRPC Errno pkg syscall (netbsd-arm-cgo), const ECHO ideal-int pkg syscall (netbsd-arm-cgo), const ECHOCTL ideal-int pkg syscall (netbsd-arm-cgo), const ECHOE ideal-int pkg syscall (netbsd-arm-cgo), const ECHOK ideal-int pkg syscall (netbsd-arm-cgo), const ECHOKE ideal-int pkg syscall (netbsd-arm-cgo), const ECHONL ideal-int pkg syscall (netbsd-arm-cgo), const ECHOPRT ideal-int pkg syscall (netbsd-arm-cgo), const EFTYPE Errno pkg syscall (netbsd-arm-cgo), const ELAST Errno pkg syscall (netbsd-arm-cgo), const EMULTIHOP Errno pkg syscall (netbsd-arm-cgo), const EMUL_LINUX ideal-int pkg syscall (netbsd-arm-cgo), const EMUL_LINUX32 ideal-int pkg syscall (netbsd-arm-cgo), const EMUL_MAXID ideal-int pkg syscall (netbsd-arm-cgo), const ENEEDAUTH Errno pkg syscall (netbsd-arm-cgo), const ENOATTR Errno pkg syscall (netbsd-arm-cgo), const ENODATA Errno pkg syscall (netbsd-arm-cgo), const ENOLINK Errno pkg syscall (netbsd-arm-cgo), const ENOSR Errno pkg syscall (netbsd-arm-cgo), const ENOSTR Errno pkg syscall (netbsd-arm-cgo), const EPROCLIM Errno pkg syscall (netbsd-arm-cgo), const EPROCUNAVAIL Errno pkg syscall (netbsd-arm-cgo), const EPROGMISMATCH Errno pkg syscall (netbsd-arm-cgo), const EPROGUNAVAIL Errno pkg syscall (netbsd-arm-cgo), const EPROTO Errno pkg syscall (netbsd-arm-cgo), const ERPCMISMATCH Errno pkg syscall (netbsd-arm-cgo), const ETHERCAP_JUMBO_MTU ideal-int pkg syscall (netbsd-arm-cgo), const ETHERCAP_VLAN_HWTAGGING ideal-int pkg syscall (netbsd-arm-cgo), const ETHERCAP_VLAN_MTU ideal-int pkg syscall (netbsd-arm-cgo), const ETHERMIN ideal-int pkg syscall (netbsd-arm-cgo), const ETHERMTU ideal-int pkg syscall (netbsd-arm-cgo), const ETHERMTU_JUMBO ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_8023 ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_AARP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ACCTON ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_AEONIC ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ALPHA ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_AMBER ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_AMOEBA ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_APOLLO ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_APOLLODOMAIN ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_APPLETALK ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_APPLITEK ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ARGONAUT ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ARP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_AT ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ATALK ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ATOMIC ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ATT ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ATTSTANFORD ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_AUTOPHON ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_AXIS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_BCLOOP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_BOFL ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_CABLETRON ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_CHAOS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_COMDESIGN ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_COMPUGRAPHIC ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_COUNTERPOINT ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_CRONUS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_CRONUSVLN ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DCA ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DDE ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DEBNI ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECAM ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECCUST ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECDIAG ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECDNS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECDTS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECEXPER ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECLAST ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECLTM ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECMUMPS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DECNETBIOS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DELTACON ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DIDDLE ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DLOG1 ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DLOG2 ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DN ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DOGFIGHT ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_DSMD ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ECMA ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ENCRYPT ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_ES ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_EXCELAN ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_EXPERDATA ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_FLIP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_FLOWCONTROL ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_FRARP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_GENDYN ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_HAYES ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_HIPPI_FP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_HITACHI ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_HP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IEEEPUP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IEEEPUPAT ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IMLBL ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IMLBLDIAG ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IPAS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IPV6 ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IPX ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_IPXNEW ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_KALPANA ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_LANBRIDGE ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_LANPROBE ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_LAT ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_LBACK ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_LITTLE ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_LOGICRAFT ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_LOOPBACK ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MATRA ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MAX ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MERIT ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MICP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MOPDL ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MOPRC ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MOTOROLA ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MPLS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MPLS_MCAST ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_MUMPS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPCC ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPCLAIM ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPCLREQ ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPCLRSP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPCREQ ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPCRSP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPDG ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPDGB ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPDLTE ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPRAR ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPRAS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPRST ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPSCD ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBPVCD ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NBS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NCD ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NESTAR ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NETBEUI ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NOVELL ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NSAT ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NSCOMPAT ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_NTRAILER ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_OS9 ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_OS9NET ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PACER ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PAE ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PCS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PLANNING ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PPP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PPPOE ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PPPOEDISC ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PRIMENTS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PUP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_PUPAT ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_RACAL ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_RATIONAL ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_RAWFR ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_RCL ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_RDP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_RETIX ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_REVARP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SCA ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SECTRA ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SECUREDATA ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SGITW ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SG_BOUNCE ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SG_DIAG ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SG_NETGAMES ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SG_RESV ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SIMNET ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SLOWPROTOCOLS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SNA ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SNMP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SONIX ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SPIDER ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_SPRITE ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_STP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TALARIS ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TALARISMC ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TCPCOMP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TCPSM ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TEC ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TIGAN ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TRAIL ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TRANSETHER ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_TYMSHARE ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_UBBST ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_UBDEBUG ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_UBDIAGLOOP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_UBDL ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_UBNIU ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_UBNMC ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VALID ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VARIAN ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VAXELN ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VEECO ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VEXP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VGLAB ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VINES ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VINESECHO ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VINESLOOP ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VITAL ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VLAN ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VLTLMAN ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VPROD ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_VURESERVED ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_WATERLOO ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_WELLFLEET ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_X25 ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_X75 ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_XNSSM ideal-int pkg syscall (netbsd-arm-cgo), const ETHERTYPE_XTP ideal-int pkg syscall (netbsd-arm-cgo), const ETHER_ADDR_LEN ideal-int pkg syscall (netbsd-arm-cgo), const ETHER_CRC_LEN ideal-int pkg syscall (netbsd-arm-cgo), const ETHER_CRC_POLY_BE ideal-int pkg syscall (netbsd-arm-cgo), const ETHER_CRC_POLY_LE ideal-int pkg syscall (netbsd-arm-cgo), const ETHER_HDR_LEN ideal-int pkg syscall (netbsd-arm-cgo), const ETHER_MAX_LEN ideal-int pkg syscall (netbsd-arm-cgo), const ETHER_MAX_LEN_JUMBO ideal-int pkg syscall (netbsd-arm-cgo), const ETHER_MIN_LEN ideal-int pkg syscall (netbsd-arm-cgo), const ETHER_PPPOE_ENCAP_LEN ideal-int pkg syscall (netbsd-arm-cgo), const ETHER_TYPE_LEN ideal-int pkg syscall (netbsd-arm-cgo), const ETHER_VLAN_ENCAP_LEN ideal-int pkg syscall (netbsd-arm-cgo), const ETIME Errno pkg syscall (netbsd-arm-cgo), const EVFILT_AIO ideal-int pkg syscall (netbsd-arm-cgo), const EVFILT_PROC ideal-int pkg syscall (netbsd-arm-cgo), const EVFILT_READ ideal-int pkg syscall (netbsd-arm-cgo), const EVFILT_SIGNAL ideal-int pkg syscall (netbsd-arm-cgo), const EVFILT_SYSCOUNT ideal-int pkg syscall (netbsd-arm-cgo), const EVFILT_TIMER ideal-int pkg syscall (netbsd-arm-cgo), const EVFILT_VNODE ideal-int pkg syscall (netbsd-arm-cgo), const EVFILT_WRITE ideal-int pkg syscall (netbsd-arm-cgo), const EV_ADD ideal-int pkg syscall (netbsd-arm-cgo), const EV_CLEAR ideal-int pkg syscall (netbsd-arm-cgo), const EV_DELETE ideal-int pkg syscall (netbsd-arm-cgo), const EV_DISABLE ideal-int pkg syscall (netbsd-arm-cgo), const EV_ENABLE ideal-int pkg syscall (netbsd-arm-cgo), const EV_EOF ideal-int pkg syscall (netbsd-arm-cgo), const EV_ERROR ideal-int pkg syscall (netbsd-arm-cgo), const EV_FLAG1 ideal-int pkg syscall (netbsd-arm-cgo), const EV_ONESHOT ideal-int pkg syscall (netbsd-arm-cgo), const EV_SYSFLAGS ideal-int pkg syscall (netbsd-arm-cgo), const EXTA ideal-int pkg syscall (netbsd-arm-cgo), const EXTB ideal-int pkg syscall (netbsd-arm-cgo), const EXTPROC ideal-int pkg syscall (netbsd-arm-cgo), const FD_CLOEXEC ideal-int pkg syscall (netbsd-arm-cgo), const FD_SETSIZE ideal-int pkg syscall (netbsd-arm-cgo), const FLUSHO ideal-int pkg syscall (netbsd-arm-cgo), const F_CLOSEM ideal-int pkg syscall (netbsd-arm-cgo), const F_DUPFD ideal-int pkg syscall (netbsd-arm-cgo), const F_DUPFD_CLOEXEC ideal-int pkg syscall (netbsd-arm-cgo), const F_FSCTL ideal-int pkg syscall (netbsd-arm-cgo), const F_FSDIRMASK ideal-int pkg syscall (netbsd-arm-cgo), const F_FSIN ideal-int pkg syscall (netbsd-arm-cgo), const F_FSINOUT ideal-int pkg syscall (netbsd-arm-cgo), const F_FSOUT ideal-int pkg syscall (netbsd-arm-cgo), const F_FSPRIV ideal-int pkg syscall (netbsd-arm-cgo), const F_FSVOID ideal-int pkg syscall (netbsd-arm-cgo), const F_GETFD ideal-int pkg syscall (netbsd-arm-cgo), const F_GETFL ideal-int pkg syscall (netbsd-arm-cgo), const F_GETLK ideal-int pkg syscall (netbsd-arm-cgo), const F_GETNOSIGPIPE ideal-int pkg syscall (netbsd-arm-cgo), const F_GETOWN ideal-int pkg syscall (netbsd-arm-cgo), const F_MAXFD ideal-int pkg syscall (netbsd-arm-cgo), const F_OK ideal-int pkg syscall (netbsd-arm-cgo), const F_PARAM_MASK ideal-int pkg syscall (netbsd-arm-cgo), const F_PARAM_MAX ideal-int pkg syscall (netbsd-arm-cgo), const F_RDLCK ideal-int pkg syscall (netbsd-arm-cgo), const F_SETFD ideal-int pkg syscall (netbsd-arm-cgo), const F_SETFL ideal-int pkg syscall (netbsd-arm-cgo), const F_SETLK ideal-int pkg syscall (netbsd-arm-cgo), const F_SETLKW ideal-int pkg syscall (netbsd-arm-cgo), const F_SETNOSIGPIPE ideal-int pkg syscall (netbsd-arm-cgo), const F_SETOWN ideal-int pkg syscall (netbsd-arm-cgo), const F_UNLCK ideal-int pkg syscall (netbsd-arm-cgo), const F_WRLCK ideal-int pkg syscall (netbsd-arm-cgo), const HUPCL ideal-int pkg syscall (netbsd-arm-cgo), const ICANON ideal-int pkg syscall (netbsd-arm-cgo), const ICMP6_FILTER = 18 pkg syscall (netbsd-arm-cgo), const ICMP6_FILTER ideal-int pkg syscall (netbsd-arm-cgo), const ICRNL ideal-int pkg syscall (netbsd-arm-cgo), const IEXTEN ideal-int pkg syscall (netbsd-arm-cgo), const IFAN_ARRIVAL ideal-int pkg syscall (netbsd-arm-cgo), const IFAN_DEPARTURE ideal-int pkg syscall (netbsd-arm-cgo), const IFA_ROUTE ideal-int pkg syscall (netbsd-arm-cgo), const IFF_ALLMULTI ideal-int pkg syscall (netbsd-arm-cgo), const IFF_CANTCHANGE ideal-int pkg syscall (netbsd-arm-cgo), const IFF_DEBUG ideal-int pkg syscall (netbsd-arm-cgo), const IFF_LINK0 ideal-int pkg syscall (netbsd-arm-cgo), const IFF_LINK1 ideal-int pkg syscall (netbsd-arm-cgo), const IFF_LINK2 ideal-int pkg syscall (netbsd-arm-cgo), const IFF_NOARP ideal-int pkg syscall (netbsd-arm-cgo), const IFF_NOTRAILERS ideal-int pkg syscall (netbsd-arm-cgo), const IFF_OACTIVE ideal-int pkg syscall (netbsd-arm-cgo), const IFF_POINTOPOINT ideal-int pkg syscall (netbsd-arm-cgo), const IFF_PROMISC ideal-int pkg syscall (netbsd-arm-cgo), const IFF_RUNNING ideal-int pkg syscall (netbsd-arm-cgo), const IFF_SIMPLEX ideal-int pkg syscall (netbsd-arm-cgo), const IFNAMSIZ ideal-int pkg syscall (netbsd-arm-cgo), const IFT_1822 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_A12MPPSWITCH ideal-int pkg syscall (netbsd-arm-cgo), const IFT_AAL2 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_AAL5 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ADSL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_AFLANE8023 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_AFLANE8025 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ARAP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ARCNET ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ARCNETPLUS ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ASYNC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ATM ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ATMDXI ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ATMFUNI ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ATMIMA ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ATMLOGICAL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ATMRADIO ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ATMVCIENDPT ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ATMVIRTUAL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (netbsd-arm-cgo), const IFT_BRIDGE ideal-int pkg syscall (netbsd-arm-cgo), const IFT_BSC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_CARP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_CCTEMUL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_CEPT ideal-int pkg syscall (netbsd-arm-cgo), const IFT_CES ideal-int pkg syscall (netbsd-arm-cgo), const IFT_CHANNEL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_CNR ideal-int pkg syscall (netbsd-arm-cgo), const IFT_COFFEE ideal-int pkg syscall (netbsd-arm-cgo), const IFT_COMPOSITELINK ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DCN ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DLSW ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DOCSCABLEUPSTREAMCHANNEL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DS0 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DS0BUNDLE ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DS1FDL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DS3 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DTM ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DVBASILN ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DVBASIOUT ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (netbsd-arm-cgo), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ECONET ideal-int pkg syscall (netbsd-arm-cgo), const IFT_EON ideal-int pkg syscall (netbsd-arm-cgo), const IFT_EPLRS ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ESCON ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ETHER ideal-int pkg syscall (netbsd-arm-cgo), const IFT_FAITH ideal-int pkg syscall (netbsd-arm-cgo), const IFT_FAST ideal-int pkg syscall (netbsd-arm-cgo), const IFT_FASTETHER ideal-int pkg syscall (netbsd-arm-cgo), const IFT_FASTETHERFX ideal-int pkg syscall (netbsd-arm-cgo), const IFT_FDDI ideal-int pkg syscall (netbsd-arm-cgo), const IFT_FIBRECHANNEL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (netbsd-arm-cgo), const IFT_FRAMERELAYMPI ideal-int pkg syscall (netbsd-arm-cgo), const IFT_FRDLCIENDPT ideal-int pkg syscall (netbsd-arm-cgo), const IFT_FRELAY ideal-int pkg syscall (netbsd-arm-cgo), const IFT_FRELAYDCE ideal-int pkg syscall (netbsd-arm-cgo), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (netbsd-arm-cgo), const IFT_FRFORWARD ideal-int pkg syscall (netbsd-arm-cgo), const IFT_G703AT2MB ideal-int pkg syscall (netbsd-arm-cgo), const IFT_G703AT64K ideal-int pkg syscall (netbsd-arm-cgo), const IFT_GIF ideal-int pkg syscall (netbsd-arm-cgo), const IFT_GIGABITETHERNET ideal-int pkg syscall (netbsd-arm-cgo), const IFT_GR303IDT ideal-int pkg syscall (netbsd-arm-cgo), const IFT_GR303RDT ideal-int pkg syscall (netbsd-arm-cgo), const IFT_H323GATEKEEPER ideal-int pkg syscall (netbsd-arm-cgo), const IFT_H323PROXY ideal-int pkg syscall (netbsd-arm-cgo), const IFT_HDH1822 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_HDLC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_HDSL2 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_HIPERLAN2 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_HIPPI ideal-int pkg syscall (netbsd-arm-cgo), const IFT_HIPPIINTERFACE ideal-int pkg syscall (netbsd-arm-cgo), const IFT_HOSTPAD ideal-int pkg syscall (netbsd-arm-cgo), const IFT_HSSI ideal-int pkg syscall (netbsd-arm-cgo), const IFT_HY ideal-int pkg syscall (netbsd-arm-cgo), const IFT_IBM370PARCHAN ideal-int pkg syscall (netbsd-arm-cgo), const IFT_IDSL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_IEEE1394 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_IEEE80211 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_IEEE80212 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_IEEE8023ADLAG ideal-int pkg syscall (netbsd-arm-cgo), const IFT_IFGSN ideal-int pkg syscall (netbsd-arm-cgo), const IFT_IMT ideal-int pkg syscall (netbsd-arm-cgo), const IFT_INFINIBAND ideal-int pkg syscall (netbsd-arm-cgo), const IFT_INTERLEAVE ideal-int pkg syscall (netbsd-arm-cgo), const IFT_IP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_IPFORWARD ideal-int pkg syscall (netbsd-arm-cgo), const IFT_IPOVERATM ideal-int pkg syscall (netbsd-arm-cgo), const IFT_IPOVERCDLC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_IPOVERCLAW ideal-int pkg syscall (netbsd-arm-cgo), const IFT_IPSWITCH ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ISDN ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ISDNBASIC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ISDNPRIMARY ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ISDNS ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ISDNU ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ISO88022LLC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ISO88023 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ISO88024 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ISO88025 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ISO88025CRFPINT ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ISO88025DTR ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ISO88025FIBER ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ISO88026 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ISUP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_L2VLAN ideal-int pkg syscall (netbsd-arm-cgo), const IFT_L3IPVLAN ideal-int pkg syscall (netbsd-arm-cgo), const IFT_L3IPXVLAN ideal-int pkg syscall (netbsd-arm-cgo), const IFT_LAPB ideal-int pkg syscall (netbsd-arm-cgo), const IFT_LAPD ideal-int pkg syscall (netbsd-arm-cgo), const IFT_LAPF ideal-int pkg syscall (netbsd-arm-cgo), const IFT_LINEGROUP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_LOCALTALK ideal-int pkg syscall (netbsd-arm-cgo), const IFT_LOOP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_MFSIGLINK ideal-int pkg syscall (netbsd-arm-cgo), const IFT_MIOX25 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_MODEM ideal-int pkg syscall (netbsd-arm-cgo), const IFT_MPC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_MPLS ideal-int pkg syscall (netbsd-arm-cgo), const IFT_MPLSTUNNEL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_MSDSL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_MVL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_MYRINET ideal-int pkg syscall (netbsd-arm-cgo), const IFT_NFAS ideal-int pkg syscall (netbsd-arm-cgo), const IFT_NSIP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_OPTICALCHANNEL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (netbsd-arm-cgo), const IFT_OTHER ideal-int pkg syscall (netbsd-arm-cgo), const IFT_P10 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_P80 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PARA ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PFLOG ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PFSYNC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PLC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PON155 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PON622 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_POS ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PPP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PROPATM ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PROPBWAP2MP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PROPCNLS ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PROPMUX ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PROPVIRTUAL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PTPSERIAL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_PVC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_Q2931 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_QLLC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_RADIOMAC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_RADSL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_REACHDSL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_RFC1483 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_RS232 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_RSRB ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SDLC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SDSL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SHDSL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SIP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SIPSIG ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SIPTG ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SLIP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SMDSDXI ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SMDSICIP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SONET ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SONETPATH ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SONETVT ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SRP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_SS7SIGLINK ideal-int pkg syscall (netbsd-arm-cgo), const IFT_STACKTOSTACK ideal-int pkg syscall (netbsd-arm-cgo), const IFT_STARLAN ideal-int pkg syscall (netbsd-arm-cgo), const IFT_STF ideal-int pkg syscall (netbsd-arm-cgo), const IFT_T1 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_TDLC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_TELINK ideal-int pkg syscall (netbsd-arm-cgo), const IFT_TERMPAD ideal-int pkg syscall (netbsd-arm-cgo), const IFT_TR008 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_TRANSPHDLC ideal-int pkg syscall (netbsd-arm-cgo), const IFT_TUNNEL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_ULTRA ideal-int pkg syscall (netbsd-arm-cgo), const IFT_USB ideal-int pkg syscall (netbsd-arm-cgo), const IFT_V11 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_V35 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_V36 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_V37 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_VDSL ideal-int pkg syscall (netbsd-arm-cgo), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (netbsd-arm-cgo), const IFT_VIRTUALTG ideal-int pkg syscall (netbsd-arm-cgo), const IFT_VOICEDID ideal-int pkg syscall (netbsd-arm-cgo), const IFT_VOICEEM ideal-int pkg syscall (netbsd-arm-cgo), const IFT_VOICEEMFGD ideal-int pkg syscall (netbsd-arm-cgo), const IFT_VOICEENCAP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_VOICEFGDEANA ideal-int pkg syscall (netbsd-arm-cgo), const IFT_VOICEFXO ideal-int pkg syscall (netbsd-arm-cgo), const IFT_VOICEFXS ideal-int pkg syscall (netbsd-arm-cgo), const IFT_VOICEOVERATM ideal-int pkg syscall (netbsd-arm-cgo), const IFT_VOICEOVERCABLE ideal-int pkg syscall (netbsd-arm-cgo), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (netbsd-arm-cgo), const IFT_VOICEOVERIP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_X213 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_X25 ideal-int pkg syscall (netbsd-arm-cgo), const IFT_X25DDN ideal-int pkg syscall (netbsd-arm-cgo), const IFT_X25HUNTGROUP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_X25MLP ideal-int pkg syscall (netbsd-arm-cgo), const IFT_X25PLE ideal-int pkg syscall (netbsd-arm-cgo), const IFT_XETHER ideal-int pkg syscall (netbsd-arm-cgo), const IGNBRK ideal-int pkg syscall (netbsd-arm-cgo), const IGNCR ideal-int pkg syscall (netbsd-arm-cgo), const IGNPAR ideal-int pkg syscall (netbsd-arm-cgo), const IMAXBEL ideal-int pkg syscall (netbsd-arm-cgo), const INLCR ideal-int pkg syscall (netbsd-arm-cgo), const INPCK ideal-int pkg syscall (netbsd-arm-cgo), const IN_CLASSA_HOST ideal-int pkg syscall (netbsd-arm-cgo), const IN_CLASSA_MAX ideal-int pkg syscall (netbsd-arm-cgo), const IN_CLASSA_NET ideal-int pkg syscall (netbsd-arm-cgo), const IN_CLASSA_NSHIFT ideal-int pkg syscall (netbsd-arm-cgo), const IN_CLASSB_HOST ideal-int pkg syscall (netbsd-arm-cgo), const IN_CLASSB_MAX ideal-int pkg syscall (netbsd-arm-cgo), const IN_CLASSB_NET ideal-int pkg syscall (netbsd-arm-cgo), const IN_CLASSB_NSHIFT ideal-int pkg syscall (netbsd-arm-cgo), const IN_CLASSC_HOST ideal-int pkg syscall (netbsd-arm-cgo), const IN_CLASSC_NET ideal-int pkg syscall (netbsd-arm-cgo), const IN_CLASSC_NSHIFT ideal-int pkg syscall (netbsd-arm-cgo), const IN_CLASSD_HOST ideal-int pkg syscall (netbsd-arm-cgo), const IN_CLASSD_NET ideal-int pkg syscall (netbsd-arm-cgo), const IN_CLASSD_NSHIFT ideal-int pkg syscall (netbsd-arm-cgo), const IN_LOOPBACKNET ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_AH ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_CARP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_DONE ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_DSTOPTS ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_EGP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_ENCAP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_EON ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_ESP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_ETHERIP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_FRAGMENT ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_GGP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_GRE ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_HOPOPTS ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_ICMP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_ICMPV6 ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_IDP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_IGMP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_IPCOMP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_IPIP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_IPV4 ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_IPV6_ICMP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_MAX ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_MAXID ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_MOBILE ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_NONE ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_PFSYNC ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_PIM ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_PUP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_RAW ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_ROUTING ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_RSVP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_TP ideal-int pkg syscall (netbsd-arm-cgo), const IPPROTO_VRRP ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_CHECKSUM ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_DEFHLIM ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_DONTFRAG ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_DSTOPTS ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_FAITH ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_FRAGTTL ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_HLIMDEC ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_HOPLIMIT ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_HOPOPTS ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_IPSEC_POLICY ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_MAXHLIM ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_MAXPACKET ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_MMTU ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_NEXTHOP ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_PATHMTU ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_PKTINFO ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_PORTRANGE ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_RECVDSTOPTS ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_RECVHOPOPTS ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_RECVPATHMTU ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_RECVPKTINFO ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_RECVRTHDR ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_RECVTCLASS ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_RTHDR ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_RTHDR_STRICT ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_TCLASS ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_USE_MIN_MTU ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_VERSION ideal-int pkg syscall (netbsd-arm-cgo), const IPV6_VERSION_MASK ideal-int pkg syscall (netbsd-arm-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (netbsd-arm-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (netbsd-arm-cgo), const IP_DF ideal-int pkg syscall (netbsd-arm-cgo), const IP_EF ideal-int pkg syscall (netbsd-arm-cgo), const IP_ERRORMTU ideal-int pkg syscall (netbsd-arm-cgo), const IP_HDRINCL ideal-int pkg syscall (netbsd-arm-cgo), const IP_IPSEC_POLICY ideal-int pkg syscall (netbsd-arm-cgo), const IP_MAXPACKET ideal-int pkg syscall (netbsd-arm-cgo), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (netbsd-arm-cgo), const IP_MF ideal-int pkg syscall (netbsd-arm-cgo), const IP_MINFRAGSIZE ideal-int pkg syscall (netbsd-arm-cgo), const IP_MINTTL ideal-int pkg syscall (netbsd-arm-cgo), const IP_MSS ideal-int pkg syscall (netbsd-arm-cgo), const IP_OFFMASK ideal-int pkg syscall (netbsd-arm-cgo), const IP_OPTIONS ideal-int pkg syscall (netbsd-arm-cgo), const IP_PORTRANGE ideal-int pkg syscall (netbsd-arm-cgo), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (netbsd-arm-cgo), const IP_PORTRANGE_HIGH ideal-int pkg syscall (netbsd-arm-cgo), const IP_PORTRANGE_LOW ideal-int pkg syscall (netbsd-arm-cgo), const IP_RECVDSTADDR ideal-int pkg syscall (netbsd-arm-cgo), const IP_RECVIF ideal-int pkg syscall (netbsd-arm-cgo), const IP_RECVOPTS ideal-int pkg syscall (netbsd-arm-cgo), const IP_RECVRETOPTS ideal-int pkg syscall (netbsd-arm-cgo), const IP_RECVTTL ideal-int pkg syscall (netbsd-arm-cgo), const IP_RETOPTS ideal-int pkg syscall (netbsd-arm-cgo), const IP_RF ideal-int pkg syscall (netbsd-arm-cgo), const ISIG ideal-int pkg syscall (netbsd-arm-cgo), const ISTRIP ideal-int pkg syscall (netbsd-arm-cgo), const IXANY ideal-int pkg syscall (netbsd-arm-cgo), const IXOFF ideal-int pkg syscall (netbsd-arm-cgo), const IXON ideal-int pkg syscall (netbsd-arm-cgo), const LOCK_EX ideal-int pkg syscall (netbsd-arm-cgo), const LOCK_NB ideal-int pkg syscall (netbsd-arm-cgo), const LOCK_SH ideal-int pkg syscall (netbsd-arm-cgo), const LOCK_UN ideal-int pkg syscall (netbsd-arm-cgo), const MSG_BCAST ideal-int pkg syscall (netbsd-arm-cgo), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (netbsd-arm-cgo), const MSG_CONTROLMBUF ideal-int pkg syscall (netbsd-arm-cgo), const MSG_CTRUNC ideal-int pkg syscall (netbsd-arm-cgo), const MSG_DONTROUTE ideal-int pkg syscall (netbsd-arm-cgo), const MSG_DONTWAIT ideal-int pkg syscall (netbsd-arm-cgo), const MSG_EOR ideal-int pkg syscall (netbsd-arm-cgo), const MSG_IOVUSRSPACE ideal-int pkg syscall (netbsd-arm-cgo), const MSG_LENUSRSPACE ideal-int pkg syscall (netbsd-arm-cgo), const MSG_MCAST ideal-int pkg syscall (netbsd-arm-cgo), const MSG_NAMEMBUF ideal-int pkg syscall (netbsd-arm-cgo), const MSG_NBIO ideal-int pkg syscall (netbsd-arm-cgo), const MSG_NOSIGNAL ideal-int pkg syscall (netbsd-arm-cgo), const MSG_OOB ideal-int pkg syscall (netbsd-arm-cgo), const MSG_PEEK ideal-int pkg syscall (netbsd-arm-cgo), const MSG_TRUNC ideal-int pkg syscall (netbsd-arm-cgo), const MSG_USERFLAGS ideal-int pkg syscall (netbsd-arm-cgo), const MSG_WAITALL ideal-int pkg syscall (netbsd-arm-cgo), const NAME_MAX ideal-int pkg syscall (netbsd-arm-cgo), const NET_RT_DUMP ideal-int pkg syscall (netbsd-arm-cgo), const NET_RT_FLAGS ideal-int pkg syscall (netbsd-arm-cgo), const NET_RT_IFLIST ideal-int pkg syscall (netbsd-arm-cgo), const NET_RT_MAXID ideal-int pkg syscall (netbsd-arm-cgo), const NET_RT_OIFLIST ideal-int pkg syscall (netbsd-arm-cgo), const NET_RT_OOIFLIST ideal-int pkg syscall (netbsd-arm-cgo), const NOFLSH ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_ATTRIB ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_CHILD ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_DELETE ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_EXEC ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_EXIT ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_EXTEND ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_FORK ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_LINK ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_LOWAT ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_PCTRLMASK ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_PDATAMASK ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_RENAME ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_REVOKE ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_TRACK ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_TRACKERR ideal-int pkg syscall (netbsd-arm-cgo), const NOTE_WRITE ideal-int pkg syscall (netbsd-arm-cgo), const OCRNL ideal-int pkg syscall (netbsd-arm-cgo), const OFIOGETBMAP ideal-int pkg syscall (netbsd-arm-cgo), const ONLCR ideal-int pkg syscall (netbsd-arm-cgo), const ONLRET ideal-int pkg syscall (netbsd-arm-cgo), const ONOCR ideal-int pkg syscall (netbsd-arm-cgo), const ONOEOT ideal-int pkg syscall (netbsd-arm-cgo), const OPOST ideal-int pkg syscall (netbsd-arm-cgo), const O_ACCMODE ideal-int pkg syscall (netbsd-arm-cgo), const O_ALT_IO ideal-int pkg syscall (netbsd-arm-cgo), const O_DIRECT ideal-int pkg syscall (netbsd-arm-cgo), const O_DIRECTORY ideal-int pkg syscall (netbsd-arm-cgo), const O_DSYNC ideal-int pkg syscall (netbsd-arm-cgo), const O_EXLOCK ideal-int pkg syscall (netbsd-arm-cgo), const O_FSYNC ideal-int pkg syscall (netbsd-arm-cgo), const O_NDELAY ideal-int pkg syscall (netbsd-arm-cgo), const O_NOFOLLOW ideal-int pkg syscall (netbsd-arm-cgo), const O_NOSIGPIPE ideal-int pkg syscall (netbsd-arm-cgo), const O_RSYNC ideal-int pkg syscall (netbsd-arm-cgo), const O_SHLOCK ideal-int pkg syscall (netbsd-arm-cgo), const PARENB ideal-int pkg syscall (netbsd-arm-cgo), const PARMRK ideal-int pkg syscall (netbsd-arm-cgo), const PARODD ideal-int pkg syscall (netbsd-arm-cgo), const PENDIN ideal-int pkg syscall (netbsd-arm-cgo), const PRIO_PGRP = 1 pkg syscall (netbsd-arm-cgo), const PRIO_PGRP ideal-int pkg syscall (netbsd-arm-cgo), const PRIO_PROCESS = 0 pkg syscall (netbsd-arm-cgo), const PRIO_PROCESS ideal-int pkg syscall (netbsd-arm-cgo), const PRIO_USER = 2 pkg syscall (netbsd-arm-cgo), const PRIO_USER ideal-int pkg syscall (netbsd-arm-cgo), const PRI_IOFLUSH ideal-int pkg syscall (netbsd-arm-cgo), const PTRACE_CONT ideal-int pkg syscall (netbsd-arm-cgo), const PTRACE_KILL ideal-int pkg syscall (netbsd-arm-cgo), const PTRACE_TRACEME ideal-int pkg syscall (netbsd-arm-cgo), const RLIMIT_AS ideal-int pkg syscall (netbsd-arm-cgo), const RLIMIT_CORE ideal-int pkg syscall (netbsd-arm-cgo), const RLIMIT_CPU ideal-int pkg syscall (netbsd-arm-cgo), const RLIMIT_DATA ideal-int pkg syscall (netbsd-arm-cgo), const RLIMIT_FSIZE ideal-int pkg syscall (netbsd-arm-cgo), const RLIMIT_NOFILE ideal-int pkg syscall (netbsd-arm-cgo), const RLIMIT_STACK ideal-int pkg syscall (netbsd-arm-cgo), const RLIM_INFINITY ideal-int pkg syscall (netbsd-arm-cgo), const RTAX_AUTHOR ideal-int pkg syscall (netbsd-arm-cgo), const RTAX_BRD ideal-int pkg syscall (netbsd-arm-cgo), const RTAX_DST ideal-int pkg syscall (netbsd-arm-cgo), const RTAX_GATEWAY ideal-int pkg syscall (netbsd-arm-cgo), const RTAX_GENMASK ideal-int pkg syscall (netbsd-arm-cgo), const RTAX_IFA ideal-int pkg syscall (netbsd-arm-cgo), const RTAX_IFP ideal-int pkg syscall (netbsd-arm-cgo), const RTAX_MAX ideal-int pkg syscall (netbsd-arm-cgo), const RTAX_NETMASK ideal-int pkg syscall (netbsd-arm-cgo), const RTAX_TAG ideal-int pkg syscall (netbsd-arm-cgo), const RTA_AUTHOR ideal-int pkg syscall (netbsd-arm-cgo), const RTA_BRD ideal-int pkg syscall (netbsd-arm-cgo), const RTA_DST ideal-int pkg syscall (netbsd-arm-cgo), const RTA_GATEWAY ideal-int pkg syscall (netbsd-arm-cgo), const RTA_GENMASK ideal-int pkg syscall (netbsd-arm-cgo), const RTA_IFA ideal-int pkg syscall (netbsd-arm-cgo), const RTA_IFP ideal-int pkg syscall (netbsd-arm-cgo), const RTA_NETMASK ideal-int pkg syscall (netbsd-arm-cgo), const RTA_TAG ideal-int pkg syscall (netbsd-arm-cgo), const RTF_ANNOUNCE ideal-int pkg syscall (netbsd-arm-cgo), const RTF_BLACKHOLE ideal-int pkg syscall (netbsd-arm-cgo), const RTF_CLONED ideal-int pkg syscall (netbsd-arm-cgo), const RTF_CLONING ideal-int pkg syscall (netbsd-arm-cgo), const RTF_DONE ideal-int pkg syscall (netbsd-arm-cgo), const RTF_DYNAMIC ideal-int pkg syscall (netbsd-arm-cgo), const RTF_GATEWAY ideal-int pkg syscall (netbsd-arm-cgo), const RTF_HOST ideal-int pkg syscall (netbsd-arm-cgo), const RTF_LLINFO ideal-int pkg syscall (netbsd-arm-cgo), const RTF_MASK ideal-int pkg syscall (netbsd-arm-cgo), const RTF_MODIFIED ideal-int pkg syscall (netbsd-arm-cgo), const RTF_PROTO1 ideal-int pkg syscall (netbsd-arm-cgo), const RTF_PROTO2 ideal-int pkg syscall (netbsd-arm-cgo), const RTF_REJECT ideal-int pkg syscall (netbsd-arm-cgo), const RTF_SRC ideal-int pkg syscall (netbsd-arm-cgo), const RTF_STATIC ideal-int pkg syscall (netbsd-arm-cgo), const RTF_UP ideal-int pkg syscall (netbsd-arm-cgo), const RTF_XRESOLVE ideal-int pkg syscall (netbsd-arm-cgo), const RTM_ADD ideal-int pkg syscall (netbsd-arm-cgo), const RTM_CHANGE ideal-int pkg syscall (netbsd-arm-cgo), const RTM_CHGADDR ideal-int pkg syscall (netbsd-arm-cgo), const RTM_DELADDR ideal-int pkg syscall (netbsd-arm-cgo), const RTM_DELETE ideal-int pkg syscall (netbsd-arm-cgo), const RTM_GET ideal-int pkg syscall (netbsd-arm-cgo), const RTM_IEEE80211 ideal-int pkg syscall (netbsd-arm-cgo), const RTM_IFANNOUNCE ideal-int pkg syscall (netbsd-arm-cgo), const RTM_IFINFO ideal-int pkg syscall (netbsd-arm-cgo), const RTM_LLINFO_UPD ideal-int pkg syscall (netbsd-arm-cgo), const RTM_LOCK ideal-int pkg syscall (netbsd-arm-cgo), const RTM_LOSING ideal-int pkg syscall (netbsd-arm-cgo), const RTM_MISS ideal-int pkg syscall (netbsd-arm-cgo), const RTM_NEWADDR ideal-int pkg syscall (netbsd-arm-cgo), const RTM_OIFINFO ideal-int pkg syscall (netbsd-arm-cgo), const RTM_OLDADD ideal-int pkg syscall (netbsd-arm-cgo), const RTM_OLDDEL ideal-int pkg syscall (netbsd-arm-cgo), const RTM_OOIFINFO ideal-int pkg syscall (netbsd-arm-cgo), const RTM_REDIRECT ideal-int pkg syscall (netbsd-arm-cgo), const RTM_RESOLVE ideal-int pkg syscall (netbsd-arm-cgo), const RTM_RTTUNIT ideal-int pkg syscall (netbsd-arm-cgo), const RTM_SETGATE ideal-int pkg syscall (netbsd-arm-cgo), const RTM_VERSION ideal-int pkg syscall (netbsd-arm-cgo), const RTV_EXPIRE ideal-int pkg syscall (netbsd-arm-cgo), const RTV_HOPCOUNT ideal-int pkg syscall (netbsd-arm-cgo), const RTV_MTU ideal-int pkg syscall (netbsd-arm-cgo), const RTV_RPIPE ideal-int pkg syscall (netbsd-arm-cgo), const RTV_RTT ideal-int pkg syscall (netbsd-arm-cgo), const RTV_RTTVAR ideal-int pkg syscall (netbsd-arm-cgo), const RTV_SPIPE ideal-int pkg syscall (netbsd-arm-cgo), const RTV_SSTHRESH ideal-int pkg syscall (netbsd-arm-cgo), const RUSAGE_CHILDREN ideal-int pkg syscall (netbsd-arm-cgo), const RUSAGE_SELF ideal-int pkg syscall (netbsd-arm-cgo), const SCM_CREDS ideal-int pkg syscall (netbsd-arm-cgo), const SCM_RIGHTS ideal-int pkg syscall (netbsd-arm-cgo), const SCM_TIMESTAMP ideal-int pkg syscall (netbsd-arm-cgo), const SIGCHLD Signal pkg syscall (netbsd-arm-cgo), const SIGCONT Signal pkg syscall (netbsd-arm-cgo), const SIGEMT Signal pkg syscall (netbsd-arm-cgo), const SIGINFO Signal pkg syscall (netbsd-arm-cgo), const SIGIO Signal pkg syscall (netbsd-arm-cgo), const SIGIOT Signal pkg syscall (netbsd-arm-cgo), const SIGPROF Signal pkg syscall (netbsd-arm-cgo), const SIGPWR Signal pkg syscall (netbsd-arm-cgo), const SIGSTOP Signal pkg syscall (netbsd-arm-cgo), const SIGSYS Signal pkg syscall (netbsd-arm-cgo), const SIGTSTP Signal pkg syscall (netbsd-arm-cgo), const SIGTTIN Signal pkg syscall (netbsd-arm-cgo), const SIGTTOU Signal pkg syscall (netbsd-arm-cgo), const SIGURG Signal pkg syscall (netbsd-arm-cgo), const SIGUSR1 Signal pkg syscall (netbsd-arm-cgo), const SIGUSR2 Signal pkg syscall (netbsd-arm-cgo), const SIGVTALRM Signal pkg syscall (netbsd-arm-cgo), const SIGWINCH Signal pkg syscall (netbsd-arm-cgo), const SIGXCPU Signal pkg syscall (netbsd-arm-cgo), const SIGXFSZ Signal pkg syscall (netbsd-arm-cgo), const SIOCADDMULTI ideal-int pkg syscall (netbsd-arm-cgo), const SIOCADDRT ideal-int pkg syscall (netbsd-arm-cgo), const SIOCAIFADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCALIFADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCATMARK ideal-int pkg syscall (netbsd-arm-cgo), const SIOCDELMULTI ideal-int pkg syscall (netbsd-arm-cgo), const SIOCDELRT ideal-int pkg syscall (netbsd-arm-cgo), const SIOCDIFADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCDIFPHYADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCDLIFADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGDRVSPEC ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGETPFSYNC ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGETSGCNT ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGETVIFCNT ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGHIWAT ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFADDRPREF ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFALIAS ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFBRDADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFCAP ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFCONF ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFDATA ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFDLT ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFDSTADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFFLAGS ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFGENERIC ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFMEDIA ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFMETRIC ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFMTU ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFNETMASK ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFPDSTADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGIFPSRCADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGLIFADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGLIFPHYADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGLINKSTR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGLOWAT ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGPGRP ideal-int pkg syscall (netbsd-arm-cgo), const SIOCGVH ideal-int pkg syscall (netbsd-arm-cgo), const SIOCIFCREATE ideal-int pkg syscall (netbsd-arm-cgo), const SIOCIFDESTROY ideal-int pkg syscall (netbsd-arm-cgo), const SIOCIFGCLONERS ideal-int pkg syscall (netbsd-arm-cgo), const SIOCINITIFADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSDRVSPEC ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSETPFSYNC ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSHIWAT ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSIFADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSIFADDRPREF ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSIFBRDADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSIFCAP ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSIFDSTADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSIFFLAGS ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSIFGENERIC ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSIFMEDIA ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSIFMETRIC ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSIFMTU ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSIFNETMASK ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSIFPHYADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSLIFPHYADDR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSLINKSTR ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSLOWAT ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSPGRP ideal-int pkg syscall (netbsd-arm-cgo), const SIOCSVH ideal-int pkg syscall (netbsd-arm-cgo), const SIOCZIFDATA ideal-int pkg syscall (netbsd-arm-cgo), const SOCK_CLOEXEC ideal-int pkg syscall (netbsd-arm-cgo), const SOCK_FLAGS_MASK ideal-int pkg syscall (netbsd-arm-cgo), const SOCK_NONBLOCK ideal-int pkg syscall (netbsd-arm-cgo), const SOCK_NOSIGPIPE ideal-int pkg syscall (netbsd-arm-cgo), const SOCK_RDM ideal-int pkg syscall (netbsd-arm-cgo), const SO_ACCEPTCONN ideal-int pkg syscall (netbsd-arm-cgo), const SO_ACCEPTFILTER ideal-int pkg syscall (netbsd-arm-cgo), const SO_DEBUG ideal-int pkg syscall (netbsd-arm-cgo), const SO_ERROR ideal-int pkg syscall (netbsd-arm-cgo), const SO_NOHEADER ideal-int pkg syscall (netbsd-arm-cgo), const SO_NOSIGPIPE ideal-int pkg syscall (netbsd-arm-cgo), const SO_OOBINLINE ideal-int pkg syscall (netbsd-arm-cgo), const SO_OVERFLOWED ideal-int pkg syscall (netbsd-arm-cgo), const SO_RCVLOWAT ideal-int pkg syscall (netbsd-arm-cgo), const SO_RCVTIMEO ideal-int pkg syscall (netbsd-arm-cgo), const SO_REUSEPORT ideal-int pkg syscall (netbsd-arm-cgo), const SO_SNDLOWAT ideal-int pkg syscall (netbsd-arm-cgo), const SO_SNDTIMEO ideal-int pkg syscall (netbsd-arm-cgo), const SO_TIMESTAMP ideal-int pkg syscall (netbsd-arm-cgo), const SO_TYPE ideal-int pkg syscall (netbsd-arm-cgo), const SO_USELOOPBACK ideal-int pkg syscall (netbsd-arm-cgo), const SYSCTL_VERSION ideal-int pkg syscall (netbsd-arm-cgo), const SYSCTL_VERS_0 ideal-int pkg syscall (netbsd-arm-cgo), const SYSCTL_VERS_1 ideal-int pkg syscall (netbsd-arm-cgo), const SYSCTL_VERS_MASK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_ACCEPT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_ACCESS ideal-int pkg syscall (netbsd-arm-cgo), const SYS_ACCT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_ADJTIME ideal-int pkg syscall (netbsd-arm-cgo), const SYS_BIND ideal-int pkg syscall (netbsd-arm-cgo), const SYS_BREAK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_CHDIR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_CHFLAGS ideal-int pkg syscall (netbsd-arm-cgo), const SYS_CHMOD ideal-int pkg syscall (netbsd-arm-cgo), const SYS_CHOWN ideal-int pkg syscall (netbsd-arm-cgo), const SYS_CHROOT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_CLOCK_GETRES ideal-int pkg syscall (netbsd-arm-cgo), const SYS_CLOCK_GETTIME ideal-int pkg syscall (netbsd-arm-cgo), const SYS_CLOCK_SETTIME ideal-int pkg syscall (netbsd-arm-cgo), const SYS_CLOSE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_CONNECT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_DUP ideal-int pkg syscall (netbsd-arm-cgo), const SYS_DUP2 ideal-int pkg syscall (netbsd-arm-cgo), const SYS_DUP3 ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXECVE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXIT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXTATTRCTL ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_DELETE_FD ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_DELETE_FILE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_DELETE_LINK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_GET_FD ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_GET_FILE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_GET_LINK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_LIST_FD ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_LIST_FILE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_LIST_LINK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_SET_FD ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_SET_FILE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_EXTATTR_SET_LINK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FACCESSAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FCHDIR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FCHFLAGS ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FCHMOD ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FCHMODAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FCHOWN ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FCHOWNAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FCHROOT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FCNTL ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FDATASYNC ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FEXECVE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FGETXATTR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FHSTAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FKTRACE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FLISTXATTR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FLOCK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FORK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FPATHCONF ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FREMOVEXATTR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FSETXATTR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FSTAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FSTATAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FSTATVFS1 ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FSYNC ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FSYNC_RANGE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FTRUNCATE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FUTIMENS ideal-int pkg syscall (netbsd-arm-cgo), const SYS_FUTIMES ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETCONTEXT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETDENTS ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETEGID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETEUID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETFH ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETGID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETGROUPS ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETITIMER ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETPEERNAME ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETPGID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETPGRP ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETPID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETPPID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETPRIORITY ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETRLIMIT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETRUSAGE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETSID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETSOCKNAME ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETSOCKOPT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETTIMEOFDAY ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETUID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETVFSSTAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_GETXATTR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_IOCTL ideal-int pkg syscall (netbsd-arm-cgo), const SYS_ISSETUGID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_KEVENT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_KILL ideal-int pkg syscall (netbsd-arm-cgo), const SYS_KQUEUE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_KQUEUE1 ideal-int pkg syscall (netbsd-arm-cgo), const SYS_KTRACE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_LCHFLAGS ideal-int pkg syscall (netbsd-arm-cgo), const SYS_LCHMOD ideal-int pkg syscall (netbsd-arm-cgo), const SYS_LCHOWN ideal-int pkg syscall (netbsd-arm-cgo), const SYS_LGETXATTR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_LINK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_LINKAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_LISTEN ideal-int pkg syscall (netbsd-arm-cgo), const SYS_LISTXATTR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_LLISTXATTR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_LREMOVEXATTR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_LSEEK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_LSETXATTR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_LSTAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_LUTIMES ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MADVISE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MINCORE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MINHERIT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MKDIR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MKDIRAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MKFIFO ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MKFIFOAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MKNOD ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MKNODAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MLOCK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MLOCKALL ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MMAP ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MODCTL ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MOUNT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MPROTECT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MREMAP ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MSGCTL ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MSGGET ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MSGRCV ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MSGSND ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MUNLOCK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MUNLOCKALL ideal-int pkg syscall (netbsd-arm-cgo), const SYS_MUNMAP ideal-int pkg syscall (netbsd-arm-cgo), const SYS_NANOSLEEP ideal-int pkg syscall (netbsd-arm-cgo), const SYS_NTP_ADJTIME ideal-int pkg syscall (netbsd-arm-cgo), const SYS_NTP_GETTIME ideal-int pkg syscall (netbsd-arm-cgo), const SYS_OPEN ideal-int pkg syscall (netbsd-arm-cgo), const SYS_OPENAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PACCEPT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PATHCONF ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PIPE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PIPE2 ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PMC_CONTROL ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PMC_GET_INFO ideal-int pkg syscall (netbsd-arm-cgo), const SYS_POLL ideal-int pkg syscall (netbsd-arm-cgo), const SYS_POLLTS ideal-int pkg syscall (netbsd-arm-cgo), const SYS_POSIX_FADVISE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_POSIX_SPAWN ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PREAD ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PREADV ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PROFIL ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PSELECT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PSET_ASSIGN ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PSET_CREATE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PSET_DESTROY ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PTRACE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PWRITE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_PWRITEV ideal-int pkg syscall (netbsd-arm-cgo), const SYS_RASCTL ideal-int pkg syscall (netbsd-arm-cgo), const SYS_READ ideal-int pkg syscall (netbsd-arm-cgo), const SYS_READLINK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_READLINKAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_READV ideal-int pkg syscall (netbsd-arm-cgo), const SYS_REBOOT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_RECVFROM ideal-int pkg syscall (netbsd-arm-cgo), const SYS_RECVMMSG ideal-int pkg syscall (netbsd-arm-cgo), const SYS_RECVMSG ideal-int pkg syscall (netbsd-arm-cgo), const SYS_REMOVEXATTR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_RENAME ideal-int pkg syscall (netbsd-arm-cgo), const SYS_RENAMEAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_REVOKE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_RMDIR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SBRK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SCHED_YIELD ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SELECT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SEMCONFIG ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SEMGET ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SEMOP ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SENDMMSG ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SENDMSG ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SENDTO ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETCONTEXT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETEGID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETEUID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETGID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETGROUPS ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETITIMER ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETPGID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETPRIORITY ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETREGID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETREUID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETRLIMIT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETSID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETSOCKOPT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETTIMEOFDAY ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETUID ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SETXATTR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SHMAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SHMCTL ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SHMDT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SHMGET ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SHUTDOWN ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SIGQUEUEINFO ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SOCKET ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SOCKETPAIR ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SSTK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_STAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_STATVFS1 ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SWAPCTL ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SYMLINK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SYMLINKAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SYNC ideal-int pkg syscall (netbsd-arm-cgo), const SYS_SYSARCH ideal-int pkg syscall (netbsd-arm-cgo), const SYS_TIMER_CREATE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_TIMER_DELETE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_TIMER_GETOVERRUN ideal-int pkg syscall (netbsd-arm-cgo), const SYS_TIMER_GETTIME ideal-int pkg syscall (netbsd-arm-cgo), const SYS_TIMER_SETTIME ideal-int pkg syscall (netbsd-arm-cgo), const SYS_TRUNCATE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_UMASK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_UNDELETE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_UNLINK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_UNLINKAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_UNMOUNT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_UTIMENSAT ideal-int pkg syscall (netbsd-arm-cgo), const SYS_UTIMES ideal-int pkg syscall (netbsd-arm-cgo), const SYS_UTRACE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_UUIDGEN ideal-int pkg syscall (netbsd-arm-cgo), const SYS_VADVISE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_VFORK ideal-int pkg syscall (netbsd-arm-cgo), const SYS_WAIT4 ideal-int pkg syscall (netbsd-arm-cgo), const SYS_WRITE ideal-int pkg syscall (netbsd-arm-cgo), const SYS_WRITEV ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_CONTINUE ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_CREATE ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_CTL ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_DETACH ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_EXIT ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_GETNAME ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_GETPRIVATE ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_KILL ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_PARK ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_SELF ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_SETNAME ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_SETPRIVATE ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_SUSPEND ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_UNPARK ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_UNPARK_ALL ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_WAIT ideal-int pkg syscall (netbsd-arm-cgo), const SYS__LWP_WAKEUP ideal-int pkg syscall (netbsd-arm-cgo), const SYS__PSET_BIND ideal-int pkg syscall (netbsd-arm-cgo), const SYS__SCHED_GETAFFINITY ideal-int pkg syscall (netbsd-arm-cgo), const SYS__SCHED_GETPARAM ideal-int pkg syscall (netbsd-arm-cgo), const SYS__SCHED_SETAFFINITY ideal-int pkg syscall (netbsd-arm-cgo), const SYS__SCHED_SETPARAM ideal-int pkg syscall (netbsd-arm-cgo), const SYS___CLONE ideal-int pkg syscall (netbsd-arm-cgo), const SYS___GETCWD ideal-int pkg syscall (netbsd-arm-cgo), const SYS___GETLOGIN ideal-int pkg syscall (netbsd-arm-cgo), const SYS___POSIX_CHOWN ideal-int pkg syscall (netbsd-arm-cgo), const SYS___POSIX_FCHOWN ideal-int pkg syscall (netbsd-arm-cgo), const SYS___POSIX_LCHOWN ideal-int pkg syscall (netbsd-arm-cgo), const SYS___POSIX_RENAME ideal-int pkg syscall (netbsd-arm-cgo), const SYS___QUOTACTL ideal-int pkg syscall (netbsd-arm-cgo), const SYS___SEMCTL ideal-int pkg syscall (netbsd-arm-cgo), const SYS___SETLOGIN ideal-int pkg syscall (netbsd-arm-cgo), const SYS___SIGACTION_SIGTRAMP ideal-int pkg syscall (netbsd-arm-cgo), const SYS___SIGTIMEDWAIT ideal-int pkg syscall (netbsd-arm-cgo), const SYS___SYSCTL ideal-int pkg syscall (netbsd-arm-cgo), const S_ARCH1 ideal-int pkg syscall (netbsd-arm-cgo), const S_ARCH2 ideal-int pkg syscall (netbsd-arm-cgo), const S_BLKSIZE ideal-int pkg syscall (netbsd-arm-cgo), const S_IEXEC ideal-int pkg syscall (netbsd-arm-cgo), const S_IFWHT ideal-int pkg syscall (netbsd-arm-cgo), const S_IREAD ideal-int pkg syscall (netbsd-arm-cgo), const S_IRGRP ideal-int pkg syscall (netbsd-arm-cgo), const S_IROTH ideal-int pkg syscall (netbsd-arm-cgo), const S_IRWXG ideal-int pkg syscall (netbsd-arm-cgo), const S_IRWXO ideal-int pkg syscall (netbsd-arm-cgo), const S_IRWXU ideal-int pkg syscall (netbsd-arm-cgo), const S_ISTXT ideal-int pkg syscall (netbsd-arm-cgo), const S_IWGRP ideal-int pkg syscall (netbsd-arm-cgo), const S_IWOTH ideal-int pkg syscall (netbsd-arm-cgo), const S_IWRITE ideal-int pkg syscall (netbsd-arm-cgo), const S_IXGRP ideal-int pkg syscall (netbsd-arm-cgo), const S_IXOTH ideal-int pkg syscall (netbsd-arm-cgo), const SizeofBpfHdr ideal-int pkg syscall (netbsd-arm-cgo), const SizeofBpfInsn ideal-int pkg syscall (netbsd-arm-cgo), const SizeofBpfProgram ideal-int pkg syscall (netbsd-arm-cgo), const SizeofBpfStat ideal-int pkg syscall (netbsd-arm-cgo), const SizeofBpfVersion ideal-int pkg syscall (netbsd-arm-cgo), const SizeofCmsghdr ideal-int pkg syscall (netbsd-arm-cgo), const SizeofICMPv6Filter = 32 pkg syscall (netbsd-arm-cgo), const SizeofICMPv6Filter ideal-int pkg syscall (netbsd-arm-cgo), const SizeofIPMreq ideal-int pkg syscall (netbsd-arm-cgo), const SizeofIPv6MTUInfo = 32 pkg syscall (netbsd-arm-cgo), const SizeofIPv6MTUInfo ideal-int pkg syscall (netbsd-arm-cgo), const SizeofIPv6Mreq ideal-int pkg syscall (netbsd-arm-cgo), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (netbsd-arm-cgo), const SizeofIfData ideal-int pkg syscall (netbsd-arm-cgo), const SizeofIfMsghdr ideal-int pkg syscall (netbsd-arm-cgo), const SizeofIfaMsghdr ideal-int pkg syscall (netbsd-arm-cgo), const SizeofInet6Pktinfo ideal-int pkg syscall (netbsd-arm-cgo), const SizeofLinger ideal-int pkg syscall (netbsd-arm-cgo), const SizeofMsghdr ideal-int pkg syscall (netbsd-arm-cgo), const SizeofRtMetrics ideal-int pkg syscall (netbsd-arm-cgo), const SizeofRtMsghdr ideal-int pkg syscall (netbsd-arm-cgo), const SizeofSockaddrAny ideal-int pkg syscall (netbsd-arm-cgo), const SizeofSockaddrDatalink ideal-int pkg syscall (netbsd-arm-cgo), const SizeofSockaddrInet4 ideal-int pkg syscall (netbsd-arm-cgo), const SizeofSockaddrInet6 ideal-int pkg syscall (netbsd-arm-cgo), const SizeofSockaddrUnix ideal-int pkg syscall (netbsd-arm-cgo), const TCIFLUSH ideal-int pkg syscall (netbsd-arm-cgo), const TCIOFLUSH ideal-int pkg syscall (netbsd-arm-cgo), const TCOFLUSH ideal-int pkg syscall (netbsd-arm-cgo), const TCP_CONGCTL ideal-int pkg syscall (netbsd-arm-cgo), const TCP_KEEPCNT ideal-int pkg syscall (netbsd-arm-cgo), const TCP_KEEPIDLE ideal-int pkg syscall (netbsd-arm-cgo), const TCP_KEEPINIT ideal-int pkg syscall (netbsd-arm-cgo), const TCP_KEEPINTVL ideal-int pkg syscall (netbsd-arm-cgo), const TCP_MAXBURST ideal-int pkg syscall (netbsd-arm-cgo), const TCP_MAXSEG ideal-int pkg syscall (netbsd-arm-cgo), const TCP_MAXWIN ideal-int pkg syscall (netbsd-arm-cgo), const TCP_MAX_WINSHIFT ideal-int pkg syscall (netbsd-arm-cgo), const TCP_MD5SIG ideal-int pkg syscall (netbsd-arm-cgo), const TCP_MINMSS ideal-int pkg syscall (netbsd-arm-cgo), const TCP_MSS ideal-int pkg syscall (netbsd-arm-cgo), const TCSAFLUSH ideal-int pkg syscall (netbsd-arm-cgo), const TIOCCBRK ideal-int pkg syscall (netbsd-arm-cgo), const TIOCCDTR ideal-int pkg syscall (netbsd-arm-cgo), const TIOCCONS ideal-int pkg syscall (netbsd-arm-cgo), const TIOCDCDTIMESTAMP ideal-int pkg syscall (netbsd-arm-cgo), const TIOCDRAIN ideal-int pkg syscall (netbsd-arm-cgo), const TIOCEXCL ideal-int pkg syscall (netbsd-arm-cgo), const TIOCEXT ideal-int pkg syscall (netbsd-arm-cgo), const TIOCFLAG_CDTRCTS ideal-int pkg syscall (netbsd-arm-cgo), const TIOCFLAG_CLOCAL ideal-int pkg syscall (netbsd-arm-cgo), const TIOCFLAG_CRTSCTS ideal-int pkg syscall (netbsd-arm-cgo), const TIOCFLAG_MDMBUF ideal-int pkg syscall (netbsd-arm-cgo), const TIOCFLAG_SOFTCAR ideal-int pkg syscall (netbsd-arm-cgo), const TIOCFLUSH ideal-int pkg syscall (netbsd-arm-cgo), const TIOCGETA ideal-int pkg syscall (netbsd-arm-cgo), const TIOCGETD ideal-int pkg syscall (netbsd-arm-cgo), const TIOCGFLAGS ideal-int pkg syscall (netbsd-arm-cgo), const TIOCGLINED ideal-int pkg syscall (netbsd-arm-cgo), const TIOCGPGRP ideal-int pkg syscall (netbsd-arm-cgo), const TIOCGQSIZE ideal-int pkg syscall (netbsd-arm-cgo), const TIOCGRANTPT ideal-int pkg syscall (netbsd-arm-cgo), const TIOCGSID ideal-int pkg syscall (netbsd-arm-cgo), const TIOCGSIZE ideal-int pkg syscall (netbsd-arm-cgo), const TIOCGWINSZ ideal-int pkg syscall (netbsd-arm-cgo), const TIOCMBIC ideal-int pkg syscall (netbsd-arm-cgo), const TIOCMBIS ideal-int pkg syscall (netbsd-arm-cgo), const TIOCMGET ideal-int pkg syscall (netbsd-arm-cgo), const TIOCMSET ideal-int pkg syscall (netbsd-arm-cgo), const TIOCM_CAR ideal-int pkg syscall (netbsd-arm-cgo), const TIOCM_CD ideal-int pkg syscall (netbsd-arm-cgo), const TIOCM_CTS ideal-int pkg syscall (netbsd-arm-cgo), const TIOCM_DSR ideal-int pkg syscall (netbsd-arm-cgo), const TIOCM_DTR ideal-int pkg syscall (netbsd-arm-cgo), const TIOCM_LE ideal-int pkg syscall (netbsd-arm-cgo), const TIOCM_RI ideal-int pkg syscall (netbsd-arm-cgo), const TIOCM_RNG ideal-int pkg syscall (netbsd-arm-cgo), const TIOCM_RTS ideal-int pkg syscall (netbsd-arm-cgo), const TIOCM_SR ideal-int pkg syscall (netbsd-arm-cgo), const TIOCM_ST ideal-int pkg syscall (netbsd-arm-cgo), const TIOCNOTTY ideal-int pkg syscall (netbsd-arm-cgo), const TIOCNXCL ideal-int pkg syscall (netbsd-arm-cgo), const TIOCOUTQ ideal-int pkg syscall (netbsd-arm-cgo), const TIOCPKT ideal-int pkg syscall (netbsd-arm-cgo), const TIOCPKT_DATA ideal-int pkg syscall (netbsd-arm-cgo), const TIOCPKT_DOSTOP ideal-int pkg syscall (netbsd-arm-cgo), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (netbsd-arm-cgo), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (netbsd-arm-cgo), const TIOCPKT_IOCTL ideal-int pkg syscall (netbsd-arm-cgo), const TIOCPKT_NOSTOP ideal-int pkg syscall (netbsd-arm-cgo), const TIOCPKT_START ideal-int pkg syscall (netbsd-arm-cgo), const TIOCPKT_STOP ideal-int pkg syscall (netbsd-arm-cgo), const TIOCPTMGET ideal-int pkg syscall (netbsd-arm-cgo), const TIOCPTSNAME ideal-int pkg syscall (netbsd-arm-cgo), const TIOCRCVFRAME ideal-int pkg syscall (netbsd-arm-cgo), const TIOCREMOTE ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSBRK ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSCTTY ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSDTR ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSETA ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSETAF ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSETAW ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSETD ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSFLAGS ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSIG ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSLINED ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSPGRP ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSQSIZE ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSSIZE ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSTART ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSTAT ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSTI ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSTOP ideal-int pkg syscall (netbsd-arm-cgo), const TIOCSWINSZ ideal-int pkg syscall (netbsd-arm-cgo), const TIOCUCNTL ideal-int pkg syscall (netbsd-arm-cgo), const TIOCXMTFRAME ideal-int pkg syscall (netbsd-arm-cgo), const TOSTOP ideal-int pkg syscall (netbsd-arm-cgo), const VDISCARD ideal-int pkg syscall (netbsd-arm-cgo), const VDSUSP ideal-int pkg syscall (netbsd-arm-cgo), const VEOF ideal-int pkg syscall (netbsd-arm-cgo), const VEOL ideal-int pkg syscall (netbsd-arm-cgo), const VEOL2 ideal-int pkg syscall (netbsd-arm-cgo), const VERASE ideal-int pkg syscall (netbsd-arm-cgo), const VINTR ideal-int pkg syscall (netbsd-arm-cgo), const VKILL ideal-int pkg syscall (netbsd-arm-cgo), const VLNEXT ideal-int pkg syscall (netbsd-arm-cgo), const VMIN ideal-int pkg syscall (netbsd-arm-cgo), const VQUIT ideal-int pkg syscall (netbsd-arm-cgo), const VREPRINT ideal-int pkg syscall (netbsd-arm-cgo), const VSTART ideal-int pkg syscall (netbsd-arm-cgo), const VSTATUS ideal-int pkg syscall (netbsd-arm-cgo), const VSTOP ideal-int pkg syscall (netbsd-arm-cgo), const VSUSP ideal-int pkg syscall (netbsd-arm-cgo), const VTIME ideal-int pkg syscall (netbsd-arm-cgo), const VWERASE ideal-int pkg syscall (netbsd-arm-cgo), const WALL ideal-int pkg syscall (netbsd-arm-cgo), const WALLSIG ideal-int pkg syscall (netbsd-arm-cgo), const WALTSIG ideal-int pkg syscall (netbsd-arm-cgo), const WCLONE ideal-int pkg syscall (netbsd-arm-cgo), const WCOREFLAG ideal-int pkg syscall (netbsd-arm-cgo), const WNOHANG ideal-int pkg syscall (netbsd-arm-cgo), const WNOWAIT ideal-int pkg syscall (netbsd-arm-cgo), const WNOZOMBIE ideal-int pkg syscall (netbsd-arm-cgo), const WOPTSCHECKED ideal-int pkg syscall (netbsd-arm-cgo), const WSTOPPED ideal-int pkg syscall (netbsd-arm-cgo), const WUNTRACED ideal-int pkg syscall (netbsd-arm-cgo), func Accept(int) (int, Sockaddr, error) pkg syscall (netbsd-arm-cgo), func Access(string, uint32) error pkg syscall (netbsd-arm-cgo), func Adjtime(*Timeval, *Timeval) error pkg syscall (netbsd-arm-cgo), func Bind(int, Sockaddr) error pkg syscall (netbsd-arm-cgo), func BpfBuflen(int) (int, error) pkg syscall (netbsd-arm-cgo), func BpfDatalink(int) (int, error) pkg syscall (netbsd-arm-cgo), func BpfHeadercmpl(int) (int, error) pkg syscall (netbsd-arm-cgo), func BpfInterface(int, string) (string, error) pkg syscall (netbsd-arm-cgo), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (netbsd-arm-cgo), func BpfStats(int) (*BpfStat, error) pkg syscall (netbsd-arm-cgo), func BpfStmt(int, int) *BpfInsn pkg syscall (netbsd-arm-cgo), func BpfTimeout(int) (*Timeval, error) pkg syscall (netbsd-arm-cgo), func CheckBpfVersion(int) error pkg syscall (netbsd-arm-cgo), func Chflags(string, int) error pkg syscall (netbsd-arm-cgo), func Chroot(string) error pkg syscall (netbsd-arm-cgo), func Close(int) error pkg syscall (netbsd-arm-cgo), func CloseOnExec(int) pkg syscall (netbsd-arm-cgo), func CmsgLen(int) int pkg syscall (netbsd-arm-cgo), func CmsgSpace(int) int pkg syscall (netbsd-arm-cgo), func Connect(int, Sockaddr) error pkg syscall (netbsd-arm-cgo), func Dup(int) (int, error) pkg syscall (netbsd-arm-cgo), func Dup2(int, int) error pkg syscall (netbsd-arm-cgo), func Fchdir(int) error pkg syscall (netbsd-arm-cgo), func Fchflags(string, int) error pkg syscall (netbsd-arm-cgo), func Fchmod(int, uint32) error pkg syscall (netbsd-arm-cgo), func Fchown(int, int, int) error pkg syscall (netbsd-arm-cgo), func Flock(int, int) error pkg syscall (netbsd-arm-cgo), func FlushBpf(int) error pkg syscall (netbsd-arm-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (netbsd-arm-cgo), func Fpathconf(int, int) (int, error) pkg syscall (netbsd-arm-cgo), func Fstat(int, *Stat_t) error pkg syscall (netbsd-arm-cgo), func Fsync(int) error pkg syscall (netbsd-arm-cgo), func Ftruncate(int, int64) error pkg syscall (netbsd-arm-cgo), func Futimes(int, []Timeval) error pkg syscall (netbsd-arm-cgo), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (netbsd-arm-cgo), func Getpeername(int) (Sockaddr, error) pkg syscall (netbsd-arm-cgo), func Getpgid(int) (int, error) pkg syscall (netbsd-arm-cgo), func Getpgrp() int pkg syscall (netbsd-arm-cgo), func Getpriority(int, int) (int, error) pkg syscall (netbsd-arm-cgo), func Getrlimit(int, *Rlimit) error pkg syscall (netbsd-arm-cgo), func Getrusage(int, *Rusage) error pkg syscall (netbsd-arm-cgo), func Getsid(int) (int, error) pkg syscall (netbsd-arm-cgo), func Getsockname(int) (Sockaddr, error) pkg syscall (netbsd-arm-cgo), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (netbsd-arm-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (netbsd-arm-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (netbsd-arm-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (netbsd-arm-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (netbsd-arm-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (netbsd-arm-cgo), func GetsockoptInt(int, int, int) (int, error) pkg syscall (netbsd-arm-cgo), func Issetugid() bool pkg syscall (netbsd-arm-cgo), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (netbsd-arm-cgo), func Kill(int, Signal) error pkg syscall (netbsd-arm-cgo), func Kqueue() (int, error) pkg syscall (netbsd-arm-cgo), func Listen(int, int) error pkg syscall (netbsd-arm-cgo), func Lstat(string, *Stat_t) error pkg syscall (netbsd-arm-cgo), func Mkfifo(string, uint32) error pkg syscall (netbsd-arm-cgo), func Mknod(string, uint32, int) error pkg syscall (netbsd-arm-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (netbsd-arm-cgo), func Munmap([]uint8) error pkg syscall (netbsd-arm-cgo), func Nanosleep(*Timespec, *Timespec) error pkg syscall (netbsd-arm-cgo), func Open(string, int, uint32) (int, error) pkg syscall (netbsd-arm-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (netbsd-arm-cgo), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (netbsd-arm-cgo), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (netbsd-arm-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (netbsd-arm-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (netbsd-arm-cgo), func Pathconf(string, int) (int, error) pkg syscall (netbsd-arm-cgo), func Pipe([]int) error pkg syscall (netbsd-arm-cgo), func Pread(int, []uint8, int64) (int, error) pkg syscall (netbsd-arm-cgo), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (netbsd-arm-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-arm-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-arm-cgo), func Read(int, []uint8) (int, error) pkg syscall (netbsd-arm-cgo), func ReadDirent(int, []uint8) (int, error) pkg syscall (netbsd-arm-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (netbsd-arm-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (netbsd-arm-cgo), func Revoke(string) error pkg syscall (netbsd-arm-cgo), func RouteRIB(int, int) ([]uint8, error) pkg syscall (netbsd-arm-cgo), func Seek(int, int64, int) (int64, error) pkg syscall (netbsd-arm-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (netbsd-arm-cgo), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (netbsd-arm-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (netbsd-arm-cgo), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (netbsd-arm-cgo), func SetBpf(int, []BpfInsn) error pkg syscall (netbsd-arm-cgo), func SetBpfBuflen(int, int) (int, error) pkg syscall (netbsd-arm-cgo), func SetBpfDatalink(int, int) (int, error) pkg syscall (netbsd-arm-cgo), func SetBpfHeadercmpl(int, int) error pkg syscall (netbsd-arm-cgo), func SetBpfImmediate(int, int) error pkg syscall (netbsd-arm-cgo), func SetBpfInterface(int, string) error pkg syscall (netbsd-arm-cgo), func SetBpfPromisc(int, int) error pkg syscall (netbsd-arm-cgo), func SetBpfTimeout(int, *Timeval) error pkg syscall (netbsd-arm-cgo), func SetKevent(*Kevent_t, int, int, int) pkg syscall (netbsd-arm-cgo), func SetNonblock(int, bool) error pkg syscall (netbsd-arm-cgo), func Setegid(int) error pkg syscall (netbsd-arm-cgo), func Seteuid(int) error pkg syscall (netbsd-arm-cgo), func Setgid(int) error pkg syscall (netbsd-arm-cgo), func Setgroups([]int) error pkg syscall (netbsd-arm-cgo), func Setpgid(int, int) error pkg syscall (netbsd-arm-cgo), func Setpriority(int, int, int) error pkg syscall (netbsd-arm-cgo), func Setregid(int, int) error pkg syscall (netbsd-arm-cgo), func Setreuid(int, int) error pkg syscall (netbsd-arm-cgo), func Setrlimit(int, *Rlimit) error pkg syscall (netbsd-arm-cgo), func Setsid() (int, error) pkg syscall (netbsd-arm-cgo), func SetsockoptByte(int, int, int, uint8) error pkg syscall (netbsd-arm-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (netbsd-arm-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (netbsd-arm-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (netbsd-arm-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (netbsd-arm-cgo), func SetsockoptInt(int, int, int, int) error pkg syscall (netbsd-arm-cgo), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (netbsd-arm-cgo), func SetsockoptString(int, int, int, string) error pkg syscall (netbsd-arm-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (netbsd-arm-cgo), func Settimeofday(*Timeval) error pkg syscall (netbsd-arm-cgo), func Setuid(int) error pkg syscall (netbsd-arm-cgo), func Shutdown(int, int) error pkg syscall (netbsd-arm-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (netbsd-arm-cgo), func Socket(int, int, int) (int, error) pkg syscall (netbsd-arm-cgo), func Socketpair(int, int, int) ([2]int, error) pkg syscall (netbsd-arm-cgo), func Stat(string, *Stat_t) error pkg syscall (netbsd-arm-cgo), func StringSlicePtr([]string) []*uint8 pkg syscall (netbsd-arm-cgo), func Sync() error pkg syscall (netbsd-arm-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-arm-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-arm-cgo), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (netbsd-arm-cgo), func Sysctl(string) (string, error) pkg syscall (netbsd-arm-cgo), func SysctlUint32(string) (uint32, error) pkg syscall (netbsd-arm-cgo), func TimevalToNsec(Timeval) int64 pkg syscall (netbsd-arm-cgo), func Truncate(string, int64) error pkg syscall (netbsd-arm-cgo), func Umask(int) int pkg syscall (netbsd-arm-cgo), func UnixRights(...int) []uint8 pkg syscall (netbsd-arm-cgo), func Unmount(string, int) error pkg syscall (netbsd-arm-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (netbsd-arm-cgo), func Write(int, []uint8) (int, error) pkg syscall (netbsd-arm-cgo), method (*Cmsghdr) SetLen(int) pkg syscall (netbsd-arm-cgo), method (*Iovec) SetLen(int) pkg syscall (netbsd-arm-cgo), method (*Msghdr) SetControllen(int) pkg syscall (netbsd-arm-cgo), type BpfHdr struct pkg syscall (netbsd-arm-cgo), type BpfHdr struct, Caplen uint32 pkg syscall (netbsd-arm-cgo), type BpfHdr struct, Datalen uint32 pkg syscall (netbsd-arm-cgo), type BpfHdr struct, Hdrlen uint16 pkg syscall (netbsd-arm-cgo), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-arm-cgo), type BpfHdr struct, Tstamp BpfTimeval pkg syscall (netbsd-arm-cgo), type BpfInsn struct pkg syscall (netbsd-arm-cgo), type BpfInsn struct, Code uint16 pkg syscall (netbsd-arm-cgo), type BpfInsn struct, Jf uint8 pkg syscall (netbsd-arm-cgo), type BpfInsn struct, Jt uint8 pkg syscall (netbsd-arm-cgo), type BpfInsn struct, K uint32 pkg syscall (netbsd-arm-cgo), type BpfProgram struct pkg syscall (netbsd-arm-cgo), type BpfProgram struct, Insns *BpfInsn pkg syscall (netbsd-arm-cgo), type BpfProgram struct, Len uint32 pkg syscall (netbsd-arm-cgo), type BpfStat struct pkg syscall (netbsd-arm-cgo), type BpfStat struct, Capt uint64 pkg syscall (netbsd-arm-cgo), type BpfStat struct, Drop uint64 pkg syscall (netbsd-arm-cgo), type BpfStat struct, Padding [13]uint64 pkg syscall (netbsd-arm-cgo), type BpfStat struct, Recv uint64 pkg syscall (netbsd-arm-cgo), type BpfTimeval struct pkg syscall (netbsd-arm-cgo), type BpfTimeval struct, Sec int32 pkg syscall (netbsd-arm-cgo), type BpfTimeval struct, Usec int32 pkg syscall (netbsd-arm-cgo), type BpfVersion struct pkg syscall (netbsd-arm-cgo), type BpfVersion struct, Major uint16 pkg syscall (netbsd-arm-cgo), type BpfVersion struct, Minor uint16 pkg syscall (netbsd-arm-cgo), type Cmsghdr struct pkg syscall (netbsd-arm-cgo), type Cmsghdr struct, Len uint32 pkg syscall (netbsd-arm-cgo), type Cmsghdr struct, Level int32 pkg syscall (netbsd-arm-cgo), type Cmsghdr struct, Type int32 pkg syscall (netbsd-arm-cgo), type Credential struct pkg syscall (netbsd-arm-cgo), type Credential struct, Gid uint32 pkg syscall (netbsd-arm-cgo), type Credential struct, Groups []uint32 pkg syscall (netbsd-arm-cgo), type Credential struct, Uid uint32 pkg syscall (netbsd-arm-cgo), type Dirent struct pkg syscall (netbsd-arm-cgo), type Dirent struct, Fileno uint64 pkg syscall (netbsd-arm-cgo), type Dirent struct, Name [512]int8 pkg syscall (netbsd-arm-cgo), type Dirent struct, Namlen uint16 pkg syscall (netbsd-arm-cgo), type Dirent struct, Pad_cgo_0 [3]uint8 pkg syscall (netbsd-arm-cgo), type Dirent struct, Reclen uint16 pkg syscall (netbsd-arm-cgo), type Dirent struct, Type uint8 pkg syscall (netbsd-arm-cgo), type FdSet struct pkg syscall (netbsd-arm-cgo), type FdSet struct, Bits [8]uint32 pkg syscall (netbsd-arm-cgo), type Flock_t struct pkg syscall (netbsd-arm-cgo), type Flock_t struct, Len int64 pkg syscall (netbsd-arm-cgo), type Flock_t struct, Pid int32 pkg syscall (netbsd-arm-cgo), type Flock_t struct, Start int64 pkg syscall (netbsd-arm-cgo), type Flock_t struct, Type int16 pkg syscall (netbsd-arm-cgo), type Flock_t struct, Whence int16 pkg syscall (netbsd-arm-cgo), type Fsid struct pkg syscall (netbsd-arm-cgo), type Fsid struct, X__fsid_val [2]int32 pkg syscall (netbsd-arm-cgo), type ICMPv6Filter struct pkg syscall (netbsd-arm-cgo), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (netbsd-arm-cgo), type IPv6MTUInfo struct pkg syscall (netbsd-arm-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (netbsd-arm-cgo), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (netbsd-arm-cgo), type IfAnnounceMsghdr struct pkg syscall (netbsd-arm-cgo), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (netbsd-arm-cgo), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (netbsd-arm-cgo), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (netbsd-arm-cgo), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (netbsd-arm-cgo), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (netbsd-arm-cgo), type IfAnnounceMsghdr struct, What uint16 pkg syscall (netbsd-arm-cgo), type IfData struct pkg syscall (netbsd-arm-cgo), type IfData struct, Addrlen uint8 pkg syscall (netbsd-arm-cgo), type IfData struct, Baudrate uint64 pkg syscall (netbsd-arm-cgo), type IfData struct, Collisions uint64 pkg syscall (netbsd-arm-cgo), type IfData struct, Hdrlen uint8 pkg syscall (netbsd-arm-cgo), type IfData struct, Ibytes uint64 pkg syscall (netbsd-arm-cgo), type IfData struct, Ierrors uint64 pkg syscall (netbsd-arm-cgo), type IfData struct, Imcasts uint64 pkg syscall (netbsd-arm-cgo), type IfData struct, Ipackets uint64 pkg syscall (netbsd-arm-cgo), type IfData struct, Iqdrops uint64 pkg syscall (netbsd-arm-cgo), type IfData struct, Lastchange Timespec pkg syscall (netbsd-arm-cgo), type IfData struct, Link_state int32 pkg syscall (netbsd-arm-cgo), type IfData struct, Metric uint64 pkg syscall (netbsd-arm-cgo), type IfData struct, Mtu uint64 pkg syscall (netbsd-arm-cgo), type IfData struct, Noproto uint64 pkg syscall (netbsd-arm-cgo), type IfData struct, Obytes uint64 pkg syscall (netbsd-arm-cgo), type IfData struct, Oerrors uint64 pkg syscall (netbsd-arm-cgo), type IfData struct, Omcasts uint64 pkg syscall (netbsd-arm-cgo), type IfData struct, Opackets uint64 pkg syscall (netbsd-arm-cgo), type IfData struct, Pad_cgo_0 [1]uint8 pkg syscall (netbsd-arm-cgo), type IfData struct, Type uint8 pkg syscall (netbsd-arm-cgo), type IfMsghdr struct pkg syscall (netbsd-arm-cgo), type IfMsghdr struct, Addrs int32 pkg syscall (netbsd-arm-cgo), type IfMsghdr struct, Data IfData pkg syscall (netbsd-arm-cgo), type IfMsghdr struct, Flags int32 pkg syscall (netbsd-arm-cgo), type IfMsghdr struct, Index uint16 pkg syscall (netbsd-arm-cgo), type IfMsghdr struct, Msglen uint16 pkg syscall (netbsd-arm-cgo), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-arm-cgo), type IfMsghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-arm-cgo), type IfMsghdr struct, Type uint8 pkg syscall (netbsd-arm-cgo), type IfMsghdr struct, Version uint8 pkg syscall (netbsd-arm-cgo), type IfaMsghdr struct pkg syscall (netbsd-arm-cgo), type IfaMsghdr struct, Addrs int32 pkg syscall (netbsd-arm-cgo), type IfaMsghdr struct, Flags int32 pkg syscall (netbsd-arm-cgo), type IfaMsghdr struct, Index uint16 pkg syscall (netbsd-arm-cgo), type IfaMsghdr struct, Metric int32 pkg syscall (netbsd-arm-cgo), type IfaMsghdr struct, Msglen uint16 pkg syscall (netbsd-arm-cgo), type IfaMsghdr struct, Pad_cgo_0 [6]uint8 pkg syscall (netbsd-arm-cgo), type IfaMsghdr struct, Type uint8 pkg syscall (netbsd-arm-cgo), type IfaMsghdr struct, Version uint8 pkg syscall (netbsd-arm-cgo), type Inet6Pktinfo struct pkg syscall (netbsd-arm-cgo), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (netbsd-arm-cgo), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (netbsd-arm-cgo), type InterfaceAddrMessage struct pkg syscall (netbsd-arm-cgo), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (netbsd-arm-cgo), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (netbsd-arm-cgo), type InterfaceAnnounceMessage struct pkg syscall (netbsd-arm-cgo), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (netbsd-arm-cgo), type InterfaceMessage struct pkg syscall (netbsd-arm-cgo), type InterfaceMessage struct, Data []uint8 pkg syscall (netbsd-arm-cgo), type InterfaceMessage struct, Header IfMsghdr pkg syscall (netbsd-arm-cgo), type Iovec struct pkg syscall (netbsd-arm-cgo), type Iovec struct, Base *uint8 pkg syscall (netbsd-arm-cgo), type Iovec struct, Len uint32 pkg syscall (netbsd-arm-cgo), type Kevent_t struct pkg syscall (netbsd-arm-cgo), type Kevent_t struct, Data int64 pkg syscall (netbsd-arm-cgo), type Kevent_t struct, Fflags uint32 pkg syscall (netbsd-arm-cgo), type Kevent_t struct, Filter uint32 pkg syscall (netbsd-arm-cgo), type Kevent_t struct, Flags uint32 pkg syscall (netbsd-arm-cgo), type Kevent_t struct, Ident uint32 pkg syscall (netbsd-arm-cgo), type Kevent_t struct, Udata int32 pkg syscall (netbsd-arm-cgo), type Mclpool [0]uint8 pkg syscall (netbsd-arm-cgo), type Msghdr struct pkg syscall (netbsd-arm-cgo), type Msghdr struct, Control *uint8 pkg syscall (netbsd-arm-cgo), type Msghdr struct, Controllen uint32 pkg syscall (netbsd-arm-cgo), type Msghdr struct, Flags int32 pkg syscall (netbsd-arm-cgo), type Msghdr struct, Iov *Iovec pkg syscall (netbsd-arm-cgo), type Msghdr struct, Iovlen int32 pkg syscall (netbsd-arm-cgo), type Msghdr struct, Name *uint8 pkg syscall (netbsd-arm-cgo), type Msghdr struct, Namelen uint32 pkg syscall (netbsd-arm-cgo), type RawSockaddr struct, Data [14]int8 pkg syscall (netbsd-arm-cgo), type RawSockaddr struct, Family uint8 pkg syscall (netbsd-arm-cgo), type RawSockaddr struct, Len uint8 pkg syscall (netbsd-arm-cgo), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (netbsd-arm-cgo), type RawSockaddrDatalink struct pkg syscall (netbsd-arm-cgo), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (netbsd-arm-cgo), type RawSockaddrDatalink struct, Data [12]int8 pkg syscall (netbsd-arm-cgo), type RawSockaddrDatalink struct, Family uint8 pkg syscall (netbsd-arm-cgo), type RawSockaddrDatalink struct, Index uint16 pkg syscall (netbsd-arm-cgo), type RawSockaddrDatalink struct, Len uint8 pkg syscall (netbsd-arm-cgo), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (netbsd-arm-cgo), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (netbsd-arm-cgo), type RawSockaddrDatalink struct, Type uint8 pkg syscall (netbsd-arm-cgo), type RawSockaddrInet4 struct, Family uint8 pkg syscall (netbsd-arm-cgo), type RawSockaddrInet4 struct, Len uint8 pkg syscall (netbsd-arm-cgo), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (netbsd-arm-cgo), type RawSockaddrInet6 struct, Family uint8 pkg syscall (netbsd-arm-cgo), type RawSockaddrInet6 struct, Len uint8 pkg syscall (netbsd-arm-cgo), type RawSockaddrUnix struct pkg syscall (netbsd-arm-cgo), type RawSockaddrUnix struct, Family uint8 pkg syscall (netbsd-arm-cgo), type RawSockaddrUnix struct, Len uint8 pkg syscall (netbsd-arm-cgo), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (netbsd-arm-cgo), type Rlimit struct pkg syscall (netbsd-arm-cgo), type Rlimit struct, Cur uint64 pkg syscall (netbsd-arm-cgo), type Rlimit struct, Max uint64 pkg syscall (netbsd-arm-cgo), type RouteMessage struct pkg syscall (netbsd-arm-cgo), type RouteMessage struct, Data []uint8 pkg syscall (netbsd-arm-cgo), type RouteMessage struct, Header RtMsghdr pkg syscall (netbsd-arm-cgo), type RoutingMessage interface, unexported methods pkg syscall (netbsd-arm-cgo), type RtMetrics struct pkg syscall (netbsd-arm-cgo), type RtMetrics struct, Expire int64 pkg syscall (netbsd-arm-cgo), type RtMetrics struct, Hopcount uint64 pkg syscall (netbsd-arm-cgo), type RtMetrics struct, Locks uint64 pkg syscall (netbsd-arm-cgo), type RtMetrics struct, Mtu uint64 pkg syscall (netbsd-arm-cgo), type RtMetrics struct, Pksent int64 pkg syscall (netbsd-arm-cgo), type RtMetrics struct, Recvpipe uint64 pkg syscall (netbsd-arm-cgo), type RtMetrics struct, Rtt uint64 pkg syscall (netbsd-arm-cgo), type RtMetrics struct, Rttvar uint64 pkg syscall (netbsd-arm-cgo), type RtMetrics struct, Sendpipe uint64 pkg syscall (netbsd-arm-cgo), type RtMetrics struct, Ssthresh uint64 pkg syscall (netbsd-arm-cgo), type RtMsghdr struct pkg syscall (netbsd-arm-cgo), type RtMsghdr struct, Addrs int32 pkg syscall (netbsd-arm-cgo), type RtMsghdr struct, Errno int32 pkg syscall (netbsd-arm-cgo), type RtMsghdr struct, Flags int32 pkg syscall (netbsd-arm-cgo), type RtMsghdr struct, Index uint16 pkg syscall (netbsd-arm-cgo), type RtMsghdr struct, Inits int32 pkg syscall (netbsd-arm-cgo), type RtMsghdr struct, Msglen uint16 pkg syscall (netbsd-arm-cgo), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (netbsd-arm-cgo), type RtMsghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-arm-cgo), type RtMsghdr struct, Pid int32 pkg syscall (netbsd-arm-cgo), type RtMsghdr struct, Rmx RtMetrics pkg syscall (netbsd-arm-cgo), type RtMsghdr struct, Seq int32 pkg syscall (netbsd-arm-cgo), type RtMsghdr struct, Type uint8 pkg syscall (netbsd-arm-cgo), type RtMsghdr struct, Use int32 pkg syscall (netbsd-arm-cgo), type RtMsghdr struct, Version uint8 pkg syscall (netbsd-arm-cgo), type Rusage struct, Idrss int32 pkg syscall (netbsd-arm-cgo), type Rusage struct, Inblock int32 pkg syscall (netbsd-arm-cgo), type Rusage struct, Isrss int32 pkg syscall (netbsd-arm-cgo), type Rusage struct, Ixrss int32 pkg syscall (netbsd-arm-cgo), type Rusage struct, Majflt int32 pkg syscall (netbsd-arm-cgo), type Rusage struct, Maxrss int32 pkg syscall (netbsd-arm-cgo), type Rusage struct, Minflt int32 pkg syscall (netbsd-arm-cgo), type Rusage struct, Msgrcv int32 pkg syscall (netbsd-arm-cgo), type Rusage struct, Msgsnd int32 pkg syscall (netbsd-arm-cgo), type Rusage struct, Nivcsw int32 pkg syscall (netbsd-arm-cgo), type Rusage struct, Nsignals int32 pkg syscall (netbsd-arm-cgo), type Rusage struct, Nswap int32 pkg syscall (netbsd-arm-cgo), type Rusage struct, Nvcsw int32 pkg syscall (netbsd-arm-cgo), type Rusage struct, Oublock int32 pkg syscall (netbsd-arm-cgo), type Rusage struct, Stime Timeval pkg syscall (netbsd-arm-cgo), type Rusage struct, Utime Timeval pkg syscall (netbsd-arm-cgo), type SockaddrDatalink struct pkg syscall (netbsd-arm-cgo), type SockaddrDatalink struct, Alen uint8 pkg syscall (netbsd-arm-cgo), type SockaddrDatalink struct, Data [12]int8 pkg syscall (netbsd-arm-cgo), type SockaddrDatalink struct, Family uint8 pkg syscall (netbsd-arm-cgo), type SockaddrDatalink struct, Index uint16 pkg syscall (netbsd-arm-cgo), type SockaddrDatalink struct, Len uint8 pkg syscall (netbsd-arm-cgo), type SockaddrDatalink struct, Nlen uint8 pkg syscall (netbsd-arm-cgo), type SockaddrDatalink struct, Slen uint8 pkg syscall (netbsd-arm-cgo), type SockaddrDatalink struct, Type uint8 pkg syscall (netbsd-arm-cgo), type SocketControlMessage struct pkg syscall (netbsd-arm-cgo), type SocketControlMessage struct, Data []uint8 pkg syscall (netbsd-arm-cgo), type SocketControlMessage struct, Header Cmsghdr pkg syscall (netbsd-arm-cgo), type Stat_t struct pkg syscall (netbsd-arm-cgo), type Stat_t struct, Atimespec Timespec pkg syscall (netbsd-arm-cgo), type Stat_t struct, Birthtimespec Timespec pkg syscall (netbsd-arm-cgo), type Stat_t struct, Blksize uint32 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Blocks int64 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Ctimespec Timespec pkg syscall (netbsd-arm-cgo), type Stat_t struct, Dev uint64 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Flags uint32 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Gen uint32 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Gid uint32 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Ino uint64 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Mode uint32 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Mtimespec Timespec pkg syscall (netbsd-arm-cgo), type Stat_t struct, Nlink uint32 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Rdev uint64 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Size int64 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Spare [2]uint32 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Uid uint32 pkg syscall (netbsd-arm-cgo), type Statfs_t [0]uint8 pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Chroot string pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Credential *Credential pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Noctty bool pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Ptrace bool pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Setctty bool pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Setpgid bool pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Setsid bool pkg syscall (netbsd-arm-cgo), type Sysctlnode struct pkg syscall (netbsd-arm-cgo), type Sysctlnode struct, Flags uint32 pkg syscall (netbsd-arm-cgo), type Sysctlnode struct, Name [32]int8 pkg syscall (netbsd-arm-cgo), type Sysctlnode struct, Num int32 pkg syscall (netbsd-arm-cgo), type Sysctlnode struct, Un [16]uint8 pkg syscall (netbsd-arm-cgo), type Sysctlnode struct, Ver uint32 pkg syscall (netbsd-arm-cgo), type Sysctlnode struct, X__rsvd uint32 pkg syscall (netbsd-arm-cgo), type Sysctlnode struct, X_sysctl_desc [8]uint8 pkg syscall (netbsd-arm-cgo), type Sysctlnode struct, X_sysctl_func [8]uint8 pkg syscall (netbsd-arm-cgo), type Sysctlnode struct, X_sysctl_parent [8]uint8 pkg syscall (netbsd-arm-cgo), type Sysctlnode struct, X_sysctl_size [8]uint8 pkg syscall (netbsd-arm-cgo), type Timespec struct, Nsec int32 pkg syscall (netbsd-arm-cgo), type Timespec struct, Sec int64 pkg syscall (netbsd-arm-cgo), type Timeval struct, Sec int64 pkg syscall (netbsd-arm-cgo), type Timeval struct, Usec int32 pkg syscall (netbsd-arm-cgo), type WaitStatus uint32 pkg syscall (netbsd-arm-cgo), var Stderr int pkg syscall (netbsd-arm-cgo), var Stdin int pkg syscall (netbsd-arm-cgo), var Stdout int pkg syscall (openbsd-386), const AF_APPLETALK ideal-int pkg syscall (openbsd-386), const AF_BLUETOOTH ideal-int pkg syscall (openbsd-386), const AF_CCITT ideal-int pkg syscall (openbsd-386), const AF_CHAOS ideal-int pkg syscall (openbsd-386), const AF_CNT ideal-int pkg syscall (openbsd-386), const AF_COIP ideal-int pkg syscall (openbsd-386), const AF_DATAKIT ideal-int pkg syscall (openbsd-386), const AF_DECnet ideal-int pkg syscall (openbsd-386), const AF_DLI ideal-int pkg syscall (openbsd-386), const AF_E164 ideal-int pkg syscall (openbsd-386), const AF_ECMA ideal-int pkg syscall (openbsd-386), const AF_ENCAP ideal-int pkg syscall (openbsd-386), const AF_HYLINK ideal-int pkg syscall (openbsd-386), const AF_IMPLINK ideal-int pkg syscall (openbsd-386), const AF_IPX ideal-int pkg syscall (openbsd-386), const AF_ISDN ideal-int pkg syscall (openbsd-386), const AF_ISO ideal-int pkg syscall (openbsd-386), const AF_KEY ideal-int pkg syscall (openbsd-386), const AF_LAT ideal-int pkg syscall (openbsd-386), const AF_LINK ideal-int pkg syscall (openbsd-386), const AF_LOCAL ideal-int pkg syscall (openbsd-386), const AF_MAX ideal-int pkg syscall (openbsd-386), const AF_MPLS ideal-int pkg syscall (openbsd-386), const AF_NATM ideal-int pkg syscall (openbsd-386), const AF_NS ideal-int pkg syscall (openbsd-386), const AF_OSI ideal-int pkg syscall (openbsd-386), const AF_PUP ideal-int pkg syscall (openbsd-386), const AF_ROUTE ideal-int pkg syscall (openbsd-386), const AF_SIP ideal-int pkg syscall (openbsd-386), const AF_SNA ideal-int pkg syscall (openbsd-386), const ARPHRD_ETHER ideal-int pkg syscall (openbsd-386), const ARPHRD_FRELAY ideal-int pkg syscall (openbsd-386), const ARPHRD_IEEE1394 ideal-int pkg syscall (openbsd-386), const ARPHRD_IEEE802 ideal-int pkg syscall (openbsd-386), const B0 ideal-int pkg syscall (openbsd-386), const B110 ideal-int pkg syscall (openbsd-386), const B115200 ideal-int pkg syscall (openbsd-386), const B1200 ideal-int pkg syscall (openbsd-386), const B134 ideal-int pkg syscall (openbsd-386), const B14400 ideal-int pkg syscall (openbsd-386), const B150 ideal-int pkg syscall (openbsd-386), const B1800 ideal-int pkg syscall (openbsd-386), const B19200 ideal-int pkg syscall (openbsd-386), const B200 ideal-int pkg syscall (openbsd-386), const B230400 ideal-int pkg syscall (openbsd-386), const B2400 ideal-int pkg syscall (openbsd-386), const B28800 ideal-int pkg syscall (openbsd-386), const B300 ideal-int pkg syscall (openbsd-386), const B38400 ideal-int pkg syscall (openbsd-386), const B4800 ideal-int pkg syscall (openbsd-386), const B50 ideal-int pkg syscall (openbsd-386), const B57600 ideal-int pkg syscall (openbsd-386), const B600 ideal-int pkg syscall (openbsd-386), const B7200 ideal-int pkg syscall (openbsd-386), const B75 ideal-int pkg syscall (openbsd-386), const B76800 ideal-int pkg syscall (openbsd-386), const B9600 ideal-int pkg syscall (openbsd-386), const BIOCFLUSH ideal-int pkg syscall (openbsd-386), const BIOCGBLEN ideal-int pkg syscall (openbsd-386), const BIOCGDIRFILT ideal-int pkg syscall (openbsd-386), const BIOCGDLT ideal-int pkg syscall (openbsd-386), const BIOCGDLTLIST ideal-int pkg syscall (openbsd-386), const BIOCGETIF ideal-int pkg syscall (openbsd-386), const BIOCGFILDROP ideal-int pkg syscall (openbsd-386), const BIOCGHDRCMPLT ideal-int pkg syscall (openbsd-386), const BIOCGRSIG ideal-int pkg syscall (openbsd-386), const BIOCGRTIMEOUT ideal-int pkg syscall (openbsd-386), const BIOCGSTATS ideal-int pkg syscall (openbsd-386), const BIOCIMMEDIATE ideal-int pkg syscall (openbsd-386), const BIOCLOCK ideal-int pkg syscall (openbsd-386), const BIOCPROMISC ideal-int pkg syscall (openbsd-386), const BIOCSBLEN ideal-int pkg syscall (openbsd-386), const BIOCSDIRFILT ideal-int pkg syscall (openbsd-386), const BIOCSDLT ideal-int pkg syscall (openbsd-386), const BIOCSETF ideal-int pkg syscall (openbsd-386), const BIOCSETIF ideal-int pkg syscall (openbsd-386), const BIOCSETWF ideal-int pkg syscall (openbsd-386), const BIOCSFILDROP ideal-int pkg syscall (openbsd-386), const BIOCSHDRCMPLT ideal-int pkg syscall (openbsd-386), const BIOCSRSIG ideal-int pkg syscall (openbsd-386), const BIOCSRTIMEOUT ideal-int pkg syscall (openbsd-386), const BIOCVERSION ideal-int pkg syscall (openbsd-386), const BPF_A ideal-int pkg syscall (openbsd-386), const BPF_ABS ideal-int pkg syscall (openbsd-386), const BPF_ADD ideal-int pkg syscall (openbsd-386), const BPF_ALIGNMENT ideal-int pkg syscall (openbsd-386), const BPF_ALU ideal-int pkg syscall (openbsd-386), const BPF_AND ideal-int pkg syscall (openbsd-386), const BPF_B ideal-int pkg syscall (openbsd-386), const BPF_DIRECTION_IN ideal-int pkg syscall (openbsd-386), const BPF_DIRECTION_OUT ideal-int pkg syscall (openbsd-386), const BPF_DIV ideal-int pkg syscall (openbsd-386), const BPF_H ideal-int pkg syscall (openbsd-386), const BPF_IMM ideal-int pkg syscall (openbsd-386), const BPF_IND ideal-int pkg syscall (openbsd-386), const BPF_JA ideal-int pkg syscall (openbsd-386), const BPF_JEQ ideal-int pkg syscall (openbsd-386), const BPF_JGE ideal-int pkg syscall (openbsd-386), const BPF_JGT ideal-int pkg syscall (openbsd-386), const BPF_JMP ideal-int pkg syscall (openbsd-386), const BPF_JSET ideal-int pkg syscall (openbsd-386), const BPF_K ideal-int pkg syscall (openbsd-386), const BPF_LD ideal-int pkg syscall (openbsd-386), const BPF_LDX ideal-int pkg syscall (openbsd-386), const BPF_LEN ideal-int pkg syscall (openbsd-386), const BPF_LSH ideal-int pkg syscall (openbsd-386), const BPF_MAJOR_VERSION ideal-int pkg syscall (openbsd-386), const BPF_MAXBUFSIZE ideal-int pkg syscall (openbsd-386), const BPF_MAXINSNS ideal-int pkg syscall (openbsd-386), const BPF_MEM ideal-int pkg syscall (openbsd-386), const BPF_MEMWORDS ideal-int pkg syscall (openbsd-386), const BPF_MINBUFSIZE ideal-int pkg syscall (openbsd-386), const BPF_MINOR_VERSION ideal-int pkg syscall (openbsd-386), const BPF_MISC ideal-int pkg syscall (openbsd-386), const BPF_MSH ideal-int pkg syscall (openbsd-386), const BPF_MUL ideal-int pkg syscall (openbsd-386), const BPF_NEG ideal-int pkg syscall (openbsd-386), const BPF_OR ideal-int pkg syscall (openbsd-386), const BPF_RELEASE ideal-int pkg syscall (openbsd-386), const BPF_RET ideal-int pkg syscall (openbsd-386), const BPF_RSH ideal-int pkg syscall (openbsd-386), const BPF_ST ideal-int pkg syscall (openbsd-386), const BPF_STX ideal-int pkg syscall (openbsd-386), const BPF_SUB ideal-int pkg syscall (openbsd-386), const BPF_TAX ideal-int pkg syscall (openbsd-386), const BPF_TXA ideal-int pkg syscall (openbsd-386), const BPF_W ideal-int pkg syscall (openbsd-386), const BPF_X ideal-int pkg syscall (openbsd-386), const BRKINT ideal-int pkg syscall (openbsd-386), const CFLUSH ideal-int pkg syscall (openbsd-386), const CLOCAL ideal-int pkg syscall (openbsd-386), const CREAD ideal-int pkg syscall (openbsd-386), const CS5 ideal-int pkg syscall (openbsd-386), const CS6 ideal-int pkg syscall (openbsd-386), const CS7 ideal-int pkg syscall (openbsd-386), const CS8 ideal-int pkg syscall (openbsd-386), const CSIZE ideal-int pkg syscall (openbsd-386), const CSTART ideal-int pkg syscall (openbsd-386), const CSTATUS ideal-int pkg syscall (openbsd-386), const CSTOP ideal-int pkg syscall (openbsd-386), const CSTOPB ideal-int pkg syscall (openbsd-386), const CSUSP ideal-int pkg syscall (openbsd-386), const CTL_MAXNAME ideal-int pkg syscall (openbsd-386), const CTL_NET ideal-int pkg syscall (openbsd-386), const DIOCOSFPFLUSH ideal-int pkg syscall (openbsd-386), const DLT_ARCNET ideal-int pkg syscall (openbsd-386), const DLT_ATM_RFC1483 ideal-int pkg syscall (openbsd-386), const DLT_AX25 ideal-int pkg syscall (openbsd-386), const DLT_CHAOS ideal-int pkg syscall (openbsd-386), const DLT_C_HDLC ideal-int pkg syscall (openbsd-386), const DLT_EN10MB ideal-int pkg syscall (openbsd-386), const DLT_EN3MB ideal-int pkg syscall (openbsd-386), const DLT_ENC ideal-int pkg syscall (openbsd-386), const DLT_FDDI ideal-int pkg syscall (openbsd-386), const DLT_IEEE802 ideal-int pkg syscall (openbsd-386), const DLT_IEEE802_11 ideal-int pkg syscall (openbsd-386), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (openbsd-386), const DLT_LOOP ideal-int pkg syscall (openbsd-386), const DLT_MPLS ideal-int pkg syscall (openbsd-386), const DLT_NULL ideal-int pkg syscall (openbsd-386), const DLT_PFLOG ideal-int pkg syscall (openbsd-386), const DLT_PFSYNC ideal-int pkg syscall (openbsd-386), const DLT_PPP ideal-int pkg syscall (openbsd-386), const DLT_PPP_BSDOS ideal-int pkg syscall (openbsd-386), const DLT_PPP_ETHER ideal-int pkg syscall (openbsd-386), const DLT_PPP_SERIAL ideal-int pkg syscall (openbsd-386), const DLT_PRONET ideal-int pkg syscall (openbsd-386), const DLT_RAW ideal-int pkg syscall (openbsd-386), const DLT_SLIP ideal-int pkg syscall (openbsd-386), const DLT_SLIP_BSDOS ideal-int pkg syscall (openbsd-386), const DT_BLK ideal-int pkg syscall (openbsd-386), const DT_CHR ideal-int pkg syscall (openbsd-386), const DT_DIR ideal-int pkg syscall (openbsd-386), const DT_FIFO ideal-int pkg syscall (openbsd-386), const DT_LNK ideal-int pkg syscall (openbsd-386), const DT_REG ideal-int pkg syscall (openbsd-386), const DT_SOCK ideal-int pkg syscall (openbsd-386), const DT_UNKNOWN ideal-int pkg syscall (openbsd-386), const EAUTH Errno pkg syscall (openbsd-386), const EBADRPC Errno pkg syscall (openbsd-386), const ECHO ideal-int pkg syscall (openbsd-386), const ECHOCTL ideal-int pkg syscall (openbsd-386), const ECHOE ideal-int pkg syscall (openbsd-386), const ECHOK ideal-int pkg syscall (openbsd-386), const ECHOKE ideal-int pkg syscall (openbsd-386), const ECHONL ideal-int pkg syscall (openbsd-386), const ECHOPRT ideal-int pkg syscall (openbsd-386), const EFTYPE Errno pkg syscall (openbsd-386), const EIPSEC Errno pkg syscall (openbsd-386), const ELAST Errno pkg syscall (openbsd-386), const EMEDIUMTYPE Errno pkg syscall (openbsd-386), const EMT_TAGOVF ideal-int pkg syscall (openbsd-386), const EMUL_ENABLED ideal-int pkg syscall (openbsd-386), const EMUL_NATIVE ideal-int pkg syscall (openbsd-386), const ENDRUNDISC ideal-int pkg syscall (openbsd-386), const ENEEDAUTH Errno pkg syscall (openbsd-386), const ENOATTR Errno pkg syscall (openbsd-386), const ENOMEDIUM Errno pkg syscall (openbsd-386), const EPROCLIM Errno pkg syscall (openbsd-386), const EPROCUNAVAIL Errno pkg syscall (openbsd-386), const EPROGMISMATCH Errno pkg syscall (openbsd-386), const EPROGUNAVAIL Errno pkg syscall (openbsd-386), const ERPCMISMATCH Errno pkg syscall (openbsd-386), const ETHERMIN ideal-int pkg syscall (openbsd-386), const ETHERMTU ideal-int pkg syscall (openbsd-386), const ETHERTYPE_8023 ideal-int pkg syscall (openbsd-386), const ETHERTYPE_AARP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_ACCTON ideal-int pkg syscall (openbsd-386), const ETHERTYPE_AEONIC ideal-int pkg syscall (openbsd-386), const ETHERTYPE_ALPHA ideal-int pkg syscall (openbsd-386), const ETHERTYPE_AMBER ideal-int pkg syscall (openbsd-386), const ETHERTYPE_AMOEBA ideal-int pkg syscall (openbsd-386), const ETHERTYPE_AOE ideal-int pkg syscall (openbsd-386), const ETHERTYPE_APOLLO ideal-int pkg syscall (openbsd-386), const ETHERTYPE_APOLLODOMAIN ideal-int pkg syscall (openbsd-386), const ETHERTYPE_APPLETALK ideal-int pkg syscall (openbsd-386), const ETHERTYPE_APPLITEK ideal-int pkg syscall (openbsd-386), const ETHERTYPE_ARGONAUT ideal-int pkg syscall (openbsd-386), const ETHERTYPE_ARP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_AT ideal-int pkg syscall (openbsd-386), const ETHERTYPE_ATALK ideal-int pkg syscall (openbsd-386), const ETHERTYPE_ATOMIC ideal-int pkg syscall (openbsd-386), const ETHERTYPE_ATT ideal-int pkg syscall (openbsd-386), const ETHERTYPE_ATTSTANFORD ideal-int pkg syscall (openbsd-386), const ETHERTYPE_AUTOPHON ideal-int pkg syscall (openbsd-386), const ETHERTYPE_AXIS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_BCLOOP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_BOFL ideal-int pkg syscall (openbsd-386), const ETHERTYPE_CABLETRON ideal-int pkg syscall (openbsd-386), const ETHERTYPE_CHAOS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_COMDESIGN ideal-int pkg syscall (openbsd-386), const ETHERTYPE_COMPUGRAPHIC ideal-int pkg syscall (openbsd-386), const ETHERTYPE_COUNTERPOINT ideal-int pkg syscall (openbsd-386), const ETHERTYPE_CRONUS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_CRONUSVLN ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DCA ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DDE ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DEBNI ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DECAM ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DECCUST ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DECDIAG ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DECDNS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DECDTS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DECEXPER ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DECLAST ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DECLTM ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DECMUMPS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DECNETBIOS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DELTACON ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DIDDLE ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DLOG1 ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DLOG2 ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DN ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DOGFIGHT ideal-int pkg syscall (openbsd-386), const ETHERTYPE_DSMD ideal-int pkg syscall (openbsd-386), const ETHERTYPE_ECMA ideal-int pkg syscall (openbsd-386), const ETHERTYPE_ENCRYPT ideal-int pkg syscall (openbsd-386), const ETHERTYPE_ES ideal-int pkg syscall (openbsd-386), const ETHERTYPE_EXCELAN ideal-int pkg syscall (openbsd-386), const ETHERTYPE_EXPERDATA ideal-int pkg syscall (openbsd-386), const ETHERTYPE_FLIP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_FLOWCONTROL ideal-int pkg syscall (openbsd-386), const ETHERTYPE_FRARP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_GENDYN ideal-int pkg syscall (openbsd-386), const ETHERTYPE_HAYES ideal-int pkg syscall (openbsd-386), const ETHERTYPE_HIPPI_FP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_HITACHI ideal-int pkg syscall (openbsd-386), const ETHERTYPE_HP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_IEEEPUP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_IEEEPUPAT ideal-int pkg syscall (openbsd-386), const ETHERTYPE_IMLBL ideal-int pkg syscall (openbsd-386), const ETHERTYPE_IMLBLDIAG ideal-int pkg syscall (openbsd-386), const ETHERTYPE_IP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_IPAS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_IPV6 ideal-int pkg syscall (openbsd-386), const ETHERTYPE_IPX ideal-int pkg syscall (openbsd-386), const ETHERTYPE_IPXNEW ideal-int pkg syscall (openbsd-386), const ETHERTYPE_KALPANA ideal-int pkg syscall (openbsd-386), const ETHERTYPE_LANBRIDGE ideal-int pkg syscall (openbsd-386), const ETHERTYPE_LANPROBE ideal-int pkg syscall (openbsd-386), const ETHERTYPE_LAT ideal-int pkg syscall (openbsd-386), const ETHERTYPE_LBACK ideal-int pkg syscall (openbsd-386), const ETHERTYPE_LITTLE ideal-int pkg syscall (openbsd-386), const ETHERTYPE_LLDP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_LOGICRAFT ideal-int pkg syscall (openbsd-386), const ETHERTYPE_LOOPBACK ideal-int pkg syscall (openbsd-386), const ETHERTYPE_MATRA ideal-int pkg syscall (openbsd-386), const ETHERTYPE_MAX ideal-int pkg syscall (openbsd-386), const ETHERTYPE_MERIT ideal-int pkg syscall (openbsd-386), const ETHERTYPE_MICP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_MOPDL ideal-int pkg syscall (openbsd-386), const ETHERTYPE_MOPRC ideal-int pkg syscall (openbsd-386), const ETHERTYPE_MOTOROLA ideal-int pkg syscall (openbsd-386), const ETHERTYPE_MPLS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_MPLS_MCAST ideal-int pkg syscall (openbsd-386), const ETHERTYPE_MUMPS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBPCC ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBPCLAIM ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBPCLREQ ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBPCLRSP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBPCREQ ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBPCRSP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBPDG ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBPDGB ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBPDLTE ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBPRAR ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBPRAS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBPRST ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBPSCD ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBPVCD ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NBS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NCD ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NESTAR ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NETBEUI ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NOVELL ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NSAT ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NSCOMPAT ideal-int pkg syscall (openbsd-386), const ETHERTYPE_NTRAILER ideal-int pkg syscall (openbsd-386), const ETHERTYPE_OS9 ideal-int pkg syscall (openbsd-386), const ETHERTYPE_OS9NET ideal-int pkg syscall (openbsd-386), const ETHERTYPE_PACER ideal-int pkg syscall (openbsd-386), const ETHERTYPE_PAE ideal-int pkg syscall (openbsd-386), const ETHERTYPE_PCS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_PLANNING ideal-int pkg syscall (openbsd-386), const ETHERTYPE_PPP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_PPPOE ideal-int pkg syscall (openbsd-386), const ETHERTYPE_PPPOEDISC ideal-int pkg syscall (openbsd-386), const ETHERTYPE_PRIMENTS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_PUP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_PUPAT ideal-int pkg syscall (openbsd-386), const ETHERTYPE_QINQ ideal-int pkg syscall (openbsd-386), const ETHERTYPE_RACAL ideal-int pkg syscall (openbsd-386), const ETHERTYPE_RATIONAL ideal-int pkg syscall (openbsd-386), const ETHERTYPE_RAWFR ideal-int pkg syscall (openbsd-386), const ETHERTYPE_RCL ideal-int pkg syscall (openbsd-386), const ETHERTYPE_RDP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_RETIX ideal-int pkg syscall (openbsd-386), const ETHERTYPE_REVARP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SCA ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SECTRA ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SECUREDATA ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SGITW ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SG_BOUNCE ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SG_DIAG ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SG_NETGAMES ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SG_RESV ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SIMNET ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SLOW ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SNA ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SNMP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SONIX ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SPIDER ideal-int pkg syscall (openbsd-386), const ETHERTYPE_SPRITE ideal-int pkg syscall (openbsd-386), const ETHERTYPE_STP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_TALARIS ideal-int pkg syscall (openbsd-386), const ETHERTYPE_TALARISMC ideal-int pkg syscall (openbsd-386), const ETHERTYPE_TCPCOMP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_TCPSM ideal-int pkg syscall (openbsd-386), const ETHERTYPE_TEC ideal-int pkg syscall (openbsd-386), const ETHERTYPE_TIGAN ideal-int pkg syscall (openbsd-386), const ETHERTYPE_TRAIL ideal-int pkg syscall (openbsd-386), const ETHERTYPE_TRANSETHER ideal-int pkg syscall (openbsd-386), const ETHERTYPE_TYMSHARE ideal-int pkg syscall (openbsd-386), const ETHERTYPE_UBBST ideal-int pkg syscall (openbsd-386), const ETHERTYPE_UBDEBUG ideal-int pkg syscall (openbsd-386), const ETHERTYPE_UBDIAGLOOP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_UBDL ideal-int pkg syscall (openbsd-386), const ETHERTYPE_UBNIU ideal-int pkg syscall (openbsd-386), const ETHERTYPE_UBNMC ideal-int pkg syscall (openbsd-386), const ETHERTYPE_VALID ideal-int pkg syscall (openbsd-386), const ETHERTYPE_VARIAN ideal-int pkg syscall (openbsd-386), const ETHERTYPE_VAXELN ideal-int pkg syscall (openbsd-386), const ETHERTYPE_VEECO ideal-int pkg syscall (openbsd-386), const ETHERTYPE_VEXP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_VGLAB ideal-int pkg syscall (openbsd-386), const ETHERTYPE_VINES ideal-int pkg syscall (openbsd-386), const ETHERTYPE_VINESECHO ideal-int pkg syscall (openbsd-386), const ETHERTYPE_VINESLOOP ideal-int pkg syscall (openbsd-386), const ETHERTYPE_VITAL ideal-int pkg syscall (openbsd-386), const ETHERTYPE_VLAN ideal-int pkg syscall (openbsd-386), const ETHERTYPE_VLTLMAN ideal-int pkg syscall (openbsd-386), const ETHERTYPE_VPROD ideal-int pkg syscall (openbsd-386), const ETHERTYPE_VURESERVED ideal-int pkg syscall (openbsd-386), const ETHERTYPE_WATERLOO ideal-int pkg syscall (openbsd-386), const ETHERTYPE_WELLFLEET ideal-int pkg syscall (openbsd-386), const ETHERTYPE_X25 ideal-int pkg syscall (openbsd-386), const ETHERTYPE_X75 ideal-int pkg syscall (openbsd-386), const ETHERTYPE_XNSSM ideal-int pkg syscall (openbsd-386), const ETHERTYPE_XTP ideal-int pkg syscall (openbsd-386), const ETHER_ADDR_LEN ideal-int pkg syscall (openbsd-386), const ETHER_ALIGN ideal-int pkg syscall (openbsd-386), const ETHER_CRC_LEN ideal-int pkg syscall (openbsd-386), const ETHER_CRC_POLY_BE ideal-int pkg syscall (openbsd-386), const ETHER_CRC_POLY_LE ideal-int pkg syscall (openbsd-386), const ETHER_HDR_LEN ideal-int pkg syscall (openbsd-386), const ETHER_MAX_DIX_LEN ideal-int pkg syscall (openbsd-386), const ETHER_MAX_LEN ideal-int pkg syscall (openbsd-386), const ETHER_MIN_LEN ideal-int pkg syscall (openbsd-386), const ETHER_TYPE_LEN ideal-int pkg syscall (openbsd-386), const ETHER_VLAN_ENCAP_LEN ideal-int pkg syscall (openbsd-386), const EVFILT_AIO ideal-int pkg syscall (openbsd-386), const EVFILT_PROC ideal-int pkg syscall (openbsd-386), const EVFILT_READ ideal-int pkg syscall (openbsd-386), const EVFILT_SIGNAL ideal-int pkg syscall (openbsd-386), const EVFILT_SYSCOUNT ideal-int pkg syscall (openbsd-386), const EVFILT_TIMER ideal-int pkg syscall (openbsd-386), const EVFILT_VNODE ideal-int pkg syscall (openbsd-386), const EVFILT_WRITE ideal-int pkg syscall (openbsd-386), const EV_ADD ideal-int pkg syscall (openbsd-386), const EV_CLEAR ideal-int pkg syscall (openbsd-386), const EV_DELETE ideal-int pkg syscall (openbsd-386), const EV_DISABLE ideal-int pkg syscall (openbsd-386), const EV_ENABLE ideal-int pkg syscall (openbsd-386), const EV_EOF ideal-int pkg syscall (openbsd-386), const EV_ERROR ideal-int pkg syscall (openbsd-386), const EV_FLAG1 ideal-int pkg syscall (openbsd-386), const EV_ONESHOT ideal-int pkg syscall (openbsd-386), const EV_SYSFLAGS ideal-int pkg syscall (openbsd-386), const EXTA ideal-int pkg syscall (openbsd-386), const EXTB ideal-int pkg syscall (openbsd-386), const EXTPROC ideal-int pkg syscall (openbsd-386), const FD_CLOEXEC ideal-int pkg syscall (openbsd-386), const FD_SETSIZE ideal-int pkg syscall (openbsd-386), const FLUSHO ideal-int pkg syscall (openbsd-386), const F_DUPFD ideal-int pkg syscall (openbsd-386), const F_DUPFD_CLOEXEC ideal-int pkg syscall (openbsd-386), const F_GETFD ideal-int pkg syscall (openbsd-386), const F_GETFL ideal-int pkg syscall (openbsd-386), const F_GETLK ideal-int pkg syscall (openbsd-386), const F_GETOWN ideal-int pkg syscall (openbsd-386), const F_OK ideal-int pkg syscall (openbsd-386), const F_RDLCK ideal-int pkg syscall (openbsd-386), const F_SETFD ideal-int pkg syscall (openbsd-386), const F_SETFL ideal-int pkg syscall (openbsd-386), const F_SETLK ideal-int pkg syscall (openbsd-386), const F_SETLKW ideal-int pkg syscall (openbsd-386), const F_SETOWN ideal-int pkg syscall (openbsd-386), const F_UNLCK ideal-int pkg syscall (openbsd-386), const F_WRLCK ideal-int pkg syscall (openbsd-386), const HUPCL ideal-int pkg syscall (openbsd-386), const ICANON ideal-int pkg syscall (openbsd-386), const ICMP6_FILTER = 18 pkg syscall (openbsd-386), const ICMP6_FILTER ideal-int pkg syscall (openbsd-386), const ICRNL ideal-int pkg syscall (openbsd-386), const IEXTEN ideal-int pkg syscall (openbsd-386), const IFAN_ARRIVAL ideal-int pkg syscall (openbsd-386), const IFAN_DEPARTURE ideal-int pkg syscall (openbsd-386), const IFA_ROUTE ideal-int pkg syscall (openbsd-386), const IFF_ALLMULTI ideal-int pkg syscall (openbsd-386), const IFF_CANTCHANGE ideal-int pkg syscall (openbsd-386), const IFF_DEBUG ideal-int pkg syscall (openbsd-386), const IFF_LINK0 ideal-int pkg syscall (openbsd-386), const IFF_LINK1 ideal-int pkg syscall (openbsd-386), const IFF_LINK2 ideal-int pkg syscall (openbsd-386), const IFF_NOARP ideal-int pkg syscall (openbsd-386), const IFF_NOTRAILERS ideal-int pkg syscall (openbsd-386), const IFF_OACTIVE ideal-int pkg syscall (openbsd-386), const IFF_POINTOPOINT ideal-int pkg syscall (openbsd-386), const IFF_PROMISC ideal-int pkg syscall (openbsd-386), const IFF_RUNNING ideal-int pkg syscall (openbsd-386), const IFF_SIMPLEX ideal-int pkg syscall (openbsd-386), const IFNAMSIZ ideal-int pkg syscall (openbsd-386), const IFT_1822 ideal-int pkg syscall (openbsd-386), const IFT_A12MPPSWITCH ideal-int pkg syscall (openbsd-386), const IFT_AAL2 ideal-int pkg syscall (openbsd-386), const IFT_AAL5 ideal-int pkg syscall (openbsd-386), const IFT_ADSL ideal-int pkg syscall (openbsd-386), const IFT_AFLANE8023 ideal-int pkg syscall (openbsd-386), const IFT_AFLANE8025 ideal-int pkg syscall (openbsd-386), const IFT_ARAP ideal-int pkg syscall (openbsd-386), const IFT_ARCNET ideal-int pkg syscall (openbsd-386), const IFT_ARCNETPLUS ideal-int pkg syscall (openbsd-386), const IFT_ASYNC ideal-int pkg syscall (openbsd-386), const IFT_ATM ideal-int pkg syscall (openbsd-386), const IFT_ATMDXI ideal-int pkg syscall (openbsd-386), const IFT_ATMFUNI ideal-int pkg syscall (openbsd-386), const IFT_ATMIMA ideal-int pkg syscall (openbsd-386), const IFT_ATMLOGICAL ideal-int pkg syscall (openbsd-386), const IFT_ATMRADIO ideal-int pkg syscall (openbsd-386), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (openbsd-386), const IFT_ATMVCIENDPT ideal-int pkg syscall (openbsd-386), const IFT_ATMVIRTUAL ideal-int pkg syscall (openbsd-386), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (openbsd-386), const IFT_BLUETOOTH ideal-int pkg syscall (openbsd-386), const IFT_BRIDGE ideal-int pkg syscall (openbsd-386), const IFT_BSC ideal-int pkg syscall (openbsd-386), const IFT_CARP ideal-int pkg syscall (openbsd-386), const IFT_CCTEMUL ideal-int pkg syscall (openbsd-386), const IFT_CEPT ideal-int pkg syscall (openbsd-386), const IFT_CES ideal-int pkg syscall (openbsd-386), const IFT_CHANNEL ideal-int pkg syscall (openbsd-386), const IFT_CNR ideal-int pkg syscall (openbsd-386), const IFT_COFFEE ideal-int pkg syscall (openbsd-386), const IFT_COMPOSITELINK ideal-int pkg syscall (openbsd-386), const IFT_DCN ideal-int pkg syscall (openbsd-386), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (openbsd-386), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (openbsd-386), const IFT_DLSW ideal-int pkg syscall (openbsd-386), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (openbsd-386), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (openbsd-386), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (openbsd-386), const IFT_DOCSCABLEUPSTREAMCHANNEL ideal-int pkg syscall (openbsd-386), const IFT_DS0 ideal-int pkg syscall (openbsd-386), const IFT_DS0BUNDLE ideal-int pkg syscall (openbsd-386), const IFT_DS1FDL ideal-int pkg syscall (openbsd-386), const IFT_DS3 ideal-int pkg syscall (openbsd-386), const IFT_DTM ideal-int pkg syscall (openbsd-386), const IFT_DUMMY ideal-int pkg syscall (openbsd-386), const IFT_DVBASILN ideal-int pkg syscall (openbsd-386), const IFT_DVBASIOUT ideal-int pkg syscall (openbsd-386), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (openbsd-386), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (openbsd-386), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (openbsd-386), const IFT_ECONET ideal-int pkg syscall (openbsd-386), const IFT_ENC ideal-int pkg syscall (openbsd-386), const IFT_EON ideal-int pkg syscall (openbsd-386), const IFT_EPLRS ideal-int pkg syscall (openbsd-386), const IFT_ESCON ideal-int pkg syscall (openbsd-386), const IFT_ETHER ideal-int pkg syscall (openbsd-386), const IFT_FAITH ideal-int pkg syscall (openbsd-386), const IFT_FAST ideal-int pkg syscall (openbsd-386), const IFT_FASTETHER ideal-int pkg syscall (openbsd-386), const IFT_FASTETHERFX ideal-int pkg syscall (openbsd-386), const IFT_FDDI ideal-int pkg syscall (openbsd-386), const IFT_FIBRECHANNEL ideal-int pkg syscall (openbsd-386), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (openbsd-386), const IFT_FRAMERELAYMPI ideal-int pkg syscall (openbsd-386), const IFT_FRDLCIENDPT ideal-int pkg syscall (openbsd-386), const IFT_FRELAY ideal-int pkg syscall (openbsd-386), const IFT_FRELAYDCE ideal-int pkg syscall (openbsd-386), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (openbsd-386), const IFT_FRFORWARD ideal-int pkg syscall (openbsd-386), const IFT_G703AT2MB ideal-int pkg syscall (openbsd-386), const IFT_G703AT64K ideal-int pkg syscall (openbsd-386), const IFT_GIF ideal-int pkg syscall (openbsd-386), const IFT_GIGABITETHERNET ideal-int pkg syscall (openbsd-386), const IFT_GR303IDT ideal-int pkg syscall (openbsd-386), const IFT_GR303RDT ideal-int pkg syscall (openbsd-386), const IFT_H323GATEKEEPER ideal-int pkg syscall (openbsd-386), const IFT_H323PROXY ideal-int pkg syscall (openbsd-386), const IFT_HDH1822 ideal-int pkg syscall (openbsd-386), const IFT_HDLC ideal-int pkg syscall (openbsd-386), const IFT_HDSL2 ideal-int pkg syscall (openbsd-386), const IFT_HIPERLAN2 ideal-int pkg syscall (openbsd-386), const IFT_HIPPI ideal-int pkg syscall (openbsd-386), const IFT_HIPPIINTERFACE ideal-int pkg syscall (openbsd-386), const IFT_HOSTPAD ideal-int pkg syscall (openbsd-386), const IFT_HSSI ideal-int pkg syscall (openbsd-386), const IFT_HY ideal-int pkg syscall (openbsd-386), const IFT_IBM370PARCHAN ideal-int pkg syscall (openbsd-386), const IFT_IDSL ideal-int pkg syscall (openbsd-386), const IFT_IEEE1394 ideal-int pkg syscall (openbsd-386), const IFT_IEEE80211 ideal-int pkg syscall (openbsd-386), const IFT_IEEE80212 ideal-int pkg syscall (openbsd-386), const IFT_IEEE8023ADLAG ideal-int pkg syscall (openbsd-386), const IFT_IFGSN ideal-int pkg syscall (openbsd-386), const IFT_IMT ideal-int pkg syscall (openbsd-386), const IFT_INFINIBAND ideal-int pkg syscall (openbsd-386), const IFT_INTERLEAVE ideal-int pkg syscall (openbsd-386), const IFT_IP ideal-int pkg syscall (openbsd-386), const IFT_IPFORWARD ideal-int pkg syscall (openbsd-386), const IFT_IPOVERATM ideal-int pkg syscall (openbsd-386), const IFT_IPOVERCDLC ideal-int pkg syscall (openbsd-386), const IFT_IPOVERCLAW ideal-int pkg syscall (openbsd-386), const IFT_IPSWITCH ideal-int pkg syscall (openbsd-386), const IFT_ISDN ideal-int pkg syscall (openbsd-386), const IFT_ISDNBASIC ideal-int pkg syscall (openbsd-386), const IFT_ISDNPRIMARY ideal-int pkg syscall (openbsd-386), const IFT_ISDNS ideal-int pkg syscall (openbsd-386), const IFT_ISDNU ideal-int pkg syscall (openbsd-386), const IFT_ISO88022LLC ideal-int pkg syscall (openbsd-386), const IFT_ISO88023 ideal-int pkg syscall (openbsd-386), const IFT_ISO88024 ideal-int pkg syscall (openbsd-386), const IFT_ISO88025 ideal-int pkg syscall (openbsd-386), const IFT_ISO88025CRFPINT ideal-int pkg syscall (openbsd-386), const IFT_ISO88025DTR ideal-int pkg syscall (openbsd-386), const IFT_ISO88025FIBER ideal-int pkg syscall (openbsd-386), const IFT_ISO88026 ideal-int pkg syscall (openbsd-386), const IFT_ISUP ideal-int pkg syscall (openbsd-386), const IFT_L2VLAN ideal-int pkg syscall (openbsd-386), const IFT_L3IPVLAN ideal-int pkg syscall (openbsd-386), const IFT_L3IPXVLAN ideal-int pkg syscall (openbsd-386), const IFT_LAPB ideal-int pkg syscall (openbsd-386), const IFT_LAPD ideal-int pkg syscall (openbsd-386), const IFT_LAPF ideal-int pkg syscall (openbsd-386), const IFT_LINEGROUP ideal-int pkg syscall (openbsd-386), const IFT_LOCALTALK ideal-int pkg syscall (openbsd-386), const IFT_LOOP ideal-int pkg syscall (openbsd-386), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (openbsd-386), const IFT_MFSIGLINK ideal-int pkg syscall (openbsd-386), const IFT_MIOX25 ideal-int pkg syscall (openbsd-386), const IFT_MODEM ideal-int pkg syscall (openbsd-386), const IFT_MPC ideal-int pkg syscall (openbsd-386), const IFT_MPLS ideal-int pkg syscall (openbsd-386), const IFT_MPLSTUNNEL ideal-int pkg syscall (openbsd-386), const IFT_MSDSL ideal-int pkg syscall (openbsd-386), const IFT_MVL ideal-int pkg syscall (openbsd-386), const IFT_MYRINET ideal-int pkg syscall (openbsd-386), const IFT_NFAS ideal-int pkg syscall (openbsd-386), const IFT_NSIP ideal-int pkg syscall (openbsd-386), const IFT_OPTICALCHANNEL ideal-int pkg syscall (openbsd-386), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (openbsd-386), const IFT_OTHER ideal-int pkg syscall (openbsd-386), const IFT_P10 ideal-int pkg syscall (openbsd-386), const IFT_P80 ideal-int pkg syscall (openbsd-386), const IFT_PARA ideal-int pkg syscall (openbsd-386), const IFT_PFLOG ideal-int pkg syscall (openbsd-386), const IFT_PFLOW ideal-int pkg syscall (openbsd-386), const IFT_PFSYNC ideal-int pkg syscall (openbsd-386), const IFT_PLC ideal-int pkg syscall (openbsd-386), const IFT_PON155 ideal-int pkg syscall (openbsd-386), const IFT_PON622 ideal-int pkg syscall (openbsd-386), const IFT_POS ideal-int pkg syscall (openbsd-386), const IFT_PPP ideal-int pkg syscall (openbsd-386), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (openbsd-386), const IFT_PROPATM ideal-int pkg syscall (openbsd-386), const IFT_PROPBWAP2MP ideal-int pkg syscall (openbsd-386), const IFT_PROPCNLS ideal-int pkg syscall (openbsd-386), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (openbsd-386), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (openbsd-386), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (openbsd-386), const IFT_PROPMUX ideal-int pkg syscall (openbsd-386), const IFT_PROPVIRTUAL ideal-int pkg syscall (openbsd-386), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (openbsd-386), const IFT_PTPSERIAL ideal-int pkg syscall (openbsd-386), const IFT_PVC ideal-int pkg syscall (openbsd-386), const IFT_Q2931 ideal-int pkg syscall (openbsd-386), const IFT_QLLC ideal-int pkg syscall (openbsd-386), const IFT_RADIOMAC ideal-int pkg syscall (openbsd-386), const IFT_RADSL ideal-int pkg syscall (openbsd-386), const IFT_REACHDSL ideal-int pkg syscall (openbsd-386), const IFT_RFC1483 ideal-int pkg syscall (openbsd-386), const IFT_RS232 ideal-int pkg syscall (openbsd-386), const IFT_RSRB ideal-int pkg syscall (openbsd-386), const IFT_SDLC ideal-int pkg syscall (openbsd-386), const IFT_SDSL ideal-int pkg syscall (openbsd-386), const IFT_SHDSL ideal-int pkg syscall (openbsd-386), const IFT_SIP ideal-int pkg syscall (openbsd-386), const IFT_SIPSIG ideal-int pkg syscall (openbsd-386), const IFT_SIPTG ideal-int pkg syscall (openbsd-386), const IFT_SLIP ideal-int pkg syscall (openbsd-386), const IFT_SMDSDXI ideal-int pkg syscall (openbsd-386), const IFT_SMDSICIP ideal-int pkg syscall (openbsd-386), const IFT_SONET ideal-int pkg syscall (openbsd-386), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (openbsd-386), const IFT_SONETPATH ideal-int pkg syscall (openbsd-386), const IFT_SONETVT ideal-int pkg syscall (openbsd-386), const IFT_SRP ideal-int pkg syscall (openbsd-386), const IFT_SS7SIGLINK ideal-int pkg syscall (openbsd-386), const IFT_STACKTOSTACK ideal-int pkg syscall (openbsd-386), const IFT_STARLAN ideal-int pkg syscall (openbsd-386), const IFT_T1 ideal-int pkg syscall (openbsd-386), const IFT_TDLC ideal-int pkg syscall (openbsd-386), const IFT_TELINK ideal-int pkg syscall (openbsd-386), const IFT_TERMPAD ideal-int pkg syscall (openbsd-386), const IFT_TR008 ideal-int pkg syscall (openbsd-386), const IFT_TRANSPHDLC ideal-int pkg syscall (openbsd-386), const IFT_TUNNEL ideal-int pkg syscall (openbsd-386), const IFT_ULTRA ideal-int pkg syscall (openbsd-386), const IFT_USB ideal-int pkg syscall (openbsd-386), const IFT_V11 ideal-int pkg syscall (openbsd-386), const IFT_V35 ideal-int pkg syscall (openbsd-386), const IFT_V36 ideal-int pkg syscall (openbsd-386), const IFT_V37 ideal-int pkg syscall (openbsd-386), const IFT_VDSL ideal-int pkg syscall (openbsd-386), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (openbsd-386), const IFT_VIRTUALTG ideal-int pkg syscall (openbsd-386), const IFT_VOICEDID ideal-int pkg syscall (openbsd-386), const IFT_VOICEEM ideal-int pkg syscall (openbsd-386), const IFT_VOICEEMFGD ideal-int pkg syscall (openbsd-386), const IFT_VOICEENCAP ideal-int pkg syscall (openbsd-386), const IFT_VOICEFGDEANA ideal-int pkg syscall (openbsd-386), const IFT_VOICEFXO ideal-int pkg syscall (openbsd-386), const IFT_VOICEFXS ideal-int pkg syscall (openbsd-386), const IFT_VOICEOVERATM ideal-int pkg syscall (openbsd-386), const IFT_VOICEOVERCABLE ideal-int pkg syscall (openbsd-386), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (openbsd-386), const IFT_VOICEOVERIP ideal-int pkg syscall (openbsd-386), const IFT_X213 ideal-int pkg syscall (openbsd-386), const IFT_X25 ideal-int pkg syscall (openbsd-386), const IFT_X25DDN ideal-int pkg syscall (openbsd-386), const IFT_X25HUNTGROUP ideal-int pkg syscall (openbsd-386), const IFT_X25MLP ideal-int pkg syscall (openbsd-386), const IFT_X25PLE ideal-int pkg syscall (openbsd-386), const IFT_XETHER ideal-int pkg syscall (openbsd-386), const IGNBRK ideal-int pkg syscall (openbsd-386), const IGNCR ideal-int pkg syscall (openbsd-386), const IGNPAR ideal-int pkg syscall (openbsd-386), const IMAXBEL ideal-int pkg syscall (openbsd-386), const INLCR ideal-int pkg syscall (openbsd-386), const INPCK ideal-int pkg syscall (openbsd-386), const IN_CLASSA_HOST ideal-int pkg syscall (openbsd-386), const IN_CLASSA_MAX ideal-int pkg syscall (openbsd-386), const IN_CLASSA_NET ideal-int pkg syscall (openbsd-386), const IN_CLASSA_NSHIFT ideal-int pkg syscall (openbsd-386), const IN_CLASSB_HOST ideal-int pkg syscall (openbsd-386), const IN_CLASSB_MAX ideal-int pkg syscall (openbsd-386), const IN_CLASSB_NET ideal-int pkg syscall (openbsd-386), const IN_CLASSB_NSHIFT ideal-int pkg syscall (openbsd-386), const IN_CLASSC_HOST ideal-int pkg syscall (openbsd-386), const IN_CLASSC_NET ideal-int pkg syscall (openbsd-386), const IN_CLASSC_NSHIFT ideal-int pkg syscall (openbsd-386), const IN_CLASSD_HOST ideal-int pkg syscall (openbsd-386), const IN_CLASSD_NET ideal-int pkg syscall (openbsd-386), const IN_CLASSD_NSHIFT ideal-int pkg syscall (openbsd-386), const IN_LOOPBACKNET ideal-int pkg syscall (openbsd-386), const IN_RFC3021_HOST ideal-int pkg syscall (openbsd-386), const IN_RFC3021_NET ideal-int pkg syscall (openbsd-386), const IN_RFC3021_NSHIFT ideal-int pkg syscall (openbsd-386), const IPPROTO_AH ideal-int pkg syscall (openbsd-386), const IPPROTO_CARP ideal-int pkg syscall (openbsd-386), const IPPROTO_DIVERT ideal-int pkg syscall (openbsd-386), const IPPROTO_DONE ideal-int pkg syscall (openbsd-386), const IPPROTO_DSTOPTS ideal-int pkg syscall (openbsd-386), const IPPROTO_EGP ideal-int pkg syscall (openbsd-386), const IPPROTO_ENCAP ideal-int pkg syscall (openbsd-386), const IPPROTO_EON ideal-int pkg syscall (openbsd-386), const IPPROTO_ESP ideal-int pkg syscall (openbsd-386), const IPPROTO_ETHERIP ideal-int pkg syscall (openbsd-386), const IPPROTO_FRAGMENT ideal-int pkg syscall (openbsd-386), const IPPROTO_GGP ideal-int pkg syscall (openbsd-386), const IPPROTO_GRE ideal-int pkg syscall (openbsd-386), const IPPROTO_HOPOPTS ideal-int pkg syscall (openbsd-386), const IPPROTO_ICMP ideal-int pkg syscall (openbsd-386), const IPPROTO_ICMPV6 ideal-int pkg syscall (openbsd-386), const IPPROTO_IDP ideal-int pkg syscall (openbsd-386), const IPPROTO_IGMP ideal-int pkg syscall (openbsd-386), const IPPROTO_IPCOMP ideal-int pkg syscall (openbsd-386), const IPPROTO_IPIP ideal-int pkg syscall (openbsd-386), const IPPROTO_IPV4 ideal-int pkg syscall (openbsd-386), const IPPROTO_MAX ideal-int pkg syscall (openbsd-386), const IPPROTO_MAXID ideal-int pkg syscall (openbsd-386), const IPPROTO_MOBILE ideal-int pkg syscall (openbsd-386), const IPPROTO_MPLS ideal-int pkg syscall (openbsd-386), const IPPROTO_NONE ideal-int pkg syscall (openbsd-386), const IPPROTO_PFSYNC ideal-int pkg syscall (openbsd-386), const IPPROTO_PIM ideal-int pkg syscall (openbsd-386), const IPPROTO_PUP ideal-int pkg syscall (openbsd-386), const IPPROTO_RAW ideal-int pkg syscall (openbsd-386), const IPPROTO_ROUTING ideal-int pkg syscall (openbsd-386), const IPPROTO_RSVP ideal-int pkg syscall (openbsd-386), const IPPROTO_TP ideal-int pkg syscall (openbsd-386), const IPV6_AUTH_LEVEL ideal-int pkg syscall (openbsd-386), const IPV6_AUTOFLOWLABEL ideal-int pkg syscall (openbsd-386), const IPV6_CHECKSUM ideal-int pkg syscall (openbsd-386), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (openbsd-386), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (openbsd-386), const IPV6_DEFHLIM ideal-int pkg syscall (openbsd-386), const IPV6_DONTFRAG ideal-int pkg syscall (openbsd-386), const IPV6_DSTOPTS ideal-int pkg syscall (openbsd-386), const IPV6_ESP_NETWORK_LEVEL ideal-int pkg syscall (openbsd-386), const IPV6_ESP_TRANS_LEVEL ideal-int pkg syscall (openbsd-386), const IPV6_FAITH ideal-int pkg syscall (openbsd-386), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (openbsd-386), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (openbsd-386), const IPV6_FRAGTTL ideal-int pkg syscall (openbsd-386), const IPV6_HLIMDEC ideal-int pkg syscall (openbsd-386), const IPV6_HOPLIMIT ideal-int pkg syscall (openbsd-386), const IPV6_HOPOPTS ideal-int pkg syscall (openbsd-386), const IPV6_IPCOMP_LEVEL ideal-int pkg syscall (openbsd-386), const IPV6_MAXHLIM ideal-int pkg syscall (openbsd-386), const IPV6_MAXPACKET ideal-int pkg syscall (openbsd-386), const IPV6_MMTU ideal-int pkg syscall (openbsd-386), const IPV6_NEXTHOP ideal-int pkg syscall (openbsd-386), const IPV6_OPTIONS ideal-int pkg syscall (openbsd-386), const IPV6_PATHMTU ideal-int pkg syscall (openbsd-386), const IPV6_PIPEX ideal-int pkg syscall (openbsd-386), const IPV6_PKTINFO ideal-int pkg syscall (openbsd-386), const IPV6_PORTRANGE ideal-int pkg syscall (openbsd-386), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (openbsd-386), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (openbsd-386), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (openbsd-386), const IPV6_RECVDSTOPTS ideal-int pkg syscall (openbsd-386), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (openbsd-386), const IPV6_RECVHOPOPTS ideal-int pkg syscall (openbsd-386), const IPV6_RECVPATHMTU ideal-int pkg syscall (openbsd-386), const IPV6_RECVPKTINFO ideal-int pkg syscall (openbsd-386), const IPV6_RECVRTHDR ideal-int pkg syscall (openbsd-386), const IPV6_RECVTCLASS ideal-int pkg syscall (openbsd-386), const IPV6_RTABLE ideal-int pkg syscall (openbsd-386), const IPV6_RTHDR ideal-int pkg syscall (openbsd-386), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (openbsd-386), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (openbsd-386), const IPV6_RTHDR_STRICT ideal-int pkg syscall (openbsd-386), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (openbsd-386), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (openbsd-386), const IPV6_TCLASS ideal-int pkg syscall (openbsd-386), const IPV6_USE_MIN_MTU ideal-int pkg syscall (openbsd-386), const IPV6_VERSION ideal-int pkg syscall (openbsd-386), const IPV6_VERSION_MASK ideal-int pkg syscall (openbsd-386), const IP_AUTH_LEVEL ideal-int pkg syscall (openbsd-386), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (openbsd-386), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (openbsd-386), const IP_DF ideal-int pkg syscall (openbsd-386), const IP_ESP_NETWORK_LEVEL ideal-int pkg syscall (openbsd-386), const IP_ESP_TRANS_LEVEL ideal-int pkg syscall (openbsd-386), const IP_HDRINCL ideal-int pkg syscall (openbsd-386), const IP_IPCOMP_LEVEL ideal-int pkg syscall (openbsd-386), const IP_IPSECFLOWINFO ideal-int pkg syscall (openbsd-386), const IP_IPSEC_LOCAL_AUTH ideal-int pkg syscall (openbsd-386), const IP_IPSEC_LOCAL_CRED ideal-int pkg syscall (openbsd-386), const IP_IPSEC_LOCAL_ID ideal-int pkg syscall (openbsd-386), const IP_IPSEC_REMOTE_AUTH ideal-int pkg syscall (openbsd-386), const IP_IPSEC_REMOTE_CRED ideal-int pkg syscall (openbsd-386), const IP_IPSEC_REMOTE_ID ideal-int pkg syscall (openbsd-386), const IP_MAXPACKET ideal-int pkg syscall (openbsd-386), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (openbsd-386), const IP_MF ideal-int pkg syscall (openbsd-386), const IP_MINTTL ideal-int pkg syscall (openbsd-386), const IP_MIN_MEMBERSHIPS ideal-int pkg syscall (openbsd-386), const IP_MSS ideal-int pkg syscall (openbsd-386), const IP_OFFMASK ideal-int pkg syscall (openbsd-386), const IP_OPTIONS ideal-int pkg syscall (openbsd-386), const IP_PIPEX ideal-int pkg syscall (openbsd-386), const IP_PORTRANGE ideal-int pkg syscall (openbsd-386), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (openbsd-386), const IP_PORTRANGE_HIGH ideal-int pkg syscall (openbsd-386), const IP_PORTRANGE_LOW ideal-int pkg syscall (openbsd-386), const IP_RECVDSTADDR ideal-int pkg syscall (openbsd-386), const IP_RECVDSTPORT ideal-int pkg syscall (openbsd-386), const IP_RECVIF ideal-int pkg syscall (openbsd-386), const IP_RECVOPTS ideal-int pkg syscall (openbsd-386), const IP_RECVRETOPTS ideal-int pkg syscall (openbsd-386), const IP_RECVRTABLE ideal-int pkg syscall (openbsd-386), const IP_RECVTTL ideal-int pkg syscall (openbsd-386), const IP_RETOPTS ideal-int pkg syscall (openbsd-386), const IP_RF ideal-int pkg syscall (openbsd-386), const IP_RTABLE ideal-int pkg syscall (openbsd-386), const ISIG ideal-int pkg syscall (openbsd-386), const ISTRIP ideal-int pkg syscall (openbsd-386), const IXANY ideal-int pkg syscall (openbsd-386), const IXOFF ideal-int pkg syscall (openbsd-386), const IXON ideal-int pkg syscall (openbsd-386), const LCNT_OVERLOAD_FLUSH ideal-int pkg syscall (openbsd-386), const LOCK_EX ideal-int pkg syscall (openbsd-386), const LOCK_NB ideal-int pkg syscall (openbsd-386), const LOCK_SH ideal-int pkg syscall (openbsd-386), const LOCK_UN ideal-int pkg syscall (openbsd-386), const MSG_BCAST ideal-int pkg syscall (openbsd-386), const MSG_CTRUNC ideal-int pkg syscall (openbsd-386), const MSG_DONTROUTE ideal-int pkg syscall (openbsd-386), const MSG_DONTWAIT ideal-int pkg syscall (openbsd-386), const MSG_EOR ideal-int pkg syscall (openbsd-386), const MSG_MCAST ideal-int pkg syscall (openbsd-386), const MSG_NOSIGNAL ideal-int pkg syscall (openbsd-386), const MSG_OOB ideal-int pkg syscall (openbsd-386), const MSG_PEEK ideal-int pkg syscall (openbsd-386), const MSG_TRUNC ideal-int pkg syscall (openbsd-386), const MSG_WAITALL ideal-int pkg syscall (openbsd-386), const NAME_MAX ideal-int pkg syscall (openbsd-386), const NET_RT_DUMP ideal-int pkg syscall (openbsd-386), const NET_RT_FLAGS ideal-int pkg syscall (openbsd-386), const NET_RT_IFLIST ideal-int pkg syscall (openbsd-386), const NET_RT_MAXID ideal-int pkg syscall (openbsd-386), const NET_RT_STATS ideal-int pkg syscall (openbsd-386), const NET_RT_TABLE ideal-int pkg syscall (openbsd-386), const NOFLSH ideal-int pkg syscall (openbsd-386), const NOTE_ATTRIB ideal-int pkg syscall (openbsd-386), const NOTE_CHILD ideal-int pkg syscall (openbsd-386), const NOTE_DELETE ideal-int pkg syscall (openbsd-386), const NOTE_EOF ideal-int pkg syscall (openbsd-386), const NOTE_EXEC ideal-int pkg syscall (openbsd-386), const NOTE_EXIT ideal-int pkg syscall (openbsd-386), const NOTE_EXTEND ideal-int pkg syscall (openbsd-386), const NOTE_FORK ideal-int pkg syscall (openbsd-386), const NOTE_LINK ideal-int pkg syscall (openbsd-386), const NOTE_LOWAT ideal-int pkg syscall (openbsd-386), const NOTE_PCTRLMASK ideal-int pkg syscall (openbsd-386), const NOTE_PDATAMASK ideal-int pkg syscall (openbsd-386), const NOTE_RENAME ideal-int pkg syscall (openbsd-386), const NOTE_REVOKE ideal-int pkg syscall (openbsd-386), const NOTE_TRACK ideal-int pkg syscall (openbsd-386), const NOTE_TRACKERR ideal-int pkg syscall (openbsd-386), const NOTE_TRUNCATE ideal-int pkg syscall (openbsd-386), const NOTE_WRITE ideal-int pkg syscall (openbsd-386), const OCRNL ideal-int pkg syscall (openbsd-386), const ONLCR ideal-int pkg syscall (openbsd-386), const ONLRET ideal-int pkg syscall (openbsd-386), const ONOCR ideal-int pkg syscall (openbsd-386), const ONOEOT ideal-int pkg syscall (openbsd-386), const OPOST ideal-int pkg syscall (openbsd-386), const O_ACCMODE ideal-int pkg syscall (openbsd-386), const O_DIRECTORY ideal-int pkg syscall (openbsd-386), const O_DSYNC ideal-int pkg syscall (openbsd-386), const O_EXLOCK ideal-int pkg syscall (openbsd-386), const O_FSYNC ideal-int pkg syscall (openbsd-386), const O_NDELAY ideal-int pkg syscall (openbsd-386), const O_NOFOLLOW ideal-int pkg syscall (openbsd-386), const O_RSYNC ideal-int pkg syscall (openbsd-386), const O_SHLOCK ideal-int pkg syscall (openbsd-386), const PARENB ideal-int pkg syscall (openbsd-386), const PARMRK ideal-int pkg syscall (openbsd-386), const PARODD ideal-int pkg syscall (openbsd-386), const PENDIN ideal-int pkg syscall (openbsd-386), const PF_FLUSH ideal-int pkg syscall (openbsd-386), const PRIO_PGRP = 1 pkg syscall (openbsd-386), const PRIO_PGRP ideal-int pkg syscall (openbsd-386), const PRIO_PROCESS = 0 pkg syscall (openbsd-386), const PRIO_PROCESS ideal-int pkg syscall (openbsd-386), const PRIO_USER = 2 pkg syscall (openbsd-386), const PRIO_USER ideal-int pkg syscall (openbsd-386), const PTRACE_CONT ideal-int pkg syscall (openbsd-386), const PTRACE_KILL ideal-int pkg syscall (openbsd-386), const PTRACE_TRACEME ideal-int pkg syscall (openbsd-386), const PT_MASK ideal-int pkg syscall (openbsd-386), const RLIMIT_CORE ideal-int pkg syscall (openbsd-386), const RLIMIT_CPU ideal-int pkg syscall (openbsd-386), const RLIMIT_DATA ideal-int pkg syscall (openbsd-386), const RLIMIT_FSIZE ideal-int pkg syscall (openbsd-386), const RLIMIT_NOFILE ideal-int pkg syscall (openbsd-386), const RLIMIT_STACK ideal-int pkg syscall (openbsd-386), const RLIM_INFINITY ideal-int pkg syscall (openbsd-386), const RTAX_AUTHOR ideal-int pkg syscall (openbsd-386), const RTAX_BRD ideal-int pkg syscall (openbsd-386), const RTAX_DST ideal-int pkg syscall (openbsd-386), const RTAX_GATEWAY ideal-int pkg syscall (openbsd-386), const RTAX_GENMASK ideal-int pkg syscall (openbsd-386), const RTAX_IFA ideal-int pkg syscall (openbsd-386), const RTAX_IFP ideal-int pkg syscall (openbsd-386), const RTAX_LABEL ideal-int pkg syscall (openbsd-386), const RTAX_MAX ideal-int pkg syscall (openbsd-386), const RTAX_NETMASK ideal-int pkg syscall (openbsd-386), const RTAX_SRC ideal-int pkg syscall (openbsd-386), const RTAX_SRCMASK ideal-int pkg syscall (openbsd-386), const RTA_AUTHOR ideal-int pkg syscall (openbsd-386), const RTA_BRD ideal-int pkg syscall (openbsd-386), const RTA_DST ideal-int pkg syscall (openbsd-386), const RTA_GATEWAY ideal-int pkg syscall (openbsd-386), const RTA_GENMASK ideal-int pkg syscall (openbsd-386), const RTA_IFA ideal-int pkg syscall (openbsd-386), const RTA_IFP ideal-int pkg syscall (openbsd-386), const RTA_LABEL ideal-int pkg syscall (openbsd-386), const RTA_NETMASK ideal-int pkg syscall (openbsd-386), const RTA_SRC ideal-int pkg syscall (openbsd-386), const RTA_SRCMASK ideal-int pkg syscall (openbsd-386), const RTF_ANNOUNCE ideal-int pkg syscall (openbsd-386), const RTF_BLACKHOLE ideal-int pkg syscall (openbsd-386), const RTF_CLONED ideal-int pkg syscall (openbsd-386), const RTF_CLONING ideal-int pkg syscall (openbsd-386), const RTF_DONE ideal-int pkg syscall (openbsd-386), const RTF_DYNAMIC ideal-int pkg syscall (openbsd-386), const RTF_FMASK ideal-int pkg syscall (openbsd-386), const RTF_GATEWAY ideal-int pkg syscall (openbsd-386), const RTF_HOST ideal-int pkg syscall (openbsd-386), const RTF_LLINFO ideal-int pkg syscall (openbsd-386), const RTF_MASK ideal-int pkg syscall (openbsd-386), const RTF_MODIFIED ideal-int pkg syscall (openbsd-386), const RTF_MPATH ideal-int pkg syscall (openbsd-386), const RTF_MPLS ideal-int pkg syscall (openbsd-386), const RTF_PERMANENT_ARP ideal-int pkg syscall (openbsd-386), const RTF_PROTO1 ideal-int pkg syscall (openbsd-386), const RTF_PROTO2 ideal-int pkg syscall (openbsd-386), const RTF_PROTO3 ideal-int pkg syscall (openbsd-386), const RTF_REJECT ideal-int pkg syscall (openbsd-386), const RTF_SOURCE ideal-int pkg syscall (openbsd-386), const RTF_STATIC ideal-int pkg syscall (openbsd-386), const RTF_TUNNEL ideal-int pkg syscall (openbsd-386), const RTF_UP ideal-int pkg syscall (openbsd-386), const RTF_USETRAILERS ideal-int pkg syscall (openbsd-386), const RTF_XRESOLVE ideal-int pkg syscall (openbsd-386), const RTM_ADD ideal-int pkg syscall (openbsd-386), const RTM_CHANGE ideal-int pkg syscall (openbsd-386), const RTM_DELADDR ideal-int pkg syscall (openbsd-386), const RTM_DELETE ideal-int pkg syscall (openbsd-386), const RTM_DESYNC ideal-int pkg syscall (openbsd-386), const RTM_GET ideal-int pkg syscall (openbsd-386), const RTM_IFANNOUNCE ideal-int pkg syscall (openbsd-386), const RTM_IFINFO ideal-int pkg syscall (openbsd-386), const RTM_LOCK ideal-int pkg syscall (openbsd-386), const RTM_LOSING ideal-int pkg syscall (openbsd-386), const RTM_MAXSIZE ideal-int pkg syscall (openbsd-386), const RTM_MISS ideal-int pkg syscall (openbsd-386), const RTM_NEWADDR ideal-int pkg syscall (openbsd-386), const RTM_REDIRECT ideal-int pkg syscall (openbsd-386), const RTM_RESOLVE ideal-int pkg syscall (openbsd-386), const RTM_RTTUNIT ideal-int pkg syscall (openbsd-386), const RTM_VERSION ideal-int pkg syscall (openbsd-386), const RTV_EXPIRE ideal-int pkg syscall (openbsd-386), const RTV_HOPCOUNT ideal-int pkg syscall (openbsd-386), const RTV_MTU ideal-int pkg syscall (openbsd-386), const RTV_RPIPE ideal-int pkg syscall (openbsd-386), const RTV_RTT ideal-int pkg syscall (openbsd-386), const RTV_RTTVAR ideal-int pkg syscall (openbsd-386), const RTV_SPIPE ideal-int pkg syscall (openbsd-386), const RTV_SSTHRESH ideal-int pkg syscall (openbsd-386), const RT_TABLEID_MAX ideal-int pkg syscall (openbsd-386), const RUSAGE_CHILDREN ideal-int pkg syscall (openbsd-386), const RUSAGE_SELF ideal-int pkg syscall (openbsd-386), const RUSAGE_THREAD ideal-int pkg syscall (openbsd-386), const SCM_RIGHTS ideal-int pkg syscall (openbsd-386), const SCM_TIMESTAMP ideal-int pkg syscall (openbsd-386), const SIGCHLD Signal pkg syscall (openbsd-386), const SIGCONT Signal pkg syscall (openbsd-386), const SIGEMT Signal pkg syscall (openbsd-386), const SIGINFO Signal pkg syscall (openbsd-386), const SIGIO Signal pkg syscall (openbsd-386), const SIGIOT Signal pkg syscall (openbsd-386), const SIGPROF Signal pkg syscall (openbsd-386), const SIGSTOP Signal pkg syscall (openbsd-386), const SIGSYS Signal pkg syscall (openbsd-386), const SIGTHR Signal pkg syscall (openbsd-386), const SIGTSTP Signal pkg syscall (openbsd-386), const SIGTTIN Signal pkg syscall (openbsd-386), const SIGTTOU Signal pkg syscall (openbsd-386), const SIGURG Signal pkg syscall (openbsd-386), const SIGUSR1 Signal pkg syscall (openbsd-386), const SIGUSR2 Signal pkg syscall (openbsd-386), const SIGVTALRM Signal pkg syscall (openbsd-386), const SIGWINCH Signal pkg syscall (openbsd-386), const SIGXCPU Signal pkg syscall (openbsd-386), const SIGXFSZ Signal pkg syscall (openbsd-386), const SIOCADDMULTI ideal-int pkg syscall (openbsd-386), const SIOCAIFADDR ideal-int pkg syscall (openbsd-386), const SIOCAIFGROUP ideal-int pkg syscall (openbsd-386), const SIOCALIFADDR ideal-int pkg syscall (openbsd-386), const SIOCATMARK ideal-int pkg syscall (openbsd-386), const SIOCBRDGADD ideal-int pkg syscall (openbsd-386), const SIOCBRDGADDS ideal-int pkg syscall (openbsd-386), const SIOCBRDGARL ideal-int pkg syscall (openbsd-386), const SIOCBRDGDADDR ideal-int pkg syscall (openbsd-386), const SIOCBRDGDEL ideal-int pkg syscall (openbsd-386), const SIOCBRDGDELS ideal-int pkg syscall (openbsd-386), const SIOCBRDGFLUSH ideal-int pkg syscall (openbsd-386), const SIOCBRDGFRL ideal-int pkg syscall (openbsd-386), const SIOCBRDGGCACHE ideal-int pkg syscall (openbsd-386), const SIOCBRDGGFD ideal-int pkg syscall (openbsd-386), const SIOCBRDGGHT ideal-int pkg syscall (openbsd-386), const SIOCBRDGGIFFLGS ideal-int pkg syscall (openbsd-386), const SIOCBRDGGMA ideal-int pkg syscall (openbsd-386), const SIOCBRDGGPARAM ideal-int pkg syscall (openbsd-386), const SIOCBRDGGPRI ideal-int pkg syscall (openbsd-386), const SIOCBRDGGRL ideal-int pkg syscall (openbsd-386), const SIOCBRDGGSIFS ideal-int pkg syscall (openbsd-386), const SIOCBRDGGTO ideal-int pkg syscall (openbsd-386), const SIOCBRDGIFS ideal-int pkg syscall (openbsd-386), const SIOCBRDGRTS ideal-int pkg syscall (openbsd-386), const SIOCBRDGSADDR ideal-int pkg syscall (openbsd-386), const SIOCBRDGSCACHE ideal-int pkg syscall (openbsd-386), const SIOCBRDGSFD ideal-int pkg syscall (openbsd-386), const SIOCBRDGSHT ideal-int pkg syscall (openbsd-386), const SIOCBRDGSIFCOST ideal-int pkg syscall (openbsd-386), const SIOCBRDGSIFFLGS ideal-int pkg syscall (openbsd-386), const SIOCBRDGSIFPRIO ideal-int pkg syscall (openbsd-386), const SIOCBRDGSMA ideal-int pkg syscall (openbsd-386), const SIOCBRDGSPRI ideal-int pkg syscall (openbsd-386), const SIOCBRDGSPROTO ideal-int pkg syscall (openbsd-386), const SIOCBRDGSTO ideal-int pkg syscall (openbsd-386), const SIOCBRDGSTXHC ideal-int pkg syscall (openbsd-386), const SIOCDELMULTI ideal-int pkg syscall (openbsd-386), const SIOCDIFADDR ideal-int pkg syscall (openbsd-386), const SIOCDIFGROUP ideal-int pkg syscall (openbsd-386), const SIOCDIFPHYADDR ideal-int pkg syscall (openbsd-386), const SIOCDLIFADDR ideal-int pkg syscall (openbsd-386), const SIOCGETKALIVE ideal-int pkg syscall (openbsd-386), const SIOCGETLABEL ideal-int pkg syscall (openbsd-386), const SIOCGETPFLOW ideal-int pkg syscall (openbsd-386), const SIOCGETPFSYNC ideal-int pkg syscall (openbsd-386), const SIOCGETSGCNT ideal-int pkg syscall (openbsd-386), const SIOCGETVIFCNT ideal-int pkg syscall (openbsd-386), const SIOCGHIWAT ideal-int pkg syscall (openbsd-386), const SIOCGIFADDR ideal-int pkg syscall (openbsd-386), const SIOCGIFASYNCMAP ideal-int pkg syscall (openbsd-386), const SIOCGIFBRDADDR ideal-int pkg syscall (openbsd-386), const SIOCGIFCONF ideal-int pkg syscall (openbsd-386), const SIOCGIFDATA ideal-int pkg syscall (openbsd-386), const SIOCGIFDESCR ideal-int pkg syscall (openbsd-386), const SIOCGIFDSTADDR ideal-int pkg syscall (openbsd-386), const SIOCGIFFLAGS ideal-int pkg syscall (openbsd-386), const SIOCGIFGATTR ideal-int pkg syscall (openbsd-386), const SIOCGIFGENERIC ideal-int pkg syscall (openbsd-386), const SIOCGIFGMEMB ideal-int pkg syscall (openbsd-386), const SIOCGIFGROUP ideal-int pkg syscall (openbsd-386), const SIOCGIFMEDIA ideal-int pkg syscall (openbsd-386), const SIOCGIFMETRIC ideal-int pkg syscall (openbsd-386), const SIOCGIFMTU ideal-int pkg syscall (openbsd-386), const SIOCGIFNETMASK ideal-int pkg syscall (openbsd-386), const SIOCGIFPDSTADDR ideal-int pkg syscall (openbsd-386), const SIOCGIFPRIORITY ideal-int pkg syscall (openbsd-386), const SIOCGIFPSRCADDR ideal-int pkg syscall (openbsd-386), const SIOCGIFRDOMAIN ideal-int pkg syscall (openbsd-386), const SIOCGIFRTLABEL ideal-int pkg syscall (openbsd-386), const SIOCGIFTIMESLOT ideal-int pkg syscall (openbsd-386), const SIOCGIFXFLAGS ideal-int pkg syscall (openbsd-386), const SIOCGLIFADDR ideal-int pkg syscall (openbsd-386), const SIOCGLIFPHYADDR ideal-int pkg syscall (openbsd-386), const SIOCGLIFPHYRTABLE ideal-int pkg syscall (openbsd-386), const SIOCGLOWAT ideal-int pkg syscall (openbsd-386), const SIOCGPGRP ideal-int pkg syscall (openbsd-386), const SIOCGVH ideal-int pkg syscall (openbsd-386), const SIOCIFCREATE ideal-int pkg syscall (openbsd-386), const SIOCIFDESTROY ideal-int pkg syscall (openbsd-386), const SIOCIFGCLONERS ideal-int pkg syscall (openbsd-386), const SIOCSETKALIVE ideal-int pkg syscall (openbsd-386), const SIOCSETLABEL ideal-int pkg syscall (openbsd-386), const SIOCSETPFLOW ideal-int pkg syscall (openbsd-386), const SIOCSETPFSYNC ideal-int pkg syscall (openbsd-386), const SIOCSHIWAT ideal-int pkg syscall (openbsd-386), const SIOCSIFADDR ideal-int pkg syscall (openbsd-386), const SIOCSIFASYNCMAP ideal-int pkg syscall (openbsd-386), const SIOCSIFBRDADDR ideal-int pkg syscall (openbsd-386), const SIOCSIFDESCR ideal-int pkg syscall (openbsd-386), const SIOCSIFDSTADDR ideal-int pkg syscall (openbsd-386), const SIOCSIFFLAGS ideal-int pkg syscall (openbsd-386), const SIOCSIFGATTR ideal-int pkg syscall (openbsd-386), const SIOCSIFGENERIC ideal-int pkg syscall (openbsd-386), const SIOCSIFLLADDR ideal-int pkg syscall (openbsd-386), const SIOCSIFMEDIA ideal-int pkg syscall (openbsd-386), const SIOCSIFMETRIC ideal-int pkg syscall (openbsd-386), const SIOCSIFMTU ideal-int pkg syscall (openbsd-386), const SIOCSIFNETMASK ideal-int pkg syscall (openbsd-386), const SIOCSIFPHYADDR ideal-int pkg syscall (openbsd-386), const SIOCSIFPRIORITY ideal-int pkg syscall (openbsd-386), const SIOCSIFRDOMAIN ideal-int pkg syscall (openbsd-386), const SIOCSIFRTLABEL ideal-int pkg syscall (openbsd-386), const SIOCSIFTIMESLOT ideal-int pkg syscall (openbsd-386), const SIOCSIFXFLAGS ideal-int pkg syscall (openbsd-386), const SIOCSLIFPHYADDR ideal-int pkg syscall (openbsd-386), const SIOCSLIFPHYRTABLE ideal-int pkg syscall (openbsd-386), const SIOCSLOWAT ideal-int pkg syscall (openbsd-386), const SIOCSPGRP ideal-int pkg syscall (openbsd-386), const SIOCSVH ideal-int pkg syscall (openbsd-386), const SOCK_RDM ideal-int pkg syscall (openbsd-386), const SO_ACCEPTCONN ideal-int pkg syscall (openbsd-386), const SO_BINDANY ideal-int pkg syscall (openbsd-386), const SO_DEBUG ideal-int pkg syscall (openbsd-386), const SO_ERROR ideal-int pkg syscall (openbsd-386), const SO_NETPROC ideal-int pkg syscall (openbsd-386), const SO_OOBINLINE ideal-int pkg syscall (openbsd-386), const SO_PEERCRED ideal-int pkg syscall (openbsd-386), const SO_RCVLOWAT ideal-int pkg syscall (openbsd-386), const SO_RCVTIMEO ideal-int pkg syscall (openbsd-386), const SO_REUSEPORT ideal-int pkg syscall (openbsd-386), const SO_RTABLE ideal-int pkg syscall (openbsd-386), const SO_SNDLOWAT ideal-int pkg syscall (openbsd-386), const SO_SNDTIMEO ideal-int pkg syscall (openbsd-386), const SO_SPLICE ideal-int pkg syscall (openbsd-386), const SO_TIMESTAMP ideal-int pkg syscall (openbsd-386), const SO_TYPE ideal-int pkg syscall (openbsd-386), const SO_USELOOPBACK ideal-int pkg syscall (openbsd-386), const SYS_ACCEPT ideal-int pkg syscall (openbsd-386), const SYS_ACCESS ideal-int pkg syscall (openbsd-386), const SYS_ACCT ideal-int pkg syscall (openbsd-386), const SYS_ADJFREQ ideal-int pkg syscall (openbsd-386), const SYS_ADJTIME ideal-int pkg syscall (openbsd-386), const SYS_BIND ideal-int pkg syscall (openbsd-386), const SYS_CHDIR ideal-int pkg syscall (openbsd-386), const SYS_CHFLAGS ideal-int pkg syscall (openbsd-386), const SYS_CHMOD ideal-int pkg syscall (openbsd-386), const SYS_CHOWN ideal-int pkg syscall (openbsd-386), const SYS_CHROOT ideal-int pkg syscall (openbsd-386), const SYS_CLOCK_GETRES ideal-int pkg syscall (openbsd-386), const SYS_CLOCK_GETTIME ideal-int pkg syscall (openbsd-386), const SYS_CLOCK_SETTIME ideal-int pkg syscall (openbsd-386), const SYS_CLOSE ideal-int pkg syscall (openbsd-386), const SYS_CLOSEFROM ideal-int pkg syscall (openbsd-386), const SYS_CONNECT ideal-int pkg syscall (openbsd-386), const SYS_DUP ideal-int pkg syscall (openbsd-386), const SYS_DUP2 ideal-int pkg syscall (openbsd-386), const SYS_EXECVE ideal-int pkg syscall (openbsd-386), const SYS_EXIT ideal-int pkg syscall (openbsd-386), const SYS_FACCESSAT ideal-int pkg syscall (openbsd-386), const SYS_FCHDIR ideal-int pkg syscall (openbsd-386), const SYS_FCHFLAGS ideal-int pkg syscall (openbsd-386), const SYS_FCHMOD ideal-int pkg syscall (openbsd-386), const SYS_FCHMODAT ideal-int pkg syscall (openbsd-386), const SYS_FCHOWN ideal-int pkg syscall (openbsd-386), const SYS_FCHOWNAT ideal-int pkg syscall (openbsd-386), const SYS_FCNTL ideal-int pkg syscall (openbsd-386), const SYS_FHOPEN ideal-int pkg syscall (openbsd-386), const SYS_FHSTAT ideal-int pkg syscall (openbsd-386), const SYS_FHSTATFS ideal-int pkg syscall (openbsd-386), const SYS_FLOCK ideal-int pkg syscall (openbsd-386), const SYS_FORK ideal-int pkg syscall (openbsd-386), const SYS_FPATHCONF ideal-int pkg syscall (openbsd-386), const SYS_FSTAT ideal-int pkg syscall (openbsd-386), const SYS_FSTATAT ideal-int pkg syscall (openbsd-386), const SYS_FSTATFS ideal-int pkg syscall (openbsd-386), const SYS_FSYNC ideal-int pkg syscall (openbsd-386), const SYS_FTRUNCATE ideal-int pkg syscall (openbsd-386), const SYS_FUTIMENS ideal-int pkg syscall (openbsd-386), const SYS_FUTIMES ideal-int pkg syscall (openbsd-386), const SYS_GETDIRENTRIES ideal-int pkg syscall (openbsd-386), const SYS_GETDTABLECOUNT ideal-int pkg syscall (openbsd-386), const SYS_GETEGID ideal-int pkg syscall (openbsd-386), const SYS_GETEUID ideal-int pkg syscall (openbsd-386), const SYS_GETFH ideal-int pkg syscall (openbsd-386), const SYS_GETFSSTAT ideal-int pkg syscall (openbsd-386), const SYS_GETGID ideal-int pkg syscall (openbsd-386), const SYS_GETGROUPS ideal-int pkg syscall (openbsd-386), const SYS_GETITIMER ideal-int pkg syscall (openbsd-386), const SYS_GETLOGIN ideal-int pkg syscall (openbsd-386), const SYS_GETPEERNAME ideal-int pkg syscall (openbsd-386), const SYS_GETPGID ideal-int pkg syscall (openbsd-386), const SYS_GETPGRP ideal-int pkg syscall (openbsd-386), const SYS_GETPID ideal-int pkg syscall (openbsd-386), const SYS_GETPPID ideal-int pkg syscall (openbsd-386), const SYS_GETPRIORITY ideal-int pkg syscall (openbsd-386), const SYS_GETRESGID ideal-int pkg syscall (openbsd-386), const SYS_GETRESUID ideal-int pkg syscall (openbsd-386), const SYS_GETRLIMIT ideal-int pkg syscall (openbsd-386), const SYS_GETRTABLE ideal-int pkg syscall (openbsd-386), const SYS_GETRUSAGE ideal-int pkg syscall (openbsd-386), const SYS_GETSID ideal-int pkg syscall (openbsd-386), const SYS_GETSOCKNAME ideal-int pkg syscall (openbsd-386), const SYS_GETSOCKOPT ideal-int pkg syscall (openbsd-386), const SYS_GETTHRID ideal-int pkg syscall (openbsd-386), const SYS_GETTIMEOFDAY ideal-int pkg syscall (openbsd-386), const SYS_GETUID ideal-int pkg syscall (openbsd-386), const SYS_IOCTL ideal-int pkg syscall (openbsd-386), const SYS_ISSETUGID ideal-int pkg syscall (openbsd-386), const SYS_KEVENT ideal-int pkg syscall (openbsd-386), const SYS_KILL ideal-int pkg syscall (openbsd-386), const SYS_KQUEUE ideal-int pkg syscall (openbsd-386), const SYS_KTRACE ideal-int pkg syscall (openbsd-386), const SYS_LCHOWN ideal-int pkg syscall (openbsd-386), const SYS_LINK ideal-int pkg syscall (openbsd-386), const SYS_LINKAT ideal-int pkg syscall (openbsd-386), const SYS_LISTEN ideal-int pkg syscall (openbsd-386), const SYS_LSEEK ideal-int pkg syscall (openbsd-386), const SYS_LSTAT ideal-int pkg syscall (openbsd-386), const SYS_MADVISE ideal-int pkg syscall (openbsd-386), const SYS_MINCORE ideal-int pkg syscall (openbsd-386), const SYS_MINHERIT ideal-int pkg syscall (openbsd-386), const SYS_MKDIR ideal-int pkg syscall (openbsd-386), const SYS_MKDIRAT ideal-int pkg syscall (openbsd-386), const SYS_MKFIFO ideal-int pkg syscall (openbsd-386), const SYS_MKFIFOAT ideal-int pkg syscall (openbsd-386), const SYS_MKNOD ideal-int pkg syscall (openbsd-386), const SYS_MKNODAT ideal-int pkg syscall (openbsd-386), const SYS_MLOCK ideal-int pkg syscall (openbsd-386), const SYS_MLOCKALL ideal-int pkg syscall (openbsd-386), const SYS_MMAP ideal-int pkg syscall (openbsd-386), const SYS_MOUNT ideal-int pkg syscall (openbsd-386), const SYS_MPROTECT ideal-int pkg syscall (openbsd-386), const SYS_MQUERY ideal-int pkg syscall (openbsd-386), const SYS_MSGCTL ideal-int pkg syscall (openbsd-386), const SYS_MSGGET ideal-int pkg syscall (openbsd-386), const SYS_MSGRCV ideal-int pkg syscall (openbsd-386), const SYS_MSGSND ideal-int pkg syscall (openbsd-386), const SYS_MSYNC ideal-int pkg syscall (openbsd-386), const SYS_MUNLOCK ideal-int pkg syscall (openbsd-386), const SYS_MUNLOCKALL ideal-int pkg syscall (openbsd-386), const SYS_MUNMAP ideal-int pkg syscall (openbsd-386), const SYS_NANOSLEEP ideal-int pkg syscall (openbsd-386), const SYS_NFSSVC ideal-int pkg syscall (openbsd-386), const SYS_OBREAK ideal-int pkg syscall (openbsd-386), const SYS_OPEN ideal-int pkg syscall (openbsd-386), const SYS_OPENAT ideal-int pkg syscall (openbsd-386), const SYS_PATHCONF ideal-int pkg syscall (openbsd-386), const SYS_PIPE ideal-int pkg syscall (openbsd-386), const SYS_POLL ideal-int pkg syscall (openbsd-386), const SYS_PREAD ideal-int pkg syscall (openbsd-386), const SYS_PREADV ideal-int pkg syscall (openbsd-386), const SYS_PROFIL ideal-int pkg syscall (openbsd-386), const SYS_PTRACE ideal-int pkg syscall (openbsd-386), const SYS_PWRITE ideal-int pkg syscall (openbsd-386), const SYS_PWRITEV ideal-int pkg syscall (openbsd-386), const SYS_QUOTACTL ideal-int pkg syscall (openbsd-386), const SYS_READ ideal-int pkg syscall (openbsd-386), const SYS_READLINK ideal-int pkg syscall (openbsd-386), const SYS_READLINKAT ideal-int pkg syscall (openbsd-386), const SYS_READV ideal-int pkg syscall (openbsd-386), const SYS_REBOOT ideal-int pkg syscall (openbsd-386), const SYS_RECVFROM ideal-int pkg syscall (openbsd-386), const SYS_RECVMSG ideal-int pkg syscall (openbsd-386), const SYS_RENAME ideal-int pkg syscall (openbsd-386), const SYS_RENAMEAT ideal-int pkg syscall (openbsd-386), const SYS_REVOKE ideal-int pkg syscall (openbsd-386), const SYS_RMDIR ideal-int pkg syscall (openbsd-386), const SYS_SCHED_YIELD ideal-int pkg syscall (openbsd-386), const SYS_SELECT ideal-int pkg syscall (openbsd-386), const SYS_SEMGET ideal-int pkg syscall (openbsd-386), const SYS_SEMOP ideal-int pkg syscall (openbsd-386), const SYS_SENDMSG ideal-int pkg syscall (openbsd-386), const SYS_SENDTO ideal-int pkg syscall (openbsd-386), const SYS_SETEGID ideal-int pkg syscall (openbsd-386), const SYS_SETEUID ideal-int pkg syscall (openbsd-386), const SYS_SETGID ideal-int pkg syscall (openbsd-386), const SYS_SETGROUPS ideal-int pkg syscall (openbsd-386), const SYS_SETITIMER ideal-int pkg syscall (openbsd-386), const SYS_SETLOGIN ideal-int pkg syscall (openbsd-386), const SYS_SETPGID ideal-int pkg syscall (openbsd-386), const SYS_SETPRIORITY ideal-int pkg syscall (openbsd-386), const SYS_SETREGID ideal-int pkg syscall (openbsd-386), const SYS_SETRESGID ideal-int pkg syscall (openbsd-386), const SYS_SETRESUID ideal-int pkg syscall (openbsd-386), const SYS_SETREUID ideal-int pkg syscall (openbsd-386), const SYS_SETRLIMIT ideal-int pkg syscall (openbsd-386), const SYS_SETRTABLE ideal-int pkg syscall (openbsd-386), const SYS_SETSID ideal-int pkg syscall (openbsd-386), const SYS_SETSOCKOPT ideal-int pkg syscall (openbsd-386), const SYS_SETTIMEOFDAY ideal-int pkg syscall (openbsd-386), const SYS_SETUID ideal-int pkg syscall (openbsd-386), const SYS_SHMAT ideal-int pkg syscall (openbsd-386), const SYS_SHMCTL ideal-int pkg syscall (openbsd-386), const SYS_SHMDT ideal-int pkg syscall (openbsd-386), const SYS_SHMGET ideal-int pkg syscall (openbsd-386), const SYS_SHUTDOWN ideal-int pkg syscall (openbsd-386), const SYS_SIGACTION ideal-int pkg syscall (openbsd-386), const SYS_SIGALTSTACK ideal-int pkg syscall (openbsd-386), const SYS_SIGPENDING ideal-int pkg syscall (openbsd-386), const SYS_SIGPROCMASK ideal-int pkg syscall (openbsd-386), const SYS_SIGRETURN ideal-int pkg syscall (openbsd-386), const SYS_SIGSUSPEND ideal-int pkg syscall (openbsd-386), const SYS_SOCKET ideal-int pkg syscall (openbsd-386), const SYS_SOCKETPAIR ideal-int pkg syscall (openbsd-386), const SYS_STAT ideal-int pkg syscall (openbsd-386), const SYS_STATFS ideal-int pkg syscall (openbsd-386), const SYS_SWAPCTL ideal-int pkg syscall (openbsd-386), const SYS_SYMLINK ideal-int pkg syscall (openbsd-386), const SYS_SYMLINKAT ideal-int pkg syscall (openbsd-386), const SYS_SYNC ideal-int pkg syscall (openbsd-386), const SYS_SYSARCH ideal-int pkg syscall (openbsd-386), const SYS_TRUNCATE ideal-int pkg syscall (openbsd-386), const SYS_UMASK ideal-int pkg syscall (openbsd-386), const SYS_UNLINK ideal-int pkg syscall (openbsd-386), const SYS_UNLINKAT ideal-int pkg syscall (openbsd-386), const SYS_UNMOUNT ideal-int pkg syscall (openbsd-386), const SYS_UTIMENSAT ideal-int pkg syscall (openbsd-386), const SYS_UTIMES ideal-int pkg syscall (openbsd-386), const SYS_VFORK ideal-int pkg syscall (openbsd-386), const SYS_WAIT4 ideal-int pkg syscall (openbsd-386), const SYS_WRITE ideal-int pkg syscall (openbsd-386), const SYS_WRITEV ideal-int pkg syscall (openbsd-386), const SYS___GETCWD ideal-int pkg syscall (openbsd-386), const SYS___GET_TCB ideal-int pkg syscall (openbsd-386), const SYS___SEMCTL ideal-int pkg syscall (openbsd-386), const SYS___SET_TCB ideal-int pkg syscall (openbsd-386), const SYS___SYSCTL ideal-int pkg syscall (openbsd-386), const SYS___TFORK ideal-int pkg syscall (openbsd-386), const SYS___THREXIT ideal-int pkg syscall (openbsd-386), const SYS___THRSIGDIVERT ideal-int pkg syscall (openbsd-386), const SYS___THRSLEEP ideal-int pkg syscall (openbsd-386), const SYS___THRWAKEUP ideal-int pkg syscall (openbsd-386), const SizeofBpfHdr ideal-int pkg syscall (openbsd-386), const SizeofBpfInsn ideal-int pkg syscall (openbsd-386), const SizeofBpfProgram ideal-int pkg syscall (openbsd-386), const SizeofBpfStat ideal-int pkg syscall (openbsd-386), const SizeofBpfVersion ideal-int pkg syscall (openbsd-386), const SizeofCmsghdr ideal-int pkg syscall (openbsd-386), const SizeofICMPv6Filter = 32 pkg syscall (openbsd-386), const SizeofICMPv6Filter ideal-int pkg syscall (openbsd-386), const SizeofIPMreq ideal-int pkg syscall (openbsd-386), const SizeofIPv6MTUInfo = 32 pkg syscall (openbsd-386), const SizeofIPv6MTUInfo ideal-int pkg syscall (openbsd-386), const SizeofIPv6Mreq ideal-int pkg syscall (openbsd-386), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (openbsd-386), const SizeofIfData ideal-int pkg syscall (openbsd-386), const SizeofIfMsghdr ideal-int pkg syscall (openbsd-386), const SizeofIfaMsghdr ideal-int pkg syscall (openbsd-386), const SizeofInet6Pktinfo ideal-int pkg syscall (openbsd-386), const SizeofLinger ideal-int pkg syscall (openbsd-386), const SizeofMsghdr ideal-int pkg syscall (openbsd-386), const SizeofRtMetrics ideal-int pkg syscall (openbsd-386), const SizeofRtMsghdr ideal-int pkg syscall (openbsd-386), const SizeofSockaddrAny ideal-int pkg syscall (openbsd-386), const SizeofSockaddrDatalink ideal-int pkg syscall (openbsd-386), const SizeofSockaddrInet4 ideal-int pkg syscall (openbsd-386), const SizeofSockaddrInet6 ideal-int pkg syscall (openbsd-386), const SizeofSockaddrUnix ideal-int pkg syscall (openbsd-386), const TCIFLUSH ideal-int pkg syscall (openbsd-386), const TCIOFLUSH ideal-int pkg syscall (openbsd-386), const TCOFLUSH ideal-int pkg syscall (openbsd-386), const TCP_MAXBURST ideal-int pkg syscall (openbsd-386), const TCP_MAXSEG ideal-int pkg syscall (openbsd-386), const TCP_MAXWIN ideal-int pkg syscall (openbsd-386), const TCP_MAX_SACK ideal-int pkg syscall (openbsd-386), const TCP_MAX_WINSHIFT ideal-int pkg syscall (openbsd-386), const TCP_MD5SIG ideal-int pkg syscall (openbsd-386), const TCP_MSS ideal-int pkg syscall (openbsd-386), const TCP_NSTATES ideal-int pkg syscall (openbsd-386), const TCP_SACK_ENABLE ideal-int pkg syscall (openbsd-386), const TCSAFLUSH ideal-int pkg syscall (openbsd-386), const TIOCCBRK ideal-int pkg syscall (openbsd-386), const TIOCCDTR ideal-int pkg syscall (openbsd-386), const TIOCCONS ideal-int pkg syscall (openbsd-386), const TIOCDRAIN ideal-int pkg syscall (openbsd-386), const TIOCEXCL ideal-int pkg syscall (openbsd-386), const TIOCEXT ideal-int pkg syscall (openbsd-386), const TIOCFLAG_CLOCAL ideal-int pkg syscall (openbsd-386), const TIOCFLAG_CRTSCTS ideal-int pkg syscall (openbsd-386), const TIOCFLAG_MDMBUF ideal-int pkg syscall (openbsd-386), const TIOCFLAG_PPS ideal-int pkg syscall (openbsd-386), const TIOCFLAG_SOFTCAR ideal-int pkg syscall (openbsd-386), const TIOCFLUSH ideal-int pkg syscall (openbsd-386), const TIOCGETA ideal-int pkg syscall (openbsd-386), const TIOCGETD ideal-int pkg syscall (openbsd-386), const TIOCGFLAGS ideal-int pkg syscall (openbsd-386), const TIOCGPGRP ideal-int pkg syscall (openbsd-386), const TIOCGTSTAMP ideal-int pkg syscall (openbsd-386), const TIOCGWINSZ ideal-int pkg syscall (openbsd-386), const TIOCMBIC ideal-int pkg syscall (openbsd-386), const TIOCMBIS ideal-int pkg syscall (openbsd-386), const TIOCMGET ideal-int pkg syscall (openbsd-386), const TIOCMODG ideal-int pkg syscall (openbsd-386), const TIOCMODS ideal-int pkg syscall (openbsd-386), const TIOCMSET ideal-int pkg syscall (openbsd-386), const TIOCM_CAR ideal-int pkg syscall (openbsd-386), const TIOCM_CD ideal-int pkg syscall (openbsd-386), const TIOCM_CTS ideal-int pkg syscall (openbsd-386), const TIOCM_DSR ideal-int pkg syscall (openbsd-386), const TIOCM_DTR ideal-int pkg syscall (openbsd-386), const TIOCM_LE ideal-int pkg syscall (openbsd-386), const TIOCM_RI ideal-int pkg syscall (openbsd-386), const TIOCM_RNG ideal-int pkg syscall (openbsd-386), const TIOCM_RTS ideal-int pkg syscall (openbsd-386), const TIOCM_SR ideal-int pkg syscall (openbsd-386), const TIOCM_ST ideal-int pkg syscall (openbsd-386), const TIOCNOTTY ideal-int pkg syscall (openbsd-386), const TIOCNXCL ideal-int pkg syscall (openbsd-386), const TIOCOUTQ ideal-int pkg syscall (openbsd-386), const TIOCPKT ideal-int pkg syscall (openbsd-386), const TIOCPKT_DATA ideal-int pkg syscall (openbsd-386), const TIOCPKT_DOSTOP ideal-int pkg syscall (openbsd-386), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (openbsd-386), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (openbsd-386), const TIOCPKT_IOCTL ideal-int pkg syscall (openbsd-386), const TIOCPKT_NOSTOP ideal-int pkg syscall (openbsd-386), const TIOCPKT_START ideal-int pkg syscall (openbsd-386), const TIOCPKT_STOP ideal-int pkg syscall (openbsd-386), const TIOCREMOTE ideal-int pkg syscall (openbsd-386), const TIOCSBRK ideal-int pkg syscall (openbsd-386), const TIOCSCTTY ideal-int pkg syscall (openbsd-386), const TIOCSDTR ideal-int pkg syscall (openbsd-386), const TIOCSETA ideal-int pkg syscall (openbsd-386), const TIOCSETAF ideal-int pkg syscall (openbsd-386), const TIOCSETAW ideal-int pkg syscall (openbsd-386), const TIOCSETD ideal-int pkg syscall (openbsd-386), const TIOCSFLAGS ideal-int pkg syscall (openbsd-386), const TIOCSIG ideal-int pkg syscall (openbsd-386), const TIOCSPGRP ideal-int pkg syscall (openbsd-386), const TIOCSTART ideal-int pkg syscall (openbsd-386), const TIOCSTAT ideal-int pkg syscall (openbsd-386), const TIOCSTI ideal-int pkg syscall (openbsd-386), const TIOCSTOP ideal-int pkg syscall (openbsd-386), const TIOCSTSTAMP ideal-int pkg syscall (openbsd-386), const TIOCSWINSZ ideal-int pkg syscall (openbsd-386), const TIOCUCNTL ideal-int pkg syscall (openbsd-386), const TOSTOP ideal-int pkg syscall (openbsd-386), const VDISCARD ideal-int pkg syscall (openbsd-386), const VDSUSP ideal-int pkg syscall (openbsd-386), const VEOF ideal-int pkg syscall (openbsd-386), const VEOL ideal-int pkg syscall (openbsd-386), const VEOL2 ideal-int pkg syscall (openbsd-386), const VERASE ideal-int pkg syscall (openbsd-386), const VINTR ideal-int pkg syscall (openbsd-386), const VKILL ideal-int pkg syscall (openbsd-386), const VLNEXT ideal-int pkg syscall (openbsd-386), const VMIN ideal-int pkg syscall (openbsd-386), const VQUIT ideal-int pkg syscall (openbsd-386), const VREPRINT ideal-int pkg syscall (openbsd-386), const VSTART ideal-int pkg syscall (openbsd-386), const VSTATUS ideal-int pkg syscall (openbsd-386), const VSTOP ideal-int pkg syscall (openbsd-386), const VSUSP ideal-int pkg syscall (openbsd-386), const VTIME ideal-int pkg syscall (openbsd-386), const VWERASE ideal-int pkg syscall (openbsd-386), const WALTSIG ideal-int pkg syscall (openbsd-386), const WCONTINUED ideal-int pkg syscall (openbsd-386), const WCOREFLAG ideal-int pkg syscall (openbsd-386), const WNOHANG ideal-int pkg syscall (openbsd-386), const WSTOPPED ideal-int pkg syscall (openbsd-386), const WUNTRACED ideal-int pkg syscall (openbsd-386), func Accept(int) (int, Sockaddr, error) pkg syscall (openbsd-386), func Access(string, uint32) error pkg syscall (openbsd-386), func Adjtime(*Timeval, *Timeval) error pkg syscall (openbsd-386), func Bind(int, Sockaddr) error pkg syscall (openbsd-386), func BpfBuflen(int) (int, error) pkg syscall (openbsd-386), func BpfDatalink(int) (int, error) pkg syscall (openbsd-386), func BpfHeadercmpl(int) (int, error) pkg syscall (openbsd-386), func BpfInterface(int, string) (string, error) pkg syscall (openbsd-386), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (openbsd-386), func BpfStats(int) (*BpfStat, error) pkg syscall (openbsd-386), func BpfStmt(int, int) *BpfInsn pkg syscall (openbsd-386), func BpfTimeout(int) (*Timeval, error) pkg syscall (openbsd-386), func CheckBpfVersion(int) error pkg syscall (openbsd-386), func Chflags(string, int) error pkg syscall (openbsd-386), func Chroot(string) error pkg syscall (openbsd-386), func Close(int) error pkg syscall (openbsd-386), func CloseOnExec(int) pkg syscall (openbsd-386), func CmsgLen(int) int pkg syscall (openbsd-386), func CmsgSpace(int) int pkg syscall (openbsd-386), func Connect(int, Sockaddr) error pkg syscall (openbsd-386), func Dup(int) (int, error) pkg syscall (openbsd-386), func Dup2(int, int) error pkg syscall (openbsd-386), func Fchdir(int) error pkg syscall (openbsd-386), func Fchflags(int, int) error pkg syscall (openbsd-386), func Fchmod(int, uint32) error pkg syscall (openbsd-386), func Fchown(int, int, int) error pkg syscall (openbsd-386), func Flock(int, int) error pkg syscall (openbsd-386), func FlushBpf(int) error pkg syscall (openbsd-386), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (openbsd-386), func Fpathconf(int, int) (int, error) pkg syscall (openbsd-386), func Fstat(int, *Stat_t) error pkg syscall (openbsd-386), func Fstatfs(int, *Statfs_t) error pkg syscall (openbsd-386), func Fsync(int) error pkg syscall (openbsd-386), func Ftruncate(int, int64) error pkg syscall (openbsd-386), func Futimes(int, []Timeval) error pkg syscall (openbsd-386), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (openbsd-386), func Getfsstat([]Statfs_t, int) (int, error) pkg syscall (openbsd-386), func Getpeername(int) (Sockaddr, error) pkg syscall (openbsd-386), func Getpgid(int) (int, error) pkg syscall (openbsd-386), func Getpgrp() int pkg syscall (openbsd-386), func Getpriority(int, int) (int, error) pkg syscall (openbsd-386), func Getrlimit(int, *Rlimit) error pkg syscall (openbsd-386), func Getrusage(int, *Rusage) error pkg syscall (openbsd-386), func Getsid(int) (int, error) pkg syscall (openbsd-386), func Getsockname(int) (Sockaddr, error) pkg syscall (openbsd-386), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (openbsd-386), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (openbsd-386), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (openbsd-386), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (openbsd-386), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (openbsd-386), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (openbsd-386), func GetsockoptInt(int, int, int) (int, error) pkg syscall (openbsd-386), func Issetugid() bool pkg syscall (openbsd-386), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (openbsd-386), func Kill(int, Signal) error pkg syscall (openbsd-386), func Kqueue() (int, error) pkg syscall (openbsd-386), func Listen(int, int) error pkg syscall (openbsd-386), func Lstat(string, *Stat_t) error pkg syscall (openbsd-386), func Mkfifo(string, uint32) error pkg syscall (openbsd-386), func Mknod(string, uint32, int) error pkg syscall (openbsd-386), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (openbsd-386), func Munmap([]uint8) error pkg syscall (openbsd-386), func Nanosleep(*Timespec, *Timespec) error pkg syscall (openbsd-386), func Open(string, int, uint32) (int, error) pkg syscall (openbsd-386), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (openbsd-386), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (openbsd-386), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (openbsd-386), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (openbsd-386), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (openbsd-386), func Pathconf(string, int) (int, error) pkg syscall (openbsd-386), func Pipe([]int) error pkg syscall (openbsd-386), func Pread(int, []uint8, int64) (int, error) pkg syscall (openbsd-386), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (openbsd-386), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-386), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-386), func Read(int, []uint8) (int, error) pkg syscall (openbsd-386), func ReadDirent(int, []uint8) (int, error) pkg syscall (openbsd-386), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (openbsd-386), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (openbsd-386), func Revoke(string) error pkg syscall (openbsd-386), func RouteRIB(int, int) ([]uint8, error) pkg syscall (openbsd-386), func Seek(int, int64, int) (int64, error) pkg syscall (openbsd-386), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (openbsd-386), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (openbsd-386), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (openbsd-386), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (openbsd-386), func SetBpf(int, []BpfInsn) error pkg syscall (openbsd-386), func SetBpfBuflen(int, int) (int, error) pkg syscall (openbsd-386), func SetBpfDatalink(int, int) (int, error) pkg syscall (openbsd-386), func SetBpfHeadercmpl(int, int) error pkg syscall (openbsd-386), func SetBpfImmediate(int, int) error pkg syscall (openbsd-386), func SetBpfInterface(int, string) error pkg syscall (openbsd-386), func SetBpfPromisc(int, int) error pkg syscall (openbsd-386), func SetBpfTimeout(int, *Timeval) error pkg syscall (openbsd-386), func SetKevent(*Kevent_t, int, int, int) pkg syscall (openbsd-386), func SetNonblock(int, bool) error pkg syscall (openbsd-386), func Setegid(int) error pkg syscall (openbsd-386), func Seteuid(int) error pkg syscall (openbsd-386), func Setgid(int) error pkg syscall (openbsd-386), func Setgroups([]int) error pkg syscall (openbsd-386), func Setlogin(string) error pkg syscall (openbsd-386), func Setpgid(int, int) error pkg syscall (openbsd-386), func Setpriority(int, int, int) error pkg syscall (openbsd-386), func Setregid(int, int) error pkg syscall (openbsd-386), func Setreuid(int, int) error pkg syscall (openbsd-386), func Setrlimit(int, *Rlimit) error pkg syscall (openbsd-386), func Setsid() (int, error) pkg syscall (openbsd-386), func SetsockoptByte(int, int, int, uint8) error pkg syscall (openbsd-386), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (openbsd-386), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (openbsd-386), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (openbsd-386), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (openbsd-386), func SetsockoptInt(int, int, int, int) error pkg syscall (openbsd-386), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (openbsd-386), func SetsockoptString(int, int, int, string) error pkg syscall (openbsd-386), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (openbsd-386), func Settimeofday(*Timeval) error pkg syscall (openbsd-386), func Setuid(int) error pkg syscall (openbsd-386), func Shutdown(int, int) error pkg syscall (openbsd-386), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (openbsd-386), func Socket(int, int, int) (int, error) pkg syscall (openbsd-386), func Socketpair(int, int, int) ([2]int, error) pkg syscall (openbsd-386), func Stat(string, *Stat_t) error pkg syscall (openbsd-386), func Statfs(string, *Statfs_t) error pkg syscall (openbsd-386), func StringSlicePtr([]string) []*uint8 pkg syscall (openbsd-386), func Sync() error pkg syscall (openbsd-386), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-386), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-386), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-386), func Sysctl(string) (string, error) pkg syscall (openbsd-386), func SysctlUint32(string) (uint32, error) pkg syscall (openbsd-386), func TimevalToNsec(Timeval) int64 pkg syscall (openbsd-386), func Truncate(string, int64) error pkg syscall (openbsd-386), func Umask(int) int pkg syscall (openbsd-386), func UnixRights(...int) []uint8 pkg syscall (openbsd-386), func Unmount(string, int) error pkg syscall (openbsd-386), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (openbsd-386), func Write(int, []uint8) (int, error) pkg syscall (openbsd-386), method (*Cmsghdr) SetLen(int) pkg syscall (openbsd-386), method (*Iovec) SetLen(int) pkg syscall (openbsd-386), method (*Msghdr) SetControllen(int) pkg syscall (openbsd-386), type BpfHdr struct pkg syscall (openbsd-386), type BpfHdr struct, Caplen uint32 pkg syscall (openbsd-386), type BpfHdr struct, Datalen uint32 pkg syscall (openbsd-386), type BpfHdr struct, Hdrlen uint16 pkg syscall (openbsd-386), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (openbsd-386), type BpfHdr struct, Tstamp BpfTimeval pkg syscall (openbsd-386), type BpfInsn struct pkg syscall (openbsd-386), type BpfInsn struct, Code uint16 pkg syscall (openbsd-386), type BpfInsn struct, Jf uint8 pkg syscall (openbsd-386), type BpfInsn struct, Jt uint8 pkg syscall (openbsd-386), type BpfInsn struct, K uint32 pkg syscall (openbsd-386), type BpfProgram struct pkg syscall (openbsd-386), type BpfProgram struct, Insns *BpfInsn pkg syscall (openbsd-386), type BpfProgram struct, Len uint32 pkg syscall (openbsd-386), type BpfStat struct pkg syscall (openbsd-386), type BpfStat struct, Drop uint32 pkg syscall (openbsd-386), type BpfStat struct, Recv uint32 pkg syscall (openbsd-386), type BpfTimeval struct pkg syscall (openbsd-386), type BpfTimeval struct, Sec uint32 pkg syscall (openbsd-386), type BpfTimeval struct, Usec uint32 pkg syscall (openbsd-386), type BpfVersion struct pkg syscall (openbsd-386), type BpfVersion struct, Major uint16 pkg syscall (openbsd-386), type BpfVersion struct, Minor uint16 pkg syscall (openbsd-386), type Cmsghdr struct pkg syscall (openbsd-386), type Cmsghdr struct, Len uint32 pkg syscall (openbsd-386), type Cmsghdr struct, Level int32 pkg syscall (openbsd-386), type Cmsghdr struct, Type int32 pkg syscall (openbsd-386), type Credential struct pkg syscall (openbsd-386), type Credential struct, Gid uint32 pkg syscall (openbsd-386), type Credential struct, Groups []uint32 pkg syscall (openbsd-386), type Credential struct, Uid uint32 pkg syscall (openbsd-386), type Dirent struct pkg syscall (openbsd-386), type Dirent struct, Fileno uint32 pkg syscall (openbsd-386), type Dirent struct, Name [256]int8 pkg syscall (openbsd-386), type Dirent struct, Namlen uint8 pkg syscall (openbsd-386), type Dirent struct, Reclen uint16 pkg syscall (openbsd-386), type Dirent struct, Type uint8 pkg syscall (openbsd-386), type FdSet struct pkg syscall (openbsd-386), type FdSet struct, Bits [32]int32 pkg syscall (openbsd-386), type Flock_t struct pkg syscall (openbsd-386), type Flock_t struct, Len int64 pkg syscall (openbsd-386), type Flock_t struct, Pid int32 pkg syscall (openbsd-386), type Flock_t struct, Start int64 pkg syscall (openbsd-386), type Flock_t struct, Type int16 pkg syscall (openbsd-386), type Flock_t struct, Whence int16 pkg syscall (openbsd-386), type Fsid struct pkg syscall (openbsd-386), type Fsid struct, Val [2]int32 pkg syscall (openbsd-386), type ICMPv6Filter struct pkg syscall (openbsd-386), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (openbsd-386), type IPv6MTUInfo struct pkg syscall (openbsd-386), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (openbsd-386), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (openbsd-386), type IfAnnounceMsghdr struct pkg syscall (openbsd-386), type IfAnnounceMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-386), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (openbsd-386), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (openbsd-386), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (openbsd-386), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (openbsd-386), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (openbsd-386), type IfAnnounceMsghdr struct, What uint16 pkg syscall (openbsd-386), type IfData struct pkg syscall (openbsd-386), type IfData struct, Addrlen uint8 pkg syscall (openbsd-386), type IfData struct, Baudrate uint64 pkg syscall (openbsd-386), type IfData struct, Capabilities uint32 pkg syscall (openbsd-386), type IfData struct, Collisions uint64 pkg syscall (openbsd-386), type IfData struct, Hdrlen uint8 pkg syscall (openbsd-386), type IfData struct, Ibytes uint64 pkg syscall (openbsd-386), type IfData struct, Ierrors uint64 pkg syscall (openbsd-386), type IfData struct, Imcasts uint64 pkg syscall (openbsd-386), type IfData struct, Ipackets uint64 pkg syscall (openbsd-386), type IfData struct, Iqdrops uint64 pkg syscall (openbsd-386), type IfData struct, Lastchange Timeval pkg syscall (openbsd-386), type IfData struct, Link_state uint8 pkg syscall (openbsd-386), type IfData struct, Mclpool [7]Mclpool pkg syscall (openbsd-386), type IfData struct, Metric uint32 pkg syscall (openbsd-386), type IfData struct, Mtu uint32 pkg syscall (openbsd-386), type IfData struct, Noproto uint64 pkg syscall (openbsd-386), type IfData struct, Obytes uint64 pkg syscall (openbsd-386), type IfData struct, Oerrors uint64 pkg syscall (openbsd-386), type IfData struct, Omcasts uint64 pkg syscall (openbsd-386), type IfData struct, Opackets uint64 pkg syscall (openbsd-386), type IfData struct, Pad uint32 pkg syscall (openbsd-386), type IfData struct, Type uint8 pkg syscall (openbsd-386), type IfMsghdr struct pkg syscall (openbsd-386), type IfMsghdr struct, Addrs int32 pkg syscall (openbsd-386), type IfMsghdr struct, Data IfData pkg syscall (openbsd-386), type IfMsghdr struct, Flags int32 pkg syscall (openbsd-386), type IfMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-386), type IfMsghdr struct, Index uint16 pkg syscall (openbsd-386), type IfMsghdr struct, Msglen uint16 pkg syscall (openbsd-386), type IfMsghdr struct, Pad1 uint8 pkg syscall (openbsd-386), type IfMsghdr struct, Pad2 uint8 pkg syscall (openbsd-386), type IfMsghdr struct, Tableid uint16 pkg syscall (openbsd-386), type IfMsghdr struct, Type uint8 pkg syscall (openbsd-386), type IfMsghdr struct, Version uint8 pkg syscall (openbsd-386), type IfMsghdr struct, Xflags int32 pkg syscall (openbsd-386), type IfaMsghdr struct pkg syscall (openbsd-386), type IfaMsghdr struct, Addrs int32 pkg syscall (openbsd-386), type IfaMsghdr struct, Flags int32 pkg syscall (openbsd-386), type IfaMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-386), type IfaMsghdr struct, Index uint16 pkg syscall (openbsd-386), type IfaMsghdr struct, Metric int32 pkg syscall (openbsd-386), type IfaMsghdr struct, Msglen uint16 pkg syscall (openbsd-386), type IfaMsghdr struct, Pad1 uint8 pkg syscall (openbsd-386), type IfaMsghdr struct, Pad2 uint8 pkg syscall (openbsd-386), type IfaMsghdr struct, Tableid uint16 pkg syscall (openbsd-386), type IfaMsghdr struct, Type uint8 pkg syscall (openbsd-386), type IfaMsghdr struct, Version uint8 pkg syscall (openbsd-386), type Inet6Pktinfo struct pkg syscall (openbsd-386), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (openbsd-386), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (openbsd-386), type InterfaceAddrMessage struct pkg syscall (openbsd-386), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (openbsd-386), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (openbsd-386), type InterfaceAnnounceMessage struct pkg syscall (openbsd-386), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (openbsd-386), type InterfaceMessage struct pkg syscall (openbsd-386), type InterfaceMessage struct, Data []uint8 pkg syscall (openbsd-386), type InterfaceMessage struct, Header IfMsghdr pkg syscall (openbsd-386), type Iovec struct pkg syscall (openbsd-386), type Iovec struct, Base *uint8 pkg syscall (openbsd-386), type Iovec struct, Len uint32 pkg syscall (openbsd-386), type Kevent_t struct pkg syscall (openbsd-386), type Kevent_t struct, Data int32 pkg syscall (openbsd-386), type Kevent_t struct, Fflags uint32 pkg syscall (openbsd-386), type Kevent_t struct, Filter int16 pkg syscall (openbsd-386), type Kevent_t struct, Flags uint16 pkg syscall (openbsd-386), type Kevent_t struct, Ident uint32 pkg syscall (openbsd-386), type Kevent_t struct, Udata *uint8 pkg syscall (openbsd-386), type Mclpool struct pkg syscall (openbsd-386), type Mclpool struct, Alive uint16 pkg syscall (openbsd-386), type Mclpool struct, Cwm uint16 pkg syscall (openbsd-386), type Mclpool struct, Grown uint32 pkg syscall (openbsd-386), type Mclpool struct, Hwm uint16 pkg syscall (openbsd-386), type Mclpool struct, Lwm uint16 pkg syscall (openbsd-386), type Msghdr struct pkg syscall (openbsd-386), type Msghdr struct, Control *uint8 pkg syscall (openbsd-386), type Msghdr struct, Controllen uint32 pkg syscall (openbsd-386), type Msghdr struct, Flags int32 pkg syscall (openbsd-386), type Msghdr struct, Iov *Iovec pkg syscall (openbsd-386), type Msghdr struct, Iovlen uint32 pkg syscall (openbsd-386), type Msghdr struct, Name *uint8 pkg syscall (openbsd-386), type Msghdr struct, Namelen uint32 pkg syscall (openbsd-386), type RawSockaddr struct, Data [14]int8 pkg syscall (openbsd-386), type RawSockaddr struct, Family uint8 pkg syscall (openbsd-386), type RawSockaddr struct, Len uint8 pkg syscall (openbsd-386), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (openbsd-386), type RawSockaddrDatalink struct pkg syscall (openbsd-386), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (openbsd-386), type RawSockaddrDatalink struct, Data [24]int8 pkg syscall (openbsd-386), type RawSockaddrDatalink struct, Family uint8 pkg syscall (openbsd-386), type RawSockaddrDatalink struct, Index uint16 pkg syscall (openbsd-386), type RawSockaddrDatalink struct, Len uint8 pkg syscall (openbsd-386), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (openbsd-386), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (openbsd-386), type RawSockaddrDatalink struct, Type uint8 pkg syscall (openbsd-386), type RawSockaddrInet4 struct, Family uint8 pkg syscall (openbsd-386), type RawSockaddrInet4 struct, Len uint8 pkg syscall (openbsd-386), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (openbsd-386), type RawSockaddrInet6 struct, Family uint8 pkg syscall (openbsd-386), type RawSockaddrInet6 struct, Len uint8 pkg syscall (openbsd-386), type RawSockaddrUnix struct pkg syscall (openbsd-386), type RawSockaddrUnix struct, Family uint8 pkg syscall (openbsd-386), type RawSockaddrUnix struct, Len uint8 pkg syscall (openbsd-386), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (openbsd-386), type Rlimit struct pkg syscall (openbsd-386), type Rlimit struct, Cur uint64 pkg syscall (openbsd-386), type Rlimit struct, Max uint64 pkg syscall (openbsd-386), type RouteMessage struct pkg syscall (openbsd-386), type RouteMessage struct, Data []uint8 pkg syscall (openbsd-386), type RouteMessage struct, Header RtMsghdr pkg syscall (openbsd-386), type RoutingMessage interface, unexported methods pkg syscall (openbsd-386), type RtMetrics struct pkg syscall (openbsd-386), type RtMetrics struct, Expire uint32 pkg syscall (openbsd-386), type RtMetrics struct, Hopcount uint32 pkg syscall (openbsd-386), type RtMetrics struct, Locks uint32 pkg syscall (openbsd-386), type RtMetrics struct, Mtu uint32 pkg syscall (openbsd-386), type RtMetrics struct, Pksent uint64 pkg syscall (openbsd-386), type RtMetrics struct, Recvpipe uint32 pkg syscall (openbsd-386), type RtMetrics struct, Refcnt uint32 pkg syscall (openbsd-386), type RtMetrics struct, Rtt uint32 pkg syscall (openbsd-386), type RtMetrics struct, Rttvar uint32 pkg syscall (openbsd-386), type RtMetrics struct, Sendpipe uint32 pkg syscall (openbsd-386), type RtMetrics struct, Ssthresh uint32 pkg syscall (openbsd-386), type RtMsghdr struct pkg syscall (openbsd-386), type RtMsghdr struct, Addrs int32 pkg syscall (openbsd-386), type RtMsghdr struct, Errno int32 pkg syscall (openbsd-386), type RtMsghdr struct, Flags int32 pkg syscall (openbsd-386), type RtMsghdr struct, Fmask int32 pkg syscall (openbsd-386), type RtMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-386), type RtMsghdr struct, Index uint16 pkg syscall (openbsd-386), type RtMsghdr struct, Inits uint32 pkg syscall (openbsd-386), type RtMsghdr struct, Mpls uint8 pkg syscall (openbsd-386), type RtMsghdr struct, Msglen uint16 pkg syscall (openbsd-386), type RtMsghdr struct, Pid int32 pkg syscall (openbsd-386), type RtMsghdr struct, Priority uint8 pkg syscall (openbsd-386), type RtMsghdr struct, Rmx RtMetrics pkg syscall (openbsd-386), type RtMsghdr struct, Seq int32 pkg syscall (openbsd-386), type RtMsghdr struct, Tableid uint16 pkg syscall (openbsd-386), type RtMsghdr struct, Type uint8 pkg syscall (openbsd-386), type RtMsghdr struct, Version uint8 pkg syscall (openbsd-386), type Rusage struct, Idrss int32 pkg syscall (openbsd-386), type Rusage struct, Inblock int32 pkg syscall (openbsd-386), type Rusage struct, Isrss int32 pkg syscall (openbsd-386), type Rusage struct, Ixrss int32 pkg syscall (openbsd-386), type Rusage struct, Majflt int32 pkg syscall (openbsd-386), type Rusage struct, Maxrss int32 pkg syscall (openbsd-386), type Rusage struct, Minflt int32 pkg syscall (openbsd-386), type Rusage struct, Msgrcv int32 pkg syscall (openbsd-386), type Rusage struct, Msgsnd int32 pkg syscall (openbsd-386), type Rusage struct, Nivcsw int32 pkg syscall (openbsd-386), type Rusage struct, Nsignals int32 pkg syscall (openbsd-386), type Rusage struct, Nswap int32 pkg syscall (openbsd-386), type Rusage struct, Nvcsw int32 pkg syscall (openbsd-386), type Rusage struct, Oublock int32 pkg syscall (openbsd-386), type Rusage struct, Stime Timeval pkg syscall (openbsd-386), type Rusage struct, Utime Timeval pkg syscall (openbsd-386), type SockaddrDatalink struct pkg syscall (openbsd-386), type SockaddrDatalink struct, Alen uint8 pkg syscall (openbsd-386), type SockaddrDatalink struct, Data [24]int8 pkg syscall (openbsd-386), type SockaddrDatalink struct, Family uint8 pkg syscall (openbsd-386), type SockaddrDatalink struct, Index uint16 pkg syscall (openbsd-386), type SockaddrDatalink struct, Len uint8 pkg syscall (openbsd-386), type SockaddrDatalink struct, Nlen uint8 pkg syscall (openbsd-386), type SockaddrDatalink struct, Slen uint8 pkg syscall (openbsd-386), type SockaddrDatalink struct, Type uint8 pkg syscall (openbsd-386), type SocketControlMessage struct pkg syscall (openbsd-386), type SocketControlMessage struct, Data []uint8 pkg syscall (openbsd-386), type SocketControlMessage struct, Header Cmsghdr pkg syscall (openbsd-386), type Stat_t struct pkg syscall (openbsd-386), type Stat_t struct, Atim Timespec pkg syscall (openbsd-386), type Stat_t struct, Blksize uint32 pkg syscall (openbsd-386), type Stat_t struct, Blocks int64 pkg syscall (openbsd-386), type Stat_t struct, Ctim Timespec pkg syscall (openbsd-386), type Stat_t struct, Dev int32 pkg syscall (openbsd-386), type Stat_t struct, Flags uint32 pkg syscall (openbsd-386), type Stat_t struct, Gen uint32 pkg syscall (openbsd-386), type Stat_t struct, Gid uint32 pkg syscall (openbsd-386), type Stat_t struct, Ino uint32 pkg syscall (openbsd-386), type Stat_t struct, Lspare0 int32 pkg syscall (openbsd-386), type Stat_t struct, Lspare1 int32 pkg syscall (openbsd-386), type Stat_t struct, Mode uint32 pkg syscall (openbsd-386), type Stat_t struct, Mtim Timespec pkg syscall (openbsd-386), type Stat_t struct, Nlink uint32 pkg syscall (openbsd-386), type Stat_t struct, Qspare [2]int64 pkg syscall (openbsd-386), type Stat_t struct, Rdev int32 pkg syscall (openbsd-386), type Stat_t struct, Size int64 pkg syscall (openbsd-386), type Stat_t struct, Uid uint32 pkg syscall (openbsd-386), type Stat_t struct, X__st_birthtim Timespec pkg syscall (openbsd-386), type Statfs_t struct pkg syscall (openbsd-386), type Statfs_t struct, F_asyncreads uint64 pkg syscall (openbsd-386), type Statfs_t struct, F_asyncwrites uint64 pkg syscall (openbsd-386), type Statfs_t struct, F_bavail int64 pkg syscall (openbsd-386), type Statfs_t struct, F_bfree uint64 pkg syscall (openbsd-386), type Statfs_t struct, F_blocks uint64 pkg syscall (openbsd-386), type Statfs_t struct, F_bsize uint32 pkg syscall (openbsd-386), type Statfs_t struct, F_ctime uint32 pkg syscall (openbsd-386), type Statfs_t struct, F_favail int64 pkg syscall (openbsd-386), type Statfs_t struct, F_ffree uint64 pkg syscall (openbsd-386), type Statfs_t struct, F_files uint64 pkg syscall (openbsd-386), type Statfs_t struct, F_flags uint32 pkg syscall (openbsd-386), type Statfs_t struct, F_fsid Fsid pkg syscall (openbsd-386), type Statfs_t struct, F_fstypename [16]int8 pkg syscall (openbsd-386), type Statfs_t struct, F_iosize uint32 pkg syscall (openbsd-386), type Statfs_t struct, F_mntfromname [90]int8 pkg syscall (openbsd-386), type Statfs_t struct, F_mntonname [90]int8 pkg syscall (openbsd-386), type Statfs_t struct, F_namemax uint32 pkg syscall (openbsd-386), type Statfs_t struct, F_owner uint32 pkg syscall (openbsd-386), type Statfs_t struct, F_spare [3]uint32 pkg syscall (openbsd-386), type Statfs_t struct, F_syncreads uint64 pkg syscall (openbsd-386), type Statfs_t struct, F_syncwrites uint64 pkg syscall (openbsd-386), type Statfs_t struct, Mount_info [160]uint8 pkg syscall (openbsd-386), type SysProcAttr struct, Chroot string pkg syscall (openbsd-386), type SysProcAttr struct, Credential *Credential pkg syscall (openbsd-386), type SysProcAttr struct, Noctty bool pkg syscall (openbsd-386), type SysProcAttr struct, Ptrace bool pkg syscall (openbsd-386), type SysProcAttr struct, Setctty bool pkg syscall (openbsd-386), type SysProcAttr struct, Setpgid bool pkg syscall (openbsd-386), type SysProcAttr struct, Setsid bool pkg syscall (openbsd-386), type Timespec struct, Nsec int32 pkg syscall (openbsd-386), type Timespec struct, Sec int32 pkg syscall (openbsd-386), type Timeval struct, Sec int32 pkg syscall (openbsd-386), type Timeval struct, Usec int32 pkg syscall (openbsd-386), type WaitStatus uint32 pkg syscall (openbsd-386), var Stderr int pkg syscall (openbsd-386), var Stdin int pkg syscall (openbsd-386), var Stdout int pkg syscall (openbsd-386-cgo), const AF_APPLETALK ideal-int pkg syscall (openbsd-386-cgo), const AF_BLUETOOTH ideal-int pkg syscall (openbsd-386-cgo), const AF_CCITT ideal-int pkg syscall (openbsd-386-cgo), const AF_CHAOS ideal-int pkg syscall (openbsd-386-cgo), const AF_CNT ideal-int pkg syscall (openbsd-386-cgo), const AF_COIP ideal-int pkg syscall (openbsd-386-cgo), const AF_DATAKIT ideal-int pkg syscall (openbsd-386-cgo), const AF_DECnet ideal-int pkg syscall (openbsd-386-cgo), const AF_DLI ideal-int pkg syscall (openbsd-386-cgo), const AF_E164 ideal-int pkg syscall (openbsd-386-cgo), const AF_ECMA ideal-int pkg syscall (openbsd-386-cgo), const AF_ENCAP ideal-int pkg syscall (openbsd-386-cgo), const AF_HYLINK ideal-int pkg syscall (openbsd-386-cgo), const AF_IMPLINK ideal-int pkg syscall (openbsd-386-cgo), const AF_IPX ideal-int pkg syscall (openbsd-386-cgo), const AF_ISDN ideal-int pkg syscall (openbsd-386-cgo), const AF_ISO ideal-int pkg syscall (openbsd-386-cgo), const AF_KEY ideal-int pkg syscall (openbsd-386-cgo), const AF_LAT ideal-int pkg syscall (openbsd-386-cgo), const AF_LINK ideal-int pkg syscall (openbsd-386-cgo), const AF_LOCAL ideal-int pkg syscall (openbsd-386-cgo), const AF_MAX ideal-int pkg syscall (openbsd-386-cgo), const AF_MPLS ideal-int pkg syscall (openbsd-386-cgo), const AF_NATM ideal-int pkg syscall (openbsd-386-cgo), const AF_NS ideal-int pkg syscall (openbsd-386-cgo), const AF_OSI ideal-int pkg syscall (openbsd-386-cgo), const AF_PUP ideal-int pkg syscall (openbsd-386-cgo), const AF_ROUTE ideal-int pkg syscall (openbsd-386-cgo), const AF_SIP ideal-int pkg syscall (openbsd-386-cgo), const AF_SNA ideal-int pkg syscall (openbsd-386-cgo), const ARPHRD_ETHER ideal-int pkg syscall (openbsd-386-cgo), const ARPHRD_FRELAY ideal-int pkg syscall (openbsd-386-cgo), const ARPHRD_IEEE1394 ideal-int pkg syscall (openbsd-386-cgo), const ARPHRD_IEEE802 ideal-int pkg syscall (openbsd-386-cgo), const B0 ideal-int pkg syscall (openbsd-386-cgo), const B110 ideal-int pkg syscall (openbsd-386-cgo), const B115200 ideal-int pkg syscall (openbsd-386-cgo), const B1200 ideal-int pkg syscall (openbsd-386-cgo), const B134 ideal-int pkg syscall (openbsd-386-cgo), const B14400 ideal-int pkg syscall (openbsd-386-cgo), const B150 ideal-int pkg syscall (openbsd-386-cgo), const B1800 ideal-int pkg syscall (openbsd-386-cgo), const B19200 ideal-int pkg syscall (openbsd-386-cgo), const B200 ideal-int pkg syscall (openbsd-386-cgo), const B230400 ideal-int pkg syscall (openbsd-386-cgo), const B2400 ideal-int pkg syscall (openbsd-386-cgo), const B28800 ideal-int pkg syscall (openbsd-386-cgo), const B300 ideal-int pkg syscall (openbsd-386-cgo), const B38400 ideal-int pkg syscall (openbsd-386-cgo), const B4800 ideal-int pkg syscall (openbsd-386-cgo), const B50 ideal-int pkg syscall (openbsd-386-cgo), const B57600 ideal-int pkg syscall (openbsd-386-cgo), const B600 ideal-int pkg syscall (openbsd-386-cgo), const B7200 ideal-int pkg syscall (openbsd-386-cgo), const B75 ideal-int pkg syscall (openbsd-386-cgo), const B76800 ideal-int pkg syscall (openbsd-386-cgo), const B9600 ideal-int pkg syscall (openbsd-386-cgo), const BIOCFLUSH ideal-int pkg syscall (openbsd-386-cgo), const BIOCGBLEN ideal-int pkg syscall (openbsd-386-cgo), const BIOCGDIRFILT ideal-int pkg syscall (openbsd-386-cgo), const BIOCGDLT ideal-int pkg syscall (openbsd-386-cgo), const BIOCGDLTLIST ideal-int pkg syscall (openbsd-386-cgo), const BIOCGETIF ideal-int pkg syscall (openbsd-386-cgo), const BIOCGFILDROP ideal-int pkg syscall (openbsd-386-cgo), const BIOCGHDRCMPLT ideal-int pkg syscall (openbsd-386-cgo), const BIOCGRSIG ideal-int pkg syscall (openbsd-386-cgo), const BIOCGRTIMEOUT ideal-int pkg syscall (openbsd-386-cgo), const BIOCGSTATS ideal-int pkg syscall (openbsd-386-cgo), const BIOCIMMEDIATE ideal-int pkg syscall (openbsd-386-cgo), const BIOCLOCK ideal-int pkg syscall (openbsd-386-cgo), const BIOCPROMISC ideal-int pkg syscall (openbsd-386-cgo), const BIOCSBLEN ideal-int pkg syscall (openbsd-386-cgo), const BIOCSDIRFILT ideal-int pkg syscall (openbsd-386-cgo), const BIOCSDLT ideal-int pkg syscall (openbsd-386-cgo), const BIOCSETF ideal-int pkg syscall (openbsd-386-cgo), const BIOCSETIF ideal-int pkg syscall (openbsd-386-cgo), const BIOCSETWF ideal-int pkg syscall (openbsd-386-cgo), const BIOCSFILDROP ideal-int pkg syscall (openbsd-386-cgo), const BIOCSHDRCMPLT ideal-int pkg syscall (openbsd-386-cgo), const BIOCSRSIG ideal-int pkg syscall (openbsd-386-cgo), const BIOCSRTIMEOUT ideal-int pkg syscall (openbsd-386-cgo), const BIOCVERSION ideal-int pkg syscall (openbsd-386-cgo), const BPF_A ideal-int pkg syscall (openbsd-386-cgo), const BPF_ABS ideal-int pkg syscall (openbsd-386-cgo), const BPF_ADD ideal-int pkg syscall (openbsd-386-cgo), const BPF_ALIGNMENT ideal-int pkg syscall (openbsd-386-cgo), const BPF_ALU ideal-int pkg syscall (openbsd-386-cgo), const BPF_AND ideal-int pkg syscall (openbsd-386-cgo), const BPF_B ideal-int pkg syscall (openbsd-386-cgo), const BPF_DIRECTION_IN ideal-int pkg syscall (openbsd-386-cgo), const BPF_DIRECTION_OUT ideal-int pkg syscall (openbsd-386-cgo), const BPF_DIV ideal-int pkg syscall (openbsd-386-cgo), const BPF_H ideal-int pkg syscall (openbsd-386-cgo), const BPF_IMM ideal-int pkg syscall (openbsd-386-cgo), const BPF_IND ideal-int pkg syscall (openbsd-386-cgo), const BPF_JA ideal-int pkg syscall (openbsd-386-cgo), const BPF_JEQ ideal-int pkg syscall (openbsd-386-cgo), const BPF_JGE ideal-int pkg syscall (openbsd-386-cgo), const BPF_JGT ideal-int pkg syscall (openbsd-386-cgo), const BPF_JMP ideal-int pkg syscall (openbsd-386-cgo), const BPF_JSET ideal-int pkg syscall (openbsd-386-cgo), const BPF_K ideal-int pkg syscall (openbsd-386-cgo), const BPF_LD ideal-int pkg syscall (openbsd-386-cgo), const BPF_LDX ideal-int pkg syscall (openbsd-386-cgo), const BPF_LEN ideal-int pkg syscall (openbsd-386-cgo), const BPF_LSH ideal-int pkg syscall (openbsd-386-cgo), const BPF_MAJOR_VERSION ideal-int pkg syscall (openbsd-386-cgo), const BPF_MAXBUFSIZE ideal-int pkg syscall (openbsd-386-cgo), const BPF_MAXINSNS ideal-int pkg syscall (openbsd-386-cgo), const BPF_MEM ideal-int pkg syscall (openbsd-386-cgo), const BPF_MEMWORDS ideal-int pkg syscall (openbsd-386-cgo), const BPF_MINBUFSIZE ideal-int pkg syscall (openbsd-386-cgo), const BPF_MINOR_VERSION ideal-int pkg syscall (openbsd-386-cgo), const BPF_MISC ideal-int pkg syscall (openbsd-386-cgo), const BPF_MSH ideal-int pkg syscall (openbsd-386-cgo), const BPF_MUL ideal-int pkg syscall (openbsd-386-cgo), const BPF_NEG ideal-int pkg syscall (openbsd-386-cgo), const BPF_OR ideal-int pkg syscall (openbsd-386-cgo), const BPF_RELEASE ideal-int pkg syscall (openbsd-386-cgo), const BPF_RET ideal-int pkg syscall (openbsd-386-cgo), const BPF_RSH ideal-int pkg syscall (openbsd-386-cgo), const BPF_ST ideal-int pkg syscall (openbsd-386-cgo), const BPF_STX ideal-int pkg syscall (openbsd-386-cgo), const BPF_SUB ideal-int pkg syscall (openbsd-386-cgo), const BPF_TAX ideal-int pkg syscall (openbsd-386-cgo), const BPF_TXA ideal-int pkg syscall (openbsd-386-cgo), const BPF_W ideal-int pkg syscall (openbsd-386-cgo), const BPF_X ideal-int pkg syscall (openbsd-386-cgo), const BRKINT ideal-int pkg syscall (openbsd-386-cgo), const CFLUSH ideal-int pkg syscall (openbsd-386-cgo), const CLOCAL ideal-int pkg syscall (openbsd-386-cgo), const CREAD ideal-int pkg syscall (openbsd-386-cgo), const CS5 ideal-int pkg syscall (openbsd-386-cgo), const CS6 ideal-int pkg syscall (openbsd-386-cgo), const CS7 ideal-int pkg syscall (openbsd-386-cgo), const CS8 ideal-int pkg syscall (openbsd-386-cgo), const CSIZE ideal-int pkg syscall (openbsd-386-cgo), const CSTART ideal-int pkg syscall (openbsd-386-cgo), const CSTATUS ideal-int pkg syscall (openbsd-386-cgo), const CSTOP ideal-int pkg syscall (openbsd-386-cgo), const CSTOPB ideal-int pkg syscall (openbsd-386-cgo), const CSUSP ideal-int pkg syscall (openbsd-386-cgo), const CTL_MAXNAME ideal-int pkg syscall (openbsd-386-cgo), const CTL_NET ideal-int pkg syscall (openbsd-386-cgo), const DIOCOSFPFLUSH ideal-int pkg syscall (openbsd-386-cgo), const DLT_ARCNET ideal-int pkg syscall (openbsd-386-cgo), const DLT_ATM_RFC1483 ideal-int pkg syscall (openbsd-386-cgo), const DLT_AX25 ideal-int pkg syscall (openbsd-386-cgo), const DLT_CHAOS ideal-int pkg syscall (openbsd-386-cgo), const DLT_C_HDLC ideal-int pkg syscall (openbsd-386-cgo), const DLT_EN10MB ideal-int pkg syscall (openbsd-386-cgo), const DLT_EN3MB ideal-int pkg syscall (openbsd-386-cgo), const DLT_ENC ideal-int pkg syscall (openbsd-386-cgo), const DLT_FDDI ideal-int pkg syscall (openbsd-386-cgo), const DLT_IEEE802 ideal-int pkg syscall (openbsd-386-cgo), const DLT_IEEE802_11 ideal-int pkg syscall (openbsd-386-cgo), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (openbsd-386-cgo), const DLT_LOOP ideal-int pkg syscall (openbsd-386-cgo), const DLT_MPLS ideal-int pkg syscall (openbsd-386-cgo), const DLT_NULL ideal-int pkg syscall (openbsd-386-cgo), const DLT_PFLOG ideal-int pkg syscall (openbsd-386-cgo), const DLT_PFSYNC ideal-int pkg syscall (openbsd-386-cgo), const DLT_PPP ideal-int pkg syscall (openbsd-386-cgo), const DLT_PPP_BSDOS ideal-int pkg syscall (openbsd-386-cgo), const DLT_PPP_ETHER ideal-int pkg syscall (openbsd-386-cgo), const DLT_PPP_SERIAL ideal-int pkg syscall (openbsd-386-cgo), const DLT_PRONET ideal-int pkg syscall (openbsd-386-cgo), const DLT_RAW ideal-int pkg syscall (openbsd-386-cgo), const DLT_SLIP ideal-int pkg syscall (openbsd-386-cgo), const DLT_SLIP_BSDOS ideal-int pkg syscall (openbsd-386-cgo), const DT_BLK ideal-int pkg syscall (openbsd-386-cgo), const DT_CHR ideal-int pkg syscall (openbsd-386-cgo), const DT_DIR ideal-int pkg syscall (openbsd-386-cgo), const DT_FIFO ideal-int pkg syscall (openbsd-386-cgo), const DT_LNK ideal-int pkg syscall (openbsd-386-cgo), const DT_REG ideal-int pkg syscall (openbsd-386-cgo), const DT_SOCK ideal-int pkg syscall (openbsd-386-cgo), const DT_UNKNOWN ideal-int pkg syscall (openbsd-386-cgo), const EAUTH Errno pkg syscall (openbsd-386-cgo), const EBADRPC Errno pkg syscall (openbsd-386-cgo), const ECHO ideal-int pkg syscall (openbsd-386-cgo), const ECHOCTL ideal-int pkg syscall (openbsd-386-cgo), const ECHOE ideal-int pkg syscall (openbsd-386-cgo), const ECHOK ideal-int pkg syscall (openbsd-386-cgo), const ECHOKE ideal-int pkg syscall (openbsd-386-cgo), const ECHONL ideal-int pkg syscall (openbsd-386-cgo), const ECHOPRT ideal-int pkg syscall (openbsd-386-cgo), const EFTYPE Errno pkg syscall (openbsd-386-cgo), const EIPSEC Errno pkg syscall (openbsd-386-cgo), const ELAST Errno pkg syscall (openbsd-386-cgo), const EMEDIUMTYPE Errno pkg syscall (openbsd-386-cgo), const EMT_TAGOVF ideal-int pkg syscall (openbsd-386-cgo), const EMUL_ENABLED ideal-int pkg syscall (openbsd-386-cgo), const EMUL_NATIVE ideal-int pkg syscall (openbsd-386-cgo), const ENDRUNDISC ideal-int pkg syscall (openbsd-386-cgo), const ENEEDAUTH Errno pkg syscall (openbsd-386-cgo), const ENOATTR Errno pkg syscall (openbsd-386-cgo), const ENOMEDIUM Errno pkg syscall (openbsd-386-cgo), const EPROCLIM Errno pkg syscall (openbsd-386-cgo), const EPROCUNAVAIL Errno pkg syscall (openbsd-386-cgo), const EPROGMISMATCH Errno pkg syscall (openbsd-386-cgo), const EPROGUNAVAIL Errno pkg syscall (openbsd-386-cgo), const ERPCMISMATCH Errno pkg syscall (openbsd-386-cgo), const ETHERMIN ideal-int pkg syscall (openbsd-386-cgo), const ETHERMTU ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_8023 ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_AARP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_ACCTON ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_AEONIC ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_ALPHA ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_AMBER ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_AMOEBA ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_AOE ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_APOLLO ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_APOLLODOMAIN ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_APPLETALK ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_APPLITEK ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_ARGONAUT ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_ARP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_AT ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_ATALK ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_ATOMIC ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_ATT ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_ATTSTANFORD ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_AUTOPHON ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_AXIS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_BCLOOP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_BOFL ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_CABLETRON ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_CHAOS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_COMDESIGN ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_COMPUGRAPHIC ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_COUNTERPOINT ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_CRONUS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_CRONUSVLN ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DCA ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DDE ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DEBNI ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECAM ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECCUST ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECDIAG ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECDNS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECDTS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECEXPER ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECLAST ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECLTM ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECMUMPS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DECNETBIOS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DELTACON ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DIDDLE ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DLOG1 ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DLOG2 ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DN ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DOGFIGHT ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_DSMD ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_ECMA ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_ENCRYPT ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_ES ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_EXCELAN ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_EXPERDATA ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_FLIP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_FLOWCONTROL ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_FRARP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_GENDYN ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_HAYES ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_HIPPI_FP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_HITACHI ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_HP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_IEEEPUP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_IEEEPUPAT ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_IMLBL ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_IMLBLDIAG ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_IP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_IPAS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_IPV6 ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_IPX ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_IPXNEW ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_KALPANA ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_LANBRIDGE ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_LANPROBE ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_LAT ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_LBACK ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_LITTLE ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_LLDP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_LOGICRAFT ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_LOOPBACK ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_MATRA ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_MAX ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_MERIT ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_MICP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_MOPDL ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_MOPRC ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_MOTOROLA ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_MPLS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_MPLS_MCAST ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_MUMPS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPCC ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPCLAIM ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPCLREQ ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPCLRSP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPCREQ ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPCRSP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPDG ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPDGB ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPDLTE ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPRAR ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPRAS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPRST ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPSCD ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBPVCD ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NBS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NCD ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NESTAR ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NETBEUI ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NOVELL ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NSAT ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NSCOMPAT ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_NTRAILER ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_OS9 ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_OS9NET ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_PACER ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_PAE ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_PCS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_PLANNING ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_PPP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_PPPOE ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_PPPOEDISC ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_PRIMENTS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_PUP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_PUPAT ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_QINQ ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_RACAL ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_RATIONAL ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_RAWFR ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_RCL ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_RDP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_RETIX ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_REVARP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SCA ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SECTRA ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SECUREDATA ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SGITW ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SG_BOUNCE ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SG_DIAG ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SG_NETGAMES ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SG_RESV ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SIMNET ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SLOW ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SNA ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SNMP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SONIX ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SPIDER ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_SPRITE ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_STP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_TALARIS ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_TALARISMC ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_TCPCOMP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_TCPSM ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_TEC ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_TIGAN ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_TRAIL ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_TRANSETHER ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_TYMSHARE ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_UBBST ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_UBDEBUG ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_UBDIAGLOOP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_UBDL ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_UBNIU ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_UBNMC ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_VALID ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_VARIAN ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_VAXELN ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_VEECO ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_VEXP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_VGLAB ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_VINES ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_VINESECHO ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_VINESLOOP ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_VITAL ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_VLAN ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_VLTLMAN ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_VPROD ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_VURESERVED ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_WATERLOO ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_WELLFLEET ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_X25 ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_X75 ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_XNSSM ideal-int pkg syscall (openbsd-386-cgo), const ETHERTYPE_XTP ideal-int pkg syscall (openbsd-386-cgo), const ETHER_ADDR_LEN ideal-int pkg syscall (openbsd-386-cgo), const ETHER_ALIGN ideal-int pkg syscall (openbsd-386-cgo), const ETHER_CRC_LEN ideal-int pkg syscall (openbsd-386-cgo), const ETHER_CRC_POLY_BE ideal-int pkg syscall (openbsd-386-cgo), const ETHER_CRC_POLY_LE ideal-int pkg syscall (openbsd-386-cgo), const ETHER_HDR_LEN ideal-int pkg syscall (openbsd-386-cgo), const ETHER_MAX_DIX_LEN ideal-int pkg syscall (openbsd-386-cgo), const ETHER_MAX_LEN ideal-int pkg syscall (openbsd-386-cgo), const ETHER_MIN_LEN ideal-int pkg syscall (openbsd-386-cgo), const ETHER_TYPE_LEN ideal-int pkg syscall (openbsd-386-cgo), const ETHER_VLAN_ENCAP_LEN ideal-int pkg syscall (openbsd-386-cgo), const EVFILT_AIO ideal-int pkg syscall (openbsd-386-cgo), const EVFILT_PROC ideal-int pkg syscall (openbsd-386-cgo), const EVFILT_READ ideal-int pkg syscall (openbsd-386-cgo), const EVFILT_SIGNAL ideal-int pkg syscall (openbsd-386-cgo), const EVFILT_SYSCOUNT ideal-int pkg syscall (openbsd-386-cgo), const EVFILT_TIMER ideal-int pkg syscall (openbsd-386-cgo), const EVFILT_VNODE ideal-int pkg syscall (openbsd-386-cgo), const EVFILT_WRITE ideal-int pkg syscall (openbsd-386-cgo), const EV_ADD ideal-int pkg syscall (openbsd-386-cgo), const EV_CLEAR ideal-int pkg syscall (openbsd-386-cgo), const EV_DELETE ideal-int pkg syscall (openbsd-386-cgo), const EV_DISABLE ideal-int pkg syscall (openbsd-386-cgo), const EV_ENABLE ideal-int pkg syscall (openbsd-386-cgo), const EV_EOF ideal-int pkg syscall (openbsd-386-cgo), const EV_ERROR ideal-int pkg syscall (openbsd-386-cgo), const EV_FLAG1 ideal-int pkg syscall (openbsd-386-cgo), const EV_ONESHOT ideal-int pkg syscall (openbsd-386-cgo), const EV_SYSFLAGS ideal-int pkg syscall (openbsd-386-cgo), const EXTA ideal-int pkg syscall (openbsd-386-cgo), const EXTB ideal-int pkg syscall (openbsd-386-cgo), const EXTPROC ideal-int pkg syscall (openbsd-386-cgo), const FD_CLOEXEC ideal-int pkg syscall (openbsd-386-cgo), const FD_SETSIZE ideal-int pkg syscall (openbsd-386-cgo), const FLUSHO ideal-int pkg syscall (openbsd-386-cgo), const F_DUPFD ideal-int pkg syscall (openbsd-386-cgo), const F_DUPFD_CLOEXEC ideal-int pkg syscall (openbsd-386-cgo), const F_GETFD ideal-int pkg syscall (openbsd-386-cgo), const F_GETFL ideal-int pkg syscall (openbsd-386-cgo), const F_GETLK ideal-int pkg syscall (openbsd-386-cgo), const F_GETOWN ideal-int pkg syscall (openbsd-386-cgo), const F_OK ideal-int pkg syscall (openbsd-386-cgo), const F_RDLCK ideal-int pkg syscall (openbsd-386-cgo), const F_SETFD ideal-int pkg syscall (openbsd-386-cgo), const F_SETFL ideal-int pkg syscall (openbsd-386-cgo), const F_SETLK ideal-int pkg syscall (openbsd-386-cgo), const F_SETLKW ideal-int pkg syscall (openbsd-386-cgo), const F_SETOWN ideal-int pkg syscall (openbsd-386-cgo), const F_UNLCK ideal-int pkg syscall (openbsd-386-cgo), const F_WRLCK ideal-int pkg syscall (openbsd-386-cgo), const HUPCL ideal-int pkg syscall (openbsd-386-cgo), const ICANON ideal-int pkg syscall (openbsd-386-cgo), const ICMP6_FILTER = 18 pkg syscall (openbsd-386-cgo), const ICMP6_FILTER ideal-int pkg syscall (openbsd-386-cgo), const ICRNL ideal-int pkg syscall (openbsd-386-cgo), const IEXTEN ideal-int pkg syscall (openbsd-386-cgo), const IFAN_ARRIVAL ideal-int pkg syscall (openbsd-386-cgo), const IFAN_DEPARTURE ideal-int pkg syscall (openbsd-386-cgo), const IFA_ROUTE ideal-int pkg syscall (openbsd-386-cgo), const IFF_ALLMULTI ideal-int pkg syscall (openbsd-386-cgo), const IFF_CANTCHANGE ideal-int pkg syscall (openbsd-386-cgo), const IFF_DEBUG ideal-int pkg syscall (openbsd-386-cgo), const IFF_LINK0 ideal-int pkg syscall (openbsd-386-cgo), const IFF_LINK1 ideal-int pkg syscall (openbsd-386-cgo), const IFF_LINK2 ideal-int pkg syscall (openbsd-386-cgo), const IFF_NOARP ideal-int pkg syscall (openbsd-386-cgo), const IFF_NOTRAILERS ideal-int pkg syscall (openbsd-386-cgo), const IFF_OACTIVE ideal-int pkg syscall (openbsd-386-cgo), const IFF_POINTOPOINT ideal-int pkg syscall (openbsd-386-cgo), const IFF_PROMISC ideal-int pkg syscall (openbsd-386-cgo), const IFF_RUNNING ideal-int pkg syscall (openbsd-386-cgo), const IFF_SIMPLEX ideal-int pkg syscall (openbsd-386-cgo), const IFNAMSIZ ideal-int pkg syscall (openbsd-386-cgo), const IFT_1822 ideal-int pkg syscall (openbsd-386-cgo), const IFT_A12MPPSWITCH ideal-int pkg syscall (openbsd-386-cgo), const IFT_AAL2 ideal-int pkg syscall (openbsd-386-cgo), const IFT_AAL5 ideal-int pkg syscall (openbsd-386-cgo), const IFT_ADSL ideal-int pkg syscall (openbsd-386-cgo), const IFT_AFLANE8023 ideal-int pkg syscall (openbsd-386-cgo), const IFT_AFLANE8025 ideal-int pkg syscall (openbsd-386-cgo), const IFT_ARAP ideal-int pkg syscall (openbsd-386-cgo), const IFT_ARCNET ideal-int pkg syscall (openbsd-386-cgo), const IFT_ARCNETPLUS ideal-int pkg syscall (openbsd-386-cgo), const IFT_ASYNC ideal-int pkg syscall (openbsd-386-cgo), const IFT_ATM ideal-int pkg syscall (openbsd-386-cgo), const IFT_ATMDXI ideal-int pkg syscall (openbsd-386-cgo), const IFT_ATMFUNI ideal-int pkg syscall (openbsd-386-cgo), const IFT_ATMIMA ideal-int pkg syscall (openbsd-386-cgo), const IFT_ATMLOGICAL ideal-int pkg syscall (openbsd-386-cgo), const IFT_ATMRADIO ideal-int pkg syscall (openbsd-386-cgo), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (openbsd-386-cgo), const IFT_ATMVCIENDPT ideal-int pkg syscall (openbsd-386-cgo), const IFT_ATMVIRTUAL ideal-int pkg syscall (openbsd-386-cgo), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (openbsd-386-cgo), const IFT_BLUETOOTH ideal-int pkg syscall (openbsd-386-cgo), const IFT_BRIDGE ideal-int pkg syscall (openbsd-386-cgo), const IFT_BSC ideal-int pkg syscall (openbsd-386-cgo), const IFT_CARP ideal-int pkg syscall (openbsd-386-cgo), const IFT_CCTEMUL ideal-int pkg syscall (openbsd-386-cgo), const IFT_CEPT ideal-int pkg syscall (openbsd-386-cgo), const IFT_CES ideal-int pkg syscall (openbsd-386-cgo), const IFT_CHANNEL ideal-int pkg syscall (openbsd-386-cgo), const IFT_CNR ideal-int pkg syscall (openbsd-386-cgo), const IFT_COFFEE ideal-int pkg syscall (openbsd-386-cgo), const IFT_COMPOSITELINK ideal-int pkg syscall (openbsd-386-cgo), const IFT_DCN ideal-int pkg syscall (openbsd-386-cgo), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (openbsd-386-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (openbsd-386-cgo), const IFT_DLSW ideal-int pkg syscall (openbsd-386-cgo), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (openbsd-386-cgo), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (openbsd-386-cgo), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (openbsd-386-cgo), const IFT_DOCSCABLEUPSTREAMCHANNEL ideal-int pkg syscall (openbsd-386-cgo), const IFT_DS0 ideal-int pkg syscall (openbsd-386-cgo), const IFT_DS0BUNDLE ideal-int pkg syscall (openbsd-386-cgo), const IFT_DS1FDL ideal-int pkg syscall (openbsd-386-cgo), const IFT_DS3 ideal-int pkg syscall (openbsd-386-cgo), const IFT_DTM ideal-int pkg syscall (openbsd-386-cgo), const IFT_DUMMY ideal-int pkg syscall (openbsd-386-cgo), const IFT_DVBASILN ideal-int pkg syscall (openbsd-386-cgo), const IFT_DVBASIOUT ideal-int pkg syscall (openbsd-386-cgo), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (openbsd-386-cgo), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (openbsd-386-cgo), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (openbsd-386-cgo), const IFT_ECONET ideal-int pkg syscall (openbsd-386-cgo), const IFT_ENC ideal-int pkg syscall (openbsd-386-cgo), const IFT_EON ideal-int pkg syscall (openbsd-386-cgo), const IFT_EPLRS ideal-int pkg syscall (openbsd-386-cgo), const IFT_ESCON ideal-int pkg syscall (openbsd-386-cgo), const IFT_ETHER ideal-int pkg syscall (openbsd-386-cgo), const IFT_FAITH ideal-int pkg syscall (openbsd-386-cgo), const IFT_FAST ideal-int pkg syscall (openbsd-386-cgo), const IFT_FASTETHER ideal-int pkg syscall (openbsd-386-cgo), const IFT_FASTETHERFX ideal-int pkg syscall (openbsd-386-cgo), const IFT_FDDI ideal-int pkg syscall (openbsd-386-cgo), const IFT_FIBRECHANNEL ideal-int pkg syscall (openbsd-386-cgo), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (openbsd-386-cgo), const IFT_FRAMERELAYMPI ideal-int pkg syscall (openbsd-386-cgo), const IFT_FRDLCIENDPT ideal-int pkg syscall (openbsd-386-cgo), const IFT_FRELAY ideal-int pkg syscall (openbsd-386-cgo), const IFT_FRELAYDCE ideal-int pkg syscall (openbsd-386-cgo), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (openbsd-386-cgo), const IFT_FRFORWARD ideal-int pkg syscall (openbsd-386-cgo), const IFT_G703AT2MB ideal-int pkg syscall (openbsd-386-cgo), const IFT_G703AT64K ideal-int pkg syscall (openbsd-386-cgo), const IFT_GIF ideal-int pkg syscall (openbsd-386-cgo), const IFT_GIGABITETHERNET ideal-int pkg syscall (openbsd-386-cgo), const IFT_GR303IDT ideal-int pkg syscall (openbsd-386-cgo), const IFT_GR303RDT ideal-int pkg syscall (openbsd-386-cgo), const IFT_H323GATEKEEPER ideal-int pkg syscall (openbsd-386-cgo), const IFT_H323PROXY ideal-int pkg syscall (openbsd-386-cgo), const IFT_HDH1822 ideal-int pkg syscall (openbsd-386-cgo), const IFT_HDLC ideal-int pkg syscall (openbsd-386-cgo), const IFT_HDSL2 ideal-int pkg syscall (openbsd-386-cgo), const IFT_HIPERLAN2 ideal-int pkg syscall (openbsd-386-cgo), const IFT_HIPPI ideal-int pkg syscall (openbsd-386-cgo), const IFT_HIPPIINTERFACE ideal-int pkg syscall (openbsd-386-cgo), const IFT_HOSTPAD ideal-int pkg syscall (openbsd-386-cgo), const IFT_HSSI ideal-int pkg syscall (openbsd-386-cgo), const IFT_HY ideal-int pkg syscall (openbsd-386-cgo), const IFT_IBM370PARCHAN ideal-int pkg syscall (openbsd-386-cgo), const IFT_IDSL ideal-int pkg syscall (openbsd-386-cgo), const IFT_IEEE1394 ideal-int pkg syscall (openbsd-386-cgo), const IFT_IEEE80211 ideal-int pkg syscall (openbsd-386-cgo), const IFT_IEEE80212 ideal-int pkg syscall (openbsd-386-cgo), const IFT_IEEE8023ADLAG ideal-int pkg syscall (openbsd-386-cgo), const IFT_IFGSN ideal-int pkg syscall (openbsd-386-cgo), const IFT_IMT ideal-int pkg syscall (openbsd-386-cgo), const IFT_INFINIBAND ideal-int pkg syscall (openbsd-386-cgo), const IFT_INTERLEAVE ideal-int pkg syscall (openbsd-386-cgo), const IFT_IP ideal-int pkg syscall (openbsd-386-cgo), const IFT_IPFORWARD ideal-int pkg syscall (openbsd-386-cgo), const IFT_IPOVERATM ideal-int pkg syscall (openbsd-386-cgo), const IFT_IPOVERCDLC ideal-int pkg syscall (openbsd-386-cgo), const IFT_IPOVERCLAW ideal-int pkg syscall (openbsd-386-cgo), const IFT_IPSWITCH ideal-int pkg syscall (openbsd-386-cgo), const IFT_ISDN ideal-int pkg syscall (openbsd-386-cgo), const IFT_ISDNBASIC ideal-int pkg syscall (openbsd-386-cgo), const IFT_ISDNPRIMARY ideal-int pkg syscall (openbsd-386-cgo), const IFT_ISDNS ideal-int pkg syscall (openbsd-386-cgo), const IFT_ISDNU ideal-int pkg syscall (openbsd-386-cgo), const IFT_ISO88022LLC ideal-int pkg syscall (openbsd-386-cgo), const IFT_ISO88023 ideal-int pkg syscall (openbsd-386-cgo), const IFT_ISO88024 ideal-int pkg syscall (openbsd-386-cgo), const IFT_ISO88025 ideal-int pkg syscall (openbsd-386-cgo), const IFT_ISO88025CRFPINT ideal-int pkg syscall (openbsd-386-cgo), const IFT_ISO88025DTR ideal-int pkg syscall (openbsd-386-cgo), const IFT_ISO88025FIBER ideal-int pkg syscall (openbsd-386-cgo), const IFT_ISO88026 ideal-int pkg syscall (openbsd-386-cgo), const IFT_ISUP ideal-int pkg syscall (openbsd-386-cgo), const IFT_L2VLAN ideal-int pkg syscall (openbsd-386-cgo), const IFT_L3IPVLAN ideal-int pkg syscall (openbsd-386-cgo), const IFT_L3IPXVLAN ideal-int pkg syscall (openbsd-386-cgo), const IFT_LAPB ideal-int pkg syscall (openbsd-386-cgo), const IFT_LAPD ideal-int pkg syscall (openbsd-386-cgo), const IFT_LAPF ideal-int pkg syscall (openbsd-386-cgo), const IFT_LINEGROUP ideal-int pkg syscall (openbsd-386-cgo), const IFT_LOCALTALK ideal-int pkg syscall (openbsd-386-cgo), const IFT_LOOP ideal-int pkg syscall (openbsd-386-cgo), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (openbsd-386-cgo), const IFT_MFSIGLINK ideal-int pkg syscall (openbsd-386-cgo), const IFT_MIOX25 ideal-int pkg syscall (openbsd-386-cgo), const IFT_MODEM ideal-int pkg syscall (openbsd-386-cgo), const IFT_MPC ideal-int pkg syscall (openbsd-386-cgo), const IFT_MPLS ideal-int pkg syscall (openbsd-386-cgo), const IFT_MPLSTUNNEL ideal-int pkg syscall (openbsd-386-cgo), const IFT_MSDSL ideal-int pkg syscall (openbsd-386-cgo), const IFT_MVL ideal-int pkg syscall (openbsd-386-cgo), const IFT_MYRINET ideal-int pkg syscall (openbsd-386-cgo), const IFT_NFAS ideal-int pkg syscall (openbsd-386-cgo), const IFT_NSIP ideal-int pkg syscall (openbsd-386-cgo), const IFT_OPTICALCHANNEL ideal-int pkg syscall (openbsd-386-cgo), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (openbsd-386-cgo), const IFT_OTHER ideal-int pkg syscall (openbsd-386-cgo), const IFT_P10 ideal-int pkg syscall (openbsd-386-cgo), const IFT_P80 ideal-int pkg syscall (openbsd-386-cgo), const IFT_PARA ideal-int pkg syscall (openbsd-386-cgo), const IFT_PFLOG ideal-int pkg syscall (openbsd-386-cgo), const IFT_PFLOW ideal-int pkg syscall (openbsd-386-cgo), const IFT_PFSYNC ideal-int pkg syscall (openbsd-386-cgo), const IFT_PLC ideal-int pkg syscall (openbsd-386-cgo), const IFT_PON155 ideal-int pkg syscall (openbsd-386-cgo), const IFT_PON622 ideal-int pkg syscall (openbsd-386-cgo), const IFT_POS ideal-int pkg syscall (openbsd-386-cgo), const IFT_PPP ideal-int pkg syscall (openbsd-386-cgo), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (openbsd-386-cgo), const IFT_PROPATM ideal-int pkg syscall (openbsd-386-cgo), const IFT_PROPBWAP2MP ideal-int pkg syscall (openbsd-386-cgo), const IFT_PROPCNLS ideal-int pkg syscall (openbsd-386-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (openbsd-386-cgo), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (openbsd-386-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (openbsd-386-cgo), const IFT_PROPMUX ideal-int pkg syscall (openbsd-386-cgo), const IFT_PROPVIRTUAL ideal-int pkg syscall (openbsd-386-cgo), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (openbsd-386-cgo), const IFT_PTPSERIAL ideal-int pkg syscall (openbsd-386-cgo), const IFT_PVC ideal-int pkg syscall (openbsd-386-cgo), const IFT_Q2931 ideal-int pkg syscall (openbsd-386-cgo), const IFT_QLLC ideal-int pkg syscall (openbsd-386-cgo), const IFT_RADIOMAC ideal-int pkg syscall (openbsd-386-cgo), const IFT_RADSL ideal-int pkg syscall (openbsd-386-cgo), const IFT_REACHDSL ideal-int pkg syscall (openbsd-386-cgo), const IFT_RFC1483 ideal-int pkg syscall (openbsd-386-cgo), const IFT_RS232 ideal-int pkg syscall (openbsd-386-cgo), const IFT_RSRB ideal-int pkg syscall (openbsd-386-cgo), const IFT_SDLC ideal-int pkg syscall (openbsd-386-cgo), const IFT_SDSL ideal-int pkg syscall (openbsd-386-cgo), const IFT_SHDSL ideal-int pkg syscall (openbsd-386-cgo), const IFT_SIP ideal-int pkg syscall (openbsd-386-cgo), const IFT_SIPSIG ideal-int pkg syscall (openbsd-386-cgo), const IFT_SIPTG ideal-int pkg syscall (openbsd-386-cgo), const IFT_SLIP ideal-int pkg syscall (openbsd-386-cgo), const IFT_SMDSDXI ideal-int pkg syscall (openbsd-386-cgo), const IFT_SMDSICIP ideal-int pkg syscall (openbsd-386-cgo), const IFT_SONET ideal-int pkg syscall (openbsd-386-cgo), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (openbsd-386-cgo), const IFT_SONETPATH ideal-int pkg syscall (openbsd-386-cgo), const IFT_SONETVT ideal-int pkg syscall (openbsd-386-cgo), const IFT_SRP ideal-int pkg syscall (openbsd-386-cgo), const IFT_SS7SIGLINK ideal-int pkg syscall (openbsd-386-cgo), const IFT_STACKTOSTACK ideal-int pkg syscall (openbsd-386-cgo), const IFT_STARLAN ideal-int pkg syscall (openbsd-386-cgo), const IFT_T1 ideal-int pkg syscall (openbsd-386-cgo), const IFT_TDLC ideal-int pkg syscall (openbsd-386-cgo), const IFT_TELINK ideal-int pkg syscall (openbsd-386-cgo), const IFT_TERMPAD ideal-int pkg syscall (openbsd-386-cgo), const IFT_TR008 ideal-int pkg syscall (openbsd-386-cgo), const IFT_TRANSPHDLC ideal-int pkg syscall (openbsd-386-cgo), const IFT_TUNNEL ideal-int pkg syscall (openbsd-386-cgo), const IFT_ULTRA ideal-int pkg syscall (openbsd-386-cgo), const IFT_USB ideal-int pkg syscall (openbsd-386-cgo), const IFT_V11 ideal-int pkg syscall (openbsd-386-cgo), const IFT_V35 ideal-int pkg syscall (openbsd-386-cgo), const IFT_V36 ideal-int pkg syscall (openbsd-386-cgo), const IFT_V37 ideal-int pkg syscall (openbsd-386-cgo), const IFT_VDSL ideal-int pkg syscall (openbsd-386-cgo), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (openbsd-386-cgo), const IFT_VIRTUALTG ideal-int pkg syscall (openbsd-386-cgo), const IFT_VOICEDID ideal-int pkg syscall (openbsd-386-cgo), const IFT_VOICEEM ideal-int pkg syscall (openbsd-386-cgo), const IFT_VOICEEMFGD ideal-int pkg syscall (openbsd-386-cgo), const IFT_VOICEENCAP ideal-int pkg syscall (openbsd-386-cgo), const IFT_VOICEFGDEANA ideal-int pkg syscall (openbsd-386-cgo), const IFT_VOICEFXO ideal-int pkg syscall (openbsd-386-cgo), const IFT_VOICEFXS ideal-int pkg syscall (openbsd-386-cgo), const IFT_VOICEOVERATM ideal-int pkg syscall (openbsd-386-cgo), const IFT_VOICEOVERCABLE ideal-int pkg syscall (openbsd-386-cgo), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (openbsd-386-cgo), const IFT_VOICEOVERIP ideal-int pkg syscall (openbsd-386-cgo), const IFT_X213 ideal-int pkg syscall (openbsd-386-cgo), const IFT_X25 ideal-int pkg syscall (openbsd-386-cgo), const IFT_X25DDN ideal-int pkg syscall (openbsd-386-cgo), const IFT_X25HUNTGROUP ideal-int pkg syscall (openbsd-386-cgo), const IFT_X25MLP ideal-int pkg syscall (openbsd-386-cgo), const IFT_X25PLE ideal-int pkg syscall (openbsd-386-cgo), const IFT_XETHER ideal-int pkg syscall (openbsd-386-cgo), const IGNBRK ideal-int pkg syscall (openbsd-386-cgo), const IGNCR ideal-int pkg syscall (openbsd-386-cgo), const IGNPAR ideal-int pkg syscall (openbsd-386-cgo), const IMAXBEL ideal-int pkg syscall (openbsd-386-cgo), const INLCR ideal-int pkg syscall (openbsd-386-cgo), const INPCK ideal-int pkg syscall (openbsd-386-cgo), const IN_CLASSA_HOST ideal-int pkg syscall (openbsd-386-cgo), const IN_CLASSA_MAX ideal-int pkg syscall (openbsd-386-cgo), const IN_CLASSA_NET ideal-int pkg syscall (openbsd-386-cgo), const IN_CLASSA_NSHIFT ideal-int pkg syscall (openbsd-386-cgo), const IN_CLASSB_HOST ideal-int pkg syscall (openbsd-386-cgo), const IN_CLASSB_MAX ideal-int pkg syscall (openbsd-386-cgo), const IN_CLASSB_NET ideal-int pkg syscall (openbsd-386-cgo), const IN_CLASSB_NSHIFT ideal-int pkg syscall (openbsd-386-cgo), const IN_CLASSC_HOST ideal-int pkg syscall (openbsd-386-cgo), const IN_CLASSC_NET ideal-int pkg syscall (openbsd-386-cgo), const IN_CLASSC_NSHIFT ideal-int pkg syscall (openbsd-386-cgo), const IN_CLASSD_HOST ideal-int pkg syscall (openbsd-386-cgo), const IN_CLASSD_NET ideal-int pkg syscall (openbsd-386-cgo), const IN_CLASSD_NSHIFT ideal-int pkg syscall (openbsd-386-cgo), const IN_LOOPBACKNET ideal-int pkg syscall (openbsd-386-cgo), const IN_RFC3021_HOST ideal-int pkg syscall (openbsd-386-cgo), const IN_RFC3021_NET ideal-int pkg syscall (openbsd-386-cgo), const IN_RFC3021_NSHIFT ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_AH ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_CARP ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_DIVERT ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_DONE ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_DSTOPTS ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_EGP ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_ENCAP ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_EON ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_ESP ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_ETHERIP ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_FRAGMENT ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_GGP ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_GRE ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_HOPOPTS ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_ICMP ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_ICMPV6 ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_IDP ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_IGMP ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_IPCOMP ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_IPIP ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_IPV4 ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_MAX ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_MAXID ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_MOBILE ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_MPLS ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_NONE ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_PFSYNC ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_PIM ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_PUP ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_RAW ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_ROUTING ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_RSVP ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_TP ideal-int pkg syscall (openbsd-386-cgo), const IPV6_AUTH_LEVEL ideal-int pkg syscall (openbsd-386-cgo), const IPV6_AUTOFLOWLABEL ideal-int pkg syscall (openbsd-386-cgo), const IPV6_CHECKSUM ideal-int pkg syscall (openbsd-386-cgo), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (openbsd-386-cgo), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (openbsd-386-cgo), const IPV6_DEFHLIM ideal-int pkg syscall (openbsd-386-cgo), const IPV6_DONTFRAG ideal-int pkg syscall (openbsd-386-cgo), const IPV6_DSTOPTS ideal-int pkg syscall (openbsd-386-cgo), const IPV6_ESP_NETWORK_LEVEL ideal-int pkg syscall (openbsd-386-cgo), const IPV6_ESP_TRANS_LEVEL ideal-int pkg syscall (openbsd-386-cgo), const IPV6_FAITH ideal-int pkg syscall (openbsd-386-cgo), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (openbsd-386-cgo), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (openbsd-386-cgo), const IPV6_FRAGTTL ideal-int pkg syscall (openbsd-386-cgo), const IPV6_HLIMDEC ideal-int pkg syscall (openbsd-386-cgo), const IPV6_HOPLIMIT ideal-int pkg syscall (openbsd-386-cgo), const IPV6_HOPOPTS ideal-int pkg syscall (openbsd-386-cgo), const IPV6_IPCOMP_LEVEL ideal-int pkg syscall (openbsd-386-cgo), const IPV6_MAXHLIM ideal-int pkg syscall (openbsd-386-cgo), const IPV6_MAXPACKET ideal-int pkg syscall (openbsd-386-cgo), const IPV6_MMTU ideal-int pkg syscall (openbsd-386-cgo), const IPV6_NEXTHOP ideal-int pkg syscall (openbsd-386-cgo), const IPV6_OPTIONS ideal-int pkg syscall (openbsd-386-cgo), const IPV6_PATHMTU ideal-int pkg syscall (openbsd-386-cgo), const IPV6_PIPEX ideal-int pkg syscall (openbsd-386-cgo), const IPV6_PKTINFO ideal-int pkg syscall (openbsd-386-cgo), const IPV6_PORTRANGE ideal-int pkg syscall (openbsd-386-cgo), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (openbsd-386-cgo), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (openbsd-386-cgo), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (openbsd-386-cgo), const IPV6_RECVDSTOPTS ideal-int pkg syscall (openbsd-386-cgo), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (openbsd-386-cgo), const IPV6_RECVHOPOPTS ideal-int pkg syscall (openbsd-386-cgo), const IPV6_RECVPATHMTU ideal-int pkg syscall (openbsd-386-cgo), const IPV6_RECVPKTINFO ideal-int pkg syscall (openbsd-386-cgo), const IPV6_RECVRTHDR ideal-int pkg syscall (openbsd-386-cgo), const IPV6_RECVTCLASS ideal-int pkg syscall (openbsd-386-cgo), const IPV6_RTABLE ideal-int pkg syscall (openbsd-386-cgo), const IPV6_RTHDR ideal-int pkg syscall (openbsd-386-cgo), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (openbsd-386-cgo), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (openbsd-386-cgo), const IPV6_RTHDR_STRICT ideal-int pkg syscall (openbsd-386-cgo), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (openbsd-386-cgo), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (openbsd-386-cgo), const IPV6_TCLASS ideal-int pkg syscall (openbsd-386-cgo), const IPV6_USE_MIN_MTU ideal-int pkg syscall (openbsd-386-cgo), const IPV6_VERSION ideal-int pkg syscall (openbsd-386-cgo), const IPV6_VERSION_MASK ideal-int pkg syscall (openbsd-386-cgo), const IP_AUTH_LEVEL ideal-int pkg syscall (openbsd-386-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (openbsd-386-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (openbsd-386-cgo), const IP_DF ideal-int pkg syscall (openbsd-386-cgo), const IP_ESP_NETWORK_LEVEL ideal-int pkg syscall (openbsd-386-cgo), const IP_ESP_TRANS_LEVEL ideal-int pkg syscall (openbsd-386-cgo), const IP_HDRINCL ideal-int pkg syscall (openbsd-386-cgo), const IP_IPCOMP_LEVEL ideal-int pkg syscall (openbsd-386-cgo), const IP_IPSECFLOWINFO ideal-int pkg syscall (openbsd-386-cgo), const IP_IPSEC_LOCAL_AUTH ideal-int pkg syscall (openbsd-386-cgo), const IP_IPSEC_LOCAL_CRED ideal-int pkg syscall (openbsd-386-cgo), const IP_IPSEC_LOCAL_ID ideal-int pkg syscall (openbsd-386-cgo), const IP_IPSEC_REMOTE_AUTH ideal-int pkg syscall (openbsd-386-cgo), const IP_IPSEC_REMOTE_CRED ideal-int pkg syscall (openbsd-386-cgo), const IP_IPSEC_REMOTE_ID ideal-int pkg syscall (openbsd-386-cgo), const IP_MAXPACKET ideal-int pkg syscall (openbsd-386-cgo), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (openbsd-386-cgo), const IP_MF ideal-int pkg syscall (openbsd-386-cgo), const IP_MINTTL ideal-int pkg syscall (openbsd-386-cgo), const IP_MIN_MEMBERSHIPS ideal-int pkg syscall (openbsd-386-cgo), const IP_MSS ideal-int pkg syscall (openbsd-386-cgo), const IP_OFFMASK ideal-int pkg syscall (openbsd-386-cgo), const IP_OPTIONS ideal-int pkg syscall (openbsd-386-cgo), const IP_PIPEX ideal-int pkg syscall (openbsd-386-cgo), const IP_PORTRANGE ideal-int pkg syscall (openbsd-386-cgo), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (openbsd-386-cgo), const IP_PORTRANGE_HIGH ideal-int pkg syscall (openbsd-386-cgo), const IP_PORTRANGE_LOW ideal-int pkg syscall (openbsd-386-cgo), const IP_RECVDSTADDR ideal-int pkg syscall (openbsd-386-cgo), const IP_RECVDSTPORT ideal-int pkg syscall (openbsd-386-cgo), const IP_RECVIF ideal-int pkg syscall (openbsd-386-cgo), const IP_RECVOPTS ideal-int pkg syscall (openbsd-386-cgo), const IP_RECVRETOPTS ideal-int pkg syscall (openbsd-386-cgo), const IP_RECVRTABLE ideal-int pkg syscall (openbsd-386-cgo), const IP_RECVTTL ideal-int pkg syscall (openbsd-386-cgo), const IP_RETOPTS ideal-int pkg syscall (openbsd-386-cgo), const IP_RF ideal-int pkg syscall (openbsd-386-cgo), const IP_RTABLE ideal-int pkg syscall (openbsd-386-cgo), const ISIG ideal-int pkg syscall (openbsd-386-cgo), const ISTRIP ideal-int pkg syscall (openbsd-386-cgo), const IXANY ideal-int pkg syscall (openbsd-386-cgo), const IXOFF ideal-int pkg syscall (openbsd-386-cgo), const IXON ideal-int pkg syscall (openbsd-386-cgo), const LCNT_OVERLOAD_FLUSH ideal-int pkg syscall (openbsd-386-cgo), const LOCK_EX ideal-int pkg syscall (openbsd-386-cgo), const LOCK_NB ideal-int pkg syscall (openbsd-386-cgo), const LOCK_SH ideal-int pkg syscall (openbsd-386-cgo), const LOCK_UN ideal-int pkg syscall (openbsd-386-cgo), const MSG_BCAST ideal-int pkg syscall (openbsd-386-cgo), const MSG_CTRUNC ideal-int pkg syscall (openbsd-386-cgo), const MSG_DONTROUTE ideal-int pkg syscall (openbsd-386-cgo), const MSG_DONTWAIT ideal-int pkg syscall (openbsd-386-cgo), const MSG_EOR ideal-int pkg syscall (openbsd-386-cgo), const MSG_MCAST ideal-int pkg syscall (openbsd-386-cgo), const MSG_NOSIGNAL ideal-int pkg syscall (openbsd-386-cgo), const MSG_OOB ideal-int pkg syscall (openbsd-386-cgo), const MSG_PEEK ideal-int pkg syscall (openbsd-386-cgo), const MSG_TRUNC ideal-int pkg syscall (openbsd-386-cgo), const MSG_WAITALL ideal-int pkg syscall (openbsd-386-cgo), const NAME_MAX ideal-int pkg syscall (openbsd-386-cgo), const NET_RT_DUMP ideal-int pkg syscall (openbsd-386-cgo), const NET_RT_FLAGS ideal-int pkg syscall (openbsd-386-cgo), const NET_RT_IFLIST ideal-int pkg syscall (openbsd-386-cgo), const NET_RT_MAXID ideal-int pkg syscall (openbsd-386-cgo), const NET_RT_STATS ideal-int pkg syscall (openbsd-386-cgo), const NET_RT_TABLE ideal-int pkg syscall (openbsd-386-cgo), const NOFLSH ideal-int pkg syscall (openbsd-386-cgo), const NOTE_ATTRIB ideal-int pkg syscall (openbsd-386-cgo), const NOTE_CHILD ideal-int pkg syscall (openbsd-386-cgo), const NOTE_DELETE ideal-int pkg syscall (openbsd-386-cgo), const NOTE_EOF ideal-int pkg syscall (openbsd-386-cgo), const NOTE_EXEC ideal-int pkg syscall (openbsd-386-cgo), const NOTE_EXIT ideal-int pkg syscall (openbsd-386-cgo), const NOTE_EXTEND ideal-int pkg syscall (openbsd-386-cgo), const NOTE_FORK ideal-int pkg syscall (openbsd-386-cgo), const NOTE_LINK ideal-int pkg syscall (openbsd-386-cgo), const NOTE_LOWAT ideal-int pkg syscall (openbsd-386-cgo), const NOTE_PCTRLMASK ideal-int pkg syscall (openbsd-386-cgo), const NOTE_PDATAMASK ideal-int pkg syscall (openbsd-386-cgo), const NOTE_RENAME ideal-int pkg syscall (openbsd-386-cgo), const NOTE_REVOKE ideal-int pkg syscall (openbsd-386-cgo), const NOTE_TRACK ideal-int pkg syscall (openbsd-386-cgo), const NOTE_TRACKERR ideal-int pkg syscall (openbsd-386-cgo), const NOTE_TRUNCATE ideal-int pkg syscall (openbsd-386-cgo), const NOTE_WRITE ideal-int pkg syscall (openbsd-386-cgo), const OCRNL ideal-int pkg syscall (openbsd-386-cgo), const ONLCR ideal-int pkg syscall (openbsd-386-cgo), const ONLRET ideal-int pkg syscall (openbsd-386-cgo), const ONOCR ideal-int pkg syscall (openbsd-386-cgo), const ONOEOT ideal-int pkg syscall (openbsd-386-cgo), const OPOST ideal-int pkg syscall (openbsd-386-cgo), const O_ACCMODE ideal-int pkg syscall (openbsd-386-cgo), const O_DIRECTORY ideal-int pkg syscall (openbsd-386-cgo), const O_DSYNC ideal-int pkg syscall (openbsd-386-cgo), const O_EXLOCK ideal-int pkg syscall (openbsd-386-cgo), const O_FSYNC ideal-int pkg syscall (openbsd-386-cgo), const O_NDELAY ideal-int pkg syscall (openbsd-386-cgo), const O_NOFOLLOW ideal-int pkg syscall (openbsd-386-cgo), const O_RSYNC ideal-int pkg syscall (openbsd-386-cgo), const O_SHLOCK ideal-int pkg syscall (openbsd-386-cgo), const PARENB ideal-int pkg syscall (openbsd-386-cgo), const PARMRK ideal-int pkg syscall (openbsd-386-cgo), const PARODD ideal-int pkg syscall (openbsd-386-cgo), const PENDIN ideal-int pkg syscall (openbsd-386-cgo), const PF_FLUSH ideal-int pkg syscall (openbsd-386-cgo), const PRIO_PGRP = 1 pkg syscall (openbsd-386-cgo), const PRIO_PGRP ideal-int pkg syscall (openbsd-386-cgo), const PRIO_PROCESS = 0 pkg syscall (openbsd-386-cgo), const PRIO_PROCESS ideal-int pkg syscall (openbsd-386-cgo), const PRIO_USER = 2 pkg syscall (openbsd-386-cgo), const PRIO_USER ideal-int pkg syscall (openbsd-386-cgo), const PTRACE_CONT ideal-int pkg syscall (openbsd-386-cgo), const PTRACE_KILL ideal-int pkg syscall (openbsd-386-cgo), const PTRACE_TRACEME ideal-int pkg syscall (openbsd-386-cgo), const PT_MASK ideal-int pkg syscall (openbsd-386-cgo), const RLIMIT_CORE ideal-int pkg syscall (openbsd-386-cgo), const RLIMIT_CPU ideal-int pkg syscall (openbsd-386-cgo), const RLIMIT_DATA ideal-int pkg syscall (openbsd-386-cgo), const RLIMIT_FSIZE ideal-int pkg syscall (openbsd-386-cgo), const RLIMIT_NOFILE ideal-int pkg syscall (openbsd-386-cgo), const RLIMIT_STACK ideal-int pkg syscall (openbsd-386-cgo), const RLIM_INFINITY ideal-int pkg syscall (openbsd-386-cgo), const RTAX_AUTHOR ideal-int pkg syscall (openbsd-386-cgo), const RTAX_BRD ideal-int pkg syscall (openbsd-386-cgo), const RTAX_DST ideal-int pkg syscall (openbsd-386-cgo), const RTAX_GATEWAY ideal-int pkg syscall (openbsd-386-cgo), const RTAX_GENMASK ideal-int pkg syscall (openbsd-386-cgo), const RTAX_IFA ideal-int pkg syscall (openbsd-386-cgo), const RTAX_IFP ideal-int pkg syscall (openbsd-386-cgo), const RTAX_LABEL ideal-int pkg syscall (openbsd-386-cgo), const RTAX_MAX ideal-int pkg syscall (openbsd-386-cgo), const RTAX_NETMASK ideal-int pkg syscall (openbsd-386-cgo), const RTAX_SRC ideal-int pkg syscall (openbsd-386-cgo), const RTAX_SRCMASK ideal-int pkg syscall (openbsd-386-cgo), const RTA_AUTHOR ideal-int pkg syscall (openbsd-386-cgo), const RTA_BRD ideal-int pkg syscall (openbsd-386-cgo), const RTA_DST ideal-int pkg syscall (openbsd-386-cgo), const RTA_GATEWAY ideal-int pkg syscall (openbsd-386-cgo), const RTA_GENMASK ideal-int pkg syscall (openbsd-386-cgo), const RTA_IFA ideal-int pkg syscall (openbsd-386-cgo), const RTA_IFP ideal-int pkg syscall (openbsd-386-cgo), const RTA_LABEL ideal-int pkg syscall (openbsd-386-cgo), const RTA_NETMASK ideal-int pkg syscall (openbsd-386-cgo), const RTA_SRC ideal-int pkg syscall (openbsd-386-cgo), const RTA_SRCMASK ideal-int pkg syscall (openbsd-386-cgo), const RTF_ANNOUNCE ideal-int pkg syscall (openbsd-386-cgo), const RTF_BLACKHOLE ideal-int pkg syscall (openbsd-386-cgo), const RTF_CLONED ideal-int pkg syscall (openbsd-386-cgo), const RTF_CLONING ideal-int pkg syscall (openbsd-386-cgo), const RTF_DONE ideal-int pkg syscall (openbsd-386-cgo), const RTF_DYNAMIC ideal-int pkg syscall (openbsd-386-cgo), const RTF_FMASK ideal-int pkg syscall (openbsd-386-cgo), const RTF_GATEWAY ideal-int pkg syscall (openbsd-386-cgo), const RTF_HOST ideal-int pkg syscall (openbsd-386-cgo), const RTF_LLINFO ideal-int pkg syscall (openbsd-386-cgo), const RTF_MASK ideal-int pkg syscall (openbsd-386-cgo), const RTF_MODIFIED ideal-int pkg syscall (openbsd-386-cgo), const RTF_MPATH ideal-int pkg syscall (openbsd-386-cgo), const RTF_MPLS ideal-int pkg syscall (openbsd-386-cgo), const RTF_PERMANENT_ARP ideal-int pkg syscall (openbsd-386-cgo), const RTF_PROTO1 ideal-int pkg syscall (openbsd-386-cgo), const RTF_PROTO2 ideal-int pkg syscall (openbsd-386-cgo), const RTF_PROTO3 ideal-int pkg syscall (openbsd-386-cgo), const RTF_REJECT ideal-int pkg syscall (openbsd-386-cgo), const RTF_SOURCE ideal-int pkg syscall (openbsd-386-cgo), const RTF_STATIC ideal-int pkg syscall (openbsd-386-cgo), const RTF_TUNNEL ideal-int pkg syscall (openbsd-386-cgo), const RTF_UP ideal-int pkg syscall (openbsd-386-cgo), const RTF_USETRAILERS ideal-int pkg syscall (openbsd-386-cgo), const RTF_XRESOLVE ideal-int pkg syscall (openbsd-386-cgo), const RTM_ADD ideal-int pkg syscall (openbsd-386-cgo), const RTM_CHANGE ideal-int pkg syscall (openbsd-386-cgo), const RTM_DELADDR ideal-int pkg syscall (openbsd-386-cgo), const RTM_DELETE ideal-int pkg syscall (openbsd-386-cgo), const RTM_DESYNC ideal-int pkg syscall (openbsd-386-cgo), const RTM_GET ideal-int pkg syscall (openbsd-386-cgo), const RTM_IFANNOUNCE ideal-int pkg syscall (openbsd-386-cgo), const RTM_IFINFO ideal-int pkg syscall (openbsd-386-cgo), const RTM_LOCK ideal-int pkg syscall (openbsd-386-cgo), const RTM_LOSING ideal-int pkg syscall (openbsd-386-cgo), const RTM_MAXSIZE ideal-int pkg syscall (openbsd-386-cgo), const RTM_MISS ideal-int pkg syscall (openbsd-386-cgo), const RTM_NEWADDR ideal-int pkg syscall (openbsd-386-cgo), const RTM_REDIRECT ideal-int pkg syscall (openbsd-386-cgo), const RTM_RESOLVE ideal-int pkg syscall (openbsd-386-cgo), const RTM_RTTUNIT ideal-int pkg syscall (openbsd-386-cgo), const RTM_VERSION ideal-int pkg syscall (openbsd-386-cgo), const RTV_EXPIRE ideal-int pkg syscall (openbsd-386-cgo), const RTV_HOPCOUNT ideal-int pkg syscall (openbsd-386-cgo), const RTV_MTU ideal-int pkg syscall (openbsd-386-cgo), const RTV_RPIPE ideal-int pkg syscall (openbsd-386-cgo), const RTV_RTT ideal-int pkg syscall (openbsd-386-cgo), const RTV_RTTVAR ideal-int pkg syscall (openbsd-386-cgo), const RTV_SPIPE ideal-int pkg syscall (openbsd-386-cgo), const RTV_SSTHRESH ideal-int pkg syscall (openbsd-386-cgo), const RT_TABLEID_MAX ideal-int pkg syscall (openbsd-386-cgo), const RUSAGE_CHILDREN ideal-int pkg syscall (openbsd-386-cgo), const RUSAGE_SELF ideal-int pkg syscall (openbsd-386-cgo), const RUSAGE_THREAD ideal-int pkg syscall (openbsd-386-cgo), const SCM_RIGHTS ideal-int pkg syscall (openbsd-386-cgo), const SCM_TIMESTAMP ideal-int pkg syscall (openbsd-386-cgo), const SIGCHLD Signal pkg syscall (openbsd-386-cgo), const SIGCONT Signal pkg syscall (openbsd-386-cgo), const SIGEMT Signal pkg syscall (openbsd-386-cgo), const SIGINFO Signal pkg syscall (openbsd-386-cgo), const SIGIO Signal pkg syscall (openbsd-386-cgo), const SIGIOT Signal pkg syscall (openbsd-386-cgo), const SIGPROF Signal pkg syscall (openbsd-386-cgo), const SIGSTOP Signal pkg syscall (openbsd-386-cgo), const SIGSYS Signal pkg syscall (openbsd-386-cgo), const SIGTHR Signal pkg syscall (openbsd-386-cgo), const SIGTSTP Signal pkg syscall (openbsd-386-cgo), const SIGTTIN Signal pkg syscall (openbsd-386-cgo), const SIGTTOU Signal pkg syscall (openbsd-386-cgo), const SIGURG Signal pkg syscall (openbsd-386-cgo), const SIGUSR1 Signal pkg syscall (openbsd-386-cgo), const SIGUSR2 Signal pkg syscall (openbsd-386-cgo), const SIGVTALRM Signal pkg syscall (openbsd-386-cgo), const SIGWINCH Signal pkg syscall (openbsd-386-cgo), const SIGXCPU Signal pkg syscall (openbsd-386-cgo), const SIGXFSZ Signal pkg syscall (openbsd-386-cgo), const SIOCADDMULTI ideal-int pkg syscall (openbsd-386-cgo), const SIOCAIFADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCAIFGROUP ideal-int pkg syscall (openbsd-386-cgo), const SIOCALIFADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCATMARK ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGADD ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGADDS ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGARL ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGDADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGDEL ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGDELS ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGFLUSH ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGFRL ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGGCACHE ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGGFD ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGGHT ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGGIFFLGS ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGGMA ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGGPARAM ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGGPRI ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGGRL ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGGSIFS ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGGTO ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGIFS ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGRTS ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGSADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGSCACHE ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGSFD ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGSHT ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGSIFCOST ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGSIFFLGS ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGSIFPRIO ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGSMA ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGSPRI ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGSPROTO ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGSTO ideal-int pkg syscall (openbsd-386-cgo), const SIOCBRDGSTXHC ideal-int pkg syscall (openbsd-386-cgo), const SIOCDELMULTI ideal-int pkg syscall (openbsd-386-cgo), const SIOCDIFADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCDIFGROUP ideal-int pkg syscall (openbsd-386-cgo), const SIOCDIFPHYADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCDLIFADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCGETKALIVE ideal-int pkg syscall (openbsd-386-cgo), const SIOCGETLABEL ideal-int pkg syscall (openbsd-386-cgo), const SIOCGETPFLOW ideal-int pkg syscall (openbsd-386-cgo), const SIOCGETPFSYNC ideal-int pkg syscall (openbsd-386-cgo), const SIOCGETSGCNT ideal-int pkg syscall (openbsd-386-cgo), const SIOCGETVIFCNT ideal-int pkg syscall (openbsd-386-cgo), const SIOCGHIWAT ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFASYNCMAP ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFBRDADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFCONF ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFDATA ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFDESCR ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFDSTADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFFLAGS ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFGATTR ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFGENERIC ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFGMEMB ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFGROUP ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFMEDIA ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFMETRIC ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFMTU ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFNETMASK ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFPDSTADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFPRIORITY ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFPSRCADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFRDOMAIN ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFRTLABEL ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFTIMESLOT ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFXFLAGS ideal-int pkg syscall (openbsd-386-cgo), const SIOCGLIFADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCGLIFPHYADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCGLIFPHYRTABLE ideal-int pkg syscall (openbsd-386-cgo), const SIOCGLOWAT ideal-int pkg syscall (openbsd-386-cgo), const SIOCGPGRP ideal-int pkg syscall (openbsd-386-cgo), const SIOCGVH ideal-int pkg syscall (openbsd-386-cgo), const SIOCIFCREATE ideal-int pkg syscall (openbsd-386-cgo), const SIOCIFDESTROY ideal-int pkg syscall (openbsd-386-cgo), const SIOCIFGCLONERS ideal-int pkg syscall (openbsd-386-cgo), const SIOCSETKALIVE ideal-int pkg syscall (openbsd-386-cgo), const SIOCSETLABEL ideal-int pkg syscall (openbsd-386-cgo), const SIOCSETPFLOW ideal-int pkg syscall (openbsd-386-cgo), const SIOCSETPFSYNC ideal-int pkg syscall (openbsd-386-cgo), const SIOCSHIWAT ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFASYNCMAP ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFBRDADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFDESCR ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFDSTADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFFLAGS ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFGATTR ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFGENERIC ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFLLADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFMEDIA ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFMETRIC ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFMTU ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFNETMASK ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFPHYADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFPRIORITY ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFRDOMAIN ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFRTLABEL ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFTIMESLOT ideal-int pkg syscall (openbsd-386-cgo), const SIOCSIFXFLAGS ideal-int pkg syscall (openbsd-386-cgo), const SIOCSLIFPHYADDR ideal-int pkg syscall (openbsd-386-cgo), const SIOCSLIFPHYRTABLE ideal-int pkg syscall (openbsd-386-cgo), const SIOCSLOWAT ideal-int pkg syscall (openbsd-386-cgo), const SIOCSPGRP ideal-int pkg syscall (openbsd-386-cgo), const SIOCSVH ideal-int pkg syscall (openbsd-386-cgo), const SOCK_RDM ideal-int pkg syscall (openbsd-386-cgo), const SO_ACCEPTCONN ideal-int pkg syscall (openbsd-386-cgo), const SO_BINDANY ideal-int pkg syscall (openbsd-386-cgo), const SO_DEBUG ideal-int pkg syscall (openbsd-386-cgo), const SO_ERROR ideal-int pkg syscall (openbsd-386-cgo), const SO_NETPROC ideal-int pkg syscall (openbsd-386-cgo), const SO_OOBINLINE ideal-int pkg syscall (openbsd-386-cgo), const SO_PEERCRED ideal-int pkg syscall (openbsd-386-cgo), const SO_RCVLOWAT ideal-int pkg syscall (openbsd-386-cgo), const SO_RCVTIMEO ideal-int pkg syscall (openbsd-386-cgo), const SO_REUSEPORT ideal-int pkg syscall (openbsd-386-cgo), const SO_RTABLE ideal-int pkg syscall (openbsd-386-cgo), const SO_SNDLOWAT ideal-int pkg syscall (openbsd-386-cgo), const SO_SNDTIMEO ideal-int pkg syscall (openbsd-386-cgo), const SO_SPLICE ideal-int pkg syscall (openbsd-386-cgo), const SO_TIMESTAMP ideal-int pkg syscall (openbsd-386-cgo), const SO_TYPE ideal-int pkg syscall (openbsd-386-cgo), const SO_USELOOPBACK ideal-int pkg syscall (openbsd-386-cgo), const SYS_ACCEPT ideal-int pkg syscall (openbsd-386-cgo), const SYS_ACCESS ideal-int pkg syscall (openbsd-386-cgo), const SYS_ACCT ideal-int pkg syscall (openbsd-386-cgo), const SYS_ADJFREQ ideal-int pkg syscall (openbsd-386-cgo), const SYS_ADJTIME ideal-int pkg syscall (openbsd-386-cgo), const SYS_BIND ideal-int pkg syscall (openbsd-386-cgo), const SYS_CHDIR ideal-int pkg syscall (openbsd-386-cgo), const SYS_CHFLAGS ideal-int pkg syscall (openbsd-386-cgo), const SYS_CHMOD ideal-int pkg syscall (openbsd-386-cgo), const SYS_CHOWN ideal-int pkg syscall (openbsd-386-cgo), const SYS_CHROOT ideal-int pkg syscall (openbsd-386-cgo), const SYS_CLOCK_GETRES ideal-int pkg syscall (openbsd-386-cgo), const SYS_CLOCK_GETTIME ideal-int pkg syscall (openbsd-386-cgo), const SYS_CLOCK_SETTIME ideal-int pkg syscall (openbsd-386-cgo), const SYS_CLOSE ideal-int pkg syscall (openbsd-386-cgo), const SYS_CLOSEFROM ideal-int pkg syscall (openbsd-386-cgo), const SYS_CONNECT ideal-int pkg syscall (openbsd-386-cgo), const SYS_DUP ideal-int pkg syscall (openbsd-386-cgo), const SYS_DUP2 ideal-int pkg syscall (openbsd-386-cgo), const SYS_EXECVE ideal-int pkg syscall (openbsd-386-cgo), const SYS_EXIT ideal-int pkg syscall (openbsd-386-cgo), const SYS_FACCESSAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_FCHDIR ideal-int pkg syscall (openbsd-386-cgo), const SYS_FCHFLAGS ideal-int pkg syscall (openbsd-386-cgo), const SYS_FCHMOD ideal-int pkg syscall (openbsd-386-cgo), const SYS_FCHMODAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_FCHOWN ideal-int pkg syscall (openbsd-386-cgo), const SYS_FCHOWNAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_FCNTL ideal-int pkg syscall (openbsd-386-cgo), const SYS_FHOPEN ideal-int pkg syscall (openbsd-386-cgo), const SYS_FHSTAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_FHSTATFS ideal-int pkg syscall (openbsd-386-cgo), const SYS_FLOCK ideal-int pkg syscall (openbsd-386-cgo), const SYS_FORK ideal-int pkg syscall (openbsd-386-cgo), const SYS_FPATHCONF ideal-int pkg syscall (openbsd-386-cgo), const SYS_FSTAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_FSTATAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_FSTATFS ideal-int pkg syscall (openbsd-386-cgo), const SYS_FSYNC ideal-int pkg syscall (openbsd-386-cgo), const SYS_FTRUNCATE ideal-int pkg syscall (openbsd-386-cgo), const SYS_FUTIMENS ideal-int pkg syscall (openbsd-386-cgo), const SYS_FUTIMES ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETDIRENTRIES ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETDTABLECOUNT ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETEGID ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETEUID ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETFH ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETFSSTAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETGID ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETGROUPS ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETITIMER ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETLOGIN ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETPEERNAME ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETPGID ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETPGRP ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETPID ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETPPID ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETPRIORITY ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETRESGID ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETRESUID ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETRLIMIT ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETRTABLE ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETRUSAGE ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETSID ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETSOCKNAME ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETSOCKOPT ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETTHRID ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETTIMEOFDAY ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETUID ideal-int pkg syscall (openbsd-386-cgo), const SYS_IOCTL ideal-int pkg syscall (openbsd-386-cgo), const SYS_ISSETUGID ideal-int pkg syscall (openbsd-386-cgo), const SYS_KEVENT ideal-int pkg syscall (openbsd-386-cgo), const SYS_KILL ideal-int pkg syscall (openbsd-386-cgo), const SYS_KQUEUE ideal-int pkg syscall (openbsd-386-cgo), const SYS_KTRACE ideal-int pkg syscall (openbsd-386-cgo), const SYS_LCHOWN ideal-int pkg syscall (openbsd-386-cgo), const SYS_LINK ideal-int pkg syscall (openbsd-386-cgo), const SYS_LINKAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_LISTEN ideal-int pkg syscall (openbsd-386-cgo), const SYS_LSEEK ideal-int pkg syscall (openbsd-386-cgo), const SYS_LSTAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_MADVISE ideal-int pkg syscall (openbsd-386-cgo), const SYS_MINCORE ideal-int pkg syscall (openbsd-386-cgo), const SYS_MINHERIT ideal-int pkg syscall (openbsd-386-cgo), const SYS_MKDIR ideal-int pkg syscall (openbsd-386-cgo), const SYS_MKDIRAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_MKFIFO ideal-int pkg syscall (openbsd-386-cgo), const SYS_MKFIFOAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_MKNOD ideal-int pkg syscall (openbsd-386-cgo), const SYS_MKNODAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_MLOCK ideal-int pkg syscall (openbsd-386-cgo), const SYS_MLOCKALL ideal-int pkg syscall (openbsd-386-cgo), const SYS_MMAP ideal-int pkg syscall (openbsd-386-cgo), const SYS_MOUNT ideal-int pkg syscall (openbsd-386-cgo), const SYS_MPROTECT ideal-int pkg syscall (openbsd-386-cgo), const SYS_MQUERY ideal-int pkg syscall (openbsd-386-cgo), const SYS_MSGCTL ideal-int pkg syscall (openbsd-386-cgo), const SYS_MSGGET ideal-int pkg syscall (openbsd-386-cgo), const SYS_MSGRCV ideal-int pkg syscall (openbsd-386-cgo), const SYS_MSGSND ideal-int pkg syscall (openbsd-386-cgo), const SYS_MSYNC ideal-int pkg syscall (openbsd-386-cgo), const SYS_MUNLOCK ideal-int pkg syscall (openbsd-386-cgo), const SYS_MUNLOCKALL ideal-int pkg syscall (openbsd-386-cgo), const SYS_MUNMAP ideal-int pkg syscall (openbsd-386-cgo), const SYS_NANOSLEEP ideal-int pkg syscall (openbsd-386-cgo), const SYS_NFSSVC ideal-int pkg syscall (openbsd-386-cgo), const SYS_OBREAK ideal-int pkg syscall (openbsd-386-cgo), const SYS_OPEN ideal-int pkg syscall (openbsd-386-cgo), const SYS_OPENAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_PATHCONF ideal-int pkg syscall (openbsd-386-cgo), const SYS_PIPE ideal-int pkg syscall (openbsd-386-cgo), const SYS_POLL ideal-int pkg syscall (openbsd-386-cgo), const SYS_PREAD ideal-int pkg syscall (openbsd-386-cgo), const SYS_PREADV ideal-int pkg syscall (openbsd-386-cgo), const SYS_PROFIL ideal-int pkg syscall (openbsd-386-cgo), const SYS_PTRACE ideal-int pkg syscall (openbsd-386-cgo), const SYS_PWRITE ideal-int pkg syscall (openbsd-386-cgo), const SYS_PWRITEV ideal-int pkg syscall (openbsd-386-cgo), const SYS_QUOTACTL ideal-int pkg syscall (openbsd-386-cgo), const SYS_READ ideal-int pkg syscall (openbsd-386-cgo), const SYS_READLINK ideal-int pkg syscall (openbsd-386-cgo), const SYS_READLINKAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_READV ideal-int pkg syscall (openbsd-386-cgo), const SYS_REBOOT ideal-int pkg syscall (openbsd-386-cgo), const SYS_RECVFROM ideal-int pkg syscall (openbsd-386-cgo), const SYS_RECVMSG ideal-int pkg syscall (openbsd-386-cgo), const SYS_RENAME ideal-int pkg syscall (openbsd-386-cgo), const SYS_RENAMEAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_REVOKE ideal-int pkg syscall (openbsd-386-cgo), const SYS_RMDIR ideal-int pkg syscall (openbsd-386-cgo), const SYS_SCHED_YIELD ideal-int pkg syscall (openbsd-386-cgo), const SYS_SELECT ideal-int pkg syscall (openbsd-386-cgo), const SYS_SEMGET ideal-int pkg syscall (openbsd-386-cgo), const SYS_SEMOP ideal-int pkg syscall (openbsd-386-cgo), const SYS_SENDMSG ideal-int pkg syscall (openbsd-386-cgo), const SYS_SENDTO ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETEGID ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETEUID ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETGID ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETGROUPS ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETITIMER ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETLOGIN ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETPGID ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETPRIORITY ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETREGID ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETRESGID ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETRESUID ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETREUID ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETRLIMIT ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETRTABLE ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETSID ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETSOCKOPT ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETTIMEOFDAY ideal-int pkg syscall (openbsd-386-cgo), const SYS_SETUID ideal-int pkg syscall (openbsd-386-cgo), const SYS_SHMAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_SHMCTL ideal-int pkg syscall (openbsd-386-cgo), const SYS_SHMDT ideal-int pkg syscall (openbsd-386-cgo), const SYS_SHMGET ideal-int pkg syscall (openbsd-386-cgo), const SYS_SHUTDOWN ideal-int pkg syscall (openbsd-386-cgo), const SYS_SIGACTION ideal-int pkg syscall (openbsd-386-cgo), const SYS_SIGALTSTACK ideal-int pkg syscall (openbsd-386-cgo), const SYS_SIGPENDING ideal-int pkg syscall (openbsd-386-cgo), const SYS_SIGPROCMASK ideal-int pkg syscall (openbsd-386-cgo), const SYS_SIGRETURN ideal-int pkg syscall (openbsd-386-cgo), const SYS_SIGSUSPEND ideal-int pkg syscall (openbsd-386-cgo), const SYS_SOCKET ideal-int pkg syscall (openbsd-386-cgo), const SYS_SOCKETPAIR ideal-int pkg syscall (openbsd-386-cgo), const SYS_STAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_STATFS ideal-int pkg syscall (openbsd-386-cgo), const SYS_SWAPCTL ideal-int pkg syscall (openbsd-386-cgo), const SYS_SYMLINK ideal-int pkg syscall (openbsd-386-cgo), const SYS_SYMLINKAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_SYNC ideal-int pkg syscall (openbsd-386-cgo), const SYS_SYSARCH ideal-int pkg syscall (openbsd-386-cgo), const SYS_TRUNCATE ideal-int pkg syscall (openbsd-386-cgo), const SYS_UMASK ideal-int pkg syscall (openbsd-386-cgo), const SYS_UNLINK ideal-int pkg syscall (openbsd-386-cgo), const SYS_UNLINKAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_UNMOUNT ideal-int pkg syscall (openbsd-386-cgo), const SYS_UTIMENSAT ideal-int pkg syscall (openbsd-386-cgo), const SYS_UTIMES ideal-int pkg syscall (openbsd-386-cgo), const SYS_VFORK ideal-int pkg syscall (openbsd-386-cgo), const SYS_WAIT4 ideal-int pkg syscall (openbsd-386-cgo), const SYS_WRITE ideal-int pkg syscall (openbsd-386-cgo), const SYS_WRITEV ideal-int pkg syscall (openbsd-386-cgo), const SYS___GETCWD ideal-int pkg syscall (openbsd-386-cgo), const SYS___GET_TCB ideal-int pkg syscall (openbsd-386-cgo), const SYS___SEMCTL ideal-int pkg syscall (openbsd-386-cgo), const SYS___SET_TCB ideal-int pkg syscall (openbsd-386-cgo), const SYS___SYSCTL ideal-int pkg syscall (openbsd-386-cgo), const SYS___TFORK ideal-int pkg syscall (openbsd-386-cgo), const SYS___THREXIT ideal-int pkg syscall (openbsd-386-cgo), const SYS___THRSIGDIVERT ideal-int pkg syscall (openbsd-386-cgo), const SYS___THRSLEEP ideal-int pkg syscall (openbsd-386-cgo), const SYS___THRWAKEUP ideal-int pkg syscall (openbsd-386-cgo), const SizeofBpfHdr ideal-int pkg syscall (openbsd-386-cgo), const SizeofBpfInsn ideal-int pkg syscall (openbsd-386-cgo), const SizeofBpfProgram ideal-int pkg syscall (openbsd-386-cgo), const SizeofBpfStat ideal-int pkg syscall (openbsd-386-cgo), const SizeofBpfVersion ideal-int pkg syscall (openbsd-386-cgo), const SizeofCmsghdr ideal-int pkg syscall (openbsd-386-cgo), const SizeofICMPv6Filter = 32 pkg syscall (openbsd-386-cgo), const SizeofICMPv6Filter ideal-int pkg syscall (openbsd-386-cgo), const SizeofIPMreq ideal-int pkg syscall (openbsd-386-cgo), const SizeofIPv6MTUInfo = 32 pkg syscall (openbsd-386-cgo), const SizeofIPv6MTUInfo ideal-int pkg syscall (openbsd-386-cgo), const SizeofIPv6Mreq ideal-int pkg syscall (openbsd-386-cgo), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (openbsd-386-cgo), const SizeofIfData ideal-int pkg syscall (openbsd-386-cgo), const SizeofIfMsghdr ideal-int pkg syscall (openbsd-386-cgo), const SizeofIfaMsghdr ideal-int pkg syscall (openbsd-386-cgo), const SizeofInet6Pktinfo ideal-int pkg syscall (openbsd-386-cgo), const SizeofLinger ideal-int pkg syscall (openbsd-386-cgo), const SizeofMsghdr ideal-int pkg syscall (openbsd-386-cgo), const SizeofRtMetrics ideal-int pkg syscall (openbsd-386-cgo), const SizeofRtMsghdr ideal-int pkg syscall (openbsd-386-cgo), const SizeofSockaddrAny ideal-int pkg syscall (openbsd-386-cgo), const SizeofSockaddrDatalink ideal-int pkg syscall (openbsd-386-cgo), const SizeofSockaddrInet4 ideal-int pkg syscall (openbsd-386-cgo), const SizeofSockaddrInet6 ideal-int pkg syscall (openbsd-386-cgo), const SizeofSockaddrUnix ideal-int pkg syscall (openbsd-386-cgo), const TCIFLUSH ideal-int pkg syscall (openbsd-386-cgo), const TCIOFLUSH ideal-int pkg syscall (openbsd-386-cgo), const TCOFLUSH ideal-int pkg syscall (openbsd-386-cgo), const TCP_MAXBURST ideal-int pkg syscall (openbsd-386-cgo), const TCP_MAXSEG ideal-int pkg syscall (openbsd-386-cgo), const TCP_MAXWIN ideal-int pkg syscall (openbsd-386-cgo), const TCP_MAX_SACK ideal-int pkg syscall (openbsd-386-cgo), const TCP_MAX_WINSHIFT ideal-int pkg syscall (openbsd-386-cgo), const TCP_MD5SIG ideal-int pkg syscall (openbsd-386-cgo), const TCP_MSS ideal-int pkg syscall (openbsd-386-cgo), const TCP_NSTATES ideal-int pkg syscall (openbsd-386-cgo), const TCP_SACK_ENABLE ideal-int pkg syscall (openbsd-386-cgo), const TCSAFLUSH ideal-int pkg syscall (openbsd-386-cgo), const TIOCCBRK ideal-int pkg syscall (openbsd-386-cgo), const TIOCCDTR ideal-int pkg syscall (openbsd-386-cgo), const TIOCCONS ideal-int pkg syscall (openbsd-386-cgo), const TIOCDRAIN ideal-int pkg syscall (openbsd-386-cgo), const TIOCEXCL ideal-int pkg syscall (openbsd-386-cgo), const TIOCEXT ideal-int pkg syscall (openbsd-386-cgo), const TIOCFLAG_CLOCAL ideal-int pkg syscall (openbsd-386-cgo), const TIOCFLAG_CRTSCTS ideal-int pkg syscall (openbsd-386-cgo), const TIOCFLAG_MDMBUF ideal-int pkg syscall (openbsd-386-cgo), const TIOCFLAG_PPS ideal-int pkg syscall (openbsd-386-cgo), const TIOCFLAG_SOFTCAR ideal-int pkg syscall (openbsd-386-cgo), const TIOCFLUSH ideal-int pkg syscall (openbsd-386-cgo), const TIOCGETA ideal-int pkg syscall (openbsd-386-cgo), const TIOCGETD ideal-int pkg syscall (openbsd-386-cgo), const TIOCGFLAGS ideal-int pkg syscall (openbsd-386-cgo), const TIOCGPGRP ideal-int pkg syscall (openbsd-386-cgo), const TIOCGTSTAMP ideal-int pkg syscall (openbsd-386-cgo), const TIOCGWINSZ ideal-int pkg syscall (openbsd-386-cgo), const TIOCMBIC ideal-int pkg syscall (openbsd-386-cgo), const TIOCMBIS ideal-int pkg syscall (openbsd-386-cgo), const TIOCMGET ideal-int pkg syscall (openbsd-386-cgo), const TIOCMODG ideal-int pkg syscall (openbsd-386-cgo), const TIOCMODS ideal-int pkg syscall (openbsd-386-cgo), const TIOCMSET ideal-int pkg syscall (openbsd-386-cgo), const TIOCM_CAR ideal-int pkg syscall (openbsd-386-cgo), const TIOCM_CD ideal-int pkg syscall (openbsd-386-cgo), const TIOCM_CTS ideal-int pkg syscall (openbsd-386-cgo), const TIOCM_DSR ideal-int pkg syscall (openbsd-386-cgo), const TIOCM_DTR ideal-int pkg syscall (openbsd-386-cgo), const TIOCM_LE ideal-int pkg syscall (openbsd-386-cgo), const TIOCM_RI ideal-int pkg syscall (openbsd-386-cgo), const TIOCM_RNG ideal-int pkg syscall (openbsd-386-cgo), const TIOCM_RTS ideal-int pkg syscall (openbsd-386-cgo), const TIOCM_SR ideal-int pkg syscall (openbsd-386-cgo), const TIOCM_ST ideal-int pkg syscall (openbsd-386-cgo), const TIOCNOTTY ideal-int pkg syscall (openbsd-386-cgo), const TIOCNXCL ideal-int pkg syscall (openbsd-386-cgo), const TIOCOUTQ ideal-int pkg syscall (openbsd-386-cgo), const TIOCPKT ideal-int pkg syscall (openbsd-386-cgo), const TIOCPKT_DATA ideal-int pkg syscall (openbsd-386-cgo), const TIOCPKT_DOSTOP ideal-int pkg syscall (openbsd-386-cgo), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (openbsd-386-cgo), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (openbsd-386-cgo), const TIOCPKT_IOCTL ideal-int pkg syscall (openbsd-386-cgo), const TIOCPKT_NOSTOP ideal-int pkg syscall (openbsd-386-cgo), const TIOCPKT_START ideal-int pkg syscall (openbsd-386-cgo), const TIOCPKT_STOP ideal-int pkg syscall (openbsd-386-cgo), const TIOCREMOTE ideal-int pkg syscall (openbsd-386-cgo), const TIOCSBRK ideal-int pkg syscall (openbsd-386-cgo), const TIOCSCTTY ideal-int pkg syscall (openbsd-386-cgo), const TIOCSDTR ideal-int pkg syscall (openbsd-386-cgo), const TIOCSETA ideal-int pkg syscall (openbsd-386-cgo), const TIOCSETAF ideal-int pkg syscall (openbsd-386-cgo), const TIOCSETAW ideal-int pkg syscall (openbsd-386-cgo), const TIOCSETD ideal-int pkg syscall (openbsd-386-cgo), const TIOCSFLAGS ideal-int pkg syscall (openbsd-386-cgo), const TIOCSIG ideal-int pkg syscall (openbsd-386-cgo), const TIOCSPGRP ideal-int pkg syscall (openbsd-386-cgo), const TIOCSTART ideal-int pkg syscall (openbsd-386-cgo), const TIOCSTAT ideal-int pkg syscall (openbsd-386-cgo), const TIOCSTI ideal-int pkg syscall (openbsd-386-cgo), const TIOCSTOP ideal-int pkg syscall (openbsd-386-cgo), const TIOCSTSTAMP ideal-int pkg syscall (openbsd-386-cgo), const TIOCSWINSZ ideal-int pkg syscall (openbsd-386-cgo), const TIOCUCNTL ideal-int pkg syscall (openbsd-386-cgo), const TOSTOP ideal-int pkg syscall (openbsd-386-cgo), const VDISCARD ideal-int pkg syscall (openbsd-386-cgo), const VDSUSP ideal-int pkg syscall (openbsd-386-cgo), const VEOF ideal-int pkg syscall (openbsd-386-cgo), const VEOL ideal-int pkg syscall (openbsd-386-cgo), const VEOL2 ideal-int pkg syscall (openbsd-386-cgo), const VERASE ideal-int pkg syscall (openbsd-386-cgo), const VINTR ideal-int pkg syscall (openbsd-386-cgo), const VKILL ideal-int pkg syscall (openbsd-386-cgo), const VLNEXT ideal-int pkg syscall (openbsd-386-cgo), const VMIN ideal-int pkg syscall (openbsd-386-cgo), const VQUIT ideal-int pkg syscall (openbsd-386-cgo), const VREPRINT ideal-int pkg syscall (openbsd-386-cgo), const VSTART ideal-int pkg syscall (openbsd-386-cgo), const VSTATUS ideal-int pkg syscall (openbsd-386-cgo), const VSTOP ideal-int pkg syscall (openbsd-386-cgo), const VSUSP ideal-int pkg syscall (openbsd-386-cgo), const VTIME ideal-int pkg syscall (openbsd-386-cgo), const VWERASE ideal-int pkg syscall (openbsd-386-cgo), const WALTSIG ideal-int pkg syscall (openbsd-386-cgo), const WCONTINUED ideal-int pkg syscall (openbsd-386-cgo), const WCOREFLAG ideal-int pkg syscall (openbsd-386-cgo), const WNOHANG ideal-int pkg syscall (openbsd-386-cgo), const WSTOPPED ideal-int pkg syscall (openbsd-386-cgo), const WUNTRACED ideal-int pkg syscall (openbsd-386-cgo), func Accept(int) (int, Sockaddr, error) pkg syscall (openbsd-386-cgo), func Access(string, uint32) error pkg syscall (openbsd-386-cgo), func Adjtime(*Timeval, *Timeval) error pkg syscall (openbsd-386-cgo), func Bind(int, Sockaddr) error pkg syscall (openbsd-386-cgo), func BpfBuflen(int) (int, error) pkg syscall (openbsd-386-cgo), func BpfDatalink(int) (int, error) pkg syscall (openbsd-386-cgo), func BpfHeadercmpl(int) (int, error) pkg syscall (openbsd-386-cgo), func BpfInterface(int, string) (string, error) pkg syscall (openbsd-386-cgo), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (openbsd-386-cgo), func BpfStats(int) (*BpfStat, error) pkg syscall (openbsd-386-cgo), func BpfStmt(int, int) *BpfInsn pkg syscall (openbsd-386-cgo), func BpfTimeout(int) (*Timeval, error) pkg syscall (openbsd-386-cgo), func CheckBpfVersion(int) error pkg syscall (openbsd-386-cgo), func Chflags(string, int) error pkg syscall (openbsd-386-cgo), func Chroot(string) error pkg syscall (openbsd-386-cgo), func Close(int) error pkg syscall (openbsd-386-cgo), func CloseOnExec(int) pkg syscall (openbsd-386-cgo), func CmsgLen(int) int pkg syscall (openbsd-386-cgo), func CmsgSpace(int) int pkg syscall (openbsd-386-cgo), func Connect(int, Sockaddr) error pkg syscall (openbsd-386-cgo), func Dup(int) (int, error) pkg syscall (openbsd-386-cgo), func Dup2(int, int) error pkg syscall (openbsd-386-cgo), func Fchdir(int) error pkg syscall (openbsd-386-cgo), func Fchflags(int, int) error pkg syscall (openbsd-386-cgo), func Fchmod(int, uint32) error pkg syscall (openbsd-386-cgo), func Fchown(int, int, int) error pkg syscall (openbsd-386-cgo), func Flock(int, int) error pkg syscall (openbsd-386-cgo), func FlushBpf(int) error pkg syscall (openbsd-386-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (openbsd-386-cgo), func Fpathconf(int, int) (int, error) pkg syscall (openbsd-386-cgo), func Fstat(int, *Stat_t) error pkg syscall (openbsd-386-cgo), func Fstatfs(int, *Statfs_t) error pkg syscall (openbsd-386-cgo), func Fsync(int) error pkg syscall (openbsd-386-cgo), func Ftruncate(int, int64) error pkg syscall (openbsd-386-cgo), func Futimes(int, []Timeval) error pkg syscall (openbsd-386-cgo), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (openbsd-386-cgo), func Getfsstat([]Statfs_t, int) (int, error) pkg syscall (openbsd-386-cgo), func Getpeername(int) (Sockaddr, error) pkg syscall (openbsd-386-cgo), func Getpgid(int) (int, error) pkg syscall (openbsd-386-cgo), func Getpgrp() int pkg syscall (openbsd-386-cgo), func Getpriority(int, int) (int, error) pkg syscall (openbsd-386-cgo), func Getrlimit(int, *Rlimit) error pkg syscall (openbsd-386-cgo), func Getrusage(int, *Rusage) error pkg syscall (openbsd-386-cgo), func Getsid(int) (int, error) pkg syscall (openbsd-386-cgo), func Getsockname(int) (Sockaddr, error) pkg syscall (openbsd-386-cgo), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (openbsd-386-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (openbsd-386-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (openbsd-386-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (openbsd-386-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (openbsd-386-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (openbsd-386-cgo), func GetsockoptInt(int, int, int) (int, error) pkg syscall (openbsd-386-cgo), func Issetugid() bool pkg syscall (openbsd-386-cgo), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (openbsd-386-cgo), func Kill(int, Signal) error pkg syscall (openbsd-386-cgo), func Kqueue() (int, error) pkg syscall (openbsd-386-cgo), func Listen(int, int) error pkg syscall (openbsd-386-cgo), func Lstat(string, *Stat_t) error pkg syscall (openbsd-386-cgo), func Mkfifo(string, uint32) error pkg syscall (openbsd-386-cgo), func Mknod(string, uint32, int) error pkg syscall (openbsd-386-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (openbsd-386-cgo), func Munmap([]uint8) error pkg syscall (openbsd-386-cgo), func Nanosleep(*Timespec, *Timespec) error pkg syscall (openbsd-386-cgo), func Open(string, int, uint32) (int, error) pkg syscall (openbsd-386-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (openbsd-386-cgo), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (openbsd-386-cgo), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (openbsd-386-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (openbsd-386-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (openbsd-386-cgo), func Pathconf(string, int) (int, error) pkg syscall (openbsd-386-cgo), func Pipe([]int) error pkg syscall (openbsd-386-cgo), func Pread(int, []uint8, int64) (int, error) pkg syscall (openbsd-386-cgo), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (openbsd-386-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-386-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-386-cgo), func Read(int, []uint8) (int, error) pkg syscall (openbsd-386-cgo), func ReadDirent(int, []uint8) (int, error) pkg syscall (openbsd-386-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (openbsd-386-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (openbsd-386-cgo), func Revoke(string) error pkg syscall (openbsd-386-cgo), func RouteRIB(int, int) ([]uint8, error) pkg syscall (openbsd-386-cgo), func Seek(int, int64, int) (int64, error) pkg syscall (openbsd-386-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (openbsd-386-cgo), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (openbsd-386-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (openbsd-386-cgo), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (openbsd-386-cgo), func SetBpf(int, []BpfInsn) error pkg syscall (openbsd-386-cgo), func SetBpfBuflen(int, int) (int, error) pkg syscall (openbsd-386-cgo), func SetBpfDatalink(int, int) (int, error) pkg syscall (openbsd-386-cgo), func SetBpfHeadercmpl(int, int) error pkg syscall (openbsd-386-cgo), func SetBpfImmediate(int, int) error pkg syscall (openbsd-386-cgo), func SetBpfInterface(int, string) error pkg syscall (openbsd-386-cgo), func SetBpfPromisc(int, int) error pkg syscall (openbsd-386-cgo), func SetBpfTimeout(int, *Timeval) error pkg syscall (openbsd-386-cgo), func SetKevent(*Kevent_t, int, int, int) pkg syscall (openbsd-386-cgo), func SetNonblock(int, bool) error pkg syscall (openbsd-386-cgo), func Setegid(int) error pkg syscall (openbsd-386-cgo), func Seteuid(int) error pkg syscall (openbsd-386-cgo), func Setgid(int) error pkg syscall (openbsd-386-cgo), func Setgroups([]int) error pkg syscall (openbsd-386-cgo), func Setlogin(string) error pkg syscall (openbsd-386-cgo), func Setpgid(int, int) error pkg syscall (openbsd-386-cgo), func Setpriority(int, int, int) error pkg syscall (openbsd-386-cgo), func Setregid(int, int) error pkg syscall (openbsd-386-cgo), func Setreuid(int, int) error pkg syscall (openbsd-386-cgo), func Setrlimit(int, *Rlimit) error pkg syscall (openbsd-386-cgo), func Setsid() (int, error) pkg syscall (openbsd-386-cgo), func SetsockoptByte(int, int, int, uint8) error pkg syscall (openbsd-386-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (openbsd-386-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (openbsd-386-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (openbsd-386-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (openbsd-386-cgo), func SetsockoptInt(int, int, int, int) error pkg syscall (openbsd-386-cgo), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (openbsd-386-cgo), func SetsockoptString(int, int, int, string) error pkg syscall (openbsd-386-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (openbsd-386-cgo), func Settimeofday(*Timeval) error pkg syscall (openbsd-386-cgo), func Setuid(int) error pkg syscall (openbsd-386-cgo), func Shutdown(int, int) error pkg syscall (openbsd-386-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (openbsd-386-cgo), func Socket(int, int, int) (int, error) pkg syscall (openbsd-386-cgo), func Socketpair(int, int, int) ([2]int, error) pkg syscall (openbsd-386-cgo), func Stat(string, *Stat_t) error pkg syscall (openbsd-386-cgo), func Statfs(string, *Statfs_t) error pkg syscall (openbsd-386-cgo), func StringSlicePtr([]string) []*uint8 pkg syscall (openbsd-386-cgo), func Sync() error pkg syscall (openbsd-386-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-386-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-386-cgo), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-386-cgo), func Sysctl(string) (string, error) pkg syscall (openbsd-386-cgo), func SysctlUint32(string) (uint32, error) pkg syscall (openbsd-386-cgo), func TimevalToNsec(Timeval) int64 pkg syscall (openbsd-386-cgo), func Truncate(string, int64) error pkg syscall (openbsd-386-cgo), func Umask(int) int pkg syscall (openbsd-386-cgo), func UnixRights(...int) []uint8 pkg syscall (openbsd-386-cgo), func Unmount(string, int) error pkg syscall (openbsd-386-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (openbsd-386-cgo), func Write(int, []uint8) (int, error) pkg syscall (openbsd-386-cgo), method (*Cmsghdr) SetLen(int) pkg syscall (openbsd-386-cgo), method (*Iovec) SetLen(int) pkg syscall (openbsd-386-cgo), method (*Msghdr) SetControllen(int) pkg syscall (openbsd-386-cgo), type BpfHdr struct pkg syscall (openbsd-386-cgo), type BpfHdr struct, Caplen uint32 pkg syscall (openbsd-386-cgo), type BpfHdr struct, Datalen uint32 pkg syscall (openbsd-386-cgo), type BpfHdr struct, Hdrlen uint16 pkg syscall (openbsd-386-cgo), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (openbsd-386-cgo), type BpfHdr struct, Tstamp BpfTimeval pkg syscall (openbsd-386-cgo), type BpfInsn struct pkg syscall (openbsd-386-cgo), type BpfInsn struct, Code uint16 pkg syscall (openbsd-386-cgo), type BpfInsn struct, Jf uint8 pkg syscall (openbsd-386-cgo), type BpfInsn struct, Jt uint8 pkg syscall (openbsd-386-cgo), type BpfInsn struct, K uint32 pkg syscall (openbsd-386-cgo), type BpfProgram struct pkg syscall (openbsd-386-cgo), type BpfProgram struct, Insns *BpfInsn pkg syscall (openbsd-386-cgo), type BpfProgram struct, Len uint32 pkg syscall (openbsd-386-cgo), type BpfStat struct pkg syscall (openbsd-386-cgo), type BpfStat struct, Drop uint32 pkg syscall (openbsd-386-cgo), type BpfStat struct, Recv uint32 pkg syscall (openbsd-386-cgo), type BpfTimeval struct pkg syscall (openbsd-386-cgo), type BpfTimeval struct, Sec uint32 pkg syscall (openbsd-386-cgo), type BpfTimeval struct, Usec uint32 pkg syscall (openbsd-386-cgo), type BpfVersion struct pkg syscall (openbsd-386-cgo), type BpfVersion struct, Major uint16 pkg syscall (openbsd-386-cgo), type BpfVersion struct, Minor uint16 pkg syscall (openbsd-386-cgo), type Cmsghdr struct pkg syscall (openbsd-386-cgo), type Cmsghdr struct, Len uint32 pkg syscall (openbsd-386-cgo), type Cmsghdr struct, Level int32 pkg syscall (openbsd-386-cgo), type Cmsghdr struct, Type int32 pkg syscall (openbsd-386-cgo), type Credential struct pkg syscall (openbsd-386-cgo), type Credential struct, Gid uint32 pkg syscall (openbsd-386-cgo), type Credential struct, Groups []uint32 pkg syscall (openbsd-386-cgo), type Credential struct, Uid uint32 pkg syscall (openbsd-386-cgo), type Dirent struct pkg syscall (openbsd-386-cgo), type Dirent struct, Fileno uint32 pkg syscall (openbsd-386-cgo), type Dirent struct, Name [256]int8 pkg syscall (openbsd-386-cgo), type Dirent struct, Namlen uint8 pkg syscall (openbsd-386-cgo), type Dirent struct, Reclen uint16 pkg syscall (openbsd-386-cgo), type Dirent struct, Type uint8 pkg syscall (openbsd-386-cgo), type FdSet struct pkg syscall (openbsd-386-cgo), type FdSet struct, Bits [32]int32 pkg syscall (openbsd-386-cgo), type Flock_t struct pkg syscall (openbsd-386-cgo), type Flock_t struct, Len int64 pkg syscall (openbsd-386-cgo), type Flock_t struct, Pid int32 pkg syscall (openbsd-386-cgo), type Flock_t struct, Start int64 pkg syscall (openbsd-386-cgo), type Flock_t struct, Type int16 pkg syscall (openbsd-386-cgo), type Flock_t struct, Whence int16 pkg syscall (openbsd-386-cgo), type Fsid struct pkg syscall (openbsd-386-cgo), type Fsid struct, Val [2]int32 pkg syscall (openbsd-386-cgo), type ICMPv6Filter struct pkg syscall (openbsd-386-cgo), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (openbsd-386-cgo), type IPv6MTUInfo struct pkg syscall (openbsd-386-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (openbsd-386-cgo), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (openbsd-386-cgo), type IfAnnounceMsghdr struct pkg syscall (openbsd-386-cgo), type IfAnnounceMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-386-cgo), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (openbsd-386-cgo), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (openbsd-386-cgo), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (openbsd-386-cgo), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (openbsd-386-cgo), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (openbsd-386-cgo), type IfAnnounceMsghdr struct, What uint16 pkg syscall (openbsd-386-cgo), type IfData struct pkg syscall (openbsd-386-cgo), type IfData struct, Addrlen uint8 pkg syscall (openbsd-386-cgo), type IfData struct, Baudrate uint64 pkg syscall (openbsd-386-cgo), type IfData struct, Capabilities uint32 pkg syscall (openbsd-386-cgo), type IfData struct, Collisions uint64 pkg syscall (openbsd-386-cgo), type IfData struct, Hdrlen uint8 pkg syscall (openbsd-386-cgo), type IfData struct, Ibytes uint64 pkg syscall (openbsd-386-cgo), type IfData struct, Ierrors uint64 pkg syscall (openbsd-386-cgo), type IfData struct, Imcasts uint64 pkg syscall (openbsd-386-cgo), type IfData struct, Ipackets uint64 pkg syscall (openbsd-386-cgo), type IfData struct, Iqdrops uint64 pkg syscall (openbsd-386-cgo), type IfData struct, Lastchange Timeval pkg syscall (openbsd-386-cgo), type IfData struct, Link_state uint8 pkg syscall (openbsd-386-cgo), type IfData struct, Mclpool [7]Mclpool pkg syscall (openbsd-386-cgo), type IfData struct, Metric uint32 pkg syscall (openbsd-386-cgo), type IfData struct, Mtu uint32 pkg syscall (openbsd-386-cgo), type IfData struct, Noproto uint64 pkg syscall (openbsd-386-cgo), type IfData struct, Obytes uint64 pkg syscall (openbsd-386-cgo), type IfData struct, Oerrors uint64 pkg syscall (openbsd-386-cgo), type IfData struct, Omcasts uint64 pkg syscall (openbsd-386-cgo), type IfData struct, Opackets uint64 pkg syscall (openbsd-386-cgo), type IfData struct, Pad uint32 pkg syscall (openbsd-386-cgo), type IfData struct, Type uint8 pkg syscall (openbsd-386-cgo), type IfMsghdr struct pkg syscall (openbsd-386-cgo), type IfMsghdr struct, Addrs int32 pkg syscall (openbsd-386-cgo), type IfMsghdr struct, Data IfData pkg syscall (openbsd-386-cgo), type IfMsghdr struct, Flags int32 pkg syscall (openbsd-386-cgo), type IfMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-386-cgo), type IfMsghdr struct, Index uint16 pkg syscall (openbsd-386-cgo), type IfMsghdr struct, Msglen uint16 pkg syscall (openbsd-386-cgo), type IfMsghdr struct, Pad1 uint8 pkg syscall (openbsd-386-cgo), type IfMsghdr struct, Pad2 uint8 pkg syscall (openbsd-386-cgo), type IfMsghdr struct, Tableid uint16 pkg syscall (openbsd-386-cgo), type IfMsghdr struct, Type uint8 pkg syscall (openbsd-386-cgo), type IfMsghdr struct, Version uint8 pkg syscall (openbsd-386-cgo), type IfMsghdr struct, Xflags int32 pkg syscall (openbsd-386-cgo), type IfaMsghdr struct pkg syscall (openbsd-386-cgo), type IfaMsghdr struct, Addrs int32 pkg syscall (openbsd-386-cgo), type IfaMsghdr struct, Flags int32 pkg syscall (openbsd-386-cgo), type IfaMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-386-cgo), type IfaMsghdr struct, Index uint16 pkg syscall (openbsd-386-cgo), type IfaMsghdr struct, Metric int32 pkg syscall (openbsd-386-cgo), type IfaMsghdr struct, Msglen uint16 pkg syscall (openbsd-386-cgo), type IfaMsghdr struct, Pad1 uint8 pkg syscall (openbsd-386-cgo), type IfaMsghdr struct, Pad2 uint8 pkg syscall (openbsd-386-cgo), type IfaMsghdr struct, Tableid uint16 pkg syscall (openbsd-386-cgo), type IfaMsghdr struct, Type uint8 pkg syscall (openbsd-386-cgo), type IfaMsghdr struct, Version uint8 pkg syscall (openbsd-386-cgo), type Inet6Pktinfo struct pkg syscall (openbsd-386-cgo), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (openbsd-386-cgo), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (openbsd-386-cgo), type InterfaceAddrMessage struct pkg syscall (openbsd-386-cgo), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (openbsd-386-cgo), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (openbsd-386-cgo), type InterfaceAnnounceMessage struct pkg syscall (openbsd-386-cgo), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (openbsd-386-cgo), type InterfaceMessage struct pkg syscall (openbsd-386-cgo), type InterfaceMessage struct, Data []uint8 pkg syscall (openbsd-386-cgo), type InterfaceMessage struct, Header IfMsghdr pkg syscall (openbsd-386-cgo), type Iovec struct pkg syscall (openbsd-386-cgo), type Iovec struct, Base *uint8 pkg syscall (openbsd-386-cgo), type Iovec struct, Len uint32 pkg syscall (openbsd-386-cgo), type Kevent_t struct pkg syscall (openbsd-386-cgo), type Kevent_t struct, Data int32 pkg syscall (openbsd-386-cgo), type Kevent_t struct, Fflags uint32 pkg syscall (openbsd-386-cgo), type Kevent_t struct, Filter int16 pkg syscall (openbsd-386-cgo), type Kevent_t struct, Flags uint16 pkg syscall (openbsd-386-cgo), type Kevent_t struct, Ident uint32 pkg syscall (openbsd-386-cgo), type Kevent_t struct, Udata *uint8 pkg syscall (openbsd-386-cgo), type Mclpool struct pkg syscall (openbsd-386-cgo), type Mclpool struct, Alive uint16 pkg syscall (openbsd-386-cgo), type Mclpool struct, Cwm uint16 pkg syscall (openbsd-386-cgo), type Mclpool struct, Grown uint32 pkg syscall (openbsd-386-cgo), type Mclpool struct, Hwm uint16 pkg syscall (openbsd-386-cgo), type Mclpool struct, Lwm uint16 pkg syscall (openbsd-386-cgo), type Msghdr struct pkg syscall (openbsd-386-cgo), type Msghdr struct, Control *uint8 pkg syscall (openbsd-386-cgo), type Msghdr struct, Controllen uint32 pkg syscall (openbsd-386-cgo), type Msghdr struct, Flags int32 pkg syscall (openbsd-386-cgo), type Msghdr struct, Iov *Iovec pkg syscall (openbsd-386-cgo), type Msghdr struct, Iovlen uint32 pkg syscall (openbsd-386-cgo), type Msghdr struct, Name *uint8 pkg syscall (openbsd-386-cgo), type Msghdr struct, Namelen uint32 pkg syscall (openbsd-386-cgo), type RawSockaddr struct, Data [14]int8 pkg syscall (openbsd-386-cgo), type RawSockaddr struct, Family uint8 pkg syscall (openbsd-386-cgo), type RawSockaddr struct, Len uint8 pkg syscall (openbsd-386-cgo), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (openbsd-386-cgo), type RawSockaddrDatalink struct pkg syscall (openbsd-386-cgo), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (openbsd-386-cgo), type RawSockaddrDatalink struct, Data [24]int8 pkg syscall (openbsd-386-cgo), type RawSockaddrDatalink struct, Family uint8 pkg syscall (openbsd-386-cgo), type RawSockaddrDatalink struct, Index uint16 pkg syscall (openbsd-386-cgo), type RawSockaddrDatalink struct, Len uint8 pkg syscall (openbsd-386-cgo), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (openbsd-386-cgo), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (openbsd-386-cgo), type RawSockaddrDatalink struct, Type uint8 pkg syscall (openbsd-386-cgo), type RawSockaddrInet4 struct, Family uint8 pkg syscall (openbsd-386-cgo), type RawSockaddrInet4 struct, Len uint8 pkg syscall (openbsd-386-cgo), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (openbsd-386-cgo), type RawSockaddrInet6 struct, Family uint8 pkg syscall (openbsd-386-cgo), type RawSockaddrInet6 struct, Len uint8 pkg syscall (openbsd-386-cgo), type RawSockaddrUnix struct pkg syscall (openbsd-386-cgo), type RawSockaddrUnix struct, Family uint8 pkg syscall (openbsd-386-cgo), type RawSockaddrUnix struct, Len uint8 pkg syscall (openbsd-386-cgo), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (openbsd-386-cgo), type Rlimit struct pkg syscall (openbsd-386-cgo), type Rlimit struct, Cur uint64 pkg syscall (openbsd-386-cgo), type Rlimit struct, Max uint64 pkg syscall (openbsd-386-cgo), type RouteMessage struct pkg syscall (openbsd-386-cgo), type RouteMessage struct, Data []uint8 pkg syscall (openbsd-386-cgo), type RouteMessage struct, Header RtMsghdr pkg syscall (openbsd-386-cgo), type RoutingMessage interface, unexported methods pkg syscall (openbsd-386-cgo), type RtMetrics struct pkg syscall (openbsd-386-cgo), type RtMetrics struct, Expire uint32 pkg syscall (openbsd-386-cgo), type RtMetrics struct, Hopcount uint32 pkg syscall (openbsd-386-cgo), type RtMetrics struct, Locks uint32 pkg syscall (openbsd-386-cgo), type RtMetrics struct, Mtu uint32 pkg syscall (openbsd-386-cgo), type RtMetrics struct, Pksent uint64 pkg syscall (openbsd-386-cgo), type RtMetrics struct, Recvpipe uint32 pkg syscall (openbsd-386-cgo), type RtMetrics struct, Refcnt uint32 pkg syscall (openbsd-386-cgo), type RtMetrics struct, Rtt uint32 pkg syscall (openbsd-386-cgo), type RtMetrics struct, Rttvar uint32 pkg syscall (openbsd-386-cgo), type RtMetrics struct, Sendpipe uint32 pkg syscall (openbsd-386-cgo), type RtMetrics struct, Ssthresh uint32 pkg syscall (openbsd-386-cgo), type RtMsghdr struct pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Addrs int32 pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Errno int32 pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Flags int32 pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Fmask int32 pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Index uint16 pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Inits uint32 pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Mpls uint8 pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Msglen uint16 pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Pid int32 pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Priority uint8 pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Rmx RtMetrics pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Seq int32 pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Tableid uint16 pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Type uint8 pkg syscall (openbsd-386-cgo), type RtMsghdr struct, Version uint8 pkg syscall (openbsd-386-cgo), type Rusage struct, Idrss int32 pkg syscall (openbsd-386-cgo), type Rusage struct, Inblock int32 pkg syscall (openbsd-386-cgo), type Rusage struct, Isrss int32 pkg syscall (openbsd-386-cgo), type Rusage struct, Ixrss int32 pkg syscall (openbsd-386-cgo), type Rusage struct, Majflt int32 pkg syscall (openbsd-386-cgo), type Rusage struct, Maxrss int32 pkg syscall (openbsd-386-cgo), type Rusage struct, Minflt int32 pkg syscall (openbsd-386-cgo), type Rusage struct, Msgrcv int32 pkg syscall (openbsd-386-cgo), type Rusage struct, Msgsnd int32 pkg syscall (openbsd-386-cgo), type Rusage struct, Nivcsw int32 pkg syscall (openbsd-386-cgo), type Rusage struct, Nsignals int32 pkg syscall (openbsd-386-cgo), type Rusage struct, Nswap int32 pkg syscall (openbsd-386-cgo), type Rusage struct, Nvcsw int32 pkg syscall (openbsd-386-cgo), type Rusage struct, Oublock int32 pkg syscall (openbsd-386-cgo), type Rusage struct, Stime Timeval pkg syscall (openbsd-386-cgo), type Rusage struct, Utime Timeval pkg syscall (openbsd-386-cgo), type SockaddrDatalink struct pkg syscall (openbsd-386-cgo), type SockaddrDatalink struct, Alen uint8 pkg syscall (openbsd-386-cgo), type SockaddrDatalink struct, Data [24]int8 pkg syscall (openbsd-386-cgo), type SockaddrDatalink struct, Family uint8 pkg syscall (openbsd-386-cgo), type SockaddrDatalink struct, Index uint16 pkg syscall (openbsd-386-cgo), type SockaddrDatalink struct, Len uint8 pkg syscall (openbsd-386-cgo), type SockaddrDatalink struct, Nlen uint8 pkg syscall (openbsd-386-cgo), type SockaddrDatalink struct, Slen uint8 pkg syscall (openbsd-386-cgo), type SockaddrDatalink struct, Type uint8 pkg syscall (openbsd-386-cgo), type SocketControlMessage struct pkg syscall (openbsd-386-cgo), type SocketControlMessage struct, Data []uint8 pkg syscall (openbsd-386-cgo), type SocketControlMessage struct, Header Cmsghdr pkg syscall (openbsd-386-cgo), type Stat_t struct pkg syscall (openbsd-386-cgo), type Stat_t struct, Atim Timespec pkg syscall (openbsd-386-cgo), type Stat_t struct, Blksize uint32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Blocks int64 pkg syscall (openbsd-386-cgo), type Stat_t struct, Ctim Timespec pkg syscall (openbsd-386-cgo), type Stat_t struct, Dev int32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Flags uint32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Gen uint32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Gid uint32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Ino uint32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Lspare0 int32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Lspare1 int32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Mode uint32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Mtim Timespec pkg syscall (openbsd-386-cgo), type Stat_t struct, Nlink uint32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Qspare [2]int64 pkg syscall (openbsd-386-cgo), type Stat_t struct, Rdev int32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Size int64 pkg syscall (openbsd-386-cgo), type Stat_t struct, Uid uint32 pkg syscall (openbsd-386-cgo), type Stat_t struct, X__st_birthtim Timespec pkg syscall (openbsd-386-cgo), type Statfs_t struct pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_asyncreads uint64 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_asyncwrites uint64 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_bavail int64 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_bfree uint64 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_blocks uint64 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_bsize uint32 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_ctime uint32 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_favail int64 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_ffree uint64 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_files uint64 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_flags uint32 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_fsid Fsid pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_fstypename [16]int8 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_iosize uint32 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_mntfromname [90]int8 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_mntonname [90]int8 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_namemax uint32 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_owner uint32 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_spare [3]uint32 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_syncreads uint64 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_syncwrites uint64 pkg syscall (openbsd-386-cgo), type Statfs_t struct, Mount_info [160]uint8 pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Chroot string pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Credential *Credential pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Noctty bool pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Ptrace bool pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Setctty bool pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Setpgid bool pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Setsid bool pkg syscall (openbsd-386-cgo), type Timespec struct, Nsec int32 pkg syscall (openbsd-386-cgo), type Timespec struct, Sec int32 pkg syscall (openbsd-386-cgo), type Timeval struct, Sec int32 pkg syscall (openbsd-386-cgo), type Timeval struct, Usec int32 pkg syscall (openbsd-386-cgo), type WaitStatus uint32 pkg syscall (openbsd-386-cgo), var Stderr int pkg syscall (openbsd-386-cgo), var Stdin int pkg syscall (openbsd-386-cgo), var Stdout int pkg syscall (openbsd-amd64), const AF_APPLETALK ideal-int pkg syscall (openbsd-amd64), const AF_BLUETOOTH ideal-int pkg syscall (openbsd-amd64), const AF_CCITT ideal-int pkg syscall (openbsd-amd64), const AF_CHAOS ideal-int pkg syscall (openbsd-amd64), const AF_CNT ideal-int pkg syscall (openbsd-amd64), const AF_COIP ideal-int pkg syscall (openbsd-amd64), const AF_DATAKIT ideal-int pkg syscall (openbsd-amd64), const AF_DECnet ideal-int pkg syscall (openbsd-amd64), const AF_DLI ideal-int pkg syscall (openbsd-amd64), const AF_E164 ideal-int pkg syscall (openbsd-amd64), const AF_ECMA ideal-int pkg syscall (openbsd-amd64), const AF_ENCAP ideal-int pkg syscall (openbsd-amd64), const AF_HYLINK ideal-int pkg syscall (openbsd-amd64), const AF_IMPLINK ideal-int pkg syscall (openbsd-amd64), const AF_IPX ideal-int pkg syscall (openbsd-amd64), const AF_ISDN ideal-int pkg syscall (openbsd-amd64), const AF_ISO ideal-int pkg syscall (openbsd-amd64), const AF_KEY ideal-int pkg syscall (openbsd-amd64), const AF_LAT ideal-int pkg syscall (openbsd-amd64), const AF_LINK ideal-int pkg syscall (openbsd-amd64), const AF_LOCAL ideal-int pkg syscall (openbsd-amd64), const AF_MAX ideal-int pkg syscall (openbsd-amd64), const AF_MPLS ideal-int pkg syscall (openbsd-amd64), const AF_NATM ideal-int pkg syscall (openbsd-amd64), const AF_NS ideal-int pkg syscall (openbsd-amd64), const AF_OSI ideal-int pkg syscall (openbsd-amd64), const AF_PUP ideal-int pkg syscall (openbsd-amd64), const AF_ROUTE ideal-int pkg syscall (openbsd-amd64), const AF_SIP ideal-int pkg syscall (openbsd-amd64), const AF_SNA ideal-int pkg syscall (openbsd-amd64), const ARPHRD_ETHER ideal-int pkg syscall (openbsd-amd64), const ARPHRD_FRELAY ideal-int pkg syscall (openbsd-amd64), const ARPHRD_IEEE1394 ideal-int pkg syscall (openbsd-amd64), const ARPHRD_IEEE802 ideal-int pkg syscall (openbsd-amd64), const B0 ideal-int pkg syscall (openbsd-amd64), const B110 ideal-int pkg syscall (openbsd-amd64), const B115200 ideal-int pkg syscall (openbsd-amd64), const B1200 ideal-int pkg syscall (openbsd-amd64), const B134 ideal-int pkg syscall (openbsd-amd64), const B14400 ideal-int pkg syscall (openbsd-amd64), const B150 ideal-int pkg syscall (openbsd-amd64), const B1800 ideal-int pkg syscall (openbsd-amd64), const B19200 ideal-int pkg syscall (openbsd-amd64), const B200 ideal-int pkg syscall (openbsd-amd64), const B230400 ideal-int pkg syscall (openbsd-amd64), const B2400 ideal-int pkg syscall (openbsd-amd64), const B28800 ideal-int pkg syscall (openbsd-amd64), const B300 ideal-int pkg syscall (openbsd-amd64), const B38400 ideal-int pkg syscall (openbsd-amd64), const B4800 ideal-int pkg syscall (openbsd-amd64), const B50 ideal-int pkg syscall (openbsd-amd64), const B57600 ideal-int pkg syscall (openbsd-amd64), const B600 ideal-int pkg syscall (openbsd-amd64), const B7200 ideal-int pkg syscall (openbsd-amd64), const B75 ideal-int pkg syscall (openbsd-amd64), const B76800 ideal-int pkg syscall (openbsd-amd64), const B9600 ideal-int pkg syscall (openbsd-amd64), const BIOCFLUSH ideal-int pkg syscall (openbsd-amd64), const BIOCGBLEN ideal-int pkg syscall (openbsd-amd64), const BIOCGDIRFILT ideal-int pkg syscall (openbsd-amd64), const BIOCGDLT ideal-int pkg syscall (openbsd-amd64), const BIOCGDLTLIST ideal-int pkg syscall (openbsd-amd64), const BIOCGETIF ideal-int pkg syscall (openbsd-amd64), const BIOCGFILDROP ideal-int pkg syscall (openbsd-amd64), const BIOCGHDRCMPLT ideal-int pkg syscall (openbsd-amd64), const BIOCGRSIG ideal-int pkg syscall (openbsd-amd64), const BIOCGRTIMEOUT ideal-int pkg syscall (openbsd-amd64), const BIOCGSTATS ideal-int pkg syscall (openbsd-amd64), const BIOCIMMEDIATE ideal-int pkg syscall (openbsd-amd64), const BIOCLOCK ideal-int pkg syscall (openbsd-amd64), const BIOCPROMISC ideal-int pkg syscall (openbsd-amd64), const BIOCSBLEN ideal-int pkg syscall (openbsd-amd64), const BIOCSDIRFILT ideal-int pkg syscall (openbsd-amd64), const BIOCSDLT ideal-int pkg syscall (openbsd-amd64), const BIOCSETF ideal-int pkg syscall (openbsd-amd64), const BIOCSETIF ideal-int pkg syscall (openbsd-amd64), const BIOCSETWF ideal-int pkg syscall (openbsd-amd64), const BIOCSFILDROP ideal-int pkg syscall (openbsd-amd64), const BIOCSHDRCMPLT ideal-int pkg syscall (openbsd-amd64), const BIOCSRSIG ideal-int pkg syscall (openbsd-amd64), const BIOCSRTIMEOUT ideal-int pkg syscall (openbsd-amd64), const BIOCVERSION ideal-int pkg syscall (openbsd-amd64), const BPF_A ideal-int pkg syscall (openbsd-amd64), const BPF_ABS ideal-int pkg syscall (openbsd-amd64), const BPF_ADD ideal-int pkg syscall (openbsd-amd64), const BPF_ALIGNMENT ideal-int pkg syscall (openbsd-amd64), const BPF_ALU ideal-int pkg syscall (openbsd-amd64), const BPF_AND ideal-int pkg syscall (openbsd-amd64), const BPF_B ideal-int pkg syscall (openbsd-amd64), const BPF_DIRECTION_IN ideal-int pkg syscall (openbsd-amd64), const BPF_DIRECTION_OUT ideal-int pkg syscall (openbsd-amd64), const BPF_DIV ideal-int pkg syscall (openbsd-amd64), const BPF_H ideal-int pkg syscall (openbsd-amd64), const BPF_IMM ideal-int pkg syscall (openbsd-amd64), const BPF_IND ideal-int pkg syscall (openbsd-amd64), const BPF_JA ideal-int pkg syscall (openbsd-amd64), const BPF_JEQ ideal-int pkg syscall (openbsd-amd64), const BPF_JGE ideal-int pkg syscall (openbsd-amd64), const BPF_JGT ideal-int pkg syscall (openbsd-amd64), const BPF_JMP ideal-int pkg syscall (openbsd-amd64), const BPF_JSET ideal-int pkg syscall (openbsd-amd64), const BPF_K ideal-int pkg syscall (openbsd-amd64), const BPF_LD ideal-int pkg syscall (openbsd-amd64), const BPF_LDX ideal-int pkg syscall (openbsd-amd64), const BPF_LEN ideal-int pkg syscall (openbsd-amd64), const BPF_LSH ideal-int pkg syscall (openbsd-amd64), const BPF_MAJOR_VERSION ideal-int pkg syscall (openbsd-amd64), const BPF_MAXBUFSIZE ideal-int pkg syscall (openbsd-amd64), const BPF_MAXINSNS ideal-int pkg syscall (openbsd-amd64), const BPF_MEM ideal-int pkg syscall (openbsd-amd64), const BPF_MEMWORDS ideal-int pkg syscall (openbsd-amd64), const BPF_MINBUFSIZE ideal-int pkg syscall (openbsd-amd64), const BPF_MINOR_VERSION ideal-int pkg syscall (openbsd-amd64), const BPF_MISC ideal-int pkg syscall (openbsd-amd64), const BPF_MSH ideal-int pkg syscall (openbsd-amd64), const BPF_MUL ideal-int pkg syscall (openbsd-amd64), const BPF_NEG ideal-int pkg syscall (openbsd-amd64), const BPF_OR ideal-int pkg syscall (openbsd-amd64), const BPF_RELEASE ideal-int pkg syscall (openbsd-amd64), const BPF_RET ideal-int pkg syscall (openbsd-amd64), const BPF_RSH ideal-int pkg syscall (openbsd-amd64), const BPF_ST ideal-int pkg syscall (openbsd-amd64), const BPF_STX ideal-int pkg syscall (openbsd-amd64), const BPF_SUB ideal-int pkg syscall (openbsd-amd64), const BPF_TAX ideal-int pkg syscall (openbsd-amd64), const BPF_TXA ideal-int pkg syscall (openbsd-amd64), const BPF_W ideal-int pkg syscall (openbsd-amd64), const BPF_X ideal-int pkg syscall (openbsd-amd64), const BRKINT ideal-int pkg syscall (openbsd-amd64), const CCR0_FLUSH ideal-int pkg syscall (openbsd-amd64), const CFLUSH ideal-int pkg syscall (openbsd-amd64), const CLOCAL ideal-int pkg syscall (openbsd-amd64), const CPUID_CFLUSH ideal-int pkg syscall (openbsd-amd64), const CREAD ideal-int pkg syscall (openbsd-amd64), const CS5 ideal-int pkg syscall (openbsd-amd64), const CS6 ideal-int pkg syscall (openbsd-amd64), const CS7 ideal-int pkg syscall (openbsd-amd64), const CS8 ideal-int pkg syscall (openbsd-amd64), const CSIZE ideal-int pkg syscall (openbsd-amd64), const CSTART ideal-int pkg syscall (openbsd-amd64), const CSTATUS ideal-int pkg syscall (openbsd-amd64), const CSTOP ideal-int pkg syscall (openbsd-amd64), const CSTOPB ideal-int pkg syscall (openbsd-amd64), const CSUSP ideal-int pkg syscall (openbsd-amd64), const CTL_MAXNAME ideal-int pkg syscall (openbsd-amd64), const CTL_NET ideal-int pkg syscall (openbsd-amd64), const DIOCOSFPFLUSH ideal-int pkg syscall (openbsd-amd64), const DLT_ARCNET ideal-int pkg syscall (openbsd-amd64), const DLT_ATM_RFC1483 ideal-int pkg syscall (openbsd-amd64), const DLT_AX25 ideal-int pkg syscall (openbsd-amd64), const DLT_CHAOS ideal-int pkg syscall (openbsd-amd64), const DLT_C_HDLC ideal-int pkg syscall (openbsd-amd64), const DLT_EN10MB ideal-int pkg syscall (openbsd-amd64), const DLT_EN3MB ideal-int pkg syscall (openbsd-amd64), const DLT_ENC ideal-int pkg syscall (openbsd-amd64), const DLT_FDDI ideal-int pkg syscall (openbsd-amd64), const DLT_IEEE802 ideal-int pkg syscall (openbsd-amd64), const DLT_IEEE802_11 ideal-int pkg syscall (openbsd-amd64), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (openbsd-amd64), const DLT_LOOP ideal-int pkg syscall (openbsd-amd64), const DLT_MPLS ideal-int pkg syscall (openbsd-amd64), const DLT_NULL ideal-int pkg syscall (openbsd-amd64), const DLT_PFLOG ideal-int pkg syscall (openbsd-amd64), const DLT_PFSYNC ideal-int pkg syscall (openbsd-amd64), const DLT_PPP ideal-int pkg syscall (openbsd-amd64), const DLT_PPP_BSDOS ideal-int pkg syscall (openbsd-amd64), const DLT_PPP_ETHER ideal-int pkg syscall (openbsd-amd64), const DLT_PPP_SERIAL ideal-int pkg syscall (openbsd-amd64), const DLT_PRONET ideal-int pkg syscall (openbsd-amd64), const DLT_RAW ideal-int pkg syscall (openbsd-amd64), const DLT_SLIP ideal-int pkg syscall (openbsd-amd64), const DLT_SLIP_BSDOS ideal-int pkg syscall (openbsd-amd64), const DT_BLK ideal-int pkg syscall (openbsd-amd64), const DT_CHR ideal-int pkg syscall (openbsd-amd64), const DT_DIR ideal-int pkg syscall (openbsd-amd64), const DT_FIFO ideal-int pkg syscall (openbsd-amd64), const DT_LNK ideal-int pkg syscall (openbsd-amd64), const DT_REG ideal-int pkg syscall (openbsd-amd64), const DT_SOCK ideal-int pkg syscall (openbsd-amd64), const DT_UNKNOWN ideal-int pkg syscall (openbsd-amd64), const EAUTH Errno pkg syscall (openbsd-amd64), const EBADRPC Errno pkg syscall (openbsd-amd64), const ECHO ideal-int pkg syscall (openbsd-amd64), const ECHOCTL ideal-int pkg syscall (openbsd-amd64), const ECHOE ideal-int pkg syscall (openbsd-amd64), const ECHOK ideal-int pkg syscall (openbsd-amd64), const ECHOKE ideal-int pkg syscall (openbsd-amd64), const ECHONL ideal-int pkg syscall (openbsd-amd64), const ECHOPRT ideal-int pkg syscall (openbsd-amd64), const EFER_LMA ideal-int pkg syscall (openbsd-amd64), const EFER_LME ideal-int pkg syscall (openbsd-amd64), const EFER_NXE ideal-int pkg syscall (openbsd-amd64), const EFER_SCE ideal-int pkg syscall (openbsd-amd64), const EFTYPE Errno pkg syscall (openbsd-amd64), const EIPSEC Errno pkg syscall (openbsd-amd64), const ELAST Errno pkg syscall (openbsd-amd64), const EMEDIUMTYPE Errno pkg syscall (openbsd-amd64), const EMT_TAGOVF ideal-int pkg syscall (openbsd-amd64), const EMUL_ENABLED ideal-int pkg syscall (openbsd-amd64), const EMUL_NATIVE ideal-int pkg syscall (openbsd-amd64), const ENDRUNDISC ideal-int pkg syscall (openbsd-amd64), const ENEEDAUTH Errno pkg syscall (openbsd-amd64), const ENOATTR Errno pkg syscall (openbsd-amd64), const ENOMEDIUM Errno pkg syscall (openbsd-amd64), const EPROCLIM Errno pkg syscall (openbsd-amd64), const EPROCUNAVAIL Errno pkg syscall (openbsd-amd64), const EPROGMISMATCH Errno pkg syscall (openbsd-amd64), const EPROGUNAVAIL Errno pkg syscall (openbsd-amd64), const ERPCMISMATCH Errno pkg syscall (openbsd-amd64), const ETHERMIN ideal-int pkg syscall (openbsd-amd64), const ETHERMTU ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_8023 ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_AARP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_ACCTON ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_AEONIC ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_ALPHA ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_AMBER ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_AMOEBA ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_AOE ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_APOLLO ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_APOLLODOMAIN ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_APPLETALK ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_APPLITEK ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_ARGONAUT ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_ARP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_AT ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_ATALK ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_ATOMIC ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_ATT ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_ATTSTANFORD ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_AUTOPHON ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_AXIS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_BCLOOP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_BOFL ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_CABLETRON ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_CHAOS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_COMDESIGN ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_COMPUGRAPHIC ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_COUNTERPOINT ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_CRONUS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_CRONUSVLN ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DCA ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DDE ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DEBNI ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DECAM ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DECCUST ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DECDIAG ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DECDNS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DECDTS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DECEXPER ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DECLAST ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DECLTM ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DECMUMPS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DECNETBIOS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DELTACON ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DIDDLE ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DLOG1 ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DLOG2 ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DN ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DOGFIGHT ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_DSMD ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_ECMA ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_ENCRYPT ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_ES ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_EXCELAN ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_EXPERDATA ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_FLIP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_FLOWCONTROL ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_FRARP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_GENDYN ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_HAYES ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_HIPPI_FP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_HITACHI ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_HP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_IEEEPUP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_IEEEPUPAT ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_IMLBL ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_IMLBLDIAG ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_IP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_IPAS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_IPV6 ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_IPX ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_IPXNEW ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_KALPANA ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_LANBRIDGE ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_LANPROBE ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_LAT ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_LBACK ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_LITTLE ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_LLDP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_LOGICRAFT ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_LOOPBACK ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_MATRA ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_MAX ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_MERIT ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_MICP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_MOPDL ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_MOPRC ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_MOTOROLA ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_MPLS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_MPLS_MCAST ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_MUMPS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBPCC ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBPCLAIM ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBPCLREQ ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBPCLRSP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBPCREQ ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBPCRSP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBPDG ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBPDGB ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBPDLTE ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBPRAR ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBPRAS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBPRST ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBPSCD ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBPVCD ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NBS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NCD ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NESTAR ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NETBEUI ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NOVELL ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NSAT ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NSCOMPAT ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_NTRAILER ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_OS9 ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_OS9NET ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_PACER ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_PAE ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_PCS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_PLANNING ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_PPP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_PPPOE ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_PPPOEDISC ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_PRIMENTS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_PUP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_PUPAT ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_QINQ ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_RACAL ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_RATIONAL ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_RAWFR ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_RCL ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_RDP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_RETIX ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_REVARP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SCA ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SECTRA ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SECUREDATA ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SGITW ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SG_BOUNCE ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SG_DIAG ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SG_NETGAMES ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SG_RESV ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SIMNET ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SLOW ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SNA ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SNMP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SONIX ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SPIDER ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_SPRITE ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_STP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_TALARIS ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_TALARISMC ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_TCPCOMP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_TCPSM ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_TEC ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_TIGAN ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_TRAIL ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_TRANSETHER ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_TYMSHARE ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_UBBST ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_UBDEBUG ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_UBDIAGLOOP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_UBDL ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_UBNIU ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_UBNMC ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_VALID ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_VARIAN ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_VAXELN ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_VEECO ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_VEXP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_VGLAB ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_VINES ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_VINESECHO ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_VINESLOOP ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_VITAL ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_VLAN ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_VLTLMAN ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_VPROD ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_VURESERVED ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_WATERLOO ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_WELLFLEET ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_X25 ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_X75 ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_XNSSM ideal-int pkg syscall (openbsd-amd64), const ETHERTYPE_XTP ideal-int pkg syscall (openbsd-amd64), const ETHER_ADDR_LEN ideal-int pkg syscall (openbsd-amd64), const ETHER_ALIGN ideal-int pkg syscall (openbsd-amd64), const ETHER_CRC_LEN ideal-int pkg syscall (openbsd-amd64), const ETHER_CRC_POLY_BE ideal-int pkg syscall (openbsd-amd64), const ETHER_CRC_POLY_LE ideal-int pkg syscall (openbsd-amd64), const ETHER_HDR_LEN ideal-int pkg syscall (openbsd-amd64), const ETHER_MAX_DIX_LEN ideal-int pkg syscall (openbsd-amd64), const ETHER_MAX_LEN ideal-int pkg syscall (openbsd-amd64), const ETHER_MIN_LEN ideal-int pkg syscall (openbsd-amd64), const ETHER_TYPE_LEN ideal-int pkg syscall (openbsd-amd64), const ETHER_VLAN_ENCAP_LEN ideal-int pkg syscall (openbsd-amd64), const EVFILT_AIO ideal-int pkg syscall (openbsd-amd64), const EVFILT_PROC ideal-int pkg syscall (openbsd-amd64), const EVFILT_READ ideal-int pkg syscall (openbsd-amd64), const EVFILT_SIGNAL ideal-int pkg syscall (openbsd-amd64), const EVFILT_SYSCOUNT ideal-int pkg syscall (openbsd-amd64), const EVFILT_TIMER ideal-int pkg syscall (openbsd-amd64), const EVFILT_VNODE ideal-int pkg syscall (openbsd-amd64), const EVFILT_WRITE ideal-int pkg syscall (openbsd-amd64), const EV_ADD ideal-int pkg syscall (openbsd-amd64), const EV_CLEAR ideal-int pkg syscall (openbsd-amd64), const EV_DELETE ideal-int pkg syscall (openbsd-amd64), const EV_DISABLE ideal-int pkg syscall (openbsd-amd64), const EV_ENABLE ideal-int pkg syscall (openbsd-amd64), const EV_EOF ideal-int pkg syscall (openbsd-amd64), const EV_ERROR ideal-int pkg syscall (openbsd-amd64), const EV_FLAG1 ideal-int pkg syscall (openbsd-amd64), const EV_ONESHOT ideal-int pkg syscall (openbsd-amd64), const EV_SYSFLAGS ideal-int pkg syscall (openbsd-amd64), const EXTA ideal-int pkg syscall (openbsd-amd64), const EXTB ideal-int pkg syscall (openbsd-amd64), const EXTPROC ideal-int pkg syscall (openbsd-amd64), const FD_CLOEXEC ideal-int pkg syscall (openbsd-amd64), const FD_SETSIZE ideal-int pkg syscall (openbsd-amd64), const FLUSHO ideal-int pkg syscall (openbsd-amd64), const F_DUPFD ideal-int pkg syscall (openbsd-amd64), const F_DUPFD_CLOEXEC ideal-int pkg syscall (openbsd-amd64), const F_GETFD ideal-int pkg syscall (openbsd-amd64), const F_GETFL ideal-int pkg syscall (openbsd-amd64), const F_GETLK ideal-int pkg syscall (openbsd-amd64), const F_GETOWN ideal-int pkg syscall (openbsd-amd64), const F_OK ideal-int pkg syscall (openbsd-amd64), const F_RDLCK ideal-int pkg syscall (openbsd-amd64), const F_SETFD ideal-int pkg syscall (openbsd-amd64), const F_SETFL ideal-int pkg syscall (openbsd-amd64), const F_SETLK ideal-int pkg syscall (openbsd-amd64), const F_SETLKW ideal-int pkg syscall (openbsd-amd64), const F_SETOWN ideal-int pkg syscall (openbsd-amd64), const F_UNLCK ideal-int pkg syscall (openbsd-amd64), const F_WRLCK ideal-int pkg syscall (openbsd-amd64), const HUPCL ideal-int pkg syscall (openbsd-amd64), const ICANON ideal-int pkg syscall (openbsd-amd64), const ICMP6_FILTER = 18 pkg syscall (openbsd-amd64), const ICMP6_FILTER ideal-int pkg syscall (openbsd-amd64), const ICRNL ideal-int pkg syscall (openbsd-amd64), const IEXTEN ideal-int pkg syscall (openbsd-amd64), const IFAN_ARRIVAL ideal-int pkg syscall (openbsd-amd64), const IFAN_DEPARTURE ideal-int pkg syscall (openbsd-amd64), const IFA_ROUTE ideal-int pkg syscall (openbsd-amd64), const IFF_ALLMULTI ideal-int pkg syscall (openbsd-amd64), const IFF_CANTCHANGE ideal-int pkg syscall (openbsd-amd64), const IFF_DEBUG ideal-int pkg syscall (openbsd-amd64), const IFF_LINK0 ideal-int pkg syscall (openbsd-amd64), const IFF_LINK1 ideal-int pkg syscall (openbsd-amd64), const IFF_LINK2 ideal-int pkg syscall (openbsd-amd64), const IFF_NOARP ideal-int pkg syscall (openbsd-amd64), const IFF_NOTRAILERS ideal-int pkg syscall (openbsd-amd64), const IFF_OACTIVE ideal-int pkg syscall (openbsd-amd64), const IFF_POINTOPOINT ideal-int pkg syscall (openbsd-amd64), const IFF_PROMISC ideal-int pkg syscall (openbsd-amd64), const IFF_RUNNING ideal-int pkg syscall (openbsd-amd64), const IFF_SIMPLEX ideal-int pkg syscall (openbsd-amd64), const IFNAMSIZ ideal-int pkg syscall (openbsd-amd64), const IFT_1822 ideal-int pkg syscall (openbsd-amd64), const IFT_A12MPPSWITCH ideal-int pkg syscall (openbsd-amd64), const IFT_AAL2 ideal-int pkg syscall (openbsd-amd64), const IFT_AAL5 ideal-int pkg syscall (openbsd-amd64), const IFT_ADSL ideal-int pkg syscall (openbsd-amd64), const IFT_AFLANE8023 ideal-int pkg syscall (openbsd-amd64), const IFT_AFLANE8025 ideal-int pkg syscall (openbsd-amd64), const IFT_ARAP ideal-int pkg syscall (openbsd-amd64), const IFT_ARCNET ideal-int pkg syscall (openbsd-amd64), const IFT_ARCNETPLUS ideal-int pkg syscall (openbsd-amd64), const IFT_ASYNC ideal-int pkg syscall (openbsd-amd64), const IFT_ATM ideal-int pkg syscall (openbsd-amd64), const IFT_ATMDXI ideal-int pkg syscall (openbsd-amd64), const IFT_ATMFUNI ideal-int pkg syscall (openbsd-amd64), const IFT_ATMIMA ideal-int pkg syscall (openbsd-amd64), const IFT_ATMLOGICAL ideal-int pkg syscall (openbsd-amd64), const IFT_ATMRADIO ideal-int pkg syscall (openbsd-amd64), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (openbsd-amd64), const IFT_ATMVCIENDPT ideal-int pkg syscall (openbsd-amd64), const IFT_ATMVIRTUAL ideal-int pkg syscall (openbsd-amd64), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (openbsd-amd64), const IFT_BLUETOOTH ideal-int pkg syscall (openbsd-amd64), const IFT_BRIDGE ideal-int pkg syscall (openbsd-amd64), const IFT_BSC ideal-int pkg syscall (openbsd-amd64), const IFT_CARP ideal-int pkg syscall (openbsd-amd64), const IFT_CCTEMUL ideal-int pkg syscall (openbsd-amd64), const IFT_CEPT ideal-int pkg syscall (openbsd-amd64), const IFT_CES ideal-int pkg syscall (openbsd-amd64), const IFT_CHANNEL ideal-int pkg syscall (openbsd-amd64), const IFT_CNR ideal-int pkg syscall (openbsd-amd64), const IFT_COFFEE ideal-int pkg syscall (openbsd-amd64), const IFT_COMPOSITELINK ideal-int pkg syscall (openbsd-amd64), const IFT_DCN ideal-int pkg syscall (openbsd-amd64), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (openbsd-amd64), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (openbsd-amd64), const IFT_DLSW ideal-int pkg syscall (openbsd-amd64), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (openbsd-amd64), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (openbsd-amd64), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (openbsd-amd64), const IFT_DOCSCABLEUPSTREAMCHANNEL ideal-int pkg syscall (openbsd-amd64), const IFT_DS0 ideal-int pkg syscall (openbsd-amd64), const IFT_DS0BUNDLE ideal-int pkg syscall (openbsd-amd64), const IFT_DS1FDL ideal-int pkg syscall (openbsd-amd64), const IFT_DS3 ideal-int pkg syscall (openbsd-amd64), const IFT_DTM ideal-int pkg syscall (openbsd-amd64), const IFT_DUMMY ideal-int pkg syscall (openbsd-amd64), const IFT_DVBASILN ideal-int pkg syscall (openbsd-amd64), const IFT_DVBASIOUT ideal-int pkg syscall (openbsd-amd64), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (openbsd-amd64), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (openbsd-amd64), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (openbsd-amd64), const IFT_ECONET ideal-int pkg syscall (openbsd-amd64), const IFT_ENC ideal-int pkg syscall (openbsd-amd64), const IFT_EON ideal-int pkg syscall (openbsd-amd64), const IFT_EPLRS ideal-int pkg syscall (openbsd-amd64), const IFT_ESCON ideal-int pkg syscall (openbsd-amd64), const IFT_ETHER ideal-int pkg syscall (openbsd-amd64), const IFT_FAITH ideal-int pkg syscall (openbsd-amd64), const IFT_FAST ideal-int pkg syscall (openbsd-amd64), const IFT_FASTETHER ideal-int pkg syscall (openbsd-amd64), const IFT_FASTETHERFX ideal-int pkg syscall (openbsd-amd64), const IFT_FDDI ideal-int pkg syscall (openbsd-amd64), const IFT_FIBRECHANNEL ideal-int pkg syscall (openbsd-amd64), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (openbsd-amd64), const IFT_FRAMERELAYMPI ideal-int pkg syscall (openbsd-amd64), const IFT_FRDLCIENDPT ideal-int pkg syscall (openbsd-amd64), const IFT_FRELAY ideal-int pkg syscall (openbsd-amd64), const IFT_FRELAYDCE ideal-int pkg syscall (openbsd-amd64), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (openbsd-amd64), const IFT_FRFORWARD ideal-int pkg syscall (openbsd-amd64), const IFT_G703AT2MB ideal-int pkg syscall (openbsd-amd64), const IFT_G703AT64K ideal-int pkg syscall (openbsd-amd64), const IFT_GIF ideal-int pkg syscall (openbsd-amd64), const IFT_GIGABITETHERNET ideal-int pkg syscall (openbsd-amd64), const IFT_GR303IDT ideal-int pkg syscall (openbsd-amd64), const IFT_GR303RDT ideal-int pkg syscall (openbsd-amd64), const IFT_H323GATEKEEPER ideal-int pkg syscall (openbsd-amd64), const IFT_H323PROXY ideal-int pkg syscall (openbsd-amd64), const IFT_HDH1822 ideal-int pkg syscall (openbsd-amd64), const IFT_HDLC ideal-int pkg syscall (openbsd-amd64), const IFT_HDSL2 ideal-int pkg syscall (openbsd-amd64), const IFT_HIPERLAN2 ideal-int pkg syscall (openbsd-amd64), const IFT_HIPPI ideal-int pkg syscall (openbsd-amd64), const IFT_HIPPIINTERFACE ideal-int pkg syscall (openbsd-amd64), const IFT_HOSTPAD ideal-int pkg syscall (openbsd-amd64), const IFT_HSSI ideal-int pkg syscall (openbsd-amd64), const IFT_HY ideal-int pkg syscall (openbsd-amd64), const IFT_IBM370PARCHAN ideal-int pkg syscall (openbsd-amd64), const IFT_IDSL ideal-int pkg syscall (openbsd-amd64), const IFT_IEEE1394 ideal-int pkg syscall (openbsd-amd64), const IFT_IEEE80211 ideal-int pkg syscall (openbsd-amd64), const IFT_IEEE80212 ideal-int pkg syscall (openbsd-amd64), const IFT_IEEE8023ADLAG ideal-int pkg syscall (openbsd-amd64), const IFT_IFGSN ideal-int pkg syscall (openbsd-amd64), const IFT_IMT ideal-int pkg syscall (openbsd-amd64), const IFT_INFINIBAND ideal-int pkg syscall (openbsd-amd64), const IFT_INTERLEAVE ideal-int pkg syscall (openbsd-amd64), const IFT_IP ideal-int pkg syscall (openbsd-amd64), const IFT_IPFORWARD ideal-int pkg syscall (openbsd-amd64), const IFT_IPOVERATM ideal-int pkg syscall (openbsd-amd64), const IFT_IPOVERCDLC ideal-int pkg syscall (openbsd-amd64), const IFT_IPOVERCLAW ideal-int pkg syscall (openbsd-amd64), const IFT_IPSWITCH ideal-int pkg syscall (openbsd-amd64), const IFT_ISDN ideal-int pkg syscall (openbsd-amd64), const IFT_ISDNBASIC ideal-int pkg syscall (openbsd-amd64), const IFT_ISDNPRIMARY ideal-int pkg syscall (openbsd-amd64), const IFT_ISDNS ideal-int pkg syscall (openbsd-amd64), const IFT_ISDNU ideal-int pkg syscall (openbsd-amd64), const IFT_ISO88022LLC ideal-int pkg syscall (openbsd-amd64), const IFT_ISO88023 ideal-int pkg syscall (openbsd-amd64), const IFT_ISO88024 ideal-int pkg syscall (openbsd-amd64), const IFT_ISO88025 ideal-int pkg syscall (openbsd-amd64), const IFT_ISO88025CRFPINT ideal-int pkg syscall (openbsd-amd64), const IFT_ISO88025DTR ideal-int pkg syscall (openbsd-amd64), const IFT_ISO88025FIBER ideal-int pkg syscall (openbsd-amd64), const IFT_ISO88026 ideal-int pkg syscall (openbsd-amd64), const IFT_ISUP ideal-int pkg syscall (openbsd-amd64), const IFT_L2VLAN ideal-int pkg syscall (openbsd-amd64), const IFT_L3IPVLAN ideal-int pkg syscall (openbsd-amd64), const IFT_L3IPXVLAN ideal-int pkg syscall (openbsd-amd64), const IFT_LAPB ideal-int pkg syscall (openbsd-amd64), const IFT_LAPD ideal-int pkg syscall (openbsd-amd64), const IFT_LAPF ideal-int pkg syscall (openbsd-amd64), const IFT_LINEGROUP ideal-int pkg syscall (openbsd-amd64), const IFT_LOCALTALK ideal-int pkg syscall (openbsd-amd64), const IFT_LOOP ideal-int pkg syscall (openbsd-amd64), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (openbsd-amd64), const IFT_MFSIGLINK ideal-int pkg syscall (openbsd-amd64), const IFT_MIOX25 ideal-int pkg syscall (openbsd-amd64), const IFT_MODEM ideal-int pkg syscall (openbsd-amd64), const IFT_MPC ideal-int pkg syscall (openbsd-amd64), const IFT_MPLS ideal-int pkg syscall (openbsd-amd64), const IFT_MPLSTUNNEL ideal-int pkg syscall (openbsd-amd64), const IFT_MSDSL ideal-int pkg syscall (openbsd-amd64), const IFT_MVL ideal-int pkg syscall (openbsd-amd64), const IFT_MYRINET ideal-int pkg syscall (openbsd-amd64), const IFT_NFAS ideal-int pkg syscall (openbsd-amd64), const IFT_NSIP ideal-int pkg syscall (openbsd-amd64), const IFT_OPTICALCHANNEL ideal-int pkg syscall (openbsd-amd64), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (openbsd-amd64), const IFT_OTHER ideal-int pkg syscall (openbsd-amd64), const IFT_P10 ideal-int pkg syscall (openbsd-amd64), const IFT_P80 ideal-int pkg syscall (openbsd-amd64), const IFT_PARA ideal-int pkg syscall (openbsd-amd64), const IFT_PFLOG ideal-int pkg syscall (openbsd-amd64), const IFT_PFLOW ideal-int pkg syscall (openbsd-amd64), const IFT_PFSYNC ideal-int pkg syscall (openbsd-amd64), const IFT_PLC ideal-int pkg syscall (openbsd-amd64), const IFT_PON155 ideal-int pkg syscall (openbsd-amd64), const IFT_PON622 ideal-int pkg syscall (openbsd-amd64), const IFT_POS ideal-int pkg syscall (openbsd-amd64), const IFT_PPP ideal-int pkg syscall (openbsd-amd64), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (openbsd-amd64), const IFT_PROPATM ideal-int pkg syscall (openbsd-amd64), const IFT_PROPBWAP2MP ideal-int pkg syscall (openbsd-amd64), const IFT_PROPCNLS ideal-int pkg syscall (openbsd-amd64), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (openbsd-amd64), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (openbsd-amd64), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (openbsd-amd64), const IFT_PROPMUX ideal-int pkg syscall (openbsd-amd64), const IFT_PROPVIRTUAL ideal-int pkg syscall (openbsd-amd64), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (openbsd-amd64), const IFT_PTPSERIAL ideal-int pkg syscall (openbsd-amd64), const IFT_PVC ideal-int pkg syscall (openbsd-amd64), const IFT_Q2931 ideal-int pkg syscall (openbsd-amd64), const IFT_QLLC ideal-int pkg syscall (openbsd-amd64), const IFT_RADIOMAC ideal-int pkg syscall (openbsd-amd64), const IFT_RADSL ideal-int pkg syscall (openbsd-amd64), const IFT_REACHDSL ideal-int pkg syscall (openbsd-amd64), const IFT_RFC1483 ideal-int pkg syscall (openbsd-amd64), const IFT_RS232 ideal-int pkg syscall (openbsd-amd64), const IFT_RSRB ideal-int pkg syscall (openbsd-amd64), const IFT_SDLC ideal-int pkg syscall (openbsd-amd64), const IFT_SDSL ideal-int pkg syscall (openbsd-amd64), const IFT_SHDSL ideal-int pkg syscall (openbsd-amd64), const IFT_SIP ideal-int pkg syscall (openbsd-amd64), const IFT_SIPSIG ideal-int pkg syscall (openbsd-amd64), const IFT_SIPTG ideal-int pkg syscall (openbsd-amd64), const IFT_SLIP ideal-int pkg syscall (openbsd-amd64), const IFT_SMDSDXI ideal-int pkg syscall (openbsd-amd64), const IFT_SMDSICIP ideal-int pkg syscall (openbsd-amd64), const IFT_SONET ideal-int pkg syscall (openbsd-amd64), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (openbsd-amd64), const IFT_SONETPATH ideal-int pkg syscall (openbsd-amd64), const IFT_SONETVT ideal-int pkg syscall (openbsd-amd64), const IFT_SRP ideal-int pkg syscall (openbsd-amd64), const IFT_SS7SIGLINK ideal-int pkg syscall (openbsd-amd64), const IFT_STACKTOSTACK ideal-int pkg syscall (openbsd-amd64), const IFT_STARLAN ideal-int pkg syscall (openbsd-amd64), const IFT_T1 ideal-int pkg syscall (openbsd-amd64), const IFT_TDLC ideal-int pkg syscall (openbsd-amd64), const IFT_TELINK ideal-int pkg syscall (openbsd-amd64), const IFT_TERMPAD ideal-int pkg syscall (openbsd-amd64), const IFT_TR008 ideal-int pkg syscall (openbsd-amd64), const IFT_TRANSPHDLC ideal-int pkg syscall (openbsd-amd64), const IFT_TUNNEL ideal-int pkg syscall (openbsd-amd64), const IFT_ULTRA ideal-int pkg syscall (openbsd-amd64), const IFT_USB ideal-int pkg syscall (openbsd-amd64), const IFT_V11 ideal-int pkg syscall (openbsd-amd64), const IFT_V35 ideal-int pkg syscall (openbsd-amd64), const IFT_V36 ideal-int pkg syscall (openbsd-amd64), const IFT_V37 ideal-int pkg syscall (openbsd-amd64), const IFT_VDSL ideal-int pkg syscall (openbsd-amd64), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (openbsd-amd64), const IFT_VIRTUALTG ideal-int pkg syscall (openbsd-amd64), const IFT_VOICEDID ideal-int pkg syscall (openbsd-amd64), const IFT_VOICEEM ideal-int pkg syscall (openbsd-amd64), const IFT_VOICEEMFGD ideal-int pkg syscall (openbsd-amd64), const IFT_VOICEENCAP ideal-int pkg syscall (openbsd-amd64), const IFT_VOICEFGDEANA ideal-int pkg syscall (openbsd-amd64), const IFT_VOICEFXO ideal-int pkg syscall (openbsd-amd64), const IFT_VOICEFXS ideal-int pkg syscall (openbsd-amd64), const IFT_VOICEOVERATM ideal-int pkg syscall (openbsd-amd64), const IFT_VOICEOVERCABLE ideal-int pkg syscall (openbsd-amd64), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (openbsd-amd64), const IFT_VOICEOVERIP ideal-int pkg syscall (openbsd-amd64), const IFT_X213 ideal-int pkg syscall (openbsd-amd64), const IFT_X25 ideal-int pkg syscall (openbsd-amd64), const IFT_X25DDN ideal-int pkg syscall (openbsd-amd64), const IFT_X25HUNTGROUP ideal-int pkg syscall (openbsd-amd64), const IFT_X25MLP ideal-int pkg syscall (openbsd-amd64), const IFT_X25PLE ideal-int pkg syscall (openbsd-amd64), const IFT_XETHER ideal-int pkg syscall (openbsd-amd64), const IGNBRK ideal-int pkg syscall (openbsd-amd64), const IGNCR ideal-int pkg syscall (openbsd-amd64), const IGNPAR ideal-int pkg syscall (openbsd-amd64), const IMAXBEL ideal-int pkg syscall (openbsd-amd64), const INLCR ideal-int pkg syscall (openbsd-amd64), const INPCK ideal-int pkg syscall (openbsd-amd64), const IN_CLASSA_HOST ideal-int pkg syscall (openbsd-amd64), const IN_CLASSA_MAX ideal-int pkg syscall (openbsd-amd64), const IN_CLASSA_NET ideal-int pkg syscall (openbsd-amd64), const IN_CLASSA_NSHIFT ideal-int pkg syscall (openbsd-amd64), const IN_CLASSB_HOST ideal-int pkg syscall (openbsd-amd64), const IN_CLASSB_MAX ideal-int pkg syscall (openbsd-amd64), const IN_CLASSB_NET ideal-int pkg syscall (openbsd-amd64), const IN_CLASSB_NSHIFT ideal-int pkg syscall (openbsd-amd64), const IN_CLASSC_HOST ideal-int pkg syscall (openbsd-amd64), const IN_CLASSC_NET ideal-int pkg syscall (openbsd-amd64), const IN_CLASSC_NSHIFT ideal-int pkg syscall (openbsd-amd64), const IN_CLASSD_HOST ideal-int pkg syscall (openbsd-amd64), const IN_CLASSD_NET ideal-int pkg syscall (openbsd-amd64), const IN_CLASSD_NSHIFT ideal-int pkg syscall (openbsd-amd64), const IN_LOOPBACKNET ideal-int pkg syscall (openbsd-amd64), const IN_RFC3021_HOST ideal-int pkg syscall (openbsd-amd64), const IN_RFC3021_NET ideal-int pkg syscall (openbsd-amd64), const IN_RFC3021_NSHIFT ideal-int pkg syscall (openbsd-amd64), const IPPROTO_AH ideal-int pkg syscall (openbsd-amd64), const IPPROTO_CARP ideal-int pkg syscall (openbsd-amd64), const IPPROTO_DIVERT ideal-int pkg syscall (openbsd-amd64), const IPPROTO_DONE ideal-int pkg syscall (openbsd-amd64), const IPPROTO_DSTOPTS ideal-int pkg syscall (openbsd-amd64), const IPPROTO_EGP ideal-int pkg syscall (openbsd-amd64), const IPPROTO_ENCAP ideal-int pkg syscall (openbsd-amd64), const IPPROTO_EON ideal-int pkg syscall (openbsd-amd64), const IPPROTO_ESP ideal-int pkg syscall (openbsd-amd64), const IPPROTO_ETHERIP ideal-int pkg syscall (openbsd-amd64), const IPPROTO_FRAGMENT ideal-int pkg syscall (openbsd-amd64), const IPPROTO_GGP ideal-int pkg syscall (openbsd-amd64), const IPPROTO_GRE ideal-int pkg syscall (openbsd-amd64), const IPPROTO_HOPOPTS ideal-int pkg syscall (openbsd-amd64), const IPPROTO_ICMP ideal-int pkg syscall (openbsd-amd64), const IPPROTO_ICMPV6 ideal-int pkg syscall (openbsd-amd64), const IPPROTO_IDP ideal-int pkg syscall (openbsd-amd64), const IPPROTO_IGMP ideal-int pkg syscall (openbsd-amd64), const IPPROTO_IPCOMP ideal-int pkg syscall (openbsd-amd64), const IPPROTO_IPIP ideal-int pkg syscall (openbsd-amd64), const IPPROTO_IPV4 ideal-int pkg syscall (openbsd-amd64), const IPPROTO_MAX ideal-int pkg syscall (openbsd-amd64), const IPPROTO_MAXID ideal-int pkg syscall (openbsd-amd64), const IPPROTO_MOBILE ideal-int pkg syscall (openbsd-amd64), const IPPROTO_MPLS ideal-int pkg syscall (openbsd-amd64), const IPPROTO_NONE ideal-int pkg syscall (openbsd-amd64), const IPPROTO_PFSYNC ideal-int pkg syscall (openbsd-amd64), const IPPROTO_PIM ideal-int pkg syscall (openbsd-amd64), const IPPROTO_PUP ideal-int pkg syscall (openbsd-amd64), const IPPROTO_RAW ideal-int pkg syscall (openbsd-amd64), const IPPROTO_ROUTING ideal-int pkg syscall (openbsd-amd64), const IPPROTO_RSVP ideal-int pkg syscall (openbsd-amd64), const IPPROTO_TP ideal-int pkg syscall (openbsd-amd64), const IPV6_AUTH_LEVEL ideal-int pkg syscall (openbsd-amd64), const IPV6_AUTOFLOWLABEL ideal-int pkg syscall (openbsd-amd64), const IPV6_CHECKSUM ideal-int pkg syscall (openbsd-amd64), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (openbsd-amd64), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (openbsd-amd64), const IPV6_DEFHLIM ideal-int pkg syscall (openbsd-amd64), const IPV6_DONTFRAG ideal-int pkg syscall (openbsd-amd64), const IPV6_DSTOPTS ideal-int pkg syscall (openbsd-amd64), const IPV6_ESP_NETWORK_LEVEL ideal-int pkg syscall (openbsd-amd64), const IPV6_ESP_TRANS_LEVEL ideal-int pkg syscall (openbsd-amd64), const IPV6_FAITH ideal-int pkg syscall (openbsd-amd64), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (openbsd-amd64), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (openbsd-amd64), const IPV6_FRAGTTL ideal-int pkg syscall (openbsd-amd64), const IPV6_HLIMDEC ideal-int pkg syscall (openbsd-amd64), const IPV6_HOPLIMIT ideal-int pkg syscall (openbsd-amd64), const IPV6_HOPOPTS ideal-int pkg syscall (openbsd-amd64), const IPV6_IPCOMP_LEVEL ideal-int pkg syscall (openbsd-amd64), const IPV6_MAXHLIM ideal-int pkg syscall (openbsd-amd64), const IPV6_MAXPACKET ideal-int pkg syscall (openbsd-amd64), const IPV6_MMTU ideal-int pkg syscall (openbsd-amd64), const IPV6_NEXTHOP ideal-int pkg syscall (openbsd-amd64), const IPV6_OPTIONS ideal-int pkg syscall (openbsd-amd64), const IPV6_PATHMTU ideal-int pkg syscall (openbsd-amd64), const IPV6_PIPEX ideal-int pkg syscall (openbsd-amd64), const IPV6_PKTINFO ideal-int pkg syscall (openbsd-amd64), const IPV6_PORTRANGE ideal-int pkg syscall (openbsd-amd64), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (openbsd-amd64), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (openbsd-amd64), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (openbsd-amd64), const IPV6_RECVDSTOPTS ideal-int pkg syscall (openbsd-amd64), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (openbsd-amd64), const IPV6_RECVHOPOPTS ideal-int pkg syscall (openbsd-amd64), const IPV6_RECVPATHMTU ideal-int pkg syscall (openbsd-amd64), const IPV6_RECVPKTINFO ideal-int pkg syscall (openbsd-amd64), const IPV6_RECVRTHDR ideal-int pkg syscall (openbsd-amd64), const IPV6_RECVTCLASS ideal-int pkg syscall (openbsd-amd64), const IPV6_RTABLE ideal-int pkg syscall (openbsd-amd64), const IPV6_RTHDR ideal-int pkg syscall (openbsd-amd64), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (openbsd-amd64), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (openbsd-amd64), const IPV6_RTHDR_STRICT ideal-int pkg syscall (openbsd-amd64), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (openbsd-amd64), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (openbsd-amd64), const IPV6_TCLASS ideal-int pkg syscall (openbsd-amd64), const IPV6_USE_MIN_MTU ideal-int pkg syscall (openbsd-amd64), const IPV6_VERSION ideal-int pkg syscall (openbsd-amd64), const IPV6_VERSION_MASK ideal-int pkg syscall (openbsd-amd64), const IP_AUTH_LEVEL ideal-int pkg syscall (openbsd-amd64), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (openbsd-amd64), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (openbsd-amd64), const IP_DF ideal-int pkg syscall (openbsd-amd64), const IP_ESP_NETWORK_LEVEL ideal-int pkg syscall (openbsd-amd64), const IP_ESP_TRANS_LEVEL ideal-int pkg syscall (openbsd-amd64), const IP_HDRINCL ideal-int pkg syscall (openbsd-amd64), const IP_IPCOMP_LEVEL ideal-int pkg syscall (openbsd-amd64), const IP_IPSECFLOWINFO ideal-int pkg syscall (openbsd-amd64), const IP_IPSEC_LOCAL_AUTH ideal-int pkg syscall (openbsd-amd64), const IP_IPSEC_LOCAL_CRED ideal-int pkg syscall (openbsd-amd64), const IP_IPSEC_LOCAL_ID ideal-int pkg syscall (openbsd-amd64), const IP_IPSEC_REMOTE_AUTH ideal-int pkg syscall (openbsd-amd64), const IP_IPSEC_REMOTE_CRED ideal-int pkg syscall (openbsd-amd64), const IP_IPSEC_REMOTE_ID ideal-int pkg syscall (openbsd-amd64), const IP_MAXPACKET ideal-int pkg syscall (openbsd-amd64), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (openbsd-amd64), const IP_MF ideal-int pkg syscall (openbsd-amd64), const IP_MINTTL ideal-int pkg syscall (openbsd-amd64), const IP_MIN_MEMBERSHIPS ideal-int pkg syscall (openbsd-amd64), const IP_MSS ideal-int pkg syscall (openbsd-amd64), const IP_OFFMASK ideal-int pkg syscall (openbsd-amd64), const IP_OPTIONS ideal-int pkg syscall (openbsd-amd64), const IP_PIPEX ideal-int pkg syscall (openbsd-amd64), const IP_PORTRANGE ideal-int pkg syscall (openbsd-amd64), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (openbsd-amd64), const IP_PORTRANGE_HIGH ideal-int pkg syscall (openbsd-amd64), const IP_PORTRANGE_LOW ideal-int pkg syscall (openbsd-amd64), const IP_RECVDSTADDR ideal-int pkg syscall (openbsd-amd64), const IP_RECVDSTPORT ideal-int pkg syscall (openbsd-amd64), const IP_RECVIF ideal-int pkg syscall (openbsd-amd64), const IP_RECVOPTS ideal-int pkg syscall (openbsd-amd64), const IP_RECVRETOPTS ideal-int pkg syscall (openbsd-amd64), const IP_RECVRTABLE ideal-int pkg syscall (openbsd-amd64), const IP_RECVTTL ideal-int pkg syscall (openbsd-amd64), const IP_RETOPTS ideal-int pkg syscall (openbsd-amd64), const IP_RF ideal-int pkg syscall (openbsd-amd64), const IP_RTABLE ideal-int pkg syscall (openbsd-amd64), const ISIG ideal-int pkg syscall (openbsd-amd64), const ISTRIP ideal-int pkg syscall (openbsd-amd64), const IXANY ideal-int pkg syscall (openbsd-amd64), const IXOFF ideal-int pkg syscall (openbsd-amd64), const IXON ideal-int pkg syscall (openbsd-amd64), const LCNT_OVERLOAD_FLUSH ideal-int pkg syscall (openbsd-amd64), const LOCK_EX ideal-int pkg syscall (openbsd-amd64), const LOCK_NB ideal-int pkg syscall (openbsd-amd64), const LOCK_SH ideal-int pkg syscall (openbsd-amd64), const LOCK_UN ideal-int pkg syscall (openbsd-amd64), const MSG_BCAST ideal-int pkg syscall (openbsd-amd64), const MSG_CTRUNC ideal-int pkg syscall (openbsd-amd64), const MSG_DONTROUTE ideal-int pkg syscall (openbsd-amd64), const MSG_DONTWAIT ideal-int pkg syscall (openbsd-amd64), const MSG_EOR ideal-int pkg syscall (openbsd-amd64), const MSG_MCAST ideal-int pkg syscall (openbsd-amd64), const MSG_NOSIGNAL ideal-int pkg syscall (openbsd-amd64), const MSG_OOB ideal-int pkg syscall (openbsd-amd64), const MSG_PEEK ideal-int pkg syscall (openbsd-amd64), const MSG_TRUNC ideal-int pkg syscall (openbsd-amd64), const MSG_WAITALL ideal-int pkg syscall (openbsd-amd64), const NAME_MAX ideal-int pkg syscall (openbsd-amd64), const NET_RT_DUMP ideal-int pkg syscall (openbsd-amd64), const NET_RT_FLAGS ideal-int pkg syscall (openbsd-amd64), const NET_RT_IFLIST ideal-int pkg syscall (openbsd-amd64), const NET_RT_MAXID ideal-int pkg syscall (openbsd-amd64), const NET_RT_STATS ideal-int pkg syscall (openbsd-amd64), const NET_RT_TABLE ideal-int pkg syscall (openbsd-amd64), const NOFLSH ideal-int pkg syscall (openbsd-amd64), const NOTE_ATTRIB ideal-int pkg syscall (openbsd-amd64), const NOTE_CHILD ideal-int pkg syscall (openbsd-amd64), const NOTE_DELETE ideal-int pkg syscall (openbsd-amd64), const NOTE_EOF ideal-int pkg syscall (openbsd-amd64), const NOTE_EXEC ideal-int pkg syscall (openbsd-amd64), const NOTE_EXIT ideal-int pkg syscall (openbsd-amd64), const NOTE_EXTEND ideal-int pkg syscall (openbsd-amd64), const NOTE_FORK ideal-int pkg syscall (openbsd-amd64), const NOTE_LINK ideal-int pkg syscall (openbsd-amd64), const NOTE_LOWAT ideal-int pkg syscall (openbsd-amd64), const NOTE_PCTRLMASK ideal-int pkg syscall (openbsd-amd64), const NOTE_PDATAMASK ideal-int pkg syscall (openbsd-amd64), const NOTE_RENAME ideal-int pkg syscall (openbsd-amd64), const NOTE_REVOKE ideal-int pkg syscall (openbsd-amd64), const NOTE_TRACK ideal-int pkg syscall (openbsd-amd64), const NOTE_TRACKERR ideal-int pkg syscall (openbsd-amd64), const NOTE_TRUNCATE ideal-int pkg syscall (openbsd-amd64), const NOTE_WRITE ideal-int pkg syscall (openbsd-amd64), const OCRNL ideal-int pkg syscall (openbsd-amd64), const ONLCR ideal-int pkg syscall (openbsd-amd64), const ONLRET ideal-int pkg syscall (openbsd-amd64), const ONOCR ideal-int pkg syscall (openbsd-amd64), const ONOEOT ideal-int pkg syscall (openbsd-amd64), const OPOST ideal-int pkg syscall (openbsd-amd64), const O_ACCMODE ideal-int pkg syscall (openbsd-amd64), const O_DIRECTORY ideal-int pkg syscall (openbsd-amd64), const O_DSYNC ideal-int pkg syscall (openbsd-amd64), const O_EXLOCK ideal-int pkg syscall (openbsd-amd64), const O_FSYNC ideal-int pkg syscall (openbsd-amd64), const O_NDELAY ideal-int pkg syscall (openbsd-amd64), const O_NOFOLLOW ideal-int pkg syscall (openbsd-amd64), const O_RSYNC ideal-int pkg syscall (openbsd-amd64), const O_SHLOCK ideal-int pkg syscall (openbsd-amd64), const PARENB ideal-int pkg syscall (openbsd-amd64), const PARMRK ideal-int pkg syscall (openbsd-amd64), const PARODD ideal-int pkg syscall (openbsd-amd64), const PENDIN ideal-int pkg syscall (openbsd-amd64), const PF_FLUSH ideal-int pkg syscall (openbsd-amd64), const PMC5_PIPELINE_FLUSH ideal-int pkg syscall (openbsd-amd64), const PRIO_PGRP = 1 pkg syscall (openbsd-amd64), const PRIO_PGRP ideal-int pkg syscall (openbsd-amd64), const PRIO_PROCESS = 0 pkg syscall (openbsd-amd64), const PRIO_PROCESS ideal-int pkg syscall (openbsd-amd64), const PRIO_USER = 2 pkg syscall (openbsd-amd64), const PRIO_USER ideal-int pkg syscall (openbsd-amd64), const PTRACE_CONT ideal-int pkg syscall (openbsd-amd64), const PTRACE_KILL ideal-int pkg syscall (openbsd-amd64), const PTRACE_TRACEME ideal-int pkg syscall (openbsd-amd64), const RLIMIT_CORE ideal-int pkg syscall (openbsd-amd64), const RLIMIT_CPU ideal-int pkg syscall (openbsd-amd64), const RLIMIT_DATA ideal-int pkg syscall (openbsd-amd64), const RLIMIT_FSIZE ideal-int pkg syscall (openbsd-amd64), const RLIMIT_NOFILE ideal-int pkg syscall (openbsd-amd64), const RLIMIT_STACK ideal-int pkg syscall (openbsd-amd64), const RLIM_INFINITY ideal-int pkg syscall (openbsd-amd64), const RTAX_AUTHOR ideal-int pkg syscall (openbsd-amd64), const RTAX_BRD ideal-int pkg syscall (openbsd-amd64), const RTAX_DST ideal-int pkg syscall (openbsd-amd64), const RTAX_GATEWAY ideal-int pkg syscall (openbsd-amd64), const RTAX_GENMASK ideal-int pkg syscall (openbsd-amd64), const RTAX_IFA ideal-int pkg syscall (openbsd-amd64), const RTAX_IFP ideal-int pkg syscall (openbsd-amd64), const RTAX_LABEL ideal-int pkg syscall (openbsd-amd64), const RTAX_MAX ideal-int pkg syscall (openbsd-amd64), const RTAX_NETMASK ideal-int pkg syscall (openbsd-amd64), const RTAX_SRC ideal-int pkg syscall (openbsd-amd64), const RTAX_SRCMASK ideal-int pkg syscall (openbsd-amd64), const RTA_AUTHOR ideal-int pkg syscall (openbsd-amd64), const RTA_BRD ideal-int pkg syscall (openbsd-amd64), const RTA_DST ideal-int pkg syscall (openbsd-amd64), const RTA_GATEWAY ideal-int pkg syscall (openbsd-amd64), const RTA_GENMASK ideal-int pkg syscall (openbsd-amd64), const RTA_IFA ideal-int pkg syscall (openbsd-amd64), const RTA_IFP ideal-int pkg syscall (openbsd-amd64), const RTA_LABEL ideal-int pkg syscall (openbsd-amd64), const RTA_NETMASK ideal-int pkg syscall (openbsd-amd64), const RTA_SRC ideal-int pkg syscall (openbsd-amd64), const RTA_SRCMASK ideal-int pkg syscall (openbsd-amd64), const RTF_ANNOUNCE ideal-int pkg syscall (openbsd-amd64), const RTF_BLACKHOLE ideal-int pkg syscall (openbsd-amd64), const RTF_CLONED ideal-int pkg syscall (openbsd-amd64), const RTF_CLONING ideal-int pkg syscall (openbsd-amd64), const RTF_DONE ideal-int pkg syscall (openbsd-amd64), const RTF_DYNAMIC ideal-int pkg syscall (openbsd-amd64), const RTF_FMASK ideal-int pkg syscall (openbsd-amd64), const RTF_GATEWAY ideal-int pkg syscall (openbsd-amd64), const RTF_HOST ideal-int pkg syscall (openbsd-amd64), const RTF_LLINFO ideal-int pkg syscall (openbsd-amd64), const RTF_MASK ideal-int pkg syscall (openbsd-amd64), const RTF_MODIFIED ideal-int pkg syscall (openbsd-amd64), const RTF_MPATH ideal-int pkg syscall (openbsd-amd64), const RTF_MPLS ideal-int pkg syscall (openbsd-amd64), const RTF_PERMANENT_ARP ideal-int pkg syscall (openbsd-amd64), const RTF_PROTO1 ideal-int pkg syscall (openbsd-amd64), const RTF_PROTO2 ideal-int pkg syscall (openbsd-amd64), const RTF_PROTO3 ideal-int pkg syscall (openbsd-amd64), const RTF_REJECT ideal-int pkg syscall (openbsd-amd64), const RTF_SOURCE ideal-int pkg syscall (openbsd-amd64), const RTF_STATIC ideal-int pkg syscall (openbsd-amd64), const RTF_TUNNEL ideal-int pkg syscall (openbsd-amd64), const RTF_UP ideal-int pkg syscall (openbsd-amd64), const RTF_USETRAILERS ideal-int pkg syscall (openbsd-amd64), const RTF_XRESOLVE ideal-int pkg syscall (openbsd-amd64), const RTM_ADD ideal-int pkg syscall (openbsd-amd64), const RTM_CHANGE ideal-int pkg syscall (openbsd-amd64), const RTM_DELADDR ideal-int pkg syscall (openbsd-amd64), const RTM_DELETE ideal-int pkg syscall (openbsd-amd64), const RTM_DESYNC ideal-int pkg syscall (openbsd-amd64), const RTM_GET ideal-int pkg syscall (openbsd-amd64), const RTM_IFANNOUNCE ideal-int pkg syscall (openbsd-amd64), const RTM_IFINFO ideal-int pkg syscall (openbsd-amd64), const RTM_LOCK ideal-int pkg syscall (openbsd-amd64), const RTM_LOSING ideal-int pkg syscall (openbsd-amd64), const RTM_MAXSIZE ideal-int pkg syscall (openbsd-amd64), const RTM_MISS ideal-int pkg syscall (openbsd-amd64), const RTM_NEWADDR ideal-int pkg syscall (openbsd-amd64), const RTM_REDIRECT ideal-int pkg syscall (openbsd-amd64), const RTM_RESOLVE ideal-int pkg syscall (openbsd-amd64), const RTM_RTTUNIT ideal-int pkg syscall (openbsd-amd64), const RTM_VERSION ideal-int pkg syscall (openbsd-amd64), const RTV_EXPIRE ideal-int pkg syscall (openbsd-amd64), const RTV_HOPCOUNT ideal-int pkg syscall (openbsd-amd64), const RTV_MTU ideal-int pkg syscall (openbsd-amd64), const RTV_RPIPE ideal-int pkg syscall (openbsd-amd64), const RTV_RTT ideal-int pkg syscall (openbsd-amd64), const RTV_RTTVAR ideal-int pkg syscall (openbsd-amd64), const RTV_SPIPE ideal-int pkg syscall (openbsd-amd64), const RTV_SSTHRESH ideal-int pkg syscall (openbsd-amd64), const RT_TABLEID_MAX ideal-int pkg syscall (openbsd-amd64), const RUSAGE_CHILDREN ideal-int pkg syscall (openbsd-amd64), const RUSAGE_SELF ideal-int pkg syscall (openbsd-amd64), const RUSAGE_THREAD ideal-int pkg syscall (openbsd-amd64), const SCM_RIGHTS ideal-int pkg syscall (openbsd-amd64), const SCM_TIMESTAMP ideal-int pkg syscall (openbsd-amd64), const SIGCHLD Signal pkg syscall (openbsd-amd64), const SIGCONT Signal pkg syscall (openbsd-amd64), const SIGEMT Signal pkg syscall (openbsd-amd64), const SIGINFO Signal pkg syscall (openbsd-amd64), const SIGIO Signal pkg syscall (openbsd-amd64), const SIGIOT Signal pkg syscall (openbsd-amd64), const SIGPROF Signal pkg syscall (openbsd-amd64), const SIGSTOP Signal pkg syscall (openbsd-amd64), const SIGSYS Signal pkg syscall (openbsd-amd64), const SIGTHR Signal pkg syscall (openbsd-amd64), const SIGTSTP Signal pkg syscall (openbsd-amd64), const SIGTTIN Signal pkg syscall (openbsd-amd64), const SIGTTOU Signal pkg syscall (openbsd-amd64), const SIGURG Signal pkg syscall (openbsd-amd64), const SIGUSR1 Signal pkg syscall (openbsd-amd64), const SIGUSR2 Signal pkg syscall (openbsd-amd64), const SIGVTALRM Signal pkg syscall (openbsd-amd64), const SIGWINCH Signal pkg syscall (openbsd-amd64), const SIGXCPU Signal pkg syscall (openbsd-amd64), const SIGXFSZ Signal pkg syscall (openbsd-amd64), const SIOCADDMULTI ideal-int pkg syscall (openbsd-amd64), const SIOCAIFADDR ideal-int pkg syscall (openbsd-amd64), const SIOCAIFGROUP ideal-int pkg syscall (openbsd-amd64), const SIOCALIFADDR ideal-int pkg syscall (openbsd-amd64), const SIOCATMARK ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGADD ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGADDS ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGARL ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGDADDR ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGDEL ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGDELS ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGFLUSH ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGFRL ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGGCACHE ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGGFD ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGGHT ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGGIFFLGS ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGGMA ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGGPARAM ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGGPRI ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGGRL ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGGSIFS ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGGTO ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGIFS ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGRTS ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGSADDR ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGSCACHE ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGSFD ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGSHT ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGSIFCOST ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGSIFFLGS ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGSIFPRIO ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGSMA ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGSPRI ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGSPROTO ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGSTO ideal-int pkg syscall (openbsd-amd64), const SIOCBRDGSTXHC ideal-int pkg syscall (openbsd-amd64), const SIOCDELMULTI ideal-int pkg syscall (openbsd-amd64), const SIOCDIFADDR ideal-int pkg syscall (openbsd-amd64), const SIOCDIFGROUP ideal-int pkg syscall (openbsd-amd64), const SIOCDIFPHYADDR ideal-int pkg syscall (openbsd-amd64), const SIOCDLIFADDR ideal-int pkg syscall (openbsd-amd64), const SIOCGETKALIVE ideal-int pkg syscall (openbsd-amd64), const SIOCGETLABEL ideal-int pkg syscall (openbsd-amd64), const SIOCGETPFLOW ideal-int pkg syscall (openbsd-amd64), const SIOCGETPFSYNC ideal-int pkg syscall (openbsd-amd64), const SIOCGETSGCNT ideal-int pkg syscall (openbsd-amd64), const SIOCGETVIFCNT ideal-int pkg syscall (openbsd-amd64), const SIOCGHIWAT ideal-int pkg syscall (openbsd-amd64), const SIOCGIFADDR ideal-int pkg syscall (openbsd-amd64), const SIOCGIFASYNCMAP ideal-int pkg syscall (openbsd-amd64), const SIOCGIFBRDADDR ideal-int pkg syscall (openbsd-amd64), const SIOCGIFCONF ideal-int pkg syscall (openbsd-amd64), const SIOCGIFDATA ideal-int pkg syscall (openbsd-amd64), const SIOCGIFDESCR ideal-int pkg syscall (openbsd-amd64), const SIOCGIFDSTADDR ideal-int pkg syscall (openbsd-amd64), const SIOCGIFFLAGS ideal-int pkg syscall (openbsd-amd64), const SIOCGIFGATTR ideal-int pkg syscall (openbsd-amd64), const SIOCGIFGENERIC ideal-int pkg syscall (openbsd-amd64), const SIOCGIFGMEMB ideal-int pkg syscall (openbsd-amd64), const SIOCGIFGROUP ideal-int pkg syscall (openbsd-amd64), const SIOCGIFMEDIA ideal-int pkg syscall (openbsd-amd64), const SIOCGIFMETRIC ideal-int pkg syscall (openbsd-amd64), const SIOCGIFMTU ideal-int pkg syscall (openbsd-amd64), const SIOCGIFNETMASK ideal-int pkg syscall (openbsd-amd64), const SIOCGIFPDSTADDR ideal-int pkg syscall (openbsd-amd64), const SIOCGIFPRIORITY ideal-int pkg syscall (openbsd-amd64), const SIOCGIFPSRCADDR ideal-int pkg syscall (openbsd-amd64), const SIOCGIFRDOMAIN ideal-int pkg syscall (openbsd-amd64), const SIOCGIFRTLABEL ideal-int pkg syscall (openbsd-amd64), const SIOCGIFTIMESLOT ideal-int pkg syscall (openbsd-amd64), const SIOCGIFXFLAGS ideal-int pkg syscall (openbsd-amd64), const SIOCGLIFADDR ideal-int pkg syscall (openbsd-amd64), const SIOCGLIFPHYADDR ideal-int pkg syscall (openbsd-amd64), const SIOCGLIFPHYRTABLE ideal-int pkg syscall (openbsd-amd64), const SIOCGLOWAT ideal-int pkg syscall (openbsd-amd64), const SIOCGPGRP ideal-int pkg syscall (openbsd-amd64), const SIOCGVH ideal-int pkg syscall (openbsd-amd64), const SIOCIFCREATE ideal-int pkg syscall (openbsd-amd64), const SIOCIFDESTROY ideal-int pkg syscall (openbsd-amd64), const SIOCIFGCLONERS ideal-int pkg syscall (openbsd-amd64), const SIOCSETKALIVE ideal-int pkg syscall (openbsd-amd64), const SIOCSETLABEL ideal-int pkg syscall (openbsd-amd64), const SIOCSETPFLOW ideal-int pkg syscall (openbsd-amd64), const SIOCSETPFSYNC ideal-int pkg syscall (openbsd-amd64), const SIOCSHIWAT ideal-int pkg syscall (openbsd-amd64), const SIOCSIFADDR ideal-int pkg syscall (openbsd-amd64), const SIOCSIFASYNCMAP ideal-int pkg syscall (openbsd-amd64), const SIOCSIFBRDADDR ideal-int pkg syscall (openbsd-amd64), const SIOCSIFDESCR ideal-int pkg syscall (openbsd-amd64), const SIOCSIFDSTADDR ideal-int pkg syscall (openbsd-amd64), const SIOCSIFFLAGS ideal-int pkg syscall (openbsd-amd64), const SIOCSIFGATTR ideal-int pkg syscall (openbsd-amd64), const SIOCSIFGENERIC ideal-int pkg syscall (openbsd-amd64), const SIOCSIFLLADDR ideal-int pkg syscall (openbsd-amd64), const SIOCSIFMEDIA ideal-int pkg syscall (openbsd-amd64), const SIOCSIFMETRIC ideal-int pkg syscall (openbsd-amd64), const SIOCSIFMTU ideal-int pkg syscall (openbsd-amd64), const SIOCSIFNETMASK ideal-int pkg syscall (openbsd-amd64), const SIOCSIFPHYADDR ideal-int pkg syscall (openbsd-amd64), const SIOCSIFPRIORITY ideal-int pkg syscall (openbsd-amd64), const SIOCSIFRDOMAIN ideal-int pkg syscall (openbsd-amd64), const SIOCSIFRTLABEL ideal-int pkg syscall (openbsd-amd64), const SIOCSIFTIMESLOT ideal-int pkg syscall (openbsd-amd64), const SIOCSIFXFLAGS ideal-int pkg syscall (openbsd-amd64), const SIOCSLIFPHYADDR ideal-int pkg syscall (openbsd-amd64), const SIOCSLIFPHYRTABLE ideal-int pkg syscall (openbsd-amd64), const SIOCSLOWAT ideal-int pkg syscall (openbsd-amd64), const SIOCSPGRP ideal-int pkg syscall (openbsd-amd64), const SIOCSVH ideal-int pkg syscall (openbsd-amd64), const SOCK_RDM ideal-int pkg syscall (openbsd-amd64), const SO_ACCEPTCONN ideal-int pkg syscall (openbsd-amd64), const SO_BINDANY ideal-int pkg syscall (openbsd-amd64), const SO_DEBUG ideal-int pkg syscall (openbsd-amd64), const SO_ERROR ideal-int pkg syscall (openbsd-amd64), const SO_NETPROC ideal-int pkg syscall (openbsd-amd64), const SO_OOBINLINE ideal-int pkg syscall (openbsd-amd64), const SO_PEERCRED ideal-int pkg syscall (openbsd-amd64), const SO_RCVLOWAT ideal-int pkg syscall (openbsd-amd64), const SO_RCVTIMEO ideal-int pkg syscall (openbsd-amd64), const SO_REUSEPORT ideal-int pkg syscall (openbsd-amd64), const SO_RTABLE ideal-int pkg syscall (openbsd-amd64), const SO_SNDLOWAT ideal-int pkg syscall (openbsd-amd64), const SO_SNDTIMEO ideal-int pkg syscall (openbsd-amd64), const SO_SPLICE ideal-int pkg syscall (openbsd-amd64), const SO_TIMESTAMP ideal-int pkg syscall (openbsd-amd64), const SO_TYPE ideal-int pkg syscall (openbsd-amd64), const SO_USELOOPBACK ideal-int pkg syscall (openbsd-amd64), const SYS_ACCEPT ideal-int pkg syscall (openbsd-amd64), const SYS_ACCESS ideal-int pkg syscall (openbsd-amd64), const SYS_ACCT ideal-int pkg syscall (openbsd-amd64), const SYS_ADJFREQ ideal-int pkg syscall (openbsd-amd64), const SYS_ADJTIME ideal-int pkg syscall (openbsd-amd64), const SYS_BIND ideal-int pkg syscall (openbsd-amd64), const SYS_CHDIR ideal-int pkg syscall (openbsd-amd64), const SYS_CHFLAGS ideal-int pkg syscall (openbsd-amd64), const SYS_CHMOD ideal-int pkg syscall (openbsd-amd64), const SYS_CHOWN ideal-int pkg syscall (openbsd-amd64), const SYS_CHROOT ideal-int pkg syscall (openbsd-amd64), const SYS_CLOCK_GETRES ideal-int pkg syscall (openbsd-amd64), const SYS_CLOCK_GETTIME ideal-int pkg syscall (openbsd-amd64), const SYS_CLOCK_SETTIME ideal-int pkg syscall (openbsd-amd64), const SYS_CLOSE ideal-int pkg syscall (openbsd-amd64), const SYS_CLOSEFROM ideal-int pkg syscall (openbsd-amd64), const SYS_CONNECT ideal-int pkg syscall (openbsd-amd64), const SYS_DUP ideal-int pkg syscall (openbsd-amd64), const SYS_DUP2 ideal-int pkg syscall (openbsd-amd64), const SYS_EXECVE ideal-int pkg syscall (openbsd-amd64), const SYS_EXIT ideal-int pkg syscall (openbsd-amd64), const SYS_FACCESSAT ideal-int pkg syscall (openbsd-amd64), const SYS_FCHDIR ideal-int pkg syscall (openbsd-amd64), const SYS_FCHFLAGS ideal-int pkg syscall (openbsd-amd64), const SYS_FCHMOD ideal-int pkg syscall (openbsd-amd64), const SYS_FCHMODAT ideal-int pkg syscall (openbsd-amd64), const SYS_FCHOWN ideal-int pkg syscall (openbsd-amd64), const SYS_FCHOWNAT ideal-int pkg syscall (openbsd-amd64), const SYS_FCNTL ideal-int pkg syscall (openbsd-amd64), const SYS_FHOPEN ideal-int pkg syscall (openbsd-amd64), const SYS_FHSTAT ideal-int pkg syscall (openbsd-amd64), const SYS_FHSTATFS ideal-int pkg syscall (openbsd-amd64), const SYS_FLOCK ideal-int pkg syscall (openbsd-amd64), const SYS_FORK ideal-int pkg syscall (openbsd-amd64), const SYS_FPATHCONF ideal-int pkg syscall (openbsd-amd64), const SYS_FSTAT ideal-int pkg syscall (openbsd-amd64), const SYS_FSTATAT ideal-int pkg syscall (openbsd-amd64), const SYS_FSTATFS ideal-int pkg syscall (openbsd-amd64), const SYS_FSYNC ideal-int pkg syscall (openbsd-amd64), const SYS_FTRUNCATE ideal-int pkg syscall (openbsd-amd64), const SYS_FUTIMENS ideal-int pkg syscall (openbsd-amd64), const SYS_FUTIMES ideal-int pkg syscall (openbsd-amd64), const SYS_GETDIRENTRIES ideal-int pkg syscall (openbsd-amd64), const SYS_GETDTABLECOUNT ideal-int pkg syscall (openbsd-amd64), const SYS_GETEGID ideal-int pkg syscall (openbsd-amd64), const SYS_GETEUID ideal-int pkg syscall (openbsd-amd64), const SYS_GETFH ideal-int pkg syscall (openbsd-amd64), const SYS_GETFSSTAT ideal-int pkg syscall (openbsd-amd64), const SYS_GETGID ideal-int pkg syscall (openbsd-amd64), const SYS_GETGROUPS ideal-int pkg syscall (openbsd-amd64), const SYS_GETITIMER ideal-int pkg syscall (openbsd-amd64), const SYS_GETLOGIN ideal-int pkg syscall (openbsd-amd64), const SYS_GETPEERNAME ideal-int pkg syscall (openbsd-amd64), const SYS_GETPGID ideal-int pkg syscall (openbsd-amd64), const SYS_GETPGRP ideal-int pkg syscall (openbsd-amd64), const SYS_GETPID ideal-int pkg syscall (openbsd-amd64), const SYS_GETPPID ideal-int pkg syscall (openbsd-amd64), const SYS_GETPRIORITY ideal-int pkg syscall (openbsd-amd64), const SYS_GETRESGID ideal-int pkg syscall (openbsd-amd64), const SYS_GETRESUID ideal-int pkg syscall (openbsd-amd64), const SYS_GETRLIMIT ideal-int pkg syscall (openbsd-amd64), const SYS_GETRTABLE ideal-int pkg syscall (openbsd-amd64), const SYS_GETRUSAGE ideal-int pkg syscall (openbsd-amd64), const SYS_GETSID ideal-int pkg syscall (openbsd-amd64), const SYS_GETSOCKNAME ideal-int pkg syscall (openbsd-amd64), const SYS_GETSOCKOPT ideal-int pkg syscall (openbsd-amd64), const SYS_GETTHRID ideal-int pkg syscall (openbsd-amd64), const SYS_GETTIMEOFDAY ideal-int pkg syscall (openbsd-amd64), const SYS_GETUID ideal-int pkg syscall (openbsd-amd64), const SYS_IOCTL ideal-int pkg syscall (openbsd-amd64), const SYS_ISSETUGID ideal-int pkg syscall (openbsd-amd64), const SYS_KEVENT ideal-int pkg syscall (openbsd-amd64), const SYS_KILL ideal-int pkg syscall (openbsd-amd64), const SYS_KQUEUE ideal-int pkg syscall (openbsd-amd64), const SYS_KTRACE ideal-int pkg syscall (openbsd-amd64), const SYS_LCHOWN ideal-int pkg syscall (openbsd-amd64), const SYS_LINK ideal-int pkg syscall (openbsd-amd64), const SYS_LINKAT ideal-int pkg syscall (openbsd-amd64), const SYS_LISTEN ideal-int pkg syscall (openbsd-amd64), const SYS_LSEEK ideal-int pkg syscall (openbsd-amd64), const SYS_LSTAT ideal-int pkg syscall (openbsd-amd64), const SYS_MADVISE ideal-int pkg syscall (openbsd-amd64), const SYS_MINCORE ideal-int pkg syscall (openbsd-amd64), const SYS_MINHERIT ideal-int pkg syscall (openbsd-amd64), const SYS_MKDIR ideal-int pkg syscall (openbsd-amd64), const SYS_MKDIRAT ideal-int pkg syscall (openbsd-amd64), const SYS_MKFIFO ideal-int pkg syscall (openbsd-amd64), const SYS_MKFIFOAT ideal-int pkg syscall (openbsd-amd64), const SYS_MKNOD ideal-int pkg syscall (openbsd-amd64), const SYS_MKNODAT ideal-int pkg syscall (openbsd-amd64), const SYS_MLOCK ideal-int pkg syscall (openbsd-amd64), const SYS_MLOCKALL ideal-int pkg syscall (openbsd-amd64), const SYS_MMAP ideal-int pkg syscall (openbsd-amd64), const SYS_MOUNT ideal-int pkg syscall (openbsd-amd64), const SYS_MPROTECT ideal-int pkg syscall (openbsd-amd64), const SYS_MQUERY ideal-int pkg syscall (openbsd-amd64), const SYS_MSGCTL ideal-int pkg syscall (openbsd-amd64), const SYS_MSGGET ideal-int pkg syscall (openbsd-amd64), const SYS_MSGRCV ideal-int pkg syscall (openbsd-amd64), const SYS_MSGSND ideal-int pkg syscall (openbsd-amd64), const SYS_MSYNC ideal-int pkg syscall (openbsd-amd64), const SYS_MUNLOCK ideal-int pkg syscall (openbsd-amd64), const SYS_MUNLOCKALL ideal-int pkg syscall (openbsd-amd64), const SYS_MUNMAP ideal-int pkg syscall (openbsd-amd64), const SYS_NANOSLEEP ideal-int pkg syscall (openbsd-amd64), const SYS_NFSSVC ideal-int pkg syscall (openbsd-amd64), const SYS_OBREAK ideal-int pkg syscall (openbsd-amd64), const SYS_OPEN ideal-int pkg syscall (openbsd-amd64), const SYS_OPENAT ideal-int pkg syscall (openbsd-amd64), const SYS_PATHCONF ideal-int pkg syscall (openbsd-amd64), const SYS_PIPE ideal-int pkg syscall (openbsd-amd64), const SYS_POLL ideal-int pkg syscall (openbsd-amd64), const SYS_PREAD ideal-int pkg syscall (openbsd-amd64), const SYS_PREADV ideal-int pkg syscall (openbsd-amd64), const SYS_PROFIL ideal-int pkg syscall (openbsd-amd64), const SYS_PTRACE ideal-int pkg syscall (openbsd-amd64), const SYS_PWRITE ideal-int pkg syscall (openbsd-amd64), const SYS_PWRITEV ideal-int pkg syscall (openbsd-amd64), const SYS_QUOTACTL ideal-int pkg syscall (openbsd-amd64), const SYS_READ ideal-int pkg syscall (openbsd-amd64), const SYS_READLINK ideal-int pkg syscall (openbsd-amd64), const SYS_READLINKAT ideal-int pkg syscall (openbsd-amd64), const SYS_READV ideal-int pkg syscall (openbsd-amd64), const SYS_REBOOT ideal-int pkg syscall (openbsd-amd64), const SYS_RECVFROM ideal-int pkg syscall (openbsd-amd64), const SYS_RECVMSG ideal-int pkg syscall (openbsd-amd64), const SYS_RENAME ideal-int pkg syscall (openbsd-amd64), const SYS_RENAMEAT ideal-int pkg syscall (openbsd-amd64), const SYS_REVOKE ideal-int pkg syscall (openbsd-amd64), const SYS_RMDIR ideal-int pkg syscall (openbsd-amd64), const SYS_SCHED_YIELD ideal-int pkg syscall (openbsd-amd64), const SYS_SELECT ideal-int pkg syscall (openbsd-amd64), const SYS_SEMGET ideal-int pkg syscall (openbsd-amd64), const SYS_SEMOP ideal-int pkg syscall (openbsd-amd64), const SYS_SENDMSG ideal-int pkg syscall (openbsd-amd64), const SYS_SENDTO ideal-int pkg syscall (openbsd-amd64), const SYS_SETEGID ideal-int pkg syscall (openbsd-amd64), const SYS_SETEUID ideal-int pkg syscall (openbsd-amd64), const SYS_SETGID ideal-int pkg syscall (openbsd-amd64), const SYS_SETGROUPS ideal-int pkg syscall (openbsd-amd64), const SYS_SETITIMER ideal-int pkg syscall (openbsd-amd64), const SYS_SETLOGIN ideal-int pkg syscall (openbsd-amd64), const SYS_SETPGID ideal-int pkg syscall (openbsd-amd64), const SYS_SETPRIORITY ideal-int pkg syscall (openbsd-amd64), const SYS_SETREGID ideal-int pkg syscall (openbsd-amd64), const SYS_SETRESGID ideal-int pkg syscall (openbsd-amd64), const SYS_SETRESUID ideal-int pkg syscall (openbsd-amd64), const SYS_SETREUID ideal-int pkg syscall (openbsd-amd64), const SYS_SETRLIMIT ideal-int pkg syscall (openbsd-amd64), const SYS_SETRTABLE ideal-int pkg syscall (openbsd-amd64), const SYS_SETSID ideal-int pkg syscall (openbsd-amd64), const SYS_SETSOCKOPT ideal-int pkg syscall (openbsd-amd64), const SYS_SETTIMEOFDAY ideal-int pkg syscall (openbsd-amd64), const SYS_SETUID ideal-int pkg syscall (openbsd-amd64), const SYS_SHMAT ideal-int pkg syscall (openbsd-amd64), const SYS_SHMCTL ideal-int pkg syscall (openbsd-amd64), const SYS_SHMDT ideal-int pkg syscall (openbsd-amd64), const SYS_SHMGET ideal-int pkg syscall (openbsd-amd64), const SYS_SHUTDOWN ideal-int pkg syscall (openbsd-amd64), const SYS_SIGACTION ideal-int pkg syscall (openbsd-amd64), const SYS_SIGALTSTACK ideal-int pkg syscall (openbsd-amd64), const SYS_SIGPENDING ideal-int pkg syscall (openbsd-amd64), const SYS_SIGPROCMASK ideal-int pkg syscall (openbsd-amd64), const SYS_SIGRETURN ideal-int pkg syscall (openbsd-amd64), const SYS_SIGSUSPEND ideal-int pkg syscall (openbsd-amd64), const SYS_SOCKET ideal-int pkg syscall (openbsd-amd64), const SYS_SOCKETPAIR ideal-int pkg syscall (openbsd-amd64), const SYS_STAT ideal-int pkg syscall (openbsd-amd64), const SYS_STATFS ideal-int pkg syscall (openbsd-amd64), const SYS_SWAPCTL ideal-int pkg syscall (openbsd-amd64), const SYS_SYMLINK ideal-int pkg syscall (openbsd-amd64), const SYS_SYMLINKAT ideal-int pkg syscall (openbsd-amd64), const SYS_SYNC ideal-int pkg syscall (openbsd-amd64), const SYS_SYSARCH ideal-int pkg syscall (openbsd-amd64), const SYS_TRUNCATE ideal-int pkg syscall (openbsd-amd64), const SYS_UMASK ideal-int pkg syscall (openbsd-amd64), const SYS_UNLINK ideal-int pkg syscall (openbsd-amd64), const SYS_UNLINKAT ideal-int pkg syscall (openbsd-amd64), const SYS_UNMOUNT ideal-int pkg syscall (openbsd-amd64), const SYS_UTIMENSAT ideal-int pkg syscall (openbsd-amd64), const SYS_UTIMES ideal-int pkg syscall (openbsd-amd64), const SYS_VFORK ideal-int pkg syscall (openbsd-amd64), const SYS_WAIT4 ideal-int pkg syscall (openbsd-amd64), const SYS_WRITE ideal-int pkg syscall (openbsd-amd64), const SYS_WRITEV ideal-int pkg syscall (openbsd-amd64), const SYS___GETCWD ideal-int pkg syscall (openbsd-amd64), const SYS___GET_TCB ideal-int pkg syscall (openbsd-amd64), const SYS___SEMCTL ideal-int pkg syscall (openbsd-amd64), const SYS___SET_TCB ideal-int pkg syscall (openbsd-amd64), const SYS___SYSCTL ideal-int pkg syscall (openbsd-amd64), const SYS___TFORK ideal-int pkg syscall (openbsd-amd64), const SYS___THREXIT ideal-int pkg syscall (openbsd-amd64), const SYS___THRSIGDIVERT ideal-int pkg syscall (openbsd-amd64), const SYS___THRSLEEP ideal-int pkg syscall (openbsd-amd64), const SYS___THRWAKEUP ideal-int pkg syscall (openbsd-amd64), const SizeofBpfHdr ideal-int pkg syscall (openbsd-amd64), const SizeofBpfInsn ideal-int pkg syscall (openbsd-amd64), const SizeofBpfProgram ideal-int pkg syscall (openbsd-amd64), const SizeofBpfStat ideal-int pkg syscall (openbsd-amd64), const SizeofBpfVersion ideal-int pkg syscall (openbsd-amd64), const SizeofCmsghdr ideal-int pkg syscall (openbsd-amd64), const SizeofICMPv6Filter = 32 pkg syscall (openbsd-amd64), const SizeofICMPv6Filter ideal-int pkg syscall (openbsd-amd64), const SizeofIPMreq ideal-int pkg syscall (openbsd-amd64), const SizeofIPv6MTUInfo = 32 pkg syscall (openbsd-amd64), const SizeofIPv6MTUInfo ideal-int pkg syscall (openbsd-amd64), const SizeofIPv6Mreq ideal-int pkg syscall (openbsd-amd64), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (openbsd-amd64), const SizeofIfData ideal-int pkg syscall (openbsd-amd64), const SizeofIfMsghdr ideal-int pkg syscall (openbsd-amd64), const SizeofIfaMsghdr ideal-int pkg syscall (openbsd-amd64), const SizeofInet6Pktinfo ideal-int pkg syscall (openbsd-amd64), const SizeofLinger ideal-int pkg syscall (openbsd-amd64), const SizeofMsghdr ideal-int pkg syscall (openbsd-amd64), const SizeofRtMetrics ideal-int pkg syscall (openbsd-amd64), const SizeofRtMsghdr ideal-int pkg syscall (openbsd-amd64), const SizeofSockaddrAny ideal-int pkg syscall (openbsd-amd64), const SizeofSockaddrDatalink ideal-int pkg syscall (openbsd-amd64), const SizeofSockaddrInet4 ideal-int pkg syscall (openbsd-amd64), const SizeofSockaddrInet6 ideal-int pkg syscall (openbsd-amd64), const SizeofSockaddrUnix ideal-int pkg syscall (openbsd-amd64), const TCIFLUSH ideal-int pkg syscall (openbsd-amd64), const TCIOFLUSH ideal-int pkg syscall (openbsd-amd64), const TCOFLUSH ideal-int pkg syscall (openbsd-amd64), const TCP_MAXBURST ideal-int pkg syscall (openbsd-amd64), const TCP_MAXSEG ideal-int pkg syscall (openbsd-amd64), const TCP_MAXWIN ideal-int pkg syscall (openbsd-amd64), const TCP_MAX_SACK ideal-int pkg syscall (openbsd-amd64), const TCP_MAX_WINSHIFT ideal-int pkg syscall (openbsd-amd64), const TCP_MD5SIG ideal-int pkg syscall (openbsd-amd64), const TCP_MSS ideal-int pkg syscall (openbsd-amd64), const TCP_NSTATES ideal-int pkg syscall (openbsd-amd64), const TCP_SACK_ENABLE ideal-int pkg syscall (openbsd-amd64), const TCSAFLUSH ideal-int pkg syscall (openbsd-amd64), const TIOCCBRK ideal-int pkg syscall (openbsd-amd64), const TIOCCDTR ideal-int pkg syscall (openbsd-amd64), const TIOCCONS ideal-int pkg syscall (openbsd-amd64), const TIOCDRAIN ideal-int pkg syscall (openbsd-amd64), const TIOCEXCL ideal-int pkg syscall (openbsd-amd64), const TIOCEXT ideal-int pkg syscall (openbsd-amd64), const TIOCFLAG_CLOCAL ideal-int pkg syscall (openbsd-amd64), const TIOCFLAG_CRTSCTS ideal-int pkg syscall (openbsd-amd64), const TIOCFLAG_MDMBUF ideal-int pkg syscall (openbsd-amd64), const TIOCFLAG_PPS ideal-int pkg syscall (openbsd-amd64), const TIOCFLAG_SOFTCAR ideal-int pkg syscall (openbsd-amd64), const TIOCFLUSH ideal-int pkg syscall (openbsd-amd64), const TIOCGETA ideal-int pkg syscall (openbsd-amd64), const TIOCGETD ideal-int pkg syscall (openbsd-amd64), const TIOCGFLAGS ideal-int pkg syscall (openbsd-amd64), const TIOCGPGRP ideal-int pkg syscall (openbsd-amd64), const TIOCGTSTAMP ideal-int pkg syscall (openbsd-amd64), const TIOCGWINSZ ideal-int pkg syscall (openbsd-amd64), const TIOCMBIC ideal-int pkg syscall (openbsd-amd64), const TIOCMBIS ideal-int pkg syscall (openbsd-amd64), const TIOCMGET ideal-int pkg syscall (openbsd-amd64), const TIOCMODG ideal-int pkg syscall (openbsd-amd64), const TIOCMODS ideal-int pkg syscall (openbsd-amd64), const TIOCMSET ideal-int pkg syscall (openbsd-amd64), const TIOCM_CAR ideal-int pkg syscall (openbsd-amd64), const TIOCM_CD ideal-int pkg syscall (openbsd-amd64), const TIOCM_CTS ideal-int pkg syscall (openbsd-amd64), const TIOCM_DSR ideal-int pkg syscall (openbsd-amd64), const TIOCM_DTR ideal-int pkg syscall (openbsd-amd64), const TIOCM_LE ideal-int pkg syscall (openbsd-amd64), const TIOCM_RI ideal-int pkg syscall (openbsd-amd64), const TIOCM_RNG ideal-int pkg syscall (openbsd-amd64), const TIOCM_RTS ideal-int pkg syscall (openbsd-amd64), const TIOCM_SR ideal-int pkg syscall (openbsd-amd64), const TIOCM_ST ideal-int pkg syscall (openbsd-amd64), const TIOCNOTTY ideal-int pkg syscall (openbsd-amd64), const TIOCNXCL ideal-int pkg syscall (openbsd-amd64), const TIOCOUTQ ideal-int pkg syscall (openbsd-amd64), const TIOCPKT ideal-int pkg syscall (openbsd-amd64), const TIOCPKT_DATA ideal-int pkg syscall (openbsd-amd64), const TIOCPKT_DOSTOP ideal-int pkg syscall (openbsd-amd64), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (openbsd-amd64), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (openbsd-amd64), const TIOCPKT_IOCTL ideal-int pkg syscall (openbsd-amd64), const TIOCPKT_NOSTOP ideal-int pkg syscall (openbsd-amd64), const TIOCPKT_START ideal-int pkg syscall (openbsd-amd64), const TIOCPKT_STOP ideal-int pkg syscall (openbsd-amd64), const TIOCREMOTE ideal-int pkg syscall (openbsd-amd64), const TIOCSBRK ideal-int pkg syscall (openbsd-amd64), const TIOCSCTTY ideal-int pkg syscall (openbsd-amd64), const TIOCSDTR ideal-int pkg syscall (openbsd-amd64), const TIOCSETA ideal-int pkg syscall (openbsd-amd64), const TIOCSETAF ideal-int pkg syscall (openbsd-amd64), const TIOCSETAW ideal-int pkg syscall (openbsd-amd64), const TIOCSETD ideal-int pkg syscall (openbsd-amd64), const TIOCSFLAGS ideal-int pkg syscall (openbsd-amd64), const TIOCSIG ideal-int pkg syscall (openbsd-amd64), const TIOCSPGRP ideal-int pkg syscall (openbsd-amd64), const TIOCSTART ideal-int pkg syscall (openbsd-amd64), const TIOCSTAT ideal-int pkg syscall (openbsd-amd64), const TIOCSTI ideal-int pkg syscall (openbsd-amd64), const TIOCSTOP ideal-int pkg syscall (openbsd-amd64), const TIOCSTSTAMP ideal-int pkg syscall (openbsd-amd64), const TIOCSWINSZ ideal-int pkg syscall (openbsd-amd64), const TIOCUCNTL ideal-int pkg syscall (openbsd-amd64), const TOSTOP ideal-int pkg syscall (openbsd-amd64), const VDISCARD ideal-int pkg syscall (openbsd-amd64), const VDSUSP ideal-int pkg syscall (openbsd-amd64), const VEOF ideal-int pkg syscall (openbsd-amd64), const VEOL ideal-int pkg syscall (openbsd-amd64), const VEOL2 ideal-int pkg syscall (openbsd-amd64), const VERASE ideal-int pkg syscall (openbsd-amd64), const VINTR ideal-int pkg syscall (openbsd-amd64), const VKILL ideal-int pkg syscall (openbsd-amd64), const VLNEXT ideal-int pkg syscall (openbsd-amd64), const VMIN ideal-int pkg syscall (openbsd-amd64), const VQUIT ideal-int pkg syscall (openbsd-amd64), const VREPRINT ideal-int pkg syscall (openbsd-amd64), const VSTART ideal-int pkg syscall (openbsd-amd64), const VSTATUS ideal-int pkg syscall (openbsd-amd64), const VSTOP ideal-int pkg syscall (openbsd-amd64), const VSUSP ideal-int pkg syscall (openbsd-amd64), const VTIME ideal-int pkg syscall (openbsd-amd64), const VWERASE ideal-int pkg syscall (openbsd-amd64), const WALTSIG ideal-int pkg syscall (openbsd-amd64), const WCONTINUED ideal-int pkg syscall (openbsd-amd64), const WCOREFLAG ideal-int pkg syscall (openbsd-amd64), const WNOHANG ideal-int pkg syscall (openbsd-amd64), const WSTOPPED ideal-int pkg syscall (openbsd-amd64), const WUNTRACED ideal-int pkg syscall (openbsd-amd64), func Accept(int) (int, Sockaddr, error) pkg syscall (openbsd-amd64), func Access(string, uint32) error pkg syscall (openbsd-amd64), func Adjtime(*Timeval, *Timeval) error pkg syscall (openbsd-amd64), func Bind(int, Sockaddr) error pkg syscall (openbsd-amd64), func BpfBuflen(int) (int, error) pkg syscall (openbsd-amd64), func BpfDatalink(int) (int, error) pkg syscall (openbsd-amd64), func BpfHeadercmpl(int) (int, error) pkg syscall (openbsd-amd64), func BpfInterface(int, string) (string, error) pkg syscall (openbsd-amd64), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (openbsd-amd64), func BpfStats(int) (*BpfStat, error) pkg syscall (openbsd-amd64), func BpfStmt(int, int) *BpfInsn pkg syscall (openbsd-amd64), func BpfTimeout(int) (*Timeval, error) pkg syscall (openbsd-amd64), func CheckBpfVersion(int) error pkg syscall (openbsd-amd64), func Chflags(string, int) error pkg syscall (openbsd-amd64), func Chroot(string) error pkg syscall (openbsd-amd64), func Close(int) error pkg syscall (openbsd-amd64), func CloseOnExec(int) pkg syscall (openbsd-amd64), func CmsgLen(int) int pkg syscall (openbsd-amd64), func CmsgSpace(int) int pkg syscall (openbsd-amd64), func Connect(int, Sockaddr) error pkg syscall (openbsd-amd64), func Dup(int) (int, error) pkg syscall (openbsd-amd64), func Dup2(int, int) error pkg syscall (openbsd-amd64), func Fchdir(int) error pkg syscall (openbsd-amd64), func Fchflags(int, int) error pkg syscall (openbsd-amd64), func Fchmod(int, uint32) error pkg syscall (openbsd-amd64), func Fchown(int, int, int) error pkg syscall (openbsd-amd64), func Flock(int, int) error pkg syscall (openbsd-amd64), func FlushBpf(int) error pkg syscall (openbsd-amd64), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (openbsd-amd64), func Fpathconf(int, int) (int, error) pkg syscall (openbsd-amd64), func Fstat(int, *Stat_t) error pkg syscall (openbsd-amd64), func Fstatfs(int, *Statfs_t) error pkg syscall (openbsd-amd64), func Fsync(int) error pkg syscall (openbsd-amd64), func Ftruncate(int, int64) error pkg syscall (openbsd-amd64), func Futimes(int, []Timeval) error pkg syscall (openbsd-amd64), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (openbsd-amd64), func Getfsstat([]Statfs_t, int) (int, error) pkg syscall (openbsd-amd64), func Getpeername(int) (Sockaddr, error) pkg syscall (openbsd-amd64), func Getpgid(int) (int, error) pkg syscall (openbsd-amd64), func Getpgrp() int pkg syscall (openbsd-amd64), func Getpriority(int, int) (int, error) pkg syscall (openbsd-amd64), func Getrlimit(int, *Rlimit) error pkg syscall (openbsd-amd64), func Getrusage(int, *Rusage) error pkg syscall (openbsd-amd64), func Getsid(int) (int, error) pkg syscall (openbsd-amd64), func Getsockname(int) (Sockaddr, error) pkg syscall (openbsd-amd64), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (openbsd-amd64), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (openbsd-amd64), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (openbsd-amd64), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (openbsd-amd64), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (openbsd-amd64), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (openbsd-amd64), func GetsockoptInt(int, int, int) (int, error) pkg syscall (openbsd-amd64), func Issetugid() bool pkg syscall (openbsd-amd64), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (openbsd-amd64), func Kill(int, Signal) error pkg syscall (openbsd-amd64), func Kqueue() (int, error) pkg syscall (openbsd-amd64), func Listen(int, int) error pkg syscall (openbsd-amd64), func Lstat(string, *Stat_t) error pkg syscall (openbsd-amd64), func Mkfifo(string, uint32) error pkg syscall (openbsd-amd64), func Mknod(string, uint32, int) error pkg syscall (openbsd-amd64), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (openbsd-amd64), func Munmap([]uint8) error pkg syscall (openbsd-amd64), func Nanosleep(*Timespec, *Timespec) error pkg syscall (openbsd-amd64), func Open(string, int, uint32) (int, error) pkg syscall (openbsd-amd64), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (openbsd-amd64), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (openbsd-amd64), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (openbsd-amd64), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (openbsd-amd64), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (openbsd-amd64), func Pathconf(string, int) (int, error) pkg syscall (openbsd-amd64), func Pipe([]int) error pkg syscall (openbsd-amd64), func Pread(int, []uint8, int64) (int, error) pkg syscall (openbsd-amd64), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (openbsd-amd64), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-amd64), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-amd64), func Read(int, []uint8) (int, error) pkg syscall (openbsd-amd64), func ReadDirent(int, []uint8) (int, error) pkg syscall (openbsd-amd64), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (openbsd-amd64), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (openbsd-amd64), func Revoke(string) error pkg syscall (openbsd-amd64), func RouteRIB(int, int) ([]uint8, error) pkg syscall (openbsd-amd64), func Seek(int, int64, int) (int64, error) pkg syscall (openbsd-amd64), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (openbsd-amd64), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (openbsd-amd64), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (openbsd-amd64), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (openbsd-amd64), func SetBpf(int, []BpfInsn) error pkg syscall (openbsd-amd64), func SetBpfBuflen(int, int) (int, error) pkg syscall (openbsd-amd64), func SetBpfDatalink(int, int) (int, error) pkg syscall (openbsd-amd64), func SetBpfHeadercmpl(int, int) error pkg syscall (openbsd-amd64), func SetBpfImmediate(int, int) error pkg syscall (openbsd-amd64), func SetBpfInterface(int, string) error pkg syscall (openbsd-amd64), func SetBpfPromisc(int, int) error pkg syscall (openbsd-amd64), func SetBpfTimeout(int, *Timeval) error pkg syscall (openbsd-amd64), func SetKevent(*Kevent_t, int, int, int) pkg syscall (openbsd-amd64), func SetNonblock(int, bool) error pkg syscall (openbsd-amd64), func Setegid(int) error pkg syscall (openbsd-amd64), func Seteuid(int) error pkg syscall (openbsd-amd64), func Setgid(int) error pkg syscall (openbsd-amd64), func Setgroups([]int) error pkg syscall (openbsd-amd64), func Setlogin(string) error pkg syscall (openbsd-amd64), func Setpgid(int, int) error pkg syscall (openbsd-amd64), func Setpriority(int, int, int) error pkg syscall (openbsd-amd64), func Setregid(int, int) error pkg syscall (openbsd-amd64), func Setreuid(int, int) error pkg syscall (openbsd-amd64), func Setrlimit(int, *Rlimit) error pkg syscall (openbsd-amd64), func Setsid() (int, error) pkg syscall (openbsd-amd64), func SetsockoptByte(int, int, int, uint8) error pkg syscall (openbsd-amd64), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (openbsd-amd64), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (openbsd-amd64), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (openbsd-amd64), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (openbsd-amd64), func SetsockoptInt(int, int, int, int) error pkg syscall (openbsd-amd64), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (openbsd-amd64), func SetsockoptString(int, int, int, string) error pkg syscall (openbsd-amd64), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (openbsd-amd64), func Settimeofday(*Timeval) error pkg syscall (openbsd-amd64), func Setuid(int) error pkg syscall (openbsd-amd64), func Shutdown(int, int) error pkg syscall (openbsd-amd64), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (openbsd-amd64), func Socket(int, int, int) (int, error) pkg syscall (openbsd-amd64), func Socketpair(int, int, int) ([2]int, error) pkg syscall (openbsd-amd64), func Stat(string, *Stat_t) error pkg syscall (openbsd-amd64), func Statfs(string, *Statfs_t) error pkg syscall (openbsd-amd64), func StringSlicePtr([]string) []*uint8 pkg syscall (openbsd-amd64), func Sync() error pkg syscall (openbsd-amd64), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-amd64), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-amd64), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-amd64), func Sysctl(string) (string, error) pkg syscall (openbsd-amd64), func SysctlUint32(string) (uint32, error) pkg syscall (openbsd-amd64), func TimevalToNsec(Timeval) int64 pkg syscall (openbsd-amd64), func Truncate(string, int64) error pkg syscall (openbsd-amd64), func Umask(int) int pkg syscall (openbsd-amd64), func UnixRights(...int) []uint8 pkg syscall (openbsd-amd64), func Unmount(string, int) error pkg syscall (openbsd-amd64), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (openbsd-amd64), func Write(int, []uint8) (int, error) pkg syscall (openbsd-amd64), method (*Cmsghdr) SetLen(int) pkg syscall (openbsd-amd64), method (*Iovec) SetLen(int) pkg syscall (openbsd-amd64), method (*Msghdr) SetControllen(int) pkg syscall (openbsd-amd64), type BpfHdr struct pkg syscall (openbsd-amd64), type BpfHdr struct, Caplen uint32 pkg syscall (openbsd-amd64), type BpfHdr struct, Datalen uint32 pkg syscall (openbsd-amd64), type BpfHdr struct, Hdrlen uint16 pkg syscall (openbsd-amd64), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (openbsd-amd64), type BpfHdr struct, Tstamp BpfTimeval pkg syscall (openbsd-amd64), type BpfInsn struct pkg syscall (openbsd-amd64), type BpfInsn struct, Code uint16 pkg syscall (openbsd-amd64), type BpfInsn struct, Jf uint8 pkg syscall (openbsd-amd64), type BpfInsn struct, Jt uint8 pkg syscall (openbsd-amd64), type BpfInsn struct, K uint32 pkg syscall (openbsd-amd64), type BpfProgram struct pkg syscall (openbsd-amd64), type BpfProgram struct, Insns *BpfInsn pkg syscall (openbsd-amd64), type BpfProgram struct, Len uint32 pkg syscall (openbsd-amd64), type BpfProgram struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-amd64), type BpfStat struct pkg syscall (openbsd-amd64), type BpfStat struct, Drop uint32 pkg syscall (openbsd-amd64), type BpfStat struct, Recv uint32 pkg syscall (openbsd-amd64), type BpfTimeval struct pkg syscall (openbsd-amd64), type BpfTimeval struct, Sec uint32 pkg syscall (openbsd-amd64), type BpfTimeval struct, Usec uint32 pkg syscall (openbsd-amd64), type BpfVersion struct pkg syscall (openbsd-amd64), type BpfVersion struct, Major uint16 pkg syscall (openbsd-amd64), type BpfVersion struct, Minor uint16 pkg syscall (openbsd-amd64), type Cmsghdr struct pkg syscall (openbsd-amd64), type Cmsghdr struct, Len uint32 pkg syscall (openbsd-amd64), type Cmsghdr struct, Level int32 pkg syscall (openbsd-amd64), type Cmsghdr struct, Type int32 pkg syscall (openbsd-amd64), type Credential struct pkg syscall (openbsd-amd64), type Credential struct, Gid uint32 pkg syscall (openbsd-amd64), type Credential struct, Groups []uint32 pkg syscall (openbsd-amd64), type Credential struct, Uid uint32 pkg syscall (openbsd-amd64), type Dirent struct pkg syscall (openbsd-amd64), type Dirent struct, Fileno uint32 pkg syscall (openbsd-amd64), type Dirent struct, Name [256]int8 pkg syscall (openbsd-amd64), type Dirent struct, Namlen uint8 pkg syscall (openbsd-amd64), type Dirent struct, Reclen uint16 pkg syscall (openbsd-amd64), type Dirent struct, Type uint8 pkg syscall (openbsd-amd64), type FdSet struct pkg syscall (openbsd-amd64), type FdSet struct, Bits [32]int32 pkg syscall (openbsd-amd64), type Flock_t struct pkg syscall (openbsd-amd64), type Flock_t struct, Len int64 pkg syscall (openbsd-amd64), type Flock_t struct, Pid int32 pkg syscall (openbsd-amd64), type Flock_t struct, Start int64 pkg syscall (openbsd-amd64), type Flock_t struct, Type int16 pkg syscall (openbsd-amd64), type Flock_t struct, Whence int16 pkg syscall (openbsd-amd64), type Fsid struct pkg syscall (openbsd-amd64), type Fsid struct, Val [2]int32 pkg syscall (openbsd-amd64), type ICMPv6Filter struct pkg syscall (openbsd-amd64), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (openbsd-amd64), type IPv6MTUInfo struct pkg syscall (openbsd-amd64), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (openbsd-amd64), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (openbsd-amd64), type IfAnnounceMsghdr struct pkg syscall (openbsd-amd64), type IfAnnounceMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-amd64), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (openbsd-amd64), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (openbsd-amd64), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (openbsd-amd64), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (openbsd-amd64), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (openbsd-amd64), type IfAnnounceMsghdr struct, What uint16 pkg syscall (openbsd-amd64), type IfData struct pkg syscall (openbsd-amd64), type IfData struct, Addrlen uint8 pkg syscall (openbsd-amd64), type IfData struct, Baudrate uint64 pkg syscall (openbsd-amd64), type IfData struct, Capabilities uint32 pkg syscall (openbsd-amd64), type IfData struct, Collisions uint64 pkg syscall (openbsd-amd64), type IfData struct, Hdrlen uint8 pkg syscall (openbsd-amd64), type IfData struct, Ibytes uint64 pkg syscall (openbsd-amd64), type IfData struct, Ierrors uint64 pkg syscall (openbsd-amd64), type IfData struct, Imcasts uint64 pkg syscall (openbsd-amd64), type IfData struct, Ipackets uint64 pkg syscall (openbsd-amd64), type IfData struct, Iqdrops uint64 pkg syscall (openbsd-amd64), type IfData struct, Lastchange Timeval pkg syscall (openbsd-amd64), type IfData struct, Link_state uint8 pkg syscall (openbsd-amd64), type IfData struct, Mclpool [7]Mclpool pkg syscall (openbsd-amd64), type IfData struct, Metric uint32 pkg syscall (openbsd-amd64), type IfData struct, Mtu uint32 pkg syscall (openbsd-amd64), type IfData struct, Noproto uint64 pkg syscall (openbsd-amd64), type IfData struct, Obytes uint64 pkg syscall (openbsd-amd64), type IfData struct, Oerrors uint64 pkg syscall (openbsd-amd64), type IfData struct, Omcasts uint64 pkg syscall (openbsd-amd64), type IfData struct, Opackets uint64 pkg syscall (openbsd-amd64), type IfData struct, Pad uint32 pkg syscall (openbsd-amd64), type IfData struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-amd64), type IfData struct, Pad_cgo_1 [4]uint8 pkg syscall (openbsd-amd64), type IfData struct, Type uint8 pkg syscall (openbsd-amd64), type IfMsghdr struct pkg syscall (openbsd-amd64), type IfMsghdr struct, Addrs int32 pkg syscall (openbsd-amd64), type IfMsghdr struct, Data IfData pkg syscall (openbsd-amd64), type IfMsghdr struct, Flags int32 pkg syscall (openbsd-amd64), type IfMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-amd64), type IfMsghdr struct, Index uint16 pkg syscall (openbsd-amd64), type IfMsghdr struct, Msglen uint16 pkg syscall (openbsd-amd64), type IfMsghdr struct, Pad1 uint8 pkg syscall (openbsd-amd64), type IfMsghdr struct, Pad2 uint8 pkg syscall (openbsd-amd64), type IfMsghdr struct, Tableid uint16 pkg syscall (openbsd-amd64), type IfMsghdr struct, Type uint8 pkg syscall (openbsd-amd64), type IfMsghdr struct, Version uint8 pkg syscall (openbsd-amd64), type IfMsghdr struct, Xflags int32 pkg syscall (openbsd-amd64), type IfaMsghdr struct pkg syscall (openbsd-amd64), type IfaMsghdr struct, Addrs int32 pkg syscall (openbsd-amd64), type IfaMsghdr struct, Flags int32 pkg syscall (openbsd-amd64), type IfaMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-amd64), type IfaMsghdr struct, Index uint16 pkg syscall (openbsd-amd64), type IfaMsghdr struct, Metric int32 pkg syscall (openbsd-amd64), type IfaMsghdr struct, Msglen uint16 pkg syscall (openbsd-amd64), type IfaMsghdr struct, Pad1 uint8 pkg syscall (openbsd-amd64), type IfaMsghdr struct, Pad2 uint8 pkg syscall (openbsd-amd64), type IfaMsghdr struct, Tableid uint16 pkg syscall (openbsd-amd64), type IfaMsghdr struct, Type uint8 pkg syscall (openbsd-amd64), type IfaMsghdr struct, Version uint8 pkg syscall (openbsd-amd64), type Inet6Pktinfo struct pkg syscall (openbsd-amd64), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (openbsd-amd64), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (openbsd-amd64), type InterfaceAddrMessage struct pkg syscall (openbsd-amd64), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (openbsd-amd64), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (openbsd-amd64), type InterfaceAnnounceMessage struct pkg syscall (openbsd-amd64), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (openbsd-amd64), type InterfaceMessage struct pkg syscall (openbsd-amd64), type InterfaceMessage struct, Data []uint8 pkg syscall (openbsd-amd64), type InterfaceMessage struct, Header IfMsghdr pkg syscall (openbsd-amd64), type Iovec struct pkg syscall (openbsd-amd64), type Iovec struct, Base *uint8 pkg syscall (openbsd-amd64), type Iovec struct, Len uint64 pkg syscall (openbsd-amd64), type Kevent_t struct pkg syscall (openbsd-amd64), type Kevent_t struct, Data int32 pkg syscall (openbsd-amd64), type Kevent_t struct, Fflags uint32 pkg syscall (openbsd-amd64), type Kevent_t struct, Filter int16 pkg syscall (openbsd-amd64), type Kevent_t struct, Flags uint16 pkg syscall (openbsd-amd64), type Kevent_t struct, Ident uint32 pkg syscall (openbsd-amd64), type Kevent_t struct, Udata *uint8 pkg syscall (openbsd-amd64), type Mclpool struct pkg syscall (openbsd-amd64), type Mclpool struct, Alive uint16 pkg syscall (openbsd-amd64), type Mclpool struct, Cwm uint16 pkg syscall (openbsd-amd64), type Mclpool struct, Grown uint32 pkg syscall (openbsd-amd64), type Mclpool struct, Hwm uint16 pkg syscall (openbsd-amd64), type Mclpool struct, Lwm uint16 pkg syscall (openbsd-amd64), type Msghdr struct pkg syscall (openbsd-amd64), type Msghdr struct, Control *uint8 pkg syscall (openbsd-amd64), type Msghdr struct, Controllen uint32 pkg syscall (openbsd-amd64), type Msghdr struct, Flags int32 pkg syscall (openbsd-amd64), type Msghdr struct, Iov *Iovec pkg syscall (openbsd-amd64), type Msghdr struct, Iovlen uint32 pkg syscall (openbsd-amd64), type Msghdr struct, Name *uint8 pkg syscall (openbsd-amd64), type Msghdr struct, Namelen uint32 pkg syscall (openbsd-amd64), type Msghdr struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-amd64), type Msghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (openbsd-amd64), type RawSockaddr struct, Data [14]int8 pkg syscall (openbsd-amd64), type RawSockaddr struct, Family uint8 pkg syscall (openbsd-amd64), type RawSockaddr struct, Len uint8 pkg syscall (openbsd-amd64), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (openbsd-amd64), type RawSockaddrDatalink struct pkg syscall (openbsd-amd64), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (openbsd-amd64), type RawSockaddrDatalink struct, Data [24]int8 pkg syscall (openbsd-amd64), type RawSockaddrDatalink struct, Family uint8 pkg syscall (openbsd-amd64), type RawSockaddrDatalink struct, Index uint16 pkg syscall (openbsd-amd64), type RawSockaddrDatalink struct, Len uint8 pkg syscall (openbsd-amd64), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (openbsd-amd64), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (openbsd-amd64), type RawSockaddrDatalink struct, Type uint8 pkg syscall (openbsd-amd64), type RawSockaddrInet4 struct, Family uint8 pkg syscall (openbsd-amd64), type RawSockaddrInet4 struct, Len uint8 pkg syscall (openbsd-amd64), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (openbsd-amd64), type RawSockaddrInet6 struct, Family uint8 pkg syscall (openbsd-amd64), type RawSockaddrInet6 struct, Len uint8 pkg syscall (openbsd-amd64), type RawSockaddrUnix struct pkg syscall (openbsd-amd64), type RawSockaddrUnix struct, Family uint8 pkg syscall (openbsd-amd64), type RawSockaddrUnix struct, Len uint8 pkg syscall (openbsd-amd64), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (openbsd-amd64), type Rlimit struct pkg syscall (openbsd-amd64), type Rlimit struct, Cur uint64 pkg syscall (openbsd-amd64), type Rlimit struct, Max uint64 pkg syscall (openbsd-amd64), type RouteMessage struct pkg syscall (openbsd-amd64), type RouteMessage struct, Data []uint8 pkg syscall (openbsd-amd64), type RouteMessage struct, Header RtMsghdr pkg syscall (openbsd-amd64), type RoutingMessage interface, unexported methods pkg syscall (openbsd-amd64), type RtMetrics struct pkg syscall (openbsd-amd64), type RtMetrics struct, Expire uint32 pkg syscall (openbsd-amd64), type RtMetrics struct, Hopcount uint32 pkg syscall (openbsd-amd64), type RtMetrics struct, Locks uint32 pkg syscall (openbsd-amd64), type RtMetrics struct, Mtu uint32 pkg syscall (openbsd-amd64), type RtMetrics struct, Pksent uint64 pkg syscall (openbsd-amd64), type RtMetrics struct, Recvpipe uint32 pkg syscall (openbsd-amd64), type RtMetrics struct, Refcnt uint32 pkg syscall (openbsd-amd64), type RtMetrics struct, Rtt uint32 pkg syscall (openbsd-amd64), type RtMetrics struct, Rttvar uint32 pkg syscall (openbsd-amd64), type RtMetrics struct, Sendpipe uint32 pkg syscall (openbsd-amd64), type RtMetrics struct, Ssthresh uint32 pkg syscall (openbsd-amd64), type RtMsghdr struct pkg syscall (openbsd-amd64), type RtMsghdr struct, Addrs int32 pkg syscall (openbsd-amd64), type RtMsghdr struct, Errno int32 pkg syscall (openbsd-amd64), type RtMsghdr struct, Flags int32 pkg syscall (openbsd-amd64), type RtMsghdr struct, Fmask int32 pkg syscall (openbsd-amd64), type RtMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-amd64), type RtMsghdr struct, Index uint16 pkg syscall (openbsd-amd64), type RtMsghdr struct, Inits uint32 pkg syscall (openbsd-amd64), type RtMsghdr struct, Mpls uint8 pkg syscall (openbsd-amd64), type RtMsghdr struct, Msglen uint16 pkg syscall (openbsd-amd64), type RtMsghdr struct, Pid int32 pkg syscall (openbsd-amd64), type RtMsghdr struct, Priority uint8 pkg syscall (openbsd-amd64), type RtMsghdr struct, Rmx RtMetrics pkg syscall (openbsd-amd64), type RtMsghdr struct, Seq int32 pkg syscall (openbsd-amd64), type RtMsghdr struct, Tableid uint16 pkg syscall (openbsd-amd64), type RtMsghdr struct, Type uint8 pkg syscall (openbsd-amd64), type RtMsghdr struct, Version uint8 pkg syscall (openbsd-amd64), type Rusage struct, Idrss int64 pkg syscall (openbsd-amd64), type Rusage struct, Inblock int64 pkg syscall (openbsd-amd64), type Rusage struct, Isrss int64 pkg syscall (openbsd-amd64), type Rusage struct, Ixrss int64 pkg syscall (openbsd-amd64), type Rusage struct, Majflt int64 pkg syscall (openbsd-amd64), type Rusage struct, Maxrss int64 pkg syscall (openbsd-amd64), type Rusage struct, Minflt int64 pkg syscall (openbsd-amd64), type Rusage struct, Msgrcv int64 pkg syscall (openbsd-amd64), type Rusage struct, Msgsnd int64 pkg syscall (openbsd-amd64), type Rusage struct, Nivcsw int64 pkg syscall (openbsd-amd64), type Rusage struct, Nsignals int64 pkg syscall (openbsd-amd64), type Rusage struct, Nswap int64 pkg syscall (openbsd-amd64), type Rusage struct, Nvcsw int64 pkg syscall (openbsd-amd64), type Rusage struct, Oublock int64 pkg syscall (openbsd-amd64), type Rusage struct, Stime Timeval pkg syscall (openbsd-amd64), type Rusage struct, Utime Timeval pkg syscall (openbsd-amd64), type SockaddrDatalink struct pkg syscall (openbsd-amd64), type SockaddrDatalink struct, Alen uint8 pkg syscall (openbsd-amd64), type SockaddrDatalink struct, Data [24]int8 pkg syscall (openbsd-amd64), type SockaddrDatalink struct, Family uint8 pkg syscall (openbsd-amd64), type SockaddrDatalink struct, Index uint16 pkg syscall (openbsd-amd64), type SockaddrDatalink struct, Len uint8 pkg syscall (openbsd-amd64), type SockaddrDatalink struct, Nlen uint8 pkg syscall (openbsd-amd64), type SockaddrDatalink struct, Slen uint8 pkg syscall (openbsd-amd64), type SockaddrDatalink struct, Type uint8 pkg syscall (openbsd-amd64), type SocketControlMessage struct pkg syscall (openbsd-amd64), type SocketControlMessage struct, Data []uint8 pkg syscall (openbsd-amd64), type SocketControlMessage struct, Header Cmsghdr pkg syscall (openbsd-amd64), type Stat_t struct pkg syscall (openbsd-amd64), type Stat_t struct, Atim Timespec pkg syscall (openbsd-amd64), type Stat_t struct, Blksize uint32 pkg syscall (openbsd-amd64), type Stat_t struct, Blocks int64 pkg syscall (openbsd-amd64), type Stat_t struct, Ctim Timespec pkg syscall (openbsd-amd64), type Stat_t struct, Dev int32 pkg syscall (openbsd-amd64), type Stat_t struct, Flags uint32 pkg syscall (openbsd-amd64), type Stat_t struct, Gen uint32 pkg syscall (openbsd-amd64), type Stat_t struct, Gid uint32 pkg syscall (openbsd-amd64), type Stat_t struct, Ino uint32 pkg syscall (openbsd-amd64), type Stat_t struct, Lspare0 int32 pkg syscall (openbsd-amd64), type Stat_t struct, Lspare1 int32 pkg syscall (openbsd-amd64), type Stat_t struct, Mode uint32 pkg syscall (openbsd-amd64), type Stat_t struct, Mtim Timespec pkg syscall (openbsd-amd64), type Stat_t struct, Nlink uint32 pkg syscall (openbsd-amd64), type Stat_t struct, Qspare [2]int64 pkg syscall (openbsd-amd64), type Stat_t struct, Rdev int32 pkg syscall (openbsd-amd64), type Stat_t struct, Size int64 pkg syscall (openbsd-amd64), type Stat_t struct, Uid uint32 pkg syscall (openbsd-amd64), type Stat_t struct, X__st_birthtim Timespec pkg syscall (openbsd-amd64), type Statfs_t struct pkg syscall (openbsd-amd64), type Statfs_t struct, F_asyncreads uint64 pkg syscall (openbsd-amd64), type Statfs_t struct, F_asyncwrites uint64 pkg syscall (openbsd-amd64), type Statfs_t struct, F_bavail int64 pkg syscall (openbsd-amd64), type Statfs_t struct, F_bfree uint64 pkg syscall (openbsd-amd64), type Statfs_t struct, F_blocks uint64 pkg syscall (openbsd-amd64), type Statfs_t struct, F_bsize uint32 pkg syscall (openbsd-amd64), type Statfs_t struct, F_ctime uint32 pkg syscall (openbsd-amd64), type Statfs_t struct, F_favail int64 pkg syscall (openbsd-amd64), type Statfs_t struct, F_ffree uint64 pkg syscall (openbsd-amd64), type Statfs_t struct, F_files uint64 pkg syscall (openbsd-amd64), type Statfs_t struct, F_flags uint32 pkg syscall (openbsd-amd64), type Statfs_t struct, F_fsid Fsid pkg syscall (openbsd-amd64), type Statfs_t struct, F_fstypename [16]int8 pkg syscall (openbsd-amd64), type Statfs_t struct, F_iosize uint32 pkg syscall (openbsd-amd64), type Statfs_t struct, F_mntfromname [90]int8 pkg syscall (openbsd-amd64), type Statfs_t struct, F_mntonname [90]int8 pkg syscall (openbsd-amd64), type Statfs_t struct, F_namemax uint32 pkg syscall (openbsd-amd64), type Statfs_t struct, F_owner uint32 pkg syscall (openbsd-amd64), type Statfs_t struct, F_spare [3]uint32 pkg syscall (openbsd-amd64), type Statfs_t struct, F_syncreads uint64 pkg syscall (openbsd-amd64), type Statfs_t struct, F_syncwrites uint64 pkg syscall (openbsd-amd64), type Statfs_t struct, Mount_info [160]uint8 pkg syscall (openbsd-amd64), type Statfs_t struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-amd64), type Statfs_t struct, Pad_cgo_1 [4]uint8 pkg syscall (openbsd-amd64), type SysProcAttr struct, Chroot string pkg syscall (openbsd-amd64), type SysProcAttr struct, Credential *Credential pkg syscall (openbsd-amd64), type SysProcAttr struct, Noctty bool pkg syscall (openbsd-amd64), type SysProcAttr struct, Ptrace bool pkg syscall (openbsd-amd64), type SysProcAttr struct, Setctty bool pkg syscall (openbsd-amd64), type SysProcAttr struct, Setpgid bool pkg syscall (openbsd-amd64), type SysProcAttr struct, Setsid bool pkg syscall (openbsd-amd64), type Timespec struct, Nsec int64 pkg syscall (openbsd-amd64), type Timespec struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-amd64), type Timespec struct, Sec int32 pkg syscall (openbsd-amd64), type Timeval struct, Sec int64 pkg syscall (openbsd-amd64), type Timeval struct, Usec int64 pkg syscall (openbsd-amd64), type WaitStatus uint32 pkg syscall (openbsd-amd64), var Stderr int pkg syscall (openbsd-amd64), var Stdin int pkg syscall (openbsd-amd64), var Stdout int pkg syscall (openbsd-amd64-cgo), const AF_APPLETALK ideal-int pkg syscall (openbsd-amd64-cgo), const AF_BLUETOOTH ideal-int pkg syscall (openbsd-amd64-cgo), const AF_CCITT ideal-int pkg syscall (openbsd-amd64-cgo), const AF_CHAOS ideal-int pkg syscall (openbsd-amd64-cgo), const AF_CNT ideal-int pkg syscall (openbsd-amd64-cgo), const AF_COIP ideal-int pkg syscall (openbsd-amd64-cgo), const AF_DATAKIT ideal-int pkg syscall (openbsd-amd64-cgo), const AF_DECnet ideal-int pkg syscall (openbsd-amd64-cgo), const AF_DLI ideal-int pkg syscall (openbsd-amd64-cgo), const AF_E164 ideal-int pkg syscall (openbsd-amd64-cgo), const AF_ECMA ideal-int pkg syscall (openbsd-amd64-cgo), const AF_ENCAP ideal-int pkg syscall (openbsd-amd64-cgo), const AF_HYLINK ideal-int pkg syscall (openbsd-amd64-cgo), const AF_IMPLINK ideal-int pkg syscall (openbsd-amd64-cgo), const AF_IPX ideal-int pkg syscall (openbsd-amd64-cgo), const AF_ISDN ideal-int pkg syscall (openbsd-amd64-cgo), const AF_ISO ideal-int pkg syscall (openbsd-amd64-cgo), const AF_KEY ideal-int pkg syscall (openbsd-amd64-cgo), const AF_LAT ideal-int pkg syscall (openbsd-amd64-cgo), const AF_LINK ideal-int pkg syscall (openbsd-amd64-cgo), const AF_LOCAL ideal-int pkg syscall (openbsd-amd64-cgo), const AF_MAX ideal-int pkg syscall (openbsd-amd64-cgo), const AF_MPLS ideal-int pkg syscall (openbsd-amd64-cgo), const AF_NATM ideal-int pkg syscall (openbsd-amd64-cgo), const AF_NS ideal-int pkg syscall (openbsd-amd64-cgo), const AF_OSI ideal-int pkg syscall (openbsd-amd64-cgo), const AF_PUP ideal-int pkg syscall (openbsd-amd64-cgo), const AF_ROUTE ideal-int pkg syscall (openbsd-amd64-cgo), const AF_SIP ideal-int pkg syscall (openbsd-amd64-cgo), const AF_SNA ideal-int pkg syscall (openbsd-amd64-cgo), const ARPHRD_ETHER ideal-int pkg syscall (openbsd-amd64-cgo), const ARPHRD_FRELAY ideal-int pkg syscall (openbsd-amd64-cgo), const ARPHRD_IEEE1394 ideal-int pkg syscall (openbsd-amd64-cgo), const ARPHRD_IEEE802 ideal-int pkg syscall (openbsd-amd64-cgo), const B0 ideal-int pkg syscall (openbsd-amd64-cgo), const B110 ideal-int pkg syscall (openbsd-amd64-cgo), const B115200 ideal-int pkg syscall (openbsd-amd64-cgo), const B1200 ideal-int pkg syscall (openbsd-amd64-cgo), const B134 ideal-int pkg syscall (openbsd-amd64-cgo), const B14400 ideal-int pkg syscall (openbsd-amd64-cgo), const B150 ideal-int pkg syscall (openbsd-amd64-cgo), const B1800 ideal-int pkg syscall (openbsd-amd64-cgo), const B19200 ideal-int pkg syscall (openbsd-amd64-cgo), const B200 ideal-int pkg syscall (openbsd-amd64-cgo), const B230400 ideal-int pkg syscall (openbsd-amd64-cgo), const B2400 ideal-int pkg syscall (openbsd-amd64-cgo), const B28800 ideal-int pkg syscall (openbsd-amd64-cgo), const B300 ideal-int pkg syscall (openbsd-amd64-cgo), const B38400 ideal-int pkg syscall (openbsd-amd64-cgo), const B4800 ideal-int pkg syscall (openbsd-amd64-cgo), const B50 ideal-int pkg syscall (openbsd-amd64-cgo), const B57600 ideal-int pkg syscall (openbsd-amd64-cgo), const B600 ideal-int pkg syscall (openbsd-amd64-cgo), const B7200 ideal-int pkg syscall (openbsd-amd64-cgo), const B75 ideal-int pkg syscall (openbsd-amd64-cgo), const B76800 ideal-int pkg syscall (openbsd-amd64-cgo), const B9600 ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCFLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCGBLEN ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCGDIRFILT ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCGDLT ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCGDLTLIST ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCGETIF ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCGFILDROP ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCGHDRCMPLT ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCGRSIG ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCGRTIMEOUT ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCGSTATS ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCIMMEDIATE ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCLOCK ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCPROMISC ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCSBLEN ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCSDIRFILT ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCSDLT ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCSETF ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCSETIF ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCSETWF ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCSFILDROP ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCSHDRCMPLT ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCSRSIG ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCSRTIMEOUT ideal-int pkg syscall (openbsd-amd64-cgo), const BIOCVERSION ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_A ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_ABS ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_ADD ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_ALIGNMENT ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_ALU ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_AND ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_B ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_DIRECTION_IN ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_DIRECTION_OUT ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_DIV ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_H ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_IMM ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_IND ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_JA ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_JEQ ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_JGE ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_JGT ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_JMP ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_JSET ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_K ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_LD ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_LDX ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_LEN ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_LSH ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_MAJOR_VERSION ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_MAXBUFSIZE ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_MAXINSNS ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_MEM ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_MEMWORDS ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_MINBUFSIZE ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_MINOR_VERSION ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_MISC ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_MSH ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_MUL ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_NEG ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_OR ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_RELEASE ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_RET ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_RSH ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_ST ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_STX ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_SUB ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_TAX ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_TXA ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_W ideal-int pkg syscall (openbsd-amd64-cgo), const BPF_X ideal-int pkg syscall (openbsd-amd64-cgo), const BRKINT ideal-int pkg syscall (openbsd-amd64-cgo), const CCR0_FLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const CFLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const CLOCAL ideal-int pkg syscall (openbsd-amd64-cgo), const CPUID_CFLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const CREAD ideal-int pkg syscall (openbsd-amd64-cgo), const CS5 ideal-int pkg syscall (openbsd-amd64-cgo), const CS6 ideal-int pkg syscall (openbsd-amd64-cgo), const CS7 ideal-int pkg syscall (openbsd-amd64-cgo), const CS8 ideal-int pkg syscall (openbsd-amd64-cgo), const CSIZE ideal-int pkg syscall (openbsd-amd64-cgo), const CSTART ideal-int pkg syscall (openbsd-amd64-cgo), const CSTATUS ideal-int pkg syscall (openbsd-amd64-cgo), const CSTOP ideal-int pkg syscall (openbsd-amd64-cgo), const CSTOPB ideal-int pkg syscall (openbsd-amd64-cgo), const CSUSP ideal-int pkg syscall (openbsd-amd64-cgo), const CTL_MAXNAME ideal-int pkg syscall (openbsd-amd64-cgo), const CTL_NET ideal-int pkg syscall (openbsd-amd64-cgo), const DIOCOSFPFLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_ARCNET ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_ATM_RFC1483 ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_AX25 ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_CHAOS ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_C_HDLC ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_EN10MB ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_EN3MB ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_ENC ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_FDDI ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_IEEE802 ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_IEEE802_11 ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_LOOP ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_MPLS ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_NULL ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_PFLOG ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_PFSYNC ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_PPP ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_PPP_BSDOS ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_PPP_ETHER ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_PPP_SERIAL ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_PRONET ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_RAW ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_SLIP ideal-int pkg syscall (openbsd-amd64-cgo), const DLT_SLIP_BSDOS ideal-int pkg syscall (openbsd-amd64-cgo), const DT_BLK ideal-int pkg syscall (openbsd-amd64-cgo), const DT_CHR ideal-int pkg syscall (openbsd-amd64-cgo), const DT_DIR ideal-int pkg syscall (openbsd-amd64-cgo), const DT_FIFO ideal-int pkg syscall (openbsd-amd64-cgo), const DT_LNK ideal-int pkg syscall (openbsd-amd64-cgo), const DT_REG ideal-int pkg syscall (openbsd-amd64-cgo), const DT_SOCK ideal-int pkg syscall (openbsd-amd64-cgo), const DT_UNKNOWN ideal-int pkg syscall (openbsd-amd64-cgo), const EAUTH Errno pkg syscall (openbsd-amd64-cgo), const EBADRPC Errno pkg syscall (openbsd-amd64-cgo), const ECHO ideal-int pkg syscall (openbsd-amd64-cgo), const ECHOCTL ideal-int pkg syscall (openbsd-amd64-cgo), const ECHOE ideal-int pkg syscall (openbsd-amd64-cgo), const ECHOK ideal-int pkg syscall (openbsd-amd64-cgo), const ECHOKE ideal-int pkg syscall (openbsd-amd64-cgo), const ECHONL ideal-int pkg syscall (openbsd-amd64-cgo), const ECHOPRT ideal-int pkg syscall (openbsd-amd64-cgo), const EFER_LMA ideal-int pkg syscall (openbsd-amd64-cgo), const EFER_LME ideal-int pkg syscall (openbsd-amd64-cgo), const EFER_NXE ideal-int pkg syscall (openbsd-amd64-cgo), const EFER_SCE ideal-int pkg syscall (openbsd-amd64-cgo), const EFTYPE Errno pkg syscall (openbsd-amd64-cgo), const EIPSEC Errno pkg syscall (openbsd-amd64-cgo), const ELAST Errno pkg syscall (openbsd-amd64-cgo), const EMEDIUMTYPE Errno pkg syscall (openbsd-amd64-cgo), const EMT_TAGOVF ideal-int pkg syscall (openbsd-amd64-cgo), const EMUL_ENABLED ideal-int pkg syscall (openbsd-amd64-cgo), const EMUL_NATIVE ideal-int pkg syscall (openbsd-amd64-cgo), const ENDRUNDISC ideal-int pkg syscall (openbsd-amd64-cgo), const ENEEDAUTH Errno pkg syscall (openbsd-amd64-cgo), const ENOATTR Errno pkg syscall (openbsd-amd64-cgo), const ENOMEDIUM Errno pkg syscall (openbsd-amd64-cgo), const EPROCLIM Errno pkg syscall (openbsd-amd64-cgo), const EPROCUNAVAIL Errno pkg syscall (openbsd-amd64-cgo), const EPROGMISMATCH Errno pkg syscall (openbsd-amd64-cgo), const EPROGUNAVAIL Errno pkg syscall (openbsd-amd64-cgo), const ERPCMISMATCH Errno pkg syscall (openbsd-amd64-cgo), const ETHERMIN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERMTU ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_8023 ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AARP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ACCTON ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AEONIC ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ALPHA ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AMBER ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AMOEBA ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AOE ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_APOLLO ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_APOLLODOMAIN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_APPLETALK ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_APPLITEK ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ARGONAUT ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ARP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AT ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ATALK ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ATOMIC ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ATT ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ATTSTANFORD ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AUTOPHON ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_AXIS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_BCLOOP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_BOFL ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_CABLETRON ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_CHAOS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_COMDESIGN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_COMPUGRAPHIC ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_COUNTERPOINT ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_CRONUS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_CRONUSVLN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DCA ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DDE ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DEBNI ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECAM ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECCUST ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECDIAG ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECDNS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECDTS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECEXPER ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECLAST ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECLTM ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECMUMPS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DECNETBIOS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DELTACON ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DIDDLE ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DLOG1 ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DLOG2 ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DOGFIGHT ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_DSMD ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ECMA ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ENCRYPT ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_ES ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_EXCELAN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_EXPERDATA ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_FLIP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_FLOWCONTROL ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_FRARP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_GENDYN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_HAYES ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_HIPPI_FP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_HITACHI ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_HP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IEEEPUP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IEEEPUPAT ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IMLBL ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IMLBLDIAG ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IPAS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IPV6 ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IPX ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_IPXNEW ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_KALPANA ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LANBRIDGE ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LANPROBE ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LAT ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LBACK ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LITTLE ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LLDP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LOGICRAFT ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_LOOPBACK ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MATRA ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MAX ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MERIT ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MICP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MOPDL ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MOPRC ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MOTOROLA ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MPLS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MPLS_MCAST ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_MUMPS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPCC ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPCLAIM ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPCLREQ ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPCLRSP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPCREQ ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPCRSP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPDG ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPDGB ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPDLTE ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPRAR ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPRAS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPRST ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPSCD ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBPVCD ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NBS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NCD ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NESTAR ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NETBEUI ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NOVELL ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NSAT ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NSCOMPAT ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_NTRAILER ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_OS9 ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_OS9NET ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PACER ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PAE ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PCS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PLANNING ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PPP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PPPOE ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PPPOEDISC ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PRIMENTS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PUP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_PUPAT ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_QINQ ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_RACAL ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_RATIONAL ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_RAWFR ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_RCL ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_RDP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_RETIX ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_REVARP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SCA ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SECTRA ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SECUREDATA ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SGITW ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SG_BOUNCE ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SG_DIAG ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SG_NETGAMES ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SG_RESV ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SIMNET ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SLOW ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SNA ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SNMP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SONIX ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SPIDER ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_SPRITE ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_STP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TALARIS ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TALARISMC ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TCPCOMP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TCPSM ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TEC ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TIGAN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TRAIL ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TRANSETHER ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_TYMSHARE ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_UBBST ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_UBDEBUG ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_UBDIAGLOOP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_UBDL ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_UBNIU ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_UBNMC ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VALID ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VARIAN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VAXELN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VEECO ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VEXP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VGLAB ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VINES ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VINESECHO ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VINESLOOP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VITAL ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VLAN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VLTLMAN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VPROD ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_VURESERVED ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_WATERLOO ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_WELLFLEET ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_X25 ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_X75 ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_XNSSM ideal-int pkg syscall (openbsd-amd64-cgo), const ETHERTYPE_XTP ideal-int pkg syscall (openbsd-amd64-cgo), const ETHER_ADDR_LEN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHER_ALIGN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHER_CRC_LEN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHER_CRC_POLY_BE ideal-int pkg syscall (openbsd-amd64-cgo), const ETHER_CRC_POLY_LE ideal-int pkg syscall (openbsd-amd64-cgo), const ETHER_HDR_LEN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHER_MAX_DIX_LEN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHER_MAX_LEN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHER_MIN_LEN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHER_TYPE_LEN ideal-int pkg syscall (openbsd-amd64-cgo), const ETHER_VLAN_ENCAP_LEN ideal-int pkg syscall (openbsd-amd64-cgo), const EVFILT_AIO ideal-int pkg syscall (openbsd-amd64-cgo), const EVFILT_PROC ideal-int pkg syscall (openbsd-amd64-cgo), const EVFILT_READ ideal-int pkg syscall (openbsd-amd64-cgo), const EVFILT_SIGNAL ideal-int pkg syscall (openbsd-amd64-cgo), const EVFILT_SYSCOUNT ideal-int pkg syscall (openbsd-amd64-cgo), const EVFILT_TIMER ideal-int pkg syscall (openbsd-amd64-cgo), const EVFILT_VNODE ideal-int pkg syscall (openbsd-amd64-cgo), const EVFILT_WRITE ideal-int pkg syscall (openbsd-amd64-cgo), const EV_ADD ideal-int pkg syscall (openbsd-amd64-cgo), const EV_CLEAR ideal-int pkg syscall (openbsd-amd64-cgo), const EV_DELETE ideal-int pkg syscall (openbsd-amd64-cgo), const EV_DISABLE ideal-int pkg syscall (openbsd-amd64-cgo), const EV_ENABLE ideal-int pkg syscall (openbsd-amd64-cgo), const EV_EOF ideal-int pkg syscall (openbsd-amd64-cgo), const EV_ERROR ideal-int pkg syscall (openbsd-amd64-cgo), const EV_FLAG1 ideal-int pkg syscall (openbsd-amd64-cgo), const EV_ONESHOT ideal-int pkg syscall (openbsd-amd64-cgo), const EV_SYSFLAGS ideal-int pkg syscall (openbsd-amd64-cgo), const EXTA ideal-int pkg syscall (openbsd-amd64-cgo), const EXTB ideal-int pkg syscall (openbsd-amd64-cgo), const EXTPROC ideal-int pkg syscall (openbsd-amd64-cgo), const FD_CLOEXEC ideal-int pkg syscall (openbsd-amd64-cgo), const FD_SETSIZE ideal-int pkg syscall (openbsd-amd64-cgo), const FLUSHO ideal-int pkg syscall (openbsd-amd64-cgo), const F_DUPFD ideal-int pkg syscall (openbsd-amd64-cgo), const F_DUPFD_CLOEXEC ideal-int pkg syscall (openbsd-amd64-cgo), const F_GETFD ideal-int pkg syscall (openbsd-amd64-cgo), const F_GETFL ideal-int pkg syscall (openbsd-amd64-cgo), const F_GETLK ideal-int pkg syscall (openbsd-amd64-cgo), const F_GETOWN ideal-int pkg syscall (openbsd-amd64-cgo), const F_OK ideal-int pkg syscall (openbsd-amd64-cgo), const F_RDLCK ideal-int pkg syscall (openbsd-amd64-cgo), const F_SETFD ideal-int pkg syscall (openbsd-amd64-cgo), const F_SETFL ideal-int pkg syscall (openbsd-amd64-cgo), const F_SETLK ideal-int pkg syscall (openbsd-amd64-cgo), const F_SETLKW ideal-int pkg syscall (openbsd-amd64-cgo), const F_SETOWN ideal-int pkg syscall (openbsd-amd64-cgo), const F_UNLCK ideal-int pkg syscall (openbsd-amd64-cgo), const F_WRLCK ideal-int pkg syscall (openbsd-amd64-cgo), const HUPCL ideal-int pkg syscall (openbsd-amd64-cgo), const ICANON ideal-int pkg syscall (openbsd-amd64-cgo), const ICMP6_FILTER = 18 pkg syscall (openbsd-amd64-cgo), const ICMP6_FILTER ideal-int pkg syscall (openbsd-amd64-cgo), const ICRNL ideal-int pkg syscall (openbsd-amd64-cgo), const IEXTEN ideal-int pkg syscall (openbsd-amd64-cgo), const IFAN_ARRIVAL ideal-int pkg syscall (openbsd-amd64-cgo), const IFAN_DEPARTURE ideal-int pkg syscall (openbsd-amd64-cgo), const IFA_ROUTE ideal-int pkg syscall (openbsd-amd64-cgo), const IFF_ALLMULTI ideal-int pkg syscall (openbsd-amd64-cgo), const IFF_CANTCHANGE ideal-int pkg syscall (openbsd-amd64-cgo), const IFF_DEBUG ideal-int pkg syscall (openbsd-amd64-cgo), const IFF_LINK0 ideal-int pkg syscall (openbsd-amd64-cgo), const IFF_LINK1 ideal-int pkg syscall (openbsd-amd64-cgo), const IFF_LINK2 ideal-int pkg syscall (openbsd-amd64-cgo), const IFF_NOARP ideal-int pkg syscall (openbsd-amd64-cgo), const IFF_NOTRAILERS ideal-int pkg syscall (openbsd-amd64-cgo), const IFF_OACTIVE ideal-int pkg syscall (openbsd-amd64-cgo), const IFF_POINTOPOINT ideal-int pkg syscall (openbsd-amd64-cgo), const IFF_PROMISC ideal-int pkg syscall (openbsd-amd64-cgo), const IFF_RUNNING ideal-int pkg syscall (openbsd-amd64-cgo), const IFF_SIMPLEX ideal-int pkg syscall (openbsd-amd64-cgo), const IFNAMSIZ ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_1822 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_A12MPPSWITCH ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_AAL2 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_AAL5 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ADSL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_AFLANE8023 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_AFLANE8025 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ARAP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ARCNET ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ARCNETPLUS ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ASYNC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ATM ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ATMDXI ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ATMFUNI ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ATMIMA ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ATMLOGICAL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ATMRADIO ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ATMVCIENDPT ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ATMVIRTUAL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_BLUETOOTH ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_BRIDGE ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_BSC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_CARP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_CCTEMUL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_CEPT ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_CES ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_CHANNEL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_CNR ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_COFFEE ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_COMPOSITELINK ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DCN ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DLSW ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DOCSCABLEUPSTREAMCHANNEL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DS0 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DS0BUNDLE ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DS1FDL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DS3 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DTM ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DUMMY ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DVBASILN ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DVBASIOUT ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ECONET ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ENC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_EON ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_EPLRS ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ESCON ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ETHER ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_FAITH ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_FAST ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_FASTETHER ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_FASTETHERFX ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_FDDI ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_FIBRECHANNEL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_FRAMERELAYMPI ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_FRDLCIENDPT ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_FRELAY ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_FRELAYDCE ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_FRFORWARD ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_G703AT2MB ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_G703AT64K ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_GIF ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_GIGABITETHERNET ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_GR303IDT ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_GR303RDT ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_H323GATEKEEPER ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_H323PROXY ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_HDH1822 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_HDLC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_HDSL2 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_HIPERLAN2 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_HIPPI ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_HIPPIINTERFACE ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_HOSTPAD ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_HSSI ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_HY ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_IBM370PARCHAN ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_IDSL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_IEEE1394 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_IEEE80211 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_IEEE80212 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_IEEE8023ADLAG ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_IFGSN ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_IMT ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_INFINIBAND ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_INTERLEAVE ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_IP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_IPFORWARD ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_IPOVERATM ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_IPOVERCDLC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_IPOVERCLAW ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_IPSWITCH ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ISDN ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ISDNBASIC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ISDNPRIMARY ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ISDNS ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ISDNU ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ISO88022LLC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ISO88023 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ISO88024 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ISO88025 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ISO88025CRFPINT ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ISO88025DTR ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ISO88025FIBER ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ISO88026 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ISUP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_L2VLAN ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_L3IPVLAN ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_L3IPXVLAN ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_LAPB ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_LAPD ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_LAPF ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_LINEGROUP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_LOCALTALK ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_LOOP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_MFSIGLINK ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_MIOX25 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_MODEM ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_MPC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_MPLS ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_MPLSTUNNEL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_MSDSL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_MVL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_MYRINET ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_NFAS ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_NSIP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_OPTICALCHANNEL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_OTHER ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_P10 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_P80 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PARA ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PFLOG ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PFLOW ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PFSYNC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PLC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PON155 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PON622 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_POS ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PPP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PROPATM ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PROPBWAP2MP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PROPCNLS ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PROPMUX ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PROPVIRTUAL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PTPSERIAL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_PVC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_Q2931 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_QLLC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_RADIOMAC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_RADSL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_REACHDSL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_RFC1483 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_RS232 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_RSRB ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SDLC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SDSL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SHDSL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SIP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SIPSIG ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SIPTG ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SLIP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SMDSDXI ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SMDSICIP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SONET ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SONETPATH ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SONETVT ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SRP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_SS7SIGLINK ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_STACKTOSTACK ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_STARLAN ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_T1 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_TDLC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_TELINK ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_TERMPAD ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_TR008 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_TRANSPHDLC ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_TUNNEL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_ULTRA ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_USB ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_V11 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_V35 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_V36 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_V37 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_VDSL ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_VIRTUALTG ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_VOICEDID ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_VOICEEM ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_VOICEEMFGD ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_VOICEENCAP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_VOICEFGDEANA ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_VOICEFXO ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_VOICEFXS ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_VOICEOVERATM ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_VOICEOVERCABLE ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_VOICEOVERIP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_X213 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_X25 ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_X25DDN ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_X25HUNTGROUP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_X25MLP ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_X25PLE ideal-int pkg syscall (openbsd-amd64-cgo), const IFT_XETHER ideal-int pkg syscall (openbsd-amd64-cgo), const IGNBRK ideal-int pkg syscall (openbsd-amd64-cgo), const IGNCR ideal-int pkg syscall (openbsd-amd64-cgo), const IGNPAR ideal-int pkg syscall (openbsd-amd64-cgo), const IMAXBEL ideal-int pkg syscall (openbsd-amd64-cgo), const INLCR ideal-int pkg syscall (openbsd-amd64-cgo), const INPCK ideal-int pkg syscall (openbsd-amd64-cgo), const IN_CLASSA_HOST ideal-int pkg syscall (openbsd-amd64-cgo), const IN_CLASSA_MAX ideal-int pkg syscall (openbsd-amd64-cgo), const IN_CLASSA_NET ideal-int pkg syscall (openbsd-amd64-cgo), const IN_CLASSA_NSHIFT ideal-int pkg syscall (openbsd-amd64-cgo), const IN_CLASSB_HOST ideal-int pkg syscall (openbsd-amd64-cgo), const IN_CLASSB_MAX ideal-int pkg syscall (openbsd-amd64-cgo), const IN_CLASSB_NET ideal-int pkg syscall (openbsd-amd64-cgo), const IN_CLASSB_NSHIFT ideal-int pkg syscall (openbsd-amd64-cgo), const IN_CLASSC_HOST ideal-int pkg syscall (openbsd-amd64-cgo), const IN_CLASSC_NET ideal-int pkg syscall (openbsd-amd64-cgo), const IN_CLASSC_NSHIFT ideal-int pkg syscall (openbsd-amd64-cgo), const IN_CLASSD_HOST ideal-int pkg syscall (openbsd-amd64-cgo), const IN_CLASSD_NET ideal-int pkg syscall (openbsd-amd64-cgo), const IN_CLASSD_NSHIFT ideal-int pkg syscall (openbsd-amd64-cgo), const IN_LOOPBACKNET ideal-int pkg syscall (openbsd-amd64-cgo), const IN_RFC3021_HOST ideal-int pkg syscall (openbsd-amd64-cgo), const IN_RFC3021_NET ideal-int pkg syscall (openbsd-amd64-cgo), const IN_RFC3021_NSHIFT ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_AH ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_CARP ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_DIVERT ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_DONE ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_DSTOPTS ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_EGP ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_ENCAP ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_EON ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_ESP ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_ETHERIP ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_FRAGMENT ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_GGP ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_GRE ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_HOPOPTS ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_ICMP ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_ICMPV6 ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_IDP ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_IGMP ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_IPCOMP ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_IPIP ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_IPV4 ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_MAX ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_MAXID ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_MOBILE ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_MPLS ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_NONE ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_PFSYNC ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_PIM ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_PUP ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_RAW ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_ROUTING ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_RSVP ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_TP ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_AUTH_LEVEL ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_AUTOFLOWLABEL ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_CHECKSUM ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_DEFHLIM ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_DONTFRAG ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_DSTOPTS ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_ESP_NETWORK_LEVEL ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_ESP_TRANS_LEVEL ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_FAITH ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_FRAGTTL ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_HLIMDEC ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_HOPLIMIT ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_HOPOPTS ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_IPCOMP_LEVEL ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_MAXHLIM ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_MAXPACKET ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_MMTU ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_NEXTHOP ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_OPTIONS ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_PATHMTU ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_PIPEX ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_PKTINFO ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_PORTRANGE ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_RECVDSTOPTS ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_RECVHOPOPTS ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_RECVPATHMTU ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_RECVPKTINFO ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_RECVRTHDR ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_RECVTCLASS ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_RTABLE ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_RTHDR ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_RTHDR_STRICT ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_TCLASS ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_USE_MIN_MTU ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_VERSION ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_VERSION_MASK ideal-int pkg syscall (openbsd-amd64-cgo), const IP_AUTH_LEVEL ideal-int pkg syscall (openbsd-amd64-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (openbsd-amd64-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (openbsd-amd64-cgo), const IP_DF ideal-int pkg syscall (openbsd-amd64-cgo), const IP_ESP_NETWORK_LEVEL ideal-int pkg syscall (openbsd-amd64-cgo), const IP_ESP_TRANS_LEVEL ideal-int pkg syscall (openbsd-amd64-cgo), const IP_HDRINCL ideal-int pkg syscall (openbsd-amd64-cgo), const IP_IPCOMP_LEVEL ideal-int pkg syscall (openbsd-amd64-cgo), const IP_IPSECFLOWINFO ideal-int pkg syscall (openbsd-amd64-cgo), const IP_IPSEC_LOCAL_AUTH ideal-int pkg syscall (openbsd-amd64-cgo), const IP_IPSEC_LOCAL_CRED ideal-int pkg syscall (openbsd-amd64-cgo), const IP_IPSEC_LOCAL_ID ideal-int pkg syscall (openbsd-amd64-cgo), const IP_IPSEC_REMOTE_AUTH ideal-int pkg syscall (openbsd-amd64-cgo), const IP_IPSEC_REMOTE_CRED ideal-int pkg syscall (openbsd-amd64-cgo), const IP_IPSEC_REMOTE_ID ideal-int pkg syscall (openbsd-amd64-cgo), const IP_MAXPACKET ideal-int pkg syscall (openbsd-amd64-cgo), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (openbsd-amd64-cgo), const IP_MF ideal-int pkg syscall (openbsd-amd64-cgo), const IP_MINTTL ideal-int pkg syscall (openbsd-amd64-cgo), const IP_MIN_MEMBERSHIPS ideal-int pkg syscall (openbsd-amd64-cgo), const IP_MSS ideal-int pkg syscall (openbsd-amd64-cgo), const IP_OFFMASK ideal-int pkg syscall (openbsd-amd64-cgo), const IP_OPTIONS ideal-int pkg syscall (openbsd-amd64-cgo), const IP_PIPEX ideal-int pkg syscall (openbsd-amd64-cgo), const IP_PORTRANGE ideal-int pkg syscall (openbsd-amd64-cgo), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (openbsd-amd64-cgo), const IP_PORTRANGE_HIGH ideal-int pkg syscall (openbsd-amd64-cgo), const IP_PORTRANGE_LOW ideal-int pkg syscall (openbsd-amd64-cgo), const IP_RECVDSTADDR ideal-int pkg syscall (openbsd-amd64-cgo), const IP_RECVDSTPORT ideal-int pkg syscall (openbsd-amd64-cgo), const IP_RECVIF ideal-int pkg syscall (openbsd-amd64-cgo), const IP_RECVOPTS ideal-int pkg syscall (openbsd-amd64-cgo), const IP_RECVRETOPTS ideal-int pkg syscall (openbsd-amd64-cgo), const IP_RECVRTABLE ideal-int pkg syscall (openbsd-amd64-cgo), const IP_RECVTTL ideal-int pkg syscall (openbsd-amd64-cgo), const IP_RETOPTS ideal-int pkg syscall (openbsd-amd64-cgo), const IP_RF ideal-int pkg syscall (openbsd-amd64-cgo), const IP_RTABLE ideal-int pkg syscall (openbsd-amd64-cgo), const ISIG ideal-int pkg syscall (openbsd-amd64-cgo), const ISTRIP ideal-int pkg syscall (openbsd-amd64-cgo), const IXANY ideal-int pkg syscall (openbsd-amd64-cgo), const IXOFF ideal-int pkg syscall (openbsd-amd64-cgo), const IXON ideal-int pkg syscall (openbsd-amd64-cgo), const LCNT_OVERLOAD_FLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const LOCK_EX ideal-int pkg syscall (openbsd-amd64-cgo), const LOCK_NB ideal-int pkg syscall (openbsd-amd64-cgo), const LOCK_SH ideal-int pkg syscall (openbsd-amd64-cgo), const LOCK_UN ideal-int pkg syscall (openbsd-amd64-cgo), const MSG_BCAST ideal-int pkg syscall (openbsd-amd64-cgo), const MSG_CTRUNC ideal-int pkg syscall (openbsd-amd64-cgo), const MSG_DONTROUTE ideal-int pkg syscall (openbsd-amd64-cgo), const MSG_DONTWAIT ideal-int pkg syscall (openbsd-amd64-cgo), const MSG_EOR ideal-int pkg syscall (openbsd-amd64-cgo), const MSG_MCAST ideal-int pkg syscall (openbsd-amd64-cgo), const MSG_NOSIGNAL ideal-int pkg syscall (openbsd-amd64-cgo), const MSG_OOB ideal-int pkg syscall (openbsd-amd64-cgo), const MSG_PEEK ideal-int pkg syscall (openbsd-amd64-cgo), const MSG_TRUNC ideal-int pkg syscall (openbsd-amd64-cgo), const MSG_WAITALL ideal-int pkg syscall (openbsd-amd64-cgo), const NAME_MAX ideal-int pkg syscall (openbsd-amd64-cgo), const NET_RT_DUMP ideal-int pkg syscall (openbsd-amd64-cgo), const NET_RT_FLAGS ideal-int pkg syscall (openbsd-amd64-cgo), const NET_RT_IFLIST ideal-int pkg syscall (openbsd-amd64-cgo), const NET_RT_MAXID ideal-int pkg syscall (openbsd-amd64-cgo), const NET_RT_STATS ideal-int pkg syscall (openbsd-amd64-cgo), const NET_RT_TABLE ideal-int pkg syscall (openbsd-amd64-cgo), const NOFLSH ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_ATTRIB ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_CHILD ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_DELETE ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_EOF ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_EXEC ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_EXIT ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_EXTEND ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_FORK ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_LINK ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_LOWAT ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_PCTRLMASK ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_PDATAMASK ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_RENAME ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_REVOKE ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_TRACK ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_TRACKERR ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_TRUNCATE ideal-int pkg syscall (openbsd-amd64-cgo), const NOTE_WRITE ideal-int pkg syscall (openbsd-amd64-cgo), const OCRNL ideal-int pkg syscall (openbsd-amd64-cgo), const ONLCR ideal-int pkg syscall (openbsd-amd64-cgo), const ONLRET ideal-int pkg syscall (openbsd-amd64-cgo), const ONOCR ideal-int pkg syscall (openbsd-amd64-cgo), const ONOEOT ideal-int pkg syscall (openbsd-amd64-cgo), const OPOST ideal-int pkg syscall (openbsd-amd64-cgo), const O_ACCMODE ideal-int pkg syscall (openbsd-amd64-cgo), const O_DIRECTORY ideal-int pkg syscall (openbsd-amd64-cgo), const O_DSYNC ideal-int pkg syscall (openbsd-amd64-cgo), const O_EXLOCK ideal-int pkg syscall (openbsd-amd64-cgo), const O_FSYNC ideal-int pkg syscall (openbsd-amd64-cgo), const O_NDELAY ideal-int pkg syscall (openbsd-amd64-cgo), const O_NOFOLLOW ideal-int pkg syscall (openbsd-amd64-cgo), const O_RSYNC ideal-int pkg syscall (openbsd-amd64-cgo), const O_SHLOCK ideal-int pkg syscall (openbsd-amd64-cgo), const PARENB ideal-int pkg syscall (openbsd-amd64-cgo), const PARMRK ideal-int pkg syscall (openbsd-amd64-cgo), const PARODD ideal-int pkg syscall (openbsd-amd64-cgo), const PENDIN ideal-int pkg syscall (openbsd-amd64-cgo), const PF_FLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const PMC5_PIPELINE_FLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const PRIO_PGRP = 1 pkg syscall (openbsd-amd64-cgo), const PRIO_PGRP ideal-int pkg syscall (openbsd-amd64-cgo), const PRIO_PROCESS = 0 pkg syscall (openbsd-amd64-cgo), const PRIO_PROCESS ideal-int pkg syscall (openbsd-amd64-cgo), const PRIO_USER = 2 pkg syscall (openbsd-amd64-cgo), const PRIO_USER ideal-int pkg syscall (openbsd-amd64-cgo), const PTRACE_CONT ideal-int pkg syscall (openbsd-amd64-cgo), const PTRACE_KILL ideal-int pkg syscall (openbsd-amd64-cgo), const PTRACE_TRACEME ideal-int pkg syscall (openbsd-amd64-cgo), const RLIMIT_CORE ideal-int pkg syscall (openbsd-amd64-cgo), const RLIMIT_CPU ideal-int pkg syscall (openbsd-amd64-cgo), const RLIMIT_DATA ideal-int pkg syscall (openbsd-amd64-cgo), const RLIMIT_FSIZE ideal-int pkg syscall (openbsd-amd64-cgo), const RLIMIT_NOFILE ideal-int pkg syscall (openbsd-amd64-cgo), const RLIMIT_STACK ideal-int pkg syscall (openbsd-amd64-cgo), const RLIM_INFINITY ideal-int pkg syscall (openbsd-amd64-cgo), const RTAX_AUTHOR ideal-int pkg syscall (openbsd-amd64-cgo), const RTAX_BRD ideal-int pkg syscall (openbsd-amd64-cgo), const RTAX_DST ideal-int pkg syscall (openbsd-amd64-cgo), const RTAX_GATEWAY ideal-int pkg syscall (openbsd-amd64-cgo), const RTAX_GENMASK ideal-int pkg syscall (openbsd-amd64-cgo), const RTAX_IFA ideal-int pkg syscall (openbsd-amd64-cgo), const RTAX_IFP ideal-int pkg syscall (openbsd-amd64-cgo), const RTAX_LABEL ideal-int pkg syscall (openbsd-amd64-cgo), const RTAX_MAX ideal-int pkg syscall (openbsd-amd64-cgo), const RTAX_NETMASK ideal-int pkg syscall (openbsd-amd64-cgo), const RTAX_SRC ideal-int pkg syscall (openbsd-amd64-cgo), const RTAX_SRCMASK ideal-int pkg syscall (openbsd-amd64-cgo), const RTA_AUTHOR ideal-int pkg syscall (openbsd-amd64-cgo), const RTA_BRD ideal-int pkg syscall (openbsd-amd64-cgo), const RTA_DST ideal-int pkg syscall (openbsd-amd64-cgo), const RTA_GATEWAY ideal-int pkg syscall (openbsd-amd64-cgo), const RTA_GENMASK ideal-int pkg syscall (openbsd-amd64-cgo), const RTA_IFA ideal-int pkg syscall (openbsd-amd64-cgo), const RTA_IFP ideal-int pkg syscall (openbsd-amd64-cgo), const RTA_LABEL ideal-int pkg syscall (openbsd-amd64-cgo), const RTA_NETMASK ideal-int pkg syscall (openbsd-amd64-cgo), const RTA_SRC ideal-int pkg syscall (openbsd-amd64-cgo), const RTA_SRCMASK ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_ANNOUNCE ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_BLACKHOLE ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_CLONED ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_CLONING ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_DONE ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_DYNAMIC ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_FMASK ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_GATEWAY ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_HOST ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_LLINFO ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_MASK ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_MODIFIED ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_MPATH ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_MPLS ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_PERMANENT_ARP ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_PROTO1 ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_PROTO2 ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_PROTO3 ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_REJECT ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_SOURCE ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_STATIC ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_TUNNEL ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_UP ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_USETRAILERS ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_XRESOLVE ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_ADD ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_CHANGE ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_DELADDR ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_DELETE ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_DESYNC ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_GET ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_IFANNOUNCE ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_IFINFO ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_LOCK ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_LOSING ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_MAXSIZE ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_MISS ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_NEWADDR ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_REDIRECT ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_RESOLVE ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_RTTUNIT ideal-int pkg syscall (openbsd-amd64-cgo), const RTM_VERSION ideal-int pkg syscall (openbsd-amd64-cgo), const RTV_EXPIRE ideal-int pkg syscall (openbsd-amd64-cgo), const RTV_HOPCOUNT ideal-int pkg syscall (openbsd-amd64-cgo), const RTV_MTU ideal-int pkg syscall (openbsd-amd64-cgo), const RTV_RPIPE ideal-int pkg syscall (openbsd-amd64-cgo), const RTV_RTT ideal-int pkg syscall (openbsd-amd64-cgo), const RTV_RTTVAR ideal-int pkg syscall (openbsd-amd64-cgo), const RTV_SPIPE ideal-int pkg syscall (openbsd-amd64-cgo), const RTV_SSTHRESH ideal-int pkg syscall (openbsd-amd64-cgo), const RT_TABLEID_MAX ideal-int pkg syscall (openbsd-amd64-cgo), const RUSAGE_CHILDREN ideal-int pkg syscall (openbsd-amd64-cgo), const RUSAGE_SELF ideal-int pkg syscall (openbsd-amd64-cgo), const RUSAGE_THREAD ideal-int pkg syscall (openbsd-amd64-cgo), const SCM_RIGHTS ideal-int pkg syscall (openbsd-amd64-cgo), const SCM_TIMESTAMP ideal-int pkg syscall (openbsd-amd64-cgo), const SIGCHLD Signal pkg syscall (openbsd-amd64-cgo), const SIGCONT Signal pkg syscall (openbsd-amd64-cgo), const SIGEMT Signal pkg syscall (openbsd-amd64-cgo), const SIGINFO Signal pkg syscall (openbsd-amd64-cgo), const SIGIO Signal pkg syscall (openbsd-amd64-cgo), const SIGIOT Signal pkg syscall (openbsd-amd64-cgo), const SIGPROF Signal pkg syscall (openbsd-amd64-cgo), const SIGSTOP Signal pkg syscall (openbsd-amd64-cgo), const SIGSYS Signal pkg syscall (openbsd-amd64-cgo), const SIGTHR Signal pkg syscall (openbsd-amd64-cgo), const SIGTSTP Signal pkg syscall (openbsd-amd64-cgo), const SIGTTIN Signal pkg syscall (openbsd-amd64-cgo), const SIGTTOU Signal pkg syscall (openbsd-amd64-cgo), const SIGURG Signal pkg syscall (openbsd-amd64-cgo), const SIGUSR1 Signal pkg syscall (openbsd-amd64-cgo), const SIGUSR2 Signal pkg syscall (openbsd-amd64-cgo), const SIGVTALRM Signal pkg syscall (openbsd-amd64-cgo), const SIGWINCH Signal pkg syscall (openbsd-amd64-cgo), const SIGXCPU Signal pkg syscall (openbsd-amd64-cgo), const SIGXFSZ Signal pkg syscall (openbsd-amd64-cgo), const SIOCADDMULTI ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCAIFADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCAIFGROUP ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCALIFADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCATMARK ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGADD ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGADDS ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGARL ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGDADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGDEL ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGDELS ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGFLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGFRL ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGCACHE ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGFD ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGHT ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGIFFLGS ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGMA ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGPARAM ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGPRI ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGRL ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGSIFS ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGGTO ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGIFS ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGRTS ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSCACHE ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSFD ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSHT ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSIFCOST ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSIFFLGS ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSIFPRIO ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSMA ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSPRI ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSPROTO ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSTO ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSTXHC ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCDELMULTI ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCDIFADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCDIFGROUP ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCDIFPHYADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCDLIFADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGETKALIVE ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGETLABEL ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGETPFLOW ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGETPFSYNC ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGETSGCNT ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGETVIFCNT ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGHIWAT ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFASYNCMAP ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFBRDADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFCONF ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFDATA ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFDESCR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFDSTADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFFLAGS ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFGATTR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFGENERIC ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFGMEMB ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFGROUP ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFMEDIA ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFMETRIC ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFMTU ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFNETMASK ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFPDSTADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFPRIORITY ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFPSRCADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFRDOMAIN ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFRTLABEL ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFTIMESLOT ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFXFLAGS ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGLIFADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGLIFPHYADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGLIFPHYRTABLE ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGLOWAT ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGPGRP ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGVH ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCIFCREATE ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCIFDESTROY ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCIFGCLONERS ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSETKALIVE ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSETLABEL ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSETPFLOW ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSETPFSYNC ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSHIWAT ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFASYNCMAP ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFBRDADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFDESCR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFDSTADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFFLAGS ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFGATTR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFGENERIC ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFLLADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFMEDIA ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFMETRIC ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFMTU ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFNETMASK ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFPHYADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFPRIORITY ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFRDOMAIN ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFRTLABEL ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFTIMESLOT ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSIFXFLAGS ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSLIFPHYADDR ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSLIFPHYRTABLE ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSLOWAT ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSPGRP ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSVH ideal-int pkg syscall (openbsd-amd64-cgo), const SOCK_RDM ideal-int pkg syscall (openbsd-amd64-cgo), const SO_ACCEPTCONN ideal-int pkg syscall (openbsd-amd64-cgo), const SO_BINDANY ideal-int pkg syscall (openbsd-amd64-cgo), const SO_DEBUG ideal-int pkg syscall (openbsd-amd64-cgo), const SO_ERROR ideal-int pkg syscall (openbsd-amd64-cgo), const SO_NETPROC ideal-int pkg syscall (openbsd-amd64-cgo), const SO_OOBINLINE ideal-int pkg syscall (openbsd-amd64-cgo), const SO_PEERCRED ideal-int pkg syscall (openbsd-amd64-cgo), const SO_RCVLOWAT ideal-int pkg syscall (openbsd-amd64-cgo), const SO_RCVTIMEO ideal-int pkg syscall (openbsd-amd64-cgo), const SO_REUSEPORT ideal-int pkg syscall (openbsd-amd64-cgo), const SO_RTABLE ideal-int pkg syscall (openbsd-amd64-cgo), const SO_SNDLOWAT ideal-int pkg syscall (openbsd-amd64-cgo), const SO_SNDTIMEO ideal-int pkg syscall (openbsd-amd64-cgo), const SO_SPLICE ideal-int pkg syscall (openbsd-amd64-cgo), const SO_TIMESTAMP ideal-int pkg syscall (openbsd-amd64-cgo), const SO_TYPE ideal-int pkg syscall (openbsd-amd64-cgo), const SO_USELOOPBACK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_ACCEPT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_ACCESS ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_ACCT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_ADJFREQ ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_ADJTIME ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_BIND ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_CHDIR ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_CHFLAGS ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_CHMOD ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_CHOWN ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_CHROOT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_CLOCK_GETRES ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_CLOCK_GETTIME ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_CLOCK_SETTIME ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_CLOSE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_CLOSEFROM ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_CONNECT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_DUP ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_DUP2 ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_EXECVE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_EXIT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FACCESSAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FCHDIR ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FCHFLAGS ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FCHMOD ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FCHMODAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FCHOWN ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FCHOWNAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FCNTL ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FHOPEN ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FHSTAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FHSTATFS ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FLOCK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FORK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FPATHCONF ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FSTAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FSTATAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FSTATFS ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FSYNC ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FTRUNCATE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FUTIMENS ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_FUTIMES ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETDIRENTRIES ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETDTABLECOUNT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETEGID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETEUID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETFH ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETFSSTAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETGID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETGROUPS ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETITIMER ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETLOGIN ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETPEERNAME ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETPGID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETPGRP ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETPID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETPPID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETPRIORITY ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETRESGID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETRESUID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETRLIMIT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETRTABLE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETRUSAGE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETSID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETSOCKNAME ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETSOCKOPT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETTHRID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETTIMEOFDAY ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETUID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_IOCTL ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_ISSETUGID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_KEVENT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_KILL ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_KQUEUE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_KTRACE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_LCHOWN ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_LINK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_LINKAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_LISTEN ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_LSEEK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_LSTAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MADVISE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MINCORE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MINHERIT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MKDIR ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MKDIRAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MKFIFO ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MKFIFOAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MKNOD ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MKNODAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MLOCK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MLOCKALL ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MMAP ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MOUNT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MPROTECT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MQUERY ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MSGCTL ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MSGGET ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MSGRCV ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MSGSND ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MSYNC ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MUNLOCK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MUNLOCKALL ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_MUNMAP ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_NANOSLEEP ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_NFSSVC ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_OBREAK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_OPEN ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_OPENAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_PATHCONF ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_PIPE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_POLL ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_PREAD ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_PREADV ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_PROFIL ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_PTRACE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_PWRITE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_PWRITEV ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_QUOTACTL ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_READ ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_READLINK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_READLINKAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_READV ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_REBOOT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_RECVFROM ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_RECVMSG ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_RENAME ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_RENAMEAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_REVOKE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_RMDIR ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SCHED_YIELD ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SELECT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SEMGET ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SEMOP ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SENDMSG ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SENDTO ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETEGID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETEUID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETGID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETGROUPS ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETITIMER ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETLOGIN ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETPGID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETPRIORITY ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETREGID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETRESGID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETRESUID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETREUID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETRLIMIT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETRTABLE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETSID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETSOCKOPT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETTIMEOFDAY ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SETUID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SHMAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SHMCTL ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SHMDT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SHMGET ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SHUTDOWN ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SIGACTION ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SIGALTSTACK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SIGPENDING ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SIGPROCMASK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SIGRETURN ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SIGSUSPEND ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SOCKET ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SOCKETPAIR ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_STAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_STATFS ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SWAPCTL ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SYMLINK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SYMLINKAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SYNC ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SYSARCH ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_TRUNCATE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_UMASK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_UNLINK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_UNLINKAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_UNMOUNT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_UTIMENSAT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_UTIMES ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_VFORK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_WAIT4 ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_WRITE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_WRITEV ideal-int pkg syscall (openbsd-amd64-cgo), const SYS___GETCWD ideal-int pkg syscall (openbsd-amd64-cgo), const SYS___GET_TCB ideal-int pkg syscall (openbsd-amd64-cgo), const SYS___SEMCTL ideal-int pkg syscall (openbsd-amd64-cgo), const SYS___SET_TCB ideal-int pkg syscall (openbsd-amd64-cgo), const SYS___SYSCTL ideal-int pkg syscall (openbsd-amd64-cgo), const SYS___TFORK ideal-int pkg syscall (openbsd-amd64-cgo), const SYS___THREXIT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS___THRSIGDIVERT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS___THRSLEEP ideal-int pkg syscall (openbsd-amd64-cgo), const SYS___THRWAKEUP ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofBpfHdr ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofBpfInsn ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofBpfProgram ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofBpfStat ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofBpfVersion ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofCmsghdr ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofICMPv6Filter = 32 pkg syscall (openbsd-amd64-cgo), const SizeofICMPv6Filter ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofIPMreq ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofIPv6MTUInfo = 32 pkg syscall (openbsd-amd64-cgo), const SizeofIPv6MTUInfo ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofIPv6Mreq ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofIfAnnounceMsghdr ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofIfData ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofIfMsghdr ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofIfaMsghdr ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofInet6Pktinfo ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofLinger ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofMsghdr ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofRtMetrics ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofRtMsghdr ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofSockaddrAny ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofSockaddrDatalink ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofSockaddrInet4 ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofSockaddrInet6 ideal-int pkg syscall (openbsd-amd64-cgo), const SizeofSockaddrUnix ideal-int pkg syscall (openbsd-amd64-cgo), const TCIFLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const TCIOFLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const TCOFLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const TCP_MAXBURST ideal-int pkg syscall (openbsd-amd64-cgo), const TCP_MAXSEG ideal-int pkg syscall (openbsd-amd64-cgo), const TCP_MAXWIN ideal-int pkg syscall (openbsd-amd64-cgo), const TCP_MAX_SACK ideal-int pkg syscall (openbsd-amd64-cgo), const TCP_MAX_WINSHIFT ideal-int pkg syscall (openbsd-amd64-cgo), const TCP_MD5SIG ideal-int pkg syscall (openbsd-amd64-cgo), const TCP_MSS ideal-int pkg syscall (openbsd-amd64-cgo), const TCP_NSTATES ideal-int pkg syscall (openbsd-amd64-cgo), const TCP_SACK_ENABLE ideal-int pkg syscall (openbsd-amd64-cgo), const TCSAFLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCCBRK ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCCDTR ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCCONS ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCDRAIN ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCEXCL ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCEXT ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCFLAG_CLOCAL ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCFLAG_CRTSCTS ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCFLAG_MDMBUF ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCFLAG_PPS ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCFLAG_SOFTCAR ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCFLUSH ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCGETA ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCGETD ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCGFLAGS ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCGPGRP ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCGTSTAMP ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCGWINSZ ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCMBIC ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCMBIS ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCMGET ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCMODG ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCMODS ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCMSET ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCM_CAR ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCM_CD ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCM_CTS ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCM_DSR ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCM_DTR ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCM_LE ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCM_RI ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCM_RNG ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCM_RTS ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCM_SR ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCM_ST ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCNOTTY ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCNXCL ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCOUTQ ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCPKT ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCPKT_DATA ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCPKT_DOSTOP ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCPKT_IOCTL ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCPKT_NOSTOP ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCPKT_START ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCPKT_STOP ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCREMOTE ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSBRK ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSCTTY ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSDTR ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSETA ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSETAF ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSETAW ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSETD ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSFLAGS ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSIG ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSPGRP ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSTART ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSTAT ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSTI ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSTOP ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSTSTAMP ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCSWINSZ ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCUCNTL ideal-int pkg syscall (openbsd-amd64-cgo), const TOSTOP ideal-int pkg syscall (openbsd-amd64-cgo), const VDISCARD ideal-int pkg syscall (openbsd-amd64-cgo), const VDSUSP ideal-int pkg syscall (openbsd-amd64-cgo), const VEOF ideal-int pkg syscall (openbsd-amd64-cgo), const VEOL ideal-int pkg syscall (openbsd-amd64-cgo), const VEOL2 ideal-int pkg syscall (openbsd-amd64-cgo), const VERASE ideal-int pkg syscall (openbsd-amd64-cgo), const VINTR ideal-int pkg syscall (openbsd-amd64-cgo), const VKILL ideal-int pkg syscall (openbsd-amd64-cgo), const VLNEXT ideal-int pkg syscall (openbsd-amd64-cgo), const VMIN ideal-int pkg syscall (openbsd-amd64-cgo), const VQUIT ideal-int pkg syscall (openbsd-amd64-cgo), const VREPRINT ideal-int pkg syscall (openbsd-amd64-cgo), const VSTART ideal-int pkg syscall (openbsd-amd64-cgo), const VSTATUS ideal-int pkg syscall (openbsd-amd64-cgo), const VSTOP ideal-int pkg syscall (openbsd-amd64-cgo), const VSUSP ideal-int pkg syscall (openbsd-amd64-cgo), const VTIME ideal-int pkg syscall (openbsd-amd64-cgo), const VWERASE ideal-int pkg syscall (openbsd-amd64-cgo), const WALTSIG ideal-int pkg syscall (openbsd-amd64-cgo), const WCONTINUED ideal-int pkg syscall (openbsd-amd64-cgo), const WCOREFLAG ideal-int pkg syscall (openbsd-amd64-cgo), const WNOHANG ideal-int pkg syscall (openbsd-amd64-cgo), const WSTOPPED ideal-int pkg syscall (openbsd-amd64-cgo), const WUNTRACED ideal-int pkg syscall (openbsd-amd64-cgo), func Accept(int) (int, Sockaddr, error) pkg syscall (openbsd-amd64-cgo), func Access(string, uint32) error pkg syscall (openbsd-amd64-cgo), func Adjtime(*Timeval, *Timeval) error pkg syscall (openbsd-amd64-cgo), func Bind(int, Sockaddr) error pkg syscall (openbsd-amd64-cgo), func BpfBuflen(int) (int, error) pkg syscall (openbsd-amd64-cgo), func BpfDatalink(int) (int, error) pkg syscall (openbsd-amd64-cgo), func BpfHeadercmpl(int) (int, error) pkg syscall (openbsd-amd64-cgo), func BpfInterface(int, string) (string, error) pkg syscall (openbsd-amd64-cgo), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (openbsd-amd64-cgo), func BpfStats(int) (*BpfStat, error) pkg syscall (openbsd-amd64-cgo), func BpfStmt(int, int) *BpfInsn pkg syscall (openbsd-amd64-cgo), func BpfTimeout(int) (*Timeval, error) pkg syscall (openbsd-amd64-cgo), func CheckBpfVersion(int) error pkg syscall (openbsd-amd64-cgo), func Chflags(string, int) error pkg syscall (openbsd-amd64-cgo), func Chroot(string) error pkg syscall (openbsd-amd64-cgo), func Close(int) error pkg syscall (openbsd-amd64-cgo), func CloseOnExec(int) pkg syscall (openbsd-amd64-cgo), func CmsgLen(int) int pkg syscall (openbsd-amd64-cgo), func CmsgSpace(int) int pkg syscall (openbsd-amd64-cgo), func Connect(int, Sockaddr) error pkg syscall (openbsd-amd64-cgo), func Dup(int) (int, error) pkg syscall (openbsd-amd64-cgo), func Dup2(int, int) error pkg syscall (openbsd-amd64-cgo), func Fchdir(int) error pkg syscall (openbsd-amd64-cgo), func Fchflags(int, int) error pkg syscall (openbsd-amd64-cgo), func Fchmod(int, uint32) error pkg syscall (openbsd-amd64-cgo), func Fchown(int, int, int) error pkg syscall (openbsd-amd64-cgo), func Flock(int, int) error pkg syscall (openbsd-amd64-cgo), func FlushBpf(int) error pkg syscall (openbsd-amd64-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (openbsd-amd64-cgo), func Fpathconf(int, int) (int, error) pkg syscall (openbsd-amd64-cgo), func Fstat(int, *Stat_t) error pkg syscall (openbsd-amd64-cgo), func Fstatfs(int, *Statfs_t) error pkg syscall (openbsd-amd64-cgo), func Fsync(int) error pkg syscall (openbsd-amd64-cgo), func Ftruncate(int, int64) error pkg syscall (openbsd-amd64-cgo), func Futimes(int, []Timeval) error pkg syscall (openbsd-amd64-cgo), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (openbsd-amd64-cgo), func Getfsstat([]Statfs_t, int) (int, error) pkg syscall (openbsd-amd64-cgo), func Getpeername(int) (Sockaddr, error) pkg syscall (openbsd-amd64-cgo), func Getpgid(int) (int, error) pkg syscall (openbsd-amd64-cgo), func Getpgrp() int pkg syscall (openbsd-amd64-cgo), func Getpriority(int, int) (int, error) pkg syscall (openbsd-amd64-cgo), func Getrlimit(int, *Rlimit) error pkg syscall (openbsd-amd64-cgo), func Getrusage(int, *Rusage) error pkg syscall (openbsd-amd64-cgo), func Getsid(int) (int, error) pkg syscall (openbsd-amd64-cgo), func Getsockname(int) (Sockaddr, error) pkg syscall (openbsd-amd64-cgo), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (openbsd-amd64-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) pkg syscall (openbsd-amd64-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (openbsd-amd64-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) pkg syscall (openbsd-amd64-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (openbsd-amd64-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (openbsd-amd64-cgo), func GetsockoptInt(int, int, int) (int, error) pkg syscall (openbsd-amd64-cgo), func Issetugid() bool pkg syscall (openbsd-amd64-cgo), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (openbsd-amd64-cgo), func Kill(int, Signal) error pkg syscall (openbsd-amd64-cgo), func Kqueue() (int, error) pkg syscall (openbsd-amd64-cgo), func Listen(int, int) error pkg syscall (openbsd-amd64-cgo), func Lstat(string, *Stat_t) error pkg syscall (openbsd-amd64-cgo), func Mkfifo(string, uint32) error pkg syscall (openbsd-amd64-cgo), func Mknod(string, uint32, int) error pkg syscall (openbsd-amd64-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (openbsd-amd64-cgo), func Munmap([]uint8) error pkg syscall (openbsd-amd64-cgo), func Nanosleep(*Timespec, *Timespec) error pkg syscall (openbsd-amd64-cgo), func Open(string, int, uint32) (int, error) pkg syscall (openbsd-amd64-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (openbsd-amd64-cgo), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (openbsd-amd64-cgo), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (openbsd-amd64-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (openbsd-amd64-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (openbsd-amd64-cgo), func Pathconf(string, int) (int, error) pkg syscall (openbsd-amd64-cgo), func Pipe([]int) error pkg syscall (openbsd-amd64-cgo), func Pread(int, []uint8, int64) (int, error) pkg syscall (openbsd-amd64-cgo), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (openbsd-amd64-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-amd64-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-amd64-cgo), func Read(int, []uint8) (int, error) pkg syscall (openbsd-amd64-cgo), func ReadDirent(int, []uint8) (int, error) pkg syscall (openbsd-amd64-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (openbsd-amd64-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (openbsd-amd64-cgo), func Revoke(string) error pkg syscall (openbsd-amd64-cgo), func RouteRIB(int, int) ([]uint8, error) pkg syscall (openbsd-amd64-cgo), func Seek(int, int64, int) (int64, error) pkg syscall (openbsd-amd64-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (openbsd-amd64-cgo), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (openbsd-amd64-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (openbsd-amd64-cgo), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (openbsd-amd64-cgo), func SetBpf(int, []BpfInsn) error pkg syscall (openbsd-amd64-cgo), func SetBpfBuflen(int, int) (int, error) pkg syscall (openbsd-amd64-cgo), func SetBpfDatalink(int, int) (int, error) pkg syscall (openbsd-amd64-cgo), func SetBpfHeadercmpl(int, int) error pkg syscall (openbsd-amd64-cgo), func SetBpfImmediate(int, int) error pkg syscall (openbsd-amd64-cgo), func SetBpfInterface(int, string) error pkg syscall (openbsd-amd64-cgo), func SetBpfPromisc(int, int) error pkg syscall (openbsd-amd64-cgo), func SetBpfTimeout(int, *Timeval) error pkg syscall (openbsd-amd64-cgo), func SetKevent(*Kevent_t, int, int, int) pkg syscall (openbsd-amd64-cgo), func SetNonblock(int, bool) error pkg syscall (openbsd-amd64-cgo), func Setegid(int) error pkg syscall (openbsd-amd64-cgo), func Seteuid(int) error pkg syscall (openbsd-amd64-cgo), func Setgid(int) error pkg syscall (openbsd-amd64-cgo), func Setgroups([]int) error pkg syscall (openbsd-amd64-cgo), func Setlogin(string) error pkg syscall (openbsd-amd64-cgo), func Setpgid(int, int) error pkg syscall (openbsd-amd64-cgo), func Setpriority(int, int, int) error pkg syscall (openbsd-amd64-cgo), func Setregid(int, int) error pkg syscall (openbsd-amd64-cgo), func Setreuid(int, int) error pkg syscall (openbsd-amd64-cgo), func Setrlimit(int, *Rlimit) error pkg syscall (openbsd-amd64-cgo), func Setsid() (int, error) pkg syscall (openbsd-amd64-cgo), func SetsockoptByte(int, int, int, uint8) error pkg syscall (openbsd-amd64-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error pkg syscall (openbsd-amd64-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (openbsd-amd64-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (openbsd-amd64-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (openbsd-amd64-cgo), func SetsockoptInt(int, int, int, int) error pkg syscall (openbsd-amd64-cgo), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (openbsd-amd64-cgo), func SetsockoptString(int, int, int, string) error pkg syscall (openbsd-amd64-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (openbsd-amd64-cgo), func Settimeofday(*Timeval) error pkg syscall (openbsd-amd64-cgo), func Setuid(int) error pkg syscall (openbsd-amd64-cgo), func Shutdown(int, int) error pkg syscall (openbsd-amd64-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) pkg syscall (openbsd-amd64-cgo), func Socket(int, int, int) (int, error) pkg syscall (openbsd-amd64-cgo), func Socketpair(int, int, int) ([2]int, error) pkg syscall (openbsd-amd64-cgo), func Stat(string, *Stat_t) error pkg syscall (openbsd-amd64-cgo), func Statfs(string, *Statfs_t) error pkg syscall (openbsd-amd64-cgo), func StringSlicePtr([]string) []*uint8 pkg syscall (openbsd-amd64-cgo), func Sync() error pkg syscall (openbsd-amd64-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-amd64-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-amd64-cgo), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (openbsd-amd64-cgo), func Sysctl(string) (string, error) pkg syscall (openbsd-amd64-cgo), func SysctlUint32(string) (uint32, error) pkg syscall (openbsd-amd64-cgo), func TimevalToNsec(Timeval) int64 pkg syscall (openbsd-amd64-cgo), func Truncate(string, int64) error pkg syscall (openbsd-amd64-cgo), func Umask(int) int pkg syscall (openbsd-amd64-cgo), func UnixRights(...int) []uint8 pkg syscall (openbsd-amd64-cgo), func Unmount(string, int) error pkg syscall (openbsd-amd64-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (openbsd-amd64-cgo), func Write(int, []uint8) (int, error) pkg syscall (openbsd-amd64-cgo), method (*Cmsghdr) SetLen(int) pkg syscall (openbsd-amd64-cgo), method (*Iovec) SetLen(int) pkg syscall (openbsd-amd64-cgo), method (*Msghdr) SetControllen(int) pkg syscall (openbsd-amd64-cgo), type BpfHdr struct pkg syscall (openbsd-amd64-cgo), type BpfHdr struct, Caplen uint32 pkg syscall (openbsd-amd64-cgo), type BpfHdr struct, Datalen uint32 pkg syscall (openbsd-amd64-cgo), type BpfHdr struct, Hdrlen uint16 pkg syscall (openbsd-amd64-cgo), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (openbsd-amd64-cgo), type BpfHdr struct, Tstamp BpfTimeval pkg syscall (openbsd-amd64-cgo), type BpfInsn struct pkg syscall (openbsd-amd64-cgo), type BpfInsn struct, Code uint16 pkg syscall (openbsd-amd64-cgo), type BpfInsn struct, Jf uint8 pkg syscall (openbsd-amd64-cgo), type BpfInsn struct, Jt uint8 pkg syscall (openbsd-amd64-cgo), type BpfInsn struct, K uint32 pkg syscall (openbsd-amd64-cgo), type BpfProgram struct pkg syscall (openbsd-amd64-cgo), type BpfProgram struct, Insns *BpfInsn pkg syscall (openbsd-amd64-cgo), type BpfProgram struct, Len uint32 pkg syscall (openbsd-amd64-cgo), type BpfProgram struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-amd64-cgo), type BpfStat struct pkg syscall (openbsd-amd64-cgo), type BpfStat struct, Drop uint32 pkg syscall (openbsd-amd64-cgo), type BpfStat struct, Recv uint32 pkg syscall (openbsd-amd64-cgo), type BpfTimeval struct pkg syscall (openbsd-amd64-cgo), type BpfTimeval struct, Sec uint32 pkg syscall (openbsd-amd64-cgo), type BpfTimeval struct, Usec uint32 pkg syscall (openbsd-amd64-cgo), type BpfVersion struct pkg syscall (openbsd-amd64-cgo), type BpfVersion struct, Major uint16 pkg syscall (openbsd-amd64-cgo), type BpfVersion struct, Minor uint16 pkg syscall (openbsd-amd64-cgo), type Cmsghdr struct pkg syscall (openbsd-amd64-cgo), type Cmsghdr struct, Len uint32 pkg syscall (openbsd-amd64-cgo), type Cmsghdr struct, Level int32 pkg syscall (openbsd-amd64-cgo), type Cmsghdr struct, Type int32 pkg syscall (openbsd-amd64-cgo), type Credential struct pkg syscall (openbsd-amd64-cgo), type Credential struct, Gid uint32 pkg syscall (openbsd-amd64-cgo), type Credential struct, Groups []uint32 pkg syscall (openbsd-amd64-cgo), type Credential struct, Uid uint32 pkg syscall (openbsd-amd64-cgo), type Dirent struct pkg syscall (openbsd-amd64-cgo), type Dirent struct, Fileno uint32 pkg syscall (openbsd-amd64-cgo), type Dirent struct, Name [256]int8 pkg syscall (openbsd-amd64-cgo), type Dirent struct, Namlen uint8 pkg syscall (openbsd-amd64-cgo), type Dirent struct, Reclen uint16 pkg syscall (openbsd-amd64-cgo), type Dirent struct, Type uint8 pkg syscall (openbsd-amd64-cgo), type FdSet struct pkg syscall (openbsd-amd64-cgo), type FdSet struct, Bits [32]int32 pkg syscall (openbsd-amd64-cgo), type Flock_t struct pkg syscall (openbsd-amd64-cgo), type Flock_t struct, Len int64 pkg syscall (openbsd-amd64-cgo), type Flock_t struct, Pid int32 pkg syscall (openbsd-amd64-cgo), type Flock_t struct, Start int64 pkg syscall (openbsd-amd64-cgo), type Flock_t struct, Type int16 pkg syscall (openbsd-amd64-cgo), type Flock_t struct, Whence int16 pkg syscall (openbsd-amd64-cgo), type Fsid struct pkg syscall (openbsd-amd64-cgo), type Fsid struct, Val [2]int32 pkg syscall (openbsd-amd64-cgo), type ICMPv6Filter struct pkg syscall (openbsd-amd64-cgo), type ICMPv6Filter struct, Filt [8]uint32 pkg syscall (openbsd-amd64-cgo), type IPv6MTUInfo struct pkg syscall (openbsd-amd64-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 pkg syscall (openbsd-amd64-cgo), type IPv6MTUInfo struct, Mtu uint32 pkg syscall (openbsd-amd64-cgo), type IfAnnounceMsghdr struct pkg syscall (openbsd-amd64-cgo), type IfAnnounceMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-amd64-cgo), type IfAnnounceMsghdr struct, Index uint16 pkg syscall (openbsd-amd64-cgo), type IfAnnounceMsghdr struct, Msglen uint16 pkg syscall (openbsd-amd64-cgo), type IfAnnounceMsghdr struct, Name [16]int8 pkg syscall (openbsd-amd64-cgo), type IfAnnounceMsghdr struct, Type uint8 pkg syscall (openbsd-amd64-cgo), type IfAnnounceMsghdr struct, Version uint8 pkg syscall (openbsd-amd64-cgo), type IfAnnounceMsghdr struct, What uint16 pkg syscall (openbsd-amd64-cgo), type IfData struct pkg syscall (openbsd-amd64-cgo), type IfData struct, Addrlen uint8 pkg syscall (openbsd-amd64-cgo), type IfData struct, Baudrate uint64 pkg syscall (openbsd-amd64-cgo), type IfData struct, Capabilities uint32 pkg syscall (openbsd-amd64-cgo), type IfData struct, Collisions uint64 pkg syscall (openbsd-amd64-cgo), type IfData struct, Hdrlen uint8 pkg syscall (openbsd-amd64-cgo), type IfData struct, Ibytes uint64 pkg syscall (openbsd-amd64-cgo), type IfData struct, Ierrors uint64 pkg syscall (openbsd-amd64-cgo), type IfData struct, Imcasts uint64 pkg syscall (openbsd-amd64-cgo), type IfData struct, Ipackets uint64 pkg syscall (openbsd-amd64-cgo), type IfData struct, Iqdrops uint64 pkg syscall (openbsd-amd64-cgo), type IfData struct, Lastchange Timeval pkg syscall (openbsd-amd64-cgo), type IfData struct, Link_state uint8 pkg syscall (openbsd-amd64-cgo), type IfData struct, Mclpool [7]Mclpool pkg syscall (openbsd-amd64-cgo), type IfData struct, Metric uint32 pkg syscall (openbsd-amd64-cgo), type IfData struct, Mtu uint32 pkg syscall (openbsd-amd64-cgo), type IfData struct, Noproto uint64 pkg syscall (openbsd-amd64-cgo), type IfData struct, Obytes uint64 pkg syscall (openbsd-amd64-cgo), type IfData struct, Oerrors uint64 pkg syscall (openbsd-amd64-cgo), type IfData struct, Omcasts uint64 pkg syscall (openbsd-amd64-cgo), type IfData struct, Opackets uint64 pkg syscall (openbsd-amd64-cgo), type IfData struct, Pad uint32 pkg syscall (openbsd-amd64-cgo), type IfData struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-amd64-cgo), type IfData struct, Pad_cgo_1 [4]uint8 pkg syscall (openbsd-amd64-cgo), type IfData struct, Type uint8 pkg syscall (openbsd-amd64-cgo), type IfMsghdr struct pkg syscall (openbsd-amd64-cgo), type IfMsghdr struct, Addrs int32 pkg syscall (openbsd-amd64-cgo), type IfMsghdr struct, Data IfData pkg syscall (openbsd-amd64-cgo), type IfMsghdr struct, Flags int32 pkg syscall (openbsd-amd64-cgo), type IfMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-amd64-cgo), type IfMsghdr struct, Index uint16 pkg syscall (openbsd-amd64-cgo), type IfMsghdr struct, Msglen uint16 pkg syscall (openbsd-amd64-cgo), type IfMsghdr struct, Pad1 uint8 pkg syscall (openbsd-amd64-cgo), type IfMsghdr struct, Pad2 uint8 pkg syscall (openbsd-amd64-cgo), type IfMsghdr struct, Tableid uint16 pkg syscall (openbsd-amd64-cgo), type IfMsghdr struct, Type uint8 pkg syscall (openbsd-amd64-cgo), type IfMsghdr struct, Version uint8 pkg syscall (openbsd-amd64-cgo), type IfMsghdr struct, Xflags int32 pkg syscall (openbsd-amd64-cgo), type IfaMsghdr struct pkg syscall (openbsd-amd64-cgo), type IfaMsghdr struct, Addrs int32 pkg syscall (openbsd-amd64-cgo), type IfaMsghdr struct, Flags int32 pkg syscall (openbsd-amd64-cgo), type IfaMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-amd64-cgo), type IfaMsghdr struct, Index uint16 pkg syscall (openbsd-amd64-cgo), type IfaMsghdr struct, Metric int32 pkg syscall (openbsd-amd64-cgo), type IfaMsghdr struct, Msglen uint16 pkg syscall (openbsd-amd64-cgo), type IfaMsghdr struct, Pad1 uint8 pkg syscall (openbsd-amd64-cgo), type IfaMsghdr struct, Pad2 uint8 pkg syscall (openbsd-amd64-cgo), type IfaMsghdr struct, Tableid uint16 pkg syscall (openbsd-amd64-cgo), type IfaMsghdr struct, Type uint8 pkg syscall (openbsd-amd64-cgo), type IfaMsghdr struct, Version uint8 pkg syscall (openbsd-amd64-cgo), type Inet6Pktinfo struct pkg syscall (openbsd-amd64-cgo), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (openbsd-amd64-cgo), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (openbsd-amd64-cgo), type InterfaceAddrMessage struct pkg syscall (openbsd-amd64-cgo), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (openbsd-amd64-cgo), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (openbsd-amd64-cgo), type InterfaceAnnounceMessage struct pkg syscall (openbsd-amd64-cgo), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr pkg syscall (openbsd-amd64-cgo), type InterfaceMessage struct pkg syscall (openbsd-amd64-cgo), type InterfaceMessage struct, Data []uint8 pkg syscall (openbsd-amd64-cgo), type InterfaceMessage struct, Header IfMsghdr pkg syscall (openbsd-amd64-cgo), type Iovec struct pkg syscall (openbsd-amd64-cgo), type Iovec struct, Base *uint8 pkg syscall (openbsd-amd64-cgo), type Iovec struct, Len uint64 pkg syscall (openbsd-amd64-cgo), type Kevent_t struct pkg syscall (openbsd-amd64-cgo), type Kevent_t struct, Data int32 pkg syscall (openbsd-amd64-cgo), type Kevent_t struct, Fflags uint32 pkg syscall (openbsd-amd64-cgo), type Kevent_t struct, Filter int16 pkg syscall (openbsd-amd64-cgo), type Kevent_t struct, Flags uint16 pkg syscall (openbsd-amd64-cgo), type Kevent_t struct, Ident uint32 pkg syscall (openbsd-amd64-cgo), type Kevent_t struct, Udata *uint8 pkg syscall (openbsd-amd64-cgo), type Mclpool struct pkg syscall (openbsd-amd64-cgo), type Mclpool struct, Alive uint16 pkg syscall (openbsd-amd64-cgo), type Mclpool struct, Cwm uint16 pkg syscall (openbsd-amd64-cgo), type Mclpool struct, Grown uint32 pkg syscall (openbsd-amd64-cgo), type Mclpool struct, Hwm uint16 pkg syscall (openbsd-amd64-cgo), type Mclpool struct, Lwm uint16 pkg syscall (openbsd-amd64-cgo), type Msghdr struct pkg syscall (openbsd-amd64-cgo), type Msghdr struct, Control *uint8 pkg syscall (openbsd-amd64-cgo), type Msghdr struct, Controllen uint32 pkg syscall (openbsd-amd64-cgo), type Msghdr struct, Flags int32 pkg syscall (openbsd-amd64-cgo), type Msghdr struct, Iov *Iovec pkg syscall (openbsd-amd64-cgo), type Msghdr struct, Iovlen uint32 pkg syscall (openbsd-amd64-cgo), type Msghdr struct, Name *uint8 pkg syscall (openbsd-amd64-cgo), type Msghdr struct, Namelen uint32 pkg syscall (openbsd-amd64-cgo), type Msghdr struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-amd64-cgo), type Msghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddr struct, Data [14]int8 pkg syscall (openbsd-amd64-cgo), type RawSockaddr struct, Family uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddr struct, Len uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrDatalink struct pkg syscall (openbsd-amd64-cgo), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrDatalink struct, Data [24]int8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrDatalink struct, Family uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrDatalink struct, Index uint16 pkg syscall (openbsd-amd64-cgo), type RawSockaddrDatalink struct, Len uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrDatalink struct, Type uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrInet4 struct, Family uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrInet4 struct, Len uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrInet6 struct, Family uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrInet6 struct, Len uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrUnix struct pkg syscall (openbsd-amd64-cgo), type RawSockaddrUnix struct, Family uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrUnix struct, Len uint8 pkg syscall (openbsd-amd64-cgo), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (openbsd-amd64-cgo), type Rlimit struct pkg syscall (openbsd-amd64-cgo), type Rlimit struct, Cur uint64 pkg syscall (openbsd-amd64-cgo), type Rlimit struct, Max uint64 pkg syscall (openbsd-amd64-cgo), type RouteMessage struct pkg syscall (openbsd-amd64-cgo), type RouteMessage struct, Data []uint8 pkg syscall (openbsd-amd64-cgo), type RouteMessage struct, Header RtMsghdr pkg syscall (openbsd-amd64-cgo), type RoutingMessage interface, unexported methods pkg syscall (openbsd-amd64-cgo), type RtMetrics struct pkg syscall (openbsd-amd64-cgo), type RtMetrics struct, Expire uint32 pkg syscall (openbsd-amd64-cgo), type RtMetrics struct, Hopcount uint32 pkg syscall (openbsd-amd64-cgo), type RtMetrics struct, Locks uint32 pkg syscall (openbsd-amd64-cgo), type RtMetrics struct, Mtu uint32 pkg syscall (openbsd-amd64-cgo), type RtMetrics struct, Pksent uint64 pkg syscall (openbsd-amd64-cgo), type RtMetrics struct, Recvpipe uint32 pkg syscall (openbsd-amd64-cgo), type RtMetrics struct, Refcnt uint32 pkg syscall (openbsd-amd64-cgo), type RtMetrics struct, Rtt uint32 pkg syscall (openbsd-amd64-cgo), type RtMetrics struct, Rttvar uint32 pkg syscall (openbsd-amd64-cgo), type RtMetrics struct, Sendpipe uint32 pkg syscall (openbsd-amd64-cgo), type RtMetrics struct, Ssthresh uint32 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Addrs int32 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Errno int32 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Flags int32 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Fmask int32 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Hdrlen uint16 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Index uint16 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Inits uint32 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Mpls uint8 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Msglen uint16 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Pid int32 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Priority uint8 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Rmx RtMetrics pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Seq int32 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Tableid uint16 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Type uint8 pkg syscall (openbsd-amd64-cgo), type RtMsghdr struct, Version uint8 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Idrss int64 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Inblock int64 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Isrss int64 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Ixrss int64 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Majflt int64 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Maxrss int64 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Minflt int64 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Msgrcv int64 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Msgsnd int64 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Nivcsw int64 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Nsignals int64 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Nswap int64 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Nvcsw int64 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Oublock int64 pkg syscall (openbsd-amd64-cgo), type Rusage struct, Stime Timeval pkg syscall (openbsd-amd64-cgo), type Rusage struct, Utime Timeval pkg syscall (openbsd-amd64-cgo), type SockaddrDatalink struct pkg syscall (openbsd-amd64-cgo), type SockaddrDatalink struct, Alen uint8 pkg syscall (openbsd-amd64-cgo), type SockaddrDatalink struct, Data [24]int8 pkg syscall (openbsd-amd64-cgo), type SockaddrDatalink struct, Family uint8 pkg syscall (openbsd-amd64-cgo), type SockaddrDatalink struct, Index uint16 pkg syscall (openbsd-amd64-cgo), type SockaddrDatalink struct, Len uint8 pkg syscall (openbsd-amd64-cgo), type SockaddrDatalink struct, Nlen uint8 pkg syscall (openbsd-amd64-cgo), type SockaddrDatalink struct, Slen uint8 pkg syscall (openbsd-amd64-cgo), type SockaddrDatalink struct, Type uint8 pkg syscall (openbsd-amd64-cgo), type SocketControlMessage struct pkg syscall (openbsd-amd64-cgo), type SocketControlMessage struct, Data []uint8 pkg syscall (openbsd-amd64-cgo), type SocketControlMessage struct, Header Cmsghdr pkg syscall (openbsd-amd64-cgo), type Stat_t struct pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Atim Timespec pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Blksize uint32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Blocks int64 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Ctim Timespec pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Dev int32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Flags uint32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Gen uint32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Gid uint32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Ino uint32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Lspare0 int32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Lspare1 int32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Mode uint32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Mtim Timespec pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Nlink uint32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Qspare [2]int64 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Rdev int32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Size int64 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Uid uint32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, X__st_birthtim Timespec pkg syscall (openbsd-amd64-cgo), type Statfs_t struct pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_asyncreads uint64 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_asyncwrites uint64 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_bavail int64 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_bfree uint64 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_blocks uint64 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_bsize uint32 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_ctime uint32 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_favail int64 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_ffree uint64 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_files uint64 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_flags uint32 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_fsid Fsid pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_fstypename [16]int8 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_iosize uint32 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_mntfromname [90]int8 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_mntonname [90]int8 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_namemax uint32 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_owner uint32 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_spare [3]uint32 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_syncreads uint64 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_syncwrites uint64 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, Mount_info [160]uint8 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, Pad_cgo_1 [4]uint8 pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Chroot string pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Credential *Credential pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Noctty bool pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Ptrace bool pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Setctty bool pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Setpgid bool pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Setsid bool pkg syscall (openbsd-amd64-cgo), type Timespec struct, Nsec int64 pkg syscall (openbsd-amd64-cgo), type Timespec struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-amd64-cgo), type Timespec struct, Sec int32 pkg syscall (openbsd-amd64-cgo), type Timeval struct, Sec int64 pkg syscall (openbsd-amd64-cgo), type Timeval struct, Usec int64 pkg syscall (openbsd-amd64-cgo), type WaitStatus uint32 pkg syscall (openbsd-amd64-cgo), var Stderr int pkg syscall (openbsd-amd64-cgo), var Stdin int pkg syscall (openbsd-amd64-cgo), var Stdout int pkg syscall (windows-386), const BASE_PROTOCOL = 1 pkg syscall (windows-386), const BASE_PROTOCOL ideal-int pkg syscall (windows-386), const ERROR_HANDLE_EOF = 38 pkg syscall (windows-386), const ERROR_HANDLE_EOF Errno pkg syscall (windows-386), const FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 pkg syscall (windows-386), const FILE_SKIP_COMPLETION_PORT_ON_SUCCESS ideal-int pkg syscall (windows-386), const FILE_SKIP_SET_EVENT_ON_HANDLE = 2 pkg syscall (windows-386), const FILE_SKIP_SET_EVENT_ON_HANDLE ideal-int pkg syscall (windows-386), const LAYERED_PROTOCOL = 0 pkg syscall (windows-386), const LAYERED_PROTOCOL ideal-int pkg syscall (windows-386), const MAX_PROTOCOL_CHAIN = 7 pkg syscall (windows-386), const MAX_PROTOCOL_CHAIN ideal-int pkg syscall (windows-386), const NetSetupDomainName = 3 pkg syscall (windows-386), const NetSetupDomainName ideal-int pkg syscall (windows-386), const NetSetupUnjoined = 1 pkg syscall (windows-386), const NetSetupUnjoined ideal-int pkg syscall (windows-386), const NetSetupUnknownStatus = 0 pkg syscall (windows-386), const NetSetupUnknownStatus ideal-int pkg syscall (windows-386), const NetSetupWorkgroupName = 2 pkg syscall (windows-386), const NetSetupWorkgroupName ideal-int pkg syscall (windows-386), const PFL_HIDDEN = 4 pkg syscall (windows-386), const PFL_HIDDEN ideal-int pkg syscall (windows-386), const PFL_MATCHES_PROTOCOL_ZERO = 8 pkg syscall (windows-386), const PFL_MATCHES_PROTOCOL_ZERO ideal-int pkg syscall (windows-386), const PFL_MULTIPLE_PROTO_ENTRIES = 1 pkg syscall (windows-386), const PFL_MULTIPLE_PROTO_ENTRIES ideal-int pkg syscall (windows-386), const PFL_NETWORKDIRECT_PROVIDER = 16 pkg syscall (windows-386), const PFL_NETWORKDIRECT_PROVIDER ideal-int pkg syscall (windows-386), const PFL_RECOMMENDED_PROTO_ENTRY = 2 pkg syscall (windows-386), const PFL_RECOMMENDED_PROTO_ENTRY ideal-int pkg syscall (windows-386), const PROCESS_TERMINATE = 1 pkg syscall (windows-386), const PROCESS_TERMINATE ideal-int pkg syscall (windows-386), const WSAEACCES = 10013 pkg syscall (windows-386), const WSAEACCES Errno pkg syscall (windows-386), const WSAPROTOCOL_LEN = 255 pkg syscall (windows-386), const WSAPROTOCOL_LEN ideal-int pkg syscall (windows-386), const XP1_CONNECTIONLESS = 1 pkg syscall (windows-386), const XP1_CONNECTIONLESS ideal-int pkg syscall (windows-386), const XP1_CONNECT_DATA = 128 pkg syscall (windows-386), const XP1_CONNECT_DATA ideal-int pkg syscall (windows-386), const XP1_DISCONNECT_DATA = 256 pkg syscall (windows-386), const XP1_DISCONNECT_DATA ideal-int pkg syscall (windows-386), const XP1_EXPEDITED_DATA = 64 pkg syscall (windows-386), const XP1_EXPEDITED_DATA ideal-int pkg syscall (windows-386), const XP1_GRACEFUL_CLOSE = 32 pkg syscall (windows-386), const XP1_GRACEFUL_CLOSE ideal-int pkg syscall (windows-386), const XP1_GUARANTEED_DELIVERY = 2 pkg syscall (windows-386), const XP1_GUARANTEED_DELIVERY ideal-int pkg syscall (windows-386), const XP1_GUARANTEED_ORDER = 4 pkg syscall (windows-386), const XP1_GUARANTEED_ORDER ideal-int pkg syscall (windows-386), const XP1_IFS_HANDLES = 131072 pkg syscall (windows-386), const XP1_IFS_HANDLES ideal-int pkg syscall (windows-386), const XP1_MESSAGE_ORIENTED = 8 pkg syscall (windows-386), const XP1_MESSAGE_ORIENTED ideal-int pkg syscall (windows-386), const XP1_MULTIPOINT_CONTROL_PLANE = 2048 pkg syscall (windows-386), const XP1_MULTIPOINT_CONTROL_PLANE ideal-int pkg syscall (windows-386), const XP1_MULTIPOINT_DATA_PLANE = 4096 pkg syscall (windows-386), const XP1_MULTIPOINT_DATA_PLANE ideal-int pkg syscall (windows-386), const XP1_PARTIAL_MESSAGE = 262144 pkg syscall (windows-386), const XP1_PARTIAL_MESSAGE ideal-int pkg syscall (windows-386), const XP1_PSEUDO_STREAM = 16 pkg syscall (windows-386), const XP1_PSEUDO_STREAM ideal-int pkg syscall (windows-386), const XP1_QOS_SUPPORTED = 8192 pkg syscall (windows-386), const XP1_QOS_SUPPORTED ideal-int pkg syscall (windows-386), const XP1_SAN_SUPPORT_SDP = 524288 pkg syscall (windows-386), const XP1_SAN_SUPPORT_SDP ideal-int pkg syscall (windows-386), const XP1_SUPPORT_BROADCAST = 512 pkg syscall (windows-386), const XP1_SUPPORT_BROADCAST ideal-int pkg syscall (windows-386), const XP1_SUPPORT_MULTIPOINT = 1024 pkg syscall (windows-386), const XP1_SUPPORT_MULTIPOINT ideal-int pkg syscall (windows-386), const XP1_UNI_RECV = 65536 pkg syscall (windows-386), const XP1_UNI_RECV ideal-int pkg syscall (windows-386), const XP1_UNI_SEND = 32768 pkg syscall (windows-386), const XP1_UNI_SEND ideal-int pkg syscall (windows-386), func LoadSetFileCompletionNotificationModes() error pkg syscall (windows-386), func NetGetJoinInformation(*uint16, **uint16, *uint32) error pkg syscall (windows-386), func SetFileCompletionNotificationModes(Handle, uint8) error pkg syscall (windows-386), func WSAEnumProtocols(*int32, *WSAProtocolInfo, *uint32) (int32, error) pkg syscall (windows-386), type IpMaskString struct, String [16]uint8 pkg syscall (windows-386), type WSAProtocolChain struct pkg syscall (windows-386), type WSAProtocolChain struct, ChainEntries [7]uint32 pkg syscall (windows-386), type WSAProtocolChain struct, ChainLen int32 pkg syscall (windows-386), type WSAProtocolInfo struct pkg syscall (windows-386), type WSAProtocolInfo struct, AddressFamily int32 pkg syscall (windows-386), type WSAProtocolInfo struct, CatalogEntryId uint32 pkg syscall (windows-386), type WSAProtocolInfo struct, MaxSockAddr int32 pkg syscall (windows-386), type WSAProtocolInfo struct, MessageSize uint32 pkg syscall (windows-386), type WSAProtocolInfo struct, MinSockAddr int32 pkg syscall (windows-386), type WSAProtocolInfo struct, NetworkByteOrder int32 pkg syscall (windows-386), type WSAProtocolInfo struct, Protocol int32 pkg syscall (windows-386), type WSAProtocolInfo struct, ProtocolChain WSAProtocolChain pkg syscall (windows-386), type WSAProtocolInfo struct, ProtocolMaxOffset int32 pkg syscall (windows-386), type WSAProtocolInfo struct, ProtocolName [256]uint16 pkg syscall (windows-386), type WSAProtocolInfo struct, ProviderFlags uint32 pkg syscall (windows-386), type WSAProtocolInfo struct, ProviderId GUID pkg syscall (windows-386), type WSAProtocolInfo struct, ProviderReserved uint32 pkg syscall (windows-386), type WSAProtocolInfo struct, SecurityScheme int32 pkg syscall (windows-386), type WSAProtocolInfo struct, ServiceFlags1 uint32 pkg syscall (windows-386), type WSAProtocolInfo struct, ServiceFlags2 uint32 pkg syscall (windows-386), type WSAProtocolInfo struct, ServiceFlags3 uint32 pkg syscall (windows-386), type WSAProtocolInfo struct, ServiceFlags4 uint32 pkg syscall (windows-386), type WSAProtocolInfo struct, SocketType int32 pkg syscall (windows-386), type WSAProtocolInfo struct, Version int32 pkg syscall (windows-amd64), const BASE_PROTOCOL = 1 pkg syscall (windows-amd64), const BASE_PROTOCOL ideal-int pkg syscall (windows-amd64), const ERROR_HANDLE_EOF = 38 pkg syscall (windows-amd64), const ERROR_HANDLE_EOF Errno pkg syscall (windows-amd64), const FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 pkg syscall (windows-amd64), const FILE_SKIP_COMPLETION_PORT_ON_SUCCESS ideal-int pkg syscall (windows-amd64), const FILE_SKIP_SET_EVENT_ON_HANDLE = 2 pkg syscall (windows-amd64), const FILE_SKIP_SET_EVENT_ON_HANDLE ideal-int pkg syscall (windows-amd64), const LAYERED_PROTOCOL = 0 pkg syscall (windows-amd64), const LAYERED_PROTOCOL ideal-int pkg syscall (windows-amd64), const MAX_PROTOCOL_CHAIN = 7 pkg syscall (windows-amd64), const MAX_PROTOCOL_CHAIN ideal-int pkg syscall (windows-amd64), const NetSetupDomainName = 3 pkg syscall (windows-amd64), const NetSetupDomainName ideal-int pkg syscall (windows-amd64), const NetSetupUnjoined = 1 pkg syscall (windows-amd64), const NetSetupUnjoined ideal-int pkg syscall (windows-amd64), const NetSetupUnknownStatus = 0 pkg syscall (windows-amd64), const NetSetupUnknownStatus ideal-int pkg syscall (windows-amd64), const NetSetupWorkgroupName = 2 pkg syscall (windows-amd64), const NetSetupWorkgroupName ideal-int pkg syscall (windows-amd64), const PFL_HIDDEN = 4 pkg syscall (windows-amd64), const PFL_HIDDEN ideal-int pkg syscall (windows-amd64), const PFL_MATCHES_PROTOCOL_ZERO = 8 pkg syscall (windows-amd64), const PFL_MATCHES_PROTOCOL_ZERO ideal-int pkg syscall (windows-amd64), const PFL_MULTIPLE_PROTO_ENTRIES = 1 pkg syscall (windows-amd64), const PFL_MULTIPLE_PROTO_ENTRIES ideal-int pkg syscall (windows-amd64), const PFL_NETWORKDIRECT_PROVIDER = 16 pkg syscall (windows-amd64), const PFL_NETWORKDIRECT_PROVIDER ideal-int pkg syscall (windows-amd64), const PFL_RECOMMENDED_PROTO_ENTRY = 2 pkg syscall (windows-amd64), const PFL_RECOMMENDED_PROTO_ENTRY ideal-int pkg syscall (windows-amd64), const PROCESS_TERMINATE = 1 pkg syscall (windows-amd64), const PROCESS_TERMINATE ideal-int pkg syscall (windows-amd64), const WSAEACCES = 10013 pkg syscall (windows-amd64), const WSAEACCES Errno pkg syscall (windows-amd64), const WSAPROTOCOL_LEN = 255 pkg syscall (windows-amd64), const WSAPROTOCOL_LEN ideal-int pkg syscall (windows-amd64), const XP1_CONNECTIONLESS = 1 pkg syscall (windows-amd64), const XP1_CONNECTIONLESS ideal-int pkg syscall (windows-amd64), const XP1_CONNECT_DATA = 128 pkg syscall (windows-amd64), const XP1_CONNECT_DATA ideal-int pkg syscall (windows-amd64), const XP1_DISCONNECT_DATA = 256 pkg syscall (windows-amd64), const XP1_DISCONNECT_DATA ideal-int pkg syscall (windows-amd64), const XP1_EXPEDITED_DATA = 64 pkg syscall (windows-amd64), const XP1_EXPEDITED_DATA ideal-int pkg syscall (windows-amd64), const XP1_GRACEFUL_CLOSE = 32 pkg syscall (windows-amd64), const XP1_GRACEFUL_CLOSE ideal-int pkg syscall (windows-amd64), const XP1_GUARANTEED_DELIVERY = 2 pkg syscall (windows-amd64), const XP1_GUARANTEED_DELIVERY ideal-int pkg syscall (windows-amd64), const XP1_GUARANTEED_ORDER = 4 pkg syscall (windows-amd64), const XP1_GUARANTEED_ORDER ideal-int pkg syscall (windows-amd64), const XP1_IFS_HANDLES = 131072 pkg syscall (windows-amd64), const XP1_IFS_HANDLES ideal-int pkg syscall (windows-amd64), const XP1_MESSAGE_ORIENTED = 8 pkg syscall (windows-amd64), const XP1_MESSAGE_ORIENTED ideal-int pkg syscall (windows-amd64), const XP1_MULTIPOINT_CONTROL_PLANE = 2048 pkg syscall (windows-amd64), const XP1_MULTIPOINT_CONTROL_PLANE ideal-int pkg syscall (windows-amd64), const XP1_MULTIPOINT_DATA_PLANE = 4096 pkg syscall (windows-amd64), const XP1_MULTIPOINT_DATA_PLANE ideal-int pkg syscall (windows-amd64), const XP1_PARTIAL_MESSAGE = 262144 pkg syscall (windows-amd64), const XP1_PARTIAL_MESSAGE ideal-int pkg syscall (windows-amd64), const XP1_PSEUDO_STREAM = 16 pkg syscall (windows-amd64), const XP1_PSEUDO_STREAM ideal-int pkg syscall (windows-amd64), const XP1_QOS_SUPPORTED = 8192 pkg syscall (windows-amd64), const XP1_QOS_SUPPORTED ideal-int pkg syscall (windows-amd64), const XP1_SAN_SUPPORT_SDP = 524288 pkg syscall (windows-amd64), const XP1_SAN_SUPPORT_SDP ideal-int pkg syscall (windows-amd64), const XP1_SUPPORT_BROADCAST = 512 pkg syscall (windows-amd64), const XP1_SUPPORT_BROADCAST ideal-int pkg syscall (windows-amd64), const XP1_SUPPORT_MULTIPOINT = 1024 pkg syscall (windows-amd64), const XP1_SUPPORT_MULTIPOINT ideal-int pkg syscall (windows-amd64), const XP1_UNI_RECV = 65536 pkg syscall (windows-amd64), const XP1_UNI_RECV ideal-int pkg syscall (windows-amd64), const XP1_UNI_SEND = 32768 pkg syscall (windows-amd64), const XP1_UNI_SEND ideal-int pkg syscall (windows-amd64), func LoadSetFileCompletionNotificationModes() error pkg syscall (windows-amd64), func NetGetJoinInformation(*uint16, **uint16, *uint32) error pkg syscall (windows-amd64), func SetFileCompletionNotificationModes(Handle, uint8) error pkg syscall (windows-amd64), func WSAEnumProtocols(*int32, *WSAProtocolInfo, *uint32) (int32, error) pkg syscall (windows-amd64), type IpMaskString struct, String [16]uint8 pkg syscall (windows-amd64), type WSAProtocolChain struct pkg syscall (windows-amd64), type WSAProtocolChain struct, ChainEntries [7]uint32 pkg syscall (windows-amd64), type WSAProtocolChain struct, ChainLen int32 pkg syscall (windows-amd64), type WSAProtocolInfo struct pkg syscall (windows-amd64), type WSAProtocolInfo struct, AddressFamily int32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, CatalogEntryId uint32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, MaxSockAddr int32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, MessageSize uint32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, MinSockAddr int32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, NetworkByteOrder int32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, Protocol int32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, ProtocolChain WSAProtocolChain pkg syscall (windows-amd64), type WSAProtocolInfo struct, ProtocolMaxOffset int32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, ProtocolName [256]uint16 pkg syscall (windows-amd64), type WSAProtocolInfo struct, ProviderFlags uint32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, ProviderId GUID pkg syscall (windows-amd64), type WSAProtocolInfo struct, ProviderReserved uint32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, SecurityScheme int32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, ServiceFlags1 uint32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, ServiceFlags2 uint32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, ServiceFlags3 uint32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, ServiceFlags4 uint32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, SocketType int32 pkg syscall (windows-amd64), type WSAProtocolInfo struct, Version int32 pkg testing, func RegisterCover(Cover) pkg testing, type Cover struct pkg testing, type Cover struct, Blocks map[string][]CoverBlock pkg testing, type Cover struct, Counters map[string][]uint32 pkg testing, type Cover struct, CoveredPackages string pkg testing, type Cover struct, Mode string pkg testing, type CoverBlock struct pkg testing, type CoverBlock struct, Col0 uint16 pkg testing, type CoverBlock struct, Col1 uint16 pkg testing, type CoverBlock struct, Line0 uint32 pkg testing, type CoverBlock struct, Line1 uint32 pkg testing, type CoverBlock struct, Stmts uint16 pkg testing, type TB interface, Error(...interface{}) pkg testing, type TB interface, Errorf(string, ...interface{}) pkg testing, type TB interface, Fail() pkg testing, type TB interface, FailNow() pkg testing, type TB interface, Failed() bool pkg testing, type TB interface, Fatal(...interface{}) pkg testing, type TB interface, Fatalf(string, ...interface{}) pkg testing, type TB interface, Log(...interface{}) pkg testing, type TB interface, Logf(string, ...interface{}) pkg testing, type TB interface, Skip(...interface{}) pkg testing, type TB interface, SkipNow() pkg testing, type TB interface, Skipf(string, ...interface{}) pkg testing, type TB interface, Skipped() bool pkg testing, type TB interface, unexported methods pkg text/template, method (Template) Copy() *parse.Tree pkg text/template/parse, method (*Tree) Copy() *Tree pkg time, method (*Time) UnmarshalBinary([]uint8) error pkg time, method (*Time) UnmarshalText([]uint8) error pkg time, method (Time) MarshalBinary() ([]uint8, error) pkg time, method (Time) MarshalText() ([]uint8, error) pkg unicode, func In(int32, ...*RangeTable) bool go/api/go1.3.txt0100644000000000000000000035205112412656734013643 0ustar00rootroot00000000000000pkg archive/tar, const TypeGNUSparse = 83 pkg archive/tar, const TypeGNUSparse ideal-char pkg archive/tar, type Header struct, Xattrs map[string]string pkg compress/gzip, method (*Reader) Reset(io.Reader) error pkg crypto/tls, const CurveP256 = 23 pkg crypto/tls, const CurveP256 CurveID pkg crypto/tls, const CurveP384 = 24 pkg crypto/tls, const CurveP384 CurveID pkg crypto/tls, const CurveP521 = 25 pkg crypto/tls, const CurveP521 CurveID pkg crypto/tls, func DialWithDialer(*net.Dialer, string, string, *Config) (*Conn, error) pkg crypto/tls, func NewLRUClientSessionCache(int) ClientSessionCache pkg crypto/tls, type ClientSessionCache interface { Get, Put } pkg crypto/tls, type ClientSessionCache interface, Get(string) (*ClientSessionState, bool) pkg crypto/tls, type ClientSessionCache interface, Put(string, *ClientSessionState) pkg crypto/tls, type ClientSessionState struct pkg crypto/tls, type Config struct, ClientSessionCache ClientSessionCache pkg crypto/tls, type Config struct, CurvePreferences []CurveID pkg crypto/tls, type ConnectionState struct, Version uint16 pkg crypto/tls, type CurveID uint16 pkg crypto/x509, func CreateCertificateRequest(io.Reader, *CertificateRequest, interface{}) ([]uint8, error) pkg crypto/x509, func ParseCertificateRequest([]uint8) (*CertificateRequest, error) pkg crypto/x509, type CertificateRequest struct pkg crypto/x509, type CertificateRequest struct, Attributes []pkix.AttributeTypeAndValueSET pkg crypto/x509, type CertificateRequest struct, DNSNames []string pkg crypto/x509, type CertificateRequest struct, EmailAddresses []string pkg crypto/x509, type CertificateRequest struct, Extensions []pkix.Extension pkg crypto/x509, type CertificateRequest struct, ExtraExtensions []pkix.Extension pkg crypto/x509, type CertificateRequest struct, IPAddresses []net.IP pkg crypto/x509, type CertificateRequest struct, PublicKey interface{} pkg crypto/x509, type CertificateRequest struct, PublicKeyAlgorithm PublicKeyAlgorithm pkg crypto/x509, type CertificateRequest struct, Raw []uint8 pkg crypto/x509, type CertificateRequest struct, RawSubject []uint8 pkg crypto/x509, type CertificateRequest struct, RawSubjectPublicKeyInfo []uint8 pkg crypto/x509, type CertificateRequest struct, RawTBSCertificateRequest []uint8 pkg crypto/x509, type CertificateRequest struct, Signature []uint8 pkg crypto/x509, type CertificateRequest struct, SignatureAlgorithm SignatureAlgorithm pkg crypto/x509, type CertificateRequest struct, Subject pkix.Name pkg crypto/x509, type CertificateRequest struct, Version int pkg crypto/x509/pkix, type AttributeTypeAndValueSET struct pkg crypto/x509/pkix, type AttributeTypeAndValueSET struct, Type asn1.ObjectIdentifier pkg crypto/x509/pkix, type AttributeTypeAndValueSET struct, Value [][]AttributeTypeAndValue pkg debug/dwarf, const TagCondition = 63 pkg debug/dwarf, const TagCondition Tag pkg debug/dwarf, const TagRvalueReferenceType = 66 pkg debug/dwarf, const TagRvalueReferenceType Tag pkg debug/dwarf, const TagSharedType = 64 pkg debug/dwarf, const TagSharedType Tag pkg debug/dwarf, const TagTemplateAlias = 67 pkg debug/dwarf, const TagTemplateAlias Tag pkg debug/dwarf, const TagTypeUnit = 65 pkg debug/dwarf, const TagTypeUnit Tag pkg debug/dwarf, method (*Data) AddTypes(string, []uint8) error pkg debug/macho, const CpuArm = 12 pkg debug/macho, const CpuArm Cpu pkg debug/macho, const CpuPpc = 18 pkg debug/macho, const CpuPpc Cpu pkg debug/macho, const CpuPpc64 = 16777234 pkg debug/macho, const CpuPpc64 Cpu pkg debug/macho, const MagicFat = 3405691582 pkg debug/macho, const MagicFat uint32 pkg debug/macho, const TypeBundle = 8 pkg debug/macho, const TypeBundle Type pkg debug/macho, const TypeDylib = 6 pkg debug/macho, const TypeDylib Type pkg debug/macho, func NewFatFile(io.ReaderAt) (*FatFile, error) pkg debug/macho, func OpenFat(string) (*FatFile, error) pkg debug/macho, method (*FatFile) Close() error pkg debug/macho, method (FatArch) Close() error pkg debug/macho, method (FatArch) DWARF() (*dwarf.Data, error) pkg debug/macho, method (FatArch) ImportedLibraries() ([]string, error) pkg debug/macho, method (FatArch) ImportedSymbols() ([]string, error) pkg debug/macho, method (FatArch) Section(string) *Section pkg debug/macho, method (FatArch) Segment(string) *Segment pkg debug/macho, type FatArch struct pkg debug/macho, type FatArch struct, embedded *File pkg debug/macho, type FatArch struct, embedded FatArchHeader pkg debug/macho, type FatArchHeader struct pkg debug/macho, type FatArchHeader struct, Align uint32 pkg debug/macho, type FatArchHeader struct, Cpu Cpu pkg debug/macho, type FatArchHeader struct, Offset uint32 pkg debug/macho, type FatArchHeader struct, Size uint32 pkg debug/macho, type FatArchHeader struct, SubCpu uint32 pkg debug/macho, type FatFile struct pkg debug/macho, type FatFile struct, Arches []FatArch pkg debug/macho, type FatFile struct, Magic uint32 pkg debug/macho, var ErrNotFat *FormatError pkg debug/pe, type DataDirectory struct pkg debug/pe, type DataDirectory struct, Size uint32 pkg debug/pe, type DataDirectory struct, VirtualAddress uint32 pkg debug/pe, type File struct, OptionalHeader interface{} pkg debug/pe, type OptionalHeader32 struct pkg debug/pe, type OptionalHeader32 struct, AddressOfEntryPoint uint32 pkg debug/pe, type OptionalHeader32 struct, BaseOfCode uint32 pkg debug/pe, type OptionalHeader32 struct, BaseOfData uint32 pkg debug/pe, type OptionalHeader32 struct, CheckSum uint32 pkg debug/pe, type OptionalHeader32 struct, DataDirectory [16]DataDirectory pkg debug/pe, type OptionalHeader32 struct, DllCharacteristics uint16 pkg debug/pe, type OptionalHeader32 struct, FileAlignment uint32 pkg debug/pe, type OptionalHeader32 struct, ImageBase uint32 pkg debug/pe, type OptionalHeader32 struct, LoaderFlags uint32 pkg debug/pe, type OptionalHeader32 struct, Magic uint16 pkg debug/pe, type OptionalHeader32 struct, MajorImageVersion uint16 pkg debug/pe, type OptionalHeader32 struct, MajorLinkerVersion uint8 pkg debug/pe, type OptionalHeader32 struct, MajorOperatingSystemVersion uint16 pkg debug/pe, type OptionalHeader32 struct, MajorSubsystemVersion uint16 pkg debug/pe, type OptionalHeader32 struct, MinorImageVersion uint16 pkg debug/pe, type OptionalHeader32 struct, MinorLinkerVersion uint8 pkg debug/pe, type OptionalHeader32 struct, MinorOperatingSystemVersion uint16 pkg debug/pe, type OptionalHeader32 struct, MinorSubsystemVersion uint16 pkg debug/pe, type OptionalHeader32 struct, NumberOfRvaAndSizes uint32 pkg debug/pe, type OptionalHeader32 struct, SectionAlignment uint32 pkg debug/pe, type OptionalHeader32 struct, SizeOfCode uint32 pkg debug/pe, type OptionalHeader32 struct, SizeOfHeaders uint32 pkg debug/pe, type OptionalHeader32 struct, SizeOfHeapCommit uint32 pkg debug/pe, type OptionalHeader32 struct, SizeOfHeapReserve uint32 pkg debug/pe, type OptionalHeader32 struct, SizeOfImage uint32 pkg debug/pe, type OptionalHeader32 struct, SizeOfInitializedData uint32 pkg debug/pe, type OptionalHeader32 struct, SizeOfStackCommit uint32 pkg debug/pe, type OptionalHeader32 struct, SizeOfStackReserve uint32 pkg debug/pe, type OptionalHeader32 struct, SizeOfUninitializedData uint32 pkg debug/pe, type OptionalHeader32 struct, Subsystem uint16 pkg debug/pe, type OptionalHeader32 struct, Win32VersionValue uint32 pkg debug/pe, type OptionalHeader64 struct pkg debug/pe, type OptionalHeader64 struct, AddressOfEntryPoint uint32 pkg debug/pe, type OptionalHeader64 struct, BaseOfCode uint32 pkg debug/pe, type OptionalHeader64 struct, CheckSum uint32 pkg debug/pe, type OptionalHeader64 struct, DataDirectory [16]DataDirectory pkg debug/pe, type OptionalHeader64 struct, DllCharacteristics uint16 pkg debug/pe, type OptionalHeader64 struct, FileAlignment uint32 pkg debug/pe, type OptionalHeader64 struct, ImageBase uint64 pkg debug/pe, type OptionalHeader64 struct, LoaderFlags uint32 pkg debug/pe, type OptionalHeader64 struct, Magic uint16 pkg debug/pe, type OptionalHeader64 struct, MajorImageVersion uint16 pkg debug/pe, type OptionalHeader64 struct, MajorLinkerVersion uint8 pkg debug/pe, type OptionalHeader64 struct, MajorOperatingSystemVersion uint16 pkg debug/pe, type OptionalHeader64 struct, MajorSubsystemVersion uint16 pkg debug/pe, type OptionalHeader64 struct, MinorImageVersion uint16 pkg debug/pe, type OptionalHeader64 struct, MinorLinkerVersion uint8 pkg debug/pe, type OptionalHeader64 struct, MinorOperatingSystemVersion uint16 pkg debug/pe, type OptionalHeader64 struct, MinorSubsystemVersion uint16 pkg debug/pe, type OptionalHeader64 struct, NumberOfRvaAndSizes uint32 pkg debug/pe, type OptionalHeader64 struct, SectionAlignment uint32 pkg debug/pe, type OptionalHeader64 struct, SizeOfCode uint32 pkg debug/pe, type OptionalHeader64 struct, SizeOfHeaders uint32 pkg debug/pe, type OptionalHeader64 struct, SizeOfHeapCommit uint64 pkg debug/pe, type OptionalHeader64 struct, SizeOfHeapReserve uint64 pkg debug/pe, type OptionalHeader64 struct, SizeOfImage uint32 pkg debug/pe, type OptionalHeader64 struct, SizeOfInitializedData uint32 pkg debug/pe, type OptionalHeader64 struct, SizeOfStackCommit uint64 pkg debug/pe, type OptionalHeader64 struct, SizeOfStackReserve uint64 pkg debug/pe, type OptionalHeader64 struct, SizeOfUninitializedData uint32 pkg debug/pe, type OptionalHeader64 struct, Subsystem uint16 pkg debug/pe, type OptionalHeader64 struct, Win32VersionValue uint32 pkg debug/plan9obj, const Magic386 = 491 pkg debug/plan9obj, const Magic386 ideal-int pkg debug/plan9obj, const Magic64 = 32768 pkg debug/plan9obj, const Magic64 ideal-int pkg debug/plan9obj, const MagicAMD64 = 35479 pkg debug/plan9obj, const MagicAMD64 ideal-int pkg debug/plan9obj, const MagicARM = 1607 pkg debug/plan9obj, const MagicARM ideal-int pkg debug/plan9obj, func NewFile(io.ReaderAt) (*File, error) pkg debug/plan9obj, func Open(string) (*File, error) pkg debug/plan9obj, method (*File) Close() error pkg debug/plan9obj, method (*File) Section(string) *Section pkg debug/plan9obj, method (*File) Symbols() ([]Sym, error) pkg debug/plan9obj, method (*Section) Data() ([]uint8, error) pkg debug/plan9obj, method (*Section) Open() io.ReadSeeker pkg debug/plan9obj, method (Section) ReadAt([]uint8, int64) (int, error) pkg debug/plan9obj, type File struct pkg debug/plan9obj, type File struct, Sections []*Section pkg debug/plan9obj, type File struct, embedded FileHeader pkg debug/plan9obj, type FileHeader struct pkg debug/plan9obj, type FileHeader struct, Bss uint32 pkg debug/plan9obj, type FileHeader struct, Entry uint64 pkg debug/plan9obj, type FileHeader struct, Magic uint32 pkg debug/plan9obj, type FileHeader struct, PtrSize int pkg debug/plan9obj, type Section struct pkg debug/plan9obj, type Section struct, embedded SectionHeader pkg debug/plan9obj, type Section struct, embedded io.ReaderAt pkg debug/plan9obj, type SectionHeader struct pkg debug/plan9obj, type SectionHeader struct, Name string pkg debug/plan9obj, type SectionHeader struct, Offset uint32 pkg debug/plan9obj, type SectionHeader struct, Size uint32 pkg debug/plan9obj, type Sym struct pkg debug/plan9obj, type Sym struct, Name string pkg debug/plan9obj, type Sym struct, Type int32 pkg debug/plan9obj, type Sym struct, Value uint64 pkg encoding/asn1, method (ObjectIdentifier) String() string pkg go/build, type Package struct, MFiles []string pkg math/big, method (*Int) MarshalText() ([]uint8, error) pkg math/big, method (*Int) UnmarshalText([]uint8) error pkg math/big, method (*Rat) MarshalText() ([]uint8, error) pkg math/big, method (*Rat) UnmarshalText([]uint8) error pkg net, type Dialer struct, KeepAlive time.Duration pkg net/http, const StateActive = 1 pkg net/http, const StateActive ConnState pkg net/http, const StateClosed = 4 pkg net/http, const StateClosed ConnState pkg net/http, const StateHijacked = 3 pkg net/http, const StateHijacked ConnState pkg net/http, const StateIdle = 2 pkg net/http, const StateIdle ConnState pkg net/http, const StateNew = 0 pkg net/http, const StateNew ConnState pkg net/http, method (*Server) SetKeepAlivesEnabled(bool) pkg net/http, method (ConnState) String() string pkg net/http, type Client struct, Timeout time.Duration pkg net/http, type ConnState int pkg net/http, type Response struct, TLS *tls.ConnectionState pkg net/http, type Server struct, ConnState func(net.Conn, ConnState) pkg net/http, type Server struct, ErrorLog *log.Logger pkg net/http, type Transport struct, TLSHandshakeTimeout time.Duration pkg regexp/syntax, method (*Inst) MatchRunePos(int32) int pkg regexp/syntax, method (InstOp) String() string pkg runtime/debug, func SetPanicOnFault(bool) bool pkg runtime/debug, func WriteHeapDump(uintptr) pkg sync, method (*Pool) Get() interface{} pkg sync, method (*Pool) Put(interface{}) pkg sync, type Pool struct pkg sync, type Pool struct, New func() interface{} pkg syscall (darwin-386), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (darwin-386), func Mlock([]uint8) error pkg syscall (darwin-386), func Mlockall(int) error pkg syscall (darwin-386), func Mprotect([]uint8, int) error pkg syscall (darwin-386), func Munlock([]uint8) error pkg syscall (darwin-386), func Munlockall() error pkg syscall (darwin-386), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (darwin-386-cgo), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (darwin-386-cgo), func Mlock([]uint8) error pkg syscall (darwin-386-cgo), func Mlockall(int) error pkg syscall (darwin-386-cgo), func Mprotect([]uint8, int) error pkg syscall (darwin-386-cgo), func Munlock([]uint8) error pkg syscall (darwin-386-cgo), func Munlockall() error pkg syscall (darwin-386-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (darwin-amd64), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (darwin-amd64), func Mlock([]uint8) error pkg syscall (darwin-amd64), func Mlockall(int) error pkg syscall (darwin-amd64), func Mprotect([]uint8, int) error pkg syscall (darwin-amd64), func Munlock([]uint8) error pkg syscall (darwin-amd64), func Munlockall() error pkg syscall (darwin-amd64), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (darwin-amd64-cgo), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (darwin-amd64-cgo), func Mlock([]uint8) error pkg syscall (darwin-amd64-cgo), func Mlockall(int) error pkg syscall (darwin-amd64-cgo), func Mprotect([]uint8, int) error pkg syscall (darwin-amd64-cgo), func Munlock([]uint8) error pkg syscall (darwin-amd64-cgo), func Munlockall() error pkg syscall (darwin-amd64-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (freebsd-386), const AF_INET6_SDP = 42 pkg syscall (freebsd-386), const AF_INET6_SDP ideal-int pkg syscall (freebsd-386), const AF_INET_SDP = 40 pkg syscall (freebsd-386), const AF_INET_SDP ideal-int pkg syscall (freebsd-386), const AF_MAX = 42 pkg syscall (freebsd-386), const DLT_MATCHING_MAX = 246 pkg syscall (freebsd-386), const DLT_MPEG_2_TS = 243 pkg syscall (freebsd-386), const DLT_MPEG_2_TS ideal-int pkg syscall (freebsd-386), const DLT_NFC_LLCP = 245 pkg syscall (freebsd-386), const DLT_NFC_LLCP ideal-int pkg syscall (freebsd-386), const DLT_NG40 = 244 pkg syscall (freebsd-386), const DLT_NG40 ideal-int pkg syscall (freebsd-386), const ELAST = 96 pkg syscall (freebsd-386), const ENOTRECOVERABLE = 95 pkg syscall (freebsd-386), const ENOTRECOVERABLE Errno pkg syscall (freebsd-386), const EOWNERDEAD = 96 pkg syscall (freebsd-386), const EOWNERDEAD Errno pkg syscall (freebsd-386), const EV_DROP = 4096 pkg syscall (freebsd-386), const EV_DROP ideal-int pkg syscall (freebsd-386), const IPPROTO_MPLS = 137 pkg syscall (freebsd-386), const IPPROTO_MPLS ideal-int pkg syscall (freebsd-386), const MAP_ALIGNED_SUPER = 16777216 pkg syscall (freebsd-386), const MAP_ALIGNED_SUPER ideal-int pkg syscall (freebsd-386), const MAP_ALIGNMENT_MASK = -16777216 pkg syscall (freebsd-386), const MAP_ALIGNMENT_MASK ideal-int pkg syscall (freebsd-386), const MAP_ALIGNMENT_SHIFT = 24 pkg syscall (freebsd-386), const MAP_ALIGNMENT_SHIFT ideal-int pkg syscall (freebsd-386), const MSG_CMSG_CLOEXEC = 262144 pkg syscall (freebsd-386), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (freebsd-386), const NAME_MAX = 255 pkg syscall (freebsd-386), const NAME_MAX ideal-int pkg syscall (freebsd-386), const O_CLOEXEC = 1048576 pkg syscall (freebsd-386), const RTF_GWFLAG_COMPAT = 2147483648 pkg syscall (freebsd-386), const RTF_GWFLAG_COMPAT ideal-int pkg syscall (freebsd-386), const RT_NORTREF = 2 pkg syscall (freebsd-386), const RT_NORTREF ideal-int pkg syscall (freebsd-386), const SIGLIBRT = 33 pkg syscall (freebsd-386), const SIGLIBRT Signal pkg syscall (freebsd-386), const SOCK_CLOEXEC = 268435456 pkg syscall (freebsd-386), const SOCK_CLOEXEC ideal-int pkg syscall (freebsd-386), const SOCK_NONBLOCK = 536870912 pkg syscall (freebsd-386), const SOCK_NONBLOCK ideal-int pkg syscall (freebsd-386), const SO_VENDOR = 2147483648 pkg syscall (freebsd-386), const SO_VENDOR ideal-int pkg syscall (freebsd-386), const SYS_ACCEPT4 = 541 pkg syscall (freebsd-386), const SYS_ACCEPT4 ideal-int pkg syscall (freebsd-386), const SYS_BINDAT = 538 pkg syscall (freebsd-386), const SYS_BINDAT ideal-int pkg syscall (freebsd-386), const SYS_CHFLAGSAT = 540 pkg syscall (freebsd-386), const SYS_CHFLAGSAT ideal-int pkg syscall (freebsd-386), const SYS_CONNECTAT = 539 pkg syscall (freebsd-386), const SYS_CONNECTAT ideal-int pkg syscall (freebsd-386), const SYS_PIPE2 = 542 pkg syscall (freebsd-386), const SYS_PIPE2 ideal-int pkg syscall (freebsd-386), const SYS_PROCCTL = 544 pkg syscall (freebsd-386), const SYS_PROCCTL ideal-int pkg syscall (freebsd-386), const TCP_VENDOR = 2147483648 pkg syscall (freebsd-386), const TCP_VENDOR ideal-int pkg syscall (freebsd-386), const WEXITED = 16 pkg syscall (freebsd-386), const WEXITED ideal-int pkg syscall (freebsd-386), const WTRAPPED = 32 pkg syscall (freebsd-386), const WTRAPPED ideal-int pkg syscall (freebsd-386), func Accept4(int, int) (int, Sockaddr, error) pkg syscall (freebsd-386), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (freebsd-386), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (freebsd-386), type Termios struct pkg syscall (freebsd-386), type Termios struct, Cc [20]uint8 pkg syscall (freebsd-386), type Termios struct, Cflag uint32 pkg syscall (freebsd-386), type Termios struct, Iflag uint32 pkg syscall (freebsd-386), type Termios struct, Ispeed uint32 pkg syscall (freebsd-386), type Termios struct, Lflag uint32 pkg syscall (freebsd-386), type Termios struct, Oflag uint32 pkg syscall (freebsd-386), type Termios struct, Ospeed uint32 pkg syscall (freebsd-386-cgo), const AF_INET6_SDP = 42 pkg syscall (freebsd-386-cgo), const AF_INET6_SDP ideal-int pkg syscall (freebsd-386-cgo), const AF_INET_SDP = 40 pkg syscall (freebsd-386-cgo), const AF_INET_SDP ideal-int pkg syscall (freebsd-386-cgo), const AF_MAX = 42 pkg syscall (freebsd-386-cgo), const DLT_MATCHING_MAX = 246 pkg syscall (freebsd-386-cgo), const DLT_MPEG_2_TS = 243 pkg syscall (freebsd-386-cgo), const DLT_MPEG_2_TS ideal-int pkg syscall (freebsd-386-cgo), const DLT_NFC_LLCP = 245 pkg syscall (freebsd-386-cgo), const DLT_NFC_LLCP ideal-int pkg syscall (freebsd-386-cgo), const DLT_NG40 = 244 pkg syscall (freebsd-386-cgo), const DLT_NG40 ideal-int pkg syscall (freebsd-386-cgo), const ELAST = 96 pkg syscall (freebsd-386-cgo), const ENOTRECOVERABLE = 95 pkg syscall (freebsd-386-cgo), const ENOTRECOVERABLE Errno pkg syscall (freebsd-386-cgo), const EOWNERDEAD = 96 pkg syscall (freebsd-386-cgo), const EOWNERDEAD Errno pkg syscall (freebsd-386-cgo), const EV_DROP = 4096 pkg syscall (freebsd-386-cgo), const EV_DROP ideal-int pkg syscall (freebsd-386-cgo), const IPPROTO_MPLS = 137 pkg syscall (freebsd-386-cgo), const IPPROTO_MPLS ideal-int pkg syscall (freebsd-386-cgo), const MAP_ALIGNED_SUPER = 16777216 pkg syscall (freebsd-386-cgo), const MAP_ALIGNED_SUPER ideal-int pkg syscall (freebsd-386-cgo), const MAP_ALIGNMENT_MASK = -16777216 pkg syscall (freebsd-386-cgo), const MAP_ALIGNMENT_MASK ideal-int pkg syscall (freebsd-386-cgo), const MAP_ALIGNMENT_SHIFT = 24 pkg syscall (freebsd-386-cgo), const MAP_ALIGNMENT_SHIFT ideal-int pkg syscall (freebsd-386-cgo), const MSG_CMSG_CLOEXEC = 262144 pkg syscall (freebsd-386-cgo), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (freebsd-386-cgo), const NAME_MAX = 255 pkg syscall (freebsd-386-cgo), const NAME_MAX ideal-int pkg syscall (freebsd-386-cgo), const O_CLOEXEC = 1048576 pkg syscall (freebsd-386-cgo), const RTF_GWFLAG_COMPAT = 2147483648 pkg syscall (freebsd-386-cgo), const RTF_GWFLAG_COMPAT ideal-int pkg syscall (freebsd-386-cgo), const RT_NORTREF = 2 pkg syscall (freebsd-386-cgo), const RT_NORTREF ideal-int pkg syscall (freebsd-386-cgo), const SIGLIBRT = 33 pkg syscall (freebsd-386-cgo), const SIGLIBRT Signal pkg syscall (freebsd-386-cgo), const SOCK_CLOEXEC = 268435456 pkg syscall (freebsd-386-cgo), const SOCK_CLOEXEC ideal-int pkg syscall (freebsd-386-cgo), const SOCK_NONBLOCK = 536870912 pkg syscall (freebsd-386-cgo), const SOCK_NONBLOCK ideal-int pkg syscall (freebsd-386-cgo), const SO_VENDOR = 2147483648 pkg syscall (freebsd-386-cgo), const SO_VENDOR ideal-int pkg syscall (freebsd-386-cgo), const SYS_ACCEPT4 = 541 pkg syscall (freebsd-386-cgo), const SYS_ACCEPT4 ideal-int pkg syscall (freebsd-386-cgo), const SYS_BINDAT = 538 pkg syscall (freebsd-386-cgo), const SYS_BINDAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_CHFLAGSAT = 540 pkg syscall (freebsd-386-cgo), const SYS_CHFLAGSAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_CONNECTAT = 539 pkg syscall (freebsd-386-cgo), const SYS_CONNECTAT ideal-int pkg syscall (freebsd-386-cgo), const SYS_PIPE2 = 542 pkg syscall (freebsd-386-cgo), const SYS_PIPE2 ideal-int pkg syscall (freebsd-386-cgo), const SYS_PROCCTL = 544 pkg syscall (freebsd-386-cgo), const SYS_PROCCTL ideal-int pkg syscall (freebsd-386-cgo), const TCP_VENDOR = 2147483648 pkg syscall (freebsd-386-cgo), const TCP_VENDOR ideal-int pkg syscall (freebsd-386-cgo), const WEXITED = 16 pkg syscall (freebsd-386-cgo), const WEXITED ideal-int pkg syscall (freebsd-386-cgo), const WTRAPPED = 32 pkg syscall (freebsd-386-cgo), const WTRAPPED ideal-int pkg syscall (freebsd-386-cgo), func Accept4(int, int) (int, Sockaddr, error) pkg syscall (freebsd-386-cgo), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (freebsd-386-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (freebsd-386-cgo), type Termios struct pkg syscall (freebsd-386-cgo), type Termios struct, Cc [20]uint8 pkg syscall (freebsd-386-cgo), type Termios struct, Cflag uint32 pkg syscall (freebsd-386-cgo), type Termios struct, Iflag uint32 pkg syscall (freebsd-386-cgo), type Termios struct, Ispeed uint32 pkg syscall (freebsd-386-cgo), type Termios struct, Lflag uint32 pkg syscall (freebsd-386-cgo), type Termios struct, Oflag uint32 pkg syscall (freebsd-386-cgo), type Termios struct, Ospeed uint32 pkg syscall (freebsd-amd64), const AF_INET6_SDP = 42 pkg syscall (freebsd-amd64), const AF_INET6_SDP ideal-int pkg syscall (freebsd-amd64), const AF_INET_SDP = 40 pkg syscall (freebsd-amd64), const AF_INET_SDP ideal-int pkg syscall (freebsd-amd64), const AF_MAX = 42 pkg syscall (freebsd-amd64), const DLT_MATCHING_MAX = 246 pkg syscall (freebsd-amd64), const DLT_MPEG_2_TS = 243 pkg syscall (freebsd-amd64), const DLT_MPEG_2_TS ideal-int pkg syscall (freebsd-amd64), const DLT_NFC_LLCP = 245 pkg syscall (freebsd-amd64), const DLT_NFC_LLCP ideal-int pkg syscall (freebsd-amd64), const DLT_NG40 = 244 pkg syscall (freebsd-amd64), const DLT_NG40 ideal-int pkg syscall (freebsd-amd64), const ELAST = 96 pkg syscall (freebsd-amd64), const ENOTRECOVERABLE = 95 pkg syscall (freebsd-amd64), const ENOTRECOVERABLE Errno pkg syscall (freebsd-amd64), const EOWNERDEAD = 96 pkg syscall (freebsd-amd64), const EOWNERDEAD Errno pkg syscall (freebsd-amd64), const EV_DROP = 4096 pkg syscall (freebsd-amd64), const EV_DROP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_MPLS = 137 pkg syscall (freebsd-amd64), const IPPROTO_MPLS ideal-int pkg syscall (freebsd-amd64), const MAP_32BIT = 524288 pkg syscall (freebsd-amd64), const MAP_32BIT ideal-int pkg syscall (freebsd-amd64), const MAP_ALIGNED_SUPER = 16777216 pkg syscall (freebsd-amd64), const MAP_ALIGNED_SUPER ideal-int pkg syscall (freebsd-amd64), const MAP_ALIGNMENT_MASK = -16777216 pkg syscall (freebsd-amd64), const MAP_ALIGNMENT_MASK ideal-int pkg syscall (freebsd-amd64), const MAP_ALIGNMENT_SHIFT = 24 pkg syscall (freebsd-amd64), const MAP_ALIGNMENT_SHIFT ideal-int pkg syscall (freebsd-amd64), const MSG_CMSG_CLOEXEC = 262144 pkg syscall (freebsd-amd64), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (freebsd-amd64), const NAME_MAX = 255 pkg syscall (freebsd-amd64), const NAME_MAX ideal-int pkg syscall (freebsd-amd64), const O_CLOEXEC = 1048576 pkg syscall (freebsd-amd64), const RTF_GWFLAG_COMPAT = 2147483648 pkg syscall (freebsd-amd64), const RTF_GWFLAG_COMPAT ideal-int pkg syscall (freebsd-amd64), const RT_NORTREF = 2 pkg syscall (freebsd-amd64), const RT_NORTREF ideal-int pkg syscall (freebsd-amd64), const SIGLIBRT = 33 pkg syscall (freebsd-amd64), const SIGLIBRT Signal pkg syscall (freebsd-amd64), const SOCK_CLOEXEC = 268435456 pkg syscall (freebsd-amd64), const SOCK_CLOEXEC ideal-int pkg syscall (freebsd-amd64), const SOCK_NONBLOCK = 536870912 pkg syscall (freebsd-amd64), const SOCK_NONBLOCK ideal-int pkg syscall (freebsd-amd64), const SO_VENDOR = 2147483648 pkg syscall (freebsd-amd64), const SO_VENDOR ideal-int pkg syscall (freebsd-amd64), const SYS_ACCEPT4 = 541 pkg syscall (freebsd-amd64), const SYS_ACCEPT4 ideal-int pkg syscall (freebsd-amd64), const SYS_BINDAT = 538 pkg syscall (freebsd-amd64), const SYS_BINDAT ideal-int pkg syscall (freebsd-amd64), const SYS_CHFLAGSAT = 540 pkg syscall (freebsd-amd64), const SYS_CHFLAGSAT ideal-int pkg syscall (freebsd-amd64), const SYS_CONNECTAT = 539 pkg syscall (freebsd-amd64), const SYS_CONNECTAT ideal-int pkg syscall (freebsd-amd64), const SYS_PIPE2 = 542 pkg syscall (freebsd-amd64), const SYS_PIPE2 ideal-int pkg syscall (freebsd-amd64), const SYS_PROCCTL = 544 pkg syscall (freebsd-amd64), const SYS_PROCCTL ideal-int pkg syscall (freebsd-amd64), const TCP_VENDOR = 2147483648 pkg syscall (freebsd-amd64), const TCP_VENDOR ideal-int pkg syscall (freebsd-amd64), const WEXITED = 16 pkg syscall (freebsd-amd64), const WEXITED ideal-int pkg syscall (freebsd-amd64), const WTRAPPED = 32 pkg syscall (freebsd-amd64), const WTRAPPED ideal-int pkg syscall (freebsd-amd64), func Accept4(int, int) (int, Sockaddr, error) pkg syscall (freebsd-amd64), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (freebsd-amd64), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (freebsd-amd64), type Termios struct pkg syscall (freebsd-amd64), type Termios struct, Cc [20]uint8 pkg syscall (freebsd-amd64), type Termios struct, Cflag uint32 pkg syscall (freebsd-amd64), type Termios struct, Iflag uint32 pkg syscall (freebsd-amd64), type Termios struct, Ispeed uint32 pkg syscall (freebsd-amd64), type Termios struct, Lflag uint32 pkg syscall (freebsd-amd64), type Termios struct, Oflag uint32 pkg syscall (freebsd-amd64), type Termios struct, Ospeed uint32 pkg syscall (freebsd-amd64-cgo), const AF_INET6_SDP = 42 pkg syscall (freebsd-amd64-cgo), const AF_INET6_SDP ideal-int pkg syscall (freebsd-amd64-cgo), const AF_INET_SDP = 40 pkg syscall (freebsd-amd64-cgo), const AF_INET_SDP ideal-int pkg syscall (freebsd-amd64-cgo), const AF_MAX = 42 pkg syscall (freebsd-amd64-cgo), const DLT_MATCHING_MAX = 246 pkg syscall (freebsd-amd64-cgo), const DLT_MPEG_2_TS = 243 pkg syscall (freebsd-amd64-cgo), const DLT_MPEG_2_TS ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_NFC_LLCP = 245 pkg syscall (freebsd-amd64-cgo), const DLT_NFC_LLCP ideal-int pkg syscall (freebsd-amd64-cgo), const DLT_NG40 = 244 pkg syscall (freebsd-amd64-cgo), const DLT_NG40 ideal-int pkg syscall (freebsd-amd64-cgo), const ELAST = 96 pkg syscall (freebsd-amd64-cgo), const ENOTRECOVERABLE = 95 pkg syscall (freebsd-amd64-cgo), const ENOTRECOVERABLE Errno pkg syscall (freebsd-amd64-cgo), const EOWNERDEAD = 96 pkg syscall (freebsd-amd64-cgo), const EOWNERDEAD Errno pkg syscall (freebsd-amd64-cgo), const EV_DROP = 4096 pkg syscall (freebsd-amd64-cgo), const EV_DROP ideal-int pkg syscall (freebsd-amd64-cgo), const IPPROTO_MPLS = 137 pkg syscall (freebsd-amd64-cgo), const IPPROTO_MPLS ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_32BIT = 524288 pkg syscall (freebsd-amd64-cgo), const MAP_32BIT ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_ALIGNED_SUPER = 16777216 pkg syscall (freebsd-amd64-cgo), const MAP_ALIGNED_SUPER ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_ALIGNMENT_MASK = -16777216 pkg syscall (freebsd-amd64-cgo), const MAP_ALIGNMENT_MASK ideal-int pkg syscall (freebsd-amd64-cgo), const MAP_ALIGNMENT_SHIFT = 24 pkg syscall (freebsd-amd64-cgo), const MAP_ALIGNMENT_SHIFT ideal-int pkg syscall (freebsd-amd64-cgo), const MSG_CMSG_CLOEXEC = 262144 pkg syscall (freebsd-amd64-cgo), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (freebsd-amd64-cgo), const NAME_MAX = 255 pkg syscall (freebsd-amd64-cgo), const NAME_MAX ideal-int pkg syscall (freebsd-amd64-cgo), const O_CLOEXEC = 1048576 pkg syscall (freebsd-amd64-cgo), const RTF_GWFLAG_COMPAT = 2147483648 pkg syscall (freebsd-amd64-cgo), const RTF_GWFLAG_COMPAT ideal-int pkg syscall (freebsd-amd64-cgo), const RT_NORTREF = 2 pkg syscall (freebsd-amd64-cgo), const RT_NORTREF ideal-int pkg syscall (freebsd-amd64-cgo), const SIGLIBRT = 33 pkg syscall (freebsd-amd64-cgo), const SIGLIBRT Signal pkg syscall (freebsd-amd64-cgo), const SOCK_CLOEXEC = 268435456 pkg syscall (freebsd-amd64-cgo), const SOCK_CLOEXEC ideal-int pkg syscall (freebsd-amd64-cgo), const SOCK_NONBLOCK = 536870912 pkg syscall (freebsd-amd64-cgo), const SOCK_NONBLOCK ideal-int pkg syscall (freebsd-amd64-cgo), const SO_VENDOR = 2147483648 pkg syscall (freebsd-amd64-cgo), const SO_VENDOR ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_ACCEPT4 = 541 pkg syscall (freebsd-amd64-cgo), const SYS_ACCEPT4 ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_BINDAT = 538 pkg syscall (freebsd-amd64-cgo), const SYS_BINDAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CHFLAGSAT = 540 pkg syscall (freebsd-amd64-cgo), const SYS_CHFLAGSAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_CONNECTAT = 539 pkg syscall (freebsd-amd64-cgo), const SYS_CONNECTAT ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_PIPE2 = 542 pkg syscall (freebsd-amd64-cgo), const SYS_PIPE2 ideal-int pkg syscall (freebsd-amd64-cgo), const SYS_PROCCTL = 544 pkg syscall (freebsd-amd64-cgo), const SYS_PROCCTL ideal-int pkg syscall (freebsd-amd64-cgo), const TCP_VENDOR = 2147483648 pkg syscall (freebsd-amd64-cgo), const TCP_VENDOR ideal-int pkg syscall (freebsd-amd64-cgo), const WEXITED = 16 pkg syscall (freebsd-amd64-cgo), const WEXITED ideal-int pkg syscall (freebsd-amd64-cgo), const WTRAPPED = 32 pkg syscall (freebsd-amd64-cgo), const WTRAPPED ideal-int pkg syscall (freebsd-amd64-cgo), func Accept4(int, int) (int, Sockaddr, error) pkg syscall (freebsd-amd64-cgo), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (freebsd-amd64-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (freebsd-amd64-cgo), type Termios struct pkg syscall (freebsd-amd64-cgo), type Termios struct, Cc [20]uint8 pkg syscall (freebsd-amd64-cgo), type Termios struct, Cflag uint32 pkg syscall (freebsd-amd64-cgo), type Termios struct, Iflag uint32 pkg syscall (freebsd-amd64-cgo), type Termios struct, Ispeed uint32 pkg syscall (freebsd-amd64-cgo), type Termios struct, Lflag uint32 pkg syscall (freebsd-amd64-cgo), type Termios struct, Oflag uint32 pkg syscall (freebsd-amd64-cgo), type Termios struct, Ospeed uint32 pkg syscall (freebsd-arm), const AF_INET6_SDP = 42 pkg syscall (freebsd-arm), const AF_INET6_SDP ideal-int pkg syscall (freebsd-arm), const AF_INET_SDP = 40 pkg syscall (freebsd-arm), const AF_INET_SDP ideal-int pkg syscall (freebsd-arm), const AF_MAX = 42 pkg syscall (freebsd-arm), const BIOCGRTIMEOUT = 1074807406 pkg syscall (freebsd-arm), const BIOCSRTIMEOUT = 2148549229 pkg syscall (freebsd-arm), const ELAST = 96 pkg syscall (freebsd-arm), const ENOTRECOVERABLE = 95 pkg syscall (freebsd-arm), const ENOTRECOVERABLE Errno pkg syscall (freebsd-arm), const EOWNERDEAD = 96 pkg syscall (freebsd-arm), const EOWNERDEAD Errno pkg syscall (freebsd-arm), const EV_DROP = 4096 pkg syscall (freebsd-arm), const EV_DROP ideal-int pkg syscall (freebsd-arm), const IFT_CARP = 248 pkg syscall (freebsd-arm), const IFT_CARP ideal-int pkg syscall (freebsd-arm), const MAP_ALIGNED_SUPER = 16777216 pkg syscall (freebsd-arm), const MAP_ALIGNED_SUPER ideal-int pkg syscall (freebsd-arm), const MAP_ALIGNMENT_MASK = -16777216 pkg syscall (freebsd-arm), const MAP_ALIGNMENT_MASK ideal-int pkg syscall (freebsd-arm), const MAP_ALIGNMENT_SHIFT = 24 pkg syscall (freebsd-arm), const MAP_ALIGNMENT_SHIFT ideal-int pkg syscall (freebsd-arm), const MSG_CMSG_CLOEXEC = 262144 pkg syscall (freebsd-arm), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (freebsd-arm), const NAME_MAX = 255 pkg syscall (freebsd-arm), const NAME_MAX ideal-int pkg syscall (freebsd-arm), const O_CLOEXEC = 1048576 pkg syscall (freebsd-arm), const RTF_GWFLAG_COMPAT = 2147483648 pkg syscall (freebsd-arm), const RTF_GWFLAG_COMPAT ideal-int pkg syscall (freebsd-arm), const SIOCAIFADDR = 2151704858 pkg syscall (freebsd-arm), const SIOCGIFSTATUS = 3274795323 pkg syscall (freebsd-arm), const SIOCSIFPHYADDR = 2151704902 pkg syscall (freebsd-arm), const SOCK_CLOEXEC = 268435456 pkg syscall (freebsd-arm), const SOCK_CLOEXEC ideal-int pkg syscall (freebsd-arm), const SOCK_NONBLOCK = 536870912 pkg syscall (freebsd-arm), const SOCK_NONBLOCK ideal-int pkg syscall (freebsd-arm), const SO_VENDOR = 2147483648 pkg syscall (freebsd-arm), const SO_VENDOR ideal-int pkg syscall (freebsd-arm), const SYS_ACCEPT4 = 541 pkg syscall (freebsd-arm), const SYS_ACCEPT4 ideal-int pkg syscall (freebsd-arm), const SYS_BINDAT = 538 pkg syscall (freebsd-arm), const SYS_BINDAT ideal-int pkg syscall (freebsd-arm), const SYS_CAP_GETRIGHTS = 515 pkg syscall (freebsd-arm), const SYS_CAP_GETRIGHTS ideal-int pkg syscall (freebsd-arm), const SYS_CHFLAGSAT = 540 pkg syscall (freebsd-arm), const SYS_CHFLAGSAT ideal-int pkg syscall (freebsd-arm), const SYS_CONNECTAT = 539 pkg syscall (freebsd-arm), const SYS_CONNECTAT ideal-int pkg syscall (freebsd-arm), const SYS_PIPE2 = 542 pkg syscall (freebsd-arm), const SYS_PIPE2 ideal-int pkg syscall (freebsd-arm), const SYS_PROCCTL = 544 pkg syscall (freebsd-arm), const SYS_PROCCTL ideal-int pkg syscall (freebsd-arm), const SizeofBpfHdr = 32 pkg syscall (freebsd-arm), const SizeofIfData = 96 pkg syscall (freebsd-arm), const SizeofIfMsghdr = 112 pkg syscall (freebsd-arm), const SizeofSockaddrDatalink = 54 pkg syscall (freebsd-arm), const SizeofSockaddrUnix = 106 pkg syscall (freebsd-arm), const TCP_VENDOR = 2147483648 pkg syscall (freebsd-arm), const TCP_VENDOR ideal-int pkg syscall (freebsd-arm), const TIOCTIMESTAMP = 1074820185 pkg syscall (freebsd-arm), func Accept4(int, int) (int, Sockaddr, error) pkg syscall (freebsd-arm), func Fchflags(int, int) error pkg syscall (freebsd-arm), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (freebsd-arm), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (freebsd-arm), type BpfHdr struct, Pad_cgo_0 [6]uint8 pkg syscall (freebsd-arm), type Flock_t struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-arm), type IfData struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-arm), type Termios struct pkg syscall (freebsd-arm), type Termios struct, Cc [20]uint8 pkg syscall (freebsd-arm), type Termios struct, Cflag uint32 pkg syscall (freebsd-arm), type Termios struct, Iflag uint32 pkg syscall (freebsd-arm), type Termios struct, Ispeed uint32 pkg syscall (freebsd-arm), type Termios struct, Lflag uint32 pkg syscall (freebsd-arm), type Termios struct, Oflag uint32 pkg syscall (freebsd-arm), type Termios struct, Ospeed uint32 pkg syscall (freebsd-arm), type Timespec struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-arm), type Timeval struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-arm-cgo), const AF_INET6_SDP = 42 pkg syscall (freebsd-arm-cgo), const AF_INET6_SDP ideal-int pkg syscall (freebsd-arm-cgo), const AF_INET_SDP = 40 pkg syscall (freebsd-arm-cgo), const AF_INET_SDP ideal-int pkg syscall (freebsd-arm-cgo), const AF_MAX = 42 pkg syscall (freebsd-arm-cgo), const BIOCGRTIMEOUT = 1074807406 pkg syscall (freebsd-arm-cgo), const BIOCSRTIMEOUT = 2148549229 pkg syscall (freebsd-arm-cgo), const ELAST = 96 pkg syscall (freebsd-arm-cgo), const ENOTRECOVERABLE = 95 pkg syscall (freebsd-arm-cgo), const ENOTRECOVERABLE Errno pkg syscall (freebsd-arm-cgo), const EOWNERDEAD = 96 pkg syscall (freebsd-arm-cgo), const EOWNERDEAD Errno pkg syscall (freebsd-arm-cgo), const EV_DROP = 4096 pkg syscall (freebsd-arm-cgo), const EV_DROP ideal-int pkg syscall (freebsd-arm-cgo), const IFT_CARP = 248 pkg syscall (freebsd-arm-cgo), const IFT_CARP ideal-int pkg syscall (freebsd-arm-cgo), const MAP_ALIGNED_SUPER = 16777216 pkg syscall (freebsd-arm-cgo), const MAP_ALIGNED_SUPER ideal-int pkg syscall (freebsd-arm-cgo), const MAP_ALIGNMENT_MASK = -16777216 pkg syscall (freebsd-arm-cgo), const MAP_ALIGNMENT_MASK ideal-int pkg syscall (freebsd-arm-cgo), const MAP_ALIGNMENT_SHIFT = 24 pkg syscall (freebsd-arm-cgo), const MAP_ALIGNMENT_SHIFT ideal-int pkg syscall (freebsd-arm-cgo), const MSG_CMSG_CLOEXEC = 262144 pkg syscall (freebsd-arm-cgo), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (freebsd-arm-cgo), const NAME_MAX = 255 pkg syscall (freebsd-arm-cgo), const NAME_MAX ideal-int pkg syscall (freebsd-arm-cgo), const O_CLOEXEC = 1048576 pkg syscall (freebsd-arm-cgo), const RTF_GWFLAG_COMPAT = 2147483648 pkg syscall (freebsd-arm-cgo), const RTF_GWFLAG_COMPAT ideal-int pkg syscall (freebsd-arm-cgo), const SIOCAIFADDR = 2151704858 pkg syscall (freebsd-arm-cgo), const SIOCGIFSTATUS = 3274795323 pkg syscall (freebsd-arm-cgo), const SIOCSIFPHYADDR = 2151704902 pkg syscall (freebsd-arm-cgo), const SOCK_CLOEXEC = 268435456 pkg syscall (freebsd-arm-cgo), const SOCK_CLOEXEC ideal-int pkg syscall (freebsd-arm-cgo), const SOCK_NONBLOCK = 536870912 pkg syscall (freebsd-arm-cgo), const SOCK_NONBLOCK ideal-int pkg syscall (freebsd-arm-cgo), const SO_VENDOR = 2147483648 pkg syscall (freebsd-arm-cgo), const SO_VENDOR ideal-int pkg syscall (freebsd-arm-cgo), const SYS_ACCEPT4 = 541 pkg syscall (freebsd-arm-cgo), const SYS_ACCEPT4 ideal-int pkg syscall (freebsd-arm-cgo), const SYS_BINDAT = 538 pkg syscall (freebsd-arm-cgo), const SYS_BINDAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CAP_GETRIGHTS = 515 pkg syscall (freebsd-arm-cgo), const SYS_CAP_GETRIGHTS ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CHFLAGSAT = 540 pkg syscall (freebsd-arm-cgo), const SYS_CHFLAGSAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_CONNECTAT = 539 pkg syscall (freebsd-arm-cgo), const SYS_CONNECTAT ideal-int pkg syscall (freebsd-arm-cgo), const SYS_PIPE2 = 542 pkg syscall (freebsd-arm-cgo), const SYS_PIPE2 ideal-int pkg syscall (freebsd-arm-cgo), const SYS_PROCCTL = 544 pkg syscall (freebsd-arm-cgo), const SYS_PROCCTL ideal-int pkg syscall (freebsd-arm-cgo), const SizeofBpfHdr = 32 pkg syscall (freebsd-arm-cgo), const SizeofIfData = 96 pkg syscall (freebsd-arm-cgo), const SizeofIfMsghdr = 112 pkg syscall (freebsd-arm-cgo), const SizeofSockaddrDatalink = 54 pkg syscall (freebsd-arm-cgo), const SizeofSockaddrUnix = 106 pkg syscall (freebsd-arm-cgo), const TCP_VENDOR = 2147483648 pkg syscall (freebsd-arm-cgo), const TCP_VENDOR ideal-int pkg syscall (freebsd-arm-cgo), const TIOCTIMESTAMP = 1074820185 pkg syscall (freebsd-arm-cgo), func Accept4(int, int) (int, Sockaddr, error) pkg syscall (freebsd-arm-cgo), func Fchflags(int, int) error pkg syscall (freebsd-arm-cgo), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (freebsd-arm-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (freebsd-arm-cgo), type BpfHdr struct, Pad_cgo_0 [6]uint8 pkg syscall (freebsd-arm-cgo), type Flock_t struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-arm-cgo), type IfData struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-arm-cgo), type Termios struct pkg syscall (freebsd-arm-cgo), type Termios struct, Cc [20]uint8 pkg syscall (freebsd-arm-cgo), type Termios struct, Cflag uint32 pkg syscall (freebsd-arm-cgo), type Termios struct, Iflag uint32 pkg syscall (freebsd-arm-cgo), type Termios struct, Ispeed uint32 pkg syscall (freebsd-arm-cgo), type Termios struct, Lflag uint32 pkg syscall (freebsd-arm-cgo), type Termios struct, Oflag uint32 pkg syscall (freebsd-arm-cgo), type Termios struct, Ospeed uint32 pkg syscall (freebsd-arm-cgo), type Timespec struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-arm-cgo), type Timeval struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-386), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (linux-386), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (linux-386), type Flock_t struct pkg syscall (linux-386), type Flock_t struct, Len int64 pkg syscall (linux-386), type Flock_t struct, Pid int32 pkg syscall (linux-386), type Flock_t struct, Start int64 pkg syscall (linux-386), type Flock_t struct, Type int16 pkg syscall (linux-386), type Flock_t struct, Whence int16 pkg syscall (linux-386-cgo), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (linux-386-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (linux-386-cgo), type Flock_t struct pkg syscall (linux-386-cgo), type Flock_t struct, Len int64 pkg syscall (linux-386-cgo), type Flock_t struct, Pid int32 pkg syscall (linux-386-cgo), type Flock_t struct, Start int64 pkg syscall (linux-386-cgo), type Flock_t struct, Type int16 pkg syscall (linux-386-cgo), type Flock_t struct, Whence int16 pkg syscall (linux-amd64), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (linux-amd64), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (linux-amd64), type Flock_t struct pkg syscall (linux-amd64), type Flock_t struct, Len int64 pkg syscall (linux-amd64), type Flock_t struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-amd64), type Flock_t struct, Pad_cgo_1 [4]uint8 pkg syscall (linux-amd64), type Flock_t struct, Pid int32 pkg syscall (linux-amd64), type Flock_t struct, Start int64 pkg syscall (linux-amd64), type Flock_t struct, Type int16 pkg syscall (linux-amd64), type Flock_t struct, Whence int16 pkg syscall (linux-amd64-cgo), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (linux-amd64-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (linux-amd64-cgo), type Flock_t struct pkg syscall (linux-amd64-cgo), type Flock_t struct, Len int64 pkg syscall (linux-amd64-cgo), type Flock_t struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-amd64-cgo), type Flock_t struct, Pad_cgo_1 [4]uint8 pkg syscall (linux-amd64-cgo), type Flock_t struct, Pid int32 pkg syscall (linux-amd64-cgo), type Flock_t struct, Start int64 pkg syscall (linux-amd64-cgo), type Flock_t struct, Type int16 pkg syscall (linux-amd64-cgo), type Flock_t struct, Whence int16 pkg syscall (linux-arm), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (linux-arm), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (linux-arm), type Flock_t struct pkg syscall (linux-arm), type Flock_t struct, Len int64 pkg syscall (linux-arm), type Flock_t struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-arm), type Flock_t struct, Pad_cgo_1 [4]uint8 pkg syscall (linux-arm), type Flock_t struct, Pid int32 pkg syscall (linux-arm), type Flock_t struct, Start int64 pkg syscall (linux-arm), type Flock_t struct, Type int16 pkg syscall (linux-arm), type Flock_t struct, Whence int16 pkg syscall (linux-arm-cgo), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (linux-arm-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (linux-arm-cgo), type Flock_t struct pkg syscall (linux-arm-cgo), type Flock_t struct, Len int64 pkg syscall (linux-arm-cgo), type Flock_t struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-arm-cgo), type Flock_t struct, Pad_cgo_1 [4]uint8 pkg syscall (linux-arm-cgo), type Flock_t struct, Pid int32 pkg syscall (linux-arm-cgo), type Flock_t struct, Start int64 pkg syscall (linux-arm-cgo), type Flock_t struct, Type int16 pkg syscall (linux-arm-cgo), type Flock_t struct, Whence int16 pkg syscall (netbsd-386), const CLONE_CSIGNAL = 255 pkg syscall (netbsd-386), const CLONE_CSIGNAL ideal-int pkg syscall (netbsd-386), const CLONE_FILES = 1024 pkg syscall (netbsd-386), const CLONE_FILES ideal-int pkg syscall (netbsd-386), const CLONE_FS = 512 pkg syscall (netbsd-386), const CLONE_FS ideal-int pkg syscall (netbsd-386), const CLONE_PID = 4096 pkg syscall (netbsd-386), const CLONE_PID ideal-int pkg syscall (netbsd-386), const CLONE_PTRACE = 8192 pkg syscall (netbsd-386), const CLONE_PTRACE ideal-int pkg syscall (netbsd-386), const CLONE_SIGHAND = 2048 pkg syscall (netbsd-386), const CLONE_SIGHAND ideal-int pkg syscall (netbsd-386), const CLONE_VFORK = 16384 pkg syscall (netbsd-386), const CLONE_VFORK ideal-int pkg syscall (netbsd-386), const CLONE_VM = 256 pkg syscall (netbsd-386), const CLONE_VM ideal-int pkg syscall (netbsd-386), const MADV_DONTNEED = 4 pkg syscall (netbsd-386), const MADV_DONTNEED ideal-int pkg syscall (netbsd-386), const MADV_FREE = 6 pkg syscall (netbsd-386), const MADV_FREE ideal-int pkg syscall (netbsd-386), const MADV_NORMAL = 0 pkg syscall (netbsd-386), const MADV_NORMAL ideal-int pkg syscall (netbsd-386), const MADV_RANDOM = 1 pkg syscall (netbsd-386), const MADV_RANDOM ideal-int pkg syscall (netbsd-386), const MADV_SEQUENTIAL = 2 pkg syscall (netbsd-386), const MADV_SEQUENTIAL ideal-int pkg syscall (netbsd-386), const MADV_SPACEAVAIL = 5 pkg syscall (netbsd-386), const MADV_SPACEAVAIL ideal-int pkg syscall (netbsd-386), const MADV_WILLNEED = 3 pkg syscall (netbsd-386), const MADV_WILLNEED ideal-int pkg syscall (netbsd-386), const MAP_ALIGNMENT_16MB = 402653184 pkg syscall (netbsd-386), const MAP_ALIGNMENT_16MB ideal-int pkg syscall (netbsd-386), const MAP_ALIGNMENT_1TB = 671088640 pkg syscall (netbsd-386), const MAP_ALIGNMENT_1TB ideal-int pkg syscall (netbsd-386), const MAP_ALIGNMENT_256TB = 805306368 pkg syscall (netbsd-386), const MAP_ALIGNMENT_256TB ideal-int pkg syscall (netbsd-386), const MAP_ALIGNMENT_4GB = 536870912 pkg syscall (netbsd-386), const MAP_ALIGNMENT_4GB ideal-int pkg syscall (netbsd-386), const MAP_ALIGNMENT_64KB = 268435456 pkg syscall (netbsd-386), const MAP_ALIGNMENT_64KB ideal-int pkg syscall (netbsd-386), const MAP_ALIGNMENT_64PB = 939524096 pkg syscall (netbsd-386), const MAP_ALIGNMENT_64PB ideal-int pkg syscall (netbsd-386), const MAP_ALIGNMENT_MASK = -16777216 pkg syscall (netbsd-386), const MAP_ALIGNMENT_MASK ideal-int pkg syscall (netbsd-386), const MAP_ALIGNMENT_SHIFT = 24 pkg syscall (netbsd-386), const MAP_ALIGNMENT_SHIFT ideal-int pkg syscall (netbsd-386), const MAP_ANON = 4096 pkg syscall (netbsd-386), const MAP_ANON ideal-int pkg syscall (netbsd-386), const MAP_FILE = 0 pkg syscall (netbsd-386), const MAP_FILE ideal-int pkg syscall (netbsd-386), const MAP_FIXED = 16 pkg syscall (netbsd-386), const MAP_FIXED ideal-int pkg syscall (netbsd-386), const MAP_HASSEMAPHORE = 512 pkg syscall (netbsd-386), const MAP_HASSEMAPHORE ideal-int pkg syscall (netbsd-386), const MAP_INHERIT = 128 pkg syscall (netbsd-386), const MAP_INHERIT ideal-int pkg syscall (netbsd-386), const MAP_INHERIT_COPY = 1 pkg syscall (netbsd-386), const MAP_INHERIT_COPY ideal-int pkg syscall (netbsd-386), const MAP_INHERIT_DEFAULT = 1 pkg syscall (netbsd-386), const MAP_INHERIT_DEFAULT ideal-int pkg syscall (netbsd-386), const MAP_INHERIT_DONATE_COPY = 3 pkg syscall (netbsd-386), const MAP_INHERIT_DONATE_COPY ideal-int pkg syscall (netbsd-386), const MAP_INHERIT_NONE = 2 pkg syscall (netbsd-386), const MAP_INHERIT_NONE ideal-int pkg syscall (netbsd-386), const MAP_INHERIT_SHARE = 0 pkg syscall (netbsd-386), const MAP_INHERIT_SHARE ideal-int pkg syscall (netbsd-386), const MAP_NORESERVE = 64 pkg syscall (netbsd-386), const MAP_NORESERVE ideal-int pkg syscall (netbsd-386), const MAP_PRIVATE = 2 pkg syscall (netbsd-386), const MAP_PRIVATE ideal-int pkg syscall (netbsd-386), const MAP_RENAME = 32 pkg syscall (netbsd-386), const MAP_RENAME ideal-int pkg syscall (netbsd-386), const MAP_SHARED = 1 pkg syscall (netbsd-386), const MAP_SHARED ideal-int pkg syscall (netbsd-386), const MAP_STACK = 8192 pkg syscall (netbsd-386), const MAP_STACK ideal-int pkg syscall (netbsd-386), const MAP_TRYFIXED = 1024 pkg syscall (netbsd-386), const MAP_TRYFIXED ideal-int pkg syscall (netbsd-386), const MAP_WIRED = 2048 pkg syscall (netbsd-386), const MAP_WIRED ideal-int pkg syscall (netbsd-386), const MCL_CURRENT = 1 pkg syscall (netbsd-386), const MCL_CURRENT ideal-int pkg syscall (netbsd-386), const MCL_FUTURE = 2 pkg syscall (netbsd-386), const MCL_FUTURE ideal-int pkg syscall (netbsd-386), const MS_ASYNC = 1 pkg syscall (netbsd-386), const MS_ASYNC ideal-int pkg syscall (netbsd-386), const MS_INVALIDATE = 2 pkg syscall (netbsd-386), const MS_INVALIDATE ideal-int pkg syscall (netbsd-386), const MS_SYNC = 4 pkg syscall (netbsd-386), const MS_SYNC ideal-int pkg syscall (netbsd-386), const PROT_EXEC = 4 pkg syscall (netbsd-386), const PROT_EXEC ideal-int pkg syscall (netbsd-386), const PROT_NONE = 0 pkg syscall (netbsd-386), const PROT_NONE ideal-int pkg syscall (netbsd-386), const PROT_READ = 1 pkg syscall (netbsd-386), const PROT_READ ideal-int pkg syscall (netbsd-386), const PROT_WRITE = 2 pkg syscall (netbsd-386), const PROT_WRITE ideal-int pkg syscall (netbsd-386), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (netbsd-386), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (netbsd-386), type Termios struct pkg syscall (netbsd-386), type Termios struct, Cc [20]uint8 pkg syscall (netbsd-386), type Termios struct, Cflag uint32 pkg syscall (netbsd-386), type Termios struct, Iflag uint32 pkg syscall (netbsd-386), type Termios struct, Ispeed int32 pkg syscall (netbsd-386), type Termios struct, Lflag uint32 pkg syscall (netbsd-386), type Termios struct, Oflag uint32 pkg syscall (netbsd-386), type Termios struct, Ospeed int32 pkg syscall (netbsd-386-cgo), const CLONE_CSIGNAL = 255 pkg syscall (netbsd-386-cgo), const CLONE_CSIGNAL ideal-int pkg syscall (netbsd-386-cgo), const CLONE_FILES = 1024 pkg syscall (netbsd-386-cgo), const CLONE_FILES ideal-int pkg syscall (netbsd-386-cgo), const CLONE_FS = 512 pkg syscall (netbsd-386-cgo), const CLONE_FS ideal-int pkg syscall (netbsd-386-cgo), const CLONE_PID = 4096 pkg syscall (netbsd-386-cgo), const CLONE_PID ideal-int pkg syscall (netbsd-386-cgo), const CLONE_PTRACE = 8192 pkg syscall (netbsd-386-cgo), const CLONE_PTRACE ideal-int pkg syscall (netbsd-386-cgo), const CLONE_SIGHAND = 2048 pkg syscall (netbsd-386-cgo), const CLONE_SIGHAND ideal-int pkg syscall (netbsd-386-cgo), const CLONE_VFORK = 16384 pkg syscall (netbsd-386-cgo), const CLONE_VFORK ideal-int pkg syscall (netbsd-386-cgo), const CLONE_VM = 256 pkg syscall (netbsd-386-cgo), const CLONE_VM ideal-int pkg syscall (netbsd-386-cgo), const MADV_DONTNEED = 4 pkg syscall (netbsd-386-cgo), const MADV_DONTNEED ideal-int pkg syscall (netbsd-386-cgo), const MADV_FREE = 6 pkg syscall (netbsd-386-cgo), const MADV_FREE ideal-int pkg syscall (netbsd-386-cgo), const MADV_NORMAL = 0 pkg syscall (netbsd-386-cgo), const MADV_NORMAL ideal-int pkg syscall (netbsd-386-cgo), const MADV_RANDOM = 1 pkg syscall (netbsd-386-cgo), const MADV_RANDOM ideal-int pkg syscall (netbsd-386-cgo), const MADV_SEQUENTIAL = 2 pkg syscall (netbsd-386-cgo), const MADV_SEQUENTIAL ideal-int pkg syscall (netbsd-386-cgo), const MADV_SPACEAVAIL = 5 pkg syscall (netbsd-386-cgo), const MADV_SPACEAVAIL ideal-int pkg syscall (netbsd-386-cgo), const MADV_WILLNEED = 3 pkg syscall (netbsd-386-cgo), const MADV_WILLNEED ideal-int pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_16MB = 402653184 pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_16MB ideal-int pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_1TB = 671088640 pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_1TB ideal-int pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_256TB = 805306368 pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_256TB ideal-int pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_4GB = 536870912 pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_4GB ideal-int pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_64KB = 268435456 pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_64KB ideal-int pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_64PB = 939524096 pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_64PB ideal-int pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_MASK = -16777216 pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_MASK ideal-int pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_SHIFT = 24 pkg syscall (netbsd-386-cgo), const MAP_ALIGNMENT_SHIFT ideal-int pkg syscall (netbsd-386-cgo), const MAP_ANON = 4096 pkg syscall (netbsd-386-cgo), const MAP_ANON ideal-int pkg syscall (netbsd-386-cgo), const MAP_FILE = 0 pkg syscall (netbsd-386-cgo), const MAP_FILE ideal-int pkg syscall (netbsd-386-cgo), const MAP_FIXED = 16 pkg syscall (netbsd-386-cgo), const MAP_FIXED ideal-int pkg syscall (netbsd-386-cgo), const MAP_HASSEMAPHORE = 512 pkg syscall (netbsd-386-cgo), const MAP_HASSEMAPHORE ideal-int pkg syscall (netbsd-386-cgo), const MAP_INHERIT = 128 pkg syscall (netbsd-386-cgo), const MAP_INHERIT ideal-int pkg syscall (netbsd-386-cgo), const MAP_INHERIT_COPY = 1 pkg syscall (netbsd-386-cgo), const MAP_INHERIT_COPY ideal-int pkg syscall (netbsd-386-cgo), const MAP_INHERIT_DEFAULT = 1 pkg syscall (netbsd-386-cgo), const MAP_INHERIT_DEFAULT ideal-int pkg syscall (netbsd-386-cgo), const MAP_INHERIT_DONATE_COPY = 3 pkg syscall (netbsd-386-cgo), const MAP_INHERIT_DONATE_COPY ideal-int pkg syscall (netbsd-386-cgo), const MAP_INHERIT_NONE = 2 pkg syscall (netbsd-386-cgo), const MAP_INHERIT_NONE ideal-int pkg syscall (netbsd-386-cgo), const MAP_INHERIT_SHARE = 0 pkg syscall (netbsd-386-cgo), const MAP_INHERIT_SHARE ideal-int pkg syscall (netbsd-386-cgo), const MAP_NORESERVE = 64 pkg syscall (netbsd-386-cgo), const MAP_NORESERVE ideal-int pkg syscall (netbsd-386-cgo), const MAP_PRIVATE = 2 pkg syscall (netbsd-386-cgo), const MAP_PRIVATE ideal-int pkg syscall (netbsd-386-cgo), const MAP_RENAME = 32 pkg syscall (netbsd-386-cgo), const MAP_RENAME ideal-int pkg syscall (netbsd-386-cgo), const MAP_SHARED = 1 pkg syscall (netbsd-386-cgo), const MAP_SHARED ideal-int pkg syscall (netbsd-386-cgo), const MAP_STACK = 8192 pkg syscall (netbsd-386-cgo), const MAP_STACK ideal-int pkg syscall (netbsd-386-cgo), const MAP_TRYFIXED = 1024 pkg syscall (netbsd-386-cgo), const MAP_TRYFIXED ideal-int pkg syscall (netbsd-386-cgo), const MAP_WIRED = 2048 pkg syscall (netbsd-386-cgo), const MAP_WIRED ideal-int pkg syscall (netbsd-386-cgo), const MCL_CURRENT = 1 pkg syscall (netbsd-386-cgo), const MCL_CURRENT ideal-int pkg syscall (netbsd-386-cgo), const MCL_FUTURE = 2 pkg syscall (netbsd-386-cgo), const MCL_FUTURE ideal-int pkg syscall (netbsd-386-cgo), const MS_ASYNC = 1 pkg syscall (netbsd-386-cgo), const MS_ASYNC ideal-int pkg syscall (netbsd-386-cgo), const MS_INVALIDATE = 2 pkg syscall (netbsd-386-cgo), const MS_INVALIDATE ideal-int pkg syscall (netbsd-386-cgo), const MS_SYNC = 4 pkg syscall (netbsd-386-cgo), const MS_SYNC ideal-int pkg syscall (netbsd-386-cgo), const PROT_EXEC = 4 pkg syscall (netbsd-386-cgo), const PROT_EXEC ideal-int pkg syscall (netbsd-386-cgo), const PROT_NONE = 0 pkg syscall (netbsd-386-cgo), const PROT_NONE ideal-int pkg syscall (netbsd-386-cgo), const PROT_READ = 1 pkg syscall (netbsd-386-cgo), const PROT_READ ideal-int pkg syscall (netbsd-386-cgo), const PROT_WRITE = 2 pkg syscall (netbsd-386-cgo), const PROT_WRITE ideal-int pkg syscall (netbsd-386-cgo), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (netbsd-386-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (netbsd-386-cgo), type Termios struct pkg syscall (netbsd-386-cgo), type Termios struct, Cc [20]uint8 pkg syscall (netbsd-386-cgo), type Termios struct, Cflag uint32 pkg syscall (netbsd-386-cgo), type Termios struct, Iflag uint32 pkg syscall (netbsd-386-cgo), type Termios struct, Ispeed int32 pkg syscall (netbsd-386-cgo), type Termios struct, Lflag uint32 pkg syscall (netbsd-386-cgo), type Termios struct, Oflag uint32 pkg syscall (netbsd-386-cgo), type Termios struct, Ospeed int32 pkg syscall (netbsd-amd64), const CLONE_CSIGNAL = 255 pkg syscall (netbsd-amd64), const CLONE_CSIGNAL ideal-int pkg syscall (netbsd-amd64), const CLONE_FILES = 1024 pkg syscall (netbsd-amd64), const CLONE_FILES ideal-int pkg syscall (netbsd-amd64), const CLONE_FS = 512 pkg syscall (netbsd-amd64), const CLONE_FS ideal-int pkg syscall (netbsd-amd64), const CLONE_PID = 4096 pkg syscall (netbsd-amd64), const CLONE_PID ideal-int pkg syscall (netbsd-amd64), const CLONE_PTRACE = 8192 pkg syscall (netbsd-amd64), const CLONE_PTRACE ideal-int pkg syscall (netbsd-amd64), const CLONE_SIGHAND = 2048 pkg syscall (netbsd-amd64), const CLONE_SIGHAND ideal-int pkg syscall (netbsd-amd64), const CLONE_VFORK = 16384 pkg syscall (netbsd-amd64), const CLONE_VFORK ideal-int pkg syscall (netbsd-amd64), const CLONE_VM = 256 pkg syscall (netbsd-amd64), const CLONE_VM ideal-int pkg syscall (netbsd-amd64), const MADV_DONTNEED = 4 pkg syscall (netbsd-amd64), const MADV_DONTNEED ideal-int pkg syscall (netbsd-amd64), const MADV_FREE = 6 pkg syscall (netbsd-amd64), const MADV_FREE ideal-int pkg syscall (netbsd-amd64), const MADV_NORMAL = 0 pkg syscall (netbsd-amd64), const MADV_NORMAL ideal-int pkg syscall (netbsd-amd64), const MADV_RANDOM = 1 pkg syscall (netbsd-amd64), const MADV_RANDOM ideal-int pkg syscall (netbsd-amd64), const MADV_SEQUENTIAL = 2 pkg syscall (netbsd-amd64), const MADV_SEQUENTIAL ideal-int pkg syscall (netbsd-amd64), const MADV_SPACEAVAIL = 5 pkg syscall (netbsd-amd64), const MADV_SPACEAVAIL ideal-int pkg syscall (netbsd-amd64), const MADV_WILLNEED = 3 pkg syscall (netbsd-amd64), const MADV_WILLNEED ideal-int pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_16MB = 402653184 pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_16MB ideal-int pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_1TB = 671088640 pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_1TB ideal-int pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_256TB = 805306368 pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_256TB ideal-int pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_4GB = 536870912 pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_4GB ideal-int pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_64KB = 268435456 pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_64KB ideal-int pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_64PB = 939524096 pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_64PB ideal-int pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_MASK = -16777216 pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_MASK ideal-int pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_SHIFT = 24 pkg syscall (netbsd-amd64), const MAP_ALIGNMENT_SHIFT ideal-int pkg syscall (netbsd-amd64), const MAP_ANON = 4096 pkg syscall (netbsd-amd64), const MAP_ANON ideal-int pkg syscall (netbsd-amd64), const MAP_FILE = 0 pkg syscall (netbsd-amd64), const MAP_FILE ideal-int pkg syscall (netbsd-amd64), const MAP_FIXED = 16 pkg syscall (netbsd-amd64), const MAP_FIXED ideal-int pkg syscall (netbsd-amd64), const MAP_HASSEMAPHORE = 512 pkg syscall (netbsd-amd64), const MAP_HASSEMAPHORE ideal-int pkg syscall (netbsd-amd64), const MAP_INHERIT = 128 pkg syscall (netbsd-amd64), const MAP_INHERIT ideal-int pkg syscall (netbsd-amd64), const MAP_INHERIT_COPY = 1 pkg syscall (netbsd-amd64), const MAP_INHERIT_COPY ideal-int pkg syscall (netbsd-amd64), const MAP_INHERIT_DEFAULT = 1 pkg syscall (netbsd-amd64), const MAP_INHERIT_DEFAULT ideal-int pkg syscall (netbsd-amd64), const MAP_INHERIT_DONATE_COPY = 3 pkg syscall (netbsd-amd64), const MAP_INHERIT_DONATE_COPY ideal-int pkg syscall (netbsd-amd64), const MAP_INHERIT_NONE = 2 pkg syscall (netbsd-amd64), const MAP_INHERIT_NONE ideal-int pkg syscall (netbsd-amd64), const MAP_INHERIT_SHARE = 0 pkg syscall (netbsd-amd64), const MAP_INHERIT_SHARE ideal-int pkg syscall (netbsd-amd64), const MAP_NORESERVE = 64 pkg syscall (netbsd-amd64), const MAP_NORESERVE ideal-int pkg syscall (netbsd-amd64), const MAP_PRIVATE = 2 pkg syscall (netbsd-amd64), const MAP_PRIVATE ideal-int pkg syscall (netbsd-amd64), const MAP_RENAME = 32 pkg syscall (netbsd-amd64), const MAP_RENAME ideal-int pkg syscall (netbsd-amd64), const MAP_SHARED = 1 pkg syscall (netbsd-amd64), const MAP_SHARED ideal-int pkg syscall (netbsd-amd64), const MAP_STACK = 8192 pkg syscall (netbsd-amd64), const MAP_STACK ideal-int pkg syscall (netbsd-amd64), const MAP_TRYFIXED = 1024 pkg syscall (netbsd-amd64), const MAP_TRYFIXED ideal-int pkg syscall (netbsd-amd64), const MAP_WIRED = 2048 pkg syscall (netbsd-amd64), const MAP_WIRED ideal-int pkg syscall (netbsd-amd64), const MCL_CURRENT = 1 pkg syscall (netbsd-amd64), const MCL_CURRENT ideal-int pkg syscall (netbsd-amd64), const MCL_FUTURE = 2 pkg syscall (netbsd-amd64), const MCL_FUTURE ideal-int pkg syscall (netbsd-amd64), const MS_ASYNC = 1 pkg syscall (netbsd-amd64), const MS_ASYNC ideal-int pkg syscall (netbsd-amd64), const MS_INVALIDATE = 2 pkg syscall (netbsd-amd64), const MS_INVALIDATE ideal-int pkg syscall (netbsd-amd64), const MS_SYNC = 4 pkg syscall (netbsd-amd64), const MS_SYNC ideal-int pkg syscall (netbsd-amd64), const PROT_EXEC = 4 pkg syscall (netbsd-amd64), const PROT_EXEC ideal-int pkg syscall (netbsd-amd64), const PROT_NONE = 0 pkg syscall (netbsd-amd64), const PROT_NONE ideal-int pkg syscall (netbsd-amd64), const PROT_READ = 1 pkg syscall (netbsd-amd64), const PROT_READ ideal-int pkg syscall (netbsd-amd64), const PROT_WRITE = 2 pkg syscall (netbsd-amd64), const PROT_WRITE ideal-int pkg syscall (netbsd-amd64), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (netbsd-amd64), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (netbsd-amd64), type Termios struct pkg syscall (netbsd-amd64), type Termios struct, Cc [20]uint8 pkg syscall (netbsd-amd64), type Termios struct, Cflag uint32 pkg syscall (netbsd-amd64), type Termios struct, Iflag uint32 pkg syscall (netbsd-amd64), type Termios struct, Ispeed int32 pkg syscall (netbsd-amd64), type Termios struct, Lflag uint32 pkg syscall (netbsd-amd64), type Termios struct, Oflag uint32 pkg syscall (netbsd-amd64), type Termios struct, Ospeed int32 pkg syscall (netbsd-amd64-cgo), const CLONE_CSIGNAL = 255 pkg syscall (netbsd-amd64-cgo), const CLONE_CSIGNAL ideal-int pkg syscall (netbsd-amd64-cgo), const CLONE_FILES = 1024 pkg syscall (netbsd-amd64-cgo), const CLONE_FILES ideal-int pkg syscall (netbsd-amd64-cgo), const CLONE_FS = 512 pkg syscall (netbsd-amd64-cgo), const CLONE_FS ideal-int pkg syscall (netbsd-amd64-cgo), const CLONE_PID = 4096 pkg syscall (netbsd-amd64-cgo), const CLONE_PID ideal-int pkg syscall (netbsd-amd64-cgo), const CLONE_PTRACE = 8192 pkg syscall (netbsd-amd64-cgo), const CLONE_PTRACE ideal-int pkg syscall (netbsd-amd64-cgo), const CLONE_SIGHAND = 2048 pkg syscall (netbsd-amd64-cgo), const CLONE_SIGHAND ideal-int pkg syscall (netbsd-amd64-cgo), const CLONE_VFORK = 16384 pkg syscall (netbsd-amd64-cgo), const CLONE_VFORK ideal-int pkg syscall (netbsd-amd64-cgo), const CLONE_VM = 256 pkg syscall (netbsd-amd64-cgo), const CLONE_VM ideal-int pkg syscall (netbsd-amd64-cgo), const MADV_DONTNEED = 4 pkg syscall (netbsd-amd64-cgo), const MADV_DONTNEED ideal-int pkg syscall (netbsd-amd64-cgo), const MADV_FREE = 6 pkg syscall (netbsd-amd64-cgo), const MADV_FREE ideal-int pkg syscall (netbsd-amd64-cgo), const MADV_NORMAL = 0 pkg syscall (netbsd-amd64-cgo), const MADV_NORMAL ideal-int pkg syscall (netbsd-amd64-cgo), const MADV_RANDOM = 1 pkg syscall (netbsd-amd64-cgo), const MADV_RANDOM ideal-int pkg syscall (netbsd-amd64-cgo), const MADV_SEQUENTIAL = 2 pkg syscall (netbsd-amd64-cgo), const MADV_SEQUENTIAL ideal-int pkg syscall (netbsd-amd64-cgo), const MADV_SPACEAVAIL = 5 pkg syscall (netbsd-amd64-cgo), const MADV_SPACEAVAIL ideal-int pkg syscall (netbsd-amd64-cgo), const MADV_WILLNEED = 3 pkg syscall (netbsd-amd64-cgo), const MADV_WILLNEED ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_16MB = 402653184 pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_16MB ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_1TB = 671088640 pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_1TB ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_256TB = 805306368 pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_256TB ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_4GB = 536870912 pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_4GB ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_64KB = 268435456 pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_64KB ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_64PB = 939524096 pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_64PB ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_MASK = -16777216 pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_MASK ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_SHIFT = 24 pkg syscall (netbsd-amd64-cgo), const MAP_ALIGNMENT_SHIFT ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_ANON = 4096 pkg syscall (netbsd-amd64-cgo), const MAP_ANON ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_FILE = 0 pkg syscall (netbsd-amd64-cgo), const MAP_FILE ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_FIXED = 16 pkg syscall (netbsd-amd64-cgo), const MAP_FIXED ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_HASSEMAPHORE = 512 pkg syscall (netbsd-amd64-cgo), const MAP_HASSEMAPHORE ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_INHERIT = 128 pkg syscall (netbsd-amd64-cgo), const MAP_INHERIT ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_INHERIT_COPY = 1 pkg syscall (netbsd-amd64-cgo), const MAP_INHERIT_COPY ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_INHERIT_DEFAULT = 1 pkg syscall (netbsd-amd64-cgo), const MAP_INHERIT_DEFAULT ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_INHERIT_DONATE_COPY = 3 pkg syscall (netbsd-amd64-cgo), const MAP_INHERIT_DONATE_COPY ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_INHERIT_NONE = 2 pkg syscall (netbsd-amd64-cgo), const MAP_INHERIT_NONE ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_INHERIT_SHARE = 0 pkg syscall (netbsd-amd64-cgo), const MAP_INHERIT_SHARE ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_NORESERVE = 64 pkg syscall (netbsd-amd64-cgo), const MAP_NORESERVE ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_PRIVATE = 2 pkg syscall (netbsd-amd64-cgo), const MAP_PRIVATE ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_RENAME = 32 pkg syscall (netbsd-amd64-cgo), const MAP_RENAME ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_SHARED = 1 pkg syscall (netbsd-amd64-cgo), const MAP_SHARED ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_STACK = 8192 pkg syscall (netbsd-amd64-cgo), const MAP_STACK ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_TRYFIXED = 1024 pkg syscall (netbsd-amd64-cgo), const MAP_TRYFIXED ideal-int pkg syscall (netbsd-amd64-cgo), const MAP_WIRED = 2048 pkg syscall (netbsd-amd64-cgo), const MAP_WIRED ideal-int pkg syscall (netbsd-amd64-cgo), const MCL_CURRENT = 1 pkg syscall (netbsd-amd64-cgo), const MCL_CURRENT ideal-int pkg syscall (netbsd-amd64-cgo), const MCL_FUTURE = 2 pkg syscall (netbsd-amd64-cgo), const MCL_FUTURE ideal-int pkg syscall (netbsd-amd64-cgo), const MS_ASYNC = 1 pkg syscall (netbsd-amd64-cgo), const MS_ASYNC ideal-int pkg syscall (netbsd-amd64-cgo), const MS_INVALIDATE = 2 pkg syscall (netbsd-amd64-cgo), const MS_INVALIDATE ideal-int pkg syscall (netbsd-amd64-cgo), const MS_SYNC = 4 pkg syscall (netbsd-amd64-cgo), const MS_SYNC ideal-int pkg syscall (netbsd-amd64-cgo), const PROT_EXEC = 4 pkg syscall (netbsd-amd64-cgo), const PROT_EXEC ideal-int pkg syscall (netbsd-amd64-cgo), const PROT_NONE = 0 pkg syscall (netbsd-amd64-cgo), const PROT_NONE ideal-int pkg syscall (netbsd-amd64-cgo), const PROT_READ = 1 pkg syscall (netbsd-amd64-cgo), const PROT_READ ideal-int pkg syscall (netbsd-amd64-cgo), const PROT_WRITE = 2 pkg syscall (netbsd-amd64-cgo), const PROT_WRITE ideal-int pkg syscall (netbsd-amd64-cgo), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (netbsd-amd64-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (netbsd-amd64-cgo), type Termios struct pkg syscall (netbsd-amd64-cgo), type Termios struct, Cc [20]uint8 pkg syscall (netbsd-amd64-cgo), type Termios struct, Cflag uint32 pkg syscall (netbsd-amd64-cgo), type Termios struct, Iflag uint32 pkg syscall (netbsd-amd64-cgo), type Termios struct, Ispeed int32 pkg syscall (netbsd-amd64-cgo), type Termios struct, Lflag uint32 pkg syscall (netbsd-amd64-cgo), type Termios struct, Oflag uint32 pkg syscall (netbsd-amd64-cgo), type Termios struct, Ospeed int32 pkg syscall (netbsd-arm), const MADV_DONTNEED = 4 pkg syscall (netbsd-arm), const MADV_DONTNEED ideal-int pkg syscall (netbsd-arm), const MADV_FREE = 6 pkg syscall (netbsd-arm), const MADV_FREE ideal-int pkg syscall (netbsd-arm), const MADV_NORMAL = 0 pkg syscall (netbsd-arm), const MADV_NORMAL ideal-int pkg syscall (netbsd-arm), const MADV_RANDOM = 1 pkg syscall (netbsd-arm), const MADV_RANDOM ideal-int pkg syscall (netbsd-arm), const MADV_SEQUENTIAL = 2 pkg syscall (netbsd-arm), const MADV_SEQUENTIAL ideal-int pkg syscall (netbsd-arm), const MADV_SPACEAVAIL = 5 pkg syscall (netbsd-arm), const MADV_SPACEAVAIL ideal-int pkg syscall (netbsd-arm), const MADV_WILLNEED = 3 pkg syscall (netbsd-arm), const MADV_WILLNEED ideal-int pkg syscall (netbsd-arm), const MAP_ALIGNMENT_16MB = 402653184 pkg syscall (netbsd-arm), const MAP_ALIGNMENT_16MB ideal-int pkg syscall (netbsd-arm), const MAP_ALIGNMENT_1TB = 671088640 pkg syscall (netbsd-arm), const MAP_ALIGNMENT_1TB ideal-int pkg syscall (netbsd-arm), const MAP_ALIGNMENT_256TB = 805306368 pkg syscall (netbsd-arm), const MAP_ALIGNMENT_256TB ideal-int pkg syscall (netbsd-arm), const MAP_ALIGNMENT_4GB = 536870912 pkg syscall (netbsd-arm), const MAP_ALIGNMENT_4GB ideal-int pkg syscall (netbsd-arm), const MAP_ALIGNMENT_64KB = 268435456 pkg syscall (netbsd-arm), const MAP_ALIGNMENT_64KB ideal-int pkg syscall (netbsd-arm), const MAP_ALIGNMENT_64PB = 939524096 pkg syscall (netbsd-arm), const MAP_ALIGNMENT_64PB ideal-int pkg syscall (netbsd-arm), const MAP_ALIGNMENT_MASK = -16777216 pkg syscall (netbsd-arm), const MAP_ALIGNMENT_MASK ideal-int pkg syscall (netbsd-arm), const MAP_ALIGNMENT_SHIFT = 24 pkg syscall (netbsd-arm), const MAP_ALIGNMENT_SHIFT ideal-int pkg syscall (netbsd-arm), const MAP_ANON = 4096 pkg syscall (netbsd-arm), const MAP_ANON ideal-int pkg syscall (netbsd-arm), const MAP_FILE = 0 pkg syscall (netbsd-arm), const MAP_FILE ideal-int pkg syscall (netbsd-arm), const MAP_FIXED = 16 pkg syscall (netbsd-arm), const MAP_FIXED ideal-int pkg syscall (netbsd-arm), const MAP_HASSEMAPHORE = 512 pkg syscall (netbsd-arm), const MAP_HASSEMAPHORE ideal-int pkg syscall (netbsd-arm), const MAP_INHERIT = 128 pkg syscall (netbsd-arm), const MAP_INHERIT ideal-int pkg syscall (netbsd-arm), const MAP_INHERIT_COPY = 1 pkg syscall (netbsd-arm), const MAP_INHERIT_COPY ideal-int pkg syscall (netbsd-arm), const MAP_INHERIT_DEFAULT = 1 pkg syscall (netbsd-arm), const MAP_INHERIT_DEFAULT ideal-int pkg syscall (netbsd-arm), const MAP_INHERIT_DONATE_COPY = 3 pkg syscall (netbsd-arm), const MAP_INHERIT_DONATE_COPY ideal-int pkg syscall (netbsd-arm), const MAP_INHERIT_NONE = 2 pkg syscall (netbsd-arm), const MAP_INHERIT_NONE ideal-int pkg syscall (netbsd-arm), const MAP_INHERIT_SHARE = 0 pkg syscall (netbsd-arm), const MAP_INHERIT_SHARE ideal-int pkg syscall (netbsd-arm), const MAP_NORESERVE = 64 pkg syscall (netbsd-arm), const MAP_NORESERVE ideal-int pkg syscall (netbsd-arm), const MAP_PRIVATE = 2 pkg syscall (netbsd-arm), const MAP_PRIVATE ideal-int pkg syscall (netbsd-arm), const MAP_RENAME = 32 pkg syscall (netbsd-arm), const MAP_RENAME ideal-int pkg syscall (netbsd-arm), const MAP_SHARED = 1 pkg syscall (netbsd-arm), const MAP_SHARED ideal-int pkg syscall (netbsd-arm), const MAP_STACK = 8192 pkg syscall (netbsd-arm), const MAP_STACK ideal-int pkg syscall (netbsd-arm), const MAP_TRYFIXED = 1024 pkg syscall (netbsd-arm), const MAP_TRYFIXED ideal-int pkg syscall (netbsd-arm), const MAP_WIRED = 2048 pkg syscall (netbsd-arm), const MAP_WIRED ideal-int pkg syscall (netbsd-arm), const PROT_EXEC = 4 pkg syscall (netbsd-arm), const PROT_EXEC ideal-int pkg syscall (netbsd-arm), const PROT_NONE = 0 pkg syscall (netbsd-arm), const PROT_NONE ideal-int pkg syscall (netbsd-arm), const PROT_READ = 1 pkg syscall (netbsd-arm), const PROT_READ ideal-int pkg syscall (netbsd-arm), const PROT_WRITE = 2 pkg syscall (netbsd-arm), const PROT_WRITE ideal-int pkg syscall (netbsd-arm), const SizeofIfData = 136 pkg syscall (netbsd-arm), func Fchflags(int, int) error pkg syscall (netbsd-arm), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (netbsd-arm), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (netbsd-arm), type Kevent_t struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-arm), type Stat_t struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-arm), type Stat_t struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-arm), type Stat_t struct, Pad_cgo_2 [4]uint8 pkg syscall (netbsd-arm), type Termios struct pkg syscall (netbsd-arm), type Termios struct, Cc [20]uint8 pkg syscall (netbsd-arm), type Termios struct, Cflag uint32 pkg syscall (netbsd-arm), type Termios struct, Iflag uint32 pkg syscall (netbsd-arm), type Termios struct, Ispeed int32 pkg syscall (netbsd-arm), type Termios struct, Lflag uint32 pkg syscall (netbsd-arm), type Termios struct, Oflag uint32 pkg syscall (netbsd-arm), type Termios struct, Ospeed int32 pkg syscall (netbsd-arm), type Timespec struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-arm), type Timeval struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-arm-cgo), const MADV_DONTNEED = 4 pkg syscall (netbsd-arm-cgo), const MADV_DONTNEED ideal-int pkg syscall (netbsd-arm-cgo), const MADV_FREE = 6 pkg syscall (netbsd-arm-cgo), const MADV_FREE ideal-int pkg syscall (netbsd-arm-cgo), const MADV_NORMAL = 0 pkg syscall (netbsd-arm-cgo), const MADV_NORMAL ideal-int pkg syscall (netbsd-arm-cgo), const MADV_RANDOM = 1 pkg syscall (netbsd-arm-cgo), const MADV_RANDOM ideal-int pkg syscall (netbsd-arm-cgo), const MADV_SEQUENTIAL = 2 pkg syscall (netbsd-arm-cgo), const MADV_SEQUENTIAL ideal-int pkg syscall (netbsd-arm-cgo), const MADV_SPACEAVAIL = 5 pkg syscall (netbsd-arm-cgo), const MADV_SPACEAVAIL ideal-int pkg syscall (netbsd-arm-cgo), const MADV_WILLNEED = 3 pkg syscall (netbsd-arm-cgo), const MADV_WILLNEED ideal-int pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_16MB = 402653184 pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_16MB ideal-int pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_1TB = 671088640 pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_1TB ideal-int pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_256TB = 805306368 pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_256TB ideal-int pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_4GB = 536870912 pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_4GB ideal-int pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_64KB = 268435456 pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_64KB ideal-int pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_64PB = 939524096 pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_64PB ideal-int pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_MASK = -16777216 pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_MASK ideal-int pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_SHIFT = 24 pkg syscall (netbsd-arm-cgo), const MAP_ALIGNMENT_SHIFT ideal-int pkg syscall (netbsd-arm-cgo), const MAP_ANON = 4096 pkg syscall (netbsd-arm-cgo), const MAP_ANON ideal-int pkg syscall (netbsd-arm-cgo), const MAP_FILE = 0 pkg syscall (netbsd-arm-cgo), const MAP_FILE ideal-int pkg syscall (netbsd-arm-cgo), const MAP_FIXED = 16 pkg syscall (netbsd-arm-cgo), const MAP_FIXED ideal-int pkg syscall (netbsd-arm-cgo), const MAP_HASSEMAPHORE = 512 pkg syscall (netbsd-arm-cgo), const MAP_HASSEMAPHORE ideal-int pkg syscall (netbsd-arm-cgo), const MAP_INHERIT = 128 pkg syscall (netbsd-arm-cgo), const MAP_INHERIT ideal-int pkg syscall (netbsd-arm-cgo), const MAP_INHERIT_COPY = 1 pkg syscall (netbsd-arm-cgo), const MAP_INHERIT_COPY ideal-int pkg syscall (netbsd-arm-cgo), const MAP_INHERIT_DEFAULT = 1 pkg syscall (netbsd-arm-cgo), const MAP_INHERIT_DEFAULT ideal-int pkg syscall (netbsd-arm-cgo), const MAP_INHERIT_DONATE_COPY = 3 pkg syscall (netbsd-arm-cgo), const MAP_INHERIT_DONATE_COPY ideal-int pkg syscall (netbsd-arm-cgo), const MAP_INHERIT_NONE = 2 pkg syscall (netbsd-arm-cgo), const MAP_INHERIT_NONE ideal-int pkg syscall (netbsd-arm-cgo), const MAP_INHERIT_SHARE = 0 pkg syscall (netbsd-arm-cgo), const MAP_INHERIT_SHARE ideal-int pkg syscall (netbsd-arm-cgo), const MAP_NORESERVE = 64 pkg syscall (netbsd-arm-cgo), const MAP_NORESERVE ideal-int pkg syscall (netbsd-arm-cgo), const MAP_PRIVATE = 2 pkg syscall (netbsd-arm-cgo), const MAP_PRIVATE ideal-int pkg syscall (netbsd-arm-cgo), const MAP_RENAME = 32 pkg syscall (netbsd-arm-cgo), const MAP_RENAME ideal-int pkg syscall (netbsd-arm-cgo), const MAP_SHARED = 1 pkg syscall (netbsd-arm-cgo), const MAP_SHARED ideal-int pkg syscall (netbsd-arm-cgo), const MAP_STACK = 8192 pkg syscall (netbsd-arm-cgo), const MAP_STACK ideal-int pkg syscall (netbsd-arm-cgo), const MAP_TRYFIXED = 1024 pkg syscall (netbsd-arm-cgo), const MAP_TRYFIXED ideal-int pkg syscall (netbsd-arm-cgo), const MAP_WIRED = 2048 pkg syscall (netbsd-arm-cgo), const MAP_WIRED ideal-int pkg syscall (netbsd-arm-cgo), const PROT_EXEC = 4 pkg syscall (netbsd-arm-cgo), const PROT_EXEC ideal-int pkg syscall (netbsd-arm-cgo), const PROT_NONE = 0 pkg syscall (netbsd-arm-cgo), const PROT_NONE ideal-int pkg syscall (netbsd-arm-cgo), const PROT_READ = 1 pkg syscall (netbsd-arm-cgo), const PROT_READ ideal-int pkg syscall (netbsd-arm-cgo), const PROT_WRITE = 2 pkg syscall (netbsd-arm-cgo), const PROT_WRITE ideal-int pkg syscall (netbsd-arm-cgo), const SizeofIfData = 136 pkg syscall (netbsd-arm-cgo), func Fchflags(int, int) error pkg syscall (netbsd-arm-cgo), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (netbsd-arm-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (netbsd-arm-cgo), type Kevent_t struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Pad_cgo_1 [4]uint8 pkg syscall (netbsd-arm-cgo), type Stat_t struct, Pad_cgo_2 [4]uint8 pkg syscall (netbsd-arm-cgo), type Termios struct pkg syscall (netbsd-arm-cgo), type Termios struct, Cc [20]uint8 pkg syscall (netbsd-arm-cgo), type Termios struct, Cflag uint32 pkg syscall (netbsd-arm-cgo), type Termios struct, Iflag uint32 pkg syscall (netbsd-arm-cgo), type Termios struct, Ispeed int32 pkg syscall (netbsd-arm-cgo), type Termios struct, Lflag uint32 pkg syscall (netbsd-arm-cgo), type Termios struct, Oflag uint32 pkg syscall (netbsd-arm-cgo), type Termios struct, Ospeed int32 pkg syscall (netbsd-arm-cgo), type Timespec struct, Pad_cgo_0 [4]uint8 pkg syscall (netbsd-arm-cgo), type Timeval struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-386), const BIOCGRTIMEOUT = 1074545262 pkg syscall (openbsd-386), const BIOCSRTIMEOUT = 2148287085 pkg syscall (openbsd-386), const IPPROTO_DIVERT_INIT = 2 pkg syscall (openbsd-386), const IPPROTO_DIVERT_INIT ideal-int pkg syscall (openbsd-386), const IPPROTO_DIVERT_RESP = 1 pkg syscall (openbsd-386), const IPPROTO_DIVERT_RESP ideal-int pkg syscall (openbsd-386), const IPV6_RECVDSTPORT = 64 pkg syscall (openbsd-386), const IPV6_RECVDSTPORT ideal-int pkg syscall (openbsd-386), const IP_DIVERTFL = 4130 pkg syscall (openbsd-386), const IP_DIVERTFL ideal-int pkg syscall (openbsd-386), const MADV_DONTNEED = 4 pkg syscall (openbsd-386), const MADV_DONTNEED ideal-int pkg syscall (openbsd-386), const MADV_FREE = 6 pkg syscall (openbsd-386), const MADV_FREE ideal-int pkg syscall (openbsd-386), const MADV_NORMAL = 0 pkg syscall (openbsd-386), const MADV_NORMAL ideal-int pkg syscall (openbsd-386), const MADV_RANDOM = 1 pkg syscall (openbsd-386), const MADV_RANDOM ideal-int pkg syscall (openbsd-386), const MADV_SEQUENTIAL = 2 pkg syscall (openbsd-386), const MADV_SEQUENTIAL ideal-int pkg syscall (openbsd-386), const MADV_SPACEAVAIL = 5 pkg syscall (openbsd-386), const MADV_SPACEAVAIL ideal-int pkg syscall (openbsd-386), const MADV_WILLNEED = 3 pkg syscall (openbsd-386), const MADV_WILLNEED ideal-int pkg syscall (openbsd-386), const MAP_ANON = 4096 pkg syscall (openbsd-386), const MAP_ANON ideal-int pkg syscall (openbsd-386), const MAP_COPY = 4 pkg syscall (openbsd-386), const MAP_COPY ideal-int pkg syscall (openbsd-386), const MAP_FILE = 0 pkg syscall (openbsd-386), const MAP_FILE ideal-int pkg syscall (openbsd-386), const MAP_FIXED = 16 pkg syscall (openbsd-386), const MAP_FIXED ideal-int pkg syscall (openbsd-386), const MAP_FLAGMASK = 8183 pkg syscall (openbsd-386), const MAP_FLAGMASK ideal-int pkg syscall (openbsd-386), const MAP_HASSEMAPHORE = 512 pkg syscall (openbsd-386), const MAP_HASSEMAPHORE ideal-int pkg syscall (openbsd-386), const MAP_INHERIT = 128 pkg syscall (openbsd-386), const MAP_INHERIT ideal-int pkg syscall (openbsd-386), const MAP_INHERIT_COPY = 1 pkg syscall (openbsd-386), const MAP_INHERIT_COPY ideal-int pkg syscall (openbsd-386), const MAP_INHERIT_DONATE_COPY = 3 pkg syscall (openbsd-386), const MAP_INHERIT_DONATE_COPY ideal-int pkg syscall (openbsd-386), const MAP_INHERIT_NONE = 2 pkg syscall (openbsd-386), const MAP_INHERIT_NONE ideal-int pkg syscall (openbsd-386), const MAP_INHERIT_SHARE = 0 pkg syscall (openbsd-386), const MAP_INHERIT_SHARE ideal-int pkg syscall (openbsd-386), const MAP_NOEXTEND = 256 pkg syscall (openbsd-386), const MAP_NOEXTEND ideal-int pkg syscall (openbsd-386), const MAP_NORESERVE = 64 pkg syscall (openbsd-386), const MAP_NORESERVE ideal-int pkg syscall (openbsd-386), const MAP_PRIVATE = 2 pkg syscall (openbsd-386), const MAP_PRIVATE ideal-int pkg syscall (openbsd-386), const MAP_RENAME = 32 pkg syscall (openbsd-386), const MAP_RENAME ideal-int pkg syscall (openbsd-386), const MAP_SHARED = 1 pkg syscall (openbsd-386), const MAP_SHARED ideal-int pkg syscall (openbsd-386), const MAP_TRYFIXED = 1024 pkg syscall (openbsd-386), const MAP_TRYFIXED ideal-int pkg syscall (openbsd-386), const MCL_CURRENT = 1 pkg syscall (openbsd-386), const MCL_CURRENT ideal-int pkg syscall (openbsd-386), const MCL_FUTURE = 2 pkg syscall (openbsd-386), const MCL_FUTURE ideal-int pkg syscall (openbsd-386), const MS_ASYNC = 1 pkg syscall (openbsd-386), const MS_ASYNC ideal-int pkg syscall (openbsd-386), const MS_INVALIDATE = 4 pkg syscall (openbsd-386), const MS_INVALIDATE ideal-int pkg syscall (openbsd-386), const MS_SYNC = 2 pkg syscall (openbsd-386), const MS_SYNC ideal-int pkg syscall (openbsd-386), const PROT_EXEC = 4 pkg syscall (openbsd-386), const PROT_EXEC ideal-int pkg syscall (openbsd-386), const PROT_NONE = 0 pkg syscall (openbsd-386), const PROT_NONE ideal-int pkg syscall (openbsd-386), const PROT_READ = 1 pkg syscall (openbsd-386), const PROT_READ ideal-int pkg syscall (openbsd-386), const PROT_WRITE = 2 pkg syscall (openbsd-386), const PROT_WRITE ideal-int pkg syscall (openbsd-386), const RTF_FMASK = 1112072 pkg syscall (openbsd-386), const RTM_VERSION = 5 pkg syscall (openbsd-386), const SIOCBRDGDADDR = 2166909255 pkg syscall (openbsd-386), const SIOCBRDGGPARAM = 3225184600 pkg syscall (openbsd-386), const SIOCBRDGSADDR = 3240651076 pkg syscall (openbsd-386), const SIOCGETVLAN = 3223349648 pkg syscall (openbsd-386), const SIOCGETVLAN ideal-int pkg syscall (openbsd-386), const SIOCGIFHARDMTU = 3223349669 pkg syscall (openbsd-386), const SIOCGIFHARDMTU ideal-int pkg syscall (openbsd-386), const SIOCGLIFPHYTTL = 3223349673 pkg syscall (openbsd-386), const SIOCGLIFPHYTTL ideal-int pkg syscall (openbsd-386), const SIOCGSPPPPARAMS = 3223349652 pkg syscall (openbsd-386), const SIOCGSPPPPARAMS ideal-int pkg syscall (openbsd-386), const SIOCGVNETID = 3223349671 pkg syscall (openbsd-386), const SIOCGVNETID ideal-int pkg syscall (openbsd-386), const SIOCSETVLAN = 2149607823 pkg syscall (openbsd-386), const SIOCSETVLAN ideal-int pkg syscall (openbsd-386), const SIOCSLIFPHYTTL = 2149607848 pkg syscall (openbsd-386), const SIOCSLIFPHYTTL ideal-int pkg syscall (openbsd-386), const SIOCSSPPPPARAMS = 2149607827 pkg syscall (openbsd-386), const SIOCSSPPPPARAMS ideal-int pkg syscall (openbsd-386), const SIOCSVNETID = 2149607846 pkg syscall (openbsd-386), const SIOCSVNETID ideal-int pkg syscall (openbsd-386), const SYS_CLOCK_GETRES = 89 pkg syscall (openbsd-386), const SYS_CLOCK_GETTIME = 87 pkg syscall (openbsd-386), const SYS_CLOCK_SETTIME = 88 pkg syscall (openbsd-386), const SYS_FHSTATFS = 65 pkg syscall (openbsd-386), const SYS_FSTAT = 53 pkg syscall (openbsd-386), const SYS_FSTATAT = 42 pkg syscall (openbsd-386), const SYS_FSTATFS = 64 pkg syscall (openbsd-386), const SYS_FUTIMENS = 85 pkg syscall (openbsd-386), const SYS_FUTIMES = 77 pkg syscall (openbsd-386), const SYS_GETDENTS = 99 pkg syscall (openbsd-386), const SYS_GETDENTS ideal-int pkg syscall (openbsd-386), const SYS_GETFSSTAT = 62 pkg syscall (openbsd-386), const SYS_GETITIMER = 70 pkg syscall (openbsd-386), const SYS_GETRUSAGE = 19 pkg syscall (openbsd-386), const SYS_GETTIMEOFDAY = 67 pkg syscall (openbsd-386), const SYS_KEVENT = 72 pkg syscall (openbsd-386), const SYS_LSTAT = 40 pkg syscall (openbsd-386), const SYS_NANOSLEEP = 91 pkg syscall (openbsd-386), const SYS_PPOLL = 109 pkg syscall (openbsd-386), const SYS_PPOLL ideal-int pkg syscall (openbsd-386), const SYS_PSELECT = 110 pkg syscall (openbsd-386), const SYS_PSELECT ideal-int pkg syscall (openbsd-386), const SYS_SELECT = 71 pkg syscall (openbsd-386), const SYS_SETITIMER = 69 pkg syscall (openbsd-386), const SYS_SETTIMEOFDAY = 68 pkg syscall (openbsd-386), const SYS_STAT = 38 pkg syscall (openbsd-386), const SYS_STATFS = 63 pkg syscall (openbsd-386), const SYS_UTIMENSAT = 84 pkg syscall (openbsd-386), const SYS_UTIMES = 76 pkg syscall (openbsd-386), const SYS_UTRACE = 209 pkg syscall (openbsd-386), const SYS_UTRACE ideal-int pkg syscall (openbsd-386), const SYS_WAIT4 = 11 pkg syscall (openbsd-386), const SYS___THRSLEEP = 94 pkg syscall (openbsd-386), const SizeofIfData = 212 pkg syscall (openbsd-386), const SizeofIfMsghdr = 236 pkg syscall (openbsd-386), const SizeofRtMetrics = 56 pkg syscall (openbsd-386), const SizeofRtMsghdr = 96 pkg syscall (openbsd-386), const TCP_NOPUSH = 16 pkg syscall (openbsd-386), const TCP_NOPUSH ideal-int pkg syscall (openbsd-386), const TIOCGSID = 1074033763 pkg syscall (openbsd-386), const TIOCGSID ideal-int pkg syscall (openbsd-386), const TIOCGTSTAMP = 1074558043 pkg syscall (openbsd-386), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (openbsd-386), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (openbsd-386), type Dirent struct, Fileno uint64 pkg syscall (openbsd-386), type Dirent struct, Off int64 pkg syscall (openbsd-386), type Dirent struct, X__d_padding [4]uint8 pkg syscall (openbsd-386), type FdSet struct, Bits [32]uint32 pkg syscall (openbsd-386), type Kevent_t struct, Data int64 pkg syscall (openbsd-386), type Mclpool struct, Grown int32 pkg syscall (openbsd-386), type RtMetrics struct, Expire int64 pkg syscall (openbsd-386), type RtMetrics struct, Pad uint32 pkg syscall (openbsd-386), type Stat_t struct, Ino uint64 pkg syscall (openbsd-386), type Statfs_t struct, F_ctime uint64 pkg syscall (openbsd-386), type Statfs_t struct, F_mntfromspec [90]int8 pkg syscall (openbsd-386), type Statfs_t struct, Pad_cgo_0 [2]uint8 pkg syscall (openbsd-386), type Termios struct pkg syscall (openbsd-386), type Termios struct, Cc [20]uint8 pkg syscall (openbsd-386), type Termios struct, Cflag uint32 pkg syscall (openbsd-386), type Termios struct, Iflag uint32 pkg syscall (openbsd-386), type Termios struct, Ispeed int32 pkg syscall (openbsd-386), type Termios struct, Lflag uint32 pkg syscall (openbsd-386), type Termios struct, Oflag uint32 pkg syscall (openbsd-386), type Termios struct, Ospeed int32 pkg syscall (openbsd-386), type Timespec struct, Sec int64 pkg syscall (openbsd-386), type Timeval struct, Sec int64 pkg syscall (openbsd-386-cgo), const BIOCGRTIMEOUT = 1074545262 pkg syscall (openbsd-386-cgo), const BIOCSRTIMEOUT = 2148287085 pkg syscall (openbsd-386-cgo), const IPPROTO_DIVERT_INIT = 2 pkg syscall (openbsd-386-cgo), const IPPROTO_DIVERT_INIT ideal-int pkg syscall (openbsd-386-cgo), const IPPROTO_DIVERT_RESP = 1 pkg syscall (openbsd-386-cgo), const IPPROTO_DIVERT_RESP ideal-int pkg syscall (openbsd-386-cgo), const IPV6_RECVDSTPORT = 64 pkg syscall (openbsd-386-cgo), const IPV6_RECVDSTPORT ideal-int pkg syscall (openbsd-386-cgo), const IP_DIVERTFL = 4130 pkg syscall (openbsd-386-cgo), const IP_DIVERTFL ideal-int pkg syscall (openbsd-386-cgo), const MADV_DONTNEED = 4 pkg syscall (openbsd-386-cgo), const MADV_DONTNEED ideal-int pkg syscall (openbsd-386-cgo), const MADV_FREE = 6 pkg syscall (openbsd-386-cgo), const MADV_FREE ideal-int pkg syscall (openbsd-386-cgo), const MADV_NORMAL = 0 pkg syscall (openbsd-386-cgo), const MADV_NORMAL ideal-int pkg syscall (openbsd-386-cgo), const MADV_RANDOM = 1 pkg syscall (openbsd-386-cgo), const MADV_RANDOM ideal-int pkg syscall (openbsd-386-cgo), const MADV_SEQUENTIAL = 2 pkg syscall (openbsd-386-cgo), const MADV_SEQUENTIAL ideal-int pkg syscall (openbsd-386-cgo), const MADV_SPACEAVAIL = 5 pkg syscall (openbsd-386-cgo), const MADV_SPACEAVAIL ideal-int pkg syscall (openbsd-386-cgo), const MADV_WILLNEED = 3 pkg syscall (openbsd-386-cgo), const MADV_WILLNEED ideal-int pkg syscall (openbsd-386-cgo), const MAP_ANON = 4096 pkg syscall (openbsd-386-cgo), const MAP_ANON ideal-int pkg syscall (openbsd-386-cgo), const MAP_COPY = 4 pkg syscall (openbsd-386-cgo), const MAP_COPY ideal-int pkg syscall (openbsd-386-cgo), const MAP_FILE = 0 pkg syscall (openbsd-386-cgo), const MAP_FILE ideal-int pkg syscall (openbsd-386-cgo), const MAP_FIXED = 16 pkg syscall (openbsd-386-cgo), const MAP_FIXED ideal-int pkg syscall (openbsd-386-cgo), const MAP_FLAGMASK = 8183 pkg syscall (openbsd-386-cgo), const MAP_FLAGMASK ideal-int pkg syscall (openbsd-386-cgo), const MAP_HASSEMAPHORE = 512 pkg syscall (openbsd-386-cgo), const MAP_HASSEMAPHORE ideal-int pkg syscall (openbsd-386-cgo), const MAP_INHERIT = 128 pkg syscall (openbsd-386-cgo), const MAP_INHERIT ideal-int pkg syscall (openbsd-386-cgo), const MAP_INHERIT_COPY = 1 pkg syscall (openbsd-386-cgo), const MAP_INHERIT_COPY ideal-int pkg syscall (openbsd-386-cgo), const MAP_INHERIT_DONATE_COPY = 3 pkg syscall (openbsd-386-cgo), const MAP_INHERIT_DONATE_COPY ideal-int pkg syscall (openbsd-386-cgo), const MAP_INHERIT_NONE = 2 pkg syscall (openbsd-386-cgo), const MAP_INHERIT_NONE ideal-int pkg syscall (openbsd-386-cgo), const MAP_INHERIT_SHARE = 0 pkg syscall (openbsd-386-cgo), const MAP_INHERIT_SHARE ideal-int pkg syscall (openbsd-386-cgo), const MAP_NOEXTEND = 256 pkg syscall (openbsd-386-cgo), const MAP_NOEXTEND ideal-int pkg syscall (openbsd-386-cgo), const MAP_NORESERVE = 64 pkg syscall (openbsd-386-cgo), const MAP_NORESERVE ideal-int pkg syscall (openbsd-386-cgo), const MAP_PRIVATE = 2 pkg syscall (openbsd-386-cgo), const MAP_PRIVATE ideal-int pkg syscall (openbsd-386-cgo), const MAP_RENAME = 32 pkg syscall (openbsd-386-cgo), const MAP_RENAME ideal-int pkg syscall (openbsd-386-cgo), const MAP_SHARED = 1 pkg syscall (openbsd-386-cgo), const MAP_SHARED ideal-int pkg syscall (openbsd-386-cgo), const MAP_TRYFIXED = 1024 pkg syscall (openbsd-386-cgo), const MAP_TRYFIXED ideal-int pkg syscall (openbsd-386-cgo), const MCL_CURRENT = 1 pkg syscall (openbsd-386-cgo), const MCL_CURRENT ideal-int pkg syscall (openbsd-386-cgo), const MCL_FUTURE = 2 pkg syscall (openbsd-386-cgo), const MCL_FUTURE ideal-int pkg syscall (openbsd-386-cgo), const MS_ASYNC = 1 pkg syscall (openbsd-386-cgo), const MS_ASYNC ideal-int pkg syscall (openbsd-386-cgo), const MS_INVALIDATE = 4 pkg syscall (openbsd-386-cgo), const MS_INVALIDATE ideal-int pkg syscall (openbsd-386-cgo), const MS_SYNC = 2 pkg syscall (openbsd-386-cgo), const MS_SYNC ideal-int pkg syscall (openbsd-386-cgo), const PROT_EXEC = 4 pkg syscall (openbsd-386-cgo), const PROT_EXEC ideal-int pkg syscall (openbsd-386-cgo), const PROT_NONE = 0 pkg syscall (openbsd-386-cgo), const PROT_NONE ideal-int pkg syscall (openbsd-386-cgo), const PROT_READ = 1 pkg syscall (openbsd-386-cgo), const PROT_READ ideal-int pkg syscall (openbsd-386-cgo), const PROT_WRITE = 2 pkg syscall (openbsd-386-cgo), const PROT_WRITE ideal-int pkg syscall (openbsd-386-cgo), const RTF_FMASK = 1112072 pkg syscall (openbsd-386-cgo), const RTM_VERSION = 5 pkg syscall (openbsd-386-cgo), const SIOCBRDGDADDR = 2166909255 pkg syscall (openbsd-386-cgo), const SIOCBRDGGPARAM = 3225184600 pkg syscall (openbsd-386-cgo), const SIOCBRDGSADDR = 3240651076 pkg syscall (openbsd-386-cgo), const SIOCGETVLAN = 3223349648 pkg syscall (openbsd-386-cgo), const SIOCGETVLAN ideal-int pkg syscall (openbsd-386-cgo), const SIOCGIFHARDMTU = 3223349669 pkg syscall (openbsd-386-cgo), const SIOCGIFHARDMTU ideal-int pkg syscall (openbsd-386-cgo), const SIOCGLIFPHYTTL = 3223349673 pkg syscall (openbsd-386-cgo), const SIOCGLIFPHYTTL ideal-int pkg syscall (openbsd-386-cgo), const SIOCGSPPPPARAMS = 3223349652 pkg syscall (openbsd-386-cgo), const SIOCGSPPPPARAMS ideal-int pkg syscall (openbsd-386-cgo), const SIOCGVNETID = 3223349671 pkg syscall (openbsd-386-cgo), const SIOCGVNETID ideal-int pkg syscall (openbsd-386-cgo), const SIOCSETVLAN = 2149607823 pkg syscall (openbsd-386-cgo), const SIOCSETVLAN ideal-int pkg syscall (openbsd-386-cgo), const SIOCSLIFPHYTTL = 2149607848 pkg syscall (openbsd-386-cgo), const SIOCSLIFPHYTTL ideal-int pkg syscall (openbsd-386-cgo), const SIOCSSPPPPARAMS = 2149607827 pkg syscall (openbsd-386-cgo), const SIOCSSPPPPARAMS ideal-int pkg syscall (openbsd-386-cgo), const SIOCSVNETID = 2149607846 pkg syscall (openbsd-386-cgo), const SIOCSVNETID ideal-int pkg syscall (openbsd-386-cgo), const SYS_CLOCK_GETRES = 89 pkg syscall (openbsd-386-cgo), const SYS_CLOCK_GETTIME = 87 pkg syscall (openbsd-386-cgo), const SYS_CLOCK_SETTIME = 88 pkg syscall (openbsd-386-cgo), const SYS_FHSTATFS = 65 pkg syscall (openbsd-386-cgo), const SYS_FSTAT = 53 pkg syscall (openbsd-386-cgo), const SYS_FSTATAT = 42 pkg syscall (openbsd-386-cgo), const SYS_FSTATFS = 64 pkg syscall (openbsd-386-cgo), const SYS_FUTIMENS = 85 pkg syscall (openbsd-386-cgo), const SYS_FUTIMES = 77 pkg syscall (openbsd-386-cgo), const SYS_GETDENTS = 99 pkg syscall (openbsd-386-cgo), const SYS_GETDENTS ideal-int pkg syscall (openbsd-386-cgo), const SYS_GETFSSTAT = 62 pkg syscall (openbsd-386-cgo), const SYS_GETITIMER = 70 pkg syscall (openbsd-386-cgo), const SYS_GETRUSAGE = 19 pkg syscall (openbsd-386-cgo), const SYS_GETTIMEOFDAY = 67 pkg syscall (openbsd-386-cgo), const SYS_KEVENT = 72 pkg syscall (openbsd-386-cgo), const SYS_LSTAT = 40 pkg syscall (openbsd-386-cgo), const SYS_NANOSLEEP = 91 pkg syscall (openbsd-386-cgo), const SYS_PPOLL = 109 pkg syscall (openbsd-386-cgo), const SYS_PPOLL ideal-int pkg syscall (openbsd-386-cgo), const SYS_PSELECT = 110 pkg syscall (openbsd-386-cgo), const SYS_PSELECT ideal-int pkg syscall (openbsd-386-cgo), const SYS_SELECT = 71 pkg syscall (openbsd-386-cgo), const SYS_SETITIMER = 69 pkg syscall (openbsd-386-cgo), const SYS_SETTIMEOFDAY = 68 pkg syscall (openbsd-386-cgo), const SYS_STAT = 38 pkg syscall (openbsd-386-cgo), const SYS_STATFS = 63 pkg syscall (openbsd-386-cgo), const SYS_UTIMENSAT = 84 pkg syscall (openbsd-386-cgo), const SYS_UTIMES = 76 pkg syscall (openbsd-386-cgo), const SYS_UTRACE = 209 pkg syscall (openbsd-386-cgo), const SYS_UTRACE ideal-int pkg syscall (openbsd-386-cgo), const SYS_WAIT4 = 11 pkg syscall (openbsd-386-cgo), const SYS___THRSLEEP = 94 pkg syscall (openbsd-386-cgo), const SizeofIfData = 212 pkg syscall (openbsd-386-cgo), const SizeofIfMsghdr = 236 pkg syscall (openbsd-386-cgo), const SizeofRtMetrics = 56 pkg syscall (openbsd-386-cgo), const SizeofRtMsghdr = 96 pkg syscall (openbsd-386-cgo), const TCP_NOPUSH = 16 pkg syscall (openbsd-386-cgo), const TCP_NOPUSH ideal-int pkg syscall (openbsd-386-cgo), const TIOCGSID = 1074033763 pkg syscall (openbsd-386-cgo), const TIOCGSID ideal-int pkg syscall (openbsd-386-cgo), const TIOCGTSTAMP = 1074558043 pkg syscall (openbsd-386-cgo), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (openbsd-386-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (openbsd-386-cgo), type Dirent struct, Fileno uint64 pkg syscall (openbsd-386-cgo), type Dirent struct, Off int64 pkg syscall (openbsd-386-cgo), type Dirent struct, X__d_padding [4]uint8 pkg syscall (openbsd-386-cgo), type FdSet struct, Bits [32]uint32 pkg syscall (openbsd-386-cgo), type Kevent_t struct, Data int64 pkg syscall (openbsd-386-cgo), type Mclpool struct, Grown int32 pkg syscall (openbsd-386-cgo), type RtMetrics struct, Expire int64 pkg syscall (openbsd-386-cgo), type RtMetrics struct, Pad uint32 pkg syscall (openbsd-386-cgo), type Stat_t struct, Ino uint64 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_ctime uint64 pkg syscall (openbsd-386-cgo), type Statfs_t struct, F_mntfromspec [90]int8 pkg syscall (openbsd-386-cgo), type Statfs_t struct, Pad_cgo_0 [2]uint8 pkg syscall (openbsd-386-cgo), type Termios struct pkg syscall (openbsd-386-cgo), type Termios struct, Cc [20]uint8 pkg syscall (openbsd-386-cgo), type Termios struct, Cflag uint32 pkg syscall (openbsd-386-cgo), type Termios struct, Iflag uint32 pkg syscall (openbsd-386-cgo), type Termios struct, Ispeed int32 pkg syscall (openbsd-386-cgo), type Termios struct, Lflag uint32 pkg syscall (openbsd-386-cgo), type Termios struct, Oflag uint32 pkg syscall (openbsd-386-cgo), type Termios struct, Ospeed int32 pkg syscall (openbsd-386-cgo), type Timespec struct, Sec int64 pkg syscall (openbsd-386-cgo), type Timeval struct, Sec int64 pkg syscall (openbsd-amd64), const IPPROTO_DIVERT_INIT = 2 pkg syscall (openbsd-amd64), const IPPROTO_DIVERT_INIT ideal-int pkg syscall (openbsd-amd64), const IPPROTO_DIVERT_RESP = 1 pkg syscall (openbsd-amd64), const IPPROTO_DIVERT_RESP ideal-int pkg syscall (openbsd-amd64), const IPV6_RECVDSTPORT = 64 pkg syscall (openbsd-amd64), const IPV6_RECVDSTPORT ideal-int pkg syscall (openbsd-amd64), const IP_DIVERTFL = 4130 pkg syscall (openbsd-amd64), const IP_DIVERTFL ideal-int pkg syscall (openbsd-amd64), const MADV_DONTNEED = 4 pkg syscall (openbsd-amd64), const MADV_DONTNEED ideal-int pkg syscall (openbsd-amd64), const MADV_FREE = 6 pkg syscall (openbsd-amd64), const MADV_FREE ideal-int pkg syscall (openbsd-amd64), const MADV_NORMAL = 0 pkg syscall (openbsd-amd64), const MADV_NORMAL ideal-int pkg syscall (openbsd-amd64), const MADV_RANDOM = 1 pkg syscall (openbsd-amd64), const MADV_RANDOM ideal-int pkg syscall (openbsd-amd64), const MADV_SEQUENTIAL = 2 pkg syscall (openbsd-amd64), const MADV_SEQUENTIAL ideal-int pkg syscall (openbsd-amd64), const MADV_SPACEAVAIL = 5 pkg syscall (openbsd-amd64), const MADV_SPACEAVAIL ideal-int pkg syscall (openbsd-amd64), const MADV_WILLNEED = 3 pkg syscall (openbsd-amd64), const MADV_WILLNEED ideal-int pkg syscall (openbsd-amd64), const MAP_ANON = 4096 pkg syscall (openbsd-amd64), const MAP_ANON ideal-int pkg syscall (openbsd-amd64), const MAP_COPY = 4 pkg syscall (openbsd-amd64), const MAP_COPY ideal-int pkg syscall (openbsd-amd64), const MAP_FILE = 0 pkg syscall (openbsd-amd64), const MAP_FILE ideal-int pkg syscall (openbsd-amd64), const MAP_FIXED = 16 pkg syscall (openbsd-amd64), const MAP_FIXED ideal-int pkg syscall (openbsd-amd64), const MAP_FLAGMASK = 8183 pkg syscall (openbsd-amd64), const MAP_FLAGMASK ideal-int pkg syscall (openbsd-amd64), const MAP_HASSEMAPHORE = 512 pkg syscall (openbsd-amd64), const MAP_HASSEMAPHORE ideal-int pkg syscall (openbsd-amd64), const MAP_INHERIT = 128 pkg syscall (openbsd-amd64), const MAP_INHERIT ideal-int pkg syscall (openbsd-amd64), const MAP_INHERIT_COPY = 1 pkg syscall (openbsd-amd64), const MAP_INHERIT_COPY ideal-int pkg syscall (openbsd-amd64), const MAP_INHERIT_DONATE_COPY = 3 pkg syscall (openbsd-amd64), const MAP_INHERIT_DONATE_COPY ideal-int pkg syscall (openbsd-amd64), const MAP_INHERIT_NONE = 2 pkg syscall (openbsd-amd64), const MAP_INHERIT_NONE ideal-int pkg syscall (openbsd-amd64), const MAP_INHERIT_SHARE = 0 pkg syscall (openbsd-amd64), const MAP_INHERIT_SHARE ideal-int pkg syscall (openbsd-amd64), const MAP_NOEXTEND = 256 pkg syscall (openbsd-amd64), const MAP_NOEXTEND ideal-int pkg syscall (openbsd-amd64), const MAP_NORESERVE = 64 pkg syscall (openbsd-amd64), const MAP_NORESERVE ideal-int pkg syscall (openbsd-amd64), const MAP_PRIVATE = 2 pkg syscall (openbsd-amd64), const MAP_PRIVATE ideal-int pkg syscall (openbsd-amd64), const MAP_RENAME = 32 pkg syscall (openbsd-amd64), const MAP_RENAME ideal-int pkg syscall (openbsd-amd64), const MAP_SHARED = 1 pkg syscall (openbsd-amd64), const MAP_SHARED ideal-int pkg syscall (openbsd-amd64), const MAP_TRYFIXED = 1024 pkg syscall (openbsd-amd64), const MAP_TRYFIXED ideal-int pkg syscall (openbsd-amd64), const MCL_CURRENT = 1 pkg syscall (openbsd-amd64), const MCL_CURRENT ideal-int pkg syscall (openbsd-amd64), const MCL_FUTURE = 2 pkg syscall (openbsd-amd64), const MCL_FUTURE ideal-int pkg syscall (openbsd-amd64), const MS_ASYNC = 1 pkg syscall (openbsd-amd64), const MS_ASYNC ideal-int pkg syscall (openbsd-amd64), const MS_INVALIDATE = 4 pkg syscall (openbsd-amd64), const MS_INVALIDATE ideal-int pkg syscall (openbsd-amd64), const MS_SYNC = 2 pkg syscall (openbsd-amd64), const MS_SYNC ideal-int pkg syscall (openbsd-amd64), const PROT_EXEC = 4 pkg syscall (openbsd-amd64), const PROT_EXEC ideal-int pkg syscall (openbsd-amd64), const PROT_NONE = 0 pkg syscall (openbsd-amd64), const PROT_NONE ideal-int pkg syscall (openbsd-amd64), const PROT_READ = 1 pkg syscall (openbsd-amd64), const PROT_READ ideal-int pkg syscall (openbsd-amd64), const PROT_WRITE = 2 pkg syscall (openbsd-amd64), const PROT_WRITE ideal-int pkg syscall (openbsd-amd64), const RTF_FMASK = 1112072 pkg syscall (openbsd-amd64), const RTM_VERSION = 5 pkg syscall (openbsd-amd64), const SIOCBRDGDADDR = 2166909255 pkg syscall (openbsd-amd64), const SIOCBRDGSADDR = 3240651076 pkg syscall (openbsd-amd64), const SIOCGETVLAN = 3223349648 pkg syscall (openbsd-amd64), const SIOCGETVLAN ideal-int pkg syscall (openbsd-amd64), const SIOCGIFHARDMTU = 3223349669 pkg syscall (openbsd-amd64), const SIOCGIFHARDMTU ideal-int pkg syscall (openbsd-amd64), const SIOCGLIFPHYTTL = 3223349673 pkg syscall (openbsd-amd64), const SIOCGLIFPHYTTL ideal-int pkg syscall (openbsd-amd64), const SIOCGSPPPPARAMS = 3223349652 pkg syscall (openbsd-amd64), const SIOCGSPPPPARAMS ideal-int pkg syscall (openbsd-amd64), const SIOCGVNETID = 3223349671 pkg syscall (openbsd-amd64), const SIOCGVNETID ideal-int pkg syscall (openbsd-amd64), const SIOCSETVLAN = 2149607823 pkg syscall (openbsd-amd64), const SIOCSETVLAN ideal-int pkg syscall (openbsd-amd64), const SIOCSLIFPHYTTL = 2149607848 pkg syscall (openbsd-amd64), const SIOCSLIFPHYTTL ideal-int pkg syscall (openbsd-amd64), const SIOCSSPPPPARAMS = 2149607827 pkg syscall (openbsd-amd64), const SIOCSSPPPPARAMS ideal-int pkg syscall (openbsd-amd64), const SIOCSVNETID = 2149607846 pkg syscall (openbsd-amd64), const SIOCSVNETID ideal-int pkg syscall (openbsd-amd64), const SYS_CLOCK_GETRES = 89 pkg syscall (openbsd-amd64), const SYS_CLOCK_GETTIME = 87 pkg syscall (openbsd-amd64), const SYS_CLOCK_SETTIME = 88 pkg syscall (openbsd-amd64), const SYS_FHSTATFS = 65 pkg syscall (openbsd-amd64), const SYS_FSTAT = 53 pkg syscall (openbsd-amd64), const SYS_FSTATAT = 42 pkg syscall (openbsd-amd64), const SYS_FSTATFS = 64 pkg syscall (openbsd-amd64), const SYS_FUTIMENS = 85 pkg syscall (openbsd-amd64), const SYS_FUTIMES = 77 pkg syscall (openbsd-amd64), const SYS_GETDENTS = 99 pkg syscall (openbsd-amd64), const SYS_GETDENTS ideal-int pkg syscall (openbsd-amd64), const SYS_GETFSSTAT = 62 pkg syscall (openbsd-amd64), const SYS_GETITIMER = 70 pkg syscall (openbsd-amd64), const SYS_GETRUSAGE = 19 pkg syscall (openbsd-amd64), const SYS_GETTIMEOFDAY = 67 pkg syscall (openbsd-amd64), const SYS_KEVENT = 72 pkg syscall (openbsd-amd64), const SYS_LSTAT = 40 pkg syscall (openbsd-amd64), const SYS_NANOSLEEP = 91 pkg syscall (openbsd-amd64), const SYS_PPOLL = 109 pkg syscall (openbsd-amd64), const SYS_PPOLL ideal-int pkg syscall (openbsd-amd64), const SYS_PSELECT = 110 pkg syscall (openbsd-amd64), const SYS_PSELECT ideal-int pkg syscall (openbsd-amd64), const SYS_SELECT = 71 pkg syscall (openbsd-amd64), const SYS_SETITIMER = 69 pkg syscall (openbsd-amd64), const SYS_SETTIMEOFDAY = 68 pkg syscall (openbsd-amd64), const SYS_STAT = 38 pkg syscall (openbsd-amd64), const SYS_STATFS = 63 pkg syscall (openbsd-amd64), const SYS_UTIMENSAT = 84 pkg syscall (openbsd-amd64), const SYS_UTIMES = 76 pkg syscall (openbsd-amd64), const SYS_UTRACE = 209 pkg syscall (openbsd-amd64), const SYS_UTRACE ideal-int pkg syscall (openbsd-amd64), const SYS_WAIT4 = 11 pkg syscall (openbsd-amd64), const SYS___THRSLEEP = 94 pkg syscall (openbsd-amd64), const SizeofRtMetrics = 56 pkg syscall (openbsd-amd64), const SizeofRtMsghdr = 96 pkg syscall (openbsd-amd64), const TCP_NOPUSH = 16 pkg syscall (openbsd-amd64), const TCP_NOPUSH ideal-int pkg syscall (openbsd-amd64), const TIOCGSID = 1074033763 pkg syscall (openbsd-amd64), const TIOCGSID ideal-int pkg syscall (openbsd-amd64), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (openbsd-amd64), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (openbsd-amd64), type Dirent struct, Fileno uint64 pkg syscall (openbsd-amd64), type Dirent struct, Off int64 pkg syscall (openbsd-amd64), type Dirent struct, X__d_padding [4]uint8 pkg syscall (openbsd-amd64), type FdSet struct, Bits [32]uint32 pkg syscall (openbsd-amd64), type Kevent_t struct, Data int64 pkg syscall (openbsd-amd64), type Kevent_t struct, Ident uint64 pkg syscall (openbsd-amd64), type Mclpool struct, Grown int32 pkg syscall (openbsd-amd64), type RtMetrics struct, Expire int64 pkg syscall (openbsd-amd64), type RtMetrics struct, Pad uint32 pkg syscall (openbsd-amd64), type Stat_t struct, Ino uint64 pkg syscall (openbsd-amd64), type Stat_t struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-amd64), type Statfs_t struct, F_ctime uint64 pkg syscall (openbsd-amd64), type Statfs_t struct, F_mntfromspec [90]int8 pkg syscall (openbsd-amd64), type Statfs_t struct, Pad_cgo_1 [2]uint8 pkg syscall (openbsd-amd64), type Termios struct pkg syscall (openbsd-amd64), type Termios struct, Cc [20]uint8 pkg syscall (openbsd-amd64), type Termios struct, Cflag uint32 pkg syscall (openbsd-amd64), type Termios struct, Iflag uint32 pkg syscall (openbsd-amd64), type Termios struct, Ispeed int32 pkg syscall (openbsd-amd64), type Termios struct, Lflag uint32 pkg syscall (openbsd-amd64), type Termios struct, Oflag uint32 pkg syscall (openbsd-amd64), type Termios struct, Ospeed int32 pkg syscall (openbsd-amd64), type Timespec struct, Sec int64 pkg syscall (openbsd-amd64-cgo), const IPPROTO_DIVERT_INIT = 2 pkg syscall (openbsd-amd64-cgo), const IPPROTO_DIVERT_INIT ideal-int pkg syscall (openbsd-amd64-cgo), const IPPROTO_DIVERT_RESP = 1 pkg syscall (openbsd-amd64-cgo), const IPPROTO_DIVERT_RESP ideal-int pkg syscall (openbsd-amd64-cgo), const IPV6_RECVDSTPORT = 64 pkg syscall (openbsd-amd64-cgo), const IPV6_RECVDSTPORT ideal-int pkg syscall (openbsd-amd64-cgo), const IP_DIVERTFL = 4130 pkg syscall (openbsd-amd64-cgo), const IP_DIVERTFL ideal-int pkg syscall (openbsd-amd64-cgo), const MADV_DONTNEED = 4 pkg syscall (openbsd-amd64-cgo), const MADV_DONTNEED ideal-int pkg syscall (openbsd-amd64-cgo), const MADV_FREE = 6 pkg syscall (openbsd-amd64-cgo), const MADV_FREE ideal-int pkg syscall (openbsd-amd64-cgo), const MADV_NORMAL = 0 pkg syscall (openbsd-amd64-cgo), const MADV_NORMAL ideal-int pkg syscall (openbsd-amd64-cgo), const MADV_RANDOM = 1 pkg syscall (openbsd-amd64-cgo), const MADV_RANDOM ideal-int pkg syscall (openbsd-amd64-cgo), const MADV_SEQUENTIAL = 2 pkg syscall (openbsd-amd64-cgo), const MADV_SEQUENTIAL ideal-int pkg syscall (openbsd-amd64-cgo), const MADV_SPACEAVAIL = 5 pkg syscall (openbsd-amd64-cgo), const MADV_SPACEAVAIL ideal-int pkg syscall (openbsd-amd64-cgo), const MADV_WILLNEED = 3 pkg syscall (openbsd-amd64-cgo), const MADV_WILLNEED ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_ANON = 4096 pkg syscall (openbsd-amd64-cgo), const MAP_ANON ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_COPY = 4 pkg syscall (openbsd-amd64-cgo), const MAP_COPY ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_FILE = 0 pkg syscall (openbsd-amd64-cgo), const MAP_FILE ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_FIXED = 16 pkg syscall (openbsd-amd64-cgo), const MAP_FIXED ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_FLAGMASK = 8183 pkg syscall (openbsd-amd64-cgo), const MAP_FLAGMASK ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_HASSEMAPHORE = 512 pkg syscall (openbsd-amd64-cgo), const MAP_HASSEMAPHORE ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_INHERIT = 128 pkg syscall (openbsd-amd64-cgo), const MAP_INHERIT ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_INHERIT_COPY = 1 pkg syscall (openbsd-amd64-cgo), const MAP_INHERIT_COPY ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_INHERIT_DONATE_COPY = 3 pkg syscall (openbsd-amd64-cgo), const MAP_INHERIT_DONATE_COPY ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_INHERIT_NONE = 2 pkg syscall (openbsd-amd64-cgo), const MAP_INHERIT_NONE ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_INHERIT_SHARE = 0 pkg syscall (openbsd-amd64-cgo), const MAP_INHERIT_SHARE ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_NOEXTEND = 256 pkg syscall (openbsd-amd64-cgo), const MAP_NOEXTEND ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_NORESERVE = 64 pkg syscall (openbsd-amd64-cgo), const MAP_NORESERVE ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_PRIVATE = 2 pkg syscall (openbsd-amd64-cgo), const MAP_PRIVATE ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_RENAME = 32 pkg syscall (openbsd-amd64-cgo), const MAP_RENAME ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_SHARED = 1 pkg syscall (openbsd-amd64-cgo), const MAP_SHARED ideal-int pkg syscall (openbsd-amd64-cgo), const MAP_TRYFIXED = 1024 pkg syscall (openbsd-amd64-cgo), const MAP_TRYFIXED ideal-int pkg syscall (openbsd-amd64-cgo), const MCL_CURRENT = 1 pkg syscall (openbsd-amd64-cgo), const MCL_CURRENT ideal-int pkg syscall (openbsd-amd64-cgo), const MCL_FUTURE = 2 pkg syscall (openbsd-amd64-cgo), const MCL_FUTURE ideal-int pkg syscall (openbsd-amd64-cgo), const MS_ASYNC = 1 pkg syscall (openbsd-amd64-cgo), const MS_ASYNC ideal-int pkg syscall (openbsd-amd64-cgo), const MS_INVALIDATE = 4 pkg syscall (openbsd-amd64-cgo), const MS_INVALIDATE ideal-int pkg syscall (openbsd-amd64-cgo), const MS_SYNC = 2 pkg syscall (openbsd-amd64-cgo), const MS_SYNC ideal-int pkg syscall (openbsd-amd64-cgo), const PROT_EXEC = 4 pkg syscall (openbsd-amd64-cgo), const PROT_EXEC ideal-int pkg syscall (openbsd-amd64-cgo), const PROT_NONE = 0 pkg syscall (openbsd-amd64-cgo), const PROT_NONE ideal-int pkg syscall (openbsd-amd64-cgo), const PROT_READ = 1 pkg syscall (openbsd-amd64-cgo), const PROT_READ ideal-int pkg syscall (openbsd-amd64-cgo), const PROT_WRITE = 2 pkg syscall (openbsd-amd64-cgo), const PROT_WRITE ideal-int pkg syscall (openbsd-amd64-cgo), const RTF_FMASK = 1112072 pkg syscall (openbsd-amd64-cgo), const RTM_VERSION = 5 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGDADDR = 2166909255 pkg syscall (openbsd-amd64-cgo), const SIOCBRDGSADDR = 3240651076 pkg syscall (openbsd-amd64-cgo), const SIOCGETVLAN = 3223349648 pkg syscall (openbsd-amd64-cgo), const SIOCGETVLAN ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGIFHARDMTU = 3223349669 pkg syscall (openbsd-amd64-cgo), const SIOCGIFHARDMTU ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGLIFPHYTTL = 3223349673 pkg syscall (openbsd-amd64-cgo), const SIOCGLIFPHYTTL ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGSPPPPARAMS = 3223349652 pkg syscall (openbsd-amd64-cgo), const SIOCGSPPPPARAMS ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCGVNETID = 3223349671 pkg syscall (openbsd-amd64-cgo), const SIOCGVNETID ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSETVLAN = 2149607823 pkg syscall (openbsd-amd64-cgo), const SIOCSETVLAN ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSLIFPHYTTL = 2149607848 pkg syscall (openbsd-amd64-cgo), const SIOCSLIFPHYTTL ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSSPPPPARAMS = 2149607827 pkg syscall (openbsd-amd64-cgo), const SIOCSSPPPPARAMS ideal-int pkg syscall (openbsd-amd64-cgo), const SIOCSVNETID = 2149607846 pkg syscall (openbsd-amd64-cgo), const SIOCSVNETID ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_CLOCK_GETRES = 89 pkg syscall (openbsd-amd64-cgo), const SYS_CLOCK_GETTIME = 87 pkg syscall (openbsd-amd64-cgo), const SYS_CLOCK_SETTIME = 88 pkg syscall (openbsd-amd64-cgo), const SYS_FHSTATFS = 65 pkg syscall (openbsd-amd64-cgo), const SYS_FSTAT = 53 pkg syscall (openbsd-amd64-cgo), const SYS_FSTATAT = 42 pkg syscall (openbsd-amd64-cgo), const SYS_FSTATFS = 64 pkg syscall (openbsd-amd64-cgo), const SYS_FUTIMENS = 85 pkg syscall (openbsd-amd64-cgo), const SYS_FUTIMES = 77 pkg syscall (openbsd-amd64-cgo), const SYS_GETDENTS = 99 pkg syscall (openbsd-amd64-cgo), const SYS_GETDENTS ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_GETFSSTAT = 62 pkg syscall (openbsd-amd64-cgo), const SYS_GETITIMER = 70 pkg syscall (openbsd-amd64-cgo), const SYS_GETRUSAGE = 19 pkg syscall (openbsd-amd64-cgo), const SYS_GETTIMEOFDAY = 67 pkg syscall (openbsd-amd64-cgo), const SYS_KEVENT = 72 pkg syscall (openbsd-amd64-cgo), const SYS_LSTAT = 40 pkg syscall (openbsd-amd64-cgo), const SYS_NANOSLEEP = 91 pkg syscall (openbsd-amd64-cgo), const SYS_PPOLL = 109 pkg syscall (openbsd-amd64-cgo), const SYS_PPOLL ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_PSELECT = 110 pkg syscall (openbsd-amd64-cgo), const SYS_PSELECT ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_SELECT = 71 pkg syscall (openbsd-amd64-cgo), const SYS_SETITIMER = 69 pkg syscall (openbsd-amd64-cgo), const SYS_SETTIMEOFDAY = 68 pkg syscall (openbsd-amd64-cgo), const SYS_STAT = 38 pkg syscall (openbsd-amd64-cgo), const SYS_STATFS = 63 pkg syscall (openbsd-amd64-cgo), const SYS_UTIMENSAT = 84 pkg syscall (openbsd-amd64-cgo), const SYS_UTIMES = 76 pkg syscall (openbsd-amd64-cgo), const SYS_UTRACE = 209 pkg syscall (openbsd-amd64-cgo), const SYS_UTRACE ideal-int pkg syscall (openbsd-amd64-cgo), const SYS_WAIT4 = 11 pkg syscall (openbsd-amd64-cgo), const SYS___THRSLEEP = 94 pkg syscall (openbsd-amd64-cgo), const SizeofRtMetrics = 56 pkg syscall (openbsd-amd64-cgo), const SizeofRtMsghdr = 96 pkg syscall (openbsd-amd64-cgo), const TCP_NOPUSH = 16 pkg syscall (openbsd-amd64-cgo), const TCP_NOPUSH ideal-int pkg syscall (openbsd-amd64-cgo), const TIOCGSID = 1074033763 pkg syscall (openbsd-amd64-cgo), const TIOCGSID ideal-int pkg syscall (openbsd-amd64-cgo), func FcntlFlock(uintptr, int, *Flock_t) error pkg syscall (openbsd-amd64-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) pkg syscall (openbsd-amd64-cgo), type Dirent struct, Fileno uint64 pkg syscall (openbsd-amd64-cgo), type Dirent struct, Off int64 pkg syscall (openbsd-amd64-cgo), type Dirent struct, X__d_padding [4]uint8 pkg syscall (openbsd-amd64-cgo), type FdSet struct, Bits [32]uint32 pkg syscall (openbsd-amd64-cgo), type Kevent_t struct, Data int64 pkg syscall (openbsd-amd64-cgo), type Kevent_t struct, Ident uint64 pkg syscall (openbsd-amd64-cgo), type Mclpool struct, Grown int32 pkg syscall (openbsd-amd64-cgo), type RtMetrics struct, Expire int64 pkg syscall (openbsd-amd64-cgo), type RtMetrics struct, Pad uint32 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Ino uint64 pkg syscall (openbsd-amd64-cgo), type Stat_t struct, Pad_cgo_0 [4]uint8 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_ctime uint64 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, F_mntfromspec [90]int8 pkg syscall (openbsd-amd64-cgo), type Statfs_t struct, Pad_cgo_1 [2]uint8 pkg syscall (openbsd-amd64-cgo), type Termios struct pkg syscall (openbsd-amd64-cgo), type Termios struct, Cc [20]uint8 pkg syscall (openbsd-amd64-cgo), type Termios struct, Cflag uint32 pkg syscall (openbsd-amd64-cgo), type Termios struct, Iflag uint32 pkg syscall (openbsd-amd64-cgo), type Termios struct, Ispeed int32 pkg syscall (openbsd-amd64-cgo), type Termios struct, Lflag uint32 pkg syscall (openbsd-amd64-cgo), type Termios struct, Oflag uint32 pkg syscall (openbsd-amd64-cgo), type Termios struct, Ospeed int32 pkg syscall (openbsd-amd64-cgo), type Timespec struct, Sec int64 pkg syscall (windows-386), const ERROR_MORE_DATA = 234 pkg syscall (windows-386), const ERROR_MORE_DATA Errno pkg syscall (windows-386), const ERROR_NETNAME_DELETED = 64 pkg syscall (windows-386), const ERROR_NETNAME_DELETED Errno pkg syscall (windows-386), const IOC_VENDOR = 402653184 pkg syscall (windows-386), const IOC_VENDOR ideal-int pkg syscall (windows-386), const SIO_KEEPALIVE_VALS = 2550136836 pkg syscall (windows-386), const SIO_KEEPALIVE_VALS ideal-int pkg syscall (windows-386), const WSAECONNRESET = 10054 pkg syscall (windows-386), const WSAECONNRESET Errno pkg syscall (windows-386), func NewCallbackCDecl(interface{}) uintptr pkg syscall (windows-386), type TCPKeepalive struct pkg syscall (windows-386), type TCPKeepalive struct, Interval uint32 pkg syscall (windows-386), type TCPKeepalive struct, OnOff uint32 pkg syscall (windows-386), type TCPKeepalive struct, Time uint32 pkg syscall (windows-amd64), const ERROR_MORE_DATA = 234 pkg syscall (windows-amd64), const ERROR_MORE_DATA Errno pkg syscall (windows-amd64), const ERROR_NETNAME_DELETED = 64 pkg syscall (windows-amd64), const ERROR_NETNAME_DELETED Errno pkg syscall (windows-amd64), const IOC_VENDOR = 402653184 pkg syscall (windows-amd64), const IOC_VENDOR ideal-int pkg syscall (windows-amd64), const SIO_KEEPALIVE_VALS = 2550136836 pkg syscall (windows-amd64), const SIO_KEEPALIVE_VALS ideal-int pkg syscall (windows-amd64), const WSAECONNRESET = 10054 pkg syscall (windows-amd64), const WSAECONNRESET Errno pkg syscall (windows-amd64), func NewCallbackCDecl(interface{}) uintptr pkg syscall (windows-amd64), type TCPKeepalive struct pkg syscall (windows-amd64), type TCPKeepalive struct, Interval uint32 pkg syscall (windows-amd64), type TCPKeepalive struct, OnOff uint32 pkg syscall (windows-amd64), type TCPKeepalive struct, Time uint32 pkg testing, method (*B) RunParallel(func(*PB)) pkg testing, method (*B) SetParallelism(int) pkg testing, method (*PB) Next() bool pkg testing, type PB struct pkg unicode, const Version = "6.3.0" go/api/go1.txt0100644000000000000000000655513612412656734013521 0ustar00rootroot00000000000000pkg archive/tar, const TypeBlock ideal-char pkg archive/tar, const TypeChar ideal-char pkg archive/tar, const TypeCont ideal-char pkg archive/tar, const TypeDir ideal-char pkg archive/tar, const TypeFifo ideal-char pkg archive/tar, const TypeLink ideal-char pkg archive/tar, const TypeReg ideal-char pkg archive/tar, const TypeRegA ideal-char pkg archive/tar, const TypeSymlink ideal-char pkg archive/tar, const TypeXGlobalHeader ideal-char pkg archive/tar, const TypeXHeader ideal-char pkg archive/tar, func NewReader(io.Reader) *Reader pkg archive/tar, func NewWriter(io.Writer) *Writer pkg archive/tar, method (*Reader) Next() (*Header, error) pkg archive/tar, method (*Reader) Read([]uint8) (int, error) pkg archive/tar, method (*Writer) Close() error pkg archive/tar, method (*Writer) Flush() error pkg archive/tar, method (*Writer) Write([]uint8) (int, error) pkg archive/tar, method (*Writer) WriteHeader(*Header) error pkg archive/tar, type Header struct pkg archive/tar, type Header struct, AccessTime time.Time pkg archive/tar, type Header struct, ChangeTime time.Time pkg archive/tar, type Header struct, Devmajor int64 pkg archive/tar, type Header struct, Devminor int64 pkg archive/tar, type Header struct, Gid int pkg archive/tar, type Header struct, Gname string pkg archive/tar, type Header struct, Linkname string pkg archive/tar, type Header struct, ModTime time.Time pkg archive/tar, type Header struct, Mode int64 pkg archive/tar, type Header struct, Name string pkg archive/tar, type Header struct, Size int64 pkg archive/tar, type Header struct, Typeflag uint8 pkg archive/tar, type Header struct, Uid int pkg archive/tar, type Header struct, Uname string pkg archive/tar, type Reader struct pkg archive/tar, type Writer struct pkg archive/tar, var ErrFieldTooLong error pkg archive/tar, var ErrHeader error pkg archive/tar, var ErrWriteAfterClose error pkg archive/tar, var ErrWriteTooLong error pkg archive/zip, const Deflate uint16 pkg archive/zip, const Store uint16 pkg archive/zip, func FileInfoHeader(os.FileInfo) (*FileHeader, error) pkg archive/zip, func NewReader(io.ReaderAt, int64) (*Reader, error) pkg archive/zip, func NewWriter(io.Writer) *Writer pkg archive/zip, func OpenReader(string) (*ReadCloser, error) pkg archive/zip, method (*File) FileInfo() os.FileInfo pkg archive/zip, method (*File) ModTime() time.Time pkg archive/zip, method (*File) Mode() os.FileMode pkg archive/zip, method (*File) Open() (io.ReadCloser, error) pkg archive/zip, method (*File) SetModTime(time.Time) pkg archive/zip, method (*File) SetMode(os.FileMode) pkg archive/zip, method (*FileHeader) FileInfo() os.FileInfo pkg archive/zip, method (*FileHeader) ModTime() time.Time pkg archive/zip, method (*FileHeader) Mode() os.FileMode pkg archive/zip, method (*FileHeader) SetModTime(time.Time) pkg archive/zip, method (*FileHeader) SetMode(os.FileMode) pkg archive/zip, method (*ReadCloser) Close() error pkg archive/zip, method (*Writer) Close() error pkg archive/zip, method (*Writer) Create(string) (io.Writer, error) pkg archive/zip, method (*Writer) CreateHeader(*FileHeader) (io.Writer, error) pkg archive/zip, type File struct pkg archive/zip, type File struct, embedded FileHeader pkg archive/zip, type FileHeader struct pkg archive/zip, type FileHeader struct, CRC32 uint32 pkg archive/zip, type FileHeader struct, Comment string pkg archive/zip, type FileHeader struct, CompressedSize uint32 pkg archive/zip, type FileHeader struct, CreatorVersion uint16 pkg archive/zip, type FileHeader struct, ExternalAttrs uint32 pkg archive/zip, type FileHeader struct, Extra []uint8 pkg archive/zip, type FileHeader struct, Flags uint16 pkg archive/zip, type FileHeader struct, Method uint16 pkg archive/zip, type FileHeader struct, ModifiedDate uint16 pkg archive/zip, type FileHeader struct, ModifiedTime uint16 pkg archive/zip, type FileHeader struct, Name string pkg archive/zip, type FileHeader struct, ReaderVersion uint16 pkg archive/zip, type FileHeader struct, UncompressedSize uint32 pkg archive/zip, type ReadCloser struct pkg archive/zip, type ReadCloser struct, embedded Reader pkg archive/zip, type Reader struct pkg archive/zip, type Reader struct, Comment string pkg archive/zip, type Reader struct, File []*File pkg archive/zip, type Writer struct pkg archive/zip, var ErrAlgorithm error pkg archive/zip, var ErrChecksum error pkg archive/zip, var ErrFormat error pkg bufio, func NewReadWriter(*Reader, *Writer) *ReadWriter pkg bufio, func NewReader(io.Reader) *Reader pkg bufio, func NewReaderSize(io.Reader, int) *Reader pkg bufio, func NewWriter(io.Writer) *Writer pkg bufio, func NewWriterSize(io.Writer, int) *Writer pkg bufio, method (*Reader) Buffered() int pkg bufio, method (*Reader) Peek(int) ([]uint8, error) pkg bufio, method (*Reader) Read([]uint8) (int, error) pkg bufio, method (*Reader) ReadByte() (uint8, error) pkg bufio, method (*Reader) ReadBytes(uint8) ([]uint8, error) pkg bufio, method (*Reader) ReadLine() ([]uint8, bool, error) pkg bufio, method (*Reader) ReadRune() (int32, int, error) pkg bufio, method (*Reader) ReadSlice(uint8) ([]uint8, error) pkg bufio, method (*Reader) ReadString(uint8) (string, error) pkg bufio, method (*Reader) UnreadByte() error pkg bufio, method (*Reader) UnreadRune() error pkg bufio, method (*Writer) Available() int pkg bufio, method (*Writer) Buffered() int pkg bufio, method (*Writer) Flush() error pkg bufio, method (*Writer) Write([]uint8) (int, error) pkg bufio, method (*Writer) WriteByte(uint8) error pkg bufio, method (*Writer) WriteRune(int32) (int, error) pkg bufio, method (*Writer) WriteString(string) (int, error) pkg bufio, method (ReadWriter) Available() int pkg bufio, method (ReadWriter) Flush() error pkg bufio, method (ReadWriter) Peek(int) ([]uint8, error) pkg bufio, method (ReadWriter) Read([]uint8) (int, error) pkg bufio, method (ReadWriter) ReadByte() (uint8, error) pkg bufio, method (ReadWriter) ReadBytes(uint8) ([]uint8, error) pkg bufio, method (ReadWriter) ReadLine() ([]uint8, bool, error) pkg bufio, method (ReadWriter) ReadRune() (int32, int, error) pkg bufio, method (ReadWriter) ReadSlice(uint8) ([]uint8, error) pkg bufio, method (ReadWriter) ReadString(uint8) (string, error) pkg bufio, method (ReadWriter) UnreadByte() error pkg bufio, method (ReadWriter) UnreadRune() error pkg bufio, method (ReadWriter) Write([]uint8) (int, error) pkg bufio, method (ReadWriter) WriteByte(uint8) error pkg bufio, method (ReadWriter) WriteRune(int32) (int, error) pkg bufio, method (ReadWriter) WriteString(string) (int, error) pkg bufio, type ReadWriter struct pkg bufio, type ReadWriter struct, embedded *Reader pkg bufio, type ReadWriter struct, embedded *Writer pkg bufio, type Reader struct pkg bufio, type Writer struct pkg bufio, var ErrBufferFull error pkg bufio, var ErrInvalidUnreadByte error pkg bufio, var ErrInvalidUnreadRune error pkg bufio, var ErrNegativeCount error pkg bytes, const MinRead ideal-int pkg bytes, func Compare([]uint8, []uint8) int pkg bytes, func Contains([]uint8, []uint8) bool pkg bytes, func Count([]uint8, []uint8) int pkg bytes, func Equal([]uint8, []uint8) bool pkg bytes, func EqualFold([]uint8, []uint8) bool pkg bytes, func Fields([]uint8) [][]uint8 pkg bytes, func FieldsFunc([]uint8, func(int32) bool) [][]uint8 pkg bytes, func HasPrefix([]uint8, []uint8) bool pkg bytes, func HasSuffix([]uint8, []uint8) bool pkg bytes, func Index([]uint8, []uint8) int pkg bytes, func IndexAny([]uint8, string) int pkg bytes, func IndexByte([]uint8, uint8) int pkg bytes, func IndexFunc([]uint8, func(int32) bool) int pkg bytes, func IndexRune([]uint8, int32) int pkg bytes, func Join([][]uint8, []uint8) []uint8 pkg bytes, func LastIndex([]uint8, []uint8) int pkg bytes, func LastIndexAny([]uint8, string) int pkg bytes, func LastIndexFunc([]uint8, func(int32) bool) int pkg bytes, func Map(func(int32) int32, []uint8) []uint8 pkg bytes, func NewBuffer([]uint8) *Buffer pkg bytes, func NewBufferString(string) *Buffer pkg bytes, func NewReader([]uint8) *Reader pkg bytes, func Repeat([]uint8, int) []uint8 pkg bytes, func Replace([]uint8, []uint8, []uint8, int) []uint8 pkg bytes, func Runes([]uint8) []int32 pkg bytes, func Split([]uint8, []uint8) [][]uint8 pkg bytes, func SplitAfter([]uint8, []uint8) [][]uint8 pkg bytes, func SplitAfterN([]uint8, []uint8, int) [][]uint8 pkg bytes, func SplitN([]uint8, []uint8, int) [][]uint8 pkg bytes, func Title([]uint8) []uint8 pkg bytes, func ToLower([]uint8) []uint8 pkg bytes, func ToLowerSpecial(unicode.SpecialCase, []uint8) []uint8 pkg bytes, func ToTitle([]uint8) []uint8 pkg bytes, func ToTitleSpecial(unicode.SpecialCase, []uint8) []uint8 pkg bytes, func ToUpper([]uint8) []uint8 pkg bytes, func ToUpperSpecial(unicode.SpecialCase, []uint8) []uint8 pkg bytes, func Trim([]uint8, string) []uint8 pkg bytes, func TrimFunc([]uint8, func(int32) bool) []uint8 pkg bytes, func TrimLeft([]uint8, string) []uint8 pkg bytes, func TrimLeftFunc([]uint8, func(int32) bool) []uint8 pkg bytes, func TrimRight([]uint8, string) []uint8 pkg bytes, func TrimRightFunc([]uint8, func(int32) bool) []uint8 pkg bytes, func TrimSpace([]uint8) []uint8 pkg bytes, method (*Buffer) Bytes() []uint8 pkg bytes, method (*Buffer) Len() int pkg bytes, method (*Buffer) Next(int) []uint8 pkg bytes, method (*Buffer) Read([]uint8) (int, error) pkg bytes, method (*Buffer) ReadByte() (uint8, error) pkg bytes, method (*Buffer) ReadBytes(uint8) ([]uint8, error) pkg bytes, method (*Buffer) ReadFrom(io.Reader) (int64, error) pkg bytes, method (*Buffer) ReadRune() (int32, int, error) pkg bytes, method (*Buffer) ReadString(uint8) (string, error) pkg bytes, method (*Buffer) Reset() pkg bytes, method (*Buffer) String() string pkg bytes, method (*Buffer) Truncate(int) pkg bytes, method (*Buffer) UnreadByte() error pkg bytes, method (*Buffer) UnreadRune() error pkg bytes, method (*Buffer) Write([]uint8) (int, error) pkg bytes, method (*Buffer) WriteByte(uint8) error pkg bytes, method (*Buffer) WriteRune(int32) (int, error) pkg bytes, method (*Buffer) WriteString(string) (int, error) pkg bytes, method (*Buffer) WriteTo(io.Writer) (int64, error) pkg bytes, method (*Reader) Len() int pkg bytes, method (*Reader) Read([]uint8) (int, error) pkg bytes, method (*Reader) ReadAt([]uint8, int64) (int, error) pkg bytes, method (*Reader) ReadByte() (uint8, error) pkg bytes, method (*Reader) ReadRune() (int32, int, error) pkg bytes, method (*Reader) Seek(int64, int) (int64, error) pkg bytes, method (*Reader) UnreadByte() error pkg bytes, method (*Reader) UnreadRune() error pkg bytes, type Buffer struct pkg bytes, type Reader struct pkg bytes, var ErrTooLarge error pkg compress/bzip2, func NewReader(io.Reader) io.Reader pkg compress/bzip2, method (StructuralError) Error() string pkg compress/bzip2, type StructuralError string pkg compress/flate, const BestCompression ideal-int pkg compress/flate, const BestSpeed ideal-int pkg compress/flate, const DefaultCompression ideal-int pkg compress/flate, const NoCompression ideal-int pkg compress/flate, func NewReader(io.Reader) io.ReadCloser pkg compress/flate, func NewReaderDict(io.Reader, []uint8) io.ReadCloser pkg compress/flate, func NewWriter(io.Writer, int) (*Writer, error) pkg compress/flate, func NewWriterDict(io.Writer, int, []uint8) (*Writer, error) pkg compress/flate, method (*ReadError) Error() string pkg compress/flate, method (*WriteError) Error() string pkg compress/flate, method (*Writer) Close() error pkg compress/flate, method (*Writer) Flush() error pkg compress/flate, method (*Writer) Write([]uint8) (int, error) pkg compress/flate, method (CorruptInputError) Error() string pkg compress/flate, method (InternalError) Error() string pkg compress/flate, type CorruptInputError int64 pkg compress/flate, type InternalError string pkg compress/flate, type ReadError struct pkg compress/flate, type ReadError struct, Err error pkg compress/flate, type ReadError struct, Offset int64 pkg compress/flate, type Reader interface { Read, ReadByte } pkg compress/flate, type Reader interface, Read([]uint8) (int, error) pkg compress/flate, type Reader interface, ReadByte() (uint8, error) pkg compress/flate, type WriteError struct pkg compress/flate, type WriteError struct, Err error pkg compress/flate, type WriteError struct, Offset int64 pkg compress/flate, type Writer struct pkg compress/gzip, const BestCompression ideal-int pkg compress/gzip, const BestSpeed ideal-int pkg compress/gzip, const DefaultCompression ideal-int pkg compress/gzip, const NoCompression ideal-int pkg compress/gzip, func NewReader(io.Reader) (*Reader, error) pkg compress/gzip, func NewWriter(io.Writer) *Writer pkg compress/gzip, func NewWriterLevel(io.Writer, int) (*Writer, error) pkg compress/gzip, method (*Reader) Close() error pkg compress/gzip, method (*Reader) Read([]uint8) (int, error) pkg compress/gzip, method (*Writer) Close() error pkg compress/gzip, method (*Writer) Write([]uint8) (int, error) pkg compress/gzip, type Header struct pkg compress/gzip, type Header struct, Comment string pkg compress/gzip, type Header struct, Extra []uint8 pkg compress/gzip, type Header struct, ModTime time.Time pkg compress/gzip, type Header struct, Name string pkg compress/gzip, type Header struct, OS uint8 pkg compress/gzip, type Reader struct pkg compress/gzip, type Reader struct, embedded Header pkg compress/gzip, type Writer struct pkg compress/gzip, type Writer struct, embedded Header pkg compress/gzip, var ErrChecksum error pkg compress/gzip, var ErrHeader error pkg compress/lzw, const LSB Order pkg compress/lzw, const MSB Order pkg compress/lzw, func NewReader(io.Reader, Order, int) io.ReadCloser pkg compress/lzw, func NewWriter(io.Writer, Order, int) io.WriteCloser pkg compress/lzw, type Order int pkg compress/zlib, const BestCompression ideal-int pkg compress/zlib, const BestSpeed ideal-int pkg compress/zlib, const DefaultCompression ideal-int pkg compress/zlib, const NoCompression ideal-int pkg compress/zlib, func NewReader(io.Reader) (io.ReadCloser, error) pkg compress/zlib, func NewReaderDict(io.Reader, []uint8) (io.ReadCloser, error) pkg compress/zlib, func NewWriter(io.Writer) *Writer pkg compress/zlib, func NewWriterLevel(io.Writer, int) (*Writer, error) pkg compress/zlib, func NewWriterLevelDict(io.Writer, int, []uint8) (*Writer, error) pkg compress/zlib, method (*Writer) Close() error pkg compress/zlib, method (*Writer) Flush() error pkg compress/zlib, method (*Writer) Write([]uint8) (int, error) pkg compress/zlib, type Writer struct pkg compress/zlib, var ErrChecksum error pkg compress/zlib, var ErrDictionary error pkg compress/zlib, var ErrHeader error pkg container/heap, func Init(Interface) pkg container/heap, func Pop(Interface) interface{} pkg container/heap, func Push(Interface, interface{}) pkg container/heap, func Remove(Interface, int) interface{} pkg container/heap, type Interface interface { Len, Less, Pop, Push, Swap } pkg container/heap, type Interface interface, Len() int pkg container/heap, type Interface interface, Less(int, int) bool pkg container/heap, type Interface interface, Pop() interface{} pkg container/heap, type Interface interface, Push(interface{}) pkg container/heap, type Interface interface, Swap(int, int) pkg container/list, func New() *List pkg container/list, method (*Element) Next() *Element pkg container/list, method (*Element) Prev() *Element pkg container/list, method (*List) Back() *Element pkg container/list, method (*List) Front() *Element pkg container/list, method (*List) Init() *List pkg container/list, method (*List) InsertAfter(interface{}, *Element) *Element pkg container/list, method (*List) InsertBefore(interface{}, *Element) *Element pkg container/list, method (*List) Len() int pkg container/list, method (*List) MoveToBack(*Element) pkg container/list, method (*List) MoveToFront(*Element) pkg container/list, method (*List) PushBack(interface{}) *Element pkg container/list, method (*List) PushBackList(*List) pkg container/list, method (*List) PushFront(interface{}) *Element pkg container/list, method (*List) PushFrontList(*List) pkg container/list, method (*List) Remove(*Element) interface{} pkg container/list, type Element struct pkg container/list, type Element struct, Value interface{} pkg container/list, type List struct pkg container/ring, func New(int) *Ring pkg container/ring, method (*Ring) Do(func(interface{})) pkg container/ring, method (*Ring) Len() int pkg container/ring, method (*Ring) Link(*Ring) *Ring pkg container/ring, method (*Ring) Move(int) *Ring pkg container/ring, method (*Ring) Next() *Ring pkg container/ring, method (*Ring) Prev() *Ring pkg container/ring, method (*Ring) Unlink(int) *Ring pkg container/ring, type Ring struct pkg container/ring, type Ring struct, Value interface{} pkg crypto, const MD4 Hash pkg crypto, const MD5 Hash pkg crypto, const MD5SHA1 Hash pkg crypto, const RIPEMD160 Hash pkg crypto, const SHA1 Hash pkg crypto, const SHA224 Hash pkg crypto, const SHA256 Hash pkg crypto, const SHA384 Hash pkg crypto, const SHA512 Hash pkg crypto, func RegisterHash(Hash, func() hash.Hash) pkg crypto, method (Hash) Available() bool pkg crypto, method (Hash) New() hash.Hash pkg crypto, method (Hash) Size() int pkg crypto, type Hash uint pkg crypto, type PrivateKey interface {} pkg crypto/aes, const BlockSize ideal-int pkg crypto/aes, func NewCipher([]uint8) (cipher.Block, error) pkg crypto/aes, method (KeySizeError) Error() string pkg crypto/aes, type KeySizeError int pkg crypto/cipher, func NewCBCDecrypter(Block, []uint8) BlockMode pkg crypto/cipher, func NewCBCEncrypter(Block, []uint8) BlockMode pkg crypto/cipher, func NewCFBDecrypter(Block, []uint8) Stream pkg crypto/cipher, func NewCFBEncrypter(Block, []uint8) Stream pkg crypto/cipher, func NewCTR(Block, []uint8) Stream pkg crypto/cipher, func NewOFB(Block, []uint8) Stream pkg crypto/cipher, method (StreamReader) Read([]uint8) (int, error) pkg crypto/cipher, method (StreamWriter) Close() error pkg crypto/cipher, method (StreamWriter) Write([]uint8) (int, error) pkg crypto/cipher, type Block interface { BlockSize, Decrypt, Encrypt } pkg crypto/cipher, type Block interface, BlockSize() int pkg crypto/cipher, type Block interface, Decrypt([]uint8, []uint8) pkg crypto/cipher, type Block interface, Encrypt([]uint8, []uint8) pkg crypto/cipher, type BlockMode interface { BlockSize, CryptBlocks } pkg crypto/cipher, type BlockMode interface, BlockSize() int pkg crypto/cipher, type BlockMode interface, CryptBlocks([]uint8, []uint8) pkg crypto/cipher, type Stream interface { XORKeyStream } pkg crypto/cipher, type Stream interface, XORKeyStream([]uint8, []uint8) pkg crypto/cipher, type StreamReader struct pkg crypto/cipher, type StreamReader struct, R io.Reader pkg crypto/cipher, type StreamReader struct, S Stream pkg crypto/cipher, type StreamWriter struct pkg crypto/cipher, type StreamWriter struct, Err error pkg crypto/cipher, type StreamWriter struct, S Stream pkg crypto/cipher, type StreamWriter struct, W io.Writer pkg crypto/des, const BlockSize ideal-int pkg crypto/des, func NewCipher([]uint8) (cipher.Block, error) pkg crypto/des, func NewTripleDESCipher([]uint8) (cipher.Block, error) pkg crypto/des, method (KeySizeError) Error() string pkg crypto/des, type KeySizeError int pkg crypto/dsa, const L1024N160 ParameterSizes pkg crypto/dsa, const L2048N224 ParameterSizes pkg crypto/dsa, const L2048N256 ParameterSizes pkg crypto/dsa, const L3072N256 ParameterSizes pkg crypto/dsa, func GenerateKey(*PrivateKey, io.Reader) error pkg crypto/dsa, func GenerateParameters(*Parameters, io.Reader, ParameterSizes) error pkg crypto/dsa, func Sign(io.Reader, *PrivateKey, []uint8) (*big.Int, *big.Int, error) pkg crypto/dsa, func Verify(*PublicKey, []uint8, *big.Int, *big.Int) bool pkg crypto/dsa, type ParameterSizes int pkg crypto/dsa, type Parameters struct pkg crypto/dsa, type Parameters struct, G *big.Int pkg crypto/dsa, type Parameters struct, P *big.Int pkg crypto/dsa, type Parameters struct, Q *big.Int pkg crypto/dsa, type PrivateKey struct pkg crypto/dsa, type PrivateKey struct, X *big.Int pkg crypto/dsa, type PrivateKey struct, embedded PublicKey pkg crypto/dsa, type PublicKey struct pkg crypto/dsa, type PublicKey struct, Y *big.Int pkg crypto/dsa, type PublicKey struct, embedded Parameters pkg crypto/dsa, var ErrInvalidPublicKey error pkg crypto/ecdsa, func GenerateKey(elliptic.Curve, io.Reader) (*PrivateKey, error) pkg crypto/ecdsa, func Sign(io.Reader, *PrivateKey, []uint8) (*big.Int, *big.Int, error) pkg crypto/ecdsa, func Verify(*PublicKey, []uint8, *big.Int, *big.Int) bool pkg crypto/ecdsa, method (PrivateKey) Add(*big.Int, *big.Int, *big.Int, *big.Int) (*big.Int, *big.Int) pkg crypto/ecdsa, method (PrivateKey) Double(*big.Int, *big.Int) (*big.Int, *big.Int) pkg crypto/ecdsa, method (PrivateKey) IsOnCurve(*big.Int, *big.Int) bool pkg crypto/ecdsa, method (PrivateKey) Params() *elliptic.CurveParams pkg crypto/ecdsa, method (PrivateKey) ScalarBaseMult([]uint8) (*big.Int, *big.Int) pkg crypto/ecdsa, method (PrivateKey) ScalarMult(*big.Int, *big.Int, []uint8) (*big.Int, *big.Int) pkg crypto/ecdsa, method (PublicKey) Add(*big.Int, *big.Int, *big.Int, *big.Int) (*big.Int, *big.Int) pkg crypto/ecdsa, method (PublicKey) Double(*big.Int, *big.Int) (*big.Int, *big.Int) pkg crypto/ecdsa, method (PublicKey) IsOnCurve(*big.Int, *big.Int) bool pkg crypto/ecdsa, method (PublicKey) Params() *elliptic.CurveParams pkg crypto/ecdsa, method (PublicKey) ScalarBaseMult([]uint8) (*big.Int, *big.Int) pkg crypto/ecdsa, method (PublicKey) ScalarMult(*big.Int, *big.Int, []uint8) (*big.Int, *big.Int) pkg crypto/ecdsa, type PrivateKey struct pkg crypto/ecdsa, type PrivateKey struct, D *big.Int pkg crypto/ecdsa, type PrivateKey struct, embedded PublicKey pkg crypto/ecdsa, type PublicKey struct pkg crypto/ecdsa, type PublicKey struct, X *big.Int pkg crypto/ecdsa, type PublicKey struct, Y *big.Int pkg crypto/ecdsa, type PublicKey struct, embedded elliptic.Curve pkg crypto/elliptic, func GenerateKey(Curve, io.Reader) ([]uint8, *big.Int, *big.Int, error) pkg crypto/elliptic, func Marshal(Curve, *big.Int, *big.Int) []uint8 pkg crypto/elliptic, func P224() Curve pkg crypto/elliptic, func P256() Curve pkg crypto/elliptic, func P384() Curve pkg crypto/elliptic, func P521() Curve pkg crypto/elliptic, func Unmarshal(Curve, []uint8) (*big.Int, *big.Int) pkg crypto/elliptic, method (*CurveParams) Add(*big.Int, *big.Int, *big.Int, *big.Int) (*big.Int, *big.Int) pkg crypto/elliptic, method (*CurveParams) Double(*big.Int, *big.Int) (*big.Int, *big.Int) pkg crypto/elliptic, method (*CurveParams) IsOnCurve(*big.Int, *big.Int) bool pkg crypto/elliptic, method (*CurveParams) Params() *CurveParams pkg crypto/elliptic, method (*CurveParams) ScalarBaseMult([]uint8) (*big.Int, *big.Int) pkg crypto/elliptic, method (*CurveParams) ScalarMult(*big.Int, *big.Int, []uint8) (*big.Int, *big.Int) pkg crypto/elliptic, type Curve interface { Add, Double, IsOnCurve, Params, ScalarBaseMult, ScalarMult } pkg crypto/elliptic, type Curve interface, Add(*big.Int, *big.Int, *big.Int, *big.Int) (*big.Int, *big.Int) pkg crypto/elliptic, type Curve interface, Double(*big.Int, *big.Int) (*big.Int, *big.Int) pkg crypto/elliptic, type Curve interface, IsOnCurve(*big.Int, *big.Int) bool pkg crypto/elliptic, type Curve interface, Params() *CurveParams pkg crypto/elliptic, type Curve interface, ScalarBaseMult([]uint8) (*big.Int, *big.Int) pkg crypto/elliptic, type Curve interface, ScalarMult(*big.Int, *big.Int, []uint8) (*big.Int, *big.Int) pkg crypto/elliptic, type CurveParams struct pkg crypto/elliptic, type CurveParams struct, B *big.Int pkg crypto/elliptic, type CurveParams struct, BitSize int pkg crypto/elliptic, type CurveParams struct, Gx *big.Int pkg crypto/elliptic, type CurveParams struct, Gy *big.Int pkg crypto/elliptic, type CurveParams struct, N *big.Int pkg crypto/elliptic, type CurveParams struct, P *big.Int pkg crypto/hmac, func New(func() hash.Hash, []uint8) hash.Hash pkg crypto/md5, const BlockSize ideal-int pkg crypto/md5, const Size ideal-int pkg crypto/md5, func New() hash.Hash pkg crypto/rand, func Int(io.Reader, *big.Int) (*big.Int, error) pkg crypto/rand, func Prime(io.Reader, int) (*big.Int, error) pkg crypto/rand, func Read([]uint8) (int, error) pkg crypto/rand, var Reader io.Reader pkg crypto/rc4, func NewCipher([]uint8) (*Cipher, error) pkg crypto/rc4, method (*Cipher) Reset() pkg crypto/rc4, method (*Cipher) XORKeyStream([]uint8, []uint8) pkg crypto/rc4, method (KeySizeError) Error() string pkg crypto/rc4, type Cipher struct pkg crypto/rc4, type KeySizeError int pkg crypto/rsa, func DecryptOAEP(hash.Hash, io.Reader, *PrivateKey, []uint8, []uint8) ([]uint8, error) pkg crypto/rsa, func DecryptPKCS1v15(io.Reader, *PrivateKey, []uint8) ([]uint8, error) pkg crypto/rsa, func DecryptPKCS1v15SessionKey(io.Reader, *PrivateKey, []uint8, []uint8) error pkg crypto/rsa, func EncryptOAEP(hash.Hash, io.Reader, *PublicKey, []uint8, []uint8) ([]uint8, error) pkg crypto/rsa, func EncryptPKCS1v15(io.Reader, *PublicKey, []uint8) ([]uint8, error) pkg crypto/rsa, func GenerateKey(io.Reader, int) (*PrivateKey, error) pkg crypto/rsa, func GenerateMultiPrimeKey(io.Reader, int, int) (*PrivateKey, error) pkg crypto/rsa, func SignPKCS1v15(io.Reader, *PrivateKey, crypto.Hash, []uint8) ([]uint8, error) pkg crypto/rsa, func VerifyPKCS1v15(*PublicKey, crypto.Hash, []uint8, []uint8) error pkg crypto/rsa, method (*PrivateKey) Precompute() pkg crypto/rsa, method (*PrivateKey) Validate() error pkg crypto/rsa, type CRTValue struct pkg crypto/rsa, type CRTValue struct, Coeff *big.Int pkg crypto/rsa, type CRTValue struct, Exp *big.Int pkg crypto/rsa, type CRTValue struct, R *big.Int pkg crypto/rsa, type PrecomputedValues struct pkg crypto/rsa, type PrecomputedValues struct, CRTValues []CRTValue pkg crypto/rsa, type PrecomputedValues struct, Dp *big.Int pkg crypto/rsa, type PrecomputedValues struct, Dq *big.Int pkg crypto/rsa, type PrecomputedValues struct, Qinv *big.Int pkg crypto/rsa, type PrivateKey struct pkg crypto/rsa, type PrivateKey struct, D *big.Int pkg crypto/rsa, type PrivateKey struct, Precomputed PrecomputedValues pkg crypto/rsa, type PrivateKey struct, Primes []*big.Int pkg crypto/rsa, type PrivateKey struct, embedded PublicKey pkg crypto/rsa, type PublicKey struct pkg crypto/rsa, type PublicKey struct, E int pkg crypto/rsa, type PublicKey struct, N *big.Int pkg crypto/rsa, var ErrDecryption error pkg crypto/rsa, var ErrMessageTooLong error pkg crypto/rsa, var ErrVerification error pkg crypto/sha1, const BlockSize ideal-int pkg crypto/sha1, const Size ideal-int pkg crypto/sha1, func New() hash.Hash pkg crypto/sha256, const BlockSize ideal-int pkg crypto/sha256, const Size ideal-int pkg crypto/sha256, const Size224 ideal-int pkg crypto/sha256, func New() hash.Hash pkg crypto/sha256, func New224() hash.Hash pkg crypto/sha512, const BlockSize ideal-int pkg crypto/sha512, const Size ideal-int pkg crypto/sha512, const Size384 ideal-int pkg crypto/sha512, func New() hash.Hash pkg crypto/sha512, func New384() hash.Hash pkg crypto/subtle, func ConstantTimeByteEq(uint8, uint8) int pkg crypto/subtle, func ConstantTimeCompare([]uint8, []uint8) int pkg crypto/subtle, func ConstantTimeCopy(int, []uint8, []uint8) pkg crypto/subtle, func ConstantTimeEq(int32, int32) int pkg crypto/subtle, func ConstantTimeSelect(int, int, int) int pkg crypto/tls, const NoClientCert ClientAuthType pkg crypto/tls, const RequestClientCert ClientAuthType pkg crypto/tls, const RequireAndVerifyClientCert ClientAuthType pkg crypto/tls, const RequireAnyClientCert ClientAuthType pkg crypto/tls, const TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA uint16 pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA uint16 pkg crypto/tls, const TLS_ECDHE_RSA_WITH_RC4_128_SHA uint16 pkg crypto/tls, const TLS_RSA_WITH_3DES_EDE_CBC_SHA uint16 pkg crypto/tls, const TLS_RSA_WITH_AES_128_CBC_SHA uint16 pkg crypto/tls, const TLS_RSA_WITH_RC4_128_SHA uint16 pkg crypto/tls, const VerifyClientCertIfGiven ClientAuthType pkg crypto/tls, func Client(net.Conn, *Config) *Conn pkg crypto/tls, func Dial(string, string, *Config) (*Conn, error) pkg crypto/tls, func Listen(string, string, *Config) (net.Listener, error) pkg crypto/tls, func LoadX509KeyPair(string, string) (Certificate, error) pkg crypto/tls, func NewListener(net.Listener, *Config) net.Listener pkg crypto/tls, func Server(net.Conn, *Config) *Conn pkg crypto/tls, func X509KeyPair([]uint8, []uint8) (Certificate, error) pkg crypto/tls, method (*Config) BuildNameToCertificate() pkg crypto/tls, method (*Conn) Close() error pkg crypto/tls, method (*Conn) ConnectionState() ConnectionState pkg crypto/tls, method (*Conn) Handshake() error pkg crypto/tls, method (*Conn) LocalAddr() net.Addr pkg crypto/tls, method (*Conn) OCSPResponse() []uint8 pkg crypto/tls, method (*Conn) Read([]uint8) (int, error) pkg crypto/tls, method (*Conn) RemoteAddr() net.Addr pkg crypto/tls, method (*Conn) SetDeadline(time.Time) error pkg crypto/tls, method (*Conn) SetReadDeadline(time.Time) error pkg crypto/tls, method (*Conn) SetWriteDeadline(time.Time) error pkg crypto/tls, method (*Conn) VerifyHostname(string) error pkg crypto/tls, method (*Conn) Write([]uint8) (int, error) pkg crypto/tls, type Certificate struct pkg crypto/tls, type Certificate struct, Certificate [][]uint8 pkg crypto/tls, type Certificate struct, Leaf *x509.Certificate pkg crypto/tls, type Certificate struct, OCSPStaple []uint8 pkg crypto/tls, type Certificate struct, PrivateKey crypto.PrivateKey pkg crypto/tls, type ClientAuthType int pkg crypto/tls, type Config struct pkg crypto/tls, type Config struct, Certificates []Certificate pkg crypto/tls, type Config struct, CipherSuites []uint16 pkg crypto/tls, type Config struct, ClientAuth ClientAuthType pkg crypto/tls, type Config struct, ClientCAs *x509.CertPool pkg crypto/tls, type Config struct, InsecureSkipVerify bool pkg crypto/tls, type Config struct, NameToCertificate map[string]*Certificate pkg crypto/tls, type Config struct, NextProtos []string pkg crypto/tls, type Config struct, Rand io.Reader pkg crypto/tls, type Config struct, RootCAs *x509.CertPool pkg crypto/tls, type Config struct, ServerName string pkg crypto/tls, type Config struct, Time func() time.Time pkg crypto/tls, type Conn struct pkg crypto/tls, type ConnectionState struct pkg crypto/tls, type ConnectionState struct, CipherSuite uint16 pkg crypto/tls, type ConnectionState struct, HandshakeComplete bool pkg crypto/tls, type ConnectionState struct, NegotiatedProtocol string pkg crypto/tls, type ConnectionState struct, NegotiatedProtocolIsMutual bool pkg crypto/tls, type ConnectionState struct, PeerCertificates []*x509.Certificate pkg crypto/tls, type ConnectionState struct, ServerName string pkg crypto/tls, type ConnectionState struct, VerifiedChains [][]*x509.Certificate pkg crypto/x509, const CANotAuthorizedForThisName InvalidReason pkg crypto/x509, const DSA PublicKeyAlgorithm pkg crypto/x509, const DSAWithSHA1 SignatureAlgorithm pkg crypto/x509, const DSAWithSHA256 SignatureAlgorithm pkg crypto/x509, const Expired InvalidReason pkg crypto/x509, const ExtKeyUsageAny ExtKeyUsage pkg crypto/x509, const ExtKeyUsageClientAuth ExtKeyUsage pkg crypto/x509, const ExtKeyUsageCodeSigning ExtKeyUsage pkg crypto/x509, const ExtKeyUsageEmailProtection ExtKeyUsage pkg crypto/x509, const ExtKeyUsageOCSPSigning ExtKeyUsage pkg crypto/x509, const ExtKeyUsageServerAuth ExtKeyUsage pkg crypto/x509, const ExtKeyUsageTimeStamping ExtKeyUsage pkg crypto/x509, const KeyUsageCRLSign KeyUsage pkg crypto/x509, const KeyUsageCertSign KeyUsage pkg crypto/x509, const KeyUsageContentCommitment KeyUsage pkg crypto/x509, const KeyUsageDataEncipherment KeyUsage pkg crypto/x509, const KeyUsageDecipherOnly KeyUsage pkg crypto/x509, const KeyUsageDigitalSignature KeyUsage pkg crypto/x509, const KeyUsageEncipherOnly KeyUsage pkg crypto/x509, const KeyUsageKeyAgreement KeyUsage pkg crypto/x509, const KeyUsageKeyEncipherment KeyUsage pkg crypto/x509, const MD2WithRSA SignatureAlgorithm pkg crypto/x509, const MD5WithRSA SignatureAlgorithm pkg crypto/x509, const NotAuthorizedToSign InvalidReason pkg crypto/x509, const RSA PublicKeyAlgorithm pkg crypto/x509, const SHA1WithRSA SignatureAlgorithm pkg crypto/x509, const SHA256WithRSA SignatureAlgorithm pkg crypto/x509, const SHA384WithRSA SignatureAlgorithm pkg crypto/x509, const SHA512WithRSA SignatureAlgorithm pkg crypto/x509, const TooManyIntermediates InvalidReason pkg crypto/x509, const UnknownPublicKeyAlgorithm PublicKeyAlgorithm pkg crypto/x509, const UnknownSignatureAlgorithm SignatureAlgorithm pkg crypto/x509, func CreateCertificate(io.Reader, *Certificate, *Certificate, interface{}, interface{}) ([]uint8, error) pkg crypto/x509, func MarshalPKCS1PrivateKey(*rsa.PrivateKey) []uint8 pkg crypto/x509, func MarshalPKIXPublicKey(interface{}) ([]uint8, error) pkg crypto/x509, func NewCertPool() *CertPool pkg crypto/x509, func ParseCRL([]uint8) (*pkix.CertificateList, error) pkg crypto/x509, func ParseCertificate([]uint8) (*Certificate, error) pkg crypto/x509, func ParseCertificates([]uint8) ([]*Certificate, error) pkg crypto/x509, func ParseDERCRL([]uint8) (*pkix.CertificateList, error) pkg crypto/x509, func ParsePKCS1PrivateKey([]uint8) (*rsa.PrivateKey, error) pkg crypto/x509, func ParsePKCS8PrivateKey([]uint8) (interface{}, error) pkg crypto/x509, func ParsePKIXPublicKey([]uint8) (interface{}, error) pkg crypto/x509, method (*CertPool) AddCert(*Certificate) pkg crypto/x509, method (*CertPool) AppendCertsFromPEM([]uint8) bool pkg crypto/x509, method (*CertPool) Subjects() [][]uint8 pkg crypto/x509, method (*Certificate) CheckCRLSignature(*pkix.CertificateList) error pkg crypto/x509, method (*Certificate) CheckSignature(SignatureAlgorithm, []uint8, []uint8) error pkg crypto/x509, method (*Certificate) CheckSignatureFrom(*Certificate) error pkg crypto/x509, method (*Certificate) CreateCRL(io.Reader, interface{}, []pkix.RevokedCertificate, time.Time, time.Time) ([]uint8, error) pkg crypto/x509, method (*Certificate) Equal(*Certificate) bool pkg crypto/x509, method (*Certificate) Verify(VerifyOptions) ([][]*Certificate, error) pkg crypto/x509, method (*Certificate) VerifyHostname(string) error pkg crypto/x509, method (CertificateInvalidError) Error() string pkg crypto/x509, method (ConstraintViolationError) Error() string pkg crypto/x509, method (HostnameError) Error() string pkg crypto/x509, method (UnhandledCriticalExtension) Error() string pkg crypto/x509, method (UnknownAuthorityError) Error() string pkg crypto/x509, type CertPool struct pkg crypto/x509, type Certificate struct pkg crypto/x509, type Certificate struct, AuthorityKeyId []uint8 pkg crypto/x509, type Certificate struct, BasicConstraintsValid bool pkg crypto/x509, type Certificate struct, DNSNames []string pkg crypto/x509, type Certificate struct, EmailAddresses []string pkg crypto/x509, type Certificate struct, ExtKeyUsage []ExtKeyUsage pkg crypto/x509, type Certificate struct, IsCA bool pkg crypto/x509, type Certificate struct, Issuer pkix.Name pkg crypto/x509, type Certificate struct, KeyUsage KeyUsage pkg crypto/x509, type Certificate struct, MaxPathLen int pkg crypto/x509, type Certificate struct, NotAfter time.Time pkg crypto/x509, type Certificate struct, NotBefore time.Time pkg crypto/x509, type Certificate struct, PermittedDNSDomains []string pkg crypto/x509, type Certificate struct, PermittedDNSDomainsCritical bool pkg crypto/x509, type Certificate struct, PolicyIdentifiers []asn1.ObjectIdentifier pkg crypto/x509, type Certificate struct, PublicKey interface{} pkg crypto/x509, type Certificate struct, PublicKeyAlgorithm PublicKeyAlgorithm pkg crypto/x509, type Certificate struct, Raw []uint8 pkg crypto/x509, type Certificate struct, RawIssuer []uint8 pkg crypto/x509, type Certificate struct, RawSubject []uint8 pkg crypto/x509, type Certificate struct, RawSubjectPublicKeyInfo []uint8 pkg crypto/x509, type Certificate struct, RawTBSCertificate []uint8 pkg crypto/x509, type Certificate struct, SerialNumber *big.Int pkg crypto/x509, type Certificate struct, Signature []uint8 pkg crypto/x509, type Certificate struct, SignatureAlgorithm SignatureAlgorithm pkg crypto/x509, type Certificate struct, Subject pkix.Name pkg crypto/x509, type Certificate struct, SubjectKeyId []uint8 pkg crypto/x509, type Certificate struct, UnknownExtKeyUsage []asn1.ObjectIdentifier pkg crypto/x509, type Certificate struct, Version int pkg crypto/x509, type CertificateInvalidError struct pkg crypto/x509, type CertificateInvalidError struct, Cert *Certificate pkg crypto/x509, type CertificateInvalidError struct, Reason InvalidReason pkg crypto/x509, type ConstraintViolationError struct pkg crypto/x509, type ExtKeyUsage int pkg crypto/x509, type HostnameError struct pkg crypto/x509, type HostnameError struct, Certificate *Certificate pkg crypto/x509, type HostnameError struct, Host string pkg crypto/x509, type InvalidReason int pkg crypto/x509, type KeyUsage int pkg crypto/x509, type PublicKeyAlgorithm int pkg crypto/x509, type SignatureAlgorithm int pkg crypto/x509, type UnhandledCriticalExtension struct pkg crypto/x509, type UnknownAuthorityError struct pkg crypto/x509, type VerifyOptions struct pkg crypto/x509, type VerifyOptions struct, CurrentTime time.Time pkg crypto/x509, type VerifyOptions struct, DNSName string pkg crypto/x509, type VerifyOptions struct, Intermediates *CertPool pkg crypto/x509, type VerifyOptions struct, Roots *CertPool pkg crypto/x509, var ErrUnsupportedAlgorithm error pkg crypto/x509/pkix, method (*CertificateList) HasExpired(time.Time) bool pkg crypto/x509/pkix, method (*Name) FillFromRDNSequence(*RDNSequence) pkg crypto/x509/pkix, method (Name) ToRDNSequence() RDNSequence pkg crypto/x509/pkix, type AlgorithmIdentifier struct pkg crypto/x509/pkix, type AlgorithmIdentifier struct, Algorithm asn1.ObjectIdentifier pkg crypto/x509/pkix, type AlgorithmIdentifier struct, Parameters asn1.RawValue pkg crypto/x509/pkix, type AttributeTypeAndValue struct pkg crypto/x509/pkix, type AttributeTypeAndValue struct, Type asn1.ObjectIdentifier pkg crypto/x509/pkix, type AttributeTypeAndValue struct, Value interface{} pkg crypto/x509/pkix, type CertificateList struct pkg crypto/x509/pkix, type CertificateList struct, SignatureAlgorithm AlgorithmIdentifier pkg crypto/x509/pkix, type CertificateList struct, SignatureValue asn1.BitString pkg crypto/x509/pkix, type CertificateList struct, TBSCertList TBSCertificateList pkg crypto/x509/pkix, type Extension struct pkg crypto/x509/pkix, type Extension struct, Critical bool pkg crypto/x509/pkix, type Extension struct, Id asn1.ObjectIdentifier pkg crypto/x509/pkix, type Extension struct, Value []uint8 pkg crypto/x509/pkix, type Name struct pkg crypto/x509/pkix, type Name struct, CommonName string pkg crypto/x509/pkix, type Name struct, Country []string pkg crypto/x509/pkix, type Name struct, Locality []string pkg crypto/x509/pkix, type Name struct, Names []AttributeTypeAndValue pkg crypto/x509/pkix, type Name struct, Organization []string pkg crypto/x509/pkix, type Name struct, OrganizationalUnit []string pkg crypto/x509/pkix, type Name struct, PostalCode []string pkg crypto/x509/pkix, type Name struct, Province []string pkg crypto/x509/pkix, type Name struct, SerialNumber string pkg crypto/x509/pkix, type Name struct, StreetAddress []string pkg crypto/x509/pkix, type RDNSequence []RelativeDistinguishedNameSET pkg crypto/x509/pkix, type RelativeDistinguishedNameSET []AttributeTypeAndValue pkg crypto/x509/pkix, type RevokedCertificate struct pkg crypto/x509/pkix, type RevokedCertificate struct, Extensions []Extension pkg crypto/x509/pkix, type RevokedCertificate struct, RevocationTime time.Time pkg crypto/x509/pkix, type RevokedCertificate struct, SerialNumber *big.Int pkg crypto/x509/pkix, type TBSCertificateList struct pkg crypto/x509/pkix, type TBSCertificateList struct, Extensions []Extension pkg crypto/x509/pkix, type TBSCertificateList struct, Issuer RDNSequence pkg crypto/x509/pkix, type TBSCertificateList struct, NextUpdate time.Time pkg crypto/x509/pkix, type TBSCertificateList struct, Raw asn1.RawContent pkg crypto/x509/pkix, type TBSCertificateList struct, RevokedCertificates []RevokedCertificate pkg crypto/x509/pkix, type TBSCertificateList struct, Signature AlgorithmIdentifier pkg crypto/x509/pkix, type TBSCertificateList struct, ThisUpdate time.Time pkg crypto/x509/pkix, type TBSCertificateList struct, Version int pkg database/sql, func Open(string, string) (*DB, error) pkg database/sql, func Register(string, driver.Driver) pkg database/sql, method (*DB) Begin() (*Tx, error) pkg database/sql, method (*DB) Close() error pkg database/sql, method (*DB) Driver() driver.Driver pkg database/sql, method (*DB) Exec(string, ...interface{}) (Result, error) pkg database/sql, method (*DB) Prepare(string) (*Stmt, error) pkg database/sql, method (*DB) Query(string, ...interface{}) (*Rows, error) pkg database/sql, method (*DB) QueryRow(string, ...interface{}) *Row pkg database/sql, method (*NullBool) Scan(interface{}) error pkg database/sql, method (*NullFloat64) Scan(interface{}) error pkg database/sql, method (*NullInt64) Scan(interface{}) error pkg database/sql, method (*NullString) Scan(interface{}) error pkg database/sql, method (*Row) Scan(...interface{}) error pkg database/sql, method (*Rows) Close() error pkg database/sql, method (*Rows) Columns() ([]string, error) pkg database/sql, method (*Rows) Err() error pkg database/sql, method (*Rows) Next() bool pkg database/sql, method (*Rows) Scan(...interface{}) error pkg database/sql, method (*Stmt) Close() error pkg database/sql, method (*Stmt) Exec(...interface{}) (Result, error) pkg database/sql, method (*Stmt) Query(...interface{}) (*Rows, error) pkg database/sql, method (*Stmt) QueryRow(...interface{}) *Row pkg database/sql, method (*Tx) Commit() error pkg database/sql, method (*Tx) Exec(string, ...interface{}) (Result, error) pkg database/sql, method (*Tx) Prepare(string) (*Stmt, error) pkg database/sql, method (*Tx) Query(string, ...interface{}) (*Rows, error) pkg database/sql, method (*Tx) QueryRow(string, ...interface{}) *Row pkg database/sql, method (*Tx) Rollback() error pkg database/sql, method (*Tx) Stmt(*Stmt) *Stmt pkg database/sql, method (NullBool) Value() (driver.Value, error) pkg database/sql, method (NullFloat64) Value() (driver.Value, error) pkg database/sql, method (NullInt64) Value() (driver.Value, error) pkg database/sql, method (NullString) Value() (driver.Value, error) pkg database/sql, type DB struct pkg database/sql, type NullBool struct pkg database/sql, type NullBool struct, Bool bool pkg database/sql, type NullBool struct, Valid bool pkg database/sql, type NullFloat64 struct pkg database/sql, type NullFloat64 struct, Float64 float64 pkg database/sql, type NullFloat64 struct, Valid bool pkg database/sql, type NullInt64 struct pkg database/sql, type NullInt64 struct, Int64 int64 pkg database/sql, type NullInt64 struct, Valid bool pkg database/sql, type NullString struct pkg database/sql, type NullString struct, String string pkg database/sql, type NullString struct, Valid bool pkg database/sql, type RawBytes []uint8 pkg database/sql, type Result interface { LastInsertId, RowsAffected } pkg database/sql, type Result interface, LastInsertId() (int64, error) pkg database/sql, type Result interface, RowsAffected() (int64, error) pkg database/sql, type Row struct pkg database/sql, type Rows struct pkg database/sql, type Scanner interface { Scan } pkg database/sql, type Scanner interface, Scan(interface{}) error pkg database/sql, type Stmt struct pkg database/sql, type Tx struct pkg database/sql, var ErrNoRows error pkg database/sql, var ErrTxDone error pkg database/sql/driver, func IsScanValue(interface{}) bool pkg database/sql/driver, func IsValue(interface{}) bool pkg database/sql/driver, method (NotNull) ConvertValue(interface{}) (Value, error) pkg database/sql/driver, method (Null) ConvertValue(interface{}) (Value, error) pkg database/sql/driver, method (RowsAffected) LastInsertId() (int64, error) pkg database/sql/driver, method (RowsAffected) RowsAffected() (int64, error) pkg database/sql/driver, type ColumnConverter interface { ColumnConverter } pkg database/sql/driver, type ColumnConverter interface, ColumnConverter(int) ValueConverter pkg database/sql/driver, type Conn interface { Begin, Close, Prepare } pkg database/sql/driver, type Conn interface, Begin() (Tx, error) pkg database/sql/driver, type Conn interface, Close() error pkg database/sql/driver, type Conn interface, Prepare(string) (Stmt, error) pkg database/sql/driver, type Driver interface { Open } pkg database/sql/driver, type Driver interface, Open(string) (Conn, error) pkg database/sql/driver, type Execer interface { Exec } pkg database/sql/driver, type Execer interface, Exec(string, []Value) (Result, error) pkg database/sql/driver, type NotNull struct pkg database/sql/driver, type NotNull struct, Converter ValueConverter pkg database/sql/driver, type Null struct pkg database/sql/driver, type Null struct, Converter ValueConverter pkg database/sql/driver, type Result interface { LastInsertId, RowsAffected } pkg database/sql/driver, type Result interface, LastInsertId() (int64, error) pkg database/sql/driver, type Result interface, RowsAffected() (int64, error) pkg database/sql/driver, type Rows interface { Close, Columns, Next } pkg database/sql/driver, type Rows interface, Close() error pkg database/sql/driver, type Rows interface, Columns() []string pkg database/sql/driver, type Rows interface, Next([]Value) error pkg database/sql/driver, type RowsAffected int64 pkg database/sql/driver, type Stmt interface { Close, Exec, NumInput, Query } pkg database/sql/driver, type Stmt interface, Close() error pkg database/sql/driver, type Stmt interface, Exec([]Value) (Result, error) pkg database/sql/driver, type Stmt interface, NumInput() int pkg database/sql/driver, type Stmt interface, Query([]Value) (Rows, error) pkg database/sql/driver, type Tx interface { Commit, Rollback } pkg database/sql/driver, type Tx interface, Commit() error pkg database/sql/driver, type Tx interface, Rollback() error pkg database/sql/driver, type Value interface {} pkg database/sql/driver, type ValueConverter interface { ConvertValue } pkg database/sql/driver, type ValueConverter interface, ConvertValue(interface{}) (Value, error) pkg database/sql/driver, type Valuer interface { Value } pkg database/sql/driver, type Valuer interface, Value() (Value, error) pkg database/sql/driver, var Bool boolType pkg database/sql/driver, var DefaultParameterConverter defaultConverter pkg database/sql/driver, var ErrBadConn error pkg database/sql/driver, var ErrSkip error pkg database/sql/driver, var Int32 int32Type pkg database/sql/driver, var ResultNoRows noRows pkg database/sql/driver, var String stringType pkg debug/dwarf, const AttrAbstractOrigin Attr pkg debug/dwarf, const AttrAccessibility Attr pkg debug/dwarf, const AttrAddrClass Attr pkg debug/dwarf, const AttrAllocated Attr pkg debug/dwarf, const AttrArtificial Attr pkg debug/dwarf, const AttrAssociated Attr pkg debug/dwarf, const AttrBaseTypes Attr pkg debug/dwarf, const AttrBitOffset Attr pkg debug/dwarf, const AttrBitSize Attr pkg debug/dwarf, const AttrByteSize Attr pkg debug/dwarf, const AttrCallColumn Attr pkg debug/dwarf, const AttrCallFile Attr pkg debug/dwarf, const AttrCallLine Attr pkg debug/dwarf, const AttrCalling Attr pkg debug/dwarf, const AttrCommonRef Attr pkg debug/dwarf, const AttrCompDir Attr pkg debug/dwarf, const AttrConstValue Attr pkg debug/dwarf, const AttrContainingType Attr pkg debug/dwarf, const AttrCount Attr pkg debug/dwarf, const AttrDataLocation Attr pkg debug/dwarf, const AttrDataMemberLoc Attr pkg debug/dwarf, const AttrDeclColumn Attr pkg debug/dwarf, const AttrDeclFile Attr pkg debug/dwarf, const AttrDeclLine Attr pkg debug/dwarf, const AttrDeclaration Attr pkg debug/dwarf, const AttrDefaultValue Attr pkg debug/dwarf, const AttrDescription Attr pkg debug/dwarf, const AttrDiscr Attr pkg debug/dwarf, const AttrDiscrList Attr pkg debug/dwarf, const AttrDiscrValue Attr pkg debug/dwarf, const AttrEncoding Attr pkg debug/dwarf, const AttrEntrypc Attr pkg debug/dwarf, const AttrExtension Attr pkg debug/dwarf, const AttrExternal Attr pkg debug/dwarf, const AttrFrameBase Attr pkg debug/dwarf, const AttrFriend Attr pkg debug/dwarf, const AttrHighpc Attr pkg debug/dwarf, const AttrIdentifierCase Attr pkg debug/dwarf, const AttrImport Attr pkg debug/dwarf, const AttrInline Attr pkg debug/dwarf, const AttrIsOptional Attr pkg debug/dwarf, const AttrLanguage Attr pkg debug/dwarf, const AttrLocation Attr pkg debug/dwarf, const AttrLowerBound Attr pkg debug/dwarf, const AttrLowpc Attr pkg debug/dwarf, const AttrMacroInfo Attr pkg debug/dwarf, const AttrName Attr pkg debug/dwarf, const AttrNamelistItem Attr pkg debug/dwarf, const AttrOrdering Attr pkg debug/dwarf, const AttrPriority Attr pkg debug/dwarf, const AttrProducer Attr pkg debug/dwarf, const AttrPrototyped Attr pkg debug/dwarf, const AttrRanges Attr pkg debug/dwarf, const AttrReturnAddr Attr pkg debug/dwarf, const AttrSegment Attr pkg debug/dwarf, const AttrSibling Attr pkg debug/dwarf, const AttrSpecification Attr pkg debug/dwarf, const AttrStartScope Attr pkg debug/dwarf, const AttrStaticLink Attr pkg debug/dwarf, const AttrStmtList Attr pkg debug/dwarf, const AttrStride Attr pkg debug/dwarf, const AttrStrideSize Attr pkg debug/dwarf, const AttrStringLength Attr pkg debug/dwarf, const AttrTrampoline Attr pkg debug/dwarf, const AttrType Attr pkg debug/dwarf, const AttrUpperBound Attr pkg debug/dwarf, const AttrUseLocation Attr pkg debug/dwarf, const AttrUseUTF8 Attr pkg debug/dwarf, const AttrVarParam Attr pkg debug/dwarf, const AttrVirtuality Attr pkg debug/dwarf, const AttrVisibility Attr pkg debug/dwarf, const AttrVtableElemLoc Attr pkg debug/dwarf, const TagAccessDeclaration Tag pkg debug/dwarf, const TagArrayType Tag pkg debug/dwarf, const TagBaseType Tag pkg debug/dwarf, const TagCatchDwarfBlock Tag pkg debug/dwarf, const TagClassType Tag pkg debug/dwarf, const TagCommonDwarfBlock Tag pkg debug/dwarf, const TagCommonInclusion Tag pkg debug/dwarf, const TagCompileUnit Tag pkg debug/dwarf, const TagConstType Tag pkg debug/dwarf, const TagConstant Tag pkg debug/dwarf, const TagDwarfProcedure Tag pkg debug/dwarf, const TagEntryPoint Tag pkg debug/dwarf, const TagEnumerationType Tag pkg debug/dwarf, const TagEnumerator Tag pkg debug/dwarf, const TagFileType Tag pkg debug/dwarf, const TagFormalParameter Tag pkg debug/dwarf, const TagFriend Tag pkg debug/dwarf, const TagImportedDeclaration Tag pkg debug/dwarf, const TagImportedModule Tag pkg debug/dwarf, const TagImportedUnit Tag pkg debug/dwarf, const TagInheritance Tag pkg debug/dwarf, const TagInlinedSubroutine Tag pkg debug/dwarf, const TagInterfaceType Tag pkg debug/dwarf, const TagLabel Tag pkg debug/dwarf, const TagLexDwarfBlock Tag pkg debug/dwarf, const TagMember Tag pkg debug/dwarf, const TagModule Tag pkg debug/dwarf, const TagMutableType Tag pkg debug/dwarf, const TagNamelist Tag pkg debug/dwarf, const TagNamelistItem Tag pkg debug/dwarf, const TagNamespace Tag pkg debug/dwarf, const TagPackedType Tag pkg debug/dwarf, const TagPartialUnit Tag pkg debug/dwarf, const TagPointerType Tag pkg debug/dwarf, const TagPtrToMemberType Tag pkg debug/dwarf, const TagReferenceType Tag pkg debug/dwarf, const TagRestrictType Tag pkg debug/dwarf, const TagSetType Tag pkg debug/dwarf, const TagStringType Tag pkg debug/dwarf, const TagStructType Tag pkg debug/dwarf, const TagSubprogram Tag pkg debug/dwarf, const TagSubrangeType Tag pkg debug/dwarf, const TagSubroutineType Tag pkg debug/dwarf, const TagTemplateTypeParameter Tag pkg debug/dwarf, const TagTemplateValueParameter Tag pkg debug/dwarf, const TagThrownType Tag pkg debug/dwarf, const TagTryDwarfBlock Tag pkg debug/dwarf, const TagTypedef Tag pkg debug/dwarf, const TagUnionType Tag pkg debug/dwarf, const TagUnspecifiedParameters Tag pkg debug/dwarf, const TagUnspecifiedType Tag pkg debug/dwarf, const TagVariable Tag pkg debug/dwarf, const TagVariant Tag pkg debug/dwarf, const TagVariantPart Tag pkg debug/dwarf, const TagVolatileType Tag pkg debug/dwarf, const TagWithStmt Tag pkg debug/dwarf, func New([]uint8, []uint8, []uint8, []uint8, []uint8, []uint8, []uint8, []uint8) (*Data, error) pkg debug/dwarf, method (*AddrType) Basic() *BasicType pkg debug/dwarf, method (*AddrType) Common() *CommonType pkg debug/dwarf, method (*AddrType) Size() int64 pkg debug/dwarf, method (*AddrType) String() string pkg debug/dwarf, method (*ArrayType) Common() *CommonType pkg debug/dwarf, method (*ArrayType) Size() int64 pkg debug/dwarf, method (*ArrayType) String() string pkg debug/dwarf, method (*BasicType) Basic() *BasicType pkg debug/dwarf, method (*BasicType) Common() *CommonType pkg debug/dwarf, method (*BasicType) Size() int64 pkg debug/dwarf, method (*BasicType) String() string pkg debug/dwarf, method (*BoolType) Basic() *BasicType pkg debug/dwarf, method (*BoolType) Common() *CommonType pkg debug/dwarf, method (*BoolType) Size() int64 pkg debug/dwarf, method (*BoolType) String() string pkg debug/dwarf, method (*CharType) Basic() *BasicType pkg debug/dwarf, method (*CharType) Common() *CommonType pkg debug/dwarf, method (*CharType) Size() int64 pkg debug/dwarf, method (*CharType) String() string pkg debug/dwarf, method (*CommonType) Common() *CommonType pkg debug/dwarf, method (*CommonType) Size() int64 pkg debug/dwarf, method (*ComplexType) Basic() *BasicType pkg debug/dwarf, method (*ComplexType) Common() *CommonType pkg debug/dwarf, method (*ComplexType) Size() int64 pkg debug/dwarf, method (*ComplexType) String() string pkg debug/dwarf, method (*Data) Reader() *Reader pkg debug/dwarf, method (*Data) Type(Offset) (Type, error) pkg debug/dwarf, method (*DotDotDotType) Common() *CommonType pkg debug/dwarf, method (*DotDotDotType) Size() int64 pkg debug/dwarf, method (*DotDotDotType) String() string pkg debug/dwarf, method (*Entry) Val(Attr) interface{} pkg debug/dwarf, method (*EnumType) Common() *CommonType pkg debug/dwarf, method (*EnumType) Size() int64 pkg debug/dwarf, method (*EnumType) String() string pkg debug/dwarf, method (*FloatType) Basic() *BasicType pkg debug/dwarf, method (*FloatType) Common() *CommonType pkg debug/dwarf, method (*FloatType) Size() int64 pkg debug/dwarf, method (*FloatType) String() string pkg debug/dwarf, method (*FuncType) Common() *CommonType pkg debug/dwarf, method (*FuncType) Size() int64 pkg debug/dwarf, method (*FuncType) String() string pkg debug/dwarf, method (*IntType) Basic() *BasicType pkg debug/dwarf, method (*IntType) Common() *CommonType pkg debug/dwarf, method (*IntType) Size() int64 pkg debug/dwarf, method (*IntType) String() string pkg debug/dwarf, method (*PtrType) Common() *CommonType pkg debug/dwarf, method (*PtrType) Size() int64 pkg debug/dwarf, method (*PtrType) String() string pkg debug/dwarf, method (*QualType) Common() *CommonType pkg debug/dwarf, method (*QualType) Size() int64 pkg debug/dwarf, method (*QualType) String() string pkg debug/dwarf, method (*Reader) Next() (*Entry, error) pkg debug/dwarf, method (*Reader) Seek(Offset) pkg debug/dwarf, method (*Reader) SkipChildren() pkg debug/dwarf, method (*StructType) Common() *CommonType pkg debug/dwarf, method (*StructType) Defn() string pkg debug/dwarf, method (*StructType) Size() int64 pkg debug/dwarf, method (*StructType) String() string pkg debug/dwarf, method (*TypedefType) Common() *CommonType pkg debug/dwarf, method (*TypedefType) Size() int64 pkg debug/dwarf, method (*TypedefType) String() string pkg debug/dwarf, method (*UcharType) Basic() *BasicType pkg debug/dwarf, method (*UcharType) Common() *CommonType pkg debug/dwarf, method (*UcharType) Size() int64 pkg debug/dwarf, method (*UcharType) String() string pkg debug/dwarf, method (*UintType) Basic() *BasicType pkg debug/dwarf, method (*UintType) Common() *CommonType pkg debug/dwarf, method (*UintType) Size() int64 pkg debug/dwarf, method (*UintType) String() string pkg debug/dwarf, method (*VoidType) Common() *CommonType pkg debug/dwarf, method (*VoidType) Size() int64 pkg debug/dwarf, method (*VoidType) String() string pkg debug/dwarf, method (Attr) GoString() string pkg debug/dwarf, method (Attr) String() string pkg debug/dwarf, method (DecodeError) Error() string pkg debug/dwarf, method (Tag) GoString() string pkg debug/dwarf, method (Tag) String() string pkg debug/dwarf, type AddrType struct pkg debug/dwarf, type AddrType struct, embedded BasicType pkg debug/dwarf, type ArrayType struct pkg debug/dwarf, type ArrayType struct, Count int64 pkg debug/dwarf, type ArrayType struct, StrideBitSize int64 pkg debug/dwarf, type ArrayType struct, Type Type pkg debug/dwarf, type ArrayType struct, embedded CommonType pkg debug/dwarf, type Attr uint32 pkg debug/dwarf, type BasicType struct pkg debug/dwarf, type BasicType struct, BitOffset int64 pkg debug/dwarf, type BasicType struct, BitSize int64 pkg debug/dwarf, type BasicType struct, embedded CommonType pkg debug/dwarf, type BoolType struct pkg debug/dwarf, type BoolType struct, embedded BasicType pkg debug/dwarf, type CharType struct pkg debug/dwarf, type CharType struct, embedded BasicType pkg debug/dwarf, type CommonType struct pkg debug/dwarf, type CommonType struct, ByteSize int64 pkg debug/dwarf, type CommonType struct, Name string pkg debug/dwarf, type ComplexType struct pkg debug/dwarf, type ComplexType struct, embedded BasicType pkg debug/dwarf, type Data struct pkg debug/dwarf, type DecodeError struct pkg debug/dwarf, type DecodeError struct, Err string pkg debug/dwarf, type DecodeError struct, Name string pkg debug/dwarf, type DecodeError struct, Offset Offset pkg debug/dwarf, type DotDotDotType struct pkg debug/dwarf, type DotDotDotType struct, embedded CommonType pkg debug/dwarf, type Entry struct pkg debug/dwarf, type Entry struct, Children bool pkg debug/dwarf, type Entry struct, Field []Field pkg debug/dwarf, type Entry struct, Offset Offset pkg debug/dwarf, type Entry struct, Tag Tag pkg debug/dwarf, type EnumType struct pkg debug/dwarf, type EnumType struct, EnumName string pkg debug/dwarf, type EnumType struct, Val []*EnumValue pkg debug/dwarf, type EnumType struct, embedded CommonType pkg debug/dwarf, type EnumValue struct pkg debug/dwarf, type EnumValue struct, Name string pkg debug/dwarf, type EnumValue struct, Val int64 pkg debug/dwarf, type Field struct pkg debug/dwarf, type Field struct, Attr Attr pkg debug/dwarf, type Field struct, Val interface{} pkg debug/dwarf, type FloatType struct pkg debug/dwarf, type FloatType struct, embedded BasicType pkg debug/dwarf, type FuncType struct pkg debug/dwarf, type FuncType struct, ParamType []Type pkg debug/dwarf, type FuncType struct, ReturnType Type pkg debug/dwarf, type FuncType struct, embedded CommonType pkg debug/dwarf, type IntType struct pkg debug/dwarf, type IntType struct, embedded BasicType pkg debug/dwarf, type Offset uint32 pkg debug/dwarf, type PtrType struct pkg debug/dwarf, type PtrType struct, Type Type pkg debug/dwarf, type PtrType struct, embedded CommonType pkg debug/dwarf, type QualType struct pkg debug/dwarf, type QualType struct, Qual string pkg debug/dwarf, type QualType struct, Type Type pkg debug/dwarf, type QualType struct, embedded CommonType pkg debug/dwarf, type Reader struct pkg debug/dwarf, type StructField struct pkg debug/dwarf, type StructField struct, BitOffset int64 pkg debug/dwarf, type StructField struct, BitSize int64 pkg debug/dwarf, type StructField struct, ByteOffset int64 pkg debug/dwarf, type StructField struct, ByteSize int64 pkg debug/dwarf, type StructField struct, Name string pkg debug/dwarf, type StructField struct, Type Type pkg debug/dwarf, type StructType struct pkg debug/dwarf, type StructType struct, Field []*StructField pkg debug/dwarf, type StructType struct, Incomplete bool pkg debug/dwarf, type StructType struct, Kind string pkg debug/dwarf, type StructType struct, StructName string pkg debug/dwarf, type StructType struct, embedded CommonType pkg debug/dwarf, type Tag uint32 pkg debug/dwarf, type Type interface { Common, Size, String } pkg debug/dwarf, type Type interface, Common() *CommonType pkg debug/dwarf, type Type interface, Size() int64 pkg debug/dwarf, type Type interface, String() string pkg debug/dwarf, type TypedefType struct pkg debug/dwarf, type TypedefType struct, Type Type pkg debug/dwarf, type TypedefType struct, embedded CommonType pkg debug/dwarf, type UcharType struct pkg debug/dwarf, type UcharType struct, embedded BasicType pkg debug/dwarf, type UintType struct pkg debug/dwarf, type UintType struct, embedded BasicType pkg debug/dwarf, type VoidType struct pkg debug/dwarf, type VoidType struct, embedded CommonType pkg debug/elf, const ARM_MAGIC_TRAMP_NUMBER ideal-int pkg debug/elf, const DF_BIND_NOW DynFlag pkg debug/elf, const DF_ORIGIN DynFlag pkg debug/elf, const DF_STATIC_TLS DynFlag pkg debug/elf, const DF_SYMBOLIC DynFlag pkg debug/elf, const DF_TEXTREL DynFlag pkg debug/elf, const DT_BIND_NOW DynTag pkg debug/elf, const DT_DEBUG DynTag pkg debug/elf, const DT_ENCODING DynTag pkg debug/elf, const DT_FINI DynTag pkg debug/elf, const DT_FINI_ARRAY DynTag pkg debug/elf, const DT_FINI_ARRAYSZ DynTag pkg debug/elf, const DT_FLAGS DynTag pkg debug/elf, const DT_HASH DynTag pkg debug/elf, const DT_HIOS DynTag pkg debug/elf, const DT_HIPROC DynTag pkg debug/elf, const DT_INIT DynTag pkg debug/elf, const DT_INIT_ARRAY DynTag pkg debug/elf, const DT_INIT_ARRAYSZ DynTag pkg debug/elf, const DT_JMPREL DynTag pkg debug/elf, const DT_LOOS DynTag pkg debug/elf, const DT_LOPROC DynTag pkg debug/elf, const DT_NEEDED DynTag pkg debug/elf, const DT_NULL DynTag pkg debug/elf, const DT_PLTGOT DynTag pkg debug/elf, const DT_PLTREL DynTag pkg debug/elf, const DT_PLTRELSZ DynTag pkg debug/elf, const DT_PREINIT_ARRAY DynTag pkg debug/elf, const DT_PREINIT_ARRAYSZ DynTag pkg debug/elf, const DT_REL DynTag pkg debug/elf, const DT_RELA DynTag pkg debug/elf, const DT_RELAENT DynTag pkg debug/elf, const DT_RELASZ DynTag pkg debug/elf, const DT_RELENT DynTag pkg debug/elf, const DT_RELSZ DynTag pkg debug/elf, const DT_RPATH DynTag pkg debug/elf, const DT_RUNPATH DynTag pkg debug/elf, const DT_SONAME DynTag pkg debug/elf, const DT_STRSZ DynTag pkg debug/elf, const DT_STRTAB DynTag pkg debug/elf, const DT_SYMBOLIC DynTag pkg debug/elf, const DT_SYMENT DynTag pkg debug/elf, const DT_SYMTAB DynTag pkg debug/elf, const DT_TEXTREL DynTag pkg debug/elf, const DT_VERNEED DynTag pkg debug/elf, const DT_VERNEEDNUM DynTag pkg debug/elf, const DT_VERSYM DynTag pkg debug/elf, const EI_ABIVERSION ideal-int pkg debug/elf, const EI_CLASS ideal-int pkg debug/elf, const EI_DATA ideal-int pkg debug/elf, const EI_NIDENT ideal-int pkg debug/elf, const EI_OSABI ideal-int pkg debug/elf, const EI_PAD ideal-int pkg debug/elf, const EI_VERSION ideal-int pkg debug/elf, const ELFCLASS32 Class pkg debug/elf, const ELFCLASS64 Class pkg debug/elf, const ELFCLASSNONE Class pkg debug/elf, const ELFDATA2LSB Data pkg debug/elf, const ELFDATA2MSB Data pkg debug/elf, const ELFDATANONE Data pkg debug/elf, const ELFMAG ideal-string pkg debug/elf, const ELFOSABI_86OPEN OSABI pkg debug/elf, const ELFOSABI_AIX OSABI pkg debug/elf, const ELFOSABI_ARM OSABI pkg debug/elf, const ELFOSABI_FREEBSD OSABI pkg debug/elf, const ELFOSABI_HPUX OSABI pkg debug/elf, const ELFOSABI_HURD OSABI pkg debug/elf, const ELFOSABI_IRIX OSABI pkg debug/elf, const ELFOSABI_LINUX OSABI pkg debug/elf, const ELFOSABI_MODESTO OSABI pkg debug/elf, const ELFOSABI_NETBSD OSABI pkg debug/elf, const ELFOSABI_NONE OSABI pkg debug/elf, const ELFOSABI_NSK OSABI pkg debug/elf, const ELFOSABI_OPENBSD OSABI pkg debug/elf, const ELFOSABI_OPENVMS OSABI pkg debug/elf, const ELFOSABI_SOLARIS OSABI pkg debug/elf, const ELFOSABI_STANDALONE OSABI pkg debug/elf, const ELFOSABI_TRU64 OSABI pkg debug/elf, const EM_386 Machine pkg debug/elf, const EM_486 Machine pkg debug/elf, const EM_68HC12 Machine pkg debug/elf, const EM_68K Machine pkg debug/elf, const EM_860 Machine pkg debug/elf, const EM_88K Machine pkg debug/elf, const EM_960 Machine pkg debug/elf, const EM_ALPHA Machine pkg debug/elf, const EM_ALPHA_STD Machine pkg debug/elf, const EM_ARC Machine pkg debug/elf, const EM_ARM Machine pkg debug/elf, const EM_COLDFIRE Machine pkg debug/elf, const EM_FR20 Machine pkg debug/elf, const EM_H8S Machine pkg debug/elf, const EM_H8_300 Machine pkg debug/elf, const EM_H8_300H Machine pkg debug/elf, const EM_H8_500 Machine pkg debug/elf, const EM_IA_64 Machine pkg debug/elf, const EM_M32 Machine pkg debug/elf, const EM_ME16 Machine pkg debug/elf, const EM_MIPS Machine pkg debug/elf, const EM_MIPS_RS3_LE Machine pkg debug/elf, const EM_MIPS_RS4_BE Machine pkg debug/elf, const EM_MIPS_X Machine pkg debug/elf, const EM_MMA Machine pkg debug/elf, const EM_NCPU Machine pkg debug/elf, const EM_NDR1 Machine pkg debug/elf, const EM_NONE Machine pkg debug/elf, const EM_PARISC Machine pkg debug/elf, const EM_PCP Machine pkg debug/elf, const EM_PPC Machine pkg debug/elf, const EM_PPC64 Machine pkg debug/elf, const EM_RCE Machine pkg debug/elf, const EM_RH32 Machine pkg debug/elf, const EM_S370 Machine pkg debug/elf, const EM_S390 Machine pkg debug/elf, const EM_SH Machine pkg debug/elf, const EM_SPARC Machine pkg debug/elf, const EM_SPARC32PLUS Machine pkg debug/elf, const EM_SPARCV9 Machine pkg debug/elf, const EM_ST100 Machine pkg debug/elf, const EM_STARCORE Machine pkg debug/elf, const EM_TINYJ Machine pkg debug/elf, const EM_TRICORE Machine pkg debug/elf, const EM_V800 Machine pkg debug/elf, const EM_VPP500 Machine pkg debug/elf, const EM_X86_64 Machine pkg debug/elf, const ET_CORE Type pkg debug/elf, const ET_DYN Type pkg debug/elf, const ET_EXEC Type pkg debug/elf, const ET_HIOS Type pkg debug/elf, const ET_HIPROC Type pkg debug/elf, const ET_LOOS Type pkg debug/elf, const ET_LOPROC Type pkg debug/elf, const ET_NONE Type pkg debug/elf, const ET_REL Type pkg debug/elf, const EV_CURRENT Version pkg debug/elf, const EV_NONE Version pkg debug/elf, const NT_FPREGSET NType pkg debug/elf, const NT_PRPSINFO NType pkg debug/elf, const NT_PRSTATUS NType pkg debug/elf, const PF_MASKOS ProgFlag pkg debug/elf, const PF_MASKPROC ProgFlag pkg debug/elf, const PF_R ProgFlag pkg debug/elf, const PF_W ProgFlag pkg debug/elf, const PF_X ProgFlag pkg debug/elf, const PT_DYNAMIC ProgType pkg debug/elf, const PT_HIOS ProgType pkg debug/elf, const PT_HIPROC ProgType pkg debug/elf, const PT_INTERP ProgType pkg debug/elf, const PT_LOAD ProgType pkg debug/elf, const PT_LOOS ProgType pkg debug/elf, const PT_LOPROC ProgType pkg debug/elf, const PT_NOTE ProgType pkg debug/elf, const PT_NULL ProgType pkg debug/elf, const PT_PHDR ProgType pkg debug/elf, const PT_SHLIB ProgType pkg debug/elf, const PT_TLS ProgType pkg debug/elf, const R_386_32 R_386 pkg debug/elf, const R_386_COPY R_386 pkg debug/elf, const R_386_GLOB_DAT R_386 pkg debug/elf, const R_386_GOT32 R_386 pkg debug/elf, const R_386_GOTOFF R_386 pkg debug/elf, const R_386_GOTPC R_386 pkg debug/elf, const R_386_JMP_SLOT R_386 pkg debug/elf, const R_386_NONE R_386 pkg debug/elf, const R_386_PC32 R_386 pkg debug/elf, const R_386_PLT32 R_386 pkg debug/elf, const R_386_RELATIVE R_386 pkg debug/elf, const R_386_TLS_DTPMOD32 R_386 pkg debug/elf, const R_386_TLS_DTPOFF32 R_386 pkg debug/elf, const R_386_TLS_GD R_386 pkg debug/elf, const R_386_TLS_GD_32 R_386 pkg debug/elf, const R_386_TLS_GD_CALL R_386 pkg debug/elf, const R_386_TLS_GD_POP R_386 pkg debug/elf, const R_386_TLS_GD_PUSH R_386 pkg debug/elf, const R_386_TLS_GOTIE R_386 pkg debug/elf, const R_386_TLS_IE R_386 pkg debug/elf, const R_386_TLS_IE_32 R_386 pkg debug/elf, const R_386_TLS_LDM R_386 pkg debug/elf, const R_386_TLS_LDM_32 R_386 pkg debug/elf, const R_386_TLS_LDM_CALL R_386 pkg debug/elf, const R_386_TLS_LDM_POP R_386 pkg debug/elf, const R_386_TLS_LDM_PUSH R_386 pkg debug/elf, const R_386_TLS_LDO_32 R_386 pkg debug/elf, const R_386_TLS_LE R_386 pkg debug/elf, const R_386_TLS_LE_32 R_386 pkg debug/elf, const R_386_TLS_TPOFF R_386 pkg debug/elf, const R_386_TLS_TPOFF32 R_386 pkg debug/elf, const R_ALPHA_BRADDR R_ALPHA pkg debug/elf, const R_ALPHA_COPY R_ALPHA pkg debug/elf, const R_ALPHA_GLOB_DAT R_ALPHA pkg debug/elf, const R_ALPHA_GPDISP R_ALPHA pkg debug/elf, const R_ALPHA_GPREL32 R_ALPHA pkg debug/elf, const R_ALPHA_GPRELHIGH R_ALPHA pkg debug/elf, const R_ALPHA_GPRELLOW R_ALPHA pkg debug/elf, const R_ALPHA_GPVALUE R_ALPHA pkg debug/elf, const R_ALPHA_HINT R_ALPHA pkg debug/elf, const R_ALPHA_IMMED_BR_HI32 R_ALPHA pkg debug/elf, const R_ALPHA_IMMED_GP_16 R_ALPHA pkg debug/elf, const R_ALPHA_IMMED_GP_HI32 R_ALPHA pkg debug/elf, const R_ALPHA_IMMED_LO32 R_ALPHA pkg debug/elf, const R_ALPHA_IMMED_SCN_HI32 R_ALPHA pkg debug/elf, const R_ALPHA_JMP_SLOT R_ALPHA pkg debug/elf, const R_ALPHA_LITERAL R_ALPHA pkg debug/elf, const R_ALPHA_LITUSE R_ALPHA pkg debug/elf, const R_ALPHA_NONE R_ALPHA pkg debug/elf, const R_ALPHA_OP_PRSHIFT R_ALPHA pkg debug/elf, const R_ALPHA_OP_PSUB R_ALPHA pkg debug/elf, const R_ALPHA_OP_PUSH R_ALPHA pkg debug/elf, const R_ALPHA_OP_STORE R_ALPHA pkg debug/elf, const R_ALPHA_REFLONG R_ALPHA pkg debug/elf, const R_ALPHA_REFQUAD R_ALPHA pkg debug/elf, const R_ALPHA_RELATIVE R_ALPHA pkg debug/elf, const R_ALPHA_SREL16 R_ALPHA pkg debug/elf, const R_ALPHA_SREL32 R_ALPHA pkg debug/elf, const R_ALPHA_SREL64 R_ALPHA pkg debug/elf, const R_ARM_ABS12 R_ARM pkg debug/elf, const R_ARM_ABS16 R_ARM pkg debug/elf, const R_ARM_ABS32 R_ARM pkg debug/elf, const R_ARM_ABS8 R_ARM pkg debug/elf, const R_ARM_AMP_VCALL9 R_ARM pkg debug/elf, const R_ARM_COPY R_ARM pkg debug/elf, const R_ARM_GLOB_DAT R_ARM pkg debug/elf, const R_ARM_GNU_VTENTRY R_ARM pkg debug/elf, const R_ARM_GNU_VTINHERIT R_ARM pkg debug/elf, const R_ARM_GOT32 R_ARM pkg debug/elf, const R_ARM_GOTOFF R_ARM pkg debug/elf, const R_ARM_GOTPC R_ARM pkg debug/elf, const R_ARM_JUMP_SLOT R_ARM pkg debug/elf, const R_ARM_NONE R_ARM pkg debug/elf, const R_ARM_PC13 R_ARM pkg debug/elf, const R_ARM_PC24 R_ARM pkg debug/elf, const R_ARM_PLT32 R_ARM pkg debug/elf, const R_ARM_RABS32 R_ARM pkg debug/elf, const R_ARM_RBASE R_ARM pkg debug/elf, const R_ARM_REL32 R_ARM pkg debug/elf, const R_ARM_RELATIVE R_ARM pkg debug/elf, const R_ARM_RPC24 R_ARM pkg debug/elf, const R_ARM_RREL32 R_ARM pkg debug/elf, const R_ARM_RSBREL32 R_ARM pkg debug/elf, const R_ARM_SBREL32 R_ARM pkg debug/elf, const R_ARM_SWI24 R_ARM pkg debug/elf, const R_ARM_THM_ABS5 R_ARM pkg debug/elf, const R_ARM_THM_PC22 R_ARM pkg debug/elf, const R_ARM_THM_PC8 R_ARM pkg debug/elf, const R_ARM_THM_RPC22 R_ARM pkg debug/elf, const R_ARM_THM_SWI8 R_ARM pkg debug/elf, const R_ARM_THM_XPC22 R_ARM pkg debug/elf, const R_ARM_XPC25 R_ARM pkg debug/elf, const R_PPC_ADDR14 R_PPC pkg debug/elf, const R_PPC_ADDR14_BRNTAKEN R_PPC pkg debug/elf, const R_PPC_ADDR14_BRTAKEN R_PPC pkg debug/elf, const R_PPC_ADDR16 R_PPC pkg debug/elf, const R_PPC_ADDR16_HA R_PPC pkg debug/elf, const R_PPC_ADDR16_HI R_PPC pkg debug/elf, const R_PPC_ADDR16_LO R_PPC pkg debug/elf, const R_PPC_ADDR24 R_PPC pkg debug/elf, const R_PPC_ADDR32 R_PPC pkg debug/elf, const R_PPC_COPY R_PPC pkg debug/elf, const R_PPC_DTPMOD32 R_PPC pkg debug/elf, const R_PPC_DTPREL16 R_PPC pkg debug/elf, const R_PPC_DTPREL16_HA R_PPC pkg debug/elf, const R_PPC_DTPREL16_HI R_PPC pkg debug/elf, const R_PPC_DTPREL16_LO R_PPC pkg debug/elf, const R_PPC_DTPREL32 R_PPC pkg debug/elf, const R_PPC_EMB_BIT_FLD R_PPC pkg debug/elf, const R_PPC_EMB_MRKREF R_PPC pkg debug/elf, const R_PPC_EMB_NADDR16 R_PPC pkg debug/elf, const R_PPC_EMB_NADDR16_HA R_PPC pkg debug/elf, const R_PPC_EMB_NADDR16_HI R_PPC pkg debug/elf, const R_PPC_EMB_NADDR16_LO R_PPC pkg debug/elf, const R_PPC_EMB_NADDR32 R_PPC pkg debug/elf, const R_PPC_EMB_RELSDA R_PPC pkg debug/elf, const R_PPC_EMB_RELSEC16 R_PPC pkg debug/elf, const R_PPC_EMB_RELST_HA R_PPC pkg debug/elf, const R_PPC_EMB_RELST_HI R_PPC pkg debug/elf, const R_PPC_EMB_RELST_LO R_PPC pkg debug/elf, const R_PPC_EMB_SDA21 R_PPC pkg debug/elf, const R_PPC_EMB_SDA2I16 R_PPC pkg debug/elf, const R_PPC_EMB_SDA2REL R_PPC pkg debug/elf, const R_PPC_EMB_SDAI16 R_PPC pkg debug/elf, const R_PPC_GLOB_DAT R_PPC pkg debug/elf, const R_PPC_GOT16 R_PPC pkg debug/elf, const R_PPC_GOT16_HA R_PPC pkg debug/elf, const R_PPC_GOT16_HI R_PPC pkg debug/elf, const R_PPC_GOT16_LO R_PPC pkg debug/elf, const R_PPC_GOT_TLSGD16 R_PPC pkg debug/elf, const R_PPC_GOT_TLSGD16_HA R_PPC pkg debug/elf, const R_PPC_GOT_TLSGD16_HI R_PPC pkg debug/elf, const R_PPC_GOT_TLSGD16_LO R_PPC pkg debug/elf, const R_PPC_GOT_TLSLD16 R_PPC pkg debug/elf, const R_PPC_GOT_TLSLD16_HA R_PPC pkg debug/elf, const R_PPC_GOT_TLSLD16_HI R_PPC pkg debug/elf, const R_PPC_GOT_TLSLD16_LO R_PPC pkg debug/elf, const R_PPC_GOT_TPREL16 R_PPC pkg debug/elf, const R_PPC_GOT_TPREL16_HA R_PPC pkg debug/elf, const R_PPC_GOT_TPREL16_HI R_PPC pkg debug/elf, const R_PPC_GOT_TPREL16_LO R_PPC pkg debug/elf, const R_PPC_JMP_SLOT R_PPC pkg debug/elf, const R_PPC_LOCAL24PC R_PPC pkg debug/elf, const R_PPC_NONE R_PPC pkg debug/elf, const R_PPC_PLT16_HA R_PPC pkg debug/elf, const R_PPC_PLT16_HI R_PPC pkg debug/elf, const R_PPC_PLT16_LO R_PPC pkg debug/elf, const R_PPC_PLT32 R_PPC pkg debug/elf, const R_PPC_PLTREL24 R_PPC pkg debug/elf, const R_PPC_PLTREL32 R_PPC pkg debug/elf, const R_PPC_REL14 R_PPC pkg debug/elf, const R_PPC_REL14_BRNTAKEN R_PPC pkg debug/elf, const R_PPC_REL14_BRTAKEN R_PPC pkg debug/elf, const R_PPC_REL24 R_PPC pkg debug/elf, const R_PPC_REL32 R_PPC pkg debug/elf, const R_PPC_RELATIVE R_PPC pkg debug/elf, const R_PPC_SDAREL16 R_PPC pkg debug/elf, const R_PPC_SECTOFF R_PPC pkg debug/elf, const R_PPC_SECTOFF_HA R_PPC pkg debug/elf, const R_PPC_SECTOFF_HI R_PPC pkg debug/elf, const R_PPC_SECTOFF_LO R_PPC pkg debug/elf, const R_PPC_TLS R_PPC pkg debug/elf, const R_PPC_TPREL16 R_PPC pkg debug/elf, const R_PPC_TPREL16_HA R_PPC pkg debug/elf, const R_PPC_TPREL16_HI R_PPC pkg debug/elf, const R_PPC_TPREL16_LO R_PPC pkg debug/elf, const R_PPC_TPREL32 R_PPC pkg debug/elf, const R_PPC_UADDR16 R_PPC pkg debug/elf, const R_PPC_UADDR32 R_PPC pkg debug/elf, const R_SPARC_10 R_SPARC pkg debug/elf, const R_SPARC_11 R_SPARC pkg debug/elf, const R_SPARC_13 R_SPARC pkg debug/elf, const R_SPARC_16 R_SPARC pkg debug/elf, const R_SPARC_22 R_SPARC pkg debug/elf, const R_SPARC_32 R_SPARC pkg debug/elf, const R_SPARC_5 R_SPARC pkg debug/elf, const R_SPARC_6 R_SPARC pkg debug/elf, const R_SPARC_64 R_SPARC pkg debug/elf, const R_SPARC_7 R_SPARC pkg debug/elf, const R_SPARC_8 R_SPARC pkg debug/elf, const R_SPARC_COPY R_SPARC pkg debug/elf, const R_SPARC_DISP16 R_SPARC pkg debug/elf, const R_SPARC_DISP32 R_SPARC pkg debug/elf, const R_SPARC_DISP64 R_SPARC pkg debug/elf, const R_SPARC_DISP8 R_SPARC pkg debug/elf, const R_SPARC_GLOB_DAT R_SPARC pkg debug/elf, const R_SPARC_GLOB_JMP R_SPARC pkg debug/elf, const R_SPARC_GOT10 R_SPARC pkg debug/elf, const R_SPARC_GOT13 R_SPARC pkg debug/elf, const R_SPARC_GOT22 R_SPARC pkg debug/elf, const R_SPARC_H44 R_SPARC pkg debug/elf, const R_SPARC_HH22 R_SPARC pkg debug/elf, const R_SPARC_HI22 R_SPARC pkg debug/elf, const R_SPARC_HIPLT22 R_SPARC pkg debug/elf, const R_SPARC_HIX22 R_SPARC pkg debug/elf, const R_SPARC_HM10 R_SPARC pkg debug/elf, const R_SPARC_JMP_SLOT R_SPARC pkg debug/elf, const R_SPARC_L44 R_SPARC pkg debug/elf, const R_SPARC_LM22 R_SPARC pkg debug/elf, const R_SPARC_LO10 R_SPARC pkg debug/elf, const R_SPARC_LOPLT10 R_SPARC pkg debug/elf, const R_SPARC_LOX10 R_SPARC pkg debug/elf, const R_SPARC_M44 R_SPARC pkg debug/elf, const R_SPARC_NONE R_SPARC pkg debug/elf, const R_SPARC_OLO10 R_SPARC pkg debug/elf, const R_SPARC_PC10 R_SPARC pkg debug/elf, const R_SPARC_PC22 R_SPARC pkg debug/elf, const R_SPARC_PCPLT10 R_SPARC pkg debug/elf, const R_SPARC_PCPLT22 R_SPARC pkg debug/elf, const R_SPARC_PCPLT32 R_SPARC pkg debug/elf, const R_SPARC_PC_HH22 R_SPARC pkg debug/elf, const R_SPARC_PC_HM10 R_SPARC pkg debug/elf, const R_SPARC_PC_LM22 R_SPARC pkg debug/elf, const R_SPARC_PLT32 R_SPARC pkg debug/elf, const R_SPARC_PLT64 R_SPARC pkg debug/elf, const R_SPARC_REGISTER R_SPARC pkg debug/elf, const R_SPARC_RELATIVE R_SPARC pkg debug/elf, const R_SPARC_UA16 R_SPARC pkg debug/elf, const R_SPARC_UA32 R_SPARC pkg debug/elf, const R_SPARC_UA64 R_SPARC pkg debug/elf, const R_SPARC_WDISP16 R_SPARC pkg debug/elf, const R_SPARC_WDISP19 R_SPARC pkg debug/elf, const R_SPARC_WDISP22 R_SPARC pkg debug/elf, const R_SPARC_WDISP30 R_SPARC pkg debug/elf, const R_SPARC_WPLT30 R_SPARC pkg debug/elf, const R_X86_64_16 R_X86_64 pkg debug/elf, const R_X86_64_32 R_X86_64 pkg debug/elf, const R_X86_64_32S R_X86_64 pkg debug/elf, const R_X86_64_64 R_X86_64 pkg debug/elf, const R_X86_64_8 R_X86_64 pkg debug/elf, const R_X86_64_COPY R_X86_64 pkg debug/elf, const R_X86_64_DTPMOD64 R_X86_64 pkg debug/elf, const R_X86_64_DTPOFF32 R_X86_64 pkg debug/elf, const R_X86_64_DTPOFF64 R_X86_64 pkg debug/elf, const R_X86_64_GLOB_DAT R_X86_64 pkg debug/elf, const R_X86_64_GOT32 R_X86_64 pkg debug/elf, const R_X86_64_GOTPCREL R_X86_64 pkg debug/elf, const R_X86_64_GOTTPOFF R_X86_64 pkg debug/elf, const R_X86_64_JMP_SLOT R_X86_64 pkg debug/elf, const R_X86_64_NONE R_X86_64 pkg debug/elf, const R_X86_64_PC16 R_X86_64 pkg debug/elf, const R_X86_64_PC32 R_X86_64 pkg debug/elf, const R_X86_64_PC8 R_X86_64 pkg debug/elf, const R_X86_64_PLT32 R_X86_64 pkg debug/elf, const R_X86_64_RELATIVE R_X86_64 pkg debug/elf, const R_X86_64_TLSGD R_X86_64 pkg debug/elf, const R_X86_64_TLSLD R_X86_64 pkg debug/elf, const R_X86_64_TPOFF32 R_X86_64 pkg debug/elf, const R_X86_64_TPOFF64 R_X86_64 pkg debug/elf, const SHF_ALLOC SectionFlag pkg debug/elf, const SHF_EXECINSTR SectionFlag pkg debug/elf, const SHF_GROUP SectionFlag pkg debug/elf, const SHF_INFO_LINK SectionFlag pkg debug/elf, const SHF_LINK_ORDER SectionFlag pkg debug/elf, const SHF_MASKOS SectionFlag pkg debug/elf, const SHF_MASKPROC SectionFlag pkg debug/elf, const SHF_MERGE SectionFlag pkg debug/elf, const SHF_OS_NONCONFORMING SectionFlag pkg debug/elf, const SHF_STRINGS SectionFlag pkg debug/elf, const SHF_TLS SectionFlag pkg debug/elf, const SHF_WRITE SectionFlag pkg debug/elf, const SHN_ABS SectionIndex pkg debug/elf, const SHN_COMMON SectionIndex pkg debug/elf, const SHN_HIOS SectionIndex pkg debug/elf, const SHN_HIPROC SectionIndex pkg debug/elf, const SHN_HIRESERVE SectionIndex pkg debug/elf, const SHN_LOOS SectionIndex pkg debug/elf, const SHN_LOPROC SectionIndex pkg debug/elf, const SHN_LORESERVE SectionIndex pkg debug/elf, const SHN_UNDEF SectionIndex pkg debug/elf, const SHN_XINDEX SectionIndex pkg debug/elf, const SHT_DYNAMIC SectionType pkg debug/elf, const SHT_DYNSYM SectionType pkg debug/elf, const SHT_FINI_ARRAY SectionType pkg debug/elf, const SHT_GNU_ATTRIBUTES SectionType pkg debug/elf, const SHT_GNU_HASH SectionType pkg debug/elf, const SHT_GNU_LIBLIST SectionType pkg debug/elf, const SHT_GNU_VERDEF SectionType pkg debug/elf, const SHT_GNU_VERNEED SectionType pkg debug/elf, const SHT_GNU_VERSYM SectionType pkg debug/elf, const SHT_GROUP SectionType pkg debug/elf, const SHT_HASH SectionType pkg debug/elf, const SHT_HIOS SectionType pkg debug/elf, const SHT_HIPROC SectionType pkg debug/elf, const SHT_HIUSER SectionType pkg debug/elf, const SHT_INIT_ARRAY SectionType pkg debug/elf, const SHT_LOOS SectionType pkg debug/elf, const SHT_LOPROC SectionType pkg debug/elf, const SHT_LOUSER SectionType pkg debug/elf, const SHT_NOBITS SectionType pkg debug/elf, const SHT_NOTE SectionType pkg debug/elf, const SHT_NULL SectionType pkg debug/elf, const SHT_PREINIT_ARRAY SectionType pkg debug/elf, const SHT_PROGBITS SectionType pkg debug/elf, const SHT_REL SectionType pkg debug/elf, const SHT_RELA SectionType pkg debug/elf, const SHT_SHLIB SectionType pkg debug/elf, const SHT_STRTAB SectionType pkg debug/elf, const SHT_SYMTAB SectionType pkg debug/elf, const SHT_SYMTAB_SHNDX SectionType pkg debug/elf, const STB_GLOBAL SymBind pkg debug/elf, const STB_HIOS SymBind pkg debug/elf, const STB_HIPROC SymBind pkg debug/elf, const STB_LOCAL SymBind pkg debug/elf, const STB_LOOS SymBind pkg debug/elf, const STB_LOPROC SymBind pkg debug/elf, const STB_WEAK SymBind pkg debug/elf, const STT_COMMON SymType pkg debug/elf, const STT_FILE SymType pkg debug/elf, const STT_FUNC SymType pkg debug/elf, const STT_HIOS SymType pkg debug/elf, const STT_HIPROC SymType pkg debug/elf, const STT_LOOS SymType pkg debug/elf, const STT_LOPROC SymType pkg debug/elf, const STT_NOTYPE SymType pkg debug/elf, const STT_OBJECT SymType pkg debug/elf, const STT_SECTION SymType pkg debug/elf, const STT_TLS SymType pkg debug/elf, const STV_DEFAULT SymVis pkg debug/elf, const STV_HIDDEN SymVis pkg debug/elf, const STV_INTERNAL SymVis pkg debug/elf, const STV_PROTECTED SymVis pkg debug/elf, const Sym32Size ideal-int pkg debug/elf, const Sym64Size ideal-int pkg debug/elf, func NewFile(io.ReaderAt) (*File, error) pkg debug/elf, func Open(string) (*File, error) pkg debug/elf, func R_INFO(uint32, uint32) uint64 pkg debug/elf, func R_INFO32(uint32, uint32) uint32 pkg debug/elf, func R_SYM32(uint32) uint32 pkg debug/elf, func R_SYM64(uint64) uint32 pkg debug/elf, func R_TYPE32(uint32) uint32 pkg debug/elf, func R_TYPE64(uint64) uint32 pkg debug/elf, func ST_BIND(uint8) SymBind pkg debug/elf, func ST_INFO(SymBind, SymType) uint8 pkg debug/elf, func ST_TYPE(uint8) SymType pkg debug/elf, func ST_VISIBILITY(uint8) SymVis pkg debug/elf, method (*File) Close() error pkg debug/elf, method (*File) DWARF() (*dwarf.Data, error) pkg debug/elf, method (*File) ImportedLibraries() ([]string, error) pkg debug/elf, method (*File) ImportedSymbols() ([]ImportedSymbol, error) pkg debug/elf, method (*File) Section(string) *Section pkg debug/elf, method (*File) SectionByType(SectionType) *Section pkg debug/elf, method (*File) Symbols() ([]Symbol, error) pkg debug/elf, method (*FormatError) Error() string pkg debug/elf, method (*Prog) Open() io.ReadSeeker pkg debug/elf, method (*Section) Data() ([]uint8, error) pkg debug/elf, method (*Section) Open() io.ReadSeeker pkg debug/elf, method (Class) GoString() string pkg debug/elf, method (Class) String() string pkg debug/elf, method (Data) GoString() string pkg debug/elf, method (Data) String() string pkg debug/elf, method (DynFlag) GoString() string pkg debug/elf, method (DynFlag) String() string pkg debug/elf, method (DynTag) GoString() string pkg debug/elf, method (DynTag) String() string pkg debug/elf, method (Machine) GoString() string pkg debug/elf, method (Machine) String() string pkg debug/elf, method (NType) GoString() string pkg debug/elf, method (NType) String() string pkg debug/elf, method (OSABI) GoString() string pkg debug/elf, method (OSABI) String() string pkg debug/elf, method (Prog) ReadAt([]uint8, int64) (int, error) pkg debug/elf, method (ProgFlag) GoString() string pkg debug/elf, method (ProgFlag) String() string pkg debug/elf, method (ProgType) GoString() string pkg debug/elf, method (ProgType) String() string pkg debug/elf, method (R_386) GoString() string pkg debug/elf, method (R_386) String() string pkg debug/elf, method (R_ALPHA) GoString() string pkg debug/elf, method (R_ALPHA) String() string pkg debug/elf, method (R_ARM) GoString() string pkg debug/elf, method (R_ARM) String() string pkg debug/elf, method (R_PPC) GoString() string pkg debug/elf, method (R_PPC) String() string pkg debug/elf, method (R_SPARC) GoString() string pkg debug/elf, method (R_SPARC) String() string pkg debug/elf, method (R_X86_64) GoString() string pkg debug/elf, method (R_X86_64) String() string pkg debug/elf, method (Section) ReadAt([]uint8, int64) (int, error) pkg debug/elf, method (SectionFlag) GoString() string pkg debug/elf, method (SectionFlag) String() string pkg debug/elf, method (SectionIndex) GoString() string pkg debug/elf, method (SectionIndex) String() string pkg debug/elf, method (SectionType) GoString() string pkg debug/elf, method (SectionType) String() string pkg debug/elf, method (SymBind) GoString() string pkg debug/elf, method (SymBind) String() string pkg debug/elf, method (SymType) GoString() string pkg debug/elf, method (SymType) String() string pkg debug/elf, method (SymVis) GoString() string pkg debug/elf, method (SymVis) String() string pkg debug/elf, method (Type) GoString() string pkg debug/elf, method (Type) String() string pkg debug/elf, method (Version) GoString() string pkg debug/elf, method (Version) String() string pkg debug/elf, type Class uint8 pkg debug/elf, type Data uint8 pkg debug/elf, type Dyn32 struct pkg debug/elf, type Dyn32 struct, Tag int32 pkg debug/elf, type Dyn32 struct, Val uint32 pkg debug/elf, type Dyn64 struct pkg debug/elf, type Dyn64 struct, Tag int64 pkg debug/elf, type Dyn64 struct, Val uint64 pkg debug/elf, type DynFlag int pkg debug/elf, type DynTag int pkg debug/elf, type File struct pkg debug/elf, type File struct, Progs []*Prog pkg debug/elf, type File struct, Sections []*Section pkg debug/elf, type File struct, embedded FileHeader pkg debug/elf, type FileHeader struct pkg debug/elf, type FileHeader struct, ABIVersion uint8 pkg debug/elf, type FileHeader struct, ByteOrder binary.ByteOrder pkg debug/elf, type FileHeader struct, Class Class pkg debug/elf, type FileHeader struct, Data Data pkg debug/elf, type FileHeader struct, Machine Machine pkg debug/elf, type FileHeader struct, OSABI OSABI pkg debug/elf, type FileHeader struct, Type Type pkg debug/elf, type FileHeader struct, Version Version pkg debug/elf, type FormatError struct pkg debug/elf, type Header32 struct pkg debug/elf, type Header32 struct, Ehsize uint16 pkg debug/elf, type Header32 struct, Entry uint32 pkg debug/elf, type Header32 struct, Flags uint32 pkg debug/elf, type Header32 struct, Ident [16]uint8 pkg debug/elf, type Header32 struct, Machine uint16 pkg debug/elf, type Header32 struct, Phentsize uint16 pkg debug/elf, type Header32 struct, Phnum uint16 pkg debug/elf, type Header32 struct, Phoff uint32 pkg debug/elf, type Header32 struct, Shentsize uint16 pkg debug/elf, type Header32 struct, Shnum uint16 pkg debug/elf, type Header32 struct, Shoff uint32 pkg debug/elf, type Header32 struct, Shstrndx uint16 pkg debug/elf, type Header32 struct, Type uint16 pkg debug/elf, type Header32 struct, Version uint32 pkg debug/elf, type Header64 struct pkg debug/elf, type Header64 struct, Ehsize uint16 pkg debug/elf, type Header64 struct, Entry uint64 pkg debug/elf, type Header64 struct, Flags uint32 pkg debug/elf, type Header64 struct, Ident [16]uint8 pkg debug/elf, type Header64 struct, Machine uint16 pkg debug/elf, type Header64 struct, Phentsize uint16 pkg debug/elf, type Header64 struct, Phnum uint16 pkg debug/elf, type Header64 struct, Phoff uint64 pkg debug/elf, type Header64 struct, Shentsize uint16 pkg debug/elf, type Header64 struct, Shnum uint16 pkg debug/elf, type Header64 struct, Shoff uint64 pkg debug/elf, type Header64 struct, Shstrndx uint16 pkg debug/elf, type Header64 struct, Type uint16 pkg debug/elf, type Header64 struct, Version uint32 pkg debug/elf, type ImportedSymbol struct pkg debug/elf, type ImportedSymbol struct, Library string pkg debug/elf, type ImportedSymbol struct, Name string pkg debug/elf, type ImportedSymbol struct, Version string pkg debug/elf, type Machine uint16 pkg debug/elf, type NType int pkg debug/elf, type OSABI uint8 pkg debug/elf, type Prog struct pkg debug/elf, type Prog struct, embedded ProgHeader pkg debug/elf, type Prog struct, embedded io.ReaderAt pkg debug/elf, type Prog32 struct pkg debug/elf, type Prog32 struct, Align uint32 pkg debug/elf, type Prog32 struct, Filesz uint32 pkg debug/elf, type Prog32 struct, Flags uint32 pkg debug/elf, type Prog32 struct, Memsz uint32 pkg debug/elf, type Prog32 struct, Off uint32 pkg debug/elf, type Prog32 struct, Paddr uint32 pkg debug/elf, type Prog32 struct, Type uint32 pkg debug/elf, type Prog32 struct, Vaddr uint32 pkg debug/elf, type Prog64 struct pkg debug/elf, type Prog64 struct, Align uint64 pkg debug/elf, type Prog64 struct, Filesz uint64 pkg debug/elf, type Prog64 struct, Flags uint32 pkg debug/elf, type Prog64 struct, Memsz uint64 pkg debug/elf, type Prog64 struct, Off uint64 pkg debug/elf, type Prog64 struct, Paddr uint64 pkg debug/elf, type Prog64 struct, Type uint32 pkg debug/elf, type Prog64 struct, Vaddr uint64 pkg debug/elf, type ProgFlag uint32 pkg debug/elf, type ProgHeader struct pkg debug/elf, type ProgHeader struct, Align uint64 pkg debug/elf, type ProgHeader struct, Filesz uint64 pkg debug/elf, type ProgHeader struct, Flags ProgFlag pkg debug/elf, type ProgHeader struct, Memsz uint64 pkg debug/elf, type ProgHeader struct, Off uint64 pkg debug/elf, type ProgHeader struct, Paddr uint64 pkg debug/elf, type ProgHeader struct, Type ProgType pkg debug/elf, type ProgHeader struct, Vaddr uint64 pkg debug/elf, type ProgType int pkg debug/elf, type R_386 int pkg debug/elf, type R_ALPHA int pkg debug/elf, type R_ARM int pkg debug/elf, type R_PPC int pkg debug/elf, type R_SPARC int pkg debug/elf, type R_X86_64 int pkg debug/elf, type Rel32 struct pkg debug/elf, type Rel32 struct, Info uint32 pkg debug/elf, type Rel32 struct, Off uint32 pkg debug/elf, type Rel64 struct pkg debug/elf, type Rel64 struct, Info uint64 pkg debug/elf, type Rel64 struct, Off uint64 pkg debug/elf, type Rela32 struct pkg debug/elf, type Rela32 struct, Addend int32 pkg debug/elf, type Rela32 struct, Info uint32 pkg debug/elf, type Rela32 struct, Off uint32 pkg debug/elf, type Rela64 struct pkg debug/elf, type Rela64 struct, Addend int64 pkg debug/elf, type Rela64 struct, Info uint64 pkg debug/elf, type Rela64 struct, Off uint64 pkg debug/elf, type Section struct pkg debug/elf, type Section struct, embedded SectionHeader pkg debug/elf, type Section struct, embedded io.ReaderAt pkg debug/elf, type Section32 struct pkg debug/elf, type Section32 struct, Addr uint32 pkg debug/elf, type Section32 struct, Addralign uint32 pkg debug/elf, type Section32 struct, Entsize uint32 pkg debug/elf, type Section32 struct, Flags uint32 pkg debug/elf, type Section32 struct, Info uint32 pkg debug/elf, type Section32 struct, Link uint32 pkg debug/elf, type Section32 struct, Name uint32 pkg debug/elf, type Section32 struct, Off uint32 pkg debug/elf, type Section32 struct, Size uint32 pkg debug/elf, type Section32 struct, Type uint32 pkg debug/elf, type Section64 struct pkg debug/elf, type Section64 struct, Addr uint64 pkg debug/elf, type Section64 struct, Addralign uint64 pkg debug/elf, type Section64 struct, Entsize uint64 pkg debug/elf, type Section64 struct, Flags uint64 pkg debug/elf, type Section64 struct, Info uint32 pkg debug/elf, type Section64 struct, Link uint32 pkg debug/elf, type Section64 struct, Name uint32 pkg debug/elf, type Section64 struct, Off uint64 pkg debug/elf, type Section64 struct, Size uint64 pkg debug/elf, type Section64 struct, Type uint32 pkg debug/elf, type SectionFlag uint32 pkg debug/elf, type SectionHeader struct pkg debug/elf, type SectionHeader struct, Addr uint64 pkg debug/elf, type SectionHeader struct, Addralign uint64 pkg debug/elf, type SectionHeader struct, Entsize uint64 pkg debug/elf, type SectionHeader struct, Flags SectionFlag pkg debug/elf, type SectionHeader struct, Info uint32 pkg debug/elf, type SectionHeader struct, Link uint32 pkg debug/elf, type SectionHeader struct, Name string pkg debug/elf, type SectionHeader struct, Offset uint64 pkg debug/elf, type SectionHeader struct, Size uint64 pkg debug/elf, type SectionHeader struct, Type SectionType pkg debug/elf, type SectionIndex int pkg debug/elf, type SectionType uint32 pkg debug/elf, type Sym32 struct pkg debug/elf, type Sym32 struct, Info uint8 pkg debug/elf, type Sym32 struct, Name uint32 pkg debug/elf, type Sym32 struct, Other uint8 pkg debug/elf, type Sym32 struct, Shndx uint16 pkg debug/elf, type Sym32 struct, Size uint32 pkg debug/elf, type Sym32 struct, Value uint32 pkg debug/elf, type Sym64 struct pkg debug/elf, type Sym64 struct, Info uint8 pkg debug/elf, type Sym64 struct, Name uint32 pkg debug/elf, type Sym64 struct, Other uint8 pkg debug/elf, type Sym64 struct, Shndx uint16 pkg debug/elf, type Sym64 struct, Size uint64 pkg debug/elf, type Sym64 struct, Value uint64 pkg debug/elf, type SymBind int pkg debug/elf, type SymType int pkg debug/elf, type SymVis int pkg debug/elf, type Symbol struct pkg debug/elf, type Symbol struct, Info uint8 pkg debug/elf, type Symbol struct, Name string pkg debug/elf, type Symbol struct, Other uint8 pkg debug/elf, type Symbol struct, Section SectionIndex pkg debug/elf, type Symbol struct, Size uint64 pkg debug/elf, type Symbol struct, Value uint64 pkg debug/elf, type Type uint16 pkg debug/elf, type Version uint8 pkg debug/gosym, func NewLineTable([]uint8, uint64) *LineTable pkg debug/gosym, func NewTable([]uint8, *LineTable) (*Table, error) pkg debug/gosym, method (*DecodingError) Error() string pkg debug/gosym, method (*LineTable) LineToPC(int, uint64) uint64 pkg debug/gosym, method (*LineTable) PCToLine(uint64) int pkg debug/gosym, method (*Sym) BaseName() string pkg debug/gosym, method (*Sym) PackageName() string pkg debug/gosym, method (*Sym) ReceiverName() string pkg debug/gosym, method (*Sym) Static() bool pkg debug/gosym, method (*Table) LineToPC(string, int) (uint64, *Func, error) pkg debug/gosym, method (*Table) LookupFunc(string) *Func pkg debug/gosym, method (*Table) LookupSym(string) *Sym pkg debug/gosym, method (*Table) PCToFunc(uint64) *Func pkg debug/gosym, method (*Table) PCToLine(uint64) (string, int, *Func) pkg debug/gosym, method (*Table) SymByAddr(uint64) *Sym pkg debug/gosym, method (*UnknownLineError) Error() string pkg debug/gosym, method (Func) BaseName() string pkg debug/gosym, method (Func) PackageName() string pkg debug/gosym, method (Func) ReceiverName() string pkg debug/gosym, method (Func) Static() bool pkg debug/gosym, method (UnknownFileError) Error() string pkg debug/gosym, type DecodingError struct pkg debug/gosym, type Func struct pkg debug/gosym, type Func struct, End uint64 pkg debug/gosym, type Func struct, Entry uint64 pkg debug/gosym, type Func struct, FrameSize int pkg debug/gosym, type Func struct, LineTable *LineTable pkg debug/gosym, type Func struct, Locals []*Sym pkg debug/gosym, type Func struct, Obj *Obj pkg debug/gosym, type Func struct, Params []*Sym pkg debug/gosym, type Func struct, embedded *Sym pkg debug/gosym, type LineTable struct pkg debug/gosym, type LineTable struct, Data []uint8 pkg debug/gosym, type LineTable struct, Line int pkg debug/gosym, type LineTable struct, PC uint64 pkg debug/gosym, type Obj struct pkg debug/gosym, type Obj struct, Funcs []Func pkg debug/gosym, type Obj struct, Paths []Sym pkg debug/gosym, type Sym struct pkg debug/gosym, type Sym struct, Func *Func pkg debug/gosym, type Sym struct, GoType uint64 pkg debug/gosym, type Sym struct, Name string pkg debug/gosym, type Sym struct, Type uint8 pkg debug/gosym, type Sym struct, Value uint64 pkg debug/gosym, type Table struct pkg debug/gosym, type Table struct, Files map[string]*Obj pkg debug/gosym, type Table struct, Funcs []Func pkg debug/gosym, type Table struct, Objs []Obj pkg debug/gosym, type Table struct, Syms []Sym pkg debug/gosym, type UnknownFileError string pkg debug/gosym, type UnknownLineError struct pkg debug/gosym, type UnknownLineError struct, File string pkg debug/gosym, type UnknownLineError struct, Line int pkg debug/macho, const Cpu386 Cpu pkg debug/macho, const CpuAmd64 Cpu pkg debug/macho, const LoadCmdDylib LoadCmd pkg debug/macho, const LoadCmdDylinker LoadCmd pkg debug/macho, const LoadCmdDysymtab LoadCmd pkg debug/macho, const LoadCmdSegment LoadCmd pkg debug/macho, const LoadCmdSegment64 LoadCmd pkg debug/macho, const LoadCmdSymtab LoadCmd pkg debug/macho, const LoadCmdThread LoadCmd pkg debug/macho, const LoadCmdUnixThread LoadCmd pkg debug/macho, const Magic32 uint32 pkg debug/macho, const Magic64 uint32 pkg debug/macho, const TypeExec Type pkg debug/macho, const TypeObj Type pkg debug/macho, func NewFile(io.ReaderAt) (*File, error) pkg debug/macho, func Open(string) (*File, error) pkg debug/macho, method (*File) Close() error pkg debug/macho, method (*File) DWARF() (*dwarf.Data, error) pkg debug/macho, method (*File) ImportedLibraries() ([]string, error) pkg debug/macho, method (*File) ImportedSymbols() ([]string, error) pkg debug/macho, method (*File) Section(string) *Section pkg debug/macho, method (*File) Segment(string) *Segment pkg debug/macho, method (*FormatError) Error() string pkg debug/macho, method (*Section) Data() ([]uint8, error) pkg debug/macho, method (*Section) Open() io.ReadSeeker pkg debug/macho, method (*Segment) Data() ([]uint8, error) pkg debug/macho, method (*Segment) Open() io.ReadSeeker pkg debug/macho, method (Cpu) GoString() string pkg debug/macho, method (Cpu) String() string pkg debug/macho, method (Dylib) Raw() []uint8 pkg debug/macho, method (Dysymtab) Raw() []uint8 pkg debug/macho, method (LoadBytes) Raw() []uint8 pkg debug/macho, method (LoadCmd) GoString() string pkg debug/macho, method (LoadCmd) String() string pkg debug/macho, method (Section) ReadAt([]uint8, int64) (int, error) pkg debug/macho, method (Segment) Raw() []uint8 pkg debug/macho, method (Segment) ReadAt([]uint8, int64) (int, error) pkg debug/macho, method (Symtab) Raw() []uint8 pkg debug/macho, type Cpu uint32 pkg debug/macho, type Dylib struct pkg debug/macho, type Dylib struct, CompatVersion uint32 pkg debug/macho, type Dylib struct, CurrentVersion uint32 pkg debug/macho, type Dylib struct, Name string pkg debug/macho, type Dylib struct, Time uint32 pkg debug/macho, type Dylib struct, embedded LoadBytes pkg debug/macho, type DylibCmd struct pkg debug/macho, type DylibCmd struct, Cmd LoadCmd pkg debug/macho, type DylibCmd struct, CompatVersion uint32 pkg debug/macho, type DylibCmd struct, CurrentVersion uint32 pkg debug/macho, type DylibCmd struct, Len uint32 pkg debug/macho, type DylibCmd struct, Name uint32 pkg debug/macho, type DylibCmd struct, Time uint32 pkg debug/macho, type Dysymtab struct pkg debug/macho, type Dysymtab struct, IndirectSyms []uint32 pkg debug/macho, type Dysymtab struct, embedded DysymtabCmd pkg debug/macho, type Dysymtab struct, embedded LoadBytes pkg debug/macho, type DysymtabCmd struct pkg debug/macho, type DysymtabCmd struct, Cmd LoadCmd pkg debug/macho, type DysymtabCmd struct, Extrefsymoff uint32 pkg debug/macho, type DysymtabCmd struct, Extreloff uint32 pkg debug/macho, type DysymtabCmd struct, Iextdefsym uint32 pkg debug/macho, type DysymtabCmd struct, Ilocalsym uint32 pkg debug/macho, type DysymtabCmd struct, Indirectsymoff uint32 pkg debug/macho, type DysymtabCmd struct, Iundefsym uint32 pkg debug/macho, type DysymtabCmd struct, Len uint32 pkg debug/macho, type DysymtabCmd struct, Locreloff uint32 pkg debug/macho, type DysymtabCmd struct, Modtaboff uint32 pkg debug/macho, type DysymtabCmd struct, Nextdefsym uint32 pkg debug/macho, type DysymtabCmd struct, Nextrefsyms uint32 pkg debug/macho, type DysymtabCmd struct, Nextrel uint32 pkg debug/macho, type DysymtabCmd struct, Nindirectsyms uint32 pkg debug/macho, type DysymtabCmd struct, Nlocalsym uint32 pkg debug/macho, type DysymtabCmd struct, Nlocrel uint32 pkg debug/macho, type DysymtabCmd struct, Nmodtab uint32 pkg debug/macho, type DysymtabCmd struct, Ntoc uint32 pkg debug/macho, type DysymtabCmd struct, Nundefsym uint32 pkg debug/macho, type DysymtabCmd struct, Tocoffset uint32 pkg debug/macho, type File struct pkg debug/macho, type File struct, ByteOrder binary.ByteOrder pkg debug/macho, type File struct, Dysymtab *Dysymtab pkg debug/macho, type File struct, Loads []Load pkg debug/macho, type File struct, Sections []*Section pkg debug/macho, type File struct, Symtab *Symtab pkg debug/macho, type File struct, embedded FileHeader pkg debug/macho, type FileHeader struct pkg debug/macho, type FileHeader struct, Cmdsz uint32 pkg debug/macho, type FileHeader struct, Cpu Cpu pkg debug/macho, type FileHeader struct, Flags uint32 pkg debug/macho, type FileHeader struct, Magic uint32 pkg debug/macho, type FileHeader struct, Ncmd uint32 pkg debug/macho, type FileHeader struct, SubCpu uint32 pkg debug/macho, type FileHeader struct, Type Type pkg debug/macho, type FormatError struct pkg debug/macho, type Load interface { Raw } pkg debug/macho, type Load interface, Raw() []uint8 pkg debug/macho, type LoadBytes []uint8 pkg debug/macho, type LoadCmd uint32 pkg debug/macho, type Nlist32 struct pkg debug/macho, type Nlist32 struct, Desc uint16 pkg debug/macho, type Nlist32 struct, Name uint32 pkg debug/macho, type Nlist32 struct, Sect uint8 pkg debug/macho, type Nlist32 struct, Type uint8 pkg debug/macho, type Nlist32 struct, Value uint32 pkg debug/macho, type Nlist64 struct pkg debug/macho, type Nlist64 struct, Desc uint16 pkg debug/macho, type Nlist64 struct, Name uint32 pkg debug/macho, type Nlist64 struct, Sect uint8 pkg debug/macho, type Nlist64 struct, Type uint8 pkg debug/macho, type Nlist64 struct, Value uint64 pkg debug/macho, type Regs386 struct pkg debug/macho, type Regs386 struct, AX uint32 pkg debug/macho, type Regs386 struct, BP uint32 pkg debug/macho, type Regs386 struct, BX uint32 pkg debug/macho, type Regs386 struct, CS uint32 pkg debug/macho, type Regs386 struct, CX uint32 pkg debug/macho, type Regs386 struct, DI uint32 pkg debug/macho, type Regs386 struct, DS uint32 pkg debug/macho, type Regs386 struct, DX uint32 pkg debug/macho, type Regs386 struct, ES uint32 pkg debug/macho, type Regs386 struct, FLAGS uint32 pkg debug/macho, type Regs386 struct, FS uint32 pkg debug/macho, type Regs386 struct, GS uint32 pkg debug/macho, type Regs386 struct, IP uint32 pkg debug/macho, type Regs386 struct, SI uint32 pkg debug/macho, type Regs386 struct, SP uint32 pkg debug/macho, type Regs386 struct, SS uint32 pkg debug/macho, type RegsAMD64 struct pkg debug/macho, type RegsAMD64 struct, AX uint64 pkg debug/macho, type RegsAMD64 struct, BP uint64 pkg debug/macho, type RegsAMD64 struct, BX uint64 pkg debug/macho, type RegsAMD64 struct, CS uint64 pkg debug/macho, type RegsAMD64 struct, CX uint64 pkg debug/macho, type RegsAMD64 struct, DI uint64 pkg debug/macho, type RegsAMD64 struct, DX uint64 pkg debug/macho, type RegsAMD64 struct, FLAGS uint64 pkg debug/macho, type RegsAMD64 struct, FS uint64 pkg debug/macho, type RegsAMD64 struct, GS uint64 pkg debug/macho, type RegsAMD64 struct, IP uint64 pkg debug/macho, type RegsAMD64 struct, R10 uint64 pkg debug/macho, type RegsAMD64 struct, R11 uint64 pkg debug/macho, type RegsAMD64 struct, R12 uint64 pkg debug/macho, type RegsAMD64 struct, R13 uint64 pkg debug/macho, type RegsAMD64 struct, R14 uint64 pkg debug/macho, type RegsAMD64 struct, R15 uint64 pkg debug/macho, type RegsAMD64 struct, R8 uint64 pkg debug/macho, type RegsAMD64 struct, R9 uint64 pkg debug/macho, type RegsAMD64 struct, SI uint64 pkg debug/macho, type RegsAMD64 struct, SP uint64 pkg debug/macho, type Section struct pkg debug/macho, type Section struct, embedded SectionHeader pkg debug/macho, type Section struct, embedded io.ReaderAt pkg debug/macho, type Section32 struct pkg debug/macho, type Section32 struct, Addr uint32 pkg debug/macho, type Section32 struct, Align uint32 pkg debug/macho, type Section32 struct, Flags uint32 pkg debug/macho, type Section32 struct, Name [16]uint8 pkg debug/macho, type Section32 struct, Nreloc uint32 pkg debug/macho, type Section32 struct, Offset uint32 pkg debug/macho, type Section32 struct, Reloff uint32 pkg debug/macho, type Section32 struct, Reserve1 uint32 pkg debug/macho, type Section32 struct, Reserve2 uint32 pkg debug/macho, type Section32 struct, Seg [16]uint8 pkg debug/macho, type Section32 struct, Size uint32 pkg debug/macho, type Section64 struct pkg debug/macho, type Section64 struct, Addr uint64 pkg debug/macho, type Section64 struct, Align uint32 pkg debug/macho, type Section64 struct, Flags uint32 pkg debug/macho, type Section64 struct, Name [16]uint8 pkg debug/macho, type Section64 struct, Nreloc uint32 pkg debug/macho, type Section64 struct, Offset uint32 pkg debug/macho, type Section64 struct, Reloff uint32 pkg debug/macho, type Section64 struct, Reserve1 uint32 pkg debug/macho, type Section64 struct, Reserve2 uint32 pkg debug/macho, type Section64 struct, Reserve3 uint32 pkg debug/macho, type Section64 struct, Seg [16]uint8 pkg debug/macho, type Section64 struct, Size uint64 pkg debug/macho, type SectionHeader struct pkg debug/macho, type SectionHeader struct, Addr uint64 pkg debug/macho, type SectionHeader struct, Align uint32 pkg debug/macho, type SectionHeader struct, Flags uint32 pkg debug/macho, type SectionHeader struct, Name string pkg debug/macho, type SectionHeader struct, Nreloc uint32 pkg debug/macho, type SectionHeader struct, Offset uint32 pkg debug/macho, type SectionHeader struct, Reloff uint32 pkg debug/macho, type SectionHeader struct, Seg string pkg debug/macho, type SectionHeader struct, Size uint64 pkg debug/macho, type Segment struct pkg debug/macho, type Segment struct, embedded LoadBytes pkg debug/macho, type Segment struct, embedded SegmentHeader pkg debug/macho, type Segment struct, embedded io.ReaderAt pkg debug/macho, type Segment32 struct pkg debug/macho, type Segment32 struct, Addr uint32 pkg debug/macho, type Segment32 struct, Cmd LoadCmd pkg debug/macho, type Segment32 struct, Filesz uint32 pkg debug/macho, type Segment32 struct, Flag uint32 pkg debug/macho, type Segment32 struct, Len uint32 pkg debug/macho, type Segment32 struct, Maxprot uint32 pkg debug/macho, type Segment32 struct, Memsz uint32 pkg debug/macho, type Segment32 struct, Name [16]uint8 pkg debug/macho, type Segment32 struct, Nsect uint32 pkg debug/macho, type Segment32 struct, Offset uint32 pkg debug/macho, type Segment32 struct, Prot uint32 pkg debug/macho, type Segment64 struct pkg debug/macho, type Segment64 struct, Addr uint64 pkg debug/macho, type Segment64 struct, Cmd LoadCmd pkg debug/macho, type Segment64 struct, Filesz uint64 pkg debug/macho, type Segment64 struct, Flag uint32 pkg debug/macho, type Segment64 struct, Len uint32 pkg debug/macho, type Segment64 struct, Maxprot uint32 pkg debug/macho, type Segment64 struct, Memsz uint64 pkg debug/macho, type Segment64 struct, Name [16]uint8 pkg debug/macho, type Segment64 struct, Nsect uint32 pkg debug/macho, type Segment64 struct, Offset uint64 pkg debug/macho, type Segment64 struct, Prot uint32 pkg debug/macho, type SegmentHeader struct pkg debug/macho, type SegmentHeader struct, Addr uint64 pkg debug/macho, type SegmentHeader struct, Cmd LoadCmd pkg debug/macho, type SegmentHeader struct, Filesz uint64 pkg debug/macho, type SegmentHeader struct, Flag uint32 pkg debug/macho, type SegmentHeader struct, Len uint32 pkg debug/macho, type SegmentHeader struct, Maxprot uint32 pkg debug/macho, type SegmentHeader struct, Memsz uint64 pkg debug/macho, type SegmentHeader struct, Name string pkg debug/macho, type SegmentHeader struct, Nsect uint32 pkg debug/macho, type SegmentHeader struct, Offset uint64 pkg debug/macho, type SegmentHeader struct, Prot uint32 pkg debug/macho, type Symbol struct pkg debug/macho, type Symbol struct, Desc uint16 pkg debug/macho, type Symbol struct, Name string pkg debug/macho, type Symbol struct, Sect uint8 pkg debug/macho, type Symbol struct, Type uint8 pkg debug/macho, type Symbol struct, Value uint64 pkg debug/macho, type Symtab struct pkg debug/macho, type Symtab struct, Syms []Symbol pkg debug/macho, type Symtab struct, embedded LoadBytes pkg debug/macho, type Symtab struct, embedded SymtabCmd pkg debug/macho, type SymtabCmd struct pkg debug/macho, type SymtabCmd struct, Cmd LoadCmd pkg debug/macho, type SymtabCmd struct, Len uint32 pkg debug/macho, type SymtabCmd struct, Nsyms uint32 pkg debug/macho, type SymtabCmd struct, Stroff uint32 pkg debug/macho, type SymtabCmd struct, Strsize uint32 pkg debug/macho, type SymtabCmd struct, Symoff uint32 pkg debug/macho, type Thread struct pkg debug/macho, type Thread struct, Cmd LoadCmd pkg debug/macho, type Thread struct, Data []uint32 pkg debug/macho, type Thread struct, Len uint32 pkg debug/macho, type Thread struct, Type uint32 pkg debug/macho, type Type uint32 pkg debug/pe, const IMAGE_FILE_MACHINE_AM33 ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_AMD64 ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_ARM ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_EBC ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_I386 ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_IA64 ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_M32R ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_MIPS16 ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_MIPSFPU ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_MIPSFPU16 ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_POWERPC ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_POWERPCFP ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_R4000 ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_SH3 ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_SH3DSP ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_SH4 ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_SH5 ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_THUMB ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_UNKNOWN ideal-int pkg debug/pe, const IMAGE_FILE_MACHINE_WCEMIPSV2 ideal-int pkg debug/pe, func NewFile(io.ReaderAt) (*File, error) pkg debug/pe, func Open(string) (*File, error) pkg debug/pe, method (*File) Close() error pkg debug/pe, method (*File) DWARF() (*dwarf.Data, error) pkg debug/pe, method (*File) ImportedLibraries() ([]string, error) pkg debug/pe, method (*File) ImportedSymbols() ([]string, error) pkg debug/pe, method (*File) Section(string) *Section pkg debug/pe, method (*FormatError) Error() string pkg debug/pe, method (*Section) Data() ([]uint8, error) pkg debug/pe, method (*Section) Open() io.ReadSeeker pkg debug/pe, method (Section) ReadAt([]uint8, int64) (int, error) pkg debug/pe, type File struct pkg debug/pe, type File struct, Sections []*Section pkg debug/pe, type File struct, embedded FileHeader pkg debug/pe, type FileHeader struct pkg debug/pe, type FileHeader struct, Characteristics uint16 pkg debug/pe, type FileHeader struct, Machine uint16 pkg debug/pe, type FileHeader struct, NumberOfSections uint16 pkg debug/pe, type FileHeader struct, NumberOfSymbols uint32 pkg debug/pe, type FileHeader struct, PointerToSymbolTable uint32 pkg debug/pe, type FileHeader struct, SizeOfOptionalHeader uint16 pkg debug/pe, type FileHeader struct, TimeDateStamp uint32 pkg debug/pe, type FormatError struct pkg debug/pe, type ImportDirectory struct pkg debug/pe, type ImportDirectory struct, FirstThunk uint32 pkg debug/pe, type ImportDirectory struct, ForwarderChain uint32 pkg debug/pe, type ImportDirectory struct, Name uint32 pkg debug/pe, type ImportDirectory struct, OriginalFirstThunk uint32 pkg debug/pe, type ImportDirectory struct, TimeDateStamp uint32 pkg debug/pe, type Section struct pkg debug/pe, type Section struct, embedded SectionHeader pkg debug/pe, type Section struct, embedded io.ReaderAt pkg debug/pe, type SectionHeader struct pkg debug/pe, type SectionHeader struct, Characteristics uint32 pkg debug/pe, type SectionHeader struct, Name string pkg debug/pe, type SectionHeader struct, NumberOfLineNumbers uint16 pkg debug/pe, type SectionHeader struct, NumberOfRelocations uint16 pkg debug/pe, type SectionHeader struct, Offset uint32 pkg debug/pe, type SectionHeader struct, PointerToLineNumbers uint32 pkg debug/pe, type SectionHeader struct, PointerToRelocations uint32 pkg debug/pe, type SectionHeader struct, Size uint32 pkg debug/pe, type SectionHeader struct, VirtualAddress uint32 pkg debug/pe, type SectionHeader struct, VirtualSize uint32 pkg debug/pe, type SectionHeader32 struct pkg debug/pe, type SectionHeader32 struct, Characteristics uint32 pkg debug/pe, type SectionHeader32 struct, Name [8]uint8 pkg debug/pe, type SectionHeader32 struct, NumberOfLineNumbers uint16 pkg debug/pe, type SectionHeader32 struct, NumberOfRelocations uint16 pkg debug/pe, type SectionHeader32 struct, PointerToLineNumbers uint32 pkg debug/pe, type SectionHeader32 struct, PointerToRawData uint32 pkg debug/pe, type SectionHeader32 struct, PointerToRelocations uint32 pkg debug/pe, type SectionHeader32 struct, SizeOfRawData uint32 pkg debug/pe, type SectionHeader32 struct, VirtualAddress uint32 pkg debug/pe, type SectionHeader32 struct, VirtualSize uint32 pkg encoding/ascii85, func Decode([]uint8, []uint8, bool) (int, int, error) pkg encoding/ascii85, func Encode([]uint8, []uint8) int pkg encoding/ascii85, func MaxEncodedLen(int) int pkg encoding/ascii85, func NewDecoder(io.Reader) io.Reader pkg encoding/ascii85, func NewEncoder(io.Writer) io.WriteCloser pkg encoding/ascii85, method (CorruptInputError) Error() string pkg encoding/ascii85, type CorruptInputError int64 pkg encoding/asn1, func Marshal(interface{}) ([]uint8, error) pkg encoding/asn1, func Unmarshal([]uint8, interface{}) ([]uint8, error) pkg encoding/asn1, func UnmarshalWithParams([]uint8, interface{}, string) ([]uint8, error) pkg encoding/asn1, method (BitString) At(int) int pkg encoding/asn1, method (BitString) RightAlign() []uint8 pkg encoding/asn1, method (ObjectIdentifier) Equal(ObjectIdentifier) bool pkg encoding/asn1, method (StructuralError) Error() string pkg encoding/asn1, method (SyntaxError) Error() string pkg encoding/asn1, type BitString struct pkg encoding/asn1, type BitString struct, BitLength int pkg encoding/asn1, type BitString struct, Bytes []uint8 pkg encoding/asn1, type Enumerated int pkg encoding/asn1, type Flag bool pkg encoding/asn1, type ObjectIdentifier []int pkg encoding/asn1, type RawContent []uint8 pkg encoding/asn1, type RawValue struct pkg encoding/asn1, type RawValue struct, Bytes []uint8 pkg encoding/asn1, type RawValue struct, Class int pkg encoding/asn1, type RawValue struct, FullBytes []uint8 pkg encoding/asn1, type RawValue struct, IsCompound bool pkg encoding/asn1, type RawValue struct, Tag int pkg encoding/asn1, type StructuralError struct pkg encoding/asn1, type StructuralError struct, Msg string pkg encoding/asn1, type SyntaxError struct pkg encoding/asn1, type SyntaxError struct, Msg string pkg encoding/base32, func NewDecoder(*Encoding, io.Reader) io.Reader pkg encoding/base32, func NewEncoder(*Encoding, io.Writer) io.WriteCloser pkg encoding/base32, func NewEncoding(string) *Encoding pkg encoding/base32, method (*Encoding) Decode([]uint8, []uint8) (int, error) pkg encoding/base32, method (*Encoding) DecodeString(string) ([]uint8, error) pkg encoding/base32, method (*Encoding) DecodedLen(int) int pkg encoding/base32, method (*Encoding) Encode([]uint8, []uint8) pkg encoding/base32, method (*Encoding) EncodeToString([]uint8) string pkg encoding/base32, method (*Encoding) EncodedLen(int) int pkg encoding/base32, method (CorruptInputError) Error() string pkg encoding/base32, type CorruptInputError int64 pkg encoding/base32, type Encoding struct pkg encoding/base32, var HexEncoding *Encoding pkg encoding/base32, var StdEncoding *Encoding pkg encoding/base64, func NewDecoder(*Encoding, io.Reader) io.Reader pkg encoding/base64, func NewEncoder(*Encoding, io.Writer) io.WriteCloser pkg encoding/base64, func NewEncoding(string) *Encoding pkg encoding/base64, method (*Encoding) Decode([]uint8, []uint8) (int, error) pkg encoding/base64, method (*Encoding) DecodeString(string) ([]uint8, error) pkg encoding/base64, method (*Encoding) DecodedLen(int) int pkg encoding/base64, method (*Encoding) Encode([]uint8, []uint8) pkg encoding/base64, method (*Encoding) EncodeToString([]uint8) string pkg encoding/base64, method (*Encoding) EncodedLen(int) int pkg encoding/base64, method (CorruptInputError) Error() string pkg encoding/base64, type CorruptInputError int64 pkg encoding/base64, type Encoding struct pkg encoding/base64, var StdEncoding *Encoding pkg encoding/base64, var URLEncoding *Encoding pkg encoding/binary, const MaxVarintLen16 ideal-int pkg encoding/binary, const MaxVarintLen32 ideal-int pkg encoding/binary, const MaxVarintLen64 ideal-int pkg encoding/binary, func PutUvarint([]uint8, uint64) int pkg encoding/binary, func PutVarint([]uint8, int64) int pkg encoding/binary, func Read(io.Reader, ByteOrder, interface{}) error pkg encoding/binary, func ReadUvarint(io.ByteReader) (uint64, error) pkg encoding/binary, func ReadVarint(io.ByteReader) (int64, error) pkg encoding/binary, func Size(interface{}) int pkg encoding/binary, func Uvarint([]uint8) (uint64, int) pkg encoding/binary, func Varint([]uint8) (int64, int) pkg encoding/binary, func Write(io.Writer, ByteOrder, interface{}) error pkg encoding/binary, type ByteOrder interface { PutUint16, PutUint32, PutUint64, String, Uint16, Uint32, Uint64 } pkg encoding/binary, type ByteOrder interface, PutUint16([]uint8, uint16) pkg encoding/binary, type ByteOrder interface, PutUint32([]uint8, uint32) pkg encoding/binary, type ByteOrder interface, PutUint64([]uint8, uint64) pkg encoding/binary, type ByteOrder interface, String() string pkg encoding/binary, type ByteOrder interface, Uint16([]uint8) uint16 pkg encoding/binary, type ByteOrder interface, Uint32([]uint8) uint32 pkg encoding/binary, type ByteOrder interface, Uint64([]uint8) uint64 pkg encoding/binary, var BigEndian bigEndian pkg encoding/binary, var LittleEndian littleEndian pkg encoding/csv, func NewReader(io.Reader) *Reader pkg encoding/csv, func NewWriter(io.Writer) *Writer pkg encoding/csv, method (*ParseError) Error() string pkg encoding/csv, method (*Reader) Read() ([]string, error) pkg encoding/csv, method (*Reader) ReadAll() ([][]string, error) pkg encoding/csv, method (*Writer) Flush() pkg encoding/csv, method (*Writer) Write([]string) error pkg encoding/csv, method (*Writer) WriteAll([][]string) error pkg encoding/csv, type ParseError struct pkg encoding/csv, type ParseError struct, Column int pkg encoding/csv, type ParseError struct, Err error pkg encoding/csv, type ParseError struct, Line int pkg encoding/csv, type Reader struct pkg encoding/csv, type Reader struct, Comma int32 pkg encoding/csv, type Reader struct, Comment int32 pkg encoding/csv, type Reader struct, FieldsPerRecord int pkg encoding/csv, type Reader struct, LazyQuotes bool pkg encoding/csv, type Reader struct, TrailingComma bool pkg encoding/csv, type Reader struct, TrimLeadingSpace bool pkg encoding/csv, type Writer struct pkg encoding/csv, type Writer struct, Comma int32 pkg encoding/csv, type Writer struct, UseCRLF bool pkg encoding/csv, var ErrBareQuote error pkg encoding/csv, var ErrFieldCount error pkg encoding/csv, var ErrQuote error pkg encoding/csv, var ErrTrailingComma error pkg encoding/gob, func NewDecoder(io.Reader) *Decoder pkg encoding/gob, func NewEncoder(io.Writer) *Encoder pkg encoding/gob, func Register(interface{}) pkg encoding/gob, func RegisterName(string, interface{}) pkg encoding/gob, method (*Decoder) Decode(interface{}) error pkg encoding/gob, method (*Decoder) DecodeValue(reflect.Value) error pkg encoding/gob, method (*Encoder) Encode(interface{}) error pkg encoding/gob, method (*Encoder) EncodeValue(reflect.Value) error pkg encoding/gob, type CommonType struct pkg encoding/gob, type CommonType struct, Id typeId pkg encoding/gob, type CommonType struct, Name string pkg encoding/gob, type Decoder struct pkg encoding/gob, type Encoder struct pkg encoding/gob, type GobDecoder interface { GobDecode } pkg encoding/gob, type GobDecoder interface, GobDecode([]uint8) error pkg encoding/gob, type GobEncoder interface { GobEncode } pkg encoding/gob, type GobEncoder interface, GobEncode() ([]uint8, error) pkg encoding/hex, func Decode([]uint8, []uint8) (int, error) pkg encoding/hex, func DecodeString(string) ([]uint8, error) pkg encoding/hex, func DecodedLen(int) int pkg encoding/hex, func Dump([]uint8) string pkg encoding/hex, func Dumper(io.Writer) io.WriteCloser pkg encoding/hex, func Encode([]uint8, []uint8) int pkg encoding/hex, func EncodeToString([]uint8) string pkg encoding/hex, func EncodedLen(int) int pkg encoding/hex, method (InvalidByteError) Error() string pkg encoding/hex, type InvalidByteError uint8 pkg encoding/hex, var ErrLength error pkg encoding/json, func Compact(*bytes.Buffer, []uint8) error pkg encoding/json, func HTMLEscape(*bytes.Buffer, []uint8) pkg encoding/json, func Indent(*bytes.Buffer, []uint8, string, string) error pkg encoding/json, func Marshal(interface{}) ([]uint8, error) pkg encoding/json, func MarshalIndent(interface{}, string, string) ([]uint8, error) pkg encoding/json, func NewDecoder(io.Reader) *Decoder pkg encoding/json, func NewEncoder(io.Writer) *Encoder pkg encoding/json, func Unmarshal([]uint8, interface{}) error pkg encoding/json, method (*Decoder) Decode(interface{}) error pkg encoding/json, method (*Encoder) Encode(interface{}) error pkg encoding/json, method (*InvalidUTF8Error) Error() string pkg encoding/json, method (*InvalidUnmarshalError) Error() string pkg encoding/json, method (*MarshalerError) Error() string pkg encoding/json, method (*RawMessage) MarshalJSON() ([]uint8, error) pkg encoding/json, method (*RawMessage) UnmarshalJSON([]uint8) error pkg encoding/json, method (*SyntaxError) Error() string pkg encoding/json, method (*UnmarshalFieldError) Error() string pkg encoding/json, method (*UnmarshalTypeError) Error() string pkg encoding/json, method (*UnsupportedTypeError) Error() string pkg encoding/json, method (*UnsupportedValueError) Error() string pkg encoding/json, type Decoder struct pkg encoding/json, type Encoder struct pkg encoding/json, type InvalidUTF8Error struct pkg encoding/json, type InvalidUTF8Error struct, S string pkg encoding/json, type InvalidUnmarshalError struct pkg encoding/json, type InvalidUnmarshalError struct, Type reflect.Type pkg encoding/json, type Marshaler interface { MarshalJSON } pkg encoding/json, type Marshaler interface, MarshalJSON() ([]uint8, error) pkg encoding/json, type MarshalerError struct pkg encoding/json, type MarshalerError struct, Err error pkg encoding/json, type MarshalerError struct, Type reflect.Type pkg encoding/json, type RawMessage []uint8 pkg encoding/json, type SyntaxError struct pkg encoding/json, type SyntaxError struct, Offset int64 pkg encoding/json, type UnmarshalFieldError struct pkg encoding/json, type UnmarshalFieldError struct, Field reflect.StructField pkg encoding/json, type UnmarshalFieldError struct, Key string pkg encoding/json, type UnmarshalFieldError struct, Type reflect.Type pkg encoding/json, type UnmarshalTypeError struct pkg encoding/json, type UnmarshalTypeError struct, Type reflect.Type pkg encoding/json, type UnmarshalTypeError struct, Value string pkg encoding/json, type Unmarshaler interface { UnmarshalJSON } pkg encoding/json, type Unmarshaler interface, UnmarshalJSON([]uint8) error pkg encoding/json, type UnsupportedTypeError struct pkg encoding/json, type UnsupportedTypeError struct, Type reflect.Type pkg encoding/json, type UnsupportedValueError struct pkg encoding/json, type UnsupportedValueError struct, Str string pkg encoding/json, type UnsupportedValueError struct, Value reflect.Value pkg encoding/pem, func Decode([]uint8) (*Block, []uint8) pkg encoding/pem, func Encode(io.Writer, *Block) error pkg encoding/pem, func EncodeToMemory(*Block) []uint8 pkg encoding/pem, type Block struct pkg encoding/pem, type Block struct, Bytes []uint8 pkg encoding/pem, type Block struct, Headers map[string]string pkg encoding/pem, type Block struct, Type string pkg encoding/xml, const Header ideal-string pkg encoding/xml, func CopyToken(Token) Token pkg encoding/xml, func Escape(io.Writer, []uint8) pkg encoding/xml, func Marshal(interface{}) ([]uint8, error) pkg encoding/xml, func MarshalIndent(interface{}, string, string) ([]uint8, error) pkg encoding/xml, func NewDecoder(io.Reader) *Decoder pkg encoding/xml, func NewEncoder(io.Writer) *Encoder pkg encoding/xml, func Unmarshal([]uint8, interface{}) error pkg encoding/xml, method (*Decoder) Decode(interface{}) error pkg encoding/xml, method (*Decoder) DecodeElement(interface{}, *StartElement) error pkg encoding/xml, method (*Decoder) RawToken() (Token, error) pkg encoding/xml, method (*Decoder) Skip() error pkg encoding/xml, method (*Decoder) Token() (Token, error) pkg encoding/xml, method (*Encoder) Encode(interface{}) error pkg encoding/xml, method (*SyntaxError) Error() string pkg encoding/xml, method (*TagPathError) Error() string pkg encoding/xml, method (*UnsupportedTypeError) Error() string pkg encoding/xml, method (CharData) Copy() CharData pkg encoding/xml, method (Comment) Copy() Comment pkg encoding/xml, method (Directive) Copy() Directive pkg encoding/xml, method (ProcInst) Copy() ProcInst pkg encoding/xml, method (StartElement) Copy() StartElement pkg encoding/xml, method (UnmarshalError) Error() string pkg encoding/xml, type Attr struct pkg encoding/xml, type Attr struct, Name Name pkg encoding/xml, type Attr struct, Value string pkg encoding/xml, type CharData []uint8 pkg encoding/xml, type Comment []uint8 pkg encoding/xml, type Decoder struct pkg encoding/xml, type Decoder struct, AutoClose []string pkg encoding/xml, type Decoder struct, CharsetReader func(string, io.Reader) (io.Reader, error) pkg encoding/xml, type Decoder struct, Entity map[string]string pkg encoding/xml, type Decoder struct, Strict bool pkg encoding/xml, type Directive []uint8 pkg encoding/xml, type Encoder struct pkg encoding/xml, type EndElement struct pkg encoding/xml, type EndElement struct, Name Name pkg encoding/xml, type Name struct pkg encoding/xml, type Name struct, Local string pkg encoding/xml, type Name struct, Space string pkg encoding/xml, type ProcInst struct pkg encoding/xml, type ProcInst struct, Inst []uint8 pkg encoding/xml, type ProcInst struct, Target string pkg encoding/xml, type StartElement struct pkg encoding/xml, type StartElement struct, Attr []Attr pkg encoding/xml, type StartElement struct, Name Name pkg encoding/xml, type SyntaxError struct pkg encoding/xml, type SyntaxError struct, Line int pkg encoding/xml, type SyntaxError struct, Msg string pkg encoding/xml, type TagPathError struct pkg encoding/xml, type TagPathError struct, Field1 string pkg encoding/xml, type TagPathError struct, Field2 string pkg encoding/xml, type TagPathError struct, Struct reflect.Type pkg encoding/xml, type TagPathError struct, Tag1 string pkg encoding/xml, type TagPathError struct, Tag2 string pkg encoding/xml, type Token interface {} pkg encoding/xml, type UnmarshalError string pkg encoding/xml, type UnsupportedTypeError struct pkg encoding/xml, type UnsupportedTypeError struct, Type reflect.Type pkg encoding/xml, var HTMLAutoClose []string pkg encoding/xml, var HTMLEntity map[string]string pkg errors, func New(string) error pkg expvar, func Do(func(KeyValue)) pkg expvar, func Get(string) Var pkg expvar, func NewFloat(string) *Float pkg expvar, func NewInt(string) *Int pkg expvar, func NewMap(string) *Map pkg expvar, func NewString(string) *String pkg expvar, func Publish(string, Var) pkg expvar, method (*Float) Add(float64) pkg expvar, method (*Float) Set(float64) pkg expvar, method (*Float) String() string pkg expvar, method (*Int) Add(int64) pkg expvar, method (*Int) Set(int64) pkg expvar, method (*Int) String() string pkg expvar, method (*Map) Add(string, int64) pkg expvar, method (*Map) AddFloat(string, float64) pkg expvar, method (*Map) Do(func(KeyValue)) pkg expvar, method (*Map) Get(string) Var pkg expvar, method (*Map) Init() *Map pkg expvar, method (*Map) Set(string, Var) pkg expvar, method (*Map) String() string pkg expvar, method (*String) Set(string) pkg expvar, method (*String) String() string pkg expvar, method (Func) String() string pkg expvar, type Float struct pkg expvar, type Func func() interface{} pkg expvar, type Int struct pkg expvar, type KeyValue struct pkg expvar, type KeyValue struct, Key string pkg expvar, type KeyValue struct, Value Var pkg expvar, type Map struct pkg expvar, type String struct pkg expvar, type Var interface { String } pkg expvar, type Var interface, String() string pkg flag, const ContinueOnError ErrorHandling pkg flag, const ExitOnError ErrorHandling pkg flag, const PanicOnError ErrorHandling pkg flag, func Arg(int) string pkg flag, func Args() []string pkg flag, func Bool(string, bool, string) *bool pkg flag, func BoolVar(*bool, string, bool, string) pkg flag, func Duration(string, time.Duration, string) *time.Duration pkg flag, func DurationVar(*time.Duration, string, time.Duration, string) pkg flag, func Float64(string, float64, string) *float64 pkg flag, func Float64Var(*float64, string, float64, string) pkg flag, func Int(string, int, string) *int pkg flag, func Int64(string, int64, string) *int64 pkg flag, func Int64Var(*int64, string, int64, string) pkg flag, func IntVar(*int, string, int, string) pkg flag, func Lookup(string) *Flag pkg flag, func NArg() int pkg flag, func NFlag() int pkg flag, func NewFlagSet(string, ErrorHandling) *FlagSet pkg flag, func Parse() pkg flag, func Parsed() bool pkg flag, func PrintDefaults() pkg flag, func Set(string, string) error pkg flag, func String(string, string, string) *string pkg flag, func StringVar(*string, string, string, string) pkg flag, func Uint(string, uint, string) *uint pkg flag, func Uint64(string, uint64, string) *uint64 pkg flag, func Uint64Var(*uint64, string, uint64, string) pkg flag, func UintVar(*uint, string, uint, string) pkg flag, func Var(Value, string, string) pkg flag, func Visit(func(*Flag)) pkg flag, func VisitAll(func(*Flag)) pkg flag, method (*FlagSet) Arg(int) string pkg flag, method (*FlagSet) Args() []string pkg flag, method (*FlagSet) Bool(string, bool, string) *bool pkg flag, method (*FlagSet) BoolVar(*bool, string, bool, string) pkg flag, method (*FlagSet) Duration(string, time.Duration, string) *time.Duration pkg flag, method (*FlagSet) DurationVar(*time.Duration, string, time.Duration, string) pkg flag, method (*FlagSet) Float64(string, float64, string) *float64 pkg flag, method (*FlagSet) Float64Var(*float64, string, float64, string) pkg flag, method (*FlagSet) Init(string, ErrorHandling) pkg flag, method (*FlagSet) Int(string, int, string) *int pkg flag, method (*FlagSet) Int64(string, int64, string) *int64 pkg flag, method (*FlagSet) Int64Var(*int64, string, int64, string) pkg flag, method (*FlagSet) IntVar(*int, string, int, string) pkg flag, method (*FlagSet) Lookup(string) *Flag pkg flag, method (*FlagSet) NArg() int pkg flag, method (*FlagSet) NFlag() int pkg flag, method (*FlagSet) Parse([]string) error pkg flag, method (*FlagSet) Parsed() bool pkg flag, method (*FlagSet) PrintDefaults() pkg flag, method (*FlagSet) Set(string, string) error pkg flag, method (*FlagSet) SetOutput(io.Writer) pkg flag, method (*FlagSet) String(string, string, string) *string pkg flag, method (*FlagSet) StringVar(*string, string, string, string) pkg flag, method (*FlagSet) Uint(string, uint, string) *uint pkg flag, method (*FlagSet) Uint64(string, uint64, string) *uint64 pkg flag, method (*FlagSet) Uint64Var(*uint64, string, uint64, string) pkg flag, method (*FlagSet) UintVar(*uint, string, uint, string) pkg flag, method (*FlagSet) Var(Value, string, string) pkg flag, method (*FlagSet) Visit(func(*Flag)) pkg flag, method (*FlagSet) VisitAll(func(*Flag)) pkg flag, type ErrorHandling int pkg flag, type Flag struct pkg flag, type Flag struct, DefValue string pkg flag, type Flag struct, Name string pkg flag, type Flag struct, Usage string pkg flag, type Flag struct, Value Value pkg flag, type FlagSet struct pkg flag, type FlagSet struct, Usage func() pkg flag, type Value interface { Set, String } pkg flag, type Value interface, Set(string) error pkg flag, type Value interface, String() string pkg flag, var ErrHelp error pkg flag, var Usage func() pkg fmt, func Errorf(string, ...interface{}) error pkg fmt, func Fprint(io.Writer, ...interface{}) (int, error) pkg fmt, func Fprintf(io.Writer, string, ...interface{}) (int, error) pkg fmt, func Fprintln(io.Writer, ...interface{}) (int, error) pkg fmt, func Fscan(io.Reader, ...interface{}) (int, error) pkg fmt, func Fscanf(io.Reader, string, ...interface{}) (int, error) pkg fmt, func Fscanln(io.Reader, ...interface{}) (int, error) pkg fmt, func Print(...interface{}) (int, error) pkg fmt, func Printf(string, ...interface{}) (int, error) pkg fmt, func Println(...interface{}) (int, error) pkg fmt, func Scan(...interface{}) (int, error) pkg fmt, func Scanf(string, ...interface{}) (int, error) pkg fmt, func Scanln(...interface{}) (int, error) pkg fmt, func Sprint(...interface{}) string pkg fmt, func Sprintf(string, ...interface{}) string pkg fmt, func Sprintln(...interface{}) string pkg fmt, func Sscan(string, ...interface{}) (int, error) pkg fmt, func Sscanf(string, string, ...interface{}) (int, error) pkg fmt, func Sscanln(string, ...interface{}) (int, error) pkg fmt, type Formatter interface { Format } pkg fmt, type Formatter interface, Format(State, int32) pkg fmt, type GoStringer interface { GoString } pkg fmt, type GoStringer interface, GoString() string pkg fmt, type ScanState interface { Read, ReadRune, SkipSpace, Token, UnreadRune, Width } pkg fmt, type ScanState interface, Read([]uint8) (int, error) pkg fmt, type ScanState interface, ReadRune() (int32, int, error) pkg fmt, type ScanState interface, SkipSpace() pkg fmt, type ScanState interface, Token(bool, func(int32) bool) ([]uint8, error) pkg fmt, type ScanState interface, UnreadRune() error pkg fmt, type ScanState interface, Width() (int, bool) pkg fmt, type Scanner interface { Scan } pkg fmt, type Scanner interface, Scan(ScanState, int32) error pkg fmt, type State interface { Flag, Precision, Width, Write } pkg fmt, type State interface, Flag(int) bool pkg fmt, type State interface, Precision() (int, bool) pkg fmt, type State interface, Width() (int, bool) pkg fmt, type State interface, Write([]uint8) (int, error) pkg fmt, type Stringer interface { String } pkg fmt, type Stringer interface, String() string pkg go/ast, const Bad ObjKind pkg go/ast, const Con ObjKind pkg go/ast, const FilterFuncDuplicates MergeMode pkg go/ast, const FilterImportDuplicates MergeMode pkg go/ast, const FilterUnassociatedComments MergeMode pkg go/ast, const Fun ObjKind pkg go/ast, const Lbl ObjKind pkg go/ast, const Pkg ObjKind pkg go/ast, const RECV ChanDir pkg go/ast, const SEND ChanDir pkg go/ast, const Typ ObjKind pkg go/ast, const Var ObjKind pkg go/ast, func FileExports(*File) bool pkg go/ast, func FilterDecl(Decl, Filter) bool pkg go/ast, func FilterFile(*File, Filter) bool pkg go/ast, func FilterPackage(*Package, Filter) bool pkg go/ast, func Fprint(io.Writer, *token.FileSet, interface{}, FieldFilter) error pkg go/ast, func Inspect(Node, func(Node) bool) pkg go/ast, func IsExported(string) bool pkg go/ast, func MergePackageFiles(*Package, MergeMode) *File pkg go/ast, func NewIdent(string) *Ident pkg go/ast, func NewObj(ObjKind, string) *Object pkg go/ast, func NewPackage(*token.FileSet, map[string]*File, Importer, *Scope) (*Package, error) pkg go/ast, func NewScope(*Scope) *Scope pkg go/ast, func NotNilFilter(string, reflect.Value) bool pkg go/ast, func PackageExports(*Package) bool pkg go/ast, func Print(*token.FileSet, interface{}) error pkg go/ast, func SortImports(*token.FileSet, *File) pkg go/ast, func Walk(Visitor, Node) pkg go/ast, method (*ArrayType) End() token.Pos pkg go/ast, method (*ArrayType) Pos() token.Pos pkg go/ast, method (*AssignStmt) End() token.Pos pkg go/ast, method (*AssignStmt) Pos() token.Pos pkg go/ast, method (*BadDecl) End() token.Pos pkg go/ast, method (*BadDecl) Pos() token.Pos pkg go/ast, method (*BadExpr) End() token.Pos pkg go/ast, method (*BadExpr) Pos() token.Pos pkg go/ast, method (*BadStmt) End() token.Pos pkg go/ast, method (*BadStmt) Pos() token.Pos pkg go/ast, method (*BasicLit) End() token.Pos pkg go/ast, method (*BasicLit) Pos() token.Pos pkg go/ast, method (*BinaryExpr) End() token.Pos pkg go/ast, method (*BinaryExpr) Pos() token.Pos pkg go/ast, method (*BlockStmt) End() token.Pos pkg go/ast, method (*BlockStmt) Pos() token.Pos pkg go/ast, method (*BranchStmt) End() token.Pos pkg go/ast, method (*BranchStmt) Pos() token.Pos pkg go/ast, method (*CallExpr) End() token.Pos pkg go/ast, method (*CallExpr) Pos() token.Pos pkg go/ast, method (*CaseClause) End() token.Pos pkg go/ast, method (*CaseClause) Pos() token.Pos pkg go/ast, method (*ChanType) End() token.Pos pkg go/ast, method (*ChanType) Pos() token.Pos pkg go/ast, method (*CommClause) End() token.Pos pkg go/ast, method (*CommClause) Pos() token.Pos pkg go/ast, method (*Comment) End() token.Pos pkg go/ast, method (*Comment) Pos() token.Pos pkg go/ast, method (*CommentGroup) End() token.Pos pkg go/ast, method (*CommentGroup) Pos() token.Pos pkg go/ast, method (*CommentGroup) Text() string pkg go/ast, method (*CompositeLit) End() token.Pos pkg go/ast, method (*CompositeLit) Pos() token.Pos pkg go/ast, method (*DeclStmt) End() token.Pos pkg go/ast, method (*DeclStmt) Pos() token.Pos pkg go/ast, method (*DeferStmt) End() token.Pos pkg go/ast, method (*DeferStmt) Pos() token.Pos pkg go/ast, method (*Ellipsis) End() token.Pos pkg go/ast, method (*Ellipsis) Pos() token.Pos pkg go/ast, method (*EmptyStmt) End() token.Pos pkg go/ast, method (*EmptyStmt) Pos() token.Pos pkg go/ast, method (*ExprStmt) End() token.Pos pkg go/ast, method (*ExprStmt) Pos() token.Pos pkg go/ast, method (*Field) End() token.Pos pkg go/ast, method (*Field) Pos() token.Pos pkg go/ast, method (*FieldList) End() token.Pos pkg go/ast, method (*FieldList) NumFields() int pkg go/ast, method (*FieldList) Pos() token.Pos pkg go/ast, method (*File) End() token.Pos pkg go/ast, method (*File) Pos() token.Pos pkg go/ast, method (*ForStmt) End() token.Pos pkg go/ast, method (*ForStmt) Pos() token.Pos pkg go/ast, method (*FuncDecl) End() token.Pos pkg go/ast, method (*FuncDecl) Pos() token.Pos pkg go/ast, method (*FuncLit) End() token.Pos pkg go/ast, method (*FuncLit) Pos() token.Pos pkg go/ast, method (*FuncType) End() token.Pos pkg go/ast, method (*FuncType) Pos() token.Pos pkg go/ast, method (*GenDecl) End() token.Pos pkg go/ast, method (*GenDecl) Pos() token.Pos pkg go/ast, method (*GoStmt) End() token.Pos pkg go/ast, method (*GoStmt) Pos() token.Pos pkg go/ast, method (*Ident) End() token.Pos pkg go/ast, method (*Ident) IsExported() bool pkg go/ast, method (*Ident) Pos() token.Pos pkg go/ast, method (*Ident) String() string pkg go/ast, method (*IfStmt) End() token.Pos pkg go/ast, method (*IfStmt) Pos() token.Pos pkg go/ast, method (*ImportSpec) End() token.Pos pkg go/ast, method (*ImportSpec) Pos() token.Pos pkg go/ast, method (*IncDecStmt) End() token.Pos pkg go/ast, method (*IncDecStmt) Pos() token.Pos pkg go/ast, method (*IndexExpr) End() token.Pos pkg go/ast, method (*IndexExpr) Pos() token.Pos pkg go/ast, method (*InterfaceType) End() token.Pos pkg go/ast, method (*InterfaceType) Pos() token.Pos pkg go/ast, method (*KeyValueExpr) End() token.Pos pkg go/ast, method (*KeyValueExpr) Pos() token.Pos pkg go/ast, method (*LabeledStmt) End() token.Pos pkg go/ast, method (*LabeledStmt) Pos() token.Pos pkg go/ast, method (*MapType) End() token.Pos pkg go/ast, method (*MapType) Pos() token.Pos pkg go/ast, method (*Object) Pos() token.Pos pkg go/ast, method (*Package) End() token.Pos pkg go/ast, method (*Package) Pos() token.Pos pkg go/ast, method (*ParenExpr) End() token.Pos pkg go/ast, method (*ParenExpr) Pos() token.Pos pkg go/ast, method (*RangeStmt) End() token.Pos pkg go/ast, method (*RangeStmt) Pos() token.Pos pkg go/ast, method (*ReturnStmt) End() token.Pos pkg go/ast, method (*ReturnStmt) Pos() token.Pos pkg go/ast, method (*Scope) Insert(*Object) *Object pkg go/ast, method (*Scope) Lookup(string) *Object pkg go/ast, method (*Scope) String() string pkg go/ast, method (*SelectStmt) End() token.Pos pkg go/ast, method (*SelectStmt) Pos() token.Pos pkg go/ast, method (*SelectorExpr) End() token.Pos pkg go/ast, method (*SelectorExpr) Pos() token.Pos pkg go/ast, method (*SendStmt) End() token.Pos pkg go/ast, method (*SendStmt) Pos() token.Pos pkg go/ast, method (*SliceExpr) End() token.Pos pkg go/ast, method (*SliceExpr) Pos() token.Pos pkg go/ast, method (*StarExpr) End() token.Pos pkg go/ast, method (*StarExpr) Pos() token.Pos pkg go/ast, method (*StructType) End() token.Pos pkg go/ast, method (*StructType) Pos() token.Pos pkg go/ast, method (*SwitchStmt) End() token.Pos pkg go/ast, method (*SwitchStmt) Pos() token.Pos pkg go/ast, method (*TypeAssertExpr) End() token.Pos pkg go/ast, method (*TypeAssertExpr) Pos() token.Pos pkg go/ast, method (*TypeSpec) End() token.Pos pkg go/ast, method (*TypeSpec) Pos() token.Pos pkg go/ast, method (*TypeSwitchStmt) End() token.Pos pkg go/ast, method (*TypeSwitchStmt) Pos() token.Pos pkg go/ast, method (*UnaryExpr) End() token.Pos pkg go/ast, method (*UnaryExpr) Pos() token.Pos pkg go/ast, method (*ValueSpec) End() token.Pos pkg go/ast, method (*ValueSpec) Pos() token.Pos pkg go/ast, method (ObjKind) String() string pkg go/ast, type ArrayType struct pkg go/ast, type ArrayType struct, Elt Expr pkg go/ast, type ArrayType struct, Lbrack token.Pos pkg go/ast, type ArrayType struct, Len Expr pkg go/ast, type AssignStmt struct pkg go/ast, type AssignStmt struct, Lhs []Expr pkg go/ast, type AssignStmt struct, Rhs []Expr pkg go/ast, type AssignStmt struct, Tok token.Token pkg go/ast, type AssignStmt struct, TokPos token.Pos pkg go/ast, type BadDecl struct pkg go/ast, type BadDecl struct, From token.Pos pkg go/ast, type BadDecl struct, To token.Pos pkg go/ast, type BadExpr struct pkg go/ast, type BadExpr struct, From token.Pos pkg go/ast, type BadExpr struct, To token.Pos pkg go/ast, type BadStmt struct pkg go/ast, type BadStmt struct, From token.Pos pkg go/ast, type BadStmt struct, To token.Pos pkg go/ast, type BasicLit struct pkg go/ast, type BasicLit struct, Kind token.Token pkg go/ast, type BasicLit struct, Value string pkg go/ast, type BasicLit struct, ValuePos token.Pos pkg go/ast, type BinaryExpr struct pkg go/ast, type BinaryExpr struct, Op token.Token pkg go/ast, type BinaryExpr struct, OpPos token.Pos pkg go/ast, type BinaryExpr struct, X Expr pkg go/ast, type BinaryExpr struct, Y Expr pkg go/ast, type BlockStmt struct pkg go/ast, type BlockStmt struct, Lbrace token.Pos pkg go/ast, type BlockStmt struct, List []Stmt pkg go/ast, type BlockStmt struct, Rbrace token.Pos pkg go/ast, type BranchStmt struct pkg go/ast, type BranchStmt struct, Label *Ident pkg go/ast, type BranchStmt struct, Tok token.Token pkg go/ast, type BranchStmt struct, TokPos token.Pos pkg go/ast, type CallExpr struct pkg go/ast, type CallExpr struct, Args []Expr pkg go/ast, type CallExpr struct, Ellipsis token.Pos pkg go/ast, type CallExpr struct, Fun Expr pkg go/ast, type CallExpr struct, Lparen token.Pos pkg go/ast, type CallExpr struct, Rparen token.Pos pkg go/ast, type CaseClause struct pkg go/ast, type CaseClause struct, Body []Stmt pkg go/ast, type CaseClause struct, Case token.Pos pkg go/ast, type CaseClause struct, Colon token.Pos pkg go/ast, type CaseClause struct, List []Expr pkg go/ast, type ChanDir int pkg go/ast, type ChanType struct pkg go/ast, type ChanType struct, Begin token.Pos pkg go/ast, type ChanType struct, Dir ChanDir pkg go/ast, type ChanType struct, Value Expr pkg go/ast, type CommClause struct pkg go/ast, type CommClause struct, Body []Stmt pkg go/ast, type CommClause struct, Case token.Pos pkg go/ast, type CommClause struct, Colon token.Pos pkg go/ast, type CommClause struct, Comm Stmt pkg go/ast, type Comment struct pkg go/ast, type Comment struct, Slash token.Pos pkg go/ast, type Comment struct, Text string pkg go/ast, type CommentGroup struct pkg go/ast, type CommentGroup struct, List []*Comment pkg go/ast, type CompositeLit struct pkg go/ast, type CompositeLit struct, Elts []Expr pkg go/ast, type CompositeLit struct, Lbrace token.Pos pkg go/ast, type CompositeLit struct, Rbrace token.Pos pkg go/ast, type CompositeLit struct, Type Expr pkg go/ast, type Decl interface, End() token.Pos pkg go/ast, type Decl interface, Pos() token.Pos pkg go/ast, type Decl interface, unexported methods pkg go/ast, type DeclStmt struct pkg go/ast, type DeclStmt struct, Decl Decl pkg go/ast, type DeferStmt struct pkg go/ast, type DeferStmt struct, Call *CallExpr pkg go/ast, type DeferStmt struct, Defer token.Pos pkg go/ast, type Ellipsis struct pkg go/ast, type Ellipsis struct, Ellipsis token.Pos pkg go/ast, type Ellipsis struct, Elt Expr pkg go/ast, type EmptyStmt struct pkg go/ast, type EmptyStmt struct, Semicolon token.Pos pkg go/ast, type Expr interface, End() token.Pos pkg go/ast, type Expr interface, Pos() token.Pos pkg go/ast, type Expr interface, unexported methods pkg go/ast, type ExprStmt struct pkg go/ast, type ExprStmt struct, X Expr pkg go/ast, type Field struct pkg go/ast, type Field struct, Comment *CommentGroup pkg go/ast, type Field struct, Doc *CommentGroup pkg go/ast, type Field struct, Names []*Ident pkg go/ast, type Field struct, Tag *BasicLit pkg go/ast, type Field struct, Type Expr pkg go/ast, type FieldFilter func(string, reflect.Value) bool pkg go/ast, type FieldList struct pkg go/ast, type FieldList struct, Closing token.Pos pkg go/ast, type FieldList struct, List []*Field pkg go/ast, type FieldList struct, Opening token.Pos pkg go/ast, type File struct pkg go/ast, type File struct, Comments []*CommentGroup pkg go/ast, type File struct, Decls []Decl pkg go/ast, type File struct, Doc *CommentGroup pkg go/ast, type File struct, Imports []*ImportSpec pkg go/ast, type File struct, Name *Ident pkg go/ast, type File struct, Package token.Pos pkg go/ast, type File struct, Scope *Scope pkg go/ast, type File struct, Unresolved []*Ident pkg go/ast, type Filter func(string) bool pkg go/ast, type ForStmt struct pkg go/ast, type ForStmt struct, Body *BlockStmt pkg go/ast, type ForStmt struct, Cond Expr pkg go/ast, type ForStmt struct, For token.Pos pkg go/ast, type ForStmt struct, Init Stmt pkg go/ast, type ForStmt struct, Post Stmt pkg go/ast, type FuncDecl struct pkg go/ast, type FuncDecl struct, Body *BlockStmt pkg go/ast, type FuncDecl struct, Doc *CommentGroup pkg go/ast, type FuncDecl struct, Name *Ident pkg go/ast, type FuncDecl struct, Recv *FieldList pkg go/ast, type FuncDecl struct, Type *FuncType pkg go/ast, type FuncLit struct pkg go/ast, type FuncLit struct, Body *BlockStmt pkg go/ast, type FuncLit struct, Type *FuncType pkg go/ast, type FuncType struct pkg go/ast, type FuncType struct, Func token.Pos pkg go/ast, type FuncType struct, Params *FieldList pkg go/ast, type FuncType struct, Results *FieldList pkg go/ast, type GenDecl struct pkg go/ast, type GenDecl struct, Doc *CommentGroup pkg go/ast, type GenDecl struct, Lparen token.Pos pkg go/ast, type GenDecl struct, Rparen token.Pos pkg go/ast, type GenDecl struct, Specs []Spec pkg go/ast, type GenDecl struct, Tok token.Token pkg go/ast, type GenDecl struct, TokPos token.Pos pkg go/ast, type GoStmt struct pkg go/ast, type GoStmt struct, Call *CallExpr pkg go/ast, type GoStmt struct, Go token.Pos pkg go/ast, type Ident struct pkg go/ast, type Ident struct, Name string pkg go/ast, type Ident struct, NamePos token.Pos pkg go/ast, type Ident struct, Obj *Object pkg go/ast, type IfStmt struct pkg go/ast, type IfStmt struct, Body *BlockStmt pkg go/ast, type IfStmt struct, Cond Expr pkg go/ast, type IfStmt struct, Else Stmt pkg go/ast, type IfStmt struct, If token.Pos pkg go/ast, type IfStmt struct, Init Stmt pkg go/ast, type ImportSpec struct pkg go/ast, type ImportSpec struct, Comment *CommentGroup pkg go/ast, type ImportSpec struct, Doc *CommentGroup pkg go/ast, type ImportSpec struct, EndPos token.Pos pkg go/ast, type ImportSpec struct, Name *Ident pkg go/ast, type ImportSpec struct, Path *BasicLit pkg go/ast, type Importer func(map[string]*Object, string) (*Object, error) pkg go/ast, type IncDecStmt struct pkg go/ast, type IncDecStmt struct, Tok token.Token pkg go/ast, type IncDecStmt struct, TokPos token.Pos pkg go/ast, type IncDecStmt struct, X Expr pkg go/ast, type IndexExpr struct pkg go/ast, type IndexExpr struct, Index Expr pkg go/ast, type IndexExpr struct, Lbrack token.Pos pkg go/ast, type IndexExpr struct, Rbrack token.Pos pkg go/ast, type IndexExpr struct, X Expr pkg go/ast, type InterfaceType struct pkg go/ast, type InterfaceType struct, Incomplete bool pkg go/ast, type InterfaceType struct, Interface token.Pos pkg go/ast, type InterfaceType struct, Methods *FieldList pkg go/ast, type KeyValueExpr struct pkg go/ast, type KeyValueExpr struct, Colon token.Pos pkg go/ast, type KeyValueExpr struct, Key Expr pkg go/ast, type KeyValueExpr struct, Value Expr pkg go/ast, type LabeledStmt struct pkg go/ast, type LabeledStmt struct, Colon token.Pos pkg go/ast, type LabeledStmt struct, Label *Ident pkg go/ast, type LabeledStmt struct, Stmt Stmt pkg go/ast, type MapType struct pkg go/ast, type MapType struct, Key Expr pkg go/ast, type MapType struct, Map token.Pos pkg go/ast, type MapType struct, Value Expr pkg go/ast, type MergeMode uint pkg go/ast, type Node interface { End, Pos } pkg go/ast, type Node interface, End() token.Pos pkg go/ast, type Node interface, Pos() token.Pos pkg go/ast, type ObjKind int pkg go/ast, type Object struct pkg go/ast, type Object struct, Data interface{} pkg go/ast, type Object struct, Decl interface{} pkg go/ast, type Object struct, Kind ObjKind pkg go/ast, type Object struct, Name string pkg go/ast, type Object struct, Type interface{} pkg go/ast, type Package struct pkg go/ast, type Package struct, Files map[string]*File pkg go/ast, type Package struct, Imports map[string]*Object pkg go/ast, type Package struct, Name string pkg go/ast, type Package struct, Scope *Scope pkg go/ast, type ParenExpr struct pkg go/ast, type ParenExpr struct, Lparen token.Pos pkg go/ast, type ParenExpr struct, Rparen token.Pos pkg go/ast, type ParenExpr struct, X Expr pkg go/ast, type RangeStmt struct pkg go/ast, type RangeStmt struct, Body *BlockStmt pkg go/ast, type RangeStmt struct, For token.Pos pkg go/ast, type RangeStmt struct, Key Expr pkg go/ast, type RangeStmt struct, Tok token.Token pkg go/ast, type RangeStmt struct, TokPos token.Pos pkg go/ast, type RangeStmt struct, Value Expr pkg go/ast, type RangeStmt struct, X Expr pkg go/ast, type ReturnStmt struct pkg go/ast, type ReturnStmt struct, Results []Expr pkg go/ast, type ReturnStmt struct, Return token.Pos pkg go/ast, type Scope struct pkg go/ast, type Scope struct, Objects map[string]*Object pkg go/ast, type Scope struct, Outer *Scope pkg go/ast, type SelectStmt struct pkg go/ast, type SelectStmt struct, Body *BlockStmt pkg go/ast, type SelectStmt struct, Select token.Pos pkg go/ast, type SelectorExpr struct pkg go/ast, type SelectorExpr struct, Sel *Ident pkg go/ast, type SelectorExpr struct, X Expr pkg go/ast, type SendStmt struct pkg go/ast, type SendStmt struct, Arrow token.Pos pkg go/ast, type SendStmt struct, Chan Expr pkg go/ast, type SendStmt struct, Value Expr pkg go/ast, type SliceExpr struct pkg go/ast, type SliceExpr struct, High Expr pkg go/ast, type SliceExpr struct, Lbrack token.Pos pkg go/ast, type SliceExpr struct, Low Expr pkg go/ast, type SliceExpr struct, Rbrack token.Pos pkg go/ast, type SliceExpr struct, X Expr pkg go/ast, type Spec interface, End() token.Pos pkg go/ast, type Spec interface, Pos() token.Pos pkg go/ast, type Spec interface, unexported methods pkg go/ast, type StarExpr struct pkg go/ast, type StarExpr struct, Star token.Pos pkg go/ast, type StarExpr struct, X Expr pkg go/ast, type Stmt interface, End() token.Pos pkg go/ast, type Stmt interface, Pos() token.Pos pkg go/ast, type Stmt interface, unexported methods pkg go/ast, type StructType struct pkg go/ast, type StructType struct, Fields *FieldList pkg go/ast, type StructType struct, Incomplete bool pkg go/ast, type StructType struct, Struct token.Pos pkg go/ast, type SwitchStmt struct pkg go/ast, type SwitchStmt struct, Body *BlockStmt pkg go/ast, type SwitchStmt struct, Init Stmt pkg go/ast, type SwitchStmt struct, Switch token.Pos pkg go/ast, type SwitchStmt struct, Tag Expr pkg go/ast, type TypeAssertExpr struct pkg go/ast, type TypeAssertExpr struct, Type Expr pkg go/ast, type TypeAssertExpr struct, X Expr pkg go/ast, type TypeSpec struct pkg go/ast, type TypeSpec struct, Comment *CommentGroup pkg go/ast, type TypeSpec struct, Doc *CommentGroup pkg go/ast, type TypeSpec struct, Name *Ident pkg go/ast, type TypeSpec struct, Type Expr pkg go/ast, type TypeSwitchStmt struct pkg go/ast, type TypeSwitchStmt struct, Assign Stmt pkg go/ast, type TypeSwitchStmt struct, Body *BlockStmt pkg go/ast, type TypeSwitchStmt struct, Init Stmt pkg go/ast, type TypeSwitchStmt struct, Switch token.Pos pkg go/ast, type UnaryExpr struct pkg go/ast, type UnaryExpr struct, Op token.Token pkg go/ast, type UnaryExpr struct, OpPos token.Pos pkg go/ast, type UnaryExpr struct, X Expr pkg go/ast, type ValueSpec struct pkg go/ast, type ValueSpec struct, Comment *CommentGroup pkg go/ast, type ValueSpec struct, Doc *CommentGroup pkg go/ast, type ValueSpec struct, Names []*Ident pkg go/ast, type ValueSpec struct, Type Expr pkg go/ast, type ValueSpec struct, Values []Expr pkg go/ast, type Visitor interface { Visit } pkg go/ast, type Visitor interface, Visit(Node) Visitor pkg go/build, const AllowBinary ImportMode pkg go/build, const FindOnly ImportMode pkg go/build, func ArchChar(string) (string, error) pkg go/build, func Import(string, string, ImportMode) (*Package, error) pkg go/build, func ImportDir(string, ImportMode) (*Package, error) pkg go/build, func IsLocalImport(string) bool pkg go/build, method (*Context) Import(string, string, ImportMode) (*Package, error) pkg go/build, method (*Context) ImportDir(string, ImportMode) (*Package, error) pkg go/build, method (*Context) SrcDirs() []string pkg go/build, method (*NoGoError) Error() string pkg go/build, method (*Package) IsCommand() bool pkg go/build, type Context struct pkg go/build, type Context struct, BuildTags []string pkg go/build, type Context struct, CgoEnabled bool pkg go/build, type Context struct, Compiler string pkg go/build, type Context struct, GOARCH string pkg go/build, type Context struct, GOOS string pkg go/build, type Context struct, GOPATH string pkg go/build, type Context struct, GOROOT string pkg go/build, type Context struct, HasSubdir func(string, string) (string, bool) pkg go/build, type Context struct, IsAbsPath func(string) bool pkg go/build, type Context struct, IsDir func(string) bool pkg go/build, type Context struct, JoinPath func(...string) string pkg go/build, type Context struct, OpenFile func(string) (io.ReadCloser, error) pkg go/build, type Context struct, ReadDir func(string) ([]os.FileInfo, error) pkg go/build, type Context struct, SplitPathList func(string) []string pkg go/build, type Context struct, UseAllFiles bool pkg go/build, type ImportMode uint pkg go/build, type NoGoError struct pkg go/build, type NoGoError struct, Dir string pkg go/build, type Package struct pkg go/build, type Package struct, BinDir string pkg go/build, type Package struct, CFiles []string pkg go/build, type Package struct, CgoCFLAGS []string pkg go/build, type Package struct, CgoFiles []string pkg go/build, type Package struct, CgoLDFLAGS []string pkg go/build, type Package struct, CgoPkgConfig []string pkg go/build, type Package struct, Dir string pkg go/build, type Package struct, Doc string pkg go/build, type Package struct, GoFiles []string pkg go/build, type Package struct, Goroot bool pkg go/build, type Package struct, HFiles []string pkg go/build, type Package struct, ImportPath string pkg go/build, type Package struct, ImportPos map[string][]token.Position pkg go/build, type Package struct, Imports []string pkg go/build, type Package struct, Name string pkg go/build, type Package struct, PkgObj string pkg go/build, type Package struct, PkgRoot string pkg go/build, type Package struct, Root string pkg go/build, type Package struct, SFiles []string pkg go/build, type Package struct, SrcRoot string pkg go/build, type Package struct, SysoFiles []string pkg go/build, type Package struct, TestGoFiles []string pkg go/build, type Package struct, TestImportPos map[string][]token.Position pkg go/build, type Package struct, TestImports []string pkg go/build, type Package struct, XTestGoFiles []string pkg go/build, type Package struct, XTestImportPos map[string][]token.Position pkg go/build, type Package struct, XTestImports []string pkg go/build, var Default Context pkg go/build, var ToolDir string pkg go/doc, const AllDecls Mode pkg go/doc, const AllMethods Mode pkg go/doc, func Examples(...*ast.File) []*Example pkg go/doc, func New(*ast.Package, string, Mode) *Package pkg go/doc, func Synopsis(string) string pkg go/doc, func ToHTML(io.Writer, string, map[string]string) pkg go/doc, func ToText(io.Writer, string, string, string, int) pkg go/doc, method (*Package) Filter(Filter) pkg go/doc, type Example struct pkg go/doc, type Example struct, Code ast.Node pkg go/doc, type Example struct, Comments []*ast.CommentGroup pkg go/doc, type Example struct, Doc string pkg go/doc, type Example struct, Name string pkg go/doc, type Example struct, Output string pkg go/doc, type Filter func(string) bool pkg go/doc, type Func struct pkg go/doc, type Func struct, Decl *ast.FuncDecl pkg go/doc, type Func struct, Doc string pkg go/doc, type Func struct, Level int pkg go/doc, type Func struct, Name string pkg go/doc, type Func struct, Orig string pkg go/doc, type Func struct, Recv string pkg go/doc, type Mode int pkg go/doc, type Package struct pkg go/doc, type Package struct, Bugs []string pkg go/doc, type Package struct, Consts []*Value pkg go/doc, type Package struct, Doc string pkg go/doc, type Package struct, Filenames []string pkg go/doc, type Package struct, Funcs []*Func pkg go/doc, type Package struct, ImportPath string pkg go/doc, type Package struct, Imports []string pkg go/doc, type Package struct, Name string pkg go/doc, type Package struct, Types []*Type pkg go/doc, type Package struct, Vars []*Value pkg go/doc, type Type struct pkg go/doc, type Type struct, Consts []*Value pkg go/doc, type Type struct, Decl *ast.GenDecl pkg go/doc, type Type struct, Doc string pkg go/doc, type Type struct, Funcs []*Func pkg go/doc, type Type struct, Methods []*Func pkg go/doc, type Type struct, Name string pkg go/doc, type Type struct, Vars []*Value pkg go/doc, type Value struct pkg go/doc, type Value struct, Decl *ast.GenDecl pkg go/doc, type Value struct, Doc string pkg go/doc, type Value struct, Names []string pkg go/parser, const DeclarationErrors Mode pkg go/parser, const ImportsOnly Mode pkg go/parser, const PackageClauseOnly Mode pkg go/parser, const ParseComments Mode pkg go/parser, const SpuriousErrors Mode pkg go/parser, const Trace Mode pkg go/parser, func ParseDir(*token.FileSet, string, func(os.FileInfo) bool, Mode) (map[string]*ast.Package, error) pkg go/parser, func ParseExpr(string) (ast.Expr, error) pkg go/parser, func ParseFile(*token.FileSet, string, interface{}, Mode) (*ast.File, error) pkg go/parser, type Mode uint pkg go/printer, const RawFormat Mode pkg go/printer, const SourcePos Mode pkg go/printer, const TabIndent Mode pkg go/printer, const UseSpaces Mode pkg go/printer, func Fprint(io.Writer, *token.FileSet, interface{}) error pkg go/printer, method (*Config) Fprint(io.Writer, *token.FileSet, interface{}) error pkg go/printer, type CommentedNode struct pkg go/printer, type CommentedNode struct, Comments []*ast.CommentGroup pkg go/printer, type CommentedNode struct, Node interface{} pkg go/printer, type Config struct pkg go/printer, type Config struct, Mode Mode pkg go/printer, type Config struct, Tabwidth int pkg go/printer, type Mode uint pkg go/scanner, const ScanComments Mode pkg go/scanner, func PrintError(io.Writer, error) pkg go/scanner, method (*ErrorList) Add(token.Position, string) pkg go/scanner, method (*ErrorList) RemoveMultiples() pkg go/scanner, method (*ErrorList) Reset() pkg go/scanner, method (*Scanner) Init(*token.File, []uint8, ErrorHandler, Mode) pkg go/scanner, method (*Scanner) Scan() (token.Pos, token.Token, string) pkg go/scanner, method (Error) Error() string pkg go/scanner, method (ErrorList) Err() error pkg go/scanner, method (ErrorList) Error() string pkg go/scanner, method (ErrorList) Len() int pkg go/scanner, method (ErrorList) Less(int, int) bool pkg go/scanner, method (ErrorList) Sort() pkg go/scanner, method (ErrorList) Swap(int, int) pkg go/scanner, type Error struct pkg go/scanner, type Error struct, Msg string pkg go/scanner, type Error struct, Pos token.Position pkg go/scanner, type ErrorHandler func(token.Position, string) pkg go/scanner, type ErrorList []*Error pkg go/scanner, type Mode uint pkg go/scanner, type Scanner struct pkg go/scanner, type Scanner struct, ErrorCount int pkg go/token, const ADD Token pkg go/token, const ADD_ASSIGN Token pkg go/token, const AND Token pkg go/token, const AND_ASSIGN Token pkg go/token, const AND_NOT Token pkg go/token, const AND_NOT_ASSIGN Token pkg go/token, const ARROW Token pkg go/token, const ASSIGN Token pkg go/token, const BREAK Token pkg go/token, const CASE Token pkg go/token, const CHAN Token pkg go/token, const CHAR Token pkg go/token, const COLON Token pkg go/token, const COMMA Token pkg go/token, const COMMENT Token pkg go/token, const CONST Token pkg go/token, const CONTINUE Token pkg go/token, const DEC Token pkg go/token, const DEFAULT Token pkg go/token, const DEFER Token pkg go/token, const DEFINE Token pkg go/token, const ELLIPSIS Token pkg go/token, const ELSE Token pkg go/token, const EOF Token pkg go/token, const EQL Token pkg go/token, const FALLTHROUGH Token pkg go/token, const FLOAT Token pkg go/token, const FOR Token pkg go/token, const FUNC Token pkg go/token, const GEQ Token pkg go/token, const GO Token pkg go/token, const GOTO Token pkg go/token, const GTR Token pkg go/token, const HighestPrec ideal-int pkg go/token, const IDENT Token pkg go/token, const IF Token pkg go/token, const ILLEGAL Token pkg go/token, const IMAG Token pkg go/token, const IMPORT Token pkg go/token, const INC Token pkg go/token, const INT Token pkg go/token, const INTERFACE Token pkg go/token, const LAND Token pkg go/token, const LBRACE Token pkg go/token, const LBRACK Token pkg go/token, const LEQ Token pkg go/token, const LOR Token pkg go/token, const LPAREN Token pkg go/token, const LSS Token pkg go/token, const LowestPrec ideal-int pkg go/token, const MAP Token pkg go/token, const MUL Token pkg go/token, const MUL_ASSIGN Token pkg go/token, const NEQ Token pkg go/token, const NOT Token pkg go/token, const NoPos Pos pkg go/token, const OR Token pkg go/token, const OR_ASSIGN Token pkg go/token, const PACKAGE Token pkg go/token, const PERIOD Token pkg go/token, const QUO Token pkg go/token, const QUO_ASSIGN Token pkg go/token, const RANGE Token pkg go/token, const RBRACE Token pkg go/token, const RBRACK Token pkg go/token, const REM Token pkg go/token, const REM_ASSIGN Token pkg go/token, const RETURN Token pkg go/token, const RPAREN Token pkg go/token, const SELECT Token pkg go/token, const SEMICOLON Token pkg go/token, const SHL Token pkg go/token, const SHL_ASSIGN Token pkg go/token, const SHR Token pkg go/token, const SHR_ASSIGN Token pkg go/token, const STRING Token pkg go/token, const STRUCT Token pkg go/token, const SUB Token pkg go/token, const SUB_ASSIGN Token pkg go/token, const SWITCH Token pkg go/token, const TYPE Token pkg go/token, const UnaryPrec ideal-int pkg go/token, const VAR Token pkg go/token, const XOR Token pkg go/token, const XOR_ASSIGN Token pkg go/token, func Lookup(string) Token pkg go/token, func NewFileSet() *FileSet pkg go/token, method (*File) AddLine(int) pkg go/token, method (*File) AddLineInfo(int, string, int) pkg go/token, method (*File) Base() int pkg go/token, method (*File) Line(Pos) int pkg go/token, method (*File) LineCount() int pkg go/token, method (*File) Name() string pkg go/token, method (*File) Offset(Pos) int pkg go/token, method (*File) Pos(int) Pos pkg go/token, method (*File) Position(Pos) Position pkg go/token, method (*File) SetLines([]int) bool pkg go/token, method (*File) SetLinesForContent([]uint8) pkg go/token, method (*File) Size() int pkg go/token, method (*FileSet) AddFile(string, int, int) *File pkg go/token, method (*FileSet) Base() int pkg go/token, method (*FileSet) File(Pos) *File pkg go/token, method (*FileSet) Iterate(func(*File) bool) pkg go/token, method (*FileSet) Position(Pos) Position pkg go/token, method (*FileSet) Read(func(interface{}) error) error pkg go/token, method (*FileSet) Write(func(interface{}) error) error pkg go/token, method (*Position) IsValid() bool pkg go/token, method (Pos) IsValid() bool pkg go/token, method (Position) String() string pkg go/token, method (Token) IsKeyword() bool pkg go/token, method (Token) IsLiteral() bool pkg go/token, method (Token) IsOperator() bool pkg go/token, method (Token) Precedence() int pkg go/token, method (Token) String() string pkg go/token, type File struct pkg go/token, type FileSet struct pkg go/token, type Pos int pkg go/token, type Position struct pkg go/token, type Position struct, Column int pkg go/token, type Position struct, Filename string pkg go/token, type Position struct, Line int pkg go/token, type Position struct, Offset int pkg go/token, type Token int pkg hash, type Hash interface { BlockSize, Reset, Size, Sum, Write } pkg hash, type Hash interface, BlockSize() int pkg hash, type Hash interface, Reset() pkg hash, type Hash interface, Size() int pkg hash, type Hash interface, Sum([]uint8) []uint8 pkg hash, type Hash interface, Write([]uint8) (int, error) pkg hash, type Hash32 interface { BlockSize, Reset, Size, Sum, Sum32, Write } pkg hash, type Hash32 interface, BlockSize() int pkg hash, type Hash32 interface, Reset() pkg hash, type Hash32 interface, Size() int pkg hash, type Hash32 interface, Sum([]uint8) []uint8 pkg hash, type Hash32 interface, Sum32() uint32 pkg hash, type Hash32 interface, Write([]uint8) (int, error) pkg hash, type Hash64 interface { BlockSize, Reset, Size, Sum, Sum64, Write } pkg hash, type Hash64 interface, BlockSize() int pkg hash, type Hash64 interface, Reset() pkg hash, type Hash64 interface, Size() int pkg hash, type Hash64 interface, Sum([]uint8) []uint8 pkg hash, type Hash64 interface, Sum64() uint64 pkg hash, type Hash64 interface, Write([]uint8) (int, error) pkg hash/adler32, const Size ideal-int pkg hash/adler32, func Checksum([]uint8) uint32 pkg hash/adler32, func New() hash.Hash32 pkg hash/crc32, const Castagnoli ideal-int pkg hash/crc32, const IEEE ideal-int pkg hash/crc32, const Koopman ideal-int pkg hash/crc32, const Size ideal-int pkg hash/crc32, func Checksum([]uint8, *Table) uint32 pkg hash/crc32, func ChecksumIEEE([]uint8) uint32 pkg hash/crc32, func MakeTable(uint32) *Table pkg hash/crc32, func New(*Table) hash.Hash32 pkg hash/crc32, func NewIEEE() hash.Hash32 pkg hash/crc32, func Update(uint32, *Table, []uint8) uint32 pkg hash/crc32, type Table [256]uint32 pkg hash/crc32, var IEEETable *Table pkg hash/crc64, const ECMA ideal-int pkg hash/crc64, const ISO ideal-int pkg hash/crc64, const Size ideal-int pkg hash/crc64, func Checksum([]uint8, *Table) uint64 pkg hash/crc64, func MakeTable(uint64) *Table pkg hash/crc64, func New(*Table) hash.Hash64 pkg hash/crc64, func Update(uint64, *Table, []uint8) uint64 pkg hash/crc64, type Table [256]uint64 pkg hash/fnv, func New32() hash.Hash32 pkg hash/fnv, func New32a() hash.Hash32 pkg hash/fnv, func New64() hash.Hash64 pkg hash/fnv, func New64a() hash.Hash64 pkg html, func EscapeString(string) string pkg html, func UnescapeString(string) string pkg html/template, const ErrAmbigContext ErrorCode pkg html/template, const ErrBadHTML ErrorCode pkg html/template, const ErrBranchEnd ErrorCode pkg html/template, const ErrEndContext ErrorCode pkg html/template, const ErrNoSuchTemplate ErrorCode pkg html/template, const ErrOutputContext ErrorCode pkg html/template, const ErrPartialCharset ErrorCode pkg html/template, const ErrPartialEscape ErrorCode pkg html/template, const ErrRangeLoopReentry ErrorCode pkg html/template, const ErrSlashAmbig ErrorCode pkg html/template, const OK ErrorCode pkg html/template, func HTMLEscape(io.Writer, []uint8) pkg html/template, func HTMLEscapeString(string) string pkg html/template, func HTMLEscaper(...interface{}) string pkg html/template, func JSEscape(io.Writer, []uint8) pkg html/template, func JSEscapeString(string) string pkg html/template, func JSEscaper(...interface{}) string pkg html/template, func Must(*Template, error) *Template pkg html/template, func New(string) *Template pkg html/template, func ParseFiles(...string) (*Template, error) pkg html/template, func ParseGlob(string) (*Template, error) pkg html/template, func URLQueryEscaper(...interface{}) string pkg html/template, method (*Error) Error() string pkg html/template, method (*Template) AddParseTree(string, *parse.Tree) (*Template, error) pkg html/template, method (*Template) Clone() (*Template, error) pkg html/template, method (*Template) Delims(string, string) *Template pkg html/template, method (*Template) Execute(io.Writer, interface{}) error pkg html/template, method (*Template) ExecuteTemplate(io.Writer, string, interface{}) error pkg html/template, method (*Template) Funcs(FuncMap) *Template pkg html/template, method (*Template) Lookup(string) *Template pkg html/template, method (*Template) Name() string pkg html/template, method (*Template) New(string) *Template pkg html/template, method (*Template) Parse(string) (*Template, error) pkg html/template, method (*Template) ParseFiles(...string) (*Template, error) pkg html/template, method (*Template) ParseGlob(string) (*Template, error) pkg html/template, method (*Template) Templates() []*Template pkg html/template, type CSS string pkg html/template, type Error struct pkg html/template, type Error struct, Description string pkg html/template, type Error struct, ErrorCode ErrorCode pkg html/template, type Error struct, Line int pkg html/template, type Error struct, Name string pkg html/template, type ErrorCode int pkg html/template, type FuncMap map[string]interface{} pkg html/template, type HTML string pkg html/template, type HTMLAttr string pkg html/template, type JS string pkg html/template, type JSStr string pkg html/template, type Template struct pkg html/template, type URL string pkg image, const YCbCrSubsampleRatio420 YCbCrSubsampleRatio pkg image, const YCbCrSubsampleRatio422 YCbCrSubsampleRatio pkg image, const YCbCrSubsampleRatio444 YCbCrSubsampleRatio pkg image, func Decode(io.Reader) (Image, string, error) pkg image, func DecodeConfig(io.Reader) (Config, string, error) pkg image, func NewAlpha(Rectangle) *Alpha pkg image, func NewAlpha16(Rectangle) *Alpha16 pkg image, func NewGray(Rectangle) *Gray pkg image, func NewGray16(Rectangle) *Gray16 pkg image, func NewNRGBA(Rectangle) *NRGBA pkg image, func NewNRGBA64(Rectangle) *NRGBA64 pkg image, func NewPaletted(Rectangle, color.Palette) *Paletted pkg image, func NewRGBA(Rectangle) *RGBA pkg image, func NewRGBA64(Rectangle) *RGBA64 pkg image, func NewUniform(color.Color) *Uniform pkg image, func NewYCbCr(Rectangle, YCbCrSubsampleRatio) *YCbCr pkg image, func Pt(int, int) Point pkg image, func Rect(int, int, int, int) Rectangle pkg image, func RegisterFormat(string, string, func(io.Reader) (Image, error), func(io.Reader) (Config, error)) pkg image, method (*Alpha) At(int, int) color.Color pkg image, method (*Alpha) Bounds() Rectangle pkg image, method (*Alpha) ColorModel() color.Model pkg image, method (*Alpha) Opaque() bool pkg image, method (*Alpha) PixOffset(int, int) int pkg image, method (*Alpha) Set(int, int, color.Color) pkg image, method (*Alpha) SetAlpha(int, int, color.Alpha) pkg image, method (*Alpha) SubImage(Rectangle) Image pkg image, method (*Alpha16) At(int, int) color.Color pkg image, method (*Alpha16) Bounds() Rectangle pkg image, method (*Alpha16) ColorModel() color.Model pkg image, method (*Alpha16) Opaque() bool pkg image, method (*Alpha16) PixOffset(int, int) int pkg image, method (*Alpha16) Set(int, int, color.Color) pkg image, method (*Alpha16) SetAlpha16(int, int, color.Alpha16) pkg image, method (*Alpha16) SubImage(Rectangle) Image pkg image, method (*Gray) At(int, int) color.Color pkg image, method (*Gray) Bounds() Rectangle pkg image, method (*Gray) ColorModel() color.Model pkg image, method (*Gray) Opaque() bool pkg image, method (*Gray) PixOffset(int, int) int pkg image, method (*Gray) Set(int, int, color.Color) pkg image, method (*Gray) SetGray(int, int, color.Gray) pkg image, method (*Gray) SubImage(Rectangle) Image pkg image, method (*Gray16) At(int, int) color.Color pkg image, method (*Gray16) Bounds() Rectangle pkg image, method (*Gray16) ColorModel() color.Model pkg image, method (*Gray16) Opaque() bool pkg image, method (*Gray16) PixOffset(int, int) int pkg image, method (*Gray16) Set(int, int, color.Color) pkg image, method (*Gray16) SetGray16(int, int, color.Gray16) pkg image, method (*Gray16) SubImage(Rectangle) Image pkg image, method (*NRGBA) At(int, int) color.Color pkg image, method (*NRGBA) Bounds() Rectangle pkg image, method (*NRGBA) ColorModel() color.Model pkg image, method (*NRGBA) Opaque() bool pkg image, method (*NRGBA) PixOffset(int, int) int pkg image, method (*NRGBA) Set(int, int, color.Color) pkg image, method (*NRGBA) SetNRGBA(int, int, color.NRGBA) pkg image, method (*NRGBA) SubImage(Rectangle) Image pkg image, method (*NRGBA64) At(int, int) color.Color pkg image, method (*NRGBA64) Bounds() Rectangle pkg image, method (*NRGBA64) ColorModel() color.Model pkg image, method (*NRGBA64) Opaque() bool pkg image, method (*NRGBA64) PixOffset(int, int) int pkg image, method (*NRGBA64) Set(int, int, color.Color) pkg image, method (*NRGBA64) SetNRGBA64(int, int, color.NRGBA64) pkg image, method (*NRGBA64) SubImage(Rectangle) Image pkg image, method (*Paletted) At(int, int) color.Color pkg image, method (*Paletted) Bounds() Rectangle pkg image, method (*Paletted) ColorIndexAt(int, int) uint8 pkg image, method (*Paletted) ColorModel() color.Model pkg image, method (*Paletted) Opaque() bool pkg image, method (*Paletted) PixOffset(int, int) int pkg image, method (*Paletted) Set(int, int, color.Color) pkg image, method (*Paletted) SetColorIndex(int, int, uint8) pkg image, method (*Paletted) SubImage(Rectangle) Image pkg image, method (*RGBA) At(int, int) color.Color pkg image, method (*RGBA) Bounds() Rectangle pkg image, method (*RGBA) ColorModel() color.Model pkg image, method (*RGBA) Opaque() bool pkg image, method (*RGBA) PixOffset(int, int) int pkg image, method (*RGBA) Set(int, int, color.Color) pkg image, method (*RGBA) SetRGBA(int, int, color.RGBA) pkg image, method (*RGBA) SubImage(Rectangle) Image pkg image, method (*RGBA64) At(int, int) color.Color pkg image, method (*RGBA64) Bounds() Rectangle pkg image, method (*RGBA64) ColorModel() color.Model pkg image, method (*RGBA64) Opaque() bool pkg image, method (*RGBA64) PixOffset(int, int) int pkg image, method (*RGBA64) Set(int, int, color.Color) pkg image, method (*RGBA64) SetRGBA64(int, int, color.RGBA64) pkg image, method (*RGBA64) SubImage(Rectangle) Image pkg image, method (*Uniform) At(int, int) color.Color pkg image, method (*Uniform) Bounds() Rectangle pkg image, method (*Uniform) ColorModel() color.Model pkg image, method (*Uniform) Convert(color.Color) color.Color pkg image, method (*Uniform) Opaque() bool pkg image, method (*Uniform) RGBA() (uint32, uint32, uint32, uint32) pkg image, method (*YCbCr) At(int, int) color.Color pkg image, method (*YCbCr) Bounds() Rectangle pkg image, method (*YCbCr) COffset(int, int) int pkg image, method (*YCbCr) ColorModel() color.Model pkg image, method (*YCbCr) Opaque() bool pkg image, method (*YCbCr) SubImage(Rectangle) Image pkg image, method (*YCbCr) YOffset(int, int) int pkg image, method (Point) Add(Point) Point pkg image, method (Point) Div(int) Point pkg image, method (Point) Eq(Point) bool pkg image, method (Point) In(Rectangle) bool pkg image, method (Point) Mod(Rectangle) Point pkg image, method (Point) Mul(int) Point pkg image, method (Point) String() string pkg image, method (Point) Sub(Point) Point pkg image, method (Rectangle) Add(Point) Rectangle pkg image, method (Rectangle) Canon() Rectangle pkg image, method (Rectangle) Dx() int pkg image, method (Rectangle) Dy() int pkg image, method (Rectangle) Empty() bool pkg image, method (Rectangle) Eq(Rectangle) bool pkg image, method (Rectangle) In(Rectangle) bool pkg image, method (Rectangle) Inset(int) Rectangle pkg image, method (Rectangle) Intersect(Rectangle) Rectangle pkg image, method (Rectangle) Overlaps(Rectangle) bool pkg image, method (Rectangle) Size() Point pkg image, method (Rectangle) String() string pkg image, method (Rectangle) Sub(Point) Rectangle pkg image, method (Rectangle) Union(Rectangle) Rectangle pkg image, method (YCbCrSubsampleRatio) String() string pkg image, type Alpha struct pkg image, type Alpha struct, Pix []uint8 pkg image, type Alpha struct, Rect Rectangle pkg image, type Alpha struct, Stride int pkg image, type Alpha16 struct pkg image, type Alpha16 struct, Pix []uint8 pkg image, type Alpha16 struct, Rect Rectangle pkg image, type Alpha16 struct, Stride int pkg image, type Config struct pkg image, type Config struct, ColorModel color.Model pkg image, type Config struct, Height int pkg image, type Config struct, Width int pkg image, type Gray struct pkg image, type Gray struct, Pix []uint8 pkg image, type Gray struct, Rect Rectangle pkg image, type Gray struct, Stride int pkg image, type Gray16 struct pkg image, type Gray16 struct, Pix []uint8 pkg image, type Gray16 struct, Rect Rectangle pkg image, type Gray16 struct, Stride int pkg image, type Image interface { At, Bounds, ColorModel } pkg image, type Image interface, At(int, int) color.Color pkg image, type Image interface, Bounds() Rectangle pkg image, type Image interface, ColorModel() color.Model pkg image, type NRGBA struct pkg image, type NRGBA struct, Pix []uint8 pkg image, type NRGBA struct, Rect Rectangle pkg image, type NRGBA struct, Stride int pkg image, type NRGBA64 struct pkg image, type NRGBA64 struct, Pix []uint8 pkg image, type NRGBA64 struct, Rect Rectangle pkg image, type NRGBA64 struct, Stride int pkg image, type Paletted struct pkg image, type Paletted struct, Palette color.Palette pkg image, type Paletted struct, Pix []uint8 pkg image, type Paletted struct, Rect Rectangle pkg image, type Paletted struct, Stride int pkg image, type PalettedImage interface { At, Bounds, ColorIndexAt, ColorModel } pkg image, type PalettedImage interface, At(int, int) color.Color pkg image, type PalettedImage interface, Bounds() Rectangle pkg image, type PalettedImage interface, ColorIndexAt(int, int) uint8 pkg image, type PalettedImage interface, ColorModel() color.Model pkg image, type Point struct pkg image, type Point struct, X int pkg image, type Point struct, Y int pkg image, type RGBA struct pkg image, type RGBA struct, Pix []uint8 pkg image, type RGBA struct, Rect Rectangle pkg image, type RGBA struct, Stride int pkg image, type RGBA64 struct pkg image, type RGBA64 struct, Pix []uint8 pkg image, type RGBA64 struct, Rect Rectangle pkg image, type RGBA64 struct, Stride int pkg image, type Rectangle struct pkg image, type Rectangle struct, Max Point pkg image, type Rectangle struct, Min Point pkg image, type Uniform struct pkg image, type Uniform struct, C color.Color pkg image, type YCbCr struct pkg image, type YCbCr struct, CStride int pkg image, type YCbCr struct, Cb []uint8 pkg image, type YCbCr struct, Cr []uint8 pkg image, type YCbCr struct, Rect Rectangle pkg image, type YCbCr struct, SubsampleRatio YCbCrSubsampleRatio pkg image, type YCbCr struct, Y []uint8 pkg image, type YCbCr struct, YStride int pkg image, type YCbCrSubsampleRatio int pkg image, var Black *Uniform pkg image, var ErrFormat error pkg image, var Opaque *Uniform pkg image, var Transparent *Uniform pkg image, var White *Uniform pkg image, var ZP Point pkg image, var ZR Rectangle pkg image/color, func ModelFunc(func(Color) Color) Model pkg image/color, func RGBToYCbCr(uint8, uint8, uint8) (uint8, uint8, uint8) pkg image/color, func YCbCrToRGB(uint8, uint8, uint8) (uint8, uint8, uint8) pkg image/color, method (Alpha) RGBA() (uint32, uint32, uint32, uint32) pkg image/color, method (Alpha16) RGBA() (uint32, uint32, uint32, uint32) pkg image/color, method (Gray) RGBA() (uint32, uint32, uint32, uint32) pkg image/color, method (Gray16) RGBA() (uint32, uint32, uint32, uint32) pkg image/color, method (NRGBA) RGBA() (uint32, uint32, uint32, uint32) pkg image/color, method (NRGBA64) RGBA() (uint32, uint32, uint32, uint32) pkg image/color, method (Palette) Convert(Color) Color pkg image/color, method (Palette) Index(Color) int pkg image/color, method (RGBA) RGBA() (uint32, uint32, uint32, uint32) pkg image/color, method (RGBA64) RGBA() (uint32, uint32, uint32, uint32) pkg image/color, method (YCbCr) RGBA() (uint32, uint32, uint32, uint32) pkg image/color, type Alpha struct pkg image/color, type Alpha struct, A uint8 pkg image/color, type Alpha16 struct pkg image/color, type Alpha16 struct, A uint16 pkg image/color, type Color interface { RGBA } pkg image/color, type Color interface, RGBA() (uint32, uint32, uint32, uint32) pkg image/color, type Gray struct pkg image/color, type Gray struct, Y uint8 pkg image/color, type Gray16 struct pkg image/color, type Gray16 struct, Y uint16 pkg image/color, type Model interface { Convert } pkg image/color, type Model interface, Convert(Color) Color pkg image/color, type NRGBA struct pkg image/color, type NRGBA struct, A uint8 pkg image/color, type NRGBA struct, B uint8 pkg image/color, type NRGBA struct, G uint8 pkg image/color, type NRGBA struct, R uint8 pkg image/color, type NRGBA64 struct pkg image/color, type NRGBA64 struct, A uint16 pkg image/color, type NRGBA64 struct, B uint16 pkg image/color, type NRGBA64 struct, G uint16 pkg image/color, type NRGBA64 struct, R uint16 pkg image/color, type Palette []Color pkg image/color, type RGBA struct pkg image/color, type RGBA struct, A uint8 pkg image/color, type RGBA struct, B uint8 pkg image/color, type RGBA struct, G uint8 pkg image/color, type RGBA struct, R uint8 pkg image/color, type RGBA64 struct pkg image/color, type RGBA64 struct, A uint16 pkg image/color, type RGBA64 struct, B uint16 pkg image/color, type RGBA64 struct, G uint16 pkg image/color, type RGBA64 struct, R uint16 pkg image/color, type YCbCr struct pkg image/color, type YCbCr struct, Cb uint8 pkg image/color, type YCbCr struct, Cr uint8 pkg image/color, type YCbCr struct, Y uint8 pkg image/color, var Alpha16Model Model pkg image/color, var AlphaModel Model pkg image/color, var Black Gray16 pkg image/color, var Gray16Model Model pkg image/color, var GrayModel Model pkg image/color, var NRGBA64Model Model pkg image/color, var NRGBAModel Model pkg image/color, var Opaque Alpha16 pkg image/color, var RGBA64Model Model pkg image/color, var RGBAModel Model pkg image/color, var Transparent Alpha16 pkg image/color, var White Gray16 pkg image/color, var YCbCrModel Model pkg image/draw, const Over Op pkg image/draw, const Src Op pkg image/draw, func Draw(Image, image.Rectangle, image.Image, image.Point, Op) pkg image/draw, func DrawMask(Image, image.Rectangle, image.Image, image.Point, image.Image, image.Point, Op) pkg image/draw, type Image interface { At, Bounds, ColorModel, Set } pkg image/draw, type Image interface, At(int, int) color.Color pkg image/draw, type Image interface, Bounds() image.Rectangle pkg image/draw, type Image interface, ColorModel() color.Model pkg image/draw, type Image interface, Set(int, int, color.Color) pkg image/draw, type Op int pkg image/gif, func Decode(io.Reader) (image.Image, error) pkg image/gif, func DecodeAll(io.Reader) (*GIF, error) pkg image/gif, func DecodeConfig(io.Reader) (image.Config, error) pkg image/gif, type GIF struct pkg image/gif, type GIF struct, Delay []int pkg image/gif, type GIF struct, Image []*image.Paletted pkg image/gif, type GIF struct, LoopCount int pkg image/jpeg, const DefaultQuality ideal-int pkg image/jpeg, func Decode(io.Reader) (image.Image, error) pkg image/jpeg, func DecodeConfig(io.Reader) (image.Config, error) pkg image/jpeg, func Encode(io.Writer, image.Image, *Options) error pkg image/jpeg, method (FormatError) Error() string pkg image/jpeg, method (UnsupportedError) Error() string pkg image/jpeg, type FormatError string pkg image/jpeg, type Options struct pkg image/jpeg, type Options struct, Quality int pkg image/jpeg, type Reader interface { Read, ReadByte } pkg image/jpeg, type Reader interface, Read([]uint8) (int, error) pkg image/jpeg, type Reader interface, ReadByte() (uint8, error) pkg image/jpeg, type UnsupportedError string pkg image/png, func Decode(io.Reader) (image.Image, error) pkg image/png, func DecodeConfig(io.Reader) (image.Config, error) pkg image/png, func Encode(io.Writer, image.Image) error pkg image/png, method (FormatError) Error() string pkg image/png, method (UnsupportedError) Error() string pkg image/png, type FormatError string pkg image/png, type UnsupportedError string pkg index/suffixarray, func New([]uint8) *Index pkg index/suffixarray, method (*Index) Bytes() []uint8 pkg index/suffixarray, method (*Index) FindAllIndex(*regexp.Regexp, int) [][]int pkg index/suffixarray, method (*Index) Lookup([]uint8, int) []int pkg index/suffixarray, method (*Index) Read(io.Reader) error pkg index/suffixarray, method (*Index) Write(io.Writer) error pkg index/suffixarray, type Index struct pkg io, func Copy(Writer, Reader) (int64, error) pkg io, func CopyN(Writer, Reader, int64) (int64, error) pkg io, func LimitReader(Reader, int64) Reader pkg io, func MultiReader(...Reader) Reader pkg io, func MultiWriter(...Writer) Writer pkg io, func NewSectionReader(ReaderAt, int64, int64) *SectionReader pkg io, func Pipe() (*PipeReader, *PipeWriter) pkg io, func ReadAtLeast(Reader, []uint8, int) (int, error) pkg io, func ReadFull(Reader, []uint8) (int, error) pkg io, func TeeReader(Reader, Writer) Reader pkg io, func WriteString(Writer, string) (int, error) pkg io, method (*LimitedReader) Read([]uint8) (int, error) pkg io, method (*PipeReader) Close() error pkg io, method (*PipeReader) CloseWithError(error) error pkg io, method (*PipeReader) Read([]uint8) (int, error) pkg io, method (*PipeWriter) Close() error pkg io, method (*PipeWriter) CloseWithError(error) error pkg io, method (*PipeWriter) Write([]uint8) (int, error) pkg io, method (*SectionReader) Read([]uint8) (int, error) pkg io, method (*SectionReader) ReadAt([]uint8, int64) (int, error) pkg io, method (*SectionReader) Seek(int64, int) (int64, error) pkg io, method (*SectionReader) Size() int64 pkg io, type ByteReader interface { ReadByte } pkg io, type ByteReader interface, ReadByte() (uint8, error) pkg io, type ByteScanner interface { ReadByte, UnreadByte } pkg io, type ByteScanner interface, ReadByte() (uint8, error) pkg io, type ByteScanner interface, UnreadByte() error pkg io, type Closer interface { Close } pkg io, type Closer interface, Close() error pkg io, type LimitedReader struct pkg io, type LimitedReader struct, N int64 pkg io, type LimitedReader struct, R Reader pkg io, type PipeReader struct pkg io, type PipeWriter struct pkg io, type ReadCloser interface { Close, Read } pkg io, type ReadCloser interface, Close() error pkg io, type ReadCloser interface, Read([]uint8) (int, error) pkg io, type ReadSeeker interface { Read, Seek } pkg io, type ReadSeeker interface, Read([]uint8) (int, error) pkg io, type ReadSeeker interface, Seek(int64, int) (int64, error) pkg io, type ReadWriteCloser interface { Close, Read, Write } pkg io, type ReadWriteCloser interface, Close() error pkg io, type ReadWriteCloser interface, Read([]uint8) (int, error) pkg io, type ReadWriteCloser interface, Write([]uint8) (int, error) pkg io, type ReadWriteSeeker interface { Read, Seek, Write } pkg io, type ReadWriteSeeker interface, Read([]uint8) (int, error) pkg io, type ReadWriteSeeker interface, Seek(int64, int) (int64, error) pkg io, type ReadWriteSeeker interface, Write([]uint8) (int, error) pkg io, type ReadWriter interface { Read, Write } pkg io, type ReadWriter interface, Read([]uint8) (int, error) pkg io, type ReadWriter interface, Write([]uint8) (int, error) pkg io, type Reader interface { Read } pkg io, type Reader interface, Read([]uint8) (int, error) pkg io, type ReaderAt interface { ReadAt } pkg io, type ReaderAt interface, ReadAt([]uint8, int64) (int, error) pkg io, type ReaderFrom interface { ReadFrom } pkg io, type ReaderFrom interface, ReadFrom(Reader) (int64, error) pkg io, type RuneReader interface { ReadRune } pkg io, type RuneReader interface, ReadRune() (int32, int, error) pkg io, type RuneScanner interface { ReadRune, UnreadRune } pkg io, type RuneScanner interface, ReadRune() (int32, int, error) pkg io, type RuneScanner interface, UnreadRune() error pkg io, type SectionReader struct pkg io, type Seeker interface { Seek } pkg io, type Seeker interface, Seek(int64, int) (int64, error) pkg io, type WriteCloser interface { Close, Write } pkg io, type WriteCloser interface, Close() error pkg io, type WriteCloser interface, Write([]uint8) (int, error) pkg io, type WriteSeeker interface { Seek, Write } pkg io, type WriteSeeker interface, Seek(int64, int) (int64, error) pkg io, type WriteSeeker interface, Write([]uint8) (int, error) pkg io, type Writer interface { Write } pkg io, type Writer interface, Write([]uint8) (int, error) pkg io, type WriterAt interface { WriteAt } pkg io, type WriterAt interface, WriteAt([]uint8, int64) (int, error) pkg io, type WriterTo interface { WriteTo } pkg io, type WriterTo interface, WriteTo(Writer) (int64, error) pkg io, var EOF error pkg io, var ErrClosedPipe error pkg io, var ErrShortBuffer error pkg io, var ErrShortWrite error pkg io, var ErrUnexpectedEOF error pkg io/ioutil, func NopCloser(io.Reader) io.ReadCloser pkg io/ioutil, func ReadAll(io.Reader) ([]uint8, error) pkg io/ioutil, func ReadDir(string) ([]os.FileInfo, error) pkg io/ioutil, func ReadFile(string) ([]uint8, error) pkg io/ioutil, func TempDir(string, string) (string, error) pkg io/ioutil, func TempFile(string, string) (*os.File, error) pkg io/ioutil, func WriteFile(string, []uint8, os.FileMode) error pkg io/ioutil, var Discard io.Writer pkg log, const Ldate ideal-int pkg log, const Llongfile ideal-int pkg log, const Lmicroseconds ideal-int pkg log, const Lshortfile ideal-int pkg log, const LstdFlags ideal-int pkg log, const Ltime ideal-int pkg log, func Fatal(...interface{}) pkg log, func Fatalf(string, ...interface{}) pkg log, func Fatalln(...interface{}) pkg log, func Flags() int pkg log, func New(io.Writer, string, int) *Logger pkg log, func Panic(...interface{}) pkg log, func Panicf(string, ...interface{}) pkg log, func Panicln(...interface{}) pkg log, func Prefix() string pkg log, func Print(...interface{}) pkg log, func Printf(string, ...interface{}) pkg log, func Println(...interface{}) pkg log, func SetFlags(int) pkg log, func SetOutput(io.Writer) pkg log, func SetPrefix(string) pkg log, method (*Logger) Fatal(...interface{}) pkg log, method (*Logger) Fatalf(string, ...interface{}) pkg log, method (*Logger) Fatalln(...interface{}) pkg log, method (*Logger) Flags() int pkg log, method (*Logger) Output(int, string) error pkg log, method (*Logger) Panic(...interface{}) pkg log, method (*Logger) Panicf(string, ...interface{}) pkg log, method (*Logger) Panicln(...interface{}) pkg log, method (*Logger) Prefix() string pkg log, method (*Logger) Print(...interface{}) pkg log, method (*Logger) Printf(string, ...interface{}) pkg log, method (*Logger) Println(...interface{}) pkg log, method (*Logger) SetFlags(int) pkg log, method (*Logger) SetPrefix(string) pkg log, type Logger struct pkg log/syslog (darwin-386), const LOG_ALERT Priority pkg log/syslog (darwin-386), const LOG_CRIT Priority pkg log/syslog (darwin-386), const LOG_DEBUG Priority pkg log/syslog (darwin-386), const LOG_EMERG Priority pkg log/syslog (darwin-386), const LOG_ERR Priority pkg log/syslog (darwin-386), const LOG_INFO Priority pkg log/syslog (darwin-386), const LOG_NOTICE Priority pkg log/syslog (darwin-386), const LOG_WARNING Priority pkg log/syslog (darwin-386), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (darwin-386), func New(Priority, string) (*Writer, error) pkg log/syslog (darwin-386), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (darwin-386), method (*Writer) Alert(string) error pkg log/syslog (darwin-386), method (*Writer) Close() error pkg log/syslog (darwin-386), method (*Writer) Crit(string) error pkg log/syslog (darwin-386), method (*Writer) Debug(string) error pkg log/syslog (darwin-386), method (*Writer) Emerg(string) error pkg log/syslog (darwin-386), method (*Writer) Err(string) error pkg log/syslog (darwin-386), method (*Writer) Info(string) error pkg log/syslog (darwin-386), method (*Writer) Notice(string) error pkg log/syslog (darwin-386), method (*Writer) Warning(string) error pkg log/syslog (darwin-386), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (darwin-386), type Priority int pkg log/syslog (darwin-386), type Writer struct pkg log/syslog (darwin-386-cgo), const LOG_ALERT Priority pkg log/syslog (darwin-386-cgo), const LOG_CRIT Priority pkg log/syslog (darwin-386-cgo), const LOG_DEBUG Priority pkg log/syslog (darwin-386-cgo), const LOG_EMERG Priority pkg log/syslog (darwin-386-cgo), const LOG_ERR Priority pkg log/syslog (darwin-386-cgo), const LOG_INFO Priority pkg log/syslog (darwin-386-cgo), const LOG_NOTICE Priority pkg log/syslog (darwin-386-cgo), const LOG_WARNING Priority pkg log/syslog (darwin-386-cgo), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (darwin-386-cgo), func New(Priority, string) (*Writer, error) pkg log/syslog (darwin-386-cgo), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (darwin-386-cgo), method (*Writer) Alert(string) error pkg log/syslog (darwin-386-cgo), method (*Writer) Close() error pkg log/syslog (darwin-386-cgo), method (*Writer) Crit(string) error pkg log/syslog (darwin-386-cgo), method (*Writer) Debug(string) error pkg log/syslog (darwin-386-cgo), method (*Writer) Emerg(string) error pkg log/syslog (darwin-386-cgo), method (*Writer) Err(string) error pkg log/syslog (darwin-386-cgo), method (*Writer) Info(string) error pkg log/syslog (darwin-386-cgo), method (*Writer) Notice(string) error pkg log/syslog (darwin-386-cgo), method (*Writer) Warning(string) error pkg log/syslog (darwin-386-cgo), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (darwin-386-cgo), type Priority int pkg log/syslog (darwin-386-cgo), type Writer struct pkg log/syslog (darwin-amd64), const LOG_ALERT Priority pkg log/syslog (darwin-amd64), const LOG_CRIT Priority pkg log/syslog (darwin-amd64), const LOG_DEBUG Priority pkg log/syslog (darwin-amd64), const LOG_EMERG Priority pkg log/syslog (darwin-amd64), const LOG_ERR Priority pkg log/syslog (darwin-amd64), const LOG_INFO Priority pkg log/syslog (darwin-amd64), const LOG_NOTICE Priority pkg log/syslog (darwin-amd64), const LOG_WARNING Priority pkg log/syslog (darwin-amd64), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (darwin-amd64), func New(Priority, string) (*Writer, error) pkg log/syslog (darwin-amd64), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (darwin-amd64), method (*Writer) Alert(string) error pkg log/syslog (darwin-amd64), method (*Writer) Close() error pkg log/syslog (darwin-amd64), method (*Writer) Crit(string) error pkg log/syslog (darwin-amd64), method (*Writer) Debug(string) error pkg log/syslog (darwin-amd64), method (*Writer) Emerg(string) error pkg log/syslog (darwin-amd64), method (*Writer) Err(string) error pkg log/syslog (darwin-amd64), method (*Writer) Info(string) error pkg log/syslog (darwin-amd64), method (*Writer) Notice(string) error pkg log/syslog (darwin-amd64), method (*Writer) Warning(string) error pkg log/syslog (darwin-amd64), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (darwin-amd64), type Priority int pkg log/syslog (darwin-amd64), type Writer struct pkg log/syslog (darwin-amd64-cgo), const LOG_ALERT Priority pkg log/syslog (darwin-amd64-cgo), const LOG_CRIT Priority pkg log/syslog (darwin-amd64-cgo), const LOG_DEBUG Priority pkg log/syslog (darwin-amd64-cgo), const LOG_EMERG Priority pkg log/syslog (darwin-amd64-cgo), const LOG_ERR Priority pkg log/syslog (darwin-amd64-cgo), const LOG_INFO Priority pkg log/syslog (darwin-amd64-cgo), const LOG_NOTICE Priority pkg log/syslog (darwin-amd64-cgo), const LOG_WARNING Priority pkg log/syslog (darwin-amd64-cgo), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (darwin-amd64-cgo), func New(Priority, string) (*Writer, error) pkg log/syslog (darwin-amd64-cgo), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (darwin-amd64-cgo), method (*Writer) Alert(string) error pkg log/syslog (darwin-amd64-cgo), method (*Writer) Close() error pkg log/syslog (darwin-amd64-cgo), method (*Writer) Crit(string) error pkg log/syslog (darwin-amd64-cgo), method (*Writer) Debug(string) error pkg log/syslog (darwin-amd64-cgo), method (*Writer) Emerg(string) error pkg log/syslog (darwin-amd64-cgo), method (*Writer) Err(string) error pkg log/syslog (darwin-amd64-cgo), method (*Writer) Info(string) error pkg log/syslog (darwin-amd64-cgo), method (*Writer) Notice(string) error pkg log/syslog (darwin-amd64-cgo), method (*Writer) Warning(string) error pkg log/syslog (darwin-amd64-cgo), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (darwin-amd64-cgo), type Priority int pkg log/syslog (darwin-amd64-cgo), type Writer struct pkg log/syslog (freebsd-386), const LOG_ALERT Priority pkg log/syslog (freebsd-386), const LOG_CRIT Priority pkg log/syslog (freebsd-386), const LOG_DEBUG Priority pkg log/syslog (freebsd-386), const LOG_EMERG Priority pkg log/syslog (freebsd-386), const LOG_ERR Priority pkg log/syslog (freebsd-386), const LOG_INFO Priority pkg log/syslog (freebsd-386), const LOG_NOTICE Priority pkg log/syslog (freebsd-386), const LOG_WARNING Priority pkg log/syslog (freebsd-386), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (freebsd-386), func New(Priority, string) (*Writer, error) pkg log/syslog (freebsd-386), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (freebsd-386), method (*Writer) Alert(string) error pkg log/syslog (freebsd-386), method (*Writer) Close() error pkg log/syslog (freebsd-386), method (*Writer) Crit(string) error pkg log/syslog (freebsd-386), method (*Writer) Debug(string) error pkg log/syslog (freebsd-386), method (*Writer) Emerg(string) error pkg log/syslog (freebsd-386), method (*Writer) Err(string) error pkg log/syslog (freebsd-386), method (*Writer) Info(string) error pkg log/syslog (freebsd-386), method (*Writer) Notice(string) error pkg log/syslog (freebsd-386), method (*Writer) Warning(string) error pkg log/syslog (freebsd-386), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (freebsd-386), type Priority int pkg log/syslog (freebsd-386), type Writer struct pkg log/syslog (freebsd-amd64), const LOG_ALERT Priority pkg log/syslog (freebsd-amd64), const LOG_CRIT Priority pkg log/syslog (freebsd-amd64), const LOG_DEBUG Priority pkg log/syslog (freebsd-amd64), const LOG_EMERG Priority pkg log/syslog (freebsd-amd64), const LOG_ERR Priority pkg log/syslog (freebsd-amd64), const LOG_INFO Priority pkg log/syslog (freebsd-amd64), const LOG_NOTICE Priority pkg log/syslog (freebsd-amd64), const LOG_WARNING Priority pkg log/syslog (freebsd-amd64), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (freebsd-amd64), func New(Priority, string) (*Writer, error) pkg log/syslog (freebsd-amd64), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (freebsd-amd64), method (*Writer) Alert(string) error pkg log/syslog (freebsd-amd64), method (*Writer) Close() error pkg log/syslog (freebsd-amd64), method (*Writer) Crit(string) error pkg log/syslog (freebsd-amd64), method (*Writer) Debug(string) error pkg log/syslog (freebsd-amd64), method (*Writer) Emerg(string) error pkg log/syslog (freebsd-amd64), method (*Writer) Err(string) error pkg log/syslog (freebsd-amd64), method (*Writer) Info(string) error pkg log/syslog (freebsd-amd64), method (*Writer) Notice(string) error pkg log/syslog (freebsd-amd64), method (*Writer) Warning(string) error pkg log/syslog (freebsd-amd64), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (freebsd-amd64), type Priority int pkg log/syslog (freebsd-amd64), type Writer struct pkg log/syslog (linux-386), const LOG_ALERT Priority pkg log/syslog (linux-386), const LOG_CRIT Priority pkg log/syslog (linux-386), const LOG_DEBUG Priority pkg log/syslog (linux-386), const LOG_EMERG Priority pkg log/syslog (linux-386), const LOG_ERR Priority pkg log/syslog (linux-386), const LOG_INFO Priority pkg log/syslog (linux-386), const LOG_NOTICE Priority pkg log/syslog (linux-386), const LOG_WARNING Priority pkg log/syslog (linux-386), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (linux-386), func New(Priority, string) (*Writer, error) pkg log/syslog (linux-386), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (linux-386), method (*Writer) Alert(string) error pkg log/syslog (linux-386), method (*Writer) Close() error pkg log/syslog (linux-386), method (*Writer) Crit(string) error pkg log/syslog (linux-386), method (*Writer) Debug(string) error pkg log/syslog (linux-386), method (*Writer) Emerg(string) error pkg log/syslog (linux-386), method (*Writer) Err(string) error pkg log/syslog (linux-386), method (*Writer) Info(string) error pkg log/syslog (linux-386), method (*Writer) Notice(string) error pkg log/syslog (linux-386), method (*Writer) Warning(string) error pkg log/syslog (linux-386), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (linux-386), type Priority int pkg log/syslog (linux-386), type Writer struct pkg log/syslog (linux-386-cgo), const LOG_ALERT Priority pkg log/syslog (linux-386-cgo), const LOG_CRIT Priority pkg log/syslog (linux-386-cgo), const LOG_DEBUG Priority pkg log/syslog (linux-386-cgo), const LOG_EMERG Priority pkg log/syslog (linux-386-cgo), const LOG_ERR Priority pkg log/syslog (linux-386-cgo), const LOG_INFO Priority pkg log/syslog (linux-386-cgo), const LOG_NOTICE Priority pkg log/syslog (linux-386-cgo), const LOG_WARNING Priority pkg log/syslog (linux-386-cgo), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (linux-386-cgo), func New(Priority, string) (*Writer, error) pkg log/syslog (linux-386-cgo), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (linux-386-cgo), method (*Writer) Alert(string) error pkg log/syslog (linux-386-cgo), method (*Writer) Close() error pkg log/syslog (linux-386-cgo), method (*Writer) Crit(string) error pkg log/syslog (linux-386-cgo), method (*Writer) Debug(string) error pkg log/syslog (linux-386-cgo), method (*Writer) Emerg(string) error pkg log/syslog (linux-386-cgo), method (*Writer) Err(string) error pkg log/syslog (linux-386-cgo), method (*Writer) Info(string) error pkg log/syslog (linux-386-cgo), method (*Writer) Notice(string) error pkg log/syslog (linux-386-cgo), method (*Writer) Warning(string) error pkg log/syslog (linux-386-cgo), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (linux-386-cgo), type Priority int pkg log/syslog (linux-386-cgo), type Writer struct pkg log/syslog (linux-amd64), const LOG_ALERT Priority pkg log/syslog (linux-amd64), const LOG_CRIT Priority pkg log/syslog (linux-amd64), const LOG_DEBUG Priority pkg log/syslog (linux-amd64), const LOG_EMERG Priority pkg log/syslog (linux-amd64), const LOG_ERR Priority pkg log/syslog (linux-amd64), const LOG_INFO Priority pkg log/syslog (linux-amd64), const LOG_NOTICE Priority pkg log/syslog (linux-amd64), const LOG_WARNING Priority pkg log/syslog (linux-amd64), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (linux-amd64), func New(Priority, string) (*Writer, error) pkg log/syslog (linux-amd64), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (linux-amd64), method (*Writer) Alert(string) error pkg log/syslog (linux-amd64), method (*Writer) Close() error pkg log/syslog (linux-amd64), method (*Writer) Crit(string) error pkg log/syslog (linux-amd64), method (*Writer) Debug(string) error pkg log/syslog (linux-amd64), method (*Writer) Emerg(string) error pkg log/syslog (linux-amd64), method (*Writer) Err(string) error pkg log/syslog (linux-amd64), method (*Writer) Info(string) error pkg log/syslog (linux-amd64), method (*Writer) Notice(string) error pkg log/syslog (linux-amd64), method (*Writer) Warning(string) error pkg log/syslog (linux-amd64), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (linux-amd64), type Priority int pkg log/syslog (linux-amd64), type Writer struct pkg log/syslog (linux-amd64-cgo), const LOG_ALERT Priority pkg log/syslog (linux-amd64-cgo), const LOG_CRIT Priority pkg log/syslog (linux-amd64-cgo), const LOG_DEBUG Priority pkg log/syslog (linux-amd64-cgo), const LOG_EMERG Priority pkg log/syslog (linux-amd64-cgo), const LOG_ERR Priority pkg log/syslog (linux-amd64-cgo), const LOG_INFO Priority pkg log/syslog (linux-amd64-cgo), const LOG_NOTICE Priority pkg log/syslog (linux-amd64-cgo), const LOG_WARNING Priority pkg log/syslog (linux-amd64-cgo), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (linux-amd64-cgo), func New(Priority, string) (*Writer, error) pkg log/syslog (linux-amd64-cgo), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (linux-amd64-cgo), method (*Writer) Alert(string) error pkg log/syslog (linux-amd64-cgo), method (*Writer) Close() error pkg log/syslog (linux-amd64-cgo), method (*Writer) Crit(string) error pkg log/syslog (linux-amd64-cgo), method (*Writer) Debug(string) error pkg log/syslog (linux-amd64-cgo), method (*Writer) Emerg(string) error pkg log/syslog (linux-amd64-cgo), method (*Writer) Err(string) error pkg log/syslog (linux-amd64-cgo), method (*Writer) Info(string) error pkg log/syslog (linux-amd64-cgo), method (*Writer) Notice(string) error pkg log/syslog (linux-amd64-cgo), method (*Writer) Warning(string) error pkg log/syslog (linux-amd64-cgo), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (linux-amd64-cgo), type Priority int pkg log/syslog (linux-amd64-cgo), type Writer struct pkg log/syslog (linux-arm), const LOG_ALERT Priority pkg log/syslog (linux-arm), const LOG_CRIT Priority pkg log/syslog (linux-arm), const LOG_DEBUG Priority pkg log/syslog (linux-arm), const LOG_EMERG Priority pkg log/syslog (linux-arm), const LOG_ERR Priority pkg log/syslog (linux-arm), const LOG_INFO Priority pkg log/syslog (linux-arm), const LOG_NOTICE Priority pkg log/syslog (linux-arm), const LOG_WARNING Priority pkg log/syslog (linux-arm), func Dial(string, string, Priority, string) (*Writer, error) pkg log/syslog (linux-arm), func New(Priority, string) (*Writer, error) pkg log/syslog (linux-arm), func NewLogger(Priority, int) (*log.Logger, error) pkg log/syslog (linux-arm), method (*Writer) Alert(string) error pkg log/syslog (linux-arm), method (*Writer) Close() error pkg log/syslog (linux-arm), method (*Writer) Crit(string) error pkg log/syslog (linux-arm), method (*Writer) Debug(string) error pkg log/syslog (linux-arm), method (*Writer) Emerg(string) error pkg log/syslog (linux-arm), method (*Writer) Err(string) error pkg log/syslog (linux-arm), method (*Writer) Info(string) error pkg log/syslog (linux-arm), method (*Writer) Notice(string) error pkg log/syslog (linux-arm), method (*Writer) Warning(string) error pkg log/syslog (linux-arm), method (*Writer) Write([]uint8) (int, error) pkg log/syslog (linux-arm), type Priority int pkg log/syslog (linux-arm), type Writer struct pkg math, const E ideal-float pkg math, const Ln10 ideal-float pkg math, const Ln2 ideal-float pkg math, const Log10E ideal-float pkg math, const Log2E ideal-float pkg math, const MaxFloat32 ideal-float pkg math, const MaxFloat64 ideal-float pkg math, const MaxInt16 ideal-int pkg math, const MaxInt32 ideal-int pkg math, const MaxInt64 ideal-int pkg math, const MaxInt8 ideal-int pkg math, const MaxUint16 ideal-int pkg math, const MaxUint32 ideal-int pkg math, const MaxUint64 ideal-int pkg math, const MaxUint8 ideal-int pkg math, const MinInt16 ideal-int pkg math, const MinInt32 ideal-int pkg math, const MinInt64 ideal-int pkg math, const MinInt8 ideal-int pkg math, const Phi ideal-float pkg math, const Pi ideal-float pkg math, const SmallestNonzeroFloat32 ideal-float pkg math, const SmallestNonzeroFloat64 ideal-float pkg math, const Sqrt2 ideal-float pkg math, const SqrtE ideal-float pkg math, const SqrtPhi ideal-float pkg math, const SqrtPi ideal-float pkg math, func Abs(float64) float64 pkg math, func Acos(float64) float64 pkg math, func Acosh(float64) float64 pkg math, func Asin(float64) float64 pkg math, func Asinh(float64) float64 pkg math, func Atan(float64) float64 pkg math, func Atan2(float64, float64) float64 pkg math, func Atanh(float64) float64 pkg math, func Cbrt(float64) float64 pkg math, func Ceil(float64) float64 pkg math, func Copysign(float64, float64) float64 pkg math, func Cos(float64) float64 pkg math, func Cosh(float64) float64 pkg math, func Dim(float64, float64) float64 pkg math, func Erf(float64) float64 pkg math, func Erfc(float64) float64 pkg math, func Exp(float64) float64 pkg math, func Exp2(float64) float64 pkg math, func Expm1(float64) float64 pkg math, func Float32bits(float32) uint32 pkg math, func Float32frombits(uint32) float32 pkg math, func Float64bits(float64) uint64 pkg math, func Float64frombits(uint64) float64 pkg math, func Floor(float64) float64 pkg math, func Frexp(float64) (float64, int) pkg math, func Gamma(float64) float64 pkg math, func Hypot(float64, float64) float64 pkg math, func Ilogb(float64) int pkg math, func Inf(int) float64 pkg math, func IsInf(float64, int) bool pkg math, func IsNaN(float64) bool pkg math, func J0(float64) float64 pkg math, func J1(float64) float64 pkg math, func Jn(int, float64) float64 pkg math, func Ldexp(float64, int) float64 pkg math, func Lgamma(float64) (float64, int) pkg math, func Log(float64) float64 pkg math, func Log10(float64) float64 pkg math, func Log1p(float64) float64 pkg math, func Log2(float64) float64 pkg math, func Logb(float64) float64 pkg math, func Max(float64, float64) float64 pkg math, func Min(float64, float64) float64 pkg math, func Mod(float64, float64) float64 pkg math, func Modf(float64) (float64, float64) pkg math, func NaN() float64 pkg math, func Nextafter(float64, float64) float64 pkg math, func Pow(float64, float64) float64 pkg math, func Pow10(int) float64 pkg math, func Remainder(float64, float64) float64 pkg math, func Signbit(float64) bool pkg math, func Sin(float64) float64 pkg math, func Sincos(float64) (float64, float64) pkg math, func Sinh(float64) float64 pkg math, func Sqrt(float64) float64 pkg math, func Tan(float64) float64 pkg math, func Tanh(float64) float64 pkg math, func Trunc(float64) float64 pkg math, func Y0(float64) float64 pkg math, func Y1(float64) float64 pkg math, func Yn(int, float64) float64 pkg math/big, const MaxBase ideal-char pkg math/big, func NewInt(int64) *Int pkg math/big, func NewRat(int64, int64) *Rat pkg math/big, method (*Int) Abs(*Int) *Int pkg math/big, method (*Int) Add(*Int, *Int) *Int pkg math/big, method (*Int) And(*Int, *Int) *Int pkg math/big, method (*Int) AndNot(*Int, *Int) *Int pkg math/big, method (*Int) Binomial(int64, int64) *Int pkg math/big, method (*Int) Bit(int) uint pkg math/big, method (*Int) BitLen() int pkg math/big, method (*Int) Bits() []Word pkg math/big, method (*Int) Bytes() []uint8 pkg math/big, method (*Int) Cmp(*Int) int pkg math/big, method (*Int) Div(*Int, *Int) *Int pkg math/big, method (*Int) DivMod(*Int, *Int, *Int) (*Int, *Int) pkg math/big, method (*Int) Exp(*Int, *Int, *Int) *Int pkg math/big, method (*Int) Format(fmt.State, int32) pkg math/big, method (*Int) GCD(*Int, *Int, *Int, *Int) *Int pkg math/big, method (*Int) GobDecode([]uint8) error pkg math/big, method (*Int) GobEncode() ([]uint8, error) pkg math/big, method (*Int) Int64() int64 pkg math/big, method (*Int) Lsh(*Int, uint) *Int pkg math/big, method (*Int) Mod(*Int, *Int) *Int pkg math/big, method (*Int) ModInverse(*Int, *Int) *Int pkg math/big, method (*Int) Mul(*Int, *Int) *Int pkg math/big, method (*Int) MulRange(int64, int64) *Int pkg math/big, method (*Int) Neg(*Int) *Int pkg math/big, method (*Int) Not(*Int) *Int pkg math/big, method (*Int) Or(*Int, *Int) *Int pkg math/big, method (*Int) ProbablyPrime(int) bool pkg math/big, method (*Int) Quo(*Int, *Int) *Int pkg math/big, method (*Int) QuoRem(*Int, *Int, *Int) (*Int, *Int) pkg math/big, method (*Int) Rand(*rand.Rand, *Int) *Int pkg math/big, method (*Int) Rem(*Int, *Int) *Int pkg math/big, method (*Int) Rsh(*Int, uint) *Int pkg math/big, method (*Int) Scan(fmt.ScanState, int32) error pkg math/big, method (*Int) Set(*Int) *Int pkg math/big, method (*Int) SetBit(*Int, int, uint) *Int pkg math/big, method (*Int) SetBits([]Word) *Int pkg math/big, method (*Int) SetBytes([]uint8) *Int pkg math/big, method (*Int) SetInt64(int64) *Int pkg math/big, method (*Int) SetString(string, int) (*Int, bool) pkg math/big, method (*Int) Sign() int pkg math/big, method (*Int) String() string pkg math/big, method (*Int) Sub(*Int, *Int) *Int pkg math/big, method (*Int) Xor(*Int, *Int) *Int pkg math/big, method (*Rat) Abs(*Rat) *Rat pkg math/big, method (*Rat) Add(*Rat, *Rat) *Rat pkg math/big, method (*Rat) Cmp(*Rat) int pkg math/big, method (*Rat) Denom() *Int pkg math/big, method (*Rat) FloatString(int) string pkg math/big, method (*Rat) GobDecode([]uint8) error pkg math/big, method (*Rat) GobEncode() ([]uint8, error) pkg math/big, method (*Rat) Inv(*Rat) *Rat pkg math/big, method (*Rat) IsInt() bool pkg math/big, method (*Rat) Mul(*Rat, *Rat) *Rat pkg math/big, method (*Rat) Neg(*Rat) *Rat pkg math/big, method (*Rat) Num() *Int pkg math/big, method (*Rat) Quo(*Rat, *Rat) *Rat pkg math/big, method (*Rat) RatString() string pkg math/big, method (*Rat) Scan(fmt.ScanState, int32) error pkg math/big, method (*Rat) Set(*Rat) *Rat pkg math/big, method (*Rat) SetFrac(*Int, *Int) *Rat pkg math/big, method (*Rat) SetFrac64(int64, int64) *Rat pkg math/big, method (*Rat) SetInt(*Int) *Rat pkg math/big, method (*Rat) SetInt64(int64) *Rat pkg math/big, method (*Rat) SetString(string) (*Rat, bool) pkg math/big, method (*Rat) Sign() int pkg math/big, method (*Rat) String() string pkg math/big, method (*Rat) Sub(*Rat, *Rat) *Rat pkg math/big, type Int struct pkg math/big, type Rat struct pkg math/big, type Word uintptr pkg math/cmplx, func Abs(complex128) float64 pkg math/cmplx, func Acos(complex128) complex128 pkg math/cmplx, func Acosh(complex128) complex128 pkg math/cmplx, func Asin(complex128) complex128 pkg math/cmplx, func Asinh(complex128) complex128 pkg math/cmplx, func Atan(complex128) complex128 pkg math/cmplx, func Atanh(complex128) complex128 pkg math/cmplx, func Conj(complex128) complex128 pkg math/cmplx, func Cos(complex128) complex128 pkg math/cmplx, func Cosh(complex128) complex128 pkg math/cmplx, func Cot(complex128) complex128 pkg math/cmplx, func Exp(complex128) complex128 pkg math/cmplx, func Inf() complex128 pkg math/cmplx, func IsInf(complex128) bool pkg math/cmplx, func IsNaN(complex128) bool pkg math/cmplx, func Log(complex128) complex128 pkg math/cmplx, func Log10(complex128) complex128 pkg math/cmplx, func NaN() complex128 pkg math/cmplx, func Phase(complex128) float64 pkg math/cmplx, func Polar(complex128) (float64, float64) pkg math/cmplx, func Pow(complex128, complex128) complex128 pkg math/cmplx, func Rect(float64, float64) complex128 pkg math/cmplx, func Sin(complex128) complex128 pkg math/cmplx, func Sinh(complex128) complex128 pkg math/cmplx, func Sqrt(complex128) complex128 pkg math/cmplx, func Tan(complex128) complex128 pkg math/cmplx, func Tanh(complex128) complex128 pkg math/rand, func ExpFloat64() float64 pkg math/rand, func Float32() float32 pkg math/rand, func Float64() float64 pkg math/rand, func Int() int pkg math/rand, func Int31() int32 pkg math/rand, func Int31n(int32) int32 pkg math/rand, func Int63() int64 pkg math/rand, func Int63n(int64) int64 pkg math/rand, func Intn(int) int pkg math/rand, func New(Source) *Rand pkg math/rand, func NewSource(int64) Source pkg math/rand, func NewZipf(*Rand, float64, float64, uint64) *Zipf pkg math/rand, func NormFloat64() float64 pkg math/rand, func Perm(int) []int pkg math/rand, func Seed(int64) pkg math/rand, func Uint32() uint32 pkg math/rand, method (*Rand) ExpFloat64() float64 pkg math/rand, method (*Rand) Float32() float32 pkg math/rand, method (*Rand) Float64() float64 pkg math/rand, method (*Rand) Int() int pkg math/rand, method (*Rand) Int31() int32 pkg math/rand, method (*Rand) Int31n(int32) int32 pkg math/rand, method (*Rand) Int63() int64 pkg math/rand, method (*Rand) Int63n(int64) int64 pkg math/rand, method (*Rand) Intn(int) int pkg math/rand, method (*Rand) NormFloat64() float64 pkg math/rand, method (*Rand) Perm(int) []int pkg math/rand, method (*Rand) Seed(int64) pkg math/rand, method (*Rand) Uint32() uint32 pkg math/rand, method (*Zipf) Uint64() uint64 pkg math/rand, type Rand struct pkg math/rand, type Source interface { Int63, Seed } pkg math/rand, type Source interface, Int63() int64 pkg math/rand, type Source interface, Seed(int64) pkg math/rand, type Zipf struct pkg mime, func AddExtensionType(string, string) error pkg mime, func FormatMediaType(string, map[string]string) string pkg mime, func ParseMediaType(string) (string, map[string]string, error) pkg mime, func TypeByExtension(string) string pkg mime/multipart, func NewReader(io.Reader, string) *Reader pkg mime/multipart, func NewWriter(io.Writer) *Writer pkg mime/multipart, method (*FileHeader) Open() (File, error) pkg mime/multipart, method (*Form) RemoveAll() error pkg mime/multipart, method (*Part) Close() error pkg mime/multipart, method (*Part) FileName() string pkg mime/multipart, method (*Part) FormName() string pkg mime/multipart, method (*Part) Read([]uint8) (int, error) pkg mime/multipart, method (*Reader) NextPart() (*Part, error) pkg mime/multipart, method (*Reader) ReadForm(int64) (*Form, error) pkg mime/multipart, method (*Writer) Boundary() string pkg mime/multipart, method (*Writer) Close() error pkg mime/multipart, method (*Writer) CreateFormField(string) (io.Writer, error) pkg mime/multipart, method (*Writer) CreateFormFile(string, string) (io.Writer, error) pkg mime/multipart, method (*Writer) CreatePart(textproto.MIMEHeader) (io.Writer, error) pkg mime/multipart, method (*Writer) FormDataContentType() string pkg mime/multipart, method (*Writer) WriteField(string, string) error pkg mime/multipart, type File interface { Close, Read, ReadAt, Seek } pkg mime/multipart, type File interface, Close() error pkg mime/multipart, type File interface, Read([]uint8) (int, error) pkg mime/multipart, type File interface, ReadAt([]uint8, int64) (int, error) pkg mime/multipart, type File interface, Seek(int64, int) (int64, error) pkg mime/multipart, type FileHeader struct pkg mime/multipart, type FileHeader struct, Filename string pkg mime/multipart, type FileHeader struct, Header textproto.MIMEHeader pkg mime/multipart, type Form struct pkg mime/multipart, type Form struct, File map[string][]*FileHeader pkg mime/multipart, type Form struct, Value map[string][]string pkg mime/multipart, type Part struct pkg mime/multipart, type Part struct, Header textproto.MIMEHeader pkg mime/multipart, type Reader struct pkg mime/multipart, type Writer struct pkg net, const FlagBroadcast Flags pkg net, const FlagLoopback Flags pkg net, const FlagMulticast Flags pkg net, const FlagPointToPoint Flags pkg net, const FlagUp Flags pkg net, const IPv4len ideal-int pkg net, const IPv6len ideal-int pkg net, func CIDRMask(int, int) IPMask pkg net, func Dial(string, string) (Conn, error) pkg net, func DialIP(string, *IPAddr, *IPAddr) (*IPConn, error) pkg net, func DialTCP(string, *TCPAddr, *TCPAddr) (*TCPConn, error) pkg net, func DialTimeout(string, string, time.Duration) (Conn, error) pkg net, func DialUDP(string, *UDPAddr, *UDPAddr) (*UDPConn, error) pkg net, func DialUnix(string, *UnixAddr, *UnixAddr) (*UnixConn, error) pkg net, func FileConn(*os.File) (Conn, error) pkg net, func FileListener(*os.File) (Listener, error) pkg net, func FilePacketConn(*os.File) (PacketConn, error) pkg net, func IPv4(uint8, uint8, uint8, uint8) IP pkg net, func IPv4Mask(uint8, uint8, uint8, uint8) IPMask pkg net, func InterfaceAddrs() ([]Addr, error) pkg net, func InterfaceByIndex(int) (*Interface, error) pkg net, func InterfaceByName(string) (*Interface, error) pkg net, func Interfaces() ([]Interface, error) pkg net, func JoinHostPort(string, string) string pkg net, func Listen(string, string) (Listener, error) pkg net, func ListenIP(string, *IPAddr) (*IPConn, error) pkg net, func ListenMulticastUDP(string, *Interface, *UDPAddr) (*UDPConn, error) pkg net, func ListenPacket(string, string) (PacketConn, error) pkg net, func ListenTCP(string, *TCPAddr) (*TCPListener, error) pkg net, func ListenUDP(string, *UDPAddr) (*UDPConn, error) pkg net, func ListenUnix(string, *UnixAddr) (*UnixListener, error) pkg net, func ListenUnixgram(string, *UnixAddr) (*UDPConn, error) pkg net, func LookupAddr(string) ([]string, error) pkg net, func LookupCNAME(string) (string, error) pkg net, func LookupHost(string) ([]string, error) pkg net, func LookupIP(string) ([]IP, error) pkg net, func LookupMX(string) ([]*MX, error) pkg net, func LookupPort(string, string) (int, error) pkg net, func LookupSRV(string, string, string) (string, []*SRV, error) pkg net, func LookupTXT(string) ([]string, error) pkg net, func ParseCIDR(string) (IP, *IPNet, error) pkg net, func ParseIP(string) IP pkg net, func ParseMAC(string) (HardwareAddr, error) pkg net, func Pipe() (Conn, Conn) pkg net, func ResolveIPAddr(string, string) (*IPAddr, error) pkg net, func ResolveTCPAddr(string, string) (*TCPAddr, error) pkg net, func ResolveUDPAddr(string, string) (*UDPAddr, error) pkg net, func ResolveUnixAddr(string, string) (*UnixAddr, error) pkg net, func SplitHostPort(string) (string, string, error) pkg net, method (*AddrError) Error() string pkg net, method (*AddrError) Temporary() bool pkg net, method (*AddrError) Timeout() bool pkg net, method (*DNSConfigError) Error() string pkg net, method (*DNSConfigError) Temporary() bool pkg net, method (*DNSConfigError) Timeout() bool pkg net, method (*DNSError) Error() string pkg net, method (*DNSError) Temporary() bool pkg net, method (*DNSError) Timeout() bool pkg net, method (*IPAddr) Network() string pkg net, method (*IPAddr) String() string pkg net, method (*IPConn) Close() error pkg net, method (*IPConn) File() (*os.File, error) pkg net, method (*IPConn) LocalAddr() Addr pkg net, method (*IPConn) Read([]uint8) (int, error) pkg net, method (*IPConn) ReadFrom([]uint8) (int, Addr, error) pkg net, method (*IPConn) ReadFromIP([]uint8) (int, *IPAddr, error) pkg net, method (*IPConn) RemoteAddr() Addr pkg net, method (*IPConn) SetDeadline(time.Time) error pkg net, method (*IPConn) SetReadBuffer(int) error pkg net, method (*IPConn) SetReadDeadline(time.Time) error pkg net, method (*IPConn) SetWriteBuffer(int) error pkg net, method (*IPConn) SetWriteDeadline(time.Time) error pkg net, method (*IPConn) Write([]uint8) (int, error) pkg net, method (*IPConn) WriteTo([]uint8, Addr) (int, error) pkg net, method (*IPConn) WriteToIP([]uint8, *IPAddr) (int, error) pkg net, method (*IPNet) Contains(IP) bool pkg net, method (*IPNet) Network() string pkg net, method (*IPNet) String() string pkg net, method (*Interface) Addrs() ([]Addr, error) pkg net, method (*Interface) MulticastAddrs() ([]Addr, error) pkg net, method (*OpError) Error() string pkg net, method (*OpError) Temporary() bool pkg net, method (*OpError) Timeout() bool pkg net, method (*ParseError) Error() string pkg net, method (*TCPAddr) Network() string pkg net, method (*TCPAddr) String() string pkg net, method (*TCPConn) Close() error pkg net, method (*TCPConn) CloseRead() error pkg net, method (*TCPConn) CloseWrite() error pkg net, method (*TCPConn) File() (*os.File, error) pkg net, method (*TCPConn) LocalAddr() Addr pkg net, method (*TCPConn) Read([]uint8) (int, error) pkg net, method (*TCPConn) ReadFrom(io.Reader) (int64, error) pkg net, method (*TCPConn) RemoteAddr() Addr pkg net, method (*TCPConn) SetDeadline(time.Time) error pkg net, method (*TCPConn) SetKeepAlive(bool) error pkg net, method (*TCPConn) SetLinger(int) error pkg net, method (*TCPConn) SetNoDelay(bool) error pkg net, method (*TCPConn) SetReadBuffer(int) error pkg net, method (*TCPConn) SetReadDeadline(time.Time) error pkg net, method (*TCPConn) SetWriteBuffer(int) error pkg net, method (*TCPConn) SetWriteDeadline(time.Time) error pkg net, method (*TCPConn) Write([]uint8) (int, error) pkg net, method (*TCPListener) Accept() (Conn, error) pkg net, method (*TCPListener) AcceptTCP() (*TCPConn, error) pkg net, method (*TCPListener) Addr() Addr pkg net, method (*TCPListener) Close() error pkg net, method (*TCPListener) File() (*os.File, error) pkg net, method (*TCPListener) SetDeadline(time.Time) error pkg net, method (*UDPAddr) Network() string pkg net, method (*UDPAddr) String() string pkg net, method (*UDPConn) Close() error pkg net, method (*UDPConn) File() (*os.File, error) pkg net, method (*UDPConn) LocalAddr() Addr pkg net, method (*UDPConn) Read([]uint8) (int, error) pkg net, method (*UDPConn) ReadFrom([]uint8) (int, Addr, error) pkg net, method (*UDPConn) ReadFromUDP([]uint8) (int, *UDPAddr, error) pkg net, method (*UDPConn) RemoteAddr() Addr pkg net, method (*UDPConn) SetDeadline(time.Time) error pkg net, method (*UDPConn) SetReadBuffer(int) error pkg net, method (*UDPConn) SetReadDeadline(time.Time) error pkg net, method (*UDPConn) SetWriteBuffer(int) error pkg net, method (*UDPConn) SetWriteDeadline(time.Time) error pkg net, method (*UDPConn) Write([]uint8) (int, error) pkg net, method (*UDPConn) WriteTo([]uint8, Addr) (int, error) pkg net, method (*UDPConn) WriteToUDP([]uint8, *UDPAddr) (int, error) pkg net, method (*UnixAddr) Network() string pkg net, method (*UnixAddr) String() string pkg net, method (*UnixConn) Close() error pkg net, method (*UnixConn) File() (*os.File, error) pkg net, method (*UnixConn) LocalAddr() Addr pkg net, method (*UnixConn) Read([]uint8) (int, error) pkg net, method (*UnixConn) ReadFrom([]uint8) (int, Addr, error) pkg net, method (*UnixConn) ReadFromUnix([]uint8) (int, *UnixAddr, error) pkg net, method (*UnixConn) ReadMsgUnix([]uint8, []uint8) (int, int, int, *UnixAddr, error) pkg net, method (*UnixConn) RemoteAddr() Addr pkg net, method (*UnixConn) SetDeadline(time.Time) error pkg net, method (*UnixConn) SetReadBuffer(int) error pkg net, method (*UnixConn) SetReadDeadline(time.Time) error pkg net, method (*UnixConn) SetWriteBuffer(int) error pkg net, method (*UnixConn) SetWriteDeadline(time.Time) error pkg net, method (*UnixConn) Write([]uint8) (int, error) pkg net, method (*UnixConn) WriteMsgUnix([]uint8, []uint8, *UnixAddr) (int, int, error) pkg net, method (*UnixConn) WriteTo([]uint8, Addr) (int, error) pkg net, method (*UnixConn) WriteToUnix([]uint8, *UnixAddr) (int, error) pkg net, method (*UnixListener) Accept() (Conn, error) pkg net, method (*UnixListener) AcceptUnix() (*UnixConn, error) pkg net, method (*UnixListener) Addr() Addr pkg net, method (*UnixListener) Close() error pkg net, method (*UnixListener) File() (*os.File, error) pkg net, method (*UnixListener) SetDeadline(time.Time) error pkg net, method (Flags) String() string pkg net, method (HardwareAddr) String() string pkg net, method (IP) DefaultMask() IPMask pkg net, method (IP) Equal(IP) bool pkg net, method (IP) IsGlobalUnicast() bool pkg net, method (IP) IsInterfaceLocalMulticast() bool pkg net, method (IP) IsLinkLocalMulticast() bool pkg net, method (IP) IsLinkLocalUnicast() bool pkg net, method (IP) IsLoopback() bool pkg net, method (IP) IsMulticast() bool pkg net, method (IP) IsUnspecified() bool pkg net, method (IP) Mask(IPMask) IP pkg net, method (IP) String() string pkg net, method (IP) To16() IP pkg net, method (IP) To4() IP pkg net, method (IPMask) Size() (int, int) pkg net, method (IPMask) String() string pkg net, method (InvalidAddrError) Error() string pkg net, method (InvalidAddrError) Temporary() bool pkg net, method (InvalidAddrError) Timeout() bool pkg net, method (UnknownNetworkError) Error() string pkg net, method (UnknownNetworkError) Temporary() bool pkg net, method (UnknownNetworkError) Timeout() bool pkg net, type Addr interface { Network, String } pkg net, type Addr interface, Network() string pkg net, type Addr interface, String() string pkg net, type AddrError struct pkg net, type AddrError struct, Addr string pkg net, type AddrError struct, Err string pkg net, type Conn interface { Close, LocalAddr, Read, RemoteAddr, SetDeadline, SetReadDeadline, SetWriteDeadline, Write } pkg net, type Conn interface, Close() error pkg net, type Conn interface, LocalAddr() Addr pkg net, type Conn interface, Read([]uint8) (int, error) pkg net, type Conn interface, RemoteAddr() Addr pkg net, type Conn interface, SetDeadline(time.Time) error pkg net, type Conn interface, SetReadDeadline(time.Time) error pkg net, type Conn interface, SetWriteDeadline(time.Time) error pkg net, type Conn interface, Write([]uint8) (int, error) pkg net, type DNSConfigError struct pkg net, type DNSConfigError struct, Err error pkg net, type DNSError struct pkg net, type DNSError struct, Err string pkg net, type DNSError struct, IsTimeout bool pkg net, type DNSError struct, Name string pkg net, type DNSError struct, Server string pkg net, type Error interface { Error, Temporary, Timeout } pkg net, type Error interface, Error() string pkg net, type Error interface, Temporary() bool pkg net, type Error interface, Timeout() bool pkg net, type Flags uint pkg net, type HardwareAddr []uint8 pkg net, type IP []uint8 pkg net, type IPAddr struct pkg net, type IPAddr struct, IP IP pkg net, type IPConn struct pkg net, type IPMask []uint8 pkg net, type IPNet struct pkg net, type IPNet struct, IP IP pkg net, type IPNet struct, Mask IPMask pkg net, type Interface struct pkg net, type Interface struct, Flags Flags pkg net, type Interface struct, HardwareAddr HardwareAddr pkg net, type Interface struct, Index int pkg net, type Interface struct, MTU int pkg net, type Interface struct, Name string pkg net, type InvalidAddrError string pkg net, type Listener interface { Accept, Addr, Close } pkg net, type Listener interface, Accept() (Conn, error) pkg net, type Listener interface, Addr() Addr pkg net, type Listener interface, Close() error pkg net, type MX struct pkg net, type MX struct, Host string pkg net, type MX struct, Pref uint16 pkg net, type OpError struct pkg net, type OpError struct, Addr Addr pkg net, type OpError struct, Err error pkg net, type OpError struct, Net string pkg net, type OpError struct, Op string pkg net, type PacketConn interface { Close, LocalAddr, ReadFrom, SetDeadline, SetReadDeadline, SetWriteDeadline, WriteTo } pkg net, type PacketConn interface, Close() error pkg net, type PacketConn interface, LocalAddr() Addr pkg net, type PacketConn interface, ReadFrom([]uint8) (int, Addr, error) pkg net, type PacketConn interface, SetDeadline(time.Time) error pkg net, type PacketConn interface, SetReadDeadline(time.Time) error pkg net, type PacketConn interface, SetWriteDeadline(time.Time) error pkg net, type PacketConn interface, WriteTo([]uint8, Addr) (int, error) pkg net, type ParseError struct pkg net, type ParseError struct, Text string pkg net, type ParseError struct, Type string pkg net, type SRV struct pkg net, type SRV struct, Port uint16 pkg net, type SRV struct, Priority uint16 pkg net, type SRV struct, Target string pkg net, type SRV struct, Weight uint16 pkg net, type TCPAddr struct pkg net, type TCPAddr struct, IP IP pkg net, type TCPAddr struct, Port int pkg net, type TCPConn struct pkg net, type TCPListener struct pkg net, type UDPAddr struct pkg net, type UDPAddr struct, IP IP pkg net, type UDPAddr struct, Port int pkg net, type UDPConn struct pkg net, type UnixAddr struct pkg net, type UnixAddr struct, Name string pkg net, type UnixAddr struct, Net string pkg net, type UnixConn struct pkg net, type UnixListener struct pkg net, type UnknownNetworkError string pkg net, var ErrWriteToConnected error pkg net, var IPv4allrouter IP pkg net, var IPv4allsys IP pkg net, var IPv4bcast IP pkg net, var IPv4zero IP pkg net, var IPv6interfacelocalallnodes IP pkg net, var IPv6linklocalallnodes IP pkg net, var IPv6linklocalallrouters IP pkg net, var IPv6loopback IP pkg net, var IPv6unspecified IP pkg net, var IPv6zero IP pkg net/http, const DefaultMaxHeaderBytes ideal-int pkg net/http, const DefaultMaxIdleConnsPerHost ideal-int pkg net/http, const StatusAccepted ideal-int pkg net/http, const StatusBadGateway ideal-int pkg net/http, const StatusBadRequest ideal-int pkg net/http, const StatusConflict ideal-int pkg net/http, const StatusContinue ideal-int pkg net/http, const StatusCreated ideal-int pkg net/http, const StatusExpectationFailed ideal-int pkg net/http, const StatusForbidden ideal-int pkg net/http, const StatusFound ideal-int pkg net/http, const StatusGatewayTimeout ideal-int pkg net/http, const StatusGone ideal-int pkg net/http, const StatusHTTPVersionNotSupported ideal-int pkg net/http, const StatusInternalServerError ideal-int pkg net/http, const StatusLengthRequired ideal-int pkg net/http, const StatusMethodNotAllowed ideal-int pkg net/http, const StatusMovedPermanently ideal-int pkg net/http, const StatusMultipleChoices ideal-int pkg net/http, const StatusNoContent ideal-int pkg net/http, const StatusNonAuthoritativeInfo ideal-int pkg net/http, const StatusNotAcceptable ideal-int pkg net/http, const StatusNotFound ideal-int pkg net/http, const StatusNotImplemented ideal-int pkg net/http, const StatusNotModified ideal-int pkg net/http, const StatusOK ideal-int pkg net/http, const StatusPartialContent ideal-int pkg net/http, const StatusPaymentRequired ideal-int pkg net/http, const StatusPreconditionFailed ideal-int pkg net/http, const StatusProxyAuthRequired ideal-int pkg net/http, const StatusRequestEntityTooLarge ideal-int pkg net/http, const StatusRequestTimeout ideal-int pkg net/http, const StatusRequestURITooLong ideal-int pkg net/http, const StatusRequestedRangeNotSatisfiable ideal-int pkg net/http, const StatusResetContent ideal-int pkg net/http, const StatusSeeOther ideal-int pkg net/http, const StatusServiceUnavailable ideal-int pkg net/http, const StatusSwitchingProtocols ideal-int pkg net/http, const StatusTeapot ideal-int pkg net/http, const StatusTemporaryRedirect ideal-int pkg net/http, const StatusUnauthorized ideal-int pkg net/http, const StatusUnsupportedMediaType ideal-int pkg net/http, const StatusUseProxy ideal-int pkg net/http, const TimeFormat ideal-string pkg net/http, func CanonicalHeaderKey(string) string pkg net/http, func DetectContentType([]uint8) string pkg net/http, func Error(ResponseWriter, string, int) pkg net/http, func FileServer(FileSystem) Handler pkg net/http, func Get(string) (*Response, error) pkg net/http, func Handle(string, Handler) pkg net/http, func HandleFunc(string, func(ResponseWriter, *Request)) pkg net/http, func Head(string) (*Response, error) pkg net/http, func ListenAndServe(string, Handler) error pkg net/http, func ListenAndServeTLS(string, string, string, Handler) error pkg net/http, func MaxBytesReader(ResponseWriter, io.ReadCloser, int64) io.ReadCloser pkg net/http, func NewFileTransport(FileSystem) RoundTripper pkg net/http, func NewRequest(string, string, io.Reader) (*Request, error) pkg net/http, func NewServeMux() *ServeMux pkg net/http, func NotFound(ResponseWriter, *Request) pkg net/http, func NotFoundHandler() Handler pkg net/http, func ParseHTTPVersion(string) (int, int, bool) pkg net/http, func Post(string, string, io.Reader) (*Response, error) pkg net/http, func PostForm(string, url.Values) (*Response, error) pkg net/http, func ProxyFromEnvironment(*Request) (*url.URL, error) pkg net/http, func ProxyURL(*url.URL) func(*Request) (*url.URL, error) pkg net/http, func ReadRequest(*bufio.Reader) (*Request, error) pkg net/http, func ReadResponse(*bufio.Reader, *Request) (*Response, error) pkg net/http, func Redirect(ResponseWriter, *Request, string, int) pkg net/http, func RedirectHandler(string, int) Handler pkg net/http, func Serve(net.Listener, Handler) error pkg net/http, func ServeContent(ResponseWriter, *Request, string, time.Time, io.ReadSeeker) pkg net/http, func ServeFile(ResponseWriter, *Request, string) pkg net/http, func SetCookie(ResponseWriter, *Cookie) pkg net/http, func StatusText(int) string pkg net/http, func StripPrefix(string, Handler) Handler pkg net/http, func TimeoutHandler(Handler, time.Duration, string) Handler pkg net/http, method (*Client) Do(*Request) (*Response, error) pkg net/http, method (*Client) Get(string) (*Response, error) pkg net/http, method (*Client) Head(string) (*Response, error) pkg net/http, method (*Client) Post(string, string, io.Reader) (*Response, error) pkg net/http, method (*Client) PostForm(string, url.Values) (*Response, error) pkg net/http, method (*Cookie) String() string pkg net/http, method (*ProtocolError) Error() string pkg net/http, method (*Request) AddCookie(*Cookie) pkg net/http, method (*Request) Cookie(string) (*Cookie, error) pkg net/http, method (*Request) Cookies() []*Cookie pkg net/http, method (*Request) FormFile(string) (multipart.File, *multipart.FileHeader, error) pkg net/http, method (*Request) FormValue(string) string pkg net/http, method (*Request) MultipartReader() (*multipart.Reader, error) pkg net/http, method (*Request) ParseForm() error pkg net/http, method (*Request) ParseMultipartForm(int64) error pkg net/http, method (*Request) ProtoAtLeast(int, int) bool pkg net/http, method (*Request) Referer() string pkg net/http, method (*Request) SetBasicAuth(string, string) pkg net/http, method (*Request) UserAgent() string pkg net/http, method (*Request) Write(io.Writer) error pkg net/http, method (*Request) WriteProxy(io.Writer) error pkg net/http, method (*Response) Cookies() []*Cookie pkg net/http, method (*Response) Location() (*url.URL, error) pkg net/http, method (*Response) ProtoAtLeast(int, int) bool pkg net/http, method (*Response) Write(io.Writer) error pkg net/http, method (*ServeMux) Handle(string, Handler) pkg net/http, method (*ServeMux) HandleFunc(string, func(ResponseWriter, *Request)) pkg net/http, method (*ServeMux) ServeHTTP(ResponseWriter, *Request) pkg net/http, method (*Server) ListenAndServe() error pkg net/http, method (*Server) ListenAndServeTLS(string, string) error pkg net/http, method (*Server) Serve(net.Listener) error pkg net/http, method (*Transport) CloseIdleConnections() pkg net/http, method (*Transport) RegisterProtocol(string, RoundTripper) pkg net/http, method (*Transport) RoundTrip(*Request) (*Response, error) pkg net/http, method (Dir) Open(string) (File, error) pkg net/http, method (HandlerFunc) ServeHTTP(ResponseWriter, *Request) pkg net/http, method (Header) Add(string, string) pkg net/http, method (Header) Del(string) pkg net/http, method (Header) Get(string) string pkg net/http, method (Header) Set(string, string) pkg net/http, method (Header) Write(io.Writer) error pkg net/http, method (Header) WriteSubset(io.Writer, map[string]bool) error pkg net/http, type Client struct pkg net/http, type Client struct, CheckRedirect func(*Request, []*Request) error pkg net/http, type Client struct, Jar CookieJar pkg net/http, type Client struct, Transport RoundTripper pkg net/http, type Cookie struct pkg net/http, type Cookie struct, Domain string pkg net/http, type Cookie struct, Expires time.Time pkg net/http, type Cookie struct, HttpOnly bool pkg net/http, type Cookie struct, MaxAge int pkg net/http, type Cookie struct, Name string pkg net/http, type Cookie struct, Path string pkg net/http, type Cookie struct, Raw string pkg net/http, type Cookie struct, RawExpires string pkg net/http, type Cookie struct, Secure bool pkg net/http, type Cookie struct, Unparsed []string pkg net/http, type Cookie struct, Value string pkg net/http, type CookieJar interface { Cookies, SetCookies } pkg net/http, type CookieJar interface, Cookies(*url.URL) []*Cookie pkg net/http, type CookieJar interface, SetCookies(*url.URL, []*Cookie) pkg net/http, type Dir string pkg net/http, type File interface { Close, Read, Readdir, Seek, Stat } pkg net/http, type File interface, Close() error pkg net/http, type File interface, Read([]uint8) (int, error) pkg net/http, type File interface, Readdir(int) ([]os.FileInfo, error) pkg net/http, type File interface, Seek(int64, int) (int64, error) pkg net/http, type File interface, Stat() (os.FileInfo, error) pkg net/http, type FileSystem interface { Open } pkg net/http, type FileSystem interface, Open(string) (File, error) pkg net/http, type Flusher interface { Flush } pkg net/http, type Flusher interface, Flush() pkg net/http, type Handler interface { ServeHTTP } pkg net/http, type Handler interface, ServeHTTP(ResponseWriter, *Request) pkg net/http, type HandlerFunc func(ResponseWriter, *Request) pkg net/http, type Header map[string][]string pkg net/http, type Hijacker interface { Hijack } pkg net/http, type Hijacker interface, Hijack() (net.Conn, *bufio.ReadWriter, error) pkg net/http, type ProtocolError struct pkg net/http, type ProtocolError struct, ErrorString string pkg net/http, type Request struct pkg net/http, type Request struct, Body io.ReadCloser pkg net/http, type Request struct, Close bool pkg net/http, type Request struct, ContentLength int64 pkg net/http, type Request struct, Form url.Values pkg net/http, type Request struct, Header Header pkg net/http, type Request struct, Host string pkg net/http, type Request struct, Method string pkg net/http, type Request struct, MultipartForm *multipart.Form pkg net/http, type Request struct, Proto string pkg net/http, type Request struct, ProtoMajor int pkg net/http, type Request struct, ProtoMinor int pkg net/http, type Request struct, RemoteAddr string pkg net/http, type Request struct, RequestURI string pkg net/http, type Request struct, TLS *tls.ConnectionState pkg net/http, type Request struct, Trailer Header pkg net/http, type Request struct, TransferEncoding []string pkg net/http, type Request struct, URL *url.URL pkg net/http, type Response struct pkg net/http, type Response struct, Body io.ReadCloser pkg net/http, type Response struct, Close bool pkg net/http, type Response struct, ContentLength int64 pkg net/http, type Response struct, Header Header pkg net/http, type Response struct, Proto string pkg net/http, type Response struct, ProtoMajor int pkg net/http, type Response struct, ProtoMinor int pkg net/http, type Response struct, Request *Request pkg net/http, type Response struct, Status string pkg net/http, type Response struct, StatusCode int pkg net/http, type Response struct, Trailer Header pkg net/http, type Response struct, TransferEncoding []string pkg net/http, type ResponseWriter interface { Header, Write, WriteHeader } pkg net/http, type ResponseWriter interface, Header() Header pkg net/http, type ResponseWriter interface, Write([]uint8) (int, error) pkg net/http, type ResponseWriter interface, WriteHeader(int) pkg net/http, type RoundTripper interface { RoundTrip } pkg net/http, type RoundTripper interface, RoundTrip(*Request) (*Response, error) pkg net/http, type ServeMux struct pkg net/http, type Server struct pkg net/http, type Server struct, Addr string pkg net/http, type Server struct, Handler Handler pkg net/http, type Server struct, MaxHeaderBytes int pkg net/http, type Server struct, ReadTimeout time.Duration pkg net/http, type Server struct, TLSConfig *tls.Config pkg net/http, type Server struct, WriteTimeout time.Duration pkg net/http, type Transport struct pkg net/http, type Transport struct, Dial func(string, string) (net.Conn, error) pkg net/http, type Transport struct, DisableCompression bool pkg net/http, type Transport struct, DisableKeepAlives bool pkg net/http, type Transport struct, MaxIdleConnsPerHost int pkg net/http, type Transport struct, Proxy func(*Request) (*url.URL, error) pkg net/http, type Transport struct, TLSClientConfig *tls.Config pkg net/http, var DefaultClient *Client pkg net/http, var DefaultServeMux *ServeMux pkg net/http, var DefaultTransport RoundTripper pkg net/http, var ErrBodyNotAllowed error pkg net/http, var ErrBodyReadAfterClose error pkg net/http, var ErrContentLength error pkg net/http, var ErrHandlerTimeout error pkg net/http, var ErrHeaderTooLong *ProtocolError pkg net/http, var ErrHijacked error pkg net/http, var ErrLineTooLong error pkg net/http, var ErrMissingBoundary *ProtocolError pkg net/http, var ErrMissingContentLength *ProtocolError pkg net/http, var ErrMissingFile error pkg net/http, var ErrNoCookie error pkg net/http, var ErrNoLocation error pkg net/http, var ErrNotMultipart *ProtocolError pkg net/http, var ErrNotSupported *ProtocolError pkg net/http, var ErrShortBody *ProtocolError pkg net/http, var ErrUnexpectedTrailer *ProtocolError pkg net/http, var ErrWriteAfterFlush error pkg net/http/cgi, func Request() (*http.Request, error) pkg net/http/cgi, func RequestFromMap(map[string]string) (*http.Request, error) pkg net/http/cgi, func Serve(http.Handler) error pkg net/http/cgi, method (*Handler) ServeHTTP(http.ResponseWriter, *http.Request) pkg net/http/cgi, type Handler struct pkg net/http/cgi, type Handler struct, Args []string pkg net/http/cgi, type Handler struct, Dir string pkg net/http/cgi, type Handler struct, Env []string pkg net/http/cgi, type Handler struct, InheritEnv []string pkg net/http/cgi, type Handler struct, Logger *log.Logger pkg net/http/cgi, type Handler struct, Path string pkg net/http/cgi, type Handler struct, PathLocationHandler http.Handler pkg net/http/cgi, type Handler struct, Root string pkg net/http/fcgi, func Serve(net.Listener, http.Handler) error pkg net/http/httptest, const DefaultRemoteAddr ideal-string pkg net/http/httptest, func NewRecorder() *ResponseRecorder pkg net/http/httptest, func NewServer(http.Handler) *Server pkg net/http/httptest, func NewTLSServer(http.Handler) *Server pkg net/http/httptest, func NewUnstartedServer(http.Handler) *Server pkg net/http/httptest, method (*ResponseRecorder) Flush() pkg net/http/httptest, method (*ResponseRecorder) Header() http.Header pkg net/http/httptest, method (*ResponseRecorder) Write([]uint8) (int, error) pkg net/http/httptest, method (*ResponseRecorder) WriteHeader(int) pkg net/http/httptest, method (*Server) Close() pkg net/http/httptest, method (*Server) CloseClientConnections() pkg net/http/httptest, method (*Server) Start() pkg net/http/httptest, method (*Server) StartTLS() pkg net/http/httptest, type ResponseRecorder struct pkg net/http/httptest, type ResponseRecorder struct, Body *bytes.Buffer pkg net/http/httptest, type ResponseRecorder struct, Code int pkg net/http/httptest, type ResponseRecorder struct, Flushed bool pkg net/http/httptest, type ResponseRecorder struct, HeaderMap http.Header pkg net/http/httptest, type Server struct pkg net/http/httptest, type Server struct, Config *http.Server pkg net/http/httptest, type Server struct, Listener net.Listener pkg net/http/httptest, type Server struct, TLS *tls.Config pkg net/http/httptest, type Server struct, URL string pkg net/http/httputil, func DumpRequest(*http.Request, bool) ([]uint8, error) pkg net/http/httputil, func DumpRequestOut(*http.Request, bool) ([]uint8, error) pkg net/http/httputil, func DumpResponse(*http.Response, bool) ([]uint8, error) pkg net/http/httputil, func NewChunkedReader(io.Reader) io.Reader pkg net/http/httputil, func NewChunkedWriter(io.Writer) io.WriteCloser pkg net/http/httputil, func NewClientConn(net.Conn, *bufio.Reader) *ClientConn pkg net/http/httputil, func NewProxyClientConn(net.Conn, *bufio.Reader) *ClientConn pkg net/http/httputil, func NewServerConn(net.Conn, *bufio.Reader) *ServerConn pkg net/http/httputil, func NewSingleHostReverseProxy(*url.URL) *ReverseProxy pkg net/http/httputil, method (*ClientConn) Close() error pkg net/http/httputil, method (*ClientConn) Do(*http.Request) (*http.Response, error) pkg net/http/httputil, method (*ClientConn) Hijack() (net.Conn, *bufio.Reader) pkg net/http/httputil, method (*ClientConn) Pending() int pkg net/http/httputil, method (*ClientConn) Read(*http.Request) (*http.Response, error) pkg net/http/httputil, method (*ClientConn) Write(*http.Request) error pkg net/http/httputil, method (*ReverseProxy) ServeHTTP(http.ResponseWriter, *http.Request) pkg net/http/httputil, method (*ServerConn) Close() error pkg net/http/httputil, method (*ServerConn) Hijack() (net.Conn, *bufio.Reader) pkg net/http/httputil, method (*ServerConn) Pending() int pkg net/http/httputil, method (*ServerConn) Read() (*http.Request, error) pkg net/http/httputil, method (*ServerConn) Write(*http.Request, *http.Response) error pkg net/http/httputil, type ClientConn struct pkg net/http/httputil, type ReverseProxy struct pkg net/http/httputil, type ReverseProxy struct, Director func(*http.Request) pkg net/http/httputil, type ReverseProxy struct, FlushInterval time.Duration pkg net/http/httputil, type ReverseProxy struct, Transport http.RoundTripper pkg net/http/httputil, type ServerConn struct pkg net/http/httputil, var ErrClosed *http.ProtocolError pkg net/http/httputil, var ErrLineTooLong error pkg net/http/httputil, var ErrPersistEOF *http.ProtocolError pkg net/http/httputil, var ErrPipeline *http.ProtocolError pkg net/http/pprof, func Cmdline(http.ResponseWriter, *http.Request) pkg net/http/pprof, func Handler(string) http.Handler pkg net/http/pprof, func Index(http.ResponseWriter, *http.Request) pkg net/http/pprof, func Profile(http.ResponseWriter, *http.Request) pkg net/http/pprof, func Symbol(http.ResponseWriter, *http.Request) pkg net/mail, func ReadMessage(io.Reader) (*Message, error) pkg net/mail, method (*Address) String() string pkg net/mail, method (Header) AddressList(string) ([]*Address, error) pkg net/mail, method (Header) Date() (time.Time, error) pkg net/mail, method (Header) Get(string) string pkg net/mail, type Address struct pkg net/mail, type Address struct, Address string pkg net/mail, type Address struct, Name string pkg net/mail, type Header map[string][]string pkg net/mail, type Message struct pkg net/mail, type Message struct, Body io.Reader pkg net/mail, type Message struct, Header Header pkg net/mail, var ErrHeaderNotPresent error pkg net/rpc, const DefaultDebugPath ideal-string pkg net/rpc, const DefaultRPCPath ideal-string pkg net/rpc, func Accept(net.Listener) pkg net/rpc, func Dial(string, string) (*Client, error) pkg net/rpc, func DialHTTP(string, string) (*Client, error) pkg net/rpc, func DialHTTPPath(string, string, string) (*Client, error) pkg net/rpc, func HandleHTTP() pkg net/rpc, func NewClient(io.ReadWriteCloser) *Client pkg net/rpc, func NewClientWithCodec(ClientCodec) *Client pkg net/rpc, func NewServer() *Server pkg net/rpc, func Register(interface{}) error pkg net/rpc, func RegisterName(string, interface{}) error pkg net/rpc, func ServeCodec(ServerCodec) pkg net/rpc, func ServeConn(io.ReadWriteCloser) pkg net/rpc, func ServeRequest(ServerCodec) error pkg net/rpc, method (*Client) Call(string, interface{}, interface{}) error pkg net/rpc, method (*Client) Close() error pkg net/rpc, method (*Client) Go(string, interface{}, interface{}, chan *Call) *Call pkg net/rpc, method (*Server) Accept(net.Listener) pkg net/rpc, method (*Server) HandleHTTP(string, string) pkg net/rpc, method (*Server) Register(interface{}) error pkg net/rpc, method (*Server) RegisterName(string, interface{}) error pkg net/rpc, method (*Server) ServeCodec(ServerCodec) pkg net/rpc, method (*Server) ServeConn(io.ReadWriteCloser) pkg net/rpc, method (*Server) ServeHTTP(http.ResponseWriter, *http.Request) pkg net/rpc, method (*Server) ServeRequest(ServerCodec) error pkg net/rpc, method (ServerError) Error() string pkg net/rpc, type Call struct pkg net/rpc, type Call struct, Args interface{} pkg net/rpc, type Call struct, Done chan *Call pkg net/rpc, type Call struct, Error error pkg net/rpc, type Call struct, Reply interface{} pkg net/rpc, type Call struct, ServiceMethod string pkg net/rpc, type Client struct pkg net/rpc, type ClientCodec interface { Close, ReadResponseBody, ReadResponseHeader, WriteRequest } pkg net/rpc, type ClientCodec interface, Close() error pkg net/rpc, type ClientCodec interface, ReadResponseBody(interface{}) error pkg net/rpc, type ClientCodec interface, ReadResponseHeader(*Response) error pkg net/rpc, type ClientCodec interface, WriteRequest(*Request, interface{}) error pkg net/rpc, type Request struct pkg net/rpc, type Request struct, Seq uint64 pkg net/rpc, type Request struct, ServiceMethod string pkg net/rpc, type Response struct pkg net/rpc, type Response struct, Error string pkg net/rpc, type Response struct, Seq uint64 pkg net/rpc, type Response struct, ServiceMethod string pkg net/rpc, type Server struct pkg net/rpc, type ServerCodec interface { Close, ReadRequestBody, ReadRequestHeader, WriteResponse } pkg net/rpc, type ServerCodec interface, Close() error pkg net/rpc, type ServerCodec interface, ReadRequestBody(interface{}) error pkg net/rpc, type ServerCodec interface, ReadRequestHeader(*Request) error pkg net/rpc, type ServerCodec interface, WriteResponse(*Response, interface{}) error pkg net/rpc, type ServerError string pkg net/rpc, var DefaultServer *Server pkg net/rpc, var ErrShutdown error pkg net/rpc/jsonrpc, func Dial(string, string) (*rpc.Client, error) pkg net/rpc/jsonrpc, func NewClient(io.ReadWriteCloser) *rpc.Client pkg net/rpc/jsonrpc, func NewClientCodec(io.ReadWriteCloser) rpc.ClientCodec pkg net/rpc/jsonrpc, func NewServerCodec(io.ReadWriteCloser) rpc.ServerCodec pkg net/rpc/jsonrpc, func ServeConn(io.ReadWriteCloser) pkg net/smtp, func CRAMMD5Auth(string, string) Auth pkg net/smtp, func Dial(string) (*Client, error) pkg net/smtp, func NewClient(net.Conn, string) (*Client, error) pkg net/smtp, func PlainAuth(string, string, string, string) Auth pkg net/smtp, func SendMail(string, Auth, string, []string, []uint8) error pkg net/smtp, method (*Client) Auth(Auth) error pkg net/smtp, method (*Client) Data() (io.WriteCloser, error) pkg net/smtp, method (*Client) Extension(string) (bool, string) pkg net/smtp, method (*Client) Mail(string) error pkg net/smtp, method (*Client) Quit() error pkg net/smtp, method (*Client) Rcpt(string) error pkg net/smtp, method (*Client) Reset() error pkg net/smtp, method (*Client) StartTLS(*tls.Config) error pkg net/smtp, method (*Client) Verify(string) error pkg net/smtp, type Auth interface { Next, Start } pkg net/smtp, type Auth interface, Next([]uint8, bool) ([]uint8, error) pkg net/smtp, type Auth interface, Start(*ServerInfo) (string, []uint8, error) pkg net/smtp, type Client struct pkg net/smtp, type Client struct, Text *textproto.Conn pkg net/smtp, type ServerInfo struct pkg net/smtp, type ServerInfo struct, Auth []string pkg net/smtp, type ServerInfo struct, Name string pkg net/smtp, type ServerInfo struct, TLS bool pkg net/textproto, func CanonicalMIMEHeaderKey(string) string pkg net/textproto, func Dial(string, string) (*Conn, error) pkg net/textproto, func NewConn(io.ReadWriteCloser) *Conn pkg net/textproto, func NewReader(*bufio.Reader) *Reader pkg net/textproto, func NewWriter(*bufio.Writer) *Writer pkg net/textproto, method (*Conn) Close() error pkg net/textproto, method (*Conn) Cmd(string, ...interface{}) (uint, error) pkg net/textproto, method (*Conn) DotReader() io.Reader pkg net/textproto, method (*Conn) DotWriter() io.WriteCloser pkg net/textproto, method (*Conn) EndRequest(uint) pkg net/textproto, method (*Conn) EndResponse(uint) pkg net/textproto, method (*Conn) Next() uint pkg net/textproto, method (*Conn) PrintfLine(string, ...interface{}) error pkg net/textproto, method (*Conn) ReadCodeLine(int) (int, string, error) pkg net/textproto, method (*Conn) ReadContinuedLine() (string, error) pkg net/textproto, method (*Conn) ReadContinuedLineBytes() ([]uint8, error) pkg net/textproto, method (*Conn) ReadDotBytes() ([]uint8, error) pkg net/textproto, method (*Conn) ReadDotLines() ([]string, error) pkg net/textproto, method (*Conn) ReadLine() (string, error) pkg net/textproto, method (*Conn) ReadLineBytes() ([]uint8, error) pkg net/textproto, method (*Conn) ReadMIMEHeader() (MIMEHeader, error) pkg net/textproto, method (*Conn) ReadResponse(int) (int, string, error) pkg net/textproto, method (*Conn) StartRequest(uint) pkg net/textproto, method (*Conn) StartResponse(uint) pkg net/textproto, method (*Error) Error() string pkg net/textproto, method (*Pipeline) EndRequest(uint) pkg net/textproto, method (*Pipeline) EndResponse(uint) pkg net/textproto, method (*Pipeline) Next() uint pkg net/textproto, method (*Pipeline) StartRequest(uint) pkg net/textproto, method (*Pipeline) StartResponse(uint) pkg net/textproto, method (*Reader) DotReader() io.Reader pkg net/textproto, method (*Reader) ReadCodeLine(int) (int, string, error) pkg net/textproto, method (*Reader) ReadContinuedLine() (string, error) pkg net/textproto, method (*Reader) ReadContinuedLineBytes() ([]uint8, error) pkg net/textproto, method (*Reader) ReadDotBytes() ([]uint8, error) pkg net/textproto, method (*Reader) ReadDotLines() ([]string, error) pkg net/textproto, method (*Reader) ReadLine() (string, error) pkg net/textproto, method (*Reader) ReadLineBytes() ([]uint8, error) pkg net/textproto, method (*Reader) ReadMIMEHeader() (MIMEHeader, error) pkg net/textproto, method (*Reader) ReadResponse(int) (int, string, error) pkg net/textproto, method (*Writer) DotWriter() io.WriteCloser pkg net/textproto, method (*Writer) PrintfLine(string, ...interface{}) error pkg net/textproto, method (MIMEHeader) Add(string, string) pkg net/textproto, method (MIMEHeader) Del(string) pkg net/textproto, method (MIMEHeader) Get(string) string pkg net/textproto, method (MIMEHeader) Set(string, string) pkg net/textproto, method (ProtocolError) Error() string pkg net/textproto, type Conn struct pkg net/textproto, type Conn struct, embedded Pipeline pkg net/textproto, type Conn struct, embedded Reader pkg net/textproto, type Conn struct, embedded Writer pkg net/textproto, type Error struct pkg net/textproto, type Error struct, Code int pkg net/textproto, type Error struct, Msg string pkg net/textproto, type MIMEHeader map[string][]string pkg net/textproto, type Pipeline struct pkg net/textproto, type ProtocolError string pkg net/textproto, type Reader struct pkg net/textproto, type Reader struct, R *bufio.Reader pkg net/textproto, type Writer struct pkg net/textproto, type Writer struct, W *bufio.Writer pkg net/url, func Parse(string) (*URL, error) pkg net/url, func ParseQuery(string) (Values, error) pkg net/url, func ParseRequestURI(string) (*URL, error) pkg net/url, func QueryEscape(string) string pkg net/url, func QueryUnescape(string) (string, error) pkg net/url, func User(string) *Userinfo pkg net/url, func UserPassword(string, string) *Userinfo pkg net/url, method (*Error) Error() string pkg net/url, method (*URL) IsAbs() bool pkg net/url, method (*URL) Parse(string) (*URL, error) pkg net/url, method (*URL) Query() Values pkg net/url, method (*URL) RequestURI() string pkg net/url, method (*URL) ResolveReference(*URL) *URL pkg net/url, method (*URL) String() string pkg net/url, method (*Userinfo) Password() (string, bool) pkg net/url, method (*Userinfo) String() string pkg net/url, method (*Userinfo) Username() string pkg net/url, method (EscapeError) Error() string pkg net/url, method (Values) Add(string, string) pkg net/url, method (Values) Del(string) pkg net/url, method (Values) Encode() string pkg net/url, method (Values) Get(string) string pkg net/url, method (Values) Set(string, string) pkg net/url, type Error struct pkg net/url, type Error struct, Err error pkg net/url, type Error struct, Op string pkg net/url, type Error struct, URL string pkg net/url, type EscapeError string pkg net/url, type URL struct pkg net/url, type URL struct, Fragment string pkg net/url, type URL struct, Host string pkg net/url, type URL struct, Opaque string pkg net/url, type URL struct, Path string pkg net/url, type URL struct, RawQuery string pkg net/url, type URL struct, Scheme string pkg net/url, type URL struct, User *Userinfo pkg net/url, type Userinfo struct pkg net/url, type Values map[string][]string pkg os, const DevNull ideal-string pkg os, const ModeAppend FileMode pkg os, const ModeCharDevice FileMode pkg os, const ModeDevice FileMode pkg os, const ModeDir FileMode pkg os, const ModeExclusive FileMode pkg os, const ModeNamedPipe FileMode pkg os, const ModePerm FileMode pkg os, const ModeSetgid FileMode pkg os, const ModeSetuid FileMode pkg os, const ModeSocket FileMode pkg os, const ModeSticky FileMode pkg os, const ModeSymlink FileMode pkg os, const ModeTemporary FileMode pkg os, const ModeType FileMode pkg os, const O_APPEND int pkg os, const O_CREATE int pkg os, const O_EXCL int pkg os, const O_RDONLY int pkg os, const O_RDWR int pkg os, const O_SYNC int pkg os, const O_TRUNC int pkg os, const O_WRONLY int pkg os, const PathListSeparator ideal-char pkg os, const PathSeparator ideal-char pkg os, const SEEK_CUR int pkg os, const SEEK_END int pkg os, const SEEK_SET int pkg os, func Chdir(string) error pkg os, func Chmod(string, FileMode) error pkg os, func Chown(string, int, int) error pkg os, func Chtimes(string, time.Time, time.Time) error pkg os, func Clearenv() pkg os, func Create(string) (*File, error) pkg os, func Environ() []string pkg os, func Exit(int) pkg os, func Expand(string, func(string) string) string pkg os, func ExpandEnv(string) string pkg os, func FindProcess(int) (*Process, error) pkg os, func Getegid() int pkg os, func Getenv(string) string pkg os, func Geteuid() int pkg os, func Getgid() int pkg os, func Getgroups() ([]int, error) pkg os, func Getpagesize() int pkg os, func Getpid() int pkg os, func Getppid() int pkg os, func Getuid() int pkg os, func Getwd() (string, error) pkg os, func Hostname() (string, error) pkg os, func IsExist(error) bool pkg os, func IsNotExist(error) bool pkg os, func IsPathSeparator(uint8) bool pkg os, func IsPermission(error) bool pkg os, func Lchown(string, int, int) error pkg os, func Link(string, string) error pkg os, func Lstat(string) (FileInfo, error) pkg os, func Mkdir(string, FileMode) error pkg os, func MkdirAll(string, FileMode) error pkg os, func NewFile(uintptr, string) *File pkg os, func NewSyscallError(string, error) error pkg os, func Open(string) (*File, error) pkg os, func OpenFile(string, int, FileMode) (*File, error) pkg os, func Pipe() (*File, *File, error) pkg os, func Readlink(string) (string, error) pkg os, func Remove(string) error pkg os, func RemoveAll(string) error pkg os, func Rename(string, string) error pkg os, func SameFile(FileInfo, FileInfo) bool pkg os, func Setenv(string, string) error pkg os, func StartProcess(string, []string, *ProcAttr) (*Process, error) pkg os, func Stat(string) (FileInfo, error) pkg os, func Symlink(string, string) error pkg os, func TempDir() string pkg os, func Truncate(string, int64) error pkg os, method (*File) Chdir() error pkg os, method (*File) Chmod(FileMode) error pkg os, method (*File) Chown(int, int) error pkg os, method (*File) Close() error pkg os, method (*File) Fd() uintptr pkg os, method (*File) Name() string pkg os, method (*File) Read([]uint8) (int, error) pkg os, method (*File) ReadAt([]uint8, int64) (int, error) pkg os, method (*File) Readdir(int) ([]FileInfo, error) pkg os, method (*File) Readdirnames(int) ([]string, error) pkg os, method (*File) Seek(int64, int) (int64, error) pkg os, method (*File) Stat() (FileInfo, error) pkg os, method (*File) Sync() error pkg os, method (*File) Truncate(int64) error pkg os, method (*File) Write([]uint8) (int, error) pkg os, method (*File) WriteAt([]uint8, int64) (int, error) pkg os, method (*File) WriteString(string) (int, error) pkg os, method (*LinkError) Error() string pkg os, method (*PathError) Error() string pkg os, method (*Process) Kill() error pkg os, method (*Process) Release() error pkg os, method (*Process) Signal(Signal) error pkg os, method (*Process) Wait() (*ProcessState, error) pkg os, method (*ProcessState) Exited() bool pkg os, method (*ProcessState) Pid() int pkg os, method (*ProcessState) String() string pkg os, method (*ProcessState) Success() bool pkg os, method (*ProcessState) Sys() interface{} pkg os, method (*ProcessState) SysUsage() interface{} pkg os, method (*ProcessState) SystemTime() time.Duration pkg os, method (*ProcessState) UserTime() time.Duration pkg os, method (*SyscallError) Error() string pkg os, method (FileMode) IsDir() bool pkg os, method (FileMode) Perm() FileMode pkg os, method (FileMode) String() string pkg os, type File struct pkg os, type FileInfo interface { IsDir, ModTime, Mode, Name, Size, Sys } pkg os, type FileInfo interface, IsDir() bool pkg os, type FileInfo interface, ModTime() time.Time pkg os, type FileInfo interface, Mode() FileMode pkg os, type FileInfo interface, Name() string pkg os, type FileInfo interface, Size() int64 pkg os, type FileInfo interface, Sys() interface{} pkg os, type FileMode uint32 pkg os, type LinkError struct pkg os, type LinkError struct, Err error pkg os, type LinkError struct, New string pkg os, type LinkError struct, Old string pkg os, type LinkError struct, Op string pkg os, type PathError struct pkg os, type PathError struct, Err error pkg os, type PathError struct, Op string pkg os, type PathError struct, Path string pkg os, type ProcAttr struct pkg os, type ProcAttr struct, Dir string pkg os, type ProcAttr struct, Env []string pkg os, type ProcAttr struct, Files []*File pkg os, type ProcAttr struct, Sys *syscall.SysProcAttr pkg os, type Process struct pkg os, type Process struct, Pid int pkg os, type ProcessState struct pkg os, type Signal interface { Signal, String } pkg os, type Signal interface, Signal() pkg os, type Signal interface, String() string pkg os, type SyscallError struct pkg os, type SyscallError struct, Err error pkg os, type SyscallError struct, Syscall string pkg os, var Args []string pkg os, var ErrExist error pkg os, var ErrInvalid error pkg os, var ErrNotExist error pkg os, var ErrPermission error pkg os, var Interrupt Signal pkg os, var Kill Signal pkg os, var Stderr *File pkg os, var Stdin *File pkg os, var Stdout *File pkg os/exec, func Command(string, ...string) *Cmd pkg os/exec, func LookPath(string) (string, error) pkg os/exec, method (*Cmd) CombinedOutput() ([]uint8, error) pkg os/exec, method (*Cmd) Output() ([]uint8, error) pkg os/exec, method (*Cmd) Run() error pkg os/exec, method (*Cmd) Start() error pkg os/exec, method (*Cmd) StderrPipe() (io.ReadCloser, error) pkg os/exec, method (*Cmd) StdinPipe() (io.WriteCloser, error) pkg os/exec, method (*Cmd) StdoutPipe() (io.ReadCloser, error) pkg os/exec, method (*Cmd) Wait() error pkg os/exec, method (*Error) Error() string pkg os/exec, method (*ExitError) Error() string pkg os/exec, method (ExitError) Exited() bool pkg os/exec, method (ExitError) Pid() int pkg os/exec, method (ExitError) String() string pkg os/exec, method (ExitError) Success() bool pkg os/exec, method (ExitError) Sys() interface{} pkg os/exec, method (ExitError) SysUsage() interface{} pkg os/exec, method (ExitError) SystemTime() time.Duration pkg os/exec, method (ExitError) UserTime() time.Duration pkg os/exec, type Cmd struct pkg os/exec, type Cmd struct, Args []string pkg os/exec, type Cmd struct, Dir string pkg os/exec, type Cmd struct, Env []string pkg os/exec, type Cmd struct, ExtraFiles []*os.File pkg os/exec, type Cmd struct, Path string pkg os/exec, type Cmd struct, Process *os.Process pkg os/exec, type Cmd struct, ProcessState *os.ProcessState pkg os/exec, type Cmd struct, Stderr io.Writer pkg os/exec, type Cmd struct, Stdin io.Reader pkg os/exec, type Cmd struct, Stdout io.Writer pkg os/exec, type Cmd struct, SysProcAttr *syscall.SysProcAttr pkg os/exec, type Error struct pkg os/exec, type Error struct, Err error pkg os/exec, type Error struct, Name string pkg os/exec, type ExitError struct pkg os/exec, type ExitError struct, embedded *os.ProcessState pkg os/exec, var ErrNotFound error pkg os/signal, func Notify(chan<- os.Signal, ...os.Signal) pkg os/user, func Current() (*User, error) pkg os/user, func Lookup(string) (*User, error) pkg os/user, func LookupId(string) (*User, error) pkg os/user, method (UnknownUserError) Error() string pkg os/user, method (UnknownUserIdError) Error() string pkg os/user, type UnknownUserError string pkg os/user, type UnknownUserIdError int pkg os/user, type User struct pkg os/user, type User struct, Gid string pkg os/user, type User struct, HomeDir string pkg os/user, type User struct, Name string pkg os/user, type User struct, Uid string pkg os/user, type User struct, Username string pkg path, func Base(string) string pkg path, func Clean(string) string pkg path, func Dir(string) string pkg path, func Ext(string) string pkg path, func IsAbs(string) bool pkg path, func Join(...string) string pkg path, func Match(string, string) (bool, error) pkg path, func Split(string) (string, string) pkg path, var ErrBadPattern error pkg path/filepath, const ListSeparator ideal-char pkg path/filepath, const Separator ideal-char pkg path/filepath, func Abs(string) (string, error) pkg path/filepath, func Base(string) string pkg path/filepath, func Clean(string) string pkg path/filepath, func Dir(string) string pkg path/filepath, func EvalSymlinks(string) (string, error) pkg path/filepath, func Ext(string) string pkg path/filepath, func FromSlash(string) string pkg path/filepath, func Glob(string) ([]string, error) pkg path/filepath, func HasPrefix(string, string) bool pkg path/filepath, func IsAbs(string) bool pkg path/filepath, func Join(...string) string pkg path/filepath, func Match(string, string) (bool, error) pkg path/filepath, func Rel(string, string) (string, error) pkg path/filepath, func Split(string) (string, string) pkg path/filepath, func SplitList(string) []string pkg path/filepath, func ToSlash(string) string pkg path/filepath, func VolumeName(string) string pkg path/filepath, func Walk(string, WalkFunc) error pkg path/filepath, type WalkFunc func(string, os.FileInfo, error) error pkg path/filepath, var ErrBadPattern error pkg path/filepath, var SkipDir error pkg reflect, const Array Kind pkg reflect, const Bool Kind pkg reflect, const BothDir ChanDir pkg reflect, const Chan Kind pkg reflect, const Complex128 Kind pkg reflect, const Complex64 Kind pkg reflect, const Float32 Kind pkg reflect, const Float64 Kind pkg reflect, const Func Kind pkg reflect, const Int Kind pkg reflect, const Int16 Kind pkg reflect, const Int32 Kind pkg reflect, const Int64 Kind pkg reflect, const Int8 Kind pkg reflect, const Interface Kind pkg reflect, const Invalid Kind pkg reflect, const Map Kind pkg reflect, const Ptr Kind pkg reflect, const RecvDir ChanDir pkg reflect, const SendDir ChanDir pkg reflect, const Slice Kind pkg reflect, const String Kind pkg reflect, const Struct Kind pkg reflect, const Uint Kind pkg reflect, const Uint16 Kind pkg reflect, const Uint32 Kind pkg reflect, const Uint64 Kind pkg reflect, const Uint8 Kind pkg reflect, const Uintptr Kind pkg reflect, const UnsafePointer Kind pkg reflect, func Append(Value, ...Value) Value pkg reflect, func AppendSlice(Value, Value) Value pkg reflect, func Copy(Value, Value) int pkg reflect, func DeepEqual(interface{}, interface{}) bool pkg reflect, func Indirect(Value) Value pkg reflect, func MakeChan(Type, int) Value pkg reflect, func MakeMap(Type) Value pkg reflect, func MakeSlice(Type, int, int) Value pkg reflect, func New(Type) Value pkg reflect, func NewAt(Type, unsafe.Pointer) Value pkg reflect, func PtrTo(Type) Type pkg reflect, func TypeOf(interface{}) Type pkg reflect, func ValueOf(interface{}) Value pkg reflect, func Zero(Type) Value pkg reflect, method (*ValueError) Error() string pkg reflect, method (ChanDir) String() string pkg reflect, method (Kind) String() string pkg reflect, method (StructTag) Get(string) string pkg reflect, method (Value) Addr() Value pkg reflect, method (Value) Bool() bool pkg reflect, method (Value) Bytes() []uint8 pkg reflect, method (Value) Call([]Value) []Value pkg reflect, method (Value) CallSlice([]Value) []Value pkg reflect, method (Value) CanAddr() bool pkg reflect, method (Value) CanInterface() bool pkg reflect, method (Value) CanSet() bool pkg reflect, method (Value) Cap() int pkg reflect, method (Value) Close() pkg reflect, method (Value) Complex() complex128 pkg reflect, method (Value) Elem() Value pkg reflect, method (Value) Field(int) Value pkg reflect, method (Value) FieldByIndex([]int) Value pkg reflect, method (Value) FieldByName(string) Value pkg reflect, method (Value) FieldByNameFunc(func(string) bool) Value pkg reflect, method (Value) Float() float64 pkg reflect, method (Value) Index(int) Value pkg reflect, method (Value) Int() int64 pkg reflect, method (Value) Interface() interface{} pkg reflect, method (Value) InterfaceData() [2]uintptr pkg reflect, method (Value) IsNil() bool pkg reflect, method (Value) IsValid() bool pkg reflect, method (Value) Kind() Kind pkg reflect, method (Value) Len() int pkg reflect, method (Value) MapIndex(Value) Value pkg reflect, method (Value) MapKeys() []Value pkg reflect, method (Value) Method(int) Value pkg reflect, method (Value) MethodByName(string) Value pkg reflect, method (Value) NumField() int pkg reflect, method (Value) NumMethod() int pkg reflect, method (Value) OverflowComplex(complex128) bool pkg reflect, method (Value) OverflowFloat(float64) bool pkg reflect, method (Value) OverflowInt(int64) bool pkg reflect, method (Value) OverflowUint(uint64) bool pkg reflect, method (Value) Pointer() uintptr pkg reflect, method (Value) Recv() (Value, bool) pkg reflect, method (Value) Send(Value) pkg reflect, method (Value) Set(Value) pkg reflect, method (Value) SetBool(bool) pkg reflect, method (Value) SetBytes([]uint8) pkg reflect, method (Value) SetComplex(complex128) pkg reflect, method (Value) SetFloat(float64) pkg reflect, method (Value) SetInt(int64) pkg reflect, method (Value) SetLen(int) pkg reflect, method (Value) SetMapIndex(Value, Value) pkg reflect, method (Value) SetPointer(unsafe.Pointer) pkg reflect, method (Value) SetString(string) pkg reflect, method (Value) SetUint(uint64) pkg reflect, method (Value) Slice(int, int) Value pkg reflect, method (Value) String() string pkg reflect, method (Value) TryRecv() (Value, bool) pkg reflect, method (Value) TrySend(Value) bool pkg reflect, method (Value) Type() Type pkg reflect, method (Value) Uint() uint64 pkg reflect, method (Value) UnsafeAddr() uintptr pkg reflect, type ChanDir int pkg reflect, type Kind uint pkg reflect, type Method struct pkg reflect, type Method struct, Func Value pkg reflect, type Method struct, Index int pkg reflect, type Method struct, Name string pkg reflect, type Method struct, PkgPath string pkg reflect, type Method struct, Type Type pkg reflect, type SliceHeader struct pkg reflect, type SliceHeader struct, Cap int pkg reflect, type SliceHeader struct, Data uintptr pkg reflect, type SliceHeader struct, Len int pkg reflect, type StringHeader struct pkg reflect, type StringHeader struct, Data uintptr pkg reflect, type StringHeader struct, Len int pkg reflect, type StructField struct pkg reflect, type StructField struct, Anonymous bool pkg reflect, type StructField struct, Index []int pkg reflect, type StructField struct, Name string pkg reflect, type StructField struct, Offset uintptr pkg reflect, type StructField struct, PkgPath string pkg reflect, type StructField struct, Tag StructTag pkg reflect, type StructField struct, Type Type pkg reflect, type StructTag string pkg reflect, type Type interface, Align() int pkg reflect, type Type interface, AssignableTo(Type) bool pkg reflect, type Type interface, Bits() int pkg reflect, type Type interface, ChanDir() ChanDir pkg reflect, type Type interface, Elem() Type pkg reflect, type Type interface, Field(int) StructField pkg reflect, type Type interface, FieldAlign() int pkg reflect, type Type interface, FieldByIndex([]int) StructField pkg reflect, type Type interface, FieldByName(string) (StructField, bool) pkg reflect, type Type interface, FieldByNameFunc(func(string) bool) (StructField, bool) pkg reflect, type Type interface, Implements(Type) bool pkg reflect, type Type interface, In(int) Type pkg reflect, type Type interface, IsVariadic() bool pkg reflect, type Type interface, Key() Type pkg reflect, type Type interface, Kind() Kind pkg reflect, type Type interface, Len() int pkg reflect, type Type interface, Method(int) Method pkg reflect, type Type interface, MethodByName(string) (Method, bool) pkg reflect, type Type interface, Name() string pkg reflect, type Type interface, NumField() int pkg reflect, type Type interface, NumIn() int pkg reflect, type Type interface, NumMethod() int pkg reflect, type Type interface, NumOut() int pkg reflect, type Type interface, Out(int) Type pkg reflect, type Type interface, PkgPath() string pkg reflect, type Type interface, Size() uintptr pkg reflect, type Type interface, String() string pkg reflect, type Type interface, unexported methods pkg reflect, type Value struct pkg reflect, type ValueError struct pkg reflect, type ValueError struct, Kind Kind pkg reflect, type ValueError struct, Method string pkg regexp, func Compile(string) (*Regexp, error) pkg regexp, func CompilePOSIX(string) (*Regexp, error) pkg regexp, func Match(string, []uint8) (bool, error) pkg regexp, func MatchReader(string, io.RuneReader) (bool, error) pkg regexp, func MatchString(string, string) (bool, error) pkg regexp, func MustCompile(string) *Regexp pkg regexp, func MustCompilePOSIX(string) *Regexp pkg regexp, func QuoteMeta(string) string pkg regexp, method (*Regexp) Expand([]uint8, []uint8, []uint8, []int) []uint8 pkg regexp, method (*Regexp) ExpandString([]uint8, string, string, []int) []uint8 pkg regexp, method (*Regexp) Find([]uint8) []uint8 pkg regexp, method (*Regexp) FindAll([]uint8, int) [][]uint8 pkg regexp, method (*Regexp) FindAllIndex([]uint8, int) [][]int pkg regexp, method (*Regexp) FindAllString(string, int) []string pkg regexp, method (*Regexp) FindAllStringIndex(string, int) [][]int pkg regexp, method (*Regexp) FindAllStringSubmatch(string, int) [][]string pkg regexp, method (*Regexp) FindAllStringSubmatchIndex(string, int) [][]int pkg regexp, method (*Regexp) FindAllSubmatch([]uint8, int) [][][]uint8 pkg regexp, method (*Regexp) FindAllSubmatchIndex([]uint8, int) [][]int pkg regexp, method (*Regexp) FindIndex([]uint8) []int pkg regexp, method (*Regexp) FindReaderIndex(io.RuneReader) []int pkg regexp, method (*Regexp) FindReaderSubmatchIndex(io.RuneReader) []int pkg regexp, method (*Regexp) FindString(string) string pkg regexp, method (*Regexp) FindStringIndex(string) []int pkg regexp, method (*Regexp) FindStringSubmatch(string) []string pkg regexp, method (*Regexp) FindStringSubmatchIndex(string) []int pkg regexp, method (*Regexp) FindSubmatch([]uint8) [][]uint8 pkg regexp, method (*Regexp) FindSubmatchIndex([]uint8) []int pkg regexp, method (*Regexp) LiteralPrefix() (string, bool) pkg regexp, method (*Regexp) Match([]uint8) bool pkg regexp, method (*Regexp) MatchReader(io.RuneReader) bool pkg regexp, method (*Regexp) MatchString(string) bool pkg regexp, method (*Regexp) NumSubexp() int pkg regexp, method (*Regexp) ReplaceAll([]uint8, []uint8) []uint8 pkg regexp, method (*Regexp) ReplaceAllFunc([]uint8, func([]uint8) []uint8) []uint8 pkg regexp, method (*Regexp) ReplaceAllLiteral([]uint8, []uint8) []uint8 pkg regexp, method (*Regexp) ReplaceAllLiteralString(string, string) string pkg regexp, method (*Regexp) ReplaceAllString(string, string) string pkg regexp, method (*Regexp) ReplaceAllStringFunc(string, func(string) string) string pkg regexp, method (*Regexp) String() string pkg regexp, method (*Regexp) SubexpNames() []string pkg regexp, type Regexp struct pkg regexp/syntax, const ClassNL Flags pkg regexp/syntax, const DotNL Flags pkg regexp/syntax, const EmptyBeginLine EmptyOp pkg regexp/syntax, const EmptyBeginText EmptyOp pkg regexp/syntax, const EmptyEndLine EmptyOp pkg regexp/syntax, const EmptyEndText EmptyOp pkg regexp/syntax, const EmptyNoWordBoundary EmptyOp pkg regexp/syntax, const EmptyWordBoundary EmptyOp pkg regexp/syntax, const ErrInternalError ErrorCode pkg regexp/syntax, const ErrInvalidCharClass ErrorCode pkg regexp/syntax, const ErrInvalidCharRange ErrorCode pkg regexp/syntax, const ErrInvalidEscape ErrorCode pkg regexp/syntax, const ErrInvalidNamedCapture ErrorCode pkg regexp/syntax, const ErrInvalidPerlOp ErrorCode pkg regexp/syntax, const ErrInvalidRepeatOp ErrorCode pkg regexp/syntax, const ErrInvalidRepeatSize ErrorCode pkg regexp/syntax, const ErrInvalidUTF8 ErrorCode pkg regexp/syntax, const ErrMissingBracket ErrorCode pkg regexp/syntax, const ErrMissingParen ErrorCode pkg regexp/syntax, const ErrMissingRepeatArgument ErrorCode pkg regexp/syntax, const ErrTrailingBackslash ErrorCode pkg regexp/syntax, const FoldCase Flags pkg regexp/syntax, const InstAlt InstOp pkg regexp/syntax, const InstAltMatch InstOp pkg regexp/syntax, const InstCapture InstOp pkg regexp/syntax, const InstEmptyWidth InstOp pkg regexp/syntax, const InstFail InstOp pkg regexp/syntax, const InstMatch InstOp pkg regexp/syntax, const InstNop InstOp pkg regexp/syntax, const InstRune InstOp pkg regexp/syntax, const InstRune1 InstOp pkg regexp/syntax, const InstRuneAny InstOp pkg regexp/syntax, const InstRuneAnyNotNL InstOp pkg regexp/syntax, const Literal Flags pkg regexp/syntax, const MatchNL Flags pkg regexp/syntax, const NonGreedy Flags pkg regexp/syntax, const OneLine Flags pkg regexp/syntax, const OpAlternate Op pkg regexp/syntax, const OpAnyChar Op pkg regexp/syntax, const OpAnyCharNotNL Op pkg regexp/syntax, const OpBeginLine Op pkg regexp/syntax, const OpBeginText Op pkg regexp/syntax, const OpCapture Op pkg regexp/syntax, const OpCharClass Op pkg regexp/syntax, const OpConcat Op pkg regexp/syntax, const OpEmptyMatch Op pkg regexp/syntax, const OpEndLine Op pkg regexp/syntax, const OpEndText Op pkg regexp/syntax, const OpLiteral Op pkg regexp/syntax, const OpNoMatch Op pkg regexp/syntax, const OpNoWordBoundary Op pkg regexp/syntax, const OpPlus Op pkg regexp/syntax, const OpQuest Op pkg regexp/syntax, const OpRepeat Op pkg regexp/syntax, const OpStar Op pkg regexp/syntax, const OpWordBoundary Op pkg regexp/syntax, const POSIX Flags pkg regexp/syntax, const Perl Flags pkg regexp/syntax, const PerlX Flags pkg regexp/syntax, const Simple Flags pkg regexp/syntax, const UnicodeGroups Flags pkg regexp/syntax, const WasDollar Flags pkg regexp/syntax, func Compile(*Regexp) (*Prog, error) pkg regexp/syntax, func EmptyOpContext(int32, int32) EmptyOp pkg regexp/syntax, func IsWordChar(int32) bool pkg regexp/syntax, func Parse(string, Flags) (*Regexp, error) pkg regexp/syntax, method (*Error) Error() string pkg regexp/syntax, method (*Inst) MatchEmptyWidth(int32, int32) bool pkg regexp/syntax, method (*Inst) MatchRune(int32) bool pkg regexp/syntax, method (*Inst) String() string pkg regexp/syntax, method (*Prog) Prefix() (string, bool) pkg regexp/syntax, method (*Prog) StartCond() EmptyOp pkg regexp/syntax, method (*Prog) String() string pkg regexp/syntax, method (*Regexp) CapNames() []string pkg regexp/syntax, method (*Regexp) Equal(*Regexp) bool pkg regexp/syntax, method (*Regexp) MaxCap() int pkg regexp/syntax, method (*Regexp) Simplify() *Regexp pkg regexp/syntax, method (*Regexp) String() string pkg regexp/syntax, method (ErrorCode) String() string pkg regexp/syntax, type EmptyOp uint8 pkg regexp/syntax, type Error struct pkg regexp/syntax, type Error struct, Code ErrorCode pkg regexp/syntax, type Error struct, Expr string pkg regexp/syntax, type ErrorCode string pkg regexp/syntax, type Flags uint16 pkg regexp/syntax, type Inst struct pkg regexp/syntax, type Inst struct, Arg uint32 pkg regexp/syntax, type Inst struct, Op InstOp pkg regexp/syntax, type Inst struct, Out uint32 pkg regexp/syntax, type Inst struct, Rune []int32 pkg regexp/syntax, type InstOp uint8 pkg regexp/syntax, type Op uint8 pkg regexp/syntax, type Prog struct pkg regexp/syntax, type Prog struct, Inst []Inst pkg regexp/syntax, type Prog struct, NumCap int pkg regexp/syntax, type Prog struct, Start int pkg regexp/syntax, type Regexp struct pkg regexp/syntax, type Regexp struct, Cap int pkg regexp/syntax, type Regexp struct, Flags Flags pkg regexp/syntax, type Regexp struct, Max int pkg regexp/syntax, type Regexp struct, Min int pkg regexp/syntax, type Regexp struct, Name string pkg regexp/syntax, type Regexp struct, Op Op pkg regexp/syntax, type Regexp struct, Rune []int32 pkg regexp/syntax, type Regexp struct, Rune0 [2]int32 pkg regexp/syntax, type Regexp struct, Sub []*Regexp pkg regexp/syntax, type Regexp struct, Sub0 [1]*Regexp pkg runtime, const Compiler ideal-string pkg runtime, const GOARCH string pkg runtime, const GOOS string pkg runtime, func Breakpoint() pkg runtime, func CPUProfile() []uint8 pkg runtime, func Caller(int) (uintptr, string, int, bool) pkg runtime, func Callers(int, []uintptr) int pkg runtime, func FuncForPC(uintptr) *Func pkg runtime, func GC() pkg runtime, func GOMAXPROCS(int) int pkg runtime, func GOROOT() string pkg runtime, func Goexit() pkg runtime, func GoroutineProfile([]StackRecord) (int, bool) pkg runtime, func Gosched() pkg runtime, func LockOSThread() pkg runtime, func MemProfile([]MemProfileRecord, bool) (int, bool) pkg runtime, func NumCPU() int pkg runtime, func NumCgoCall() int64 pkg runtime, func NumGoroutine() int pkg runtime, func ReadMemStats(*MemStats) pkg runtime, func SetCPUProfileRate(int) pkg runtime, func SetFinalizer(interface{}, interface{}) pkg runtime, func Stack([]uint8, bool) int pkg runtime, func ThreadCreateProfile([]StackRecord) (int, bool) pkg runtime, func UnlockOSThread() pkg runtime, func Version() string pkg runtime, method (*Func) Entry() uintptr pkg runtime, method (*Func) FileLine(uintptr) (string, int) pkg runtime, method (*Func) Name() string pkg runtime, method (*MemProfileRecord) InUseBytes() int64 pkg runtime, method (*MemProfileRecord) InUseObjects() int64 pkg runtime, method (*MemProfileRecord) Stack() []uintptr pkg runtime, method (*StackRecord) Stack() []uintptr pkg runtime, method (*TypeAssertionError) Error() string pkg runtime, method (*TypeAssertionError) RuntimeError() pkg runtime, type Error interface { Error, RuntimeError } pkg runtime, type Error interface, Error() string pkg runtime, type Error interface, RuntimeError() pkg runtime, type Func struct pkg runtime, type MemProfileRecord struct pkg runtime, type MemProfileRecord struct, AllocBytes int64 pkg runtime, type MemProfileRecord struct, AllocObjects int64 pkg runtime, type MemProfileRecord struct, FreeBytes int64 pkg runtime, type MemProfileRecord struct, FreeObjects int64 pkg runtime, type MemProfileRecord struct, Stack0 [32]uintptr pkg runtime, type MemStats struct pkg runtime, type MemStats struct, Alloc uint64 pkg runtime, type MemStats struct, BuckHashSys uint64 pkg runtime, type MemStats struct, BySize [61]struct pkg runtime, type MemStats struct, DebugGC bool pkg runtime, type MemStats struct, EnableGC bool pkg runtime, type MemStats struct, Frees uint64 pkg runtime, type MemStats struct, HeapAlloc uint64 pkg runtime, type MemStats struct, HeapIdle uint64 pkg runtime, type MemStats struct, HeapInuse uint64 pkg runtime, type MemStats struct, HeapObjects uint64 pkg runtime, type MemStats struct, HeapReleased uint64 pkg runtime, type MemStats struct, HeapSys uint64 pkg runtime, type MemStats struct, LastGC uint64 pkg runtime, type MemStats struct, Lookups uint64 pkg runtime, type MemStats struct, MCacheInuse uint64 pkg runtime, type MemStats struct, MCacheSys uint64 pkg runtime, type MemStats struct, MSpanInuse uint64 pkg runtime, type MemStats struct, MSpanSys uint64 pkg runtime, type MemStats struct, Mallocs uint64 pkg runtime, type MemStats struct, NextGC uint64 pkg runtime, type MemStats struct, NumGC uint32 pkg runtime, type MemStats struct, PauseNs [256]uint64 pkg runtime, type MemStats struct, PauseTotalNs uint64 pkg runtime, type MemStats struct, StackInuse uint64 pkg runtime, type MemStats struct, StackSys uint64 pkg runtime, type MemStats struct, Sys uint64 pkg runtime, type MemStats struct, TotalAlloc uint64 pkg runtime, type StackRecord struct pkg runtime, type StackRecord struct, Stack0 [32]uintptr pkg runtime, type TypeAssertionError struct pkg runtime, var MemProfileRate int pkg runtime/debug, func PrintStack() pkg runtime/debug, func Stack() []uint8 pkg runtime/pprof, func Lookup(string) *Profile pkg runtime/pprof, func NewProfile(string) *Profile pkg runtime/pprof, func Profiles() []*Profile pkg runtime/pprof, func StartCPUProfile(io.Writer) error pkg runtime/pprof, func StopCPUProfile() pkg runtime/pprof, func WriteHeapProfile(io.Writer) error pkg runtime/pprof, method (*Profile) Add(interface{}, int) pkg runtime/pprof, method (*Profile) Count() int pkg runtime/pprof, method (*Profile) Name() string pkg runtime/pprof, method (*Profile) Remove(interface{}) pkg runtime/pprof, method (*Profile) WriteTo(io.Writer, int) error pkg runtime/pprof, type Profile struct pkg sort, func Float64s([]float64) pkg sort, func Float64sAreSorted([]float64) bool pkg sort, func Ints([]int) pkg sort, func IntsAreSorted([]int) bool pkg sort, func IsSorted(Interface) bool pkg sort, func Search(int, func(int) bool) int pkg sort, func SearchFloat64s([]float64, float64) int pkg sort, func SearchInts([]int, int) int pkg sort, func SearchStrings([]string, string) int pkg sort, func Sort(Interface) pkg sort, func Strings([]string) pkg sort, func StringsAreSorted([]string) bool pkg sort, method (Float64Slice) Len() int pkg sort, method (Float64Slice) Less(int, int) bool pkg sort, method (Float64Slice) Search(float64) int pkg sort, method (Float64Slice) Sort() pkg sort, method (Float64Slice) Swap(int, int) pkg sort, method (IntSlice) Len() int pkg sort, method (IntSlice) Less(int, int) bool pkg sort, method (IntSlice) Search(int) int pkg sort, method (IntSlice) Sort() pkg sort, method (IntSlice) Swap(int, int) pkg sort, method (StringSlice) Len() int pkg sort, method (StringSlice) Less(int, int) bool pkg sort, method (StringSlice) Search(string) int pkg sort, method (StringSlice) Sort() pkg sort, method (StringSlice) Swap(int, int) pkg sort, type Float64Slice []float64 pkg sort, type IntSlice []int pkg sort, type Interface interface { Len, Less, Swap } pkg sort, type Interface interface, Len() int pkg sort, type Interface interface, Less(int, int) bool pkg sort, type Interface interface, Swap(int, int) pkg sort, type StringSlice []string pkg strconv, const IntSize ideal-int pkg strconv, func AppendBool([]uint8, bool) []uint8 pkg strconv, func AppendFloat([]uint8, float64, uint8, int, int) []uint8 pkg strconv, func AppendInt([]uint8, int64, int) []uint8 pkg strconv, func AppendQuote([]uint8, string) []uint8 pkg strconv, func AppendQuoteRune([]uint8, int32) []uint8 pkg strconv, func AppendQuoteRuneToASCII([]uint8, int32) []uint8 pkg strconv, func AppendQuoteToASCII([]uint8, string) []uint8 pkg strconv, func AppendUint([]uint8, uint64, int) []uint8 pkg strconv, func Atoi(string) (int, error) pkg strconv, func CanBackquote(string) bool pkg strconv, func FormatBool(bool) string pkg strconv, func FormatFloat(float64, uint8, int, int) string pkg strconv, func FormatInt(int64, int) string pkg strconv, func FormatUint(uint64, int) string pkg strconv, func IsPrint(int32) bool pkg strconv, func Itoa(int) string pkg strconv, func ParseBool(string) (bool, error) pkg strconv, func ParseFloat(string, int) (float64, error) pkg strconv, func ParseInt(string, int, int) (int64, error) pkg strconv, func ParseUint(string, int, int) (uint64, error) pkg strconv, func Quote(string) string pkg strconv, func QuoteRune(int32) string pkg strconv, func QuoteRuneToASCII(int32) string pkg strconv, func QuoteToASCII(string) string pkg strconv, func Unquote(string) (string, error) pkg strconv, func UnquoteChar(string, uint8) (int32, bool, string, error) pkg strconv, method (*NumError) Error() string pkg strconv, type NumError struct pkg strconv, type NumError struct, Err error pkg strconv, type NumError struct, Func string pkg strconv, type NumError struct, Num string pkg strconv, var ErrRange error pkg strconv, var ErrSyntax error pkg strings, func Contains(string, string) bool pkg strings, func ContainsAny(string, string) bool pkg strings, func ContainsRune(string, int32) bool pkg strings, func Count(string, string) int pkg strings, func EqualFold(string, string) bool pkg strings, func Fields(string) []string pkg strings, func FieldsFunc(string, func(int32) bool) []string pkg strings, func HasPrefix(string, string) bool pkg strings, func HasSuffix(string, string) bool pkg strings, func Index(string, string) int pkg strings, func IndexAny(string, string) int pkg strings, func IndexFunc(string, func(int32) bool) int pkg strings, func IndexRune(string, int32) int pkg strings, func Join([]string, string) string pkg strings, func LastIndex(string, string) int pkg strings, func LastIndexAny(string, string) int pkg strings, func LastIndexFunc(string, func(int32) bool) int pkg strings, func Map(func(int32) int32, string) string pkg strings, func NewReader(string) *Reader pkg strings, func NewReplacer(...string) *Replacer pkg strings, func Repeat(string, int) string pkg strings, func Replace(string, string, string, int) string pkg strings, func Split(string, string) []string pkg strings, func SplitAfter(string, string) []string pkg strings, func SplitAfterN(string, string, int) []string pkg strings, func SplitN(string, string, int) []string pkg strings, func Title(string) string pkg strings, func ToLower(string) string pkg strings, func ToLowerSpecial(unicode.SpecialCase, string) string pkg strings, func ToTitle(string) string pkg strings, func ToTitleSpecial(unicode.SpecialCase, string) string pkg strings, func ToUpper(string) string pkg strings, func ToUpperSpecial(unicode.SpecialCase, string) string pkg strings, func Trim(string, string) string pkg strings, func TrimFunc(string, func(int32) bool) string pkg strings, func TrimLeft(string, string) string pkg strings, func TrimLeftFunc(string, func(int32) bool) string pkg strings, func TrimRight(string, string) string pkg strings, func TrimRightFunc(string, func(int32) bool) string pkg strings, func TrimSpace(string) string pkg strings, method (*Reader) Len() int pkg strings, method (*Reader) Read([]uint8) (int, error) pkg strings, method (*Reader) ReadAt([]uint8, int64) (int, error) pkg strings, method (*Reader) ReadByte() (uint8, error) pkg strings, method (*Reader) ReadRune() (int32, int, error) pkg strings, method (*Reader) Seek(int64, int) (int64, error) pkg strings, method (*Reader) UnreadByte() error pkg strings, method (*Reader) UnreadRune() error pkg strings, method (*Replacer) Replace(string) string pkg strings, method (*Replacer) WriteString(io.Writer, string) (int, error) pkg strings, type Reader struct pkg strings, type Replacer struct pkg sync, func NewCond(Locker) *Cond pkg sync, method (*Cond) Broadcast() pkg sync, method (*Cond) Signal() pkg sync, method (*Cond) Wait() pkg sync, method (*Mutex) Lock() pkg sync, method (*Mutex) Unlock() pkg sync, method (*Once) Do(func()) pkg sync, method (*RWMutex) Lock() pkg sync, method (*RWMutex) RLock() pkg sync, method (*RWMutex) RLocker() Locker pkg sync, method (*RWMutex) RUnlock() pkg sync, method (*RWMutex) Unlock() pkg sync, method (*WaitGroup) Add(int) pkg sync, method (*WaitGroup) Done() pkg sync, method (*WaitGroup) Wait() pkg sync, type Cond struct pkg sync, type Cond struct, L Locker pkg sync, type Locker interface { Lock, Unlock } pkg sync, type Locker interface, Lock() pkg sync, type Locker interface, Unlock() pkg sync, type Mutex struct pkg sync, type Once struct pkg sync, type RWMutex struct pkg sync, type WaitGroup struct pkg sync/atomic, func AddInt32(*int32, int32) int32 pkg sync/atomic, func AddInt64(*int64, int64) int64 pkg sync/atomic, func AddUint32(*uint32, uint32) uint32 pkg sync/atomic, func AddUint64(*uint64, uint64) uint64 pkg sync/atomic, func AddUintptr(*uintptr, uintptr) uintptr pkg sync/atomic, func CompareAndSwapInt32(*int32, int32, int32) bool pkg sync/atomic, func CompareAndSwapInt64(*int64, int64, int64) bool pkg sync/atomic, func CompareAndSwapPointer(*unsafe.Pointer, unsafe.Pointer, unsafe.Pointer) bool pkg sync/atomic, func CompareAndSwapUint32(*uint32, uint32, uint32) bool pkg sync/atomic, func CompareAndSwapUint64(*uint64, uint64, uint64) bool pkg sync/atomic, func CompareAndSwapUintptr(*uintptr, uintptr, uintptr) bool pkg sync/atomic, func LoadInt32(*int32) int32 pkg sync/atomic, func LoadInt64(*int64) int64 pkg sync/atomic, func LoadPointer(*unsafe.Pointer) unsafe.Pointer pkg sync/atomic, func LoadUint32(*uint32) uint32 pkg sync/atomic, func LoadUint64(*uint64) uint64 pkg sync/atomic, func LoadUintptr(*uintptr) uintptr pkg sync/atomic, func StoreInt32(*int32, int32) pkg sync/atomic, func StoreInt64(*int64, int64) pkg sync/atomic, func StorePointer(*unsafe.Pointer, unsafe.Pointer) pkg sync/atomic, func StoreUint32(*uint32, uint32) pkg sync/atomic, func StoreUint64(*uint64, uint64) pkg sync/atomic, func StoreUintptr(*uintptr, uintptr) pkg syscall (darwin-386), const AF_APPLETALK ideal-int pkg syscall (darwin-386), const AF_CCITT ideal-int pkg syscall (darwin-386), const AF_CHAOS ideal-int pkg syscall (darwin-386), const AF_CNT ideal-int pkg syscall (darwin-386), const AF_COIP ideal-int pkg syscall (darwin-386), const AF_DATAKIT ideal-int pkg syscall (darwin-386), const AF_DECnet ideal-int pkg syscall (darwin-386), const AF_DLI ideal-int pkg syscall (darwin-386), const AF_E164 ideal-int pkg syscall (darwin-386), const AF_ECMA ideal-int pkg syscall (darwin-386), const AF_HYLINK ideal-int pkg syscall (darwin-386), const AF_IEEE80211 ideal-int pkg syscall (darwin-386), const AF_IMPLINK ideal-int pkg syscall (darwin-386), const AF_IPX ideal-int pkg syscall (darwin-386), const AF_ISDN ideal-int pkg syscall (darwin-386), const AF_ISO ideal-int pkg syscall (darwin-386), const AF_LAT ideal-int pkg syscall (darwin-386), const AF_LINK ideal-int pkg syscall (darwin-386), const AF_LOCAL ideal-int pkg syscall (darwin-386), const AF_MAX ideal-int pkg syscall (darwin-386), const AF_NATM ideal-int pkg syscall (darwin-386), const AF_NDRV ideal-int pkg syscall (darwin-386), const AF_NETBIOS ideal-int pkg syscall (darwin-386), const AF_NS ideal-int pkg syscall (darwin-386), const AF_OSI ideal-int pkg syscall (darwin-386), const AF_PPP ideal-int pkg syscall (darwin-386), const AF_PUP ideal-int pkg syscall (darwin-386), const AF_RESERVED_36 ideal-int pkg syscall (darwin-386), const AF_ROUTE ideal-int pkg syscall (darwin-386), const AF_SIP ideal-int pkg syscall (darwin-386), const AF_SNA ideal-int pkg syscall (darwin-386), const AF_SYSTEM ideal-int pkg syscall (darwin-386), const BIOCFLUSH ideal-int pkg syscall (darwin-386), const BIOCGBLEN ideal-int pkg syscall (darwin-386), const BIOCGDLT ideal-int pkg syscall (darwin-386), const BIOCGDLTLIST ideal-int pkg syscall (darwin-386), const BIOCGETIF ideal-int pkg syscall (darwin-386), const BIOCGHDRCMPLT ideal-int pkg syscall (darwin-386), const BIOCGRSIG ideal-int pkg syscall (darwin-386), const BIOCGRTIMEOUT ideal-int pkg syscall (darwin-386), const BIOCGSEESENT ideal-int pkg syscall (darwin-386), const BIOCGSTATS ideal-int pkg syscall (darwin-386), const BIOCIMMEDIATE ideal-int pkg syscall (darwin-386), const BIOCPROMISC ideal-int pkg syscall (darwin-386), const BIOCSBLEN ideal-int pkg syscall (darwin-386), const BIOCSDLT ideal-int pkg syscall (darwin-386), const BIOCSETF ideal-int pkg syscall (darwin-386), const BIOCSETIF ideal-int pkg syscall (darwin-386), const BIOCSHDRCMPLT ideal-int pkg syscall (darwin-386), const BIOCSRSIG ideal-int pkg syscall (darwin-386), const BIOCSRTIMEOUT ideal-int pkg syscall (darwin-386), const BIOCSSEESENT ideal-int pkg syscall (darwin-386), const BIOCVERSION ideal-int pkg syscall (darwin-386), const BPF_A ideal-int pkg syscall (darwin-386), const BPF_ABS ideal-int pkg syscall (darwin-386), const BPF_ADD ideal-int pkg syscall (darwin-386), const BPF_ALIGNMENT ideal-int pkg syscall (darwin-386), const BPF_ALU ideal-int pkg syscall (darwin-386), const BPF_AND ideal-int pkg syscall (darwin-386), const BPF_B ideal-int pkg syscall (darwin-386), const BPF_DIV ideal-int pkg syscall (darwin-386), const BPF_H ideal-int pkg syscall (darwin-386), const BPF_IMM ideal-int pkg syscall (darwin-386), const BPF_IND ideal-int pkg syscall (darwin-386), const BPF_JA ideal-int pkg syscall (darwin-386), const BPF_JEQ ideal-int pkg syscall (darwin-386), const BPF_JGE ideal-int pkg syscall (darwin-386), const BPF_JGT ideal-int pkg syscall (darwin-386), const BPF_JMP ideal-int pkg syscall (darwin-386), const BPF_JSET ideal-int pkg syscall (darwin-386), const BPF_K ideal-int pkg syscall (darwin-386), const BPF_LD ideal-int pkg syscall (darwin-386), const BPF_LDX ideal-int pkg syscall (darwin-386), const BPF_LEN ideal-int pkg syscall (darwin-386), const BPF_LSH ideal-int pkg syscall (darwin-386), const BPF_MAJOR_VERSION ideal-int pkg syscall (darwin-386), const BPF_MAXBUFSIZE ideal-int pkg syscall (darwin-386), const BPF_MAXINSNS ideal-int pkg syscall (darwin-386), const BPF_MEM ideal-int pkg syscall (darwin-386), const BPF_MEMWORDS ideal-int pkg syscall (darwin-386), const BPF_MINBUFSIZE ideal-int pkg syscall (darwin-386), const BPF_MINOR_VERSION ideal-int pkg syscall (darwin-386), const BPF_MISC ideal-int pkg syscall (darwin-386), const BPF_MSH ideal-int pkg syscall (darwin-386), const BPF_MUL ideal-int pkg syscall (darwin-386), const BPF_NEG ideal-int pkg syscall (darwin-386), const BPF_OR ideal-int pkg syscall (darwin-386), const BPF_RELEASE ideal-int pkg syscall (darwin-386), const BPF_RET ideal-int pkg syscall (darwin-386), const BPF_RSH ideal-int pkg syscall (darwin-386), const BPF_ST ideal-int pkg syscall (darwin-386), const BPF_STX ideal-int pkg syscall (darwin-386), const BPF_SUB ideal-int pkg syscall (darwin-386), const BPF_TAX ideal-int pkg syscall (darwin-386), const BPF_TXA ideal-int pkg syscall (darwin-386), const BPF_W ideal-int pkg syscall (darwin-386), const BPF_X ideal-int pkg syscall (darwin-386), const CTL_MAXNAME ideal-int pkg syscall (darwin-386), const CTL_NET ideal-int pkg syscall (darwin-386), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (darwin-386), const DLT_ARCNET ideal-int pkg syscall (darwin-386), const DLT_ATM_CLIP ideal-int pkg syscall (darwin-386), const DLT_ATM_RFC1483 ideal-int pkg syscall (darwin-386), const DLT_AX25 ideal-int pkg syscall (darwin-386), const DLT_CHAOS ideal-int pkg syscall (darwin-386), const DLT_CHDLC ideal-int pkg syscall (darwin-386), const DLT_C_HDLC ideal-int pkg syscall (darwin-386), const DLT_EN10MB ideal-int pkg syscall (darwin-386), const DLT_EN3MB ideal-int pkg syscall (darwin-386), const DLT_FDDI ideal-int pkg syscall (darwin-386), const DLT_IEEE802 ideal-int pkg syscall (darwin-386), const DLT_IEEE802_11 ideal-int pkg syscall (darwin-386), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (darwin-386), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (darwin-386), const DLT_LINUX_SLL ideal-int pkg syscall (darwin-386), const DLT_LOOP ideal-int pkg syscall (darwin-386), const DLT_NULL ideal-int pkg syscall (darwin-386), const DLT_PFLOG ideal-int pkg syscall (darwin-386), const DLT_PFSYNC ideal-int pkg syscall (darwin-386), const DLT_PPP ideal-int pkg syscall (darwin-386), const DLT_PPP_BSDOS ideal-int pkg syscall (darwin-386), const DLT_PPP_SERIAL ideal-int pkg syscall (darwin-386), const DLT_PRONET ideal-int pkg syscall (darwin-386), const DLT_RAW ideal-int pkg syscall (darwin-386), const DLT_SLIP ideal-int pkg syscall (darwin-386), const DLT_SLIP_BSDOS ideal-int pkg syscall (darwin-386), const DT_BLK ideal-int pkg syscall (darwin-386), const DT_CHR ideal-int pkg syscall (darwin-386), const DT_DIR ideal-int pkg syscall (darwin-386), const DT_FIFO ideal-int pkg syscall (darwin-386), const DT_LNK ideal-int pkg syscall (darwin-386), const DT_REG ideal-int pkg syscall (darwin-386), const DT_SOCK ideal-int pkg syscall (darwin-386), const DT_UNKNOWN ideal-int pkg syscall (darwin-386), const DT_WHT ideal-int pkg syscall (darwin-386), const EAUTH Errno pkg syscall (darwin-386), const EBADARCH Errno pkg syscall (darwin-386), const EBADEXEC Errno pkg syscall (darwin-386), const EBADMACHO Errno pkg syscall (darwin-386), const EBADMSG Errno pkg syscall (darwin-386), const EBADRPC Errno pkg syscall (darwin-386), const ECHO ideal-int pkg syscall (darwin-386), const ECHOCTL ideal-int pkg syscall (darwin-386), const ECHOE ideal-int pkg syscall (darwin-386), const ECHOK ideal-int pkg syscall (darwin-386), const ECHOKE ideal-int pkg syscall (darwin-386), const ECHONL ideal-int pkg syscall (darwin-386), const ECHOPRT ideal-int pkg syscall (darwin-386), const EDEVERR Errno pkg syscall (darwin-386), const EFTYPE Errno pkg syscall (darwin-386), const ELAST Errno pkg syscall (darwin-386), const EMULTIHOP Errno pkg syscall (darwin-386), const ENEEDAUTH Errno pkg syscall (darwin-386), const ENOATTR Errno pkg syscall (darwin-386), const ENODATA Errno pkg syscall (darwin-386), const ENOLINK Errno pkg syscall (darwin-386), const ENOPOLICY Errno pkg syscall (darwin-386), const ENOSR Errno pkg syscall (darwin-386), const ENOSTR Errno pkg syscall (darwin-386), const ENOTRECOVERABLE Errno pkg syscall (darwin-386), const EOWNERDEAD Errno pkg syscall (darwin-386), const EPROCLIM Errno pkg syscall (darwin-386), const EPROCUNAVAIL Errno pkg syscall (darwin-386), const EPROGMISMATCH Errno pkg syscall (darwin-386), const EPROGUNAVAIL Errno pkg syscall (darwin-386), const EPROTO Errno pkg syscall (darwin-386), const EPWROFF Errno pkg syscall (darwin-386), const ERPCMISMATCH Errno pkg syscall (darwin-386), const ESHLIBVERS Errno pkg syscall (darwin-386), const ETIME Errno pkg syscall (darwin-386), const EVFILT_AIO ideal-int pkg syscall (darwin-386), const EVFILT_FS ideal-int pkg syscall (darwin-386), const EVFILT_MACHPORT ideal-int pkg syscall (darwin-386), const EVFILT_PROC ideal-int pkg syscall (darwin-386), const EVFILT_READ ideal-int pkg syscall (darwin-386), const EVFILT_SIGNAL ideal-int pkg syscall (darwin-386), const EVFILT_SYSCOUNT ideal-int pkg syscall (darwin-386), const EVFILT_THREADMARKER ideal-int pkg syscall (darwin-386), const EVFILT_TIMER ideal-int pkg syscall (darwin-386), const EVFILT_USER ideal-int pkg syscall (darwin-386), const EVFILT_VM ideal-int pkg syscall (darwin-386), const EVFILT_VNODE ideal-int pkg syscall (darwin-386), const EVFILT_WRITE ideal-int pkg syscall (darwin-386), const EV_ADD ideal-int pkg syscall (darwin-386), const EV_CLEAR ideal-int pkg syscall (darwin-386), const EV_DELETE ideal-int pkg syscall (darwin-386), const EV_DISABLE ideal-int pkg syscall (darwin-386), const EV_DISPATCH ideal-int pkg syscall (darwin-386), const EV_ENABLE ideal-int pkg syscall (darwin-386), const EV_EOF ideal-int pkg syscall (darwin-386), const EV_ERROR ideal-int pkg syscall (darwin-386), const EV_FLAG0 ideal-int pkg syscall (darwin-386), const EV_FLAG1 ideal-int pkg syscall (darwin-386), const EV_ONESHOT ideal-int pkg syscall (darwin-386), const EV_OOBAND ideal-int pkg syscall (darwin-386), const EV_POLL ideal-int pkg syscall (darwin-386), const EV_RECEIPT ideal-int pkg syscall (darwin-386), const EV_SYSFLAGS ideal-int pkg syscall (darwin-386), const EXTA ideal-int pkg syscall (darwin-386), const EXTB ideal-int pkg syscall (darwin-386), const EXTPROC ideal-int pkg syscall (darwin-386), const FD_CLOEXEC ideal-int pkg syscall (darwin-386), const FD_SETSIZE ideal-int pkg syscall (darwin-386), const F_ADDFILESIGS ideal-int pkg syscall (darwin-386), const F_ADDSIGS ideal-int pkg syscall (darwin-386), const F_ALLOCATEALL ideal-int pkg syscall (darwin-386), const F_ALLOCATECONTIG ideal-int pkg syscall (darwin-386), const F_CHKCLEAN ideal-int pkg syscall (darwin-386), const F_DUPFD ideal-int pkg syscall (darwin-386), const F_DUPFD_CLOEXEC ideal-int pkg syscall (darwin-386), const F_FLUSH_DATA ideal-int pkg syscall (darwin-386), const F_FREEZE_FS ideal-int pkg syscall (darwin-386), const F_FULLFSYNC ideal-int pkg syscall (darwin-386), const F_GETFD ideal-int pkg syscall (darwin-386), const F_GETFL ideal-int pkg syscall (darwin-386), const F_GETLK ideal-int pkg syscall (darwin-386), const F_GETLKPID ideal-int pkg syscall (darwin-386), const F_GETNOSIGPIPE ideal-int pkg syscall (darwin-386), const F_GETOWN ideal-int pkg syscall (darwin-386), const F_GETPATH ideal-int pkg syscall (darwin-386), const F_GETPATH_MTMINFO ideal-int pkg syscall (darwin-386), const F_GETPROTECTIONCLASS ideal-int pkg syscall (darwin-386), const F_GLOBAL_NOCACHE ideal-int pkg syscall (darwin-386), const F_LOG2PHYS ideal-int pkg syscall (darwin-386), const F_LOG2PHYS_EXT ideal-int pkg syscall (darwin-386), const F_MARKDEPENDENCY ideal-int pkg syscall (darwin-386), const F_NOCACHE ideal-int pkg syscall (darwin-386), const F_NODIRECT ideal-int pkg syscall (darwin-386), const F_OK ideal-int pkg syscall (darwin-386), const F_PATHPKG_CHECK ideal-int pkg syscall (darwin-386), const F_PEOFPOSMODE ideal-int pkg syscall (darwin-386), const F_PREALLOCATE ideal-int pkg syscall (darwin-386), const F_RDADVISE ideal-int pkg syscall (darwin-386), const F_RDAHEAD ideal-int pkg syscall (darwin-386), const F_RDLCK ideal-int pkg syscall (darwin-386), const F_READBOOTSTRAP ideal-int pkg syscall (darwin-386), const F_SETBACKINGSTORE ideal-int pkg syscall (darwin-386), const F_SETFD ideal-int pkg syscall (darwin-386), const F_SETFL ideal-int pkg syscall (darwin-386), const F_SETLK ideal-int pkg syscall (darwin-386), const F_SETLKW ideal-int pkg syscall (darwin-386), const F_SETNOSIGPIPE ideal-int pkg syscall (darwin-386), const F_SETOWN ideal-int pkg syscall (darwin-386), const F_SETPROTECTIONCLASS ideal-int pkg syscall (darwin-386), const F_SETSIZE ideal-int pkg syscall (darwin-386), const F_THAW_FS ideal-int pkg syscall (darwin-386), const F_UNLCK ideal-int pkg syscall (darwin-386), const F_VOLPOSMODE ideal-int pkg syscall (darwin-386), const F_WRITEBOOTSTRAP ideal-int pkg syscall (darwin-386), const F_WRLCK ideal-int pkg syscall (darwin-386), const IFF_ALLMULTI ideal-int pkg syscall (darwin-386), const IFF_ALTPHYS ideal-int pkg syscall (darwin-386), const IFF_DEBUG ideal-int pkg syscall (darwin-386), const IFF_LINK0 ideal-int pkg syscall (darwin-386), const IFF_LINK1 ideal-int pkg syscall (darwin-386), const IFF_LINK2 ideal-int pkg syscall (darwin-386), const IFF_NOARP ideal-int pkg syscall (darwin-386), const IFF_NOTRAILERS ideal-int pkg syscall (darwin-386), const IFF_OACTIVE ideal-int pkg syscall (darwin-386), const IFF_POINTOPOINT ideal-int pkg syscall (darwin-386), const IFF_PROMISC ideal-int pkg syscall (darwin-386), const IFF_RUNNING ideal-int pkg syscall (darwin-386), const IFF_SIMPLEX ideal-int pkg syscall (darwin-386), const IFNAMSIZ ideal-int pkg syscall (darwin-386), const IFT_1822 ideal-int pkg syscall (darwin-386), const IFT_AAL5 ideal-int pkg syscall (darwin-386), const IFT_ARCNET ideal-int pkg syscall (darwin-386), const IFT_ARCNETPLUS ideal-int pkg syscall (darwin-386), const IFT_ATM ideal-int pkg syscall (darwin-386), const IFT_BRIDGE ideal-int pkg syscall (darwin-386), const IFT_CARP ideal-int pkg syscall (darwin-386), const IFT_CELLULAR ideal-int pkg syscall (darwin-386), const IFT_CEPT ideal-int pkg syscall (darwin-386), const IFT_DS3 ideal-int pkg syscall (darwin-386), const IFT_ENC ideal-int pkg syscall (darwin-386), const IFT_EON ideal-int pkg syscall (darwin-386), const IFT_ETHER ideal-int pkg syscall (darwin-386), const IFT_FAITH ideal-int pkg syscall (darwin-386), const IFT_FDDI ideal-int pkg syscall (darwin-386), const IFT_FRELAY ideal-int pkg syscall (darwin-386), const IFT_FRELAYDCE ideal-int pkg syscall (darwin-386), const IFT_GIF ideal-int pkg syscall (darwin-386), const IFT_HDH1822 ideal-int pkg syscall (darwin-386), const IFT_HIPPI ideal-int pkg syscall (darwin-386), const IFT_HSSI ideal-int pkg syscall (darwin-386), const IFT_HY ideal-int pkg syscall (darwin-386), const IFT_IEEE1394 ideal-int pkg syscall (darwin-386), const IFT_IEEE8023ADLAG ideal-int pkg syscall (darwin-386), const IFT_ISDNBASIC ideal-int pkg syscall (darwin-386), const IFT_ISDNPRIMARY ideal-int pkg syscall (darwin-386), const IFT_ISO88022LLC ideal-int pkg syscall (darwin-386), const IFT_ISO88023 ideal-int pkg syscall (darwin-386), const IFT_ISO88024 ideal-int pkg syscall (darwin-386), const IFT_ISO88025 ideal-int pkg syscall (darwin-386), const IFT_ISO88026 ideal-int pkg syscall (darwin-386), const IFT_L2VLAN ideal-int pkg syscall (darwin-386), const IFT_LAPB ideal-int pkg syscall (darwin-386), const IFT_LOCALTALK ideal-int pkg syscall (darwin-386), const IFT_LOOP ideal-int pkg syscall (darwin-386), const IFT_MIOX25 ideal-int pkg syscall (darwin-386), const IFT_MODEM ideal-int pkg syscall (darwin-386), const IFT_NSIP ideal-int pkg syscall (darwin-386), const IFT_OTHER ideal-int pkg syscall (darwin-386), const IFT_P10 ideal-int pkg syscall (darwin-386), const IFT_P80 ideal-int pkg syscall (darwin-386), const IFT_PARA ideal-int pkg syscall (darwin-386), const IFT_PDP ideal-int pkg syscall (darwin-386), const IFT_PFLOG ideal-int pkg syscall (darwin-386), const IFT_PFSYNC ideal-int pkg syscall (darwin-386), const IFT_PPP ideal-int pkg syscall (darwin-386), const IFT_PROPMUX ideal-int pkg syscall (darwin-386), const IFT_PROPVIRTUAL ideal-int pkg syscall (darwin-386), const IFT_PTPSERIAL ideal-int pkg syscall (darwin-386), const IFT_RS232 ideal-int pkg syscall (darwin-386), const IFT_SDLC ideal-int pkg syscall (darwin-386), const IFT_SIP ideal-int pkg syscall (darwin-386), const IFT_SLIP ideal-int pkg syscall (darwin-386), const IFT_SMDSDXI ideal-int pkg syscall (darwin-386), const IFT_SMDSICIP ideal-int pkg syscall (darwin-386), const IFT_SONET ideal-int pkg syscall (darwin-386), const IFT_SONETPATH ideal-int pkg syscall (darwin-386), const IFT_SONETVT ideal-int pkg syscall (darwin-386), const IFT_STARLAN ideal-int pkg syscall (darwin-386), const IFT_STF ideal-int pkg syscall (darwin-386), const IFT_T1 ideal-int pkg syscall (darwin-386), const IFT_ULTRA ideal-int pkg syscall (darwin-386), const IFT_V35 ideal-int pkg syscall (darwin-386), const IFT_X25 ideal-int pkg syscall (darwin-386), const IFT_X25DDN ideal-int pkg syscall (darwin-386), const IFT_X25PLE ideal-int pkg syscall (darwin-386), const IFT_XETHER ideal-int pkg syscall (darwin-386), const IN_CLASSA_HOST ideal-int pkg syscall (darwin-386), const IN_CLASSA_MAX ideal-int pkg syscall (darwin-386), const IN_CLASSA_NET ideal-int pkg syscall (darwin-386), const IN_CLASSA_NSHIFT ideal-int pkg syscall (darwin-386), const IN_CLASSB_HOST ideal-int pkg syscall (darwin-386), const IN_CLASSB_MAX ideal-int pkg syscall (darwin-386), const IN_CLASSB_NET ideal-int pkg syscall (darwin-386), const IN_CLASSB_NSHIFT ideal-int pkg syscall (darwin-386), const IN_CLASSC_HOST ideal-int pkg syscall (darwin-386), const IN_CLASSC_NET ideal-int pkg syscall (darwin-386), const IN_CLASSC_NSHIFT ideal-int pkg syscall (darwin-386), const IN_CLASSD_HOST ideal-int pkg syscall (darwin-386), const IN_CLASSD_NET ideal-int pkg syscall (darwin-386), const IN_CLASSD_NSHIFT ideal-int pkg syscall (darwin-386), const IN_LINKLOCALNETNUM ideal-int pkg syscall (darwin-386), const IN_LOOPBACKNET ideal-int pkg syscall (darwin-386), const IPPROTO_3PC ideal-int pkg syscall (darwin-386), const IPPROTO_ADFS ideal-int pkg syscall (darwin-386), const IPPROTO_AH ideal-int pkg syscall (darwin-386), const IPPROTO_AHIP ideal-int pkg syscall (darwin-386), const IPPROTO_APES ideal-int pkg syscall (darwin-386), const IPPROTO_ARGUS ideal-int pkg syscall (darwin-386), const IPPROTO_AX25 ideal-int pkg syscall (darwin-386), const IPPROTO_BHA ideal-int pkg syscall (darwin-386), const IPPROTO_BLT ideal-int pkg syscall (darwin-386), const IPPROTO_BRSATMON ideal-int pkg syscall (darwin-386), const IPPROTO_CFTP ideal-int pkg syscall (darwin-386), const IPPROTO_CHAOS ideal-int pkg syscall (darwin-386), const IPPROTO_CMTP ideal-int pkg syscall (darwin-386), const IPPROTO_CPHB ideal-int pkg syscall (darwin-386), const IPPROTO_CPNX ideal-int pkg syscall (darwin-386), const IPPROTO_DDP ideal-int pkg syscall (darwin-386), const IPPROTO_DGP ideal-int pkg syscall (darwin-386), const IPPROTO_DIVERT ideal-int pkg syscall (darwin-386), const IPPROTO_DONE ideal-int pkg syscall (darwin-386), const IPPROTO_DSTOPTS ideal-int pkg syscall (darwin-386), const IPPROTO_EGP ideal-int pkg syscall (darwin-386), const IPPROTO_EMCON ideal-int pkg syscall (darwin-386), const IPPROTO_ENCAP ideal-int pkg syscall (darwin-386), const IPPROTO_EON ideal-int pkg syscall (darwin-386), const IPPROTO_ESP ideal-int pkg syscall (darwin-386), const IPPROTO_ETHERIP ideal-int pkg syscall (darwin-386), const IPPROTO_FRAGMENT ideal-int pkg syscall (darwin-386), const IPPROTO_GGP ideal-int pkg syscall (darwin-386), const IPPROTO_GMTP ideal-int pkg syscall (darwin-386), const IPPROTO_GRE ideal-int pkg syscall (darwin-386), const IPPROTO_HELLO ideal-int pkg syscall (darwin-386), const IPPROTO_HMP ideal-int pkg syscall (darwin-386), const IPPROTO_HOPOPTS ideal-int pkg syscall (darwin-386), const IPPROTO_ICMP ideal-int pkg syscall (darwin-386), const IPPROTO_ICMPV6 ideal-int pkg syscall (darwin-386), const IPPROTO_IDP ideal-int pkg syscall (darwin-386), const IPPROTO_IDPR ideal-int pkg syscall (darwin-386), const IPPROTO_IDRP ideal-int pkg syscall (darwin-386), const IPPROTO_IGMP ideal-int pkg syscall (darwin-386), const IPPROTO_IGP ideal-int pkg syscall (darwin-386), const IPPROTO_IGRP ideal-int pkg syscall (darwin-386), const IPPROTO_IL ideal-int pkg syscall (darwin-386), const IPPROTO_INLSP ideal-int pkg syscall (darwin-386), const IPPROTO_INP ideal-int pkg syscall (darwin-386), const IPPROTO_IPCOMP ideal-int pkg syscall (darwin-386), const IPPROTO_IPCV ideal-int pkg syscall (darwin-386), const IPPROTO_IPEIP ideal-int pkg syscall (darwin-386), const IPPROTO_IPIP ideal-int pkg syscall (darwin-386), const IPPROTO_IPPC ideal-int pkg syscall (darwin-386), const IPPROTO_IPV4 ideal-int pkg syscall (darwin-386), const IPPROTO_IRTP ideal-int pkg syscall (darwin-386), const IPPROTO_KRYPTOLAN ideal-int pkg syscall (darwin-386), const IPPROTO_LARP ideal-int pkg syscall (darwin-386), const IPPROTO_LEAF1 ideal-int pkg syscall (darwin-386), const IPPROTO_LEAF2 ideal-int pkg syscall (darwin-386), const IPPROTO_MAX ideal-int pkg syscall (darwin-386), const IPPROTO_MAXID ideal-int pkg syscall (darwin-386), const IPPROTO_MEAS ideal-int pkg syscall (darwin-386), const IPPROTO_MHRP ideal-int pkg syscall (darwin-386), const IPPROTO_MICP ideal-int pkg syscall (darwin-386), const IPPROTO_MTP ideal-int pkg syscall (darwin-386), const IPPROTO_MUX ideal-int pkg syscall (darwin-386), const IPPROTO_ND ideal-int pkg syscall (darwin-386), const IPPROTO_NHRP ideal-int pkg syscall (darwin-386), const IPPROTO_NONE ideal-int pkg syscall (darwin-386), const IPPROTO_NSP ideal-int pkg syscall (darwin-386), const IPPROTO_NVPII ideal-int pkg syscall (darwin-386), const IPPROTO_OSPFIGP ideal-int pkg syscall (darwin-386), const IPPROTO_PGM ideal-int pkg syscall (darwin-386), const IPPROTO_PIGP ideal-int pkg syscall (darwin-386), const IPPROTO_PIM ideal-int pkg syscall (darwin-386), const IPPROTO_PRM ideal-int pkg syscall (darwin-386), const IPPROTO_PUP ideal-int pkg syscall (darwin-386), const IPPROTO_PVP ideal-int pkg syscall (darwin-386), const IPPROTO_RAW ideal-int pkg syscall (darwin-386), const IPPROTO_RCCMON ideal-int pkg syscall (darwin-386), const IPPROTO_RDP ideal-int pkg syscall (darwin-386), const IPPROTO_ROUTING ideal-int pkg syscall (darwin-386), const IPPROTO_RSVP ideal-int pkg syscall (darwin-386), const IPPROTO_RVD ideal-int pkg syscall (darwin-386), const IPPROTO_SATEXPAK ideal-int pkg syscall (darwin-386), const IPPROTO_SATMON ideal-int pkg syscall (darwin-386), const IPPROTO_SCCSP ideal-int pkg syscall (darwin-386), const IPPROTO_SCTP ideal-int pkg syscall (darwin-386), const IPPROTO_SDRP ideal-int pkg syscall (darwin-386), const IPPROTO_SEP ideal-int pkg syscall (darwin-386), const IPPROTO_SRPC ideal-int pkg syscall (darwin-386), const IPPROTO_ST ideal-int pkg syscall (darwin-386), const IPPROTO_SVMTP ideal-int pkg syscall (darwin-386), const IPPROTO_SWIPE ideal-int pkg syscall (darwin-386), const IPPROTO_TCF ideal-int pkg syscall (darwin-386), const IPPROTO_TP ideal-int pkg syscall (darwin-386), const IPPROTO_TPXX ideal-int pkg syscall (darwin-386), const IPPROTO_TRUNK1 ideal-int pkg syscall (darwin-386), const IPPROTO_TRUNK2 ideal-int pkg syscall (darwin-386), const IPPROTO_TTP ideal-int pkg syscall (darwin-386), const IPPROTO_VINES ideal-int pkg syscall (darwin-386), const IPPROTO_VISA ideal-int pkg syscall (darwin-386), const IPPROTO_VMTP ideal-int pkg syscall (darwin-386), const IPPROTO_WBEXPAK ideal-int pkg syscall (darwin-386), const IPPROTO_WBMON ideal-int pkg syscall (darwin-386), const IPPROTO_WSN ideal-int pkg syscall (darwin-386), const IPPROTO_XNET ideal-int pkg syscall (darwin-386), const IPPROTO_XTP ideal-int pkg syscall (darwin-386), const IPV6_2292DSTOPTS ideal-int pkg syscall (darwin-386), const IPV6_2292HOPLIMIT ideal-int pkg syscall (darwin-386), const IPV6_2292HOPOPTS ideal-int pkg syscall (darwin-386), const IPV6_2292NEXTHOP ideal-int pkg syscall (darwin-386), const IPV6_2292PKTINFO ideal-int pkg syscall (darwin-386), const IPV6_2292PKTOPTIONS ideal-int pkg syscall (darwin-386), const IPV6_2292RTHDR ideal-int pkg syscall (darwin-386), const IPV6_BINDV6ONLY ideal-int pkg syscall (darwin-386), const IPV6_BOUND_IF ideal-int pkg syscall (darwin-386), const IPV6_CHECKSUM ideal-int pkg syscall (darwin-386), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (darwin-386), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (darwin-386), const IPV6_DEFHLIM ideal-int pkg syscall (darwin-386), const IPV6_FAITH ideal-int pkg syscall (darwin-386), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (darwin-386), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (darwin-386), const IPV6_FRAGTTL ideal-int pkg syscall (darwin-386), const IPV6_FW_ADD ideal-int pkg syscall (darwin-386), const IPV6_FW_DEL ideal-int pkg syscall (darwin-386), const IPV6_FW_FLUSH ideal-int pkg syscall (darwin-386), const IPV6_FW_GET ideal-int pkg syscall (darwin-386), const IPV6_FW_ZERO ideal-int pkg syscall (darwin-386), const IPV6_HLIMDEC ideal-int pkg syscall (darwin-386), const IPV6_IPSEC_POLICY ideal-int pkg syscall (darwin-386), const IPV6_MAXHLIM ideal-int pkg syscall (darwin-386), const IPV6_MAXOPTHDR ideal-int pkg syscall (darwin-386), const IPV6_MAXPACKET ideal-int pkg syscall (darwin-386), const IPV6_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (darwin-386), const IPV6_MAX_MEMBERSHIPS ideal-int pkg syscall (darwin-386), const IPV6_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (darwin-386), const IPV6_MIN_MEMBERSHIPS ideal-int pkg syscall (darwin-386), const IPV6_MMTU ideal-int pkg syscall (darwin-386), const IPV6_PORTRANGE ideal-int pkg syscall (darwin-386), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (darwin-386), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (darwin-386), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (darwin-386), const IPV6_RECVTCLASS ideal-int pkg syscall (darwin-386), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (darwin-386), const IPV6_RTHDR_STRICT ideal-int pkg syscall (darwin-386), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (darwin-386), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (darwin-386), const IPV6_TCLASS ideal-int pkg syscall (darwin-386), const IPV6_VERSION ideal-int pkg syscall (darwin-386), const IPV6_VERSION_MASK ideal-int pkg syscall (darwin-386), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (darwin-386), const IP_BLOCK_SOURCE ideal-int pkg syscall (darwin-386), const IP_BOUND_IF ideal-int pkg syscall (darwin-386), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (darwin-386), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (darwin-386), const IP_DF ideal-int pkg syscall (darwin-386), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (darwin-386), const IP_DUMMYNET_CONFIGURE ideal-int pkg syscall (darwin-386), const IP_DUMMYNET_DEL ideal-int pkg syscall (darwin-386), const IP_DUMMYNET_FLUSH ideal-int pkg syscall (darwin-386), const IP_DUMMYNET_GET ideal-int pkg syscall (darwin-386), const IP_FAITH ideal-int pkg syscall (darwin-386), const IP_FW_ADD ideal-int pkg syscall (darwin-386), const IP_FW_DEL ideal-int pkg syscall (darwin-386), const IP_FW_FLUSH ideal-int pkg syscall (darwin-386), const IP_FW_GET ideal-int pkg syscall (darwin-386), const IP_FW_RESETLOG ideal-int pkg syscall (darwin-386), const IP_FW_ZERO ideal-int pkg syscall (darwin-386), const IP_HDRINCL ideal-int pkg syscall (darwin-386), const IP_IPSEC_POLICY ideal-int pkg syscall (darwin-386), const IP_MAXPACKET ideal-int pkg syscall (darwin-386), const IP_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (darwin-386), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (darwin-386), const IP_MAX_SOCK_MUTE_FILTER ideal-int pkg syscall (darwin-386), const IP_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (darwin-386), const IP_MF ideal-int pkg syscall (darwin-386), const IP_MIN_MEMBERSHIPS ideal-int pkg syscall (darwin-386), const IP_MSFILTER ideal-int pkg syscall (darwin-386), const IP_MSS ideal-int pkg syscall (darwin-386), const IP_MULTICAST_IFINDEX ideal-int pkg syscall (darwin-386), const IP_MULTICAST_VIF ideal-int pkg syscall (darwin-386), const IP_NAT__XXX ideal-int pkg syscall (darwin-386), const IP_OFFMASK ideal-int pkg syscall (darwin-386), const IP_OLD_FW_ADD ideal-int pkg syscall (darwin-386), const IP_OLD_FW_DEL ideal-int pkg syscall (darwin-386), const IP_OLD_FW_FLUSH ideal-int pkg syscall (darwin-386), const IP_OLD_FW_GET ideal-int pkg syscall (darwin-386), const IP_OLD_FW_RESETLOG ideal-int pkg syscall (darwin-386), const IP_OLD_FW_ZERO ideal-int pkg syscall (darwin-386), const IP_OPTIONS ideal-int pkg syscall (darwin-386), const IP_PKTINFO ideal-int pkg syscall (darwin-386), const IP_PORTRANGE ideal-int pkg syscall (darwin-386), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (darwin-386), const IP_PORTRANGE_HIGH ideal-int pkg syscall (darwin-386), const IP_PORTRANGE_LOW ideal-int pkg syscall (darwin-386), const IP_RECVDSTADDR ideal-int pkg syscall (darwin-386), const IP_RECVIF ideal-int pkg syscall (darwin-386), const IP_RECVOPTS ideal-int pkg syscall (darwin-386), const IP_RECVPKTINFO ideal-int pkg syscall (darwin-386), const IP_RECVRETOPTS ideal-int pkg syscall (darwin-386), const IP_RECVTTL ideal-int pkg syscall (darwin-386), const IP_RETOPTS ideal-int pkg syscall (darwin-386), const IP_RF ideal-int pkg syscall (darwin-386), const IP_RSVP_OFF ideal-int pkg syscall (darwin-386), const IP_RSVP_ON ideal-int pkg syscall (darwin-386), const IP_RSVP_VIF_OFF ideal-int pkg syscall (darwin-386), const IP_RSVP_VIF_ON ideal-int pkg syscall (darwin-386), const IP_STRIPHDR ideal-int pkg syscall (darwin-386), const IP_TRAFFIC_MGT_BACKGROUND ideal-int pkg syscall (darwin-386), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (darwin-386), const LOCK_EX ideal-int pkg syscall (darwin-386), const LOCK_NB ideal-int pkg syscall (darwin-386), const LOCK_SH ideal-int pkg syscall (darwin-386), const LOCK_UN ideal-int pkg syscall (darwin-386), const MADV_CAN_REUSE ideal-int pkg syscall (darwin-386), const MADV_DONTNEED ideal-int pkg syscall (darwin-386), const MADV_FREE ideal-int pkg syscall (darwin-386), const MADV_FREE_REUSABLE ideal-int pkg syscall (darwin-386), const MADV_FREE_REUSE ideal-int pkg syscall (darwin-386), const MADV_NORMAL ideal-int pkg syscall (darwin-386), const MADV_RANDOM ideal-int pkg syscall (darwin-386), const MADV_SEQUENTIAL ideal-int pkg syscall (darwin-386), const MADV_WILLNEED ideal-int pkg syscall (darwin-386), const MADV_ZERO_WIRED_PAGES ideal-int pkg syscall (darwin-386), const MAP_ANON ideal-int pkg syscall (darwin-386), const MAP_COPY ideal-int pkg syscall (darwin-386), const MAP_FILE ideal-int pkg syscall (darwin-386), const MAP_FIXED ideal-int pkg syscall (darwin-386), const MAP_HASSEMAPHORE ideal-int pkg syscall (darwin-386), const MAP_JIT ideal-int pkg syscall (darwin-386), const MAP_NOCACHE ideal-int pkg syscall (darwin-386), const MAP_NOEXTEND ideal-int pkg syscall (darwin-386), const MAP_NORESERVE ideal-int pkg syscall (darwin-386), const MAP_PRIVATE ideal-int pkg syscall (darwin-386), const MAP_RENAME ideal-int pkg syscall (darwin-386), const MAP_RESERVED0080 ideal-int pkg syscall (darwin-386), const MAP_SHARED ideal-int pkg syscall (darwin-386), const MCL_CURRENT ideal-int pkg syscall (darwin-386), const MCL_FUTURE ideal-int pkg syscall (darwin-386), const MSG_CTRUNC ideal-int pkg syscall (darwin-386), const MSG_DONTROUTE ideal-int pkg syscall (darwin-386), const MSG_DONTWAIT ideal-int pkg syscall (darwin-386), const MSG_EOF ideal-int pkg syscall (darwin-386), const MSG_EOR ideal-int pkg syscall (darwin-386), const MSG_FLUSH ideal-int pkg syscall (darwin-386), const MSG_HAVEMORE ideal-int pkg syscall (darwin-386), const MSG_HOLD ideal-int pkg syscall (darwin-386), const MSG_NEEDSA ideal-int pkg syscall (darwin-386), const MSG_OOB ideal-int pkg syscall (darwin-386), const MSG_PEEK ideal-int pkg syscall (darwin-386), const MSG_RCVMORE ideal-int pkg syscall (darwin-386), const MSG_SEND ideal-int pkg syscall (darwin-386), const MSG_TRUNC ideal-int pkg syscall (darwin-386), const MSG_WAITALL ideal-int pkg syscall (darwin-386), const MSG_WAITSTREAM ideal-int pkg syscall (darwin-386), const MS_ASYNC ideal-int pkg syscall (darwin-386), const MS_DEACTIVATE ideal-int pkg syscall (darwin-386), const MS_INVALIDATE ideal-int pkg syscall (darwin-386), const MS_KILLPAGES ideal-int pkg syscall (darwin-386), const MS_SYNC ideal-int pkg syscall (darwin-386), const NAME_MAX ideal-int pkg syscall (darwin-386), const NET_RT_DUMP ideal-int pkg syscall (darwin-386), const NET_RT_DUMP2 ideal-int pkg syscall (darwin-386), const NET_RT_FLAGS ideal-int pkg syscall (darwin-386), const NET_RT_IFLIST ideal-int pkg syscall (darwin-386), const NET_RT_IFLIST2 ideal-int pkg syscall (darwin-386), const NET_RT_MAXID ideal-int pkg syscall (darwin-386), const NET_RT_STAT ideal-int pkg syscall (darwin-386), const NET_RT_TRASH ideal-int pkg syscall (darwin-386), const NOTE_ABSOLUTE ideal-int pkg syscall (darwin-386), const NOTE_ATTRIB ideal-int pkg syscall (darwin-386), const NOTE_CHILD ideal-int pkg syscall (darwin-386), const NOTE_DELETE ideal-int pkg syscall (darwin-386), const NOTE_EXEC ideal-int pkg syscall (darwin-386), const NOTE_EXIT ideal-int pkg syscall (darwin-386), const NOTE_EXITSTATUS ideal-int pkg syscall (darwin-386), const NOTE_EXTEND ideal-int pkg syscall (darwin-386), const NOTE_FFAND ideal-int pkg syscall (darwin-386), const NOTE_FFCOPY ideal-int pkg syscall (darwin-386), const NOTE_FFCTRLMASK ideal-int pkg syscall (darwin-386), const NOTE_FFLAGSMASK ideal-int pkg syscall (darwin-386), const NOTE_FFNOP ideal-int pkg syscall (darwin-386), const NOTE_FFOR ideal-int pkg syscall (darwin-386), const NOTE_FORK ideal-int pkg syscall (darwin-386), const NOTE_LINK ideal-int pkg syscall (darwin-386), const NOTE_LOWAT ideal-int pkg syscall (darwin-386), const NOTE_NONE ideal-int pkg syscall (darwin-386), const NOTE_NSECONDS ideal-int pkg syscall (darwin-386), const NOTE_PCTRLMASK ideal-int pkg syscall (darwin-386), const NOTE_PDATAMASK ideal-int pkg syscall (darwin-386), const NOTE_REAP ideal-int pkg syscall (darwin-386), const NOTE_RENAME ideal-int pkg syscall (darwin-386), const NOTE_RESOURCEEND ideal-int pkg syscall (darwin-386), const NOTE_REVOKE ideal-int pkg syscall (darwin-386), const NOTE_SECONDS ideal-int pkg syscall (darwin-386), const NOTE_SIGNAL ideal-int pkg syscall (darwin-386), const NOTE_TRACK ideal-int pkg syscall (darwin-386), const NOTE_TRACKERR ideal-int pkg syscall (darwin-386), const NOTE_TRIGGER ideal-int pkg syscall (darwin-386), const NOTE_USECONDS ideal-int pkg syscall (darwin-386), const NOTE_VM_ERROR ideal-int pkg syscall (darwin-386), const NOTE_VM_PRESSURE ideal-int pkg syscall (darwin-386), const NOTE_VM_PRESSURE_SUDDEN_TERMINATE ideal-int pkg syscall (darwin-386), const NOTE_VM_PRESSURE_TERMINATE ideal-int pkg syscall (darwin-386), const NOTE_WRITE ideal-int pkg syscall (darwin-386), const O_ACCMODE ideal-int pkg syscall (darwin-386), const O_ALERT ideal-int pkg syscall (darwin-386), const O_DIRECTORY ideal-int pkg syscall (darwin-386), const O_DSYNC ideal-int pkg syscall (darwin-386), const O_EVTONLY ideal-int pkg syscall (darwin-386), const O_EXLOCK ideal-int pkg syscall (darwin-386), const O_FSYNC ideal-int pkg syscall (darwin-386), const O_NDELAY ideal-int pkg syscall (darwin-386), const O_NOFOLLOW ideal-int pkg syscall (darwin-386), const O_POPUP ideal-int pkg syscall (darwin-386), const O_SHLOCK ideal-int pkg syscall (darwin-386), const O_SYMLINK ideal-int pkg syscall (darwin-386), const PROT_EXEC ideal-int pkg syscall (darwin-386), const PROT_NONE ideal-int pkg syscall (darwin-386), const PROT_READ ideal-int pkg syscall (darwin-386), const PROT_WRITE ideal-int pkg syscall (darwin-386), const PTRACE_CONT ideal-int pkg syscall (darwin-386), const PTRACE_KILL ideal-int pkg syscall (darwin-386), const PTRACE_TRACEME ideal-int pkg syscall (darwin-386), const PT_ATTACH ideal-int pkg syscall (darwin-386), const PT_ATTACHEXC ideal-int pkg syscall (darwin-386), const PT_CONTINUE ideal-int pkg syscall (darwin-386), const PT_DENY_ATTACH ideal-int pkg syscall (darwin-386), const PT_DETACH ideal-int pkg syscall (darwin-386), const PT_FIRSTMACH ideal-int pkg syscall (darwin-386), const PT_FORCEQUOTA ideal-int pkg syscall (darwin-386), const PT_KILL ideal-int pkg syscall (darwin-386), const PT_READ_D ideal-int pkg syscall (darwin-386), const PT_READ_I ideal-int pkg syscall (darwin-386), const PT_READ_U ideal-int pkg syscall (darwin-386), const PT_SIGEXC ideal-int pkg syscall (darwin-386), const PT_STEP ideal-int pkg syscall (darwin-386), const PT_THUPDATE ideal-int pkg syscall (darwin-386), const PT_TRACE_ME ideal-int pkg syscall (darwin-386), const PT_WRITE_D ideal-int pkg syscall (darwin-386), const PT_WRITE_I ideal-int pkg syscall (darwin-386), const PT_WRITE_U ideal-int pkg syscall (darwin-386), const RLIMIT_AS ideal-int pkg syscall (darwin-386), const RLIMIT_CORE ideal-int pkg syscall (darwin-386), const RLIMIT_CPU ideal-int pkg syscall (darwin-386), const RLIMIT_DATA ideal-int pkg syscall (darwin-386), const RLIMIT_FSIZE ideal-int pkg syscall (darwin-386), const RLIMIT_NOFILE ideal-int pkg syscall (darwin-386), const RLIMIT_STACK ideal-int pkg syscall (darwin-386), const RLIM_INFINITY ideal-int pkg syscall (darwin-386), const RTAX_AUTHOR ideal-int pkg syscall (darwin-386), const RTAX_BRD ideal-int pkg syscall (darwin-386), const RTAX_DST ideal-int pkg syscall (darwin-386), const RTAX_GATEWAY ideal-int pkg syscall (darwin-386), const RTAX_GENMASK ideal-int pkg syscall (darwin-386), const RTAX_IFA ideal-int pkg syscall (darwin-386), const RTAX_IFP ideal-int pkg syscall (darwin-386), const RTAX_MAX ideal-int pkg syscall (darwin-386), const RTAX_NETMASK ideal-int pkg syscall (darwin-386), const RTA_AUTHOR ideal-int pkg syscall (darwin-386), const RTA_BRD ideal-int pkg syscall (darwin-386), const RTA_DST ideal-int pkg syscall (darwin-386), const RTA_GATEWAY ideal-int pkg syscall (darwin-386), const RTA_GENMASK ideal-int pkg syscall (darwin-386), const RTA_IFA ideal-int pkg syscall (darwin-386), const RTA_IFP ideal-int pkg syscall (darwin-386), const RTA_NETMASK ideal-int pkg syscall (darwin-386), const RTF_BLACKHOLE ideal-int pkg syscall (darwin-386), const RTF_BROADCAST ideal-int pkg syscall (darwin-386), const RTF_CLONING ideal-int pkg syscall (darwin-386), const RTF_CONDEMNED ideal-int pkg syscall (darwin-386), const RTF_DELCLONE ideal-int pkg syscall (darwin-386), const RTF_DONE ideal-int pkg syscall (darwin-386), const RTF_DYNAMIC ideal-int pkg syscall (darwin-386), const RTF_GATEWAY ideal-int pkg syscall (darwin-386), const RTF_HOST ideal-int pkg syscall (darwin-386), const RTF_IFREF ideal-int pkg syscall (darwin-386), const RTF_IFSCOPE ideal-int pkg syscall (darwin-386), const RTF_LLINFO ideal-int pkg syscall (darwin-386), const RTF_LOCAL ideal-int pkg syscall (darwin-386), const RTF_MODIFIED ideal-int pkg syscall (darwin-386), const RTF_MULTICAST ideal-int pkg syscall (darwin-386), const RTF_PINNED ideal-int pkg syscall (darwin-386), const RTF_PRCLONING ideal-int pkg syscall (darwin-386), const RTF_PROTO1 ideal-int pkg syscall (darwin-386), const RTF_PROTO2 ideal-int pkg syscall (darwin-386), const RTF_PROTO3 ideal-int pkg syscall (darwin-386), const RTF_REJECT ideal-int pkg syscall (darwin-386), const RTF_STATIC ideal-int pkg syscall (darwin-386), const RTF_UP ideal-int pkg syscall (darwin-386), const RTF_WASCLONED ideal-int pkg syscall (darwin-386), const RTF_XRESOLVE ideal-int pkg syscall (darwin-386), const RTM_ADD ideal-int pkg syscall (darwin-386), const RTM_CHANGE ideal-int pkg syscall (darwin-386), const RTM_DELADDR ideal-int pkg syscall (darwin-386), const RTM_DELETE ideal-int pkg syscall (darwin-386), const RTM_DELMADDR ideal-int pkg syscall (darwin-386), const RTM_GET ideal-int pkg syscall (darwin-386), const RTM_GET2 ideal-int pkg syscall (darwin-386), const RTM_IFINFO ideal-int pkg syscall (darwin-386), const RTM_IFINFO2 ideal-int pkg syscall (darwin-386), const RTM_LOCK ideal-int pkg syscall (darwin-386), const RTM_LOSING ideal-int pkg syscall (darwin-386), const RTM_MISS ideal-int pkg syscall (darwin-386), const RTM_NEWADDR ideal-int pkg syscall (darwin-386), const RTM_NEWMADDR ideal-int pkg syscall (darwin-386), const RTM_NEWMADDR2 ideal-int pkg syscall (darwin-386), const RTM_OLDADD ideal-int pkg syscall (darwin-386), const RTM_OLDDEL ideal-int pkg syscall (darwin-386), const RTM_REDIRECT ideal-int pkg syscall (darwin-386), const RTM_RESOLVE ideal-int pkg syscall (darwin-386), const RTM_RTTUNIT ideal-int pkg syscall (darwin-386), const RTM_VERSION ideal-int pkg syscall (darwin-386), const RTV_EXPIRE ideal-int pkg syscall (darwin-386), const RTV_HOPCOUNT ideal-int pkg syscall (darwin-386), const RTV_MTU ideal-int pkg syscall (darwin-386), const RTV_RPIPE ideal-int pkg syscall (darwin-386), const RTV_RTT ideal-int pkg syscall (darwin-386), const RTV_RTTVAR ideal-int pkg syscall (darwin-386), const RTV_SPIPE ideal-int pkg syscall (darwin-386), const RTV_SSTHRESH ideal-int pkg syscall (darwin-386), const RUSAGE_CHILDREN ideal-int pkg syscall (darwin-386), const RUSAGE_SELF ideal-int pkg syscall (darwin-386), const SCM_CREDS ideal-int pkg syscall (darwin-386), const SCM_RIGHTS ideal-int pkg syscall (darwin-386), const SCM_TIMESTAMP ideal-int pkg syscall (darwin-386), const SCM_TIMESTAMP_MONOTONIC ideal-int pkg syscall (darwin-386), const SIGCHLD Signal pkg syscall (darwin-386), const SIGCONT Signal pkg syscall (darwin-386), const SIGEMT Signal pkg syscall (darwin-386), const SIGINFO Signal pkg syscall (darwin-386), const SIGIO Signal pkg syscall (darwin-386), const SIGIOT Signal pkg syscall (darwin-386), const SIGPROF Signal pkg syscall (darwin-386), const SIGSTOP Signal pkg syscall (darwin-386), const SIGSYS Signal pkg syscall (darwin-386), const SIGTSTP Signal pkg syscall (darwin-386), const SIGTTIN Signal pkg syscall (darwin-386), const SIGTTOU Signal pkg syscall (darwin-386), const SIGURG Signal pkg syscall (darwin-386), const SIGUSR1 Signal pkg syscall (darwin-386), const SIGUSR2 Signal pkg syscall (darwin-386), const SIGVTALRM Signal pkg syscall (darwin-386), const SIGWINCH Signal pkg syscall (darwin-386), const SIGXCPU Signal pkg syscall (darwin-386), const SIGXFSZ Signal pkg syscall (darwin-386), const SIOCADDMULTI ideal-int pkg syscall (darwin-386), const SIOCAIFADDR ideal-int pkg syscall (darwin-386), const SIOCALIFADDR ideal-int pkg syscall (darwin-386), const SIOCARPIPLL ideal-int pkg syscall (darwin-386), const SIOCATMARK ideal-int pkg syscall (darwin-386), const SIOCAUTOADDR ideal-int pkg syscall (darwin-386), const SIOCAUTONETMASK ideal-int pkg syscall (darwin-386), const SIOCDELMULTI ideal-int pkg syscall (darwin-386), const SIOCDIFADDR ideal-int pkg syscall (darwin-386), const SIOCDIFPHYADDR ideal-int pkg syscall (darwin-386), const SIOCDLIFADDR ideal-int pkg syscall (darwin-386), const SIOCGDRVSPEC ideal-int pkg syscall (darwin-386), const SIOCGETSGCNT ideal-int pkg syscall (darwin-386), const SIOCGETVIFCNT ideal-int pkg syscall (darwin-386), const SIOCGETVLAN ideal-int pkg syscall (darwin-386), const SIOCGHIWAT ideal-int pkg syscall (darwin-386), const SIOCGIFADDR ideal-int pkg syscall (darwin-386), const SIOCGIFALTMTU ideal-int pkg syscall (darwin-386), const SIOCGIFASYNCMAP ideal-int pkg syscall (darwin-386), const SIOCGIFBOND ideal-int pkg syscall (darwin-386), const SIOCGIFBRDADDR ideal-int pkg syscall (darwin-386), const SIOCGIFCAP ideal-int pkg syscall (darwin-386), const SIOCGIFCONF ideal-int pkg syscall (darwin-386), const SIOCGIFDEVMTU ideal-int pkg syscall (darwin-386), const SIOCGIFDSTADDR ideal-int pkg syscall (darwin-386), const SIOCGIFFLAGS ideal-int pkg syscall (darwin-386), const SIOCGIFGENERIC ideal-int pkg syscall (darwin-386), const SIOCGIFKPI ideal-int pkg syscall (darwin-386), const SIOCGIFMAC ideal-int pkg syscall (darwin-386), const SIOCGIFMEDIA ideal-int pkg syscall (darwin-386), const SIOCGIFMETRIC ideal-int pkg syscall (darwin-386), const SIOCGIFMTU ideal-int pkg syscall (darwin-386), const SIOCGIFNETMASK ideal-int pkg syscall (darwin-386), const SIOCGIFPDSTADDR ideal-int pkg syscall (darwin-386), const SIOCGIFPHYS ideal-int pkg syscall (darwin-386), const SIOCGIFPSRCADDR ideal-int pkg syscall (darwin-386), const SIOCGIFSTATUS ideal-int pkg syscall (darwin-386), const SIOCGIFVLAN ideal-int pkg syscall (darwin-386), const SIOCGIFWAKEFLAGS ideal-int pkg syscall (darwin-386), const SIOCGLIFADDR ideal-int pkg syscall (darwin-386), const SIOCGLIFPHYADDR ideal-int pkg syscall (darwin-386), const SIOCGLOWAT ideal-int pkg syscall (darwin-386), const SIOCGPGRP ideal-int pkg syscall (darwin-386), const SIOCIFCREATE ideal-int pkg syscall (darwin-386), const SIOCIFCREATE2 ideal-int pkg syscall (darwin-386), const SIOCIFDESTROY ideal-int pkg syscall (darwin-386), const SIOCRSLVMULTI ideal-int pkg syscall (darwin-386), const SIOCSDRVSPEC ideal-int pkg syscall (darwin-386), const SIOCSETVLAN ideal-int pkg syscall (darwin-386), const SIOCSHIWAT ideal-int pkg syscall (darwin-386), const SIOCSIFADDR ideal-int pkg syscall (darwin-386), const SIOCSIFALTMTU ideal-int pkg syscall (darwin-386), const SIOCSIFASYNCMAP ideal-int pkg syscall (darwin-386), const SIOCSIFBOND ideal-int pkg syscall (darwin-386), const SIOCSIFBRDADDR ideal-int pkg syscall (darwin-386), const SIOCSIFCAP ideal-int pkg syscall (darwin-386), const SIOCSIFDSTADDR ideal-int pkg syscall (darwin-386), const SIOCSIFFLAGS ideal-int pkg syscall (darwin-386), const SIOCSIFGENERIC ideal-int pkg syscall (darwin-386), const SIOCSIFKPI ideal-int pkg syscall (darwin-386), const SIOCSIFLLADDR ideal-int pkg syscall (darwin-386), const SIOCSIFMAC ideal-int pkg syscall (darwin-386), const SIOCSIFMEDIA ideal-int pkg syscall (darwin-386), const SIOCSIFMETRIC ideal-int pkg syscall (darwin-386), const SIOCSIFMTU ideal-int pkg syscall (darwin-386), const SIOCSIFNETMASK ideal-int pkg syscall (darwin-386), const SIOCSIFPHYADDR ideal-int pkg syscall (darwin-386), const SIOCSIFPHYS ideal-int pkg syscall (darwin-386), const SIOCSIFVLAN ideal-int pkg syscall (darwin-386), const SIOCSLIFPHYADDR ideal-int pkg syscall (darwin-386), const SIOCSLOWAT ideal-int pkg syscall (darwin-386), const SIOCSPGRP ideal-int pkg syscall (darwin-386), const SOCK_MAXADDRLEN ideal-int pkg syscall (darwin-386), const SOCK_RDM ideal-int pkg syscall (darwin-386), const SO_ACCEPTCONN ideal-int pkg syscall (darwin-386), const SO_DEBUG ideal-int pkg syscall (darwin-386), const SO_DONTTRUNC ideal-int pkg syscall (darwin-386), const SO_ERROR ideal-int pkg syscall (darwin-386), const SO_LABEL ideal-int pkg syscall (darwin-386), const SO_LINGER_SEC ideal-int pkg syscall (darwin-386), const SO_NKE ideal-int pkg syscall (darwin-386), const SO_NOADDRERR ideal-int pkg syscall (darwin-386), const SO_NOSIGPIPE ideal-int pkg syscall (darwin-386), const SO_NOTIFYCONFLICT ideal-int pkg syscall (darwin-386), const SO_NP_EXTENSIONS ideal-int pkg syscall (darwin-386), const SO_NREAD ideal-int pkg syscall (darwin-386), const SO_NWRITE ideal-int pkg syscall (darwin-386), const SO_OOBINLINE ideal-int pkg syscall (darwin-386), const SO_PEERLABEL ideal-int pkg syscall (darwin-386), const SO_RANDOMPORT ideal-int pkg syscall (darwin-386), const SO_RCVLOWAT ideal-int pkg syscall (darwin-386), const SO_RCVTIMEO ideal-int pkg syscall (darwin-386), const SO_RESTRICTIONS ideal-int pkg syscall (darwin-386), const SO_RESTRICT_DENYIN ideal-int pkg syscall (darwin-386), const SO_RESTRICT_DENYOUT ideal-int pkg syscall (darwin-386), const SO_RESTRICT_DENYSET ideal-int pkg syscall (darwin-386), const SO_REUSEPORT ideal-int pkg syscall (darwin-386), const SO_REUSESHAREUID ideal-int pkg syscall (darwin-386), const SO_SNDLOWAT ideal-int pkg syscall (darwin-386), const SO_SNDTIMEO ideal-int pkg syscall (darwin-386), const SO_TIMESTAMP ideal-int pkg syscall (darwin-386), const SO_TIMESTAMP_MONOTONIC ideal-int pkg syscall (darwin-386), const SO_TYPE ideal-int pkg syscall (darwin-386), const SO_UPCALLCLOSEWAIT ideal-int pkg syscall (darwin-386), const SO_USELOOPBACK ideal-int pkg syscall (darwin-386), const SO_WANTMORE ideal-int pkg syscall (darwin-386), const SO_WANTOOBFLAG ideal-int pkg syscall (darwin-386), const SYS_ACCEPT ideal-int pkg syscall (darwin-386), const SYS_ACCEPT_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_ACCESS ideal-int pkg syscall (darwin-386), const SYS_ACCESS_EXTENDED ideal-int pkg syscall (darwin-386), const SYS_ACCT ideal-int pkg syscall (darwin-386), const SYS_ADD_PROFIL ideal-int pkg syscall (darwin-386), const SYS_ADJTIME ideal-int pkg syscall (darwin-386), const SYS_AIO_CANCEL ideal-int pkg syscall (darwin-386), const SYS_AIO_ERROR ideal-int pkg syscall (darwin-386), const SYS_AIO_FSYNC ideal-int pkg syscall (darwin-386), const SYS_AIO_READ ideal-int pkg syscall (darwin-386), const SYS_AIO_RETURN ideal-int pkg syscall (darwin-386), const SYS_AIO_SUSPEND ideal-int pkg syscall (darwin-386), const SYS_AIO_SUSPEND_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_AIO_WRITE ideal-int pkg syscall (darwin-386), const SYS_ATGETMSG ideal-int pkg syscall (darwin-386), const SYS_ATPGETREQ ideal-int pkg syscall (darwin-386), const SYS_ATPGETRSP ideal-int pkg syscall (darwin-386), const SYS_ATPSNDREQ ideal-int pkg syscall (darwin-386), const SYS_ATPSNDRSP ideal-int pkg syscall (darwin-386), const SYS_ATPUTMSG ideal-int pkg syscall (darwin-386), const SYS_ATSOCKET ideal-int pkg syscall (darwin-386), const SYS_AUDIT ideal-int pkg syscall (darwin-386), const SYS_AUDITCTL ideal-int pkg syscall (darwin-386), const SYS_AUDITON ideal-int pkg syscall (darwin-386), const SYS_AUDIT_SESSION_JOIN ideal-int pkg syscall (darwin-386), const SYS_AUDIT_SESSION_PORT ideal-int pkg syscall (darwin-386), const SYS_AUDIT_SESSION_SELF ideal-int pkg syscall (darwin-386), const SYS_BIND ideal-int pkg syscall (darwin-386), const SYS_BSDTHREAD_CREATE ideal-int pkg syscall (darwin-386), const SYS_BSDTHREAD_REGISTER ideal-int pkg syscall (darwin-386), const SYS_BSDTHREAD_TERMINATE ideal-int pkg syscall (darwin-386), const SYS_CHDIR ideal-int pkg syscall (darwin-386), const SYS_CHFLAGS ideal-int pkg syscall (darwin-386), const SYS_CHMOD ideal-int pkg syscall (darwin-386), const SYS_CHMOD_EXTENDED ideal-int pkg syscall (darwin-386), const SYS_CHOWN ideal-int pkg syscall (darwin-386), const SYS_CHROOT ideal-int pkg syscall (darwin-386), const SYS_CHUD ideal-int pkg syscall (darwin-386), const SYS_CLOSE ideal-int pkg syscall (darwin-386), const SYS_CLOSE_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_CONNECT ideal-int pkg syscall (darwin-386), const SYS_CONNECT_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_COPYFILE ideal-int pkg syscall (darwin-386), const SYS_CSOPS ideal-int pkg syscall (darwin-386), const SYS_DELETE ideal-int pkg syscall (darwin-386), const SYS_DUP ideal-int pkg syscall (darwin-386), const SYS_DUP2 ideal-int pkg syscall (darwin-386), const SYS_EXCHANGEDATA ideal-int pkg syscall (darwin-386), const SYS_EXECVE ideal-int pkg syscall (darwin-386), const SYS_EXIT ideal-int pkg syscall (darwin-386), const SYS_FCHDIR ideal-int pkg syscall (darwin-386), const SYS_FCHFLAGS ideal-int pkg syscall (darwin-386), const SYS_FCHMOD ideal-int pkg syscall (darwin-386), const SYS_FCHMOD_EXTENDED ideal-int pkg syscall (darwin-386), const SYS_FCHOWN ideal-int pkg syscall (darwin-386), const SYS_FCNTL ideal-int pkg syscall (darwin-386), const SYS_FCNTL_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_FDATASYNC ideal-int pkg syscall (darwin-386), const SYS_FFSCTL ideal-int pkg syscall (darwin-386), const SYS_FGETATTRLIST ideal-int pkg syscall (darwin-386), const SYS_FGETXATTR ideal-int pkg syscall (darwin-386), const SYS_FHOPEN ideal-int pkg syscall (darwin-386), const SYS_FILEPORT_MAKEFD ideal-int pkg syscall (darwin-386), const SYS_FILEPORT_MAKEPORT ideal-int pkg syscall (darwin-386), const SYS_FLISTXATTR ideal-int pkg syscall (darwin-386), const SYS_FLOCK ideal-int pkg syscall (darwin-386), const SYS_FORK ideal-int pkg syscall (darwin-386), const SYS_FPATHCONF ideal-int pkg syscall (darwin-386), const SYS_FREMOVEXATTR ideal-int pkg syscall (darwin-386), const SYS_FSCTL ideal-int pkg syscall (darwin-386), const SYS_FSETATTRLIST ideal-int pkg syscall (darwin-386), const SYS_FSETXATTR ideal-int pkg syscall (darwin-386), const SYS_FSGETPATH ideal-int pkg syscall (darwin-386), const SYS_FSTAT ideal-int pkg syscall (darwin-386), const SYS_FSTAT64 ideal-int pkg syscall (darwin-386), const SYS_FSTAT64_EXTENDED ideal-int pkg syscall (darwin-386), const SYS_FSTATFS ideal-int pkg syscall (darwin-386), const SYS_FSTATFS64 ideal-int pkg syscall (darwin-386), const SYS_FSTATV ideal-int pkg syscall (darwin-386), const SYS_FSTAT_EXTENDED ideal-int pkg syscall (darwin-386), const SYS_FSYNC ideal-int pkg syscall (darwin-386), const SYS_FSYNC_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_FTRUNCATE ideal-int pkg syscall (darwin-386), const SYS_FUTIMES ideal-int pkg syscall (darwin-386), const SYS_GETATTRLIST ideal-int pkg syscall (darwin-386), const SYS_GETAUDIT ideal-int pkg syscall (darwin-386), const SYS_GETAUDIT_ADDR ideal-int pkg syscall (darwin-386), const SYS_GETAUID ideal-int pkg syscall (darwin-386), const SYS_GETDIRENTRIES ideal-int pkg syscall (darwin-386), const SYS_GETDIRENTRIES64 ideal-int pkg syscall (darwin-386), const SYS_GETDIRENTRIESATTR ideal-int pkg syscall (darwin-386), const SYS_GETDTABLESIZE ideal-int pkg syscall (darwin-386), const SYS_GETEGID ideal-int pkg syscall (darwin-386), const SYS_GETEUID ideal-int pkg syscall (darwin-386), const SYS_GETFH ideal-int pkg syscall (darwin-386), const SYS_GETFSSTAT ideal-int pkg syscall (darwin-386), const SYS_GETFSSTAT64 ideal-int pkg syscall (darwin-386), const SYS_GETGID ideal-int pkg syscall (darwin-386), const SYS_GETGROUPS ideal-int pkg syscall (darwin-386), const SYS_GETHOSTUUID ideal-int pkg syscall (darwin-386), const SYS_GETITIMER ideal-int pkg syscall (darwin-386), const SYS_GETLCID ideal-int pkg syscall (darwin-386), const SYS_GETLOGIN ideal-int pkg syscall (darwin-386), const SYS_GETPEERNAME ideal-int pkg syscall (darwin-386), const SYS_GETPGID ideal-int pkg syscall (darwin-386), const SYS_GETPGRP ideal-int pkg syscall (darwin-386), const SYS_GETPID ideal-int pkg syscall (darwin-386), const SYS_GETPPID ideal-int pkg syscall (darwin-386), const SYS_GETPRIORITY ideal-int pkg syscall (darwin-386), const SYS_GETRLIMIT ideal-int pkg syscall (darwin-386), const SYS_GETRUSAGE ideal-int pkg syscall (darwin-386), const SYS_GETSGROUPS ideal-int pkg syscall (darwin-386), const SYS_GETSID ideal-int pkg syscall (darwin-386), const SYS_GETSOCKNAME ideal-int pkg syscall (darwin-386), const SYS_GETSOCKOPT ideal-int pkg syscall (darwin-386), const SYS_GETTID ideal-int pkg syscall (darwin-386), const SYS_GETTIMEOFDAY ideal-int pkg syscall (darwin-386), const SYS_GETUID ideal-int pkg syscall (darwin-386), const SYS_GETWGROUPS ideal-int pkg syscall (darwin-386), const SYS_GETXATTR ideal-int pkg syscall (darwin-386), const SYS_IDENTITYSVC ideal-int pkg syscall (darwin-386), const SYS_INITGROUPS ideal-int pkg syscall (darwin-386), const SYS_IOCTL ideal-int pkg syscall (darwin-386), const SYS_IOPOLICYSYS ideal-int pkg syscall (darwin-386), const SYS_ISSETUGID ideal-int pkg syscall (darwin-386), const SYS_KDEBUG_TRACE ideal-int pkg syscall (darwin-386), const SYS_KEVENT ideal-int pkg syscall (darwin-386), const SYS_KEVENT64 ideal-int pkg syscall (darwin-386), const SYS_KILL ideal-int pkg syscall (darwin-386), const SYS_KQUEUE ideal-int pkg syscall (darwin-386), const SYS_LCHOWN ideal-int pkg syscall (darwin-386), const SYS_LINK ideal-int pkg syscall (darwin-386), const SYS_LIO_LISTIO ideal-int pkg syscall (darwin-386), const SYS_LISTEN ideal-int pkg syscall (darwin-386), const SYS_LISTXATTR ideal-int pkg syscall (darwin-386), const SYS_LSEEK ideal-int pkg syscall (darwin-386), const SYS_LSTAT ideal-int pkg syscall (darwin-386), const SYS_LSTAT64 ideal-int pkg syscall (darwin-386), const SYS_LSTAT64_EXTENDED ideal-int pkg syscall (darwin-386), const SYS_LSTATV ideal-int pkg syscall (darwin-386), const SYS_LSTAT_EXTENDED ideal-int pkg syscall (darwin-386), const SYS_MADVISE ideal-int pkg syscall (darwin-386), const SYS_MAXSYSCALL ideal-int pkg syscall (darwin-386), const SYS_MINCORE ideal-int pkg syscall (darwin-386), const SYS_MINHERIT ideal-int pkg syscall (darwin-386), const SYS_MKCOMPLEX ideal-int pkg syscall (darwin-386), const SYS_MKDIR ideal-int pkg syscall (darwin-386), const SYS_MKDIR_EXTENDED ideal-int pkg syscall (darwin-386), const SYS_MKFIFO ideal-int pkg syscall (darwin-386), const SYS_MKFIFO_EXTENDED ideal-int pkg syscall (darwin-386), const SYS_MKNOD ideal-int pkg syscall (darwin-386), const SYS_MLOCK ideal-int pkg syscall (darwin-386), const SYS_MLOCKALL ideal-int pkg syscall (darwin-386), const SYS_MMAP ideal-int pkg syscall (darwin-386), const SYS_MODWATCH ideal-int pkg syscall (darwin-386), const SYS_MOUNT ideal-int pkg syscall (darwin-386), const SYS_MPROTECT ideal-int pkg syscall (darwin-386), const SYS_MSGCTL ideal-int pkg syscall (darwin-386), const SYS_MSGGET ideal-int pkg syscall (darwin-386), const SYS_MSGRCV ideal-int pkg syscall (darwin-386), const SYS_MSGRCV_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_MSGSND ideal-int pkg syscall (darwin-386), const SYS_MSGSND_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_MSGSYS ideal-int pkg syscall (darwin-386), const SYS_MSYNC ideal-int pkg syscall (darwin-386), const SYS_MSYNC_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_MUNLOCK ideal-int pkg syscall (darwin-386), const SYS_MUNLOCKALL ideal-int pkg syscall (darwin-386), const SYS_MUNMAP ideal-int pkg syscall (darwin-386), const SYS_NFSCLNT ideal-int pkg syscall (darwin-386), const SYS_NFSSVC ideal-int pkg syscall (darwin-386), const SYS_OPEN ideal-int pkg syscall (darwin-386), const SYS_OPEN_EXTENDED ideal-int pkg syscall (darwin-386), const SYS_OPEN_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_PATHCONF ideal-int pkg syscall (darwin-386), const SYS_PID_HIBERNATE ideal-int pkg syscall (darwin-386), const SYS_PID_RESUME ideal-int pkg syscall (darwin-386), const SYS_PID_SHUTDOWN_SOCKETS ideal-int pkg syscall (darwin-386), const SYS_PID_SUSPEND ideal-int pkg syscall (darwin-386), const SYS_PIPE ideal-int pkg syscall (darwin-386), const SYS_POLL ideal-int pkg syscall (darwin-386), const SYS_POLL_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_POSIX_SPAWN ideal-int pkg syscall (darwin-386), const SYS_PREAD ideal-int pkg syscall (darwin-386), const SYS_PREAD_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_PROCESS_POLICY ideal-int pkg syscall (darwin-386), const SYS_PROC_INFO ideal-int pkg syscall (darwin-386), const SYS_PROFIL ideal-int pkg syscall (darwin-386), const SYS_PSYNCH_CVBROAD ideal-int pkg syscall (darwin-386), const SYS_PSYNCH_CVCLRPREPOST ideal-int pkg syscall (darwin-386), const SYS_PSYNCH_CVSIGNAL ideal-int pkg syscall (darwin-386), const SYS_PSYNCH_CVWAIT ideal-int pkg syscall (darwin-386), const SYS_PSYNCH_MUTEXDROP ideal-int pkg syscall (darwin-386), const SYS_PSYNCH_MUTEXWAIT ideal-int pkg syscall (darwin-386), const SYS_PSYNCH_RW_DOWNGRADE ideal-int pkg syscall (darwin-386), const SYS_PSYNCH_RW_LONGRDLOCK ideal-int pkg syscall (darwin-386), const SYS_PSYNCH_RW_RDLOCK ideal-int pkg syscall (darwin-386), const SYS_PSYNCH_RW_UNLOCK ideal-int pkg syscall (darwin-386), const SYS_PSYNCH_RW_UNLOCK2 ideal-int pkg syscall (darwin-386), const SYS_PSYNCH_RW_UPGRADE ideal-int pkg syscall (darwin-386), const SYS_PSYNCH_RW_WRLOCK ideal-int pkg syscall (darwin-386), const SYS_PSYNCH_RW_YIELDWRLOCK ideal-int pkg syscall (darwin-386), const SYS_PTRACE ideal-int pkg syscall (darwin-386), const SYS_PWRITE ideal-int pkg syscall (darwin-386), const SYS_PWRITE_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_QUOTACTL ideal-int pkg syscall (darwin-386), const SYS_READ ideal-int pkg syscall (darwin-386), const SYS_READLINK ideal-int pkg syscall (darwin-386), const SYS_READV ideal-int pkg syscall (darwin-386), const SYS_READV_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_READ_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_REBOOT ideal-int pkg syscall (darwin-386), const SYS_RECVFROM ideal-int pkg syscall (darwin-386), const SYS_RECVFROM_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_RECVMSG ideal-int pkg syscall (darwin-386), const SYS_RECVMSG_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_REMOVEXATTR ideal-int pkg syscall (darwin-386), const SYS_RENAME ideal-int pkg syscall (darwin-386), const SYS_REVOKE ideal-int pkg syscall (darwin-386), const SYS_RMDIR ideal-int pkg syscall (darwin-386), const SYS_SEARCHFS ideal-int pkg syscall (darwin-386), const SYS_SELECT ideal-int pkg syscall (darwin-386), const SYS_SELECT_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_SEMCTL ideal-int pkg syscall (darwin-386), const SYS_SEMGET ideal-int pkg syscall (darwin-386), const SYS_SEMOP ideal-int pkg syscall (darwin-386), const SYS_SEMSYS ideal-int pkg syscall (darwin-386), const SYS_SEM_CLOSE ideal-int pkg syscall (darwin-386), const SYS_SEM_DESTROY ideal-int pkg syscall (darwin-386), const SYS_SEM_GETVALUE ideal-int pkg syscall (darwin-386), const SYS_SEM_INIT ideal-int pkg syscall (darwin-386), const SYS_SEM_OPEN ideal-int pkg syscall (darwin-386), const SYS_SEM_POST ideal-int pkg syscall (darwin-386), const SYS_SEM_TRYWAIT ideal-int pkg syscall (darwin-386), const SYS_SEM_UNLINK ideal-int pkg syscall (darwin-386), const SYS_SEM_WAIT ideal-int pkg syscall (darwin-386), const SYS_SEM_WAIT_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_SENDFILE ideal-int pkg syscall (darwin-386), const SYS_SENDMSG ideal-int pkg syscall (darwin-386), const SYS_SENDMSG_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_SENDTO ideal-int pkg syscall (darwin-386), const SYS_SENDTO_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_SETATTRLIST ideal-int pkg syscall (darwin-386), const SYS_SETAUDIT ideal-int pkg syscall (darwin-386), const SYS_SETAUDIT_ADDR ideal-int pkg syscall (darwin-386), const SYS_SETAUID ideal-int pkg syscall (darwin-386), const SYS_SETEGID ideal-int pkg syscall (darwin-386), const SYS_SETEUID ideal-int pkg syscall (darwin-386), const SYS_SETGID ideal-int pkg syscall (darwin-386), const SYS_SETGROUPS ideal-int pkg syscall (darwin-386), const SYS_SETITIMER ideal-int pkg syscall (darwin-386), const SYS_SETLCID ideal-int pkg syscall (darwin-386), const SYS_SETLOGIN ideal-int pkg syscall (darwin-386), const SYS_SETPGID ideal-int pkg syscall (darwin-386), const SYS_SETPRIORITY ideal-int pkg syscall (darwin-386), const SYS_SETPRIVEXEC ideal-int pkg syscall (darwin-386), const SYS_SETREGID ideal-int pkg syscall (darwin-386), const SYS_SETREUID ideal-int pkg syscall (darwin-386), const SYS_SETRLIMIT ideal-int pkg syscall (darwin-386), const SYS_SETSGROUPS ideal-int pkg syscall (darwin-386), const SYS_SETSID ideal-int pkg syscall (darwin-386), const SYS_SETSOCKOPT ideal-int pkg syscall (darwin-386), const SYS_SETTID ideal-int pkg syscall (darwin-386), const SYS_SETTID_WITH_PID ideal-int pkg syscall (darwin-386), const SYS_SETTIMEOFDAY ideal-int pkg syscall (darwin-386), const SYS_SETUID ideal-int pkg syscall (darwin-386), const SYS_SETWGROUPS ideal-int pkg syscall (darwin-386), const SYS_SETXATTR ideal-int pkg syscall (darwin-386), const SYS_SHARED_REGION_CHECK_NP ideal-int pkg syscall (darwin-386), const SYS_SHARED_REGION_MAP_AND_SLIDE_NP ideal-int pkg syscall (darwin-386), const SYS_SHMAT ideal-int pkg syscall (darwin-386), const SYS_SHMCTL ideal-int pkg syscall (darwin-386), const SYS_SHMDT ideal-int pkg syscall (darwin-386), const SYS_SHMGET ideal-int pkg syscall (darwin-386), const SYS_SHMSYS ideal-int pkg syscall (darwin-386), const SYS_SHM_OPEN ideal-int pkg syscall (darwin-386), const SYS_SHM_UNLINK ideal-int pkg syscall (darwin-386), const SYS_SHUTDOWN ideal-int pkg syscall (darwin-386), const SYS_SIGACTION ideal-int pkg syscall (darwin-386), const SYS_SIGALTSTACK ideal-int pkg syscall (darwin-386), const SYS_SIGPENDING ideal-int pkg syscall (darwin-386), const SYS_SIGPROCMASK ideal-int pkg syscall (darwin-386), const SYS_SIGRETURN ideal-int pkg syscall (darwin-386), const SYS_SIGSUSPEND ideal-int pkg syscall (darwin-386), const SYS_SIGSUSPEND_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_SOCKET ideal-int pkg syscall (darwin-386), const SYS_SOCKETPAIR ideal-int pkg syscall (darwin-386), const SYS_STACK_SNAPSHOT ideal-int pkg syscall (darwin-386), const SYS_STAT ideal-int pkg syscall (darwin-386), const SYS_STAT64 ideal-int pkg syscall (darwin-386), const SYS_STAT64_EXTENDED ideal-int pkg syscall (darwin-386), const SYS_STATFS ideal-int pkg syscall (darwin-386), const SYS_STATFS64 ideal-int pkg syscall (darwin-386), const SYS_STATV ideal-int pkg syscall (darwin-386), const SYS_STAT_EXTENDED ideal-int pkg syscall (darwin-386), const SYS_SWAPON ideal-int pkg syscall (darwin-386), const SYS_SYMLINK ideal-int pkg syscall (darwin-386), const SYS_SYNC ideal-int pkg syscall (darwin-386), const SYS_SYSCALL ideal-int pkg syscall (darwin-386), const SYS_THREAD_SELFID ideal-int pkg syscall (darwin-386), const SYS_TRUNCATE ideal-int pkg syscall (darwin-386), const SYS_UMASK ideal-int pkg syscall (darwin-386), const SYS_UMASK_EXTENDED ideal-int pkg syscall (darwin-386), const SYS_UNDELETE ideal-int pkg syscall (darwin-386), const SYS_UNLINK ideal-int pkg syscall (darwin-386), const SYS_UNMOUNT ideal-int pkg syscall (darwin-386), const SYS_UTIMES ideal-int pkg syscall (darwin-386), const SYS_VFORK ideal-int pkg syscall (darwin-386), const SYS_VM_PRESSURE_MONITOR ideal-int pkg syscall (darwin-386), const SYS_WAIT4 ideal-int pkg syscall (darwin-386), const SYS_WAIT4_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_WAITEVENT ideal-int pkg syscall (darwin-386), const SYS_WAITID ideal-int pkg syscall (darwin-386), const SYS_WAITID_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_WATCHEVENT ideal-int pkg syscall (darwin-386), const SYS_WORKQ_KERNRETURN ideal-int pkg syscall (darwin-386), const SYS_WORKQ_OPEN ideal-int pkg syscall (darwin-386), const SYS_WRITE ideal-int pkg syscall (darwin-386), const SYS_WRITEV ideal-int pkg syscall (darwin-386), const SYS_WRITEV_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS_WRITE_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS___DISABLE_THREADSIGNAL ideal-int pkg syscall (darwin-386), const SYS___MAC_EXECVE ideal-int pkg syscall (darwin-386), const SYS___MAC_GETFSSTAT ideal-int pkg syscall (darwin-386), const SYS___MAC_GET_FD ideal-int pkg syscall (darwin-386), const SYS___MAC_GET_FILE ideal-int pkg syscall (darwin-386), const SYS___MAC_GET_LCID ideal-int pkg syscall (darwin-386), const SYS___MAC_GET_LCTX ideal-int pkg syscall (darwin-386), const SYS___MAC_GET_LINK ideal-int pkg syscall (darwin-386), const SYS___MAC_GET_MOUNT ideal-int pkg syscall (darwin-386), const SYS___MAC_GET_PID ideal-int pkg syscall (darwin-386), const SYS___MAC_GET_PROC ideal-int pkg syscall (darwin-386), const SYS___MAC_MOUNT ideal-int pkg syscall (darwin-386), const SYS___MAC_SET_FD ideal-int pkg syscall (darwin-386), const SYS___MAC_SET_FILE ideal-int pkg syscall (darwin-386), const SYS___MAC_SET_LCTX ideal-int pkg syscall (darwin-386), const SYS___MAC_SET_LINK ideal-int pkg syscall (darwin-386), const SYS___MAC_SET_PROC ideal-int pkg syscall (darwin-386), const SYS___MAC_SYSCALL ideal-int pkg syscall (darwin-386), const SYS___OLD_SEMWAIT_SIGNAL ideal-int pkg syscall (darwin-386), const SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS___PTHREAD_CANCELED ideal-int pkg syscall (darwin-386), const SYS___PTHREAD_CHDIR ideal-int pkg syscall (darwin-386), const SYS___PTHREAD_FCHDIR ideal-int pkg syscall (darwin-386), const SYS___PTHREAD_KILL ideal-int pkg syscall (darwin-386), const SYS___PTHREAD_MARKCANCEL ideal-int pkg syscall (darwin-386), const SYS___PTHREAD_SIGMASK ideal-int pkg syscall (darwin-386), const SYS___SEMWAIT_SIGNAL ideal-int pkg syscall (darwin-386), const SYS___SEMWAIT_SIGNAL_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS___SIGWAIT ideal-int pkg syscall (darwin-386), const SYS___SIGWAIT_NOCANCEL ideal-int pkg syscall (darwin-386), const SYS___SYSCTL ideal-int pkg syscall (darwin-386), const S_IEXEC ideal-int pkg syscall (darwin-386), const S_IFWHT ideal-int pkg syscall (darwin-386), const S_IREAD ideal-int pkg syscall (darwin-386), const S_IRGRP ideal-int pkg syscall (darwin-386), const S_IROTH ideal-int pkg syscall (darwin-386), const S_IRWXG ideal-int pkg syscall (darwin-386), const S_IRWXO ideal-int pkg syscall (darwin-386), const S_IRWXU ideal-int pkg syscall (darwin-386), const S_ISTXT ideal-int pkg syscall (darwin-386), const S_IWGRP ideal-int pkg syscall (darwin-386), const S_IWOTH ideal-int pkg syscall (darwin-386), const S_IWRITE ideal-int pkg syscall (darwin-386), const S_IXGRP ideal-int pkg syscall (darwin-386), const S_IXOTH ideal-int pkg syscall (darwin-386), const SizeofBpfHdr ideal-int pkg syscall (darwin-386), const SizeofBpfInsn ideal-int pkg syscall (darwin-386), const SizeofBpfProgram ideal-int pkg syscall (darwin-386), const SizeofBpfStat ideal-int pkg syscall (darwin-386), const SizeofBpfVersion ideal-int pkg syscall (darwin-386), const SizeofCmsghdr ideal-int pkg syscall (darwin-386), const SizeofIPMreq ideal-int pkg syscall (darwin-386), const SizeofIPv6Mreq ideal-int pkg syscall (darwin-386), const SizeofIfData ideal-int pkg syscall (darwin-386), const SizeofIfMsghdr ideal-int pkg syscall (darwin-386), const SizeofIfaMsghdr ideal-int pkg syscall (darwin-386), const SizeofIfmaMsghdr ideal-int pkg syscall (darwin-386), const SizeofIfmaMsghdr2 ideal-int pkg syscall (darwin-386), const SizeofInet6Pktinfo ideal-int pkg syscall (darwin-386), const SizeofLinger ideal-int pkg syscall (darwin-386), const SizeofMsghdr ideal-int pkg syscall (darwin-386), const SizeofRtMetrics ideal-int pkg syscall (darwin-386), const SizeofRtMsghdr ideal-int pkg syscall (darwin-386), const SizeofSockaddrAny ideal-int pkg syscall (darwin-386), const SizeofSockaddrDatalink ideal-int pkg syscall (darwin-386), const SizeofSockaddrInet4 ideal-int pkg syscall (darwin-386), const SizeofSockaddrInet6 ideal-int pkg syscall (darwin-386), const SizeofSockaddrUnix ideal-int pkg syscall (darwin-386), const TCP_CONNECTIONTIMEOUT ideal-int pkg syscall (darwin-386), const TCP_KEEPALIVE ideal-int pkg syscall (darwin-386), const TCP_MAXHLEN ideal-int pkg syscall (darwin-386), const TCP_MAXOLEN ideal-int pkg syscall (darwin-386), const TCP_MAXSEG ideal-int pkg syscall (darwin-386), const TCP_MAXWIN ideal-int pkg syscall (darwin-386), const TCP_MAX_SACK ideal-int pkg syscall (darwin-386), const TCP_MAX_WINSHIFT ideal-int pkg syscall (darwin-386), const TCP_MINMSS ideal-int pkg syscall (darwin-386), const TCP_MINMSSOVERLOAD ideal-int pkg syscall (darwin-386), const TCP_MSS ideal-int pkg syscall (darwin-386), const TCP_NOOPT ideal-int pkg syscall (darwin-386), const TCP_NOPUSH ideal-int pkg syscall (darwin-386), const TCP_RXT_CONNDROPTIME ideal-int pkg syscall (darwin-386), const TCP_RXT_FINDROP ideal-int pkg syscall (darwin-386), const TIOCCBRK ideal-int pkg syscall (darwin-386), const TIOCCDTR ideal-int pkg syscall (darwin-386), const TIOCCONS ideal-int pkg syscall (darwin-386), const TIOCDCDTIMESTAMP ideal-int pkg syscall (darwin-386), const TIOCDRAIN ideal-int pkg syscall (darwin-386), const TIOCDSIMICROCODE ideal-int pkg syscall (darwin-386), const TIOCEXCL ideal-int pkg syscall (darwin-386), const TIOCEXT ideal-int pkg syscall (darwin-386), const TIOCFLUSH ideal-int pkg syscall (darwin-386), const TIOCGDRAINWAIT ideal-int pkg syscall (darwin-386), const TIOCGETA ideal-int pkg syscall (darwin-386), const TIOCGETD ideal-int pkg syscall (darwin-386), const TIOCGPGRP ideal-int pkg syscall (darwin-386), const TIOCGWINSZ ideal-int pkg syscall (darwin-386), const TIOCIXOFF ideal-int pkg syscall (darwin-386), const TIOCIXON ideal-int pkg syscall (darwin-386), const TIOCMBIC ideal-int pkg syscall (darwin-386), const TIOCMBIS ideal-int pkg syscall (darwin-386), const TIOCMGDTRWAIT ideal-int pkg syscall (darwin-386), const TIOCMGET ideal-int pkg syscall (darwin-386), const TIOCMODG ideal-int pkg syscall (darwin-386), const TIOCMODS ideal-int pkg syscall (darwin-386), const TIOCMSDTRWAIT ideal-int pkg syscall (darwin-386), const TIOCMSET ideal-int pkg syscall (darwin-386), const TIOCM_CAR ideal-int pkg syscall (darwin-386), const TIOCM_CD ideal-int pkg syscall (darwin-386), const TIOCM_CTS ideal-int pkg syscall (darwin-386), const TIOCM_DSR ideal-int pkg syscall (darwin-386), const TIOCM_DTR ideal-int pkg syscall (darwin-386), const TIOCM_LE ideal-int pkg syscall (darwin-386), const TIOCM_RI ideal-int pkg syscall (darwin-386), const TIOCM_RNG ideal-int pkg syscall (darwin-386), const TIOCM_RTS ideal-int pkg syscall (darwin-386), const TIOCM_SR ideal-int pkg syscall (darwin-386), const TIOCM_ST ideal-int pkg syscall (darwin-386), const TIOCNOTTY ideal-int pkg syscall (darwin-386), const TIOCNXCL ideal-int pkg syscall (darwin-386), const TIOCOUTQ ideal-int pkg syscall (darwin-386), const TIOCPKT ideal-int pkg syscall (darwin-386), const TIOCPKT_DATA ideal-int pkg syscall (darwin-386), const TIOCPKT_DOSTOP ideal-int pkg syscall (darwin-386), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (darwin-386), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (darwin-386), const TIOCPKT_IOCTL ideal-int pkg syscall (darwin-386), const TIOCPKT_NOSTOP ideal-int pkg syscall (darwin-386), const TIOCPKT_START ideal-int pkg syscall (darwin-386), const TIOCPKT_STOP ideal-int pkg syscall (darwin-386), const TIOCPTYGNAME ideal-int pkg syscall (darwin-386), const TIOCPTYGRANT ideal-int pkg syscall (darwin-386), const TIOCPTYUNLK ideal-int pkg syscall (darwin-386), const TIOCREMOTE ideal-int pkg syscall (darwin-386), const TIOCSBRK ideal-int pkg syscall (darwin-386), const TIOCSCONS ideal-int pkg syscall (darwin-386), const TIOCSCTTY ideal-int pkg syscall (darwin-386), const TIOCSDRAINWAIT ideal-int pkg syscall (darwin-386), const TIOCSDTR ideal-int pkg syscall (darwin-386), const TIOCSETA ideal-int pkg syscall (darwin-386), const TIOCSETAF ideal-int pkg syscall (darwin-386), const TIOCSETAW ideal-int pkg syscall (darwin-386), const TIOCSETD ideal-int pkg syscall (darwin-386), const TIOCSIG ideal-int pkg syscall (darwin-386), const TIOCSPGRP ideal-int pkg syscall (darwin-386), const TIOCSTART ideal-int pkg syscall (darwin-386), const TIOCSTAT ideal-int pkg syscall (darwin-386), const TIOCSTI ideal-int pkg syscall (darwin-386), const TIOCSTOP ideal-int pkg syscall (darwin-386), const TIOCSWINSZ ideal-int pkg syscall (darwin-386), const TIOCTIMESTAMP ideal-int pkg syscall (darwin-386), const TIOCUCNTL ideal-int pkg syscall (darwin-386), const WCONTINUED ideal-int pkg syscall (darwin-386), const WCOREFLAG ideal-int pkg syscall (darwin-386), const WEXITED ideal-int pkg syscall (darwin-386), const WNOHANG ideal-int pkg syscall (darwin-386), const WNOWAIT ideal-int pkg syscall (darwin-386), const WORDSIZE ideal-int pkg syscall (darwin-386), const WSTOPPED ideal-int pkg syscall (darwin-386), const WUNTRACED ideal-int pkg syscall (darwin-386), func Accept(int) (int, Sockaddr, error) pkg syscall (darwin-386), func Access(string, uint32) error pkg syscall (darwin-386), func Adjtime(*Timeval, *Timeval) error pkg syscall (darwin-386), func Bind(int, Sockaddr) error pkg syscall (darwin-386), func BpfBuflen(int) (int, error) pkg syscall (darwin-386), func BpfDatalink(int) (int, error) pkg syscall (darwin-386), func BpfHeadercmpl(int) (int, error) pkg syscall (darwin-386), func BpfInterface(int, string) (string, error) pkg syscall (darwin-386), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (darwin-386), func BpfStats(int) (*BpfStat, error) pkg syscall (darwin-386), func BpfStmt(int, int) *BpfInsn pkg syscall (darwin-386), func BpfTimeout(int) (*Timeval, error) pkg syscall (darwin-386), func CheckBpfVersion(int) error pkg syscall (darwin-386), func Chflags(string, int) error pkg syscall (darwin-386), func Chroot(string) error pkg syscall (darwin-386), func Close(int) error pkg syscall (darwin-386), func CloseOnExec(int) pkg syscall (darwin-386), func CmsgLen(int) int pkg syscall (darwin-386), func CmsgSpace(int) int pkg syscall (darwin-386), func Connect(int, Sockaddr) error pkg syscall (darwin-386), func Dup(int) (int, error) pkg syscall (darwin-386), func Dup2(int, int) error pkg syscall (darwin-386), func Exchangedata(string, string, int) error pkg syscall (darwin-386), func Fchdir(int) error pkg syscall (darwin-386), func Fchflags(string, int) error pkg syscall (darwin-386), func Fchmod(int, uint32) error pkg syscall (darwin-386), func Fchown(int, int, int) error pkg syscall (darwin-386), func Flock(int, int) error pkg syscall (darwin-386), func FlushBpf(int) error pkg syscall (darwin-386), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (darwin-386), func Fpathconf(int, int) (int, error) pkg syscall (darwin-386), func Fstat(int, *Stat_t) error pkg syscall (darwin-386), func Fstatfs(int, *Statfs_t) error pkg syscall (darwin-386), func Fsync(int) error pkg syscall (darwin-386), func Ftruncate(int, int64) error pkg syscall (darwin-386), func Futimes(int, []Timeval) error pkg syscall (darwin-386), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (darwin-386), func Getdtablesize() int pkg syscall (darwin-386), func Getfsstat([]Statfs_t, int) (int, error) pkg syscall (darwin-386), func Getpeername(int) (Sockaddr, error) pkg syscall (darwin-386), func Getpgid(int) (int, error) pkg syscall (darwin-386), func Getpgrp() int pkg syscall (darwin-386), func Getpriority(int, int) (int, error) pkg syscall (darwin-386), func Getrlimit(int, *Rlimit) error pkg syscall (darwin-386), func Getrusage(int, *Rusage) error pkg syscall (darwin-386), func Getsid(int) (int, error) pkg syscall (darwin-386), func Getsockname(int) (Sockaddr, error) pkg syscall (darwin-386), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (darwin-386), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (darwin-386), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (darwin-386), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (darwin-386), func GetsockoptInt(int, int, int) (int, error) pkg syscall (darwin-386), func Issetugid() bool pkg syscall (darwin-386), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (darwin-386), func Kill(int, Signal) error pkg syscall (darwin-386), func Kqueue() (int, error) pkg syscall (darwin-386), func Listen(int, int) error pkg syscall (darwin-386), func Lstat(string, *Stat_t) error pkg syscall (darwin-386), func Mkfifo(string, uint32) error pkg syscall (darwin-386), func Mknod(string, uint32, int) error pkg syscall (darwin-386), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (darwin-386), func Munmap([]uint8) error pkg syscall (darwin-386), func NsecToTimespec(int64) Timespec pkg syscall (darwin-386), func Open(string, int, uint32) (int, error) pkg syscall (darwin-386), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (darwin-386), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (darwin-386), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (darwin-386), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (darwin-386), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (darwin-386), func Pathconf(string, int) (int, error) pkg syscall (darwin-386), func Pipe([]int) error pkg syscall (darwin-386), func Pread(int, []uint8, int64) (int, error) pkg syscall (darwin-386), func PtraceAttach(int) error pkg syscall (darwin-386), func PtraceDetach(int) error pkg syscall (darwin-386), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (darwin-386), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-386), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-386), func Read(int, []uint8) (int, error) pkg syscall (darwin-386), func ReadDirent(int, []uint8) (int, error) pkg syscall (darwin-386), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (darwin-386), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (darwin-386), func Revoke(string) error pkg syscall (darwin-386), func RouteRIB(int, int) ([]uint8, error) pkg syscall (darwin-386), func Seek(int, int64, int) (int64, error) pkg syscall (darwin-386), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (darwin-386), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (darwin-386), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (darwin-386), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (darwin-386), func SetBpf(int, []BpfInsn) error pkg syscall (darwin-386), func SetBpfBuflen(int, int) (int, error) pkg syscall (darwin-386), func SetBpfDatalink(int, int) (int, error) pkg syscall (darwin-386), func SetBpfHeadercmpl(int, int) error pkg syscall (darwin-386), func SetBpfImmediate(int, int) error pkg syscall (darwin-386), func SetBpfInterface(int, string) error pkg syscall (darwin-386), func SetBpfPromisc(int, int) error pkg syscall (darwin-386), func SetBpfTimeout(int, *Timeval) error pkg syscall (darwin-386), func SetKevent(*Kevent_t, int, int, int) pkg syscall (darwin-386), func SetNonblock(int, bool) error pkg syscall (darwin-386), func Setegid(int) error pkg syscall (darwin-386), func Seteuid(int) error pkg syscall (darwin-386), func Setgid(int) error pkg syscall (darwin-386), func Setgroups([]int) error pkg syscall (darwin-386), func Setlogin(string) error pkg syscall (darwin-386), func Setpgid(int, int) error pkg syscall (darwin-386), func Setpriority(int, int, int) error pkg syscall (darwin-386), func Setprivexec(int) error pkg syscall (darwin-386), func Setregid(int, int) error pkg syscall (darwin-386), func Setreuid(int, int) error pkg syscall (darwin-386), func Setrlimit(int, *Rlimit) error pkg syscall (darwin-386), func Setsid() (int, error) pkg syscall (darwin-386), func SetsockoptByte(int, int, int, uint8) error pkg syscall (darwin-386), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (darwin-386), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (darwin-386), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (darwin-386), func SetsockoptInt(int, int, int, int) error pkg syscall (darwin-386), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (darwin-386), func SetsockoptString(int, int, int, string) error pkg syscall (darwin-386), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (darwin-386), func Settimeofday(*Timeval) error pkg syscall (darwin-386), func Setuid(int) error pkg syscall (darwin-386), func Shutdown(int, int) error pkg syscall (darwin-386), func Socket(int, int, int) (int, error) pkg syscall (darwin-386), func Socketpair(int, int, int) ([2]int, error) pkg syscall (darwin-386), func Stat(string, *Stat_t) error pkg syscall (darwin-386), func Statfs(string, *Statfs_t) error pkg syscall (darwin-386), func StringSlicePtr([]string) []*uint8 pkg syscall (darwin-386), func Sync() error pkg syscall (darwin-386), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-386), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-386), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-386), func Sysctl(string) (string, error) pkg syscall (darwin-386), func SysctlUint32(string) (uint32, error) pkg syscall (darwin-386), func TimespecToNsec(Timespec) int64 pkg syscall (darwin-386), func TimevalToNsec(Timeval) int64 pkg syscall (darwin-386), func Truncate(string, int64) error pkg syscall (darwin-386), func Umask(int) int pkg syscall (darwin-386), func Undelete(string) error pkg syscall (darwin-386), func UnixRights(...int) []uint8 pkg syscall (darwin-386), func Unmount(string, int) error pkg syscall (darwin-386), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (darwin-386), func Write(int, []uint8) (int, error) pkg syscall (darwin-386), method (*Cmsghdr) SetLen(int) pkg syscall (darwin-386), method (*Iovec) SetLen(int) pkg syscall (darwin-386), method (*Msghdr) SetControllen(int) pkg syscall (darwin-386), type BpfHdr struct pkg syscall (darwin-386), type BpfHdr struct, Caplen uint32 pkg syscall (darwin-386), type BpfHdr struct, Datalen uint32 pkg syscall (darwin-386), type BpfHdr struct, Hdrlen uint16 pkg syscall (darwin-386), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-386), type BpfHdr struct, Tstamp Timeval pkg syscall (darwin-386), type BpfInsn struct pkg syscall (darwin-386), type BpfInsn struct, Code uint16 pkg syscall (darwin-386), type BpfInsn struct, Jf uint8 pkg syscall (darwin-386), type BpfInsn struct, Jt uint8 pkg syscall (darwin-386), type BpfInsn struct, K uint32 pkg syscall (darwin-386), type BpfProgram struct pkg syscall (darwin-386), type BpfProgram struct, Insns *BpfInsn pkg syscall (darwin-386), type BpfProgram struct, Len uint32 pkg syscall (darwin-386), type BpfStat struct pkg syscall (darwin-386), type BpfStat struct, Drop uint32 pkg syscall (darwin-386), type BpfStat struct, Recv uint32 pkg syscall (darwin-386), type BpfVersion struct pkg syscall (darwin-386), type BpfVersion struct, Major uint16 pkg syscall (darwin-386), type BpfVersion struct, Minor uint16 pkg syscall (darwin-386), type Cmsghdr struct pkg syscall (darwin-386), type Cmsghdr struct, Len uint32 pkg syscall (darwin-386), type Cmsghdr struct, Level int32 pkg syscall (darwin-386), type Cmsghdr struct, Type int32 pkg syscall (darwin-386), type Credential struct pkg syscall (darwin-386), type Credential struct, Gid uint32 pkg syscall (darwin-386), type Credential struct, Groups []uint32 pkg syscall (darwin-386), type Credential struct, Uid uint32 pkg syscall (darwin-386), type Dirent struct pkg syscall (darwin-386), type Dirent struct, Ino uint64 pkg syscall (darwin-386), type Dirent struct, Name [1024]int8 pkg syscall (darwin-386), type Dirent struct, Namlen uint16 pkg syscall (darwin-386), type Dirent struct, Pad_cgo_0 [3]uint8 pkg syscall (darwin-386), type Dirent struct, Reclen uint16 pkg syscall (darwin-386), type Dirent struct, Seekoff uint64 pkg syscall (darwin-386), type Dirent struct, Type uint8 pkg syscall (darwin-386), type Fbootstraptransfer_t struct pkg syscall (darwin-386), type Fbootstraptransfer_t struct, Buffer *uint8 pkg syscall (darwin-386), type Fbootstraptransfer_t struct, Length uint32 pkg syscall (darwin-386), type Fbootstraptransfer_t struct, Offset int64 pkg syscall (darwin-386), type FdSet struct pkg syscall (darwin-386), type FdSet struct, Bits [32]int32 pkg syscall (darwin-386), type Flock_t struct pkg syscall (darwin-386), type Flock_t struct, Len int64 pkg syscall (darwin-386), type Flock_t struct, Pid int32 pkg syscall (darwin-386), type Flock_t struct, Start int64 pkg syscall (darwin-386), type Flock_t struct, Type int16 pkg syscall (darwin-386), type Flock_t struct, Whence int16 pkg syscall (darwin-386), type Fsid struct pkg syscall (darwin-386), type Fsid struct, Val [2]int32 pkg syscall (darwin-386), type Fstore_t struct pkg syscall (darwin-386), type Fstore_t struct, Bytesalloc int64 pkg syscall (darwin-386), type Fstore_t struct, Flags uint32 pkg syscall (darwin-386), type Fstore_t struct, Length int64 pkg syscall (darwin-386), type Fstore_t struct, Offset int64 pkg syscall (darwin-386), type Fstore_t struct, Posmode int32 pkg syscall (darwin-386), type IfData struct pkg syscall (darwin-386), type IfData struct, Addrlen uint8 pkg syscall (darwin-386), type IfData struct, Baudrate uint32 pkg syscall (darwin-386), type IfData struct, Collisions uint32 pkg syscall (darwin-386), type IfData struct, Hdrlen uint8 pkg syscall (darwin-386), type IfData struct, Hwassist uint32 pkg syscall (darwin-386), type IfData struct, Ibytes uint32 pkg syscall (darwin-386), type IfData struct, Ierrors uint32 pkg syscall (darwin-386), type IfData struct, Imcasts uint32 pkg syscall (darwin-386), type IfData struct, Ipackets uint32 pkg syscall (darwin-386), type IfData struct, Iqdrops uint32 pkg syscall (darwin-386), type IfData struct, Lastchange Timeval pkg syscall (darwin-386), type IfData struct, Metric uint32 pkg syscall (darwin-386), type IfData struct, Mtu uint32 pkg syscall (darwin-386), type IfData struct, Noproto uint32 pkg syscall (darwin-386), type IfData struct, Obytes uint32 pkg syscall (darwin-386), type IfData struct, Oerrors uint32 pkg syscall (darwin-386), type IfData struct, Omcasts uint32 pkg syscall (darwin-386), type IfData struct, Opackets uint32 pkg syscall (darwin-386), type IfData struct, Physical uint8 pkg syscall (darwin-386), type IfData struct, Recvquota uint8 pkg syscall (darwin-386), type IfData struct, Recvtiming uint32 pkg syscall (darwin-386), type IfData struct, Reserved1 uint32 pkg syscall (darwin-386), type IfData struct, Reserved2 uint32 pkg syscall (darwin-386), type IfData struct, Type uint8 pkg syscall (darwin-386), type IfData struct, Typelen uint8 pkg syscall (darwin-386), type IfData struct, Unused1 uint8 pkg syscall (darwin-386), type IfData struct, Unused2 uint32 pkg syscall (darwin-386), type IfData struct, Xmitquota uint8 pkg syscall (darwin-386), type IfData struct, Xmittiming uint32 pkg syscall (darwin-386), type IfMsghdr struct pkg syscall (darwin-386), type IfMsghdr struct, Addrs int32 pkg syscall (darwin-386), type IfMsghdr struct, Data IfData pkg syscall (darwin-386), type IfMsghdr struct, Flags int32 pkg syscall (darwin-386), type IfMsghdr struct, Index uint16 pkg syscall (darwin-386), type IfMsghdr struct, Msglen uint16 pkg syscall (darwin-386), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-386), type IfMsghdr struct, Type uint8 pkg syscall (darwin-386), type IfMsghdr struct, Version uint8 pkg syscall (darwin-386), type IfaMsghdr struct pkg syscall (darwin-386), type IfaMsghdr struct, Addrs int32 pkg syscall (darwin-386), type IfaMsghdr struct, Flags int32 pkg syscall (darwin-386), type IfaMsghdr struct, Index uint16 pkg syscall (darwin-386), type IfaMsghdr struct, Metric int32 pkg syscall (darwin-386), type IfaMsghdr struct, Msglen uint16 pkg syscall (darwin-386), type IfaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-386), type IfaMsghdr struct, Type uint8 pkg syscall (darwin-386), type IfaMsghdr struct, Version uint8 pkg syscall (darwin-386), type IfmaMsghdr struct pkg syscall (darwin-386), type IfmaMsghdr struct, Addrs int32 pkg syscall (darwin-386), type IfmaMsghdr struct, Flags int32 pkg syscall (darwin-386), type IfmaMsghdr struct, Index uint16 pkg syscall (darwin-386), type IfmaMsghdr struct, Msglen uint16 pkg syscall (darwin-386), type IfmaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-386), type IfmaMsghdr struct, Type uint8 pkg syscall (darwin-386), type IfmaMsghdr struct, Version uint8 pkg syscall (darwin-386), type IfmaMsghdr2 struct pkg syscall (darwin-386), type IfmaMsghdr2 struct, Addrs int32 pkg syscall (darwin-386), type IfmaMsghdr2 struct, Flags int32 pkg syscall (darwin-386), type IfmaMsghdr2 struct, Index uint16 pkg syscall (darwin-386), type IfmaMsghdr2 struct, Msglen uint16 pkg syscall (darwin-386), type IfmaMsghdr2 struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-386), type IfmaMsghdr2 struct, Refcount int32 pkg syscall (darwin-386), type IfmaMsghdr2 struct, Type uint8 pkg syscall (darwin-386), type IfmaMsghdr2 struct, Version uint8 pkg syscall (darwin-386), type Inet6Pktinfo struct pkg syscall (darwin-386), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (darwin-386), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (darwin-386), type InterfaceAddrMessage struct pkg syscall (darwin-386), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (darwin-386), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (darwin-386), type InterfaceMessage struct pkg syscall (darwin-386), type InterfaceMessage struct, Data []uint8 pkg syscall (darwin-386), type InterfaceMessage struct, Header IfMsghdr pkg syscall (darwin-386), type InterfaceMulticastAddrMessage struct pkg syscall (darwin-386), type InterfaceMulticastAddrMessage struct, Data []uint8 pkg syscall (darwin-386), type InterfaceMulticastAddrMessage struct, Header IfmaMsghdr2 pkg syscall (darwin-386), type Iovec struct pkg syscall (darwin-386), type Iovec struct, Base *uint8 pkg syscall (darwin-386), type Iovec struct, Len uint32 pkg syscall (darwin-386), type Kevent_t struct pkg syscall (darwin-386), type Kevent_t struct, Data int32 pkg syscall (darwin-386), type Kevent_t struct, Fflags uint32 pkg syscall (darwin-386), type Kevent_t struct, Filter int16 pkg syscall (darwin-386), type Kevent_t struct, Flags uint16 pkg syscall (darwin-386), type Kevent_t struct, Ident uint32 pkg syscall (darwin-386), type Kevent_t struct, Udata *uint8 pkg syscall (darwin-386), type Log2phys_t struct pkg syscall (darwin-386), type Log2phys_t struct, Contigbytes int64 pkg syscall (darwin-386), type Log2phys_t struct, Devoffset int64 pkg syscall (darwin-386), type Log2phys_t struct, Flags uint32 pkg syscall (darwin-386), type Msghdr struct pkg syscall (darwin-386), type Msghdr struct, Control *uint8 pkg syscall (darwin-386), type Msghdr struct, Controllen uint32 pkg syscall (darwin-386), type Msghdr struct, Flags int32 pkg syscall (darwin-386), type Msghdr struct, Iov *Iovec pkg syscall (darwin-386), type Msghdr struct, Iovlen int32 pkg syscall (darwin-386), type Msghdr struct, Name *uint8 pkg syscall (darwin-386), type Msghdr struct, Namelen uint32 pkg syscall (darwin-386), type Radvisory_t struct pkg syscall (darwin-386), type Radvisory_t struct, Count int32 pkg syscall (darwin-386), type Radvisory_t struct, Offset int64 pkg syscall (darwin-386), type RawSockaddr struct, Data [14]int8 pkg syscall (darwin-386), type RawSockaddr struct, Family uint8 pkg syscall (darwin-386), type RawSockaddr struct, Len uint8 pkg syscall (darwin-386), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (darwin-386), type RawSockaddrDatalink struct pkg syscall (darwin-386), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (darwin-386), type RawSockaddrDatalink struct, Data [12]int8 pkg syscall (darwin-386), type RawSockaddrDatalink struct, Family uint8 pkg syscall (darwin-386), type RawSockaddrDatalink struct, Index uint16 pkg syscall (darwin-386), type RawSockaddrDatalink struct, Len uint8 pkg syscall (darwin-386), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (darwin-386), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (darwin-386), type RawSockaddrDatalink struct, Type uint8 pkg syscall (darwin-386), type RawSockaddrInet4 struct, Family uint8 pkg syscall (darwin-386), type RawSockaddrInet4 struct, Len uint8 pkg syscall (darwin-386), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (darwin-386), type RawSockaddrInet6 struct pkg syscall (darwin-386), type RawSockaddrInet6 struct, Addr [16]uint8 pkg syscall (darwin-386), type RawSockaddrInet6 struct, Family uint8 pkg syscall (darwin-386), type RawSockaddrInet6 struct, Flowinfo uint32 pkg syscall (darwin-386), type RawSockaddrInet6 struct, Len uint8 pkg syscall (darwin-386), type RawSockaddrInet6 struct, Port uint16 pkg syscall (darwin-386), type RawSockaddrInet6 struct, Scope_id uint32 pkg syscall (darwin-386), type RawSockaddrUnix struct pkg syscall (darwin-386), type RawSockaddrUnix struct, Family uint8 pkg syscall (darwin-386), type RawSockaddrUnix struct, Len uint8 pkg syscall (darwin-386), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (darwin-386), type Rlimit struct pkg syscall (darwin-386), type Rlimit struct, Cur uint64 pkg syscall (darwin-386), type Rlimit struct, Max uint64 pkg syscall (darwin-386), type RouteMessage struct pkg syscall (darwin-386), type RouteMessage struct, Data []uint8 pkg syscall (darwin-386), type RouteMessage struct, Header RtMsghdr pkg syscall (darwin-386), type RoutingMessage interface, unexported methods pkg syscall (darwin-386), type RtMetrics struct pkg syscall (darwin-386), type RtMetrics struct, Expire int32 pkg syscall (darwin-386), type RtMetrics struct, Filler [4]uint32 pkg syscall (darwin-386), type RtMetrics struct, Hopcount uint32 pkg syscall (darwin-386), type RtMetrics struct, Locks uint32 pkg syscall (darwin-386), type RtMetrics struct, Mtu uint32 pkg syscall (darwin-386), type RtMetrics struct, Pksent uint32 pkg syscall (darwin-386), type RtMetrics struct, Recvpipe uint32 pkg syscall (darwin-386), type RtMetrics struct, Rtt uint32 pkg syscall (darwin-386), type RtMetrics struct, Rttvar uint32 pkg syscall (darwin-386), type RtMetrics struct, Sendpipe uint32 pkg syscall (darwin-386), type RtMetrics struct, Ssthresh uint32 pkg syscall (darwin-386), type RtMsghdr struct pkg syscall (darwin-386), type RtMsghdr struct, Addrs int32 pkg syscall (darwin-386), type RtMsghdr struct, Errno int32 pkg syscall (darwin-386), type RtMsghdr struct, Flags int32 pkg syscall (darwin-386), type RtMsghdr struct, Index uint16 pkg syscall (darwin-386), type RtMsghdr struct, Inits uint32 pkg syscall (darwin-386), type RtMsghdr struct, Msglen uint16 pkg syscall (darwin-386), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-386), type RtMsghdr struct, Pid int32 pkg syscall (darwin-386), type RtMsghdr struct, Rmx RtMetrics pkg syscall (darwin-386), type RtMsghdr struct, Seq int32 pkg syscall (darwin-386), type RtMsghdr struct, Type uint8 pkg syscall (darwin-386), type RtMsghdr struct, Use int32 pkg syscall (darwin-386), type RtMsghdr struct, Version uint8 pkg syscall (darwin-386), type Rusage struct, Idrss int32 pkg syscall (darwin-386), type Rusage struct, Inblock int32 pkg syscall (darwin-386), type Rusage struct, Isrss int32 pkg syscall (darwin-386), type Rusage struct, Ixrss int32 pkg syscall (darwin-386), type Rusage struct, Majflt int32 pkg syscall (darwin-386), type Rusage struct, Maxrss int32 pkg syscall (darwin-386), type Rusage struct, Minflt int32 pkg syscall (darwin-386), type Rusage struct, Msgrcv int32 pkg syscall (darwin-386), type Rusage struct, Msgsnd int32 pkg syscall (darwin-386), type Rusage struct, Nivcsw int32 pkg syscall (darwin-386), type Rusage struct, Nsignals int32 pkg syscall (darwin-386), type Rusage struct, Nswap int32 pkg syscall (darwin-386), type Rusage struct, Nvcsw int32 pkg syscall (darwin-386), type Rusage struct, Oublock int32 pkg syscall (darwin-386), type Rusage struct, Stime Timeval pkg syscall (darwin-386), type Rusage struct, Utime Timeval pkg syscall (darwin-386), type SockaddrDatalink struct pkg syscall (darwin-386), type SockaddrDatalink struct, Alen uint8 pkg syscall (darwin-386), type SockaddrDatalink struct, Data [12]int8 pkg syscall (darwin-386), type SockaddrDatalink struct, Family uint8 pkg syscall (darwin-386), type SockaddrDatalink struct, Index uint16 pkg syscall (darwin-386), type SockaddrDatalink struct, Len uint8 pkg syscall (darwin-386), type SockaddrDatalink struct, Nlen uint8 pkg syscall (darwin-386), type SockaddrDatalink struct, Slen uint8 pkg syscall (darwin-386), type SockaddrDatalink struct, Type uint8 pkg syscall (darwin-386), type SocketControlMessage struct pkg syscall (darwin-386), type SocketControlMessage struct, Data []uint8 pkg syscall (darwin-386), type SocketControlMessage struct, Header Cmsghdr pkg syscall (darwin-386), type Stat_t struct pkg syscall (darwin-386), type Stat_t struct, Atimespec Timespec pkg syscall (darwin-386), type Stat_t struct, Birthtimespec Timespec pkg syscall (darwin-386), type Stat_t struct, Blksize int32 pkg syscall (darwin-386), type Stat_t struct, Blocks int64 pkg syscall (darwin-386), type Stat_t struct, Ctimespec Timespec pkg syscall (darwin-386), type Stat_t struct, Dev int32 pkg syscall (darwin-386), type Stat_t struct, Flags uint32 pkg syscall (darwin-386), type Stat_t struct, Gen uint32 pkg syscall (darwin-386), type Stat_t struct, Gid uint32 pkg syscall (darwin-386), type Stat_t struct, Ino uint64 pkg syscall (darwin-386), type Stat_t struct, Lspare int32 pkg syscall (darwin-386), type Stat_t struct, Mode uint16 pkg syscall (darwin-386), type Stat_t struct, Mtimespec Timespec pkg syscall (darwin-386), type Stat_t struct, Nlink uint16 pkg syscall (darwin-386), type Stat_t struct, Qspare [2]int64 pkg syscall (darwin-386), type Stat_t struct, Rdev int32 pkg syscall (darwin-386), type Stat_t struct, Size int64 pkg syscall (darwin-386), type Stat_t struct, Uid uint32 pkg syscall (darwin-386), type Statfs_t struct pkg syscall (darwin-386), type Statfs_t struct, Bavail uint64 pkg syscall (darwin-386), type Statfs_t struct, Bfree uint64 pkg syscall (darwin-386), type Statfs_t struct, Blocks uint64 pkg syscall (darwin-386), type Statfs_t struct, Bsize uint32 pkg syscall (darwin-386), type Statfs_t struct, Ffree uint64 pkg syscall (darwin-386), type Statfs_t struct, Files uint64 pkg syscall (darwin-386), type Statfs_t struct, Flags uint32 pkg syscall (darwin-386), type Statfs_t struct, Fsid Fsid pkg syscall (darwin-386), type Statfs_t struct, Fssubtype uint32 pkg syscall (darwin-386), type Statfs_t struct, Fstypename [16]int8 pkg syscall (darwin-386), type Statfs_t struct, Iosize int32 pkg syscall (darwin-386), type Statfs_t struct, Mntfromname [1024]int8 pkg syscall (darwin-386), type Statfs_t struct, Mntonname [1024]int8 pkg syscall (darwin-386), type Statfs_t struct, Owner uint32 pkg syscall (darwin-386), type Statfs_t struct, Reserved [8]uint32 pkg syscall (darwin-386), type Statfs_t struct, Type uint32 pkg syscall (darwin-386), type SysProcAttr struct, Chroot string pkg syscall (darwin-386), type SysProcAttr struct, Credential *Credential pkg syscall (darwin-386), type SysProcAttr struct, Noctty bool pkg syscall (darwin-386), type SysProcAttr struct, Ptrace bool pkg syscall (darwin-386), type SysProcAttr struct, Setctty bool pkg syscall (darwin-386), type SysProcAttr struct, Setpgid bool pkg syscall (darwin-386), type SysProcAttr struct, Setsid bool pkg syscall (darwin-386), type Timespec struct, Nsec int32 pkg syscall (darwin-386), type Timespec struct, Sec int32 pkg syscall (darwin-386), type Timeval struct, Sec int32 pkg syscall (darwin-386), type Timeval struct, Usec int32 pkg syscall (darwin-386), type Timeval32 [0]uint8 pkg syscall (darwin-386), type WaitStatus uint32 pkg syscall (darwin-386), var Stderr int pkg syscall (darwin-386), var Stdin int pkg syscall (darwin-386), var Stdout int pkg syscall (darwin-386-cgo), const AF_APPLETALK ideal-int pkg syscall (darwin-386-cgo), const AF_CCITT ideal-int pkg syscall (darwin-386-cgo), const AF_CHAOS ideal-int pkg syscall (darwin-386-cgo), const AF_CNT ideal-int pkg syscall (darwin-386-cgo), const AF_COIP ideal-int pkg syscall (darwin-386-cgo), const AF_DATAKIT ideal-int pkg syscall (darwin-386-cgo), const AF_DECnet ideal-int pkg syscall (darwin-386-cgo), const AF_DLI ideal-int pkg syscall (darwin-386-cgo), const AF_E164 ideal-int pkg syscall (darwin-386-cgo), const AF_ECMA ideal-int pkg syscall (darwin-386-cgo), const AF_HYLINK ideal-int pkg syscall (darwin-386-cgo), const AF_IEEE80211 ideal-int pkg syscall (darwin-386-cgo), const AF_IMPLINK ideal-int pkg syscall (darwin-386-cgo), const AF_IPX ideal-int pkg syscall (darwin-386-cgo), const AF_ISDN ideal-int pkg syscall (darwin-386-cgo), const AF_ISO ideal-int pkg syscall (darwin-386-cgo), const AF_LAT ideal-int pkg syscall (darwin-386-cgo), const AF_LINK ideal-int pkg syscall (darwin-386-cgo), const AF_LOCAL ideal-int pkg syscall (darwin-386-cgo), const AF_MAX ideal-int pkg syscall (darwin-386-cgo), const AF_NATM ideal-int pkg syscall (darwin-386-cgo), const AF_NDRV ideal-int pkg syscall (darwin-386-cgo), const AF_NETBIOS ideal-int pkg syscall (darwin-386-cgo), const AF_NS ideal-int pkg syscall (darwin-386-cgo), const AF_OSI ideal-int pkg syscall (darwin-386-cgo), const AF_PPP ideal-int pkg syscall (darwin-386-cgo), const AF_PUP ideal-int pkg syscall (darwin-386-cgo), const AF_RESERVED_36 ideal-int pkg syscall (darwin-386-cgo), const AF_ROUTE ideal-int pkg syscall (darwin-386-cgo), const AF_SIP ideal-int pkg syscall (darwin-386-cgo), const AF_SNA ideal-int pkg syscall (darwin-386-cgo), const AF_SYSTEM ideal-int pkg syscall (darwin-386-cgo), const BIOCFLUSH ideal-int pkg syscall (darwin-386-cgo), const BIOCGBLEN ideal-int pkg syscall (darwin-386-cgo), const BIOCGDLT ideal-int pkg syscall (darwin-386-cgo), const BIOCGDLTLIST ideal-int pkg syscall (darwin-386-cgo), const BIOCGETIF ideal-int pkg syscall (darwin-386-cgo), const BIOCGHDRCMPLT ideal-int pkg syscall (darwin-386-cgo), const BIOCGRSIG ideal-int pkg syscall (darwin-386-cgo), const BIOCGRTIMEOUT ideal-int pkg syscall (darwin-386-cgo), const BIOCGSEESENT ideal-int pkg syscall (darwin-386-cgo), const BIOCGSTATS ideal-int pkg syscall (darwin-386-cgo), const BIOCIMMEDIATE ideal-int pkg syscall (darwin-386-cgo), const BIOCPROMISC ideal-int pkg syscall (darwin-386-cgo), const BIOCSBLEN ideal-int pkg syscall (darwin-386-cgo), const BIOCSDLT ideal-int pkg syscall (darwin-386-cgo), const BIOCSETF ideal-int pkg syscall (darwin-386-cgo), const BIOCSETIF ideal-int pkg syscall (darwin-386-cgo), const BIOCSHDRCMPLT ideal-int pkg syscall (darwin-386-cgo), const BIOCSRSIG ideal-int pkg syscall (darwin-386-cgo), const BIOCSRTIMEOUT ideal-int pkg syscall (darwin-386-cgo), const BIOCSSEESENT ideal-int pkg syscall (darwin-386-cgo), const BIOCVERSION ideal-int pkg syscall (darwin-386-cgo), const BPF_A ideal-int pkg syscall (darwin-386-cgo), const BPF_ABS ideal-int pkg syscall (darwin-386-cgo), const BPF_ADD ideal-int pkg syscall (darwin-386-cgo), const BPF_ALIGNMENT ideal-int pkg syscall (darwin-386-cgo), const BPF_ALU ideal-int pkg syscall (darwin-386-cgo), const BPF_AND ideal-int pkg syscall (darwin-386-cgo), const BPF_B ideal-int pkg syscall (darwin-386-cgo), const BPF_DIV ideal-int pkg syscall (darwin-386-cgo), const BPF_H ideal-int pkg syscall (darwin-386-cgo), const BPF_IMM ideal-int pkg syscall (darwin-386-cgo), const BPF_IND ideal-int pkg syscall (darwin-386-cgo), const BPF_JA ideal-int pkg syscall (darwin-386-cgo), const BPF_JEQ ideal-int pkg syscall (darwin-386-cgo), const BPF_JGE ideal-int pkg syscall (darwin-386-cgo), const BPF_JGT ideal-int pkg syscall (darwin-386-cgo), const BPF_JMP ideal-int pkg syscall (darwin-386-cgo), const BPF_JSET ideal-int pkg syscall (darwin-386-cgo), const BPF_K ideal-int pkg syscall (darwin-386-cgo), const BPF_LD ideal-int pkg syscall (darwin-386-cgo), const BPF_LDX ideal-int pkg syscall (darwin-386-cgo), const BPF_LEN ideal-int pkg syscall (darwin-386-cgo), const BPF_LSH ideal-int pkg syscall (darwin-386-cgo), const BPF_MAJOR_VERSION ideal-int pkg syscall (darwin-386-cgo), const BPF_MAXBUFSIZE ideal-int pkg syscall (darwin-386-cgo), const BPF_MAXINSNS ideal-int pkg syscall (darwin-386-cgo), const BPF_MEM ideal-int pkg syscall (darwin-386-cgo), const BPF_MEMWORDS ideal-int pkg syscall (darwin-386-cgo), const BPF_MINBUFSIZE ideal-int pkg syscall (darwin-386-cgo), const BPF_MINOR_VERSION ideal-int pkg syscall (darwin-386-cgo), const BPF_MISC ideal-int pkg syscall (darwin-386-cgo), const BPF_MSH ideal-int pkg syscall (darwin-386-cgo), const BPF_MUL ideal-int pkg syscall (darwin-386-cgo), const BPF_NEG ideal-int pkg syscall (darwin-386-cgo), const BPF_OR ideal-int pkg syscall (darwin-386-cgo), const BPF_RELEASE ideal-int pkg syscall (darwin-386-cgo), const BPF_RET ideal-int pkg syscall (darwin-386-cgo), const BPF_RSH ideal-int pkg syscall (darwin-386-cgo), const BPF_ST ideal-int pkg syscall (darwin-386-cgo), const BPF_STX ideal-int pkg syscall (darwin-386-cgo), const BPF_SUB ideal-int pkg syscall (darwin-386-cgo), const BPF_TAX ideal-int pkg syscall (darwin-386-cgo), const BPF_TXA ideal-int pkg syscall (darwin-386-cgo), const BPF_W ideal-int pkg syscall (darwin-386-cgo), const BPF_X ideal-int pkg syscall (darwin-386-cgo), const CTL_MAXNAME ideal-int pkg syscall (darwin-386-cgo), const CTL_NET ideal-int pkg syscall (darwin-386-cgo), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (darwin-386-cgo), const DLT_ARCNET ideal-int pkg syscall (darwin-386-cgo), const DLT_ATM_CLIP ideal-int pkg syscall (darwin-386-cgo), const DLT_ATM_RFC1483 ideal-int pkg syscall (darwin-386-cgo), const DLT_AX25 ideal-int pkg syscall (darwin-386-cgo), const DLT_CHAOS ideal-int pkg syscall (darwin-386-cgo), const DLT_CHDLC ideal-int pkg syscall (darwin-386-cgo), const DLT_C_HDLC ideal-int pkg syscall (darwin-386-cgo), const DLT_EN10MB ideal-int pkg syscall (darwin-386-cgo), const DLT_EN3MB ideal-int pkg syscall (darwin-386-cgo), const DLT_FDDI ideal-int pkg syscall (darwin-386-cgo), const DLT_IEEE802 ideal-int pkg syscall (darwin-386-cgo), const DLT_IEEE802_11 ideal-int pkg syscall (darwin-386-cgo), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (darwin-386-cgo), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (darwin-386-cgo), const DLT_LINUX_SLL ideal-int pkg syscall (darwin-386-cgo), const DLT_LOOP ideal-int pkg syscall (darwin-386-cgo), const DLT_NULL ideal-int pkg syscall (darwin-386-cgo), const DLT_PFLOG ideal-int pkg syscall (darwin-386-cgo), const DLT_PFSYNC ideal-int pkg syscall (darwin-386-cgo), const DLT_PPP ideal-int pkg syscall (darwin-386-cgo), const DLT_PPP_BSDOS ideal-int pkg syscall (darwin-386-cgo), const DLT_PPP_SERIAL ideal-int pkg syscall (darwin-386-cgo), const DLT_PRONET ideal-int pkg syscall (darwin-386-cgo), const DLT_RAW ideal-int pkg syscall (darwin-386-cgo), const DLT_SLIP ideal-int pkg syscall (darwin-386-cgo), const DLT_SLIP_BSDOS ideal-int pkg syscall (darwin-386-cgo), const DT_BLK ideal-int pkg syscall (darwin-386-cgo), const DT_CHR ideal-int pkg syscall (darwin-386-cgo), const DT_DIR ideal-int pkg syscall (darwin-386-cgo), const DT_FIFO ideal-int pkg syscall (darwin-386-cgo), const DT_LNK ideal-int pkg syscall (darwin-386-cgo), const DT_REG ideal-int pkg syscall (darwin-386-cgo), const DT_SOCK ideal-int pkg syscall (darwin-386-cgo), const DT_UNKNOWN ideal-int pkg syscall (darwin-386-cgo), const DT_WHT ideal-int pkg syscall (darwin-386-cgo), const EAUTH Errno pkg syscall (darwin-386-cgo), const EBADARCH Errno pkg syscall (darwin-386-cgo), const EBADEXEC Errno pkg syscall (darwin-386-cgo), const EBADMACHO Errno pkg syscall (darwin-386-cgo), const EBADMSG Errno pkg syscall (darwin-386-cgo), const EBADRPC Errno pkg syscall (darwin-386-cgo), const ECHO ideal-int pkg syscall (darwin-386-cgo), const ECHOCTL ideal-int pkg syscall (darwin-386-cgo), const ECHOE ideal-int pkg syscall (darwin-386-cgo), const ECHOK ideal-int pkg syscall (darwin-386-cgo), const ECHOKE ideal-int pkg syscall (darwin-386-cgo), const ECHONL ideal-int pkg syscall (darwin-386-cgo), const ECHOPRT ideal-int pkg syscall (darwin-386-cgo), const EDEVERR Errno pkg syscall (darwin-386-cgo), const EFTYPE Errno pkg syscall (darwin-386-cgo), const ELAST Errno pkg syscall (darwin-386-cgo), const EMULTIHOP Errno pkg syscall (darwin-386-cgo), const ENEEDAUTH Errno pkg syscall (darwin-386-cgo), const ENOATTR Errno pkg syscall (darwin-386-cgo), const ENODATA Errno pkg syscall (darwin-386-cgo), const ENOLINK Errno pkg syscall (darwin-386-cgo), const ENOPOLICY Errno pkg syscall (darwin-386-cgo), const ENOSR Errno pkg syscall (darwin-386-cgo), const ENOSTR Errno pkg syscall (darwin-386-cgo), const ENOTRECOVERABLE Errno pkg syscall (darwin-386-cgo), const EOWNERDEAD Errno pkg syscall (darwin-386-cgo), const EPROCLIM Errno pkg syscall (darwin-386-cgo), const EPROCUNAVAIL Errno pkg syscall (darwin-386-cgo), const EPROGMISMATCH Errno pkg syscall (darwin-386-cgo), const EPROGUNAVAIL Errno pkg syscall (darwin-386-cgo), const EPROTO Errno pkg syscall (darwin-386-cgo), const EPWROFF Errno pkg syscall (darwin-386-cgo), const ERPCMISMATCH Errno pkg syscall (darwin-386-cgo), const ESHLIBVERS Errno pkg syscall (darwin-386-cgo), const ETIME Errno pkg syscall (darwin-386-cgo), const EVFILT_AIO ideal-int pkg syscall (darwin-386-cgo), const EVFILT_FS ideal-int pkg syscall (darwin-386-cgo), const EVFILT_MACHPORT ideal-int pkg syscall (darwin-386-cgo), const EVFILT_PROC ideal-int pkg syscall (darwin-386-cgo), const EVFILT_READ ideal-int pkg syscall (darwin-386-cgo), const EVFILT_SIGNAL ideal-int pkg syscall (darwin-386-cgo), const EVFILT_SYSCOUNT ideal-int pkg syscall (darwin-386-cgo), const EVFILT_THREADMARKER ideal-int pkg syscall (darwin-386-cgo), const EVFILT_TIMER ideal-int pkg syscall (darwin-386-cgo), const EVFILT_USER ideal-int pkg syscall (darwin-386-cgo), const EVFILT_VM ideal-int pkg syscall (darwin-386-cgo), const EVFILT_VNODE ideal-int pkg syscall (darwin-386-cgo), const EVFILT_WRITE ideal-int pkg syscall (darwin-386-cgo), const EV_ADD ideal-int pkg syscall (darwin-386-cgo), const EV_CLEAR ideal-int pkg syscall (darwin-386-cgo), const EV_DELETE ideal-int pkg syscall (darwin-386-cgo), const EV_DISABLE ideal-int pkg syscall (darwin-386-cgo), const EV_DISPATCH ideal-int pkg syscall (darwin-386-cgo), const EV_ENABLE ideal-int pkg syscall (darwin-386-cgo), const EV_EOF ideal-int pkg syscall (darwin-386-cgo), const EV_ERROR ideal-int pkg syscall (darwin-386-cgo), const EV_FLAG0 ideal-int pkg syscall (darwin-386-cgo), const EV_FLAG1 ideal-int pkg syscall (darwin-386-cgo), const EV_ONESHOT ideal-int pkg syscall (darwin-386-cgo), const EV_OOBAND ideal-int pkg syscall (darwin-386-cgo), const EV_POLL ideal-int pkg syscall (darwin-386-cgo), const EV_RECEIPT ideal-int pkg syscall (darwin-386-cgo), const EV_SYSFLAGS ideal-int pkg syscall (darwin-386-cgo), const EXTA ideal-int pkg syscall (darwin-386-cgo), const EXTB ideal-int pkg syscall (darwin-386-cgo), const EXTPROC ideal-int pkg syscall (darwin-386-cgo), const FD_CLOEXEC ideal-int pkg syscall (darwin-386-cgo), const FD_SETSIZE ideal-int pkg syscall (darwin-386-cgo), const F_ADDFILESIGS ideal-int pkg syscall (darwin-386-cgo), const F_ADDSIGS ideal-int pkg syscall (darwin-386-cgo), const F_ALLOCATEALL ideal-int pkg syscall (darwin-386-cgo), const F_ALLOCATECONTIG ideal-int pkg syscall (darwin-386-cgo), const F_CHKCLEAN ideal-int pkg syscall (darwin-386-cgo), const F_DUPFD ideal-int pkg syscall (darwin-386-cgo), const F_DUPFD_CLOEXEC ideal-int pkg syscall (darwin-386-cgo), const F_FLUSH_DATA ideal-int pkg syscall (darwin-386-cgo), const F_FREEZE_FS ideal-int pkg syscall (darwin-386-cgo), const F_FULLFSYNC ideal-int pkg syscall (darwin-386-cgo), const F_GETFD ideal-int pkg syscall (darwin-386-cgo), const F_GETFL ideal-int pkg syscall (darwin-386-cgo), const F_GETLK ideal-int pkg syscall (darwin-386-cgo), const F_GETLKPID ideal-int pkg syscall (darwin-386-cgo), const F_GETNOSIGPIPE ideal-int pkg syscall (darwin-386-cgo), const F_GETOWN ideal-int pkg syscall (darwin-386-cgo), const F_GETPATH ideal-int pkg syscall (darwin-386-cgo), const F_GETPATH_MTMINFO ideal-int pkg syscall (darwin-386-cgo), const F_GETPROTECTIONCLASS ideal-int pkg syscall (darwin-386-cgo), const F_GLOBAL_NOCACHE ideal-int pkg syscall (darwin-386-cgo), const F_LOG2PHYS ideal-int pkg syscall (darwin-386-cgo), const F_LOG2PHYS_EXT ideal-int pkg syscall (darwin-386-cgo), const F_MARKDEPENDENCY ideal-int pkg syscall (darwin-386-cgo), const F_NOCACHE ideal-int pkg syscall (darwin-386-cgo), const F_NODIRECT ideal-int pkg syscall (darwin-386-cgo), const F_OK ideal-int pkg syscall (darwin-386-cgo), const F_PATHPKG_CHECK ideal-int pkg syscall (darwin-386-cgo), const F_PEOFPOSMODE ideal-int pkg syscall (darwin-386-cgo), const F_PREALLOCATE ideal-int pkg syscall (darwin-386-cgo), const F_RDADVISE ideal-int pkg syscall (darwin-386-cgo), const F_RDAHEAD ideal-int pkg syscall (darwin-386-cgo), const F_RDLCK ideal-int pkg syscall (darwin-386-cgo), const F_READBOOTSTRAP ideal-int pkg syscall (darwin-386-cgo), const F_SETBACKINGSTORE ideal-int pkg syscall (darwin-386-cgo), const F_SETFD ideal-int pkg syscall (darwin-386-cgo), const F_SETFL ideal-int pkg syscall (darwin-386-cgo), const F_SETLK ideal-int pkg syscall (darwin-386-cgo), const F_SETLKW ideal-int pkg syscall (darwin-386-cgo), const F_SETNOSIGPIPE ideal-int pkg syscall (darwin-386-cgo), const F_SETOWN ideal-int pkg syscall (darwin-386-cgo), const F_SETPROTECTIONCLASS ideal-int pkg syscall (darwin-386-cgo), const F_SETSIZE ideal-int pkg syscall (darwin-386-cgo), const F_THAW_FS ideal-int pkg syscall (darwin-386-cgo), const F_UNLCK ideal-int pkg syscall (darwin-386-cgo), const F_VOLPOSMODE ideal-int pkg syscall (darwin-386-cgo), const F_WRITEBOOTSTRAP ideal-int pkg syscall (darwin-386-cgo), const F_WRLCK ideal-int pkg syscall (darwin-386-cgo), const IFF_ALLMULTI ideal-int pkg syscall (darwin-386-cgo), const IFF_ALTPHYS ideal-int pkg syscall (darwin-386-cgo), const IFF_DEBUG ideal-int pkg syscall (darwin-386-cgo), const IFF_LINK0 ideal-int pkg syscall (darwin-386-cgo), const IFF_LINK1 ideal-int pkg syscall (darwin-386-cgo), const IFF_LINK2 ideal-int pkg syscall (darwin-386-cgo), const IFF_NOARP ideal-int pkg syscall (darwin-386-cgo), const IFF_NOTRAILERS ideal-int pkg syscall (darwin-386-cgo), const IFF_OACTIVE ideal-int pkg syscall (darwin-386-cgo), const IFF_POINTOPOINT ideal-int pkg syscall (darwin-386-cgo), const IFF_PROMISC ideal-int pkg syscall (darwin-386-cgo), const IFF_RUNNING ideal-int pkg syscall (darwin-386-cgo), const IFF_SIMPLEX ideal-int pkg syscall (darwin-386-cgo), const IFNAMSIZ ideal-int pkg syscall (darwin-386-cgo), const IFT_1822 ideal-int pkg syscall (darwin-386-cgo), const IFT_AAL5 ideal-int pkg syscall (darwin-386-cgo), const IFT_ARCNET ideal-int pkg syscall (darwin-386-cgo), const IFT_ARCNETPLUS ideal-int pkg syscall (darwin-386-cgo), const IFT_ATM ideal-int pkg syscall (darwin-386-cgo), const IFT_BRIDGE ideal-int pkg syscall (darwin-386-cgo), const IFT_CARP ideal-int pkg syscall (darwin-386-cgo), const IFT_CELLULAR ideal-int pkg syscall (darwin-386-cgo), const IFT_CEPT ideal-int pkg syscall (darwin-386-cgo), const IFT_DS3 ideal-int pkg syscall (darwin-386-cgo), const IFT_ENC ideal-int pkg syscall (darwin-386-cgo), const IFT_EON ideal-int pkg syscall (darwin-386-cgo), const IFT_ETHER ideal-int pkg syscall (darwin-386-cgo), const IFT_FAITH ideal-int pkg syscall (darwin-386-cgo), const IFT_FDDI ideal-int pkg syscall (darwin-386-cgo), const IFT_FRELAY ideal-int pkg syscall (darwin-386-cgo), const IFT_FRELAYDCE ideal-int pkg syscall (darwin-386-cgo), const IFT_GIF ideal-int pkg syscall (darwin-386-cgo), const IFT_HDH1822 ideal-int pkg syscall (darwin-386-cgo), const IFT_HIPPI ideal-int pkg syscall (darwin-386-cgo), const IFT_HSSI ideal-int pkg syscall (darwin-386-cgo), const IFT_HY ideal-int pkg syscall (darwin-386-cgo), const IFT_IEEE1394 ideal-int pkg syscall (darwin-386-cgo), const IFT_IEEE8023ADLAG ideal-int pkg syscall (darwin-386-cgo), const IFT_ISDNBASIC ideal-int pkg syscall (darwin-386-cgo), const IFT_ISDNPRIMARY ideal-int pkg syscall (darwin-386-cgo), const IFT_ISO88022LLC ideal-int pkg syscall (darwin-386-cgo), const IFT_ISO88023 ideal-int pkg syscall (darwin-386-cgo), const IFT_ISO88024 ideal-int pkg syscall (darwin-386-cgo), const IFT_ISO88025 ideal-int pkg syscall (darwin-386-cgo), const IFT_ISO88026 ideal-int pkg syscall (darwin-386-cgo), const IFT_L2VLAN ideal-int pkg syscall (darwin-386-cgo), const IFT_LAPB ideal-int pkg syscall (darwin-386-cgo), const IFT_LOCALTALK ideal-int pkg syscall (darwin-386-cgo), const IFT_LOOP ideal-int pkg syscall (darwin-386-cgo), const IFT_MIOX25 ideal-int pkg syscall (darwin-386-cgo), const IFT_MODEM ideal-int pkg syscall (darwin-386-cgo), const IFT_NSIP ideal-int pkg syscall (darwin-386-cgo), const IFT_OTHER ideal-int pkg syscall (darwin-386-cgo), const IFT_P10 ideal-int pkg syscall (darwin-386-cgo), const IFT_P80 ideal-int pkg syscall (darwin-386-cgo), const IFT_PARA ideal-int pkg syscall (darwin-386-cgo), const IFT_PDP ideal-int pkg syscall (darwin-386-cgo), const IFT_PFLOG ideal-int pkg syscall (darwin-386-cgo), const IFT_PFSYNC ideal-int pkg syscall (darwin-386-cgo), const IFT_PPP ideal-int pkg syscall (darwin-386-cgo), const IFT_PROPMUX ideal-int pkg syscall (darwin-386-cgo), const IFT_PROPVIRTUAL ideal-int pkg syscall (darwin-386-cgo), const IFT_PTPSERIAL ideal-int pkg syscall (darwin-386-cgo), const IFT_RS232 ideal-int pkg syscall (darwin-386-cgo), const IFT_SDLC ideal-int pkg syscall (darwin-386-cgo), const IFT_SIP ideal-int pkg syscall (darwin-386-cgo), const IFT_SLIP ideal-int pkg syscall (darwin-386-cgo), const IFT_SMDSDXI ideal-int pkg syscall (darwin-386-cgo), const IFT_SMDSICIP ideal-int pkg syscall (darwin-386-cgo), const IFT_SONET ideal-int pkg syscall (darwin-386-cgo), const IFT_SONETPATH ideal-int pkg syscall (darwin-386-cgo), const IFT_SONETVT ideal-int pkg syscall (darwin-386-cgo), const IFT_STARLAN ideal-int pkg syscall (darwin-386-cgo), const IFT_STF ideal-int pkg syscall (darwin-386-cgo), const IFT_T1 ideal-int pkg syscall (darwin-386-cgo), const IFT_ULTRA ideal-int pkg syscall (darwin-386-cgo), const IFT_V35 ideal-int pkg syscall (darwin-386-cgo), const IFT_X25 ideal-int pkg syscall (darwin-386-cgo), const IFT_X25DDN ideal-int pkg syscall (darwin-386-cgo), const IFT_X25PLE ideal-int pkg syscall (darwin-386-cgo), const IFT_XETHER ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSA_HOST ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSA_MAX ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSA_NET ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSA_NSHIFT ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSB_HOST ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSB_MAX ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSB_NET ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSB_NSHIFT ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSC_HOST ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSC_NET ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSC_NSHIFT ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSD_HOST ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSD_NET ideal-int pkg syscall (darwin-386-cgo), const IN_CLASSD_NSHIFT ideal-int pkg syscall (darwin-386-cgo), const IN_LINKLOCALNETNUM ideal-int pkg syscall (darwin-386-cgo), const IN_LOOPBACKNET ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_3PC ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_ADFS ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_AH ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_AHIP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_APES ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_ARGUS ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_AX25 ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_BHA ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_BLT ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_BRSATMON ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_CFTP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_CHAOS ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_CMTP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_CPHB ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_CPNX ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_DDP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_DGP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_DIVERT ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_DONE ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_DSTOPTS ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_EGP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_EMCON ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_ENCAP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_EON ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_ESP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_ETHERIP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_FRAGMENT ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_GGP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_GMTP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_GRE ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_HELLO ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_HMP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_HOPOPTS ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_ICMP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_ICMPV6 ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_IDP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_IDPR ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_IDRP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_IGMP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_IGP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_IGRP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_IL ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_INLSP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_INP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_IPCOMP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_IPCV ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_IPEIP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_IPIP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_IPPC ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_IPV4 ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_IRTP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_KRYPTOLAN ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_LARP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_LEAF1 ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_LEAF2 ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_MAX ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_MAXID ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_MEAS ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_MHRP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_MICP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_MTP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_MUX ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_ND ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_NHRP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_NONE ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_NSP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_NVPII ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_OSPFIGP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_PGM ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_PIGP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_PIM ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_PRM ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_PUP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_PVP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_RAW ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_RCCMON ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_RDP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_ROUTING ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_RSVP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_RVD ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_SATEXPAK ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_SATMON ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_SCCSP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_SCTP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_SDRP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_SEP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_SRPC ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_ST ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_SVMTP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_SWIPE ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_TCF ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_TP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_TPXX ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_TRUNK1 ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_TRUNK2 ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_TTP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_VINES ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_VISA ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_VMTP ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_WBEXPAK ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_WBMON ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_WSN ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_XNET ideal-int pkg syscall (darwin-386-cgo), const IPPROTO_XTP ideal-int pkg syscall (darwin-386-cgo), const IPV6_2292DSTOPTS ideal-int pkg syscall (darwin-386-cgo), const IPV6_2292HOPLIMIT ideal-int pkg syscall (darwin-386-cgo), const IPV6_2292HOPOPTS ideal-int pkg syscall (darwin-386-cgo), const IPV6_2292NEXTHOP ideal-int pkg syscall (darwin-386-cgo), const IPV6_2292PKTINFO ideal-int pkg syscall (darwin-386-cgo), const IPV6_2292PKTOPTIONS ideal-int pkg syscall (darwin-386-cgo), const IPV6_2292RTHDR ideal-int pkg syscall (darwin-386-cgo), const IPV6_BINDV6ONLY ideal-int pkg syscall (darwin-386-cgo), const IPV6_BOUND_IF ideal-int pkg syscall (darwin-386-cgo), const IPV6_CHECKSUM ideal-int pkg syscall (darwin-386-cgo), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (darwin-386-cgo), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (darwin-386-cgo), const IPV6_DEFHLIM ideal-int pkg syscall (darwin-386-cgo), const IPV6_FAITH ideal-int pkg syscall (darwin-386-cgo), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (darwin-386-cgo), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (darwin-386-cgo), const IPV6_FRAGTTL ideal-int pkg syscall (darwin-386-cgo), const IPV6_FW_ADD ideal-int pkg syscall (darwin-386-cgo), const IPV6_FW_DEL ideal-int pkg syscall (darwin-386-cgo), const IPV6_FW_FLUSH ideal-int pkg syscall (darwin-386-cgo), const IPV6_FW_GET ideal-int pkg syscall (darwin-386-cgo), const IPV6_FW_ZERO ideal-int pkg syscall (darwin-386-cgo), const IPV6_HLIMDEC ideal-int pkg syscall (darwin-386-cgo), const IPV6_IPSEC_POLICY ideal-int pkg syscall (darwin-386-cgo), const IPV6_MAXHLIM ideal-int pkg syscall (darwin-386-cgo), const IPV6_MAXOPTHDR ideal-int pkg syscall (darwin-386-cgo), const IPV6_MAXPACKET ideal-int pkg syscall (darwin-386-cgo), const IPV6_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (darwin-386-cgo), const IPV6_MAX_MEMBERSHIPS ideal-int pkg syscall (darwin-386-cgo), const IPV6_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (darwin-386-cgo), const IPV6_MIN_MEMBERSHIPS ideal-int pkg syscall (darwin-386-cgo), const IPV6_MMTU ideal-int pkg syscall (darwin-386-cgo), const IPV6_PORTRANGE ideal-int pkg syscall (darwin-386-cgo), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (darwin-386-cgo), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (darwin-386-cgo), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (darwin-386-cgo), const IPV6_RECVTCLASS ideal-int pkg syscall (darwin-386-cgo), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (darwin-386-cgo), const IPV6_RTHDR_STRICT ideal-int pkg syscall (darwin-386-cgo), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (darwin-386-cgo), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (darwin-386-cgo), const IPV6_TCLASS ideal-int pkg syscall (darwin-386-cgo), const IPV6_VERSION ideal-int pkg syscall (darwin-386-cgo), const IPV6_VERSION_MASK ideal-int pkg syscall (darwin-386-cgo), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (darwin-386-cgo), const IP_BLOCK_SOURCE ideal-int pkg syscall (darwin-386-cgo), const IP_BOUND_IF ideal-int pkg syscall (darwin-386-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (darwin-386-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (darwin-386-cgo), const IP_DF ideal-int pkg syscall (darwin-386-cgo), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (darwin-386-cgo), const IP_DUMMYNET_CONFIGURE ideal-int pkg syscall (darwin-386-cgo), const IP_DUMMYNET_DEL ideal-int pkg syscall (darwin-386-cgo), const IP_DUMMYNET_FLUSH ideal-int pkg syscall (darwin-386-cgo), const IP_DUMMYNET_GET ideal-int pkg syscall (darwin-386-cgo), const IP_FAITH ideal-int pkg syscall (darwin-386-cgo), const IP_FW_ADD ideal-int pkg syscall (darwin-386-cgo), const IP_FW_DEL ideal-int pkg syscall (darwin-386-cgo), const IP_FW_FLUSH ideal-int pkg syscall (darwin-386-cgo), const IP_FW_GET ideal-int pkg syscall (darwin-386-cgo), const IP_FW_RESETLOG ideal-int pkg syscall (darwin-386-cgo), const IP_FW_ZERO ideal-int pkg syscall (darwin-386-cgo), const IP_HDRINCL ideal-int pkg syscall (darwin-386-cgo), const IP_IPSEC_POLICY ideal-int pkg syscall (darwin-386-cgo), const IP_MAXPACKET ideal-int pkg syscall (darwin-386-cgo), const IP_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (darwin-386-cgo), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (darwin-386-cgo), const IP_MAX_SOCK_MUTE_FILTER ideal-int pkg syscall (darwin-386-cgo), const IP_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (darwin-386-cgo), const IP_MF ideal-int pkg syscall (darwin-386-cgo), const IP_MIN_MEMBERSHIPS ideal-int pkg syscall (darwin-386-cgo), const IP_MSFILTER ideal-int pkg syscall (darwin-386-cgo), const IP_MSS ideal-int pkg syscall (darwin-386-cgo), const IP_MULTICAST_IFINDEX ideal-int pkg syscall (darwin-386-cgo), const IP_MULTICAST_VIF ideal-int pkg syscall (darwin-386-cgo), const IP_NAT__XXX ideal-int pkg syscall (darwin-386-cgo), const IP_OFFMASK ideal-int pkg syscall (darwin-386-cgo), const IP_OLD_FW_ADD ideal-int pkg syscall (darwin-386-cgo), const IP_OLD_FW_DEL ideal-int pkg syscall (darwin-386-cgo), const IP_OLD_FW_FLUSH ideal-int pkg syscall (darwin-386-cgo), const IP_OLD_FW_GET ideal-int pkg syscall (darwin-386-cgo), const IP_OLD_FW_RESETLOG ideal-int pkg syscall (darwin-386-cgo), const IP_OLD_FW_ZERO ideal-int pkg syscall (darwin-386-cgo), const IP_OPTIONS ideal-int pkg syscall (darwin-386-cgo), const IP_PKTINFO ideal-int pkg syscall (darwin-386-cgo), const IP_PORTRANGE ideal-int pkg syscall (darwin-386-cgo), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (darwin-386-cgo), const IP_PORTRANGE_HIGH ideal-int pkg syscall (darwin-386-cgo), const IP_PORTRANGE_LOW ideal-int pkg syscall (darwin-386-cgo), const IP_RECVDSTADDR ideal-int pkg syscall (darwin-386-cgo), const IP_RECVIF ideal-int pkg syscall (darwin-386-cgo), const IP_RECVOPTS ideal-int pkg syscall (darwin-386-cgo), const IP_RECVPKTINFO ideal-int pkg syscall (darwin-386-cgo), const IP_RECVRETOPTS ideal-int pkg syscall (darwin-386-cgo), const IP_RECVTTL ideal-int pkg syscall (darwin-386-cgo), const IP_RETOPTS ideal-int pkg syscall (darwin-386-cgo), const IP_RF ideal-int pkg syscall (darwin-386-cgo), const IP_RSVP_OFF ideal-int pkg syscall (darwin-386-cgo), const IP_RSVP_ON ideal-int pkg syscall (darwin-386-cgo), const IP_RSVP_VIF_OFF ideal-int pkg syscall (darwin-386-cgo), const IP_RSVP_VIF_ON ideal-int pkg syscall (darwin-386-cgo), const IP_STRIPHDR ideal-int pkg syscall (darwin-386-cgo), const IP_TRAFFIC_MGT_BACKGROUND ideal-int pkg syscall (darwin-386-cgo), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (darwin-386-cgo), const LOCK_EX ideal-int pkg syscall (darwin-386-cgo), const LOCK_NB ideal-int pkg syscall (darwin-386-cgo), const LOCK_SH ideal-int pkg syscall (darwin-386-cgo), const LOCK_UN ideal-int pkg syscall (darwin-386-cgo), const MADV_CAN_REUSE ideal-int pkg syscall (darwin-386-cgo), const MADV_DONTNEED ideal-int pkg syscall (darwin-386-cgo), const MADV_FREE ideal-int pkg syscall (darwin-386-cgo), const MADV_FREE_REUSABLE ideal-int pkg syscall (darwin-386-cgo), const MADV_FREE_REUSE ideal-int pkg syscall (darwin-386-cgo), const MADV_NORMAL ideal-int pkg syscall (darwin-386-cgo), const MADV_RANDOM ideal-int pkg syscall (darwin-386-cgo), const MADV_SEQUENTIAL ideal-int pkg syscall (darwin-386-cgo), const MADV_WILLNEED ideal-int pkg syscall (darwin-386-cgo), const MADV_ZERO_WIRED_PAGES ideal-int pkg syscall (darwin-386-cgo), const MAP_ANON ideal-int pkg syscall (darwin-386-cgo), const MAP_COPY ideal-int pkg syscall (darwin-386-cgo), const MAP_FILE ideal-int pkg syscall (darwin-386-cgo), const MAP_FIXED ideal-int pkg syscall (darwin-386-cgo), const MAP_HASSEMAPHORE ideal-int pkg syscall (darwin-386-cgo), const MAP_JIT ideal-int pkg syscall (darwin-386-cgo), const MAP_NOCACHE ideal-int pkg syscall (darwin-386-cgo), const MAP_NOEXTEND ideal-int pkg syscall (darwin-386-cgo), const MAP_NORESERVE ideal-int pkg syscall (darwin-386-cgo), const MAP_PRIVATE ideal-int pkg syscall (darwin-386-cgo), const MAP_RENAME ideal-int pkg syscall (darwin-386-cgo), const MAP_RESERVED0080 ideal-int pkg syscall (darwin-386-cgo), const MAP_SHARED ideal-int pkg syscall (darwin-386-cgo), const MCL_CURRENT ideal-int pkg syscall (darwin-386-cgo), const MCL_FUTURE ideal-int pkg syscall (darwin-386-cgo), const MSG_CTRUNC ideal-int pkg syscall (darwin-386-cgo), const MSG_DONTROUTE ideal-int pkg syscall (darwin-386-cgo), const MSG_DONTWAIT ideal-int pkg syscall (darwin-386-cgo), const MSG_EOF ideal-int pkg syscall (darwin-386-cgo), const MSG_EOR ideal-int pkg syscall (darwin-386-cgo), const MSG_FLUSH ideal-int pkg syscall (darwin-386-cgo), const MSG_HAVEMORE ideal-int pkg syscall (darwin-386-cgo), const MSG_HOLD ideal-int pkg syscall (darwin-386-cgo), const MSG_NEEDSA ideal-int pkg syscall (darwin-386-cgo), const MSG_OOB ideal-int pkg syscall (darwin-386-cgo), const MSG_PEEK ideal-int pkg syscall (darwin-386-cgo), const MSG_RCVMORE ideal-int pkg syscall (darwin-386-cgo), const MSG_SEND ideal-int pkg syscall (darwin-386-cgo), const MSG_TRUNC ideal-int pkg syscall (darwin-386-cgo), const MSG_WAITALL ideal-int pkg syscall (darwin-386-cgo), const MSG_WAITSTREAM ideal-int pkg syscall (darwin-386-cgo), const MS_ASYNC ideal-int pkg syscall (darwin-386-cgo), const MS_DEACTIVATE ideal-int pkg syscall (darwin-386-cgo), const MS_INVALIDATE ideal-int pkg syscall (darwin-386-cgo), const MS_KILLPAGES ideal-int pkg syscall (darwin-386-cgo), const MS_SYNC ideal-int pkg syscall (darwin-386-cgo), const NAME_MAX ideal-int pkg syscall (darwin-386-cgo), const NET_RT_DUMP ideal-int pkg syscall (darwin-386-cgo), const NET_RT_DUMP2 ideal-int pkg syscall (darwin-386-cgo), const NET_RT_FLAGS ideal-int pkg syscall (darwin-386-cgo), const NET_RT_IFLIST ideal-int pkg syscall (darwin-386-cgo), const NET_RT_IFLIST2 ideal-int pkg syscall (darwin-386-cgo), const NET_RT_MAXID ideal-int pkg syscall (darwin-386-cgo), const NET_RT_STAT ideal-int pkg syscall (darwin-386-cgo), const NET_RT_TRASH ideal-int pkg syscall (darwin-386-cgo), const NOTE_ABSOLUTE ideal-int pkg syscall (darwin-386-cgo), const NOTE_ATTRIB ideal-int pkg syscall (darwin-386-cgo), const NOTE_CHILD ideal-int pkg syscall (darwin-386-cgo), const NOTE_DELETE ideal-int pkg syscall (darwin-386-cgo), const NOTE_EXEC ideal-int pkg syscall (darwin-386-cgo), const NOTE_EXIT ideal-int pkg syscall (darwin-386-cgo), const NOTE_EXITSTATUS ideal-int pkg syscall (darwin-386-cgo), const NOTE_EXTEND ideal-int pkg syscall (darwin-386-cgo), const NOTE_FFAND ideal-int pkg syscall (darwin-386-cgo), const NOTE_FFCOPY ideal-int pkg syscall (darwin-386-cgo), const NOTE_FFCTRLMASK ideal-int pkg syscall (darwin-386-cgo), const NOTE_FFLAGSMASK ideal-int pkg syscall (darwin-386-cgo), const NOTE_FFNOP ideal-int pkg syscall (darwin-386-cgo), const NOTE_FFOR ideal-int pkg syscall (darwin-386-cgo), const NOTE_FORK ideal-int pkg syscall (darwin-386-cgo), const NOTE_LINK ideal-int pkg syscall (darwin-386-cgo), const NOTE_LOWAT ideal-int pkg syscall (darwin-386-cgo), const NOTE_NONE ideal-int pkg syscall (darwin-386-cgo), const NOTE_NSECONDS ideal-int pkg syscall (darwin-386-cgo), const NOTE_PCTRLMASK ideal-int pkg syscall (darwin-386-cgo), const NOTE_PDATAMASK ideal-int pkg syscall (darwin-386-cgo), const NOTE_REAP ideal-int pkg syscall (darwin-386-cgo), const NOTE_RENAME ideal-int pkg syscall (darwin-386-cgo), const NOTE_RESOURCEEND ideal-int pkg syscall (darwin-386-cgo), const NOTE_REVOKE ideal-int pkg syscall (darwin-386-cgo), const NOTE_SECONDS ideal-int pkg syscall (darwin-386-cgo), const NOTE_SIGNAL ideal-int pkg syscall (darwin-386-cgo), const NOTE_TRACK ideal-int pkg syscall (darwin-386-cgo), const NOTE_TRACKERR ideal-int pkg syscall (darwin-386-cgo), const NOTE_TRIGGER ideal-int pkg syscall (darwin-386-cgo), const NOTE_USECONDS ideal-int pkg syscall (darwin-386-cgo), const NOTE_VM_ERROR ideal-int pkg syscall (darwin-386-cgo), const NOTE_VM_PRESSURE ideal-int pkg syscall (darwin-386-cgo), const NOTE_VM_PRESSURE_SUDDEN_TERMINATE ideal-int pkg syscall (darwin-386-cgo), const NOTE_VM_PRESSURE_TERMINATE ideal-int pkg syscall (darwin-386-cgo), const NOTE_WRITE ideal-int pkg syscall (darwin-386-cgo), const O_ACCMODE ideal-int pkg syscall (darwin-386-cgo), const O_ALERT ideal-int pkg syscall (darwin-386-cgo), const O_DIRECTORY ideal-int pkg syscall (darwin-386-cgo), const O_DSYNC ideal-int pkg syscall (darwin-386-cgo), const O_EVTONLY ideal-int pkg syscall (darwin-386-cgo), const O_EXLOCK ideal-int pkg syscall (darwin-386-cgo), const O_FSYNC ideal-int pkg syscall (darwin-386-cgo), const O_NDELAY ideal-int pkg syscall (darwin-386-cgo), const O_NOFOLLOW ideal-int pkg syscall (darwin-386-cgo), const O_POPUP ideal-int pkg syscall (darwin-386-cgo), const O_SHLOCK ideal-int pkg syscall (darwin-386-cgo), const O_SYMLINK ideal-int pkg syscall (darwin-386-cgo), const PROT_EXEC ideal-int pkg syscall (darwin-386-cgo), const PROT_NONE ideal-int pkg syscall (darwin-386-cgo), const PROT_READ ideal-int pkg syscall (darwin-386-cgo), const PROT_WRITE ideal-int pkg syscall (darwin-386-cgo), const PTRACE_CONT ideal-int pkg syscall (darwin-386-cgo), const PTRACE_KILL ideal-int pkg syscall (darwin-386-cgo), const PTRACE_TRACEME ideal-int pkg syscall (darwin-386-cgo), const PT_ATTACH ideal-int pkg syscall (darwin-386-cgo), const PT_ATTACHEXC ideal-int pkg syscall (darwin-386-cgo), const PT_CONTINUE ideal-int pkg syscall (darwin-386-cgo), const PT_DENY_ATTACH ideal-int pkg syscall (darwin-386-cgo), const PT_DETACH ideal-int pkg syscall (darwin-386-cgo), const PT_FIRSTMACH ideal-int pkg syscall (darwin-386-cgo), const PT_FORCEQUOTA ideal-int pkg syscall (darwin-386-cgo), const PT_KILL ideal-int pkg syscall (darwin-386-cgo), const PT_READ_D ideal-int pkg syscall (darwin-386-cgo), const PT_READ_I ideal-int pkg syscall (darwin-386-cgo), const PT_READ_U ideal-int pkg syscall (darwin-386-cgo), const PT_SIGEXC ideal-int pkg syscall (darwin-386-cgo), const PT_STEP ideal-int pkg syscall (darwin-386-cgo), const PT_THUPDATE ideal-int pkg syscall (darwin-386-cgo), const PT_TRACE_ME ideal-int pkg syscall (darwin-386-cgo), const PT_WRITE_D ideal-int pkg syscall (darwin-386-cgo), const PT_WRITE_I ideal-int pkg syscall (darwin-386-cgo), const PT_WRITE_U ideal-int pkg syscall (darwin-386-cgo), const RLIMIT_AS ideal-int pkg syscall (darwin-386-cgo), const RLIMIT_CORE ideal-int pkg syscall (darwin-386-cgo), const RLIMIT_CPU ideal-int pkg syscall (darwin-386-cgo), const RLIMIT_DATA ideal-int pkg syscall (darwin-386-cgo), const RLIMIT_FSIZE ideal-int pkg syscall (darwin-386-cgo), const RLIMIT_NOFILE ideal-int pkg syscall (darwin-386-cgo), const RLIMIT_STACK ideal-int pkg syscall (darwin-386-cgo), const RLIM_INFINITY ideal-int pkg syscall (darwin-386-cgo), const RTAX_AUTHOR ideal-int pkg syscall (darwin-386-cgo), const RTAX_BRD ideal-int pkg syscall (darwin-386-cgo), const RTAX_DST ideal-int pkg syscall (darwin-386-cgo), const RTAX_GATEWAY ideal-int pkg syscall (darwin-386-cgo), const RTAX_GENMASK ideal-int pkg syscall (darwin-386-cgo), const RTAX_IFA ideal-int pkg syscall (darwin-386-cgo), const RTAX_IFP ideal-int pkg syscall (darwin-386-cgo), const RTAX_MAX ideal-int pkg syscall (darwin-386-cgo), const RTAX_NETMASK ideal-int pkg syscall (darwin-386-cgo), const RTA_AUTHOR ideal-int pkg syscall (darwin-386-cgo), const RTA_BRD ideal-int pkg syscall (darwin-386-cgo), const RTA_DST ideal-int pkg syscall (darwin-386-cgo), const RTA_GATEWAY ideal-int pkg syscall (darwin-386-cgo), const RTA_GENMASK ideal-int pkg syscall (darwin-386-cgo), const RTA_IFA ideal-int pkg syscall (darwin-386-cgo), const RTA_IFP ideal-int pkg syscall (darwin-386-cgo), const RTA_NETMASK ideal-int pkg syscall (darwin-386-cgo), const RTF_BLACKHOLE ideal-int pkg syscall (darwin-386-cgo), const RTF_BROADCAST ideal-int pkg syscall (darwin-386-cgo), const RTF_CLONING ideal-int pkg syscall (darwin-386-cgo), const RTF_CONDEMNED ideal-int pkg syscall (darwin-386-cgo), const RTF_DELCLONE ideal-int pkg syscall (darwin-386-cgo), const RTF_DONE ideal-int pkg syscall (darwin-386-cgo), const RTF_DYNAMIC ideal-int pkg syscall (darwin-386-cgo), const RTF_GATEWAY ideal-int pkg syscall (darwin-386-cgo), const RTF_HOST ideal-int pkg syscall (darwin-386-cgo), const RTF_IFREF ideal-int pkg syscall (darwin-386-cgo), const RTF_IFSCOPE ideal-int pkg syscall (darwin-386-cgo), const RTF_LLINFO ideal-int pkg syscall (darwin-386-cgo), const RTF_LOCAL ideal-int pkg syscall (darwin-386-cgo), const RTF_MODIFIED ideal-int pkg syscall (darwin-386-cgo), const RTF_MULTICAST ideal-int pkg syscall (darwin-386-cgo), const RTF_PINNED ideal-int pkg syscall (darwin-386-cgo), const RTF_PRCLONING ideal-int pkg syscall (darwin-386-cgo), const RTF_PROTO1 ideal-int pkg syscall (darwin-386-cgo), const RTF_PROTO2 ideal-int pkg syscall (darwin-386-cgo), const RTF_PROTO3 ideal-int pkg syscall (darwin-386-cgo), const RTF_REJECT ideal-int pkg syscall (darwin-386-cgo), const RTF_STATIC ideal-int pkg syscall (darwin-386-cgo), const RTF_UP ideal-int pkg syscall (darwin-386-cgo), const RTF_WASCLONED ideal-int pkg syscall (darwin-386-cgo), const RTF_XRESOLVE ideal-int pkg syscall (darwin-386-cgo), const RTM_ADD ideal-int pkg syscall (darwin-386-cgo), const RTM_CHANGE ideal-int pkg syscall (darwin-386-cgo), const RTM_DELADDR ideal-int pkg syscall (darwin-386-cgo), const RTM_DELETE ideal-int pkg syscall (darwin-386-cgo), const RTM_DELMADDR ideal-int pkg syscall (darwin-386-cgo), const RTM_GET ideal-int pkg syscall (darwin-386-cgo), const RTM_GET2 ideal-int pkg syscall (darwin-386-cgo), const RTM_IFINFO ideal-int pkg syscall (darwin-386-cgo), const RTM_IFINFO2 ideal-int pkg syscall (darwin-386-cgo), const RTM_LOCK ideal-int pkg syscall (darwin-386-cgo), const RTM_LOSING ideal-int pkg syscall (darwin-386-cgo), const RTM_MISS ideal-int pkg syscall (darwin-386-cgo), const RTM_NEWADDR ideal-int pkg syscall (darwin-386-cgo), const RTM_NEWMADDR ideal-int pkg syscall (darwin-386-cgo), const RTM_NEWMADDR2 ideal-int pkg syscall (darwin-386-cgo), const RTM_OLDADD ideal-int pkg syscall (darwin-386-cgo), const RTM_OLDDEL ideal-int pkg syscall (darwin-386-cgo), const RTM_REDIRECT ideal-int pkg syscall (darwin-386-cgo), const RTM_RESOLVE ideal-int pkg syscall (darwin-386-cgo), const RTM_RTTUNIT ideal-int pkg syscall (darwin-386-cgo), const RTM_VERSION ideal-int pkg syscall (darwin-386-cgo), const RTV_EXPIRE ideal-int pkg syscall (darwin-386-cgo), const RTV_HOPCOUNT ideal-int pkg syscall (darwin-386-cgo), const RTV_MTU ideal-int pkg syscall (darwin-386-cgo), const RTV_RPIPE ideal-int pkg syscall (darwin-386-cgo), const RTV_RTT ideal-int pkg syscall (darwin-386-cgo), const RTV_RTTVAR ideal-int pkg syscall (darwin-386-cgo), const RTV_SPIPE ideal-int pkg syscall (darwin-386-cgo), const RTV_SSTHRESH ideal-int pkg syscall (darwin-386-cgo), const RUSAGE_CHILDREN ideal-int pkg syscall (darwin-386-cgo), const RUSAGE_SELF ideal-int pkg syscall (darwin-386-cgo), const SCM_CREDS ideal-int pkg syscall (darwin-386-cgo), const SCM_RIGHTS ideal-int pkg syscall (darwin-386-cgo), const SCM_TIMESTAMP ideal-int pkg syscall (darwin-386-cgo), const SCM_TIMESTAMP_MONOTONIC ideal-int pkg syscall (darwin-386-cgo), const SIGCHLD Signal pkg syscall (darwin-386-cgo), const SIGCONT Signal pkg syscall (darwin-386-cgo), const SIGEMT Signal pkg syscall (darwin-386-cgo), const SIGINFO Signal pkg syscall (darwin-386-cgo), const SIGIO Signal pkg syscall (darwin-386-cgo), const SIGIOT Signal pkg syscall (darwin-386-cgo), const SIGPROF Signal pkg syscall (darwin-386-cgo), const SIGSTOP Signal pkg syscall (darwin-386-cgo), const SIGSYS Signal pkg syscall (darwin-386-cgo), const SIGTSTP Signal pkg syscall (darwin-386-cgo), const SIGTTIN Signal pkg syscall (darwin-386-cgo), const SIGTTOU Signal pkg syscall (darwin-386-cgo), const SIGURG Signal pkg syscall (darwin-386-cgo), const SIGUSR1 Signal pkg syscall (darwin-386-cgo), const SIGUSR2 Signal pkg syscall (darwin-386-cgo), const SIGVTALRM Signal pkg syscall (darwin-386-cgo), const SIGWINCH Signal pkg syscall (darwin-386-cgo), const SIGXCPU Signal pkg syscall (darwin-386-cgo), const SIGXFSZ Signal pkg syscall (darwin-386-cgo), const SIOCADDMULTI ideal-int pkg syscall (darwin-386-cgo), const SIOCAIFADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCALIFADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCARPIPLL ideal-int pkg syscall (darwin-386-cgo), const SIOCATMARK ideal-int pkg syscall (darwin-386-cgo), const SIOCAUTOADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCAUTONETMASK ideal-int pkg syscall (darwin-386-cgo), const SIOCDELMULTI ideal-int pkg syscall (darwin-386-cgo), const SIOCDIFADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCDIFPHYADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCDLIFADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCGDRVSPEC ideal-int pkg syscall (darwin-386-cgo), const SIOCGETSGCNT ideal-int pkg syscall (darwin-386-cgo), const SIOCGETVIFCNT ideal-int pkg syscall (darwin-386-cgo), const SIOCGETVLAN ideal-int pkg syscall (darwin-386-cgo), const SIOCGHIWAT ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFALTMTU ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFASYNCMAP ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFBOND ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFBRDADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFCAP ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFCONF ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFDEVMTU ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFDSTADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFFLAGS ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFGENERIC ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFKPI ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFMAC ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFMEDIA ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFMETRIC ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFMTU ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFNETMASK ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFPDSTADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFPHYS ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFPSRCADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFSTATUS ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFVLAN ideal-int pkg syscall (darwin-386-cgo), const SIOCGIFWAKEFLAGS ideal-int pkg syscall (darwin-386-cgo), const SIOCGLIFADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCGLIFPHYADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCGLOWAT ideal-int pkg syscall (darwin-386-cgo), const SIOCGPGRP ideal-int pkg syscall (darwin-386-cgo), const SIOCIFCREATE ideal-int pkg syscall (darwin-386-cgo), const SIOCIFCREATE2 ideal-int pkg syscall (darwin-386-cgo), const SIOCIFDESTROY ideal-int pkg syscall (darwin-386-cgo), const SIOCRSLVMULTI ideal-int pkg syscall (darwin-386-cgo), const SIOCSDRVSPEC ideal-int pkg syscall (darwin-386-cgo), const SIOCSETVLAN ideal-int pkg syscall (darwin-386-cgo), const SIOCSHIWAT ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFALTMTU ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFASYNCMAP ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFBOND ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFBRDADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFCAP ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFDSTADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFFLAGS ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFGENERIC ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFKPI ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFLLADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFMAC ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFMEDIA ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFMETRIC ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFMTU ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFNETMASK ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFPHYADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFPHYS ideal-int pkg syscall (darwin-386-cgo), const SIOCSIFVLAN ideal-int pkg syscall (darwin-386-cgo), const SIOCSLIFPHYADDR ideal-int pkg syscall (darwin-386-cgo), const SIOCSLOWAT ideal-int pkg syscall (darwin-386-cgo), const SIOCSPGRP ideal-int pkg syscall (darwin-386-cgo), const SOCK_MAXADDRLEN ideal-int pkg syscall (darwin-386-cgo), const SOCK_RDM ideal-int pkg syscall (darwin-386-cgo), const SO_ACCEPTCONN ideal-int pkg syscall (darwin-386-cgo), const SO_DEBUG ideal-int pkg syscall (darwin-386-cgo), const SO_DONTTRUNC ideal-int pkg syscall (darwin-386-cgo), const SO_ERROR ideal-int pkg syscall (darwin-386-cgo), const SO_LABEL ideal-int pkg syscall (darwin-386-cgo), const SO_LINGER_SEC ideal-int pkg syscall (darwin-386-cgo), const SO_NKE ideal-int pkg syscall (darwin-386-cgo), const SO_NOADDRERR ideal-int pkg syscall (darwin-386-cgo), const SO_NOSIGPIPE ideal-int pkg syscall (darwin-386-cgo), const SO_NOTIFYCONFLICT ideal-int pkg syscall (darwin-386-cgo), const SO_NP_EXTENSIONS ideal-int pkg syscall (darwin-386-cgo), const SO_NREAD ideal-int pkg syscall (darwin-386-cgo), const SO_NWRITE ideal-int pkg syscall (darwin-386-cgo), const SO_OOBINLINE ideal-int pkg syscall (darwin-386-cgo), const SO_PEERLABEL ideal-int pkg syscall (darwin-386-cgo), const SO_RANDOMPORT ideal-int pkg syscall (darwin-386-cgo), const SO_RCVLOWAT ideal-int pkg syscall (darwin-386-cgo), const SO_RCVTIMEO ideal-int pkg syscall (darwin-386-cgo), const SO_RESTRICTIONS ideal-int pkg syscall (darwin-386-cgo), const SO_RESTRICT_DENYIN ideal-int pkg syscall (darwin-386-cgo), const SO_RESTRICT_DENYOUT ideal-int pkg syscall (darwin-386-cgo), const SO_RESTRICT_DENYSET ideal-int pkg syscall (darwin-386-cgo), const SO_REUSEPORT ideal-int pkg syscall (darwin-386-cgo), const SO_REUSESHAREUID ideal-int pkg syscall (darwin-386-cgo), const SO_SNDLOWAT ideal-int pkg syscall (darwin-386-cgo), const SO_SNDTIMEO ideal-int pkg syscall (darwin-386-cgo), const SO_TIMESTAMP ideal-int pkg syscall (darwin-386-cgo), const SO_TIMESTAMP_MONOTONIC ideal-int pkg syscall (darwin-386-cgo), const SO_TYPE ideal-int pkg syscall (darwin-386-cgo), const SO_UPCALLCLOSEWAIT ideal-int pkg syscall (darwin-386-cgo), const SO_USELOOPBACK ideal-int pkg syscall (darwin-386-cgo), const SO_WANTMORE ideal-int pkg syscall (darwin-386-cgo), const SO_WANTOOBFLAG ideal-int pkg syscall (darwin-386-cgo), const SYS_ACCEPT ideal-int pkg syscall (darwin-386-cgo), const SYS_ACCEPT_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_ACCESS ideal-int pkg syscall (darwin-386-cgo), const SYS_ACCESS_EXTENDED ideal-int pkg syscall (darwin-386-cgo), const SYS_ACCT ideal-int pkg syscall (darwin-386-cgo), const SYS_ADD_PROFIL ideal-int pkg syscall (darwin-386-cgo), const SYS_ADJTIME ideal-int pkg syscall (darwin-386-cgo), const SYS_AIO_CANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_AIO_ERROR ideal-int pkg syscall (darwin-386-cgo), const SYS_AIO_FSYNC ideal-int pkg syscall (darwin-386-cgo), const SYS_AIO_READ ideal-int pkg syscall (darwin-386-cgo), const SYS_AIO_RETURN ideal-int pkg syscall (darwin-386-cgo), const SYS_AIO_SUSPEND ideal-int pkg syscall (darwin-386-cgo), const SYS_AIO_SUSPEND_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_AIO_WRITE ideal-int pkg syscall (darwin-386-cgo), const SYS_ATGETMSG ideal-int pkg syscall (darwin-386-cgo), const SYS_ATPGETREQ ideal-int pkg syscall (darwin-386-cgo), const SYS_ATPGETRSP ideal-int pkg syscall (darwin-386-cgo), const SYS_ATPSNDREQ ideal-int pkg syscall (darwin-386-cgo), const SYS_ATPSNDRSP ideal-int pkg syscall (darwin-386-cgo), const SYS_ATPUTMSG ideal-int pkg syscall (darwin-386-cgo), const SYS_ATSOCKET ideal-int pkg syscall (darwin-386-cgo), const SYS_AUDIT ideal-int pkg syscall (darwin-386-cgo), const SYS_AUDITCTL ideal-int pkg syscall (darwin-386-cgo), const SYS_AUDITON ideal-int pkg syscall (darwin-386-cgo), const SYS_AUDIT_SESSION_JOIN ideal-int pkg syscall (darwin-386-cgo), const SYS_AUDIT_SESSION_PORT ideal-int pkg syscall (darwin-386-cgo), const SYS_AUDIT_SESSION_SELF ideal-int pkg syscall (darwin-386-cgo), const SYS_BIND ideal-int pkg syscall (darwin-386-cgo), const SYS_BSDTHREAD_CREATE ideal-int pkg syscall (darwin-386-cgo), const SYS_BSDTHREAD_REGISTER ideal-int pkg syscall (darwin-386-cgo), const SYS_BSDTHREAD_TERMINATE ideal-int pkg syscall (darwin-386-cgo), const SYS_CHDIR ideal-int pkg syscall (darwin-386-cgo), const SYS_CHFLAGS ideal-int pkg syscall (darwin-386-cgo), const SYS_CHMOD ideal-int pkg syscall (darwin-386-cgo), const SYS_CHMOD_EXTENDED ideal-int pkg syscall (darwin-386-cgo), const SYS_CHOWN ideal-int pkg syscall (darwin-386-cgo), const SYS_CHROOT ideal-int pkg syscall (darwin-386-cgo), const SYS_CHUD ideal-int pkg syscall (darwin-386-cgo), const SYS_CLOSE ideal-int pkg syscall (darwin-386-cgo), const SYS_CLOSE_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_CONNECT ideal-int pkg syscall (darwin-386-cgo), const SYS_CONNECT_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_COPYFILE ideal-int pkg syscall (darwin-386-cgo), const SYS_CSOPS ideal-int pkg syscall (darwin-386-cgo), const SYS_DELETE ideal-int pkg syscall (darwin-386-cgo), const SYS_DUP ideal-int pkg syscall (darwin-386-cgo), const SYS_DUP2 ideal-int pkg syscall (darwin-386-cgo), const SYS_EXCHANGEDATA ideal-int pkg syscall (darwin-386-cgo), const SYS_EXECVE ideal-int pkg syscall (darwin-386-cgo), const SYS_EXIT ideal-int pkg syscall (darwin-386-cgo), const SYS_FCHDIR ideal-int pkg syscall (darwin-386-cgo), const SYS_FCHFLAGS ideal-int pkg syscall (darwin-386-cgo), const SYS_FCHMOD ideal-int pkg syscall (darwin-386-cgo), const SYS_FCHMOD_EXTENDED ideal-int pkg syscall (darwin-386-cgo), const SYS_FCHOWN ideal-int pkg syscall (darwin-386-cgo), const SYS_FCNTL ideal-int pkg syscall (darwin-386-cgo), const SYS_FCNTL_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_FDATASYNC ideal-int pkg syscall (darwin-386-cgo), const SYS_FFSCTL ideal-int pkg syscall (darwin-386-cgo), const SYS_FGETATTRLIST ideal-int pkg syscall (darwin-386-cgo), const SYS_FGETXATTR ideal-int pkg syscall (darwin-386-cgo), const SYS_FHOPEN ideal-int pkg syscall (darwin-386-cgo), const SYS_FILEPORT_MAKEFD ideal-int pkg syscall (darwin-386-cgo), const SYS_FILEPORT_MAKEPORT ideal-int pkg syscall (darwin-386-cgo), const SYS_FLISTXATTR ideal-int pkg syscall (darwin-386-cgo), const SYS_FLOCK ideal-int pkg syscall (darwin-386-cgo), const SYS_FORK ideal-int pkg syscall (darwin-386-cgo), const SYS_FPATHCONF ideal-int pkg syscall (darwin-386-cgo), const SYS_FREMOVEXATTR ideal-int pkg syscall (darwin-386-cgo), const SYS_FSCTL ideal-int pkg syscall (darwin-386-cgo), const SYS_FSETATTRLIST ideal-int pkg syscall (darwin-386-cgo), const SYS_FSETXATTR ideal-int pkg syscall (darwin-386-cgo), const SYS_FSGETPATH ideal-int pkg syscall (darwin-386-cgo), const SYS_FSTAT ideal-int pkg syscall (darwin-386-cgo), const SYS_FSTAT64 ideal-int pkg syscall (darwin-386-cgo), const SYS_FSTAT64_EXTENDED ideal-int pkg syscall (darwin-386-cgo), const SYS_FSTATFS ideal-int pkg syscall (darwin-386-cgo), const SYS_FSTATFS64 ideal-int pkg syscall (darwin-386-cgo), const SYS_FSTATV ideal-int pkg syscall (darwin-386-cgo), const SYS_FSTAT_EXTENDED ideal-int pkg syscall (darwin-386-cgo), const SYS_FSYNC ideal-int pkg syscall (darwin-386-cgo), const SYS_FSYNC_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_FTRUNCATE ideal-int pkg syscall (darwin-386-cgo), const SYS_FUTIMES ideal-int pkg syscall (darwin-386-cgo), const SYS_GETATTRLIST ideal-int pkg syscall (darwin-386-cgo), const SYS_GETAUDIT ideal-int pkg syscall (darwin-386-cgo), const SYS_GETAUDIT_ADDR ideal-int pkg syscall (darwin-386-cgo), const SYS_GETAUID ideal-int pkg syscall (darwin-386-cgo), const SYS_GETDIRENTRIES ideal-int pkg syscall (darwin-386-cgo), const SYS_GETDIRENTRIES64 ideal-int pkg syscall (darwin-386-cgo), const SYS_GETDIRENTRIESATTR ideal-int pkg syscall (darwin-386-cgo), const SYS_GETDTABLESIZE ideal-int pkg syscall (darwin-386-cgo), const SYS_GETEGID ideal-int pkg syscall (darwin-386-cgo), const SYS_GETEUID ideal-int pkg syscall (darwin-386-cgo), const SYS_GETFH ideal-int pkg syscall (darwin-386-cgo), const SYS_GETFSSTAT ideal-int pkg syscall (darwin-386-cgo), const SYS_GETFSSTAT64 ideal-int pkg syscall (darwin-386-cgo), const SYS_GETGID ideal-int pkg syscall (darwin-386-cgo), const SYS_GETGROUPS ideal-int pkg syscall (darwin-386-cgo), const SYS_GETHOSTUUID ideal-int pkg syscall (darwin-386-cgo), const SYS_GETITIMER ideal-int pkg syscall (darwin-386-cgo), const SYS_GETLCID ideal-int pkg syscall (darwin-386-cgo), const SYS_GETLOGIN ideal-int pkg syscall (darwin-386-cgo), const SYS_GETPEERNAME ideal-int pkg syscall (darwin-386-cgo), const SYS_GETPGID ideal-int pkg syscall (darwin-386-cgo), const SYS_GETPGRP ideal-int pkg syscall (darwin-386-cgo), const SYS_GETPID ideal-int pkg syscall (darwin-386-cgo), const SYS_GETPPID ideal-int pkg syscall (darwin-386-cgo), const SYS_GETPRIORITY ideal-int pkg syscall (darwin-386-cgo), const SYS_GETRLIMIT ideal-int pkg syscall (darwin-386-cgo), const SYS_GETRUSAGE ideal-int pkg syscall (darwin-386-cgo), const SYS_GETSGROUPS ideal-int pkg syscall (darwin-386-cgo), const SYS_GETSID ideal-int pkg syscall (darwin-386-cgo), const SYS_GETSOCKNAME ideal-int pkg syscall (darwin-386-cgo), const SYS_GETSOCKOPT ideal-int pkg syscall (darwin-386-cgo), const SYS_GETTID ideal-int pkg syscall (darwin-386-cgo), const SYS_GETTIMEOFDAY ideal-int pkg syscall (darwin-386-cgo), const SYS_GETUID ideal-int pkg syscall (darwin-386-cgo), const SYS_GETWGROUPS ideal-int pkg syscall (darwin-386-cgo), const SYS_GETXATTR ideal-int pkg syscall (darwin-386-cgo), const SYS_IDENTITYSVC ideal-int pkg syscall (darwin-386-cgo), const SYS_INITGROUPS ideal-int pkg syscall (darwin-386-cgo), const SYS_IOCTL ideal-int pkg syscall (darwin-386-cgo), const SYS_IOPOLICYSYS ideal-int pkg syscall (darwin-386-cgo), const SYS_ISSETUGID ideal-int pkg syscall (darwin-386-cgo), const SYS_KDEBUG_TRACE ideal-int pkg syscall (darwin-386-cgo), const SYS_KEVENT ideal-int pkg syscall (darwin-386-cgo), const SYS_KEVENT64 ideal-int pkg syscall (darwin-386-cgo), const SYS_KILL ideal-int pkg syscall (darwin-386-cgo), const SYS_KQUEUE ideal-int pkg syscall (darwin-386-cgo), const SYS_LCHOWN ideal-int pkg syscall (darwin-386-cgo), const SYS_LINK ideal-int pkg syscall (darwin-386-cgo), const SYS_LIO_LISTIO ideal-int pkg syscall (darwin-386-cgo), const SYS_LISTEN ideal-int pkg syscall (darwin-386-cgo), const SYS_LISTXATTR ideal-int pkg syscall (darwin-386-cgo), const SYS_LSEEK ideal-int pkg syscall (darwin-386-cgo), const SYS_LSTAT ideal-int pkg syscall (darwin-386-cgo), const SYS_LSTAT64 ideal-int pkg syscall (darwin-386-cgo), const SYS_LSTAT64_EXTENDED ideal-int pkg syscall (darwin-386-cgo), const SYS_LSTATV ideal-int pkg syscall (darwin-386-cgo), const SYS_LSTAT_EXTENDED ideal-int pkg syscall (darwin-386-cgo), const SYS_MADVISE ideal-int pkg syscall (darwin-386-cgo), const SYS_MAXSYSCALL ideal-int pkg syscall (darwin-386-cgo), const SYS_MINCORE ideal-int pkg syscall (darwin-386-cgo), const SYS_MINHERIT ideal-int pkg syscall (darwin-386-cgo), const SYS_MKCOMPLEX ideal-int pkg syscall (darwin-386-cgo), const SYS_MKDIR ideal-int pkg syscall (darwin-386-cgo), const SYS_MKDIR_EXTENDED ideal-int pkg syscall (darwin-386-cgo), const SYS_MKFIFO ideal-int pkg syscall (darwin-386-cgo), const SYS_MKFIFO_EXTENDED ideal-int pkg syscall (darwin-386-cgo), const SYS_MKNOD ideal-int pkg syscall (darwin-386-cgo), const SYS_MLOCK ideal-int pkg syscall (darwin-386-cgo), const SYS_MLOCKALL ideal-int pkg syscall (darwin-386-cgo), const SYS_MMAP ideal-int pkg syscall (darwin-386-cgo), const SYS_MODWATCH ideal-int pkg syscall (darwin-386-cgo), const SYS_MOUNT ideal-int pkg syscall (darwin-386-cgo), const SYS_MPROTECT ideal-int pkg syscall (darwin-386-cgo), const SYS_MSGCTL ideal-int pkg syscall (darwin-386-cgo), const SYS_MSGGET ideal-int pkg syscall (darwin-386-cgo), const SYS_MSGRCV ideal-int pkg syscall (darwin-386-cgo), const SYS_MSGRCV_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_MSGSND ideal-int pkg syscall (darwin-386-cgo), const SYS_MSGSND_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_MSGSYS ideal-int pkg syscall (darwin-386-cgo), const SYS_MSYNC ideal-int pkg syscall (darwin-386-cgo), const SYS_MSYNC_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_MUNLOCK ideal-int pkg syscall (darwin-386-cgo), const SYS_MUNLOCKALL ideal-int pkg syscall (darwin-386-cgo), const SYS_MUNMAP ideal-int pkg syscall (darwin-386-cgo), const SYS_NFSCLNT ideal-int pkg syscall (darwin-386-cgo), const SYS_NFSSVC ideal-int pkg syscall (darwin-386-cgo), const SYS_OPEN ideal-int pkg syscall (darwin-386-cgo), const SYS_OPEN_EXTENDED ideal-int pkg syscall (darwin-386-cgo), const SYS_OPEN_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_PATHCONF ideal-int pkg syscall (darwin-386-cgo), const SYS_PID_HIBERNATE ideal-int pkg syscall (darwin-386-cgo), const SYS_PID_RESUME ideal-int pkg syscall (darwin-386-cgo), const SYS_PID_SHUTDOWN_SOCKETS ideal-int pkg syscall (darwin-386-cgo), const SYS_PID_SUSPEND ideal-int pkg syscall (darwin-386-cgo), const SYS_PIPE ideal-int pkg syscall (darwin-386-cgo), const SYS_POLL ideal-int pkg syscall (darwin-386-cgo), const SYS_POLL_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_POSIX_SPAWN ideal-int pkg syscall (darwin-386-cgo), const SYS_PREAD ideal-int pkg syscall (darwin-386-cgo), const SYS_PREAD_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_PROCESS_POLICY ideal-int pkg syscall (darwin-386-cgo), const SYS_PROC_INFO ideal-int pkg syscall (darwin-386-cgo), const SYS_PROFIL ideal-int pkg syscall (darwin-386-cgo), const SYS_PSYNCH_CVBROAD ideal-int pkg syscall (darwin-386-cgo), const SYS_PSYNCH_CVCLRPREPOST ideal-int pkg syscall (darwin-386-cgo), const SYS_PSYNCH_CVSIGNAL ideal-int pkg syscall (darwin-386-cgo), const SYS_PSYNCH_CVWAIT ideal-int pkg syscall (darwin-386-cgo), const SYS_PSYNCH_MUTEXDROP ideal-int pkg syscall (darwin-386-cgo), const SYS_PSYNCH_MUTEXWAIT ideal-int pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_DOWNGRADE ideal-int pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_LONGRDLOCK ideal-int pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_RDLOCK ideal-int pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_UNLOCK ideal-int pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_UNLOCK2 ideal-int pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_UPGRADE ideal-int pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_WRLOCK ideal-int pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_YIELDWRLOCK ideal-int pkg syscall (darwin-386-cgo), const SYS_PTRACE ideal-int pkg syscall (darwin-386-cgo), const SYS_PWRITE ideal-int pkg syscall (darwin-386-cgo), const SYS_PWRITE_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_QUOTACTL ideal-int pkg syscall (darwin-386-cgo), const SYS_READ ideal-int pkg syscall (darwin-386-cgo), const SYS_READLINK ideal-int pkg syscall (darwin-386-cgo), const SYS_READV ideal-int pkg syscall (darwin-386-cgo), const SYS_READV_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_READ_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_REBOOT ideal-int pkg syscall (darwin-386-cgo), const SYS_RECVFROM ideal-int pkg syscall (darwin-386-cgo), const SYS_RECVFROM_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_RECVMSG ideal-int pkg syscall (darwin-386-cgo), const SYS_RECVMSG_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_REMOVEXATTR ideal-int pkg syscall (darwin-386-cgo), const SYS_RENAME ideal-int pkg syscall (darwin-386-cgo), const SYS_REVOKE ideal-int pkg syscall (darwin-386-cgo), const SYS_RMDIR ideal-int pkg syscall (darwin-386-cgo), const SYS_SEARCHFS ideal-int pkg syscall (darwin-386-cgo), const SYS_SELECT ideal-int pkg syscall (darwin-386-cgo), const SYS_SELECT_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_SEMCTL ideal-int pkg syscall (darwin-386-cgo), const SYS_SEMGET ideal-int pkg syscall (darwin-386-cgo), const SYS_SEMOP ideal-int pkg syscall (darwin-386-cgo), const SYS_SEMSYS ideal-int pkg syscall (darwin-386-cgo), const SYS_SEM_CLOSE ideal-int pkg syscall (darwin-386-cgo), const SYS_SEM_DESTROY ideal-int pkg syscall (darwin-386-cgo), const SYS_SEM_GETVALUE ideal-int pkg syscall (darwin-386-cgo), const SYS_SEM_INIT ideal-int pkg syscall (darwin-386-cgo), const SYS_SEM_OPEN ideal-int pkg syscall (darwin-386-cgo), const SYS_SEM_POST ideal-int pkg syscall (darwin-386-cgo), const SYS_SEM_TRYWAIT ideal-int pkg syscall (darwin-386-cgo), const SYS_SEM_UNLINK ideal-int pkg syscall (darwin-386-cgo), const SYS_SEM_WAIT ideal-int pkg syscall (darwin-386-cgo), const SYS_SEM_WAIT_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_SENDFILE ideal-int pkg syscall (darwin-386-cgo), const SYS_SENDMSG ideal-int pkg syscall (darwin-386-cgo), const SYS_SENDMSG_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_SENDTO ideal-int pkg syscall (darwin-386-cgo), const SYS_SENDTO_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_SETATTRLIST ideal-int pkg syscall (darwin-386-cgo), const SYS_SETAUDIT ideal-int pkg syscall (darwin-386-cgo), const SYS_SETAUDIT_ADDR ideal-int pkg syscall (darwin-386-cgo), const SYS_SETAUID ideal-int pkg syscall (darwin-386-cgo), const SYS_SETEGID ideal-int pkg syscall (darwin-386-cgo), const SYS_SETEUID ideal-int pkg syscall (darwin-386-cgo), const SYS_SETGID ideal-int pkg syscall (darwin-386-cgo), const SYS_SETGROUPS ideal-int pkg syscall (darwin-386-cgo), const SYS_SETITIMER ideal-int pkg syscall (darwin-386-cgo), const SYS_SETLCID ideal-int pkg syscall (darwin-386-cgo), const SYS_SETLOGIN ideal-int pkg syscall (darwin-386-cgo), const SYS_SETPGID ideal-int pkg syscall (darwin-386-cgo), const SYS_SETPRIORITY ideal-int pkg syscall (darwin-386-cgo), const SYS_SETPRIVEXEC ideal-int pkg syscall (darwin-386-cgo), const SYS_SETREGID ideal-int pkg syscall (darwin-386-cgo), const SYS_SETREUID ideal-int pkg syscall (darwin-386-cgo), const SYS_SETRLIMIT ideal-int pkg syscall (darwin-386-cgo), const SYS_SETSGROUPS ideal-int pkg syscall (darwin-386-cgo), const SYS_SETSID ideal-int pkg syscall (darwin-386-cgo), const SYS_SETSOCKOPT ideal-int pkg syscall (darwin-386-cgo), const SYS_SETTID ideal-int pkg syscall (darwin-386-cgo), const SYS_SETTID_WITH_PID ideal-int pkg syscall (darwin-386-cgo), const SYS_SETTIMEOFDAY ideal-int pkg syscall (darwin-386-cgo), const SYS_SETUID ideal-int pkg syscall (darwin-386-cgo), const SYS_SETWGROUPS ideal-int pkg syscall (darwin-386-cgo), const SYS_SETXATTR ideal-int pkg syscall (darwin-386-cgo), const SYS_SHARED_REGION_CHECK_NP ideal-int pkg syscall (darwin-386-cgo), const SYS_SHARED_REGION_MAP_AND_SLIDE_NP ideal-int pkg syscall (darwin-386-cgo), const SYS_SHMAT ideal-int pkg syscall (darwin-386-cgo), const SYS_SHMCTL ideal-int pkg syscall (darwin-386-cgo), const SYS_SHMDT ideal-int pkg syscall (darwin-386-cgo), const SYS_SHMGET ideal-int pkg syscall (darwin-386-cgo), const SYS_SHMSYS ideal-int pkg syscall (darwin-386-cgo), const SYS_SHM_OPEN ideal-int pkg syscall (darwin-386-cgo), const SYS_SHM_UNLINK ideal-int pkg syscall (darwin-386-cgo), const SYS_SHUTDOWN ideal-int pkg syscall (darwin-386-cgo), const SYS_SIGACTION ideal-int pkg syscall (darwin-386-cgo), const SYS_SIGALTSTACK ideal-int pkg syscall (darwin-386-cgo), const SYS_SIGPENDING ideal-int pkg syscall (darwin-386-cgo), const SYS_SIGPROCMASK ideal-int pkg syscall (darwin-386-cgo), const SYS_SIGRETURN ideal-int pkg syscall (darwin-386-cgo), const SYS_SIGSUSPEND ideal-int pkg syscall (darwin-386-cgo), const SYS_SIGSUSPEND_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_SOCKET ideal-int pkg syscall (darwin-386-cgo), const SYS_SOCKETPAIR ideal-int pkg syscall (darwin-386-cgo), const SYS_STACK_SNAPSHOT ideal-int pkg syscall (darwin-386-cgo), const SYS_STAT ideal-int pkg syscall (darwin-386-cgo), const SYS_STAT64 ideal-int pkg syscall (darwin-386-cgo), const SYS_STAT64_EXTENDED ideal-int pkg syscall (darwin-386-cgo), const SYS_STATFS ideal-int pkg syscall (darwin-386-cgo), const SYS_STATFS64 ideal-int pkg syscall (darwin-386-cgo), const SYS_STATV ideal-int pkg syscall (darwin-386-cgo), const SYS_STAT_EXTENDED ideal-int pkg syscall (darwin-386-cgo), const SYS_SWAPON ideal-int pkg syscall (darwin-386-cgo), const SYS_SYMLINK ideal-int pkg syscall (darwin-386-cgo), const SYS_SYNC ideal-int pkg syscall (darwin-386-cgo), const SYS_SYSCALL ideal-int pkg syscall (darwin-386-cgo), const SYS_THREAD_SELFID ideal-int pkg syscall (darwin-386-cgo), const SYS_TRUNCATE ideal-int pkg syscall (darwin-386-cgo), const SYS_UMASK ideal-int pkg syscall (darwin-386-cgo), const SYS_UMASK_EXTENDED ideal-int pkg syscall (darwin-386-cgo), const SYS_UNDELETE ideal-int pkg syscall (darwin-386-cgo), const SYS_UNLINK ideal-int pkg syscall (darwin-386-cgo), const SYS_UNMOUNT ideal-int pkg syscall (darwin-386-cgo), const SYS_UTIMES ideal-int pkg syscall (darwin-386-cgo), const SYS_VFORK ideal-int pkg syscall (darwin-386-cgo), const SYS_VM_PRESSURE_MONITOR ideal-int pkg syscall (darwin-386-cgo), const SYS_WAIT4 ideal-int pkg syscall (darwin-386-cgo), const SYS_WAIT4_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_WAITEVENT ideal-int pkg syscall (darwin-386-cgo), const SYS_WAITID ideal-int pkg syscall (darwin-386-cgo), const SYS_WAITID_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_WATCHEVENT ideal-int pkg syscall (darwin-386-cgo), const SYS_WORKQ_KERNRETURN ideal-int pkg syscall (darwin-386-cgo), const SYS_WORKQ_OPEN ideal-int pkg syscall (darwin-386-cgo), const SYS_WRITE ideal-int pkg syscall (darwin-386-cgo), const SYS_WRITEV ideal-int pkg syscall (darwin-386-cgo), const SYS_WRITEV_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS_WRITE_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS___DISABLE_THREADSIGNAL ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_EXECVE ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_GETFSSTAT ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_GET_FD ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_GET_FILE ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_GET_LCID ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_GET_LCTX ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_GET_LINK ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_GET_MOUNT ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_GET_PID ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_GET_PROC ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_MOUNT ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_SET_FD ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_SET_FILE ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_SET_LCTX ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_SET_LINK ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_SET_PROC ideal-int pkg syscall (darwin-386-cgo), const SYS___MAC_SYSCALL ideal-int pkg syscall (darwin-386-cgo), const SYS___OLD_SEMWAIT_SIGNAL ideal-int pkg syscall (darwin-386-cgo), const SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS___PTHREAD_CANCELED ideal-int pkg syscall (darwin-386-cgo), const SYS___PTHREAD_CHDIR ideal-int pkg syscall (darwin-386-cgo), const SYS___PTHREAD_FCHDIR ideal-int pkg syscall (darwin-386-cgo), const SYS___PTHREAD_KILL ideal-int pkg syscall (darwin-386-cgo), const SYS___PTHREAD_MARKCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS___PTHREAD_SIGMASK ideal-int pkg syscall (darwin-386-cgo), const SYS___SEMWAIT_SIGNAL ideal-int pkg syscall (darwin-386-cgo), const SYS___SEMWAIT_SIGNAL_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS___SIGWAIT ideal-int pkg syscall (darwin-386-cgo), const SYS___SIGWAIT_NOCANCEL ideal-int pkg syscall (darwin-386-cgo), const SYS___SYSCTL ideal-int pkg syscall (darwin-386-cgo), const S_IEXEC ideal-int pkg syscall (darwin-386-cgo), const S_IFWHT ideal-int pkg syscall (darwin-386-cgo), const S_IREAD ideal-int pkg syscall (darwin-386-cgo), const S_IRGRP ideal-int pkg syscall (darwin-386-cgo), const S_IROTH ideal-int pkg syscall (darwin-386-cgo), const S_IRWXG ideal-int pkg syscall (darwin-386-cgo), const S_IRWXO ideal-int pkg syscall (darwin-386-cgo), const S_IRWXU ideal-int pkg syscall (darwin-386-cgo), const S_ISTXT ideal-int pkg syscall (darwin-386-cgo), const S_IWGRP ideal-int pkg syscall (darwin-386-cgo), const S_IWOTH ideal-int pkg syscall (darwin-386-cgo), const S_IWRITE ideal-int pkg syscall (darwin-386-cgo), const S_IXGRP ideal-int pkg syscall (darwin-386-cgo), const S_IXOTH ideal-int pkg syscall (darwin-386-cgo), const SizeofBpfHdr ideal-int pkg syscall (darwin-386-cgo), const SizeofBpfInsn ideal-int pkg syscall (darwin-386-cgo), const SizeofBpfProgram ideal-int pkg syscall (darwin-386-cgo), const SizeofBpfStat ideal-int pkg syscall (darwin-386-cgo), const SizeofBpfVersion ideal-int pkg syscall (darwin-386-cgo), const SizeofCmsghdr ideal-int pkg syscall (darwin-386-cgo), const SizeofIPMreq ideal-int pkg syscall (darwin-386-cgo), const SizeofIPv6Mreq ideal-int pkg syscall (darwin-386-cgo), const SizeofIfData ideal-int pkg syscall (darwin-386-cgo), const SizeofIfMsghdr ideal-int pkg syscall (darwin-386-cgo), const SizeofIfaMsghdr ideal-int pkg syscall (darwin-386-cgo), const SizeofIfmaMsghdr ideal-int pkg syscall (darwin-386-cgo), const SizeofIfmaMsghdr2 ideal-int pkg syscall (darwin-386-cgo), const SizeofInet6Pktinfo ideal-int pkg syscall (darwin-386-cgo), const SizeofLinger ideal-int pkg syscall (darwin-386-cgo), const SizeofMsghdr ideal-int pkg syscall (darwin-386-cgo), const SizeofRtMetrics ideal-int pkg syscall (darwin-386-cgo), const SizeofRtMsghdr ideal-int pkg syscall (darwin-386-cgo), const SizeofSockaddrAny ideal-int pkg syscall (darwin-386-cgo), const SizeofSockaddrDatalink ideal-int pkg syscall (darwin-386-cgo), const SizeofSockaddrInet4 ideal-int pkg syscall (darwin-386-cgo), const SizeofSockaddrInet6 ideal-int pkg syscall (darwin-386-cgo), const SizeofSockaddrUnix ideal-int pkg syscall (darwin-386-cgo), const TCP_CONNECTIONTIMEOUT ideal-int pkg syscall (darwin-386-cgo), const TCP_KEEPALIVE ideal-int pkg syscall (darwin-386-cgo), const TCP_MAXHLEN ideal-int pkg syscall (darwin-386-cgo), const TCP_MAXOLEN ideal-int pkg syscall (darwin-386-cgo), const TCP_MAXSEG ideal-int pkg syscall (darwin-386-cgo), const TCP_MAXWIN ideal-int pkg syscall (darwin-386-cgo), const TCP_MAX_SACK ideal-int pkg syscall (darwin-386-cgo), const TCP_MAX_WINSHIFT ideal-int pkg syscall (darwin-386-cgo), const TCP_MINMSS ideal-int pkg syscall (darwin-386-cgo), const TCP_MINMSSOVERLOAD ideal-int pkg syscall (darwin-386-cgo), const TCP_MSS ideal-int pkg syscall (darwin-386-cgo), const TCP_NOOPT ideal-int pkg syscall (darwin-386-cgo), const TCP_NOPUSH ideal-int pkg syscall (darwin-386-cgo), const TCP_RXT_CONNDROPTIME ideal-int pkg syscall (darwin-386-cgo), const TCP_RXT_FINDROP ideal-int pkg syscall (darwin-386-cgo), const TIOCCBRK ideal-int pkg syscall (darwin-386-cgo), const TIOCCDTR ideal-int pkg syscall (darwin-386-cgo), const TIOCCONS ideal-int pkg syscall (darwin-386-cgo), const TIOCDCDTIMESTAMP ideal-int pkg syscall (darwin-386-cgo), const TIOCDRAIN ideal-int pkg syscall (darwin-386-cgo), const TIOCDSIMICROCODE ideal-int pkg syscall (darwin-386-cgo), const TIOCEXCL ideal-int pkg syscall (darwin-386-cgo), const TIOCEXT ideal-int pkg syscall (darwin-386-cgo), const TIOCFLUSH ideal-int pkg syscall (darwin-386-cgo), const TIOCGDRAINWAIT ideal-int pkg syscall (darwin-386-cgo), const TIOCGETA ideal-int pkg syscall (darwin-386-cgo), const TIOCGETD ideal-int pkg syscall (darwin-386-cgo), const TIOCGPGRP ideal-int pkg syscall (darwin-386-cgo), const TIOCGWINSZ ideal-int pkg syscall (darwin-386-cgo), const TIOCIXOFF ideal-int pkg syscall (darwin-386-cgo), const TIOCIXON ideal-int pkg syscall (darwin-386-cgo), const TIOCMBIC ideal-int pkg syscall (darwin-386-cgo), const TIOCMBIS ideal-int pkg syscall (darwin-386-cgo), const TIOCMGDTRWAIT ideal-int pkg syscall (darwin-386-cgo), const TIOCMGET ideal-int pkg syscall (darwin-386-cgo), const TIOCMODG ideal-int pkg syscall (darwin-386-cgo), const TIOCMODS ideal-int pkg syscall (darwin-386-cgo), const TIOCMSDTRWAIT ideal-int pkg syscall (darwin-386-cgo), const TIOCMSET ideal-int pkg syscall (darwin-386-cgo), const TIOCM_CAR ideal-int pkg syscall (darwin-386-cgo), const TIOCM_CD ideal-int pkg syscall (darwin-386-cgo), const TIOCM_CTS ideal-int pkg syscall (darwin-386-cgo), const TIOCM_DSR ideal-int pkg syscall (darwin-386-cgo), const TIOCM_DTR ideal-int pkg syscall (darwin-386-cgo), const TIOCM_LE ideal-int pkg syscall (darwin-386-cgo), const TIOCM_RI ideal-int pkg syscall (darwin-386-cgo), const TIOCM_RNG ideal-int pkg syscall (darwin-386-cgo), const TIOCM_RTS ideal-int pkg syscall (darwin-386-cgo), const TIOCM_SR ideal-int pkg syscall (darwin-386-cgo), const TIOCM_ST ideal-int pkg syscall (darwin-386-cgo), const TIOCNOTTY ideal-int pkg syscall (darwin-386-cgo), const TIOCNXCL ideal-int pkg syscall (darwin-386-cgo), const TIOCOUTQ ideal-int pkg syscall (darwin-386-cgo), const TIOCPKT ideal-int pkg syscall (darwin-386-cgo), const TIOCPKT_DATA ideal-int pkg syscall (darwin-386-cgo), const TIOCPKT_DOSTOP ideal-int pkg syscall (darwin-386-cgo), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (darwin-386-cgo), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (darwin-386-cgo), const TIOCPKT_IOCTL ideal-int pkg syscall (darwin-386-cgo), const TIOCPKT_NOSTOP ideal-int pkg syscall (darwin-386-cgo), const TIOCPKT_START ideal-int pkg syscall (darwin-386-cgo), const TIOCPKT_STOP ideal-int pkg syscall (darwin-386-cgo), const TIOCPTYGNAME ideal-int pkg syscall (darwin-386-cgo), const TIOCPTYGRANT ideal-int pkg syscall (darwin-386-cgo), const TIOCPTYUNLK ideal-int pkg syscall (darwin-386-cgo), const TIOCREMOTE ideal-int pkg syscall (darwin-386-cgo), const TIOCSBRK ideal-int pkg syscall (darwin-386-cgo), const TIOCSCONS ideal-int pkg syscall (darwin-386-cgo), const TIOCSCTTY ideal-int pkg syscall (darwin-386-cgo), const TIOCSDRAINWAIT ideal-int pkg syscall (darwin-386-cgo), const TIOCSDTR ideal-int pkg syscall (darwin-386-cgo), const TIOCSETA ideal-int pkg syscall (darwin-386-cgo), const TIOCSETAF ideal-int pkg syscall (darwin-386-cgo), const TIOCSETAW ideal-int pkg syscall (darwin-386-cgo), const TIOCSETD ideal-int pkg syscall (darwin-386-cgo), const TIOCSIG ideal-int pkg syscall (darwin-386-cgo), const TIOCSPGRP ideal-int pkg syscall (darwin-386-cgo), const TIOCSTART ideal-int pkg syscall (darwin-386-cgo), const TIOCSTAT ideal-int pkg syscall (darwin-386-cgo), const TIOCSTI ideal-int pkg syscall (darwin-386-cgo), const TIOCSTOP ideal-int pkg syscall (darwin-386-cgo), const TIOCSWINSZ ideal-int pkg syscall (darwin-386-cgo), const TIOCTIMESTAMP ideal-int pkg syscall (darwin-386-cgo), const TIOCUCNTL ideal-int pkg syscall (darwin-386-cgo), const WCONTINUED ideal-int pkg syscall (darwin-386-cgo), const WCOREFLAG ideal-int pkg syscall (darwin-386-cgo), const WEXITED ideal-int pkg syscall (darwin-386-cgo), const WNOHANG ideal-int pkg syscall (darwin-386-cgo), const WNOWAIT ideal-int pkg syscall (darwin-386-cgo), const WORDSIZE ideal-int pkg syscall (darwin-386-cgo), const WSTOPPED ideal-int pkg syscall (darwin-386-cgo), const WUNTRACED ideal-int pkg syscall (darwin-386-cgo), func Accept(int) (int, Sockaddr, error) pkg syscall (darwin-386-cgo), func Access(string, uint32) error pkg syscall (darwin-386-cgo), func Adjtime(*Timeval, *Timeval) error pkg syscall (darwin-386-cgo), func Bind(int, Sockaddr) error pkg syscall (darwin-386-cgo), func BpfBuflen(int) (int, error) pkg syscall (darwin-386-cgo), func BpfDatalink(int) (int, error) pkg syscall (darwin-386-cgo), func BpfHeadercmpl(int) (int, error) pkg syscall (darwin-386-cgo), func BpfInterface(int, string) (string, error) pkg syscall (darwin-386-cgo), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (darwin-386-cgo), func BpfStats(int) (*BpfStat, error) pkg syscall (darwin-386-cgo), func BpfStmt(int, int) *BpfInsn pkg syscall (darwin-386-cgo), func BpfTimeout(int) (*Timeval, error) pkg syscall (darwin-386-cgo), func CheckBpfVersion(int) error pkg syscall (darwin-386-cgo), func Chflags(string, int) error pkg syscall (darwin-386-cgo), func Chroot(string) error pkg syscall (darwin-386-cgo), func Close(int) error pkg syscall (darwin-386-cgo), func CloseOnExec(int) pkg syscall (darwin-386-cgo), func CmsgLen(int) int pkg syscall (darwin-386-cgo), func CmsgSpace(int) int pkg syscall (darwin-386-cgo), func Connect(int, Sockaddr) error pkg syscall (darwin-386-cgo), func Dup(int) (int, error) pkg syscall (darwin-386-cgo), func Dup2(int, int) error pkg syscall (darwin-386-cgo), func Exchangedata(string, string, int) error pkg syscall (darwin-386-cgo), func Fchdir(int) error pkg syscall (darwin-386-cgo), func Fchflags(string, int) error pkg syscall (darwin-386-cgo), func Fchmod(int, uint32) error pkg syscall (darwin-386-cgo), func Fchown(int, int, int) error pkg syscall (darwin-386-cgo), func Flock(int, int) error pkg syscall (darwin-386-cgo), func FlushBpf(int) error pkg syscall (darwin-386-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (darwin-386-cgo), func Fpathconf(int, int) (int, error) pkg syscall (darwin-386-cgo), func Fstat(int, *Stat_t) error pkg syscall (darwin-386-cgo), func Fstatfs(int, *Statfs_t) error pkg syscall (darwin-386-cgo), func Fsync(int) error pkg syscall (darwin-386-cgo), func Ftruncate(int, int64) error pkg syscall (darwin-386-cgo), func Futimes(int, []Timeval) error pkg syscall (darwin-386-cgo), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (darwin-386-cgo), func Getdtablesize() int pkg syscall (darwin-386-cgo), func Getfsstat([]Statfs_t, int) (int, error) pkg syscall (darwin-386-cgo), func Getpeername(int) (Sockaddr, error) pkg syscall (darwin-386-cgo), func Getpgid(int) (int, error) pkg syscall (darwin-386-cgo), func Getpgrp() int pkg syscall (darwin-386-cgo), func Getpriority(int, int) (int, error) pkg syscall (darwin-386-cgo), func Getrlimit(int, *Rlimit) error pkg syscall (darwin-386-cgo), func Getrusage(int, *Rusage) error pkg syscall (darwin-386-cgo), func Getsid(int) (int, error) pkg syscall (darwin-386-cgo), func Getsockname(int) (Sockaddr, error) pkg syscall (darwin-386-cgo), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (darwin-386-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (darwin-386-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (darwin-386-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (darwin-386-cgo), func GetsockoptInt(int, int, int) (int, error) pkg syscall (darwin-386-cgo), func Issetugid() bool pkg syscall (darwin-386-cgo), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (darwin-386-cgo), func Kill(int, Signal) error pkg syscall (darwin-386-cgo), func Kqueue() (int, error) pkg syscall (darwin-386-cgo), func Listen(int, int) error pkg syscall (darwin-386-cgo), func Lstat(string, *Stat_t) error pkg syscall (darwin-386-cgo), func Mkfifo(string, uint32) error pkg syscall (darwin-386-cgo), func Mknod(string, uint32, int) error pkg syscall (darwin-386-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (darwin-386-cgo), func Munmap([]uint8) error pkg syscall (darwin-386-cgo), func NsecToTimespec(int64) Timespec pkg syscall (darwin-386-cgo), func Open(string, int, uint32) (int, error) pkg syscall (darwin-386-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (darwin-386-cgo), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (darwin-386-cgo), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (darwin-386-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (darwin-386-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (darwin-386-cgo), func Pathconf(string, int) (int, error) pkg syscall (darwin-386-cgo), func Pipe([]int) error pkg syscall (darwin-386-cgo), func Pread(int, []uint8, int64) (int, error) pkg syscall (darwin-386-cgo), func PtraceAttach(int) error pkg syscall (darwin-386-cgo), func PtraceDetach(int) error pkg syscall (darwin-386-cgo), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (darwin-386-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-386-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-386-cgo), func Read(int, []uint8) (int, error) pkg syscall (darwin-386-cgo), func ReadDirent(int, []uint8) (int, error) pkg syscall (darwin-386-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (darwin-386-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (darwin-386-cgo), func Revoke(string) error pkg syscall (darwin-386-cgo), func RouteRIB(int, int) ([]uint8, error) pkg syscall (darwin-386-cgo), func Seek(int, int64, int) (int64, error) pkg syscall (darwin-386-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (darwin-386-cgo), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (darwin-386-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (darwin-386-cgo), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (darwin-386-cgo), func SetBpf(int, []BpfInsn) error pkg syscall (darwin-386-cgo), func SetBpfBuflen(int, int) (int, error) pkg syscall (darwin-386-cgo), func SetBpfDatalink(int, int) (int, error) pkg syscall (darwin-386-cgo), func SetBpfHeadercmpl(int, int) error pkg syscall (darwin-386-cgo), func SetBpfImmediate(int, int) error pkg syscall (darwin-386-cgo), func SetBpfInterface(int, string) error pkg syscall (darwin-386-cgo), func SetBpfPromisc(int, int) error pkg syscall (darwin-386-cgo), func SetBpfTimeout(int, *Timeval) error pkg syscall (darwin-386-cgo), func SetKevent(*Kevent_t, int, int, int) pkg syscall (darwin-386-cgo), func SetNonblock(int, bool) error pkg syscall (darwin-386-cgo), func Setegid(int) error pkg syscall (darwin-386-cgo), func Seteuid(int) error pkg syscall (darwin-386-cgo), func Setgid(int) error pkg syscall (darwin-386-cgo), func Setgroups([]int) error pkg syscall (darwin-386-cgo), func Setlogin(string) error pkg syscall (darwin-386-cgo), func Setpgid(int, int) error pkg syscall (darwin-386-cgo), func Setpriority(int, int, int) error pkg syscall (darwin-386-cgo), func Setprivexec(int) error pkg syscall (darwin-386-cgo), func Setregid(int, int) error pkg syscall (darwin-386-cgo), func Setreuid(int, int) error pkg syscall (darwin-386-cgo), func Setrlimit(int, *Rlimit) error pkg syscall (darwin-386-cgo), func Setsid() (int, error) pkg syscall (darwin-386-cgo), func SetsockoptByte(int, int, int, uint8) error pkg syscall (darwin-386-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (darwin-386-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (darwin-386-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (darwin-386-cgo), func SetsockoptInt(int, int, int, int) error pkg syscall (darwin-386-cgo), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (darwin-386-cgo), func SetsockoptString(int, int, int, string) error pkg syscall (darwin-386-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (darwin-386-cgo), func Settimeofday(*Timeval) error pkg syscall (darwin-386-cgo), func Setuid(int) error pkg syscall (darwin-386-cgo), func Shutdown(int, int) error pkg syscall (darwin-386-cgo), func Socket(int, int, int) (int, error) pkg syscall (darwin-386-cgo), func Socketpair(int, int, int) ([2]int, error) pkg syscall (darwin-386-cgo), func Stat(string, *Stat_t) error pkg syscall (darwin-386-cgo), func Statfs(string, *Statfs_t) error pkg syscall (darwin-386-cgo), func StringSlicePtr([]string) []*uint8 pkg syscall (darwin-386-cgo), func Sync() error pkg syscall (darwin-386-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-386-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-386-cgo), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-386-cgo), func Sysctl(string) (string, error) pkg syscall (darwin-386-cgo), func SysctlUint32(string) (uint32, error) pkg syscall (darwin-386-cgo), func TimespecToNsec(Timespec) int64 pkg syscall (darwin-386-cgo), func TimevalToNsec(Timeval) int64 pkg syscall (darwin-386-cgo), func Truncate(string, int64) error pkg syscall (darwin-386-cgo), func Umask(int) int pkg syscall (darwin-386-cgo), func Undelete(string) error pkg syscall (darwin-386-cgo), func UnixRights(...int) []uint8 pkg syscall (darwin-386-cgo), func Unmount(string, int) error pkg syscall (darwin-386-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (darwin-386-cgo), func Write(int, []uint8) (int, error) pkg syscall (darwin-386-cgo), method (*Cmsghdr) SetLen(int) pkg syscall (darwin-386-cgo), method (*Iovec) SetLen(int) pkg syscall (darwin-386-cgo), method (*Msghdr) SetControllen(int) pkg syscall (darwin-386-cgo), type BpfHdr struct pkg syscall (darwin-386-cgo), type BpfHdr struct, Caplen uint32 pkg syscall (darwin-386-cgo), type BpfHdr struct, Datalen uint32 pkg syscall (darwin-386-cgo), type BpfHdr struct, Hdrlen uint16 pkg syscall (darwin-386-cgo), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-386-cgo), type BpfHdr struct, Tstamp Timeval pkg syscall (darwin-386-cgo), type BpfInsn struct pkg syscall (darwin-386-cgo), type BpfInsn struct, Code uint16 pkg syscall (darwin-386-cgo), type BpfInsn struct, Jf uint8 pkg syscall (darwin-386-cgo), type BpfInsn struct, Jt uint8 pkg syscall (darwin-386-cgo), type BpfInsn struct, K uint32 pkg syscall (darwin-386-cgo), type BpfProgram struct pkg syscall (darwin-386-cgo), type BpfProgram struct, Insns *BpfInsn pkg syscall (darwin-386-cgo), type BpfProgram struct, Len uint32 pkg syscall (darwin-386-cgo), type BpfStat struct pkg syscall (darwin-386-cgo), type BpfStat struct, Drop uint32 pkg syscall (darwin-386-cgo), type BpfStat struct, Recv uint32 pkg syscall (darwin-386-cgo), type BpfVersion struct pkg syscall (darwin-386-cgo), type BpfVersion struct, Major uint16 pkg syscall (darwin-386-cgo), type BpfVersion struct, Minor uint16 pkg syscall (darwin-386-cgo), type Cmsghdr struct pkg syscall (darwin-386-cgo), type Cmsghdr struct, Len uint32 pkg syscall (darwin-386-cgo), type Cmsghdr struct, Level int32 pkg syscall (darwin-386-cgo), type Cmsghdr struct, Type int32 pkg syscall (darwin-386-cgo), type Credential struct pkg syscall (darwin-386-cgo), type Credential struct, Gid uint32 pkg syscall (darwin-386-cgo), type Credential struct, Groups []uint32 pkg syscall (darwin-386-cgo), type Credential struct, Uid uint32 pkg syscall (darwin-386-cgo), type Dirent struct pkg syscall (darwin-386-cgo), type Dirent struct, Ino uint64 pkg syscall (darwin-386-cgo), type Dirent struct, Name [1024]int8 pkg syscall (darwin-386-cgo), type Dirent struct, Namlen uint16 pkg syscall (darwin-386-cgo), type Dirent struct, Pad_cgo_0 [3]uint8 pkg syscall (darwin-386-cgo), type Dirent struct, Reclen uint16 pkg syscall (darwin-386-cgo), type Dirent struct, Seekoff uint64 pkg syscall (darwin-386-cgo), type Dirent struct, Type uint8 pkg syscall (darwin-386-cgo), type Fbootstraptransfer_t struct pkg syscall (darwin-386-cgo), type Fbootstraptransfer_t struct, Buffer *uint8 pkg syscall (darwin-386-cgo), type Fbootstraptransfer_t struct, Length uint32 pkg syscall (darwin-386-cgo), type Fbootstraptransfer_t struct, Offset int64 pkg syscall (darwin-386-cgo), type FdSet struct pkg syscall (darwin-386-cgo), type FdSet struct, Bits [32]int32 pkg syscall (darwin-386-cgo), type Flock_t struct pkg syscall (darwin-386-cgo), type Flock_t struct, Len int64 pkg syscall (darwin-386-cgo), type Flock_t struct, Pid int32 pkg syscall (darwin-386-cgo), type Flock_t struct, Start int64 pkg syscall (darwin-386-cgo), type Flock_t struct, Type int16 pkg syscall (darwin-386-cgo), type Flock_t struct, Whence int16 pkg syscall (darwin-386-cgo), type Fsid struct pkg syscall (darwin-386-cgo), type Fsid struct, Val [2]int32 pkg syscall (darwin-386-cgo), type Fstore_t struct pkg syscall (darwin-386-cgo), type Fstore_t struct, Bytesalloc int64 pkg syscall (darwin-386-cgo), type Fstore_t struct, Flags uint32 pkg syscall (darwin-386-cgo), type Fstore_t struct, Length int64 pkg syscall (darwin-386-cgo), type Fstore_t struct, Offset int64 pkg syscall (darwin-386-cgo), type Fstore_t struct, Posmode int32 pkg syscall (darwin-386-cgo), type IfData struct pkg syscall (darwin-386-cgo), type IfData struct, Addrlen uint8 pkg syscall (darwin-386-cgo), type IfData struct, Baudrate uint32 pkg syscall (darwin-386-cgo), type IfData struct, Collisions uint32 pkg syscall (darwin-386-cgo), type IfData struct, Hdrlen uint8 pkg syscall (darwin-386-cgo), type IfData struct, Hwassist uint32 pkg syscall (darwin-386-cgo), type IfData struct, Ibytes uint32 pkg syscall (darwin-386-cgo), type IfData struct, Ierrors uint32 pkg syscall (darwin-386-cgo), type IfData struct, Imcasts uint32 pkg syscall (darwin-386-cgo), type IfData struct, Ipackets uint32 pkg syscall (darwin-386-cgo), type IfData struct, Iqdrops uint32 pkg syscall (darwin-386-cgo), type IfData struct, Lastchange Timeval pkg syscall (darwin-386-cgo), type IfData struct, Metric uint32 pkg syscall (darwin-386-cgo), type IfData struct, Mtu uint32 pkg syscall (darwin-386-cgo), type IfData struct, Noproto uint32 pkg syscall (darwin-386-cgo), type IfData struct, Obytes uint32 pkg syscall (darwin-386-cgo), type IfData struct, Oerrors uint32 pkg syscall (darwin-386-cgo), type IfData struct, Omcasts uint32 pkg syscall (darwin-386-cgo), type IfData struct, Opackets uint32 pkg syscall (darwin-386-cgo), type IfData struct, Physical uint8 pkg syscall (darwin-386-cgo), type IfData struct, Recvquota uint8 pkg syscall (darwin-386-cgo), type IfData struct, Recvtiming uint32 pkg syscall (darwin-386-cgo), type IfData struct, Reserved1 uint32 pkg syscall (darwin-386-cgo), type IfData struct, Reserved2 uint32 pkg syscall (darwin-386-cgo), type IfData struct, Type uint8 pkg syscall (darwin-386-cgo), type IfData struct, Typelen uint8 pkg syscall (darwin-386-cgo), type IfData struct, Unused1 uint8 pkg syscall (darwin-386-cgo), type IfData struct, Unused2 uint32 pkg syscall (darwin-386-cgo), type IfData struct, Xmitquota uint8 pkg syscall (darwin-386-cgo), type IfData struct, Xmittiming uint32 pkg syscall (darwin-386-cgo), type IfMsghdr struct pkg syscall (darwin-386-cgo), type IfMsghdr struct, Addrs int32 pkg syscall (darwin-386-cgo), type IfMsghdr struct, Data IfData pkg syscall (darwin-386-cgo), type IfMsghdr struct, Flags int32 pkg syscall (darwin-386-cgo), type IfMsghdr struct, Index uint16 pkg syscall (darwin-386-cgo), type IfMsghdr struct, Msglen uint16 pkg syscall (darwin-386-cgo), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-386-cgo), type IfMsghdr struct, Type uint8 pkg syscall (darwin-386-cgo), type IfMsghdr struct, Version uint8 pkg syscall (darwin-386-cgo), type IfaMsghdr struct pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Addrs int32 pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Flags int32 pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Index uint16 pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Metric int32 pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Msglen uint16 pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Type uint8 pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Version uint8 pkg syscall (darwin-386-cgo), type IfmaMsghdr struct pkg syscall (darwin-386-cgo), type IfmaMsghdr struct, Addrs int32 pkg syscall (darwin-386-cgo), type IfmaMsghdr struct, Flags int32 pkg syscall (darwin-386-cgo), type IfmaMsghdr struct, Index uint16 pkg syscall (darwin-386-cgo), type IfmaMsghdr struct, Msglen uint16 pkg syscall (darwin-386-cgo), type IfmaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-386-cgo), type IfmaMsghdr struct, Type uint8 pkg syscall (darwin-386-cgo), type IfmaMsghdr struct, Version uint8 pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Addrs int32 pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Flags int32 pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Index uint16 pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Msglen uint16 pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Refcount int32 pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Type uint8 pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Version uint8 pkg syscall (darwin-386-cgo), type Inet6Pktinfo struct pkg syscall (darwin-386-cgo), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (darwin-386-cgo), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (darwin-386-cgo), type InterfaceAddrMessage struct pkg syscall (darwin-386-cgo), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (darwin-386-cgo), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (darwin-386-cgo), type InterfaceMessage struct pkg syscall (darwin-386-cgo), type InterfaceMessage struct, Data []uint8 pkg syscall (darwin-386-cgo), type InterfaceMessage struct, Header IfMsghdr pkg syscall (darwin-386-cgo), type InterfaceMulticastAddrMessage struct pkg syscall (darwin-386-cgo), type InterfaceMulticastAddrMessage struct, Data []uint8 pkg syscall (darwin-386-cgo), type InterfaceMulticastAddrMessage struct, Header IfmaMsghdr2 pkg syscall (darwin-386-cgo), type Iovec struct pkg syscall (darwin-386-cgo), type Iovec struct, Base *uint8 pkg syscall (darwin-386-cgo), type Iovec struct, Len uint32 pkg syscall (darwin-386-cgo), type Kevent_t struct pkg syscall (darwin-386-cgo), type Kevent_t struct, Data int32 pkg syscall (darwin-386-cgo), type Kevent_t struct, Fflags uint32 pkg syscall (darwin-386-cgo), type Kevent_t struct, Filter int16 pkg syscall (darwin-386-cgo), type Kevent_t struct, Flags uint16 pkg syscall (darwin-386-cgo), type Kevent_t struct, Ident uint32 pkg syscall (darwin-386-cgo), type Kevent_t struct, Udata *uint8 pkg syscall (darwin-386-cgo), type Log2phys_t struct pkg syscall (darwin-386-cgo), type Log2phys_t struct, Contigbytes int64 pkg syscall (darwin-386-cgo), type Log2phys_t struct, Devoffset int64 pkg syscall (darwin-386-cgo), type Log2phys_t struct, Flags uint32 pkg syscall (darwin-386-cgo), type Msghdr struct pkg syscall (darwin-386-cgo), type Msghdr struct, Control *uint8 pkg syscall (darwin-386-cgo), type Msghdr struct, Controllen uint32 pkg syscall (darwin-386-cgo), type Msghdr struct, Flags int32 pkg syscall (darwin-386-cgo), type Msghdr struct, Iov *Iovec pkg syscall (darwin-386-cgo), type Msghdr struct, Iovlen int32 pkg syscall (darwin-386-cgo), type Msghdr struct, Name *uint8 pkg syscall (darwin-386-cgo), type Msghdr struct, Namelen uint32 pkg syscall (darwin-386-cgo), type Radvisory_t struct pkg syscall (darwin-386-cgo), type Radvisory_t struct, Count int32 pkg syscall (darwin-386-cgo), type Radvisory_t struct, Offset int64 pkg syscall (darwin-386-cgo), type RawSockaddr struct, Data [14]int8 pkg syscall (darwin-386-cgo), type RawSockaddr struct, Family uint8 pkg syscall (darwin-386-cgo), type RawSockaddr struct, Len uint8 pkg syscall (darwin-386-cgo), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Data [12]int8 pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Family uint8 pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Index uint16 pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Len uint8 pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Type uint8 pkg syscall (darwin-386-cgo), type RawSockaddrInet4 struct, Family uint8 pkg syscall (darwin-386-cgo), type RawSockaddrInet4 struct, Len uint8 pkg syscall (darwin-386-cgo), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (darwin-386-cgo), type RawSockaddrInet6 struct pkg syscall (darwin-386-cgo), type RawSockaddrInet6 struct, Addr [16]uint8 pkg syscall (darwin-386-cgo), type RawSockaddrInet6 struct, Family uint8 pkg syscall (darwin-386-cgo), type RawSockaddrInet6 struct, Flowinfo uint32 pkg syscall (darwin-386-cgo), type RawSockaddrInet6 struct, Len uint8 pkg syscall (darwin-386-cgo), type RawSockaddrInet6 struct, Port uint16 pkg syscall (darwin-386-cgo), type RawSockaddrInet6 struct, Scope_id uint32 pkg syscall (darwin-386-cgo), type RawSockaddrUnix struct pkg syscall (darwin-386-cgo), type RawSockaddrUnix struct, Family uint8 pkg syscall (darwin-386-cgo), type RawSockaddrUnix struct, Len uint8 pkg syscall (darwin-386-cgo), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (darwin-386-cgo), type Rlimit struct pkg syscall (darwin-386-cgo), type Rlimit struct, Cur uint64 pkg syscall (darwin-386-cgo), type Rlimit struct, Max uint64 pkg syscall (darwin-386-cgo), type RouteMessage struct pkg syscall (darwin-386-cgo), type RouteMessage struct, Data []uint8 pkg syscall (darwin-386-cgo), type RouteMessage struct, Header RtMsghdr pkg syscall (darwin-386-cgo), type RoutingMessage interface, unexported methods pkg syscall (darwin-386-cgo), type RtMetrics struct pkg syscall (darwin-386-cgo), type RtMetrics struct, Expire int32 pkg syscall (darwin-386-cgo), type RtMetrics struct, Filler [4]uint32 pkg syscall (darwin-386-cgo), type RtMetrics struct, Hopcount uint32 pkg syscall (darwin-386-cgo), type RtMetrics struct, Locks uint32 pkg syscall (darwin-386-cgo), type RtMetrics struct, Mtu uint32 pkg syscall (darwin-386-cgo), type RtMetrics struct, Pksent uint32 pkg syscall (darwin-386-cgo), type RtMetrics struct, Recvpipe uint32 pkg syscall (darwin-386-cgo), type RtMetrics struct, Rtt uint32 pkg syscall (darwin-386-cgo), type RtMetrics struct, Rttvar uint32 pkg syscall (darwin-386-cgo), type RtMetrics struct, Sendpipe uint32 pkg syscall (darwin-386-cgo), type RtMetrics struct, Ssthresh uint32 pkg syscall (darwin-386-cgo), type RtMsghdr struct pkg syscall (darwin-386-cgo), type RtMsghdr struct, Addrs int32 pkg syscall (darwin-386-cgo), type RtMsghdr struct, Errno int32 pkg syscall (darwin-386-cgo), type RtMsghdr struct, Flags int32 pkg syscall (darwin-386-cgo), type RtMsghdr struct, Index uint16 pkg syscall (darwin-386-cgo), type RtMsghdr struct, Inits uint32 pkg syscall (darwin-386-cgo), type RtMsghdr struct, Msglen uint16 pkg syscall (darwin-386-cgo), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-386-cgo), type RtMsghdr struct, Pid int32 pkg syscall (darwin-386-cgo), type RtMsghdr struct, Rmx RtMetrics pkg syscall (darwin-386-cgo), type RtMsghdr struct, Seq int32 pkg syscall (darwin-386-cgo), type RtMsghdr struct, Type uint8 pkg syscall (darwin-386-cgo), type RtMsghdr struct, Use int32 pkg syscall (darwin-386-cgo), type RtMsghdr struct, Version uint8 pkg syscall (darwin-386-cgo), type Rusage struct, Idrss int32 pkg syscall (darwin-386-cgo), type Rusage struct, Inblock int32 pkg syscall (darwin-386-cgo), type Rusage struct, Isrss int32 pkg syscall (darwin-386-cgo), type Rusage struct, Ixrss int32 pkg syscall (darwin-386-cgo), type Rusage struct, Majflt int32 pkg syscall (darwin-386-cgo), type Rusage struct, Maxrss int32 pkg syscall (darwin-386-cgo), type Rusage struct, Minflt int32 pkg syscall (darwin-386-cgo), type Rusage struct, Msgrcv int32 pkg syscall (darwin-386-cgo), type Rusage struct, Msgsnd int32 pkg syscall (darwin-386-cgo), type Rusage struct, Nivcsw int32 pkg syscall (darwin-386-cgo), type Rusage struct, Nsignals int32 pkg syscall (darwin-386-cgo), type Rusage struct, Nswap int32 pkg syscall (darwin-386-cgo), type Rusage struct, Nvcsw int32 pkg syscall (darwin-386-cgo), type Rusage struct, Oublock int32 pkg syscall (darwin-386-cgo), type Rusage struct, Stime Timeval pkg syscall (darwin-386-cgo), type Rusage struct, Utime Timeval pkg syscall (darwin-386-cgo), type SockaddrDatalink struct pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Alen uint8 pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Data [12]int8 pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Family uint8 pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Index uint16 pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Len uint8 pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Nlen uint8 pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Slen uint8 pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Type uint8 pkg syscall (darwin-386-cgo), type SocketControlMessage struct pkg syscall (darwin-386-cgo), type SocketControlMessage struct, Data []uint8 pkg syscall (darwin-386-cgo), type SocketControlMessage struct, Header Cmsghdr pkg syscall (darwin-386-cgo), type Stat_t struct pkg syscall (darwin-386-cgo), type Stat_t struct, Atimespec Timespec pkg syscall (darwin-386-cgo), type Stat_t struct, Birthtimespec Timespec pkg syscall (darwin-386-cgo), type Stat_t struct, Blksize int32 pkg syscall (darwin-386-cgo), type Stat_t struct, Blocks int64 pkg syscall (darwin-386-cgo), type Stat_t struct, Ctimespec Timespec pkg syscall (darwin-386-cgo), type Stat_t struct, Dev int32 pkg syscall (darwin-386-cgo), type Stat_t struct, Flags uint32 pkg syscall (darwin-386-cgo), type Stat_t struct, Gen uint32 pkg syscall (darwin-386-cgo), type Stat_t struct, Gid uint32 pkg syscall (darwin-386-cgo), type Stat_t struct, Ino uint64 pkg syscall (darwin-386-cgo), type Stat_t struct, Lspare int32 pkg syscall (darwin-386-cgo), type Stat_t struct, Mode uint16 pkg syscall (darwin-386-cgo), type Stat_t struct, Mtimespec Timespec pkg syscall (darwin-386-cgo), type Stat_t struct, Nlink uint16 pkg syscall (darwin-386-cgo), type Stat_t struct, Qspare [2]int64 pkg syscall (darwin-386-cgo), type Stat_t struct, Rdev int32 pkg syscall (darwin-386-cgo), type Stat_t struct, Size int64 pkg syscall (darwin-386-cgo), type Stat_t struct, Uid uint32 pkg syscall (darwin-386-cgo), type Statfs_t struct pkg syscall (darwin-386-cgo), type Statfs_t struct, Bavail uint64 pkg syscall (darwin-386-cgo), type Statfs_t struct, Bfree uint64 pkg syscall (darwin-386-cgo), type Statfs_t struct, Blocks uint64 pkg syscall (darwin-386-cgo), type Statfs_t struct, Bsize uint32 pkg syscall (darwin-386-cgo), type Statfs_t struct, Ffree uint64 pkg syscall (darwin-386-cgo), type Statfs_t struct, Files uint64 pkg syscall (darwin-386-cgo), type Statfs_t struct, Flags uint32 pkg syscall (darwin-386-cgo), type Statfs_t struct, Fsid Fsid pkg syscall (darwin-386-cgo), type Statfs_t struct, Fssubtype uint32 pkg syscall (darwin-386-cgo), type Statfs_t struct, Fstypename [16]int8 pkg syscall (darwin-386-cgo), type Statfs_t struct, Iosize int32 pkg syscall (darwin-386-cgo), type Statfs_t struct, Mntfromname [1024]int8 pkg syscall (darwin-386-cgo), type Statfs_t struct, Mntonname [1024]int8 pkg syscall (darwin-386-cgo), type Statfs_t struct, Owner uint32 pkg syscall (darwin-386-cgo), type Statfs_t struct, Reserved [8]uint32 pkg syscall (darwin-386-cgo), type Statfs_t struct, Type uint32 pkg syscall (darwin-386-cgo), type SysProcAttr struct, Chroot string pkg syscall (darwin-386-cgo), type SysProcAttr struct, Credential *Credential pkg syscall (darwin-386-cgo), type SysProcAttr struct, Noctty bool pkg syscall (darwin-386-cgo), type SysProcAttr struct, Ptrace bool pkg syscall (darwin-386-cgo), type SysProcAttr struct, Setctty bool pkg syscall (darwin-386-cgo), type SysProcAttr struct, Setpgid bool pkg syscall (darwin-386-cgo), type SysProcAttr struct, Setsid bool pkg syscall (darwin-386-cgo), type Timespec struct, Nsec int32 pkg syscall (darwin-386-cgo), type Timespec struct, Sec int32 pkg syscall (darwin-386-cgo), type Timeval struct, Sec int32 pkg syscall (darwin-386-cgo), type Timeval struct, Usec int32 pkg syscall (darwin-386-cgo), type Timeval32 [0]uint8 pkg syscall (darwin-386-cgo), type WaitStatus uint32 pkg syscall (darwin-386-cgo), var Stderr int pkg syscall (darwin-386-cgo), var Stdin int pkg syscall (darwin-386-cgo), var Stdout int pkg syscall (darwin-amd64), const AF_APPLETALK ideal-int pkg syscall (darwin-amd64), const AF_CCITT ideal-int pkg syscall (darwin-amd64), const AF_CHAOS ideal-int pkg syscall (darwin-amd64), const AF_CNT ideal-int pkg syscall (darwin-amd64), const AF_COIP ideal-int pkg syscall (darwin-amd64), const AF_DATAKIT ideal-int pkg syscall (darwin-amd64), const AF_DECnet ideal-int pkg syscall (darwin-amd64), const AF_DLI ideal-int pkg syscall (darwin-amd64), const AF_E164 ideal-int pkg syscall (darwin-amd64), const AF_ECMA ideal-int pkg syscall (darwin-amd64), const AF_HYLINK ideal-int pkg syscall (darwin-amd64), const AF_IEEE80211 ideal-int pkg syscall (darwin-amd64), const AF_IMPLINK ideal-int pkg syscall (darwin-amd64), const AF_IPX ideal-int pkg syscall (darwin-amd64), const AF_ISDN ideal-int pkg syscall (darwin-amd64), const AF_ISO ideal-int pkg syscall (darwin-amd64), const AF_LAT ideal-int pkg syscall (darwin-amd64), const AF_LINK ideal-int pkg syscall (darwin-amd64), const AF_LOCAL ideal-int pkg syscall (darwin-amd64), const AF_MAX ideal-int pkg syscall (darwin-amd64), const AF_NATM ideal-int pkg syscall (darwin-amd64), const AF_NDRV ideal-int pkg syscall (darwin-amd64), const AF_NETBIOS ideal-int pkg syscall (darwin-amd64), const AF_NS ideal-int pkg syscall (darwin-amd64), const AF_OSI ideal-int pkg syscall (darwin-amd64), const AF_PPP ideal-int pkg syscall (darwin-amd64), const AF_PUP ideal-int pkg syscall (darwin-amd64), const AF_RESERVED_36 ideal-int pkg syscall (darwin-amd64), const AF_ROUTE ideal-int pkg syscall (darwin-amd64), const AF_SIP ideal-int pkg syscall (darwin-amd64), const AF_SNA ideal-int pkg syscall (darwin-amd64), const AF_SYSTEM ideal-int pkg syscall (darwin-amd64), const BIOCFLUSH ideal-int pkg syscall (darwin-amd64), const BIOCGBLEN ideal-int pkg syscall (darwin-amd64), const BIOCGDLT ideal-int pkg syscall (darwin-amd64), const BIOCGDLTLIST ideal-int pkg syscall (darwin-amd64), const BIOCGETIF ideal-int pkg syscall (darwin-amd64), const BIOCGHDRCMPLT ideal-int pkg syscall (darwin-amd64), const BIOCGRSIG ideal-int pkg syscall (darwin-amd64), const BIOCGRTIMEOUT ideal-int pkg syscall (darwin-amd64), const BIOCGSEESENT ideal-int pkg syscall (darwin-amd64), const BIOCGSTATS ideal-int pkg syscall (darwin-amd64), const BIOCIMMEDIATE ideal-int pkg syscall (darwin-amd64), const BIOCPROMISC ideal-int pkg syscall (darwin-amd64), const BIOCSBLEN ideal-int pkg syscall (darwin-amd64), const BIOCSDLT ideal-int pkg syscall (darwin-amd64), const BIOCSETF ideal-int pkg syscall (darwin-amd64), const BIOCSETIF ideal-int pkg syscall (darwin-amd64), const BIOCSHDRCMPLT ideal-int pkg syscall (darwin-amd64), const BIOCSRSIG ideal-int pkg syscall (darwin-amd64), const BIOCSRTIMEOUT ideal-int pkg syscall (darwin-amd64), const BIOCSSEESENT ideal-int pkg syscall (darwin-amd64), const BIOCVERSION ideal-int pkg syscall (darwin-amd64), const BPF_A ideal-int pkg syscall (darwin-amd64), const BPF_ABS ideal-int pkg syscall (darwin-amd64), const BPF_ADD ideal-int pkg syscall (darwin-amd64), const BPF_ALIGNMENT ideal-int pkg syscall (darwin-amd64), const BPF_ALU ideal-int pkg syscall (darwin-amd64), const BPF_AND ideal-int pkg syscall (darwin-amd64), const BPF_B ideal-int pkg syscall (darwin-amd64), const BPF_DIV ideal-int pkg syscall (darwin-amd64), const BPF_H ideal-int pkg syscall (darwin-amd64), const BPF_IMM ideal-int pkg syscall (darwin-amd64), const BPF_IND ideal-int pkg syscall (darwin-amd64), const BPF_JA ideal-int pkg syscall (darwin-amd64), const BPF_JEQ ideal-int pkg syscall (darwin-amd64), const BPF_JGE ideal-int pkg syscall (darwin-amd64), const BPF_JGT ideal-int pkg syscall (darwin-amd64), const BPF_JMP ideal-int pkg syscall (darwin-amd64), const BPF_JSET ideal-int pkg syscall (darwin-amd64), const BPF_K ideal-int pkg syscall (darwin-amd64), const BPF_LD ideal-int pkg syscall (darwin-amd64), const BPF_LDX ideal-int pkg syscall (darwin-amd64), const BPF_LEN ideal-int pkg syscall (darwin-amd64), const BPF_LSH ideal-int pkg syscall (darwin-amd64), const BPF_MAJOR_VERSION ideal-int pkg syscall (darwin-amd64), const BPF_MAXBUFSIZE ideal-int pkg syscall (darwin-amd64), const BPF_MAXINSNS ideal-int pkg syscall (darwin-amd64), const BPF_MEM ideal-int pkg syscall (darwin-amd64), const BPF_MEMWORDS ideal-int pkg syscall (darwin-amd64), const BPF_MINBUFSIZE ideal-int pkg syscall (darwin-amd64), const BPF_MINOR_VERSION ideal-int pkg syscall (darwin-amd64), const BPF_MISC ideal-int pkg syscall (darwin-amd64), const BPF_MSH ideal-int pkg syscall (darwin-amd64), const BPF_MUL ideal-int pkg syscall (darwin-amd64), const BPF_NEG ideal-int pkg syscall (darwin-amd64), const BPF_OR ideal-int pkg syscall (darwin-amd64), const BPF_RELEASE ideal-int pkg syscall (darwin-amd64), const BPF_RET ideal-int pkg syscall (darwin-amd64), const BPF_RSH ideal-int pkg syscall (darwin-amd64), const BPF_ST ideal-int pkg syscall (darwin-amd64), const BPF_STX ideal-int pkg syscall (darwin-amd64), const BPF_SUB ideal-int pkg syscall (darwin-amd64), const BPF_TAX ideal-int pkg syscall (darwin-amd64), const BPF_TXA ideal-int pkg syscall (darwin-amd64), const BPF_W ideal-int pkg syscall (darwin-amd64), const BPF_X ideal-int pkg syscall (darwin-amd64), const CTL_MAXNAME ideal-int pkg syscall (darwin-amd64), const CTL_NET ideal-int pkg syscall (darwin-amd64), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (darwin-amd64), const DLT_ARCNET ideal-int pkg syscall (darwin-amd64), const DLT_ATM_CLIP ideal-int pkg syscall (darwin-amd64), const DLT_ATM_RFC1483 ideal-int pkg syscall (darwin-amd64), const DLT_AX25 ideal-int pkg syscall (darwin-amd64), const DLT_CHAOS ideal-int pkg syscall (darwin-amd64), const DLT_CHDLC ideal-int pkg syscall (darwin-amd64), const DLT_C_HDLC ideal-int pkg syscall (darwin-amd64), const DLT_EN10MB ideal-int pkg syscall (darwin-amd64), const DLT_EN3MB ideal-int pkg syscall (darwin-amd64), const DLT_FDDI ideal-int pkg syscall (darwin-amd64), const DLT_IEEE802 ideal-int pkg syscall (darwin-amd64), const DLT_IEEE802_11 ideal-int pkg syscall (darwin-amd64), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (darwin-amd64), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (darwin-amd64), const DLT_LINUX_SLL ideal-int pkg syscall (darwin-amd64), const DLT_LOOP ideal-int pkg syscall (darwin-amd64), const DLT_NULL ideal-int pkg syscall (darwin-amd64), const DLT_PFLOG ideal-int pkg syscall (darwin-amd64), const DLT_PFSYNC ideal-int pkg syscall (darwin-amd64), const DLT_PPP ideal-int pkg syscall (darwin-amd64), const DLT_PPP_BSDOS ideal-int pkg syscall (darwin-amd64), const DLT_PPP_SERIAL ideal-int pkg syscall (darwin-amd64), const DLT_PRONET ideal-int pkg syscall (darwin-amd64), const DLT_RAW ideal-int pkg syscall (darwin-amd64), const DLT_SLIP ideal-int pkg syscall (darwin-amd64), const DLT_SLIP_BSDOS ideal-int pkg syscall (darwin-amd64), const DT_BLK ideal-int pkg syscall (darwin-amd64), const DT_CHR ideal-int pkg syscall (darwin-amd64), const DT_DIR ideal-int pkg syscall (darwin-amd64), const DT_FIFO ideal-int pkg syscall (darwin-amd64), const DT_LNK ideal-int pkg syscall (darwin-amd64), const DT_REG ideal-int pkg syscall (darwin-amd64), const DT_SOCK ideal-int pkg syscall (darwin-amd64), const DT_UNKNOWN ideal-int pkg syscall (darwin-amd64), const DT_WHT ideal-int pkg syscall (darwin-amd64), const EAUTH Errno pkg syscall (darwin-amd64), const EBADARCH Errno pkg syscall (darwin-amd64), const EBADEXEC Errno pkg syscall (darwin-amd64), const EBADMACHO Errno pkg syscall (darwin-amd64), const EBADMSG Errno pkg syscall (darwin-amd64), const EBADRPC Errno pkg syscall (darwin-amd64), const ECHO ideal-int pkg syscall (darwin-amd64), const ECHOCTL ideal-int pkg syscall (darwin-amd64), const ECHOE ideal-int pkg syscall (darwin-amd64), const ECHOK ideal-int pkg syscall (darwin-amd64), const ECHOKE ideal-int pkg syscall (darwin-amd64), const ECHONL ideal-int pkg syscall (darwin-amd64), const ECHOPRT ideal-int pkg syscall (darwin-amd64), const EDEVERR Errno pkg syscall (darwin-amd64), const EFTYPE Errno pkg syscall (darwin-amd64), const ELAST Errno pkg syscall (darwin-amd64), const EMULTIHOP Errno pkg syscall (darwin-amd64), const ENEEDAUTH Errno pkg syscall (darwin-amd64), const ENOATTR Errno pkg syscall (darwin-amd64), const ENODATA Errno pkg syscall (darwin-amd64), const ENOLINK Errno pkg syscall (darwin-amd64), const ENOPOLICY Errno pkg syscall (darwin-amd64), const ENOSR Errno pkg syscall (darwin-amd64), const ENOSTR Errno pkg syscall (darwin-amd64), const ENOTRECOVERABLE Errno pkg syscall (darwin-amd64), const EOWNERDEAD Errno pkg syscall (darwin-amd64), const EPROCLIM Errno pkg syscall (darwin-amd64), const EPROCUNAVAIL Errno pkg syscall (darwin-amd64), const EPROGMISMATCH Errno pkg syscall (darwin-amd64), const EPROGUNAVAIL Errno pkg syscall (darwin-amd64), const EPROTO Errno pkg syscall (darwin-amd64), const EPWROFF Errno pkg syscall (darwin-amd64), const ERPCMISMATCH Errno pkg syscall (darwin-amd64), const ESHLIBVERS Errno pkg syscall (darwin-amd64), const ETIME Errno pkg syscall (darwin-amd64), const EVFILT_AIO ideal-int pkg syscall (darwin-amd64), const EVFILT_FS ideal-int pkg syscall (darwin-amd64), const EVFILT_MACHPORT ideal-int pkg syscall (darwin-amd64), const EVFILT_PROC ideal-int pkg syscall (darwin-amd64), const EVFILT_READ ideal-int pkg syscall (darwin-amd64), const EVFILT_SIGNAL ideal-int pkg syscall (darwin-amd64), const EVFILT_SYSCOUNT ideal-int pkg syscall (darwin-amd64), const EVFILT_THREADMARKER ideal-int pkg syscall (darwin-amd64), const EVFILT_TIMER ideal-int pkg syscall (darwin-amd64), const EVFILT_USER ideal-int pkg syscall (darwin-amd64), const EVFILT_VM ideal-int pkg syscall (darwin-amd64), const EVFILT_VNODE ideal-int pkg syscall (darwin-amd64), const EVFILT_WRITE ideal-int pkg syscall (darwin-amd64), const EV_ADD ideal-int pkg syscall (darwin-amd64), const EV_CLEAR ideal-int pkg syscall (darwin-amd64), const EV_DELETE ideal-int pkg syscall (darwin-amd64), const EV_DISABLE ideal-int pkg syscall (darwin-amd64), const EV_DISPATCH ideal-int pkg syscall (darwin-amd64), const EV_ENABLE ideal-int pkg syscall (darwin-amd64), const EV_EOF ideal-int pkg syscall (darwin-amd64), const EV_ERROR ideal-int pkg syscall (darwin-amd64), const EV_FLAG0 ideal-int pkg syscall (darwin-amd64), const EV_FLAG1 ideal-int pkg syscall (darwin-amd64), const EV_ONESHOT ideal-int pkg syscall (darwin-amd64), const EV_OOBAND ideal-int pkg syscall (darwin-amd64), const EV_POLL ideal-int pkg syscall (darwin-amd64), const EV_RECEIPT ideal-int pkg syscall (darwin-amd64), const EV_SYSFLAGS ideal-int pkg syscall (darwin-amd64), const EXTA ideal-int pkg syscall (darwin-amd64), const EXTB ideal-int pkg syscall (darwin-amd64), const EXTPROC ideal-int pkg syscall (darwin-amd64), const FD_CLOEXEC ideal-int pkg syscall (darwin-amd64), const FD_SETSIZE ideal-int pkg syscall (darwin-amd64), const F_ADDFILESIGS ideal-int pkg syscall (darwin-amd64), const F_ADDSIGS ideal-int pkg syscall (darwin-amd64), const F_ALLOCATEALL ideal-int pkg syscall (darwin-amd64), const F_ALLOCATECONTIG ideal-int pkg syscall (darwin-amd64), const F_CHKCLEAN ideal-int pkg syscall (darwin-amd64), const F_DUPFD ideal-int pkg syscall (darwin-amd64), const F_DUPFD_CLOEXEC ideal-int pkg syscall (darwin-amd64), const F_FLUSH_DATA ideal-int pkg syscall (darwin-amd64), const F_FREEZE_FS ideal-int pkg syscall (darwin-amd64), const F_FULLFSYNC ideal-int pkg syscall (darwin-amd64), const F_GETFD ideal-int pkg syscall (darwin-amd64), const F_GETFL ideal-int pkg syscall (darwin-amd64), const F_GETLK ideal-int pkg syscall (darwin-amd64), const F_GETLKPID ideal-int pkg syscall (darwin-amd64), const F_GETNOSIGPIPE ideal-int pkg syscall (darwin-amd64), const F_GETOWN ideal-int pkg syscall (darwin-amd64), const F_GETPATH ideal-int pkg syscall (darwin-amd64), const F_GETPATH_MTMINFO ideal-int pkg syscall (darwin-amd64), const F_GETPROTECTIONCLASS ideal-int pkg syscall (darwin-amd64), const F_GLOBAL_NOCACHE ideal-int pkg syscall (darwin-amd64), const F_LOG2PHYS ideal-int pkg syscall (darwin-amd64), const F_LOG2PHYS_EXT ideal-int pkg syscall (darwin-amd64), const F_MARKDEPENDENCY ideal-int pkg syscall (darwin-amd64), const F_NOCACHE ideal-int pkg syscall (darwin-amd64), const F_NODIRECT ideal-int pkg syscall (darwin-amd64), const F_OK ideal-int pkg syscall (darwin-amd64), const F_PATHPKG_CHECK ideal-int pkg syscall (darwin-amd64), const F_PEOFPOSMODE ideal-int pkg syscall (darwin-amd64), const F_PREALLOCATE ideal-int pkg syscall (darwin-amd64), const F_RDADVISE ideal-int pkg syscall (darwin-amd64), const F_RDAHEAD ideal-int pkg syscall (darwin-amd64), const F_RDLCK ideal-int pkg syscall (darwin-amd64), const F_READBOOTSTRAP ideal-int pkg syscall (darwin-amd64), const F_SETBACKINGSTORE ideal-int pkg syscall (darwin-amd64), const F_SETFD ideal-int pkg syscall (darwin-amd64), const F_SETFL ideal-int pkg syscall (darwin-amd64), const F_SETLK ideal-int pkg syscall (darwin-amd64), const F_SETLKW ideal-int pkg syscall (darwin-amd64), const F_SETNOSIGPIPE ideal-int pkg syscall (darwin-amd64), const F_SETOWN ideal-int pkg syscall (darwin-amd64), const F_SETPROTECTIONCLASS ideal-int pkg syscall (darwin-amd64), const F_SETSIZE ideal-int pkg syscall (darwin-amd64), const F_THAW_FS ideal-int pkg syscall (darwin-amd64), const F_UNLCK ideal-int pkg syscall (darwin-amd64), const F_VOLPOSMODE ideal-int pkg syscall (darwin-amd64), const F_WRITEBOOTSTRAP ideal-int pkg syscall (darwin-amd64), const F_WRLCK ideal-int pkg syscall (darwin-amd64), const IFF_ALLMULTI ideal-int pkg syscall (darwin-amd64), const IFF_ALTPHYS ideal-int pkg syscall (darwin-amd64), const IFF_DEBUG ideal-int pkg syscall (darwin-amd64), const IFF_LINK0 ideal-int pkg syscall (darwin-amd64), const IFF_LINK1 ideal-int pkg syscall (darwin-amd64), const IFF_LINK2 ideal-int pkg syscall (darwin-amd64), const IFF_NOARP ideal-int pkg syscall (darwin-amd64), const IFF_NOTRAILERS ideal-int pkg syscall (darwin-amd64), const IFF_OACTIVE ideal-int pkg syscall (darwin-amd64), const IFF_POINTOPOINT ideal-int pkg syscall (darwin-amd64), const IFF_PROMISC ideal-int pkg syscall (darwin-amd64), const IFF_RUNNING ideal-int pkg syscall (darwin-amd64), const IFF_SIMPLEX ideal-int pkg syscall (darwin-amd64), const IFNAMSIZ ideal-int pkg syscall (darwin-amd64), const IFT_1822 ideal-int pkg syscall (darwin-amd64), const IFT_AAL5 ideal-int pkg syscall (darwin-amd64), const IFT_ARCNET ideal-int pkg syscall (darwin-amd64), const IFT_ARCNETPLUS ideal-int pkg syscall (darwin-amd64), const IFT_ATM ideal-int pkg syscall (darwin-amd64), const IFT_BRIDGE ideal-int pkg syscall (darwin-amd64), const IFT_CARP ideal-int pkg syscall (darwin-amd64), const IFT_CELLULAR ideal-int pkg syscall (darwin-amd64), const IFT_CEPT ideal-int pkg syscall (darwin-amd64), const IFT_DS3 ideal-int pkg syscall (darwin-amd64), const IFT_ENC ideal-int pkg syscall (darwin-amd64), const IFT_EON ideal-int pkg syscall (darwin-amd64), const IFT_ETHER ideal-int pkg syscall (darwin-amd64), const IFT_FAITH ideal-int pkg syscall (darwin-amd64), const IFT_FDDI ideal-int pkg syscall (darwin-amd64), const IFT_FRELAY ideal-int pkg syscall (darwin-amd64), const IFT_FRELAYDCE ideal-int pkg syscall (darwin-amd64), const IFT_GIF ideal-int pkg syscall (darwin-amd64), const IFT_HDH1822 ideal-int pkg syscall (darwin-amd64), const IFT_HIPPI ideal-int pkg syscall (darwin-amd64), const IFT_HSSI ideal-int pkg syscall (darwin-amd64), const IFT_HY ideal-int pkg syscall (darwin-amd64), const IFT_IEEE1394 ideal-int pkg syscall (darwin-amd64), const IFT_IEEE8023ADLAG ideal-int pkg syscall (darwin-amd64), const IFT_ISDNBASIC ideal-int pkg syscall (darwin-amd64), const IFT_ISDNPRIMARY ideal-int pkg syscall (darwin-amd64), const IFT_ISO88022LLC ideal-int pkg syscall (darwin-amd64), const IFT_ISO88023 ideal-int pkg syscall (darwin-amd64), const IFT_ISO88024 ideal-int pkg syscall (darwin-amd64), const IFT_ISO88025 ideal-int pkg syscall (darwin-amd64), const IFT_ISO88026 ideal-int pkg syscall (darwin-amd64), const IFT_L2VLAN ideal-int pkg syscall (darwin-amd64), const IFT_LAPB ideal-int pkg syscall (darwin-amd64), const IFT_LOCALTALK ideal-int pkg syscall (darwin-amd64), const IFT_LOOP ideal-int pkg syscall (darwin-amd64), const IFT_MIOX25 ideal-int pkg syscall (darwin-amd64), const IFT_MODEM ideal-int pkg syscall (darwin-amd64), const IFT_NSIP ideal-int pkg syscall (darwin-amd64), const IFT_OTHER ideal-int pkg syscall (darwin-amd64), const IFT_P10 ideal-int pkg syscall (darwin-amd64), const IFT_P80 ideal-int pkg syscall (darwin-amd64), const IFT_PARA ideal-int pkg syscall (darwin-amd64), const IFT_PDP ideal-int pkg syscall (darwin-amd64), const IFT_PFLOG ideal-int pkg syscall (darwin-amd64), const IFT_PFSYNC ideal-int pkg syscall (darwin-amd64), const IFT_PPP ideal-int pkg syscall (darwin-amd64), const IFT_PROPMUX ideal-int pkg syscall (darwin-amd64), const IFT_PROPVIRTUAL ideal-int pkg syscall (darwin-amd64), const IFT_PTPSERIAL ideal-int pkg syscall (darwin-amd64), const IFT_RS232 ideal-int pkg syscall (darwin-amd64), const IFT_SDLC ideal-int pkg syscall (darwin-amd64), const IFT_SIP ideal-int pkg syscall (darwin-amd64), const IFT_SLIP ideal-int pkg syscall (darwin-amd64), const IFT_SMDSDXI ideal-int pkg syscall (darwin-amd64), const IFT_SMDSICIP ideal-int pkg syscall (darwin-amd64), const IFT_SONET ideal-int pkg syscall (darwin-amd64), const IFT_SONETPATH ideal-int pkg syscall (darwin-amd64), const IFT_SONETVT ideal-int pkg syscall (darwin-amd64), const IFT_STARLAN ideal-int pkg syscall (darwin-amd64), const IFT_STF ideal-int pkg syscall (darwin-amd64), const IFT_T1 ideal-int pkg syscall (darwin-amd64), const IFT_ULTRA ideal-int pkg syscall (darwin-amd64), const IFT_V35 ideal-int pkg syscall (darwin-amd64), const IFT_X25 ideal-int pkg syscall (darwin-amd64), const IFT_X25DDN ideal-int pkg syscall (darwin-amd64), const IFT_X25PLE ideal-int pkg syscall (darwin-amd64), const IFT_XETHER ideal-int pkg syscall (darwin-amd64), const IN_CLASSA_HOST ideal-int pkg syscall (darwin-amd64), const IN_CLASSA_MAX ideal-int pkg syscall (darwin-amd64), const IN_CLASSA_NET ideal-int pkg syscall (darwin-amd64), const IN_CLASSA_NSHIFT ideal-int pkg syscall (darwin-amd64), const IN_CLASSB_HOST ideal-int pkg syscall (darwin-amd64), const IN_CLASSB_MAX ideal-int pkg syscall (darwin-amd64), const IN_CLASSB_NET ideal-int pkg syscall (darwin-amd64), const IN_CLASSB_NSHIFT ideal-int pkg syscall (darwin-amd64), const IN_CLASSC_HOST ideal-int pkg syscall (darwin-amd64), const IN_CLASSC_NET ideal-int pkg syscall (darwin-amd64), const IN_CLASSC_NSHIFT ideal-int pkg syscall (darwin-amd64), const IN_CLASSD_HOST ideal-int pkg syscall (darwin-amd64), const IN_CLASSD_NET ideal-int pkg syscall (darwin-amd64), const IN_CLASSD_NSHIFT ideal-int pkg syscall (darwin-amd64), const IN_LINKLOCALNETNUM ideal-int pkg syscall (darwin-amd64), const IN_LOOPBACKNET ideal-int pkg syscall (darwin-amd64), const IPPROTO_3PC ideal-int pkg syscall (darwin-amd64), const IPPROTO_ADFS ideal-int pkg syscall (darwin-amd64), const IPPROTO_AH ideal-int pkg syscall (darwin-amd64), const IPPROTO_AHIP ideal-int pkg syscall (darwin-amd64), const IPPROTO_APES ideal-int pkg syscall (darwin-amd64), const IPPROTO_ARGUS ideal-int pkg syscall (darwin-amd64), const IPPROTO_AX25 ideal-int pkg syscall (darwin-amd64), const IPPROTO_BHA ideal-int pkg syscall (darwin-amd64), const IPPROTO_BLT ideal-int pkg syscall (darwin-amd64), const IPPROTO_BRSATMON ideal-int pkg syscall (darwin-amd64), const IPPROTO_CFTP ideal-int pkg syscall (darwin-amd64), const IPPROTO_CHAOS ideal-int pkg syscall (darwin-amd64), const IPPROTO_CMTP ideal-int pkg syscall (darwin-amd64), const IPPROTO_CPHB ideal-int pkg syscall (darwin-amd64), const IPPROTO_CPNX ideal-int pkg syscall (darwin-amd64), const IPPROTO_DDP ideal-int pkg syscall (darwin-amd64), const IPPROTO_DGP ideal-int pkg syscall (darwin-amd64), const IPPROTO_DIVERT ideal-int pkg syscall (darwin-amd64), const IPPROTO_DONE ideal-int pkg syscall (darwin-amd64), const IPPROTO_DSTOPTS ideal-int pkg syscall (darwin-amd64), const IPPROTO_EGP ideal-int pkg syscall (darwin-amd64), const IPPROTO_EMCON ideal-int pkg syscall (darwin-amd64), const IPPROTO_ENCAP ideal-int pkg syscall (darwin-amd64), const IPPROTO_EON ideal-int pkg syscall (darwin-amd64), const IPPROTO_ESP ideal-int pkg syscall (darwin-amd64), const IPPROTO_ETHERIP ideal-int pkg syscall (darwin-amd64), const IPPROTO_FRAGMENT ideal-int pkg syscall (darwin-amd64), const IPPROTO_GGP ideal-int pkg syscall (darwin-amd64), const IPPROTO_GMTP ideal-int pkg syscall (darwin-amd64), const IPPROTO_GRE ideal-int pkg syscall (darwin-amd64), const IPPROTO_HELLO ideal-int pkg syscall (darwin-amd64), const IPPROTO_HMP ideal-int pkg syscall (darwin-amd64), const IPPROTO_HOPOPTS ideal-int pkg syscall (darwin-amd64), const IPPROTO_ICMP ideal-int pkg syscall (darwin-amd64), const IPPROTO_ICMPV6 ideal-int pkg syscall (darwin-amd64), const IPPROTO_IDP ideal-int pkg syscall (darwin-amd64), const IPPROTO_IDPR ideal-int pkg syscall (darwin-amd64), const IPPROTO_IDRP ideal-int pkg syscall (darwin-amd64), const IPPROTO_IGMP ideal-int pkg syscall (darwin-amd64), const IPPROTO_IGP ideal-int pkg syscall (darwin-amd64), const IPPROTO_IGRP ideal-int pkg syscall (darwin-amd64), const IPPROTO_IL ideal-int pkg syscall (darwin-amd64), const IPPROTO_INLSP ideal-int pkg syscall (darwin-amd64), const IPPROTO_INP ideal-int pkg syscall (darwin-amd64), const IPPROTO_IPCOMP ideal-int pkg syscall (darwin-amd64), const IPPROTO_IPCV ideal-int pkg syscall (darwin-amd64), const IPPROTO_IPEIP ideal-int pkg syscall (darwin-amd64), const IPPROTO_IPIP ideal-int pkg syscall (darwin-amd64), const IPPROTO_IPPC ideal-int pkg syscall (darwin-amd64), const IPPROTO_IPV4 ideal-int pkg syscall (darwin-amd64), const IPPROTO_IRTP ideal-int pkg syscall (darwin-amd64), const IPPROTO_KRYPTOLAN ideal-int pkg syscall (darwin-amd64), const IPPROTO_LARP ideal-int pkg syscall (darwin-amd64), const IPPROTO_LEAF1 ideal-int pkg syscall (darwin-amd64), const IPPROTO_LEAF2 ideal-int pkg syscall (darwin-amd64), const IPPROTO_MAX ideal-int pkg syscall (darwin-amd64), const IPPROTO_MAXID ideal-int pkg syscall (darwin-amd64), const IPPROTO_MEAS ideal-int pkg syscall (darwin-amd64), const IPPROTO_MHRP ideal-int pkg syscall (darwin-amd64), const IPPROTO_MICP ideal-int pkg syscall (darwin-amd64), const IPPROTO_MTP ideal-int pkg syscall (darwin-amd64), const IPPROTO_MUX ideal-int pkg syscall (darwin-amd64), const IPPROTO_ND ideal-int pkg syscall (darwin-amd64), const IPPROTO_NHRP ideal-int pkg syscall (darwin-amd64), const IPPROTO_NONE ideal-int pkg syscall (darwin-amd64), const IPPROTO_NSP ideal-int pkg syscall (darwin-amd64), const IPPROTO_NVPII ideal-int pkg syscall (darwin-amd64), const IPPROTO_OSPFIGP ideal-int pkg syscall (darwin-amd64), const IPPROTO_PGM ideal-int pkg syscall (darwin-amd64), const IPPROTO_PIGP ideal-int pkg syscall (darwin-amd64), const IPPROTO_PIM ideal-int pkg syscall (darwin-amd64), const IPPROTO_PRM ideal-int pkg syscall (darwin-amd64), const IPPROTO_PUP ideal-int pkg syscall (darwin-amd64), const IPPROTO_PVP ideal-int pkg syscall (darwin-amd64), const IPPROTO_RAW ideal-int pkg syscall (darwin-amd64), const IPPROTO_RCCMON ideal-int pkg syscall (darwin-amd64), const IPPROTO_RDP ideal-int pkg syscall (darwin-amd64), const IPPROTO_ROUTING ideal-int pkg syscall (darwin-amd64), const IPPROTO_RSVP ideal-int pkg syscall (darwin-amd64), const IPPROTO_RVD ideal-int pkg syscall (darwin-amd64), const IPPROTO_SATEXPAK ideal-int pkg syscall (darwin-amd64), const IPPROTO_SATMON ideal-int pkg syscall (darwin-amd64), const IPPROTO_SCCSP ideal-int pkg syscall (darwin-amd64), const IPPROTO_SCTP ideal-int pkg syscall (darwin-amd64), const IPPROTO_SDRP ideal-int pkg syscall (darwin-amd64), const IPPROTO_SEP ideal-int pkg syscall (darwin-amd64), const IPPROTO_SRPC ideal-int pkg syscall (darwin-amd64), const IPPROTO_ST ideal-int pkg syscall (darwin-amd64), const IPPROTO_SVMTP ideal-int pkg syscall (darwin-amd64), const IPPROTO_SWIPE ideal-int pkg syscall (darwin-amd64), const IPPROTO_TCF ideal-int pkg syscall (darwin-amd64), const IPPROTO_TP ideal-int pkg syscall (darwin-amd64), const IPPROTO_TPXX ideal-int pkg syscall (darwin-amd64), const IPPROTO_TRUNK1 ideal-int pkg syscall (darwin-amd64), const IPPROTO_TRUNK2 ideal-int pkg syscall (darwin-amd64), const IPPROTO_TTP ideal-int pkg syscall (darwin-amd64), const IPPROTO_VINES ideal-int pkg syscall (darwin-amd64), const IPPROTO_VISA ideal-int pkg syscall (darwin-amd64), const IPPROTO_VMTP ideal-int pkg syscall (darwin-amd64), const IPPROTO_WBEXPAK ideal-int pkg syscall (darwin-amd64), const IPPROTO_WBMON ideal-int pkg syscall (darwin-amd64), const IPPROTO_WSN ideal-int pkg syscall (darwin-amd64), const IPPROTO_XNET ideal-int pkg syscall (darwin-amd64), const IPPROTO_XTP ideal-int pkg syscall (darwin-amd64), const IPV6_2292DSTOPTS ideal-int pkg syscall (darwin-amd64), const IPV6_2292HOPLIMIT ideal-int pkg syscall (darwin-amd64), const IPV6_2292HOPOPTS ideal-int pkg syscall (darwin-amd64), const IPV6_2292NEXTHOP ideal-int pkg syscall (darwin-amd64), const IPV6_2292PKTINFO ideal-int pkg syscall (darwin-amd64), const IPV6_2292PKTOPTIONS ideal-int pkg syscall (darwin-amd64), const IPV6_2292RTHDR ideal-int pkg syscall (darwin-amd64), const IPV6_BINDV6ONLY ideal-int pkg syscall (darwin-amd64), const IPV6_BOUND_IF ideal-int pkg syscall (darwin-amd64), const IPV6_CHECKSUM ideal-int pkg syscall (darwin-amd64), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (darwin-amd64), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (darwin-amd64), const IPV6_DEFHLIM ideal-int pkg syscall (darwin-amd64), const IPV6_FAITH ideal-int pkg syscall (darwin-amd64), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (darwin-amd64), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (darwin-amd64), const IPV6_FRAGTTL ideal-int pkg syscall (darwin-amd64), const IPV6_FW_ADD ideal-int pkg syscall (darwin-amd64), const IPV6_FW_DEL ideal-int pkg syscall (darwin-amd64), const IPV6_FW_FLUSH ideal-int pkg syscall (darwin-amd64), const IPV6_FW_GET ideal-int pkg syscall (darwin-amd64), const IPV6_FW_ZERO ideal-int pkg syscall (darwin-amd64), const IPV6_HLIMDEC ideal-int pkg syscall (darwin-amd64), const IPV6_IPSEC_POLICY ideal-int pkg syscall (darwin-amd64), const IPV6_MAXHLIM ideal-int pkg syscall (darwin-amd64), const IPV6_MAXOPTHDR ideal-int pkg syscall (darwin-amd64), const IPV6_MAXPACKET ideal-int pkg syscall (darwin-amd64), const IPV6_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (darwin-amd64), const IPV6_MAX_MEMBERSHIPS ideal-int pkg syscall (darwin-amd64), const IPV6_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (darwin-amd64), const IPV6_MIN_MEMBERSHIPS ideal-int pkg syscall (darwin-amd64), const IPV6_MMTU ideal-int pkg syscall (darwin-amd64), const IPV6_PORTRANGE ideal-int pkg syscall (darwin-amd64), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (darwin-amd64), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (darwin-amd64), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (darwin-amd64), const IPV6_RECVTCLASS ideal-int pkg syscall (darwin-amd64), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (darwin-amd64), const IPV6_RTHDR_STRICT ideal-int pkg syscall (darwin-amd64), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (darwin-amd64), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (darwin-amd64), const IPV6_TCLASS ideal-int pkg syscall (darwin-amd64), const IPV6_VERSION ideal-int pkg syscall (darwin-amd64), const IPV6_VERSION_MASK ideal-int pkg syscall (darwin-amd64), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (darwin-amd64), const IP_BLOCK_SOURCE ideal-int pkg syscall (darwin-amd64), const IP_BOUND_IF ideal-int pkg syscall (darwin-amd64), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (darwin-amd64), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (darwin-amd64), const IP_DF ideal-int pkg syscall (darwin-amd64), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (darwin-amd64), const IP_DUMMYNET_CONFIGURE ideal-int pkg syscall (darwin-amd64), const IP_DUMMYNET_DEL ideal-int pkg syscall (darwin-amd64), const IP_DUMMYNET_FLUSH ideal-int pkg syscall (darwin-amd64), const IP_DUMMYNET_GET ideal-int pkg syscall (darwin-amd64), const IP_FAITH ideal-int pkg syscall (darwin-amd64), const IP_FW_ADD ideal-int pkg syscall (darwin-amd64), const IP_FW_DEL ideal-int pkg syscall (darwin-amd64), const IP_FW_FLUSH ideal-int pkg syscall (darwin-amd64), const IP_FW_GET ideal-int pkg syscall (darwin-amd64), const IP_FW_RESETLOG ideal-int pkg syscall (darwin-amd64), const IP_FW_ZERO ideal-int pkg syscall (darwin-amd64), const IP_HDRINCL ideal-int pkg syscall (darwin-amd64), const IP_IPSEC_POLICY ideal-int pkg syscall (darwin-amd64), const IP_MAXPACKET ideal-int pkg syscall (darwin-amd64), const IP_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (darwin-amd64), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (darwin-amd64), const IP_MAX_SOCK_MUTE_FILTER ideal-int pkg syscall (darwin-amd64), const IP_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (darwin-amd64), const IP_MF ideal-int pkg syscall (darwin-amd64), const IP_MIN_MEMBERSHIPS ideal-int pkg syscall (darwin-amd64), const IP_MSFILTER ideal-int pkg syscall (darwin-amd64), const IP_MSS ideal-int pkg syscall (darwin-amd64), const IP_MULTICAST_IFINDEX ideal-int pkg syscall (darwin-amd64), const IP_MULTICAST_VIF ideal-int pkg syscall (darwin-amd64), const IP_NAT__XXX ideal-int pkg syscall (darwin-amd64), const IP_OFFMASK ideal-int pkg syscall (darwin-amd64), const IP_OLD_FW_ADD ideal-int pkg syscall (darwin-amd64), const IP_OLD_FW_DEL ideal-int pkg syscall (darwin-amd64), const IP_OLD_FW_FLUSH ideal-int pkg syscall (darwin-amd64), const IP_OLD_FW_GET ideal-int pkg syscall (darwin-amd64), const IP_OLD_FW_RESETLOG ideal-int pkg syscall (darwin-amd64), const IP_OLD_FW_ZERO ideal-int pkg syscall (darwin-amd64), const IP_OPTIONS ideal-int pkg syscall (darwin-amd64), const IP_PKTINFO ideal-int pkg syscall (darwin-amd64), const IP_PORTRANGE ideal-int pkg syscall (darwin-amd64), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (darwin-amd64), const IP_PORTRANGE_HIGH ideal-int pkg syscall (darwin-amd64), const IP_PORTRANGE_LOW ideal-int pkg syscall (darwin-amd64), const IP_RECVDSTADDR ideal-int pkg syscall (darwin-amd64), const IP_RECVIF ideal-int pkg syscall (darwin-amd64), const IP_RECVOPTS ideal-int pkg syscall (darwin-amd64), const IP_RECVPKTINFO ideal-int pkg syscall (darwin-amd64), const IP_RECVRETOPTS ideal-int pkg syscall (darwin-amd64), const IP_RECVTTL ideal-int pkg syscall (darwin-amd64), const IP_RETOPTS ideal-int pkg syscall (darwin-amd64), const IP_RF ideal-int pkg syscall (darwin-amd64), const IP_RSVP_OFF ideal-int pkg syscall (darwin-amd64), const IP_RSVP_ON ideal-int pkg syscall (darwin-amd64), const IP_RSVP_VIF_OFF ideal-int pkg syscall (darwin-amd64), const IP_RSVP_VIF_ON ideal-int pkg syscall (darwin-amd64), const IP_STRIPHDR ideal-int pkg syscall (darwin-amd64), const IP_TRAFFIC_MGT_BACKGROUND ideal-int pkg syscall (darwin-amd64), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (darwin-amd64), const LOCK_EX ideal-int pkg syscall (darwin-amd64), const LOCK_NB ideal-int pkg syscall (darwin-amd64), const LOCK_SH ideal-int pkg syscall (darwin-amd64), const LOCK_UN ideal-int pkg syscall (darwin-amd64), const MADV_CAN_REUSE ideal-int pkg syscall (darwin-amd64), const MADV_DONTNEED ideal-int pkg syscall (darwin-amd64), const MADV_FREE ideal-int pkg syscall (darwin-amd64), const MADV_FREE_REUSABLE ideal-int pkg syscall (darwin-amd64), const MADV_FREE_REUSE ideal-int pkg syscall (darwin-amd64), const MADV_NORMAL ideal-int pkg syscall (darwin-amd64), const MADV_RANDOM ideal-int pkg syscall (darwin-amd64), const MADV_SEQUENTIAL ideal-int pkg syscall (darwin-amd64), const MADV_WILLNEED ideal-int pkg syscall (darwin-amd64), const MADV_ZERO_WIRED_PAGES ideal-int pkg syscall (darwin-amd64), const MAP_ANON ideal-int pkg syscall (darwin-amd64), const MAP_COPY ideal-int pkg syscall (darwin-amd64), const MAP_FILE ideal-int pkg syscall (darwin-amd64), const MAP_FIXED ideal-int pkg syscall (darwin-amd64), const MAP_HASSEMAPHORE ideal-int pkg syscall (darwin-amd64), const MAP_JIT ideal-int pkg syscall (darwin-amd64), const MAP_NOCACHE ideal-int pkg syscall (darwin-amd64), const MAP_NOEXTEND ideal-int pkg syscall (darwin-amd64), const MAP_NORESERVE ideal-int pkg syscall (darwin-amd64), const MAP_PRIVATE ideal-int pkg syscall (darwin-amd64), const MAP_RENAME ideal-int pkg syscall (darwin-amd64), const MAP_RESERVED0080 ideal-int pkg syscall (darwin-amd64), const MAP_SHARED ideal-int pkg syscall (darwin-amd64), const MCL_CURRENT ideal-int pkg syscall (darwin-amd64), const MCL_FUTURE ideal-int pkg syscall (darwin-amd64), const MSG_CTRUNC ideal-int pkg syscall (darwin-amd64), const MSG_DONTROUTE ideal-int pkg syscall (darwin-amd64), const MSG_DONTWAIT ideal-int pkg syscall (darwin-amd64), const MSG_EOF ideal-int pkg syscall (darwin-amd64), const MSG_EOR ideal-int pkg syscall (darwin-amd64), const MSG_FLUSH ideal-int pkg syscall (darwin-amd64), const MSG_HAVEMORE ideal-int pkg syscall (darwin-amd64), const MSG_HOLD ideal-int pkg syscall (darwin-amd64), const MSG_NEEDSA ideal-int pkg syscall (darwin-amd64), const MSG_OOB ideal-int pkg syscall (darwin-amd64), const MSG_PEEK ideal-int pkg syscall (darwin-amd64), const MSG_RCVMORE ideal-int pkg syscall (darwin-amd64), const MSG_SEND ideal-int pkg syscall (darwin-amd64), const MSG_TRUNC ideal-int pkg syscall (darwin-amd64), const MSG_WAITALL ideal-int pkg syscall (darwin-amd64), const MSG_WAITSTREAM ideal-int pkg syscall (darwin-amd64), const MS_ASYNC ideal-int pkg syscall (darwin-amd64), const MS_DEACTIVATE ideal-int pkg syscall (darwin-amd64), const MS_INVALIDATE ideal-int pkg syscall (darwin-amd64), const MS_KILLPAGES ideal-int pkg syscall (darwin-amd64), const MS_SYNC ideal-int pkg syscall (darwin-amd64), const NAME_MAX ideal-int pkg syscall (darwin-amd64), const NET_RT_DUMP ideal-int pkg syscall (darwin-amd64), const NET_RT_DUMP2 ideal-int pkg syscall (darwin-amd64), const NET_RT_FLAGS ideal-int pkg syscall (darwin-amd64), const NET_RT_IFLIST ideal-int pkg syscall (darwin-amd64), const NET_RT_IFLIST2 ideal-int pkg syscall (darwin-amd64), const NET_RT_MAXID ideal-int pkg syscall (darwin-amd64), const NET_RT_STAT ideal-int pkg syscall (darwin-amd64), const NET_RT_TRASH ideal-int pkg syscall (darwin-amd64), const NOTE_ABSOLUTE ideal-int pkg syscall (darwin-amd64), const NOTE_ATTRIB ideal-int pkg syscall (darwin-amd64), const NOTE_CHILD ideal-int pkg syscall (darwin-amd64), const NOTE_DELETE ideal-int pkg syscall (darwin-amd64), const NOTE_EXEC ideal-int pkg syscall (darwin-amd64), const NOTE_EXIT ideal-int pkg syscall (darwin-amd64), const NOTE_EXITSTATUS ideal-int pkg syscall (darwin-amd64), const NOTE_EXTEND ideal-int pkg syscall (darwin-amd64), const NOTE_FFAND ideal-int pkg syscall (darwin-amd64), const NOTE_FFCOPY ideal-int pkg syscall (darwin-amd64), const NOTE_FFCTRLMASK ideal-int pkg syscall (darwin-amd64), const NOTE_FFLAGSMASK ideal-int pkg syscall (darwin-amd64), const NOTE_FFNOP ideal-int pkg syscall (darwin-amd64), const NOTE_FFOR ideal-int pkg syscall (darwin-amd64), const NOTE_FORK ideal-int pkg syscall (darwin-amd64), const NOTE_LINK ideal-int pkg syscall (darwin-amd64), const NOTE_LOWAT ideal-int pkg syscall (darwin-amd64), const NOTE_NONE ideal-int pkg syscall (darwin-amd64), const NOTE_NSECONDS ideal-int pkg syscall (darwin-amd64), const NOTE_PCTRLMASK ideal-int pkg syscall (darwin-amd64), const NOTE_PDATAMASK ideal-int pkg syscall (darwin-amd64), const NOTE_REAP ideal-int pkg syscall (darwin-amd64), const NOTE_RENAME ideal-int pkg syscall (darwin-amd64), const NOTE_RESOURCEEND ideal-int pkg syscall (darwin-amd64), const NOTE_REVOKE ideal-int pkg syscall (darwin-amd64), const NOTE_SECONDS ideal-int pkg syscall (darwin-amd64), const NOTE_SIGNAL ideal-int pkg syscall (darwin-amd64), const NOTE_TRACK ideal-int pkg syscall (darwin-amd64), const NOTE_TRACKERR ideal-int pkg syscall (darwin-amd64), const NOTE_TRIGGER ideal-int pkg syscall (darwin-amd64), const NOTE_USECONDS ideal-int pkg syscall (darwin-amd64), const NOTE_VM_ERROR ideal-int pkg syscall (darwin-amd64), const NOTE_VM_PRESSURE ideal-int pkg syscall (darwin-amd64), const NOTE_VM_PRESSURE_SUDDEN_TERMINATE ideal-int pkg syscall (darwin-amd64), const NOTE_VM_PRESSURE_TERMINATE ideal-int pkg syscall (darwin-amd64), const NOTE_WRITE ideal-int pkg syscall (darwin-amd64), const O_ACCMODE ideal-int pkg syscall (darwin-amd64), const O_ALERT ideal-int pkg syscall (darwin-amd64), const O_DIRECTORY ideal-int pkg syscall (darwin-amd64), const O_DSYNC ideal-int pkg syscall (darwin-amd64), const O_EVTONLY ideal-int pkg syscall (darwin-amd64), const O_EXLOCK ideal-int pkg syscall (darwin-amd64), const O_FSYNC ideal-int pkg syscall (darwin-amd64), const O_NDELAY ideal-int pkg syscall (darwin-amd64), const O_NOFOLLOW ideal-int pkg syscall (darwin-amd64), const O_POPUP ideal-int pkg syscall (darwin-amd64), const O_SHLOCK ideal-int pkg syscall (darwin-amd64), const O_SYMLINK ideal-int pkg syscall (darwin-amd64), const PROT_EXEC ideal-int pkg syscall (darwin-amd64), const PROT_NONE ideal-int pkg syscall (darwin-amd64), const PROT_READ ideal-int pkg syscall (darwin-amd64), const PROT_WRITE ideal-int pkg syscall (darwin-amd64), const PTRACE_CONT ideal-int pkg syscall (darwin-amd64), const PTRACE_KILL ideal-int pkg syscall (darwin-amd64), const PTRACE_TRACEME ideal-int pkg syscall (darwin-amd64), const PT_ATTACH ideal-int pkg syscall (darwin-amd64), const PT_ATTACHEXC ideal-int pkg syscall (darwin-amd64), const PT_CONTINUE ideal-int pkg syscall (darwin-amd64), const PT_DENY_ATTACH ideal-int pkg syscall (darwin-amd64), const PT_DETACH ideal-int pkg syscall (darwin-amd64), const PT_FIRSTMACH ideal-int pkg syscall (darwin-amd64), const PT_FORCEQUOTA ideal-int pkg syscall (darwin-amd64), const PT_KILL ideal-int pkg syscall (darwin-amd64), const PT_READ_D ideal-int pkg syscall (darwin-amd64), const PT_READ_I ideal-int pkg syscall (darwin-amd64), const PT_READ_U ideal-int pkg syscall (darwin-amd64), const PT_SIGEXC ideal-int pkg syscall (darwin-amd64), const PT_STEP ideal-int pkg syscall (darwin-amd64), const PT_THUPDATE ideal-int pkg syscall (darwin-amd64), const PT_TRACE_ME ideal-int pkg syscall (darwin-amd64), const PT_WRITE_D ideal-int pkg syscall (darwin-amd64), const PT_WRITE_I ideal-int pkg syscall (darwin-amd64), const PT_WRITE_U ideal-int pkg syscall (darwin-amd64), const RLIMIT_AS ideal-int pkg syscall (darwin-amd64), const RLIMIT_CORE ideal-int pkg syscall (darwin-amd64), const RLIMIT_CPU ideal-int pkg syscall (darwin-amd64), const RLIMIT_DATA ideal-int pkg syscall (darwin-amd64), const RLIMIT_FSIZE ideal-int pkg syscall (darwin-amd64), const RLIMIT_NOFILE ideal-int pkg syscall (darwin-amd64), const RLIMIT_STACK ideal-int pkg syscall (darwin-amd64), const RLIM_INFINITY ideal-int pkg syscall (darwin-amd64), const RTAX_AUTHOR ideal-int pkg syscall (darwin-amd64), const RTAX_BRD ideal-int pkg syscall (darwin-amd64), const RTAX_DST ideal-int pkg syscall (darwin-amd64), const RTAX_GATEWAY ideal-int pkg syscall (darwin-amd64), const RTAX_GENMASK ideal-int pkg syscall (darwin-amd64), const RTAX_IFA ideal-int pkg syscall (darwin-amd64), const RTAX_IFP ideal-int pkg syscall (darwin-amd64), const RTAX_MAX ideal-int pkg syscall (darwin-amd64), const RTAX_NETMASK ideal-int pkg syscall (darwin-amd64), const RTA_AUTHOR ideal-int pkg syscall (darwin-amd64), const RTA_BRD ideal-int pkg syscall (darwin-amd64), const RTA_DST ideal-int pkg syscall (darwin-amd64), const RTA_GATEWAY ideal-int pkg syscall (darwin-amd64), const RTA_GENMASK ideal-int pkg syscall (darwin-amd64), const RTA_IFA ideal-int pkg syscall (darwin-amd64), const RTA_IFP ideal-int pkg syscall (darwin-amd64), const RTA_NETMASK ideal-int pkg syscall (darwin-amd64), const RTF_BLACKHOLE ideal-int pkg syscall (darwin-amd64), const RTF_BROADCAST ideal-int pkg syscall (darwin-amd64), const RTF_CLONING ideal-int pkg syscall (darwin-amd64), const RTF_CONDEMNED ideal-int pkg syscall (darwin-amd64), const RTF_DELCLONE ideal-int pkg syscall (darwin-amd64), const RTF_DONE ideal-int pkg syscall (darwin-amd64), const RTF_DYNAMIC ideal-int pkg syscall (darwin-amd64), const RTF_GATEWAY ideal-int pkg syscall (darwin-amd64), const RTF_HOST ideal-int pkg syscall (darwin-amd64), const RTF_IFREF ideal-int pkg syscall (darwin-amd64), const RTF_IFSCOPE ideal-int pkg syscall (darwin-amd64), const RTF_LLINFO ideal-int pkg syscall (darwin-amd64), const RTF_LOCAL ideal-int pkg syscall (darwin-amd64), const RTF_MODIFIED ideal-int pkg syscall (darwin-amd64), const RTF_MULTICAST ideal-int pkg syscall (darwin-amd64), const RTF_PINNED ideal-int pkg syscall (darwin-amd64), const RTF_PRCLONING ideal-int pkg syscall (darwin-amd64), const RTF_PROTO1 ideal-int pkg syscall (darwin-amd64), const RTF_PROTO2 ideal-int pkg syscall (darwin-amd64), const RTF_PROTO3 ideal-int pkg syscall (darwin-amd64), const RTF_REJECT ideal-int pkg syscall (darwin-amd64), const RTF_STATIC ideal-int pkg syscall (darwin-amd64), const RTF_UP ideal-int pkg syscall (darwin-amd64), const RTF_WASCLONED ideal-int pkg syscall (darwin-amd64), const RTF_XRESOLVE ideal-int pkg syscall (darwin-amd64), const RTM_ADD ideal-int pkg syscall (darwin-amd64), const RTM_CHANGE ideal-int pkg syscall (darwin-amd64), const RTM_DELADDR ideal-int pkg syscall (darwin-amd64), const RTM_DELETE ideal-int pkg syscall (darwin-amd64), const RTM_DELMADDR ideal-int pkg syscall (darwin-amd64), const RTM_GET ideal-int pkg syscall (darwin-amd64), const RTM_GET2 ideal-int pkg syscall (darwin-amd64), const RTM_IFINFO ideal-int pkg syscall (darwin-amd64), const RTM_IFINFO2 ideal-int pkg syscall (darwin-amd64), const RTM_LOCK ideal-int pkg syscall (darwin-amd64), const RTM_LOSING ideal-int pkg syscall (darwin-amd64), const RTM_MISS ideal-int pkg syscall (darwin-amd64), const RTM_NEWADDR ideal-int pkg syscall (darwin-amd64), const RTM_NEWMADDR ideal-int pkg syscall (darwin-amd64), const RTM_NEWMADDR2 ideal-int pkg syscall (darwin-amd64), const RTM_OLDADD ideal-int pkg syscall (darwin-amd64), const RTM_OLDDEL ideal-int pkg syscall (darwin-amd64), const RTM_REDIRECT ideal-int pkg syscall (darwin-amd64), const RTM_RESOLVE ideal-int pkg syscall (darwin-amd64), const RTM_RTTUNIT ideal-int pkg syscall (darwin-amd64), const RTM_VERSION ideal-int pkg syscall (darwin-amd64), const RTV_EXPIRE ideal-int pkg syscall (darwin-amd64), const RTV_HOPCOUNT ideal-int pkg syscall (darwin-amd64), const RTV_MTU ideal-int pkg syscall (darwin-amd64), const RTV_RPIPE ideal-int pkg syscall (darwin-amd64), const RTV_RTT ideal-int pkg syscall (darwin-amd64), const RTV_RTTVAR ideal-int pkg syscall (darwin-amd64), const RTV_SPIPE ideal-int pkg syscall (darwin-amd64), const RTV_SSTHRESH ideal-int pkg syscall (darwin-amd64), const RUSAGE_CHILDREN ideal-int pkg syscall (darwin-amd64), const RUSAGE_SELF ideal-int pkg syscall (darwin-amd64), const SCM_CREDS ideal-int pkg syscall (darwin-amd64), const SCM_RIGHTS ideal-int pkg syscall (darwin-amd64), const SCM_TIMESTAMP ideal-int pkg syscall (darwin-amd64), const SCM_TIMESTAMP_MONOTONIC ideal-int pkg syscall (darwin-amd64), const SIGCHLD Signal pkg syscall (darwin-amd64), const SIGCONT Signal pkg syscall (darwin-amd64), const SIGEMT Signal pkg syscall (darwin-amd64), const SIGINFO Signal pkg syscall (darwin-amd64), const SIGIO Signal pkg syscall (darwin-amd64), const SIGIOT Signal pkg syscall (darwin-amd64), const SIGPROF Signal pkg syscall (darwin-amd64), const SIGSTOP Signal pkg syscall (darwin-amd64), const SIGSYS Signal pkg syscall (darwin-amd64), const SIGTSTP Signal pkg syscall (darwin-amd64), const SIGTTIN Signal pkg syscall (darwin-amd64), const SIGTTOU Signal pkg syscall (darwin-amd64), const SIGURG Signal pkg syscall (darwin-amd64), const SIGUSR1 Signal pkg syscall (darwin-amd64), const SIGUSR2 Signal pkg syscall (darwin-amd64), const SIGVTALRM Signal pkg syscall (darwin-amd64), const SIGWINCH Signal pkg syscall (darwin-amd64), const SIGXCPU Signal pkg syscall (darwin-amd64), const SIGXFSZ Signal pkg syscall (darwin-amd64), const SIOCADDMULTI ideal-int pkg syscall (darwin-amd64), const SIOCAIFADDR ideal-int pkg syscall (darwin-amd64), const SIOCALIFADDR ideal-int pkg syscall (darwin-amd64), const SIOCARPIPLL ideal-int pkg syscall (darwin-amd64), const SIOCATMARK ideal-int pkg syscall (darwin-amd64), const SIOCAUTOADDR ideal-int pkg syscall (darwin-amd64), const SIOCAUTONETMASK ideal-int pkg syscall (darwin-amd64), const SIOCDELMULTI ideal-int pkg syscall (darwin-amd64), const SIOCDIFADDR ideal-int pkg syscall (darwin-amd64), const SIOCDIFPHYADDR ideal-int pkg syscall (darwin-amd64), const SIOCDLIFADDR ideal-int pkg syscall (darwin-amd64), const SIOCGDRVSPEC ideal-int pkg syscall (darwin-amd64), const SIOCGETSGCNT ideal-int pkg syscall (darwin-amd64), const SIOCGETVIFCNT ideal-int pkg syscall (darwin-amd64), const SIOCGETVLAN ideal-int pkg syscall (darwin-amd64), const SIOCGHIWAT ideal-int pkg syscall (darwin-amd64), const SIOCGIFADDR ideal-int pkg syscall (darwin-amd64), const SIOCGIFALTMTU ideal-int pkg syscall (darwin-amd64), const SIOCGIFASYNCMAP ideal-int pkg syscall (darwin-amd64), const SIOCGIFBOND ideal-int pkg syscall (darwin-amd64), const SIOCGIFBRDADDR ideal-int pkg syscall (darwin-amd64), const SIOCGIFCAP ideal-int pkg syscall (darwin-amd64), const SIOCGIFCONF ideal-int pkg syscall (darwin-amd64), const SIOCGIFDEVMTU ideal-int pkg syscall (darwin-amd64), const SIOCGIFDSTADDR ideal-int pkg syscall (darwin-amd64), const SIOCGIFFLAGS ideal-int pkg syscall (darwin-amd64), const SIOCGIFGENERIC ideal-int pkg syscall (darwin-amd64), const SIOCGIFKPI ideal-int pkg syscall (darwin-amd64), const SIOCGIFMAC ideal-int pkg syscall (darwin-amd64), const SIOCGIFMEDIA ideal-int pkg syscall (darwin-amd64), const SIOCGIFMETRIC ideal-int pkg syscall (darwin-amd64), const SIOCGIFMTU ideal-int pkg syscall (darwin-amd64), const SIOCGIFNETMASK ideal-int pkg syscall (darwin-amd64), const SIOCGIFPDSTADDR ideal-int pkg syscall (darwin-amd64), const SIOCGIFPHYS ideal-int pkg syscall (darwin-amd64), const SIOCGIFPSRCADDR ideal-int pkg syscall (darwin-amd64), const SIOCGIFSTATUS ideal-int pkg syscall (darwin-amd64), const SIOCGIFVLAN ideal-int pkg syscall (darwin-amd64), const SIOCGIFWAKEFLAGS ideal-int pkg syscall (darwin-amd64), const SIOCGLIFADDR ideal-int pkg syscall (darwin-amd64), const SIOCGLIFPHYADDR ideal-int pkg syscall (darwin-amd64), const SIOCGLOWAT ideal-int pkg syscall (darwin-amd64), const SIOCGPGRP ideal-int pkg syscall (darwin-amd64), const SIOCIFCREATE ideal-int pkg syscall (darwin-amd64), const SIOCIFCREATE2 ideal-int pkg syscall (darwin-amd64), const SIOCIFDESTROY ideal-int pkg syscall (darwin-amd64), const SIOCRSLVMULTI ideal-int pkg syscall (darwin-amd64), const SIOCSDRVSPEC ideal-int pkg syscall (darwin-amd64), const SIOCSETVLAN ideal-int pkg syscall (darwin-amd64), const SIOCSHIWAT ideal-int pkg syscall (darwin-amd64), const SIOCSIFADDR ideal-int pkg syscall (darwin-amd64), const SIOCSIFALTMTU ideal-int pkg syscall (darwin-amd64), const SIOCSIFASYNCMAP ideal-int pkg syscall (darwin-amd64), const SIOCSIFBOND ideal-int pkg syscall (darwin-amd64), const SIOCSIFBRDADDR ideal-int pkg syscall (darwin-amd64), const SIOCSIFCAP ideal-int pkg syscall (darwin-amd64), const SIOCSIFDSTADDR ideal-int pkg syscall (darwin-amd64), const SIOCSIFFLAGS ideal-int pkg syscall (darwin-amd64), const SIOCSIFGENERIC ideal-int pkg syscall (darwin-amd64), const SIOCSIFKPI ideal-int pkg syscall (darwin-amd64), const SIOCSIFLLADDR ideal-int pkg syscall (darwin-amd64), const SIOCSIFMAC ideal-int pkg syscall (darwin-amd64), const SIOCSIFMEDIA ideal-int pkg syscall (darwin-amd64), const SIOCSIFMETRIC ideal-int pkg syscall (darwin-amd64), const SIOCSIFMTU ideal-int pkg syscall (darwin-amd64), const SIOCSIFNETMASK ideal-int pkg syscall (darwin-amd64), const SIOCSIFPHYADDR ideal-int pkg syscall (darwin-amd64), const SIOCSIFPHYS ideal-int pkg syscall (darwin-amd64), const SIOCSIFVLAN ideal-int pkg syscall (darwin-amd64), const SIOCSLIFPHYADDR ideal-int pkg syscall (darwin-amd64), const SIOCSLOWAT ideal-int pkg syscall (darwin-amd64), const SIOCSPGRP ideal-int pkg syscall (darwin-amd64), const SOCK_MAXADDRLEN ideal-int pkg syscall (darwin-amd64), const SOCK_RDM ideal-int pkg syscall (darwin-amd64), const SO_ACCEPTCONN ideal-int pkg syscall (darwin-amd64), const SO_DEBUG ideal-int pkg syscall (darwin-amd64), const SO_DONTTRUNC ideal-int pkg syscall (darwin-amd64), const SO_ERROR ideal-int pkg syscall (darwin-amd64), const SO_LABEL ideal-int pkg syscall (darwin-amd64), const SO_LINGER_SEC ideal-int pkg syscall (darwin-amd64), const SO_NKE ideal-int pkg syscall (darwin-amd64), const SO_NOADDRERR ideal-int pkg syscall (darwin-amd64), const SO_NOSIGPIPE ideal-int pkg syscall (darwin-amd64), const SO_NOTIFYCONFLICT ideal-int pkg syscall (darwin-amd64), const SO_NP_EXTENSIONS ideal-int pkg syscall (darwin-amd64), const SO_NREAD ideal-int pkg syscall (darwin-amd64), const SO_NWRITE ideal-int pkg syscall (darwin-amd64), const SO_OOBINLINE ideal-int pkg syscall (darwin-amd64), const SO_PEERLABEL ideal-int pkg syscall (darwin-amd64), const SO_RANDOMPORT ideal-int pkg syscall (darwin-amd64), const SO_RCVLOWAT ideal-int pkg syscall (darwin-amd64), const SO_RCVTIMEO ideal-int pkg syscall (darwin-amd64), const SO_RESTRICTIONS ideal-int pkg syscall (darwin-amd64), const SO_RESTRICT_DENYIN ideal-int pkg syscall (darwin-amd64), const SO_RESTRICT_DENYOUT ideal-int pkg syscall (darwin-amd64), const SO_RESTRICT_DENYSET ideal-int pkg syscall (darwin-amd64), const SO_REUSEPORT ideal-int pkg syscall (darwin-amd64), const SO_REUSESHAREUID ideal-int pkg syscall (darwin-amd64), const SO_SNDLOWAT ideal-int pkg syscall (darwin-amd64), const SO_SNDTIMEO ideal-int pkg syscall (darwin-amd64), const SO_TIMESTAMP ideal-int pkg syscall (darwin-amd64), const SO_TIMESTAMP_MONOTONIC ideal-int pkg syscall (darwin-amd64), const SO_TYPE ideal-int pkg syscall (darwin-amd64), const SO_UPCALLCLOSEWAIT ideal-int pkg syscall (darwin-amd64), const SO_USELOOPBACK ideal-int pkg syscall (darwin-amd64), const SO_WANTMORE ideal-int pkg syscall (darwin-amd64), const SO_WANTOOBFLAG ideal-int pkg syscall (darwin-amd64), const SYS_ACCEPT ideal-int pkg syscall (darwin-amd64), const SYS_ACCEPT_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_ACCESS ideal-int pkg syscall (darwin-amd64), const SYS_ACCESS_EXTENDED ideal-int pkg syscall (darwin-amd64), const SYS_ACCT ideal-int pkg syscall (darwin-amd64), const SYS_ADD_PROFIL ideal-int pkg syscall (darwin-amd64), const SYS_ADJTIME ideal-int pkg syscall (darwin-amd64), const SYS_AIO_CANCEL ideal-int pkg syscall (darwin-amd64), const SYS_AIO_ERROR ideal-int pkg syscall (darwin-amd64), const SYS_AIO_FSYNC ideal-int pkg syscall (darwin-amd64), const SYS_AIO_READ ideal-int pkg syscall (darwin-amd64), const SYS_AIO_RETURN ideal-int pkg syscall (darwin-amd64), const SYS_AIO_SUSPEND ideal-int pkg syscall (darwin-amd64), const SYS_AIO_SUSPEND_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_AIO_WRITE ideal-int pkg syscall (darwin-amd64), const SYS_ATGETMSG ideal-int pkg syscall (darwin-amd64), const SYS_ATPGETREQ ideal-int pkg syscall (darwin-amd64), const SYS_ATPGETRSP ideal-int pkg syscall (darwin-amd64), const SYS_ATPSNDREQ ideal-int pkg syscall (darwin-amd64), const SYS_ATPSNDRSP ideal-int pkg syscall (darwin-amd64), const SYS_ATPUTMSG ideal-int pkg syscall (darwin-amd64), const SYS_ATSOCKET ideal-int pkg syscall (darwin-amd64), const SYS_AUDIT ideal-int pkg syscall (darwin-amd64), const SYS_AUDITCTL ideal-int pkg syscall (darwin-amd64), const SYS_AUDITON ideal-int pkg syscall (darwin-amd64), const SYS_AUDIT_SESSION_JOIN ideal-int pkg syscall (darwin-amd64), const SYS_AUDIT_SESSION_PORT ideal-int pkg syscall (darwin-amd64), const SYS_AUDIT_SESSION_SELF ideal-int pkg syscall (darwin-amd64), const SYS_BIND ideal-int pkg syscall (darwin-amd64), const SYS_BSDTHREAD_CREATE ideal-int pkg syscall (darwin-amd64), const SYS_BSDTHREAD_REGISTER ideal-int pkg syscall (darwin-amd64), const SYS_BSDTHREAD_TERMINATE ideal-int pkg syscall (darwin-amd64), const SYS_CHDIR ideal-int pkg syscall (darwin-amd64), const SYS_CHFLAGS ideal-int pkg syscall (darwin-amd64), const SYS_CHMOD ideal-int pkg syscall (darwin-amd64), const SYS_CHMOD_EXTENDED ideal-int pkg syscall (darwin-amd64), const SYS_CHOWN ideal-int pkg syscall (darwin-amd64), const SYS_CHROOT ideal-int pkg syscall (darwin-amd64), const SYS_CHUD ideal-int pkg syscall (darwin-amd64), const SYS_CLOSE ideal-int pkg syscall (darwin-amd64), const SYS_CLOSE_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_CONNECT ideal-int pkg syscall (darwin-amd64), const SYS_CONNECT_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_COPYFILE ideal-int pkg syscall (darwin-amd64), const SYS_CSOPS ideal-int pkg syscall (darwin-amd64), const SYS_DELETE ideal-int pkg syscall (darwin-amd64), const SYS_DUP ideal-int pkg syscall (darwin-amd64), const SYS_DUP2 ideal-int pkg syscall (darwin-amd64), const SYS_EXCHANGEDATA ideal-int pkg syscall (darwin-amd64), const SYS_EXECVE ideal-int pkg syscall (darwin-amd64), const SYS_EXIT ideal-int pkg syscall (darwin-amd64), const SYS_FCHDIR ideal-int pkg syscall (darwin-amd64), const SYS_FCHFLAGS ideal-int pkg syscall (darwin-amd64), const SYS_FCHMOD ideal-int pkg syscall (darwin-amd64), const SYS_FCHMOD_EXTENDED ideal-int pkg syscall (darwin-amd64), const SYS_FCHOWN ideal-int pkg syscall (darwin-amd64), const SYS_FCNTL ideal-int pkg syscall (darwin-amd64), const SYS_FCNTL_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_FDATASYNC ideal-int pkg syscall (darwin-amd64), const SYS_FFSCTL ideal-int pkg syscall (darwin-amd64), const SYS_FGETATTRLIST ideal-int pkg syscall (darwin-amd64), const SYS_FGETXATTR ideal-int pkg syscall (darwin-amd64), const SYS_FHOPEN ideal-int pkg syscall (darwin-amd64), const SYS_FILEPORT_MAKEFD ideal-int pkg syscall (darwin-amd64), const SYS_FILEPORT_MAKEPORT ideal-int pkg syscall (darwin-amd64), const SYS_FLISTXATTR ideal-int pkg syscall (darwin-amd64), const SYS_FLOCK ideal-int pkg syscall (darwin-amd64), const SYS_FORK ideal-int pkg syscall (darwin-amd64), const SYS_FPATHCONF ideal-int pkg syscall (darwin-amd64), const SYS_FREMOVEXATTR ideal-int pkg syscall (darwin-amd64), const SYS_FSCTL ideal-int pkg syscall (darwin-amd64), const SYS_FSETATTRLIST ideal-int pkg syscall (darwin-amd64), const SYS_FSETXATTR ideal-int pkg syscall (darwin-amd64), const SYS_FSGETPATH ideal-int pkg syscall (darwin-amd64), const SYS_FSTAT ideal-int pkg syscall (darwin-amd64), const SYS_FSTAT64 ideal-int pkg syscall (darwin-amd64), const SYS_FSTAT64_EXTENDED ideal-int pkg syscall (darwin-amd64), const SYS_FSTATFS ideal-int pkg syscall (darwin-amd64), const SYS_FSTATFS64 ideal-int pkg syscall (darwin-amd64), const SYS_FSTATV ideal-int pkg syscall (darwin-amd64), const SYS_FSTAT_EXTENDED ideal-int pkg syscall (darwin-amd64), const SYS_FSYNC ideal-int pkg syscall (darwin-amd64), const SYS_FSYNC_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_FTRUNCATE ideal-int pkg syscall (darwin-amd64), const SYS_FUTIMES ideal-int pkg syscall (darwin-amd64), const SYS_GETATTRLIST ideal-int pkg syscall (darwin-amd64), const SYS_GETAUDIT ideal-int pkg syscall (darwin-amd64), const SYS_GETAUDIT_ADDR ideal-int pkg syscall (darwin-amd64), const SYS_GETAUID ideal-int pkg syscall (darwin-amd64), const SYS_GETDIRENTRIES ideal-int pkg syscall (darwin-amd64), const SYS_GETDIRENTRIES64 ideal-int pkg syscall (darwin-amd64), const SYS_GETDIRENTRIESATTR ideal-int pkg syscall (darwin-amd64), const SYS_GETDTABLESIZE ideal-int pkg syscall (darwin-amd64), const SYS_GETEGID ideal-int pkg syscall (darwin-amd64), const SYS_GETEUID ideal-int pkg syscall (darwin-amd64), const SYS_GETFH ideal-int pkg syscall (darwin-amd64), const SYS_GETFSSTAT ideal-int pkg syscall (darwin-amd64), const SYS_GETFSSTAT64 ideal-int pkg syscall (darwin-amd64), const SYS_GETGID ideal-int pkg syscall (darwin-amd64), const SYS_GETGROUPS ideal-int pkg syscall (darwin-amd64), const SYS_GETHOSTUUID ideal-int pkg syscall (darwin-amd64), const SYS_GETITIMER ideal-int pkg syscall (darwin-amd64), const SYS_GETLCID ideal-int pkg syscall (darwin-amd64), const SYS_GETLOGIN ideal-int pkg syscall (darwin-amd64), const SYS_GETPEERNAME ideal-int pkg syscall (darwin-amd64), const SYS_GETPGID ideal-int pkg syscall (darwin-amd64), const SYS_GETPGRP ideal-int pkg syscall (darwin-amd64), const SYS_GETPID ideal-int pkg syscall (darwin-amd64), const SYS_GETPPID ideal-int pkg syscall (darwin-amd64), const SYS_GETPRIORITY ideal-int pkg syscall (darwin-amd64), const SYS_GETRLIMIT ideal-int pkg syscall (darwin-amd64), const SYS_GETRUSAGE ideal-int pkg syscall (darwin-amd64), const SYS_GETSGROUPS ideal-int pkg syscall (darwin-amd64), const SYS_GETSID ideal-int pkg syscall (darwin-amd64), const SYS_GETSOCKNAME ideal-int pkg syscall (darwin-amd64), const SYS_GETSOCKOPT ideal-int pkg syscall (darwin-amd64), const SYS_GETTID ideal-int pkg syscall (darwin-amd64), const SYS_GETTIMEOFDAY ideal-int pkg syscall (darwin-amd64), const SYS_GETUID ideal-int pkg syscall (darwin-amd64), const SYS_GETWGROUPS ideal-int pkg syscall (darwin-amd64), const SYS_GETXATTR ideal-int pkg syscall (darwin-amd64), const SYS_IDENTITYSVC ideal-int pkg syscall (darwin-amd64), const SYS_INITGROUPS ideal-int pkg syscall (darwin-amd64), const SYS_IOCTL ideal-int pkg syscall (darwin-amd64), const SYS_IOPOLICYSYS ideal-int pkg syscall (darwin-amd64), const SYS_ISSETUGID ideal-int pkg syscall (darwin-amd64), const SYS_KDEBUG_TRACE ideal-int pkg syscall (darwin-amd64), const SYS_KEVENT ideal-int pkg syscall (darwin-amd64), const SYS_KEVENT64 ideal-int pkg syscall (darwin-amd64), const SYS_KILL ideal-int pkg syscall (darwin-amd64), const SYS_KQUEUE ideal-int pkg syscall (darwin-amd64), const SYS_LCHOWN ideal-int pkg syscall (darwin-amd64), const SYS_LINK ideal-int pkg syscall (darwin-amd64), const SYS_LIO_LISTIO ideal-int pkg syscall (darwin-amd64), const SYS_LISTEN ideal-int pkg syscall (darwin-amd64), const SYS_LISTXATTR ideal-int pkg syscall (darwin-amd64), const SYS_LSEEK ideal-int pkg syscall (darwin-amd64), const SYS_LSTAT ideal-int pkg syscall (darwin-amd64), const SYS_LSTAT64 ideal-int pkg syscall (darwin-amd64), const SYS_LSTAT64_EXTENDED ideal-int pkg syscall (darwin-amd64), const SYS_LSTATV ideal-int pkg syscall (darwin-amd64), const SYS_LSTAT_EXTENDED ideal-int pkg syscall (darwin-amd64), const SYS_MADVISE ideal-int pkg syscall (darwin-amd64), const SYS_MAXSYSCALL ideal-int pkg syscall (darwin-amd64), const SYS_MINCORE ideal-int pkg syscall (darwin-amd64), const SYS_MINHERIT ideal-int pkg syscall (darwin-amd64), const SYS_MKCOMPLEX ideal-int pkg syscall (darwin-amd64), const SYS_MKDIR ideal-int pkg syscall (darwin-amd64), const SYS_MKDIR_EXTENDED ideal-int pkg syscall (darwin-amd64), const SYS_MKFIFO ideal-int pkg syscall (darwin-amd64), const SYS_MKFIFO_EXTENDED ideal-int pkg syscall (darwin-amd64), const SYS_MKNOD ideal-int pkg syscall (darwin-amd64), const SYS_MLOCK ideal-int pkg syscall (darwin-amd64), const SYS_MLOCKALL ideal-int pkg syscall (darwin-amd64), const SYS_MMAP ideal-int pkg syscall (darwin-amd64), const SYS_MODWATCH ideal-int pkg syscall (darwin-amd64), const SYS_MOUNT ideal-int pkg syscall (darwin-amd64), const SYS_MPROTECT ideal-int pkg syscall (darwin-amd64), const SYS_MSGCTL ideal-int pkg syscall (darwin-amd64), const SYS_MSGGET ideal-int pkg syscall (darwin-amd64), const SYS_MSGRCV ideal-int pkg syscall (darwin-amd64), const SYS_MSGRCV_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_MSGSND ideal-int pkg syscall (darwin-amd64), const SYS_MSGSND_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_MSGSYS ideal-int pkg syscall (darwin-amd64), const SYS_MSYNC ideal-int pkg syscall (darwin-amd64), const SYS_MSYNC_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_MUNLOCK ideal-int pkg syscall (darwin-amd64), const SYS_MUNLOCKALL ideal-int pkg syscall (darwin-amd64), const SYS_MUNMAP ideal-int pkg syscall (darwin-amd64), const SYS_NFSCLNT ideal-int pkg syscall (darwin-amd64), const SYS_NFSSVC ideal-int pkg syscall (darwin-amd64), const SYS_OPEN ideal-int pkg syscall (darwin-amd64), const SYS_OPEN_EXTENDED ideal-int pkg syscall (darwin-amd64), const SYS_OPEN_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_PATHCONF ideal-int pkg syscall (darwin-amd64), const SYS_PID_HIBERNATE ideal-int pkg syscall (darwin-amd64), const SYS_PID_RESUME ideal-int pkg syscall (darwin-amd64), const SYS_PID_SHUTDOWN_SOCKETS ideal-int pkg syscall (darwin-amd64), const SYS_PID_SUSPEND ideal-int pkg syscall (darwin-amd64), const SYS_PIPE ideal-int pkg syscall (darwin-amd64), const SYS_POLL ideal-int pkg syscall (darwin-amd64), const SYS_POLL_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_POSIX_SPAWN ideal-int pkg syscall (darwin-amd64), const SYS_PREAD ideal-int pkg syscall (darwin-amd64), const SYS_PREAD_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_PROCESS_POLICY ideal-int pkg syscall (darwin-amd64), const SYS_PROC_INFO ideal-int pkg syscall (darwin-amd64), const SYS_PROFIL ideal-int pkg syscall (darwin-amd64), const SYS_PSYNCH_CVBROAD ideal-int pkg syscall (darwin-amd64), const SYS_PSYNCH_CVCLRPREPOST ideal-int pkg syscall (darwin-amd64), const SYS_PSYNCH_CVSIGNAL ideal-int pkg syscall (darwin-amd64), const SYS_PSYNCH_CVWAIT ideal-int pkg syscall (darwin-amd64), const SYS_PSYNCH_MUTEXDROP ideal-int pkg syscall (darwin-amd64), const SYS_PSYNCH_MUTEXWAIT ideal-int pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_DOWNGRADE ideal-int pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_LONGRDLOCK ideal-int pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_RDLOCK ideal-int pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_UNLOCK ideal-int pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_UNLOCK2 ideal-int pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_UPGRADE ideal-int pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_WRLOCK ideal-int pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_YIELDWRLOCK ideal-int pkg syscall (darwin-amd64), const SYS_PTRACE ideal-int pkg syscall (darwin-amd64), const SYS_PWRITE ideal-int pkg syscall (darwin-amd64), const SYS_PWRITE_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_QUOTACTL ideal-int pkg syscall (darwin-amd64), const SYS_READ ideal-int pkg syscall (darwin-amd64), const SYS_READLINK ideal-int pkg syscall (darwin-amd64), const SYS_READV ideal-int pkg syscall (darwin-amd64), const SYS_READV_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_READ_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_REBOOT ideal-int pkg syscall (darwin-amd64), const SYS_RECVFROM ideal-int pkg syscall (darwin-amd64), const SYS_RECVFROM_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_RECVMSG ideal-int pkg syscall (darwin-amd64), const SYS_RECVMSG_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_REMOVEXATTR ideal-int pkg syscall (darwin-amd64), const SYS_RENAME ideal-int pkg syscall (darwin-amd64), const SYS_REVOKE ideal-int pkg syscall (darwin-amd64), const SYS_RMDIR ideal-int pkg syscall (darwin-amd64), const SYS_SEARCHFS ideal-int pkg syscall (darwin-amd64), const SYS_SELECT ideal-int pkg syscall (darwin-amd64), const SYS_SELECT_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_SEMCTL ideal-int pkg syscall (darwin-amd64), const SYS_SEMGET ideal-int pkg syscall (darwin-amd64), const SYS_SEMOP ideal-int pkg syscall (darwin-amd64), const SYS_SEMSYS ideal-int pkg syscall (darwin-amd64), const SYS_SEM_CLOSE ideal-int pkg syscall (darwin-amd64), const SYS_SEM_DESTROY ideal-int pkg syscall (darwin-amd64), const SYS_SEM_GETVALUE ideal-int pkg syscall (darwin-amd64), const SYS_SEM_INIT ideal-int pkg syscall (darwin-amd64), const SYS_SEM_OPEN ideal-int pkg syscall (darwin-amd64), const SYS_SEM_POST ideal-int pkg syscall (darwin-amd64), const SYS_SEM_TRYWAIT ideal-int pkg syscall (darwin-amd64), const SYS_SEM_UNLINK ideal-int pkg syscall (darwin-amd64), const SYS_SEM_WAIT ideal-int pkg syscall (darwin-amd64), const SYS_SEM_WAIT_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_SENDFILE ideal-int pkg syscall (darwin-amd64), const SYS_SENDMSG ideal-int pkg syscall (darwin-amd64), const SYS_SENDMSG_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_SENDTO ideal-int pkg syscall (darwin-amd64), const SYS_SENDTO_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_SETATTRLIST ideal-int pkg syscall (darwin-amd64), const SYS_SETAUDIT ideal-int pkg syscall (darwin-amd64), const SYS_SETAUDIT_ADDR ideal-int pkg syscall (darwin-amd64), const SYS_SETAUID ideal-int pkg syscall (darwin-amd64), const SYS_SETEGID ideal-int pkg syscall (darwin-amd64), const SYS_SETEUID ideal-int pkg syscall (darwin-amd64), const SYS_SETGID ideal-int pkg syscall (darwin-amd64), const SYS_SETGROUPS ideal-int pkg syscall (darwin-amd64), const SYS_SETITIMER ideal-int pkg syscall (darwin-amd64), const SYS_SETLCID ideal-int pkg syscall (darwin-amd64), const SYS_SETLOGIN ideal-int pkg syscall (darwin-amd64), const SYS_SETPGID ideal-int pkg syscall (darwin-amd64), const SYS_SETPRIORITY ideal-int pkg syscall (darwin-amd64), const SYS_SETPRIVEXEC ideal-int pkg syscall (darwin-amd64), const SYS_SETREGID ideal-int pkg syscall (darwin-amd64), const SYS_SETREUID ideal-int pkg syscall (darwin-amd64), const SYS_SETRLIMIT ideal-int pkg syscall (darwin-amd64), const SYS_SETSGROUPS ideal-int pkg syscall (darwin-amd64), const SYS_SETSID ideal-int pkg syscall (darwin-amd64), const SYS_SETSOCKOPT ideal-int pkg syscall (darwin-amd64), const SYS_SETTID ideal-int pkg syscall (darwin-amd64), const SYS_SETTID_WITH_PID ideal-int pkg syscall (darwin-amd64), const SYS_SETTIMEOFDAY ideal-int pkg syscall (darwin-amd64), const SYS_SETUID ideal-int pkg syscall (darwin-amd64), const SYS_SETWGROUPS ideal-int pkg syscall (darwin-amd64), const SYS_SETXATTR ideal-int pkg syscall (darwin-amd64), const SYS_SHARED_REGION_CHECK_NP ideal-int pkg syscall (darwin-amd64), const SYS_SHARED_REGION_MAP_AND_SLIDE_NP ideal-int pkg syscall (darwin-amd64), const SYS_SHMAT ideal-int pkg syscall (darwin-amd64), const SYS_SHMCTL ideal-int pkg syscall (darwin-amd64), const SYS_SHMDT ideal-int pkg syscall (darwin-amd64), const SYS_SHMGET ideal-int pkg syscall (darwin-amd64), const SYS_SHMSYS ideal-int pkg syscall (darwin-amd64), const SYS_SHM_OPEN ideal-int pkg syscall (darwin-amd64), const SYS_SHM_UNLINK ideal-int pkg syscall (darwin-amd64), const SYS_SHUTDOWN ideal-int pkg syscall (darwin-amd64), const SYS_SIGACTION ideal-int pkg syscall (darwin-amd64), const SYS_SIGALTSTACK ideal-int pkg syscall (darwin-amd64), const SYS_SIGPENDING ideal-int pkg syscall (darwin-amd64), const SYS_SIGPROCMASK ideal-int pkg syscall (darwin-amd64), const SYS_SIGRETURN ideal-int pkg syscall (darwin-amd64), const SYS_SIGSUSPEND ideal-int pkg syscall (darwin-amd64), const SYS_SIGSUSPEND_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_SOCKET ideal-int pkg syscall (darwin-amd64), const SYS_SOCKETPAIR ideal-int pkg syscall (darwin-amd64), const SYS_STACK_SNAPSHOT ideal-int pkg syscall (darwin-amd64), const SYS_STAT ideal-int pkg syscall (darwin-amd64), const SYS_STAT64 ideal-int pkg syscall (darwin-amd64), const SYS_STAT64_EXTENDED ideal-int pkg syscall (darwin-amd64), const SYS_STATFS ideal-int pkg syscall (darwin-amd64), const SYS_STATFS64 ideal-int pkg syscall (darwin-amd64), const SYS_STATV ideal-int pkg syscall (darwin-amd64), const SYS_STAT_EXTENDED ideal-int pkg syscall (darwin-amd64), const SYS_SWAPON ideal-int pkg syscall (darwin-amd64), const SYS_SYMLINK ideal-int pkg syscall (darwin-amd64), const SYS_SYNC ideal-int pkg syscall (darwin-amd64), const SYS_SYSCALL ideal-int pkg syscall (darwin-amd64), const SYS_THREAD_SELFID ideal-int pkg syscall (darwin-amd64), const SYS_TRUNCATE ideal-int pkg syscall (darwin-amd64), const SYS_UMASK ideal-int pkg syscall (darwin-amd64), const SYS_UMASK_EXTENDED ideal-int pkg syscall (darwin-amd64), const SYS_UNDELETE ideal-int pkg syscall (darwin-amd64), const SYS_UNLINK ideal-int pkg syscall (darwin-amd64), const SYS_UNMOUNT ideal-int pkg syscall (darwin-amd64), const SYS_UTIMES ideal-int pkg syscall (darwin-amd64), const SYS_VFORK ideal-int pkg syscall (darwin-amd64), const SYS_VM_PRESSURE_MONITOR ideal-int pkg syscall (darwin-amd64), const SYS_WAIT4 ideal-int pkg syscall (darwin-amd64), const SYS_WAIT4_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_WAITEVENT ideal-int pkg syscall (darwin-amd64), const SYS_WAITID ideal-int pkg syscall (darwin-amd64), const SYS_WAITID_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_WATCHEVENT ideal-int pkg syscall (darwin-amd64), const SYS_WORKQ_KERNRETURN ideal-int pkg syscall (darwin-amd64), const SYS_WORKQ_OPEN ideal-int pkg syscall (darwin-amd64), const SYS_WRITE ideal-int pkg syscall (darwin-amd64), const SYS_WRITEV ideal-int pkg syscall (darwin-amd64), const SYS_WRITEV_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS_WRITE_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS___DISABLE_THREADSIGNAL ideal-int pkg syscall (darwin-amd64), const SYS___MAC_EXECVE ideal-int pkg syscall (darwin-amd64), const SYS___MAC_GETFSSTAT ideal-int pkg syscall (darwin-amd64), const SYS___MAC_GET_FD ideal-int pkg syscall (darwin-amd64), const SYS___MAC_GET_FILE ideal-int pkg syscall (darwin-amd64), const SYS___MAC_GET_LCID ideal-int pkg syscall (darwin-amd64), const SYS___MAC_GET_LCTX ideal-int pkg syscall (darwin-amd64), const SYS___MAC_GET_LINK ideal-int pkg syscall (darwin-amd64), const SYS___MAC_GET_MOUNT ideal-int pkg syscall (darwin-amd64), const SYS___MAC_GET_PID ideal-int pkg syscall (darwin-amd64), const SYS___MAC_GET_PROC ideal-int pkg syscall (darwin-amd64), const SYS___MAC_MOUNT ideal-int pkg syscall (darwin-amd64), const SYS___MAC_SET_FD ideal-int pkg syscall (darwin-amd64), const SYS___MAC_SET_FILE ideal-int pkg syscall (darwin-amd64), const SYS___MAC_SET_LCTX ideal-int pkg syscall (darwin-amd64), const SYS___MAC_SET_LINK ideal-int pkg syscall (darwin-amd64), const SYS___MAC_SET_PROC ideal-int pkg syscall (darwin-amd64), const SYS___MAC_SYSCALL ideal-int pkg syscall (darwin-amd64), const SYS___OLD_SEMWAIT_SIGNAL ideal-int pkg syscall (darwin-amd64), const SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS___PTHREAD_CANCELED ideal-int pkg syscall (darwin-amd64), const SYS___PTHREAD_CHDIR ideal-int pkg syscall (darwin-amd64), const SYS___PTHREAD_FCHDIR ideal-int pkg syscall (darwin-amd64), const SYS___PTHREAD_KILL ideal-int pkg syscall (darwin-amd64), const SYS___PTHREAD_MARKCANCEL ideal-int pkg syscall (darwin-amd64), const SYS___PTHREAD_SIGMASK ideal-int pkg syscall (darwin-amd64), const SYS___SEMWAIT_SIGNAL ideal-int pkg syscall (darwin-amd64), const SYS___SEMWAIT_SIGNAL_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS___SIGWAIT ideal-int pkg syscall (darwin-amd64), const SYS___SIGWAIT_NOCANCEL ideal-int pkg syscall (darwin-amd64), const SYS___SYSCTL ideal-int pkg syscall (darwin-amd64), const S_IEXEC ideal-int pkg syscall (darwin-amd64), const S_IFWHT ideal-int pkg syscall (darwin-amd64), const S_IREAD ideal-int pkg syscall (darwin-amd64), const S_IRGRP ideal-int pkg syscall (darwin-amd64), const S_IROTH ideal-int pkg syscall (darwin-amd64), const S_IRWXG ideal-int pkg syscall (darwin-amd64), const S_IRWXO ideal-int pkg syscall (darwin-amd64), const S_IRWXU ideal-int pkg syscall (darwin-amd64), const S_ISTXT ideal-int pkg syscall (darwin-amd64), const S_IWGRP ideal-int pkg syscall (darwin-amd64), const S_IWOTH ideal-int pkg syscall (darwin-amd64), const S_IWRITE ideal-int pkg syscall (darwin-amd64), const S_IXGRP ideal-int pkg syscall (darwin-amd64), const S_IXOTH ideal-int pkg syscall (darwin-amd64), const SizeofBpfHdr ideal-int pkg syscall (darwin-amd64), const SizeofBpfInsn ideal-int pkg syscall (darwin-amd64), const SizeofBpfProgram ideal-int pkg syscall (darwin-amd64), const SizeofBpfStat ideal-int pkg syscall (darwin-amd64), const SizeofBpfVersion ideal-int pkg syscall (darwin-amd64), const SizeofCmsghdr ideal-int pkg syscall (darwin-amd64), const SizeofIPMreq ideal-int pkg syscall (darwin-amd64), const SizeofIPv6Mreq ideal-int pkg syscall (darwin-amd64), const SizeofIfData ideal-int pkg syscall (darwin-amd64), const SizeofIfMsghdr ideal-int pkg syscall (darwin-amd64), const SizeofIfaMsghdr ideal-int pkg syscall (darwin-amd64), const SizeofIfmaMsghdr ideal-int pkg syscall (darwin-amd64), const SizeofIfmaMsghdr2 ideal-int pkg syscall (darwin-amd64), const SizeofInet6Pktinfo ideal-int pkg syscall (darwin-amd64), const SizeofLinger ideal-int pkg syscall (darwin-amd64), const SizeofMsghdr ideal-int pkg syscall (darwin-amd64), const SizeofRtMetrics ideal-int pkg syscall (darwin-amd64), const SizeofRtMsghdr ideal-int pkg syscall (darwin-amd64), const SizeofSockaddrAny ideal-int pkg syscall (darwin-amd64), const SizeofSockaddrDatalink ideal-int pkg syscall (darwin-amd64), const SizeofSockaddrInet4 ideal-int pkg syscall (darwin-amd64), const SizeofSockaddrInet6 ideal-int pkg syscall (darwin-amd64), const SizeofSockaddrUnix ideal-int pkg syscall (darwin-amd64), const TCP_CONNECTIONTIMEOUT ideal-int pkg syscall (darwin-amd64), const TCP_KEEPALIVE ideal-int pkg syscall (darwin-amd64), const TCP_MAXHLEN ideal-int pkg syscall (darwin-amd64), const TCP_MAXOLEN ideal-int pkg syscall (darwin-amd64), const TCP_MAXSEG ideal-int pkg syscall (darwin-amd64), const TCP_MAXWIN ideal-int pkg syscall (darwin-amd64), const TCP_MAX_SACK ideal-int pkg syscall (darwin-amd64), const TCP_MAX_WINSHIFT ideal-int pkg syscall (darwin-amd64), const TCP_MINMSS ideal-int pkg syscall (darwin-amd64), const TCP_MINMSSOVERLOAD ideal-int pkg syscall (darwin-amd64), const TCP_MSS ideal-int pkg syscall (darwin-amd64), const TCP_NOOPT ideal-int pkg syscall (darwin-amd64), const TCP_NOPUSH ideal-int pkg syscall (darwin-amd64), const TCP_RXT_CONNDROPTIME ideal-int pkg syscall (darwin-amd64), const TCP_RXT_FINDROP ideal-int pkg syscall (darwin-amd64), const TIOCCBRK ideal-int pkg syscall (darwin-amd64), const TIOCCDTR ideal-int pkg syscall (darwin-amd64), const TIOCCONS ideal-int pkg syscall (darwin-amd64), const TIOCDCDTIMESTAMP ideal-int pkg syscall (darwin-amd64), const TIOCDRAIN ideal-int pkg syscall (darwin-amd64), const TIOCDSIMICROCODE ideal-int pkg syscall (darwin-amd64), const TIOCEXCL ideal-int pkg syscall (darwin-amd64), const TIOCEXT ideal-int pkg syscall (darwin-amd64), const TIOCFLUSH ideal-int pkg syscall (darwin-amd64), const TIOCGDRAINWAIT ideal-int pkg syscall (darwin-amd64), const TIOCGETA ideal-int pkg syscall (darwin-amd64), const TIOCGETD ideal-int pkg syscall (darwin-amd64), const TIOCGPGRP ideal-int pkg syscall (darwin-amd64), const TIOCGWINSZ ideal-int pkg syscall (darwin-amd64), const TIOCIXOFF ideal-int pkg syscall (darwin-amd64), const TIOCIXON ideal-int pkg syscall (darwin-amd64), const TIOCMBIC ideal-int pkg syscall (darwin-amd64), const TIOCMBIS ideal-int pkg syscall (darwin-amd64), const TIOCMGDTRWAIT ideal-int pkg syscall (darwin-amd64), const TIOCMGET ideal-int pkg syscall (darwin-amd64), const TIOCMODG ideal-int pkg syscall (darwin-amd64), const TIOCMODS ideal-int pkg syscall (darwin-amd64), const TIOCMSDTRWAIT ideal-int pkg syscall (darwin-amd64), const TIOCMSET ideal-int pkg syscall (darwin-amd64), const TIOCM_CAR ideal-int pkg syscall (darwin-amd64), const TIOCM_CD ideal-int pkg syscall (darwin-amd64), const TIOCM_CTS ideal-int pkg syscall (darwin-amd64), const TIOCM_DSR ideal-int pkg syscall (darwin-amd64), const TIOCM_DTR ideal-int pkg syscall (darwin-amd64), const TIOCM_LE ideal-int pkg syscall (darwin-amd64), const TIOCM_RI ideal-int pkg syscall (darwin-amd64), const TIOCM_RNG ideal-int pkg syscall (darwin-amd64), const TIOCM_RTS ideal-int pkg syscall (darwin-amd64), const TIOCM_SR ideal-int pkg syscall (darwin-amd64), const TIOCM_ST ideal-int pkg syscall (darwin-amd64), const TIOCNOTTY ideal-int pkg syscall (darwin-amd64), const TIOCNXCL ideal-int pkg syscall (darwin-amd64), const TIOCOUTQ ideal-int pkg syscall (darwin-amd64), const TIOCPKT ideal-int pkg syscall (darwin-amd64), const TIOCPKT_DATA ideal-int pkg syscall (darwin-amd64), const TIOCPKT_DOSTOP ideal-int pkg syscall (darwin-amd64), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (darwin-amd64), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (darwin-amd64), const TIOCPKT_IOCTL ideal-int pkg syscall (darwin-amd64), const TIOCPKT_NOSTOP ideal-int pkg syscall (darwin-amd64), const TIOCPKT_START ideal-int pkg syscall (darwin-amd64), const TIOCPKT_STOP ideal-int pkg syscall (darwin-amd64), const TIOCPTYGNAME ideal-int pkg syscall (darwin-amd64), const TIOCPTYGRANT ideal-int pkg syscall (darwin-amd64), const TIOCPTYUNLK ideal-int pkg syscall (darwin-amd64), const TIOCREMOTE ideal-int pkg syscall (darwin-amd64), const TIOCSBRK ideal-int pkg syscall (darwin-amd64), const TIOCSCONS ideal-int pkg syscall (darwin-amd64), const TIOCSCTTY ideal-int pkg syscall (darwin-amd64), const TIOCSDRAINWAIT ideal-int pkg syscall (darwin-amd64), const TIOCSDTR ideal-int pkg syscall (darwin-amd64), const TIOCSETA ideal-int pkg syscall (darwin-amd64), const TIOCSETAF ideal-int pkg syscall (darwin-amd64), const TIOCSETAW ideal-int pkg syscall (darwin-amd64), const TIOCSETD ideal-int pkg syscall (darwin-amd64), const TIOCSIG ideal-int pkg syscall (darwin-amd64), const TIOCSPGRP ideal-int pkg syscall (darwin-amd64), const TIOCSTART ideal-int pkg syscall (darwin-amd64), const TIOCSTAT ideal-int pkg syscall (darwin-amd64), const TIOCSTI ideal-int pkg syscall (darwin-amd64), const TIOCSTOP ideal-int pkg syscall (darwin-amd64), const TIOCSWINSZ ideal-int pkg syscall (darwin-amd64), const TIOCTIMESTAMP ideal-int pkg syscall (darwin-amd64), const TIOCUCNTL ideal-int pkg syscall (darwin-amd64), const WCONTINUED ideal-int pkg syscall (darwin-amd64), const WCOREFLAG ideal-int pkg syscall (darwin-amd64), const WEXITED ideal-int pkg syscall (darwin-amd64), const WNOHANG ideal-int pkg syscall (darwin-amd64), const WNOWAIT ideal-int pkg syscall (darwin-amd64), const WORDSIZE ideal-int pkg syscall (darwin-amd64), const WSTOPPED ideal-int pkg syscall (darwin-amd64), const WUNTRACED ideal-int pkg syscall (darwin-amd64), func Accept(int) (int, Sockaddr, error) pkg syscall (darwin-amd64), func Access(string, uint32) error pkg syscall (darwin-amd64), func Adjtime(*Timeval, *Timeval) error pkg syscall (darwin-amd64), func Bind(int, Sockaddr) error pkg syscall (darwin-amd64), func BpfBuflen(int) (int, error) pkg syscall (darwin-amd64), func BpfDatalink(int) (int, error) pkg syscall (darwin-amd64), func BpfHeadercmpl(int) (int, error) pkg syscall (darwin-amd64), func BpfInterface(int, string) (string, error) pkg syscall (darwin-amd64), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (darwin-amd64), func BpfStats(int) (*BpfStat, error) pkg syscall (darwin-amd64), func BpfStmt(int, int) *BpfInsn pkg syscall (darwin-amd64), func BpfTimeout(int) (*Timeval, error) pkg syscall (darwin-amd64), func CheckBpfVersion(int) error pkg syscall (darwin-amd64), func Chflags(string, int) error pkg syscall (darwin-amd64), func Chroot(string) error pkg syscall (darwin-amd64), func Close(int) error pkg syscall (darwin-amd64), func CloseOnExec(int) pkg syscall (darwin-amd64), func CmsgLen(int) int pkg syscall (darwin-amd64), func CmsgSpace(int) int pkg syscall (darwin-amd64), func Connect(int, Sockaddr) error pkg syscall (darwin-amd64), func Dup(int) (int, error) pkg syscall (darwin-amd64), func Dup2(int, int) error pkg syscall (darwin-amd64), func Exchangedata(string, string, int) error pkg syscall (darwin-amd64), func Fchdir(int) error pkg syscall (darwin-amd64), func Fchflags(string, int) error pkg syscall (darwin-amd64), func Fchmod(int, uint32) error pkg syscall (darwin-amd64), func Fchown(int, int, int) error pkg syscall (darwin-amd64), func Flock(int, int) error pkg syscall (darwin-amd64), func FlushBpf(int) error pkg syscall (darwin-amd64), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (darwin-amd64), func Fpathconf(int, int) (int, error) pkg syscall (darwin-amd64), func Fstat(int, *Stat_t) error pkg syscall (darwin-amd64), func Fstatfs(int, *Statfs_t) error pkg syscall (darwin-amd64), func Fsync(int) error pkg syscall (darwin-amd64), func Ftruncate(int, int64) error pkg syscall (darwin-amd64), func Futimes(int, []Timeval) error pkg syscall (darwin-amd64), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (darwin-amd64), func Getdtablesize() int pkg syscall (darwin-amd64), func Getfsstat([]Statfs_t, int) (int, error) pkg syscall (darwin-amd64), func Getpeername(int) (Sockaddr, error) pkg syscall (darwin-amd64), func Getpgid(int) (int, error) pkg syscall (darwin-amd64), func Getpgrp() int pkg syscall (darwin-amd64), func Getpriority(int, int) (int, error) pkg syscall (darwin-amd64), func Getrlimit(int, *Rlimit) error pkg syscall (darwin-amd64), func Getrusage(int, *Rusage) error pkg syscall (darwin-amd64), func Getsid(int) (int, error) pkg syscall (darwin-amd64), func Getsockname(int) (Sockaddr, error) pkg syscall (darwin-amd64), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (darwin-amd64), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (darwin-amd64), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (darwin-amd64), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (darwin-amd64), func GetsockoptInt(int, int, int) (int, error) pkg syscall (darwin-amd64), func Issetugid() bool pkg syscall (darwin-amd64), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (darwin-amd64), func Kill(int, Signal) error pkg syscall (darwin-amd64), func Kqueue() (int, error) pkg syscall (darwin-amd64), func Listen(int, int) error pkg syscall (darwin-amd64), func Lstat(string, *Stat_t) error pkg syscall (darwin-amd64), func Mkfifo(string, uint32) error pkg syscall (darwin-amd64), func Mknod(string, uint32, int) error pkg syscall (darwin-amd64), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (darwin-amd64), func Munmap([]uint8) error pkg syscall (darwin-amd64), func NsecToTimespec(int64) Timespec pkg syscall (darwin-amd64), func Open(string, int, uint32) (int, error) pkg syscall (darwin-amd64), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (darwin-amd64), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (darwin-amd64), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (darwin-amd64), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (darwin-amd64), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (darwin-amd64), func Pathconf(string, int) (int, error) pkg syscall (darwin-amd64), func Pipe([]int) error pkg syscall (darwin-amd64), func Pread(int, []uint8, int64) (int, error) pkg syscall (darwin-amd64), func PtraceAttach(int) error pkg syscall (darwin-amd64), func PtraceDetach(int) error pkg syscall (darwin-amd64), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (darwin-amd64), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-amd64), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-amd64), func Read(int, []uint8) (int, error) pkg syscall (darwin-amd64), func ReadDirent(int, []uint8) (int, error) pkg syscall (darwin-amd64), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (darwin-amd64), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (darwin-amd64), func Revoke(string) error pkg syscall (darwin-amd64), func RouteRIB(int, int) ([]uint8, error) pkg syscall (darwin-amd64), func Seek(int, int64, int) (int64, error) pkg syscall (darwin-amd64), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (darwin-amd64), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (darwin-amd64), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (darwin-amd64), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (darwin-amd64), func SetBpf(int, []BpfInsn) error pkg syscall (darwin-amd64), func SetBpfBuflen(int, int) (int, error) pkg syscall (darwin-amd64), func SetBpfDatalink(int, int) (int, error) pkg syscall (darwin-amd64), func SetBpfHeadercmpl(int, int) error pkg syscall (darwin-amd64), func SetBpfImmediate(int, int) error pkg syscall (darwin-amd64), func SetBpfInterface(int, string) error pkg syscall (darwin-amd64), func SetBpfPromisc(int, int) error pkg syscall (darwin-amd64), func SetBpfTimeout(int, *Timeval) error pkg syscall (darwin-amd64), func SetKevent(*Kevent_t, int, int, int) pkg syscall (darwin-amd64), func SetNonblock(int, bool) error pkg syscall (darwin-amd64), func Setegid(int) error pkg syscall (darwin-amd64), func Seteuid(int) error pkg syscall (darwin-amd64), func Setgid(int) error pkg syscall (darwin-amd64), func Setgroups([]int) error pkg syscall (darwin-amd64), func Setlogin(string) error pkg syscall (darwin-amd64), func Setpgid(int, int) error pkg syscall (darwin-amd64), func Setpriority(int, int, int) error pkg syscall (darwin-amd64), func Setprivexec(int) error pkg syscall (darwin-amd64), func Setregid(int, int) error pkg syscall (darwin-amd64), func Setreuid(int, int) error pkg syscall (darwin-amd64), func Setrlimit(int, *Rlimit) error pkg syscall (darwin-amd64), func Setsid() (int, error) pkg syscall (darwin-amd64), func SetsockoptByte(int, int, int, uint8) error pkg syscall (darwin-amd64), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (darwin-amd64), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (darwin-amd64), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (darwin-amd64), func SetsockoptInt(int, int, int, int) error pkg syscall (darwin-amd64), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (darwin-amd64), func SetsockoptString(int, int, int, string) error pkg syscall (darwin-amd64), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (darwin-amd64), func Settimeofday(*Timeval) error pkg syscall (darwin-amd64), func Setuid(int) error pkg syscall (darwin-amd64), func Shutdown(int, int) error pkg syscall (darwin-amd64), func Socket(int, int, int) (int, error) pkg syscall (darwin-amd64), func Socketpair(int, int, int) ([2]int, error) pkg syscall (darwin-amd64), func Stat(string, *Stat_t) error pkg syscall (darwin-amd64), func Statfs(string, *Statfs_t) error pkg syscall (darwin-amd64), func StringSlicePtr([]string) []*uint8 pkg syscall (darwin-amd64), func Sync() error pkg syscall (darwin-amd64), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-amd64), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-amd64), func Sysctl(string) (string, error) pkg syscall (darwin-amd64), func SysctlUint32(string) (uint32, error) pkg syscall (darwin-amd64), func TimespecToNsec(Timespec) int64 pkg syscall (darwin-amd64), func TimevalToNsec(Timeval) int64 pkg syscall (darwin-amd64), func Truncate(string, int64) error pkg syscall (darwin-amd64), func Umask(int) int pkg syscall (darwin-amd64), func Undelete(string) error pkg syscall (darwin-amd64), func UnixRights(...int) []uint8 pkg syscall (darwin-amd64), func Unmount(string, int) error pkg syscall (darwin-amd64), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (darwin-amd64), func Write(int, []uint8) (int, error) pkg syscall (darwin-amd64), method (*Cmsghdr) SetLen(int) pkg syscall (darwin-amd64), method (*Iovec) SetLen(int) pkg syscall (darwin-amd64), method (*Msghdr) SetControllen(int) pkg syscall (darwin-amd64), type BpfHdr struct pkg syscall (darwin-amd64), type BpfHdr struct, Caplen uint32 pkg syscall (darwin-amd64), type BpfHdr struct, Datalen uint32 pkg syscall (darwin-amd64), type BpfHdr struct, Hdrlen uint16 pkg syscall (darwin-amd64), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-amd64), type BpfHdr struct, Tstamp Timeval32 pkg syscall (darwin-amd64), type BpfInsn struct pkg syscall (darwin-amd64), type BpfInsn struct, Code uint16 pkg syscall (darwin-amd64), type BpfInsn struct, Jf uint8 pkg syscall (darwin-amd64), type BpfInsn struct, Jt uint8 pkg syscall (darwin-amd64), type BpfInsn struct, K uint32 pkg syscall (darwin-amd64), type BpfProgram struct pkg syscall (darwin-amd64), type BpfProgram struct, Insns *BpfInsn pkg syscall (darwin-amd64), type BpfProgram struct, Len uint32 pkg syscall (darwin-amd64), type BpfProgram struct, Pad_cgo_0 [4]uint8 pkg syscall (darwin-amd64), type BpfStat struct pkg syscall (darwin-amd64), type BpfStat struct, Drop uint32 pkg syscall (darwin-amd64), type BpfStat struct, Recv uint32 pkg syscall (darwin-amd64), type BpfVersion struct pkg syscall (darwin-amd64), type BpfVersion struct, Major uint16 pkg syscall (darwin-amd64), type BpfVersion struct, Minor uint16 pkg syscall (darwin-amd64), type Cmsghdr struct pkg syscall (darwin-amd64), type Cmsghdr struct, Len uint32 pkg syscall (darwin-amd64), type Cmsghdr struct, Level int32 pkg syscall (darwin-amd64), type Cmsghdr struct, Type int32 pkg syscall (darwin-amd64), type Credential struct pkg syscall (darwin-amd64), type Credential struct, Gid uint32 pkg syscall (darwin-amd64), type Credential struct, Groups []uint32 pkg syscall (darwin-amd64), type Credential struct, Uid uint32 pkg syscall (darwin-amd64), type Dirent struct pkg syscall (darwin-amd64), type Dirent struct, Ino uint64 pkg syscall (darwin-amd64), type Dirent struct, Name [1024]int8 pkg syscall (darwin-amd64), type Dirent struct, Namlen uint16 pkg syscall (darwin-amd64), type Dirent struct, Pad_cgo_0 [3]uint8 pkg syscall (darwin-amd64), type Dirent struct, Reclen uint16 pkg syscall (darwin-amd64), type Dirent struct, Seekoff uint64 pkg syscall (darwin-amd64), type Dirent struct, Type uint8 pkg syscall (darwin-amd64), type Fbootstraptransfer_t struct pkg syscall (darwin-amd64), type Fbootstraptransfer_t struct, Buffer *uint8 pkg syscall (darwin-amd64), type Fbootstraptransfer_t struct, Length uint64 pkg syscall (darwin-amd64), type Fbootstraptransfer_t struct, Offset int64 pkg syscall (darwin-amd64), type FdSet struct pkg syscall (darwin-amd64), type FdSet struct, Bits [32]int32 pkg syscall (darwin-amd64), type Flock_t struct pkg syscall (darwin-amd64), type Flock_t struct, Len int64 pkg syscall (darwin-amd64), type Flock_t struct, Pid int32 pkg syscall (darwin-amd64), type Flock_t struct, Start int64 pkg syscall (darwin-amd64), type Flock_t struct, Type int16 pkg syscall (darwin-amd64), type Flock_t struct, Whence int16 pkg syscall (darwin-amd64), type Fsid struct pkg syscall (darwin-amd64), type Fsid struct, Val [2]int32 pkg syscall (darwin-amd64), type Fstore_t struct pkg syscall (darwin-amd64), type Fstore_t struct, Bytesalloc int64 pkg syscall (darwin-amd64), type Fstore_t struct, Flags uint32 pkg syscall (darwin-amd64), type Fstore_t struct, Length int64 pkg syscall (darwin-amd64), type Fstore_t struct, Offset int64 pkg syscall (darwin-amd64), type Fstore_t struct, Posmode int32 pkg syscall (darwin-amd64), type IfData struct pkg syscall (darwin-amd64), type IfData struct, Addrlen uint8 pkg syscall (darwin-amd64), type IfData struct, Baudrate uint32 pkg syscall (darwin-amd64), type IfData struct, Collisions uint32 pkg syscall (darwin-amd64), type IfData struct, Hdrlen uint8 pkg syscall (darwin-amd64), type IfData struct, Hwassist uint32 pkg syscall (darwin-amd64), type IfData struct, Ibytes uint32 pkg syscall (darwin-amd64), type IfData struct, Ierrors uint32 pkg syscall (darwin-amd64), type IfData struct, Imcasts uint32 pkg syscall (darwin-amd64), type IfData struct, Ipackets uint32 pkg syscall (darwin-amd64), type IfData struct, Iqdrops uint32 pkg syscall (darwin-amd64), type IfData struct, Lastchange Timeval32 pkg syscall (darwin-amd64), type IfData struct, Metric uint32 pkg syscall (darwin-amd64), type IfData struct, Mtu uint32 pkg syscall (darwin-amd64), type IfData struct, Noproto uint32 pkg syscall (darwin-amd64), type IfData struct, Obytes uint32 pkg syscall (darwin-amd64), type IfData struct, Oerrors uint32 pkg syscall (darwin-amd64), type IfData struct, Omcasts uint32 pkg syscall (darwin-amd64), type IfData struct, Opackets uint32 pkg syscall (darwin-amd64), type IfData struct, Physical uint8 pkg syscall (darwin-amd64), type IfData struct, Recvquota uint8 pkg syscall (darwin-amd64), type IfData struct, Recvtiming uint32 pkg syscall (darwin-amd64), type IfData struct, Reserved1 uint32 pkg syscall (darwin-amd64), type IfData struct, Reserved2 uint32 pkg syscall (darwin-amd64), type IfData struct, Type uint8 pkg syscall (darwin-amd64), type IfData struct, Typelen uint8 pkg syscall (darwin-amd64), type IfData struct, Unused1 uint8 pkg syscall (darwin-amd64), type IfData struct, Unused2 uint32 pkg syscall (darwin-amd64), type IfData struct, Xmitquota uint8 pkg syscall (darwin-amd64), type IfData struct, Xmittiming uint32 pkg syscall (darwin-amd64), type IfMsghdr struct pkg syscall (darwin-amd64), type IfMsghdr struct, Addrs int32 pkg syscall (darwin-amd64), type IfMsghdr struct, Data IfData pkg syscall (darwin-amd64), type IfMsghdr struct, Flags int32 pkg syscall (darwin-amd64), type IfMsghdr struct, Index uint16 pkg syscall (darwin-amd64), type IfMsghdr struct, Msglen uint16 pkg syscall (darwin-amd64), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-amd64), type IfMsghdr struct, Type uint8 pkg syscall (darwin-amd64), type IfMsghdr struct, Version uint8 pkg syscall (darwin-amd64), type IfaMsghdr struct pkg syscall (darwin-amd64), type IfaMsghdr struct, Addrs int32 pkg syscall (darwin-amd64), type IfaMsghdr struct, Flags int32 pkg syscall (darwin-amd64), type IfaMsghdr struct, Index uint16 pkg syscall (darwin-amd64), type IfaMsghdr struct, Metric int32 pkg syscall (darwin-amd64), type IfaMsghdr struct, Msglen uint16 pkg syscall (darwin-amd64), type IfaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-amd64), type IfaMsghdr struct, Type uint8 pkg syscall (darwin-amd64), type IfaMsghdr struct, Version uint8 pkg syscall (darwin-amd64), type IfmaMsghdr struct pkg syscall (darwin-amd64), type IfmaMsghdr struct, Addrs int32 pkg syscall (darwin-amd64), type IfmaMsghdr struct, Flags int32 pkg syscall (darwin-amd64), type IfmaMsghdr struct, Index uint16 pkg syscall (darwin-amd64), type IfmaMsghdr struct, Msglen uint16 pkg syscall (darwin-amd64), type IfmaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-amd64), type IfmaMsghdr struct, Type uint8 pkg syscall (darwin-amd64), type IfmaMsghdr struct, Version uint8 pkg syscall (darwin-amd64), type IfmaMsghdr2 struct pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Addrs int32 pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Flags int32 pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Index uint16 pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Msglen uint16 pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Refcount int32 pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Type uint8 pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Version uint8 pkg syscall (darwin-amd64), type Inet6Pktinfo struct pkg syscall (darwin-amd64), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (darwin-amd64), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (darwin-amd64), type InterfaceAddrMessage struct pkg syscall (darwin-amd64), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (darwin-amd64), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (darwin-amd64), type InterfaceMessage struct pkg syscall (darwin-amd64), type InterfaceMessage struct, Data []uint8 pkg syscall (darwin-amd64), type InterfaceMessage struct, Header IfMsghdr pkg syscall (darwin-amd64), type InterfaceMulticastAddrMessage struct pkg syscall (darwin-amd64), type InterfaceMulticastAddrMessage struct, Data []uint8 pkg syscall (darwin-amd64), type InterfaceMulticastAddrMessage struct, Header IfmaMsghdr2 pkg syscall (darwin-amd64), type Iovec struct pkg syscall (darwin-amd64), type Iovec struct, Base *uint8 pkg syscall (darwin-amd64), type Iovec struct, Len uint64 pkg syscall (darwin-amd64), type Kevent_t struct pkg syscall (darwin-amd64), type Kevent_t struct, Data int64 pkg syscall (darwin-amd64), type Kevent_t struct, Fflags uint32 pkg syscall (darwin-amd64), type Kevent_t struct, Filter int16 pkg syscall (darwin-amd64), type Kevent_t struct, Flags uint16 pkg syscall (darwin-amd64), type Kevent_t struct, Ident uint64 pkg syscall (darwin-amd64), type Kevent_t struct, Udata *uint8 pkg syscall (darwin-amd64), type Log2phys_t struct pkg syscall (darwin-amd64), type Log2phys_t struct, Contigbytes int64 pkg syscall (darwin-amd64), type Log2phys_t struct, Devoffset int64 pkg syscall (darwin-amd64), type Log2phys_t struct, Flags uint32 pkg syscall (darwin-amd64), type Msghdr struct pkg syscall (darwin-amd64), type Msghdr struct, Control *uint8 pkg syscall (darwin-amd64), type Msghdr struct, Controllen uint32 pkg syscall (darwin-amd64), type Msghdr struct, Flags int32 pkg syscall (darwin-amd64), type Msghdr struct, Iov *Iovec pkg syscall (darwin-amd64), type Msghdr struct, Iovlen int32 pkg syscall (darwin-amd64), type Msghdr struct, Name *uint8 pkg syscall (darwin-amd64), type Msghdr struct, Namelen uint32 pkg syscall (darwin-amd64), type Msghdr struct, Pad_cgo_0 [4]uint8 pkg syscall (darwin-amd64), type Msghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (darwin-amd64), type Radvisory_t struct pkg syscall (darwin-amd64), type Radvisory_t struct, Count int32 pkg syscall (darwin-amd64), type Radvisory_t struct, Offset int64 pkg syscall (darwin-amd64), type Radvisory_t struct, Pad_cgo_0 [4]uint8 pkg syscall (darwin-amd64), type RawSockaddr struct, Data [14]int8 pkg syscall (darwin-amd64), type RawSockaddr struct, Family uint8 pkg syscall (darwin-amd64), type RawSockaddr struct, Len uint8 pkg syscall (darwin-amd64), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (darwin-amd64), type RawSockaddrDatalink struct pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Data [12]int8 pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Family uint8 pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Index uint16 pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Len uint8 pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Type uint8 pkg syscall (darwin-amd64), type RawSockaddrInet4 struct, Family uint8 pkg syscall (darwin-amd64), type RawSockaddrInet4 struct, Len uint8 pkg syscall (darwin-amd64), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (darwin-amd64), type RawSockaddrInet6 struct pkg syscall (darwin-amd64), type RawSockaddrInet6 struct, Addr [16]uint8 pkg syscall (darwin-amd64), type RawSockaddrInet6 struct, Family uint8 pkg syscall (darwin-amd64), type RawSockaddrInet6 struct, Flowinfo uint32 pkg syscall (darwin-amd64), type RawSockaddrInet6 struct, Len uint8 pkg syscall (darwin-amd64), type RawSockaddrInet6 struct, Port uint16 pkg syscall (darwin-amd64), type RawSockaddrInet6 struct, Scope_id uint32 pkg syscall (darwin-amd64), type RawSockaddrUnix struct pkg syscall (darwin-amd64), type RawSockaddrUnix struct, Family uint8 pkg syscall (darwin-amd64), type RawSockaddrUnix struct, Len uint8 pkg syscall (darwin-amd64), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (darwin-amd64), type Rlimit struct pkg syscall (darwin-amd64), type Rlimit struct, Cur uint64 pkg syscall (darwin-amd64), type Rlimit struct, Max uint64 pkg syscall (darwin-amd64), type RouteMessage struct pkg syscall (darwin-amd64), type RouteMessage struct, Data []uint8 pkg syscall (darwin-amd64), type RouteMessage struct, Header RtMsghdr pkg syscall (darwin-amd64), type RoutingMessage interface, unexported methods pkg syscall (darwin-amd64), type RtMetrics struct pkg syscall (darwin-amd64), type RtMetrics struct, Expire int32 pkg syscall (darwin-amd64), type RtMetrics struct, Filler [4]uint32 pkg syscall (darwin-amd64), type RtMetrics struct, Hopcount uint32 pkg syscall (darwin-amd64), type RtMetrics struct, Locks uint32 pkg syscall (darwin-amd64), type RtMetrics struct, Mtu uint32 pkg syscall (darwin-amd64), type RtMetrics struct, Pksent uint32 pkg syscall (darwin-amd64), type RtMetrics struct, Recvpipe uint32 pkg syscall (darwin-amd64), type RtMetrics struct, Rtt uint32 pkg syscall (darwin-amd64), type RtMetrics struct, Rttvar uint32 pkg syscall (darwin-amd64), type RtMetrics struct, Sendpipe uint32 pkg syscall (darwin-amd64), type RtMetrics struct, Ssthresh uint32 pkg syscall (darwin-amd64), type RtMsghdr struct pkg syscall (darwin-amd64), type RtMsghdr struct, Addrs int32 pkg syscall (darwin-amd64), type RtMsghdr struct, Errno int32 pkg syscall (darwin-amd64), type RtMsghdr struct, Flags int32 pkg syscall (darwin-amd64), type RtMsghdr struct, Index uint16 pkg syscall (darwin-amd64), type RtMsghdr struct, Inits uint32 pkg syscall (darwin-amd64), type RtMsghdr struct, Msglen uint16 pkg syscall (darwin-amd64), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-amd64), type RtMsghdr struct, Pid int32 pkg syscall (darwin-amd64), type RtMsghdr struct, Rmx RtMetrics pkg syscall (darwin-amd64), type RtMsghdr struct, Seq int32 pkg syscall (darwin-amd64), type RtMsghdr struct, Type uint8 pkg syscall (darwin-amd64), type RtMsghdr struct, Use int32 pkg syscall (darwin-amd64), type RtMsghdr struct, Version uint8 pkg syscall (darwin-amd64), type Rusage struct, Idrss int64 pkg syscall (darwin-amd64), type Rusage struct, Inblock int64 pkg syscall (darwin-amd64), type Rusage struct, Isrss int64 pkg syscall (darwin-amd64), type Rusage struct, Ixrss int64 pkg syscall (darwin-amd64), type Rusage struct, Majflt int64 pkg syscall (darwin-amd64), type Rusage struct, Maxrss int64 pkg syscall (darwin-amd64), type Rusage struct, Minflt int64 pkg syscall (darwin-amd64), type Rusage struct, Msgrcv int64 pkg syscall (darwin-amd64), type Rusage struct, Msgsnd int64 pkg syscall (darwin-amd64), type Rusage struct, Nivcsw int64 pkg syscall (darwin-amd64), type Rusage struct, Nsignals int64 pkg syscall (darwin-amd64), type Rusage struct, Nswap int64 pkg syscall (darwin-amd64), type Rusage struct, Nvcsw int64 pkg syscall (darwin-amd64), type Rusage struct, Oublock int64 pkg syscall (darwin-amd64), type Rusage struct, Stime Timeval pkg syscall (darwin-amd64), type Rusage struct, Utime Timeval pkg syscall (darwin-amd64), type SockaddrDatalink struct pkg syscall (darwin-amd64), type SockaddrDatalink struct, Alen uint8 pkg syscall (darwin-amd64), type SockaddrDatalink struct, Data [12]int8 pkg syscall (darwin-amd64), type SockaddrDatalink struct, Family uint8 pkg syscall (darwin-amd64), type SockaddrDatalink struct, Index uint16 pkg syscall (darwin-amd64), type SockaddrDatalink struct, Len uint8 pkg syscall (darwin-amd64), type SockaddrDatalink struct, Nlen uint8 pkg syscall (darwin-amd64), type SockaddrDatalink struct, Slen uint8 pkg syscall (darwin-amd64), type SockaddrDatalink struct, Type uint8 pkg syscall (darwin-amd64), type SocketControlMessage struct pkg syscall (darwin-amd64), type SocketControlMessage struct, Data []uint8 pkg syscall (darwin-amd64), type SocketControlMessage struct, Header Cmsghdr pkg syscall (darwin-amd64), type Stat_t struct pkg syscall (darwin-amd64), type Stat_t struct, Atimespec Timespec pkg syscall (darwin-amd64), type Stat_t struct, Birthtimespec Timespec pkg syscall (darwin-amd64), type Stat_t struct, Blksize int32 pkg syscall (darwin-amd64), type Stat_t struct, Blocks int64 pkg syscall (darwin-amd64), type Stat_t struct, Ctimespec Timespec pkg syscall (darwin-amd64), type Stat_t struct, Dev int32 pkg syscall (darwin-amd64), type Stat_t struct, Flags uint32 pkg syscall (darwin-amd64), type Stat_t struct, Gen uint32 pkg syscall (darwin-amd64), type Stat_t struct, Gid uint32 pkg syscall (darwin-amd64), type Stat_t struct, Ino uint64 pkg syscall (darwin-amd64), type Stat_t struct, Lspare int32 pkg syscall (darwin-amd64), type Stat_t struct, Mode uint16 pkg syscall (darwin-amd64), type Stat_t struct, Mtimespec Timespec pkg syscall (darwin-amd64), type Stat_t struct, Nlink uint16 pkg syscall (darwin-amd64), type Stat_t struct, Pad_cgo_0 [4]uint8 pkg syscall (darwin-amd64), type Stat_t struct, Qspare [2]int64 pkg syscall (darwin-amd64), type Stat_t struct, Rdev int32 pkg syscall (darwin-amd64), type Stat_t struct, Size int64 pkg syscall (darwin-amd64), type Stat_t struct, Uid uint32 pkg syscall (darwin-amd64), type Statfs_t struct pkg syscall (darwin-amd64), type Statfs_t struct, Bavail uint64 pkg syscall (darwin-amd64), type Statfs_t struct, Bfree uint64 pkg syscall (darwin-amd64), type Statfs_t struct, Blocks uint64 pkg syscall (darwin-amd64), type Statfs_t struct, Bsize uint32 pkg syscall (darwin-amd64), type Statfs_t struct, Ffree uint64 pkg syscall (darwin-amd64), type Statfs_t struct, Files uint64 pkg syscall (darwin-amd64), type Statfs_t struct, Flags uint32 pkg syscall (darwin-amd64), type Statfs_t struct, Fsid Fsid pkg syscall (darwin-amd64), type Statfs_t struct, Fssubtype uint32 pkg syscall (darwin-amd64), type Statfs_t struct, Fstypename [16]int8 pkg syscall (darwin-amd64), type Statfs_t struct, Iosize int32 pkg syscall (darwin-amd64), type Statfs_t struct, Mntfromname [1024]int8 pkg syscall (darwin-amd64), type Statfs_t struct, Mntonname [1024]int8 pkg syscall (darwin-amd64), type Statfs_t struct, Owner uint32 pkg syscall (darwin-amd64), type Statfs_t struct, Reserved [8]uint32 pkg syscall (darwin-amd64), type Statfs_t struct, Type uint32 pkg syscall (darwin-amd64), type SysProcAttr struct, Chroot string pkg syscall (darwin-amd64), type SysProcAttr struct, Credential *Credential pkg syscall (darwin-amd64), type SysProcAttr struct, Noctty bool pkg syscall (darwin-amd64), type SysProcAttr struct, Ptrace bool pkg syscall (darwin-amd64), type SysProcAttr struct, Setctty bool pkg syscall (darwin-amd64), type SysProcAttr struct, Setpgid bool pkg syscall (darwin-amd64), type SysProcAttr struct, Setsid bool pkg syscall (darwin-amd64), type Timespec struct, Nsec int64 pkg syscall (darwin-amd64), type Timespec struct, Sec int64 pkg syscall (darwin-amd64), type Timeval struct, Pad_cgo_0 [4]uint8 pkg syscall (darwin-amd64), type Timeval struct, Sec int64 pkg syscall (darwin-amd64), type Timeval struct, Usec int32 pkg syscall (darwin-amd64), type Timeval32 struct pkg syscall (darwin-amd64), type Timeval32 struct, Sec int32 pkg syscall (darwin-amd64), type Timeval32 struct, Usec int32 pkg syscall (darwin-amd64), type WaitStatus uint32 pkg syscall (darwin-amd64), var Stderr int pkg syscall (darwin-amd64), var Stdin int pkg syscall (darwin-amd64), var Stdout int pkg syscall (darwin-amd64-cgo), const AF_APPLETALK ideal-int pkg syscall (darwin-amd64-cgo), const AF_CCITT ideal-int pkg syscall (darwin-amd64-cgo), const AF_CHAOS ideal-int pkg syscall (darwin-amd64-cgo), const AF_CNT ideal-int pkg syscall (darwin-amd64-cgo), const AF_COIP ideal-int pkg syscall (darwin-amd64-cgo), const AF_DATAKIT ideal-int pkg syscall (darwin-amd64-cgo), const AF_DECnet ideal-int pkg syscall (darwin-amd64-cgo), const AF_DLI ideal-int pkg syscall (darwin-amd64-cgo), const AF_E164 ideal-int pkg syscall (darwin-amd64-cgo), const AF_ECMA ideal-int pkg syscall (darwin-amd64-cgo), const AF_HYLINK ideal-int pkg syscall (darwin-amd64-cgo), const AF_IEEE80211 ideal-int pkg syscall (darwin-amd64-cgo), const AF_IMPLINK ideal-int pkg syscall (darwin-amd64-cgo), const AF_IPX ideal-int pkg syscall (darwin-amd64-cgo), const AF_ISDN ideal-int pkg syscall (darwin-amd64-cgo), const AF_ISO ideal-int pkg syscall (darwin-amd64-cgo), const AF_LAT ideal-int pkg syscall (darwin-amd64-cgo), const AF_LINK ideal-int pkg syscall (darwin-amd64-cgo), const AF_LOCAL ideal-int pkg syscall (darwin-amd64-cgo), const AF_MAX ideal-int pkg syscall (darwin-amd64-cgo), const AF_NATM ideal-int pkg syscall (darwin-amd64-cgo), const AF_NDRV ideal-int pkg syscall (darwin-amd64-cgo), const AF_NETBIOS ideal-int pkg syscall (darwin-amd64-cgo), const AF_NS ideal-int pkg syscall (darwin-amd64-cgo), const AF_OSI ideal-int pkg syscall (darwin-amd64-cgo), const AF_PPP ideal-int pkg syscall (darwin-amd64-cgo), const AF_PUP ideal-int pkg syscall (darwin-amd64-cgo), const AF_RESERVED_36 ideal-int pkg syscall (darwin-amd64-cgo), const AF_ROUTE ideal-int pkg syscall (darwin-amd64-cgo), const AF_SIP ideal-int pkg syscall (darwin-amd64-cgo), const AF_SNA ideal-int pkg syscall (darwin-amd64-cgo), const AF_SYSTEM ideal-int pkg syscall (darwin-amd64-cgo), const BIOCFLUSH ideal-int pkg syscall (darwin-amd64-cgo), const BIOCGBLEN ideal-int pkg syscall (darwin-amd64-cgo), const BIOCGDLT ideal-int pkg syscall (darwin-amd64-cgo), const BIOCGDLTLIST ideal-int pkg syscall (darwin-amd64-cgo), const BIOCGETIF ideal-int pkg syscall (darwin-amd64-cgo), const BIOCGHDRCMPLT ideal-int pkg syscall (darwin-amd64-cgo), const BIOCGRSIG ideal-int pkg syscall (darwin-amd64-cgo), const BIOCGRTIMEOUT ideal-int pkg syscall (darwin-amd64-cgo), const BIOCGSEESENT ideal-int pkg syscall (darwin-amd64-cgo), const BIOCGSTATS ideal-int pkg syscall (darwin-amd64-cgo), const BIOCIMMEDIATE ideal-int pkg syscall (darwin-amd64-cgo), const BIOCPROMISC ideal-int pkg syscall (darwin-amd64-cgo), const BIOCSBLEN ideal-int pkg syscall (darwin-amd64-cgo), const BIOCSDLT ideal-int pkg syscall (darwin-amd64-cgo), const BIOCSETF ideal-int pkg syscall (darwin-amd64-cgo), const BIOCSETIF ideal-int pkg syscall (darwin-amd64-cgo), const BIOCSHDRCMPLT ideal-int pkg syscall (darwin-amd64-cgo), const BIOCSRSIG ideal-int pkg syscall (darwin-amd64-cgo), const BIOCSRTIMEOUT ideal-int pkg syscall (darwin-amd64-cgo), const BIOCSSEESENT ideal-int pkg syscall (darwin-amd64-cgo), const BIOCVERSION ideal-int pkg syscall (darwin-amd64-cgo), const BPF_A ideal-int pkg syscall (darwin-amd64-cgo), const BPF_ABS ideal-int pkg syscall (darwin-amd64-cgo), const BPF_ADD ideal-int pkg syscall (darwin-amd64-cgo), const BPF_ALIGNMENT ideal-int pkg syscall (darwin-amd64-cgo), const BPF_ALU ideal-int pkg syscall (darwin-amd64-cgo), const BPF_AND ideal-int pkg syscall (darwin-amd64-cgo), const BPF_B ideal-int pkg syscall (darwin-amd64-cgo), const BPF_DIV ideal-int pkg syscall (darwin-amd64-cgo), const BPF_H ideal-int pkg syscall (darwin-amd64-cgo), const BPF_IMM ideal-int pkg syscall (darwin-amd64-cgo), const BPF_IND ideal-int pkg syscall (darwin-amd64-cgo), const BPF_JA ideal-int pkg syscall (darwin-amd64-cgo), const BPF_JEQ ideal-int pkg syscall (darwin-amd64-cgo), const BPF_JGE ideal-int pkg syscall (darwin-amd64-cgo), const BPF_JGT ideal-int pkg syscall (darwin-amd64-cgo), const BPF_JMP ideal-int pkg syscall (darwin-amd64-cgo), const BPF_JSET ideal-int pkg syscall (darwin-amd64-cgo), const BPF_K ideal-int pkg syscall (darwin-amd64-cgo), const BPF_LD ideal-int pkg syscall (darwin-amd64-cgo), const BPF_LDX ideal-int pkg syscall (darwin-amd64-cgo), const BPF_LEN ideal-int pkg syscall (darwin-amd64-cgo), const BPF_LSH ideal-int pkg syscall (darwin-amd64-cgo), const BPF_MAJOR_VERSION ideal-int pkg syscall (darwin-amd64-cgo), const BPF_MAXBUFSIZE ideal-int pkg syscall (darwin-amd64-cgo), const BPF_MAXINSNS ideal-int pkg syscall (darwin-amd64-cgo), const BPF_MEM ideal-int pkg syscall (darwin-amd64-cgo), const BPF_MEMWORDS ideal-int pkg syscall (darwin-amd64-cgo), const BPF_MINBUFSIZE ideal-int pkg syscall (darwin-amd64-cgo), const BPF_MINOR_VERSION ideal-int pkg syscall (darwin-amd64-cgo), const BPF_MISC ideal-int pkg syscall (darwin-amd64-cgo), const BPF_MSH ideal-int pkg syscall (darwin-amd64-cgo), const BPF_MUL ideal-int pkg syscall (darwin-amd64-cgo), const BPF_NEG ideal-int pkg syscall (darwin-amd64-cgo), const BPF_OR ideal-int pkg syscall (darwin-amd64-cgo), const BPF_RELEASE ideal-int pkg syscall (darwin-amd64-cgo), const BPF_RET ideal-int pkg syscall (darwin-amd64-cgo), const BPF_RSH ideal-int pkg syscall (darwin-amd64-cgo), const BPF_ST ideal-int pkg syscall (darwin-amd64-cgo), const BPF_STX ideal-int pkg syscall (darwin-amd64-cgo), const BPF_SUB ideal-int pkg syscall (darwin-amd64-cgo), const BPF_TAX ideal-int pkg syscall (darwin-amd64-cgo), const BPF_TXA ideal-int pkg syscall (darwin-amd64-cgo), const BPF_W ideal-int pkg syscall (darwin-amd64-cgo), const BPF_X ideal-int pkg syscall (darwin-amd64-cgo), const CTL_MAXNAME ideal-int pkg syscall (darwin-amd64-cgo), const CTL_NET ideal-int pkg syscall (darwin-amd64-cgo), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (darwin-amd64-cgo), const DLT_ARCNET ideal-int pkg syscall (darwin-amd64-cgo), const DLT_ATM_CLIP ideal-int pkg syscall (darwin-amd64-cgo), const DLT_ATM_RFC1483 ideal-int pkg syscall (darwin-amd64-cgo), const DLT_AX25 ideal-int pkg syscall (darwin-amd64-cgo), const DLT_CHAOS ideal-int pkg syscall (darwin-amd64-cgo), const DLT_CHDLC ideal-int pkg syscall (darwin-amd64-cgo), const DLT_C_HDLC ideal-int pkg syscall (darwin-amd64-cgo), const DLT_EN10MB ideal-int pkg syscall (darwin-amd64-cgo), const DLT_EN3MB ideal-int pkg syscall (darwin-amd64-cgo), const DLT_FDDI ideal-int pkg syscall (darwin-amd64-cgo), const DLT_IEEE802 ideal-int pkg syscall (darwin-amd64-cgo), const DLT_IEEE802_11 ideal-int pkg syscall (darwin-amd64-cgo), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (darwin-amd64-cgo), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (darwin-amd64-cgo), const DLT_LINUX_SLL ideal-int pkg syscall (darwin-amd64-cgo), const DLT_LOOP ideal-int pkg syscall (darwin-amd64-cgo), const DLT_NULL ideal-int pkg syscall (darwin-amd64-cgo), const DLT_PFLOG ideal-int pkg syscall (darwin-amd64-cgo), const DLT_PFSYNC ideal-int pkg syscall (darwin-amd64-cgo), const DLT_PPP ideal-int pkg syscall (darwin-amd64-cgo), const DLT_PPP_BSDOS ideal-int pkg syscall (darwin-amd64-cgo), const DLT_PPP_SERIAL ideal-int pkg syscall (darwin-amd64-cgo), const DLT_PRONET ideal-int pkg syscall (darwin-amd64-cgo), const DLT_RAW ideal-int pkg syscall (darwin-amd64-cgo), const DLT_SLIP ideal-int pkg syscall (darwin-amd64-cgo), const DLT_SLIP_BSDOS ideal-int pkg syscall (darwin-amd64-cgo), const DT_BLK ideal-int pkg syscall (darwin-amd64-cgo), const DT_CHR ideal-int pkg syscall (darwin-amd64-cgo), const DT_DIR ideal-int pkg syscall (darwin-amd64-cgo), const DT_FIFO ideal-int pkg syscall (darwin-amd64-cgo), const DT_LNK ideal-int pkg syscall (darwin-amd64-cgo), const DT_REG ideal-int pkg syscall (darwin-amd64-cgo), const DT_SOCK ideal-int pkg syscall (darwin-amd64-cgo), const DT_UNKNOWN ideal-int pkg syscall (darwin-amd64-cgo), const DT_WHT ideal-int pkg syscall (darwin-amd64-cgo), const EAUTH Errno pkg syscall (darwin-amd64-cgo), const EBADARCH Errno pkg syscall (darwin-amd64-cgo), const EBADEXEC Errno pkg syscall (darwin-amd64-cgo), const EBADMACHO Errno pkg syscall (darwin-amd64-cgo), const EBADMSG Errno pkg syscall (darwin-amd64-cgo), const EBADRPC Errno pkg syscall (darwin-amd64-cgo), const ECHO ideal-int pkg syscall (darwin-amd64-cgo), const ECHOCTL ideal-int pkg syscall (darwin-amd64-cgo), const ECHOE ideal-int pkg syscall (darwin-amd64-cgo), const ECHOK ideal-int pkg syscall (darwin-amd64-cgo), const ECHOKE ideal-int pkg syscall (darwin-amd64-cgo), const ECHONL ideal-int pkg syscall (darwin-amd64-cgo), const ECHOPRT ideal-int pkg syscall (darwin-amd64-cgo), const EDEVERR Errno pkg syscall (darwin-amd64-cgo), const EFTYPE Errno pkg syscall (darwin-amd64-cgo), const ELAST Errno pkg syscall (darwin-amd64-cgo), const EMULTIHOP Errno pkg syscall (darwin-amd64-cgo), const ENEEDAUTH Errno pkg syscall (darwin-amd64-cgo), const ENOATTR Errno pkg syscall (darwin-amd64-cgo), const ENODATA Errno pkg syscall (darwin-amd64-cgo), const ENOLINK Errno pkg syscall (darwin-amd64-cgo), const ENOPOLICY Errno pkg syscall (darwin-amd64-cgo), const ENOSR Errno pkg syscall (darwin-amd64-cgo), const ENOSTR Errno pkg syscall (darwin-amd64-cgo), const ENOTRECOVERABLE Errno pkg syscall (darwin-amd64-cgo), const EOWNERDEAD Errno pkg syscall (darwin-amd64-cgo), const EPROCLIM Errno pkg syscall (darwin-amd64-cgo), const EPROCUNAVAIL Errno pkg syscall (darwin-amd64-cgo), const EPROGMISMATCH Errno pkg syscall (darwin-amd64-cgo), const EPROGUNAVAIL Errno pkg syscall (darwin-amd64-cgo), const EPROTO Errno pkg syscall (darwin-amd64-cgo), const EPWROFF Errno pkg syscall (darwin-amd64-cgo), const ERPCMISMATCH Errno pkg syscall (darwin-amd64-cgo), const ESHLIBVERS Errno pkg syscall (darwin-amd64-cgo), const ETIME Errno pkg syscall (darwin-amd64-cgo), const EVFILT_AIO ideal-int pkg syscall (darwin-amd64-cgo), const EVFILT_FS ideal-int pkg syscall (darwin-amd64-cgo), const EVFILT_MACHPORT ideal-int pkg syscall (darwin-amd64-cgo), const EVFILT_PROC ideal-int pkg syscall (darwin-amd64-cgo), const EVFILT_READ ideal-int pkg syscall (darwin-amd64-cgo), const EVFILT_SIGNAL ideal-int pkg syscall (darwin-amd64-cgo), const EVFILT_SYSCOUNT ideal-int pkg syscall (darwin-amd64-cgo), const EVFILT_THREADMARKER ideal-int pkg syscall (darwin-amd64-cgo), const EVFILT_TIMER ideal-int pkg syscall (darwin-amd64-cgo), const EVFILT_USER ideal-int pkg syscall (darwin-amd64-cgo), const EVFILT_VM ideal-int pkg syscall (darwin-amd64-cgo), const EVFILT_VNODE ideal-int pkg syscall (darwin-amd64-cgo), const EVFILT_WRITE ideal-int pkg syscall (darwin-amd64-cgo), const EV_ADD ideal-int pkg syscall (darwin-amd64-cgo), const EV_CLEAR ideal-int pkg syscall (darwin-amd64-cgo), const EV_DELETE ideal-int pkg syscall (darwin-amd64-cgo), const EV_DISABLE ideal-int pkg syscall (darwin-amd64-cgo), const EV_DISPATCH ideal-int pkg syscall (darwin-amd64-cgo), const EV_ENABLE ideal-int pkg syscall (darwin-amd64-cgo), const EV_EOF ideal-int pkg syscall (darwin-amd64-cgo), const EV_ERROR ideal-int pkg syscall (darwin-amd64-cgo), const EV_FLAG0 ideal-int pkg syscall (darwin-amd64-cgo), const EV_FLAG1 ideal-int pkg syscall (darwin-amd64-cgo), const EV_ONESHOT ideal-int pkg syscall (darwin-amd64-cgo), const EV_OOBAND ideal-int pkg syscall (darwin-amd64-cgo), const EV_POLL ideal-int pkg syscall (darwin-amd64-cgo), const EV_RECEIPT ideal-int pkg syscall (darwin-amd64-cgo), const EV_SYSFLAGS ideal-int pkg syscall (darwin-amd64-cgo), const EXTA ideal-int pkg syscall (darwin-amd64-cgo), const EXTB ideal-int pkg syscall (darwin-amd64-cgo), const EXTPROC ideal-int pkg syscall (darwin-amd64-cgo), const FD_CLOEXEC ideal-int pkg syscall (darwin-amd64-cgo), const FD_SETSIZE ideal-int pkg syscall (darwin-amd64-cgo), const F_ADDFILESIGS ideal-int pkg syscall (darwin-amd64-cgo), const F_ADDSIGS ideal-int pkg syscall (darwin-amd64-cgo), const F_ALLOCATEALL ideal-int pkg syscall (darwin-amd64-cgo), const F_ALLOCATECONTIG ideal-int pkg syscall (darwin-amd64-cgo), const F_CHKCLEAN ideal-int pkg syscall (darwin-amd64-cgo), const F_DUPFD ideal-int pkg syscall (darwin-amd64-cgo), const F_DUPFD_CLOEXEC ideal-int pkg syscall (darwin-amd64-cgo), const F_FLUSH_DATA ideal-int pkg syscall (darwin-amd64-cgo), const F_FREEZE_FS ideal-int pkg syscall (darwin-amd64-cgo), const F_FULLFSYNC ideal-int pkg syscall (darwin-amd64-cgo), const F_GETFD ideal-int pkg syscall (darwin-amd64-cgo), const F_GETFL ideal-int pkg syscall (darwin-amd64-cgo), const F_GETLK ideal-int pkg syscall (darwin-amd64-cgo), const F_GETLKPID ideal-int pkg syscall (darwin-amd64-cgo), const F_GETNOSIGPIPE ideal-int pkg syscall (darwin-amd64-cgo), const F_GETOWN ideal-int pkg syscall (darwin-amd64-cgo), const F_GETPATH ideal-int pkg syscall (darwin-amd64-cgo), const F_GETPATH_MTMINFO ideal-int pkg syscall (darwin-amd64-cgo), const F_GETPROTECTIONCLASS ideal-int pkg syscall (darwin-amd64-cgo), const F_GLOBAL_NOCACHE ideal-int pkg syscall (darwin-amd64-cgo), const F_LOG2PHYS ideal-int pkg syscall (darwin-amd64-cgo), const F_LOG2PHYS_EXT ideal-int pkg syscall (darwin-amd64-cgo), const F_MARKDEPENDENCY ideal-int pkg syscall (darwin-amd64-cgo), const F_NOCACHE ideal-int pkg syscall (darwin-amd64-cgo), const F_NODIRECT ideal-int pkg syscall (darwin-amd64-cgo), const F_OK ideal-int pkg syscall (darwin-amd64-cgo), const F_PATHPKG_CHECK ideal-int pkg syscall (darwin-amd64-cgo), const F_PEOFPOSMODE ideal-int pkg syscall (darwin-amd64-cgo), const F_PREALLOCATE ideal-int pkg syscall (darwin-amd64-cgo), const F_RDADVISE ideal-int pkg syscall (darwin-amd64-cgo), const F_RDAHEAD ideal-int pkg syscall (darwin-amd64-cgo), const F_RDLCK ideal-int pkg syscall (darwin-amd64-cgo), const F_READBOOTSTRAP ideal-int pkg syscall (darwin-amd64-cgo), const F_SETBACKINGSTORE ideal-int pkg syscall (darwin-amd64-cgo), const F_SETFD ideal-int pkg syscall (darwin-amd64-cgo), const F_SETFL ideal-int pkg syscall (darwin-amd64-cgo), const F_SETLK ideal-int pkg syscall (darwin-amd64-cgo), const F_SETLKW ideal-int pkg syscall (darwin-amd64-cgo), const F_SETNOSIGPIPE ideal-int pkg syscall (darwin-amd64-cgo), const F_SETOWN ideal-int pkg syscall (darwin-amd64-cgo), const F_SETPROTECTIONCLASS ideal-int pkg syscall (darwin-amd64-cgo), const F_SETSIZE ideal-int pkg syscall (darwin-amd64-cgo), const F_THAW_FS ideal-int pkg syscall (darwin-amd64-cgo), const F_UNLCK ideal-int pkg syscall (darwin-amd64-cgo), const F_VOLPOSMODE ideal-int pkg syscall (darwin-amd64-cgo), const F_WRITEBOOTSTRAP ideal-int pkg syscall (darwin-amd64-cgo), const F_WRLCK ideal-int pkg syscall (darwin-amd64-cgo), const IFF_ALLMULTI ideal-int pkg syscall (darwin-amd64-cgo), const IFF_ALTPHYS ideal-int pkg syscall (darwin-amd64-cgo), const IFF_DEBUG ideal-int pkg syscall (darwin-amd64-cgo), const IFF_LINK0 ideal-int pkg syscall (darwin-amd64-cgo), const IFF_LINK1 ideal-int pkg syscall (darwin-amd64-cgo), const IFF_LINK2 ideal-int pkg syscall (darwin-amd64-cgo), const IFF_NOARP ideal-int pkg syscall (darwin-amd64-cgo), const IFF_NOTRAILERS ideal-int pkg syscall (darwin-amd64-cgo), const IFF_OACTIVE ideal-int pkg syscall (darwin-amd64-cgo), const IFF_POINTOPOINT ideal-int pkg syscall (darwin-amd64-cgo), const IFF_PROMISC ideal-int pkg syscall (darwin-amd64-cgo), const IFF_RUNNING ideal-int pkg syscall (darwin-amd64-cgo), const IFF_SIMPLEX ideal-int pkg syscall (darwin-amd64-cgo), const IFNAMSIZ ideal-int pkg syscall (darwin-amd64-cgo), const IFT_1822 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_AAL5 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_ARCNET ideal-int pkg syscall (darwin-amd64-cgo), const IFT_ARCNETPLUS ideal-int pkg syscall (darwin-amd64-cgo), const IFT_ATM ideal-int pkg syscall (darwin-amd64-cgo), const IFT_BRIDGE ideal-int pkg syscall (darwin-amd64-cgo), const IFT_CARP ideal-int pkg syscall (darwin-amd64-cgo), const IFT_CELLULAR ideal-int pkg syscall (darwin-amd64-cgo), const IFT_CEPT ideal-int pkg syscall (darwin-amd64-cgo), const IFT_DS3 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_ENC ideal-int pkg syscall (darwin-amd64-cgo), const IFT_EON ideal-int pkg syscall (darwin-amd64-cgo), const IFT_ETHER ideal-int pkg syscall (darwin-amd64-cgo), const IFT_FAITH ideal-int pkg syscall (darwin-amd64-cgo), const IFT_FDDI ideal-int pkg syscall (darwin-amd64-cgo), const IFT_FRELAY ideal-int pkg syscall (darwin-amd64-cgo), const IFT_FRELAYDCE ideal-int pkg syscall (darwin-amd64-cgo), const IFT_GIF ideal-int pkg syscall (darwin-amd64-cgo), const IFT_HDH1822 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_HIPPI ideal-int pkg syscall (darwin-amd64-cgo), const IFT_HSSI ideal-int pkg syscall (darwin-amd64-cgo), const IFT_HY ideal-int pkg syscall (darwin-amd64-cgo), const IFT_IEEE1394 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_IEEE8023ADLAG ideal-int pkg syscall (darwin-amd64-cgo), const IFT_ISDNBASIC ideal-int pkg syscall (darwin-amd64-cgo), const IFT_ISDNPRIMARY ideal-int pkg syscall (darwin-amd64-cgo), const IFT_ISO88022LLC ideal-int pkg syscall (darwin-amd64-cgo), const IFT_ISO88023 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_ISO88024 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_ISO88025 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_ISO88026 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_L2VLAN ideal-int pkg syscall (darwin-amd64-cgo), const IFT_LAPB ideal-int pkg syscall (darwin-amd64-cgo), const IFT_LOCALTALK ideal-int pkg syscall (darwin-amd64-cgo), const IFT_LOOP ideal-int pkg syscall (darwin-amd64-cgo), const IFT_MIOX25 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_MODEM ideal-int pkg syscall (darwin-amd64-cgo), const IFT_NSIP ideal-int pkg syscall (darwin-amd64-cgo), const IFT_OTHER ideal-int pkg syscall (darwin-amd64-cgo), const IFT_P10 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_P80 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_PARA ideal-int pkg syscall (darwin-amd64-cgo), const IFT_PDP ideal-int pkg syscall (darwin-amd64-cgo), const IFT_PFLOG ideal-int pkg syscall (darwin-amd64-cgo), const IFT_PFSYNC ideal-int pkg syscall (darwin-amd64-cgo), const IFT_PPP ideal-int pkg syscall (darwin-amd64-cgo), const IFT_PROPMUX ideal-int pkg syscall (darwin-amd64-cgo), const IFT_PROPVIRTUAL ideal-int pkg syscall (darwin-amd64-cgo), const IFT_PTPSERIAL ideal-int pkg syscall (darwin-amd64-cgo), const IFT_RS232 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_SDLC ideal-int pkg syscall (darwin-amd64-cgo), const IFT_SIP ideal-int pkg syscall (darwin-amd64-cgo), const IFT_SLIP ideal-int pkg syscall (darwin-amd64-cgo), const IFT_SMDSDXI ideal-int pkg syscall (darwin-amd64-cgo), const IFT_SMDSICIP ideal-int pkg syscall (darwin-amd64-cgo), const IFT_SONET ideal-int pkg syscall (darwin-amd64-cgo), const IFT_SONETPATH ideal-int pkg syscall (darwin-amd64-cgo), const IFT_SONETVT ideal-int pkg syscall (darwin-amd64-cgo), const IFT_STARLAN ideal-int pkg syscall (darwin-amd64-cgo), const IFT_STF ideal-int pkg syscall (darwin-amd64-cgo), const IFT_T1 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_ULTRA ideal-int pkg syscall (darwin-amd64-cgo), const IFT_V35 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_X25 ideal-int pkg syscall (darwin-amd64-cgo), const IFT_X25DDN ideal-int pkg syscall (darwin-amd64-cgo), const IFT_X25PLE ideal-int pkg syscall (darwin-amd64-cgo), const IFT_XETHER ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSA_HOST ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSA_MAX ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSA_NET ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSA_NSHIFT ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSB_HOST ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSB_MAX ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSB_NET ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSB_NSHIFT ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSC_HOST ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSC_NET ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSC_NSHIFT ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSD_HOST ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSD_NET ideal-int pkg syscall (darwin-amd64-cgo), const IN_CLASSD_NSHIFT ideal-int pkg syscall (darwin-amd64-cgo), const IN_LINKLOCALNETNUM ideal-int pkg syscall (darwin-amd64-cgo), const IN_LOOPBACKNET ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_3PC ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_ADFS ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_AH ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_AHIP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_APES ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_ARGUS ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_AX25 ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_BHA ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_BLT ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_BRSATMON ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_CFTP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_CHAOS ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_CMTP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_CPHB ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_CPNX ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_DDP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_DGP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_DIVERT ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_DONE ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_DSTOPTS ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_EGP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_EMCON ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_ENCAP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_EON ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_ESP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_ETHERIP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_FRAGMENT ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_GGP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_GMTP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_GRE ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_HELLO ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_HMP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_HOPOPTS ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_ICMP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_ICMPV6 ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_IDP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_IDPR ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_IDRP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_IGMP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_IGP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_IGRP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_IL ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_INLSP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_INP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_IPCOMP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_IPCV ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_IPEIP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_IPIP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_IPPC ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_IPV4 ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_IRTP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_KRYPTOLAN ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_LARP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_LEAF1 ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_LEAF2 ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_MAX ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_MAXID ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_MEAS ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_MHRP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_MICP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_MTP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_MUX ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_ND ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_NHRP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_NONE ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_NSP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_NVPII ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_OSPFIGP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_PGM ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_PIGP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_PIM ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_PRM ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_PUP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_PVP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_RAW ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_RCCMON ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_RDP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_ROUTING ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_RSVP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_RVD ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_SATEXPAK ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_SATMON ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_SCCSP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_SCTP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_SDRP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_SEP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_SRPC ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_ST ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_SVMTP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_SWIPE ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_TCF ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_TP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_TPXX ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_TRUNK1 ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_TRUNK2 ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_TTP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_VINES ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_VISA ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_VMTP ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_WBEXPAK ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_WBMON ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_WSN ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_XNET ideal-int pkg syscall (darwin-amd64-cgo), const IPPROTO_XTP ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_2292DSTOPTS ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_2292HOPLIMIT ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_2292HOPOPTS ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_2292NEXTHOP ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_2292PKTINFO ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_2292PKTOPTIONS ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_2292RTHDR ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_BINDV6ONLY ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_BOUND_IF ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_CHECKSUM ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_DEFHLIM ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_FAITH ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_FRAGTTL ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_FW_ADD ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_FW_DEL ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_FW_FLUSH ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_FW_GET ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_FW_ZERO ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_HLIMDEC ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_IPSEC_POLICY ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_MAXHLIM ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_MAXOPTHDR ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_MAXPACKET ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_MAX_MEMBERSHIPS ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_MIN_MEMBERSHIPS ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_MMTU ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_PORTRANGE ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_RECVTCLASS ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_RTHDR_STRICT ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_TCLASS ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_VERSION ideal-int pkg syscall (darwin-amd64-cgo), const IPV6_VERSION_MASK ideal-int pkg syscall (darwin-amd64-cgo), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (darwin-amd64-cgo), const IP_BLOCK_SOURCE ideal-int pkg syscall (darwin-amd64-cgo), const IP_BOUND_IF ideal-int pkg syscall (darwin-amd64-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (darwin-amd64-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (darwin-amd64-cgo), const IP_DF ideal-int pkg syscall (darwin-amd64-cgo), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (darwin-amd64-cgo), const IP_DUMMYNET_CONFIGURE ideal-int pkg syscall (darwin-amd64-cgo), const IP_DUMMYNET_DEL ideal-int pkg syscall (darwin-amd64-cgo), const IP_DUMMYNET_FLUSH ideal-int pkg syscall (darwin-amd64-cgo), const IP_DUMMYNET_GET ideal-int pkg syscall (darwin-amd64-cgo), const IP_FAITH ideal-int pkg syscall (darwin-amd64-cgo), const IP_FW_ADD ideal-int pkg syscall (darwin-amd64-cgo), const IP_FW_DEL ideal-int pkg syscall (darwin-amd64-cgo), const IP_FW_FLUSH ideal-int pkg syscall (darwin-amd64-cgo), const IP_FW_GET ideal-int pkg syscall (darwin-amd64-cgo), const IP_FW_RESETLOG ideal-int pkg syscall (darwin-amd64-cgo), const IP_FW_ZERO ideal-int pkg syscall (darwin-amd64-cgo), const IP_HDRINCL ideal-int pkg syscall (darwin-amd64-cgo), const IP_IPSEC_POLICY ideal-int pkg syscall (darwin-amd64-cgo), const IP_MAXPACKET ideal-int pkg syscall (darwin-amd64-cgo), const IP_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (darwin-amd64-cgo), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (darwin-amd64-cgo), const IP_MAX_SOCK_MUTE_FILTER ideal-int pkg syscall (darwin-amd64-cgo), const IP_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (darwin-amd64-cgo), const IP_MF ideal-int pkg syscall (darwin-amd64-cgo), const IP_MIN_MEMBERSHIPS ideal-int pkg syscall (darwin-amd64-cgo), const IP_MSFILTER ideal-int pkg syscall (darwin-amd64-cgo), const IP_MSS ideal-int pkg syscall (darwin-amd64-cgo), const IP_MULTICAST_IFINDEX ideal-int pkg syscall (darwin-amd64-cgo), const IP_MULTICAST_VIF ideal-int pkg syscall (darwin-amd64-cgo), const IP_NAT__XXX ideal-int pkg syscall (darwin-amd64-cgo), const IP_OFFMASK ideal-int pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_ADD ideal-int pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_DEL ideal-int pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_FLUSH ideal-int pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_GET ideal-int pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_RESETLOG ideal-int pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_ZERO ideal-int pkg syscall (darwin-amd64-cgo), const IP_OPTIONS ideal-int pkg syscall (darwin-amd64-cgo), const IP_PKTINFO ideal-int pkg syscall (darwin-amd64-cgo), const IP_PORTRANGE ideal-int pkg syscall (darwin-amd64-cgo), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (darwin-amd64-cgo), const IP_PORTRANGE_HIGH ideal-int pkg syscall (darwin-amd64-cgo), const IP_PORTRANGE_LOW ideal-int pkg syscall (darwin-amd64-cgo), const IP_RECVDSTADDR ideal-int pkg syscall (darwin-amd64-cgo), const IP_RECVIF ideal-int pkg syscall (darwin-amd64-cgo), const IP_RECVOPTS ideal-int pkg syscall (darwin-amd64-cgo), const IP_RECVPKTINFO ideal-int pkg syscall (darwin-amd64-cgo), const IP_RECVRETOPTS ideal-int pkg syscall (darwin-amd64-cgo), const IP_RECVTTL ideal-int pkg syscall (darwin-amd64-cgo), const IP_RETOPTS ideal-int pkg syscall (darwin-amd64-cgo), const IP_RF ideal-int pkg syscall (darwin-amd64-cgo), const IP_RSVP_OFF ideal-int pkg syscall (darwin-amd64-cgo), const IP_RSVP_ON ideal-int pkg syscall (darwin-amd64-cgo), const IP_RSVP_VIF_OFF ideal-int pkg syscall (darwin-amd64-cgo), const IP_RSVP_VIF_ON ideal-int pkg syscall (darwin-amd64-cgo), const IP_STRIPHDR ideal-int pkg syscall (darwin-amd64-cgo), const IP_TRAFFIC_MGT_BACKGROUND ideal-int pkg syscall (darwin-amd64-cgo), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (darwin-amd64-cgo), const LOCK_EX ideal-int pkg syscall (darwin-amd64-cgo), const LOCK_NB ideal-int pkg syscall (darwin-amd64-cgo), const LOCK_SH ideal-int pkg syscall (darwin-amd64-cgo), const LOCK_UN ideal-int pkg syscall (darwin-amd64-cgo), const MADV_CAN_REUSE ideal-int pkg syscall (darwin-amd64-cgo), const MADV_DONTNEED ideal-int pkg syscall (darwin-amd64-cgo), const MADV_FREE ideal-int pkg syscall (darwin-amd64-cgo), const MADV_FREE_REUSABLE ideal-int pkg syscall (darwin-amd64-cgo), const MADV_FREE_REUSE ideal-int pkg syscall (darwin-amd64-cgo), const MADV_NORMAL ideal-int pkg syscall (darwin-amd64-cgo), const MADV_RANDOM ideal-int pkg syscall (darwin-amd64-cgo), const MADV_SEQUENTIAL ideal-int pkg syscall (darwin-amd64-cgo), const MADV_WILLNEED ideal-int pkg syscall (darwin-amd64-cgo), const MADV_ZERO_WIRED_PAGES ideal-int pkg syscall (darwin-amd64-cgo), const MAP_ANON ideal-int pkg syscall (darwin-amd64-cgo), const MAP_COPY ideal-int pkg syscall (darwin-amd64-cgo), const MAP_FILE ideal-int pkg syscall (darwin-amd64-cgo), const MAP_FIXED ideal-int pkg syscall (darwin-amd64-cgo), const MAP_HASSEMAPHORE ideal-int pkg syscall (darwin-amd64-cgo), const MAP_JIT ideal-int pkg syscall (darwin-amd64-cgo), const MAP_NOCACHE ideal-int pkg syscall (darwin-amd64-cgo), const MAP_NOEXTEND ideal-int pkg syscall (darwin-amd64-cgo), const MAP_NORESERVE ideal-int pkg syscall (darwin-amd64-cgo), const MAP_PRIVATE ideal-int pkg syscall (darwin-amd64-cgo), const MAP_RENAME ideal-int pkg syscall (darwin-amd64-cgo), const MAP_RESERVED0080 ideal-int pkg syscall (darwin-amd64-cgo), const MAP_SHARED ideal-int pkg syscall (darwin-amd64-cgo), const MCL_CURRENT ideal-int pkg syscall (darwin-amd64-cgo), const MCL_FUTURE ideal-int pkg syscall (darwin-amd64-cgo), const MSG_CTRUNC ideal-int pkg syscall (darwin-amd64-cgo), const MSG_DONTROUTE ideal-int pkg syscall (darwin-amd64-cgo), const MSG_DONTWAIT ideal-int pkg syscall (darwin-amd64-cgo), const MSG_EOF ideal-int pkg syscall (darwin-amd64-cgo), const MSG_EOR ideal-int pkg syscall (darwin-amd64-cgo), const MSG_FLUSH ideal-int pkg syscall (darwin-amd64-cgo), const MSG_HAVEMORE ideal-int pkg syscall (darwin-amd64-cgo), const MSG_HOLD ideal-int pkg syscall (darwin-amd64-cgo), const MSG_NEEDSA ideal-int pkg syscall (darwin-amd64-cgo), const MSG_OOB ideal-int pkg syscall (darwin-amd64-cgo), const MSG_PEEK ideal-int pkg syscall (darwin-amd64-cgo), const MSG_RCVMORE ideal-int pkg syscall (darwin-amd64-cgo), const MSG_SEND ideal-int pkg syscall (darwin-amd64-cgo), const MSG_TRUNC ideal-int pkg syscall (darwin-amd64-cgo), const MSG_WAITALL ideal-int pkg syscall (darwin-amd64-cgo), const MSG_WAITSTREAM ideal-int pkg syscall (darwin-amd64-cgo), const MS_ASYNC ideal-int pkg syscall (darwin-amd64-cgo), const MS_DEACTIVATE ideal-int pkg syscall (darwin-amd64-cgo), const MS_INVALIDATE ideal-int pkg syscall (darwin-amd64-cgo), const MS_KILLPAGES ideal-int pkg syscall (darwin-amd64-cgo), const MS_SYNC ideal-int pkg syscall (darwin-amd64-cgo), const NAME_MAX ideal-int pkg syscall (darwin-amd64-cgo), const NET_RT_DUMP ideal-int pkg syscall (darwin-amd64-cgo), const NET_RT_DUMP2 ideal-int pkg syscall (darwin-amd64-cgo), const NET_RT_FLAGS ideal-int pkg syscall (darwin-amd64-cgo), const NET_RT_IFLIST ideal-int pkg syscall (darwin-amd64-cgo), const NET_RT_IFLIST2 ideal-int pkg syscall (darwin-amd64-cgo), const NET_RT_MAXID ideal-int pkg syscall (darwin-amd64-cgo), const NET_RT_STAT ideal-int pkg syscall (darwin-amd64-cgo), const NET_RT_TRASH ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_ABSOLUTE ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_ATTRIB ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_CHILD ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_DELETE ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_EXEC ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_EXIT ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_EXITSTATUS ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_EXTEND ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_FFAND ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_FFCOPY ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_FFCTRLMASK ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_FFLAGSMASK ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_FFNOP ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_FFOR ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_FORK ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_LINK ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_LOWAT ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_NONE ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_NSECONDS ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_PCTRLMASK ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_PDATAMASK ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_REAP ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_RENAME ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_RESOURCEEND ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_REVOKE ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_SECONDS ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_SIGNAL ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_TRACK ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_TRACKERR ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_TRIGGER ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_USECONDS ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_VM_ERROR ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_VM_PRESSURE ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_VM_PRESSURE_SUDDEN_TERMINATE ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_VM_PRESSURE_TERMINATE ideal-int pkg syscall (darwin-amd64-cgo), const NOTE_WRITE ideal-int pkg syscall (darwin-amd64-cgo), const O_ACCMODE ideal-int pkg syscall (darwin-amd64-cgo), const O_ALERT ideal-int pkg syscall (darwin-amd64-cgo), const O_DIRECTORY ideal-int pkg syscall (darwin-amd64-cgo), const O_DSYNC ideal-int pkg syscall (darwin-amd64-cgo), const O_EVTONLY ideal-int pkg syscall (darwin-amd64-cgo), const O_EXLOCK ideal-int pkg syscall (darwin-amd64-cgo), const O_FSYNC ideal-int pkg syscall (darwin-amd64-cgo), const O_NDELAY ideal-int pkg syscall (darwin-amd64-cgo), const O_NOFOLLOW ideal-int pkg syscall (darwin-amd64-cgo), const O_POPUP ideal-int pkg syscall (darwin-amd64-cgo), const O_SHLOCK ideal-int pkg syscall (darwin-amd64-cgo), const O_SYMLINK ideal-int pkg syscall (darwin-amd64-cgo), const PROT_EXEC ideal-int pkg syscall (darwin-amd64-cgo), const PROT_NONE ideal-int pkg syscall (darwin-amd64-cgo), const PROT_READ ideal-int pkg syscall (darwin-amd64-cgo), const PROT_WRITE ideal-int pkg syscall (darwin-amd64-cgo), const PTRACE_CONT ideal-int pkg syscall (darwin-amd64-cgo), const PTRACE_KILL ideal-int pkg syscall (darwin-amd64-cgo), const PTRACE_TRACEME ideal-int pkg syscall (darwin-amd64-cgo), const PT_ATTACH ideal-int pkg syscall (darwin-amd64-cgo), const PT_ATTACHEXC ideal-int pkg syscall (darwin-amd64-cgo), const PT_CONTINUE ideal-int pkg syscall (darwin-amd64-cgo), const PT_DENY_ATTACH ideal-int pkg syscall (darwin-amd64-cgo), const PT_DETACH ideal-int pkg syscall (darwin-amd64-cgo), const PT_FIRSTMACH ideal-int pkg syscall (darwin-amd64-cgo), const PT_FORCEQUOTA ideal-int pkg syscall (darwin-amd64-cgo), const PT_KILL ideal-int pkg syscall (darwin-amd64-cgo), const PT_READ_D ideal-int pkg syscall (darwin-amd64-cgo), const PT_READ_I ideal-int pkg syscall (darwin-amd64-cgo), const PT_READ_U ideal-int pkg syscall (darwin-amd64-cgo), const PT_SIGEXC ideal-int pkg syscall (darwin-amd64-cgo), const PT_STEP ideal-int pkg syscall (darwin-amd64-cgo), const PT_THUPDATE ideal-int pkg syscall (darwin-amd64-cgo), const PT_TRACE_ME ideal-int pkg syscall (darwin-amd64-cgo), const PT_WRITE_D ideal-int pkg syscall (darwin-amd64-cgo), const PT_WRITE_I ideal-int pkg syscall (darwin-amd64-cgo), const PT_WRITE_U ideal-int pkg syscall (darwin-amd64-cgo), const RLIMIT_AS ideal-int pkg syscall (darwin-amd64-cgo), const RLIMIT_CORE ideal-int pkg syscall (darwin-amd64-cgo), const RLIMIT_CPU ideal-int pkg syscall (darwin-amd64-cgo), const RLIMIT_DATA ideal-int pkg syscall (darwin-amd64-cgo), const RLIMIT_FSIZE ideal-int pkg syscall (darwin-amd64-cgo), const RLIMIT_NOFILE ideal-int pkg syscall (darwin-amd64-cgo), const RLIMIT_STACK ideal-int pkg syscall (darwin-amd64-cgo), const RLIM_INFINITY ideal-int pkg syscall (darwin-amd64-cgo), const RTAX_AUTHOR ideal-int pkg syscall (darwin-amd64-cgo), const RTAX_BRD ideal-int pkg syscall (darwin-amd64-cgo), const RTAX_DST ideal-int pkg syscall (darwin-amd64-cgo), const RTAX_GATEWAY ideal-int pkg syscall (darwin-amd64-cgo), const RTAX_GENMASK ideal-int pkg syscall (darwin-amd64-cgo), const RTAX_IFA ideal-int pkg syscall (darwin-amd64-cgo), const RTAX_IFP ideal-int pkg syscall (darwin-amd64-cgo), const RTAX_MAX ideal-int pkg syscall (darwin-amd64-cgo), const RTAX_NETMASK ideal-int pkg syscall (darwin-amd64-cgo), const RTA_AUTHOR ideal-int pkg syscall (darwin-amd64-cgo), const RTA_BRD ideal-int pkg syscall (darwin-amd64-cgo), const RTA_DST ideal-int pkg syscall (darwin-amd64-cgo), const RTA_GATEWAY ideal-int pkg syscall (darwin-amd64-cgo), const RTA_GENMASK ideal-int pkg syscall (darwin-amd64-cgo), const RTA_IFA ideal-int pkg syscall (darwin-amd64-cgo), const RTA_IFP ideal-int pkg syscall (darwin-amd64-cgo), const RTA_NETMASK ideal-int pkg syscall (darwin-amd64-cgo), const RTF_BLACKHOLE ideal-int pkg syscall (darwin-amd64-cgo), const RTF_BROADCAST ideal-int pkg syscall (darwin-amd64-cgo), const RTF_CLONING ideal-int pkg syscall (darwin-amd64-cgo), const RTF_CONDEMNED ideal-int pkg syscall (darwin-amd64-cgo), const RTF_DELCLONE ideal-int pkg syscall (darwin-amd64-cgo), const RTF_DONE ideal-int pkg syscall (darwin-amd64-cgo), const RTF_DYNAMIC ideal-int pkg syscall (darwin-amd64-cgo), const RTF_GATEWAY ideal-int pkg syscall (darwin-amd64-cgo), const RTF_HOST ideal-int pkg syscall (darwin-amd64-cgo), const RTF_IFREF ideal-int pkg syscall (darwin-amd64-cgo), const RTF_IFSCOPE ideal-int pkg syscall (darwin-amd64-cgo), const RTF_LLINFO ideal-int pkg syscall (darwin-amd64-cgo), const RTF_LOCAL ideal-int pkg syscall (darwin-amd64-cgo), const RTF_MODIFIED ideal-int pkg syscall (darwin-amd64-cgo), const RTF_MULTICAST ideal-int pkg syscall (darwin-amd64-cgo), const RTF_PINNED ideal-int pkg syscall (darwin-amd64-cgo), const RTF_PRCLONING ideal-int pkg syscall (darwin-amd64-cgo), const RTF_PROTO1 ideal-int pkg syscall (darwin-amd64-cgo), const RTF_PROTO2 ideal-int pkg syscall (darwin-amd64-cgo), const RTF_PROTO3 ideal-int pkg syscall (darwin-amd64-cgo), const RTF_REJECT ideal-int pkg syscall (darwin-amd64-cgo), const RTF_STATIC ideal-int pkg syscall (darwin-amd64-cgo), const RTF_UP ideal-int pkg syscall (darwin-amd64-cgo), const RTF_WASCLONED ideal-int pkg syscall (darwin-amd64-cgo), const RTF_XRESOLVE ideal-int pkg syscall (darwin-amd64-cgo), const RTM_ADD ideal-int pkg syscall (darwin-amd64-cgo), const RTM_CHANGE ideal-int pkg syscall (darwin-amd64-cgo), const RTM_DELADDR ideal-int pkg syscall (darwin-amd64-cgo), const RTM_DELETE ideal-int pkg syscall (darwin-amd64-cgo), const RTM_DELMADDR ideal-int pkg syscall (darwin-amd64-cgo), const RTM_GET ideal-int pkg syscall (darwin-amd64-cgo), const RTM_GET2 ideal-int pkg syscall (darwin-amd64-cgo), const RTM_IFINFO ideal-int pkg syscall (darwin-amd64-cgo), const RTM_IFINFO2 ideal-int pkg syscall (darwin-amd64-cgo), const RTM_LOCK ideal-int pkg syscall (darwin-amd64-cgo), const RTM_LOSING ideal-int pkg syscall (darwin-amd64-cgo), const RTM_MISS ideal-int pkg syscall (darwin-amd64-cgo), const RTM_NEWADDR ideal-int pkg syscall (darwin-amd64-cgo), const RTM_NEWMADDR ideal-int pkg syscall (darwin-amd64-cgo), const RTM_NEWMADDR2 ideal-int pkg syscall (darwin-amd64-cgo), const RTM_OLDADD ideal-int pkg syscall (darwin-amd64-cgo), const RTM_OLDDEL ideal-int pkg syscall (darwin-amd64-cgo), const RTM_REDIRECT ideal-int pkg syscall (darwin-amd64-cgo), const RTM_RESOLVE ideal-int pkg syscall (darwin-amd64-cgo), const RTM_RTTUNIT ideal-int pkg syscall (darwin-amd64-cgo), const RTM_VERSION ideal-int pkg syscall (darwin-amd64-cgo), const RTV_EXPIRE ideal-int pkg syscall (darwin-amd64-cgo), const RTV_HOPCOUNT ideal-int pkg syscall (darwin-amd64-cgo), const RTV_MTU ideal-int pkg syscall (darwin-amd64-cgo), const RTV_RPIPE ideal-int pkg syscall (darwin-amd64-cgo), const RTV_RTT ideal-int pkg syscall (darwin-amd64-cgo), const RTV_RTTVAR ideal-int pkg syscall (darwin-amd64-cgo), const RTV_SPIPE ideal-int pkg syscall (darwin-amd64-cgo), const RTV_SSTHRESH ideal-int pkg syscall (darwin-amd64-cgo), const RUSAGE_CHILDREN ideal-int pkg syscall (darwin-amd64-cgo), const RUSAGE_SELF ideal-int pkg syscall (darwin-amd64-cgo), const SCM_CREDS ideal-int pkg syscall (darwin-amd64-cgo), const SCM_RIGHTS ideal-int pkg syscall (darwin-amd64-cgo), const SCM_TIMESTAMP ideal-int pkg syscall (darwin-amd64-cgo), const SCM_TIMESTAMP_MONOTONIC ideal-int pkg syscall (darwin-amd64-cgo), const SIGCHLD Signal pkg syscall (darwin-amd64-cgo), const SIGCONT Signal pkg syscall (darwin-amd64-cgo), const SIGEMT Signal pkg syscall (darwin-amd64-cgo), const SIGINFO Signal pkg syscall (darwin-amd64-cgo), const SIGIO Signal pkg syscall (darwin-amd64-cgo), const SIGIOT Signal pkg syscall (darwin-amd64-cgo), const SIGPROF Signal pkg syscall (darwin-amd64-cgo), const SIGSTOP Signal pkg syscall (darwin-amd64-cgo), const SIGSYS Signal pkg syscall (darwin-amd64-cgo), const SIGTSTP Signal pkg syscall (darwin-amd64-cgo), const SIGTTIN Signal pkg syscall (darwin-amd64-cgo), const SIGTTOU Signal pkg syscall (darwin-amd64-cgo), const SIGURG Signal pkg syscall (darwin-amd64-cgo), const SIGUSR1 Signal pkg syscall (darwin-amd64-cgo), const SIGUSR2 Signal pkg syscall (darwin-amd64-cgo), const SIGVTALRM Signal pkg syscall (darwin-amd64-cgo), const SIGWINCH Signal pkg syscall (darwin-amd64-cgo), const SIGXCPU Signal pkg syscall (darwin-amd64-cgo), const SIGXFSZ Signal pkg syscall (darwin-amd64-cgo), const SIOCADDMULTI ideal-int pkg syscall (darwin-amd64-cgo), const SIOCAIFADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCALIFADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCARPIPLL ideal-int pkg syscall (darwin-amd64-cgo), const SIOCATMARK ideal-int pkg syscall (darwin-amd64-cgo), const SIOCAUTOADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCAUTONETMASK ideal-int pkg syscall (darwin-amd64-cgo), const SIOCDELMULTI ideal-int pkg syscall (darwin-amd64-cgo), const SIOCDIFADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCDIFPHYADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCDLIFADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGDRVSPEC ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGETSGCNT ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGETVIFCNT ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGETVLAN ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGHIWAT ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFALTMTU ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFASYNCMAP ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFBOND ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFBRDADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFCAP ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFCONF ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFDEVMTU ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFDSTADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFFLAGS ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFGENERIC ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFKPI ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFMAC ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFMEDIA ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFMETRIC ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFMTU ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFNETMASK ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFPDSTADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFPHYS ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFPSRCADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFSTATUS ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFVLAN ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGIFWAKEFLAGS ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGLIFADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGLIFPHYADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGLOWAT ideal-int pkg syscall (darwin-amd64-cgo), const SIOCGPGRP ideal-int pkg syscall (darwin-amd64-cgo), const SIOCIFCREATE ideal-int pkg syscall (darwin-amd64-cgo), const SIOCIFCREATE2 ideal-int pkg syscall (darwin-amd64-cgo), const SIOCIFDESTROY ideal-int pkg syscall (darwin-amd64-cgo), const SIOCRSLVMULTI ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSDRVSPEC ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSETVLAN ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSHIWAT ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFALTMTU ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFASYNCMAP ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFBOND ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFBRDADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFCAP ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFDSTADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFFLAGS ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFGENERIC ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFKPI ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFLLADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFMAC ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFMEDIA ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFMETRIC ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFMTU ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFNETMASK ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFPHYADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFPHYS ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSIFVLAN ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSLIFPHYADDR ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSLOWAT ideal-int pkg syscall (darwin-amd64-cgo), const SIOCSPGRP ideal-int pkg syscall (darwin-amd64-cgo), const SOCK_MAXADDRLEN ideal-int pkg syscall (darwin-amd64-cgo), const SOCK_RDM ideal-int pkg syscall (darwin-amd64-cgo), const SO_ACCEPTCONN ideal-int pkg syscall (darwin-amd64-cgo), const SO_DEBUG ideal-int pkg syscall (darwin-amd64-cgo), const SO_DONTTRUNC ideal-int pkg syscall (darwin-amd64-cgo), const SO_ERROR ideal-int pkg syscall (darwin-amd64-cgo), const SO_LABEL ideal-int pkg syscall (darwin-amd64-cgo), const SO_LINGER_SEC ideal-int pkg syscall (darwin-amd64-cgo), const SO_NKE ideal-int pkg syscall (darwin-amd64-cgo), const SO_NOADDRERR ideal-int pkg syscall (darwin-amd64-cgo), const SO_NOSIGPIPE ideal-int pkg syscall (darwin-amd64-cgo), const SO_NOTIFYCONFLICT ideal-int pkg syscall (darwin-amd64-cgo), const SO_NP_EXTENSIONS ideal-int pkg syscall (darwin-amd64-cgo), const SO_NREAD ideal-int pkg syscall (darwin-amd64-cgo), const SO_NWRITE ideal-int pkg syscall (darwin-amd64-cgo), const SO_OOBINLINE ideal-int pkg syscall (darwin-amd64-cgo), const SO_PEERLABEL ideal-int pkg syscall (darwin-amd64-cgo), const SO_RANDOMPORT ideal-int pkg syscall (darwin-amd64-cgo), const SO_RCVLOWAT ideal-int pkg syscall (darwin-amd64-cgo), const SO_RCVTIMEO ideal-int pkg syscall (darwin-amd64-cgo), const SO_RESTRICTIONS ideal-int pkg syscall (darwin-amd64-cgo), const SO_RESTRICT_DENYIN ideal-int pkg syscall (darwin-amd64-cgo), const SO_RESTRICT_DENYOUT ideal-int pkg syscall (darwin-amd64-cgo), const SO_RESTRICT_DENYSET ideal-int pkg syscall (darwin-amd64-cgo), const SO_REUSEPORT ideal-int pkg syscall (darwin-amd64-cgo), const SO_REUSESHAREUID ideal-int pkg syscall (darwin-amd64-cgo), const SO_SNDLOWAT ideal-int pkg syscall (darwin-amd64-cgo), const SO_SNDTIMEO ideal-int pkg syscall (darwin-amd64-cgo), const SO_TIMESTAMP ideal-int pkg syscall (darwin-amd64-cgo), const SO_TIMESTAMP_MONOTONIC ideal-int pkg syscall (darwin-amd64-cgo), const SO_TYPE ideal-int pkg syscall (darwin-amd64-cgo), const SO_UPCALLCLOSEWAIT ideal-int pkg syscall (darwin-amd64-cgo), const SO_USELOOPBACK ideal-int pkg syscall (darwin-amd64-cgo), const SO_WANTMORE ideal-int pkg syscall (darwin-amd64-cgo), const SO_WANTOOBFLAG ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ACCEPT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ACCEPT_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ACCESS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ACCESS_EXTENDED ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ACCT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ADD_PROFIL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ADJTIME ideal-int pkg syscall (darwin-amd64-cgo), const SYS_AIO_CANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_AIO_ERROR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_AIO_FSYNC ideal-int pkg syscall (darwin-amd64-cgo), const SYS_AIO_READ ideal-int pkg syscall (darwin-amd64-cgo), const SYS_AIO_RETURN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_AIO_SUSPEND ideal-int pkg syscall (darwin-amd64-cgo), const SYS_AIO_SUSPEND_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_AIO_WRITE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ATGETMSG ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ATPGETREQ ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ATPGETRSP ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ATPSNDREQ ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ATPSNDRSP ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ATPUTMSG ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ATSOCKET ideal-int pkg syscall (darwin-amd64-cgo), const SYS_AUDIT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_AUDITCTL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_AUDITON ideal-int pkg syscall (darwin-amd64-cgo), const SYS_AUDIT_SESSION_JOIN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_AUDIT_SESSION_PORT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_AUDIT_SESSION_SELF ideal-int pkg syscall (darwin-amd64-cgo), const SYS_BIND ideal-int pkg syscall (darwin-amd64-cgo), const SYS_BSDTHREAD_CREATE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_BSDTHREAD_REGISTER ideal-int pkg syscall (darwin-amd64-cgo), const SYS_BSDTHREAD_TERMINATE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_CHDIR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_CHFLAGS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_CHMOD ideal-int pkg syscall (darwin-amd64-cgo), const SYS_CHMOD_EXTENDED ideal-int pkg syscall (darwin-amd64-cgo), const SYS_CHOWN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_CHROOT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_CHUD ideal-int pkg syscall (darwin-amd64-cgo), const SYS_CLOSE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_CLOSE_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_CONNECT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_CONNECT_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_COPYFILE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_CSOPS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_DELETE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_DUP ideal-int pkg syscall (darwin-amd64-cgo), const SYS_DUP2 ideal-int pkg syscall (darwin-amd64-cgo), const SYS_EXCHANGEDATA ideal-int pkg syscall (darwin-amd64-cgo), const SYS_EXECVE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_EXIT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FCHDIR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FCHFLAGS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FCHMOD ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FCHMOD_EXTENDED ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FCHOWN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FCNTL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FCNTL_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FDATASYNC ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FFSCTL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FGETATTRLIST ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FGETXATTR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FHOPEN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FILEPORT_MAKEFD ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FILEPORT_MAKEPORT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FLISTXATTR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FLOCK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FORK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FPATHCONF ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FREMOVEXATTR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FSCTL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FSETATTRLIST ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FSETXATTR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FSGETPATH ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FSTAT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FSTAT64 ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FSTAT64_EXTENDED ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FSTATFS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FSTATFS64 ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FSTATV ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FSTAT_EXTENDED ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FSYNC ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FSYNC_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FTRUNCATE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_FUTIMES ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETATTRLIST ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETAUDIT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETAUDIT_ADDR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETAUID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETDIRENTRIES ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETDIRENTRIES64 ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETDIRENTRIESATTR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETDTABLESIZE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETEGID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETEUID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETFH ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETFSSTAT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETFSSTAT64 ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETGID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETGROUPS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETHOSTUUID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETITIMER ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETLCID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETLOGIN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETPEERNAME ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETPGID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETPGRP ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETPID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETPPID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETPRIORITY ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETRLIMIT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETRUSAGE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETSGROUPS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETSID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETSOCKNAME ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETSOCKOPT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETTID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETTIMEOFDAY ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETUID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETWGROUPS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_GETXATTR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_IDENTITYSVC ideal-int pkg syscall (darwin-amd64-cgo), const SYS_INITGROUPS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_IOCTL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_IOPOLICYSYS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_ISSETUGID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_KDEBUG_TRACE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_KEVENT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_KEVENT64 ideal-int pkg syscall (darwin-amd64-cgo), const SYS_KILL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_KQUEUE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_LCHOWN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_LINK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_LIO_LISTIO ideal-int pkg syscall (darwin-amd64-cgo), const SYS_LISTEN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_LISTXATTR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_LSEEK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_LSTAT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_LSTAT64 ideal-int pkg syscall (darwin-amd64-cgo), const SYS_LSTAT64_EXTENDED ideal-int pkg syscall (darwin-amd64-cgo), const SYS_LSTATV ideal-int pkg syscall (darwin-amd64-cgo), const SYS_LSTAT_EXTENDED ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MADVISE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MAXSYSCALL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MINCORE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MINHERIT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MKCOMPLEX ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MKDIR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MKDIR_EXTENDED ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MKFIFO ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MKFIFO_EXTENDED ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MKNOD ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MLOCK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MLOCKALL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MMAP ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MODWATCH ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MOUNT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MPROTECT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MSGCTL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MSGGET ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MSGRCV ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MSGRCV_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MSGSND ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MSGSND_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MSGSYS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MSYNC ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MSYNC_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MUNLOCK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MUNLOCKALL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_MUNMAP ideal-int pkg syscall (darwin-amd64-cgo), const SYS_NFSCLNT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_NFSSVC ideal-int pkg syscall (darwin-amd64-cgo), const SYS_OPEN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_OPEN_EXTENDED ideal-int pkg syscall (darwin-amd64-cgo), const SYS_OPEN_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PATHCONF ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PID_HIBERNATE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PID_RESUME ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PID_SHUTDOWN_SOCKETS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PID_SUSPEND ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PIPE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_POLL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_POLL_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_POSIX_SPAWN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PREAD ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PREAD_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PROCESS_POLICY ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PROC_INFO ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PROFIL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_CVBROAD ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_CVCLRPREPOST ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_CVSIGNAL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_CVWAIT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_MUTEXDROP ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_MUTEXWAIT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_DOWNGRADE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_LONGRDLOCK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_RDLOCK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_UNLOCK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_UNLOCK2 ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_UPGRADE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_WRLOCK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_YIELDWRLOCK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PTRACE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PWRITE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_PWRITE_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_QUOTACTL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_READ ideal-int pkg syscall (darwin-amd64-cgo), const SYS_READLINK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_READV ideal-int pkg syscall (darwin-amd64-cgo), const SYS_READV_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_READ_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_REBOOT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_RECVFROM ideal-int pkg syscall (darwin-amd64-cgo), const SYS_RECVFROM_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_RECVMSG ideal-int pkg syscall (darwin-amd64-cgo), const SYS_RECVMSG_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_REMOVEXATTR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_RENAME ideal-int pkg syscall (darwin-amd64-cgo), const SYS_REVOKE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_RMDIR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEARCHFS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SELECT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SELECT_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEMCTL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEMGET ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEMOP ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEMSYS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEM_CLOSE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEM_DESTROY ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEM_GETVALUE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEM_INIT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEM_OPEN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEM_POST ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEM_TRYWAIT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEM_UNLINK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEM_WAIT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SEM_WAIT_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SENDFILE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SENDMSG ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SENDMSG_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SENDTO ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SENDTO_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETATTRLIST ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETAUDIT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETAUDIT_ADDR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETAUID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETEGID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETEUID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETGID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETGROUPS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETITIMER ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETLCID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETLOGIN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETPGID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETPRIORITY ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETPRIVEXEC ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETREGID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETREUID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETRLIMIT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETSGROUPS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETSID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETSOCKOPT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETTID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETTID_WITH_PID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETTIMEOFDAY ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETUID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETWGROUPS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SETXATTR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SHARED_REGION_CHECK_NP ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SHARED_REGION_MAP_AND_SLIDE_NP ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SHMAT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SHMCTL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SHMDT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SHMGET ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SHMSYS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SHM_OPEN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SHM_UNLINK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SHUTDOWN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SIGACTION ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SIGALTSTACK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SIGPENDING ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SIGPROCMASK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SIGRETURN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SIGSUSPEND ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SIGSUSPEND_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SOCKET ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SOCKETPAIR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_STACK_SNAPSHOT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_STAT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_STAT64 ideal-int pkg syscall (darwin-amd64-cgo), const SYS_STAT64_EXTENDED ideal-int pkg syscall (darwin-amd64-cgo), const SYS_STATFS ideal-int pkg syscall (darwin-amd64-cgo), const SYS_STATFS64 ideal-int pkg syscall (darwin-amd64-cgo), const SYS_STATV ideal-int pkg syscall (darwin-amd64-cgo), const SYS_STAT_EXTENDED ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SWAPON ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SYMLINK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SYNC ideal-int pkg syscall (darwin-amd64-cgo), const SYS_SYSCALL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_THREAD_SELFID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_TRUNCATE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_UMASK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_UMASK_EXTENDED ideal-int pkg syscall (darwin-amd64-cgo), const SYS_UNDELETE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_UNLINK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_UNMOUNT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_UTIMES ideal-int pkg syscall (darwin-amd64-cgo), const SYS_VFORK ideal-int pkg syscall (darwin-amd64-cgo), const SYS_VM_PRESSURE_MONITOR ideal-int pkg syscall (darwin-amd64-cgo), const SYS_WAIT4 ideal-int pkg syscall (darwin-amd64-cgo), const SYS_WAIT4_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_WAITEVENT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_WAITID ideal-int pkg syscall (darwin-amd64-cgo), const SYS_WAITID_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_WATCHEVENT ideal-int pkg syscall (darwin-amd64-cgo), const SYS_WORKQ_KERNRETURN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_WORKQ_OPEN ideal-int pkg syscall (darwin-amd64-cgo), const SYS_WRITE ideal-int pkg syscall (darwin-amd64-cgo), const SYS_WRITEV ideal-int pkg syscall (darwin-amd64-cgo), const SYS_WRITEV_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS_WRITE_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS___DISABLE_THREADSIGNAL ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_EXECVE ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_GETFSSTAT ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_FD ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_FILE ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_LCID ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_LCTX ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_LINK ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_MOUNT ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_PID ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_PROC ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_MOUNT ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_FD ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_FILE ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_LCTX ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_LINK ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_PROC ideal-int pkg syscall (darwin-amd64-cgo), const SYS___MAC_SYSCALL ideal-int pkg syscall (darwin-amd64-cgo), const SYS___OLD_SEMWAIT_SIGNAL ideal-int pkg syscall (darwin-amd64-cgo), const SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_CANCELED ideal-int pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_CHDIR ideal-int pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_FCHDIR ideal-int pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_KILL ideal-int pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_MARKCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_SIGMASK ideal-int pkg syscall (darwin-amd64-cgo), const SYS___SEMWAIT_SIGNAL ideal-int pkg syscall (darwin-amd64-cgo), const SYS___SEMWAIT_SIGNAL_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS___SIGWAIT ideal-int pkg syscall (darwin-amd64-cgo), const SYS___SIGWAIT_NOCANCEL ideal-int pkg syscall (darwin-amd64-cgo), const SYS___SYSCTL ideal-int pkg syscall (darwin-amd64-cgo), const S_IEXEC ideal-int pkg syscall (darwin-amd64-cgo), const S_IFWHT ideal-int pkg syscall (darwin-amd64-cgo), const S_IREAD ideal-int pkg syscall (darwin-amd64-cgo), const S_IRGRP ideal-int pkg syscall (darwin-amd64-cgo), const S_IROTH ideal-int pkg syscall (darwin-amd64-cgo), const S_IRWXG ideal-int pkg syscall (darwin-amd64-cgo), const S_IRWXO ideal-int pkg syscall (darwin-amd64-cgo), const S_IRWXU ideal-int pkg syscall (darwin-amd64-cgo), const S_ISTXT ideal-int pkg syscall (darwin-amd64-cgo), const S_IWGRP ideal-int pkg syscall (darwin-amd64-cgo), const S_IWOTH ideal-int pkg syscall (darwin-amd64-cgo), const S_IWRITE ideal-int pkg syscall (darwin-amd64-cgo), const S_IXGRP ideal-int pkg syscall (darwin-amd64-cgo), const S_IXOTH ideal-int pkg syscall (darwin-amd64-cgo), const SizeofBpfHdr ideal-int pkg syscall (darwin-amd64-cgo), const SizeofBpfInsn ideal-int pkg syscall (darwin-amd64-cgo), const SizeofBpfProgram ideal-int pkg syscall (darwin-amd64-cgo), const SizeofBpfStat ideal-int pkg syscall (darwin-amd64-cgo), const SizeofBpfVersion ideal-int pkg syscall (darwin-amd64-cgo), const SizeofCmsghdr ideal-int pkg syscall (darwin-amd64-cgo), const SizeofIPMreq ideal-int pkg syscall (darwin-amd64-cgo), const SizeofIPv6Mreq ideal-int pkg syscall (darwin-amd64-cgo), const SizeofIfData ideal-int pkg syscall (darwin-amd64-cgo), const SizeofIfMsghdr ideal-int pkg syscall (darwin-amd64-cgo), const SizeofIfaMsghdr ideal-int pkg syscall (darwin-amd64-cgo), const SizeofIfmaMsghdr ideal-int pkg syscall (darwin-amd64-cgo), const SizeofIfmaMsghdr2 ideal-int pkg syscall (darwin-amd64-cgo), const SizeofInet6Pktinfo ideal-int pkg syscall (darwin-amd64-cgo), const SizeofLinger ideal-int pkg syscall (darwin-amd64-cgo), const SizeofMsghdr ideal-int pkg syscall (darwin-amd64-cgo), const SizeofRtMetrics ideal-int pkg syscall (darwin-amd64-cgo), const SizeofRtMsghdr ideal-int pkg syscall (darwin-amd64-cgo), const SizeofSockaddrAny ideal-int pkg syscall (darwin-amd64-cgo), const SizeofSockaddrDatalink ideal-int pkg syscall (darwin-amd64-cgo), const SizeofSockaddrInet4 ideal-int pkg syscall (darwin-amd64-cgo), const SizeofSockaddrInet6 ideal-int pkg syscall (darwin-amd64-cgo), const SizeofSockaddrUnix ideal-int pkg syscall (darwin-amd64-cgo), const TCP_CONNECTIONTIMEOUT ideal-int pkg syscall (darwin-amd64-cgo), const TCP_KEEPALIVE ideal-int pkg syscall (darwin-amd64-cgo), const TCP_MAXHLEN ideal-int pkg syscall (darwin-amd64-cgo), const TCP_MAXOLEN ideal-int pkg syscall (darwin-amd64-cgo), const TCP_MAXSEG ideal-int pkg syscall (darwin-amd64-cgo), const TCP_MAXWIN ideal-int pkg syscall (darwin-amd64-cgo), const TCP_MAX_SACK ideal-int pkg syscall (darwin-amd64-cgo), const TCP_MAX_WINSHIFT ideal-int pkg syscall (darwin-amd64-cgo), const TCP_MINMSS ideal-int pkg syscall (darwin-amd64-cgo), const TCP_MINMSSOVERLOAD ideal-int pkg syscall (darwin-amd64-cgo), const TCP_MSS ideal-int pkg syscall (darwin-amd64-cgo), const TCP_NOOPT ideal-int pkg syscall (darwin-amd64-cgo), const TCP_NOPUSH ideal-int pkg syscall (darwin-amd64-cgo), const TCP_RXT_CONNDROPTIME ideal-int pkg syscall (darwin-amd64-cgo), const TCP_RXT_FINDROP ideal-int pkg syscall (darwin-amd64-cgo), const TIOCCBRK ideal-int pkg syscall (darwin-amd64-cgo), const TIOCCDTR ideal-int pkg syscall (darwin-amd64-cgo), const TIOCCONS ideal-int pkg syscall (darwin-amd64-cgo), const TIOCDCDTIMESTAMP ideal-int pkg syscall (darwin-amd64-cgo), const TIOCDRAIN ideal-int pkg syscall (darwin-amd64-cgo), const TIOCDSIMICROCODE ideal-int pkg syscall (darwin-amd64-cgo), const TIOCEXCL ideal-int pkg syscall (darwin-amd64-cgo), const TIOCEXT ideal-int pkg syscall (darwin-amd64-cgo), const TIOCFLUSH ideal-int pkg syscall (darwin-amd64-cgo), const TIOCGDRAINWAIT ideal-int pkg syscall (darwin-amd64-cgo), const TIOCGETA ideal-int pkg syscall (darwin-amd64-cgo), const TIOCGETD ideal-int pkg syscall (darwin-amd64-cgo), const TIOCGPGRP ideal-int pkg syscall (darwin-amd64-cgo), const TIOCGWINSZ ideal-int pkg syscall (darwin-amd64-cgo), const TIOCIXOFF ideal-int pkg syscall (darwin-amd64-cgo), const TIOCIXON ideal-int pkg syscall (darwin-amd64-cgo), const TIOCMBIC ideal-int pkg syscall (darwin-amd64-cgo), const TIOCMBIS ideal-int pkg syscall (darwin-amd64-cgo), const TIOCMGDTRWAIT ideal-int pkg syscall (darwin-amd64-cgo), const TIOCMGET ideal-int pkg syscall (darwin-amd64-cgo), const TIOCMODG ideal-int pkg syscall (darwin-amd64-cgo), const TIOCMODS ideal-int pkg syscall (darwin-amd64-cgo), const TIOCMSDTRWAIT ideal-int pkg syscall (darwin-amd64-cgo), const TIOCMSET ideal-int pkg syscall (darwin-amd64-cgo), const TIOCM_CAR ideal-int pkg syscall (darwin-amd64-cgo), const TIOCM_CD ideal-int pkg syscall (darwin-amd64-cgo), const TIOCM_CTS ideal-int pkg syscall (darwin-amd64-cgo), const TIOCM_DSR ideal-int pkg syscall (darwin-amd64-cgo), const TIOCM_DTR ideal-int pkg syscall (darwin-amd64-cgo), const TIOCM_LE ideal-int pkg syscall (darwin-amd64-cgo), const TIOCM_RI ideal-int pkg syscall (darwin-amd64-cgo), const TIOCM_RNG ideal-int pkg syscall (darwin-amd64-cgo), const TIOCM_RTS ideal-int pkg syscall (darwin-amd64-cgo), const TIOCM_SR ideal-int pkg syscall (darwin-amd64-cgo), const TIOCM_ST ideal-int pkg syscall (darwin-amd64-cgo), const TIOCNOTTY ideal-int pkg syscall (darwin-amd64-cgo), const TIOCNXCL ideal-int pkg syscall (darwin-amd64-cgo), const TIOCOUTQ ideal-int pkg syscall (darwin-amd64-cgo), const TIOCPKT ideal-int pkg syscall (darwin-amd64-cgo), const TIOCPKT_DATA ideal-int pkg syscall (darwin-amd64-cgo), const TIOCPKT_DOSTOP ideal-int pkg syscall (darwin-amd64-cgo), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (darwin-amd64-cgo), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (darwin-amd64-cgo), const TIOCPKT_IOCTL ideal-int pkg syscall (darwin-amd64-cgo), const TIOCPKT_NOSTOP ideal-int pkg syscall (darwin-amd64-cgo), const TIOCPKT_START ideal-int pkg syscall (darwin-amd64-cgo), const TIOCPKT_STOP ideal-int pkg syscall (darwin-amd64-cgo), const TIOCPTYGNAME ideal-int pkg syscall (darwin-amd64-cgo), const TIOCPTYGRANT ideal-int pkg syscall (darwin-amd64-cgo), const TIOCPTYUNLK ideal-int pkg syscall (darwin-amd64-cgo), const TIOCREMOTE ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSBRK ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSCONS ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSCTTY ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSDRAINWAIT ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSDTR ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSETA ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSETAF ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSETAW ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSETD ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSIG ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSPGRP ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSTART ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSTAT ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSTI ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSTOP ideal-int pkg syscall (darwin-amd64-cgo), const TIOCSWINSZ ideal-int pkg syscall (darwin-amd64-cgo), const TIOCTIMESTAMP ideal-int pkg syscall (darwin-amd64-cgo), const TIOCUCNTL ideal-int pkg syscall (darwin-amd64-cgo), const WCONTINUED ideal-int pkg syscall (darwin-amd64-cgo), const WCOREFLAG ideal-int pkg syscall (darwin-amd64-cgo), const WEXITED ideal-int pkg syscall (darwin-amd64-cgo), const WNOHANG ideal-int pkg syscall (darwin-amd64-cgo), const WNOWAIT ideal-int pkg syscall (darwin-amd64-cgo), const WORDSIZE ideal-int pkg syscall (darwin-amd64-cgo), const WSTOPPED ideal-int pkg syscall (darwin-amd64-cgo), const WUNTRACED ideal-int pkg syscall (darwin-amd64-cgo), func Accept(int) (int, Sockaddr, error) pkg syscall (darwin-amd64-cgo), func Access(string, uint32) error pkg syscall (darwin-amd64-cgo), func Adjtime(*Timeval, *Timeval) error pkg syscall (darwin-amd64-cgo), func Bind(int, Sockaddr) error pkg syscall (darwin-amd64-cgo), func BpfBuflen(int) (int, error) pkg syscall (darwin-amd64-cgo), func BpfDatalink(int) (int, error) pkg syscall (darwin-amd64-cgo), func BpfHeadercmpl(int) (int, error) pkg syscall (darwin-amd64-cgo), func BpfInterface(int, string) (string, error) pkg syscall (darwin-amd64-cgo), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (darwin-amd64-cgo), func BpfStats(int) (*BpfStat, error) pkg syscall (darwin-amd64-cgo), func BpfStmt(int, int) *BpfInsn pkg syscall (darwin-amd64-cgo), func BpfTimeout(int) (*Timeval, error) pkg syscall (darwin-amd64-cgo), func CheckBpfVersion(int) error pkg syscall (darwin-amd64-cgo), func Chflags(string, int) error pkg syscall (darwin-amd64-cgo), func Chroot(string) error pkg syscall (darwin-amd64-cgo), func Close(int) error pkg syscall (darwin-amd64-cgo), func CloseOnExec(int) pkg syscall (darwin-amd64-cgo), func CmsgLen(int) int pkg syscall (darwin-amd64-cgo), func CmsgSpace(int) int pkg syscall (darwin-amd64-cgo), func Connect(int, Sockaddr) error pkg syscall (darwin-amd64-cgo), func Dup(int) (int, error) pkg syscall (darwin-amd64-cgo), func Dup2(int, int) error pkg syscall (darwin-amd64-cgo), func Exchangedata(string, string, int) error pkg syscall (darwin-amd64-cgo), func Fchdir(int) error pkg syscall (darwin-amd64-cgo), func Fchflags(string, int) error pkg syscall (darwin-amd64-cgo), func Fchmod(int, uint32) error pkg syscall (darwin-amd64-cgo), func Fchown(int, int, int) error pkg syscall (darwin-amd64-cgo), func Flock(int, int) error pkg syscall (darwin-amd64-cgo), func FlushBpf(int) error pkg syscall (darwin-amd64-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (darwin-amd64-cgo), func Fpathconf(int, int) (int, error) pkg syscall (darwin-amd64-cgo), func Fstat(int, *Stat_t) error pkg syscall (darwin-amd64-cgo), func Fstatfs(int, *Statfs_t) error pkg syscall (darwin-amd64-cgo), func Fsync(int) error pkg syscall (darwin-amd64-cgo), func Ftruncate(int, int64) error pkg syscall (darwin-amd64-cgo), func Futimes(int, []Timeval) error pkg syscall (darwin-amd64-cgo), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (darwin-amd64-cgo), func Getdtablesize() int pkg syscall (darwin-amd64-cgo), func Getfsstat([]Statfs_t, int) (int, error) pkg syscall (darwin-amd64-cgo), func Getpeername(int) (Sockaddr, error) pkg syscall (darwin-amd64-cgo), func Getpgid(int) (int, error) pkg syscall (darwin-amd64-cgo), func Getpgrp() int pkg syscall (darwin-amd64-cgo), func Getpriority(int, int) (int, error) pkg syscall (darwin-amd64-cgo), func Getrlimit(int, *Rlimit) error pkg syscall (darwin-amd64-cgo), func Getrusage(int, *Rusage) error pkg syscall (darwin-amd64-cgo), func Getsid(int) (int, error) pkg syscall (darwin-amd64-cgo), func Getsockname(int) (Sockaddr, error) pkg syscall (darwin-amd64-cgo), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (darwin-amd64-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (darwin-amd64-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (darwin-amd64-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (darwin-amd64-cgo), func GetsockoptInt(int, int, int) (int, error) pkg syscall (darwin-amd64-cgo), func Issetugid() bool pkg syscall (darwin-amd64-cgo), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (darwin-amd64-cgo), func Kill(int, Signal) error pkg syscall (darwin-amd64-cgo), func Kqueue() (int, error) pkg syscall (darwin-amd64-cgo), func Listen(int, int) error pkg syscall (darwin-amd64-cgo), func Lstat(string, *Stat_t) error pkg syscall (darwin-amd64-cgo), func Mkfifo(string, uint32) error pkg syscall (darwin-amd64-cgo), func Mknod(string, uint32, int) error pkg syscall (darwin-amd64-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (darwin-amd64-cgo), func Munmap([]uint8) error pkg syscall (darwin-amd64-cgo), func NsecToTimespec(int64) Timespec pkg syscall (darwin-amd64-cgo), func Open(string, int, uint32) (int, error) pkg syscall (darwin-amd64-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (darwin-amd64-cgo), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (darwin-amd64-cgo), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (darwin-amd64-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (darwin-amd64-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (darwin-amd64-cgo), func Pathconf(string, int) (int, error) pkg syscall (darwin-amd64-cgo), func Pipe([]int) error pkg syscall (darwin-amd64-cgo), func Pread(int, []uint8, int64) (int, error) pkg syscall (darwin-amd64-cgo), func PtraceAttach(int) error pkg syscall (darwin-amd64-cgo), func PtraceDetach(int) error pkg syscall (darwin-amd64-cgo), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (darwin-amd64-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-amd64-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-amd64-cgo), func Read(int, []uint8) (int, error) pkg syscall (darwin-amd64-cgo), func ReadDirent(int, []uint8) (int, error) pkg syscall (darwin-amd64-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (darwin-amd64-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (darwin-amd64-cgo), func Revoke(string) error pkg syscall (darwin-amd64-cgo), func RouteRIB(int, int) ([]uint8, error) pkg syscall (darwin-amd64-cgo), func Seek(int, int64, int) (int64, error) pkg syscall (darwin-amd64-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (darwin-amd64-cgo), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (darwin-amd64-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (darwin-amd64-cgo), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (darwin-amd64-cgo), func SetBpf(int, []BpfInsn) error pkg syscall (darwin-amd64-cgo), func SetBpfBuflen(int, int) (int, error) pkg syscall (darwin-amd64-cgo), func SetBpfDatalink(int, int) (int, error) pkg syscall (darwin-amd64-cgo), func SetBpfHeadercmpl(int, int) error pkg syscall (darwin-amd64-cgo), func SetBpfImmediate(int, int) error pkg syscall (darwin-amd64-cgo), func SetBpfInterface(int, string) error pkg syscall (darwin-amd64-cgo), func SetBpfPromisc(int, int) error pkg syscall (darwin-amd64-cgo), func SetBpfTimeout(int, *Timeval) error pkg syscall (darwin-amd64-cgo), func SetKevent(*Kevent_t, int, int, int) pkg syscall (darwin-amd64-cgo), func SetNonblock(int, bool) error pkg syscall (darwin-amd64-cgo), func Setegid(int) error pkg syscall (darwin-amd64-cgo), func Seteuid(int) error pkg syscall (darwin-amd64-cgo), func Setgid(int) error pkg syscall (darwin-amd64-cgo), func Setgroups([]int) error pkg syscall (darwin-amd64-cgo), func Setlogin(string) error pkg syscall (darwin-amd64-cgo), func Setpgid(int, int) error pkg syscall (darwin-amd64-cgo), func Setpriority(int, int, int) error pkg syscall (darwin-amd64-cgo), func Setprivexec(int) error pkg syscall (darwin-amd64-cgo), func Setregid(int, int) error pkg syscall (darwin-amd64-cgo), func Setreuid(int, int) error pkg syscall (darwin-amd64-cgo), func Setrlimit(int, *Rlimit) error pkg syscall (darwin-amd64-cgo), func Setsid() (int, error) pkg syscall (darwin-amd64-cgo), func SetsockoptByte(int, int, int, uint8) error pkg syscall (darwin-amd64-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (darwin-amd64-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (darwin-amd64-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (darwin-amd64-cgo), func SetsockoptInt(int, int, int, int) error pkg syscall (darwin-amd64-cgo), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (darwin-amd64-cgo), func SetsockoptString(int, int, int, string) error pkg syscall (darwin-amd64-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (darwin-amd64-cgo), func Settimeofday(*Timeval) error pkg syscall (darwin-amd64-cgo), func Setuid(int) error pkg syscall (darwin-amd64-cgo), func Shutdown(int, int) error pkg syscall (darwin-amd64-cgo), func Socket(int, int, int) (int, error) pkg syscall (darwin-amd64-cgo), func Socketpair(int, int, int) ([2]int, error) pkg syscall (darwin-amd64-cgo), func Stat(string, *Stat_t) error pkg syscall (darwin-amd64-cgo), func Statfs(string, *Statfs_t) error pkg syscall (darwin-amd64-cgo), func StringSlicePtr([]string) []*uint8 pkg syscall (darwin-amd64-cgo), func Sync() error pkg syscall (darwin-amd64-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-amd64-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (darwin-amd64-cgo), func Sysctl(string) (string, error) pkg syscall (darwin-amd64-cgo), func SysctlUint32(string) (uint32, error) pkg syscall (darwin-amd64-cgo), func TimespecToNsec(Timespec) int64 pkg syscall (darwin-amd64-cgo), func TimevalToNsec(Timeval) int64 pkg syscall (darwin-amd64-cgo), func Truncate(string, int64) error pkg syscall (darwin-amd64-cgo), func Umask(int) int pkg syscall (darwin-amd64-cgo), func Undelete(string) error pkg syscall (darwin-amd64-cgo), func UnixRights(...int) []uint8 pkg syscall (darwin-amd64-cgo), func Unmount(string, int) error pkg syscall (darwin-amd64-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (darwin-amd64-cgo), func Write(int, []uint8) (int, error) pkg syscall (darwin-amd64-cgo), method (*Cmsghdr) SetLen(int) pkg syscall (darwin-amd64-cgo), method (*Iovec) SetLen(int) pkg syscall (darwin-amd64-cgo), method (*Msghdr) SetControllen(int) pkg syscall (darwin-amd64-cgo), type BpfHdr struct pkg syscall (darwin-amd64-cgo), type BpfHdr struct, Caplen uint32 pkg syscall (darwin-amd64-cgo), type BpfHdr struct, Datalen uint32 pkg syscall (darwin-amd64-cgo), type BpfHdr struct, Hdrlen uint16 pkg syscall (darwin-amd64-cgo), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-amd64-cgo), type BpfHdr struct, Tstamp Timeval32 pkg syscall (darwin-amd64-cgo), type BpfInsn struct pkg syscall (darwin-amd64-cgo), type BpfInsn struct, Code uint16 pkg syscall (darwin-amd64-cgo), type BpfInsn struct, Jf uint8 pkg syscall (darwin-amd64-cgo), type BpfInsn struct, Jt uint8 pkg syscall (darwin-amd64-cgo), type BpfInsn struct, K uint32 pkg syscall (darwin-amd64-cgo), type BpfProgram struct pkg syscall (darwin-amd64-cgo), type BpfProgram struct, Insns *BpfInsn pkg syscall (darwin-amd64-cgo), type BpfProgram struct, Len uint32 pkg syscall (darwin-amd64-cgo), type BpfProgram struct, Pad_cgo_0 [4]uint8 pkg syscall (darwin-amd64-cgo), type BpfStat struct pkg syscall (darwin-amd64-cgo), type BpfStat struct, Drop uint32 pkg syscall (darwin-amd64-cgo), type BpfStat struct, Recv uint32 pkg syscall (darwin-amd64-cgo), type BpfVersion struct pkg syscall (darwin-amd64-cgo), type BpfVersion struct, Major uint16 pkg syscall (darwin-amd64-cgo), type BpfVersion struct, Minor uint16 pkg syscall (darwin-amd64-cgo), type Cmsghdr struct pkg syscall (darwin-amd64-cgo), type Cmsghdr struct, Len uint32 pkg syscall (darwin-amd64-cgo), type Cmsghdr struct, Level int32 pkg syscall (darwin-amd64-cgo), type Cmsghdr struct, Type int32 pkg syscall (darwin-amd64-cgo), type Credential struct pkg syscall (darwin-amd64-cgo), type Credential struct, Gid uint32 pkg syscall (darwin-amd64-cgo), type Credential struct, Groups []uint32 pkg syscall (darwin-amd64-cgo), type Credential struct, Uid uint32 pkg syscall (darwin-amd64-cgo), type Dirent struct pkg syscall (darwin-amd64-cgo), type Dirent struct, Ino uint64 pkg syscall (darwin-amd64-cgo), type Dirent struct, Name [1024]int8 pkg syscall (darwin-amd64-cgo), type Dirent struct, Namlen uint16 pkg syscall (darwin-amd64-cgo), type Dirent struct, Pad_cgo_0 [3]uint8 pkg syscall (darwin-amd64-cgo), type Dirent struct, Reclen uint16 pkg syscall (darwin-amd64-cgo), type Dirent struct, Seekoff uint64 pkg syscall (darwin-amd64-cgo), type Dirent struct, Type uint8 pkg syscall (darwin-amd64-cgo), type Fbootstraptransfer_t struct pkg syscall (darwin-amd64-cgo), type Fbootstraptransfer_t struct, Buffer *uint8 pkg syscall (darwin-amd64-cgo), type Fbootstraptransfer_t struct, Length uint64 pkg syscall (darwin-amd64-cgo), type Fbootstraptransfer_t struct, Offset int64 pkg syscall (darwin-amd64-cgo), type FdSet struct pkg syscall (darwin-amd64-cgo), type FdSet struct, Bits [32]int32 pkg syscall (darwin-amd64-cgo), type Flock_t struct pkg syscall (darwin-amd64-cgo), type Flock_t struct, Len int64 pkg syscall (darwin-amd64-cgo), type Flock_t struct, Pid int32 pkg syscall (darwin-amd64-cgo), type Flock_t struct, Start int64 pkg syscall (darwin-amd64-cgo), type Flock_t struct, Type int16 pkg syscall (darwin-amd64-cgo), type Flock_t struct, Whence int16 pkg syscall (darwin-amd64-cgo), type Fsid struct pkg syscall (darwin-amd64-cgo), type Fsid struct, Val [2]int32 pkg syscall (darwin-amd64-cgo), type Fstore_t struct pkg syscall (darwin-amd64-cgo), type Fstore_t struct, Bytesalloc int64 pkg syscall (darwin-amd64-cgo), type Fstore_t struct, Flags uint32 pkg syscall (darwin-amd64-cgo), type Fstore_t struct, Length int64 pkg syscall (darwin-amd64-cgo), type Fstore_t struct, Offset int64 pkg syscall (darwin-amd64-cgo), type Fstore_t struct, Posmode int32 pkg syscall (darwin-amd64-cgo), type IfData struct pkg syscall (darwin-amd64-cgo), type IfData struct, Addrlen uint8 pkg syscall (darwin-amd64-cgo), type IfData struct, Baudrate uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Collisions uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Hdrlen uint8 pkg syscall (darwin-amd64-cgo), type IfData struct, Hwassist uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Ibytes uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Ierrors uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Imcasts uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Ipackets uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Iqdrops uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Lastchange Timeval32 pkg syscall (darwin-amd64-cgo), type IfData struct, Metric uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Mtu uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Noproto uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Obytes uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Oerrors uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Omcasts uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Opackets uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Physical uint8 pkg syscall (darwin-amd64-cgo), type IfData struct, Recvquota uint8 pkg syscall (darwin-amd64-cgo), type IfData struct, Recvtiming uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Reserved1 uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Reserved2 uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Type uint8 pkg syscall (darwin-amd64-cgo), type IfData struct, Typelen uint8 pkg syscall (darwin-amd64-cgo), type IfData struct, Unused1 uint8 pkg syscall (darwin-amd64-cgo), type IfData struct, Unused2 uint32 pkg syscall (darwin-amd64-cgo), type IfData struct, Xmitquota uint8 pkg syscall (darwin-amd64-cgo), type IfData struct, Xmittiming uint32 pkg syscall (darwin-amd64-cgo), type IfMsghdr struct pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Addrs int32 pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Data IfData pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Flags int32 pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Index uint16 pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Msglen uint16 pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Type uint8 pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Version uint8 pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Addrs int32 pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Flags int32 pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Index uint16 pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Metric int32 pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Msglen uint16 pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Type uint8 pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Version uint8 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct, Addrs int32 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct, Flags int32 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct, Index uint16 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct, Msglen uint16 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct, Type uint8 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct, Version uint8 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Addrs int32 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Flags int32 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Index uint16 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Msglen uint16 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Refcount int32 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Type uint8 pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Version uint8 pkg syscall (darwin-amd64-cgo), type Inet6Pktinfo struct pkg syscall (darwin-amd64-cgo), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (darwin-amd64-cgo), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (darwin-amd64-cgo), type InterfaceAddrMessage struct pkg syscall (darwin-amd64-cgo), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (darwin-amd64-cgo), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (darwin-amd64-cgo), type InterfaceMessage struct pkg syscall (darwin-amd64-cgo), type InterfaceMessage struct, Data []uint8 pkg syscall (darwin-amd64-cgo), type InterfaceMessage struct, Header IfMsghdr pkg syscall (darwin-amd64-cgo), type InterfaceMulticastAddrMessage struct pkg syscall (darwin-amd64-cgo), type InterfaceMulticastAddrMessage struct, Data []uint8 pkg syscall (darwin-amd64-cgo), type InterfaceMulticastAddrMessage struct, Header IfmaMsghdr2 pkg syscall (darwin-amd64-cgo), type Iovec struct pkg syscall (darwin-amd64-cgo), type Iovec struct, Base *uint8 pkg syscall (darwin-amd64-cgo), type Iovec struct, Len uint64 pkg syscall (darwin-amd64-cgo), type Kevent_t struct pkg syscall (darwin-amd64-cgo), type Kevent_t struct, Data int64 pkg syscall (darwin-amd64-cgo), type Kevent_t struct, Fflags uint32 pkg syscall (darwin-amd64-cgo), type Kevent_t struct, Filter int16 pkg syscall (darwin-amd64-cgo), type Kevent_t struct, Flags uint16 pkg syscall (darwin-amd64-cgo), type Kevent_t struct, Ident uint64 pkg syscall (darwin-amd64-cgo), type Kevent_t struct, Udata *uint8 pkg syscall (darwin-amd64-cgo), type Log2phys_t struct pkg syscall (darwin-amd64-cgo), type Log2phys_t struct, Contigbytes int64 pkg syscall (darwin-amd64-cgo), type Log2phys_t struct, Devoffset int64 pkg syscall (darwin-amd64-cgo), type Log2phys_t struct, Flags uint32 pkg syscall (darwin-amd64-cgo), type Msghdr struct pkg syscall (darwin-amd64-cgo), type Msghdr struct, Control *uint8 pkg syscall (darwin-amd64-cgo), type Msghdr struct, Controllen uint32 pkg syscall (darwin-amd64-cgo), type Msghdr struct, Flags int32 pkg syscall (darwin-amd64-cgo), type Msghdr struct, Iov *Iovec pkg syscall (darwin-amd64-cgo), type Msghdr struct, Iovlen int32 pkg syscall (darwin-amd64-cgo), type Msghdr struct, Name *uint8 pkg syscall (darwin-amd64-cgo), type Msghdr struct, Namelen uint32 pkg syscall (darwin-amd64-cgo), type Msghdr struct, Pad_cgo_0 [4]uint8 pkg syscall (darwin-amd64-cgo), type Msghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (darwin-amd64-cgo), type Radvisory_t struct pkg syscall (darwin-amd64-cgo), type Radvisory_t struct, Count int32 pkg syscall (darwin-amd64-cgo), type Radvisory_t struct, Offset int64 pkg syscall (darwin-amd64-cgo), type Radvisory_t struct, Pad_cgo_0 [4]uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddr struct, Data [14]int8 pkg syscall (darwin-amd64-cgo), type RawSockaddr struct, Family uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddr struct, Len uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Data [12]int8 pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Family uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Index uint16 pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Len uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Type uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddrInet4 struct, Family uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddrInet4 struct, Len uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (darwin-amd64-cgo), type RawSockaddrInet6 struct pkg syscall (darwin-amd64-cgo), type RawSockaddrInet6 struct, Addr [16]uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddrInet6 struct, Family uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddrInet6 struct, Flowinfo uint32 pkg syscall (darwin-amd64-cgo), type RawSockaddrInet6 struct, Len uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddrInet6 struct, Port uint16 pkg syscall (darwin-amd64-cgo), type RawSockaddrInet6 struct, Scope_id uint32 pkg syscall (darwin-amd64-cgo), type RawSockaddrUnix struct pkg syscall (darwin-amd64-cgo), type RawSockaddrUnix struct, Family uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddrUnix struct, Len uint8 pkg syscall (darwin-amd64-cgo), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (darwin-amd64-cgo), type Rlimit struct pkg syscall (darwin-amd64-cgo), type Rlimit struct, Cur uint64 pkg syscall (darwin-amd64-cgo), type Rlimit struct, Max uint64 pkg syscall (darwin-amd64-cgo), type RouteMessage struct pkg syscall (darwin-amd64-cgo), type RouteMessage struct, Data []uint8 pkg syscall (darwin-amd64-cgo), type RouteMessage struct, Header RtMsghdr pkg syscall (darwin-amd64-cgo), type RoutingMessage interface, unexported methods pkg syscall (darwin-amd64-cgo), type RtMetrics struct pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Expire int32 pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Filler [4]uint32 pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Hopcount uint32 pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Locks uint32 pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Mtu uint32 pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Pksent uint32 pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Recvpipe uint32 pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Rtt uint32 pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Rttvar uint32 pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Sendpipe uint32 pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Ssthresh uint32 pkg syscall (darwin-amd64-cgo), type RtMsghdr struct pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Addrs int32 pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Errno int32 pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Flags int32 pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Index uint16 pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Inits uint32 pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Msglen uint16 pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Pid int32 pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Rmx RtMetrics pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Seq int32 pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Type uint8 pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Use int32 pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Version uint8 pkg syscall (darwin-amd64-cgo), type Rusage struct, Idrss int64 pkg syscall (darwin-amd64-cgo), type Rusage struct, Inblock int64 pkg syscall (darwin-amd64-cgo), type Rusage struct, Isrss int64 pkg syscall (darwin-amd64-cgo), type Rusage struct, Ixrss int64 pkg syscall (darwin-amd64-cgo), type Rusage struct, Majflt int64 pkg syscall (darwin-amd64-cgo), type Rusage struct, Maxrss int64 pkg syscall (darwin-amd64-cgo), type Rusage struct, Minflt int64 pkg syscall (darwin-amd64-cgo), type Rusage struct, Msgrcv int64 pkg syscall (darwin-amd64-cgo), type Rusage struct, Msgsnd int64 pkg syscall (darwin-amd64-cgo), type Rusage struct, Nivcsw int64 pkg syscall (darwin-amd64-cgo), type Rusage struct, Nsignals int64 pkg syscall (darwin-amd64-cgo), type Rusage struct, Nswap int64 pkg syscall (darwin-amd64-cgo), type Rusage struct, Nvcsw int64 pkg syscall (darwin-amd64-cgo), type Rusage struct, Oublock int64 pkg syscall (darwin-amd64-cgo), type Rusage struct, Stime Timeval pkg syscall (darwin-amd64-cgo), type Rusage struct, Utime Timeval pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Alen uint8 pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Data [12]int8 pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Family uint8 pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Index uint16 pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Len uint8 pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Nlen uint8 pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Slen uint8 pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Type uint8 pkg syscall (darwin-amd64-cgo), type SocketControlMessage struct pkg syscall (darwin-amd64-cgo), type SocketControlMessage struct, Data []uint8 pkg syscall (darwin-amd64-cgo), type SocketControlMessage struct, Header Cmsghdr pkg syscall (darwin-amd64-cgo), type Stat_t struct pkg syscall (darwin-amd64-cgo), type Stat_t struct, Atimespec Timespec pkg syscall (darwin-amd64-cgo), type Stat_t struct, Birthtimespec Timespec pkg syscall (darwin-amd64-cgo), type Stat_t struct, Blksize int32 pkg syscall (darwin-amd64-cgo), type Stat_t struct, Blocks int64 pkg syscall (darwin-amd64-cgo), type Stat_t struct, Ctimespec Timespec pkg syscall (darwin-amd64-cgo), type Stat_t struct, Dev int32 pkg syscall (darwin-amd64-cgo), type Stat_t struct, Flags uint32 pkg syscall (darwin-amd64-cgo), type Stat_t struct, Gen uint32 pkg syscall (darwin-amd64-cgo), type Stat_t struct, Gid uint32 pkg syscall (darwin-amd64-cgo), type Stat_t struct, Ino uint64 pkg syscall (darwin-amd64-cgo), type Stat_t struct, Lspare int32 pkg syscall (darwin-amd64-cgo), type Stat_t struct, Mode uint16 pkg syscall (darwin-amd64-cgo), type Stat_t struct, Mtimespec Timespec pkg syscall (darwin-amd64-cgo), type Stat_t struct, Nlink uint16 pkg syscall (darwin-amd64-cgo), type Stat_t struct, Pad_cgo_0 [4]uint8 pkg syscall (darwin-amd64-cgo), type Stat_t struct, Qspare [2]int64 pkg syscall (darwin-amd64-cgo), type Stat_t struct, Rdev int32 pkg syscall (darwin-amd64-cgo), type Stat_t struct, Size int64 pkg syscall (darwin-amd64-cgo), type Stat_t struct, Uid uint32 pkg syscall (darwin-amd64-cgo), type Statfs_t struct pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Bavail uint64 pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Bfree uint64 pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Blocks uint64 pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Bsize uint32 pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Ffree uint64 pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Files uint64 pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Flags uint32 pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Fsid Fsid pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Fssubtype uint32 pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Fstypename [16]int8 pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Iosize int32 pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Mntfromname [1024]int8 pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Mntonname [1024]int8 pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Owner uint32 pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Reserved [8]uint32 pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Type uint32 pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Chroot string pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Credential *Credential pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Noctty bool pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Ptrace bool pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Setctty bool pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Setpgid bool pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Setsid bool pkg syscall (darwin-amd64-cgo), type Timespec struct, Nsec int64 pkg syscall (darwin-amd64-cgo), type Timespec struct, Sec int64 pkg syscall (darwin-amd64-cgo), type Timeval struct, Pad_cgo_0 [4]uint8 pkg syscall (darwin-amd64-cgo), type Timeval struct, Sec int64 pkg syscall (darwin-amd64-cgo), type Timeval struct, Usec int32 pkg syscall (darwin-amd64-cgo), type Timeval32 struct pkg syscall (darwin-amd64-cgo), type Timeval32 struct, Sec int32 pkg syscall (darwin-amd64-cgo), type Timeval32 struct, Usec int32 pkg syscall (darwin-amd64-cgo), type WaitStatus uint32 pkg syscall (darwin-amd64-cgo), var Stderr int pkg syscall (darwin-amd64-cgo), var Stdin int pkg syscall (darwin-amd64-cgo), var Stdout int pkg syscall (freebsd-386), const AF_APPLETALK ideal-int pkg syscall (freebsd-386), const AF_ARP ideal-int pkg syscall (freebsd-386), const AF_ATM ideal-int pkg syscall (freebsd-386), const AF_BLUETOOTH ideal-int pkg syscall (freebsd-386), const AF_CCITT ideal-int pkg syscall (freebsd-386), const AF_CHAOS ideal-int pkg syscall (freebsd-386), const AF_CNT ideal-int pkg syscall (freebsd-386), const AF_COIP ideal-int pkg syscall (freebsd-386), const AF_DATAKIT ideal-int pkg syscall (freebsd-386), const AF_DECnet ideal-int pkg syscall (freebsd-386), const AF_DLI ideal-int pkg syscall (freebsd-386), const AF_E164 ideal-int pkg syscall (freebsd-386), const AF_ECMA ideal-int pkg syscall (freebsd-386), const AF_HYLINK ideal-int pkg syscall (freebsd-386), const AF_IEEE80211 ideal-int pkg syscall (freebsd-386), const AF_IMPLINK ideal-int pkg syscall (freebsd-386), const AF_IPX ideal-int pkg syscall (freebsd-386), const AF_ISDN ideal-int pkg syscall (freebsd-386), const AF_ISO ideal-int pkg syscall (freebsd-386), const AF_LAT ideal-int pkg syscall (freebsd-386), const AF_LINK ideal-int pkg syscall (freebsd-386), const AF_LOCAL ideal-int pkg syscall (freebsd-386), const AF_MAX ideal-int pkg syscall (freebsd-386), const AF_NATM ideal-int pkg syscall (freebsd-386), const AF_NETBIOS ideal-int pkg syscall (freebsd-386), const AF_NETGRAPH ideal-int pkg syscall (freebsd-386), const AF_OSI ideal-int pkg syscall (freebsd-386), const AF_PUP ideal-int pkg syscall (freebsd-386), const AF_ROUTE ideal-int pkg syscall (freebsd-386), const AF_SCLUSTER ideal-int pkg syscall (freebsd-386), const AF_SIP ideal-int pkg syscall (freebsd-386), const AF_SLOW ideal-int pkg syscall (freebsd-386), const AF_SNA ideal-int pkg syscall (freebsd-386), const AF_VENDOR00 ideal-int pkg syscall (freebsd-386), const AF_VENDOR01 ideal-int pkg syscall (freebsd-386), const AF_VENDOR02 ideal-int pkg syscall (freebsd-386), const AF_VENDOR03 ideal-int pkg syscall (freebsd-386), const AF_VENDOR04 ideal-int pkg syscall (freebsd-386), const AF_VENDOR05 ideal-int pkg syscall (freebsd-386), const AF_VENDOR06 ideal-int pkg syscall (freebsd-386), const AF_VENDOR07 ideal-int pkg syscall (freebsd-386), const AF_VENDOR08 ideal-int pkg syscall (freebsd-386), const AF_VENDOR09 ideal-int pkg syscall (freebsd-386), const AF_VENDOR10 ideal-int pkg syscall (freebsd-386), const AF_VENDOR11 ideal-int pkg syscall (freebsd-386), const AF_VENDOR12 ideal-int pkg syscall (freebsd-386), const AF_VENDOR13 ideal-int pkg syscall (freebsd-386), const AF_VENDOR14 ideal-int pkg syscall (freebsd-386), const AF_VENDOR15 ideal-int pkg syscall (freebsd-386), const AF_VENDOR16 ideal-int pkg syscall (freebsd-386), const AF_VENDOR17 ideal-int pkg syscall (freebsd-386), const AF_VENDOR18 ideal-int pkg syscall (freebsd-386), const AF_VENDOR19 ideal-int pkg syscall (freebsd-386), const AF_VENDOR20 ideal-int pkg syscall (freebsd-386), const AF_VENDOR21 ideal-int pkg syscall (freebsd-386), const AF_VENDOR22 ideal-int pkg syscall (freebsd-386), const AF_VENDOR23 ideal-int pkg syscall (freebsd-386), const AF_VENDOR24 ideal-int pkg syscall (freebsd-386), const AF_VENDOR25 ideal-int pkg syscall (freebsd-386), const AF_VENDOR26 ideal-int pkg syscall (freebsd-386), const AF_VENDOR27 ideal-int pkg syscall (freebsd-386), const AF_VENDOR28 ideal-int pkg syscall (freebsd-386), const AF_VENDOR29 ideal-int pkg syscall (freebsd-386), const AF_VENDOR30 ideal-int pkg syscall (freebsd-386), const AF_VENDOR31 ideal-int pkg syscall (freebsd-386), const AF_VENDOR32 ideal-int pkg syscall (freebsd-386), const AF_VENDOR33 ideal-int pkg syscall (freebsd-386), const AF_VENDOR34 ideal-int pkg syscall (freebsd-386), const AF_VENDOR35 ideal-int pkg syscall (freebsd-386), const AF_VENDOR36 ideal-int pkg syscall (freebsd-386), const AF_VENDOR37 ideal-int pkg syscall (freebsd-386), const AF_VENDOR38 ideal-int pkg syscall (freebsd-386), const AF_VENDOR39 ideal-int pkg syscall (freebsd-386), const AF_VENDOR40 ideal-int pkg syscall (freebsd-386), const AF_VENDOR41 ideal-int pkg syscall (freebsd-386), const AF_VENDOR42 ideal-int pkg syscall (freebsd-386), const AF_VENDOR43 ideal-int pkg syscall (freebsd-386), const AF_VENDOR44 ideal-int pkg syscall (freebsd-386), const AF_VENDOR45 ideal-int pkg syscall (freebsd-386), const AF_VENDOR46 ideal-int pkg syscall (freebsd-386), const AF_VENDOR47 ideal-int pkg syscall (freebsd-386), const BIOCFEEDBACK ideal-int pkg syscall (freebsd-386), const BIOCFLUSH ideal-int pkg syscall (freebsd-386), const BIOCGBLEN ideal-int pkg syscall (freebsd-386), const BIOCGDIRECTION ideal-int pkg syscall (freebsd-386), const BIOCGDLT ideal-int pkg syscall (freebsd-386), const BIOCGDLTLIST ideal-int pkg syscall (freebsd-386), const BIOCGETBUFMODE ideal-int pkg syscall (freebsd-386), const BIOCGETIF ideal-int pkg syscall (freebsd-386), const BIOCGETZMAX ideal-int pkg syscall (freebsd-386), const BIOCGHDRCMPLT ideal-int pkg syscall (freebsd-386), const BIOCGRSIG ideal-int pkg syscall (freebsd-386), const BIOCGRTIMEOUT ideal-int pkg syscall (freebsd-386), const BIOCGSEESENT ideal-int pkg syscall (freebsd-386), const BIOCGSTATS ideal-int pkg syscall (freebsd-386), const BIOCIMMEDIATE ideal-int pkg syscall (freebsd-386), const BIOCLOCK ideal-int pkg syscall (freebsd-386), const BIOCPROMISC ideal-int pkg syscall (freebsd-386), const BIOCROTZBUF ideal-int pkg syscall (freebsd-386), const BIOCSBLEN ideal-int pkg syscall (freebsd-386), const BIOCSDIRECTION ideal-int pkg syscall (freebsd-386), const BIOCSDLT ideal-int pkg syscall (freebsd-386), const BIOCSETBUFMODE ideal-int pkg syscall (freebsd-386), const BIOCSETF ideal-int pkg syscall (freebsd-386), const BIOCSETFNR ideal-int pkg syscall (freebsd-386), const BIOCSETIF ideal-int pkg syscall (freebsd-386), const BIOCSETWF ideal-int pkg syscall (freebsd-386), const BIOCSETZBUF ideal-int pkg syscall (freebsd-386), const BIOCSHDRCMPLT ideal-int pkg syscall (freebsd-386), const BIOCSRSIG ideal-int pkg syscall (freebsd-386), const BIOCSRTIMEOUT ideal-int pkg syscall (freebsd-386), const BIOCSSEESENT ideal-int pkg syscall (freebsd-386), const BIOCVERSION ideal-int pkg syscall (freebsd-386), const BPF_A ideal-int pkg syscall (freebsd-386), const BPF_ABS ideal-int pkg syscall (freebsd-386), const BPF_ADD ideal-int pkg syscall (freebsd-386), const BPF_ALIGNMENT ideal-int pkg syscall (freebsd-386), const BPF_ALU ideal-int pkg syscall (freebsd-386), const BPF_AND ideal-int pkg syscall (freebsd-386), const BPF_B ideal-int pkg syscall (freebsd-386), const BPF_BUFMODE_BUFFER ideal-int pkg syscall (freebsd-386), const BPF_BUFMODE_ZBUF ideal-int pkg syscall (freebsd-386), const BPF_DIV ideal-int pkg syscall (freebsd-386), const BPF_H ideal-int pkg syscall (freebsd-386), const BPF_IMM ideal-int pkg syscall (freebsd-386), const BPF_IND ideal-int pkg syscall (freebsd-386), const BPF_JA ideal-int pkg syscall (freebsd-386), const BPF_JEQ ideal-int pkg syscall (freebsd-386), const BPF_JGE ideal-int pkg syscall (freebsd-386), const BPF_JGT ideal-int pkg syscall (freebsd-386), const BPF_JMP ideal-int pkg syscall (freebsd-386), const BPF_JSET ideal-int pkg syscall (freebsd-386), const BPF_K ideal-int pkg syscall (freebsd-386), const BPF_LD ideal-int pkg syscall (freebsd-386), const BPF_LDX ideal-int pkg syscall (freebsd-386), const BPF_LEN ideal-int pkg syscall (freebsd-386), const BPF_LSH ideal-int pkg syscall (freebsd-386), const BPF_MAJOR_VERSION ideal-int pkg syscall (freebsd-386), const BPF_MAXBUFSIZE ideal-int pkg syscall (freebsd-386), const BPF_MAXINSNS ideal-int pkg syscall (freebsd-386), const BPF_MEM ideal-int pkg syscall (freebsd-386), const BPF_MEMWORDS ideal-int pkg syscall (freebsd-386), const BPF_MINBUFSIZE ideal-int pkg syscall (freebsd-386), const BPF_MINOR_VERSION ideal-int pkg syscall (freebsd-386), const BPF_MISC ideal-int pkg syscall (freebsd-386), const BPF_MSH ideal-int pkg syscall (freebsd-386), const BPF_MUL ideal-int pkg syscall (freebsd-386), const BPF_NEG ideal-int pkg syscall (freebsd-386), const BPF_OR ideal-int pkg syscall (freebsd-386), const BPF_RELEASE ideal-int pkg syscall (freebsd-386), const BPF_RET ideal-int pkg syscall (freebsd-386), const BPF_RSH ideal-int pkg syscall (freebsd-386), const BPF_ST ideal-int pkg syscall (freebsd-386), const BPF_STX ideal-int pkg syscall (freebsd-386), const BPF_SUB ideal-int pkg syscall (freebsd-386), const BPF_TAX ideal-int pkg syscall (freebsd-386), const BPF_TXA ideal-int pkg syscall (freebsd-386), const BPF_W ideal-int pkg syscall (freebsd-386), const BPF_X ideal-int pkg syscall (freebsd-386), const CTL_MAXNAME ideal-int pkg syscall (freebsd-386), const CTL_NET ideal-int pkg syscall (freebsd-386), const DLT_A429 ideal-int pkg syscall (freebsd-386), const DLT_A653_ICM ideal-int pkg syscall (freebsd-386), const DLT_AIRONET_HEADER ideal-int pkg syscall (freebsd-386), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (freebsd-386), const DLT_ARCNET ideal-int pkg syscall (freebsd-386), const DLT_ARCNET_LINUX ideal-int pkg syscall (freebsd-386), const DLT_ATM_CLIP ideal-int pkg syscall (freebsd-386), const DLT_ATM_RFC1483 ideal-int pkg syscall (freebsd-386), const DLT_AURORA ideal-int pkg syscall (freebsd-386), const DLT_AX25 ideal-int pkg syscall (freebsd-386), const DLT_AX25_KISS ideal-int pkg syscall (freebsd-386), const DLT_BACNET_MS_TP ideal-int pkg syscall (freebsd-386), const DLT_BLUETOOTH_HCI_H4 ideal-int pkg syscall (freebsd-386), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int pkg syscall (freebsd-386), const DLT_CAN20B ideal-int pkg syscall (freebsd-386), const DLT_CHAOS ideal-int pkg syscall (freebsd-386), const DLT_CHDLC ideal-int pkg syscall (freebsd-386), const DLT_CISCO_IOS ideal-int pkg syscall (freebsd-386), const DLT_C_HDLC ideal-int pkg syscall (freebsd-386), const DLT_C_HDLC_WITH_DIR ideal-int pkg syscall (freebsd-386), const DLT_DOCSIS ideal-int pkg syscall (freebsd-386), const DLT_ECONET ideal-int pkg syscall (freebsd-386), const DLT_EN10MB ideal-int pkg syscall (freebsd-386), const DLT_EN3MB ideal-int pkg syscall (freebsd-386), const DLT_ENC ideal-int pkg syscall (freebsd-386), const DLT_ERF ideal-int pkg syscall (freebsd-386), const DLT_ERF_ETH ideal-int pkg syscall (freebsd-386), const DLT_ERF_POS ideal-int pkg syscall (freebsd-386), const DLT_FDDI ideal-int pkg syscall (freebsd-386), const DLT_FLEXRAY ideal-int pkg syscall (freebsd-386), const DLT_FRELAY ideal-int pkg syscall (freebsd-386), const DLT_FRELAY_WITH_DIR ideal-int pkg syscall (freebsd-386), const DLT_GCOM_SERIAL ideal-int pkg syscall (freebsd-386), const DLT_GCOM_T1E1 ideal-int pkg syscall (freebsd-386), const DLT_GPF_F ideal-int pkg syscall (freebsd-386), const DLT_GPF_T ideal-int pkg syscall (freebsd-386), const DLT_GPRS_LLC ideal-int pkg syscall (freebsd-386), const DLT_HHDLC ideal-int pkg syscall (freebsd-386), const DLT_IBM_SN ideal-int pkg syscall (freebsd-386), const DLT_IBM_SP ideal-int pkg syscall (freebsd-386), const DLT_IEEE802 ideal-int pkg syscall (freebsd-386), const DLT_IEEE802_11 ideal-int pkg syscall (freebsd-386), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (freebsd-386), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (freebsd-386), const DLT_IEEE802_15_4 ideal-int pkg syscall (freebsd-386), const DLT_IEEE802_15_4_LINUX ideal-int pkg syscall (freebsd-386), const DLT_IEEE802_15_4_NONASK_PHY ideal-int pkg syscall (freebsd-386), const DLT_IEEE802_16_MAC_CPS ideal-int pkg syscall (freebsd-386), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int pkg syscall (freebsd-386), const DLT_IPFILTER ideal-int pkg syscall (freebsd-386), const DLT_IPMB ideal-int pkg syscall (freebsd-386), const DLT_IPMB_LINUX ideal-int pkg syscall (freebsd-386), const DLT_IP_OVER_FC ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_ATM1 ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_ATM2 ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_CHDLC ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_ES ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_ETHER ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_FRELAY ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_GGSN ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_ISM ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_MFR ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_MLFR ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_MLPPP ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_MONITOR ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_PIC_PEER ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_PPP ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_PPPOE ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_PPPOE_ATM ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_SERVICES ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_ST ideal-int pkg syscall (freebsd-386), const DLT_JUNIPER_VP ideal-int pkg syscall (freebsd-386), const DLT_LAPB_WITH_DIR ideal-int pkg syscall (freebsd-386), const DLT_LAPD ideal-int pkg syscall (freebsd-386), const DLT_LIN ideal-int pkg syscall (freebsd-386), const DLT_LINUX_IRDA ideal-int pkg syscall (freebsd-386), const DLT_LINUX_LAPD ideal-int pkg syscall (freebsd-386), const DLT_LINUX_PPP_WITHDIRECTION ideal-int pkg syscall (freebsd-386), const DLT_LINUX_SLL ideal-int pkg syscall (freebsd-386), const DLT_LOOP ideal-int pkg syscall (freebsd-386), const DLT_LTALK ideal-int pkg syscall (freebsd-386), const DLT_MFR ideal-int pkg syscall (freebsd-386), const DLT_MOST ideal-int pkg syscall (freebsd-386), const DLT_MTP2 ideal-int pkg syscall (freebsd-386), const DLT_MTP2_WITH_PHDR ideal-int pkg syscall (freebsd-386), const DLT_MTP3 ideal-int pkg syscall (freebsd-386), const DLT_NULL ideal-int pkg syscall (freebsd-386), const DLT_PCI_EXP ideal-int pkg syscall (freebsd-386), const DLT_PFLOG ideal-int pkg syscall (freebsd-386), const DLT_PFSYNC ideal-int pkg syscall (freebsd-386), const DLT_PPI ideal-int pkg syscall (freebsd-386), const DLT_PPP ideal-int pkg syscall (freebsd-386), const DLT_PPP_BSDOS ideal-int pkg syscall (freebsd-386), const DLT_PPP_ETHER ideal-int pkg syscall (freebsd-386), const DLT_PPP_PPPD ideal-int pkg syscall (freebsd-386), const DLT_PPP_SERIAL ideal-int pkg syscall (freebsd-386), const DLT_PPP_WITH_DIR ideal-int pkg syscall (freebsd-386), const DLT_PPP_WITH_DIRECTION ideal-int pkg syscall (freebsd-386), const DLT_PRISM_HEADER ideal-int pkg syscall (freebsd-386), const DLT_PRONET ideal-int pkg syscall (freebsd-386), const DLT_RAIF1 ideal-int pkg syscall (freebsd-386), const DLT_RAW ideal-int pkg syscall (freebsd-386), const DLT_RIO ideal-int pkg syscall (freebsd-386), const DLT_SCCP ideal-int pkg syscall (freebsd-386), const DLT_SITA ideal-int pkg syscall (freebsd-386), const DLT_SLIP ideal-int pkg syscall (freebsd-386), const DLT_SLIP_BSDOS ideal-int pkg syscall (freebsd-386), const DLT_SUNATM ideal-int pkg syscall (freebsd-386), const DLT_SYMANTEC_FIREWALL ideal-int pkg syscall (freebsd-386), const DLT_TZSP ideal-int pkg syscall (freebsd-386), const DLT_USB ideal-int pkg syscall (freebsd-386), const DLT_USB_LINUX ideal-int pkg syscall (freebsd-386), const DLT_USER0 ideal-int pkg syscall (freebsd-386), const DLT_USER1 ideal-int pkg syscall (freebsd-386), const DLT_USER10 ideal-int pkg syscall (freebsd-386), const DLT_USER11 ideal-int pkg syscall (freebsd-386), const DLT_USER12 ideal-int pkg syscall (freebsd-386), const DLT_USER13 ideal-int pkg syscall (freebsd-386), const DLT_USER14 ideal-int pkg syscall (freebsd-386), const DLT_USER15 ideal-int pkg syscall (freebsd-386), const DLT_USER2 ideal-int pkg syscall (freebsd-386), const DLT_USER3 ideal-int pkg syscall (freebsd-386), const DLT_USER4 ideal-int pkg syscall (freebsd-386), const DLT_USER5 ideal-int pkg syscall (freebsd-386), const DLT_USER6 ideal-int pkg syscall (freebsd-386), const DLT_USER7 ideal-int pkg syscall (freebsd-386), const DLT_USER8 ideal-int pkg syscall (freebsd-386), const DLT_USER9 ideal-int pkg syscall (freebsd-386), const DLT_X2E_SERIAL ideal-int pkg syscall (freebsd-386), const DLT_X2E_XORAYA ideal-int pkg syscall (freebsd-386), const DT_BLK ideal-int pkg syscall (freebsd-386), const DT_CHR ideal-int pkg syscall (freebsd-386), const DT_DIR ideal-int pkg syscall (freebsd-386), const DT_FIFO ideal-int pkg syscall (freebsd-386), const DT_LNK ideal-int pkg syscall (freebsd-386), const DT_REG ideal-int pkg syscall (freebsd-386), const DT_SOCK ideal-int pkg syscall (freebsd-386), const DT_UNKNOWN ideal-int pkg syscall (freebsd-386), const DT_WHT ideal-int pkg syscall (freebsd-386), const EAUTH Errno pkg syscall (freebsd-386), const EBADMSG Errno pkg syscall (freebsd-386), const EBADRPC Errno pkg syscall (freebsd-386), const ECHO ideal-int pkg syscall (freebsd-386), const ECHOCTL ideal-int pkg syscall (freebsd-386), const ECHOE ideal-int pkg syscall (freebsd-386), const ECHOK ideal-int pkg syscall (freebsd-386), const ECHOKE ideal-int pkg syscall (freebsd-386), const ECHONL ideal-int pkg syscall (freebsd-386), const ECHOPRT ideal-int pkg syscall (freebsd-386), const EDOOFUS Errno pkg syscall (freebsd-386), const EFTYPE Errno pkg syscall (freebsd-386), const ELAST Errno pkg syscall (freebsd-386), const EMULTIHOP Errno pkg syscall (freebsd-386), const ENEEDAUTH Errno pkg syscall (freebsd-386), const ENOATTR Errno pkg syscall (freebsd-386), const ENOLINK Errno pkg syscall (freebsd-386), const ENOTCAPABLE Errno pkg syscall (freebsd-386), const EPROCLIM Errno pkg syscall (freebsd-386), const EPROCUNAVAIL Errno pkg syscall (freebsd-386), const EPROGMISMATCH Errno pkg syscall (freebsd-386), const EPROGUNAVAIL Errno pkg syscall (freebsd-386), const EPROTO Errno pkg syscall (freebsd-386), const ERPCMISMATCH Errno pkg syscall (freebsd-386), const EVFILT_AIO ideal-int pkg syscall (freebsd-386), const EVFILT_FS ideal-int pkg syscall (freebsd-386), const EVFILT_LIO ideal-int pkg syscall (freebsd-386), const EVFILT_PROC ideal-int pkg syscall (freebsd-386), const EVFILT_READ ideal-int pkg syscall (freebsd-386), const EVFILT_SIGNAL ideal-int pkg syscall (freebsd-386), const EVFILT_SYSCOUNT ideal-int pkg syscall (freebsd-386), const EVFILT_TIMER ideal-int pkg syscall (freebsd-386), const EVFILT_USER ideal-int pkg syscall (freebsd-386), const EVFILT_VNODE ideal-int pkg syscall (freebsd-386), const EVFILT_WRITE ideal-int pkg syscall (freebsd-386), const EV_ADD ideal-int pkg syscall (freebsd-386), const EV_CLEAR ideal-int pkg syscall (freebsd-386), const EV_DELETE ideal-int pkg syscall (freebsd-386), const EV_DISABLE ideal-int pkg syscall (freebsd-386), const EV_DISPATCH ideal-int pkg syscall (freebsd-386), const EV_ENABLE ideal-int pkg syscall (freebsd-386), const EV_EOF ideal-int pkg syscall (freebsd-386), const EV_ERROR ideal-int pkg syscall (freebsd-386), const EV_FLAG1 ideal-int pkg syscall (freebsd-386), const EV_ONESHOT ideal-int pkg syscall (freebsd-386), const EV_RECEIPT ideal-int pkg syscall (freebsd-386), const EV_SYSFLAGS ideal-int pkg syscall (freebsd-386), const EXTA ideal-int pkg syscall (freebsd-386), const EXTB ideal-int pkg syscall (freebsd-386), const EXTPROC ideal-int pkg syscall (freebsd-386), const FD_CLOEXEC ideal-int pkg syscall (freebsd-386), const FD_SETSIZE ideal-int pkg syscall (freebsd-386), const F_CANCEL ideal-int pkg syscall (freebsd-386), const F_DUP2FD ideal-int pkg syscall (freebsd-386), const F_DUPFD ideal-int pkg syscall (freebsd-386), const F_GETFD ideal-int pkg syscall (freebsd-386), const F_GETFL ideal-int pkg syscall (freebsd-386), const F_GETLK ideal-int pkg syscall (freebsd-386), const F_GETOWN ideal-int pkg syscall (freebsd-386), const F_OGETLK ideal-int pkg syscall (freebsd-386), const F_OK ideal-int pkg syscall (freebsd-386), const F_OSETLK ideal-int pkg syscall (freebsd-386), const F_OSETLKW ideal-int pkg syscall (freebsd-386), const F_RDAHEAD ideal-int pkg syscall (freebsd-386), const F_RDLCK ideal-int pkg syscall (freebsd-386), const F_READAHEAD ideal-int pkg syscall (freebsd-386), const F_SETFD ideal-int pkg syscall (freebsd-386), const F_SETFL ideal-int pkg syscall (freebsd-386), const F_SETLK ideal-int pkg syscall (freebsd-386), const F_SETLKW ideal-int pkg syscall (freebsd-386), const F_SETLK_REMOTE ideal-int pkg syscall (freebsd-386), const F_SETOWN ideal-int pkg syscall (freebsd-386), const F_UNLCK ideal-int pkg syscall (freebsd-386), const F_UNLCKSYS ideal-int pkg syscall (freebsd-386), const F_WRLCK ideal-int pkg syscall (freebsd-386), const IFF_ALLMULTI ideal-int pkg syscall (freebsd-386), const IFF_ALTPHYS ideal-int pkg syscall (freebsd-386), const IFF_CANTCHANGE ideal-int pkg syscall (freebsd-386), const IFF_DEBUG ideal-int pkg syscall (freebsd-386), const IFF_DRV_OACTIVE ideal-int pkg syscall (freebsd-386), const IFF_DRV_RUNNING ideal-int pkg syscall (freebsd-386), const IFF_DYING ideal-int pkg syscall (freebsd-386), const IFF_LINK0 ideal-int pkg syscall (freebsd-386), const IFF_LINK1 ideal-int pkg syscall (freebsd-386), const IFF_LINK2 ideal-int pkg syscall (freebsd-386), const IFF_MONITOR ideal-int pkg syscall (freebsd-386), const IFF_NOARP ideal-int pkg syscall (freebsd-386), const IFF_OACTIVE ideal-int pkg syscall (freebsd-386), const IFF_POINTOPOINT ideal-int pkg syscall (freebsd-386), const IFF_PPROMISC ideal-int pkg syscall (freebsd-386), const IFF_PROMISC ideal-int pkg syscall (freebsd-386), const IFF_RENAMING ideal-int pkg syscall (freebsd-386), const IFF_RUNNING ideal-int pkg syscall (freebsd-386), const IFF_SIMPLEX ideal-int pkg syscall (freebsd-386), const IFF_SMART ideal-int pkg syscall (freebsd-386), const IFF_STATICARP ideal-int pkg syscall (freebsd-386), const IFNAMSIZ ideal-int pkg syscall (freebsd-386), const IFT_1822 ideal-int pkg syscall (freebsd-386), const IFT_A12MPPSWITCH ideal-int pkg syscall (freebsd-386), const IFT_AAL2 ideal-int pkg syscall (freebsd-386), const IFT_AAL5 ideal-int pkg syscall (freebsd-386), const IFT_ADSL ideal-int pkg syscall (freebsd-386), const IFT_AFLANE8023 ideal-int pkg syscall (freebsd-386), const IFT_AFLANE8025 ideal-int pkg syscall (freebsd-386), const IFT_ARAP ideal-int pkg syscall (freebsd-386), const IFT_ARCNET ideal-int pkg syscall (freebsd-386), const IFT_ARCNETPLUS ideal-int pkg syscall (freebsd-386), const IFT_ASYNC ideal-int pkg syscall (freebsd-386), const IFT_ATM ideal-int pkg syscall (freebsd-386), const IFT_ATMDXI ideal-int pkg syscall (freebsd-386), const IFT_ATMFUNI ideal-int pkg syscall (freebsd-386), const IFT_ATMIMA ideal-int pkg syscall (freebsd-386), const IFT_ATMLOGICAL ideal-int pkg syscall (freebsd-386), const IFT_ATMRADIO ideal-int pkg syscall (freebsd-386), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (freebsd-386), const IFT_ATMVCIENDPT ideal-int pkg syscall (freebsd-386), const IFT_ATMVIRTUAL ideal-int pkg syscall (freebsd-386), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (freebsd-386), const IFT_BRIDGE ideal-int pkg syscall (freebsd-386), const IFT_BSC ideal-int pkg syscall (freebsd-386), const IFT_CARP ideal-int pkg syscall (freebsd-386), const IFT_CCTEMUL ideal-int pkg syscall (freebsd-386), const IFT_CEPT ideal-int pkg syscall (freebsd-386), const IFT_CES ideal-int pkg syscall (freebsd-386), const IFT_CHANNEL ideal-int pkg syscall (freebsd-386), const IFT_CNR ideal-int pkg syscall (freebsd-386), const IFT_COFFEE ideal-int pkg syscall (freebsd-386), const IFT_COMPOSITELINK ideal-int pkg syscall (freebsd-386), const IFT_DCN ideal-int pkg syscall (freebsd-386), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (freebsd-386), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (freebsd-386), const IFT_DLSW ideal-int pkg syscall (freebsd-386), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (freebsd-386), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (freebsd-386), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (freebsd-386), const IFT_DS0 ideal-int pkg syscall (freebsd-386), const IFT_DS0BUNDLE ideal-int pkg syscall (freebsd-386), const IFT_DS1FDL ideal-int pkg syscall (freebsd-386), const IFT_DS3 ideal-int pkg syscall (freebsd-386), const IFT_DTM ideal-int pkg syscall (freebsd-386), const IFT_DVBASILN ideal-int pkg syscall (freebsd-386), const IFT_DVBASIOUT ideal-int pkg syscall (freebsd-386), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (freebsd-386), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (freebsd-386), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (freebsd-386), const IFT_ENC ideal-int pkg syscall (freebsd-386), const IFT_EON ideal-int pkg syscall (freebsd-386), const IFT_EPLRS ideal-int pkg syscall (freebsd-386), const IFT_ESCON ideal-int pkg syscall (freebsd-386), const IFT_ETHER ideal-int pkg syscall (freebsd-386), const IFT_FAITH ideal-int pkg syscall (freebsd-386), const IFT_FAST ideal-int pkg syscall (freebsd-386), const IFT_FASTETHER ideal-int pkg syscall (freebsd-386), const IFT_FASTETHERFX ideal-int pkg syscall (freebsd-386), const IFT_FDDI ideal-int pkg syscall (freebsd-386), const IFT_FIBRECHANNEL ideal-int pkg syscall (freebsd-386), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (freebsd-386), const IFT_FRAMERELAYMPI ideal-int pkg syscall (freebsd-386), const IFT_FRDLCIENDPT ideal-int pkg syscall (freebsd-386), const IFT_FRELAY ideal-int pkg syscall (freebsd-386), const IFT_FRELAYDCE ideal-int pkg syscall (freebsd-386), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (freebsd-386), const IFT_FRFORWARD ideal-int pkg syscall (freebsd-386), const IFT_G703AT2MB ideal-int pkg syscall (freebsd-386), const IFT_G703AT64K ideal-int pkg syscall (freebsd-386), const IFT_GIF ideal-int pkg syscall (freebsd-386), const IFT_GIGABITETHERNET ideal-int pkg syscall (freebsd-386), const IFT_GR303IDT ideal-int pkg syscall (freebsd-386), const IFT_GR303RDT ideal-int pkg syscall (freebsd-386), const IFT_H323GATEKEEPER ideal-int pkg syscall (freebsd-386), const IFT_H323PROXY ideal-int pkg syscall (freebsd-386), const IFT_HDH1822 ideal-int pkg syscall (freebsd-386), const IFT_HDLC ideal-int pkg syscall (freebsd-386), const IFT_HDSL2 ideal-int pkg syscall (freebsd-386), const IFT_HIPERLAN2 ideal-int pkg syscall (freebsd-386), const IFT_HIPPI ideal-int pkg syscall (freebsd-386), const IFT_HIPPIINTERFACE ideal-int pkg syscall (freebsd-386), const IFT_HOSTPAD ideal-int pkg syscall (freebsd-386), const IFT_HSSI ideal-int pkg syscall (freebsd-386), const IFT_HY ideal-int pkg syscall (freebsd-386), const IFT_IBM370PARCHAN ideal-int pkg syscall (freebsd-386), const IFT_IDSL ideal-int pkg syscall (freebsd-386), const IFT_IEEE1394 ideal-int pkg syscall (freebsd-386), const IFT_IEEE80211 ideal-int pkg syscall (freebsd-386), const IFT_IEEE80212 ideal-int pkg syscall (freebsd-386), const IFT_IEEE8023ADLAG ideal-int pkg syscall (freebsd-386), const IFT_IFGSN ideal-int pkg syscall (freebsd-386), const IFT_IMT ideal-int pkg syscall (freebsd-386), const IFT_INTERLEAVE ideal-int pkg syscall (freebsd-386), const IFT_IP ideal-int pkg syscall (freebsd-386), const IFT_IPFORWARD ideal-int pkg syscall (freebsd-386), const IFT_IPOVERATM ideal-int pkg syscall (freebsd-386), const IFT_IPOVERCDLC ideal-int pkg syscall (freebsd-386), const IFT_IPOVERCLAW ideal-int pkg syscall (freebsd-386), const IFT_IPSWITCH ideal-int pkg syscall (freebsd-386), const IFT_IPXIP ideal-int pkg syscall (freebsd-386), const IFT_ISDN ideal-int pkg syscall (freebsd-386), const IFT_ISDNBASIC ideal-int pkg syscall (freebsd-386), const IFT_ISDNPRIMARY ideal-int pkg syscall (freebsd-386), const IFT_ISDNS ideal-int pkg syscall (freebsd-386), const IFT_ISDNU ideal-int pkg syscall (freebsd-386), const IFT_ISO88022LLC ideal-int pkg syscall (freebsd-386), const IFT_ISO88023 ideal-int pkg syscall (freebsd-386), const IFT_ISO88024 ideal-int pkg syscall (freebsd-386), const IFT_ISO88025 ideal-int pkg syscall (freebsd-386), const IFT_ISO88025CRFPINT ideal-int pkg syscall (freebsd-386), const IFT_ISO88025DTR ideal-int pkg syscall (freebsd-386), const IFT_ISO88025FIBER ideal-int pkg syscall (freebsd-386), const IFT_ISO88026 ideal-int pkg syscall (freebsd-386), const IFT_ISUP ideal-int pkg syscall (freebsd-386), const IFT_L2VLAN ideal-int pkg syscall (freebsd-386), const IFT_L3IPVLAN ideal-int pkg syscall (freebsd-386), const IFT_L3IPXVLAN ideal-int pkg syscall (freebsd-386), const IFT_LAPB ideal-int pkg syscall (freebsd-386), const IFT_LAPD ideal-int pkg syscall (freebsd-386), const IFT_LAPF ideal-int pkg syscall (freebsd-386), const IFT_LOCALTALK ideal-int pkg syscall (freebsd-386), const IFT_LOOP ideal-int pkg syscall (freebsd-386), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (freebsd-386), const IFT_MFSIGLINK ideal-int pkg syscall (freebsd-386), const IFT_MIOX25 ideal-int pkg syscall (freebsd-386), const IFT_MODEM ideal-int pkg syscall (freebsd-386), const IFT_MPC ideal-int pkg syscall (freebsd-386), const IFT_MPLS ideal-int pkg syscall (freebsd-386), const IFT_MPLSTUNNEL ideal-int pkg syscall (freebsd-386), const IFT_MSDSL ideal-int pkg syscall (freebsd-386), const IFT_MVL ideal-int pkg syscall (freebsd-386), const IFT_MYRINET ideal-int pkg syscall (freebsd-386), const IFT_NFAS ideal-int pkg syscall (freebsd-386), const IFT_NSIP ideal-int pkg syscall (freebsd-386), const IFT_OPTICALCHANNEL ideal-int pkg syscall (freebsd-386), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (freebsd-386), const IFT_OTHER ideal-int pkg syscall (freebsd-386), const IFT_P10 ideal-int pkg syscall (freebsd-386), const IFT_P80 ideal-int pkg syscall (freebsd-386), const IFT_PARA ideal-int pkg syscall (freebsd-386), const IFT_PFLOG ideal-int pkg syscall (freebsd-386), const IFT_PFSYNC ideal-int pkg syscall (freebsd-386), const IFT_PLC ideal-int pkg syscall (freebsd-386), const IFT_POS ideal-int pkg syscall (freebsd-386), const IFT_PPP ideal-int pkg syscall (freebsd-386), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (freebsd-386), const IFT_PROPBWAP2MP ideal-int pkg syscall (freebsd-386), const IFT_PROPCNLS ideal-int pkg syscall (freebsd-386), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (freebsd-386), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (freebsd-386), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (freebsd-386), const IFT_PROPMUX ideal-int pkg syscall (freebsd-386), const IFT_PROPVIRTUAL ideal-int pkg syscall (freebsd-386), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (freebsd-386), const IFT_PTPSERIAL ideal-int pkg syscall (freebsd-386), const IFT_PVC ideal-int pkg syscall (freebsd-386), const IFT_QLLC ideal-int pkg syscall (freebsd-386), const IFT_RADIOMAC ideal-int pkg syscall (freebsd-386), const IFT_RADSL ideal-int pkg syscall (freebsd-386), const IFT_REACHDSL ideal-int pkg syscall (freebsd-386), const IFT_RFC1483 ideal-int pkg syscall (freebsd-386), const IFT_RS232 ideal-int pkg syscall (freebsd-386), const IFT_RSRB ideal-int pkg syscall (freebsd-386), const IFT_SDLC ideal-int pkg syscall (freebsd-386), const IFT_SDSL ideal-int pkg syscall (freebsd-386), const IFT_SHDSL ideal-int pkg syscall (freebsd-386), const IFT_SIP ideal-int pkg syscall (freebsd-386), const IFT_SLIP ideal-int pkg syscall (freebsd-386), const IFT_SMDSDXI ideal-int pkg syscall (freebsd-386), const IFT_SMDSICIP ideal-int pkg syscall (freebsd-386), const IFT_SONET ideal-int pkg syscall (freebsd-386), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (freebsd-386), const IFT_SONETPATH ideal-int pkg syscall (freebsd-386), const IFT_SONETVT ideal-int pkg syscall (freebsd-386), const IFT_SRP ideal-int pkg syscall (freebsd-386), const IFT_SS7SIGLINK ideal-int pkg syscall (freebsd-386), const IFT_STACKTOSTACK ideal-int pkg syscall (freebsd-386), const IFT_STARLAN ideal-int pkg syscall (freebsd-386), const IFT_STF ideal-int pkg syscall (freebsd-386), const IFT_T1 ideal-int pkg syscall (freebsd-386), const IFT_TDLC ideal-int pkg syscall (freebsd-386), const IFT_TERMPAD ideal-int pkg syscall (freebsd-386), const IFT_TR008 ideal-int pkg syscall (freebsd-386), const IFT_TRANSPHDLC ideal-int pkg syscall (freebsd-386), const IFT_TUNNEL ideal-int pkg syscall (freebsd-386), const IFT_ULTRA ideal-int pkg syscall (freebsd-386), const IFT_USB ideal-int pkg syscall (freebsd-386), const IFT_V11 ideal-int pkg syscall (freebsd-386), const IFT_V35 ideal-int pkg syscall (freebsd-386), const IFT_V36 ideal-int pkg syscall (freebsd-386), const IFT_V37 ideal-int pkg syscall (freebsd-386), const IFT_VDSL ideal-int pkg syscall (freebsd-386), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (freebsd-386), const IFT_VOICEEM ideal-int pkg syscall (freebsd-386), const IFT_VOICEENCAP ideal-int pkg syscall (freebsd-386), const IFT_VOICEFXO ideal-int pkg syscall (freebsd-386), const IFT_VOICEFXS ideal-int pkg syscall (freebsd-386), const IFT_VOICEOVERATM ideal-int pkg syscall (freebsd-386), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (freebsd-386), const IFT_VOICEOVERIP ideal-int pkg syscall (freebsd-386), const IFT_X213 ideal-int pkg syscall (freebsd-386), const IFT_X25 ideal-int pkg syscall (freebsd-386), const IFT_X25DDN ideal-int pkg syscall (freebsd-386), const IFT_X25HUNTGROUP ideal-int pkg syscall (freebsd-386), const IFT_X25MLP ideal-int pkg syscall (freebsd-386), const IFT_X25PLE ideal-int pkg syscall (freebsd-386), const IFT_XETHER ideal-int pkg syscall (freebsd-386), const IN_CLASSA_HOST ideal-int pkg syscall (freebsd-386), const IN_CLASSA_MAX ideal-int pkg syscall (freebsd-386), const IN_CLASSA_NET ideal-int pkg syscall (freebsd-386), const IN_CLASSA_NSHIFT ideal-int pkg syscall (freebsd-386), const IN_CLASSB_HOST ideal-int pkg syscall (freebsd-386), const IN_CLASSB_MAX ideal-int pkg syscall (freebsd-386), const IN_CLASSB_NET ideal-int pkg syscall (freebsd-386), const IN_CLASSB_NSHIFT ideal-int pkg syscall (freebsd-386), const IN_CLASSC_HOST ideal-int pkg syscall (freebsd-386), const IN_CLASSC_NET ideal-int pkg syscall (freebsd-386), const IN_CLASSC_NSHIFT ideal-int pkg syscall (freebsd-386), const IN_CLASSD_HOST ideal-int pkg syscall (freebsd-386), const IN_CLASSD_NET ideal-int pkg syscall (freebsd-386), const IN_CLASSD_NSHIFT ideal-int pkg syscall (freebsd-386), const IN_LOOPBACKNET ideal-int pkg syscall (freebsd-386), const IPPROTO_3PC ideal-int pkg syscall (freebsd-386), const IPPROTO_ADFS ideal-int pkg syscall (freebsd-386), const IPPROTO_AH ideal-int pkg syscall (freebsd-386), const IPPROTO_AHIP ideal-int pkg syscall (freebsd-386), const IPPROTO_APES ideal-int pkg syscall (freebsd-386), const IPPROTO_ARGUS ideal-int pkg syscall (freebsd-386), const IPPROTO_AX25 ideal-int pkg syscall (freebsd-386), const IPPROTO_BHA ideal-int pkg syscall (freebsd-386), const IPPROTO_BLT ideal-int pkg syscall (freebsd-386), const IPPROTO_BRSATMON ideal-int pkg syscall (freebsd-386), const IPPROTO_CARP ideal-int pkg syscall (freebsd-386), const IPPROTO_CFTP ideal-int pkg syscall (freebsd-386), const IPPROTO_CHAOS ideal-int pkg syscall (freebsd-386), const IPPROTO_CMTP ideal-int pkg syscall (freebsd-386), const IPPROTO_CPHB ideal-int pkg syscall (freebsd-386), const IPPROTO_CPNX ideal-int pkg syscall (freebsd-386), const IPPROTO_DDP ideal-int pkg syscall (freebsd-386), const IPPROTO_DGP ideal-int pkg syscall (freebsd-386), const IPPROTO_DIVERT ideal-int pkg syscall (freebsd-386), const IPPROTO_DONE ideal-int pkg syscall (freebsd-386), const IPPROTO_DSTOPTS ideal-int pkg syscall (freebsd-386), const IPPROTO_EGP ideal-int pkg syscall (freebsd-386), const IPPROTO_EMCON ideal-int pkg syscall (freebsd-386), const IPPROTO_ENCAP ideal-int pkg syscall (freebsd-386), const IPPROTO_EON ideal-int pkg syscall (freebsd-386), const IPPROTO_ESP ideal-int pkg syscall (freebsd-386), const IPPROTO_ETHERIP ideal-int pkg syscall (freebsd-386), const IPPROTO_FRAGMENT ideal-int pkg syscall (freebsd-386), const IPPROTO_GGP ideal-int pkg syscall (freebsd-386), const IPPROTO_GMTP ideal-int pkg syscall (freebsd-386), const IPPROTO_GRE ideal-int pkg syscall (freebsd-386), const IPPROTO_HELLO ideal-int pkg syscall (freebsd-386), const IPPROTO_HMP ideal-int pkg syscall (freebsd-386), const IPPROTO_HOPOPTS ideal-int pkg syscall (freebsd-386), const IPPROTO_ICMP ideal-int pkg syscall (freebsd-386), const IPPROTO_ICMPV6 ideal-int pkg syscall (freebsd-386), const IPPROTO_IDP ideal-int pkg syscall (freebsd-386), const IPPROTO_IDPR ideal-int pkg syscall (freebsd-386), const IPPROTO_IDRP ideal-int pkg syscall (freebsd-386), const IPPROTO_IGMP ideal-int pkg syscall (freebsd-386), const IPPROTO_IGP ideal-int pkg syscall (freebsd-386), const IPPROTO_IGRP ideal-int pkg syscall (freebsd-386), const IPPROTO_IL ideal-int pkg syscall (freebsd-386), const IPPROTO_INLSP ideal-int pkg syscall (freebsd-386), const IPPROTO_INP ideal-int pkg syscall (freebsd-386), const IPPROTO_IPCOMP ideal-int pkg syscall (freebsd-386), const IPPROTO_IPCV ideal-int pkg syscall (freebsd-386), const IPPROTO_IPEIP ideal-int pkg syscall (freebsd-386), const IPPROTO_IPIP ideal-int pkg syscall (freebsd-386), const IPPROTO_IPPC ideal-int pkg syscall (freebsd-386), const IPPROTO_IPV4 ideal-int pkg syscall (freebsd-386), const IPPROTO_IRTP ideal-int pkg syscall (freebsd-386), const IPPROTO_KRYPTOLAN ideal-int pkg syscall (freebsd-386), const IPPROTO_LARP ideal-int pkg syscall (freebsd-386), const IPPROTO_LEAF1 ideal-int pkg syscall (freebsd-386), const IPPROTO_LEAF2 ideal-int pkg syscall (freebsd-386), const IPPROTO_MAX ideal-int pkg syscall (freebsd-386), const IPPROTO_MAXID ideal-int pkg syscall (freebsd-386), const IPPROTO_MEAS ideal-int pkg syscall (freebsd-386), const IPPROTO_MHRP ideal-int pkg syscall (freebsd-386), const IPPROTO_MICP ideal-int pkg syscall (freebsd-386), const IPPROTO_MOBILE ideal-int pkg syscall (freebsd-386), const IPPROTO_MTP ideal-int pkg syscall (freebsd-386), const IPPROTO_MUX ideal-int pkg syscall (freebsd-386), const IPPROTO_ND ideal-int pkg syscall (freebsd-386), const IPPROTO_NHRP ideal-int pkg syscall (freebsd-386), const IPPROTO_NONE ideal-int pkg syscall (freebsd-386), const IPPROTO_NSP ideal-int pkg syscall (freebsd-386), const IPPROTO_NVPII ideal-int pkg syscall (freebsd-386), const IPPROTO_OLD_DIVERT ideal-int pkg syscall (freebsd-386), const IPPROTO_OSPFIGP ideal-int pkg syscall (freebsd-386), const IPPROTO_PFSYNC ideal-int pkg syscall (freebsd-386), const IPPROTO_PGM ideal-int pkg syscall (freebsd-386), const IPPROTO_PIGP ideal-int pkg syscall (freebsd-386), const IPPROTO_PIM ideal-int pkg syscall (freebsd-386), const IPPROTO_PRM ideal-int pkg syscall (freebsd-386), const IPPROTO_PUP ideal-int pkg syscall (freebsd-386), const IPPROTO_PVP ideal-int pkg syscall (freebsd-386), const IPPROTO_RAW ideal-int pkg syscall (freebsd-386), const IPPROTO_RCCMON ideal-int pkg syscall (freebsd-386), const IPPROTO_RDP ideal-int pkg syscall (freebsd-386), const IPPROTO_ROUTING ideal-int pkg syscall (freebsd-386), const IPPROTO_RSVP ideal-int pkg syscall (freebsd-386), const IPPROTO_RVD ideal-int pkg syscall (freebsd-386), const IPPROTO_SATEXPAK ideal-int pkg syscall (freebsd-386), const IPPROTO_SATMON ideal-int pkg syscall (freebsd-386), const IPPROTO_SCCSP ideal-int pkg syscall (freebsd-386), const IPPROTO_SCTP ideal-int pkg syscall (freebsd-386), const IPPROTO_SDRP ideal-int pkg syscall (freebsd-386), const IPPROTO_SEP ideal-int pkg syscall (freebsd-386), const IPPROTO_SKIP ideal-int pkg syscall (freebsd-386), const IPPROTO_SPACER ideal-int pkg syscall (freebsd-386), const IPPROTO_SRPC ideal-int pkg syscall (freebsd-386), const IPPROTO_ST ideal-int pkg syscall (freebsd-386), const IPPROTO_SVMTP ideal-int pkg syscall (freebsd-386), const IPPROTO_SWIPE ideal-int pkg syscall (freebsd-386), const IPPROTO_TCF ideal-int pkg syscall (freebsd-386), const IPPROTO_TLSP ideal-int pkg syscall (freebsd-386), const IPPROTO_TP ideal-int pkg syscall (freebsd-386), const IPPROTO_TPXX ideal-int pkg syscall (freebsd-386), const IPPROTO_TRUNK1 ideal-int pkg syscall (freebsd-386), const IPPROTO_TRUNK2 ideal-int pkg syscall (freebsd-386), const IPPROTO_TTP ideal-int pkg syscall (freebsd-386), const IPPROTO_VINES ideal-int pkg syscall (freebsd-386), const IPPROTO_VISA ideal-int pkg syscall (freebsd-386), const IPPROTO_VMTP ideal-int pkg syscall (freebsd-386), const IPPROTO_WBEXPAK ideal-int pkg syscall (freebsd-386), const IPPROTO_WBMON ideal-int pkg syscall (freebsd-386), const IPPROTO_WSN ideal-int pkg syscall (freebsd-386), const IPPROTO_XNET ideal-int pkg syscall (freebsd-386), const IPPROTO_XTP ideal-int pkg syscall (freebsd-386), const IPV6_AUTOFLOWLABEL ideal-int pkg syscall (freebsd-386), const IPV6_BINDANY ideal-int pkg syscall (freebsd-386), const IPV6_BINDV6ONLY ideal-int pkg syscall (freebsd-386), const IPV6_CHECKSUM ideal-int pkg syscall (freebsd-386), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (freebsd-386), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (freebsd-386), const IPV6_DEFHLIM ideal-int pkg syscall (freebsd-386), const IPV6_DONTFRAG ideal-int pkg syscall (freebsd-386), const IPV6_DSTOPTS ideal-int pkg syscall (freebsd-386), const IPV6_FAITH ideal-int pkg syscall (freebsd-386), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (freebsd-386), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (freebsd-386), const IPV6_FRAGTTL ideal-int pkg syscall (freebsd-386), const IPV6_FW_ADD ideal-int pkg syscall (freebsd-386), const IPV6_FW_DEL ideal-int pkg syscall (freebsd-386), const IPV6_FW_FLUSH ideal-int pkg syscall (freebsd-386), const IPV6_FW_GET ideal-int pkg syscall (freebsd-386), const IPV6_FW_ZERO ideal-int pkg syscall (freebsd-386), const IPV6_HLIMDEC ideal-int pkg syscall (freebsd-386), const IPV6_HOPLIMIT ideal-int pkg syscall (freebsd-386), const IPV6_HOPOPTS ideal-int pkg syscall (freebsd-386), const IPV6_IPSEC_POLICY ideal-int pkg syscall (freebsd-386), const IPV6_MAXHLIM ideal-int pkg syscall (freebsd-386), const IPV6_MAXOPTHDR ideal-int pkg syscall (freebsd-386), const IPV6_MAXPACKET ideal-int pkg syscall (freebsd-386), const IPV6_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (freebsd-386), const IPV6_MAX_MEMBERSHIPS ideal-int pkg syscall (freebsd-386), const IPV6_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (freebsd-386), const IPV6_MIN_MEMBERSHIPS ideal-int pkg syscall (freebsd-386), const IPV6_MMTU ideal-int pkg syscall (freebsd-386), const IPV6_MSFILTER ideal-int pkg syscall (freebsd-386), const IPV6_NEXTHOP ideal-int pkg syscall (freebsd-386), const IPV6_PATHMTU ideal-int pkg syscall (freebsd-386), const IPV6_PKTINFO ideal-int pkg syscall (freebsd-386), const IPV6_PORTRANGE ideal-int pkg syscall (freebsd-386), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (freebsd-386), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (freebsd-386), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (freebsd-386), const IPV6_PREFER_TEMPADDR ideal-int pkg syscall (freebsd-386), const IPV6_RECVDSTOPTS ideal-int pkg syscall (freebsd-386), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (freebsd-386), const IPV6_RECVHOPOPTS ideal-int pkg syscall (freebsd-386), const IPV6_RECVPATHMTU ideal-int pkg syscall (freebsd-386), const IPV6_RECVPKTINFO ideal-int pkg syscall (freebsd-386), const IPV6_RECVRTHDR ideal-int pkg syscall (freebsd-386), const IPV6_RECVTCLASS ideal-int pkg syscall (freebsd-386), const IPV6_RTHDR ideal-int pkg syscall (freebsd-386), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (freebsd-386), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (freebsd-386), const IPV6_RTHDR_STRICT ideal-int pkg syscall (freebsd-386), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (freebsd-386), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (freebsd-386), const IPV6_TCLASS ideal-int pkg syscall (freebsd-386), const IPV6_USE_MIN_MTU ideal-int pkg syscall (freebsd-386), const IPV6_VERSION ideal-int pkg syscall (freebsd-386), const IPV6_VERSION_MASK ideal-int pkg syscall (freebsd-386), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (freebsd-386), const IP_BINDANY ideal-int pkg syscall (freebsd-386), const IP_BLOCK_SOURCE ideal-int pkg syscall (freebsd-386), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (freebsd-386), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (freebsd-386), const IP_DF ideal-int pkg syscall (freebsd-386), const IP_DONTFRAG ideal-int pkg syscall (freebsd-386), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (freebsd-386), const IP_DUMMYNET3 ideal-int pkg syscall (freebsd-386), const IP_DUMMYNET_CONFIGURE ideal-int pkg syscall (freebsd-386), const IP_DUMMYNET_DEL ideal-int pkg syscall (freebsd-386), const IP_DUMMYNET_FLUSH ideal-int pkg syscall (freebsd-386), const IP_DUMMYNET_GET ideal-int pkg syscall (freebsd-386), const IP_FAITH ideal-int pkg syscall (freebsd-386), const IP_FW3 ideal-int pkg syscall (freebsd-386), const IP_FW_ADD ideal-int pkg syscall (freebsd-386), const IP_FW_DEL ideal-int pkg syscall (freebsd-386), const IP_FW_FLUSH ideal-int pkg syscall (freebsd-386), const IP_FW_GET ideal-int pkg syscall (freebsd-386), const IP_FW_NAT_CFG ideal-int pkg syscall (freebsd-386), const IP_FW_NAT_DEL ideal-int pkg syscall (freebsd-386), const IP_FW_NAT_GET_CONFIG ideal-int pkg syscall (freebsd-386), const IP_FW_NAT_GET_LOG ideal-int pkg syscall (freebsd-386), const IP_FW_RESETLOG ideal-int pkg syscall (freebsd-386), const IP_FW_TABLE_ADD ideal-int pkg syscall (freebsd-386), const IP_FW_TABLE_DEL ideal-int pkg syscall (freebsd-386), const IP_FW_TABLE_FLUSH ideal-int pkg syscall (freebsd-386), const IP_FW_TABLE_GETSIZE ideal-int pkg syscall (freebsd-386), const IP_FW_TABLE_LIST ideal-int pkg syscall (freebsd-386), const IP_FW_ZERO ideal-int pkg syscall (freebsd-386), const IP_HDRINCL ideal-int pkg syscall (freebsd-386), const IP_IPSEC_POLICY ideal-int pkg syscall (freebsd-386), const IP_MAXPACKET ideal-int pkg syscall (freebsd-386), const IP_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (freebsd-386), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (freebsd-386), const IP_MAX_SOCK_MUTE_FILTER ideal-int pkg syscall (freebsd-386), const IP_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (freebsd-386), const IP_MAX_SOURCE_FILTER ideal-int pkg syscall (freebsd-386), const IP_MF ideal-int pkg syscall (freebsd-386), const IP_MINTTL ideal-int pkg syscall (freebsd-386), const IP_MIN_MEMBERSHIPS ideal-int pkg syscall (freebsd-386), const IP_MSFILTER ideal-int pkg syscall (freebsd-386), const IP_MSS ideal-int pkg syscall (freebsd-386), const IP_MULTICAST_VIF ideal-int pkg syscall (freebsd-386), const IP_OFFMASK ideal-int pkg syscall (freebsd-386), const IP_ONESBCAST ideal-int pkg syscall (freebsd-386), const IP_OPTIONS ideal-int pkg syscall (freebsd-386), const IP_PORTRANGE ideal-int pkg syscall (freebsd-386), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (freebsd-386), const IP_PORTRANGE_HIGH ideal-int pkg syscall (freebsd-386), const IP_PORTRANGE_LOW ideal-int pkg syscall (freebsd-386), const IP_RECVDSTADDR ideal-int pkg syscall (freebsd-386), const IP_RECVIF ideal-int pkg syscall (freebsd-386), const IP_RECVOPTS ideal-int pkg syscall (freebsd-386), const IP_RECVRETOPTS ideal-int pkg syscall (freebsd-386), const IP_RECVTTL ideal-int pkg syscall (freebsd-386), const IP_RETOPTS ideal-int pkg syscall (freebsd-386), const IP_RF ideal-int pkg syscall (freebsd-386), const IP_RSVP_OFF ideal-int pkg syscall (freebsd-386), const IP_RSVP_ON ideal-int pkg syscall (freebsd-386), const IP_RSVP_VIF_OFF ideal-int pkg syscall (freebsd-386), const IP_RSVP_VIF_ON ideal-int pkg syscall (freebsd-386), const IP_SENDSRCADDR ideal-int pkg syscall (freebsd-386), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (freebsd-386), const LOCK_EX ideal-int pkg syscall (freebsd-386), const LOCK_NB ideal-int pkg syscall (freebsd-386), const LOCK_SH ideal-int pkg syscall (freebsd-386), const LOCK_UN ideal-int pkg syscall (freebsd-386), const MSG_COMPAT ideal-int pkg syscall (freebsd-386), const MSG_CTRUNC ideal-int pkg syscall (freebsd-386), const MSG_DONTROUTE ideal-int pkg syscall (freebsd-386), const MSG_DONTWAIT ideal-int pkg syscall (freebsd-386), const MSG_EOF ideal-int pkg syscall (freebsd-386), const MSG_EOR ideal-int pkg syscall (freebsd-386), const MSG_NBIO ideal-int pkg syscall (freebsd-386), const MSG_NOSIGNAL ideal-int pkg syscall (freebsd-386), const MSG_NOTIFICATION ideal-int pkg syscall (freebsd-386), const MSG_OOB ideal-int pkg syscall (freebsd-386), const MSG_PEEK ideal-int pkg syscall (freebsd-386), const MSG_TRUNC ideal-int pkg syscall (freebsd-386), const MSG_WAITALL ideal-int pkg syscall (freebsd-386), const NET_RT_DUMP ideal-int pkg syscall (freebsd-386), const NET_RT_FLAGS ideal-int pkg syscall (freebsd-386), const NET_RT_IFLIST ideal-int pkg syscall (freebsd-386), const NET_RT_IFMALIST ideal-int pkg syscall (freebsd-386), const NET_RT_MAXID ideal-int pkg syscall (freebsd-386), const NOTE_ATTRIB ideal-int pkg syscall (freebsd-386), const NOTE_CHILD ideal-int pkg syscall (freebsd-386), const NOTE_DELETE ideal-int pkg syscall (freebsd-386), const NOTE_EXEC ideal-int pkg syscall (freebsd-386), const NOTE_EXIT ideal-int pkg syscall (freebsd-386), const NOTE_EXTEND ideal-int pkg syscall (freebsd-386), const NOTE_FFAND ideal-int pkg syscall (freebsd-386), const NOTE_FFCOPY ideal-int pkg syscall (freebsd-386), const NOTE_FFCTRLMASK ideal-int pkg syscall (freebsd-386), const NOTE_FFLAGSMASK ideal-int pkg syscall (freebsd-386), const NOTE_FFNOP ideal-int pkg syscall (freebsd-386), const NOTE_FFOR ideal-int pkg syscall (freebsd-386), const NOTE_FORK ideal-int pkg syscall (freebsd-386), const NOTE_LINK ideal-int pkg syscall (freebsd-386), const NOTE_LOWAT ideal-int pkg syscall (freebsd-386), const NOTE_PCTRLMASK ideal-int pkg syscall (freebsd-386), const NOTE_PDATAMASK ideal-int pkg syscall (freebsd-386), const NOTE_RENAME ideal-int pkg syscall (freebsd-386), const NOTE_REVOKE ideal-int pkg syscall (freebsd-386), const NOTE_TRACK ideal-int pkg syscall (freebsd-386), const NOTE_TRACKERR ideal-int pkg syscall (freebsd-386), const NOTE_TRIGGER ideal-int pkg syscall (freebsd-386), const NOTE_WRITE ideal-int pkg syscall (freebsd-386), const O_ACCMODE ideal-int pkg syscall (freebsd-386), const O_DIRECT ideal-int pkg syscall (freebsd-386), const O_DIRECTORY ideal-int pkg syscall (freebsd-386), const O_EXEC ideal-int pkg syscall (freebsd-386), const O_EXLOCK ideal-int pkg syscall (freebsd-386), const O_FSYNC ideal-int pkg syscall (freebsd-386), const O_NDELAY ideal-int pkg syscall (freebsd-386), const O_NOFOLLOW ideal-int pkg syscall (freebsd-386), const O_SHLOCK ideal-int pkg syscall (freebsd-386), const O_TTY_INIT ideal-int pkg syscall (freebsd-386), const PTRACE_CONT ideal-int pkg syscall (freebsd-386), const PTRACE_KILL ideal-int pkg syscall (freebsd-386), const PTRACE_TRACEME ideal-int pkg syscall (freebsd-386), const RLIMIT_AS ideal-int pkg syscall (freebsd-386), const RLIMIT_CORE ideal-int pkg syscall (freebsd-386), const RLIMIT_CPU ideal-int pkg syscall (freebsd-386), const RLIMIT_DATA ideal-int pkg syscall (freebsd-386), const RLIMIT_FSIZE ideal-int pkg syscall (freebsd-386), const RLIMIT_NOFILE ideal-int pkg syscall (freebsd-386), const RLIMIT_STACK ideal-int pkg syscall (freebsd-386), const RLIM_INFINITY ideal-int pkg syscall (freebsd-386), const RTAX_AUTHOR ideal-int pkg syscall (freebsd-386), const RTAX_BRD ideal-int pkg syscall (freebsd-386), const RTAX_DST ideal-int pkg syscall (freebsd-386), const RTAX_GATEWAY ideal-int pkg syscall (freebsd-386), const RTAX_GENMASK ideal-int pkg syscall (freebsd-386), const RTAX_IFA ideal-int pkg syscall (freebsd-386), const RTAX_IFP ideal-int pkg syscall (freebsd-386), const RTAX_MAX ideal-int pkg syscall (freebsd-386), const RTAX_NETMASK ideal-int pkg syscall (freebsd-386), const RTA_AUTHOR ideal-int pkg syscall (freebsd-386), const RTA_BRD ideal-int pkg syscall (freebsd-386), const RTA_DST ideal-int pkg syscall (freebsd-386), const RTA_GATEWAY ideal-int pkg syscall (freebsd-386), const RTA_GENMASK ideal-int pkg syscall (freebsd-386), const RTA_IFA ideal-int pkg syscall (freebsd-386), const RTA_IFP ideal-int pkg syscall (freebsd-386), const RTA_NETMASK ideal-int pkg syscall (freebsd-386), const RTF_BLACKHOLE ideal-int pkg syscall (freebsd-386), const RTF_BROADCAST ideal-int pkg syscall (freebsd-386), const RTF_DONE ideal-int pkg syscall (freebsd-386), const RTF_DYNAMIC ideal-int pkg syscall (freebsd-386), const RTF_FMASK ideal-int pkg syscall (freebsd-386), const RTF_GATEWAY ideal-int pkg syscall (freebsd-386), const RTF_HOST ideal-int pkg syscall (freebsd-386), const RTF_LLDATA ideal-int pkg syscall (freebsd-386), const RTF_LLINFO ideal-int pkg syscall (freebsd-386), const RTF_LOCAL ideal-int pkg syscall (freebsd-386), const RTF_MODIFIED ideal-int pkg syscall (freebsd-386), const RTF_MULTICAST ideal-int pkg syscall (freebsd-386), const RTF_PINNED ideal-int pkg syscall (freebsd-386), const RTF_PRCLONING ideal-int pkg syscall (freebsd-386), const RTF_PROTO1 ideal-int pkg syscall (freebsd-386), const RTF_PROTO2 ideal-int pkg syscall (freebsd-386), const RTF_PROTO3 ideal-int pkg syscall (freebsd-386), const RTF_REJECT ideal-int pkg syscall (freebsd-386), const RTF_RNH_LOCKED ideal-int pkg syscall (freebsd-386), const RTF_STATIC ideal-int pkg syscall (freebsd-386), const RTF_STICKY ideal-int pkg syscall (freebsd-386), const RTF_UP ideal-int pkg syscall (freebsd-386), const RTF_XRESOLVE ideal-int pkg syscall (freebsd-386), const RTM_ADD ideal-int pkg syscall (freebsd-386), const RTM_CHANGE ideal-int pkg syscall (freebsd-386), const RTM_DELADDR ideal-int pkg syscall (freebsd-386), const RTM_DELETE ideal-int pkg syscall (freebsd-386), const RTM_DELMADDR ideal-int pkg syscall (freebsd-386), const RTM_GET ideal-int pkg syscall (freebsd-386), const RTM_IEEE80211 ideal-int pkg syscall (freebsd-386), const RTM_IFANNOUNCE ideal-int pkg syscall (freebsd-386), const RTM_IFINFO ideal-int pkg syscall (freebsd-386), const RTM_LOCK ideal-int pkg syscall (freebsd-386), const RTM_LOSING ideal-int pkg syscall (freebsd-386), const RTM_MISS ideal-int pkg syscall (freebsd-386), const RTM_NEWADDR ideal-int pkg syscall (freebsd-386), const RTM_NEWMADDR ideal-int pkg syscall (freebsd-386), const RTM_OLDADD ideal-int pkg syscall (freebsd-386), const RTM_OLDDEL ideal-int pkg syscall (freebsd-386), const RTM_REDIRECT ideal-int pkg syscall (freebsd-386), const RTM_RESOLVE ideal-int pkg syscall (freebsd-386), const RTM_RTTUNIT ideal-int pkg syscall (freebsd-386), const RTM_VERSION ideal-int pkg syscall (freebsd-386), const RTV_EXPIRE ideal-int pkg syscall (freebsd-386), const RTV_HOPCOUNT ideal-int pkg syscall (freebsd-386), const RTV_MTU ideal-int pkg syscall (freebsd-386), const RTV_RPIPE ideal-int pkg syscall (freebsd-386), const RTV_RTT ideal-int pkg syscall (freebsd-386), const RTV_RTTVAR ideal-int pkg syscall (freebsd-386), const RTV_SPIPE ideal-int pkg syscall (freebsd-386), const RTV_SSTHRESH ideal-int pkg syscall (freebsd-386), const RTV_WEIGHT ideal-int pkg syscall (freebsd-386), const RUSAGE_CHILDREN ideal-int pkg syscall (freebsd-386), const RUSAGE_SELF ideal-int pkg syscall (freebsd-386), const RUSAGE_THREAD ideal-int pkg syscall (freebsd-386), const SCM_BINTIME ideal-int pkg syscall (freebsd-386), const SCM_CREDS ideal-int pkg syscall (freebsd-386), const SCM_RIGHTS ideal-int pkg syscall (freebsd-386), const SCM_TIMESTAMP ideal-int pkg syscall (freebsd-386), const SIGCHLD Signal pkg syscall (freebsd-386), const SIGCONT Signal pkg syscall (freebsd-386), const SIGEMT Signal pkg syscall (freebsd-386), const SIGINFO Signal pkg syscall (freebsd-386), const SIGIO Signal pkg syscall (freebsd-386), const SIGIOT Signal pkg syscall (freebsd-386), const SIGLWP Signal pkg syscall (freebsd-386), const SIGPROF Signal pkg syscall (freebsd-386), const SIGSTOP Signal pkg syscall (freebsd-386), const SIGSYS Signal pkg syscall (freebsd-386), const SIGTHR Signal pkg syscall (freebsd-386), const SIGTSTP Signal pkg syscall (freebsd-386), const SIGTTIN Signal pkg syscall (freebsd-386), const SIGTTOU Signal pkg syscall (freebsd-386), const SIGURG Signal pkg syscall (freebsd-386), const SIGUSR1 Signal pkg syscall (freebsd-386), const SIGUSR2 Signal pkg syscall (freebsd-386), const SIGVTALRM Signal pkg syscall (freebsd-386), const SIGWINCH Signal pkg syscall (freebsd-386), const SIGXCPU Signal pkg syscall (freebsd-386), const SIGXFSZ Signal pkg syscall (freebsd-386), const SIOCADDMULTI ideal-int pkg syscall (freebsd-386), const SIOCADDRT ideal-int pkg syscall (freebsd-386), const SIOCAIFADDR ideal-int pkg syscall (freebsd-386), const SIOCAIFGROUP ideal-int pkg syscall (freebsd-386), const SIOCALIFADDR ideal-int pkg syscall (freebsd-386), const SIOCATMARK ideal-int pkg syscall (freebsd-386), const SIOCDELMULTI ideal-int pkg syscall (freebsd-386), const SIOCDELRT ideal-int pkg syscall (freebsd-386), const SIOCDIFADDR ideal-int pkg syscall (freebsd-386), const SIOCDIFGROUP ideal-int pkg syscall (freebsd-386), const SIOCDIFPHYADDR ideal-int pkg syscall (freebsd-386), const SIOCDLIFADDR ideal-int pkg syscall (freebsd-386), const SIOCGDRVSPEC ideal-int pkg syscall (freebsd-386), const SIOCGETSGCNT ideal-int pkg syscall (freebsd-386), const SIOCGETVIFCNT ideal-int pkg syscall (freebsd-386), const SIOCGHIWAT ideal-int pkg syscall (freebsd-386), const SIOCGIFADDR ideal-int pkg syscall (freebsd-386), const SIOCGIFBRDADDR ideal-int pkg syscall (freebsd-386), const SIOCGIFCAP ideal-int pkg syscall (freebsd-386), const SIOCGIFCONF ideal-int pkg syscall (freebsd-386), const SIOCGIFDESCR ideal-int pkg syscall (freebsd-386), const SIOCGIFDSTADDR ideal-int pkg syscall (freebsd-386), const SIOCGIFFLAGS ideal-int pkg syscall (freebsd-386), const SIOCGIFGENERIC ideal-int pkg syscall (freebsd-386), const SIOCGIFGMEMB ideal-int pkg syscall (freebsd-386), const SIOCGIFGROUP ideal-int pkg syscall (freebsd-386), const SIOCGIFINDEX ideal-int pkg syscall (freebsd-386), const SIOCGIFMAC ideal-int pkg syscall (freebsd-386), const SIOCGIFMEDIA ideal-int pkg syscall (freebsd-386), const SIOCGIFMETRIC ideal-int pkg syscall (freebsd-386), const SIOCGIFMTU ideal-int pkg syscall (freebsd-386), const SIOCGIFNETMASK ideal-int pkg syscall (freebsd-386), const SIOCGIFPDSTADDR ideal-int pkg syscall (freebsd-386), const SIOCGIFPHYS ideal-int pkg syscall (freebsd-386), const SIOCGIFPSRCADDR ideal-int pkg syscall (freebsd-386), const SIOCGIFSTATUS ideal-int pkg syscall (freebsd-386), const SIOCGLIFADDR ideal-int pkg syscall (freebsd-386), const SIOCGLIFPHYADDR ideal-int pkg syscall (freebsd-386), const SIOCGLOWAT ideal-int pkg syscall (freebsd-386), const SIOCGPGRP ideal-int pkg syscall (freebsd-386), const SIOCGPRIVATE_0 ideal-int pkg syscall (freebsd-386), const SIOCGPRIVATE_1 ideal-int pkg syscall (freebsd-386), const SIOCIFCREATE ideal-int pkg syscall (freebsd-386), const SIOCIFCREATE2 ideal-int pkg syscall (freebsd-386), const SIOCIFDESTROY ideal-int pkg syscall (freebsd-386), const SIOCIFGCLONERS ideal-int pkg syscall (freebsd-386), const SIOCSDRVSPEC ideal-int pkg syscall (freebsd-386), const SIOCSHIWAT ideal-int pkg syscall (freebsd-386), const SIOCSIFADDR ideal-int pkg syscall (freebsd-386), const SIOCSIFBRDADDR ideal-int pkg syscall (freebsd-386), const SIOCSIFCAP ideal-int pkg syscall (freebsd-386), const SIOCSIFDESCR ideal-int pkg syscall (freebsd-386), const SIOCSIFDSTADDR ideal-int pkg syscall (freebsd-386), const SIOCSIFFLAGS ideal-int pkg syscall (freebsd-386), const SIOCSIFGENERIC ideal-int pkg syscall (freebsd-386), const SIOCSIFLLADDR ideal-int pkg syscall (freebsd-386), const SIOCSIFMAC ideal-int pkg syscall (freebsd-386), const SIOCSIFMEDIA ideal-int pkg syscall (freebsd-386), const SIOCSIFMETRIC ideal-int pkg syscall (freebsd-386), const SIOCSIFMTU ideal-int pkg syscall (freebsd-386), const SIOCSIFNAME ideal-int pkg syscall (freebsd-386), const SIOCSIFNETMASK ideal-int pkg syscall (freebsd-386), const SIOCSIFPHYADDR ideal-int pkg syscall (freebsd-386), const SIOCSIFPHYS ideal-int pkg syscall (freebsd-386), const SIOCSIFRVNET ideal-int pkg syscall (freebsd-386), const SIOCSIFVNET ideal-int pkg syscall (freebsd-386), const SIOCSLIFPHYADDR ideal-int pkg syscall (freebsd-386), const SIOCSLOWAT ideal-int pkg syscall (freebsd-386), const SIOCSPGRP ideal-int pkg syscall (freebsd-386), const SOCK_MAXADDRLEN ideal-int pkg syscall (freebsd-386), const SOCK_RDM ideal-int pkg syscall (freebsd-386), const SO_ACCEPTCONN ideal-int pkg syscall (freebsd-386), const SO_ACCEPTFILTER ideal-int pkg syscall (freebsd-386), const SO_BINTIME ideal-int pkg syscall (freebsd-386), const SO_DEBUG ideal-int pkg syscall (freebsd-386), const SO_ERROR ideal-int pkg syscall (freebsd-386), const SO_LABEL ideal-int pkg syscall (freebsd-386), const SO_LISTENINCQLEN ideal-int pkg syscall (freebsd-386), const SO_LISTENQLEN ideal-int pkg syscall (freebsd-386), const SO_LISTENQLIMIT ideal-int pkg syscall (freebsd-386), const SO_NOSIGPIPE ideal-int pkg syscall (freebsd-386), const SO_NO_DDP ideal-int pkg syscall (freebsd-386), const SO_NO_OFFLOAD ideal-int pkg syscall (freebsd-386), const SO_OOBINLINE ideal-int pkg syscall (freebsd-386), const SO_PEERLABEL ideal-int pkg syscall (freebsd-386), const SO_RCVLOWAT ideal-int pkg syscall (freebsd-386), const SO_RCVTIMEO ideal-int pkg syscall (freebsd-386), const SO_REUSEPORT ideal-int pkg syscall (freebsd-386), const SO_SETFIB ideal-int pkg syscall (freebsd-386), const SO_SNDLOWAT ideal-int pkg syscall (freebsd-386), const SO_SNDTIMEO ideal-int pkg syscall (freebsd-386), const SO_TIMESTAMP ideal-int pkg syscall (freebsd-386), const SO_TYPE ideal-int pkg syscall (freebsd-386), const SO_USELOOPBACK ideal-int pkg syscall (freebsd-386), const SYS_ABORT2 ideal-int pkg syscall (freebsd-386), const SYS_ACCEPT ideal-int pkg syscall (freebsd-386), const SYS_ACCESS ideal-int pkg syscall (freebsd-386), const SYS_ACCT ideal-int pkg syscall (freebsd-386), const SYS_ADJTIME ideal-int pkg syscall (freebsd-386), const SYS_AUDIT ideal-int pkg syscall (freebsd-386), const SYS_AUDITCTL ideal-int pkg syscall (freebsd-386), const SYS_AUDITON ideal-int pkg syscall (freebsd-386), const SYS_BIND ideal-int pkg syscall (freebsd-386), const SYS_CAP_ENTER ideal-int pkg syscall (freebsd-386), const SYS_CAP_GETMODE ideal-int pkg syscall (freebsd-386), const SYS_CAP_GETRIGHTS ideal-int pkg syscall (freebsd-386), const SYS_CAP_NEW ideal-int pkg syscall (freebsd-386), const SYS_CHDIR ideal-int pkg syscall (freebsd-386), const SYS_CHFLAGS ideal-int pkg syscall (freebsd-386), const SYS_CHMOD ideal-int pkg syscall (freebsd-386), const SYS_CHOWN ideal-int pkg syscall (freebsd-386), const SYS_CHROOT ideal-int pkg syscall (freebsd-386), const SYS_CLOCK_GETRES ideal-int pkg syscall (freebsd-386), const SYS_CLOCK_GETTIME ideal-int pkg syscall (freebsd-386), const SYS_CLOCK_SETTIME ideal-int pkg syscall (freebsd-386), const SYS_CLOSE ideal-int pkg syscall (freebsd-386), const SYS_CLOSEFROM ideal-int pkg syscall (freebsd-386), const SYS_CONNECT ideal-int pkg syscall (freebsd-386), const SYS_CPUSET ideal-int pkg syscall (freebsd-386), const SYS_CPUSET_GETAFFINITY ideal-int pkg syscall (freebsd-386), const SYS_CPUSET_GETID ideal-int pkg syscall (freebsd-386), const SYS_CPUSET_SETAFFINITY ideal-int pkg syscall (freebsd-386), const SYS_CPUSET_SETID ideal-int pkg syscall (freebsd-386), const SYS_DUP ideal-int pkg syscall (freebsd-386), const SYS_DUP2 ideal-int pkg syscall (freebsd-386), const SYS_EACCESS ideal-int pkg syscall (freebsd-386), const SYS_EXECVE ideal-int pkg syscall (freebsd-386), const SYS_EXIT ideal-int pkg syscall (freebsd-386), const SYS_EXTATTRCTL ideal-int pkg syscall (freebsd-386), const SYS_EXTATTR_DELETE_FD ideal-int pkg syscall (freebsd-386), const SYS_EXTATTR_DELETE_FILE ideal-int pkg syscall (freebsd-386), const SYS_EXTATTR_DELETE_LINK ideal-int pkg syscall (freebsd-386), const SYS_EXTATTR_GET_FD ideal-int pkg syscall (freebsd-386), const SYS_EXTATTR_GET_FILE ideal-int pkg syscall (freebsd-386), const SYS_EXTATTR_GET_LINK ideal-int pkg syscall (freebsd-386), const SYS_EXTATTR_LIST_FD ideal-int pkg syscall (freebsd-386), const SYS_EXTATTR_LIST_FILE ideal-int pkg syscall (freebsd-386), const SYS_EXTATTR_LIST_LINK ideal-int pkg syscall (freebsd-386), const SYS_EXTATTR_SET_FD ideal-int pkg syscall (freebsd-386), const SYS_EXTATTR_SET_FILE ideal-int pkg syscall (freebsd-386), const SYS_EXTATTR_SET_LINK ideal-int pkg syscall (freebsd-386), const SYS_FACCESSAT ideal-int pkg syscall (freebsd-386), const SYS_FCHDIR ideal-int pkg syscall (freebsd-386), const SYS_FCHFLAGS ideal-int pkg syscall (freebsd-386), const SYS_FCHMOD ideal-int pkg syscall (freebsd-386), const SYS_FCHMODAT ideal-int pkg syscall (freebsd-386), const SYS_FCHOWN ideal-int pkg syscall (freebsd-386), const SYS_FCHOWNAT ideal-int pkg syscall (freebsd-386), const SYS_FCNTL ideal-int pkg syscall (freebsd-386), const SYS_FEXECVE ideal-int pkg syscall (freebsd-386), const SYS_FFCLOCK_GETCOUNTER ideal-int pkg syscall (freebsd-386), const SYS_FFCLOCK_GETESTIMATE ideal-int pkg syscall (freebsd-386), const SYS_FFCLOCK_SETESTIMATE ideal-int pkg syscall (freebsd-386), const SYS_FHOPEN ideal-int pkg syscall (freebsd-386), const SYS_FHSTAT ideal-int pkg syscall (freebsd-386), const SYS_FHSTATFS ideal-int pkg syscall (freebsd-386), const SYS_FLOCK ideal-int pkg syscall (freebsd-386), const SYS_FORK ideal-int pkg syscall (freebsd-386), const SYS_FPATHCONF ideal-int pkg syscall (freebsd-386), const SYS_FREEBSD6_FTRUNCATE ideal-int pkg syscall (freebsd-386), const SYS_FREEBSD6_LSEEK ideal-int pkg syscall (freebsd-386), const SYS_FREEBSD6_MMAP ideal-int pkg syscall (freebsd-386), const SYS_FREEBSD6_PREAD ideal-int pkg syscall (freebsd-386), const SYS_FREEBSD6_PWRITE ideal-int pkg syscall (freebsd-386), const SYS_FREEBSD6_TRUNCATE ideal-int pkg syscall (freebsd-386), const SYS_FSTAT ideal-int pkg syscall (freebsd-386), const SYS_FSTATAT ideal-int pkg syscall (freebsd-386), const SYS_FSTATFS ideal-int pkg syscall (freebsd-386), const SYS_FSYNC ideal-int pkg syscall (freebsd-386), const SYS_FTRUNCATE ideal-int pkg syscall (freebsd-386), const SYS_FUTIMES ideal-int pkg syscall (freebsd-386), const SYS_FUTIMESAT ideal-int pkg syscall (freebsd-386), const SYS_GETAUDIT ideal-int pkg syscall (freebsd-386), const SYS_GETAUDIT_ADDR ideal-int pkg syscall (freebsd-386), const SYS_GETAUID ideal-int pkg syscall (freebsd-386), const SYS_GETCONTEXT ideal-int pkg syscall (freebsd-386), const SYS_GETDENTS ideal-int pkg syscall (freebsd-386), const SYS_GETDIRENTRIES ideal-int pkg syscall (freebsd-386), const SYS_GETDTABLESIZE ideal-int pkg syscall (freebsd-386), const SYS_GETEGID ideal-int pkg syscall (freebsd-386), const SYS_GETEUID ideal-int pkg syscall (freebsd-386), const SYS_GETFH ideal-int pkg syscall (freebsd-386), const SYS_GETFSSTAT ideal-int pkg syscall (freebsd-386), const SYS_GETGID ideal-int pkg syscall (freebsd-386), const SYS_GETGROUPS ideal-int pkg syscall (freebsd-386), const SYS_GETITIMER ideal-int pkg syscall (freebsd-386), const SYS_GETLOGIN ideal-int pkg syscall (freebsd-386), const SYS_GETLOGINCLASS ideal-int pkg syscall (freebsd-386), const SYS_GETPEERNAME ideal-int pkg syscall (freebsd-386), const SYS_GETPGID ideal-int pkg syscall (freebsd-386), const SYS_GETPGRP ideal-int pkg syscall (freebsd-386), const SYS_GETPID ideal-int pkg syscall (freebsd-386), const SYS_GETPPID ideal-int pkg syscall (freebsd-386), const SYS_GETPRIORITY ideal-int pkg syscall (freebsd-386), const SYS_GETRESGID ideal-int pkg syscall (freebsd-386), const SYS_GETRESUID ideal-int pkg syscall (freebsd-386), const SYS_GETRLIMIT ideal-int pkg syscall (freebsd-386), const SYS_GETRUSAGE ideal-int pkg syscall (freebsd-386), const SYS_GETSID ideal-int pkg syscall (freebsd-386), const SYS_GETSOCKNAME ideal-int pkg syscall (freebsd-386), const SYS_GETSOCKOPT ideal-int pkg syscall (freebsd-386), const SYS_GETTIMEOFDAY ideal-int pkg syscall (freebsd-386), const SYS_GETUID ideal-int pkg syscall (freebsd-386), const SYS_IOCTL ideal-int pkg syscall (freebsd-386), const SYS_ISSETUGID ideal-int pkg syscall (freebsd-386), const SYS_JAIL ideal-int pkg syscall (freebsd-386), const SYS_JAIL_ATTACH ideal-int pkg syscall (freebsd-386), const SYS_JAIL_GET ideal-int pkg syscall (freebsd-386), const SYS_JAIL_REMOVE ideal-int pkg syscall (freebsd-386), const SYS_JAIL_SET ideal-int pkg syscall (freebsd-386), const SYS_KENV ideal-int pkg syscall (freebsd-386), const SYS_KEVENT ideal-int pkg syscall (freebsd-386), const SYS_KILL ideal-int pkg syscall (freebsd-386), const SYS_KLDFIND ideal-int pkg syscall (freebsd-386), const SYS_KLDFIRSTMOD ideal-int pkg syscall (freebsd-386), const SYS_KLDLOAD ideal-int pkg syscall (freebsd-386), const SYS_KLDNEXT ideal-int pkg syscall (freebsd-386), const SYS_KLDSTAT ideal-int pkg syscall (freebsd-386), const SYS_KLDSYM ideal-int pkg syscall (freebsd-386), const SYS_KLDUNLOAD ideal-int pkg syscall (freebsd-386), const SYS_KLDUNLOADF ideal-int pkg syscall (freebsd-386), const SYS_KQUEUE ideal-int pkg syscall (freebsd-386), const SYS_KTIMER_CREATE ideal-int pkg syscall (freebsd-386), const SYS_KTIMER_DELETE ideal-int pkg syscall (freebsd-386), const SYS_KTIMER_GETOVERRUN ideal-int pkg syscall (freebsd-386), const SYS_KTIMER_GETTIME ideal-int pkg syscall (freebsd-386), const SYS_KTIMER_SETTIME ideal-int pkg syscall (freebsd-386), const SYS_KTRACE ideal-int pkg syscall (freebsd-386), const SYS_LCHFLAGS ideal-int pkg syscall (freebsd-386), const SYS_LCHMOD ideal-int pkg syscall (freebsd-386), const SYS_LCHOWN ideal-int pkg syscall (freebsd-386), const SYS_LGETFH ideal-int pkg syscall (freebsd-386), const SYS_LINK ideal-int pkg syscall (freebsd-386), const SYS_LINKAT ideal-int pkg syscall (freebsd-386), const SYS_LISTEN ideal-int pkg syscall (freebsd-386), const SYS_LPATHCONF ideal-int pkg syscall (freebsd-386), const SYS_LSEEK ideal-int pkg syscall (freebsd-386), const SYS_LSTAT ideal-int pkg syscall (freebsd-386), const SYS_LUTIMES ideal-int pkg syscall (freebsd-386), const SYS_MAC_SYSCALL ideal-int pkg syscall (freebsd-386), const SYS_MADVISE ideal-int pkg syscall (freebsd-386), const SYS_MINCORE ideal-int pkg syscall (freebsd-386), const SYS_MINHERIT ideal-int pkg syscall (freebsd-386), const SYS_MKDIR ideal-int pkg syscall (freebsd-386), const SYS_MKDIRAT ideal-int pkg syscall (freebsd-386), const SYS_MKFIFO ideal-int pkg syscall (freebsd-386), const SYS_MKFIFOAT ideal-int pkg syscall (freebsd-386), const SYS_MKNOD ideal-int pkg syscall (freebsd-386), const SYS_MKNODAT ideal-int pkg syscall (freebsd-386), const SYS_MLOCK ideal-int pkg syscall (freebsd-386), const SYS_MLOCKALL ideal-int pkg syscall (freebsd-386), const SYS_MMAP ideal-int pkg syscall (freebsd-386), const SYS_MODFIND ideal-int pkg syscall (freebsd-386), const SYS_MODFNEXT ideal-int pkg syscall (freebsd-386), const SYS_MODNEXT ideal-int pkg syscall (freebsd-386), const SYS_MODSTAT ideal-int pkg syscall (freebsd-386), const SYS_MOUNT ideal-int pkg syscall (freebsd-386), const SYS_MPROTECT ideal-int pkg syscall (freebsd-386), const SYS_MSYNC ideal-int pkg syscall (freebsd-386), const SYS_MUNLOCK ideal-int pkg syscall (freebsd-386), const SYS_MUNLOCKALL ideal-int pkg syscall (freebsd-386), const SYS_MUNMAP ideal-int pkg syscall (freebsd-386), const SYS_NANOSLEEP ideal-int pkg syscall (freebsd-386), const SYS_NFSTAT ideal-int pkg syscall (freebsd-386), const SYS_NLSTAT ideal-int pkg syscall (freebsd-386), const SYS_NMOUNT ideal-int pkg syscall (freebsd-386), const SYS_NSTAT ideal-int pkg syscall (freebsd-386), const SYS_NTP_ADJTIME ideal-int pkg syscall (freebsd-386), const SYS_NTP_GETTIME ideal-int pkg syscall (freebsd-386), const SYS_OBREAK ideal-int pkg syscall (freebsd-386), const SYS_OPEN ideal-int pkg syscall (freebsd-386), const SYS_OPENAT ideal-int pkg syscall (freebsd-386), const SYS_OPENBSD_POLL ideal-int pkg syscall (freebsd-386), const SYS_OVADVISE ideal-int pkg syscall (freebsd-386), const SYS_PATHCONF ideal-int pkg syscall (freebsd-386), const SYS_PDFORK ideal-int pkg syscall (freebsd-386), const SYS_PDGETPID ideal-int pkg syscall (freebsd-386), const SYS_PDKILL ideal-int pkg syscall (freebsd-386), const SYS_PIPE ideal-int pkg syscall (freebsd-386), const SYS_POLL ideal-int pkg syscall (freebsd-386), const SYS_POSIX_FADVISE ideal-int pkg syscall (freebsd-386), const SYS_POSIX_FALLOCATE ideal-int pkg syscall (freebsd-386), const SYS_POSIX_OPENPT ideal-int pkg syscall (freebsd-386), const SYS_PREAD ideal-int pkg syscall (freebsd-386), const SYS_PREADV ideal-int pkg syscall (freebsd-386), const SYS_PROFIL ideal-int pkg syscall (freebsd-386), const SYS_PSELECT ideal-int pkg syscall (freebsd-386), const SYS_PTRACE ideal-int pkg syscall (freebsd-386), const SYS_PWRITE ideal-int pkg syscall (freebsd-386), const SYS_PWRITEV ideal-int pkg syscall (freebsd-386), const SYS_QUOTACTL ideal-int pkg syscall (freebsd-386), const SYS_RCTL_ADD_RULE ideal-int pkg syscall (freebsd-386), const SYS_RCTL_GET_LIMITS ideal-int pkg syscall (freebsd-386), const SYS_RCTL_GET_RACCT ideal-int pkg syscall (freebsd-386), const SYS_RCTL_GET_RULES ideal-int pkg syscall (freebsd-386), const SYS_RCTL_REMOVE_RULE ideal-int pkg syscall (freebsd-386), const SYS_READ ideal-int pkg syscall (freebsd-386), const SYS_READLINK ideal-int pkg syscall (freebsd-386), const SYS_READLINKAT ideal-int pkg syscall (freebsd-386), const SYS_READV ideal-int pkg syscall (freebsd-386), const SYS_REBOOT ideal-int pkg syscall (freebsd-386), const SYS_RECVFROM ideal-int pkg syscall (freebsd-386), const SYS_RECVMSG ideal-int pkg syscall (freebsd-386), const SYS_RENAME ideal-int pkg syscall (freebsd-386), const SYS_RENAMEAT ideal-int pkg syscall (freebsd-386), const SYS_REVOKE ideal-int pkg syscall (freebsd-386), const SYS_RFORK ideal-int pkg syscall (freebsd-386), const SYS_RMDIR ideal-int pkg syscall (freebsd-386), const SYS_RTPRIO ideal-int pkg syscall (freebsd-386), const SYS_RTPRIO_THREAD ideal-int pkg syscall (freebsd-386), const SYS_SBRK ideal-int pkg syscall (freebsd-386), const SYS_SCHED_GETPARAM ideal-int pkg syscall (freebsd-386), const SYS_SCHED_GETSCHEDULER ideal-int pkg syscall (freebsd-386), const SYS_SCHED_GET_PRIORITY_MAX ideal-int pkg syscall (freebsd-386), const SYS_SCHED_GET_PRIORITY_MIN ideal-int pkg syscall (freebsd-386), const SYS_SCHED_RR_GET_INTERVAL ideal-int pkg syscall (freebsd-386), const SYS_SCHED_SETPARAM ideal-int pkg syscall (freebsd-386), const SYS_SCHED_SETSCHEDULER ideal-int pkg syscall (freebsd-386), const SYS_SCHED_YIELD ideal-int pkg syscall (freebsd-386), const SYS_SCTP_GENERIC_RECVMSG ideal-int pkg syscall (freebsd-386), const SYS_SCTP_GENERIC_SENDMSG ideal-int pkg syscall (freebsd-386), const SYS_SCTP_GENERIC_SENDMSG_IOV ideal-int pkg syscall (freebsd-386), const SYS_SCTP_PEELOFF ideal-int pkg syscall (freebsd-386), const SYS_SELECT ideal-int pkg syscall (freebsd-386), const SYS_SENDFILE ideal-int pkg syscall (freebsd-386), const SYS_SENDMSG ideal-int pkg syscall (freebsd-386), const SYS_SENDTO ideal-int pkg syscall (freebsd-386), const SYS_SETAUDIT ideal-int pkg syscall (freebsd-386), const SYS_SETAUDIT_ADDR ideal-int pkg syscall (freebsd-386), const SYS_SETAUID ideal-int pkg syscall (freebsd-386), const SYS_SETCONTEXT ideal-int pkg syscall (freebsd-386), const SYS_SETEGID ideal-int pkg syscall (freebsd-386), const SYS_SETEUID ideal-int pkg syscall (freebsd-386), const SYS_SETFIB ideal-int pkg syscall (freebsd-386), const SYS_SETGID ideal-int pkg syscall (freebsd-386), const SYS_SETGROUPS ideal-int pkg syscall (freebsd-386), const SYS_SETITIMER ideal-int pkg syscall (freebsd-386), const SYS_SETLOGIN ideal-int pkg syscall (freebsd-386), const SYS_SETLOGINCLASS ideal-int pkg syscall (freebsd-386), const SYS_SETPGID ideal-int pkg syscall (freebsd-386), const SYS_SETPRIORITY ideal-int pkg syscall (freebsd-386), const SYS_SETREGID ideal-int pkg syscall (freebsd-386), const SYS_SETRESGID ideal-int pkg syscall (freebsd-386), const SYS_SETRESUID ideal-int pkg syscall (freebsd-386), const SYS_SETREUID ideal-int pkg syscall (freebsd-386), const SYS_SETRLIMIT ideal-int pkg syscall (freebsd-386), const SYS_SETSID ideal-int pkg syscall (freebsd-386), const SYS_SETSOCKOPT ideal-int pkg syscall (freebsd-386), const SYS_SETTIMEOFDAY ideal-int pkg syscall (freebsd-386), const SYS_SETUID ideal-int pkg syscall (freebsd-386), const SYS_SHM_OPEN ideal-int pkg syscall (freebsd-386), const SYS_SHM_UNLINK ideal-int pkg syscall (freebsd-386), const SYS_SHUTDOWN ideal-int pkg syscall (freebsd-386), const SYS_SIGACTION ideal-int pkg syscall (freebsd-386), const SYS_SIGALTSTACK ideal-int pkg syscall (freebsd-386), const SYS_SIGPENDING ideal-int pkg syscall (freebsd-386), const SYS_SIGPROCMASK ideal-int pkg syscall (freebsd-386), const SYS_SIGQUEUE ideal-int pkg syscall (freebsd-386), const SYS_SIGRETURN ideal-int pkg syscall (freebsd-386), const SYS_SIGSUSPEND ideal-int pkg syscall (freebsd-386), const SYS_SIGTIMEDWAIT ideal-int pkg syscall (freebsd-386), const SYS_SIGWAIT ideal-int pkg syscall (freebsd-386), const SYS_SIGWAITINFO ideal-int pkg syscall (freebsd-386), const SYS_SOCKET ideal-int pkg syscall (freebsd-386), const SYS_SOCKETPAIR ideal-int pkg syscall (freebsd-386), const SYS_SSTK ideal-int pkg syscall (freebsd-386), const SYS_STAT ideal-int pkg syscall (freebsd-386), const SYS_STATFS ideal-int pkg syscall (freebsd-386), const SYS_SWAPCONTEXT ideal-int pkg syscall (freebsd-386), const SYS_SWAPOFF ideal-int pkg syscall (freebsd-386), const SYS_SWAPON ideal-int pkg syscall (freebsd-386), const SYS_SYMLINK ideal-int pkg syscall (freebsd-386), const SYS_SYMLINKAT ideal-int pkg syscall (freebsd-386), const SYS_SYNC ideal-int pkg syscall (freebsd-386), const SYS_SYSARCH ideal-int pkg syscall (freebsd-386), const SYS_THR_CREATE ideal-int pkg syscall (freebsd-386), const SYS_THR_EXIT ideal-int pkg syscall (freebsd-386), const SYS_THR_KILL ideal-int pkg syscall (freebsd-386), const SYS_THR_KILL2 ideal-int pkg syscall (freebsd-386), const SYS_THR_NEW ideal-int pkg syscall (freebsd-386), const SYS_THR_SELF ideal-int pkg syscall (freebsd-386), const SYS_THR_SET_NAME ideal-int pkg syscall (freebsd-386), const SYS_THR_SUSPEND ideal-int pkg syscall (freebsd-386), const SYS_THR_WAKE ideal-int pkg syscall (freebsd-386), const SYS_TRUNCATE ideal-int pkg syscall (freebsd-386), const SYS_UMASK ideal-int pkg syscall (freebsd-386), const SYS_UNDELETE ideal-int pkg syscall (freebsd-386), const SYS_UNLINK ideal-int pkg syscall (freebsd-386), const SYS_UNLINKAT ideal-int pkg syscall (freebsd-386), const SYS_UNMOUNT ideal-int pkg syscall (freebsd-386), const SYS_UTIMES ideal-int pkg syscall (freebsd-386), const SYS_UTRACE ideal-int pkg syscall (freebsd-386), const SYS_UUIDGEN ideal-int pkg syscall (freebsd-386), const SYS_VFORK ideal-int pkg syscall (freebsd-386), const SYS_WAIT4 ideal-int pkg syscall (freebsd-386), const SYS_WRITE ideal-int pkg syscall (freebsd-386), const SYS_WRITEV ideal-int pkg syscall (freebsd-386), const SYS_YIELD ideal-int pkg syscall (freebsd-386), const SYS__UMTX_LOCK ideal-int pkg syscall (freebsd-386), const SYS__UMTX_OP ideal-int pkg syscall (freebsd-386), const SYS__UMTX_UNLOCK ideal-int pkg syscall (freebsd-386), const SYS___ACL_ACLCHECK_FD ideal-int pkg syscall (freebsd-386), const SYS___ACL_ACLCHECK_FILE ideal-int pkg syscall (freebsd-386), const SYS___ACL_ACLCHECK_LINK ideal-int pkg syscall (freebsd-386), const SYS___ACL_DELETE_FD ideal-int pkg syscall (freebsd-386), const SYS___ACL_DELETE_FILE ideal-int pkg syscall (freebsd-386), const SYS___ACL_DELETE_LINK ideal-int pkg syscall (freebsd-386), const SYS___ACL_GET_FD ideal-int pkg syscall (freebsd-386), const SYS___ACL_GET_FILE ideal-int pkg syscall (freebsd-386), const SYS___ACL_GET_LINK ideal-int pkg syscall (freebsd-386), const SYS___ACL_SET_FD ideal-int pkg syscall (freebsd-386), const SYS___ACL_SET_FILE ideal-int pkg syscall (freebsd-386), const SYS___ACL_SET_LINK ideal-int pkg syscall (freebsd-386), const SYS___GETCWD ideal-int pkg syscall (freebsd-386), const SYS___MAC_EXECVE ideal-int pkg syscall (freebsd-386), const SYS___MAC_GET_FD ideal-int pkg syscall (freebsd-386), const SYS___MAC_GET_FILE ideal-int pkg syscall (freebsd-386), const SYS___MAC_GET_LINK ideal-int pkg syscall (freebsd-386), const SYS___MAC_GET_PID ideal-int pkg syscall (freebsd-386), const SYS___MAC_GET_PROC ideal-int pkg syscall (freebsd-386), const SYS___MAC_SET_FD ideal-int pkg syscall (freebsd-386), const SYS___MAC_SET_FILE ideal-int pkg syscall (freebsd-386), const SYS___MAC_SET_LINK ideal-int pkg syscall (freebsd-386), const SYS___MAC_SET_PROC ideal-int pkg syscall (freebsd-386), const SYS___SETUGID ideal-int pkg syscall (freebsd-386), const SYS___SYSCTL ideal-int pkg syscall (freebsd-386), const SizeofBpfHdr ideal-int pkg syscall (freebsd-386), const SizeofBpfInsn ideal-int pkg syscall (freebsd-386), const SizeofBpfProgram ideal-int pkg syscall (freebsd-386), const SizeofBpfStat ideal-int pkg syscall (freebsd-386), const SizeofBpfVersion ideal-int pkg syscall (freebsd-386), const SizeofBpfZbuf ideal-int pkg syscall (freebsd-386), const SizeofBpfZbufHeader ideal-int pkg syscall (freebsd-386), const SizeofCmsghdr ideal-int pkg syscall (freebsd-386), const SizeofIPMreq ideal-int pkg syscall (freebsd-386), const SizeofIPMreqn ideal-int pkg syscall (freebsd-386), const SizeofIPv6Mreq ideal-int pkg syscall (freebsd-386), const SizeofIfData ideal-int pkg syscall (freebsd-386), const SizeofIfMsghdr ideal-int pkg syscall (freebsd-386), const SizeofIfaMsghdr ideal-int pkg syscall (freebsd-386), const SizeofIfmaMsghdr ideal-int pkg syscall (freebsd-386), const SizeofInet6Pktinfo ideal-int pkg syscall (freebsd-386), const SizeofLinger ideal-int pkg syscall (freebsd-386), const SizeofMsghdr ideal-int pkg syscall (freebsd-386), const SizeofRtMetrics ideal-int pkg syscall (freebsd-386), const SizeofRtMsghdr ideal-int pkg syscall (freebsd-386), const SizeofSockaddrAny ideal-int pkg syscall (freebsd-386), const SizeofSockaddrDatalink ideal-int pkg syscall (freebsd-386), const SizeofSockaddrInet4 ideal-int pkg syscall (freebsd-386), const SizeofSockaddrInet6 ideal-int pkg syscall (freebsd-386), const SizeofSockaddrUnix ideal-int pkg syscall (freebsd-386), const TCP_CA_NAME_MAX ideal-int pkg syscall (freebsd-386), const TCP_CONGESTION ideal-int pkg syscall (freebsd-386), const TCP_INFO ideal-int pkg syscall (freebsd-386), const TCP_MAXBURST ideal-int pkg syscall (freebsd-386), const TCP_MAXHLEN ideal-int pkg syscall (freebsd-386), const TCP_MAXOLEN ideal-int pkg syscall (freebsd-386), const TCP_MAXSEG ideal-int pkg syscall (freebsd-386), const TCP_MAXWIN ideal-int pkg syscall (freebsd-386), const TCP_MAX_SACK ideal-int pkg syscall (freebsd-386), const TCP_MAX_WINSHIFT ideal-int pkg syscall (freebsd-386), const TCP_MD5SIG ideal-int pkg syscall (freebsd-386), const TCP_MINMSS ideal-int pkg syscall (freebsd-386), const TCP_MSS ideal-int pkg syscall (freebsd-386), const TCP_NOOPT ideal-int pkg syscall (freebsd-386), const TCP_NOPUSH ideal-int pkg syscall (freebsd-386), const TIOCCBRK ideal-int pkg syscall (freebsd-386), const TIOCCDTR ideal-int pkg syscall (freebsd-386), const TIOCCONS ideal-int pkg syscall (freebsd-386), const TIOCDRAIN ideal-int pkg syscall (freebsd-386), const TIOCEXCL ideal-int pkg syscall (freebsd-386), const TIOCEXT ideal-int pkg syscall (freebsd-386), const TIOCFLUSH ideal-int pkg syscall (freebsd-386), const TIOCGDRAINWAIT ideal-int pkg syscall (freebsd-386), const TIOCGETA ideal-int pkg syscall (freebsd-386), const TIOCGETD ideal-int pkg syscall (freebsd-386), const TIOCGPGRP ideal-int pkg syscall (freebsd-386), const TIOCGPTN ideal-int pkg syscall (freebsd-386), const TIOCGSID ideal-int pkg syscall (freebsd-386), const TIOCGWINSZ ideal-int pkg syscall (freebsd-386), const TIOCMBIC ideal-int pkg syscall (freebsd-386), const TIOCMBIS ideal-int pkg syscall (freebsd-386), const TIOCMGDTRWAIT ideal-int pkg syscall (freebsd-386), const TIOCMGET ideal-int pkg syscall (freebsd-386), const TIOCMSDTRWAIT ideal-int pkg syscall (freebsd-386), const TIOCMSET ideal-int pkg syscall (freebsd-386), const TIOCM_CAR ideal-int pkg syscall (freebsd-386), const TIOCM_CD ideal-int pkg syscall (freebsd-386), const TIOCM_CTS ideal-int pkg syscall (freebsd-386), const TIOCM_DCD ideal-int pkg syscall (freebsd-386), const TIOCM_DSR ideal-int pkg syscall (freebsd-386), const TIOCM_DTR ideal-int pkg syscall (freebsd-386), const TIOCM_LE ideal-int pkg syscall (freebsd-386), const TIOCM_RI ideal-int pkg syscall (freebsd-386), const TIOCM_RNG ideal-int pkg syscall (freebsd-386), const TIOCM_RTS ideal-int pkg syscall (freebsd-386), const TIOCM_SR ideal-int pkg syscall (freebsd-386), const TIOCM_ST ideal-int pkg syscall (freebsd-386), const TIOCNOTTY ideal-int pkg syscall (freebsd-386), const TIOCNXCL ideal-int pkg syscall (freebsd-386), const TIOCOUTQ ideal-int pkg syscall (freebsd-386), const TIOCPKT ideal-int pkg syscall (freebsd-386), const TIOCPKT_DATA ideal-int pkg syscall (freebsd-386), const TIOCPKT_DOSTOP ideal-int pkg syscall (freebsd-386), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (freebsd-386), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (freebsd-386), const TIOCPKT_IOCTL ideal-int pkg syscall (freebsd-386), const TIOCPKT_NOSTOP ideal-int pkg syscall (freebsd-386), const TIOCPKT_START ideal-int pkg syscall (freebsd-386), const TIOCPKT_STOP ideal-int pkg syscall (freebsd-386), const TIOCPTMASTER ideal-int pkg syscall (freebsd-386), const TIOCSBRK ideal-int pkg syscall (freebsd-386), const TIOCSCTTY ideal-int pkg syscall (freebsd-386), const TIOCSDRAINWAIT ideal-int pkg syscall (freebsd-386), const TIOCSDTR ideal-int pkg syscall (freebsd-386), const TIOCSETA ideal-int pkg syscall (freebsd-386), const TIOCSETAF ideal-int pkg syscall (freebsd-386), const TIOCSETAW ideal-int pkg syscall (freebsd-386), const TIOCSETD ideal-int pkg syscall (freebsd-386), const TIOCSIG ideal-int pkg syscall (freebsd-386), const TIOCSPGRP ideal-int pkg syscall (freebsd-386), const TIOCSTART ideal-int pkg syscall (freebsd-386), const TIOCSTAT ideal-int pkg syscall (freebsd-386), const TIOCSTI ideal-int pkg syscall (freebsd-386), const TIOCSTOP ideal-int pkg syscall (freebsd-386), const TIOCSWINSZ ideal-int pkg syscall (freebsd-386), const TIOCTIMESTAMP ideal-int pkg syscall (freebsd-386), const TIOCUCNTL ideal-int pkg syscall (freebsd-386), const WCONTINUED ideal-int pkg syscall (freebsd-386), const WCOREFLAG ideal-int pkg syscall (freebsd-386), const WLINUXCLONE ideal-int pkg syscall (freebsd-386), const WNOHANG ideal-int pkg syscall (freebsd-386), const WNOWAIT ideal-int pkg syscall (freebsd-386), const WSTOPPED ideal-int pkg syscall (freebsd-386), const WUNTRACED ideal-int pkg syscall (freebsd-386), func Accept(int) (int, Sockaddr, error) pkg syscall (freebsd-386), func Access(string, uint32) error pkg syscall (freebsd-386), func Adjtime(*Timeval, *Timeval) error pkg syscall (freebsd-386), func Bind(int, Sockaddr) error pkg syscall (freebsd-386), func BpfBuflen(int) (int, error) pkg syscall (freebsd-386), func BpfDatalink(int) (int, error) pkg syscall (freebsd-386), func BpfHeadercmpl(int) (int, error) pkg syscall (freebsd-386), func BpfInterface(int, string) (string, error) pkg syscall (freebsd-386), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (freebsd-386), func BpfStats(int) (*BpfStat, error) pkg syscall (freebsd-386), func BpfStmt(int, int) *BpfInsn pkg syscall (freebsd-386), func BpfTimeout(int) (*Timeval, error) pkg syscall (freebsd-386), func CheckBpfVersion(int) error pkg syscall (freebsd-386), func Chflags(string, int) error pkg syscall (freebsd-386), func Chroot(string) error pkg syscall (freebsd-386), func Close(int) error pkg syscall (freebsd-386), func CloseOnExec(int) pkg syscall (freebsd-386), func CmsgLen(int) int pkg syscall (freebsd-386), func CmsgSpace(int) int pkg syscall (freebsd-386), func Connect(int, Sockaddr) error pkg syscall (freebsd-386), func Dup(int) (int, error) pkg syscall (freebsd-386), func Dup2(int, int) error pkg syscall (freebsd-386), func Fchdir(int) error pkg syscall (freebsd-386), func Fchflags(string, int) error pkg syscall (freebsd-386), func Fchmod(int, uint32) error pkg syscall (freebsd-386), func Fchown(int, int, int) error pkg syscall (freebsd-386), func Flock(int, int) error pkg syscall (freebsd-386), func FlushBpf(int) error pkg syscall (freebsd-386), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (freebsd-386), func Fpathconf(int, int) (int, error) pkg syscall (freebsd-386), func Fstat(int, *Stat_t) error pkg syscall (freebsd-386), func Fstatfs(int, *Statfs_t) error pkg syscall (freebsd-386), func Fsync(int) error pkg syscall (freebsd-386), func Ftruncate(int, int64) error pkg syscall (freebsd-386), func Futimes(int, []Timeval) error pkg syscall (freebsd-386), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (freebsd-386), func Getdtablesize() int pkg syscall (freebsd-386), func Getfsstat([]Statfs_t, int) (int, error) pkg syscall (freebsd-386), func Getpeername(int) (Sockaddr, error) pkg syscall (freebsd-386), func Getpgid(int) (int, error) pkg syscall (freebsd-386), func Getpgrp() int pkg syscall (freebsd-386), func Getpriority(int, int) (int, error) pkg syscall (freebsd-386), func Getrlimit(int, *Rlimit) error pkg syscall (freebsd-386), func Getrusage(int, *Rusage) error pkg syscall (freebsd-386), func Getsid(int) (int, error) pkg syscall (freebsd-386), func Getsockname(int) (Sockaddr, error) pkg syscall (freebsd-386), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (freebsd-386), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (freebsd-386), func GetsockoptIPMreqn(int, int, int) (*IPMreqn, error) pkg syscall (freebsd-386), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (freebsd-386), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (freebsd-386), func GetsockoptInt(int, int, int) (int, error) pkg syscall (freebsd-386), func Issetugid() bool pkg syscall (freebsd-386), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (freebsd-386), func Kill(int, Signal) error pkg syscall (freebsd-386), func Kqueue() (int, error) pkg syscall (freebsd-386), func Listen(int, int) error pkg syscall (freebsd-386), func Lstat(string, *Stat_t) error pkg syscall (freebsd-386), func Mkfifo(string, uint32) error pkg syscall (freebsd-386), func Mknod(string, uint32, int) error pkg syscall (freebsd-386), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (freebsd-386), func Munmap([]uint8) error pkg syscall (freebsd-386), func Nanosleep(*Timespec, *Timespec) error pkg syscall (freebsd-386), func NsecToTimespec(int64) Timespec pkg syscall (freebsd-386), func Open(string, int, uint32) (int, error) pkg syscall (freebsd-386), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (freebsd-386), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (freebsd-386), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (freebsd-386), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (freebsd-386), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (freebsd-386), func Pathconf(string, int) (int, error) pkg syscall (freebsd-386), func Pipe([]int) error pkg syscall (freebsd-386), func Pread(int, []uint8, int64) (int, error) pkg syscall (freebsd-386), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (freebsd-386), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-386), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-386), func Read(int, []uint8) (int, error) pkg syscall (freebsd-386), func ReadDirent(int, []uint8) (int, error) pkg syscall (freebsd-386), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (freebsd-386), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (freebsd-386), func Revoke(string) error pkg syscall (freebsd-386), func RouteRIB(int, int) ([]uint8, error) pkg syscall (freebsd-386), func Seek(int, int64, int) (int64, error) pkg syscall (freebsd-386), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (freebsd-386), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (freebsd-386), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (freebsd-386), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (freebsd-386), func SetBpf(int, []BpfInsn) error pkg syscall (freebsd-386), func SetBpfBuflen(int, int) (int, error) pkg syscall (freebsd-386), func SetBpfDatalink(int, int) (int, error) pkg syscall (freebsd-386), func SetBpfHeadercmpl(int, int) error pkg syscall (freebsd-386), func SetBpfImmediate(int, int) error pkg syscall (freebsd-386), func SetBpfInterface(int, string) error pkg syscall (freebsd-386), func SetBpfPromisc(int, int) error pkg syscall (freebsd-386), func SetBpfTimeout(int, *Timeval) error pkg syscall (freebsd-386), func SetKevent(*Kevent_t, int, int, int) pkg syscall (freebsd-386), func SetNonblock(int, bool) error pkg syscall (freebsd-386), func Setegid(int) error pkg syscall (freebsd-386), func Seteuid(int) error pkg syscall (freebsd-386), func Setgid(int) error pkg syscall (freebsd-386), func Setgroups([]int) error pkg syscall (freebsd-386), func Setlogin(string) error pkg syscall (freebsd-386), func Setpgid(int, int) error pkg syscall (freebsd-386), func Setpriority(int, int, int) error pkg syscall (freebsd-386), func Setregid(int, int) error pkg syscall (freebsd-386), func Setreuid(int, int) error pkg syscall (freebsd-386), func Setrlimit(int, *Rlimit) error pkg syscall (freebsd-386), func Setsid() (int, error) pkg syscall (freebsd-386), func SetsockoptByte(int, int, int, uint8) error pkg syscall (freebsd-386), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (freebsd-386), func SetsockoptIPMreqn(int, int, int, *IPMreqn) error pkg syscall (freebsd-386), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (freebsd-386), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (freebsd-386), func SetsockoptInt(int, int, int, int) error pkg syscall (freebsd-386), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (freebsd-386), func SetsockoptString(int, int, int, string) error pkg syscall (freebsd-386), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (freebsd-386), func Settimeofday(*Timeval) error pkg syscall (freebsd-386), func Setuid(int) error pkg syscall (freebsd-386), func Shutdown(int, int) error pkg syscall (freebsd-386), func Socket(int, int, int) (int, error) pkg syscall (freebsd-386), func Socketpair(int, int, int) ([2]int, error) pkg syscall (freebsd-386), func Stat(string, *Stat_t) error pkg syscall (freebsd-386), func Statfs(string, *Statfs_t) error pkg syscall (freebsd-386), func StringSlicePtr([]string) []*uint8 pkg syscall (freebsd-386), func Sync() error pkg syscall (freebsd-386), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-386), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-386), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-386), func Sysctl(string) (string, error) pkg syscall (freebsd-386), func SysctlUint32(string) (uint32, error) pkg syscall (freebsd-386), func TimespecToNsec(Timespec) int64 pkg syscall (freebsd-386), func TimevalToNsec(Timeval) int64 pkg syscall (freebsd-386), func Truncate(string, int64) error pkg syscall (freebsd-386), func Umask(int) int pkg syscall (freebsd-386), func Undelete(string) error pkg syscall (freebsd-386), func UnixRights(...int) []uint8 pkg syscall (freebsd-386), func Unmount(string, int) error pkg syscall (freebsd-386), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (freebsd-386), func Write(int, []uint8) (int, error) pkg syscall (freebsd-386), method (*Cmsghdr) SetLen(int) pkg syscall (freebsd-386), method (*Iovec) SetLen(int) pkg syscall (freebsd-386), method (*Msghdr) SetControllen(int) pkg syscall (freebsd-386), type BpfHdr struct pkg syscall (freebsd-386), type BpfHdr struct, Caplen uint32 pkg syscall (freebsd-386), type BpfHdr struct, Datalen uint32 pkg syscall (freebsd-386), type BpfHdr struct, Hdrlen uint16 pkg syscall (freebsd-386), type BpfHdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-386), type BpfHdr struct, Tstamp Timeval pkg syscall (freebsd-386), type BpfInsn struct pkg syscall (freebsd-386), type BpfInsn struct, Code uint16 pkg syscall (freebsd-386), type BpfInsn struct, Jf uint8 pkg syscall (freebsd-386), type BpfInsn struct, Jt uint8 pkg syscall (freebsd-386), type BpfInsn struct, K uint32 pkg syscall (freebsd-386), type BpfProgram struct pkg syscall (freebsd-386), type BpfProgram struct, Insns *BpfInsn pkg syscall (freebsd-386), type BpfProgram struct, Len uint32 pkg syscall (freebsd-386), type BpfStat struct pkg syscall (freebsd-386), type BpfStat struct, Drop uint32 pkg syscall (freebsd-386), type BpfStat struct, Recv uint32 pkg syscall (freebsd-386), type BpfVersion struct pkg syscall (freebsd-386), type BpfVersion struct, Major uint16 pkg syscall (freebsd-386), type BpfVersion struct, Minor uint16 pkg syscall (freebsd-386), type BpfZbuf struct pkg syscall (freebsd-386), type BpfZbuf struct, Bufa *uint8 pkg syscall (freebsd-386), type BpfZbuf struct, Bufb *uint8 pkg syscall (freebsd-386), type BpfZbuf struct, Buflen uint32 pkg syscall (freebsd-386), type BpfZbufHeader struct pkg syscall (freebsd-386), type BpfZbufHeader struct, Kernel_gen uint32 pkg syscall (freebsd-386), type BpfZbufHeader struct, Kernel_len uint32 pkg syscall (freebsd-386), type BpfZbufHeader struct, User_gen uint32 pkg syscall (freebsd-386), type BpfZbufHeader struct, X_bzh_pad [5]uint32 pkg syscall (freebsd-386), type Cmsghdr struct pkg syscall (freebsd-386), type Cmsghdr struct, Len uint32 pkg syscall (freebsd-386), type Cmsghdr struct, Level int32 pkg syscall (freebsd-386), type Cmsghdr struct, Type int32 pkg syscall (freebsd-386), type Credential struct pkg syscall (freebsd-386), type Credential struct, Gid uint32 pkg syscall (freebsd-386), type Credential struct, Groups []uint32 pkg syscall (freebsd-386), type Credential struct, Uid uint32 pkg syscall (freebsd-386), type Dirent struct pkg syscall (freebsd-386), type Dirent struct, Fileno uint32 pkg syscall (freebsd-386), type Dirent struct, Name [256]int8 pkg syscall (freebsd-386), type Dirent struct, Namlen uint8 pkg syscall (freebsd-386), type Dirent struct, Reclen uint16 pkg syscall (freebsd-386), type Dirent struct, Type uint8 pkg syscall (freebsd-386), type FdSet struct pkg syscall (freebsd-386), type FdSet struct, X__fds_bits [32]uint32 pkg syscall (freebsd-386), type Flock_t struct pkg syscall (freebsd-386), type Flock_t struct, Len int64 pkg syscall (freebsd-386), type Flock_t struct, Pid int32 pkg syscall (freebsd-386), type Flock_t struct, Start int64 pkg syscall (freebsd-386), type Flock_t struct, Sysid int32 pkg syscall (freebsd-386), type Flock_t struct, Type int16 pkg syscall (freebsd-386), type Flock_t struct, Whence int16 pkg syscall (freebsd-386), type Fsid struct pkg syscall (freebsd-386), type Fsid struct, Val [2]int32 pkg syscall (freebsd-386), type IPMreqn struct pkg syscall (freebsd-386), type IPMreqn struct, Address [4]uint8 pkg syscall (freebsd-386), type IPMreqn struct, Ifindex int32 pkg syscall (freebsd-386), type IPMreqn struct, Multiaddr [4]uint8 pkg syscall (freebsd-386), type IfData struct pkg syscall (freebsd-386), type IfData struct, Addrlen uint8 pkg syscall (freebsd-386), type IfData struct, Baudrate uint32 pkg syscall (freebsd-386), type IfData struct, Collisions uint32 pkg syscall (freebsd-386), type IfData struct, Datalen uint8 pkg syscall (freebsd-386), type IfData struct, Epoch int32 pkg syscall (freebsd-386), type IfData struct, Hdrlen uint8 pkg syscall (freebsd-386), type IfData struct, Hwassist uint32 pkg syscall (freebsd-386), type IfData struct, Ibytes uint32 pkg syscall (freebsd-386), type IfData struct, Ierrors uint32 pkg syscall (freebsd-386), type IfData struct, Imcasts uint32 pkg syscall (freebsd-386), type IfData struct, Ipackets uint32 pkg syscall (freebsd-386), type IfData struct, Iqdrops uint32 pkg syscall (freebsd-386), type IfData struct, Lastchange Timeval pkg syscall (freebsd-386), type IfData struct, Link_state uint8 pkg syscall (freebsd-386), type IfData struct, Metric uint32 pkg syscall (freebsd-386), type IfData struct, Mtu uint32 pkg syscall (freebsd-386), type IfData struct, Noproto uint32 pkg syscall (freebsd-386), type IfData struct, Obytes uint32 pkg syscall (freebsd-386), type IfData struct, Oerrors uint32 pkg syscall (freebsd-386), type IfData struct, Omcasts uint32 pkg syscall (freebsd-386), type IfData struct, Opackets uint32 pkg syscall (freebsd-386), type IfData struct, Physical uint8 pkg syscall (freebsd-386), type IfData struct, Spare_char1 uint8 pkg syscall (freebsd-386), type IfData struct, Spare_char2 uint8 pkg syscall (freebsd-386), type IfData struct, Type uint8 pkg syscall (freebsd-386), type IfMsghdr struct pkg syscall (freebsd-386), type IfMsghdr struct, Addrs int32 pkg syscall (freebsd-386), type IfMsghdr struct, Data IfData pkg syscall (freebsd-386), type IfMsghdr struct, Flags int32 pkg syscall (freebsd-386), type IfMsghdr struct, Index uint16 pkg syscall (freebsd-386), type IfMsghdr struct, Msglen uint16 pkg syscall (freebsd-386), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-386), type IfMsghdr struct, Type uint8 pkg syscall (freebsd-386), type IfMsghdr struct, Version uint8 pkg syscall (freebsd-386), type IfaMsghdr struct pkg syscall (freebsd-386), type IfaMsghdr struct, Addrs int32 pkg syscall (freebsd-386), type IfaMsghdr struct, Flags int32 pkg syscall (freebsd-386), type IfaMsghdr struct, Index uint16 pkg syscall (freebsd-386), type IfaMsghdr struct, Metric int32 pkg syscall (freebsd-386), type IfaMsghdr struct, Msglen uint16 pkg syscall (freebsd-386), type IfaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-386), type IfaMsghdr struct, Type uint8 pkg syscall (freebsd-386), type IfaMsghdr struct, Version uint8 pkg syscall (freebsd-386), type IfmaMsghdr struct pkg syscall (freebsd-386), type IfmaMsghdr struct, Addrs int32 pkg syscall (freebsd-386), type IfmaMsghdr struct, Flags int32 pkg syscall (freebsd-386), type IfmaMsghdr struct, Index uint16 pkg syscall (freebsd-386), type IfmaMsghdr struct, Msglen uint16 pkg syscall (freebsd-386), type IfmaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-386), type IfmaMsghdr struct, Type uint8 pkg syscall (freebsd-386), type IfmaMsghdr struct, Version uint8 pkg syscall (freebsd-386), type Inet6Pktinfo struct pkg syscall (freebsd-386), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (freebsd-386), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (freebsd-386), type InterfaceAddrMessage struct pkg syscall (freebsd-386), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (freebsd-386), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (freebsd-386), type InterfaceMessage struct pkg syscall (freebsd-386), type InterfaceMessage struct, Data []uint8 pkg syscall (freebsd-386), type InterfaceMessage struct, Header IfMsghdr pkg syscall (freebsd-386), type InterfaceMulticastAddrMessage struct pkg syscall (freebsd-386), type InterfaceMulticastAddrMessage struct, Data []uint8 pkg syscall (freebsd-386), type InterfaceMulticastAddrMessage struct, Header IfmaMsghdr pkg syscall (freebsd-386), type Iovec struct pkg syscall (freebsd-386), type Iovec struct, Base *uint8 pkg syscall (freebsd-386), type Iovec struct, Len uint32 pkg syscall (freebsd-386), type Kevent_t struct pkg syscall (freebsd-386), type Kevent_t struct, Data int32 pkg syscall (freebsd-386), type Kevent_t struct, Fflags uint32 pkg syscall (freebsd-386), type Kevent_t struct, Filter int16 pkg syscall (freebsd-386), type Kevent_t struct, Flags uint16 pkg syscall (freebsd-386), type Kevent_t struct, Ident uint32 pkg syscall (freebsd-386), type Kevent_t struct, Udata *uint8 pkg syscall (freebsd-386), type Msghdr struct pkg syscall (freebsd-386), type Msghdr struct, Control *uint8 pkg syscall (freebsd-386), type Msghdr struct, Controllen uint32 pkg syscall (freebsd-386), type Msghdr struct, Flags int32 pkg syscall (freebsd-386), type Msghdr struct, Iov *Iovec pkg syscall (freebsd-386), type Msghdr struct, Iovlen int32 pkg syscall (freebsd-386), type Msghdr struct, Name *uint8 pkg syscall (freebsd-386), type Msghdr struct, Namelen uint32 pkg syscall (freebsd-386), type RawSockaddr struct, Data [14]int8 pkg syscall (freebsd-386), type RawSockaddr struct, Family uint8 pkg syscall (freebsd-386), type RawSockaddr struct, Len uint8 pkg syscall (freebsd-386), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (freebsd-386), type RawSockaddrDatalink struct pkg syscall (freebsd-386), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (freebsd-386), type RawSockaddrDatalink struct, Data [46]int8 pkg syscall (freebsd-386), type RawSockaddrDatalink struct, Family uint8 pkg syscall (freebsd-386), type RawSockaddrDatalink struct, Index uint16 pkg syscall (freebsd-386), type RawSockaddrDatalink struct, Len uint8 pkg syscall (freebsd-386), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (freebsd-386), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (freebsd-386), type RawSockaddrDatalink struct, Type uint8 pkg syscall (freebsd-386), type RawSockaddrInet4 struct, Family uint8 pkg syscall (freebsd-386), type RawSockaddrInet4 struct, Len uint8 pkg syscall (freebsd-386), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (freebsd-386), type RawSockaddrInet6 struct pkg syscall (freebsd-386), type RawSockaddrInet6 struct, Addr [16]uint8 pkg syscall (freebsd-386), type RawSockaddrInet6 struct, Family uint8 pkg syscall (freebsd-386), type RawSockaddrInet6 struct, Flowinfo uint32 pkg syscall (freebsd-386), type RawSockaddrInet6 struct, Len uint8 pkg syscall (freebsd-386), type RawSockaddrInet6 struct, Port uint16 pkg syscall (freebsd-386), type RawSockaddrInet6 struct, Scope_id uint32 pkg syscall (freebsd-386), type RawSockaddrUnix struct pkg syscall (freebsd-386), type RawSockaddrUnix struct, Family uint8 pkg syscall (freebsd-386), type RawSockaddrUnix struct, Len uint8 pkg syscall (freebsd-386), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (freebsd-386), type Rlimit struct pkg syscall (freebsd-386), type Rlimit struct, Cur int64 pkg syscall (freebsd-386), type Rlimit struct, Max int64 pkg syscall (freebsd-386), type RouteMessage struct pkg syscall (freebsd-386), type RouteMessage struct, Data []uint8 pkg syscall (freebsd-386), type RouteMessage struct, Header RtMsghdr pkg syscall (freebsd-386), type RoutingMessage interface, unexported methods pkg syscall (freebsd-386), type RtMetrics struct pkg syscall (freebsd-386), type RtMetrics struct, Expire uint32 pkg syscall (freebsd-386), type RtMetrics struct, Filler [3]uint32 pkg syscall (freebsd-386), type RtMetrics struct, Hopcount uint32 pkg syscall (freebsd-386), type RtMetrics struct, Locks uint32 pkg syscall (freebsd-386), type RtMetrics struct, Mtu uint32 pkg syscall (freebsd-386), type RtMetrics struct, Pksent uint32 pkg syscall (freebsd-386), type RtMetrics struct, Recvpipe uint32 pkg syscall (freebsd-386), type RtMetrics struct, Rtt uint32 pkg syscall (freebsd-386), type RtMetrics struct, Rttvar uint32 pkg syscall (freebsd-386), type RtMetrics struct, Sendpipe uint32 pkg syscall (freebsd-386), type RtMetrics struct, Ssthresh uint32 pkg syscall (freebsd-386), type RtMetrics struct, Weight uint32 pkg syscall (freebsd-386), type RtMsghdr struct pkg syscall (freebsd-386), type RtMsghdr struct, Addrs int32 pkg syscall (freebsd-386), type RtMsghdr struct, Errno int32 pkg syscall (freebsd-386), type RtMsghdr struct, Flags int32 pkg syscall (freebsd-386), type RtMsghdr struct, Fmask int32 pkg syscall (freebsd-386), type RtMsghdr struct, Index uint16 pkg syscall (freebsd-386), type RtMsghdr struct, Inits uint32 pkg syscall (freebsd-386), type RtMsghdr struct, Msglen uint16 pkg syscall (freebsd-386), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-386), type RtMsghdr struct, Pid int32 pkg syscall (freebsd-386), type RtMsghdr struct, Rmx RtMetrics pkg syscall (freebsd-386), type RtMsghdr struct, Seq int32 pkg syscall (freebsd-386), type RtMsghdr struct, Type uint8 pkg syscall (freebsd-386), type RtMsghdr struct, Version uint8 pkg syscall (freebsd-386), type Rusage struct, Idrss int32 pkg syscall (freebsd-386), type Rusage struct, Inblock int32 pkg syscall (freebsd-386), type Rusage struct, Isrss int32 pkg syscall (freebsd-386), type Rusage struct, Ixrss int32 pkg syscall (freebsd-386), type Rusage struct, Majflt int32 pkg syscall (freebsd-386), type Rusage struct, Maxrss int32 pkg syscall (freebsd-386), type Rusage struct, Minflt int32 pkg syscall (freebsd-386), type Rusage struct, Msgrcv int32 pkg syscall (freebsd-386), type Rusage struct, Msgsnd int32 pkg syscall (freebsd-386), type Rusage struct, Nivcsw int32 pkg syscall (freebsd-386), type Rusage struct, Nsignals int32 pkg syscall (freebsd-386), type Rusage struct, Nswap int32 pkg syscall (freebsd-386), type Rusage struct, Nvcsw int32 pkg syscall (freebsd-386), type Rusage struct, Oublock int32 pkg syscall (freebsd-386), type Rusage struct, Stime Timeval pkg syscall (freebsd-386), type Rusage struct, Utime Timeval pkg syscall (freebsd-386), type SockaddrDatalink struct pkg syscall (freebsd-386), type SockaddrDatalink struct, Alen uint8 pkg syscall (freebsd-386), type SockaddrDatalink struct, Data [46]int8 pkg syscall (freebsd-386), type SockaddrDatalink struct, Family uint8 pkg syscall (freebsd-386), type SockaddrDatalink struct, Index uint16 pkg syscall (freebsd-386), type SockaddrDatalink struct, Len uint8 pkg syscall (freebsd-386), type SockaddrDatalink struct, Nlen uint8 pkg syscall (freebsd-386), type SockaddrDatalink struct, Slen uint8 pkg syscall (freebsd-386), type SockaddrDatalink struct, Type uint8 pkg syscall (freebsd-386), type SocketControlMessage struct pkg syscall (freebsd-386), type SocketControlMessage struct, Data []uint8 pkg syscall (freebsd-386), type SocketControlMessage struct, Header Cmsghdr pkg syscall (freebsd-386), type Stat_t struct pkg syscall (freebsd-386), type Stat_t struct, Atimespec Timespec pkg syscall (freebsd-386), type Stat_t struct, Birthtimespec Timespec pkg syscall (freebsd-386), type Stat_t struct, Blksize uint32 pkg syscall (freebsd-386), type Stat_t struct, Blocks int64 pkg syscall (freebsd-386), type Stat_t struct, Ctimespec Timespec pkg syscall (freebsd-386), type Stat_t struct, Dev uint32 pkg syscall (freebsd-386), type Stat_t struct, Flags uint32 pkg syscall (freebsd-386), type Stat_t struct, Gen uint32 pkg syscall (freebsd-386), type Stat_t struct, Gid uint32 pkg syscall (freebsd-386), type Stat_t struct, Ino uint32 pkg syscall (freebsd-386), type Stat_t struct, Lspare int32 pkg syscall (freebsd-386), type Stat_t struct, Mode uint16 pkg syscall (freebsd-386), type Stat_t struct, Mtimespec Timespec pkg syscall (freebsd-386), type Stat_t struct, Nlink uint16 pkg syscall (freebsd-386), type Stat_t struct, Pad_cgo_0 [8]uint8 pkg syscall (freebsd-386), type Stat_t struct, Rdev uint32 pkg syscall (freebsd-386), type Stat_t struct, Size int64 pkg syscall (freebsd-386), type Stat_t struct, Uid uint32 pkg syscall (freebsd-386), type Statfs_t struct pkg syscall (freebsd-386), type Statfs_t struct, Asyncreads uint64 pkg syscall (freebsd-386), type Statfs_t struct, Asyncwrites uint64 pkg syscall (freebsd-386), type Statfs_t struct, Bavail int64 pkg syscall (freebsd-386), type Statfs_t struct, Bfree uint64 pkg syscall (freebsd-386), type Statfs_t struct, Blocks uint64 pkg syscall (freebsd-386), type Statfs_t struct, Bsize uint64 pkg syscall (freebsd-386), type Statfs_t struct, Charspare [80]int8 pkg syscall (freebsd-386), type Statfs_t struct, Ffree int64 pkg syscall (freebsd-386), type Statfs_t struct, Files uint64 pkg syscall (freebsd-386), type Statfs_t struct, Flags uint64 pkg syscall (freebsd-386), type Statfs_t struct, Fsid Fsid pkg syscall (freebsd-386), type Statfs_t struct, Fstypename [16]int8 pkg syscall (freebsd-386), type Statfs_t struct, Iosize uint64 pkg syscall (freebsd-386), type Statfs_t struct, Mntfromname [88]int8 pkg syscall (freebsd-386), type Statfs_t struct, Mntonname [88]int8 pkg syscall (freebsd-386), type Statfs_t struct, Namemax uint32 pkg syscall (freebsd-386), type Statfs_t struct, Owner uint32 pkg syscall (freebsd-386), type Statfs_t struct, Spare [10]uint64 pkg syscall (freebsd-386), type Statfs_t struct, Syncreads uint64 pkg syscall (freebsd-386), type Statfs_t struct, Syncwrites uint64 pkg syscall (freebsd-386), type Statfs_t struct, Type uint32 pkg syscall (freebsd-386), type Statfs_t struct, Version uint32 pkg syscall (freebsd-386), type SysProcAttr struct, Chroot string pkg syscall (freebsd-386), type SysProcAttr struct, Credential *Credential pkg syscall (freebsd-386), type SysProcAttr struct, Noctty bool pkg syscall (freebsd-386), type SysProcAttr struct, Ptrace bool pkg syscall (freebsd-386), type SysProcAttr struct, Setctty bool pkg syscall (freebsd-386), type SysProcAttr struct, Setpgid bool pkg syscall (freebsd-386), type SysProcAttr struct, Setsid bool pkg syscall (freebsd-386), type Timespec struct, Nsec int32 pkg syscall (freebsd-386), type Timespec struct, Sec int32 pkg syscall (freebsd-386), type Timeval struct, Sec int32 pkg syscall (freebsd-386), type Timeval struct, Usec int32 pkg syscall (freebsd-386), type WaitStatus uint32 pkg syscall (freebsd-386), var Stderr int pkg syscall (freebsd-386), var Stdin int pkg syscall (freebsd-386), var Stdout int pkg syscall (freebsd-amd64), const AF_APPLETALK ideal-int pkg syscall (freebsd-amd64), const AF_ARP ideal-int pkg syscall (freebsd-amd64), const AF_ATM ideal-int pkg syscall (freebsd-amd64), const AF_BLUETOOTH ideal-int pkg syscall (freebsd-amd64), const AF_CCITT ideal-int pkg syscall (freebsd-amd64), const AF_CHAOS ideal-int pkg syscall (freebsd-amd64), const AF_CNT ideal-int pkg syscall (freebsd-amd64), const AF_COIP ideal-int pkg syscall (freebsd-amd64), const AF_DATAKIT ideal-int pkg syscall (freebsd-amd64), const AF_DECnet ideal-int pkg syscall (freebsd-amd64), const AF_DLI ideal-int pkg syscall (freebsd-amd64), const AF_E164 ideal-int pkg syscall (freebsd-amd64), const AF_ECMA ideal-int pkg syscall (freebsd-amd64), const AF_HYLINK ideal-int pkg syscall (freebsd-amd64), const AF_IEEE80211 ideal-int pkg syscall (freebsd-amd64), const AF_IMPLINK ideal-int pkg syscall (freebsd-amd64), const AF_IPX ideal-int pkg syscall (freebsd-amd64), const AF_ISDN ideal-int pkg syscall (freebsd-amd64), const AF_ISO ideal-int pkg syscall (freebsd-amd64), const AF_LAT ideal-int pkg syscall (freebsd-amd64), const AF_LINK ideal-int pkg syscall (freebsd-amd64), const AF_LOCAL ideal-int pkg syscall (freebsd-amd64), const AF_MAX ideal-int pkg syscall (freebsd-amd64), const AF_NATM ideal-int pkg syscall (freebsd-amd64), const AF_NETBIOS ideal-int pkg syscall (freebsd-amd64), const AF_NETGRAPH ideal-int pkg syscall (freebsd-amd64), const AF_OSI ideal-int pkg syscall (freebsd-amd64), const AF_PUP ideal-int pkg syscall (freebsd-amd64), const AF_ROUTE ideal-int pkg syscall (freebsd-amd64), const AF_SCLUSTER ideal-int pkg syscall (freebsd-amd64), const AF_SIP ideal-int pkg syscall (freebsd-amd64), const AF_SLOW ideal-int pkg syscall (freebsd-amd64), const AF_SNA ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR00 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR01 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR02 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR03 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR04 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR05 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR06 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR07 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR08 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR09 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR10 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR11 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR12 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR13 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR14 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR15 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR16 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR17 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR18 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR19 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR20 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR21 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR22 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR23 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR24 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR25 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR26 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR27 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR28 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR29 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR30 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR31 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR32 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR33 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR34 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR35 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR36 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR37 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR38 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR39 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR40 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR41 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR42 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR43 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR44 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR45 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR46 ideal-int pkg syscall (freebsd-amd64), const AF_VENDOR47 ideal-int pkg syscall (freebsd-amd64), const BIOCFEEDBACK ideal-int pkg syscall (freebsd-amd64), const BIOCFLUSH ideal-int pkg syscall (freebsd-amd64), const BIOCGBLEN ideal-int pkg syscall (freebsd-amd64), const BIOCGDIRECTION ideal-int pkg syscall (freebsd-amd64), const BIOCGDLT ideal-int pkg syscall (freebsd-amd64), const BIOCGDLTLIST ideal-int pkg syscall (freebsd-amd64), const BIOCGETBUFMODE ideal-int pkg syscall (freebsd-amd64), const BIOCGETIF ideal-int pkg syscall (freebsd-amd64), const BIOCGETZMAX ideal-int pkg syscall (freebsd-amd64), const BIOCGHDRCMPLT ideal-int pkg syscall (freebsd-amd64), const BIOCGRSIG ideal-int pkg syscall (freebsd-amd64), const BIOCGRTIMEOUT ideal-int pkg syscall (freebsd-amd64), const BIOCGSEESENT ideal-int pkg syscall (freebsd-amd64), const BIOCGSTATS ideal-int pkg syscall (freebsd-amd64), const BIOCIMMEDIATE ideal-int pkg syscall (freebsd-amd64), const BIOCLOCK ideal-int pkg syscall (freebsd-amd64), const BIOCPROMISC ideal-int pkg syscall (freebsd-amd64), const BIOCROTZBUF ideal-int pkg syscall (freebsd-amd64), const BIOCSBLEN ideal-int pkg syscall (freebsd-amd64), const BIOCSDIRECTION ideal-int pkg syscall (freebsd-amd64), const BIOCSDLT ideal-int pkg syscall (freebsd-amd64), const BIOCSETBUFMODE ideal-int pkg syscall (freebsd-amd64), const BIOCSETF ideal-int pkg syscall (freebsd-amd64), const BIOCSETFNR ideal-int pkg syscall (freebsd-amd64), const BIOCSETIF ideal-int pkg syscall (freebsd-amd64), const BIOCSETWF ideal-int pkg syscall (freebsd-amd64), const BIOCSETZBUF ideal-int pkg syscall (freebsd-amd64), const BIOCSHDRCMPLT ideal-int pkg syscall (freebsd-amd64), const BIOCSRSIG ideal-int pkg syscall (freebsd-amd64), const BIOCSRTIMEOUT ideal-int pkg syscall (freebsd-amd64), const BIOCSSEESENT ideal-int pkg syscall (freebsd-amd64), const BIOCVERSION ideal-int pkg syscall (freebsd-amd64), const BPF_A ideal-int pkg syscall (freebsd-amd64), const BPF_ABS ideal-int pkg syscall (freebsd-amd64), const BPF_ADD ideal-int pkg syscall (freebsd-amd64), const BPF_ALIGNMENT ideal-int pkg syscall (freebsd-amd64), const BPF_ALU ideal-int pkg syscall (freebsd-amd64), const BPF_AND ideal-int pkg syscall (freebsd-amd64), const BPF_B ideal-int pkg syscall (freebsd-amd64), const BPF_BUFMODE_BUFFER ideal-int pkg syscall (freebsd-amd64), const BPF_BUFMODE_ZBUF ideal-int pkg syscall (freebsd-amd64), const BPF_DIV ideal-int pkg syscall (freebsd-amd64), const BPF_H ideal-int pkg syscall (freebsd-amd64), const BPF_IMM ideal-int pkg syscall (freebsd-amd64), const BPF_IND ideal-int pkg syscall (freebsd-amd64), const BPF_JA ideal-int pkg syscall (freebsd-amd64), const BPF_JEQ ideal-int pkg syscall (freebsd-amd64), const BPF_JGE ideal-int pkg syscall (freebsd-amd64), const BPF_JGT ideal-int pkg syscall (freebsd-amd64), const BPF_JMP ideal-int pkg syscall (freebsd-amd64), const BPF_JSET ideal-int pkg syscall (freebsd-amd64), const BPF_K ideal-int pkg syscall (freebsd-amd64), const BPF_LD ideal-int pkg syscall (freebsd-amd64), const BPF_LDX ideal-int pkg syscall (freebsd-amd64), const BPF_LEN ideal-int pkg syscall (freebsd-amd64), const BPF_LSH ideal-int pkg syscall (freebsd-amd64), const BPF_MAJOR_VERSION ideal-int pkg syscall (freebsd-amd64), const BPF_MAXBUFSIZE ideal-int pkg syscall (freebsd-amd64), const BPF_MAXINSNS ideal-int pkg syscall (freebsd-amd64), const BPF_MEM ideal-int pkg syscall (freebsd-amd64), const BPF_MEMWORDS ideal-int pkg syscall (freebsd-amd64), const BPF_MINBUFSIZE ideal-int pkg syscall (freebsd-amd64), const BPF_MINOR_VERSION ideal-int pkg syscall (freebsd-amd64), const BPF_MISC ideal-int pkg syscall (freebsd-amd64), const BPF_MSH ideal-int pkg syscall (freebsd-amd64), const BPF_MUL ideal-int pkg syscall (freebsd-amd64), const BPF_NEG ideal-int pkg syscall (freebsd-amd64), const BPF_OR ideal-int pkg syscall (freebsd-amd64), const BPF_RELEASE ideal-int pkg syscall (freebsd-amd64), const BPF_RET ideal-int pkg syscall (freebsd-amd64), const BPF_RSH ideal-int pkg syscall (freebsd-amd64), const BPF_ST ideal-int pkg syscall (freebsd-amd64), const BPF_STX ideal-int pkg syscall (freebsd-amd64), const BPF_SUB ideal-int pkg syscall (freebsd-amd64), const BPF_TAX ideal-int pkg syscall (freebsd-amd64), const BPF_TXA ideal-int pkg syscall (freebsd-amd64), const BPF_W ideal-int pkg syscall (freebsd-amd64), const BPF_X ideal-int pkg syscall (freebsd-amd64), const CTL_MAXNAME ideal-int pkg syscall (freebsd-amd64), const CTL_NET ideal-int pkg syscall (freebsd-amd64), const DLT_A429 ideal-int pkg syscall (freebsd-amd64), const DLT_A653_ICM ideal-int pkg syscall (freebsd-amd64), const DLT_AIRONET_HEADER ideal-int pkg syscall (freebsd-amd64), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int pkg syscall (freebsd-amd64), const DLT_ARCNET ideal-int pkg syscall (freebsd-amd64), const DLT_ARCNET_LINUX ideal-int pkg syscall (freebsd-amd64), const DLT_ATM_CLIP ideal-int pkg syscall (freebsd-amd64), const DLT_ATM_RFC1483 ideal-int pkg syscall (freebsd-amd64), const DLT_AURORA ideal-int pkg syscall (freebsd-amd64), const DLT_AX25 ideal-int pkg syscall (freebsd-amd64), const DLT_AX25_KISS ideal-int pkg syscall (freebsd-amd64), const DLT_BACNET_MS_TP ideal-int pkg syscall (freebsd-amd64), const DLT_BLUETOOTH_HCI_H4 ideal-int pkg syscall (freebsd-amd64), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int pkg syscall (freebsd-amd64), const DLT_CAN20B ideal-int pkg syscall (freebsd-amd64), const DLT_CHAOS ideal-int pkg syscall (freebsd-amd64), const DLT_CHDLC ideal-int pkg syscall (freebsd-amd64), const DLT_CISCO_IOS ideal-int pkg syscall (freebsd-amd64), const DLT_C_HDLC ideal-int pkg syscall (freebsd-amd64), const DLT_C_HDLC_WITH_DIR ideal-int pkg syscall (freebsd-amd64), const DLT_DOCSIS ideal-int pkg syscall (freebsd-amd64), const DLT_ECONET ideal-int pkg syscall (freebsd-amd64), const DLT_EN10MB ideal-int pkg syscall (freebsd-amd64), const DLT_EN3MB ideal-int pkg syscall (freebsd-amd64), const DLT_ENC ideal-int pkg syscall (freebsd-amd64), const DLT_ERF ideal-int pkg syscall (freebsd-amd64), const DLT_ERF_ETH ideal-int pkg syscall (freebsd-amd64), const DLT_ERF_POS ideal-int pkg syscall (freebsd-amd64), const DLT_FDDI ideal-int pkg syscall (freebsd-amd64), const DLT_FLEXRAY ideal-int pkg syscall (freebsd-amd64), const DLT_FRELAY ideal-int pkg syscall (freebsd-amd64), const DLT_FRELAY_WITH_DIR ideal-int pkg syscall (freebsd-amd64), const DLT_GCOM_SERIAL ideal-int pkg syscall (freebsd-amd64), const DLT_GCOM_T1E1 ideal-int pkg syscall (freebsd-amd64), const DLT_GPF_F ideal-int pkg syscall (freebsd-amd64), const DLT_GPF_T ideal-int pkg syscall (freebsd-amd64), const DLT_GPRS_LLC ideal-int pkg syscall (freebsd-amd64), const DLT_HHDLC ideal-int pkg syscall (freebsd-amd64), const DLT_IBM_SN ideal-int pkg syscall (freebsd-amd64), const DLT_IBM_SP ideal-int pkg syscall (freebsd-amd64), const DLT_IEEE802 ideal-int pkg syscall (freebsd-amd64), const DLT_IEEE802_11 ideal-int pkg syscall (freebsd-amd64), const DLT_IEEE802_11_RADIO ideal-int pkg syscall (freebsd-amd64), const DLT_IEEE802_11_RADIO_AVS ideal-int pkg syscall (freebsd-amd64), const DLT_IEEE802_15_4 ideal-int pkg syscall (freebsd-amd64), const DLT_IEEE802_15_4_LINUX ideal-int pkg syscall (freebsd-amd64), const DLT_IEEE802_15_4_NONASK_PHY ideal-int pkg syscall (freebsd-amd64), const DLT_IEEE802_16_MAC_CPS ideal-int pkg syscall (freebsd-amd64), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int pkg syscall (freebsd-amd64), const DLT_IPFILTER ideal-int pkg syscall (freebsd-amd64), const DLT_IPMB ideal-int pkg syscall (freebsd-amd64), const DLT_IPMB_LINUX ideal-int pkg syscall (freebsd-amd64), const DLT_IP_OVER_FC ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_ATM1 ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_ATM2 ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_CHDLC ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_ES ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_ETHER ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_FRELAY ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_GGSN ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_ISM ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_MFR ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_MLFR ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_MLPPP ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_MONITOR ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_PIC_PEER ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_PPP ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_PPPOE ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_PPPOE_ATM ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_SERVICES ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_ST ideal-int pkg syscall (freebsd-amd64), const DLT_JUNIPER_VP ideal-int pkg syscall (freebsd-amd64), const DLT_LAPB_WITH_DIR ideal-int pkg syscall (freebsd-amd64), const DLT_LAPD ideal-int pkg syscall (freebsd-amd64), const DLT_LIN ideal-int pkg syscall (freebsd-amd64), const DLT_LINUX_IRDA ideal-int pkg syscall (freebsd-amd64), const DLT_LINUX_LAPD ideal-int pkg syscall (freebsd-amd64), const DLT_LINUX_PPP_WITHDIRECTION ideal-int pkg syscall (freebsd-amd64), const DLT_LINUX_SLL ideal-int pkg syscall (freebsd-amd64), const DLT_LOOP ideal-int pkg syscall (freebsd-amd64), const DLT_LTALK ideal-int pkg syscall (freebsd-amd64), const DLT_MFR ideal-int pkg syscall (freebsd-amd64), const DLT_MOST ideal-int pkg syscall (freebsd-amd64), const DLT_MTP2 ideal-int pkg syscall (freebsd-amd64), const DLT_MTP2_WITH_PHDR ideal-int pkg syscall (freebsd-amd64), const DLT_MTP3 ideal-int pkg syscall (freebsd-amd64), const DLT_NULL ideal-int pkg syscall (freebsd-amd64), const DLT_PCI_EXP ideal-int pkg syscall (freebsd-amd64), const DLT_PFLOG ideal-int pkg syscall (freebsd-amd64), const DLT_PFSYNC ideal-int pkg syscall (freebsd-amd64), const DLT_PPI ideal-int pkg syscall (freebsd-amd64), const DLT_PPP ideal-int pkg syscall (freebsd-amd64), const DLT_PPP_BSDOS ideal-int pkg syscall (freebsd-amd64), const DLT_PPP_ETHER ideal-int pkg syscall (freebsd-amd64), const DLT_PPP_PPPD ideal-int pkg syscall (freebsd-amd64), const DLT_PPP_SERIAL ideal-int pkg syscall (freebsd-amd64), const DLT_PPP_WITH_DIR ideal-int pkg syscall (freebsd-amd64), const DLT_PPP_WITH_DIRECTION ideal-int pkg syscall (freebsd-amd64), const DLT_PRISM_HEADER ideal-int pkg syscall (freebsd-amd64), const DLT_PRONET ideal-int pkg syscall (freebsd-amd64), const DLT_RAIF1 ideal-int pkg syscall (freebsd-amd64), const DLT_RAW ideal-int pkg syscall (freebsd-amd64), const DLT_RIO ideal-int pkg syscall (freebsd-amd64), const DLT_SCCP ideal-int pkg syscall (freebsd-amd64), const DLT_SITA ideal-int pkg syscall (freebsd-amd64), const DLT_SLIP ideal-int pkg syscall (freebsd-amd64), const DLT_SLIP_BSDOS ideal-int pkg syscall (freebsd-amd64), const DLT_SUNATM ideal-int pkg syscall (freebsd-amd64), const DLT_SYMANTEC_FIREWALL ideal-int pkg syscall (freebsd-amd64), const DLT_TZSP ideal-int pkg syscall (freebsd-amd64), const DLT_USB ideal-int pkg syscall (freebsd-amd64), const DLT_USB_LINUX ideal-int pkg syscall (freebsd-amd64), const DLT_USER0 ideal-int pkg syscall (freebsd-amd64), const DLT_USER1 ideal-int pkg syscall (freebsd-amd64), const DLT_USER10 ideal-int pkg syscall (freebsd-amd64), const DLT_USER11 ideal-int pkg syscall (freebsd-amd64), const DLT_USER12 ideal-int pkg syscall (freebsd-amd64), const DLT_USER13 ideal-int pkg syscall (freebsd-amd64), const DLT_USER14 ideal-int pkg syscall (freebsd-amd64), const DLT_USER15 ideal-int pkg syscall (freebsd-amd64), const DLT_USER2 ideal-int pkg syscall (freebsd-amd64), const DLT_USER3 ideal-int pkg syscall (freebsd-amd64), const DLT_USER4 ideal-int pkg syscall (freebsd-amd64), const DLT_USER5 ideal-int pkg syscall (freebsd-amd64), const DLT_USER6 ideal-int pkg syscall (freebsd-amd64), const DLT_USER7 ideal-int pkg syscall (freebsd-amd64), const DLT_USER8 ideal-int pkg syscall (freebsd-amd64), const DLT_USER9 ideal-int pkg syscall (freebsd-amd64), const DLT_X2E_SERIAL ideal-int pkg syscall (freebsd-amd64), const DLT_X2E_XORAYA ideal-int pkg syscall (freebsd-amd64), const DT_BLK ideal-int pkg syscall (freebsd-amd64), const DT_CHR ideal-int pkg syscall (freebsd-amd64), const DT_DIR ideal-int pkg syscall (freebsd-amd64), const DT_FIFO ideal-int pkg syscall (freebsd-amd64), const DT_LNK ideal-int pkg syscall (freebsd-amd64), const DT_REG ideal-int pkg syscall (freebsd-amd64), const DT_SOCK ideal-int pkg syscall (freebsd-amd64), const DT_UNKNOWN ideal-int pkg syscall (freebsd-amd64), const DT_WHT ideal-int pkg syscall (freebsd-amd64), const EAUTH Errno pkg syscall (freebsd-amd64), const EBADMSG Errno pkg syscall (freebsd-amd64), const EBADRPC Errno pkg syscall (freebsd-amd64), const ECHO ideal-int pkg syscall (freebsd-amd64), const ECHOCTL ideal-int pkg syscall (freebsd-amd64), const ECHOE ideal-int pkg syscall (freebsd-amd64), const ECHOK ideal-int pkg syscall (freebsd-amd64), const ECHOKE ideal-int pkg syscall (freebsd-amd64), const ECHONL ideal-int pkg syscall (freebsd-amd64), const ECHOPRT ideal-int pkg syscall (freebsd-amd64), const EDOOFUS Errno pkg syscall (freebsd-amd64), const EFTYPE Errno pkg syscall (freebsd-amd64), const ELAST Errno pkg syscall (freebsd-amd64), const EMULTIHOP Errno pkg syscall (freebsd-amd64), const ENEEDAUTH Errno pkg syscall (freebsd-amd64), const ENOATTR Errno pkg syscall (freebsd-amd64), const ENOLINK Errno pkg syscall (freebsd-amd64), const ENOTCAPABLE Errno pkg syscall (freebsd-amd64), const EPROCLIM Errno pkg syscall (freebsd-amd64), const EPROCUNAVAIL Errno pkg syscall (freebsd-amd64), const EPROGMISMATCH Errno pkg syscall (freebsd-amd64), const EPROGUNAVAIL Errno pkg syscall (freebsd-amd64), const EPROTO Errno pkg syscall (freebsd-amd64), const ERPCMISMATCH Errno pkg syscall (freebsd-amd64), const EVFILT_AIO ideal-int pkg syscall (freebsd-amd64), const EVFILT_FS ideal-int pkg syscall (freebsd-amd64), const EVFILT_LIO ideal-int pkg syscall (freebsd-amd64), const EVFILT_PROC ideal-int pkg syscall (freebsd-amd64), const EVFILT_READ ideal-int pkg syscall (freebsd-amd64), const EVFILT_SIGNAL ideal-int pkg syscall (freebsd-amd64), const EVFILT_SYSCOUNT ideal-int pkg syscall (freebsd-amd64), const EVFILT_TIMER ideal-int pkg syscall (freebsd-amd64), const EVFILT_USER ideal-int pkg syscall (freebsd-amd64), const EVFILT_VNODE ideal-int pkg syscall (freebsd-amd64), const EVFILT_WRITE ideal-int pkg syscall (freebsd-amd64), const EV_ADD ideal-int pkg syscall (freebsd-amd64), const EV_CLEAR ideal-int pkg syscall (freebsd-amd64), const EV_DELETE ideal-int pkg syscall (freebsd-amd64), const EV_DISABLE ideal-int pkg syscall (freebsd-amd64), const EV_DISPATCH ideal-int pkg syscall (freebsd-amd64), const EV_ENABLE ideal-int pkg syscall (freebsd-amd64), const EV_EOF ideal-int pkg syscall (freebsd-amd64), const EV_ERROR ideal-int pkg syscall (freebsd-amd64), const EV_FLAG1 ideal-int pkg syscall (freebsd-amd64), const EV_ONESHOT ideal-int pkg syscall (freebsd-amd64), const EV_RECEIPT ideal-int pkg syscall (freebsd-amd64), const EV_SYSFLAGS ideal-int pkg syscall (freebsd-amd64), const EXTA ideal-int pkg syscall (freebsd-amd64), const EXTB ideal-int pkg syscall (freebsd-amd64), const EXTPROC ideal-int pkg syscall (freebsd-amd64), const FD_CLOEXEC ideal-int pkg syscall (freebsd-amd64), const FD_SETSIZE ideal-int pkg syscall (freebsd-amd64), const F_CANCEL ideal-int pkg syscall (freebsd-amd64), const F_DUP2FD ideal-int pkg syscall (freebsd-amd64), const F_DUPFD ideal-int pkg syscall (freebsd-amd64), const F_GETFD ideal-int pkg syscall (freebsd-amd64), const F_GETFL ideal-int pkg syscall (freebsd-amd64), const F_GETLK ideal-int pkg syscall (freebsd-amd64), const F_GETOWN ideal-int pkg syscall (freebsd-amd64), const F_OGETLK ideal-int pkg syscall (freebsd-amd64), const F_OK ideal-int pkg syscall (freebsd-amd64), const F_OSETLK ideal-int pkg syscall (freebsd-amd64), const F_OSETLKW ideal-int pkg syscall (freebsd-amd64), const F_RDAHEAD ideal-int pkg syscall (freebsd-amd64), const F_RDLCK ideal-int pkg syscall (freebsd-amd64), const F_READAHEAD ideal-int pkg syscall (freebsd-amd64), const F_SETFD ideal-int pkg syscall (freebsd-amd64), const F_SETFL ideal-int pkg syscall (freebsd-amd64), const F_SETLK ideal-int pkg syscall (freebsd-amd64), const F_SETLKW ideal-int pkg syscall (freebsd-amd64), const F_SETLK_REMOTE ideal-int pkg syscall (freebsd-amd64), const F_SETOWN ideal-int pkg syscall (freebsd-amd64), const F_UNLCK ideal-int pkg syscall (freebsd-amd64), const F_UNLCKSYS ideal-int pkg syscall (freebsd-amd64), const F_WRLCK ideal-int pkg syscall (freebsd-amd64), const IFF_ALLMULTI ideal-int pkg syscall (freebsd-amd64), const IFF_ALTPHYS ideal-int pkg syscall (freebsd-amd64), const IFF_CANTCHANGE ideal-int pkg syscall (freebsd-amd64), const IFF_DEBUG ideal-int pkg syscall (freebsd-amd64), const IFF_DRV_OACTIVE ideal-int pkg syscall (freebsd-amd64), const IFF_DRV_RUNNING ideal-int pkg syscall (freebsd-amd64), const IFF_DYING ideal-int pkg syscall (freebsd-amd64), const IFF_LINK0 ideal-int pkg syscall (freebsd-amd64), const IFF_LINK1 ideal-int pkg syscall (freebsd-amd64), const IFF_LINK2 ideal-int pkg syscall (freebsd-amd64), const IFF_MONITOR ideal-int pkg syscall (freebsd-amd64), const IFF_NOARP ideal-int pkg syscall (freebsd-amd64), const IFF_OACTIVE ideal-int pkg syscall (freebsd-amd64), const IFF_POINTOPOINT ideal-int pkg syscall (freebsd-amd64), const IFF_PPROMISC ideal-int pkg syscall (freebsd-amd64), const IFF_PROMISC ideal-int pkg syscall (freebsd-amd64), const IFF_RENAMING ideal-int pkg syscall (freebsd-amd64), const IFF_RUNNING ideal-int pkg syscall (freebsd-amd64), const IFF_SIMPLEX ideal-int pkg syscall (freebsd-amd64), const IFF_SMART ideal-int pkg syscall (freebsd-amd64), const IFF_STATICARP ideal-int pkg syscall (freebsd-amd64), const IFNAMSIZ ideal-int pkg syscall (freebsd-amd64), const IFT_1822 ideal-int pkg syscall (freebsd-amd64), const IFT_A12MPPSWITCH ideal-int pkg syscall (freebsd-amd64), const IFT_AAL2 ideal-int pkg syscall (freebsd-amd64), const IFT_AAL5 ideal-int pkg syscall (freebsd-amd64), const IFT_ADSL ideal-int pkg syscall (freebsd-amd64), const IFT_AFLANE8023 ideal-int pkg syscall (freebsd-amd64), const IFT_AFLANE8025 ideal-int pkg syscall (freebsd-amd64), const IFT_ARAP ideal-int pkg syscall (freebsd-amd64), const IFT_ARCNET ideal-int pkg syscall (freebsd-amd64), const IFT_ARCNETPLUS ideal-int pkg syscall (freebsd-amd64), const IFT_ASYNC ideal-int pkg syscall (freebsd-amd64), const IFT_ATM ideal-int pkg syscall (freebsd-amd64), const IFT_ATMDXI ideal-int pkg syscall (freebsd-amd64), const IFT_ATMFUNI ideal-int pkg syscall (freebsd-amd64), const IFT_ATMIMA ideal-int pkg syscall (freebsd-amd64), const IFT_ATMLOGICAL ideal-int pkg syscall (freebsd-amd64), const IFT_ATMRADIO ideal-int pkg syscall (freebsd-amd64), const IFT_ATMSUBINTERFACE ideal-int pkg syscall (freebsd-amd64), const IFT_ATMVCIENDPT ideal-int pkg syscall (freebsd-amd64), const IFT_ATMVIRTUAL ideal-int pkg syscall (freebsd-amd64), const IFT_BGPPOLICYACCOUNTING ideal-int pkg syscall (freebsd-amd64), const IFT_BRIDGE ideal-int pkg syscall (freebsd-amd64), const IFT_BSC ideal-int pkg syscall (freebsd-amd64), const IFT_CARP ideal-int pkg syscall (freebsd-amd64), const IFT_CCTEMUL ideal-int pkg syscall (freebsd-amd64), const IFT_CEPT ideal-int pkg syscall (freebsd-amd64), const IFT_CES ideal-int pkg syscall (freebsd-amd64), const IFT_CHANNEL ideal-int pkg syscall (freebsd-amd64), const IFT_CNR ideal-int pkg syscall (freebsd-amd64), const IFT_COFFEE ideal-int pkg syscall (freebsd-amd64), const IFT_COMPOSITELINK ideal-int pkg syscall (freebsd-amd64), const IFT_DCN ideal-int pkg syscall (freebsd-amd64), const IFT_DIGITALPOWERLINE ideal-int pkg syscall (freebsd-amd64), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int pkg syscall (freebsd-amd64), const IFT_DLSW ideal-int pkg syscall (freebsd-amd64), const IFT_DOCSCABLEDOWNSTREAM ideal-int pkg syscall (freebsd-amd64), const IFT_DOCSCABLEMACLAYER ideal-int pkg syscall (freebsd-amd64), const IFT_DOCSCABLEUPSTREAM ideal-int pkg syscall (freebsd-amd64), const IFT_DS0 ideal-int pkg syscall (freebsd-amd64), const IFT_DS0BUNDLE ideal-int pkg syscall (freebsd-amd64), const IFT_DS1FDL ideal-int pkg syscall (freebsd-amd64), const IFT_DS3 ideal-int pkg syscall (freebsd-amd64), const IFT_DTM ideal-int pkg syscall (freebsd-amd64), const IFT_DVBASILN ideal-int pkg syscall (freebsd-amd64), const IFT_DVBASIOUT ideal-int pkg syscall (freebsd-amd64), const IFT_DVBRCCDOWNSTREAM ideal-int pkg syscall (freebsd-amd64), const IFT_DVBRCCMACLAYER ideal-int pkg syscall (freebsd-amd64), const IFT_DVBRCCUPSTREAM ideal-int pkg syscall (freebsd-amd64), const IFT_ENC ideal-int pkg syscall (freebsd-amd64), const IFT_EON ideal-int pkg syscall (freebsd-amd64), const IFT_EPLRS ideal-int pkg syscall (freebsd-amd64), const IFT_ESCON ideal-int pkg syscall (freebsd-amd64), const IFT_ETHER ideal-int pkg syscall (freebsd-amd64), const IFT_FAITH ideal-int pkg syscall (freebsd-amd64), const IFT_FAST ideal-int pkg syscall (freebsd-amd64), const IFT_FASTETHER ideal-int pkg syscall (freebsd-amd64), const IFT_FASTETHERFX ideal-int pkg syscall (freebsd-amd64), const IFT_FDDI ideal-int pkg syscall (freebsd-amd64), const IFT_FIBRECHANNEL ideal-int pkg syscall (freebsd-amd64), const IFT_FRAMERELAYINTERCONNECT ideal-int pkg syscall (freebsd-amd64), const IFT_FRAMERELAYMPI ideal-int pkg syscall (freebsd-amd64), const IFT_FRDLCIENDPT ideal-int pkg syscall (freebsd-amd64), const IFT_FRELAY ideal-int pkg syscall (freebsd-amd64), const IFT_FRELAYDCE ideal-int pkg syscall (freebsd-amd64), const IFT_FRF16MFRBUNDLE ideal-int pkg syscall (freebsd-amd64), const IFT_FRFORWARD ideal-int pkg syscall (freebsd-amd64), const IFT_G703AT2MB ideal-int pkg syscall (freebsd-amd64), const IFT_G703AT64K ideal-int pkg syscall (freebsd-amd64), const IFT_GIF ideal-int pkg syscall (freebsd-amd64), const IFT_GIGABITETHERNET ideal-int pkg syscall (freebsd-amd64), const IFT_GR303IDT ideal-int pkg syscall (freebsd-amd64), const IFT_GR303RDT ideal-int pkg syscall (freebsd-amd64), const IFT_H323GATEKEEPER ideal-int pkg syscall (freebsd-amd64), const IFT_H323PROXY ideal-int pkg syscall (freebsd-amd64), const IFT_HDH1822 ideal-int pkg syscall (freebsd-amd64), const IFT_HDLC ideal-int pkg syscall (freebsd-amd64), const IFT_HDSL2 ideal-int pkg syscall (freebsd-amd64), const IFT_HIPERLAN2 ideal-int pkg syscall (freebsd-amd64), const IFT_HIPPI ideal-int pkg syscall (freebsd-amd64), const IFT_HIPPIINTERFACE ideal-int pkg syscall (freebsd-amd64), const IFT_HOSTPAD ideal-int pkg syscall (freebsd-amd64), const IFT_HSSI ideal-int pkg syscall (freebsd-amd64), const IFT_HY ideal-int pkg syscall (freebsd-amd64), const IFT_IBM370PARCHAN ideal-int pkg syscall (freebsd-amd64), const IFT_IDSL ideal-int pkg syscall (freebsd-amd64), const IFT_IEEE1394 ideal-int pkg syscall (freebsd-amd64), const IFT_IEEE80211 ideal-int pkg syscall (freebsd-amd64), const IFT_IEEE80212 ideal-int pkg syscall (freebsd-amd64), const IFT_IEEE8023ADLAG ideal-int pkg syscall (freebsd-amd64), const IFT_IFGSN ideal-int pkg syscall (freebsd-amd64), const IFT_IMT ideal-int pkg syscall (freebsd-amd64), const IFT_INTERLEAVE ideal-int pkg syscall (freebsd-amd64), const IFT_IP ideal-int pkg syscall (freebsd-amd64), const IFT_IPFORWARD ideal-int pkg syscall (freebsd-amd64), const IFT_IPOVERATM ideal-int pkg syscall (freebsd-amd64), const IFT_IPOVERCDLC ideal-int pkg syscall (freebsd-amd64), const IFT_IPOVERCLAW ideal-int pkg syscall (freebsd-amd64), const IFT_IPSWITCH ideal-int pkg syscall (freebsd-amd64), const IFT_IPXIP ideal-int pkg syscall (freebsd-amd64), const IFT_ISDN ideal-int pkg syscall (freebsd-amd64), const IFT_ISDNBASIC ideal-int pkg syscall (freebsd-amd64), const IFT_ISDNPRIMARY ideal-int pkg syscall (freebsd-amd64), const IFT_ISDNS ideal-int pkg syscall (freebsd-amd64), const IFT_ISDNU ideal-int pkg syscall (freebsd-amd64), const IFT_ISO88022LLC ideal-int pkg syscall (freebsd-amd64), const IFT_ISO88023 ideal-int pkg syscall (freebsd-amd64), const IFT_ISO88024 ideal-int pkg syscall (freebsd-amd64), const IFT_ISO88025 ideal-int pkg syscall (freebsd-amd64), const IFT_ISO88025CRFPINT ideal-int pkg syscall (freebsd-amd64), const IFT_ISO88025DTR ideal-int pkg syscall (freebsd-amd64), const IFT_ISO88025FIBER ideal-int pkg syscall (freebsd-amd64), const IFT_ISO88026 ideal-int pkg syscall (freebsd-amd64), const IFT_ISUP ideal-int pkg syscall (freebsd-amd64), const IFT_L2VLAN ideal-int pkg syscall (freebsd-amd64), const IFT_L3IPVLAN ideal-int pkg syscall (freebsd-amd64), const IFT_L3IPXVLAN ideal-int pkg syscall (freebsd-amd64), const IFT_LAPB ideal-int pkg syscall (freebsd-amd64), const IFT_LAPD ideal-int pkg syscall (freebsd-amd64), const IFT_LAPF ideal-int pkg syscall (freebsd-amd64), const IFT_LOCALTALK ideal-int pkg syscall (freebsd-amd64), const IFT_LOOP ideal-int pkg syscall (freebsd-amd64), const IFT_MEDIAMAILOVERIP ideal-int pkg syscall (freebsd-amd64), const IFT_MFSIGLINK ideal-int pkg syscall (freebsd-amd64), const IFT_MIOX25 ideal-int pkg syscall (freebsd-amd64), const IFT_MODEM ideal-int pkg syscall (freebsd-amd64), const IFT_MPC ideal-int pkg syscall (freebsd-amd64), const IFT_MPLS ideal-int pkg syscall (freebsd-amd64), const IFT_MPLSTUNNEL ideal-int pkg syscall (freebsd-amd64), const IFT_MSDSL ideal-int pkg syscall (freebsd-amd64), const IFT_MVL ideal-int pkg syscall (freebsd-amd64), const IFT_MYRINET ideal-int pkg syscall (freebsd-amd64), const IFT_NFAS ideal-int pkg syscall (freebsd-amd64), const IFT_NSIP ideal-int pkg syscall (freebsd-amd64), const IFT_OPTICALCHANNEL ideal-int pkg syscall (freebsd-amd64), const IFT_OPTICALTRANSPORT ideal-int pkg syscall (freebsd-amd64), const IFT_OTHER ideal-int pkg syscall (freebsd-amd64), const IFT_P10 ideal-int pkg syscall (freebsd-amd64), const IFT_P80 ideal-int pkg syscall (freebsd-amd64), const IFT_PARA ideal-int pkg syscall (freebsd-amd64), const IFT_PFLOG ideal-int pkg syscall (freebsd-amd64), const IFT_PFSYNC ideal-int pkg syscall (freebsd-amd64), const IFT_PLC ideal-int pkg syscall (freebsd-amd64), const IFT_POS ideal-int pkg syscall (freebsd-amd64), const IFT_PPP ideal-int pkg syscall (freebsd-amd64), const IFT_PPPMULTILINKBUNDLE ideal-int pkg syscall (freebsd-amd64), const IFT_PROPBWAP2MP ideal-int pkg syscall (freebsd-amd64), const IFT_PROPCNLS ideal-int pkg syscall (freebsd-amd64), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int pkg syscall (freebsd-amd64), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int pkg syscall (freebsd-amd64), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int pkg syscall (freebsd-amd64), const IFT_PROPMUX ideal-int pkg syscall (freebsd-amd64), const IFT_PROPVIRTUAL ideal-int pkg syscall (freebsd-amd64), const IFT_PROPWIRELESSP2P ideal-int pkg syscall (freebsd-amd64), const IFT_PTPSERIAL ideal-int pkg syscall (freebsd-amd64), const IFT_PVC ideal-int pkg syscall (freebsd-amd64), const IFT_QLLC ideal-int pkg syscall (freebsd-amd64), const IFT_RADIOMAC ideal-int pkg syscall (freebsd-amd64), const IFT_RADSL ideal-int pkg syscall (freebsd-amd64), const IFT_REACHDSL ideal-int pkg syscall (freebsd-amd64), const IFT_RFC1483 ideal-int pkg syscall (freebsd-amd64), const IFT_RS232 ideal-int pkg syscall (freebsd-amd64), const IFT_RSRB ideal-int pkg syscall (freebsd-amd64), const IFT_SDLC ideal-int pkg syscall (freebsd-amd64), const IFT_SDSL ideal-int pkg syscall (freebsd-amd64), const IFT_SHDSL ideal-int pkg syscall (freebsd-amd64), const IFT_SIP ideal-int pkg syscall (freebsd-amd64), const IFT_SLIP ideal-int pkg syscall (freebsd-amd64), const IFT_SMDSDXI ideal-int pkg syscall (freebsd-amd64), const IFT_SMDSICIP ideal-int pkg syscall (freebsd-amd64), const IFT_SONET ideal-int pkg syscall (freebsd-amd64), const IFT_SONETOVERHEADCHANNEL ideal-int pkg syscall (freebsd-amd64), const IFT_SONETPATH ideal-int pkg syscall (freebsd-amd64), const IFT_SONETVT ideal-int pkg syscall (freebsd-amd64), const IFT_SRP ideal-int pkg syscall (freebsd-amd64), const IFT_SS7SIGLINK ideal-int pkg syscall (freebsd-amd64), const IFT_STACKTOSTACK ideal-int pkg syscall (freebsd-amd64), const IFT_STARLAN ideal-int pkg syscall (freebsd-amd64), const IFT_STF ideal-int pkg syscall (freebsd-amd64), const IFT_T1 ideal-int pkg syscall (freebsd-amd64), const IFT_TDLC ideal-int pkg syscall (freebsd-amd64), const IFT_TERMPAD ideal-int pkg syscall (freebsd-amd64), const IFT_TR008 ideal-int pkg syscall (freebsd-amd64), const IFT_TRANSPHDLC ideal-int pkg syscall (freebsd-amd64), const IFT_TUNNEL ideal-int pkg syscall (freebsd-amd64), const IFT_ULTRA ideal-int pkg syscall (freebsd-amd64), const IFT_USB ideal-int pkg syscall (freebsd-amd64), const IFT_V11 ideal-int pkg syscall (freebsd-amd64), const IFT_V35 ideal-int pkg syscall (freebsd-amd64), const IFT_V36 ideal-int pkg syscall (freebsd-amd64), const IFT_V37 ideal-int pkg syscall (freebsd-amd64), const IFT_VDSL ideal-int pkg syscall (freebsd-amd64), const IFT_VIRTUALIPADDRESS ideal-int pkg syscall (freebsd-amd64), const IFT_VOICEEM ideal-int pkg syscall (freebsd-amd64), const IFT_VOICEENCAP ideal-int pkg syscall (freebsd-amd64), const IFT_VOICEFXO ideal-int pkg syscall (freebsd-amd64), const IFT_VOICEFXS ideal-int pkg syscall (freebsd-amd64), const IFT_VOICEOVERATM ideal-int pkg syscall (freebsd-amd64), const IFT_VOICEOVERFRAMERELAY ideal-int pkg syscall (freebsd-amd64), const IFT_VOICEOVERIP ideal-int pkg syscall (freebsd-amd64), const IFT_X213 ideal-int pkg syscall (freebsd-amd64), const IFT_X25 ideal-int pkg syscall (freebsd-amd64), const IFT_X25DDN ideal-int pkg syscall (freebsd-amd64), const IFT_X25HUNTGROUP ideal-int pkg syscall (freebsd-amd64), const IFT_X25MLP ideal-int pkg syscall (freebsd-amd64), const IFT_X25PLE ideal-int pkg syscall (freebsd-amd64), const IFT_XETHER ideal-int pkg syscall (freebsd-amd64), const IN_CLASSA_HOST ideal-int pkg syscall (freebsd-amd64), const IN_CLASSA_MAX ideal-int pkg syscall (freebsd-amd64), const IN_CLASSA_NET ideal-int pkg syscall (freebsd-amd64), const IN_CLASSA_NSHIFT ideal-int pkg syscall (freebsd-amd64), const IN_CLASSB_HOST ideal-int pkg syscall (freebsd-amd64), const IN_CLASSB_MAX ideal-int pkg syscall (freebsd-amd64), const IN_CLASSB_NET ideal-int pkg syscall (freebsd-amd64), const IN_CLASSB_NSHIFT ideal-int pkg syscall (freebsd-amd64), const IN_CLASSC_HOST ideal-int pkg syscall (freebsd-amd64), const IN_CLASSC_NET ideal-int pkg syscall (freebsd-amd64), const IN_CLASSC_NSHIFT ideal-int pkg syscall (freebsd-amd64), const IN_CLASSD_HOST ideal-int pkg syscall (freebsd-amd64), const IN_CLASSD_NET ideal-int pkg syscall (freebsd-amd64), const IN_CLASSD_NSHIFT ideal-int pkg syscall (freebsd-amd64), const IN_LOOPBACKNET ideal-int pkg syscall (freebsd-amd64), const IPPROTO_3PC ideal-int pkg syscall (freebsd-amd64), const IPPROTO_ADFS ideal-int pkg syscall (freebsd-amd64), const IPPROTO_AH ideal-int pkg syscall (freebsd-amd64), const IPPROTO_AHIP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_APES ideal-int pkg syscall (freebsd-amd64), const IPPROTO_ARGUS ideal-int pkg syscall (freebsd-amd64), const IPPROTO_AX25 ideal-int pkg syscall (freebsd-amd64), const IPPROTO_BHA ideal-int pkg syscall (freebsd-amd64), const IPPROTO_BLT ideal-int pkg syscall (freebsd-amd64), const IPPROTO_BRSATMON ideal-int pkg syscall (freebsd-amd64), const IPPROTO_CARP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_CFTP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_CHAOS ideal-int pkg syscall (freebsd-amd64), const IPPROTO_CMTP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_CPHB ideal-int pkg syscall (freebsd-amd64), const IPPROTO_CPNX ideal-int pkg syscall (freebsd-amd64), const IPPROTO_DDP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_DGP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_DIVERT ideal-int pkg syscall (freebsd-amd64), const IPPROTO_DONE ideal-int pkg syscall (freebsd-amd64), const IPPROTO_DSTOPTS ideal-int pkg syscall (freebsd-amd64), const IPPROTO_EGP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_EMCON ideal-int pkg syscall (freebsd-amd64), const IPPROTO_ENCAP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_EON ideal-int pkg syscall (freebsd-amd64), const IPPROTO_ESP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_ETHERIP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_FRAGMENT ideal-int pkg syscall (freebsd-amd64), const IPPROTO_GGP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_GMTP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_GRE ideal-int pkg syscall (freebsd-amd64), const IPPROTO_HELLO ideal-int pkg syscall (freebsd-amd64), const IPPROTO_HMP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_HOPOPTS ideal-int pkg syscall (freebsd-amd64), const IPPROTO_ICMP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_ICMPV6 ideal-int pkg syscall (freebsd-amd64), const IPPROTO_IDP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_IDPR ideal-int pkg syscall (freebsd-amd64), const IPPROTO_IDRP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_IGMP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_IGP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_IGRP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_IL ideal-int pkg syscall (freebsd-amd64), const IPPROTO_INLSP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_INP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_IPCOMP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_IPCV ideal-int pkg syscall (freebsd-amd64), const IPPROTO_IPEIP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_IPIP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_IPPC ideal-int pkg syscall (freebsd-amd64), const IPPROTO_IPV4 ideal-int pkg syscall (freebsd-amd64), const IPPROTO_IRTP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_KRYPTOLAN ideal-int pkg syscall (freebsd-amd64), const IPPROTO_LARP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_LEAF1 ideal-int pkg syscall (freebsd-amd64), const IPPROTO_LEAF2 ideal-int pkg syscall (freebsd-amd64), const IPPROTO_MAX ideal-int pkg syscall (freebsd-amd64), const IPPROTO_MAXID ideal-int pkg syscall (freebsd-amd64), const IPPROTO_MEAS ideal-int pkg syscall (freebsd-amd64), const IPPROTO_MHRP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_MICP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_MOBILE ideal-int pkg syscall (freebsd-amd64), const IPPROTO_MTP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_MUX ideal-int pkg syscall (freebsd-amd64), const IPPROTO_ND ideal-int pkg syscall (freebsd-amd64), const IPPROTO_NHRP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_NONE ideal-int pkg syscall (freebsd-amd64), const IPPROTO_NSP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_NVPII ideal-int pkg syscall (freebsd-amd64), const IPPROTO_OLD_DIVERT ideal-int pkg syscall (freebsd-amd64), const IPPROTO_OSPFIGP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_PFSYNC ideal-int pkg syscall (freebsd-amd64), const IPPROTO_PGM ideal-int pkg syscall (freebsd-amd64), const IPPROTO_PIGP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_PIM ideal-int pkg syscall (freebsd-amd64), const IPPROTO_PRM ideal-int pkg syscall (freebsd-amd64), const IPPROTO_PUP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_PVP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_RAW ideal-int pkg syscall (freebsd-amd64), const IPPROTO_RCCMON ideal-int pkg syscall (freebsd-amd64), const IPPROTO_RDP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_ROUTING ideal-int pkg syscall (freebsd-amd64), const IPPROTO_RSVP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_RVD ideal-int pkg syscall (freebsd-amd64), const IPPROTO_SATEXPAK ideal-int pkg syscall (freebsd-amd64), const IPPROTO_SATMON ideal-int pkg syscall (freebsd-amd64), const IPPROTO_SCCSP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_SCTP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_SDRP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_SEP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_SKIP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_SPACER ideal-int pkg syscall (freebsd-amd64), const IPPROTO_SRPC ideal-int pkg syscall (freebsd-amd64), const IPPROTO_ST ideal-int pkg syscall (freebsd-amd64), const IPPROTO_SVMTP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_SWIPE ideal-int pkg syscall (freebsd-amd64), const IPPROTO_TCF ideal-int pkg syscall (freebsd-amd64), const IPPROTO_TLSP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_TP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_TPXX ideal-int pkg syscall (freebsd-amd64), const IPPROTO_TRUNK1 ideal-int pkg syscall (freebsd-amd64), const IPPROTO_TRUNK2 ideal-int pkg syscall (freebsd-amd64), const IPPROTO_TTP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_VINES ideal-int pkg syscall (freebsd-amd64), const IPPROTO_VISA ideal-int pkg syscall (freebsd-amd64), const IPPROTO_VMTP ideal-int pkg syscall (freebsd-amd64), const IPPROTO_WBEXPAK ideal-int pkg syscall (freebsd-amd64), const IPPROTO_WBMON ideal-int pkg syscall (freebsd-amd64), const IPPROTO_WSN ideal-int pkg syscall (freebsd-amd64), const IPPROTO_XNET ideal-int pkg syscall (freebsd-amd64), const IPPROTO_XTP ideal-int pkg syscall (freebsd-amd64), const IPV6_AUTOFLOWLABEL ideal-int pkg syscall (freebsd-amd64), const IPV6_BINDANY ideal-int pkg syscall (freebsd-amd64), const IPV6_BINDV6ONLY ideal-int pkg syscall (freebsd-amd64), const IPV6_CHECKSUM ideal-int pkg syscall (freebsd-amd64), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int pkg syscall (freebsd-amd64), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (freebsd-amd64), const IPV6_DEFHLIM ideal-int pkg syscall (freebsd-amd64), const IPV6_DONTFRAG ideal-int pkg syscall (freebsd-amd64), const IPV6_DSTOPTS ideal-int pkg syscall (freebsd-amd64), const IPV6_FAITH ideal-int pkg syscall (freebsd-amd64), const IPV6_FLOWINFO_MASK ideal-int pkg syscall (freebsd-amd64), const IPV6_FLOWLABEL_MASK ideal-int pkg syscall (freebsd-amd64), const IPV6_FRAGTTL ideal-int pkg syscall (freebsd-amd64), const IPV6_FW_ADD ideal-int pkg syscall (freebsd-amd64), const IPV6_FW_DEL ideal-int pkg syscall (freebsd-amd64), const IPV6_FW_FLUSH ideal-int pkg syscall (freebsd-amd64), const IPV6_FW_GET ideal-int pkg syscall (freebsd-amd64), const IPV6_FW_ZERO ideal-int pkg syscall (freebsd-amd64), const IPV6_HLIMDEC ideal-int pkg syscall (freebsd-amd64), const IPV6_HOPLIMIT ideal-int pkg syscall (freebsd-amd64), const IPV6_HOPOPTS ideal-int pkg syscall (freebsd-amd64), const IPV6_IPSEC_POLICY ideal-int pkg syscall (freebsd-amd64), const IPV6_MAXHLIM ideal-int pkg syscall (freebsd-amd64), const IPV6_MAXOPTHDR ideal-int pkg syscall (freebsd-amd64), const IPV6_MAXPACKET ideal-int pkg syscall (freebsd-amd64), const IPV6_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (freebsd-amd64), const IPV6_MAX_MEMBERSHIPS ideal-int pkg syscall (freebsd-amd64), const IPV6_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (freebsd-amd64), const IPV6_MIN_MEMBERSHIPS ideal-int pkg syscall (freebsd-amd64), const IPV6_MMTU ideal-int pkg syscall (freebsd-amd64), const IPV6_MSFILTER ideal-int pkg syscall (freebsd-amd64), const IPV6_NEXTHOP ideal-int pkg syscall (freebsd-amd64), const IPV6_PATHMTU ideal-int pkg syscall (freebsd-amd64), const IPV6_PKTINFO ideal-int pkg syscall (freebsd-amd64), const IPV6_PORTRANGE ideal-int pkg syscall (freebsd-amd64), const IPV6_PORTRANGE_DEFAULT ideal-int pkg syscall (freebsd-amd64), const IPV6_PORTRANGE_HIGH ideal-int pkg syscall (freebsd-amd64), const IPV6_PORTRANGE_LOW ideal-int pkg syscall (freebsd-amd64), const IPV6_PREFER_TEMPADDR ideal-int pkg syscall (freebsd-amd64), const IPV6_RECVDSTOPTS ideal-int pkg syscall (freebsd-amd64), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (freebsd-amd64), const IPV6_RECVHOPOPTS ideal-int pkg syscall (freebsd-amd64), const IPV6_RECVPATHMTU ideal-int pkg syscall (freebsd-amd64), const IPV6_RECVPKTINFO ideal-int pkg syscall (freebsd-amd64), const IPV6_RECVRTHDR ideal-int pkg syscall (freebsd-amd64), const IPV6_RECVTCLASS ideal-int pkg syscall (freebsd-amd64), const IPV6_RTHDR ideal-int pkg syscall (freebsd-amd64), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (freebsd-amd64), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (freebsd-amd64), const IPV6_RTHDR_STRICT ideal-int pkg syscall (freebsd-amd64), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (freebsd-amd64), const IPV6_SOCKOPT_RESERVED1 ideal-int pkg syscall (freebsd-amd64), const IPV6_TCLASS ideal-int pkg syscall (freebsd-amd64), const IPV6_USE_MIN_MTU ideal-int pkg syscall (freebsd-amd64), const IPV6_VERSION ideal-int pkg syscall (freebsd-amd64), const IPV6_VERSION_MASK ideal-int pkg syscall (freebsd-amd64), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (freebsd-amd64), const IP_BINDANY ideal-int pkg syscall (freebsd-amd64), const IP_BLOCK_SOURCE ideal-int pkg syscall (freebsd-amd64), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (freebsd-amd64), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (freebsd-amd64), const IP_DF ideal-int pkg syscall (freebsd-amd64), const IP_DONTFRAG ideal-int pkg syscall (freebsd-amd64), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (freebsd-amd64), const IP_DUMMYNET3 ideal-int pkg syscall (freebsd-amd64), const IP_DUMMYNET_CONFIGURE ideal-int pkg syscall (freebsd-amd64), const IP_DUMMYNET_DEL ideal-int pkg syscall (freebsd-amd64), const IP_DUMMYNET_FLUSH ideal-int pkg syscall (freebsd-amd64), const IP_DUMMYNET_GET ideal-int pkg syscall (freebsd-amd64), const IP_FAITH ideal-int pkg syscall (freebsd-amd64), const IP_FW3 ideal-int pkg syscall (freebsd-amd64), const IP_FW_ADD ideal-int pkg syscall (freebsd-amd64), const IP_FW_DEL ideal-int pkg syscall (freebsd-amd64), const IP_FW_FLUSH ideal-int pkg syscall (freebsd-amd64), const IP_FW_GET ideal-int pkg syscall (freebsd-amd64), const IP_FW_NAT_CFG ideal-int pkg syscall (freebsd-amd64), const IP_FW_NAT_DEL ideal-int pkg syscall (freebsd-amd64), const IP_FW_NAT_GET_CONFIG ideal-int pkg syscall (freebsd-amd64), const IP_FW_NAT_GET_LOG ideal-int pkg syscall (freebsd-amd64), const IP_FW_RESETLOG ideal-int pkg syscall (freebsd-amd64), const IP_FW_TABLE_ADD ideal-int pkg syscall (freebsd-amd64), const IP_FW_TABLE_DEL ideal-int pkg syscall (freebsd-amd64), const IP_FW_TABLE_FLUSH ideal-int pkg syscall (freebsd-amd64), const IP_FW_TABLE_GETSIZE ideal-int pkg syscall (freebsd-amd64), const IP_FW_TABLE_LIST ideal-int pkg syscall (freebsd-amd64), const IP_FW_ZERO ideal-int pkg syscall (freebsd-amd64), const IP_HDRINCL ideal-int pkg syscall (freebsd-amd64), const IP_IPSEC_POLICY ideal-int pkg syscall (freebsd-amd64), const IP_MAXPACKET ideal-int pkg syscall (freebsd-amd64), const IP_MAX_GROUP_SRC_FILTER ideal-int pkg syscall (freebsd-amd64), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (freebsd-amd64), const IP_MAX_SOCK_MUTE_FILTER ideal-int pkg syscall (freebsd-amd64), const IP_MAX_SOCK_SRC_FILTER ideal-int pkg syscall (freebsd-amd64), const IP_MAX_SOURCE_FILTER ideal-int pkg syscall (freebsd-amd64), const IP_MF ideal-int pkg syscall (freebsd-amd64), const IP_MINTTL ideal-int pkg syscall (freebsd-amd64), const IP_MIN_MEMBERSHIPS ideal-int pkg syscall (freebsd-amd64), const IP_MSFILTER ideal-int pkg syscall (freebsd-amd64), const IP_MSS ideal-int pkg syscall (freebsd-amd64), const IP_MULTICAST_VIF ideal-int pkg syscall (freebsd-amd64), const IP_OFFMASK ideal-int pkg syscall (freebsd-amd64), const IP_ONESBCAST ideal-int pkg syscall (freebsd-amd64), const IP_OPTIONS ideal-int pkg syscall (freebsd-amd64), const IP_PORTRANGE ideal-int pkg syscall (freebsd-amd64), const IP_PORTRANGE_DEFAULT ideal-int pkg syscall (freebsd-amd64), const IP_PORTRANGE_HIGH ideal-int pkg syscall (freebsd-amd64), const IP_PORTRANGE_LOW ideal-int pkg syscall (freebsd-amd64), const IP_RECVDSTADDR ideal-int pkg syscall (freebsd-amd64), const IP_RECVIF ideal-int pkg syscall (freebsd-amd64), const IP_RECVOPTS ideal-int pkg syscall (freebsd-amd64), const IP_RECVRETOPTS ideal-int pkg syscall (freebsd-amd64), const IP_RECVTTL ideal-int pkg syscall (freebsd-amd64), const IP_RETOPTS ideal-int pkg syscall (freebsd-amd64), const IP_RF ideal-int pkg syscall (freebsd-amd64), const IP_RSVP_OFF ideal-int pkg syscall (freebsd-amd64), const IP_RSVP_ON ideal-int pkg syscall (freebsd-amd64), const IP_RSVP_VIF_OFF ideal-int pkg syscall (freebsd-amd64), const IP_RSVP_VIF_ON ideal-int pkg syscall (freebsd-amd64), const IP_SENDSRCADDR ideal-int pkg syscall (freebsd-amd64), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (freebsd-amd64), const LOCK_EX ideal-int pkg syscall (freebsd-amd64), const LOCK_NB ideal-int pkg syscall (freebsd-amd64), const LOCK_SH ideal-int pkg syscall (freebsd-amd64), const LOCK_UN ideal-int pkg syscall (freebsd-amd64), const MSG_COMPAT ideal-int pkg syscall (freebsd-amd64), const MSG_CTRUNC ideal-int pkg syscall (freebsd-amd64), const MSG_DONTROUTE ideal-int pkg syscall (freebsd-amd64), const MSG_DONTWAIT ideal-int pkg syscall (freebsd-amd64), const MSG_EOF ideal-int pkg syscall (freebsd-amd64), const MSG_EOR ideal-int pkg syscall (freebsd-amd64), const MSG_NBIO ideal-int pkg syscall (freebsd-amd64), const MSG_NOSIGNAL ideal-int pkg syscall (freebsd-amd64), const MSG_NOTIFICATION ideal-int pkg syscall (freebsd-amd64), const MSG_OOB ideal-int pkg syscall (freebsd-amd64), const MSG_PEEK ideal-int pkg syscall (freebsd-amd64), const MSG_TRUNC ideal-int pkg syscall (freebsd-amd64), const MSG_WAITALL ideal-int pkg syscall (freebsd-amd64), const NET_RT_DUMP ideal-int pkg syscall (freebsd-amd64), const NET_RT_FLAGS ideal-int pkg syscall (freebsd-amd64), const NET_RT_IFLIST ideal-int pkg syscall (freebsd-amd64), const NET_RT_IFMALIST ideal-int pkg syscall (freebsd-amd64), const NET_RT_MAXID ideal-int pkg syscall (freebsd-amd64), const NOTE_ATTRIB ideal-int pkg syscall (freebsd-amd64), const NOTE_CHILD ideal-int pkg syscall (freebsd-amd64), const NOTE_DELETE ideal-int pkg syscall (freebsd-amd64), const NOTE_EXEC ideal-int pkg syscall (freebsd-amd64), const NOTE_EXIT ideal-int pkg syscall (freebsd-amd64), const NOTE_EXTEND ideal-int pkg syscall (freebsd-amd64), const NOTE_FFAND ideal-int pkg syscall (freebsd-amd64), const NOTE_FFCOPY ideal-int pkg syscall (freebsd-amd64), const NOTE_FFCTRLMASK ideal-int pkg syscall (freebsd-amd64), const NOTE_FFLAGSMASK ideal-int pkg syscall (freebsd-amd64), const NOTE_FFNOP ideal-int pkg syscall (freebsd-amd64), const NOTE_FFOR ideal-int pkg syscall (freebsd-amd64), const NOTE_FORK ideal-int pkg syscall (freebsd-amd64), const NOTE_LINK ideal-int pkg syscall (freebsd-amd64), const NOTE_LOWAT ideal-int pkg syscall (freebsd-amd64), const NOTE_PCTRLMASK ideal-int pkg syscall (freebsd-amd64), const NOTE_PDATAMASK ideal-int pkg syscall (freebsd-amd64), const NOTE_RENAME ideal-int pkg syscall (freebsd-amd64), const NOTE_REVOKE ideal-int pkg syscall (freebsd-amd64), const NOTE_TRACK ideal-int pkg syscall (freebsd-amd64), const NOTE_TRACKERR ideal-int pkg syscall (freebsd-amd64), const NOTE_TRIGGER ideal-int pkg syscall (freebsd-amd64), const NOTE_WRITE ideal-int pkg syscall (freebsd-amd64), const O_ACCMODE ideal-int pkg syscall (freebsd-amd64), const O_DIRECT ideal-int pkg syscall (freebsd-amd64), const O_DIRECTORY ideal-int pkg syscall (freebsd-amd64), const O_EXEC ideal-int pkg syscall (freebsd-amd64), const O_EXLOCK ideal-int pkg syscall (freebsd-amd64), const O_FSYNC ideal-int pkg syscall (freebsd-amd64), const O_NDELAY ideal-int pkg syscall (freebsd-amd64), const O_NOFOLLOW ideal-int pkg syscall (freebsd-amd64), const O_SHLOCK ideal-int pkg syscall (freebsd-amd64), const O_TTY_INIT ideal-int pkg syscall (freebsd-amd64), const PTRACE_CONT ideal-int pkg syscall (freebsd-amd64), const PTRACE_KILL ideal-int pkg syscall (freebsd-amd64), const PTRACE_TRACEME ideal-int pkg syscall (freebsd-amd64), const RLIMIT_AS ideal-int pkg syscall (freebsd-amd64), const RLIMIT_CORE ideal-int pkg syscall (freebsd-amd64), const RLIMIT_CPU ideal-int pkg syscall (freebsd-amd64), const RLIMIT_DATA ideal-int pkg syscall (freebsd-amd64), const RLIMIT_FSIZE ideal-int pkg syscall (freebsd-amd64), const RLIMIT_NOFILE ideal-int pkg syscall (freebsd-amd64), const RLIMIT_STACK ideal-int pkg syscall (freebsd-amd64), const RLIM_INFINITY ideal-int pkg syscall (freebsd-amd64), const RTAX_AUTHOR ideal-int pkg syscall (freebsd-amd64), const RTAX_BRD ideal-int pkg syscall (freebsd-amd64), const RTAX_DST ideal-int pkg syscall (freebsd-amd64), const RTAX_GATEWAY ideal-int pkg syscall (freebsd-amd64), const RTAX_GENMASK ideal-int pkg syscall (freebsd-amd64), const RTAX_IFA ideal-int pkg syscall (freebsd-amd64), const RTAX_IFP ideal-int pkg syscall (freebsd-amd64), const RTAX_MAX ideal-int pkg syscall (freebsd-amd64), const RTAX_NETMASK ideal-int pkg syscall (freebsd-amd64), const RTA_AUTHOR ideal-int pkg syscall (freebsd-amd64), const RTA_BRD ideal-int pkg syscall (freebsd-amd64), const RTA_DST ideal-int pkg syscall (freebsd-amd64), const RTA_GATEWAY ideal-int pkg syscall (freebsd-amd64), const RTA_GENMASK ideal-int pkg syscall (freebsd-amd64), const RTA_IFA ideal-int pkg syscall (freebsd-amd64), const RTA_IFP ideal-int pkg syscall (freebsd-amd64), const RTA_NETMASK ideal-int pkg syscall (freebsd-amd64), const RTF_BLACKHOLE ideal-int pkg syscall (freebsd-amd64), const RTF_BROADCAST ideal-int pkg syscall (freebsd-amd64), const RTF_DONE ideal-int pkg syscall (freebsd-amd64), const RTF_DYNAMIC ideal-int pkg syscall (freebsd-amd64), const RTF_FMASK ideal-int pkg syscall (freebsd-amd64), const RTF_GATEWAY ideal-int pkg syscall (freebsd-amd64), const RTF_HOST ideal-int pkg syscall (freebsd-amd64), const RTF_LLDATA ideal-int pkg syscall (freebsd-amd64), const RTF_LLINFO ideal-int pkg syscall (freebsd-amd64), const RTF_LOCAL ideal-int pkg syscall (freebsd-amd64), const RTF_MODIFIED ideal-int pkg syscall (freebsd-amd64), const RTF_MULTICAST ideal-int pkg syscall (freebsd-amd64), const RTF_PINNED ideal-int pkg syscall (freebsd-amd64), const RTF_PRCLONING ideal-int pkg syscall (freebsd-amd64), const RTF_PROTO1 ideal-int pkg syscall (freebsd-amd64), const RTF_PROTO2 ideal-int pkg syscall (freebsd-amd64), const RTF_PROTO3 ideal-int pkg syscall (freebsd-amd64), const RTF_REJECT ideal-int pkg syscall (freebsd-amd64), const RTF_RNH_LOCKED ideal-int pkg syscall (freebsd-amd64), const RTF_STATIC ideal-int pkg syscall (freebsd-amd64), const RTF_STICKY ideal-int pkg syscall (freebsd-amd64), const RTF_UP ideal-int pkg syscall (freebsd-amd64), const RTF_XRESOLVE ideal-int pkg syscall (freebsd-amd64), const RTM_ADD ideal-int pkg syscall (freebsd-amd64), const RTM_CHANGE ideal-int pkg syscall (freebsd-amd64), const RTM_DELADDR ideal-int pkg syscall (freebsd-amd64), const RTM_DELETE ideal-int pkg syscall (freebsd-amd64), const RTM_DELMADDR ideal-int pkg syscall (freebsd-amd64), const RTM_GET ideal-int pkg syscall (freebsd-amd64), const RTM_IEEE80211 ideal-int pkg syscall (freebsd-amd64), const RTM_IFANNOUNCE ideal-int pkg syscall (freebsd-amd64), const RTM_IFINFO ideal-int pkg syscall (freebsd-amd64), const RTM_LOCK ideal-int pkg syscall (freebsd-amd64), const RTM_LOSING ideal-int pkg syscall (freebsd-amd64), const RTM_MISS ideal-int pkg syscall (freebsd-amd64), const RTM_NEWADDR ideal-int pkg syscall (freebsd-amd64), const RTM_NEWMADDR ideal-int pkg syscall (freebsd-amd64), const RTM_OLDADD ideal-int pkg syscall (freebsd-amd64), const RTM_OLDDEL ideal-int pkg syscall (freebsd-amd64), const RTM_REDIRECT ideal-int pkg syscall (freebsd-amd64), const RTM_RESOLVE ideal-int pkg syscall (freebsd-amd64), const RTM_RTTUNIT ideal-int pkg syscall (freebsd-amd64), const RTM_VERSION ideal-int pkg syscall (freebsd-amd64), const RTV_EXPIRE ideal-int pkg syscall (freebsd-amd64), const RTV_HOPCOUNT ideal-int pkg syscall (freebsd-amd64), const RTV_MTU ideal-int pkg syscall (freebsd-amd64), const RTV_RPIPE ideal-int pkg syscall (freebsd-amd64), const RTV_RTT ideal-int pkg syscall (freebsd-amd64), const RTV_RTTVAR ideal-int pkg syscall (freebsd-amd64), const RTV_SPIPE ideal-int pkg syscall (freebsd-amd64), const RTV_SSTHRESH ideal-int pkg syscall (freebsd-amd64), const RTV_WEIGHT ideal-int pkg syscall (freebsd-amd64), const RUSAGE_CHILDREN ideal-int pkg syscall (freebsd-amd64), const RUSAGE_SELF ideal-int pkg syscall (freebsd-amd64), const RUSAGE_THREAD ideal-int pkg syscall (freebsd-amd64), const SCM_BINTIME ideal-int pkg syscall (freebsd-amd64), const SCM_CREDS ideal-int pkg syscall (freebsd-amd64), const SCM_RIGHTS ideal-int pkg syscall (freebsd-amd64), const SCM_TIMESTAMP ideal-int pkg syscall (freebsd-amd64), const SIGCHLD Signal pkg syscall (freebsd-amd64), const SIGCONT Signal pkg syscall (freebsd-amd64), const SIGEMT Signal pkg syscall (freebsd-amd64), const SIGINFO Signal pkg syscall (freebsd-amd64), const SIGIO Signal pkg syscall (freebsd-amd64), const SIGIOT Signal pkg syscall (freebsd-amd64), const SIGLWP Signal pkg syscall (freebsd-amd64), const SIGPROF Signal pkg syscall (freebsd-amd64), const SIGSTOP Signal pkg syscall (freebsd-amd64), const SIGSYS Signal pkg syscall (freebsd-amd64), const SIGTHR Signal pkg syscall (freebsd-amd64), const SIGTSTP Signal pkg syscall (freebsd-amd64), const SIGTTIN Signal pkg syscall (freebsd-amd64), const SIGTTOU Signal pkg syscall (freebsd-amd64), const SIGURG Signal pkg syscall (freebsd-amd64), const SIGUSR1 Signal pkg syscall (freebsd-amd64), const SIGUSR2 Signal pkg syscall (freebsd-amd64), const SIGVTALRM Signal pkg syscall (freebsd-amd64), const SIGWINCH Signal pkg syscall (freebsd-amd64), const SIGXCPU Signal pkg syscall (freebsd-amd64), const SIGXFSZ Signal pkg syscall (freebsd-amd64), const SIOCADDMULTI ideal-int pkg syscall (freebsd-amd64), const SIOCADDRT ideal-int pkg syscall (freebsd-amd64), const SIOCAIFADDR ideal-int pkg syscall (freebsd-amd64), const SIOCAIFGROUP ideal-int pkg syscall (freebsd-amd64), const SIOCALIFADDR ideal-int pkg syscall (freebsd-amd64), const SIOCATMARK ideal-int pkg syscall (freebsd-amd64), const SIOCDELMULTI ideal-int pkg syscall (freebsd-amd64), const SIOCDELRT ideal-int pkg syscall (freebsd-amd64), const SIOCDIFADDR ideal-int pkg syscall (freebsd-amd64), const SIOCDIFGROUP ideal-int pkg syscall (freebsd-amd64), const SIOCDIFPHYADDR ideal-int pkg syscall (freebsd-amd64), const SIOCDLIFADDR ideal-int pkg syscall (freebsd-amd64), const SIOCGDRVSPEC ideal-int pkg syscall (freebsd-amd64), const SIOCGETSGCNT ideal-int pkg syscall (freebsd-amd64), const SIOCGETVIFCNT ideal-int pkg syscall (freebsd-amd64), const SIOCGHIWAT ideal-int pkg syscall (freebsd-amd64), const SIOCGIFADDR ideal-int pkg syscall (freebsd-amd64), const SIOCGIFBRDADDR ideal-int pkg syscall (freebsd-amd64), const SIOCGIFCAP ideal-int pkg syscall (freebsd-amd64), const SIOCGIFCONF ideal-int pkg syscall (freebsd-amd64), const SIOCGIFDESCR ideal-int pkg syscall (freebsd-amd64), const SIOCGIFDSTADDR ideal-int pkg syscall (freebsd-amd64), const SIOCGIFFLAGS ideal-int pkg syscall (freebsd-amd64), const SIOCGIFGENERIC ideal-int pkg syscall (freebsd-amd64), const SIOCGIFGMEMB ideal-int pkg syscall (freebsd-amd64), const SIOCGIFGROUP ideal-int pkg syscall (freebsd-amd64), const SIOCGIFINDEX ideal-int pkg syscall (freebsd-amd64), const SIOCGIFMAC ideal-int pkg syscall (freebsd-amd64), const SIOCGIFMEDIA ideal-int pkg syscall (freebsd-amd64), const SIOCGIFMETRIC ideal-int pkg syscall (freebsd-amd64), const SIOCGIFMTU ideal-int pkg syscall (freebsd-amd64), const SIOCGIFNETMASK ideal-int pkg syscall (freebsd-amd64), const SIOCGIFPDSTADDR ideal-int pkg syscall (freebsd-amd64), const SIOCGIFPHYS ideal-int pkg syscall (freebsd-amd64), const SIOCGIFPSRCADDR ideal-int pkg syscall (freebsd-amd64), const SIOCGIFSTATUS ideal-int pkg syscall (freebsd-amd64), const SIOCGLIFADDR ideal-int pkg syscall (freebsd-amd64), const SIOCGLIFPHYADDR ideal-int pkg syscall (freebsd-amd64), const SIOCGLOWAT ideal-int pkg syscall (freebsd-amd64), const SIOCGPGRP ideal-int pkg syscall (freebsd-amd64), const SIOCGPRIVATE_0 ideal-int pkg syscall (freebsd-amd64), const SIOCGPRIVATE_1 ideal-int pkg syscall (freebsd-amd64), const SIOCIFCREATE ideal-int pkg syscall (freebsd-amd64), const SIOCIFCREATE2 ideal-int pkg syscall (freebsd-amd64), const SIOCIFDESTROY ideal-int pkg syscall (freebsd-amd64), const SIOCIFGCLONERS ideal-int pkg syscall (freebsd-amd64), const SIOCSDRVSPEC ideal-int pkg syscall (freebsd-amd64), const SIOCSHIWAT ideal-int pkg syscall (freebsd-amd64), const SIOCSIFADDR ideal-int pkg syscall (freebsd-amd64), const SIOCSIFBRDADDR ideal-int pkg syscall (freebsd-amd64), const SIOCSIFCAP ideal-int pkg syscall (freebsd-amd64), const SIOCSIFDESCR ideal-int pkg syscall (freebsd-amd64), const SIOCSIFDSTADDR ideal-int pkg syscall (freebsd-amd64), const SIOCSIFFLAGS ideal-int pkg syscall (freebsd-amd64), const SIOCSIFGENERIC ideal-int pkg syscall (freebsd-amd64), const SIOCSIFLLADDR ideal-int pkg syscall (freebsd-amd64), const SIOCSIFMAC ideal-int pkg syscall (freebsd-amd64), const SIOCSIFMEDIA ideal-int pkg syscall (freebsd-amd64), const SIOCSIFMETRIC ideal-int pkg syscall (freebsd-amd64), const SIOCSIFMTU ideal-int pkg syscall (freebsd-amd64), const SIOCSIFNAME ideal-int pkg syscall (freebsd-amd64), const SIOCSIFNETMASK ideal-int pkg syscall (freebsd-amd64), const SIOCSIFPHYADDR ideal-int pkg syscall (freebsd-amd64), const SIOCSIFPHYS ideal-int pkg syscall (freebsd-amd64), const SIOCSIFRVNET ideal-int pkg syscall (freebsd-amd64), const SIOCSIFVNET ideal-int pkg syscall (freebsd-amd64), const SIOCSLIFPHYADDR ideal-int pkg syscall (freebsd-amd64), const SIOCSLOWAT ideal-int pkg syscall (freebsd-amd64), const SIOCSPGRP ideal-int pkg syscall (freebsd-amd64), const SOCK_MAXADDRLEN ideal-int pkg syscall (freebsd-amd64), const SOCK_RDM ideal-int pkg syscall (freebsd-amd64), const SO_ACCEPTCONN ideal-int pkg syscall (freebsd-amd64), const SO_ACCEPTFILTER ideal-int pkg syscall (freebsd-amd64), const SO_BINTIME ideal-int pkg syscall (freebsd-amd64), const SO_DEBUG ideal-int pkg syscall (freebsd-amd64), const SO_ERROR ideal-int pkg syscall (freebsd-amd64), const SO_LABEL ideal-int pkg syscall (freebsd-amd64), const SO_LISTENINCQLEN ideal-int pkg syscall (freebsd-amd64), const SO_LISTENQLEN ideal-int pkg syscall (freebsd-amd64), const SO_LISTENQLIMIT ideal-int pkg syscall (freebsd-amd64), const SO_NOSIGPIPE ideal-int pkg syscall (freebsd-amd64), const SO_NO_DDP ideal-int pkg syscall (freebsd-amd64), const SO_NO_OFFLOAD ideal-int pkg syscall (freebsd-amd64), const SO_OOBINLINE ideal-int pkg syscall (freebsd-amd64), const SO_PEERLABEL ideal-int pkg syscall (freebsd-amd64), const SO_RCVLOWAT ideal-int pkg syscall (freebsd-amd64), const SO_RCVTIMEO ideal-int pkg syscall (freebsd-amd64), const SO_REUSEPORT ideal-int pkg syscall (freebsd-amd64), const SO_SETFIB ideal-int pkg syscall (freebsd-amd64), const SO_SNDLOWAT ideal-int pkg syscall (freebsd-amd64), const SO_SNDTIMEO ideal-int pkg syscall (freebsd-amd64), const SO_TIMESTAMP ideal-int pkg syscall (freebsd-amd64), const SO_TYPE ideal-int pkg syscall (freebsd-amd64), const SO_USELOOPBACK ideal-int pkg syscall (freebsd-amd64), const SYS_ABORT2 ideal-int pkg syscall (freebsd-amd64), const SYS_ACCEPT ideal-int pkg syscall (freebsd-amd64), const SYS_ACCESS ideal-int pkg syscall (freebsd-amd64), const SYS_ACCT ideal-int pkg syscall (freebsd-amd64), const SYS_ADJTIME ideal-int pkg syscall (freebsd-amd64), const SYS_AUDIT ideal-int pkg syscall (freebsd-amd64), const SYS_AUDITCTL ideal-int pkg syscall (freebsd-amd64), const SYS_AUDITON ideal-int pkg syscall (freebsd-amd64), const SYS_BIND ideal-int pkg syscall (freebsd-amd64), const SYS_CAP_ENTER ideal-int pkg syscall (freebsd-amd64), const SYS_CAP_GETMODE ideal-int pkg syscall (freebsd-amd64), const SYS_CAP_GETRIGHTS ideal-int pkg syscall (freebsd-amd64), const SYS_CAP_NEW ideal-int pkg syscall (freebsd-amd64), const SYS_CHDIR ideal-int pkg syscall (freebsd-amd64), const SYS_CHFLAGS ideal-int pkg syscall (freebsd-amd64), const SYS_CHMOD ideal-int pkg syscall (freebsd-amd64), const SYS_CHOWN ideal-int pkg syscall (freebsd-amd64), const SYS_CHROOT ideal-int pkg syscall (freebsd-amd64), const SYS_CLOCK_GETRES ideal-int pkg syscall (freebsd-amd64), const SYS_CLOCK_GETTIME ideal-int pkg syscall (freebsd-amd64), const SYS_CLOCK_SETTIME ideal-int pkg syscall (freebsd-amd64), const SYS_CLOSE ideal-int pkg syscall (freebsd-amd64), const SYS_CLOSEFROM ideal-int pkg syscall (freebsd-amd64), const SYS_CONNECT ideal-int pkg syscall (freebsd-amd64), const SYS_CPUSET ideal-int pkg syscall (freebsd-amd64), const SYS_CPUSET_GETAFFINITY ideal-int pkg syscall (freebsd-amd64), const SYS_CPUSET_GETID ideal-int pkg syscall (freebsd-amd64), const SYS_CPUSET_SETAFFINITY ideal-int pkg syscall (freebsd-amd64), const SYS_CPUSET_SETID ideal-int pkg syscall (freebsd-amd64), const SYS_DUP ideal-int pkg syscall (freebsd-amd64), const SYS_DUP2 ideal-int pkg syscall (freebsd-amd64), const SYS_EACCESS ideal-int pkg syscall (freebsd-amd64), const SYS_EXECVE ideal-int pkg syscall (freebsd-amd64), const SYS_EXIT ideal-int pkg syscall (freebsd-amd64), const SYS_EXTATTRCTL ideal-int pkg syscall (freebsd-amd64), const SYS_EXTATTR_DELETE_FD ideal-int pkg syscall (freebsd-amd64), const SYS_EXTATTR_DELETE_FILE ideal-int pkg syscall (freebsd-amd64), const SYS_EXTATTR_DELETE_LINK ideal-int pkg syscall (freebsd-amd64), const SYS_EXTATTR_GET_FD ideal-int pkg syscall (freebsd-amd64), const SYS_EXTATTR_GET_FILE ideal-int pkg syscall (freebsd-amd64), const SYS_EXTATTR_GET_LINK ideal-int pkg syscall (freebsd-amd64), const SYS_EXTATTR_LIST_FD ideal-int pkg syscall (freebsd-amd64), const SYS_EXTATTR_LIST_FILE ideal-int pkg syscall (freebsd-amd64), const SYS_EXTATTR_LIST_LINK ideal-int pkg syscall (freebsd-amd64), const SYS_EXTATTR_SET_FD ideal-int pkg syscall (freebsd-amd64), const SYS_EXTATTR_SET_FILE ideal-int pkg syscall (freebsd-amd64), const SYS_EXTATTR_SET_LINK ideal-int pkg syscall (freebsd-amd64), const SYS_FACCESSAT ideal-int pkg syscall (freebsd-amd64), const SYS_FCHDIR ideal-int pkg syscall (freebsd-amd64), const SYS_FCHFLAGS ideal-int pkg syscall (freebsd-amd64), const SYS_FCHMOD ideal-int pkg syscall (freebsd-amd64), const SYS_FCHMODAT ideal-int pkg syscall (freebsd-amd64), const SYS_FCHOWN ideal-int pkg syscall (freebsd-amd64), const SYS_FCHOWNAT ideal-int pkg syscall (freebsd-amd64), const SYS_FCNTL ideal-int pkg syscall (freebsd-amd64), const SYS_FEXECVE ideal-int pkg syscall (freebsd-amd64), const SYS_FFCLOCK_GETCOUNTER ideal-int pkg syscall (freebsd-amd64), const SYS_FFCLOCK_GETESTIMATE ideal-int pkg syscall (freebsd-amd64), const SYS_FFCLOCK_SETESTIMATE ideal-int pkg syscall (freebsd-amd64), const SYS_FHOPEN ideal-int pkg syscall (freebsd-amd64), const SYS_FHSTAT ideal-int pkg syscall (freebsd-amd64), const SYS_FHSTATFS ideal-int pkg syscall (freebsd-amd64), const SYS_FLOCK ideal-int pkg syscall (freebsd-amd64), const SYS_FORK ideal-int pkg syscall (freebsd-amd64), const SYS_FPATHCONF ideal-int pkg syscall (freebsd-amd64), const SYS_FREEBSD6_FTRUNCATE ideal-int pkg syscall (freebsd-amd64), const SYS_FREEBSD6_LSEEK ideal-int pkg syscall (freebsd-amd64), const SYS_FREEBSD6_MMAP ideal-int pkg syscall (freebsd-amd64), const SYS_FREEBSD6_PREAD ideal-int pkg syscall (freebsd-amd64), const SYS_FREEBSD6_PWRITE ideal-int pkg syscall (freebsd-amd64), const SYS_FREEBSD6_TRUNCATE ideal-int pkg syscall (freebsd-amd64), const SYS_FSTAT ideal-int pkg syscall (freebsd-amd64), const SYS_FSTATAT ideal-int pkg syscall (freebsd-amd64), const SYS_FSTATFS ideal-int pkg syscall (freebsd-amd64), const SYS_FSYNC ideal-int pkg syscall (freebsd-amd64), const SYS_FTRUNCATE ideal-int pkg syscall (freebsd-amd64), const SYS_FUTIMES ideal-int pkg syscall (freebsd-amd64), const SYS_FUTIMESAT ideal-int pkg syscall (freebsd-amd64), const SYS_GETAUDIT ideal-int pkg syscall (freebsd-amd64), const SYS_GETAUDIT_ADDR ideal-int pkg syscall (freebsd-amd64), const SYS_GETAUID ideal-int pkg syscall (freebsd-amd64), const SYS_GETCONTEXT ideal-int pkg syscall (freebsd-amd64), const SYS_GETDENTS ideal-int pkg syscall (freebsd-amd64), const SYS_GETDIRENTRIES ideal-int pkg syscall (freebsd-amd64), const SYS_GETDTABLESIZE ideal-int pkg syscall (freebsd-amd64), const SYS_GETEGID ideal-int pkg syscall (freebsd-amd64), const SYS_GETEUID ideal-int pkg syscall (freebsd-amd64), const SYS_GETFH ideal-int pkg syscall (freebsd-amd64), const SYS_GETFSSTAT ideal-int pkg syscall (freebsd-amd64), const SYS_GETGID ideal-int pkg syscall (freebsd-amd64), const SYS_GETGROUPS ideal-int pkg syscall (freebsd-amd64), const SYS_GETITIMER ideal-int pkg syscall (freebsd-amd64), const SYS_GETLOGIN ideal-int pkg syscall (freebsd-amd64), const SYS_GETLOGINCLASS ideal-int pkg syscall (freebsd-amd64), const SYS_GETPEERNAME ideal-int pkg syscall (freebsd-amd64), const SYS_GETPGID ideal-int pkg syscall (freebsd-amd64), const SYS_GETPGRP ideal-int pkg syscall (freebsd-amd64), const SYS_GETPID ideal-int pkg syscall (freebsd-amd64), const SYS_GETPPID ideal-int pkg syscall (freebsd-amd64), const SYS_GETPRIORITY ideal-int pkg syscall (freebsd-amd64), const SYS_GETRESGID ideal-int pkg syscall (freebsd-amd64), const SYS_GETRESUID ideal-int pkg syscall (freebsd-amd64), const SYS_GETRLIMIT ideal-int pkg syscall (freebsd-amd64), const SYS_GETRUSAGE ideal-int pkg syscall (freebsd-amd64), const SYS_GETSID ideal-int pkg syscall (freebsd-amd64), const SYS_GETSOCKNAME ideal-int pkg syscall (freebsd-amd64), const SYS_GETSOCKOPT ideal-int pkg syscall (freebsd-amd64), const SYS_GETTIMEOFDAY ideal-int pkg syscall (freebsd-amd64), const SYS_GETUID ideal-int pkg syscall (freebsd-amd64), const SYS_IOCTL ideal-int pkg syscall (freebsd-amd64), const SYS_ISSETUGID ideal-int pkg syscall (freebsd-amd64), const SYS_JAIL ideal-int pkg syscall (freebsd-amd64), const SYS_JAIL_ATTACH ideal-int pkg syscall (freebsd-amd64), const SYS_JAIL_GET ideal-int pkg syscall (freebsd-amd64), const SYS_JAIL_REMOVE ideal-int pkg syscall (freebsd-amd64), const SYS_JAIL_SET ideal-int pkg syscall (freebsd-amd64), const SYS_KENV ideal-int pkg syscall (freebsd-amd64), const SYS_KEVENT ideal-int pkg syscall (freebsd-amd64), const SYS_KILL ideal-int pkg syscall (freebsd-amd64), const SYS_KLDFIND ideal-int pkg syscall (freebsd-amd64), const SYS_KLDFIRSTMOD ideal-int pkg syscall (freebsd-amd64), const SYS_KLDLOAD ideal-int pkg syscall (freebsd-amd64), const SYS_KLDNEXT ideal-int pkg syscall (freebsd-amd64), const SYS_KLDSTAT ideal-int pkg syscall (freebsd-amd64), const SYS_KLDSYM ideal-int pkg syscall (freebsd-amd64), const SYS_KLDUNLOAD ideal-int pkg syscall (freebsd-amd64), const SYS_KLDUNLOADF ideal-int pkg syscall (freebsd-amd64), const SYS_KQUEUE ideal-int pkg syscall (freebsd-amd64), const SYS_KTIMER_CREATE ideal-int pkg syscall (freebsd-amd64), const SYS_KTIMER_DELETE ideal-int pkg syscall (freebsd-amd64), const SYS_KTIMER_GETOVERRUN ideal-int pkg syscall (freebsd-amd64), const SYS_KTIMER_GETTIME ideal-int pkg syscall (freebsd-amd64), const SYS_KTIMER_SETTIME ideal-int pkg syscall (freebsd-amd64), const SYS_KTRACE ideal-int pkg syscall (freebsd-amd64), const SYS_LCHFLAGS ideal-int pkg syscall (freebsd-amd64), const SYS_LCHMOD ideal-int pkg syscall (freebsd-amd64), const SYS_LCHOWN ideal-int pkg syscall (freebsd-amd64), const SYS_LGETFH ideal-int pkg syscall (freebsd-amd64), const SYS_LINK ideal-int pkg syscall (freebsd-amd64), const SYS_LINKAT ideal-int pkg syscall (freebsd-amd64), const SYS_LISTEN ideal-int pkg syscall (freebsd-amd64), const SYS_LPATHCONF ideal-int pkg syscall (freebsd-amd64), const SYS_LSEEK ideal-int pkg syscall (freebsd-amd64), const SYS_LSTAT ideal-int pkg syscall (freebsd-amd64), const SYS_LUTIMES ideal-int pkg syscall (freebsd-amd64), const SYS_MAC_SYSCALL ideal-int pkg syscall (freebsd-amd64), const SYS_MADVISE ideal-int pkg syscall (freebsd-amd64), const SYS_MINCORE ideal-int pkg syscall (freebsd-amd64), const SYS_MINHERIT ideal-int pkg syscall (freebsd-amd64), const SYS_MKDIR ideal-int pkg syscall (freebsd-amd64), const SYS_MKDIRAT ideal-int pkg syscall (freebsd-amd64), const SYS_MKFIFO ideal-int pkg syscall (freebsd-amd64), const SYS_MKFIFOAT ideal-int pkg syscall (freebsd-amd64), const SYS_MKNOD ideal-int pkg syscall (freebsd-amd64), const SYS_MKNODAT ideal-int pkg syscall (freebsd-amd64), const SYS_MLOCK ideal-int pkg syscall (freebsd-amd64), const SYS_MLOCKALL ideal-int pkg syscall (freebsd-amd64), const SYS_MMAP ideal-int pkg syscall (freebsd-amd64), const SYS_MODFIND ideal-int pkg syscall (freebsd-amd64), const SYS_MODFNEXT ideal-int pkg syscall (freebsd-amd64), const SYS_MODNEXT ideal-int pkg syscall (freebsd-amd64), const SYS_MODSTAT ideal-int pkg syscall (freebsd-amd64), const SYS_MOUNT ideal-int pkg syscall (freebsd-amd64), const SYS_MPROTECT ideal-int pkg syscall (freebsd-amd64), const SYS_MSYNC ideal-int pkg syscall (freebsd-amd64), const SYS_MUNLOCK ideal-int pkg syscall (freebsd-amd64), const SYS_MUNLOCKALL ideal-int pkg syscall (freebsd-amd64), const SYS_MUNMAP ideal-int pkg syscall (freebsd-amd64), const SYS_NANOSLEEP ideal-int pkg syscall (freebsd-amd64), const SYS_NFSTAT ideal-int pkg syscall (freebsd-amd64), const SYS_NLSTAT ideal-int pkg syscall (freebsd-amd64), const SYS_NMOUNT ideal-int pkg syscall (freebsd-amd64), const SYS_NSTAT ideal-int pkg syscall (freebsd-amd64), const SYS_NTP_ADJTIME ideal-int pkg syscall (freebsd-amd64), const SYS_NTP_GETTIME ideal-int pkg syscall (freebsd-amd64), const SYS_OBREAK ideal-int pkg syscall (freebsd-amd64), const SYS_OPEN ideal-int pkg syscall (freebsd-amd64), const SYS_OPENAT ideal-int pkg syscall (freebsd-amd64), const SYS_OPENBSD_POLL ideal-int pkg syscall (freebsd-amd64), const SYS_OVADVISE ideal-int pkg syscall (freebsd-amd64), const SYS_PATHCONF ideal-int pkg syscall (freebsd-amd64), const SYS_PDFORK ideal-int pkg syscall (freebsd-amd64), const SYS_PDGETPID ideal-int pkg syscall (freebsd-amd64), const SYS_PDKILL ideal-int pkg syscall (freebsd-amd64), const SYS_PIPE ideal-int pkg syscall (freebsd-amd64), const SYS_POLL ideal-int pkg syscall (freebsd-amd64), const SYS_POSIX_FADVISE ideal-int pkg syscall (freebsd-amd64), const SYS_POSIX_FALLOCATE ideal-int pkg syscall (freebsd-amd64), const SYS_POSIX_OPENPT ideal-int pkg syscall (freebsd-amd64), const SYS_PREAD ideal-int pkg syscall (freebsd-amd64), const SYS_PREADV ideal-int pkg syscall (freebsd-amd64), const SYS_PROFIL ideal-int pkg syscall (freebsd-amd64), const SYS_PSELECT ideal-int pkg syscall (freebsd-amd64), const SYS_PTRACE ideal-int pkg syscall (freebsd-amd64), const SYS_PWRITE ideal-int pkg syscall (freebsd-amd64), const SYS_PWRITEV ideal-int pkg syscall (freebsd-amd64), const SYS_QUOTACTL ideal-int pkg syscall (freebsd-amd64), const SYS_RCTL_ADD_RULE ideal-int pkg syscall (freebsd-amd64), const SYS_RCTL_GET_LIMITS ideal-int pkg syscall (freebsd-amd64), const SYS_RCTL_GET_RACCT ideal-int pkg syscall (freebsd-amd64), const SYS_RCTL_GET_RULES ideal-int pkg syscall (freebsd-amd64), const SYS_RCTL_REMOVE_RULE ideal-int pkg syscall (freebsd-amd64), const SYS_READ ideal-int pkg syscall (freebsd-amd64), const SYS_READLINK ideal-int pkg syscall (freebsd-amd64), const SYS_READLINKAT ideal-int pkg syscall (freebsd-amd64), const SYS_READV ideal-int pkg syscall (freebsd-amd64), const SYS_REBOOT ideal-int pkg syscall (freebsd-amd64), const SYS_RECVFROM ideal-int pkg syscall (freebsd-amd64), const SYS_RECVMSG ideal-int pkg syscall (freebsd-amd64), const SYS_RENAME ideal-int pkg syscall (freebsd-amd64), const SYS_RENAMEAT ideal-int pkg syscall (freebsd-amd64), const SYS_REVOKE ideal-int pkg syscall (freebsd-amd64), const SYS_RFORK ideal-int pkg syscall (freebsd-amd64), const SYS_RMDIR ideal-int pkg syscall (freebsd-amd64), const SYS_RTPRIO ideal-int pkg syscall (freebsd-amd64), const SYS_RTPRIO_THREAD ideal-int pkg syscall (freebsd-amd64), const SYS_SBRK ideal-int pkg syscall (freebsd-amd64), const SYS_SCHED_GETPARAM ideal-int pkg syscall (freebsd-amd64), const SYS_SCHED_GETSCHEDULER ideal-int pkg syscall (freebsd-amd64), const SYS_SCHED_GET_PRIORITY_MAX ideal-int pkg syscall (freebsd-amd64), const SYS_SCHED_GET_PRIORITY_MIN ideal-int pkg syscall (freebsd-amd64), const SYS_SCHED_RR_GET_INTERVAL ideal-int pkg syscall (freebsd-amd64), const SYS_SCHED_SETPARAM ideal-int pkg syscall (freebsd-amd64), const SYS_SCHED_SETSCHEDULER ideal-int pkg syscall (freebsd-amd64), const SYS_SCHED_YIELD ideal-int pkg syscall (freebsd-amd64), const SYS_SCTP_GENERIC_RECVMSG ideal-int pkg syscall (freebsd-amd64), const SYS_SCTP_GENERIC_SENDMSG ideal-int pkg syscall (freebsd-amd64), const SYS_SCTP_GENERIC_SENDMSG_IOV ideal-int pkg syscall (freebsd-amd64), const SYS_SCTP_PEELOFF ideal-int pkg syscall (freebsd-amd64), const SYS_SELECT ideal-int pkg syscall (freebsd-amd64), const SYS_SENDFILE ideal-int pkg syscall (freebsd-amd64), const SYS_SENDMSG ideal-int pkg syscall (freebsd-amd64), const SYS_SENDTO ideal-int pkg syscall (freebsd-amd64), const SYS_SETAUDIT ideal-int pkg syscall (freebsd-amd64), const SYS_SETAUDIT_ADDR ideal-int pkg syscall (freebsd-amd64), const SYS_SETAUID ideal-int pkg syscall (freebsd-amd64), const SYS_SETCONTEXT ideal-int pkg syscall (freebsd-amd64), const SYS_SETEGID ideal-int pkg syscall (freebsd-amd64), const SYS_SETEUID ideal-int pkg syscall (freebsd-amd64), const SYS_SETFIB ideal-int pkg syscall (freebsd-amd64), const SYS_SETGID ideal-int pkg syscall (freebsd-amd64), const SYS_SETGROUPS ideal-int pkg syscall (freebsd-amd64), const SYS_SETITIMER ideal-int pkg syscall (freebsd-amd64), const SYS_SETLOGIN ideal-int pkg syscall (freebsd-amd64), const SYS_SETLOGINCLASS ideal-int pkg syscall (freebsd-amd64), const SYS_SETPGID ideal-int pkg syscall (freebsd-amd64), const SYS_SETPRIORITY ideal-int pkg syscall (freebsd-amd64), const SYS_SETREGID ideal-int pkg syscall (freebsd-amd64), const SYS_SETRESGID ideal-int pkg syscall (freebsd-amd64), const SYS_SETRESUID ideal-int pkg syscall (freebsd-amd64), const SYS_SETREUID ideal-int pkg syscall (freebsd-amd64), const SYS_SETRLIMIT ideal-int pkg syscall (freebsd-amd64), const SYS_SETSID ideal-int pkg syscall (freebsd-amd64), const SYS_SETSOCKOPT ideal-int pkg syscall (freebsd-amd64), const SYS_SETTIMEOFDAY ideal-int pkg syscall (freebsd-amd64), const SYS_SETUID ideal-int pkg syscall (freebsd-amd64), const SYS_SHM_OPEN ideal-int pkg syscall (freebsd-amd64), const SYS_SHM_UNLINK ideal-int pkg syscall (freebsd-amd64), const SYS_SHUTDOWN ideal-int pkg syscall (freebsd-amd64), const SYS_SIGACTION ideal-int pkg syscall (freebsd-amd64), const SYS_SIGALTSTACK ideal-int pkg syscall (freebsd-amd64), const SYS_SIGPENDING ideal-int pkg syscall (freebsd-amd64), const SYS_SIGPROCMASK ideal-int pkg syscall (freebsd-amd64), const SYS_SIGQUEUE ideal-int pkg syscall (freebsd-amd64), const SYS_SIGRETURN ideal-int pkg syscall (freebsd-amd64), const SYS_SIGSUSPEND ideal-int pkg syscall (freebsd-amd64), const SYS_SIGTIMEDWAIT ideal-int pkg syscall (freebsd-amd64), const SYS_SIGWAIT ideal-int pkg syscall (freebsd-amd64), const SYS_SIGWAITINFO ideal-int pkg syscall (freebsd-amd64), const SYS_SOCKET ideal-int pkg syscall (freebsd-amd64), const SYS_SOCKETPAIR ideal-int pkg syscall (freebsd-amd64), const SYS_SSTK ideal-int pkg syscall (freebsd-amd64), const SYS_STAT ideal-int pkg syscall (freebsd-amd64), const SYS_STATFS ideal-int pkg syscall (freebsd-amd64), const SYS_SWAPCONTEXT ideal-int pkg syscall (freebsd-amd64), const SYS_SWAPOFF ideal-int pkg syscall (freebsd-amd64), const SYS_SWAPON ideal-int pkg syscall (freebsd-amd64), const SYS_SYMLINK ideal-int pkg syscall (freebsd-amd64), const SYS_SYMLINKAT ideal-int pkg syscall (freebsd-amd64), const SYS_SYNC ideal-int pkg syscall (freebsd-amd64), const SYS_SYSARCH ideal-int pkg syscall (freebsd-amd64), const SYS_THR_CREATE ideal-int pkg syscall (freebsd-amd64), const SYS_THR_EXIT ideal-int pkg syscall (freebsd-amd64), const SYS_THR_KILL ideal-int pkg syscall (freebsd-amd64), const SYS_THR_KILL2 ideal-int pkg syscall (freebsd-amd64), const SYS_THR_NEW ideal-int pkg syscall (freebsd-amd64), const SYS_THR_SELF ideal-int pkg syscall (freebsd-amd64), const SYS_THR_SET_NAME ideal-int pkg syscall (freebsd-amd64), const SYS_THR_SUSPEND ideal-int pkg syscall (freebsd-amd64), const SYS_THR_WAKE ideal-int pkg syscall (freebsd-amd64), const SYS_TRUNCATE ideal-int pkg syscall (freebsd-amd64), const SYS_UMASK ideal-int pkg syscall (freebsd-amd64), const SYS_UNDELETE ideal-int pkg syscall (freebsd-amd64), const SYS_UNLINK ideal-int pkg syscall (freebsd-amd64), const SYS_UNLINKAT ideal-int pkg syscall (freebsd-amd64), const SYS_UNMOUNT ideal-int pkg syscall (freebsd-amd64), const SYS_UTIMES ideal-int pkg syscall (freebsd-amd64), const SYS_UTRACE ideal-int pkg syscall (freebsd-amd64), const SYS_UUIDGEN ideal-int pkg syscall (freebsd-amd64), const SYS_VFORK ideal-int pkg syscall (freebsd-amd64), const SYS_WAIT4 ideal-int pkg syscall (freebsd-amd64), const SYS_WRITE ideal-int pkg syscall (freebsd-amd64), const SYS_WRITEV ideal-int pkg syscall (freebsd-amd64), const SYS_YIELD ideal-int pkg syscall (freebsd-amd64), const SYS__UMTX_LOCK ideal-int pkg syscall (freebsd-amd64), const SYS__UMTX_OP ideal-int pkg syscall (freebsd-amd64), const SYS__UMTX_UNLOCK ideal-int pkg syscall (freebsd-amd64), const SYS___ACL_ACLCHECK_FD ideal-int pkg syscall (freebsd-amd64), const SYS___ACL_ACLCHECK_FILE ideal-int pkg syscall (freebsd-amd64), const SYS___ACL_ACLCHECK_LINK ideal-int pkg syscall (freebsd-amd64), const SYS___ACL_DELETE_FD ideal-int pkg syscall (freebsd-amd64), const SYS___ACL_DELETE_FILE ideal-int pkg syscall (freebsd-amd64), const SYS___ACL_DELETE_LINK ideal-int pkg syscall (freebsd-amd64), const SYS___ACL_GET_FD ideal-int pkg syscall (freebsd-amd64), const SYS___ACL_GET_FILE ideal-int pkg syscall (freebsd-amd64), const SYS___ACL_GET_LINK ideal-int pkg syscall (freebsd-amd64), const SYS___ACL_SET_FD ideal-int pkg syscall (freebsd-amd64), const SYS___ACL_SET_FILE ideal-int pkg syscall (freebsd-amd64), const SYS___ACL_SET_LINK ideal-int pkg syscall (freebsd-amd64), const SYS___GETCWD ideal-int pkg syscall (freebsd-amd64), const SYS___MAC_EXECVE ideal-int pkg syscall (freebsd-amd64), const SYS___MAC_GET_FD ideal-int pkg syscall (freebsd-amd64), const SYS___MAC_GET_FILE ideal-int pkg syscall (freebsd-amd64), const SYS___MAC_GET_LINK ideal-int pkg syscall (freebsd-amd64), const SYS___MAC_GET_PID ideal-int pkg syscall (freebsd-amd64), const SYS___MAC_GET_PROC ideal-int pkg syscall (freebsd-amd64), const SYS___MAC_SET_FD ideal-int pkg syscall (freebsd-amd64), const SYS___MAC_SET_FILE ideal-int pkg syscall (freebsd-amd64), const SYS___MAC_SET_LINK ideal-int pkg syscall (freebsd-amd64), const SYS___MAC_SET_PROC ideal-int pkg syscall (freebsd-amd64), const SYS___SETUGID ideal-int pkg syscall (freebsd-amd64), const SYS___SYSCTL ideal-int pkg syscall (freebsd-amd64), const SizeofBpfHdr ideal-int pkg syscall (freebsd-amd64), const SizeofBpfInsn ideal-int pkg syscall (freebsd-amd64), const SizeofBpfProgram ideal-int pkg syscall (freebsd-amd64), const SizeofBpfStat ideal-int pkg syscall (freebsd-amd64), const SizeofBpfVersion ideal-int pkg syscall (freebsd-amd64), const SizeofBpfZbuf ideal-int pkg syscall (freebsd-amd64), const SizeofBpfZbufHeader ideal-int pkg syscall (freebsd-amd64), const SizeofCmsghdr ideal-int pkg syscall (freebsd-amd64), const SizeofIPMreq ideal-int pkg syscall (freebsd-amd64), const SizeofIPMreqn ideal-int pkg syscall (freebsd-amd64), const SizeofIPv6Mreq ideal-int pkg syscall (freebsd-amd64), const SizeofIfData ideal-int pkg syscall (freebsd-amd64), const SizeofIfMsghdr ideal-int pkg syscall (freebsd-amd64), const SizeofIfaMsghdr ideal-int pkg syscall (freebsd-amd64), const SizeofIfmaMsghdr ideal-int pkg syscall (freebsd-amd64), const SizeofInet6Pktinfo ideal-int pkg syscall (freebsd-amd64), const SizeofLinger ideal-int pkg syscall (freebsd-amd64), const SizeofMsghdr ideal-int pkg syscall (freebsd-amd64), const SizeofRtMetrics ideal-int pkg syscall (freebsd-amd64), const SizeofRtMsghdr ideal-int pkg syscall (freebsd-amd64), const SizeofSockaddrAny ideal-int pkg syscall (freebsd-amd64), const SizeofSockaddrDatalink ideal-int pkg syscall (freebsd-amd64), const SizeofSockaddrInet4 ideal-int pkg syscall (freebsd-amd64), const SizeofSockaddrInet6 ideal-int pkg syscall (freebsd-amd64), const SizeofSockaddrUnix ideal-int pkg syscall (freebsd-amd64), const TCP_CA_NAME_MAX ideal-int pkg syscall (freebsd-amd64), const TCP_CONGESTION ideal-int pkg syscall (freebsd-amd64), const TCP_INFO ideal-int pkg syscall (freebsd-amd64), const TCP_MAXBURST ideal-int pkg syscall (freebsd-amd64), const TCP_MAXHLEN ideal-int pkg syscall (freebsd-amd64), const TCP_MAXOLEN ideal-int pkg syscall (freebsd-amd64), const TCP_MAXSEG ideal-int pkg syscall (freebsd-amd64), const TCP_MAXWIN ideal-int pkg syscall (freebsd-amd64), const TCP_MAX_SACK ideal-int pkg syscall (freebsd-amd64), const TCP_MAX_WINSHIFT ideal-int pkg syscall (freebsd-amd64), const TCP_MD5SIG ideal-int pkg syscall (freebsd-amd64), const TCP_MINMSS ideal-int pkg syscall (freebsd-amd64), const TCP_MSS ideal-int pkg syscall (freebsd-amd64), const TCP_NOOPT ideal-int pkg syscall (freebsd-amd64), const TCP_NOPUSH ideal-int pkg syscall (freebsd-amd64), const TIOCCBRK ideal-int pkg syscall (freebsd-amd64), const TIOCCDTR ideal-int pkg syscall (freebsd-amd64), const TIOCCONS ideal-int pkg syscall (freebsd-amd64), const TIOCDRAIN ideal-int pkg syscall (freebsd-amd64), const TIOCEXCL ideal-int pkg syscall (freebsd-amd64), const TIOCEXT ideal-int pkg syscall (freebsd-amd64), const TIOCFLUSH ideal-int pkg syscall (freebsd-amd64), const TIOCGDRAINWAIT ideal-int pkg syscall (freebsd-amd64), const TIOCGETA ideal-int pkg syscall (freebsd-amd64), const TIOCGETD ideal-int pkg syscall (freebsd-amd64), const TIOCGPGRP ideal-int pkg syscall (freebsd-amd64), const TIOCGPTN ideal-int pkg syscall (freebsd-amd64), const TIOCGSID ideal-int pkg syscall (freebsd-amd64), const TIOCGWINSZ ideal-int pkg syscall (freebsd-amd64), const TIOCMBIC ideal-int pkg syscall (freebsd-amd64), const TIOCMBIS ideal-int pkg syscall (freebsd-amd64), const TIOCMGDTRWAIT ideal-int pkg syscall (freebsd-amd64), const TIOCMGET ideal-int pkg syscall (freebsd-amd64), const TIOCMSDTRWAIT ideal-int pkg syscall (freebsd-amd64), const TIOCMSET ideal-int pkg syscall (freebsd-amd64), const TIOCM_CAR ideal-int pkg syscall (freebsd-amd64), const TIOCM_CD ideal-int pkg syscall (freebsd-amd64), const TIOCM_CTS ideal-int pkg syscall (freebsd-amd64), const TIOCM_DCD ideal-int pkg syscall (freebsd-amd64), const TIOCM_DSR ideal-int pkg syscall (freebsd-amd64), const TIOCM_DTR ideal-int pkg syscall (freebsd-amd64), const TIOCM_LE ideal-int pkg syscall (freebsd-amd64), const TIOCM_RI ideal-int pkg syscall (freebsd-amd64), const TIOCM_RNG ideal-int pkg syscall (freebsd-amd64), const TIOCM_RTS ideal-int pkg syscall (freebsd-amd64), const TIOCM_SR ideal-int pkg syscall (freebsd-amd64), const TIOCM_ST ideal-int pkg syscall (freebsd-amd64), const TIOCNOTTY ideal-int pkg syscall (freebsd-amd64), const TIOCNXCL ideal-int pkg syscall (freebsd-amd64), const TIOCOUTQ ideal-int pkg syscall (freebsd-amd64), const TIOCPKT ideal-int pkg syscall (freebsd-amd64), const TIOCPKT_DATA ideal-int pkg syscall (freebsd-amd64), const TIOCPKT_DOSTOP ideal-int pkg syscall (freebsd-amd64), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (freebsd-amd64), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (freebsd-amd64), const TIOCPKT_IOCTL ideal-int pkg syscall (freebsd-amd64), const TIOCPKT_NOSTOP ideal-int pkg syscall (freebsd-amd64), const TIOCPKT_START ideal-int pkg syscall (freebsd-amd64), const TIOCPKT_STOP ideal-int pkg syscall (freebsd-amd64), const TIOCPTMASTER ideal-int pkg syscall (freebsd-amd64), const TIOCSBRK ideal-int pkg syscall (freebsd-amd64), const TIOCSCTTY ideal-int pkg syscall (freebsd-amd64), const TIOCSDRAINWAIT ideal-int pkg syscall (freebsd-amd64), const TIOCSDTR ideal-int pkg syscall (freebsd-amd64), const TIOCSETA ideal-int pkg syscall (freebsd-amd64), const TIOCSETAF ideal-int pkg syscall (freebsd-amd64), const TIOCSETAW ideal-int pkg syscall (freebsd-amd64), const TIOCSETD ideal-int pkg syscall (freebsd-amd64), const TIOCSIG ideal-int pkg syscall (freebsd-amd64), const TIOCSPGRP ideal-int pkg syscall (freebsd-amd64), const TIOCSTART ideal-int pkg syscall (freebsd-amd64), const TIOCSTAT ideal-int pkg syscall (freebsd-amd64), const TIOCSTI ideal-int pkg syscall (freebsd-amd64), const TIOCSTOP ideal-int pkg syscall (freebsd-amd64), const TIOCSWINSZ ideal-int pkg syscall (freebsd-amd64), const TIOCTIMESTAMP ideal-int pkg syscall (freebsd-amd64), const TIOCUCNTL ideal-int pkg syscall (freebsd-amd64), const WCONTINUED ideal-int pkg syscall (freebsd-amd64), const WCOREFLAG ideal-int pkg syscall (freebsd-amd64), const WLINUXCLONE ideal-int pkg syscall (freebsd-amd64), const WNOHANG ideal-int pkg syscall (freebsd-amd64), const WNOWAIT ideal-int pkg syscall (freebsd-amd64), const WSTOPPED ideal-int pkg syscall (freebsd-amd64), const WUNTRACED ideal-int pkg syscall (freebsd-amd64), func Accept(int) (int, Sockaddr, error) pkg syscall (freebsd-amd64), func Access(string, uint32) error pkg syscall (freebsd-amd64), func Adjtime(*Timeval, *Timeval) error pkg syscall (freebsd-amd64), func Bind(int, Sockaddr) error pkg syscall (freebsd-amd64), func BpfBuflen(int) (int, error) pkg syscall (freebsd-amd64), func BpfDatalink(int) (int, error) pkg syscall (freebsd-amd64), func BpfHeadercmpl(int) (int, error) pkg syscall (freebsd-amd64), func BpfInterface(int, string) (string, error) pkg syscall (freebsd-amd64), func BpfJump(int, int, int, int) *BpfInsn pkg syscall (freebsd-amd64), func BpfStats(int) (*BpfStat, error) pkg syscall (freebsd-amd64), func BpfStmt(int, int) *BpfInsn pkg syscall (freebsd-amd64), func BpfTimeout(int) (*Timeval, error) pkg syscall (freebsd-amd64), func CheckBpfVersion(int) error pkg syscall (freebsd-amd64), func Chflags(string, int) error pkg syscall (freebsd-amd64), func Chroot(string) error pkg syscall (freebsd-amd64), func Close(int) error pkg syscall (freebsd-amd64), func CloseOnExec(int) pkg syscall (freebsd-amd64), func CmsgLen(int) int pkg syscall (freebsd-amd64), func CmsgSpace(int) int pkg syscall (freebsd-amd64), func Connect(int, Sockaddr) error pkg syscall (freebsd-amd64), func Dup(int) (int, error) pkg syscall (freebsd-amd64), func Dup2(int, int) error pkg syscall (freebsd-amd64), func Fchdir(int) error pkg syscall (freebsd-amd64), func Fchflags(string, int) error pkg syscall (freebsd-amd64), func Fchmod(int, uint32) error pkg syscall (freebsd-amd64), func Fchown(int, int, int) error pkg syscall (freebsd-amd64), func Flock(int, int) error pkg syscall (freebsd-amd64), func FlushBpf(int) error pkg syscall (freebsd-amd64), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (freebsd-amd64), func Fpathconf(int, int) (int, error) pkg syscall (freebsd-amd64), func Fstat(int, *Stat_t) error pkg syscall (freebsd-amd64), func Fstatfs(int, *Statfs_t) error pkg syscall (freebsd-amd64), func Fsync(int) error pkg syscall (freebsd-amd64), func Ftruncate(int, int64) error pkg syscall (freebsd-amd64), func Futimes(int, []Timeval) error pkg syscall (freebsd-amd64), func Getdirentries(int, []uint8, *uintptr) (int, error) pkg syscall (freebsd-amd64), func Getdtablesize() int pkg syscall (freebsd-amd64), func Getfsstat([]Statfs_t, int) (int, error) pkg syscall (freebsd-amd64), func Getpeername(int) (Sockaddr, error) pkg syscall (freebsd-amd64), func Getpgid(int) (int, error) pkg syscall (freebsd-amd64), func Getpgrp() int pkg syscall (freebsd-amd64), func Getpriority(int, int) (int, error) pkg syscall (freebsd-amd64), func Getrlimit(int, *Rlimit) error pkg syscall (freebsd-amd64), func Getrusage(int, *Rusage) error pkg syscall (freebsd-amd64), func Getsid(int) (int, error) pkg syscall (freebsd-amd64), func Getsockname(int) (Sockaddr, error) pkg syscall (freebsd-amd64), func GetsockoptByte(int, int, int) (uint8, error) pkg syscall (freebsd-amd64), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (freebsd-amd64), func GetsockoptIPMreqn(int, int, int) (*IPMreqn, error) pkg syscall (freebsd-amd64), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (freebsd-amd64), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (freebsd-amd64), func GetsockoptInt(int, int, int) (int, error) pkg syscall (freebsd-amd64), func Issetugid() bool pkg syscall (freebsd-amd64), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) pkg syscall (freebsd-amd64), func Kill(int, Signal) error pkg syscall (freebsd-amd64), func Kqueue() (int, error) pkg syscall (freebsd-amd64), func Listen(int, int) error pkg syscall (freebsd-amd64), func Lstat(string, *Stat_t) error pkg syscall (freebsd-amd64), func Mkfifo(string, uint32) error pkg syscall (freebsd-amd64), func Mknod(string, uint32, int) error pkg syscall (freebsd-amd64), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (freebsd-amd64), func Munmap([]uint8) error pkg syscall (freebsd-amd64), func Nanosleep(*Timespec, *Timespec) error pkg syscall (freebsd-amd64), func NsecToTimespec(int64) Timespec pkg syscall (freebsd-amd64), func Open(string, int, uint32) (int, error) pkg syscall (freebsd-amd64), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (freebsd-amd64), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) pkg syscall (freebsd-amd64), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) pkg syscall (freebsd-amd64), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (freebsd-amd64), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (freebsd-amd64), func Pathconf(string, int) (int, error) pkg syscall (freebsd-amd64), func Pipe([]int) error pkg syscall (freebsd-amd64), func Pread(int, []uint8, int64) (int, error) pkg syscall (freebsd-amd64), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (freebsd-amd64), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-amd64), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-amd64), func Read(int, []uint8) (int, error) pkg syscall (freebsd-amd64), func ReadDirent(int, []uint8) (int, error) pkg syscall (freebsd-amd64), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (freebsd-amd64), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (freebsd-amd64), func Revoke(string) error pkg syscall (freebsd-amd64), func RouteRIB(int, int) ([]uint8, error) pkg syscall (freebsd-amd64), func Seek(int, int64, int) (int64, error) pkg syscall (freebsd-amd64), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error pkg syscall (freebsd-amd64), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (freebsd-amd64), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (freebsd-amd64), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (freebsd-amd64), func SetBpf(int, []BpfInsn) error pkg syscall (freebsd-amd64), func SetBpfBuflen(int, int) (int, error) pkg syscall (freebsd-amd64), func SetBpfDatalink(int, int) (int, error) pkg syscall (freebsd-amd64), func SetBpfHeadercmpl(int, int) error pkg syscall (freebsd-amd64), func SetBpfImmediate(int, int) error pkg syscall (freebsd-amd64), func SetBpfInterface(int, string) error pkg syscall (freebsd-amd64), func SetBpfPromisc(int, int) error pkg syscall (freebsd-amd64), func SetBpfTimeout(int, *Timeval) error pkg syscall (freebsd-amd64), func SetKevent(*Kevent_t, int, int, int) pkg syscall (freebsd-amd64), func SetNonblock(int, bool) error pkg syscall (freebsd-amd64), func Setegid(int) error pkg syscall (freebsd-amd64), func Seteuid(int) error pkg syscall (freebsd-amd64), func Setgid(int) error pkg syscall (freebsd-amd64), func Setgroups([]int) error pkg syscall (freebsd-amd64), func Setlogin(string) error pkg syscall (freebsd-amd64), func Setpgid(int, int) error pkg syscall (freebsd-amd64), func Setpriority(int, int, int) error pkg syscall (freebsd-amd64), func Setregid(int, int) error pkg syscall (freebsd-amd64), func Setreuid(int, int) error pkg syscall (freebsd-amd64), func Setrlimit(int, *Rlimit) error pkg syscall (freebsd-amd64), func Setsid() (int, error) pkg syscall (freebsd-amd64), func SetsockoptByte(int, int, int, uint8) error pkg syscall (freebsd-amd64), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (freebsd-amd64), func SetsockoptIPMreqn(int, int, int, *IPMreqn) error pkg syscall (freebsd-amd64), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (freebsd-amd64), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (freebsd-amd64), func SetsockoptInt(int, int, int, int) error pkg syscall (freebsd-amd64), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (freebsd-amd64), func SetsockoptString(int, int, int, string) error pkg syscall (freebsd-amd64), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (freebsd-amd64), func Settimeofday(*Timeval) error pkg syscall (freebsd-amd64), func Setuid(int) error pkg syscall (freebsd-amd64), func Shutdown(int, int) error pkg syscall (freebsd-amd64), func Socket(int, int, int) (int, error) pkg syscall (freebsd-amd64), func Socketpair(int, int, int) ([2]int, error) pkg syscall (freebsd-amd64), func Stat(string, *Stat_t) error pkg syscall (freebsd-amd64), func Statfs(string, *Statfs_t) error pkg syscall (freebsd-amd64), func StringSlicePtr([]string) []*uint8 pkg syscall (freebsd-amd64), func Sync() error pkg syscall (freebsd-amd64), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-amd64), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (freebsd-amd64), func Sysctl(string) (string, error) pkg syscall (freebsd-amd64), func SysctlUint32(string) (uint32, error) pkg syscall (freebsd-amd64), func TimespecToNsec(Timespec) int64 pkg syscall (freebsd-amd64), func TimevalToNsec(Timeval) int64 pkg syscall (freebsd-amd64), func Truncate(string, int64) error pkg syscall (freebsd-amd64), func Umask(int) int pkg syscall (freebsd-amd64), func Undelete(string) error pkg syscall (freebsd-amd64), func UnixRights(...int) []uint8 pkg syscall (freebsd-amd64), func Unmount(string, int) error pkg syscall (freebsd-amd64), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (freebsd-amd64), func Write(int, []uint8) (int, error) pkg syscall (freebsd-amd64), method (*Cmsghdr) SetLen(int) pkg syscall (freebsd-amd64), method (*Iovec) SetLen(int) pkg syscall (freebsd-amd64), method (*Msghdr) SetControllen(int) pkg syscall (freebsd-amd64), type BpfHdr struct pkg syscall (freebsd-amd64), type BpfHdr struct, Caplen uint32 pkg syscall (freebsd-amd64), type BpfHdr struct, Datalen uint32 pkg syscall (freebsd-amd64), type BpfHdr struct, Hdrlen uint16 pkg syscall (freebsd-amd64), type BpfHdr struct, Pad_cgo_0 [6]uint8 pkg syscall (freebsd-amd64), type BpfHdr struct, Tstamp Timeval pkg syscall (freebsd-amd64), type BpfInsn struct pkg syscall (freebsd-amd64), type BpfInsn struct, Code uint16 pkg syscall (freebsd-amd64), type BpfInsn struct, Jf uint8 pkg syscall (freebsd-amd64), type BpfInsn struct, Jt uint8 pkg syscall (freebsd-amd64), type BpfInsn struct, K uint32 pkg syscall (freebsd-amd64), type BpfProgram struct pkg syscall (freebsd-amd64), type BpfProgram struct, Insns *BpfInsn pkg syscall (freebsd-amd64), type BpfProgram struct, Len uint32 pkg syscall (freebsd-amd64), type BpfProgram struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-amd64), type BpfStat struct pkg syscall (freebsd-amd64), type BpfStat struct, Drop uint32 pkg syscall (freebsd-amd64), type BpfStat struct, Recv uint32 pkg syscall (freebsd-amd64), type BpfVersion struct pkg syscall (freebsd-amd64), type BpfVersion struct, Major uint16 pkg syscall (freebsd-amd64), type BpfVersion struct, Minor uint16 pkg syscall (freebsd-amd64), type BpfZbuf struct pkg syscall (freebsd-amd64), type BpfZbuf struct, Bufa *uint8 pkg syscall (freebsd-amd64), type BpfZbuf struct, Bufb *uint8 pkg syscall (freebsd-amd64), type BpfZbuf struct, Buflen uint64 pkg syscall (freebsd-amd64), type BpfZbufHeader struct pkg syscall (freebsd-amd64), type BpfZbufHeader struct, Kernel_gen uint32 pkg syscall (freebsd-amd64), type BpfZbufHeader struct, Kernel_len uint32 pkg syscall (freebsd-amd64), type BpfZbufHeader struct, User_gen uint32 pkg syscall (freebsd-amd64), type BpfZbufHeader struct, X_bzh_pad [5]uint32 pkg syscall (freebsd-amd64), type Cmsghdr struct pkg syscall (freebsd-amd64), type Cmsghdr struct, Len uint32 pkg syscall (freebsd-amd64), type Cmsghdr struct, Level int32 pkg syscall (freebsd-amd64), type Cmsghdr struct, Type int32 pkg syscall (freebsd-amd64), type Credential struct pkg syscall (freebsd-amd64), type Credential struct, Gid uint32 pkg syscall (freebsd-amd64), type Credential struct, Groups []uint32 pkg syscall (freebsd-amd64), type Credential struct, Uid uint32 pkg syscall (freebsd-amd64), type Dirent struct pkg syscall (freebsd-amd64), type Dirent struct, Fileno uint32 pkg syscall (freebsd-amd64), type Dirent struct, Name [256]int8 pkg syscall (freebsd-amd64), type Dirent struct, Namlen uint8 pkg syscall (freebsd-amd64), type Dirent struct, Reclen uint16 pkg syscall (freebsd-amd64), type Dirent struct, Type uint8 pkg syscall (freebsd-amd64), type FdSet struct pkg syscall (freebsd-amd64), type FdSet struct, X__fds_bits [16]uint64 pkg syscall (freebsd-amd64), type Flock_t struct pkg syscall (freebsd-amd64), type Flock_t struct, Len int64 pkg syscall (freebsd-amd64), type Flock_t struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-amd64), type Flock_t struct, Pid int32 pkg syscall (freebsd-amd64), type Flock_t struct, Start int64 pkg syscall (freebsd-amd64), type Flock_t struct, Sysid int32 pkg syscall (freebsd-amd64), type Flock_t struct, Type int16 pkg syscall (freebsd-amd64), type Flock_t struct, Whence int16 pkg syscall (freebsd-amd64), type Fsid struct pkg syscall (freebsd-amd64), type Fsid struct, Val [2]int32 pkg syscall (freebsd-amd64), type IPMreqn struct pkg syscall (freebsd-amd64), type IPMreqn struct, Address [4]uint8 pkg syscall (freebsd-amd64), type IPMreqn struct, Ifindex int32 pkg syscall (freebsd-amd64), type IPMreqn struct, Multiaddr [4]uint8 pkg syscall (freebsd-amd64), type IfData struct pkg syscall (freebsd-amd64), type IfData struct, Addrlen uint8 pkg syscall (freebsd-amd64), type IfData struct, Baudrate uint64 pkg syscall (freebsd-amd64), type IfData struct, Collisions uint64 pkg syscall (freebsd-amd64), type IfData struct, Datalen uint8 pkg syscall (freebsd-amd64), type IfData struct, Epoch int64 pkg syscall (freebsd-amd64), type IfData struct, Hdrlen uint8 pkg syscall (freebsd-amd64), type IfData struct, Hwassist uint64 pkg syscall (freebsd-amd64), type IfData struct, Ibytes uint64 pkg syscall (freebsd-amd64), type IfData struct, Ierrors uint64 pkg syscall (freebsd-amd64), type IfData struct, Imcasts uint64 pkg syscall (freebsd-amd64), type IfData struct, Ipackets uint64 pkg syscall (freebsd-amd64), type IfData struct, Iqdrops uint64 pkg syscall (freebsd-amd64), type IfData struct, Lastchange Timeval pkg syscall (freebsd-amd64), type IfData struct, Link_state uint8 pkg syscall (freebsd-amd64), type IfData struct, Metric uint64 pkg syscall (freebsd-amd64), type IfData struct, Mtu uint64 pkg syscall (freebsd-amd64), type IfData struct, Noproto uint64 pkg syscall (freebsd-amd64), type IfData struct, Obytes uint64 pkg syscall (freebsd-amd64), type IfData struct, Oerrors uint64 pkg syscall (freebsd-amd64), type IfData struct, Omcasts uint64 pkg syscall (freebsd-amd64), type IfData struct, Opackets uint64 pkg syscall (freebsd-amd64), type IfData struct, Physical uint8 pkg syscall (freebsd-amd64), type IfData struct, Spare_char1 uint8 pkg syscall (freebsd-amd64), type IfData struct, Spare_char2 uint8 pkg syscall (freebsd-amd64), type IfData struct, Type uint8 pkg syscall (freebsd-amd64), type IfMsghdr struct pkg syscall (freebsd-amd64), type IfMsghdr struct, Addrs int32 pkg syscall (freebsd-amd64), type IfMsghdr struct, Data IfData pkg syscall (freebsd-amd64), type IfMsghdr struct, Flags int32 pkg syscall (freebsd-amd64), type IfMsghdr struct, Index uint16 pkg syscall (freebsd-amd64), type IfMsghdr struct, Msglen uint16 pkg syscall (freebsd-amd64), type IfMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-amd64), type IfMsghdr struct, Type uint8 pkg syscall (freebsd-amd64), type IfMsghdr struct, Version uint8 pkg syscall (freebsd-amd64), type IfaMsghdr struct pkg syscall (freebsd-amd64), type IfaMsghdr struct, Addrs int32 pkg syscall (freebsd-amd64), type IfaMsghdr struct, Flags int32 pkg syscall (freebsd-amd64), type IfaMsghdr struct, Index uint16 pkg syscall (freebsd-amd64), type IfaMsghdr struct, Metric int32 pkg syscall (freebsd-amd64), type IfaMsghdr struct, Msglen uint16 pkg syscall (freebsd-amd64), type IfaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-amd64), type IfaMsghdr struct, Type uint8 pkg syscall (freebsd-amd64), type IfaMsghdr struct, Version uint8 pkg syscall (freebsd-amd64), type IfmaMsghdr struct pkg syscall (freebsd-amd64), type IfmaMsghdr struct, Addrs int32 pkg syscall (freebsd-amd64), type IfmaMsghdr struct, Flags int32 pkg syscall (freebsd-amd64), type IfmaMsghdr struct, Index uint16 pkg syscall (freebsd-amd64), type IfmaMsghdr struct, Msglen uint16 pkg syscall (freebsd-amd64), type IfmaMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-amd64), type IfmaMsghdr struct, Type uint8 pkg syscall (freebsd-amd64), type IfmaMsghdr struct, Version uint8 pkg syscall (freebsd-amd64), type Inet6Pktinfo struct pkg syscall (freebsd-amd64), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (freebsd-amd64), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (freebsd-amd64), type InterfaceAddrMessage struct pkg syscall (freebsd-amd64), type InterfaceAddrMessage struct, Data []uint8 pkg syscall (freebsd-amd64), type InterfaceAddrMessage struct, Header IfaMsghdr pkg syscall (freebsd-amd64), type InterfaceMessage struct pkg syscall (freebsd-amd64), type InterfaceMessage struct, Data []uint8 pkg syscall (freebsd-amd64), type InterfaceMessage struct, Header IfMsghdr pkg syscall (freebsd-amd64), type InterfaceMulticastAddrMessage struct pkg syscall (freebsd-amd64), type InterfaceMulticastAddrMessage struct, Data []uint8 pkg syscall (freebsd-amd64), type InterfaceMulticastAddrMessage struct, Header IfmaMsghdr pkg syscall (freebsd-amd64), type Iovec struct pkg syscall (freebsd-amd64), type Iovec struct, Base *uint8 pkg syscall (freebsd-amd64), type Iovec struct, Len uint64 pkg syscall (freebsd-amd64), type Kevent_t struct pkg syscall (freebsd-amd64), type Kevent_t struct, Data int64 pkg syscall (freebsd-amd64), type Kevent_t struct, Fflags uint32 pkg syscall (freebsd-amd64), type Kevent_t struct, Filter int16 pkg syscall (freebsd-amd64), type Kevent_t struct, Flags uint16 pkg syscall (freebsd-amd64), type Kevent_t struct, Ident uint64 pkg syscall (freebsd-amd64), type Kevent_t struct, Udata *uint8 pkg syscall (freebsd-amd64), type Msghdr struct pkg syscall (freebsd-amd64), type Msghdr struct, Control *uint8 pkg syscall (freebsd-amd64), type Msghdr struct, Controllen uint32 pkg syscall (freebsd-amd64), type Msghdr struct, Flags int32 pkg syscall (freebsd-amd64), type Msghdr struct, Iov *Iovec pkg syscall (freebsd-amd64), type Msghdr struct, Iovlen int32 pkg syscall (freebsd-amd64), type Msghdr struct, Name *uint8 pkg syscall (freebsd-amd64), type Msghdr struct, Namelen uint32 pkg syscall (freebsd-amd64), type Msghdr struct, Pad_cgo_0 [4]uint8 pkg syscall (freebsd-amd64), type Msghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (freebsd-amd64), type RawSockaddr struct, Data [14]int8 pkg syscall (freebsd-amd64), type RawSockaddr struct, Family uint8 pkg syscall (freebsd-amd64), type RawSockaddr struct, Len uint8 pkg syscall (freebsd-amd64), type RawSockaddrAny struct, Pad [92]int8 pkg syscall (freebsd-amd64), type RawSockaddrDatalink struct pkg syscall (freebsd-amd64), type RawSockaddrDatalink struct, Alen uint8 pkg syscall (freebsd-amd64), type RawSockaddrDatalink struct, Data [46]int8 pkg syscall (freebsd-amd64), type RawSockaddrDatalink struct, Family uint8 pkg syscall (freebsd-amd64), type RawSockaddrDatalink struct, Index uint16 pkg syscall (freebsd-amd64), type RawSockaddrDatalink struct, Len uint8 pkg syscall (freebsd-amd64), type RawSockaddrDatalink struct, Nlen uint8 pkg syscall (freebsd-amd64), type RawSockaddrDatalink struct, Slen uint8 pkg syscall (freebsd-amd64), type RawSockaddrDatalink struct, Type uint8 pkg syscall (freebsd-amd64), type RawSockaddrInet4 struct, Family uint8 pkg syscall (freebsd-amd64), type RawSockaddrInet4 struct, Len uint8 pkg syscall (freebsd-amd64), type RawSockaddrInet4 struct, Zero [8]int8 pkg syscall (freebsd-amd64), type RawSockaddrInet6 struct pkg syscall (freebsd-amd64), type RawSockaddrInet6 struct, Addr [16]uint8 pkg syscall (freebsd-amd64), type RawSockaddrInet6 struct, Family uint8 pkg syscall (freebsd-amd64), type RawSockaddrInet6 struct, Flowinfo uint32 pkg syscall (freebsd-amd64), type RawSockaddrInet6 struct, Len uint8 pkg syscall (freebsd-amd64), type RawSockaddrInet6 struct, Port uint16 pkg syscall (freebsd-amd64), type RawSockaddrInet6 struct, Scope_id uint32 pkg syscall (freebsd-amd64), type RawSockaddrUnix struct pkg syscall (freebsd-amd64), type RawSockaddrUnix struct, Family uint8 pkg syscall (freebsd-amd64), type RawSockaddrUnix struct, Len uint8 pkg syscall (freebsd-amd64), type RawSockaddrUnix struct, Path [104]int8 pkg syscall (freebsd-amd64), type Rlimit struct pkg syscall (freebsd-amd64), type Rlimit struct, Cur int64 pkg syscall (freebsd-amd64), type Rlimit struct, Max int64 pkg syscall (freebsd-amd64), type RouteMessage struct pkg syscall (freebsd-amd64), type RouteMessage struct, Data []uint8 pkg syscall (freebsd-amd64), type RouteMessage struct, Header RtMsghdr pkg syscall (freebsd-amd64), type RoutingMessage interface, unexported methods pkg syscall (freebsd-amd64), type RtMetrics struct pkg syscall (freebsd-amd64), type RtMetrics struct, Expire uint64 pkg syscall (freebsd-amd64), type RtMetrics struct, Filler [3]uint64 pkg syscall (freebsd-amd64), type RtMetrics struct, Hopcount uint64 pkg syscall (freebsd-amd64), type RtMetrics struct, Locks uint64 pkg syscall (freebsd-amd64), type RtMetrics struct, Mtu uint64 pkg syscall (freebsd-amd64), type RtMetrics struct, Pksent uint64 pkg syscall (freebsd-amd64), type RtMetrics struct, Recvpipe uint64 pkg syscall (freebsd-amd64), type RtMetrics struct, Rtt uint64 pkg syscall (freebsd-amd64), type RtMetrics struct, Rttvar uint64 pkg syscall (freebsd-amd64), type RtMetrics struct, Sendpipe uint64 pkg syscall (freebsd-amd64), type RtMetrics struct, Ssthresh uint64 pkg syscall (freebsd-amd64), type RtMetrics struct, Weight uint64 pkg syscall (freebsd-amd64), type RtMsghdr struct pkg syscall (freebsd-amd64), type RtMsghdr struct, Addrs int32 pkg syscall (freebsd-amd64), type RtMsghdr struct, Errno int32 pkg syscall (freebsd-amd64), type RtMsghdr struct, Flags int32 pkg syscall (freebsd-amd64), type RtMsghdr struct, Fmask int32 pkg syscall (freebsd-amd64), type RtMsghdr struct, Index uint16 pkg syscall (freebsd-amd64), type RtMsghdr struct, Inits uint64 pkg syscall (freebsd-amd64), type RtMsghdr struct, Msglen uint16 pkg syscall (freebsd-amd64), type RtMsghdr struct, Pad_cgo_0 [2]uint8 pkg syscall (freebsd-amd64), type RtMsghdr struct, Pid int32 pkg syscall (freebsd-amd64), type RtMsghdr struct, Rmx RtMetrics pkg syscall (freebsd-amd64), type RtMsghdr struct, Seq int32 pkg syscall (freebsd-amd64), type RtMsghdr struct, Type uint8 pkg syscall (freebsd-amd64), type RtMsghdr struct, Version uint8 pkg syscall (freebsd-amd64), type Rusage struct, Idrss int64 pkg syscall (freebsd-amd64), type Rusage struct, Inblock int64 pkg syscall (freebsd-amd64), type Rusage struct, Isrss int64 pkg syscall (freebsd-amd64), type Rusage struct, Ixrss int64 pkg syscall (freebsd-amd64), type Rusage struct, Majflt int64 pkg syscall (freebsd-amd64), type Rusage struct, Maxrss int64 pkg syscall (freebsd-amd64), type Rusage struct, Minflt int64 pkg syscall (freebsd-amd64), type Rusage struct, Msgrcv int64 pkg syscall (freebsd-amd64), type Rusage struct, Msgsnd int64 pkg syscall (freebsd-amd64), type Rusage struct, Nivcsw int64 pkg syscall (freebsd-amd64), type Rusage struct, Nsignals int64 pkg syscall (freebsd-amd64), type Rusage struct, Nswap int64 pkg syscall (freebsd-amd64), type Rusage struct, Nvcsw int64 pkg syscall (freebsd-amd64), type Rusage struct, Oublock int64 pkg syscall (freebsd-amd64), type Rusage struct, Stime Timeval pkg syscall (freebsd-amd64), type Rusage struct, Utime Timeval pkg syscall (freebsd-amd64), type SockaddrDatalink struct pkg syscall (freebsd-amd64), type SockaddrDatalink struct, Alen uint8 pkg syscall (freebsd-amd64), type SockaddrDatalink struct, Data [46]int8 pkg syscall (freebsd-amd64), type SockaddrDatalink struct, Family uint8 pkg syscall (freebsd-amd64), type SockaddrDatalink struct, Index uint16 pkg syscall (freebsd-amd64), type SockaddrDatalink struct, Len uint8 pkg syscall (freebsd-amd64), type SockaddrDatalink struct, Nlen uint8 pkg syscall (freebsd-amd64), type SockaddrDatalink struct, Slen uint8 pkg syscall (freebsd-amd64), type SockaddrDatalink struct, Type uint8 pkg syscall (freebsd-amd64), type SocketControlMessage struct pkg syscall (freebsd-amd64), type SocketControlMessage struct, Data []uint8 pkg syscall (freebsd-amd64), type SocketControlMessage struct, Header Cmsghdr pkg syscall (freebsd-amd64), type Stat_t struct pkg syscall (freebsd-amd64), type Stat_t struct, Atimespec Timespec pkg syscall (freebsd-amd64), type Stat_t struct, Birthtimespec Timespec pkg syscall (freebsd-amd64), type Stat_t struct, Blksize uint32 pkg syscall (freebsd-amd64), type Stat_t struct, Blocks int64 pkg syscall (freebsd-amd64), type Stat_t struct, Ctimespec Timespec pkg syscall (freebsd-amd64), type Stat_t struct, Dev uint32 pkg syscall (freebsd-amd64), type Stat_t struct, Flags uint32 pkg syscall (freebsd-amd64), type Stat_t struct, Gen uint32 pkg syscall (freebsd-amd64), type Stat_t struct, Gid uint32 pkg syscall (freebsd-amd64), type Stat_t struct, Ino uint32 pkg syscall (freebsd-amd64), type Stat_t struct, Lspare int32 pkg syscall (freebsd-amd64), type Stat_t struct, Mode uint16 pkg syscall (freebsd-amd64), type Stat_t struct, Mtimespec Timespec pkg syscall (freebsd-amd64), type Stat_t struct, Nlink uint16 pkg syscall (freebsd-amd64), type Stat_t struct, Rdev uint32 pkg syscall (freebsd-amd64), type Stat_t struct, Size int64 pkg syscall (freebsd-amd64), type Stat_t struct, Uid uint32 pkg syscall (freebsd-amd64), type Statfs_t struct pkg syscall (freebsd-amd64), type Statfs_t struct, Asyncreads uint64 pkg syscall (freebsd-amd64), type Statfs_t struct, Asyncwrites uint64 pkg syscall (freebsd-amd64), type Statfs_t struct, Bavail int64 pkg syscall (freebsd-amd64), type Statfs_t struct, Bfree uint64 pkg syscall (freebsd-amd64), type Statfs_t struct, Blocks uint64 pkg syscall (freebsd-amd64), type Statfs_t struct, Bsize uint64 pkg syscall (freebsd-amd64), type Statfs_t struct, Charspare [80]int8 pkg syscall (freebsd-amd64), type Statfs_t struct, Ffree int64 pkg syscall (freebsd-amd64), type Statfs_t struct, Files uint64 pkg syscall (freebsd-amd64), type Statfs_t struct, Flags uint64 pkg syscall (freebsd-amd64), type Statfs_t struct, Fsid Fsid pkg syscall (freebsd-amd64), type Statfs_t struct, Fstypename [16]int8 pkg syscall (freebsd-amd64), type Statfs_t struct, Iosize uint64 pkg syscall (freebsd-amd64), type Statfs_t struct, Mntfromname [88]int8 pkg syscall (freebsd-amd64), type Statfs_t struct, Mntonname [88]int8 pkg syscall (freebsd-amd64), type Statfs_t struct, Namemax uint32 pkg syscall (freebsd-amd64), type Statfs_t struct, Owner uint32 pkg syscall (freebsd-amd64), type Statfs_t struct, Spare [10]uint64 pkg syscall (freebsd-amd64), type Statfs_t struct, Syncreads uint64 pkg syscall (freebsd-amd64), type Statfs_t struct, Syncwrites uint64 pkg syscall (freebsd-amd64), type Statfs_t struct, Type uint32 pkg syscall (freebsd-amd64), type Statfs_t struct, Version uint32 pkg syscall (freebsd-amd64), type SysProcAttr struct, Chroot string pkg syscall (freebsd-amd64), type SysProcAttr struct, Credential *Credential pkg syscall (freebsd-amd64), type SysProcAttr struct, Noctty bool pkg syscall (freebsd-amd64), type SysProcAttr struct, Ptrace bool pkg syscall (freebsd-amd64), type SysProcAttr struct, Setctty bool pkg syscall (freebsd-amd64), type SysProcAttr struct, Setpgid bool pkg syscall (freebsd-amd64), type SysProcAttr struct, Setsid bool pkg syscall (freebsd-amd64), type Timespec struct, Nsec int64 pkg syscall (freebsd-amd64), type Timespec struct, Sec int64 pkg syscall (freebsd-amd64), type Timeval struct, Sec int64 pkg syscall (freebsd-amd64), type Timeval struct, Usec int64 pkg syscall (freebsd-amd64), type WaitStatus uint32 pkg syscall (freebsd-amd64), var Stderr int pkg syscall (freebsd-amd64), var Stdin int pkg syscall (freebsd-amd64), var Stdout int pkg syscall (linux-386), const AF_ALG ideal-int pkg syscall (linux-386), const AF_APPLETALK ideal-int pkg syscall (linux-386), const AF_ASH ideal-int pkg syscall (linux-386), const AF_ATMPVC ideal-int pkg syscall (linux-386), const AF_ATMSVC ideal-int pkg syscall (linux-386), const AF_AX25 ideal-int pkg syscall (linux-386), const AF_BLUETOOTH ideal-int pkg syscall (linux-386), const AF_BRIDGE ideal-int pkg syscall (linux-386), const AF_CAIF ideal-int pkg syscall (linux-386), const AF_CAN ideal-int pkg syscall (linux-386), const AF_DECnet ideal-int pkg syscall (linux-386), const AF_ECONET ideal-int pkg syscall (linux-386), const AF_FILE ideal-int pkg syscall (linux-386), const AF_IEEE802154 ideal-int pkg syscall (linux-386), const AF_IPX ideal-int pkg syscall (linux-386), const AF_IRDA ideal-int pkg syscall (linux-386), const AF_ISDN ideal-int pkg syscall (linux-386), const AF_IUCV ideal-int pkg syscall (linux-386), const AF_KEY ideal-int pkg syscall (linux-386), const AF_LLC ideal-int pkg syscall (linux-386), const AF_LOCAL ideal-int pkg syscall (linux-386), const AF_MAX ideal-int pkg syscall (linux-386), const AF_NETBEUI ideal-int pkg syscall (linux-386), const AF_NETLINK ideal-int pkg syscall (linux-386), const AF_NETROM ideal-int pkg syscall (linux-386), const AF_PACKET ideal-int pkg syscall (linux-386), const AF_PHONET ideal-int pkg syscall (linux-386), const AF_PPPOX ideal-int pkg syscall (linux-386), const AF_RDS ideal-int pkg syscall (linux-386), const AF_ROSE ideal-int pkg syscall (linux-386), const AF_ROUTE ideal-int pkg syscall (linux-386), const AF_RXRPC ideal-int pkg syscall (linux-386), const AF_SECURITY ideal-int pkg syscall (linux-386), const AF_SNA ideal-int pkg syscall (linux-386), const AF_TIPC ideal-int pkg syscall (linux-386), const AF_WANPIPE ideal-int pkg syscall (linux-386), const AF_X25 ideal-int pkg syscall (linux-386), const ARPHRD_ADAPT ideal-int pkg syscall (linux-386), const ARPHRD_APPLETLK ideal-int pkg syscall (linux-386), const ARPHRD_ARCNET ideal-int pkg syscall (linux-386), const ARPHRD_ASH ideal-int pkg syscall (linux-386), const ARPHRD_ATM ideal-int pkg syscall (linux-386), const ARPHRD_AX25 ideal-int pkg syscall (linux-386), const ARPHRD_BIF ideal-int pkg syscall (linux-386), const ARPHRD_CHAOS ideal-int pkg syscall (linux-386), const ARPHRD_CISCO ideal-int pkg syscall (linux-386), const ARPHRD_CSLIP ideal-int pkg syscall (linux-386), const ARPHRD_CSLIP6 ideal-int pkg syscall (linux-386), const ARPHRD_DDCMP ideal-int pkg syscall (linux-386), const ARPHRD_DLCI ideal-int pkg syscall (linux-386), const ARPHRD_ECONET ideal-int pkg syscall (linux-386), const ARPHRD_EETHER ideal-int pkg syscall (linux-386), const ARPHRD_ETHER ideal-int pkg syscall (linux-386), const ARPHRD_EUI64 ideal-int pkg syscall (linux-386), const ARPHRD_FCAL ideal-int pkg syscall (linux-386), const ARPHRD_FCFABRIC ideal-int pkg syscall (linux-386), const ARPHRD_FCPL ideal-int pkg syscall (linux-386), const ARPHRD_FCPP ideal-int pkg syscall (linux-386), const ARPHRD_FDDI ideal-int pkg syscall (linux-386), const ARPHRD_FRAD ideal-int pkg syscall (linux-386), const ARPHRD_HDLC ideal-int pkg syscall (linux-386), const ARPHRD_HIPPI ideal-int pkg syscall (linux-386), const ARPHRD_HWX25 ideal-int pkg syscall (linux-386), const ARPHRD_IEEE1394 ideal-int pkg syscall (linux-386), const ARPHRD_IEEE802 ideal-int pkg syscall (linux-386), const ARPHRD_IEEE80211 ideal-int pkg syscall (linux-386), const ARPHRD_IEEE80211_PRISM ideal-int pkg syscall (linux-386), const ARPHRD_IEEE80211_RADIOTAP ideal-int pkg syscall (linux-386), const ARPHRD_IEEE802154 ideal-int pkg syscall (linux-386), const ARPHRD_IEEE802154_PHY ideal-int pkg syscall (linux-386), const ARPHRD_IEEE802_TR ideal-int pkg syscall (linux-386), const ARPHRD_INFINIBAND ideal-int pkg syscall (linux-386), const ARPHRD_IPDDP ideal-int pkg syscall (linux-386), const ARPHRD_IPGRE ideal-int pkg syscall (linux-386), const ARPHRD_IRDA ideal-int pkg syscall (linux-386), const ARPHRD_LAPB ideal-int pkg syscall (linux-386), const ARPHRD_LOCALTLK ideal-int pkg syscall (linux-386), const ARPHRD_LOOPBACK ideal-int pkg syscall (linux-386), const ARPHRD_METRICOM ideal-int pkg syscall (linux-386), const ARPHRD_NETROM ideal-int pkg syscall (linux-386), const ARPHRD_NONE ideal-int pkg syscall (linux-386), const ARPHRD_PIMREG ideal-int pkg syscall (linux-386), const ARPHRD_PPP ideal-int pkg syscall (linux-386), const ARPHRD_PRONET ideal-int pkg syscall (linux-386), const ARPHRD_RAWHDLC ideal-int pkg syscall (linux-386), const ARPHRD_ROSE ideal-int pkg syscall (linux-386), const ARPHRD_RSRVD ideal-int pkg syscall (linux-386), const ARPHRD_SIT ideal-int pkg syscall (linux-386), const ARPHRD_SKIP ideal-int pkg syscall (linux-386), const ARPHRD_SLIP ideal-int pkg syscall (linux-386), const ARPHRD_SLIP6 ideal-int pkg syscall (linux-386), const ARPHRD_TUNNEL ideal-int pkg syscall (linux-386), const ARPHRD_TUNNEL6 ideal-int pkg syscall (linux-386), const ARPHRD_VOID ideal-int pkg syscall (linux-386), const ARPHRD_X25 ideal-int pkg syscall (linux-386), const B0 ideal-int pkg syscall (linux-386), const B1000000 ideal-int pkg syscall (linux-386), const B110 ideal-int pkg syscall (linux-386), const B115200 ideal-int pkg syscall (linux-386), const B1152000 ideal-int pkg syscall (linux-386), const B1200 ideal-int pkg syscall (linux-386), const B134 ideal-int pkg syscall (linux-386), const B150 ideal-int pkg syscall (linux-386), const B1500000 ideal-int pkg syscall (linux-386), const B1800 ideal-int pkg syscall (linux-386), const B19200 ideal-int pkg syscall (linux-386), const B200 ideal-int pkg syscall (linux-386), const B2000000 ideal-int pkg syscall (linux-386), const B230400 ideal-int pkg syscall (linux-386), const B2400 ideal-int pkg syscall (linux-386), const B2500000 ideal-int pkg syscall (linux-386), const B300 ideal-int pkg syscall (linux-386), const B3000000 ideal-int pkg syscall (linux-386), const B3500000 ideal-int pkg syscall (linux-386), const B38400 ideal-int pkg syscall (linux-386), const B4000000 ideal-int pkg syscall (linux-386), const B460800 ideal-int pkg syscall (linux-386), const B4800 ideal-int pkg syscall (linux-386), const B50 ideal-int pkg syscall (linux-386), const B500000 ideal-int pkg syscall (linux-386), const B57600 ideal-int pkg syscall (linux-386), const B576000 ideal-int pkg syscall (linux-386), const B600 ideal-int pkg syscall (linux-386), const B75 ideal-int pkg syscall (linux-386), const B921600 ideal-int pkg syscall (linux-386), const B9600 ideal-int pkg syscall (linux-386), const BPF_A ideal-int pkg syscall (linux-386), const BPF_ABS ideal-int pkg syscall (linux-386), const BPF_ADD ideal-int pkg syscall (linux-386), const BPF_ALU ideal-int pkg syscall (linux-386), const BPF_AND ideal-int pkg syscall (linux-386), const BPF_B ideal-int pkg syscall (linux-386), const BPF_DIV ideal-int pkg syscall (linux-386), const BPF_H ideal-int pkg syscall (linux-386), const BPF_IMM ideal-int pkg syscall (linux-386), const BPF_IND ideal-int pkg syscall (linux-386), const BPF_JA ideal-int pkg syscall (linux-386), const BPF_JEQ ideal-int pkg syscall (linux-386), const BPF_JGE ideal-int pkg syscall (linux-386), const BPF_JGT ideal-int pkg syscall (linux-386), const BPF_JMP ideal-int pkg syscall (linux-386), const BPF_JSET ideal-int pkg syscall (linux-386), const BPF_K ideal-int pkg syscall (linux-386), const BPF_LD ideal-int pkg syscall (linux-386), const BPF_LDX ideal-int pkg syscall (linux-386), const BPF_LEN ideal-int pkg syscall (linux-386), const BPF_LSH ideal-int pkg syscall (linux-386), const BPF_MAJOR_VERSION ideal-int pkg syscall (linux-386), const BPF_MAXINSNS ideal-int pkg syscall (linux-386), const BPF_MEM ideal-int pkg syscall (linux-386), const BPF_MEMWORDS ideal-int pkg syscall (linux-386), const BPF_MINOR_VERSION ideal-int pkg syscall (linux-386), const BPF_MISC ideal-int pkg syscall (linux-386), const BPF_MSH ideal-int pkg syscall (linux-386), const BPF_MUL ideal-int pkg syscall (linux-386), const BPF_NEG ideal-int pkg syscall (linux-386), const BPF_OR ideal-int pkg syscall (linux-386), const BPF_RET ideal-int pkg syscall (linux-386), const BPF_RSH ideal-int pkg syscall (linux-386), const BPF_ST ideal-int pkg syscall (linux-386), const BPF_STX ideal-int pkg syscall (linux-386), const BPF_SUB ideal-int pkg syscall (linux-386), const BPF_TAX ideal-int pkg syscall (linux-386), const BPF_TXA ideal-int pkg syscall (linux-386), const BPF_W ideal-int pkg syscall (linux-386), const BPF_X ideal-int pkg syscall (linux-386), const BRKINT ideal-int pkg syscall (linux-386), const CLOCAL ideal-int pkg syscall (linux-386), const CREAD ideal-int pkg syscall (linux-386), const CS5 ideal-int pkg syscall (linux-386), const CS6 ideal-int pkg syscall (linux-386), const CS7 ideal-int pkg syscall (linux-386), const CS8 ideal-int pkg syscall (linux-386), const CSIZE ideal-int pkg syscall (linux-386), const CSTOPB ideal-int pkg syscall (linux-386), const DT_BLK ideal-int pkg syscall (linux-386), const DT_CHR ideal-int pkg syscall (linux-386), const DT_DIR ideal-int pkg syscall (linux-386), const DT_FIFO ideal-int pkg syscall (linux-386), const DT_LNK ideal-int pkg syscall (linux-386), const DT_REG ideal-int pkg syscall (linux-386), const DT_SOCK ideal-int pkg syscall (linux-386), const DT_UNKNOWN ideal-int pkg syscall (linux-386), const DT_WHT ideal-int pkg syscall (linux-386), const EADV Errno pkg syscall (linux-386), const EBADE Errno pkg syscall (linux-386), const EBADFD Errno pkg syscall (linux-386), const EBADMSG Errno pkg syscall (linux-386), const EBADR Errno pkg syscall (linux-386), const EBADRQC Errno pkg syscall (linux-386), const EBADSLT Errno pkg syscall (linux-386), const EBFONT Errno pkg syscall (linux-386), const ECHO ideal-int pkg syscall (linux-386), const ECHOCTL ideal-int pkg syscall (linux-386), const ECHOE ideal-int pkg syscall (linux-386), const ECHOK ideal-int pkg syscall (linux-386), const ECHOKE ideal-int pkg syscall (linux-386), const ECHONL ideal-int pkg syscall (linux-386), const ECHOPRT ideal-int pkg syscall (linux-386), const ECHRNG Errno pkg syscall (linux-386), const ECOMM Errno pkg syscall (linux-386), const EDEADLOCK Errno pkg syscall (linux-386), const EDOTDOT Errno pkg syscall (linux-386), const EISNAM Errno pkg syscall (linux-386), const EKEYEXPIRED Errno pkg syscall (linux-386), const EKEYREJECTED Errno pkg syscall (linux-386), const EKEYREVOKED Errno pkg syscall (linux-386), const EL2HLT Errno pkg syscall (linux-386), const EL2NSYNC Errno pkg syscall (linux-386), const EL3HLT Errno pkg syscall (linux-386), const EL3RST Errno pkg syscall (linux-386), const ELIBACC Errno pkg syscall (linux-386), const ELIBBAD Errno pkg syscall (linux-386), const ELIBEXEC Errno pkg syscall (linux-386), const ELIBMAX Errno pkg syscall (linux-386), const ELIBSCN Errno pkg syscall (linux-386), const ELNRNG Errno pkg syscall (linux-386), const EMEDIUMTYPE Errno pkg syscall (linux-386), const EMULTIHOP Errno pkg syscall (linux-386), const ENAVAIL Errno pkg syscall (linux-386), const ENOANO Errno pkg syscall (linux-386), const ENOCSI Errno pkg syscall (linux-386), const ENODATA Errno pkg syscall (linux-386), const ENOKEY Errno pkg syscall (linux-386), const ENOLINK Errno pkg syscall (linux-386), const ENOMEDIUM Errno pkg syscall (linux-386), const ENONET Errno pkg syscall (linux-386), const ENOPKG Errno pkg syscall (linux-386), const ENOSR Errno pkg syscall (linux-386), const ENOSTR Errno pkg syscall (linux-386), const ENOTNAM Errno pkg syscall (linux-386), const ENOTRECOVERABLE Errno pkg syscall (linux-386), const ENOTUNIQ Errno pkg syscall (linux-386), const EOWNERDEAD Errno pkg syscall (linux-386), const EPOLLERR ideal-int pkg syscall (linux-386), const EPOLLET ideal-int pkg syscall (linux-386), const EPOLLHUP ideal-int pkg syscall (linux-386), const EPOLLIN ideal-int pkg syscall (linux-386), const EPOLLMSG ideal-int pkg syscall (linux-386), const EPOLLONESHOT ideal-int pkg syscall (linux-386), const EPOLLOUT ideal-int pkg syscall (linux-386), const EPOLLPRI ideal-int pkg syscall (linux-386), const EPOLLRDBAND ideal-int pkg syscall (linux-386), const EPOLLRDHUP ideal-int pkg syscall (linux-386), const EPOLLRDNORM ideal-int pkg syscall (linux-386), const EPOLLWRBAND ideal-int pkg syscall (linux-386), const EPOLLWRNORM ideal-int pkg syscall (linux-386), const EPOLL_CLOEXEC ideal-int pkg syscall (linux-386), const EPOLL_CTL_ADD ideal-int pkg syscall (linux-386), const EPOLL_CTL_DEL ideal-int pkg syscall (linux-386), const EPOLL_CTL_MOD ideal-int pkg syscall (linux-386), const EPOLL_NONBLOCK ideal-int pkg syscall (linux-386), const EPROTO Errno pkg syscall (linux-386), const EREMCHG Errno pkg syscall (linux-386), const EREMOTEIO Errno pkg syscall (linux-386), const ERESTART Errno pkg syscall (linux-386), const ERFKILL Errno pkg syscall (linux-386), const ESRMNT Errno pkg syscall (linux-386), const ESTRPIPE Errno pkg syscall (linux-386), const ETH_P_1588 ideal-int pkg syscall (linux-386), const ETH_P_8021Q ideal-int pkg syscall (linux-386), const ETH_P_802_2 ideal-int pkg syscall (linux-386), const ETH_P_802_3 ideal-int pkg syscall (linux-386), const ETH_P_AARP ideal-int pkg syscall (linux-386), const ETH_P_ALL ideal-int pkg syscall (linux-386), const ETH_P_AOE ideal-int pkg syscall (linux-386), const ETH_P_ARCNET ideal-int pkg syscall (linux-386), const ETH_P_ARP ideal-int pkg syscall (linux-386), const ETH_P_ATALK ideal-int pkg syscall (linux-386), const ETH_P_ATMFATE ideal-int pkg syscall (linux-386), const ETH_P_ATMMPOA ideal-int pkg syscall (linux-386), const ETH_P_AX25 ideal-int pkg syscall (linux-386), const ETH_P_BPQ ideal-int pkg syscall (linux-386), const ETH_P_CAIF ideal-int pkg syscall (linux-386), const ETH_P_CAN ideal-int pkg syscall (linux-386), const ETH_P_CONTROL ideal-int pkg syscall (linux-386), const ETH_P_CUST ideal-int pkg syscall (linux-386), const ETH_P_DDCMP ideal-int pkg syscall (linux-386), const ETH_P_DEC ideal-int pkg syscall (linux-386), const ETH_P_DIAG ideal-int pkg syscall (linux-386), const ETH_P_DNA_DL ideal-int pkg syscall (linux-386), const ETH_P_DNA_RC ideal-int pkg syscall (linux-386), const ETH_P_DNA_RT ideal-int pkg syscall (linux-386), const ETH_P_DSA ideal-int pkg syscall (linux-386), const ETH_P_ECONET ideal-int pkg syscall (linux-386), const ETH_P_EDSA ideal-int pkg syscall (linux-386), const ETH_P_FCOE ideal-int pkg syscall (linux-386), const ETH_P_FIP ideal-int pkg syscall (linux-386), const ETH_P_HDLC ideal-int pkg syscall (linux-386), const ETH_P_IEEE802154 ideal-int pkg syscall (linux-386), const ETH_P_IEEEPUP ideal-int pkg syscall (linux-386), const ETH_P_IEEEPUPAT ideal-int pkg syscall (linux-386), const ETH_P_IP ideal-int pkg syscall (linux-386), const ETH_P_IPV6 ideal-int pkg syscall (linux-386), const ETH_P_IPX ideal-int pkg syscall (linux-386), const ETH_P_IRDA ideal-int pkg syscall (linux-386), const ETH_P_LAT ideal-int pkg syscall (linux-386), const ETH_P_LINK_CTL ideal-int pkg syscall (linux-386), const ETH_P_LOCALTALK ideal-int pkg syscall (linux-386), const ETH_P_LOOP ideal-int pkg syscall (linux-386), const ETH_P_MOBITEX ideal-int pkg syscall (linux-386), const ETH_P_MPLS_MC ideal-int pkg syscall (linux-386), const ETH_P_MPLS_UC ideal-int pkg syscall (linux-386), const ETH_P_PAE ideal-int pkg syscall (linux-386), const ETH_P_PAUSE ideal-int pkg syscall (linux-386), const ETH_P_PHONET ideal-int pkg syscall (linux-386), const ETH_P_PPPTALK ideal-int pkg syscall (linux-386), const ETH_P_PPP_DISC ideal-int pkg syscall (linux-386), const ETH_P_PPP_MP ideal-int pkg syscall (linux-386), const ETH_P_PPP_SES ideal-int pkg syscall (linux-386), const ETH_P_PUP ideal-int pkg syscall (linux-386), const ETH_P_PUPAT ideal-int pkg syscall (linux-386), const ETH_P_RARP ideal-int pkg syscall (linux-386), const ETH_P_SCA ideal-int pkg syscall (linux-386), const ETH_P_SLOW ideal-int pkg syscall (linux-386), const ETH_P_SNAP ideal-int pkg syscall (linux-386), const ETH_P_TEB ideal-int pkg syscall (linux-386), const ETH_P_TIPC ideal-int pkg syscall (linux-386), const ETH_P_TRAILER ideal-int pkg syscall (linux-386), const ETH_P_TR_802_2 ideal-int pkg syscall (linux-386), const ETH_P_WAN_PPP ideal-int pkg syscall (linux-386), const ETH_P_WCCP ideal-int pkg syscall (linux-386), const ETH_P_X25 ideal-int pkg syscall (linux-386), const ETIME Errno pkg syscall (linux-386), const EUCLEAN Errno pkg syscall (linux-386), const EUNATCH Errno pkg syscall (linux-386), const EXFULL Errno pkg syscall (linux-386), const FD_CLOEXEC ideal-int pkg syscall (linux-386), const FD_SETSIZE ideal-int pkg syscall (linux-386), const FLUSHO ideal-int pkg syscall (linux-386), const F_DUPFD ideal-int pkg syscall (linux-386), const F_DUPFD_CLOEXEC ideal-int pkg syscall (linux-386), const F_EXLCK ideal-int pkg syscall (linux-386), const F_GETFD ideal-int pkg syscall (linux-386), const F_GETFL ideal-int pkg syscall (linux-386), const F_GETLEASE ideal-int pkg syscall (linux-386), const F_GETLK ideal-int pkg syscall (linux-386), const F_GETLK64 ideal-int pkg syscall (linux-386), const F_GETOWN ideal-int pkg syscall (linux-386), const F_GETOWN_EX ideal-int pkg syscall (linux-386), const F_GETPIPE_SZ ideal-int pkg syscall (linux-386), const F_GETSIG ideal-int pkg syscall (linux-386), const F_LOCK ideal-int pkg syscall (linux-386), const F_NOTIFY ideal-int pkg syscall (linux-386), const F_OK ideal-int pkg syscall (linux-386), const F_RDLCK ideal-int pkg syscall (linux-386), const F_SETFD ideal-int pkg syscall (linux-386), const F_SETFL ideal-int pkg syscall (linux-386), const F_SETLEASE ideal-int pkg syscall (linux-386), const F_SETLK ideal-int pkg syscall (linux-386), const F_SETLK64 ideal-int pkg syscall (linux-386), const F_SETLKW ideal-int pkg syscall (linux-386), const F_SETLKW64 ideal-int pkg syscall (linux-386), const F_SETOWN ideal-int pkg syscall (linux-386), const F_SETOWN_EX ideal-int pkg syscall (linux-386), const F_SETPIPE_SZ ideal-int pkg syscall (linux-386), const F_SETSIG ideal-int pkg syscall (linux-386), const F_SHLCK ideal-int pkg syscall (linux-386), const F_TEST ideal-int pkg syscall (linux-386), const F_TLOCK ideal-int pkg syscall (linux-386), const F_ULOCK ideal-int pkg syscall (linux-386), const F_UNLCK ideal-int pkg syscall (linux-386), const F_WRLCK ideal-int pkg syscall (linux-386), const HUPCL ideal-int pkg syscall (linux-386), const ICANON ideal-int pkg syscall (linux-386), const ICRNL ideal-int pkg syscall (linux-386), const IEXTEN ideal-int pkg syscall (linux-386), const IFA_ADDRESS ideal-int pkg syscall (linux-386), const IFA_ANYCAST ideal-int pkg syscall (linux-386), const IFA_BROADCAST ideal-int pkg syscall (linux-386), const IFA_CACHEINFO ideal-int pkg syscall (linux-386), const IFA_F_DADFAILED ideal-int pkg syscall (linux-386), const IFA_F_DEPRECATED ideal-int pkg syscall (linux-386), const IFA_F_HOMEADDRESS ideal-int pkg syscall (linux-386), const IFA_F_NODAD ideal-int pkg syscall (linux-386), const IFA_F_OPTIMISTIC ideal-int pkg syscall (linux-386), const IFA_F_PERMANENT ideal-int pkg syscall (linux-386), const IFA_F_SECONDARY ideal-int pkg syscall (linux-386), const IFA_F_TEMPORARY ideal-int pkg syscall (linux-386), const IFA_F_TENTATIVE ideal-int pkg syscall (linux-386), const IFA_LABEL ideal-int pkg syscall (linux-386), const IFA_LOCAL ideal-int pkg syscall (linux-386), const IFA_MAX ideal-int pkg syscall (linux-386), const IFA_MULTICAST ideal-int pkg syscall (linux-386), const IFA_UNSPEC ideal-int pkg syscall (linux-386), const IFF_ALLMULTI ideal-int pkg syscall (linux-386), const IFF_AUTOMEDIA ideal-int pkg syscall (linux-386), const IFF_DEBUG ideal-int pkg syscall (linux-386), const IFF_DYNAMIC ideal-int pkg syscall (linux-386), const IFF_MASTER ideal-int pkg syscall (linux-386), const IFF_NOARP ideal-int pkg syscall (linux-386), const IFF_NOTRAILERS ideal-int pkg syscall (linux-386), const IFF_NO_PI ideal-int pkg syscall (linux-386), const IFF_ONE_QUEUE ideal-int pkg syscall (linux-386), const IFF_POINTOPOINT ideal-int pkg syscall (linux-386), const IFF_PORTSEL ideal-int pkg syscall (linux-386), const IFF_PROMISC ideal-int pkg syscall (linux-386), const IFF_RUNNING ideal-int pkg syscall (linux-386), const IFF_SLAVE ideal-int pkg syscall (linux-386), const IFF_TAP ideal-int pkg syscall (linux-386), const IFF_TUN ideal-int pkg syscall (linux-386), const IFF_TUN_EXCL ideal-int pkg syscall (linux-386), const IFF_VNET_HDR ideal-int pkg syscall (linux-386), const IFLA_ADDRESS ideal-int pkg syscall (linux-386), const IFLA_BROADCAST ideal-int pkg syscall (linux-386), const IFLA_COST ideal-int pkg syscall (linux-386), const IFLA_IFALIAS ideal-int pkg syscall (linux-386), const IFLA_IFNAME ideal-int pkg syscall (linux-386), const IFLA_LINK ideal-int pkg syscall (linux-386), const IFLA_LINKINFO ideal-int pkg syscall (linux-386), const IFLA_LINKMODE ideal-int pkg syscall (linux-386), const IFLA_MAP ideal-int pkg syscall (linux-386), const IFLA_MASTER ideal-int pkg syscall (linux-386), const IFLA_MAX ideal-int pkg syscall (linux-386), const IFLA_MTU ideal-int pkg syscall (linux-386), const IFLA_NET_NS_PID ideal-int pkg syscall (linux-386), const IFLA_OPERSTATE ideal-int pkg syscall (linux-386), const IFLA_PRIORITY ideal-int pkg syscall (linux-386), const IFLA_PROTINFO ideal-int pkg syscall (linux-386), const IFLA_QDISC ideal-int pkg syscall (linux-386), const IFLA_STATS ideal-int pkg syscall (linux-386), const IFLA_TXQLEN ideal-int pkg syscall (linux-386), const IFLA_UNSPEC ideal-int pkg syscall (linux-386), const IFLA_WEIGHT ideal-int pkg syscall (linux-386), const IFLA_WIRELESS ideal-int pkg syscall (linux-386), const IFNAMSIZ ideal-int pkg syscall (linux-386), const IGNBRK ideal-int pkg syscall (linux-386), const IGNCR ideal-int pkg syscall (linux-386), const IGNPAR ideal-int pkg syscall (linux-386), const IMAXBEL ideal-int pkg syscall (linux-386), const INLCR ideal-int pkg syscall (linux-386), const INPCK ideal-int pkg syscall (linux-386), const IN_ACCESS ideal-int pkg syscall (linux-386), const IN_ALL_EVENTS ideal-int pkg syscall (linux-386), const IN_ATTRIB ideal-int pkg syscall (linux-386), const IN_CLASSA_HOST ideal-int pkg syscall (linux-386), const IN_CLASSA_MAX ideal-int pkg syscall (linux-386), const IN_CLASSA_NET ideal-int pkg syscall (linux-386), const IN_CLASSA_NSHIFT ideal-int pkg syscall (linux-386), const IN_CLASSB_HOST ideal-int pkg syscall (linux-386), const IN_CLASSB_MAX ideal-int pkg syscall (linux-386), const IN_CLASSB_NET ideal-int pkg syscall (linux-386), const IN_CLASSB_NSHIFT ideal-int pkg syscall (linux-386), const IN_CLASSC_HOST ideal-int pkg syscall (linux-386), const IN_CLASSC_NET ideal-int pkg syscall (linux-386), const IN_CLASSC_NSHIFT ideal-int pkg syscall (linux-386), const IN_CLOEXEC ideal-int pkg syscall (linux-386), const IN_CLOSE ideal-int pkg syscall (linux-386), const IN_CLOSE_NOWRITE ideal-int pkg syscall (linux-386), const IN_CLOSE_WRITE ideal-int pkg syscall (linux-386), const IN_CREATE ideal-int pkg syscall (linux-386), const IN_DELETE ideal-int pkg syscall (linux-386), const IN_DELETE_SELF ideal-int pkg syscall (linux-386), const IN_DONT_FOLLOW ideal-int pkg syscall (linux-386), const IN_EXCL_UNLINK ideal-int pkg syscall (linux-386), const IN_IGNORED ideal-int pkg syscall (linux-386), const IN_ISDIR ideal-int pkg syscall (linux-386), const IN_LOOPBACKNET ideal-int pkg syscall (linux-386), const IN_MASK_ADD ideal-int pkg syscall (linux-386), const IN_MODIFY ideal-int pkg syscall (linux-386), const IN_MOVE ideal-int pkg syscall (linux-386), const IN_MOVED_FROM ideal-int pkg syscall (linux-386), const IN_MOVED_TO ideal-int pkg syscall (linux-386), const IN_MOVE_SELF ideal-int pkg syscall (linux-386), const IN_NONBLOCK ideal-int pkg syscall (linux-386), const IN_ONESHOT ideal-int pkg syscall (linux-386), const IN_ONLYDIR ideal-int pkg syscall (linux-386), const IN_OPEN ideal-int pkg syscall (linux-386), const IN_Q_OVERFLOW ideal-int pkg syscall (linux-386), const IN_UNMOUNT ideal-int pkg syscall (linux-386), const IPPROTO_AH ideal-int pkg syscall (linux-386), const IPPROTO_COMP ideal-int pkg syscall (linux-386), const IPPROTO_DCCP ideal-int pkg syscall (linux-386), const IPPROTO_DSTOPTS ideal-int pkg syscall (linux-386), const IPPROTO_EGP ideal-int pkg syscall (linux-386), const IPPROTO_ENCAP ideal-int pkg syscall (linux-386), const IPPROTO_ESP ideal-int pkg syscall (linux-386), const IPPROTO_FRAGMENT ideal-int pkg syscall (linux-386), const IPPROTO_GRE ideal-int pkg syscall (linux-386), const IPPROTO_HOPOPTS ideal-int pkg syscall (linux-386), const IPPROTO_ICMP ideal-int pkg syscall (linux-386), const IPPROTO_ICMPV6 ideal-int pkg syscall (linux-386), const IPPROTO_IDP ideal-int pkg syscall (linux-386), const IPPROTO_IGMP ideal-int pkg syscall (linux-386), const IPPROTO_IPIP ideal-int pkg syscall (linux-386), const IPPROTO_MTP ideal-int pkg syscall (linux-386), const IPPROTO_NONE ideal-int pkg syscall (linux-386), const IPPROTO_PIM ideal-int pkg syscall (linux-386), const IPPROTO_PUP ideal-int pkg syscall (linux-386), const IPPROTO_RAW ideal-int pkg syscall (linux-386), const IPPROTO_ROUTING ideal-int pkg syscall (linux-386), const IPPROTO_RSVP ideal-int pkg syscall (linux-386), const IPPROTO_SCTP ideal-int pkg syscall (linux-386), const IPPROTO_TP ideal-int pkg syscall (linux-386), const IPPROTO_UDPLITE ideal-int pkg syscall (linux-386), const IPV6_2292DSTOPTS ideal-int pkg syscall (linux-386), const IPV6_2292HOPLIMIT ideal-int pkg syscall (linux-386), const IPV6_2292HOPOPTS ideal-int pkg syscall (linux-386), const IPV6_2292PKTINFO ideal-int pkg syscall (linux-386), const IPV6_2292PKTOPTIONS ideal-int pkg syscall (linux-386), const IPV6_2292RTHDR ideal-int pkg syscall (linux-386), const IPV6_ADDRFORM ideal-int pkg syscall (linux-386), const IPV6_ADD_MEMBERSHIP ideal-int pkg syscall (linux-386), const IPV6_AUTHHDR ideal-int pkg syscall (linux-386), const IPV6_CHECKSUM ideal-int pkg syscall (linux-386), const IPV6_DROP_MEMBERSHIP ideal-int pkg syscall (linux-386), const IPV6_DSTOPTS ideal-int pkg syscall (linux-386), const IPV6_HOPLIMIT ideal-int pkg syscall (linux-386), const IPV6_HOPOPTS ideal-int pkg syscall (linux-386), const IPV6_IPSEC_POLICY ideal-int pkg syscall (linux-386), const IPV6_JOIN_ANYCAST ideal-int pkg syscall (linux-386), const IPV6_LEAVE_ANYCAST ideal-int pkg syscall (linux-386), const IPV6_MTU ideal-int pkg syscall (linux-386), const IPV6_MTU_DISCOVER ideal-int pkg syscall (linux-386), const IPV6_NEXTHOP ideal-int pkg syscall (linux-386), const IPV6_PKTINFO ideal-int pkg syscall (linux-386), const IPV6_PMTUDISC_DO ideal-int pkg syscall (linux-386), const IPV6_PMTUDISC_DONT ideal-int pkg syscall (linux-386), const IPV6_PMTUDISC_PROBE ideal-int pkg syscall (linux-386), const IPV6_PMTUDISC_WANT ideal-int pkg syscall (linux-386), const IPV6_RECVDSTOPTS ideal-int pkg syscall (linux-386), const IPV6_RECVERR ideal-int pkg syscall (linux-386), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (linux-386), const IPV6_RECVHOPOPTS ideal-int pkg syscall (linux-386), const IPV6_RECVPKTINFO ideal-int pkg syscall (linux-386), const IPV6_RECVRTHDR ideal-int pkg syscall (linux-386), const IPV6_RECVTCLASS ideal-int pkg syscall (linux-386), const IPV6_ROUTER_ALERT ideal-int pkg syscall (linux-386), const IPV6_RTHDR ideal-int pkg syscall (linux-386), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (linux-386), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (linux-386), const IPV6_RTHDR_STRICT ideal-int pkg syscall (linux-386), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (linux-386), const IPV6_RXDSTOPTS ideal-int pkg syscall (linux-386), const IPV6_RXHOPOPTS ideal-int pkg syscall (linux-386), const IPV6_TCLASS ideal-int pkg syscall (linux-386), const IPV6_XFRM_POLICY ideal-int pkg syscall (linux-386), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (linux-386), const IP_BLOCK_SOURCE ideal-int pkg syscall (linux-386), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (linux-386), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (linux-386), const IP_DF ideal-int pkg syscall (linux-386), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (linux-386), const IP_FREEBIND ideal-int pkg syscall (linux-386), const IP_HDRINCL ideal-int pkg syscall (linux-386), const IP_IPSEC_POLICY ideal-int pkg syscall (linux-386), const IP_MAXPACKET ideal-int pkg syscall (linux-386), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (linux-386), const IP_MF ideal-int pkg syscall (linux-386), const IP_MINTTL ideal-int pkg syscall (linux-386), const IP_MSFILTER ideal-int pkg syscall (linux-386), const IP_MSS ideal-int pkg syscall (linux-386), const IP_MTU ideal-int pkg syscall (linux-386), const IP_MTU_DISCOVER ideal-int pkg syscall (linux-386), const IP_OFFMASK ideal-int pkg syscall (linux-386), const IP_OPTIONS ideal-int pkg syscall (linux-386), const IP_ORIGDSTADDR ideal-int pkg syscall (linux-386), const IP_PASSSEC ideal-int pkg syscall (linux-386), const IP_PKTINFO ideal-int pkg syscall (linux-386), const IP_PKTOPTIONS ideal-int pkg syscall (linux-386), const IP_PMTUDISC ideal-int pkg syscall (linux-386), const IP_PMTUDISC_DO ideal-int pkg syscall (linux-386), const IP_PMTUDISC_DONT ideal-int pkg syscall (linux-386), const IP_PMTUDISC_PROBE ideal-int pkg syscall (linux-386), const IP_PMTUDISC_WANT ideal-int pkg syscall (linux-386), const IP_RECVERR ideal-int pkg syscall (linux-386), const IP_RECVOPTS ideal-int pkg syscall (linux-386), const IP_RECVORIGDSTADDR ideal-int pkg syscall (linux-386), const IP_RECVRETOPTS ideal-int pkg syscall (linux-386), const IP_RECVTOS ideal-int pkg syscall (linux-386), const IP_RECVTTL ideal-int pkg syscall (linux-386), const IP_RETOPTS ideal-int pkg syscall (linux-386), const IP_RF ideal-int pkg syscall (linux-386), const IP_ROUTER_ALERT ideal-int pkg syscall (linux-386), const IP_TRANSPARENT ideal-int pkg syscall (linux-386), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (linux-386), const IP_XFRM_POLICY ideal-int pkg syscall (linux-386), const ISIG ideal-int pkg syscall (linux-386), const ISTRIP ideal-int pkg syscall (linux-386), const IUCLC ideal-int pkg syscall (linux-386), const IUTF8 ideal-int pkg syscall (linux-386), const IXANY ideal-int pkg syscall (linux-386), const IXOFF ideal-int pkg syscall (linux-386), const IXON ideal-int pkg syscall (linux-386), const LINUX_REBOOT_CMD_CAD_OFF ideal-int pkg syscall (linux-386), const LINUX_REBOOT_CMD_CAD_ON ideal-int pkg syscall (linux-386), const LINUX_REBOOT_CMD_HALT ideal-int pkg syscall (linux-386), const LINUX_REBOOT_CMD_KEXEC ideal-int pkg syscall (linux-386), const LINUX_REBOOT_CMD_POWER_OFF ideal-int pkg syscall (linux-386), const LINUX_REBOOT_CMD_RESTART ideal-int pkg syscall (linux-386), const LINUX_REBOOT_CMD_RESTART2 ideal-int pkg syscall (linux-386), const LINUX_REBOOT_CMD_SW_SUSPEND ideal-int pkg syscall (linux-386), const LINUX_REBOOT_MAGIC1 ideal-int pkg syscall (linux-386), const LINUX_REBOOT_MAGIC2 ideal-int pkg syscall (linux-386), const LOCK_EX ideal-int pkg syscall (linux-386), const LOCK_NB ideal-int pkg syscall (linux-386), const LOCK_SH ideal-int pkg syscall (linux-386), const LOCK_UN ideal-int pkg syscall (linux-386), const MADV_DOFORK ideal-int pkg syscall (linux-386), const MADV_DONTFORK ideal-int pkg syscall (linux-386), const MADV_DONTNEED ideal-int pkg syscall (linux-386), const MADV_HUGEPAGE ideal-int pkg syscall (linux-386), const MADV_HWPOISON ideal-int pkg syscall (linux-386), const MADV_MERGEABLE ideal-int pkg syscall (linux-386), const MADV_NOHUGEPAGE ideal-int pkg syscall (linux-386), const MADV_NORMAL ideal-int pkg syscall (linux-386), const MADV_RANDOM ideal-int pkg syscall (linux-386), const MADV_REMOVE ideal-int pkg syscall (linux-386), const MADV_SEQUENTIAL ideal-int pkg syscall (linux-386), const MADV_UNMERGEABLE ideal-int pkg syscall (linux-386), const MADV_WILLNEED ideal-int pkg syscall (linux-386), const MAP_32BIT ideal-int pkg syscall (linux-386), const MAP_ANON ideal-int pkg syscall (linux-386), const MAP_ANONYMOUS ideal-int pkg syscall (linux-386), const MAP_DENYWRITE ideal-int pkg syscall (linux-386), const MAP_EXECUTABLE ideal-int pkg syscall (linux-386), const MAP_FILE ideal-int pkg syscall (linux-386), const MAP_FIXED ideal-int pkg syscall (linux-386), const MAP_GROWSDOWN ideal-int pkg syscall (linux-386), const MAP_HUGETLB ideal-int pkg syscall (linux-386), const MAP_LOCKED ideal-int pkg syscall (linux-386), const MAP_NONBLOCK ideal-int pkg syscall (linux-386), const MAP_NORESERVE ideal-int pkg syscall (linux-386), const MAP_POPULATE ideal-int pkg syscall (linux-386), const MAP_PRIVATE ideal-int pkg syscall (linux-386), const MAP_SHARED ideal-int pkg syscall (linux-386), const MAP_STACK ideal-int pkg syscall (linux-386), const MAP_TYPE ideal-int pkg syscall (linux-386), const MCL_CURRENT ideal-int pkg syscall (linux-386), const MCL_FUTURE ideal-int pkg syscall (linux-386), const MNT_DETACH ideal-int pkg syscall (linux-386), const MNT_EXPIRE ideal-int pkg syscall (linux-386), const MNT_FORCE ideal-int pkg syscall (linux-386), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (linux-386), const MSG_CONFIRM ideal-int pkg syscall (linux-386), const MSG_CTRUNC ideal-int pkg syscall (linux-386), const MSG_DONTROUTE ideal-int pkg syscall (linux-386), const MSG_DONTWAIT ideal-int pkg syscall (linux-386), const MSG_EOR ideal-int pkg syscall (linux-386), const MSG_ERRQUEUE ideal-int pkg syscall (linux-386), const MSG_FIN ideal-int pkg syscall (linux-386), const MSG_MORE ideal-int pkg syscall (linux-386), const MSG_NOSIGNAL ideal-int pkg syscall (linux-386), const MSG_OOB ideal-int pkg syscall (linux-386), const MSG_PEEK ideal-int pkg syscall (linux-386), const MSG_PROXY ideal-int pkg syscall (linux-386), const MSG_RST ideal-int pkg syscall (linux-386), const MSG_SYN ideal-int pkg syscall (linux-386), const MSG_TRUNC ideal-int pkg syscall (linux-386), const MSG_TRYHARD ideal-int pkg syscall (linux-386), const MSG_WAITALL ideal-int pkg syscall (linux-386), const MSG_WAITFORONE ideal-int pkg syscall (linux-386), const MS_ACTIVE ideal-int pkg syscall (linux-386), const MS_ASYNC ideal-int pkg syscall (linux-386), const MS_BIND ideal-int pkg syscall (linux-386), const MS_DIRSYNC ideal-int pkg syscall (linux-386), const MS_INVALIDATE ideal-int pkg syscall (linux-386), const MS_I_VERSION ideal-int pkg syscall (linux-386), const MS_KERNMOUNT ideal-int pkg syscall (linux-386), const MS_MANDLOCK ideal-int pkg syscall (linux-386), const MS_MGC_MSK ideal-int pkg syscall (linux-386), const MS_MGC_VAL ideal-int pkg syscall (linux-386), const MS_MOVE ideal-int pkg syscall (linux-386), const MS_NOATIME ideal-int pkg syscall (linux-386), const MS_NODEV ideal-int pkg syscall (linux-386), const MS_NODIRATIME ideal-int pkg syscall (linux-386), const MS_NOEXEC ideal-int pkg syscall (linux-386), const MS_NOSUID ideal-int pkg syscall (linux-386), const MS_NOUSER ideal-int pkg syscall (linux-386), const MS_POSIXACL ideal-int pkg syscall (linux-386), const MS_PRIVATE ideal-int pkg syscall (linux-386), const MS_RDONLY ideal-int pkg syscall (linux-386), const MS_REC ideal-int pkg syscall (linux-386), const MS_RELATIME ideal-int pkg syscall (linux-386), const MS_REMOUNT ideal-int pkg syscall (linux-386), const MS_RMT_MASK ideal-int pkg syscall (linux-386), const MS_SHARED ideal-int pkg syscall (linux-386), const MS_SILENT ideal-int pkg syscall (linux-386), const MS_SLAVE ideal-int pkg syscall (linux-386), const MS_STRICTATIME ideal-int pkg syscall (linux-386), const MS_SYNC ideal-int pkg syscall (linux-386), const MS_SYNCHRONOUS ideal-int pkg syscall (linux-386), const MS_UNBINDABLE ideal-int pkg syscall (linux-386), const NAME_MAX ideal-int pkg syscall (linux-386), const NETLINK_ADD_MEMBERSHIP ideal-int pkg syscall (linux-386), const NETLINK_AUDIT ideal-int pkg syscall (linux-386), const NETLINK_BROADCAST_ERROR ideal-int pkg syscall (linux-386), const NETLINK_CONNECTOR ideal-int pkg syscall (linux-386), const NETLINK_DNRTMSG ideal-int pkg syscall (linux-386), const NETLINK_DROP_MEMBERSHIP ideal-int pkg syscall (linux-386), const NETLINK_ECRYPTFS ideal-int pkg syscall (linux-386), const NETLINK_FIB_LOOKUP ideal-int pkg syscall (linux-386), const NETLINK_FIREWALL ideal-int pkg syscall (linux-386), const NETLINK_GENERIC ideal-int pkg syscall (linux-386), const NETLINK_INET_DIAG ideal-int pkg syscall (linux-386), const NETLINK_IP6_FW ideal-int pkg syscall (linux-386), const NETLINK_ISCSI ideal-int pkg syscall (linux-386), const NETLINK_KOBJECT_UEVENT ideal-int pkg syscall (linux-386), const NETLINK_NETFILTER ideal-int pkg syscall (linux-386), const NETLINK_NFLOG ideal-int pkg syscall (linux-386), const NETLINK_NO_ENOBUFS ideal-int pkg syscall (linux-386), const NETLINK_PKTINFO ideal-int pkg syscall (linux-386), const NETLINK_ROUTE ideal-int pkg syscall (linux-386), const NETLINK_SCSITRANSPORT ideal-int pkg syscall (linux-386), const NETLINK_SELINUX ideal-int pkg syscall (linux-386), const NETLINK_UNUSED ideal-int pkg syscall (linux-386), const NETLINK_USERSOCK ideal-int pkg syscall (linux-386), const NETLINK_XFRM ideal-int pkg syscall (linux-386), const NLA_ALIGNTO ideal-int pkg syscall (linux-386), const NLA_F_NESTED ideal-int pkg syscall (linux-386), const NLA_F_NET_BYTEORDER ideal-int pkg syscall (linux-386), const NLA_HDRLEN ideal-int pkg syscall (linux-386), const NLMSG_ALIGNTO ideal-int pkg syscall (linux-386), const NLMSG_DONE ideal-int pkg syscall (linux-386), const NLMSG_ERROR ideal-int pkg syscall (linux-386), const NLMSG_HDRLEN ideal-int pkg syscall (linux-386), const NLMSG_MIN_TYPE ideal-int pkg syscall (linux-386), const NLMSG_NOOP ideal-int pkg syscall (linux-386), const NLMSG_OVERRUN ideal-int pkg syscall (linux-386), const NLM_F_ACK ideal-int pkg syscall (linux-386), const NLM_F_APPEND ideal-int pkg syscall (linux-386), const NLM_F_ATOMIC ideal-int pkg syscall (linux-386), const NLM_F_CREATE ideal-int pkg syscall (linux-386), const NLM_F_DUMP ideal-int pkg syscall (linux-386), const NLM_F_ECHO ideal-int pkg syscall (linux-386), const NLM_F_EXCL ideal-int pkg syscall (linux-386), const NLM_F_MATCH ideal-int pkg syscall (linux-386), const NLM_F_MULTI ideal-int pkg syscall (linux-386), const NLM_F_REPLACE ideal-int pkg syscall (linux-386), const NLM_F_REQUEST ideal-int pkg syscall (linux-386), const NLM_F_ROOT ideal-int pkg syscall (linux-386), const NOFLSH ideal-int pkg syscall (linux-386), const OCRNL ideal-int pkg syscall (linux-386), const OFDEL ideal-int pkg syscall (linux-386), const OFILL ideal-int pkg syscall (linux-386), const OLCUC ideal-int pkg syscall (linux-386), const ONLCR ideal-int pkg syscall (linux-386), const ONLRET ideal-int pkg syscall (linux-386), const ONOCR ideal-int pkg syscall (linux-386), const OPOST ideal-int pkg syscall (linux-386), const O_ACCMODE ideal-int pkg syscall (linux-386), const O_DIRECT ideal-int pkg syscall (linux-386), const O_DIRECTORY ideal-int pkg syscall (linux-386), const O_DSYNC ideal-int pkg syscall (linux-386), const O_FSYNC ideal-int pkg syscall (linux-386), const O_LARGEFILE ideal-int pkg syscall (linux-386), const O_NDELAY ideal-int pkg syscall (linux-386), const O_NOATIME ideal-int pkg syscall (linux-386), const O_NOFOLLOW ideal-int pkg syscall (linux-386), const O_RSYNC ideal-int pkg syscall (linux-386), const PACKET_ADD_MEMBERSHIP ideal-int pkg syscall (linux-386), const PACKET_BROADCAST ideal-int pkg syscall (linux-386), const PACKET_DROP_MEMBERSHIP ideal-int pkg syscall (linux-386), const PACKET_FASTROUTE ideal-int pkg syscall (linux-386), const PACKET_HOST ideal-int pkg syscall (linux-386), const PACKET_LOOPBACK ideal-int pkg syscall (linux-386), const PACKET_MR_ALLMULTI ideal-int pkg syscall (linux-386), const PACKET_MR_MULTICAST ideal-int pkg syscall (linux-386), const PACKET_MR_PROMISC ideal-int pkg syscall (linux-386), const PACKET_MULTICAST ideal-int pkg syscall (linux-386), const PACKET_OTHERHOST ideal-int pkg syscall (linux-386), const PACKET_OUTGOING ideal-int pkg syscall (linux-386), const PACKET_RECV_OUTPUT ideal-int pkg syscall (linux-386), const PACKET_RX_RING ideal-int pkg syscall (linux-386), const PACKET_STATISTICS ideal-int pkg syscall (linux-386), const PARENB ideal-int pkg syscall (linux-386), const PARMRK ideal-int pkg syscall (linux-386), const PARODD ideal-int pkg syscall (linux-386), const PENDIN ideal-int pkg syscall (linux-386), const PROT_EXEC ideal-int pkg syscall (linux-386), const PROT_GROWSDOWN ideal-int pkg syscall (linux-386), const PROT_GROWSUP ideal-int pkg syscall (linux-386), const PROT_NONE ideal-int pkg syscall (linux-386), const PROT_READ ideal-int pkg syscall (linux-386), const PROT_WRITE ideal-int pkg syscall (linux-386), const PR_CAPBSET_DROP ideal-int pkg syscall (linux-386), const PR_CAPBSET_READ ideal-int pkg syscall (linux-386), const PR_ENDIAN_BIG ideal-int pkg syscall (linux-386), const PR_ENDIAN_LITTLE ideal-int pkg syscall (linux-386), const PR_ENDIAN_PPC_LITTLE ideal-int pkg syscall (linux-386), const PR_FPEMU_NOPRINT ideal-int pkg syscall (linux-386), const PR_FPEMU_SIGFPE ideal-int pkg syscall (linux-386), const PR_FP_EXC_ASYNC ideal-int pkg syscall (linux-386), const PR_FP_EXC_DISABLED ideal-int pkg syscall (linux-386), const PR_FP_EXC_DIV ideal-int pkg syscall (linux-386), const PR_FP_EXC_INV ideal-int pkg syscall (linux-386), const PR_FP_EXC_NONRECOV ideal-int pkg syscall (linux-386), const PR_FP_EXC_OVF ideal-int pkg syscall (linux-386), const PR_FP_EXC_PRECISE ideal-int pkg syscall (linux-386), const PR_FP_EXC_RES ideal-int pkg syscall (linux-386), const PR_FP_EXC_SW_ENABLE ideal-int pkg syscall (linux-386), const PR_FP_EXC_UND ideal-int pkg syscall (linux-386), const PR_GET_DUMPABLE ideal-int pkg syscall (linux-386), const PR_GET_ENDIAN ideal-int pkg syscall (linux-386), const PR_GET_FPEMU ideal-int pkg syscall (linux-386), const PR_GET_FPEXC ideal-int pkg syscall (linux-386), const PR_GET_KEEPCAPS ideal-int pkg syscall (linux-386), const PR_GET_NAME ideal-int pkg syscall (linux-386), const PR_GET_PDEATHSIG ideal-int pkg syscall (linux-386), const PR_GET_SECCOMP ideal-int pkg syscall (linux-386), const PR_GET_SECUREBITS ideal-int pkg syscall (linux-386), const PR_GET_TIMERSLACK ideal-int pkg syscall (linux-386), const PR_GET_TIMING ideal-int pkg syscall (linux-386), const PR_GET_TSC ideal-int pkg syscall (linux-386), const PR_GET_UNALIGN ideal-int pkg syscall (linux-386), const PR_MCE_KILL ideal-int pkg syscall (linux-386), const PR_MCE_KILL_CLEAR ideal-int pkg syscall (linux-386), const PR_MCE_KILL_DEFAULT ideal-int pkg syscall (linux-386), const PR_MCE_KILL_EARLY ideal-int pkg syscall (linux-386), const PR_MCE_KILL_GET ideal-int pkg syscall (linux-386), const PR_MCE_KILL_LATE ideal-int pkg syscall (linux-386), const PR_MCE_KILL_SET ideal-int pkg syscall (linux-386), const PR_SET_DUMPABLE ideal-int pkg syscall (linux-386), const PR_SET_ENDIAN ideal-int pkg syscall (linux-386), const PR_SET_FPEMU ideal-int pkg syscall (linux-386), const PR_SET_FPEXC ideal-int pkg syscall (linux-386), const PR_SET_KEEPCAPS ideal-int pkg syscall (linux-386), const PR_SET_NAME ideal-int pkg syscall (linux-386), const PR_SET_PDEATHSIG ideal-int pkg syscall (linux-386), const PR_SET_PTRACER ideal-int pkg syscall (linux-386), const PR_SET_SECCOMP ideal-int pkg syscall (linux-386), const PR_SET_SECUREBITS ideal-int pkg syscall (linux-386), const PR_SET_TIMERSLACK ideal-int pkg syscall (linux-386), const PR_SET_TIMING ideal-int pkg syscall (linux-386), const PR_SET_TSC ideal-int pkg syscall (linux-386), const PR_SET_UNALIGN ideal-int pkg syscall (linux-386), const PR_TASK_PERF_EVENTS_DISABLE ideal-int pkg syscall (linux-386), const PR_TASK_PERF_EVENTS_ENABLE ideal-int pkg syscall (linux-386), const PR_TIMING_STATISTICAL ideal-int pkg syscall (linux-386), const PR_TIMING_TIMESTAMP ideal-int pkg syscall (linux-386), const PR_TSC_ENABLE ideal-int pkg syscall (linux-386), const PR_TSC_SIGSEGV ideal-int pkg syscall (linux-386), const PR_UNALIGN_NOPRINT ideal-int pkg syscall (linux-386), const PR_UNALIGN_SIGBUS ideal-int pkg syscall (linux-386), const PTRACE_ATTACH ideal-int pkg syscall (linux-386), const PTRACE_CONT ideal-int pkg syscall (linux-386), const PTRACE_DETACH ideal-int pkg syscall (linux-386), const PTRACE_EVENT_CLONE ideal-int pkg syscall (linux-386), const PTRACE_EVENT_EXEC ideal-int pkg syscall (linux-386), const PTRACE_EVENT_EXIT ideal-int pkg syscall (linux-386), const PTRACE_EVENT_FORK ideal-int pkg syscall (linux-386), const PTRACE_EVENT_VFORK ideal-int pkg syscall (linux-386), const PTRACE_EVENT_VFORK_DONE ideal-int pkg syscall (linux-386), const PTRACE_GETEVENTMSG ideal-int pkg syscall (linux-386), const PTRACE_GETFPREGS ideal-int pkg syscall (linux-386), const PTRACE_GETFPXREGS ideal-int pkg syscall (linux-386), const PTRACE_GETREGS ideal-int pkg syscall (linux-386), const PTRACE_GETREGSET ideal-int pkg syscall (linux-386), const PTRACE_GETSIGINFO ideal-int pkg syscall (linux-386), const PTRACE_GET_THREAD_AREA ideal-int pkg syscall (linux-386), const PTRACE_KILL ideal-int pkg syscall (linux-386), const PTRACE_OLDSETOPTIONS ideal-int pkg syscall (linux-386), const PTRACE_O_MASK ideal-int pkg syscall (linux-386), const PTRACE_O_TRACECLONE ideal-int pkg syscall (linux-386), const PTRACE_O_TRACEEXEC ideal-int pkg syscall (linux-386), const PTRACE_O_TRACEEXIT ideal-int pkg syscall (linux-386), const PTRACE_O_TRACEFORK ideal-int pkg syscall (linux-386), const PTRACE_O_TRACESYSGOOD ideal-int pkg syscall (linux-386), const PTRACE_O_TRACEVFORK ideal-int pkg syscall (linux-386), const PTRACE_O_TRACEVFORKDONE ideal-int pkg syscall (linux-386), const PTRACE_PEEKDATA ideal-int pkg syscall (linux-386), const PTRACE_PEEKTEXT ideal-int pkg syscall (linux-386), const PTRACE_PEEKUSR ideal-int pkg syscall (linux-386), const PTRACE_POKEDATA ideal-int pkg syscall (linux-386), const PTRACE_POKETEXT ideal-int pkg syscall (linux-386), const PTRACE_POKEUSR ideal-int pkg syscall (linux-386), const PTRACE_SETFPREGS ideal-int pkg syscall (linux-386), const PTRACE_SETFPXREGS ideal-int pkg syscall (linux-386), const PTRACE_SETOPTIONS ideal-int pkg syscall (linux-386), const PTRACE_SETREGS ideal-int pkg syscall (linux-386), const PTRACE_SETREGSET ideal-int pkg syscall (linux-386), const PTRACE_SETSIGINFO ideal-int pkg syscall (linux-386), const PTRACE_SET_THREAD_AREA ideal-int pkg syscall (linux-386), const PTRACE_SINGLEBLOCK ideal-int pkg syscall (linux-386), const PTRACE_SINGLESTEP ideal-int pkg syscall (linux-386), const PTRACE_SYSCALL ideal-int pkg syscall (linux-386), const PTRACE_SYSEMU ideal-int pkg syscall (linux-386), const PTRACE_SYSEMU_SINGLESTEP ideal-int pkg syscall (linux-386), const PTRACE_TRACEME ideal-int pkg syscall (linux-386), const PathMax ideal-int pkg syscall (linux-386), const RLIMIT_AS ideal-int pkg syscall (linux-386), const RLIMIT_CORE ideal-int pkg syscall (linux-386), const RLIMIT_CPU ideal-int pkg syscall (linux-386), const RLIMIT_DATA ideal-int pkg syscall (linux-386), const RLIMIT_FSIZE ideal-int pkg syscall (linux-386), const RLIMIT_NOFILE ideal-int pkg syscall (linux-386), const RLIMIT_STACK ideal-int pkg syscall (linux-386), const RLIM_INFINITY ideal-int pkg syscall (linux-386), const RTAX_ADVMSS ideal-int pkg syscall (linux-386), const RTAX_CWND ideal-int pkg syscall (linux-386), const RTAX_FEATURES ideal-int pkg syscall (linux-386), const RTAX_FEATURE_ALLFRAG ideal-int pkg syscall (linux-386), const RTAX_FEATURE_ECN ideal-int pkg syscall (linux-386), const RTAX_FEATURE_SACK ideal-int pkg syscall (linux-386), const RTAX_FEATURE_TIMESTAMP ideal-int pkg syscall (linux-386), const RTAX_HOPLIMIT ideal-int pkg syscall (linux-386), const RTAX_INITCWND ideal-int pkg syscall (linux-386), const RTAX_INITRWND ideal-int pkg syscall (linux-386), const RTAX_LOCK ideal-int pkg syscall (linux-386), const RTAX_MAX ideal-int pkg syscall (linux-386), const RTAX_MTU ideal-int pkg syscall (linux-386), const RTAX_REORDERING ideal-int pkg syscall (linux-386), const RTAX_RTO_MIN ideal-int pkg syscall (linux-386), const RTAX_RTT ideal-int pkg syscall (linux-386), const RTAX_RTTVAR ideal-int pkg syscall (linux-386), const RTAX_SSTHRESH ideal-int pkg syscall (linux-386), const RTAX_UNSPEC ideal-int pkg syscall (linux-386), const RTAX_WINDOW ideal-int pkg syscall (linux-386), const RTA_ALIGNTO ideal-int pkg syscall (linux-386), const RTA_CACHEINFO ideal-int pkg syscall (linux-386), const RTA_DST ideal-int pkg syscall (linux-386), const RTA_FLOW ideal-int pkg syscall (linux-386), const RTA_GATEWAY ideal-int pkg syscall (linux-386), const RTA_IIF ideal-int pkg syscall (linux-386), const RTA_MAX ideal-int pkg syscall (linux-386), const RTA_METRICS ideal-int pkg syscall (linux-386), const RTA_MULTIPATH ideal-int pkg syscall (linux-386), const RTA_OIF ideal-int pkg syscall (linux-386), const RTA_PREFSRC ideal-int pkg syscall (linux-386), const RTA_PRIORITY ideal-int pkg syscall (linux-386), const RTA_SRC ideal-int pkg syscall (linux-386), const RTA_TABLE ideal-int pkg syscall (linux-386), const RTA_UNSPEC ideal-int pkg syscall (linux-386), const RTCF_DIRECTSRC ideal-int pkg syscall (linux-386), const RTCF_DOREDIRECT ideal-int pkg syscall (linux-386), const RTCF_LOG ideal-int pkg syscall (linux-386), const RTCF_MASQ ideal-int pkg syscall (linux-386), const RTCF_NAT ideal-int pkg syscall (linux-386), const RTCF_VALVE ideal-int pkg syscall (linux-386), const RTF_ADDRCLASSMASK ideal-int pkg syscall (linux-386), const RTF_ADDRCONF ideal-int pkg syscall (linux-386), const RTF_ALLONLINK ideal-int pkg syscall (linux-386), const RTF_BROADCAST ideal-int pkg syscall (linux-386), const RTF_CACHE ideal-int pkg syscall (linux-386), const RTF_DEFAULT ideal-int pkg syscall (linux-386), const RTF_DYNAMIC ideal-int pkg syscall (linux-386), const RTF_FLOW ideal-int pkg syscall (linux-386), const RTF_GATEWAY ideal-int pkg syscall (linux-386), const RTF_HOST ideal-int pkg syscall (linux-386), const RTF_INTERFACE ideal-int pkg syscall (linux-386), const RTF_IRTT ideal-int pkg syscall (linux-386), const RTF_LINKRT ideal-int pkg syscall (linux-386), const RTF_LOCAL ideal-int pkg syscall (linux-386), const RTF_MODIFIED ideal-int pkg syscall (linux-386), const RTF_MSS ideal-int pkg syscall (linux-386), const RTF_MTU ideal-int pkg syscall (linux-386), const RTF_MULTICAST ideal-int pkg syscall (linux-386), const RTF_NAT ideal-int pkg syscall (linux-386), const RTF_NOFORWARD ideal-int pkg syscall (linux-386), const RTF_NONEXTHOP ideal-int pkg syscall (linux-386), const RTF_NOPMTUDISC ideal-int pkg syscall (linux-386), const RTF_POLICY ideal-int pkg syscall (linux-386), const RTF_REINSTATE ideal-int pkg syscall (linux-386), const RTF_REJECT ideal-int pkg syscall (linux-386), const RTF_STATIC ideal-int pkg syscall (linux-386), const RTF_THROW ideal-int pkg syscall (linux-386), const RTF_UP ideal-int pkg syscall (linux-386), const RTF_WINDOW ideal-int pkg syscall (linux-386), const RTF_XRESOLVE ideal-int pkg syscall (linux-386), const RTM_BASE ideal-int pkg syscall (linux-386), const RTM_DELACTION ideal-int pkg syscall (linux-386), const RTM_DELADDR ideal-int pkg syscall (linux-386), const RTM_DELADDRLABEL ideal-int pkg syscall (linux-386), const RTM_DELLINK ideal-int pkg syscall (linux-386), const RTM_DELNEIGH ideal-int pkg syscall (linux-386), const RTM_DELQDISC ideal-int pkg syscall (linux-386), const RTM_DELROUTE ideal-int pkg syscall (linux-386), const RTM_DELRULE ideal-int pkg syscall (linux-386), const RTM_DELTCLASS ideal-int pkg syscall (linux-386), const RTM_DELTFILTER ideal-int pkg syscall (linux-386), const RTM_F_CLONED ideal-int pkg syscall (linux-386), const RTM_F_EQUALIZE ideal-int pkg syscall (linux-386), const RTM_F_NOTIFY ideal-int pkg syscall (linux-386), const RTM_F_PREFIX ideal-int pkg syscall (linux-386), const RTM_GETACTION ideal-int pkg syscall (linux-386), const RTM_GETADDR ideal-int pkg syscall (linux-386), const RTM_GETADDRLABEL ideal-int pkg syscall (linux-386), const RTM_GETANYCAST ideal-int pkg syscall (linux-386), const RTM_GETDCB ideal-int pkg syscall (linux-386), const RTM_GETLINK ideal-int pkg syscall (linux-386), const RTM_GETMULTICAST ideal-int pkg syscall (linux-386), const RTM_GETNEIGH ideal-int pkg syscall (linux-386), const RTM_GETNEIGHTBL ideal-int pkg syscall (linux-386), const RTM_GETQDISC ideal-int pkg syscall (linux-386), const RTM_GETROUTE ideal-int pkg syscall (linux-386), const RTM_GETRULE ideal-int pkg syscall (linux-386), const RTM_GETTCLASS ideal-int pkg syscall (linux-386), const RTM_GETTFILTER ideal-int pkg syscall (linux-386), const RTM_MAX ideal-int pkg syscall (linux-386), const RTM_NEWACTION ideal-int pkg syscall (linux-386), const RTM_NEWADDR ideal-int pkg syscall (linux-386), const RTM_NEWADDRLABEL ideal-int pkg syscall (linux-386), const RTM_NEWLINK ideal-int pkg syscall (linux-386), const RTM_NEWNDUSEROPT ideal-int pkg syscall (linux-386), const RTM_NEWNEIGH ideal-int pkg syscall (linux-386), const RTM_NEWNEIGHTBL ideal-int pkg syscall (linux-386), const RTM_NEWPREFIX ideal-int pkg syscall (linux-386), const RTM_NEWQDISC ideal-int pkg syscall (linux-386), const RTM_NEWROUTE ideal-int pkg syscall (linux-386), const RTM_NEWRULE ideal-int pkg syscall (linux-386), const RTM_NEWTCLASS ideal-int pkg syscall (linux-386), const RTM_NEWTFILTER ideal-int pkg syscall (linux-386), const RTM_NR_FAMILIES ideal-int pkg syscall (linux-386), const RTM_NR_MSGTYPES ideal-int pkg syscall (linux-386), const RTM_SETDCB ideal-int pkg syscall (linux-386), const RTM_SETLINK ideal-int pkg syscall (linux-386), const RTM_SETNEIGHTBL ideal-int pkg syscall (linux-386), const RTNH_ALIGNTO ideal-int pkg syscall (linux-386), const RTNH_F_DEAD ideal-int pkg syscall (linux-386), const RTNH_F_ONLINK ideal-int pkg syscall (linux-386), const RTNH_F_PERVASIVE ideal-int pkg syscall (linux-386), const RTN_ANYCAST ideal-int pkg syscall (linux-386), const RTN_BLACKHOLE ideal-int pkg syscall (linux-386), const RTN_BROADCAST ideal-int pkg syscall (linux-386), const RTN_LOCAL ideal-int pkg syscall (linux-386), const RTN_MAX ideal-int pkg syscall (linux-386), const RTN_MULTICAST ideal-int pkg syscall (linux-386), const RTN_NAT ideal-int pkg syscall (linux-386), const RTN_PROHIBIT ideal-int pkg syscall (linux-386), const RTN_THROW ideal-int pkg syscall (linux-386), const RTN_UNICAST ideal-int pkg syscall (linux-386), const RTN_UNREACHABLE ideal-int pkg syscall (linux-386), const RTN_UNSPEC ideal-int pkg syscall (linux-386), const RTN_XRESOLVE ideal-int pkg syscall (linux-386), const RTPROT_BIRD ideal-int pkg syscall (linux-386), const RTPROT_BOOT ideal-int pkg syscall (linux-386), const RTPROT_DHCP ideal-int pkg syscall (linux-386), const RTPROT_DNROUTED ideal-int pkg syscall (linux-386), const RTPROT_GATED ideal-int pkg syscall (linux-386), const RTPROT_KERNEL ideal-int pkg syscall (linux-386), const RTPROT_MRT ideal-int pkg syscall (linux-386), const RTPROT_NTK ideal-int pkg syscall (linux-386), const RTPROT_RA ideal-int pkg syscall (linux-386), const RTPROT_REDIRECT ideal-int pkg syscall (linux-386), const RTPROT_STATIC ideal-int pkg syscall (linux-386), const RTPROT_UNSPEC ideal-int pkg syscall (linux-386), const RTPROT_XORP ideal-int pkg syscall (linux-386), const RTPROT_ZEBRA ideal-int pkg syscall (linux-386), const RT_CLASS_DEFAULT ideal-int pkg syscall (linux-386), const RT_CLASS_LOCAL ideal-int pkg syscall (linux-386), const RT_CLASS_MAIN ideal-int pkg syscall (linux-386), const RT_CLASS_MAX ideal-int pkg syscall (linux-386), const RT_CLASS_UNSPEC ideal-int pkg syscall (linux-386), const RT_SCOPE_HOST ideal-int pkg syscall (linux-386), const RT_SCOPE_LINK ideal-int pkg syscall (linux-386), const RT_SCOPE_NOWHERE ideal-int pkg syscall (linux-386), const RT_SCOPE_SITE ideal-int pkg syscall (linux-386), const RT_SCOPE_UNIVERSE ideal-int pkg syscall (linux-386), const RT_TABLE_COMPAT ideal-int pkg syscall (linux-386), const RT_TABLE_DEFAULT ideal-int pkg syscall (linux-386), const RT_TABLE_LOCAL ideal-int pkg syscall (linux-386), const RT_TABLE_MAIN ideal-int pkg syscall (linux-386), const RT_TABLE_MAX ideal-int pkg syscall (linux-386), const RT_TABLE_UNSPEC ideal-int pkg syscall (linux-386), const RUSAGE_CHILDREN ideal-int pkg syscall (linux-386), const RUSAGE_SELF ideal-int pkg syscall (linux-386), const RUSAGE_THREAD ideal-int pkg syscall (linux-386), const SCM_CREDENTIALS ideal-int pkg syscall (linux-386), const SCM_RIGHTS ideal-int pkg syscall (linux-386), const SCM_TIMESTAMP ideal-int pkg syscall (linux-386), const SCM_TIMESTAMPING ideal-int pkg syscall (linux-386), const SCM_TIMESTAMPNS ideal-int pkg syscall (linux-386), const SIGCHLD Signal pkg syscall (linux-386), const SIGCLD Signal pkg syscall (linux-386), const SIGCONT Signal pkg syscall (linux-386), const SIGIO Signal pkg syscall (linux-386), const SIGIOT Signal pkg syscall (linux-386), const SIGPOLL Signal pkg syscall (linux-386), const SIGPROF Signal pkg syscall (linux-386), const SIGPWR Signal pkg syscall (linux-386), const SIGSTKFLT Signal pkg syscall (linux-386), const SIGSTOP Signal pkg syscall (linux-386), const SIGSYS Signal pkg syscall (linux-386), const SIGTSTP Signal pkg syscall (linux-386), const SIGTTIN Signal pkg syscall (linux-386), const SIGTTOU Signal pkg syscall (linux-386), const SIGUNUSED Signal pkg syscall (linux-386), const SIGURG Signal pkg syscall (linux-386), const SIGUSR1 Signal pkg syscall (linux-386), const SIGUSR2 Signal pkg syscall (linux-386), const SIGVTALRM Signal pkg syscall (linux-386), const SIGWINCH Signal pkg syscall (linux-386), const SIGXCPU Signal pkg syscall (linux-386), const SIGXFSZ Signal pkg syscall (linux-386), const SIOCADDDLCI ideal-int pkg syscall (linux-386), const SIOCADDMULTI ideal-int pkg syscall (linux-386), const SIOCADDRT ideal-int pkg syscall (linux-386), const SIOCATMARK ideal-int pkg syscall (linux-386), const SIOCDARP ideal-int pkg syscall (linux-386), const SIOCDELDLCI ideal-int pkg syscall (linux-386), const SIOCDELMULTI ideal-int pkg syscall (linux-386), const SIOCDELRT ideal-int pkg syscall (linux-386), const SIOCDEVPRIVATE ideal-int pkg syscall (linux-386), const SIOCDIFADDR ideal-int pkg syscall (linux-386), const SIOCDRARP ideal-int pkg syscall (linux-386), const SIOCGARP ideal-int pkg syscall (linux-386), const SIOCGIFADDR ideal-int pkg syscall (linux-386), const SIOCGIFBR ideal-int pkg syscall (linux-386), const SIOCGIFBRDADDR ideal-int pkg syscall (linux-386), const SIOCGIFCONF ideal-int pkg syscall (linux-386), const SIOCGIFCOUNT ideal-int pkg syscall (linux-386), const SIOCGIFDSTADDR ideal-int pkg syscall (linux-386), const SIOCGIFENCAP ideal-int pkg syscall (linux-386), const SIOCGIFFLAGS ideal-int pkg syscall (linux-386), const SIOCGIFHWADDR ideal-int pkg syscall (linux-386), const SIOCGIFINDEX ideal-int pkg syscall (linux-386), const SIOCGIFMAP ideal-int pkg syscall (linux-386), const SIOCGIFMEM ideal-int pkg syscall (linux-386), const SIOCGIFMETRIC ideal-int pkg syscall (linux-386), const SIOCGIFMTU ideal-int pkg syscall (linux-386), const SIOCGIFNAME ideal-int pkg syscall (linux-386), const SIOCGIFNETMASK ideal-int pkg syscall (linux-386), const SIOCGIFPFLAGS ideal-int pkg syscall (linux-386), const SIOCGIFSLAVE ideal-int pkg syscall (linux-386), const SIOCGIFTXQLEN ideal-int pkg syscall (linux-386), const SIOCGPGRP ideal-int pkg syscall (linux-386), const SIOCGRARP ideal-int pkg syscall (linux-386), const SIOCGSTAMP ideal-int pkg syscall (linux-386), const SIOCGSTAMPNS ideal-int pkg syscall (linux-386), const SIOCPROTOPRIVATE ideal-int pkg syscall (linux-386), const SIOCRTMSG ideal-int pkg syscall (linux-386), const SIOCSARP ideal-int pkg syscall (linux-386), const SIOCSIFADDR ideal-int pkg syscall (linux-386), const SIOCSIFBR ideal-int pkg syscall (linux-386), const SIOCSIFBRDADDR ideal-int pkg syscall (linux-386), const SIOCSIFDSTADDR ideal-int pkg syscall (linux-386), const SIOCSIFENCAP ideal-int pkg syscall (linux-386), const SIOCSIFFLAGS ideal-int pkg syscall (linux-386), const SIOCSIFHWADDR ideal-int pkg syscall (linux-386), const SIOCSIFHWBROADCAST ideal-int pkg syscall (linux-386), const SIOCSIFLINK ideal-int pkg syscall (linux-386), const SIOCSIFMAP ideal-int pkg syscall (linux-386), const SIOCSIFMEM ideal-int pkg syscall (linux-386), const SIOCSIFMETRIC ideal-int pkg syscall (linux-386), const SIOCSIFMTU ideal-int pkg syscall (linux-386), const SIOCSIFNAME ideal-int pkg syscall (linux-386), const SIOCSIFNETMASK ideal-int pkg syscall (linux-386), const SIOCSIFPFLAGS ideal-int pkg syscall (linux-386), const SIOCSIFSLAVE ideal-int pkg syscall (linux-386), const SIOCSIFTXQLEN ideal-int pkg syscall (linux-386), const SIOCSPGRP ideal-int pkg syscall (linux-386), const SIOCSRARP ideal-int pkg syscall (linux-386), const SOCK_CLOEXEC ideal-int pkg syscall (linux-386), const SOCK_DCCP ideal-int pkg syscall (linux-386), const SOCK_NONBLOCK ideal-int pkg syscall (linux-386), const SOCK_PACKET ideal-int pkg syscall (linux-386), const SOCK_RDM ideal-int pkg syscall (linux-386), const SOL_AAL ideal-int pkg syscall (linux-386), const SOL_ATM ideal-int pkg syscall (linux-386), const SOL_DECNET ideal-int pkg syscall (linux-386), const SOL_ICMPV6 ideal-int pkg syscall (linux-386), const SOL_IP ideal-int pkg syscall (linux-386), const SOL_IPV6 ideal-int pkg syscall (linux-386), const SOL_IRDA ideal-int pkg syscall (linux-386), const SOL_PACKET ideal-int pkg syscall (linux-386), const SOL_RAW ideal-int pkg syscall (linux-386), const SOL_TCP ideal-int pkg syscall (linux-386), const SOL_X25 ideal-int pkg syscall (linux-386), const SO_ACCEPTCONN ideal-int pkg syscall (linux-386), const SO_ATTACH_FILTER ideal-int pkg syscall (linux-386), const SO_BINDTODEVICE ideal-int pkg syscall (linux-386), const SO_BSDCOMPAT ideal-int pkg syscall (linux-386), const SO_DEBUG ideal-int pkg syscall (linux-386), const SO_DETACH_FILTER ideal-int pkg syscall (linux-386), const SO_DOMAIN ideal-int pkg syscall (linux-386), const SO_ERROR ideal-int pkg syscall (linux-386), const SO_MARK ideal-int pkg syscall (linux-386), const SO_NO_CHECK ideal-int pkg syscall (linux-386), const SO_OOBINLINE ideal-int pkg syscall (linux-386), const SO_PASSCRED ideal-int pkg syscall (linux-386), const SO_PASSSEC ideal-int pkg syscall (linux-386), const SO_PEERCRED ideal-int pkg syscall (linux-386), const SO_PEERNAME ideal-int pkg syscall (linux-386), const SO_PEERSEC ideal-int pkg syscall (linux-386), const SO_PRIORITY ideal-int pkg syscall (linux-386), const SO_PROTOCOL ideal-int pkg syscall (linux-386), const SO_RCVBUFFORCE ideal-int pkg syscall (linux-386), const SO_RCVLOWAT ideal-int pkg syscall (linux-386), const SO_RCVTIMEO ideal-int pkg syscall (linux-386), const SO_RXQ_OVFL ideal-int pkg syscall (linux-386), const SO_SECURITY_AUTHENTICATION ideal-int pkg syscall (linux-386), const SO_SECURITY_ENCRYPTION_NETWORK ideal-int pkg syscall (linux-386), const SO_SECURITY_ENCRYPTION_TRANSPORT ideal-int pkg syscall (linux-386), const SO_SNDBUFFORCE ideal-int pkg syscall (linux-386), const SO_SNDLOWAT ideal-int pkg syscall (linux-386), const SO_SNDTIMEO ideal-int pkg syscall (linux-386), const SO_TIMESTAMP ideal-int pkg syscall (linux-386), const SO_TIMESTAMPING ideal-int pkg syscall (linux-386), const SO_TIMESTAMPNS ideal-int pkg syscall (linux-386), const SO_TYPE ideal-int pkg syscall (linux-386), const SYS_ACCESS ideal-int pkg syscall (linux-386), const SYS_ACCT ideal-int pkg syscall (linux-386), const SYS_ADD_KEY ideal-int pkg syscall (linux-386), const SYS_ADJTIMEX ideal-int pkg syscall (linux-386), const SYS_AFS_SYSCALL ideal-int pkg syscall (linux-386), const SYS_ALARM ideal-int pkg syscall (linux-386), const SYS_BDFLUSH ideal-int pkg syscall (linux-386), const SYS_BREAK ideal-int pkg syscall (linux-386), const SYS_BRK ideal-int pkg syscall (linux-386), const SYS_CAPGET ideal-int pkg syscall (linux-386), const SYS_CAPSET ideal-int pkg syscall (linux-386), const SYS_CHDIR ideal-int pkg syscall (linux-386), const SYS_CHMOD ideal-int pkg syscall (linux-386), const SYS_CHOWN ideal-int pkg syscall (linux-386), const SYS_CHOWN32 ideal-int pkg syscall (linux-386), const SYS_CHROOT ideal-int pkg syscall (linux-386), const SYS_CLOCK_GETRES ideal-int pkg syscall (linux-386), const SYS_CLOCK_GETTIME ideal-int pkg syscall (linux-386), const SYS_CLOCK_NANOSLEEP ideal-int pkg syscall (linux-386), const SYS_CLOCK_SETTIME ideal-int pkg syscall (linux-386), const SYS_CLONE ideal-int pkg syscall (linux-386), const SYS_CLOSE ideal-int pkg syscall (linux-386), const SYS_CREAT ideal-int pkg syscall (linux-386), const SYS_CREATE_MODULE ideal-int pkg syscall (linux-386), const SYS_DELETE_MODULE ideal-int pkg syscall (linux-386), const SYS_DUP ideal-int pkg syscall (linux-386), const SYS_DUP2 ideal-int pkg syscall (linux-386), const SYS_DUP3 ideal-int pkg syscall (linux-386), const SYS_EPOLL_CREATE ideal-int pkg syscall (linux-386), const SYS_EPOLL_CREATE1 ideal-int pkg syscall (linux-386), const SYS_EPOLL_CTL ideal-int pkg syscall (linux-386), const SYS_EPOLL_PWAIT ideal-int pkg syscall (linux-386), const SYS_EPOLL_WAIT ideal-int pkg syscall (linux-386), const SYS_EVENTFD ideal-int pkg syscall (linux-386), const SYS_EVENTFD2 ideal-int pkg syscall (linux-386), const SYS_EXECVE ideal-int pkg syscall (linux-386), const SYS_EXIT ideal-int pkg syscall (linux-386), const SYS_EXIT_GROUP ideal-int pkg syscall (linux-386), const SYS_FACCESSAT ideal-int pkg syscall (linux-386), const SYS_FADVISE64 ideal-int pkg syscall (linux-386), const SYS_FADVISE64_64 ideal-int pkg syscall (linux-386), const SYS_FALLOCATE ideal-int pkg syscall (linux-386), const SYS_FANOTIFY_INIT ideal-int pkg syscall (linux-386), const SYS_FANOTIFY_MARK ideal-int pkg syscall (linux-386), const SYS_FCHDIR ideal-int pkg syscall (linux-386), const SYS_FCHMOD ideal-int pkg syscall (linux-386), const SYS_FCHMODAT ideal-int pkg syscall (linux-386), const SYS_FCHOWN ideal-int pkg syscall (linux-386), const SYS_FCHOWN32 ideal-int pkg syscall (linux-386), const SYS_FCHOWNAT ideal-int pkg syscall (linux-386), const SYS_FCNTL ideal-int pkg syscall (linux-386), const SYS_FCNTL64 ideal-int pkg syscall (linux-386), const SYS_FDATASYNC ideal-int pkg syscall (linux-386), const SYS_FGETXATTR ideal-int pkg syscall (linux-386), const SYS_FLISTXATTR ideal-int pkg syscall (linux-386), const SYS_FLOCK ideal-int pkg syscall (linux-386), const SYS_FORK ideal-int pkg syscall (linux-386), const SYS_FREMOVEXATTR ideal-int pkg syscall (linux-386), const SYS_FSETXATTR ideal-int pkg syscall (linux-386), const SYS_FSTAT ideal-int pkg syscall (linux-386), const SYS_FSTAT64 ideal-int pkg syscall (linux-386), const SYS_FSTATAT64 ideal-int pkg syscall (linux-386), const SYS_FSTATFS ideal-int pkg syscall (linux-386), const SYS_FSTATFS64 ideal-int pkg syscall (linux-386), const SYS_FSYNC ideal-int pkg syscall (linux-386), const SYS_FTIME ideal-int pkg syscall (linux-386), const SYS_FTRUNCATE ideal-int pkg syscall (linux-386), const SYS_FTRUNCATE64 ideal-int pkg syscall (linux-386), const SYS_FUTEX ideal-int pkg syscall (linux-386), const SYS_FUTIMESAT ideal-int pkg syscall (linux-386), const SYS_GETCPU ideal-int pkg syscall (linux-386), const SYS_GETCWD ideal-int pkg syscall (linux-386), const SYS_GETDENTS ideal-int pkg syscall (linux-386), const SYS_GETDENTS64 ideal-int pkg syscall (linux-386), const SYS_GETEGID ideal-int pkg syscall (linux-386), const SYS_GETEGID32 ideal-int pkg syscall (linux-386), const SYS_GETEUID ideal-int pkg syscall (linux-386), const SYS_GETEUID32 ideal-int pkg syscall (linux-386), const SYS_GETGID ideal-int pkg syscall (linux-386), const SYS_GETGID32 ideal-int pkg syscall (linux-386), const SYS_GETGROUPS ideal-int pkg syscall (linux-386), const SYS_GETGROUPS32 ideal-int pkg syscall (linux-386), const SYS_GETITIMER ideal-int pkg syscall (linux-386), const SYS_GETPGID ideal-int pkg syscall (linux-386), const SYS_GETPGRP ideal-int pkg syscall (linux-386), const SYS_GETPID ideal-int pkg syscall (linux-386), const SYS_GETPMSG ideal-int pkg syscall (linux-386), const SYS_GETPPID ideal-int pkg syscall (linux-386), const SYS_GETPRIORITY ideal-int pkg syscall (linux-386), const SYS_GETRESGID ideal-int pkg syscall (linux-386), const SYS_GETRESGID32 ideal-int pkg syscall (linux-386), const SYS_GETRESUID ideal-int pkg syscall (linux-386), const SYS_GETRESUID32 ideal-int pkg syscall (linux-386), const SYS_GETRLIMIT ideal-int pkg syscall (linux-386), const SYS_GETRUSAGE ideal-int pkg syscall (linux-386), const SYS_GETSID ideal-int pkg syscall (linux-386), const SYS_GETTID ideal-int pkg syscall (linux-386), const SYS_GETTIMEOFDAY ideal-int pkg syscall (linux-386), const SYS_GETUID ideal-int pkg syscall (linux-386), const SYS_GETUID32 ideal-int pkg syscall (linux-386), const SYS_GETXATTR ideal-int pkg syscall (linux-386), const SYS_GET_KERNEL_SYMS ideal-int pkg syscall (linux-386), const SYS_GET_MEMPOLICY ideal-int pkg syscall (linux-386), const SYS_GET_ROBUST_LIST ideal-int pkg syscall (linux-386), const SYS_GET_THREAD_AREA ideal-int pkg syscall (linux-386), const SYS_GTTY ideal-int pkg syscall (linux-386), const SYS_IDLE ideal-int pkg syscall (linux-386), const SYS_INIT_MODULE ideal-int pkg syscall (linux-386), const SYS_INOTIFY_ADD_WATCH ideal-int pkg syscall (linux-386), const SYS_INOTIFY_INIT ideal-int pkg syscall (linux-386), const SYS_INOTIFY_INIT1 ideal-int pkg syscall (linux-386), const SYS_INOTIFY_RM_WATCH ideal-int pkg syscall (linux-386), const SYS_IOCTL ideal-int pkg syscall (linux-386), const SYS_IOPERM ideal-int pkg syscall (linux-386), const SYS_IOPL ideal-int pkg syscall (linux-386), const SYS_IOPRIO_GET ideal-int pkg syscall (linux-386), const SYS_IOPRIO_SET ideal-int pkg syscall (linux-386), const SYS_IO_CANCEL ideal-int pkg syscall (linux-386), const SYS_IO_DESTROY ideal-int pkg syscall (linux-386), const SYS_IO_GETEVENTS ideal-int pkg syscall (linux-386), const SYS_IO_SETUP ideal-int pkg syscall (linux-386), const SYS_IO_SUBMIT ideal-int pkg syscall (linux-386), const SYS_IPC ideal-int pkg syscall (linux-386), const SYS_KEXEC_LOAD ideal-int pkg syscall (linux-386), const SYS_KEYCTL ideal-int pkg syscall (linux-386), const SYS_KILL ideal-int pkg syscall (linux-386), const SYS_LCHOWN ideal-int pkg syscall (linux-386), const SYS_LCHOWN32 ideal-int pkg syscall (linux-386), const SYS_LGETXATTR ideal-int pkg syscall (linux-386), const SYS_LINK ideal-int pkg syscall (linux-386), const SYS_LINKAT ideal-int pkg syscall (linux-386), const SYS_LISTXATTR ideal-int pkg syscall (linux-386), const SYS_LLISTXATTR ideal-int pkg syscall (linux-386), const SYS_LOCK ideal-int pkg syscall (linux-386), const SYS_LOOKUP_DCOOKIE ideal-int pkg syscall (linux-386), const SYS_LREMOVEXATTR ideal-int pkg syscall (linux-386), const SYS_LSEEK ideal-int pkg syscall (linux-386), const SYS_LSETXATTR ideal-int pkg syscall (linux-386), const SYS_LSTAT ideal-int pkg syscall (linux-386), const SYS_LSTAT64 ideal-int pkg syscall (linux-386), const SYS_MADVISE ideal-int pkg syscall (linux-386), const SYS_MADVISE1 ideal-int pkg syscall (linux-386), const SYS_MBIND ideal-int pkg syscall (linux-386), const SYS_MIGRATE_PAGES ideal-int pkg syscall (linux-386), const SYS_MINCORE ideal-int pkg syscall (linux-386), const SYS_MKDIR ideal-int pkg syscall (linux-386), const SYS_MKDIRAT ideal-int pkg syscall (linux-386), const SYS_MKNOD ideal-int pkg syscall (linux-386), const SYS_MKNODAT ideal-int pkg syscall (linux-386), const SYS_MLOCK ideal-int pkg syscall (linux-386), const SYS_MLOCKALL ideal-int pkg syscall (linux-386), const SYS_MMAP ideal-int pkg syscall (linux-386), const SYS_MMAP2 ideal-int pkg syscall (linux-386), const SYS_MODIFY_LDT ideal-int pkg syscall (linux-386), const SYS_MOUNT ideal-int pkg syscall (linux-386), const SYS_MOVE_PAGES ideal-int pkg syscall (linux-386), const SYS_MPROTECT ideal-int pkg syscall (linux-386), const SYS_MPX ideal-int pkg syscall (linux-386), const SYS_MQ_GETSETATTR ideal-int pkg syscall (linux-386), const SYS_MQ_NOTIFY ideal-int pkg syscall (linux-386), const SYS_MQ_OPEN ideal-int pkg syscall (linux-386), const SYS_MQ_TIMEDRECEIVE ideal-int pkg syscall (linux-386), const SYS_MQ_TIMEDSEND ideal-int pkg syscall (linux-386), const SYS_MQ_UNLINK ideal-int pkg syscall (linux-386), const SYS_MREMAP ideal-int pkg syscall (linux-386), const SYS_MSYNC ideal-int pkg syscall (linux-386), const SYS_MUNLOCK ideal-int pkg syscall (linux-386), const SYS_MUNLOCKALL ideal-int pkg syscall (linux-386), const SYS_MUNMAP ideal-int pkg syscall (linux-386), const SYS_NANOSLEEP ideal-int pkg syscall (linux-386), const SYS_NFSSERVCTL ideal-int pkg syscall (linux-386), const SYS_NICE ideal-int pkg syscall (linux-386), const SYS_OLDFSTAT ideal-int pkg syscall (linux-386), const SYS_OLDLSTAT ideal-int pkg syscall (linux-386), const SYS_OLDOLDUNAME ideal-int pkg syscall (linux-386), const SYS_OLDSTAT ideal-int pkg syscall (linux-386), const SYS_OLDUNAME ideal-int pkg syscall (linux-386), const SYS_OPEN ideal-int pkg syscall (linux-386), const SYS_OPENAT ideal-int pkg syscall (linux-386), const SYS_PAUSE ideal-int pkg syscall (linux-386), const SYS_PERF_EVENT_OPEN ideal-int pkg syscall (linux-386), const SYS_PERSONALITY ideal-int pkg syscall (linux-386), const SYS_PIPE ideal-int pkg syscall (linux-386), const SYS_PIPE2 ideal-int pkg syscall (linux-386), const SYS_PIVOT_ROOT ideal-int pkg syscall (linux-386), const SYS_POLL ideal-int pkg syscall (linux-386), const SYS_PPOLL ideal-int pkg syscall (linux-386), const SYS_PRCTL ideal-int pkg syscall (linux-386), const SYS_PREAD64 ideal-int pkg syscall (linux-386), const SYS_PREADV ideal-int pkg syscall (linux-386), const SYS_PRLIMIT64 ideal-int pkg syscall (linux-386), const SYS_PROF ideal-int pkg syscall (linux-386), const SYS_PROFIL ideal-int pkg syscall (linux-386), const SYS_PSELECT6 ideal-int pkg syscall (linux-386), const SYS_PTRACE ideal-int pkg syscall (linux-386), const SYS_PUTPMSG ideal-int pkg syscall (linux-386), const SYS_PWRITE64 ideal-int pkg syscall (linux-386), const SYS_PWRITEV ideal-int pkg syscall (linux-386), const SYS_QUERY_MODULE ideal-int pkg syscall (linux-386), const SYS_QUOTACTL ideal-int pkg syscall (linux-386), const SYS_READ ideal-int pkg syscall (linux-386), const SYS_READAHEAD ideal-int pkg syscall (linux-386), const SYS_READDIR ideal-int pkg syscall (linux-386), const SYS_READLINK ideal-int pkg syscall (linux-386), const SYS_READLINKAT ideal-int pkg syscall (linux-386), const SYS_READV ideal-int pkg syscall (linux-386), const SYS_REBOOT ideal-int pkg syscall (linux-386), const SYS_RECVMMSG ideal-int pkg syscall (linux-386), const SYS_REMAP_FILE_PAGES ideal-int pkg syscall (linux-386), const SYS_REMOVEXATTR ideal-int pkg syscall (linux-386), const SYS_RENAME ideal-int pkg syscall (linux-386), const SYS_RENAMEAT ideal-int pkg syscall (linux-386), const SYS_REQUEST_KEY ideal-int pkg syscall (linux-386), const SYS_RESTART_SYSCALL ideal-int pkg syscall (linux-386), const SYS_RMDIR ideal-int pkg syscall (linux-386), const SYS_RT_SIGACTION ideal-int pkg syscall (linux-386), const SYS_RT_SIGPENDING ideal-int pkg syscall (linux-386), const SYS_RT_SIGPROCMASK ideal-int pkg syscall (linux-386), const SYS_RT_SIGQUEUEINFO ideal-int pkg syscall (linux-386), const SYS_RT_SIGRETURN ideal-int pkg syscall (linux-386), const SYS_RT_SIGSUSPEND ideal-int pkg syscall (linux-386), const SYS_RT_SIGTIMEDWAIT ideal-int pkg syscall (linux-386), const SYS_RT_TGSIGQUEUEINFO ideal-int pkg syscall (linux-386), const SYS_SCHED_GETAFFINITY ideal-int pkg syscall (linux-386), const SYS_SCHED_GETPARAM ideal-int pkg syscall (linux-386), const SYS_SCHED_GETSCHEDULER ideal-int pkg syscall (linux-386), const SYS_SCHED_GET_PRIORITY_MAX ideal-int pkg syscall (linux-386), const SYS_SCHED_GET_PRIORITY_MIN ideal-int pkg syscall (linux-386), const SYS_SCHED_RR_GET_INTERVAL ideal-int pkg syscall (linux-386), const SYS_SCHED_SETAFFINITY ideal-int pkg syscall (linux-386), const SYS_SCHED_SETPARAM ideal-int pkg syscall (linux-386), const SYS_SCHED_SETSCHEDULER ideal-int pkg syscall (linux-386), const SYS_SCHED_YIELD ideal-int pkg syscall (linux-386), const SYS_SELECT ideal-int pkg syscall (linux-386), const SYS_SENDFILE ideal-int pkg syscall (linux-386), const SYS_SENDFILE64 ideal-int pkg syscall (linux-386), const SYS_SETDOMAINNAME ideal-int pkg syscall (linux-386), const SYS_SETFSGID ideal-int pkg syscall (linux-386), const SYS_SETFSGID32 ideal-int pkg syscall (linux-386), const SYS_SETFSUID ideal-int pkg syscall (linux-386), const SYS_SETFSUID32 ideal-int pkg syscall (linux-386), const SYS_SETGID ideal-int pkg syscall (linux-386), const SYS_SETGID32 ideal-int pkg syscall (linux-386), const SYS_SETGROUPS ideal-int pkg syscall (linux-386), const SYS_SETGROUPS32 ideal-int pkg syscall (linux-386), const SYS_SETHOSTNAME ideal-int pkg syscall (linux-386), const SYS_SETITIMER ideal-int pkg syscall (linux-386), const SYS_SETPGID ideal-int pkg syscall (linux-386), const SYS_SETPRIORITY ideal-int pkg syscall (linux-386), const SYS_SETREGID ideal-int pkg syscall (linux-386), const SYS_SETREGID32 ideal-int pkg syscall (linux-386), const SYS_SETRESGID ideal-int pkg syscall (linux-386), const SYS_SETRESGID32 ideal-int pkg syscall (linux-386), const SYS_SETRESUID ideal-int pkg syscall (linux-386), const SYS_SETRESUID32 ideal-int pkg syscall (linux-386), const SYS_SETREUID ideal-int pkg syscall (linux-386), const SYS_SETREUID32 ideal-int pkg syscall (linux-386), const SYS_SETRLIMIT ideal-int pkg syscall (linux-386), const SYS_SETSID ideal-int pkg syscall (linux-386), const SYS_SETTIMEOFDAY ideal-int pkg syscall (linux-386), const SYS_SETUID ideal-int pkg syscall (linux-386), const SYS_SETUID32 ideal-int pkg syscall (linux-386), const SYS_SETXATTR ideal-int pkg syscall (linux-386), const SYS_SET_MEMPOLICY ideal-int pkg syscall (linux-386), const SYS_SET_ROBUST_LIST ideal-int pkg syscall (linux-386), const SYS_SET_THREAD_AREA ideal-int pkg syscall (linux-386), const SYS_SET_TID_ADDRESS ideal-int pkg syscall (linux-386), const SYS_SGETMASK ideal-int pkg syscall (linux-386), const SYS_SIGACTION ideal-int pkg syscall (linux-386), const SYS_SIGALTSTACK ideal-int pkg syscall (linux-386), const SYS_SIGNAL ideal-int pkg syscall (linux-386), const SYS_SIGNALFD ideal-int pkg syscall (linux-386), const SYS_SIGNALFD4 ideal-int pkg syscall (linux-386), const SYS_SIGPENDING ideal-int pkg syscall (linux-386), const SYS_SIGPROCMASK ideal-int pkg syscall (linux-386), const SYS_SIGRETURN ideal-int pkg syscall (linux-386), const SYS_SIGSUSPEND ideal-int pkg syscall (linux-386), const SYS_SOCKETCALL ideal-int pkg syscall (linux-386), const SYS_SPLICE ideal-int pkg syscall (linux-386), const SYS_SSETMASK ideal-int pkg syscall (linux-386), const SYS_STAT ideal-int pkg syscall (linux-386), const SYS_STAT64 ideal-int pkg syscall (linux-386), const SYS_STATFS ideal-int pkg syscall (linux-386), const SYS_STATFS64 ideal-int pkg syscall (linux-386), const SYS_STIME ideal-int pkg syscall (linux-386), const SYS_STTY ideal-int pkg syscall (linux-386), const SYS_SWAPOFF ideal-int pkg syscall (linux-386), const SYS_SWAPON ideal-int pkg syscall (linux-386), const SYS_SYMLINK ideal-int pkg syscall (linux-386), const SYS_SYMLINKAT ideal-int pkg syscall (linux-386), const SYS_SYNC ideal-int pkg syscall (linux-386), const SYS_SYNC_FILE_RANGE ideal-int pkg syscall (linux-386), const SYS_SYSFS ideal-int pkg syscall (linux-386), const SYS_SYSINFO ideal-int pkg syscall (linux-386), const SYS_SYSLOG ideal-int pkg syscall (linux-386), const SYS_TEE ideal-int pkg syscall (linux-386), const SYS_TGKILL ideal-int pkg syscall (linux-386), const SYS_TIME ideal-int pkg syscall (linux-386), const SYS_TIMERFD_CREATE ideal-int pkg syscall (linux-386), const SYS_TIMERFD_GETTIME ideal-int pkg syscall (linux-386), const SYS_TIMERFD_SETTIME ideal-int pkg syscall (linux-386), const SYS_TIMER_CREATE ideal-int pkg syscall (linux-386), const SYS_TIMER_DELETE ideal-int pkg syscall (linux-386), const SYS_TIMER_GETOVERRUN ideal-int pkg syscall (linux-386), const SYS_TIMER_GETTIME ideal-int pkg syscall (linux-386), const SYS_TIMER_SETTIME ideal-int pkg syscall (linux-386), const SYS_TIMES ideal-int pkg syscall (linux-386), const SYS_TKILL ideal-int pkg syscall (linux-386), const SYS_TRUNCATE ideal-int pkg syscall (linux-386), const SYS_TRUNCATE64 ideal-int pkg syscall (linux-386), const SYS_UGETRLIMIT ideal-int pkg syscall (linux-386), const SYS_ULIMIT ideal-int pkg syscall (linux-386), const SYS_UMASK ideal-int pkg syscall (linux-386), const SYS_UMOUNT ideal-int pkg syscall (linux-386), const SYS_UMOUNT2 ideal-int pkg syscall (linux-386), const SYS_UNAME ideal-int pkg syscall (linux-386), const SYS_UNLINK ideal-int pkg syscall (linux-386), const SYS_UNLINKAT ideal-int pkg syscall (linux-386), const SYS_UNSHARE ideal-int pkg syscall (linux-386), const SYS_USELIB ideal-int pkg syscall (linux-386), const SYS_USTAT ideal-int pkg syscall (linux-386), const SYS_UTIME ideal-int pkg syscall (linux-386), const SYS_UTIMENSAT ideal-int pkg syscall (linux-386), const SYS_UTIMES ideal-int pkg syscall (linux-386), const SYS_VFORK ideal-int pkg syscall (linux-386), const SYS_VHANGUP ideal-int pkg syscall (linux-386), const SYS_VM86 ideal-int pkg syscall (linux-386), const SYS_VM86OLD ideal-int pkg syscall (linux-386), const SYS_VMSPLICE ideal-int pkg syscall (linux-386), const SYS_VSERVER ideal-int pkg syscall (linux-386), const SYS_WAIT4 ideal-int pkg syscall (linux-386), const SYS_WAITID ideal-int pkg syscall (linux-386), const SYS_WAITPID ideal-int pkg syscall (linux-386), const SYS_WRITE ideal-int pkg syscall (linux-386), const SYS_WRITEV ideal-int pkg syscall (linux-386), const SYS__LLSEEK ideal-int pkg syscall (linux-386), const SYS__NEWSELECT ideal-int pkg syscall (linux-386), const SYS__SYSCTL ideal-int pkg syscall (linux-386), const S_BLKSIZE ideal-int pkg syscall (linux-386), const S_IEXEC ideal-int pkg syscall (linux-386), const S_IREAD ideal-int pkg syscall (linux-386), const S_IRGRP ideal-int pkg syscall (linux-386), const S_IROTH ideal-int pkg syscall (linux-386), const S_IRWXG ideal-int pkg syscall (linux-386), const S_IRWXO ideal-int pkg syscall (linux-386), const S_IRWXU ideal-int pkg syscall (linux-386), const S_IWGRP ideal-int pkg syscall (linux-386), const S_IWOTH ideal-int pkg syscall (linux-386), const S_IWRITE ideal-int pkg syscall (linux-386), const S_IXGRP ideal-int pkg syscall (linux-386), const S_IXOTH ideal-int pkg syscall (linux-386), const SizeofCmsghdr ideal-int pkg syscall (linux-386), const SizeofIPMreq ideal-int pkg syscall (linux-386), const SizeofIPMreqn ideal-int pkg syscall (linux-386), const SizeofIPv6Mreq ideal-int pkg syscall (linux-386), const SizeofIfAddrmsg ideal-int pkg syscall (linux-386), const SizeofIfInfomsg ideal-int pkg syscall (linux-386), const SizeofInet4Pktinfo ideal-int pkg syscall (linux-386), const SizeofInet6Pktinfo ideal-int pkg syscall (linux-386), const SizeofInotifyEvent ideal-int pkg syscall (linux-386), const SizeofLinger ideal-int pkg syscall (linux-386), const SizeofMsghdr ideal-int pkg syscall (linux-386), const SizeofNlAttr ideal-int pkg syscall (linux-386), const SizeofNlMsgerr ideal-int pkg syscall (linux-386), const SizeofNlMsghdr ideal-int pkg syscall (linux-386), const SizeofRtAttr ideal-int pkg syscall (linux-386), const SizeofRtGenmsg ideal-int pkg syscall (linux-386), const SizeofRtMsg ideal-int pkg syscall (linux-386), const SizeofRtNexthop ideal-int pkg syscall (linux-386), const SizeofSockFilter ideal-int pkg syscall (linux-386), const SizeofSockFprog ideal-int pkg syscall (linux-386), const SizeofSockaddrAny ideal-int pkg syscall (linux-386), const SizeofSockaddrInet4 ideal-int pkg syscall (linux-386), const SizeofSockaddrInet6 ideal-int pkg syscall (linux-386), const SizeofSockaddrLinklayer ideal-int pkg syscall (linux-386), const SizeofSockaddrNetlink ideal-int pkg syscall (linux-386), const SizeofSockaddrUnix ideal-int pkg syscall (linux-386), const SizeofUcred ideal-int pkg syscall (linux-386), const TCGETS ideal-int pkg syscall (linux-386), const TCP_CONGESTION ideal-int pkg syscall (linux-386), const TCP_CORK ideal-int pkg syscall (linux-386), const TCP_DEFER_ACCEPT ideal-int pkg syscall (linux-386), const TCP_INFO ideal-int pkg syscall (linux-386), const TCP_KEEPCNT ideal-int pkg syscall (linux-386), const TCP_KEEPIDLE ideal-int pkg syscall (linux-386), const TCP_KEEPINTVL ideal-int pkg syscall (linux-386), const TCP_LINGER2 ideal-int pkg syscall (linux-386), const TCP_MAXSEG ideal-int pkg syscall (linux-386), const TCP_MAXWIN ideal-int pkg syscall (linux-386), const TCP_MAX_WINSHIFT ideal-int pkg syscall (linux-386), const TCP_MD5SIG ideal-int pkg syscall (linux-386), const TCP_MD5SIG_MAXKEYLEN ideal-int pkg syscall (linux-386), const TCP_MSS ideal-int pkg syscall (linux-386), const TCP_QUICKACK ideal-int pkg syscall (linux-386), const TCP_SYNCNT ideal-int pkg syscall (linux-386), const TCP_WINDOW_CLAMP ideal-int pkg syscall (linux-386), const TCSETS ideal-int pkg syscall (linux-386), const TIOCCBRK ideal-int pkg syscall (linux-386), const TIOCCONS ideal-int pkg syscall (linux-386), const TIOCEXCL ideal-int pkg syscall (linux-386), const TIOCGDEV ideal-int pkg syscall (linux-386), const TIOCGETD ideal-int pkg syscall (linux-386), const TIOCGICOUNT ideal-int pkg syscall (linux-386), const TIOCGLCKTRMIOS ideal-int pkg syscall (linux-386), const TIOCGPGRP ideal-int pkg syscall (linux-386), const TIOCGPTN ideal-int pkg syscall (linux-386), const TIOCGRS485 ideal-int pkg syscall (linux-386), const TIOCGSERIAL ideal-int pkg syscall (linux-386), const TIOCGSID ideal-int pkg syscall (linux-386), const TIOCGSOFTCAR ideal-int pkg syscall (linux-386), const TIOCGWINSZ ideal-int pkg syscall (linux-386), const TIOCINQ ideal-int pkg syscall (linux-386), const TIOCLINUX ideal-int pkg syscall (linux-386), const TIOCMBIC ideal-int pkg syscall (linux-386), const TIOCMBIS ideal-int pkg syscall (linux-386), const TIOCMGET ideal-int pkg syscall (linux-386), const TIOCMIWAIT ideal-int pkg syscall (linux-386), const TIOCMSET ideal-int pkg syscall (linux-386), const TIOCM_CAR ideal-int pkg syscall (linux-386), const TIOCM_CD ideal-int pkg syscall (linux-386), const TIOCM_CTS ideal-int pkg syscall (linux-386), const TIOCM_DSR ideal-int pkg syscall (linux-386), const TIOCM_DTR ideal-int pkg syscall (linux-386), const TIOCM_LE ideal-int pkg syscall (linux-386), const TIOCM_RI ideal-int pkg syscall (linux-386), const TIOCM_RNG ideal-int pkg syscall (linux-386), const TIOCM_RTS ideal-int pkg syscall (linux-386), const TIOCM_SR ideal-int pkg syscall (linux-386), const TIOCM_ST ideal-int pkg syscall (linux-386), const TIOCNOTTY ideal-int pkg syscall (linux-386), const TIOCNXCL ideal-int pkg syscall (linux-386), const TIOCOUTQ ideal-int pkg syscall (linux-386), const TIOCPKT ideal-int pkg syscall (linux-386), const TIOCPKT_DATA ideal-int pkg syscall (linux-386), const TIOCPKT_DOSTOP ideal-int pkg syscall (linux-386), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (linux-386), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (linux-386), const TIOCPKT_IOCTL ideal-int pkg syscall (linux-386), const TIOCPKT_NOSTOP ideal-int pkg syscall (linux-386), const TIOCPKT_START ideal-int pkg syscall (linux-386), const TIOCPKT_STOP ideal-int pkg syscall (linux-386), const TIOCSBRK ideal-int pkg syscall (linux-386), const TIOCSCTTY ideal-int pkg syscall (linux-386), const TIOCSERCONFIG ideal-int pkg syscall (linux-386), const TIOCSERGETLSR ideal-int pkg syscall (linux-386), const TIOCSERGETMULTI ideal-int pkg syscall (linux-386), const TIOCSERGSTRUCT ideal-int pkg syscall (linux-386), const TIOCSERGWILD ideal-int pkg syscall (linux-386), const TIOCSERSETMULTI ideal-int pkg syscall (linux-386), const TIOCSERSWILD ideal-int pkg syscall (linux-386), const TIOCSER_TEMT ideal-int pkg syscall (linux-386), const TIOCSETD ideal-int pkg syscall (linux-386), const TIOCSIG ideal-int pkg syscall (linux-386), const TIOCSLCKTRMIOS ideal-int pkg syscall (linux-386), const TIOCSPGRP ideal-int pkg syscall (linux-386), const TIOCSPTLCK ideal-int pkg syscall (linux-386), const TIOCSRS485 ideal-int pkg syscall (linux-386), const TIOCSSERIAL ideal-int pkg syscall (linux-386), const TIOCSSOFTCAR ideal-int pkg syscall (linux-386), const TIOCSTI ideal-int pkg syscall (linux-386), const TIOCSWINSZ ideal-int pkg syscall (linux-386), const TOSTOP ideal-int pkg syscall (linux-386), const TUNATTACHFILTER ideal-int pkg syscall (linux-386), const TUNDETACHFILTER ideal-int pkg syscall (linux-386), const TUNGETFEATURES ideal-int pkg syscall (linux-386), const TUNGETIFF ideal-int pkg syscall (linux-386), const TUNGETSNDBUF ideal-int pkg syscall (linux-386), const TUNGETVNETHDRSZ ideal-int pkg syscall (linux-386), const TUNSETDEBUG ideal-int pkg syscall (linux-386), const TUNSETGROUP ideal-int pkg syscall (linux-386), const TUNSETIFF ideal-int pkg syscall (linux-386), const TUNSETLINK ideal-int pkg syscall (linux-386), const TUNSETNOCSUM ideal-int pkg syscall (linux-386), const TUNSETOFFLOAD ideal-int pkg syscall (linux-386), const TUNSETOWNER ideal-int pkg syscall (linux-386), const TUNSETPERSIST ideal-int pkg syscall (linux-386), const TUNSETSNDBUF ideal-int pkg syscall (linux-386), const TUNSETTXFILTER ideal-int pkg syscall (linux-386), const TUNSETVNETHDRSZ ideal-int pkg syscall (linux-386), const VDISCARD ideal-int pkg syscall (linux-386), const VEOF ideal-int pkg syscall (linux-386), const VEOL ideal-int pkg syscall (linux-386), const VEOL2 ideal-int pkg syscall (linux-386), const VERASE ideal-int pkg syscall (linux-386), const VINTR ideal-int pkg syscall (linux-386), const VKILL ideal-int pkg syscall (linux-386), const VLNEXT ideal-int pkg syscall (linux-386), const VMIN ideal-int pkg syscall (linux-386), const VQUIT ideal-int pkg syscall (linux-386), const VREPRINT ideal-int pkg syscall (linux-386), const VSTART ideal-int pkg syscall (linux-386), const VSTOP ideal-int pkg syscall (linux-386), const VSUSP ideal-int pkg syscall (linux-386), const VSWTC ideal-int pkg syscall (linux-386), const VTIME ideal-int pkg syscall (linux-386), const VWERASE ideal-int pkg syscall (linux-386), const WALL ideal-int pkg syscall (linux-386), const WCLONE ideal-int pkg syscall (linux-386), const WCONTINUED ideal-int pkg syscall (linux-386), const WEXITED ideal-int pkg syscall (linux-386), const WNOHANG ideal-int pkg syscall (linux-386), const WNOTHREAD ideal-int pkg syscall (linux-386), const WNOWAIT ideal-int pkg syscall (linux-386), const WORDSIZE ideal-int pkg syscall (linux-386), const WSTOPPED ideal-int pkg syscall (linux-386), const WUNTRACED ideal-int pkg syscall (linux-386), const XCASE ideal-int pkg syscall (linux-386), func Accept(int) (int, Sockaddr, error) pkg syscall (linux-386), func Access(string, uint32) error pkg syscall (linux-386), func Acct(string) error pkg syscall (linux-386), func Adjtimex(*Timex) (int, error) pkg syscall (linux-386), func AttachLsf(int, []SockFilter) error pkg syscall (linux-386), func Bind(int, Sockaddr) error pkg syscall (linux-386), func BindToDevice(int, string) error pkg syscall (linux-386), func Chroot(string) error pkg syscall (linux-386), func Close(int) error pkg syscall (linux-386), func CloseOnExec(int) pkg syscall (linux-386), func CmsgLen(int) int pkg syscall (linux-386), func CmsgSpace(int) int pkg syscall (linux-386), func Connect(int, Sockaddr) error pkg syscall (linux-386), func Creat(string, uint32) (int, error) pkg syscall (linux-386), func DetachLsf(int) error pkg syscall (linux-386), func Dup(int) (int, error) pkg syscall (linux-386), func Dup2(int, int) error pkg syscall (linux-386), func EpollCreate(int) (int, error) pkg syscall (linux-386), func EpollCreate1(int) (int, error) pkg syscall (linux-386), func EpollCtl(int, int, int, *EpollEvent) error pkg syscall (linux-386), func EpollWait(int, []EpollEvent, int) (int, error) pkg syscall (linux-386), func Faccessat(int, string, uint32, int) error pkg syscall (linux-386), func Fallocate(int, uint32, int64, int64) error pkg syscall (linux-386), func Fchdir(int) error pkg syscall (linux-386), func Fchmod(int, uint32) error pkg syscall (linux-386), func Fchmodat(int, string, uint32, int) error pkg syscall (linux-386), func Fchown(int, int, int) error pkg syscall (linux-386), func Fchownat(int, string, int, int, int) error pkg syscall (linux-386), func Fdatasync(int) error pkg syscall (linux-386), func Flock(int, int) error pkg syscall (linux-386), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (linux-386), func Fstat(int, *Stat_t) error pkg syscall (linux-386), func Fstatfs(int, *Statfs_t) error pkg syscall (linux-386), func Fsync(int) error pkg syscall (linux-386), func Ftruncate(int, int64) error pkg syscall (linux-386), func Futimes(int, []Timeval) error pkg syscall (linux-386), func Futimesat(int, string, []Timeval) error pkg syscall (linux-386), func Getcwd([]uint8) (int, error) pkg syscall (linux-386), func Getdents(int, []uint8) (int, error) pkg syscall (linux-386), func Getpeername(int) (Sockaddr, error) pkg syscall (linux-386), func Getpgid(int) (int, error) pkg syscall (linux-386), func Getpgrp() int pkg syscall (linux-386), func Getrlimit(int, *Rlimit) error pkg syscall (linux-386), func Getrusage(int, *Rusage) error pkg syscall (linux-386), func Getsockname(int) (Sockaddr, error) pkg syscall (linux-386), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (linux-386), func GetsockoptIPMreqn(int, int, int) (*IPMreqn, error) pkg syscall (linux-386), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (linux-386), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (linux-386), func GetsockoptInt(int, int, int) (int, error) pkg syscall (linux-386), func Gettid() int pkg syscall (linux-386), func InotifyAddWatch(int, string, uint32) (int, error) pkg syscall (linux-386), func InotifyInit() (int, error) pkg syscall (linux-386), func InotifyInit1(int) (int, error) pkg syscall (linux-386), func InotifyRmWatch(int, uint32) (int, error) pkg syscall (linux-386), func Ioperm(int, int, int) error pkg syscall (linux-386), func Iopl(int) error pkg syscall (linux-386), func Kill(int, Signal) error pkg syscall (linux-386), func Klogctl(int, []uint8) (int, error) pkg syscall (linux-386), func Listen(int, int) error pkg syscall (linux-386), func LsfJump(int, int, int, int) *SockFilter pkg syscall (linux-386), func LsfSocket(int, int) (int, error) pkg syscall (linux-386), func LsfStmt(int, int) *SockFilter pkg syscall (linux-386), func Lstat(string, *Stat_t) error pkg syscall (linux-386), func Madvise([]uint8, int) error pkg syscall (linux-386), func Mkdirat(int, string, uint32) error pkg syscall (linux-386), func Mkfifo(string, uint32) error pkg syscall (linux-386), func Mknod(string, uint32, int) error pkg syscall (linux-386), func Mknodat(int, string, uint32, int) error pkg syscall (linux-386), func Mlock([]uint8) error pkg syscall (linux-386), func Mlockall(int) error pkg syscall (linux-386), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (linux-386), func Mount(string, string, string, uintptr, string) error pkg syscall (linux-386), func Mprotect([]uint8, int) error pkg syscall (linux-386), func Munlock([]uint8) error pkg syscall (linux-386), func Munlockall() error pkg syscall (linux-386), func Munmap([]uint8) error pkg syscall (linux-386), func Nanosleep(*Timespec, *Timespec) error pkg syscall (linux-386), func NetlinkRIB(int, int) ([]uint8, error) pkg syscall (linux-386), func NsecToTimespec(int64) Timespec pkg syscall (linux-386), func Open(string, int, uint32) (int, error) pkg syscall (linux-386), func Openat(int, string, int, uint32) (int, error) pkg syscall (linux-386), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (linux-386), func ParseNetlinkMessage([]uint8) ([]NetlinkMessage, error) pkg syscall (linux-386), func ParseNetlinkRouteAttr(*NetlinkMessage) ([]NetlinkRouteAttr, error) pkg syscall (linux-386), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (linux-386), func ParseUnixCredentials(*SocketControlMessage) (*Ucred, error) pkg syscall (linux-386), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (linux-386), func Pause() error pkg syscall (linux-386), func Pipe([]int) error pkg syscall (linux-386), func PivotRoot(string, string) error pkg syscall (linux-386), func Pread(int, []uint8, int64) (int, error) pkg syscall (linux-386), func PtraceAttach(int) error pkg syscall (linux-386), func PtraceCont(int, int) error pkg syscall (linux-386), func PtraceDetach(int) error pkg syscall (linux-386), func PtraceGetEventMsg(int) (uint, error) pkg syscall (linux-386), func PtraceGetRegs(int, *PtraceRegs) error pkg syscall (linux-386), func PtracePeekData(int, uintptr, []uint8) (int, error) pkg syscall (linux-386), func PtracePeekText(int, uintptr, []uint8) (int, error) pkg syscall (linux-386), func PtracePokeData(int, uintptr, []uint8) (int, error) pkg syscall (linux-386), func PtracePokeText(int, uintptr, []uint8) (int, error) pkg syscall (linux-386), func PtraceSetOptions(int, int) error pkg syscall (linux-386), func PtraceSetRegs(int, *PtraceRegs) error pkg syscall (linux-386), func PtraceSingleStep(int) error pkg syscall (linux-386), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (linux-386), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-386), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-386), func Read(int, []uint8) (int, error) pkg syscall (linux-386), func ReadDirent(int, []uint8) (int, error) pkg syscall (linux-386), func Reboot(int) error pkg syscall (linux-386), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (linux-386), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (linux-386), func Renameat(int, string, int, string) error pkg syscall (linux-386), func Seek(int, int64, int) (int64, error) pkg syscall (linux-386), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) (int, error) pkg syscall (linux-386), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (linux-386), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (linux-386), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (linux-386), func SetLsfPromisc(string, bool) error pkg syscall (linux-386), func SetNonblock(int, bool) error pkg syscall (linux-386), func Setdomainname([]uint8) error pkg syscall (linux-386), func Setfsgid(int) error pkg syscall (linux-386), func Setfsuid(int) error pkg syscall (linux-386), func Setgid(int) error pkg syscall (linux-386), func Setgroups([]int) error pkg syscall (linux-386), func Sethostname([]uint8) error pkg syscall (linux-386), func Setpgid(int, int) error pkg syscall (linux-386), func Setregid(int, int) error pkg syscall (linux-386), func Setresgid(int, int, int) error pkg syscall (linux-386), func Setresuid(int, int, int) error pkg syscall (linux-386), func Setreuid(int, int) error pkg syscall (linux-386), func Setrlimit(int, *Rlimit) error pkg syscall (linux-386), func Setsid() (int, error) pkg syscall (linux-386), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (linux-386), func SetsockoptIPMreqn(int, int, int, *IPMreqn) error pkg syscall (linux-386), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (linux-386), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (linux-386), func SetsockoptInt(int, int, int, int) error pkg syscall (linux-386), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (linux-386), func SetsockoptString(int, int, int, string) error pkg syscall (linux-386), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (linux-386), func Settimeofday(*Timeval) error pkg syscall (linux-386), func Setuid(int) error pkg syscall (linux-386), func Shutdown(int, int) error pkg syscall (linux-386), func Socket(int, int, int) (int, error) pkg syscall (linux-386), func Socketpair(int, int, int) ([2]int, error) pkg syscall (linux-386), func Splice(int, *int64, int, *int64, int, int) (int, error) pkg syscall (linux-386), func Stat(string, *Stat_t) error pkg syscall (linux-386), func Statfs(string, *Statfs_t) error pkg syscall (linux-386), func StringSlicePtr([]string) []*uint8 pkg syscall (linux-386), func Sync() pkg syscall (linux-386), func SyncFileRange(int, int64, int64, int) error pkg syscall (linux-386), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-386), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-386), func Sysinfo(*Sysinfo_t) error pkg syscall (linux-386), func Tee(int, int, int, int) (int64, error) pkg syscall (linux-386), func Tgkill(int, int, Signal) error pkg syscall (linux-386), func Time(*Time_t) (Time_t, error) pkg syscall (linux-386), func Times(*Tms) (uintptr, error) pkg syscall (linux-386), func TimespecToNsec(Timespec) int64 pkg syscall (linux-386), func TimevalToNsec(Timeval) int64 pkg syscall (linux-386), func Truncate(string, int64) error pkg syscall (linux-386), func Umask(int) int pkg syscall (linux-386), func Uname(*Utsname) error pkg syscall (linux-386), func UnixCredentials(*Ucred) []uint8 pkg syscall (linux-386), func UnixRights(...int) []uint8 pkg syscall (linux-386), func Unlinkat(int, string) error pkg syscall (linux-386), func Unmount(string, int) error pkg syscall (linux-386), func Unshare(int) error pkg syscall (linux-386), func Ustat(int, *Ustat_t) error pkg syscall (linux-386), func Utime(string, *Utimbuf) error pkg syscall (linux-386), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (linux-386), func Write(int, []uint8) (int, error) pkg syscall (linux-386), method (*Cmsghdr) SetLen(int) pkg syscall (linux-386), method (*Iovec) SetLen(int) pkg syscall (linux-386), method (*Msghdr) SetControllen(int) pkg syscall (linux-386), method (*PtraceRegs) PC() uint64 pkg syscall (linux-386), method (*PtraceRegs) SetPC(uint64) pkg syscall (linux-386), type Cmsghdr struct pkg syscall (linux-386), type Cmsghdr struct, Len uint32 pkg syscall (linux-386), type Cmsghdr struct, Level int32 pkg syscall (linux-386), type Cmsghdr struct, Type int32 pkg syscall (linux-386), type Cmsghdr struct, X__cmsg_data [0]uint8 pkg syscall (linux-386), type Credential struct pkg syscall (linux-386), type Credential struct, Gid uint32 pkg syscall (linux-386), type Credential struct, Groups []uint32 pkg syscall (linux-386), type Credential struct, Uid uint32 pkg syscall (linux-386), type Dirent struct pkg syscall (linux-386), type Dirent struct, Ino uint64 pkg syscall (linux-386), type Dirent struct, Name [256]int8 pkg syscall (linux-386), type Dirent struct, Off int64 pkg syscall (linux-386), type Dirent struct, Pad_cgo_0 [1]uint8 pkg syscall (linux-386), type Dirent struct, Reclen uint16 pkg syscall (linux-386), type Dirent struct, Type uint8 pkg syscall (linux-386), type EpollEvent struct pkg syscall (linux-386), type EpollEvent struct, Events uint32 pkg syscall (linux-386), type EpollEvent struct, Fd int32 pkg syscall (linux-386), type EpollEvent struct, Pad int32 pkg syscall (linux-386), type FdSet struct pkg syscall (linux-386), type FdSet struct, Bits [32]int32 pkg syscall (linux-386), type Fsid struct pkg syscall (linux-386), type Fsid struct, X__val [2]int32 pkg syscall (linux-386), type IPMreqn struct pkg syscall (linux-386), type IPMreqn struct, Address [4]uint8 pkg syscall (linux-386), type IPMreqn struct, Ifindex int32 pkg syscall (linux-386), type IPMreqn struct, Multiaddr [4]uint8 pkg syscall (linux-386), type IfAddrmsg struct pkg syscall (linux-386), type IfAddrmsg struct, Family uint8 pkg syscall (linux-386), type IfAddrmsg struct, Flags uint8 pkg syscall (linux-386), type IfAddrmsg struct, Index uint32 pkg syscall (linux-386), type IfAddrmsg struct, Prefixlen uint8 pkg syscall (linux-386), type IfAddrmsg struct, Scope uint8 pkg syscall (linux-386), type IfInfomsg struct pkg syscall (linux-386), type IfInfomsg struct, Change uint32 pkg syscall (linux-386), type IfInfomsg struct, Family uint8 pkg syscall (linux-386), type IfInfomsg struct, Flags uint32 pkg syscall (linux-386), type IfInfomsg struct, Index int32 pkg syscall (linux-386), type IfInfomsg struct, Type uint16 pkg syscall (linux-386), type IfInfomsg struct, X__ifi_pad uint8 pkg syscall (linux-386), type Inet4Pktinfo struct pkg syscall (linux-386), type Inet4Pktinfo struct, Addr [4]uint8 pkg syscall (linux-386), type Inet4Pktinfo struct, Ifindex int32 pkg syscall (linux-386), type Inet4Pktinfo struct, Spec_dst [4]uint8 pkg syscall (linux-386), type Inet6Pktinfo struct pkg syscall (linux-386), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (linux-386), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (linux-386), type InotifyEvent struct pkg syscall (linux-386), type InotifyEvent struct, Cookie uint32 pkg syscall (linux-386), type InotifyEvent struct, Len uint32 pkg syscall (linux-386), type InotifyEvent struct, Mask uint32 pkg syscall (linux-386), type InotifyEvent struct, Name [0]uint8 pkg syscall (linux-386), type InotifyEvent struct, Wd int32 pkg syscall (linux-386), type Iovec struct pkg syscall (linux-386), type Iovec struct, Base *uint8 pkg syscall (linux-386), type Iovec struct, Len uint32 pkg syscall (linux-386), type Msghdr struct pkg syscall (linux-386), type Msghdr struct, Control *uint8 pkg syscall (linux-386), type Msghdr struct, Controllen uint32 pkg syscall (linux-386), type Msghdr struct, Flags int32 pkg syscall (linux-386), type Msghdr struct, Iov *Iovec pkg syscall (linux-386), type Msghdr struct, Iovlen uint32 pkg syscall (linux-386), type Msghdr struct, Name *uint8 pkg syscall (linux-386), type Msghdr struct, Namelen uint32 pkg syscall (linux-386), type NetlinkMessage struct pkg syscall (linux-386), type NetlinkMessage struct, Data []uint8 pkg syscall (linux-386), type NetlinkMessage struct, Header NlMsghdr pkg syscall (linux-386), type NetlinkRouteAttr struct pkg syscall (linux-386), type NetlinkRouteAttr struct, Attr RtAttr pkg syscall (linux-386), type NetlinkRouteAttr struct, Value []uint8 pkg syscall (linux-386), type NetlinkRouteRequest struct pkg syscall (linux-386), type NetlinkRouteRequest struct, Data RtGenmsg pkg syscall (linux-386), type NetlinkRouteRequest struct, Header NlMsghdr pkg syscall (linux-386), type NlAttr struct pkg syscall (linux-386), type NlAttr struct, Len uint16 pkg syscall (linux-386), type NlAttr struct, Type uint16 pkg syscall (linux-386), type NlMsgerr struct pkg syscall (linux-386), type NlMsgerr struct, Error int32 pkg syscall (linux-386), type NlMsgerr struct, Msg NlMsghdr pkg syscall (linux-386), type NlMsghdr struct pkg syscall (linux-386), type NlMsghdr struct, Flags uint16 pkg syscall (linux-386), type NlMsghdr struct, Len uint32 pkg syscall (linux-386), type NlMsghdr struct, Pid uint32 pkg syscall (linux-386), type NlMsghdr struct, Seq uint32 pkg syscall (linux-386), type NlMsghdr struct, Type uint16 pkg syscall (linux-386), type PtraceRegs struct pkg syscall (linux-386), type PtraceRegs struct, Eax int32 pkg syscall (linux-386), type PtraceRegs struct, Ebp int32 pkg syscall (linux-386), type PtraceRegs struct, Ebx int32 pkg syscall (linux-386), type PtraceRegs struct, Ecx int32 pkg syscall (linux-386), type PtraceRegs struct, Edi int32 pkg syscall (linux-386), type PtraceRegs struct, Edx int32 pkg syscall (linux-386), type PtraceRegs struct, Eflags int32 pkg syscall (linux-386), type PtraceRegs struct, Eip int32 pkg syscall (linux-386), type PtraceRegs struct, Esi int32 pkg syscall (linux-386), type PtraceRegs struct, Esp int32 pkg syscall (linux-386), type PtraceRegs struct, Orig_eax int32 pkg syscall (linux-386), type PtraceRegs struct, Xcs int32 pkg syscall (linux-386), type PtraceRegs struct, Xds int32 pkg syscall (linux-386), type PtraceRegs struct, Xes int32 pkg syscall (linux-386), type PtraceRegs struct, Xfs int32 pkg syscall (linux-386), type PtraceRegs struct, Xgs int32 pkg syscall (linux-386), type PtraceRegs struct, Xss int32 pkg syscall (linux-386), type RawSockaddr struct, Data [14]int8 pkg syscall (linux-386), type RawSockaddr struct, Family uint16 pkg syscall (linux-386), type RawSockaddrAny struct, Pad [96]int8 pkg syscall (linux-386), type RawSockaddrInet4 struct, Family uint16 pkg syscall (linux-386), type RawSockaddrInet4 struct, Zero [8]uint8 pkg syscall (linux-386), type RawSockaddrInet6 struct pkg syscall (linux-386), type RawSockaddrInet6 struct, Addr [16]uint8 pkg syscall (linux-386), type RawSockaddrInet6 struct, Family uint16 pkg syscall (linux-386), type RawSockaddrInet6 struct, Flowinfo uint32 pkg syscall (linux-386), type RawSockaddrInet6 struct, Port uint16 pkg syscall (linux-386), type RawSockaddrInet6 struct, Scope_id uint32 pkg syscall (linux-386), type RawSockaddrLinklayer struct pkg syscall (linux-386), type RawSockaddrLinklayer struct, Addr [8]uint8 pkg syscall (linux-386), type RawSockaddrLinklayer struct, Family uint16 pkg syscall (linux-386), type RawSockaddrLinklayer struct, Halen uint8 pkg syscall (linux-386), type RawSockaddrLinklayer struct, Hatype uint16 pkg syscall (linux-386), type RawSockaddrLinklayer struct, Ifindex int32 pkg syscall (linux-386), type RawSockaddrLinklayer struct, Pkttype uint8 pkg syscall (linux-386), type RawSockaddrLinklayer struct, Protocol uint16 pkg syscall (linux-386), type RawSockaddrNetlink struct pkg syscall (linux-386), type RawSockaddrNetlink struct, Family uint16 pkg syscall (linux-386), type RawSockaddrNetlink struct, Groups uint32 pkg syscall (linux-386), type RawSockaddrNetlink struct, Pad uint16 pkg syscall (linux-386), type RawSockaddrNetlink struct, Pid uint32 pkg syscall (linux-386), type RawSockaddrUnix struct pkg syscall (linux-386), type RawSockaddrUnix struct, Family uint16 pkg syscall (linux-386), type RawSockaddrUnix struct, Path [108]int8 pkg syscall (linux-386), type Rlimit struct pkg syscall (linux-386), type Rlimit struct, Cur uint64 pkg syscall (linux-386), type Rlimit struct, Max uint64 pkg syscall (linux-386), type RtAttr struct pkg syscall (linux-386), type RtAttr struct, Len uint16 pkg syscall (linux-386), type RtAttr struct, Type uint16 pkg syscall (linux-386), type RtGenmsg struct pkg syscall (linux-386), type RtGenmsg struct, Family uint8 pkg syscall (linux-386), type RtMsg struct pkg syscall (linux-386), type RtMsg struct, Dst_len uint8 pkg syscall (linux-386), type RtMsg struct, Family uint8 pkg syscall (linux-386), type RtMsg struct, Flags uint32 pkg syscall (linux-386), type RtMsg struct, Protocol uint8 pkg syscall (linux-386), type RtMsg struct, Scope uint8 pkg syscall (linux-386), type RtMsg struct, Src_len uint8 pkg syscall (linux-386), type RtMsg struct, Table uint8 pkg syscall (linux-386), type RtMsg struct, Tos uint8 pkg syscall (linux-386), type RtMsg struct, Type uint8 pkg syscall (linux-386), type RtNexthop struct pkg syscall (linux-386), type RtNexthop struct, Flags uint8 pkg syscall (linux-386), type RtNexthop struct, Hops uint8 pkg syscall (linux-386), type RtNexthop struct, Ifindex int32 pkg syscall (linux-386), type RtNexthop struct, Len uint16 pkg syscall (linux-386), type Rusage struct, Idrss int32 pkg syscall (linux-386), type Rusage struct, Inblock int32 pkg syscall (linux-386), type Rusage struct, Isrss int32 pkg syscall (linux-386), type Rusage struct, Ixrss int32 pkg syscall (linux-386), type Rusage struct, Majflt int32 pkg syscall (linux-386), type Rusage struct, Maxrss int32 pkg syscall (linux-386), type Rusage struct, Minflt int32 pkg syscall (linux-386), type Rusage struct, Msgrcv int32 pkg syscall (linux-386), type Rusage struct, Msgsnd int32 pkg syscall (linux-386), type Rusage struct, Nivcsw int32 pkg syscall (linux-386), type Rusage struct, Nsignals int32 pkg syscall (linux-386), type Rusage struct, Nswap int32 pkg syscall (linux-386), type Rusage struct, Nvcsw int32 pkg syscall (linux-386), type Rusage struct, Oublock int32 pkg syscall (linux-386), type Rusage struct, Stime Timeval pkg syscall (linux-386), type Rusage struct, Utime Timeval pkg syscall (linux-386), type SockFilter struct pkg syscall (linux-386), type SockFilter struct, Code uint16 pkg syscall (linux-386), type SockFilter struct, Jf uint8 pkg syscall (linux-386), type SockFilter struct, Jt uint8 pkg syscall (linux-386), type SockFilter struct, K uint32 pkg syscall (linux-386), type SockFprog struct pkg syscall (linux-386), type SockFprog struct, Filter *SockFilter pkg syscall (linux-386), type SockFprog struct, Len uint16 pkg syscall (linux-386), type SockFprog struct, Pad_cgo_0 [2]uint8 pkg syscall (linux-386), type SockaddrLinklayer struct pkg syscall (linux-386), type SockaddrLinklayer struct, Addr [8]uint8 pkg syscall (linux-386), type SockaddrLinklayer struct, Halen uint8 pkg syscall (linux-386), type SockaddrLinklayer struct, Hatype uint16 pkg syscall (linux-386), type SockaddrLinklayer struct, Ifindex int pkg syscall (linux-386), type SockaddrLinklayer struct, Pkttype uint8 pkg syscall (linux-386), type SockaddrLinklayer struct, Protocol uint16 pkg syscall (linux-386), type SockaddrNetlink struct pkg syscall (linux-386), type SockaddrNetlink struct, Family uint16 pkg syscall (linux-386), type SockaddrNetlink struct, Groups uint32 pkg syscall (linux-386), type SockaddrNetlink struct, Pad uint16 pkg syscall (linux-386), type SockaddrNetlink struct, Pid uint32 pkg syscall (linux-386), type SocketControlMessage struct pkg syscall (linux-386), type SocketControlMessage struct, Data []uint8 pkg syscall (linux-386), type SocketControlMessage struct, Header Cmsghdr pkg syscall (linux-386), type Stat_t struct pkg syscall (linux-386), type Stat_t struct, Atim Timespec pkg syscall (linux-386), type Stat_t struct, Blksize int32 pkg syscall (linux-386), type Stat_t struct, Blocks int64 pkg syscall (linux-386), type Stat_t struct, Ctim Timespec pkg syscall (linux-386), type Stat_t struct, Dev uint64 pkg syscall (linux-386), type Stat_t struct, Gid uint32 pkg syscall (linux-386), type Stat_t struct, Ino uint64 pkg syscall (linux-386), type Stat_t struct, Mode uint32 pkg syscall (linux-386), type Stat_t struct, Mtim Timespec pkg syscall (linux-386), type Stat_t struct, Nlink uint32 pkg syscall (linux-386), type Stat_t struct, Pad_cgo_0 [2]uint8 pkg syscall (linux-386), type Stat_t struct, Pad_cgo_1 [2]uint8 pkg syscall (linux-386), type Stat_t struct, Rdev uint64 pkg syscall (linux-386), type Stat_t struct, Size int64 pkg syscall (linux-386), type Stat_t struct, Uid uint32 pkg syscall (linux-386), type Stat_t struct, X__pad1 uint16 pkg syscall (linux-386), type Stat_t struct, X__pad2 uint16 pkg syscall (linux-386), type Stat_t struct, X__st_ino uint32 pkg syscall (linux-386), type Statfs_t struct pkg syscall (linux-386), type Statfs_t struct, Bavail uint64 pkg syscall (linux-386), type Statfs_t struct, Bfree uint64 pkg syscall (linux-386), type Statfs_t struct, Blocks uint64 pkg syscall (linux-386), type Statfs_t struct, Bsize int32 pkg syscall (linux-386), type Statfs_t struct, Ffree uint64 pkg syscall (linux-386), type Statfs_t struct, Files uint64 pkg syscall (linux-386), type Statfs_t struct, Flags int32 pkg syscall (linux-386), type Statfs_t struct, Frsize int32 pkg syscall (linux-386), type Statfs_t struct, Fsid Fsid pkg syscall (linux-386), type Statfs_t struct, Namelen int32 pkg syscall (linux-386), type Statfs_t struct, Spare [4]int32 pkg syscall (linux-386), type Statfs_t struct, Type int32 pkg syscall (linux-386), type SysProcAttr struct, Chroot string pkg syscall (linux-386), type SysProcAttr struct, Credential *Credential pkg syscall (linux-386), type SysProcAttr struct, Noctty bool pkg syscall (linux-386), type SysProcAttr struct, Pdeathsig Signal pkg syscall (linux-386), type SysProcAttr struct, Ptrace bool pkg syscall (linux-386), type SysProcAttr struct, Setctty bool pkg syscall (linux-386), type SysProcAttr struct, Setpgid bool pkg syscall (linux-386), type SysProcAttr struct, Setsid bool pkg syscall (linux-386), type Sysinfo_t struct pkg syscall (linux-386), type Sysinfo_t struct, Bufferram uint32 pkg syscall (linux-386), type Sysinfo_t struct, Freehigh uint32 pkg syscall (linux-386), type Sysinfo_t struct, Freeram uint32 pkg syscall (linux-386), type Sysinfo_t struct, Freeswap uint32 pkg syscall (linux-386), type Sysinfo_t struct, Loads [3]uint32 pkg syscall (linux-386), type Sysinfo_t struct, Pad uint16 pkg syscall (linux-386), type Sysinfo_t struct, Procs uint16 pkg syscall (linux-386), type Sysinfo_t struct, Sharedram uint32 pkg syscall (linux-386), type Sysinfo_t struct, Totalhigh uint32 pkg syscall (linux-386), type Sysinfo_t struct, Totalram uint32 pkg syscall (linux-386), type Sysinfo_t struct, Totalswap uint32 pkg syscall (linux-386), type Sysinfo_t struct, Unit uint32 pkg syscall (linux-386), type Sysinfo_t struct, Uptime int32 pkg syscall (linux-386), type Sysinfo_t struct, X_f [8]int8 pkg syscall (linux-386), type Termios struct pkg syscall (linux-386), type Termios struct, Cc [32]uint8 pkg syscall (linux-386), type Termios struct, Cflag uint32 pkg syscall (linux-386), type Termios struct, Iflag uint32 pkg syscall (linux-386), type Termios struct, Ispeed uint32 pkg syscall (linux-386), type Termios struct, Lflag uint32 pkg syscall (linux-386), type Termios struct, Line uint8 pkg syscall (linux-386), type Termios struct, Oflag uint32 pkg syscall (linux-386), type Termios struct, Ospeed uint32 pkg syscall (linux-386), type Termios struct, Pad_cgo_0 [3]uint8 pkg syscall (linux-386), type Time_t int32 pkg syscall (linux-386), type Timespec struct, Nsec int32 pkg syscall (linux-386), type Timespec struct, Sec int32 pkg syscall (linux-386), type Timeval struct, Sec int32 pkg syscall (linux-386), type Timeval struct, Usec int32 pkg syscall (linux-386), type Timex struct pkg syscall (linux-386), type Timex struct, Calcnt int32 pkg syscall (linux-386), type Timex struct, Constant int32 pkg syscall (linux-386), type Timex struct, Errcnt int32 pkg syscall (linux-386), type Timex struct, Esterror int32 pkg syscall (linux-386), type Timex struct, Freq int32 pkg syscall (linux-386), type Timex struct, Jitcnt int32 pkg syscall (linux-386), type Timex struct, Jitter int32 pkg syscall (linux-386), type Timex struct, Maxerror int32 pkg syscall (linux-386), type Timex struct, Modes uint32 pkg syscall (linux-386), type Timex struct, Offset int32 pkg syscall (linux-386), type Timex struct, Pad_cgo_0 [44]uint8 pkg syscall (linux-386), type Timex struct, Ppsfreq int32 pkg syscall (linux-386), type Timex struct, Precision int32 pkg syscall (linux-386), type Timex struct, Shift int32 pkg syscall (linux-386), type Timex struct, Stabil int32 pkg syscall (linux-386), type Timex struct, Status int32 pkg syscall (linux-386), type Timex struct, Stbcnt int32 pkg syscall (linux-386), type Timex struct, Tai int32 pkg syscall (linux-386), type Timex struct, Tick int32 pkg syscall (linux-386), type Timex struct, Time Timeval pkg syscall (linux-386), type Timex struct, Tolerance int32 pkg syscall (linux-386), type Tms struct pkg syscall (linux-386), type Tms struct, Cstime int32 pkg syscall (linux-386), type Tms struct, Cutime int32 pkg syscall (linux-386), type Tms struct, Stime int32 pkg syscall (linux-386), type Tms struct, Utime int32 pkg syscall (linux-386), type Ucred struct pkg syscall (linux-386), type Ucred struct, Gid uint32 pkg syscall (linux-386), type Ucred struct, Pid int32 pkg syscall (linux-386), type Ucred struct, Uid uint32 pkg syscall (linux-386), type Ustat_t struct pkg syscall (linux-386), type Ustat_t struct, Fname [6]int8 pkg syscall (linux-386), type Ustat_t struct, Fpack [6]int8 pkg syscall (linux-386), type Ustat_t struct, Tfree int32 pkg syscall (linux-386), type Ustat_t struct, Tinode uint32 pkg syscall (linux-386), type Utimbuf struct pkg syscall (linux-386), type Utimbuf struct, Actime int32 pkg syscall (linux-386), type Utimbuf struct, Modtime int32 pkg syscall (linux-386), type Utsname struct pkg syscall (linux-386), type Utsname struct, Domainname [65]int8 pkg syscall (linux-386), type Utsname struct, Machine [65]int8 pkg syscall (linux-386), type Utsname struct, Nodename [65]int8 pkg syscall (linux-386), type Utsname struct, Release [65]int8 pkg syscall (linux-386), type Utsname struct, Sysname [65]int8 pkg syscall (linux-386), type Utsname struct, Version [65]int8 pkg syscall (linux-386), type WaitStatus uint32 pkg syscall (linux-386), var Stderr int pkg syscall (linux-386), var Stdin int pkg syscall (linux-386), var Stdout int pkg syscall (linux-386-cgo), const AF_ALG ideal-int pkg syscall (linux-386-cgo), const AF_APPLETALK ideal-int pkg syscall (linux-386-cgo), const AF_ASH ideal-int pkg syscall (linux-386-cgo), const AF_ATMPVC ideal-int pkg syscall (linux-386-cgo), const AF_ATMSVC ideal-int pkg syscall (linux-386-cgo), const AF_AX25 ideal-int pkg syscall (linux-386-cgo), const AF_BLUETOOTH ideal-int pkg syscall (linux-386-cgo), const AF_BRIDGE ideal-int pkg syscall (linux-386-cgo), const AF_CAIF ideal-int pkg syscall (linux-386-cgo), const AF_CAN ideal-int pkg syscall (linux-386-cgo), const AF_DECnet ideal-int pkg syscall (linux-386-cgo), const AF_ECONET ideal-int pkg syscall (linux-386-cgo), const AF_FILE ideal-int pkg syscall (linux-386-cgo), const AF_IEEE802154 ideal-int pkg syscall (linux-386-cgo), const AF_IPX ideal-int pkg syscall (linux-386-cgo), const AF_IRDA ideal-int pkg syscall (linux-386-cgo), const AF_ISDN ideal-int pkg syscall (linux-386-cgo), const AF_IUCV ideal-int pkg syscall (linux-386-cgo), const AF_KEY ideal-int pkg syscall (linux-386-cgo), const AF_LLC ideal-int pkg syscall (linux-386-cgo), const AF_LOCAL ideal-int pkg syscall (linux-386-cgo), const AF_MAX ideal-int pkg syscall (linux-386-cgo), const AF_NETBEUI ideal-int pkg syscall (linux-386-cgo), const AF_NETLINK ideal-int pkg syscall (linux-386-cgo), const AF_NETROM ideal-int pkg syscall (linux-386-cgo), const AF_PACKET ideal-int pkg syscall (linux-386-cgo), const AF_PHONET ideal-int pkg syscall (linux-386-cgo), const AF_PPPOX ideal-int pkg syscall (linux-386-cgo), const AF_RDS ideal-int pkg syscall (linux-386-cgo), const AF_ROSE ideal-int pkg syscall (linux-386-cgo), const AF_ROUTE ideal-int pkg syscall (linux-386-cgo), const AF_RXRPC ideal-int pkg syscall (linux-386-cgo), const AF_SECURITY ideal-int pkg syscall (linux-386-cgo), const AF_SNA ideal-int pkg syscall (linux-386-cgo), const AF_TIPC ideal-int pkg syscall (linux-386-cgo), const AF_WANPIPE ideal-int pkg syscall (linux-386-cgo), const AF_X25 ideal-int pkg syscall (linux-386-cgo), const ARPHRD_ADAPT ideal-int pkg syscall (linux-386-cgo), const ARPHRD_APPLETLK ideal-int pkg syscall (linux-386-cgo), const ARPHRD_ARCNET ideal-int pkg syscall (linux-386-cgo), const ARPHRD_ASH ideal-int pkg syscall (linux-386-cgo), const ARPHRD_ATM ideal-int pkg syscall (linux-386-cgo), const ARPHRD_AX25 ideal-int pkg syscall (linux-386-cgo), const ARPHRD_BIF ideal-int pkg syscall (linux-386-cgo), const ARPHRD_CHAOS ideal-int pkg syscall (linux-386-cgo), const ARPHRD_CISCO ideal-int pkg syscall (linux-386-cgo), const ARPHRD_CSLIP ideal-int pkg syscall (linux-386-cgo), const ARPHRD_CSLIP6 ideal-int pkg syscall (linux-386-cgo), const ARPHRD_DDCMP ideal-int pkg syscall (linux-386-cgo), const ARPHRD_DLCI ideal-int pkg syscall (linux-386-cgo), const ARPHRD_ECONET ideal-int pkg syscall (linux-386-cgo), const ARPHRD_EETHER ideal-int pkg syscall (linux-386-cgo), const ARPHRD_ETHER ideal-int pkg syscall (linux-386-cgo), const ARPHRD_EUI64 ideal-int pkg syscall (linux-386-cgo), const ARPHRD_FCAL ideal-int pkg syscall (linux-386-cgo), const ARPHRD_FCFABRIC ideal-int pkg syscall (linux-386-cgo), const ARPHRD_FCPL ideal-int pkg syscall (linux-386-cgo), const ARPHRD_FCPP ideal-int pkg syscall (linux-386-cgo), const ARPHRD_FDDI ideal-int pkg syscall (linux-386-cgo), const ARPHRD_FRAD ideal-int pkg syscall (linux-386-cgo), const ARPHRD_HDLC ideal-int pkg syscall (linux-386-cgo), const ARPHRD_HIPPI ideal-int pkg syscall (linux-386-cgo), const ARPHRD_HWX25 ideal-int pkg syscall (linux-386-cgo), const ARPHRD_IEEE1394 ideal-int pkg syscall (linux-386-cgo), const ARPHRD_IEEE802 ideal-int pkg syscall (linux-386-cgo), const ARPHRD_IEEE80211 ideal-int pkg syscall (linux-386-cgo), const ARPHRD_IEEE80211_PRISM ideal-int pkg syscall (linux-386-cgo), const ARPHRD_IEEE80211_RADIOTAP ideal-int pkg syscall (linux-386-cgo), const ARPHRD_IEEE802154 ideal-int pkg syscall (linux-386-cgo), const ARPHRD_IEEE802154_PHY ideal-int pkg syscall (linux-386-cgo), const ARPHRD_IEEE802_TR ideal-int pkg syscall (linux-386-cgo), const ARPHRD_INFINIBAND ideal-int pkg syscall (linux-386-cgo), const ARPHRD_IPDDP ideal-int pkg syscall (linux-386-cgo), const ARPHRD_IPGRE ideal-int pkg syscall (linux-386-cgo), const ARPHRD_IRDA ideal-int pkg syscall (linux-386-cgo), const ARPHRD_LAPB ideal-int pkg syscall (linux-386-cgo), const ARPHRD_LOCALTLK ideal-int pkg syscall (linux-386-cgo), const ARPHRD_LOOPBACK ideal-int pkg syscall (linux-386-cgo), const ARPHRD_METRICOM ideal-int pkg syscall (linux-386-cgo), const ARPHRD_NETROM ideal-int pkg syscall (linux-386-cgo), const ARPHRD_NONE ideal-int pkg syscall (linux-386-cgo), const ARPHRD_PIMREG ideal-int pkg syscall (linux-386-cgo), const ARPHRD_PPP ideal-int pkg syscall (linux-386-cgo), const ARPHRD_PRONET ideal-int pkg syscall (linux-386-cgo), const ARPHRD_RAWHDLC ideal-int pkg syscall (linux-386-cgo), const ARPHRD_ROSE ideal-int pkg syscall (linux-386-cgo), const ARPHRD_RSRVD ideal-int pkg syscall (linux-386-cgo), const ARPHRD_SIT ideal-int pkg syscall (linux-386-cgo), const ARPHRD_SKIP ideal-int pkg syscall (linux-386-cgo), const ARPHRD_SLIP ideal-int pkg syscall (linux-386-cgo), const ARPHRD_SLIP6 ideal-int pkg syscall (linux-386-cgo), const ARPHRD_TUNNEL ideal-int pkg syscall (linux-386-cgo), const ARPHRD_TUNNEL6 ideal-int pkg syscall (linux-386-cgo), const ARPHRD_VOID ideal-int pkg syscall (linux-386-cgo), const ARPHRD_X25 ideal-int pkg syscall (linux-386-cgo), const B0 ideal-int pkg syscall (linux-386-cgo), const B1000000 ideal-int pkg syscall (linux-386-cgo), const B110 ideal-int pkg syscall (linux-386-cgo), const B115200 ideal-int pkg syscall (linux-386-cgo), const B1152000 ideal-int pkg syscall (linux-386-cgo), const B1200 ideal-int pkg syscall (linux-386-cgo), const B134 ideal-int pkg syscall (linux-386-cgo), const B150 ideal-int pkg syscall (linux-386-cgo), const B1500000 ideal-int pkg syscall (linux-386-cgo), const B1800 ideal-int pkg syscall (linux-386-cgo), const B19200 ideal-int pkg syscall (linux-386-cgo), const B200 ideal-int pkg syscall (linux-386-cgo), const B2000000 ideal-int pkg syscall (linux-386-cgo), const B230400 ideal-int pkg syscall (linux-386-cgo), const B2400 ideal-int pkg syscall (linux-386-cgo), const B2500000 ideal-int pkg syscall (linux-386-cgo), const B300 ideal-int pkg syscall (linux-386-cgo), const B3000000 ideal-int pkg syscall (linux-386-cgo), const B3500000 ideal-int pkg syscall (linux-386-cgo), const B38400 ideal-int pkg syscall (linux-386-cgo), const B4000000 ideal-int pkg syscall (linux-386-cgo), const B460800 ideal-int pkg syscall (linux-386-cgo), const B4800 ideal-int pkg syscall (linux-386-cgo), const B50 ideal-int pkg syscall (linux-386-cgo), const B500000 ideal-int pkg syscall (linux-386-cgo), const B57600 ideal-int pkg syscall (linux-386-cgo), const B576000 ideal-int pkg syscall (linux-386-cgo), const B600 ideal-int pkg syscall (linux-386-cgo), const B75 ideal-int pkg syscall (linux-386-cgo), const B921600 ideal-int pkg syscall (linux-386-cgo), const B9600 ideal-int pkg syscall (linux-386-cgo), const BPF_A ideal-int pkg syscall (linux-386-cgo), const BPF_ABS ideal-int pkg syscall (linux-386-cgo), const BPF_ADD ideal-int pkg syscall (linux-386-cgo), const BPF_ALU ideal-int pkg syscall (linux-386-cgo), const BPF_AND ideal-int pkg syscall (linux-386-cgo), const BPF_B ideal-int pkg syscall (linux-386-cgo), const BPF_DIV ideal-int pkg syscall (linux-386-cgo), const BPF_H ideal-int pkg syscall (linux-386-cgo), const BPF_IMM ideal-int pkg syscall (linux-386-cgo), const BPF_IND ideal-int pkg syscall (linux-386-cgo), const BPF_JA ideal-int pkg syscall (linux-386-cgo), const BPF_JEQ ideal-int pkg syscall (linux-386-cgo), const BPF_JGE ideal-int pkg syscall (linux-386-cgo), const BPF_JGT ideal-int pkg syscall (linux-386-cgo), const BPF_JMP ideal-int pkg syscall (linux-386-cgo), const BPF_JSET ideal-int pkg syscall (linux-386-cgo), const BPF_K ideal-int pkg syscall (linux-386-cgo), const BPF_LD ideal-int pkg syscall (linux-386-cgo), const BPF_LDX ideal-int pkg syscall (linux-386-cgo), const BPF_LEN ideal-int pkg syscall (linux-386-cgo), const BPF_LSH ideal-int pkg syscall (linux-386-cgo), const BPF_MAJOR_VERSION ideal-int pkg syscall (linux-386-cgo), const BPF_MAXINSNS ideal-int pkg syscall (linux-386-cgo), const BPF_MEM ideal-int pkg syscall (linux-386-cgo), const BPF_MEMWORDS ideal-int pkg syscall (linux-386-cgo), const BPF_MINOR_VERSION ideal-int pkg syscall (linux-386-cgo), const BPF_MISC ideal-int pkg syscall (linux-386-cgo), const BPF_MSH ideal-int pkg syscall (linux-386-cgo), const BPF_MUL ideal-int pkg syscall (linux-386-cgo), const BPF_NEG ideal-int pkg syscall (linux-386-cgo), const BPF_OR ideal-int pkg syscall (linux-386-cgo), const BPF_RET ideal-int pkg syscall (linux-386-cgo), const BPF_RSH ideal-int pkg syscall (linux-386-cgo), const BPF_ST ideal-int pkg syscall (linux-386-cgo), const BPF_STX ideal-int pkg syscall (linux-386-cgo), const BPF_SUB ideal-int pkg syscall (linux-386-cgo), const BPF_TAX ideal-int pkg syscall (linux-386-cgo), const BPF_TXA ideal-int pkg syscall (linux-386-cgo), const BPF_W ideal-int pkg syscall (linux-386-cgo), const BPF_X ideal-int pkg syscall (linux-386-cgo), const BRKINT ideal-int pkg syscall (linux-386-cgo), const CLOCAL ideal-int pkg syscall (linux-386-cgo), const CREAD ideal-int pkg syscall (linux-386-cgo), const CS5 ideal-int pkg syscall (linux-386-cgo), const CS6 ideal-int pkg syscall (linux-386-cgo), const CS7 ideal-int pkg syscall (linux-386-cgo), const CS8 ideal-int pkg syscall (linux-386-cgo), const CSIZE ideal-int pkg syscall (linux-386-cgo), const CSTOPB ideal-int pkg syscall (linux-386-cgo), const DT_BLK ideal-int pkg syscall (linux-386-cgo), const DT_CHR ideal-int pkg syscall (linux-386-cgo), const DT_DIR ideal-int pkg syscall (linux-386-cgo), const DT_FIFO ideal-int pkg syscall (linux-386-cgo), const DT_LNK ideal-int pkg syscall (linux-386-cgo), const DT_REG ideal-int pkg syscall (linux-386-cgo), const DT_SOCK ideal-int pkg syscall (linux-386-cgo), const DT_UNKNOWN ideal-int pkg syscall (linux-386-cgo), const DT_WHT ideal-int pkg syscall (linux-386-cgo), const EADV Errno pkg syscall (linux-386-cgo), const EBADE Errno pkg syscall (linux-386-cgo), const EBADFD Errno pkg syscall (linux-386-cgo), const EBADMSG Errno pkg syscall (linux-386-cgo), const EBADR Errno pkg syscall (linux-386-cgo), const EBADRQC Errno pkg syscall (linux-386-cgo), const EBADSLT Errno pkg syscall (linux-386-cgo), const EBFONT Errno pkg syscall (linux-386-cgo), const ECHO ideal-int pkg syscall (linux-386-cgo), const ECHOCTL ideal-int pkg syscall (linux-386-cgo), const ECHOE ideal-int pkg syscall (linux-386-cgo), const ECHOK ideal-int pkg syscall (linux-386-cgo), const ECHOKE ideal-int pkg syscall (linux-386-cgo), const ECHONL ideal-int pkg syscall (linux-386-cgo), const ECHOPRT ideal-int pkg syscall (linux-386-cgo), const ECHRNG Errno pkg syscall (linux-386-cgo), const ECOMM Errno pkg syscall (linux-386-cgo), const EDEADLOCK Errno pkg syscall (linux-386-cgo), const EDOTDOT Errno pkg syscall (linux-386-cgo), const EISNAM Errno pkg syscall (linux-386-cgo), const EKEYEXPIRED Errno pkg syscall (linux-386-cgo), const EKEYREJECTED Errno pkg syscall (linux-386-cgo), const EKEYREVOKED Errno pkg syscall (linux-386-cgo), const EL2HLT Errno pkg syscall (linux-386-cgo), const EL2NSYNC Errno pkg syscall (linux-386-cgo), const EL3HLT Errno pkg syscall (linux-386-cgo), const EL3RST Errno pkg syscall (linux-386-cgo), const ELIBACC Errno pkg syscall (linux-386-cgo), const ELIBBAD Errno pkg syscall (linux-386-cgo), const ELIBEXEC Errno pkg syscall (linux-386-cgo), const ELIBMAX Errno pkg syscall (linux-386-cgo), const ELIBSCN Errno pkg syscall (linux-386-cgo), const ELNRNG Errno pkg syscall (linux-386-cgo), const EMEDIUMTYPE Errno pkg syscall (linux-386-cgo), const EMULTIHOP Errno pkg syscall (linux-386-cgo), const ENAVAIL Errno pkg syscall (linux-386-cgo), const ENOANO Errno pkg syscall (linux-386-cgo), const ENOCSI Errno pkg syscall (linux-386-cgo), const ENODATA Errno pkg syscall (linux-386-cgo), const ENOKEY Errno pkg syscall (linux-386-cgo), const ENOLINK Errno pkg syscall (linux-386-cgo), const ENOMEDIUM Errno pkg syscall (linux-386-cgo), const ENONET Errno pkg syscall (linux-386-cgo), const ENOPKG Errno pkg syscall (linux-386-cgo), const ENOSR Errno pkg syscall (linux-386-cgo), const ENOSTR Errno pkg syscall (linux-386-cgo), const ENOTNAM Errno pkg syscall (linux-386-cgo), const ENOTRECOVERABLE Errno pkg syscall (linux-386-cgo), const ENOTUNIQ Errno pkg syscall (linux-386-cgo), const EOWNERDEAD Errno pkg syscall (linux-386-cgo), const EPOLLERR ideal-int pkg syscall (linux-386-cgo), const EPOLLET ideal-int pkg syscall (linux-386-cgo), const EPOLLHUP ideal-int pkg syscall (linux-386-cgo), const EPOLLIN ideal-int pkg syscall (linux-386-cgo), const EPOLLMSG ideal-int pkg syscall (linux-386-cgo), const EPOLLONESHOT ideal-int pkg syscall (linux-386-cgo), const EPOLLOUT ideal-int pkg syscall (linux-386-cgo), const EPOLLPRI ideal-int pkg syscall (linux-386-cgo), const EPOLLRDBAND ideal-int pkg syscall (linux-386-cgo), const EPOLLRDHUP ideal-int pkg syscall (linux-386-cgo), const EPOLLRDNORM ideal-int pkg syscall (linux-386-cgo), const EPOLLWRBAND ideal-int pkg syscall (linux-386-cgo), const EPOLLWRNORM ideal-int pkg syscall (linux-386-cgo), const EPOLL_CLOEXEC ideal-int pkg syscall (linux-386-cgo), const EPOLL_CTL_ADD ideal-int pkg syscall (linux-386-cgo), const EPOLL_CTL_DEL ideal-int pkg syscall (linux-386-cgo), const EPOLL_CTL_MOD ideal-int pkg syscall (linux-386-cgo), const EPOLL_NONBLOCK ideal-int pkg syscall (linux-386-cgo), const EPROTO Errno pkg syscall (linux-386-cgo), const EREMCHG Errno pkg syscall (linux-386-cgo), const EREMOTEIO Errno pkg syscall (linux-386-cgo), const ERESTART Errno pkg syscall (linux-386-cgo), const ERFKILL Errno pkg syscall (linux-386-cgo), const ESRMNT Errno pkg syscall (linux-386-cgo), const ESTRPIPE Errno pkg syscall (linux-386-cgo), const ETH_P_1588 ideal-int pkg syscall (linux-386-cgo), const ETH_P_8021Q ideal-int pkg syscall (linux-386-cgo), const ETH_P_802_2 ideal-int pkg syscall (linux-386-cgo), const ETH_P_802_3 ideal-int pkg syscall (linux-386-cgo), const ETH_P_AARP ideal-int pkg syscall (linux-386-cgo), const ETH_P_ALL ideal-int pkg syscall (linux-386-cgo), const ETH_P_AOE ideal-int pkg syscall (linux-386-cgo), const ETH_P_ARCNET ideal-int pkg syscall (linux-386-cgo), const ETH_P_ARP ideal-int pkg syscall (linux-386-cgo), const ETH_P_ATALK ideal-int pkg syscall (linux-386-cgo), const ETH_P_ATMFATE ideal-int pkg syscall (linux-386-cgo), const ETH_P_ATMMPOA ideal-int pkg syscall (linux-386-cgo), const ETH_P_AX25 ideal-int pkg syscall (linux-386-cgo), const ETH_P_BPQ ideal-int pkg syscall (linux-386-cgo), const ETH_P_CAIF ideal-int pkg syscall (linux-386-cgo), const ETH_P_CAN ideal-int pkg syscall (linux-386-cgo), const ETH_P_CONTROL ideal-int pkg syscall (linux-386-cgo), const ETH_P_CUST ideal-int pkg syscall (linux-386-cgo), const ETH_P_DDCMP ideal-int pkg syscall (linux-386-cgo), const ETH_P_DEC ideal-int pkg syscall (linux-386-cgo), const ETH_P_DIAG ideal-int pkg syscall (linux-386-cgo), const ETH_P_DNA_DL ideal-int pkg syscall (linux-386-cgo), const ETH_P_DNA_RC ideal-int pkg syscall (linux-386-cgo), const ETH_P_DNA_RT ideal-int pkg syscall (linux-386-cgo), const ETH_P_DSA ideal-int pkg syscall (linux-386-cgo), const ETH_P_ECONET ideal-int pkg syscall (linux-386-cgo), const ETH_P_EDSA ideal-int pkg syscall (linux-386-cgo), const ETH_P_FCOE ideal-int pkg syscall (linux-386-cgo), const ETH_P_FIP ideal-int pkg syscall (linux-386-cgo), const ETH_P_HDLC ideal-int pkg syscall (linux-386-cgo), const ETH_P_IEEE802154 ideal-int pkg syscall (linux-386-cgo), const ETH_P_IEEEPUP ideal-int pkg syscall (linux-386-cgo), const ETH_P_IEEEPUPAT ideal-int pkg syscall (linux-386-cgo), const ETH_P_IP ideal-int pkg syscall (linux-386-cgo), const ETH_P_IPV6 ideal-int pkg syscall (linux-386-cgo), const ETH_P_IPX ideal-int pkg syscall (linux-386-cgo), const ETH_P_IRDA ideal-int pkg syscall (linux-386-cgo), const ETH_P_LAT ideal-int pkg syscall (linux-386-cgo), const ETH_P_LINK_CTL ideal-int pkg syscall (linux-386-cgo), const ETH_P_LOCALTALK ideal-int pkg syscall (linux-386-cgo), const ETH_P_LOOP ideal-int pkg syscall (linux-386-cgo), const ETH_P_MOBITEX ideal-int pkg syscall (linux-386-cgo), const ETH_P_MPLS_MC ideal-int pkg syscall (linux-386-cgo), const ETH_P_MPLS_UC ideal-int pkg syscall (linux-386-cgo), const ETH_P_PAE ideal-int pkg syscall (linux-386-cgo), const ETH_P_PAUSE ideal-int pkg syscall (linux-386-cgo), const ETH_P_PHONET ideal-int pkg syscall (linux-386-cgo), const ETH_P_PPPTALK ideal-int pkg syscall (linux-386-cgo), const ETH_P_PPP_DISC ideal-int pkg syscall (linux-386-cgo), const ETH_P_PPP_MP ideal-int pkg syscall (linux-386-cgo), const ETH_P_PPP_SES ideal-int pkg syscall (linux-386-cgo), const ETH_P_PUP ideal-int pkg syscall (linux-386-cgo), const ETH_P_PUPAT ideal-int pkg syscall (linux-386-cgo), const ETH_P_RARP ideal-int pkg syscall (linux-386-cgo), const ETH_P_SCA ideal-int pkg syscall (linux-386-cgo), const ETH_P_SLOW ideal-int pkg syscall (linux-386-cgo), const ETH_P_SNAP ideal-int pkg syscall (linux-386-cgo), const ETH_P_TEB ideal-int pkg syscall (linux-386-cgo), const ETH_P_TIPC ideal-int pkg syscall (linux-386-cgo), const ETH_P_TRAILER ideal-int pkg syscall (linux-386-cgo), const ETH_P_TR_802_2 ideal-int pkg syscall (linux-386-cgo), const ETH_P_WAN_PPP ideal-int pkg syscall (linux-386-cgo), const ETH_P_WCCP ideal-int pkg syscall (linux-386-cgo), const ETH_P_X25 ideal-int pkg syscall (linux-386-cgo), const ETIME Errno pkg syscall (linux-386-cgo), const EUCLEAN Errno pkg syscall (linux-386-cgo), const EUNATCH Errno pkg syscall (linux-386-cgo), const EXFULL Errno pkg syscall (linux-386-cgo), const FD_CLOEXEC ideal-int pkg syscall (linux-386-cgo), const FD_SETSIZE ideal-int pkg syscall (linux-386-cgo), const FLUSHO ideal-int pkg syscall (linux-386-cgo), const F_DUPFD ideal-int pkg syscall (linux-386-cgo), const F_DUPFD_CLOEXEC ideal-int pkg syscall (linux-386-cgo), const F_EXLCK ideal-int pkg syscall (linux-386-cgo), const F_GETFD ideal-int pkg syscall (linux-386-cgo), const F_GETFL ideal-int pkg syscall (linux-386-cgo), const F_GETLEASE ideal-int pkg syscall (linux-386-cgo), const F_GETLK ideal-int pkg syscall (linux-386-cgo), const F_GETLK64 ideal-int pkg syscall (linux-386-cgo), const F_GETOWN ideal-int pkg syscall (linux-386-cgo), const F_GETOWN_EX ideal-int pkg syscall (linux-386-cgo), const F_GETPIPE_SZ ideal-int pkg syscall (linux-386-cgo), const F_GETSIG ideal-int pkg syscall (linux-386-cgo), const F_LOCK ideal-int pkg syscall (linux-386-cgo), const F_NOTIFY ideal-int pkg syscall (linux-386-cgo), const F_OK ideal-int pkg syscall (linux-386-cgo), const F_RDLCK ideal-int pkg syscall (linux-386-cgo), const F_SETFD ideal-int pkg syscall (linux-386-cgo), const F_SETFL ideal-int pkg syscall (linux-386-cgo), const F_SETLEASE ideal-int pkg syscall (linux-386-cgo), const F_SETLK ideal-int pkg syscall (linux-386-cgo), const F_SETLK64 ideal-int pkg syscall (linux-386-cgo), const F_SETLKW ideal-int pkg syscall (linux-386-cgo), const F_SETLKW64 ideal-int pkg syscall (linux-386-cgo), const F_SETOWN ideal-int pkg syscall (linux-386-cgo), const F_SETOWN_EX ideal-int pkg syscall (linux-386-cgo), const F_SETPIPE_SZ ideal-int pkg syscall (linux-386-cgo), const F_SETSIG ideal-int pkg syscall (linux-386-cgo), const F_SHLCK ideal-int pkg syscall (linux-386-cgo), const F_TEST ideal-int pkg syscall (linux-386-cgo), const F_TLOCK ideal-int pkg syscall (linux-386-cgo), const F_ULOCK ideal-int pkg syscall (linux-386-cgo), const F_UNLCK ideal-int pkg syscall (linux-386-cgo), const F_WRLCK ideal-int pkg syscall (linux-386-cgo), const HUPCL ideal-int pkg syscall (linux-386-cgo), const ICANON ideal-int pkg syscall (linux-386-cgo), const ICRNL ideal-int pkg syscall (linux-386-cgo), const IEXTEN ideal-int pkg syscall (linux-386-cgo), const IFA_ADDRESS ideal-int pkg syscall (linux-386-cgo), const IFA_ANYCAST ideal-int pkg syscall (linux-386-cgo), const IFA_BROADCAST ideal-int pkg syscall (linux-386-cgo), const IFA_CACHEINFO ideal-int pkg syscall (linux-386-cgo), const IFA_F_DADFAILED ideal-int pkg syscall (linux-386-cgo), const IFA_F_DEPRECATED ideal-int pkg syscall (linux-386-cgo), const IFA_F_HOMEADDRESS ideal-int pkg syscall (linux-386-cgo), const IFA_F_NODAD ideal-int pkg syscall (linux-386-cgo), const IFA_F_OPTIMISTIC ideal-int pkg syscall (linux-386-cgo), const IFA_F_PERMANENT ideal-int pkg syscall (linux-386-cgo), const IFA_F_SECONDARY ideal-int pkg syscall (linux-386-cgo), const IFA_F_TEMPORARY ideal-int pkg syscall (linux-386-cgo), const IFA_F_TENTATIVE ideal-int pkg syscall (linux-386-cgo), const IFA_LABEL ideal-int pkg syscall (linux-386-cgo), const IFA_LOCAL ideal-int pkg syscall (linux-386-cgo), const IFA_MAX ideal-int pkg syscall (linux-386-cgo), const IFA_MULTICAST ideal-int pkg syscall (linux-386-cgo), const IFA_UNSPEC ideal-int pkg syscall (linux-386-cgo), const IFF_ALLMULTI ideal-int pkg syscall (linux-386-cgo), const IFF_AUTOMEDIA ideal-int pkg syscall (linux-386-cgo), const IFF_DEBUG ideal-int pkg syscall (linux-386-cgo), const IFF_DYNAMIC ideal-int pkg syscall (linux-386-cgo), const IFF_MASTER ideal-int pkg syscall (linux-386-cgo), const IFF_NOARP ideal-int pkg syscall (linux-386-cgo), const IFF_NOTRAILERS ideal-int pkg syscall (linux-386-cgo), const IFF_NO_PI ideal-int pkg syscall (linux-386-cgo), const IFF_ONE_QUEUE ideal-int pkg syscall (linux-386-cgo), const IFF_POINTOPOINT ideal-int pkg syscall (linux-386-cgo), const IFF_PORTSEL ideal-int pkg syscall (linux-386-cgo), const IFF_PROMISC ideal-int pkg syscall (linux-386-cgo), const IFF_RUNNING ideal-int pkg syscall (linux-386-cgo), const IFF_SLAVE ideal-int pkg syscall (linux-386-cgo), const IFF_TAP ideal-int pkg syscall (linux-386-cgo), const IFF_TUN ideal-int pkg syscall (linux-386-cgo), const IFF_TUN_EXCL ideal-int pkg syscall (linux-386-cgo), const IFF_VNET_HDR ideal-int pkg syscall (linux-386-cgo), const IFLA_ADDRESS ideal-int pkg syscall (linux-386-cgo), const IFLA_BROADCAST ideal-int pkg syscall (linux-386-cgo), const IFLA_COST ideal-int pkg syscall (linux-386-cgo), const IFLA_IFALIAS ideal-int pkg syscall (linux-386-cgo), const IFLA_IFNAME ideal-int pkg syscall (linux-386-cgo), const IFLA_LINK ideal-int pkg syscall (linux-386-cgo), const IFLA_LINKINFO ideal-int pkg syscall (linux-386-cgo), const IFLA_LINKMODE ideal-int pkg syscall (linux-386-cgo), const IFLA_MAP ideal-int pkg syscall (linux-386-cgo), const IFLA_MASTER ideal-int pkg syscall (linux-386-cgo), const IFLA_MAX ideal-int pkg syscall (linux-386-cgo), const IFLA_MTU ideal-int pkg syscall (linux-386-cgo), const IFLA_NET_NS_PID ideal-int pkg syscall (linux-386-cgo), const IFLA_OPERSTATE ideal-int pkg syscall (linux-386-cgo), const IFLA_PRIORITY ideal-int pkg syscall (linux-386-cgo), const IFLA_PROTINFO ideal-int pkg syscall (linux-386-cgo), const IFLA_QDISC ideal-int pkg syscall (linux-386-cgo), const IFLA_STATS ideal-int pkg syscall (linux-386-cgo), const IFLA_TXQLEN ideal-int pkg syscall (linux-386-cgo), const IFLA_UNSPEC ideal-int pkg syscall (linux-386-cgo), const IFLA_WEIGHT ideal-int pkg syscall (linux-386-cgo), const IFLA_WIRELESS ideal-int pkg syscall (linux-386-cgo), const IFNAMSIZ ideal-int pkg syscall (linux-386-cgo), const IGNBRK ideal-int pkg syscall (linux-386-cgo), const IGNCR ideal-int pkg syscall (linux-386-cgo), const IGNPAR ideal-int pkg syscall (linux-386-cgo), const IMAXBEL ideal-int pkg syscall (linux-386-cgo), const INLCR ideal-int pkg syscall (linux-386-cgo), const INPCK ideal-int pkg syscall (linux-386-cgo), const IN_ACCESS ideal-int pkg syscall (linux-386-cgo), const IN_ALL_EVENTS ideal-int pkg syscall (linux-386-cgo), const IN_ATTRIB ideal-int pkg syscall (linux-386-cgo), const IN_CLASSA_HOST ideal-int pkg syscall (linux-386-cgo), const IN_CLASSA_MAX ideal-int pkg syscall (linux-386-cgo), const IN_CLASSA_NET ideal-int pkg syscall (linux-386-cgo), const IN_CLASSA_NSHIFT ideal-int pkg syscall (linux-386-cgo), const IN_CLASSB_HOST ideal-int pkg syscall (linux-386-cgo), const IN_CLASSB_MAX ideal-int pkg syscall (linux-386-cgo), const IN_CLASSB_NET ideal-int pkg syscall (linux-386-cgo), const IN_CLASSB_NSHIFT ideal-int pkg syscall (linux-386-cgo), const IN_CLASSC_HOST ideal-int pkg syscall (linux-386-cgo), const IN_CLASSC_NET ideal-int pkg syscall (linux-386-cgo), const IN_CLASSC_NSHIFT ideal-int pkg syscall (linux-386-cgo), const IN_CLOEXEC ideal-int pkg syscall (linux-386-cgo), const IN_CLOSE ideal-int pkg syscall (linux-386-cgo), const IN_CLOSE_NOWRITE ideal-int pkg syscall (linux-386-cgo), const IN_CLOSE_WRITE ideal-int pkg syscall (linux-386-cgo), const IN_CREATE ideal-int pkg syscall (linux-386-cgo), const IN_DELETE ideal-int pkg syscall (linux-386-cgo), const IN_DELETE_SELF ideal-int pkg syscall (linux-386-cgo), const IN_DONT_FOLLOW ideal-int pkg syscall (linux-386-cgo), const IN_EXCL_UNLINK ideal-int pkg syscall (linux-386-cgo), const IN_IGNORED ideal-int pkg syscall (linux-386-cgo), const IN_ISDIR ideal-int pkg syscall (linux-386-cgo), const IN_LOOPBACKNET ideal-int pkg syscall (linux-386-cgo), const IN_MASK_ADD ideal-int pkg syscall (linux-386-cgo), const IN_MODIFY ideal-int pkg syscall (linux-386-cgo), const IN_MOVE ideal-int pkg syscall (linux-386-cgo), const IN_MOVED_FROM ideal-int pkg syscall (linux-386-cgo), const IN_MOVED_TO ideal-int pkg syscall (linux-386-cgo), const IN_MOVE_SELF ideal-int pkg syscall (linux-386-cgo), const IN_NONBLOCK ideal-int pkg syscall (linux-386-cgo), const IN_ONESHOT ideal-int pkg syscall (linux-386-cgo), const IN_ONLYDIR ideal-int pkg syscall (linux-386-cgo), const IN_OPEN ideal-int pkg syscall (linux-386-cgo), const IN_Q_OVERFLOW ideal-int pkg syscall (linux-386-cgo), const IN_UNMOUNT ideal-int pkg syscall (linux-386-cgo), const IPPROTO_AH ideal-int pkg syscall (linux-386-cgo), const IPPROTO_COMP ideal-int pkg syscall (linux-386-cgo), const IPPROTO_DCCP ideal-int pkg syscall (linux-386-cgo), const IPPROTO_DSTOPTS ideal-int pkg syscall (linux-386-cgo), const IPPROTO_EGP ideal-int pkg syscall (linux-386-cgo), const IPPROTO_ENCAP ideal-int pkg syscall (linux-386-cgo), const IPPROTO_ESP ideal-int pkg syscall (linux-386-cgo), const IPPROTO_FRAGMENT ideal-int pkg syscall (linux-386-cgo), const IPPROTO_GRE ideal-int pkg syscall (linux-386-cgo), const IPPROTO_HOPOPTS ideal-int pkg syscall (linux-386-cgo), const IPPROTO_ICMP ideal-int pkg syscall (linux-386-cgo), const IPPROTO_ICMPV6 ideal-int pkg syscall (linux-386-cgo), const IPPROTO_IDP ideal-int pkg syscall (linux-386-cgo), const IPPROTO_IGMP ideal-int pkg syscall (linux-386-cgo), const IPPROTO_IPIP ideal-int pkg syscall (linux-386-cgo), const IPPROTO_MTP ideal-int pkg syscall (linux-386-cgo), const IPPROTO_NONE ideal-int pkg syscall (linux-386-cgo), const IPPROTO_PIM ideal-int pkg syscall (linux-386-cgo), const IPPROTO_PUP ideal-int pkg syscall (linux-386-cgo), const IPPROTO_RAW ideal-int pkg syscall (linux-386-cgo), const IPPROTO_ROUTING ideal-int pkg syscall (linux-386-cgo), const IPPROTO_RSVP ideal-int pkg syscall (linux-386-cgo), const IPPROTO_SCTP ideal-int pkg syscall (linux-386-cgo), const IPPROTO_TP ideal-int pkg syscall (linux-386-cgo), const IPPROTO_UDPLITE ideal-int pkg syscall (linux-386-cgo), const IPV6_2292DSTOPTS ideal-int pkg syscall (linux-386-cgo), const IPV6_2292HOPLIMIT ideal-int pkg syscall (linux-386-cgo), const IPV6_2292HOPOPTS ideal-int pkg syscall (linux-386-cgo), const IPV6_2292PKTINFO ideal-int pkg syscall (linux-386-cgo), const IPV6_2292PKTOPTIONS ideal-int pkg syscall (linux-386-cgo), const IPV6_2292RTHDR ideal-int pkg syscall (linux-386-cgo), const IPV6_ADDRFORM ideal-int pkg syscall (linux-386-cgo), const IPV6_ADD_MEMBERSHIP ideal-int pkg syscall (linux-386-cgo), const IPV6_AUTHHDR ideal-int pkg syscall (linux-386-cgo), const IPV6_CHECKSUM ideal-int pkg syscall (linux-386-cgo), const IPV6_DROP_MEMBERSHIP ideal-int pkg syscall (linux-386-cgo), const IPV6_DSTOPTS ideal-int pkg syscall (linux-386-cgo), const IPV6_HOPLIMIT ideal-int pkg syscall (linux-386-cgo), const IPV6_HOPOPTS ideal-int pkg syscall (linux-386-cgo), const IPV6_IPSEC_POLICY ideal-int pkg syscall (linux-386-cgo), const IPV6_JOIN_ANYCAST ideal-int pkg syscall (linux-386-cgo), const IPV6_LEAVE_ANYCAST ideal-int pkg syscall (linux-386-cgo), const IPV6_MTU ideal-int pkg syscall (linux-386-cgo), const IPV6_MTU_DISCOVER ideal-int pkg syscall (linux-386-cgo), const IPV6_NEXTHOP ideal-int pkg syscall (linux-386-cgo), const IPV6_PKTINFO ideal-int pkg syscall (linux-386-cgo), const IPV6_PMTUDISC_DO ideal-int pkg syscall (linux-386-cgo), const IPV6_PMTUDISC_DONT ideal-int pkg syscall (linux-386-cgo), const IPV6_PMTUDISC_PROBE ideal-int pkg syscall (linux-386-cgo), const IPV6_PMTUDISC_WANT ideal-int pkg syscall (linux-386-cgo), const IPV6_RECVDSTOPTS ideal-int pkg syscall (linux-386-cgo), const IPV6_RECVERR ideal-int pkg syscall (linux-386-cgo), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (linux-386-cgo), const IPV6_RECVHOPOPTS ideal-int pkg syscall (linux-386-cgo), const IPV6_RECVPKTINFO ideal-int pkg syscall (linux-386-cgo), const IPV6_RECVRTHDR ideal-int pkg syscall (linux-386-cgo), const IPV6_RECVTCLASS ideal-int pkg syscall (linux-386-cgo), const IPV6_ROUTER_ALERT ideal-int pkg syscall (linux-386-cgo), const IPV6_RTHDR ideal-int pkg syscall (linux-386-cgo), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (linux-386-cgo), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (linux-386-cgo), const IPV6_RTHDR_STRICT ideal-int pkg syscall (linux-386-cgo), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (linux-386-cgo), const IPV6_RXDSTOPTS ideal-int pkg syscall (linux-386-cgo), const IPV6_RXHOPOPTS ideal-int pkg syscall (linux-386-cgo), const IPV6_TCLASS ideal-int pkg syscall (linux-386-cgo), const IPV6_XFRM_POLICY ideal-int pkg syscall (linux-386-cgo), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (linux-386-cgo), const IP_BLOCK_SOURCE ideal-int pkg syscall (linux-386-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (linux-386-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (linux-386-cgo), const IP_DF ideal-int pkg syscall (linux-386-cgo), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (linux-386-cgo), const IP_FREEBIND ideal-int pkg syscall (linux-386-cgo), const IP_HDRINCL ideal-int pkg syscall (linux-386-cgo), const IP_IPSEC_POLICY ideal-int pkg syscall (linux-386-cgo), const IP_MAXPACKET ideal-int pkg syscall (linux-386-cgo), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (linux-386-cgo), const IP_MF ideal-int pkg syscall (linux-386-cgo), const IP_MINTTL ideal-int pkg syscall (linux-386-cgo), const IP_MSFILTER ideal-int pkg syscall (linux-386-cgo), const IP_MSS ideal-int pkg syscall (linux-386-cgo), const IP_MTU ideal-int pkg syscall (linux-386-cgo), const IP_MTU_DISCOVER ideal-int pkg syscall (linux-386-cgo), const IP_OFFMASK ideal-int pkg syscall (linux-386-cgo), const IP_OPTIONS ideal-int pkg syscall (linux-386-cgo), const IP_ORIGDSTADDR ideal-int pkg syscall (linux-386-cgo), const IP_PASSSEC ideal-int pkg syscall (linux-386-cgo), const IP_PKTINFO ideal-int pkg syscall (linux-386-cgo), const IP_PKTOPTIONS ideal-int pkg syscall (linux-386-cgo), const IP_PMTUDISC ideal-int pkg syscall (linux-386-cgo), const IP_PMTUDISC_DO ideal-int pkg syscall (linux-386-cgo), const IP_PMTUDISC_DONT ideal-int pkg syscall (linux-386-cgo), const IP_PMTUDISC_PROBE ideal-int pkg syscall (linux-386-cgo), const IP_PMTUDISC_WANT ideal-int pkg syscall (linux-386-cgo), const IP_RECVERR ideal-int pkg syscall (linux-386-cgo), const IP_RECVOPTS ideal-int pkg syscall (linux-386-cgo), const IP_RECVORIGDSTADDR ideal-int pkg syscall (linux-386-cgo), const IP_RECVRETOPTS ideal-int pkg syscall (linux-386-cgo), const IP_RECVTOS ideal-int pkg syscall (linux-386-cgo), const IP_RECVTTL ideal-int pkg syscall (linux-386-cgo), const IP_RETOPTS ideal-int pkg syscall (linux-386-cgo), const IP_RF ideal-int pkg syscall (linux-386-cgo), const IP_ROUTER_ALERT ideal-int pkg syscall (linux-386-cgo), const IP_TRANSPARENT ideal-int pkg syscall (linux-386-cgo), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (linux-386-cgo), const IP_XFRM_POLICY ideal-int pkg syscall (linux-386-cgo), const ISIG ideal-int pkg syscall (linux-386-cgo), const ISTRIP ideal-int pkg syscall (linux-386-cgo), const IUCLC ideal-int pkg syscall (linux-386-cgo), const IUTF8 ideal-int pkg syscall (linux-386-cgo), const IXANY ideal-int pkg syscall (linux-386-cgo), const IXOFF ideal-int pkg syscall (linux-386-cgo), const IXON ideal-int pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_CAD_OFF ideal-int pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_CAD_ON ideal-int pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_HALT ideal-int pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_KEXEC ideal-int pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_POWER_OFF ideal-int pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_RESTART ideal-int pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_RESTART2 ideal-int pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_SW_SUSPEND ideal-int pkg syscall (linux-386-cgo), const LINUX_REBOOT_MAGIC1 ideal-int pkg syscall (linux-386-cgo), const LINUX_REBOOT_MAGIC2 ideal-int pkg syscall (linux-386-cgo), const LOCK_EX ideal-int pkg syscall (linux-386-cgo), const LOCK_NB ideal-int pkg syscall (linux-386-cgo), const LOCK_SH ideal-int pkg syscall (linux-386-cgo), const LOCK_UN ideal-int pkg syscall (linux-386-cgo), const MADV_DOFORK ideal-int pkg syscall (linux-386-cgo), const MADV_DONTFORK ideal-int pkg syscall (linux-386-cgo), const MADV_DONTNEED ideal-int pkg syscall (linux-386-cgo), const MADV_HUGEPAGE ideal-int pkg syscall (linux-386-cgo), const MADV_HWPOISON ideal-int pkg syscall (linux-386-cgo), const MADV_MERGEABLE ideal-int pkg syscall (linux-386-cgo), const MADV_NOHUGEPAGE ideal-int pkg syscall (linux-386-cgo), const MADV_NORMAL ideal-int pkg syscall (linux-386-cgo), const MADV_RANDOM ideal-int pkg syscall (linux-386-cgo), const MADV_REMOVE ideal-int pkg syscall (linux-386-cgo), const MADV_SEQUENTIAL ideal-int pkg syscall (linux-386-cgo), const MADV_UNMERGEABLE ideal-int pkg syscall (linux-386-cgo), const MADV_WILLNEED ideal-int pkg syscall (linux-386-cgo), const MAP_32BIT ideal-int pkg syscall (linux-386-cgo), const MAP_ANON ideal-int pkg syscall (linux-386-cgo), const MAP_ANONYMOUS ideal-int pkg syscall (linux-386-cgo), const MAP_DENYWRITE ideal-int pkg syscall (linux-386-cgo), const MAP_EXECUTABLE ideal-int pkg syscall (linux-386-cgo), const MAP_FILE ideal-int pkg syscall (linux-386-cgo), const MAP_FIXED ideal-int pkg syscall (linux-386-cgo), const MAP_GROWSDOWN ideal-int pkg syscall (linux-386-cgo), const MAP_HUGETLB ideal-int pkg syscall (linux-386-cgo), const MAP_LOCKED ideal-int pkg syscall (linux-386-cgo), const MAP_NONBLOCK ideal-int pkg syscall (linux-386-cgo), const MAP_NORESERVE ideal-int pkg syscall (linux-386-cgo), const MAP_POPULATE ideal-int pkg syscall (linux-386-cgo), const MAP_PRIVATE ideal-int pkg syscall (linux-386-cgo), const MAP_SHARED ideal-int pkg syscall (linux-386-cgo), const MAP_STACK ideal-int pkg syscall (linux-386-cgo), const MAP_TYPE ideal-int pkg syscall (linux-386-cgo), const MCL_CURRENT ideal-int pkg syscall (linux-386-cgo), const MCL_FUTURE ideal-int pkg syscall (linux-386-cgo), const MNT_DETACH ideal-int pkg syscall (linux-386-cgo), const MNT_EXPIRE ideal-int pkg syscall (linux-386-cgo), const MNT_FORCE ideal-int pkg syscall (linux-386-cgo), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (linux-386-cgo), const MSG_CONFIRM ideal-int pkg syscall (linux-386-cgo), const MSG_CTRUNC ideal-int pkg syscall (linux-386-cgo), const MSG_DONTROUTE ideal-int pkg syscall (linux-386-cgo), const MSG_DONTWAIT ideal-int pkg syscall (linux-386-cgo), const MSG_EOR ideal-int pkg syscall (linux-386-cgo), const MSG_ERRQUEUE ideal-int pkg syscall (linux-386-cgo), const MSG_FIN ideal-int pkg syscall (linux-386-cgo), const MSG_MORE ideal-int pkg syscall (linux-386-cgo), const MSG_NOSIGNAL ideal-int pkg syscall (linux-386-cgo), const MSG_OOB ideal-int pkg syscall (linux-386-cgo), const MSG_PEEK ideal-int pkg syscall (linux-386-cgo), const MSG_PROXY ideal-int pkg syscall (linux-386-cgo), const MSG_RST ideal-int pkg syscall (linux-386-cgo), const MSG_SYN ideal-int pkg syscall (linux-386-cgo), const MSG_TRUNC ideal-int pkg syscall (linux-386-cgo), const MSG_TRYHARD ideal-int pkg syscall (linux-386-cgo), const MSG_WAITALL ideal-int pkg syscall (linux-386-cgo), const MSG_WAITFORONE ideal-int pkg syscall (linux-386-cgo), const MS_ACTIVE ideal-int pkg syscall (linux-386-cgo), const MS_ASYNC ideal-int pkg syscall (linux-386-cgo), const MS_BIND ideal-int pkg syscall (linux-386-cgo), const MS_DIRSYNC ideal-int pkg syscall (linux-386-cgo), const MS_INVALIDATE ideal-int pkg syscall (linux-386-cgo), const MS_I_VERSION ideal-int pkg syscall (linux-386-cgo), const MS_KERNMOUNT ideal-int pkg syscall (linux-386-cgo), const MS_MANDLOCK ideal-int pkg syscall (linux-386-cgo), const MS_MGC_MSK ideal-int pkg syscall (linux-386-cgo), const MS_MGC_VAL ideal-int pkg syscall (linux-386-cgo), const MS_MOVE ideal-int pkg syscall (linux-386-cgo), const MS_NOATIME ideal-int pkg syscall (linux-386-cgo), const MS_NODEV ideal-int pkg syscall (linux-386-cgo), const MS_NODIRATIME ideal-int pkg syscall (linux-386-cgo), const MS_NOEXEC ideal-int pkg syscall (linux-386-cgo), const MS_NOSUID ideal-int pkg syscall (linux-386-cgo), const MS_NOUSER ideal-int pkg syscall (linux-386-cgo), const MS_POSIXACL ideal-int pkg syscall (linux-386-cgo), const MS_PRIVATE ideal-int pkg syscall (linux-386-cgo), const MS_RDONLY ideal-int pkg syscall (linux-386-cgo), const MS_REC ideal-int pkg syscall (linux-386-cgo), const MS_RELATIME ideal-int pkg syscall (linux-386-cgo), const MS_REMOUNT ideal-int pkg syscall (linux-386-cgo), const MS_RMT_MASK ideal-int pkg syscall (linux-386-cgo), const MS_SHARED ideal-int pkg syscall (linux-386-cgo), const MS_SILENT ideal-int pkg syscall (linux-386-cgo), const MS_SLAVE ideal-int pkg syscall (linux-386-cgo), const MS_STRICTATIME ideal-int pkg syscall (linux-386-cgo), const MS_SYNC ideal-int pkg syscall (linux-386-cgo), const MS_SYNCHRONOUS ideal-int pkg syscall (linux-386-cgo), const MS_UNBINDABLE ideal-int pkg syscall (linux-386-cgo), const NAME_MAX ideal-int pkg syscall (linux-386-cgo), const NETLINK_ADD_MEMBERSHIP ideal-int pkg syscall (linux-386-cgo), const NETLINK_AUDIT ideal-int pkg syscall (linux-386-cgo), const NETLINK_BROADCAST_ERROR ideal-int pkg syscall (linux-386-cgo), const NETLINK_CONNECTOR ideal-int pkg syscall (linux-386-cgo), const NETLINK_DNRTMSG ideal-int pkg syscall (linux-386-cgo), const NETLINK_DROP_MEMBERSHIP ideal-int pkg syscall (linux-386-cgo), const NETLINK_ECRYPTFS ideal-int pkg syscall (linux-386-cgo), const NETLINK_FIB_LOOKUP ideal-int pkg syscall (linux-386-cgo), const NETLINK_FIREWALL ideal-int pkg syscall (linux-386-cgo), const NETLINK_GENERIC ideal-int pkg syscall (linux-386-cgo), const NETLINK_INET_DIAG ideal-int pkg syscall (linux-386-cgo), const NETLINK_IP6_FW ideal-int pkg syscall (linux-386-cgo), const NETLINK_ISCSI ideal-int pkg syscall (linux-386-cgo), const NETLINK_KOBJECT_UEVENT ideal-int pkg syscall (linux-386-cgo), const NETLINK_NETFILTER ideal-int pkg syscall (linux-386-cgo), const NETLINK_NFLOG ideal-int pkg syscall (linux-386-cgo), const NETLINK_NO_ENOBUFS ideal-int pkg syscall (linux-386-cgo), const NETLINK_PKTINFO ideal-int pkg syscall (linux-386-cgo), const NETLINK_ROUTE ideal-int pkg syscall (linux-386-cgo), const NETLINK_SCSITRANSPORT ideal-int pkg syscall (linux-386-cgo), const NETLINK_SELINUX ideal-int pkg syscall (linux-386-cgo), const NETLINK_UNUSED ideal-int pkg syscall (linux-386-cgo), const NETLINK_USERSOCK ideal-int pkg syscall (linux-386-cgo), const NETLINK_XFRM ideal-int pkg syscall (linux-386-cgo), const NLA_ALIGNTO ideal-int pkg syscall (linux-386-cgo), const NLA_F_NESTED ideal-int pkg syscall (linux-386-cgo), const NLA_F_NET_BYTEORDER ideal-int pkg syscall (linux-386-cgo), const NLA_HDRLEN ideal-int pkg syscall (linux-386-cgo), const NLMSG_ALIGNTO ideal-int pkg syscall (linux-386-cgo), const NLMSG_DONE ideal-int pkg syscall (linux-386-cgo), const NLMSG_ERROR ideal-int pkg syscall (linux-386-cgo), const NLMSG_HDRLEN ideal-int pkg syscall (linux-386-cgo), const NLMSG_MIN_TYPE ideal-int pkg syscall (linux-386-cgo), const NLMSG_NOOP ideal-int pkg syscall (linux-386-cgo), const NLMSG_OVERRUN ideal-int pkg syscall (linux-386-cgo), const NLM_F_ACK ideal-int pkg syscall (linux-386-cgo), const NLM_F_APPEND ideal-int pkg syscall (linux-386-cgo), const NLM_F_ATOMIC ideal-int pkg syscall (linux-386-cgo), const NLM_F_CREATE ideal-int pkg syscall (linux-386-cgo), const NLM_F_DUMP ideal-int pkg syscall (linux-386-cgo), const NLM_F_ECHO ideal-int pkg syscall (linux-386-cgo), const NLM_F_EXCL ideal-int pkg syscall (linux-386-cgo), const NLM_F_MATCH ideal-int pkg syscall (linux-386-cgo), const NLM_F_MULTI ideal-int pkg syscall (linux-386-cgo), const NLM_F_REPLACE ideal-int pkg syscall (linux-386-cgo), const NLM_F_REQUEST ideal-int pkg syscall (linux-386-cgo), const NLM_F_ROOT ideal-int pkg syscall (linux-386-cgo), const NOFLSH ideal-int pkg syscall (linux-386-cgo), const OCRNL ideal-int pkg syscall (linux-386-cgo), const OFDEL ideal-int pkg syscall (linux-386-cgo), const OFILL ideal-int pkg syscall (linux-386-cgo), const OLCUC ideal-int pkg syscall (linux-386-cgo), const ONLCR ideal-int pkg syscall (linux-386-cgo), const ONLRET ideal-int pkg syscall (linux-386-cgo), const ONOCR ideal-int pkg syscall (linux-386-cgo), const OPOST ideal-int pkg syscall (linux-386-cgo), const O_ACCMODE ideal-int pkg syscall (linux-386-cgo), const O_DIRECT ideal-int pkg syscall (linux-386-cgo), const O_DIRECTORY ideal-int pkg syscall (linux-386-cgo), const O_DSYNC ideal-int pkg syscall (linux-386-cgo), const O_FSYNC ideal-int pkg syscall (linux-386-cgo), const O_LARGEFILE ideal-int pkg syscall (linux-386-cgo), const O_NDELAY ideal-int pkg syscall (linux-386-cgo), const O_NOATIME ideal-int pkg syscall (linux-386-cgo), const O_NOFOLLOW ideal-int pkg syscall (linux-386-cgo), const O_RSYNC ideal-int pkg syscall (linux-386-cgo), const PACKET_ADD_MEMBERSHIP ideal-int pkg syscall (linux-386-cgo), const PACKET_BROADCAST ideal-int pkg syscall (linux-386-cgo), const PACKET_DROP_MEMBERSHIP ideal-int pkg syscall (linux-386-cgo), const PACKET_FASTROUTE ideal-int pkg syscall (linux-386-cgo), const PACKET_HOST ideal-int pkg syscall (linux-386-cgo), const PACKET_LOOPBACK ideal-int pkg syscall (linux-386-cgo), const PACKET_MR_ALLMULTI ideal-int pkg syscall (linux-386-cgo), const PACKET_MR_MULTICAST ideal-int pkg syscall (linux-386-cgo), const PACKET_MR_PROMISC ideal-int pkg syscall (linux-386-cgo), const PACKET_MULTICAST ideal-int pkg syscall (linux-386-cgo), const PACKET_OTHERHOST ideal-int pkg syscall (linux-386-cgo), const PACKET_OUTGOING ideal-int pkg syscall (linux-386-cgo), const PACKET_RECV_OUTPUT ideal-int pkg syscall (linux-386-cgo), const PACKET_RX_RING ideal-int pkg syscall (linux-386-cgo), const PACKET_STATISTICS ideal-int pkg syscall (linux-386-cgo), const PARENB ideal-int pkg syscall (linux-386-cgo), const PARMRK ideal-int pkg syscall (linux-386-cgo), const PARODD ideal-int pkg syscall (linux-386-cgo), const PENDIN ideal-int pkg syscall (linux-386-cgo), const PROT_EXEC ideal-int pkg syscall (linux-386-cgo), const PROT_GROWSDOWN ideal-int pkg syscall (linux-386-cgo), const PROT_GROWSUP ideal-int pkg syscall (linux-386-cgo), const PROT_NONE ideal-int pkg syscall (linux-386-cgo), const PROT_READ ideal-int pkg syscall (linux-386-cgo), const PROT_WRITE ideal-int pkg syscall (linux-386-cgo), const PR_CAPBSET_DROP ideal-int pkg syscall (linux-386-cgo), const PR_CAPBSET_READ ideal-int pkg syscall (linux-386-cgo), const PR_ENDIAN_BIG ideal-int pkg syscall (linux-386-cgo), const PR_ENDIAN_LITTLE ideal-int pkg syscall (linux-386-cgo), const PR_ENDIAN_PPC_LITTLE ideal-int pkg syscall (linux-386-cgo), const PR_FPEMU_NOPRINT ideal-int pkg syscall (linux-386-cgo), const PR_FPEMU_SIGFPE ideal-int pkg syscall (linux-386-cgo), const PR_FP_EXC_ASYNC ideal-int pkg syscall (linux-386-cgo), const PR_FP_EXC_DISABLED ideal-int pkg syscall (linux-386-cgo), const PR_FP_EXC_DIV ideal-int pkg syscall (linux-386-cgo), const PR_FP_EXC_INV ideal-int pkg syscall (linux-386-cgo), const PR_FP_EXC_NONRECOV ideal-int pkg syscall (linux-386-cgo), const PR_FP_EXC_OVF ideal-int pkg syscall (linux-386-cgo), const PR_FP_EXC_PRECISE ideal-int pkg syscall (linux-386-cgo), const PR_FP_EXC_RES ideal-int pkg syscall (linux-386-cgo), const PR_FP_EXC_SW_ENABLE ideal-int pkg syscall (linux-386-cgo), const PR_FP_EXC_UND ideal-int pkg syscall (linux-386-cgo), const PR_GET_DUMPABLE ideal-int pkg syscall (linux-386-cgo), const PR_GET_ENDIAN ideal-int pkg syscall (linux-386-cgo), const PR_GET_FPEMU ideal-int pkg syscall (linux-386-cgo), const PR_GET_FPEXC ideal-int pkg syscall (linux-386-cgo), const PR_GET_KEEPCAPS ideal-int pkg syscall (linux-386-cgo), const PR_GET_NAME ideal-int pkg syscall (linux-386-cgo), const PR_GET_PDEATHSIG ideal-int pkg syscall (linux-386-cgo), const PR_GET_SECCOMP ideal-int pkg syscall (linux-386-cgo), const PR_GET_SECUREBITS ideal-int pkg syscall (linux-386-cgo), const PR_GET_TIMERSLACK ideal-int pkg syscall (linux-386-cgo), const PR_GET_TIMING ideal-int pkg syscall (linux-386-cgo), const PR_GET_TSC ideal-int pkg syscall (linux-386-cgo), const PR_GET_UNALIGN ideal-int pkg syscall (linux-386-cgo), const PR_MCE_KILL ideal-int pkg syscall (linux-386-cgo), const PR_MCE_KILL_CLEAR ideal-int pkg syscall (linux-386-cgo), const PR_MCE_KILL_DEFAULT ideal-int pkg syscall (linux-386-cgo), const PR_MCE_KILL_EARLY ideal-int pkg syscall (linux-386-cgo), const PR_MCE_KILL_GET ideal-int pkg syscall (linux-386-cgo), const PR_MCE_KILL_LATE ideal-int pkg syscall (linux-386-cgo), const PR_MCE_KILL_SET ideal-int pkg syscall (linux-386-cgo), const PR_SET_DUMPABLE ideal-int pkg syscall (linux-386-cgo), const PR_SET_ENDIAN ideal-int pkg syscall (linux-386-cgo), const PR_SET_FPEMU ideal-int pkg syscall (linux-386-cgo), const PR_SET_FPEXC ideal-int pkg syscall (linux-386-cgo), const PR_SET_KEEPCAPS ideal-int pkg syscall (linux-386-cgo), const PR_SET_NAME ideal-int pkg syscall (linux-386-cgo), const PR_SET_PDEATHSIG ideal-int pkg syscall (linux-386-cgo), const PR_SET_PTRACER ideal-int pkg syscall (linux-386-cgo), const PR_SET_SECCOMP ideal-int pkg syscall (linux-386-cgo), const PR_SET_SECUREBITS ideal-int pkg syscall (linux-386-cgo), const PR_SET_TIMERSLACK ideal-int pkg syscall (linux-386-cgo), const PR_SET_TIMING ideal-int pkg syscall (linux-386-cgo), const PR_SET_TSC ideal-int pkg syscall (linux-386-cgo), const PR_SET_UNALIGN ideal-int pkg syscall (linux-386-cgo), const PR_TASK_PERF_EVENTS_DISABLE ideal-int pkg syscall (linux-386-cgo), const PR_TASK_PERF_EVENTS_ENABLE ideal-int pkg syscall (linux-386-cgo), const PR_TIMING_STATISTICAL ideal-int pkg syscall (linux-386-cgo), const PR_TIMING_TIMESTAMP ideal-int pkg syscall (linux-386-cgo), const PR_TSC_ENABLE ideal-int pkg syscall (linux-386-cgo), const PR_TSC_SIGSEGV ideal-int pkg syscall (linux-386-cgo), const PR_UNALIGN_NOPRINT ideal-int pkg syscall (linux-386-cgo), const PR_UNALIGN_SIGBUS ideal-int pkg syscall (linux-386-cgo), const PTRACE_ATTACH ideal-int pkg syscall (linux-386-cgo), const PTRACE_CONT ideal-int pkg syscall (linux-386-cgo), const PTRACE_DETACH ideal-int pkg syscall (linux-386-cgo), const PTRACE_EVENT_CLONE ideal-int pkg syscall (linux-386-cgo), const PTRACE_EVENT_EXEC ideal-int pkg syscall (linux-386-cgo), const PTRACE_EVENT_EXIT ideal-int pkg syscall (linux-386-cgo), const PTRACE_EVENT_FORK ideal-int pkg syscall (linux-386-cgo), const PTRACE_EVENT_VFORK ideal-int pkg syscall (linux-386-cgo), const PTRACE_EVENT_VFORK_DONE ideal-int pkg syscall (linux-386-cgo), const PTRACE_GETEVENTMSG ideal-int pkg syscall (linux-386-cgo), const PTRACE_GETFPREGS ideal-int pkg syscall (linux-386-cgo), const PTRACE_GETFPXREGS ideal-int pkg syscall (linux-386-cgo), const PTRACE_GETREGS ideal-int pkg syscall (linux-386-cgo), const PTRACE_GETREGSET ideal-int pkg syscall (linux-386-cgo), const PTRACE_GETSIGINFO ideal-int pkg syscall (linux-386-cgo), const PTRACE_GET_THREAD_AREA ideal-int pkg syscall (linux-386-cgo), const PTRACE_KILL ideal-int pkg syscall (linux-386-cgo), const PTRACE_OLDSETOPTIONS ideal-int pkg syscall (linux-386-cgo), const PTRACE_O_MASK ideal-int pkg syscall (linux-386-cgo), const PTRACE_O_TRACECLONE ideal-int pkg syscall (linux-386-cgo), const PTRACE_O_TRACEEXEC ideal-int pkg syscall (linux-386-cgo), const PTRACE_O_TRACEEXIT ideal-int pkg syscall (linux-386-cgo), const PTRACE_O_TRACEFORK ideal-int pkg syscall (linux-386-cgo), const PTRACE_O_TRACESYSGOOD ideal-int pkg syscall (linux-386-cgo), const PTRACE_O_TRACEVFORK ideal-int pkg syscall (linux-386-cgo), const PTRACE_O_TRACEVFORKDONE ideal-int pkg syscall (linux-386-cgo), const PTRACE_PEEKDATA ideal-int pkg syscall (linux-386-cgo), const PTRACE_PEEKTEXT ideal-int pkg syscall (linux-386-cgo), const PTRACE_PEEKUSR ideal-int pkg syscall (linux-386-cgo), const PTRACE_POKEDATA ideal-int pkg syscall (linux-386-cgo), const PTRACE_POKETEXT ideal-int pkg syscall (linux-386-cgo), const PTRACE_POKEUSR ideal-int pkg syscall (linux-386-cgo), const PTRACE_SETFPREGS ideal-int pkg syscall (linux-386-cgo), const PTRACE_SETFPXREGS ideal-int pkg syscall (linux-386-cgo), const PTRACE_SETOPTIONS ideal-int pkg syscall (linux-386-cgo), const PTRACE_SETREGS ideal-int pkg syscall (linux-386-cgo), const PTRACE_SETREGSET ideal-int pkg syscall (linux-386-cgo), const PTRACE_SETSIGINFO ideal-int pkg syscall (linux-386-cgo), const PTRACE_SET_THREAD_AREA ideal-int pkg syscall (linux-386-cgo), const PTRACE_SINGLEBLOCK ideal-int pkg syscall (linux-386-cgo), const PTRACE_SINGLESTEP ideal-int pkg syscall (linux-386-cgo), const PTRACE_SYSCALL ideal-int pkg syscall (linux-386-cgo), const PTRACE_SYSEMU ideal-int pkg syscall (linux-386-cgo), const PTRACE_SYSEMU_SINGLESTEP ideal-int pkg syscall (linux-386-cgo), const PTRACE_TRACEME ideal-int pkg syscall (linux-386-cgo), const PathMax ideal-int pkg syscall (linux-386-cgo), const RLIMIT_AS ideal-int pkg syscall (linux-386-cgo), const RLIMIT_CORE ideal-int pkg syscall (linux-386-cgo), const RLIMIT_CPU ideal-int pkg syscall (linux-386-cgo), const RLIMIT_DATA ideal-int pkg syscall (linux-386-cgo), const RLIMIT_FSIZE ideal-int pkg syscall (linux-386-cgo), const RLIMIT_NOFILE ideal-int pkg syscall (linux-386-cgo), const RLIMIT_STACK ideal-int pkg syscall (linux-386-cgo), const RLIM_INFINITY ideal-int pkg syscall (linux-386-cgo), const RTAX_ADVMSS ideal-int pkg syscall (linux-386-cgo), const RTAX_CWND ideal-int pkg syscall (linux-386-cgo), const RTAX_FEATURES ideal-int pkg syscall (linux-386-cgo), const RTAX_FEATURE_ALLFRAG ideal-int pkg syscall (linux-386-cgo), const RTAX_FEATURE_ECN ideal-int pkg syscall (linux-386-cgo), const RTAX_FEATURE_SACK ideal-int pkg syscall (linux-386-cgo), const RTAX_FEATURE_TIMESTAMP ideal-int pkg syscall (linux-386-cgo), const RTAX_HOPLIMIT ideal-int pkg syscall (linux-386-cgo), const RTAX_INITCWND ideal-int pkg syscall (linux-386-cgo), const RTAX_INITRWND ideal-int pkg syscall (linux-386-cgo), const RTAX_LOCK ideal-int pkg syscall (linux-386-cgo), const RTAX_MAX ideal-int pkg syscall (linux-386-cgo), const RTAX_MTU ideal-int pkg syscall (linux-386-cgo), const RTAX_REORDERING ideal-int pkg syscall (linux-386-cgo), const RTAX_RTO_MIN ideal-int pkg syscall (linux-386-cgo), const RTAX_RTT ideal-int pkg syscall (linux-386-cgo), const RTAX_RTTVAR ideal-int pkg syscall (linux-386-cgo), const RTAX_SSTHRESH ideal-int pkg syscall (linux-386-cgo), const RTAX_UNSPEC ideal-int pkg syscall (linux-386-cgo), const RTAX_WINDOW ideal-int pkg syscall (linux-386-cgo), const RTA_ALIGNTO ideal-int pkg syscall (linux-386-cgo), const RTA_CACHEINFO ideal-int pkg syscall (linux-386-cgo), const RTA_DST ideal-int pkg syscall (linux-386-cgo), const RTA_FLOW ideal-int pkg syscall (linux-386-cgo), const RTA_GATEWAY ideal-int pkg syscall (linux-386-cgo), const RTA_IIF ideal-int pkg syscall (linux-386-cgo), const RTA_MAX ideal-int pkg syscall (linux-386-cgo), const RTA_METRICS ideal-int pkg syscall (linux-386-cgo), const RTA_MULTIPATH ideal-int pkg syscall (linux-386-cgo), const RTA_OIF ideal-int pkg syscall (linux-386-cgo), const RTA_PREFSRC ideal-int pkg syscall (linux-386-cgo), const RTA_PRIORITY ideal-int pkg syscall (linux-386-cgo), const RTA_SRC ideal-int pkg syscall (linux-386-cgo), const RTA_TABLE ideal-int pkg syscall (linux-386-cgo), const RTA_UNSPEC ideal-int pkg syscall (linux-386-cgo), const RTCF_DIRECTSRC ideal-int pkg syscall (linux-386-cgo), const RTCF_DOREDIRECT ideal-int pkg syscall (linux-386-cgo), const RTCF_LOG ideal-int pkg syscall (linux-386-cgo), const RTCF_MASQ ideal-int pkg syscall (linux-386-cgo), const RTCF_NAT ideal-int pkg syscall (linux-386-cgo), const RTCF_VALVE ideal-int pkg syscall (linux-386-cgo), const RTF_ADDRCLASSMASK ideal-int pkg syscall (linux-386-cgo), const RTF_ADDRCONF ideal-int pkg syscall (linux-386-cgo), const RTF_ALLONLINK ideal-int pkg syscall (linux-386-cgo), const RTF_BROADCAST ideal-int pkg syscall (linux-386-cgo), const RTF_CACHE ideal-int pkg syscall (linux-386-cgo), const RTF_DEFAULT ideal-int pkg syscall (linux-386-cgo), const RTF_DYNAMIC ideal-int pkg syscall (linux-386-cgo), const RTF_FLOW ideal-int pkg syscall (linux-386-cgo), const RTF_GATEWAY ideal-int pkg syscall (linux-386-cgo), const RTF_HOST ideal-int pkg syscall (linux-386-cgo), const RTF_INTERFACE ideal-int pkg syscall (linux-386-cgo), const RTF_IRTT ideal-int pkg syscall (linux-386-cgo), const RTF_LINKRT ideal-int pkg syscall (linux-386-cgo), const RTF_LOCAL ideal-int pkg syscall (linux-386-cgo), const RTF_MODIFIED ideal-int pkg syscall (linux-386-cgo), const RTF_MSS ideal-int pkg syscall (linux-386-cgo), const RTF_MTU ideal-int pkg syscall (linux-386-cgo), const RTF_MULTICAST ideal-int pkg syscall (linux-386-cgo), const RTF_NAT ideal-int pkg syscall (linux-386-cgo), const RTF_NOFORWARD ideal-int pkg syscall (linux-386-cgo), const RTF_NONEXTHOP ideal-int pkg syscall (linux-386-cgo), const RTF_NOPMTUDISC ideal-int pkg syscall (linux-386-cgo), const RTF_POLICY ideal-int pkg syscall (linux-386-cgo), const RTF_REINSTATE ideal-int pkg syscall (linux-386-cgo), const RTF_REJECT ideal-int pkg syscall (linux-386-cgo), const RTF_STATIC ideal-int pkg syscall (linux-386-cgo), const RTF_THROW ideal-int pkg syscall (linux-386-cgo), const RTF_UP ideal-int pkg syscall (linux-386-cgo), const RTF_WINDOW ideal-int pkg syscall (linux-386-cgo), const RTF_XRESOLVE ideal-int pkg syscall (linux-386-cgo), const RTM_BASE ideal-int pkg syscall (linux-386-cgo), const RTM_DELACTION ideal-int pkg syscall (linux-386-cgo), const RTM_DELADDR ideal-int pkg syscall (linux-386-cgo), const RTM_DELADDRLABEL ideal-int pkg syscall (linux-386-cgo), const RTM_DELLINK ideal-int pkg syscall (linux-386-cgo), const RTM_DELNEIGH ideal-int pkg syscall (linux-386-cgo), const RTM_DELQDISC ideal-int pkg syscall (linux-386-cgo), const RTM_DELROUTE ideal-int pkg syscall (linux-386-cgo), const RTM_DELRULE ideal-int pkg syscall (linux-386-cgo), const RTM_DELTCLASS ideal-int pkg syscall (linux-386-cgo), const RTM_DELTFILTER ideal-int pkg syscall (linux-386-cgo), const RTM_F_CLONED ideal-int pkg syscall (linux-386-cgo), const RTM_F_EQUALIZE ideal-int pkg syscall (linux-386-cgo), const RTM_F_NOTIFY ideal-int pkg syscall (linux-386-cgo), const RTM_F_PREFIX ideal-int pkg syscall (linux-386-cgo), const RTM_GETACTION ideal-int pkg syscall (linux-386-cgo), const RTM_GETADDR ideal-int pkg syscall (linux-386-cgo), const RTM_GETADDRLABEL ideal-int pkg syscall (linux-386-cgo), const RTM_GETANYCAST ideal-int pkg syscall (linux-386-cgo), const RTM_GETDCB ideal-int pkg syscall (linux-386-cgo), const RTM_GETLINK ideal-int pkg syscall (linux-386-cgo), const RTM_GETMULTICAST ideal-int pkg syscall (linux-386-cgo), const RTM_GETNEIGH ideal-int pkg syscall (linux-386-cgo), const RTM_GETNEIGHTBL ideal-int pkg syscall (linux-386-cgo), const RTM_GETQDISC ideal-int pkg syscall (linux-386-cgo), const RTM_GETROUTE ideal-int pkg syscall (linux-386-cgo), const RTM_GETRULE ideal-int pkg syscall (linux-386-cgo), const RTM_GETTCLASS ideal-int pkg syscall (linux-386-cgo), const RTM_GETTFILTER ideal-int pkg syscall (linux-386-cgo), const RTM_MAX ideal-int pkg syscall (linux-386-cgo), const RTM_NEWACTION ideal-int pkg syscall (linux-386-cgo), const RTM_NEWADDR ideal-int pkg syscall (linux-386-cgo), const RTM_NEWADDRLABEL ideal-int pkg syscall (linux-386-cgo), const RTM_NEWLINK ideal-int pkg syscall (linux-386-cgo), const RTM_NEWNDUSEROPT ideal-int pkg syscall (linux-386-cgo), const RTM_NEWNEIGH ideal-int pkg syscall (linux-386-cgo), const RTM_NEWNEIGHTBL ideal-int pkg syscall (linux-386-cgo), const RTM_NEWPREFIX ideal-int pkg syscall (linux-386-cgo), const RTM_NEWQDISC ideal-int pkg syscall (linux-386-cgo), const RTM_NEWROUTE ideal-int pkg syscall (linux-386-cgo), const RTM_NEWRULE ideal-int pkg syscall (linux-386-cgo), const RTM_NEWTCLASS ideal-int pkg syscall (linux-386-cgo), const RTM_NEWTFILTER ideal-int pkg syscall (linux-386-cgo), const RTM_NR_FAMILIES ideal-int pkg syscall (linux-386-cgo), const RTM_NR_MSGTYPES ideal-int pkg syscall (linux-386-cgo), const RTM_SETDCB ideal-int pkg syscall (linux-386-cgo), const RTM_SETLINK ideal-int pkg syscall (linux-386-cgo), const RTM_SETNEIGHTBL ideal-int pkg syscall (linux-386-cgo), const RTNH_ALIGNTO ideal-int pkg syscall (linux-386-cgo), const RTNH_F_DEAD ideal-int pkg syscall (linux-386-cgo), const RTNH_F_ONLINK ideal-int pkg syscall (linux-386-cgo), const RTNH_F_PERVASIVE ideal-int pkg syscall (linux-386-cgo), const RTN_ANYCAST ideal-int pkg syscall (linux-386-cgo), const RTN_BLACKHOLE ideal-int pkg syscall (linux-386-cgo), const RTN_BROADCAST ideal-int pkg syscall (linux-386-cgo), const RTN_LOCAL ideal-int pkg syscall (linux-386-cgo), const RTN_MAX ideal-int pkg syscall (linux-386-cgo), const RTN_MULTICAST ideal-int pkg syscall (linux-386-cgo), const RTN_NAT ideal-int pkg syscall (linux-386-cgo), const RTN_PROHIBIT ideal-int pkg syscall (linux-386-cgo), const RTN_THROW ideal-int pkg syscall (linux-386-cgo), const RTN_UNICAST ideal-int pkg syscall (linux-386-cgo), const RTN_UNREACHABLE ideal-int pkg syscall (linux-386-cgo), const RTN_UNSPEC ideal-int pkg syscall (linux-386-cgo), const RTN_XRESOLVE ideal-int pkg syscall (linux-386-cgo), const RTPROT_BIRD ideal-int pkg syscall (linux-386-cgo), const RTPROT_BOOT ideal-int pkg syscall (linux-386-cgo), const RTPROT_DHCP ideal-int pkg syscall (linux-386-cgo), const RTPROT_DNROUTED ideal-int pkg syscall (linux-386-cgo), const RTPROT_GATED ideal-int pkg syscall (linux-386-cgo), const RTPROT_KERNEL ideal-int pkg syscall (linux-386-cgo), const RTPROT_MRT ideal-int pkg syscall (linux-386-cgo), const RTPROT_NTK ideal-int pkg syscall (linux-386-cgo), const RTPROT_RA ideal-int pkg syscall (linux-386-cgo), const RTPROT_REDIRECT ideal-int pkg syscall (linux-386-cgo), const RTPROT_STATIC ideal-int pkg syscall (linux-386-cgo), const RTPROT_UNSPEC ideal-int pkg syscall (linux-386-cgo), const RTPROT_XORP ideal-int pkg syscall (linux-386-cgo), const RTPROT_ZEBRA ideal-int pkg syscall (linux-386-cgo), const RT_CLASS_DEFAULT ideal-int pkg syscall (linux-386-cgo), const RT_CLASS_LOCAL ideal-int pkg syscall (linux-386-cgo), const RT_CLASS_MAIN ideal-int pkg syscall (linux-386-cgo), const RT_CLASS_MAX ideal-int pkg syscall (linux-386-cgo), const RT_CLASS_UNSPEC ideal-int pkg syscall (linux-386-cgo), const RT_SCOPE_HOST ideal-int pkg syscall (linux-386-cgo), const RT_SCOPE_LINK ideal-int pkg syscall (linux-386-cgo), const RT_SCOPE_NOWHERE ideal-int pkg syscall (linux-386-cgo), const RT_SCOPE_SITE ideal-int pkg syscall (linux-386-cgo), const RT_SCOPE_UNIVERSE ideal-int pkg syscall (linux-386-cgo), const RT_TABLE_COMPAT ideal-int pkg syscall (linux-386-cgo), const RT_TABLE_DEFAULT ideal-int pkg syscall (linux-386-cgo), const RT_TABLE_LOCAL ideal-int pkg syscall (linux-386-cgo), const RT_TABLE_MAIN ideal-int pkg syscall (linux-386-cgo), const RT_TABLE_MAX ideal-int pkg syscall (linux-386-cgo), const RT_TABLE_UNSPEC ideal-int pkg syscall (linux-386-cgo), const RUSAGE_CHILDREN ideal-int pkg syscall (linux-386-cgo), const RUSAGE_SELF ideal-int pkg syscall (linux-386-cgo), const RUSAGE_THREAD ideal-int pkg syscall (linux-386-cgo), const SCM_CREDENTIALS ideal-int pkg syscall (linux-386-cgo), const SCM_RIGHTS ideal-int pkg syscall (linux-386-cgo), const SCM_TIMESTAMP ideal-int pkg syscall (linux-386-cgo), const SCM_TIMESTAMPING ideal-int pkg syscall (linux-386-cgo), const SCM_TIMESTAMPNS ideal-int pkg syscall (linux-386-cgo), const SIGCHLD Signal pkg syscall (linux-386-cgo), const SIGCLD Signal pkg syscall (linux-386-cgo), const SIGCONT Signal pkg syscall (linux-386-cgo), const SIGIO Signal pkg syscall (linux-386-cgo), const SIGIOT Signal pkg syscall (linux-386-cgo), const SIGPOLL Signal pkg syscall (linux-386-cgo), const SIGPROF Signal pkg syscall (linux-386-cgo), const SIGPWR Signal pkg syscall (linux-386-cgo), const SIGSTKFLT Signal pkg syscall (linux-386-cgo), const SIGSTOP Signal pkg syscall (linux-386-cgo), const SIGSYS Signal pkg syscall (linux-386-cgo), const SIGTSTP Signal pkg syscall (linux-386-cgo), const SIGTTIN Signal pkg syscall (linux-386-cgo), const SIGTTOU Signal pkg syscall (linux-386-cgo), const SIGUNUSED Signal pkg syscall (linux-386-cgo), const SIGURG Signal pkg syscall (linux-386-cgo), const SIGUSR1 Signal pkg syscall (linux-386-cgo), const SIGUSR2 Signal pkg syscall (linux-386-cgo), const SIGVTALRM Signal pkg syscall (linux-386-cgo), const SIGWINCH Signal pkg syscall (linux-386-cgo), const SIGXCPU Signal pkg syscall (linux-386-cgo), const SIGXFSZ Signal pkg syscall (linux-386-cgo), const SIOCADDDLCI ideal-int pkg syscall (linux-386-cgo), const SIOCADDMULTI ideal-int pkg syscall (linux-386-cgo), const SIOCADDRT ideal-int pkg syscall (linux-386-cgo), const SIOCATMARK ideal-int pkg syscall (linux-386-cgo), const SIOCDARP ideal-int pkg syscall (linux-386-cgo), const SIOCDELDLCI ideal-int pkg syscall (linux-386-cgo), const SIOCDELMULTI ideal-int pkg syscall (linux-386-cgo), const SIOCDELRT ideal-int pkg syscall (linux-386-cgo), const SIOCDEVPRIVATE ideal-int pkg syscall (linux-386-cgo), const SIOCDIFADDR ideal-int pkg syscall (linux-386-cgo), const SIOCDRARP ideal-int pkg syscall (linux-386-cgo), const SIOCGARP ideal-int pkg syscall (linux-386-cgo), const SIOCGIFADDR ideal-int pkg syscall (linux-386-cgo), const SIOCGIFBR ideal-int pkg syscall (linux-386-cgo), const SIOCGIFBRDADDR ideal-int pkg syscall (linux-386-cgo), const SIOCGIFCONF ideal-int pkg syscall (linux-386-cgo), const SIOCGIFCOUNT ideal-int pkg syscall (linux-386-cgo), const SIOCGIFDSTADDR ideal-int pkg syscall (linux-386-cgo), const SIOCGIFENCAP ideal-int pkg syscall (linux-386-cgo), const SIOCGIFFLAGS ideal-int pkg syscall (linux-386-cgo), const SIOCGIFHWADDR ideal-int pkg syscall (linux-386-cgo), const SIOCGIFINDEX ideal-int pkg syscall (linux-386-cgo), const SIOCGIFMAP ideal-int pkg syscall (linux-386-cgo), const SIOCGIFMEM ideal-int pkg syscall (linux-386-cgo), const SIOCGIFMETRIC ideal-int pkg syscall (linux-386-cgo), const SIOCGIFMTU ideal-int pkg syscall (linux-386-cgo), const SIOCGIFNAME ideal-int pkg syscall (linux-386-cgo), const SIOCGIFNETMASK ideal-int pkg syscall (linux-386-cgo), const SIOCGIFPFLAGS ideal-int pkg syscall (linux-386-cgo), const SIOCGIFSLAVE ideal-int pkg syscall (linux-386-cgo), const SIOCGIFTXQLEN ideal-int pkg syscall (linux-386-cgo), const SIOCGPGRP ideal-int pkg syscall (linux-386-cgo), const SIOCGRARP ideal-int pkg syscall (linux-386-cgo), const SIOCGSTAMP ideal-int pkg syscall (linux-386-cgo), const SIOCGSTAMPNS ideal-int pkg syscall (linux-386-cgo), const SIOCPROTOPRIVATE ideal-int pkg syscall (linux-386-cgo), const SIOCRTMSG ideal-int pkg syscall (linux-386-cgo), const SIOCSARP ideal-int pkg syscall (linux-386-cgo), const SIOCSIFADDR ideal-int pkg syscall (linux-386-cgo), const SIOCSIFBR ideal-int pkg syscall (linux-386-cgo), const SIOCSIFBRDADDR ideal-int pkg syscall (linux-386-cgo), const SIOCSIFDSTADDR ideal-int pkg syscall (linux-386-cgo), const SIOCSIFENCAP ideal-int pkg syscall (linux-386-cgo), const SIOCSIFFLAGS ideal-int pkg syscall (linux-386-cgo), const SIOCSIFHWADDR ideal-int pkg syscall (linux-386-cgo), const SIOCSIFHWBROADCAST ideal-int pkg syscall (linux-386-cgo), const SIOCSIFLINK ideal-int pkg syscall (linux-386-cgo), const SIOCSIFMAP ideal-int pkg syscall (linux-386-cgo), const SIOCSIFMEM ideal-int pkg syscall (linux-386-cgo), const SIOCSIFMETRIC ideal-int pkg syscall (linux-386-cgo), const SIOCSIFMTU ideal-int pkg syscall (linux-386-cgo), const SIOCSIFNAME ideal-int pkg syscall (linux-386-cgo), const SIOCSIFNETMASK ideal-int pkg syscall (linux-386-cgo), const SIOCSIFPFLAGS ideal-int pkg syscall (linux-386-cgo), const SIOCSIFSLAVE ideal-int pkg syscall (linux-386-cgo), const SIOCSIFTXQLEN ideal-int pkg syscall (linux-386-cgo), const SIOCSPGRP ideal-int pkg syscall (linux-386-cgo), const SIOCSRARP ideal-int pkg syscall (linux-386-cgo), const SOCK_CLOEXEC ideal-int pkg syscall (linux-386-cgo), const SOCK_DCCP ideal-int pkg syscall (linux-386-cgo), const SOCK_NONBLOCK ideal-int pkg syscall (linux-386-cgo), const SOCK_PACKET ideal-int pkg syscall (linux-386-cgo), const SOCK_RDM ideal-int pkg syscall (linux-386-cgo), const SOL_AAL ideal-int pkg syscall (linux-386-cgo), const SOL_ATM ideal-int pkg syscall (linux-386-cgo), const SOL_DECNET ideal-int pkg syscall (linux-386-cgo), const SOL_ICMPV6 ideal-int pkg syscall (linux-386-cgo), const SOL_IP ideal-int pkg syscall (linux-386-cgo), const SOL_IPV6 ideal-int pkg syscall (linux-386-cgo), const SOL_IRDA ideal-int pkg syscall (linux-386-cgo), const SOL_PACKET ideal-int pkg syscall (linux-386-cgo), const SOL_RAW ideal-int pkg syscall (linux-386-cgo), const SOL_TCP ideal-int pkg syscall (linux-386-cgo), const SOL_X25 ideal-int pkg syscall (linux-386-cgo), const SO_ACCEPTCONN ideal-int pkg syscall (linux-386-cgo), const SO_ATTACH_FILTER ideal-int pkg syscall (linux-386-cgo), const SO_BINDTODEVICE ideal-int pkg syscall (linux-386-cgo), const SO_BSDCOMPAT ideal-int pkg syscall (linux-386-cgo), const SO_DEBUG ideal-int pkg syscall (linux-386-cgo), const SO_DETACH_FILTER ideal-int pkg syscall (linux-386-cgo), const SO_DOMAIN ideal-int pkg syscall (linux-386-cgo), const SO_ERROR ideal-int pkg syscall (linux-386-cgo), const SO_MARK ideal-int pkg syscall (linux-386-cgo), const SO_NO_CHECK ideal-int pkg syscall (linux-386-cgo), const SO_OOBINLINE ideal-int pkg syscall (linux-386-cgo), const SO_PASSCRED ideal-int pkg syscall (linux-386-cgo), const SO_PASSSEC ideal-int pkg syscall (linux-386-cgo), const SO_PEERCRED ideal-int pkg syscall (linux-386-cgo), const SO_PEERNAME ideal-int pkg syscall (linux-386-cgo), const SO_PEERSEC ideal-int pkg syscall (linux-386-cgo), const SO_PRIORITY ideal-int pkg syscall (linux-386-cgo), const SO_PROTOCOL ideal-int pkg syscall (linux-386-cgo), const SO_RCVBUFFORCE ideal-int pkg syscall (linux-386-cgo), const SO_RCVLOWAT ideal-int pkg syscall (linux-386-cgo), const SO_RCVTIMEO ideal-int pkg syscall (linux-386-cgo), const SO_RXQ_OVFL ideal-int pkg syscall (linux-386-cgo), const SO_SECURITY_AUTHENTICATION ideal-int pkg syscall (linux-386-cgo), const SO_SECURITY_ENCRYPTION_NETWORK ideal-int pkg syscall (linux-386-cgo), const SO_SECURITY_ENCRYPTION_TRANSPORT ideal-int pkg syscall (linux-386-cgo), const SO_SNDBUFFORCE ideal-int pkg syscall (linux-386-cgo), const SO_SNDLOWAT ideal-int pkg syscall (linux-386-cgo), const SO_SNDTIMEO ideal-int pkg syscall (linux-386-cgo), const SO_TIMESTAMP ideal-int pkg syscall (linux-386-cgo), const SO_TIMESTAMPING ideal-int pkg syscall (linux-386-cgo), const SO_TIMESTAMPNS ideal-int pkg syscall (linux-386-cgo), const SO_TYPE ideal-int pkg syscall (linux-386-cgo), const SYS_ACCESS ideal-int pkg syscall (linux-386-cgo), const SYS_ACCT ideal-int pkg syscall (linux-386-cgo), const SYS_ADD_KEY ideal-int pkg syscall (linux-386-cgo), const SYS_ADJTIMEX ideal-int pkg syscall (linux-386-cgo), const SYS_AFS_SYSCALL ideal-int pkg syscall (linux-386-cgo), const SYS_ALARM ideal-int pkg syscall (linux-386-cgo), const SYS_BDFLUSH ideal-int pkg syscall (linux-386-cgo), const SYS_BREAK ideal-int pkg syscall (linux-386-cgo), const SYS_BRK ideal-int pkg syscall (linux-386-cgo), const SYS_CAPGET ideal-int pkg syscall (linux-386-cgo), const SYS_CAPSET ideal-int pkg syscall (linux-386-cgo), const SYS_CHDIR ideal-int pkg syscall (linux-386-cgo), const SYS_CHMOD ideal-int pkg syscall (linux-386-cgo), const SYS_CHOWN ideal-int pkg syscall (linux-386-cgo), const SYS_CHOWN32 ideal-int pkg syscall (linux-386-cgo), const SYS_CHROOT ideal-int pkg syscall (linux-386-cgo), const SYS_CLOCK_GETRES ideal-int pkg syscall (linux-386-cgo), const SYS_CLOCK_GETTIME ideal-int pkg syscall (linux-386-cgo), const SYS_CLOCK_NANOSLEEP ideal-int pkg syscall (linux-386-cgo), const SYS_CLOCK_SETTIME ideal-int pkg syscall (linux-386-cgo), const SYS_CLONE ideal-int pkg syscall (linux-386-cgo), const SYS_CLOSE ideal-int pkg syscall (linux-386-cgo), const SYS_CREAT ideal-int pkg syscall (linux-386-cgo), const SYS_CREATE_MODULE ideal-int pkg syscall (linux-386-cgo), const SYS_DELETE_MODULE ideal-int pkg syscall (linux-386-cgo), const SYS_DUP ideal-int pkg syscall (linux-386-cgo), const SYS_DUP2 ideal-int pkg syscall (linux-386-cgo), const SYS_DUP3 ideal-int pkg syscall (linux-386-cgo), const SYS_EPOLL_CREATE ideal-int pkg syscall (linux-386-cgo), const SYS_EPOLL_CREATE1 ideal-int pkg syscall (linux-386-cgo), const SYS_EPOLL_CTL ideal-int pkg syscall (linux-386-cgo), const SYS_EPOLL_PWAIT ideal-int pkg syscall (linux-386-cgo), const SYS_EPOLL_WAIT ideal-int pkg syscall (linux-386-cgo), const SYS_EVENTFD ideal-int pkg syscall (linux-386-cgo), const SYS_EVENTFD2 ideal-int pkg syscall (linux-386-cgo), const SYS_EXECVE ideal-int pkg syscall (linux-386-cgo), const SYS_EXIT ideal-int pkg syscall (linux-386-cgo), const SYS_EXIT_GROUP ideal-int pkg syscall (linux-386-cgo), const SYS_FACCESSAT ideal-int pkg syscall (linux-386-cgo), const SYS_FADVISE64 ideal-int pkg syscall (linux-386-cgo), const SYS_FADVISE64_64 ideal-int pkg syscall (linux-386-cgo), const SYS_FALLOCATE ideal-int pkg syscall (linux-386-cgo), const SYS_FANOTIFY_INIT ideal-int pkg syscall (linux-386-cgo), const SYS_FANOTIFY_MARK ideal-int pkg syscall (linux-386-cgo), const SYS_FCHDIR ideal-int pkg syscall (linux-386-cgo), const SYS_FCHMOD ideal-int pkg syscall (linux-386-cgo), const SYS_FCHMODAT ideal-int pkg syscall (linux-386-cgo), const SYS_FCHOWN ideal-int pkg syscall (linux-386-cgo), const SYS_FCHOWN32 ideal-int pkg syscall (linux-386-cgo), const SYS_FCHOWNAT ideal-int pkg syscall (linux-386-cgo), const SYS_FCNTL ideal-int pkg syscall (linux-386-cgo), const SYS_FCNTL64 ideal-int pkg syscall (linux-386-cgo), const SYS_FDATASYNC ideal-int pkg syscall (linux-386-cgo), const SYS_FGETXATTR ideal-int pkg syscall (linux-386-cgo), const SYS_FLISTXATTR ideal-int pkg syscall (linux-386-cgo), const SYS_FLOCK ideal-int pkg syscall (linux-386-cgo), const SYS_FORK ideal-int pkg syscall (linux-386-cgo), const SYS_FREMOVEXATTR ideal-int pkg syscall (linux-386-cgo), const SYS_FSETXATTR ideal-int pkg syscall (linux-386-cgo), const SYS_FSTAT ideal-int pkg syscall (linux-386-cgo), const SYS_FSTAT64 ideal-int pkg syscall (linux-386-cgo), const SYS_FSTATAT64 ideal-int pkg syscall (linux-386-cgo), const SYS_FSTATFS ideal-int pkg syscall (linux-386-cgo), const SYS_FSTATFS64 ideal-int pkg syscall (linux-386-cgo), const SYS_FSYNC ideal-int pkg syscall (linux-386-cgo), const SYS_FTIME ideal-int pkg syscall (linux-386-cgo), const SYS_FTRUNCATE ideal-int pkg syscall (linux-386-cgo), const SYS_FTRUNCATE64 ideal-int pkg syscall (linux-386-cgo), const SYS_FUTEX ideal-int pkg syscall (linux-386-cgo), const SYS_FUTIMESAT ideal-int pkg syscall (linux-386-cgo), const SYS_GETCPU ideal-int pkg syscall (linux-386-cgo), const SYS_GETCWD ideal-int pkg syscall (linux-386-cgo), const SYS_GETDENTS ideal-int pkg syscall (linux-386-cgo), const SYS_GETDENTS64 ideal-int pkg syscall (linux-386-cgo), const SYS_GETEGID ideal-int pkg syscall (linux-386-cgo), const SYS_GETEGID32 ideal-int pkg syscall (linux-386-cgo), const SYS_GETEUID ideal-int pkg syscall (linux-386-cgo), const SYS_GETEUID32 ideal-int pkg syscall (linux-386-cgo), const SYS_GETGID ideal-int pkg syscall (linux-386-cgo), const SYS_GETGID32 ideal-int pkg syscall (linux-386-cgo), const SYS_GETGROUPS ideal-int pkg syscall (linux-386-cgo), const SYS_GETGROUPS32 ideal-int pkg syscall (linux-386-cgo), const SYS_GETITIMER ideal-int pkg syscall (linux-386-cgo), const SYS_GETPGID ideal-int pkg syscall (linux-386-cgo), const SYS_GETPGRP ideal-int pkg syscall (linux-386-cgo), const SYS_GETPID ideal-int pkg syscall (linux-386-cgo), const SYS_GETPMSG ideal-int pkg syscall (linux-386-cgo), const SYS_GETPPID ideal-int pkg syscall (linux-386-cgo), const SYS_GETPRIORITY ideal-int pkg syscall (linux-386-cgo), const SYS_GETRESGID ideal-int pkg syscall (linux-386-cgo), const SYS_GETRESGID32 ideal-int pkg syscall (linux-386-cgo), const SYS_GETRESUID ideal-int pkg syscall (linux-386-cgo), const SYS_GETRESUID32 ideal-int pkg syscall (linux-386-cgo), const SYS_GETRLIMIT ideal-int pkg syscall (linux-386-cgo), const SYS_GETRUSAGE ideal-int pkg syscall (linux-386-cgo), const SYS_GETSID ideal-int pkg syscall (linux-386-cgo), const SYS_GETTID ideal-int pkg syscall (linux-386-cgo), const SYS_GETTIMEOFDAY ideal-int pkg syscall (linux-386-cgo), const SYS_GETUID ideal-int pkg syscall (linux-386-cgo), const SYS_GETUID32 ideal-int pkg syscall (linux-386-cgo), const SYS_GETXATTR ideal-int pkg syscall (linux-386-cgo), const SYS_GET_KERNEL_SYMS ideal-int pkg syscall (linux-386-cgo), const SYS_GET_MEMPOLICY ideal-int pkg syscall (linux-386-cgo), const SYS_GET_ROBUST_LIST ideal-int pkg syscall (linux-386-cgo), const SYS_GET_THREAD_AREA ideal-int pkg syscall (linux-386-cgo), const SYS_GTTY ideal-int pkg syscall (linux-386-cgo), const SYS_IDLE ideal-int pkg syscall (linux-386-cgo), const SYS_INIT_MODULE ideal-int pkg syscall (linux-386-cgo), const SYS_INOTIFY_ADD_WATCH ideal-int pkg syscall (linux-386-cgo), const SYS_INOTIFY_INIT ideal-int pkg syscall (linux-386-cgo), const SYS_INOTIFY_INIT1 ideal-int pkg syscall (linux-386-cgo), const SYS_INOTIFY_RM_WATCH ideal-int pkg syscall (linux-386-cgo), const SYS_IOCTL ideal-int pkg syscall (linux-386-cgo), const SYS_IOPERM ideal-int pkg syscall (linux-386-cgo), const SYS_IOPL ideal-int pkg syscall (linux-386-cgo), const SYS_IOPRIO_GET ideal-int pkg syscall (linux-386-cgo), const SYS_IOPRIO_SET ideal-int pkg syscall (linux-386-cgo), const SYS_IO_CANCEL ideal-int pkg syscall (linux-386-cgo), const SYS_IO_DESTROY ideal-int pkg syscall (linux-386-cgo), const SYS_IO_GETEVENTS ideal-int pkg syscall (linux-386-cgo), const SYS_IO_SETUP ideal-int pkg syscall (linux-386-cgo), const SYS_IO_SUBMIT ideal-int pkg syscall (linux-386-cgo), const SYS_IPC ideal-int pkg syscall (linux-386-cgo), const SYS_KEXEC_LOAD ideal-int pkg syscall (linux-386-cgo), const SYS_KEYCTL ideal-int pkg syscall (linux-386-cgo), const SYS_KILL ideal-int pkg syscall (linux-386-cgo), const SYS_LCHOWN ideal-int pkg syscall (linux-386-cgo), const SYS_LCHOWN32 ideal-int pkg syscall (linux-386-cgo), const SYS_LGETXATTR ideal-int pkg syscall (linux-386-cgo), const SYS_LINK ideal-int pkg syscall (linux-386-cgo), const SYS_LINKAT ideal-int pkg syscall (linux-386-cgo), const SYS_LISTXATTR ideal-int pkg syscall (linux-386-cgo), const SYS_LLISTXATTR ideal-int pkg syscall (linux-386-cgo), const SYS_LOCK ideal-int pkg syscall (linux-386-cgo), const SYS_LOOKUP_DCOOKIE ideal-int pkg syscall (linux-386-cgo), const SYS_LREMOVEXATTR ideal-int pkg syscall (linux-386-cgo), const SYS_LSEEK ideal-int pkg syscall (linux-386-cgo), const SYS_LSETXATTR ideal-int pkg syscall (linux-386-cgo), const SYS_LSTAT ideal-int pkg syscall (linux-386-cgo), const SYS_LSTAT64 ideal-int pkg syscall (linux-386-cgo), const SYS_MADVISE ideal-int pkg syscall (linux-386-cgo), const SYS_MADVISE1 ideal-int pkg syscall (linux-386-cgo), const SYS_MBIND ideal-int pkg syscall (linux-386-cgo), const SYS_MIGRATE_PAGES ideal-int pkg syscall (linux-386-cgo), const SYS_MINCORE ideal-int pkg syscall (linux-386-cgo), const SYS_MKDIR ideal-int pkg syscall (linux-386-cgo), const SYS_MKDIRAT ideal-int pkg syscall (linux-386-cgo), const SYS_MKNOD ideal-int pkg syscall (linux-386-cgo), const SYS_MKNODAT ideal-int pkg syscall (linux-386-cgo), const SYS_MLOCK ideal-int pkg syscall (linux-386-cgo), const SYS_MLOCKALL ideal-int pkg syscall (linux-386-cgo), const SYS_MMAP ideal-int pkg syscall (linux-386-cgo), const SYS_MMAP2 ideal-int pkg syscall (linux-386-cgo), const SYS_MODIFY_LDT ideal-int pkg syscall (linux-386-cgo), const SYS_MOUNT ideal-int pkg syscall (linux-386-cgo), const SYS_MOVE_PAGES ideal-int pkg syscall (linux-386-cgo), const SYS_MPROTECT ideal-int pkg syscall (linux-386-cgo), const SYS_MPX ideal-int pkg syscall (linux-386-cgo), const SYS_MQ_GETSETATTR ideal-int pkg syscall (linux-386-cgo), const SYS_MQ_NOTIFY ideal-int pkg syscall (linux-386-cgo), const SYS_MQ_OPEN ideal-int pkg syscall (linux-386-cgo), const SYS_MQ_TIMEDRECEIVE ideal-int pkg syscall (linux-386-cgo), const SYS_MQ_TIMEDSEND ideal-int pkg syscall (linux-386-cgo), const SYS_MQ_UNLINK ideal-int pkg syscall (linux-386-cgo), const SYS_MREMAP ideal-int pkg syscall (linux-386-cgo), const SYS_MSYNC ideal-int pkg syscall (linux-386-cgo), const SYS_MUNLOCK ideal-int pkg syscall (linux-386-cgo), const SYS_MUNLOCKALL ideal-int pkg syscall (linux-386-cgo), const SYS_MUNMAP ideal-int pkg syscall (linux-386-cgo), const SYS_NANOSLEEP ideal-int pkg syscall (linux-386-cgo), const SYS_NFSSERVCTL ideal-int pkg syscall (linux-386-cgo), const SYS_NICE ideal-int pkg syscall (linux-386-cgo), const SYS_OLDFSTAT ideal-int pkg syscall (linux-386-cgo), const SYS_OLDLSTAT ideal-int pkg syscall (linux-386-cgo), const SYS_OLDOLDUNAME ideal-int pkg syscall (linux-386-cgo), const SYS_OLDSTAT ideal-int pkg syscall (linux-386-cgo), const SYS_OLDUNAME ideal-int pkg syscall (linux-386-cgo), const SYS_OPEN ideal-int pkg syscall (linux-386-cgo), const SYS_OPENAT ideal-int pkg syscall (linux-386-cgo), const SYS_PAUSE ideal-int pkg syscall (linux-386-cgo), const SYS_PERF_EVENT_OPEN ideal-int pkg syscall (linux-386-cgo), const SYS_PERSONALITY ideal-int pkg syscall (linux-386-cgo), const SYS_PIPE ideal-int pkg syscall (linux-386-cgo), const SYS_PIPE2 ideal-int pkg syscall (linux-386-cgo), const SYS_PIVOT_ROOT ideal-int pkg syscall (linux-386-cgo), const SYS_POLL ideal-int pkg syscall (linux-386-cgo), const SYS_PPOLL ideal-int pkg syscall (linux-386-cgo), const SYS_PRCTL ideal-int pkg syscall (linux-386-cgo), const SYS_PREAD64 ideal-int pkg syscall (linux-386-cgo), const SYS_PREADV ideal-int pkg syscall (linux-386-cgo), const SYS_PRLIMIT64 ideal-int pkg syscall (linux-386-cgo), const SYS_PROF ideal-int pkg syscall (linux-386-cgo), const SYS_PROFIL ideal-int pkg syscall (linux-386-cgo), const SYS_PSELECT6 ideal-int pkg syscall (linux-386-cgo), const SYS_PTRACE ideal-int pkg syscall (linux-386-cgo), const SYS_PUTPMSG ideal-int pkg syscall (linux-386-cgo), const SYS_PWRITE64 ideal-int pkg syscall (linux-386-cgo), const SYS_PWRITEV ideal-int pkg syscall (linux-386-cgo), const SYS_QUERY_MODULE ideal-int pkg syscall (linux-386-cgo), const SYS_QUOTACTL ideal-int pkg syscall (linux-386-cgo), const SYS_READ ideal-int pkg syscall (linux-386-cgo), const SYS_READAHEAD ideal-int pkg syscall (linux-386-cgo), const SYS_READDIR ideal-int pkg syscall (linux-386-cgo), const SYS_READLINK ideal-int pkg syscall (linux-386-cgo), const SYS_READLINKAT ideal-int pkg syscall (linux-386-cgo), const SYS_READV ideal-int pkg syscall (linux-386-cgo), const SYS_REBOOT ideal-int pkg syscall (linux-386-cgo), const SYS_RECVMMSG ideal-int pkg syscall (linux-386-cgo), const SYS_REMAP_FILE_PAGES ideal-int pkg syscall (linux-386-cgo), const SYS_REMOVEXATTR ideal-int pkg syscall (linux-386-cgo), const SYS_RENAME ideal-int pkg syscall (linux-386-cgo), const SYS_RENAMEAT ideal-int pkg syscall (linux-386-cgo), const SYS_REQUEST_KEY ideal-int pkg syscall (linux-386-cgo), const SYS_RESTART_SYSCALL ideal-int pkg syscall (linux-386-cgo), const SYS_RMDIR ideal-int pkg syscall (linux-386-cgo), const SYS_RT_SIGACTION ideal-int pkg syscall (linux-386-cgo), const SYS_RT_SIGPENDING ideal-int pkg syscall (linux-386-cgo), const SYS_RT_SIGPROCMASK ideal-int pkg syscall (linux-386-cgo), const SYS_RT_SIGQUEUEINFO ideal-int pkg syscall (linux-386-cgo), const SYS_RT_SIGRETURN ideal-int pkg syscall (linux-386-cgo), const SYS_RT_SIGSUSPEND ideal-int pkg syscall (linux-386-cgo), const SYS_RT_SIGTIMEDWAIT ideal-int pkg syscall (linux-386-cgo), const SYS_RT_TGSIGQUEUEINFO ideal-int pkg syscall (linux-386-cgo), const SYS_SCHED_GETAFFINITY ideal-int pkg syscall (linux-386-cgo), const SYS_SCHED_GETPARAM ideal-int pkg syscall (linux-386-cgo), const SYS_SCHED_GETSCHEDULER ideal-int pkg syscall (linux-386-cgo), const SYS_SCHED_GET_PRIORITY_MAX ideal-int pkg syscall (linux-386-cgo), const SYS_SCHED_GET_PRIORITY_MIN ideal-int pkg syscall (linux-386-cgo), const SYS_SCHED_RR_GET_INTERVAL ideal-int pkg syscall (linux-386-cgo), const SYS_SCHED_SETAFFINITY ideal-int pkg syscall (linux-386-cgo), const SYS_SCHED_SETPARAM ideal-int pkg syscall (linux-386-cgo), const SYS_SCHED_SETSCHEDULER ideal-int pkg syscall (linux-386-cgo), const SYS_SCHED_YIELD ideal-int pkg syscall (linux-386-cgo), const SYS_SELECT ideal-int pkg syscall (linux-386-cgo), const SYS_SENDFILE ideal-int pkg syscall (linux-386-cgo), const SYS_SENDFILE64 ideal-int pkg syscall (linux-386-cgo), const SYS_SETDOMAINNAME ideal-int pkg syscall (linux-386-cgo), const SYS_SETFSGID ideal-int pkg syscall (linux-386-cgo), const SYS_SETFSGID32 ideal-int pkg syscall (linux-386-cgo), const SYS_SETFSUID ideal-int pkg syscall (linux-386-cgo), const SYS_SETFSUID32 ideal-int pkg syscall (linux-386-cgo), const SYS_SETGID ideal-int pkg syscall (linux-386-cgo), const SYS_SETGID32 ideal-int pkg syscall (linux-386-cgo), const SYS_SETGROUPS ideal-int pkg syscall (linux-386-cgo), const SYS_SETGROUPS32 ideal-int pkg syscall (linux-386-cgo), const SYS_SETHOSTNAME ideal-int pkg syscall (linux-386-cgo), const SYS_SETITIMER ideal-int pkg syscall (linux-386-cgo), const SYS_SETPGID ideal-int pkg syscall (linux-386-cgo), const SYS_SETPRIORITY ideal-int pkg syscall (linux-386-cgo), const SYS_SETREGID ideal-int pkg syscall (linux-386-cgo), const SYS_SETREGID32 ideal-int pkg syscall (linux-386-cgo), const SYS_SETRESGID ideal-int pkg syscall (linux-386-cgo), const SYS_SETRESGID32 ideal-int pkg syscall (linux-386-cgo), const SYS_SETRESUID ideal-int pkg syscall (linux-386-cgo), const SYS_SETRESUID32 ideal-int pkg syscall (linux-386-cgo), const SYS_SETREUID ideal-int pkg syscall (linux-386-cgo), const SYS_SETREUID32 ideal-int pkg syscall (linux-386-cgo), const SYS_SETRLIMIT ideal-int pkg syscall (linux-386-cgo), const SYS_SETSID ideal-int pkg syscall (linux-386-cgo), const SYS_SETTIMEOFDAY ideal-int pkg syscall (linux-386-cgo), const SYS_SETUID ideal-int pkg syscall (linux-386-cgo), const SYS_SETUID32 ideal-int pkg syscall (linux-386-cgo), const SYS_SETXATTR ideal-int pkg syscall (linux-386-cgo), const SYS_SET_MEMPOLICY ideal-int pkg syscall (linux-386-cgo), const SYS_SET_ROBUST_LIST ideal-int pkg syscall (linux-386-cgo), const SYS_SET_THREAD_AREA ideal-int pkg syscall (linux-386-cgo), const SYS_SET_TID_ADDRESS ideal-int pkg syscall (linux-386-cgo), const SYS_SGETMASK ideal-int pkg syscall (linux-386-cgo), const SYS_SIGACTION ideal-int pkg syscall (linux-386-cgo), const SYS_SIGALTSTACK ideal-int pkg syscall (linux-386-cgo), const SYS_SIGNAL ideal-int pkg syscall (linux-386-cgo), const SYS_SIGNALFD ideal-int pkg syscall (linux-386-cgo), const SYS_SIGNALFD4 ideal-int pkg syscall (linux-386-cgo), const SYS_SIGPENDING ideal-int pkg syscall (linux-386-cgo), const SYS_SIGPROCMASK ideal-int pkg syscall (linux-386-cgo), const SYS_SIGRETURN ideal-int pkg syscall (linux-386-cgo), const SYS_SIGSUSPEND ideal-int pkg syscall (linux-386-cgo), const SYS_SOCKETCALL ideal-int pkg syscall (linux-386-cgo), const SYS_SPLICE ideal-int pkg syscall (linux-386-cgo), const SYS_SSETMASK ideal-int pkg syscall (linux-386-cgo), const SYS_STAT ideal-int pkg syscall (linux-386-cgo), const SYS_STAT64 ideal-int pkg syscall (linux-386-cgo), const SYS_STATFS ideal-int pkg syscall (linux-386-cgo), const SYS_STATFS64 ideal-int pkg syscall (linux-386-cgo), const SYS_STIME ideal-int pkg syscall (linux-386-cgo), const SYS_STTY ideal-int pkg syscall (linux-386-cgo), const SYS_SWAPOFF ideal-int pkg syscall (linux-386-cgo), const SYS_SWAPON ideal-int pkg syscall (linux-386-cgo), const SYS_SYMLINK ideal-int pkg syscall (linux-386-cgo), const SYS_SYMLINKAT ideal-int pkg syscall (linux-386-cgo), const SYS_SYNC ideal-int pkg syscall (linux-386-cgo), const SYS_SYNC_FILE_RANGE ideal-int pkg syscall (linux-386-cgo), const SYS_SYSFS ideal-int pkg syscall (linux-386-cgo), const SYS_SYSINFO ideal-int pkg syscall (linux-386-cgo), const SYS_SYSLOG ideal-int pkg syscall (linux-386-cgo), const SYS_TEE ideal-int pkg syscall (linux-386-cgo), const SYS_TGKILL ideal-int pkg syscall (linux-386-cgo), const SYS_TIME ideal-int pkg syscall (linux-386-cgo), const SYS_TIMERFD_CREATE ideal-int pkg syscall (linux-386-cgo), const SYS_TIMERFD_GETTIME ideal-int pkg syscall (linux-386-cgo), const SYS_TIMERFD_SETTIME ideal-int pkg syscall (linux-386-cgo), const SYS_TIMER_CREATE ideal-int pkg syscall (linux-386-cgo), const SYS_TIMER_DELETE ideal-int pkg syscall (linux-386-cgo), const SYS_TIMER_GETOVERRUN ideal-int pkg syscall (linux-386-cgo), const SYS_TIMER_GETTIME ideal-int pkg syscall (linux-386-cgo), const SYS_TIMER_SETTIME ideal-int pkg syscall (linux-386-cgo), const SYS_TIMES ideal-int pkg syscall (linux-386-cgo), const SYS_TKILL ideal-int pkg syscall (linux-386-cgo), const SYS_TRUNCATE ideal-int pkg syscall (linux-386-cgo), const SYS_TRUNCATE64 ideal-int pkg syscall (linux-386-cgo), const SYS_UGETRLIMIT ideal-int pkg syscall (linux-386-cgo), const SYS_ULIMIT ideal-int pkg syscall (linux-386-cgo), const SYS_UMASK ideal-int pkg syscall (linux-386-cgo), const SYS_UMOUNT ideal-int pkg syscall (linux-386-cgo), const SYS_UMOUNT2 ideal-int pkg syscall (linux-386-cgo), const SYS_UNAME ideal-int pkg syscall (linux-386-cgo), const SYS_UNLINK ideal-int pkg syscall (linux-386-cgo), const SYS_UNLINKAT ideal-int pkg syscall (linux-386-cgo), const SYS_UNSHARE ideal-int pkg syscall (linux-386-cgo), const SYS_USELIB ideal-int pkg syscall (linux-386-cgo), const SYS_USTAT ideal-int pkg syscall (linux-386-cgo), const SYS_UTIME ideal-int pkg syscall (linux-386-cgo), const SYS_UTIMENSAT ideal-int pkg syscall (linux-386-cgo), const SYS_UTIMES ideal-int pkg syscall (linux-386-cgo), const SYS_VFORK ideal-int pkg syscall (linux-386-cgo), const SYS_VHANGUP ideal-int pkg syscall (linux-386-cgo), const SYS_VM86 ideal-int pkg syscall (linux-386-cgo), const SYS_VM86OLD ideal-int pkg syscall (linux-386-cgo), const SYS_VMSPLICE ideal-int pkg syscall (linux-386-cgo), const SYS_VSERVER ideal-int pkg syscall (linux-386-cgo), const SYS_WAIT4 ideal-int pkg syscall (linux-386-cgo), const SYS_WAITID ideal-int pkg syscall (linux-386-cgo), const SYS_WAITPID ideal-int pkg syscall (linux-386-cgo), const SYS_WRITE ideal-int pkg syscall (linux-386-cgo), const SYS_WRITEV ideal-int pkg syscall (linux-386-cgo), const SYS__LLSEEK ideal-int pkg syscall (linux-386-cgo), const SYS__NEWSELECT ideal-int pkg syscall (linux-386-cgo), const SYS__SYSCTL ideal-int pkg syscall (linux-386-cgo), const S_BLKSIZE ideal-int pkg syscall (linux-386-cgo), const S_IEXEC ideal-int pkg syscall (linux-386-cgo), const S_IREAD ideal-int pkg syscall (linux-386-cgo), const S_IRGRP ideal-int pkg syscall (linux-386-cgo), const S_IROTH ideal-int pkg syscall (linux-386-cgo), const S_IRWXG ideal-int pkg syscall (linux-386-cgo), const S_IRWXO ideal-int pkg syscall (linux-386-cgo), const S_IRWXU ideal-int pkg syscall (linux-386-cgo), const S_IWGRP ideal-int pkg syscall (linux-386-cgo), const S_IWOTH ideal-int pkg syscall (linux-386-cgo), const S_IWRITE ideal-int pkg syscall (linux-386-cgo), const S_IXGRP ideal-int pkg syscall (linux-386-cgo), const S_IXOTH ideal-int pkg syscall (linux-386-cgo), const SizeofCmsghdr ideal-int pkg syscall (linux-386-cgo), const SizeofIPMreq ideal-int pkg syscall (linux-386-cgo), const SizeofIPMreqn ideal-int pkg syscall (linux-386-cgo), const SizeofIPv6Mreq ideal-int pkg syscall (linux-386-cgo), const SizeofIfAddrmsg ideal-int pkg syscall (linux-386-cgo), const SizeofIfInfomsg ideal-int pkg syscall (linux-386-cgo), const SizeofInet4Pktinfo ideal-int pkg syscall (linux-386-cgo), const SizeofInet6Pktinfo ideal-int pkg syscall (linux-386-cgo), const SizeofInotifyEvent ideal-int pkg syscall (linux-386-cgo), const SizeofLinger ideal-int pkg syscall (linux-386-cgo), const SizeofMsghdr ideal-int pkg syscall (linux-386-cgo), const SizeofNlAttr ideal-int pkg syscall (linux-386-cgo), const SizeofNlMsgerr ideal-int pkg syscall (linux-386-cgo), const SizeofNlMsghdr ideal-int pkg syscall (linux-386-cgo), const SizeofRtAttr ideal-int pkg syscall (linux-386-cgo), const SizeofRtGenmsg ideal-int pkg syscall (linux-386-cgo), const SizeofRtMsg ideal-int pkg syscall (linux-386-cgo), const SizeofRtNexthop ideal-int pkg syscall (linux-386-cgo), const SizeofSockFilter ideal-int pkg syscall (linux-386-cgo), const SizeofSockFprog ideal-int pkg syscall (linux-386-cgo), const SizeofSockaddrAny ideal-int pkg syscall (linux-386-cgo), const SizeofSockaddrInet4 ideal-int pkg syscall (linux-386-cgo), const SizeofSockaddrInet6 ideal-int pkg syscall (linux-386-cgo), const SizeofSockaddrLinklayer ideal-int pkg syscall (linux-386-cgo), const SizeofSockaddrNetlink ideal-int pkg syscall (linux-386-cgo), const SizeofSockaddrUnix ideal-int pkg syscall (linux-386-cgo), const SizeofUcred ideal-int pkg syscall (linux-386-cgo), const TCGETS ideal-int pkg syscall (linux-386-cgo), const TCP_CONGESTION ideal-int pkg syscall (linux-386-cgo), const TCP_CORK ideal-int pkg syscall (linux-386-cgo), const TCP_DEFER_ACCEPT ideal-int pkg syscall (linux-386-cgo), const TCP_INFO ideal-int pkg syscall (linux-386-cgo), const TCP_KEEPCNT ideal-int pkg syscall (linux-386-cgo), const TCP_KEEPIDLE ideal-int pkg syscall (linux-386-cgo), const TCP_KEEPINTVL ideal-int pkg syscall (linux-386-cgo), const TCP_LINGER2 ideal-int pkg syscall (linux-386-cgo), const TCP_MAXSEG ideal-int pkg syscall (linux-386-cgo), const TCP_MAXWIN ideal-int pkg syscall (linux-386-cgo), const TCP_MAX_WINSHIFT ideal-int pkg syscall (linux-386-cgo), const TCP_MD5SIG ideal-int pkg syscall (linux-386-cgo), const TCP_MD5SIG_MAXKEYLEN ideal-int pkg syscall (linux-386-cgo), const TCP_MSS ideal-int pkg syscall (linux-386-cgo), const TCP_QUICKACK ideal-int pkg syscall (linux-386-cgo), const TCP_SYNCNT ideal-int pkg syscall (linux-386-cgo), const TCP_WINDOW_CLAMP ideal-int pkg syscall (linux-386-cgo), const TCSETS ideal-int pkg syscall (linux-386-cgo), const TIOCCBRK ideal-int pkg syscall (linux-386-cgo), const TIOCCONS ideal-int pkg syscall (linux-386-cgo), const TIOCEXCL ideal-int pkg syscall (linux-386-cgo), const TIOCGDEV ideal-int pkg syscall (linux-386-cgo), const TIOCGETD ideal-int pkg syscall (linux-386-cgo), const TIOCGICOUNT ideal-int pkg syscall (linux-386-cgo), const TIOCGLCKTRMIOS ideal-int pkg syscall (linux-386-cgo), const TIOCGPGRP ideal-int pkg syscall (linux-386-cgo), const TIOCGPTN ideal-int pkg syscall (linux-386-cgo), const TIOCGRS485 ideal-int pkg syscall (linux-386-cgo), const TIOCGSERIAL ideal-int pkg syscall (linux-386-cgo), const TIOCGSID ideal-int pkg syscall (linux-386-cgo), const TIOCGSOFTCAR ideal-int pkg syscall (linux-386-cgo), const TIOCGWINSZ ideal-int pkg syscall (linux-386-cgo), const TIOCINQ ideal-int pkg syscall (linux-386-cgo), const TIOCLINUX ideal-int pkg syscall (linux-386-cgo), const TIOCMBIC ideal-int pkg syscall (linux-386-cgo), const TIOCMBIS ideal-int pkg syscall (linux-386-cgo), const TIOCMGET ideal-int pkg syscall (linux-386-cgo), const TIOCMIWAIT ideal-int pkg syscall (linux-386-cgo), const TIOCMSET ideal-int pkg syscall (linux-386-cgo), const TIOCM_CAR ideal-int pkg syscall (linux-386-cgo), const TIOCM_CD ideal-int pkg syscall (linux-386-cgo), const TIOCM_CTS ideal-int pkg syscall (linux-386-cgo), const TIOCM_DSR ideal-int pkg syscall (linux-386-cgo), const TIOCM_DTR ideal-int pkg syscall (linux-386-cgo), const TIOCM_LE ideal-int pkg syscall (linux-386-cgo), const TIOCM_RI ideal-int pkg syscall (linux-386-cgo), const TIOCM_RNG ideal-int pkg syscall (linux-386-cgo), const TIOCM_RTS ideal-int pkg syscall (linux-386-cgo), const TIOCM_SR ideal-int pkg syscall (linux-386-cgo), const TIOCM_ST ideal-int pkg syscall (linux-386-cgo), const TIOCNOTTY ideal-int pkg syscall (linux-386-cgo), const TIOCNXCL ideal-int pkg syscall (linux-386-cgo), const TIOCOUTQ ideal-int pkg syscall (linux-386-cgo), const TIOCPKT ideal-int pkg syscall (linux-386-cgo), const TIOCPKT_DATA ideal-int pkg syscall (linux-386-cgo), const TIOCPKT_DOSTOP ideal-int pkg syscall (linux-386-cgo), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (linux-386-cgo), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (linux-386-cgo), const TIOCPKT_IOCTL ideal-int pkg syscall (linux-386-cgo), const TIOCPKT_NOSTOP ideal-int pkg syscall (linux-386-cgo), const TIOCPKT_START ideal-int pkg syscall (linux-386-cgo), const TIOCPKT_STOP ideal-int pkg syscall (linux-386-cgo), const TIOCSBRK ideal-int pkg syscall (linux-386-cgo), const TIOCSCTTY ideal-int pkg syscall (linux-386-cgo), const TIOCSERCONFIG ideal-int pkg syscall (linux-386-cgo), const TIOCSERGETLSR ideal-int pkg syscall (linux-386-cgo), const TIOCSERGETMULTI ideal-int pkg syscall (linux-386-cgo), const TIOCSERGSTRUCT ideal-int pkg syscall (linux-386-cgo), const TIOCSERGWILD ideal-int pkg syscall (linux-386-cgo), const TIOCSERSETMULTI ideal-int pkg syscall (linux-386-cgo), const TIOCSERSWILD ideal-int pkg syscall (linux-386-cgo), const TIOCSER_TEMT ideal-int pkg syscall (linux-386-cgo), const TIOCSETD ideal-int pkg syscall (linux-386-cgo), const TIOCSIG ideal-int pkg syscall (linux-386-cgo), const TIOCSLCKTRMIOS ideal-int pkg syscall (linux-386-cgo), const TIOCSPGRP ideal-int pkg syscall (linux-386-cgo), const TIOCSPTLCK ideal-int pkg syscall (linux-386-cgo), const TIOCSRS485 ideal-int pkg syscall (linux-386-cgo), const TIOCSSERIAL ideal-int pkg syscall (linux-386-cgo), const TIOCSSOFTCAR ideal-int pkg syscall (linux-386-cgo), const TIOCSTI ideal-int pkg syscall (linux-386-cgo), const TIOCSWINSZ ideal-int pkg syscall (linux-386-cgo), const TOSTOP ideal-int pkg syscall (linux-386-cgo), const TUNATTACHFILTER ideal-int pkg syscall (linux-386-cgo), const TUNDETACHFILTER ideal-int pkg syscall (linux-386-cgo), const TUNGETFEATURES ideal-int pkg syscall (linux-386-cgo), const TUNGETIFF ideal-int pkg syscall (linux-386-cgo), const TUNGETSNDBUF ideal-int pkg syscall (linux-386-cgo), const TUNGETVNETHDRSZ ideal-int pkg syscall (linux-386-cgo), const TUNSETDEBUG ideal-int pkg syscall (linux-386-cgo), const TUNSETGROUP ideal-int pkg syscall (linux-386-cgo), const TUNSETIFF ideal-int pkg syscall (linux-386-cgo), const TUNSETLINK ideal-int pkg syscall (linux-386-cgo), const TUNSETNOCSUM ideal-int pkg syscall (linux-386-cgo), const TUNSETOFFLOAD ideal-int pkg syscall (linux-386-cgo), const TUNSETOWNER ideal-int pkg syscall (linux-386-cgo), const TUNSETPERSIST ideal-int pkg syscall (linux-386-cgo), const TUNSETSNDBUF ideal-int pkg syscall (linux-386-cgo), const TUNSETTXFILTER ideal-int pkg syscall (linux-386-cgo), const TUNSETVNETHDRSZ ideal-int pkg syscall (linux-386-cgo), const VDISCARD ideal-int pkg syscall (linux-386-cgo), const VEOF ideal-int pkg syscall (linux-386-cgo), const VEOL ideal-int pkg syscall (linux-386-cgo), const VEOL2 ideal-int pkg syscall (linux-386-cgo), const VERASE ideal-int pkg syscall (linux-386-cgo), const VINTR ideal-int pkg syscall (linux-386-cgo), const VKILL ideal-int pkg syscall (linux-386-cgo), const VLNEXT ideal-int pkg syscall (linux-386-cgo), const VMIN ideal-int pkg syscall (linux-386-cgo), const VQUIT ideal-int pkg syscall (linux-386-cgo), const VREPRINT ideal-int pkg syscall (linux-386-cgo), const VSTART ideal-int pkg syscall (linux-386-cgo), const VSTOP ideal-int pkg syscall (linux-386-cgo), const VSUSP ideal-int pkg syscall (linux-386-cgo), const VSWTC ideal-int pkg syscall (linux-386-cgo), const VTIME ideal-int pkg syscall (linux-386-cgo), const VWERASE ideal-int pkg syscall (linux-386-cgo), const WALL ideal-int pkg syscall (linux-386-cgo), const WCLONE ideal-int pkg syscall (linux-386-cgo), const WCONTINUED ideal-int pkg syscall (linux-386-cgo), const WEXITED ideal-int pkg syscall (linux-386-cgo), const WNOHANG ideal-int pkg syscall (linux-386-cgo), const WNOTHREAD ideal-int pkg syscall (linux-386-cgo), const WNOWAIT ideal-int pkg syscall (linux-386-cgo), const WORDSIZE ideal-int pkg syscall (linux-386-cgo), const WSTOPPED ideal-int pkg syscall (linux-386-cgo), const WUNTRACED ideal-int pkg syscall (linux-386-cgo), const XCASE ideal-int pkg syscall (linux-386-cgo), func Accept(int) (int, Sockaddr, error) pkg syscall (linux-386-cgo), func Access(string, uint32) error pkg syscall (linux-386-cgo), func Acct(string) error pkg syscall (linux-386-cgo), func Adjtimex(*Timex) (int, error) pkg syscall (linux-386-cgo), func AttachLsf(int, []SockFilter) error pkg syscall (linux-386-cgo), func Bind(int, Sockaddr) error pkg syscall (linux-386-cgo), func BindToDevice(int, string) error pkg syscall (linux-386-cgo), func Chroot(string) error pkg syscall (linux-386-cgo), func Close(int) error pkg syscall (linux-386-cgo), func CloseOnExec(int) pkg syscall (linux-386-cgo), func CmsgLen(int) int pkg syscall (linux-386-cgo), func CmsgSpace(int) int pkg syscall (linux-386-cgo), func Connect(int, Sockaddr) error pkg syscall (linux-386-cgo), func Creat(string, uint32) (int, error) pkg syscall (linux-386-cgo), func DetachLsf(int) error pkg syscall (linux-386-cgo), func Dup(int) (int, error) pkg syscall (linux-386-cgo), func Dup2(int, int) error pkg syscall (linux-386-cgo), func EpollCreate(int) (int, error) pkg syscall (linux-386-cgo), func EpollCreate1(int) (int, error) pkg syscall (linux-386-cgo), func EpollCtl(int, int, int, *EpollEvent) error pkg syscall (linux-386-cgo), func EpollWait(int, []EpollEvent, int) (int, error) pkg syscall (linux-386-cgo), func Faccessat(int, string, uint32, int) error pkg syscall (linux-386-cgo), func Fallocate(int, uint32, int64, int64) error pkg syscall (linux-386-cgo), func Fchdir(int) error pkg syscall (linux-386-cgo), func Fchmod(int, uint32) error pkg syscall (linux-386-cgo), func Fchmodat(int, string, uint32, int) error pkg syscall (linux-386-cgo), func Fchown(int, int, int) error pkg syscall (linux-386-cgo), func Fchownat(int, string, int, int, int) error pkg syscall (linux-386-cgo), func Fdatasync(int) error pkg syscall (linux-386-cgo), func Flock(int, int) error pkg syscall (linux-386-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (linux-386-cgo), func Fstat(int, *Stat_t) error pkg syscall (linux-386-cgo), func Fstatfs(int, *Statfs_t) error pkg syscall (linux-386-cgo), func Fsync(int) error pkg syscall (linux-386-cgo), func Ftruncate(int, int64) error pkg syscall (linux-386-cgo), func Futimes(int, []Timeval) error pkg syscall (linux-386-cgo), func Futimesat(int, string, []Timeval) error pkg syscall (linux-386-cgo), func Getcwd([]uint8) (int, error) pkg syscall (linux-386-cgo), func Getdents(int, []uint8) (int, error) pkg syscall (linux-386-cgo), func Getpeername(int) (Sockaddr, error) pkg syscall (linux-386-cgo), func Getpgid(int) (int, error) pkg syscall (linux-386-cgo), func Getpgrp() int pkg syscall (linux-386-cgo), func Getrlimit(int, *Rlimit) error pkg syscall (linux-386-cgo), func Getrusage(int, *Rusage) error pkg syscall (linux-386-cgo), func Getsockname(int) (Sockaddr, error) pkg syscall (linux-386-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (linux-386-cgo), func GetsockoptIPMreqn(int, int, int) (*IPMreqn, error) pkg syscall (linux-386-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (linux-386-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (linux-386-cgo), func GetsockoptInt(int, int, int) (int, error) pkg syscall (linux-386-cgo), func Gettid() int pkg syscall (linux-386-cgo), func InotifyAddWatch(int, string, uint32) (int, error) pkg syscall (linux-386-cgo), func InotifyInit() (int, error) pkg syscall (linux-386-cgo), func InotifyInit1(int) (int, error) pkg syscall (linux-386-cgo), func InotifyRmWatch(int, uint32) (int, error) pkg syscall (linux-386-cgo), func Ioperm(int, int, int) error pkg syscall (linux-386-cgo), func Iopl(int) error pkg syscall (linux-386-cgo), func Kill(int, Signal) error pkg syscall (linux-386-cgo), func Klogctl(int, []uint8) (int, error) pkg syscall (linux-386-cgo), func Listen(int, int) error pkg syscall (linux-386-cgo), func LsfJump(int, int, int, int) *SockFilter pkg syscall (linux-386-cgo), func LsfSocket(int, int) (int, error) pkg syscall (linux-386-cgo), func LsfStmt(int, int) *SockFilter pkg syscall (linux-386-cgo), func Lstat(string, *Stat_t) error pkg syscall (linux-386-cgo), func Madvise([]uint8, int) error pkg syscall (linux-386-cgo), func Mkdirat(int, string, uint32) error pkg syscall (linux-386-cgo), func Mkfifo(string, uint32) error pkg syscall (linux-386-cgo), func Mknod(string, uint32, int) error pkg syscall (linux-386-cgo), func Mknodat(int, string, uint32, int) error pkg syscall (linux-386-cgo), func Mlock([]uint8) error pkg syscall (linux-386-cgo), func Mlockall(int) error pkg syscall (linux-386-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (linux-386-cgo), func Mount(string, string, string, uintptr, string) error pkg syscall (linux-386-cgo), func Mprotect([]uint8, int) error pkg syscall (linux-386-cgo), func Munlock([]uint8) error pkg syscall (linux-386-cgo), func Munlockall() error pkg syscall (linux-386-cgo), func Munmap([]uint8) error pkg syscall (linux-386-cgo), func Nanosleep(*Timespec, *Timespec) error pkg syscall (linux-386-cgo), func NetlinkRIB(int, int) ([]uint8, error) pkg syscall (linux-386-cgo), func NsecToTimespec(int64) Timespec pkg syscall (linux-386-cgo), func Open(string, int, uint32) (int, error) pkg syscall (linux-386-cgo), func Openat(int, string, int, uint32) (int, error) pkg syscall (linux-386-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (linux-386-cgo), func ParseNetlinkMessage([]uint8) ([]NetlinkMessage, error) pkg syscall (linux-386-cgo), func ParseNetlinkRouteAttr(*NetlinkMessage) ([]NetlinkRouteAttr, error) pkg syscall (linux-386-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (linux-386-cgo), func ParseUnixCredentials(*SocketControlMessage) (*Ucred, error) pkg syscall (linux-386-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (linux-386-cgo), func Pause() error pkg syscall (linux-386-cgo), func Pipe([]int) error pkg syscall (linux-386-cgo), func PivotRoot(string, string) error pkg syscall (linux-386-cgo), func Pread(int, []uint8, int64) (int, error) pkg syscall (linux-386-cgo), func PtraceAttach(int) error pkg syscall (linux-386-cgo), func PtraceCont(int, int) error pkg syscall (linux-386-cgo), func PtraceDetach(int) error pkg syscall (linux-386-cgo), func PtraceGetEventMsg(int) (uint, error) pkg syscall (linux-386-cgo), func PtraceGetRegs(int, *PtraceRegs) error pkg syscall (linux-386-cgo), func PtracePeekData(int, uintptr, []uint8) (int, error) pkg syscall (linux-386-cgo), func PtracePeekText(int, uintptr, []uint8) (int, error) pkg syscall (linux-386-cgo), func PtracePokeData(int, uintptr, []uint8) (int, error) pkg syscall (linux-386-cgo), func PtracePokeText(int, uintptr, []uint8) (int, error) pkg syscall (linux-386-cgo), func PtraceSetOptions(int, int) error pkg syscall (linux-386-cgo), func PtraceSetRegs(int, *PtraceRegs) error pkg syscall (linux-386-cgo), func PtraceSingleStep(int) error pkg syscall (linux-386-cgo), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (linux-386-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-386-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-386-cgo), func Read(int, []uint8) (int, error) pkg syscall (linux-386-cgo), func ReadDirent(int, []uint8) (int, error) pkg syscall (linux-386-cgo), func Reboot(int) error pkg syscall (linux-386-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (linux-386-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (linux-386-cgo), func Renameat(int, string, int, string) error pkg syscall (linux-386-cgo), func Seek(int, int64, int) (int64, error) pkg syscall (linux-386-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) (int, error) pkg syscall (linux-386-cgo), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (linux-386-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (linux-386-cgo), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (linux-386-cgo), func SetLsfPromisc(string, bool) error pkg syscall (linux-386-cgo), func SetNonblock(int, bool) error pkg syscall (linux-386-cgo), func Setdomainname([]uint8) error pkg syscall (linux-386-cgo), func Setfsgid(int) error pkg syscall (linux-386-cgo), func Setfsuid(int) error pkg syscall (linux-386-cgo), func Setgid(int) error pkg syscall (linux-386-cgo), func Setgroups([]int) error pkg syscall (linux-386-cgo), func Sethostname([]uint8) error pkg syscall (linux-386-cgo), func Setpgid(int, int) error pkg syscall (linux-386-cgo), func Setregid(int, int) error pkg syscall (linux-386-cgo), func Setresgid(int, int, int) error pkg syscall (linux-386-cgo), func Setresuid(int, int, int) error pkg syscall (linux-386-cgo), func Setreuid(int, int) error pkg syscall (linux-386-cgo), func Setrlimit(int, *Rlimit) error pkg syscall (linux-386-cgo), func Setsid() (int, error) pkg syscall (linux-386-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (linux-386-cgo), func SetsockoptIPMreqn(int, int, int, *IPMreqn) error pkg syscall (linux-386-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (linux-386-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (linux-386-cgo), func SetsockoptInt(int, int, int, int) error pkg syscall (linux-386-cgo), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (linux-386-cgo), func SetsockoptString(int, int, int, string) error pkg syscall (linux-386-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (linux-386-cgo), func Settimeofday(*Timeval) error pkg syscall (linux-386-cgo), func Setuid(int) error pkg syscall (linux-386-cgo), func Shutdown(int, int) error pkg syscall (linux-386-cgo), func Socket(int, int, int) (int, error) pkg syscall (linux-386-cgo), func Socketpair(int, int, int) ([2]int, error) pkg syscall (linux-386-cgo), func Splice(int, *int64, int, *int64, int, int) (int, error) pkg syscall (linux-386-cgo), func Stat(string, *Stat_t) error pkg syscall (linux-386-cgo), func Statfs(string, *Statfs_t) error pkg syscall (linux-386-cgo), func StringSlicePtr([]string) []*uint8 pkg syscall (linux-386-cgo), func Sync() pkg syscall (linux-386-cgo), func SyncFileRange(int, int64, int64, int) error pkg syscall (linux-386-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-386-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-386-cgo), func Sysinfo(*Sysinfo_t) error pkg syscall (linux-386-cgo), func Tee(int, int, int, int) (int64, error) pkg syscall (linux-386-cgo), func Tgkill(int, int, Signal) error pkg syscall (linux-386-cgo), func Time(*Time_t) (Time_t, error) pkg syscall (linux-386-cgo), func Times(*Tms) (uintptr, error) pkg syscall (linux-386-cgo), func TimespecToNsec(Timespec) int64 pkg syscall (linux-386-cgo), func TimevalToNsec(Timeval) int64 pkg syscall (linux-386-cgo), func Truncate(string, int64) error pkg syscall (linux-386-cgo), func Umask(int) int pkg syscall (linux-386-cgo), func Uname(*Utsname) error pkg syscall (linux-386-cgo), func UnixCredentials(*Ucred) []uint8 pkg syscall (linux-386-cgo), func UnixRights(...int) []uint8 pkg syscall (linux-386-cgo), func Unlinkat(int, string) error pkg syscall (linux-386-cgo), func Unmount(string, int) error pkg syscall (linux-386-cgo), func Unshare(int) error pkg syscall (linux-386-cgo), func Ustat(int, *Ustat_t) error pkg syscall (linux-386-cgo), func Utime(string, *Utimbuf) error pkg syscall (linux-386-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (linux-386-cgo), func Write(int, []uint8) (int, error) pkg syscall (linux-386-cgo), method (*Cmsghdr) SetLen(int) pkg syscall (linux-386-cgo), method (*Iovec) SetLen(int) pkg syscall (linux-386-cgo), method (*Msghdr) SetControllen(int) pkg syscall (linux-386-cgo), method (*PtraceRegs) PC() uint64 pkg syscall (linux-386-cgo), method (*PtraceRegs) SetPC(uint64) pkg syscall (linux-386-cgo), type Cmsghdr struct pkg syscall (linux-386-cgo), type Cmsghdr struct, Len uint32 pkg syscall (linux-386-cgo), type Cmsghdr struct, Level int32 pkg syscall (linux-386-cgo), type Cmsghdr struct, Type int32 pkg syscall (linux-386-cgo), type Cmsghdr struct, X__cmsg_data [0]uint8 pkg syscall (linux-386-cgo), type Credential struct pkg syscall (linux-386-cgo), type Credential struct, Gid uint32 pkg syscall (linux-386-cgo), type Credential struct, Groups []uint32 pkg syscall (linux-386-cgo), type Credential struct, Uid uint32 pkg syscall (linux-386-cgo), type Dirent struct pkg syscall (linux-386-cgo), type Dirent struct, Ino uint64 pkg syscall (linux-386-cgo), type Dirent struct, Name [256]int8 pkg syscall (linux-386-cgo), type Dirent struct, Off int64 pkg syscall (linux-386-cgo), type Dirent struct, Pad_cgo_0 [1]uint8 pkg syscall (linux-386-cgo), type Dirent struct, Reclen uint16 pkg syscall (linux-386-cgo), type Dirent struct, Type uint8 pkg syscall (linux-386-cgo), type EpollEvent struct pkg syscall (linux-386-cgo), type EpollEvent struct, Events uint32 pkg syscall (linux-386-cgo), type EpollEvent struct, Fd int32 pkg syscall (linux-386-cgo), type EpollEvent struct, Pad int32 pkg syscall (linux-386-cgo), type FdSet struct pkg syscall (linux-386-cgo), type FdSet struct, Bits [32]int32 pkg syscall (linux-386-cgo), type Fsid struct pkg syscall (linux-386-cgo), type Fsid struct, X__val [2]int32 pkg syscall (linux-386-cgo), type IPMreqn struct pkg syscall (linux-386-cgo), type IPMreqn struct, Address [4]uint8 pkg syscall (linux-386-cgo), type IPMreqn struct, Ifindex int32 pkg syscall (linux-386-cgo), type IPMreqn struct, Multiaddr [4]uint8 pkg syscall (linux-386-cgo), type IfAddrmsg struct pkg syscall (linux-386-cgo), type IfAddrmsg struct, Family uint8 pkg syscall (linux-386-cgo), type IfAddrmsg struct, Flags uint8 pkg syscall (linux-386-cgo), type IfAddrmsg struct, Index uint32 pkg syscall (linux-386-cgo), type IfAddrmsg struct, Prefixlen uint8 pkg syscall (linux-386-cgo), type IfAddrmsg struct, Scope uint8 pkg syscall (linux-386-cgo), type IfInfomsg struct pkg syscall (linux-386-cgo), type IfInfomsg struct, Change uint32 pkg syscall (linux-386-cgo), type IfInfomsg struct, Family uint8 pkg syscall (linux-386-cgo), type IfInfomsg struct, Flags uint32 pkg syscall (linux-386-cgo), type IfInfomsg struct, Index int32 pkg syscall (linux-386-cgo), type IfInfomsg struct, Type uint16 pkg syscall (linux-386-cgo), type IfInfomsg struct, X__ifi_pad uint8 pkg syscall (linux-386-cgo), type Inet4Pktinfo struct pkg syscall (linux-386-cgo), type Inet4Pktinfo struct, Addr [4]uint8 pkg syscall (linux-386-cgo), type Inet4Pktinfo struct, Ifindex int32 pkg syscall (linux-386-cgo), type Inet4Pktinfo struct, Spec_dst [4]uint8 pkg syscall (linux-386-cgo), type Inet6Pktinfo struct pkg syscall (linux-386-cgo), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (linux-386-cgo), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (linux-386-cgo), type InotifyEvent struct pkg syscall (linux-386-cgo), type InotifyEvent struct, Cookie uint32 pkg syscall (linux-386-cgo), type InotifyEvent struct, Len uint32 pkg syscall (linux-386-cgo), type InotifyEvent struct, Mask uint32 pkg syscall (linux-386-cgo), type InotifyEvent struct, Name [0]uint8 pkg syscall (linux-386-cgo), type InotifyEvent struct, Wd int32 pkg syscall (linux-386-cgo), type Iovec struct pkg syscall (linux-386-cgo), type Iovec struct, Base *uint8 pkg syscall (linux-386-cgo), type Iovec struct, Len uint32 pkg syscall (linux-386-cgo), type Msghdr struct pkg syscall (linux-386-cgo), type Msghdr struct, Control *uint8 pkg syscall (linux-386-cgo), type Msghdr struct, Controllen uint32 pkg syscall (linux-386-cgo), type Msghdr struct, Flags int32 pkg syscall (linux-386-cgo), type Msghdr struct, Iov *Iovec pkg syscall (linux-386-cgo), type Msghdr struct, Iovlen uint32 pkg syscall (linux-386-cgo), type Msghdr struct, Name *uint8 pkg syscall (linux-386-cgo), type Msghdr struct, Namelen uint32 pkg syscall (linux-386-cgo), type NetlinkMessage struct pkg syscall (linux-386-cgo), type NetlinkMessage struct, Data []uint8 pkg syscall (linux-386-cgo), type NetlinkMessage struct, Header NlMsghdr pkg syscall (linux-386-cgo), type NetlinkRouteAttr struct pkg syscall (linux-386-cgo), type NetlinkRouteAttr struct, Attr RtAttr pkg syscall (linux-386-cgo), type NetlinkRouteAttr struct, Value []uint8 pkg syscall (linux-386-cgo), type NetlinkRouteRequest struct pkg syscall (linux-386-cgo), type NetlinkRouteRequest struct, Data RtGenmsg pkg syscall (linux-386-cgo), type NetlinkRouteRequest struct, Header NlMsghdr pkg syscall (linux-386-cgo), type NlAttr struct pkg syscall (linux-386-cgo), type NlAttr struct, Len uint16 pkg syscall (linux-386-cgo), type NlAttr struct, Type uint16 pkg syscall (linux-386-cgo), type NlMsgerr struct pkg syscall (linux-386-cgo), type NlMsgerr struct, Error int32 pkg syscall (linux-386-cgo), type NlMsgerr struct, Msg NlMsghdr pkg syscall (linux-386-cgo), type NlMsghdr struct pkg syscall (linux-386-cgo), type NlMsghdr struct, Flags uint16 pkg syscall (linux-386-cgo), type NlMsghdr struct, Len uint32 pkg syscall (linux-386-cgo), type NlMsghdr struct, Pid uint32 pkg syscall (linux-386-cgo), type NlMsghdr struct, Seq uint32 pkg syscall (linux-386-cgo), type NlMsghdr struct, Type uint16 pkg syscall (linux-386-cgo), type PtraceRegs struct pkg syscall (linux-386-cgo), type PtraceRegs struct, Eax int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Ebp int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Ebx int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Ecx int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Edi int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Edx int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Eflags int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Eip int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Esi int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Esp int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Orig_eax int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Xcs int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Xds int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Xes int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Xfs int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Xgs int32 pkg syscall (linux-386-cgo), type PtraceRegs struct, Xss int32 pkg syscall (linux-386-cgo), type RawSockaddr struct, Data [14]int8 pkg syscall (linux-386-cgo), type RawSockaddr struct, Family uint16 pkg syscall (linux-386-cgo), type RawSockaddrAny struct, Pad [96]int8 pkg syscall (linux-386-cgo), type RawSockaddrInet4 struct, Family uint16 pkg syscall (linux-386-cgo), type RawSockaddrInet4 struct, Zero [8]uint8 pkg syscall (linux-386-cgo), type RawSockaddrInet6 struct pkg syscall (linux-386-cgo), type RawSockaddrInet6 struct, Addr [16]uint8 pkg syscall (linux-386-cgo), type RawSockaddrInet6 struct, Family uint16 pkg syscall (linux-386-cgo), type RawSockaddrInet6 struct, Flowinfo uint32 pkg syscall (linux-386-cgo), type RawSockaddrInet6 struct, Port uint16 pkg syscall (linux-386-cgo), type RawSockaddrInet6 struct, Scope_id uint32 pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct, Addr [8]uint8 pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct, Family uint16 pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct, Halen uint8 pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct, Hatype uint16 pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct, Ifindex int32 pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct, Pkttype uint8 pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct, Protocol uint16 pkg syscall (linux-386-cgo), type RawSockaddrNetlink struct pkg syscall (linux-386-cgo), type RawSockaddrNetlink struct, Family uint16 pkg syscall (linux-386-cgo), type RawSockaddrNetlink struct, Groups uint32 pkg syscall (linux-386-cgo), type RawSockaddrNetlink struct, Pad uint16 pkg syscall (linux-386-cgo), type RawSockaddrNetlink struct, Pid uint32 pkg syscall (linux-386-cgo), type RawSockaddrUnix struct pkg syscall (linux-386-cgo), type RawSockaddrUnix struct, Family uint16 pkg syscall (linux-386-cgo), type RawSockaddrUnix struct, Path [108]int8 pkg syscall (linux-386-cgo), type Rlimit struct pkg syscall (linux-386-cgo), type Rlimit struct, Cur uint64 pkg syscall (linux-386-cgo), type Rlimit struct, Max uint64 pkg syscall (linux-386-cgo), type RtAttr struct pkg syscall (linux-386-cgo), type RtAttr struct, Len uint16 pkg syscall (linux-386-cgo), type RtAttr struct, Type uint16 pkg syscall (linux-386-cgo), type RtGenmsg struct pkg syscall (linux-386-cgo), type RtGenmsg struct, Family uint8 pkg syscall (linux-386-cgo), type RtMsg struct pkg syscall (linux-386-cgo), type RtMsg struct, Dst_len uint8 pkg syscall (linux-386-cgo), type RtMsg struct, Family uint8 pkg syscall (linux-386-cgo), type RtMsg struct, Flags uint32 pkg syscall (linux-386-cgo), type RtMsg struct, Protocol uint8 pkg syscall (linux-386-cgo), type RtMsg struct, Scope uint8 pkg syscall (linux-386-cgo), type RtMsg struct, Src_len uint8 pkg syscall (linux-386-cgo), type RtMsg struct, Table uint8 pkg syscall (linux-386-cgo), type RtMsg struct, Tos uint8 pkg syscall (linux-386-cgo), type RtMsg struct, Type uint8 pkg syscall (linux-386-cgo), type RtNexthop struct pkg syscall (linux-386-cgo), type RtNexthop struct, Flags uint8 pkg syscall (linux-386-cgo), type RtNexthop struct, Hops uint8 pkg syscall (linux-386-cgo), type RtNexthop struct, Ifindex int32 pkg syscall (linux-386-cgo), type RtNexthop struct, Len uint16 pkg syscall (linux-386-cgo), type Rusage struct, Idrss int32 pkg syscall (linux-386-cgo), type Rusage struct, Inblock int32 pkg syscall (linux-386-cgo), type Rusage struct, Isrss int32 pkg syscall (linux-386-cgo), type Rusage struct, Ixrss int32 pkg syscall (linux-386-cgo), type Rusage struct, Majflt int32 pkg syscall (linux-386-cgo), type Rusage struct, Maxrss int32 pkg syscall (linux-386-cgo), type Rusage struct, Minflt int32 pkg syscall (linux-386-cgo), type Rusage struct, Msgrcv int32 pkg syscall (linux-386-cgo), type Rusage struct, Msgsnd int32 pkg syscall (linux-386-cgo), type Rusage struct, Nivcsw int32 pkg syscall (linux-386-cgo), type Rusage struct, Nsignals int32 pkg syscall (linux-386-cgo), type Rusage struct, Nswap int32 pkg syscall (linux-386-cgo), type Rusage struct, Nvcsw int32 pkg syscall (linux-386-cgo), type Rusage struct, Oublock int32 pkg syscall (linux-386-cgo), type Rusage struct, Stime Timeval pkg syscall (linux-386-cgo), type Rusage struct, Utime Timeval pkg syscall (linux-386-cgo), type SockFilter struct pkg syscall (linux-386-cgo), type SockFilter struct, Code uint16 pkg syscall (linux-386-cgo), type SockFilter struct, Jf uint8 pkg syscall (linux-386-cgo), type SockFilter struct, Jt uint8 pkg syscall (linux-386-cgo), type SockFilter struct, K uint32 pkg syscall (linux-386-cgo), type SockFprog struct pkg syscall (linux-386-cgo), type SockFprog struct, Filter *SockFilter pkg syscall (linux-386-cgo), type SockFprog struct, Len uint16 pkg syscall (linux-386-cgo), type SockFprog struct, Pad_cgo_0 [2]uint8 pkg syscall (linux-386-cgo), type SockaddrLinklayer struct pkg syscall (linux-386-cgo), type SockaddrLinklayer struct, Addr [8]uint8 pkg syscall (linux-386-cgo), type SockaddrLinklayer struct, Halen uint8 pkg syscall (linux-386-cgo), type SockaddrLinklayer struct, Hatype uint16 pkg syscall (linux-386-cgo), type SockaddrLinklayer struct, Ifindex int pkg syscall (linux-386-cgo), type SockaddrLinklayer struct, Pkttype uint8 pkg syscall (linux-386-cgo), type SockaddrLinklayer struct, Protocol uint16 pkg syscall (linux-386-cgo), type SockaddrNetlink struct pkg syscall (linux-386-cgo), type SockaddrNetlink struct, Family uint16 pkg syscall (linux-386-cgo), type SockaddrNetlink struct, Groups uint32 pkg syscall (linux-386-cgo), type SockaddrNetlink struct, Pad uint16 pkg syscall (linux-386-cgo), type SockaddrNetlink struct, Pid uint32 pkg syscall (linux-386-cgo), type SocketControlMessage struct pkg syscall (linux-386-cgo), type SocketControlMessage struct, Data []uint8 pkg syscall (linux-386-cgo), type SocketControlMessage struct, Header Cmsghdr pkg syscall (linux-386-cgo), type Stat_t struct pkg syscall (linux-386-cgo), type Stat_t struct, Atim Timespec pkg syscall (linux-386-cgo), type Stat_t struct, Blksize int32 pkg syscall (linux-386-cgo), type Stat_t struct, Blocks int64 pkg syscall (linux-386-cgo), type Stat_t struct, Ctim Timespec pkg syscall (linux-386-cgo), type Stat_t struct, Dev uint64 pkg syscall (linux-386-cgo), type Stat_t struct, Gid uint32 pkg syscall (linux-386-cgo), type Stat_t struct, Ino uint64 pkg syscall (linux-386-cgo), type Stat_t struct, Mode uint32 pkg syscall (linux-386-cgo), type Stat_t struct, Mtim Timespec pkg syscall (linux-386-cgo), type Stat_t struct, Nlink uint32 pkg syscall (linux-386-cgo), type Stat_t struct, Pad_cgo_0 [2]uint8 pkg syscall (linux-386-cgo), type Stat_t struct, Pad_cgo_1 [2]uint8 pkg syscall (linux-386-cgo), type Stat_t struct, Rdev uint64 pkg syscall (linux-386-cgo), type Stat_t struct, Size int64 pkg syscall (linux-386-cgo), type Stat_t struct, Uid uint32 pkg syscall (linux-386-cgo), type Stat_t struct, X__pad1 uint16 pkg syscall (linux-386-cgo), type Stat_t struct, X__pad2 uint16 pkg syscall (linux-386-cgo), type Stat_t struct, X__st_ino uint32 pkg syscall (linux-386-cgo), type Statfs_t struct pkg syscall (linux-386-cgo), type Statfs_t struct, Bavail uint64 pkg syscall (linux-386-cgo), type Statfs_t struct, Bfree uint64 pkg syscall (linux-386-cgo), type Statfs_t struct, Blocks uint64 pkg syscall (linux-386-cgo), type Statfs_t struct, Bsize int32 pkg syscall (linux-386-cgo), type Statfs_t struct, Ffree uint64 pkg syscall (linux-386-cgo), type Statfs_t struct, Files uint64 pkg syscall (linux-386-cgo), type Statfs_t struct, Flags int32 pkg syscall (linux-386-cgo), type Statfs_t struct, Frsize int32 pkg syscall (linux-386-cgo), type Statfs_t struct, Fsid Fsid pkg syscall (linux-386-cgo), type Statfs_t struct, Namelen int32 pkg syscall (linux-386-cgo), type Statfs_t struct, Spare [4]int32 pkg syscall (linux-386-cgo), type Statfs_t struct, Type int32 pkg syscall (linux-386-cgo), type SysProcAttr struct, Chroot string pkg syscall (linux-386-cgo), type SysProcAttr struct, Credential *Credential pkg syscall (linux-386-cgo), type SysProcAttr struct, Noctty bool pkg syscall (linux-386-cgo), type SysProcAttr struct, Pdeathsig Signal pkg syscall (linux-386-cgo), type SysProcAttr struct, Ptrace bool pkg syscall (linux-386-cgo), type SysProcAttr struct, Setctty bool pkg syscall (linux-386-cgo), type SysProcAttr struct, Setpgid bool pkg syscall (linux-386-cgo), type SysProcAttr struct, Setsid bool pkg syscall (linux-386-cgo), type Sysinfo_t struct pkg syscall (linux-386-cgo), type Sysinfo_t struct, Bufferram uint32 pkg syscall (linux-386-cgo), type Sysinfo_t struct, Freehigh uint32 pkg syscall (linux-386-cgo), type Sysinfo_t struct, Freeram uint32 pkg syscall (linux-386-cgo), type Sysinfo_t struct, Freeswap uint32 pkg syscall (linux-386-cgo), type Sysinfo_t struct, Loads [3]uint32 pkg syscall (linux-386-cgo), type Sysinfo_t struct, Pad uint16 pkg syscall (linux-386-cgo), type Sysinfo_t struct, Procs uint16 pkg syscall (linux-386-cgo), type Sysinfo_t struct, Sharedram uint32 pkg syscall (linux-386-cgo), type Sysinfo_t struct, Totalhigh uint32 pkg syscall (linux-386-cgo), type Sysinfo_t struct, Totalram uint32 pkg syscall (linux-386-cgo), type Sysinfo_t struct, Totalswap uint32 pkg syscall (linux-386-cgo), type Sysinfo_t struct, Unit uint32 pkg syscall (linux-386-cgo), type Sysinfo_t struct, Uptime int32 pkg syscall (linux-386-cgo), type Sysinfo_t struct, X_f [8]int8 pkg syscall (linux-386-cgo), type Termios struct pkg syscall (linux-386-cgo), type Termios struct, Cc [32]uint8 pkg syscall (linux-386-cgo), type Termios struct, Cflag uint32 pkg syscall (linux-386-cgo), type Termios struct, Iflag uint32 pkg syscall (linux-386-cgo), type Termios struct, Ispeed uint32 pkg syscall (linux-386-cgo), type Termios struct, Lflag uint32 pkg syscall (linux-386-cgo), type Termios struct, Line uint8 pkg syscall (linux-386-cgo), type Termios struct, Oflag uint32 pkg syscall (linux-386-cgo), type Termios struct, Ospeed uint32 pkg syscall (linux-386-cgo), type Termios struct, Pad_cgo_0 [3]uint8 pkg syscall (linux-386-cgo), type Time_t int32 pkg syscall (linux-386-cgo), type Timespec struct, Nsec int32 pkg syscall (linux-386-cgo), type Timespec struct, Sec int32 pkg syscall (linux-386-cgo), type Timeval struct, Sec int32 pkg syscall (linux-386-cgo), type Timeval struct, Usec int32 pkg syscall (linux-386-cgo), type Timex struct pkg syscall (linux-386-cgo), type Timex struct, Calcnt int32 pkg syscall (linux-386-cgo), type Timex struct, Constant int32 pkg syscall (linux-386-cgo), type Timex struct, Errcnt int32 pkg syscall (linux-386-cgo), type Timex struct, Esterror int32 pkg syscall (linux-386-cgo), type Timex struct, Freq int32 pkg syscall (linux-386-cgo), type Timex struct, Jitcnt int32 pkg syscall (linux-386-cgo), type Timex struct, Jitter int32 pkg syscall (linux-386-cgo), type Timex struct, Maxerror int32 pkg syscall (linux-386-cgo), type Timex struct, Modes uint32 pkg syscall (linux-386-cgo), type Timex struct, Offset int32 pkg syscall (linux-386-cgo), type Timex struct, Pad_cgo_0 [44]uint8 pkg syscall (linux-386-cgo), type Timex struct, Ppsfreq int32 pkg syscall (linux-386-cgo), type Timex struct, Precision int32 pkg syscall (linux-386-cgo), type Timex struct, Shift int32 pkg syscall (linux-386-cgo), type Timex struct, Stabil int32 pkg syscall (linux-386-cgo), type Timex struct, Status int32 pkg syscall (linux-386-cgo), type Timex struct, Stbcnt int32 pkg syscall (linux-386-cgo), type Timex struct, Tai int32 pkg syscall (linux-386-cgo), type Timex struct, Tick int32 pkg syscall (linux-386-cgo), type Timex struct, Time Timeval pkg syscall (linux-386-cgo), type Timex struct, Tolerance int32 pkg syscall (linux-386-cgo), type Tms struct pkg syscall (linux-386-cgo), type Tms struct, Cstime int32 pkg syscall (linux-386-cgo), type Tms struct, Cutime int32 pkg syscall (linux-386-cgo), type Tms struct, Stime int32 pkg syscall (linux-386-cgo), type Tms struct, Utime int32 pkg syscall (linux-386-cgo), type Ucred struct pkg syscall (linux-386-cgo), type Ucred struct, Gid uint32 pkg syscall (linux-386-cgo), type Ucred struct, Pid int32 pkg syscall (linux-386-cgo), type Ucred struct, Uid uint32 pkg syscall (linux-386-cgo), type Ustat_t struct pkg syscall (linux-386-cgo), type Ustat_t struct, Fname [6]int8 pkg syscall (linux-386-cgo), type Ustat_t struct, Fpack [6]int8 pkg syscall (linux-386-cgo), type Ustat_t struct, Tfree int32 pkg syscall (linux-386-cgo), type Ustat_t struct, Tinode uint32 pkg syscall (linux-386-cgo), type Utimbuf struct pkg syscall (linux-386-cgo), type Utimbuf struct, Actime int32 pkg syscall (linux-386-cgo), type Utimbuf struct, Modtime int32 pkg syscall (linux-386-cgo), type Utsname struct pkg syscall (linux-386-cgo), type Utsname struct, Domainname [65]int8 pkg syscall (linux-386-cgo), type Utsname struct, Machine [65]int8 pkg syscall (linux-386-cgo), type Utsname struct, Nodename [65]int8 pkg syscall (linux-386-cgo), type Utsname struct, Release [65]int8 pkg syscall (linux-386-cgo), type Utsname struct, Sysname [65]int8 pkg syscall (linux-386-cgo), type Utsname struct, Version [65]int8 pkg syscall (linux-386-cgo), type WaitStatus uint32 pkg syscall (linux-386-cgo), var Stderr int pkg syscall (linux-386-cgo), var Stdin int pkg syscall (linux-386-cgo), var Stdout int pkg syscall (linux-amd64), const AF_ALG ideal-int pkg syscall (linux-amd64), const AF_APPLETALK ideal-int pkg syscall (linux-amd64), const AF_ASH ideal-int pkg syscall (linux-amd64), const AF_ATMPVC ideal-int pkg syscall (linux-amd64), const AF_ATMSVC ideal-int pkg syscall (linux-amd64), const AF_AX25 ideal-int pkg syscall (linux-amd64), const AF_BLUETOOTH ideal-int pkg syscall (linux-amd64), const AF_BRIDGE ideal-int pkg syscall (linux-amd64), const AF_CAIF ideal-int pkg syscall (linux-amd64), const AF_CAN ideal-int pkg syscall (linux-amd64), const AF_DECnet ideal-int pkg syscall (linux-amd64), const AF_ECONET ideal-int pkg syscall (linux-amd64), const AF_FILE ideal-int pkg syscall (linux-amd64), const AF_IEEE802154 ideal-int pkg syscall (linux-amd64), const AF_IPX ideal-int pkg syscall (linux-amd64), const AF_IRDA ideal-int pkg syscall (linux-amd64), const AF_ISDN ideal-int pkg syscall (linux-amd64), const AF_IUCV ideal-int pkg syscall (linux-amd64), const AF_KEY ideal-int pkg syscall (linux-amd64), const AF_LLC ideal-int pkg syscall (linux-amd64), const AF_LOCAL ideal-int pkg syscall (linux-amd64), const AF_MAX ideal-int pkg syscall (linux-amd64), const AF_NETBEUI ideal-int pkg syscall (linux-amd64), const AF_NETLINK ideal-int pkg syscall (linux-amd64), const AF_NETROM ideal-int pkg syscall (linux-amd64), const AF_PACKET ideal-int pkg syscall (linux-amd64), const AF_PHONET ideal-int pkg syscall (linux-amd64), const AF_PPPOX ideal-int pkg syscall (linux-amd64), const AF_RDS ideal-int pkg syscall (linux-amd64), const AF_ROSE ideal-int pkg syscall (linux-amd64), const AF_ROUTE ideal-int pkg syscall (linux-amd64), const AF_RXRPC ideal-int pkg syscall (linux-amd64), const AF_SECURITY ideal-int pkg syscall (linux-amd64), const AF_SNA ideal-int pkg syscall (linux-amd64), const AF_TIPC ideal-int pkg syscall (linux-amd64), const AF_WANPIPE ideal-int pkg syscall (linux-amd64), const AF_X25 ideal-int pkg syscall (linux-amd64), const ARPHRD_ADAPT ideal-int pkg syscall (linux-amd64), const ARPHRD_APPLETLK ideal-int pkg syscall (linux-amd64), const ARPHRD_ARCNET ideal-int pkg syscall (linux-amd64), const ARPHRD_ASH ideal-int pkg syscall (linux-amd64), const ARPHRD_ATM ideal-int pkg syscall (linux-amd64), const ARPHRD_AX25 ideal-int pkg syscall (linux-amd64), const ARPHRD_BIF ideal-int pkg syscall (linux-amd64), const ARPHRD_CHAOS ideal-int pkg syscall (linux-amd64), const ARPHRD_CISCO ideal-int pkg syscall (linux-amd64), const ARPHRD_CSLIP ideal-int pkg syscall (linux-amd64), const ARPHRD_CSLIP6 ideal-int pkg syscall (linux-amd64), const ARPHRD_DDCMP ideal-int pkg syscall (linux-amd64), const ARPHRD_DLCI ideal-int pkg syscall (linux-amd64), const ARPHRD_ECONET ideal-int pkg syscall (linux-amd64), const ARPHRD_EETHER ideal-int pkg syscall (linux-amd64), const ARPHRD_ETHER ideal-int pkg syscall (linux-amd64), const ARPHRD_EUI64 ideal-int pkg syscall (linux-amd64), const ARPHRD_FCAL ideal-int pkg syscall (linux-amd64), const ARPHRD_FCFABRIC ideal-int pkg syscall (linux-amd64), const ARPHRD_FCPL ideal-int pkg syscall (linux-amd64), const ARPHRD_FCPP ideal-int pkg syscall (linux-amd64), const ARPHRD_FDDI ideal-int pkg syscall (linux-amd64), const ARPHRD_FRAD ideal-int pkg syscall (linux-amd64), const ARPHRD_HDLC ideal-int pkg syscall (linux-amd64), const ARPHRD_HIPPI ideal-int pkg syscall (linux-amd64), const ARPHRD_HWX25 ideal-int pkg syscall (linux-amd64), const ARPHRD_IEEE1394 ideal-int pkg syscall (linux-amd64), const ARPHRD_IEEE802 ideal-int pkg syscall (linux-amd64), const ARPHRD_IEEE80211 ideal-int pkg syscall (linux-amd64), const ARPHRD_IEEE80211_PRISM ideal-int pkg syscall (linux-amd64), const ARPHRD_IEEE80211_RADIOTAP ideal-int pkg syscall (linux-amd64), const ARPHRD_IEEE802154 ideal-int pkg syscall (linux-amd64), const ARPHRD_IEEE802154_PHY ideal-int pkg syscall (linux-amd64), const ARPHRD_IEEE802_TR ideal-int pkg syscall (linux-amd64), const ARPHRD_INFINIBAND ideal-int pkg syscall (linux-amd64), const ARPHRD_IPDDP ideal-int pkg syscall (linux-amd64), const ARPHRD_IPGRE ideal-int pkg syscall (linux-amd64), const ARPHRD_IRDA ideal-int pkg syscall (linux-amd64), const ARPHRD_LAPB ideal-int pkg syscall (linux-amd64), const ARPHRD_LOCALTLK ideal-int pkg syscall (linux-amd64), const ARPHRD_LOOPBACK ideal-int pkg syscall (linux-amd64), const ARPHRD_METRICOM ideal-int pkg syscall (linux-amd64), const ARPHRD_NETROM ideal-int pkg syscall (linux-amd64), const ARPHRD_NONE ideal-int pkg syscall (linux-amd64), const ARPHRD_PIMREG ideal-int pkg syscall (linux-amd64), const ARPHRD_PPP ideal-int pkg syscall (linux-amd64), const ARPHRD_PRONET ideal-int pkg syscall (linux-amd64), const ARPHRD_RAWHDLC ideal-int pkg syscall (linux-amd64), const ARPHRD_ROSE ideal-int pkg syscall (linux-amd64), const ARPHRD_RSRVD ideal-int pkg syscall (linux-amd64), const ARPHRD_SIT ideal-int pkg syscall (linux-amd64), const ARPHRD_SKIP ideal-int pkg syscall (linux-amd64), const ARPHRD_SLIP ideal-int pkg syscall (linux-amd64), const ARPHRD_SLIP6 ideal-int pkg syscall (linux-amd64), const ARPHRD_TUNNEL ideal-int pkg syscall (linux-amd64), const ARPHRD_TUNNEL6 ideal-int pkg syscall (linux-amd64), const ARPHRD_VOID ideal-int pkg syscall (linux-amd64), const ARPHRD_X25 ideal-int pkg syscall (linux-amd64), const B0 ideal-int pkg syscall (linux-amd64), const B1000000 ideal-int pkg syscall (linux-amd64), const B110 ideal-int pkg syscall (linux-amd64), const B115200 ideal-int pkg syscall (linux-amd64), const B1152000 ideal-int pkg syscall (linux-amd64), const B1200 ideal-int pkg syscall (linux-amd64), const B134 ideal-int pkg syscall (linux-amd64), const B150 ideal-int pkg syscall (linux-amd64), const B1500000 ideal-int pkg syscall (linux-amd64), const B1800 ideal-int pkg syscall (linux-amd64), const B19200 ideal-int pkg syscall (linux-amd64), const B200 ideal-int pkg syscall (linux-amd64), const B2000000 ideal-int pkg syscall (linux-amd64), const B230400 ideal-int pkg syscall (linux-amd64), const B2400 ideal-int pkg syscall (linux-amd64), const B2500000 ideal-int pkg syscall (linux-amd64), const B300 ideal-int pkg syscall (linux-amd64), const B3000000 ideal-int pkg syscall (linux-amd64), const B3500000 ideal-int pkg syscall (linux-amd64), const B38400 ideal-int pkg syscall (linux-amd64), const B4000000 ideal-int pkg syscall (linux-amd64), const B460800 ideal-int pkg syscall (linux-amd64), const B4800 ideal-int pkg syscall (linux-amd64), const B50 ideal-int pkg syscall (linux-amd64), const B500000 ideal-int pkg syscall (linux-amd64), const B57600 ideal-int pkg syscall (linux-amd64), const B576000 ideal-int pkg syscall (linux-amd64), const B600 ideal-int pkg syscall (linux-amd64), const B75 ideal-int pkg syscall (linux-amd64), const B921600 ideal-int pkg syscall (linux-amd64), const B9600 ideal-int pkg syscall (linux-amd64), const BPF_A ideal-int pkg syscall (linux-amd64), const BPF_ABS ideal-int pkg syscall (linux-amd64), const BPF_ADD ideal-int pkg syscall (linux-amd64), const BPF_ALU ideal-int pkg syscall (linux-amd64), const BPF_AND ideal-int pkg syscall (linux-amd64), const BPF_B ideal-int pkg syscall (linux-amd64), const BPF_DIV ideal-int pkg syscall (linux-amd64), const BPF_H ideal-int pkg syscall (linux-amd64), const BPF_IMM ideal-int pkg syscall (linux-amd64), const BPF_IND ideal-int pkg syscall (linux-amd64), const BPF_JA ideal-int pkg syscall (linux-amd64), const BPF_JEQ ideal-int pkg syscall (linux-amd64), const BPF_JGE ideal-int pkg syscall (linux-amd64), const BPF_JGT ideal-int pkg syscall (linux-amd64), const BPF_JMP ideal-int pkg syscall (linux-amd64), const BPF_JSET ideal-int pkg syscall (linux-amd64), const BPF_K ideal-int pkg syscall (linux-amd64), const BPF_LD ideal-int pkg syscall (linux-amd64), const BPF_LDX ideal-int pkg syscall (linux-amd64), const BPF_LEN ideal-int pkg syscall (linux-amd64), const BPF_LSH ideal-int pkg syscall (linux-amd64), const BPF_MAJOR_VERSION ideal-int pkg syscall (linux-amd64), const BPF_MAXINSNS ideal-int pkg syscall (linux-amd64), const BPF_MEM ideal-int pkg syscall (linux-amd64), const BPF_MEMWORDS ideal-int pkg syscall (linux-amd64), const BPF_MINOR_VERSION ideal-int pkg syscall (linux-amd64), const BPF_MISC ideal-int pkg syscall (linux-amd64), const BPF_MSH ideal-int pkg syscall (linux-amd64), const BPF_MUL ideal-int pkg syscall (linux-amd64), const BPF_NEG ideal-int pkg syscall (linux-amd64), const BPF_OR ideal-int pkg syscall (linux-amd64), const BPF_RET ideal-int pkg syscall (linux-amd64), const BPF_RSH ideal-int pkg syscall (linux-amd64), const BPF_ST ideal-int pkg syscall (linux-amd64), const BPF_STX ideal-int pkg syscall (linux-amd64), const BPF_SUB ideal-int pkg syscall (linux-amd64), const BPF_TAX ideal-int pkg syscall (linux-amd64), const BPF_TXA ideal-int pkg syscall (linux-amd64), const BPF_W ideal-int pkg syscall (linux-amd64), const BPF_X ideal-int pkg syscall (linux-amd64), const BRKINT ideal-int pkg syscall (linux-amd64), const CLOCAL ideal-int pkg syscall (linux-amd64), const CREAD ideal-int pkg syscall (linux-amd64), const CS5 ideal-int pkg syscall (linux-amd64), const CS6 ideal-int pkg syscall (linux-amd64), const CS7 ideal-int pkg syscall (linux-amd64), const CS8 ideal-int pkg syscall (linux-amd64), const CSIZE ideal-int pkg syscall (linux-amd64), const CSTOPB ideal-int pkg syscall (linux-amd64), const DT_BLK ideal-int pkg syscall (linux-amd64), const DT_CHR ideal-int pkg syscall (linux-amd64), const DT_DIR ideal-int pkg syscall (linux-amd64), const DT_FIFO ideal-int pkg syscall (linux-amd64), const DT_LNK ideal-int pkg syscall (linux-amd64), const DT_REG ideal-int pkg syscall (linux-amd64), const DT_SOCK ideal-int pkg syscall (linux-amd64), const DT_UNKNOWN ideal-int pkg syscall (linux-amd64), const DT_WHT ideal-int pkg syscall (linux-amd64), const EADV Errno pkg syscall (linux-amd64), const EBADE Errno pkg syscall (linux-amd64), const EBADFD Errno pkg syscall (linux-amd64), const EBADMSG Errno pkg syscall (linux-amd64), const EBADR Errno pkg syscall (linux-amd64), const EBADRQC Errno pkg syscall (linux-amd64), const EBADSLT Errno pkg syscall (linux-amd64), const EBFONT Errno pkg syscall (linux-amd64), const ECHO ideal-int pkg syscall (linux-amd64), const ECHOCTL ideal-int pkg syscall (linux-amd64), const ECHOE ideal-int pkg syscall (linux-amd64), const ECHOK ideal-int pkg syscall (linux-amd64), const ECHOKE ideal-int pkg syscall (linux-amd64), const ECHONL ideal-int pkg syscall (linux-amd64), const ECHOPRT ideal-int pkg syscall (linux-amd64), const ECHRNG Errno pkg syscall (linux-amd64), const ECOMM Errno pkg syscall (linux-amd64), const EDEADLOCK Errno pkg syscall (linux-amd64), const EDOTDOT Errno pkg syscall (linux-amd64), const EISNAM Errno pkg syscall (linux-amd64), const EKEYEXPIRED Errno pkg syscall (linux-amd64), const EKEYREJECTED Errno pkg syscall (linux-amd64), const EKEYREVOKED Errno pkg syscall (linux-amd64), const EL2HLT Errno pkg syscall (linux-amd64), const EL2NSYNC Errno pkg syscall (linux-amd64), const EL3HLT Errno pkg syscall (linux-amd64), const EL3RST Errno pkg syscall (linux-amd64), const ELIBACC Errno pkg syscall (linux-amd64), const ELIBBAD Errno pkg syscall (linux-amd64), const ELIBEXEC Errno pkg syscall (linux-amd64), const ELIBMAX Errno pkg syscall (linux-amd64), const ELIBSCN Errno pkg syscall (linux-amd64), const ELNRNG Errno pkg syscall (linux-amd64), const EMEDIUMTYPE Errno pkg syscall (linux-amd64), const EMULTIHOP Errno pkg syscall (linux-amd64), const ENAVAIL Errno pkg syscall (linux-amd64), const ENOANO Errno pkg syscall (linux-amd64), const ENOCSI Errno pkg syscall (linux-amd64), const ENODATA Errno pkg syscall (linux-amd64), const ENOKEY Errno pkg syscall (linux-amd64), const ENOLINK Errno pkg syscall (linux-amd64), const ENOMEDIUM Errno pkg syscall (linux-amd64), const ENONET Errno pkg syscall (linux-amd64), const ENOPKG Errno pkg syscall (linux-amd64), const ENOSR Errno pkg syscall (linux-amd64), const ENOSTR Errno pkg syscall (linux-amd64), const ENOTNAM Errno pkg syscall (linux-amd64), const ENOTRECOVERABLE Errno pkg syscall (linux-amd64), const ENOTUNIQ Errno pkg syscall (linux-amd64), const EOWNERDEAD Errno pkg syscall (linux-amd64), const EPOLLERR ideal-int pkg syscall (linux-amd64), const EPOLLET ideal-int pkg syscall (linux-amd64), const EPOLLHUP ideal-int pkg syscall (linux-amd64), const EPOLLIN ideal-int pkg syscall (linux-amd64), const EPOLLMSG ideal-int pkg syscall (linux-amd64), const EPOLLONESHOT ideal-int pkg syscall (linux-amd64), const EPOLLOUT ideal-int pkg syscall (linux-amd64), const EPOLLPRI ideal-int pkg syscall (linux-amd64), const EPOLLRDBAND ideal-int pkg syscall (linux-amd64), const EPOLLRDHUP ideal-int pkg syscall (linux-amd64), const EPOLLRDNORM ideal-int pkg syscall (linux-amd64), const EPOLLWRBAND ideal-int pkg syscall (linux-amd64), const EPOLLWRNORM ideal-int pkg syscall (linux-amd64), const EPOLL_CLOEXEC ideal-int pkg syscall (linux-amd64), const EPOLL_CTL_ADD ideal-int pkg syscall (linux-amd64), const EPOLL_CTL_DEL ideal-int pkg syscall (linux-amd64), const EPOLL_CTL_MOD ideal-int pkg syscall (linux-amd64), const EPOLL_NONBLOCK ideal-int pkg syscall (linux-amd64), const EPROTO Errno pkg syscall (linux-amd64), const EREMCHG Errno pkg syscall (linux-amd64), const EREMOTEIO Errno pkg syscall (linux-amd64), const ERESTART Errno pkg syscall (linux-amd64), const ERFKILL Errno pkg syscall (linux-amd64), const ESRMNT Errno pkg syscall (linux-amd64), const ESTRPIPE Errno pkg syscall (linux-amd64), const ETH_P_1588 ideal-int pkg syscall (linux-amd64), const ETH_P_8021Q ideal-int pkg syscall (linux-amd64), const ETH_P_802_2 ideal-int pkg syscall (linux-amd64), const ETH_P_802_3 ideal-int pkg syscall (linux-amd64), const ETH_P_AARP ideal-int pkg syscall (linux-amd64), const ETH_P_ALL ideal-int pkg syscall (linux-amd64), const ETH_P_AOE ideal-int pkg syscall (linux-amd64), const ETH_P_ARCNET ideal-int pkg syscall (linux-amd64), const ETH_P_ARP ideal-int pkg syscall (linux-amd64), const ETH_P_ATALK ideal-int pkg syscall (linux-amd64), const ETH_P_ATMFATE ideal-int pkg syscall (linux-amd64), const ETH_P_ATMMPOA ideal-int pkg syscall (linux-amd64), const ETH_P_AX25 ideal-int pkg syscall (linux-amd64), const ETH_P_BPQ ideal-int pkg syscall (linux-amd64), const ETH_P_CAIF ideal-int pkg syscall (linux-amd64), const ETH_P_CAN ideal-int pkg syscall (linux-amd64), const ETH_P_CONTROL ideal-int pkg syscall (linux-amd64), const ETH_P_CUST ideal-int pkg syscall (linux-amd64), const ETH_P_DDCMP ideal-int pkg syscall (linux-amd64), const ETH_P_DEC ideal-int pkg syscall (linux-amd64), const ETH_P_DIAG ideal-int pkg syscall (linux-amd64), const ETH_P_DNA_DL ideal-int pkg syscall (linux-amd64), const ETH_P_DNA_RC ideal-int pkg syscall (linux-amd64), const ETH_P_DNA_RT ideal-int pkg syscall (linux-amd64), const ETH_P_DSA ideal-int pkg syscall (linux-amd64), const ETH_P_ECONET ideal-int pkg syscall (linux-amd64), const ETH_P_EDSA ideal-int pkg syscall (linux-amd64), const ETH_P_FCOE ideal-int pkg syscall (linux-amd64), const ETH_P_FIP ideal-int pkg syscall (linux-amd64), const ETH_P_HDLC ideal-int pkg syscall (linux-amd64), const ETH_P_IEEE802154 ideal-int pkg syscall (linux-amd64), const ETH_P_IEEEPUP ideal-int pkg syscall (linux-amd64), const ETH_P_IEEEPUPAT ideal-int pkg syscall (linux-amd64), const ETH_P_IP ideal-int pkg syscall (linux-amd64), const ETH_P_IPV6 ideal-int pkg syscall (linux-amd64), const ETH_P_IPX ideal-int pkg syscall (linux-amd64), const ETH_P_IRDA ideal-int pkg syscall (linux-amd64), const ETH_P_LAT ideal-int pkg syscall (linux-amd64), const ETH_P_LINK_CTL ideal-int pkg syscall (linux-amd64), const ETH_P_LOCALTALK ideal-int pkg syscall (linux-amd64), const ETH_P_LOOP ideal-int pkg syscall (linux-amd64), const ETH_P_MOBITEX ideal-int pkg syscall (linux-amd64), const ETH_P_MPLS_MC ideal-int pkg syscall (linux-amd64), const ETH_P_MPLS_UC ideal-int pkg syscall (linux-amd64), const ETH_P_PAE ideal-int pkg syscall (linux-amd64), const ETH_P_PAUSE ideal-int pkg syscall (linux-amd64), const ETH_P_PHONET ideal-int pkg syscall (linux-amd64), const ETH_P_PPPTALK ideal-int pkg syscall (linux-amd64), const ETH_P_PPP_DISC ideal-int pkg syscall (linux-amd64), const ETH_P_PPP_MP ideal-int pkg syscall (linux-amd64), const ETH_P_PPP_SES ideal-int pkg syscall (linux-amd64), const ETH_P_PUP ideal-int pkg syscall (linux-amd64), const ETH_P_PUPAT ideal-int pkg syscall (linux-amd64), const ETH_P_RARP ideal-int pkg syscall (linux-amd64), const ETH_P_SCA ideal-int pkg syscall (linux-amd64), const ETH_P_SLOW ideal-int pkg syscall (linux-amd64), const ETH_P_SNAP ideal-int pkg syscall (linux-amd64), const ETH_P_TEB ideal-int pkg syscall (linux-amd64), const ETH_P_TIPC ideal-int pkg syscall (linux-amd64), const ETH_P_TRAILER ideal-int pkg syscall (linux-amd64), const ETH_P_TR_802_2 ideal-int pkg syscall (linux-amd64), const ETH_P_WAN_PPP ideal-int pkg syscall (linux-amd64), const ETH_P_WCCP ideal-int pkg syscall (linux-amd64), const ETH_P_X25 ideal-int pkg syscall (linux-amd64), const ETIME Errno pkg syscall (linux-amd64), const EUCLEAN Errno pkg syscall (linux-amd64), const EUNATCH Errno pkg syscall (linux-amd64), const EXFULL Errno pkg syscall (linux-amd64), const FD_CLOEXEC ideal-int pkg syscall (linux-amd64), const FD_SETSIZE ideal-int pkg syscall (linux-amd64), const FLUSHO ideal-int pkg syscall (linux-amd64), const F_DUPFD ideal-int pkg syscall (linux-amd64), const F_DUPFD_CLOEXEC ideal-int pkg syscall (linux-amd64), const F_EXLCK ideal-int pkg syscall (linux-amd64), const F_GETFD ideal-int pkg syscall (linux-amd64), const F_GETFL ideal-int pkg syscall (linux-amd64), const F_GETLEASE ideal-int pkg syscall (linux-amd64), const F_GETLK ideal-int pkg syscall (linux-amd64), const F_GETLK64 ideal-int pkg syscall (linux-amd64), const F_GETOWN ideal-int pkg syscall (linux-amd64), const F_GETOWN_EX ideal-int pkg syscall (linux-amd64), const F_GETPIPE_SZ ideal-int pkg syscall (linux-amd64), const F_GETSIG ideal-int pkg syscall (linux-amd64), const F_LOCK ideal-int pkg syscall (linux-amd64), const F_NOTIFY ideal-int pkg syscall (linux-amd64), const F_OK ideal-int pkg syscall (linux-amd64), const F_RDLCK ideal-int pkg syscall (linux-amd64), const F_SETFD ideal-int pkg syscall (linux-amd64), const F_SETFL ideal-int pkg syscall (linux-amd64), const F_SETLEASE ideal-int pkg syscall (linux-amd64), const F_SETLK ideal-int pkg syscall (linux-amd64), const F_SETLK64 ideal-int pkg syscall (linux-amd64), const F_SETLKW ideal-int pkg syscall (linux-amd64), const F_SETLKW64 ideal-int pkg syscall (linux-amd64), const F_SETOWN ideal-int pkg syscall (linux-amd64), const F_SETOWN_EX ideal-int pkg syscall (linux-amd64), const F_SETPIPE_SZ ideal-int pkg syscall (linux-amd64), const F_SETSIG ideal-int pkg syscall (linux-amd64), const F_SHLCK ideal-int pkg syscall (linux-amd64), const F_TEST ideal-int pkg syscall (linux-amd64), const F_TLOCK ideal-int pkg syscall (linux-amd64), const F_ULOCK ideal-int pkg syscall (linux-amd64), const F_UNLCK ideal-int pkg syscall (linux-amd64), const F_WRLCK ideal-int pkg syscall (linux-amd64), const HUPCL ideal-int pkg syscall (linux-amd64), const ICANON ideal-int pkg syscall (linux-amd64), const ICRNL ideal-int pkg syscall (linux-amd64), const IEXTEN ideal-int pkg syscall (linux-amd64), const IFA_ADDRESS ideal-int pkg syscall (linux-amd64), const IFA_ANYCAST ideal-int pkg syscall (linux-amd64), const IFA_BROADCAST ideal-int pkg syscall (linux-amd64), const IFA_CACHEINFO ideal-int pkg syscall (linux-amd64), const IFA_F_DADFAILED ideal-int pkg syscall (linux-amd64), const IFA_F_DEPRECATED ideal-int pkg syscall (linux-amd64), const IFA_F_HOMEADDRESS ideal-int pkg syscall (linux-amd64), const IFA_F_NODAD ideal-int pkg syscall (linux-amd64), const IFA_F_OPTIMISTIC ideal-int pkg syscall (linux-amd64), const IFA_F_PERMANENT ideal-int pkg syscall (linux-amd64), const IFA_F_SECONDARY ideal-int pkg syscall (linux-amd64), const IFA_F_TEMPORARY ideal-int pkg syscall (linux-amd64), const IFA_F_TENTATIVE ideal-int pkg syscall (linux-amd64), const IFA_LABEL ideal-int pkg syscall (linux-amd64), const IFA_LOCAL ideal-int pkg syscall (linux-amd64), const IFA_MAX ideal-int pkg syscall (linux-amd64), const IFA_MULTICAST ideal-int pkg syscall (linux-amd64), const IFA_UNSPEC ideal-int pkg syscall (linux-amd64), const IFF_ALLMULTI ideal-int pkg syscall (linux-amd64), const IFF_AUTOMEDIA ideal-int pkg syscall (linux-amd64), const IFF_DEBUG ideal-int pkg syscall (linux-amd64), const IFF_DYNAMIC ideal-int pkg syscall (linux-amd64), const IFF_MASTER ideal-int pkg syscall (linux-amd64), const IFF_NOARP ideal-int pkg syscall (linux-amd64), const IFF_NOTRAILERS ideal-int pkg syscall (linux-amd64), const IFF_NO_PI ideal-int pkg syscall (linux-amd64), const IFF_ONE_QUEUE ideal-int pkg syscall (linux-amd64), const IFF_POINTOPOINT ideal-int pkg syscall (linux-amd64), const IFF_PORTSEL ideal-int pkg syscall (linux-amd64), const IFF_PROMISC ideal-int pkg syscall (linux-amd64), const IFF_RUNNING ideal-int pkg syscall (linux-amd64), const IFF_SLAVE ideal-int pkg syscall (linux-amd64), const IFF_TAP ideal-int pkg syscall (linux-amd64), const IFF_TUN ideal-int pkg syscall (linux-amd64), const IFF_TUN_EXCL ideal-int pkg syscall (linux-amd64), const IFF_VNET_HDR ideal-int pkg syscall (linux-amd64), const IFLA_ADDRESS ideal-int pkg syscall (linux-amd64), const IFLA_BROADCAST ideal-int pkg syscall (linux-amd64), const IFLA_COST ideal-int pkg syscall (linux-amd64), const IFLA_IFALIAS ideal-int pkg syscall (linux-amd64), const IFLA_IFNAME ideal-int pkg syscall (linux-amd64), const IFLA_LINK ideal-int pkg syscall (linux-amd64), const IFLA_LINKINFO ideal-int pkg syscall (linux-amd64), const IFLA_LINKMODE ideal-int pkg syscall (linux-amd64), const IFLA_MAP ideal-int pkg syscall (linux-amd64), const IFLA_MASTER ideal-int pkg syscall (linux-amd64), const IFLA_MAX ideal-int pkg syscall (linux-amd64), const IFLA_MTU ideal-int pkg syscall (linux-amd64), const IFLA_NET_NS_PID ideal-int pkg syscall (linux-amd64), const IFLA_OPERSTATE ideal-int pkg syscall (linux-amd64), const IFLA_PRIORITY ideal-int pkg syscall (linux-amd64), const IFLA_PROTINFO ideal-int pkg syscall (linux-amd64), const IFLA_QDISC ideal-int pkg syscall (linux-amd64), const IFLA_STATS ideal-int pkg syscall (linux-amd64), const IFLA_TXQLEN ideal-int pkg syscall (linux-amd64), const IFLA_UNSPEC ideal-int pkg syscall (linux-amd64), const IFLA_WEIGHT ideal-int pkg syscall (linux-amd64), const IFLA_WIRELESS ideal-int pkg syscall (linux-amd64), const IFNAMSIZ ideal-int pkg syscall (linux-amd64), const IGNBRK ideal-int pkg syscall (linux-amd64), const IGNCR ideal-int pkg syscall (linux-amd64), const IGNPAR ideal-int pkg syscall (linux-amd64), const IMAXBEL ideal-int pkg syscall (linux-amd64), const INLCR ideal-int pkg syscall (linux-amd64), const INPCK ideal-int pkg syscall (linux-amd64), const IN_ACCESS ideal-int pkg syscall (linux-amd64), const IN_ALL_EVENTS ideal-int pkg syscall (linux-amd64), const IN_ATTRIB ideal-int pkg syscall (linux-amd64), const IN_CLASSA_HOST ideal-int pkg syscall (linux-amd64), const IN_CLASSA_MAX ideal-int pkg syscall (linux-amd64), const IN_CLASSA_NET ideal-int pkg syscall (linux-amd64), const IN_CLASSA_NSHIFT ideal-int pkg syscall (linux-amd64), const IN_CLASSB_HOST ideal-int pkg syscall (linux-amd64), const IN_CLASSB_MAX ideal-int pkg syscall (linux-amd64), const IN_CLASSB_NET ideal-int pkg syscall (linux-amd64), const IN_CLASSB_NSHIFT ideal-int pkg syscall (linux-amd64), const IN_CLASSC_HOST ideal-int pkg syscall (linux-amd64), const IN_CLASSC_NET ideal-int pkg syscall (linux-amd64), const IN_CLASSC_NSHIFT ideal-int pkg syscall (linux-amd64), const IN_CLOEXEC ideal-int pkg syscall (linux-amd64), const IN_CLOSE ideal-int pkg syscall (linux-amd64), const IN_CLOSE_NOWRITE ideal-int pkg syscall (linux-amd64), const IN_CLOSE_WRITE ideal-int pkg syscall (linux-amd64), const IN_CREATE ideal-int pkg syscall (linux-amd64), const IN_DELETE ideal-int pkg syscall (linux-amd64), const IN_DELETE_SELF ideal-int pkg syscall (linux-amd64), const IN_DONT_FOLLOW ideal-int pkg syscall (linux-amd64), const IN_EXCL_UNLINK ideal-int pkg syscall (linux-amd64), const IN_IGNORED ideal-int pkg syscall (linux-amd64), const IN_ISDIR ideal-int pkg syscall (linux-amd64), const IN_LOOPBACKNET ideal-int pkg syscall (linux-amd64), const IN_MASK_ADD ideal-int pkg syscall (linux-amd64), const IN_MODIFY ideal-int pkg syscall (linux-amd64), const IN_MOVE ideal-int pkg syscall (linux-amd64), const IN_MOVED_FROM ideal-int pkg syscall (linux-amd64), const IN_MOVED_TO ideal-int pkg syscall (linux-amd64), const IN_MOVE_SELF ideal-int pkg syscall (linux-amd64), const IN_NONBLOCK ideal-int pkg syscall (linux-amd64), const IN_ONESHOT ideal-int pkg syscall (linux-amd64), const IN_ONLYDIR ideal-int pkg syscall (linux-amd64), const IN_OPEN ideal-int pkg syscall (linux-amd64), const IN_Q_OVERFLOW ideal-int pkg syscall (linux-amd64), const IN_UNMOUNT ideal-int pkg syscall (linux-amd64), const IPPROTO_AH ideal-int pkg syscall (linux-amd64), const IPPROTO_COMP ideal-int pkg syscall (linux-amd64), const IPPROTO_DCCP ideal-int pkg syscall (linux-amd64), const IPPROTO_DSTOPTS ideal-int pkg syscall (linux-amd64), const IPPROTO_EGP ideal-int pkg syscall (linux-amd64), const IPPROTO_ENCAP ideal-int pkg syscall (linux-amd64), const IPPROTO_ESP ideal-int pkg syscall (linux-amd64), const IPPROTO_FRAGMENT ideal-int pkg syscall (linux-amd64), const IPPROTO_GRE ideal-int pkg syscall (linux-amd64), const IPPROTO_HOPOPTS ideal-int pkg syscall (linux-amd64), const IPPROTO_ICMP ideal-int pkg syscall (linux-amd64), const IPPROTO_ICMPV6 ideal-int pkg syscall (linux-amd64), const IPPROTO_IDP ideal-int pkg syscall (linux-amd64), const IPPROTO_IGMP ideal-int pkg syscall (linux-amd64), const IPPROTO_IPIP ideal-int pkg syscall (linux-amd64), const IPPROTO_MTP ideal-int pkg syscall (linux-amd64), const IPPROTO_NONE ideal-int pkg syscall (linux-amd64), const IPPROTO_PIM ideal-int pkg syscall (linux-amd64), const IPPROTO_PUP ideal-int pkg syscall (linux-amd64), const IPPROTO_RAW ideal-int pkg syscall (linux-amd64), const IPPROTO_ROUTING ideal-int pkg syscall (linux-amd64), const IPPROTO_RSVP ideal-int pkg syscall (linux-amd64), const IPPROTO_SCTP ideal-int pkg syscall (linux-amd64), const IPPROTO_TP ideal-int pkg syscall (linux-amd64), const IPPROTO_UDPLITE ideal-int pkg syscall (linux-amd64), const IPV6_2292DSTOPTS ideal-int pkg syscall (linux-amd64), const IPV6_2292HOPLIMIT ideal-int pkg syscall (linux-amd64), const IPV6_2292HOPOPTS ideal-int pkg syscall (linux-amd64), const IPV6_2292PKTINFO ideal-int pkg syscall (linux-amd64), const IPV6_2292PKTOPTIONS ideal-int pkg syscall (linux-amd64), const IPV6_2292RTHDR ideal-int pkg syscall (linux-amd64), const IPV6_ADDRFORM ideal-int pkg syscall (linux-amd64), const IPV6_ADD_MEMBERSHIP ideal-int pkg syscall (linux-amd64), const IPV6_AUTHHDR ideal-int pkg syscall (linux-amd64), const IPV6_CHECKSUM ideal-int pkg syscall (linux-amd64), const IPV6_DROP_MEMBERSHIP ideal-int pkg syscall (linux-amd64), const IPV6_DSTOPTS ideal-int pkg syscall (linux-amd64), const IPV6_HOPLIMIT ideal-int pkg syscall (linux-amd64), const IPV6_HOPOPTS ideal-int pkg syscall (linux-amd64), const IPV6_IPSEC_POLICY ideal-int pkg syscall (linux-amd64), const IPV6_JOIN_ANYCAST ideal-int pkg syscall (linux-amd64), const IPV6_LEAVE_ANYCAST ideal-int pkg syscall (linux-amd64), const IPV6_MTU ideal-int pkg syscall (linux-amd64), const IPV6_MTU_DISCOVER ideal-int pkg syscall (linux-amd64), const IPV6_NEXTHOP ideal-int pkg syscall (linux-amd64), const IPV6_PKTINFO ideal-int pkg syscall (linux-amd64), const IPV6_PMTUDISC_DO ideal-int pkg syscall (linux-amd64), const IPV6_PMTUDISC_DONT ideal-int pkg syscall (linux-amd64), const IPV6_PMTUDISC_PROBE ideal-int pkg syscall (linux-amd64), const IPV6_PMTUDISC_WANT ideal-int pkg syscall (linux-amd64), const IPV6_RECVDSTOPTS ideal-int pkg syscall (linux-amd64), const IPV6_RECVERR ideal-int pkg syscall (linux-amd64), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (linux-amd64), const IPV6_RECVHOPOPTS ideal-int pkg syscall (linux-amd64), const IPV6_RECVPKTINFO ideal-int pkg syscall (linux-amd64), const IPV6_RECVRTHDR ideal-int pkg syscall (linux-amd64), const IPV6_RECVTCLASS ideal-int pkg syscall (linux-amd64), const IPV6_ROUTER_ALERT ideal-int pkg syscall (linux-amd64), const IPV6_RTHDR ideal-int pkg syscall (linux-amd64), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (linux-amd64), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (linux-amd64), const IPV6_RTHDR_STRICT ideal-int pkg syscall (linux-amd64), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (linux-amd64), const IPV6_RXDSTOPTS ideal-int pkg syscall (linux-amd64), const IPV6_RXHOPOPTS ideal-int pkg syscall (linux-amd64), const IPV6_TCLASS ideal-int pkg syscall (linux-amd64), const IPV6_XFRM_POLICY ideal-int pkg syscall (linux-amd64), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (linux-amd64), const IP_BLOCK_SOURCE ideal-int pkg syscall (linux-amd64), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (linux-amd64), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (linux-amd64), const IP_DF ideal-int pkg syscall (linux-amd64), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (linux-amd64), const IP_FREEBIND ideal-int pkg syscall (linux-amd64), const IP_HDRINCL ideal-int pkg syscall (linux-amd64), const IP_IPSEC_POLICY ideal-int pkg syscall (linux-amd64), const IP_MAXPACKET ideal-int pkg syscall (linux-amd64), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (linux-amd64), const IP_MF ideal-int pkg syscall (linux-amd64), const IP_MINTTL ideal-int pkg syscall (linux-amd64), const IP_MSFILTER ideal-int pkg syscall (linux-amd64), const IP_MSS ideal-int pkg syscall (linux-amd64), const IP_MTU ideal-int pkg syscall (linux-amd64), const IP_MTU_DISCOVER ideal-int pkg syscall (linux-amd64), const IP_OFFMASK ideal-int pkg syscall (linux-amd64), const IP_OPTIONS ideal-int pkg syscall (linux-amd64), const IP_ORIGDSTADDR ideal-int pkg syscall (linux-amd64), const IP_PASSSEC ideal-int pkg syscall (linux-amd64), const IP_PKTINFO ideal-int pkg syscall (linux-amd64), const IP_PKTOPTIONS ideal-int pkg syscall (linux-amd64), const IP_PMTUDISC ideal-int pkg syscall (linux-amd64), const IP_PMTUDISC_DO ideal-int pkg syscall (linux-amd64), const IP_PMTUDISC_DONT ideal-int pkg syscall (linux-amd64), const IP_PMTUDISC_PROBE ideal-int pkg syscall (linux-amd64), const IP_PMTUDISC_WANT ideal-int pkg syscall (linux-amd64), const IP_RECVERR ideal-int pkg syscall (linux-amd64), const IP_RECVOPTS ideal-int pkg syscall (linux-amd64), const IP_RECVORIGDSTADDR ideal-int pkg syscall (linux-amd64), const IP_RECVRETOPTS ideal-int pkg syscall (linux-amd64), const IP_RECVTOS ideal-int pkg syscall (linux-amd64), const IP_RECVTTL ideal-int pkg syscall (linux-amd64), const IP_RETOPTS ideal-int pkg syscall (linux-amd64), const IP_RF ideal-int pkg syscall (linux-amd64), const IP_ROUTER_ALERT ideal-int pkg syscall (linux-amd64), const IP_TRANSPARENT ideal-int pkg syscall (linux-amd64), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (linux-amd64), const IP_XFRM_POLICY ideal-int pkg syscall (linux-amd64), const ISIG ideal-int pkg syscall (linux-amd64), const ISTRIP ideal-int pkg syscall (linux-amd64), const IUCLC ideal-int pkg syscall (linux-amd64), const IUTF8 ideal-int pkg syscall (linux-amd64), const IXANY ideal-int pkg syscall (linux-amd64), const IXOFF ideal-int pkg syscall (linux-amd64), const IXON ideal-int pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_CAD_OFF ideal-int pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_CAD_ON ideal-int pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_HALT ideal-int pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_KEXEC ideal-int pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_POWER_OFF ideal-int pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_RESTART ideal-int pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_RESTART2 ideal-int pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_SW_SUSPEND ideal-int pkg syscall (linux-amd64), const LINUX_REBOOT_MAGIC1 ideal-int pkg syscall (linux-amd64), const LINUX_REBOOT_MAGIC2 ideal-int pkg syscall (linux-amd64), const LOCK_EX ideal-int pkg syscall (linux-amd64), const LOCK_NB ideal-int pkg syscall (linux-amd64), const LOCK_SH ideal-int pkg syscall (linux-amd64), const LOCK_UN ideal-int pkg syscall (linux-amd64), const MADV_DOFORK ideal-int pkg syscall (linux-amd64), const MADV_DONTFORK ideal-int pkg syscall (linux-amd64), const MADV_DONTNEED ideal-int pkg syscall (linux-amd64), const MADV_HUGEPAGE ideal-int pkg syscall (linux-amd64), const MADV_HWPOISON ideal-int pkg syscall (linux-amd64), const MADV_MERGEABLE ideal-int pkg syscall (linux-amd64), const MADV_NOHUGEPAGE ideal-int pkg syscall (linux-amd64), const MADV_NORMAL ideal-int pkg syscall (linux-amd64), const MADV_RANDOM ideal-int pkg syscall (linux-amd64), const MADV_REMOVE ideal-int pkg syscall (linux-amd64), const MADV_SEQUENTIAL ideal-int pkg syscall (linux-amd64), const MADV_UNMERGEABLE ideal-int pkg syscall (linux-amd64), const MADV_WILLNEED ideal-int pkg syscall (linux-amd64), const MAP_32BIT ideal-int pkg syscall (linux-amd64), const MAP_ANON ideal-int pkg syscall (linux-amd64), const MAP_ANONYMOUS ideal-int pkg syscall (linux-amd64), const MAP_DENYWRITE ideal-int pkg syscall (linux-amd64), const MAP_EXECUTABLE ideal-int pkg syscall (linux-amd64), const MAP_FILE ideal-int pkg syscall (linux-amd64), const MAP_FIXED ideal-int pkg syscall (linux-amd64), const MAP_GROWSDOWN ideal-int pkg syscall (linux-amd64), const MAP_HUGETLB ideal-int pkg syscall (linux-amd64), const MAP_LOCKED ideal-int pkg syscall (linux-amd64), const MAP_NONBLOCK ideal-int pkg syscall (linux-amd64), const MAP_NORESERVE ideal-int pkg syscall (linux-amd64), const MAP_POPULATE ideal-int pkg syscall (linux-amd64), const MAP_PRIVATE ideal-int pkg syscall (linux-amd64), const MAP_SHARED ideal-int pkg syscall (linux-amd64), const MAP_STACK ideal-int pkg syscall (linux-amd64), const MAP_TYPE ideal-int pkg syscall (linux-amd64), const MCL_CURRENT ideal-int pkg syscall (linux-amd64), const MCL_FUTURE ideal-int pkg syscall (linux-amd64), const MNT_DETACH ideal-int pkg syscall (linux-amd64), const MNT_EXPIRE ideal-int pkg syscall (linux-amd64), const MNT_FORCE ideal-int pkg syscall (linux-amd64), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (linux-amd64), const MSG_CONFIRM ideal-int pkg syscall (linux-amd64), const MSG_CTRUNC ideal-int pkg syscall (linux-amd64), const MSG_DONTROUTE ideal-int pkg syscall (linux-amd64), const MSG_DONTWAIT ideal-int pkg syscall (linux-amd64), const MSG_EOR ideal-int pkg syscall (linux-amd64), const MSG_ERRQUEUE ideal-int pkg syscall (linux-amd64), const MSG_FIN ideal-int pkg syscall (linux-amd64), const MSG_MORE ideal-int pkg syscall (linux-amd64), const MSG_NOSIGNAL ideal-int pkg syscall (linux-amd64), const MSG_OOB ideal-int pkg syscall (linux-amd64), const MSG_PEEK ideal-int pkg syscall (linux-amd64), const MSG_PROXY ideal-int pkg syscall (linux-amd64), const MSG_RST ideal-int pkg syscall (linux-amd64), const MSG_SYN ideal-int pkg syscall (linux-amd64), const MSG_TRUNC ideal-int pkg syscall (linux-amd64), const MSG_TRYHARD ideal-int pkg syscall (linux-amd64), const MSG_WAITALL ideal-int pkg syscall (linux-amd64), const MSG_WAITFORONE ideal-int pkg syscall (linux-amd64), const MS_ACTIVE ideal-int pkg syscall (linux-amd64), const MS_ASYNC ideal-int pkg syscall (linux-amd64), const MS_BIND ideal-int pkg syscall (linux-amd64), const MS_DIRSYNC ideal-int pkg syscall (linux-amd64), const MS_INVALIDATE ideal-int pkg syscall (linux-amd64), const MS_I_VERSION ideal-int pkg syscall (linux-amd64), const MS_KERNMOUNT ideal-int pkg syscall (linux-amd64), const MS_MANDLOCK ideal-int pkg syscall (linux-amd64), const MS_MGC_MSK ideal-int pkg syscall (linux-amd64), const MS_MGC_VAL ideal-int pkg syscall (linux-amd64), const MS_MOVE ideal-int pkg syscall (linux-amd64), const MS_NOATIME ideal-int pkg syscall (linux-amd64), const MS_NODEV ideal-int pkg syscall (linux-amd64), const MS_NODIRATIME ideal-int pkg syscall (linux-amd64), const MS_NOEXEC ideal-int pkg syscall (linux-amd64), const MS_NOSUID ideal-int pkg syscall (linux-amd64), const MS_NOUSER ideal-int pkg syscall (linux-amd64), const MS_POSIXACL ideal-int pkg syscall (linux-amd64), const MS_PRIVATE ideal-int pkg syscall (linux-amd64), const MS_RDONLY ideal-int pkg syscall (linux-amd64), const MS_REC ideal-int pkg syscall (linux-amd64), const MS_RELATIME ideal-int pkg syscall (linux-amd64), const MS_REMOUNT ideal-int pkg syscall (linux-amd64), const MS_RMT_MASK ideal-int pkg syscall (linux-amd64), const MS_SHARED ideal-int pkg syscall (linux-amd64), const MS_SILENT ideal-int pkg syscall (linux-amd64), const MS_SLAVE ideal-int pkg syscall (linux-amd64), const MS_STRICTATIME ideal-int pkg syscall (linux-amd64), const MS_SYNC ideal-int pkg syscall (linux-amd64), const MS_SYNCHRONOUS ideal-int pkg syscall (linux-amd64), const MS_UNBINDABLE ideal-int pkg syscall (linux-amd64), const NAME_MAX ideal-int pkg syscall (linux-amd64), const NETLINK_ADD_MEMBERSHIP ideal-int pkg syscall (linux-amd64), const NETLINK_AUDIT ideal-int pkg syscall (linux-amd64), const NETLINK_BROADCAST_ERROR ideal-int pkg syscall (linux-amd64), const NETLINK_CONNECTOR ideal-int pkg syscall (linux-amd64), const NETLINK_DNRTMSG ideal-int pkg syscall (linux-amd64), const NETLINK_DROP_MEMBERSHIP ideal-int pkg syscall (linux-amd64), const NETLINK_ECRYPTFS ideal-int pkg syscall (linux-amd64), const NETLINK_FIB_LOOKUP ideal-int pkg syscall (linux-amd64), const NETLINK_FIREWALL ideal-int pkg syscall (linux-amd64), const NETLINK_GENERIC ideal-int pkg syscall (linux-amd64), const NETLINK_INET_DIAG ideal-int pkg syscall (linux-amd64), const NETLINK_IP6_FW ideal-int pkg syscall (linux-amd64), const NETLINK_ISCSI ideal-int pkg syscall (linux-amd64), const NETLINK_KOBJECT_UEVENT ideal-int pkg syscall (linux-amd64), const NETLINK_NETFILTER ideal-int pkg syscall (linux-amd64), const NETLINK_NFLOG ideal-int pkg syscall (linux-amd64), const NETLINK_NO_ENOBUFS ideal-int pkg syscall (linux-amd64), const NETLINK_PKTINFO ideal-int pkg syscall (linux-amd64), const NETLINK_ROUTE ideal-int pkg syscall (linux-amd64), const NETLINK_SCSITRANSPORT ideal-int pkg syscall (linux-amd64), const NETLINK_SELINUX ideal-int pkg syscall (linux-amd64), const NETLINK_UNUSED ideal-int pkg syscall (linux-amd64), const NETLINK_USERSOCK ideal-int pkg syscall (linux-amd64), const NETLINK_XFRM ideal-int pkg syscall (linux-amd64), const NLA_ALIGNTO ideal-int pkg syscall (linux-amd64), const NLA_F_NESTED ideal-int pkg syscall (linux-amd64), const NLA_F_NET_BYTEORDER ideal-int pkg syscall (linux-amd64), const NLA_HDRLEN ideal-int pkg syscall (linux-amd64), const NLMSG_ALIGNTO ideal-int pkg syscall (linux-amd64), const NLMSG_DONE ideal-int pkg syscall (linux-amd64), const NLMSG_ERROR ideal-int pkg syscall (linux-amd64), const NLMSG_HDRLEN ideal-int pkg syscall (linux-amd64), const NLMSG_MIN_TYPE ideal-int pkg syscall (linux-amd64), const NLMSG_NOOP ideal-int pkg syscall (linux-amd64), const NLMSG_OVERRUN ideal-int pkg syscall (linux-amd64), const NLM_F_ACK ideal-int pkg syscall (linux-amd64), const NLM_F_APPEND ideal-int pkg syscall (linux-amd64), const NLM_F_ATOMIC ideal-int pkg syscall (linux-amd64), const NLM_F_CREATE ideal-int pkg syscall (linux-amd64), const NLM_F_DUMP ideal-int pkg syscall (linux-amd64), const NLM_F_ECHO ideal-int pkg syscall (linux-amd64), const NLM_F_EXCL ideal-int pkg syscall (linux-amd64), const NLM_F_MATCH ideal-int pkg syscall (linux-amd64), const NLM_F_MULTI ideal-int pkg syscall (linux-amd64), const NLM_F_REPLACE ideal-int pkg syscall (linux-amd64), const NLM_F_REQUEST ideal-int pkg syscall (linux-amd64), const NLM_F_ROOT ideal-int pkg syscall (linux-amd64), const NOFLSH ideal-int pkg syscall (linux-amd64), const OCRNL ideal-int pkg syscall (linux-amd64), const OFDEL ideal-int pkg syscall (linux-amd64), const OFILL ideal-int pkg syscall (linux-amd64), const OLCUC ideal-int pkg syscall (linux-amd64), const ONLCR ideal-int pkg syscall (linux-amd64), const ONLRET ideal-int pkg syscall (linux-amd64), const ONOCR ideal-int pkg syscall (linux-amd64), const OPOST ideal-int pkg syscall (linux-amd64), const O_ACCMODE ideal-int pkg syscall (linux-amd64), const O_DIRECT ideal-int pkg syscall (linux-amd64), const O_DIRECTORY ideal-int pkg syscall (linux-amd64), const O_DSYNC ideal-int pkg syscall (linux-amd64), const O_FSYNC ideal-int pkg syscall (linux-amd64), const O_LARGEFILE ideal-int pkg syscall (linux-amd64), const O_NDELAY ideal-int pkg syscall (linux-amd64), const O_NOATIME ideal-int pkg syscall (linux-amd64), const O_NOFOLLOW ideal-int pkg syscall (linux-amd64), const O_RSYNC ideal-int pkg syscall (linux-amd64), const PACKET_ADD_MEMBERSHIP ideal-int pkg syscall (linux-amd64), const PACKET_BROADCAST ideal-int pkg syscall (linux-amd64), const PACKET_DROP_MEMBERSHIP ideal-int pkg syscall (linux-amd64), const PACKET_FASTROUTE ideal-int pkg syscall (linux-amd64), const PACKET_HOST ideal-int pkg syscall (linux-amd64), const PACKET_LOOPBACK ideal-int pkg syscall (linux-amd64), const PACKET_MR_ALLMULTI ideal-int pkg syscall (linux-amd64), const PACKET_MR_MULTICAST ideal-int pkg syscall (linux-amd64), const PACKET_MR_PROMISC ideal-int pkg syscall (linux-amd64), const PACKET_MULTICAST ideal-int pkg syscall (linux-amd64), const PACKET_OTHERHOST ideal-int pkg syscall (linux-amd64), const PACKET_OUTGOING ideal-int pkg syscall (linux-amd64), const PACKET_RECV_OUTPUT ideal-int pkg syscall (linux-amd64), const PACKET_RX_RING ideal-int pkg syscall (linux-amd64), const PACKET_STATISTICS ideal-int pkg syscall (linux-amd64), const PARENB ideal-int pkg syscall (linux-amd64), const PARMRK ideal-int pkg syscall (linux-amd64), const PARODD ideal-int pkg syscall (linux-amd64), const PENDIN ideal-int pkg syscall (linux-amd64), const PROT_EXEC ideal-int pkg syscall (linux-amd64), const PROT_GROWSDOWN ideal-int pkg syscall (linux-amd64), const PROT_GROWSUP ideal-int pkg syscall (linux-amd64), const PROT_NONE ideal-int pkg syscall (linux-amd64), const PROT_READ ideal-int pkg syscall (linux-amd64), const PROT_WRITE ideal-int pkg syscall (linux-amd64), const PR_CAPBSET_DROP ideal-int pkg syscall (linux-amd64), const PR_CAPBSET_READ ideal-int pkg syscall (linux-amd64), const PR_ENDIAN_BIG ideal-int pkg syscall (linux-amd64), const PR_ENDIAN_LITTLE ideal-int pkg syscall (linux-amd64), const PR_ENDIAN_PPC_LITTLE ideal-int pkg syscall (linux-amd64), const PR_FPEMU_NOPRINT ideal-int pkg syscall (linux-amd64), const PR_FPEMU_SIGFPE ideal-int pkg syscall (linux-amd64), const PR_FP_EXC_ASYNC ideal-int pkg syscall (linux-amd64), const PR_FP_EXC_DISABLED ideal-int pkg syscall (linux-amd64), const PR_FP_EXC_DIV ideal-int pkg syscall (linux-amd64), const PR_FP_EXC_INV ideal-int pkg syscall (linux-amd64), const PR_FP_EXC_NONRECOV ideal-int pkg syscall (linux-amd64), const PR_FP_EXC_OVF ideal-int pkg syscall (linux-amd64), const PR_FP_EXC_PRECISE ideal-int pkg syscall (linux-amd64), const PR_FP_EXC_RES ideal-int pkg syscall (linux-amd64), const PR_FP_EXC_SW_ENABLE ideal-int pkg syscall (linux-amd64), const PR_FP_EXC_UND ideal-int pkg syscall (linux-amd64), const PR_GET_DUMPABLE ideal-int pkg syscall (linux-amd64), const PR_GET_ENDIAN ideal-int pkg syscall (linux-amd64), const PR_GET_FPEMU ideal-int pkg syscall (linux-amd64), const PR_GET_FPEXC ideal-int pkg syscall (linux-amd64), const PR_GET_KEEPCAPS ideal-int pkg syscall (linux-amd64), const PR_GET_NAME ideal-int pkg syscall (linux-amd64), const PR_GET_PDEATHSIG ideal-int pkg syscall (linux-amd64), const PR_GET_SECCOMP ideal-int pkg syscall (linux-amd64), const PR_GET_SECUREBITS ideal-int pkg syscall (linux-amd64), const PR_GET_TIMERSLACK ideal-int pkg syscall (linux-amd64), const PR_GET_TIMING ideal-int pkg syscall (linux-amd64), const PR_GET_TSC ideal-int pkg syscall (linux-amd64), const PR_GET_UNALIGN ideal-int pkg syscall (linux-amd64), const PR_MCE_KILL ideal-int pkg syscall (linux-amd64), const PR_MCE_KILL_CLEAR ideal-int pkg syscall (linux-amd64), const PR_MCE_KILL_DEFAULT ideal-int pkg syscall (linux-amd64), const PR_MCE_KILL_EARLY ideal-int pkg syscall (linux-amd64), const PR_MCE_KILL_GET ideal-int pkg syscall (linux-amd64), const PR_MCE_KILL_LATE ideal-int pkg syscall (linux-amd64), const PR_MCE_KILL_SET ideal-int pkg syscall (linux-amd64), const PR_SET_DUMPABLE ideal-int pkg syscall (linux-amd64), const PR_SET_ENDIAN ideal-int pkg syscall (linux-amd64), const PR_SET_FPEMU ideal-int pkg syscall (linux-amd64), const PR_SET_FPEXC ideal-int pkg syscall (linux-amd64), const PR_SET_KEEPCAPS ideal-int pkg syscall (linux-amd64), const PR_SET_NAME ideal-int pkg syscall (linux-amd64), const PR_SET_PDEATHSIG ideal-int pkg syscall (linux-amd64), const PR_SET_PTRACER ideal-int pkg syscall (linux-amd64), const PR_SET_SECCOMP ideal-int pkg syscall (linux-amd64), const PR_SET_SECUREBITS ideal-int pkg syscall (linux-amd64), const PR_SET_TIMERSLACK ideal-int pkg syscall (linux-amd64), const PR_SET_TIMING ideal-int pkg syscall (linux-amd64), const PR_SET_TSC ideal-int pkg syscall (linux-amd64), const PR_SET_UNALIGN ideal-int pkg syscall (linux-amd64), const PR_TASK_PERF_EVENTS_DISABLE ideal-int pkg syscall (linux-amd64), const PR_TASK_PERF_EVENTS_ENABLE ideal-int pkg syscall (linux-amd64), const PR_TIMING_STATISTICAL ideal-int pkg syscall (linux-amd64), const PR_TIMING_TIMESTAMP ideal-int pkg syscall (linux-amd64), const PR_TSC_ENABLE ideal-int pkg syscall (linux-amd64), const PR_TSC_SIGSEGV ideal-int pkg syscall (linux-amd64), const PR_UNALIGN_NOPRINT ideal-int pkg syscall (linux-amd64), const PR_UNALIGN_SIGBUS ideal-int pkg syscall (linux-amd64), const PTRACE_ARCH_PRCTL ideal-int pkg syscall (linux-amd64), const PTRACE_ATTACH ideal-int pkg syscall (linux-amd64), const PTRACE_CONT ideal-int pkg syscall (linux-amd64), const PTRACE_DETACH ideal-int pkg syscall (linux-amd64), const PTRACE_EVENT_CLONE ideal-int pkg syscall (linux-amd64), const PTRACE_EVENT_EXEC ideal-int pkg syscall (linux-amd64), const PTRACE_EVENT_EXIT ideal-int pkg syscall (linux-amd64), const PTRACE_EVENT_FORK ideal-int pkg syscall (linux-amd64), const PTRACE_EVENT_VFORK ideal-int pkg syscall (linux-amd64), const PTRACE_EVENT_VFORK_DONE ideal-int pkg syscall (linux-amd64), const PTRACE_GETEVENTMSG ideal-int pkg syscall (linux-amd64), const PTRACE_GETFPREGS ideal-int pkg syscall (linux-amd64), const PTRACE_GETFPXREGS ideal-int pkg syscall (linux-amd64), const PTRACE_GETREGS ideal-int pkg syscall (linux-amd64), const PTRACE_GETREGSET ideal-int pkg syscall (linux-amd64), const PTRACE_GETSIGINFO ideal-int pkg syscall (linux-amd64), const PTRACE_GET_THREAD_AREA ideal-int pkg syscall (linux-amd64), const PTRACE_KILL ideal-int pkg syscall (linux-amd64), const PTRACE_OLDSETOPTIONS ideal-int pkg syscall (linux-amd64), const PTRACE_O_MASK ideal-int pkg syscall (linux-amd64), const PTRACE_O_TRACECLONE ideal-int pkg syscall (linux-amd64), const PTRACE_O_TRACEEXEC ideal-int pkg syscall (linux-amd64), const PTRACE_O_TRACEEXIT ideal-int pkg syscall (linux-amd64), const PTRACE_O_TRACEFORK ideal-int pkg syscall (linux-amd64), const PTRACE_O_TRACESYSGOOD ideal-int pkg syscall (linux-amd64), const PTRACE_O_TRACEVFORK ideal-int pkg syscall (linux-amd64), const PTRACE_O_TRACEVFORKDONE ideal-int pkg syscall (linux-amd64), const PTRACE_PEEKDATA ideal-int pkg syscall (linux-amd64), const PTRACE_PEEKTEXT ideal-int pkg syscall (linux-amd64), const PTRACE_PEEKUSR ideal-int pkg syscall (linux-amd64), const PTRACE_POKEDATA ideal-int pkg syscall (linux-amd64), const PTRACE_POKETEXT ideal-int pkg syscall (linux-amd64), const PTRACE_POKEUSR ideal-int pkg syscall (linux-amd64), const PTRACE_SETFPREGS ideal-int pkg syscall (linux-amd64), const PTRACE_SETFPXREGS ideal-int pkg syscall (linux-amd64), const PTRACE_SETOPTIONS ideal-int pkg syscall (linux-amd64), const PTRACE_SETREGS ideal-int pkg syscall (linux-amd64), const PTRACE_SETREGSET ideal-int pkg syscall (linux-amd64), const PTRACE_SETSIGINFO ideal-int pkg syscall (linux-amd64), const PTRACE_SET_THREAD_AREA ideal-int pkg syscall (linux-amd64), const PTRACE_SINGLEBLOCK ideal-int pkg syscall (linux-amd64), const PTRACE_SINGLESTEP ideal-int pkg syscall (linux-amd64), const PTRACE_SYSCALL ideal-int pkg syscall (linux-amd64), const PTRACE_SYSEMU ideal-int pkg syscall (linux-amd64), const PTRACE_SYSEMU_SINGLESTEP ideal-int pkg syscall (linux-amd64), const PTRACE_TRACEME ideal-int pkg syscall (linux-amd64), const PathMax ideal-int pkg syscall (linux-amd64), const RLIMIT_AS ideal-int pkg syscall (linux-amd64), const RLIMIT_CORE ideal-int pkg syscall (linux-amd64), const RLIMIT_CPU ideal-int pkg syscall (linux-amd64), const RLIMIT_DATA ideal-int pkg syscall (linux-amd64), const RLIMIT_FSIZE ideal-int pkg syscall (linux-amd64), const RLIMIT_NOFILE ideal-int pkg syscall (linux-amd64), const RLIMIT_STACK ideal-int pkg syscall (linux-amd64), const RLIM_INFINITY ideal-int pkg syscall (linux-amd64), const RTAX_ADVMSS ideal-int pkg syscall (linux-amd64), const RTAX_CWND ideal-int pkg syscall (linux-amd64), const RTAX_FEATURES ideal-int pkg syscall (linux-amd64), const RTAX_FEATURE_ALLFRAG ideal-int pkg syscall (linux-amd64), const RTAX_FEATURE_ECN ideal-int pkg syscall (linux-amd64), const RTAX_FEATURE_SACK ideal-int pkg syscall (linux-amd64), const RTAX_FEATURE_TIMESTAMP ideal-int pkg syscall (linux-amd64), const RTAX_HOPLIMIT ideal-int pkg syscall (linux-amd64), const RTAX_INITCWND ideal-int pkg syscall (linux-amd64), const RTAX_INITRWND ideal-int pkg syscall (linux-amd64), const RTAX_LOCK ideal-int pkg syscall (linux-amd64), const RTAX_MAX ideal-int pkg syscall (linux-amd64), const RTAX_MTU ideal-int pkg syscall (linux-amd64), const RTAX_REORDERING ideal-int pkg syscall (linux-amd64), const RTAX_RTO_MIN ideal-int pkg syscall (linux-amd64), const RTAX_RTT ideal-int pkg syscall (linux-amd64), const RTAX_RTTVAR ideal-int pkg syscall (linux-amd64), const RTAX_SSTHRESH ideal-int pkg syscall (linux-amd64), const RTAX_UNSPEC ideal-int pkg syscall (linux-amd64), const RTAX_WINDOW ideal-int pkg syscall (linux-amd64), const RTA_ALIGNTO ideal-int pkg syscall (linux-amd64), const RTA_CACHEINFO ideal-int pkg syscall (linux-amd64), const RTA_DST ideal-int pkg syscall (linux-amd64), const RTA_FLOW ideal-int pkg syscall (linux-amd64), const RTA_GATEWAY ideal-int pkg syscall (linux-amd64), const RTA_IIF ideal-int pkg syscall (linux-amd64), const RTA_MAX ideal-int pkg syscall (linux-amd64), const RTA_METRICS ideal-int pkg syscall (linux-amd64), const RTA_MULTIPATH ideal-int pkg syscall (linux-amd64), const RTA_OIF ideal-int pkg syscall (linux-amd64), const RTA_PREFSRC ideal-int pkg syscall (linux-amd64), const RTA_PRIORITY ideal-int pkg syscall (linux-amd64), const RTA_SRC ideal-int pkg syscall (linux-amd64), const RTA_TABLE ideal-int pkg syscall (linux-amd64), const RTA_UNSPEC ideal-int pkg syscall (linux-amd64), const RTCF_DIRECTSRC ideal-int pkg syscall (linux-amd64), const RTCF_DOREDIRECT ideal-int pkg syscall (linux-amd64), const RTCF_LOG ideal-int pkg syscall (linux-amd64), const RTCF_MASQ ideal-int pkg syscall (linux-amd64), const RTCF_NAT ideal-int pkg syscall (linux-amd64), const RTCF_VALVE ideal-int pkg syscall (linux-amd64), const RTF_ADDRCLASSMASK ideal-int pkg syscall (linux-amd64), const RTF_ADDRCONF ideal-int pkg syscall (linux-amd64), const RTF_ALLONLINK ideal-int pkg syscall (linux-amd64), const RTF_BROADCAST ideal-int pkg syscall (linux-amd64), const RTF_CACHE ideal-int pkg syscall (linux-amd64), const RTF_DEFAULT ideal-int pkg syscall (linux-amd64), const RTF_DYNAMIC ideal-int pkg syscall (linux-amd64), const RTF_FLOW ideal-int pkg syscall (linux-amd64), const RTF_GATEWAY ideal-int pkg syscall (linux-amd64), const RTF_HOST ideal-int pkg syscall (linux-amd64), const RTF_INTERFACE ideal-int pkg syscall (linux-amd64), const RTF_IRTT ideal-int pkg syscall (linux-amd64), const RTF_LINKRT ideal-int pkg syscall (linux-amd64), const RTF_LOCAL ideal-int pkg syscall (linux-amd64), const RTF_MODIFIED ideal-int pkg syscall (linux-amd64), const RTF_MSS ideal-int pkg syscall (linux-amd64), const RTF_MTU ideal-int pkg syscall (linux-amd64), const RTF_MULTICAST ideal-int pkg syscall (linux-amd64), const RTF_NAT ideal-int pkg syscall (linux-amd64), const RTF_NOFORWARD ideal-int pkg syscall (linux-amd64), const RTF_NONEXTHOP ideal-int pkg syscall (linux-amd64), const RTF_NOPMTUDISC ideal-int pkg syscall (linux-amd64), const RTF_POLICY ideal-int pkg syscall (linux-amd64), const RTF_REINSTATE ideal-int pkg syscall (linux-amd64), const RTF_REJECT ideal-int pkg syscall (linux-amd64), const RTF_STATIC ideal-int pkg syscall (linux-amd64), const RTF_THROW ideal-int pkg syscall (linux-amd64), const RTF_UP ideal-int pkg syscall (linux-amd64), const RTF_WINDOW ideal-int pkg syscall (linux-amd64), const RTF_XRESOLVE ideal-int pkg syscall (linux-amd64), const RTM_BASE ideal-int pkg syscall (linux-amd64), const RTM_DELACTION ideal-int pkg syscall (linux-amd64), const RTM_DELADDR ideal-int pkg syscall (linux-amd64), const RTM_DELADDRLABEL ideal-int pkg syscall (linux-amd64), const RTM_DELLINK ideal-int pkg syscall (linux-amd64), const RTM_DELNEIGH ideal-int pkg syscall (linux-amd64), const RTM_DELQDISC ideal-int pkg syscall (linux-amd64), const RTM_DELROUTE ideal-int pkg syscall (linux-amd64), const RTM_DELRULE ideal-int pkg syscall (linux-amd64), const RTM_DELTCLASS ideal-int pkg syscall (linux-amd64), const RTM_DELTFILTER ideal-int pkg syscall (linux-amd64), const RTM_F_CLONED ideal-int pkg syscall (linux-amd64), const RTM_F_EQUALIZE ideal-int pkg syscall (linux-amd64), const RTM_F_NOTIFY ideal-int pkg syscall (linux-amd64), const RTM_F_PREFIX ideal-int pkg syscall (linux-amd64), const RTM_GETACTION ideal-int pkg syscall (linux-amd64), const RTM_GETADDR ideal-int pkg syscall (linux-amd64), const RTM_GETADDRLABEL ideal-int pkg syscall (linux-amd64), const RTM_GETANYCAST ideal-int pkg syscall (linux-amd64), const RTM_GETDCB ideal-int pkg syscall (linux-amd64), const RTM_GETLINK ideal-int pkg syscall (linux-amd64), const RTM_GETMULTICAST ideal-int pkg syscall (linux-amd64), const RTM_GETNEIGH ideal-int pkg syscall (linux-amd64), const RTM_GETNEIGHTBL ideal-int pkg syscall (linux-amd64), const RTM_GETQDISC ideal-int pkg syscall (linux-amd64), const RTM_GETROUTE ideal-int pkg syscall (linux-amd64), const RTM_GETRULE ideal-int pkg syscall (linux-amd64), const RTM_GETTCLASS ideal-int pkg syscall (linux-amd64), const RTM_GETTFILTER ideal-int pkg syscall (linux-amd64), const RTM_MAX ideal-int pkg syscall (linux-amd64), const RTM_NEWACTION ideal-int pkg syscall (linux-amd64), const RTM_NEWADDR ideal-int pkg syscall (linux-amd64), const RTM_NEWADDRLABEL ideal-int pkg syscall (linux-amd64), const RTM_NEWLINK ideal-int pkg syscall (linux-amd64), const RTM_NEWNDUSEROPT ideal-int pkg syscall (linux-amd64), const RTM_NEWNEIGH ideal-int pkg syscall (linux-amd64), const RTM_NEWNEIGHTBL ideal-int pkg syscall (linux-amd64), const RTM_NEWPREFIX ideal-int pkg syscall (linux-amd64), const RTM_NEWQDISC ideal-int pkg syscall (linux-amd64), const RTM_NEWROUTE ideal-int pkg syscall (linux-amd64), const RTM_NEWRULE ideal-int pkg syscall (linux-amd64), const RTM_NEWTCLASS ideal-int pkg syscall (linux-amd64), const RTM_NEWTFILTER ideal-int pkg syscall (linux-amd64), const RTM_NR_FAMILIES ideal-int pkg syscall (linux-amd64), const RTM_NR_MSGTYPES ideal-int pkg syscall (linux-amd64), const RTM_SETDCB ideal-int pkg syscall (linux-amd64), const RTM_SETLINK ideal-int pkg syscall (linux-amd64), const RTM_SETNEIGHTBL ideal-int pkg syscall (linux-amd64), const RTNH_ALIGNTO ideal-int pkg syscall (linux-amd64), const RTNH_F_DEAD ideal-int pkg syscall (linux-amd64), const RTNH_F_ONLINK ideal-int pkg syscall (linux-amd64), const RTNH_F_PERVASIVE ideal-int pkg syscall (linux-amd64), const RTN_ANYCAST ideal-int pkg syscall (linux-amd64), const RTN_BLACKHOLE ideal-int pkg syscall (linux-amd64), const RTN_BROADCAST ideal-int pkg syscall (linux-amd64), const RTN_LOCAL ideal-int pkg syscall (linux-amd64), const RTN_MAX ideal-int pkg syscall (linux-amd64), const RTN_MULTICAST ideal-int pkg syscall (linux-amd64), const RTN_NAT ideal-int pkg syscall (linux-amd64), const RTN_PROHIBIT ideal-int pkg syscall (linux-amd64), const RTN_THROW ideal-int pkg syscall (linux-amd64), const RTN_UNICAST ideal-int pkg syscall (linux-amd64), const RTN_UNREACHABLE ideal-int pkg syscall (linux-amd64), const RTN_UNSPEC ideal-int pkg syscall (linux-amd64), const RTN_XRESOLVE ideal-int pkg syscall (linux-amd64), const RTPROT_BIRD ideal-int pkg syscall (linux-amd64), const RTPROT_BOOT ideal-int pkg syscall (linux-amd64), const RTPROT_DHCP ideal-int pkg syscall (linux-amd64), const RTPROT_DNROUTED ideal-int pkg syscall (linux-amd64), const RTPROT_GATED ideal-int pkg syscall (linux-amd64), const RTPROT_KERNEL ideal-int pkg syscall (linux-amd64), const RTPROT_MRT ideal-int pkg syscall (linux-amd64), const RTPROT_NTK ideal-int pkg syscall (linux-amd64), const RTPROT_RA ideal-int pkg syscall (linux-amd64), const RTPROT_REDIRECT ideal-int pkg syscall (linux-amd64), const RTPROT_STATIC ideal-int pkg syscall (linux-amd64), const RTPROT_UNSPEC ideal-int pkg syscall (linux-amd64), const RTPROT_XORP ideal-int pkg syscall (linux-amd64), const RTPROT_ZEBRA ideal-int pkg syscall (linux-amd64), const RT_CLASS_DEFAULT ideal-int pkg syscall (linux-amd64), const RT_CLASS_LOCAL ideal-int pkg syscall (linux-amd64), const RT_CLASS_MAIN ideal-int pkg syscall (linux-amd64), const RT_CLASS_MAX ideal-int pkg syscall (linux-amd64), const RT_CLASS_UNSPEC ideal-int pkg syscall (linux-amd64), const RT_SCOPE_HOST ideal-int pkg syscall (linux-amd64), const RT_SCOPE_LINK ideal-int pkg syscall (linux-amd64), const RT_SCOPE_NOWHERE ideal-int pkg syscall (linux-amd64), const RT_SCOPE_SITE ideal-int pkg syscall (linux-amd64), const RT_SCOPE_UNIVERSE ideal-int pkg syscall (linux-amd64), const RT_TABLE_COMPAT ideal-int pkg syscall (linux-amd64), const RT_TABLE_DEFAULT ideal-int pkg syscall (linux-amd64), const RT_TABLE_LOCAL ideal-int pkg syscall (linux-amd64), const RT_TABLE_MAIN ideal-int pkg syscall (linux-amd64), const RT_TABLE_MAX ideal-int pkg syscall (linux-amd64), const RT_TABLE_UNSPEC ideal-int pkg syscall (linux-amd64), const RUSAGE_CHILDREN ideal-int pkg syscall (linux-amd64), const RUSAGE_SELF ideal-int pkg syscall (linux-amd64), const RUSAGE_THREAD ideal-int pkg syscall (linux-amd64), const SCM_CREDENTIALS ideal-int pkg syscall (linux-amd64), const SCM_RIGHTS ideal-int pkg syscall (linux-amd64), const SCM_TIMESTAMP ideal-int pkg syscall (linux-amd64), const SCM_TIMESTAMPING ideal-int pkg syscall (linux-amd64), const SCM_TIMESTAMPNS ideal-int pkg syscall (linux-amd64), const SIGCHLD Signal pkg syscall (linux-amd64), const SIGCLD Signal pkg syscall (linux-amd64), const SIGCONT Signal pkg syscall (linux-amd64), const SIGIO Signal pkg syscall (linux-amd64), const SIGIOT Signal pkg syscall (linux-amd64), const SIGPOLL Signal pkg syscall (linux-amd64), const SIGPROF Signal pkg syscall (linux-amd64), const SIGPWR Signal pkg syscall (linux-amd64), const SIGSTKFLT Signal pkg syscall (linux-amd64), const SIGSTOP Signal pkg syscall (linux-amd64), const SIGSYS Signal pkg syscall (linux-amd64), const SIGTSTP Signal pkg syscall (linux-amd64), const SIGTTIN Signal pkg syscall (linux-amd64), const SIGTTOU Signal pkg syscall (linux-amd64), const SIGUNUSED Signal pkg syscall (linux-amd64), const SIGURG Signal pkg syscall (linux-amd64), const SIGUSR1 Signal pkg syscall (linux-amd64), const SIGUSR2 Signal pkg syscall (linux-amd64), const SIGVTALRM Signal pkg syscall (linux-amd64), const SIGWINCH Signal pkg syscall (linux-amd64), const SIGXCPU Signal pkg syscall (linux-amd64), const SIGXFSZ Signal pkg syscall (linux-amd64), const SIOCADDDLCI ideal-int pkg syscall (linux-amd64), const SIOCADDMULTI ideal-int pkg syscall (linux-amd64), const SIOCADDRT ideal-int pkg syscall (linux-amd64), const SIOCATMARK ideal-int pkg syscall (linux-amd64), const SIOCDARP ideal-int pkg syscall (linux-amd64), const SIOCDELDLCI ideal-int pkg syscall (linux-amd64), const SIOCDELMULTI ideal-int pkg syscall (linux-amd64), const SIOCDELRT ideal-int pkg syscall (linux-amd64), const SIOCDEVPRIVATE ideal-int pkg syscall (linux-amd64), const SIOCDIFADDR ideal-int pkg syscall (linux-amd64), const SIOCDRARP ideal-int pkg syscall (linux-amd64), const SIOCGARP ideal-int pkg syscall (linux-amd64), const SIOCGIFADDR ideal-int pkg syscall (linux-amd64), const SIOCGIFBR ideal-int pkg syscall (linux-amd64), const SIOCGIFBRDADDR ideal-int pkg syscall (linux-amd64), const SIOCGIFCONF ideal-int pkg syscall (linux-amd64), const SIOCGIFCOUNT ideal-int pkg syscall (linux-amd64), const SIOCGIFDSTADDR ideal-int pkg syscall (linux-amd64), const SIOCGIFENCAP ideal-int pkg syscall (linux-amd64), const SIOCGIFFLAGS ideal-int pkg syscall (linux-amd64), const SIOCGIFHWADDR ideal-int pkg syscall (linux-amd64), const SIOCGIFINDEX ideal-int pkg syscall (linux-amd64), const SIOCGIFMAP ideal-int pkg syscall (linux-amd64), const SIOCGIFMEM ideal-int pkg syscall (linux-amd64), const SIOCGIFMETRIC ideal-int pkg syscall (linux-amd64), const SIOCGIFMTU ideal-int pkg syscall (linux-amd64), const SIOCGIFNAME ideal-int pkg syscall (linux-amd64), const SIOCGIFNETMASK ideal-int pkg syscall (linux-amd64), const SIOCGIFPFLAGS ideal-int pkg syscall (linux-amd64), const SIOCGIFSLAVE ideal-int pkg syscall (linux-amd64), const SIOCGIFTXQLEN ideal-int pkg syscall (linux-amd64), const SIOCGPGRP ideal-int pkg syscall (linux-amd64), const SIOCGRARP ideal-int pkg syscall (linux-amd64), const SIOCGSTAMP ideal-int pkg syscall (linux-amd64), const SIOCGSTAMPNS ideal-int pkg syscall (linux-amd64), const SIOCPROTOPRIVATE ideal-int pkg syscall (linux-amd64), const SIOCRTMSG ideal-int pkg syscall (linux-amd64), const SIOCSARP ideal-int pkg syscall (linux-amd64), const SIOCSIFADDR ideal-int pkg syscall (linux-amd64), const SIOCSIFBR ideal-int pkg syscall (linux-amd64), const SIOCSIFBRDADDR ideal-int pkg syscall (linux-amd64), const SIOCSIFDSTADDR ideal-int pkg syscall (linux-amd64), const SIOCSIFENCAP ideal-int pkg syscall (linux-amd64), const SIOCSIFFLAGS ideal-int pkg syscall (linux-amd64), const SIOCSIFHWADDR ideal-int pkg syscall (linux-amd64), const SIOCSIFHWBROADCAST ideal-int pkg syscall (linux-amd64), const SIOCSIFLINK ideal-int pkg syscall (linux-amd64), const SIOCSIFMAP ideal-int pkg syscall (linux-amd64), const SIOCSIFMEM ideal-int pkg syscall (linux-amd64), const SIOCSIFMETRIC ideal-int pkg syscall (linux-amd64), const SIOCSIFMTU ideal-int pkg syscall (linux-amd64), const SIOCSIFNAME ideal-int pkg syscall (linux-amd64), const SIOCSIFNETMASK ideal-int pkg syscall (linux-amd64), const SIOCSIFPFLAGS ideal-int pkg syscall (linux-amd64), const SIOCSIFSLAVE ideal-int pkg syscall (linux-amd64), const SIOCSIFTXQLEN ideal-int pkg syscall (linux-amd64), const SIOCSPGRP ideal-int pkg syscall (linux-amd64), const SIOCSRARP ideal-int pkg syscall (linux-amd64), const SOCK_CLOEXEC ideal-int pkg syscall (linux-amd64), const SOCK_DCCP ideal-int pkg syscall (linux-amd64), const SOCK_NONBLOCK ideal-int pkg syscall (linux-amd64), const SOCK_PACKET ideal-int pkg syscall (linux-amd64), const SOCK_RDM ideal-int pkg syscall (linux-amd64), const SOL_AAL ideal-int pkg syscall (linux-amd64), const SOL_ATM ideal-int pkg syscall (linux-amd64), const SOL_DECNET ideal-int pkg syscall (linux-amd64), const SOL_ICMPV6 ideal-int pkg syscall (linux-amd64), const SOL_IP ideal-int pkg syscall (linux-amd64), const SOL_IPV6 ideal-int pkg syscall (linux-amd64), const SOL_IRDA ideal-int pkg syscall (linux-amd64), const SOL_PACKET ideal-int pkg syscall (linux-amd64), const SOL_RAW ideal-int pkg syscall (linux-amd64), const SOL_TCP ideal-int pkg syscall (linux-amd64), const SOL_X25 ideal-int pkg syscall (linux-amd64), const SO_ACCEPTCONN ideal-int pkg syscall (linux-amd64), const SO_ATTACH_FILTER ideal-int pkg syscall (linux-amd64), const SO_BINDTODEVICE ideal-int pkg syscall (linux-amd64), const SO_BSDCOMPAT ideal-int pkg syscall (linux-amd64), const SO_DEBUG ideal-int pkg syscall (linux-amd64), const SO_DETACH_FILTER ideal-int pkg syscall (linux-amd64), const SO_DOMAIN ideal-int pkg syscall (linux-amd64), const SO_ERROR ideal-int pkg syscall (linux-amd64), const SO_MARK ideal-int pkg syscall (linux-amd64), const SO_NO_CHECK ideal-int pkg syscall (linux-amd64), const SO_OOBINLINE ideal-int pkg syscall (linux-amd64), const SO_PASSCRED ideal-int pkg syscall (linux-amd64), const SO_PASSSEC ideal-int pkg syscall (linux-amd64), const SO_PEERCRED ideal-int pkg syscall (linux-amd64), const SO_PEERNAME ideal-int pkg syscall (linux-amd64), const SO_PEERSEC ideal-int pkg syscall (linux-amd64), const SO_PRIORITY ideal-int pkg syscall (linux-amd64), const SO_PROTOCOL ideal-int pkg syscall (linux-amd64), const SO_RCVBUFFORCE ideal-int pkg syscall (linux-amd64), const SO_RCVLOWAT ideal-int pkg syscall (linux-amd64), const SO_RCVTIMEO ideal-int pkg syscall (linux-amd64), const SO_RXQ_OVFL ideal-int pkg syscall (linux-amd64), const SO_SECURITY_AUTHENTICATION ideal-int pkg syscall (linux-amd64), const SO_SECURITY_ENCRYPTION_NETWORK ideal-int pkg syscall (linux-amd64), const SO_SECURITY_ENCRYPTION_TRANSPORT ideal-int pkg syscall (linux-amd64), const SO_SNDBUFFORCE ideal-int pkg syscall (linux-amd64), const SO_SNDLOWAT ideal-int pkg syscall (linux-amd64), const SO_SNDTIMEO ideal-int pkg syscall (linux-amd64), const SO_TIMESTAMP ideal-int pkg syscall (linux-amd64), const SO_TIMESTAMPING ideal-int pkg syscall (linux-amd64), const SO_TIMESTAMPNS ideal-int pkg syscall (linux-amd64), const SO_TYPE ideal-int pkg syscall (linux-amd64), const SYS_ACCEPT ideal-int pkg syscall (linux-amd64), const SYS_ACCEPT4 ideal-int pkg syscall (linux-amd64), const SYS_ACCESS ideal-int pkg syscall (linux-amd64), const SYS_ACCT ideal-int pkg syscall (linux-amd64), const SYS_ADD_KEY ideal-int pkg syscall (linux-amd64), const SYS_ADJTIMEX ideal-int pkg syscall (linux-amd64), const SYS_AFS_SYSCALL ideal-int pkg syscall (linux-amd64), const SYS_ALARM ideal-int pkg syscall (linux-amd64), const SYS_ARCH_PRCTL ideal-int pkg syscall (linux-amd64), const SYS_BIND ideal-int pkg syscall (linux-amd64), const SYS_BRK ideal-int pkg syscall (linux-amd64), const SYS_CAPGET ideal-int pkg syscall (linux-amd64), const SYS_CAPSET ideal-int pkg syscall (linux-amd64), const SYS_CHDIR ideal-int pkg syscall (linux-amd64), const SYS_CHMOD ideal-int pkg syscall (linux-amd64), const SYS_CHOWN ideal-int pkg syscall (linux-amd64), const SYS_CHROOT ideal-int pkg syscall (linux-amd64), const SYS_CLOCK_GETRES ideal-int pkg syscall (linux-amd64), const SYS_CLOCK_GETTIME ideal-int pkg syscall (linux-amd64), const SYS_CLOCK_NANOSLEEP ideal-int pkg syscall (linux-amd64), const SYS_CLOCK_SETTIME ideal-int pkg syscall (linux-amd64), const SYS_CLONE ideal-int pkg syscall (linux-amd64), const SYS_CLOSE ideal-int pkg syscall (linux-amd64), const SYS_CONNECT ideal-int pkg syscall (linux-amd64), const SYS_CREAT ideal-int pkg syscall (linux-amd64), const SYS_CREATE_MODULE ideal-int pkg syscall (linux-amd64), const SYS_DELETE_MODULE ideal-int pkg syscall (linux-amd64), const SYS_DUP ideal-int pkg syscall (linux-amd64), const SYS_DUP2 ideal-int pkg syscall (linux-amd64), const SYS_DUP3 ideal-int pkg syscall (linux-amd64), const SYS_EPOLL_CREATE ideal-int pkg syscall (linux-amd64), const SYS_EPOLL_CREATE1 ideal-int pkg syscall (linux-amd64), const SYS_EPOLL_CTL ideal-int pkg syscall (linux-amd64), const SYS_EPOLL_CTL_OLD ideal-int pkg syscall (linux-amd64), const SYS_EPOLL_PWAIT ideal-int pkg syscall (linux-amd64), const SYS_EPOLL_WAIT ideal-int pkg syscall (linux-amd64), const SYS_EPOLL_WAIT_OLD ideal-int pkg syscall (linux-amd64), const SYS_EVENTFD ideal-int pkg syscall (linux-amd64), const SYS_EVENTFD2 ideal-int pkg syscall (linux-amd64), const SYS_EXECVE ideal-int pkg syscall (linux-amd64), const SYS_EXIT ideal-int pkg syscall (linux-amd64), const SYS_EXIT_GROUP ideal-int pkg syscall (linux-amd64), const SYS_FACCESSAT ideal-int pkg syscall (linux-amd64), const SYS_FADVISE64 ideal-int pkg syscall (linux-amd64), const SYS_FALLOCATE ideal-int pkg syscall (linux-amd64), const SYS_FANOTIFY_INIT ideal-int pkg syscall (linux-amd64), const SYS_FANOTIFY_MARK ideal-int pkg syscall (linux-amd64), const SYS_FCHDIR ideal-int pkg syscall (linux-amd64), const SYS_FCHMOD ideal-int pkg syscall (linux-amd64), const SYS_FCHMODAT ideal-int pkg syscall (linux-amd64), const SYS_FCHOWN ideal-int pkg syscall (linux-amd64), const SYS_FCHOWNAT ideal-int pkg syscall (linux-amd64), const SYS_FCNTL ideal-int pkg syscall (linux-amd64), const SYS_FDATASYNC ideal-int pkg syscall (linux-amd64), const SYS_FGETXATTR ideal-int pkg syscall (linux-amd64), const SYS_FLISTXATTR ideal-int pkg syscall (linux-amd64), const SYS_FLOCK ideal-int pkg syscall (linux-amd64), const SYS_FORK ideal-int pkg syscall (linux-amd64), const SYS_FREMOVEXATTR ideal-int pkg syscall (linux-amd64), const SYS_FSETXATTR ideal-int pkg syscall (linux-amd64), const SYS_FSTAT ideal-int pkg syscall (linux-amd64), const SYS_FSTATFS ideal-int pkg syscall (linux-amd64), const SYS_FSYNC ideal-int pkg syscall (linux-amd64), const SYS_FTRUNCATE ideal-int pkg syscall (linux-amd64), const SYS_FUTEX ideal-int pkg syscall (linux-amd64), const SYS_FUTIMESAT ideal-int pkg syscall (linux-amd64), const SYS_GETCWD ideal-int pkg syscall (linux-amd64), const SYS_GETDENTS ideal-int pkg syscall (linux-amd64), const SYS_GETDENTS64 ideal-int pkg syscall (linux-amd64), const SYS_GETEGID ideal-int pkg syscall (linux-amd64), const SYS_GETEUID ideal-int pkg syscall (linux-amd64), const SYS_GETGID ideal-int pkg syscall (linux-amd64), const SYS_GETGROUPS ideal-int pkg syscall (linux-amd64), const SYS_GETITIMER ideal-int pkg syscall (linux-amd64), const SYS_GETPEERNAME ideal-int pkg syscall (linux-amd64), const SYS_GETPGID ideal-int pkg syscall (linux-amd64), const SYS_GETPGRP ideal-int pkg syscall (linux-amd64), const SYS_GETPID ideal-int pkg syscall (linux-amd64), const SYS_GETPMSG ideal-int pkg syscall (linux-amd64), const SYS_GETPPID ideal-int pkg syscall (linux-amd64), const SYS_GETPRIORITY ideal-int pkg syscall (linux-amd64), const SYS_GETRESGID ideal-int pkg syscall (linux-amd64), const SYS_GETRESUID ideal-int pkg syscall (linux-amd64), const SYS_GETRLIMIT ideal-int pkg syscall (linux-amd64), const SYS_GETRUSAGE ideal-int pkg syscall (linux-amd64), const SYS_GETSID ideal-int pkg syscall (linux-amd64), const SYS_GETSOCKNAME ideal-int pkg syscall (linux-amd64), const SYS_GETSOCKOPT ideal-int pkg syscall (linux-amd64), const SYS_GETTID ideal-int pkg syscall (linux-amd64), const SYS_GETTIMEOFDAY ideal-int pkg syscall (linux-amd64), const SYS_GETUID ideal-int pkg syscall (linux-amd64), const SYS_GETXATTR ideal-int pkg syscall (linux-amd64), const SYS_GET_KERNEL_SYMS ideal-int pkg syscall (linux-amd64), const SYS_GET_MEMPOLICY ideal-int pkg syscall (linux-amd64), const SYS_GET_ROBUST_LIST ideal-int pkg syscall (linux-amd64), const SYS_GET_THREAD_AREA ideal-int pkg syscall (linux-amd64), const SYS_INIT_MODULE ideal-int pkg syscall (linux-amd64), const SYS_INOTIFY_ADD_WATCH ideal-int pkg syscall (linux-amd64), const SYS_INOTIFY_INIT ideal-int pkg syscall (linux-amd64), const SYS_INOTIFY_INIT1 ideal-int pkg syscall (linux-amd64), const SYS_INOTIFY_RM_WATCH ideal-int pkg syscall (linux-amd64), const SYS_IOCTL ideal-int pkg syscall (linux-amd64), const SYS_IOPERM ideal-int pkg syscall (linux-amd64), const SYS_IOPL ideal-int pkg syscall (linux-amd64), const SYS_IOPRIO_GET ideal-int pkg syscall (linux-amd64), const SYS_IOPRIO_SET ideal-int pkg syscall (linux-amd64), const SYS_IO_CANCEL ideal-int pkg syscall (linux-amd64), const SYS_IO_DESTROY ideal-int pkg syscall (linux-amd64), const SYS_IO_GETEVENTS ideal-int pkg syscall (linux-amd64), const SYS_IO_SETUP ideal-int pkg syscall (linux-amd64), const SYS_IO_SUBMIT ideal-int pkg syscall (linux-amd64), const SYS_KEXEC_LOAD ideal-int pkg syscall (linux-amd64), const SYS_KEYCTL ideal-int pkg syscall (linux-amd64), const SYS_KILL ideal-int pkg syscall (linux-amd64), const SYS_LCHOWN ideal-int pkg syscall (linux-amd64), const SYS_LGETXATTR ideal-int pkg syscall (linux-amd64), const SYS_LINK ideal-int pkg syscall (linux-amd64), const SYS_LINKAT ideal-int pkg syscall (linux-amd64), const SYS_LISTEN ideal-int pkg syscall (linux-amd64), const SYS_LISTXATTR ideal-int pkg syscall (linux-amd64), const SYS_LLISTXATTR ideal-int pkg syscall (linux-amd64), const SYS_LOOKUP_DCOOKIE ideal-int pkg syscall (linux-amd64), const SYS_LREMOVEXATTR ideal-int pkg syscall (linux-amd64), const SYS_LSEEK ideal-int pkg syscall (linux-amd64), const SYS_LSETXATTR ideal-int pkg syscall (linux-amd64), const SYS_LSTAT ideal-int pkg syscall (linux-amd64), const SYS_MADVISE ideal-int pkg syscall (linux-amd64), const SYS_MBIND ideal-int pkg syscall (linux-amd64), const SYS_MIGRATE_PAGES ideal-int pkg syscall (linux-amd64), const SYS_MINCORE ideal-int pkg syscall (linux-amd64), const SYS_MKDIR ideal-int pkg syscall (linux-amd64), const SYS_MKDIRAT ideal-int pkg syscall (linux-amd64), const SYS_MKNOD ideal-int pkg syscall (linux-amd64), const SYS_MKNODAT ideal-int pkg syscall (linux-amd64), const SYS_MLOCK ideal-int pkg syscall (linux-amd64), const SYS_MLOCKALL ideal-int pkg syscall (linux-amd64), const SYS_MMAP ideal-int pkg syscall (linux-amd64), const SYS_MODIFY_LDT ideal-int pkg syscall (linux-amd64), const SYS_MOUNT ideal-int pkg syscall (linux-amd64), const SYS_MOVE_PAGES ideal-int pkg syscall (linux-amd64), const SYS_MPROTECT ideal-int pkg syscall (linux-amd64), const SYS_MQ_GETSETATTR ideal-int pkg syscall (linux-amd64), const SYS_MQ_NOTIFY ideal-int pkg syscall (linux-amd64), const SYS_MQ_OPEN ideal-int pkg syscall (linux-amd64), const SYS_MQ_TIMEDRECEIVE ideal-int pkg syscall (linux-amd64), const SYS_MQ_TIMEDSEND ideal-int pkg syscall (linux-amd64), const SYS_MQ_UNLINK ideal-int pkg syscall (linux-amd64), const SYS_MREMAP ideal-int pkg syscall (linux-amd64), const SYS_MSGCTL ideal-int pkg syscall (linux-amd64), const SYS_MSGGET ideal-int pkg syscall (linux-amd64), const SYS_MSGRCV ideal-int pkg syscall (linux-amd64), const SYS_MSGSND ideal-int pkg syscall (linux-amd64), const SYS_MSYNC ideal-int pkg syscall (linux-amd64), const SYS_MUNLOCK ideal-int pkg syscall (linux-amd64), const SYS_MUNLOCKALL ideal-int pkg syscall (linux-amd64), const SYS_MUNMAP ideal-int pkg syscall (linux-amd64), const SYS_NANOSLEEP ideal-int pkg syscall (linux-amd64), const SYS_NEWFSTATAT ideal-int pkg syscall (linux-amd64), const SYS_NFSSERVCTL ideal-int pkg syscall (linux-amd64), const SYS_OPEN ideal-int pkg syscall (linux-amd64), const SYS_OPENAT ideal-int pkg syscall (linux-amd64), const SYS_PAUSE ideal-int pkg syscall (linux-amd64), const SYS_PERF_EVENT_OPEN ideal-int pkg syscall (linux-amd64), const SYS_PERSONALITY ideal-int pkg syscall (linux-amd64), const SYS_PIPE ideal-int pkg syscall (linux-amd64), const SYS_PIPE2 ideal-int pkg syscall (linux-amd64), const SYS_PIVOT_ROOT ideal-int pkg syscall (linux-amd64), const SYS_POLL ideal-int pkg syscall (linux-amd64), const SYS_PPOLL ideal-int pkg syscall (linux-amd64), const SYS_PRCTL ideal-int pkg syscall (linux-amd64), const SYS_PREAD64 ideal-int pkg syscall (linux-amd64), const SYS_PREADV ideal-int pkg syscall (linux-amd64), const SYS_PRLIMIT64 ideal-int pkg syscall (linux-amd64), const SYS_PSELECT6 ideal-int pkg syscall (linux-amd64), const SYS_PTRACE ideal-int pkg syscall (linux-amd64), const SYS_PUTPMSG ideal-int pkg syscall (linux-amd64), const SYS_PWRITE64 ideal-int pkg syscall (linux-amd64), const SYS_PWRITEV ideal-int pkg syscall (linux-amd64), const SYS_QUERY_MODULE ideal-int pkg syscall (linux-amd64), const SYS_QUOTACTL ideal-int pkg syscall (linux-amd64), const SYS_READ ideal-int pkg syscall (linux-amd64), const SYS_READAHEAD ideal-int pkg syscall (linux-amd64), const SYS_READLINK ideal-int pkg syscall (linux-amd64), const SYS_READLINKAT ideal-int pkg syscall (linux-amd64), const SYS_READV ideal-int pkg syscall (linux-amd64), const SYS_REBOOT ideal-int pkg syscall (linux-amd64), const SYS_RECVFROM ideal-int pkg syscall (linux-amd64), const SYS_RECVMMSG ideal-int pkg syscall (linux-amd64), const SYS_RECVMSG ideal-int pkg syscall (linux-amd64), const SYS_REMAP_FILE_PAGES ideal-int pkg syscall (linux-amd64), const SYS_REMOVEXATTR ideal-int pkg syscall (linux-amd64), const SYS_RENAME ideal-int pkg syscall (linux-amd64), const SYS_RENAMEAT ideal-int pkg syscall (linux-amd64), const SYS_REQUEST_KEY ideal-int pkg syscall (linux-amd64), const SYS_RESTART_SYSCALL ideal-int pkg syscall (linux-amd64), const SYS_RMDIR ideal-int pkg syscall (linux-amd64), const SYS_RT_SIGACTION ideal-int pkg syscall (linux-amd64), const SYS_RT_SIGPENDING ideal-int pkg syscall (linux-amd64), const SYS_RT_SIGPROCMASK ideal-int pkg syscall (linux-amd64), const SYS_RT_SIGQUEUEINFO ideal-int pkg syscall (linux-amd64), const SYS_RT_SIGRETURN ideal-int pkg syscall (linux-amd64), const SYS_RT_SIGSUSPEND ideal-int pkg syscall (linux-amd64), const SYS_RT_SIGTIMEDWAIT ideal-int pkg syscall (linux-amd64), const SYS_RT_TGSIGQUEUEINFO ideal-int pkg syscall (linux-amd64), const SYS_SCHED_GETAFFINITY ideal-int pkg syscall (linux-amd64), const SYS_SCHED_GETPARAM ideal-int pkg syscall (linux-amd64), const SYS_SCHED_GETSCHEDULER ideal-int pkg syscall (linux-amd64), const SYS_SCHED_GET_PRIORITY_MAX ideal-int pkg syscall (linux-amd64), const SYS_SCHED_GET_PRIORITY_MIN ideal-int pkg syscall (linux-amd64), const SYS_SCHED_RR_GET_INTERVAL ideal-int pkg syscall (linux-amd64), const SYS_SCHED_SETAFFINITY ideal-int pkg syscall (linux-amd64), const SYS_SCHED_SETPARAM ideal-int pkg syscall (linux-amd64), const SYS_SCHED_SETSCHEDULER ideal-int pkg syscall (linux-amd64), const SYS_SCHED_YIELD ideal-int pkg syscall (linux-amd64), const SYS_SECURITY ideal-int pkg syscall (linux-amd64), const SYS_SELECT ideal-int pkg syscall (linux-amd64), const SYS_SEMCTL ideal-int pkg syscall (linux-amd64), const SYS_SEMGET ideal-int pkg syscall (linux-amd64), const SYS_SEMOP ideal-int pkg syscall (linux-amd64), const SYS_SEMTIMEDOP ideal-int pkg syscall (linux-amd64), const SYS_SENDFILE ideal-int pkg syscall (linux-amd64), const SYS_SENDMSG ideal-int pkg syscall (linux-amd64), const SYS_SENDTO ideal-int pkg syscall (linux-amd64), const SYS_SETDOMAINNAME ideal-int pkg syscall (linux-amd64), const SYS_SETFSGID ideal-int pkg syscall (linux-amd64), const SYS_SETFSUID ideal-int pkg syscall (linux-amd64), const SYS_SETGID ideal-int pkg syscall (linux-amd64), const SYS_SETGROUPS ideal-int pkg syscall (linux-amd64), const SYS_SETHOSTNAME ideal-int pkg syscall (linux-amd64), const SYS_SETITIMER ideal-int pkg syscall (linux-amd64), const SYS_SETPGID ideal-int pkg syscall (linux-amd64), const SYS_SETPRIORITY ideal-int pkg syscall (linux-amd64), const SYS_SETREGID ideal-int pkg syscall (linux-amd64), const SYS_SETRESGID ideal-int pkg syscall (linux-amd64), const SYS_SETRESUID ideal-int pkg syscall (linux-amd64), const SYS_SETREUID ideal-int pkg syscall (linux-amd64), const SYS_SETRLIMIT ideal-int pkg syscall (linux-amd64), const SYS_SETSID ideal-int pkg syscall (linux-amd64), const SYS_SETSOCKOPT ideal-int pkg syscall (linux-amd64), const SYS_SETTIMEOFDAY ideal-int pkg syscall (linux-amd64), const SYS_SETUID ideal-int pkg syscall (linux-amd64), const SYS_SETXATTR ideal-int pkg syscall (linux-amd64), const SYS_SET_MEMPOLICY ideal-int pkg syscall (linux-amd64), const SYS_SET_ROBUST_LIST ideal-int pkg syscall (linux-amd64), const SYS_SET_THREAD_AREA ideal-int pkg syscall (linux-amd64), const SYS_SET_TID_ADDRESS ideal-int pkg syscall (linux-amd64), const SYS_SHMAT ideal-int pkg syscall (linux-amd64), const SYS_SHMCTL ideal-int pkg syscall (linux-amd64), const SYS_SHMDT ideal-int pkg syscall (linux-amd64), const SYS_SHMGET ideal-int pkg syscall (linux-amd64), const SYS_SHUTDOWN ideal-int pkg syscall (linux-amd64), const SYS_SIGALTSTACK ideal-int pkg syscall (linux-amd64), const SYS_SIGNALFD ideal-int pkg syscall (linux-amd64), const SYS_SIGNALFD4 ideal-int pkg syscall (linux-amd64), const SYS_SOCKET ideal-int pkg syscall (linux-amd64), const SYS_SOCKETPAIR ideal-int pkg syscall (linux-amd64), const SYS_SPLICE ideal-int pkg syscall (linux-amd64), const SYS_STAT ideal-int pkg syscall (linux-amd64), const SYS_STATFS ideal-int pkg syscall (linux-amd64), const SYS_SWAPOFF ideal-int pkg syscall (linux-amd64), const SYS_SWAPON ideal-int pkg syscall (linux-amd64), const SYS_SYMLINK ideal-int pkg syscall (linux-amd64), const SYS_SYMLINKAT ideal-int pkg syscall (linux-amd64), const SYS_SYNC ideal-int pkg syscall (linux-amd64), const SYS_SYNC_FILE_RANGE ideal-int pkg syscall (linux-amd64), const SYS_SYSFS ideal-int pkg syscall (linux-amd64), const SYS_SYSINFO ideal-int pkg syscall (linux-amd64), const SYS_SYSLOG ideal-int pkg syscall (linux-amd64), const SYS_TEE ideal-int pkg syscall (linux-amd64), const SYS_TGKILL ideal-int pkg syscall (linux-amd64), const SYS_TIME ideal-int pkg syscall (linux-amd64), const SYS_TIMERFD_CREATE ideal-int pkg syscall (linux-amd64), const SYS_TIMERFD_GETTIME ideal-int pkg syscall (linux-amd64), const SYS_TIMERFD_SETTIME ideal-int pkg syscall (linux-amd64), const SYS_TIMER_CREATE ideal-int pkg syscall (linux-amd64), const SYS_TIMER_DELETE ideal-int pkg syscall (linux-amd64), const SYS_TIMER_GETOVERRUN ideal-int pkg syscall (linux-amd64), const SYS_TIMER_GETTIME ideal-int pkg syscall (linux-amd64), const SYS_TIMER_SETTIME ideal-int pkg syscall (linux-amd64), const SYS_TIMES ideal-int pkg syscall (linux-amd64), const SYS_TKILL ideal-int pkg syscall (linux-amd64), const SYS_TRUNCATE ideal-int pkg syscall (linux-amd64), const SYS_TUXCALL ideal-int pkg syscall (linux-amd64), const SYS_UMASK ideal-int pkg syscall (linux-amd64), const SYS_UMOUNT2 ideal-int pkg syscall (linux-amd64), const SYS_UNAME ideal-int pkg syscall (linux-amd64), const SYS_UNLINK ideal-int pkg syscall (linux-amd64), const SYS_UNLINKAT ideal-int pkg syscall (linux-amd64), const SYS_UNSHARE ideal-int pkg syscall (linux-amd64), const SYS_USELIB ideal-int pkg syscall (linux-amd64), const SYS_USTAT ideal-int pkg syscall (linux-amd64), const SYS_UTIME ideal-int pkg syscall (linux-amd64), const SYS_UTIMENSAT ideal-int pkg syscall (linux-amd64), const SYS_UTIMES ideal-int pkg syscall (linux-amd64), const SYS_VFORK ideal-int pkg syscall (linux-amd64), const SYS_VHANGUP ideal-int pkg syscall (linux-amd64), const SYS_VMSPLICE ideal-int pkg syscall (linux-amd64), const SYS_VSERVER ideal-int pkg syscall (linux-amd64), const SYS_WAIT4 ideal-int pkg syscall (linux-amd64), const SYS_WAITID ideal-int pkg syscall (linux-amd64), const SYS_WRITE ideal-int pkg syscall (linux-amd64), const SYS_WRITEV ideal-int pkg syscall (linux-amd64), const SYS__SYSCTL ideal-int pkg syscall (linux-amd64), const S_BLKSIZE ideal-int pkg syscall (linux-amd64), const S_IEXEC ideal-int pkg syscall (linux-amd64), const S_IREAD ideal-int pkg syscall (linux-amd64), const S_IRGRP ideal-int pkg syscall (linux-amd64), const S_IROTH ideal-int pkg syscall (linux-amd64), const S_IRWXG ideal-int pkg syscall (linux-amd64), const S_IRWXO ideal-int pkg syscall (linux-amd64), const S_IRWXU ideal-int pkg syscall (linux-amd64), const S_IWGRP ideal-int pkg syscall (linux-amd64), const S_IWOTH ideal-int pkg syscall (linux-amd64), const S_IWRITE ideal-int pkg syscall (linux-amd64), const S_IXGRP ideal-int pkg syscall (linux-amd64), const S_IXOTH ideal-int pkg syscall (linux-amd64), const SizeofCmsghdr ideal-int pkg syscall (linux-amd64), const SizeofIPMreq ideal-int pkg syscall (linux-amd64), const SizeofIPMreqn ideal-int pkg syscall (linux-amd64), const SizeofIPv6Mreq ideal-int pkg syscall (linux-amd64), const SizeofIfAddrmsg ideal-int pkg syscall (linux-amd64), const SizeofIfInfomsg ideal-int pkg syscall (linux-amd64), const SizeofInet4Pktinfo ideal-int pkg syscall (linux-amd64), const SizeofInet6Pktinfo ideal-int pkg syscall (linux-amd64), const SizeofInotifyEvent ideal-int pkg syscall (linux-amd64), const SizeofLinger ideal-int pkg syscall (linux-amd64), const SizeofMsghdr ideal-int pkg syscall (linux-amd64), const SizeofNlAttr ideal-int pkg syscall (linux-amd64), const SizeofNlMsgerr ideal-int pkg syscall (linux-amd64), const SizeofNlMsghdr ideal-int pkg syscall (linux-amd64), const SizeofRtAttr ideal-int pkg syscall (linux-amd64), const SizeofRtGenmsg ideal-int pkg syscall (linux-amd64), const SizeofRtMsg ideal-int pkg syscall (linux-amd64), const SizeofRtNexthop ideal-int pkg syscall (linux-amd64), const SizeofSockFilter ideal-int pkg syscall (linux-amd64), const SizeofSockFprog ideal-int pkg syscall (linux-amd64), const SizeofSockaddrAny ideal-int pkg syscall (linux-amd64), const SizeofSockaddrInet4 ideal-int pkg syscall (linux-amd64), const SizeofSockaddrInet6 ideal-int pkg syscall (linux-amd64), const SizeofSockaddrLinklayer ideal-int pkg syscall (linux-amd64), const SizeofSockaddrNetlink ideal-int pkg syscall (linux-amd64), const SizeofSockaddrUnix ideal-int pkg syscall (linux-amd64), const SizeofUcred ideal-int pkg syscall (linux-amd64), const TCGETS ideal-int pkg syscall (linux-amd64), const TCP_CONGESTION ideal-int pkg syscall (linux-amd64), const TCP_CORK ideal-int pkg syscall (linux-amd64), const TCP_DEFER_ACCEPT ideal-int pkg syscall (linux-amd64), const TCP_INFO ideal-int pkg syscall (linux-amd64), const TCP_KEEPCNT ideal-int pkg syscall (linux-amd64), const TCP_KEEPIDLE ideal-int pkg syscall (linux-amd64), const TCP_KEEPINTVL ideal-int pkg syscall (linux-amd64), const TCP_LINGER2 ideal-int pkg syscall (linux-amd64), const TCP_MAXSEG ideal-int pkg syscall (linux-amd64), const TCP_MAXWIN ideal-int pkg syscall (linux-amd64), const TCP_MAX_WINSHIFT ideal-int pkg syscall (linux-amd64), const TCP_MD5SIG ideal-int pkg syscall (linux-amd64), const TCP_MD5SIG_MAXKEYLEN ideal-int pkg syscall (linux-amd64), const TCP_MSS ideal-int pkg syscall (linux-amd64), const TCP_QUICKACK ideal-int pkg syscall (linux-amd64), const TCP_SYNCNT ideal-int pkg syscall (linux-amd64), const TCP_WINDOW_CLAMP ideal-int pkg syscall (linux-amd64), const TCSETS ideal-int pkg syscall (linux-amd64), const TIOCCBRK ideal-int pkg syscall (linux-amd64), const TIOCCONS ideal-int pkg syscall (linux-amd64), const TIOCEXCL ideal-int pkg syscall (linux-amd64), const TIOCGDEV ideal-int pkg syscall (linux-amd64), const TIOCGETD ideal-int pkg syscall (linux-amd64), const TIOCGICOUNT ideal-int pkg syscall (linux-amd64), const TIOCGLCKTRMIOS ideal-int pkg syscall (linux-amd64), const TIOCGPGRP ideal-int pkg syscall (linux-amd64), const TIOCGPTN ideal-int pkg syscall (linux-amd64), const TIOCGRS485 ideal-int pkg syscall (linux-amd64), const TIOCGSERIAL ideal-int pkg syscall (linux-amd64), const TIOCGSID ideal-int pkg syscall (linux-amd64), const TIOCGSOFTCAR ideal-int pkg syscall (linux-amd64), const TIOCGWINSZ ideal-int pkg syscall (linux-amd64), const TIOCINQ ideal-int pkg syscall (linux-amd64), const TIOCLINUX ideal-int pkg syscall (linux-amd64), const TIOCMBIC ideal-int pkg syscall (linux-amd64), const TIOCMBIS ideal-int pkg syscall (linux-amd64), const TIOCMGET ideal-int pkg syscall (linux-amd64), const TIOCMIWAIT ideal-int pkg syscall (linux-amd64), const TIOCMSET ideal-int pkg syscall (linux-amd64), const TIOCM_CAR ideal-int pkg syscall (linux-amd64), const TIOCM_CD ideal-int pkg syscall (linux-amd64), const TIOCM_CTS ideal-int pkg syscall (linux-amd64), const TIOCM_DSR ideal-int pkg syscall (linux-amd64), const TIOCM_DTR ideal-int pkg syscall (linux-amd64), const TIOCM_LE ideal-int pkg syscall (linux-amd64), const TIOCM_RI ideal-int pkg syscall (linux-amd64), const TIOCM_RNG ideal-int pkg syscall (linux-amd64), const TIOCM_RTS ideal-int pkg syscall (linux-amd64), const TIOCM_SR ideal-int pkg syscall (linux-amd64), const TIOCM_ST ideal-int pkg syscall (linux-amd64), const TIOCNOTTY ideal-int pkg syscall (linux-amd64), const TIOCNXCL ideal-int pkg syscall (linux-amd64), const TIOCOUTQ ideal-int pkg syscall (linux-amd64), const TIOCPKT ideal-int pkg syscall (linux-amd64), const TIOCPKT_DATA ideal-int pkg syscall (linux-amd64), const TIOCPKT_DOSTOP ideal-int pkg syscall (linux-amd64), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (linux-amd64), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (linux-amd64), const TIOCPKT_IOCTL ideal-int pkg syscall (linux-amd64), const TIOCPKT_NOSTOP ideal-int pkg syscall (linux-amd64), const TIOCPKT_START ideal-int pkg syscall (linux-amd64), const TIOCPKT_STOP ideal-int pkg syscall (linux-amd64), const TIOCSBRK ideal-int pkg syscall (linux-amd64), const TIOCSCTTY ideal-int pkg syscall (linux-amd64), const TIOCSERCONFIG ideal-int pkg syscall (linux-amd64), const TIOCSERGETLSR ideal-int pkg syscall (linux-amd64), const TIOCSERGETMULTI ideal-int pkg syscall (linux-amd64), const TIOCSERGSTRUCT ideal-int pkg syscall (linux-amd64), const TIOCSERGWILD ideal-int pkg syscall (linux-amd64), const TIOCSERSETMULTI ideal-int pkg syscall (linux-amd64), const TIOCSERSWILD ideal-int pkg syscall (linux-amd64), const TIOCSER_TEMT ideal-int pkg syscall (linux-amd64), const TIOCSETD ideal-int pkg syscall (linux-amd64), const TIOCSIG ideal-int pkg syscall (linux-amd64), const TIOCSLCKTRMIOS ideal-int pkg syscall (linux-amd64), const TIOCSPGRP ideal-int pkg syscall (linux-amd64), const TIOCSPTLCK ideal-int pkg syscall (linux-amd64), const TIOCSRS485 ideal-int pkg syscall (linux-amd64), const TIOCSSERIAL ideal-int pkg syscall (linux-amd64), const TIOCSSOFTCAR ideal-int pkg syscall (linux-amd64), const TIOCSTI ideal-int pkg syscall (linux-amd64), const TIOCSWINSZ ideal-int pkg syscall (linux-amd64), const TOSTOP ideal-int pkg syscall (linux-amd64), const TUNATTACHFILTER ideal-int pkg syscall (linux-amd64), const TUNDETACHFILTER ideal-int pkg syscall (linux-amd64), const TUNGETFEATURES ideal-int pkg syscall (linux-amd64), const TUNGETIFF ideal-int pkg syscall (linux-amd64), const TUNGETSNDBUF ideal-int pkg syscall (linux-amd64), const TUNGETVNETHDRSZ ideal-int pkg syscall (linux-amd64), const TUNSETDEBUG ideal-int pkg syscall (linux-amd64), const TUNSETGROUP ideal-int pkg syscall (linux-amd64), const TUNSETIFF ideal-int pkg syscall (linux-amd64), const TUNSETLINK ideal-int pkg syscall (linux-amd64), const TUNSETNOCSUM ideal-int pkg syscall (linux-amd64), const TUNSETOFFLOAD ideal-int pkg syscall (linux-amd64), const TUNSETOWNER ideal-int pkg syscall (linux-amd64), const TUNSETPERSIST ideal-int pkg syscall (linux-amd64), const TUNSETSNDBUF ideal-int pkg syscall (linux-amd64), const TUNSETTXFILTER ideal-int pkg syscall (linux-amd64), const TUNSETVNETHDRSZ ideal-int pkg syscall (linux-amd64), const VDISCARD ideal-int pkg syscall (linux-amd64), const VEOF ideal-int pkg syscall (linux-amd64), const VEOL ideal-int pkg syscall (linux-amd64), const VEOL2 ideal-int pkg syscall (linux-amd64), const VERASE ideal-int pkg syscall (linux-amd64), const VINTR ideal-int pkg syscall (linux-amd64), const VKILL ideal-int pkg syscall (linux-amd64), const VLNEXT ideal-int pkg syscall (linux-amd64), const VMIN ideal-int pkg syscall (linux-amd64), const VQUIT ideal-int pkg syscall (linux-amd64), const VREPRINT ideal-int pkg syscall (linux-amd64), const VSTART ideal-int pkg syscall (linux-amd64), const VSTOP ideal-int pkg syscall (linux-amd64), const VSUSP ideal-int pkg syscall (linux-amd64), const VSWTC ideal-int pkg syscall (linux-amd64), const VTIME ideal-int pkg syscall (linux-amd64), const VWERASE ideal-int pkg syscall (linux-amd64), const WALL ideal-int pkg syscall (linux-amd64), const WCLONE ideal-int pkg syscall (linux-amd64), const WCONTINUED ideal-int pkg syscall (linux-amd64), const WEXITED ideal-int pkg syscall (linux-amd64), const WNOHANG ideal-int pkg syscall (linux-amd64), const WNOTHREAD ideal-int pkg syscall (linux-amd64), const WNOWAIT ideal-int pkg syscall (linux-amd64), const WORDSIZE ideal-int pkg syscall (linux-amd64), const WSTOPPED ideal-int pkg syscall (linux-amd64), const WUNTRACED ideal-int pkg syscall (linux-amd64), const XCASE ideal-int pkg syscall (linux-amd64), func Accept(int) (int, Sockaddr, error) pkg syscall (linux-amd64), func Access(string, uint32) error pkg syscall (linux-amd64), func Acct(string) error pkg syscall (linux-amd64), func Adjtimex(*Timex) (int, error) pkg syscall (linux-amd64), func AttachLsf(int, []SockFilter) error pkg syscall (linux-amd64), func Bind(int, Sockaddr) error pkg syscall (linux-amd64), func BindToDevice(int, string) error pkg syscall (linux-amd64), func Chroot(string) error pkg syscall (linux-amd64), func Close(int) error pkg syscall (linux-amd64), func CloseOnExec(int) pkg syscall (linux-amd64), func CmsgLen(int) int pkg syscall (linux-amd64), func CmsgSpace(int) int pkg syscall (linux-amd64), func Connect(int, Sockaddr) error pkg syscall (linux-amd64), func Creat(string, uint32) (int, error) pkg syscall (linux-amd64), func DetachLsf(int) error pkg syscall (linux-amd64), func Dup(int) (int, error) pkg syscall (linux-amd64), func Dup2(int, int) error pkg syscall (linux-amd64), func EpollCreate(int) (int, error) pkg syscall (linux-amd64), func EpollCreate1(int) (int, error) pkg syscall (linux-amd64), func EpollCtl(int, int, int, *EpollEvent) error pkg syscall (linux-amd64), func EpollWait(int, []EpollEvent, int) (int, error) pkg syscall (linux-amd64), func Faccessat(int, string, uint32, int) error pkg syscall (linux-amd64), func Fallocate(int, uint32, int64, int64) error pkg syscall (linux-amd64), func Fchdir(int) error pkg syscall (linux-amd64), func Fchmod(int, uint32) error pkg syscall (linux-amd64), func Fchmodat(int, string, uint32, int) error pkg syscall (linux-amd64), func Fchown(int, int, int) error pkg syscall (linux-amd64), func Fchownat(int, string, int, int, int) error pkg syscall (linux-amd64), func Fdatasync(int) error pkg syscall (linux-amd64), func Flock(int, int) error pkg syscall (linux-amd64), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (linux-amd64), func Fstat(int, *Stat_t) error pkg syscall (linux-amd64), func Fstatfs(int, *Statfs_t) error pkg syscall (linux-amd64), func Fsync(int) error pkg syscall (linux-amd64), func Ftruncate(int, int64) error pkg syscall (linux-amd64), func Futimes(int, []Timeval) error pkg syscall (linux-amd64), func Futimesat(int, string, []Timeval) error pkg syscall (linux-amd64), func Getcwd([]uint8) (int, error) pkg syscall (linux-amd64), func Getdents(int, []uint8) (int, error) pkg syscall (linux-amd64), func Getpeername(int) (Sockaddr, error) pkg syscall (linux-amd64), func Getpgid(int) (int, error) pkg syscall (linux-amd64), func Getpgrp() int pkg syscall (linux-amd64), func Getrlimit(int, *Rlimit) error pkg syscall (linux-amd64), func Getrusage(int, *Rusage) error pkg syscall (linux-amd64), func Getsockname(int) (Sockaddr, error) pkg syscall (linux-amd64), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (linux-amd64), func GetsockoptIPMreqn(int, int, int) (*IPMreqn, error) pkg syscall (linux-amd64), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (linux-amd64), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (linux-amd64), func GetsockoptInt(int, int, int) (int, error) pkg syscall (linux-amd64), func Gettid() int pkg syscall (linux-amd64), func InotifyAddWatch(int, string, uint32) (int, error) pkg syscall (linux-amd64), func InotifyInit() (int, error) pkg syscall (linux-amd64), func InotifyInit1(int) (int, error) pkg syscall (linux-amd64), func InotifyRmWatch(int, uint32) (int, error) pkg syscall (linux-amd64), func Ioperm(int, int, int) error pkg syscall (linux-amd64), func Iopl(int) error pkg syscall (linux-amd64), func Kill(int, Signal) error pkg syscall (linux-amd64), func Klogctl(int, []uint8) (int, error) pkg syscall (linux-amd64), func Listen(int, int) error pkg syscall (linux-amd64), func LsfJump(int, int, int, int) *SockFilter pkg syscall (linux-amd64), func LsfSocket(int, int) (int, error) pkg syscall (linux-amd64), func LsfStmt(int, int) *SockFilter pkg syscall (linux-amd64), func Lstat(string, *Stat_t) error pkg syscall (linux-amd64), func Madvise([]uint8, int) error pkg syscall (linux-amd64), func Mkdirat(int, string, uint32) error pkg syscall (linux-amd64), func Mkfifo(string, uint32) error pkg syscall (linux-amd64), func Mknod(string, uint32, int) error pkg syscall (linux-amd64), func Mknodat(int, string, uint32, int) error pkg syscall (linux-amd64), func Mlock([]uint8) error pkg syscall (linux-amd64), func Mlockall(int) error pkg syscall (linux-amd64), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (linux-amd64), func Mount(string, string, string, uintptr, string) error pkg syscall (linux-amd64), func Mprotect([]uint8, int) error pkg syscall (linux-amd64), func Munlock([]uint8) error pkg syscall (linux-amd64), func Munlockall() error pkg syscall (linux-amd64), func Munmap([]uint8) error pkg syscall (linux-amd64), func Nanosleep(*Timespec, *Timespec) error pkg syscall (linux-amd64), func NetlinkRIB(int, int) ([]uint8, error) pkg syscall (linux-amd64), func NsecToTimespec(int64) Timespec pkg syscall (linux-amd64), func Open(string, int, uint32) (int, error) pkg syscall (linux-amd64), func Openat(int, string, int, uint32) (int, error) pkg syscall (linux-amd64), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (linux-amd64), func ParseNetlinkMessage([]uint8) ([]NetlinkMessage, error) pkg syscall (linux-amd64), func ParseNetlinkRouteAttr(*NetlinkMessage) ([]NetlinkRouteAttr, error) pkg syscall (linux-amd64), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (linux-amd64), func ParseUnixCredentials(*SocketControlMessage) (*Ucred, error) pkg syscall (linux-amd64), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (linux-amd64), func Pause() error pkg syscall (linux-amd64), func Pipe([]int) error pkg syscall (linux-amd64), func PivotRoot(string, string) error pkg syscall (linux-amd64), func Pread(int, []uint8, int64) (int, error) pkg syscall (linux-amd64), func PtraceAttach(int) error pkg syscall (linux-amd64), func PtraceCont(int, int) error pkg syscall (linux-amd64), func PtraceDetach(int) error pkg syscall (linux-amd64), func PtraceGetEventMsg(int) (uint, error) pkg syscall (linux-amd64), func PtraceGetRegs(int, *PtraceRegs) error pkg syscall (linux-amd64), func PtracePeekData(int, uintptr, []uint8) (int, error) pkg syscall (linux-amd64), func PtracePeekText(int, uintptr, []uint8) (int, error) pkg syscall (linux-amd64), func PtracePokeData(int, uintptr, []uint8) (int, error) pkg syscall (linux-amd64), func PtracePokeText(int, uintptr, []uint8) (int, error) pkg syscall (linux-amd64), func PtraceSetOptions(int, int) error pkg syscall (linux-amd64), func PtraceSetRegs(int, *PtraceRegs) error pkg syscall (linux-amd64), func PtraceSingleStep(int) error pkg syscall (linux-amd64), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (linux-amd64), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-amd64), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-amd64), func Read(int, []uint8) (int, error) pkg syscall (linux-amd64), func ReadDirent(int, []uint8) (int, error) pkg syscall (linux-amd64), func Reboot(int) error pkg syscall (linux-amd64), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (linux-amd64), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (linux-amd64), func Renameat(int, string, int, string) error pkg syscall (linux-amd64), func Seek(int, int64, int) (int64, error) pkg syscall (linux-amd64), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) (int, error) pkg syscall (linux-amd64), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (linux-amd64), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (linux-amd64), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (linux-amd64), func SetLsfPromisc(string, bool) error pkg syscall (linux-amd64), func SetNonblock(int, bool) error pkg syscall (linux-amd64), func Setdomainname([]uint8) error pkg syscall (linux-amd64), func Setfsgid(int) error pkg syscall (linux-amd64), func Setfsuid(int) error pkg syscall (linux-amd64), func Setgid(int) error pkg syscall (linux-amd64), func Setgroups([]int) error pkg syscall (linux-amd64), func Sethostname([]uint8) error pkg syscall (linux-amd64), func Setpgid(int, int) error pkg syscall (linux-amd64), func Setregid(int, int) error pkg syscall (linux-amd64), func Setresgid(int, int, int) error pkg syscall (linux-amd64), func Setresuid(int, int, int) error pkg syscall (linux-amd64), func Setreuid(int, int) error pkg syscall (linux-amd64), func Setrlimit(int, *Rlimit) error pkg syscall (linux-amd64), func Setsid() (int, error) pkg syscall (linux-amd64), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (linux-amd64), func SetsockoptIPMreqn(int, int, int, *IPMreqn) error pkg syscall (linux-amd64), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (linux-amd64), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (linux-amd64), func SetsockoptInt(int, int, int, int) error pkg syscall (linux-amd64), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (linux-amd64), func SetsockoptString(int, int, int, string) error pkg syscall (linux-amd64), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (linux-amd64), func Settimeofday(*Timeval) error pkg syscall (linux-amd64), func Setuid(int) error pkg syscall (linux-amd64), func Shutdown(int, int) error pkg syscall (linux-amd64), func Socket(int, int, int) (int, error) pkg syscall (linux-amd64), func Socketpair(int, int, int) ([2]int, error) pkg syscall (linux-amd64), func Splice(int, *int64, int, *int64, int, int) (int64, error) pkg syscall (linux-amd64), func Stat(string, *Stat_t) error pkg syscall (linux-amd64), func Statfs(string, *Statfs_t) error pkg syscall (linux-amd64), func StringSlicePtr([]string) []*uint8 pkg syscall (linux-amd64), func Sync() pkg syscall (linux-amd64), func SyncFileRange(int, int64, int64, int) error pkg syscall (linux-amd64), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-amd64), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-amd64), func Sysinfo(*Sysinfo_t) error pkg syscall (linux-amd64), func Tee(int, int, int, int) (int64, error) pkg syscall (linux-amd64), func Tgkill(int, int, Signal) error pkg syscall (linux-amd64), func Time(*Time_t) (Time_t, error) pkg syscall (linux-amd64), func Times(*Tms) (uintptr, error) pkg syscall (linux-amd64), func TimespecToNsec(Timespec) int64 pkg syscall (linux-amd64), func TimevalToNsec(Timeval) int64 pkg syscall (linux-amd64), func Truncate(string, int64) error pkg syscall (linux-amd64), func Umask(int) int pkg syscall (linux-amd64), func Uname(*Utsname) error pkg syscall (linux-amd64), func UnixCredentials(*Ucred) []uint8 pkg syscall (linux-amd64), func UnixRights(...int) []uint8 pkg syscall (linux-amd64), func Unlinkat(int, string) error pkg syscall (linux-amd64), func Unmount(string, int) error pkg syscall (linux-amd64), func Unshare(int) error pkg syscall (linux-amd64), func Ustat(int, *Ustat_t) error pkg syscall (linux-amd64), func Utime(string, *Utimbuf) error pkg syscall (linux-amd64), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (linux-amd64), func Write(int, []uint8) (int, error) pkg syscall (linux-amd64), method (*Cmsghdr) SetLen(int) pkg syscall (linux-amd64), method (*Iovec) SetLen(int) pkg syscall (linux-amd64), method (*Msghdr) SetControllen(int) pkg syscall (linux-amd64), method (*PtraceRegs) PC() uint64 pkg syscall (linux-amd64), method (*PtraceRegs) SetPC(uint64) pkg syscall (linux-amd64), type Cmsghdr struct pkg syscall (linux-amd64), type Cmsghdr struct, Len uint64 pkg syscall (linux-amd64), type Cmsghdr struct, Level int32 pkg syscall (linux-amd64), type Cmsghdr struct, Type int32 pkg syscall (linux-amd64), type Cmsghdr struct, X__cmsg_data [0]uint8 pkg syscall (linux-amd64), type Credential struct pkg syscall (linux-amd64), type Credential struct, Gid uint32 pkg syscall (linux-amd64), type Credential struct, Groups []uint32 pkg syscall (linux-amd64), type Credential struct, Uid uint32 pkg syscall (linux-amd64), type Dirent struct pkg syscall (linux-amd64), type Dirent struct, Ino uint64 pkg syscall (linux-amd64), type Dirent struct, Name [256]int8 pkg syscall (linux-amd64), type Dirent struct, Off int64 pkg syscall (linux-amd64), type Dirent struct, Pad_cgo_0 [5]uint8 pkg syscall (linux-amd64), type Dirent struct, Reclen uint16 pkg syscall (linux-amd64), type Dirent struct, Type uint8 pkg syscall (linux-amd64), type EpollEvent struct pkg syscall (linux-amd64), type EpollEvent struct, Events uint32 pkg syscall (linux-amd64), type EpollEvent struct, Fd int32 pkg syscall (linux-amd64), type EpollEvent struct, Pad int32 pkg syscall (linux-amd64), type FdSet struct pkg syscall (linux-amd64), type FdSet struct, Bits [16]int64 pkg syscall (linux-amd64), type Fsid struct pkg syscall (linux-amd64), type Fsid struct, X__val [2]int32 pkg syscall (linux-amd64), type IPMreqn struct pkg syscall (linux-amd64), type IPMreqn struct, Address [4]uint8 pkg syscall (linux-amd64), type IPMreqn struct, Ifindex int32 pkg syscall (linux-amd64), type IPMreqn struct, Multiaddr [4]uint8 pkg syscall (linux-amd64), type IfAddrmsg struct pkg syscall (linux-amd64), type IfAddrmsg struct, Family uint8 pkg syscall (linux-amd64), type IfAddrmsg struct, Flags uint8 pkg syscall (linux-amd64), type IfAddrmsg struct, Index uint32 pkg syscall (linux-amd64), type IfAddrmsg struct, Prefixlen uint8 pkg syscall (linux-amd64), type IfAddrmsg struct, Scope uint8 pkg syscall (linux-amd64), type IfInfomsg struct pkg syscall (linux-amd64), type IfInfomsg struct, Change uint32 pkg syscall (linux-amd64), type IfInfomsg struct, Family uint8 pkg syscall (linux-amd64), type IfInfomsg struct, Flags uint32 pkg syscall (linux-amd64), type IfInfomsg struct, Index int32 pkg syscall (linux-amd64), type IfInfomsg struct, Type uint16 pkg syscall (linux-amd64), type IfInfomsg struct, X__ifi_pad uint8 pkg syscall (linux-amd64), type Inet4Pktinfo struct pkg syscall (linux-amd64), type Inet4Pktinfo struct, Addr [4]uint8 pkg syscall (linux-amd64), type Inet4Pktinfo struct, Ifindex int32 pkg syscall (linux-amd64), type Inet4Pktinfo struct, Spec_dst [4]uint8 pkg syscall (linux-amd64), type Inet6Pktinfo struct pkg syscall (linux-amd64), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (linux-amd64), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (linux-amd64), type InotifyEvent struct pkg syscall (linux-amd64), type InotifyEvent struct, Cookie uint32 pkg syscall (linux-amd64), type InotifyEvent struct, Len uint32 pkg syscall (linux-amd64), type InotifyEvent struct, Mask uint32 pkg syscall (linux-amd64), type InotifyEvent struct, Name [0]uint8 pkg syscall (linux-amd64), type InotifyEvent struct, Wd int32 pkg syscall (linux-amd64), type Iovec struct pkg syscall (linux-amd64), type Iovec struct, Base *uint8 pkg syscall (linux-amd64), type Iovec struct, Len uint64 pkg syscall (linux-amd64), type Msghdr struct pkg syscall (linux-amd64), type Msghdr struct, Control *uint8 pkg syscall (linux-amd64), type Msghdr struct, Controllen uint64 pkg syscall (linux-amd64), type Msghdr struct, Flags int32 pkg syscall (linux-amd64), type Msghdr struct, Iov *Iovec pkg syscall (linux-amd64), type Msghdr struct, Iovlen uint64 pkg syscall (linux-amd64), type Msghdr struct, Name *uint8 pkg syscall (linux-amd64), type Msghdr struct, Namelen uint32 pkg syscall (linux-amd64), type Msghdr struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-amd64), type Msghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (linux-amd64), type NetlinkMessage struct pkg syscall (linux-amd64), type NetlinkMessage struct, Data []uint8 pkg syscall (linux-amd64), type NetlinkMessage struct, Header NlMsghdr pkg syscall (linux-amd64), type NetlinkRouteAttr struct pkg syscall (linux-amd64), type NetlinkRouteAttr struct, Attr RtAttr pkg syscall (linux-amd64), type NetlinkRouteAttr struct, Value []uint8 pkg syscall (linux-amd64), type NetlinkRouteRequest struct pkg syscall (linux-amd64), type NetlinkRouteRequest struct, Data RtGenmsg pkg syscall (linux-amd64), type NetlinkRouteRequest struct, Header NlMsghdr pkg syscall (linux-amd64), type NlAttr struct pkg syscall (linux-amd64), type NlAttr struct, Len uint16 pkg syscall (linux-amd64), type NlAttr struct, Type uint16 pkg syscall (linux-amd64), type NlMsgerr struct pkg syscall (linux-amd64), type NlMsgerr struct, Error int32 pkg syscall (linux-amd64), type NlMsgerr struct, Msg NlMsghdr pkg syscall (linux-amd64), type NlMsghdr struct pkg syscall (linux-amd64), type NlMsghdr struct, Flags uint16 pkg syscall (linux-amd64), type NlMsghdr struct, Len uint32 pkg syscall (linux-amd64), type NlMsghdr struct, Pid uint32 pkg syscall (linux-amd64), type NlMsghdr struct, Seq uint32 pkg syscall (linux-amd64), type NlMsghdr struct, Type uint16 pkg syscall (linux-amd64), type PtraceRegs struct pkg syscall (linux-amd64), type PtraceRegs struct, Cs uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Ds uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Eflags uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Es uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Fs uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Fs_base uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Gs uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Gs_base uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Orig_rax uint64 pkg syscall (linux-amd64), type PtraceRegs struct, R10 uint64 pkg syscall (linux-amd64), type PtraceRegs struct, R11 uint64 pkg syscall (linux-amd64), type PtraceRegs struct, R12 uint64 pkg syscall (linux-amd64), type PtraceRegs struct, R13 uint64 pkg syscall (linux-amd64), type PtraceRegs struct, R14 uint64 pkg syscall (linux-amd64), type PtraceRegs struct, R15 uint64 pkg syscall (linux-amd64), type PtraceRegs struct, R8 uint64 pkg syscall (linux-amd64), type PtraceRegs struct, R9 uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Rax uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Rbp uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Rbx uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Rcx uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Rdi uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Rdx uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Rip uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Rsi uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Rsp uint64 pkg syscall (linux-amd64), type PtraceRegs struct, Ss uint64 pkg syscall (linux-amd64), type RawSockaddr struct, Data [14]int8 pkg syscall (linux-amd64), type RawSockaddr struct, Family uint16 pkg syscall (linux-amd64), type RawSockaddrAny struct, Pad [96]int8 pkg syscall (linux-amd64), type RawSockaddrInet4 struct, Family uint16 pkg syscall (linux-amd64), type RawSockaddrInet4 struct, Zero [8]uint8 pkg syscall (linux-amd64), type RawSockaddrInet6 struct pkg syscall (linux-amd64), type RawSockaddrInet6 struct, Addr [16]uint8 pkg syscall (linux-amd64), type RawSockaddrInet6 struct, Family uint16 pkg syscall (linux-amd64), type RawSockaddrInet6 struct, Flowinfo uint32 pkg syscall (linux-amd64), type RawSockaddrInet6 struct, Port uint16 pkg syscall (linux-amd64), type RawSockaddrInet6 struct, Scope_id uint32 pkg syscall (linux-amd64), type RawSockaddrLinklayer struct pkg syscall (linux-amd64), type RawSockaddrLinklayer struct, Addr [8]uint8 pkg syscall (linux-amd64), type RawSockaddrLinklayer struct, Family uint16 pkg syscall (linux-amd64), type RawSockaddrLinklayer struct, Halen uint8 pkg syscall (linux-amd64), type RawSockaddrLinklayer struct, Hatype uint16 pkg syscall (linux-amd64), type RawSockaddrLinklayer struct, Ifindex int32 pkg syscall (linux-amd64), type RawSockaddrLinklayer struct, Pkttype uint8 pkg syscall (linux-amd64), type RawSockaddrLinklayer struct, Protocol uint16 pkg syscall (linux-amd64), type RawSockaddrNetlink struct pkg syscall (linux-amd64), type RawSockaddrNetlink struct, Family uint16 pkg syscall (linux-amd64), type RawSockaddrNetlink struct, Groups uint32 pkg syscall (linux-amd64), type RawSockaddrNetlink struct, Pad uint16 pkg syscall (linux-amd64), type RawSockaddrNetlink struct, Pid uint32 pkg syscall (linux-amd64), type RawSockaddrUnix struct pkg syscall (linux-amd64), type RawSockaddrUnix struct, Family uint16 pkg syscall (linux-amd64), type RawSockaddrUnix struct, Path [108]int8 pkg syscall (linux-amd64), type Rlimit struct pkg syscall (linux-amd64), type Rlimit struct, Cur uint64 pkg syscall (linux-amd64), type Rlimit struct, Max uint64 pkg syscall (linux-amd64), type RtAttr struct pkg syscall (linux-amd64), type RtAttr struct, Len uint16 pkg syscall (linux-amd64), type RtAttr struct, Type uint16 pkg syscall (linux-amd64), type RtGenmsg struct pkg syscall (linux-amd64), type RtGenmsg struct, Family uint8 pkg syscall (linux-amd64), type RtMsg struct pkg syscall (linux-amd64), type RtMsg struct, Dst_len uint8 pkg syscall (linux-amd64), type RtMsg struct, Family uint8 pkg syscall (linux-amd64), type RtMsg struct, Flags uint32 pkg syscall (linux-amd64), type RtMsg struct, Protocol uint8 pkg syscall (linux-amd64), type RtMsg struct, Scope uint8 pkg syscall (linux-amd64), type RtMsg struct, Src_len uint8 pkg syscall (linux-amd64), type RtMsg struct, Table uint8 pkg syscall (linux-amd64), type RtMsg struct, Tos uint8 pkg syscall (linux-amd64), type RtMsg struct, Type uint8 pkg syscall (linux-amd64), type RtNexthop struct pkg syscall (linux-amd64), type RtNexthop struct, Flags uint8 pkg syscall (linux-amd64), type RtNexthop struct, Hops uint8 pkg syscall (linux-amd64), type RtNexthop struct, Ifindex int32 pkg syscall (linux-amd64), type RtNexthop struct, Len uint16 pkg syscall (linux-amd64), type Rusage struct, Idrss int64 pkg syscall (linux-amd64), type Rusage struct, Inblock int64 pkg syscall (linux-amd64), type Rusage struct, Isrss int64 pkg syscall (linux-amd64), type Rusage struct, Ixrss int64 pkg syscall (linux-amd64), type Rusage struct, Majflt int64 pkg syscall (linux-amd64), type Rusage struct, Maxrss int64 pkg syscall (linux-amd64), type Rusage struct, Minflt int64 pkg syscall (linux-amd64), type Rusage struct, Msgrcv int64 pkg syscall (linux-amd64), type Rusage struct, Msgsnd int64 pkg syscall (linux-amd64), type Rusage struct, Nivcsw int64 pkg syscall (linux-amd64), type Rusage struct, Nsignals int64 pkg syscall (linux-amd64), type Rusage struct, Nswap int64 pkg syscall (linux-amd64), type Rusage struct, Nvcsw int64 pkg syscall (linux-amd64), type Rusage struct, Oublock int64 pkg syscall (linux-amd64), type Rusage struct, Stime Timeval pkg syscall (linux-amd64), type Rusage struct, Utime Timeval pkg syscall (linux-amd64), type SockFilter struct pkg syscall (linux-amd64), type SockFilter struct, Code uint16 pkg syscall (linux-amd64), type SockFilter struct, Jf uint8 pkg syscall (linux-amd64), type SockFilter struct, Jt uint8 pkg syscall (linux-amd64), type SockFilter struct, K uint32 pkg syscall (linux-amd64), type SockFprog struct pkg syscall (linux-amd64), type SockFprog struct, Filter *SockFilter pkg syscall (linux-amd64), type SockFprog struct, Len uint16 pkg syscall (linux-amd64), type SockFprog struct, Pad_cgo_0 [6]uint8 pkg syscall (linux-amd64), type SockaddrLinklayer struct pkg syscall (linux-amd64), type SockaddrLinklayer struct, Addr [8]uint8 pkg syscall (linux-amd64), type SockaddrLinklayer struct, Halen uint8 pkg syscall (linux-amd64), type SockaddrLinklayer struct, Hatype uint16 pkg syscall (linux-amd64), type SockaddrLinklayer struct, Ifindex int pkg syscall (linux-amd64), type SockaddrLinklayer struct, Pkttype uint8 pkg syscall (linux-amd64), type SockaddrLinklayer struct, Protocol uint16 pkg syscall (linux-amd64), type SockaddrNetlink struct pkg syscall (linux-amd64), type SockaddrNetlink struct, Family uint16 pkg syscall (linux-amd64), type SockaddrNetlink struct, Groups uint32 pkg syscall (linux-amd64), type SockaddrNetlink struct, Pad uint16 pkg syscall (linux-amd64), type SockaddrNetlink struct, Pid uint32 pkg syscall (linux-amd64), type SocketControlMessage struct pkg syscall (linux-amd64), type SocketControlMessage struct, Data []uint8 pkg syscall (linux-amd64), type SocketControlMessage struct, Header Cmsghdr pkg syscall (linux-amd64), type Stat_t struct pkg syscall (linux-amd64), type Stat_t struct, Atim Timespec pkg syscall (linux-amd64), type Stat_t struct, Blksize int64 pkg syscall (linux-amd64), type Stat_t struct, Blocks int64 pkg syscall (linux-amd64), type Stat_t struct, Ctim Timespec pkg syscall (linux-amd64), type Stat_t struct, Dev uint64 pkg syscall (linux-amd64), type Stat_t struct, Gid uint32 pkg syscall (linux-amd64), type Stat_t struct, Ino uint64 pkg syscall (linux-amd64), type Stat_t struct, Mode uint32 pkg syscall (linux-amd64), type Stat_t struct, Mtim Timespec pkg syscall (linux-amd64), type Stat_t struct, Nlink uint64 pkg syscall (linux-amd64), type Stat_t struct, Rdev uint64 pkg syscall (linux-amd64), type Stat_t struct, Size int64 pkg syscall (linux-amd64), type Stat_t struct, Uid uint32 pkg syscall (linux-amd64), type Stat_t struct, X__pad0 int32 pkg syscall (linux-amd64), type Stat_t struct, X__unused [3]int64 pkg syscall (linux-amd64), type Statfs_t struct pkg syscall (linux-amd64), type Statfs_t struct, Bavail uint64 pkg syscall (linux-amd64), type Statfs_t struct, Bfree uint64 pkg syscall (linux-amd64), type Statfs_t struct, Blocks uint64 pkg syscall (linux-amd64), type Statfs_t struct, Bsize int64 pkg syscall (linux-amd64), type Statfs_t struct, Ffree uint64 pkg syscall (linux-amd64), type Statfs_t struct, Files uint64 pkg syscall (linux-amd64), type Statfs_t struct, Flags int64 pkg syscall (linux-amd64), type Statfs_t struct, Frsize int64 pkg syscall (linux-amd64), type Statfs_t struct, Fsid Fsid pkg syscall (linux-amd64), type Statfs_t struct, Namelen int64 pkg syscall (linux-amd64), type Statfs_t struct, Spare [4]int64 pkg syscall (linux-amd64), type Statfs_t struct, Type int64 pkg syscall (linux-amd64), type SysProcAttr struct, Chroot string pkg syscall (linux-amd64), type SysProcAttr struct, Credential *Credential pkg syscall (linux-amd64), type SysProcAttr struct, Noctty bool pkg syscall (linux-amd64), type SysProcAttr struct, Pdeathsig Signal pkg syscall (linux-amd64), type SysProcAttr struct, Ptrace bool pkg syscall (linux-amd64), type SysProcAttr struct, Setctty bool pkg syscall (linux-amd64), type SysProcAttr struct, Setpgid bool pkg syscall (linux-amd64), type SysProcAttr struct, Setsid bool pkg syscall (linux-amd64), type Sysinfo_t struct pkg syscall (linux-amd64), type Sysinfo_t struct, Bufferram uint64 pkg syscall (linux-amd64), type Sysinfo_t struct, Freehigh uint64 pkg syscall (linux-amd64), type Sysinfo_t struct, Freeram uint64 pkg syscall (linux-amd64), type Sysinfo_t struct, Freeswap uint64 pkg syscall (linux-amd64), type Sysinfo_t struct, Loads [3]uint64 pkg syscall (linux-amd64), type Sysinfo_t struct, Pad uint16 pkg syscall (linux-amd64), type Sysinfo_t struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-amd64), type Sysinfo_t struct, Pad_cgo_1 [4]uint8 pkg syscall (linux-amd64), type Sysinfo_t struct, Procs uint16 pkg syscall (linux-amd64), type Sysinfo_t struct, Sharedram uint64 pkg syscall (linux-amd64), type Sysinfo_t struct, Totalhigh uint64 pkg syscall (linux-amd64), type Sysinfo_t struct, Totalram uint64 pkg syscall (linux-amd64), type Sysinfo_t struct, Totalswap uint64 pkg syscall (linux-amd64), type Sysinfo_t struct, Unit uint32 pkg syscall (linux-amd64), type Sysinfo_t struct, Uptime int64 pkg syscall (linux-amd64), type Sysinfo_t struct, X_f [0]uint8 pkg syscall (linux-amd64), type Termios struct pkg syscall (linux-amd64), type Termios struct, Cc [32]uint8 pkg syscall (linux-amd64), type Termios struct, Cflag uint32 pkg syscall (linux-amd64), type Termios struct, Iflag uint32 pkg syscall (linux-amd64), type Termios struct, Ispeed uint32 pkg syscall (linux-amd64), type Termios struct, Lflag uint32 pkg syscall (linux-amd64), type Termios struct, Line uint8 pkg syscall (linux-amd64), type Termios struct, Oflag uint32 pkg syscall (linux-amd64), type Termios struct, Ospeed uint32 pkg syscall (linux-amd64), type Termios struct, Pad_cgo_0 [3]uint8 pkg syscall (linux-amd64), type Time_t int64 pkg syscall (linux-amd64), type Timespec struct, Nsec int64 pkg syscall (linux-amd64), type Timespec struct, Sec int64 pkg syscall (linux-amd64), type Timeval struct, Sec int64 pkg syscall (linux-amd64), type Timeval struct, Usec int64 pkg syscall (linux-amd64), type Timex struct pkg syscall (linux-amd64), type Timex struct, Calcnt int64 pkg syscall (linux-amd64), type Timex struct, Constant int64 pkg syscall (linux-amd64), type Timex struct, Errcnt int64 pkg syscall (linux-amd64), type Timex struct, Esterror int64 pkg syscall (linux-amd64), type Timex struct, Freq int64 pkg syscall (linux-amd64), type Timex struct, Jitcnt int64 pkg syscall (linux-amd64), type Timex struct, Jitter int64 pkg syscall (linux-amd64), type Timex struct, Maxerror int64 pkg syscall (linux-amd64), type Timex struct, Modes uint32 pkg syscall (linux-amd64), type Timex struct, Offset int64 pkg syscall (linux-amd64), type Timex struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-amd64), type Timex struct, Pad_cgo_1 [4]uint8 pkg syscall (linux-amd64), type Timex struct, Pad_cgo_2 [4]uint8 pkg syscall (linux-amd64), type Timex struct, Pad_cgo_3 [44]uint8 pkg syscall (linux-amd64), type Timex struct, Ppsfreq int64 pkg syscall (linux-amd64), type Timex struct, Precision int64 pkg syscall (linux-amd64), type Timex struct, Shift int32 pkg syscall (linux-amd64), type Timex struct, Stabil int64 pkg syscall (linux-amd64), type Timex struct, Status int32 pkg syscall (linux-amd64), type Timex struct, Stbcnt int64 pkg syscall (linux-amd64), type Timex struct, Tai int32 pkg syscall (linux-amd64), type Timex struct, Tick int64 pkg syscall (linux-amd64), type Timex struct, Time Timeval pkg syscall (linux-amd64), type Timex struct, Tolerance int64 pkg syscall (linux-amd64), type Tms struct pkg syscall (linux-amd64), type Tms struct, Cstime int64 pkg syscall (linux-amd64), type Tms struct, Cutime int64 pkg syscall (linux-amd64), type Tms struct, Stime int64 pkg syscall (linux-amd64), type Tms struct, Utime int64 pkg syscall (linux-amd64), type Ucred struct pkg syscall (linux-amd64), type Ucred struct, Gid uint32 pkg syscall (linux-amd64), type Ucred struct, Pid int32 pkg syscall (linux-amd64), type Ucred struct, Uid uint32 pkg syscall (linux-amd64), type Ustat_t struct pkg syscall (linux-amd64), type Ustat_t struct, Fname [6]int8 pkg syscall (linux-amd64), type Ustat_t struct, Fpack [6]int8 pkg syscall (linux-amd64), type Ustat_t struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-amd64), type Ustat_t struct, Pad_cgo_1 [4]uint8 pkg syscall (linux-amd64), type Ustat_t struct, Tfree int32 pkg syscall (linux-amd64), type Ustat_t struct, Tinode uint64 pkg syscall (linux-amd64), type Utimbuf struct pkg syscall (linux-amd64), type Utimbuf struct, Actime int64 pkg syscall (linux-amd64), type Utimbuf struct, Modtime int64 pkg syscall (linux-amd64), type Utsname struct pkg syscall (linux-amd64), type Utsname struct, Domainname [65]int8 pkg syscall (linux-amd64), type Utsname struct, Machine [65]int8 pkg syscall (linux-amd64), type Utsname struct, Nodename [65]int8 pkg syscall (linux-amd64), type Utsname struct, Release [65]int8 pkg syscall (linux-amd64), type Utsname struct, Sysname [65]int8 pkg syscall (linux-amd64), type Utsname struct, Version [65]int8 pkg syscall (linux-amd64), type WaitStatus uint32 pkg syscall (linux-amd64), var Stderr int pkg syscall (linux-amd64), var Stdin int pkg syscall (linux-amd64), var Stdout int pkg syscall (linux-amd64-cgo), const AF_ALG ideal-int pkg syscall (linux-amd64-cgo), const AF_APPLETALK ideal-int pkg syscall (linux-amd64-cgo), const AF_ASH ideal-int pkg syscall (linux-amd64-cgo), const AF_ATMPVC ideal-int pkg syscall (linux-amd64-cgo), const AF_ATMSVC ideal-int pkg syscall (linux-amd64-cgo), const AF_AX25 ideal-int pkg syscall (linux-amd64-cgo), const AF_BLUETOOTH ideal-int pkg syscall (linux-amd64-cgo), const AF_BRIDGE ideal-int pkg syscall (linux-amd64-cgo), const AF_CAIF ideal-int pkg syscall (linux-amd64-cgo), const AF_CAN ideal-int pkg syscall (linux-amd64-cgo), const AF_DECnet ideal-int pkg syscall (linux-amd64-cgo), const AF_ECONET ideal-int pkg syscall (linux-amd64-cgo), const AF_FILE ideal-int pkg syscall (linux-amd64-cgo), const AF_IEEE802154 ideal-int pkg syscall (linux-amd64-cgo), const AF_IPX ideal-int pkg syscall (linux-amd64-cgo), const AF_IRDA ideal-int pkg syscall (linux-amd64-cgo), const AF_ISDN ideal-int pkg syscall (linux-amd64-cgo), const AF_IUCV ideal-int pkg syscall (linux-amd64-cgo), const AF_KEY ideal-int pkg syscall (linux-amd64-cgo), const AF_LLC ideal-int pkg syscall (linux-amd64-cgo), const AF_LOCAL ideal-int pkg syscall (linux-amd64-cgo), const AF_MAX ideal-int pkg syscall (linux-amd64-cgo), const AF_NETBEUI ideal-int pkg syscall (linux-amd64-cgo), const AF_NETLINK ideal-int pkg syscall (linux-amd64-cgo), const AF_NETROM ideal-int pkg syscall (linux-amd64-cgo), const AF_PACKET ideal-int pkg syscall (linux-amd64-cgo), const AF_PHONET ideal-int pkg syscall (linux-amd64-cgo), const AF_PPPOX ideal-int pkg syscall (linux-amd64-cgo), const AF_RDS ideal-int pkg syscall (linux-amd64-cgo), const AF_ROSE ideal-int pkg syscall (linux-amd64-cgo), const AF_ROUTE ideal-int pkg syscall (linux-amd64-cgo), const AF_RXRPC ideal-int pkg syscall (linux-amd64-cgo), const AF_SECURITY ideal-int pkg syscall (linux-amd64-cgo), const AF_SNA ideal-int pkg syscall (linux-amd64-cgo), const AF_TIPC ideal-int pkg syscall (linux-amd64-cgo), const AF_WANPIPE ideal-int pkg syscall (linux-amd64-cgo), const AF_X25 ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_ADAPT ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_APPLETLK ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_ARCNET ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_ASH ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_ATM ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_AX25 ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_BIF ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_CHAOS ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_CISCO ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_CSLIP ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_CSLIP6 ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_DDCMP ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_DLCI ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_ECONET ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_EETHER ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_ETHER ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_EUI64 ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_FCAL ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_FCFABRIC ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_FCPL ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_FCPP ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_FDDI ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_FRAD ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_HDLC ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_HIPPI ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_HWX25 ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE1394 ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE802 ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE80211 ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE80211_PRISM ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE80211_RADIOTAP ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE802154 ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE802154_PHY ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE802_TR ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_INFINIBAND ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_IPDDP ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_IPGRE ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_IRDA ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_LAPB ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_LOCALTLK ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_LOOPBACK ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_METRICOM ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_NETROM ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_NONE ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_PIMREG ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_PPP ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_PRONET ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_RAWHDLC ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_ROSE ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_RSRVD ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_SIT ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_SKIP ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_SLIP ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_SLIP6 ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_TUNNEL ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_TUNNEL6 ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_VOID ideal-int pkg syscall (linux-amd64-cgo), const ARPHRD_X25 ideal-int pkg syscall (linux-amd64-cgo), const B0 ideal-int pkg syscall (linux-amd64-cgo), const B1000000 ideal-int pkg syscall (linux-amd64-cgo), const B110 ideal-int pkg syscall (linux-amd64-cgo), const B115200 ideal-int pkg syscall (linux-amd64-cgo), const B1152000 ideal-int pkg syscall (linux-amd64-cgo), const B1200 ideal-int pkg syscall (linux-amd64-cgo), const B134 ideal-int pkg syscall (linux-amd64-cgo), const B150 ideal-int pkg syscall (linux-amd64-cgo), const B1500000 ideal-int pkg syscall (linux-amd64-cgo), const B1800 ideal-int pkg syscall (linux-amd64-cgo), const B19200 ideal-int pkg syscall (linux-amd64-cgo), const B200 ideal-int pkg syscall (linux-amd64-cgo), const B2000000 ideal-int pkg syscall (linux-amd64-cgo), const B230400 ideal-int pkg syscall (linux-amd64-cgo), const B2400 ideal-int pkg syscall (linux-amd64-cgo), const B2500000 ideal-int pkg syscall (linux-amd64-cgo), const B300 ideal-int pkg syscall (linux-amd64-cgo), const B3000000 ideal-int pkg syscall (linux-amd64-cgo), const B3500000 ideal-int pkg syscall (linux-amd64-cgo), const B38400 ideal-int pkg syscall (linux-amd64-cgo), const B4000000 ideal-int pkg syscall (linux-amd64-cgo), const B460800 ideal-int pkg syscall (linux-amd64-cgo), const B4800 ideal-int pkg syscall (linux-amd64-cgo), const B50 ideal-int pkg syscall (linux-amd64-cgo), const B500000 ideal-int pkg syscall (linux-amd64-cgo), const B57600 ideal-int pkg syscall (linux-amd64-cgo), const B576000 ideal-int pkg syscall (linux-amd64-cgo), const B600 ideal-int pkg syscall (linux-amd64-cgo), const B75 ideal-int pkg syscall (linux-amd64-cgo), const B921600 ideal-int pkg syscall (linux-amd64-cgo), const B9600 ideal-int pkg syscall (linux-amd64-cgo), const BPF_A ideal-int pkg syscall (linux-amd64-cgo), const BPF_ABS ideal-int pkg syscall (linux-amd64-cgo), const BPF_ADD ideal-int pkg syscall (linux-amd64-cgo), const BPF_ALU ideal-int pkg syscall (linux-amd64-cgo), const BPF_AND ideal-int pkg syscall (linux-amd64-cgo), const BPF_B ideal-int pkg syscall (linux-amd64-cgo), const BPF_DIV ideal-int pkg syscall (linux-amd64-cgo), const BPF_H ideal-int pkg syscall (linux-amd64-cgo), const BPF_IMM ideal-int pkg syscall (linux-amd64-cgo), const BPF_IND ideal-int pkg syscall (linux-amd64-cgo), const BPF_JA ideal-int pkg syscall (linux-amd64-cgo), const BPF_JEQ ideal-int pkg syscall (linux-amd64-cgo), const BPF_JGE ideal-int pkg syscall (linux-amd64-cgo), const BPF_JGT ideal-int pkg syscall (linux-amd64-cgo), const BPF_JMP ideal-int pkg syscall (linux-amd64-cgo), const BPF_JSET ideal-int pkg syscall (linux-amd64-cgo), const BPF_K ideal-int pkg syscall (linux-amd64-cgo), const BPF_LD ideal-int pkg syscall (linux-amd64-cgo), const BPF_LDX ideal-int pkg syscall (linux-amd64-cgo), const BPF_LEN ideal-int pkg syscall (linux-amd64-cgo), const BPF_LSH ideal-int pkg syscall (linux-amd64-cgo), const BPF_MAJOR_VERSION ideal-int pkg syscall (linux-amd64-cgo), const BPF_MAXINSNS ideal-int pkg syscall (linux-amd64-cgo), const BPF_MEM ideal-int pkg syscall (linux-amd64-cgo), const BPF_MEMWORDS ideal-int pkg syscall (linux-amd64-cgo), const BPF_MINOR_VERSION ideal-int pkg syscall (linux-amd64-cgo), const BPF_MISC ideal-int pkg syscall (linux-amd64-cgo), const BPF_MSH ideal-int pkg syscall (linux-amd64-cgo), const BPF_MUL ideal-int pkg syscall (linux-amd64-cgo), const BPF_NEG ideal-int pkg syscall (linux-amd64-cgo), const BPF_OR ideal-int pkg syscall (linux-amd64-cgo), const BPF_RET ideal-int pkg syscall (linux-amd64-cgo), const BPF_RSH ideal-int pkg syscall (linux-amd64-cgo), const BPF_ST ideal-int pkg syscall (linux-amd64-cgo), const BPF_STX ideal-int pkg syscall (linux-amd64-cgo), const BPF_SUB ideal-int pkg syscall (linux-amd64-cgo), const BPF_TAX ideal-int pkg syscall (linux-amd64-cgo), const BPF_TXA ideal-int pkg syscall (linux-amd64-cgo), const BPF_W ideal-int pkg syscall (linux-amd64-cgo), const BPF_X ideal-int pkg syscall (linux-amd64-cgo), const BRKINT ideal-int pkg syscall (linux-amd64-cgo), const CLOCAL ideal-int pkg syscall (linux-amd64-cgo), const CREAD ideal-int pkg syscall (linux-amd64-cgo), const CS5 ideal-int pkg syscall (linux-amd64-cgo), const CS6 ideal-int pkg syscall (linux-amd64-cgo), const CS7 ideal-int pkg syscall (linux-amd64-cgo), const CS8 ideal-int pkg syscall (linux-amd64-cgo), const CSIZE ideal-int pkg syscall (linux-amd64-cgo), const CSTOPB ideal-int pkg syscall (linux-amd64-cgo), const DT_BLK ideal-int pkg syscall (linux-amd64-cgo), const DT_CHR ideal-int pkg syscall (linux-amd64-cgo), const DT_DIR ideal-int pkg syscall (linux-amd64-cgo), const DT_FIFO ideal-int pkg syscall (linux-amd64-cgo), const DT_LNK ideal-int pkg syscall (linux-amd64-cgo), const DT_REG ideal-int pkg syscall (linux-amd64-cgo), const DT_SOCK ideal-int pkg syscall (linux-amd64-cgo), const DT_UNKNOWN ideal-int pkg syscall (linux-amd64-cgo), const DT_WHT ideal-int pkg syscall (linux-amd64-cgo), const EADV Errno pkg syscall (linux-amd64-cgo), const EBADE Errno pkg syscall (linux-amd64-cgo), const EBADFD Errno pkg syscall (linux-amd64-cgo), const EBADMSG Errno pkg syscall (linux-amd64-cgo), const EBADR Errno pkg syscall (linux-amd64-cgo), const EBADRQC Errno pkg syscall (linux-amd64-cgo), const EBADSLT Errno pkg syscall (linux-amd64-cgo), const EBFONT Errno pkg syscall (linux-amd64-cgo), const ECHO ideal-int pkg syscall (linux-amd64-cgo), const ECHOCTL ideal-int pkg syscall (linux-amd64-cgo), const ECHOE ideal-int pkg syscall (linux-amd64-cgo), const ECHOK ideal-int pkg syscall (linux-amd64-cgo), const ECHOKE ideal-int pkg syscall (linux-amd64-cgo), const ECHONL ideal-int pkg syscall (linux-amd64-cgo), const ECHOPRT ideal-int pkg syscall (linux-amd64-cgo), const ECHRNG Errno pkg syscall (linux-amd64-cgo), const ECOMM Errno pkg syscall (linux-amd64-cgo), const EDEADLOCK Errno pkg syscall (linux-amd64-cgo), const EDOTDOT Errno pkg syscall (linux-amd64-cgo), const EISNAM Errno pkg syscall (linux-amd64-cgo), const EKEYEXPIRED Errno pkg syscall (linux-amd64-cgo), const EKEYREJECTED Errno pkg syscall (linux-amd64-cgo), const EKEYREVOKED Errno pkg syscall (linux-amd64-cgo), const EL2HLT Errno pkg syscall (linux-amd64-cgo), const EL2NSYNC Errno pkg syscall (linux-amd64-cgo), const EL3HLT Errno pkg syscall (linux-amd64-cgo), const EL3RST Errno pkg syscall (linux-amd64-cgo), const ELIBACC Errno pkg syscall (linux-amd64-cgo), const ELIBBAD Errno pkg syscall (linux-amd64-cgo), const ELIBEXEC Errno pkg syscall (linux-amd64-cgo), const ELIBMAX Errno pkg syscall (linux-amd64-cgo), const ELIBSCN Errno pkg syscall (linux-amd64-cgo), const ELNRNG Errno pkg syscall (linux-amd64-cgo), const EMEDIUMTYPE Errno pkg syscall (linux-amd64-cgo), const EMULTIHOP Errno pkg syscall (linux-amd64-cgo), const ENAVAIL Errno pkg syscall (linux-amd64-cgo), const ENOANO Errno pkg syscall (linux-amd64-cgo), const ENOCSI Errno pkg syscall (linux-amd64-cgo), const ENODATA Errno pkg syscall (linux-amd64-cgo), const ENOKEY Errno pkg syscall (linux-amd64-cgo), const ENOLINK Errno pkg syscall (linux-amd64-cgo), const ENOMEDIUM Errno pkg syscall (linux-amd64-cgo), const ENONET Errno pkg syscall (linux-amd64-cgo), const ENOPKG Errno pkg syscall (linux-amd64-cgo), const ENOSR Errno pkg syscall (linux-amd64-cgo), const ENOSTR Errno pkg syscall (linux-amd64-cgo), const ENOTNAM Errno pkg syscall (linux-amd64-cgo), const ENOTRECOVERABLE Errno pkg syscall (linux-amd64-cgo), const ENOTUNIQ Errno pkg syscall (linux-amd64-cgo), const EOWNERDEAD Errno pkg syscall (linux-amd64-cgo), const EPOLLERR ideal-int pkg syscall (linux-amd64-cgo), const EPOLLET ideal-int pkg syscall (linux-amd64-cgo), const EPOLLHUP ideal-int pkg syscall (linux-amd64-cgo), const EPOLLIN ideal-int pkg syscall (linux-amd64-cgo), const EPOLLMSG ideal-int pkg syscall (linux-amd64-cgo), const EPOLLONESHOT ideal-int pkg syscall (linux-amd64-cgo), const EPOLLOUT ideal-int pkg syscall (linux-amd64-cgo), const EPOLLPRI ideal-int pkg syscall (linux-amd64-cgo), const EPOLLRDBAND ideal-int pkg syscall (linux-amd64-cgo), const EPOLLRDHUP ideal-int pkg syscall (linux-amd64-cgo), const EPOLLRDNORM ideal-int pkg syscall (linux-amd64-cgo), const EPOLLWRBAND ideal-int pkg syscall (linux-amd64-cgo), const EPOLLWRNORM ideal-int pkg syscall (linux-amd64-cgo), const EPOLL_CLOEXEC ideal-int pkg syscall (linux-amd64-cgo), const EPOLL_CTL_ADD ideal-int pkg syscall (linux-amd64-cgo), const EPOLL_CTL_DEL ideal-int pkg syscall (linux-amd64-cgo), const EPOLL_CTL_MOD ideal-int pkg syscall (linux-amd64-cgo), const EPOLL_NONBLOCK ideal-int pkg syscall (linux-amd64-cgo), const EPROTO Errno pkg syscall (linux-amd64-cgo), const EREMCHG Errno pkg syscall (linux-amd64-cgo), const EREMOTEIO Errno pkg syscall (linux-amd64-cgo), const ERESTART Errno pkg syscall (linux-amd64-cgo), const ERFKILL Errno pkg syscall (linux-amd64-cgo), const ESRMNT Errno pkg syscall (linux-amd64-cgo), const ESTRPIPE Errno pkg syscall (linux-amd64-cgo), const ETH_P_1588 ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_8021Q ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_802_2 ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_802_3 ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_AARP ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_ALL ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_AOE ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_ARCNET ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_ARP ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_ATALK ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_ATMFATE ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_ATMMPOA ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_AX25 ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_BPQ ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_CAIF ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_CAN ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_CONTROL ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_CUST ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_DDCMP ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_DEC ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_DIAG ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_DNA_DL ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_DNA_RC ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_DNA_RT ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_DSA ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_ECONET ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_EDSA ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_FCOE ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_FIP ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_HDLC ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_IEEE802154 ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_IEEEPUP ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_IEEEPUPAT ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_IP ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_IPV6 ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_IPX ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_IRDA ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_LAT ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_LINK_CTL ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_LOCALTALK ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_LOOP ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_MOBITEX ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_MPLS_MC ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_MPLS_UC ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_PAE ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_PAUSE ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_PHONET ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_PPPTALK ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_PPP_DISC ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_PPP_MP ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_PPP_SES ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_PUP ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_PUPAT ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_RARP ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_SCA ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_SLOW ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_SNAP ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_TEB ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_TIPC ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_TRAILER ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_TR_802_2 ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_WAN_PPP ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_WCCP ideal-int pkg syscall (linux-amd64-cgo), const ETH_P_X25 ideal-int pkg syscall (linux-amd64-cgo), const ETIME Errno pkg syscall (linux-amd64-cgo), const EUCLEAN Errno pkg syscall (linux-amd64-cgo), const EUNATCH Errno pkg syscall (linux-amd64-cgo), const EXFULL Errno pkg syscall (linux-amd64-cgo), const FD_CLOEXEC ideal-int pkg syscall (linux-amd64-cgo), const FD_SETSIZE ideal-int pkg syscall (linux-amd64-cgo), const FLUSHO ideal-int pkg syscall (linux-amd64-cgo), const F_DUPFD ideal-int pkg syscall (linux-amd64-cgo), const F_DUPFD_CLOEXEC ideal-int pkg syscall (linux-amd64-cgo), const F_EXLCK ideal-int pkg syscall (linux-amd64-cgo), const F_GETFD ideal-int pkg syscall (linux-amd64-cgo), const F_GETFL ideal-int pkg syscall (linux-amd64-cgo), const F_GETLEASE ideal-int pkg syscall (linux-amd64-cgo), const F_GETLK ideal-int pkg syscall (linux-amd64-cgo), const F_GETLK64 ideal-int pkg syscall (linux-amd64-cgo), const F_GETOWN ideal-int pkg syscall (linux-amd64-cgo), const F_GETOWN_EX ideal-int pkg syscall (linux-amd64-cgo), const F_GETPIPE_SZ ideal-int pkg syscall (linux-amd64-cgo), const F_GETSIG ideal-int pkg syscall (linux-amd64-cgo), const F_LOCK ideal-int pkg syscall (linux-amd64-cgo), const F_NOTIFY ideal-int pkg syscall (linux-amd64-cgo), const F_OK ideal-int pkg syscall (linux-amd64-cgo), const F_RDLCK ideal-int pkg syscall (linux-amd64-cgo), const F_SETFD ideal-int pkg syscall (linux-amd64-cgo), const F_SETFL ideal-int pkg syscall (linux-amd64-cgo), const F_SETLEASE ideal-int pkg syscall (linux-amd64-cgo), const F_SETLK ideal-int pkg syscall (linux-amd64-cgo), const F_SETLK64 ideal-int pkg syscall (linux-amd64-cgo), const F_SETLKW ideal-int pkg syscall (linux-amd64-cgo), const F_SETLKW64 ideal-int pkg syscall (linux-amd64-cgo), const F_SETOWN ideal-int pkg syscall (linux-amd64-cgo), const F_SETOWN_EX ideal-int pkg syscall (linux-amd64-cgo), const F_SETPIPE_SZ ideal-int pkg syscall (linux-amd64-cgo), const F_SETSIG ideal-int pkg syscall (linux-amd64-cgo), const F_SHLCK ideal-int pkg syscall (linux-amd64-cgo), const F_TEST ideal-int pkg syscall (linux-amd64-cgo), const F_TLOCK ideal-int pkg syscall (linux-amd64-cgo), const F_ULOCK ideal-int pkg syscall (linux-amd64-cgo), const F_UNLCK ideal-int pkg syscall (linux-amd64-cgo), const F_WRLCK ideal-int pkg syscall (linux-amd64-cgo), const HUPCL ideal-int pkg syscall (linux-amd64-cgo), const ICANON ideal-int pkg syscall (linux-amd64-cgo), const ICRNL ideal-int pkg syscall (linux-amd64-cgo), const IEXTEN ideal-int pkg syscall (linux-amd64-cgo), const IFA_ADDRESS ideal-int pkg syscall (linux-amd64-cgo), const IFA_ANYCAST ideal-int pkg syscall (linux-amd64-cgo), const IFA_BROADCAST ideal-int pkg syscall (linux-amd64-cgo), const IFA_CACHEINFO ideal-int pkg syscall (linux-amd64-cgo), const IFA_F_DADFAILED ideal-int pkg syscall (linux-amd64-cgo), const IFA_F_DEPRECATED ideal-int pkg syscall (linux-amd64-cgo), const IFA_F_HOMEADDRESS ideal-int pkg syscall (linux-amd64-cgo), const IFA_F_NODAD ideal-int pkg syscall (linux-amd64-cgo), const IFA_F_OPTIMISTIC ideal-int pkg syscall (linux-amd64-cgo), const IFA_F_PERMANENT ideal-int pkg syscall (linux-amd64-cgo), const IFA_F_SECONDARY ideal-int pkg syscall (linux-amd64-cgo), const IFA_F_TEMPORARY ideal-int pkg syscall (linux-amd64-cgo), const IFA_F_TENTATIVE ideal-int pkg syscall (linux-amd64-cgo), const IFA_LABEL ideal-int pkg syscall (linux-amd64-cgo), const IFA_LOCAL ideal-int pkg syscall (linux-amd64-cgo), const IFA_MAX ideal-int pkg syscall (linux-amd64-cgo), const IFA_MULTICAST ideal-int pkg syscall (linux-amd64-cgo), const IFA_UNSPEC ideal-int pkg syscall (linux-amd64-cgo), const IFF_ALLMULTI ideal-int pkg syscall (linux-amd64-cgo), const IFF_AUTOMEDIA ideal-int pkg syscall (linux-amd64-cgo), const IFF_DEBUG ideal-int pkg syscall (linux-amd64-cgo), const IFF_DYNAMIC ideal-int pkg syscall (linux-amd64-cgo), const IFF_MASTER ideal-int pkg syscall (linux-amd64-cgo), const IFF_NOARP ideal-int pkg syscall (linux-amd64-cgo), const IFF_NOTRAILERS ideal-int pkg syscall (linux-amd64-cgo), const IFF_NO_PI ideal-int pkg syscall (linux-amd64-cgo), const IFF_ONE_QUEUE ideal-int pkg syscall (linux-amd64-cgo), const IFF_POINTOPOINT ideal-int pkg syscall (linux-amd64-cgo), const IFF_PORTSEL ideal-int pkg syscall (linux-amd64-cgo), const IFF_PROMISC ideal-int pkg syscall (linux-amd64-cgo), const IFF_RUNNING ideal-int pkg syscall (linux-amd64-cgo), const IFF_SLAVE ideal-int pkg syscall (linux-amd64-cgo), const IFF_TAP ideal-int pkg syscall (linux-amd64-cgo), const IFF_TUN ideal-int pkg syscall (linux-amd64-cgo), const IFF_TUN_EXCL ideal-int pkg syscall (linux-amd64-cgo), const IFF_VNET_HDR ideal-int pkg syscall (linux-amd64-cgo), const IFLA_ADDRESS ideal-int pkg syscall (linux-amd64-cgo), const IFLA_BROADCAST ideal-int pkg syscall (linux-amd64-cgo), const IFLA_COST ideal-int pkg syscall (linux-amd64-cgo), const IFLA_IFALIAS ideal-int pkg syscall (linux-amd64-cgo), const IFLA_IFNAME ideal-int pkg syscall (linux-amd64-cgo), const IFLA_LINK ideal-int pkg syscall (linux-amd64-cgo), const IFLA_LINKINFO ideal-int pkg syscall (linux-amd64-cgo), const IFLA_LINKMODE ideal-int pkg syscall (linux-amd64-cgo), const IFLA_MAP ideal-int pkg syscall (linux-amd64-cgo), const IFLA_MASTER ideal-int pkg syscall (linux-amd64-cgo), const IFLA_MAX ideal-int pkg syscall (linux-amd64-cgo), const IFLA_MTU ideal-int pkg syscall (linux-amd64-cgo), const IFLA_NET_NS_PID ideal-int pkg syscall (linux-amd64-cgo), const IFLA_OPERSTATE ideal-int pkg syscall (linux-amd64-cgo), const IFLA_PRIORITY ideal-int pkg syscall (linux-amd64-cgo), const IFLA_PROTINFO ideal-int pkg syscall (linux-amd64-cgo), const IFLA_QDISC ideal-int pkg syscall (linux-amd64-cgo), const IFLA_STATS ideal-int pkg syscall (linux-amd64-cgo), const IFLA_TXQLEN ideal-int pkg syscall (linux-amd64-cgo), const IFLA_UNSPEC ideal-int pkg syscall (linux-amd64-cgo), const IFLA_WEIGHT ideal-int pkg syscall (linux-amd64-cgo), const IFLA_WIRELESS ideal-int pkg syscall (linux-amd64-cgo), const IFNAMSIZ ideal-int pkg syscall (linux-amd64-cgo), const IGNBRK ideal-int pkg syscall (linux-amd64-cgo), const IGNCR ideal-int pkg syscall (linux-amd64-cgo), const IGNPAR ideal-int pkg syscall (linux-amd64-cgo), const IMAXBEL ideal-int pkg syscall (linux-amd64-cgo), const INLCR ideal-int pkg syscall (linux-amd64-cgo), const INPCK ideal-int pkg syscall (linux-amd64-cgo), const IN_ACCESS ideal-int pkg syscall (linux-amd64-cgo), const IN_ALL_EVENTS ideal-int pkg syscall (linux-amd64-cgo), const IN_ATTRIB ideal-int pkg syscall (linux-amd64-cgo), const IN_CLASSA_HOST ideal-int pkg syscall (linux-amd64-cgo), const IN_CLASSA_MAX ideal-int pkg syscall (linux-amd64-cgo), const IN_CLASSA_NET ideal-int pkg syscall (linux-amd64-cgo), const IN_CLASSA_NSHIFT ideal-int pkg syscall (linux-amd64-cgo), const IN_CLASSB_HOST ideal-int pkg syscall (linux-amd64-cgo), const IN_CLASSB_MAX ideal-int pkg syscall (linux-amd64-cgo), const IN_CLASSB_NET ideal-int pkg syscall (linux-amd64-cgo), const IN_CLASSB_NSHIFT ideal-int pkg syscall (linux-amd64-cgo), const IN_CLASSC_HOST ideal-int pkg syscall (linux-amd64-cgo), const IN_CLASSC_NET ideal-int pkg syscall (linux-amd64-cgo), const IN_CLASSC_NSHIFT ideal-int pkg syscall (linux-amd64-cgo), const IN_CLOEXEC ideal-int pkg syscall (linux-amd64-cgo), const IN_CLOSE ideal-int pkg syscall (linux-amd64-cgo), const IN_CLOSE_NOWRITE ideal-int pkg syscall (linux-amd64-cgo), const IN_CLOSE_WRITE ideal-int pkg syscall (linux-amd64-cgo), const IN_CREATE ideal-int pkg syscall (linux-amd64-cgo), const IN_DELETE ideal-int pkg syscall (linux-amd64-cgo), const IN_DELETE_SELF ideal-int pkg syscall (linux-amd64-cgo), const IN_DONT_FOLLOW ideal-int pkg syscall (linux-amd64-cgo), const IN_EXCL_UNLINK ideal-int pkg syscall (linux-amd64-cgo), const IN_IGNORED ideal-int pkg syscall (linux-amd64-cgo), const IN_ISDIR ideal-int pkg syscall (linux-amd64-cgo), const IN_LOOPBACKNET ideal-int pkg syscall (linux-amd64-cgo), const IN_MASK_ADD ideal-int pkg syscall (linux-amd64-cgo), const IN_MODIFY ideal-int pkg syscall (linux-amd64-cgo), const IN_MOVE ideal-int pkg syscall (linux-amd64-cgo), const IN_MOVED_FROM ideal-int pkg syscall (linux-amd64-cgo), const IN_MOVED_TO ideal-int pkg syscall (linux-amd64-cgo), const IN_MOVE_SELF ideal-int pkg syscall (linux-amd64-cgo), const IN_NONBLOCK ideal-int pkg syscall (linux-amd64-cgo), const IN_ONESHOT ideal-int pkg syscall (linux-amd64-cgo), const IN_ONLYDIR ideal-int pkg syscall (linux-amd64-cgo), const IN_OPEN ideal-int pkg syscall (linux-amd64-cgo), const IN_Q_OVERFLOW ideal-int pkg syscall (linux-amd64-cgo), const IN_UNMOUNT ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_AH ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_COMP ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_DCCP ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_DSTOPTS ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_EGP ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_ENCAP ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_ESP ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_FRAGMENT ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_GRE ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_HOPOPTS ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_ICMP ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_ICMPV6 ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_IDP ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_IGMP ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_IPIP ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_MTP ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_NONE ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_PIM ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_PUP ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_RAW ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_ROUTING ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_RSVP ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_SCTP ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_TP ideal-int pkg syscall (linux-amd64-cgo), const IPPROTO_UDPLITE ideal-int pkg syscall (linux-amd64-cgo), const IPV6_2292DSTOPTS ideal-int pkg syscall (linux-amd64-cgo), const IPV6_2292HOPLIMIT ideal-int pkg syscall (linux-amd64-cgo), const IPV6_2292HOPOPTS ideal-int pkg syscall (linux-amd64-cgo), const IPV6_2292PKTINFO ideal-int pkg syscall (linux-amd64-cgo), const IPV6_2292PKTOPTIONS ideal-int pkg syscall (linux-amd64-cgo), const IPV6_2292RTHDR ideal-int pkg syscall (linux-amd64-cgo), const IPV6_ADDRFORM ideal-int pkg syscall (linux-amd64-cgo), const IPV6_ADD_MEMBERSHIP ideal-int pkg syscall (linux-amd64-cgo), const IPV6_AUTHHDR ideal-int pkg syscall (linux-amd64-cgo), const IPV6_CHECKSUM ideal-int pkg syscall (linux-amd64-cgo), const IPV6_DROP_MEMBERSHIP ideal-int pkg syscall (linux-amd64-cgo), const IPV6_DSTOPTS ideal-int pkg syscall (linux-amd64-cgo), const IPV6_HOPLIMIT ideal-int pkg syscall (linux-amd64-cgo), const IPV6_HOPOPTS ideal-int pkg syscall (linux-amd64-cgo), const IPV6_IPSEC_POLICY ideal-int pkg syscall (linux-amd64-cgo), const IPV6_JOIN_ANYCAST ideal-int pkg syscall (linux-amd64-cgo), const IPV6_LEAVE_ANYCAST ideal-int pkg syscall (linux-amd64-cgo), const IPV6_MTU ideal-int pkg syscall (linux-amd64-cgo), const IPV6_MTU_DISCOVER ideal-int pkg syscall (linux-amd64-cgo), const IPV6_NEXTHOP ideal-int pkg syscall (linux-amd64-cgo), const IPV6_PKTINFO ideal-int pkg syscall (linux-amd64-cgo), const IPV6_PMTUDISC_DO ideal-int pkg syscall (linux-amd64-cgo), const IPV6_PMTUDISC_DONT ideal-int pkg syscall (linux-amd64-cgo), const IPV6_PMTUDISC_PROBE ideal-int pkg syscall (linux-amd64-cgo), const IPV6_PMTUDISC_WANT ideal-int pkg syscall (linux-amd64-cgo), const IPV6_RECVDSTOPTS ideal-int pkg syscall (linux-amd64-cgo), const IPV6_RECVERR ideal-int pkg syscall (linux-amd64-cgo), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (linux-amd64-cgo), const IPV6_RECVHOPOPTS ideal-int pkg syscall (linux-amd64-cgo), const IPV6_RECVPKTINFO ideal-int pkg syscall (linux-amd64-cgo), const IPV6_RECVRTHDR ideal-int pkg syscall (linux-amd64-cgo), const IPV6_RECVTCLASS ideal-int pkg syscall (linux-amd64-cgo), const IPV6_ROUTER_ALERT ideal-int pkg syscall (linux-amd64-cgo), const IPV6_RTHDR ideal-int pkg syscall (linux-amd64-cgo), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (linux-amd64-cgo), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (linux-amd64-cgo), const IPV6_RTHDR_STRICT ideal-int pkg syscall (linux-amd64-cgo), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (linux-amd64-cgo), const IPV6_RXDSTOPTS ideal-int pkg syscall (linux-amd64-cgo), const IPV6_RXHOPOPTS ideal-int pkg syscall (linux-amd64-cgo), const IPV6_TCLASS ideal-int pkg syscall (linux-amd64-cgo), const IPV6_XFRM_POLICY ideal-int pkg syscall (linux-amd64-cgo), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (linux-amd64-cgo), const IP_BLOCK_SOURCE ideal-int pkg syscall (linux-amd64-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (linux-amd64-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (linux-amd64-cgo), const IP_DF ideal-int pkg syscall (linux-amd64-cgo), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (linux-amd64-cgo), const IP_FREEBIND ideal-int pkg syscall (linux-amd64-cgo), const IP_HDRINCL ideal-int pkg syscall (linux-amd64-cgo), const IP_IPSEC_POLICY ideal-int pkg syscall (linux-amd64-cgo), const IP_MAXPACKET ideal-int pkg syscall (linux-amd64-cgo), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (linux-amd64-cgo), const IP_MF ideal-int pkg syscall (linux-amd64-cgo), const IP_MINTTL ideal-int pkg syscall (linux-amd64-cgo), const IP_MSFILTER ideal-int pkg syscall (linux-amd64-cgo), const IP_MSS ideal-int pkg syscall (linux-amd64-cgo), const IP_MTU ideal-int pkg syscall (linux-amd64-cgo), const IP_MTU_DISCOVER ideal-int pkg syscall (linux-amd64-cgo), const IP_OFFMASK ideal-int pkg syscall (linux-amd64-cgo), const IP_OPTIONS ideal-int pkg syscall (linux-amd64-cgo), const IP_ORIGDSTADDR ideal-int pkg syscall (linux-amd64-cgo), const IP_PASSSEC ideal-int pkg syscall (linux-amd64-cgo), const IP_PKTINFO ideal-int pkg syscall (linux-amd64-cgo), const IP_PKTOPTIONS ideal-int pkg syscall (linux-amd64-cgo), const IP_PMTUDISC ideal-int pkg syscall (linux-amd64-cgo), const IP_PMTUDISC_DO ideal-int pkg syscall (linux-amd64-cgo), const IP_PMTUDISC_DONT ideal-int pkg syscall (linux-amd64-cgo), const IP_PMTUDISC_PROBE ideal-int pkg syscall (linux-amd64-cgo), const IP_PMTUDISC_WANT ideal-int pkg syscall (linux-amd64-cgo), const IP_RECVERR ideal-int pkg syscall (linux-amd64-cgo), const IP_RECVOPTS ideal-int pkg syscall (linux-amd64-cgo), const IP_RECVORIGDSTADDR ideal-int pkg syscall (linux-amd64-cgo), const IP_RECVRETOPTS ideal-int pkg syscall (linux-amd64-cgo), const IP_RECVTOS ideal-int pkg syscall (linux-amd64-cgo), const IP_RECVTTL ideal-int pkg syscall (linux-amd64-cgo), const IP_RETOPTS ideal-int pkg syscall (linux-amd64-cgo), const IP_RF ideal-int pkg syscall (linux-amd64-cgo), const IP_ROUTER_ALERT ideal-int pkg syscall (linux-amd64-cgo), const IP_TRANSPARENT ideal-int pkg syscall (linux-amd64-cgo), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (linux-amd64-cgo), const IP_XFRM_POLICY ideal-int pkg syscall (linux-amd64-cgo), const ISIG ideal-int pkg syscall (linux-amd64-cgo), const ISTRIP ideal-int pkg syscall (linux-amd64-cgo), const IUCLC ideal-int pkg syscall (linux-amd64-cgo), const IUTF8 ideal-int pkg syscall (linux-amd64-cgo), const IXANY ideal-int pkg syscall (linux-amd64-cgo), const IXOFF ideal-int pkg syscall (linux-amd64-cgo), const IXON ideal-int pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_CAD_OFF ideal-int pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_CAD_ON ideal-int pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_HALT ideal-int pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_KEXEC ideal-int pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_POWER_OFF ideal-int pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_RESTART ideal-int pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_RESTART2 ideal-int pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_SW_SUSPEND ideal-int pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_MAGIC1 ideal-int pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_MAGIC2 ideal-int pkg syscall (linux-amd64-cgo), const LOCK_EX ideal-int pkg syscall (linux-amd64-cgo), const LOCK_NB ideal-int pkg syscall (linux-amd64-cgo), const LOCK_SH ideal-int pkg syscall (linux-amd64-cgo), const LOCK_UN ideal-int pkg syscall (linux-amd64-cgo), const MADV_DOFORK ideal-int pkg syscall (linux-amd64-cgo), const MADV_DONTFORK ideal-int pkg syscall (linux-amd64-cgo), const MADV_DONTNEED ideal-int pkg syscall (linux-amd64-cgo), const MADV_HUGEPAGE ideal-int pkg syscall (linux-amd64-cgo), const MADV_HWPOISON ideal-int pkg syscall (linux-amd64-cgo), const MADV_MERGEABLE ideal-int pkg syscall (linux-amd64-cgo), const MADV_NOHUGEPAGE ideal-int pkg syscall (linux-amd64-cgo), const MADV_NORMAL ideal-int pkg syscall (linux-amd64-cgo), const MADV_RANDOM ideal-int pkg syscall (linux-amd64-cgo), const MADV_REMOVE ideal-int pkg syscall (linux-amd64-cgo), const MADV_SEQUENTIAL ideal-int pkg syscall (linux-amd64-cgo), const MADV_UNMERGEABLE ideal-int pkg syscall (linux-amd64-cgo), const MADV_WILLNEED ideal-int pkg syscall (linux-amd64-cgo), const MAP_32BIT ideal-int pkg syscall (linux-amd64-cgo), const MAP_ANON ideal-int pkg syscall (linux-amd64-cgo), const MAP_ANONYMOUS ideal-int pkg syscall (linux-amd64-cgo), const MAP_DENYWRITE ideal-int pkg syscall (linux-amd64-cgo), const MAP_EXECUTABLE ideal-int pkg syscall (linux-amd64-cgo), const MAP_FILE ideal-int pkg syscall (linux-amd64-cgo), const MAP_FIXED ideal-int pkg syscall (linux-amd64-cgo), const MAP_GROWSDOWN ideal-int pkg syscall (linux-amd64-cgo), const MAP_HUGETLB ideal-int pkg syscall (linux-amd64-cgo), const MAP_LOCKED ideal-int pkg syscall (linux-amd64-cgo), const MAP_NONBLOCK ideal-int pkg syscall (linux-amd64-cgo), const MAP_NORESERVE ideal-int pkg syscall (linux-amd64-cgo), const MAP_POPULATE ideal-int pkg syscall (linux-amd64-cgo), const MAP_PRIVATE ideal-int pkg syscall (linux-amd64-cgo), const MAP_SHARED ideal-int pkg syscall (linux-amd64-cgo), const MAP_STACK ideal-int pkg syscall (linux-amd64-cgo), const MAP_TYPE ideal-int pkg syscall (linux-amd64-cgo), const MCL_CURRENT ideal-int pkg syscall (linux-amd64-cgo), const MCL_FUTURE ideal-int pkg syscall (linux-amd64-cgo), const MNT_DETACH ideal-int pkg syscall (linux-amd64-cgo), const MNT_EXPIRE ideal-int pkg syscall (linux-amd64-cgo), const MNT_FORCE ideal-int pkg syscall (linux-amd64-cgo), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (linux-amd64-cgo), const MSG_CONFIRM ideal-int pkg syscall (linux-amd64-cgo), const MSG_CTRUNC ideal-int pkg syscall (linux-amd64-cgo), const MSG_DONTROUTE ideal-int pkg syscall (linux-amd64-cgo), const MSG_DONTWAIT ideal-int pkg syscall (linux-amd64-cgo), const MSG_EOR ideal-int pkg syscall (linux-amd64-cgo), const MSG_ERRQUEUE ideal-int pkg syscall (linux-amd64-cgo), const MSG_FIN ideal-int pkg syscall (linux-amd64-cgo), const MSG_MORE ideal-int pkg syscall (linux-amd64-cgo), const MSG_NOSIGNAL ideal-int pkg syscall (linux-amd64-cgo), const MSG_OOB ideal-int pkg syscall (linux-amd64-cgo), const MSG_PEEK ideal-int pkg syscall (linux-amd64-cgo), const MSG_PROXY ideal-int pkg syscall (linux-amd64-cgo), const MSG_RST ideal-int pkg syscall (linux-amd64-cgo), const MSG_SYN ideal-int pkg syscall (linux-amd64-cgo), const MSG_TRUNC ideal-int pkg syscall (linux-amd64-cgo), const MSG_TRYHARD ideal-int pkg syscall (linux-amd64-cgo), const MSG_WAITALL ideal-int pkg syscall (linux-amd64-cgo), const MSG_WAITFORONE ideal-int pkg syscall (linux-amd64-cgo), const MS_ACTIVE ideal-int pkg syscall (linux-amd64-cgo), const MS_ASYNC ideal-int pkg syscall (linux-amd64-cgo), const MS_BIND ideal-int pkg syscall (linux-amd64-cgo), const MS_DIRSYNC ideal-int pkg syscall (linux-amd64-cgo), const MS_INVALIDATE ideal-int pkg syscall (linux-amd64-cgo), const MS_I_VERSION ideal-int pkg syscall (linux-amd64-cgo), const MS_KERNMOUNT ideal-int pkg syscall (linux-amd64-cgo), const MS_MANDLOCK ideal-int pkg syscall (linux-amd64-cgo), const MS_MGC_MSK ideal-int pkg syscall (linux-amd64-cgo), const MS_MGC_VAL ideal-int pkg syscall (linux-amd64-cgo), const MS_MOVE ideal-int pkg syscall (linux-amd64-cgo), const MS_NOATIME ideal-int pkg syscall (linux-amd64-cgo), const MS_NODEV ideal-int pkg syscall (linux-amd64-cgo), const MS_NODIRATIME ideal-int pkg syscall (linux-amd64-cgo), const MS_NOEXEC ideal-int pkg syscall (linux-amd64-cgo), const MS_NOSUID ideal-int pkg syscall (linux-amd64-cgo), const MS_NOUSER ideal-int pkg syscall (linux-amd64-cgo), const MS_POSIXACL ideal-int pkg syscall (linux-amd64-cgo), const MS_PRIVATE ideal-int pkg syscall (linux-amd64-cgo), const MS_RDONLY ideal-int pkg syscall (linux-amd64-cgo), const MS_REC ideal-int pkg syscall (linux-amd64-cgo), const MS_RELATIME ideal-int pkg syscall (linux-amd64-cgo), const MS_REMOUNT ideal-int pkg syscall (linux-amd64-cgo), const MS_RMT_MASK ideal-int pkg syscall (linux-amd64-cgo), const MS_SHARED ideal-int pkg syscall (linux-amd64-cgo), const MS_SILENT ideal-int pkg syscall (linux-amd64-cgo), const MS_SLAVE ideal-int pkg syscall (linux-amd64-cgo), const MS_STRICTATIME ideal-int pkg syscall (linux-amd64-cgo), const MS_SYNC ideal-int pkg syscall (linux-amd64-cgo), const MS_SYNCHRONOUS ideal-int pkg syscall (linux-amd64-cgo), const MS_UNBINDABLE ideal-int pkg syscall (linux-amd64-cgo), const NAME_MAX ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_ADD_MEMBERSHIP ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_AUDIT ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_BROADCAST_ERROR ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_CONNECTOR ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_DNRTMSG ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_DROP_MEMBERSHIP ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_ECRYPTFS ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_FIB_LOOKUP ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_FIREWALL ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_GENERIC ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_INET_DIAG ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_IP6_FW ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_ISCSI ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_KOBJECT_UEVENT ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_NETFILTER ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_NFLOG ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_NO_ENOBUFS ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_PKTINFO ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_ROUTE ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_SCSITRANSPORT ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_SELINUX ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_UNUSED ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_USERSOCK ideal-int pkg syscall (linux-amd64-cgo), const NETLINK_XFRM ideal-int pkg syscall (linux-amd64-cgo), const NLA_ALIGNTO ideal-int pkg syscall (linux-amd64-cgo), const NLA_F_NESTED ideal-int pkg syscall (linux-amd64-cgo), const NLA_F_NET_BYTEORDER ideal-int pkg syscall (linux-amd64-cgo), const NLA_HDRLEN ideal-int pkg syscall (linux-amd64-cgo), const NLMSG_ALIGNTO ideal-int pkg syscall (linux-amd64-cgo), const NLMSG_DONE ideal-int pkg syscall (linux-amd64-cgo), const NLMSG_ERROR ideal-int pkg syscall (linux-amd64-cgo), const NLMSG_HDRLEN ideal-int pkg syscall (linux-amd64-cgo), const NLMSG_MIN_TYPE ideal-int pkg syscall (linux-amd64-cgo), const NLMSG_NOOP ideal-int pkg syscall (linux-amd64-cgo), const NLMSG_OVERRUN ideal-int pkg syscall (linux-amd64-cgo), const NLM_F_ACK ideal-int pkg syscall (linux-amd64-cgo), const NLM_F_APPEND ideal-int pkg syscall (linux-amd64-cgo), const NLM_F_ATOMIC ideal-int pkg syscall (linux-amd64-cgo), const NLM_F_CREATE ideal-int pkg syscall (linux-amd64-cgo), const NLM_F_DUMP ideal-int pkg syscall (linux-amd64-cgo), const NLM_F_ECHO ideal-int pkg syscall (linux-amd64-cgo), const NLM_F_EXCL ideal-int pkg syscall (linux-amd64-cgo), const NLM_F_MATCH ideal-int pkg syscall (linux-amd64-cgo), const NLM_F_MULTI ideal-int pkg syscall (linux-amd64-cgo), const NLM_F_REPLACE ideal-int pkg syscall (linux-amd64-cgo), const NLM_F_REQUEST ideal-int pkg syscall (linux-amd64-cgo), const NLM_F_ROOT ideal-int pkg syscall (linux-amd64-cgo), const NOFLSH ideal-int pkg syscall (linux-amd64-cgo), const OCRNL ideal-int pkg syscall (linux-amd64-cgo), const OFDEL ideal-int pkg syscall (linux-amd64-cgo), const OFILL ideal-int pkg syscall (linux-amd64-cgo), const OLCUC ideal-int pkg syscall (linux-amd64-cgo), const ONLCR ideal-int pkg syscall (linux-amd64-cgo), const ONLRET ideal-int pkg syscall (linux-amd64-cgo), const ONOCR ideal-int pkg syscall (linux-amd64-cgo), const OPOST ideal-int pkg syscall (linux-amd64-cgo), const O_ACCMODE ideal-int pkg syscall (linux-amd64-cgo), const O_DIRECT ideal-int pkg syscall (linux-amd64-cgo), const O_DIRECTORY ideal-int pkg syscall (linux-amd64-cgo), const O_DSYNC ideal-int pkg syscall (linux-amd64-cgo), const O_FSYNC ideal-int pkg syscall (linux-amd64-cgo), const O_LARGEFILE ideal-int pkg syscall (linux-amd64-cgo), const O_NDELAY ideal-int pkg syscall (linux-amd64-cgo), const O_NOATIME ideal-int pkg syscall (linux-amd64-cgo), const O_NOFOLLOW ideal-int pkg syscall (linux-amd64-cgo), const O_RSYNC ideal-int pkg syscall (linux-amd64-cgo), const PACKET_ADD_MEMBERSHIP ideal-int pkg syscall (linux-amd64-cgo), const PACKET_BROADCAST ideal-int pkg syscall (linux-amd64-cgo), const PACKET_DROP_MEMBERSHIP ideal-int pkg syscall (linux-amd64-cgo), const PACKET_FASTROUTE ideal-int pkg syscall (linux-amd64-cgo), const PACKET_HOST ideal-int pkg syscall (linux-amd64-cgo), const PACKET_LOOPBACK ideal-int pkg syscall (linux-amd64-cgo), const PACKET_MR_ALLMULTI ideal-int pkg syscall (linux-amd64-cgo), const PACKET_MR_MULTICAST ideal-int pkg syscall (linux-amd64-cgo), const PACKET_MR_PROMISC ideal-int pkg syscall (linux-amd64-cgo), const PACKET_MULTICAST ideal-int pkg syscall (linux-amd64-cgo), const PACKET_OTHERHOST ideal-int pkg syscall (linux-amd64-cgo), const PACKET_OUTGOING ideal-int pkg syscall (linux-amd64-cgo), const PACKET_RECV_OUTPUT ideal-int pkg syscall (linux-amd64-cgo), const PACKET_RX_RING ideal-int pkg syscall (linux-amd64-cgo), const PACKET_STATISTICS ideal-int pkg syscall (linux-amd64-cgo), const PARENB ideal-int pkg syscall (linux-amd64-cgo), const PARMRK ideal-int pkg syscall (linux-amd64-cgo), const PARODD ideal-int pkg syscall (linux-amd64-cgo), const PENDIN ideal-int pkg syscall (linux-amd64-cgo), const PROT_EXEC ideal-int pkg syscall (linux-amd64-cgo), const PROT_GROWSDOWN ideal-int pkg syscall (linux-amd64-cgo), const PROT_GROWSUP ideal-int pkg syscall (linux-amd64-cgo), const PROT_NONE ideal-int pkg syscall (linux-amd64-cgo), const PROT_READ ideal-int pkg syscall (linux-amd64-cgo), const PROT_WRITE ideal-int pkg syscall (linux-amd64-cgo), const PR_CAPBSET_DROP ideal-int pkg syscall (linux-amd64-cgo), const PR_CAPBSET_READ ideal-int pkg syscall (linux-amd64-cgo), const PR_ENDIAN_BIG ideal-int pkg syscall (linux-amd64-cgo), const PR_ENDIAN_LITTLE ideal-int pkg syscall (linux-amd64-cgo), const PR_ENDIAN_PPC_LITTLE ideal-int pkg syscall (linux-amd64-cgo), const PR_FPEMU_NOPRINT ideal-int pkg syscall (linux-amd64-cgo), const PR_FPEMU_SIGFPE ideal-int pkg syscall (linux-amd64-cgo), const PR_FP_EXC_ASYNC ideal-int pkg syscall (linux-amd64-cgo), const PR_FP_EXC_DISABLED ideal-int pkg syscall (linux-amd64-cgo), const PR_FP_EXC_DIV ideal-int pkg syscall (linux-amd64-cgo), const PR_FP_EXC_INV ideal-int pkg syscall (linux-amd64-cgo), const PR_FP_EXC_NONRECOV ideal-int pkg syscall (linux-amd64-cgo), const PR_FP_EXC_OVF ideal-int pkg syscall (linux-amd64-cgo), const PR_FP_EXC_PRECISE ideal-int pkg syscall (linux-amd64-cgo), const PR_FP_EXC_RES ideal-int pkg syscall (linux-amd64-cgo), const PR_FP_EXC_SW_ENABLE ideal-int pkg syscall (linux-amd64-cgo), const PR_FP_EXC_UND ideal-int pkg syscall (linux-amd64-cgo), const PR_GET_DUMPABLE ideal-int pkg syscall (linux-amd64-cgo), const PR_GET_ENDIAN ideal-int pkg syscall (linux-amd64-cgo), const PR_GET_FPEMU ideal-int pkg syscall (linux-amd64-cgo), const PR_GET_FPEXC ideal-int pkg syscall (linux-amd64-cgo), const PR_GET_KEEPCAPS ideal-int pkg syscall (linux-amd64-cgo), const PR_GET_NAME ideal-int pkg syscall (linux-amd64-cgo), const PR_GET_PDEATHSIG ideal-int pkg syscall (linux-amd64-cgo), const PR_GET_SECCOMP ideal-int pkg syscall (linux-amd64-cgo), const PR_GET_SECUREBITS ideal-int pkg syscall (linux-amd64-cgo), const PR_GET_TIMERSLACK ideal-int pkg syscall (linux-amd64-cgo), const PR_GET_TIMING ideal-int pkg syscall (linux-amd64-cgo), const PR_GET_TSC ideal-int pkg syscall (linux-amd64-cgo), const PR_GET_UNALIGN ideal-int pkg syscall (linux-amd64-cgo), const PR_MCE_KILL ideal-int pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_CLEAR ideal-int pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_DEFAULT ideal-int pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_EARLY ideal-int pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_GET ideal-int pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_LATE ideal-int pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_SET ideal-int pkg syscall (linux-amd64-cgo), const PR_SET_DUMPABLE ideal-int pkg syscall (linux-amd64-cgo), const PR_SET_ENDIAN ideal-int pkg syscall (linux-amd64-cgo), const PR_SET_FPEMU ideal-int pkg syscall (linux-amd64-cgo), const PR_SET_FPEXC ideal-int pkg syscall (linux-amd64-cgo), const PR_SET_KEEPCAPS ideal-int pkg syscall (linux-amd64-cgo), const PR_SET_NAME ideal-int pkg syscall (linux-amd64-cgo), const PR_SET_PDEATHSIG ideal-int pkg syscall (linux-amd64-cgo), const PR_SET_PTRACER ideal-int pkg syscall (linux-amd64-cgo), const PR_SET_SECCOMP ideal-int pkg syscall (linux-amd64-cgo), const PR_SET_SECUREBITS ideal-int pkg syscall (linux-amd64-cgo), const PR_SET_TIMERSLACK ideal-int pkg syscall (linux-amd64-cgo), const PR_SET_TIMING ideal-int pkg syscall (linux-amd64-cgo), const PR_SET_TSC ideal-int pkg syscall (linux-amd64-cgo), const PR_SET_UNALIGN ideal-int pkg syscall (linux-amd64-cgo), const PR_TASK_PERF_EVENTS_DISABLE ideal-int pkg syscall (linux-amd64-cgo), const PR_TASK_PERF_EVENTS_ENABLE ideal-int pkg syscall (linux-amd64-cgo), const PR_TIMING_STATISTICAL ideal-int pkg syscall (linux-amd64-cgo), const PR_TIMING_TIMESTAMP ideal-int pkg syscall (linux-amd64-cgo), const PR_TSC_ENABLE ideal-int pkg syscall (linux-amd64-cgo), const PR_TSC_SIGSEGV ideal-int pkg syscall (linux-amd64-cgo), const PR_UNALIGN_NOPRINT ideal-int pkg syscall (linux-amd64-cgo), const PR_UNALIGN_SIGBUS ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_ARCH_PRCTL ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_ATTACH ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_CONT ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_DETACH ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_CLONE ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_EXEC ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_EXIT ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_FORK ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_VFORK ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_VFORK_DONE ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_GETEVENTMSG ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_GETFPREGS ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_GETFPXREGS ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_GETREGS ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_GETREGSET ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_GETSIGINFO ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_GET_THREAD_AREA ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_KILL ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_OLDSETOPTIONS ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_O_MASK ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACECLONE ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEEXEC ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEEXIT ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEFORK ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACESYSGOOD ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEVFORK ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEVFORKDONE ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_PEEKDATA ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_PEEKTEXT ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_PEEKUSR ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_POKEDATA ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_POKETEXT ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_POKEUSR ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_SETFPREGS ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_SETFPXREGS ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_SETOPTIONS ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_SETREGS ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_SETREGSET ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_SETSIGINFO ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_SET_THREAD_AREA ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_SINGLEBLOCK ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_SINGLESTEP ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_SYSCALL ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_SYSEMU ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_SYSEMU_SINGLESTEP ideal-int pkg syscall (linux-amd64-cgo), const PTRACE_TRACEME ideal-int pkg syscall (linux-amd64-cgo), const PathMax ideal-int pkg syscall (linux-amd64-cgo), const RLIMIT_AS ideal-int pkg syscall (linux-amd64-cgo), const RLIMIT_CORE ideal-int pkg syscall (linux-amd64-cgo), const RLIMIT_CPU ideal-int pkg syscall (linux-amd64-cgo), const RLIMIT_DATA ideal-int pkg syscall (linux-amd64-cgo), const RLIMIT_FSIZE ideal-int pkg syscall (linux-amd64-cgo), const RLIMIT_NOFILE ideal-int pkg syscall (linux-amd64-cgo), const RLIMIT_STACK ideal-int pkg syscall (linux-amd64-cgo), const RLIM_INFINITY ideal-int pkg syscall (linux-amd64-cgo), const RTAX_ADVMSS ideal-int pkg syscall (linux-amd64-cgo), const RTAX_CWND ideal-int pkg syscall (linux-amd64-cgo), const RTAX_FEATURES ideal-int pkg syscall (linux-amd64-cgo), const RTAX_FEATURE_ALLFRAG ideal-int pkg syscall (linux-amd64-cgo), const RTAX_FEATURE_ECN ideal-int pkg syscall (linux-amd64-cgo), const RTAX_FEATURE_SACK ideal-int pkg syscall (linux-amd64-cgo), const RTAX_FEATURE_TIMESTAMP ideal-int pkg syscall (linux-amd64-cgo), const RTAX_HOPLIMIT ideal-int pkg syscall (linux-amd64-cgo), const RTAX_INITCWND ideal-int pkg syscall (linux-amd64-cgo), const RTAX_INITRWND ideal-int pkg syscall (linux-amd64-cgo), const RTAX_LOCK ideal-int pkg syscall (linux-amd64-cgo), const RTAX_MAX ideal-int pkg syscall (linux-amd64-cgo), const RTAX_MTU ideal-int pkg syscall (linux-amd64-cgo), const RTAX_REORDERING ideal-int pkg syscall (linux-amd64-cgo), const RTAX_RTO_MIN ideal-int pkg syscall (linux-amd64-cgo), const RTAX_RTT ideal-int pkg syscall (linux-amd64-cgo), const RTAX_RTTVAR ideal-int pkg syscall (linux-amd64-cgo), const RTAX_SSTHRESH ideal-int pkg syscall (linux-amd64-cgo), const RTAX_UNSPEC ideal-int pkg syscall (linux-amd64-cgo), const RTAX_WINDOW ideal-int pkg syscall (linux-amd64-cgo), const RTA_ALIGNTO ideal-int pkg syscall (linux-amd64-cgo), const RTA_CACHEINFO ideal-int pkg syscall (linux-amd64-cgo), const RTA_DST ideal-int pkg syscall (linux-amd64-cgo), const RTA_FLOW ideal-int pkg syscall (linux-amd64-cgo), const RTA_GATEWAY ideal-int pkg syscall (linux-amd64-cgo), const RTA_IIF ideal-int pkg syscall (linux-amd64-cgo), const RTA_MAX ideal-int pkg syscall (linux-amd64-cgo), const RTA_METRICS ideal-int pkg syscall (linux-amd64-cgo), const RTA_MULTIPATH ideal-int pkg syscall (linux-amd64-cgo), const RTA_OIF ideal-int pkg syscall (linux-amd64-cgo), const RTA_PREFSRC ideal-int pkg syscall (linux-amd64-cgo), const RTA_PRIORITY ideal-int pkg syscall (linux-amd64-cgo), const RTA_SRC ideal-int pkg syscall (linux-amd64-cgo), const RTA_TABLE ideal-int pkg syscall (linux-amd64-cgo), const RTA_UNSPEC ideal-int pkg syscall (linux-amd64-cgo), const RTCF_DIRECTSRC ideal-int pkg syscall (linux-amd64-cgo), const RTCF_DOREDIRECT ideal-int pkg syscall (linux-amd64-cgo), const RTCF_LOG ideal-int pkg syscall (linux-amd64-cgo), const RTCF_MASQ ideal-int pkg syscall (linux-amd64-cgo), const RTCF_NAT ideal-int pkg syscall (linux-amd64-cgo), const RTCF_VALVE ideal-int pkg syscall (linux-amd64-cgo), const RTF_ADDRCLASSMASK ideal-int pkg syscall (linux-amd64-cgo), const RTF_ADDRCONF ideal-int pkg syscall (linux-amd64-cgo), const RTF_ALLONLINK ideal-int pkg syscall (linux-amd64-cgo), const RTF_BROADCAST ideal-int pkg syscall (linux-amd64-cgo), const RTF_CACHE ideal-int pkg syscall (linux-amd64-cgo), const RTF_DEFAULT ideal-int pkg syscall (linux-amd64-cgo), const RTF_DYNAMIC ideal-int pkg syscall (linux-amd64-cgo), const RTF_FLOW ideal-int pkg syscall (linux-amd64-cgo), const RTF_GATEWAY ideal-int pkg syscall (linux-amd64-cgo), const RTF_HOST ideal-int pkg syscall (linux-amd64-cgo), const RTF_INTERFACE ideal-int pkg syscall (linux-amd64-cgo), const RTF_IRTT ideal-int pkg syscall (linux-amd64-cgo), const RTF_LINKRT ideal-int pkg syscall (linux-amd64-cgo), const RTF_LOCAL ideal-int pkg syscall (linux-amd64-cgo), const RTF_MODIFIED ideal-int pkg syscall (linux-amd64-cgo), const RTF_MSS ideal-int pkg syscall (linux-amd64-cgo), const RTF_MTU ideal-int pkg syscall (linux-amd64-cgo), const RTF_MULTICAST ideal-int pkg syscall (linux-amd64-cgo), const RTF_NAT ideal-int pkg syscall (linux-amd64-cgo), const RTF_NOFORWARD ideal-int pkg syscall (linux-amd64-cgo), const RTF_NONEXTHOP ideal-int pkg syscall (linux-amd64-cgo), const RTF_NOPMTUDISC ideal-int pkg syscall (linux-amd64-cgo), const RTF_POLICY ideal-int pkg syscall (linux-amd64-cgo), const RTF_REINSTATE ideal-int pkg syscall (linux-amd64-cgo), const RTF_REJECT ideal-int pkg syscall (linux-amd64-cgo), const RTF_STATIC ideal-int pkg syscall (linux-amd64-cgo), const RTF_THROW ideal-int pkg syscall (linux-amd64-cgo), const RTF_UP ideal-int pkg syscall (linux-amd64-cgo), const RTF_WINDOW ideal-int pkg syscall (linux-amd64-cgo), const RTF_XRESOLVE ideal-int pkg syscall (linux-amd64-cgo), const RTM_BASE ideal-int pkg syscall (linux-amd64-cgo), const RTM_DELACTION ideal-int pkg syscall (linux-amd64-cgo), const RTM_DELADDR ideal-int pkg syscall (linux-amd64-cgo), const RTM_DELADDRLABEL ideal-int pkg syscall (linux-amd64-cgo), const RTM_DELLINK ideal-int pkg syscall (linux-amd64-cgo), const RTM_DELNEIGH ideal-int pkg syscall (linux-amd64-cgo), const RTM_DELQDISC ideal-int pkg syscall (linux-amd64-cgo), const RTM_DELROUTE ideal-int pkg syscall (linux-amd64-cgo), const RTM_DELRULE ideal-int pkg syscall (linux-amd64-cgo), const RTM_DELTCLASS ideal-int pkg syscall (linux-amd64-cgo), const RTM_DELTFILTER ideal-int pkg syscall (linux-amd64-cgo), const RTM_F_CLONED ideal-int pkg syscall (linux-amd64-cgo), const RTM_F_EQUALIZE ideal-int pkg syscall (linux-amd64-cgo), const RTM_F_NOTIFY ideal-int pkg syscall (linux-amd64-cgo), const RTM_F_PREFIX ideal-int pkg syscall (linux-amd64-cgo), const RTM_GETACTION ideal-int pkg syscall (linux-amd64-cgo), const RTM_GETADDR ideal-int pkg syscall (linux-amd64-cgo), const RTM_GETADDRLABEL ideal-int pkg syscall (linux-amd64-cgo), const RTM_GETANYCAST ideal-int pkg syscall (linux-amd64-cgo), const RTM_GETDCB ideal-int pkg syscall (linux-amd64-cgo), const RTM_GETLINK ideal-int pkg syscall (linux-amd64-cgo), const RTM_GETMULTICAST ideal-int pkg syscall (linux-amd64-cgo), const RTM_GETNEIGH ideal-int pkg syscall (linux-amd64-cgo), const RTM_GETNEIGHTBL ideal-int pkg syscall (linux-amd64-cgo), const RTM_GETQDISC ideal-int pkg syscall (linux-amd64-cgo), const RTM_GETROUTE ideal-int pkg syscall (linux-amd64-cgo), const RTM_GETRULE ideal-int pkg syscall (linux-amd64-cgo), const RTM_GETTCLASS ideal-int pkg syscall (linux-amd64-cgo), const RTM_GETTFILTER ideal-int pkg syscall (linux-amd64-cgo), const RTM_MAX ideal-int pkg syscall (linux-amd64-cgo), const RTM_NEWACTION ideal-int pkg syscall (linux-amd64-cgo), const RTM_NEWADDR ideal-int pkg syscall (linux-amd64-cgo), const RTM_NEWADDRLABEL ideal-int pkg syscall (linux-amd64-cgo), const RTM_NEWLINK ideal-int pkg syscall (linux-amd64-cgo), const RTM_NEWNDUSEROPT ideal-int pkg syscall (linux-amd64-cgo), const RTM_NEWNEIGH ideal-int pkg syscall (linux-amd64-cgo), const RTM_NEWNEIGHTBL ideal-int pkg syscall (linux-amd64-cgo), const RTM_NEWPREFIX ideal-int pkg syscall (linux-amd64-cgo), const RTM_NEWQDISC ideal-int pkg syscall (linux-amd64-cgo), const RTM_NEWROUTE ideal-int pkg syscall (linux-amd64-cgo), const RTM_NEWRULE ideal-int pkg syscall (linux-amd64-cgo), const RTM_NEWTCLASS ideal-int pkg syscall (linux-amd64-cgo), const RTM_NEWTFILTER ideal-int pkg syscall (linux-amd64-cgo), const RTM_NR_FAMILIES ideal-int pkg syscall (linux-amd64-cgo), const RTM_NR_MSGTYPES ideal-int pkg syscall (linux-amd64-cgo), const RTM_SETDCB ideal-int pkg syscall (linux-amd64-cgo), const RTM_SETLINK ideal-int pkg syscall (linux-amd64-cgo), const RTM_SETNEIGHTBL ideal-int pkg syscall (linux-amd64-cgo), const RTNH_ALIGNTO ideal-int pkg syscall (linux-amd64-cgo), const RTNH_F_DEAD ideal-int pkg syscall (linux-amd64-cgo), const RTNH_F_ONLINK ideal-int pkg syscall (linux-amd64-cgo), const RTNH_F_PERVASIVE ideal-int pkg syscall (linux-amd64-cgo), const RTN_ANYCAST ideal-int pkg syscall (linux-amd64-cgo), const RTN_BLACKHOLE ideal-int pkg syscall (linux-amd64-cgo), const RTN_BROADCAST ideal-int pkg syscall (linux-amd64-cgo), const RTN_LOCAL ideal-int pkg syscall (linux-amd64-cgo), const RTN_MAX ideal-int pkg syscall (linux-amd64-cgo), const RTN_MULTICAST ideal-int pkg syscall (linux-amd64-cgo), const RTN_NAT ideal-int pkg syscall (linux-amd64-cgo), const RTN_PROHIBIT ideal-int pkg syscall (linux-amd64-cgo), const RTN_THROW ideal-int pkg syscall (linux-amd64-cgo), const RTN_UNICAST ideal-int pkg syscall (linux-amd64-cgo), const RTN_UNREACHABLE ideal-int pkg syscall (linux-amd64-cgo), const RTN_UNSPEC ideal-int pkg syscall (linux-amd64-cgo), const RTN_XRESOLVE ideal-int pkg syscall (linux-amd64-cgo), const RTPROT_BIRD ideal-int pkg syscall (linux-amd64-cgo), const RTPROT_BOOT ideal-int pkg syscall (linux-amd64-cgo), const RTPROT_DHCP ideal-int pkg syscall (linux-amd64-cgo), const RTPROT_DNROUTED ideal-int pkg syscall (linux-amd64-cgo), const RTPROT_GATED ideal-int pkg syscall (linux-amd64-cgo), const RTPROT_KERNEL ideal-int pkg syscall (linux-amd64-cgo), const RTPROT_MRT ideal-int pkg syscall (linux-amd64-cgo), const RTPROT_NTK ideal-int pkg syscall (linux-amd64-cgo), const RTPROT_RA ideal-int pkg syscall (linux-amd64-cgo), const RTPROT_REDIRECT ideal-int pkg syscall (linux-amd64-cgo), const RTPROT_STATIC ideal-int pkg syscall (linux-amd64-cgo), const RTPROT_UNSPEC ideal-int pkg syscall (linux-amd64-cgo), const RTPROT_XORP ideal-int pkg syscall (linux-amd64-cgo), const RTPROT_ZEBRA ideal-int pkg syscall (linux-amd64-cgo), const RT_CLASS_DEFAULT ideal-int pkg syscall (linux-amd64-cgo), const RT_CLASS_LOCAL ideal-int pkg syscall (linux-amd64-cgo), const RT_CLASS_MAIN ideal-int pkg syscall (linux-amd64-cgo), const RT_CLASS_MAX ideal-int pkg syscall (linux-amd64-cgo), const RT_CLASS_UNSPEC ideal-int pkg syscall (linux-amd64-cgo), const RT_SCOPE_HOST ideal-int pkg syscall (linux-amd64-cgo), const RT_SCOPE_LINK ideal-int pkg syscall (linux-amd64-cgo), const RT_SCOPE_NOWHERE ideal-int pkg syscall (linux-amd64-cgo), const RT_SCOPE_SITE ideal-int pkg syscall (linux-amd64-cgo), const RT_SCOPE_UNIVERSE ideal-int pkg syscall (linux-amd64-cgo), const RT_TABLE_COMPAT ideal-int pkg syscall (linux-amd64-cgo), const RT_TABLE_DEFAULT ideal-int pkg syscall (linux-amd64-cgo), const RT_TABLE_LOCAL ideal-int pkg syscall (linux-amd64-cgo), const RT_TABLE_MAIN ideal-int pkg syscall (linux-amd64-cgo), const RT_TABLE_MAX ideal-int pkg syscall (linux-amd64-cgo), const RT_TABLE_UNSPEC ideal-int pkg syscall (linux-amd64-cgo), const RUSAGE_CHILDREN ideal-int pkg syscall (linux-amd64-cgo), const RUSAGE_SELF ideal-int pkg syscall (linux-amd64-cgo), const RUSAGE_THREAD ideal-int pkg syscall (linux-amd64-cgo), const SCM_CREDENTIALS ideal-int pkg syscall (linux-amd64-cgo), const SCM_RIGHTS ideal-int pkg syscall (linux-amd64-cgo), const SCM_TIMESTAMP ideal-int pkg syscall (linux-amd64-cgo), const SCM_TIMESTAMPING ideal-int pkg syscall (linux-amd64-cgo), const SCM_TIMESTAMPNS ideal-int pkg syscall (linux-amd64-cgo), const SIGCHLD Signal pkg syscall (linux-amd64-cgo), const SIGCLD Signal pkg syscall (linux-amd64-cgo), const SIGCONT Signal pkg syscall (linux-amd64-cgo), const SIGIO Signal pkg syscall (linux-amd64-cgo), const SIGIOT Signal pkg syscall (linux-amd64-cgo), const SIGPOLL Signal pkg syscall (linux-amd64-cgo), const SIGPROF Signal pkg syscall (linux-amd64-cgo), const SIGPWR Signal pkg syscall (linux-amd64-cgo), const SIGSTKFLT Signal pkg syscall (linux-amd64-cgo), const SIGSTOP Signal pkg syscall (linux-amd64-cgo), const SIGSYS Signal pkg syscall (linux-amd64-cgo), const SIGTSTP Signal pkg syscall (linux-amd64-cgo), const SIGTTIN Signal pkg syscall (linux-amd64-cgo), const SIGTTOU Signal pkg syscall (linux-amd64-cgo), const SIGUNUSED Signal pkg syscall (linux-amd64-cgo), const SIGURG Signal pkg syscall (linux-amd64-cgo), const SIGUSR1 Signal pkg syscall (linux-amd64-cgo), const SIGUSR2 Signal pkg syscall (linux-amd64-cgo), const SIGVTALRM Signal pkg syscall (linux-amd64-cgo), const SIGWINCH Signal pkg syscall (linux-amd64-cgo), const SIGXCPU Signal pkg syscall (linux-amd64-cgo), const SIGXFSZ Signal pkg syscall (linux-amd64-cgo), const SIOCADDDLCI ideal-int pkg syscall (linux-amd64-cgo), const SIOCADDMULTI ideal-int pkg syscall (linux-amd64-cgo), const SIOCADDRT ideal-int pkg syscall (linux-amd64-cgo), const SIOCATMARK ideal-int pkg syscall (linux-amd64-cgo), const SIOCDARP ideal-int pkg syscall (linux-amd64-cgo), const SIOCDELDLCI ideal-int pkg syscall (linux-amd64-cgo), const SIOCDELMULTI ideal-int pkg syscall (linux-amd64-cgo), const SIOCDELRT ideal-int pkg syscall (linux-amd64-cgo), const SIOCDEVPRIVATE ideal-int pkg syscall (linux-amd64-cgo), const SIOCDIFADDR ideal-int pkg syscall (linux-amd64-cgo), const SIOCDRARP ideal-int pkg syscall (linux-amd64-cgo), const SIOCGARP ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFADDR ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFBR ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFBRDADDR ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFCONF ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFCOUNT ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFDSTADDR ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFENCAP ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFFLAGS ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFHWADDR ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFINDEX ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFMAP ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFMEM ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFMETRIC ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFMTU ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFNAME ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFNETMASK ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFPFLAGS ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFSLAVE ideal-int pkg syscall (linux-amd64-cgo), const SIOCGIFTXQLEN ideal-int pkg syscall (linux-amd64-cgo), const SIOCGPGRP ideal-int pkg syscall (linux-amd64-cgo), const SIOCGRARP ideal-int pkg syscall (linux-amd64-cgo), const SIOCGSTAMP ideal-int pkg syscall (linux-amd64-cgo), const SIOCGSTAMPNS ideal-int pkg syscall (linux-amd64-cgo), const SIOCPROTOPRIVATE ideal-int pkg syscall (linux-amd64-cgo), const SIOCRTMSG ideal-int pkg syscall (linux-amd64-cgo), const SIOCSARP ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFADDR ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFBR ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFBRDADDR ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFDSTADDR ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFENCAP ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFFLAGS ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFHWADDR ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFHWBROADCAST ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFLINK ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFMAP ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFMEM ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFMETRIC ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFMTU ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFNAME ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFNETMASK ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFPFLAGS ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFSLAVE ideal-int pkg syscall (linux-amd64-cgo), const SIOCSIFTXQLEN ideal-int pkg syscall (linux-amd64-cgo), const SIOCSPGRP ideal-int pkg syscall (linux-amd64-cgo), const SIOCSRARP ideal-int pkg syscall (linux-amd64-cgo), const SOCK_CLOEXEC ideal-int pkg syscall (linux-amd64-cgo), const SOCK_DCCP ideal-int pkg syscall (linux-amd64-cgo), const SOCK_NONBLOCK ideal-int pkg syscall (linux-amd64-cgo), const SOCK_PACKET ideal-int pkg syscall (linux-amd64-cgo), const SOCK_RDM ideal-int pkg syscall (linux-amd64-cgo), const SOL_AAL ideal-int pkg syscall (linux-amd64-cgo), const SOL_ATM ideal-int pkg syscall (linux-amd64-cgo), const SOL_DECNET ideal-int pkg syscall (linux-amd64-cgo), const SOL_ICMPV6 ideal-int pkg syscall (linux-amd64-cgo), const SOL_IP ideal-int pkg syscall (linux-amd64-cgo), const SOL_IPV6 ideal-int pkg syscall (linux-amd64-cgo), const SOL_IRDA ideal-int pkg syscall (linux-amd64-cgo), const SOL_PACKET ideal-int pkg syscall (linux-amd64-cgo), const SOL_RAW ideal-int pkg syscall (linux-amd64-cgo), const SOL_TCP ideal-int pkg syscall (linux-amd64-cgo), const SOL_X25 ideal-int pkg syscall (linux-amd64-cgo), const SO_ACCEPTCONN ideal-int pkg syscall (linux-amd64-cgo), const SO_ATTACH_FILTER ideal-int pkg syscall (linux-amd64-cgo), const SO_BINDTODEVICE ideal-int pkg syscall (linux-amd64-cgo), const SO_BSDCOMPAT ideal-int pkg syscall (linux-amd64-cgo), const SO_DEBUG ideal-int pkg syscall (linux-amd64-cgo), const SO_DETACH_FILTER ideal-int pkg syscall (linux-amd64-cgo), const SO_DOMAIN ideal-int pkg syscall (linux-amd64-cgo), const SO_ERROR ideal-int pkg syscall (linux-amd64-cgo), const SO_MARK ideal-int pkg syscall (linux-amd64-cgo), const SO_NO_CHECK ideal-int pkg syscall (linux-amd64-cgo), const SO_OOBINLINE ideal-int pkg syscall (linux-amd64-cgo), const SO_PASSCRED ideal-int pkg syscall (linux-amd64-cgo), const SO_PASSSEC ideal-int pkg syscall (linux-amd64-cgo), const SO_PEERCRED ideal-int pkg syscall (linux-amd64-cgo), const SO_PEERNAME ideal-int pkg syscall (linux-amd64-cgo), const SO_PEERSEC ideal-int pkg syscall (linux-amd64-cgo), const SO_PRIORITY ideal-int pkg syscall (linux-amd64-cgo), const SO_PROTOCOL ideal-int pkg syscall (linux-amd64-cgo), const SO_RCVBUFFORCE ideal-int pkg syscall (linux-amd64-cgo), const SO_RCVLOWAT ideal-int pkg syscall (linux-amd64-cgo), const SO_RCVTIMEO ideal-int pkg syscall (linux-amd64-cgo), const SO_RXQ_OVFL ideal-int pkg syscall (linux-amd64-cgo), const SO_SECURITY_AUTHENTICATION ideal-int pkg syscall (linux-amd64-cgo), const SO_SECURITY_ENCRYPTION_NETWORK ideal-int pkg syscall (linux-amd64-cgo), const SO_SECURITY_ENCRYPTION_TRANSPORT ideal-int pkg syscall (linux-amd64-cgo), const SO_SNDBUFFORCE ideal-int pkg syscall (linux-amd64-cgo), const SO_SNDLOWAT ideal-int pkg syscall (linux-amd64-cgo), const SO_SNDTIMEO ideal-int pkg syscall (linux-amd64-cgo), const SO_TIMESTAMP ideal-int pkg syscall (linux-amd64-cgo), const SO_TIMESTAMPING ideal-int pkg syscall (linux-amd64-cgo), const SO_TIMESTAMPNS ideal-int pkg syscall (linux-amd64-cgo), const SO_TYPE ideal-int pkg syscall (linux-amd64-cgo), const SYS_ACCEPT ideal-int pkg syscall (linux-amd64-cgo), const SYS_ACCEPT4 ideal-int pkg syscall (linux-amd64-cgo), const SYS_ACCESS ideal-int pkg syscall (linux-amd64-cgo), const SYS_ACCT ideal-int pkg syscall (linux-amd64-cgo), const SYS_ADD_KEY ideal-int pkg syscall (linux-amd64-cgo), const SYS_ADJTIMEX ideal-int pkg syscall (linux-amd64-cgo), const SYS_AFS_SYSCALL ideal-int pkg syscall (linux-amd64-cgo), const SYS_ALARM ideal-int pkg syscall (linux-amd64-cgo), const SYS_ARCH_PRCTL ideal-int pkg syscall (linux-amd64-cgo), const SYS_BIND ideal-int pkg syscall (linux-amd64-cgo), const SYS_BRK ideal-int pkg syscall (linux-amd64-cgo), const SYS_CAPGET ideal-int pkg syscall (linux-amd64-cgo), const SYS_CAPSET ideal-int pkg syscall (linux-amd64-cgo), const SYS_CHDIR ideal-int pkg syscall (linux-amd64-cgo), const SYS_CHMOD ideal-int pkg syscall (linux-amd64-cgo), const SYS_CHOWN ideal-int pkg syscall (linux-amd64-cgo), const SYS_CHROOT ideal-int pkg syscall (linux-amd64-cgo), const SYS_CLOCK_GETRES ideal-int pkg syscall (linux-amd64-cgo), const SYS_CLOCK_GETTIME ideal-int pkg syscall (linux-amd64-cgo), const SYS_CLOCK_NANOSLEEP ideal-int pkg syscall (linux-amd64-cgo), const SYS_CLOCK_SETTIME ideal-int pkg syscall (linux-amd64-cgo), const SYS_CLONE ideal-int pkg syscall (linux-amd64-cgo), const SYS_CLOSE ideal-int pkg syscall (linux-amd64-cgo), const SYS_CONNECT ideal-int pkg syscall (linux-amd64-cgo), const SYS_CREAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_CREATE_MODULE ideal-int pkg syscall (linux-amd64-cgo), const SYS_DELETE_MODULE ideal-int pkg syscall (linux-amd64-cgo), const SYS_DUP ideal-int pkg syscall (linux-amd64-cgo), const SYS_DUP2 ideal-int pkg syscall (linux-amd64-cgo), const SYS_DUP3 ideal-int pkg syscall (linux-amd64-cgo), const SYS_EPOLL_CREATE ideal-int pkg syscall (linux-amd64-cgo), const SYS_EPOLL_CREATE1 ideal-int pkg syscall (linux-amd64-cgo), const SYS_EPOLL_CTL ideal-int pkg syscall (linux-amd64-cgo), const SYS_EPOLL_CTL_OLD ideal-int pkg syscall (linux-amd64-cgo), const SYS_EPOLL_PWAIT ideal-int pkg syscall (linux-amd64-cgo), const SYS_EPOLL_WAIT ideal-int pkg syscall (linux-amd64-cgo), const SYS_EPOLL_WAIT_OLD ideal-int pkg syscall (linux-amd64-cgo), const SYS_EVENTFD ideal-int pkg syscall (linux-amd64-cgo), const SYS_EVENTFD2 ideal-int pkg syscall (linux-amd64-cgo), const SYS_EXECVE ideal-int pkg syscall (linux-amd64-cgo), const SYS_EXIT ideal-int pkg syscall (linux-amd64-cgo), const SYS_EXIT_GROUP ideal-int pkg syscall (linux-amd64-cgo), const SYS_FACCESSAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_FADVISE64 ideal-int pkg syscall (linux-amd64-cgo), const SYS_FALLOCATE ideal-int pkg syscall (linux-amd64-cgo), const SYS_FANOTIFY_INIT ideal-int pkg syscall (linux-amd64-cgo), const SYS_FANOTIFY_MARK ideal-int pkg syscall (linux-amd64-cgo), const SYS_FCHDIR ideal-int pkg syscall (linux-amd64-cgo), const SYS_FCHMOD ideal-int pkg syscall (linux-amd64-cgo), const SYS_FCHMODAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_FCHOWN ideal-int pkg syscall (linux-amd64-cgo), const SYS_FCHOWNAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_FCNTL ideal-int pkg syscall (linux-amd64-cgo), const SYS_FDATASYNC ideal-int pkg syscall (linux-amd64-cgo), const SYS_FGETXATTR ideal-int pkg syscall (linux-amd64-cgo), const SYS_FLISTXATTR ideal-int pkg syscall (linux-amd64-cgo), const SYS_FLOCK ideal-int pkg syscall (linux-amd64-cgo), const SYS_FORK ideal-int pkg syscall (linux-amd64-cgo), const SYS_FREMOVEXATTR ideal-int pkg syscall (linux-amd64-cgo), const SYS_FSETXATTR ideal-int pkg syscall (linux-amd64-cgo), const SYS_FSTAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_FSTATFS ideal-int pkg syscall (linux-amd64-cgo), const SYS_FSYNC ideal-int pkg syscall (linux-amd64-cgo), const SYS_FTRUNCATE ideal-int pkg syscall (linux-amd64-cgo), const SYS_FUTEX ideal-int pkg syscall (linux-amd64-cgo), const SYS_FUTIMESAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETCWD ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETDENTS ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETDENTS64 ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETEGID ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETEUID ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETGID ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETGROUPS ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETITIMER ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETPEERNAME ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETPGID ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETPGRP ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETPID ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETPMSG ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETPPID ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETPRIORITY ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETRESGID ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETRESUID ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETRLIMIT ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETRUSAGE ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETSID ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETSOCKNAME ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETSOCKOPT ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETTID ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETTIMEOFDAY ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETUID ideal-int pkg syscall (linux-amd64-cgo), const SYS_GETXATTR ideal-int pkg syscall (linux-amd64-cgo), const SYS_GET_KERNEL_SYMS ideal-int pkg syscall (linux-amd64-cgo), const SYS_GET_MEMPOLICY ideal-int pkg syscall (linux-amd64-cgo), const SYS_GET_ROBUST_LIST ideal-int pkg syscall (linux-amd64-cgo), const SYS_GET_THREAD_AREA ideal-int pkg syscall (linux-amd64-cgo), const SYS_INIT_MODULE ideal-int pkg syscall (linux-amd64-cgo), const SYS_INOTIFY_ADD_WATCH ideal-int pkg syscall (linux-amd64-cgo), const SYS_INOTIFY_INIT ideal-int pkg syscall (linux-amd64-cgo), const SYS_INOTIFY_INIT1 ideal-int pkg syscall (linux-amd64-cgo), const SYS_INOTIFY_RM_WATCH ideal-int pkg syscall (linux-amd64-cgo), const SYS_IOCTL ideal-int pkg syscall (linux-amd64-cgo), const SYS_IOPERM ideal-int pkg syscall (linux-amd64-cgo), const SYS_IOPL ideal-int pkg syscall (linux-amd64-cgo), const SYS_IOPRIO_GET ideal-int pkg syscall (linux-amd64-cgo), const SYS_IOPRIO_SET ideal-int pkg syscall (linux-amd64-cgo), const SYS_IO_CANCEL ideal-int pkg syscall (linux-amd64-cgo), const SYS_IO_DESTROY ideal-int pkg syscall (linux-amd64-cgo), const SYS_IO_GETEVENTS ideal-int pkg syscall (linux-amd64-cgo), const SYS_IO_SETUP ideal-int pkg syscall (linux-amd64-cgo), const SYS_IO_SUBMIT ideal-int pkg syscall (linux-amd64-cgo), const SYS_KEXEC_LOAD ideal-int pkg syscall (linux-amd64-cgo), const SYS_KEYCTL ideal-int pkg syscall (linux-amd64-cgo), const SYS_KILL ideal-int pkg syscall (linux-amd64-cgo), const SYS_LCHOWN ideal-int pkg syscall (linux-amd64-cgo), const SYS_LGETXATTR ideal-int pkg syscall (linux-amd64-cgo), const SYS_LINK ideal-int pkg syscall (linux-amd64-cgo), const SYS_LINKAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_LISTEN ideal-int pkg syscall (linux-amd64-cgo), const SYS_LISTXATTR ideal-int pkg syscall (linux-amd64-cgo), const SYS_LLISTXATTR ideal-int pkg syscall (linux-amd64-cgo), const SYS_LOOKUP_DCOOKIE ideal-int pkg syscall (linux-amd64-cgo), const SYS_LREMOVEXATTR ideal-int pkg syscall (linux-amd64-cgo), const SYS_LSEEK ideal-int pkg syscall (linux-amd64-cgo), const SYS_LSETXATTR ideal-int pkg syscall (linux-amd64-cgo), const SYS_LSTAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_MADVISE ideal-int pkg syscall (linux-amd64-cgo), const SYS_MBIND ideal-int pkg syscall (linux-amd64-cgo), const SYS_MIGRATE_PAGES ideal-int pkg syscall (linux-amd64-cgo), const SYS_MINCORE ideal-int pkg syscall (linux-amd64-cgo), const SYS_MKDIR ideal-int pkg syscall (linux-amd64-cgo), const SYS_MKDIRAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_MKNOD ideal-int pkg syscall (linux-amd64-cgo), const SYS_MKNODAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_MLOCK ideal-int pkg syscall (linux-amd64-cgo), const SYS_MLOCKALL ideal-int pkg syscall (linux-amd64-cgo), const SYS_MMAP ideal-int pkg syscall (linux-amd64-cgo), const SYS_MODIFY_LDT ideal-int pkg syscall (linux-amd64-cgo), const SYS_MOUNT ideal-int pkg syscall (linux-amd64-cgo), const SYS_MOVE_PAGES ideal-int pkg syscall (linux-amd64-cgo), const SYS_MPROTECT ideal-int pkg syscall (linux-amd64-cgo), const SYS_MQ_GETSETATTR ideal-int pkg syscall (linux-amd64-cgo), const SYS_MQ_NOTIFY ideal-int pkg syscall (linux-amd64-cgo), const SYS_MQ_OPEN ideal-int pkg syscall (linux-amd64-cgo), const SYS_MQ_TIMEDRECEIVE ideal-int pkg syscall (linux-amd64-cgo), const SYS_MQ_TIMEDSEND ideal-int pkg syscall (linux-amd64-cgo), const SYS_MQ_UNLINK ideal-int pkg syscall (linux-amd64-cgo), const SYS_MREMAP ideal-int pkg syscall (linux-amd64-cgo), const SYS_MSGCTL ideal-int pkg syscall (linux-amd64-cgo), const SYS_MSGGET ideal-int pkg syscall (linux-amd64-cgo), const SYS_MSGRCV ideal-int pkg syscall (linux-amd64-cgo), const SYS_MSGSND ideal-int pkg syscall (linux-amd64-cgo), const SYS_MSYNC ideal-int pkg syscall (linux-amd64-cgo), const SYS_MUNLOCK ideal-int pkg syscall (linux-amd64-cgo), const SYS_MUNLOCKALL ideal-int pkg syscall (linux-amd64-cgo), const SYS_MUNMAP ideal-int pkg syscall (linux-amd64-cgo), const SYS_NANOSLEEP ideal-int pkg syscall (linux-amd64-cgo), const SYS_NEWFSTATAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_NFSSERVCTL ideal-int pkg syscall (linux-amd64-cgo), const SYS_OPEN ideal-int pkg syscall (linux-amd64-cgo), const SYS_OPENAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_PAUSE ideal-int pkg syscall (linux-amd64-cgo), const SYS_PERF_EVENT_OPEN ideal-int pkg syscall (linux-amd64-cgo), const SYS_PERSONALITY ideal-int pkg syscall (linux-amd64-cgo), const SYS_PIPE ideal-int pkg syscall (linux-amd64-cgo), const SYS_PIPE2 ideal-int pkg syscall (linux-amd64-cgo), const SYS_PIVOT_ROOT ideal-int pkg syscall (linux-amd64-cgo), const SYS_POLL ideal-int pkg syscall (linux-amd64-cgo), const SYS_PPOLL ideal-int pkg syscall (linux-amd64-cgo), const SYS_PRCTL ideal-int pkg syscall (linux-amd64-cgo), const SYS_PREAD64 ideal-int pkg syscall (linux-amd64-cgo), const SYS_PREADV ideal-int pkg syscall (linux-amd64-cgo), const SYS_PRLIMIT64 ideal-int pkg syscall (linux-amd64-cgo), const SYS_PSELECT6 ideal-int pkg syscall (linux-amd64-cgo), const SYS_PTRACE ideal-int pkg syscall (linux-amd64-cgo), const SYS_PUTPMSG ideal-int pkg syscall (linux-amd64-cgo), const SYS_PWRITE64 ideal-int pkg syscall (linux-amd64-cgo), const SYS_PWRITEV ideal-int pkg syscall (linux-amd64-cgo), const SYS_QUERY_MODULE ideal-int pkg syscall (linux-amd64-cgo), const SYS_QUOTACTL ideal-int pkg syscall (linux-amd64-cgo), const SYS_READ ideal-int pkg syscall (linux-amd64-cgo), const SYS_READAHEAD ideal-int pkg syscall (linux-amd64-cgo), const SYS_READLINK ideal-int pkg syscall (linux-amd64-cgo), const SYS_READLINKAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_READV ideal-int pkg syscall (linux-amd64-cgo), const SYS_REBOOT ideal-int pkg syscall (linux-amd64-cgo), const SYS_RECVFROM ideal-int pkg syscall (linux-amd64-cgo), const SYS_RECVMMSG ideal-int pkg syscall (linux-amd64-cgo), const SYS_RECVMSG ideal-int pkg syscall (linux-amd64-cgo), const SYS_REMAP_FILE_PAGES ideal-int pkg syscall (linux-amd64-cgo), const SYS_REMOVEXATTR ideal-int pkg syscall (linux-amd64-cgo), const SYS_RENAME ideal-int pkg syscall (linux-amd64-cgo), const SYS_RENAMEAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_REQUEST_KEY ideal-int pkg syscall (linux-amd64-cgo), const SYS_RESTART_SYSCALL ideal-int pkg syscall (linux-amd64-cgo), const SYS_RMDIR ideal-int pkg syscall (linux-amd64-cgo), const SYS_RT_SIGACTION ideal-int pkg syscall (linux-amd64-cgo), const SYS_RT_SIGPENDING ideal-int pkg syscall (linux-amd64-cgo), const SYS_RT_SIGPROCMASK ideal-int pkg syscall (linux-amd64-cgo), const SYS_RT_SIGQUEUEINFO ideal-int pkg syscall (linux-amd64-cgo), const SYS_RT_SIGRETURN ideal-int pkg syscall (linux-amd64-cgo), const SYS_RT_SIGSUSPEND ideal-int pkg syscall (linux-amd64-cgo), const SYS_RT_SIGTIMEDWAIT ideal-int pkg syscall (linux-amd64-cgo), const SYS_RT_TGSIGQUEUEINFO ideal-int pkg syscall (linux-amd64-cgo), const SYS_SCHED_GETAFFINITY ideal-int pkg syscall (linux-amd64-cgo), const SYS_SCHED_GETPARAM ideal-int pkg syscall (linux-amd64-cgo), const SYS_SCHED_GETSCHEDULER ideal-int pkg syscall (linux-amd64-cgo), const SYS_SCHED_GET_PRIORITY_MAX ideal-int pkg syscall (linux-amd64-cgo), const SYS_SCHED_GET_PRIORITY_MIN ideal-int pkg syscall (linux-amd64-cgo), const SYS_SCHED_RR_GET_INTERVAL ideal-int pkg syscall (linux-amd64-cgo), const SYS_SCHED_SETAFFINITY ideal-int pkg syscall (linux-amd64-cgo), const SYS_SCHED_SETPARAM ideal-int pkg syscall (linux-amd64-cgo), const SYS_SCHED_SETSCHEDULER ideal-int pkg syscall (linux-amd64-cgo), const SYS_SCHED_YIELD ideal-int pkg syscall (linux-amd64-cgo), const SYS_SECURITY ideal-int pkg syscall (linux-amd64-cgo), const SYS_SELECT ideal-int pkg syscall (linux-amd64-cgo), const SYS_SEMCTL ideal-int pkg syscall (linux-amd64-cgo), const SYS_SEMGET ideal-int pkg syscall (linux-amd64-cgo), const SYS_SEMOP ideal-int pkg syscall (linux-amd64-cgo), const SYS_SEMTIMEDOP ideal-int pkg syscall (linux-amd64-cgo), const SYS_SENDFILE ideal-int pkg syscall (linux-amd64-cgo), const SYS_SENDMSG ideal-int pkg syscall (linux-amd64-cgo), const SYS_SENDTO ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETDOMAINNAME ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETFSGID ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETFSUID ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETGID ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETGROUPS ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETHOSTNAME ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETITIMER ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETPGID ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETPRIORITY ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETREGID ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETRESGID ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETRESUID ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETREUID ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETRLIMIT ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETSID ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETSOCKOPT ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETTIMEOFDAY ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETUID ideal-int pkg syscall (linux-amd64-cgo), const SYS_SETXATTR ideal-int pkg syscall (linux-amd64-cgo), const SYS_SET_MEMPOLICY ideal-int pkg syscall (linux-amd64-cgo), const SYS_SET_ROBUST_LIST ideal-int pkg syscall (linux-amd64-cgo), const SYS_SET_THREAD_AREA ideal-int pkg syscall (linux-amd64-cgo), const SYS_SET_TID_ADDRESS ideal-int pkg syscall (linux-amd64-cgo), const SYS_SHMAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_SHMCTL ideal-int pkg syscall (linux-amd64-cgo), const SYS_SHMDT ideal-int pkg syscall (linux-amd64-cgo), const SYS_SHMGET ideal-int pkg syscall (linux-amd64-cgo), const SYS_SHUTDOWN ideal-int pkg syscall (linux-amd64-cgo), const SYS_SIGALTSTACK ideal-int pkg syscall (linux-amd64-cgo), const SYS_SIGNALFD ideal-int pkg syscall (linux-amd64-cgo), const SYS_SIGNALFD4 ideal-int pkg syscall (linux-amd64-cgo), const SYS_SOCKET ideal-int pkg syscall (linux-amd64-cgo), const SYS_SOCKETPAIR ideal-int pkg syscall (linux-amd64-cgo), const SYS_SPLICE ideal-int pkg syscall (linux-amd64-cgo), const SYS_STAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_STATFS ideal-int pkg syscall (linux-amd64-cgo), const SYS_SWAPOFF ideal-int pkg syscall (linux-amd64-cgo), const SYS_SWAPON ideal-int pkg syscall (linux-amd64-cgo), const SYS_SYMLINK ideal-int pkg syscall (linux-amd64-cgo), const SYS_SYMLINKAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_SYNC ideal-int pkg syscall (linux-amd64-cgo), const SYS_SYNC_FILE_RANGE ideal-int pkg syscall (linux-amd64-cgo), const SYS_SYSFS ideal-int pkg syscall (linux-amd64-cgo), const SYS_SYSINFO ideal-int pkg syscall (linux-amd64-cgo), const SYS_SYSLOG ideal-int pkg syscall (linux-amd64-cgo), const SYS_TEE ideal-int pkg syscall (linux-amd64-cgo), const SYS_TGKILL ideal-int pkg syscall (linux-amd64-cgo), const SYS_TIME ideal-int pkg syscall (linux-amd64-cgo), const SYS_TIMERFD_CREATE ideal-int pkg syscall (linux-amd64-cgo), const SYS_TIMERFD_GETTIME ideal-int pkg syscall (linux-amd64-cgo), const SYS_TIMERFD_SETTIME ideal-int pkg syscall (linux-amd64-cgo), const SYS_TIMER_CREATE ideal-int pkg syscall (linux-amd64-cgo), const SYS_TIMER_DELETE ideal-int pkg syscall (linux-amd64-cgo), const SYS_TIMER_GETOVERRUN ideal-int pkg syscall (linux-amd64-cgo), const SYS_TIMER_GETTIME ideal-int pkg syscall (linux-amd64-cgo), const SYS_TIMER_SETTIME ideal-int pkg syscall (linux-amd64-cgo), const SYS_TIMES ideal-int pkg syscall (linux-amd64-cgo), const SYS_TKILL ideal-int pkg syscall (linux-amd64-cgo), const SYS_TRUNCATE ideal-int pkg syscall (linux-amd64-cgo), const SYS_TUXCALL ideal-int pkg syscall (linux-amd64-cgo), const SYS_UMASK ideal-int pkg syscall (linux-amd64-cgo), const SYS_UMOUNT2 ideal-int pkg syscall (linux-amd64-cgo), const SYS_UNAME ideal-int pkg syscall (linux-amd64-cgo), const SYS_UNLINK ideal-int pkg syscall (linux-amd64-cgo), const SYS_UNLINKAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_UNSHARE ideal-int pkg syscall (linux-amd64-cgo), const SYS_USELIB ideal-int pkg syscall (linux-amd64-cgo), const SYS_USTAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_UTIME ideal-int pkg syscall (linux-amd64-cgo), const SYS_UTIMENSAT ideal-int pkg syscall (linux-amd64-cgo), const SYS_UTIMES ideal-int pkg syscall (linux-amd64-cgo), const SYS_VFORK ideal-int pkg syscall (linux-amd64-cgo), const SYS_VHANGUP ideal-int pkg syscall (linux-amd64-cgo), const SYS_VMSPLICE ideal-int pkg syscall (linux-amd64-cgo), const SYS_VSERVER ideal-int pkg syscall (linux-amd64-cgo), const SYS_WAIT4 ideal-int pkg syscall (linux-amd64-cgo), const SYS_WAITID ideal-int pkg syscall (linux-amd64-cgo), const SYS_WRITE ideal-int pkg syscall (linux-amd64-cgo), const SYS_WRITEV ideal-int pkg syscall (linux-amd64-cgo), const SYS__SYSCTL ideal-int pkg syscall (linux-amd64-cgo), const S_BLKSIZE ideal-int pkg syscall (linux-amd64-cgo), const S_IEXEC ideal-int pkg syscall (linux-amd64-cgo), const S_IREAD ideal-int pkg syscall (linux-amd64-cgo), const S_IRGRP ideal-int pkg syscall (linux-amd64-cgo), const S_IROTH ideal-int pkg syscall (linux-amd64-cgo), const S_IRWXG ideal-int pkg syscall (linux-amd64-cgo), const S_IRWXO ideal-int pkg syscall (linux-amd64-cgo), const S_IRWXU ideal-int pkg syscall (linux-amd64-cgo), const S_IWGRP ideal-int pkg syscall (linux-amd64-cgo), const S_IWOTH ideal-int pkg syscall (linux-amd64-cgo), const S_IWRITE ideal-int pkg syscall (linux-amd64-cgo), const S_IXGRP ideal-int pkg syscall (linux-amd64-cgo), const S_IXOTH ideal-int pkg syscall (linux-amd64-cgo), const SizeofCmsghdr ideal-int pkg syscall (linux-amd64-cgo), const SizeofIPMreq ideal-int pkg syscall (linux-amd64-cgo), const SizeofIPMreqn ideal-int pkg syscall (linux-amd64-cgo), const SizeofIPv6Mreq ideal-int pkg syscall (linux-amd64-cgo), const SizeofIfAddrmsg ideal-int pkg syscall (linux-amd64-cgo), const SizeofIfInfomsg ideal-int pkg syscall (linux-amd64-cgo), const SizeofInet4Pktinfo ideal-int pkg syscall (linux-amd64-cgo), const SizeofInet6Pktinfo ideal-int pkg syscall (linux-amd64-cgo), const SizeofInotifyEvent ideal-int pkg syscall (linux-amd64-cgo), const SizeofLinger ideal-int pkg syscall (linux-amd64-cgo), const SizeofMsghdr ideal-int pkg syscall (linux-amd64-cgo), const SizeofNlAttr ideal-int pkg syscall (linux-amd64-cgo), const SizeofNlMsgerr ideal-int pkg syscall (linux-amd64-cgo), const SizeofNlMsghdr ideal-int pkg syscall (linux-amd64-cgo), const SizeofRtAttr ideal-int pkg syscall (linux-amd64-cgo), const SizeofRtGenmsg ideal-int pkg syscall (linux-amd64-cgo), const SizeofRtMsg ideal-int pkg syscall (linux-amd64-cgo), const SizeofRtNexthop ideal-int pkg syscall (linux-amd64-cgo), const SizeofSockFilter ideal-int pkg syscall (linux-amd64-cgo), const SizeofSockFprog ideal-int pkg syscall (linux-amd64-cgo), const SizeofSockaddrAny ideal-int pkg syscall (linux-amd64-cgo), const SizeofSockaddrInet4 ideal-int pkg syscall (linux-amd64-cgo), const SizeofSockaddrInet6 ideal-int pkg syscall (linux-amd64-cgo), const SizeofSockaddrLinklayer ideal-int pkg syscall (linux-amd64-cgo), const SizeofSockaddrNetlink ideal-int pkg syscall (linux-amd64-cgo), const SizeofSockaddrUnix ideal-int pkg syscall (linux-amd64-cgo), const SizeofUcred ideal-int pkg syscall (linux-amd64-cgo), const TCGETS ideal-int pkg syscall (linux-amd64-cgo), const TCP_CONGESTION ideal-int pkg syscall (linux-amd64-cgo), const TCP_CORK ideal-int pkg syscall (linux-amd64-cgo), const TCP_DEFER_ACCEPT ideal-int pkg syscall (linux-amd64-cgo), const TCP_INFO ideal-int pkg syscall (linux-amd64-cgo), const TCP_KEEPCNT ideal-int pkg syscall (linux-amd64-cgo), const TCP_KEEPIDLE ideal-int pkg syscall (linux-amd64-cgo), const TCP_KEEPINTVL ideal-int pkg syscall (linux-amd64-cgo), const TCP_LINGER2 ideal-int pkg syscall (linux-amd64-cgo), const TCP_MAXSEG ideal-int pkg syscall (linux-amd64-cgo), const TCP_MAXWIN ideal-int pkg syscall (linux-amd64-cgo), const TCP_MAX_WINSHIFT ideal-int pkg syscall (linux-amd64-cgo), const TCP_MD5SIG ideal-int pkg syscall (linux-amd64-cgo), const TCP_MD5SIG_MAXKEYLEN ideal-int pkg syscall (linux-amd64-cgo), const TCP_MSS ideal-int pkg syscall (linux-amd64-cgo), const TCP_QUICKACK ideal-int pkg syscall (linux-amd64-cgo), const TCP_SYNCNT ideal-int pkg syscall (linux-amd64-cgo), const TCP_WINDOW_CLAMP ideal-int pkg syscall (linux-amd64-cgo), const TCSETS ideal-int pkg syscall (linux-amd64-cgo), const TIOCCBRK ideal-int pkg syscall (linux-amd64-cgo), const TIOCCONS ideal-int pkg syscall (linux-amd64-cgo), const TIOCEXCL ideal-int pkg syscall (linux-amd64-cgo), const TIOCGDEV ideal-int pkg syscall (linux-amd64-cgo), const TIOCGETD ideal-int pkg syscall (linux-amd64-cgo), const TIOCGICOUNT ideal-int pkg syscall (linux-amd64-cgo), const TIOCGLCKTRMIOS ideal-int pkg syscall (linux-amd64-cgo), const TIOCGPGRP ideal-int pkg syscall (linux-amd64-cgo), const TIOCGPTN ideal-int pkg syscall (linux-amd64-cgo), const TIOCGRS485 ideal-int pkg syscall (linux-amd64-cgo), const TIOCGSERIAL ideal-int pkg syscall (linux-amd64-cgo), const TIOCGSID ideal-int pkg syscall (linux-amd64-cgo), const TIOCGSOFTCAR ideal-int pkg syscall (linux-amd64-cgo), const TIOCGWINSZ ideal-int pkg syscall (linux-amd64-cgo), const TIOCINQ ideal-int pkg syscall (linux-amd64-cgo), const TIOCLINUX ideal-int pkg syscall (linux-amd64-cgo), const TIOCMBIC ideal-int pkg syscall (linux-amd64-cgo), const TIOCMBIS ideal-int pkg syscall (linux-amd64-cgo), const TIOCMGET ideal-int pkg syscall (linux-amd64-cgo), const TIOCMIWAIT ideal-int pkg syscall (linux-amd64-cgo), const TIOCMSET ideal-int pkg syscall (linux-amd64-cgo), const TIOCM_CAR ideal-int pkg syscall (linux-amd64-cgo), const TIOCM_CD ideal-int pkg syscall (linux-amd64-cgo), const TIOCM_CTS ideal-int pkg syscall (linux-amd64-cgo), const TIOCM_DSR ideal-int pkg syscall (linux-amd64-cgo), const TIOCM_DTR ideal-int pkg syscall (linux-amd64-cgo), const TIOCM_LE ideal-int pkg syscall (linux-amd64-cgo), const TIOCM_RI ideal-int pkg syscall (linux-amd64-cgo), const TIOCM_RNG ideal-int pkg syscall (linux-amd64-cgo), const TIOCM_RTS ideal-int pkg syscall (linux-amd64-cgo), const TIOCM_SR ideal-int pkg syscall (linux-amd64-cgo), const TIOCM_ST ideal-int pkg syscall (linux-amd64-cgo), const TIOCNOTTY ideal-int pkg syscall (linux-amd64-cgo), const TIOCNXCL ideal-int pkg syscall (linux-amd64-cgo), const TIOCOUTQ ideal-int pkg syscall (linux-amd64-cgo), const TIOCPKT ideal-int pkg syscall (linux-amd64-cgo), const TIOCPKT_DATA ideal-int pkg syscall (linux-amd64-cgo), const TIOCPKT_DOSTOP ideal-int pkg syscall (linux-amd64-cgo), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (linux-amd64-cgo), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (linux-amd64-cgo), const TIOCPKT_IOCTL ideal-int pkg syscall (linux-amd64-cgo), const TIOCPKT_NOSTOP ideal-int pkg syscall (linux-amd64-cgo), const TIOCPKT_START ideal-int pkg syscall (linux-amd64-cgo), const TIOCPKT_STOP ideal-int pkg syscall (linux-amd64-cgo), const TIOCSBRK ideal-int pkg syscall (linux-amd64-cgo), const TIOCSCTTY ideal-int pkg syscall (linux-amd64-cgo), const TIOCSERCONFIG ideal-int pkg syscall (linux-amd64-cgo), const TIOCSERGETLSR ideal-int pkg syscall (linux-amd64-cgo), const TIOCSERGETMULTI ideal-int pkg syscall (linux-amd64-cgo), const TIOCSERGSTRUCT ideal-int pkg syscall (linux-amd64-cgo), const TIOCSERGWILD ideal-int pkg syscall (linux-amd64-cgo), const TIOCSERSETMULTI ideal-int pkg syscall (linux-amd64-cgo), const TIOCSERSWILD ideal-int pkg syscall (linux-amd64-cgo), const TIOCSER_TEMT ideal-int pkg syscall (linux-amd64-cgo), const TIOCSETD ideal-int pkg syscall (linux-amd64-cgo), const TIOCSIG ideal-int pkg syscall (linux-amd64-cgo), const TIOCSLCKTRMIOS ideal-int pkg syscall (linux-amd64-cgo), const TIOCSPGRP ideal-int pkg syscall (linux-amd64-cgo), const TIOCSPTLCK ideal-int pkg syscall (linux-amd64-cgo), const TIOCSRS485 ideal-int pkg syscall (linux-amd64-cgo), const TIOCSSERIAL ideal-int pkg syscall (linux-amd64-cgo), const TIOCSSOFTCAR ideal-int pkg syscall (linux-amd64-cgo), const TIOCSTI ideal-int pkg syscall (linux-amd64-cgo), const TIOCSWINSZ ideal-int pkg syscall (linux-amd64-cgo), const TOSTOP ideal-int pkg syscall (linux-amd64-cgo), const TUNATTACHFILTER ideal-int pkg syscall (linux-amd64-cgo), const TUNDETACHFILTER ideal-int pkg syscall (linux-amd64-cgo), const TUNGETFEATURES ideal-int pkg syscall (linux-amd64-cgo), const TUNGETIFF ideal-int pkg syscall (linux-amd64-cgo), const TUNGETSNDBUF ideal-int pkg syscall (linux-amd64-cgo), const TUNGETVNETHDRSZ ideal-int pkg syscall (linux-amd64-cgo), const TUNSETDEBUG ideal-int pkg syscall (linux-amd64-cgo), const TUNSETGROUP ideal-int pkg syscall (linux-amd64-cgo), const TUNSETIFF ideal-int pkg syscall (linux-amd64-cgo), const TUNSETLINK ideal-int pkg syscall (linux-amd64-cgo), const TUNSETNOCSUM ideal-int pkg syscall (linux-amd64-cgo), const TUNSETOFFLOAD ideal-int pkg syscall (linux-amd64-cgo), const TUNSETOWNER ideal-int pkg syscall (linux-amd64-cgo), const TUNSETPERSIST ideal-int pkg syscall (linux-amd64-cgo), const TUNSETSNDBUF ideal-int pkg syscall (linux-amd64-cgo), const TUNSETTXFILTER ideal-int pkg syscall (linux-amd64-cgo), const TUNSETVNETHDRSZ ideal-int pkg syscall (linux-amd64-cgo), const VDISCARD ideal-int pkg syscall (linux-amd64-cgo), const VEOF ideal-int pkg syscall (linux-amd64-cgo), const VEOL ideal-int pkg syscall (linux-amd64-cgo), const VEOL2 ideal-int pkg syscall (linux-amd64-cgo), const VERASE ideal-int pkg syscall (linux-amd64-cgo), const VINTR ideal-int pkg syscall (linux-amd64-cgo), const VKILL ideal-int pkg syscall (linux-amd64-cgo), const VLNEXT ideal-int pkg syscall (linux-amd64-cgo), const VMIN ideal-int pkg syscall (linux-amd64-cgo), const VQUIT ideal-int pkg syscall (linux-amd64-cgo), const VREPRINT ideal-int pkg syscall (linux-amd64-cgo), const VSTART ideal-int pkg syscall (linux-amd64-cgo), const VSTOP ideal-int pkg syscall (linux-amd64-cgo), const VSUSP ideal-int pkg syscall (linux-amd64-cgo), const VSWTC ideal-int pkg syscall (linux-amd64-cgo), const VTIME ideal-int pkg syscall (linux-amd64-cgo), const VWERASE ideal-int pkg syscall (linux-amd64-cgo), const WALL ideal-int pkg syscall (linux-amd64-cgo), const WCLONE ideal-int pkg syscall (linux-amd64-cgo), const WCONTINUED ideal-int pkg syscall (linux-amd64-cgo), const WEXITED ideal-int pkg syscall (linux-amd64-cgo), const WNOHANG ideal-int pkg syscall (linux-amd64-cgo), const WNOTHREAD ideal-int pkg syscall (linux-amd64-cgo), const WNOWAIT ideal-int pkg syscall (linux-amd64-cgo), const WORDSIZE ideal-int pkg syscall (linux-amd64-cgo), const WSTOPPED ideal-int pkg syscall (linux-amd64-cgo), const WUNTRACED ideal-int pkg syscall (linux-amd64-cgo), const XCASE ideal-int pkg syscall (linux-amd64-cgo), func Accept(int) (int, Sockaddr, error) pkg syscall (linux-amd64-cgo), func Access(string, uint32) error pkg syscall (linux-amd64-cgo), func Acct(string) error pkg syscall (linux-amd64-cgo), func Adjtimex(*Timex) (int, error) pkg syscall (linux-amd64-cgo), func AttachLsf(int, []SockFilter) error pkg syscall (linux-amd64-cgo), func Bind(int, Sockaddr) error pkg syscall (linux-amd64-cgo), func BindToDevice(int, string) error pkg syscall (linux-amd64-cgo), func Chroot(string) error pkg syscall (linux-amd64-cgo), func Close(int) error pkg syscall (linux-amd64-cgo), func CloseOnExec(int) pkg syscall (linux-amd64-cgo), func CmsgLen(int) int pkg syscall (linux-amd64-cgo), func CmsgSpace(int) int pkg syscall (linux-amd64-cgo), func Connect(int, Sockaddr) error pkg syscall (linux-amd64-cgo), func Creat(string, uint32) (int, error) pkg syscall (linux-amd64-cgo), func DetachLsf(int) error pkg syscall (linux-amd64-cgo), func Dup(int) (int, error) pkg syscall (linux-amd64-cgo), func Dup2(int, int) error pkg syscall (linux-amd64-cgo), func EpollCreate(int) (int, error) pkg syscall (linux-amd64-cgo), func EpollCreate1(int) (int, error) pkg syscall (linux-amd64-cgo), func EpollCtl(int, int, int, *EpollEvent) error pkg syscall (linux-amd64-cgo), func EpollWait(int, []EpollEvent, int) (int, error) pkg syscall (linux-amd64-cgo), func Faccessat(int, string, uint32, int) error pkg syscall (linux-amd64-cgo), func Fallocate(int, uint32, int64, int64) error pkg syscall (linux-amd64-cgo), func Fchdir(int) error pkg syscall (linux-amd64-cgo), func Fchmod(int, uint32) error pkg syscall (linux-amd64-cgo), func Fchmodat(int, string, uint32, int) error pkg syscall (linux-amd64-cgo), func Fchown(int, int, int) error pkg syscall (linux-amd64-cgo), func Fchownat(int, string, int, int, int) error pkg syscall (linux-amd64-cgo), func Fdatasync(int) error pkg syscall (linux-amd64-cgo), func Flock(int, int) error pkg syscall (linux-amd64-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (linux-amd64-cgo), func Fstat(int, *Stat_t) error pkg syscall (linux-amd64-cgo), func Fstatfs(int, *Statfs_t) error pkg syscall (linux-amd64-cgo), func Fsync(int) error pkg syscall (linux-amd64-cgo), func Ftruncate(int, int64) error pkg syscall (linux-amd64-cgo), func Futimes(int, []Timeval) error pkg syscall (linux-amd64-cgo), func Futimesat(int, string, []Timeval) error pkg syscall (linux-amd64-cgo), func Getcwd([]uint8) (int, error) pkg syscall (linux-amd64-cgo), func Getdents(int, []uint8) (int, error) pkg syscall (linux-amd64-cgo), func Getpeername(int) (Sockaddr, error) pkg syscall (linux-amd64-cgo), func Getpgid(int) (int, error) pkg syscall (linux-amd64-cgo), func Getpgrp() int pkg syscall (linux-amd64-cgo), func Getrlimit(int, *Rlimit) error pkg syscall (linux-amd64-cgo), func Getrusage(int, *Rusage) error pkg syscall (linux-amd64-cgo), func Getsockname(int) (Sockaddr, error) pkg syscall (linux-amd64-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (linux-amd64-cgo), func GetsockoptIPMreqn(int, int, int) (*IPMreqn, error) pkg syscall (linux-amd64-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (linux-amd64-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (linux-amd64-cgo), func GetsockoptInt(int, int, int) (int, error) pkg syscall (linux-amd64-cgo), func Gettid() int pkg syscall (linux-amd64-cgo), func InotifyAddWatch(int, string, uint32) (int, error) pkg syscall (linux-amd64-cgo), func InotifyInit() (int, error) pkg syscall (linux-amd64-cgo), func InotifyInit1(int) (int, error) pkg syscall (linux-amd64-cgo), func InotifyRmWatch(int, uint32) (int, error) pkg syscall (linux-amd64-cgo), func Ioperm(int, int, int) error pkg syscall (linux-amd64-cgo), func Iopl(int) error pkg syscall (linux-amd64-cgo), func Kill(int, Signal) error pkg syscall (linux-amd64-cgo), func Klogctl(int, []uint8) (int, error) pkg syscall (linux-amd64-cgo), func Listen(int, int) error pkg syscall (linux-amd64-cgo), func LsfJump(int, int, int, int) *SockFilter pkg syscall (linux-amd64-cgo), func LsfSocket(int, int) (int, error) pkg syscall (linux-amd64-cgo), func LsfStmt(int, int) *SockFilter pkg syscall (linux-amd64-cgo), func Lstat(string, *Stat_t) error pkg syscall (linux-amd64-cgo), func Madvise([]uint8, int) error pkg syscall (linux-amd64-cgo), func Mkdirat(int, string, uint32) error pkg syscall (linux-amd64-cgo), func Mkfifo(string, uint32) error pkg syscall (linux-amd64-cgo), func Mknod(string, uint32, int) error pkg syscall (linux-amd64-cgo), func Mknodat(int, string, uint32, int) error pkg syscall (linux-amd64-cgo), func Mlock([]uint8) error pkg syscall (linux-amd64-cgo), func Mlockall(int) error pkg syscall (linux-amd64-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (linux-amd64-cgo), func Mount(string, string, string, uintptr, string) error pkg syscall (linux-amd64-cgo), func Mprotect([]uint8, int) error pkg syscall (linux-amd64-cgo), func Munlock([]uint8) error pkg syscall (linux-amd64-cgo), func Munlockall() error pkg syscall (linux-amd64-cgo), func Munmap([]uint8) error pkg syscall (linux-amd64-cgo), func Nanosleep(*Timespec, *Timespec) error pkg syscall (linux-amd64-cgo), func NetlinkRIB(int, int) ([]uint8, error) pkg syscall (linux-amd64-cgo), func NsecToTimespec(int64) Timespec pkg syscall (linux-amd64-cgo), func Open(string, int, uint32) (int, error) pkg syscall (linux-amd64-cgo), func Openat(int, string, int, uint32) (int, error) pkg syscall (linux-amd64-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (linux-amd64-cgo), func ParseNetlinkMessage([]uint8) ([]NetlinkMessage, error) pkg syscall (linux-amd64-cgo), func ParseNetlinkRouteAttr(*NetlinkMessage) ([]NetlinkRouteAttr, error) pkg syscall (linux-amd64-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (linux-amd64-cgo), func ParseUnixCredentials(*SocketControlMessage) (*Ucred, error) pkg syscall (linux-amd64-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (linux-amd64-cgo), func Pause() error pkg syscall (linux-amd64-cgo), func Pipe([]int) error pkg syscall (linux-amd64-cgo), func PivotRoot(string, string) error pkg syscall (linux-amd64-cgo), func Pread(int, []uint8, int64) (int, error) pkg syscall (linux-amd64-cgo), func PtraceAttach(int) error pkg syscall (linux-amd64-cgo), func PtraceCont(int, int) error pkg syscall (linux-amd64-cgo), func PtraceDetach(int) error pkg syscall (linux-amd64-cgo), func PtraceGetEventMsg(int) (uint, error) pkg syscall (linux-amd64-cgo), func PtraceGetRegs(int, *PtraceRegs) error pkg syscall (linux-amd64-cgo), func PtracePeekData(int, uintptr, []uint8) (int, error) pkg syscall (linux-amd64-cgo), func PtracePeekText(int, uintptr, []uint8) (int, error) pkg syscall (linux-amd64-cgo), func PtracePokeData(int, uintptr, []uint8) (int, error) pkg syscall (linux-amd64-cgo), func PtracePokeText(int, uintptr, []uint8) (int, error) pkg syscall (linux-amd64-cgo), func PtraceSetOptions(int, int) error pkg syscall (linux-amd64-cgo), func PtraceSetRegs(int, *PtraceRegs) error pkg syscall (linux-amd64-cgo), func PtraceSingleStep(int) error pkg syscall (linux-amd64-cgo), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (linux-amd64-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-amd64-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-amd64-cgo), func Read(int, []uint8) (int, error) pkg syscall (linux-amd64-cgo), func ReadDirent(int, []uint8) (int, error) pkg syscall (linux-amd64-cgo), func Reboot(int) error pkg syscall (linux-amd64-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (linux-amd64-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (linux-amd64-cgo), func Renameat(int, string, int, string) error pkg syscall (linux-amd64-cgo), func Seek(int, int64, int) (int64, error) pkg syscall (linux-amd64-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) (int, error) pkg syscall (linux-amd64-cgo), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (linux-amd64-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (linux-amd64-cgo), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (linux-amd64-cgo), func SetLsfPromisc(string, bool) error pkg syscall (linux-amd64-cgo), func SetNonblock(int, bool) error pkg syscall (linux-amd64-cgo), func Setdomainname([]uint8) error pkg syscall (linux-amd64-cgo), func Setfsgid(int) error pkg syscall (linux-amd64-cgo), func Setfsuid(int) error pkg syscall (linux-amd64-cgo), func Setgid(int) error pkg syscall (linux-amd64-cgo), func Setgroups([]int) error pkg syscall (linux-amd64-cgo), func Sethostname([]uint8) error pkg syscall (linux-amd64-cgo), func Setpgid(int, int) error pkg syscall (linux-amd64-cgo), func Setregid(int, int) error pkg syscall (linux-amd64-cgo), func Setresgid(int, int, int) error pkg syscall (linux-amd64-cgo), func Setresuid(int, int, int) error pkg syscall (linux-amd64-cgo), func Setreuid(int, int) error pkg syscall (linux-amd64-cgo), func Setrlimit(int, *Rlimit) error pkg syscall (linux-amd64-cgo), func Setsid() (int, error) pkg syscall (linux-amd64-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (linux-amd64-cgo), func SetsockoptIPMreqn(int, int, int, *IPMreqn) error pkg syscall (linux-amd64-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (linux-amd64-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (linux-amd64-cgo), func SetsockoptInt(int, int, int, int) error pkg syscall (linux-amd64-cgo), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (linux-amd64-cgo), func SetsockoptString(int, int, int, string) error pkg syscall (linux-amd64-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (linux-amd64-cgo), func Settimeofday(*Timeval) error pkg syscall (linux-amd64-cgo), func Setuid(int) error pkg syscall (linux-amd64-cgo), func Shutdown(int, int) error pkg syscall (linux-amd64-cgo), func Socket(int, int, int) (int, error) pkg syscall (linux-amd64-cgo), func Socketpair(int, int, int) ([2]int, error) pkg syscall (linux-amd64-cgo), func Splice(int, *int64, int, *int64, int, int) (int64, error) pkg syscall (linux-amd64-cgo), func Stat(string, *Stat_t) error pkg syscall (linux-amd64-cgo), func Statfs(string, *Statfs_t) error pkg syscall (linux-amd64-cgo), func StringSlicePtr([]string) []*uint8 pkg syscall (linux-amd64-cgo), func Sync() pkg syscall (linux-amd64-cgo), func SyncFileRange(int, int64, int64, int) error pkg syscall (linux-amd64-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-amd64-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-amd64-cgo), func Sysinfo(*Sysinfo_t) error pkg syscall (linux-amd64-cgo), func Tee(int, int, int, int) (int64, error) pkg syscall (linux-amd64-cgo), func Tgkill(int, int, Signal) error pkg syscall (linux-amd64-cgo), func Time(*Time_t) (Time_t, error) pkg syscall (linux-amd64-cgo), func Times(*Tms) (uintptr, error) pkg syscall (linux-amd64-cgo), func TimespecToNsec(Timespec) int64 pkg syscall (linux-amd64-cgo), func TimevalToNsec(Timeval) int64 pkg syscall (linux-amd64-cgo), func Truncate(string, int64) error pkg syscall (linux-amd64-cgo), func Umask(int) int pkg syscall (linux-amd64-cgo), func Uname(*Utsname) error pkg syscall (linux-amd64-cgo), func UnixCredentials(*Ucred) []uint8 pkg syscall (linux-amd64-cgo), func UnixRights(...int) []uint8 pkg syscall (linux-amd64-cgo), func Unlinkat(int, string) error pkg syscall (linux-amd64-cgo), func Unmount(string, int) error pkg syscall (linux-amd64-cgo), func Unshare(int) error pkg syscall (linux-amd64-cgo), func Ustat(int, *Ustat_t) error pkg syscall (linux-amd64-cgo), func Utime(string, *Utimbuf) error pkg syscall (linux-amd64-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (linux-amd64-cgo), func Write(int, []uint8) (int, error) pkg syscall (linux-amd64-cgo), method (*Cmsghdr) SetLen(int) pkg syscall (linux-amd64-cgo), method (*Iovec) SetLen(int) pkg syscall (linux-amd64-cgo), method (*Msghdr) SetControllen(int) pkg syscall (linux-amd64-cgo), method (*PtraceRegs) PC() uint64 pkg syscall (linux-amd64-cgo), method (*PtraceRegs) SetPC(uint64) pkg syscall (linux-amd64-cgo), type Cmsghdr struct pkg syscall (linux-amd64-cgo), type Cmsghdr struct, Len uint64 pkg syscall (linux-amd64-cgo), type Cmsghdr struct, Level int32 pkg syscall (linux-amd64-cgo), type Cmsghdr struct, Type int32 pkg syscall (linux-amd64-cgo), type Cmsghdr struct, X__cmsg_data [0]uint8 pkg syscall (linux-amd64-cgo), type Credential struct pkg syscall (linux-amd64-cgo), type Credential struct, Gid uint32 pkg syscall (linux-amd64-cgo), type Credential struct, Groups []uint32 pkg syscall (linux-amd64-cgo), type Credential struct, Uid uint32 pkg syscall (linux-amd64-cgo), type Dirent struct pkg syscall (linux-amd64-cgo), type Dirent struct, Ino uint64 pkg syscall (linux-amd64-cgo), type Dirent struct, Name [256]int8 pkg syscall (linux-amd64-cgo), type Dirent struct, Off int64 pkg syscall (linux-amd64-cgo), type Dirent struct, Pad_cgo_0 [5]uint8 pkg syscall (linux-amd64-cgo), type Dirent struct, Reclen uint16 pkg syscall (linux-amd64-cgo), type Dirent struct, Type uint8 pkg syscall (linux-amd64-cgo), type EpollEvent struct pkg syscall (linux-amd64-cgo), type EpollEvent struct, Events uint32 pkg syscall (linux-amd64-cgo), type EpollEvent struct, Fd int32 pkg syscall (linux-amd64-cgo), type EpollEvent struct, Pad int32 pkg syscall (linux-amd64-cgo), type FdSet struct pkg syscall (linux-amd64-cgo), type FdSet struct, Bits [16]int64 pkg syscall (linux-amd64-cgo), type Fsid struct pkg syscall (linux-amd64-cgo), type Fsid struct, X__val [2]int32 pkg syscall (linux-amd64-cgo), type IPMreqn struct pkg syscall (linux-amd64-cgo), type IPMreqn struct, Address [4]uint8 pkg syscall (linux-amd64-cgo), type IPMreqn struct, Ifindex int32 pkg syscall (linux-amd64-cgo), type IPMreqn struct, Multiaddr [4]uint8 pkg syscall (linux-amd64-cgo), type IfAddrmsg struct pkg syscall (linux-amd64-cgo), type IfAddrmsg struct, Family uint8 pkg syscall (linux-amd64-cgo), type IfAddrmsg struct, Flags uint8 pkg syscall (linux-amd64-cgo), type IfAddrmsg struct, Index uint32 pkg syscall (linux-amd64-cgo), type IfAddrmsg struct, Prefixlen uint8 pkg syscall (linux-amd64-cgo), type IfAddrmsg struct, Scope uint8 pkg syscall (linux-amd64-cgo), type IfInfomsg struct pkg syscall (linux-amd64-cgo), type IfInfomsg struct, Change uint32 pkg syscall (linux-amd64-cgo), type IfInfomsg struct, Family uint8 pkg syscall (linux-amd64-cgo), type IfInfomsg struct, Flags uint32 pkg syscall (linux-amd64-cgo), type IfInfomsg struct, Index int32 pkg syscall (linux-amd64-cgo), type IfInfomsg struct, Type uint16 pkg syscall (linux-amd64-cgo), type IfInfomsg struct, X__ifi_pad uint8 pkg syscall (linux-amd64-cgo), type Inet4Pktinfo struct pkg syscall (linux-amd64-cgo), type Inet4Pktinfo struct, Addr [4]uint8 pkg syscall (linux-amd64-cgo), type Inet4Pktinfo struct, Ifindex int32 pkg syscall (linux-amd64-cgo), type Inet4Pktinfo struct, Spec_dst [4]uint8 pkg syscall (linux-amd64-cgo), type Inet6Pktinfo struct pkg syscall (linux-amd64-cgo), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (linux-amd64-cgo), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (linux-amd64-cgo), type InotifyEvent struct pkg syscall (linux-amd64-cgo), type InotifyEvent struct, Cookie uint32 pkg syscall (linux-amd64-cgo), type InotifyEvent struct, Len uint32 pkg syscall (linux-amd64-cgo), type InotifyEvent struct, Mask uint32 pkg syscall (linux-amd64-cgo), type InotifyEvent struct, Name [0]uint8 pkg syscall (linux-amd64-cgo), type InotifyEvent struct, Wd int32 pkg syscall (linux-amd64-cgo), type Iovec struct pkg syscall (linux-amd64-cgo), type Iovec struct, Base *uint8 pkg syscall (linux-amd64-cgo), type Iovec struct, Len uint64 pkg syscall (linux-amd64-cgo), type Msghdr struct pkg syscall (linux-amd64-cgo), type Msghdr struct, Control *uint8 pkg syscall (linux-amd64-cgo), type Msghdr struct, Controllen uint64 pkg syscall (linux-amd64-cgo), type Msghdr struct, Flags int32 pkg syscall (linux-amd64-cgo), type Msghdr struct, Iov *Iovec pkg syscall (linux-amd64-cgo), type Msghdr struct, Iovlen uint64 pkg syscall (linux-amd64-cgo), type Msghdr struct, Name *uint8 pkg syscall (linux-amd64-cgo), type Msghdr struct, Namelen uint32 pkg syscall (linux-amd64-cgo), type Msghdr struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-amd64-cgo), type Msghdr struct, Pad_cgo_1 [4]uint8 pkg syscall (linux-amd64-cgo), type NetlinkMessage struct pkg syscall (linux-amd64-cgo), type NetlinkMessage struct, Data []uint8 pkg syscall (linux-amd64-cgo), type NetlinkMessage struct, Header NlMsghdr pkg syscall (linux-amd64-cgo), type NetlinkRouteAttr struct pkg syscall (linux-amd64-cgo), type NetlinkRouteAttr struct, Attr RtAttr pkg syscall (linux-amd64-cgo), type NetlinkRouteAttr struct, Value []uint8 pkg syscall (linux-amd64-cgo), type NetlinkRouteRequest struct pkg syscall (linux-amd64-cgo), type NetlinkRouteRequest struct, Data RtGenmsg pkg syscall (linux-amd64-cgo), type NetlinkRouteRequest struct, Header NlMsghdr pkg syscall (linux-amd64-cgo), type NlAttr struct pkg syscall (linux-amd64-cgo), type NlAttr struct, Len uint16 pkg syscall (linux-amd64-cgo), type NlAttr struct, Type uint16 pkg syscall (linux-amd64-cgo), type NlMsgerr struct pkg syscall (linux-amd64-cgo), type NlMsgerr struct, Error int32 pkg syscall (linux-amd64-cgo), type NlMsgerr struct, Msg NlMsghdr pkg syscall (linux-amd64-cgo), type NlMsghdr struct pkg syscall (linux-amd64-cgo), type NlMsghdr struct, Flags uint16 pkg syscall (linux-amd64-cgo), type NlMsghdr struct, Len uint32 pkg syscall (linux-amd64-cgo), type NlMsghdr struct, Pid uint32 pkg syscall (linux-amd64-cgo), type NlMsghdr struct, Seq uint32 pkg syscall (linux-amd64-cgo), type NlMsghdr struct, Type uint16 pkg syscall (linux-amd64-cgo), type PtraceRegs struct pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Cs uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Ds uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Eflags uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Es uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Fs uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Fs_base uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Gs uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Gs_base uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Orig_rax uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R10 uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R11 uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R12 uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R13 uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R14 uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R15 uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R8 uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R9 uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rax uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rbp uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rbx uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rcx uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rdi uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rdx uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rip uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rsi uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rsp uint64 pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Ss uint64 pkg syscall (linux-amd64-cgo), type RawSockaddr struct, Data [14]int8 pkg syscall (linux-amd64-cgo), type RawSockaddr struct, Family uint16 pkg syscall (linux-amd64-cgo), type RawSockaddrAny struct, Pad [96]int8 pkg syscall (linux-amd64-cgo), type RawSockaddrInet4 struct, Family uint16 pkg syscall (linux-amd64-cgo), type RawSockaddrInet4 struct, Zero [8]uint8 pkg syscall (linux-amd64-cgo), type RawSockaddrInet6 struct pkg syscall (linux-amd64-cgo), type RawSockaddrInet6 struct, Addr [16]uint8 pkg syscall (linux-amd64-cgo), type RawSockaddrInet6 struct, Family uint16 pkg syscall (linux-amd64-cgo), type RawSockaddrInet6 struct, Flowinfo uint32 pkg syscall (linux-amd64-cgo), type RawSockaddrInet6 struct, Port uint16 pkg syscall (linux-amd64-cgo), type RawSockaddrInet6 struct, Scope_id uint32 pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct, Addr [8]uint8 pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct, Family uint16 pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct, Halen uint8 pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct, Hatype uint16 pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct, Ifindex int32 pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct, Pkttype uint8 pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct, Protocol uint16 pkg syscall (linux-amd64-cgo), type RawSockaddrNetlink struct pkg syscall (linux-amd64-cgo), type RawSockaddrNetlink struct, Family uint16 pkg syscall (linux-amd64-cgo), type RawSockaddrNetlink struct, Groups uint32 pkg syscall (linux-amd64-cgo), type RawSockaddrNetlink struct, Pad uint16 pkg syscall (linux-amd64-cgo), type RawSockaddrNetlink struct, Pid uint32 pkg syscall (linux-amd64-cgo), type RawSockaddrUnix struct pkg syscall (linux-amd64-cgo), type RawSockaddrUnix struct, Family uint16 pkg syscall (linux-amd64-cgo), type RawSockaddrUnix struct, Path [108]int8 pkg syscall (linux-amd64-cgo), type Rlimit struct pkg syscall (linux-amd64-cgo), type Rlimit struct, Cur uint64 pkg syscall (linux-amd64-cgo), type Rlimit struct, Max uint64 pkg syscall (linux-amd64-cgo), type RtAttr struct pkg syscall (linux-amd64-cgo), type RtAttr struct, Len uint16 pkg syscall (linux-amd64-cgo), type RtAttr struct, Type uint16 pkg syscall (linux-amd64-cgo), type RtGenmsg struct pkg syscall (linux-amd64-cgo), type RtGenmsg struct, Family uint8 pkg syscall (linux-amd64-cgo), type RtMsg struct pkg syscall (linux-amd64-cgo), type RtMsg struct, Dst_len uint8 pkg syscall (linux-amd64-cgo), type RtMsg struct, Family uint8 pkg syscall (linux-amd64-cgo), type RtMsg struct, Flags uint32 pkg syscall (linux-amd64-cgo), type RtMsg struct, Protocol uint8 pkg syscall (linux-amd64-cgo), type RtMsg struct, Scope uint8 pkg syscall (linux-amd64-cgo), type RtMsg struct, Src_len uint8 pkg syscall (linux-amd64-cgo), type RtMsg struct, Table uint8 pkg syscall (linux-amd64-cgo), type RtMsg struct, Tos uint8 pkg syscall (linux-amd64-cgo), type RtMsg struct, Type uint8 pkg syscall (linux-amd64-cgo), type RtNexthop struct pkg syscall (linux-amd64-cgo), type RtNexthop struct, Flags uint8 pkg syscall (linux-amd64-cgo), type RtNexthop struct, Hops uint8 pkg syscall (linux-amd64-cgo), type RtNexthop struct, Ifindex int32 pkg syscall (linux-amd64-cgo), type RtNexthop struct, Len uint16 pkg syscall (linux-amd64-cgo), type Rusage struct, Idrss int64 pkg syscall (linux-amd64-cgo), type Rusage struct, Inblock int64 pkg syscall (linux-amd64-cgo), type Rusage struct, Isrss int64 pkg syscall (linux-amd64-cgo), type Rusage struct, Ixrss int64 pkg syscall (linux-amd64-cgo), type Rusage struct, Majflt int64 pkg syscall (linux-amd64-cgo), type Rusage struct, Maxrss int64 pkg syscall (linux-amd64-cgo), type Rusage struct, Minflt int64 pkg syscall (linux-amd64-cgo), type Rusage struct, Msgrcv int64 pkg syscall (linux-amd64-cgo), type Rusage struct, Msgsnd int64 pkg syscall (linux-amd64-cgo), type Rusage struct, Nivcsw int64 pkg syscall (linux-amd64-cgo), type Rusage struct, Nsignals int64 pkg syscall (linux-amd64-cgo), type Rusage struct, Nswap int64 pkg syscall (linux-amd64-cgo), type Rusage struct, Nvcsw int64 pkg syscall (linux-amd64-cgo), type Rusage struct, Oublock int64 pkg syscall (linux-amd64-cgo), type Rusage struct, Stime Timeval pkg syscall (linux-amd64-cgo), type Rusage struct, Utime Timeval pkg syscall (linux-amd64-cgo), type SockFilter struct pkg syscall (linux-amd64-cgo), type SockFilter struct, Code uint16 pkg syscall (linux-amd64-cgo), type SockFilter struct, Jf uint8 pkg syscall (linux-amd64-cgo), type SockFilter struct, Jt uint8 pkg syscall (linux-amd64-cgo), type SockFilter struct, K uint32 pkg syscall (linux-amd64-cgo), type SockFprog struct pkg syscall (linux-amd64-cgo), type SockFprog struct, Filter *SockFilter pkg syscall (linux-amd64-cgo), type SockFprog struct, Len uint16 pkg syscall (linux-amd64-cgo), type SockFprog struct, Pad_cgo_0 [6]uint8 pkg syscall (linux-amd64-cgo), type SockaddrLinklayer struct pkg syscall (linux-amd64-cgo), type SockaddrLinklayer struct, Addr [8]uint8 pkg syscall (linux-amd64-cgo), type SockaddrLinklayer struct, Halen uint8 pkg syscall (linux-amd64-cgo), type SockaddrLinklayer struct, Hatype uint16 pkg syscall (linux-amd64-cgo), type SockaddrLinklayer struct, Ifindex int pkg syscall (linux-amd64-cgo), type SockaddrLinklayer struct, Pkttype uint8 pkg syscall (linux-amd64-cgo), type SockaddrLinklayer struct, Protocol uint16 pkg syscall (linux-amd64-cgo), type SockaddrNetlink struct pkg syscall (linux-amd64-cgo), type SockaddrNetlink struct, Family uint16 pkg syscall (linux-amd64-cgo), type SockaddrNetlink struct, Groups uint32 pkg syscall (linux-amd64-cgo), type SockaddrNetlink struct, Pad uint16 pkg syscall (linux-amd64-cgo), type SockaddrNetlink struct, Pid uint32 pkg syscall (linux-amd64-cgo), type SocketControlMessage struct pkg syscall (linux-amd64-cgo), type SocketControlMessage struct, Data []uint8 pkg syscall (linux-amd64-cgo), type SocketControlMessage struct, Header Cmsghdr pkg syscall (linux-amd64-cgo), type Stat_t struct pkg syscall (linux-amd64-cgo), type Stat_t struct, Atim Timespec pkg syscall (linux-amd64-cgo), type Stat_t struct, Blksize int64 pkg syscall (linux-amd64-cgo), type Stat_t struct, Blocks int64 pkg syscall (linux-amd64-cgo), type Stat_t struct, Ctim Timespec pkg syscall (linux-amd64-cgo), type Stat_t struct, Dev uint64 pkg syscall (linux-amd64-cgo), type Stat_t struct, Gid uint32 pkg syscall (linux-amd64-cgo), type Stat_t struct, Ino uint64 pkg syscall (linux-amd64-cgo), type Stat_t struct, Mode uint32 pkg syscall (linux-amd64-cgo), type Stat_t struct, Mtim Timespec pkg syscall (linux-amd64-cgo), type Stat_t struct, Nlink uint64 pkg syscall (linux-amd64-cgo), type Stat_t struct, Rdev uint64 pkg syscall (linux-amd64-cgo), type Stat_t struct, Size int64 pkg syscall (linux-amd64-cgo), type Stat_t struct, Uid uint32 pkg syscall (linux-amd64-cgo), type Stat_t struct, X__pad0 int32 pkg syscall (linux-amd64-cgo), type Stat_t struct, X__unused [3]int64 pkg syscall (linux-amd64-cgo), type Statfs_t struct pkg syscall (linux-amd64-cgo), type Statfs_t struct, Bavail uint64 pkg syscall (linux-amd64-cgo), type Statfs_t struct, Bfree uint64 pkg syscall (linux-amd64-cgo), type Statfs_t struct, Blocks uint64 pkg syscall (linux-amd64-cgo), type Statfs_t struct, Bsize int64 pkg syscall (linux-amd64-cgo), type Statfs_t struct, Ffree uint64 pkg syscall (linux-amd64-cgo), type Statfs_t struct, Files uint64 pkg syscall (linux-amd64-cgo), type Statfs_t struct, Flags int64 pkg syscall (linux-amd64-cgo), type Statfs_t struct, Frsize int64 pkg syscall (linux-amd64-cgo), type Statfs_t struct, Fsid Fsid pkg syscall (linux-amd64-cgo), type Statfs_t struct, Namelen int64 pkg syscall (linux-amd64-cgo), type Statfs_t struct, Spare [4]int64 pkg syscall (linux-amd64-cgo), type Statfs_t struct, Type int64 pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Chroot string pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Credential *Credential pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Noctty bool pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Pdeathsig Signal pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Ptrace bool pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Setctty bool pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Setpgid bool pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Setsid bool pkg syscall (linux-amd64-cgo), type Sysinfo_t struct pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Bufferram uint64 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Freehigh uint64 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Freeram uint64 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Freeswap uint64 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Loads [3]uint64 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Pad uint16 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Pad_cgo_1 [4]uint8 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Procs uint16 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Sharedram uint64 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Totalhigh uint64 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Totalram uint64 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Totalswap uint64 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Unit uint32 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Uptime int64 pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, X_f [0]uint8 pkg syscall (linux-amd64-cgo), type Termios struct pkg syscall (linux-amd64-cgo), type Termios struct, Cc [32]uint8 pkg syscall (linux-amd64-cgo), type Termios struct, Cflag uint32 pkg syscall (linux-amd64-cgo), type Termios struct, Iflag uint32 pkg syscall (linux-amd64-cgo), type Termios struct, Ispeed uint32 pkg syscall (linux-amd64-cgo), type Termios struct, Lflag uint32 pkg syscall (linux-amd64-cgo), type Termios struct, Line uint8 pkg syscall (linux-amd64-cgo), type Termios struct, Oflag uint32 pkg syscall (linux-amd64-cgo), type Termios struct, Ospeed uint32 pkg syscall (linux-amd64-cgo), type Termios struct, Pad_cgo_0 [3]uint8 pkg syscall (linux-amd64-cgo), type Time_t int64 pkg syscall (linux-amd64-cgo), type Timespec struct, Nsec int64 pkg syscall (linux-amd64-cgo), type Timespec struct, Sec int64 pkg syscall (linux-amd64-cgo), type Timeval struct, Sec int64 pkg syscall (linux-amd64-cgo), type Timeval struct, Usec int64 pkg syscall (linux-amd64-cgo), type Timex struct pkg syscall (linux-amd64-cgo), type Timex struct, Calcnt int64 pkg syscall (linux-amd64-cgo), type Timex struct, Constant int64 pkg syscall (linux-amd64-cgo), type Timex struct, Errcnt int64 pkg syscall (linux-amd64-cgo), type Timex struct, Esterror int64 pkg syscall (linux-amd64-cgo), type Timex struct, Freq int64 pkg syscall (linux-amd64-cgo), type Timex struct, Jitcnt int64 pkg syscall (linux-amd64-cgo), type Timex struct, Jitter int64 pkg syscall (linux-amd64-cgo), type Timex struct, Maxerror int64 pkg syscall (linux-amd64-cgo), type Timex struct, Modes uint32 pkg syscall (linux-amd64-cgo), type Timex struct, Offset int64 pkg syscall (linux-amd64-cgo), type Timex struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-amd64-cgo), type Timex struct, Pad_cgo_1 [4]uint8 pkg syscall (linux-amd64-cgo), type Timex struct, Pad_cgo_2 [4]uint8 pkg syscall (linux-amd64-cgo), type Timex struct, Pad_cgo_3 [44]uint8 pkg syscall (linux-amd64-cgo), type Timex struct, Ppsfreq int64 pkg syscall (linux-amd64-cgo), type Timex struct, Precision int64 pkg syscall (linux-amd64-cgo), type Timex struct, Shift int32 pkg syscall (linux-amd64-cgo), type Timex struct, Stabil int64 pkg syscall (linux-amd64-cgo), type Timex struct, Status int32 pkg syscall (linux-amd64-cgo), type Timex struct, Stbcnt int64 pkg syscall (linux-amd64-cgo), type Timex struct, Tai int32 pkg syscall (linux-amd64-cgo), type Timex struct, Tick int64 pkg syscall (linux-amd64-cgo), type Timex struct, Time Timeval pkg syscall (linux-amd64-cgo), type Timex struct, Tolerance int64 pkg syscall (linux-amd64-cgo), type Tms struct pkg syscall (linux-amd64-cgo), type Tms struct, Cstime int64 pkg syscall (linux-amd64-cgo), type Tms struct, Cutime int64 pkg syscall (linux-amd64-cgo), type Tms struct, Stime int64 pkg syscall (linux-amd64-cgo), type Tms struct, Utime int64 pkg syscall (linux-amd64-cgo), type Ucred struct pkg syscall (linux-amd64-cgo), type Ucred struct, Gid uint32 pkg syscall (linux-amd64-cgo), type Ucred struct, Pid int32 pkg syscall (linux-amd64-cgo), type Ucred struct, Uid uint32 pkg syscall (linux-amd64-cgo), type Ustat_t struct pkg syscall (linux-amd64-cgo), type Ustat_t struct, Fname [6]int8 pkg syscall (linux-amd64-cgo), type Ustat_t struct, Fpack [6]int8 pkg syscall (linux-amd64-cgo), type Ustat_t struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-amd64-cgo), type Ustat_t struct, Pad_cgo_1 [4]uint8 pkg syscall (linux-amd64-cgo), type Ustat_t struct, Tfree int32 pkg syscall (linux-amd64-cgo), type Ustat_t struct, Tinode uint64 pkg syscall (linux-amd64-cgo), type Utimbuf struct pkg syscall (linux-amd64-cgo), type Utimbuf struct, Actime int64 pkg syscall (linux-amd64-cgo), type Utimbuf struct, Modtime int64 pkg syscall (linux-amd64-cgo), type Utsname struct pkg syscall (linux-amd64-cgo), type Utsname struct, Domainname [65]int8 pkg syscall (linux-amd64-cgo), type Utsname struct, Machine [65]int8 pkg syscall (linux-amd64-cgo), type Utsname struct, Nodename [65]int8 pkg syscall (linux-amd64-cgo), type Utsname struct, Release [65]int8 pkg syscall (linux-amd64-cgo), type Utsname struct, Sysname [65]int8 pkg syscall (linux-amd64-cgo), type Utsname struct, Version [65]int8 pkg syscall (linux-amd64-cgo), type WaitStatus uint32 pkg syscall (linux-amd64-cgo), var Stderr int pkg syscall (linux-amd64-cgo), var Stdin int pkg syscall (linux-amd64-cgo), var Stdout int pkg syscall (linux-arm), const AF_ALG ideal-int pkg syscall (linux-arm), const AF_APPLETALK ideal-int pkg syscall (linux-arm), const AF_ASH ideal-int pkg syscall (linux-arm), const AF_ATMPVC ideal-int pkg syscall (linux-arm), const AF_ATMSVC ideal-int pkg syscall (linux-arm), const AF_AX25 ideal-int pkg syscall (linux-arm), const AF_BLUETOOTH ideal-int pkg syscall (linux-arm), const AF_BRIDGE ideal-int pkg syscall (linux-arm), const AF_CAIF ideal-int pkg syscall (linux-arm), const AF_CAN ideal-int pkg syscall (linux-arm), const AF_DECnet ideal-int pkg syscall (linux-arm), const AF_ECONET ideal-int pkg syscall (linux-arm), const AF_FILE ideal-int pkg syscall (linux-arm), const AF_IEEE802154 ideal-int pkg syscall (linux-arm), const AF_IPX ideal-int pkg syscall (linux-arm), const AF_IRDA ideal-int pkg syscall (linux-arm), const AF_ISDN ideal-int pkg syscall (linux-arm), const AF_IUCV ideal-int pkg syscall (linux-arm), const AF_KEY ideal-int pkg syscall (linux-arm), const AF_LLC ideal-int pkg syscall (linux-arm), const AF_LOCAL ideal-int pkg syscall (linux-arm), const AF_MAX ideal-int pkg syscall (linux-arm), const AF_NETBEUI ideal-int pkg syscall (linux-arm), const AF_NETLINK ideal-int pkg syscall (linux-arm), const AF_NETROM ideal-int pkg syscall (linux-arm), const AF_PACKET ideal-int pkg syscall (linux-arm), const AF_PHONET ideal-int pkg syscall (linux-arm), const AF_PPPOX ideal-int pkg syscall (linux-arm), const AF_RDS ideal-int pkg syscall (linux-arm), const AF_ROSE ideal-int pkg syscall (linux-arm), const AF_ROUTE ideal-int pkg syscall (linux-arm), const AF_RXRPC ideal-int pkg syscall (linux-arm), const AF_SECURITY ideal-int pkg syscall (linux-arm), const AF_SNA ideal-int pkg syscall (linux-arm), const AF_TIPC ideal-int pkg syscall (linux-arm), const AF_WANPIPE ideal-int pkg syscall (linux-arm), const AF_X25 ideal-int pkg syscall (linux-arm), const ARPHRD_ADAPT ideal-int pkg syscall (linux-arm), const ARPHRD_APPLETLK ideal-int pkg syscall (linux-arm), const ARPHRD_ARCNET ideal-int pkg syscall (linux-arm), const ARPHRD_ASH ideal-int pkg syscall (linux-arm), const ARPHRD_ATM ideal-int pkg syscall (linux-arm), const ARPHRD_AX25 ideal-int pkg syscall (linux-arm), const ARPHRD_BIF ideal-int pkg syscall (linux-arm), const ARPHRD_CHAOS ideal-int pkg syscall (linux-arm), const ARPHRD_CISCO ideal-int pkg syscall (linux-arm), const ARPHRD_CSLIP ideal-int pkg syscall (linux-arm), const ARPHRD_CSLIP6 ideal-int pkg syscall (linux-arm), const ARPHRD_DDCMP ideal-int pkg syscall (linux-arm), const ARPHRD_DLCI ideal-int pkg syscall (linux-arm), const ARPHRD_ECONET ideal-int pkg syscall (linux-arm), const ARPHRD_EETHER ideal-int pkg syscall (linux-arm), const ARPHRD_ETHER ideal-int pkg syscall (linux-arm), const ARPHRD_EUI64 ideal-int pkg syscall (linux-arm), const ARPHRD_FCAL ideal-int pkg syscall (linux-arm), const ARPHRD_FCFABRIC ideal-int pkg syscall (linux-arm), const ARPHRD_FCPL ideal-int pkg syscall (linux-arm), const ARPHRD_FCPP ideal-int pkg syscall (linux-arm), const ARPHRD_FDDI ideal-int pkg syscall (linux-arm), const ARPHRD_FRAD ideal-int pkg syscall (linux-arm), const ARPHRD_HDLC ideal-int pkg syscall (linux-arm), const ARPHRD_HIPPI ideal-int pkg syscall (linux-arm), const ARPHRD_HWX25 ideal-int pkg syscall (linux-arm), const ARPHRD_IEEE1394 ideal-int pkg syscall (linux-arm), const ARPHRD_IEEE802 ideal-int pkg syscall (linux-arm), const ARPHRD_IEEE80211 ideal-int pkg syscall (linux-arm), const ARPHRD_IEEE80211_PRISM ideal-int pkg syscall (linux-arm), const ARPHRD_IEEE80211_RADIOTAP ideal-int pkg syscall (linux-arm), const ARPHRD_IEEE802154 ideal-int pkg syscall (linux-arm), const ARPHRD_IEEE802154_PHY ideal-int pkg syscall (linux-arm), const ARPHRD_IEEE802_TR ideal-int pkg syscall (linux-arm), const ARPHRD_INFINIBAND ideal-int pkg syscall (linux-arm), const ARPHRD_IPDDP ideal-int pkg syscall (linux-arm), const ARPHRD_IPGRE ideal-int pkg syscall (linux-arm), const ARPHRD_IRDA ideal-int pkg syscall (linux-arm), const ARPHRD_LAPB ideal-int pkg syscall (linux-arm), const ARPHRD_LOCALTLK ideal-int pkg syscall (linux-arm), const ARPHRD_LOOPBACK ideal-int pkg syscall (linux-arm), const ARPHRD_METRICOM ideal-int pkg syscall (linux-arm), const ARPHRD_NETROM ideal-int pkg syscall (linux-arm), const ARPHRD_NONE ideal-int pkg syscall (linux-arm), const ARPHRD_PIMREG ideal-int pkg syscall (linux-arm), const ARPHRD_PPP ideal-int pkg syscall (linux-arm), const ARPHRD_PRONET ideal-int pkg syscall (linux-arm), const ARPHRD_RAWHDLC ideal-int pkg syscall (linux-arm), const ARPHRD_ROSE ideal-int pkg syscall (linux-arm), const ARPHRD_RSRVD ideal-int pkg syscall (linux-arm), const ARPHRD_SIT ideal-int pkg syscall (linux-arm), const ARPHRD_SKIP ideal-int pkg syscall (linux-arm), const ARPHRD_SLIP ideal-int pkg syscall (linux-arm), const ARPHRD_SLIP6 ideal-int pkg syscall (linux-arm), const ARPHRD_TUNNEL ideal-int pkg syscall (linux-arm), const ARPHRD_TUNNEL6 ideal-int pkg syscall (linux-arm), const ARPHRD_VOID ideal-int pkg syscall (linux-arm), const ARPHRD_X25 ideal-int pkg syscall (linux-arm), const B0 ideal-int pkg syscall (linux-arm), const B1000000 ideal-int pkg syscall (linux-arm), const B110 ideal-int pkg syscall (linux-arm), const B115200 ideal-int pkg syscall (linux-arm), const B1152000 ideal-int pkg syscall (linux-arm), const B1200 ideal-int pkg syscall (linux-arm), const B134 ideal-int pkg syscall (linux-arm), const B150 ideal-int pkg syscall (linux-arm), const B1500000 ideal-int pkg syscall (linux-arm), const B1800 ideal-int pkg syscall (linux-arm), const B19200 ideal-int pkg syscall (linux-arm), const B200 ideal-int pkg syscall (linux-arm), const B2000000 ideal-int pkg syscall (linux-arm), const B230400 ideal-int pkg syscall (linux-arm), const B2400 ideal-int pkg syscall (linux-arm), const B2500000 ideal-int pkg syscall (linux-arm), const B300 ideal-int pkg syscall (linux-arm), const B3000000 ideal-int pkg syscall (linux-arm), const B3500000 ideal-int pkg syscall (linux-arm), const B38400 ideal-int pkg syscall (linux-arm), const B4000000 ideal-int pkg syscall (linux-arm), const B460800 ideal-int pkg syscall (linux-arm), const B4800 ideal-int pkg syscall (linux-arm), const B50 ideal-int pkg syscall (linux-arm), const B500000 ideal-int pkg syscall (linux-arm), const B57600 ideal-int pkg syscall (linux-arm), const B576000 ideal-int pkg syscall (linux-arm), const B600 ideal-int pkg syscall (linux-arm), const B75 ideal-int pkg syscall (linux-arm), const B921600 ideal-int pkg syscall (linux-arm), const B9600 ideal-int pkg syscall (linux-arm), const BPF_A ideal-int pkg syscall (linux-arm), const BPF_ABS ideal-int pkg syscall (linux-arm), const BPF_ADD ideal-int pkg syscall (linux-arm), const BPF_ALU ideal-int pkg syscall (linux-arm), const BPF_AND ideal-int pkg syscall (linux-arm), const BPF_B ideal-int pkg syscall (linux-arm), const BPF_DIV ideal-int pkg syscall (linux-arm), const BPF_H ideal-int pkg syscall (linux-arm), const BPF_IMM ideal-int pkg syscall (linux-arm), const BPF_IND ideal-int pkg syscall (linux-arm), const BPF_JA ideal-int pkg syscall (linux-arm), const BPF_JEQ ideal-int pkg syscall (linux-arm), const BPF_JGE ideal-int pkg syscall (linux-arm), const BPF_JGT ideal-int pkg syscall (linux-arm), const BPF_JMP ideal-int pkg syscall (linux-arm), const BPF_JSET ideal-int pkg syscall (linux-arm), const BPF_K ideal-int pkg syscall (linux-arm), const BPF_LD ideal-int pkg syscall (linux-arm), const BPF_LDX ideal-int pkg syscall (linux-arm), const BPF_LEN ideal-int pkg syscall (linux-arm), const BPF_LSH ideal-int pkg syscall (linux-arm), const BPF_MAJOR_VERSION ideal-int pkg syscall (linux-arm), const BPF_MAXINSNS ideal-int pkg syscall (linux-arm), const BPF_MEM ideal-int pkg syscall (linux-arm), const BPF_MEMWORDS ideal-int pkg syscall (linux-arm), const BPF_MINOR_VERSION ideal-int pkg syscall (linux-arm), const BPF_MISC ideal-int pkg syscall (linux-arm), const BPF_MSH ideal-int pkg syscall (linux-arm), const BPF_MUL ideal-int pkg syscall (linux-arm), const BPF_NEG ideal-int pkg syscall (linux-arm), const BPF_OR ideal-int pkg syscall (linux-arm), const BPF_RET ideal-int pkg syscall (linux-arm), const BPF_RSH ideal-int pkg syscall (linux-arm), const BPF_ST ideal-int pkg syscall (linux-arm), const BPF_STX ideal-int pkg syscall (linux-arm), const BPF_SUB ideal-int pkg syscall (linux-arm), const BPF_TAX ideal-int pkg syscall (linux-arm), const BPF_TXA ideal-int pkg syscall (linux-arm), const BPF_W ideal-int pkg syscall (linux-arm), const BPF_X ideal-int pkg syscall (linux-arm), const BRKINT ideal-int pkg syscall (linux-arm), const CLOCAL ideal-int pkg syscall (linux-arm), const CREAD ideal-int pkg syscall (linux-arm), const CS5 ideal-int pkg syscall (linux-arm), const CS6 ideal-int pkg syscall (linux-arm), const CS7 ideal-int pkg syscall (linux-arm), const CS8 ideal-int pkg syscall (linux-arm), const CSIZE ideal-int pkg syscall (linux-arm), const CSTOPB ideal-int pkg syscall (linux-arm), const DT_BLK ideal-int pkg syscall (linux-arm), const DT_CHR ideal-int pkg syscall (linux-arm), const DT_DIR ideal-int pkg syscall (linux-arm), const DT_FIFO ideal-int pkg syscall (linux-arm), const DT_LNK ideal-int pkg syscall (linux-arm), const DT_REG ideal-int pkg syscall (linux-arm), const DT_SOCK ideal-int pkg syscall (linux-arm), const DT_UNKNOWN ideal-int pkg syscall (linux-arm), const DT_WHT ideal-int pkg syscall (linux-arm), const EADV Errno pkg syscall (linux-arm), const EBADE Errno pkg syscall (linux-arm), const EBADFD Errno pkg syscall (linux-arm), const EBADMSG Errno pkg syscall (linux-arm), const EBADR Errno pkg syscall (linux-arm), const EBADRQC Errno pkg syscall (linux-arm), const EBADSLT Errno pkg syscall (linux-arm), const EBFONT Errno pkg syscall (linux-arm), const ECHO ideal-int pkg syscall (linux-arm), const ECHOCTL ideal-int pkg syscall (linux-arm), const ECHOE ideal-int pkg syscall (linux-arm), const ECHOK ideal-int pkg syscall (linux-arm), const ECHOKE ideal-int pkg syscall (linux-arm), const ECHONL ideal-int pkg syscall (linux-arm), const ECHOPRT ideal-int pkg syscall (linux-arm), const ECHRNG Errno pkg syscall (linux-arm), const ECOMM Errno pkg syscall (linux-arm), const EDEADLOCK Errno pkg syscall (linux-arm), const EDOTDOT Errno pkg syscall (linux-arm), const EHWPOISON Errno pkg syscall (linux-arm), const EISNAM Errno pkg syscall (linux-arm), const EKEYEXPIRED Errno pkg syscall (linux-arm), const EKEYREJECTED Errno pkg syscall (linux-arm), const EKEYREVOKED Errno pkg syscall (linux-arm), const EL2HLT Errno pkg syscall (linux-arm), const EL2NSYNC Errno pkg syscall (linux-arm), const EL3HLT Errno pkg syscall (linux-arm), const EL3RST Errno pkg syscall (linux-arm), const ELF_NGREG ideal-int pkg syscall (linux-arm), const ELF_PRARGSZ ideal-int pkg syscall (linux-arm), const ELIBACC Errno pkg syscall (linux-arm), const ELIBBAD Errno pkg syscall (linux-arm), const ELIBEXEC Errno pkg syscall (linux-arm), const ELIBMAX Errno pkg syscall (linux-arm), const ELIBSCN Errno pkg syscall (linux-arm), const ELNRNG Errno pkg syscall (linux-arm), const EMEDIUMTYPE Errno pkg syscall (linux-arm), const EMULTIHOP Errno pkg syscall (linux-arm), const ENAVAIL Errno pkg syscall (linux-arm), const ENOANO Errno pkg syscall (linux-arm), const ENOCSI Errno pkg syscall (linux-arm), const ENODATA Errno pkg syscall (linux-arm), const ENOKEY Errno pkg syscall (linux-arm), const ENOLINK Errno pkg syscall (linux-arm), const ENOMEDIUM Errno pkg syscall (linux-arm), const ENONET Errno pkg syscall (linux-arm), const ENOPKG Errno pkg syscall (linux-arm), const ENOSR Errno pkg syscall (linux-arm), const ENOSTR Errno pkg syscall (linux-arm), const ENOTNAM Errno pkg syscall (linux-arm), const ENOTRECOVERABLE Errno pkg syscall (linux-arm), const ENOTUNIQ Errno pkg syscall (linux-arm), const EOWNERDEAD Errno pkg syscall (linux-arm), const EPOLLERR ideal-int pkg syscall (linux-arm), const EPOLLET ideal-int pkg syscall (linux-arm), const EPOLLHUP ideal-int pkg syscall (linux-arm), const EPOLLIN ideal-int pkg syscall (linux-arm), const EPOLLMSG ideal-int pkg syscall (linux-arm), const EPOLLONESHOT ideal-int pkg syscall (linux-arm), const EPOLLOUT ideal-int pkg syscall (linux-arm), const EPOLLPRI ideal-int pkg syscall (linux-arm), const EPOLLRDBAND ideal-int pkg syscall (linux-arm), const EPOLLRDHUP ideal-int pkg syscall (linux-arm), const EPOLLRDNORM ideal-int pkg syscall (linux-arm), const EPOLLWRBAND ideal-int pkg syscall (linux-arm), const EPOLLWRNORM ideal-int pkg syscall (linux-arm), const EPOLL_CLOEXEC ideal-int pkg syscall (linux-arm), const EPOLL_CTL_ADD ideal-int pkg syscall (linux-arm), const EPOLL_CTL_DEL ideal-int pkg syscall (linux-arm), const EPOLL_CTL_MOD ideal-int pkg syscall (linux-arm), const EPOLL_NONBLOCK ideal-int pkg syscall (linux-arm), const EPROTO Errno pkg syscall (linux-arm), const EREMCHG Errno pkg syscall (linux-arm), const EREMOTEIO Errno pkg syscall (linux-arm), const ERESTART Errno pkg syscall (linux-arm), const ERFKILL Errno pkg syscall (linux-arm), const ESRMNT Errno pkg syscall (linux-arm), const ESTRPIPE Errno pkg syscall (linux-arm), const ETH_P_1588 ideal-int pkg syscall (linux-arm), const ETH_P_8021Q ideal-int pkg syscall (linux-arm), const ETH_P_802_2 ideal-int pkg syscall (linux-arm), const ETH_P_802_3 ideal-int pkg syscall (linux-arm), const ETH_P_AARP ideal-int pkg syscall (linux-arm), const ETH_P_ALL ideal-int pkg syscall (linux-arm), const ETH_P_AOE ideal-int pkg syscall (linux-arm), const ETH_P_ARCNET ideal-int pkg syscall (linux-arm), const ETH_P_ARP ideal-int pkg syscall (linux-arm), const ETH_P_ATALK ideal-int pkg syscall (linux-arm), const ETH_P_ATMFATE ideal-int pkg syscall (linux-arm), const ETH_P_ATMMPOA ideal-int pkg syscall (linux-arm), const ETH_P_AX25 ideal-int pkg syscall (linux-arm), const ETH_P_BPQ ideal-int pkg syscall (linux-arm), const ETH_P_CAIF ideal-int pkg syscall (linux-arm), const ETH_P_CAN ideal-int pkg syscall (linux-arm), const ETH_P_CONTROL ideal-int pkg syscall (linux-arm), const ETH_P_CUST ideal-int pkg syscall (linux-arm), const ETH_P_DDCMP ideal-int pkg syscall (linux-arm), const ETH_P_DEC ideal-int pkg syscall (linux-arm), const ETH_P_DIAG ideal-int pkg syscall (linux-arm), const ETH_P_DNA_DL ideal-int pkg syscall (linux-arm), const ETH_P_DNA_RC ideal-int pkg syscall (linux-arm), const ETH_P_DNA_RT ideal-int pkg syscall (linux-arm), const ETH_P_DSA ideal-int pkg syscall (linux-arm), const ETH_P_ECONET ideal-int pkg syscall (linux-arm), const ETH_P_EDSA ideal-int pkg syscall (linux-arm), const ETH_P_FCOE ideal-int pkg syscall (linux-arm), const ETH_P_FIP ideal-int pkg syscall (linux-arm), const ETH_P_HDLC ideal-int pkg syscall (linux-arm), const ETH_P_IEEE802154 ideal-int pkg syscall (linux-arm), const ETH_P_IEEEPUP ideal-int pkg syscall (linux-arm), const ETH_P_IEEEPUPAT ideal-int pkg syscall (linux-arm), const ETH_P_IP ideal-int pkg syscall (linux-arm), const ETH_P_IPV6 ideal-int pkg syscall (linux-arm), const ETH_P_IPX ideal-int pkg syscall (linux-arm), const ETH_P_IRDA ideal-int pkg syscall (linux-arm), const ETH_P_LAT ideal-int pkg syscall (linux-arm), const ETH_P_LINK_CTL ideal-int pkg syscall (linux-arm), const ETH_P_LOCALTALK ideal-int pkg syscall (linux-arm), const ETH_P_LOOP ideal-int pkg syscall (linux-arm), const ETH_P_MOBITEX ideal-int pkg syscall (linux-arm), const ETH_P_MPLS_MC ideal-int pkg syscall (linux-arm), const ETH_P_MPLS_UC ideal-int pkg syscall (linux-arm), const ETH_P_PAE ideal-int pkg syscall (linux-arm), const ETH_P_PAUSE ideal-int pkg syscall (linux-arm), const ETH_P_PHONET ideal-int pkg syscall (linux-arm), const ETH_P_PPPTALK ideal-int pkg syscall (linux-arm), const ETH_P_PPP_DISC ideal-int pkg syscall (linux-arm), const ETH_P_PPP_MP ideal-int pkg syscall (linux-arm), const ETH_P_PPP_SES ideal-int pkg syscall (linux-arm), const ETH_P_PUP ideal-int pkg syscall (linux-arm), const ETH_P_PUPAT ideal-int pkg syscall (linux-arm), const ETH_P_RARP ideal-int pkg syscall (linux-arm), const ETH_P_SCA ideal-int pkg syscall (linux-arm), const ETH_P_SLOW ideal-int pkg syscall (linux-arm), const ETH_P_SNAP ideal-int pkg syscall (linux-arm), const ETH_P_TEB ideal-int pkg syscall (linux-arm), const ETH_P_TIPC ideal-int pkg syscall (linux-arm), const ETH_P_TRAILER ideal-int pkg syscall (linux-arm), const ETH_P_TR_802_2 ideal-int pkg syscall (linux-arm), const ETH_P_WAN_PPP ideal-int pkg syscall (linux-arm), const ETH_P_WCCP ideal-int pkg syscall (linux-arm), const ETH_P_X25 ideal-int pkg syscall (linux-arm), const ETIME Errno pkg syscall (linux-arm), const EUCLEAN Errno pkg syscall (linux-arm), const EUNATCH Errno pkg syscall (linux-arm), const EXFULL Errno pkg syscall (linux-arm), const FD_CLOEXEC ideal-int pkg syscall (linux-arm), const FD_SETSIZE ideal-int pkg syscall (linux-arm), const FLUSHO ideal-int pkg syscall (linux-arm), const F_DUPFD ideal-int pkg syscall (linux-arm), const F_DUPFD_CLOEXEC ideal-int pkg syscall (linux-arm), const F_EXLCK ideal-int pkg syscall (linux-arm), const F_GETFD ideal-int pkg syscall (linux-arm), const F_GETFL ideal-int pkg syscall (linux-arm), const F_GETLEASE ideal-int pkg syscall (linux-arm), const F_GETLK ideal-int pkg syscall (linux-arm), const F_GETLK64 ideal-int pkg syscall (linux-arm), const F_GETOWN ideal-int pkg syscall (linux-arm), const F_GETOWN_EX ideal-int pkg syscall (linux-arm), const F_GETPIPE_SZ ideal-int pkg syscall (linux-arm), const F_GETSIG ideal-int pkg syscall (linux-arm), const F_LOCK ideal-int pkg syscall (linux-arm), const F_NOTIFY ideal-int pkg syscall (linux-arm), const F_OK ideal-int pkg syscall (linux-arm), const F_RDLCK ideal-int pkg syscall (linux-arm), const F_SETFD ideal-int pkg syscall (linux-arm), const F_SETFL ideal-int pkg syscall (linux-arm), const F_SETLEASE ideal-int pkg syscall (linux-arm), const F_SETLK ideal-int pkg syscall (linux-arm), const F_SETLK64 ideal-int pkg syscall (linux-arm), const F_SETLKW ideal-int pkg syscall (linux-arm), const F_SETLKW64 ideal-int pkg syscall (linux-arm), const F_SETOWN ideal-int pkg syscall (linux-arm), const F_SETOWN_EX ideal-int pkg syscall (linux-arm), const F_SETPIPE_SZ ideal-int pkg syscall (linux-arm), const F_SETSIG ideal-int pkg syscall (linux-arm), const F_SHLCK ideal-int pkg syscall (linux-arm), const F_TEST ideal-int pkg syscall (linux-arm), const F_TLOCK ideal-int pkg syscall (linux-arm), const F_ULOCK ideal-int pkg syscall (linux-arm), const F_UNLCK ideal-int pkg syscall (linux-arm), const F_WRLCK ideal-int pkg syscall (linux-arm), const HUPCL ideal-int pkg syscall (linux-arm), const ICANON ideal-int pkg syscall (linux-arm), const ICRNL ideal-int pkg syscall (linux-arm), const IEXTEN ideal-int pkg syscall (linux-arm), const IFA_ADDRESS ideal-int pkg syscall (linux-arm), const IFA_ANYCAST ideal-int pkg syscall (linux-arm), const IFA_BROADCAST ideal-int pkg syscall (linux-arm), const IFA_CACHEINFO ideal-int pkg syscall (linux-arm), const IFA_F_DADFAILED ideal-int pkg syscall (linux-arm), const IFA_F_DEPRECATED ideal-int pkg syscall (linux-arm), const IFA_F_HOMEADDRESS ideal-int pkg syscall (linux-arm), const IFA_F_NODAD ideal-int pkg syscall (linux-arm), const IFA_F_OPTIMISTIC ideal-int pkg syscall (linux-arm), const IFA_F_PERMANENT ideal-int pkg syscall (linux-arm), const IFA_F_SECONDARY ideal-int pkg syscall (linux-arm), const IFA_F_TEMPORARY ideal-int pkg syscall (linux-arm), const IFA_F_TENTATIVE ideal-int pkg syscall (linux-arm), const IFA_LABEL ideal-int pkg syscall (linux-arm), const IFA_LOCAL ideal-int pkg syscall (linux-arm), const IFA_MAX ideal-int pkg syscall (linux-arm), const IFA_MULTICAST ideal-int pkg syscall (linux-arm), const IFA_UNSPEC ideal-int pkg syscall (linux-arm), const IFF_ALLMULTI ideal-int pkg syscall (linux-arm), const IFF_AUTOMEDIA ideal-int pkg syscall (linux-arm), const IFF_DEBUG ideal-int pkg syscall (linux-arm), const IFF_DYNAMIC ideal-int pkg syscall (linux-arm), const IFF_MASTER ideal-int pkg syscall (linux-arm), const IFF_NOARP ideal-int pkg syscall (linux-arm), const IFF_NOTRAILERS ideal-int pkg syscall (linux-arm), const IFF_NO_PI ideal-int pkg syscall (linux-arm), const IFF_ONE_QUEUE ideal-int pkg syscall (linux-arm), const IFF_POINTOPOINT ideal-int pkg syscall (linux-arm), const IFF_PORTSEL ideal-int pkg syscall (linux-arm), const IFF_PROMISC ideal-int pkg syscall (linux-arm), const IFF_RUNNING ideal-int pkg syscall (linux-arm), const IFF_SLAVE ideal-int pkg syscall (linux-arm), const IFF_TAP ideal-int pkg syscall (linux-arm), const IFF_TUN ideal-int pkg syscall (linux-arm), const IFF_TUN_EXCL ideal-int pkg syscall (linux-arm), const IFF_VNET_HDR ideal-int pkg syscall (linux-arm), const IFLA_ADDRESS ideal-int pkg syscall (linux-arm), const IFLA_BROADCAST ideal-int pkg syscall (linux-arm), const IFLA_COST ideal-int pkg syscall (linux-arm), const IFLA_IFALIAS ideal-int pkg syscall (linux-arm), const IFLA_IFNAME ideal-int pkg syscall (linux-arm), const IFLA_LINK ideal-int pkg syscall (linux-arm), const IFLA_LINKINFO ideal-int pkg syscall (linux-arm), const IFLA_LINKMODE ideal-int pkg syscall (linux-arm), const IFLA_MAP ideal-int pkg syscall (linux-arm), const IFLA_MASTER ideal-int pkg syscall (linux-arm), const IFLA_MAX ideal-int pkg syscall (linux-arm), const IFLA_MTU ideal-int pkg syscall (linux-arm), const IFLA_NET_NS_PID ideal-int pkg syscall (linux-arm), const IFLA_OPERSTATE ideal-int pkg syscall (linux-arm), const IFLA_PRIORITY ideal-int pkg syscall (linux-arm), const IFLA_PROTINFO ideal-int pkg syscall (linux-arm), const IFLA_QDISC ideal-int pkg syscall (linux-arm), const IFLA_STATS ideal-int pkg syscall (linux-arm), const IFLA_TXQLEN ideal-int pkg syscall (linux-arm), const IFLA_UNSPEC ideal-int pkg syscall (linux-arm), const IFLA_WEIGHT ideal-int pkg syscall (linux-arm), const IFLA_WIRELESS ideal-int pkg syscall (linux-arm), const IFNAMSIZ ideal-int pkg syscall (linux-arm), const IGNBRK ideal-int pkg syscall (linux-arm), const IGNCR ideal-int pkg syscall (linux-arm), const IGNPAR ideal-int pkg syscall (linux-arm), const IMAXBEL ideal-int pkg syscall (linux-arm), const INLCR ideal-int pkg syscall (linux-arm), const INPCK ideal-int pkg syscall (linux-arm), const IN_ACCESS ideal-int pkg syscall (linux-arm), const IN_ALL_EVENTS ideal-int pkg syscall (linux-arm), const IN_ATTRIB ideal-int pkg syscall (linux-arm), const IN_CLASSA_HOST ideal-int pkg syscall (linux-arm), const IN_CLASSA_MAX ideal-int pkg syscall (linux-arm), const IN_CLASSA_NET ideal-int pkg syscall (linux-arm), const IN_CLASSA_NSHIFT ideal-int pkg syscall (linux-arm), const IN_CLASSB_HOST ideal-int pkg syscall (linux-arm), const IN_CLASSB_MAX ideal-int pkg syscall (linux-arm), const IN_CLASSB_NET ideal-int pkg syscall (linux-arm), const IN_CLASSB_NSHIFT ideal-int pkg syscall (linux-arm), const IN_CLASSC_HOST ideal-int pkg syscall (linux-arm), const IN_CLASSC_NET ideal-int pkg syscall (linux-arm), const IN_CLASSC_NSHIFT ideal-int pkg syscall (linux-arm), const IN_CLOEXEC ideal-int pkg syscall (linux-arm), const IN_CLOSE ideal-int pkg syscall (linux-arm), const IN_CLOSE_NOWRITE ideal-int pkg syscall (linux-arm), const IN_CLOSE_WRITE ideal-int pkg syscall (linux-arm), const IN_CREATE ideal-int pkg syscall (linux-arm), const IN_DELETE ideal-int pkg syscall (linux-arm), const IN_DELETE_SELF ideal-int pkg syscall (linux-arm), const IN_DONT_FOLLOW ideal-int pkg syscall (linux-arm), const IN_EXCL_UNLINK ideal-int pkg syscall (linux-arm), const IN_IGNORED ideal-int pkg syscall (linux-arm), const IN_ISDIR ideal-int pkg syscall (linux-arm), const IN_LOOPBACKNET ideal-int pkg syscall (linux-arm), const IN_MASK_ADD ideal-int pkg syscall (linux-arm), const IN_MODIFY ideal-int pkg syscall (linux-arm), const IN_MOVE ideal-int pkg syscall (linux-arm), const IN_MOVED_FROM ideal-int pkg syscall (linux-arm), const IN_MOVED_TO ideal-int pkg syscall (linux-arm), const IN_MOVE_SELF ideal-int pkg syscall (linux-arm), const IN_NONBLOCK ideal-int pkg syscall (linux-arm), const IN_ONESHOT ideal-int pkg syscall (linux-arm), const IN_ONLYDIR ideal-int pkg syscall (linux-arm), const IN_OPEN ideal-int pkg syscall (linux-arm), const IN_Q_OVERFLOW ideal-int pkg syscall (linux-arm), const IN_UNMOUNT ideal-int pkg syscall (linux-arm), const IPPROTO_AH ideal-int pkg syscall (linux-arm), const IPPROTO_COMP ideal-int pkg syscall (linux-arm), const IPPROTO_DCCP ideal-int pkg syscall (linux-arm), const IPPROTO_DSTOPTS ideal-int pkg syscall (linux-arm), const IPPROTO_EGP ideal-int pkg syscall (linux-arm), const IPPROTO_ENCAP ideal-int pkg syscall (linux-arm), const IPPROTO_ESP ideal-int pkg syscall (linux-arm), const IPPROTO_FRAGMENT ideal-int pkg syscall (linux-arm), const IPPROTO_GRE ideal-int pkg syscall (linux-arm), const IPPROTO_HOPOPTS ideal-int pkg syscall (linux-arm), const IPPROTO_ICMP ideal-int pkg syscall (linux-arm), const IPPROTO_ICMPV6 ideal-int pkg syscall (linux-arm), const IPPROTO_IDP ideal-int pkg syscall (linux-arm), const IPPROTO_IGMP ideal-int pkg syscall (linux-arm), const IPPROTO_IPIP ideal-int pkg syscall (linux-arm), const IPPROTO_MTP ideal-int pkg syscall (linux-arm), const IPPROTO_NONE ideal-int pkg syscall (linux-arm), const IPPROTO_PIM ideal-int pkg syscall (linux-arm), const IPPROTO_PUP ideal-int pkg syscall (linux-arm), const IPPROTO_RAW ideal-int pkg syscall (linux-arm), const IPPROTO_ROUTING ideal-int pkg syscall (linux-arm), const IPPROTO_RSVP ideal-int pkg syscall (linux-arm), const IPPROTO_SCTP ideal-int pkg syscall (linux-arm), const IPPROTO_TP ideal-int pkg syscall (linux-arm), const IPPROTO_UDPLITE ideal-int pkg syscall (linux-arm), const IPV6_2292DSTOPTS ideal-int pkg syscall (linux-arm), const IPV6_2292HOPLIMIT ideal-int pkg syscall (linux-arm), const IPV6_2292HOPOPTS ideal-int pkg syscall (linux-arm), const IPV6_2292PKTINFO ideal-int pkg syscall (linux-arm), const IPV6_2292PKTOPTIONS ideal-int pkg syscall (linux-arm), const IPV6_2292RTHDR ideal-int pkg syscall (linux-arm), const IPV6_ADDRFORM ideal-int pkg syscall (linux-arm), const IPV6_ADD_MEMBERSHIP ideal-int pkg syscall (linux-arm), const IPV6_AUTHHDR ideal-int pkg syscall (linux-arm), const IPV6_CHECKSUM ideal-int pkg syscall (linux-arm), const IPV6_DROP_MEMBERSHIP ideal-int pkg syscall (linux-arm), const IPV6_DSTOPTS ideal-int pkg syscall (linux-arm), const IPV6_HOPLIMIT ideal-int pkg syscall (linux-arm), const IPV6_HOPOPTS ideal-int pkg syscall (linux-arm), const IPV6_IPSEC_POLICY ideal-int pkg syscall (linux-arm), const IPV6_JOIN_ANYCAST ideal-int pkg syscall (linux-arm), const IPV6_LEAVE_ANYCAST ideal-int pkg syscall (linux-arm), const IPV6_MTU ideal-int pkg syscall (linux-arm), const IPV6_MTU_DISCOVER ideal-int pkg syscall (linux-arm), const IPV6_NEXTHOP ideal-int pkg syscall (linux-arm), const IPV6_PKTINFO ideal-int pkg syscall (linux-arm), const IPV6_PMTUDISC_DO ideal-int pkg syscall (linux-arm), const IPV6_PMTUDISC_DONT ideal-int pkg syscall (linux-arm), const IPV6_PMTUDISC_PROBE ideal-int pkg syscall (linux-arm), const IPV6_PMTUDISC_WANT ideal-int pkg syscall (linux-arm), const IPV6_RECVDSTOPTS ideal-int pkg syscall (linux-arm), const IPV6_RECVERR ideal-int pkg syscall (linux-arm), const IPV6_RECVHOPLIMIT ideal-int pkg syscall (linux-arm), const IPV6_RECVHOPOPTS ideal-int pkg syscall (linux-arm), const IPV6_RECVPKTINFO ideal-int pkg syscall (linux-arm), const IPV6_RECVRTHDR ideal-int pkg syscall (linux-arm), const IPV6_RECVTCLASS ideal-int pkg syscall (linux-arm), const IPV6_ROUTER_ALERT ideal-int pkg syscall (linux-arm), const IPV6_RTHDR ideal-int pkg syscall (linux-arm), const IPV6_RTHDRDSTOPTS ideal-int pkg syscall (linux-arm), const IPV6_RTHDR_LOOSE ideal-int pkg syscall (linux-arm), const IPV6_RTHDR_STRICT ideal-int pkg syscall (linux-arm), const IPV6_RTHDR_TYPE_0 ideal-int pkg syscall (linux-arm), const IPV6_RXDSTOPTS ideal-int pkg syscall (linux-arm), const IPV6_RXHOPOPTS ideal-int pkg syscall (linux-arm), const IPV6_TCLASS ideal-int pkg syscall (linux-arm), const IPV6_XFRM_POLICY ideal-int pkg syscall (linux-arm), const IP_ADD_SOURCE_MEMBERSHIP ideal-int pkg syscall (linux-arm), const IP_BLOCK_SOURCE ideal-int pkg syscall (linux-arm), const IP_DEFAULT_MULTICAST_LOOP ideal-int pkg syscall (linux-arm), const IP_DEFAULT_MULTICAST_TTL ideal-int pkg syscall (linux-arm), const IP_DF ideal-int pkg syscall (linux-arm), const IP_DROP_SOURCE_MEMBERSHIP ideal-int pkg syscall (linux-arm), const IP_FREEBIND ideal-int pkg syscall (linux-arm), const IP_HDRINCL ideal-int pkg syscall (linux-arm), const IP_IPSEC_POLICY ideal-int pkg syscall (linux-arm), const IP_MAXPACKET ideal-int pkg syscall (linux-arm), const IP_MAX_MEMBERSHIPS ideal-int pkg syscall (linux-arm), const IP_MF ideal-int pkg syscall (linux-arm), const IP_MINTTL ideal-int pkg syscall (linux-arm), const IP_MSFILTER ideal-int pkg syscall (linux-arm), const IP_MSS ideal-int pkg syscall (linux-arm), const IP_MTU ideal-int pkg syscall (linux-arm), const IP_MTU_DISCOVER ideal-int pkg syscall (linux-arm), const IP_OFFMASK ideal-int pkg syscall (linux-arm), const IP_OPTIONS ideal-int pkg syscall (linux-arm), const IP_ORIGDSTADDR ideal-int pkg syscall (linux-arm), const IP_PASSSEC ideal-int pkg syscall (linux-arm), const IP_PKTINFO ideal-int pkg syscall (linux-arm), const IP_PKTOPTIONS ideal-int pkg syscall (linux-arm), const IP_PMTUDISC ideal-int pkg syscall (linux-arm), const IP_PMTUDISC_DO ideal-int pkg syscall (linux-arm), const IP_PMTUDISC_DONT ideal-int pkg syscall (linux-arm), const IP_PMTUDISC_PROBE ideal-int pkg syscall (linux-arm), const IP_PMTUDISC_WANT ideal-int pkg syscall (linux-arm), const IP_RECVERR ideal-int pkg syscall (linux-arm), const IP_RECVOPTS ideal-int pkg syscall (linux-arm), const IP_RECVORIGDSTADDR ideal-int pkg syscall (linux-arm), const IP_RECVRETOPTS ideal-int pkg syscall (linux-arm), const IP_RECVTOS ideal-int pkg syscall (linux-arm), const IP_RECVTTL ideal-int pkg syscall (linux-arm), const IP_RETOPTS ideal-int pkg syscall (linux-arm), const IP_RF ideal-int pkg syscall (linux-arm), const IP_ROUTER_ALERT ideal-int pkg syscall (linux-arm), const IP_TRANSPARENT ideal-int pkg syscall (linux-arm), const IP_UNBLOCK_SOURCE ideal-int pkg syscall (linux-arm), const IP_XFRM_POLICY ideal-int pkg syscall (linux-arm), const ISIG ideal-int pkg syscall (linux-arm), const ISTRIP ideal-int pkg syscall (linux-arm), const IUCLC ideal-int pkg syscall (linux-arm), const IUTF8 ideal-int pkg syscall (linux-arm), const IXANY ideal-int pkg syscall (linux-arm), const IXOFF ideal-int pkg syscall (linux-arm), const IXON ideal-int pkg syscall (linux-arm), const LINUX_REBOOT_CMD_CAD_OFF ideal-int pkg syscall (linux-arm), const LINUX_REBOOT_CMD_CAD_ON ideal-int pkg syscall (linux-arm), const LINUX_REBOOT_CMD_HALT ideal-int pkg syscall (linux-arm), const LINUX_REBOOT_CMD_KEXEC ideal-int pkg syscall (linux-arm), const LINUX_REBOOT_CMD_POWER_OFF ideal-int pkg syscall (linux-arm), const LINUX_REBOOT_CMD_RESTART ideal-int pkg syscall (linux-arm), const LINUX_REBOOT_CMD_RESTART2 ideal-int pkg syscall (linux-arm), const LINUX_REBOOT_CMD_SW_SUSPEND ideal-int pkg syscall (linux-arm), const LINUX_REBOOT_MAGIC1 ideal-int pkg syscall (linux-arm), const LINUX_REBOOT_MAGIC2 ideal-int pkg syscall (linux-arm), const LOCK_EX ideal-int pkg syscall (linux-arm), const LOCK_NB ideal-int pkg syscall (linux-arm), const LOCK_SH ideal-int pkg syscall (linux-arm), const LOCK_UN ideal-int pkg syscall (linux-arm), const MADV_DOFORK ideal-int pkg syscall (linux-arm), const MADV_DONTFORK ideal-int pkg syscall (linux-arm), const MADV_DONTNEED ideal-int pkg syscall (linux-arm), const MADV_HUGEPAGE ideal-int pkg syscall (linux-arm), const MADV_HWPOISON ideal-int pkg syscall (linux-arm), const MADV_MERGEABLE ideal-int pkg syscall (linux-arm), const MADV_NOHUGEPAGE ideal-int pkg syscall (linux-arm), const MADV_NORMAL ideal-int pkg syscall (linux-arm), const MADV_RANDOM ideal-int pkg syscall (linux-arm), const MADV_REMOVE ideal-int pkg syscall (linux-arm), const MADV_SEQUENTIAL ideal-int pkg syscall (linux-arm), const MADV_UNMERGEABLE ideal-int pkg syscall (linux-arm), const MADV_WILLNEED ideal-int pkg syscall (linux-arm), const MAP_ANON ideal-int pkg syscall (linux-arm), const MAP_ANONYMOUS ideal-int pkg syscall (linux-arm), const MAP_DENYWRITE ideal-int pkg syscall (linux-arm), const MAP_EXECUTABLE ideal-int pkg syscall (linux-arm), const MAP_FILE ideal-int pkg syscall (linux-arm), const MAP_FIXED ideal-int pkg syscall (linux-arm), const MAP_GROWSDOWN ideal-int pkg syscall (linux-arm), const MAP_LOCKED ideal-int pkg syscall (linux-arm), const MAP_NONBLOCK ideal-int pkg syscall (linux-arm), const MAP_NORESERVE ideal-int pkg syscall (linux-arm), const MAP_POPULATE ideal-int pkg syscall (linux-arm), const MAP_PRIVATE ideal-int pkg syscall (linux-arm), const MAP_SHARED ideal-int pkg syscall (linux-arm), const MAP_TYPE ideal-int pkg syscall (linux-arm), const MCL_CURRENT ideal-int pkg syscall (linux-arm), const MCL_FUTURE ideal-int pkg syscall (linux-arm), const MNT_DETACH ideal-int pkg syscall (linux-arm), const MNT_EXPIRE ideal-int pkg syscall (linux-arm), const MNT_FORCE ideal-int pkg syscall (linux-arm), const MSG_CMSG_CLOEXEC ideal-int pkg syscall (linux-arm), const MSG_CONFIRM ideal-int pkg syscall (linux-arm), const MSG_CTRUNC ideal-int pkg syscall (linux-arm), const MSG_DONTROUTE ideal-int pkg syscall (linux-arm), const MSG_DONTWAIT ideal-int pkg syscall (linux-arm), const MSG_EOR ideal-int pkg syscall (linux-arm), const MSG_ERRQUEUE ideal-int pkg syscall (linux-arm), const MSG_FIN ideal-int pkg syscall (linux-arm), const MSG_MORE ideal-int pkg syscall (linux-arm), const MSG_NOSIGNAL ideal-int pkg syscall (linux-arm), const MSG_OOB ideal-int pkg syscall (linux-arm), const MSG_PEEK ideal-int pkg syscall (linux-arm), const MSG_PROXY ideal-int pkg syscall (linux-arm), const MSG_RST ideal-int pkg syscall (linux-arm), const MSG_SYN ideal-int pkg syscall (linux-arm), const MSG_TRUNC ideal-int pkg syscall (linux-arm), const MSG_TRYHARD ideal-int pkg syscall (linux-arm), const MSG_WAITALL ideal-int pkg syscall (linux-arm), const MSG_WAITFORONE ideal-int pkg syscall (linux-arm), const MS_ACTIVE ideal-int pkg syscall (linux-arm), const MS_ASYNC ideal-int pkg syscall (linux-arm), const MS_BIND ideal-int pkg syscall (linux-arm), const MS_DIRSYNC ideal-int pkg syscall (linux-arm), const MS_INVALIDATE ideal-int pkg syscall (linux-arm), const MS_I_VERSION ideal-int pkg syscall (linux-arm), const MS_KERNMOUNT ideal-int pkg syscall (linux-arm), const MS_MANDLOCK ideal-int pkg syscall (linux-arm), const MS_MGC_MSK ideal-int pkg syscall (linux-arm), const MS_MGC_VAL ideal-int pkg syscall (linux-arm), const MS_MOVE ideal-int pkg syscall (linux-arm), const MS_NOATIME ideal-int pkg syscall (linux-arm), const MS_NODEV ideal-int pkg syscall (linux-arm), const MS_NODIRATIME ideal-int pkg syscall (linux-arm), const MS_NOEXEC ideal-int pkg syscall (linux-arm), const MS_NOSUID ideal-int pkg syscall (linux-arm), const MS_NOUSER ideal-int pkg syscall (linux-arm), const MS_POSIXACL ideal-int pkg syscall (linux-arm), const MS_PRIVATE ideal-int pkg syscall (linux-arm), const MS_RDONLY ideal-int pkg syscall (linux-arm), const MS_REC ideal-int pkg syscall (linux-arm), const MS_RELATIME ideal-int pkg syscall (linux-arm), const MS_REMOUNT ideal-int pkg syscall (linux-arm), const MS_RMT_MASK ideal-int pkg syscall (linux-arm), const MS_SHARED ideal-int pkg syscall (linux-arm), const MS_SILENT ideal-int pkg syscall (linux-arm), const MS_SLAVE ideal-int pkg syscall (linux-arm), const MS_STRICTATIME ideal-int pkg syscall (linux-arm), const MS_SYNC ideal-int pkg syscall (linux-arm), const MS_SYNCHRONOUS ideal-int pkg syscall (linux-arm), const MS_UNBINDABLE ideal-int pkg syscall (linux-arm), const NAME_MAX ideal-int pkg syscall (linux-arm), const NETLINK_ADD_MEMBERSHIP ideal-int pkg syscall (linux-arm), const NETLINK_AUDIT ideal-int pkg syscall (linux-arm), const NETLINK_BROADCAST_ERROR ideal-int pkg syscall (linux-arm), const NETLINK_CONNECTOR ideal-int pkg syscall (linux-arm), const NETLINK_DNRTMSG ideal-int pkg syscall (linux-arm), const NETLINK_DROP_MEMBERSHIP ideal-int pkg syscall (linux-arm), const NETLINK_ECRYPTFS ideal-int pkg syscall (linux-arm), const NETLINK_FIB_LOOKUP ideal-int pkg syscall (linux-arm), const NETLINK_FIREWALL ideal-int pkg syscall (linux-arm), const NETLINK_GENERIC ideal-int pkg syscall (linux-arm), const NETLINK_INET_DIAG ideal-int pkg syscall (linux-arm), const NETLINK_IP6_FW ideal-int pkg syscall (linux-arm), const NETLINK_ISCSI ideal-int pkg syscall (linux-arm), const NETLINK_KOBJECT_UEVENT ideal-int pkg syscall (linux-arm), const NETLINK_NETFILTER ideal-int pkg syscall (linux-arm), const NETLINK_NFLOG ideal-int pkg syscall (linux-arm), const NETLINK_NO_ENOBUFS ideal-int pkg syscall (linux-arm), const NETLINK_PKTINFO ideal-int pkg syscall (linux-arm), const NETLINK_RDMA ideal-int pkg syscall (linux-arm), const NETLINK_ROUTE ideal-int pkg syscall (linux-arm), const NETLINK_SCSITRANSPORT ideal-int pkg syscall (linux-arm), const NETLINK_SELINUX ideal-int pkg syscall (linux-arm), const NETLINK_UNUSED ideal-int pkg syscall (linux-arm), const NETLINK_USERSOCK ideal-int pkg syscall (linux-arm), const NETLINK_XFRM ideal-int pkg syscall (linux-arm), const NLA_ALIGNTO ideal-int pkg syscall (linux-arm), const NLA_F_NESTED ideal-int pkg syscall (linux-arm), const NLA_F_NET_BYTEORDER ideal-int pkg syscall (linux-arm), const NLA_HDRLEN ideal-int pkg syscall (linux-arm), const NLMSG_ALIGNTO ideal-int pkg syscall (linux-arm), const NLMSG_DONE ideal-int pkg syscall (linux-arm), const NLMSG_ERROR ideal-int pkg syscall (linux-arm), const NLMSG_HDRLEN ideal-int pkg syscall (linux-arm), const NLMSG_MIN_TYPE ideal-int pkg syscall (linux-arm), const NLMSG_NOOP ideal-int pkg syscall (linux-arm), const NLMSG_OVERRUN ideal-int pkg syscall (linux-arm), const NLM_F_ACK ideal-int pkg syscall (linux-arm), const NLM_F_APPEND ideal-int pkg syscall (linux-arm), const NLM_F_ATOMIC ideal-int pkg syscall (linux-arm), const NLM_F_CREATE ideal-int pkg syscall (linux-arm), const NLM_F_DUMP ideal-int pkg syscall (linux-arm), const NLM_F_ECHO ideal-int pkg syscall (linux-arm), const NLM_F_EXCL ideal-int pkg syscall (linux-arm), const NLM_F_MATCH ideal-int pkg syscall (linux-arm), const NLM_F_MULTI ideal-int pkg syscall (linux-arm), const NLM_F_REPLACE ideal-int pkg syscall (linux-arm), const NLM_F_REQUEST ideal-int pkg syscall (linux-arm), const NLM_F_ROOT ideal-int pkg syscall (linux-arm), const NOFLSH ideal-int pkg syscall (linux-arm), const OCRNL ideal-int pkg syscall (linux-arm), const OFDEL ideal-int pkg syscall (linux-arm), const OFILL ideal-int pkg syscall (linux-arm), const OLCUC ideal-int pkg syscall (linux-arm), const ONLCR ideal-int pkg syscall (linux-arm), const ONLRET ideal-int pkg syscall (linux-arm), const ONOCR ideal-int pkg syscall (linux-arm), const OPOST ideal-int pkg syscall (linux-arm), const O_ACCMODE ideal-int pkg syscall (linux-arm), const O_DIRECT ideal-int pkg syscall (linux-arm), const O_DIRECTORY ideal-int pkg syscall (linux-arm), const O_DSYNC ideal-int pkg syscall (linux-arm), const O_FSYNC ideal-int pkg syscall (linux-arm), const O_LARGEFILE ideal-int pkg syscall (linux-arm), const O_NDELAY ideal-int pkg syscall (linux-arm), const O_NOATIME ideal-int pkg syscall (linux-arm), const O_NOFOLLOW ideal-int pkg syscall (linux-arm), const O_RSYNC ideal-int pkg syscall (linux-arm), const PACKET_ADD_MEMBERSHIP ideal-int pkg syscall (linux-arm), const PACKET_BROADCAST ideal-int pkg syscall (linux-arm), const PACKET_DROP_MEMBERSHIP ideal-int pkg syscall (linux-arm), const PACKET_FASTROUTE ideal-int pkg syscall (linux-arm), const PACKET_HOST ideal-int pkg syscall (linux-arm), const PACKET_LOOPBACK ideal-int pkg syscall (linux-arm), const PACKET_MR_ALLMULTI ideal-int pkg syscall (linux-arm), const PACKET_MR_MULTICAST ideal-int pkg syscall (linux-arm), const PACKET_MR_PROMISC ideal-int pkg syscall (linux-arm), const PACKET_MULTICAST ideal-int pkg syscall (linux-arm), const PACKET_OTHERHOST ideal-int pkg syscall (linux-arm), const PACKET_OUTGOING ideal-int pkg syscall (linux-arm), const PACKET_RECV_OUTPUT ideal-int pkg syscall (linux-arm), const PACKET_RX_RING ideal-int pkg syscall (linux-arm), const PACKET_STATISTICS ideal-int pkg syscall (linux-arm), const PARENB ideal-int pkg syscall (linux-arm), const PARMRK ideal-int pkg syscall (linux-arm), const PARODD ideal-int pkg syscall (linux-arm), const PENDIN ideal-int pkg syscall (linux-arm), const PROT_EXEC ideal-int pkg syscall (linux-arm), const PROT_GROWSDOWN ideal-int pkg syscall (linux-arm), const PROT_GROWSUP ideal-int pkg syscall (linux-arm), const PROT_NONE ideal-int pkg syscall (linux-arm), const PROT_READ ideal-int pkg syscall (linux-arm), const PROT_WRITE ideal-int pkg syscall (linux-arm), const PR_CAPBSET_DROP ideal-int pkg syscall (linux-arm), const PR_CAPBSET_READ ideal-int pkg syscall (linux-arm), const PR_CLEAR_SECCOMP_FILTER ideal-int pkg syscall (linux-arm), const PR_ENDIAN_BIG ideal-int pkg syscall (linux-arm), const PR_ENDIAN_LITTLE ideal-int pkg syscall (linux-arm), const PR_ENDIAN_PPC_LITTLE ideal-int pkg syscall (linux-arm), const PR_FPEMU_NOPRINT ideal-int pkg syscall (linux-arm), const PR_FPEMU_SIGFPE ideal-int pkg syscall (linux-arm), const PR_FP_EXC_ASYNC ideal-int pkg syscall (linux-arm), const PR_FP_EXC_DISABLED ideal-int pkg syscall (linux-arm), const PR_FP_EXC_DIV ideal-int pkg syscall (linux-arm), const PR_FP_EXC_INV ideal-int pkg syscall (linux-arm), const PR_FP_EXC_NONRECOV ideal-int pkg syscall (linux-arm), const PR_FP_EXC_OVF ideal-int pkg syscall (linux-arm), const PR_FP_EXC_PRECISE ideal-int pkg syscall (linux-arm), const PR_FP_EXC_RES ideal-int pkg syscall (linux-arm), const PR_FP_EXC_SW_ENABLE ideal-int pkg syscall (linux-arm), const PR_FP_EXC_UND ideal-int pkg syscall (linux-arm), const PR_GET_DUMPABLE ideal-int pkg syscall (linux-arm), const PR_GET_ENDIAN ideal-int pkg syscall (linux-arm), const PR_GET_FPEMU ideal-int pkg syscall (linux-arm), const PR_GET_FPEXC ideal-int pkg syscall (linux-arm), const PR_GET_KEEPCAPS ideal-int pkg syscall (linux-arm), const PR_GET_NAME ideal-int pkg syscall (linux-arm), const PR_GET_PDEATHSIG ideal-int pkg syscall (linux-arm), const PR_GET_SECCOMP ideal-int pkg syscall (linux-arm), const PR_GET_SECCOMP_FILTER ideal-int pkg syscall (linux-arm), const PR_GET_SECUREBITS ideal-int pkg syscall (linux-arm), const PR_GET_TIMERSLACK ideal-int pkg syscall (linux-arm), const PR_GET_TIMING ideal-int pkg syscall (linux-arm), const PR_GET_TSC ideal-int pkg syscall (linux-arm), const PR_GET_UNALIGN ideal-int pkg syscall (linux-arm), const PR_MCE_KILL ideal-int pkg syscall (linux-arm), const PR_MCE_KILL_CLEAR ideal-int pkg syscall (linux-arm), const PR_MCE_KILL_DEFAULT ideal-int pkg syscall (linux-arm), const PR_MCE_KILL_EARLY ideal-int pkg syscall (linux-arm), const PR_MCE_KILL_GET ideal-int pkg syscall (linux-arm), const PR_MCE_KILL_LATE ideal-int pkg syscall (linux-arm), const PR_MCE_KILL_SET ideal-int pkg syscall (linux-arm), const PR_SECCOMP_FILTER_EVENT ideal-int pkg syscall (linux-arm), const PR_SECCOMP_FILTER_SYSCALL ideal-int pkg syscall (linux-arm), const PR_SET_DUMPABLE ideal-int pkg syscall (linux-arm), const PR_SET_ENDIAN ideal-int pkg syscall (linux-arm), const PR_SET_FPEMU ideal-int pkg syscall (linux-arm), const PR_SET_FPEXC ideal-int pkg syscall (linux-arm), const PR_SET_KEEPCAPS ideal-int pkg syscall (linux-arm), const PR_SET_NAME ideal-int pkg syscall (linux-arm), const PR_SET_PDEATHSIG ideal-int pkg syscall (linux-arm), const PR_SET_PTRACER ideal-int pkg syscall (linux-arm), const PR_SET_SECCOMP ideal-int pkg syscall (linux-arm), const PR_SET_SECCOMP_FILTER ideal-int pkg syscall (linux-arm), const PR_SET_SECUREBITS ideal-int pkg syscall (linux-arm), const PR_SET_TIMERSLACK ideal-int pkg syscall (linux-arm), const PR_SET_TIMING ideal-int pkg syscall (linux-arm), const PR_SET_TSC ideal-int pkg syscall (linux-arm), const PR_SET_UNALIGN ideal-int pkg syscall (linux-arm), const PR_TASK_PERF_EVENTS_DISABLE ideal-int pkg syscall (linux-arm), const PR_TASK_PERF_EVENTS_ENABLE ideal-int pkg syscall (linux-arm), const PR_TIMING_STATISTICAL ideal-int pkg syscall (linux-arm), const PR_TIMING_TIMESTAMP ideal-int pkg syscall (linux-arm), const PR_TSC_ENABLE ideal-int pkg syscall (linux-arm), const PR_TSC_SIGSEGV ideal-int pkg syscall (linux-arm), const PR_UNALIGN_NOPRINT ideal-int pkg syscall (linux-arm), const PR_UNALIGN_SIGBUS ideal-int pkg syscall (linux-arm), const PTRACE_ATTACH ideal-int pkg syscall (linux-arm), const PTRACE_CONT ideal-int pkg syscall (linux-arm), const PTRACE_DETACH ideal-int pkg syscall (linux-arm), const PTRACE_EVENT_CLONE ideal-int pkg syscall (linux-arm), const PTRACE_EVENT_EXEC ideal-int pkg syscall (linux-arm), const PTRACE_EVENT_EXIT ideal-int pkg syscall (linux-arm), const PTRACE_EVENT_FORK ideal-int pkg syscall (linux-arm), const PTRACE_EVENT_VFORK ideal-int pkg syscall (linux-arm), const PTRACE_EVENT_VFORK_DONE ideal-int pkg syscall (linux-arm), const PTRACE_GETCRUNCHREGS ideal-int pkg syscall (linux-arm), const PTRACE_GETEVENTMSG ideal-int pkg syscall (linux-arm), const PTRACE_GETFPREGS ideal-int pkg syscall (linux-arm), const PTRACE_GETHBPREGS ideal-int pkg syscall (linux-arm), const PTRACE_GETREGS ideal-int pkg syscall (linux-arm), const PTRACE_GETREGSET ideal-int pkg syscall (linux-arm), const PTRACE_GETSIGINFO ideal-int pkg syscall (linux-arm), const PTRACE_GETVFPREGS ideal-int pkg syscall (linux-arm), const PTRACE_GETWMMXREGS ideal-int pkg syscall (linux-arm), const PTRACE_GET_THREAD_AREA ideal-int pkg syscall (linux-arm), const PTRACE_KILL ideal-int pkg syscall (linux-arm), const PTRACE_OLDSETOPTIONS ideal-int pkg syscall (linux-arm), const PTRACE_O_MASK ideal-int pkg syscall (linux-arm), const PTRACE_O_TRACECLONE ideal-int pkg syscall (linux-arm), const PTRACE_O_TRACEEXEC ideal-int pkg syscall (linux-arm), const PTRACE_O_TRACEEXIT ideal-int pkg syscall (linux-arm), const PTRACE_O_TRACEFORK ideal-int pkg syscall (linux-arm), const PTRACE_O_TRACESYSGOOD ideal-int pkg syscall (linux-arm), const PTRACE_O_TRACEVFORK ideal-int pkg syscall (linux-arm), const PTRACE_O_TRACEVFORKDONE ideal-int pkg syscall (linux-arm), const PTRACE_PEEKDATA ideal-int pkg syscall (linux-arm), const PTRACE_PEEKTEXT ideal-int pkg syscall (linux-arm), const PTRACE_PEEKUSR ideal-int pkg syscall (linux-arm), const PTRACE_POKEDATA ideal-int pkg syscall (linux-arm), const PTRACE_POKETEXT ideal-int pkg syscall (linux-arm), const PTRACE_POKEUSR ideal-int pkg syscall (linux-arm), const PTRACE_SETCRUNCHREGS ideal-int pkg syscall (linux-arm), const PTRACE_SETFPREGS ideal-int pkg syscall (linux-arm), const PTRACE_SETHBPREGS ideal-int pkg syscall (linux-arm), const PTRACE_SETOPTIONS ideal-int pkg syscall (linux-arm), const PTRACE_SETREGS ideal-int pkg syscall (linux-arm), const PTRACE_SETREGSET ideal-int pkg syscall (linux-arm), const PTRACE_SETSIGINFO ideal-int pkg syscall (linux-arm), const PTRACE_SETVFPREGS ideal-int pkg syscall (linux-arm), const PTRACE_SETWMMXREGS ideal-int pkg syscall (linux-arm), const PTRACE_SET_SYSCALL ideal-int pkg syscall (linux-arm), const PTRACE_SINGLESTEP ideal-int pkg syscall (linux-arm), const PTRACE_SYSCALL ideal-int pkg syscall (linux-arm), const PTRACE_TRACEME ideal-int pkg syscall (linux-arm), const PT_DATA_ADDR ideal-int pkg syscall (linux-arm), const PT_TEXT_ADDR ideal-int pkg syscall (linux-arm), const PT_TEXT_END_ADDR ideal-int pkg syscall (linux-arm), const PathMax ideal-int pkg syscall (linux-arm), const RLIMIT_AS ideal-int pkg syscall (linux-arm), const RLIMIT_CORE ideal-int pkg syscall (linux-arm), const RLIMIT_CPU ideal-int pkg syscall (linux-arm), const RLIMIT_DATA ideal-int pkg syscall (linux-arm), const RLIMIT_FSIZE ideal-int pkg syscall (linux-arm), const RLIMIT_NOFILE ideal-int pkg syscall (linux-arm), const RLIMIT_STACK ideal-int pkg syscall (linux-arm), const RLIM_INFINITY ideal-int pkg syscall (linux-arm), const RTAX_ADVMSS ideal-int pkg syscall (linux-arm), const RTAX_CWND ideal-int pkg syscall (linux-arm), const RTAX_FEATURES ideal-int pkg syscall (linux-arm), const RTAX_FEATURE_ALLFRAG ideal-int pkg syscall (linux-arm), const RTAX_FEATURE_ECN ideal-int pkg syscall (linux-arm), const RTAX_FEATURE_SACK ideal-int pkg syscall (linux-arm), const RTAX_FEATURE_TIMESTAMP ideal-int pkg syscall (linux-arm), const RTAX_HOPLIMIT ideal-int pkg syscall (linux-arm), const RTAX_INITCWND ideal-int pkg syscall (linux-arm), const RTAX_INITRWND ideal-int pkg syscall (linux-arm), const RTAX_LOCK ideal-int pkg syscall (linux-arm), const RTAX_MAX ideal-int pkg syscall (linux-arm), const RTAX_MTU ideal-int pkg syscall (linux-arm), const RTAX_REORDERING ideal-int pkg syscall (linux-arm), const RTAX_RTO_MIN ideal-int pkg syscall (linux-arm), const RTAX_RTT ideal-int pkg syscall (linux-arm), const RTAX_RTTVAR ideal-int pkg syscall (linux-arm), const RTAX_SSTHRESH ideal-int pkg syscall (linux-arm), const RTAX_UNSPEC ideal-int pkg syscall (linux-arm), const RTAX_WINDOW ideal-int pkg syscall (linux-arm), const RTA_ALIGNTO ideal-int pkg syscall (linux-arm), const RTA_CACHEINFO ideal-int pkg syscall (linux-arm), const RTA_DST ideal-int pkg syscall (linux-arm), const RTA_FLOW ideal-int pkg syscall (linux-arm), const RTA_GATEWAY ideal-int pkg syscall (linux-arm), const RTA_IIF ideal-int pkg syscall (linux-arm), const RTA_MAX ideal-int pkg syscall (linux-arm), const RTA_METRICS ideal-int pkg syscall (linux-arm), const RTA_MULTIPATH ideal-int pkg syscall (linux-arm), const RTA_OIF ideal-int pkg syscall (linux-arm), const RTA_PREFSRC ideal-int pkg syscall (linux-arm), const RTA_PRIORITY ideal-int pkg syscall (linux-arm), const RTA_SRC ideal-int pkg syscall (linux-arm), const RTA_TABLE ideal-int pkg syscall (linux-arm), const RTA_UNSPEC ideal-int pkg syscall (linux-arm), const RTCF_DIRECTSRC ideal-int pkg syscall (linux-arm), const RTCF_DOREDIRECT ideal-int pkg syscall (linux-arm), const RTCF_LOG ideal-int pkg syscall (linux-arm), const RTCF_MASQ ideal-int pkg syscall (linux-arm), const RTCF_NAT ideal-int pkg syscall (linux-arm), const RTCF_VALVE ideal-int pkg syscall (linux-arm), const RTF_ADDRCLASSMASK ideal-int pkg syscall (linux-arm), const RTF_ADDRCONF ideal-int pkg syscall (linux-arm), const RTF_ALLONLINK ideal-int pkg syscall (linux-arm), const RTF_BROADCAST ideal-int pkg syscall (linux-arm), const RTF_CACHE ideal-int pkg syscall (linux-arm), const RTF_DEFAULT ideal-int pkg syscall (linux-arm), const RTF_DYNAMIC ideal-int pkg syscall (linux-arm), const RTF_FLOW ideal-int pkg syscall (linux-arm), const RTF_GATEWAY ideal-int pkg syscall (linux-arm), const RTF_HOST ideal-int pkg syscall (linux-arm), const RTF_INTERFACE ideal-int pkg syscall (linux-arm), const RTF_IRTT ideal-int pkg syscall (linux-arm), const RTF_LINKRT ideal-int pkg syscall (linux-arm), const RTF_LOCAL ideal-int pkg syscall (linux-arm), const RTF_MODIFIED ideal-int pkg syscall (linux-arm), const RTF_MSS ideal-int pkg syscall (linux-arm), const RTF_MTU ideal-int pkg syscall (linux-arm), const RTF_MULTICAST ideal-int pkg syscall (linux-arm), const RTF_NAT ideal-int pkg syscall (linux-arm), const RTF_NOFORWARD ideal-int pkg syscall (linux-arm), const RTF_NONEXTHOP ideal-int pkg syscall (linux-arm), const RTF_NOPMTUDISC ideal-int pkg syscall (linux-arm), const RTF_POLICY ideal-int pkg syscall (linux-arm), const RTF_REINSTATE ideal-int pkg syscall (linux-arm), const RTF_REJECT ideal-int pkg syscall (linux-arm), const RTF_STATIC ideal-int pkg syscall (linux-arm), const RTF_THROW ideal-int pkg syscall (linux-arm), const RTF_UP ideal-int pkg syscall (linux-arm), const RTF_WINDOW ideal-int pkg syscall (linux-arm), const RTF_XRESOLVE ideal-int pkg syscall (linux-arm), const RTM_BASE ideal-int pkg syscall (linux-arm), const RTM_DELACTION ideal-int pkg syscall (linux-arm), const RTM_DELADDR ideal-int pkg syscall (linux-arm), const RTM_DELADDRLABEL ideal-int pkg syscall (linux-arm), const RTM_DELLINK ideal-int pkg syscall (linux-arm), const RTM_DELNEIGH ideal-int pkg syscall (linux-arm), const RTM_DELQDISC ideal-int pkg syscall (linux-arm), const RTM_DELROUTE ideal-int pkg syscall (linux-arm), const RTM_DELRULE ideal-int pkg syscall (linux-arm), const RTM_DELTCLASS ideal-int pkg syscall (linux-arm), const RTM_DELTFILTER ideal-int pkg syscall (linux-arm), const RTM_F_CLONED ideal-int pkg syscall (linux-arm), const RTM_F_EQUALIZE ideal-int pkg syscall (linux-arm), const RTM_F_NOTIFY ideal-int pkg syscall (linux-arm), const RTM_F_PREFIX ideal-int pkg syscall (linux-arm), const RTM_GETACTION ideal-int pkg syscall (linux-arm), const RTM_GETADDR ideal-int pkg syscall (linux-arm), const RTM_GETADDRLABEL ideal-int pkg syscall (linux-arm), const RTM_GETANYCAST ideal-int pkg syscall (linux-arm), const RTM_GETDCB ideal-int pkg syscall (linux-arm), const RTM_GETLINK ideal-int pkg syscall (linux-arm), const RTM_GETMULTICAST ideal-int pkg syscall (linux-arm), const RTM_GETNEIGH ideal-int pkg syscall (linux-arm), const RTM_GETNEIGHTBL ideal-int pkg syscall (linux-arm), const RTM_GETQDISC ideal-int pkg syscall (linux-arm), const RTM_GETROUTE ideal-int pkg syscall (linux-arm), const RTM_GETRULE ideal-int pkg syscall (linux-arm), const RTM_GETTCLASS ideal-int pkg syscall (linux-arm), const RTM_GETTFILTER ideal-int pkg syscall (linux-arm), const RTM_MAX ideal-int pkg syscall (linux-arm), const RTM_NEWACTION ideal-int pkg syscall (linux-arm), const RTM_NEWADDR ideal-int pkg syscall (linux-arm), const RTM_NEWADDRLABEL ideal-int pkg syscall (linux-arm), const RTM_NEWLINK ideal-int pkg syscall (linux-arm), const RTM_NEWNDUSEROPT ideal-int pkg syscall (linux-arm), const RTM_NEWNEIGH ideal-int pkg syscall (linux-arm), const RTM_NEWNEIGHTBL ideal-int pkg syscall (linux-arm), const RTM_NEWPREFIX ideal-int pkg syscall (linux-arm), const RTM_NEWQDISC ideal-int pkg syscall (linux-arm), const RTM_NEWROUTE ideal-int pkg syscall (linux-arm), const RTM_NEWRULE ideal-int pkg syscall (linux-arm), const RTM_NEWTCLASS ideal-int pkg syscall (linux-arm), const RTM_NEWTFILTER ideal-int pkg syscall (linux-arm), const RTM_NR_FAMILIES ideal-int pkg syscall (linux-arm), const RTM_NR_MSGTYPES ideal-int pkg syscall (linux-arm), const RTM_SETDCB ideal-int pkg syscall (linux-arm), const RTM_SETLINK ideal-int pkg syscall (linux-arm), const RTM_SETNEIGHTBL ideal-int pkg syscall (linux-arm), const RTNH_ALIGNTO ideal-int pkg syscall (linux-arm), const RTNH_F_DEAD ideal-int pkg syscall (linux-arm), const RTNH_F_ONLINK ideal-int pkg syscall (linux-arm), const RTNH_F_PERVASIVE ideal-int pkg syscall (linux-arm), const RTN_ANYCAST ideal-int pkg syscall (linux-arm), const RTN_BLACKHOLE ideal-int pkg syscall (linux-arm), const RTN_BROADCAST ideal-int pkg syscall (linux-arm), const RTN_LOCAL ideal-int pkg syscall (linux-arm), const RTN_MAX ideal-int pkg syscall (linux-arm), const RTN_MULTICAST ideal-int pkg syscall (linux-arm), const RTN_NAT ideal-int pkg syscall (linux-arm), const RTN_PROHIBIT ideal-int pkg syscall (linux-arm), const RTN_THROW ideal-int pkg syscall (linux-arm), const RTN_UNICAST ideal-int pkg syscall (linux-arm), const RTN_UNREACHABLE ideal-int pkg syscall (linux-arm), const RTN_UNSPEC ideal-int pkg syscall (linux-arm), const RTN_XRESOLVE ideal-int pkg syscall (linux-arm), const RTPROT_BIRD ideal-int pkg syscall (linux-arm), const RTPROT_BOOT ideal-int pkg syscall (linux-arm), const RTPROT_DHCP ideal-int pkg syscall (linux-arm), const RTPROT_DNROUTED ideal-int pkg syscall (linux-arm), const RTPROT_GATED ideal-int pkg syscall (linux-arm), const RTPROT_KERNEL ideal-int pkg syscall (linux-arm), const RTPROT_MRT ideal-int pkg syscall (linux-arm), const RTPROT_NTK ideal-int pkg syscall (linux-arm), const RTPROT_RA ideal-int pkg syscall (linux-arm), const RTPROT_REDIRECT ideal-int pkg syscall (linux-arm), const RTPROT_STATIC ideal-int pkg syscall (linux-arm), const RTPROT_UNSPEC ideal-int pkg syscall (linux-arm), const RTPROT_XORP ideal-int pkg syscall (linux-arm), const RTPROT_ZEBRA ideal-int pkg syscall (linux-arm), const RT_CLASS_DEFAULT ideal-int pkg syscall (linux-arm), const RT_CLASS_LOCAL ideal-int pkg syscall (linux-arm), const RT_CLASS_MAIN ideal-int pkg syscall (linux-arm), const RT_CLASS_MAX ideal-int pkg syscall (linux-arm), const RT_CLASS_UNSPEC ideal-int pkg syscall (linux-arm), const RT_SCOPE_HOST ideal-int pkg syscall (linux-arm), const RT_SCOPE_LINK ideal-int pkg syscall (linux-arm), const RT_SCOPE_NOWHERE ideal-int pkg syscall (linux-arm), const RT_SCOPE_SITE ideal-int pkg syscall (linux-arm), const RT_SCOPE_UNIVERSE ideal-int pkg syscall (linux-arm), const RT_TABLE_COMPAT ideal-int pkg syscall (linux-arm), const RT_TABLE_DEFAULT ideal-int pkg syscall (linux-arm), const RT_TABLE_LOCAL ideal-int pkg syscall (linux-arm), const RT_TABLE_MAIN ideal-int pkg syscall (linux-arm), const RT_TABLE_MAX ideal-int pkg syscall (linux-arm), const RT_TABLE_UNSPEC ideal-int pkg syscall (linux-arm), const RUSAGE_CHILDREN ideal-int pkg syscall (linux-arm), const RUSAGE_SELF ideal-int pkg syscall (linux-arm), const RUSAGE_THREAD ideal-int pkg syscall (linux-arm), const SCM_CREDENTIALS ideal-int pkg syscall (linux-arm), const SCM_RIGHTS ideal-int pkg syscall (linux-arm), const SCM_TIMESTAMP ideal-int pkg syscall (linux-arm), const SCM_TIMESTAMPING ideal-int pkg syscall (linux-arm), const SCM_TIMESTAMPNS ideal-int pkg syscall (linux-arm), const SIGCHLD Signal pkg syscall (linux-arm), const SIGCLD Signal pkg syscall (linux-arm), const SIGCONT Signal pkg syscall (linux-arm), const SIGIO Signal pkg syscall (linux-arm), const SIGIOT Signal pkg syscall (linux-arm), const SIGPOLL Signal pkg syscall (linux-arm), const SIGPROF Signal pkg syscall (linux-arm), const SIGPWR Signal pkg syscall (linux-arm), const SIGSTKFLT Signal pkg syscall (linux-arm), const SIGSTOP Signal pkg syscall (linux-arm), const SIGSYS Signal pkg syscall (linux-arm), const SIGTSTP Signal pkg syscall (linux-arm), const SIGTTIN Signal pkg syscall (linux-arm), const SIGTTOU Signal pkg syscall (linux-arm), const SIGUNUSED Signal pkg syscall (linux-arm), const SIGURG Signal pkg syscall (linux-arm), const SIGUSR1 Signal pkg syscall (linux-arm), const SIGUSR2 Signal pkg syscall (linux-arm), const SIGVTALRM Signal pkg syscall (linux-arm), const SIGWINCH Signal pkg syscall (linux-arm), const SIGXCPU Signal pkg syscall (linux-arm), const SIGXFSZ Signal pkg syscall (linux-arm), const SIOCADDDLCI ideal-int pkg syscall (linux-arm), const SIOCADDMULTI ideal-int pkg syscall (linux-arm), const SIOCADDRT ideal-int pkg syscall (linux-arm), const SIOCATMARK ideal-int pkg syscall (linux-arm), const SIOCDARP ideal-int pkg syscall (linux-arm), const SIOCDELDLCI ideal-int pkg syscall (linux-arm), const SIOCDELMULTI ideal-int pkg syscall (linux-arm), const SIOCDELRT ideal-int pkg syscall (linux-arm), const SIOCDEVPRIVATE ideal-int pkg syscall (linux-arm), const SIOCDIFADDR ideal-int pkg syscall (linux-arm), const SIOCDRARP ideal-int pkg syscall (linux-arm), const SIOCGARP ideal-int pkg syscall (linux-arm), const SIOCGIFADDR ideal-int pkg syscall (linux-arm), const SIOCGIFBR ideal-int pkg syscall (linux-arm), const SIOCGIFBRDADDR ideal-int pkg syscall (linux-arm), const SIOCGIFCONF ideal-int pkg syscall (linux-arm), const SIOCGIFCOUNT ideal-int pkg syscall (linux-arm), const SIOCGIFDSTADDR ideal-int pkg syscall (linux-arm), const SIOCGIFENCAP ideal-int pkg syscall (linux-arm), const SIOCGIFFLAGS ideal-int pkg syscall (linux-arm), const SIOCGIFHWADDR ideal-int pkg syscall (linux-arm), const SIOCGIFINDEX ideal-int pkg syscall (linux-arm), const SIOCGIFMAP ideal-int pkg syscall (linux-arm), const SIOCGIFMEM ideal-int pkg syscall (linux-arm), const SIOCGIFMETRIC ideal-int pkg syscall (linux-arm), const SIOCGIFMTU ideal-int pkg syscall (linux-arm), const SIOCGIFNAME ideal-int pkg syscall (linux-arm), const SIOCGIFNETMASK ideal-int pkg syscall (linux-arm), const SIOCGIFPFLAGS ideal-int pkg syscall (linux-arm), const SIOCGIFSLAVE ideal-int pkg syscall (linux-arm), const SIOCGIFTXQLEN ideal-int pkg syscall (linux-arm), const SIOCGPGRP ideal-int pkg syscall (linux-arm), const SIOCGRARP ideal-int pkg syscall (linux-arm), const SIOCGSTAMP ideal-int pkg syscall (linux-arm), const SIOCGSTAMPNS ideal-int pkg syscall (linux-arm), const SIOCPROTOPRIVATE ideal-int pkg syscall (linux-arm), const SIOCRTMSG ideal-int pkg syscall (linux-arm), const SIOCSARP ideal-int pkg syscall (linux-arm), const SIOCSIFADDR ideal-int pkg syscall (linux-arm), const SIOCSIFBR ideal-int pkg syscall (linux-arm), const SIOCSIFBRDADDR ideal-int pkg syscall (linux-arm), const SIOCSIFDSTADDR ideal-int pkg syscall (linux-arm), const SIOCSIFENCAP ideal-int pkg syscall (linux-arm), const SIOCSIFFLAGS ideal-int pkg syscall (linux-arm), const SIOCSIFHWADDR ideal-int pkg syscall (linux-arm), const SIOCSIFHWBROADCAST ideal-int pkg syscall (linux-arm), const SIOCSIFLINK ideal-int pkg syscall (linux-arm), const SIOCSIFMAP ideal-int pkg syscall (linux-arm), const SIOCSIFMEM ideal-int pkg syscall (linux-arm), const SIOCSIFMETRIC ideal-int pkg syscall (linux-arm), const SIOCSIFMTU ideal-int pkg syscall (linux-arm), const SIOCSIFNAME ideal-int pkg syscall (linux-arm), const SIOCSIFNETMASK ideal-int pkg syscall (linux-arm), const SIOCSIFPFLAGS ideal-int pkg syscall (linux-arm), const SIOCSIFSLAVE ideal-int pkg syscall (linux-arm), const SIOCSIFTXQLEN ideal-int pkg syscall (linux-arm), const SIOCSPGRP ideal-int pkg syscall (linux-arm), const SIOCSRARP ideal-int pkg syscall (linux-arm), const SOCK_CLOEXEC ideal-int pkg syscall (linux-arm), const SOCK_DCCP ideal-int pkg syscall (linux-arm), const SOCK_NONBLOCK ideal-int pkg syscall (linux-arm), const SOCK_PACKET ideal-int pkg syscall (linux-arm), const SOCK_RDM ideal-int pkg syscall (linux-arm), const SOL_AAL ideal-int pkg syscall (linux-arm), const SOL_ATM ideal-int pkg syscall (linux-arm), const SOL_DECNET ideal-int pkg syscall (linux-arm), const SOL_ICMPV6 ideal-int pkg syscall (linux-arm), const SOL_IP ideal-int pkg syscall (linux-arm), const SOL_IPV6 ideal-int pkg syscall (linux-arm), const SOL_IRDA ideal-int pkg syscall (linux-arm), const SOL_PACKET ideal-int pkg syscall (linux-arm), const SOL_RAW ideal-int pkg syscall (linux-arm), const SOL_TCP ideal-int pkg syscall (linux-arm), const SOL_X25 ideal-int pkg syscall (linux-arm), const SO_ACCEPTCONN ideal-int pkg syscall (linux-arm), const SO_ATTACH_FILTER ideal-int pkg syscall (linux-arm), const SO_BINDTODEVICE ideal-int pkg syscall (linux-arm), const SO_BSDCOMPAT ideal-int pkg syscall (linux-arm), const SO_DEBUG ideal-int pkg syscall (linux-arm), const SO_DETACH_FILTER ideal-int pkg syscall (linux-arm), const SO_DOMAIN ideal-int pkg syscall (linux-arm), const SO_ERROR ideal-int pkg syscall (linux-arm), const SO_MARK ideal-int pkg syscall (linux-arm), const SO_NO_CHECK ideal-int pkg syscall (linux-arm), const SO_OOBINLINE ideal-int pkg syscall (linux-arm), const SO_PASSCRED ideal-int pkg syscall (linux-arm), const SO_PASSSEC ideal-int pkg syscall (linux-arm), const SO_PEERCRED ideal-int pkg syscall (linux-arm), const SO_PEERNAME ideal-int pkg syscall (linux-arm), const SO_PEERSEC ideal-int pkg syscall (linux-arm), const SO_PRIORITY ideal-int pkg syscall (linux-arm), const SO_PROTOCOL ideal-int pkg syscall (linux-arm), const SO_RCVBUFFORCE ideal-int pkg syscall (linux-arm), const SO_RCVLOWAT ideal-int pkg syscall (linux-arm), const SO_RCVTIMEO ideal-int pkg syscall (linux-arm), const SO_RXQ_OVFL ideal-int pkg syscall (linux-arm), const SO_SECURITY_AUTHENTICATION ideal-int pkg syscall (linux-arm), const SO_SECURITY_ENCRYPTION_NETWORK ideal-int pkg syscall (linux-arm), const SO_SECURITY_ENCRYPTION_TRANSPORT ideal-int pkg syscall (linux-arm), const SO_SNDBUFFORCE ideal-int pkg syscall (linux-arm), const SO_SNDLOWAT ideal-int pkg syscall (linux-arm), const SO_SNDTIMEO ideal-int pkg syscall (linux-arm), const SO_TIMESTAMP ideal-int pkg syscall (linux-arm), const SO_TIMESTAMPING ideal-int pkg syscall (linux-arm), const SO_TIMESTAMPNS ideal-int pkg syscall (linux-arm), const SO_TYPE ideal-int pkg syscall (linux-arm), const SYS_ACCEPT ideal-int pkg syscall (linux-arm), const SYS_ACCEPT4 ideal-int pkg syscall (linux-arm), const SYS_ACCESS ideal-int pkg syscall (linux-arm), const SYS_ACCT ideal-int pkg syscall (linux-arm), const SYS_ADD_KEY ideal-int pkg syscall (linux-arm), const SYS_ADJTIMEX ideal-int pkg syscall (linux-arm), const SYS_ALARM ideal-int pkg syscall (linux-arm), const SYS_ARM_FADVISE64_64 ideal-int pkg syscall (linux-arm), const SYS_ARM_SYNC_FILE_RANGE ideal-int pkg syscall (linux-arm), const SYS_BDFLUSH ideal-int pkg syscall (linux-arm), const SYS_BIND ideal-int pkg syscall (linux-arm), const SYS_BRK ideal-int pkg syscall (linux-arm), const SYS_CAPGET ideal-int pkg syscall (linux-arm), const SYS_CAPSET ideal-int pkg syscall (linux-arm), const SYS_CHDIR ideal-int pkg syscall (linux-arm), const SYS_CHMOD ideal-int pkg syscall (linux-arm), const SYS_CHOWN ideal-int pkg syscall (linux-arm), const SYS_CHOWN32 ideal-int pkg syscall (linux-arm), const SYS_CHROOT ideal-int pkg syscall (linux-arm), const SYS_CLOCK_ADJTIME ideal-int pkg syscall (linux-arm), const SYS_CLOCK_GETRES ideal-int pkg syscall (linux-arm), const SYS_CLOCK_GETTIME ideal-int pkg syscall (linux-arm), const SYS_CLOCK_NANOSLEEP ideal-int pkg syscall (linux-arm), const SYS_CLOCK_SETTIME ideal-int pkg syscall (linux-arm), const SYS_CLONE ideal-int pkg syscall (linux-arm), const SYS_CLOSE ideal-int pkg syscall (linux-arm), const SYS_CONNECT ideal-int pkg syscall (linux-arm), const SYS_CREAT ideal-int pkg syscall (linux-arm), const SYS_DELETE_MODULE ideal-int pkg syscall (linux-arm), const SYS_DUP ideal-int pkg syscall (linux-arm), const SYS_DUP2 ideal-int pkg syscall (linux-arm), const SYS_DUP3 ideal-int pkg syscall (linux-arm), const SYS_EPOLL_CREATE ideal-int pkg syscall (linux-arm), const SYS_EPOLL_CREATE1 ideal-int pkg syscall (linux-arm), const SYS_EPOLL_CTL ideal-int pkg syscall (linux-arm), const SYS_EPOLL_PWAIT ideal-int pkg syscall (linux-arm), const SYS_EPOLL_WAIT ideal-int pkg syscall (linux-arm), const SYS_EVENTFD ideal-int pkg syscall (linux-arm), const SYS_EVENTFD2 ideal-int pkg syscall (linux-arm), const SYS_EXECVE ideal-int pkg syscall (linux-arm), const SYS_EXIT ideal-int pkg syscall (linux-arm), const SYS_EXIT_GROUP ideal-int pkg syscall (linux-arm), const SYS_FACCESSAT ideal-int pkg syscall (linux-arm), const SYS_FALLOCATE ideal-int pkg syscall (linux-arm), const SYS_FANOTIFY_INIT ideal-int pkg syscall (linux-arm), const SYS_FANOTIFY_MARK ideal-int pkg syscall (linux-arm), const SYS_FCHDIR ideal-int pkg syscall (linux-arm), const SYS_FCHMOD ideal-int pkg syscall (linux-arm), const SYS_FCHMODAT ideal-int pkg syscall (linux-arm), const SYS_FCHOWN ideal-int pkg syscall (linux-arm), const SYS_FCHOWN32 ideal-int pkg syscall (linux-arm), const SYS_FCHOWNAT ideal-int pkg syscall (linux-arm), const SYS_FCNTL ideal-int pkg syscall (linux-arm), const SYS_FCNTL64 ideal-int pkg syscall (linux-arm), const SYS_FDATASYNC ideal-int pkg syscall (linux-arm), const SYS_FGETXATTR ideal-int pkg syscall (linux-arm), const SYS_FLISTXATTR ideal-int pkg syscall (linux-arm), const SYS_FLOCK ideal-int pkg syscall (linux-arm), const SYS_FORK ideal-int pkg syscall (linux-arm), const SYS_FREMOVEXATTR ideal-int pkg syscall (linux-arm), const SYS_FSETXATTR ideal-int pkg syscall (linux-arm), const SYS_FSTAT ideal-int pkg syscall (linux-arm), const SYS_FSTAT64 ideal-int pkg syscall (linux-arm), const SYS_FSTATAT64 ideal-int pkg syscall (linux-arm), const SYS_FSTATFS ideal-int pkg syscall (linux-arm), const SYS_FSTATFS64 ideal-int pkg syscall (linux-arm), const SYS_FSYNC ideal-int pkg syscall (linux-arm), const SYS_FTRUNCATE ideal-int pkg syscall (linux-arm), const SYS_FTRUNCATE64 ideal-int pkg syscall (linux-arm), const SYS_FUTEX ideal-int pkg syscall (linux-arm), const SYS_FUTIMESAT ideal-int pkg syscall (linux-arm), const SYS_GETCPU ideal-int pkg syscall (linux-arm), const SYS_GETCWD ideal-int pkg syscall (linux-arm), const SYS_GETDENTS ideal-int pkg syscall (linux-arm), const SYS_GETDENTS64 ideal-int pkg syscall (linux-arm), const SYS_GETEGID ideal-int pkg syscall (linux-arm), const SYS_GETEGID32 ideal-int pkg syscall (linux-arm), const SYS_GETEUID ideal-int pkg syscall (linux-arm), const SYS_GETEUID32 ideal-int pkg syscall (linux-arm), const SYS_GETGID ideal-int pkg syscall (linux-arm), const SYS_GETGID32 ideal-int pkg syscall (linux-arm), const SYS_GETGROUPS ideal-int pkg syscall (linux-arm), const SYS_GETGROUPS32 ideal-int pkg syscall (linux-arm), const SYS_GETITIMER ideal-int pkg syscall (linux-arm), const SYS_GETPEERNAME ideal-int pkg syscall (linux-arm), const SYS_GETPGID ideal-int pkg syscall (linux-arm), const SYS_GETPGRP ideal-int pkg syscall (linux-arm), const SYS_GETPID ideal-int pkg syscall (linux-arm), const SYS_GETPPID ideal-int pkg syscall (linux-arm), const SYS_GETPRIORITY ideal-int pkg syscall (linux-arm), const SYS_GETRESGID ideal-int pkg syscall (linux-arm), const SYS_GETRESGID32 ideal-int pkg syscall (linux-arm), const SYS_GETRESUID ideal-int pkg syscall (linux-arm), const SYS_GETRESUID32 ideal-int pkg syscall (linux-arm), const SYS_GETRLIMIT ideal-int pkg syscall (linux-arm), const SYS_GETRUSAGE ideal-int pkg syscall (linux-arm), const SYS_GETSID ideal-int pkg syscall (linux-arm), const SYS_GETSOCKNAME ideal-int pkg syscall (linux-arm), const SYS_GETSOCKOPT ideal-int pkg syscall (linux-arm), const SYS_GETTID ideal-int pkg syscall (linux-arm), const SYS_GETTIMEOFDAY ideal-int pkg syscall (linux-arm), const SYS_GETUID ideal-int pkg syscall (linux-arm), const SYS_GETUID32 ideal-int pkg syscall (linux-arm), const SYS_GETXATTR ideal-int pkg syscall (linux-arm), const SYS_GET_MEMPOLICY ideal-int pkg syscall (linux-arm), const SYS_GET_ROBUST_LIST ideal-int pkg syscall (linux-arm), const SYS_INIT_MODULE ideal-int pkg syscall (linux-arm), const SYS_INOTIFY_ADD_WATCH ideal-int pkg syscall (linux-arm), const SYS_INOTIFY_INIT ideal-int pkg syscall (linux-arm), const SYS_INOTIFY_INIT1 ideal-int pkg syscall (linux-arm), const SYS_INOTIFY_RM_WATCH ideal-int pkg syscall (linux-arm), const SYS_IOCTL ideal-int pkg syscall (linux-arm), const SYS_IOPRIO_GET ideal-int pkg syscall (linux-arm), const SYS_IOPRIO_SET ideal-int pkg syscall (linux-arm), const SYS_IO_CANCEL ideal-int pkg syscall (linux-arm), const SYS_IO_DESTROY ideal-int pkg syscall (linux-arm), const SYS_IO_GETEVENTS ideal-int pkg syscall (linux-arm), const SYS_IO_SETUP ideal-int pkg syscall (linux-arm), const SYS_IO_SUBMIT ideal-int pkg syscall (linux-arm), const SYS_IPC ideal-int pkg syscall (linux-arm), const SYS_KEXEC_LOAD ideal-int pkg syscall (linux-arm), const SYS_KEYCTL ideal-int pkg syscall (linux-arm), const SYS_KILL ideal-int pkg syscall (linux-arm), const SYS_LCHOWN ideal-int pkg syscall (linux-arm), const SYS_LCHOWN32 ideal-int pkg syscall (linux-arm), const SYS_LGETXATTR ideal-int pkg syscall (linux-arm), const SYS_LINK ideal-int pkg syscall (linux-arm), const SYS_LINKAT ideal-int pkg syscall (linux-arm), const SYS_LISTEN ideal-int pkg syscall (linux-arm), const SYS_LISTXATTR ideal-int pkg syscall (linux-arm), const SYS_LLISTXATTR ideal-int pkg syscall (linux-arm), const SYS_LOOKUP_DCOOKIE ideal-int pkg syscall (linux-arm), const SYS_LREMOVEXATTR ideal-int pkg syscall (linux-arm), const SYS_LSEEK ideal-int pkg syscall (linux-arm), const SYS_LSETXATTR ideal-int pkg syscall (linux-arm), const SYS_LSTAT ideal-int pkg syscall (linux-arm), const SYS_LSTAT64 ideal-int pkg syscall (linux-arm), const SYS_MADVISE ideal-int pkg syscall (linux-arm), const SYS_MBIND ideal-int pkg syscall (linux-arm), const SYS_MINCORE ideal-int pkg syscall (linux-arm), const SYS_MKDIR ideal-int pkg syscall (linux-arm), const SYS_MKDIRAT ideal-int pkg syscall (linux-arm), const SYS_MKNOD ideal-int pkg syscall (linux-arm), const SYS_MKNODAT ideal-int pkg syscall (linux-arm), const SYS_MLOCK ideal-int pkg syscall (linux-arm), const SYS_MLOCKALL ideal-int pkg syscall (linux-arm), const SYS_MMAP ideal-int pkg syscall (linux-arm), const SYS_MMAP2 ideal-int pkg syscall (linux-arm), const SYS_MOUNT ideal-int pkg syscall (linux-arm), const SYS_MOVE_PAGES ideal-int pkg syscall (linux-arm), const SYS_MPROTECT ideal-int pkg syscall (linux-arm), const SYS_MQ_GETSETATTR ideal-int pkg syscall (linux-arm), const SYS_MQ_NOTIFY ideal-int pkg syscall (linux-arm), const SYS_MQ_OPEN ideal-int pkg syscall (linux-arm), const SYS_MQ_TIMEDRECEIVE ideal-int pkg syscall (linux-arm), const SYS_MQ_TIMEDSEND ideal-int pkg syscall (linux-arm), const SYS_MQ_UNLINK ideal-int pkg syscall (linux-arm), const SYS_MREMAP ideal-int pkg syscall (linux-arm), const SYS_MSGCTL ideal-int pkg syscall (linux-arm), const SYS_MSGGET ideal-int pkg syscall (linux-arm), const SYS_MSGRCV ideal-int pkg syscall (linux-arm), const SYS_MSGSND ideal-int pkg syscall (linux-arm), const SYS_MSYNC ideal-int pkg syscall (linux-arm), const SYS_MUNLOCK ideal-int pkg syscall (linux-arm), const SYS_MUNLOCKALL ideal-int pkg syscall (linux-arm), const SYS_MUNMAP ideal-int pkg syscall (linux-arm), const SYS_NAME_TO_HANDLE_AT ideal-int pkg syscall (linux-arm), const SYS_NANOSLEEP ideal-int pkg syscall (linux-arm), const SYS_NFSSERVCTL ideal-int pkg syscall (linux-arm), const SYS_NICE ideal-int pkg syscall (linux-arm), const SYS_OABI_SYSCALL_BASE ideal-int pkg syscall (linux-arm), const SYS_OPEN ideal-int pkg syscall (linux-arm), const SYS_OPENAT ideal-int pkg syscall (linux-arm), const SYS_OPEN_BY_HANDLE_AT ideal-int pkg syscall (linux-arm), const SYS_PAUSE ideal-int pkg syscall (linux-arm), const SYS_PCICONFIG_IOBASE ideal-int pkg syscall (linux-arm), const SYS_PCICONFIG_READ ideal-int pkg syscall (linux-arm), const SYS_PCICONFIG_WRITE ideal-int pkg syscall (linux-arm), const SYS_PERF_EVENT_OPEN ideal-int pkg syscall (linux-arm), const SYS_PERSONALITY ideal-int pkg syscall (linux-arm), const SYS_PIPE ideal-int pkg syscall (linux-arm), const SYS_PIPE2 ideal-int pkg syscall (linux-arm), const SYS_PIVOT_ROOT ideal-int pkg syscall (linux-arm), const SYS_POLL ideal-int pkg syscall (linux-arm), const SYS_PPOLL ideal-int pkg syscall (linux-arm), const SYS_PRCTL ideal-int pkg syscall (linux-arm), const SYS_PREAD64 ideal-int pkg syscall (linux-arm), const SYS_PREADV ideal-int pkg syscall (linux-arm), const SYS_PRLIMIT64 ideal-int pkg syscall (linux-arm), const SYS_PROCESS_VM_READV ideal-int pkg syscall (linux-arm), const SYS_PROCESS_VM_WRITEV ideal-int pkg syscall (linux-arm), const SYS_PSELECT6 ideal-int pkg syscall (linux-arm), const SYS_PTRACE ideal-int pkg syscall (linux-arm), const SYS_PWRITE64 ideal-int pkg syscall (linux-arm), const SYS_PWRITEV ideal-int pkg syscall (linux-arm), const SYS_QUOTACTL ideal-int pkg syscall (linux-arm), const SYS_READ ideal-int pkg syscall (linux-arm), const SYS_READAHEAD ideal-int pkg syscall (linux-arm), const SYS_READDIR ideal-int pkg syscall (linux-arm), const SYS_READLINK ideal-int pkg syscall (linux-arm), const SYS_READLINKAT ideal-int pkg syscall (linux-arm), const SYS_READV ideal-int pkg syscall (linux-arm), const SYS_REBOOT ideal-int pkg syscall (linux-arm), const SYS_RECV ideal-int pkg syscall (linux-arm), const SYS_RECVFROM ideal-int pkg syscall (linux-arm), const SYS_RECVMMSG ideal-int pkg syscall (linux-arm), const SYS_RECVMSG ideal-int pkg syscall (linux-arm), const SYS_REMAP_FILE_PAGES ideal-int pkg syscall (linux-arm), const SYS_REMOVEXATTR ideal-int pkg syscall (linux-arm), const SYS_RENAME ideal-int pkg syscall (linux-arm), const SYS_RENAMEAT ideal-int pkg syscall (linux-arm), const SYS_REQUEST_KEY ideal-int pkg syscall (linux-arm), const SYS_RESTART_SYSCALL ideal-int pkg syscall (linux-arm), const SYS_RMDIR ideal-int pkg syscall (linux-arm), const SYS_RT_SIGACTION ideal-int pkg syscall (linux-arm), const SYS_RT_SIGPENDING ideal-int pkg syscall (linux-arm), const SYS_RT_SIGPROCMASK ideal-int pkg syscall (linux-arm), const SYS_RT_SIGQUEUEINFO ideal-int pkg syscall (linux-arm), const SYS_RT_SIGRETURN ideal-int pkg syscall (linux-arm), const SYS_RT_SIGSUSPEND ideal-int pkg syscall (linux-arm), const SYS_RT_SIGTIMEDWAIT ideal-int pkg syscall (linux-arm), const SYS_RT_TGSIGQUEUEINFO ideal-int pkg syscall (linux-arm), const SYS_SCHED_GETAFFINITY ideal-int pkg syscall (linux-arm), const SYS_SCHED_GETPARAM ideal-int pkg syscall (linux-arm), const SYS_SCHED_GETSCHEDULER ideal-int pkg syscall (linux-arm), const SYS_SCHED_GET_PRIORITY_MAX ideal-int pkg syscall (linux-arm), const SYS_SCHED_GET_PRIORITY_MIN ideal-int pkg syscall (linux-arm), const SYS_SCHED_RR_GET_INTERVAL ideal-int pkg syscall (linux-arm), const SYS_SCHED_SETAFFINITY ideal-int pkg syscall (linux-arm), const SYS_SCHED_SETPARAM ideal-int pkg syscall (linux-arm), const SYS_SCHED_SETSCHEDULER ideal-int pkg syscall (linux-arm), const SYS_SCHED_YIELD ideal-int pkg syscall (linux-arm), const SYS_SELECT ideal-int pkg syscall (linux-arm), const SYS_SEMCTL ideal-int pkg syscall (linux-arm), const SYS_SEMGET ideal-int pkg syscall (linux-arm), const SYS_SEMOP ideal-int pkg syscall (linux-arm), const SYS_SEMTIMEDOP ideal-int pkg syscall (linux-arm), const SYS_SEND ideal-int pkg syscall (linux-arm), const SYS_SENDFILE ideal-int pkg syscall (linux-arm), const SYS_SENDFILE64 ideal-int pkg syscall (linux-arm), const SYS_SENDMMSG ideal-int pkg syscall (linux-arm), const SYS_SENDMSG ideal-int pkg syscall (linux-arm), const SYS_SENDTO ideal-int pkg syscall (linux-arm), const SYS_SETDOMAINNAME ideal-int pkg syscall (linux-arm), const SYS_SETFSGID ideal-int pkg syscall (linux-arm), const SYS_SETFSGID32 ideal-int pkg syscall (linux-arm), const SYS_SETFSUID ideal-int pkg syscall (linux-arm), const SYS_SETFSUID32 ideal-int pkg syscall (linux-arm), const SYS_SETGID ideal-int pkg syscall (linux-arm), const SYS_SETGID32 ideal-int pkg syscall (linux-arm), const SYS_SETGROUPS ideal-int pkg syscall (linux-arm), const SYS_SETGROUPS32 ideal-int pkg syscall (linux-arm), const SYS_SETHOSTNAME ideal-int pkg syscall (linux-arm), const SYS_SETITIMER ideal-int pkg syscall (linux-arm), const SYS_SETNS ideal-int pkg syscall (linux-arm), const SYS_SETPGID ideal-int pkg syscall (linux-arm), const SYS_SETPRIORITY ideal-int pkg syscall (linux-arm), const SYS_SETREGID ideal-int pkg syscall (linux-arm), const SYS_SETREGID32 ideal-int pkg syscall (linux-arm), const SYS_SETRESGID ideal-int pkg syscall (linux-arm), const SYS_SETRESGID32 ideal-int pkg syscall (linux-arm), const SYS_SETRESUID ideal-int pkg syscall (linux-arm), const SYS_SETRESUID32 ideal-int pkg syscall (linux-arm), const SYS_SETREUID ideal-int pkg syscall (linux-arm), const SYS_SETREUID32 ideal-int pkg syscall (linux-arm), const SYS_SETRLIMIT ideal-int pkg syscall (linux-arm), const SYS_SETSID ideal-int pkg syscall (linux-arm), const SYS_SETSOCKOPT ideal-int pkg syscall (linux-arm), const SYS_SETTIMEOFDAY ideal-int pkg syscall (linux-arm), const SYS_SETUID ideal-int pkg syscall (linux-arm), const SYS_SETUID32 ideal-int pkg syscall (linux-arm), const SYS_SETXATTR ideal-int pkg syscall (linux-arm), const SYS_SET_MEMPOLICY ideal-int pkg syscall (linux-arm), const SYS_SET_ROBUST_LIST ideal-int pkg syscall (linux-arm), const SYS_SET_TID_ADDRESS ideal-int pkg syscall (linux-arm), const SYS_SHMAT ideal-int pkg syscall (linux-arm), const SYS_SHMCTL ideal-int pkg syscall (linux-arm), const SYS_SHMDT ideal-int pkg syscall (linux-arm), const SYS_SHMGET ideal-int pkg syscall (linux-arm), const SYS_SHUTDOWN ideal-int pkg syscall (linux-arm), const SYS_SIGACTION ideal-int pkg syscall (linux-arm), const SYS_SIGALTSTACK ideal-int pkg syscall (linux-arm), const SYS_SIGNALFD ideal-int pkg syscall (linux-arm), const SYS_SIGNALFD4 ideal-int pkg syscall (linux-arm), const SYS_SIGPENDING ideal-int pkg syscall (linux-arm), const SYS_SIGPROCMASK ideal-int pkg syscall (linux-arm), const SYS_SIGRETURN ideal-int pkg syscall (linux-arm), const SYS_SIGSUSPEND ideal-int pkg syscall (linux-arm), const SYS_SOCKET ideal-int pkg syscall (linux-arm), const SYS_SOCKETCALL ideal-int pkg syscall (linux-arm), const SYS_SOCKETPAIR ideal-int pkg syscall (linux-arm), const SYS_SPLICE ideal-int pkg syscall (linux-arm), const SYS_STAT ideal-int pkg syscall (linux-arm), const SYS_STAT64 ideal-int pkg syscall (linux-arm), const SYS_STATFS ideal-int pkg syscall (linux-arm), const SYS_STATFS64 ideal-int pkg syscall (linux-arm), const SYS_STIME ideal-int pkg syscall (linux-arm), const SYS_SWAPOFF ideal-int pkg syscall (linux-arm), const SYS_SWAPON ideal-int pkg syscall (linux-arm), const SYS_SYMLINK ideal-int pkg syscall (linux-arm), const SYS_SYMLINKAT ideal-int pkg syscall (linux-arm), const SYS_SYNC ideal-int pkg syscall (linux-arm), const SYS_SYNCFS ideal-int pkg syscall (linux-arm), const SYS_SYSCALL ideal-int pkg syscall (linux-arm), const SYS_SYSCALL_BASE ideal-int pkg syscall (linux-arm), const SYS_SYSFS ideal-int pkg syscall (linux-arm), const SYS_SYSINFO ideal-int pkg syscall (linux-arm), const SYS_SYSLOG ideal-int pkg syscall (linux-arm), const SYS_TEE ideal-int pkg syscall (linux-arm), const SYS_TGKILL ideal-int pkg syscall (linux-arm), const SYS_TIME ideal-int pkg syscall (linux-arm), const SYS_TIMERFD_CREATE ideal-int pkg syscall (linux-arm), const SYS_TIMERFD_GETTIME ideal-int pkg syscall (linux-arm), const SYS_TIMERFD_SETTIME ideal-int pkg syscall (linux-arm), const SYS_TIMER_CREATE ideal-int pkg syscall (linux-arm), const SYS_TIMER_DELETE ideal-int pkg syscall (linux-arm), const SYS_TIMER_GETOVERRUN ideal-int pkg syscall (linux-arm), const SYS_TIMER_GETTIME ideal-int pkg syscall (linux-arm), const SYS_TIMER_SETTIME ideal-int pkg syscall (linux-arm), const SYS_TIMES ideal-int pkg syscall (linux-arm), const SYS_TKILL ideal-int pkg syscall (linux-arm), const SYS_TRUNCATE ideal-int pkg syscall (linux-arm), const SYS_TRUNCATE64 ideal-int pkg syscall (linux-arm), const SYS_UGETRLIMIT ideal-int pkg syscall (linux-arm), const SYS_UMASK ideal-int pkg syscall (linux-arm), const SYS_UMOUNT ideal-int pkg syscall (linux-arm), const SYS_UMOUNT2 ideal-int pkg syscall (linux-arm), const SYS_UNAME ideal-int pkg syscall (linux-arm), const SYS_UNLINK ideal-int pkg syscall (linux-arm), const SYS_UNLINKAT ideal-int pkg syscall (linux-arm), const SYS_UNSHARE ideal-int pkg syscall (linux-arm), const SYS_USELIB ideal-int pkg syscall (linux-arm), const SYS_USTAT ideal-int pkg syscall (linux-arm), const SYS_UTIME ideal-int pkg syscall (linux-arm), const SYS_UTIMENSAT ideal-int pkg syscall (linux-arm), const SYS_UTIMES ideal-int pkg syscall (linux-arm), const SYS_VFORK ideal-int pkg syscall (linux-arm), const SYS_VHANGUP ideal-int pkg syscall (linux-arm), const SYS_VMSPLICE ideal-int pkg syscall (linux-arm), const SYS_VSERVER ideal-int pkg syscall (linux-arm), const SYS_WAIT4 ideal-int pkg syscall (linux-arm), const SYS_WAITID ideal-int pkg syscall (linux-arm), const SYS_WRITE ideal-int pkg syscall (linux-arm), const SYS_WRITEV ideal-int pkg syscall (linux-arm), const SYS__LLSEEK ideal-int pkg syscall (linux-arm), const SYS__NEWSELECT ideal-int pkg syscall (linux-arm), const SYS__SYSCTL ideal-int pkg syscall (linux-arm), const S_BLKSIZE ideal-int pkg syscall (linux-arm), const S_IEXEC ideal-int pkg syscall (linux-arm), const S_IREAD ideal-int pkg syscall (linux-arm), const S_IRGRP ideal-int pkg syscall (linux-arm), const S_IROTH ideal-int pkg syscall (linux-arm), const S_IRWXG ideal-int pkg syscall (linux-arm), const S_IRWXO ideal-int pkg syscall (linux-arm), const S_IRWXU ideal-int pkg syscall (linux-arm), const S_IWGRP ideal-int pkg syscall (linux-arm), const S_IWOTH ideal-int pkg syscall (linux-arm), const S_IWRITE ideal-int pkg syscall (linux-arm), const S_IXGRP ideal-int pkg syscall (linux-arm), const S_IXOTH ideal-int pkg syscall (linux-arm), const SizeofCmsghdr ideal-int pkg syscall (linux-arm), const SizeofIPMreq ideal-int pkg syscall (linux-arm), const SizeofIPMreqn ideal-int pkg syscall (linux-arm), const SizeofIPv6Mreq ideal-int pkg syscall (linux-arm), const SizeofIfAddrmsg ideal-int pkg syscall (linux-arm), const SizeofIfInfomsg ideal-int pkg syscall (linux-arm), const SizeofInet4Pktinfo ideal-int pkg syscall (linux-arm), const SizeofInet6Pktinfo ideal-int pkg syscall (linux-arm), const SizeofInotifyEvent ideal-int pkg syscall (linux-arm), const SizeofLinger ideal-int pkg syscall (linux-arm), const SizeofMsghdr ideal-int pkg syscall (linux-arm), const SizeofNlAttr ideal-int pkg syscall (linux-arm), const SizeofNlMsgerr ideal-int pkg syscall (linux-arm), const SizeofNlMsghdr ideal-int pkg syscall (linux-arm), const SizeofRtAttr ideal-int pkg syscall (linux-arm), const SizeofRtGenmsg ideal-int pkg syscall (linux-arm), const SizeofRtMsg ideal-int pkg syscall (linux-arm), const SizeofRtNexthop ideal-int pkg syscall (linux-arm), const SizeofSockFilter ideal-int pkg syscall (linux-arm), const SizeofSockFprog ideal-int pkg syscall (linux-arm), const SizeofSockaddrAny ideal-int pkg syscall (linux-arm), const SizeofSockaddrInet4 ideal-int pkg syscall (linux-arm), const SizeofSockaddrInet6 ideal-int pkg syscall (linux-arm), const SizeofSockaddrLinklayer ideal-int pkg syscall (linux-arm), const SizeofSockaddrNetlink ideal-int pkg syscall (linux-arm), const SizeofSockaddrUnix ideal-int pkg syscall (linux-arm), const SizeofUcred ideal-int pkg syscall (linux-arm), const TCGETS ideal-int pkg syscall (linux-arm), const TCP_CONGESTION ideal-int pkg syscall (linux-arm), const TCP_CORK ideal-int pkg syscall (linux-arm), const TCP_DEFER_ACCEPT ideal-int pkg syscall (linux-arm), const TCP_INFO ideal-int pkg syscall (linux-arm), const TCP_KEEPCNT ideal-int pkg syscall (linux-arm), const TCP_KEEPIDLE ideal-int pkg syscall (linux-arm), const TCP_KEEPINTVL ideal-int pkg syscall (linux-arm), const TCP_LINGER2 ideal-int pkg syscall (linux-arm), const TCP_MAXSEG ideal-int pkg syscall (linux-arm), const TCP_MAXWIN ideal-int pkg syscall (linux-arm), const TCP_MAX_WINSHIFT ideal-int pkg syscall (linux-arm), const TCP_MD5SIG ideal-int pkg syscall (linux-arm), const TCP_MD5SIG_MAXKEYLEN ideal-int pkg syscall (linux-arm), const TCP_MSS ideal-int pkg syscall (linux-arm), const TCP_QUICKACK ideal-int pkg syscall (linux-arm), const TCP_SYNCNT ideal-int pkg syscall (linux-arm), const TCP_WINDOW_CLAMP ideal-int pkg syscall (linux-arm), const TCSETS ideal-int pkg syscall (linux-arm), const TIOCCBRK ideal-int pkg syscall (linux-arm), const TIOCCONS ideal-int pkg syscall (linux-arm), const TIOCEXCL ideal-int pkg syscall (linux-arm), const TIOCGDEV ideal-int pkg syscall (linux-arm), const TIOCGETD ideal-int pkg syscall (linux-arm), const TIOCGICOUNT ideal-int pkg syscall (linux-arm), const TIOCGLCKTRMIOS ideal-int pkg syscall (linux-arm), const TIOCGPGRP ideal-int pkg syscall (linux-arm), const TIOCGPTN ideal-int pkg syscall (linux-arm), const TIOCGRS485 ideal-int pkg syscall (linux-arm), const TIOCGSERIAL ideal-int pkg syscall (linux-arm), const TIOCGSID ideal-int pkg syscall (linux-arm), const TIOCGSOFTCAR ideal-int pkg syscall (linux-arm), const TIOCGWINSZ ideal-int pkg syscall (linux-arm), const TIOCINQ ideal-int pkg syscall (linux-arm), const TIOCLINUX ideal-int pkg syscall (linux-arm), const TIOCMBIC ideal-int pkg syscall (linux-arm), const TIOCMBIS ideal-int pkg syscall (linux-arm), const TIOCMGET ideal-int pkg syscall (linux-arm), const TIOCMIWAIT ideal-int pkg syscall (linux-arm), const TIOCMSET ideal-int pkg syscall (linux-arm), const TIOCM_CAR ideal-int pkg syscall (linux-arm), const TIOCM_CD ideal-int pkg syscall (linux-arm), const TIOCM_CTS ideal-int pkg syscall (linux-arm), const TIOCM_DSR ideal-int pkg syscall (linux-arm), const TIOCM_DTR ideal-int pkg syscall (linux-arm), const TIOCM_LE ideal-int pkg syscall (linux-arm), const TIOCM_RI ideal-int pkg syscall (linux-arm), const TIOCM_RNG ideal-int pkg syscall (linux-arm), const TIOCM_RTS ideal-int pkg syscall (linux-arm), const TIOCM_SR ideal-int pkg syscall (linux-arm), const TIOCM_ST ideal-int pkg syscall (linux-arm), const TIOCNOTTY ideal-int pkg syscall (linux-arm), const TIOCNXCL ideal-int pkg syscall (linux-arm), const TIOCOUTQ ideal-int pkg syscall (linux-arm), const TIOCPKT ideal-int pkg syscall (linux-arm), const TIOCPKT_DATA ideal-int pkg syscall (linux-arm), const TIOCPKT_DOSTOP ideal-int pkg syscall (linux-arm), const TIOCPKT_FLUSHREAD ideal-int pkg syscall (linux-arm), const TIOCPKT_FLUSHWRITE ideal-int pkg syscall (linux-arm), const TIOCPKT_IOCTL ideal-int pkg syscall (linux-arm), const TIOCPKT_NOSTOP ideal-int pkg syscall (linux-arm), const TIOCPKT_START ideal-int pkg syscall (linux-arm), const TIOCPKT_STOP ideal-int pkg syscall (linux-arm), const TIOCSBRK ideal-int pkg syscall (linux-arm), const TIOCSCTTY ideal-int pkg syscall (linux-arm), const TIOCSERCONFIG ideal-int pkg syscall (linux-arm), const TIOCSERGETLSR ideal-int pkg syscall (linux-arm), const TIOCSERGETMULTI ideal-int pkg syscall (linux-arm), const TIOCSERGSTRUCT ideal-int pkg syscall (linux-arm), const TIOCSERGWILD ideal-int pkg syscall (linux-arm), const TIOCSERSETMULTI ideal-int pkg syscall (linux-arm), const TIOCSERSWILD ideal-int pkg syscall (linux-arm), const TIOCSER_TEMT ideal-int pkg syscall (linux-arm), const TIOCSETD ideal-int pkg syscall (linux-arm), const TIOCSIG ideal-int pkg syscall (linux-arm), const TIOCSLCKTRMIOS ideal-int pkg syscall (linux-arm), const TIOCSPGRP ideal-int pkg syscall (linux-arm), const TIOCSPTLCK ideal-int pkg syscall (linux-arm), const TIOCSRS485 ideal-int pkg syscall (linux-arm), const TIOCSSERIAL ideal-int pkg syscall (linux-arm), const TIOCSSOFTCAR ideal-int pkg syscall (linux-arm), const TIOCSTI ideal-int pkg syscall (linux-arm), const TIOCSWINSZ ideal-int pkg syscall (linux-arm), const TIOCVHANGUP ideal-int pkg syscall (linux-arm), const TOSTOP ideal-int pkg syscall (linux-arm), const TUNATTACHFILTER ideal-int pkg syscall (linux-arm), const TUNDETACHFILTER ideal-int pkg syscall (linux-arm), const TUNGETFEATURES ideal-int pkg syscall (linux-arm), const TUNGETIFF ideal-int pkg syscall (linux-arm), const TUNGETSNDBUF ideal-int pkg syscall (linux-arm), const TUNGETVNETHDRSZ ideal-int pkg syscall (linux-arm), const TUNSETDEBUG ideal-int pkg syscall (linux-arm), const TUNSETGROUP ideal-int pkg syscall (linux-arm), const TUNSETIFF ideal-int pkg syscall (linux-arm), const TUNSETLINK ideal-int pkg syscall (linux-arm), const TUNSETNOCSUM ideal-int pkg syscall (linux-arm), const TUNSETOFFLOAD ideal-int pkg syscall (linux-arm), const TUNSETOWNER ideal-int pkg syscall (linux-arm), const TUNSETPERSIST ideal-int pkg syscall (linux-arm), const TUNSETSNDBUF ideal-int pkg syscall (linux-arm), const TUNSETTXFILTER ideal-int pkg syscall (linux-arm), const TUNSETVNETHDRSZ ideal-int pkg syscall (linux-arm), const VDISCARD ideal-int pkg syscall (linux-arm), const VEOF ideal-int pkg syscall (linux-arm), const VEOL ideal-int pkg syscall (linux-arm), const VEOL2 ideal-int pkg syscall (linux-arm), const VERASE ideal-int pkg syscall (linux-arm), const VINTR ideal-int pkg syscall (linux-arm), const VKILL ideal-int pkg syscall (linux-arm), const VLNEXT ideal-int pkg syscall (linux-arm), const VMIN ideal-int pkg syscall (linux-arm), const VQUIT ideal-int pkg syscall (linux-arm), const VREPRINT ideal-int pkg syscall (linux-arm), const VSTART ideal-int pkg syscall (linux-arm), const VSTOP ideal-int pkg syscall (linux-arm), const VSUSP ideal-int pkg syscall (linux-arm), const VSWTC ideal-int pkg syscall (linux-arm), const VTIME ideal-int pkg syscall (linux-arm), const VWERASE ideal-int pkg syscall (linux-arm), const WALL ideal-int pkg syscall (linux-arm), const WCLONE ideal-int pkg syscall (linux-arm), const WCONTINUED ideal-int pkg syscall (linux-arm), const WEXITED ideal-int pkg syscall (linux-arm), const WNOHANG ideal-int pkg syscall (linux-arm), const WNOTHREAD ideal-int pkg syscall (linux-arm), const WNOWAIT ideal-int pkg syscall (linux-arm), const WORDSIZE ideal-int pkg syscall (linux-arm), const WSTOPPED ideal-int pkg syscall (linux-arm), const WUNTRACED ideal-int pkg syscall (linux-arm), const XCASE ideal-int pkg syscall (linux-arm), func Accept(int) (int, Sockaddr, error) pkg syscall (linux-arm), func Access(string, uint32) error pkg syscall (linux-arm), func Acct(string) error pkg syscall (linux-arm), func Adjtimex(*Timex) (int, error) pkg syscall (linux-arm), func AttachLsf(int, []SockFilter) error pkg syscall (linux-arm), func Bind(int, Sockaddr) error pkg syscall (linux-arm), func BindToDevice(int, string) error pkg syscall (linux-arm), func Chroot(string) error pkg syscall (linux-arm), func Close(int) error pkg syscall (linux-arm), func CloseOnExec(int) pkg syscall (linux-arm), func CmsgLen(int) int pkg syscall (linux-arm), func CmsgSpace(int) int pkg syscall (linux-arm), func Connect(int, Sockaddr) error pkg syscall (linux-arm), func Creat(string, uint32) (int, error) pkg syscall (linux-arm), func DetachLsf(int) error pkg syscall (linux-arm), func Dup(int) (int, error) pkg syscall (linux-arm), func Dup2(int, int) error pkg syscall (linux-arm), func EpollCreate(int) (int, error) pkg syscall (linux-arm), func EpollCreate1(int) (int, error) pkg syscall (linux-arm), func EpollCtl(int, int, int, *EpollEvent) error pkg syscall (linux-arm), func EpollWait(int, []EpollEvent, int) (int, error) pkg syscall (linux-arm), func Faccessat(int, string, uint32, int) error pkg syscall (linux-arm), func Fallocate(int, uint32, int64, int64) error pkg syscall (linux-arm), func Fchdir(int) error pkg syscall (linux-arm), func Fchmod(int, uint32) error pkg syscall (linux-arm), func Fchmodat(int, string, uint32, int) error pkg syscall (linux-arm), func Fchown(int, int, int) error pkg syscall (linux-arm), func Fchownat(int, string, int, int, int) error pkg syscall (linux-arm), func Fdatasync(int) error pkg syscall (linux-arm), func Flock(int, int) error pkg syscall (linux-arm), func ForkExec(string, []string, *ProcAttr) (int, error) pkg syscall (linux-arm), func Fstat(int, *Stat_t) error pkg syscall (linux-arm), func Fstatfs(int, *Statfs_t) error pkg syscall (linux-arm), func Fsync(int) error pkg syscall (linux-arm), func Ftruncate(int, int64) error pkg syscall (linux-arm), func Futimes(int, []Timeval) error pkg syscall (linux-arm), func Futimesat(int, string, []Timeval) error pkg syscall (linux-arm), func Getcwd([]uint8) (int, error) pkg syscall (linux-arm), func Getdents(int, []uint8) (int, error) pkg syscall (linux-arm), func Getpeername(int) (Sockaddr, error) pkg syscall (linux-arm), func Getpgid(int) (int, error) pkg syscall (linux-arm), func Getpgrp() int pkg syscall (linux-arm), func Getrlimit(int, *Rlimit) error pkg syscall (linux-arm), func Getrusage(int, *Rusage) error pkg syscall (linux-arm), func Getsockname(int) (Sockaddr, error) pkg syscall (linux-arm), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) pkg syscall (linux-arm), func GetsockoptIPMreqn(int, int, int) (*IPMreqn, error) pkg syscall (linux-arm), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) pkg syscall (linux-arm), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) pkg syscall (linux-arm), func GetsockoptInt(int, int, int) (int, error) pkg syscall (linux-arm), func Gettid() int pkg syscall (linux-arm), func InotifyAddWatch(int, string, uint32) (int, error) pkg syscall (linux-arm), func InotifyInit() (int, error) pkg syscall (linux-arm), func InotifyInit1(int) (int, error) pkg syscall (linux-arm), func InotifyRmWatch(int, uint32) (int, error) pkg syscall (linux-arm), func Kill(int, Signal) error pkg syscall (linux-arm), func Klogctl(int, []uint8) (int, error) pkg syscall (linux-arm), func Listen(int, int) error pkg syscall (linux-arm), func LsfJump(int, int, int, int) *SockFilter pkg syscall (linux-arm), func LsfSocket(int, int) (int, error) pkg syscall (linux-arm), func LsfStmt(int, int) *SockFilter pkg syscall (linux-arm), func Lstat(string, *Stat_t) error pkg syscall (linux-arm), func Madvise([]uint8, int) error pkg syscall (linux-arm), func Mkdirat(int, string, uint32) error pkg syscall (linux-arm), func Mkfifo(string, uint32) error pkg syscall (linux-arm), func Mknod(string, uint32, int) error pkg syscall (linux-arm), func Mknodat(int, string, uint32, int) error pkg syscall (linux-arm), func Mlock([]uint8) error pkg syscall (linux-arm), func Mlockall(int) error pkg syscall (linux-arm), func Mmap(int, int64, int, int, int) ([]uint8, error) pkg syscall (linux-arm), func Mount(string, string, string, uintptr, string) error pkg syscall (linux-arm), func Mprotect([]uint8, int) error pkg syscall (linux-arm), func Munlock([]uint8) error pkg syscall (linux-arm), func Munlockall() error pkg syscall (linux-arm), func Munmap([]uint8) error pkg syscall (linux-arm), func Nanosleep(*Timespec, *Timespec) error pkg syscall (linux-arm), func NetlinkRIB(int, int) ([]uint8, error) pkg syscall (linux-arm), func NsecToTimespec(int64) Timespec pkg syscall (linux-arm), func Open(string, int, uint32) (int, error) pkg syscall (linux-arm), func Openat(int, string, int, uint32) (int, error) pkg syscall (linux-arm), func ParseDirent([]uint8, int, []string) (int, int, []string) pkg syscall (linux-arm), func ParseNetlinkMessage([]uint8) ([]NetlinkMessage, error) pkg syscall (linux-arm), func ParseNetlinkRouteAttr(*NetlinkMessage) ([]NetlinkRouteAttr, error) pkg syscall (linux-arm), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) pkg syscall (linux-arm), func ParseUnixCredentials(*SocketControlMessage) (*Ucred, error) pkg syscall (linux-arm), func ParseUnixRights(*SocketControlMessage) ([]int, error) pkg syscall (linux-arm), func Pause() error pkg syscall (linux-arm), func Pipe([]int) error pkg syscall (linux-arm), func PivotRoot(string, string) error pkg syscall (linux-arm), func Pread(int, []uint8, int64) (int, error) pkg syscall (linux-arm), func PtraceAttach(int) error pkg syscall (linux-arm), func PtraceCont(int, int) error pkg syscall (linux-arm), func PtraceDetach(int) error pkg syscall (linux-arm), func PtraceGetEventMsg(int) (uint, error) pkg syscall (linux-arm), func PtraceGetRegs(int, *PtraceRegs) error pkg syscall (linux-arm), func PtracePeekData(int, uintptr, []uint8) (int, error) pkg syscall (linux-arm), func PtracePeekText(int, uintptr, []uint8) (int, error) pkg syscall (linux-arm), func PtracePokeData(int, uintptr, []uint8) (int, error) pkg syscall (linux-arm), func PtracePokeText(int, uintptr, []uint8) (int, error) pkg syscall (linux-arm), func PtraceSetOptions(int, int) error pkg syscall (linux-arm), func PtraceSetRegs(int, *PtraceRegs) error pkg syscall (linux-arm), func PtraceSingleStep(int) error pkg syscall (linux-arm), func Pwrite(int, []uint8, int64) (int, error) pkg syscall (linux-arm), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-arm), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-arm), func Read(int, []uint8) (int, error) pkg syscall (linux-arm), func ReadDirent(int, []uint8) (int, error) pkg syscall (linux-arm), func Reboot(int) error pkg syscall (linux-arm), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) pkg syscall (linux-arm), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) pkg syscall (linux-arm), func Renameat(int, string, int, string) error pkg syscall (linux-arm), func Seek(int, int64, int) (int64, error) pkg syscall (linux-arm), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) (int, error) pkg syscall (linux-arm), func Sendfile(int, int, *int64, int) (int, error) pkg syscall (linux-arm), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error pkg syscall (linux-arm), func Sendto(int, []uint8, int, Sockaddr) error pkg syscall (linux-arm), func SetLsfPromisc(string, bool) error pkg syscall (linux-arm), func SetNonblock(int, bool) error pkg syscall (linux-arm), func Setdomainname([]uint8) error pkg syscall (linux-arm), func Setfsgid(int) error pkg syscall (linux-arm), func Setfsuid(int) error pkg syscall (linux-arm), func Setgid(int) error pkg syscall (linux-arm), func Setgroups([]int) error pkg syscall (linux-arm), func Sethostname([]uint8) error pkg syscall (linux-arm), func Setpgid(int, int) error pkg syscall (linux-arm), func Setregid(int, int) error pkg syscall (linux-arm), func Setresgid(int, int, int) error pkg syscall (linux-arm), func Setresuid(int, int, int) error pkg syscall (linux-arm), func Setreuid(int, int) error pkg syscall (linux-arm), func Setrlimit(int, *Rlimit) error pkg syscall (linux-arm), func Setsid() (int, error) pkg syscall (linux-arm), func SetsockoptIPMreq(int, int, int, *IPMreq) error pkg syscall (linux-arm), func SetsockoptIPMreqn(int, int, int, *IPMreqn) error pkg syscall (linux-arm), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error pkg syscall (linux-arm), func SetsockoptInet4Addr(int, int, int, [4]uint8) error pkg syscall (linux-arm), func SetsockoptInt(int, int, int, int) error pkg syscall (linux-arm), func SetsockoptLinger(int, int, int, *Linger) error pkg syscall (linux-arm), func SetsockoptString(int, int, int, string) error pkg syscall (linux-arm), func SetsockoptTimeval(int, int, int, *Timeval) error pkg syscall (linux-arm), func Settimeofday(*Timeval) error pkg syscall (linux-arm), func Setuid(int) error pkg syscall (linux-arm), func Shutdown(int, int) error pkg syscall (linux-arm), func Socket(int, int, int) (int, error) pkg syscall (linux-arm), func Socketpair(int, int, int) ([2]int, error) pkg syscall (linux-arm), func Splice(int, *int64, int, *int64, int, int) (int, error) pkg syscall (linux-arm), func Stat(string, *Stat_t) error pkg syscall (linux-arm), func Statfs(string, *Statfs_t) error pkg syscall (linux-arm), func StringSlicePtr([]string) []*uint8 pkg syscall (linux-arm), func Sync() pkg syscall (linux-arm), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-arm), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (linux-arm), func Sysinfo(*Sysinfo_t) error pkg syscall (linux-arm), func Tee(int, int, int, int) (int64, error) pkg syscall (linux-arm), func Tgkill(int, int, Signal) error pkg syscall (linux-arm), func Time(*Time_t) (Time_t, error) pkg syscall (linux-arm), func Times(*Tms) (uintptr, error) pkg syscall (linux-arm), func TimespecToNsec(Timespec) int64 pkg syscall (linux-arm), func Truncate(string, int64) error pkg syscall (linux-arm), func Umask(int) int pkg syscall (linux-arm), func Uname(*Utsname) error pkg syscall (linux-arm), func UnixCredentials(*Ucred) []uint8 pkg syscall (linux-arm), func UnixRights(...int) []uint8 pkg syscall (linux-arm), func Unlinkat(int, string) error pkg syscall (linux-arm), func Unmount(string, int) error pkg syscall (linux-arm), func Unshare(int) error pkg syscall (linux-arm), func Ustat(int, *Ustat_t) error pkg syscall (linux-arm), func Utime(string, *Utimbuf) error pkg syscall (linux-arm), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) pkg syscall (linux-arm), func Write(int, []uint8) (int, error) pkg syscall (linux-arm), method (*Cmsghdr) SetLen(int) pkg syscall (linux-arm), method (*Iovec) SetLen(int) pkg syscall (linux-arm), method (*Msghdr) SetControllen(int) pkg syscall (linux-arm), method (*PtraceRegs) PC() uint64 pkg syscall (linux-arm), method (*PtraceRegs) SetPC(uint64) pkg syscall (linux-arm), type Cmsghdr struct pkg syscall (linux-arm), type Cmsghdr struct, Len uint32 pkg syscall (linux-arm), type Cmsghdr struct, Level int32 pkg syscall (linux-arm), type Cmsghdr struct, Type int32 pkg syscall (linux-arm), type Cmsghdr struct, X__cmsg_data [0]uint8 pkg syscall (linux-arm), type Credential struct pkg syscall (linux-arm), type Credential struct, Gid uint32 pkg syscall (linux-arm), type Credential struct, Groups []uint32 pkg syscall (linux-arm), type Credential struct, Uid uint32 pkg syscall (linux-arm), type Dirent struct pkg syscall (linux-arm), type Dirent struct, Ino uint64 pkg syscall (linux-arm), type Dirent struct, Name [256]uint8 pkg syscall (linux-arm), type Dirent struct, Off int64 pkg syscall (linux-arm), type Dirent struct, Pad_cgo_0 [5]uint8 pkg syscall (linux-arm), type Dirent struct, Reclen uint16 pkg syscall (linux-arm), type Dirent struct, Type uint8 pkg syscall (linux-arm), type EpollEvent struct pkg syscall (linux-arm), type EpollEvent struct, Events uint32 pkg syscall (linux-arm), type EpollEvent struct, Fd int32 pkg syscall (linux-arm), type EpollEvent struct, Pad int32 pkg syscall (linux-arm), type EpollEvent struct, PadFd int32 pkg syscall (linux-arm), type FdSet struct pkg syscall (linux-arm), type FdSet struct, Bits [32]int32 pkg syscall (linux-arm), type Fsid struct pkg syscall (linux-arm), type Fsid struct, X__val [2]int32 pkg syscall (linux-arm), type IPMreqn struct pkg syscall (linux-arm), type IPMreqn struct, Address [4]uint8 pkg syscall (linux-arm), type IPMreqn struct, Ifindex int32 pkg syscall (linux-arm), type IPMreqn struct, Multiaddr [4]uint8 pkg syscall (linux-arm), type IfAddrmsg struct pkg syscall (linux-arm), type IfAddrmsg struct, Family uint8 pkg syscall (linux-arm), type IfAddrmsg struct, Flags uint8 pkg syscall (linux-arm), type IfAddrmsg struct, Index uint32 pkg syscall (linux-arm), type IfAddrmsg struct, Prefixlen uint8 pkg syscall (linux-arm), type IfAddrmsg struct, Scope uint8 pkg syscall (linux-arm), type IfInfomsg struct pkg syscall (linux-arm), type IfInfomsg struct, Change uint32 pkg syscall (linux-arm), type IfInfomsg struct, Family uint8 pkg syscall (linux-arm), type IfInfomsg struct, Flags uint32 pkg syscall (linux-arm), type IfInfomsg struct, Index int32 pkg syscall (linux-arm), type IfInfomsg struct, Type uint16 pkg syscall (linux-arm), type IfInfomsg struct, X__ifi_pad uint8 pkg syscall (linux-arm), type Inet4Pktinfo struct pkg syscall (linux-arm), type Inet4Pktinfo struct, Addr [4]uint8 pkg syscall (linux-arm), type Inet4Pktinfo struct, Ifindex int32 pkg syscall (linux-arm), type Inet4Pktinfo struct, Spec_dst [4]uint8 pkg syscall (linux-arm), type Inet6Pktinfo struct pkg syscall (linux-arm), type Inet6Pktinfo struct, Addr [16]uint8 pkg syscall (linux-arm), type Inet6Pktinfo struct, Ifindex uint32 pkg syscall (linux-arm), type InotifyEvent struct pkg syscall (linux-arm), type InotifyEvent struct, Cookie uint32 pkg syscall (linux-arm), type InotifyEvent struct, Len uint32 pkg syscall (linux-arm), type InotifyEvent struct, Mask uint32 pkg syscall (linux-arm), type InotifyEvent struct, Name [0]uint8 pkg syscall (linux-arm), type InotifyEvent struct, Wd int32 pkg syscall (linux-arm), type Iovec struct pkg syscall (linux-arm), type Iovec struct, Base *uint8 pkg syscall (linux-arm), type Iovec struct, Len uint32 pkg syscall (linux-arm), type Msghdr struct pkg syscall (linux-arm), type Msghdr struct, Control *uint8 pkg syscall (linux-arm), type Msghdr struct, Controllen uint32 pkg syscall (linux-arm), type Msghdr struct, Flags int32 pkg syscall (linux-arm), type Msghdr struct, Iov *Iovec pkg syscall (linux-arm), type Msghdr struct, Iovlen uint32 pkg syscall (linux-arm), type Msghdr struct, Name *uint8 pkg syscall (linux-arm), type Msghdr struct, Namelen uint32 pkg syscall (linux-arm), type NetlinkMessage struct pkg syscall (linux-arm), type NetlinkMessage struct, Data []uint8 pkg syscall (linux-arm), type NetlinkMessage struct, Header NlMsghdr pkg syscall (linux-arm), type NetlinkRouteAttr struct pkg syscall (linux-arm), type NetlinkRouteAttr struct, Attr RtAttr pkg syscall (linux-arm), type NetlinkRouteAttr struct, Value []uint8 pkg syscall (linux-arm), type NetlinkRouteRequest struct pkg syscall (linux-arm), type NetlinkRouteRequest struct, Data RtGenmsg pkg syscall (linux-arm), type NetlinkRouteRequest struct, Header NlMsghdr pkg syscall (linux-arm), type NlAttr struct pkg syscall (linux-arm), type NlAttr struct, Len uint16 pkg syscall (linux-arm), type NlAttr struct, Type uint16 pkg syscall (linux-arm), type NlMsgerr struct pkg syscall (linux-arm), type NlMsgerr struct, Error int32 pkg syscall (linux-arm), type NlMsgerr struct, Msg NlMsghdr pkg syscall (linux-arm), type NlMsghdr struct pkg syscall (linux-arm), type NlMsghdr struct, Flags uint16 pkg syscall (linux-arm), type NlMsghdr struct, Len uint32 pkg syscall (linux-arm), type NlMsghdr struct, Pid uint32 pkg syscall (linux-arm), type NlMsghdr struct, Seq uint32 pkg syscall (linux-arm), type NlMsghdr struct, Type uint16 pkg syscall (linux-arm), type PtraceRegs struct pkg syscall (linux-arm), type PtraceRegs struct, Uregs [18]uint32 pkg syscall (linux-arm), type RawSockaddr struct, Data [14]uint8 pkg syscall (linux-arm), type RawSockaddr struct, Family uint16 pkg syscall (linux-arm), type RawSockaddrAny struct, Pad [96]uint8 pkg syscall (linux-arm), type RawSockaddrInet4 struct, Family uint16 pkg syscall (linux-arm), type RawSockaddrInet4 struct, Zero [8]uint8 pkg syscall (linux-arm), type RawSockaddrInet6 struct pkg syscall (linux-arm), type RawSockaddrInet6 struct, Addr [16]uint8 pkg syscall (linux-arm), type RawSockaddrInet6 struct, Family uint16 pkg syscall (linux-arm), type RawSockaddrInet6 struct, Flowinfo uint32 pkg syscall (linux-arm), type RawSockaddrInet6 struct, Port uint16 pkg syscall (linux-arm), type RawSockaddrInet6 struct, Scope_id uint32 pkg syscall (linux-arm), type RawSockaddrLinklayer struct pkg syscall (linux-arm), type RawSockaddrLinklayer struct, Addr [8]uint8 pkg syscall (linux-arm), type RawSockaddrLinklayer struct, Family uint16 pkg syscall (linux-arm), type RawSockaddrLinklayer struct, Halen uint8 pkg syscall (linux-arm), type RawSockaddrLinklayer struct, Hatype uint16 pkg syscall (linux-arm), type RawSockaddrLinklayer struct, Ifindex int32 pkg syscall (linux-arm), type RawSockaddrLinklayer struct, Pkttype uint8 pkg syscall (linux-arm), type RawSockaddrLinklayer struct, Protocol uint16 pkg syscall (linux-arm), type RawSockaddrNetlink struct pkg syscall (linux-arm), type RawSockaddrNetlink struct, Family uint16 pkg syscall (linux-arm), type RawSockaddrNetlink struct, Groups uint32 pkg syscall (linux-arm), type RawSockaddrNetlink struct, Pad uint16 pkg syscall (linux-arm), type RawSockaddrNetlink struct, Pid uint32 pkg syscall (linux-arm), type RawSockaddrUnix struct pkg syscall (linux-arm), type RawSockaddrUnix struct, Family uint16 pkg syscall (linux-arm), type RawSockaddrUnix struct, Path [108]int8 pkg syscall (linux-arm), type Rlimit struct pkg syscall (linux-arm), type Rlimit struct, Cur uint64 pkg syscall (linux-arm), type Rlimit struct, Max uint64 pkg syscall (linux-arm), type RtAttr struct pkg syscall (linux-arm), type RtAttr struct, Len uint16 pkg syscall (linux-arm), type RtAttr struct, Type uint16 pkg syscall (linux-arm), type RtGenmsg struct pkg syscall (linux-arm), type RtGenmsg struct, Family uint8 pkg syscall (linux-arm), type RtMsg struct pkg syscall (linux-arm), type RtMsg struct, Dst_len uint8 pkg syscall (linux-arm), type RtMsg struct, Family uint8 pkg syscall (linux-arm), type RtMsg struct, Flags uint32 pkg syscall (linux-arm), type RtMsg struct, Protocol uint8 pkg syscall (linux-arm), type RtMsg struct, Scope uint8 pkg syscall (linux-arm), type RtMsg struct, Src_len uint8 pkg syscall (linux-arm), type RtMsg struct, Table uint8 pkg syscall (linux-arm), type RtMsg struct, Tos uint8 pkg syscall (linux-arm), type RtMsg struct, Type uint8 pkg syscall (linux-arm), type RtNexthop struct pkg syscall (linux-arm), type RtNexthop struct, Flags uint8 pkg syscall (linux-arm), type RtNexthop struct, Hops uint8 pkg syscall (linux-arm), type RtNexthop struct, Ifindex int32 pkg syscall (linux-arm), type RtNexthop struct, Len uint16 pkg syscall (linux-arm), type Rusage struct, Idrss int32 pkg syscall (linux-arm), type Rusage struct, Inblock int32 pkg syscall (linux-arm), type Rusage struct, Isrss int32 pkg syscall (linux-arm), type Rusage struct, Ixrss int32 pkg syscall (linux-arm), type Rusage struct, Majflt int32 pkg syscall (linux-arm), type Rusage struct, Maxrss int32 pkg syscall (linux-arm), type Rusage struct, Minflt int32 pkg syscall (linux-arm), type Rusage struct, Msgrcv int32 pkg syscall (linux-arm), type Rusage struct, Msgsnd int32 pkg syscall (linux-arm), type Rusage struct, Nivcsw int32 pkg syscall (linux-arm), type Rusage struct, Nsignals int32 pkg syscall (linux-arm), type Rusage struct, Nswap int32 pkg syscall (linux-arm), type Rusage struct, Nvcsw int32 pkg syscall (linux-arm), type Rusage struct, Oublock int32 pkg syscall (linux-arm), type Rusage struct, Stime Timeval pkg syscall (linux-arm), type Rusage struct, Utime Timeval pkg syscall (linux-arm), type SockFilter struct pkg syscall (linux-arm), type SockFilter struct, Code uint16 pkg syscall (linux-arm), type SockFilter struct, Jf uint8 pkg syscall (linux-arm), type SockFilter struct, Jt uint8 pkg syscall (linux-arm), type SockFilter struct, K uint32 pkg syscall (linux-arm), type SockFprog struct pkg syscall (linux-arm), type SockFprog struct, Filter *SockFilter pkg syscall (linux-arm), type SockFprog struct, Len uint16 pkg syscall (linux-arm), type SockFprog struct, Pad_cgo_0 [2]uint8 pkg syscall (linux-arm), type SockaddrLinklayer struct pkg syscall (linux-arm), type SockaddrLinklayer struct, Addr [8]uint8 pkg syscall (linux-arm), type SockaddrLinklayer struct, Halen uint8 pkg syscall (linux-arm), type SockaddrLinklayer struct, Hatype uint16 pkg syscall (linux-arm), type SockaddrLinklayer struct, Ifindex int pkg syscall (linux-arm), type SockaddrLinklayer struct, Pkttype uint8 pkg syscall (linux-arm), type SockaddrLinklayer struct, Protocol uint16 pkg syscall (linux-arm), type SockaddrNetlink struct pkg syscall (linux-arm), type SockaddrNetlink struct, Family uint16 pkg syscall (linux-arm), type SockaddrNetlink struct, Groups uint32 pkg syscall (linux-arm), type SockaddrNetlink struct, Pad uint16 pkg syscall (linux-arm), type SockaddrNetlink struct, Pid uint32 pkg syscall (linux-arm), type SocketControlMessage struct pkg syscall (linux-arm), type SocketControlMessage struct, Data []uint8 pkg syscall (linux-arm), type SocketControlMessage struct, Header Cmsghdr pkg syscall (linux-arm), type Stat_t struct pkg syscall (linux-arm), type Stat_t struct, Atim Timespec pkg syscall (linux-arm), type Stat_t struct, Blksize int32 pkg syscall (linux-arm), type Stat_t struct, Blocks int64 pkg syscall (linux-arm), type Stat_t struct, Ctim Timespec pkg syscall (linux-arm), type Stat_t struct, Dev uint64 pkg syscall (linux-arm), type Stat_t struct, Gid uint32 pkg syscall (linux-arm), type Stat_t struct, Ino uint64 pkg syscall (linux-arm), type Stat_t struct, Mode uint32 pkg syscall (linux-arm), type Stat_t struct, Mtim Timespec pkg syscall (linux-arm), type Stat_t struct, Nlink uint32 pkg syscall (linux-arm), type Stat_t struct, Pad_cgo_0 [2]uint8 pkg syscall (linux-arm), type Stat_t struct, Pad_cgo_1 [6]uint8 pkg syscall (linux-arm), type Stat_t struct, Pad_cgo_2 [4]uint8 pkg syscall (linux-arm), type Stat_t struct, Rdev uint64 pkg syscall (linux-arm), type Stat_t struct, Size int64 pkg syscall (linux-arm), type Stat_t struct, Uid uint32 pkg syscall (linux-arm), type Stat_t struct, X__pad1 uint16 pkg syscall (linux-arm), type Stat_t struct, X__pad2 uint16 pkg syscall (linux-arm), type Stat_t struct, X__st_ino uint32 pkg syscall (linux-arm), type Statfs_t struct pkg syscall (linux-arm), type Statfs_t struct, Bavail uint64 pkg syscall (linux-arm), type Statfs_t struct, Bfree uint64 pkg syscall (linux-arm), type Statfs_t struct, Blocks uint64 pkg syscall (linux-arm), type Statfs_t struct, Bsize int32 pkg syscall (linux-arm), type Statfs_t struct, Ffree uint64 pkg syscall (linux-arm), type Statfs_t struct, Files uint64 pkg syscall (linux-arm), type Statfs_t struct, Flags int32 pkg syscall (linux-arm), type Statfs_t struct, Frsize int32 pkg syscall (linux-arm), type Statfs_t struct, Fsid Fsid pkg syscall (linux-arm), type Statfs_t struct, Namelen int32 pkg syscall (linux-arm), type Statfs_t struct, Pad_cgo_0 [4]uint8 pkg syscall (linux-arm), type Statfs_t struct, Spare [4]int32 pkg syscall (linux-arm), type Statfs_t struct, Type int32 pkg syscall (linux-arm), type SysProcAttr struct, Chroot string pkg syscall (linux-arm), type SysProcAttr struct, Credential *Credential pkg syscall (linux-arm), type SysProcAttr struct, Noctty bool pkg syscall (linux-arm), type SysProcAttr struct, Pdeathsig Signal pkg syscall (linux-arm), type SysProcAttr struct, Ptrace bool pkg syscall (linux-arm), type SysProcAttr struct, Setctty bool pkg syscall (linux-arm), type SysProcAttr struct, Setpgid bool pkg syscall (linux-arm), type SysProcAttr struct, Setsid bool pkg syscall (linux-arm), type Sysinfo_t struct pkg syscall (linux-arm), type Sysinfo_t struct, Bufferram uint32 pkg syscall (linux-arm), type Sysinfo_t struct, Freehigh uint32 pkg syscall (linux-arm), type Sysinfo_t struct, Freeram uint32 pkg syscall (linux-arm), type Sysinfo_t struct, Freeswap uint32 pkg syscall (linux-arm), type Sysinfo_t struct, Loads [3]uint32 pkg syscall (linux-arm), type Sysinfo_t struct, Pad uint16 pkg syscall (linux-arm), type Sysinfo_t struct, Procs uint16 pkg syscall (linux-arm), type Sysinfo_t struct, Sharedram uint32 pkg syscall (linux-arm), type Sysinfo_t struct, Totalhigh uint32 pkg syscall (linux-arm), type Sysinfo_t struct, Totalram uint32 pkg syscall (linux-arm), type Sysinfo_t struct, Totalswap uint32 pkg syscall (linux-arm), type Sysinfo_t struct, Unit uint32 pkg syscall (linux-arm), type Sysinfo_t struct, Uptime int32 pkg syscall (linux-arm), type Sysinfo_t struct, X_f [8]uint8 pkg syscall (linux-arm), type Termios struct pkg syscall (linux-arm), type Termios struct, Cc [32]uint8 pkg syscall (linux-arm), type Termios struct, Cflag uint32 pkg syscall (linux-arm), type Termios struct, Iflag uint32 pkg syscall (linux-arm), type Termios struct, Ispeed uint32 pkg syscall (linux-arm), type Termios struct, Lflag uint32 pkg syscall (linux-arm), type Termios struct, Line uint8 pkg syscall (linux-arm), type Termios struct, Oflag uint32 pkg syscall (linux-arm), type Termios struct, Ospeed uint32 pkg syscall (linux-arm), type Termios struct, Pad_cgo_0 [3]uint8 pkg syscall (linux-arm), type Time_t int32 pkg syscall (linux-arm), type Timespec struct, Nsec int32 pkg syscall (linux-arm), type Timespec struct, Sec int32 pkg syscall (linux-arm), type Timeval struct, Sec int32 pkg syscall (linux-arm), type Timeval struct, Usec int32 pkg syscall (linux-arm), type Timex struct pkg syscall (linux-arm), type Timex struct, Calcnt int32 pkg syscall (linux-arm), type Timex struct, Constant int32 pkg syscall (linux-arm), type Timex struct, Errcnt int32 pkg syscall (linux-arm), type Timex struct, Esterror int32 pkg syscall (linux-arm), type Timex struct, Freq int32 pkg syscall (linux-arm), type Timex struct, Jitcnt int32 pkg syscall (linux-arm), type Timex struct, Jitter int32 pkg syscall (linux-arm), type Timex struct, Maxerror int32 pkg syscall (linux-arm), type Timex struct, Modes uint32 pkg syscall (linux-arm), type Timex struct, Offset int32 pkg syscall (linux-arm), type Timex struct, Pad_cgo_0 [44]uint8 pkg syscall (linux-arm), type Timex struct, Ppsfreq int32 pkg syscall (linux-arm), type Timex struct, Precision int32 pkg syscall (linux-arm), type Timex struct, Shift int32 pkg syscall (linux-arm), type Timex struct, Stabil int32 pkg syscall (linux-arm), type Timex struct, Status int32 pkg syscall (linux-arm), type Timex struct, Stbcnt int32 pkg syscall (linux-arm), type Timex struct, Tai int32 pkg syscall (linux-arm), type Timex struct, Tick int32 pkg syscall (linux-arm), type Timex struct, Time Timeval pkg syscall (linux-arm), type Timex struct, Tolerance int32 pkg syscall (linux-arm), type Tms struct pkg syscall (linux-arm), type Tms struct, Cstime int32 pkg syscall (linux-arm), type Tms struct, Cutime int32 pkg syscall (linux-arm), type Tms struct, Stime int32 pkg syscall (linux-arm), type Tms struct, Utime int32 pkg syscall (linux-arm), type Ucred struct pkg syscall (linux-arm), type Ucred struct, Gid uint32 pkg syscall (linux-arm), type Ucred struct, Pid int32 pkg syscall (linux-arm), type Ucred struct, Uid uint32 pkg syscall (linux-arm), type Ustat_t struct pkg syscall (linux-arm), type Ustat_t struct, Fname [6]uint8 pkg syscall (linux-arm), type Ustat_t struct, Fpack [6]uint8 pkg syscall (linux-arm), type Ustat_t struct, Tfree int32 pkg syscall (linux-arm), type Ustat_t struct, Tinode uint32 pkg syscall (linux-arm), type Utimbuf struct pkg syscall (linux-arm), type Utimbuf struct, Actime int32 pkg syscall (linux-arm), type Utimbuf struct, Modtime int32 pkg syscall (linux-arm), type Utsname struct pkg syscall (linux-arm), type Utsname struct, Domainname [65]uint8 pkg syscall (linux-arm), type Utsname struct, Machine [65]uint8 pkg syscall (linux-arm), type Utsname struct, Nodename [65]uint8 pkg syscall (linux-arm), type Utsname struct, Release [65]uint8 pkg syscall (linux-arm), type Utsname struct, Sysname [65]uint8 pkg syscall (linux-arm), type Utsname struct, Version [65]uint8 pkg syscall (linux-arm), type WaitStatus uint32 pkg syscall (linux-arm), var Stderr int pkg syscall (linux-arm), var Stdin int pkg syscall (linux-arm), var Stdout int pkg syscall (windows-386), const AF_NETBIOS ideal-int pkg syscall (windows-386), const APPLICATION_ERROR ideal-int pkg syscall (windows-386), const AUTHTYPE_CLIENT ideal-int pkg syscall (windows-386), const AUTHTYPE_SERVER ideal-int pkg syscall (windows-386), const CERT_CHAIN_POLICY_AUTHENTICODE ideal-int pkg syscall (windows-386), const CERT_CHAIN_POLICY_AUTHENTICODE_TS ideal-int pkg syscall (windows-386), const CERT_CHAIN_POLICY_BASE ideal-int pkg syscall (windows-386), const CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ideal-int pkg syscall (windows-386), const CERT_CHAIN_POLICY_EV ideal-int pkg syscall (windows-386), const CERT_CHAIN_POLICY_MICROSOFT_ROOT ideal-int pkg syscall (windows-386), const CERT_CHAIN_POLICY_NT_AUTH ideal-int pkg syscall (windows-386), const CERT_CHAIN_POLICY_SSL ideal-int pkg syscall (windows-386), const CERT_E_CN_NO_MATCH ideal-int pkg syscall (windows-386), const CERT_E_EXPIRED ideal-int pkg syscall (windows-386), const CERT_E_PURPOSE ideal-int pkg syscall (windows-386), const CERT_E_ROLE ideal-int pkg syscall (windows-386), const CERT_E_UNTRUSTEDROOT ideal-int pkg syscall (windows-386), const CERT_STORE_ADD_ALWAYS ideal-int pkg syscall (windows-386), const CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG ideal-int pkg syscall (windows-386), const CERT_STORE_PROV_MEMORY ideal-int pkg syscall (windows-386), const CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT ideal-int pkg syscall (windows-386), const CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT ideal-int pkg syscall (windows-386), const CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT ideal-int pkg syscall (windows-386), const CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT ideal-int pkg syscall (windows-386), const CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT ideal-int pkg syscall (windows-386), const CERT_TRUST_INVALID_BASIC_CONSTRAINTS ideal-int pkg syscall (windows-386), const CERT_TRUST_INVALID_EXTENSION ideal-int pkg syscall (windows-386), const CERT_TRUST_INVALID_NAME_CONSTRAINTS ideal-int pkg syscall (windows-386), const CERT_TRUST_INVALID_POLICY_CONSTRAINTS ideal-int pkg syscall (windows-386), const CERT_TRUST_IS_CYCLIC ideal-int pkg syscall (windows-386), const CERT_TRUST_IS_EXPLICIT_DISTRUST ideal-int pkg syscall (windows-386), const CERT_TRUST_IS_NOT_SIGNATURE_VALID ideal-int pkg syscall (windows-386), const CERT_TRUST_IS_NOT_TIME_VALID ideal-int pkg syscall (windows-386), const CERT_TRUST_IS_NOT_VALID_FOR_USAGE ideal-int pkg syscall (windows-386), const CERT_TRUST_IS_OFFLINE_REVOCATION ideal-int pkg syscall (windows-386), const CERT_TRUST_IS_REVOKED ideal-int pkg syscall (windows-386), const CERT_TRUST_IS_UNTRUSTED_ROOT ideal-int pkg syscall (windows-386), const CERT_TRUST_NO_ERROR ideal-int pkg syscall (windows-386), const CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY ideal-int pkg syscall (windows-386), const CERT_TRUST_REVOCATION_STATUS_UNKNOWN ideal-int pkg syscall (windows-386), const CREATE_ALWAYS ideal-int pkg syscall (windows-386), const CREATE_NEW ideal-int pkg syscall (windows-386), const CREATE_UNICODE_ENVIRONMENT ideal-int pkg syscall (windows-386), const CRYPT_DEFAULT_CONTAINER_OPTIONAL ideal-int pkg syscall (windows-386), const CRYPT_DELETEKEYSET ideal-int pkg syscall (windows-386), const CRYPT_MACHINE_KEYSET ideal-int pkg syscall (windows-386), const CRYPT_NEWKEYSET ideal-int pkg syscall (windows-386), const CRYPT_SILENT ideal-int pkg syscall (windows-386), const CRYPT_VERIFYCONTEXT ideal-int pkg syscall (windows-386), const DNS_TYPE_A ideal-int pkg syscall (windows-386), const DNS_TYPE_A6 ideal-int pkg syscall (windows-386), const DNS_TYPE_AAAA ideal-int pkg syscall (windows-386), const DNS_TYPE_ADDRS ideal-int pkg syscall (windows-386), const DNS_TYPE_AFSDB ideal-int pkg syscall (windows-386), const DNS_TYPE_ALL ideal-int pkg syscall (windows-386), const DNS_TYPE_ANY ideal-int pkg syscall (windows-386), const DNS_TYPE_ATMA ideal-int pkg syscall (windows-386), const DNS_TYPE_AXFR ideal-int pkg syscall (windows-386), const DNS_TYPE_CERT ideal-int pkg syscall (windows-386), const DNS_TYPE_CNAME ideal-int pkg syscall (windows-386), const DNS_TYPE_DHCID ideal-int pkg syscall (windows-386), const DNS_TYPE_DNAME ideal-int pkg syscall (windows-386), const DNS_TYPE_DNSKEY ideal-int pkg syscall (windows-386), const DNS_TYPE_DS ideal-int pkg syscall (windows-386), const DNS_TYPE_EID ideal-int pkg syscall (windows-386), const DNS_TYPE_GID ideal-int pkg syscall (windows-386), const DNS_TYPE_GPOS ideal-int pkg syscall (windows-386), const DNS_TYPE_HINFO ideal-int pkg syscall (windows-386), const DNS_TYPE_ISDN ideal-int pkg syscall (windows-386), const DNS_TYPE_IXFR ideal-int pkg syscall (windows-386), const DNS_TYPE_KEY ideal-int pkg syscall (windows-386), const DNS_TYPE_KX ideal-int pkg syscall (windows-386), const DNS_TYPE_LOC ideal-int pkg syscall (windows-386), const DNS_TYPE_MAILA ideal-int pkg syscall (windows-386), const DNS_TYPE_MAILB ideal-int pkg syscall (windows-386), const DNS_TYPE_MB ideal-int pkg syscall (windows-386), const DNS_TYPE_MD ideal-int pkg syscall (windows-386), const DNS_TYPE_MF ideal-int pkg syscall (windows-386), const DNS_TYPE_MG ideal-int pkg syscall (windows-386), const DNS_TYPE_MINFO ideal-int pkg syscall (windows-386), const DNS_TYPE_MR ideal-int pkg syscall (windows-386), const DNS_TYPE_MX ideal-int pkg syscall (windows-386), const DNS_TYPE_NAPTR ideal-int pkg syscall (windows-386), const DNS_TYPE_NBSTAT ideal-int pkg syscall (windows-386), const DNS_TYPE_NIMLOC ideal-int pkg syscall (windows-386), const DNS_TYPE_NS ideal-int pkg syscall (windows-386), const DNS_TYPE_NSAP ideal-int pkg syscall (windows-386), const DNS_TYPE_NSAPPTR ideal-int pkg syscall (windows-386), const DNS_TYPE_NSEC ideal-int pkg syscall (windows-386), const DNS_TYPE_NULL ideal-int pkg syscall (windows-386), const DNS_TYPE_NXT ideal-int pkg syscall (windows-386), const DNS_TYPE_OPT ideal-int pkg syscall (windows-386), const DNS_TYPE_PTR ideal-int pkg syscall (windows-386), const DNS_TYPE_PX ideal-int pkg syscall (windows-386), const DNS_TYPE_RP ideal-int pkg syscall (windows-386), const DNS_TYPE_RRSIG ideal-int pkg syscall (windows-386), const DNS_TYPE_RT ideal-int pkg syscall (windows-386), const DNS_TYPE_SIG ideal-int pkg syscall (windows-386), const DNS_TYPE_SINK ideal-int pkg syscall (windows-386), const DNS_TYPE_SOA ideal-int pkg syscall (windows-386), const DNS_TYPE_SRV ideal-int pkg syscall (windows-386), const DNS_TYPE_TEXT ideal-int pkg syscall (windows-386), const DNS_TYPE_TKEY ideal-int pkg syscall (windows-386), const DNS_TYPE_TSIG ideal-int pkg syscall (windows-386), const DNS_TYPE_UID ideal-int pkg syscall (windows-386), const DNS_TYPE_UINFO ideal-int pkg syscall (windows-386), const DNS_TYPE_UNSPEC ideal-int pkg syscall (windows-386), const DNS_TYPE_WINS ideal-int pkg syscall (windows-386), const DNS_TYPE_WINSR ideal-int pkg syscall (windows-386), const DNS_TYPE_WKS ideal-int pkg syscall (windows-386), const DNS_TYPE_X25 ideal-int pkg syscall (windows-386), const DUPLICATE_CLOSE_SOURCE ideal-int pkg syscall (windows-386), const DUPLICATE_SAME_ACCESS ideal-int pkg syscall (windows-386), const EADV Errno pkg syscall (windows-386), const EBADE Errno pkg syscall (windows-386), const EBADFD Errno pkg syscall (windows-386), const EBADMSG Errno pkg syscall (windows-386), const EBADR Errno pkg syscall (windows-386), const EBADRQC Errno pkg syscall (windows-386), const EBADSLT Errno pkg syscall (windows-386), const EBFONT Errno pkg syscall (windows-386), const ECHRNG Errno pkg syscall (windows-386), const ECOMM Errno pkg syscall (windows-386), const EDEADLOCK Errno pkg syscall (windows-386), const EDOTDOT Errno pkg syscall (windows-386), const EISNAM Errno pkg syscall (windows-386), const EKEYEXPIRED Errno pkg syscall (windows-386), const EKEYREJECTED Errno pkg syscall (windows-386), const EKEYREVOKED Errno pkg syscall (windows-386), const EL2HLT Errno pkg syscall (windows-386), const EL2NSYNC Errno pkg syscall (windows-386), const EL3HLT Errno pkg syscall (windows-386), const EL3RST Errno pkg syscall (windows-386), const ELIBACC Errno pkg syscall (windows-386), const ELIBBAD Errno pkg syscall (windows-386), const ELIBEXEC Errno pkg syscall (windows-386), const ELIBMAX Errno pkg syscall (windows-386), const ELIBSCN Errno pkg syscall (windows-386), const ELNRNG Errno pkg syscall (windows-386), const EMEDIUMTYPE Errno pkg syscall (windows-386), const EMULTIHOP Errno pkg syscall (windows-386), const ENAVAIL Errno pkg syscall (windows-386), const ENOANO Errno pkg syscall (windows-386), const ENOCSI Errno pkg syscall (windows-386), const ENODATA Errno pkg syscall (windows-386), const ENOKEY Errno pkg syscall (windows-386), const ENOLINK Errno pkg syscall (windows-386), const ENOMEDIUM Errno pkg syscall (windows-386), const ENONET Errno pkg syscall (windows-386), const ENOPKG Errno pkg syscall (windows-386), const ENOSR Errno pkg syscall (windows-386), const ENOSTR Errno pkg syscall (windows-386), const ENOTNAM Errno pkg syscall (windows-386), const ENOTRECOVERABLE Errno pkg syscall (windows-386), const ENOTUNIQ Errno pkg syscall (windows-386), const EOWNERDEAD Errno pkg syscall (windows-386), const EPROTO Errno pkg syscall (windows-386), const EREMCHG Errno pkg syscall (windows-386), const EREMOTEIO Errno pkg syscall (windows-386), const ERESTART Errno pkg syscall (windows-386), const ERROR_ACCESS_DENIED Errno pkg syscall (windows-386), const ERROR_ALREADY_EXISTS Errno pkg syscall (windows-386), const ERROR_BROKEN_PIPE Errno pkg syscall (windows-386), const ERROR_BUFFER_OVERFLOW Errno pkg syscall (windows-386), const ERROR_ENVVAR_NOT_FOUND Errno pkg syscall (windows-386), const ERROR_FILE_EXISTS Errno pkg syscall (windows-386), const ERROR_FILE_NOT_FOUND Errno pkg syscall (windows-386), const ERROR_INSUFFICIENT_BUFFER Errno pkg syscall (windows-386), const ERROR_IO_PENDING Errno pkg syscall (windows-386), const ERROR_MOD_NOT_FOUND Errno pkg syscall (windows-386), const ERROR_NO_MORE_FILES Errno pkg syscall (windows-386), const ERROR_OPERATION_ABORTED Errno pkg syscall (windows-386), const ERROR_PATH_NOT_FOUND Errno pkg syscall (windows-386), const ERROR_PROC_NOT_FOUND Errno pkg syscall (windows-386), const ESRMNT Errno pkg syscall (windows-386), const ESTRPIPE Errno pkg syscall (windows-386), const ETIME Errno pkg syscall (windows-386), const EUCLEAN Errno pkg syscall (windows-386), const EUNATCH Errno pkg syscall (windows-386), const EWINDOWS Errno pkg syscall (windows-386), const EXFULL Errno pkg syscall (windows-386), const FILE_ACTION_ADDED ideal-int pkg syscall (windows-386), const FILE_ACTION_MODIFIED ideal-int pkg syscall (windows-386), const FILE_ACTION_REMOVED ideal-int pkg syscall (windows-386), const FILE_ACTION_RENAMED_NEW_NAME ideal-int pkg syscall (windows-386), const FILE_ACTION_RENAMED_OLD_NAME ideal-int pkg syscall (windows-386), const FILE_APPEND_DATA ideal-int pkg syscall (windows-386), const FILE_ATTRIBUTE_ARCHIVE ideal-int pkg syscall (windows-386), const FILE_ATTRIBUTE_DIRECTORY ideal-int pkg syscall (windows-386), const FILE_ATTRIBUTE_HIDDEN ideal-int pkg syscall (windows-386), const FILE_ATTRIBUTE_NORMAL ideal-int pkg syscall (windows-386), const FILE_ATTRIBUTE_READONLY ideal-int pkg syscall (windows-386), const FILE_ATTRIBUTE_SYSTEM ideal-int pkg syscall (windows-386), const FILE_BEGIN ideal-int pkg syscall (windows-386), const FILE_CURRENT ideal-int pkg syscall (windows-386), const FILE_END ideal-int pkg syscall (windows-386), const FILE_FLAG_BACKUP_SEMANTICS ideal-int pkg syscall (windows-386), const FILE_FLAG_OVERLAPPED ideal-int pkg syscall (windows-386), const FILE_LIST_DIRECTORY ideal-int pkg syscall (windows-386), const FILE_MAP_COPY ideal-int pkg syscall (windows-386), const FILE_MAP_EXECUTE ideal-int pkg syscall (windows-386), const FILE_MAP_READ ideal-int pkg syscall (windows-386), const FILE_MAP_WRITE ideal-int pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_ATTRIBUTES ideal-int pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_CREATION ideal-int pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_DIR_NAME ideal-int pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_FILE_NAME ideal-int pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_LAST_ACCESS ideal-int pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_LAST_WRITE ideal-int pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_SIZE ideal-int pkg syscall (windows-386), const FILE_SHARE_DELETE ideal-int pkg syscall (windows-386), const FILE_SHARE_READ ideal-int pkg syscall (windows-386), const FILE_SHARE_WRITE ideal-int pkg syscall (windows-386), const FILE_TYPE_CHAR ideal-int pkg syscall (windows-386), const FILE_TYPE_DISK ideal-int pkg syscall (windows-386), const FILE_TYPE_PIPE ideal-int pkg syscall (windows-386), const FILE_TYPE_REMOTE ideal-int pkg syscall (windows-386), const FILE_TYPE_UNKNOWN ideal-int pkg syscall (windows-386), const FILE_WRITE_ATTRIBUTES ideal-int pkg syscall (windows-386), const FORMAT_MESSAGE_ALLOCATE_BUFFER ideal-int pkg syscall (windows-386), const FORMAT_MESSAGE_ARGUMENT_ARRAY ideal-int pkg syscall (windows-386), const FORMAT_MESSAGE_FROM_HMODULE ideal-int pkg syscall (windows-386), const FORMAT_MESSAGE_FROM_STRING ideal-int pkg syscall (windows-386), const FORMAT_MESSAGE_FROM_SYSTEM ideal-int pkg syscall (windows-386), const FORMAT_MESSAGE_IGNORE_INSERTS ideal-int pkg syscall (windows-386), const FORMAT_MESSAGE_MAX_WIDTH_MASK ideal-int pkg syscall (windows-386), const GENERIC_ALL ideal-int pkg syscall (windows-386), const GENERIC_EXECUTE ideal-int pkg syscall (windows-386), const GENERIC_READ ideal-int pkg syscall (windows-386), const GENERIC_WRITE ideal-int pkg syscall (windows-386), const GetFileExInfoStandard ideal-int pkg syscall (windows-386), const GetFileExMaxInfoLevel ideal-int pkg syscall (windows-386), const HANDLE_FLAG_INHERIT ideal-int pkg syscall (windows-386), const HKEY_CLASSES_ROOT ideal-int pkg syscall (windows-386), const HKEY_CURRENT_CONFIG ideal-int pkg syscall (windows-386), const HKEY_CURRENT_USER ideal-int pkg syscall (windows-386), const HKEY_DYN_DATA ideal-int pkg syscall (windows-386), const HKEY_LOCAL_MACHINE ideal-int pkg syscall (windows-386), const HKEY_PERFORMANCE_DATA ideal-int pkg syscall (windows-386), const HKEY_USERS ideal-int pkg syscall (windows-386), const IFF_POINTTOPOINT ideal-int pkg syscall (windows-386), const IGNORE ideal-int pkg syscall (windows-386), const INFINITE ideal-int pkg syscall (windows-386), const INVALID_FILE_ATTRIBUTES ideal-int pkg syscall (windows-386), const InvalidHandle Handle pkg syscall (windows-386), const KEY_ALL_ACCESS ideal-int pkg syscall (windows-386), const KEY_CREATE_LINK ideal-int pkg syscall (windows-386), const KEY_CREATE_SUB_KEY ideal-int pkg syscall (windows-386), const KEY_ENUMERATE_SUB_KEYS ideal-int pkg syscall (windows-386), const KEY_EXECUTE ideal-int pkg syscall (windows-386), const KEY_NOTIFY ideal-int pkg syscall (windows-386), const KEY_QUERY_VALUE ideal-int pkg syscall (windows-386), const KEY_READ ideal-int pkg syscall (windows-386), const KEY_SET_VALUE ideal-int pkg syscall (windows-386), const KEY_WOW64_32KEY ideal-int pkg syscall (windows-386), const KEY_WOW64_64KEY ideal-int pkg syscall (windows-386), const KEY_WRITE ideal-int pkg syscall (windows-386), const LANG_ENGLISH ideal-int pkg syscall (windows-386), const MAXLEN_IFDESCR ideal-int pkg syscall (windows-386), const MAXLEN_PHYSADDR ideal-int pkg syscall (windows-386), const MAX_ADAPTER_ADDRESS_LENGTH ideal-int pkg syscall (windows-386), const MAX_ADAPTER_DESCRIPTION_LENGTH ideal-int pkg syscall (windows-386), const MAX_ADAPTER_NAME_LENGTH ideal-int pkg syscall (windows-386), const MAX_COMPUTERNAME_LENGTH ideal-int pkg syscall (windows-386), const MAX_INTERFACE_NAME_LEN ideal-int pkg syscall (windows-386), const MAX_LONG_PATH ideal-int pkg syscall (windows-386), const MAX_PATH ideal-int pkg syscall (windows-386), const MaxTokenInfoClass ideal-int pkg syscall (windows-386), const NameCanonical ideal-int pkg syscall (windows-386), const NameCanonicalEx ideal-int pkg syscall (windows-386), const NameDisplay ideal-int pkg syscall (windows-386), const NameDnsDomain ideal-int pkg syscall (windows-386), const NameFullyQualifiedDN ideal-int pkg syscall (windows-386), const NameSamCompatible ideal-int pkg syscall (windows-386), const NameServicePrincipal ideal-int pkg syscall (windows-386), const NameUniqueId ideal-int pkg syscall (windows-386), const NameUnknown ideal-int pkg syscall (windows-386), const NameUserPrincipal ideal-int pkg syscall (windows-386), const OPEN_ALWAYS ideal-int pkg syscall (windows-386), const OPEN_EXISTING ideal-int pkg syscall (windows-386), const PAGE_EXECUTE_READ ideal-int pkg syscall (windows-386), const PAGE_EXECUTE_READWRITE ideal-int pkg syscall (windows-386), const PAGE_EXECUTE_WRITECOPY ideal-int pkg syscall (windows-386), const PAGE_READONLY ideal-int pkg syscall (windows-386), const PAGE_READWRITE ideal-int pkg syscall (windows-386), const PAGE_WRITECOPY ideal-int pkg syscall (windows-386), const PKCS_7_ASN_ENCODING ideal-int pkg syscall (windows-386), const PROCESS_QUERY_INFORMATION ideal-int pkg syscall (windows-386), const PROV_DH_SCHANNEL ideal-int pkg syscall (windows-386), const PROV_DSS ideal-int pkg syscall (windows-386), const PROV_DSS_DH ideal-int pkg syscall (windows-386), const PROV_EC_ECDSA_FULL ideal-int pkg syscall (windows-386), const PROV_EC_ECDSA_SIG ideal-int pkg syscall (windows-386), const PROV_EC_ECNRA_FULL ideal-int pkg syscall (windows-386), const PROV_EC_ECNRA_SIG ideal-int pkg syscall (windows-386), const PROV_FORTEZZA ideal-int pkg syscall (windows-386), const PROV_INTEL_SEC ideal-int pkg syscall (windows-386), const PROV_MS_EXCHANGE ideal-int pkg syscall (windows-386), const PROV_REPLACE_OWF ideal-int pkg syscall (windows-386), const PROV_RNG ideal-int pkg syscall (windows-386), const PROV_RSA_AES ideal-int pkg syscall (windows-386), const PROV_RSA_FULL ideal-int pkg syscall (windows-386), const PROV_RSA_SCHANNEL ideal-int pkg syscall (windows-386), const PROV_RSA_SIG ideal-int pkg syscall (windows-386), const PROV_SPYRUS_LYNKS ideal-int pkg syscall (windows-386), const PROV_SSL ideal-int pkg syscall (windows-386), const REG_BINARY ideal-int pkg syscall (windows-386), const REG_DWORD ideal-int pkg syscall (windows-386), const REG_DWORD_BIG_ENDIAN ideal-int pkg syscall (windows-386), const REG_DWORD_LITTLE_ENDIAN ideal-int pkg syscall (windows-386), const REG_EXPAND_SZ ideal-int pkg syscall (windows-386), const REG_FULL_RESOURCE_DESCRIPTOR ideal-int pkg syscall (windows-386), const REG_LINK ideal-int pkg syscall (windows-386), const REG_MULTI_SZ ideal-int pkg syscall (windows-386), const REG_NONE ideal-int pkg syscall (windows-386), const REG_QWORD ideal-int pkg syscall (windows-386), const REG_QWORD_LITTLE_ENDIAN ideal-int pkg syscall (windows-386), const REG_RESOURCE_LIST ideal-int pkg syscall (windows-386), const REG_RESOURCE_REQUIREMENTS_LIST ideal-int pkg syscall (windows-386), const REG_SZ ideal-int pkg syscall (windows-386), const SIO_GET_INTERFACE_LIST ideal-int pkg syscall (windows-386), const SO_UPDATE_ACCEPT_CONTEXT ideal-int pkg syscall (windows-386), const STANDARD_RIGHTS_ALL ideal-int pkg syscall (windows-386), const STANDARD_RIGHTS_EXECUTE ideal-int pkg syscall (windows-386), const STANDARD_RIGHTS_READ ideal-int pkg syscall (windows-386), const STANDARD_RIGHTS_REQUIRED ideal-int pkg syscall (windows-386), const STANDARD_RIGHTS_WRITE ideal-int pkg syscall (windows-386), const STARTF_USESHOWWINDOW ideal-int pkg syscall (windows-386), const STARTF_USESTDHANDLES ideal-int pkg syscall (windows-386), const STD_ERROR_HANDLE ideal-int pkg syscall (windows-386), const STD_INPUT_HANDLE ideal-int pkg syscall (windows-386), const STD_OUTPUT_HANDLE ideal-int pkg syscall (windows-386), const SUBLANG_ENGLISH_US ideal-int pkg syscall (windows-386), const SW_FORCEMINIMIZE ideal-int pkg syscall (windows-386), const SW_HIDE ideal-int pkg syscall (windows-386), const SW_MAXIMIZE ideal-int pkg syscall (windows-386), const SW_MINIMIZE ideal-int pkg syscall (windows-386), const SW_NORMAL ideal-int pkg syscall (windows-386), const SW_RESTORE ideal-int pkg syscall (windows-386), const SW_SHOW ideal-int pkg syscall (windows-386), const SW_SHOWDEFAULT ideal-int pkg syscall (windows-386), const SW_SHOWMAXIMIZED ideal-int pkg syscall (windows-386), const SW_SHOWMINIMIZED ideal-int pkg syscall (windows-386), const SW_SHOWMINNOACTIVE ideal-int pkg syscall (windows-386), const SW_SHOWNA ideal-int pkg syscall (windows-386), const SW_SHOWNOACTIVATE ideal-int pkg syscall (windows-386), const SW_SHOWNORMAL ideal-int pkg syscall (windows-386), const SYNCHRONIZE ideal-int pkg syscall (windows-386), const S_IWRITE ideal-int pkg syscall (windows-386), const SidTypeAlias ideal-int pkg syscall (windows-386), const SidTypeComputer ideal-int pkg syscall (windows-386), const SidTypeDeletedAccount ideal-int pkg syscall (windows-386), const SidTypeDomain ideal-int pkg syscall (windows-386), const SidTypeGroup ideal-int pkg syscall (windows-386), const SidTypeInvalid ideal-int pkg syscall (windows-386), const SidTypeLabel ideal-int pkg syscall (windows-386), const SidTypeUnknown ideal-int pkg syscall (windows-386), const SidTypeUser ideal-int pkg syscall (windows-386), const SidTypeWellKnownGroup ideal-int pkg syscall (windows-386), const TF_DISCONNECT ideal-int pkg syscall (windows-386), const TF_REUSE_SOCKET ideal-int pkg syscall (windows-386), const TF_USE_DEFAULT_WORKER ideal-int pkg syscall (windows-386), const TF_USE_KERNEL_APC ideal-int pkg syscall (windows-386), const TF_USE_SYSTEM_THREAD ideal-int pkg syscall (windows-386), const TF_WRITE_BEHIND ideal-int pkg syscall (windows-386), const TIME_ZONE_ID_DAYLIGHT ideal-int pkg syscall (windows-386), const TIME_ZONE_ID_STANDARD ideal-int pkg syscall (windows-386), const TIME_ZONE_ID_UNKNOWN ideal-int pkg syscall (windows-386), const TOKEN_ADJUST_DEFAULT ideal-int pkg syscall (windows-386), const TOKEN_ADJUST_GROUPS ideal-int pkg syscall (windows-386), const TOKEN_ADJUST_PRIVILEGES ideal-int pkg syscall (windows-386), const TOKEN_ALL_ACCESS ideal-int pkg syscall (windows-386), const TOKEN_ASSIGN_PRIMARY ideal-int pkg syscall (windows-386), const TOKEN_DUPLICATE ideal-int pkg syscall (windows-386), const TOKEN_EXECUTE ideal-int pkg syscall (windows-386), const TOKEN_IMPERSONATE ideal-int pkg syscall (windows-386), const TOKEN_QUERY ideal-int pkg syscall (windows-386), const TOKEN_QUERY_SOURCE ideal-int pkg syscall (windows-386), const TOKEN_READ ideal-int pkg syscall (windows-386), const TOKEN_WRITE ideal-int pkg syscall (windows-386), const TRUNCATE_EXISTING ideal-int pkg syscall (windows-386), const TokenAccessInformation ideal-int pkg syscall (windows-386), const TokenAuditPolicy ideal-int pkg syscall (windows-386), const TokenDefaultDacl ideal-int pkg syscall (windows-386), const TokenElevation ideal-int pkg syscall (windows-386), const TokenElevationType ideal-int pkg syscall (windows-386), const TokenGroups ideal-int pkg syscall (windows-386), const TokenGroupsAndPrivileges ideal-int pkg syscall (windows-386), const TokenHasRestrictions ideal-int pkg syscall (windows-386), const TokenImpersonationLevel ideal-int pkg syscall (windows-386), const TokenIntegrityLevel ideal-int pkg syscall (windows-386), const TokenLinkedToken ideal-int pkg syscall (windows-386), const TokenLogonSid ideal-int pkg syscall (windows-386), const TokenMandatoryPolicy ideal-int pkg syscall (windows-386), const TokenOrigin ideal-int pkg syscall (windows-386), const TokenOwner ideal-int pkg syscall (windows-386), const TokenPrimaryGroup ideal-int pkg syscall (windows-386), const TokenPrivileges ideal-int pkg syscall (windows-386), const TokenRestrictedSids ideal-int pkg syscall (windows-386), const TokenSandBoxInert ideal-int pkg syscall (windows-386), const TokenSessionId ideal-int pkg syscall (windows-386), const TokenSessionReference ideal-int pkg syscall (windows-386), const TokenSource ideal-int pkg syscall (windows-386), const TokenStatistics ideal-int pkg syscall (windows-386), const TokenType ideal-int pkg syscall (windows-386), const TokenUIAccess ideal-int pkg syscall (windows-386), const TokenUser ideal-int pkg syscall (windows-386), const TokenVirtualizationAllowed ideal-int pkg syscall (windows-386), const TokenVirtualizationEnabled ideal-int pkg syscall (windows-386), const USAGE_MATCH_TYPE_AND ideal-int pkg syscall (windows-386), const USAGE_MATCH_TYPE_OR ideal-int pkg syscall (windows-386), const WAIT_ABANDONED ideal-int pkg syscall (windows-386), const WAIT_FAILED ideal-int pkg syscall (windows-386), const WAIT_OBJECT_0 ideal-int pkg syscall (windows-386), const WAIT_TIMEOUT ideal-int pkg syscall (windows-386), const WSADESCRIPTION_LEN ideal-int pkg syscall (windows-386), const WSASYS_STATUS_LEN ideal-int pkg syscall (windows-386), const X509_ASN_ENCODING ideal-int pkg syscall (windows-386), func Accept(Handle) (Handle, Sockaddr, error) pkg syscall (windows-386), func AcceptEx(Handle, Handle, *uint8, uint32, uint32, uint32, *uint32, *Overlapped) error pkg syscall (windows-386), func Bind(Handle, Sockaddr) error pkg syscall (windows-386), func CancelIo(Handle) error pkg syscall (windows-386), func CertAddCertificateContextToStore(Handle, *CertContext, uint32, **CertContext) error pkg syscall (windows-386), func CertCloseStore(Handle, uint32) error pkg syscall (windows-386), func CertCreateCertificateContext(uint32, *uint8, uint32) (*CertContext, error) pkg syscall (windows-386), func CertEnumCertificatesInStore(Handle, *CertContext) (*CertContext, error) pkg syscall (windows-386), func CertFreeCertificateChain(*CertChainContext) pkg syscall (windows-386), func CertFreeCertificateContext(*CertContext) error pkg syscall (windows-386), func CertGetCertificateChain(Handle, *CertContext, *Filetime, Handle, *CertChainPara, uint32, uintptr, **CertChainContext) error pkg syscall (windows-386), func CertOpenStore(uintptr, uint32, uintptr, uint32, uintptr) (Handle, error) pkg syscall (windows-386), func CertOpenSystemStore(Handle, *uint16) (Handle, error) pkg syscall (windows-386), func CertVerifyCertificateChainPolicy(uintptr, *CertChainContext, *CertChainPolicyPara, *CertChainPolicyStatus) error pkg syscall (windows-386), func Close(Handle) error pkg syscall (windows-386), func CloseHandle(Handle) error pkg syscall (windows-386), func CloseOnExec(Handle) pkg syscall (windows-386), func Closesocket(Handle) error pkg syscall (windows-386), func CommandLineToArgv(*uint16, *int32) (*[8192]*[8192]uint16, error) pkg syscall (windows-386), func ComputerName() (string, error) pkg syscall (windows-386), func Connect(Handle, Sockaddr) error pkg syscall (windows-386), func ConvertSidToStringSid(*SID, **uint16) error pkg syscall (windows-386), func ConvertStringSidToSid(*uint16, **SID) error pkg syscall (windows-386), func CopySid(uint32, *SID, *SID) error pkg syscall (windows-386), func CreateDirectory(*uint16, *SecurityAttributes) error pkg syscall (windows-386), func CreateFile(*uint16, uint32, uint32, *SecurityAttributes, uint32, uint32, int32) (Handle, error) pkg syscall (windows-386), func CreateFileMapping(Handle, *SecurityAttributes, uint32, uint32, uint32, *uint16) (Handle, error) pkg syscall (windows-386), func CreateIoCompletionPort(Handle, Handle, uint32, uint32) (Handle, error) pkg syscall (windows-386), func CreatePipe(*Handle, *Handle, *SecurityAttributes, uint32) error pkg syscall (windows-386), func CreateProcess(*uint16, *uint16, *SecurityAttributes, *SecurityAttributes, bool, uint32, *uint16, *uint16, *StartupInfo, *ProcessInformation) error pkg syscall (windows-386), func CryptAcquireContext(*Handle, *uint16, *uint16, uint32, uint32) error pkg syscall (windows-386), func CryptGenRandom(Handle, uint32, *uint8) error pkg syscall (windows-386), func CryptReleaseContext(Handle, uint32) error pkg syscall (windows-386), func DeleteFile(*uint16) error pkg syscall (windows-386), func DnsQuery(string, uint16, uint32, *uint8, **DNSRecord, *uint8) error pkg syscall (windows-386), func DnsRecordListFree(*DNSRecord, uint32) pkg syscall (windows-386), func DuplicateHandle(Handle, Handle, Handle, *Handle, uint32, bool, uint32) error pkg syscall (windows-386), func EscapeArg(string) string pkg syscall (windows-386), func ExitProcess(uint32) pkg syscall (windows-386), func Fchdir(Handle) error pkg syscall (windows-386), func Fchmod(Handle, uint32) error pkg syscall (windows-386), func Fchown(Handle, int, int) error pkg syscall (windows-386), func FindClose(Handle) error pkg syscall (windows-386), func FindFirstFile(*uint16, *Win32finddata) (Handle, error) pkg syscall (windows-386), func FindNextFile(Handle, *Win32finddata) error pkg syscall (windows-386), func FlushFileBuffers(Handle) error pkg syscall (windows-386), func FlushViewOfFile(uintptr, uintptr) error pkg syscall (windows-386), func FormatMessage(uint32, uint32, uint32, uint32, []uint16, *uint8) (uint32, error) pkg syscall (windows-386), func FreeEnvironmentStrings(*uint16) error pkg syscall (windows-386), func FreeLibrary(Handle) error pkg syscall (windows-386), func Fsync(Handle) error pkg syscall (windows-386), func Ftruncate(Handle, int64) error pkg syscall (windows-386), func GetAcceptExSockaddrs(*uint8, uint32, uint32, uint32, **RawSockaddrAny, *int32, **RawSockaddrAny, *int32) pkg syscall (windows-386), func GetAdaptersInfo(*IpAdapterInfo, *uint32) error pkg syscall (windows-386), func GetCommandLine() *uint16 pkg syscall (windows-386), func GetComputerName(*uint16, *uint32) error pkg syscall (windows-386), func GetCurrentDirectory(uint32, *uint16) (uint32, error) pkg syscall (windows-386), func GetCurrentProcess() (Handle, error) pkg syscall (windows-386), func GetEnvironmentStrings() (*uint16, error) pkg syscall (windows-386), func GetEnvironmentVariable(*uint16, *uint16, uint32) (uint32, error) pkg syscall (windows-386), func GetExitCodeProcess(Handle, *uint32) error pkg syscall (windows-386), func GetFileAttributes(*uint16) (uint32, error) pkg syscall (windows-386), func GetFileAttributesEx(*uint16, uint32, *uint8) error pkg syscall (windows-386), func GetFileInformationByHandle(Handle, *ByHandleFileInformation) error pkg syscall (windows-386), func GetFileType(Handle) (uint32, error) pkg syscall (windows-386), func GetFullPathName(*uint16, uint32, *uint16, **uint16) (uint32, error) pkg syscall (windows-386), func GetHostByName(string) (*Hostent, error) pkg syscall (windows-386), func GetIfEntry(*MibIfRow) error pkg syscall (windows-386), func GetLastError() error pkg syscall (windows-386), func GetLengthSid(*SID) uint32 pkg syscall (windows-386), func GetLongPathName(*uint16, *uint16, uint32) (uint32, error) pkg syscall (windows-386), func GetProcAddress(Handle, string) (uintptr, error) pkg syscall (windows-386), func GetProcessTimes(Handle, *Filetime, *Filetime, *Filetime, *Filetime) error pkg syscall (windows-386), func GetProtoByName(string) (*Protoent, error) pkg syscall (windows-386), func GetQueuedCompletionStatus(Handle, *uint32, *uint32, **Overlapped, uint32) error pkg syscall (windows-386), func GetServByName(string, string) (*Servent, error) pkg syscall (windows-386), func GetShortPathName(*uint16, *uint16, uint32) (uint32, error) pkg syscall (windows-386), func GetStartupInfo(*StartupInfo) error pkg syscall (windows-386), func GetStdHandle(int) (Handle, error) pkg syscall (windows-386), func GetSystemTimeAsFileTime(*Filetime) pkg syscall (windows-386), func GetTempPath(uint32, *uint16) (uint32, error) pkg syscall (windows-386), func GetTimeZoneInformation(*Timezoneinformation) (uint32, error) pkg syscall (windows-386), func GetTokenInformation(Token, uint32, *uint8, uint32, *uint32) error pkg syscall (windows-386), func GetUserNameEx(uint32, *uint16, *uint32) error pkg syscall (windows-386), func GetUserProfileDirectory(Token, *uint16, *uint32) error pkg syscall (windows-386), func GetVersion() (uint32, error) pkg syscall (windows-386), func Getpeername(Handle) (Sockaddr, error) pkg syscall (windows-386), func Getsockname(Handle) (Sockaddr, error) pkg syscall (windows-386), func GetsockoptInt(Handle, int, int) (int, error) pkg syscall (windows-386), func Listen(Handle, int) error pkg syscall (windows-386), func LoadDLL(string) (*DLL, error) pkg syscall (windows-386), func LoadLibrary(string) (Handle, error) pkg syscall (windows-386), func LocalFree(Handle) (Handle, error) pkg syscall (windows-386), func LookupAccountName(*uint16, *uint16, *SID, *uint32, *uint16, *uint32, *uint32) error pkg syscall (windows-386), func LookupAccountSid(*uint16, *SID, *uint16, *uint32, *uint16, *uint32, *uint32) error pkg syscall (windows-386), func LookupSID(string, string) (*SID, string, uint32, error) pkg syscall (windows-386), func MapViewOfFile(Handle, uint32, uint32, uint32, uintptr) (uintptr, error) pkg syscall (windows-386), func MoveFile(*uint16, *uint16) error pkg syscall (windows-386), func MustLoadDLL(string) *DLL pkg syscall (windows-386), func NetApiBufferFree(*uint8) error pkg syscall (windows-386), func NetUserGetInfo(*uint16, *uint16, uint32, **uint8) error pkg syscall (windows-386), func NewCallback(interface{}) uintptr pkg syscall (windows-386), func NewLazyDLL(string) *LazyDLL pkg syscall (windows-386), func NsecToFiletime(int64) Filetime pkg syscall (windows-386), func Ntohs(uint16) uint16 pkg syscall (windows-386), func Open(string, int, uint32) (Handle, error) pkg syscall (windows-386), func OpenCurrentProcessToken() (Token, error) pkg syscall (windows-386), func OpenProcess(uint32, bool, uint32) (Handle, error) pkg syscall (windows-386), func OpenProcessToken(Handle, uint32, *Token) error pkg syscall (windows-386), func Pipe([]Handle) error pkg syscall (windows-386), func PostQueuedCompletionStatus(Handle, uint32, uint32, *Overlapped) error pkg syscall (windows-386), func Read(Handle, []uint8) (int, error) pkg syscall (windows-386), func ReadDirectoryChanges(Handle, *uint8, uint32, bool, uint32, *uint32, *Overlapped, uintptr) error pkg syscall (windows-386), func ReadFile(Handle, []uint8, *uint32, *Overlapped) error pkg syscall (windows-386), func Recvfrom(Handle, []uint8, int) (int, Sockaddr, error) pkg syscall (windows-386), func RegCloseKey(Handle) error pkg syscall (windows-386), func RegEnumKeyEx(Handle, uint32, *uint16, *uint32, *uint32, *uint16, *uint32, *Filetime) error pkg syscall (windows-386), func RegOpenKeyEx(Handle, *uint16, uint32, uint32, *Handle) error pkg syscall (windows-386), func RegQueryInfoKey(Handle, *uint16, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *Filetime) error pkg syscall (windows-386), func RegQueryValueEx(Handle, *uint16, *uint32, *uint32, *uint8, *uint32) error pkg syscall (windows-386), func RemoveDirectory(*uint16) error pkg syscall (windows-386), func Seek(Handle, int64, int) (int64, error) pkg syscall (windows-386), func Sendto(Handle, []uint8, int, Sockaddr) error pkg syscall (windows-386), func SetCurrentDirectory(*uint16) error pkg syscall (windows-386), func SetEndOfFile(Handle) error pkg syscall (windows-386), func SetEnvironmentVariable(*uint16, *uint16) error pkg syscall (windows-386), func SetFileAttributes(*uint16, uint32) error pkg syscall (windows-386), func SetFilePointer(Handle, int32, *int32, uint32) (uint32, error) pkg syscall (windows-386), func SetFileTime(Handle, *Filetime, *Filetime, *Filetime) error pkg syscall (windows-386), func SetHandleInformation(Handle, uint32, uint32) error pkg syscall (windows-386), func SetNonblock(Handle, bool) error pkg syscall (windows-386), func Setsockopt(Handle, int32, int32, *uint8, int32) error pkg syscall (windows-386), func SetsockoptIPMreq(Handle, int, int, *IPMreq) error pkg syscall (windows-386), func SetsockoptIPv6Mreq(Handle, int, int, *IPv6Mreq) error pkg syscall (windows-386), func SetsockoptInet4Addr(Handle, int, int, [4]uint8) error pkg syscall (windows-386), func SetsockoptInt(Handle, int, int, int) error pkg syscall (windows-386), func SetsockoptLinger(Handle, int, int, *Linger) error pkg syscall (windows-386), func SetsockoptTimeval(Handle, int, int, *Timeval) error pkg syscall (windows-386), func Shutdown(Handle, int) error pkg syscall (windows-386), func Socket(int, int, int) (Handle, error) pkg syscall (windows-386), func StringToSid(string) (*SID, error) pkg syscall (windows-386), func StringToUTF16(string) []uint16 pkg syscall (windows-386), func StringToUTF16Ptr(string) *uint16 pkg syscall (windows-386), func Syscall(uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (windows-386), func Syscall12(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (windows-386), func Syscall15(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (windows-386), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (windows-386), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (windows-386), func TerminateProcess(Handle, uint32) error pkg syscall (windows-386), func TranslateAccountName(string, uint32, uint32, int) (string, error) pkg syscall (windows-386), func TranslateName(*uint16, uint32, uint32, *uint16, *uint32) error pkg syscall (windows-386), func TransmitFile(Handle, Handle, uint32, uint32, *Overlapped, *TransmitFileBuffers, uint32) error pkg syscall (windows-386), func UTF16ToString([]uint16) string pkg syscall (windows-386), func UnmapViewOfFile(uintptr) error pkg syscall (windows-386), func VirtualLock(uintptr, uintptr) error pkg syscall (windows-386), func VirtualUnlock(uintptr, uintptr) error pkg syscall (windows-386), func WSACleanup() error pkg syscall (windows-386), func WSAIoctl(Handle, uint32, *uint8, uint32, *uint8, uint32, *uint32, *Overlapped, uintptr) error pkg syscall (windows-386), func WSARecv(Handle, *WSABuf, uint32, *uint32, *uint32, *Overlapped, *uint8) error pkg syscall (windows-386), func WSARecvFrom(Handle, *WSABuf, uint32, *uint32, *uint32, *RawSockaddrAny, *int32, *Overlapped, *uint8) error pkg syscall (windows-386), func WSASend(Handle, *WSABuf, uint32, *uint32, uint32, *Overlapped, *uint8) error pkg syscall (windows-386), func WSASendTo(Handle, *WSABuf, uint32, *uint32, uint32, *RawSockaddrAny, int32, *Overlapped, *uint8) error pkg syscall (windows-386), func WSASendto(Handle, *WSABuf, uint32, *uint32, uint32, Sockaddr, *Overlapped, *uint8) error pkg syscall (windows-386), func WSAStartup(uint32, *WSAData) error pkg syscall (windows-386), func WaitForSingleObject(Handle, uint32) (uint32, error) pkg syscall (windows-386), func Write(Handle, []uint8) (int, error) pkg syscall (windows-386), func WriteFile(Handle, []uint8, *uint32, *Overlapped) error pkg syscall (windows-386), method (*DLL) FindProc(string) (*Proc, error) pkg syscall (windows-386), method (*DLL) MustFindProc(string) *Proc pkg syscall (windows-386), method (*DLL) Release() error pkg syscall (windows-386), method (*DLLError) Error() string pkg syscall (windows-386), method (*Filetime) Nanoseconds() int64 pkg syscall (windows-386), method (*LazyDLL) Handle() uintptr pkg syscall (windows-386), method (*LazyDLL) Load() error pkg syscall (windows-386), method (*LazyDLL) NewProc(string) *LazyProc pkg syscall (windows-386), method (*LazyProc) Addr() uintptr pkg syscall (windows-386), method (*LazyProc) Call(...uintptr) (uintptr, uintptr, error) pkg syscall (windows-386), method (*LazyProc) Find() error pkg syscall (windows-386), method (*Proc) Addr() uintptr pkg syscall (windows-386), method (*Proc) Call(...uintptr) (uintptr, uintptr, error) pkg syscall (windows-386), method (*RawSockaddrAny) Sockaddr() (Sockaddr, error) pkg syscall (windows-386), method (*SID) Copy() (*SID, error) pkg syscall (windows-386), method (*SID) Len() int pkg syscall (windows-386), method (*SID) LookupAccount(string) (string, string, uint32, error) pkg syscall (windows-386), method (*SID) String() (string, error) pkg syscall (windows-386), method (*Timeval) Nanoseconds() int64 pkg syscall (windows-386), method (Token) Close() error pkg syscall (windows-386), method (Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) pkg syscall (windows-386), method (Token) GetTokenUser() (*Tokenuser, error) pkg syscall (windows-386), method (Token) GetUserProfileDirectory() (string, error) pkg syscall (windows-386), type ByHandleFileInformation struct pkg syscall (windows-386), type ByHandleFileInformation struct, CreationTime Filetime pkg syscall (windows-386), type ByHandleFileInformation struct, FileAttributes uint32 pkg syscall (windows-386), type ByHandleFileInformation struct, FileIndexHigh uint32 pkg syscall (windows-386), type ByHandleFileInformation struct, FileIndexLow uint32 pkg syscall (windows-386), type ByHandleFileInformation struct, FileSizeHigh uint32 pkg syscall (windows-386), type ByHandleFileInformation struct, FileSizeLow uint32 pkg syscall (windows-386), type ByHandleFileInformation struct, LastAccessTime Filetime pkg syscall (windows-386), type ByHandleFileInformation struct, LastWriteTime Filetime pkg syscall (windows-386), type ByHandleFileInformation struct, NumberOfLinks uint32 pkg syscall (windows-386), type ByHandleFileInformation struct, VolumeSerialNumber uint32 pkg syscall (windows-386), type CertChainContext struct pkg syscall (windows-386), type CertChainContext struct, ChainCount uint32 pkg syscall (windows-386), type CertChainContext struct, Chains **CertSimpleChain pkg syscall (windows-386), type CertChainContext struct, HasRevocationFreshnessTime uint32 pkg syscall (windows-386), type CertChainContext struct, LowerQualityChainCount uint32 pkg syscall (windows-386), type CertChainContext struct, LowerQualityChains **CertChainContext pkg syscall (windows-386), type CertChainContext struct, RevocationFreshnessTime uint32 pkg syscall (windows-386), type CertChainContext struct, Size uint32 pkg syscall (windows-386), type CertChainContext struct, TrustStatus CertTrustStatus pkg syscall (windows-386), type CertChainElement struct pkg syscall (windows-386), type CertChainElement struct, ApplicationUsage *CertEnhKeyUsage pkg syscall (windows-386), type CertChainElement struct, CertContext *CertContext pkg syscall (windows-386), type CertChainElement struct, ExtendedErrorInfo *uint16 pkg syscall (windows-386), type CertChainElement struct, IssuanceUsage *CertEnhKeyUsage pkg syscall (windows-386), type CertChainElement struct, RevocationInfo *CertRevocationInfo pkg syscall (windows-386), type CertChainElement struct, Size uint32 pkg syscall (windows-386), type CertChainElement struct, TrustStatus CertTrustStatus pkg syscall (windows-386), type CertChainPara struct pkg syscall (windows-386), type CertChainPara struct, CacheResync *Filetime pkg syscall (windows-386), type CertChainPara struct, CheckRevocationFreshnessTime uint32 pkg syscall (windows-386), type CertChainPara struct, RequestedUsage CertUsageMatch pkg syscall (windows-386), type CertChainPara struct, RequstedIssuancePolicy CertUsageMatch pkg syscall (windows-386), type CertChainPara struct, RevocationFreshnessTime uint32 pkg syscall (windows-386), type CertChainPara struct, Size uint32 pkg syscall (windows-386), type CertChainPara struct, URLRetrievalTimeout uint32 pkg syscall (windows-386), type CertChainPolicyPara struct pkg syscall (windows-386), type CertChainPolicyPara struct, ExtraPolicyPara uintptr pkg syscall (windows-386), type CertChainPolicyPara struct, Flags uint32 pkg syscall (windows-386), type CertChainPolicyPara struct, Size uint32 pkg syscall (windows-386), type CertChainPolicyStatus struct pkg syscall (windows-386), type CertChainPolicyStatus struct, ChainIndex uint32 pkg syscall (windows-386), type CertChainPolicyStatus struct, ElementIndex uint32 pkg syscall (windows-386), type CertChainPolicyStatus struct, Error uint32 pkg syscall (windows-386), type CertChainPolicyStatus struct, ExtraPolicyStatus uintptr pkg syscall (windows-386), type CertChainPolicyStatus struct, Size uint32 pkg syscall (windows-386), type CertContext struct pkg syscall (windows-386), type CertContext struct, CertInfo uintptr pkg syscall (windows-386), type CertContext struct, EncodedCert *uint8 pkg syscall (windows-386), type CertContext struct, EncodingType uint32 pkg syscall (windows-386), type CertContext struct, Length uint32 pkg syscall (windows-386), type CertContext struct, Store Handle pkg syscall (windows-386), type CertEnhKeyUsage struct pkg syscall (windows-386), type CertEnhKeyUsage struct, Length uint32 pkg syscall (windows-386), type CertEnhKeyUsage struct, UsageIdentifiers **uint8 pkg syscall (windows-386), type CertRevocationInfo struct pkg syscall (windows-386), type CertRevocationInfo struct, CrlInfo uintptr pkg syscall (windows-386), type CertRevocationInfo struct, FreshnessTime uint32 pkg syscall (windows-386), type CertRevocationInfo struct, HasFreshnessTime uint32 pkg syscall (windows-386), type CertRevocationInfo struct, OidSpecificInfo uintptr pkg syscall (windows-386), type CertRevocationInfo struct, RevocationOid *uint8 pkg syscall (windows-386), type CertRevocationInfo struct, RevocationResult uint32 pkg syscall (windows-386), type CertRevocationInfo struct, Size uint32 pkg syscall (windows-386), type CertSimpleChain struct pkg syscall (windows-386), type CertSimpleChain struct, Elements **CertChainElement pkg syscall (windows-386), type CertSimpleChain struct, HasRevocationFreshnessTime uint32 pkg syscall (windows-386), type CertSimpleChain struct, NumElements uint32 pkg syscall (windows-386), type CertSimpleChain struct, RevocationFreshnessTime uint32 pkg syscall (windows-386), type CertSimpleChain struct, Size uint32 pkg syscall (windows-386), type CertSimpleChain struct, TrustListInfo uintptr pkg syscall (windows-386), type CertSimpleChain struct, TrustStatus CertTrustStatus pkg syscall (windows-386), type CertTrustStatus struct pkg syscall (windows-386), type CertTrustStatus struct, ErrorStatus uint32 pkg syscall (windows-386), type CertTrustStatus struct, InfoStatus uint32 pkg syscall (windows-386), type CertUsageMatch struct pkg syscall (windows-386), type CertUsageMatch struct, Type uint32 pkg syscall (windows-386), type CertUsageMatch struct, Usage CertEnhKeyUsage pkg syscall (windows-386), type DLL struct pkg syscall (windows-386), type DLL struct, Handle Handle pkg syscall (windows-386), type DLL struct, Name string pkg syscall (windows-386), type DLLError struct pkg syscall (windows-386), type DLLError struct, Err error pkg syscall (windows-386), type DLLError struct, Msg string pkg syscall (windows-386), type DLLError struct, ObjName string pkg syscall (windows-386), type DNSMXData struct pkg syscall (windows-386), type DNSMXData struct, NameExchange *uint16 pkg syscall (windows-386), type DNSMXData struct, Pad uint16 pkg syscall (windows-386), type DNSMXData struct, Preference uint16 pkg syscall (windows-386), type DNSPTRData struct pkg syscall (windows-386), type DNSPTRData struct, Host *uint16 pkg syscall (windows-386), type DNSRecord struct pkg syscall (windows-386), type DNSRecord struct, Data [40]uint8 pkg syscall (windows-386), type DNSRecord struct, Dw uint32 pkg syscall (windows-386), type DNSRecord struct, Length uint16 pkg syscall (windows-386), type DNSRecord struct, Name *uint16 pkg syscall (windows-386), type DNSRecord struct, Next *DNSRecord pkg syscall (windows-386), type DNSRecord struct, Reserved uint32 pkg syscall (windows-386), type DNSRecord struct, Ttl uint32 pkg syscall (windows-386), type DNSRecord struct, Type uint16 pkg syscall (windows-386), type DNSSRVData struct pkg syscall (windows-386), type DNSSRVData struct, Pad uint16 pkg syscall (windows-386), type DNSSRVData struct, Port uint16 pkg syscall (windows-386), type DNSSRVData struct, Priority uint16 pkg syscall (windows-386), type DNSSRVData struct, Target *uint16 pkg syscall (windows-386), type DNSSRVData struct, Weight uint16 pkg syscall (windows-386), type DNSTXTData struct pkg syscall (windows-386), type DNSTXTData struct, StringArray [1]*uint16 pkg syscall (windows-386), type DNSTXTData struct, StringCount uint16 pkg syscall (windows-386), type FileNotifyInformation struct pkg syscall (windows-386), type FileNotifyInformation struct, Action uint32 pkg syscall (windows-386), type FileNotifyInformation struct, FileName uint16 pkg syscall (windows-386), type FileNotifyInformation struct, FileNameLength uint32 pkg syscall (windows-386), type FileNotifyInformation struct, NextEntryOffset uint32 pkg syscall (windows-386), type Filetime struct pkg syscall (windows-386), type Filetime struct, HighDateTime uint32 pkg syscall (windows-386), type Filetime struct, LowDateTime uint32 pkg syscall (windows-386), type Handle uintptr pkg syscall (windows-386), type Hostent struct pkg syscall (windows-386), type Hostent struct, AddrList **uint8 pkg syscall (windows-386), type Hostent struct, AddrType uint16 pkg syscall (windows-386), type Hostent struct, Aliases **uint8 pkg syscall (windows-386), type Hostent struct, Length uint16 pkg syscall (windows-386), type Hostent struct, Name *uint8 pkg syscall (windows-386), type InterfaceInfo struct pkg syscall (windows-386), type InterfaceInfo struct, Address SockaddrGen pkg syscall (windows-386), type InterfaceInfo struct, BroadcastAddress SockaddrGen pkg syscall (windows-386), type InterfaceInfo struct, Flags uint32 pkg syscall (windows-386), type InterfaceInfo struct, Netmask SockaddrGen pkg syscall (windows-386), type IpAdapterInfo struct pkg syscall (windows-386), type IpAdapterInfo struct, AdapterName [260]uint8 pkg syscall (windows-386), type IpAdapterInfo struct, Address [8]uint8 pkg syscall (windows-386), type IpAdapterInfo struct, AddressLength uint32 pkg syscall (windows-386), type IpAdapterInfo struct, ComboIndex uint32 pkg syscall (windows-386), type IpAdapterInfo struct, CurrentIpAddress *IpAddrString pkg syscall (windows-386), type IpAdapterInfo struct, Description [132]uint8 pkg syscall (windows-386), type IpAdapterInfo struct, DhcpEnabled uint32 pkg syscall (windows-386), type IpAdapterInfo struct, DhcpServer IpAddrString pkg syscall (windows-386), type IpAdapterInfo struct, GatewayList IpAddrString pkg syscall (windows-386), type IpAdapterInfo struct, HaveWins bool pkg syscall (windows-386), type IpAdapterInfo struct, Index uint32 pkg syscall (windows-386), type IpAdapterInfo struct, IpAddressList IpAddrString pkg syscall (windows-386), type IpAdapterInfo struct, LeaseExpires int64 pkg syscall (windows-386), type IpAdapterInfo struct, LeaseObtained int64 pkg syscall (windows-386), type IpAdapterInfo struct, Next *IpAdapterInfo pkg syscall (windows-386), type IpAdapterInfo struct, PrimaryWinsServer IpAddrString pkg syscall (windows-386), type IpAdapterInfo struct, SecondaryWinsServer IpAddrString pkg syscall (windows-386), type IpAdapterInfo struct, Type uint32 pkg syscall (windows-386), type IpAddrString struct pkg syscall (windows-386), type IpAddrString struct, Context uint32 pkg syscall (windows-386), type IpAddrString struct, IpAddress IpAddressString pkg syscall (windows-386), type IpAddrString struct, IpMask IpMaskString pkg syscall (windows-386), type IpAddrString struct, Next *IpAddrString pkg syscall (windows-386), type IpAddressString struct pkg syscall (windows-386), type IpAddressString struct, String [16]uint8 pkg syscall (windows-386), type IpMaskString struct pkg syscall (windows-386), type LazyDLL struct pkg syscall (windows-386), type LazyDLL struct, Name string pkg syscall (windows-386), type LazyProc struct pkg syscall (windows-386), type LazyProc struct, Name string pkg syscall (windows-386), type MibIfRow struct pkg syscall (windows-386), type MibIfRow struct, AdminStatus uint32 pkg syscall (windows-386), type MibIfRow struct, Descr [256]uint8 pkg syscall (windows-386), type MibIfRow struct, DescrLen uint32 pkg syscall (windows-386), type MibIfRow struct, InDiscards uint32 pkg syscall (windows-386), type MibIfRow struct, InErrors uint32 pkg syscall (windows-386), type MibIfRow struct, InNUcastPkts uint32 pkg syscall (windows-386), type MibIfRow struct, InOctets uint32 pkg syscall (windows-386), type MibIfRow struct, InUcastPkts uint32 pkg syscall (windows-386), type MibIfRow struct, InUnknownProtos uint32 pkg syscall (windows-386), type MibIfRow struct, Index uint32 pkg syscall (windows-386), type MibIfRow struct, LastChange uint32 pkg syscall (windows-386), type MibIfRow struct, Mtu uint32 pkg syscall (windows-386), type MibIfRow struct, Name [256]uint16 pkg syscall (windows-386), type MibIfRow struct, OperStatus uint32 pkg syscall (windows-386), type MibIfRow struct, OutDiscards uint32 pkg syscall (windows-386), type MibIfRow struct, OutErrors uint32 pkg syscall (windows-386), type MibIfRow struct, OutNUcastPkts uint32 pkg syscall (windows-386), type MibIfRow struct, OutOctets uint32 pkg syscall (windows-386), type MibIfRow struct, OutQLen uint32 pkg syscall (windows-386), type MibIfRow struct, OutUcastPkts uint32 pkg syscall (windows-386), type MibIfRow struct, PhysAddr [8]uint8 pkg syscall (windows-386), type MibIfRow struct, PhysAddrLen uint32 pkg syscall (windows-386), type MibIfRow struct, Speed uint32 pkg syscall (windows-386), type MibIfRow struct, Type uint32 pkg syscall (windows-386), type Overlapped struct pkg syscall (windows-386), type Overlapped struct, HEvent Handle pkg syscall (windows-386), type Overlapped struct, Internal uintptr pkg syscall (windows-386), type Overlapped struct, InternalHigh uintptr pkg syscall (windows-386), type Overlapped struct, Offset uint32 pkg syscall (windows-386), type Overlapped struct, OffsetHigh uint32 pkg syscall (windows-386), type Proc struct pkg syscall (windows-386), type Proc struct, Dll *DLL pkg syscall (windows-386), type Proc struct, Name string pkg syscall (windows-386), type ProcessInformation struct pkg syscall (windows-386), type ProcessInformation struct, Process Handle pkg syscall (windows-386), type ProcessInformation struct, ProcessId uint32 pkg syscall (windows-386), type ProcessInformation struct, Thread Handle pkg syscall (windows-386), type ProcessInformation struct, ThreadId uint32 pkg syscall (windows-386), type Protoent struct pkg syscall (windows-386), type Protoent struct, Aliases **uint8 pkg syscall (windows-386), type Protoent struct, Name *uint8 pkg syscall (windows-386), type Protoent struct, Proto uint16 pkg syscall (windows-386), type RawSockaddr struct, Data [14]int8 pkg syscall (windows-386), type RawSockaddr struct, Family uint16 pkg syscall (windows-386), type RawSockaddrAny struct, Pad [96]int8 pkg syscall (windows-386), type RawSockaddrInet4 struct, Family uint16 pkg syscall (windows-386), type RawSockaddrInet4 struct, Zero [8]uint8 pkg syscall (windows-386), type Rusage struct, CreationTime Filetime pkg syscall (windows-386), type Rusage struct, ExitTime Filetime pkg syscall (windows-386), type Rusage struct, KernelTime Filetime pkg syscall (windows-386), type Rusage struct, UserTime Filetime pkg syscall (windows-386), type SID struct pkg syscall (windows-386), type SIDAndAttributes struct pkg syscall (windows-386), type SIDAndAttributes struct, Attributes uint32 pkg syscall (windows-386), type SIDAndAttributes struct, Sid *SID pkg syscall (windows-386), type SSLExtraCertChainPolicyPara struct pkg syscall (windows-386), type SSLExtraCertChainPolicyPara struct, AuthType uint32 pkg syscall (windows-386), type SSLExtraCertChainPolicyPara struct, Checks uint32 pkg syscall (windows-386), type SSLExtraCertChainPolicyPara struct, ServerName *uint16 pkg syscall (windows-386), type SSLExtraCertChainPolicyPara struct, Size uint32 pkg syscall (windows-386), type SecurityAttributes struct pkg syscall (windows-386), type SecurityAttributes struct, InheritHandle uint32 pkg syscall (windows-386), type SecurityAttributes struct, Length uint32 pkg syscall (windows-386), type SecurityAttributes struct, SecurityDescriptor uintptr pkg syscall (windows-386), type Servent struct pkg syscall (windows-386), type Servent struct, Aliases **uint8 pkg syscall (windows-386), type Servent struct, Name *uint8 pkg syscall (windows-386), type Servent struct, Port uint16 pkg syscall (windows-386), type Servent struct, Proto *uint8 pkg syscall (windows-386), type SockaddrGen [24]uint8 pkg syscall (windows-386), type StartupInfo struct pkg syscall (windows-386), type StartupInfo struct, Cb uint32 pkg syscall (windows-386), type StartupInfo struct, Desktop *uint16 pkg syscall (windows-386), type StartupInfo struct, FillAttribute uint32 pkg syscall (windows-386), type StartupInfo struct, Flags uint32 pkg syscall (windows-386), type StartupInfo struct, ShowWindow uint16 pkg syscall (windows-386), type StartupInfo struct, StdErr Handle pkg syscall (windows-386), type StartupInfo struct, StdInput Handle pkg syscall (windows-386), type StartupInfo struct, StdOutput Handle pkg syscall (windows-386), type StartupInfo struct, Title *uint16 pkg syscall (windows-386), type StartupInfo struct, X uint32 pkg syscall (windows-386), type StartupInfo struct, XCountChars uint32 pkg syscall (windows-386), type StartupInfo struct, XSize uint32 pkg syscall (windows-386), type StartupInfo struct, Y uint32 pkg syscall (windows-386), type StartupInfo struct, YCountChars uint32 pkg syscall (windows-386), type StartupInfo struct, YSize uint32 pkg syscall (windows-386), type SysProcAttr struct, CmdLine string pkg syscall (windows-386), type SysProcAttr struct, HideWindow bool pkg syscall (windows-386), type Systemtime struct pkg syscall (windows-386), type Systemtime struct, Day uint16 pkg syscall (windows-386), type Systemtime struct, DayOfWeek uint16 pkg syscall (windows-386), type Systemtime struct, Hour uint16 pkg syscall (windows-386), type Systemtime struct, Milliseconds uint16 pkg syscall (windows-386), type Systemtime struct, Minute uint16 pkg syscall (windows-386), type Systemtime struct, Month uint16 pkg syscall (windows-386), type Systemtime struct, Second uint16 pkg syscall (windows-386), type Systemtime struct, Year uint16 pkg syscall (windows-386), type Timespec struct, Nsec int64 pkg syscall (windows-386), type Timespec struct, Sec int64 pkg syscall (windows-386), type Timeval struct, Sec int32 pkg syscall (windows-386), type Timeval struct, Usec int32 pkg syscall (windows-386), type Timezoneinformation struct pkg syscall (windows-386), type Timezoneinformation struct, Bias int32 pkg syscall (windows-386), type Timezoneinformation struct, DaylightBias int32 pkg syscall (windows-386), type Timezoneinformation struct, DaylightDate Systemtime pkg syscall (windows-386), type Timezoneinformation struct, DaylightName [32]uint16 pkg syscall (windows-386), type Timezoneinformation struct, StandardBias int32 pkg syscall (windows-386), type Timezoneinformation struct, StandardDate Systemtime pkg syscall (windows-386), type Timezoneinformation struct, StandardName [32]uint16 pkg syscall (windows-386), type Token uintptr pkg syscall (windows-386), type Tokenprimarygroup struct pkg syscall (windows-386), type Tokenprimarygroup struct, PrimaryGroup *SID pkg syscall (windows-386), type Tokenuser struct pkg syscall (windows-386), type Tokenuser struct, User SIDAndAttributes pkg syscall (windows-386), type TransmitFileBuffers struct pkg syscall (windows-386), type TransmitFileBuffers struct, Head uintptr pkg syscall (windows-386), type TransmitFileBuffers struct, HeadLength uint32 pkg syscall (windows-386), type TransmitFileBuffers struct, Tail uintptr pkg syscall (windows-386), type TransmitFileBuffers struct, TailLength uint32 pkg syscall (windows-386), type UserInfo10 struct pkg syscall (windows-386), type UserInfo10 struct, Comment *uint16 pkg syscall (windows-386), type UserInfo10 struct, FullName *uint16 pkg syscall (windows-386), type UserInfo10 struct, Name *uint16 pkg syscall (windows-386), type UserInfo10 struct, UsrComment *uint16 pkg syscall (windows-386), type WSABuf struct pkg syscall (windows-386), type WSABuf struct, Buf *uint8 pkg syscall (windows-386), type WSABuf struct, Len uint32 pkg syscall (windows-386), type WSAData struct pkg syscall (windows-386), type WSAData struct, Description [257]uint8 pkg syscall (windows-386), type WSAData struct, HighVersion uint16 pkg syscall (windows-386), type WSAData struct, MaxSockets uint16 pkg syscall (windows-386), type WSAData struct, MaxUdpDg uint16 pkg syscall (windows-386), type WSAData struct, SystemStatus [129]uint8 pkg syscall (windows-386), type WSAData struct, VendorInfo *uint8 pkg syscall (windows-386), type WSAData struct, Version uint16 pkg syscall (windows-386), type WaitStatus struct pkg syscall (windows-386), type WaitStatus struct, ExitCode uint32 pkg syscall (windows-386), type Win32FileAttributeData struct pkg syscall (windows-386), type Win32FileAttributeData struct, CreationTime Filetime pkg syscall (windows-386), type Win32FileAttributeData struct, FileAttributes uint32 pkg syscall (windows-386), type Win32FileAttributeData struct, FileSizeHigh uint32 pkg syscall (windows-386), type Win32FileAttributeData struct, FileSizeLow uint32 pkg syscall (windows-386), type Win32FileAttributeData struct, LastAccessTime Filetime pkg syscall (windows-386), type Win32FileAttributeData struct, LastWriteTime Filetime pkg syscall (windows-386), type Win32finddata struct pkg syscall (windows-386), type Win32finddata struct, AlternateFileName [13]uint16 pkg syscall (windows-386), type Win32finddata struct, CreationTime Filetime pkg syscall (windows-386), type Win32finddata struct, FileAttributes uint32 pkg syscall (windows-386), type Win32finddata struct, FileName [259]uint16 pkg syscall (windows-386), type Win32finddata struct, FileSizeHigh uint32 pkg syscall (windows-386), type Win32finddata struct, FileSizeLow uint32 pkg syscall (windows-386), type Win32finddata struct, LastAccessTime Filetime pkg syscall (windows-386), type Win32finddata struct, LastWriteTime Filetime pkg syscall (windows-386), type Win32finddata struct, Reserved0 uint32 pkg syscall (windows-386), type Win32finddata struct, Reserved1 uint32 pkg syscall (windows-386), var OID_PKIX_KP_SERVER_AUTH []uint8 pkg syscall (windows-386), var OID_SERVER_GATED_CRYPTO []uint8 pkg syscall (windows-386), var OID_SGC_NETSCAPE []uint8 pkg syscall (windows-386), var Stderr Handle pkg syscall (windows-386), var Stdin Handle pkg syscall (windows-386), var Stdout Handle pkg syscall (windows-amd64), const AF_NETBIOS ideal-int pkg syscall (windows-amd64), const APPLICATION_ERROR ideal-int pkg syscall (windows-amd64), const AUTHTYPE_CLIENT ideal-int pkg syscall (windows-amd64), const AUTHTYPE_SERVER ideal-int pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_AUTHENTICODE ideal-int pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_AUTHENTICODE_TS ideal-int pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_BASE ideal-int pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ideal-int pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_EV ideal-int pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_MICROSOFT_ROOT ideal-int pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_NT_AUTH ideal-int pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_SSL ideal-int pkg syscall (windows-amd64), const CERT_E_CN_NO_MATCH ideal-int pkg syscall (windows-amd64), const CERT_E_EXPIRED ideal-int pkg syscall (windows-amd64), const CERT_E_PURPOSE ideal-int pkg syscall (windows-amd64), const CERT_E_ROLE ideal-int pkg syscall (windows-amd64), const CERT_E_UNTRUSTEDROOT ideal-int pkg syscall (windows-amd64), const CERT_STORE_ADD_ALWAYS ideal-int pkg syscall (windows-amd64), const CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG ideal-int pkg syscall (windows-amd64), const CERT_STORE_PROV_MEMORY ideal-int pkg syscall (windows-amd64), const CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT ideal-int pkg syscall (windows-amd64), const CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT ideal-int pkg syscall (windows-amd64), const CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT ideal-int pkg syscall (windows-amd64), const CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT ideal-int pkg syscall (windows-amd64), const CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT ideal-int pkg syscall (windows-amd64), const CERT_TRUST_INVALID_BASIC_CONSTRAINTS ideal-int pkg syscall (windows-amd64), const CERT_TRUST_INVALID_EXTENSION ideal-int pkg syscall (windows-amd64), const CERT_TRUST_INVALID_NAME_CONSTRAINTS ideal-int pkg syscall (windows-amd64), const CERT_TRUST_INVALID_POLICY_CONSTRAINTS ideal-int pkg syscall (windows-amd64), const CERT_TRUST_IS_CYCLIC ideal-int pkg syscall (windows-amd64), const CERT_TRUST_IS_EXPLICIT_DISTRUST ideal-int pkg syscall (windows-amd64), const CERT_TRUST_IS_NOT_SIGNATURE_VALID ideal-int pkg syscall (windows-amd64), const CERT_TRUST_IS_NOT_TIME_VALID ideal-int pkg syscall (windows-amd64), const CERT_TRUST_IS_NOT_VALID_FOR_USAGE ideal-int pkg syscall (windows-amd64), const CERT_TRUST_IS_OFFLINE_REVOCATION ideal-int pkg syscall (windows-amd64), const CERT_TRUST_IS_REVOKED ideal-int pkg syscall (windows-amd64), const CERT_TRUST_IS_UNTRUSTED_ROOT ideal-int pkg syscall (windows-amd64), const CERT_TRUST_NO_ERROR ideal-int pkg syscall (windows-amd64), const CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY ideal-int pkg syscall (windows-amd64), const CERT_TRUST_REVOCATION_STATUS_UNKNOWN ideal-int pkg syscall (windows-amd64), const CREATE_ALWAYS ideal-int pkg syscall (windows-amd64), const CREATE_NEW ideal-int pkg syscall (windows-amd64), const CREATE_UNICODE_ENVIRONMENT ideal-int pkg syscall (windows-amd64), const CRYPT_DEFAULT_CONTAINER_OPTIONAL ideal-int pkg syscall (windows-amd64), const CRYPT_DELETEKEYSET ideal-int pkg syscall (windows-amd64), const CRYPT_MACHINE_KEYSET ideal-int pkg syscall (windows-amd64), const CRYPT_NEWKEYSET ideal-int pkg syscall (windows-amd64), const CRYPT_SILENT ideal-int pkg syscall (windows-amd64), const CRYPT_VERIFYCONTEXT ideal-int pkg syscall (windows-amd64), const DNS_TYPE_A ideal-int pkg syscall (windows-amd64), const DNS_TYPE_A6 ideal-int pkg syscall (windows-amd64), const DNS_TYPE_AAAA ideal-int pkg syscall (windows-amd64), const DNS_TYPE_ADDRS ideal-int pkg syscall (windows-amd64), const DNS_TYPE_AFSDB ideal-int pkg syscall (windows-amd64), const DNS_TYPE_ALL ideal-int pkg syscall (windows-amd64), const DNS_TYPE_ANY ideal-int pkg syscall (windows-amd64), const DNS_TYPE_ATMA ideal-int pkg syscall (windows-amd64), const DNS_TYPE_AXFR ideal-int pkg syscall (windows-amd64), const DNS_TYPE_CERT ideal-int pkg syscall (windows-amd64), const DNS_TYPE_CNAME ideal-int pkg syscall (windows-amd64), const DNS_TYPE_DHCID ideal-int pkg syscall (windows-amd64), const DNS_TYPE_DNAME ideal-int pkg syscall (windows-amd64), const DNS_TYPE_DNSKEY ideal-int pkg syscall (windows-amd64), const DNS_TYPE_DS ideal-int pkg syscall (windows-amd64), const DNS_TYPE_EID ideal-int pkg syscall (windows-amd64), const DNS_TYPE_GID ideal-int pkg syscall (windows-amd64), const DNS_TYPE_GPOS ideal-int pkg syscall (windows-amd64), const DNS_TYPE_HINFO ideal-int pkg syscall (windows-amd64), const DNS_TYPE_ISDN ideal-int pkg syscall (windows-amd64), const DNS_TYPE_IXFR ideal-int pkg syscall (windows-amd64), const DNS_TYPE_KEY ideal-int pkg syscall (windows-amd64), const DNS_TYPE_KX ideal-int pkg syscall (windows-amd64), const DNS_TYPE_LOC ideal-int pkg syscall (windows-amd64), const DNS_TYPE_MAILA ideal-int pkg syscall (windows-amd64), const DNS_TYPE_MAILB ideal-int pkg syscall (windows-amd64), const DNS_TYPE_MB ideal-int pkg syscall (windows-amd64), const DNS_TYPE_MD ideal-int pkg syscall (windows-amd64), const DNS_TYPE_MF ideal-int pkg syscall (windows-amd64), const DNS_TYPE_MG ideal-int pkg syscall (windows-amd64), const DNS_TYPE_MINFO ideal-int pkg syscall (windows-amd64), const DNS_TYPE_MR ideal-int pkg syscall (windows-amd64), const DNS_TYPE_MX ideal-int pkg syscall (windows-amd64), const DNS_TYPE_NAPTR ideal-int pkg syscall (windows-amd64), const DNS_TYPE_NBSTAT ideal-int pkg syscall (windows-amd64), const DNS_TYPE_NIMLOC ideal-int pkg syscall (windows-amd64), const DNS_TYPE_NS ideal-int pkg syscall (windows-amd64), const DNS_TYPE_NSAP ideal-int pkg syscall (windows-amd64), const DNS_TYPE_NSAPPTR ideal-int pkg syscall (windows-amd64), const DNS_TYPE_NSEC ideal-int pkg syscall (windows-amd64), const DNS_TYPE_NULL ideal-int pkg syscall (windows-amd64), const DNS_TYPE_NXT ideal-int pkg syscall (windows-amd64), const DNS_TYPE_OPT ideal-int pkg syscall (windows-amd64), const DNS_TYPE_PTR ideal-int pkg syscall (windows-amd64), const DNS_TYPE_PX ideal-int pkg syscall (windows-amd64), const DNS_TYPE_RP ideal-int pkg syscall (windows-amd64), const DNS_TYPE_RRSIG ideal-int pkg syscall (windows-amd64), const DNS_TYPE_RT ideal-int pkg syscall (windows-amd64), const DNS_TYPE_SIG ideal-int pkg syscall (windows-amd64), const DNS_TYPE_SINK ideal-int pkg syscall (windows-amd64), const DNS_TYPE_SOA ideal-int pkg syscall (windows-amd64), const DNS_TYPE_SRV ideal-int pkg syscall (windows-amd64), const DNS_TYPE_TEXT ideal-int pkg syscall (windows-amd64), const DNS_TYPE_TKEY ideal-int pkg syscall (windows-amd64), const DNS_TYPE_TSIG ideal-int pkg syscall (windows-amd64), const DNS_TYPE_UID ideal-int pkg syscall (windows-amd64), const DNS_TYPE_UINFO ideal-int pkg syscall (windows-amd64), const DNS_TYPE_UNSPEC ideal-int pkg syscall (windows-amd64), const DNS_TYPE_WINS ideal-int pkg syscall (windows-amd64), const DNS_TYPE_WINSR ideal-int pkg syscall (windows-amd64), const DNS_TYPE_WKS ideal-int pkg syscall (windows-amd64), const DNS_TYPE_X25 ideal-int pkg syscall (windows-amd64), const DUPLICATE_CLOSE_SOURCE ideal-int pkg syscall (windows-amd64), const DUPLICATE_SAME_ACCESS ideal-int pkg syscall (windows-amd64), const EADV Errno pkg syscall (windows-amd64), const EBADE Errno pkg syscall (windows-amd64), const EBADFD Errno pkg syscall (windows-amd64), const EBADMSG Errno pkg syscall (windows-amd64), const EBADR Errno pkg syscall (windows-amd64), const EBADRQC Errno pkg syscall (windows-amd64), const EBADSLT Errno pkg syscall (windows-amd64), const EBFONT Errno pkg syscall (windows-amd64), const ECHRNG Errno pkg syscall (windows-amd64), const ECOMM Errno pkg syscall (windows-amd64), const EDEADLOCK Errno pkg syscall (windows-amd64), const EDOTDOT Errno pkg syscall (windows-amd64), const EISNAM Errno pkg syscall (windows-amd64), const EKEYEXPIRED Errno pkg syscall (windows-amd64), const EKEYREJECTED Errno pkg syscall (windows-amd64), const EKEYREVOKED Errno pkg syscall (windows-amd64), const EL2HLT Errno pkg syscall (windows-amd64), const EL2NSYNC Errno pkg syscall (windows-amd64), const EL3HLT Errno pkg syscall (windows-amd64), const EL3RST Errno pkg syscall (windows-amd64), const ELIBACC Errno pkg syscall (windows-amd64), const ELIBBAD Errno pkg syscall (windows-amd64), const ELIBEXEC Errno pkg syscall (windows-amd64), const ELIBMAX Errno pkg syscall (windows-amd64), const ELIBSCN Errno pkg syscall (windows-amd64), const ELNRNG Errno pkg syscall (windows-amd64), const EMEDIUMTYPE Errno pkg syscall (windows-amd64), const EMULTIHOP Errno pkg syscall (windows-amd64), const ENAVAIL Errno pkg syscall (windows-amd64), const ENOANO Errno pkg syscall (windows-amd64), const ENOCSI Errno pkg syscall (windows-amd64), const ENODATA Errno pkg syscall (windows-amd64), const ENOKEY Errno pkg syscall (windows-amd64), const ENOLINK Errno pkg syscall (windows-amd64), const ENOMEDIUM Errno pkg syscall (windows-amd64), const ENONET Errno pkg syscall (windows-amd64), const ENOPKG Errno pkg syscall (windows-amd64), const ENOSR Errno pkg syscall (windows-amd64), const ENOSTR Errno pkg syscall (windows-amd64), const ENOTNAM Errno pkg syscall (windows-amd64), const ENOTRECOVERABLE Errno pkg syscall (windows-amd64), const ENOTUNIQ Errno pkg syscall (windows-amd64), const EOWNERDEAD Errno pkg syscall (windows-amd64), const EPROTO Errno pkg syscall (windows-amd64), const EREMCHG Errno pkg syscall (windows-amd64), const EREMOTEIO Errno pkg syscall (windows-amd64), const ERESTART Errno pkg syscall (windows-amd64), const ERROR_ACCESS_DENIED Errno pkg syscall (windows-amd64), const ERROR_ALREADY_EXISTS Errno pkg syscall (windows-amd64), const ERROR_BROKEN_PIPE Errno pkg syscall (windows-amd64), const ERROR_BUFFER_OVERFLOW Errno pkg syscall (windows-amd64), const ERROR_ENVVAR_NOT_FOUND Errno pkg syscall (windows-amd64), const ERROR_FILE_EXISTS Errno pkg syscall (windows-amd64), const ERROR_FILE_NOT_FOUND Errno pkg syscall (windows-amd64), const ERROR_INSUFFICIENT_BUFFER Errno pkg syscall (windows-amd64), const ERROR_IO_PENDING Errno pkg syscall (windows-amd64), const ERROR_MOD_NOT_FOUND Errno pkg syscall (windows-amd64), const ERROR_NO_MORE_FILES Errno pkg syscall (windows-amd64), const ERROR_OPERATION_ABORTED Errno pkg syscall (windows-amd64), const ERROR_PATH_NOT_FOUND Errno pkg syscall (windows-amd64), const ERROR_PROC_NOT_FOUND Errno pkg syscall (windows-amd64), const ESRMNT Errno pkg syscall (windows-amd64), const ESTRPIPE Errno pkg syscall (windows-amd64), const ETIME Errno pkg syscall (windows-amd64), const EUCLEAN Errno pkg syscall (windows-amd64), const EUNATCH Errno pkg syscall (windows-amd64), const EWINDOWS Errno pkg syscall (windows-amd64), const EXFULL Errno pkg syscall (windows-amd64), const FILE_ACTION_ADDED ideal-int pkg syscall (windows-amd64), const FILE_ACTION_MODIFIED ideal-int pkg syscall (windows-amd64), const FILE_ACTION_REMOVED ideal-int pkg syscall (windows-amd64), const FILE_ACTION_RENAMED_NEW_NAME ideal-int pkg syscall (windows-amd64), const FILE_ACTION_RENAMED_OLD_NAME ideal-int pkg syscall (windows-amd64), const FILE_APPEND_DATA ideal-int pkg syscall (windows-amd64), const FILE_ATTRIBUTE_ARCHIVE ideal-int pkg syscall (windows-amd64), const FILE_ATTRIBUTE_DIRECTORY ideal-int pkg syscall (windows-amd64), const FILE_ATTRIBUTE_HIDDEN ideal-int pkg syscall (windows-amd64), const FILE_ATTRIBUTE_NORMAL ideal-int pkg syscall (windows-amd64), const FILE_ATTRIBUTE_READONLY ideal-int pkg syscall (windows-amd64), const FILE_ATTRIBUTE_SYSTEM ideal-int pkg syscall (windows-amd64), const FILE_BEGIN ideal-int pkg syscall (windows-amd64), const FILE_CURRENT ideal-int pkg syscall (windows-amd64), const FILE_END ideal-int pkg syscall (windows-amd64), const FILE_FLAG_BACKUP_SEMANTICS ideal-int pkg syscall (windows-amd64), const FILE_FLAG_OVERLAPPED ideal-int pkg syscall (windows-amd64), const FILE_LIST_DIRECTORY ideal-int pkg syscall (windows-amd64), const FILE_MAP_COPY ideal-int pkg syscall (windows-amd64), const FILE_MAP_EXECUTE ideal-int pkg syscall (windows-amd64), const FILE_MAP_READ ideal-int pkg syscall (windows-amd64), const FILE_MAP_WRITE ideal-int pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_ATTRIBUTES ideal-int pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_CREATION ideal-int pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_DIR_NAME ideal-int pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_FILE_NAME ideal-int pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_LAST_ACCESS ideal-int pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_LAST_WRITE ideal-int pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_SIZE ideal-int pkg syscall (windows-amd64), const FILE_SHARE_DELETE ideal-int pkg syscall (windows-amd64), const FILE_SHARE_READ ideal-int pkg syscall (windows-amd64), const FILE_SHARE_WRITE ideal-int pkg syscall (windows-amd64), const FILE_TYPE_CHAR ideal-int pkg syscall (windows-amd64), const FILE_TYPE_DISK ideal-int pkg syscall (windows-amd64), const FILE_TYPE_PIPE ideal-int pkg syscall (windows-amd64), const FILE_TYPE_REMOTE ideal-int pkg syscall (windows-amd64), const FILE_TYPE_UNKNOWN ideal-int pkg syscall (windows-amd64), const FILE_WRITE_ATTRIBUTES ideal-int pkg syscall (windows-amd64), const FORMAT_MESSAGE_ALLOCATE_BUFFER ideal-int pkg syscall (windows-amd64), const FORMAT_MESSAGE_ARGUMENT_ARRAY ideal-int pkg syscall (windows-amd64), const FORMAT_MESSAGE_FROM_HMODULE ideal-int pkg syscall (windows-amd64), const FORMAT_MESSAGE_FROM_STRING ideal-int pkg syscall (windows-amd64), const FORMAT_MESSAGE_FROM_SYSTEM ideal-int pkg syscall (windows-amd64), const FORMAT_MESSAGE_IGNORE_INSERTS ideal-int pkg syscall (windows-amd64), const FORMAT_MESSAGE_MAX_WIDTH_MASK ideal-int pkg syscall (windows-amd64), const GENERIC_ALL ideal-int pkg syscall (windows-amd64), const GENERIC_EXECUTE ideal-int pkg syscall (windows-amd64), const GENERIC_READ ideal-int pkg syscall (windows-amd64), const GENERIC_WRITE ideal-int pkg syscall (windows-amd64), const GetFileExInfoStandard ideal-int pkg syscall (windows-amd64), const GetFileExMaxInfoLevel ideal-int pkg syscall (windows-amd64), const HANDLE_FLAG_INHERIT ideal-int pkg syscall (windows-amd64), const HKEY_CLASSES_ROOT ideal-int pkg syscall (windows-amd64), const HKEY_CURRENT_CONFIG ideal-int pkg syscall (windows-amd64), const HKEY_CURRENT_USER ideal-int pkg syscall (windows-amd64), const HKEY_DYN_DATA ideal-int pkg syscall (windows-amd64), const HKEY_LOCAL_MACHINE ideal-int pkg syscall (windows-amd64), const HKEY_PERFORMANCE_DATA ideal-int pkg syscall (windows-amd64), const HKEY_USERS ideal-int pkg syscall (windows-amd64), const IFF_POINTTOPOINT ideal-int pkg syscall (windows-amd64), const IGNORE ideal-int pkg syscall (windows-amd64), const INFINITE ideal-int pkg syscall (windows-amd64), const INVALID_FILE_ATTRIBUTES ideal-int pkg syscall (windows-amd64), const InvalidHandle Handle pkg syscall (windows-amd64), const KEY_ALL_ACCESS ideal-int pkg syscall (windows-amd64), const KEY_CREATE_LINK ideal-int pkg syscall (windows-amd64), const KEY_CREATE_SUB_KEY ideal-int pkg syscall (windows-amd64), const KEY_ENUMERATE_SUB_KEYS ideal-int pkg syscall (windows-amd64), const KEY_EXECUTE ideal-int pkg syscall (windows-amd64), const KEY_NOTIFY ideal-int pkg syscall (windows-amd64), const KEY_QUERY_VALUE ideal-int pkg syscall (windows-amd64), const KEY_READ ideal-int pkg syscall (windows-amd64), const KEY_SET_VALUE ideal-int pkg syscall (windows-amd64), const KEY_WOW64_32KEY ideal-int pkg syscall (windows-amd64), const KEY_WOW64_64KEY ideal-int pkg syscall (windows-amd64), const KEY_WRITE ideal-int pkg syscall (windows-amd64), const LANG_ENGLISH ideal-int pkg syscall (windows-amd64), const MAXLEN_IFDESCR ideal-int pkg syscall (windows-amd64), const MAXLEN_PHYSADDR ideal-int pkg syscall (windows-amd64), const MAX_ADAPTER_ADDRESS_LENGTH ideal-int pkg syscall (windows-amd64), const MAX_ADAPTER_DESCRIPTION_LENGTH ideal-int pkg syscall (windows-amd64), const MAX_ADAPTER_NAME_LENGTH ideal-int pkg syscall (windows-amd64), const MAX_COMPUTERNAME_LENGTH ideal-int pkg syscall (windows-amd64), const MAX_INTERFACE_NAME_LEN ideal-int pkg syscall (windows-amd64), const MAX_LONG_PATH ideal-int pkg syscall (windows-amd64), const MAX_PATH ideal-int pkg syscall (windows-amd64), const MaxTokenInfoClass ideal-int pkg syscall (windows-amd64), const NameCanonical ideal-int pkg syscall (windows-amd64), const NameCanonicalEx ideal-int pkg syscall (windows-amd64), const NameDisplay ideal-int pkg syscall (windows-amd64), const NameDnsDomain ideal-int pkg syscall (windows-amd64), const NameFullyQualifiedDN ideal-int pkg syscall (windows-amd64), const NameSamCompatible ideal-int pkg syscall (windows-amd64), const NameServicePrincipal ideal-int pkg syscall (windows-amd64), const NameUniqueId ideal-int pkg syscall (windows-amd64), const NameUnknown ideal-int pkg syscall (windows-amd64), const NameUserPrincipal ideal-int pkg syscall (windows-amd64), const OPEN_ALWAYS ideal-int pkg syscall (windows-amd64), const OPEN_EXISTING ideal-int pkg syscall (windows-amd64), const PAGE_EXECUTE_READ ideal-int pkg syscall (windows-amd64), const PAGE_EXECUTE_READWRITE ideal-int pkg syscall (windows-amd64), const PAGE_EXECUTE_WRITECOPY ideal-int pkg syscall (windows-amd64), const PAGE_READONLY ideal-int pkg syscall (windows-amd64), const PAGE_READWRITE ideal-int pkg syscall (windows-amd64), const PAGE_WRITECOPY ideal-int pkg syscall (windows-amd64), const PKCS_7_ASN_ENCODING ideal-int pkg syscall (windows-amd64), const PROCESS_QUERY_INFORMATION ideal-int pkg syscall (windows-amd64), const PROV_DH_SCHANNEL ideal-int pkg syscall (windows-amd64), const PROV_DSS ideal-int pkg syscall (windows-amd64), const PROV_DSS_DH ideal-int pkg syscall (windows-amd64), const PROV_EC_ECDSA_FULL ideal-int pkg syscall (windows-amd64), const PROV_EC_ECDSA_SIG ideal-int pkg syscall (windows-amd64), const PROV_EC_ECNRA_FULL ideal-int pkg syscall (windows-amd64), const PROV_EC_ECNRA_SIG ideal-int pkg syscall (windows-amd64), const PROV_FORTEZZA ideal-int pkg syscall (windows-amd64), const PROV_INTEL_SEC ideal-int pkg syscall (windows-amd64), const PROV_MS_EXCHANGE ideal-int pkg syscall (windows-amd64), const PROV_REPLACE_OWF ideal-int pkg syscall (windows-amd64), const PROV_RNG ideal-int pkg syscall (windows-amd64), const PROV_RSA_AES ideal-int pkg syscall (windows-amd64), const PROV_RSA_FULL ideal-int pkg syscall (windows-amd64), const PROV_RSA_SCHANNEL ideal-int pkg syscall (windows-amd64), const PROV_RSA_SIG ideal-int pkg syscall (windows-amd64), const PROV_SPYRUS_LYNKS ideal-int pkg syscall (windows-amd64), const PROV_SSL ideal-int pkg syscall (windows-amd64), const REG_BINARY ideal-int pkg syscall (windows-amd64), const REG_DWORD ideal-int pkg syscall (windows-amd64), const REG_DWORD_BIG_ENDIAN ideal-int pkg syscall (windows-amd64), const REG_DWORD_LITTLE_ENDIAN ideal-int pkg syscall (windows-amd64), const REG_EXPAND_SZ ideal-int pkg syscall (windows-amd64), const REG_FULL_RESOURCE_DESCRIPTOR ideal-int pkg syscall (windows-amd64), const REG_LINK ideal-int pkg syscall (windows-amd64), const REG_MULTI_SZ ideal-int pkg syscall (windows-amd64), const REG_NONE ideal-int pkg syscall (windows-amd64), const REG_QWORD ideal-int pkg syscall (windows-amd64), const REG_QWORD_LITTLE_ENDIAN ideal-int pkg syscall (windows-amd64), const REG_RESOURCE_LIST ideal-int pkg syscall (windows-amd64), const REG_RESOURCE_REQUIREMENTS_LIST ideal-int pkg syscall (windows-amd64), const REG_SZ ideal-int pkg syscall (windows-amd64), const SIO_GET_INTERFACE_LIST ideal-int pkg syscall (windows-amd64), const SO_UPDATE_ACCEPT_CONTEXT ideal-int pkg syscall (windows-amd64), const STANDARD_RIGHTS_ALL ideal-int pkg syscall (windows-amd64), const STANDARD_RIGHTS_EXECUTE ideal-int pkg syscall (windows-amd64), const STANDARD_RIGHTS_READ ideal-int pkg syscall (windows-amd64), const STANDARD_RIGHTS_REQUIRED ideal-int pkg syscall (windows-amd64), const STANDARD_RIGHTS_WRITE ideal-int pkg syscall (windows-amd64), const STARTF_USESHOWWINDOW ideal-int pkg syscall (windows-amd64), const STARTF_USESTDHANDLES ideal-int pkg syscall (windows-amd64), const STD_ERROR_HANDLE ideal-int pkg syscall (windows-amd64), const STD_INPUT_HANDLE ideal-int pkg syscall (windows-amd64), const STD_OUTPUT_HANDLE ideal-int pkg syscall (windows-amd64), const SUBLANG_ENGLISH_US ideal-int pkg syscall (windows-amd64), const SW_FORCEMINIMIZE ideal-int pkg syscall (windows-amd64), const SW_HIDE ideal-int pkg syscall (windows-amd64), const SW_MAXIMIZE ideal-int pkg syscall (windows-amd64), const SW_MINIMIZE ideal-int pkg syscall (windows-amd64), const SW_NORMAL ideal-int pkg syscall (windows-amd64), const SW_RESTORE ideal-int pkg syscall (windows-amd64), const SW_SHOW ideal-int pkg syscall (windows-amd64), const SW_SHOWDEFAULT ideal-int pkg syscall (windows-amd64), const SW_SHOWMAXIMIZED ideal-int pkg syscall (windows-amd64), const SW_SHOWMINIMIZED ideal-int pkg syscall (windows-amd64), const SW_SHOWMINNOACTIVE ideal-int pkg syscall (windows-amd64), const SW_SHOWNA ideal-int pkg syscall (windows-amd64), const SW_SHOWNOACTIVATE ideal-int pkg syscall (windows-amd64), const SW_SHOWNORMAL ideal-int pkg syscall (windows-amd64), const SYNCHRONIZE ideal-int pkg syscall (windows-amd64), const S_IWRITE ideal-int pkg syscall (windows-amd64), const SidTypeAlias ideal-int pkg syscall (windows-amd64), const SidTypeComputer ideal-int pkg syscall (windows-amd64), const SidTypeDeletedAccount ideal-int pkg syscall (windows-amd64), const SidTypeDomain ideal-int pkg syscall (windows-amd64), const SidTypeGroup ideal-int pkg syscall (windows-amd64), const SidTypeInvalid ideal-int pkg syscall (windows-amd64), const SidTypeLabel ideal-int pkg syscall (windows-amd64), const SidTypeUnknown ideal-int pkg syscall (windows-amd64), const SidTypeUser ideal-int pkg syscall (windows-amd64), const SidTypeWellKnownGroup ideal-int pkg syscall (windows-amd64), const TF_DISCONNECT ideal-int pkg syscall (windows-amd64), const TF_REUSE_SOCKET ideal-int pkg syscall (windows-amd64), const TF_USE_DEFAULT_WORKER ideal-int pkg syscall (windows-amd64), const TF_USE_KERNEL_APC ideal-int pkg syscall (windows-amd64), const TF_USE_SYSTEM_THREAD ideal-int pkg syscall (windows-amd64), const TF_WRITE_BEHIND ideal-int pkg syscall (windows-amd64), const TIME_ZONE_ID_DAYLIGHT ideal-int pkg syscall (windows-amd64), const TIME_ZONE_ID_STANDARD ideal-int pkg syscall (windows-amd64), const TIME_ZONE_ID_UNKNOWN ideal-int pkg syscall (windows-amd64), const TOKEN_ADJUST_DEFAULT ideal-int pkg syscall (windows-amd64), const TOKEN_ADJUST_GROUPS ideal-int pkg syscall (windows-amd64), const TOKEN_ADJUST_PRIVILEGES ideal-int pkg syscall (windows-amd64), const TOKEN_ALL_ACCESS ideal-int pkg syscall (windows-amd64), const TOKEN_ASSIGN_PRIMARY ideal-int pkg syscall (windows-amd64), const TOKEN_DUPLICATE ideal-int pkg syscall (windows-amd64), const TOKEN_EXECUTE ideal-int pkg syscall (windows-amd64), const TOKEN_IMPERSONATE ideal-int pkg syscall (windows-amd64), const TOKEN_QUERY ideal-int pkg syscall (windows-amd64), const TOKEN_QUERY_SOURCE ideal-int pkg syscall (windows-amd64), const TOKEN_READ ideal-int pkg syscall (windows-amd64), const TOKEN_WRITE ideal-int pkg syscall (windows-amd64), const TRUNCATE_EXISTING ideal-int pkg syscall (windows-amd64), const TokenAccessInformation ideal-int pkg syscall (windows-amd64), const TokenAuditPolicy ideal-int pkg syscall (windows-amd64), const TokenDefaultDacl ideal-int pkg syscall (windows-amd64), const TokenElevation ideal-int pkg syscall (windows-amd64), const TokenElevationType ideal-int pkg syscall (windows-amd64), const TokenGroups ideal-int pkg syscall (windows-amd64), const TokenGroupsAndPrivileges ideal-int pkg syscall (windows-amd64), const TokenHasRestrictions ideal-int pkg syscall (windows-amd64), const TokenImpersonationLevel ideal-int pkg syscall (windows-amd64), const TokenIntegrityLevel ideal-int pkg syscall (windows-amd64), const TokenLinkedToken ideal-int pkg syscall (windows-amd64), const TokenLogonSid ideal-int pkg syscall (windows-amd64), const TokenMandatoryPolicy ideal-int pkg syscall (windows-amd64), const TokenOrigin ideal-int pkg syscall (windows-amd64), const TokenOwner ideal-int pkg syscall (windows-amd64), const TokenPrimaryGroup ideal-int pkg syscall (windows-amd64), const TokenPrivileges ideal-int pkg syscall (windows-amd64), const TokenRestrictedSids ideal-int pkg syscall (windows-amd64), const TokenSandBoxInert ideal-int pkg syscall (windows-amd64), const TokenSessionId ideal-int pkg syscall (windows-amd64), const TokenSessionReference ideal-int pkg syscall (windows-amd64), const TokenSource ideal-int pkg syscall (windows-amd64), const TokenStatistics ideal-int pkg syscall (windows-amd64), const TokenType ideal-int pkg syscall (windows-amd64), const TokenUIAccess ideal-int pkg syscall (windows-amd64), const TokenUser ideal-int pkg syscall (windows-amd64), const TokenVirtualizationAllowed ideal-int pkg syscall (windows-amd64), const TokenVirtualizationEnabled ideal-int pkg syscall (windows-amd64), const USAGE_MATCH_TYPE_AND ideal-int pkg syscall (windows-amd64), const USAGE_MATCH_TYPE_OR ideal-int pkg syscall (windows-amd64), const WAIT_ABANDONED ideal-int pkg syscall (windows-amd64), const WAIT_FAILED ideal-int pkg syscall (windows-amd64), const WAIT_OBJECT_0 ideal-int pkg syscall (windows-amd64), const WAIT_TIMEOUT ideal-int pkg syscall (windows-amd64), const WSADESCRIPTION_LEN ideal-int pkg syscall (windows-amd64), const WSASYS_STATUS_LEN ideal-int pkg syscall (windows-amd64), const X509_ASN_ENCODING ideal-int pkg syscall (windows-amd64), func Accept(Handle) (Handle, Sockaddr, error) pkg syscall (windows-amd64), func AcceptEx(Handle, Handle, *uint8, uint32, uint32, uint32, *uint32, *Overlapped) error pkg syscall (windows-amd64), func Bind(Handle, Sockaddr) error pkg syscall (windows-amd64), func CancelIo(Handle) error pkg syscall (windows-amd64), func CertAddCertificateContextToStore(Handle, *CertContext, uint32, **CertContext) error pkg syscall (windows-amd64), func CertCloseStore(Handle, uint32) error pkg syscall (windows-amd64), func CertCreateCertificateContext(uint32, *uint8, uint32) (*CertContext, error) pkg syscall (windows-amd64), func CertEnumCertificatesInStore(Handle, *CertContext) (*CertContext, error) pkg syscall (windows-amd64), func CertFreeCertificateChain(*CertChainContext) pkg syscall (windows-amd64), func CertFreeCertificateContext(*CertContext) error pkg syscall (windows-amd64), func CertGetCertificateChain(Handle, *CertContext, *Filetime, Handle, *CertChainPara, uint32, uintptr, **CertChainContext) error pkg syscall (windows-amd64), func CertOpenStore(uintptr, uint32, uintptr, uint32, uintptr) (Handle, error) pkg syscall (windows-amd64), func CertOpenSystemStore(Handle, *uint16) (Handle, error) pkg syscall (windows-amd64), func CertVerifyCertificateChainPolicy(uintptr, *CertChainContext, *CertChainPolicyPara, *CertChainPolicyStatus) error pkg syscall (windows-amd64), func Close(Handle) error pkg syscall (windows-amd64), func CloseHandle(Handle) error pkg syscall (windows-amd64), func CloseOnExec(Handle) pkg syscall (windows-amd64), func Closesocket(Handle) error pkg syscall (windows-amd64), func CommandLineToArgv(*uint16, *int32) (*[8192]*[8192]uint16, error) pkg syscall (windows-amd64), func ComputerName() (string, error) pkg syscall (windows-amd64), func Connect(Handle, Sockaddr) error pkg syscall (windows-amd64), func ConvertSidToStringSid(*SID, **uint16) error pkg syscall (windows-amd64), func ConvertStringSidToSid(*uint16, **SID) error pkg syscall (windows-amd64), func CopySid(uint32, *SID, *SID) error pkg syscall (windows-amd64), func CreateDirectory(*uint16, *SecurityAttributes) error pkg syscall (windows-amd64), func CreateFile(*uint16, uint32, uint32, *SecurityAttributes, uint32, uint32, int32) (Handle, error) pkg syscall (windows-amd64), func CreateFileMapping(Handle, *SecurityAttributes, uint32, uint32, uint32, *uint16) (Handle, error) pkg syscall (windows-amd64), func CreateIoCompletionPort(Handle, Handle, uint32, uint32) (Handle, error) pkg syscall (windows-amd64), func CreatePipe(*Handle, *Handle, *SecurityAttributes, uint32) error pkg syscall (windows-amd64), func CreateProcess(*uint16, *uint16, *SecurityAttributes, *SecurityAttributes, bool, uint32, *uint16, *uint16, *StartupInfo, *ProcessInformation) error pkg syscall (windows-amd64), func CryptAcquireContext(*Handle, *uint16, *uint16, uint32, uint32) error pkg syscall (windows-amd64), func CryptGenRandom(Handle, uint32, *uint8) error pkg syscall (windows-amd64), func CryptReleaseContext(Handle, uint32) error pkg syscall (windows-amd64), func DeleteFile(*uint16) error pkg syscall (windows-amd64), func DnsQuery(string, uint16, uint32, *uint8, **DNSRecord, *uint8) error pkg syscall (windows-amd64), func DnsRecordListFree(*DNSRecord, uint32) pkg syscall (windows-amd64), func DuplicateHandle(Handle, Handle, Handle, *Handle, uint32, bool, uint32) error pkg syscall (windows-amd64), func EscapeArg(string) string pkg syscall (windows-amd64), func ExitProcess(uint32) pkg syscall (windows-amd64), func Fchdir(Handle) error pkg syscall (windows-amd64), func Fchmod(Handle, uint32) error pkg syscall (windows-amd64), func Fchown(Handle, int, int) error pkg syscall (windows-amd64), func FindClose(Handle) error pkg syscall (windows-amd64), func FindFirstFile(*uint16, *Win32finddata) (Handle, error) pkg syscall (windows-amd64), func FindNextFile(Handle, *Win32finddata) error pkg syscall (windows-amd64), func FlushFileBuffers(Handle) error pkg syscall (windows-amd64), func FlushViewOfFile(uintptr, uintptr) error pkg syscall (windows-amd64), func FormatMessage(uint32, uint32, uint32, uint32, []uint16, *uint8) (uint32, error) pkg syscall (windows-amd64), func FreeEnvironmentStrings(*uint16) error pkg syscall (windows-amd64), func FreeLibrary(Handle) error pkg syscall (windows-amd64), func Fsync(Handle) error pkg syscall (windows-amd64), func Ftruncate(Handle, int64) error pkg syscall (windows-amd64), func GetAcceptExSockaddrs(*uint8, uint32, uint32, uint32, **RawSockaddrAny, *int32, **RawSockaddrAny, *int32) pkg syscall (windows-amd64), func GetAdaptersInfo(*IpAdapterInfo, *uint32) error pkg syscall (windows-amd64), func GetCommandLine() *uint16 pkg syscall (windows-amd64), func GetComputerName(*uint16, *uint32) error pkg syscall (windows-amd64), func GetCurrentDirectory(uint32, *uint16) (uint32, error) pkg syscall (windows-amd64), func GetCurrentProcess() (Handle, error) pkg syscall (windows-amd64), func GetEnvironmentStrings() (*uint16, error) pkg syscall (windows-amd64), func GetEnvironmentVariable(*uint16, *uint16, uint32) (uint32, error) pkg syscall (windows-amd64), func GetExitCodeProcess(Handle, *uint32) error pkg syscall (windows-amd64), func GetFileAttributes(*uint16) (uint32, error) pkg syscall (windows-amd64), func GetFileAttributesEx(*uint16, uint32, *uint8) error pkg syscall (windows-amd64), func GetFileInformationByHandle(Handle, *ByHandleFileInformation) error pkg syscall (windows-amd64), func GetFileType(Handle) (uint32, error) pkg syscall (windows-amd64), func GetFullPathName(*uint16, uint32, *uint16, **uint16) (uint32, error) pkg syscall (windows-amd64), func GetHostByName(string) (*Hostent, error) pkg syscall (windows-amd64), func GetIfEntry(*MibIfRow) error pkg syscall (windows-amd64), func GetLastError() error pkg syscall (windows-amd64), func GetLengthSid(*SID) uint32 pkg syscall (windows-amd64), func GetLongPathName(*uint16, *uint16, uint32) (uint32, error) pkg syscall (windows-amd64), func GetProcAddress(Handle, string) (uintptr, error) pkg syscall (windows-amd64), func GetProcessTimes(Handle, *Filetime, *Filetime, *Filetime, *Filetime) error pkg syscall (windows-amd64), func GetProtoByName(string) (*Protoent, error) pkg syscall (windows-amd64), func GetQueuedCompletionStatus(Handle, *uint32, *uint32, **Overlapped, uint32) error pkg syscall (windows-amd64), func GetServByName(string, string) (*Servent, error) pkg syscall (windows-amd64), func GetShortPathName(*uint16, *uint16, uint32) (uint32, error) pkg syscall (windows-amd64), func GetStartupInfo(*StartupInfo) error pkg syscall (windows-amd64), func GetStdHandle(int) (Handle, error) pkg syscall (windows-amd64), func GetSystemTimeAsFileTime(*Filetime) pkg syscall (windows-amd64), func GetTempPath(uint32, *uint16) (uint32, error) pkg syscall (windows-amd64), func GetTimeZoneInformation(*Timezoneinformation) (uint32, error) pkg syscall (windows-amd64), func GetTokenInformation(Token, uint32, *uint8, uint32, *uint32) error pkg syscall (windows-amd64), func GetUserNameEx(uint32, *uint16, *uint32) error pkg syscall (windows-amd64), func GetUserProfileDirectory(Token, *uint16, *uint32) error pkg syscall (windows-amd64), func GetVersion() (uint32, error) pkg syscall (windows-amd64), func Getpeername(Handle) (Sockaddr, error) pkg syscall (windows-amd64), func Getsockname(Handle) (Sockaddr, error) pkg syscall (windows-amd64), func GetsockoptInt(Handle, int, int) (int, error) pkg syscall (windows-amd64), func Listen(Handle, int) error pkg syscall (windows-amd64), func LoadDLL(string) (*DLL, error) pkg syscall (windows-amd64), func LoadLibrary(string) (Handle, error) pkg syscall (windows-amd64), func LocalFree(Handle) (Handle, error) pkg syscall (windows-amd64), func LookupAccountName(*uint16, *uint16, *SID, *uint32, *uint16, *uint32, *uint32) error pkg syscall (windows-amd64), func LookupAccountSid(*uint16, *SID, *uint16, *uint32, *uint16, *uint32, *uint32) error pkg syscall (windows-amd64), func LookupSID(string, string) (*SID, string, uint32, error) pkg syscall (windows-amd64), func MapViewOfFile(Handle, uint32, uint32, uint32, uintptr) (uintptr, error) pkg syscall (windows-amd64), func MoveFile(*uint16, *uint16) error pkg syscall (windows-amd64), func MustLoadDLL(string) *DLL pkg syscall (windows-amd64), func NetApiBufferFree(*uint8) error pkg syscall (windows-amd64), func NetUserGetInfo(*uint16, *uint16, uint32, **uint8) error pkg syscall (windows-amd64), func NewCallback(interface{}) uintptr pkg syscall (windows-amd64), func NewLazyDLL(string) *LazyDLL pkg syscall (windows-amd64), func NsecToFiletime(int64) Filetime pkg syscall (windows-amd64), func Ntohs(uint16) uint16 pkg syscall (windows-amd64), func Open(string, int, uint32) (Handle, error) pkg syscall (windows-amd64), func OpenCurrentProcessToken() (Token, error) pkg syscall (windows-amd64), func OpenProcess(uint32, bool, uint32) (Handle, error) pkg syscall (windows-amd64), func OpenProcessToken(Handle, uint32, *Token) error pkg syscall (windows-amd64), func Pipe([]Handle) error pkg syscall (windows-amd64), func PostQueuedCompletionStatus(Handle, uint32, uint32, *Overlapped) error pkg syscall (windows-amd64), func Read(Handle, []uint8) (int, error) pkg syscall (windows-amd64), func ReadDirectoryChanges(Handle, *uint8, uint32, bool, uint32, *uint32, *Overlapped, uintptr) error pkg syscall (windows-amd64), func ReadFile(Handle, []uint8, *uint32, *Overlapped) error pkg syscall (windows-amd64), func Recvfrom(Handle, []uint8, int) (int, Sockaddr, error) pkg syscall (windows-amd64), func RegCloseKey(Handle) error pkg syscall (windows-amd64), func RegEnumKeyEx(Handle, uint32, *uint16, *uint32, *uint32, *uint16, *uint32, *Filetime) error pkg syscall (windows-amd64), func RegOpenKeyEx(Handle, *uint16, uint32, uint32, *Handle) error pkg syscall (windows-amd64), func RegQueryInfoKey(Handle, *uint16, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *Filetime) error pkg syscall (windows-amd64), func RegQueryValueEx(Handle, *uint16, *uint32, *uint32, *uint8, *uint32) error pkg syscall (windows-amd64), func RemoveDirectory(*uint16) error pkg syscall (windows-amd64), func Seek(Handle, int64, int) (int64, error) pkg syscall (windows-amd64), func Sendto(Handle, []uint8, int, Sockaddr) error pkg syscall (windows-amd64), func SetCurrentDirectory(*uint16) error pkg syscall (windows-amd64), func SetEndOfFile(Handle) error pkg syscall (windows-amd64), func SetEnvironmentVariable(*uint16, *uint16) error pkg syscall (windows-amd64), func SetFileAttributes(*uint16, uint32) error pkg syscall (windows-amd64), func SetFilePointer(Handle, int32, *int32, uint32) (uint32, error) pkg syscall (windows-amd64), func SetFileTime(Handle, *Filetime, *Filetime, *Filetime) error pkg syscall (windows-amd64), func SetHandleInformation(Handle, uint32, uint32) error pkg syscall (windows-amd64), func SetNonblock(Handle, bool) error pkg syscall (windows-amd64), func Setsockopt(Handle, int32, int32, *uint8, int32) error pkg syscall (windows-amd64), func SetsockoptIPMreq(Handle, int, int, *IPMreq) error pkg syscall (windows-amd64), func SetsockoptIPv6Mreq(Handle, int, int, *IPv6Mreq) error pkg syscall (windows-amd64), func SetsockoptInet4Addr(Handle, int, int, [4]uint8) error pkg syscall (windows-amd64), func SetsockoptInt(Handle, int, int, int) error pkg syscall (windows-amd64), func SetsockoptLinger(Handle, int, int, *Linger) error pkg syscall (windows-amd64), func SetsockoptTimeval(Handle, int, int, *Timeval) error pkg syscall (windows-amd64), func Shutdown(Handle, int) error pkg syscall (windows-amd64), func Socket(int, int, int) (Handle, error) pkg syscall (windows-amd64), func StringToSid(string) (*SID, error) pkg syscall (windows-amd64), func StringToUTF16(string) []uint16 pkg syscall (windows-amd64), func StringToUTF16Ptr(string) *uint16 pkg syscall (windows-amd64), func Syscall(uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (windows-amd64), func Syscall12(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (windows-amd64), func Syscall15(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (windows-amd64), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (windows-amd64), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) pkg syscall (windows-amd64), func TerminateProcess(Handle, uint32) error pkg syscall (windows-amd64), func TranslateAccountName(string, uint32, uint32, int) (string, error) pkg syscall (windows-amd64), func TranslateName(*uint16, uint32, uint32, *uint16, *uint32) error pkg syscall (windows-amd64), func TransmitFile(Handle, Handle, uint32, uint32, *Overlapped, *TransmitFileBuffers, uint32) error pkg syscall (windows-amd64), func UTF16ToString([]uint16) string pkg syscall (windows-amd64), func UnmapViewOfFile(uintptr) error pkg syscall (windows-amd64), func VirtualLock(uintptr, uintptr) error pkg syscall (windows-amd64), func VirtualUnlock(uintptr, uintptr) error pkg syscall (windows-amd64), func WSACleanup() error pkg syscall (windows-amd64), func WSAIoctl(Handle, uint32, *uint8, uint32, *uint8, uint32, *uint32, *Overlapped, uintptr) error pkg syscall (windows-amd64), func WSARecv(Handle, *WSABuf, uint32, *uint32, *uint32, *Overlapped, *uint8) error pkg syscall (windows-amd64), func WSARecvFrom(Handle, *WSABuf, uint32, *uint32, *uint32, *RawSockaddrAny, *int32, *Overlapped, *uint8) error pkg syscall (windows-amd64), func WSASend(Handle, *WSABuf, uint32, *uint32, uint32, *Overlapped, *uint8) error pkg syscall (windows-amd64), func WSASendTo(Handle, *WSABuf, uint32, *uint32, uint32, *RawSockaddrAny, int32, *Overlapped, *uint8) error pkg syscall (windows-amd64), func WSASendto(Handle, *WSABuf, uint32, *uint32, uint32, Sockaddr, *Overlapped, *uint8) error pkg syscall (windows-amd64), func WSAStartup(uint32, *WSAData) error pkg syscall (windows-amd64), func WaitForSingleObject(Handle, uint32) (uint32, error) pkg syscall (windows-amd64), func Write(Handle, []uint8) (int, error) pkg syscall (windows-amd64), func WriteFile(Handle, []uint8, *uint32, *Overlapped) error pkg syscall (windows-amd64), method (*DLL) FindProc(string) (*Proc, error) pkg syscall (windows-amd64), method (*DLL) MustFindProc(string) *Proc pkg syscall (windows-amd64), method (*DLL) Release() error pkg syscall (windows-amd64), method (*DLLError) Error() string pkg syscall (windows-amd64), method (*Filetime) Nanoseconds() int64 pkg syscall (windows-amd64), method (*LazyDLL) Handle() uintptr pkg syscall (windows-amd64), method (*LazyDLL) Load() error pkg syscall (windows-amd64), method (*LazyDLL) NewProc(string) *LazyProc pkg syscall (windows-amd64), method (*LazyProc) Addr() uintptr pkg syscall (windows-amd64), method (*LazyProc) Call(...uintptr) (uintptr, uintptr, error) pkg syscall (windows-amd64), method (*LazyProc) Find() error pkg syscall (windows-amd64), method (*Proc) Addr() uintptr pkg syscall (windows-amd64), method (*Proc) Call(...uintptr) (uintptr, uintptr, error) pkg syscall (windows-amd64), method (*RawSockaddrAny) Sockaddr() (Sockaddr, error) pkg syscall (windows-amd64), method (*SID) Copy() (*SID, error) pkg syscall (windows-amd64), method (*SID) Len() int pkg syscall (windows-amd64), method (*SID) LookupAccount(string) (string, string, uint32, error) pkg syscall (windows-amd64), method (*SID) String() (string, error) pkg syscall (windows-amd64), method (*Timeval) Nanoseconds() int64 pkg syscall (windows-amd64), method (Token) Close() error pkg syscall (windows-amd64), method (Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) pkg syscall (windows-amd64), method (Token) GetTokenUser() (*Tokenuser, error) pkg syscall (windows-amd64), method (Token) GetUserProfileDirectory() (string, error) pkg syscall (windows-amd64), type ByHandleFileInformation struct pkg syscall (windows-amd64), type ByHandleFileInformation struct, CreationTime Filetime pkg syscall (windows-amd64), type ByHandleFileInformation struct, FileAttributes uint32 pkg syscall (windows-amd64), type ByHandleFileInformation struct, FileIndexHigh uint32 pkg syscall (windows-amd64), type ByHandleFileInformation struct, FileIndexLow uint32 pkg syscall (windows-amd64), type ByHandleFileInformation struct, FileSizeHigh uint32 pkg syscall (windows-amd64), type ByHandleFileInformation struct, FileSizeLow uint32 pkg syscall (windows-amd64), type ByHandleFileInformation struct, LastAccessTime Filetime pkg syscall (windows-amd64), type ByHandleFileInformation struct, LastWriteTime Filetime pkg syscall (windows-amd64), type ByHandleFileInformation struct, NumberOfLinks uint32 pkg syscall (windows-amd64), type ByHandleFileInformation struct, VolumeSerialNumber uint32 pkg syscall (windows-amd64), type CertChainContext struct pkg syscall (windows-amd64), type CertChainContext struct, ChainCount uint32 pkg syscall (windows-amd64), type CertChainContext struct, Chains **CertSimpleChain pkg syscall (windows-amd64), type CertChainContext struct, HasRevocationFreshnessTime uint32 pkg syscall (windows-amd64), type CertChainContext struct, LowerQualityChainCount uint32 pkg syscall (windows-amd64), type CertChainContext struct, LowerQualityChains **CertChainContext pkg syscall (windows-amd64), type CertChainContext struct, RevocationFreshnessTime uint32 pkg syscall (windows-amd64), type CertChainContext struct, Size uint32 pkg syscall (windows-amd64), type CertChainContext struct, TrustStatus CertTrustStatus pkg syscall (windows-amd64), type CertChainElement struct pkg syscall (windows-amd64), type CertChainElement struct, ApplicationUsage *CertEnhKeyUsage pkg syscall (windows-amd64), type CertChainElement struct, CertContext *CertContext pkg syscall (windows-amd64), type CertChainElement struct, ExtendedErrorInfo *uint16 pkg syscall (windows-amd64), type CertChainElement struct, IssuanceUsage *CertEnhKeyUsage pkg syscall (windows-amd64), type CertChainElement struct, RevocationInfo *CertRevocationInfo pkg syscall (windows-amd64), type CertChainElement struct, Size uint32 pkg syscall (windows-amd64), type CertChainElement struct, TrustStatus CertTrustStatus pkg syscall (windows-amd64), type CertChainPara struct pkg syscall (windows-amd64), type CertChainPara struct, CacheResync *Filetime pkg syscall (windows-amd64), type CertChainPara struct, CheckRevocationFreshnessTime uint32 pkg syscall (windows-amd64), type CertChainPara struct, RequestedUsage CertUsageMatch pkg syscall (windows-amd64), type CertChainPara struct, RequstedIssuancePolicy CertUsageMatch pkg syscall (windows-amd64), type CertChainPara struct, RevocationFreshnessTime uint32 pkg syscall (windows-amd64), type CertChainPara struct, Size uint32 pkg syscall (windows-amd64), type CertChainPara struct, URLRetrievalTimeout uint32 pkg syscall (windows-amd64), type CertChainPolicyPara struct pkg syscall (windows-amd64), type CertChainPolicyPara struct, ExtraPolicyPara uintptr pkg syscall (windows-amd64), type CertChainPolicyPara struct, Flags uint32 pkg syscall (windows-amd64), type CertChainPolicyPara struct, Size uint32 pkg syscall (windows-amd64), type CertChainPolicyStatus struct pkg syscall (windows-amd64), type CertChainPolicyStatus struct, ChainIndex uint32 pkg syscall (windows-amd64), type CertChainPolicyStatus struct, ElementIndex uint32 pkg syscall (windows-amd64), type CertChainPolicyStatus struct, Error uint32 pkg syscall (windows-amd64), type CertChainPolicyStatus struct, ExtraPolicyStatus uintptr pkg syscall (windows-amd64), type CertChainPolicyStatus struct, Size uint32 pkg syscall (windows-amd64), type CertContext struct pkg syscall (windows-amd64), type CertContext struct, CertInfo uintptr pkg syscall (windows-amd64), type CertContext struct, EncodedCert *uint8 pkg syscall (windows-amd64), type CertContext struct, EncodingType uint32 pkg syscall (windows-amd64), type CertContext struct, Length uint32 pkg syscall (windows-amd64), type CertContext struct, Store Handle pkg syscall (windows-amd64), type CertEnhKeyUsage struct pkg syscall (windows-amd64), type CertEnhKeyUsage struct, Length uint32 pkg syscall (windows-amd64), type CertEnhKeyUsage struct, UsageIdentifiers **uint8 pkg syscall (windows-amd64), type CertRevocationInfo struct pkg syscall (windows-amd64), type CertRevocationInfo struct, CrlInfo uintptr pkg syscall (windows-amd64), type CertRevocationInfo struct, FreshnessTime uint32 pkg syscall (windows-amd64), type CertRevocationInfo struct, HasFreshnessTime uint32 pkg syscall (windows-amd64), type CertRevocationInfo struct, OidSpecificInfo uintptr pkg syscall (windows-amd64), type CertRevocationInfo struct, RevocationOid *uint8 pkg syscall (windows-amd64), type CertRevocationInfo struct, RevocationResult uint32 pkg syscall (windows-amd64), type CertRevocationInfo struct, Size uint32 pkg syscall (windows-amd64), type CertSimpleChain struct pkg syscall (windows-amd64), type CertSimpleChain struct, Elements **CertChainElement pkg syscall (windows-amd64), type CertSimpleChain struct, HasRevocationFreshnessTime uint32 pkg syscall (windows-amd64), type CertSimpleChain struct, NumElements uint32 pkg syscall (windows-amd64), type CertSimpleChain struct, RevocationFreshnessTime uint32 pkg syscall (windows-amd64), type CertSimpleChain struct, Size uint32 pkg syscall (windows-amd64), type CertSimpleChain struct, TrustListInfo uintptr pkg syscall (windows-amd64), type CertSimpleChain struct, TrustStatus CertTrustStatus pkg syscall (windows-amd64), type CertTrustStatus struct pkg syscall (windows-amd64), type CertTrustStatus struct, ErrorStatus uint32 pkg syscall (windows-amd64), type CertTrustStatus struct, InfoStatus uint32 pkg syscall (windows-amd64), type CertUsageMatch struct pkg syscall (windows-amd64), type CertUsageMatch struct, Type uint32 pkg syscall (windows-amd64), type CertUsageMatch struct, Usage CertEnhKeyUsage pkg syscall (windows-amd64), type DLL struct pkg syscall (windows-amd64), type DLL struct, Handle Handle pkg syscall (windows-amd64), type DLL struct, Name string pkg syscall (windows-amd64), type DLLError struct pkg syscall (windows-amd64), type DLLError struct, Err error pkg syscall (windows-amd64), type DLLError struct, Msg string pkg syscall (windows-amd64), type DLLError struct, ObjName string pkg syscall (windows-amd64), type DNSMXData struct pkg syscall (windows-amd64), type DNSMXData struct, NameExchange *uint16 pkg syscall (windows-amd64), type DNSMXData struct, Pad uint16 pkg syscall (windows-amd64), type DNSMXData struct, Preference uint16 pkg syscall (windows-amd64), type DNSPTRData struct pkg syscall (windows-amd64), type DNSPTRData struct, Host *uint16 pkg syscall (windows-amd64), type DNSRecord struct pkg syscall (windows-amd64), type DNSRecord struct, Data [40]uint8 pkg syscall (windows-amd64), type DNSRecord struct, Dw uint32 pkg syscall (windows-amd64), type DNSRecord struct, Length uint16 pkg syscall (windows-amd64), type DNSRecord struct, Name *uint16 pkg syscall (windows-amd64), type DNSRecord struct, Next *DNSRecord pkg syscall (windows-amd64), type DNSRecord struct, Reserved uint32 pkg syscall (windows-amd64), type DNSRecord struct, Ttl uint32 pkg syscall (windows-amd64), type DNSRecord struct, Type uint16 pkg syscall (windows-amd64), type DNSSRVData struct pkg syscall (windows-amd64), type DNSSRVData struct, Pad uint16 pkg syscall (windows-amd64), type DNSSRVData struct, Port uint16 pkg syscall (windows-amd64), type DNSSRVData struct, Priority uint16 pkg syscall (windows-amd64), type DNSSRVData struct, Target *uint16 pkg syscall (windows-amd64), type DNSSRVData struct, Weight uint16 pkg syscall (windows-amd64), type DNSTXTData struct pkg syscall (windows-amd64), type DNSTXTData struct, StringArray [1]*uint16 pkg syscall (windows-amd64), type DNSTXTData struct, StringCount uint16 pkg syscall (windows-amd64), type FileNotifyInformation struct pkg syscall (windows-amd64), type FileNotifyInformation struct, Action uint32 pkg syscall (windows-amd64), type FileNotifyInformation struct, FileName uint16 pkg syscall (windows-amd64), type FileNotifyInformation struct, FileNameLength uint32 pkg syscall (windows-amd64), type FileNotifyInformation struct, NextEntryOffset uint32 pkg syscall (windows-amd64), type Filetime struct pkg syscall (windows-amd64), type Filetime struct, HighDateTime uint32 pkg syscall (windows-amd64), type Filetime struct, LowDateTime uint32 pkg syscall (windows-amd64), type Handle uintptr pkg syscall (windows-amd64), type Hostent struct pkg syscall (windows-amd64), type Hostent struct, AddrList **uint8 pkg syscall (windows-amd64), type Hostent struct, AddrType uint16 pkg syscall (windows-amd64), type Hostent struct, Aliases **uint8 pkg syscall (windows-amd64), type Hostent struct, Length uint16 pkg syscall (windows-amd64), type Hostent struct, Name *uint8 pkg syscall (windows-amd64), type InterfaceInfo struct pkg syscall (windows-amd64), type InterfaceInfo struct, Address SockaddrGen pkg syscall (windows-amd64), type InterfaceInfo struct, BroadcastAddress SockaddrGen pkg syscall (windows-amd64), type InterfaceInfo struct, Flags uint32 pkg syscall (windows-amd64), type InterfaceInfo struct, Netmask SockaddrGen pkg syscall (windows-amd64), type IpAdapterInfo struct pkg syscall (windows-amd64), type IpAdapterInfo struct, AdapterName [260]uint8 pkg syscall (windows-amd64), type IpAdapterInfo struct, Address [8]uint8 pkg syscall (windows-amd64), type IpAdapterInfo struct, AddressLength uint32 pkg syscall (windows-amd64), type IpAdapterInfo struct, ComboIndex uint32 pkg syscall (windows-amd64), type IpAdapterInfo struct, CurrentIpAddress *IpAddrString pkg syscall (windows-amd64), type IpAdapterInfo struct, Description [132]uint8 pkg syscall (windows-amd64), type IpAdapterInfo struct, DhcpEnabled uint32 pkg syscall (windows-amd64), type IpAdapterInfo struct, DhcpServer IpAddrString pkg syscall (windows-amd64), type IpAdapterInfo struct, GatewayList IpAddrString pkg syscall (windows-amd64), type IpAdapterInfo struct, HaveWins bool pkg syscall (windows-amd64), type IpAdapterInfo struct, Index uint32 pkg syscall (windows-amd64), type IpAdapterInfo struct, IpAddressList IpAddrString pkg syscall (windows-amd64), type IpAdapterInfo struct, LeaseExpires int64 pkg syscall (windows-amd64), type IpAdapterInfo struct, LeaseObtained int64 pkg syscall (windows-amd64), type IpAdapterInfo struct, Next *IpAdapterInfo pkg syscall (windows-amd64), type IpAdapterInfo struct, PrimaryWinsServer IpAddrString pkg syscall (windows-amd64), type IpAdapterInfo struct, SecondaryWinsServer IpAddrString pkg syscall (windows-amd64), type IpAdapterInfo struct, Type uint32 pkg syscall (windows-amd64), type IpAddrString struct pkg syscall (windows-amd64), type IpAddrString struct, Context uint32 pkg syscall (windows-amd64), type IpAddrString struct, IpAddress IpAddressString pkg syscall (windows-amd64), type IpAddrString struct, IpMask IpMaskString pkg syscall (windows-amd64), type IpAddrString struct, Next *IpAddrString pkg syscall (windows-amd64), type IpAddressString struct pkg syscall (windows-amd64), type IpAddressString struct, String [16]uint8 pkg syscall (windows-amd64), type IpMaskString struct pkg syscall (windows-amd64), type LazyDLL struct pkg syscall (windows-amd64), type LazyDLL struct, Name string pkg syscall (windows-amd64), type LazyProc struct pkg syscall (windows-amd64), type LazyProc struct, Name string pkg syscall (windows-amd64), type MibIfRow struct pkg syscall (windows-amd64), type MibIfRow struct, AdminStatus uint32 pkg syscall (windows-amd64), type MibIfRow struct, Descr [256]uint8 pkg syscall (windows-amd64), type MibIfRow struct, DescrLen uint32 pkg syscall (windows-amd64), type MibIfRow struct, InDiscards uint32 pkg syscall (windows-amd64), type MibIfRow struct, InErrors uint32 pkg syscall (windows-amd64), type MibIfRow struct, InNUcastPkts uint32 pkg syscall (windows-amd64), type MibIfRow struct, InOctets uint32 pkg syscall (windows-amd64), type MibIfRow struct, InUcastPkts uint32 pkg syscall (windows-amd64), type MibIfRow struct, InUnknownProtos uint32 pkg syscall (windows-amd64), type MibIfRow struct, Index uint32 pkg syscall (windows-amd64), type MibIfRow struct, LastChange uint32 pkg syscall (windows-amd64), type MibIfRow struct, Mtu uint32 pkg syscall (windows-amd64), type MibIfRow struct, Name [256]uint16 pkg syscall (windows-amd64), type MibIfRow struct, OperStatus uint32 pkg syscall (windows-amd64), type MibIfRow struct, OutDiscards uint32 pkg syscall (windows-amd64), type MibIfRow struct, OutErrors uint32 pkg syscall (windows-amd64), type MibIfRow struct, OutNUcastPkts uint32 pkg syscall (windows-amd64), type MibIfRow struct, OutOctets uint32 pkg syscall (windows-amd64), type MibIfRow struct, OutQLen uint32 pkg syscall (windows-amd64), type MibIfRow struct, OutUcastPkts uint32 pkg syscall (windows-amd64), type MibIfRow struct, PhysAddr [8]uint8 pkg syscall (windows-amd64), type MibIfRow struct, PhysAddrLen uint32 pkg syscall (windows-amd64), type MibIfRow struct, Speed uint32 pkg syscall (windows-amd64), type MibIfRow struct, Type uint32 pkg syscall (windows-amd64), type Overlapped struct pkg syscall (windows-amd64), type Overlapped struct, HEvent Handle pkg syscall (windows-amd64), type Overlapped struct, Internal uintptr pkg syscall (windows-amd64), type Overlapped struct, InternalHigh uintptr pkg syscall (windows-amd64), type Overlapped struct, Offset uint32 pkg syscall (windows-amd64), type Overlapped struct, OffsetHigh uint32 pkg syscall (windows-amd64), type Proc struct pkg syscall (windows-amd64), type Proc struct, Dll *DLL pkg syscall (windows-amd64), type Proc struct, Name string pkg syscall (windows-amd64), type ProcessInformation struct pkg syscall (windows-amd64), type ProcessInformation struct, Process Handle pkg syscall (windows-amd64), type ProcessInformation struct, ProcessId uint32 pkg syscall (windows-amd64), type ProcessInformation struct, Thread Handle pkg syscall (windows-amd64), type ProcessInformation struct, ThreadId uint32 pkg syscall (windows-amd64), type Protoent struct pkg syscall (windows-amd64), type Protoent struct, Aliases **uint8 pkg syscall (windows-amd64), type Protoent struct, Name *uint8 pkg syscall (windows-amd64), type Protoent struct, Proto uint16 pkg syscall (windows-amd64), type RawSockaddr struct, Data [14]int8 pkg syscall (windows-amd64), type RawSockaddr struct, Family uint16 pkg syscall (windows-amd64), type RawSockaddrAny struct, Pad [96]int8 pkg syscall (windows-amd64), type RawSockaddrInet4 struct, Family uint16 pkg syscall (windows-amd64), type RawSockaddrInet4 struct, Zero [8]uint8 pkg syscall (windows-amd64), type Rusage struct, CreationTime Filetime pkg syscall (windows-amd64), type Rusage struct, ExitTime Filetime pkg syscall (windows-amd64), type Rusage struct, KernelTime Filetime pkg syscall (windows-amd64), type Rusage struct, UserTime Filetime pkg syscall (windows-amd64), type SID struct pkg syscall (windows-amd64), type SIDAndAttributes struct pkg syscall (windows-amd64), type SIDAndAttributes struct, Attributes uint32 pkg syscall (windows-amd64), type SIDAndAttributes struct, Sid *SID pkg syscall (windows-amd64), type SSLExtraCertChainPolicyPara struct pkg syscall (windows-amd64), type SSLExtraCertChainPolicyPara struct, AuthType uint32 pkg syscall (windows-amd64), type SSLExtraCertChainPolicyPara struct, Checks uint32 pkg syscall (windows-amd64), type SSLExtraCertChainPolicyPara struct, ServerName *uint16 pkg syscall (windows-amd64), type SSLExtraCertChainPolicyPara struct, Size uint32 pkg syscall (windows-amd64), type SecurityAttributes struct pkg syscall (windows-amd64), type SecurityAttributes struct, InheritHandle uint32 pkg syscall (windows-amd64), type SecurityAttributes struct, Length uint32 pkg syscall (windows-amd64), type SecurityAttributes struct, SecurityDescriptor uintptr pkg syscall (windows-amd64), type Servent struct pkg syscall (windows-amd64), type Servent struct, Aliases **uint8 pkg syscall (windows-amd64), type Servent struct, Name *uint8 pkg syscall (windows-amd64), type Servent struct, Port uint16 pkg syscall (windows-amd64), type Servent struct, Proto *uint8 pkg syscall (windows-amd64), type SockaddrGen [24]uint8 pkg syscall (windows-amd64), type StartupInfo struct pkg syscall (windows-amd64), type StartupInfo struct, Cb uint32 pkg syscall (windows-amd64), type StartupInfo struct, Desktop *uint16 pkg syscall (windows-amd64), type StartupInfo struct, FillAttribute uint32 pkg syscall (windows-amd64), type StartupInfo struct, Flags uint32 pkg syscall (windows-amd64), type StartupInfo struct, ShowWindow uint16 pkg syscall (windows-amd64), type StartupInfo struct, StdErr Handle pkg syscall (windows-amd64), type StartupInfo struct, StdInput Handle pkg syscall (windows-amd64), type StartupInfo struct, StdOutput Handle pkg syscall (windows-amd64), type StartupInfo struct, Title *uint16 pkg syscall (windows-amd64), type StartupInfo struct, X uint32 pkg syscall (windows-amd64), type StartupInfo struct, XCountChars uint32 pkg syscall (windows-amd64), type StartupInfo struct, XSize uint32 pkg syscall (windows-amd64), type StartupInfo struct, Y uint32 pkg syscall (windows-amd64), type StartupInfo struct, YCountChars uint32 pkg syscall (windows-amd64), type StartupInfo struct, YSize uint32 pkg syscall (windows-amd64), type SysProcAttr struct, CmdLine string pkg syscall (windows-amd64), type SysProcAttr struct, HideWindow bool pkg syscall (windows-amd64), type Systemtime struct pkg syscall (windows-amd64), type Systemtime struct, Day uint16 pkg syscall (windows-amd64), type Systemtime struct, DayOfWeek uint16 pkg syscall (windows-amd64), type Systemtime struct, Hour uint16 pkg syscall (windows-amd64), type Systemtime struct, Milliseconds uint16 pkg syscall (windows-amd64), type Systemtime struct, Minute uint16 pkg syscall (windows-amd64), type Systemtime struct, Month uint16 pkg syscall (windows-amd64), type Systemtime struct, Second uint16 pkg syscall (windows-amd64), type Systemtime struct, Year uint16 pkg syscall (windows-amd64), type Timespec struct, Nsec int64 pkg syscall (windows-amd64), type Timespec struct, Sec int64 pkg syscall (windows-amd64), type Timeval struct, Sec int32 pkg syscall (windows-amd64), type Timeval struct, Usec int32 pkg syscall (windows-amd64), type Timezoneinformation struct pkg syscall (windows-amd64), type Timezoneinformation struct, Bias int32 pkg syscall (windows-amd64), type Timezoneinformation struct, DaylightBias int32 pkg syscall (windows-amd64), type Timezoneinformation struct, DaylightDate Systemtime pkg syscall (windows-amd64), type Timezoneinformation struct, DaylightName [32]uint16 pkg syscall (windows-amd64), type Timezoneinformation struct, StandardBias int32 pkg syscall (windows-amd64), type Timezoneinformation struct, StandardDate Systemtime pkg syscall (windows-amd64), type Timezoneinformation struct, StandardName [32]uint16 pkg syscall (windows-amd64), type Token uintptr pkg syscall (windows-amd64), type Tokenprimarygroup struct pkg syscall (windows-amd64), type Tokenprimarygroup struct, PrimaryGroup *SID pkg syscall (windows-amd64), type Tokenuser struct pkg syscall (windows-amd64), type Tokenuser struct, User SIDAndAttributes pkg syscall (windows-amd64), type TransmitFileBuffers struct pkg syscall (windows-amd64), type TransmitFileBuffers struct, Head uintptr pkg syscall (windows-amd64), type TransmitFileBuffers struct, HeadLength uint32 pkg syscall (windows-amd64), type TransmitFileBuffers struct, Tail uintptr pkg syscall (windows-amd64), type TransmitFileBuffers struct, TailLength uint32 pkg syscall (windows-amd64), type UserInfo10 struct pkg syscall (windows-amd64), type UserInfo10 struct, Comment *uint16 pkg syscall (windows-amd64), type UserInfo10 struct, FullName *uint16 pkg syscall (windows-amd64), type UserInfo10 struct, Name *uint16 pkg syscall (windows-amd64), type UserInfo10 struct, UsrComment *uint16 pkg syscall (windows-amd64), type WSABuf struct pkg syscall (windows-amd64), type WSABuf struct, Buf *uint8 pkg syscall (windows-amd64), type WSABuf struct, Len uint32 pkg syscall (windows-amd64), type WSAData struct pkg syscall (windows-amd64), type WSAData struct, Description [257]uint8 pkg syscall (windows-amd64), type WSAData struct, HighVersion uint16 pkg syscall (windows-amd64), type WSAData struct, MaxSockets uint16 pkg syscall (windows-amd64), type WSAData struct, MaxUdpDg uint16 pkg syscall (windows-amd64), type WSAData struct, SystemStatus [129]uint8 pkg syscall (windows-amd64), type WSAData struct, VendorInfo *uint8 pkg syscall (windows-amd64), type WSAData struct, Version uint16 pkg syscall (windows-amd64), type WaitStatus struct pkg syscall (windows-amd64), type WaitStatus struct, ExitCode uint32 pkg syscall (windows-amd64), type Win32FileAttributeData struct pkg syscall (windows-amd64), type Win32FileAttributeData struct, CreationTime Filetime pkg syscall (windows-amd64), type Win32FileAttributeData struct, FileAttributes uint32 pkg syscall (windows-amd64), type Win32FileAttributeData struct, FileSizeHigh uint32 pkg syscall (windows-amd64), type Win32FileAttributeData struct, FileSizeLow uint32 pkg syscall (windows-amd64), type Win32FileAttributeData struct, LastAccessTime Filetime pkg syscall (windows-amd64), type Win32FileAttributeData struct, LastWriteTime Filetime pkg syscall (windows-amd64), type Win32finddata struct pkg syscall (windows-amd64), type Win32finddata struct, AlternateFileName [13]uint16 pkg syscall (windows-amd64), type Win32finddata struct, CreationTime Filetime pkg syscall (windows-amd64), type Win32finddata struct, FileAttributes uint32 pkg syscall (windows-amd64), type Win32finddata struct, FileName [259]uint16 pkg syscall (windows-amd64), type Win32finddata struct, FileSizeHigh uint32 pkg syscall (windows-amd64), type Win32finddata struct, FileSizeLow uint32 pkg syscall (windows-amd64), type Win32finddata struct, LastAccessTime Filetime pkg syscall (windows-amd64), type Win32finddata struct, LastWriteTime Filetime pkg syscall (windows-amd64), type Win32finddata struct, Reserved0 uint32 pkg syscall (windows-amd64), type Win32finddata struct, Reserved1 uint32 pkg syscall (windows-amd64), var OID_PKIX_KP_SERVER_AUTH []uint8 pkg syscall (windows-amd64), var OID_SERVER_GATED_CRYPTO []uint8 pkg syscall (windows-amd64), var OID_SGC_NETSCAPE []uint8 pkg syscall (windows-amd64), var Stderr Handle pkg syscall (windows-amd64), var Stdin Handle pkg syscall (windows-amd64), var Stdout Handle pkg syscall, const AF_INET ideal-int pkg syscall, const AF_INET6 ideal-int pkg syscall, const AF_UNIX ideal-int pkg syscall, const AF_UNSPEC ideal-int pkg syscall, const E2BIG Errno pkg syscall, const EACCES Errno pkg syscall, const EADDRINUSE Errno pkg syscall, const EADDRNOTAVAIL Errno pkg syscall, const EAFNOSUPPORT Errno pkg syscall, const EAGAIN Errno pkg syscall, const EALREADY Errno pkg syscall, const EBADF Errno pkg syscall, const EBUSY Errno pkg syscall, const ECANCELED Errno pkg syscall, const ECHILD Errno pkg syscall, const ECONNABORTED Errno pkg syscall, const ECONNREFUSED Errno pkg syscall, const ECONNRESET Errno pkg syscall, const EDEADLK Errno pkg syscall, const EDESTADDRREQ Errno pkg syscall, const EDOM Errno pkg syscall, const EDQUOT Errno pkg syscall, const EEXIST Errno pkg syscall, const EFAULT Errno pkg syscall, const EFBIG Errno pkg syscall, const EHOSTDOWN Errno pkg syscall, const EHOSTUNREACH Errno pkg syscall, const EIDRM Errno pkg syscall, const EILSEQ Errno pkg syscall, const EINPROGRESS Errno pkg syscall, const EINTR Errno pkg syscall, const EINVAL Errno pkg syscall, const EIO Errno pkg syscall, const EISCONN Errno pkg syscall, const EISDIR Errno pkg syscall, const ELOOP Errno pkg syscall, const EMFILE Errno pkg syscall, const EMLINK Errno pkg syscall, const EMSGSIZE Errno pkg syscall, const ENAMETOOLONG Errno pkg syscall, const ENETDOWN Errno pkg syscall, const ENETRESET Errno pkg syscall, const ENETUNREACH Errno pkg syscall, const ENFILE Errno pkg syscall, const ENOBUFS Errno pkg syscall, const ENODEV Errno pkg syscall, const ENOENT Errno pkg syscall, const ENOEXEC Errno pkg syscall, const ENOLCK Errno pkg syscall, const ENOMEM Errno pkg syscall, const ENOMSG Errno pkg syscall, const ENOPROTOOPT Errno pkg syscall, const ENOSPC Errno pkg syscall, const ENOSYS Errno pkg syscall, const ENOTBLK Errno pkg syscall, const ENOTCONN Errno pkg syscall, const ENOTDIR Errno pkg syscall, const ENOTEMPTY Errno pkg syscall, const ENOTSOCK Errno pkg syscall, const ENOTSUP Errno pkg syscall, const ENOTTY Errno pkg syscall, const ENXIO Errno pkg syscall, const EOPNOTSUPP Errno pkg syscall, const EOVERFLOW Errno pkg syscall, const EPERM Errno pkg syscall, const EPFNOSUPPORT Errno pkg syscall, const EPIPE Errno pkg syscall, const EPROTONOSUPPORT Errno pkg syscall, const EPROTOTYPE Errno pkg syscall, const ERANGE Errno pkg syscall, const EREMOTE Errno pkg syscall, const EROFS Errno pkg syscall, const ESHUTDOWN Errno pkg syscall, const ESOCKTNOSUPPORT Errno pkg syscall, const ESPIPE Errno pkg syscall, const ESRCH Errno pkg syscall, const ESTALE Errno pkg syscall, const ETIMEDOUT Errno pkg syscall, const ETOOMANYREFS Errno pkg syscall, const ETXTBSY Errno pkg syscall, const EUSERS Errno pkg syscall, const EWOULDBLOCK Errno pkg syscall, const EXDEV Errno pkg syscall, const IFF_BROADCAST ideal-int pkg syscall, const IFF_LOOPBACK ideal-int pkg syscall, const IFF_MULTICAST ideal-int pkg syscall, const IFF_UP ideal-int pkg syscall, const IPPROTO_IP ideal-int pkg syscall, const IPPROTO_IPV6 ideal-int pkg syscall, const IPPROTO_TCP ideal-int pkg syscall, const IPPROTO_UDP ideal-int pkg syscall, const IPV6_JOIN_GROUP ideal-int pkg syscall, const IPV6_LEAVE_GROUP ideal-int pkg syscall, const IPV6_MULTICAST_HOPS ideal-int pkg syscall, const IPV6_MULTICAST_IF ideal-int pkg syscall, const IPV6_MULTICAST_LOOP ideal-int pkg syscall, const IPV6_UNICAST_HOPS ideal-int pkg syscall, const IPV6_V6ONLY ideal-int pkg syscall, const IP_ADD_MEMBERSHIP ideal-int pkg syscall, const IP_DROP_MEMBERSHIP ideal-int pkg syscall, const IP_MULTICAST_IF ideal-int pkg syscall, const IP_MULTICAST_LOOP ideal-int pkg syscall, const IP_MULTICAST_TTL ideal-int pkg syscall, const IP_TOS ideal-int pkg syscall, const IP_TTL ideal-int pkg syscall, const ImplementsGetwd ideal-bool pkg syscall, const O_APPEND ideal-int pkg syscall, const O_ASYNC ideal-int pkg syscall, const O_CLOEXEC ideal-int pkg syscall, const O_CREAT ideal-int pkg syscall, const O_EXCL ideal-int pkg syscall, const O_NOCTTY ideal-int pkg syscall, const O_NONBLOCK ideal-int pkg syscall, const O_RDONLY ideal-int pkg syscall, const O_RDWR ideal-int pkg syscall, const O_SYNC ideal-int pkg syscall, const O_TRUNC ideal-int pkg syscall, const O_WRONLY ideal-int pkg syscall, const SHUT_RD ideal-int pkg syscall, const SHUT_RDWR ideal-int pkg syscall, const SHUT_WR ideal-int pkg syscall, const SIGABRT Signal pkg syscall, const SIGALRM Signal pkg syscall, const SIGBUS Signal pkg syscall, const SIGFPE Signal pkg syscall, const SIGHUP Signal pkg syscall, const SIGILL Signal pkg syscall, const SIGINT Signal pkg syscall, const SIGKILL Signal pkg syscall, const SIGPIPE Signal pkg syscall, const SIGQUIT Signal pkg syscall, const SIGSEGV Signal pkg syscall, const SIGTERM Signal pkg syscall, const SIGTRAP Signal pkg syscall, const SOCK_DGRAM ideal-int pkg syscall, const SOCK_RAW ideal-int pkg syscall, const SOCK_SEQPACKET ideal-int pkg syscall, const SOCK_STREAM ideal-int pkg syscall, const SOL_SOCKET ideal-int pkg syscall, const SOMAXCONN ideal-int pkg syscall, const SO_BROADCAST ideal-int pkg syscall, const SO_DONTROUTE ideal-int pkg syscall, const SO_KEEPALIVE ideal-int pkg syscall, const SO_LINGER ideal-int pkg syscall, const SO_RCVBUF ideal-int pkg syscall, const SO_REUSEADDR ideal-int pkg syscall, const SO_SNDBUF ideal-int pkg syscall, const S_IFBLK ideal-int pkg syscall, const S_IFCHR ideal-int pkg syscall, const S_IFDIR ideal-int pkg syscall, const S_IFIFO ideal-int pkg syscall, const S_IFLNK ideal-int pkg syscall, const S_IFMT ideal-int pkg syscall, const S_IFREG ideal-int pkg syscall, const S_IFSOCK ideal-int pkg syscall, const S_IRUSR ideal-int pkg syscall, const S_ISGID ideal-int pkg syscall, const S_ISUID ideal-int pkg syscall, const S_ISVTX ideal-int pkg syscall, const S_IWUSR ideal-int pkg syscall, const S_IXUSR ideal-int pkg syscall, const TCP_NODELAY ideal-int pkg syscall, func Chdir(string) error pkg syscall, func Chmod(string, uint32) error pkg syscall, func Chown(string, int, int) error pkg syscall, func Clearenv() pkg syscall, func Environ() []string pkg syscall, func Exec(string, []string, []string) error pkg syscall, func Exit(int) pkg syscall, func Getegid() int pkg syscall, func Getenv(string) (string, bool) pkg syscall, func Geteuid() int pkg syscall, func Getgid() int pkg syscall, func Getgroups() ([]int, error) pkg syscall, func Getpagesize() int pkg syscall, func Getpid() int pkg syscall, func Getppid() int pkg syscall, func Gettimeofday(*Timeval) error pkg syscall, func Getuid() int pkg syscall, func Getwd() (string, error) pkg syscall, func Lchown(string, int, int) error pkg syscall, func Link(string, string) error pkg syscall, func Mkdir(string, uint32) error pkg syscall, func NsecToTimeval(int64) Timeval pkg syscall, func Readlink(string, []uint8) (int, error) pkg syscall, func Rename(string, string) error pkg syscall, func Rmdir(string) error pkg syscall, func Setenv(string, string) error pkg syscall, func StartProcess(string, []string, *ProcAttr) (int, uintptr, error) pkg syscall, func StringBytePtr(string) *uint8 pkg syscall, func StringByteSlice(string) []uint8 pkg syscall, func Symlink(string, string) error pkg syscall, func Unlink(string) error pkg syscall, func Utimes(string, []Timeval) error pkg syscall, method (*Timespec) Nano() int64 pkg syscall, method (*Timespec) Unix() (int64, int64) pkg syscall, method (*Timeval) Nano() int64 pkg syscall, method (*Timeval) Unix() (int64, int64) pkg syscall, method (Errno) Error() string pkg syscall, method (Errno) Temporary() bool pkg syscall, method (Errno) Timeout() bool pkg syscall, method (Signal) Signal() pkg syscall, method (Signal) String() string pkg syscall, method (WaitStatus) Continued() bool pkg syscall, method (WaitStatus) CoreDump() bool pkg syscall, method (WaitStatus) ExitStatus() int pkg syscall, method (WaitStatus) Exited() bool pkg syscall, method (WaitStatus) Signal() Signal pkg syscall, method (WaitStatus) Signaled() bool pkg syscall, method (WaitStatus) StopSignal() Signal pkg syscall, method (WaitStatus) Stopped() bool pkg syscall, method (WaitStatus) TrapCause() int pkg syscall, type Errno uintptr pkg syscall, type IPMreq struct pkg syscall, type IPMreq struct, Interface [4]uint8 pkg syscall, type IPMreq struct, Multiaddr [4]uint8 pkg syscall, type IPv6Mreq struct pkg syscall, type IPv6Mreq struct, Interface uint32 pkg syscall, type IPv6Mreq struct, Multiaddr [16]uint8 pkg syscall, type Linger struct pkg syscall, type Linger struct, Linger int32 pkg syscall, type Linger struct, Onoff int32 pkg syscall, type ProcAttr struct pkg syscall, type ProcAttr struct, Dir string pkg syscall, type ProcAttr struct, Env []string pkg syscall, type ProcAttr struct, Files []uintptr pkg syscall, type ProcAttr struct, Sys *SysProcAttr pkg syscall, type RawSockaddr struct pkg syscall, type RawSockaddrAny struct pkg syscall, type RawSockaddrAny struct, Addr RawSockaddr pkg syscall, type RawSockaddrInet4 struct pkg syscall, type RawSockaddrInet4 struct, Addr [4]uint8 pkg syscall, type RawSockaddrInet4 struct, Port uint16 pkg syscall, type Rusage struct pkg syscall, type Signal int pkg syscall, type Sockaddr interface, unexported methods pkg syscall, type SockaddrInet4 struct pkg syscall, type SockaddrInet4 struct, Addr [4]uint8 pkg syscall, type SockaddrInet4 struct, Port int pkg syscall, type SockaddrInet6 struct pkg syscall, type SockaddrInet6 struct, Addr [16]uint8 pkg syscall, type SockaddrInet6 struct, Port int pkg syscall, type SockaddrInet6 struct, ZoneId uint32 pkg syscall, type SockaddrUnix struct pkg syscall, type SockaddrUnix struct, Name string pkg syscall, type SysProcAttr struct pkg syscall, type Timespec struct pkg syscall, type Timeval struct pkg syscall, var ForkLock sync.RWMutex pkg syscall, var SocketDisableIPv6 bool pkg testing, func Benchmark(func(*B)) BenchmarkResult pkg testing, func Main(func(string, string) (bool, error), []InternalTest, []InternalBenchmark, []InternalExample) pkg testing, func RunBenchmarks(func(string, string) (bool, error), []InternalBenchmark) pkg testing, func RunExamples(func(string, string) (bool, error), []InternalExample) bool pkg testing, func RunTests(func(string, string) (bool, error), []InternalTest) bool pkg testing, func Short() bool pkg testing, method (*B) Error(...interface{}) pkg testing, method (*B) Errorf(string, ...interface{}) pkg testing, method (*B) Fail() pkg testing, method (*B) FailNow() pkg testing, method (*B) Failed() bool pkg testing, method (*B) Fatal(...interface{}) pkg testing, method (*B) Fatalf(string, ...interface{}) pkg testing, method (*B) Log(...interface{}) pkg testing, method (*B) Logf(string, ...interface{}) pkg testing, method (*B) ResetTimer() pkg testing, method (*B) SetBytes(int64) pkg testing, method (*B) StartTimer() pkg testing, method (*B) StopTimer() pkg testing, method (*T) Error(...interface{}) pkg testing, method (*T) Errorf(string, ...interface{}) pkg testing, method (*T) Fail() pkg testing, method (*T) FailNow() pkg testing, method (*T) Failed() bool pkg testing, method (*T) Fatal(...interface{}) pkg testing, method (*T) Fatalf(string, ...interface{}) pkg testing, method (*T) Log(...interface{}) pkg testing, method (*T) Logf(string, ...interface{}) pkg testing, method (*T) Parallel() pkg testing, method (BenchmarkResult) NsPerOp() int64 pkg testing, method (BenchmarkResult) String() string pkg testing, type B struct pkg testing, type B struct, N int pkg testing, type BenchmarkResult struct pkg testing, type BenchmarkResult struct, Bytes int64 pkg testing, type BenchmarkResult struct, N int pkg testing, type BenchmarkResult struct, T time.Duration pkg testing, type InternalBenchmark struct pkg testing, type InternalBenchmark struct, F func(*B) pkg testing, type InternalBenchmark struct, Name string pkg testing, type InternalExample struct pkg testing, type InternalExample struct, F func() pkg testing, type InternalExample struct, Name string pkg testing, type InternalExample struct, Output string pkg testing, type InternalTest struct pkg testing, type InternalTest struct, F func(*T) pkg testing, type InternalTest struct, Name string pkg testing, type T struct pkg testing/iotest, func DataErrReader(io.Reader) io.Reader pkg testing/iotest, func HalfReader(io.Reader) io.Reader pkg testing/iotest, func NewReadLogger(string, io.Reader) io.Reader pkg testing/iotest, func NewWriteLogger(string, io.Writer) io.Writer pkg testing/iotest, func OneByteReader(io.Reader) io.Reader pkg testing/iotest, func TimeoutReader(io.Reader) io.Reader pkg testing/iotest, func TruncateWriter(io.Writer, int64) io.Writer pkg testing/iotest, var ErrTimeout error pkg testing/quick, func Check(interface{}, *Config) error pkg testing/quick, func CheckEqual(interface{}, interface{}, *Config) error pkg testing/quick, func Value(reflect.Type, *rand.Rand) (reflect.Value, bool) pkg testing/quick, method (*CheckEqualError) Error() string pkg testing/quick, method (*CheckError) Error() string pkg testing/quick, method (SetupError) Error() string pkg testing/quick, type CheckEqualError struct pkg testing/quick, type CheckEqualError struct, Out1 []interface{} pkg testing/quick, type CheckEqualError struct, Out2 []interface{} pkg testing/quick, type CheckEqualError struct, embedded CheckError pkg testing/quick, type CheckError struct pkg testing/quick, type CheckError struct, Count int pkg testing/quick, type CheckError struct, In []interface{} pkg testing/quick, type Config struct pkg testing/quick, type Config struct, MaxCount int pkg testing/quick, type Config struct, MaxCountScale float64 pkg testing/quick, type Config struct, Rand *rand.Rand pkg testing/quick, type Config struct, Values func([]reflect.Value, *rand.Rand) pkg testing/quick, type Generator interface { Generate } pkg testing/quick, type Generator interface, Generate(*rand.Rand, int) reflect.Value pkg testing/quick, type SetupError string pkg text/scanner, const Char ideal-int pkg text/scanner, const Comment ideal-int pkg text/scanner, const EOF ideal-int pkg text/scanner, const Float ideal-int pkg text/scanner, const GoTokens ideal-int pkg text/scanner, const GoWhitespace ideal-int pkg text/scanner, const Ident ideal-int pkg text/scanner, const Int ideal-int pkg text/scanner, const RawString ideal-int pkg text/scanner, const ScanChars ideal-int pkg text/scanner, const ScanComments ideal-int pkg text/scanner, const ScanFloats ideal-int pkg text/scanner, const ScanIdents ideal-int pkg text/scanner, const ScanInts ideal-int pkg text/scanner, const ScanRawStrings ideal-int pkg text/scanner, const ScanStrings ideal-int pkg text/scanner, const SkipComments ideal-int pkg text/scanner, const String ideal-int pkg text/scanner, func TokenString(int32) string pkg text/scanner, method (*Position) IsValid() bool pkg text/scanner, method (*Scanner) Init(io.Reader) *Scanner pkg text/scanner, method (*Scanner) IsValid() bool pkg text/scanner, method (*Scanner) Next() int32 pkg text/scanner, method (*Scanner) Peek() int32 pkg text/scanner, method (*Scanner) Pos() Position pkg text/scanner, method (*Scanner) Scan() int32 pkg text/scanner, method (*Scanner) TokenText() string pkg text/scanner, method (Position) String() string pkg text/scanner, method (Scanner) String() string pkg text/scanner, type Position struct pkg text/scanner, type Position struct, Column int pkg text/scanner, type Position struct, Filename string pkg text/scanner, type Position struct, Line int pkg text/scanner, type Position struct, Offset int pkg text/scanner, type Scanner struct pkg text/scanner, type Scanner struct, Error func(*Scanner, string) pkg text/scanner, type Scanner struct, ErrorCount int pkg text/scanner, type Scanner struct, Mode uint pkg text/scanner, type Scanner struct, Whitespace uint64 pkg text/scanner, type Scanner struct, embedded Position pkg text/tabwriter, const AlignRight uint pkg text/tabwriter, const Debug uint pkg text/tabwriter, const DiscardEmptyColumns uint pkg text/tabwriter, const Escape ideal-char pkg text/tabwriter, const FilterHTML uint pkg text/tabwriter, const StripEscape uint pkg text/tabwriter, const TabIndent uint pkg text/tabwriter, func NewWriter(io.Writer, int, int, int, uint8, uint) *Writer pkg text/tabwriter, method (*Writer) Flush() error pkg text/tabwriter, method (*Writer) Init(io.Writer, int, int, int, uint8, uint) *Writer pkg text/tabwriter, method (*Writer) Write([]uint8) (int, error) pkg text/tabwriter, type Writer struct pkg text/template, func HTMLEscape(io.Writer, []uint8) pkg text/template, func HTMLEscapeString(string) string pkg text/template, func HTMLEscaper(...interface{}) string pkg text/template, func JSEscape(io.Writer, []uint8) pkg text/template, func JSEscapeString(string) string pkg text/template, func JSEscaper(...interface{}) string pkg text/template, func Must(*Template, error) *Template pkg text/template, func New(string) *Template pkg text/template, func ParseFiles(...string) (*Template, error) pkg text/template, func ParseGlob(string) (*Template, error) pkg text/template, func URLQueryEscaper(...interface{}) string pkg text/template, method (*Template) AddParseTree(string, *parse.Tree) (*Template, error) pkg text/template, method (*Template) Clone() (*Template, error) pkg text/template, method (*Template) Delims(string, string) *Template pkg text/template, method (*Template) Execute(io.Writer, interface{}) error pkg text/template, method (*Template) ExecuteTemplate(io.Writer, string, interface{}) error pkg text/template, method (*Template) Funcs(FuncMap) *Template pkg text/template, method (*Template) Lookup(string) *Template pkg text/template, method (*Template) Name() string pkg text/template, method (*Template) New(string) *Template pkg text/template, method (*Template) Parse(string) (*Template, error) pkg text/template, method (*Template) ParseFiles(...string) (*Template, error) pkg text/template, method (*Template) ParseGlob(string) (*Template, error) pkg text/template, method (*Template) Templates() []*Template pkg text/template, type FuncMap map[string]interface{} pkg text/template, type Template struct pkg text/template, type Template struct, embedded *parse.Tree pkg text/template/parse, const NodeAction NodeType pkg text/template/parse, const NodeBool NodeType pkg text/template/parse, const NodeCommand NodeType pkg text/template/parse, const NodeDot NodeType pkg text/template/parse, const NodeField NodeType pkg text/template/parse, const NodeIdentifier NodeType pkg text/template/parse, const NodeIf NodeType pkg text/template/parse, const NodeList NodeType pkg text/template/parse, const NodeNumber NodeType pkg text/template/parse, const NodePipe NodeType pkg text/template/parse, const NodeRange NodeType pkg text/template/parse, const NodeString NodeType pkg text/template/parse, const NodeTemplate NodeType pkg text/template/parse, const NodeText NodeType pkg text/template/parse, const NodeVariable NodeType pkg text/template/parse, const NodeWith NodeType pkg text/template/parse, func IsEmptyTree(Node) bool pkg text/template/parse, func New(string, ...map[string]interface{}) *Tree pkg text/template/parse, func NewIdentifier(string) *IdentifierNode pkg text/template/parse, func Parse(string, string, string, string, ...map[string]interface{}) (map[string]*Tree, error) pkg text/template/parse, method (*ActionNode) Copy() Node pkg text/template/parse, method (*ActionNode) String() string pkg text/template/parse, method (*BoolNode) Copy() Node pkg text/template/parse, method (*BoolNode) String() string pkg text/template/parse, method (*BranchNode) String() string pkg text/template/parse, method (*CommandNode) Copy() Node pkg text/template/parse, method (*CommandNode) String() string pkg text/template/parse, method (*DotNode) Copy() Node pkg text/template/parse, method (*DotNode) String() string pkg text/template/parse, method (*DotNode) Type() NodeType pkg text/template/parse, method (*FieldNode) Copy() Node pkg text/template/parse, method (*FieldNode) String() string pkg text/template/parse, method (*IdentifierNode) Copy() Node pkg text/template/parse, method (*IdentifierNode) String() string pkg text/template/parse, method (*IfNode) Copy() Node pkg text/template/parse, method (*IfNode) String() string pkg text/template/parse, method (*ListNode) Copy() Node pkg text/template/parse, method (*ListNode) CopyList() *ListNode pkg text/template/parse, method (*ListNode) String() string pkg text/template/parse, method (*NumberNode) Copy() Node pkg text/template/parse, method (*NumberNode) String() string pkg text/template/parse, method (*PipeNode) Copy() Node pkg text/template/parse, method (*PipeNode) CopyPipe() *PipeNode pkg text/template/parse, method (*PipeNode) String() string pkg text/template/parse, method (*RangeNode) Copy() Node pkg text/template/parse, method (*RangeNode) String() string pkg text/template/parse, method (*StringNode) Copy() Node pkg text/template/parse, method (*StringNode) String() string pkg text/template/parse, method (*TemplateNode) Copy() Node pkg text/template/parse, method (*TemplateNode) String() string pkg text/template/parse, method (*TextNode) Copy() Node pkg text/template/parse, method (*TextNode) String() string pkg text/template/parse, method (*Tree) Parse(string, string, string, map[string]*Tree, ...map[string]interface{}) (*Tree, error) pkg text/template/parse, method (*VariableNode) Copy() Node pkg text/template/parse, method (*VariableNode) String() string pkg text/template/parse, method (*WithNode) Copy() Node pkg text/template/parse, method (*WithNode) String() string pkg text/template/parse, method (ActionNode) Type() NodeType pkg text/template/parse, method (BoolNode) Type() NodeType pkg text/template/parse, method (BranchNode) Type() NodeType pkg text/template/parse, method (CommandNode) Type() NodeType pkg text/template/parse, method (FieldNode) Type() NodeType pkg text/template/parse, method (IdentifierNode) Type() NodeType pkg text/template/parse, method (IfNode) Type() NodeType pkg text/template/parse, method (ListNode) Type() NodeType pkg text/template/parse, method (NodeType) Type() NodeType pkg text/template/parse, method (NumberNode) Type() NodeType pkg text/template/parse, method (PipeNode) Type() NodeType pkg text/template/parse, method (RangeNode) Type() NodeType pkg text/template/parse, method (StringNode) Type() NodeType pkg text/template/parse, method (TemplateNode) Type() NodeType pkg text/template/parse, method (TextNode) Type() NodeType pkg text/template/parse, method (VariableNode) Type() NodeType pkg text/template/parse, method (WithNode) Type() NodeType pkg text/template/parse, type ActionNode struct pkg text/template/parse, type ActionNode struct, Line int pkg text/template/parse, type ActionNode struct, Pipe *PipeNode pkg text/template/parse, type ActionNode struct, embedded NodeType pkg text/template/parse, type BoolNode struct pkg text/template/parse, type BoolNode struct, True bool pkg text/template/parse, type BoolNode struct, embedded NodeType pkg text/template/parse, type BranchNode struct pkg text/template/parse, type BranchNode struct, ElseList *ListNode pkg text/template/parse, type BranchNode struct, Line int pkg text/template/parse, type BranchNode struct, List *ListNode pkg text/template/parse, type BranchNode struct, Pipe *PipeNode pkg text/template/parse, type BranchNode struct, embedded NodeType pkg text/template/parse, type CommandNode struct pkg text/template/parse, type CommandNode struct, Args []Node pkg text/template/parse, type CommandNode struct, embedded NodeType pkg text/template/parse, type DotNode bool pkg text/template/parse, type FieldNode struct pkg text/template/parse, type FieldNode struct, Ident []string pkg text/template/parse, type FieldNode struct, embedded NodeType pkg text/template/parse, type IdentifierNode struct pkg text/template/parse, type IdentifierNode struct, Ident string pkg text/template/parse, type IdentifierNode struct, embedded NodeType pkg text/template/parse, type IfNode struct pkg text/template/parse, type IfNode struct, embedded BranchNode pkg text/template/parse, type ListNode struct pkg text/template/parse, type ListNode struct, Nodes []Node pkg text/template/parse, type ListNode struct, embedded NodeType pkg text/template/parse, type Node interface { Copy, String, Type } pkg text/template/parse, type Node interface, Copy() Node pkg text/template/parse, type Node interface, String() string pkg text/template/parse, type Node interface, Type() NodeType pkg text/template/parse, type NodeType int pkg text/template/parse, type NumberNode struct pkg text/template/parse, type NumberNode struct, Complex128 complex128 pkg text/template/parse, type NumberNode struct, Float64 float64 pkg text/template/parse, type NumberNode struct, Int64 int64 pkg text/template/parse, type NumberNode struct, IsComplex bool pkg text/template/parse, type NumberNode struct, IsFloat bool pkg text/template/parse, type NumberNode struct, IsInt bool pkg text/template/parse, type NumberNode struct, IsUint bool pkg text/template/parse, type NumberNode struct, Text string pkg text/template/parse, type NumberNode struct, Uint64 uint64 pkg text/template/parse, type NumberNode struct, embedded NodeType pkg text/template/parse, type PipeNode struct pkg text/template/parse, type PipeNode struct, Cmds []*CommandNode pkg text/template/parse, type PipeNode struct, Decl []*VariableNode pkg text/template/parse, type PipeNode struct, Line int pkg text/template/parse, type PipeNode struct, embedded NodeType pkg text/template/parse, type RangeNode struct pkg text/template/parse, type RangeNode struct, embedded BranchNode pkg text/template/parse, type StringNode struct pkg text/template/parse, type StringNode struct, Quoted string pkg text/template/parse, type StringNode struct, Text string pkg text/template/parse, type StringNode struct, embedded NodeType pkg text/template/parse, type TemplateNode struct pkg text/template/parse, type TemplateNode struct, Line int pkg text/template/parse, type TemplateNode struct, Name string pkg text/template/parse, type TemplateNode struct, Pipe *PipeNode pkg text/template/parse, type TemplateNode struct, embedded NodeType pkg text/template/parse, type TextNode struct pkg text/template/parse, type TextNode struct, Text []uint8 pkg text/template/parse, type TextNode struct, embedded NodeType pkg text/template/parse, type Tree struct pkg text/template/parse, type Tree struct, Name string pkg text/template/parse, type Tree struct, Root *ListNode pkg text/template/parse, type VariableNode struct pkg text/template/parse, type VariableNode struct, Ident []string pkg text/template/parse, type VariableNode struct, embedded NodeType pkg text/template/parse, type WithNode struct pkg text/template/parse, type WithNode struct, embedded BranchNode pkg time, const ANSIC ideal-string pkg time, const April Month pkg time, const August Month pkg time, const December Month pkg time, const February Month pkg time, const Friday Weekday pkg time, const Hour Duration pkg time, const January Month pkg time, const July Month pkg time, const June Month pkg time, const Kitchen ideal-string pkg time, const March Month pkg time, const May Month pkg time, const Microsecond Duration pkg time, const Millisecond Duration pkg time, const Minute Duration pkg time, const Monday Weekday pkg time, const Nanosecond Duration pkg time, const November Month pkg time, const October Month pkg time, const RFC1123 ideal-string pkg time, const RFC1123Z ideal-string pkg time, const RFC3339 ideal-string pkg time, const RFC3339Nano ideal-string pkg time, const RFC822 ideal-string pkg time, const RFC822Z ideal-string pkg time, const RFC850 ideal-string pkg time, const RubyDate ideal-string pkg time, const Saturday Weekday pkg time, const Second Duration pkg time, const September Month pkg time, const Stamp ideal-string pkg time, const StampMicro ideal-string pkg time, const StampMilli ideal-string pkg time, const StampNano ideal-string pkg time, const Sunday Weekday pkg time, const Thursday Weekday pkg time, const Tuesday Weekday pkg time, const UnixDate ideal-string pkg time, const Wednesday Weekday pkg time, func After(Duration) <-chan Time pkg time, func AfterFunc(Duration, func()) *Timer pkg time, func Date(int, Month, int, int, int, int, int, *Location) Time pkg time, func FixedZone(string, int) *Location pkg time, func LoadLocation(string) (*Location, error) pkg time, func NewTicker(Duration) *Ticker pkg time, func NewTimer(Duration) *Timer pkg time, func Now() Time pkg time, func Parse(string, string) (Time, error) pkg time, func ParseDuration(string) (Duration, error) pkg time, func Since(Time) Duration pkg time, func Sleep(Duration) pkg time, func Tick(Duration) <-chan Time pkg time, func Unix(int64, int64) Time pkg time, method (*Location) String() string pkg time, method (*ParseError) Error() string pkg time, method (*Ticker) Stop() pkg time, method (*Time) GobDecode([]uint8) error pkg time, method (*Time) UnmarshalJSON([]uint8) error pkg time, method (*Timer) Stop() bool pkg time, method (Duration) Hours() float64 pkg time, method (Duration) Minutes() float64 pkg time, method (Duration) Nanoseconds() int64 pkg time, method (Duration) Seconds() float64 pkg time, method (Duration) String() string pkg time, method (Month) String() string pkg time, method (Time) Add(Duration) Time pkg time, method (Time) AddDate(int, int, int) Time pkg time, method (Time) After(Time) bool pkg time, method (Time) Before(Time) bool pkg time, method (Time) Clock() (int, int, int) pkg time, method (Time) Date() (int, Month, int) pkg time, method (Time) Day() int pkg time, method (Time) Equal(Time) bool pkg time, method (Time) Format(string) string pkg time, method (Time) GobEncode() ([]uint8, error) pkg time, method (Time) Hour() int pkg time, method (Time) ISOWeek() (int, int) pkg time, method (Time) In(*Location) Time pkg time, method (Time) IsZero() bool pkg time, method (Time) Local() Time pkg time, method (Time) Location() *Location pkg time, method (Time) MarshalJSON() ([]uint8, error) pkg time, method (Time) Minute() int pkg time, method (Time) Month() Month pkg time, method (Time) Nanosecond() int pkg time, method (Time) Second() int pkg time, method (Time) String() string pkg time, method (Time) Sub(Time) Duration pkg time, method (Time) UTC() Time pkg time, method (Time) Unix() int64 pkg time, method (Time) UnixNano() int64 pkg time, method (Time) Weekday() Weekday pkg time, method (Time) Year() int pkg time, method (Time) Zone() (string, int) pkg time, method (Weekday) String() string pkg time, type Duration int64 pkg time, type Location struct pkg time, type Month int pkg time, type ParseError struct pkg time, type ParseError struct, Layout string pkg time, type ParseError struct, LayoutElem string pkg time, type ParseError struct, Message string pkg time, type ParseError struct, Value string pkg time, type ParseError struct, ValueElem string pkg time, type Ticker struct pkg time, type Ticker struct, C <-chan Time pkg time, type Time struct pkg time, type Timer struct pkg time, type Timer struct, C <-chan Time pkg time, type Weekday int pkg time, var Local *Location pkg time, var UTC *Location pkg unicode, const LowerCase ideal-int pkg unicode, const MaxASCII ideal-char pkg unicode, const MaxCase ideal-int pkg unicode, const MaxLatin1 ideal-char pkg unicode, const MaxRune ideal-char pkg unicode, const ReplacementChar ideal-char pkg unicode, const TitleCase ideal-int pkg unicode, const UpperCase ideal-int pkg unicode, const UpperLower ideal-char pkg unicode, const Version ideal-string pkg unicode, func Is(*RangeTable, int32) bool pkg unicode, func IsControl(int32) bool pkg unicode, func IsDigit(int32) bool pkg unicode, func IsGraphic(int32) bool pkg unicode, func IsLetter(int32) bool pkg unicode, func IsLower(int32) bool pkg unicode, func IsMark(int32) bool pkg unicode, func IsNumber(int32) bool pkg unicode, func IsOneOf([]*RangeTable, int32) bool pkg unicode, func IsPrint(int32) bool pkg unicode, func IsPunct(int32) bool pkg unicode, func IsSpace(int32) bool pkg unicode, func IsSymbol(int32) bool pkg unicode, func IsTitle(int32) bool pkg unicode, func IsUpper(int32) bool pkg unicode, func SimpleFold(int32) int32 pkg unicode, func To(int, int32) int32 pkg unicode, func ToLower(int32) int32 pkg unicode, func ToTitle(int32) int32 pkg unicode, func ToUpper(int32) int32 pkg unicode, method (SpecialCase) ToLower(int32) int32 pkg unicode, method (SpecialCase) ToTitle(int32) int32 pkg unicode, method (SpecialCase) ToUpper(int32) int32 pkg unicode, type CaseRange struct pkg unicode, type CaseRange struct, Delta d pkg unicode, type CaseRange struct, Hi uint32 pkg unicode, type CaseRange struct, Lo uint32 pkg unicode, type Range16 struct pkg unicode, type Range16 struct, Hi uint16 pkg unicode, type Range16 struct, Lo uint16 pkg unicode, type Range16 struct, Stride uint16 pkg unicode, type Range32 struct pkg unicode, type Range32 struct, Hi uint32 pkg unicode, type Range32 struct, Lo uint32 pkg unicode, type Range32 struct, Stride uint32 pkg unicode, type RangeTable struct pkg unicode, type RangeTable struct, R16 []Range16 pkg unicode, type RangeTable struct, R32 []Range32 pkg unicode, type SpecialCase []CaseRange pkg unicode, var ASCII_Hex_Digit *RangeTable pkg unicode, var Arabic *RangeTable pkg unicode, var Armenian *RangeTable pkg unicode, var Avestan *RangeTable pkg unicode, var AzeriCase SpecialCase pkg unicode, var Balinese *RangeTable pkg unicode, var Bamum *RangeTable pkg unicode, var Batak *RangeTable pkg unicode, var Bengali *RangeTable pkg unicode, var Bidi_Control *RangeTable pkg unicode, var Bopomofo *RangeTable pkg unicode, var Brahmi *RangeTable pkg unicode, var Braille *RangeTable pkg unicode, var Buginese *RangeTable pkg unicode, var Buhid *RangeTable pkg unicode, var C *RangeTable pkg unicode, var Canadian_Aboriginal *RangeTable pkg unicode, var Carian *RangeTable pkg unicode, var CaseRanges []CaseRange pkg unicode, var Categories map[string]*RangeTable pkg unicode, var Cc *RangeTable pkg unicode, var Cf *RangeTable pkg unicode, var Cham *RangeTable pkg unicode, var Cherokee *RangeTable pkg unicode, var Co *RangeTable pkg unicode, var Common *RangeTable pkg unicode, var Coptic *RangeTable pkg unicode, var Cs *RangeTable pkg unicode, var Cuneiform *RangeTable pkg unicode, var Cypriot *RangeTable pkg unicode, var Cyrillic *RangeTable pkg unicode, var Dash *RangeTable pkg unicode, var Deprecated *RangeTable pkg unicode, var Deseret *RangeTable pkg unicode, var Devanagari *RangeTable pkg unicode, var Diacritic *RangeTable pkg unicode, var Digit *RangeTable pkg unicode, var Egyptian_Hieroglyphs *RangeTable pkg unicode, var Ethiopic *RangeTable pkg unicode, var Extender *RangeTable pkg unicode, var FoldCategory map[string]*RangeTable pkg unicode, var FoldScript map[string]*RangeTable pkg unicode, var Georgian *RangeTable pkg unicode, var Glagolitic *RangeTable pkg unicode, var Gothic *RangeTable pkg unicode, var GraphicRanges []*RangeTable pkg unicode, var Greek *RangeTable pkg unicode, var Gujarati *RangeTable pkg unicode, var Gurmukhi *RangeTable pkg unicode, var Han *RangeTable pkg unicode, var Hangul *RangeTable pkg unicode, var Hanunoo *RangeTable pkg unicode, var Hebrew *RangeTable pkg unicode, var Hex_Digit *RangeTable pkg unicode, var Hiragana *RangeTable pkg unicode, var Hyphen *RangeTable pkg unicode, var IDS_Binary_Operator *RangeTable pkg unicode, var IDS_Trinary_Operator *RangeTable pkg unicode, var Ideographic *RangeTable pkg unicode, var Imperial_Aramaic *RangeTable pkg unicode, var Inherited *RangeTable pkg unicode, var Inscriptional_Pahlavi *RangeTable pkg unicode, var Inscriptional_Parthian *RangeTable pkg unicode, var Javanese *RangeTable pkg unicode, var Join_Control *RangeTable pkg unicode, var Kaithi *RangeTable pkg unicode, var Kannada *RangeTable pkg unicode, var Katakana *RangeTable pkg unicode, var Kayah_Li *RangeTable pkg unicode, var Kharoshthi *RangeTable pkg unicode, var Khmer *RangeTable pkg unicode, var L *RangeTable pkg unicode, var Lao *RangeTable pkg unicode, var Latin *RangeTable pkg unicode, var Lepcha *RangeTable pkg unicode, var Letter *RangeTable pkg unicode, var Limbu *RangeTable pkg unicode, var Linear_B *RangeTable pkg unicode, var Lisu *RangeTable pkg unicode, var Ll *RangeTable pkg unicode, var Lm *RangeTable pkg unicode, var Lo *RangeTable pkg unicode, var Logical_Order_Exception *RangeTable pkg unicode, var Lower *RangeTable pkg unicode, var Lt *RangeTable pkg unicode, var Lu *RangeTable pkg unicode, var Lycian *RangeTable pkg unicode, var Lydian *RangeTable pkg unicode, var M *RangeTable pkg unicode, var Malayalam *RangeTable pkg unicode, var Mandaic *RangeTable pkg unicode, var Mark *RangeTable pkg unicode, var Mc *RangeTable pkg unicode, var Me *RangeTable pkg unicode, var Meetei_Mayek *RangeTable pkg unicode, var Mn *RangeTable pkg unicode, var Mongolian *RangeTable pkg unicode, var Myanmar *RangeTable pkg unicode, var N *RangeTable pkg unicode, var Nd *RangeTable pkg unicode, var New_Tai_Lue *RangeTable pkg unicode, var Nko *RangeTable pkg unicode, var Nl *RangeTable pkg unicode, var No *RangeTable pkg unicode, var Noncharacter_Code_Point *RangeTable pkg unicode, var Number *RangeTable pkg unicode, var Ogham *RangeTable pkg unicode, var Ol_Chiki *RangeTable pkg unicode, var Old_Italic *RangeTable pkg unicode, var Old_Persian *RangeTable pkg unicode, var Old_South_Arabian *RangeTable pkg unicode, var Old_Turkic *RangeTable pkg unicode, var Oriya *RangeTable pkg unicode, var Osmanya *RangeTable pkg unicode, var Other *RangeTable pkg unicode, var Other_Alphabetic *RangeTable pkg unicode, var Other_Default_Ignorable_Code_Point *RangeTable pkg unicode, var Other_Grapheme_Extend *RangeTable pkg unicode, var Other_ID_Continue *RangeTable pkg unicode, var Other_ID_Start *RangeTable pkg unicode, var Other_Lowercase *RangeTable pkg unicode, var Other_Math *RangeTable pkg unicode, var Other_Uppercase *RangeTable pkg unicode, var P *RangeTable pkg unicode, var Pattern_Syntax *RangeTable pkg unicode, var Pattern_White_Space *RangeTable pkg unicode, var Pc *RangeTable pkg unicode, var Pd *RangeTable pkg unicode, var Pe *RangeTable pkg unicode, var Pf *RangeTable pkg unicode, var Phags_Pa *RangeTable pkg unicode, var Phoenician *RangeTable pkg unicode, var Pi *RangeTable pkg unicode, var Po *RangeTable pkg unicode, var PrintRanges []*RangeTable pkg unicode, var Properties map[string]*RangeTable pkg unicode, var Ps *RangeTable pkg unicode, var Punct *RangeTable pkg unicode, var Quotation_Mark *RangeTable pkg unicode, var Radical *RangeTable pkg unicode, var Rejang *RangeTable pkg unicode, var Runic *RangeTable pkg unicode, var S *RangeTable pkg unicode, var STerm *RangeTable pkg unicode, var Samaritan *RangeTable pkg unicode, var Saurashtra *RangeTable pkg unicode, var Sc *RangeTable pkg unicode, var Scripts map[string]*RangeTable pkg unicode, var Shavian *RangeTable pkg unicode, var Sinhala *RangeTable pkg unicode, var Sk *RangeTable pkg unicode, var Sm *RangeTable pkg unicode, var So *RangeTable pkg unicode, var Soft_Dotted *RangeTable pkg unicode, var Space *RangeTable pkg unicode, var Sundanese *RangeTable pkg unicode, var Syloti_Nagri *RangeTable pkg unicode, var Symbol *RangeTable pkg unicode, var Syriac *RangeTable pkg unicode, var Tagalog *RangeTable pkg unicode, var Tagbanwa *RangeTable pkg unicode, var Tai_Le *RangeTable pkg unicode, var Tai_Tham *RangeTable pkg unicode, var Tai_Viet *RangeTable pkg unicode, var Tamil *RangeTable pkg unicode, var Telugu *RangeTable pkg unicode, var Terminal_Punctuation *RangeTable pkg unicode, var Thaana *RangeTable pkg unicode, var Thai *RangeTable pkg unicode, var Tibetan *RangeTable pkg unicode, var Tifinagh *RangeTable pkg unicode, var Title *RangeTable pkg unicode, var TurkishCase SpecialCase pkg unicode, var Ugaritic *RangeTable pkg unicode, var Unified_Ideograph *RangeTable pkg unicode, var Upper *RangeTable pkg unicode, var Vai *RangeTable pkg unicode, var Variation_Selector *RangeTable pkg unicode, var White_Space *RangeTable pkg unicode, var Yi *RangeTable pkg unicode, var Z *RangeTable pkg unicode, var Zl *RangeTable pkg unicode, var Zp *RangeTable pkg unicode, var Zs *RangeTable pkg unicode/utf16, func Decode([]uint16) []int32 pkg unicode/utf16, func DecodeRune(int32, int32) int32 pkg unicode/utf16, func Encode([]int32) []uint16 pkg unicode/utf16, func EncodeRune(int32) (int32, int32) pkg unicode/utf16, func IsSurrogate(int32) bool pkg unicode/utf8, const MaxRune ideal-char pkg unicode/utf8, const RuneError ideal-char pkg unicode/utf8, const RuneSelf ideal-int pkg unicode/utf8, const UTFMax ideal-int pkg unicode/utf8, func DecodeLastRune([]uint8) (int32, int) pkg unicode/utf8, func DecodeLastRuneInString(string) (int32, int) pkg unicode/utf8, func DecodeRune([]uint8) (int32, int) pkg unicode/utf8, func DecodeRuneInString(string) (int32, int) pkg unicode/utf8, func EncodeRune([]uint8, int32) int pkg unicode/utf8, func FullRune([]uint8) bool pkg unicode/utf8, func FullRuneInString(string) bool pkg unicode/utf8, func RuneCount([]uint8) int pkg unicode/utf8, func RuneCountInString(string) int pkg unicode/utf8, func RuneLen(int32) int pkg unicode/utf8, func RuneStart(uint8) bool pkg unicode/utf8, func Valid([]uint8) bool pkg unicode/utf8, func ValidString(string) bool go/api/next.txt0100644000000000000000000001141612412656737013772 0ustar00rootroot00000000000000pkg debug/goobj, const SBSS = 21 pkg debug/goobj, const SBSS SymKind pkg debug/goobj, const SCONST = 31 pkg debug/goobj, const SCONST SymKind pkg debug/goobj, const SDATA = 19 pkg debug/goobj, const SDATA SymKind pkg debug/goobj, const SDYNIMPORT = 32 pkg debug/goobj, const SDYNIMPORT SymKind pkg debug/goobj, const SELFROSECT = 12 pkg debug/goobj, const SELFROSECT SymKind pkg debug/goobj, const SELFRXSECT = 2 pkg debug/goobj, const SELFRXSECT SymKind pkg debug/goobj, const SELFSECT = 14 pkg debug/goobj, const SELFSECT SymKind pkg debug/goobj, const SFILE = 29 pkg debug/goobj, const SFILE SymKind pkg debug/goobj, const SFILEPATH = 30 pkg debug/goobj, const SFILEPATH SymKind pkg debug/goobj, const SFUNCTAB = 8 pkg debug/goobj, const SFUNCTAB SymKind pkg debug/goobj, const SGOFUNC = 6 pkg debug/goobj, const SGOFUNC SymKind pkg debug/goobj, const SGOSTRING = 5 pkg debug/goobj, const SGOSTRING SymKind pkg debug/goobj, const SHOSTOBJ = 33 pkg debug/goobj, const SHOSTOBJ SymKind pkg debug/goobj, const SINITARR = 18 pkg debug/goobj, const SINITARR SymKind pkg debug/goobj, const SMACHO = 15 pkg debug/goobj, const SMACHO SymKind pkg debug/goobj, const SMACHOGOT = 16 pkg debug/goobj, const SMACHOGOT SymKind pkg debug/goobj, const SMACHOINDIRECTGOT = 28 pkg debug/goobj, const SMACHOINDIRECTGOT SymKind pkg debug/goobj, const SMACHOINDIRECTPLT = 27 pkg debug/goobj, const SMACHOINDIRECTPLT SymKind pkg debug/goobj, const SMACHOPLT = 13 pkg debug/goobj, const SMACHOPLT SymKind pkg debug/goobj, const SMACHOSYMSTR = 25 pkg debug/goobj, const SMACHOSYMSTR SymKind pkg debug/goobj, const SMACHOSYMTAB = 26 pkg debug/goobj, const SMACHOSYMTAB SymKind pkg debug/goobj, const SNOPTRBSS = 22 pkg debug/goobj, const SNOPTRBSS SymKind pkg debug/goobj, const SNOPTRDATA = 17 pkg debug/goobj, const SNOPTRDATA SymKind pkg debug/goobj, const SPCLNTAB = 11 pkg debug/goobj, const SPCLNTAB SymKind pkg debug/goobj, const SRODATA = 7 pkg debug/goobj, const SRODATA SymKind pkg debug/goobj, const SSTRING = 4 pkg debug/goobj, const SSTRING SymKind pkg debug/goobj, const SSYMTAB = 10 pkg debug/goobj, const SSYMTAB SymKind pkg debug/goobj, const STEXT = 1 pkg debug/goobj, const STEXT SymKind pkg debug/goobj, const STLSBSS = 23 pkg debug/goobj, const STLSBSS SymKind pkg debug/goobj, const STYPE = 3 pkg debug/goobj, const STYPE SymKind pkg debug/goobj, const STYPELINK = 9 pkg debug/goobj, const STYPELINK SymKind pkg debug/goobj, const SWINDOWS = 20 pkg debug/goobj, const SWINDOWS SymKind pkg debug/goobj, const SXREF = 24 pkg debug/goobj, const SXREF SymKind pkg debug/goobj, func Parse(io.ReadSeeker, string) (*Package, error) pkg debug/goobj, method (Sym) String() string pkg debug/goobj, method (SymID) String() string pkg debug/goobj, method (SymKind) String() string pkg debug/goobj, type Data struct pkg debug/goobj, type Data struct, Offset int64 pkg debug/goobj, type Data struct, Size int64 pkg debug/goobj, type Func struct pkg debug/goobj, type Func struct, Args int pkg debug/goobj, type Func struct, File []string pkg debug/goobj, type Func struct, Frame int pkg debug/goobj, type Func struct, FuncData []FuncData pkg debug/goobj, type Func struct, Leaf bool pkg debug/goobj, type Func struct, NoSplit bool pkg debug/goobj, type Func struct, PCData []Data pkg debug/goobj, type Func struct, PCFile Data pkg debug/goobj, type Func struct, PCLine Data pkg debug/goobj, type Func struct, PCSP Data pkg debug/goobj, type Func struct, Var []Var pkg debug/goobj, type FuncData struct pkg debug/goobj, type FuncData struct, Offset int64 pkg debug/goobj, type FuncData struct, Sym SymID pkg debug/goobj, type Package struct pkg debug/goobj, type Package struct, ImportPath string pkg debug/goobj, type Package struct, Imports []string pkg debug/goobj, type Package struct, MaxVersion int pkg debug/goobj, type Package struct, Syms []*Sym pkg debug/goobj, type Reloc struct pkg debug/goobj, type Reloc struct, Add int pkg debug/goobj, type Reloc struct, Offset int pkg debug/goobj, type Reloc struct, Size int pkg debug/goobj, type Reloc struct, Sym SymID pkg debug/goobj, type Reloc struct, Type int pkg debug/goobj, type Sym struct pkg debug/goobj, type Sym struct, Data Data pkg debug/goobj, type Sym struct, DupOK bool pkg debug/goobj, type Sym struct, Func *Func pkg debug/goobj, type Sym struct, Kind SymKind pkg debug/goobj, type Sym struct, Reloc []Reloc pkg debug/goobj, type Sym struct, Size int pkg debug/goobj, type Sym struct, Type SymID pkg debug/goobj, type Sym struct, embedded SymID pkg debug/goobj, type SymID struct pkg debug/goobj, type SymID struct, Name string pkg debug/goobj, type SymID struct, Version int pkg debug/goobj, type SymKind int pkg debug/goobj, type Var struct pkg debug/goobj, type Var struct, Kind int pkg debug/goobj, type Var struct, Name string pkg debug/goobj, type Var struct, Offset int pkg debug/goobj, type Var struct, Type SymID go/doc0040755000000000000000000000000012412656737012170 5ustar00rootroot00000000000000go/doc/articles0040755000000000000000000000000012412656737013776 5ustar00rootroot00000000000000go/doc/articles/go_command.html0100644000000000000000000003005412412656737017045 0ustar00rootroot00000000000000

The Go distribution includes a command, named "go", that automates the downloading, building, installation, and testing of Go packages and commands. This document talks about why we wrote a new command, what it is, what it's not, and how to use it.

Motivation

You might have seen early Go talks in which Rob Pike jokes that the idea for Go arose while waiting for a large Google server to compile. That really was the motivation for Go: to build a language that worked well for building the large software that Google writes and runs. It was clear from the start that such a language must provide a way to express dependencies between code libraries clearly, hence the package grouping and the explicit import blocks. It was also clear from the start that you might want arbitrary syntax for describing the code being imported; this is why import paths are string literals.

An explicit goal for Go from the beginning was to be able to build Go code using only the information found in the source itself, not needing to write a makefile or one of the many modern replacements for makefiles. If Go needed a configuration file to explain how to build your program, then Go would have failed.

At first, there was no Go compiler, and the initial development focused on building one and then building libraries for it. For expedience, we postponed the automation of building Go code by using make and writing makefiles. When compiling a single package involved multiple invocations of the Go compiler, we even used a program to write the makefiles for us. You can find it if you dig through the repository history.

The purpose of the new go command is our return to this ideal, that Go programs should compile without configuration or additional effort on the part of the developer beyond writing the necessary import statements.

Configuration versus convention

The way to achieve the simplicity of a configuration-free system is to establish conventions. The system works only to the extent that those conventions are followed. When we first launched Go, many people published packages that had to be installed in certain places, under certain names, using certain build tools, in order to be used. That's understandable: that's the way it works in most other languages. Over the last few years we consistently reminded people about the goinstall command (now replaced by go get) and its conventions: first, that the import path is derived in a known way from the URL of the source code; second, that the place to store the sources in the local file system is derived in a known way from the import path; third, that each directory in a source tree corresponds to a single package; and fourth, that the package is built using only information in the source code. Today, the vast majority of packages follow these conventions. The Go ecosystem is simpler and more powerful as a result.

We received many requests to allow a makefile in a package directory to provide just a little extra configuration beyond what's in the source code. But that would have introduced new rules. Because we did not accede to such requests, we were able to write the go command and eliminate our use of make or any other build system.

It is important to understand that the go command is not a general build tool. It cannot be configured and it does not attempt to build anything but Go packages. These are important simplifying assumptions: they simplify not only the implementation but also, more important, the use of the tool itself.

Go's conventions

The go command requires that code adheres to a few key, well-established conventions.

First, the import path is derived in an known way from the URL of the source code. For Bitbucket, GitHub, Google Code, and Launchpad, the root directory of the repository is identified by the repository's main URL, without the http:// prefix. Subdirectories are named by adding to that path. For example, the supplemental networking libraries for Go are obtained by running

hg clone http://code.google.com/p/go.net

and thus the import path for the root directory of that repository is "code.google.com/p/go.net". The websocket package is stored in a subdirectory, so its import path is "code.google.com/p/go.net/websocket".

These paths are on the long side, but in exchange we get an automatically managed name space for import paths and the ability for a tool like the go command to look at an unfamiliar import path and deduce where to obtain the source code.

Second, the place to store sources in the local file system is derived in a known way from the import path. Specifically, the first choice is $GOPATH/src/<import-path>. If $GOPATH is unset, the go command will fall back to storing source code alongside the standard Go packages, in $GOROOT/src/pkg/<import-path>. If $GOPATH is set to a list of paths, the go command tries <dir>/src/<import-path> for each of the directories in that list.

Each of those trees contains, by convention, a top-level directory named "bin", for holding compiled executables, and a top-level directory named "pkg", for holding compiled packages that can be imported, and the "src" directory, for holding package source files. Imposing this structure lets us keep each of these directory trees self-contained: the compiled form and the sources are always near each other.

These naming conventions also let us work in the reverse direction, from a directory name to its import path. This mapping is important for many of the go command's subcommands, as we'll see below.

Third, each directory in a source tree corresponds to a single package. By restricting a directory to a single package, we don't have to create hybrid import paths that specify first the directory and then the package within that directory. Also, most file management tools and UIs work on directories as fundamental units. Tying the fundamental Go unit—the package—to file system structure means that file system tools become Go package tools. Copying, moving, or deleting a package corresponds to copying, moving, or deleting a directory.

Fourth, each package is built using only the information present in the source files. This makes it much more likely that the tool will be able to adapt to changing build environments and conditions. For example, if we allowed extra configuration such as compiler flags or command line recipes, then that configuration would need to be updated each time the build tools changed; it would also be inherently tied to the use of a specific tool chain.

Getting started with the go command

Finally, a quick tour of how to use the go command, to supplement the information in How to Write Go Code, which you might want to read first. Assuming you want to keep your source code separate from the Go distribution source tree, the first step is to set $GOPATH, the one piece of global configuration that the go command needs. The $GOPATH can be a list of directories, but by far the most common usage should be to set it to a single directory. In particular, you do not need a separate entry in $GOPATH for each of your projects. One $GOPATH can support many projects.

Here’s an example. Let’s say we decide to keep our Go code in the directory $HOME/mygo. We need to create that directory and set $GOPATH accordingly.

$ mkdir $HOME/mygo
$ export GOPATH=$HOME/mygo
$

Into this directory, we now add some source code. Suppose we want to use the indexing library from the codesearch project along with a left-leaning red-black tree. We can install both with the "go get" subcommand:

$ go get code.google.com/p/codesearch/index
$ go get github.com/petar/GoLLRB/llrb
$

Both of these projects are now downloaded and installed into our $GOPATH directory. The one tree now contains the two directories src/code.google.com/p/codesearch/index/ and src/github.com/petar/GoLLRB/llrb/, along with the compiled packages (in pkg/) for those libraries and their dependencies.

Because we used version control systems (Mercurial and Git) to check out the sources, the source tree also contains the other files in the corresponding repositories, such as related packages. The "go list" subcommand lists the import paths corresponding to its arguments, and the pattern "./..." means start in the current directory ("./") and find all packages below that directory ("..."):

$ go list ./...
code.google.com/p/codesearch/cmd/cgrep
code.google.com/p/codesearch/cmd/cindex
code.google.com/p/codesearch/cmd/csearch
code.google.com/p/codesearch/index
code.google.com/p/codesearch/regexp
code.google.com/p/codesearch/sparse
github.com/petar/GoLLRB/example
github.com/petar/GoLLRB/llrb
$

We can also test those packages:

$ go test ./...
?       code.google.com/p/codesearch/cmd/cgrep   [no test files]
?       code.google.com/p/codesearch/cmd/cindex  [no test files]
?       code.google.com/p/codesearch/cmd/csearch [no test files]
ok      code.google.com/p/codesearch/index       0.239s
ok      code.google.com/p/codesearch/regexp      0.021s
?       code.google.com/p/codesearch/sparse      [no test files]
?       github.com/petar/GoLLRB/example          [no test files]
ok      github.com/petar/GoLLRB/llrb             0.231s
$

If a go subcommand is invoked with no paths listed, it operates on the current directory:

$ cd $GOPATH/src/code.google.com/p/codesearch/regexp
$ go list
code.google.com/p/codesearch/regexp
$ go test -v
=== RUN TestNstateEnc
--- PASS: TestNstateEnc (0.00 seconds)
=== RUN TestMatch
--- PASS: TestMatch (0.01 seconds)
=== RUN TestGrep
--- PASS: TestGrep (0.00 seconds)
PASS
ok      code.google.com/p/codesearch/regexp     0.021s
$ go install
$

That "go install" subcommand installs the latest copy of the package into the pkg directory. Because the go command can analyze the dependency graph, "go install" also installs any packages that this package imports but that are out of date, recursively.

Notice that "go install" was able to determine the name of the import path for the package in the current directory, because of the convention for directory naming. It would be a little more convenient if we could pick the name of the directory where we kept source code, and we probably wouldn't pick such a long name, but that ability would require additional configuration and complexity in the tool. Typing an extra directory name or two is a small price to pay for the increased simplicity and power.

As the example shows, it’s fine to work with packages from many different projects at once within a single $GOPATH root directory.

Limitations

As mentioned above, the go command is not a general-purpose build tool. In particular, it does not have any facility for generating Go source files during a build. Instead, if you want to use a tool like yacc or the protocol buffer compiler, you will need to write a makefile (or a configuration file for the build tool of your choice) to generate the Go files and then check those generated source files into your repository. This is more work for you, the package author, but it is significantly less work for your users, who can use "go get" without needing to obtain and build any additional tools.

More information

For more information, read How to Write Go Code and see the go command documentation.

go/doc/articles/index.html0100644000000000000000000000026512412656734016047 0ustar00rootroot00000000000000

See the Documents page and the Blog index for a complete list of Go articles.

go/doc/articles/race_detector.html0100644000000000000000000002154012412656737017545 0ustar00rootroot00000000000000

Introduction

Data races are among the most common and hardest to debug types of bugs in concurrent systems. A data race occurs when two goroutines access the same variable concurrently and at least one of the accesses is a write. See the The Go Memory Model for details.

Here is an example of a data race that can lead to crashes and memory corruption:

func main() {
	c := make(chan bool)
	m := make(map[string]string)
	go func() {
		m["1"] = "a" // First conflicting access.
		c <- true
	}()
	m["2"] = "b" // Second conflicting access.
	<-c
	for k, v := range m {
		fmt.Println(k, v)
	}
}

Usage

To help diagnose such bugs, Go includes a built-in data race detector. To use it, add the -race flag to the go command:

$ go test -race mypkg    // to test the package
$ go run -race mysrc.go  // to run the source file
$ go build -race mycmd   // to build the command
$ go install -race mypkg // to install the package

Report Format

When the race detector finds a data race in the program, it prints a report. The report contains stack traces for conflicting accesses, as well as stacks where the involved goroutines were created. Here is an example:

WARNING: DATA RACE
Read by goroutine 185:
  net.(*pollServer).AddFD()
      src/pkg/net/fd_unix.go:89 +0x398
  net.(*pollServer).WaitWrite()
      src/pkg/net/fd_unix.go:247 +0x45
  net.(*netFD).Write()
      src/pkg/net/fd_unix.go:540 +0x4d4
  net.(*conn).Write()
      src/pkg/net/net.go:129 +0x101
  net.func·060()
      src/pkg/net/timeout_test.go:603 +0xaf

Previous write by goroutine 184:
  net.setWriteDeadline()
      src/pkg/net/sockopt_posix.go:135 +0xdf
  net.setDeadline()
      src/pkg/net/sockopt_posix.go:144 +0x9c
  net.(*conn).SetDeadline()
      src/pkg/net/net.go:161 +0xe3
  net.func·061()
      src/pkg/net/timeout_test.go:616 +0x3ed

Goroutine 185 (running) created at:
  net.func·061()
      src/pkg/net/timeout_test.go:609 +0x288

Goroutine 184 (running) created at:
  net.TestProlongTimeout()
      src/pkg/net/timeout_test.go:618 +0x298
  testing.tRunner()
      src/pkg/testing/testing.go:301 +0xe8

Options

The GORACE environment variable sets race detector options. The format is:

GORACE="option1=val1 option2=val2"

The options are:

  • log_path (default stderr): The race detector writes its report to a file named log_path.pid. The special names stdout and stderr cause reports to be written to standard output and standard error, respectively.
  • exitcode (default 66): The exit status to use when exiting after a detected race.
  • strip_path_prefix (default ""): Strip this prefix from all reported file paths, to make reports more concise.
  • history_size (default 1): The per-goroutine memory access history is 32K * 2**history_size elements. Increasing this value can avoid a "failed to restore the stack" error in reports, at the cost of increased memory usage.
  • halt_on_error (default 0): Controls whether the program exits after reporting first data race.

Example:

$ GORACE="log_path=/tmp/race/report strip_path_prefix=/my/go/sources/" go test -race

Excluding Tests

When you build with -race flag, the go command defines additional build tag race. You can use the tag to exclude some code and tests when running the race detector. Some examples:

// +build !race

package foo

// The test contains a data race. See issue 123.
func TestFoo(t *testing.T) {
	// ...
}

// The test fails under the race detector due to timeouts.
func TestBar(t *testing.T) {
	// ...
}

// The test takes too long under the race detector.
func TestBaz(t *testing.T) {
	// ...
}

How To Use

To start, run your tests using the race detector (go test -race). The race detector only finds races that happen at runtime, so it can't find races in code paths that are not executed. If your tests have incomplete coverage, you may find more races by running a binary built with -race under a realistic workload.

Typical Data Races

Here are some typical data races. All of them can be detected with the race detector.

Race on loop counter

func main() {
	var wg sync.WaitGroup
	wg.Add(5)
	for i := 0; i < 5; i++ {
		go func() {
			fmt.Println(i) // Not the 'i' you are looking for.
			wg.Done()
		}()
	}
	wg.Wait()
}

The variable i in the function literal is the same variable used by the loop, so the read in the goroutine races with the loop increment. (This program typically prints 55555, not 01234.) The program can be fixed by making a copy of the variable:

func main() {
	var wg sync.WaitGroup
	wg.Add(5)
	for i := 0; i < 5; i++ {
		go func(j int) {
			fmt.Println(j) // Good. Read local copy of the loop counter.
			wg.Done()
		}(i)
	}
	wg.Wait()
}

Accidentally shared variable

// ParallelWrite writes data to file1 and file2, returns the errors.
func ParallelWrite(data []byte) chan error {
	res := make(chan error, 2)
	f1, err := os.Create("file1")
	if err != nil {
		res <- err
	} else {
		go func() {
			// This err is shared with the main goroutine,
			// so the write races with the write below.
			_, err = f1.Write(data)
			res <- err
			f1.Close()
		}()
	}
	f2, err := os.Create("file2") // The second conflicting write to err.
	if err != nil {
		res <- err
	} else {
		go func() {
			_, err = f2.Write(data)
			res <- err
			f2.Close()
		}()
	}
	return res
}

The fix is to introduce new variables in the goroutines (note the use of :=):

			...
			_, err := f1.Write(data)
			...
			_, err := f2.Write(data)
			...

Unprotected global variable

If the following code is called from several goroutines, it leads to races on the service map. Concurrent reads and writes of the same map are not safe:

var service map[string]net.Addr

func RegisterService(name string, addr net.Addr) {
	service[name] = addr
}

func LookupService(name string) net.Addr {
	return service[name]
}

To make the code safe, protect the accesses with a mutex:

var (
	service   map[string]net.Addr
	serviceMu sync.Mutex
)

func RegisterService(name string, addr net.Addr) {
	serviceMu.Lock()
	defer serviceMu.Unlock()
	service[name] = addr
}

func LookupService(name string) net.Addr {
	serviceMu.Lock()
	defer serviceMu.Unlock()
	return service[name]
}

Primitive unprotected variable

Data races can happen on variables of primitive types as well (bool, int, int64, etc.), as in this example:

type Watchdog struct{ last int64 }

func (w *Watchdog) KeepAlive() {
	w.last = time.Now().UnixNano() // First conflicting access.
}

func (w *Watchdog) Start() {
	go func() {
		for {
			time.Sleep(time.Second)
			// Second conflicting access.
			if w.last < time.Now().Add(-10*time.Second).UnixNano() {
				fmt.Println("No keepalives for 10 seconds. Dying.")
				os.Exit(1)
			}
		}
	}()
}

Even such "innocent" data races can lead to hard-to-debug problems caused by non-atomicity of the memory accesses, interference with compiler optimizations, or reordering issues accessing processor memory .

A typical fix for this race is to use a channel or a mutex. To preserve the lock-free behavior, one can also use the sync/atomic package.

type Watchdog struct{ last int64 }

func (w *Watchdog) KeepAlive() {
	atomic.StoreInt64(&w.last, time.Now().UnixNano())
}

func (w *Watchdog) Start() {
	go func() {
		for {
			time.Sleep(time.Second)
			if atomic.LoadInt64(&w.last) < time.Now().Add(-10*time.Second).UnixNano() {
				fmt.Println("No keepalives for 10 seconds. Dying.")
				os.Exit(1)
			}
		}
	}()
}

Supported Systems

The race detector runs on darwin/amd64, linux/amd64, and windows/amd64.

Runtime Overhead

The cost of race detection varies by program, but for a typical program, memory usage may increase by 5-10x and execution time by 2-20x.

go/doc/articles/wiki0040755000000000000000000000000012412656734014736 5ustar00rootroot00000000000000go/doc/articles/wiki/edit.html0100644000000000000000000000033012412656734016621 0ustar00rootroot00000000000000

Editing {{.Title}}

go/doc/articles/wiki/final-noclosure.go0100644000000000000000000000434512412656734020447 0ustar00rootroot00000000000000// 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. package main import ( "errors" "html/template" "io/ioutil" "net/http" "regexp" ) type Page struct { Title string Body []byte } func (p *Page) save() error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600) } func loadPage(title string) (*Page, error) { filename := title + ".txt" body, err := ioutil.ReadFile(filename) if err != nil { return nil, err } return &Page{Title: title, Body: body}, nil } func viewHandler(w http.ResponseWriter, r *http.Request) { title, err := getTitle(w, r) if err != nil { return } p, err := loadPage(title) if err != nil { http.Redirect(w, r, "/edit/"+title, http.StatusFound) return } renderTemplate(w, "view", p) } func editHandler(w http.ResponseWriter, r *http.Request) { title, err := getTitle(w, r) if err != nil { return } p, err := loadPage(title) if err != nil { p = &Page{Title: title} } renderTemplate(w, "edit", p) } func saveHandler(w http.ResponseWriter, r *http.Request) { title, err := getTitle(w, r) if err != nil { return } body := r.FormValue("body") p := &Page{Title: title, Body: []byte(body)} err = p.save() if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } http.Redirect(w, r, "/view/"+title, http.StatusFound) } func renderTemplate(w http.ResponseWriter, tmpl string, p *Page) { t, err := template.ParseFiles(tmpl + ".html") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } err = t.Execute(w, p) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } var validPath = regexp.MustCompile("^/(edit|save|view)/([a-zA-Z0-9]+)$") func getTitle(w http.ResponseWriter, r *http.Request) (string, error) { m := validPath.FindStringSubmatch(r.URL.Path) if m == nil { http.NotFound(w, r) return "", errors.New("Invalid Page Title") } return m[2], nil // The title is the second subexpression. } func main() { http.HandleFunc("/view/", viewHandler) http.HandleFunc("/edit/", editHandler) http.HandleFunc("/save/", saveHandler) http.ListenAndServe(":8080", nil) } go/doc/articles/wiki/final-noerror.go0100644000000000000000000000215612412656734020122 0ustar00rootroot00000000000000// 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. package main import ( "html/template" "io/ioutil" "net/http" ) type Page struct { Title string Body []byte } func (p *Page) save() error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600) } func loadPage(title string) (*Page, error) { filename := title + ".txt" body, err := ioutil.ReadFile(filename) if err != nil { return nil, err } return &Page{Title: title, Body: body}, nil } func editHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[len("/edit/"):] p, err := loadPage(title) if err != nil { p = &Page{Title: title} } t, _ := template.ParseFiles("edit.html") t.Execute(w, p) } func viewHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[len("/view/"):] p, _ := loadPage(title) t, _ := template.ParseFiles("view.html") t.Execute(w, p) } func main() { http.HandleFunc("/view/", viewHandler) http.HandleFunc("/edit/", editHandler) http.ListenAndServe(":8080", nil) } go/doc/articles/wiki/final-parsetemplate.go0100644000000000000000000000417412412656734021304 0ustar00rootroot00000000000000// 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. package main import ( "html/template" "io/ioutil" "net/http" "regexp" ) type Page struct { Title string Body []byte } func (p *Page) save() error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600) } func loadPage(title string) (*Page, error) { filename := title + ".txt" body, err := ioutil.ReadFile(filename) if err != nil { return nil, err } return &Page{Title: title, Body: body}, nil } func viewHandler(w http.ResponseWriter, r *http.Request, title string) { p, err := loadPage(title) if err != nil { http.Redirect(w, r, "/edit/"+title, http.StatusFound) return } renderTemplate(w, "view", p) } func editHandler(w http.ResponseWriter, r *http.Request, title string) { p, err := loadPage(title) if err != nil { p = &Page{Title: title} } renderTemplate(w, "edit", p) } func saveHandler(w http.ResponseWriter, r *http.Request, title string) { body := r.FormValue("body") p := &Page{Title: title, Body: []byte(body)} err := p.save() if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } http.Redirect(w, r, "/view/"+title, http.StatusFound) } func renderTemplate(w http.ResponseWriter, tmpl string, p *Page) { t, err := template.ParseFiles(tmpl + ".html") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } err = t.Execute(w, p) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } var validPath = regexp.MustCompile("^/(edit|save|view)/([a-zA-Z0-9]+)$") func makeHandler(fn func(http.ResponseWriter, *http.Request, string)) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { m := validPath.FindStringSubmatch(r.URL.Path) if m == nil { http.NotFound(w, r) return } fn(w, r, m[2]) } } func main() { http.HandleFunc("/view/", makeHandler(viewHandler)) http.HandleFunc("/edit/", makeHandler(editHandler)) http.HandleFunc("/save/", makeHandler(saveHandler)) http.ListenAndServe(":8080", nil) } go/doc/articles/wiki/final-template.go0100644000000000000000000000271712412656734020252 0ustar00rootroot00000000000000// 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. package main import ( "html/template" "io/ioutil" "net/http" ) type Page struct { Title string Body []byte } func (p *Page) save() error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600) } func loadPage(title string) (*Page, error) { filename := title + ".txt" body, err := ioutil.ReadFile(filename) if err != nil { return nil, err } return &Page{Title: title, Body: body}, nil } func editHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[len("/edit/"):] p, err := loadPage(title) if err != nil { p = &Page{Title: title} } renderTemplate(w, "edit", p) } func viewHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[len("/view/"):] p, _ := loadPage(title) renderTemplate(w, "view", p) } func saveHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[len("/save/"):] body := r.FormValue("body") p := &Page{Title: title, Body: []byte(body)} p.save() http.Redirect(w, r, "/view/"+title, http.StatusFound) } func renderTemplate(w http.ResponseWriter, tmpl string, p *Page) { t, _ := template.ParseFiles(tmpl + ".html") t.Execute(w, p) } func main() { http.HandleFunc("/view/", viewHandler) http.HandleFunc("/edit/", editHandler) http.HandleFunc("/save/", saveHandler) http.ListenAndServe(":8080", nil) } go/doc/articles/wiki/final.go0100644000000000000000000000474512412656734016444 0ustar00rootroot00000000000000// 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. package main import ( "flag" "html/template" "io/ioutil" "log" "net" "net/http" "regexp" ) var ( addr = flag.Bool("addr", false, "find open address and print to final-port.txt") ) type Page struct { Title string Body []byte } func (p *Page) save() error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600) } func loadPage(title string) (*Page, error) { filename := title + ".txt" body, err := ioutil.ReadFile(filename) if err != nil { return nil, err } return &Page{Title: title, Body: body}, nil } func viewHandler(w http.ResponseWriter, r *http.Request, title string) { p, err := loadPage(title) if err != nil { http.Redirect(w, r, "/edit/"+title, http.StatusFound) return } renderTemplate(w, "view", p) } func editHandler(w http.ResponseWriter, r *http.Request, title string) { p, err := loadPage(title) if err != nil { p = &Page{Title: title} } renderTemplate(w, "edit", p) } func saveHandler(w http.ResponseWriter, r *http.Request, title string) { body := r.FormValue("body") p := &Page{Title: title, Body: []byte(body)} err := p.save() if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } http.Redirect(w, r, "/view/"+title, http.StatusFound) } var templates = template.Must(template.ParseFiles("edit.html", "view.html")) func renderTemplate(w http.ResponseWriter, tmpl string, p *Page) { err := templates.ExecuteTemplate(w, tmpl+".html", p) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } var validPath = regexp.MustCompile("^/(edit|save|view)/([a-zA-Z0-9]+)$") func makeHandler(fn func(http.ResponseWriter, *http.Request, string)) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { m := validPath.FindStringSubmatch(r.URL.Path) if m == nil { http.NotFound(w, r) return } fn(w, r, m[2]) } } func main() { flag.Parse() http.HandleFunc("/view/", makeHandler(viewHandler)) http.HandleFunc("/edit/", makeHandler(editHandler)) http.HandleFunc("/save/", makeHandler(saveHandler)) if *addr { l, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { log.Fatal(err) } err = ioutil.WriteFile("final-port.txt", []byte(l.Addr().String()), 0644) if err != nil { log.Fatal(err) } s := &http.Server{} s.Serve(l) return } http.ListenAndServe(":8080", nil) } go/doc/articles/wiki/get.go0100644000000000000000000000236012412656734016121 0ustar00rootroot00000000000000// Copyright 2011 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 ( "flag" "fmt" "io" "log" "net" "net/http" "os" "strings" "time" ) var ( post = flag.String("post", "", "urlencoded form data to POST") addr = flag.Bool("addr", false, "find open address and print to stdout") wait = flag.Duration("wait_for_port", 0, "if non-zero, the amount of time to wait for the address to become available") ) func main() { flag.Parse() if *addr { l, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { log.Fatal(err) } defer l.Close() fmt.Print(l.Addr()) return } url := flag.Arg(0) if url == "" { log.Fatal("no url supplied") } var r *http.Response var err error loopUntil := time.Now().Add(*wait) for { if *post != "" { b := strings.NewReader(*post) r, err = http.Post(url, "application/x-www-form-urlencoded", b) } else { r, err = http.Get(url) } if err == nil || *wait == 0 || time.Now().After(loopUntil) { break } time.Sleep(100 * time.Millisecond) } if err != nil { log.Fatal(err) } defer r.Body.Close() _, err = io.Copy(os.Stdout, r.Body) if err != nil { log.Fatal(err) } } go/doc/articles/wiki/http-sample.go0100644000000000000000000000036112412656734017577 0ustar00rootroot00000000000000package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:]) } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) } go/doc/articles/wiki/index.html0100644000000000000000000005431112412656734017013 0ustar00rootroot00000000000000

Introduction

Covered in this tutorial:

  • Creating a data structure with load and save methods
  • Using the net/http package to build web applications
  • Using the html/template package to process HTML templates
  • Using the regexp package to validate user input
  • Using closures

Assumed knowledge:

  • Programming experience
  • Understanding of basic web technologies (HTTP, HTML)
  • Some UNIX/DOS command-line knowledge

Getting Started

At present, you need to have a FreeBSD, Linux, OS X, or Windows machine to run Go. We will use $ to represent the command prompt.

Install Go (see the Installation Instructions).

Make a new directory for this tutorial inside your GOPATH and cd to it:

$ mkdir gowiki
$ cd gowiki

Create a file named wiki.go, open it in your favorite editor, and add the following lines:

package main

import (
	"fmt"
	"io/ioutil"
)

We import the fmt and ioutil packages from the Go standard library. Later, as we implement additional functionality, we will add more packages to this import declaration.

Data Structures

Let's start by defining the data structures. A wiki consists of a series of interconnected pages, each of which has a title and a body (the page content). Here, we define Page as a struct with two fields representing the title and body.

{{code "doc/articles/wiki/part1.go" `/^type Page/` `/}/`}}

The type []byte means "a byte slice". (See Slices: usage and internals for more on slices.) The Body element is a []byte rather than string because that is the type expected by the io libraries we will use, as you'll see below.

The Page struct describes how page data will be stored in memory. But what about persistent storage? We can address that by creating a save method on Page:

{{code "doc/articles/wiki/part1.go" `/^func.*Page.*save/` `/}/`}}

This method's signature reads: "This is a method named save that takes as its receiver p, a pointer to Page . It takes no parameters, and returns a value of type error."

This method will save the Page's Body to a text file. For simplicity, we will use the Title as the file name.

The save method returns an error value because that is the return type of WriteFile (a standard library function that writes a byte slice to a file). The save method returns the error value, to let the application handle it should anything go wrong while writing the file. If all goes well, Page.save() will return nil (the zero-value for pointers, interfaces, and some other types).

The octal integer literal 0600, passed as the third parameter to WriteFile, indicates that the file should be created with read-write permissions for the current user only. (See the Unix man page open(2) for details.)

In addition to saving pages, we will want to load pages, too:

{{code "doc/articles/wiki/part1-noerror.go" `/^func loadPage/` `/^}/`}}

The function loadPage constructs the file name from the title parameter, reads the file's contents into a new variable body, and returns a pointer to a Page literal constructed with the proper title and body values.

Functions can return multiple values. The standard library function io.ReadFile returns []byte and error. In loadPage, error isn't being handled yet; the "blank identifier" represented by the underscore (_) symbol is used to throw away the error return value (in essence, assigning the value to nothing).

But what happens if ReadFile encounters an error? For example, the file might not exist. We should not ignore such errors. Let's modify the function to return *Page and error.

{{code "doc/articles/wiki/part1.go" `/^func loadPage/` `/^}/`}}

Callers of this function can now check the second parameter; if it is nil then it has successfully loaded a Page. If not, it will be an error that can be handled by the caller (see the language specification for details).

At this point we have a simple data structure and the ability to save to and load from a file. Let's write a main function to test what we've written:

{{code "doc/articles/wiki/part1.go" `/^func main/` `/^}/`}}

After compiling and executing this code, a file named TestPage.txt would be created, containing the contents of p1. The file would then be read into the struct p2, and its Body element printed to the screen.

You can compile and run the program like this:

$ go build wiki.go
$ ./wiki
This is a sample page.

(If you're using Windows you must type "wiki" without the "./" to run the program.)

Click here to view the code we've written so far.

Introducing the net/http package (an interlude)

Here's a full working example of a simple web server:

{{code "doc/articles/wiki/http-sample.go"}}

The main function begins with a call to http.HandleFunc, which tells the http package to handle all requests to the web root ("/") with handler.

It then calls http.ListenAndServe, specifying that it should listen on port 8080 on any interface (":8080"). (Don't worry about its second parameter, nil, for now.) This function will block until the program is terminated.

The function handler is of the type http.HandlerFunc. It takes an http.ResponseWriter and an http.Request as its arguments.

An http.ResponseWriter value assembles the HTTP server's response; by writing to it, we send data to the HTTP client.

An http.Request is a data structure that represents the client HTTP request. r.URL.Path is the path component of the request URL. The trailing [1:] means "create a sub-slice of Path from the 1st character to the end." This drops the leading "/" from the path name.

If you run this program and access the URL:

http://localhost:8080/monkeys

the program would present a page containing:

Hi there, I love monkeys!

Using net/http to serve wiki pages

To use the net/http package, it must be imported:

import (
	"fmt"
	"io/ioutil"
	"net/http"
)

Let's create a handler, viewHandler that will allow users to view a wiki page. It will handle URLs prefixed with "/view/".

{{code "doc/articles/wiki/part2.go" `/^func viewHandler/` `/^}/`}}

First, this function extracts the page title from r.URL.Path, the path component of the request URL. The Path is re-sliced with [len("/view/"):] to drop the leading "/view/" component of the request path. This is because the path will invariably begin with "/view/", which is not part of the page's title.

The function then loads the page data, formats the page with a string of simple HTML, and writes it to w, the http.ResponseWriter.

Again, note the use of _ to ignore the error return value from loadPage. This is done here for simplicity and generally considered bad practice. We will attend to this later.

To use this handler, we rewrite our main function to initialize http using the viewHandler to handle any requests under the path /view/.

{{code "doc/articles/wiki/part2.go" `/^func main/` `/^}/`}}

Click here to view the code we've written so far.

Let's create some page data (as test.txt), compile our code, and try serving a wiki page.

Open test.txt file in your editor, and save the string "Hello world" (without quotes) in it.

$ go build wiki.go
$ ./wiki

(If you're using Windows you must type "wiki" without the "./" to run the program.)

With this web server running, a visit to http://localhost:8080/view/test should show a page titled "test" containing the words "Hello world".

Editing Pages

A wiki is not a wiki without the ability to edit pages. Let's create two new handlers: one named editHandler to display an 'edit page' form, and the other named saveHandler to save the data entered via the form.

First, we add them to main():

{{code "doc/articles/wiki/final-noclosure.go" `/^func main/` `/^}/`}}

The function editHandler loads the page (or, if it doesn't exist, create an empty Page struct), and displays an HTML form.

{{code "doc/articles/wiki/notemplate.go" `/^func editHandler/` `/^}/`}}

This function will work fine, but all that hard-coded HTML is ugly. Of course, there is a better way.

The html/template package

The html/template package is part of the Go standard library. We can use html/template to keep the HTML in a separate file, allowing us to change the layout of our edit page without modifying the underlying Go code.

First, we must add html/template to the list of imports. We also won't be using fmt anymore, so we have to remove that.

import (
	"html/template"
	"io/ioutil"
	"net/http"
)

Let's create a template file containing the HTML form. Open a new file named edit.html, and add the following lines:

{{code "doc/articles/wiki/edit.html"}}

Modify editHandler to use the template, instead of the hard-coded HTML:

{{code "doc/articles/wiki/final-noerror.go" `/^func editHandler/` `/^}/`}}

The function template.ParseFiles will read the contents of edit.html and return a *template.Template.

The method t.Execute executes the template, writing the generated HTML to the http.ResponseWriter. The .Title and .Body dotted identifiers refer to p.Title and p.Body.

Template directives are enclosed in double curly braces. The printf "%s" .Body instruction is a function call that outputs .Body as a string instead of a stream of bytes, the same as a call to fmt.Printf. The html/template package helps guarantee that only safe and correct-looking HTML is generated by template actions. For instance, it automatically escapes any greater than sign (>), replacing it with &gt;, to make sure user data does not corrupt the form HTML.

Since we're working with templates now, let's create a template for our viewHandler called view.html:

{{code "doc/articles/wiki/view.html"}}

Modify viewHandler accordingly:

{{code "doc/articles/wiki/final-noerror.go" `/^func viewHandler/` `/^}/`}}

Notice that we've used almost exactly the same templating code in both handlers. Let's remove this duplication by moving the templating code to its own function:

{{code "doc/articles/wiki/final-template.go" `/^func renderTemplate/` `/^}/`}}

And modify the handlers to use that function:

{{code "doc/articles/wiki/final-template.go" `/^func viewHandler/` `/^}/`}} {{code "doc/articles/wiki/final-template.go" `/^func editHandler/` `/^}/`}}

If we comment out the registration of our unimplemented save handler in main, we can once again build and test our program. Click here to view the code we've written so far.

Handling non-existent pages

What if you visit /view/APageThatDoesntExist? You'll see a page containing HTML. This is because it ignores the error return value from loadPage and continues to try and fill out the template with no data. Instead, if the requested Page doesn't exist, it should redirect the client to the edit Page so the content may be created:

{{code "doc/articles/wiki/part3-errorhandling.go" `/^func viewHandler/` `/^}/`}}

The http.Redirect function adds an HTTP status code of http.StatusFound (302) and a Location header to the HTTP response.

Saving Pages

The function saveHandler will handle the submission of forms located on the edit pages. After uncommenting the related line in main, let's implement the handler:

{{code "doc/articles/wiki/final-template.go" `/^func saveHandler/` `/^}/`}}

The page title (provided in the URL) and the form's only field, Body, are stored in a new Page. The save() method is then called to write the data to a file, and the client is redirected to the /view/ page.

The value returned by FormValue is of type string. We must convert that value to []byte before it will fit into the Page struct. We use []byte(body) to perform the conversion.

Error handling

There are several places in our program where errors are being ignored. This is bad practice, not least because when an error does occur the program will have unintended behavior. A better solution is to handle the errors and return an error message to the user. That way if something does go wrong, the server will function exactly how we want and the user can be notified.

First, let's handle the errors in renderTemplate:

{{code "doc/articles/wiki/final-parsetemplate.go" `/^func renderTemplate/` `/^}/`}}

The http.Error function sends a specified HTTP response code (in this case "Internal Server Error") and error message. Already the decision to put this in a separate function is paying off.

Now let's fix up saveHandler:

{{code "doc/articles/wiki/part3-errorhandling.go" `/^func saveHandler/` `/^}/`}}

Any errors that occur during p.save() will be reported to the user.

Template caching

There is an inefficiency in this code: renderTemplate calls ParseFiles every time a page is rendered. A better approach would be to call ParseFiles once at program initialization, parsing all templates into a single *Template. Then we can use the ExecuteTemplate method to render a specific template.

First we create a global variable named templates, and initialize it with ParseFiles.

{{code "doc/articles/wiki/final.go" `/var templates/`}}

The function template.Must is a convenience wrapper that panics when passed a non-nil error value, and otherwise returns the *Template unaltered. A panic is appropriate here; if the templates can't be loaded the only sensible thing to do is exit the program.

The ParseFiles function takes any number of string arguments that identify our template files, and parses those files into templates that are named after the base file name. If we were to add more templates to our program, we would add their names to the ParseFiles call's arguments.

We then modify the renderTemplate function to call the templates.ExecuteTemplate method with the name of the appropriate template:

{{code "doc/articles/wiki/final.go" `/func renderTemplate/` `/^}/`}}

Note that the template name is the template file name, so we must append ".html" to the tmpl argument.

Validation

As you may have observed, this program has a serious security flaw: a user can supply an arbitrary path to be read/written on the server. To mitigate this, we can write a function to validate the title with a regular expression.

First, add "regexp" to the import list. Then we can create a global variable to store our validation expression:

{{code "doc/articles/wiki/final-noclosure.go" `/^var validPath/`}}

The function regexp.MustCompile will parse and compile the regular expression, and return a regexp.Regexp. MustCompile is distinct from Compile in that it will panic if the expression compilation fails, while Compile returns an error as a second parameter.

Now, let's write a function that uses the validPath expression to validate path and extract the page title:

{{code "doc/articles/wiki/final-noclosure.go" `/func getTitle/` `/^}/`}}

If the title is valid, it will be returned along with a nil error value. If the title is invalid, the function will write a "404 Not Found" error to the HTTP connection, and return an error to the handler. To create a new error, we have to import the errors package.

Let's put a call to getTitle in each of the handlers:

{{code "doc/articles/wiki/final-noclosure.go" `/^func viewHandler/` `/^}/`}} {{code "doc/articles/wiki/final-noclosure.go" `/^func editHandler/` `/^}/`}} {{code "doc/articles/wiki/final-noclosure.go" `/^func saveHandler/` `/^}/`}}

Introducing Function Literals and Closures

Catching the error condition in each handler introduces a lot of repeated code. What if we could wrap each of the handlers in a function that does this validation and error checking? Go's function literals provide a powerful means of abstracting functionality that can help us here.

First, we re-write the function definition of each of the handlers to accept a title string:

func viewHandler(w http.ResponseWriter, r *http.Request, title string)
func editHandler(w http.ResponseWriter, r *http.Request, title string)
func saveHandler(w http.ResponseWriter, r *http.Request, title string)

Now let's define a wrapper function that takes a function of the above type, and returns a function of type http.HandlerFunc (suitable to be passed to the function http.HandleFunc):

func makeHandler(fn func (http.ResponseWriter, *http.Request, string)) http.HandlerFunc {
	return func(w http.ResponseWriter, r *http.Request) {
		// Here we will extract the page title from the Request,
		// and call the provided handler 'fn'
	}
}

The returned function is called a closure because it encloses values defined outside of it. In this case, the variable fn (the single argument to makeHandler) is enclosed by the closure. The variable fn will be one of our save, edit, or view handlers.

Now we can take the code from getTitle and use it here (with some minor modifications):

{{code "doc/articles/wiki/final.go" `/func makeHandler/` `/^}/`}}

The closure returned by makeHandler is a function that takes an http.ResponseWriter and http.Request (in other words, an http.HandlerFunc). The closure extracts the title from the request path, and validates it with the TitleValidator regexp. If the title is invalid, an error will be written to the ResponseWriter using the http.NotFound function. If the title is valid, the enclosed handler function fn will be called with the ResponseWriter, Request, and title as arguments.

Now we can wrap the handler functions with makeHandler in main, before they are registered with the http package:

{{code "doc/articles/wiki/final.go" `/func main/` `/^}/`}}

Finally we remove the calls to getTitle from the handler functions, making them much simpler:

{{code "doc/articles/wiki/final.go" `/^func viewHandler/` `/^}/`}} {{code "doc/articles/wiki/final.go" `/^func editHandler/` `/^}/`}} {{code "doc/articles/wiki/final.go" `/^func saveHandler/` `/^}/`}}

Try it out!

Click here to view the final code listing.

Recompile the code, and run the app:

$ go build wiki.go
$ ./wiki

Visiting http://localhost:8080/view/ANewPage should present you with the page edit form. You should then be able to enter some text, click 'Save', and be redirected to the newly created page.

Other tasks

Here are some simple tasks you might want to tackle on your own:

  • Store templates in tmpl/ and page data in data/.
  • Add a handler to make the web root redirect to /view/FrontPage.
  • Spruce up the page templates by making them valid HTML and adding some CSS rules.
  • Implement inter-page linking by converting instances of [PageName] to
    <a href="/view/PageName">PageName</a>. (hint: you could use regexp.ReplaceAllFunc to do this)
go/doc/articles/wiki/notemplate.go0100644000000000000000000000240612412656734017513 0ustar00rootroot00000000000000// 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. package main import ( "fmt" "io/ioutil" "net/http" ) type Page struct { Title string Body []byte } func (p *Page) save() error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600) } func loadPage(title string) (*Page, error) { filename := title + ".txt" body, err := ioutil.ReadFile(filename) if err != nil { return nil, err } return &Page{Title: title, Body: body}, nil } func viewHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[len("/view/"):] p, _ := loadPage(title) fmt.Fprintf(w, "

%s

%s
", p.Title, p.Body) } func editHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[len("/edit/"):] p, err := loadPage(title) if err != nil { p = &Page{Title: title} } fmt.Fprintf(w, "

Editing %s

"+ "
"+ "
"+ ""+ "
", p.Title, p.Title, p.Body) } func main() { http.HandleFunc("/view/", viewHandler) http.HandleFunc("/edit/", editHandler) http.ListenAndServe(":8080", nil) } go/doc/articles/wiki/part1-noerror.go0100644000000000000000000000123612412656734020056 0ustar00rootroot00000000000000// 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. package main import ( "fmt" "io/ioutil" ) type Page struct { Title string Body []byte } func (p *Page) save() error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600) } func loadPage(title string) *Page { filename := title + ".txt" body, _ := ioutil.ReadFile(filename) return &Page{Title: title, Body: body} } func main() { p1 := &Page{Title: "TestPage", Body: []byte("This is a sample page.")} p1.save() p2 := loadPage("TestPage") fmt.Println(string(p2.Body)) } go/doc/articles/wiki/part1.go0100644000000000000000000000132712412656734016373 0ustar00rootroot00000000000000// 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. package main import ( "fmt" "io/ioutil" ) type Page struct { Title string Body []byte } func (p *Page) save() error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600) } func loadPage(title string) (*Page, error) { filename := title + ".txt" body, err := ioutil.ReadFile(filename) if err != nil { return nil, err } return &Page{Title: title, Body: body}, nil } func main() { p1 := &Page{Title: "TestPage", Body: []byte("This is a sample Page.")} p1.save() p2, _ := loadPage("TestPage") fmt.Println(string(p2.Body)) } go/doc/articles/wiki/part2.go0100644000000000000000000000152712412656734016376 0ustar00rootroot00000000000000// 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. package main import ( "fmt" "io/ioutil" "net/http" ) type Page struct { Title string Body []byte } func (p *Page) save() error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600) } func loadPage(title string) (*Page, error) { filename := title + ".txt" body, err := ioutil.ReadFile(filename) if err != nil { return nil, err } return &Page{Title: title, Body: body}, nil } func viewHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[len("/view/"):] p, _ := loadPage(title) fmt.Fprintf(w, "

%s

%s
", p.Title, p.Body) } func main() { http.HandleFunc("/view/", viewHandler) http.ListenAndServe(":8080", nil) } go/doc/articles/wiki/part3-errorhandling.go0100644000000000000000000000320712412656734021230 0ustar00rootroot00000000000000// 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. package main import ( "html/template" "io/ioutil" "net/http" ) type Page struct { Title string Body []byte } func (p *Page) save() error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600) } func loadPage(title string) (*Page, error) { filename := title + ".txt" body, err := ioutil.ReadFile(filename) if err != nil { return nil, err } return &Page{Title: title, Body: body}, nil } func renderTemplate(w http.ResponseWriter, tmpl string, p *Page) { t, _ := template.ParseFiles(tmpl + ".html") t.Execute(w, p) } func viewHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[len("/view/"):] p, err := loadPage(title) if err != nil { http.Redirect(w, r, "/edit/"+title, http.StatusFound) return } renderTemplate(w, "view", p) } func editHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[len("/edit/"):] p, err := loadPage(title) if err != nil { p = &Page{Title: title} } renderTemplate(w, "edit", p) } func saveHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[len("/save/"):] body := r.FormValue("body") p := &Page{Title: title, Body: []byte(body)} err := p.save() if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } http.Redirect(w, r, "/view/"+title, http.StatusFound) } func main() { http.HandleFunc("/view/", viewHandler) http.HandleFunc("/edit/", editHandler) http.HandleFunc("/save/", saveHandler) http.ListenAndServe(":8080", nil) } go/doc/articles/wiki/part3.go0100644000000000000000000000234212412656734016373 0ustar00rootroot00000000000000// 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. package main import ( "html/template" "io/ioutil" "net/http" ) type Page struct { Title string Body []byte } func (p *Page) save() error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600) } func loadPage(title string) (*Page, error) { filename := title + ".txt" body, err := ioutil.ReadFile(filename) if err != nil { return nil, err } return &Page{Title: title, Body: body}, nil } func renderTemplate(w http.ResponseWriter, tmpl string, p *Page) { t, _ := template.ParseFiles(tmpl + ".html") t.Execute(w, p) } func viewHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[len("/view/"):] p, _ := loadPage(title) renderTemplate(w, "view", p) } func editHandler(w http.ResponseWriter, r *http.Request) { title := r.URL.Path[len("/edit/"):] p, err := loadPage(title) if err != nil { p = &Page{Title: title} } renderTemplate(w, "edit", p) } func main() { http.HandleFunc("/view/", viewHandler) http.HandleFunc("/edit/", editHandler) //http.HandleFunc("/save/", saveHandler) http.ListenAndServe(":8080", nil) } go/doc/articles/wiki/test.bash0100755000000000000000000000214612412656734016636 0ustar00rootroot00000000000000#!/usr/bin/env bash # 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. set -e wiki_pid= cleanup() { kill $wiki_pid rm -f test_*.out Test.txt final.bin final-port.txt a.out get.bin } trap cleanup 0 INT rm -f get.bin final.bin a.out # If called with -all, check that all code snippets compile. if [ "$1" == "-all" ]; then for fn in *.go; do go build -o a.out $fn done fi go build -o get.bin get.go go build -o final.bin final.go (./final.bin --addr) & wiki_pid=$! l=0 while [ ! -f ./final-port.txt ] do l=$(($l+1)) if [ "$l" -gt 5 ] then echo "port not available within 5 seconds" exit 1 break fi sleep 1 done addr=$(cat final-port.txt) ./get.bin http://$addr/edit/Test > test_edit.out diff -u test_edit.out test_edit.good ./get.bin -post=body=some%20content http://$addr/save/Test > test_save.out diff -u test_save.out test_view.good # should be the same as viewing diff -u Test.txt test_Test.txt.good ./get.bin http://$addr/view/Test > test_view.out diff -u test_view.out test_view.good echo PASS go/doc/articles/wiki/test_Test.txt.good0100644000000000000000000000001412412656734020453 0ustar00rootroot00000000000000some contentgo/doc/articles/wiki/test_edit.good0100644000000000000000000000026712412656734017655 0ustar00rootroot00000000000000

Editing Test

go/doc/articles/wiki/test_view.good0100644000000000000000000000011712412656734017674 0ustar00rootroot00000000000000

Test

[edit]

some content
go/doc/articles/wiki/view.html0100644000000000000000000000014412412656734016651 0ustar00rootroot00000000000000

{{.Title}}

[edit]

{{printf "%s" .Body}}
go/doc/asm.html0100644000000000000000000004060212412656737013714 0ustar00rootroot00000000000000

A Quick Guide to Go's Assembler

This document is a quick outline of the unusual form of assembly language used by the gc suite of Go compilers (6g, 8g, etc.). The document is not comprehensive.

The assembler is based on the input to the Plan 9 assemblers, which is documented in detail on the Plan 9 site. 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 describes the peculiarities that apply when writing assembly code to interact with Go.

The most important thing to know about Go's assembler is that it is not a direct representation of the underlying machine. Some of the details map precisely to the machine, but some do not. This is because the compiler suite (see this description) 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 MOV what the linker 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. The details vary with architecture, and we apologize for the imprecision; the situation is not well-defined.

The assembler program is a way to generate that intermediate, incompletely defined instruction sequence as input for 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 runtime and math/big. You can also examine what the compiler emits as assembly code:

$ cat x.go
package main

func main() {
	println(3)
}
$ go tool 6g -S x.go        # or: go build -gcflags -S x.go

--- prog list "main" ---
0000 (x.go:3) TEXT    main+0(SB),$8-0
0001 (x.go:3) FUNCDATA $0,gcargs·0+0(SB)
0002 (x.go:3) FUNCDATA $1,gclocals·0+0(SB)
0003 (x.go:4) MOVQ    $3,(SP)
0004 (x.go:4) PCDATA  $0,$8
0005 (x.go:4) CALL    ,runtime.printint+0(SB)
0006 (x.go:4) PCDATA  $0,$-1
0007 (x.go:4) PCDATA  $0,$0
0008 (x.go:4) CALL    ,runtime.printnl+0(SB)
0009 (x.go:4) PCDATA  $0,$-1
0010 (x.go:5) RET     ,
...

The FUNCDATA and PCDATA directives contain information for use by the garbage collector; they are introduced by the compiler.

Symbols

Some symbols, such as PC, R0 and SP, are predeclared and refer to registers. There are two other predeclared symbols, SB (static base) and FP (frame pointer). All user-defined symbols other than jump labels are written as offsets to these pseudo-registers.

The SB pseudo-register can be thought of as the origin of memory, so the symbol foo(SB) is the name foo as an address in memory.

The FP pseudo-register is a virtual frame pointer 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 0(FP) is the first argument to the function, 8(FP) 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 at the beginning, as in first_arg+0(FP) and second_arg+8(FP). Some of the assemblers enforce this convention, rejecting plain 0(FP) and 8(FP). For assembly functions with Go prototypes, go vet will check that the argument names and offsets match.

The SP pseudo-register is a virtual stack pointer used to refer to frame-local variables and the arguments being 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): x-8(SP), y-4(SP), and so on. On architectures with a real register named SP, the name prefix distinguishes references to the virtual stack pointer from references to the architectural SP register. That is, x-8(SP) and -8(SP) are different memory locations: the first refers to the virtual stack pointer pseudo-register, while the second refers to the hardware's SP register.

Instructions, registers, and assembler directives are always in UPPER CASE to remind you that assembly programming is a fraught endeavor. (Exceptions: the m and g register renamings on ARM.)

In Go object files and binaries, the full name of a symbol is the package path followed by a period and the symbol name: fmt.Printf or math/rand.Int. Because the assembler's parser treats period and slash as punctuation, those strings cannot be used directly as identifier names. Instead, the assembler allows the middle dot character U+00B7 and the division slash U+2215 in identifiers and rewrites them to plain period and slash. Within an assembler source file, the symbols above are written as fmt·Printf and math∕rand·Int. The assembly listings generated by the compilers when using the -S flag show the period and slash directly instead of the Unicode replacements required by the assemblers.

Most hand-written assembly files do not include the full package path in symbol names, because the linker inserts the package path of the current object file at the beginning of any name starting with a period: in an assembly source file within the math/rand package implementation, the package's Int function can be referred to as ·Int. This convention avoids the need to hard-code a package's import path in its own source code, making it easier to move the code from one location to another.

Directives

The assembler uses various directives to bind text and data to symbol names. For example, here is a simple complete function definition. The TEXT directive declares the symbol runtime·profileloop and the instructions that follow form the body of the function. The last instruction in a TEXT block must be some sort of jump, usually a RET (pseudo-)instruction. (If it's not, the linker will append a jump-to-itself instruction; there is no fallthrough in TEXTs.) After the symbol, the arguments are flags (see below) and the frame size, a constant (but see below):

TEXT runtime·profileloop(SB),NOSPLIT,$8
	MOVQ	$runtime·profileloop1(SB), CX
	MOVQ	CX, 0(SP)
	CALL	runtime·externalthreadhandler(SB)
	RET

In the general case, the frame size is followed by an argument size, separated by a minus sign. (It's not a subtraction, just idiosyncratic syntax.) The frame size $24-8 states that the function has a 24-byte frame and is called with 8 bytes of argument, which live on the caller's frame. If NOSPLIT is not specified for the TEXT, the argument size must be provided.

Note that the symbol name uses a middle dot to separate the components and is specified as an offset from the static base pseudo-register SB. This function would be called from Go source for package runtime using the simple name profileloop.

For DATA directives, the symbol is followed by a slash and the number of bytes the memory associated with the symbol occupies. The arguments are optional flags and the data itself. For instance,

DATA  runtime·isplan9(SB)/4, $1

declares the local symbol runtime·isplan9 of size 4 and value 1. Again the symbol has the middle dot and is offset from SB.

The GLOBL directive declares a symbol to be global. The arguments are optional flags and the size of the data being declared as a global, which will have initial value all zeros unless a DATA directive has initialized it. The GLOBL directive must follow any corresponding DATA directives. This example

GLOBL runtime·tlsoffset(SB),$4

declares runtime·tlsoffset to have size 4.

There may be one or two arguments to the directives. If there are two, the first is a bit mask of flags, which can be written as numeric expressions, added or or-ed together, or can be set symbolically for easier absorption by a human. Their values, defined in the file src/cmd/ld/textflag.h, are:

  • NOPROF = 1
    (For TEXT items.) Don't profile the marked function. This flag is deprecated.
  • DUPOK = 2
    It is legal to have multiple instances of this symbol in a single binary. The linker will choose one of the duplicates to use.
  • NOSPLIT = 4
    (For TEXT items.) Don't insert the preamble to check if the stack must be split. The frame for the routine, plus anything it calls, must fit in the spare space at the top of the stack segment. Used to protect routines such as the stack splitting code itself.
  • RODATA = 8
    (For DATA and GLOBL items.) Put this data in a read-only section.
  • NOPTR = 16
    (For DATA and GLOBL items.) This data contains no pointers and therefore does not need to be scanned by the garbage collector.
  • WRAPPER = 32
    (For TEXT items.) This is a wrapper function and should not count as disabling recover.

Architecture-specific details

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 8l. That is, the file $GOROOT/src/cmd/8l/8.out.h contains a C enumeration, called as, 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

enum	as
{
	AXXX,
	AAAA,
	AAAD,
	AAAM,
	AAAS,
	AADCB,
	...

Each instruction begins with a initial capital A in this list, so AADCB represents the ADCB (add carry byte) instruction. The enumeration is in alphabetical order, plus some late additions (AXXX 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.

One detail evident in the examples from the previous sections is that data in the instructions flows from left to right: MOVQ $0, CX clears CX. This convention applies even on architectures where the usual mode is the opposite direction.

Here follows some descriptions of key Go-specific details for the supported architectures.

32-bit Intel 386

The runtime pointers to the m and g structures are maintained through the value of an otherwise unused (as far as Go is concerned) register in the MMU. A OS-dependent macro get_tls is defined for the assembler if the source includes an architecture-dependent header file, like this:

#include "zasm_GOOS_GOARCH.h"

Within the runtime, the get_tls macro loads its argument register with a pointer to a pair of words representing the g and m pointers. The sequence to load g and m using CX looks like this:

get_tls(CX)
MOVL	g(CX), AX	// Move g into AX.
MOVL	m(CX), BX	// Move m into BX.

64-bit Intel 386 (a.k.a. amd64)

The assembly code to access the m and g pointers is the same as on the 386, except it uses MOVQ rather than MOVL:

get_tls(CX)
MOVQ	g(CX), AX	// Move g into AX.
MOVQ	m(CX), BX	// Move m into BX.

ARM

The registers R9, R10, and R11 are reserved by the compiler and linker.

R9 and R10 point to the m (machine) and g (goroutine) structures, respectively. Within assembler source code, these pointers must be referred to as m and g; the names R9 and R10 are not recognized.

To make it easier for people and compilers to write assembly, the ARM linker allows general addressing forms and pseudo-operations like DIV or MOD that may not be expressible using a single hardware instruction. It implements these forms as multiple instructions, often using the R11 register to hold temporary values. Hand-written assembly can use R11, but doing so requires being sure that the linker is not also using it to implement any of the other instructions in the function.

When defining a TEXT, specifying frame size $-4 tells the linker that this is a leaf function that does not need to save LR on entry.

The name SP always refers to the virtual stack pointer described earlier. For the hardware register, use R13.

Unsupported opcodes

The assemblers are designed to support the compiler so not all hardware instructions are defined for all architectures: if the compiler doesn't generate it, it might not be there. If you need to use a missing instruction, there are two ways to proceed. One is to update the assembler to support that instruction, which is straightforward but only worthwhile if it's likely the instruction will be used again. Instead, for simple one-off cases, it's possible to use the BYTE and WORD directives to lay down explicit data into the instruction stream within a TEXT. 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
	MOVL	4(SP), BX
	MOVL	8(SP), AX
	// 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
go/doc/cmd.html0100644000000000000000000000625612412656737013706 0ustar00rootroot00000000000000

There is a suite of programs to build and process Go source code. Instead of being run directly, programs in the suite are usually invoked by the go program.

The most common way to run these programs is as a subcommand of the go program, for instance as go fmt. Run like this, the command operates on complete packages of Go source code, with the go program invoking the underlying binary with arguments appropriate to package-level processing.

The programs can also be run as stand-alone binaries, with unmodified arguments, using the go tool subcommand, such as go tool vet. This style of invocation allows, for instance, checking a single source file rather than an entire package: go tool vet myprogram.go as compared to go vet mypackage. Some of the commands, such as yacc, are accessible only through the go tool subcommand.

Finally the fmt and godoc commands are installed as regular binaries called gofmt and godoc because they are so often referenced.

Click on the links for more documentation, invocation methods, and usage details.

Name      Synopsis
go      The go program manages Go source code and runs the other commands listed here. See the command docs for usage details.

cgo      Cgo enables the creation of Go packages that call C code.
cover      Cover is a program for creating and analyzing the coverage profiles generated by "go test -coverprofile".
fix      Fix finds Go programs that use old features of the language and libraries and rewrites them to use newer ones.
fmt      Fmt formats Go packages, it is also available as an independent gofmt command with more general options.
godoc      Godoc extracts and generates documentation for Go packages.
vet      Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string.
yacc      Yacc is a version of yacc that generates parsers implemented in Go.

This is an abridged list. See the full command reference for documentation of the compilers and more.

go/doc/code.html0100644000000000000000000003730512412656734014051 0ustar00rootroot00000000000000

Introduction

This document demonstrates the development of a simple Go package and introduces the go tool, the standard way to fetch, build, and install Go packages and commands.

The go tool requires you to organize your code in a specific way. Please read this document carefully. It explains the simplest way to get up and running with your Go installation.

A similar explanation is available as a screencast.

Code organization

Workspaces

The go tool is designed to work with open source code maintained in public repositories. Although you don't need to publish your code, the model for how the environment is set up works the same whether you do or not.

Go code must be kept inside a workspace. A workspace is a directory hierarchy with three directories at its root:

  • src contains Go source files organized into packages (one package per directory),
  • pkg contains package objects, and
  • bin contains executable commands.

The go tool builds source packages and installs the resulting binaries to the pkg and bin directories.

The src subdirectory typically contains multiple version control repositories (such as for Git or Mercurial) that track the development of one or more source packages.

To give you an idea of how a workspace looks in practice, here's an example:

bin/
    streak                         # command executable
    todo                           # command executable
pkg/
    linux_amd64/
        code.google.com/p/goauth2/
            oauth.a                # package object
        github.com/nf/todo/
            task.a                 # package object
src/
    code.google.com/p/goauth2/
        .hg/                       # mercurial repository metadata
        oauth/
            oauth.go               # package source
            oauth_test.go          # test source
    github.com/nf/
        streak/
            .git/                  # git repository metadata
            oauth.go               # command source
            streak.go              # command source
        todo/
            .git/                  # git repository metadata
            task/
                task.go            # package source
            todo.go                # command source

This workspace contains three repositories (goauth2, streak, and todo) comprising two commands (streak and todo) and two libraries (oauth and task).

Commands and libraries are built from different kinds of source packages. We will discuss the distinction later.

The GOPATH environment variable

The GOPATH environment variable specifies the location of your workspace. It is likely the only environment variable you'll need to set when developing Go code.

To get started, create a workspace directory and set GOPATH accordingly. Your workspace can be located wherever you like, but we'll use $HOME/go in this document. Note that this must not be the same path as your Go installation.

$ mkdir $HOME/go
$ export GOPATH=$HOME/go

For convenience, add the workspace's bin subdirectory to your PATH:

$ export PATH=$PATH:$GOPATH/bin

Package paths

The packages from the standard library are given short paths such as "fmt" and "net/http". For your own packages, you must choose a base path that is unlikely to collide with future additions to the standard library or other external libraries.

If you keep your code in a source repository somewhere, then you should use the root of that source repository as your base path. For instance, if you have a GitHub account at github.com/user, that should be your base path.

Note that you don't need to publish your code to a remote repository before you can build it. It's just a good habit to organize your code as if you will publish it someday. In practice you can choose any arbitrary path name, as long as it is unique to the standard library and greater Go ecosystem.

We'll use github.com/user as our base path. Create a directory inside your workspace in which to keep source code:

$ mkdir -p $GOPATH/src/github.com/user

Your first program

To compile and run a simple program, first choose a package path (we'll use github.com/user/hello) and create a corresponding package directory inside your workspace:

$ mkdir $GOPATH/src/github.com/user/hello

Next, create a file named hello.go inside that directory, containing the following Go code.

package main

import "fmt"

func main() {
	fmt.Printf("Hello, world.\n")
}

Now you can build and install that program with the go tool:

$ go install github.com/user/hello

Note that you can run this command from anywhere on your system. The go tool finds the source code by looking for the github.com/user/hello package inside the workspace specified by GOPATH.

You can also omit the package path if you run go install from the package directory:

$ cd $GOPATH/src/github.com/user/hello
$ go install

This command builds the hello command, producing an executable binary. It then installs that binary to the workspace's bin directory as hello (or, under Windows, hello.exe). In our example, that will be $GOPATH/bin/hello, which is $HOME/go/bin/hello.

The go tool will only print output when an error occurs, so if these commands produce no output they have executed successfully.

You can now run the program by typing its full path at the command line:

$ $GOPATH/bin/hello
Hello, world.

Or, as you have added $GOPATH/bin to your PATH, just type the binary name:

$ hello
Hello, world.

If you're using a source control system, now would be a good time to initialize a repository, add the files, and commit your first change. Again, this step is optional: you do not need to use source control to write Go code.

$ cd $GOPATH/src/github.com/user/hello
$ git init
Initialized empty Git repository in /home/user/go/src/github.com/user/hello/.git/
$ git add hello.go
$ git commit -m "initial commit"
[master (root-commit) 0b4507d] initial commit
 1 file changed, 1 insertion(+)
  create mode 100644 hello.go

Pushing the code to a remote repository is left as an exercise for the reader.

Your first library

Let's write a library and use it from the hello program.

Again, the first step is to choose a package path (we'll use github.com/user/newmath) and create the package directory:

$ mkdir $GOPATH/src/github.com/user/newmath

Next, create a file named sqrt.go in that directory with the following contents.

// Package newmath is a trivial example package.
package newmath

// Sqrt returns an approximation to the square root of x.
func Sqrt(x float64) float64 {
	z := 1.0
	for i := 0; i < 1000; i++ {
		z -= (z*z - x) / (2 * z)
	}
	return z
}

Now, test that the package compiles with go build:

$ go build github.com/user/newmath

Or, if you are working in the package's source directory, just:

$ go build

This won't produce an output file. To do that, you must use go install, which places the package object inside the pkg directory of the workspace.

After confirming that the newmath package builds, modify your original hello.go (which is in $GOPATH/src/github.com/user/hello) to use it:

package main

import (
	"fmt"

	"github.com/user/newmath"
)

func main() {
	fmt.Printf("Hello, world.  Sqrt(2) = %v\n", newmath.Sqrt(2))
}

Whenever the go tool installs a package or binary, it also installs whatever dependencies it has. So when you install the hello program

$ go install github.com/user/hello

the newmath package will be installed as well, automatically.

Running the new version of the program, you should see some numerical output:

$ hello
Hello, world.  Sqrt(2) = 1.414213562373095

After the steps above, your workspace should look like this:

bin/
    hello              # command executable
pkg/
    linux_amd64/       # this will reflect your OS and architecture
        github.com/user/
            newmath.a  # package object
src/
    github.com/user/
        hello/
            hello.go   # command source
        newmath/
            sqrt.go    # package source

Note that go install placed the newmath.a object in a directory inside pkg/linux_amd64 that mirrors its source directory. This is so that future invocations of the go tool can find the package object and avoid recompiling the package unnecessarily. The linux_amd64 part is there to aid in cross-compilation, and will reflect the operating system and architecture of your system.

Go command executables are statically linked; the package objects need not be present to run Go programs.

Package names

The first statement in a Go source file must be

package name

where name is the package's default name for imports. (All files in a package must use the same name.)

Go's convention is that the package name is the last element of the import path: the package imported as "crypto/rot13" should be named rot13.

Executable commands must always use package main.

There is no requirement that package names be unique across all packages linked into a single binary, only that the import paths (their full file names) be unique.

See Effective Go to learn more about Go's naming conventions.

Testing

Go has a lightweight test framework composed of the go test command and the testing package.

You write a test by creating a file with a name ending in _test.go that contains functions named TestXXX with signature func (t *testing.T). The test framework runs each such function; if the function calls a failure function such as t.Error or t.Fail, the test is considered to have failed.

Add a test to the newmath package by creating the file $GOPATH/src/github.com/user/newmath/sqrt_test.go containing the following Go code.

package newmath

import "testing"

func TestSqrt(t *testing.T) {
	const in, out = 4, 2
	if x := Sqrt(in); x != out {
		t.Errorf("Sqrt(%v) = %v, want %v", in, x, out)
	}
}

Then run the test with go test:

$ go test github.com/user/newmath
ok  	github.com/user/newmath 0.165s

As always, if you are running the go tool from the package directory, you can omit the package path:

$ go test
ok  	github.com/user/newmath 0.165s

Run go help test and see the testing package documentation for more detail.

Remote packages

An import path can describe how to obtain the package source code using a revision control system such as Git or Mercurial. The go tool uses this property to automatically fetch packages from remote repositories. For instance, the examples described in this document are also kept in a Mercurial repository hosted at Google Code, code.google.com/p/go.example. If you include the repository URL in the package's import path, go get will fetch, build, and install it automatically:

$ go get code.google.com/p/go.example/hello
$ $GOPATH/bin/hello
Hello, world.  Sqrt(2) = 1.414213562373095

If the specified package is not present in a workspace, go get will place it inside the first workspace specified by GOPATH. (If the package does already exist, go get skips the remote fetch and behaves the same as go install.)

After issuing the above go get command, the workspace directory tree should now look like this:

bin/
    hello                 # command executable
pkg/
    linux_amd64/
        code.google.com/p/go.example/
            newmath.a     # package object
        github.com/user/
            newmath.a     # package object
src/
    code.google.com/p/go.example/
        hello/
            hello.go      # command source
        newmath/
            sqrt.go       # package source
            sqrt_test.go  # test source
    github.com/user/
        hello/
            hello.go      # command source
        newmath/
            sqrt.go       # package source
            sqrt_test.go  # test source

The hello command hosted at Google Code depends on the newmath package within the same repository. The imports in hello.go file use the same import path convention, so the go get command is able to locate and install the dependent package, too.

import "code.google.com/p/go.example/newmath"

This convention is the easiest way to make your Go packages available for others to use. The Go Wiki and godoc.org provide lists of external Go projects.

For more information on using remote repositories with the go tool, see go help importpath.

What's next

Subscribe to the golang-announce mailing list to be notified when a new stable version of Go is released.

See Effective Go for tips on writing clear, idiomatic Go code.

Take A Tour of Go to learn the language proper.

Visit the documentation page for a set of in-depth articles about the Go language and its libraries and tools.

Getting help

For real-time help, ask the helpful gophers in #go-nuts on the Freenode IRC server.

The official mailing list for discussion of the Go language is Go Nuts.

Report bugs using the Go issue tracker.

go/doc/codewalk0040755000000000000000000000000012412656734013756 5ustar00rootroot00000000000000go/doc/codewalk/codewalk.css0100644000000000000000000000600612412656734016337 0ustar00rootroot00000000000000/* 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. */ #codewalk-main { text-align: left; width: 100%; overflow: auto; } #code-display { border: 0; width: 100%; } .setting { font-size: 8pt; color: #888888; padding: 5px; } .hotkey { text-decoration: underline; } /* Style for Comments (the left-hand column) */ #comment-column { margin: 0pt; width: 30%; } #comment-column.right { float: right; } #comment-column.left { float: left; } #comment-area { overflow-x: hidden; overflow-y: auto; } .comment { cursor: pointer; font-size: 16px; border: 2px solid #ba9836; margin-bottom: 10px; margin-right: 10px; /* yes, for both .left and .right */ } .comment:last-child { margin-bottom: 0px; } .right .comment { margin-left: 10px; } .right .comment.first { } .right .comment.last { } .left .comment.first { } .left .comment.last { } .comment.selected { border-color: #99b2cb; } .right .comment.selected { border-left-width: 12px; margin-left: 0px; } .left .comment.selected { border-right-width: 12px; margin-right: 0px; } .comment-link { display: none; } .comment-title { font-size: small; font-weight: bold; background-color: #fffff0; padding-right: 10px; padding-left: 10px; padding-top: 5px; padding-bottom: 5px; } .right .comment-title { } .left .comment-title { } .comment.selected .comment-title { background-color: #f8f8ff; } .comment-text { overflow: auto; padding-left: 10px; padding-right: 10px; padding-top: 10px; padding-bottom: 5px; font-size: small; line-height: 1.3em; } .comment-text p { margin-top: 0em; margin-bottom: 0.5em; } .comment-text p:last-child { margin-bottom: 0em; } .file-name { font-size: x-small; padding-top: 0px; padding-bottom: 5px; } .hidden-filepaths .file-name { display: none; } .path-dir { color: #555; } .path-file { color: #555; } /* Style for Code (the right-hand column) */ /* Wrapper for the code column to make widths get calculated correctly */ #code-column { display: block; position: relative; margin: 0pt; width: 70%; } #code-column.left { float: left; } #code-column.right { float: right; } #code-area { background-color: #f8f8ff; border: 2px solid #99b2cb; padding: 5px; } .left #code-area { margin-right: -1px; } .right #code-area { margin-left: -1px; } #code-header { margin-bottom: 5px; } #code { background-color: white; } code { font-size: 100%; } .codewalkhighlight { font-weight: bold; background-color: #f8f8ff; } #code-display { margin-top: 0px; margin-bottom: 0px; } #sizer { position: absolute; cursor: col-resize; left: 0px; top: 0px; width: 8px; } /* Style for options (bottom strip) */ #code-options { display: none; } #code-options > span { padding-right: 20px; } #code-options .selected { border-bottom: 1px dotted; } #comment-options { text-align: center; } div#content { padding-bottom: 0em; } go/doc/codewalk/codewalk.js0100644000000000000000000002527212412656734016171 0ustar00rootroot00000000000000// 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. /** * A class to hold information about the Codewalk Viewer. * @param {jQuery} context The top element in whose context the viewer should * operate. It will not touch any elements above this one. * @constructor */ var CodewalkViewer = function(context) { this.context = context; /** * The div that contains all of the comments and their controls. */ this.commentColumn = this.context.find('#comment-column'); /** * The div that contains the comments proper. */ this.commentArea = this.context.find('#comment-area'); /** * The div that wraps the iframe with the code, as well as the drop down menu * listing the different files. * @type {jQuery} */ this.codeColumn = this.context.find('#code-column'); /** * The div that contains the code but excludes the options strip. * @type {jQuery} */ this.codeArea = this.context.find('#code-area'); /** * The iframe that holds the code (from Sourcerer). * @type {jQuery} */ this.codeDisplay = this.context.find('#code-display'); /** * The overlaid div used as a grab handle for sizing the code/comment panes. * @type {jQuery} */ this.sizer = this.context.find('#sizer'); /** * The full-screen overlay that ensures we don't lose track of the mouse * while dragging. * @type {jQuery} */ this.overlay = this.context.find('#overlay'); /** * The hidden input field that we use to hold the focus so that we can detect * shortcut keypresses. * @type {jQuery} */ this.shortcutInput = this.context.find('#shortcut-input'); /** * The last comment that was selected. * @type {jQuery} */ this.lastSelected = null; }; /** * Minimum width of the comments or code pane, in pixels. * @type {number} */ CodewalkViewer.MIN_PANE_WIDTH = 200; /** * Navigate the code iframe to the given url and update the code popout link. * @param {string} url The target URL. * @param {Object} opt_window Window dependency injection for testing only. */ CodewalkViewer.prototype.navigateToCode = function(url, opt_window) { if (!opt_window) opt_window = window; // Each iframe is represented by two distinct objects in the DOM: an iframe // object and a window object. These do not expose the same capabilities. // Here we need to get the window representation to get the location member, // so we access it directly through window[] since jQuery returns the iframe // representation. // We replace location rather than set so as not to create a history for code // navigation. opt_window['code-display'].location.replace(url); var k = url.indexOf('&'); if (k != -1) url = url.slice(0, k); k = url.indexOf('fileprint='); if (k != -1) url = url.slice(k+10, url.length); this.context.find('#code-popout-link').attr('href', url); }; /** * Selects the first comment from the list and forces a refresh of the code * view. */ CodewalkViewer.prototype.selectFirstComment = function() { // TODO(rsc): handle case where there are no comments var firstSourcererLink = this.context.find('.comment:first'); this.changeSelectedComment(firstSourcererLink); }; /** * Sets the target on all links nested inside comments to be _blank. */ CodewalkViewer.prototype.targetCommentLinksAtBlank = function() { this.context.find('.comment a[href], #description a[href]').each(function() { if (!this.target) this.target = '_blank'; }); }; /** * Installs event handlers for all the events we care about. */ CodewalkViewer.prototype.installEventHandlers = function() { var self = this; this.context.find('.comment') .click(function(event) { if (jQuery(event.target).is('a[href]')) return true; self.changeSelectedComment(jQuery(this)); return false; }); this.context.find('#code-selector') .change(function() {self.navigateToCode(jQuery(this).val());}); this.context.find('#description-table .quote-feet.setting') .click(function() {self.toggleDescription(jQuery(this)); return false;}); this.sizer .mousedown(function(ev) {self.startSizerDrag(ev); return false;}); this.overlay .mouseup(function(ev) {self.endSizerDrag(ev); return false;}) .mousemove(function(ev) {self.handleSizerDrag(ev); return false;}); this.context.find('#prev-comment') .click(function() { self.changeSelectedComment(self.lastSelected.prev()); return false; }); this.context.find('#next-comment') .click(function() { self.changeSelectedComment(self.lastSelected.next()); return false; }); // Workaround for Firefox 2 and 3, which steal focus from the main document // whenever the iframe content is (re)loaded. The input field is not shown, // but is a way for us to bring focus back to a place where we can detect // keypresses. this.context.find('#code-display') .load(function(ev) {self.shortcutInput.focus();}); jQuery(document).keypress(function(ev) { switch(ev.which) { case 110: // 'n' self.changeSelectedComment(self.lastSelected.next()); return false; case 112: // 'p' self.changeSelectedComment(self.lastSelected.prev()); return false; default: // ignore } }); window.onresize = function() {self.updateHeight();}; }; /** * Starts dragging the pane sizer. * @param {Object} ev The mousedown event that started us dragging. */ CodewalkViewer.prototype.startSizerDrag = function(ev) { this.initialCodeWidth = this.codeColumn.width(); this.initialCommentsWidth = this.commentColumn.width(); this.initialMouseX = ev.pageX; this.overlay.show(); }; /** * Handles dragging the pane sizer. * @param {Object} ev The mousemove event updating dragging position. */ CodewalkViewer.prototype.handleSizerDrag = function(ev) { var delta = ev.pageX - this.initialMouseX; if (this.codeColumn.is('.right')) delta = -delta; var proposedCodeWidth = this.initialCodeWidth + delta; var proposedCommentWidth = this.initialCommentsWidth - delta; var mw = CodewalkViewer.MIN_PANE_WIDTH; if (proposedCodeWidth < mw) delta = mw - this.initialCodeWidth; if (proposedCommentWidth < mw) delta = this.initialCommentsWidth - mw; proposedCodeWidth = this.initialCodeWidth + delta; proposedCommentWidth = this.initialCommentsWidth - delta; // If window is too small, don't even try to resize. if (proposedCodeWidth < mw || proposedCommentWidth < mw) return; this.codeColumn.width(proposedCodeWidth); this.commentColumn.width(proposedCommentWidth); this.options.codeWidth = parseInt( this.codeColumn.width() / (this.codeColumn.width() + this.commentColumn.width()) * 100); this.context.find('#code-column-width').text(this.options.codeWidth + '%'); }; /** * Ends dragging the pane sizer. * @param {Object} ev The mouseup event that caused us to stop dragging. */ CodewalkViewer.prototype.endSizerDrag = function(ev) { this.overlay.hide(); this.updateHeight(); }; /** * Toggles the Codewalk description between being shown and hidden. * @param {jQuery} target The target that was clicked to trigger this function. */ CodewalkViewer.prototype.toggleDescription = function(target) { var description = this.context.find('#description'); description.toggle(); target.find('span').text(description.is(':hidden') ? 'show' : 'hide'); this.updateHeight(); }; /** * Changes the side of the window on which the code is shown and saves the * setting in a cookie. * @param {string?} codeSide The side on which the code should be, either * 'left' or 'right'. */ CodewalkViewer.prototype.changeCodeSide = function(codeSide) { var commentSide = codeSide == 'left' ? 'right' : 'left'; this.context.find('#set-code-' + codeSide).addClass('selected'); this.context.find('#set-code-' + commentSide).removeClass('selected'); // Remove previous side class and add new one. this.codeColumn.addClass(codeSide).removeClass(commentSide); this.commentColumn.addClass(commentSide).removeClass(codeSide); this.sizer.css(codeSide, 'auto').css(commentSide, 0); this.options.codeSide = codeSide; }; /** * Adds selected class to newly selected comment, removes selected style from * previously selected comment, changes drop down options so that the correct * file is selected, and updates the code popout link. * @param {jQuery} target The target that was clicked to trigger this function. */ CodewalkViewer.prototype.changeSelectedComment = function(target) { var currentFile = target.find('.comment-link').attr('href'); if (!currentFile) return; if (!(this.lastSelected && this.lastSelected.get(0) === target.get(0))) { if (this.lastSelected) this.lastSelected.removeClass('selected'); target.addClass('selected'); this.lastSelected = target; var targetTop = target.position().top; var parentTop = target.parent().position().top; if (targetTop + target.height() > parentTop + target.parent().height() || targetTop < parentTop) { var delta = targetTop - parentTop; target.parent().animate( {'scrollTop': target.parent().scrollTop() + delta}, Math.max(delta / 2, 200), 'swing'); } var fname = currentFile.match(/(?:select=|fileprint=)\/[^&]+/)[0]; fname = fname.slice(fname.indexOf('=')+2, fname.length); this.context.find('#code-selector').val(fname); this.context.find('#prev-comment').toggleClass( 'disabled', !target.prev().length); this.context.find('#next-comment').toggleClass( 'disabled', !target.next().length); } // Force original file even if user hasn't changed comments since they may // have nagivated away from it within the iframe without us knowing. this.navigateToCode(currentFile); }; /** * Updates the viewer by changing the height of the comments and code so that * they fit within the height of the window. The function is typically called * after the user changes the window size. */ CodewalkViewer.prototype.updateHeight = function() { var windowHeight = jQuery(window).height() - 5 // GOK var areaHeight = windowHeight - this.codeArea.offset().top var footerHeight = this.context.find('#footer').outerHeight(true) this.commentArea.height(areaHeight - footerHeight - this.context.find('#comment-options').outerHeight(true)) var codeHeight = areaHeight - footerHeight - 15 // GOK this.codeArea.height(codeHeight) this.codeDisplay.height(codeHeight - this.codeDisplay.offset().top + this.codeArea.offset().top); this.sizer.height(codeHeight); }; window.initFuncs.push(function() { var viewer = new CodewalkViewer(jQuery('#codewalk-main')); viewer.selectFirstComment(); viewer.targetCommentLinksAtBlank(); viewer.installEventHandlers(); viewer.updateHeight(); }); go/doc/codewalk/codewalk.xml0100644000000000000000000001243212412656734016347 0ustar00rootroot00000000000000 A codewalk is a guided tour through a piece of code. It consists of a sequence of steps, each typically explaining a highlighted section of code.

The godoc web server translates an XML file like the one in the main window pane into the HTML page that you're viewing now.

The codewalk with URL path /doc/codewalk/name is loaded from the input file $GOROOT/doc/codewalk/name.xml.

This codewalk explains how to write a codewalk by examining its own source code, $GOROOT/doc/codewalk/codewalk.xml, shown in the main window pane to the left.
The codewalk input file is an XML file containing a single <codewalk> element. That element's title attribute gives the title that is used both on the codewalk page and in the codewalk list. Each step in the codewalk is a <step> element nested inside the main <codewalk>. The step element's title attribute gives the step's title, which is shown in a shaded bar above the main step text. The element's src attribute specifies the source code to show in the main window pane and, optionally, a range of lines to highlight.

The first step in this codewalk does not highlight any lines: its src is just a file name.
The most complex part of the codewalk specification is saying what lines to highlight. Instead of ordinary line numbers, the codewalk uses an address syntax that makes it possible to describe the match by its content. As the file gets edited, this descriptive address has a better chance to continue to refer to the right section of the file.

To specify a source line, use a src attribute of the form filename:address, where address is an address in the syntax used by the text editors sam and acme.

The simplest address is a single regular expression. The highlighted line in the main window pane shows that the address for the “Title” step was /title=/, which matches the first instance of that regular expression (title=) in the file.
To highlight a range of source lines, the simplest address to use is a pair of regular expressions /regexp1/,/regexp2/. The highlight begins with the line containing the first match for regexp1 and ends with the line containing the first match for regexp2 after the end of the match for regexp1. Ignoring the HTML quoting, The line containing the first match for regexp1 will be the first one highlighted, and the line containing the first match for regexp2.

The address /<step/,/step>/ looks for the first instance of <step in the file, and then starting after that point, looks for the first instance of step>. (Click on the “Steps” step above to see the highlight in action.) Note that the < and > had to be written using XML escapes in order to be valid XML.
The /regexp/ and /regexp1/,/regexp2/ forms suffice for most highlighting.

The full address syntax is summarized in this table (an excerpt of Table II from The text editor sam):

Simple addresses
#n The empty string after character n
n Line n
/regexp/ The first following match of the regular expression
$ The null string at the end of the file
Compound addresses
a1+a2 The address a2 evaluated starting at the right of a1
a1-a2 The address a2 evaluated in the reverse direction starting at the left of a1
a1,a2 From the left of a1 to the right of a2 (default 0,$).
go/doc/codewalk/functions.xml0100644000000000000000000001054112412656734016565 0ustar00rootroot00000000000000 Go supports first class functions, higher-order functions, user-defined function types, function literals, closures, and multiple return values.

This rich feature set supports a functional programming style in a strongly typed language.

In this codewalk we will look at a simple program that simulates a dice game called Pig and evaluates basic strategies.
Pig is a two-player game played with a 6-sided die. Each turn, you may roll or stay.
  • If you roll a 1, you lose all points for your turn and play passes to your opponent. Any other roll adds its value to your turn score.
  • If you stay, your turn score is added to your total score, and play passes to your opponent.
The first person to reach 100 total points wins.

The score type stores the scores of the current and opposing players, in addition to the points accumulated during the current turn.
In Go, functions can be passed around just like any other value. A function's type signature describes the types of its arguments and return values.

The action type is a function that takes a score and returns the resulting score and whether the current turn is over.

If the turn is over, the player and opponent fields in the resulting score should be swapped, as it is now the other player's turn.
Go functions can return multiple values.

The functions roll and stay each return a pair of values. They also match the action type signature. These action functions define the rules of Pig.
A function can use other functions as arguments and return values.

A strategy is a function that takes a score as input and returns an action to perform.
(Remember, an action is itself a function.)
Anonymous functions can be declared in Go, as in this example. Function literals are closures: they inherit the scope of the function in which they are declared.

One basic strategy in Pig is to continue rolling until you have accumulated at least k points in a turn, and then stay. The argument k is enclosed by this function literal, which matches the strategy type signature.
We simulate a game of Pig by calling an action to update the score until one player reaches 100 points. Each action is selected by calling the strategy function associated with the current player. The roundRobin function simulates a tournament and tallies wins. Each strategy plays each other strategy gamesPerSeries times. Variadic functions like ratioString take a variable number of arguments. These arguments are available as a slice inside the function. The main function defines 100 basic strategies, simulates a round robin tournament, and then prints the win/loss record of each strategy.

Among these strategies, staying at 25 is best, but the optimal strategy for Pig is much more complex.
go/doc/codewalk/markov.go0100644000000000000000000000753712412656734015674 0ustar00rootroot00000000000000// Copyright 2011 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. /* Generating random text: a Markov chain algorithm Based on the program presented in the "Design and Implementation" chapter of The Practice of Programming (Kernighan and Pike, Addison-Wesley 1999). See also Computer Recreations, Scientific American 260, 122 - 125 (1989). A Markov chain algorithm generates text by creating a statistical model of potential textual suffixes for a given prefix. Consider this text: I am not a number! I am a free man! Our Markov chain algorithm would arrange this text into this set of prefixes and suffixes, or "chain": (This table assumes a prefix length of two words.) Prefix Suffix "" "" I "" I am I am a I am not a free man! am a free am not a a number! I number! I am not a number! To generate text using this table we select an initial prefix ("I am", for example), choose one of the suffixes associated with that prefix at random with probability determined by the input statistics ("a"), and then create a new prefix by removing the first word from the prefix and appending the suffix (making the new prefix is "am a"). Repeat this process until we can't find any suffixes for the current prefix or we exceed the word limit. (The word limit is necessary as the chain table may contain cycles.) Our version of this program reads text from standard input, parsing it into a Markov chain, and writes generated text to standard output. The prefix and output lengths can be specified using the -prefix and -words flags on the command-line. */ package main import ( "bufio" "flag" "fmt" "io" "math/rand" "os" "strings" "time" ) // Prefix is a Markov chain prefix of one or more words. type Prefix []string // String returns the Prefix as a string (for use as a map key). func (p Prefix) String() string { return strings.Join(p, " ") } // Shift removes the first word from the Prefix and appends the given word. func (p Prefix) Shift(word string) { copy(p, p[1:]) p[len(p)-1] = word } // Chain contains a map ("chain") of prefixes to a list of suffixes. // A prefix is a string of prefixLen words joined with spaces. // A suffix is a single word. A prefix can have multiple suffixes. type Chain struct { chain map[string][]string prefixLen int } // NewChain returns a new Chain with prefixes of prefixLen words. func NewChain(prefixLen int) *Chain { return &Chain{make(map[string][]string), prefixLen} } // Build reads text from the provided Reader and // parses it into prefixes and suffixes that are stored in Chain. func (c *Chain) Build(r io.Reader) { br := bufio.NewReader(r) p := make(Prefix, c.prefixLen) for { var s string if _, err := fmt.Fscan(br, &s); err != nil { break } key := p.String() c.chain[key] = append(c.chain[key], s) p.Shift(s) } } // Generate returns a string of at most n words generated from Chain. func (c *Chain) Generate(n int) string { p := make(Prefix, c.prefixLen) var words []string for i := 0; i < n; i++ { choices := c.chain[p.String()] if len(choices) == 0 { break } next := choices[rand.Intn(len(choices))] words = append(words, next) p.Shift(next) } return strings.Join(words, " ") } func main() { // Register command-line flags. numWords := flag.Int("words", 100, "maximum number of words to print") prefixLen := flag.Int("prefix", 2, "prefix length in words") flag.Parse() // Parse command-line flags. rand.Seed(time.Now().UnixNano()) // Seed the random number generator. c := NewChain(*prefixLen) // Initialize a new Chain. c.Build(os.Stdin) // Build chains from standard input. text := c.Generate(*numWords) // Generate text. fmt.Println(text) // Write text to standard output. } go/doc/codewalk/markov.xml0100644000000000000000000003234612412656734016063 0ustar00rootroot00000000000000 This codewalk describes a program that generates random text using a Markov chain algorithm. The package comment describes the algorithm and the operation of the program. Please read it before continuing. A chain consists of a prefix and a suffix. Each prefix is a set number of words, while a suffix is a single word. A prefix can have an arbitrary number of suffixes. To model this data, we use a map[string][]string. Each map key is a prefix (a string) and its values are lists of suffixes (a slice of strings, []string).

Here is the example table from the package comment as modeled by this data structure:
map[string][]string{
	" ":          {"I"},
	" I":         {"am"},
	"I am":       {"a", "not"},
	"a free":     {"man!"},
	"am a":       {"free"},
	"am not":     {"a"},
	"a number!":  {"I"},
	"number! I":  {"am"},
	"not a":      {"number!"},
}
While each prefix consists of multiple words, we store prefixes in the map as a single string. It would seem more natural to store the prefix as a []string, but we can't do this with a map because the key type of a map must implement equality (and slices do not).

Therefore, in most of our code we will model prefixes as a []string and join the strings together with a space to generate the map key:
Prefix               Map key

[]string{"", ""}     " "
[]string{"", "I"}    " I"
[]string{"I", "am"}  "I am"
The complete state of the chain table consists of the table itself and the word length of the prefixes. The Chain struct stores this data. The Chain struct has two unexported fields (those that do not begin with an upper case character), and so we write a NewChain constructor function that initializes the chain map with make and sets the prefixLen field.

This is constructor function is not strictly necessary as this entire program is within a single package (main) and therefore there is little practical difference between exported and unexported fields. We could just as easily write out the contents of this function when we want to construct a new Chain. But using these unexported fields is good practice; it clearly denotes that only methods of Chain and its constructor function should access those fields. Also, structuring Chain like this means we could easily move it into its own package at some later date.
Since we'll be working with prefixes often, we define a Prefix type with the concrete type []string. Defining a named type clearly allows us to be explicit when we are working with a prefix instead of just a []string. Also, in Go we can define methods on any named type (not just structs), so we can add methods that operate on Prefix if we need to. The first method we define on Prefix is String. It returns a string representation of a Prefix by joining the slice elements together with spaces. We will use this method to generate keys when working with the chain map. The Build method reads text from an io.Reader and parses it into prefixes and suffixes that are stored in the Chain.

The io.Reader is an interface type that is widely used by the standard library and other Go code. Our code uses the fmt.Fscan function, which reads space-separated values from an io.Reader.

The Build method returns once the Reader's Read method returns io.EOF (end of file) or some other read error occurs.
This function does many small reads, which can be inefficient for some Readers. For efficiency we wrap the provided io.Reader with bufio.NewReader to create a new io.Reader that provides buffering. At the top of the function we make a Prefix slice p using the Chain's prefixLen field as its length. We'll use this variable to hold the current prefix and mutate it with each new word we encounter. In our loop we read words from the Reader into a string variable s using fmt.Fscan. Since Fscan uses space to separate each input value, each call will yield just one word (including punctuation), which is exactly what we need.

Fscan returns an error if it encounters a read error (io.EOF, for example) or if it can't scan the requested value (in our case, a single string). In either case we just want to stop scanning, so we break out of the loop.
The word stored in s is a new suffix. We add the new prefix/suffix combination to the chain map by computing the map key with p.String and appending the suffix to the slice stored under that key.

The built-in append function appends elements to a slice and allocates new storage when necessary. When the provided slice is nil, append allocates a new slice. This behavior conveniently ties in with the semantics of our map: retrieving an unset key returns the zero value of the value type and the zero value of []string is nil. When our program encounters a new prefix (yielding a nil value in the map) append will allocate a new slice.

For more information about the append function and slices in general see the Slices: usage and internals article.
Before reading the next word our algorithm requires us to drop the first word from the prefix and push the current suffix onto the prefix.

When in this state
p == Prefix{"I", "am"}
s == "not" 
the new value for p would be
p == Prefix{"am", "not"}
This operation is also required during text generation so we put the code to perform this mutation of the slice inside a method on Prefix named Shift.
The Shift method uses the built-in copy function to copy the last len(p)-1 elements of p to the start of the slice, effectively moving the elements one index to the left (if you consider zero as the leftmost index).
p := Prefix{"I", "am"}
copy(p, p[1:])
// p == Prefix{"am", "am"}
We then assign the provided word to the last index of the slice:
// suffix == "not"
p[len(p)-1] = suffix
// p == Prefix{"am", "not"}
The Generate method is similar to Build except that instead of reading words from a Reader and storing them in a map, it reads words from the map and appends them to a slice (words).

Generate uses a conditional for loop to generate up to n words.
At each iteration of the loop we retrieve a list of potential suffixes for the current prefix. We access the chain map at key p.String() and assign its contents to choices.

If len(choices) is zero we break out of the loop as there are no potential suffixes for that prefix. This test also works if the key isn't present in the map at all: in that case, choices will be nil and the length of a nil slice is zero.
To choose a suffix we use the rand.Intn function. It returns a random integer up to (but not including) the provided value. Passing in len(choices) gives us a random index into the full length of the list.

We use that index to pick our new suffix, assign it to next and append it to the words slice.

Next, we Shift the new suffix onto the prefix just as we did in the Build method.
Before returning the generated text as a string, we use the strings.Join function to join the elements of the words slice together, separated by spaces. To make it easy to tweak the prefix and generated text lengths we use the flag package to parse command-line flags.

These calls to flag.Int register new flags with the flag package. The arguments to Int are the flag name, its default value, and a description. The Int function returns a pointer to an integer that will contain the user-supplied value (or the default value if the flag was omitted on the command-line).
The main function begins by parsing the command-line flags with flag.Parse and seeding the rand package's random number generator with the current time.

If the command-line flags provided by the user are invalid the flag.Parse function will print an informative usage message and terminate the program.
To create the new Chain we call NewChain with the value of the prefix flag.

To build the chain we call Build with os.Stdin (which implements io.Reader) so that it will read its input from standard input.
Finally, to generate text we call Generate with the value of the words flag and assigning the result to the variable text.

Then we call fmt.Println to write the text to standard output, followed by a carriage return.
To use this program, first build it with the go command:
$ go build markov.go
And then execute it while piping in some input text:
$ echo "a man a plan a canal panama" \
	| ./markov -prefix=1
a plan a man a plan a canal panama
Here's a transcript of generating some text using the Go distribution's README file as source material:
$ ./markov -words=10 < $GOROOT/README
This is the source code repository for the Go source
$ ./markov -prefix=1 -words=10 < $GOROOT/README
This is the go directory (the one containing this README).
$ ./markov -prefix=1 -words=10 < $GOROOT/README
This is the variable if you have just untarred a
The Generate function does a lot of allocations when it builds the words slice. As an exercise, modify it to take an io.Writer to which it incrementally writes the generated text with Fprint. Aside from being more efficient this makes Generate more symmetrical to Build.
go/doc/codewalk/pig.go0100644000000000000000000000651412412656734015146 0ustar00rootroot00000000000000// Copyright 2011 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 ( "fmt" "math/rand" ) const ( win = 100 // The winning score in a game of Pig gamesPerSeries = 10 // The number of games per series to simulate ) // A score includes scores accumulated in previous turns for each player, // as well as the points scored by the current player in this turn. type score struct { player, opponent, thisTurn int } // An action transitions stochastically to a resulting score. type action func(current score) (result score, turnIsOver bool) // roll returns the (result, turnIsOver) outcome of simulating a die roll. // If the roll value is 1, then thisTurn score is abandoned, and the players' // roles swap. Otherwise, the roll value is added to thisTurn. func roll(s score) (score, bool) { outcome := rand.Intn(6) + 1 // A random int in [1, 6] if outcome == 1 { return score{s.opponent, s.player, 0}, true } return score{s.player, s.opponent, outcome + s.thisTurn}, false } // stay returns the (result, turnIsOver) outcome of staying. // thisTurn score is added to the player's score, and the players' roles swap. func stay(s score) (score, bool) { return score{s.opponent, s.player + s.thisTurn, 0}, true } // A strategy chooses an action for any given score. type strategy func(score) action // stayAtK returns a strategy that rolls until thisTurn is at least k, then stays. func stayAtK(k int) strategy { return func(s score) action { if s.thisTurn >= k { return stay } return roll } } // play simulates a Pig game and returns the winner (0 or 1). func play(strategy0, strategy1 strategy) int { strategies := []strategy{strategy0, strategy1} var s score var turnIsOver bool currentPlayer := rand.Intn(2) // Randomly decide who plays first for s.player+s.thisTurn < win { action := strategies[currentPlayer](s) s, turnIsOver = action(s) if turnIsOver { currentPlayer = (currentPlayer + 1) % 2 } } return currentPlayer } // roundRobin simulates a series of games between every pair of strategies. func roundRobin(strategies []strategy) ([]int, int) { wins := make([]int, len(strategies)) for i := 0; i < len(strategies); i++ { for j := i + 1; j < len(strategies); j++ { for k := 0; k < gamesPerSeries; k++ { winner := play(strategies[i], strategies[j]) if winner == 0 { wins[i]++ } else { wins[j]++ } } } } gamesPerStrategy := gamesPerSeries * (len(strategies) - 1) // no self play return wins, gamesPerStrategy } // ratioString takes a list of integer values and returns a string that lists // each value and its percentage of the sum of all values. // e.g., ratios(1, 2, 3) = "1/6 (16.7%), 2/6 (33.3%), 3/6 (50.0%)" func ratioString(vals ...int) string { total := 0 for _, val := range vals { total += val } s := "" for _, val := range vals { if s != "" { s += ", " } pct := 100 * float64(val) / float64(total) s += fmt.Sprintf("%d/%d (%0.1f%%)", val, total, pct) } return s } func main() { strategies := make([]strategy, win) for k := range strategies { strategies[k] = stayAtK(k + 1) } wins, games := roundRobin(strategies) for k := range strategies { fmt.Printf("Wins, losses staying at k =% 4d: %s\n", k+1, ratioString(wins[k], games-wins[k])) } } go/doc/codewalk/popout.png0100644000000000000000000000032512412656734016066 0ustar00rootroot00000000000000PNG  IHDRabKGD pHYs  uIDAT8˥R ^6#8g5Z>s@mRUJ@=$=XzW rjxdEWRfWHxtYvw_STḰeko65B#IENDB`go/doc/codewalk/run0100755000000000000000000000106312412656734014564 0ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2013 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. set -e function fail { echo FAIL: doc/codewalk/$1 exit 1 } # markov.xml echo foo | go run markov.go | grep foo > /dev/null || fail markov # functions.xml go run pig.go | grep 'Wins, losses staying at k = 100: 210/990 (21.2%), 780/990 (78.8%)' > /dev/null || fail pig # sharemem.xml: only build the example, as it uses the network go build urlpoll.go || fail urlpoll rm -f urlpoll go/doc/codewalk/sharemem.xml0100644000000000000000000001765512412656734016373 0ustar00rootroot00000000000000 Go's approach to concurrency differs from the traditional use of threads and shared memory. Philosophically, it can be summarized:

Don't communicate by sharing memory; share memory by communicating.

Channels allow you to pass references to data structures between goroutines. If you consider this as passing around ownership of the data (the ability to read and write it), they become a powerful and expressive synchronization mechanism.

In this codewalk we will look at a simple program that polls a list of URLs, checking their HTTP response codes and periodically printing their state.
The State type represents the state of a URL.

The Pollers send State values to the StateMonitor, which maintains a map of the current state of each URL.
A Resource represents the state of a URL to be polled: the URL itself and the number of errors encountered since the last successful poll.

When the program starts, it allocates one Resource for each URL. The main goroutine and the Poller goroutines send the Resources to each other on channels.
Each Poller receives Resource pointers from an input channel. In this program, the convention is that sending a Resource pointer on a channel passes ownership of the underlying data from the sender to the receiver. Because of this convention, we know that no two goroutines will access this Resource at the same time. This means we don't have to worry about locking to prevent concurrent access to these data structures.

The Poller processes the Resource by calling its Poll method.

It sends a State value to the status channel, to inform the StateMonitor of the result of the Poll.

Finally, it sends the Resource pointer to the out channel. This can be interpreted as the Poller saying "I'm done with this Resource" and returning ownership of it to the main goroutine.

Several goroutines run Pollers, processing Resources in parallel.
The Poll method (of the Resource type) performs an HTTP HEAD request for the Resource's URL and returns the HTTP response's status code. If an error occurs, Poll logs the message to standard error and returns the error string instead. The main function starts the Poller and StateMonitor goroutines and then loops passing completed Resources back to the pending channel after appropriate delays. First, main makes two channels of *Resource, pending and complete.

Inside main, a new goroutine sends one Resource per URL to pending and the main goroutine receives completed Resources from complete.

The pending and complete channels are passed to each of the Poller goroutines, within which they are known as in and out.
StateMonitor will initialize and launch a goroutine that stores the state of each Resource. We will look at this function in detail later.

For now, the important thing to note is that it returns a channel of State, which is saved as status and passed to the Poller goroutines.
Now that it has the necessary channels, main launches a number of Poller goroutines, passing the channels as arguments. The channels provide the means of communication between the main, Poller, and StateMonitor goroutines. To add the initial work to the system, main starts a new goroutine that allocates and sends one Resource per URL to pending.

The new goroutine is necessary because unbuffered channel sends and receives are synchronous. That means these channel sends will block until the Pollers are ready to read from pending.

Were these sends performed in the main goroutine with fewer Pollers than channel sends, the program would reach a deadlock situation, because main would not yet be receiving from complete.

Exercise for the reader: modify this part of the program to read a list of URLs from a file. (You may want to move this goroutine into its own named function.)
When a Poller is done with a Resource, it sends it on the complete channel. This loop receives those Resource pointers from complete. For each received Resource, it starts a new goroutine calling the Resource's Sleep method. Using a new goroutine for each ensures that the sleeps can happen in parallel.

Note that any single Resource pointer may only be sent on either pending or complete at any one time. This ensures that a Resource is either being handled by a Poller goroutine or sleeping, but never both simultaneously. In this way, we share our Resource data by communicating.
Sleep calls time.Sleep to pause before sending the Resource to done. The pause will either be of a fixed length (pollInterval) plus an additional delay proportional to the number of sequential errors (r.errCount).

This is an example of a typical Go idiom: a function intended to run inside a goroutine takes a channel, upon which it sends its return value (or other indication of completed state).
The StateMonitor receives State values on a channel and periodically outputs the state of all Resources being polled by the program. The variable updates is a channel of State, on which the Poller goroutines send State values.

This channel is returned by the function.
The variable urlStatus is a map of URLs to their most recent status. A time.Ticker is an object that repeatedly sends a value on a channel at a specified interval.

In this case, ticker triggers the printing of the current state to standard output every updateInterval nanoseconds.
StateMonitor will loop forever, selecting on two channels: ticker.C and update. The select statement blocks until one of its communications is ready to proceed.

When StateMonitor receives a tick from ticker.C, it calls logState to print the current state. When it receives a State update from updates, it records the new status in the urlStatus map.

Notice that this goroutine owns the urlStatus data structure, ensuring that it can only be accessed sequentially. This prevents memory corruption issues that might arise from parallel reads and/or writes to a shared map.
In this codewalk we have explored a simple example of using Go's concurrency primitives to share memory through communication.

This should provide a starting point from which to explore the ways in which goroutines and channels can be used to write expressive and concise concurrent programs.
go/doc/codewalk/urlpoll.go0100644000000000000000000000525112412656734016055 0ustar00rootroot00000000000000// 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. package main import ( "log" "net/http" "time" ) const ( numPollers = 2 // number of Poller goroutines to launch pollInterval = 60 * time.Second // how often to poll each URL statusInterval = 10 * time.Second // how often to log status to stdout errTimeout = 10 * time.Second // back-off timeout on error ) var urls = []string{ "http://www.google.com/", "http://golang.org/", "http://blog.golang.org/", } // State represents the last-known state of a URL. type State struct { url string status string } // StateMonitor maintains a map that stores the state of the URLs being // polled, and prints the current state every updateInterval nanoseconds. // It returns a chan State to which resource state should be sent. func StateMonitor(updateInterval time.Duration) chan<- State { updates := make(chan State) urlStatus := make(map[string]string) ticker := time.NewTicker(updateInterval) go func() { for { select { case <-ticker.C: logState(urlStatus) case s := <-updates: urlStatus[s.url] = s.status } } }() return updates } // logState prints a state map. func logState(s map[string]string) { log.Println("Current state:") for k, v := range s { log.Printf(" %s %s", k, v) } } // Resource represents an HTTP URL to be polled by this program. type Resource struct { url string errCount int } // Poll executes an HTTP HEAD request for url // and returns the HTTP status string or an error string. func (r *Resource) Poll() string { resp, err := http.Head(r.url) if err != nil { log.Println("Error", r.url, err) r.errCount++ return err.Error() } r.errCount = 0 return resp.Status } // Sleep sleeps for an appropriate interval (dependent on error state) // before sending the Resource to done. func (r *Resource) Sleep(done chan<- *Resource) { time.Sleep(pollInterval + errTimeout*time.Duration(r.errCount)) done <- r } func Poller(in <-chan *Resource, out chan<- *Resource, status chan<- State) { for r := range in { s := r.Poll() status <- State{r.url, s} out <- r } } func main() { // Create our input and output channels. pending, complete := make(chan *Resource), make(chan *Resource) // Launch the StateMonitor. status := StateMonitor(statusInterval) // Launch some Poller goroutines. for i := 0; i < numPollers; i++ { go Poller(pending, complete, status) } // Send some Resources to the pending queue. go func() { for _, url := range urls { pending <- &Resource{url: url} } }() for r := range complete { go r.Sleep(pending) } } go/doc/contrib.html0100644000000000000000000000764112412656734014577 0ustar00rootroot00000000000000

Go is an open source project developed by a team at Google and many contributors from the open source community.

Go is distributed under a BSD-style license.

Announcements Mailing List

A low traffic mailing list for important announcements, such as new releases.

We encourage all Go users to subscribe to golang-announce.

Version history

Release History

A summary of the changes between Go releases.

Go 1 Release Notes

A guide for updating your code to work with Go 1.

Go 1.1 Release Notes

A list of significant changes in Go 1.1, with instructions for updating your code where necessary. Each point release includes a similar document appropriate for that release: Go 1.2, Go 1.3, and so on.

Go 1 and the Future of Go Programs

What Go 1 defines and the backwards-compatibility guarantees one can expect as Go 1 matures.

Developer Resources

Source Code

Check out the Go source code.

Developer and Code Review Mailing List

The golang-dev mailing list is for discussing code changes to the Go project. The golang-codereviews mailing list is for actual reviewing of the code changes (CLs).

For general discussion of Go programming, see golang-nuts.

Checkins Mailing List

A mailing list that receives a message summarizing each checkin to the Go repository.

Bugs Mailing List

A mailing list that receives each update to the Go issue tracker.

Build Status

View the status of Go builds across the supported operating systems and architectures.

How you can help

Reporting issues

If you spot bugs, mistakes, or inconsistencies in the Go project's code or documentation, please let us know by filing a ticket on our issue tracker. (Of course, you should check it's not an existing issue before creating a new one.)

We pride ourselves on being meticulous; no issue is too small.

Contributing code

Go is an open source project and we welcome contributions from the community.

To get started, read these contribution guidelines for information on design, testing, and our code review process.

Check the tracker for open issues that interest you. Those labeled HelpWanted are particularly in need of outside help.

go/doc/contribute.html0100644000000000000000000004565212412656737015324 0ustar00rootroot00000000000000

Introduction

This document explains how to contribute changes to the Go project. It assumes you have installed Go using the installation instructions and have written and tested your code. (Note that the gccgo frontend lives elsewhere; see Contributing to gccgo.)

Discuss your design

The project welcomes submissions but please let everyone know what you're working on if you want it to become part of the main repository.

Before undertaking to write something new for the Go project, send mail to the mailing list to discuss what you plan to do. This gives everyone a chance to validate the design, helps prevent duplication of effort, and ensures that the idea fits inside the goals for the language and tools. It also guarantees that the design is sound before code is written; the code review tool is not the place for high-level discussions.

In short, send mail before you code. And don't start the discussion by mailing a change list!

Testing redux

You've written and tested your code, but before sending code out for review, run all the tests for the whole tree to make sure the changes don't break other packages or programs:

$ cd go/src
$ ./all.bash

(To build under Windows use all.bat.)

After running for a while, the command should print "ALL TESTS PASSED".

Code review

Changes to Go must be reviewed before they are submitted, no matter who makes the change. (In exceptional cases, such as fixing a build, the review can follow shortly after submitting.) A Mercurial extension helps manage the code review process. The extension is included in the Go source tree but needs to be added to your Mercurial configuration.

Caveat for Mercurial aficionados

Using Mercurial with the code review extension is not the same as using standard Mercurial.

The Go repository is maintained as a single line of reviewed changes; we prefer to avoid the complexity of Mercurial's arbitrary change graph. The code review extension helps here: its hg submit command automatically checks for and warns about the local repository being out of date compared to the remote one. The hg submit command also verifies other properties about the Go repository. For example, it checks that Go code being checked in is formatted in the standard style, as defined by gofmt, and it checks that the author of the code is properly recorded for copyright purposes.

To help ensure changes are only created by hg submit, the code review extension disables the standard hg commit command.

Configure the extension

Edit .hg/hgrc in the root of your Go checkout to add:

[extensions]
codereview = /path/to/go/lib/codereview/codereview.py

[ui]
username = Your Name <you@server.dom>

The username information will not be used unless you are a committer (see below), but Mercurial complains if it is missing.

As the codereview extension is only enabled for your Go checkout, the remainder of this document assumes you are inside the go directory when issuing commands.

To contribute to subrepositories, edit the .hg/hgrc for each subrepository in the same way. For example, add the codereview extension to code.google.com/p/go.tools/.hg/hgrc.

Understanding the extension

After adding the code review extension, you can run

$ hg help codereview

to learn more about its commands. To learn about a specific code-review-specific command such as change, run

$ hg help change

Windows users may need to perform extra steps to get the code review extension working. See the CodeReview page on the Go Wiki for details.

Log in to the code review site.

The code review server uses a Google Account to authenticate. (If you can use the account to sign in at google.com, you can use it to sign in to the code review server.) The email address you use on the Code Review site will be recorded in the Mercurial change log and in the CONTRIBUTORS file. You can create a Google Account associated with any address where you receive email. If you've enabled the two-step verification feature, don't forget to generate an application-specific password and use that when prompted for a password.

$ hg code-login
Email (login for uploading to codereview.appspot.com): rsc@golang.org
Password for rsc@golang.org:

Saving authentication cookies to /Users/rsc/.codereview_upload_cookies_codereview.appspot.com

Configure your account settings.

Edit your code review settings. Grab a nickname. Many people prefer to set the Context option to “Whole file” to see more context when reviewing changes.

Once you have chosen a nickname in the settings page, others can use that nickname as a shorthand for naming reviewers and the CC list. For example, rsc is an alias for rsc@golang.org.

Switch to the default branch

Most Go installations use a release branch, but new changes should only be made to the default branch. (They may be applied later to a release branch as part of the release process.) Before making a change, make sure you use the default branch:

$ hg update default

Make a change

The entire checked-out tree is writable. If you need to edit files, just edit them: Mercurial will figure out which ones changed. You do need to inform Mercurial of added, removed, copied, or renamed files, by running hg add, hg rm, hg cp, or hg mv.

When you are ready to send a change out for review, run

$ hg change

from any directory in your Go repository. Mercurial will open a change description file in your editor. (It uses the editor named by the $EDITOR environment variable, vi by default.) The file will look like:

# Change list.
# Lines beginning with # are ignored.
# Multi-line values should be indented.

Reviewer:
CC:

Description:
	<enter description here>

Files:
	src/pkg/math/sin.go
	src/pkg/math/tan.go
	src/pkg/regexp/regexp.go

The Reviewer line lists the reviewers assigned to this change, and the CC line lists people to notify about the change. These can be code review nicknames or arbitrary email addresses. Unless explicitly told otherwise, such as in the discussion leading up to sending in the change list, leave the reviewer field blank. This means that the golang-codereviews@googlegroups.com mailing list will be used as the reviewer.

Replace “<enter description here>” with a description of your change. The first line of the change description is conventionally a one-line summary of the change, prefixed by the primary affected package, and is used as the subject for code review mail; the rest of the description elaborates.

The Files section lists all the modified files in your client. It is best to keep unrelated changes in different change lists. In this example, we can include just the changes to package math by deleting the line mentioning regexp.go.

After editing, the template might now read:

# Change list.
# Lines beginning with # are ignored.
# Multi-line values should be indented.

Reviewer: golang-codereviews@googlegroups.com
CC: math-nuts@swtch.com

Description:
	math: improved Sin, Cos and Tan precision for very large arguments.

	See Bimmler and Shaney, ``Extreme sinusoids,'' J. Math 3(14).
	Fixes issue 159.

Files:
	src/pkg/math/sin.go
	src/pkg/math/tan.go

The special sentence “Fixes issue 159.” associates the change with issue 159 in the Go issue tracker. When this change is eventually submitted, the issue tracker will automatically mark the issue as fixed. (These conventions are described in detail by the Google Project Hosting Issue Tracker documentation.)

Save the file and exit the editor.

The code review server assigns your change an issue number and URL, which hg change will print, something like:

CL created: https://codereview.appspot.com/99999

Adding or removing files from an existing change

If you need to re-edit the change description, or change the files included in the CL, run hg change 99999.

Alternatively, you can use

$ hg file 99999 somefile

to add somefile to CL 99999, and

$ hg file -d 99999 somefile

to remove somefile from the CL.

A file may only belong to a single active CL at a time. hg file will issue a warning if a file is moved between changes.

Synchronize your client

While you were working, others might have submitted changes to the repository. To update your client, run

$ hg sync

(For Mercurial fans, hg sync runs hg pull -u but then also synchronizes the local change list state against the new data.)

If files you were editing have changed, Mercurial does its best to merge the remote changes into your local changes. It may leave some files to merge by hand.

For example, suppose you have edited flag_test.go but someone else has committed an independent change. When you run hg sync, you will get the (scary-looking) output (emphasis added):

$ hg sync
adding changesets
adding manifests
adding file changes
added 1 changeset with 2 changes to 2 files
getting src/pkg/flag/flag.go
couldn't find merge tool hgmerge
merging src/pkg/flag/flag_test.go
warning: conflicts during merge.
merging src/pkg/flag/flag_test.go failed!
1 file updated, 0 files merged, 0 files removed, 1 file unresolved
use 'hg resolve' to retry unresolved file merges
$

The only important part in that transcript is the italicized line: Mercurial failed to merge your changes with the independent change. When this happens, Mercurial leaves both edits in the file, marked by <<<<<<< and >>>>>>>. it is now your job to edit the file to combine them. Continuing the example, searching for those strings in flag_test.go might turn up:

	VisitAll(visitor);
<<<<<<< local
	if len(m) != 7 {
=======
	if len(m) != 8 {
>>>>>>> other
		t.Error("VisitAll misses some flags");

Mercurial doesn't show it, but suppose the original text that both edits started with was 6; you added 1 and the other change added 2, so the correct answer might now be 9. First, edit the section to remove the markers and leave the correct code:

	VisitAll(visitor);
	if len(m) != 9 {
		t.Error("VisitAll misses some flags");

Then ask Mercurial to mark the conflict as resolved:

$ hg resolve -m flag_test.go

If you had been editing the file, say for debugging, but do not care to preserve your changes, you can run hg revert flag_test.go to abandon your changes, but you may still need to run hg resolve -m to mark the conflict resolved.

Mail the change for review

Creating or uploading the change uploads a copy of the diff to the code review server, but it does not notify anyone about it. To do that, you need to run hg mail (see below).

To send out a change for review, run hg mail using the change list number assigned during hg change:

$ hg mail 99999

You can add to the Reviewer: and CC: lines using the -r or --cc options. In the above example, we could have left the Reviewer and CC lines blank and then run:

$ hg mail -r golang-codereviews@googlegroups.com --cc math-nuts@swtch.com 99999

to achieve the same effect.

Note that -r and --cc cannot be spelled --r or -cc.

If your change relates to an open issue, please add a comment to the issue announcing your proposed fix, including a link to your CL.

Reviewing code

Running hg mail will send an email to you and the reviewers asking them to visit the issue's URL and make comments on the change. When done, the reviewer clicks “Publish and Mail comments” to send comments back.

Revise and upload

When you have revised the code and are ready for another round of review, you can upload your change and send mail asking the reviewers to please take another look (PTAL). Use the change list number assigned during hg change

$ hg mail 99999

Or to upload your change without sending a notification, run

$ hg upload 99999

You will probably revise your code in response to the reviewer comments. You might also visit the code review web page and reply to the comments, letting the reviewer know that you've addressed them or explain why you haven't. When you're done replying, click “Publish and Mail comments” to send the line-by-line replies and any other comments.

The reviewer can comment on the new copy, and the process repeats. The reviewer approves the change by replying with a mail that says LGTM: looks good to me.

You can see a list of your pending changes by running hg pending (hg p for short).

Reviewing code by others

You can import a CL proposed by someone else into your local Mercurial client by using the hg clpatch command. Running

$ hg clpatch 99999

will apply the latest diff for CL 99999 to your working copy. If any of the files referenced in CL 99999 have local modifications, clpatch will refuse to apply the whole diff. Once applied, CL 99999 will show up in the output of hg pending and others.

To revert a CL you have applied locally, use the hg revert command. Running

$ hg revert @99999

will revert any files mentioned on CL 99999 to their original state. This can be an effective way of reverting one CL revision and applying another.

Once the CL has been submitted, the next time you run hg sync it will be removed from your local pending list. Occasionally the pending list can get out of sync leaving stale references to closed or abandoned CLs. You can use hg change -D 99999 to remove the reference to CL 99999.

Submit the change after the review

After the code has been LGTM'ed, it is time to submit it to the Mercurial repository.

If you are not a committer, you cannot submit the change directly. Instead a committer, usually the reviewer who said LGTM, will run:

$ hg clpatch 99999
$ hg submit 99999

The submit command submits the code. You will be listed as the author, but the change message will also indicate who the committer was. Your local client will notice that the change has been submitted when you next run hg sync.

If you are a committer, you can run:

$ hg submit 99999

This checks the change into the repository. The change description will include a link to the code review, and the code review will be updated with a link to the change in the repository.

If your local copy of the repository is out of date, hg submit will refuse the change:

$ hg submit 99999
local repository out of date; must sync before submit

More information

In addition to the information here, the Go community maintains a CodeReview wiki page. Feel free to contribute to this page as you learn the review process.

Files in the Go repository don't list author names, both to avoid clutter and to avoid having to keep the lists up to date. Instead, your name will appear in the Mercurial change log and in the CONTRIBUTORS file and perhaps the AUTHORS file.

The CONTRIBUTORS file defines who the Go contributors—the people—are; the AUTHORS file defines who “The Go Authors”—the copyright holders—are. The Go developers at Google will update these files when submitting your first change. In order for them to do that, you need to have completed one of the contributor license agreements:

  • If you are the copyright holder, you will need to agree to the individual contributor license agreement, which can be completed online.
  • If your organization is the copyright holder, the organization will need to agree to the corporate contributor license agreement. (If the copyright holder for your code has already completed the agreement in connection with another Google open source project, it does not need to be completed again.)

This rigmarole needs to be done only for your first submission.

Code that you contribute should use the standard copyright header:

// 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.

Files in the repository are copyright the year they are added. It is not necessary to update the copyright year on files that you change.

go/doc/debugging_with_gdb.html0100644000000000000000000003611212412656737016737 0ustar00rootroot00000000000000

This applies to the gc toolchain. Gccgo has native gdb support. Besides this overview you might want to consult the GDB manual.

GDB does not understand Go programs well. The stack management, threading, and runtime contain aspects that differ enough from the execution model GDB expects that they can confuse the debugger, even when the program is compiled with gccgo. As a consequence, although GDB can be useful in some situations, it is not a reliable debugger for Go programs, particularly heavily concurrent ones. Moreover, it is not a priority for the Go project to address these issues, which are difficult. In short, the instructions below should be taken only as a guide to how to use GDB when it works, not as a guarantee of success.

In time, a more Go-centric debugging architecture may be required.

Introduction

When you compile and link your Go programs with the gc toolchain on Linux, Mac OS X, FreeBSD or NetBSD, the resulting binaries contain DWARFv3 debugging information that recent versions (>7.1) of the GDB debugger can use to inspect a live process or a core dump.

Pass the '-w' flag to the linker to omit the debug information (for example, go build -ldflags "-w" prog.go).

The code generated by the gc compiler includes inlining of function invocations and registerization of variables. These optimizations can sometimes make debugging with gdb harder. To disable them when debugging, pass the flags -gcflags "-N -l" to the go command used to build the code being debugged.

Common Operations

  • Show file and line number for code, set breakpoints and disassemble:
    (gdb) list
    (gdb) list line
    (gdb) list file.go:line
    (gdb) break line
    (gdb) break file.go:line
    (gdb) disas
  • Show backtraces and unwind stack frames:
    (gdb) bt
    (gdb) frame n
  • Show the name, type and location on the stack frame of local variables, arguments and return values:
    (gdb) info locals
    (gdb) info args
    (gdb) p variable
    (gdb) whatis variable
  • Show the name, type and location of global variables:
    (gdb) info variables regexp

Go Extensions

A recent extension mechanism to GDB allows it to load extension scripts for a given binary. The tool chain uses this to extend GDB with a handful of commands to inspect internals of the runtime code (such as goroutines) and to pretty print the built-in map, slice and channel types.

  • Pretty printing a string, slice, map, channel or interface:
    (gdb) p var
  • A $len() and $cap() function for strings, slices and maps:
    (gdb) p $len(var)
  • A function to cast interfaces to their dynamic types:
    (gdb) p $dtype(var)
    (gdb) iface var

    Known issue: GDB can’t automatically find the dynamic type of an interface value if its long name differs from its short name (annoying when printing stacktraces, the pretty printer falls back to printing the short type name and a pointer).

  • Inspecting goroutines:
    (gdb) info goroutines
    (gdb) goroutine n cmd
    (gdb) help goroutine
    For example:
    (gdb) goroutine 12 bt

If you'd like to see how this works, or want to extend it, take a look at src/pkg/runtime/runtime-gdb.py in the Go source distribution. It depends on some special magic types (hash<T,U>) and variables (runtime.m and runtime.g) that the linker (src/cmd/ld/dwarf.c) ensures are described in the DWARF code.

If you're interested in what the debugging information looks like, run 'objdump -W 6.out' and browse through the .debug_* sections.

Known Issues

  1. String pretty printing only triggers for type string, not for types derived from it.
  2. Type information is missing for the C parts of the runtime library.
  3. GDB does not understand Go’s name qualifications and treats "fmt.Print" as an unstructured literal with a "." that needs to be quoted. It objects even more strongly to method names of the form pkg.(*MyType).Meth.
  4. All global variables are lumped into package "main".

Tutorial

In this tutorial we will inspect the binary of the regexp package's unit tests. To build the binary, change to $GOROOT/src/pkg/regexp and run go test -c. This should produce an executable file named regexp.test.

Getting Started

Launch GDB, debugging regexp.test:

$ gdb regexp.test
GNU gdb (GDB) 7.2-gg8
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv  3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
Type "show copying" and "show warranty" for licensing/warranty details.
This GDB was configured as "x86_64-linux".

Reading symbols from  /home/user/go/src/pkg/regexp/regexp.test...
done.
Loading Go Runtime support.
(gdb) 

The message "Loading Go Runtime support" means that GDB loaded the extension from $GOROOT/src/pkg/runtime/runtime-gdb.py.

To help GDB find the Go runtime sources and the accompanying support script, pass your $GOROOT with the '-d' flag:

$ gdb regexp.test -d $GOROOT

If for some reason GDB still can't find that directory or that script, you can load it by hand by telling gdb (assuming you have the go sources in ~/go/):

(gdb) source ~/go/src/pkg/runtime/runtime-gdb.py
Loading Go Runtime support.

Inspecting the source

Use the "l" or "list" command to inspect source code.

(gdb) l

List a specific part of the source parametrizing "list" with a function name (it must be qualified with its package name).

(gdb) l main.main

List a specific file and line number:

(gdb) l regexp.go:1
(gdb) # Hit enter to repeat last command. Here, this lists next 10 lines.

Naming

Variable and function names must be qualified with the name of the packages they belong to. The Compile function from the regexp package is known to GDB as 'regexp.Compile'.

Methods must be qualified with the name of their receiver types. For example, the *Regexp type’s String method is known as 'regexp.(*Regexp).String'.

Variables that shadow other variables are magically suffixed with a number in the debug info. Variables referenced by closures will appear as pointers magically prefixed with '&'.

Setting breakpoints

Set a breakpoint at the TestFind function:

(gdb) b 'regexp.TestFind'
Breakpoint 1 at 0x424908: file /home/user/go/src/pkg/regexp/find_test.go, line 148.

Run the program:

(gdb) run
Starting program: /home/user/go/src/pkg/regexp/regexp.test

Breakpoint 1, regexp.TestFind (t=0xf8404a89c0) at /home/user/go/src/pkg/regexp/find_test.go:148
148	func TestFind(t *testing.T) {

Execution has paused at the breakpoint. See which goroutines are running, and what they're doing:

(gdb) info goroutines
  1  waiting runtime.gosched
* 13  running runtime.goexit

the one marked with the * is the current goroutine.

Inspecting the stack

Look at the stack trace for where we’ve paused the program:

(gdb) bt  # backtrace
#0  regexp.TestFind (t=0xf8404a89c0) at /home/user/go/src/pkg/regexp/find_test.go:148
#1  0x000000000042f60b in testing.tRunner (t=0xf8404a89c0, test=0x573720) at /home/user/go/src/pkg/testing/testing.go:156
#2  0x000000000040df64 in runtime.initdone () at /home/user/go/src/pkg/runtime/proc.c:242
#3  0x000000f8404a89c0 in ?? ()
#4  0x0000000000573720 in ?? ()
#5  0x0000000000000000 in ?? ()

The other goroutine, number 1, is stuck in runtime.gosched, blocked on a channel receive:

(gdb) goroutine 1 bt
#0  0x000000000040facb in runtime.gosched () at /home/user/go/src/pkg/runtime/proc.c:873
#1  0x00000000004031c9 in runtime.chanrecv (c=void, ep=void, selected=void, received=void)
 at  /home/user/go/src/pkg/runtime/chan.c:342
#2  0x0000000000403299 in runtime.chanrecv1 (t=void, c=void) at/home/user/go/src/pkg/runtime/chan.c:423
#3  0x000000000043075b in testing.RunTests (matchString={void (struct string, struct string, bool *, error *)}
 0x7ffff7f9ef60, tests=  []testing.InternalTest = {...}) at /home/user/go/src/pkg/testing/testing.go:201
#4  0x00000000004302b1 in testing.Main (matchString={void (struct string, struct string, bool *, error *)} 
 0x7ffff7f9ef80, tests= []testing.InternalTest = {...}, benchmarks= []testing.InternalBenchmark = {...})
at /home/user/go/src/pkg/testing/testing.go:168
#5  0x0000000000400dc1 in main.main () at /home/user/go/src/pkg/regexp/_testmain.go:98
#6  0x00000000004022e7 in runtime.mainstart () at /home/user/go/src/pkg/runtime/amd64/asm.s:78
#7  0x000000000040ea6f in runtime.initdone () at /home/user/go/src/pkg/runtime/proc.c:243
#8  0x0000000000000000 in ?? ()

The stack frame shows we’re currently executing the regexp.TestFind function, as expected.

(gdb) info frame
Stack level 0, frame at 0x7ffff7f9ff88:
 rip = 0x425530 in regexp.TestFind (/home/user/go/src/pkg/regexp/find_test.go:148); 
    saved rip 0x430233
 called by frame at 0x7ffff7f9ffa8
 source language minimal.
 Arglist at 0x7ffff7f9ff78, args: t=0xf840688b60
 Locals at 0x7ffff7f9ff78, Previous frame's sp is 0x7ffff7f9ff88
 Saved registers:
  rip at 0x7ffff7f9ff80

The command info locals lists all variables local to the function and their values, but is a bit dangerous to use, since it will also try to print uninitialized variables. Uninitialized slices may cause gdb to try to print arbitrary large arrays.

The function’s arguments:

(gdb) info args
t = 0xf840688b60

When printing the argument, notice that it’s a pointer to a Regexp value. Note that GDB has incorrectly put the * on the right-hand side of the type name and made up a 'struct' keyword, in traditional C style.

(gdb) p re
(gdb) p t
$1 = (struct testing.T *) 0xf840688b60
(gdb) p t
$1 = (struct testing.T *) 0xf840688b60
(gdb) p *t
$2 = {errors = "", failed = false, ch = 0xf8406f5690}
(gdb) p *t->ch
$3 = struct hchan<*testing.T>

That struct hchan<*testing.T> is the runtime-internal representation of a channel. It is currently empty, or gdb would have pretty-printed it's contents.

Stepping forward:

(gdb) n  # execute next line
149             for _, test := range findTests {
(gdb)    # enter is repeat
150                     re := MustCompile(test.pat)
(gdb) p test.pat
$4 = ""
(gdb) p re
$5 = (struct regexp.Regexp *) 0xf84068d070
(gdb) p *re
$6 = {expr = "", prog = 0xf840688b80, prefix = "", prefixBytes =  []uint8, prefixComplete = true, 
  prefixRune = 0, cond = 0 '\000', numSubexp = 0, longest = false, mu = {state = 0, sema = 0}, 
  machine =  []*regexp.machine}
(gdb) p *re->prog
$7 = {Inst =  []regexp/syntax.Inst = {{Op = 5 '\005', Out = 0, Arg = 0, Rune =  []int}, {Op = 
    6 '\006', Out = 2, Arg = 0, Rune =  []int}, {Op = 4 '\004', Out = 0, Arg = 0, Rune =  []int}}, 
  Start = 1, NumCap = 2}

We can step into the Stringfunction call with "s":

(gdb) s
regexp.(*Regexp).String (re=0xf84068d070, noname=void) at /home/user/go/src/pkg/regexp/regexp.go:97
97      func (re *Regexp) String() string {

Get a stack trace to see where we are:

(gdb) bt
#0  regexp.(*Regexp).String (re=0xf84068d070, noname=void)
    at /home/user/go/src/pkg/regexp/regexp.go:97
#1  0x0000000000425615 in regexp.TestFind (t=0xf840688b60)
    at /home/user/go/src/pkg/regexp/find_test.go:151
#2  0x0000000000430233 in testing.tRunner (t=0xf840688b60, test=0x5747b8)
    at /home/user/go/src/pkg/testing/testing.go:156
#3  0x000000000040ea6f in runtime.initdone () at /home/user/go/src/pkg/runtime/proc.c:243
....

Look at the source code:

(gdb) l
92              mu      sync.Mutex
93              machine []*machine
94      }
95
96      // String returns the source text used to compile the regular expression.
97      func (re *Regexp) String() string {
98              return re.expr
99      }
100
101     // Compile parses a regular expression and returns, if successful,

Pretty Printing

GDB's pretty printing mechanism is triggered by regexp matches on type names. An example for slices:

(gdb) p utf
$22 =  []uint8 = {0 '\000', 0 '\000', 0 '\000', 0 '\000'}

Since slices, arrays and strings are not C pointers, GDB can't interpret the subscripting operation for you, but you can look inside the runtime representation to do that (tab completion helps here):


(gdb) p slc
$11 =  []int = {0, 0}
(gdb) p slc-><TAB>
array  slc    len    
(gdb) p slc->array
$12 = (int *) 0xf84057af00
(gdb) p slc->array[1]
$13 = 0

The extension functions $len and $cap work on strings, arrays and slices:

(gdb) p $len(utf)
$23 = 4
(gdb) p $cap(utf)
$24 = 4

Channels and maps are 'reference' types, which gdb shows as pointers to C++-like types hash<int,string>*. Dereferencing will trigger prettyprinting

Interfaces are represented in the runtime as a pointer to a type descriptor and a pointer to a value. The Go GDB runtime extension decodes this and automatically triggers pretty printing for the runtime type. The extension function $dtype decodes the dynamic type for you (examples are taken from a breakpoint at regexp.go line 293.)

(gdb) p i
$4 = {str = "cbb"}
(gdb) whatis i
type = regexp.input
(gdb) p $dtype(i)
$26 = (struct regexp.inputBytes *) 0xf8400b4930
(gdb) iface i
regexp.input: struct regexp.inputBytes *
go/doc/devel0040755000000000000000000000000012412656734013264 5ustar00rootroot00000000000000go/doc/devel/release.html0100644000000000000000000005156712412656734015664 0ustar00rootroot00000000000000

This page summarizes the changes between official stable releases of Go. The Mercurial change log has the full details.

To update to a specific release, use:

hg pull
hg update tag

go1.3 (released 2014/06/18)

Go 1.3 is a major release of Go. Read the Go 1.3 Release Notes for more information.

Minor revisions

go1.3.1 (released 2014/08/13) includes bug fixes to the compiler and the runtime, net, and crypto/rsa packages. See the change history for details.

go1.3.2 (released 2014/09/25) includes bug fixes to cgo and the crypto/tls packages. See the change history for details.

go1.3.3 (released 2014/09/30) includes further bug fixes to cgo, the runtime package, and the nacl port. See the change history for details.

go1.2 (released 2013/12/01)

Go 1.2 is a major release of Go. Read the Go 1.2 Release Notes for more information.

Minor revisions

go1.2.1 (released 2014/03/02) includes bug fixes to the runtime, net, and database/sql packages. See the change history for details.

go1.2.2 (released 2014/05/05) includes a security fix that affects the tour binary included in the binary distributions (thanks to Guillaume T).

go1.1 (released 2013/05/13)

Go 1.1 is a major release of Go. Read the Go 1.1 Release Notes for more information.

Minor revisions

go1.1.1 (released 2013/06/13) includes several compiler and runtime bug fixes. See the change history for details.

go1.1.2 (released 2013/08/13) includes fixes to the gc compiler and cgo, and the bufio, runtime, syscall, and time packages. See the change history for details. If you use package syscall's Getrlimit and Setrlimit functions under Linux on the ARM or 386 architectures, please note change 55ac276af5a7 that fixes issue 5949.

go1 (released 2012/03/28)

Go 1 is a major release of Go that will be stable in the long term. Read the Go 1 Release Notes for more information.

It is intended that programs written for Go 1 will continue to compile and run correctly, unchanged, under future versions of Go 1. Read the Go 1 compatibility document for more about the future of Go 1.

The go1 release corresponds to weekly.2012-03-27.

Minor revisions

go1.0.1 (released 2012/04/25) was issued to fix an escape analysis bug that can lead to memory corruption. It also includes several minor code and documentation fixes.

go1.0.2 (released 2012/06/13) was issued to fix two bugs in the implementation of maps using struct or array keys: issue 3695 and issue 3573. It also includes many minor code and documentation fixes.

go1.0.3 (released 2012/09/21) includes minor code and documentation fixes.

See the go1 release branch history for the complete list of changes.

r60 (released 2011/09/07)

The r60 release corresponds to weekly.2011-08-17. This section highlights the most significant changes in this release. For a more detailed summary, see the weekly release notes. For complete information, see the Mercurial change list.

Language

An "else" block is now required to have braces except if the body of the "else" is another "if". Since gofmt always puts those braces in anyway, gofmt-formatted programs will not be affected. To fix other programs, run gofmt.

Packages

Package http's URL parsing and query escaping code (such as ParseURL and URLEscape) has been moved to the new url package, with several simplifications to the names. Client code can be updated automatically with gofix.

Package image has had significant changes made to the Pix field of struct types such as image.RGBA and image.NRGBA. The image.Image interface type has not changed, though, and you should not need to change your code if you don't explicitly refer to Pix fields. For example, if you decode a number of images using the image/jpeg package, compose them using image/draw, and then encode the result using image/png, then your code should still work as before. If your code does refer to Pix fields see the weekly.2011-07-19 snapshot notes for how to update your code.

Package template has been replaced with a new templating package (formerly exp/template). The original template package is still available as old/template. The old/template package is deprecated and will be removed. The Go tree has been updated to use the new template package. We encourage users of the old template package to switch to the new one. Code that uses template or exp/template will need to change its import lines to "old/template" or "template", respectively.

Tools

Goinstall now uses a new tag selection scheme. When downloading or updating, goinstall looks for a tag or branch with the "go." prefix that corresponds to the local Go version. For Go release.r58 it looks for go.r58. For weekly.2011-06-03 it looks for go.weekly.2011-06-03. If the specific go.X tag or branch is not found, it chooses the closest earlier version. If an appropriate tag or branch is found, goinstall uses that version of the code. Otherwise it uses the default version selected by the version control system. Library authors are encouraged to use the appropriate tag or branch names in their repositories to make their libraries more accessible.

Minor revisions

r60.1 includes a linker fix, a pair of goplay fixes, and a json package fix and a new struct tag option.

r60.2 fixes a memory leak involving maps.

r60.3 fixes a reflect bug.

r59 (released 2011/08/01)

The r59 release corresponds to weekly.2011-07-07. This section highlights the most significant changes in this release. For a more detailed summary, see the weekly release notes. For complete information, see the Mercurial change list.

Language

This release includes a language change that restricts the use of goto. In essence, a goto statement outside a block cannot jump to a label inside that block. Your code may require changes if it uses goto. See this changeset for how the new rule affected the Go tree.

Packages

As usual, gofix will handle the bulk of the rewrites necessary for these changes to package APIs.

Package http has a new FileSystem interface that provides access to files. The FileServer helper now takes a FileSystem argument instead of an explicit file system root. By implementing your own FileSystem you can use the FileServer to serve arbitrary data.

Package os's ErrorString type has been hidden. Most uses of os.ErrorString can be replaced with os.NewError.

Package reflect supports a new struct tag scheme that enables sharing of struct tags between multiple packages. In this scheme, the tags must be of the form:

	`key:"value" key2:"value2"`

The StructField type's Tag field now has type StructTag, which has a Get method. Clients of json and xml will need to be updated. Code that says

	type T struct {
		X int "name"
	}

should become

	type T struct {
		X int `json:"name"`  // or `xml:"name"`
	}

Use govet to identify struct tags that need to be changed to use the new syntax.

Package sort's IntArray type has been renamed to IntSlice, and similarly for Float64Slice and StringSlice.

Package strings's Split function has itself been split into Split and SplitN. SplitN is the same as the old Split. The new Split is equivalent to SplitN with a final argument of -1.

Package image/draw's Draw function now takes an additional argument, a compositing operator. If in doubt, use draw.Over.

Tools

Goinstall now installs packages and commands from arbitrary remote repositories (not just Google Code, Github, and so on). See the goinstall documentation for details.

r58 (released 2011/06/29)

The r58 release corresponds to weekly.2011-06-09 with additional bug fixes. This section highlights the most significant changes in this release. For a more detailed summary, see the weekly release notes. For complete information, see the Mercurial change list.

Language

This release fixes a use of uninitialized memory in programs that misuse goto.

Packages

As usual, gofix will handle the bulk of the rewrites necessary for these changes to package APIs.

Package http drops the finalURL return value from the Client.Get method. The value is now available via the new Request field on http.Response. Most instances of the type map[string][]string in have been replaced with the new Values type.

Package exec has been redesigned with a more convenient and succinct API.

Package strconv's Quote function now escapes only those Unicode code points not classified as printable by unicode.IsPrint. Previously Quote would escape all non-ASCII characters. This also affects the fmt package's "%q" formatting directive. The previous quoting behavior is still available via strconv's new QuoteToASCII function.

Package os/signal's Signal and UnixSignal types have been moved to the os package.

Package image/draw is the new name for exp/draw. The GUI-related code from exp/draw is now located in the exp/gui package.

Tools

Goinstall now observes the GOPATH environment variable to build and install your own code and external libraries outside of the Go tree (and avoid writing Makefiles).

Minor revisions

r58.1 adds build and runtime changes to make Go run on OS X 10.7 Lion.

r57 (released 2011/05/03)

The r57 release corresponds to weekly.2011-04-27 with additional bug fixes. This section highlights the most significant changes in this release. For a more detailed summary, see the weekly release notes. For complete information, see the Mercurial change list.

The new gofix tool finds Go programs that use old APIs and rewrites them to use newer ones. After you update to a new Go release, gofix helps make the necessary changes to your programs. Gofix will handle the http, os, and syscall package changes described below, and we will update the program to keep up with future changes to the libraries. Gofix can’t handle all situations perfectly, so read and test the changes it makes before committing them. See the gofix blog post for more information.

Language

Multiple assignment syntax replaces the closed function. The syntax for channel receives allows an optional second assigned value, a boolean value indicating whether the channel is closed. This code:

	v := <-ch
	if closed(ch) {
		// channel is closed
	}

should now be written as:

	v, ok := <-ch
	if !ok {
		// channel is closed
	}

Unused labels are now illegal, just as unused local variables are.

Packages

Package gob will now encode and decode values of types that implement the GobEncoder and GobDecoder interfaces. This allows types with unexported fields to transmit self-consistent descriptions; examples include big.Int and big.Rat.

Package http has been redesigned. For clients, there are new Client and Transport abstractions that give more control over HTTP details such as headers sent and redirections followed. These abstractions make it easy to implement custom clients that add functionality such as OAuth2. For servers, ResponseWriter has dropped its non-essential methods. The Hijack and Flush methods are no longer required; code can test for them by checking whether a specific value implements Hijacker or Flusher. The RemoteAddr and UsingTLS methods are replaced by Request's RemoteAddr and TLS fields. The SetHeader method is replaced by a Header method; its result, of type Header, implements Set and other methods.

Package net drops the laddr argument from Dial and drops the cname return value from LookupHost. The implementation now uses cgo to implement network name lookups using the C library getaddrinfo(3) function when possible. This ensures that Go and C programs resolve names the same way and also avoids the OS X application-level firewall.

Package os introduces simplified Open and Create functions. The original Open is now available as OpenFile. The final three arguments to StartProcess have been replaced by a pointer to a ProcAttr.

Package reflect has been redesigned. Type is now an interface that implements all the possible type methods. Instead of a type switch on a Type t, switch on t.Kind(). Value is now a struct value that implements all the possible value methods. Instead of a type switch on a Value v, switch on v.Kind(). Typeof and NewValue are now called TypeOf and ValueOf To create a writable Value, use New(t).Elem() instead of Zero(t). See the change description for the full details. The new API allows a more efficient implementation of Value that avoids many of the allocations required by the previous API.

Remember that gofix will handle the bulk of the rewrites necessary for these changes to package APIs.

Tools

Gofix, a new command, is described above.

Gotest is now a Go program instead of a shell script. The new -test.short flag in combination with package testing's Short function allows you to write tests that can be run in normal or “short” mode; all.bash runs tests in short mode to reduce installation time. The Makefiles know about the flag: use make testshort.

The run-time support now implements CPU and memory profiling. Gotest's new -test.cpuprofile and -test.memprofile flags make it easy to profile tests. To add profiling to your web server, see the http/pprof documentation. For other uses, see the runtime/pprof documentation.

Minor revisions

r57.1 fixes a nil pointer dereference in http.FormFile.

r57.2 fixes a use of uninitialized memory in programs that misuse goto.

r56 (released 2011/03/16)

The r56 release was the first stable release and corresponds to weekly.2011-03-07.1. The numbering starts at 56 because before this release, what we now consider weekly snapshots were called releases.

go/doc/devel/weekly.html0100644000000000000000000111411212412656734015527 0ustar00rootroot00000000000000

This page summarizes the changes between tagged weekly snapshots of Go. Such snapshots are no longer created. This page remains as a historical reference only.

For recent information, see the Mercurial change log and development mailing list.

2012-03-27 (Go 1)

* cmd/dist: fix detection of go1 version.
* cmd/go: add missing error check (thanks Evan Shaw),
	allow underscores in tool name (thanks Shenghou Ma),
	bug fixes,
	copy tag_test.go from goinstall,
	explain versions better,
	respect $GOBIN always,
	update for go1 tag format.
* cmd/godoc: canonicalize custom path redirects,
	fix app engine version,
	use virtual filesystem to implement -templates flag.
* codewalk/sharemem.xml: fix references to files.
* crypto/tls: don't select ECC ciphersuites with no mutual curve.
* doc: add JSON-RPC: a tale of interfaces article (thanks Francisco Souza),
	describe the Windows MSI installer as experimental,
	link to Go Project Dashboard from package list,
	update wiki tutorial templates and template discussion,
	and many minor fixes.
* exp/types: generalized GCImporter API.
* go/build: cgoEnabled is not known to cmd/dist anymore (thanks Shenghou Ma),
	fix import check.
* godoc: make 'Overview' section collapsible.
* misc/dist: many fixes and tweaks.
* misc/emacs: fix indentation bug.
* misc/goplay: fix error on IE8 (thanks Yasuhiro Matsumoto).
* net: ignore ECONNABORTED from syscall.Accept (thanks Devon H. O'Dell).
* os: add missing byte to FileMode buffer (thanks Stefan Nilsson).
* path/filepath: convert drive letter to upper case in windows EvalSymlinks (thanks Alex Brainman),
	correct comment in EvalSymlinks (thanks Alex Brainman),
	use windows GetShortPathName api to force GetLongPathName to do its work (thanks Alex Brainman),
	windows drive letter cannot be a digit (thanks Alex Brainman).
* run.bash: compile the codewalks.
* runtime: restore deadlock detection in the simplest case (thanks Rémy Oudompheng),
	work around false negative in deadlock detection.
* text/template: fix typo in package comment.
* windows: installer fixes (thanks Joe Poirier).

2012-03-22 (Go 1 Release Candidate 2)

As with last week's snapshot, this snapshot is another Go 1 release candidate.
A notable change in this snapshot are Windows installer fixes.

Changes in this snapshot:
* 5l, 6l, 8l: fix stack split logic for stacks near default segment size.
* archive/zip: move r.zip off disk, into reader_test.go.
* build: catch API changes during build,
	do more during windows build (thanks Alex Brainman),
	lengthen timeout for the lengthy runtime test (thanks Shenghou Ma),
	unset GOPATH before tests (thanks Shenghou Ma).
* cmd/cgo: add support for function export for gccgo (thanks Rémy Oudompheng),
	fix handling of errno for gccgo.
* cmd/go: add -fno-common by default on Darwin (thanks Shenghou Ma),
	don't add detail to errPrintedOutput,
	fix directory->import path conversion,
	make build errors more visible,
	use .o, not .{5,6,8}, for gccgo created object files,
	work around occasional ETXTBSY running cgo.
* cmd/godoc: add toys, tour button to playground,
	inform users that the playground doesn't work via local godoc,
	style example headings like links,
	use *goroot as base path in zip file,
	use FormatText for formating code in html template,
	use shorter titles for tabs.
* cmd/gofmt: show ascii in usage (thanks Yasuhiro Matsumoto).
* cmd/pack: also recognize '\\' as path separator in filenames (thanks Shenghou Ma).
* crypto/tls: always send a Certificate message if one was requested.
* doc/install: remove reference to "Go Tutorial" (thanks Shenghou Ma).
* doc/play: use []rune instead of []int (thanks Yasuhiro Matsumoto).
* doc: add Go Concurrency Patterns: Timing out, moving on article (thanks Francisco Souza),
	add Go image/draw package article and convert code snippets to Go1,
	add Gobs of data article (thanks Francisco Souza),
	add Godoc: documenting Go code article (thanks Francisco Souza),
	add JSON and Go article (thanks Francisco Souza),
	general update of gccgo installation instructions,
	minor updates to most docs.
* flag: add examples.
* gc: fix struct and array comparisons for new bool rules (thanks Anthony Martin),
	use quoted string format in import error,
	when expanding append inline, preserve arguments.
* go/build: clarify why we exclude files starting with '_' or '.' (thanks Shenghou Ma),
	clearer argument name for Import (src -> srcDir),
	do not report Target for local imports,
	fix match.
* go/printer, gofmt: fix multi-line logic.
* html/template: add Templates and XXXEscape functions,
	fix nil pointer bug,
	fix panic on Clone.
* io/ioutil: fix crash when Stat fails.
* make.bat: fix for old files (thanks Christopher Redden),
	don't show error message if old generated files do not exist (thanks Shenghou Ma),
	properly handle directories with spaces (thanks Alex Brainman).
* misc/cgo/gmp: update for Go 1 (thanks Shenghou Ma).
* misc/dashboard: remove old python package dashboard.
* misc/dist: don't ship cmd/cov or cmd/prof,
	force modes to 0755 or 0644 in tarballs,
	remove exp and old before building.
* misc/vim: restore fileencodings (thanks Yasuhiro Matsumoto).
* net/http: couple more triv.go modernizations,
	ensure triv.go compiles and runs (thanks Robert Hencke).
* net: drop unnecessary type assertions and fix leak in test (thanks Mikio Hara).
* os: IsNotExist() should also consider ERROR_PATH_NOT_FOUND on Windows (thanks Shenghou Ma),
	do not assume syscall.Write will write everything,
	remove document duplication in error predicate functions (thanks Shenghou Ma),
	return some invented data from Stat(DevNull) on windows (thanks Alex Brainman).
* path/filepath: implement Match and Glob on windows (thanks Alex Brainman).
* reflect: document PkgPath, Method, StructField,
	panic if MakeSlice is given bad len/cap arguments.
* run.bat: disable test in test\bench\go1 to fix build (thanks Alex Brainman).
* runtime/cgo: darwin signal masking (thanks Mikio Hara),
	linux signal masking (thanks Mikio Hara).
* runtime: do not handle signals before configuring handler,
	manage stack by ourselves for badcallback on windows/amd64 (thanks Shenghou Ma),
	remove unused goc2c.c (thanks Shenghou Ma).
* sort: add time complexity to doc (thanks Stefan Nilsson),
	fix computation of maxDepth to avoid infinite loop (thanks Stefan Nilsson).
* spec: delete references to unsafe.Reflect,Typeof,Unreflect.
* syscall: Test SCM_CREDENTIALS, SO_PASSCRED on Linux (thanks Albert Strasheim),
	add a test for passing an fd over a unix socket,
	delete passfd_test.go.
* test: use testlib in a few more cases (thanks Shenghou Ma).
* text/template: fix a couple of parse bugs around identifiers,
	variables do not take arguments.

2012-03-13 (Go 1 Release Candidate 1)

This weekly snapshot is very close to what we expect will be the contents of
the Go 1 release. There are still a few minor documentation issues to resolve,
and a handful of bugs that should be addressed before the release, but the vast
majority of Go programs should be completely unaffected by any changes we make
between now and the full release.

If you're interested in helping us test, eager to try out Go 1, or just
curious, this weekly snapshot is the one to try. We'll issue a new App Engine
Go 1 beta SDK very soon, so if you're an App Engine user you can try it there
too.

To help us focus on any remaining bugs and avoid introducing new ones, we will
restrict our attention to critical fixes and issues marked Go1-Must in the
issue tracker. Everything non-essential will be held until after the Go 1
release is cut and in the field for a while.

Changes in this snapshot:
* archive/zip: verify CRC32s in non-streamed files,
	write data descriptor signature for OS X; fix bugs reading it.
* build: build correct cmd/dist matching GOHOSTARCH (thanks Shenghou Ma),
	re-enable some broken tests in run.bash (thanks Shenghou Ma),
	remove some references to Make.inc etc.
	use run.go for running tests.
* builder: use short test for subrepos (thanks Shenghou Ma).
* cgo, runtime: diagnose callback on non-Go thread.
* cmd/api: set compiler for all build contexts,
	work on Windows again, and make gccgo files work a bit more.
* cmd/cgo: document CGO_LDFLAGS and CGO_CFLAGS,
	silence const warnings.
* cmd/dist, cmd/go: move CGO_ENABLED from 'go tool dist env' to 'go env' (thanks Shenghou Ma).
* cmd/dist: fix build for Linux/ARM (thanks Shenghou Ma),
	use correct hg tag for go version (thanks Alex Brainman).
* cmd/fix: add rules for net/http -> net/http/httputil renames.
* cmd/gc: allow ~ in import paths,
	delete old map delete in walk,
	do not confuse unexported methods of same name,
	if $GOROOT_FINAL is set, rewrite file names in object files,
	implement len(array) / cap(array) rule,
	import path cannot start with slash on Windows (thanks Shenghou Ma),
	must not inline panic, recover,
	show duplicate key in error,
	unnamed struct types can have methods.
* cmd/go: add -compiler,
	add env command, use to fix misc/cgo/testso,
	allow go get with arbitrary URLs,
	allow ssh tunnelled bzr, git and svn (thanks Ingo Oeser),
	always provide .exe suffix on windows (thanks Shenghou Ma),
	document import path meta tag discovery in go help remote,
	honor buildflags in run, test (thanks Rémy Oudompheng),
	local import fixes,
	make go get new.code/... work,
	rebuild external test package dependencies,
	respect $GOBIN always,
	support -compiler for go list, fix isStale for gccgo (thanks Rémy Oudompheng).
* cmd/godoc: add support for serving templates.
	fix codewalk handler (thanks Francisco Souza).
	remove extra / in paths (thanks Ugorji Nwoke),
	support $GOPATH, simplify file system code,
	switch on +1 buttons.
* cmd/gofmt: fix race in long test (thanks Mikio Hara).
* codereview: fix for Mercurial 2.1.
* crypto/x509: allow server gated crypto in windows systemVerify (thanks Mikkel Krautz),
	do not forget to free cert context (thanks Alex Brainman),
	don't include empty additional primes in PKCS#1 private key,
	enforce path length constraint,
	new home for root fetchers; build chains using Windows API (thanks Mikkel Krautz).
* csv: clarify what a negative FieldsPerRecord means.
* database/sql: add docs about connection state, pooling,
	ensure Stmts are correctly closed (thanks Gwenael Treguier),
	fix double connection free on Stmt.Query error,
	fix typo bug resulting in double-Prepare.
* database/sql: add ErrBadConn.
* doc/go1: template packages have changed since r60.
* doc/go_mem: init-created goroutine behavior changes for Go 1 (thanks Shenghou Ma).
* doc/gopher: flip frontpage gopher's eyes.
* doc: add "About the go command" article,
	add C? Go? Cgo! article (thanks Francisco Souza),
	add Go's declaration syntax article (thanks Francisco Souza),
	add more gophers,
	add note about import . to Go 1 compatibility notes,
	several doc fixes and improvements,
	update Effective Go init section,
	update progs/run (thanks Shenghou Ma),
	update reference gopher,
	web site tweaks.
* encoding/asn1: handle UTCTime before the year 2000.
* encoding/binary: improve package comment (thanks Stefan Nilsson).
* encoding/gob: fix memory corruption.
* encoding/json: document that nil slice encodes as `null`.
* exp/wingui: moved to code.google.com/p/gowingui.
* expvar: add locking to String, and use RWMutex properly throughout,
	add missing locking in String methods.
* fmt, log: stop using unicode.
* fmt: minor tweak of package doc to show headings in godoc (thanks Volker Dobler).
* go/build, cmd/go: add support for .syso files.
* go/build: add NoGoError,
	add dependency test,
	do not parse .syso files (thanks Alex Brainman).
* go/parser: avoid endless loop in case of internal error,
	better error synchronization.
* go/printer, gofmt: nicer formatting of multi-line returns.
* go/printer: example for Fprint.
* go/scanner: better panic diagnostic.
* go spec: no known implementation differences anymore,
	fix inaccuracy in type identity definition.
* io: better document WriterAt.
* misc/dashboard: remove obsolete package builder code.
* misc/dist: add source archive support,
	add windows installer and zip support,
	minimum target requirement is 10.6 for Darwin (thanks Shenghou Ma).
* misc/emacs: fix extra indentation after comments that end with a period.
* misc/xcode: example install of language spec for Xcode 4.x (thanks Emil Hessman).
* net, net/rpc, reflect, time: document concurrency guarantees.
* net/http: fix crash with Transport.CloseIdleConnections,
	return appropriate errors from ReadRequest.
* net: add skip message to test (thanks Mikio Hara),
	disable use of external listen along with other external network uses,
	do not use reflect for DNS messages (thanks Rémy Oudompheng),
	document ReadMsgUnix, WriteMsgUnix,
	fix TestDialTimeout on windows builder,
	improve server and file tests (thanks Mikio Hara),
	make Dial and Listen behavior consistent across over platforms (thanks Mikio Hara),
	remove dependence on bytes, fmt, strconv,
	silence another epoll print,
	use IANA reserved port to test dial timeout (thanks Mikio Hara).
* os: document FileInfo.Size as system-dependent for irregular files,
	fix SameFile to work for directories on windows (thanks Alex Brainman).
* path/filepath/path_test.go: repair and enable TestAbs.
* path/filepath: disable AbsTest on windows,
	retrieve real file name in windows EvalSymlinks (thanks Alex Brainman).
* runtime/pprof: disable test on Leopard 64-bit.
* runtime: add Compiler,
	fix windows/amd64 exception handler (thanks Alex Brainman),
	inline calls to notok,
	move runtime.write back to C,
	print error on receipt of signal on non-Go thread,
	remove unused runtime·signame and runtime·newError,
	try extending arena size in 32-bit allocator (thanks Rémy Oudompheng),
	wait for main goroutine before setting GOMAXPROCS (thanks Rémy Oudompheng).
* strconv: add table-based isPrint, remove dependence on bytes, unicode, and strings.
* sync/atomic: disable store and load test on a single processor machine (thanks Mikio Hara).
* syscall: fix mkall.sh, mksyscall_linux.pl, and regen for Linux/ARM (thanks Shenghou Ma).
* test/run: use all available cores on ARM system (thanks Shenghou Ma).
* test: actually run them on windows (thanks Alex Brainman),
	add inherited interface test to ddd.go,
	enable method expression tests in ddd.go,
	invoke go command in run.go,
	match gccgo error messages for bug388.go,
	skip . files in directory.
* testing: do not print 'no tests' when there are examples.
* time: during short test, do not bother tickers take longer than expected (thanks Shenghou Ma),
	mention receiver in Unix, UnixNano docs.
* unicode/utf16: remove dependence on package unicode.
* unicode/utf8: remove dependence on unicode.
* windows: make background of gopher icon transparent (thanks Volker Dobler).

2012-03-04

This snapshot includes a major re-design of the go/build package.
Its FindTree, ScanDir, Tree, and DirInfo types have been replaced with the
Import and Package types. There is no gofix. Code that uses go/build will need
to be updated manually to use the package's new interface.

Other changes:
* 6a/6l: add IMUL3Q and SHLDL.
* all: remove unused unexported functions and constants (thanks Rémy Oudompheng).
* build: add GO_ prefix to LDFLAGS and GCFLAGS (thanks Gustavo Niemeyer).
* cmd/cc: fix an out of bounds array access (thanks Anthony Martin),
	grow some global arrays.
* cmd/dist: force line-buffering stdout/stderr on Unix (thanks Shenghou Ma),
	recognize CC="ccache clang" as clang.
* cmd/go: avoid repeated include dirs (thanks Rémy Oudompheng),
	fix -I flag for gc command (thanks Gustavo Niemeyer),
	fix verbose command displaying (thanks Gustavo Niemeyer),
	fixes for gccgo (thanks Rémy Oudompheng),
	many fixes,
	test -i should not disable -c (thanks Shenghou Ma).
* cmd/vet: don't give error for Printf("%+5.2e", x) (thanks Shenghou Ma).
* cmd/yacc/units.y: update comment, give better error messages when $GOROOT not set (thanks Shenghou Ma).
* crypto/tls: force OS X target version to 10.6 for API compatibility (thanks Mikkel Krautz).
* crypto/x509: fix typo in Verify documentation (thanks Mikkel Krautz).
* dist: treat CC as one unit (thanks Scott Lawrence).
* doc/go1: add justification discussions to major changes,
	minor corrections and updates.
* doc: describe API changes to go/build,
	elaborate available checks for cmd/vet (thanks Shenghou Ma),
	expand code.html to discuss the go tool in more depth,
	instruct FreeBSD/Linux users to rm the old version first,
	remove Go for C++ Programmers,
	remove roadmap document,
	remove tutorial,
	update codelab/wiki to Go 1 (thanks Shenghou Ma),
* encoding/gob: fix "// +build" comment for debug.go (thanks Shenghou Ma),
	more hardening for lengths of input strings.
* encoding/json: drop MarshalForHTML; gofix calls to Marshal,
	escape output from Marshalers.
* encoding/xml: fix anonymous field Unmarshal example (thanks Gustavo Niemeyer),
	fix xml test tag usage (thanks Gustavo Niemeyer).
* gc: disallow absolute import paths,
	fix escape analysis + inlining + closure bug,
	fix string comparisons for new bool rules (thanks Anthony Martin),
	reject import paths containing special characters (thanks Anthony Martin).
* go/ast: examples for ast.Print, ast.Inspect.
* go/doc, godoc: fix range of type declarations.
* go/parser: check import path restrictions,
	expand test cases for bad import.
* go/printer, gofmt: improved comment placement.
* go/printer: fix printing of variadic function calls (thanks Anthony Martin),
	fix test for new import path restrictions (thanks Anthony Martin),
	replace multiline logic,
	simpler exprList code, more tests.
* godoc: add Examples link to top-level index,
	bring back highlighting, selections, and alerts,
	consistent placement of documentation sections,
	don't show directories w/o packages in flat dir mode,
	don't show testdata directories,
	fix codewalks.
* gotype: provide -comments flag.
* html/template: make doctype check case-insensitive (thanks Scott Lawrence),
	use correct method signature in introduction example (thanks Mike Rosset).
* io: document that I/O is not necessarily safe for parallel access.
* ld: allow more -L options (thanks Shenghou Ma),
	fix alignment of rodata section.
* misc: add zsh completion for go tool (thanks Rémy Oudompheng).
* misc/bash: Completion for go tool (thanks Yissakhar Z. Beck).
* misc/dashboard: fix bug in UI template,
	record install counts for external packages.
* misc/dist: implement binary distribution scripts in go.
* misc/gobuilder: send commit time in RFC3339 format.
* misc/xcode: move Xcode3 specific files into sub directory.
* net/http/cgi: add an empty response test,
	fix empty response.
* net/http/httptest: make Server.Close wait for outstanding requests to finish.
* net/http/httputil: fix DumpRequestOut on https URLs,
	make https DumpRequestOut less racy.
* net/http: add overlooked 418 status code, per RFC 2324,
	fix ProxyFromEnvironment bug, docs, add tests,
	make a test more paranoid & reliable on Windows.
* net/rpc: silence read error on closing connection.
* net: add stubs for NetBSD (thanks Benny Siegert),
	make -external flag for tests default to true (thanks Mikio Hara),
	reorganize test files (thanks Mikio Hara).
* os: diagnose chdir error during StartProcess,
	implement UserTime/SystemTime on windows (thanks Alex Brainman),
	implement sameFile on windows (thanks Alex Brainman),
	release process handle at the end of windows (*Process).Wait (thanks Alex Brainman),
	sleep 5ms after process has exited on windows (thanks Alex Brainman).
* path/filepath: note that SplitList is different from strings.Split,
	steer people away from HasPrefix.
* reflect: don't panic comparing functions in DeepEqual.
	make Value.Interface return immutable data.
* runtime/pprof: support OS X CPU profiling.
* runtime: add sanity checks to the runtime-gdb.py prettyprinters,
	check for ARM syscall failures (thanks Shenghou Ma),
	darwin and linux signal masking,
	run init on main thread,
	size arena to fit in virtual address space limit.
* spec: allow disallow of \uFFFD in import path,
	apply method sets, embedding to all types, not just named types,
	clarifications around exports, uniqueness of identifiers,
	import path implementation restriction,
	inside functions, variables must be evaluated,
	use the term "lexical token" (rather then "lexical symbol").
* sync: add Once example, remove old WaitGroup example.
* test/bench/shootout: update post-Makefile.
* test: add documentation, misc fixes.
* testing: add -test.example flag to control execution of examples.
* text/template: add example showing use of custom function,
	add examples that use multiple templates,
	fix redefinition bugs.
* time: add a comment about how to use the Duration constants.

2012-02-22

This weekly snapshot includes changes to the os and runtime packages.

This should be the last of the significant incompatible changes before Go 1.

There are no longer error constants such as EINVAL in the os package, since the
set of values varied with the underlying operating system. There are new
portable functions like IsPermission to test common error properties, plus a
few new error values with more Go-like names, such as ErrPermission and
ErrNoEnv.

The os.Getenverror function has been removed. To distinguish between a
non-existent environment variable and an empty string, use os.Environ or
syscall.Getenv.

The Process.Wait method has dropped its option argument and the associated
constants are gone from the package. Also, the function Wait is gone; only the
method of the Process type persists.

The non-portable Waitmsg type has been replaced with the portable ProcessState.

Much of the API exported by package runtime has been removed in favor of
functionality provided by other packages. Code using the runtime.Type
interface or its specific concrete type implementations should now use package
reflect.  Code using runtime.Semacquire or runtime.Semrelease should use
channels or the abstractions in package sync.

The runtime.Alloc, runtime.Free, and runtime.Lookup functions, an unsafe API
created for debugging the memory allocator, have no replacement.

The runtime.Cgocalls and runtime.Goroutines functions have been renamed to
runtime.NumCgoCall and runtime.NumGoroutine.

The "go fix" command will update code to accommodate most of these changes.

Other changes:
* 5c, 6c, 8c, 6g, 8g: correct boundary checking (thanks Shenghou Ma).
* 5g, 6g, 8g: flush modified globals aggressively.
* 8a, 8l: add EMMS instruction (thanks Evan Shaw).
* bufio: don't return errors from good Peeks.
* build: add make.bash --no-clean option,
	improve Windows support.
* builder: reuse existing workspace if possible (thanks Shenghou Ma),
	update for os.Wait changes.
* bytes: document Compare/Equal semantics for nil arguments, and add tests.
* cgo: fix definition of opaque types (thanks Gustavo Niemeyer).
* cmd/api: record return type of functions for variable typecheck (thanks Rémy Oudompheng).
* cmd/cgo: bug fixes.
* cmd/dist: add clang specific -Wno options (thanks Bobby Powers),
	fix install cmd/5g on non-arm system,
	fix pprof permissions (thanks Bobby Powers),
	make dir check in defaulttarg() more robust (thanks Shenghou Ma),
	use correct package target when cross-compiling (thanks Alex Brainman).
* cmd/gc: correctly typecheck expression lists in returns (thanks Rémy Oudompheng),
	don't believe that variables mentioned 256 times are unused (thanks Rémy Oudompheng),
	error on constant shift overflows (thanks Rémy Oudompheng),
	fix comparison of struct with _ field.
	fix error for floating-point constant %,
	new, less strict bool rules.
* cmd/go: add tool -n flag,
	go test -i correctly handle cgo packages (thanks Shenghou Ma).
* codereview: fix submit message for new clone URL (thanks Shenghou Ma).
* database/sql/driver: API cleanups.
* doc: many fixes and adjustments.
* encoding/gob: cache engine for user type, not base type,
	catch internal error when it happens,
	fix mutually recursive slices of structs.
* encoding/json: ignore anonymous fields.
* go/doc: return Examples in name order.
* go/parser: imaginary constants and ! may start an expression.
* go/printer, gofmt: improved comma placement.
* go/printer: don't lose relevant parentheses when rewriting selector expressions.
* godoc: adjust line height in pre blocks,
	don't print spurious suggestion when running "go doc foo",
	fix absolute->relative mapping,
	fix tag mismatch validation errors (thanks Scott Lawrence),
	import example code support,
	support flat directory view again.
* html/template: add Clone and AddParseTree,
	don't indirect past a Stringer,
	minor tweak to docs to improve HTML typography.
* image: add Decode example.
* ld: add NOPTRBSS for large, pointer-free uninitialized data.
* math/rand: Intn etc. should panic if their argument is <= 0.
* misc/dist/windows: distro builder updates (thanks Joe Poirier).
* misc/goplay: remain in work directory, build in temp directory.
* net, os, syscall: delete os.EPLAN9 (thanks Mikio Hara).
* net/http: add optional Server.TLSConfig field.
* net/smtp: use EHLO then HELO.
* net/textproto: accept bad MIME headers as browsers do.
* net/url: regularise receiver names.
* net: make LocalAddr on multicast return group address (thanks Mikio Hara),
	make parseProcNetIGMP more robust (thanks Mikio Hara),
	more selfConnect debugging: panic if ra == nil in internetSocket,
	panic if sockaddrToTCP returns nil incorrectly,
	other miscellaneous fixes.
* path, path/filepath: polish documentation (thanks Rémy Oudompheng).
* pprof: add Profile type.
* runtime: avoid malloc during malloc,
	define NSIG to fix plan 9 build (thanks David du Colombier),
	fix FreeBSD signal handling around thread creation (thanks Devon H. O'Dell),
	goroutine profile, stack dumps,
	implement runtime.osyield on FreeBSD 386, amd64 (thanks Devon H. O'Dell),
	permit default behaviour of SIGTSTP, SIGTTIN, SIGTTOU,
	release unused memory to the OS (thanks Sébastien Paolacci),
	remove an obsolete file (thanks Mikio Hara).
* spec: make all comparison results untyped bool,
	refine the wording about variables in type switches,
	struct comparison only compares non-blank fields.
* syscall: Make Pdeathsig type Signal in SysProcAttr on Linux (thanks Albert Strasheim),
	fix bounds check in Error,
	force Windows to always use US English error messages (thanks Shenghou Ma).
* test: migrated to new go-based testing framework.
* text/template: evaluate function fields.
* time: use Go distribution zoneinfo if system copy not found.

2012-02-14

This release includes some package changes that require changes to client code.

The flate, gzip and zlib's NewWriterXxx functions no longer return an error.
The compiler will flag all affected code which must then be updated by hand.

The os package's Exec and Time functions were removed.  Callers should use
syscall.Exec and time.Now instead. The ShellExpand function was renamed to
ExpandEnv. The NewFile function now takes a uintptr and the *File.Fd method
returns a uintptr.

The runtime package's Type type and its methods have been removed.
Use the reflect package instead.

Other changes:
* 8a, 8l: add LFENCE, MFENCE, SFENCE (thanks Darren Elwood).
* all.bat: report error code back to the gobuilder (thanks Alex Brainman).
* archive/zip: hide Write method from *Writer type.
* build: create the correct $GOTOOLDIR,
	get rid of deps.bash (thanks Anthony Martin),
	reject make.bash on Windows.
* builder: set $GOBUILDEXIT for Windows (thanks Alex Brainman),
* bytes: add Reader,
	return error in WriteTo if buffer is not drained.
* cgo: add support for returning errno with gccgo (thanks Rémy Oudompheng).
* cmd/api: follow constant references.
* cmd/cgo: omit //line in -godefs, -cdefs output.
* cmd/dist: fixes (thanks Alex Brainman, Gustavo Niemeyer, Mikio Hara, Shenghou Ma).
* cmd/fix: warn about exp, old, deleted packages.
* cmd/gc: suspend safemode during typecheck of inlined bodies.
* cmd/go: a raft of fixes,
	connect os.Stdin for go run and go tool,
	go get scheme detection (thanks Daniel Krech),
	respect test -timeout flag.
* cmd/vet: warn for construct 'Println(os.Stderr, ...)' (thanks Shenghou Ma).
* compress/gzip: remove dead code (thanks Alex Brainman).
* container/heap: add example.
* dashboard: add gobuilder -fail mode.
* database/sql: more tests,
	remove Into from ScannerInto/ScanInto,
	rename ErrTransactionFinished to ErrTxDone,
	support ErrSkip in Tx.Exec (thanks Andrew Balholm),
	treat pointers as nullable types as with encoding/json (thanks Andrew Pritchard).
* debug/macho: drop terrifyingly monstrous URL from package comment.
* dist: prevent recusive loop on windows when fatal() is called (thanks Daniel Theophanes).
* doc: add App Engine docs to 'learn' and 'reference' pages,
	add playground.js,
	new document about compatibility of releases,
	update install.html for binary distros, add install-source.html.
* effective_go: use new map deletion syntax.
* encoding/binary: add Size, to replace the functionality of the old TotalSize,
	another attempt to describe the type of Read and Write's data,
	slices are allowed; say so.
* encoding/json: document buffering.
* encoding/xml: add support for the omitempty flag (thanks Gustavo Niemeyer).
* exp/norm: merged charinfo and decomposition tables.
* exp/types: use build.FindTree in GcImporter (thanks James Whitehead).
* flate: delete WrongValueError type.
* fmt: diagnose invalid verb applied to pointer,
	scan FALSE correctly.
* gc: bug fixes, better error messages.
* go/doc: handle recursive embedded types (thanks Gary Burd),
	don't lose exported consts/vars with unexported type,
	treat predeclared error interface like an exported type.
* go/printer: implement SourcePos mode.
* godoc: list examples in index,
	new design,
	regard lone examples as "whole file" examples.
* html/template: added more words about examples and doc (thanks Bjorn Tipling).
* log/syslog: return length of data provided by the user, not length of header.
* make.bat: remove double quotes (thanks Alex Brainman).
* math: fix gamma doc, link to OEIS.
* mime: unexport some internal details.
* misc/dist: add binary distribution packaging script for linux,
	new hierarchy for binary distribution packaging scripts.
* net/http: add ServeContent,
	don't spin on temporary accept failure,
	fix client goroutine leak with persistent connections,
	fix reference to URL.RawPath in docs (thanks Bjorn Tipling),
	panic on duplicate registrations,
	use mtime < t+1s to check for unmodified (thanks Hong Ruiqi).
* net: avoid Shutdown during Close,
	avoid TCP self-connect,
	disable TestDialTimeout on Windows,
	disable multicast test on Alpha GNU/Linux,
	disable wild use of SO_REUSEPORT on BSD variants (thanks Mikio Hara),
	enable flags on stream for multicast listeners (thanks Mikio Hara),
	make use of listenerBacklog (thanks Mikio Hara),
	prefer an IPv4 listen if no address given (thanks Mikio Hara).
* os/exec: add Cmd.Waitmsg.
* os/signal: revive this package.
* regexp/syntax: add package and Parse commentary.
* regexp: allow substitutions in Replace, ReplaceString.
* runtime, pprof: add profiling of thread creation.
* runtime, time: accelerate tests in short mode (thanks Rémy Oudompheng).
* runtime: exit early on OABI systems (thanks Shenghou Ma),
	drop to 32 bit malloc if 64 bit will not work,
	fix "SysReserve returned unaligned address" bug on 32-bit systems (thanks Shenghou Ma),
	fix grsec support (thanks Gustavo Niemeyer),
	on 386, fix FP control word on all threads, not just initial thread,
	put lockorder before pollorder in Select memory block,
	use startpanic so that only one thread handles an incoming SIGQUIT.
* spec: add forward links from 'method set' to where it gets used,
	clarify implementation restrictions on untyped floats,
	disallow recursive embedded interfaces,
	method names must be unique,
	send on closed channel counts as "proceeding",
	strings are more slices than arrays.
* strconv: handle very large inputs.
* strings: add Seek and ReadAt methods to Reader.
* sync/atomic: disable hammer pointer tests on wrong size system.
* testing: let runtime catch the panic.
* text/template: refer HTML users to html/template.
* text/template/parse: deep Copy method for nodes.
* time: clean up MarshalJSON, add RFC3339 method,
	use "2006-01-02 15:04:05.999999999 -0700 MST" as String format.

2012-02-07

This weekly snapshot includes a re-organization of the Go tools.

Only the go, godoc, and gofmt tools are installed to $GOROOT/bin (or $GOBIN).
The remainder are installed to $GOROOT/bin/tool.
This puts the lesser-used tools (6g, cgo, govet, etc.) outside the user PATH.
Instead these tools may be called through the go tool with 'go tool command'.
For example, to vet hello.go you would type 'go tool vet hello.go'.
Type 'go tool' see the list of available tools.

With the move, some tools were given simpler names:
	6cov    -> cov
	6nm     -> nm
	goapi   -> api
	gofix   -> fix
	gopack  -> pack
	gopprof -> pprof
	govet   -> vet
	goyacc  -> yacc

The os/signal package has been moved to exp/signal.

A new tool named 'dist' has been introduced to handle building the gc tool
chain and to bootstrap the go tool. The old build scripts and make files
have been removed.

Other changes:
* 5a, 6a, 8a, cc: check in y.tab.[ch].
* 5l, 6l, 8l, ld: remove memory leaks (thanks Shenghou Ma).
* 5l, 6l, 8l: implement -X flag.
* 5l: make -v option output less nonessential clutter (thanks Shenghou Ma),
	optimize the common case in patch() (thanks Shenghou Ma).
* 8a, 8l: implement support for RDTSC instruction (thanks Shenghou Ma).
* 8g: use uintptr for local pc.
* archive/zip: support full range of FileMode flags (thanks Gustavo Niemeyer).
* bufio: remove special error type, update docs.
* build: move the "-c" flag into HOST_CFLAGS (thanks Anthony Martin),
	remove unnecessary pragmas (thanks Anthony Martin).
* builder: drop recover blocks.
* bytes: API tweaks.
* cgo: accept null pointers in gccgo flavour of C.GoString (thanks Rémy Oudompheng),
	print line numbers in fatal errors when relevant (thanks Rémy Oudompheng).
* cmd/dist: add GOBIN to env's output (thanks Gustavo Niemeyer),
	fix bug in bsubst (thanks Alex Brainman),
	fix build on openbsd (thanks Mikio Hara),
	generate files for package runtime,
	ignore file names beginning with . or _,
	prevent race on VERSION creation (thanks Gustavo Niemeyer).
* cmd/gc: another special (%hhS) case for method names,
	describe debugging flags (thanks Anthony Martin),
	diagnose \ in import path,
	disallow switch _ := v.(type),
	don't print implicit type on struct literal in export,
	fix codegen reordering for expressions involving && and ||,
	use octal escapes in mkopnames (thanks Anthony Martin).
	use original constant expression in error messages (thanks Rémy Oudompheng).
* cmd/go: add support for release tags via git branches (thanks Gustavo Niemeyer),
	build: print import errors when invoked on files (thanks Kyle Lemons),
	clean test directories as they complete,
	fix error message on non-existing tools (thanks Rémy Oudompheng),
	fix handling of gccgo standard library (thanks Rémy Oudompheng),
	fixed panic on `go clean -n` and `go clean -x` (thanks Sanjay Menakuru),
	introduce support for "go build" with gccgo (thanks Rémy Oudompheng),
	make vcs command actually gather output (thanks Roger Peppe),
	pass env CGO_CFLAGS to cgo (thanks Jeff Hodges),
	record location of failed imports for error reporting (thanks Rémy Oudompheng).
* cmd/goapi: expand embedded interfaces.
* cmd/goinstall: remove now that 'go get' works (thanks Gustavo Niemeyer).
* cmd/ld: fix gdbscript (thanks Wei Guangjing).
* cmd/pack: change gopack to pack in error messages.
* codereview: miscellaneous fixes and improvements.
* crypto/elliptic: p224Contract could produce a non-minimal representation.
* crypto/tls: better error message when connecting to SSLv3 servers.
* crypto/x509: use case-insensitive hostname matching.
* dashboard: support for sub-repositories, update to go1beta.
* database/sql: permit scanning into interface{}.
* doc: update go1.html for recent changes.
* encoding/base32: add DecodeString and EncodeToString helper methods,
	ignore new line characters during decode.
* encoding/base64: ignore new line characters during decode.
* encoding/gob: document CommonType.
* encoding/hex: canonicalize error type names.
* encoding/json: call (*T).MarshalJSON for addressable T values.
* encoding/xml: fix decoding of xml.Name with sub-elements (thanks Gustavo Niemeyer),
	fix documentation for Decoder.Skip.
* exp/norm: Added some benchmarks for form-specific performance measurements,
	a few minor changes in prepration for a table format change.
* expvar: revise API.
* fix: add image/{bmp,tiff} to go1pkgrename.
* flag: allow a FlagSet to not write to os.Stderr,
	describe valid input for Duration flags.
* fmt: add test of NaN map keys,
	fix caching bug in Scan.
* go/build: put a space between 'generated by make' and package statement,
	update syslist.go package comment.
* go/doc: fix URL linking in ToHTML (thanks Gary Burd),
	added error, rune to list of predeclared types,
	don't lose factory functions of non-exported types,
	don't show methods of exported anonymous fields,
	enable AllMethods flag (and fix logic).
* go/printer: don't print incorrect programs.
* go/scanner: idiomatic receiver names.
* go/spec: update language on map types.
* go/token: remove dependency on encoding/gob.
* gob: fuzz testing, plus a fix for very large type names.
* gobuilder: use go tool to build and test sub-repositories.
* godoc: add URL mode m=methods,
	diagnostic for empty FS tree,
	fix identifier search,
	fix redirect loop for URL "/",
	provide link to subdirectories, if any,
	sort list of "other packages",
	update metadata in appinit.go.
* gophertool: fix link to the build status dashboard (thanks Jongmin Kim).
* hgignore: add VERSION.cache (thanks Gustavo Niemeyer),
	delete dregs, ignore tmpltohtml.
* html: add package doc.
* image: add package docs, rename s/UnknownFormatError/ErrFormat/ and,
	delete the image.Repeated type,
	remove image/bmp and image/tiff from std.
* io/ioutil: document EOF behavior in ReadFile and ReadAll.
* io: API tweaks.
* libmach: add stubs for Plan 9 (thanks Anthony Martin).
* make.bash: don't remove hgpatch.
* math/big: add raw access to Int bits,
	API and documentation cleanup.
* misc/goplay: use go tool "run" (thanks Olivier Duperray).
* misc/osx: don't set GOROOT or modify profile files,
	update for dist tool, drop image.bash, update readme.
* net, syscall: add IPv4 multicast helpers for windows (thanks Mikio Hara).
* net/http/httputil: fix race in DumpRequestOut,
	preserve query params in reverse proxy.
* net/http: don't set Content-Type header for HEAD requests by default (thanks Patrick Mylund Nielsen),
	fix nil pointer dereference in error case (thanks Volker Dobler),
	close client fd sooner on response read error,
	set cookies in client jar on POST requests (thanks Volker Dobler).
* net/rpc: fix data race on Call.Error.
* net: ListenMulticastUDP to listen concurrently across multiple listeners (thanks Mikio Hara),
	disable normal multicast testing on linux/arm (thanks Mikio Hara),
	fix Plan 9 build (thanks Anthony Martin),
	fix windows build (thanks Alex Brainman),
	move DNSConfigError to a portable file,
	remove types InvalidConnError and UnknownSocketError,
	replace error variable name e, errno with err (thanks Mikio Hara),
	run TestDialTimeout on windows (thanks Alex Brainman),
	update comments to remove redundant "net" prefix (thanks Mikio Hara).
* os/exec: TestExtraFiles - close any leaked file descriptors,
	make sure file is not closed early in leaked fd test.
* os/signal: move to exp/signal.
* os/user: windows implementation (thanks Alex Brainman).
* os: Process.handle use syscall.Handle (thanks Wei Guangjing),
	file windows use syscall.InvalidHandle instead of -1 (thanks Wei Guangjing),
	remove SIGXXX signals variables,
	turn FileStat.Sys into a method on FileInfo (thanks Gustavo Niemeyer).
* path/filepath: repair and simplify the symlink test.
* reflect: add comment about Type.Field allocation,
	test that PtrTo returns types that match program types.
* runtime: add runtime.cputicks() and seed fastrand with it (thanks Damian Gryski),
	delete UpdateMemStats, replace with ReadMemStats(&stats) (thanks Rémy Oudompheng),
	fix float64 hash,
	use GOTRACEBACK to decide whether to show runtime frames,
	use per-map hash seeds (thanks Damian Gryski).
* spec: add number to the fibonacci sequence.
* std: add struct field tags to untagged literals.
* strings: add Fields example.
* syscall: add Timeval.Nano, Timespec.Nano, for conversion to Duration,
	cache environment variables on Plan 9 (thanks Anthony Martin),
	fix // +build comments in types_*.go,
	fix build directive in types_linux.go,
	update bootstrap scripts to sync with new go command (thanks Mikio Hara).
* test: add import test that caused an incorrect gccgo error,
	add test for receiver named _,
	add test of NaN in map,
	add test which crashed gccgo compiler,
	don't use package main for files without a main function,
	fix bug headers,
	float to integer test case,
	make map nan timing test more robust,
	match gccgo error messages,
	test append with two different named types with same element type,
	test method expressions with parameters, and with import,
	test slice beyond len,
	test that x := <-c accepts a general expression.
* testing: capture panics, present them, and mark the test as a failure.
* unicode: document large var blocks and the SpecialCase vars.
* vet: add a check for untagged struct literals.

2012-01-27

This weekly snapshot renamed the html package to exp/html. The package will not
be present in the Go 1 distribution, but will be installable from source.

Error variables in the archive/tar, archive/zip, compress/gzip, compress/zlib,
and crypto/bcrypt packages have been renamed from FooError to ErrFoo. 
There is no gofix, but the compiler will flag code that needs updating.

This weekly snapshot relocates many packages to sub-repositories of the main 
Go repository. These are the old and new import paths:

	crypto/bcrypt          code.google.com/p/go.crypto/bcrypt
	crypto/blowfish        code.google.com/p/go.crypto/blowfish
	crypto/cast5           code.google.com/p/go.crypto/cast5
	crypto/md4             code.google.com/p/go.crypto/md4
	crypto/ocsp            code.google.com/p/go.crypto/ocsp
	crypto/openpgp         code.google.com/p/go.crypto/openpgp
	crypto/openpgp/armor   code.google.com/p/go.crypto/openpgp/armor
	crypto/openpgp/elgamal code.google.com/p/go.crypto/openpgp/elgamal
	crypto/openpgp/errors  code.google.com/p/go.crypto/openpgp/errors
	crypto/openpgp/packet  code.google.com/p/go.crypto/openpgp/packet
	crypto/openpgp/s2k     code.google.com/p/go.crypto/openpgp/s2k
	crypto/ripemd160       code.google.com/p/go.crypto/ripemd160
	crypto/twofish         code.google.com/p/go.crypto/twofish
	crypto/xtea            code.google.com/p/go.crypto/xtea
	exp/ssh                code.google.com/p/go.crypto/ssh
	net/dict               code.google.com/p/go.net/dict
	net/websocket          code.google.com/p/go.net/websocket
	exp/spdy               code.google.com/p/go.net/spdy
	encoding/git85         code.google.com/p/go.codereview/git85
	patch                  code.google.com/p/go.codereview/patch

Gofix will update imports of these packages to use the new import paths.
Installations that depend on these packages will need to install them using a
'go get' command.

Other changes:
* 6c, 8c: make floating point code NaN-safe.
* 6l, 8l: remove unused macro definition (thanks Shenghou Ma).
* archive/tar: fix race in TestNonSeekable.
* archive/zip: add functions to convert between os.FileInfo & FileHeader.
* build: do not build all C compilers (thanks Shenghou Ma),
	remove code now in subrepositories.
* bytes: remove dead code, complete documentation,
	restore panic on out-of-memory,
	turn buffer size overflows into errors.
* cgo: -cdefs should translate unsafe.Pointer to void * (thanks Shenghou Ma).
* cmd/gc: forgotten recursion on ninit itself in order.c.
* cmd/go: bug fixes, implement go get,
	correctly handle -n and -x flags for 'go run' (thanks Shenghou Ma),
	solve ambiguity of get lp.net/project/foo (thanks Gustavo Niemeyer),
	update doc.go with text generated from the usage strings.
* cmd/goapi: new tool for tracking exported API over time.
* codereview: support for subrepositories.
* compress/flate: fix a typo, improve compression rate by 3-4%,
	increase the length of hash table from 1<<15 to 1<<17. 0%-16% speedup,
	make lazy matching work,
	reduce memory pressure at cost of additional arithmetic operation,
	use append instead of slice+counter.
* crypto: rename some FooError to ErrFoo.
* dashboard: fix -commit for new xml package.
* database/sql: add NullInt64, NullFloat64, NullBool (thanks James P. Cooper),
	convert SQL null values to []byte as nil (thanks James P. Cooper),
	fix Tx.Query (thanks Blake Mizerany).
* doc: expand FAQ on GOMAXPROCS, update to Go 1.
* doc/go1: add encoding/xml and net/url changes (thanks Gustavo Niemeyer),
	add more info about hash and net changes, delete reference to html,
	add flag, runtime, testing, image , mime, filepath.Walk,
	document sub-repositories.
* encoding/binary: document that PutVarint, PutUvarint may panic.
* encoding/varint: deleted WriteXvarint.
* encoding/xml: add docs for ignoring tag (thanks Gustavo Niemeyer),
	bring API closer to other packages (thanks Gustavo Niemeyer),
	improve []byte handling (thanks Gustavo Niemeyer),
	remove Marshaler support (thanks Gustavo Niemeyer),
	support ignoring fields with "-" (thanks Gustavo Niemeyer).
* exp/ebnflint: test spec during 'go test'.
* exp/norm: fixes a subtle bug introduced by change 10087: random offset.
* gc, runtime: handle floating point map keys.
* gc: avoid DOT in error messages,
	do not try to add a key with incorrect type to a hash (thanks Jeff R. Allen),
	fix order of evaluation,
	fix recursion loop in interface comparison,
	handle function calls in arguments to builtin complex operations,
	missed typecheck in subscripting a const string,
	permit unsafe.Pointer for inlined functions,
	softer criteria for inlinability,
	static implements check on typeswitches only applies to concrete case types,
	test case for recursive interface bug.
* go/ast: respect ImportSpec.EndPos (thanks Scott Lawrence).
* go/build: add BuildTags to Context, allow !tag.
* go/doc: rewrite and add lots of tests.
* go/parser: use explicit parser.Mode type.
* go/printer, gofmt: respect line breaks in signatures.
* go/scanner: use explicit scanner.Mode type.
* gob: annotate debug.go so it's not normally built,
	reduce the maximum message size.
* godoc: log node printing error,
	move overview before API TOC,
	update metadata upon launch.
* gofix: add -debug flag for quicker diagnosis of internal errors,
	handle xml.Unmarshal in xmlapi fix (thanks Gustavo Niemeyer),
	update go1pkgrename for subrepositories.
* goyacc: fix indexing bug when yydebug >= 2.
* ld: fix Mach-O code signing for non-cgo binaries (thanks Mikkel Krautz).
* libmach: cross compiling support (thanks Shenghou Ma).
* math/big: assembly versions of bitLen for x86-64, 386, and ARM (thanks David G. Andersen),
	return type of bitLen is an int; use MOVL on amd64 (thanks David G. Andersen),
	add examples for Rat and Int's SetString and Scan methods,
	slight improvement to algorithm used for internal bitLen function (thanks David G. Andersen),
	test both bitLen and bitLen_g.
* net/http: add Request.RequestURI field,
	disabled test for Transport race / deadlock bug,
	fix Transport deadlock (thanks Yoshiyuki Kanno),
	make ParseForm ignore unknown content types (thanks Roger Peppe),
	parse CONNECT requests (thanks Andrew Balholm).
* net/rpc: fix data race in benchmark,
	fix race in TestClientWriteError test,
	log Call reply discard.
* net: Dial, ListenPacket with "ip:protocol" network for raw IP sockets (thanks Mikio Hara),
	actually reset deadline when time is zero,
	consistent OpError message (thanks Mikio Hara),
	fix dialing google test (thanks Mikio Hara),
	make WriteTo fail when UDPConn is already connected (thanks Mikio Hara).
* regexp: remove vestigial Error type.
* runtime: add type algorithms for zero-sized types,
	move NumCPU declaration into debug.go.
* spec: function invocation, panic on *nil.
* syscall: add NOTE_* constants on OS X (thanks Robert Figueiredo).
* test: explicitly use variables to avoid gccgo "not used" error.
* text/template: add example for Template.

2012-01-20

This weekly snapshot renamed the exp/sql package to database/sql, and moved
utf8.String from unicode/utf8 to exp/utf8string.

Package net's SetTimeout methods were changed to SetDeadline.

Many functions in package os now take a os.FileMode argument instead of a
plain uint32. An os.ModeSticky constant is also now defined.

The meaning of the first buffer element for image.YCbCr has changed to match
the semantics of the other image types like image.RGBA.

The NewMD5, NewSHA1 and NewSHA256 functions in crypto/hmac have been
deprecated. Use New instead, explicitly passing the hash function.

Other changes:
* buildscripts: move to buildscript directory (thanks Shenghou Ma).
* bytes: add the usual copyright notice to example_test.go (thanks Olivier Duperray).
* cmd/go: remove mentions of 'gotest' from the documentation,
	skip _obj directories in package scans.
* container/heap: better package documentation.
* crypto/elliptic: add constant-time P224.
* crypto/hmac: Add HMAC-SHA224 and HMAC-SHA384/512 (thanks Luit van Drongelen),
* crypto/tls: add FreeBSD root certificate location (thanks Shenghou Ma).
* crypto/x509: remove explicit uses of rsa.
* doc: various updates (thanks Jongmin Kim, Scott Lawrence, Shenghou Ma, Stefan Nilsson).
* encoding/json: allow / and % in tag names,
	document angle bracket escaping,
	fix comments, tweak tests for tag names (thanks Mikio Hara).
* encoding/xml: marshal/unmarshal xml.Name in field (thanks Gustavo Niemeyer).
* exp/inotify: fix data race in linux tests.
* exp/proxy: fix build after URL changes (thanks Gustavo Niemeyer).
* exp/sql: copy when scanning into []byte by default,
	rename NullableString to NullString and allow its use as a parameter.
* exp/ssh: add marshal functions for uint32 and uint64 types,
	handle versions with just '\n',
	rename (some) fields (thanks Christopher Wedgwood).
* exp/terminal: fix build on non-Linux using Makefiles.
* fmt: enable and fix malloc test,
* gc: don't emit pkgpath for error type,
	don't fault on return outside function (thanks Scott Lawrence),
	fieldnames in structliterals in exported inlines should not be qualified if they're embedded builtin types,
	fix infinite recursion for embedded interfaces,
	give esc.c's sink an orig so -mm diagnostics work again,
	handle printing of string/arrayrune conversions.
	remove redundant code (thanks Shenghou Ma).
* go/build: no back slash in FindTree returned pkg name (thanks Alex Brainman).
* go/doc: collect imports,
	don't shadow receiver.
	rewrote and completed test framework.
	print only one newline between paragraphs
* go/parser: expressions may have comments.
* go/scanner: fix example (thanks Olivier Duperray).
* go/token: replaced Files() with Iterate().
* godoc: add anchors to cmd documentation headings,
	remove "need more packages?" link,
	specify HTML page metadata with a JSON blob,
	support canonical Paths in HTML metadata.
* html/template: fix docs after API changes (thanks Gustavo Niemeyer).
* html: in foreign content, check for HTML integration points in breakout.
* image/color: rename modelYCbCr to yCbCrModel (thanks Benny Siegert),
	simplify documentation (thanks David Crawshaw).
* image: add PixOffset methods.
* math/rand: decrease test duration in short mode,
	document default initial seed for global generator (thanks Scott Lawrence).
* mime: make FormatMediaType take full type for consistency.
* misc/cgo/test: make tests run on windows (thanks Alex Brainman).
* net/http/cgi: increase a flaky test timeout.
* net/http: change test to use override param instead of chan,
	log handler panic before closing HTTP connection,
	send cookies in jar on redirect (thanks Jeff Hodges),
	the documentation should call NewRequest with the right signature (thanks Christoph Hack),
	update the Client docs a bit.
* net/url: cleaned up URL interface (v2) (thanks Gustavo Niemeyer).
* net: consistent log format in test (thanks Mikio Hara),
	various build fixes (thanks Mikio Hara),
	use NewTimer, not NewTicker, in fd_windows.go.
* old/netchan: fix data race on client hashmap.
* os/exec: trivial allocation removal in LookPath (thanks Gustavo Niemeyer).
* os: remove old note about NewSyscallError being special (thanks Alex Brainman),
* path: added examples (thanks Sanjay Menakuru).
* pkg: Add and fix Copyright of "hand generated" files (thanks Olivier Duperray),
	add missing godoc comments to windows versions (thanks Alex Brainman).
* regexp: add SubexpNames.
* runtime: implement runtime.usleep for FreeBSD/386 and amd64 (thanks Shenghou Ma),
	madvise and SysUnused for Darwin (thanks Dave Cheney).
* sync/atomic: fix data race in tests.
* syscall: add Unix method to TimeSpec, TimeVal,
	fix plan9 build (thanks Mikio Hara).
* test: change several tests to not print,
	fix bug364 to actually run,
	match gccgo error messages for bug345,
	split golden.out into expected output per test.
* testing: do not recover example's panic (thanks Shenghou Ma),
	document examples.
* text/template/parse: use human error prints.
* text/template: fix nil error on redefinition.
* time: add Since, which returns the time elapsed since some past time t.

2012-01-15

This weekly snapshot includes two package changes that may require changes to
client code.

The image package's Tiled type has been renamed to Repeated.

The encoding/xml package has been changed to make more idiomatic use of struct
tags, among other things. If you use the xml package please read the change
description to see if your code is affected:
	http://code.google.com/p/go/source/detail?r=70e914beb409

Function inlining is now enabled by default in the gc compiler.

Other changes:
* bytes: Buffer read of 0 bytes at EOF shouldn't be an EOF.
* cgo: if value for constant did not parse, get it from DWARF info,
	write _cgo_export.h to object directory, not source dir.
* cmd/go: add -p flag for parallelism (like make -j),
	add -v flag to build and install,
	add ... patterns in import path arguments,
	fix data race during build,
	fix import directory list for compilation,
	fix linker arguments,
	handle cgo pkg-config pragmas,
	handle path to cmd directory,
	include test files in fmt, vet, and fix (thanks Sanjay Menakuru),
	kill test processes after 10 minutes,
	pass arguments to command for run (thanks Eric Eisner),
	rely on exit code to tell if test passed,
	use relative paths in go fix, go fmt, go vet output.
* cmd/gofmt: fix simplify.go by running gofmt on cmd/gofmt (thanks Olivier Duperray).
* crypto/openpgp: assorted cleanups,
	truncate hashes before checking DSA signatures.
* crypto/tls: improve TLS Client Authentication (thanks Jeff R. Allen),
	update generate_cert.go for new time package.
* dashboard: better caching, bug fixes.
* doc: update "How to Write Go Code" to use the go tool.
	fix broken function codewalk examples.
* encoding/asn1: document support for *big.Int (thanks Florian Weimer).
* encoding/gob: fix panic when decoding []byte to incompatible slice types (thanks Alexey Borzenkov).
* encoding/json: don't marshal special float values (thanks Evan Shaw).
* encoding/xml: major Go 1 fixup (thanks Gustavo Niemeyer).
* exp/proxy: new package.
* exp/sql:  add time.Time support,
	close Rows on EOF,
	fix potential corruption in QueryRow.Scan into a *[]byte.
* exp/ssh: various small fixes (thanks Dave Cheney).
* exp/terminal: add SetPrompt and handle large pastes,
	add to level Makefile for the (non-Linux?) systems that need it.
* flag: add Duration flag type,
	change Set method Value interface to return error instead of bool.
* gc: better errors messages,
	avoid false positives when using scalar struct fields (thanks Rémy Oudompheng),
	closure code gen improvements,
	disallow declaration of variables outside package,
	fix switch on interface values (thanks Rémy Oudompheng),
	inlining bug fixes,
	improve unsafe.Pointer type-check error messages (thanks Ryan Hitchman),
	put limit on size of exported recursive interface (thanks Lorenzo Stoakes),
* go-mode.el: fix syntax highlighting of backticks (thanks Florian Weimer).
* go/ast: remove unnecessary result value from ast.Fprint/Print.
* go/build: allow colon in #cgo flags,
	pass CgoLDFLAGS at end of link command.
* go/doc: new API, don't ignore anonymous non-exported fields, initial testing support.
* go/parser: remove unused Parse* functions. Simplified ParseExpr signature.
* go/printer: don't crash if AST contains BadXXX nodes.
* go/scanner: 17% faster scanning, remove InsertSemis mode.
* goinstall: use correct checkout URL for Google Code svn repos.
* gotest: make _testmain.go conform to gofmt rules (thanks Benny Siegert).
* goyacc: fix units.y build breakage (thanks Shenghou Ma).
* html/template: reenable testcases and fix mis-escaped sequences (thanks Mike Samuel).
* html: "in select in table" insertion mode (thanks Andrew Balholm),
	adjust foreign attributes,
	foreign element HTML integration points, tag name adjustment,
	parse  inside body (thanks Andrew Balholm),
	propagate foreign namespaces only when adding foreign content.
* json: better error messages when the ,string option is misused.
* ld: parse but do not implement -X flag.
* log/syslog: add Alert method (thanks Vadim Vygonets).
* make.bash: remove old dregs (thanks Alex Brainman).
* math/big: simplify fast string conversion.
* math: fix typo in all_test.go (thanks Charles L. Dorian).
* misc/windows: add src/pkg/runtime/z* files to installation script (thanks Alex Brainman).
* net/http: don't ignore Request.Write's Flush error,
	allow cookies with negative Max-Age attribute as these are (thanks Volker Dobler).
* net/textproto: avoid corruption when reading a single header.
* net: add IP-level socket option helpers for Unix variants (thanks Mikio Hara),
	fix incorrect mode on ListenIP, ListenUDP (thanks Mikio Hara),
	make use of the kernel state to listen on TCP, Unix (thanks Mikio Hara),
	platform-dependent default socket options (thanks Mikio Hara).
* os: add ModeCharDevice.
* runtime: add NumCPU,
	delete duplicate implementation of pcln walker,
	distinct panic message for call of nil func value,
	enable runtime.ncpu on FreeBSD (thanks Devon H. O'Dell),
	make garbage collector faster by deleting code,
	regenerate defs_darwin_{386,amd64}.h (thanks Dave Cheney),
	runtime.usleep() bugfix on darwin/amd64 and linux/arm (thanks Shenghou Ma).
* spec: pointer comparison for pointers to 0-sized variables,
	change the wording regarding select statement choice.
* strconv: fix round up corner case,
	faster FormatFloat(x, *, -1, 64) using Grisu3 algorithm (thanks Rémy Oudompheng),
	implement fast path for rounding already short numbers (thanks Rémy Oudompheng),
	return ErrSyntax when unquoting illegal octal sequences.
* syscall: linux-only support for parent death signal (thanks Albert Strasheim),
	make Environ return original order.
* testing: fix defer race,
	use flag.Duration for -timeout flag.
* text/template: handle panic values that are not errors (thanks Rémy Oudompheng),
	for range on a map, sort the keys if feasible.
* time: add ParseDuration,
	fix docs for After and NewTicker.
* windows: use ArbitraryUserPointer as TLS slot (thanks Wei Guangjing).

2011-12-22

This snapshot includes changes to the images/ycbcr and testing packages, and
changes to the build system.

The types for managing Y'CbCr images in the image/ycbcr have been moved to the
image and image/color packages. A gofix module will rewrite affected code.

The testing package's B type (used when running benchmarks) now has the same
methods as T (used in tests), such as Print, Error, and Fatal.

This weekly adds a new command named 'go' for building and testing go programs.
For Go 1, the go command will replace the makefile-based approach that we have
been using. It is not yet ready for general use, but all.bash does use it to
build the tree. If you have problems building the weekly, you can 'export
USE_GO_TOOL=false' before running all.bash to fall back to the makefiles.

Other changes:
* archive/zip: add SetModTime method to FileHeader.
* build: make use of env (thanks Mikio Hara),
	fixes to make "go install" work on windows (thanks Alex Brainman).
* bytes: add two Buffer examples.
* cgo: support export for built-in types (thanks Maxim Pimenov).
* cmd/go: avoid infinite loop with package specific flags (thanks Mikio Hara),
	fixes to build standard library,
	implement test command,
	make sure use of pthread for gcc-4.5 and beyond (thanks Mikio Hara),
	respect $GCFLAGS,
	use spaces consistently in help message (thanks Roger Peppe),
	many other improvements.
* codereview: initialize "found" in codereview.py (thanks Miki Tebeka).
* crypto/mime/net/time: add netbsd to +build tags (thanks Joel Sing).
* crypto/tls: don't assume an RSA private key in the API.
* crypto/x509: don't crash with nil receiver in accessor method.
* doc/effective_go: discuss redeclaration.
* doc: delete go course notes,
	refer to http://build.golang.org/ where applicable (thanks Robert Hencke),
	suggest code.google.com/p/go instead of go.googlecode.com/hg.
* encoding/binary: add Write and Read examples,
	add more benchmarks (thanks Roger Peppe).
* encoding/gob: arrays are zero only if their elements are zero.
* encoding/json: cleanup leftover variables in array decoding (thanks Rémy Oudompheng),
	examples for Marshal and Unmarshal.
* exp/ssh: rename ClientAuthPublicKey helper ClientAuthKeyring (thanks Dave Cheney),
	simplify Stdin/out/errPipe methods (thanks Dave Cheney).
* fmt: speed up floating point print, clean up some code,
	make the malloc test check its counts.
* gc: allow use of unsafe.Pointer in generated code,
	avoid unsafe in defn of package runtime,
	better linenumbers for inlined functions,
	better loopdepth analysis for labels,
	implement and test \r in raw strings,
	inlining, allow empty bodies, fix _ arguments,
	omit argument names from function types in error messages.
* go/ast, parser: remember short variable decls. w/ correspoding ident objects.
* go/build: add new +build tags 'cgo' and 'nocgo'.
* go/doc, godoc: move export filtering into go/doc
* go/printer, gofmt: fine tuning of line spacing.
* go/scanner: strip CRs from raw literals.
* gob: isZero for struct values.
* godoc: allow examples for methods (thanks Volker Dobler),
	show methods of anonymous fields.
* goinstall: only suggest -fix for bad imports when appropriate.
* govet: add checking for printf verbs,
	divide the program into one file per vetting suite.
* html: more parser improvements (thanks Andrew Balholm).
* json: some tests to demonstrate bad error messages,
	use strconv.Append variants to avoid allocations in encoding.
* ld: add support for netbsd signature note section (thanks Joel Sing),
	allow for IMAGE_REL_AMD64_ADDR32NB relocation type (thanks Alex Brainman).
* math/big: Rand shouldn't hang if argument is also receiver.
* misc/builder: set default builder host to build.golang.org.
* misc/dashboard: delete old build dashboard code ,
	improvements and fixes for the go implementation.
* misc/vim: fix go filetype detection (thanks Paul Sbarra).
* net, syscall, os: set CLOEXEC flag on epoll/kqueue descriptor.
* net, syscall: interface address and mask (thanks Mikio Hara).
* net/http: added interface for a cookie jar (thanks Volker Dobler),
	test fixes (thanks Alex Brainman).
* net: add DialTimeout,
	sort Makefile entries (thanks Mikio Hara).
* os, syscall: beginnings of NetBSD support (thanks Christopher Nielsen).
* os/exec: add test to verify net package's epoll fd doesn't go to child,
	disable the ExtraFiles test on darwin.
* os: don't trust O_CLOEXEC on OS X,
	make sure Remove returns correct error on windows (thanks Alex Brainman).
* path, path/filepath: add Dir to complement Base.
* path/filepath.Rel: document that the returned path is always relative.
* runtime: don't panic on SIGILL, just crash.
* spec: be precise about newlines.
* sql: add Rows.Columns.
* strconv: fix bug in extended-float based conversion,
	implement faster parsing of decimal numbers, and
	reduce buffer size for multi-precision decimals (thanks Rémy Oudompheng).
* syscall: regenerate z-files for linux/arm (thanks Mikio Hara),
	sort Makefile, mkall.sh and mkerrors.sh entries (thanks Mikio Hara).
* test/bench/go1: first draft of Go 1 benchmark suite.
* testing: compare Log to Println (thanks Robert Hencke),
	make signalling safer for parallel tests.
* text/template: better error message for empty templates,
	fix handing of nil arguments to functions (thanks Gustavo Niemeyer).
* time: add JSON marshaler for Time (thanks Robert Hencke),
	new AddDate method (thanks Roger Peppe).
* various: use $GCFLAGS and $GCIMPORTS like Make does (thanks Maxim Pimenov).

2011-12-14

This snapshot includes language changes and changes to goinstall and gofmt.

Equality and inequality (== and !=) are now defined for struct and array
values, respectively, provided the elements of the data structures can
themselves be compared. See the Go 1 release notes for the details:
	http://weekly.golang.org/doc/go1.html#equality

The rune type is now an alias for int32 and character literals have the default
type of rune. Code that uses int where it should use rune will break. 
See the Go 1 release notes for the details:
	http://weekly.golang.org/doc/go1.html#rune

Goinstall now expects Google Code import paths to be of the form:
	"code.google.com/p/go-tour/tree"
It will reject imports in the old style "go-tour.googlecode.com/hg/tree".
There is a gofix module to rename such imports.
Use goinstall -fix to update broken packages.

Gofmt's flags have been modified slightly.
The -tabintent flag has been renamed -tabs.
The -spaces flag has been removed.

Other changes:
* 5c, 6c, 8c: support 64-bit switch value (thanks Anthony Martin).
* 8c: handle 64-bit switch value.
* archive/tar: use struct comparison not DeepEqual (thanks Christopher Wedgwood).
* archive/zip: make zip understand os.FileMode (thanks Roger Peppe).
* bufio: make the minimum read buffer size 16 bytes.
* build: disable cgo on Windows/amd64,
	regularize packages so they may be built without Makefiles.
* bytes: faster Count, Index, Equal.
* cgo: add basic gccgo support (thanks Rémy Oudompheng).
* codereview: fix path slash issue (thanks Yasuhiro Matsumoto).
* compress/flate: fix out of bounds error.
* contribute.html: do not fill in the reviewer field (thanks Florian Weimer).
* crypto/aes: made faster by eliminating some indirection (thanks Taru Karttunen).
* crypto/dsa: don't truncate input hashes.
* doc/go_tutorial: make clear the file example is Unix-specific.
* doc: add Defer, Panic, and Recover article,
	add Error Handling article,
	add Go 1 release notes document.
* encoding/gob: better error messages when types mismatch.
* env.bash: export CGO_ENABLED so cgo tests run (thanks Alex Brainman).
* exp/sql: simplify some string conversions.
* exp/ssh: Wait returns an *ExitError (thanks Gustav Paul).
* exp/ssh: improve client channel close behavior (thanks Dave Cheney).
* fmt: don't recur if String method (etc.) misbehaves.
* gc: better error messages,
	inlining (disabled without -l),
	many bug fixes (thanks Lucio De Re and Rémy Oudompheng).
* go/printer, godoc: print comments in example code.
* go: implement doc, fmt, fix, list, vet, build, and install.
* gobuilder: goinstall packages after building go tree.
* godoc: <pre> must not occur inside <p> (thanks Olivier Duperray),
	added an opensearch description document (thanks Christoph Hack),
	text wrapping.
* gofix: add httputil fix (thanks Yasuhiro Matsumoto).
* gotest: use go/build more (thanks Robert Hencke).
* gzip: convert between Latin-1 and Unicode (thanks Vadim Vygonets).
* html/template: define the FuncMap type locally.
* html: a first step at parsing foreign content (MathML, SVG),
	more parser improvements (thanks Andrew Balholm).
* http: close connection after printing panic stack trace (thanks Roger Peppe),
	fix failing Transport HEAD request with gzip-looking response.
* json: treat renamed byte slices the same as []byte.
* ld: first pass at linker support for NetBSD binaries (thanks Christopher Nielsen),
	fix memory leaks (thanks Scott Lawrence),
	increase default stack size on Windows for cgo.
* math: delete non-Sqrt-based Hypot,
	implement, document, and fix special cases (thanks Charles L. Dorian),
* misc/benchcmp: don't require "Benchmark" at beginning of line.
* misc/osx: rename profile.go to profile_go (thanks Scott Lawrence).
* net/http: fix trivial example server (thanks Olivier Duperray),
	net/http: make test remove temporary file and directory.
* net/smtp: add CRAM-MD5 authentication (thanks Vadim Vygonets).
* reflect: fix Slice cap (thanks Gustavo Niemeyer).
* regexp: performance improvements; avoid allocation of input interface.
* runtime: bump gc 'extra bytes' check (thanks Christopher Wedgwood),
	madvise and SysUnused for Linux (thanks Sébastien Paolacci),
	make gc_test test extra allocated space, not total space,
	support for NetBSD (thanks Christopher Nielsen).
* spec: adjust complex constant example (thanks Robert Hencke),
	values of underlying type uintptr can be converted to unsafe.Pointer,
	var x = 'a' defaults to type rune.
* strconv: include package and function name in error strings,
	make QuoteRune etc. take a rune argument,
	some performance improvements.
* syscall: add constants for flock() system call under Linux,
	regenerate z-files for darwin, freebsd (thanks Mikio Hara),
	regenerate z-files for openbsd,
	return error, not uintptr, when function returns error (thanks Alex Brainman).
* test/bench: move to test/bench/shootout.
* test/garbage: move to test/bench/garbage.
* test: make array smaller in nilptr test.
* time: allow sleep tests to run for 200% too long,
	fix Time.Add (thanks Hector Chu),
	fix daysIn for December (thanks Peter Mundy),
	gob marshaler for Time (thanks Robert Hencke),
	use Duration for AfterFunc.
* various: a grab-bag of time.Duration cleanups.

2011-12-06

This snapshot includes a language change and changes to the strconv and go/doc
packages. The package changes require changes to client code.
The language change is backwards-compatible.

Type elision in arrays, slices, or maps of composite literals has been
extended to include pointers to composite literals. Code like this
	var t = []*T{&T{}, &T{}}
may now be written as
	var t = []*T{{}, {}}
You can use gofmt -s to simplify such code.

The strconv package has been given a more idiomatic and efficient interface.
Client code can be updated with gofix. See the docs for the details:
	http://weekly.golang.org/pkg/strconv/

The go/doc package's ToHTML function now takes a []byte argument instead of a
string.

Other changes:
* crypto/aes: eliminate some bounds checking and truncation (thanks Rémy Oudompheng).
* crypto/x509: if a parent cert has a raw subject, use it.
* encoding/gob: don't send type info for unexported fields.
* exp/ssh: allow for msgUserAuthBanner during authentication (thanks Gustav Paul).
* fmt: benchmark floating point,
	only use Stringer or Error for strings.
* gc: changes in export format in preparation of inlining,
	disallow map/func equality via interface comparison,
	use gofmt spacing when printing map type.
* go/doc: exclude lines ending in ':' from possible headings.
* gobuilder: -commit mode for packages,
	cripple -package mode temporarily,
	use new dashboard protocol.
* godoc: improved output of examples in html (thanks Volker Dobler).
* gofmt: handle &T in composite literal simplify.
* goinstall: honour -install=false flag when -make=true.
* hash: rewrite comment on Hash.Sum method.
* html: more parser improvements (thanks Andrew Balholm).
* image: avoid func comparison during ColorModel comparison.
* math: add special-cases comments to Sinh and Tanh (thanks Charles L. Dorian).
* misc/dashboard: further implementation work.
* net, syscall: remove BindToDevice from UDPConn, IPConn (thanks Mikio Hara).
* net/mail: correctly compare parsed times in the test.
* os/exec: make LookPath always search CWD under Windows (thanks Benny Siegert).
* runtime: prep for type-specific algorithms.
* strconv: 34% to 63% faster conversions.

2011-12-02

This weekly snapshot includes changes to the hash package and a gofix for the
time and os.FileInfo changes in the last snapshot.

The hash.Hash's Sum method has been given a []byte argument,
permitting the user to append the hash to an existing byte slice.
Existing code that uses Sum can pass nil as the argument.
Gofix will make this change automatically.

Other changes:
* crypto/tls: cleanup certificate load on windows (thanks Alex Brainman).
* exp/ssh: add Std{in,out,err}Pipe methods to Session (thanks Dave Cheney).
* dashboard: don't choke on weird builder names.
* exp/ssh: export type signal, now Signal (thanks Gustav Paul).
* os: add ModeType constant to mask file type bits (thanks Gustavo Niemeyer).
* text/template: replace Add with AddParseTree.
* go/doc: detect headings and format them in html (thanks Volker Dobler).

2011-12-01

This weekly snapshot includes changes to the time, os, and text/template
packages. The changes to the time and os packages are significant and related.
Code that uses package time, package text/template, or package os's FileInfo
type will require changes.

In package time, there is now one type - time.Time - to represent times.
Note that time.Time should be used as a value, in contrast to old code
which typically used a *time.Time, a pointer to a large struct.  (Drop the *.)
Any function that previously accepted a *time.Time, an int64
number of seconds since 1970, or an int64 number of nanoseconds
since 1970 should now accept a time.Time.  Especially as a replacement
for the int64s, the type is good documentation about the meaning of
its value.

Whether you were previously calling time.Seconds, time.Nanoseconds,
time.LocalTime, or time.UTC, the replacement is the new function
time.Now.

If you previously wrote code like:

       t0 := time.Nanoseconds()
       myFunction()
       t1 := time.Nanoseconds()
       delta := t1 - t0
       fmt.Printf("That took %.2f seconds\n", float64(t1-t0)/1e9)

you can now write:

       t0 := time.Now()
       myFunction()
       t1 := time.Now()
       delta := t1.Sub(t0)
       fmt.Printf("That took %s\n", delta)

In this snippet, the variable delta is of the new type time.Duration, the
replacement for the many int64 parameters that were nanosecond
counts (but not since 1970).

Gofix can do the above conversions and some others, but it does not
rewrite explicit int64 types as time.Time. It is very likely that you will
need to edit your program to change these types after running gofix.
As always, be sure to read the changes that gofix makes using your
version control system's diff feature.

See http://weekly.golang.org/pkg/time/ for details.

In package os, the FileInfo struct is replaced by a FileInfo interface,
admitting implementations by code beyond the operating system.
Code that refers to *os.FileInfo (a pointer to the old struct) should
instead refer to os.FileInfo (the new interface).
The interface has just a few methods:

       type FileInfo interface {
               Name() string       // base name of the file
               Size() int64        // length in bytes
               Mode() FileMode     // file mode bits
               ModTime() time.Time // modification time
               IsDir() bool        // abbreviation for Mode().IsDir()
       }

If you need access to the underlying stat_t provided by the operating
system kernel, you can access it by assuming that the FileInfo you are
holding is actually an *os.FileStat, and that it's Sys field is actually a
*syscall.Stat_t, as in:

       dev := fi.(*os.FileStat).Sys.(*syscall.Stat_t).Dev

Of course, this is not necessarily portable across different operating
systems.

Gofix will take care of rewriting *os.FileInfo to os.FileInfo for you,
and it will also rewrite expressions like fi.Name into calls like fi.Name().

See http://weekly.golang.org/pkg/os/#FileInfo for details.

The template package has been changed to export a new, simpler API.
The Set type is gone. Instead, templates are automatically associated by
being parsed together; nested definitions implicitly create associations.
Only associated templates can invoke one another.
This approach dramatically reduces the breadth of the construction API.
The html/template package has been updated also.
There's a gofix for the simplest and most common uses of the old API.
Code that doesn't mention the Set type is likely to work after running gofix;
code that uses Set will need to be updated by hand.
The template definition language itself is unchanged.

See http://weekly.golang.org/pkg/text/template/ for details.


Other changes:
* cgo: add support for callbacks from dynamic libraries.
* codereview: gofmt check for non-src/ files (thanks David Crawshaw).
* crypto/openpgp/packet: fix private key checksum.
* crypto/tls: add openbsd root certificate location,
	don't rely on map iteration order.
* crypto/x509, crypto/tls: support PKCS#8 private keys.
* dashboard: start of reimplementation in Go for App Engine.
* encoding/xml: fix copy bug.
* exp/gui: move exp/gui and exp/gui/x11 to http://code.google.com/p/x-go-binding
* exp/ssh: various improvements (thanks Dave Cheney and Gustav Paul).
* filepath/path: fix Rel buffer sizing (thanks Gustavo Niemeyer).
* gc: fix Nconv bug (thanks Rémy Oudompheng) and other fixes.
* go/printer, gofmt: performance improvements.
* gofix: test and fix missorted renames.
* goinstall: add -fix flag to run gofix on packages on build failure,
	better error reporting,
	don't hit network unless a checkout or update is required,
	support Google Code sub-repositories.
* html: parser improvements (thanks Andrew Balholm).
* http: fix sniffing bug causing short writes.
* json: speed up encoding, caching reflect calls.
* ld: align ELF data sections.
* math/big: fix destination leak into result value (thanks Roger Peppe),
	use recursive subdivision for significant speedup.
* math: faster Cbrt and Sincos (thanks Charles L. Dorian).
* misc/osx: scripts to make OS X package and disk image (thanks Scott Lawrence).
* os: fail if Open("") is called on windows (thanks Alex Brainman).
* runtime: make sure stack is 16-byte aligned on syscall (thanks Alex Brainman).
* spec, gc: allow direct conversion between string and named []byte, []rune.
* sql: add Tx.Stmt to use an existing prepared stmt in a transaction,
	more driver docs & tests; no functional changes.
* strings: add ContainsAny and ContainsRune (thanks Scott Lawrence).
* syscall: add SUSv3 RLIMIT/RUSAGE constants (thanks Sébastien Paolacci),
	fix openbsd sysctl hostname/domainname workaround,
	implement Syscall15 (thanks Alex Brainman).
* time: fix Timer stop.

2011-11-18

This snapshot includes some language changes.

Map and function value comparisons are now disallowed (except for comparison
with nil) as per the Go 1 plan. Function equality was problematic in some
contexts and map equality compares pointers, not the maps' content.

As an experiment, structs are now allowed to be copied even if they contain
unexported fields. This gives packages the ability to return opaque values in
their APIs.

Other changes:
* 6a, 8a: allow $(-1) for consistency with $1, $(1), $-1.
* 6l: code generation fixes (thanks Michał Derkacz).
* build: fix check for selinux allow_execstack on Fedora (thanks Bobby Powers).
* builtin: document delete.
* cgo: don't panic on undeclared enums/structs (thanks Rémy Oudompheng),
	fix g0 stack guard.
* crypto/tls: fix handshake message test.
* crypto: update incorrect references to Cipher interface; should be Block.
* doc: clean ups, additions, and fixes to several documents.
* doc/install: add openbsd (thanks Joel Sing!).
* doc: link to Chinese translation of A Tour of Go.
* encoding/json: add marshal/unmarshal benchmark,
	decode [] as empty slice, not nil slice,
	make BenchmarkSkipValue more consistent.
* env.bash: check for presence of make/gmake (thanks Scott Lawrence).
* exp/sql: NumInput() allow -1 to ignore checking (thanks Yasuhiro Matsumoto),
	add DB.Close, fix bugs, remove Execer on Driver (only Conn),
	document that for drivers, io.EOF means no more rows,
	add client side support for publickey auth (thanks Dave Cheney),
	add direct-tcpip client support (thanks Dave Cheney),
	change test listen address, also exit test if fails,
	other fixes and improvements (thanks Dave Cheney).
* exp/terminal: rename shell to terminal and add SetSize.
* fcgi: fix server capability discovery.
* fmt: distinguish empty vs nil slice/map in %#v.
* gc: better error, type checks, and many fixes,
	remove m[k] = x, false syntax (use delete(m, k) instead),
	support for building with Plan 9 yacc (thanks Anthony Martin).
* go/printer: make //line formatting idempotent.
* godefs: delete, replaced by cgo -godefs.
* godoc: document -templates flag, fix remote search,
	provide mode for flat (non-indented) directory listings.
* gofmt: leave nil nodes of the AST unchanged (thanks Rémy Oudompheng).
* html/template: indirect top-level values before printing.
* html: more parser improvements (thanks Andrew Balholm).
* http: fix serving from CWD with http.ServeFile,
	make Dir("") equivalent to Dir(".").
* ld: fix .bss for ldpe (thanks Wei Guangjing).
* math/big: replace nat{} -> nat(nil).
* math: faster Lgamma (thanks Charles L. Dorian).
* mime: implement TypeByExtension for windows.
* misc/bbedit: error and rune support (thanks Anthony Starks).
* misc/benchcmp: benchmark comparison script.
* misc/emacs: add delete builtin (thanks Bobby Powers).
* misc/kate: add error and rune (thanks Evan Shaw).
* misc/notepadplus: error and rune support (thanks Anthony Starks).
* misc/windows: Windows installer in MSI format (thanks Joe Poirier).
* net, io/ioutil: remove use of os.Time (thanks Anthony Martin).
* net/http: fix EOF handling on response body (thanks Gustavo Niemeyer),
	fix sniffing when using ReadFrom,
	use t.Errorf from alternate goroutine in test.
* os: remove undocumented Envs (use os.Environ instead).
* reflect: empty slice/map is not DeepEqual to nil,
	make Value an opaque struct.
* runtime, syscall: convert from godefs to cgo.
* runtime: add nanotime for Plan 9 (thanks Anthony Martin),
	add timer support, use for package time,
	avoid allocation for make([]T, 0).
* strconv: add Ftoa benchmarks, make Ftoa faster.
* syscall: delete syscall.Sleep, take over env implementation, use error.
* testing: add file:line stamps to messages, print results to standard output.
* text/template: refactor set parsing.
* time: add ISOWeek method to Time (thanks Volker Dobler).
* various: avoid func compare, reduce overuse of os.EINVAL + others.

2011-11-09

This weekly snapshot renames various Go packages as described in the Go 1 plan.
Import statements in client code can be updated automatically with gofix.

The changes are:
	asn1              -> encoding/asn1
	big               -> math/big
	cmath             -> math/cmplx
	csv               -> encoding/csv
	exec              -> os/exec
	exp/template/html -> html/template
	gob               -> encoding/gob
	http              -> net/http
	http/cgi          -> net/http/cgi
	http/fcgi         -> net/http/fcgi
	http/httptest     -> net/http/httptest
	http/pprof        -> net/http/pprof
	json              -> encoding/json
	mail              -> net/mail
	rpc               -> net/rpc
	rpc/jsonrpc       -> net/rpc/jsonrpc
	scanner           -> text/scanner
	smtp              -> net/smtp
	syslog            -> log/syslog
	tabwriter         -> text/tabwriter
	template          -> text/template
	template/parse    -> text/template/parse
	rand              -> math/rand
	url               -> net/url
	utf16             -> unicode/utf16
	utf8              -> unicode/utf8
	xml               -> encoding/xml

2011-11-08

This weekly snapshot includes some package changes.

In preparation for the Go 1 package reorganziation the sources for various
packages have been moved, but the import paths remain unchanged. This
inconsistency breaks goinstall at this snapshot. If you use goinstall, please
stay synced to the previous weekly snapshot until the next one is tagged.

The Error methods in the html, bzip2, and sql packages that return error values
have been renamed to Err.

Some non-core parts of the http package have been moved to net/http/httputil.
The Dump* and NewChunked* functions and ClientConn, ServerConn, and
ReverseProxy types have been moved from http to httputil.

The API for html/template is now a direct copy of the template API, instead of
exposing a single Escape function. For HTML templates, use the
html/template package as you would the template package.

Other changes:
* all: rename os.EOF to io.EOF in non-code contexts (thanks Vincent Vanackere),
	sort imports with gofix.
* archive/zip: close file opened with OpenReader (thanks Dmitry Chestnykh).
* bufio: return nil line from ReadLine on error, as documented.
* builtin: document basic types and the built-in error type.
* bytes: add Contains function.
* exp/sql: finish implementation of transactions, flesh out types, docs.
* exp/ssh: improved client authentication support (thanks Dave Cheney).
* gc: better error message for range over non-receive channel,
	bug fixes and clean-ups,
	detect type switch variable not used cases,
	fix escaping of package paths in symbol names,
	helpful error message on method call on pointer to pointer,
	portably read archive headers (thanks Ron Minnich).
* gob: fix bug when registering the same type multiple times.
* gofix: avoid panic on body-less functions in netudpgroup,
	make fix order implicit by date.
* gofmt, gofix: sort imports.
* goinstall: support launchpad.net/~user branches (thanks Jani Monoses).
* gopack: do not look for Go metadata in non-Go objects.
* gotest: don't run examples that have no expected output.
* html: the parser bug fixing campaign continues (thanks Andrew Balholm).
* http: fix whitespace handling in sniffer,
	only recognize application/x-www-form-urlencoded in ParseForm,
	support Trailers in ReadRequest.
* lib9: add ctime.
* math: faster Gamma (thanks Charles L. Dorian),
	improved accuracy for Tan (thanks Charles L. Dorian),
	improved high-angle test for Cos, Sin and Tan (thanks Charles L. Dorian).
* net: implement LookupTXT for windows (thanks Alex Brainman).
* os,text,unicode: renamings.
* runtime/cgo: fix data declaration to be extern.
* runtime: add timespec definition for freebsd,
	add windows callback tests (thanks Alex Brainman),
	fix prototype for openbsd thrsleep,
	fix set and not used,
	unify mutex code across OSes,
	windows_386 sighandler to use correct g (thanks Alex Brainman).
* template: format error with pointer receiver,
	make redefinition of a template in a set more consistent.
* test: clear execute bit from source file (thanks Mikio Hara),
	make closedchan.go exit with failure if something fails.
* time: faster Nanoseconds call.
* websocket: return an error HTTP response for bad websocket request.
* xml: allow parsing of <_> </_>. (thanks David Crawshaw).

2011-11-02 (new error type)

This snapshot introduces the built-in error type, defined as

       type error interface {
               Error() string
       }

The error type replaces os.Error. Notice that the method name has changed from
String to Error. Package fmt's Print formats both Stringers and errors:
in general there is no need to implement both String and Error methods.

Gofix can update most code. If you have split your package across many files,
it may help to use the -force=error command-line option, which forces gofix to
apply the error fix even if it is not obvious that a particular file needs it.
As always, it is a good idea to read and test the changes that gofix made
before committing them to your version control system.

2011-11-01

* 6l: remove mention of -e flag - it does nothing.
* cc: change cas to newcase (thanks Ron Minnich).
* crypto/openpgp/error: use Error in names of error impl types.
* crypto/rsa: change public exponent from 3 to 65537.
* crypto/tls: add Error method to alert.
* doc: add link to A Tour of Go in Japanese,
	add 'all' make rule to build all docs,
	refer to tour.golang.org instead of go-tour.appspot.com.
* exp/norm: fixed bug that crept in with moving to the new regexp.
* exp/ssh: fix length header leaking into channel data (thanks Dave Cheney).
* fmt: handle os.Error values explicity (as distinct from Stringer).
* gc: clean up printing,
	fix [568]g -V crash (thanks Mikio Hara),
	test + fix escape analysis bug.
* go/build: avoid os.Error in tests.
* go/doc: remove os.NewError anti-heuristic.
* go/parser: test and fix := scoping bug.
* gob: split uses of gobError, remove unnecessary embedding.
* gofix: test import insertion, deletion.
* goinstall: intelligent vcs selection for common sites (thanks Julian Phillips).
* gopack: change archive file name length back to 16.
* html: fix print argument in test,
	more parser improvements (thanks Andrew Balholm).
* json: properly handle nil slices (thanks Alexander Reece).
* math: improved accuracy for Sin and Cos (thanks Charles L. Dorian).
* misc/emacs: fix restoration of windows after gofmt (thanks Jan Newmarch).
* misc/vim: add rune keyword (thanks Jongmin Kim).
* misc/windows: can be used for amd64 (thanks Alex Brainman).
* net: document why we do not use SO_REUSEADDR on windows (thanks Alex Brainman).
* os: do not interpret 0-length read as EOF.
* pkg: remove .String() from some print arguments.
* rpc: avoid infinite loop on input error.
* runtime/pprof: document OS X being broken.
* runtime: lock the main goroutine to the main OS thread during init.
* spec: define that initialization is sequential.
* strconv: use better errors than os.EINVAL, os.ERANGE.
* syscall: fix Await msg on Plan 9 (thanks Andrey Mirtchovski).
* template: do not use error as stringer,
	fix error checking on execute without parse (thanks Scott Lawrence).
* test/alias.go: additional tests.
* test: error-related fixes.
* textproto: prevent long lines in HTTP headers from causing HTTP 400 responses.
* time: add RFC1123 with numeric timezone format (thanks Scott Lawrence).

2011-10-26 (new rune type)

This snapshot introduces the rune type, an alias for int that
should be used for Unicode code points.

A future release of Go (after Go 1) will change rune to be an
alias for int32 instead of int.  Using rune consistently is the way
to make your code build both before and after this change.

To test your code for rune safety, you can rebuild the Go tree with

	GOEXPERIMENT=rune32 ./all.bash

which builds a compiler in which rune is an alias for int32 instead of int.

Also, run govet on your code to identify methods that might need to have their
signatures updated.

2011-10-25

* big: make SetString return nil if an error occurs,
	new Rat.Inv method,
	usable zero Rat values without need for explicit initialization.
* codereview: show LGTMs in hg p.
* crypto/x509: fix names in certificate generation.
* exp/ssh: add experimental ssh client,
	introduce Session to replace Cmd for interactive commands,
	server cleanups (thanks Dave Cheney).
* exp/types: fix crash in parseBasicType on unknown type.
* fmt: don't panic formatting nil interfaces (thanks Gustavo Niemeyer).
* go/ast, go/token: actually run tests; fix go/ast test.
* gotest: explicit -help flag, use $GCFLAGS like make does.
* govet: check canonical dynamic method signatures.
* html: improved parsing (thanks Andrew Balholm),
	parse <select> tags, parse and render comment nodes,
	remove the Tokenizer.ReturnComments option.
* http: Transport: with TLS InsecureSkipVerify, skip hostname check.
* misc/vim: add highlighting for delete (thanks Dave Cheney).
* net: do not set SO_REUSEADDR for windows (thanks Alex Brainman).
* os/inotify: move to exp/inotify (thanks Mikio Hara).
* runtime: include bootstrap m in mcpu accounting (thanks Hector Chu).
* syscall: use uintptr for Mount flags.

2011-10-18

This weekly snapshot includes some language and package changes that may
require code changes. Please read these notes carefully, as there are many
changes and your code will likely be affected.

The syntax for map deletion has been changed. Code that looks like:
	m[x] = 0, false
should be written as:
	delete(m, x)
The compiler still accepts m[x] = 0, false for now; even so, you can use gofix
to rewrite such assignments into delete(m, x).

The Go compiler will reject a return statement without arguments when any of
the result variables has been shadowed. Code rejected as a result of this
change is likely to be buggy.

Receive-only channels (<-chan T) cannot be closed.
The compiler will diagnose such attempts.

The first element of a map iteration is chosen at random. Code that depends on
iteration order will need to be updated.

Goroutines may be run during program initialization.

A string may be appended to a byte slice. This code is now legal:
	var b []byte
	var s string
	b = append(b, s...)

The gotry command and its associated try package have been deleted.
It was a fun experiment that - in the end - didn't carry its weight.

The gotype tool has been moved to exp/gotype and its associated go/types
package has been moved to exp/types. The deprecated go/typechecker package has
been deleted.

The enbflint tool has been moved to pkg/exp/ebnflint and its associated ebnf
package has been moved to pkg/exp/ebnf.

The netchan package has been moved to old/netchan.

The http/spdy package has been moved to exp/spdy.

The exp/datafmt package has been deleted.

The container/vector package has been deleted. Slices are better:
	http://code.google.com/p/go-wiki/wiki/SliceTricks

Other changes:
* 5l/6l/8l: correct ELFRESERVE diagnostic (thanks Anthony Martin).
* 6l/8l: support OS X code signing (thanks Mikkel Krautz).
* asn1: accept UTF8 strings as ASN.1 ANY values.
* big: handle aliasing correctly for Rat.SetFrac.
* build: add missing nuke target (thanks Anthony Martin),
	catch future accidental dependencies to exp or old packages,
	more robustly detect gold 2.20 (thanks Christopher Wedgwood),
	pass $GCFLAGS to compiler,
	stop on failed deps.bash.
* crypto/tls: add 3DES ciphersuites,
	add server side SNI support,
	fetch root CA from Windows store (thanks Mikkel Krautz),
	fetch root certificates using Mac OS API (thanks Mikkel Krautz),
	fix broken looping code in windows root CA fetcher (thanks Mikkel Krautz),
	more Unix root certificate locations.
* crypto/x509: add code for dealing with PKIX public keys,
	keep the raw Subject and Issuer.
* csv: fix overly aggressive TrimLeadingSpace.
* exp/ssh: general cleanups for client support (thanks Dave Cheney).
* exp/template/html: fix bug in cssEscaper.
* exp/terminal: split terminal handling from exp/ssh.
* exp/winfsnotify: filesystem watcher for Windows (thanks Hector Chu).
* fmt: fix test relying on map iteration order.
* gc: changes to export format in preparation for inlining,
	pass FlagNoPointers to runtime.new,
	preserve uint8 and byte distinction in errors and import data,
	stricter multiple assignment + test,
	treat uintptr as potentially containing a pointer.
* go/scanner: remove AllowIllegalChars mode.
* go/token: document deserialization property.
* gob: avoid one copy for every message written.
* godefs: add enum/const testdata (thanks Dave Cheney).
* godoc: generate package toc in template, not in JavaScript,
	show "unexported" declarations when executing "godoc builtin",
	show correct source name with -path.
* gofix: make fix order explicit, add mapdelete.
* gofmt: fix //line handling,
	disallow rewrites for incomplete programs.
* gotest: avoid conflicts with the name of the tested package (thanks Esko Luontola),
	test example code.
* goyacc: clean up after units (thanks Anthony Martin),
	make more gofmt-compliant.
* html: add a Render function, various bug fixes and improvements,
	parser improvements (thanks Andrew Balholm).
* http: DoS protection: cap non-Handler Request.Body reads,
	RoundTrippers shouldn't mutate Request,
	avoid panic caused by nil URL (thanks Anthony Martin),
	fix read timeouts and closing,
	remove Request.RawURL.
* image/tiff: implement PackBits decoding (thanks Benny Siegert).
* ld: fix "cannot create 8.out.exe" (thanks Jaroslavas Počepko).
* misc/emacs: add a "godoc" command, like M-x man (thanks Evan Martin).
* misc/swig: delete binaries (thanks Anthony Martin).
* misc/windows: automated toolchain packager (thanks Joe Poirier).
* net/windows: implement ip protocol name to number resolver (thanks Alex Brainman).
* net: add File method to IPConn (thanks Mikio Hara),
	allow LookupSRV on non-standard DNS names,
	fix "unexpected socket family" error from WriteToUDP (thanks Albert Strasheim),
	fix socket leak in case of Dial failure (thanks Chris Farmiloe),
	remove duplicate error information in Dial (thanks Andrey Mirtchovski),
	return error from CloseRead and CloseWrite (thanks Albert Strasheim),
	skip ICMP test on Windows too unless uid 0.
* reflect: disallow Interface method on Value obtained via unexported name,
	make unsafe use of SliceHeader gc-friendly.
* rpc: don't panic on write error.
* runtime: faster strings,
	fix crash if user sets MemProfileRate=0,
	fix crash when returning from syscall during gc (thanks Hector Chu),
	fix memory leak in parallel garbage collector.
* scanner: invalidate scanner.Position when no token is present.
* spec: define order of multiple assignment.
* syscall/windows: dll function load and calling changes (thanks Alex Brainman).
* syscall: add #ifdefs to fix the manual corrections in ztypes_linux_arm.go (thanks Dave Cheney),
	adjust Mount to accommodate stricter FS implementations.
* testing: fix time reported for failing tests.
* utf8: add Valid and ValidString.
* websocket: tweak hybi ReadHandshake to support Firefox (thanks Luca Greco).
* xml: match Marshal's XMLName behavior in Unmarshal (thanks Chris Farmiloe).

2011-10-06

This weekly snapshot includes changes to the io, image, and math packages that
may require changes to client code.

The io package's Copyn function has been renamed to CopyN.

The math package's Fabs, Fdim, Fmax, Fmin and Fmod functions
have been renamed to Abs, Dim, Max, Min, and Mod.

Parts of the image package have been moved to the new image/color package.
The spin-off renames some types. The new names are simply better:
	image.Color              -> color.Color
	image.ColorModel         -> color.Model
	image.ColorModelFunc     -> color.ModelFunc
	image.PalettedColorModel -> color.Palette
	image.RGBAColor          -> color.RGBA
	image.RGBAColorModel     -> color.RGBAModel
	image.RGBA64Color        -> color.RGBA64
	image.RGBA64ColorModel   -> color.RGBA64Model
(similarly for NRGBAColor, GrayColorModel, etc)
The image.ColorImage type stays in the image package, but is renamed:
	image.ColorImage -> image.Uniform
The image.Image implementations (image.RGBA, image.RGBA64, image.NRGBA,
image.Alpha, etc) do not change their name, and gain a nice symmetry:
an image.RGBA is an image of color.RGBA, etc.
The image.Black, image.Opaque uniform images remain unchanged (although their
type is renamed from image.ColorImage to image.Uniform).
The corresponding color types (color.Black, color.Opaque, etc) are new.
Nothing in the image/ycbcr is renamed yet. The ycbcr.YCbCrColor and
ycbcr.YCbCrImage types will eventually migrate to color.YCbCr and image.YCbCr,
at a later date.

* 5g/6g/8g: fix loop finding bug, fix -f(), registerize variables again.
* 5l/6l/8l: add a DT_DEBUG dynamic tag to a dynamic ELF binary.
* archive/zip: read and write unix file modes (thanks Gustavo Niemeyer).
* build: clear execute bit from source files (thanks Mikio Hara).
* bytes: add EqualFold.
* cgo: allow Windows path characters in flag directives (thanks Joe Poirier),
	support for mingw-w64 4.5.1 and newer (thanks Wei Guangjing).
* codereview: extra repo sanity check,
	fix for Mercurial 1.9.2,
	fix hg change in Windows console (thanks Yasuhiro Matsumoto).
* crypto/elliptic: use %x consistently in error print.
* doc/spec: remove notes about gccgo limitations, now fixed.
* doc: add 'Debugging Go code with GDB' tutorial,
	fix memory model read visibility bug.
* encoding/binary: PutX functions require buffer of sufficient size,
	added benchmarks, support for varint encoding.
* exec: add Command.ExtraFiles.
* exp/sql{,/driver}: new database packages.
* exp/ssh: move common code to common.go (thanks Dave Cheney).
* exp/template/html: work continues.
* fmt: replace channel cache with slice.
* gc: limit helper threads based on ncpu.
* go/doc, godoc, gotest: support for reading example documentation.
* go: documentation and skeleton implementation of new command.
* gob: protect against invalid message length,
	allow sequential decoders on the same input stream.
* hgpatch: do not use hg exit status (thanks Yasuhiro Matsumoto).
* http: add Location method to Response,
	don't send a 400 Bad Request after a client shutdown.
* index/suffixarray: 4.5x faster index serialization (to memory).
* io/ioutil: add a comment on why devNull is a ReaderFrom.
* json: use strings.EqualFold instead of strings.ToLower.
* misc/emacs: fix indent bug.
* net: add shutdown: TCPConn.CloseWrite and CloseRead.
* net: use AF_UNSPEC instead of individual address family (thanks Mikio Hara).
* path/filepath: added Rel as the complement of Abs (thanks Gustavo Niemeyer).
* pkg/syscall: add Mkfifo for linux platforms.
* regexp: move to old/regexp, replace with exp/regexp, speedups.
* runtime/gdb: fix pretty printing of channels,
	gracefully handle not being able to find types.
* runtime: check for nil value pointer in select syncsend case,
	faster finalizers,
	fix malloc sampling bug,
	fix map memory leak,
	fix spurious deadlock reporting,
	fix usleep on linux/386 and re-enable parallel gc (thanks Hector Chu),
	parallelize garbage collector mark + sweep.
* strconv: faster Unquote in common case.
* strings: add EqualFold, Replacer, NewReplacer.
* suffixarray: add benchmarks for construction (thanks Eric Eisner).
* syscall: add GetsockoptByte, SetsockoptByte for openbsd (thanks Mikio Hara),
	add IPv4 ancillary data for linux (thanks Mikio Hara),
	mark stdin, stdout, stderr non-inheritable by child processes (thanks Alex Brainman),
	mksyscall_windows.pl creates non-syscall packages (thanks Jaroslavas Počepko),
	update multicast socket options (thanks Mikio Hara).
* testing: support for running tests in parallel (thanks Miki Tebeka).
* time: make month/day name comparisons case insenstive.
* unicode: fix make tables.
* vim: Send GoFmt errors to a location list (thanks Paul Sbarra).
* websocket: add hybi-13 support, add mutex to make websocket full-duplex.

2011-09-21

This weekly contains several improvements, bug fixes, and new packages.

* archive/tar: document Header fields and Type flags (thanks Mike Rosset).
* bytes: fix Replace so it actually copies (thanks Gustavo Niemeyer).
* cgo: use GOARCH from the environment (thanks Jaroslavas Počepko).
* codereview: save CL messages in $(hg root)/last-change.
* crypto/bcrypt: new package (thanks Jeff Hodges).
* crypto/blowfish: exposing the blowfish key schedule (thanks Jeff Hodges).
* doc: link to golang-france.
* doc: when configuring gold for gccgo, use --enable-gold=default.
* exp/norm: changed trie to produce smaller tables.
* exp/ssh: new package,
	refactor halfConnection to transport (thanks Dave Cheney).
* exp/template/html: more fixes and improvements.
* filepath: fix Glob to return no error on nonmatching patterns.
* gc: disallow invalid map keys,
	handle complex CONVNOP.
* gob: allocation fixes.
* godoc: simplify internal FileSystem interface.
* http/cgi: clean up environment (thanks Yasuhiro Matsumoto).
* http: always include Content-Length header, even for 0 (thanks Dave Grijalva),
	check explicit wrong Request.ContentLength values,
	fix TLS handshake blocking server accept loop,
	prevent DumpRequest from adding implicit headers.
* httptest: add NewUnstartedServer.
* json: clearer Unmarshal doc,
	skip nil in UnmarshalJSON and (for symmetry) MarshalJSON.
* net: use /etc/hosts first when looking up IP addresses (thanks Andrey Mirtchovski).
* reflect: add comment about the doubled semantics of Value.String.
* runtime: implement pprof support for windows (thanks Hector Chu),
	increase stack system space on windows/amd64 (thanks Hector Chu).
* suffixarray: generate less garbage during construction (thanks Eric Eisner),
	improved serialization code using gob instead of encoding/binary.
* sync/atomic: replace MFENCE with LOCK XADD.

2011-09-16

This weekly snapshot includes changes to the image, path/filepath, and time
packages. Code that uses these packages may need to be updated.

The image package's NewX functions (NewRGBA, NewNRGBA, etc) have been changed
to take a Rectangle argument instead of a width and height.
Gofix can make these changes automatically.

The path/filepath package's Walk function has been changed to take a WalkFunc
function value instead of a Visitor interface value. WalkFunc is like the
Visitor's VisitDir and VisitFile methods except it handles both files and
directories:
	func(path string, info *os.FileInfo, err os.Error) os.Error
To skip walking a directory (like returning false from VisitDir) the WalkFunc
must return SkipDir.

The time package's Time struct's Weekday field has been changed to a method.
The value is calculated on demand, avoiding the need to re-parse
programmatically-constructed Time values to find the correct weekday.

There are no gofixes for the filepath or time API changes, but instances of the
old APIs will be caught by the compiler. The Weekday one is easy to update by
hand. The Walk one may take more consideration, but will have fewer instances
to fix.

* build: add build comments to core packages.
* codereview: Mercurial 1.9 fix for hg diff @nnn.
* crypto/tls: handle non-TLS more robustly,
	support SSLv3.
* debug/elf: permit another case of SHT_NOBITS section overlap in test.
* exm/template/html: more work on this auto-escaping HTML template package.
* exp/norm: added regression test tool for the standard Unicode test set.
* exp/regexp/syntax: fix invalid input parser crash,
	import all RE2 parse tests + fix bugs.
* exp/regexp: add MustCompilePOSIX, CompilePOSIX, leftmost-longest matching.
* flag: make zero FlagSet useful.
* gc: clean up if grammar.
* go/build: handle cgo, // +build comments.
* go/printer: use panic/defer instead of goroutine for handling errors.
* go/token: support to serialize file sets.
* godoc, suffixarray: switch to exp/regexp.
* godoc: show packages matching a query at the top,
	support for complete index serialization,
	use go/build to find files in a package.
* gofmt: accept program fragments on standard input, add else test.
* http/cgi: add openbsd environment configuration.
* http: document that Response.Body is non-nil.
* image/png: don't use a goroutine to decode, to permit decode during init.
* json: if a field's tag is "-", ignore the field for encoding and decoding.
* ld: grow dwarf includestack on demand.
* net, syscall: implement SetsockoptIPMReq(), and
	move to winsock v2.2 for multicast support (thanks Paul Lalonde).
* net: add a LookupTXT function.
* os: os.RemoveAll to check for wboth error codes on Windows (thanks Jaroslavas Počepko).
* path/filepath: fix Visitor doc (thanks Gustavo Niemeyer),
	make UNC file names work (thanks Yasuhiro Matsumoto).
* runtime: optimizations to channels on Windows (thanks Hector Chu),
	syscall to return both AX and DX for windows/386 (thanks Alex Brainman).
* sync/atomic: add 64-bit Load and Store.
* syscall: add route flags for linux (thanks Mikio Hara).
* test: add test for inheriting private method from anonymous field.
* websocket: fix infinite recursion in Addr.String() (thanks Tarmigan Casebolt),
	rename websocket.WebSocketAddr to *websocket.Addr.

2011-09-07

This weekly snapshot consists of improvements and bug fixes, including fixes
for issues introduced by escape analysis changes in the gc compiler.

* build: clear execute bit from Go files (thanks Mike Rosset),
	error out if problem with sudo.bash /usr/local/bin (thanks Mike Rosset).
* exp/norm: add Reader and Writer,
	performance improvements of quickSpan.
* exp/regexp: bug fixes and RE2 tests.
* exp/template/html: string replacement refactoring,
	tweaks to js{,_test}.go.
* gc: add -p flag to catch import cycles earlier,
	fix label recursion bugs,
	fix zero-length struct eval,
	zero stack-allocated slice backing arrays,
* gc, ld: fix Windows file paths (thanks Hector Chu).
* go/parser: accept corner cases of signature syntax.
* gobuilder: ignore _test.go files when looking for docs, more logging.
* godoc: minor tweaks for App Engine use.
* gofix: do not convert url in field names (thanks Gustavo Niemeyer).
* gofmt: indent multi-line signatures.
* gopprof: regexp fixes (thanks Hector Chu).
* image/png: check zlib checksum during Decode.
* libmach: fix incorrect use of memset (thanks Dave Cheney).
* misc/goplay: fix template output.
* net: ParseCIDR returns IPNet instead of IPMask (thanks Mikio Hara),
	sync CIDRMask code, doc.
* os: use GetFileAttributesEx to implement Stat on windows (thanks Alex Brainman).
* runtime: fix openbsd 386 raisesigpipe,
	implement exception handling on windows/amd64 (thanks Hector Chu),
	test for concurrent channel consumers (thanks Christopher Wedgwood).
* sort: use heapsort to bail out quicksort (thanks Ziad Hatahet).
* sync/atomic: add LoadUintptr, add Store functions.
* syscall: update routing message attributes handling (thanks Mikio Hara).
* template: fix deadlock,
	indirect or dereference function arguments if necessary,
	slightly simplify the test for assignability of arguments.
* url: handle ; in ParseQuery.
* websocket: fix incorrect prints found by govet (thanks Robert Hencke).

2011-09-01

This weekly contains performance improvements and bug fixes.

The gc compiler now does escape analysis, which improves program performance
by placing variables on the call stack instead of the heap when it is safe to
do so.

The container/vector package is deprecated and will be removed at some point
in the future.

Other changes:
* archive/tar: support symlinks. (thanks Mike Rosset)
* big: fix nat.scan bug. (thanks Evan Shaw)
* bufio: handle a "\r\n" that straddles the buffer.
	add openbsd.
	avoid redundant bss declarations.
	fix unused parameters.
	fix windows/amd64 build with newest mingw-w64. (thanks Hector Chu)
* bytes: clarify that NewBuffer is not for beginners.
* cgo: explain how to free something.
	fix GoBytes. (thanks Gustavo Niemeyer)
	fixes callback for windows amd64. (thanks Wei Guangjing)
	note that CString result must be freed. (thanks Gustavo Niemeyer)
* cov: remove tautological #defines. (thanks Lucio De Re)
* dashboard: yet another utf-8 fix.
* doc/codelab/wiki: fix Makefile.
* doc/progs: fix windows/amd64. (thanks Jaroslavas Počepko)
* doc/tmpltohtml: update to new template package.
* doc: emphasize that environment variables are optional.
* effective_go: convert to use tmpltohtml.
* exp/norm: reduced the size of the byte buffer used by reorderBuffer by half by reusing space when combining.
	a few minor fixes to support the implementation of norm.
	added implementation for []byte versions of methods.
* exp/template/html: add some tests for ">" attributes.
	added handling for URL attributes.
	differentiate URL-valued attributes (such as href).
	reworked escapeText to recognize attr boundaries.
* exp/wingui: made compatible with windows/amd64. (thanks Jaroslavas Počepko)
* flag: add Parsed, restore Usage.
* gc: add openbsd.
	escape analysis.
	fix build on Plan 9. (thanks Lucio De Re)
	fix div bug.
	fix pc/line table. (thanks Julian Phillips)
	fix some spurious leaks.
	make static initialization more static.
	remove JCXZ; add JCXZW, JCXZL, and JCXZQ instructions. (thanks Jaroslavas Počepko)
	shuffle #includes.
	simplify escape analysis recursion.
	tweak and enable escape analysis.
* go/ast cleanup: base File/PackageExports on FilterFile/FilterPackage code.
	adjustments to filter function.
	fix ast.MergePackageFiles to collect infos about imports. (thanks Sebastien Binet)
	generalize ast.FilterFile.
* go/build: add test support & use in gotest.
	separate test imports out when scanning. (thanks Gustavo Niemeyer)
* go/parser: fix type switch scoping.
	fix type switch scoping.
* gob: explain that Debug isn't useful unless it's compiled in.
* gobuilder: increase log limit.
* godashboard: fix utf-8 in user names.
* godoc: first step towards reducing index size.
	add dummy playground.js to silence godoc warning at start-up.
	added systematic throttling to indexing goroutine.
	fix bug in zip.go.
	support for reading/writing (splitted) index files.
	use virtual file system when generating package synopses.
* gofix: forgot to rename the URL type.
	osopen: fixed=true when changing O_CREAT. (thanks Tarmigan Casebolt)
* goinstall: error out with paths that end with '/'. (thanks Tarmigan Casebolt)
	report lack of $GOPATH on errors. (thanks Gustavo Niemeyer)
	select the tag that is closest to runtime.Version.
* gotry: add missing $. (thanks Tarmigan Casebolt)
* http: add MaxBytesReader to limit request body size.
	add file protocol transport.
	adjust test threshold for larger suse buffers.
	delete error kludge.
	on invalid request, send 400 response.
	return 413 instead of 400 when the request body is too large. (thanks Dave Cheney)
	support setting Transport's TLS client config.
* image/tiff: add a decode benchmark. (thanks Benny Siegert)
	decoder optimization. (thanks Benny Siegert)
* image: add PalettedImage interface, and make image/png recognize it. (thanks Jaroslavas Počepko)
* io: add TeeReader. (thanks Hector Chu)
* json: add struct tag option to wrap literals in strings.
	calculate Offset for Indent correctly. (thanks Jeff Hodges)
	fix decode bug with struct tag names with ,opts being ignored.
* ld: handle Plan 9 ar format. (thanks Lucio De Re)
	remove duplicate bss definitions.
* libmach: support reading symbols from Windows .exe for nm. (thanks Mateusz Czapliński)
* math: fix Pow10 loop. (thanks Volker Dobler)
* mime: ParseMediaType returns os.Error now, not a nil map.
	media type formatter. (thanks Pascal S. de Kloe)
	text charset defaults. (thanks Pascal S. de Kloe)
* misc/dashboard: remove limit for json package list.
* misc/emacs: refine label detection.
* net: add ParseMAC function. (thanks Paul Borman)
	change the internal form of IPMask for IPv4. (thanks Mikio Hara)
	disable "tcp" test on openbsd.
	fix windows build. (thanks Alex Brainman)
	join and leave a IPv6 group address, on a specific interface. (thanks Mikio Hara)
	make use of IPv4len, IPv6len. (thanks Mikio Hara)
	move internal string manipulation routines to parse.go. (thanks Mikio Hara)
* os: disable Hostname test on OpenBSD.
	fix WNOHANG Waitmsg. (thanks Gustavo Niemeyer)
* reflect: add Value.Bytes, Value.SetBytes methods.
* rpc: add benchmark for async rpc calls.
* runtime: add openbsd 386 defs.h.
	add runtime support for openbsd 386.
	add runtime· prefix to showframe.
	ctrlhandler for windows amd64. (thanks Wei Guangjing)
	fix stack cleanup on windows/amd64. (thanks Hector Chu)
	fix void warnings.
	go interface to cdecl calbacks. (thanks Jaroslavas Počepko)
	handle string + char literals in goc2c.
	make arm work on Ubuntu Natty qemu.
	openbsd thread tweaks.
	simplify stack traces.
	speed up cgo calls. (thanks Alex Brainman)
	use cgo runtime functions to call windows syscalls. (thanks Alex Brainman)
	windows/amd64 callbacks fixed and syscall fixed to allow using it in callbacks. (thanks Jaroslavas Počepko)
* strconv: put decimal on stack.
* spec: update section on Implementation Differences.
* syscall: SOMAXCONN should be 0x7fffffff at winsock2. (thanks Yasuhiro Matsumoto)
	add openbsd 386.
	handle RTM_NEWROUTE in ParseNetlinkRouteAttr on Linux. (thanks Albert Strasheim)
	handle routing entry in ParseRoutingSockaddr on BSD variants. (thanks Mikio Hara)
	openbsd amd64 syscall support.
	use the vdso page on linux x86 for faster syscalls instead of int $0x80. (thanks Yuval Pavel Zholkover)
* template/parse: give if, range, and with a common representation.
* template: grammar fix for template documentation. (thanks Bill Neubauer)
	range over channel.
	remove else and end nodes from public view.
* test: put GOROOT/bin before all others in run.
* time: fix Plan 9 build. (thanks Fazlul Shahriar)
	fix zone during windows test.
* type switches: test for pathological case.
* version.bash: update VERSION on -save if already present. (thanks Gustavo Niemeyer)
* websocket: implements new version of WebSocket protocol. (thanks Fumitoshi Ukai)
* windows/386: clean stack after syscall. (thanks Jaroslavas Počepko)
* xml: marshal "parent>child" tags correctly. (thanks Ross Light)

2011-08-17 (base for r60)

This weekly contains some package re-shuffling. Users of the http and
template packages may be affected.

This weekly replaces the template package with exp/template.
The original template package is still available as old/template.
The old/template package is deprecated and will be removed at some point
in the future. The Go tree has been updated to use the new template package.
We encourage users of the old template package to switch to the new one.
Code that uses template or exp/template will need to change
its import lines to "old/template" or "template", respectively.

The http package's URL parsing and query escaping code (such as ParseURL and
URLEscape) has been moved to the new url package, with several simplifications
to the names. Client code can be updated automatically with gofix.

* asn1: support unmarshalling structs with int32 members (thanks Dave Cheney).
* build: allow builds without cgo or hg,
	support versioning without hg (thanks Gustavo Niemeyer).
* builtin: add documentation for builtins.
* cgo: omit duplicate symbols in writeDefs (thanks Julian Phillips).
* misc: add support for OpenBSD.
* doc/codewalk: new Markov chain codewalk.
* exp/norm: added trie lookup code and associated tests,
	generate trie struct in triegen.go for better encapsulation,
	implementation of decomposition and composing functionality.
* exp/template/html: new experimental package for auto-escaping HTML templates.
* exp/template: don't panic on range of nil interface,
	rename Parse*File and Parse*Files for clarity,
	support field syntax on maps (thanks Gustavo Niemeyer), and
	many other fixes and changes.
* gc: implement nil chan and nil map support.
* go/parser: range clause and type literal fixes.
* godoc: show all top-level decls for (fake) package builtin.
* goinstall: really report all newly-installed public packages.
* html: parse more malformed tags.
* http: fix ParseMultipartForm after MultipartReader error,
	fix side effects in DefaultTransport's RoundTrip method (thanks Dave Grijalva).
* json: fix []unmarshaler case.
* ld: make addaddrplus4 static (thanks Lucio De Re).
* syscall: move multicast address handling to the net package.
* net: Plan 9 support (thanks Fazlul Shahriar),
	add SetTimeout to Listener interface (thanks Aleksandar Dezelin),
	add multicast stubs for OpenBSD,
	return correct local address for an accepted TCP connection (thanks Mikio Hara).
* reflect: panic on Invalid Interface call (thanks Gustavo Niemeyer).
* rpc: implement ServeRequest to synchronously serve a single request,
	make Server.Mutex unexported.
* runtime: better checks for syscall.NewCallback parameter (thanks Alex Brainman),
	correct SEH installation during callbacks (thanks Alex Brainman),
	fix GC bitmap corruption,
	fix pseudo-randomness on some selects (thanks Gustavo Niemeyer).
* syscall: make LazyDLL/LazyProc.Mutex unexported.
* test: allow multiple patterns in errchk,
	new nil semantics.
* time: take fractional seconds even if not in the format string.
* url: new package.
* utf8: rename some internal constants to remove leading underscores.
* xml: escape string chardata in xml.Marshal.

2011-08-10

This weekly contains performance improvements and bug fixes.

There are no outward-facing changes, but imports of the old-style
container/vector package have also been removed from the core library (thanks
John Asmuth, Kyle Consalus).

Other changes:

* 5g: fix set but not used error (thanks Dave Cheney).
* cmd/ld: Corrected mismatched print formats and variables (thanks Lucio De Re).
* errchk: add -0 flag.
* exp/norm: fix build by adding a test placeholder,
	maketables tool for generating tables for normalization.
* exp/template: bug fixes,
	ensure that a valid Set is returned even on error (thanks Roger Peppe),
	make index on maps return zero when key not present (thanks Roger Peppe),
	split the parse tree into a separate package exp/template/parse,
	add url query formatting filter.
* faq: lots of small tweaks plus a couple of new discussions,
	variant types, unions.
* fmt: call UpdateMemStats in malloc counter.
* go/build: use GOBIN as binary path for GOROOT.
* gob: add UpdateMemStats calls to malloc counter,
	avoid a couple of init-time allocations,
	don't invoke GobEncoder on zero values.
* gofmt: update test script so 'make test' succeeds.
* html: parse doctype tokens; merge adjacent text nodes.
* http: add more MPEG-4 MIME types to sniffer, and disable MP4 sniffing,
	add test to serve content in index.html (thanks Yasuhiro Matsumoto),
	configurable and default request header size limit,
	correct format flags when printing errors in tests (thanks Alex Brainman),
	correct path to serve index.html (thanks Yasuhiro Matsumoto),
* ld: add one empty symbol into pe to make dumpbin works (thanks Wei Guangjing),
	fail linking if the top-level package is not main.
* misc/vim: godoc command (thanks Yasuhiro Matsumoto).
* net: add support for openbsd (thanks Joel Sing),
	fix /proc/net/igmp,igmp6 reading bug on linux (thanks Mikio Hara),
	implement windows LookupMX and LookupAddr (thanks Mikio Hara),
	sort SRV records before returning from LookupSRV (thanks Alex Brainman),
* os: add support for openbsd (thanks Joel Sing).
* runtime: add more specialized type algorithms,
	correct Note documentation,
	faster chan creation on Linux/FreeBSD/Plan9,
	openbsd amd64 runtime support (thanks Joel Sing),
	remove unnecessary locking (thanks Hector Chu).
* scanner: correct error position for illegal UTF-8 encodings.
* syscall: delay load of dll functions on Windows (thanks Alex Brainman),
	move BSD mmap syscall (thanks Joel Sing),
	update routing message support for BSD variants (thanks Mikio Hara).
* test/bench: note changes after recent improvements to locking and runtime.
* time: add nanoseconds to the Time structure,
	parse and format fractional seconds.

2011-07-29

This weekly contains performance improvements and many bug fixes.

* 6l: OpenBSD support.
* archive/zip: handle zip files with more than 65535 files,
	more efficient reader and bug fix.
* big: refine printf formatting and optimize string conversion.
* build: fixes for mingw-w64 (thanks Wei Guangjing),
	miscellaneous fixes.
* cgo: add GoBytes, fix gmp example.
* exp/norm: API for normalization library.
* exp/regexp: implement regexp API using exp/regexp/syntax.
* exp/template: more tweaks and fixes, convert the tree to use exp/template.
* fmt: handle precision 0 format strings in standard way.
* gc: a raft of bug fixes.
* go/parser: report illegal label declarations at ':'.
* gob: send empty but non-nil maps.
* godoc: allow form feed in text files,
	app engine configuration and updated documentation.
* goinstall: abort and warn when using any url scheme, not just 'http://',
	write to goinstall.log in respective GOPATH.
* html: handle character entities without semicolons (thanks Andrew Balholm),
	parse misnested formatting tags according to the HTML5 spec,
	sync html/testdata/webkit with upstream WebKit.
* http: content-type sniffing,
	make serveFile redirects relative (thanks Andrew Balholm),
	other fixes.
* image/tiff: Do not panic when RowsPerStrip is missing (thanks Benny Siegert).
* io/ioutil: improve performance of ioutil.Discard (thanks Mike Solomon).
* ld: detect all import cycles,
	ldpe fixes (thanks Wei Guangjing),
	remove cseekend and redo pe writing (thanks Alex Brainman),
	remove overlap of ELF sections on dynamic binaries (thanks Gustavo Niemeyer).
* net/textproto: avoid 1 copy in ReadLine, ReadContinuedLine.
* net: fix memory corruption in windows *netFD.ReadFrom (thanks Alex Brainman).
* runtime: faster entersyscall/exitsyscall,
	fix scheduler races (thanks Hector Chu),
	higher goroutine arg limit, clearer error,
	parallelism-related performance optimizations and fixes,
	replace byte-at-a-time zeroing loop with memclr (thanks Quan Yong Zhai).
* sort: fix Float64Slice sort; NaN smallest value (thanks Florian Uekermann).
* src: removed some uses of container/vector (thanks John Asmuth).
* sync: improve Once fast path.
* unicode: fix case-mapping for roman numerals.

2011-07-19

This weekly snapshot includes a language change and a change to the image
package that may require changes to client code.

The language change is that an "else" block is now required to have braces
except if the body of the "else" is another "if". Since gofmt always puts those
braces in anyway, programs will not be affected unless they contain "else for",
"else switch", or "else select". Run gofmt to fix any such programs.

The image package has had significant changes made to the Pix field of struct
types such as image.RGBA and image.NRGBA. The image.Image interface type has
not changed, though, and you should not need to change your code if you don't
explicitly refer to Pix fields. For example, if you decode a number of images
using the image/jpeg package, compose them using image/draw, and then encode
the result using image/png, then your code should still work as before.

If you do explicitly refer to Pix fields, there are two changes.  First, Pix[0]
now refers to the pixel at Bounds().Min instead of the pixel at (0, 0). Second,
the element type of the Pix slice is now uint8 instead of image.FooColor. For
example, for an image.RGBA, the channel values will be packed R, G, B, A, R, G,
B, A, etc. For 16-bits-per-channel color types, the pixel data will be stored
as big-endian uint8s.

Most Pix field types have changed, and so if your code still compiles after
this change, then you probably don't need to make any further changes (unless
you use an image.Paletted's Pix field). If you do get compiler errors, code
that used to look like this:

	// Get the R, G, B, A values for the pixel at (x, y).
	var m *image.RGBA = loadAnImage()
	c := m.Pix[y*m.Stride + x]
	r, g, b, a := c.R, c.G, c.B, c.A

should now look like this:

	// Get the R, G, B, A values for the pixel at (x, y).
	var m *image.RGBA = loadAnImage()
	i := (y-m.Rect.Min.Y)*m.Stride + (x-m.Rect.Min.X)*4
	r := m.Pix[i+0]
	g := m.Pix[i+1]
	b := m.Pix[i+2]
	a := m.Pix[i+3]

This image package change will not be fixed by gofix: how best to translate
code into something efficient and idiomatic depends on the surrounding context,
and is not easily automatable. Examples of what to do can be found in the
changes to image/draw/draw.go in http://codereview.appspot.com/4675076/

Other changes:
* 6l: change default output name to 6.out.exe on windows (thanks Alex Brainman).
* archive/zip: add Writer,
	add Mtime_ns function to get modified time in sensible format.
* cc, ld, gc: fixes for Plan 9 build (thanks Lucio De Re).
* cgi: close stdout reader pipe when finished.
* cgo: add missing semicolon in generated struct,
	windows amd64 port (thanks Wei Guangjing).
* codereview: fix for Mercurial 1.9.
* dashboard: list "most installed this week" with rolling count.
* debug/elf: read ELF Program headers (thanks Matthew Horsnell).
* debug/pe: fixes ImportedSymbols for Win64 (thanks Wei Guangjing).
* debug/proc: remove unused package.
* doc/talks/io2010: update with gofix and handle the errors.
* exp/eval, exp/ogle: remove packages eval and ogle.
* exp/regexp/syntax: add Prog.NumCap.
* exp/template: API changes, bug fixes, and tweaks.
* flag: make -help nicer.
* fmt: Scan(&int) was mishandling a lone digit.
* gc: fix closure bug,
	fix to build with clang (thanks Dave Cheney),
	make size of struct{} and [0]byte 0 bytes (thanks Robert Hencke),
	some enhancements to printing debug info.
* gif: fix local color map and coordinates.
* go/build: fixes for windows (thanks Alex Brainman),
	include processing of .c files for cgo packages (thanks Alex Brainman),
	less aggressive failure when GOROOT not found.
* go/printer: changed max. number of newlines from 3 to 2.
* gob: register more slice types (thanks Bobby Powers).
* godoc: support for file systems stored in .zip files.
* goinstall, dashboard: Google Code now supports git (thanks Tarmigan Casebolt).
* hash/crc32: add SSE4.2 support.
* html: update section references in comments to the latest HTML5 spec.
* http: drain the pipe output in TestHandlerPanic to avoid logging deadlock,
	fix Content-Type of file extension (thanks Yasuhiro Matsumoto),
	implement http.FileSystem for zip files,
	let FileServer work when path doesn't begin with a slash,
	support for periodic flushing in ReverseProxy.
* image/draw: add benchmarks.
* json: add omitempty struct tag option,
	allow using '$' and '-' as the struct field's tag (thanks Mikio Hara),
	encode \r and \n in strings as e.g. "\n", not "\u000A" (thanks Evan Martin),
	escape < and > in any JSON string for XSS prevention.
* ld: allow seek within write buffer<
	add a PT_LOAD PHDR entry for the PHDR (thanks David Anderson).
* net: windows/amd64 port (thanks Wei Guangjing).
* os: plan9: add Process.Signal as a way to send notes (thanks Yuval Pavel Zholkover).
* os: don't permit Process.Signal after a successful Wait.
* path/filepath: fixes for windows paths (thanks Alex Brainman).
* reflect: add Value.NumMethod,
	panic if Method index is out of range for a type.
* runtime: faster entersyscall, exitsyscall,
	fix panic for make(chan [0]byte),
	fix subtle select bug (thanks Hector Chu),
	make goc2c build on Plan 9 (thanks Lucio De Re),
	make TestSideEffectOrder work twice,
	several parallelism-related optimizations and fixes,
	stdcall_raw stack 16byte align for Win64 (thanks Wei Guangjing),
	string-related optimizations (thanks Quan Yong Zhai),
	track running goroutine count.
* strconv: handle [-+]Infinity in atof.
* sync: add fast paths to WaitGroup,
	improve RWMutex performance.
* syscall: add Flock on Linux,
	parse and encode SCM_RIGHTS and SCM_CREDENTIALS (thanks Albert Strasheim).

2011-07-07 (base for r59)

This weekly snapshot includes changes to the strings, http, reflect, json, and
xml packages. Code that uses these packages will need changes. Most of these
changes can be made automatically with gofix.

The strings package's Split function has itself been split into Split and
SplitN. SplitN is the same as the old Split. The new Split is equivalent to
SplitN with a final argument of -1.

The http package has a new FileSystem interface that provides access to files.
The FileServer helper now takes a FileSystem argument instead of an explicit
file system root. By implementing your own FileSystem you can use the
FileServer to serve arbitrary data.

The reflect package supports a new struct tag scheme that enables sharing of
struct tags between multiple packages.
In this scheme, the tags must be of the form:
        key:"value" key2:"value2"
reflect.StructField's Tag field now has type StructTag (a string type), which
has method Get(key string) string that returns the associated value.
Clients of json and xml will need to be updated. Code that says
        type T struct {
                X int "name"
        }
should become
        type T struct {
                X int `json:"name"`  // or `xml:"name"`
        }
Use govet to identify struct tags that need to be changed to use the new syntax.

Other changes:
* 5l, 6l, 8l: drop use of ed during build.
* asn1: support T61 and UTF8 string.
* bufio: do not cache Read errors (thanks Graham Miller).
* build: make version.bash aware of branches.
* cgi: don't depend on CGI.pm for tests.
* codereview: make --ignore_hgpatch_failure work again,
	restrict sync to default branch.
* crypto/openpgp: add ability to reserialize keys,
	bug fix (thanks Gideon Jan-Wessel Redelinghuys).
* crypto/tls: fix generate_cert.go.
* crypto/x509: prevent chain cycles in Verify.
* csv: new package.
* doc: remove ed from apt-get package list.
* docs: fold the prog.sh scripting from makehtml into htmlgen itself.
* ebnflint: better handling of stdin.
* exp/regexp/syntax: new experimental RE2-based regexp implementation.
* exp/template: a new experimental templating package.
* fmt: add SkipSpace to fmt's ScanState interface.
* fmt: rename errno and error to err for doc consistency.
* gc: avoid package name ambiguity in error messages,
	fix package quoting logic,
	fixes for Plan 9 (thanks Lucio De Re).
* go/build: evaluate symlinks before comparing path to GOPATH.
* gob: use exported fields in structs in the package documentation.
* godoc: ignore directories that begin with '.',
	search GOPATH for documentation.
* gofix: os/signal, path/filepath, and sort fixes (thanks Robert Hencke),
* goinstall: add support for generic hosts (thanks Julian Phillips),
	only report successfully-installed packages to the dashboard,
	try to access via https (thanks Yasuhiro Matsumoto).
* gotest: add -test.benchtime and -test.cpu flags.
* html: fixes and improvements (thanks Yasuhiro Matsumoto).
* http/cgi: add Handler.Dir to specify working directory (thanks Yasuhiro Matsumoto).
* http: add StripPrefix handler wrapper,
	assume ContentLength 0 on GET requests,
	better handling of 0-length Request.Body,
	do TLS handshake explicitly before copying TLS state,
	document that ServerConn and ClientConn are low-level,
	make NewChunkedReader public (thanks Andrew Balholm),
	respect Handlers setting Connection: close in their response.
* image: more tests, Paletted.Opaque optimization.
* io.WriteString: if the object has a WriteString method, use it (thanks Evan Shaw).
* ld: elide the Go symbol table when using -s (thanks Anthony Martin).
* ld: fix ELF strip by removing overlap of sections (thanks Gustavo Niemeyer).
* mime/multipart: parse LF-delimited messages, not just CRLF.
* mime: permit lower-case media type parameters (thanks Pascal S. de Kloe).
* misc/dashboard: new features and improvements (not yet deployed).
* misc/emacs: update list of builtins (thanks Quan Yong Zhai).
* misc/vim: allow only utf-8 for file encoding (thanks Yasuhiro Matsumoto).
* os: fix documentation for FileInfo.Name,
	simplify WriteString,
	use a different symbol from syscall in mkunixsignals.sh.
* path/filepath: enable TestWalk to run on windows (thanks Alex Brainman).
* reflect: add MethodByName,
	allow Len on String values.
* regexp: document that Regexp is thread-safe.
* runtime/cgo: check for errors from pthread_create (thanks Albert Strasheim).
* runtime: add Semacquire/Semrelease benchmarks,
	improved Semacquire/Semrelease implementation,
	windows/amd64 port (thanks Wei Guangjing).
* sync: add fast path to Once,
	improve Mutex to allow successive acquisitions,
	new and improved benchmarks.
* syscall: regenerate zerrors for darwin/linux/freebsd,
	support for tty options in StartProcess (thanks Ken Rockot).
* testing: make ResetTimer not start/stop the timer,
	scale benchmark precision to 0.01ns if needed.
* time: zero-pad two-digit years.
* unicode/maketables: update debugging data.
* windows: define and use syscall.Handle (thanks Wei Guangjing).
* xml: add Marshal and MarshalIndent.

2011-06-23

This snapshot includes a language change that restricts the use of goto.
In essence, a "goto" statement outside a block cannot jump to a label inside
that block. Your code may require changes if it uses goto.
This changeset shows how the new rule affected the Go tree:
	http://code.google.com/p/go/source/detail?r=dc6d3cf9279d

The os.ErrorString type has been hidden. If your code uses os.ErrorString it
must be changed. Most uses of os.ErrorString can be replaced with os.NewError.

Other changes:
* 5c: do not use R9 and R10.
* 8l: more fixes for Plan 9 (thanks Lucio De Re).
* build: Make.ccmd: link with mach lib (thanks Joe Poirier).
* build: exclude packages that fail on Plan 9 (thanks Anthony Martin).
* cc: nit: silence comment warnings (thanks Dave Cheney).
* codereview.py: note that hg change -d abandons a change list (thanks Robert Hencke).
* crypto/openpgp: add ElGamal support.
* doc/faq: add question about converting from []T to []interface{}.
* doc: Effective Go: fix variadic function example (thanks Ben Lynn).
* exec: LookPath should not search %PATH% for files like c:cmd.exe (thanks Alex Brainman),
        add support for Plan 9 (thanks Anthony Martin),
        better error message for windows LookPath (thanks Alex Brainman).
* fmt: catch panics from calls to String etc.
* gc: descriptive panic for nil pointer -> value method call,
        implement goto restriction,
        unsafe.Alignof, unsafe.Offsetof, unsafe.Sizeof now return uintptr.
* go/build: include Import objects in Script Inputs.
* godefs: rudimentary tests (thanks Robert Hencke).
* goinstall: refactor and generalize repo handling code (thanks Julian Phillips),
        temporarily use Makefiles by default (override with -make=false).
* gopprof: update list of memory allocators.
* http: add Server.ListenAndServeTLS,
        buffer request.Write,
        fix req.Cookie(name) with cookies in one header,
        permit handlers to explicitly remove the Date header,
        write Header keys with empty values.
* image: basic test for the 16-bits-per-color-channel types.
* io: clarify Read, ReadAt, Copy, Copyn EOF behavior.
* ld: don't attempt to build dynamic sections unnecessarily (thanks Gustavo Niemeyer).
* libmach: fix disassembly of FCMOVcc and FCOMI (thanks Anthony Martin),
        fix tracing on linux (for cov) (thanks Anthony Martin).
* mime: fix RFC references (thanks Pascal S. de Kloe).
* misc/gobuilder: run make single-threaded on windows (thanks Alex Brainman).
* misc/godashboard: Accept sub-directories for goinstall's report (thanks Yasuhiro Matsumoto).
* nacl, tiny: remove vestiges (thanks Robert Hencke).
* net, syscall: interface for windows (thanks Yasuhiro Matsumoto).
* os: change Waitmsg String method to use pointer receiver (thanks Graham Miller).
* runtime: don't use twice the memory with grsec-like kernels (thanks Gustavo Niemeyer),
* spec: disallow goto into blocks.
* sync: restore GOMAXPROCS during benchmarks.
* syscall: add LSF support for linux (thanks Mikio Hara),
        add socket control message support for darwin, freebsd, linux (thanks Mikio Hara),
        add tty support to StartProcess (thanks Ken Rockot),
        fix build for Sizeof change.
* test: test of goto restrictions.
* time: add support for Plan 9 (thanks Anthony Martin).

2011-06-16

This snapshot includes changes to the sort and image/draw packages that will
require changes to client code.

The sort.IntArray type has been renamed to IntSlice, and similarly for
StringArray and Float64Array.

The image/draw package's Draw function now takes an additional argument,
a compositing operator. If in doubt, use draw.Over.

Other changes:
* build: fix header files for Plan 9 (thanks Lucio De Re).
* cgo: handle new Apple LLVM-based gcc from Xcode 4.2.
* crypto/openpgp: add ability to encrypt and sign messages.
* doc/gopher: add goggled gopher logo for App Engine.
* doc: Update notes for 3-day Go course.
* exec: make LookPath work when PATHEXT var not set on Windows (thanks Alex Brainman).
* exp/regexp/syntax: syntax data structures, parser, escapes, character classes.
* exp/template: lexical scanner for new template package.
* fmt: debugging formats for characters: %+q %#U.
* gc: frame compaction for arm,
        handle go print() and go println(),
        work around goto bug.
* go/build: fixes, self-contained tests.
* go/printer, gofmt: print "select {}" on one line.
* godoc: replace OS file system accesses in favor of a FileSystem interface.
* gofix: fix inconsistent indentation in help output (thanks Scott Lawrence).
* goinstall: use go/build package to scan and build packages.
* http/spdy: improve error handling (thanks William Chan).
* http: use runtime/debug.Stack() to dump stack trace on panic.
* ld: dwarf emit filenames in debug_line header instead of as extended opcodes,
        fix link Windows PE __declspec(dllimport) symbol (thanks Wei Guangjing),
        make .rodata section read-only (thanks Gustavo Niemeyer).
* mail: decode RFC 2047 "B" encoding.
* mime/multipart: remove temp files after tests on Windows (thanks Alex Brainman).
* net: export all fields in Interface (thanks Mikio Hara),
        rearrange source to run more tests on Windows (thanks Alex Brainman),
        sendfile for win32 (thanks Yasuhiro Matsumoto).
* os: Plan 9, fix OpenFile & Chmod, add Process.Kill (thanks Yuval Pavel Zholkover).
* runtime: fix Plan 9 "lingering goroutines bug" (thanks Yuval Pavel Zholkover).
* spec: clarify rules for append, scope rules for :=,
        specify constant conversions,
        unsafe.Alignof/Offsetof/Sizeof return uintptr.
* syscall, os, exec: add *syscall.SysProcAttr field to os.ProcAttr and exec.Cmd.
* syscall: add ptrace on darwin (thanks Jeff Hodges),
        mksyscall_windows.pl should output unix newline (thanks Yasuhiro Matsumoto).
        update BPF support for BSD variants (thanks Mikio Hara),
        use strict in perl scripts (thanks Yasuhiro Matsumoto).
* xml: handle non-string attribute fields (thanks Maxim Ushakov).

2011-06-09 (base for r58)

This snapshot includes changes to the strconv, http, and exp/draw packages.
Client code that uses the http or exp/draw packages will need to be changed,
and code that uses strconv or fmt's "%q" formatting directive merits checking.

The strconv package's Quote function now escapes only those Unicode code points
not classified as printable by unicode.IsPrint. Previously Quote would escape
all non-ASCII characters. This also affects the fmt package's "%q" formatting
directive. The previous quoting behavior is still available via strconv's new
QuoteToASCII function.   

Most instances of the type map[string][]string in the http package have been
replaced with the new Values type. The http.Values type has the Get, Set, Add,
and Del helper methods to make working with query parameters and form values
more convenient.

The exp/draw package has been split into the image/draw and exp/gui packages.

Other changes:
* 8l, ld: initial adjustments for Plan 9 native compilation of 8l (thanks Lucio De Re).
* arm: floating point improvements (thanks Fan Hongjian).
* big: Improved speed of nat-to-string conversion (thanks Michael T. Jones),
        Rat outputs the requested precision from FloatString (thanks Graham Miller),
        gobs for big.Rats.
* cgo: support non intel gcc machine flags (thanks Dave Cheney).
* compress/lzw: do not use background goroutines,
        reduce decoder buffer size from 3*4096 to 2*4096.
* crypto/twofish: fix Reset index overflow bug.
* crypto: reorg, cleanup and add function for generating CRLs.
* exec: export the underlying *os.Process in Cmd.
* gc: enable building under clang/2.9 (thanks Dave Cheney),
        preparatory work toward escape analysis, compact stack frames.
* go/build: new incomplete package for building go programs.
* godefs: do not assume forward type references are enums (thanks Robert Hencke).
* gofix, gofmt: fix diff regression from exec change.
* html: improve attribute parsing, note package status.
* http: don't fail on accept hitting EMFILE,
        fix handling of 0-length HTTP requests.
* image/draw: fix clipping bug where sp/mp were not shifted when r.Min was.
* image/gif: fix buglet in graphics extension.
* image/tiff: support for bit depths other than 8 (thanks Benny Siegert).
* ld: fix and simplify ELF symbol generation (thanks Anthony Martin)
* libmach: use the standardized format for designated initializers (thanks Jeff Hodges)
* mail: address list parsing.
* net: add network interface identification API (thanks Mikio Hara),
        fix bug in net.Interfaces: handle elastic sdl_data size correctly (thanks Mikio Hara).
* netchan: added drain method to importer (thanks David Jakob Fritz).
* os: add Process.Kill and Process.Signal (thanks Evan Shaw),
        fix Getenv for Plan 9 (thanks Yuval Pavel Zholkover).
* runtime: improve memmove by checking memory overlap (thanks Quan Yong Zhai),
        support for Linux grsecurity systems (thanks Jonathan Mark).
* spec: handle a corner case for shifts.
* testing: check that tests and benchmarks do not affect GOMAXPROCS (thanks Dmitriy Vyukov).
* unicode: add IsPrint and related properties, general categories.

2011-06-02

This snapshot includes changes to the exec package that will require changes
to client code.

The exec package has been re-designed with a more convenient and succinct API.
This code:
	args := []string{"diff", "-u", "file1.txt", "file2.txt"}
	p, err := exec.Run("/usr/bin/diff", args, os.Environ(), "",
		exec.DevNull, exec.Pipe, exec.DevNull)
	if err != nil {
		return nil, err
	}
	var buf bytes.Buffer
	io.Copy(&buf, p.Stdout)
	w, err := p.Wait(0)
	p.Close()
	if err != nil {
		return nil, err
	}
	return buf.Bytes(), err
can be rewritten as:
	return exec.Command("diff", "-u", "file1.txt", "file2.txt").Output()
See the exec package documentation for the details ("godoc exec").

By setting the GOPATH environment variable you can use goinstall to build and
install your own code and external libraries outside of the Go tree (and avoid
writing Makefiles).
See the goinstall command documentation for the details ("godoc goinstall").

Other changes:
* 5g: alignment fixes.
* 6l, 8l: fix Mach-O binaries with many dynamic libraries.
* 8l: emit resources (.rsrc) in Windows PE.  (thanks Wei Guangjing).
* asn1: fix marshalling of empty optional RawValues (thanks Mikkel Krautz).
* big: make Int and Rat implement fmt.Scanner (thanks Evan Shaw),
	~8x faster number scanning,
	remove some unnecessary conversions.
* cgo: restrict #cgo directives to prevent shell expansion (thanks Gustavo Niemeyer),
	support pkg-config for flags and libs (thanks Gustavo Niemeyer).
* compress/flate: fix Huffman tree bug,
	do not use background goroutines.
* crypto/openpgp: add support for symmetrically encrypting files.
* crypto/tls/generate_cert.go: fix misspelling of O_CREATE.
* dashboard: send notification emails when the build breaks.
* doc: mention go/printer instead of container/vector in effective go,
	put Release History link on 'Documentation' page,
	put Weekly Snapshot History link on 'Contributing' page.
* encoding/base64: add DecodeString and EncodeToString.
* encoding/binary: add a non-reflect fast path for Read,
	add a non-reflect fast path for Write.
* encoding/hex: add hex dumping.
* encoding/line: delete package. Its functionality is now in bufio.
* filepath: Abs must always return a clean path (thanks Gustavo Niemeyer).
* fmt: fix bug in UnreadRune,
	make %q work for integers, printing a quoted character literal,
	return EOF when out of input in Scan*.
* gc: check parameter declarations in interface fields (thanks Anthony Martin),
	disallow ... in type conversions (thanks Anthony Martin),
	do not force heap allocation on referencing outer variable in a closure,
	fix m[x], _ = y.(T),
	implement new shift rules,
	patch y.tab.c to fix build when using Bison 2.5,
	relax assignability of method receivers (thanks Anthony Martin),
	typecheck the whole tree before walking.
* go/scanner: don't allow "0x" and "0X" as integers (thanks Evan Shaw).
* gobuilder: fixes for windows (thanks Alex Brainman).
* godoc: basic setup for running godoc on local app engine emulator,
	display advert for the package dashboard on package list page.
* goinstall: fixes for windows (thanks Alex Brainman),
	more verbose logging with -v.
* gotest, pkg/exec: use bash to run shell scripts on windows (thanks Alex Brainman).
* http/spdy: redo interfaces, flesh out implementation & frame types (thanks William Chan).
* http: Transport hook to register non-http(s) protocols,
	add client+server benchmark,
	catch Handler goroutine panics,
	fix Set-Cookie date parsing,
	have client set Content-Length when possible,
	let Transport use a custom net.Dial function,
	propagate Set-Cookie in reverse proxy,
	ServeFile shouldn't send Content-Length when Content-Encoding is set.
* image: add a SubImage method.
* image/gif: simplify blockReader.Read.
* image/png: fix encoding of images that don't start at (0, 0).
* io, net, http: sendfile support.
* io: add ByteScanner, RuneScanner interfaces.
* ld: add -w to disable dwarf, make errors obviously from dwarf.
* mail: new package.
* mime/multipart: misc code/doc fixes.
* misc/cgo: remove reference to 'destroy' function.
* misc/emacs: don't select the mark after gofmt (thanks Eric Eisner).
* misc/gophertool: Chrome extension to aid in Go development
* misc/vim: limit Fmt command to Go buffers (thanks Yasuhiro Matsumoto).
* net: if we stop polling, remove any pending events for the socket,
	update IP multicast socket options (thanks Mikio Hara).
* os: Fix test to work on Solaris,
	fix Readdir(0) on EOF,
	fix Readdir, Readdirnames (thanks Yuval Pavel Zholkover),
	fix os.MkdirAll with backslash path separator (thanks Yasuhiro Matsumoto),
	handle OpenFile flag parameter properly on Windows (thanks Alex Brainman).
* path/filepath: remove string constants.
* pkg: spelling tweaks, I-Z (thanks Robert Hencke).
* quietgcc: fix typo, respect $TMPDIR.
* runtime: do not garbage collect windows callbacks (thanks Alex Brainman),
	fix mmap error return on linux (thanks Dmitry Chestnykh),
	reset GOMAXPROCS during tests,
	save cdecl registers in Windows SEH handler (thanks Alexey Borzenkov).
* spec: be precise with the use of the informal ellipsis and the Go token,
	clarify rules for shifts.
* strconv: add QuoteRune; analogous to Quote but for runes rather than strings.
* strings: implement UnreadByte, UnreadRune.
* sync: always wake up sleeping goroutines on Cond.Signal (thanks Gustavo Niemeyer).
* sync/atomic: fix check64.
* syscall: add ProcAttr field to pass an unescaped command line on windows (thanks Vincent Vanackere),
	add routing messages support for Linux and BSD (thanks Mikio Hara).
* template: fixes and clean-ups (thanks Gustavo Niemeyer).
* time: fix Format bug: midnight/noon are 12AM/PM not 0AM/PM.
* unicode: make the tables smaller.

2011-05-22

This snapshot includes changes to the http package that will require changes to
client code.

The finalURL return value of the Client.Get method has been removed.
This value is now accessible via the new Request field on http.Response.
For example, this code:

	res, finalURL, err := http.Get(...)

should be rewritten as:

	res, err := http.Get(...)
	if err != nil {
		// ...
	}
	finalURL := res.Request.URL.String()

Uses of http.Get that assign the finalURL value to _ can be rewritten
automatically with gofix.

This snapshot also includes an optimization to the append function that makes it
between 2 and 5 times faster in typical use cases.

Other changes:
* 5a, 6a, 8a, cc: remove old environment variables.
* 5c, 5g: fix build with too-smart gcc.
* 5l, 8l: add ELF symbol table to binary.
* 5l: delete pre-ARMv4 instruction implementations, other fixes.
* 6l, 8l: emit windows dwarf sections like other platforms (thanks Alex Brainman).
* 6l: fix emit windows dwarf sections (thanks Wei Guangjing).
* 8g: fix conversion from float to uint64 (thanks Anthony Martin).
* Make.cmd: create TARGDIR if necessary (thanks Gustavo Niemeyer).
* asn1: add big support.
* big: add Int methods to act on numbered bits (thanks Roger Peppe),
	better support for string conversions,
	support %v and # modifier, better handling of unknown formats.
* cgi: export RequestFromMap (thanks Evan Shaw),
	set Request.TLS and Request.RemoteAddr for children.
* cgo: use packed struct to fix Windows behavior.
* codereview: add release branch support,
	fetch metadata using JSON API, not XML scraping,
	handle 'null as missing field' in rietveld json.
* compress/lzw: silently drop implied codes that are too large.
* compress/zlib: actually use provided dictionary in NewWriterDict
* crypto/openpgp: add key generation support,
	change PublicKey.Serialize to include the header.
* crypto/rand: add utility functions for number generation (thanks Anthony Martin).
* crypto/tls: export the verified chains.
* crypto/x509/crl: add package.
* crypto/x509: export raw SubjectPublicKeyInfo,
	support DSA public keys in X.509 certs,
	support parsing and verifying DSA signatures (thanks Jonathan Allie).
* doc/roadmap: put "App Engine support" under "Done".
* doc: add I/O 2011 talks to talks/, docs.html, and front page.
* effective go: explain about values/pointers in String() example,
	update to new Open signature.
* exp/draw: fast paths for drawing a YCbCr or an NRGBA onto an RGBA.
* filepath: make EvalSymlinks work on Windows (thanks Alex Brainman).
* flag: allow distinct sets of flags.
* gc: fix type switch error message for invalid cases (thanks Lorenzo Stoakes),
	fix unsafe.Sizeof,
	preserve original expression for errors.
* go/ast, go/doc, godoc: consider struct fields and interface methods when filtering ASTs.
* go/ast: consider anonymous fields and set Incomplete bit when filtering ASTs,
	properly maintain map of package global imports.
* go/doc, godoc: when filtering for godoc, don't remove elements of a declaration.
* go/parser: accept parenthesized receive operations in select statements,
	always introduce an ast.Object when declaring an identifier.
* go/printer, gofmt: fix alignment of "=" in const/var declarations,
	fix formatting of expression lists (missing blank).
* go/printer: added simple performance benchmark,
	make tests follow syntactic restrictions,
	more accurate comment for incomplete structs/interfaces,
* go/token: faster FileSet.Position implementation.
* go/types: type checker API + testing infrastructure.
* godoc: added -index flag to enable/disable search index,
	if there is no search box, don't run the respective JS code.
* gofmt: update test.sh (exclude a file w/ incorrect syntax).
* html: parse empty, unquoted, and single-quoted attribute values.
* http/cgi: correctly set request Content-Type (thanks Evan Shaw),
	pass down environment variables for IRIX and Solaris.
* http/pprof: fix POST reading bug.
* http/spdy: new incomplete package (thanks Ross Light).
* http: Client.Do should follow redirects for GET and HEAD,
	add Header.Write method (thanks Evan Shaw),
	add Request.SetBasicAuth method,
	add Transport.ProxySelector,
	add http.SetCookie(ResponseWriter, *Cookie),
	don't Clean query string in relative redirects,
	fix FormFile nil pointer dereference on missing multipart form,
	fix racy test with a simpler version,
	fix two Transport gzip+persist crashes,
	include Host header in requests,
	make HEAD client request follow redirects (thanks Eivind Uggedal).
	update cookie doc to reference new RFC 6265,
	write cookies according to RFC 6265 (thanks Christian Himpel).
* image/bmp: implement a BMP decoder.
* image/gif: new package provides a GIF decoder.
* image/jpeg: decode grayscale images, not just color images.
	optimizations and tweaks.
* image/png: encode paletted images with alpha channel (thanks Dmitry Chestnykh),
	speed up opaque RGBA encoding.
* image/tiff: implement a decoder (thanks Benny Siegert).
* image: add type-specific Set methods and use them when decoding PNG,
	make AlphaColor.Set conform to usual signature (thanks Roger Peppe),
	png & jpeg encoding benchmarks.
* ld: do not emit reference to dynamic library named "",
	fix alignment of rodata section on Plan 9 (thanks Anthony Martin),
	make ELF binaries with no shared library dependencies static binaries.
* make.bash: remove old bash version of gotest on Windows (thanks Alex Brainman).
* make: add nuke target for C commands and libs (thanks Anthony Martin).
* mime/multipart: add FileName accessor on Part,
	add Writer,
	return an error on Reader EOF, not (nil, nil).
* misc/cgo/test: run tests.
* misc/emacs: use UTF-8 when invoking gofmt as a subprocess (thanks Sameer Ajmani).
* misc/vim: new Vim indentation script.
* net, http: add and make use of IP address scope identification API (thanks Mikio Hara).
* net: default to 127.0.0.1, not localhost, in TestICMP,
	don't crash on unexpected DNS SRV responses,
	enable SO_REUSEPORT on BSD variants (thanks Mikio Hara),
	protocol family adaptive address family selection (thanks Mikio Hara),
	re-enable wildcard listening (thanks Mikio Hara),
	sort records returned by LookupSRV (thanks Gary Burd).
* os: make Readdir & Readdirnames return os.EOF at end,
	make Setenv update C environment variables.
* reflect: allow unexported key in Value.MapIndex.
* runtime, sync/atomic: fix arm cas.
* runtime: add newline to "finalizer already set" error (thanks Albert Strasheim),
	handle out-of-threads on Linux gracefully (thanks Albert Strasheim),
	fix function args not checked warning on ARM (thanks Dave Cheney),
	make StackSystem part of StackGuard (thanks Alexey Borzenkov),
	maybe fix Windows build broken by cgo setenv CL.
* spec: clarify semantics of integer division,
	clarify semantics of range clause,
	fix error in production syntax,
	narrow syntax for expression and select statements,
	newlines cannot be used inside a char or "" string literal,
	restricted expressions may still be parenthesized.
* strings: make Reader.Read use copy instead of an explicit loop.
* syscall: add Windows file mapping functions and constants (thanks Evan Shaw),
	add IPv6 scope zone ID support (thanks Mikio Hara),
	add netlink support for linux/386, linux/amd64, linux/arm (thanks Mikio Hara),
	add Sendfile,
	adjust freebsd syscalls.master URL properly (thanks Mikio Hara),
	change Overlapped.HEvent type, it is a handle (thanks Alex Brainman).
* syslog: fix skipping of net tests (thanks Gustavo Niemeyer).
* template: support string, int and float literals (thanks Gustavo Niemeyer).
* xml: fix reflect error.

2011-04-27 (base for r57)

This snapshot includes revisions to the reflect package to make it more
efficient, after the last weekly's major API update. If your code uses reflect
it may require further changes, not all of which can be made automatically by
gofix. For the full details of the change, see
	http://codereview.appspot.com/4435042
Also, the Typeof and NewValue functions have been renamed to TypeOf and ValueOf.

Other changes:
* 5c: make alignment rules match 5g, just like 6c matches 6g.
* 8g, 8l: fix "set but not used" gcc error (thanks Fazlul Shahriar).
* all-qemu.bash: remove DISABLE_NET_TESTS.
* build: remove DISABLE_NET_TESTS.
* builder: build multiple targets in parallel.
* cgo: avoid "incompatible pointer type" warning (thanks Albert Strasheim).
* codereview: add 'hg undo' command, various other fixes.
* compress/flate: dictionary support.
* compress/zlib: add FDICT flag in Reader/Writer (thanks Ross Light).
* container/heap: fix circular dependency in test.
* crypto/openpgp: better handling of keyrings.
* crypto/rsa: support > 3 primes.
* crypto/tls: add server-side OCSP stapling support.
* crypto/x509: memorize chain building.
* crypto: move certificate verification into x509.
* dashboard: build most recent revision first.
* doc: mention make version in install.html.
* expvar: add Func for functions that return values that are JSON marshalable.
* fmt: decrease recursion depth in tests to permit them to run under gccgo,
	tweak the doc for %U.
* gc: allow complex types to be receiver types (thanks Robert Hencke),
	correct handling of unexported method names in embedded interfaces,
	explain why invalid receiver types are invalid,
	fix copy([]int, string) error message (thanks Quan Yong Zhai),
	fix 'invalid recursive type' error (thanks Lorenzo Stoakes),
	many bug fixes.
* go spec: attempt at clarifying language for "append",
	for map types, mention indexing operations.
* go/types: update for export data format change.
* gob: fix handling of indirect receivers for GobDecoders,
	fix trivial bug in map marshaling,
	have errorf always prefix the message with "gob: ",
	test case for indirection to large field,
	use new Implements and AssignableTo methods in reflect,
	when decoding a string, allocate a string, not a []byte.
* gobuilder: permit builders of the form goos-goarch-foo,
	respect MAKEFLAGS if provided (thanks Dave Cheney).
* godoc: use "search" input type for search box (thanks Dmitry Chestnykh).
* gofix: add support for reflect rename.
* gofmt: add -d (diff) (thanks David Crawshaw),
	don't crash when rewriting nil interfaces in AST,
	exclude test case that doesn't compile w/o errors,
	gofmt test harness bug fix.
* goinstall: support GOPATH; building and installing outside the Go tree,
	support building executable commands.
* gopack: fix prefix bug,
	preserve safe flag when not adding unsafe objects to archive.
* gotest: add timing, respect $GOARCH,
	generate gofmt-compliant code.
* http/cgi: copy some PATH environment variables to child,
	improve Location response handling,
	pass some default environment variables.
* http/fcgi: new package (thanks Evan Shaw).
* http: add NewRequest helper,
	add MultipartForm, ParseMultipartForm, and FormFile to Request,
	be clear when failing to connect to a proxy,
	bug fixes and new tests,
	consume request bodies before replying,
	don't quote Set-Cookie Domain and Path (thanks Petar Maymounkov),
	fix IP confusion in TestServerTimeouts,
	handler timeout support,
	ServerConn, ClientConn: add real Close (thanks Petar Maymounkov),
	make Client redirect policy configurable,
	put a limit on POST size,
	reverse proxy handler.
* image/jpeg: add an encoder,
	decode to a YCbCr image instead of an RGBA image.
* ioutil: add Discard.
* json: keep track of error offset in SyntaxError.
* ld: defend against some broken object files,
	do not emit empty dwarf pe sections (thanks Alex Brainman),
	fix 6l -d on Mac, diagnose invalid use of -d,
	fix Plan 9 symbol table (thanks Anthony Martin),
	remove MachoLoad limit.
* make: prevent rm provoking 'text file busy' errors (thanks Lorenzo Stoakes).
* mime/multipart: add ReadForm for parsing multipart forms,
	limit line length to prevent abuse.
* mime: RFC 2231 continuation / non-ASCII support,
	bunch more tests, few minor parsing fixes.
* misc/goplay: fix Tab and Shift+Enter in Firefox (thanks Dmitry Chestnykh).
* net: disable one more external network test,
	fix EAI_BADFLAGS error on freebsd (thanks Mikio Hara),
	fix ParseIP (thanks Quan Yong Zhai),
	fix dialgoogle_test.go (thanks Quan Yong Zhai),
	try /etc/hosts before loading DNS config (thanks Dmitry Chestnykh),
	use C library resolver on FreeBSD, Linux, OS X / amd64, 386.
* os/user: new package to look up users.
* os: Open with O_APPEND|O_CREATE to append on Windows (thanks Alex Brainman),
	fix race in ReadAt/WriteAt on Windows (thanks Alex Brainman),
	turn EPIPE exit into panic.
* rc/env.bash: fix to build on windows under msys (thanks Joe Poirier).
* reflect: allow Slice of arrays,
	fix Copy of arrays (thanks Gustavo Niemeyer),
	require package qualifiers to match during interface check,
	add Type.Implements, Type.AssignableTo, Value.CallSlice,
	make Set match Go.
* rpc: allow the first argument of a method to be a value rather than a pointer,
	run benchmarks over HTTP as well as direct network connections.
* run.bash: remove redundant rebuilds.
* runtime/plan9: warning remediation for Plan 9 (thanks Lucio De Re),
* runtime: many bug fixes,
	fix GOMAXPROCS vs garbage collection bug (thanks Dmitriy Vyukov),
	fix mkversion to output valid path separators (thanks Peter Mundy),
	more graceful out-of-memory crash,
	require package qualifiers to match during interface check,
	skip functions with no lines when building src line table,
	turn "too many EPIPE" into real SIGPIPE.
* src/pkg: make package doc comments consistently start with "Package foo".
* syscall: Madvise and Mprotect for Linux (thanks Albert Strasheim),
	Mlock, Munlock, Mlockall, Munlockall on Linux (thanks Albert Strasheim),
	add BPF support for darwin/386, darwin/amd64 (thanks Mikio Hara),
	correct Windows CreateProcess input parameters (thanks Alex Brainman),
	fix Ftruncate under linux/arm5 (thanks Dave Cheney),
	permit StartProcess to hide the executed program on windows (thanks Vincent Vanackere).
* test/bench: update timings; moving to new machine.
* time: support Irix 6 location for zoneinfo files.
* tutorial: modernize the definition and use of Open,
	replace the forever loops with finite counts in sieve programs.
* websocket: include *http.Request in websocket.Conn.
* xml: Parser hook for non-UTF-8 charset converters.

2011-04-13

weekly.2011-04-13

This weekly snapshot includes major changes to the reflect package and the
os.Open function.  Code that uses reflect or os.Open will require updating,
which can be done mechanically using the gofix tool.

The reflect package's Type and Value types have changed.  Type is now an
interface that implements all the possible type methods.  Instead of a type
switch on a reflect.Type t, switch on t.Kind().  Value is now a struct value
that implements all the possible value methods.  Instead of a type switch on a
reflect.Value v, switch on v.Kind().  See the change for the full details:
        http://code.google.com/p/go/source/detail?r=843855f3c026

The os package's Open function has been replaced by three functions:
        OpenFile(name, flag, perm) // same as old Open
        Open(name) // same as old Open(name, O_RDONLY, 0)
        Create(name) // same as old Open(name, O_RDWR|O_TRUNC|O_CREAT, 0666)

To update your code to use the new APIs, run "gofix path/to/code".  Gofix can't
handle all situations perfectly, so read and test the changes it makes before
committing them.

Other changes:
* archive/zip: add func OpenReader, type ReadCloser (thanks Dmitry Chestnykh).
* asn1: Implement correct marshaling of length octets (thanks Luit van Drongelen).
* big: don't crash when printing nil ints.
* bufio: add ReadLine, to replace encoding/line.
* build: make the build faster, quieter.
* codereview: automatically port old diffs forward,
        drop Author: line on self-clpatch,
        recognize code URL without trailing slash.
* crypto/block: remove deprecated package.
* crypto/des: new package implementating DES and TDEA (thanks Yasuhiro Matsumoto).
* crypto/ecdsa, crypto/rsa: use io.ReadFull to read from random source (thanks Dmitry Chestnykh).
* crypto/rsa: add 3-prime support,
        add support for precomputing CRT values,
        flip the CRT code over so that it matches PKCS#1.
* crypto/x509: expose complete DER data (thanks Mikkel Krautz).
* doc: new "Functions" codewalk (thanks John DeNero).
* doc/roadmap: add sections on tools, packages.
* fmt: allow %U for unsigned integers.
* gc: fixes and optimizations.
* go/printer, gofmt: use blank to separate import rename from import path.
* go/scanner: better TokenString output.
* go/types: new Go type hierarchy implementation for AST.
* godashboard: show packages at launchpad.net (thanks Gustavo Niemeyer).
* gofix: add -diff, various fixes and helpers.
* gotest: fix a bug in error handling,
        fixes for [^.]_test file pattern (thanks Peter Mundy),
        handle \r\n returned by gomake on Windows (thanks Alex Brainman).
* gotype: use go/types GcImporter.
* govet: make name-matching for printf etc. case-insensitive.
* http: allow override of Content-Type for ServeFile,
        client gzip support,
        do not listen on 0.0.0.0 during test,
        flesh out server Expect handling + tests.
* image/ycbcr: new package.
* image: allow "?" wildcards when registering image formats.
* io: fixes for Read with n > 0, os.EOF (thanks Robert Hencke).
* ld: correct Plan 9 compiler warnings (thanks Lucio De Re),
        ELF header function declarations (thanks Lucio De Re),
        fix Mach-O X86_64_RELOC_SIGNED relocations (thanks Mikkel Krautz),
        fix Mach-O bss bug (thanks Mikkel Krautz),
        fix dwarf decoding of strings for struct's fieldnames (thanks Luuk van Dijk),
        fixes and optimizations (25% faster).
* log: generalize getting and setting flags and prefix.
* misc/cgo/life: enable build and test on Windows (thanks Alex Brainman).
* misc/vim: add plugin with Fmt command (thanks Dmitry Chestnykh),
        update type highlighting for new reflect package.
* net: disable multicast tests by default (thanks Dave Cheney),
        sort records returned by LookupMX (thanks Corey Thomasson).
* openpgp: Fix improper := shadowing (thanks Gustavo Niemeyer).
* os: rename Open to OpenFile, add new Open, Create,
        fix Readdir in Plan 9 (thanks Fazlul Shahriar).
* os/inotify: use _test for test files, not _obj.
* pkg/path: enable tests on Windows (thanks Alex Brainman).
* reflect: new Type and Value API.
* src/pkg/Makefile: trim per-directory make output except on failure.
* syscall: Add DT_* and MADV_* constants on Linux (thanks Albert Strasheim),
        add Mmap, Munmap on Linux, FreeBSD, OS X,
        fix StartProcess in Plan 9 (thanks Fazlul Shahriar),
        fix Windows Signaled (thanks Alex Brainman).
* test/bench: enable build and test on Windows (thanks Alex Brainman).

2011-04-04

This snapshot includes changes to the net package. Your code will require
changes if it uses the Dial or LookupHost functions.

The laddr argument has been removed from net.Dial, and the cname return value
has been removed from net.LookupHost. The new net.LookupCNAME function can be
used  to find the canonical host for a given name.  You can update your
networking code with gofix.

The gotest shell script has been replaced by a Go program, making testing
significantly faster.

Other changes:
* asn1: extensions needed for parsing Kerberos.
* bufio: Write and WriteString cleanup (thanks Evan Shaw).
* bytes, strings: simplify Join (thanks Evan Shaw).
* crypto/cipher: bad CTR IV length now triggers panic.
* crypto/tls: extend NPN support to the client,
	added X509KeyPair function to parse a Certificate from memory.
* crypto/x509: parse Extended Key Usage extension (thanks Mikkel Krautz).
* debug/gosym: remove need for gotest to run preparatory commands.
* fmt: implement precision (length of input) values for %q: %.20q.
* go/parser: fix scoping for local type declarations (thanks Roger Peppe),
	package name must not be the blank identifier.
* go/printer, gofmt: remove special case for multi-line raw strings.
* gopack: add P flag to remove prefix from filename information.
* gotest: add -test.timeout option,
	replace the shell script with the compiled program written in go,
	execute gomake properly on Windows (thanks Alex Brainman).
* gotry: move into its own directory, separate from gotest.
* gotype: support for more tests, added one new test.
* http: add Transport.MaxIdleConnsPerHost,
	use upper case hex in URL escaping (thanks Matt Jones).
* httptest: add NewTLSServer.
* misc/kate: reorganize, remove closed() (thanks Evan Shaw).
* misc/notepadplus: support for notepad++ (thanks Anthony Starks).
* net: implement non-blocking connect (thanks Alexey Borzenkov).
* os: fix MkdirAll("/thisdoesnotexist") (thanks Albert Strasheim),
	Plan 9 support (thanks Yuval Pavel Zholkover),
	add a few missing Plan 9 errors (thanks Andrey Mirtchovski),
	fix FileInfo.Name returned by Stat (thanks David Forsythe).
* path/filepath.Glob: add an error return,
	don't drop known matches on error.
* path/filepath: add support for Plan 9 (thanks Andrey Mirtchovski).
* scanner: treat line comments like in Go.
* syscall: Plan 9 support (thanks Yuval Pavel Zholkover),
	StartProcess Chroot and Credential (thanks Albert Strasheim),
	add BPF support for freebsd/386, freebsd/amd64 (thanks Mikio Hara),
	make [Raw]Syscall6 pass 6th arg on linux/386 (thanks Evan Shaw).

2011-03-28

This weekly release includes improved support for testing.

Memory and CPU profiling is now available via the gotest tool. Gotest will
produce memory and CPU profiling data when invoked with the -test.memprofile
and -test.cpuprofile flags. Run "godoc gotest" for details.

We have also introduced a way for tests to run quickly when an exhaustive test
is unnecessary. Gotest's new -test.short flag in combination with the testing
package's new Short function allows you to write tests that can be run in
normal or "short" mode; short mode is now used by all.bash to reduce
installation time.
The Makefiles know about the flag - you can just run "make testshort".

Other changes:
* .hgignore: Ignore all goinstalled packages (thanks Evan Shaw).
* build: add all-qemu.bash, handful of arm fixes,
        add support for SWIG, and add two SWIG examples,
        diagnose Ubuntu's buggy copy of gold,
        handle broken awk in version.bash (thanks Dave Cheney),
        reenable clean.bash without gomake (thanks Gustavo Niemeyer).
* cgo: fix index-out-of-bounds bug.
* codereview: permit CLs of the form weekly.DATE
* crypto/ecdsa: truncate hash values.
* crypto/openpgp: add DSA signature support.
* dashboard: remove old python/bash builder, update README.
* doc: explain release and weekly tags in install.html.
* exec: document dir option for Run (thanks Gustavo Niemeyer).
* flag: document Nflag function (thanks Fazlul Shahriar).
* gc: remove interim ... error which rejects valid code.
* go/ast: implemented NewPackage,
        merge CaseClause and TypeCaseClause.
* go/parser: fix memory leak by making a copy of token literals,
        resolve identifiers properly.
* go/printer, gofmt: avoid exponential layout algorithm,
        gofmt: simplify struct formatting and respect line breaks.
* go/scanner: to interpret line comments with Windows filenames (thanks Alex Brainman).
* go/token: use array instead of map for token->string table.
* gob: optimizations to reduce allocations,
        use pointers in bootstrapType so interfaces behave properly.
* gobuilder: recognize CLs of the form weekly.DATE.
* godefs: handle volatile.
* godoc: add -template flag to specify custom templates,
        fix path problem for windows (thanks Yasuhiro Matsumoto).
* gofix: httpserver - rewrite rw.SetHeader to rw.Header.Set.
* gofmt: add profiling flag.
* gopprof: fix bug: do not rotate 180 degrees for large scrolls,
        update list of memory allocation functions.
* gotest: fix gofmt issue in generated _testmain.go.
* http: add NewProxyClientConn,
        avoid crash when asked for multiple file ranges,
        don't chunk 304 responses,
        export Transport, add keep-alive support.
* ld: return > 0 exit code on unsafe import.
* misc/bbedit: remove closed keyword (thanks Anthony Starks).
* misc/emacs: gofmt: don't clobber the current buffer on failure.
* misc/vim: remove 'closed' as a builtin function.
* net: add FileConn, FilePacketConn, FileListener (thanks Albert Strasheim),
        don't force epoll/kqueue to wake up in order to add new events,
        let OS-specific AddFD routine wake up polling thread,
        use preallocated buffer for epoll and kqueue/kevent.
* path/filepath: add EvalSymlinks function,
        fix TestEvalSymlinks when run under symlinked GOROOT.
* path: work for windows (thanks Yasuhiro Matsumoto).
* rpc: increase server_test timeout (thanks Gustavo Niemeyer),
        optimizations to reduce allocations.
* runtime: fix darwin/amd64 thread VM footprint (thanks Alexey Borzenkov),
        fix gdb support for goroutines,
        more stack split fixes,
        os-specific types and code for setitimer,
        update defs.h for freebsd-386 (thanks Devon H. O'Dell).
* strings: Map: avoid allocation when string is unchanged.
* syscall: GetsockoptInt (thanks Albert Strasheim),
        StartProcess fixes for windows (thanks Alex Brainman),
        permit non-blocking syscalls,
        rename from .sh to .pl, because these files are in Perl.
* test: enable tests using v, ok := <-ch syntax (thanks Robert Hencke).
* time: give a helpful message when we can't set the time zone for testing.
        isolate syscall reference in sys.go.

2011-03-15

This week's release introduces a new release tagging scheme. We intend to
continue with our weekly releases, but have renamed the existing tags from
"release" to "weekly". The "release" tag will now be applied to one hand-picked
stable release each month or two.

The revision formerly tagged "release.2011-03-07.1" (now "weekly.2011-03-07.1")
has been nominated our first stable release, and has been given the tag
"release.r56". As we tag each stable release we will post an announcement to
the new golang-announce mailing list:
  http://groups.google.com/group/golang-announce

You can continue to keep your Go installation updated using "hg update
release", but now you should only need to update once we tag a new stable
release, which we will announce here. If you wish to stay at the leading edge,
you should switch to the weekly tag with "hg update weekly".


This weekly release includes significant changes to the language spec and the
http, os, and syscall packages. Your code may need to be changed. It also
introduces the new gofix tool.

The closed function has been removed from the language. The syntax for channel
receives has been changed to return an optional second value, a boolean value
indicating whether the channel is closed. This code:
	v := <-ch
	if closed(ch) {
		// channel is closed
	}
should now be written as:
	v, ok := <-ch
	if !ok {
		// channel is closed
	}

It is now illegal to declare unused labels, just as it is illegal to declare
unused local variables.

The new gofix tool finds Go programs that use old APIs and rewrites them to use
newer ones.  After you update to a new Go release, gofix helps make the
necessary changes to your programs. Gofix will handle the http, os, and syscall
package changes described below, and we will update the program to keep up with
future changes to the libraries.

The Hijack and Flush methods have been removed from the http.ResponseWriter
interface and are accessible via the new http.Hijacker and http.Flusher
interfaces. The RemoteAddr and UsingTLS methods have been moved from
http.ResponseWriter to http.Request.

The http.ResponseWriter interface's SetHeader method has been replaced by a
Header() method that returns the response's http.Header. Caller code needs to
change. This code:
	rw.SetHeader("Content-Type", "text/plain")
should now be written as:
	rw.Header().Set("Content-Type", "text/plain")
The os and syscall packages' StartProcess functions now take their final three
arguments as an *os.ProcAttr and *syscall.ProcAttr values, respectively. This
code:
	os.StartProcess(bin, args, env, dir, fds)
should now be written as:
	os.StartProcess(bin, args, &os.ProcAttr{Files: fds, Dir: dir, Env: env})

The gob package will now encode and decode values of types that implement the
gob.GobEncoder and gob.GobDecoder interfaces. This allows types with unexported
fields to transmit self-consistent descriptions; one instance is big.Int and
big.Rat.

Other changes:
* 5l, 6l, 8l: reduce binary size about 40% by omitting symbols for type, string, go.string.
* 5l, 8l: output missing section symbols (thanks Anthony Martin).
* 6l, 8l: fix gdb crash.
* Make.cmd: also clean _test* (thanks Gustavo Niemeyer).
* big: implemented custom Gob(En/De)coder for Int type.
* build: remove duplicate dependency in Make.cmd (thanks Robert Hencke),
        run gotest in misc/cgo/test.
* codereview.py: don't suggest change -d if user is not CL author (thanks Robert Hencke).
* compress/lzw: benchmark a range of input sizes.
* crypto/ecdsa: add package.
* crypto/elliptic: add the N value of each curve.
* crypto/openpgp: bug fixes and fix misnamed function.
* crypto/tls: fix compile error (thanks Dave Cheney).
* doc: Effective Go: some small cleanups,
        update FAQ. hello, world is now 1.1MB, down from 1.8MB,
        update codelab wiki to fix template.Execute argument order.
* flag: visit the flags in sorted order, for nicer messages.
* fmt: do not export EOF = -1.
* fmt: make ScanState.Token more general (thanks Roger Peppe).
* gc: diagnose unused labels,
        fix handling of return values named _,
        include all dependencies in export metadata,
        make unsafe.Pointer its own kind of type, instead of an equivalent to *any.
* go/ast, go/parser: populate identifier scopes at parse time.
* go/ast: add FileSet parameter to ast.Print and ast.Fprint.
* go/parser: first constant in a constant declaration must have a value.
* gob: efficiency and reliability fixes.
* gofmt: remove -trace and -ast flags.
* goinstall: handle $(GOOS) and $(GOARCH) in filenames,
        handle .c files with gc when cgo isn't used, and
        handle .s files with gc (thanks Gustavo Niemeyer).
* gopack: omit time stamps, makes output deterministic.
* gotype: commandline tool to typecheck go programs.
* govet: handle '*' in print format strings.
* hash: new FNV-1a implementation (thanks Pascal S. de Kloe).
* http/cgi: child support (e.g. Go CGI under Apache).
* http: adapt Cookie code to follow IETF draft (thanks Petar Maymounkov),
        add test for fixed HTTP/1.0 keep-alive issue,
        don't hit external network in client_test.go,
        fix transport crash when request URL is nil,
        rename interface Transport to RoundTripper,
        run tests even with DISABLE_NET_TESTS=1.
* httptest: default the Recorder status code to 200 on a Write.
* io/ioutil: clean-up of ReadAll and ReadFile.
* ioutil: add NopCloser.
* ld: preserve symbol sizes during data layout.
* lib9, libmach: Change GOOS references to GOHOSTOS (thanks Evan Shaw).
* libmach: correct string comparison to revive 6cov on darwin (thanks Dave Cheney).
* misc/vim: Add indent script for Vim (thanks Ross Light).
* net, os, syslog: fixes for Solaris support.
* net: don't loop to drain wakeup pipe.
* nm: document -S flag.
* openpgp: add PublicKey KeyId string accessors.
* rpc: optimizations, add benchmarks and memory profiling,
        use httptest.Server for tests (thanks Robert Hencke).
* runtime: reduce lock contention via wakeup on scheduler unlock,
        scheduler, cgo reorganization,
        split non-debugging malloc interface out of debug.go into mem.go.
* spec: clarify return statement rules.
* strings: add IndexRune tests, ASCII fast path,
        better benchmark names; add BenchmarkIndex.
* syscall: implement Mount and Unmount for linux,
        implement Reboot for linux.
* time: fix Time.ZoneOffset documentation (thanks Peter Mundy).
* tls: move PeerCertificates to ConnectionState.

2011-03-07 (base for r56)

This release includes changes to the reflect and path packages.
Code that uses reflect or path may need to be updated.

The reflect package's Value.Addr method has been renamed to Value.UnsafeAddr.
Code that uses the Addr method will have to call UnsafeAddr instead.

The path package has been split into two packages: path and path/filepath.
Package path manipulates slash-separated paths, regardless of operating system.
Package filepath implements the local operating system's native file paths.
OS-specific functioanlity in pacakge path, such as Walk, moved to filepath.

Other changes:
* build: fixes and simplifications (thanks Dave Cheney),
        move $GOBIN ahead of /bin, /usr/bin in build $PATH.
* bzip2: speed up decompression.
* cgo: fix dwarf type parsing (thanks Gustavo Niemeyer),
        put temporary source files in _obj (thanks Roger Peppe),
        fix bug involving 0-argument callbacks.
* compress/lzw: optimizations.
* doc: add FAQ about "implements",
        add FAQ about large binaries ,
        add FAQ about stack vs heap allocation,
        add internationalization to roadmap,
        describe platform-specific conventions in code.html.
* fmt: allow recursive calls to Fscan etc (thanks Roger Peppe),
        make %#p suppress leading 0x.
* gc, gopack: add some missing flags to the docs.
* gc: fix init of packages named main (thanks Gustavo Niemeyer),
* gob: make recursive map and slice types work, and other fixes.
        tentative support for GobEncoder/GobDecoder interfaces.
* gobuilder: add -package flag to build external packages and -v for verbose.
* gofmt: exclude test file that is not legal Go.
* goinstall: protect against malicious filenames (thanks Roger Peppe).
* goyacc: provide -p flag to set prefix for names, documentation update.
* http: add cookie support (thanks Petar Maymounkov),
        allow handlers to send non-chunked responses,
        export ParseHTTPVersion,
        expose Client's Transport,
        use WriteProxy,
        rename ClientTransport to Transport.
* http/cgi: new package.
* http/httptest: new package.
* image: add a decoding test for common file formats.
* io/ioutil: add TempDir.
* mime/multipart: Header changed from map to MIMEHeader
* path/filepath: new OS-specific path support (thanks Gustavo Niemeyer).
* reflect: add PtrTo, add Value.Addr (old Addr is now UnsafeAddr).
* runtime: use kernel-supplied compare-and-swap on linux/arm.
* spec: minor clarification of scope rule for functions.
* sync/atomic: new package to expose atomic operations.
* syscall: regenerate zerrors_freebsd_amd64.go (thanks Mikio Hara),
        work around FreeBSD execve kernel bug (thanks Devon H. O'Dell).
* template: document the delimiters.
* testing: run GC before each benchmark run (thanks Roger Peppe).
* unsafe: fix the documentation.
* websocket: use httptest.Server for tests (thanks Robert Hencke).
* xml: permit nested directives (thanks Chris Dollin).

2011-02-24

This release includes changes to the http package and a small language change.
Your code will require changes if it manipulates http Headers or omits the
condition in if statements.

The new http.Header type replaces map[string]string in the Header and Trailer
fields of http.Request and http.Response.
A Header value can be manipulated via its Get, Set, Add, and Del methods.
See http://golang.org/pkg/http/#Header

The condition is now mandatory in if statements.
Previously it would default to true, as in switch and for statements.
This code is now illegal:
	if x := foo(); {
		// code that is always executed
	}
The same effect can be achieved like this:
	if x := foo(); true {
		// code
	}
Or, in a simpler form:
	{
		x := foo()
		// code
	}

Other changes:
* 6l: new -Hwindowsgui flag allows to build windows gui pe (thanks Alex Brainman),
	pe fixes (thanks Wei Guangjing).
* 8l, 6l: allow for more os threads to be created on Windows (thanks Alex Brainman),
* build: reduce the use of subshells in recursive make, and
	remove unused NaCl conditional from make.bash (thanks Dave Cheney).
* codereview: fix clpatch with empty diffs (thanks Gustavo Niemeyer).
* compress/bzip2: add package.
* compress/lzw: implement a decoder.
* crypto/openpgp: add package.
* crypto/rand: add read buffer to speed up small requests (thanks Albert Strasheim).
* crypto/rsa: left-pad OAEP results when needed.
* crypto/tls: make protocol negotiation failure fatal.
* fmt: stop giving characters to the Scan method of Scanner when we hit a newline in Scanln.
* gc: interface error message fixes,
	make string const comparison unsigned (thanks Jeff R. Allen).
* go spec: minor clarification on channel types.
* go/ast, parser: condition in if statement is mandatory.
* gob: compute information about a user's type once.
	protect against pure recursive types.
* godoc: accept symbolic links as path names provided to -path,
	add robots.txt, log errors when reading filter files.
* html: tokenize HTML comments.
* http: add proxy support (thanks Yasuhiro Matsumoto),
	implement with net/textproto (thanks Petar Maymounkov),
	send full URL in proxy requests,
	introduce start of Client and ClientTransport.
* image/png: support for more formats (thanks Mikael Tillenius).
* json: only use alphanumeric tags,
	use base64 to encode []byte (thanks Roger Peppe).
* ld: detect stack overflow due to NOSPLIT, drop rpath, support weak symbols.
* misc/dashboard/builder: talk to hg with utf-8 encoding.
* misc/dashboard: notify golang-dev on build failure.
* net: *netFD.Read to return os.EOF on eof under windows (thanks Alex Brainman),
	add IPv4 multicast to UDPConn (thanks Dave Cheney),
	more accurate IPv4-in-IPv6 API test (thanks Mikio Hara),
	reject invalid net:proto network names (thanks Olivier Antoine).
* netchan: allow use of arbitrary connections (thanks Roger Peppe).
* os: add ENODATA and ENOTCONN (thanks Albert Strasheim).
* reflect: add a couple of sentences explaining how Methods operate,
	add a secret method to ArrayOrSliceType to ensure it's only implemented by arrays and slices,
	add pointer word to CommonType (placeholder for future work).
* runtime-gdb.py: gdb pretty printer for go strings properly handles length.
* runtime: various bug fixes, more complete stack traces,
	record $GOROOT_FINAL for runtime.GOROOT.
* spec: delete incorrect mention of selector working on pointer to interface type.
* sync: add Cond (thanks Gustavo Niemeyer).
* syscall: add MCL_* flags for mlockall (thanks Albert Strasheim),
	implement chmod() for win32 (thanks Yasuhiro Matsumoto).
* test/bench: update timings for new GC.
* testing: rename cmdline flags to avoid conflicts (thanks Gustavo Niemeyer).
* textproto: introduce Header type (thanks Petar Maymounkov).
* websocket: use new interface to access Header.

2011-02-15

This release includes changes to the io, os, and template packages.
You may need to update your code.

The io.ReadByter and io.ReadRuner interface types have been renamed to
io.ByteReader and io.RuneReader respectively.

The os package's ForkExec function has been superseded by the new StartProcess
function and an API built around the Process type:
	http://golang.org/pkg/os/#Process

The order of arguments to template.Execute has been reversed to be consistent
the notion of "destination first", as with io.Copy, fmt.Fprint, and others.

Gotest now works for package main in directories using Make.cmd-based makefiles.

The memory allocation runtime problems from the last release are not completely
fixed.  The virtual memory exhaustion problems encountered by people using
ulimit -v have been fixed, but there remain known garbage collector problems
when using GOMAXPROCS > 1.

Other changes:
* 5l: stopped generating 64-bit eor.
* 8l: more work on plan9 support (thanks Yuval Pavel Zholkover).
* archive/zip: handle files with data descriptors.
* arm: working peep-hole optimizer.
* asn1: marshal true as 255, not 1.
* buffer.go: minor optimization, expanded comment.
* build: drop syslog on DISABLE_NET_TESTS=1 (thanks Gustavo Niemeyer),
       allow clean.bash to work on fresh checkout,
       change "all tests pass" message to be more obvious,
       fix spaces in GOROOT (thanks Christopher Nielsen).
* bytes: fix bug in buffer.ReadBytes (thanks Evan Shaw).
* 5g: better int64 code,
       don't use MVN instruction.
* cgo: don't run cgo when not compiling (thanks Gustavo Niemeyer),
       fix _cgo_run timestamp file order (thanks Gustavo Niemeyer),
       fix handling of signed enumerations (thanks Gustavo Niemeyer),
       os/arch dependent #cgo directives (thanks Gustavo Niemeyer),
       rename internal f to avoid conflict with possible C global named f.
* codereview: fix hgpatch on windows (thanks Yasuhiro Matsumoto),
       record repository, base revision,
       use cmd.communicate (thanks Yasuhiro Matsumoto).
* container/ring: replace Iter() with Do().
* crypto/cipher: add resync open to OCFB mode.
* crypto/openpgp/armor: bug fixes.
* crypto/openpgp/packet: new subpackage.
* crypto/tls: load a chain of certificates from a file,
       select best cipher suite, not worst.
* crypto/x509: add support for name constraints.
* debug/pe: ImportedSymbols fixes (thanks Wei Guangjing).
* doc/code: update to reflect that package names need not be unique.
* doc/codelab/wiki: a bunch of fixes (thanks Andrey Mirtchovski).
* doc/install: update for new versions of Mercurial.
* encoding/line: fix line returned after EOF.
* flag: allow hexadecimal (0xFF) and octal (0377) input for integer flags.
* fmt.Scan: scan binary-exponent floating format, 2.4p-3,
       hexadecimal (0xFF) and octal (0377) integers.
* fmt: document %%; also %b for floating point.
* gc, ld: detect stale or incompatible object files,
       package name main no longer reserved.
* gc: correct receiver in method missing error (thanks Lorenzo Stoakes),
       correct rounding of denormal constants (thanks Eoghan Sherry),
       select receive bug fix.
* go/printer, gofmt: smarter handling of multi-line raw strings.
* go/printer: line comments must always end in a newline,
       remove notion of "Styler", remove HTML mode.
* gob: allow Decode(nil) and have it just discard the next value.
* godoc: use IsAbs to test for absolute paths (fix for win32) (thanks Yasuhiro Matsumoto),
       don't hide package lookup error if there's no command with the same name.
* gotest: enable unit tests for main programs.
* http: add Server type supporting timeouts,
       add pipelining to ClientConn, ServerConn (thanks Petar Maymounkov),
       handle unchunked, un-lengthed HTTP/1.1 responses.
* io: add RuneReader.
* json: correct Marshal documentation.
* netchan: graceful handling of closed connection (thanks Graham Miller).
* os: implement new Process API (thanks Alex Brainman).
* regexp tests: make some benchmarks more meaningful.
* regexp: add support for matching against text read from RuneReader interface.
* rpc: make more tolerant of errors, properly discard values (thanks Roger Peppe).
* runtime: detect failed thread creation on Windows,
       faster allocator, garbage collector,
       fix virtual memory exhaustion,
       implemented windows console ctrl handler (SIGINT) (thanks Hector Chu),
       more detailed panic traces, line number work,
       improved Windows callback handling (thanks Hector Chu).
* spec: adjust notion of Assignability,
       allow import of packages named main,
       clarification re: method sets of newly declared pointer types,
       fix a few typos (thanks Anthony Martin),
       fix Typeof() return type (thanks Gustavo Niemeyer),
       move to Unicode 6.0.
* sync: diagnose Unlock of unlocked Mutex,
       new Waitgroup type (thanks Gustavo Niemeyer).
* syscall: add SetsockoptIpMreq (thanks Dave Cheney),
       add sockaddr_dl, sysctl with routing message support for darwin, freebsd (thanks Mikio Hara),
       do not use NULL for zero-length read, write,
       implement windows version of Fsync (thanks Alex Brainman),
       make ForkExec acquire the ForkLock under windows (thanks Hector Chu),
       make windows API return errno instead of bool (thanks Alex Brainman),
       remove obsolete socket IO control (thanks Mikio Hara).
* template: add simple formatter chaining (thanks Kyle Consalus),
       allow a leading '*' to indirect through a pointer.
* testing: include elapsed time in test output
* windows: replace remaining __MINGW32__ instances with _WIN32 (thanks Joe Poirier).

2011-02-01

This release includes significant changes to channel operations and minor
changes to the log package. Your code will require modification if it uses
channels in non-blocking communications or the log package's Exit functions.

Non-blocking channel operations have been removed from the language.
The equivalent operations have always been possible using a select statement
with a default clause.  If a default clause is present in a select, that clause
will execute (only) if no other is ready, which allows one to avoid blocking on
a communication.

For example, the old non-blocking send operation,

	if ch <- v {
		// sent
	} else {
		// not sent
	}

should be rewritten as,

	select {
	case ch <- v:
		// sent
	default:
		// not sent
	}

Similarly, this receive,

	v, ok := <-ch
	if ok {
		// received
	} else {
		// not received
	}

should be rewritten as,

	select {
	case v := <-ch:
		// received
	default:
		// not received
	}

This change is a prelude to redefining the 'comma-ok' syntax for a receive.
In a later release, a receive expression will return the received value and an
optional boolean indicating whether the channel has been closed. These changes
are being made in two stages to prevent this semantic change from silently
breaking code that uses 'comma-ok' with receives.
There are no plans to have a boolean expression form for sends.

Sends to a closed channel will panic immediately. Previously, an unspecified
number of sends would fail silently before causing a panic.

The log package's Exit, Exitf, and Exitln functions have been renamed Fatal,
Fatalf, and Fatalln respectively. This brings them in line with the naming of
the testing package. 

The port to the "tiny" operating system has been removed. It is unmaintained
and untested. It was a toy to show that Go can run on raw hardware and it
served its purpose. The source code will of course remain in the repository
history, so it could be brought back if needed later.

This release also changes some of the internal structure of the memory
allocator in preparation for other garbage collector changes. 
If you run into problems, please let us know.
There is one known issue that we are aware of but have not debugged yet:
	http://code.google.com/p/go/issues/detail?id=1464&.

Other changes in this release:
* 5l: document -F, force it on old ARMs (software floating point emulation)
* 6g: fix registerization of temporaries (thanks Eoghan Sherry),
        fix uint64(uintptr(unsafe.Pointer(&x))).
* 6l: Relocate CMOV* instructions (thanks Gustavo Niemeyer),
        windows/amd64 port (thanks Wei Guangjing).
* 8l: add PE dynexport, emit DWARF in Windows PE, and
        code generation fixes (thanks Wei Guangjing).
* bufio: make Flush a no-op when the buffer is empty.
* bytes: Add Buffer.ReadBytes, Buffer.ReadString (thanks Evan Shaw).
* cc: mode to generate go-code for types and variables.
* cgo: define CGO_CFLAGS and CGO_LDFLAGS in Go files (thanks Gustavo Niemeyer),
        windows/386 port (thanks Wei Guangjing).
* codereview: fix windows (thanks Hector Chu),
        handle file patterns better,
        more ASCII vs. Unicode nonsense.
* crypto/dsa: add support for DSA.
* crypto/openpgp: add s2k.
* crypto/rand: use defer to unlock mutex (thanks Anschel Schaffer-Cohen).
* crypto/rsa: correct docstring for SignPKCS1v15.
* crypto: add package, a common place to store identifiers for hash functions.
* doc/codelab/wiki: update to work with template changes, add to run.bash.
* doc/spec: clarify address operators.
* ebnflint: exit with non-zero status on error.
* encoding/base32: new package (thanks Miek Gieben).
* encoding/line: make it an io.Reader too.
* exec: use custom error for LookPath (thanks Gustavo Niemeyer).
* fmt/doc: define width and precision for strings.
* gc: clearer error for struct == struct,
        fix send precedence,
        handle invalid name in type switch,
        special case code for single-op blocking and non-blocking selects.
* go/scanner: fix build (adjust scanner EOF linecount).
* gob: better debugging, commentary,
        make nested interfaces work,
        report an error when encoding a non-empty struct with no public fields.
* godoc: full text index for whitelisted non-Go files,
        show line numbers for non-go files (bug fix).
* gofmt -r: match(...) arguments may be nil; add missing guards.
* govet: add Panic to the list of functions.
* http: add host patterns (thanks Jose Luis Vázquez González),
        follow relative redirect in Get.
* json: handle capital floating point exponent (1E100) (thanks Pieter Droogendijk).
* ld: add -I option to set ELF interpreter,
        more robust decoding of reflection type info in generating dwarf.
* lib9: update to Unicode 6.0.0.
* make.bash: stricter selinux test (don't complain unless it is enabled).
* misc/vim: Import/Drop commands (thanks Gustavo Niemeyer),
        set 'syntax sync' to a large value (thanks Yasuhiro Matsumoto).
* net: fix race condition in test,
        return cname in LookupHost.
* netchan: avoid race condition in test,
        fixed documentation for import (thanks Anschel Schaffer-Cohen).
* os: add ETIMEDOUT (thanks Albert Strasheim).
* runtime: generate Go defs for C types,
        implementation of callback functions for windows (thanks Alex Brainman),
        make Walk web browser example work (thanks Hector Chu),
        make select fairer,
        prefer fixed stack allocator over general memory allocator,
        simpler heap map, memory allocation.
* scanner: fix Position returned by Scan, Pos,
        don't read ahead in Init.
* suffixarray: use binary search for both ends of Lookup (thanks Eric Eisner).
* syscall: add missing network interface constants (thanks Mikio Hara).
* template: treat map keys as zero, not non-existent (thanks Roger Peppe).
* time: allow cancelling of After events (thanks Roger Peppe),
        support Solaris zoneinfo directory.
* token/position: added SetLinesForContent.
* unicode: update to unicode 6.0.0.
* unsafe: add missing case to doc for Pointer.

2011-01-20

This release removes the float and complex types from the language.

The default type for a floating point literal is now float64, and
the default type for a complex literal is now complex128.

Existing code that uses float or complex must be rewritten to
use explicitly sized types.

The two-argument constructor cmplx is now spelled complex.

2011-01-19

The 5g (ARM) compiler now has registerization enabled.  If you discover it
causes bugs, use 5g -N to disable the registerizer and please let us know.

The xml package now allows the extraction of nested XML tags by specifying
struct tags of the form "parent>child". See the XML documentation for an
example: http://golang.org/pkg/xml/

* 5a, 5l, 6a, 6l, 8a, 8l: handle out of memory, large allocations (thanks Jeff R. Allen).
* 8l: pe changes (thanks Alex Brainman).
* arm: fixes and improvements.
* cc: fix vlong condition.
* cgo: add complex float, complex double (thanks Sebastien Binet),
        in _cgo_main.c define all provided symbols as functions.
* codereview: don't mail change lists with no files (thanks Ryan Hitchman).
* crypto/cipher: add OFB mode.
* expvar: add Float.
* fmt: document %X of string, []byte.
* gc, runtime: make range on channel safe for multiple goroutines.
* gc: fix typed constant declarations (thanks Anthony Martin).
* go spec: adjust language for constant typing.
* go/scanner: Make Init take a *token.File instead of a *token.FileSet.
* godoc: bring back "indexing in progress" message,
        don't double HTML-escape search result snippets,
        enable qualified identifiers ("math.Sin") as query strings again,
        peephole optimization for generated HTML,
        remove tab before formatted section.
* gofmt, go/printer: do not insert extra line breaks where they may break the code.
* http: fix Content-Range and Content-Length in response (thanks Clement Skau),
        fix scheme-relative URL parsing; add ParseRequestURL,
        handle HEAD requests correctly,
        support for relative URLs.
* math: handle denormalized numbers in Frexp, Ilogb, Ldexp, and Logb (thanks Eoghan Sherry).
* net, syscall: return source address in Recvmsg (thanks Albert Strasheim).
* net: add LookupAddr (thanks Kyle Lemons),
        add unixpacket (thanks Albert Strasheim),
        avoid nil dereference if /etc/services can't be opened (thanks Corey Thomasson),
        implement windows timeout (thanks Wei Guangjing).
* netchan: do not block sends; implement flow control (thanks Roger Peppe).
* regexp: reject bare '?'. (thanks Ben Lynn)
* runtime/cgo: don't define crosscall2 in dummy _cgo_main.c.
* runtime/debug: new package for printing stack traces from a running goroutine.
* runtime: add per-pause gc stats,
        fix arm reflect.call boundary case,
        print signal information during panic.
* spec: specify that int and uint have the same size.
* syscall: correct WSTOPPED on OS X,
        correct length of GNU/Linux abstract Unix domain sockaddr,
        correct length of SockaddrUnix.
* tutorial: make stdin, stdout, stderr work on Windows.
* windows: implement exception handling (thanks Hector Chu).

2011-01-12

The json, gob, and template packages have changed, and code that uses them
may need to be updated after this release. They will no longer read or write
unexported struct fields. When marshalling a struct with json or gob the
unexported fields will be silently ignored. Attempting to unmarshal json or
gob data into an unexported field will generate an error. Accessing an
unexported field from a template will cause the Execute function to return
an error.

Godoc now supports regular expression full text search, and this
functionality is now available on golang.org.

Other changes:
* arm: initial cut at arm optimizer.
* bytes.Buffer: Fix bug in UnreadByte.
* cgo: export unsafe.Pointer as void*, fix enum const conflict,
        output alignment fix (thanks Gustavo Niemeyer).
* crypto/block: mark as deprecated.
* crypto/openpgp: add error and armor.
* crypto: add twofish package (thanks Berengar Lehr).
* doc/spec: remove Maxalign from spec.
* encoding/line: new package for reading lines from an io.Reader.
* go/ast: correct end position for Index and TypeAssert expressions.
* gob: make (en|dec)code(Ui|I)nt methods rather than functions.
* godefs: better handling of enums.
* gofmt: don't attempt certain illegal rewrites,
        rewriter matches apply to expressions only.
* goinstall: preliminary support for cgo packages (thanks Gustavo Niemeyer).
* hg: add cgo/_cgo_* to .hgignore.
* http: fix text displayed in Redirect.
* ld: fix exported dynamic symbols on Mach-O,
        permit a Mach-O symbol to be exported in the dynamic symbol table.
* log: add methods for exit and panic.
* net: use closesocket api instead of CloseHandle on Windows (thanks Alex Brainman).
* netchan: make fields exported for gob change.
* os: add Sync to *File, wraps syscall.Fsync.
* runtime/cgo: Add callbacks to support SWIG.
* runtime: Restore scheduler stack position if cgo callback panics.
* suffixarray: faster creation algorithm (thanks Eric Eisner).
* syscall: fix mksysnum_linux.sh (thanks Anthony Martin).
* time.NewTicker: panic for intervals <= 0.
* time: add AfterFunc to call a function after a duration (thanks Roger Peppe),
        fix tick accuracy when using multiple Tickers (thanks Eoghan Sherry).

2011-01-06

This release includes several fixes and changes:

* build: Make.pkg: use installed runtime.h for cgo.
* cgo: disallow use of C.errno.
* crypto/cipher: fix OCFB,
        make NewCBCEncrypter return BlockMode.
* doc: 6l: fix documentation of -L flag,
        add golanguage.ru to foreign-language doc list,
        effective go: explain the effect of repanicking better,
        update Effective Go for template API change,
        update contribution guidelines to prefix the change description.
* encoding/binary: reject types with implementation-dependent sizes (thanks Patrick Gavlin).
* exp/evalsimple fix handling of slices like s[:2] (thanks Sebastien Binet).
* fmt: made format string handling more efficient,
        normalize processing of format string.
* gc: return constant floats for parts of complex constants (thanks Anthony Martin),
        rewrite complex /= to l = l / r (thanks Patrick Gavlin),
        fix &^=.
* go/ast: provide complete node text range info.
* gob: generate a better error message in one confusing place.
* godoc: fix godoc -src (thanks Icarus Sparry).
* goinstall: add -clean flag (thanks Kyle Lemons),
        add checkout concept (thanks Caine Tighe),
        fix -u for bzr (thanks Gustavo Niemeyer).
* http: permit empty Reason-Phrase in response Status-Line.
* io: fix Copyn EOF handling.
* net: fix close of Listener (thanks Michael Hoisie).
* regexp: fix performance bug, make anchored searches fail fast,
        fix prefix bug.
* runtime/cgo: fix stackguard on FreeBSD/amd64 (thanks Anthony Martin).
* strconv: atof: added 'E' as valid token for exponent (thanks Stefan Nilsson),
        update ftoa comment for 'E' and 'G'.
* strings: fix description of FieldsFunc (thanks Roger Peppe).
* syscall: correct Linux Splice definition,
        make Access second argument consistently uint32.

2010-12-22

A small release this week. The most significant change is that some 
outstanding cgo issues were resolved.

* cgo: handle references to symbols in shared libraries.
* crypto/elliptic: add serialisation and key pair generation.
* crypto/hmac: add HMAC-SHA256 (thanks Anthony Martin).
* crypto/tls: add ECDHE support ("Elliptic Curve Diffie Hellman Ephemeral"),
        add support code for generating handshake scripts for testing.
* darwin, freebsd: ignore write failure (during print, panic).
* exp/draw: remove Border function.
* expvar: quote StringFunc output, same as String output.
* hash/crc64: fix typo in Sum.
* ld: allow relocations pointing at ELF .bss symbols, ignore stab symbols.
* misc/cgo/life: fix, add to build.
* regexp: add HasMeta, HasOperator, and String methods to Regexp.
* suffixarray: implemented FindAllIndex regexp search.
* test/bench: update numbers for regex-dna after speedup to regexp.
* time: explain the formats a little better.

2010-12-15

Package crypto/cipher has been started, to replace crypto/block.
As part of the changes, rc4.Cipher's XORKeyStream method signature has changed from
        XORKeyStream(buf []byte)
to
        XORKeyStream(dst, src []byte)
to implement the cipher.Stream interface.  If you use crypto/block, you'll need
to switch to crypto/cipher once it is complete.

Package smtp's StartTLS now takes a *tls.Config argument.

Package reflect's ArrayCopy has been renamed to Copy.  There are new functions
Append and AppendSlice.

The print/println bootstrapping functions now write to standard error.
To write to standard output, use fmt.Print[ln].

A new tool, govet, has been added to the Go distribution. Govet is a static
checker for Go programs. At the moment, and for the foreseeable future,
it only checks arguments to print calls.

The cgo tool for writing Go bindings for C code has changed so that it no
longer uses stub .so files (like cgo_stdio.so).  Cgo-based packages using the
standard Makefiles should build without any changes.  Any alternate build
mechanisms will need to be updated.

The C and Go compilers (6g, 6c, 8g, 8c, 5g, 5c) now align structs according to
the maximum alignment of the fields they contain; previously they aligned
structs to word boundaries.  This may break non-cgo-based code that attempts to
mix C and Go.

NaCl support has been removed. The recent linker changes broke NaCl support
a month ago, and there are no known users of it.
If necessary, the NaCl code can be recovered from the repository history.

* 5g/8g, 8l, ld, prof: fix output of 32-bit values (thanks Eoghan Sherry).
* [68]l and runtime: GDB support for interfaces and goroutines.
* 6l, 8l: support for linking ELF and Mach-O .o files.
* all: simplify two-variable ranges with unused second variable (thanks Ryan Hitchman).
* arm: updated soft float support.
* codereview: keep quiet when not in use (thanks Eoghan Sherry).
* compress/flate: implement Flush, equivalent to zlib's Z_SYNC_FLUSH.
* crypto/tls: use rand.Reader in cert generation example (thanks Anthony Martin).
* dashboard: fix project tag filter.
* debug/elf, debug/macho: add ImportedLibraries, ImportedSymbols.
* doc/go_mem: goroutine exit is not special.
* event.go: another print glitch from gocheck.
* gc: bug fixes,
        syntax error for incomplete chan type (thanks Ryan Hitchman).
* go/ast: fix ast.Walk.
* gob: document the byte count used in the encoding of values,
        fix bug sending zero-length top-level slices and maps,
        Register should use the original type, not the indirected one.
* godashboard: support submitting projects with non-ascii names (thanks Ryan Hitchman)
* godefs: guard against structs with pad fields
* godoc: added textual search, to enable use -fulltext flag.
* gofmt: simplify "x, _ = range y" to "x = range y".
* gopack: allow ELF/Mach-O objects in .a files without clearing allobj.
* go/token,scanner: fix comments so godoc aligns properly.
* govet: on error continue to the next file (thanks Christopher Wedgwood).
* html: improved parsing.
* http: ServeFile handles Range header for partial requests.
* json: check for invalid UTF-8.
* ld: allow .o files with no symbols,
        reading of ELF object files,
        reading of Mach-O object files.
* math: change float64 bias constant from 1022 to 1023 (thanks Eoghan Sherry),
        rename the MinFloat constant to SmallestNonzeroFloat.
* nm: silently ignore .o files in .a files.
* os: fix test of RemoveAll.
* os/inotify: new package (thanks Balazs Lecz).
* os: make MkdirAll work with symlinks (thanks Ryan Hitchman).
* regexp: speed up by about 30%; also simplify code for brackets.
* runtime/linux/386: set FPU to 64-bit precision.
* runtime: remove paranoid mapping at 0.
* suffixarray: add Bytes function.
* syscall: add network interface constants for linux/386, linux/amd64 (thanks Mikio Hara).
* syscall/windows: restrict access rights param of OpenProcess(),
        remove \r and \n from error messages (thanks Alex Brainman).
* test/bench: fixes to timing.sh (thanks Anthony Martin).
* time: fix bug in Ticker: shutdown using channel rather than memory.
* token/position: provide FileSet.File, provide files iterator.
* xml: disallow invalid Unicode code points (thanks Nigel Kerr).

2010-12-08

This release includes some package changes. If you use the crypto/tls or
go/parser packages your code may require changes.

The crypto/tls package's Dial function now takes an additional *Config
argument.  Most uses will pass nil to get the same default behavior as before.
See the documentation for details:
        http://golang.org/pkg/crypto/tls/#Config
        http://golang.org/pkg/crypto/tls/#Dial

The go/parser package's ParseFile function now takes a *token.FileSet as its
first argument. This is a pointer to a data structure used to store
position information. If you don't care about position information you
can pass "token.NewFileSet()". See the documentation for details:
        http://golang.org/pkg/go/parser/#ParseFile

This release also splits the patent grant text out of the LICENSE file into a
separate PATENTS file and changes it to be more like the WebM grant.
These clarifications were made at the request of the Fedora project.

Other changes:
* [68]l: generate debug info for builtin structured types, prettyprinting in gdb.
* 8l: add dynimport to import table in Windows PE (thanks Wei Guangjing).
* 8l, runtime: fix Plan 9 386 build (thanks Yuval Pavel Zholkover).
* all: fix broken calls to Printf etc.
* bufio: make Reader.Read implement io.Reader semantics (thanks Roger Peppe).
* build: allow archiver to be specified by HOST_AR (thanks Albert Strasheim).
* bytes: add Buffer.UnreadRune, Buffer.UnreadByte (thanks Roger Peppe).
* crypto/tls: fix build of certificate generation example (thanks Christian Himpel).
* doc/install: describe GOHOSTOS and GOHOSTARCH.
* errchk: accept multiple source files (thanks Eoghan Sherry).
* exec.LookPath: return os.PathError instad of os.ENOENT (thanks Michael Hoisie)..
* flag: fix format error in boolean error report,
        handle multiple calls to flag.Parse.
* fmt: add %U format for standard Unicode representation of code point values.
* gc: fix method offsets of anonymous interfaces (thanks Eoghan Sherry),
        skip undefined symbols in import . (thanks Eoghan Sherry).
* go/scanner: remove Tokenize - was only used in tests
* gobuilder: add buildroot command-line flag (thanks Devon H. O'Dell).
* html: unescape numeric entities (thanks Ryan Hitchman).
* http: Add EncodeQuery, helper for constructing query strings.
* ld: fix dwarf decoding of 64-bit reflect values (thanks Eoghan Sherry).
* math: improve accuracy of Exp2 (thanks Eoghan Sherry).
* runtime: add Goroutines (thanks Keith Rarick).
* sync: small naming fix for armv5 (thanks Dean Prichard).
* syscall, net: Add Recvmsg and Sendmsg on Linux (thanks Albert Strasheim).
* time: make After use fewer goroutines and host processes (thanks Roger Peppe).

2010-12-02

Several package changes in this release may require you to update your code if
you use the bytes, template, or utf8 packages. In all cases, any outdated code
will fail to compile rather than behave erroneously.

The bytes package has changed. Its Add and AddByte functions have been removed,
as their functionality is provided by the recently-introduced built-in function
"append". Any code that uses them will need to be changed:
s = bytes.Add(s, b)    ->    s = append(s, b...)
s = bytes.AddByte(b, c)    ->    s = append(s, b)
s = bytes.Add(nil, c)    ->    append([]byte(nil), c)

The template package has changed. Your code will need to be updated if it calls
the HTMLFormatter or StringFormatter functions, or implements its own formatter
functions. The function signature for formatter types has changed to:
        func(wr io.Writer, formatter string, data ...interface{})
to allow multiple arguments to the formatter.  No templates will need updating.
See the change for examples:
        http://code.google.com/p/go/source/detail?r=2c2be793120e

The template change permits the implementation of multi-word variable
instantiation for formatters. Before one could say
        {field}
or
        {field|formatter}
Now one can also say
        {field1 field2 field3}
or
        {field1 field2 field3|formatter}
and the fields are passed as successive arguments to the formatter,
by analogy to fmt.Print.

The utf8 package has changed. The order of EncodeRune's arguments has been
reversed to satisfy the convention of "destination first".
Any code that uses EncodeRune will need to be updated.

Other changes:
* [68]l: correct dwarf location for globals and ranges for arrays.
* big: fix (*Rat) SetFrac64(a, b) when b < 0 (thanks Eoghan Sherry).
* compress/flate: fix typo in comment (thanks Mathieu Lonjaret).
* crypto/elliptic: use a Jacobian transform for better performance.
* doc/code.html: fix reference to "gomake build" (thanks Anschel Schaffer-Cohen).
* doc/roadmap: update gdb status.
* doc/spec: fixed some omissions and type errors.
* doc: some typo fixes (thanks Peter Mundy).
* exp/eval: build fix for parser.ParseFile API change (thanks Anschel Schaffer-Cohen).
* fmt: Scan accepts Inf and NaN,
        allow "% X" as well as "% x".
* go/printer: preserve newlines in func parameter lists (thanks Jamie Gennis).
* http: consume request body before next request.
* log: ensure writes are atomic (thanks Roger Peppe).
* path: Windows support for Split (thanks Benny Siegert).
* runtime: fix SysFree to really free memory on Windows (thanks Alex Brainman),
        parallel definitions in Go for all C structs.
* sort: avoid overflow in pivot calculation,
        reduced stack depth to lg(n) in quickSort (thanks Stefan Nilsson).
* strconv: Atof on Infs and NaNs.

2010-11-23

This release includes a backwards-incompatible package change to the
sort.Search function (introduced in the last release).
See the change for details and examples of how you might change your code:
        http://code.google.com/p/go/source/detail?r=102866c369

* build: automatically #define _64BIT in 6c.
* cgo: print required space after parameter name in wrapper function.
* crypto/cipher: new package to replace crypto/block (thanks Adam Langley).
* crypto/elliptic: new package, implements elliptic curves over prime fields (thanks Adam Langley).
* crypto/x509: policy OID support and fixes (thanks Adam Langley).
* doc: add link to codewalks,
        fix recover() documentation (thanks Anschel Schaffer-Cohen),
        explain how to write Makefiles for commands.
* exec: enable more tests on windows (thanks Alex Brainman).
* gc: adjustable hash code in typecheck of composite literals
        (thanks to vskrap, Andrey Mirtchovski, and Eoghan Sherry).
* gc: better error message for bad type in channel send (thanks Anthony Martin).
* godoc: bug fix in relativePath,
        compute search index for all file systems under godoc's observation,
        use correct time stamp to indicate accuracy of search result.
* index/suffixarray: use sort.Search.
* net: add ReadFrom and WriteTo windows version (thanks Wei Guangjing).
* reflect: remove unnecessary casts in Get methods.
* rpc: add RegisterName to allow override of default type name.
* runtime: free memory allocated by windows CommandLineToArgv (thanks Alex Brainman).
* sort: simplify Search (thanks Roger Peppe).
* strings: add LastIndexAny (thanks Benny Siegert).

2010-11-10

The birthday release includes a new Search capability inside the sort package.
It takes an unusual but very general and easy-to-use approach to searching
arbitrary indexable sorted data.  See the documentation for details:
    http://golang.org/pkg/sort/#Search

The ARM port now uses the hardware floating point unit (VFP).  It still has a
few bugs, mostly around conversions between unsigned integer and floating-point
values, but it's stabilizing.

In addition, there have been many smaller fixes and updates: 

* 6l: generate dwarf variable names with disambiguating suffix.
* container/list: make Remove return Value of removed element.
    makes it easier to remove first or last item.
* crypto: add cast5 (default PGP cipher),
    switch block cipher methods to be destination first.
* crypto/tls: use pool building for certificate checking
* go/ast: change embedded token.Position fields to named fields
    (preparation for a different position representation)
* net: provide public access to file descriptors (thanks Keith Rarick)
* os: add Expand function to evaluate environment variables.
* path: add Glob (thanks Benny Siegert)
* runtime: memequal optimization (thanks Graham Miller)
    prefix all external symbols with "runtime·" to avoid
    conflicts linking with external C libraries.

2010-11-02

This release includes a language change: the new built-in function, append.
Append makes growing slices much simpler. See the spec for details:
        http://golang.org/doc/go_spec.html#Appending_and_copying_slices

Other changes:
* 8l: pe generation fixes (thanks Alex Brainman).
* doc: Effective Go: append and a few words about "..." args.
* build: fiddle with make variables.
* codereview: fix sync and download in Python 2.7 (thanks Fazlul Shahriar).
* debug/pe, cgo: add windows support (thanks Wei Guangjing).
* go/ast: add Inspect function for easy AST inspection w/o a visitor.
* go/printer: do not remove parens around composite literals starting with
        a type name in control clauses.
* go/scanner: bug fixes, revisions, and more tests.
* gob: several fixes and documentation updates.
* godoc: bug fix (bug introduced with revision 3ee58453e961).
* gotest: print empty benchmark list in a way that gofmt will leave alone.
* http server: correctly respond with 304 NotModified (thanks Michael Hoisie).
* kate: update list of builtins (thanks Evan Shaw).
* libutf: update to Unicode 5.2.0 to match pkg/unicode (thanks Anthony Martin).
* misc/bbedit: update list of builtins (thanks Anthony Starks).
* misc/vim: update list of builtins.
* mkrunetype: install a Makefile and tweak it slightly so it can be built.
* netchan: fix locking bug.
* pidigits: minor improvements (thanks Evan Shaw).
* rpc: fix client deadlock bug.
* src: use append where appropriate (often instead of vector).
* strings: add Contains helper function (thanks Brad Fitzpatrick).
* syscall: SIO constants for Linux (thanks Albert Strasheim),
        Stat(path) on windows (thanks Alex Brainman).
* test/ken/convert.go: add conversion torture test.
* testing: add Benchmark (thanks Roger Peppe).

2010-10-27

*** This release changes the encoding used by package gob. 
    If you store gobs on disk, see below. ***

The ARM port (5g) now passes all tests. The optimizer is not yet enabled, and
floating point arithmetic is performed entirely in software. Work is underway
to address both of these deficiencies.

The syntax for arrays, slices, and maps of composite literals has been
simplified. Within a composite literal of array, slice, or map type, elements
that are themselves composite literals may elide the type if it is identical to
the outer literal's element type. For example, these expressions:
	[][]int{[]int{1, 2, 3}, []int{4, 5}}
	map[string]Point{"x": Point{1.5, -3.5}, "y": Point{0, 0}}
can be simplified to:
	[][]int{{1, 2, 3}, {4, 5}}
	map[string]Point{"x": {1.5, -3.5}, "y": {0, 0}}
Gofmt can make these simplifications mechanically when invoked with the 
new -s flag.

The built-in copy function can now copy bytes from a string value to a []byte.
Code like this (for []byte b and string s): 
	for i := 0; i < len(s); i++ {
		b[i] = s[i]
	}
can be rewritten as:
	copy(b, s)

The gob package can now encode and decode interface values containing types
registered ahead of time with the new Register function. These changes required
a backwards-incompatible change to the wire format.  Data written with the old
version of the package will not be readable with the new one, and vice versa.
(Steps were made in this change to make sure this doesn't happen again.) 
We don't know of anyone using gobs to create permanent data, but if you do this
and need help converting, please let us know, and do not update to this release
yet.  We will help you convert your data.

Other changes:
* 5g, 6g, 8g: generate code for string index instead of calling function.
* 5l, 6l, 8l: introduce sub-symbols.
* 6l/8l: global and local variables and type info.
* Make.inc: delete unnecessary -fno-inline flag to quietgcc.
* arm: precise float64 software floating point, bug fixes.
* big: arm assembly, faster software mulWW, divWW.
* build: only print "You need to add foo to PATH" when needed.
* container/list: fix Remove bug and use pointer to self as identifier.
* doc: show page title in browser title bar,
        update roadmap.
* encoding/binary: give LittleEndian, BigEndian specific types.
* go/parser: consume auto-inserted semi when calling ParseExpr().
* gobuilder: pass GOHOSTOS and GOHOSTARCH to build,
        write build and benchmarking logs to disk.
* goinstall: display helpful message when encountering a cgo package,
        fix test for multiple package names (thanks Fazlul Shahriar).
* gotest: generate correct gofmt-formatted _testmain.go.
* image/png: speed up paletted encoding ~25% (thanks Brad Fitzpatrick).
* misc: update python scripts to specify python2 as python3 is now "python".
* net: fix comment on Dial to mention unix/unixgram.
* rpc: expose Server type to allow multiple RPC Server instances.
* runtime: print unknown types in panic.
* spec: append built-in (not yet implemented).
* src: gofmt -s -w src misc.
        update code to use copy-from-string.
* test/bench: update numbers.
* websocket: fix short Read.

2010-10-20

This release removes the log package's deprecated functions.
Code that has not been updated to use the new interface will break.
See the previous release notes for details:
	http://golang.org/doc/devel/release.html#2010-10-13

Also included are major improvements to the linker. It is now faster, 
uses less memory, and more parallelizable (but not yet parallel).

The nntp package has been removed from the standard library.
Its new home is the nntp-go project at Google Code:
	http://code.google.com/p/nntp-go
You can install it with goinstall:
	goinstall nntp-go.googlecode.com/hg/nntp
And import it in your code like so:
	import "nntp-go.googlecode.com/hg/nntp"

Other changes:
* 6g: avoid too-large immediate constants.
* 8l, runtime: initial support for Plan 9 (thanks Yuval Pavel Zholkover).
* 6l, 8l: more improvements on exporting debug information (DWARF).
* arm: code gen fixes. Most tests now pass, except for floating point code.
* big: add random number generation (thanks Florian Uekermann).
* gc: keep track of real actual type of identifiers,
	report that shift must be unsigned integer,
	select receive with implicit conversion.
* goplay: fix to run under windows (thanks Yasuhiro Matsumoto).
* http: do not close connection after sending HTTP/1.0 request.
* netchan: add new method Hangup to terminate transmission on a channel.
* os: change TestForkExec so it can run on windows (thanks Yasuhiro Matsumoto).
* runtime: don't let select split stack.
* syscall/arm: correct 64-bit system call arguments.

2010-10-13

This release includes changes to the log package, the removal of exp/iterable,
two new tools (gotry and goplay), one small language change, and many other
changes and fixes.  If you use the log or iterable packages, you need to make
changes to your code.

The log package has changed.  Loggers now have only one output, and output to
standard error by default.  The names have also changed, although the old names
are still supported.  They will be deleted in the next release, though, so it
would be good to update now if you can.  For most purposes all you need to do
is make these substitutions:
        log.Stderr -> log.Println or log.Print
        log.Stderrf -> log.Printf
        log.Crash -> log.Panicln or log.Panic
        log.Crashf -> log.Panicf
        log.Exit -> log.Exitln or log.Exit
        log.Exitf -> log.Exitf (no change)
Calls to log.New() must drop the second argument.
Also, custom loggers with exit or panic properties will need to be reworked.
For full details, see the change description:
        http://code.google.com/p/go/source/detail?r=d8a3c7563d

The language change is that uses of pointers to interface values no longer
automatically dereference the pointer.  A pointer to an interface value is more
often a beginner's bug than correct code.

The package exp/iterable has been removed. It was an interesting experiment,
but it encourages writing inefficient code and has outlived its utility.

The new tools:
* gotry: an exercise in reflection and an unusual tool. Run 'gotry' for details.
* goplay: a stand-alone version of the Go Playground. See misc/goplay.

Other changes:
* 6l: Mach-O fixes, and fix to work with OS X nm/otool (thanks Jim McGrath).
* [568]a: correct line numbers for statements.
* arm: code generation and runtime fixes,
	adjust recover for new reflect.call,
	enable 6 more tests after net fix.
* big: fix panic and round correctly in Rat.FloatString (thanks Anthony Martin).
* build: Make.cmd: remove $(OFILES) (thanks Eric Clark),
        Make.pkg: remove .so before installing new one,
        add GOHOSTOS and GOHOSTARCH environment variables.
* crypto/tls: better error messages for certificate issues,
        make SetReadTimeout work.
* doc: add Sydney University video,
	add The Expressiveness of Go talk.
* exp/draw/x11: support X11 vendors other than "The X.Org Foundation".
* expvar: add (*Int).Set (thanks Sam Thorogood).
* fmt: add Errorf helper function,
        allow %d on []byte.
* gc: O(1) string comparison when lengths differ,
        various bug fixes.
* http: return the correct error if a header line is too long.
* image: add image.Tiled type, the Go equivalent of Plan 9's repl bit.
* ld: be less picky about bad line number info.
* misc/cgo/life: fix for new slice rules (thanks Graham Miller).
* net: allow _ in DNS names.
* netchan: export before import when testing, and
        zero out request to ensure correct gob decoding. (thanks Roger Peppe).
* os: make tests work on windows (thanks Alex Brainman).
* runtime: bug fix: serialize mcache allocation,
        correct iteration of large map values,
        faster strequal, memequal (thanks Graham Miller),
        fix argument dump in traceback,
        fix tiny build.
* smtp: new package (thanks Evan Shaw).
* syscall: add sockaddr_ll support for linux/386, linux/amd64 (thanks Mikio Hara),
        add ucred structure for SCM_CREDENTIALS over UNIX sockets. (thanks Albert Strasheim).
* syscall: implement WaitStatus and Wait4() for windows (thanks Wei Guangjing).
* time: add After.
* websocket: enable tests on windows (thanks Alex Brainman).

2010-09-29

This release includes some minor language changes and some significant package
changes. You may need to change your code if you use ...T parameters or the
http package.

The semantics and syntax of forwarding ...T parameters have changed.
        func message(f string, s ...interface{}) { fmt.Printf(f, s) }
Here, s has type []interface{} and contains the parameters passed to message.
Before this language change, the compiler recognized when a function call
passed a ... parameter to another ... parameter of the same type, and just
passed it as though it was a list of arguments.  But this meant that you
couldn't control whether to pass the slice as a single argument and you
couldn't pass a regular slice as a ... parameter, which can be handy.  This
change gives you that control at the cost of a few characters in the call.
If you want the promotion to ...,  append ... to the argument:
        func message(f string, s ...interface{}) { fmt.Printf(f, s...) }
Without the ..., s would be passed to Printf as a single argument of type
[]interface{}.  The bad news is you might need to fix up some of your code, 
but the compiler will detect the situation and warn you.

Also, the http.Handler and http.HandlerFunc types have changed. Where http
handler functions previously accepted an *http.Conn, they now take an interface
type http.ResponseWriter. ResponseWriter implements the same methods as *Conn,
so in most cases the only change required will be changing the type signature
of your handler function's first parameter. See:
  http://golang.org/pkg/http/#Handler

The utf8 package has a new type, String, that provides efficient indexing 
into utf8 strings by rune (previously an expensive conversion to []int 
was required). See:
  http://golang.org/pkg/utf8/#String

The compiler will now automatically insert a semicolon at the end of a file if
one is not found. This effect of this is that Go source files are no longer
required to have a trailing newline.

Other changes:
* 6prof: more accurate usage message.
* archive/zip: new package for reading Zip files.
* arm: fix code generation, 10 more package tests pass.
* asn1: make interface consistent with json.
* bufio.UnreadRune: fix bug at EOF.
* build: clear custom variables like GREP_OPTIONS,
        silence warnings generated by ubuntu gcc,
        use full path when compiling libraries.
* bytes, strings: change lastIndexFunc to use DecodeLastRune (thanks Roger Peppe).
* doc: add to and consolidate non-english doc references,
        consolidate FAQs into a single file, go_faq.html,
        updates for new http interface.
* fmt/Printf: document and tweak error messages produced for bad formats.
* gc: allow select case expr = <-c,
        eliminate duplicates in method table,
        fix reflect table method receiver,
        improve error message for x \= 0.
* go/scanner: treat EOF like a newline for purposes of semicolon insertion.
* gofmt: stability improvements.
* gotest: leave _testmain.go for "make clean" to clean up.
* http: correct escaping of different parts of URL,
        support HTTP/1.0 Keep-Alive.
* json: do not write to unexported fields.
* libcgo: don't build for NaCl,
        set g, m in thread local storage for windows 386 (thanks Wei Guangjing).
* math: Fix off-by-one error in Ilogb and Logb.  (thanks Charles L. Dorian).
* misc/dashboard/builder: remove build files after benchmarking.
* nacl: update instructions for new SDK.
* net: enable v4-over-v6 on ip sockets,
        fix crash in DialIP.
* os: check for valid arguments in windows Readdir (thanks Peter Mundy).
* runtime: add mmap of null page just in case,
        correct stats in SysFree,
        fix unwindstack crash.
* syscall: add IPPROTO_IPV6 and IPV6_V6ONLY const to fix nacl and windows build,
        add inotify on Linux (thanks Balazs Lecz),
        fix socketpair in syscall_bsd,
        fix windows value of IPV6_V6ONLY (thanks Alex Brainman),
        implement windows version of Utimes (thanks Alex Brainman),
        make mkall.sh work for nacl.
* test: Add test that causes incorrect error from gccgo.
* utf8: add DecodeLastRune and DecodeLastRuneInString (thanks Roger Peppe).
* xml: Allow entities inside CDATA tags (thanks Dan Sinclair).

2010-09-22

This release includes new package functionality, and many bug fixes and changes.
It also improves support for the arm and nacl platforms.

* 5l: avoid fixed buffers in list.
* 6l, 8l: clean up ELF code, fix NaCl.
* 6l/8l: emit DWARF frame info.
* Make.inc: make GOOS detection work on windows (thanks Alex Brainman).
* build: fixes for native arn build,
        make all.bash run on Ubuntu ARM.
* cgo: bug fixes,
        show preamble gcc errors (thanks Eric Clark).
* crypto/x509, crypto/tls: improve root matching and observe CA flag.
* crypto: Fix certificate validation.
* doc: variable-width layout.
* env.bash: fix building in directory with spaces in the path (thanks Alex Brainman).
* exp/4s, exp/nacl/av: sync to recent exp/draw changes.
* exp/draw/x11: mouse location is a signed integer.
* exp/nacl/av: update color to max out at 1<<16-1 instead of 1<<32-1.
* fmt: support '*' for width or precision (thanks Anthony Martin).
* gc: improvements to static initialization,
        make sure path names are canonical.
* gob: make robust when decoding a struct with non-struct data.
* gobuilder: add -cmd for user-specified build command,
        add -rev= flag to build specific revision and exit,
        fix bug that caused old revisions to be rebuilt.
* godoc: change default filter file name to "",
        don't use quadratic algorithm to filter paths,
        show "Last update" info for directory listings.
* http: new redirect test,
        URLEscape now escapes all reserved characters as per the RFC.
* nacl: fix zero-length writes.
* net/dict: parse response correctly (thanks Fazlul Shahriar).
* netchan: add a cross-connect test,
        handle closing of channels,
        provide a method (Importer.Errors()) to recover protocol errors.
* os: make Open() O_APPEND flag work on windows (thanks Alex Brainman),
        make RemoveAll() work on windows (thanks Alex Brainman).
* pkg/Makefile: disable netchan test to fix windows build (thanks Alex Brainman).
* regexp: delete Iter methods.
* runtime: better panic for send to nil channel.
* strings: fix minor bug in LastIndexFunc (thanks Roger Peppe).
* suffixarray: a package for creating suffixarray-based indexes.
* syscall: Use vsyscall for syscall.Gettimeofday and .Time on linux amd64.
* test: fix NaCl build.
* windows: fix netchan test by using 127.0.0.1.

2010-09-15

This release includes a language change: the lower bound of a subslice may
now be omitted, in which case the value will default to 0.
For example, s[0:10] may now be written as s[:10], and s[0:] as s[:].

The release also includes important bug fixes for the ARM architecture,
as well as the following fixes and changes:

* 5g: register allocation bugs
* 6c, 8c: show line numbers in -S output
* 6g, 6l, 8g, 8l: move read-only data to text segment
* 6l, 8l: make etext accurate; introduce rodata, erodata.
* arm: fix build bugs.
        make libcgo build during OS X cross-compile
        remove reference to deleted file syntax/slice.go
        use the correct stat syscalls
        work around reg allocator bug in 5g
* bufio: add UnreadRune.
* build: avoid bad environment interactions
        fix build for tiny
        generate, clean .exe files on Windows (thanks Joe Poirier)
        test for _WIN32, not _MINGW32 (thanks Joe Poirier)
        work with GNU Make 3.82 (thanks Jukka-Pekka Kekkonen)
* cgo: add typedef for uintptr in generated headers
        silence warning for C call returning const pointer
* codereview: convert email address to lower case before checking CONTRIBUTORS
* crypto/tls: don't return an error from Close()
* doc/tutorial: update for slice changes.
* exec: separate LookPath implementations for unix/windows (thanks Joe Poirier)
* exp/draw/x11: allow clean shutdown when the user closes the window.
* exp/draw: clip destination rectangle to the image bounds.
        fast path for drawing overlapping image.RGBAs.
        fix double-counting of pt.Min for the src and mask points.
        reintroduce the MouseEvent.Nsec timestamp.
        rename Context to Window, and add a Close method.
* exp/debug: preliminary support for 'copy' function (thanks Sebastien Binet)
* fmt.Fscan: use UnreadRune to preserve data across calls.
* gc: better printing of named constants, func literals in errors
        many bug fixes
        fix line number printing with //line directives
        fix symbol table generation on windows (thanks Alex Brainman)
        implement comparison rule from spec change 33abb649cb63
        implement new slice spec (thanks Scott Lawrence)
        make string x + y + z + ... + w efficient
        more accurate line numbers for ATEXT
        remove &[10]int -> []int conversion
* go-mode.el: fix highlighting for 'chan' type (thanks Scott Lawrence)
* godoc: better support for directory trees for user-supplied paths
        use correct delay time (bug fix)
* gofmt, go/printer: update internal estimated position correctly
* goinstall: warn when package name starts with http:// (thanks Scott Lawrence)
* http: check https certificate against host name
        do not cache CanonicalHeaderKey (thanks Jukka-Pekka Kekkonen)
* image: change a ColorImage's minimum point from (0, 0) to (-1e9, -1e9).
        introduce Intersect and Union rectangle methods.
* ld: handle quoted spaces in package path (thanks Dan Sinclair)
* libcgo: fix NaCl build.
* libmach: fix build on arm host
        fix new thread race with Linux
* math: make portable Tan(Pi/2) return NaN
* misc/dashboard/builder: gobuilder, a continuous build client
* net: disable tests for functions not available on windows (thanks Alex Brainman)
* netchan: make -1 unlimited, as advertised.
* os, exec: rename argv0 to name
* path: add IsAbs (thanks Ivan Krasin)
* runtime: fix bug in tracebacks
        fix crash trace on amd64
        fix windows build (thanks Alex Brainman)
        use manual stack for garbage collection
* spec: add examples for slices with omitted index expressions.
        allow omission of low slice bound (thanks Scott Lawrence)
* syscall: fix windows Gettimeofday (thanks Alex Brainman)
* test(arm): disable zerodivide.go because compilation fails.
* test(windows): disable tests that cause the build to fail (thanks Joe Poirier)
* test/garbage/parser: sync with recent parser changes
* test: Add test for //line
        Make gccgo believe that the variables can change.
        Recognize gccgo error messages.
        Reduce race conditions in chan/nonblock.go.
        Run garbage collector before testing malloc numbers.
* websocket: Add support for secure WebSockets (thanks Jukka-Pekka Kekkonen)
* windows: disable unimplemented tests (thanks Joe Poirier)

2010-09-06

This release includes the syntactic modernization of more than 100 files in /test,
and these additions, changes, and fixes: 
* 6l/8l: emit DWARF in macho.
* 8g: use FCHS, not FMUL, for minus float.
* 8l: emit DWARF in ELF,
        suppress emitting DWARF in Windows PE (thanks Alex Brainman).
* big: added RatString, some simplifications.
* build: create bin and pkg directories as needed; drop from hg,
        delete Make.386 Make.amd64 Make.arm (obsoleted by Make.inc),
        fix cgo with -j2,
        let pkg/Makefile coordinate building of Go commands,
        never use quietgcc in Make.pkg,
        remove more references to GOBIN and GOROOT (thanks Christian Himpel).
* codereview: Fix uploading for Mercurial 1.6.3 (thanks Evan Shaw),
        consistent indent, cut dead code,
        fix hang on standard hg commands,
        print status when tasks take longer than 30 seconds,
        really disable codereview when not available,
        upload files in parallel (5x improvement on large CLs).
* crypto/hmac: make Sum idempotent (thanks Jukka-Pekka Kekkonen).
* doc: add links to more German docs,
        add round-robin flag to io2010 balance example,
        fix a bug in the example in Constants subsection (thanks James Fysh),
        various changes for validating HTML (thanks Scott Lawrence).
* fmt: delete erroneous sentence about return value for Sprint*.
* gc: appease bison version running on FreeBSD builder,
        fix spurious syntax error.
* go/doc: use correct escaper for URL.
* go/printer: align ImportPaths in ImportDecls (thanks Scott Lawrence).
* go/typechecker: 2nd step towards augmenting AST with full type information.
* gofmt: permit omission of first index in slice expression.
* goinstall: added -a flag to mean "all remote packages" (thanks Scott Lawrence),
        assume go binaries are in path (following new convention),
        use https for Google Code checkouts.
* gotest: allow make test of cgo packages (without make install).
* http: add Date to server, Last-Modified and If-Modified-Since to file server,
        add PostForm function to post url-encoded key/value data,
        obscure passwords in return value of URL.String (thanks Scott Lawrence).
* image: introduce Config type and DecodeConfig function.
* libcgo: update Makefile to use Make.inc.
* list: update comment to state that the zero value is ready to use.
* math: amd64 version of Sincos (thanks Charles L. Dorian).
* misc/bash: add *.go completion for gofmt (thanks Scott Lawrence).
* misc/emacs: make _ a word symbol (thanks Scott Lawrence).
* misc: add zsh completion (using compctl),
        syntax highlighting for Fraise.app (OS X) (thanks Vincent Ambo).
* net/textproto: Handle multi-line responses (thanks Evan Shaw).
* net: add LookupMX (thanks Corey Thomasson).
* netchan: Fix race condition in test,
        rather than 0, make -1 mean infinite (a la strings.Split et al),
        use acknowledgements on export send.
        new methods Sync and Drain for clean teardown.
* regexp: interpret all Go characer escapes \a \b \f \n \r \t \v.
* rpc: fix bug that caused private methods to attempt to be registered.
* runtime: Correct commonType.kind values to match compiler,
        add GOOS, GOARCH; fix FuncLine,
        special case copy, equal for one-word interface values (thanks Kyle Consalus).
* scanner: fix incorrect reporting of error in Next (thanks Kyle Consalus).
* spec: clarify that arrays must be addressable to be sliceable.
* template: fix space handling around actions.
* test/solitaire: an exercise in backtracking and string conversions.
* test: Recognize gccgo error messages and other fixes.
* time: do not crash in String on nil Time.
* tutorial: regenerate HTML to pick up change to progs/file.go.
* websocket: fix missing Sec-WebSocket-Protocol on server response (thanks Jukka-Pekka Kekkonen).

2010-08-25

This release includes changes to the build system that will likely require you
to make changes to your environment variables and Makefiles.

All environment variables are now optional:
 - $GOOS and $GOARCH are now optional; their values should now be inferred 
   automatically by the build system,
 - $GOROOT is now optional, but if you choose not to set it you must run
   'gomake' instead of 'make' or 'gmake' when developing Go programs
   using the conventional Makefiles,
 - $GOBIN remains optional and now defaults to $GOROOT/bin;
   if you wish to use this new default, make sure it is in your $PATH
   and that you have removed the existing binaries from $HOME/bin.

As a result of these changes, the Go Makefiles have changed. If your Makefiles
inherit from the Go Makefiles, you must change this line:
    include ../../Make.$(GOARCH)
to this:
    include ../../Make.inc

This release also removes the deprecated functions in regexp and the 
once package. Any code that still uses them will break.
See the notes from the last release for details:
    http://golang.org/doc/devel/release.html#2010-08-11

Other changes:
* 6g: better registerization for slices, strings, interface values
* 6l: line number information in DWARF format
* build: $GOBIN defaults to $GOROOT/bin,
        no required environment variables
* cgo: add C.GoStringN (thanks Eric Clark).
* codereview: fix issues with leading tabs in CL descriptions,
        do not send "Abandoned" mail if the CL has not been mailed.
* crypto/ocsp: add missing Makefile.
* crypto/tls: client certificate support (thanks Mikkel Krautz).
* doc: update gccgo information for recent changes.
        fix errors in Effective Go.
* fmt/print: give %p priority, analogous to %T,
        honor Formatter in Print, Println.
* gc: fix parenthesization check.
* go/ast: facility for printing AST nodes,
        first step towards augmenting AST with full type information.
* go/printer: do not modify tabwriter.Escape'd text.
* gofmt: do not modify multi-line string literals,
        print AST nodes by setting -ast flag.
* http: fix typo in http.Request documentation (thanks Scott Lawrence)
        parse query string always, not just in GET
* image/png: support 16-bit color.
* io: ReadAtLeast now errors if min > len(buf).
* jsonrpc: use `error: null` for success, not `error: ""`.
* libmach: implement register fetch for 32-bit x86 kernel.
* net: make IPv6 String method standards-compliant (thanks Mikio Hara).
* os: FileInfo.Permission() now returns uint32 (thanks Scott Lawrence),
        implement env using native Windows API (thanks Alex Brainman).
* reflect: allow PtrValue.PointTo(nil).
* runtime: correct line numbers for .goc files,
        fix another stack split bug,
        fix freebsd/386 mmap.
* syscall: regenerate syscall/z* files for linux/386, linux/amd64, linux/arm.
* tabwriter: Introduce a new flag StripEscape.
* template: fix handling of space around actions,
        vars preceded by white space parse correctly (thanks Roger Peppe).
* test: add test case that crashes gccgo.
* time: parse no longer requires minutes for time zone (thanks Jan H. Hosang)
* yacc: fix bounds check in error recovery.

2010-08-11

This release introduces some package changes. You may need to change your
code if you use the once, regexp, image, or exp/draw packages.

The type Once has been added to the sync package. The new sync.Once will
supersede the functionality provided by the once package. We intend to remove
the once package after this release. See:
    http://golang.org/pkg/sync/#Once
All instances of once in the standard library have been replaced with
sync.Once. Reviewing these changes may help you modify your existing code. 
The relevant changeset:
    http://code.google.com/p/go/source/detail?r=fa2c43595119

A new set of methods has been added to the regular expression package, regexp.
These provide a uniformly named approach to discovering the matches of an
expression within a piece of text; see the package documentation for details: 
    http://golang.org/pkg/regexp/
These new methods will, in a later release, replace the old methods for
matching substrings.  The following methods are deprecated:
    Execute (use FindSubmatchIndex)
    ExecuteString (use FindStringSubmatchIndex)
    MatchStrings(use FindStringSubmatch)
    MatchSlices (use FindSubmatch)
    AllMatches (use FindAll; note that n<0 means 'all matches'; was n<=0)
    AllMatchesString (use FindAllString; note that n<0 means 'all matches'; was n<=0)
(Plus there are ten new methods you didn't know you wanted.) 
Please update your code to use the new routines before the next release.

An image.Image now has a Bounds rectangle, where previously it ranged 
from (0, 0) to (Width, Height). Loops that previously looked like:
    for y := 0; y < img.Height(); y++ {
        for x := 0; x < img.Width(); x++ {
            // Do something with img.At(x, y)
        }
    }
should instead be:
    b := img.Bounds()
    for y := b.Min.Y; y < b.Max.Y; y++ {
        for x := b.Min.X; x < b.Max.X; x++ {
            // Do something with img.At(x, y)
        }
    }
The Point and Rectangle types have also moved from exp/draw to image.

Other changes:
* arm: bugfixes and syscall (thanks Kai Backman).
* asn1: fix incorrect encoding of signed integers (thanks Nicholas Waples).
* big: fixes to bitwise functions (thanks Evan Shaw).
* bytes: add IndexRune, FieldsFunc and To*Special (thanks Christian Himpel).
* encoding/binary: add complex (thanks Roger Peppe).
* exp/iterable: add UintArray (thanks Anschel Schaffer-Cohen).
* godoc: report Status 404 if a pkg or file is not found.
* gofmt: better reporting for unexpected semicolon errors.
* html: new package, an HTML tokenizer.
* image: change image representation from slice-of-slices to linear buffer,
        introduce Decode and RegisterFormat,
        introduce Transparent and Opaque,
        replace Width and Height by Bounds, add the Point and Rect types.
* libbio: fix Bprint to address 6g issues with large data structures.
* math: fix amd64 Hypot (thanks Charles L. Dorian).
* net/textproto: new package, with example net/dict.
* os: fix ForkExec() handling of envv == nil (thanks Alex Brainman).
* png: grayscale support (thanks Mathieu Lonjaret).
* regexp: document that backslashes are the escape character.
* rpc: catch errors from ReadResponseBody.
* runtime: memory free fix (thanks Alex Brainman).
* template: add ParseFile method to template.Template.
* test/peano: use directly recursive type def.

2010-08-04

This release includes a change to os.Open (and co.). The file permission
argument has been changed to a uint32. Your code may require changes - a simple
conversion operation at most.

Other changes:
* amd64: use segment memory for thread-local storage.
* arm: add gdb support to android launcher script,
        bugfixes (stack clobbering, indices),
        disable another flaky test,
        remove old qemu dependency from gotest.
* bufio: introduce Peek.
* bytes: added test case for explode with blank string (thanks Scott Lawrence).
* cgo: correct multiple return value function invocations (thanks Christian Himpel).
* crypto/x509: unwrap Subject Key Identifier (thanks Adam Langley).
* gc: index bounds tests and other fixes.
* gofmt/go/parser: strengthen syntax checks.
* goinstall: check for error from exec.*Cmd.Wait() (thanks Alex Brainman).
* image/png: use image-specific methods for checking opacity.
* image: introduce Gray and Gray16 types,
        remove the named colors except for Black and White.
* json: object members must have a value (thanks Anthony Martin).
* misc/vim: highlight misspelled words only in comments (thanks Christian Himpel).
* os: Null device (thanks Peter Mundy).
* runtime: do not fall through in SIGBUS/SIGSEGV.
* strings: fix Split("", "", -1) (thanks Scott Lawrence).
* syscall: make go errors not clash with windows errors (thanks Alex Brainman).
* test/run: diff old new,
* websocket: correct challenge response (thanks Tarmigan Casebolt),
        fix bug involving spaces in header keys (thanks Bill Neubauer). 

2010-07-29

* 5g: more soft float support and several bugfixes.
* asn1: Enumerated, Flag and GeneralizedTime support.
* build: clean.bash to check that GOOS and GOARCH are set.
* bytes: add IndexFunc and LastIndexFunc (thanks Fazlul Shahriar),
	add Title.
* cgo: If CC is set in environment, use it rather than "gcc",
	use new command line syntax: -- separates cgo flags from gcc flags.
* codereview: avoid crash if no config,
	don't run gofmt with an empty file list,
	make 'hg submit' work with Mercurial 1.6.
* crypto/ocsp: add package to parse OCSP responses.
* crypto/tls: add client-side SNI support and PeerCertificates.
* exp/bignum: delete package - functionality subsumed by package big.
* fmt.Print: fix bug in placement of spaces introduced when ...T went in.
* fmt.Scanf: handle trailing spaces.
* gc: fix smaller-than-pointer-sized receivers in interfaces,
	floating point precision/normalization fixes,
	graceful exit on seg fault,
	import dot shadowing bug,
	many fixes including better handling of invalid input,
	print error detail about failure to open import.
* gccgo_install.html: add description of the port to RTEMS (thanks Vinu Rajashekhar).
* gobs: fix bug in singleton arrays.
* godoc: display synopses for all packages that have some kind of documentation..
* gofmt: fix some linebreak issues.
* http: add https client support (thanks Fazlul Shahriar),
	write body when content length unknown (thanks James Whitehead).
* io: MultiReader and MultiWriter (thanks Brad Fitzpatrick),
	fix another race condition in Pipes.
* ld: many fixes including better handling of invalid input.
* libmach: correct handling of .5 files with D_REGREG addresses.
* linux/386: use Xen-friendly ELF TLS instruction sequence.
* mime: add AddExtensionType (thanks Yuusei Kuwana).
* misc/vim: syntax file recognizes constants like 1e9 (thanks Petar Maymounkov).
* net: TCPConn.SetNoDelay, back by popular demand.
* net(windows): fix crashing Read/Write when passed empty slice on (thanks Alex Brainman),
	implement LookupHost/Port/SRV (thanks Wei Guangjing),
	properly handle EOF in (*netFD).Read() (thanks Alex Brainman).
* runtime: fix bug introduced in revision 4a01b8d28570 (thanks Alex Brainman),
	rename cgo2c, *.cgo to goc2c, *.goc (thanks Peter Mundy).
* scanner: better comment.
* strings: add Title.
* syscall: add ForkExec, Syscall12 on Windows (thanks Daniel Theophanes),
	improve windows errno handling (thanks Alex Brainman).
* syscall(windows): fix FormatMessage (thanks Peter Mundy),
	implement Pipe() (thanks Wei Guangjing).
* time: fix parsing of minutes in time zones.
* utf16(windows): fix cyclic dependency when testing (thanks Peter Mundy).

2010-07-14

This release includes a package change. In container/vector, the Iter method
has been removed from the Vector, IntVector, and StringVector types. Also, the
Data method has been renamed to Copy to better express its actual behavior.
Now that Vector is just a slice, any for loops ranging over v.Iter() or
v.Data() can be changed to range over v instead.

Other changes:
* big: Improvements to Rat.SetString (thanks Evan Shaw),
        add sign, abs, Rat.IsInt.
* cgo: various bug fixes.
* codereview: Fix for Mercurial >= 1.6 (thanks Evan Shaw).
* crypto/rand: add Windows implementation (thanks Peter Mundy).
* crypto/tls: make HTTPS servers easier,
        add client OCSP stapling support.
* exp/eval: converted from bignum to big (thanks Evan Shaw).
* gc: implement new len spec, range bug fix, optimization.
* go/parser: require that '...' parameters are followed by a type.
* http: fix ParseURL to handle //relative_path properly.
* io: fix SectionReader Seek to seek backwards (thanks Peter Mundy).
* json: Add HTMLEscape (thanks Micah Stetson).
* ld: bug fixes.
* math: amd64 version of log (thanks Charles L. Dorian).
* mime/multipart: new package to parse multipart MIME messages
        and HTTP multipart/form-data support.
* os: use TempFile with default TempDir for test files (thanks Peter Mundy).
* runtime/tiny: add docs for additional VMs, fix build (thanks Markus Duft).
* runtime: better error for send/recv on nil channel.
* spec: clarification of channel close(),
        lock down some details about channels and select,
        restrict when len(x) is constant,
        specify len/cap for nil slices, maps, and channels.
* windows: append .exe to binary names (thanks Joe Poirier).

2010-07-01

This release includes some package changes that may require changes to 
client code.

The Split function in the bytes and strings packages has been changed.
The count argument, which limits the size of the return, previously treated
zero as unbounded. It now treats 0 as 0, and will return an empty slice.  
To request unbounded results, use -1 (or some other negative value).
The new Replace functions in bytes and strings share this behavior.
This may require you change your existing code.

The gob package now allows the transmission of non-struct values at the
top-level. As a result, the rpc and netchan packages have fewer restrictions
on the types they can handle.  For example, netchan can now share a chan int.

The release also includes a Code Walk: "Share Memory By Communicating".
It describes an idiomatic Go program that uses goroutines and channels:
	http://golang.org/doc/codewalk/sharemem/

There is now a Projects page on the Go Dashboard that lists Go programs, 
tools, and libraries:
	http://godashboard.appspot.com/project

Other changes:
* 6a, 6l: bug fixes.
* bytes, strings: add Replace.
* cgo: use slash-free relative paths for .so references.
* cmath: correct IsNaN for argument cmplx(Inf, NaN) (thanks Charles L. Dorian).
* codereview: allow multiple email addresses in CONTRIBUTORS.
* doc/codewalk: add Share Memory By Communicating.
* exp/draw/x11: implement the mapping from keycodes to keysyms.
* fmt: Printf: fix bug in handling of %#v, allow other verbs for slices
        Scan: fix handling of EOFs.
* gc: bug fixes and optimizations.
* gob: add DecodeValue and EncodeValue,
        add support for complex numbers.
* goinstall: support for Bazaar+Launchpad (thanks Gustavo Niemeyer).
* io/ioutil: add TempFile for Windows (thanks Peter Mundy).
* ld: add -u flag to check safe bits; discard old -u, -x flags.
* math: amd64 versions of Exp and Fabs (thanks Charles L. Dorian).
* misc/vim: always override filetype detection for .go files.
* net: add support for DNS SRV requests (thanks Kirklin McDonald),
        initial attempt to implement Windows version (thanks Alex Brainman).
* netchan: allow chan of basic types now that gob can handle such,
        eliminate the need for a pointer value in Import and Export.
* os/signal: only catch all signals if os/signal package imported.
* regexp: bug fix: need to track whether match begins with fixed prefix.
* rpc: allow non-struct args and reply (they must still be pointers).
* runtime: bug fixes and reorganization.
* strconv: fix bugs in floating-point and base 2 conversions
* syscall: add syscall_bsd.go to zsycall_freebsd_386.go (thanks Peter Mundy),
        add socketpair (thanks Ivan Krasin).
* time: implement time zones for Windows (thanks Alex Brainman).
* x509: support non-self-signed certs. 

2010-06-21

This release includes a language change. The "..." function parameter form is
gone; "...T" remains. Typically, "...interface{}" can be used instead of "...".

The implementation of Printf has changed in a way that subtly affects its
handling of the fmt.Stringer interface. You may need to make changes to your
code. For details, see:
        https://groups.google.com/group/golang-nuts/msg/6fffba90a3e3dc06

The reflect package has been changed. If you have code that uses reflect, 
it will need to be updated. For details, see:
        https://groups.google.com/group/golang-nuts/msg/7a93d07c590e7beb

Other changes:
* 8l: correct test for sp == top of stack in 8l -K code.
* asn1: allow '*' in PrintableString.
* bytes.Buffer.ReadFrom: fix bug.
* codereview: avoid exception in match (thanks Paolo Giarrusso).
* complex divide: match C99 implementation.
* exp/draw: small draw.drawGlyphOver optimization.
* fmt: Print*: reimplement to switch on type first,
        Scanf: improve error message when input does not match format.
* gc: better error messages for interface failures, conversions, undefined symbols.
* go/scanner: report illegal escape sequences.
* gob: substitute slice for map.
* goinstall: process dependencies for package main (thanks Roger Peppe).
* gopack: add S flag to force marking a package as safe,
        simplify go metadata code.
* html: sync testdata/webkit to match WebKit tip.
* http: reply to Expect 100-continue requests automatically (thanks Brad Fitzpatrick).
* image: add an Alpha16 type.
* ld: pad Go symbol table out to page boundary (fixes cgo crash).
* misc/vim: reorganize plugin to be easier to use (thanks James Whitehead).
* path: add Base, analogous to Unix basename.
* pkg/Makefile: allow DISABLE_NET_TESTS=1 to disable network tests.
* reflect: add Kind, Type.Bits, remove Int8Type, Int8Value, etc.
* runtime: additional Windows support (thanks Alex Brainman),
        correct fault for 16-bit divide on Leopard,
        fix 386 signal handler bug.
* strconv: add AtofN, FtoaN.
* string: add IndexFunc and LastIndexFunc (thanks Roger Peppe).
* syslog: use local network for tests. 

2010-06-09

This release contains many fixes and improvements, including several
clarifications and consolidations to the Language Specification.

The type checking rules around assignments and conversions are simpler but more
restrictive: assignments no longer convert implicitly from *[10]int to []int
(write x[0:] instead of &x), and conversions can no longer change the names of
types inside composite types.

The fmt package now includes flexible type-driven (fmt.Scan) and 
format-driven (fmt.Scanf) scanners for all basic types.

* big: bug fix for Quo aliasing problem.
* bufio: change ReadSlice to match description.
* cgo: bug fixes.
* doc: add Google I/O talk and programs,
        codereview + Mercurial Queues info (thanks Peter Williams).
* exp/draw: Draw fast paths for the Over operator,
        add Rectangle.Eq and Point.In, fix Rectangle.Clip (thanks Roger Peppe).
* fmt: Scan fixes and improvements.
* gc: backslash newline is not a legal escape sequence in strings,
        better error message when ~ operator is found,
        fix export of complex types,
        new typechecking rules.
* go/parser: correct position of empty statement ';'.
* gofmt: fix test script.
* goinstall: use 'git pull' instead of 'git checkout' (thanks Michael Hoisie).
* http: add Head function for making HTTP HEAD requests,
        handle status 304 correctly.
* image: add Opaque method to the image types.
        make Color.RGBA return 16 bit color instead of 32 bit color.
* io/ioutil: add TempFile.
* math: Pow special cases and additional tests (thanks Charles L. Dorian).
* netchan: improve closing and shutdown.
* os: implement os.FileInfo.*time_ns for windows (thanks Alex Brainman).
* os/signal: correct the regexp for finding Unix signal names (thanks Vinu Rajashekhar).
* regexp: optimizations (thanks Kyle Consalus).
* runtime: fix printing -Inf (thanks Evan Shaw),
        finish pchw -> tiny, added gettime for tiny (thanks Daniel Theophanes).
* spec: clean-ups and consolidation.
* syscall: additional Windows compatibility fixes (thanks Alex Brainman).
* test/bench: added regex-dna-parallel.go (thanks Kyle Consalus).
* vector: type-specific Do functions now take f(type) (thanks Michael Hoisie). 

2010-05-27

A sizeable release, including standard library improvements and a slew of
compiler bug fixes. The three-week interval was largely caused by the team
preparing for Google I/O. 

* big: add Rat type (thanks Evan Shaw),
        new features, much performance tuning, cleanups, and more tests.
* bignum: deprecate by moving into exp directory.
* build: allow MAKEFLAGS to be set outside the build scripts (thanks Christopher Wedgwood).
* bytes: add Trim, TrimLeft, TrimRight, and generic functions (thanks Michael Hoisie).
* cgo: fix to permit cgo callbacks from init code.
* cmath: update range of Phase and Polar due to signed zero (thanks Charles L. Dorian).
* codereview: work better with mq (thanks Peter Williams).
* compress: renamings
	NewDeflater -> NewWriter
	NewInflater -> NewReader
	Deflater -> Compressor
	Inflater -> Decompressor
* exp/draw/x11: respect $XAUTHORITY,
        treat $DISPLAY the same way x-go-bindings does.
* exp/draw: fast path for glyph images, other optimizations,
        fix Rectangle.Canon (thanks Roger Peppe).
* fmt: Scan, Scanln: Start of a simple scanning API in the fmt package,
        fix Printf crash when given an extra nil argument (thanks Roger Peppe).
* gc: better error when computing remainder of non-int (thanks Evan Shaw),
        disallow middot in Go programs,
        distinguish array, slice literal in error messages,
        fix shift/reduce conflict in go.y export syntax,
        fix unsafe.Sizeof on ideal constants,
        handle use of builtin function outside function call,
        many other bug fixes.
* gob: add support for maps,
        add test for indirect maps, slices, arrays.
* godoc: collect package comments from all package files.
* gofmt: don't lose mandatory semicolons,
        exclude test w/ illegal syntax from test cases,
        fix printing of labels.
* http: prevent crash if remote server is not responding with "HTTP/".
* json: accept escaped slash in string scanner (thanks Michael Hoisie),
        fix array -> non-array decoding.
* libmach: skip __nl_symbol_ptr section on OS X.
* math: amd64 versions of Fdim, Fmax, Fmin,
        signed zero Sqrt special case (thanks Charles L. Dorian).
* misc/kate: convert isn't a built in function (thanks Evan Shaw).
* net: implement BindToDevice,
        implement raw sockets (thanks Christopher Wedgwood).
* netFD: fix race between Close and Read/Write (thanks Michael Hoisie).
* os: add Chtimes function (thanks Brad Fitzpatrick).
* pkg/Makefile: add netchan to standard package list.
* runtime: GOMAXPROCS returns previous value,
        allow large map values,
        avoid allocation for fixed strings,
        correct tracebacks for nascent goroutines, even closures,
        free old hashmap pieces during resizing.
* spec: added imaginary literal to semicolon rules (was missing),
        fix and clarify syntax of conversions,
        simplify section on channel types,
        other minor tweaks.
* strconv: Btoui64 optimizations (thanks Kyle Consalus).
* strings: use copy instead of for loop in Map (thanks Kyle Consalus).
* syscall: implement BindToDevice (thanks Christopher Wedgwood),
        add Utimes on Darwin/FreeBSD, add Futimes everywhere,
        regenerate syscalls for some platforms.
* template: regularize name lookups of interfaces, pointers, and methods.

2010-05-04

In this release we renamed the Windows OS target from 'mingw' to 'windows'.
If you are currently building for 'mingw' you should set GOOS=windows instead.

* 5l, 6l, 8l, runtime: make -s binaries work.
* 5l, 6l, 8l: change ELF header so that strip doesn't destroy binary.
* 8l: fix absolute path detection on Windows.
* big: new functions, optimizations, and cleanups,
	add bitwise methods for Int (thanks Evan Shaw).
* bytes: Change IndexAny to look for UTF-8 encoded characters.
* darwin: bsdthread_create can fail; print good error.
* fmt: %T missing print <nil> for nil (thanks Christopher Wedgwood).
* gc: many fixes.
* misc/cgo/gmp: fix bug in SetString.
* net: fix resolv.conf EOF without newline bug (thanks Christopher Wedgwood).
* spec: some small clarifications (no language changes).
* syscall: add EWOULDBLOCK to sycall_nacl.go,
	force O_LARGEFILE in Linux open system call,
	handle EOF on pipe - special case on Windows (thanks Alex Brainman),
	mingw Sleep (thanks Joe Poirier).
* test/bench: import new fasta C reference, update Go, optimizations.
* test: test of static initialization (fails).
* vector: use correct capacity in call to make.
* xml: allow text segments to end at EOF.

2010-04-27

This release includes a new Codelab that illustrates the construction of a
simple wiki web application: 
	http://golang.org/doc/codelab/wiki/

It also includes a Codewalk framework for documenting code. See:
	http://golang.org/doc/codewalk/

Other changes:
* 6g: fix need for parens around array index expression.
* 6l, 8l: include ELF header in PT_LOAD mapping for text segment.
* arm: add android runner script,
	support for printing floats.
* big: implemented Karatsuba multiplication,
	many fixes and improvements (thanks Evan Shaw).
* bytes: add Next method to Buffer, simplify Read,
	shuffle implementation, making WriteByte 50% faster.
* crypto/tls: simpler implementation of record layer.
* exp/eval: fixes (thanks Evan Shaw).
* flag: eliminate unnecessary structs.
* gc: better windows support,
	cmplx typecheck bug fix,
	more specific error for statements at top level.
* go/parser: don't require unnecessary parens.
* godoc: exclude duplicate entries (thanks Andrei Vieru),
	use int64 for timestamps (thanks Christopher Wedgwood).
* gofmt: fine-tune stripping of parentheses,
* json: Marshal, Unmarshal using new scanner,
	preserve field name case by default,
	scanner, Compact, Indent, and tests,
	support for streaming.
* libmach: disassemble MOVLQZX correctly.
* math: more special cases for signed zero (thanks Charles L. Dorian).
* net: add Pipe,
	fix bugs in packStructValue (thanks Michael Hoisie),
	introduce net.Error interface.
* os: FileInfo: regularize the types of some fields,
	create sys_bsd.go (thanks Giles Lean),
	mingw bug fixes (thanks Alex Brainman).
* reflect: add FieldByNameFunc (thanks Raif S. Naffah),
	implement Set(nil), SetValue(nil) for PtrValue and MapValue.
* regexp: allow escaping of any punctuation.
* rpc/jsonrpc: support for jsonrpc wire encoding.
* rpc: abstract client and server encodings,
	add Close() method to rpc.Client.
* runtime: closures, defer bug fix for Native Client,
	rename cgo2c, *.cgo to goc2c, *.goc to avoid confusion with real cgo.
	several other fixes.
* scanner: implement Peek() to look at the next char w/o advancing.
* strings: add ReadRune to Reader, add FieldsFunc (thanks Kyle Consalus).
* syscall: match linux Setsid function signature to darwin,
	mingw bug fixes (thanks Alex Brainman).
* template: fix handling of pointer inside interface.
* test/bench: add fannkuch-parallel.go (thanks Kyle Consalus),
	pidigits ~10% performance win by using adds instead of shifts.
* time: remove incorrect time.ISO8601 and add time.RFC3339 (thanks Micah Stetson).
* utf16: add DecodeRune, EncodeRune.
* xml: add support for XML marshalling embedded structs (thanks Raif S. Naffah),
	new "innerxml" tag to collect inner XML.

2010-04-13

This release contains many changes:

* 8l: add DOS stub to PE binaries (thanks Evan Shaw).
* cgo: add //export.
* cmath: new complex math library (thanks Charles L. Dorian).
* docs: update to match current coding style (thanks Christopher Wedgwood).
* exp/eval: fix example and add target to Makefile (thanks Evan Shaw).
* fmt: change behaviour of format verb %b to match %x when negative (thanks Andrei Vieru).
* gc: compile s == "" as len(s) == 0,
	distinguish fatal compiler bug from error+exit,
	fix alignment on non-amd64,
	good syntax error for defer func() {} - missing fina (),
	implement panic and recover,
	zero unnamed return values on entry if func has defer.
* goyacc: change to be reentrant (thanks Roger Peppe).
* io/ioutil: fix bug in ReadFile when Open succeeds but Stat fails.
* kate: update for recent language changes (thanks Evan Shaw).
* libcgo: initial mingw port work - builds but untested (thanks Joe Poirier).
* math: new functions and special cases (thanks Charles L. Dorian) 
* net: use chan bool instead of chan *netFD to avoid cycle.
* netchan: allow client to send as well as receive.
* nntp: new package, NNTP client (thanks Conrad Meyer).
* os: rename os.Dir to os.FileInfo.
* rpc: don't log normal EOF,
	fix ServeConn to block as documented.
* runtime: many bug fixes, better ARM support.
* strings: add IndexRune, Trim, TrimLeft, TrimRight, etc (thanks Michael Hoisie).
* syscall: implement some mingw syscalls required by os (thanks Alex Brainman).
* test/bench: add k-nucleotide-parallel (thanks Kyle Consalus).
* Unicode: add support for Turkish case mapping.
* xgb: move from the main repository to http://code.google.com/p/x-go-binding/

2010-03-30

This release contains three language changes:

1. Accessing a non-existent key in a map is no longer a run-time error.  
It now evaluates to the zero value for that type.  For example:
        x := myMap[i]   is now equivalent to:   x, _ := myMap[i]

2. It is now legal to take the address of a function's return value.  
The return values are copied back to the caller only after deferred
functions have run.

3. The functions panic and recover, intended for reporting and recovering from
failure, have been added to the spec:
	http://golang.org/doc/go_spec.html#Handling_panics 
In a related change, panicln is gone, and panic is now a single-argument
function.  Panic and recover are recognized by the gc compilers but the new
behavior is not yet implemented.

The ARM build is broken in this release; ARM users should stay at release.2010-03-22.

Other changes:
* bytes, strings: add IndexAny.
* cc/ld: Add support for #pragma dynexport,
        Rename dynld to dynimport throughout. Cgo users will need to rerun cgo.
* expvar: default publishings for cmdline, memstats
* flag: add user-defined flag types.
* gc: usual bug fixes
* go/ast: generalized ast filtering.
* go/printer: avoid reflect in print.
* godefs: fix handling of negative constants.
* godoc: export pprof debug information, exported variables,
        support for filtering of command-line output in -src mode,
        use http GET for remote search instead of rpc.
* gofmt: don't convert multi-line functions into one-liners,
        preserve newlines in multiline selector expressions (thanks Risto Jaakko Saarelma).
* goinstall: include command name in error reporting (thanks Andrey Mirtchovski)
* http: add HandleFunc as shortcut to Handle(path, HandlerFunc(func))
* make: use actual dependency for install
* math: add J1, Y1, Jn, Yn, J0, Y0 (Bessel functions) (thanks Charles L. Dorian)
* prof: add pprof from google-perftools
* regexp: don't return non-nil *Regexp if there is an error.
* runtime: add Callers,
        add malloc sampling, pprof interface,
        add memory profiling, more statistics to runtime.MemStats,
        implement missing destroylock() (thanks Alex Brainman),
        more malloc statistics,
        run all finalizers in a single goroutine,
        Goexit runs deferred calls.
* strconv: add Atob and Btoa,
        Unquote could wrongly return a nil error on error (thanks Roger Peppe).
* syscall: add IPV6 constants,
        add syscall_bsd.go for Darwin and other *BSDs (thanks Giles Lean),
        implement SetsockoptString (thanks Christopher Wedgwood).
* websocket: implement new protocol (thanks Fumitoshi Ukai).
* xgb: fix request length and request size (thanks Firmansyah Adiputra).
* xml: add CopyToken (thanks Kyle Consalus),
        add line numbers to syntax errors (thanks Kyle Consalus),
        use io.ReadByter in place of local readByter (thanks Raif S. Naffah). 

2010-03-22

With this release we announce the launch of the Go Blog:
	http://blog.golang.org/
The first post is a brief update covering what has happened since the launch.

This release contains some new packages and functionality, and many fixes:
* 6g/8g: fix issues with complex data types, other bug fixes.
* Makefiles: refactored to make writing external Makefiles easier.
* crypto/rand: new package.
* godoc: implemented command-line search via RPC,
	improved comment formatting: recognize URLs.
* gofmt: more consistent formatting of const/var decls.
* http: add Error helper function,
	add ParseQuery (thanks Petar Maymounkov),
	change RawPath to mean raw path, not raw everything-after-scheme.
* image/jpeg: fix typos.
* json: add MarshalIndent (accepts user-specified indent string).
* math: add Gamma function (thanks Charles L. Dorian).
* misc/bbedit: support for cmplx, real, imag (thanks Anthony Starks).
* misc/vim: add new complex types, functions and literals.
* net: fix IPMask.String not to crash on all-0xff mask.
* os: drop File finalizer after normal Close.
* runtime: add GOROOT and Version,
	lock finalizer table accesses.
* sha512: add sha384 (truncated version) (thanks Conrad Meyer).
* syscall: add const ARCH, analogous to OS.
* syscall: further additions to mingw port (thanks Alex Brainman).
* template: fixed html formatter []byte input bug.
* utf16: new package.
* version.bash: cope with ancient Mercurial.
* websocket: use URL.RawPath to construct WebSocket-Location: header.

2010-03-15

This release includes a language change: support for complex numbers.
	http://golang.org/doc/go_spec.html#Imaginary_literals
	http://golang.org/doc/go_spec.html#Complex_numbers
There is no library support as yet.

This release also includes the goinstall command-line tool. 
	http://golang.org/cmd/goinstall/
	http://groups.google.com/group/golang-nuts/t/f091704771128e32

* 5g/6g/8g: fix double function call in slice.
* arm: cleanup build warnings. (thanks Dean Prichard)
* big: fix mistakes with probablyPrime.
* bufio: add WriteRune.
* bytes: add ReadRune and WriteRune to bytes.Buffer.
* cc: stack split bug fix.
* crypto: add SHA-224 to sha256, add sha512 package. (thanks Conrad Meyer)
* crypto/ripemd160: new package. (thanks Raif S. Naffah)
* crypto/rsa: don't use safe primes.
* gc: avoid fixed length buffer cleanbuf. (thanks Dean Prichard)
	better compilation of floating point +=
	fix crash on complicated arg to make slice.
	remove duplicate errors, give better error for I.(T)
* godoc: support for multiple packages in a directory, other fixes.
* gofmt: bug fixes.
* hash: add Sum64 interface.
* hash/crc32: add Update function.
* hash/crc64: new package implementing 64-bit CRC.
* math: add ilogb, logb, remainder. (thanks Charles L. Dorian) 
* regexp: add ReplaceAllFunc, ReplaceAllStringFunc.
* runtime: clock garbage collection on bytes allocated, not pages in use.
* strings: make Split(s, "", n) faster. (thanks Spring Mc)
* syscall: minimal mingw version of syscall. (thanks Alex Brainman)
* template: add ParseFile, MustParseFile.

2010-03-04

There is one language change: the ability to convert a string to []byte or 
[]int.  This deprecates the strings.Bytes and strings.Runes functions.
You can convert your existing sources using these gofmt commands:
	gofmt -r 'strings.Bytes(x) -> []byte(x)' -w file-or-directory-list
	gofmt -r 'strings.Runes(x) -> []int(x)' -w file-or-directory-list
After running these you might need to delete unused imports of the "strings" 
package.

Other changes and fixes:
* 6l/8l/5l: add -r option
* 8g: make a[byte(x)] truncate x
* codereview.py: fix for compatibility with hg >=1.4.3
* crypto/blowfish: new package (thanks Raif S. Naffah)
* dashboard: more performance tuning
* fmt: use String method in %q to get the value to quote.
* gofmt: several cosmetic changes
* http: fix handling of Connection: close, bug in http.Post
* net: correct DNS configuration,
	fix network timeout boundary condition,
	put [ ] around IPv6 addresses for Dial.
* path: add Match,
	fix bug in Match with non-greedy stars (thanks Kevin Ballard)
* strings: delete Bytes, Runes (see above)
* tests: an Eratosthenesque concurrent prime sieve (thanks Anh Hai Trinh) 

2010-02-23

This release is mainly bug fixes and a little new code.
There are no language changes.

6g/5g/8g: bug fixes
8a/8l: Added FCMOVcc instructions (thanks Evan Shaw and Charles Dorian)
crypto/x509: support certificate creation
dashboard: caching to avoid datastore queries
exec: add dir argument to Run
godoc: bug fixes and code cleanups
http: continued implementation and bug fixes (thanks Petar Maymounkov)
json: fix quoted strings in Marshal (thanks Sergei Skorobogatov)
math: more functions, test cases, and benchmarks (thanks Charles L. Dorian)
misc/bbedit: treat predeclared identifiers as "keywords" (thanks Anthony Starks)
net: disable UDP server test (flaky on various architectures)
runtime: work around Linux kernel bug in futex,
	pchw is now tiny
sync: fix to work on armv5 (thanks Dean Prichard)
websocket: fix binary frame size decoding (thanks Timo Savola)
xml: allow unquoted attribute values in non-Strict mode (thanks Amrut Joshi)
	treat bool as value in Unmarshal (thanks Michael Hoisie) 

2010-02-17

There are two small language changes:
* NUL bytes may be rejected in souce files, and the tools do reject them.
* Conversions from string to []int and []byte are defined but not yet implemented.

Other changes and fixes:
* 5a/6a/8a/5c/6c/8c: remove fixed-size arrays for -I and -D options (thanks Dean Prichard)
* 5c/6c/8c/5l/6l/8l: add -V flag to display version number
* 5c/6c/8c: use "cpp" not "/bin/cpp" for external preprocessor (thanks Giles Lean)
* 8a/8l: Added CMOVcc instructions (thanks Evan Shaw)
* 8l: pe executable building code changed to include import table for kernel32.dll functions (thanks Alex Brainman)
* 5g/6g/8g: bug fixes
* asn1: bug fixes and additions (incl marshalling)
* build: fix build for Native Client, Linux/ARM
* dashboard: show benchmarks, add garbage collector benchmarks
* encoding/pem: add marshalling support
* exp/draw: fast paths for a nil mask
* godoc: support for directories outside $GOROOT
* http: sort header keys when writing Response or Request to wire (thanks Petar Maymounkov)
* math: special cases and new functions (thanks Charles Dorian)
* mime: new package, used in http (thanks Michael Hoisie)
* net: dns bug fix - use random request id
* os: finalize File, to close fd.
* path: make Join variadic (thanks Stephen Weinberg)
* regexp: optimization bug fix
* runtime: misc fixes and optimizations
* syscall: make signature of Umask on OS X, FreeBSD match Linux. (thanks Giles Lean)

2010-02-04

There is one language change: support for ...T parameters:
	http://golang.org/doc/go_spec.html#Function_types

You can now check build status on various platforms at the Go Dashboard: 
	http://godashboard.appspot.com

* 5l/6l/8l: several minor fixes
* 5a/6a/8a/5l/6l/8l: avoid overflow of symb buffer (thanks Dean Prichard)
* compress/gzip: gzip deflater (i.e., writer)
* debug/proc: add mingw specific build stubs (thanks Joe Poirier)
* exp/draw: separate the source-point and mask-point in Draw
* fmt: handle nils safely in Printf
* gccgo: error messages now match those of gc
* godoc: several fixes
* http: bug fixes, revision of Request/Response (thanks Petar Maymounkov)
* image: new image.A type to represent anti-aliased font glyphs
	add named colors (e.g. image.Blue), suitable for exp/draw
* io: fixed bugs in Pipe
* malloc: merge into package runtime
* math: fix tests on FreeBSD (thanks Devon H. O'Dell)
	add functions; update tests and special cases (thanks Charles L. Dorian)
* os/signal: send SIGCHLDs to Incoming (thanks Chris Wedgwood)
* reflect: add StringHeader to reflect
* runtime: add SetFinalizer
* time: Sleep through interruptions (thanks Chris Wedgwood)
	add RFC822 formats
	experimental implemenation of Ticker using two goroutines for all tickers
* xml: allow underscores in XML element names (thanks Michael Hoisie)
	allow any scalar type in xml.Unmarshal

2010-01-27

There are two small language changes: the meaning of chan <- chan int
is now defined, and functions returning functions do not need to 
parenthesize the result type.

There is one significant implementation change: the compilers can
handle multiple packages using the same name in a single binary.
In the gc compilers, this comes at the cost of ensuring that you
always import a particular package using a consistent import path.
In the gccgo compiler, the cost is that you must use the -fgo-prefix
flag to pass a unique prefix (like the eventual import path).

5a/6a/8a: avoid use of fixed-size buffers (thanks Dean Prichard)
5g, 6g, 8g: many minor bug fixes
bufio: give Writer.WriteString same signature as bytes.Buffer.WriteString.
container/list: PushFrontList, PushBackList (thanks Jan Hosang)
godoc: trim spaces from search query (thanks Christopher Wedgwood)
hash: document that Sum does not change state, fix crypto hashes
http: bug fixes, revision of Request/Response (thanks Petar Maymounkov)
math: more handling of IEEE 754 special cases (thanks Charles Dorian)
misc/dashboard: new build dashboard
net: allow UDP broadcast,
	use /etc/hosts to resolve names (thanks Yves Junqueira, Michael Hoisie)
netchan: beginnings of new package for connecting channels across a network
os: allow FQDN in Hostname test (thanks Icarus Sparry)
reflect: garbage collection bug in Call
runtime: demo of Go on raw (emulated) hw in runtime/pchw,
	performance fix on OS X
spec: clarify meaning of chan <- chan int,
	func() func() int is allowed now,
	define ... T (not yet implemented)
template: can use interface values
time: fix for +0000 time zone,
	more robust tick.Stop.
xgb: support for authenticated connections (thanks Firmansyah Adiputra)
xml: add Escape (thanks Stephen Weinberg)

2010-01-13

This release is mainly bug fixes with a little new code.
There are no language changes.

build: $GOBIN should no longer be required in $PATH (thanks Devon H. O'Dell),
	new package target "make bench" to run benchmarks
8g: faster float -> uint64 conversion (thanks Evan Shaw)
5g, 6g, 8g:
	clean opnames.h to avoid stale errors (thanks Yongjian Xu),
	a handful of small compiler fixes
5g, 6g, 8g, 5l, 6l, 8l: ignore $GOARCH, which is implied by name of tool
6prof: support for writing input files for google-perftools's pprof
asn1: fix a few structure-handling bugs
cgo: many bug fixes (thanks Devon H. O'Dell)
codereview: repeated "hg mail" sends "please take another look"
gob: reserve ids for future expansion
godoc: distinguish HTML generation from plain text HTML escaping (thanks Roger Peppe)
gofmt: minor bug fixes, removed -oldprinter flag
http: add CanonicalPath (thanks Ivan Krasin),
	avoid header duplication in Response.Write,
	correctly escape/unescape URL sections
io: new interface ReadByter
json: better error, pointer handling in Marshal (thanks Ivan Krasin)
libmach: disassembly of FUCOMI, etc (thanks Evan Shaw)
math: special cases for most functions and 386 hardware Sqrt (thanks Charles Dorian)
misc/dashboard: beginning of a build dashboard at godashboard.appspot.com.
misc/emacs: handling of new semicolon rules (thanks Austin Clements),
	empty buffer bug fix (thanks Kevin Ballard)
misc/kate: highlighting improvements (tahnks Evan Shaw)
os/signal: add signal names: signal.SIGHUP, etc (thanks David Symonds)
runtime: preliminary Windows support (thanks Hector Chu),
	preemption polling to reduce garbage collector pauses
scanner: new lightweight scanner package
template: bug fix involving spaces before a delimited block
test/bench: updated timings
time: new Format, Parse functions

2010-01-05

This release is mainly bug fixes.  There are no language changes.

6prof: now works on 386
8a, 8l: add FCOMI, FCOMIP, FUCOMI, and FUCOMIP (thanks Evan Shaw)
big: fix ProbablyPrime on small numbers
container/vector: faster []-based implementation (thanks Jan Mercl)
crypto/tls: extensions and Next Protocol Negotiation
gob: one encoding bug fix, one decoding bug fix
image/jpeg: support for RST markers
image/png: support for transparent paletted images
misc/xcode: improved support (thanks Ken Friedenbach)
net: return nil Conn on error from Dial (thanks Roger Peppe)
regexp: add Regexp.NumSubexp (thanks Peter Froehlich)
syscall: add Nanosleep on FreeBSD (thanks Devon H. O'Dell)
template: can use map in .repeated section

There is now a public road map, in the repository and online
at http://golang.org/doc/devel/roadmap.html.

2009-12-22

Since the last release there has been one large syntactic change to
the language, already discussed extensively on this list: semicolons
are now implied between statement-ending tokens and newline characters.
See http://groups.google.com/group/golang-nuts/t/5ee32b588d10f2e9 for
details.

By default, gofmt now parses and prints the new lighter weight syntax.
To convert programs written in the old syntax, you can use:

	gofmt -oldparser -w *.go

Since everything was being reformatted anyway, we took the opportunity to
change the way gofmt does alignment.  Now gofmt uses tabs at the start
of a line for basic code alignment, but it uses spaces for alignment of
interior columns.  Thus, in an editor with a fixed-width font, you can
choose your own tab size to change the indentation, and no matter what
tab size you choose, columns will be aligned properly.


In addition to the syntax and formatting changes, there have been many
smaller fixes and updates:

6g,8g,5g: many bug fixes, better registerization,
   build process fix involving mkbuiltin (thanks Yongjian Xu),
   method expressions for concrete types
8l: support for Windows PE files (thanks Hector Chu)
bytes: more efficient Buffer handling
bytes, strings: new function Fields (thanks Andrey Mirtchovski)
cgo: handling of enums (thanks Moriyoshi Koizumi),
    handling of structs with bit fields, multiple files (thanks Devon H. O'Dell),
    installation of .so to non-standard locations
crypto/sha256: new package for SHA 256 (thanks Andy Davis)
encoding/binary: support for slices of fixed-size values (thanks Maxim Ushakov)
exp/vector: experimental alternate vector representation (thanks Jan Mercl)
fmt: %p for chan, map, slice types
gob: a couple more bug fixes
http: support for basic authentication (thanks Ivan Krasin)
image/jpeg: basic JPEG decoder
math: correct handling of Inf and NaN in Pow (thanks Charles Dorian)
misc/bash: completion file for bash (thanks Alex Ray)
os/signal: support for handling Unix signals (thanks David Symonds)
rand: Zipf-distributed random values (thanks William Josephson)
syscall: correct error return bug on 32-bit machines (thanks Christopher Wedgwood)
syslog: new package for writing to Unix syslog daemon (thanks Yves Junqueira)
template: will automatically invoke niladic methods
time: new ISO8601 format generator (thanks Ben Olive)
xgb: converted generator to new syntax (thanks Tor Andersson)
xml: better mapping of tag names to Go identifiers (thanks Kei Son),
    better handling of unexpected EOF (thanks Arvindh Rajesh Tamilmani)

2009-12-09

Since the last release there are two changes to the language: 

* new builtin copy(dst, src) copies n = min(len(dst), len(src)) 
  elements to dst from src and returns n.  It works correctly 
  even if dst and src overlap.  bytes.Copy is gone. 
  Convert your programs using: 
      gofmt -w -r 'bytes.Copy(d, s) -> copy(d, s)' *.go 

* new syntax x[lo:] is shorthand for x[lo:len(x)]. 
  Convert your programs using: 
      gofmt -w -r 'a[b:len(a)] -> a[b:]' *.go 

In addition, there have been many smaller fixes and updates: 

* 6g/8g/5g: many bug fixes 
* 8g: fix 386 floating point stack bug (thanks Charles Dorian) 
* all.bash: now works even when $GOROOT has spaces (thanks Sergio Luis O. B. Correia), 
    starting to make build work with mingw (thanks Hector Chu), 
    FreeBSD support (thanks Devon O'Dell) 
* big: much faster on 386. 
* bytes: new function IndexByte, implemented in assembly 
    new function Runes (thanks Peter Froehlich), 
    performance tuning in bytes.Buffer. 
* codereview: various bugs fixed 
* container/vector: New is gone; just declare a Vector instead. 
    call Resize to set len and cap. 
* cgo: many bug fixes (thanks Eden Li) 
* crypto: added MD4 (thanks Chris Lennert), 
    added XTEA (thanks Adrian O'Grady). 
* crypto/tls: basic client 
* exp/iterable: new functions (thanks Michael Elkins) 
* exp/nacl: native client tree builds again 
* fmt: preliminary performance tuning 
* go/ast: more powerful Visitor (thanks Roger Peppe) 
* gob: a few bug fixes 
* gofmt: better handling of standard input, error reporting (thanks Fazlul Shahriar) 
    new -r flag for rewriting programs 
* gotest: support for Benchmark functions (thanks Trevor Strohman) 
* io: ReadFile, WriteFile, ReadDir now in separate package io/ioutil. 
* json: new Marshal function (thanks Michael Hoisie), 
    better white space handling (thanks Andrew Skiba), 
    decoding into native data structures (thanks Sergey Gromov), 
    handling of nil interface values (thanks Ross Light). 
* math: correct handling of sin/cos of large angles 
* net: better handling of Close (thanks Devon O'Dell and Christopher Wedgwood) 
    support for UDP broadcast (thanks Jonathan Wills), 
    support for empty packets 
* rand: top-level functions now safe to call from multiple goroutines 
(thanks Roger Peppe). 
* regexp: a few easy optimizations 
* rpc: better error handling, a few bug fixes 
* runtime: better signal handling on OS X, malloc fixes, 
    global channel lock is gone. 
* sync: RWMutex now allows concurrent readers (thanks Péter Szabó) 
* template: can use maps as data (thanks James Meneghello) 
* unicode: updated to Unicode 5.2. 
* websocket: new package (thanks Fumitoshi Ukai) 
* xgb: preliminary X Go Bindings (thanks Tor Andersson) 
* xml: fixed crash (thanks Vish Subramanian) 
* misc: bbedit config (thanks Anthony Starks), 
    kate config (thanks Evan Shaw) 
go/doc/docs.html0100644000000000000000000001774112412656737014074 0ustar00rootroot00000000000000

The Go programming language is an open source project to make programmers more productive.

Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.

Installing Go

Getting Started

Instructions for downloading and installing the Go compilers, tools, and libraries.

Learning Go

A Tour of Go

An interactive introduction to Go in three sections. The first section covers basic syntax and data structures; the second discusses methods and interfaces; and the third introduces Go's concurrency primitives. Each section concludes with a few exercises so you can practice what you've learned. You can take the tour online or install it locally.

How to write Go code

Also available as a screencast, this doc explains how to use the go command to fetch, build, and install packages, commands, and run tests.

Effective Go

A document that gives tips for writing clear, idiomatic Go code. A must read for any new Go programmer. It augments the tour and the language specification, both of which should be read first.

Frequently Asked Questions (FAQ)

Answers to common questions about Go.

The Go Wiki

A wiki maintained by the Go community.

More

See the Learn page at the Wiki for more Go learning resources.

References

Package Documentation

The documentation for the Go standard library.

Command Documentation

The documentation for the Go tools.

Language Specification

The official Go Language specification.

The Go Memory Model

A document that specifies the conditions under which reads of a variable in one goroutine can be guaranteed to observe values produced by writes to the same variable in a different goroutine.

Release History

A summary of the changes between Go releases.

Articles

The Go Blog

The official blog of the Go project, featuring news and in-depth articles by the Go team and guests.

Codewalks

Guided tours of Go programs.

Language

Packages

Tools

More

See the Articles page at the Wiki for more Go articles.

Talks

A Video Tour of Go

Three things that make Go fast, fun, and productive: interfaces, reflection, and concurrency. Builds a toy web crawler to demonstrate these.

Code that grows with grace

One of Go's key design goals is code adaptability; that it should be easy to take a simple design and build upon it in a clean and natural way. In this talk Andrew Gerrand describes a simple "chat roulette" server that matches pairs of incoming TCP connections, and then use Go's concurrency mechanisms, interfaces, and standard library to extend it with a web interface and other features. While the function of the program changes dramatically, Go's flexibility preserves the original design as it grows.

Go Concurrency Patterns

Concurrency is the key to designing high performance network services. Go's concurrency primitives (goroutines and channels) provide a simple and efficient means of expressing concurrent execution. In this talk we see how tricky concurrency problems can be solved gracefully with simple Go code.

Advanced Go Concurrency Patterns

This talk expands on the Go Concurrency Patterns talk to dive deeper into Go's concurrency primitives.

More

See the Go Talks site and wiki page for more Go talks.

Non-English Documentation

See the NonEnglish page at the Wiki for localized documentation.

go/doc/effective_go.html0100644000000000000000000034361112412656737015567 0ustar00rootroot00000000000000

Introduction

Go is a new language. Although it borrows ideas from existing languages, it has unusual properties that make effective Go programs different in character from programs written in its relatives. A straightforward translation of a C++ or Java program into Go is unlikely to produce a satisfactory result—Java programs are written in Java, not Go. On the other hand, thinking about the problem from a Go perspective could produce a successful but quite different program. In other words, to write Go well, it's important to understand its properties and idioms. It's also important to know the established conventions for programming in Go, such as naming, formatting, program construction, and so on, so that programs you write will be easy for other Go programmers to understand.

This document gives tips for writing clear, idiomatic Go code. It augments the language specification, the Tour of Go, and How to Write Go Code, all of which you should read first.

Examples

The Go package sources are intended to serve not only as the core library but also as examples of how to use the language. Moreover, many of the packages contain working, self-contained executable examples you can run directly from the golang.org web site, such as this one (if necessary, click on the word "Example" to open it up). If you have a question about how to approach a problem or how something might be implemented, the documentation, code and examples in the library can provide answers, ideas and background.

Formatting

Formatting issues are the most contentious but the least consequential. People can adapt to different formatting styles but it's better if they don't have to, and less time is devoted to the topic if everyone adheres to the same style. The problem is how to approach this Utopia without a long prescriptive style guide.

With Go we take an unusual approach and let the machine take care of most formatting issues. The gofmt program (also available as go fmt, which operates at the package level rather than source file level) reads a Go program and emits the source in a standard style of indentation and vertical alignment, retaining and if necessary reformatting comments. If you want to know how to handle some new layout situation, run gofmt; if the answer doesn't seem right, rearrange your program (or file a bug about gofmt), don't work around it.

As an example, there's no need to spend time lining up the comments on the fields of a structure. Gofmt will do that for you. Given the declaration

type T struct {
    name string // name of the object
    value int // its value
}

gofmt will line up the columns:

type T struct {
    name    string // name of the object
    value   int    // its value
}

All Go code in the standard packages has been formatted with gofmt.

Some formatting details remain. Very briefly:

Indentation
We use tabs for indentation and gofmt emits them by default. Use spaces only if you must.
Line length
Go has no line length limit. Don't worry about overflowing a punched card. If a line feels too long, wrap it and indent with an extra tab.
Parentheses
Go needs fewer parentheses than C and Java: control structures (if, for, switch) do not have parentheses in their syntax. Also, the operator precedence hierarchy is shorter and clearer, so
x<<8 + y<<16
means what the spacing implies, unlike in the other languages.

Commentary

Go provides C-style /* */ block comments and C++-style // line comments. Line comments are the norm; block comments appear mostly as package comments, but are useful within an expression or to disable large swaths of code.

The program—and web server—godoc processes Go source files to extract documentation about the contents of the package. Comments that appear before top-level declarations, with no intervening newlines, are extracted along with the declaration to serve as explanatory text for the item. The nature and style of these comments determines the quality of the documentation godoc produces.

Every package should have a package comment, a block comment preceding the package clause. For multi-file packages, the package comment only needs to be present in one file, and any one will do. The package comment should introduce the package and provide information relevant to the package as a whole. It will appear first on the godoc page and should set up the detailed documentation that follows.

/*
Package regexp implements a simple library for regular expressions.

The syntax of the regular expressions accepted is:

    regexp:
        concatenation { '|' concatenation }
    concatenation:
        { closure }
    closure:
        term [ '*' | '+' | '?' ]
    term:
        '^'
        '$'
        '.'
        character
        '[' [ '^' ] character-ranges ']'
        '(' regexp ')'
*/
package regexp

If the package is simple, the package comment can be brief.

// Package path implements utility routines for
// manipulating slash-separated filename paths.

Comments do not need extra formatting such as banners of stars. The generated output may not even be presented in a fixed-width font, so don't depend on spacing for alignment—godoc, like gofmt, takes care of that. The comments are uninterpreted plain text, so HTML and other annotations such as _this_ will reproduce verbatim and should not be used. One adjustment godoc does do is to display indented text in a fixed-width font, suitable for program snippets. The package comment for the fmt package uses this to good effect.

Depending on the context, godoc might not even reformat comments, so make sure they look good straight up: use correct spelling, punctuation, and sentence structure, fold long lines, and so on.

Inside a package, any comment immediately preceding a top-level declaration serves as a doc comment for that declaration. Every exported (capitalized) name in a program should have a doc comment.

Doc comments work best as complete sentences, which allow a wide variety of automated presentations. The first sentence should be a one-sentence summary that starts with the name being declared.

// Compile parses a regular expression and returns, if successful, a Regexp
// object that can be used to match against text.
func Compile(str string) (regexp *Regexp, err error) {

If the name always begins the comment, the output of godoc can usefully be run through grep. Imagine you couldn't remember the name "Compile" but were looking for the parsing function for regular expressions, so you ran the command,

$ godoc regexp | grep parse

If all the doc comments in the package began, "This function...", grep wouldn't help you remember the name. But because the package starts each doc comment with the name, you'd see something like this, which recalls the word you're looking for.

$ godoc regexp | grep parse
    Compile parses a regular expression and returns, if successful, a Regexp
    parsed. It simplifies safe initialization of global variables holding
    cannot be parsed. It simplifies safe initialization of global variables
$

Go's declaration syntax allows grouping of declarations. A single doc comment can introduce a group of related constants or variables. Since the whole declaration is presented, such a comment can often be perfunctory.

// Error codes returned by failures to parse an expression.
var (
    ErrInternal      = errors.New("regexp: internal error")
    ErrUnmatchedLpar = errors.New("regexp: unmatched '('")
    ErrUnmatchedRpar = errors.New("regexp: unmatched ')'")
    ...
)

Grouping can also indicate relationships between items, such as the fact that a set of variables is protected by a mutex.

var (
    countLock   sync.Mutex
    inputCount  uint32
    outputCount uint32
    errorCount  uint32
)

Names

Names are as important in Go as in any other language. They even have semantic effect: the visibility of a name outside a package is determined by whether its first character is upper case. It's therefore worth spending a little time talking about naming conventions in Go programs.

Package names

When a package is imported, the package name becomes an accessor for the contents. After

import "bytes"

the importing package can talk about bytes.Buffer. It's helpful if everyone using the package can use the same name to refer to its contents, which implies that the package name should be good: short, concise, evocative. By convention, packages are given lower case, single-word names; there should be no need for underscores or mixedCaps. Err on the side of brevity, since everyone using your package will be typing that name. And don't worry about collisions a priori. The package name is only the default name for imports; it need not be unique across all source code, and in the rare case of a collision the importing package can choose a different name to use locally. In any case, confusion is rare because the file name in the import determines just which package is being used.

Another convention is that the package name is the base name of its source directory; the package in src/pkg/encoding/base64 is imported as "encoding/base64" but has name base64, not encoding_base64 and not encodingBase64.

The importer of a package will use the name to refer to its contents, so exported names in the package can use that fact to avoid stutter. (Don't use the import . notation, which can simplify tests that must run outside the package they are testing, but should otherwise be avoided.) For instance, the buffered reader type in the bufio package is called Reader, not BufReader, because users see it as bufio.Reader, which is a clear, concise name. Moreover, because imported entities are always addressed with their package name, bufio.Reader does not conflict with io.Reader. Similarly, the function to make new instances of ring.Ring—which is the definition of a constructor in Go—would normally be called NewRing, but since Ring is the only type exported by the package, and since the package is called ring, it's called just New, which clients of the package see as ring.New. Use the package structure to help you choose good names.

Another short example is once.Do; once.Do(setup) reads well and would not be improved by writing once.DoOrWaitUntilDone(setup). Long names don't automatically make things more readable. A helpful doc comment can often be more valuable than an extra long name.

Getters

Go doesn't provide automatic support for getters and setters. There's nothing wrong with providing getters and setters yourself, and it's often appropriate to do so, but it's neither idiomatic nor necessary to put Get into the getter's name. If you have a field called owner (lower case, unexported), the getter method should be called Owner (upper case, exported), not GetOwner. The use of upper-case names for export provides the hook to discriminate the field from the method. A setter function, if needed, will likely be called SetOwner. Both names read well in practice:

owner := obj.Owner()
if owner != user {
    obj.SetOwner(user)
}

Interface names

By convention, one-method interfaces are named by the method name plus an -er suffix or similar modification to construct an agent noun: Reader, Writer, Formatter, CloseNotifier etc.

There are a number of such names and it's productive to honor them and the function names they capture. Read, Write, Close, Flush, String and so on have canonical signatures and meanings. To avoid confusion, don't give your method one of those names unless it has the same signature and meaning. Conversely, if your type implements a method with the same meaning as a method on a well-known type, give it the same name and signature; call your string-converter method String not ToString.

MixedCaps

Finally, the convention in Go is to use MixedCaps or mixedCaps rather than underscores to write multiword names.

Semicolons

Like C, Go's formal grammar uses semicolons to terminate statements, but unlike in C, those semicolons do not appear in the source. Instead the lexer uses a simple rule to insert semicolons automatically as it scans, so the input text is mostly free of them.

The rule is this. If the last token before a newline is an identifier (which includes words like int and float64), a basic literal such as a number or string constant, or one of the tokens

break continue fallthrough return ++ -- ) }

the lexer always inserts a semicolon after the token. This could be summarized as, “if the newline comes after a token that could end a statement, insert a semicolon”.

A semicolon can also be omitted immediately before a closing brace, so a statement such as

    go func() { for { dst <- <-src } }()

needs no semicolons. Idiomatic Go programs have semicolons only in places such as for loop clauses, to separate the initializer, condition, and continuation elements. They are also necessary to separate multiple statements on a line, should you write code that way.

One consequence of the semicolon insertion rules is that you cannot put the opening brace of a control structure (if, for, switch, or select) on the next line. If you do, a semicolon will be inserted before the brace, which could cause unwanted effects. Write them like this

if i < f() {
    g()
}

not like this

if i < f()  // wrong!
{           // wrong!
    g()
}

Control structures

The control structures of Go are related to those of C but differ in important ways. There is no do or while loop, only a slightly generalized for; switch is more flexible; if and switch accept an optional initialization statement like that of for; break and continue statements take an optional label to identify what to break or continue; and there are new control structures including a type switch and a multiway communications multiplexer, select. The syntax is also slightly different: there are no parentheses and the bodies must always be brace-delimited.

If

In Go a simple if looks like this:

if x > 0 {
    return y
}

Mandatory braces encourage writing simple if statements on multiple lines. It's good style to do so anyway, especially when the body contains a control statement such as a return or break.

Since if and switch accept an initialization statement, it's common to see one used to set up a local variable.

if err := file.Chmod(0664); err != nil {
    log.Print(err)
    return err
}

In the Go libraries, you'll find that when an if statement doesn't flow into the next statement—that is, the body ends in break, continue, goto, or return—the unnecessary else is omitted.

f, err := os.Open(name)
if err != nil {
    return err
}
codeUsing(f)

This is an example of a common situation where code must guard against a sequence of error conditions. The code reads well if the successful flow of control runs down the page, eliminating error cases as they arise. Since error cases tend to end in return statements, the resulting code needs no else statements.

f, err := os.Open(name)
if err != nil {
    return err
}
d, err := f.Stat()
if err != nil {
    f.Close()
    return err
}
codeUsing(f, d)

Redeclaration and reassignment

An aside: The last example in the previous section demonstrates a detail of how the := short declaration form works. The declaration that calls os.Open reads,

f, err := os.Open(name)

This statement declares two variables, f and err. A few lines later, the call to f.Stat reads,

d, err := f.Stat()

which looks as if it declares d and err. Notice, though, that err appears in both statements. This duplication is legal: err is declared by the first statement, but only re-assigned in the second. This means that the call to f.Stat uses the existing err variable declared above, and just gives it a new value.

In a := declaration a variable v may appear even if it has already been declared, provided:

  • this declaration is in the same scope as the existing declaration of v (if v is already declared in an outer scope, the declaration will create a new variable §),
  • the corresponding value in the initialization is assignable to v, and
  • there is at least one other variable in the declaration that is being declared anew.

This unusual property is pure pragmatism, making it easy to use a single err value, for example, in a long if-else chain. You'll see it used often.

§ It's worth noting here that in Go the scope of function parameters and return values is the same as the function body, even though they appear lexically outside the braces that enclose the body.

For

The Go for loop is similar to—but not the same as—C's. It unifies for and while and there is no do-while. There are three forms, only one of which has semicolons.

// Like a C for
for init; condition; post { }

// Like a C while
for condition { }

// Like a C for(;;)
for { }

Short declarations make it easy to declare the index variable right in the loop.

sum := 0
for i := 0; i < 10; i++ {
    sum += i
}

If you're looping over an array, slice, string, or map, or reading from a channel, a range clause can manage the loop.

for key, value := range oldMap {
    newMap[key] = value
}

If you only need the first item in the range (the key or index), drop the second:

for key := range m {
    if key.expired() {
        delete(m, key)
    }
}

If you only need the second item in the range (the value), use the blank identifier, an underscore, to discard the first:

sum := 0
for _, value := range array {
    sum += value
}

The blank identifier has many uses, as described in a later section.

For strings, the range does more work for you, breaking out individual Unicode code points by parsing the UTF-8. Erroneous encodings consume one byte and produce the replacement rune U+FFFD. (The name (with associated builtin type) rune is Go terminology for a single Unicode code point. See the language specification for details.) The loop

for pos, char := range "日本\x80語" { // \x80 is an illegal UTF-8 encoding
    fmt.Printf("character %#U starts at byte position %d\n", char, pos)
}

prints

character U+65E5 '日' starts at byte position 0
character U+672C '本' starts at byte position 3
character U+FFFD '�' starts at byte position 6
character U+8A9E '語' starts at byte position 7

Finally, Go has no comma operator and ++ and -- are statements not expressions. Thus if you want to run multiple variables in a for you should use parallel assignment (although that precludes ++ and --).

// Reverse a
for i, j := 0, len(a)-1; i < j; i, j = i+1, j-1 {
    a[i], a[j] = a[j], a[i]
}

Switch

Go's switch is more general than C's. The expressions need not be constants or even integers, the cases are evaluated top to bottom until a match is found, and if the switch has no expression it switches on true. It's therefore possible—and idiomatic—to write an if-else-if-else chain as a switch.

func unhex(c byte) byte {
    switch {
    case '0' <= c && c <= '9':
        return c - '0'
    case 'a' <= c && c <= 'f':
        return c - 'a' + 10
    case 'A' <= c && c <= 'F':
        return c - 'A' + 10
    }
    return 0
}

There is no automatic fall through, but cases can be presented in comma-separated lists.

func shouldEscape(c byte) bool {
    switch c {
    case ' ', '?', '&', '=', '#', '+', '%':
        return true
    }
    return false
}

Although they are not nearly as common in Go as some other C-like languages, break statements can be used to terminate a switch early. Sometimes, though, it's necessary to break out of a surrounding loop, not the switch, and in Go that can be accomplished by putting a label on the loop and "breaking" to that label. This example shows both uses.

Loop:
	for n := 0; n < len(src); n += size {
		switch {
		case src[n] < sizeOne:
			if validateOnly {
				break
			}
			size = 1
			update(src[n])

		case src[n] < sizeTwo:
			if n+1 >= len(src) {
				err = errShortInput
				break Loop
			}
			if validateOnly {
				break
			}
			size = 2
			update(src[n] + src[n+1]<<shift)
		}
	}

Of course, the continue statement also accepts an optional label but it applies only to loops.

To close this section, here's a comparison routine for byte slices that uses two switch statements:

// Compare returns an integer comparing the two byte slices,
// lexicographically.
// The result will be 0 if a == b, -1 if a < b, and +1 if a > b
func Compare(a, b []byte) int {
    for i := 0; i < len(a) && i < len(b); i++ {
        switch {
        case a[i] > b[i]:
            return 1
        case a[i] < b[i]:
            return -1
        }
    }
    switch {
    case len(a) > len(b):
        return 1
    case len(a) < len(b):
        return -1
    }
    return 0
}

Type switch

A switch can also be used to discover the dynamic type of an interface variable. Such a type switch uses the syntax of a type assertion with the keyword type inside the parentheses. If the switch declares a variable in the expression, the variable will have the corresponding type in each clause. It's also idiomatic to reuse the name in such cases, in effect declaring a new variable with the same name but a different type in each case.

var t interface{}
t = functionOfSomeType()
switch t := t.(type) {
default:
    fmt.Printf("unexpected type %T", t)       // %T prints whatever type t has
case bool:
    fmt.Printf("boolean %t\n", t)             // t has type bool
case int:
    fmt.Printf("integer %d\n", t)             // t has type int
case *bool:
    fmt.Printf("pointer to boolean %t\n", *t) // t has type *bool
case *int:
    fmt.Printf("pointer to integer %d\n", *t) // t has type *int
}

Functions

Multiple return values

One of Go's unusual features is that functions and methods can return multiple values. This form can be used to improve on a couple of clumsy idioms in C programs: in-band error returns such as -1 for EOF and modifying an argument passed by address.

In C, a write error is signaled by a negative count with the error code secreted away in a volatile location. In Go, Write can return a count and an error: “Yes, you wrote some bytes but not all of them because you filled the device”. The signature of the Write method on files from package os is:

func (file *File) Write(b []byte) (n int, err error)

and as the documentation says, it returns the number of bytes written and a non-nil error when n != len(b). This is a common style; see the section on error handling for more examples.

A similar approach obviates the need to pass a pointer to a return value to simulate a reference parameter. Here's a simple-minded function to grab a number from a position in a byte slice, returning the number and the next position.

func nextInt(b []byte, i int) (int, int) {
    for ; i < len(b) && !isDigit(b[i]); i++ {
    }
    x := 0
    for ; i < len(b) && isDigit(b[i]); i++ {
        x = x*10 + int(b[i]) - '0'
    }
    return x, i
}

You could use it to scan the numbers in an input slice b like this:

    for i := 0; i < len(b); {
        x, i = nextInt(b, i)
        fmt.Println(x)
    }

Named result parameters

The return or result "parameters" of a Go function can be given names and used as regular variables, just like the incoming parameters. When named, they are initialized to the zero values for their types when the function begins; if the function executes a return statement with no arguments, the current values of the result parameters are used as the returned values.

The names are not mandatory but they can make code shorter and clearer: they're documentation. If we name the results of nextInt it becomes obvious which returned int is which.

func nextInt(b []byte, pos int) (value, nextPos int) {

Because named results are initialized and tied to an unadorned return, they can simplify as well as clarify. Here's a version of io.ReadFull that uses them well:

func ReadFull(r Reader, buf []byte) (n int, err error) {
    for len(buf) > 0 && err == nil {
        var nr int
        nr, err = r.Read(buf)
        n += nr
        buf = buf[nr:]
    }
    return
}

Defer

Go's defer statement schedules a function call (the deferred function) to be run immediately before the function executing the defer returns. It's an unusual but effective way to deal with situations such as resources that must be released regardless of which path a function takes to return. The canonical examples are unlocking a mutex or closing a file.

// Contents returns the file's contents as a string.
func Contents(filename string) (string, error) {
    f, err := os.Open(filename)
    if err != nil {
        return "", err
    }
    defer f.Close()  // f.Close will run when we're finished.

    var result []byte
    buf := make([]byte, 100)
    for {
        n, err := f.Read(buf[0:])
        result = append(result, buf[0:n]...) // append is discussed later.
        if err != nil {
            if err == io.EOF {
                break
            }
            return "", err  // f will be closed if we return here.
        }
    }
    return string(result), nil // f will be closed if we return here.
}

Deferring a call to a function such as Close has two advantages. First, it guarantees that you will never forget to close the file, a mistake that's easy to make if you later edit the function to add a new return path. Second, it means that the close sits near the open, which is much clearer than placing it at the end of the function.

The arguments to the deferred function (which include the receiver if the function is a method) are evaluated when the defer executes, not when the call executes. Besides avoiding worries about variables changing values as the function executes, this means that a single deferred call site can defer multiple function executions. Here's a silly example.

for i := 0; i < 5; i++ {
    defer fmt.Printf("%d ", i)
}

Deferred functions are executed in LIFO order, so this code will cause 4 3 2 1 0 to be printed when the function returns. A more plausible example is a simple way to trace function execution through the program. We could write a couple of simple tracing routines like this:

func trace(s string)   { fmt.Println("entering:", s) }
func untrace(s string) { fmt.Println("leaving:", s) }

// Use them like this:
func a() {
    trace("a")
    defer untrace("a")
    // do something....
}

We can do better by exploiting the fact that arguments to deferred functions are evaluated when the defer executes. The tracing routine can set up the argument to the untracing routine. This example:

func trace(s string) string {
    fmt.Println("entering:", s)
    return s
}

func un(s string) {
    fmt.Println("leaving:", s)
}

func a() {
    defer un(trace("a"))
    fmt.Println("in a")
}

func b() {
    defer un(trace("b"))
    fmt.Println("in b")
    a()
}

func main() {
    b()
}

prints

entering: b
in b
entering: a
in a
leaving: a
leaving: b

For programmers accustomed to block-level resource management from other languages, defer may seem peculiar, but its most interesting and powerful applications come precisely from the fact that it's not block-based but function-based. In the section on panic and recover we'll see another example of its possibilities.

Data

Allocation with new

Go has two allocation primitives, the built-in functions new and make. They do different things and apply to different types, which can be confusing, but the rules are simple. Let's talk about new first. It's a built-in function that allocates memory, but unlike its namesakes in some other languages it does not initialize the memory, it only zeros it. That is, new(T) allocates zeroed storage for a new item of type T and returns its address, a value of type *T. In Go terminology, it returns a pointer to a newly allocated zero value of type T.

Since the memory returned by new is zeroed, it's helpful to arrange when designing your data structures that the zero value of each type can be used without further initialization. This means a user of the data structure can create one with new and get right to work. For example, the documentation for bytes.Buffer states that "the zero value for Buffer is an empty buffer ready to use." Similarly, sync.Mutex does not have an explicit constructor or Init method. Instead, the zero value for a sync.Mutex is defined to be an unlocked mutex.

The zero-value-is-useful property works transitively. Consider this type declaration.

type SyncedBuffer struct {
    lock    sync.Mutex
    buffer  bytes.Buffer
}

Values of type SyncedBuffer are also ready to use immediately upon allocation or just declaration. In the next snippet, both p and v will work correctly without further arrangement.

p := new(SyncedBuffer)  // type *SyncedBuffer
var v SyncedBuffer      // type  SyncedBuffer

Constructors and composite literals

Sometimes the zero value isn't good enough and an initializing constructor is necessary, as in this example derived from package os.

func NewFile(fd int, name string) *File {
    if fd < 0 {
        return nil
    }
    f := new(File)
    f.fd = fd
    f.name = name
    f.dirinfo = nil
    f.nepipe = 0
    return f
}

There's a lot of boiler plate in there. We can simplify it using a composite literal, which is an expression that creates a new instance each time it is evaluated.

func NewFile(fd int, name string) *File {
    if fd < 0 {
        return nil
    }
    f := File{fd, name, nil, 0}
    return &f
}

Note that, unlike in C, it's perfectly OK to return the address of a local variable; the storage associated with the variable survives after the function returns. In fact, taking the address of a composite literal allocates a fresh instance each time it is evaluated, so we can combine these last two lines.

    return &File{fd, name, nil, 0}

The fields of a composite literal are laid out in order and must all be present. However, by labeling the elements explicitly as field:value pairs, the initializers can appear in any order, with the missing ones left as their respective zero values. Thus we could say

    return &File{fd: fd, name: name}

As a limiting case, if a composite literal contains no fields at all, it creates a zero value for the type. The expressions new(File) and &File{} are equivalent.

Composite literals can also be created for arrays, slices, and maps, with the field labels being indices or map keys as appropriate. In these examples, the initializations work regardless of the values of Enone, Eio, and Einval, as long as they are distinct.

a := [...]string   {Enone: "no error", Eio: "Eio", Einval: "invalid argument"}
s := []string      {Enone: "no error", Eio: "Eio", Einval: "invalid argument"}
m := map[int]string{Enone: "no error", Eio: "Eio", Einval: "invalid argument"}

Allocation with make

Back to allocation. The built-in function make(T, args) serves a purpose different from new(T). It creates slices, maps, and channels only, and it returns an initialized (not zeroed) value of type T (not *T). The reason for the distinction is that these three types represent, under the covers, references to data structures that must be initialized before use. A slice, for example, is a three-item descriptor containing a pointer to the data (inside an array), the length, and the capacity, and until those items are initialized, the slice is nil. For slices, maps, and channels, make initializes the internal data structure and prepares the value for use. For instance,

make([]int, 10, 100)

allocates an array of 100 ints and then creates a slice structure with length 10 and a capacity of 100 pointing at the first 10 elements of the array. (When making a slice, the capacity can be omitted; see the section on slices for more information.) In contrast, new([]int) returns a pointer to a newly allocated, zeroed slice structure, that is, a pointer to a nil slice value.

These examples illustrate the difference between new and make.

var p *[]int = new([]int)       // allocates slice structure; *p == nil; rarely useful
var v  []int = make([]int, 100) // the slice v now refers to a new array of 100 ints

// Unnecessarily complex:
var p *[]int = new([]int)
*p = make([]int, 100, 100)

// Idiomatic:
v := make([]int, 100)

Remember that make applies only to maps, slices and channels and does not return a pointer. To obtain an explicit pointer allocate with new or take the address of a variable explicitly.

Arrays

Arrays are useful when planning the detailed layout of memory and sometimes can help avoid allocation, but primarily they are a building block for slices, the subject of the next section. To lay the foundation for that topic, here are a few words about arrays.

There are major differences between the ways arrays work in Go and C. In Go,

  • Arrays are values. Assigning one array to another copies all the elements.
  • In particular, if you pass an array to a function, it will receive a copy of the array, not a pointer to it.
  • The size of an array is part of its type. The types [10]int and [20]int are distinct.

The value property can be useful but also expensive; if you want C-like behavior and efficiency, you can pass a pointer to the array.

func Sum(a *[3]float64) (sum float64) {
    for _, v := range *a {
        sum += v
    }
    return
}

array := [...]float64{7.0, 8.5, 9.1}
x := Sum(&array)  // Note the explicit address-of operator

But even this style isn't idiomatic Go. Use slices instead.

Slices

Slices wrap arrays to give a more general, powerful, and convenient interface to sequences of data. Except for items with explicit dimension such as transformation matrices, most array programming in Go is done with slices rather than simple arrays.

Slices hold references to an underlying array, and if you assign one slice to another, both refer to the same array. If a function takes a slice argument, changes it makes to the elements of the slice will be visible to the caller, analogous to passing a pointer to the underlying array. A Read function can therefore accept a slice argument rather than a pointer and a count; the length within the slice sets an upper limit of how much data to read. Here is the signature of the Read method of the File type in package os:

func (file *File) Read(buf []byte) (n int, err error)

The method returns the number of bytes read and an error value, if any. To read into the first 32 bytes of a larger buffer buf, slice (here used as a verb) the buffer.

    n, err := f.Read(buf[0:32])

Such slicing is common and efficient. In fact, leaving efficiency aside for the moment, the following snippet would also read the first 32 bytes of the buffer.

    var n int
    var err error
    for i := 0; i < 32; i++ {
        nbytes, e := f.Read(buf[i:i+1])  // Read one byte.
        if nbytes == 0 || e != nil {
            err = e
            break
        }
        n += nbytes
    }

The length of a slice may be changed as long as it still fits within the limits of the underlying array; just assign it to a slice of itself. The capacity of a slice, accessible by the built-in function cap, reports the maximum length the slice may assume. Here is a function to append data to a slice. If the data exceeds the capacity, the slice is reallocated. The resulting slice is returned. The function uses the fact that len and cap are legal when applied to the nil slice, and return 0.

func Append(slice, data[]byte) []byte {
    l := len(slice)
    if l + len(data) > cap(slice) {  // reallocate
        // Allocate double what's needed, for future growth.
        newSlice := make([]byte, (l+len(data))*2)
        // The copy function is predeclared and works for any slice type.
        copy(newSlice, slice)
        slice = newSlice
    }
    slice = slice[0:l+len(data)]
    for i, c := range data {
        slice[l+i] = c
    }
    return slice
}

We must return the slice afterwards because, although Append can modify the elements of slice, the slice itself (the run-time data structure holding the pointer, length, and capacity) is passed by value.

The idea of appending to a slice is so useful it's captured by the append built-in function. To understand that function's design, though, we need a little more information, so we'll return to it later.

Two-dimensional slices

Go's arrays and slices are one-dimensional. To create the equivalent of a 2D array or slice, it is necessary to define an array-of-arrays or slice-of-slices, like this:

type Transform [3][3]float64  // A 3x3 array, really an array of arrays.
type LinesOfText [][]byte     // A slice of byte slices.

Because slices are variable-length, it is possible to have each inner slice be a different length. That can be a common situation, as in our LinesOfText example: each line has an independent length.

text := LinesOfText{
	[]byte("Now is the time"),
	[]byte("for all good gophers"),
	[]byte("to bring some fun to the party."),
}

Sometimes it's necessary to allocate a 2D slice, a situation that can arise when processing scan lines of pixels, for instance. There are two ways to achieve this. One is to allocate each slice independently; the other is to allocate a single array and point the individual slices into it. Which to use depends on your application. If the slices might grow or shrink, they should be allocated independently to avoid overwriting the next line; if not, it can be more efficient to construct the object with a single allocation. For reference, here are sketches of the two methods. First, a line at a time:

// Allocate the top-level slice.
picture := make([][]uint8, YSize) // One row per unit of y.
// Loop over the rows, allocating the slice for each row.
for i := range picture {
	picture[i] = make([]uint8, XSize)
}

And now as one allocation, sliced into lines:

// Allocate the top-level slice, the same as before.
picture := make([][]uint8, YSize) // One row per unit of y.
// Allocate one large slice to hold all the pixels.
pixels := make([]uint8, XSize*YSize) // Has type []uint8 even though picture is [][]uint8.
// Loop over the rows, slicing each row from the front of the remaining pixels slice.
for i := range picture {
	picture[i], pixels = pixels[:XSize], pixels[XSize:]
}

Maps

Maps are a convenient and powerful built-in data structure that associate values of one type (the key) with values of another type (the element or value) The key can be of any type for which the equality operator is defined, such as integers, floating point and complex numbers, strings, pointers, interfaces (as long as the dynamic type supports equality), structs and arrays. Slices cannot be used as map keys, because equality is not defined on them. Like slices, maps hold references to an underlying data structure. If you pass a map to a function that changes the contents of the map, the changes will be visible in the caller.

Maps can be constructed using the usual composite literal syntax with colon-separated key-value pairs, so it's easy to build them during initialization.

var timeZone = map[string]int{
    "UTC":  0*60*60,
    "EST": -5*60*60,
    "CST": -6*60*60,
    "MST": -7*60*60,
    "PST": -8*60*60,
}

Assigning and fetching map values looks syntactically just like doing the same for arrays and slices except that the index doesn't need to be an integer.

offset := timeZone["EST"]

An attempt to fetch a map value with a key that is not present in the map will return the zero value for the type of the entries in the map. For instance, if the map contains integers, looking up a non-existent key will return 0. A set can be implemented as a map with value type bool. Set the map entry to true to put the value in the set, and then test it by simple indexing.

attended := map[string]bool{
    "Ann": true,
    "Joe": true,
    ...
}

if attended[person] { // will be false if person is not in the map
    fmt.Println(person, "was at the meeting")
}

Sometimes you need to distinguish a missing entry from a zero value. Is there an entry for "UTC" or is that the empty string because it's not in the map at all? You can discriminate with a form of multiple assignment.

var seconds int
var ok bool
seconds, ok = timeZone[tz]

For obvious reasons this is called the “comma ok” idiom. In this example, if tz is present, seconds will be set appropriately and ok will be true; if not, seconds will be set to zero and ok will be false. Here's a function that puts it together with a nice error report:

func offset(tz string) int {
    if seconds, ok := timeZone[tz]; ok {
        return seconds
    }
    log.Println("unknown time zone:", tz)
    return 0
}

To test for presence in the map without worrying about the actual value, you can use the blank identifier (_) in place of the usual variable for the value.

_, present := timeZone[tz]

To delete a map entry, use the delete built-in function, whose arguments are the map and the key to be deleted. It's safe to do this even if the key is already absent from the map.

delete(timeZone, "PDT")  // Now on Standard Time

Printing

Formatted printing in Go uses a style similar to C's printf family but is richer and more general. The functions live in the fmt package and have capitalized names: fmt.Printf, fmt.Fprintf, fmt.Sprintf and so on. The string functions (Sprintf etc.) return a string rather than filling in a provided buffer.

You don't need to provide a format string. For each of Printf, Fprintf and Sprintf there is another pair of functions, for instance Print and Println. These functions do not take a format string but instead generate a default format for each argument. The Println versions also insert a blank between arguments and append a newline to the output while the Print versions add blanks only if the operand on neither side is a string. In this example each line produces the same output.

fmt.Printf("Hello %d\n", 23)
fmt.Fprint(os.Stdout, "Hello ", 23, "\n")
fmt.Println("Hello", 23)
fmt.Println(fmt.Sprint("Hello ", 23))

The formatted print functions fmt.Fprint and friends take as a first argument any object that implements the io.Writer interface; the variables os.Stdout and os.Stderr are familiar instances.

Here things start to diverge from C. First, the numeric formats such as %d do not take flags for signedness or size; instead, the printing routines use the type of the argument to decide these properties.

var x uint64 = 1<<64 - 1
fmt.Printf("%d %x; %d %x\n", x, x, int64(x), int64(x))

prints

18446744073709551615 ffffffffffffffff; -1 -1

If you just want the default conversion, such as decimal for integers, you can use the catchall format %v (for “value”); the result is exactly what Print and Println would produce. Moreover, that format can print any value, even arrays, slices, structs, and maps. Here is a print statement for the time zone map defined in the previous section.

fmt.Printf("%v\n", timeZone)  // or just fmt.Println(timeZone)

which gives output

map[CST:-21600 PST:-28800 EST:-18000 UTC:0 MST:-25200]

For maps the keys may be output in any order, of course. When printing a struct, the modified format %+v annotates the fields of the structure with their names, and for any value the alternate format %#v prints the value in full Go syntax.

type T struct {
    a int
    b float64
    c string
}
t := &T{ 7, -2.35, "abc\tdef" }
fmt.Printf("%v\n", t)
fmt.Printf("%+v\n", t)
fmt.Printf("%#v\n", t)
fmt.Printf("%#v\n", timeZone)

prints

&{7 -2.35 abc   def}
&{a:7 b:-2.35 c:abc     def}
&main.T{a:7, b:-2.35, c:"abc\tdef"}
map[string] int{"CST":-21600, "PST":-28800, "EST":-18000, "UTC":0, "MST":-25200}

(Note the ampersands.) That quoted string format is also available through %q when applied to a value of type string or []byte. The alternate format %#q will use backquotes instead if possible. (The %q format also applies to integers and runes, producing a single-quoted rune constant.) Also, %x works on strings, byte arrays and byte slices as well as on integers, generating a long hexadecimal string, and with a space in the format (% x) it puts spaces between the bytes.

Another handy format is %T, which prints the type of a value.

fmt.Printf("%T\n", timeZone)

prints

map[string] int

If you want to control the default format for a custom type, all that's required is to define a method with the signature String() string on the type. For our simple type T, that might look like this.

func (t *T) String() string {
    return fmt.Sprintf("%d/%g/%q", t.a, t.b, t.c)
}
fmt.Printf("%v\n", t)

to print in the format

7/-2.35/"abc\tdef"

(If you need to print values of type T as well as pointers to T, the receiver for String must be of value type; this example used a pointer because that's more efficient and idiomatic for struct types. See the section below on pointers vs. value receivers for more information.)

Our String method is able to call Sprintf because the print routines are fully reentrant and can be wrapped this way. There is one important detail to understand about this approach, however: don't construct a String method by calling Sprintf in a way that will recur into your String method indefinitely. This can happen if the Sprintf call attempts to print the receiver directly as a string, which in turn will invoke the method again. It's a common and easy mistake to make, as this example shows.

type MyString string

func (m MyString) String() string {
    return fmt.Sprintf("MyString=%s", m) // Error: will recur forever.
}

It's also easy to fix: convert the argument to the basic string type, which does not have the method.

type MyString string
func (m MyString) String() string {
    return fmt.Sprintf("MyString=%s", string(m)) // OK: note conversion.
}

In the initialization section we'll see another technique that avoids this recursion.

Another printing technique is to pass a print routine's arguments directly to another such routine. The signature of Printf uses the type ...interface{} for its final argument to specify that an arbitrary number of parameters (of arbitrary type) can appear after the format.

func Printf(format string, v ...interface{}) (n int, err error) {

Within the function Printf, v acts like a variable of type []interface{} but if it is passed to another variadic function, it acts like a regular list of arguments. Here is the implementation of the function log.Println we used above. It passes its arguments directly to fmt.Sprintln for the actual formatting.

// Println prints to the standard logger in the manner of fmt.Println.
func Println(v ...interface{}) {
    std.Output(2, fmt.Sprintln(v...))  // Output takes parameters (int, string)
}

We write ... after v in the nested call to Sprintln to tell the compiler to treat v as a list of arguments; otherwise it would just pass v as a single slice argument.

There's even more to printing than we've covered here. See the godoc documentation for package fmt for the details.

By the way, a ... parameter can be of a specific type, for instance ...int for a min function that chooses the least of a list of integers:

func Min(a ...int) int {
    min := int(^uint(0) >> 1)  // largest int
    for _, i := range a {
        if i < min {
            min = i
        }
    }
    return min
}

Append

Now we have the missing piece we needed to explain the design of the append built-in function. The signature of append is different from our custom Append function above. Schematically, it's like this:

func append(slice []T, elements ...T) []T

where T is a placeholder for any given type. You can't actually write a function in Go where the type T is determined by the caller. That's why append is built in: it needs support from the compiler.

What append does is append the elements to the end of the slice and return the result. The result needs to be returned because, as with our hand-written Append, the underlying array may change. This simple example

x := []int{1,2,3}
x = append(x, 4, 5, 6)
fmt.Println(x)

prints [1 2 3 4 5 6]. So append works a little like Printf, collecting an arbitrary number of arguments.

But what if we wanted to do what our Append does and append a slice to a slice? Easy: use ... at the call site, just as we did in the call to Output above. This snippet produces identical output to the one above.

x := []int{1,2,3}
y := []int{4,5,6}
x = append(x, y...)
fmt.Println(x)

Without that ..., it wouldn't compile because the types would be wrong; y is not of type int.

Initialization

Although it doesn't look superficially very different from initialization in C or C++, initialization in Go is more powerful. Complex structures can be built during initialization and the ordering issues among initialized objects, even among different packages, are handled correctly.

Constants

Constants in Go are just that—constant. They are created at compile time, even when defined as locals in functions, and can only be numbers, characters (runes), strings or booleans. Because of the compile-time restriction, the expressions that define them must be constant expressions, evaluatable by the compiler. For instance, 1<<3 is a constant expression, while math.Sin(math.Pi/4) is not because the function call to math.Sin needs to happen at run time.

In Go, enumerated constants are created using the iota enumerator. Since iota can be part of an expression and expressions can be implicitly repeated, it is easy to build intricate sets of values.

{{code "/doc/progs/eff_bytesize.go" `/^type ByteSize/` `/^\)/`}}

The ability to attach a method such as String to any user-defined type makes it possible for arbitrary values to format themselves automatically for printing. Although you'll see it most often applied to structs, this technique is also useful for scalar types such as floating-point types like ByteSize.

{{code "/doc/progs/eff_bytesize.go" `/^func.*ByteSize.*String/` `/^}/`}}

The expression YB prints as 1.00YB, while ByteSize(1e13) prints as 9.09TB.

The use here of Sprintf to implement ByteSize's String method is safe (avoids recurring indefinitely) not because of a conversion but because it calls Sprintf with %f, which is not a string format: Sprintf will only call the String method when it wants a string, and %f wants a floating-point value.

Variables

Variables can be initialized just like constants but the initializer can be a general expression computed at run time.

var (
    home   = os.Getenv("HOME")
    user   = os.Getenv("USER")
    gopath = os.Getenv("GOPATH")
)

The init function

Finally, each source file can define its own niladic init function to set up whatever state is required. (Actually each file can have multiple init functions.) And finally means finally: init is called after all the variable declarations in the package have evaluated their initializers, and those are evaluated only after all the imported packages have been initialized.

Besides initializations that cannot be expressed as declarations, a common use of init functions is to verify or repair correctness of the program state before real execution begins.

func init() {
    if user == "" {
        log.Fatal("$USER not set")
    }
    if home == "" {
        home = "/home/" + user
    }
    if gopath == "" {
        gopath = home + "/go"
    }
    // gopath may be overridden by --gopath flag on command line.
    flag.StringVar(&gopath, "gopath", gopath, "override default GOPATH")
}

Methods

Pointers vs. Values

As we saw with ByteSize, methods can be defined for any named type (except a pointer or an interface); the receiver does not have to be a struct.

In the discussion of slices above, we wrote an Append function. We can define it as a method on slices instead. To do this, we first declare a named type to which we can bind the method, and then make the receiver for the method a value of that type.

type ByteSlice []byte

func (slice ByteSlice) Append(data []byte) []byte {
    // Body exactly the same as above
}

This still requires the method to return the updated slice. We can eliminate that clumsiness by redefining the method to take a pointer to a ByteSlice as its receiver, so the method can overwrite the caller's slice.

func (p *ByteSlice) Append(data []byte) {
    slice := *p
    // Body as above, without the return.
    *p = slice
}

In fact, we can do even better. If we modify our function so it looks like a standard Write method, like this,

func (p *ByteSlice) Write(data []byte) (n int, err error) {
    slice := *p
    // Again as above.
    *p = slice
    return len(data), nil
}

then the type *ByteSlice satisfies the standard interface io.Writer, which is handy. For instance, we can print into one.

    var b ByteSlice
    fmt.Fprintf(&b, "This hour has %d days\n", 7)

We pass the address of a ByteSlice because only *ByteSlice satisfies io.Writer. The rule about pointers vs. values for receivers is that value methods can be invoked on pointers and values, but pointer methods can only be invoked on pointers.

This rule arises because pointer methods can modify the receiver; invoking them on a value would cause the method to receive a copy of the value, so any modifications would be discarded. The language therefore disallows this mistake. There is a handy exception, though. When the value is addressable, the language takes care of the common case of invoking a pointer method on a value by inserting the address operator automatically. In our example, the variable b is addressable, so we can call its Write method with just b.Write. The compiler will rewrite that to (&b).Write for us.

By the way, the idea of using Write on a slice of bytes is central to the implementation of bytes.Buffer.

Interfaces and other types

Interfaces

Interfaces in Go provide a way to specify the behavior of an object: if something can do this, then it can be used here. We've seen a couple of simple examples already; custom printers can be implemented by a String method while Fprintf can generate output to anything with a Write method. Interfaces with only one or two methods are common in Go code, and are usually given a name derived from the method, such as io.Writer for something that implements Write.

A type can implement multiple interfaces. For instance, a collection can be sorted by the routines in package sort if it implements sort.Interface, which contains Len(), Less(i, j int) bool, and Swap(i, j int), and it could also have a custom formatter. In this contrived example Sequence satisfies both.

{{code "/doc/progs/eff_sequence.go" `/^type/` "$"}}

Conversions

The String method of Sequence is recreating the work that Sprint already does for slices. We can share the effort if we convert the Sequence to a plain []int before calling Sprint.

func (s Sequence) String() string {
    sort.Sort(s)
    return fmt.Sprint([]int(s))
}

This method is another example of the conversion technique for calling Sprintf safely from a String method. Because the two types (Sequence and []int) are the same if we ignore the type name, it's legal to convert between them. The conversion doesn't create a new value, it just temporarily acts as though the existing value has a new type. (There are other legal conversions, such as from integer to floating point, that do create a new value.)

It's an idiom in Go programs to convert the type of an expression to access a different set of methods. As an example, we could use the existing type sort.IntSlice to reduce the entire example to this:

type Sequence []int

// Method for printing - sorts the elements before printing
func (s Sequence) String() string {
    sort.IntSlice(s).Sort()
    return fmt.Sprint([]int(s))
}

Now, instead of having Sequence implement multiple interfaces (sorting and printing), we're using the ability of a data item to be converted to multiple types (Sequence, sort.IntSlice and []int), each of which does some part of the job. That's more unusual in practice but can be effective.

Interface conversions and type assertions

Type switches are a form of conversion: they take an interface and, for each case in the switch, in a sense convert it to the type of that case. Here's a simplified version of how the code under fmt.Printf turns a value into a string using a type switch. If it's already a string, we want the actual string value held by the interface, while if it has a String method we want the result of calling the method.

type Stringer interface {
    String() string
}

var value interface{} // Value provided by caller.
switch str := value.(type) {
case string:
    return str
case Stringer:
    return str.String()
}

The first case finds a concrete value; the second converts the interface into another interface. It's perfectly fine to mix types this way.

What if there's only one type we care about? If we know the value holds a string and we just want to extract it? A one-case type switch would do, but so would a type assertion. A type assertion takes an interface value and extracts from it a value of the specified explicit type. The syntax borrows from the clause opening a type switch, but with an explicit type rather than the type keyword:

value.(typeName)

and the result is a new value with the static type typeName. That type must either be the concrete type held by the interface, or a second interface type that the value can be converted to. To extract the string we know is in the value, we could write:

str := value.(string)

But if it turns out that the value does not contain a string, the program will crash with a run-time error. To guard against that, use the "comma, ok" idiom to test, safely, whether the value is a string:

str, ok := value.(string)
if ok {
    fmt.Printf("string value is: %q\n", str)
} else {
    fmt.Printf("value is not a string\n")
}

If the type assertion fails, str will still exist and be of type string, but it will have the zero value, an empty string.

As an illustration of the capability, here's an if-else statement that's equivalent to the type switch that opened this section.

if str, ok := value.(string); ok {
    return str
} else if str, ok := value.(Stringer); ok {
    return str.String()
}

Generality

If a type exists only to implement an interface and has no exported methods beyond that interface, there is no need to export the type itself. Exporting just the interface makes it clear that it's the behavior that matters, not the implementation, and that other implementations with different properties can mirror the behavior of the original type. It also avoids the need to repeat the documentation on every instance of a common method.

In such cases, the constructor should return an interface value rather than the implementing type. As an example, in the hash libraries both crc32.NewIEEE and adler32.New return the interface type hash.Hash32. Substituting the CRC-32 algorithm for Adler-32 in a Go program requires only changing the constructor call; the rest of the code is unaffected by the change of algorithm.

A similar approach allows the streaming cipher algorithms in the various crypto packages to be separated from the block ciphers they chain together. The Block interface in the crypto/cipher package specifies the behavior of a block cipher, which provides encryption of a single block of data. Then, by analogy with the bufio package, cipher packages that implement this interface can be used to construct streaming ciphers, represented by the Stream interface, without knowing the details of the block encryption.

The crypto/cipher interfaces look like this:

type Block interface {
    BlockSize() int
    Encrypt(src, dst []byte)
    Decrypt(src, dst []byte)
}

type Stream interface {
    XORKeyStream(dst, src []byte)
}

Here's the definition of the counter mode (CTR) stream, which turns a block cipher into a streaming cipher; notice that the block cipher's details are abstracted away:

// NewCTR returns a Stream that encrypts/decrypts using the given Block in
// counter mode. The length of iv must be the same as the Block's block size.
func NewCTR(block Block, iv []byte) Stream

NewCTR applies not just to one specific encryption algorithm and data source but to any implementation of the Block interface and any Stream. Because they return interface values, replacing CTR encryption with other encryption modes is a localized change. The constructor calls must be edited, but because the surrounding code must treat the result only as a Stream, it won't notice the difference.

Interfaces and methods

Since almost anything can have methods attached, almost anything can satisfy an interface. One illustrative example is in the http package, which defines the Handler interface. Any object that implements Handler can serve HTTP requests.

type Handler interface {
    ServeHTTP(ResponseWriter, *Request)
}

ResponseWriter is itself an interface that provides access to the methods needed to return the response to the client. Those methods include the standard Write method, so an http.ResponseWriter can be used wherever an io.Writer can be used. Request is a struct containing a parsed representation of the request from the client.

For brevity, let's ignore POSTs and assume HTTP requests are always GETs; that simplification does not affect the way the handlers are set up. Here's a trivial but complete implementation of a handler to count the number of times the page is visited.

// Simple counter server.
type Counter struct {
    n int
}

func (ctr *Counter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
    ctr.n++
    fmt.Fprintf(w, "counter = %d\n", ctr.n)
}

(Keeping with our theme, note how Fprintf can print to an http.ResponseWriter.) For reference, here's how to attach such a server to a node on the URL tree.

import "net/http"
...
ctr := new(Counter)
http.Handle("/counter", ctr)

But why make Counter a struct? An integer is all that's needed. (The receiver needs to be a pointer so the increment is visible to the caller.)

// Simpler counter server.
type Counter int

func (ctr *Counter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
    *ctr++
    fmt.Fprintf(w, "counter = %d\n", *ctr)
}

What if your program has some internal state that needs to be notified that a page has been visited? Tie a channel to the web page.

// A channel that sends a notification on each visit.
// (Probably want the channel to be buffered.)
type Chan chan *http.Request

func (ch Chan) ServeHTTP(w http.ResponseWriter, req *http.Request) {
    ch <- req
    fmt.Fprint(w, "notification sent")
}

Finally, let's say we wanted to present on /args the arguments used when invoking the server binary. It's easy to write a function to print the arguments.

func ArgServer() {
    fmt.Println(os.Args)
}

How do we turn that into an HTTP server? We could make ArgServer a method of some type whose value we ignore, but there's a cleaner way. Since we can define a method for any type except pointers and interfaces, we can write a method for a function. The http package contains this code:

// The HandlerFunc type is an adapter to allow the use of
// ordinary functions as HTTP handlers.  If f is a function
// with the appropriate signature, HandlerFunc(f) is a
// Handler object that calls f.
type HandlerFunc func(ResponseWriter, *Request)

// ServeHTTP calls f(c, req).
func (f HandlerFunc) ServeHTTP(w ResponseWriter, req *Request) {
    f(w, req)
}

HandlerFunc is a type with a method, ServeHTTP, so values of that type can serve HTTP requests. Look at the implementation of the method: the receiver is a function, f, and the method calls f. That may seem odd but it's not that different from, say, the receiver being a channel and the method sending on the channel.

To make ArgServer into an HTTP server, we first modify it to have the right signature.

// Argument server.
func ArgServer(w http.ResponseWriter, req *http.Request) {
    fmt.Fprintln(w, os.Args)
}

ArgServer now has same signature as HandlerFunc, so it can be converted to that type to access its methods, just as we converted Sequence to IntSlice to access IntSlice.Sort. The code to set it up is concise:

http.Handle("/args", http.HandlerFunc(ArgServer))

When someone visits the page /args, the handler installed at that page has value ArgServer and type HandlerFunc. The HTTP server will invoke the method ServeHTTP of that type, with ArgServer as the receiver, which will in turn call ArgServer (via the invocation f(c, req) inside HandlerFunc.ServeHTTP). The arguments will then be displayed.

In this section we have made an HTTP server from a struct, an integer, a channel, and a function, all because interfaces are just sets of methods, which can be defined for (almost) any type.

The blank identifier

We've mentioned the blank identifier a couple of times now, in the context of for range loops and maps. The blank identifier can be assigned or declared with any value of any type, with the value discarded harmlessly. It's a bit like writing to the Unix /dev/null file: it represents a write-only value to be used as a place-holder where a variable is needed but the actual value is irrelevant. It has uses beyond those we've seen already.

The blank identifier in multiple assignment

The use of a blank identifier in a for range loop is a special case of a general situation: multiple assignment.

If an assignment requires multiple values on the left side, but one of the values will not be used by the program, a blank identifier on the left-hand-side of the assignment avoids the need to create a dummy variable and makes it clear that the value is to be discarded. For instance, when calling a function that returns a value and an error, but only the error is important, use the blank identifier to discard the irrelevant value.

if _, err := os.Stat(path); os.IsNotExist(err) {
	fmt.Printf("%s does not exist\n", path)
}

Occasionally you'll see code that discards the error value in order to ignore the error; this is terrible practice. Always check error returns; they're provided for a reason.

// Bad! This code will crash if path does not exist.
fi, _ := os.Stat(path)
if fi.IsDir() {
    fmt.Printf("%s is a directory\n", path)
}

Unused imports and variables

It is an error to import a package or to declare a variable without using it. Unused imports bloat the program and slow compilation, while a variable that is initialized but not used is at least a wasted computation and perhaps indicative of a larger bug. When a program is under active development, however, unused imports and variables often arise and it can be annoying to delete them just to have the compilation proceed, only to have them be needed again later. The blank identifier provides a workaround.

This half-written program has two unused imports (fmt and io) and an unused variable (fd), so it will not compile, but it would be nice to see if the code so far is correct.

{{code "/doc/progs/eff_unused1.go" `/package/` `$`}}

To silence complaints about the unused imports, use a blank identifier to refer to a symbol from the imported package. Similarly, assigning the unused variable fd to the blank identifier will silence the unused variable error. This version of the program does compile.

{{code "/doc/progs/eff_unused2.go" `/package/` `$`}}

By convention, the global declarations to silence import errors should come right after the imports and be commented, both to make them easy to find and as a reminder to clean things up later.

Import for side effect

An unused import like fmt or io in the previous example should eventually be used or removed: blank assignments identify code as a work in progress. But sometimes it is useful to import a package only for its side effects, without any explicit use. For example, during its init function, the net/http/pprof package registers HTTP handlers that provide debugging information. It has an exported API, but most clients need only the handler registration and access the data through a web page. To import the package only for its side effects, rename the package to the blank identifier:

import _ "net/http/pprof"

This form of import makes clear that the package is being imported for its side effects, because there is no other possible use of the package: in this file, it doesn't have a name. (If it did, and we didn't use that name, the compiler would reject the program.)

Interface checks

As we saw in the discussion of interfaces above, a type need not declare explicitly that it implements an interface. Instead, a type implements the interface just by implementing the interface's methods. In practice, most interface conversions are static and therefore checked at compile time. For example, passing an *os.File to a function expecting an io.Reader will not compile unless *os.File implements the io.Reader interface.

Some interface checks do happen at run-time, though. One instance is in the encoding/json package, which defines a Marshaler interface. When the JSON encoder receives a value that implements that interface, the encoder invokes the value's marshaling method to convert it to JSON instead of doing the standard conversion. The encoder checks this property at run time with a type assertion like:

m, ok := val.(json.Marshaler)

If it's necessary only to ask whether a type implements an interface, without actually using the interface itself, perhaps as part of an error check, use the blank identifier to ignore the type-asserted value:

if _, ok := val.(json.Marshaler); ok {
    fmt.Printf("value %v of type %T implements json.Marshaler\n", val, val)
}

One place this situation arises is when it is necessary to guarantee within the package implementing the type that it actually satisfies the interface. If a type—for example, json.RawMessage—needs a custom JSON representation, it should implement json.Marshaler, but there are no static conversions that would cause the compiler to verify this automatically. If the type inadvertently fails to satisfy the interface, the JSON encoder will still work, but will not use the custom implementation. To guarantee that the implementation is correct, a global declaration using the blank identifier can be used in the package:

var _ json.Marshaler = (*RawMessage)(nil)

In this declaration, the assignment involving a conversion of a *RawMessage to a Marshaler requires that *RawMessage implements Marshaler, and that property will be checked at compile time. Should the json.Marshaler interface change, this package will no longer compile and we will be on notice that it needs to be updated.

The appearance of the blank identifier in this construct indicates that the declaration exists only for the type checking, not to create a variable. Don't do this for every type that satisfies an interface, though. By convention, such declarations are only used when there are no static conversions already present in the code, which is a rare event.

Embedding

Go does not provide the typical, type-driven notion of subclassing, but it does have the ability to “borrow” pieces of an implementation by embedding types within a struct or interface.

Interface embedding is very simple. We've mentioned the io.Reader and io.Writer interfaces before; here are their definitions.

type Reader interface {
    Read(p []byte) (n int, err error)
}

type Writer interface {
    Write(p []byte) (n int, err error)
}

The io package also exports several other interfaces that specify objects that can implement several such methods. For instance, there is io.ReadWriter, an interface containing both Read and Write. We could specify io.ReadWriter by listing the two methods explicitly, but it's easier and more evocative to embed the two interfaces to form the new one, like this:

// ReadWriter is the interface that combines the Reader and Writer interfaces.
type ReadWriter interface {
    Reader
    Writer
}

This says just what it looks like: A ReadWriter can do what a Reader does and what a Writer does; it is a union of the embedded interfaces (which must be disjoint sets of methods). Only interfaces can be embedded within interfaces.

The same basic idea applies to structs, but with more far-reaching implications. The bufio package has two struct types, bufio.Reader and bufio.Writer, each of which of course implements the analogous interfaces from package io. And bufio also implements a buffered reader/writer, which it does by combining a reader and a writer into one struct using embedding: it lists the types within the struct but does not give them field names.

// ReadWriter stores pointers to a Reader and a Writer.
// It implements io.ReadWriter.
type ReadWriter struct {
    *Reader  // *bufio.Reader
    *Writer  // *bufio.Writer
}

The embedded elements are pointers to structs and of course must be initialized to point to valid structs before they can be used. The ReadWriter struct could be written as

type ReadWriter struct {
    reader *Reader
    writer *Writer
}

but then to promote the methods of the fields and to satisfy the io interfaces, we would also need to provide forwarding methods, like this:

func (rw *ReadWriter) Read(p []byte) (n int, err error) {
    return rw.reader.Read(p)
}

By embedding the structs directly, we avoid this bookkeeping. The methods of embedded types come along for free, which means that bufio.ReadWriter not only has the methods of bufio.Reader and bufio.Writer, it also satisfies all three interfaces: io.Reader, io.Writer, and io.ReadWriter.

There's an important way in which embedding differs from subclassing. When we embed a type, the methods of that type become methods of the outer type, but when they are invoked the receiver of the method is the inner type, not the outer one. In our example, when the Read method of a bufio.ReadWriter is invoked, it has exactly the same effect as the forwarding method written out above; the receiver is the reader field of the ReadWriter, not the ReadWriter itself.

Embedding can also be a simple convenience. This example shows an embedded field alongside a regular, named field.

type Job struct {
    Command string
    *log.Logger
}

The Job type now has the Log, Logf and other methods of *log.Logger. We could have given the Logger a field name, of course, but it's not necessary to do so. And now, once initialized, we can log to the Job:

job.Log("starting now...")

The Logger is a regular field of the Job struct, so we can initialize it in the usual way inside the constructor for Job, like this,

func NewJob(command string, logger *log.Logger) *Job {
    return &Job{command, logger}
}

or with a composite literal,

job := &Job{command, log.New(os.Stderr, "Job: ", log.Ldate)}

If we need to refer to an embedded field directly, the type name of the field, ignoring the package qualifier, serves as a field name, as it did in the Read method of our ReaderWriter struct. Here, if we needed to access the *log.Logger of a Job variable job, we would write job.Logger, which would be useful if we wanted to refine the methods of Logger.

func (job *Job) Logf(format string, args ...interface{}) {
    job.Logger.Logf("%q: %s", job.Command, fmt.Sprintf(format, args...))
}

Embedding types introduces the problem of name conflicts but the rules to resolve them are simple. First, a field or method X hides any other item X in a more deeply nested part of the type. If log.Logger contained a field or method called Command, the Command field of Job would dominate it.

Second, if the same name appears at the same nesting level, it is usually an error; it would be erroneous to embed log.Logger if the Job struct contained another field or method called Logger. However, if the duplicate name is never mentioned in the program outside the type definition, it is OK. This qualification provides some protection against changes made to types embedded from outside; there is no problem if a field is added that conflicts with another field in another subtype if neither field is ever used.

Concurrency

Share by communicating

Concurrent programming is a large topic and there is space only for some Go-specific highlights here.

Concurrent programming in many environments is made difficult by the subtleties required to implement correct access to shared variables. Go encourages a different approach in which shared values are passed around on channels and, in fact, never actively shared by separate threads of execution. Only one goroutine has access to the value at any given time. Data races cannot occur, by design. To encourage this way of thinking we have reduced it to a slogan:

Do not communicate by sharing memory; instead, share memory by communicating.

This approach can be taken too far. Reference counts may be best done by putting a mutex around an integer variable, for instance. But as a high-level approach, using channels to control access makes it easier to write clear, correct programs.

One way to think about this model is to consider a typical single-threaded program running on one CPU. It has no need for synchronization primitives. Now run another such instance; it too needs no synchronization. Now let those two communicate; if the communication is the synchronizer, there's still no need for other synchronization. Unix pipelines, for example, fit this model perfectly. Although Go's approach to concurrency originates in Hoare's Communicating Sequential Processes (CSP), it can also be seen as a type-safe generalization of Unix pipes.

Goroutines

They're called goroutines because the existing terms—threads, coroutines, processes, and so on—convey inaccurate connotations. A goroutine has a simple model: it is a function executing concurrently with other goroutines in the same address space. It is lightweight, costing little more than the allocation of stack space. And the stacks start small, so they are cheap, and grow by allocating (and freeing) heap storage as required.

Goroutines are multiplexed onto multiple OS threads so if one should block, such as while waiting for I/O, others continue to run. Their design hides many of the complexities of thread creation and management.

Prefix a function or method call with the go keyword to run the call in a new goroutine. When the call completes, the goroutine exits, silently. (The effect is similar to the Unix shell's & notation for running a command in the background.)

go list.Sort()  // run list.Sort concurrently; don't wait for it.

A function literal can be handy in a goroutine invocation.

func Announce(message string, delay time.Duration) {
    go func() {
        time.Sleep(delay)
        fmt.Println(message)
    }()  // Note the parentheses - must call the function.
}

In Go, function literals are closures: the implementation makes sure the variables referred to by the function survive as long as they are active.

These examples aren't too practical because the functions have no way of signaling completion. For that, we need channels.

Channels

Like maps, channels are allocated with make, and the resulting value acts as a reference to an underlying data structure. If an optional integer parameter is provided, it sets the buffer size for the channel. The default is zero, for an unbuffered or synchronous channel.

ci := make(chan int)            // unbuffered channel of integers
cj := make(chan int, 0)         // unbuffered channel of integers
cs := make(chan *os.File, 100)  // buffered channel of pointers to Files

Unbuffered channels combine communication—the exchange of a value—with synchronization—guaranteeing that two calculations (goroutines) are in a known state.

There are lots of nice idioms using channels. Here's one to get us started. In the previous section we launched a sort in the background. A channel can allow the launching goroutine to wait for the sort to complete.

c := make(chan int)  // Allocate a channel.
// Start the sort in a goroutine; when it completes, signal on the channel.
go func() {
    list.Sort()
    c <- 1  // Send a signal; value does not matter.
}()
doSomethingForAWhile()
<-c   // Wait for sort to finish; discard sent value.

Receivers always block until there is data to receive. If the channel is unbuffered, the sender blocks until the receiver has received the value. If the channel has a buffer, the sender blocks only until the value has been copied to the buffer; if the buffer is full, this means waiting until some receiver has retrieved a value.

A buffered channel can be used like a semaphore, for instance to limit throughput. In this example, incoming requests are passed to handle, which sends a value into the channel, processes the request, and then receives a value from the channel to ready the “semaphore” for the next consumer. The capacity of the channel buffer limits the number of simultaneous calls to process.

var sem = make(chan int, MaxOutstanding)

func handle(r *Request) {
    sem <- 1    // Wait for active queue to drain.
    process(r)  // May take a long time.
    <-sem       // Done; enable next request to run.
}

func Serve(queue chan *Request) {
    for {
        req := <-queue
        go handle(req)  // Don't wait for handle to finish.
    }
}

Once MaxOutstanding handlers are executing process, any more will block trying to send into the filled channel buffer, until one of the existing handlers finishes and receives from the buffer.

This design has a problem, though: Serve creates a new goroutine for every incoming request, even though only MaxOutstanding of them can run at any moment. As a result, the program can consume unlimited resources if the requests come in too fast. We can address that deficiency by changing Serve to gate the creation of the goroutines. Here's an obvious solution, but beware it has a bug we'll fix subsequently:

func Serve(queue chan *Request) {
    for req := range queue {
        sem <- 1
        go func() {
            process(req) // Buggy; see explanation below.
            <-sem
        }()
    }
}

The bug is that in a Go for loop, the loop variable is reused for each iteration, so the req variable is shared across all goroutines. That's not what we want. We need to make sure that req is unique for each goroutine. Here's one way to do that, passing the value of req as an argument to the closure in the goroutine:

func Serve(queue chan *Request) {
    for req := range queue {
        sem <- 1
        go func(req *Request) {
            process(req)
            <-sem
        }(req)
    }
}

Compare this version with the previous to see the difference in how the closure is declared and run. Another solution is just to create a new variable with the same name, as in this example:

func Serve(queue chan *Request) {
    for req := range queue {
        req := req // Create new instance of req for the goroutine.
        sem <- 1
        go func() {
            process(req)
            <-sem
        }()
    }
}

It may seem odd to write

req := req

but it's a legal and idiomatic in Go to do this. You get a fresh version of the variable with the same name, deliberately shadowing the loop variable locally but unique to each goroutine.

Going back to the general problem of writing the server, another approach that manages resources well is to start a fixed number of handle goroutines all reading from the request channel. The number of goroutines limits the number of simultaneous calls to process. This Serve function also accepts a channel on which it will be told to exit; after launching the goroutines it blocks receiving from that channel.

func handle(queue chan *Request) {
    for r := range queue {
        process(r)
    }
}

func Serve(clientRequests chan *Request, quit chan bool) {
    // Start handlers
    for i := 0; i < MaxOutstanding; i++ {
        go handle(clientRequests)
    }
    <-quit  // Wait to be told to exit.
}

Channels of channels

One of the most important properties of Go is that a channel is a first-class value that can be allocated and passed around like any other. A common use of this property is to implement safe, parallel demultiplexing.

In the example in the previous section, handle was an idealized handler for a request but we didn't define the type it was handling. If that type includes a channel on which to reply, each client can provide its own path for the answer. Here's a schematic definition of type Request.

type Request struct {
    args        []int
    f           func([]int) int
    resultChan  chan int
}

The client provides a function and its arguments, as well as a channel inside the request object on which to receive the answer.

func sum(a []int) (s int) {
    for _, v := range a {
        s += v
    }
    return
}

request := &Request{[]int{3, 4, 5}, sum, make(chan int)}
// Send request
clientRequests <- request
// Wait for response.
fmt.Printf("answer: %d\n", <-request.resultChan)

On the server side, the handler function is the only thing that changes.

func handle(queue chan *Request) {
    for req := range queue {
        req.resultChan <- req.f(req.args)
    }
}

There's clearly a lot more to do to make it realistic, but this code is a framework for a rate-limited, parallel, non-blocking RPC system, and there's not a mutex in sight.

Parallelization

Another application of these ideas is to parallelize a calculation across multiple CPU cores. If the calculation can be broken into separate pieces that can execute independently, it can be parallelized, with a channel to signal when each piece completes.

Let's say we have an expensive operation to perform on a vector of items, and that the value of the operation on each item is independent, as in this idealized example.

type Vector []float64

// Apply the operation to v[i], v[i+1] ... up to v[n-1].
func (v Vector) DoSome(i, n int, u Vector, c chan int) {
    for ; i < n; i++ {
        v[i] += u.Op(v[i])
    }
    c <- 1    // signal that this piece is done
}

We launch the pieces independently in a loop, one per CPU. They can complete in any order but it doesn't matter; we just count the completion signals by draining the channel after launching all the goroutines.

const NCPU = 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)
    }
    // Drain the channel.
    for i := 0; i < NCPU; i++ {
        <-c    // wait for one task to complete
    }
    // All done.
}

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 GOMAXPROCS set to the number of cores to use or import the runtime package and call runtime.GOMAXPROCS(NCPU). A helpful value might be runtime.NumCPU(), 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.

Be sure not to confuse the ideas of concurrency—structuring a program as independently executing components—and parallelism—executing calculations in parallel for efficiency on multiple CPUs. Although the concurrency features of Go can make some problems easy to structure as parallel computations, Go is a concurrent language, not a parallel one, and not all parallelization problems fit Go's model. For a discussion of the distinction, see the talk cited in this blog post.

A leaky buffer

The tools of concurrent programming can even make non-concurrent ideas easier to express. Here's an example abstracted from an RPC package. The client goroutine loops receiving data from some source, perhaps a network. To avoid allocating and freeing buffers, it keeps a free list, and uses a buffered channel to represent it. If the channel is empty, a new buffer gets allocated. Once the message buffer is ready, it's sent to the server on serverChan.

var freeList = make(chan *Buffer, 100)
var serverChan = make(chan *Buffer)

func client() {
    for {
        var b *Buffer
        // Grab a buffer if available; allocate if not.
        select {
        case b = <-freeList:
            // Got one; nothing more to do.
        default:
            // None free, so allocate a new one.
            b = new(Buffer)
        }
        load(b)              // Read next message from the net.
        serverChan <- b      // Send to server.
    }
}

The server loop receives each message from the client, processes it, and returns the buffer to the free list.

func server() {
    for {
        b := <-serverChan    // Wait for work.
        process(b)
        // Reuse buffer if there's room.
        select {
        case freeList <- b:
            // Buffer on free list; nothing more to do.
        default:
            // Free list full, just carry on.
        }
    }
}

The client attempts to retrieve a buffer from freeList; if none is available, it allocates a fresh one. The server's send to freeList puts b back on the free list unless the list is full, in which case the buffer is dropped on the floor to be reclaimed by the garbage collector. (The default clauses in the select statements execute when no other case is ready, meaning that the selects never block.) This implementation builds a leaky bucket free list in just a few lines, relying on the buffered channel and the garbage collector for bookkeeping.

Errors

Library routines must often return some sort of error indication to the caller. As mentioned earlier, Go's multivalue return makes it easy to return a detailed error description alongside the normal return value. It is good style to use this feature to provide detailed error information. For example, as we'll see, os.Open doesn't just return a nil pointer on failure, it also returns an error value that describes what went wrong.

By convention, errors have type error, a simple built-in interface.

type error interface {
    Error() string
}

A library writer is free to implement this interface with a richer model under the covers, making it possible not only to see the error but also to provide some context. As mentioned, alongside the usual *os.File return value, os.Open also returns an error value. If the file is opened successfully, the error will be nil, but when there is a problem, it will hold an os.PathError:

// PathError records an error and the operation and
// file path that caused it.
type PathError struct {
    Op string    // "open", "unlink", etc.
    Path string  // The associated file.
    Err error    // Returned by the system call.
}

func (e *PathError) Error() string {
    return e.Op + " " + e.Path + ": " + e.Err.Error()
}

PathError's Error generates a string like this:

open /etc/passwx: no such file or directory

Such an error, which includes the problematic file name, the operation, and the operating system error it triggered, is useful even if printed far from the call that caused it; it is much more informative than the plain "no such file or directory".

When feasible, error strings should identify their origin, such as by having a prefix naming the operation or package that generated the error. For example, in package image, the string representation for a decoding error due to an unknown format is "image: unknown format".

Callers that care about the precise error details can use a type switch or a type assertion to look for specific errors and extract details. For PathErrors this might include examining the internal Err field for recoverable failures.

for try := 0; try < 2; try++ {
    file, err = os.Create(filename)
    if err == nil {
        return
    }
    if e, ok := err.(*os.PathError); ok && e.Err == syscall.ENOSPC {
        deleteTempFiles()  // Recover some space.
        continue
    }
    return
}

The second if statement here is another type assertion. If it fails, ok will be false, and e will be nil. If it succeeds, ok will be true, which means the error was of type *os.PathError, and then so is e, which we can examine for more information about the error.

Panic

The usual way to report an error to a caller is to return an error as an extra return value. The canonical Read method is a well-known instance; it returns a byte count and an error. But what if the error is unrecoverable? Sometimes the program simply cannot continue.

For this purpose, there is a built-in function panic that in effect creates a run-time error that will stop the program (but see the next section). The function takes a single argument of arbitrary type—often a string—to be printed as the program dies. It's also a way to indicate that something impossible has happened, such as exiting an infinite loop.

// A toy implementation of cube root using Newton's method.
func CubeRoot(x float64) float64 {
    z := x/3   // Arbitrary initial value
    for i := 0; i < 1e6; i++ {
        prevz := z
        z -= (z*z*z-x) / (3*z*z)
        if veryClose(z, prevz) {
            return z
        }
    }
    // A million iterations has not converged; something is wrong.
    panic(fmt.Sprintf("CubeRoot(%g) did not converge", x))
}

This is only an example but real library functions should avoid panic. If the problem can be masked or worked around, it's always better to let things continue to run rather than taking down the whole program. One possible counterexample is during initialization: if the library truly cannot set itself up, it might be reasonable to panic, so to speak.

var user = os.Getenv("USER")

func init() {
    if user == "" {
        panic("no value for $USER")
    }
}

Recover

When panic is called, including implicitly for run-time errors such as indexing a slice out of bounds or failing a type assertion, it immediately stops execution of the current function and begins unwinding the stack of the goroutine, running any deferred functions along the way. If that unwinding reaches the top of the goroutine's stack, the program dies. However, it is possible to use the built-in function recover to regain control of the goroutine and resume normal execution.

A call to recover stops the unwinding and returns the argument passed to panic. Because the only code that runs while unwinding is inside deferred functions, recover is only useful inside deferred functions.

One application of recover is to shut down a failing goroutine inside a server without killing the other executing goroutines.

func server(workChan <-chan *Work) {
    for work := range workChan {
        go safelyDo(work)
    }
}

func safelyDo(work *Work) {
    defer func() {
        if err := recover(); err != nil {
            log.Println("work failed:", err)
        }
    }()
    do(work)
}

In this example, if do(work) panics, the result will be logged and the goroutine will exit cleanly without disturbing the others. There's no need to do anything else in the deferred closure; calling recover handles the condition completely.

Because recover always returns nil unless called directly from a deferred function, deferred code can call library routines that themselves use panic and recover without failing. As an example, the deferred function in safelyDo might call a logging function before calling recover, and that logging code would run unaffected by the panicking state.

With our recovery pattern in place, the do function (and anything it calls) can get out of any bad situation cleanly by calling panic. We can use that idea to simplify error handling in complex software. Let's look at an idealized version of a regexp package, which reports parsing errors by calling panic with a local error type. Here's the definition of Error, an error method, and the Compile function.

// Error is the type of a parse error; it satisfies the error interface.
type Error string
func (e Error) Error() string {
    return string(e)
}

// error is a method of *Regexp that reports parsing errors by
// panicking with an Error.
func (regexp *Regexp) error(err string) {
    panic(Error(err))
}

// Compile returns a parsed representation of the regular expression.
func Compile(str string) (regexp *Regexp, err error) {
    regexp = new(Regexp)
    // doParse will panic if there is a parse error.
    defer func() {
        if e := recover(); e != nil {
            regexp = nil    // Clear return value.
            err = e.(Error) // Will re-panic if not a parse error.
        }
    }()
    return regexp.doParse(str), nil
}

If doParse panics, the recovery block will set the return value to nil—deferred functions can modify named return values. It will then check, in the assignment to err, that the problem was a parse error by asserting that it has the local type Error. If it does not, the type assertion will fail, causing a run-time error that continues the stack unwinding as though nothing had interrupted it. This check means that if something unexpected happens, such as an index out of bounds, the code will fail even though we are using panic and recover to handle parse errors.

With error handling in place, the error method (because it's a method bound to a type, it's fine, even natural, for it to have the same name as the builtin error type) makes it easy to report parse errors without worrying about unwinding the parse stack by hand:

if pos == 0 {
    re.error("'*' illegal at start of expression")
}

Useful though this pattern is, it should be used only within a package. Parse turns its internal panic calls into error values; it does not expose panics to its client. That is a good rule to follow.

By the way, this re-panic idiom changes the panic value if an actual error occurs. However, both the original and new failures will be presented in the crash report, so the root cause of the problem will still be visible. Thus this simple re-panic approach is usually sufficient—it's a crash after all—but if you want to display only the original value, you can write a little more code to filter unexpected problems and re-panic with the original error. That's left as an exercise for the reader.

A web server

Let's finish with a complete Go program, a web server. This one is actually a kind of web re-server. Google provides a service at http://chart.apis.google.com that does automatic formatting of data into charts and graphs. It's hard to use interactively, though, because you need to put the data into the URL as a query. The program here provides a nicer interface to one form of data: given a short piece of text, it calls on the chart server to produce a QR code, a matrix of boxes that encode the text. That image can be grabbed with your cell phone's camera and interpreted as, for instance, a URL, saving you typing the URL into the phone's tiny keyboard.

Here's the complete program. An explanation follows.

{{code "/doc/progs/eff_qr.go" `/package/` `$`}}

The pieces up to main should be easy to follow. The one flag sets a default HTTP port for our server. The template variable templ is where the fun happens. It builds an HTML template that will be executed by the server to display the page; more about that in a moment.

The main function parses the flags and, using the mechanism we talked about above, binds the function QR to the root path for the server. Then http.ListenAndServe is called to start the server; it blocks while the server runs.

QR just receives the request, which contains form data, and executes the template on the data in the form value named s.

The template package html/template is powerful; this program just touches on its capabilities. In essence, it rewrites a piece of HTML text on the fly by substituting elements derived from data items passed to templ.Execute, in this case the form value. Within the template text (templateStr), double-brace-delimited pieces denote template actions. The piece from {{html "{{if .}}"}} to {{html "{{end}}"}} executes only if the value of the current data item, called . (dot), is non-empty. That is, when the string is empty, this piece of the template is suppressed.

The two snippets {{html "{{.}}"}} say to show the data presented to the template—the query string—on the web page. The HTML template package automatically provides appropriate escaping so the text is safe to display.

The rest of the template string is just the HTML to show when the page loads. If this is too quick an explanation, see the documentation for the template package for a more thorough discussion.

And there you have it: a useful web server in a few lines of code plus some data-driven HTML text. Go is powerful enough to make a lot happen in a few lines.

go/doc/gccgo_contribute.html0100644000000000000000000001047612412656737016462 0ustar00rootroot00000000000000

Introduction

These are some notes on contributing to the gccgo frontend for GCC. For information on contributing to parts of Go other than gccgo, see Contributing to the Go project. For information on building gccgo for yourself, see Setting up and using gccgo. For more of the gritty details on the process of doing development with the gccgo frontend, see the file HACKING in the gofrontend repository.

Legal Prerequisites

You must follow the Go copyright rules for all changes to the gccgo frontend and the associated libgo library. Code that is part of GCC rather than gccgo must follow the general GCC contribution rules.

Code

The master sources for the gccgo frontend may be found at http://code.google.com/p/gofrontend. The master sources are not buildable by themselves, but only in conjunction with GCC (in the future, other compilers may be supported). Changes made to the gccgo frontend are also applied to the GCC source code repository hosted at gcc.gnu.org. In the gofrontend repository, the go directory is mirrored to the gcc/go/gofrontend directory in the GCC repository, and the gofrontend libgo directory is mirrored to the GCC libgo directory. In addition, the test directory from the main Go repository is mirrored to the gcc/testsuite/go.test/test directory in the GCC repository.

Changes to these directories always flow from the master sources to the GCC repository. The files should never be changed in the GCC repository except by changing them in the master sources and mirroring them.

The gccgo frontend is written in C++. It follows the GNU coding standards to the extent that they apply to C++. In writing code for the frontend, follow the formatting of the surrounding code. Although the frontend is currently tied to the rest of the GCC codebase, we plan to make it more independent. Eventually all GCC-specific code will migrate out of the frontend proper and into GCC proper. In the GCC sources this will generally mean moving code from gcc/go/gofrontend to gcc/go.

The run-time library for gccgo is mostly the same as the library in the main Go repository. The library code in the Go repository is periodically merged into the libgo/go directory of the gofrontend and then the GCC repositories, using the shell script libgo/merge.sh. Accordingly, most library changes should be made in the main Go repository. The files outside of libgo/go are gccgo-specific; that said, some of the files in libgo/runtime are based on files in src/pkg/runtime in the main Go repository.

Testing

All patches must be tested. A patch that introduces new failures is not acceptable.

To run the gccgo test suite, run make check-go in your build directory. This will run various tests under gcc/testsuite/go.* and will also run the libgo testsuite. This copy of the tests from the main Go repository is run using the DejaGNU script found in gcc/testsuite/go.test/go-test.exp.

Most new tests should be submitted to the main Go repository for later mirroring into the GCC repository. If there is a need for specific tests for gccgo, they should go in the gcc/testsuite/go.go-torture or gcc/testsuite/go.dg directories in the GCC repository.

Submitting Changes

Changes to the Go frontend should follow the same process as for the main Go repository, only for the gofrontend project and thegofrontend-dev@googlegroups.com mailing list rather than the go project and the golang-dev@googlegroups.com mailing list. Those changes will then be merged into the GCC sources.

go/doc/gccgo_install.html0100644000000000000000000004105512412656734015744 0ustar00rootroot00000000000000

This document explains how to use gccgo, a compiler for the Go language. The gccgo compiler is a new frontend for GCC, the widely used GNU compiler. Although the frontend itself is under a BSD-style license, gccgo is normally used as part of GCC and is then covered by the GNU General Public License (the license covers gccgo itself as part of GCC; it does not cover code generated by gccgo).

Note that gccgo is not the gc compiler; see the Installing Go instructions for that compiler.

Releases

The simplest way to install gccgo is to install a GCC binary release built to include Go support. GCC binary releases are available from various websites and are typically included as part of GNU/Linux distributions. We expect that most people who build these binaries will include Go support.

The GCC 4.7.1 release and all later 4.7 releases include a complete Go 1 compiler and libraries.

Due to timing, the GCC 4.8.0 and 4.8.1 releases are close to but not identical to Go 1.1. The GCC 4.8.2 release includes a complete Go 1.1.2 implementation.

Source code

If you cannot use a release, or prefer to build gccgo for yourself, the gccgo source code is accessible via Subversion. The GCC web site has instructions for getting the GCC source code. The gccgo source code is included. As a convenience, a stable version of the Go support is available in a branch of the main GCC code repository: svn://gcc.gnu.org/svn/gcc/branches/gccgo. This branch is periodically updated with stable Go compiler sources.

Note that although gcc.gnu.org is the most convenient way to get the source code for the Go frontend, it is not where the master sources live. If you want to contribute changes to the Go frontend compiler, see Contributing to gccgo.

Building

Building gccgo is just like building GCC with one or two additional options. See the instructions on the gcc web site. When you run configure, add the option --enable-languages=c,c++,go (along with other languages you may want to build). If you are targeting a 32-bit x86, then you will want to build gccgo to default to supporting locked compare and exchange instructions; do this by also using the configure option --with-arch=i586 (or a newer architecture, depending on where you need your programs to run). If you are targeting a 64-bit x86, but sometimes want to use the -m32 option, then use the configure option --with-arch-32=i586.

Gold

On x86 GNU/Linux systems the gccgo compiler is able to use a small discontiguous stack for goroutines. This permits programs to run many more goroutines, since each goroutine can use a relatively small stack. Doing this requires using the gold linker version 2.22 or later. You can either install GNU binutils 2.22 or later, or you can build gold yourself.

To build gold yourself, build the GNU binutils, using --enable-gold=default when you run the configure script. Before building, you must install the flex and bison packages. A typical sequence would look like this (you can replace /opt/gold with any directory to which you have write access):

cvs -z 9 -d :pserver:anoncvs@sourceware.org:/cvs/src login
[password is "anoncvs"]
[The next command will create a directory named src, not binutils]
cvs -z 9 -d :pserver:anoncvs@sourceware.org:/cvs/src co binutils
mkdir binutils-objdir
cd binutils-objdir
../src/configure --enable-gold=default --prefix=/opt/gold
make
make install

However you install gold, when you configure gccgo, use the option --with-ld=GOLD_BINARY.

Prerequisites

A number of prerequisites are required to build GCC, as described on the gcc web site. It is important to install all the prerequisites before running the gcc configure script. The prerequisite libraries can be conveniently downloaded using the script contrib/download_prerequisites in the GCC sources.

Build commands

Once all the prerequisites are installed, then a typical build and install sequence would look like this (only use the --with-ld option if you are using the gold linker as described above):

svn checkout svn://gcc.gnu.org/svn/gcc/branches/gccgo gccgo
mkdir objdir
cd objdir
../gccgo/configure --prefix=/opt/gccgo --enable-languages=c,c++,go --with-ld=/opt/gold/bin/ld
make
make install

A note on Ubuntu

Current versions of Ubuntu and versions of GCC before 4.8 disagree on where system libraries and header files are found. This is not a gccgo issue. When building older versions of GCC, setting these environment variables while configuring and building gccgo may fix the problem.

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
C_INCLUDE_PATH=/usr/include/x86_64-linux-gnu
CPLUS_INCLUDE_PATH=/usr/include/x86_64-linux-gnu
export LIBRARY_PATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH

Using gccgo

The gccgo compiler works like other gcc frontends. The gccgo installation does not currently include a version of the go command. However if you have the go command from an installation of the gc compiler, you can use it with gccgo by passing the option -compiler gccgo to go build or go install or go test.

To compile a file without using the go command:

gccgo -c file.go

That produces file.o. To link files together to form an executable:

gccgo -o file file.o

To run the resulting file, you will need to tell the program where to find the compiled Go packages. There are a few ways to do this:

  • Set the LD_LIBRARY_PATH environment variable:

    LD_LIBRARY_PATH=${prefix}/lib/gcc/MACHINE/VERSION
    [or]
    LD_LIBRARY_PATH=${prefix}/lib64/gcc/MACHINE/VERSION
    export LD_LIBRARY_PATH
    

    Here ${prefix} is the --prefix option used when building gccgo. For a binary install this is normally /usr. Whether to use lib or lib64 depends on the target. Typically lib64 is correct for x86_64 systems, and lib is correct for other systems. The idea is to name the directory where libgo.so is found.

  • Passing a -Wl,-R option when you link:

    gccgo -o file file.o -Wl,-R,${prefix}/lib/gcc/MACHINE/VERSION
    [or]
    gccgo -o file file.o -Wl,-R,${prefix}/lib64/gcc/MACHINE/VERSION
    
  • Use the -static-libgo option to link statically against the compiled packages.

  • Use the -static option to do a fully static link (the default for the gc compiler).

Options

The gccgo compiler supports all GCC options that are language independent, notably the -O and -g options.

The -fgo-prefix=PREFIX option may be used to set a unique prefix for the package being compiled. This option is intended for use with large programs that contain many packages, in order to allow multiple packages to use the same identifier as the package name. The PREFIX may be any string; a good choice for the string is the directory where the package will be installed.

The -I and -L options, which are synonyms for the compiler, may be used to set the search path for finding imports.

Imports

When you compile a file that exports something, the export information will be stored directly in the object file. When you import a package, you must tell gccgo how to find the file.

When you import the package FILE with gccgo, it will look for the import data in the following files, and use the first one that it finds.

  • FILE.gox
  • libFILE.so
  • libFILE.a
  • FILE.o

FILE.gox, when used, will typically contain nothing but export data. This can be generated from FILE.o via

objcopy -j .go_export FILE.o FILE.gox

The gccgo compiler will look in the current directory for import files. In more complex scenarios you may pass the -I or -L option to gccgo. Both options take directories to search. The -L option is also passed to the linker.

The gccgo compiler does not currently (2013-06-20) record the file name of imported packages in the object file. You must arrange for the imported data to be linked into the program.

gccgo -c mypackage.go              # Exports mypackage
gccgo -c main.go                   # Imports mypackage
gccgo -o main main.o mypackage.o   # Explicitly links with mypackage.o

Debugging

If you use the -g option when you compile, you can run gdb on your executable. The debugger has only limited knowledge about Go. You can set breakpoints, single-step, etc. You can print variables, but they will be printed as though they had C/C++ types. For numeric types this doesn't matter. Go strings and interfaces will show up as two-element structures. Go maps and channels are always represented as C pointers to run-time structures.

C Interoperability

When using gccgo there is limited interoperability with C, or with C++ code compiled using extern "C".

Types

Basic types map directly: an int in Go is an int in C, an int32 is an int32_t, etc. Go byte is equivalent to C unsigned char. Pointers in Go are pointers in C. A Go struct is the same as C struct with the same fields and types.

The Go string type is currently defined as a two-element structure (this is subject to change):

struct __go_string {
  const unsigned char *__data;
  int __length;
};

You can't pass arrays between C and Go. However, a pointer to an array in Go is equivalent to a C pointer to the equivalent of the element type. For example, Go *[10]int is equivalent to C int*, assuming that the C pointer does point to 10 elements.

A slice in Go is a structure. The current definition is (this is subject to change):

struct __go_slice {
  void *__values;
  int __count;
  int __capacity;
};

The type of a Go function is a pointer to a struct (this is subject to change). The first field in the struct points to the code of the function, which will be equivalent to a pointer to a C function whose parameter types are equivalent, with an additional trailing parameter. The trailing parameter is the closure, and the argument to pass is a pointer to the Go function struct. When a Go function returns more than one value, the C function returns a struct. For example, these functions are roughly equivalent:

func GoFunction(int) (int, float64)
struct { int i; float64 f; } CFunction(int, void*)

Go interface, channel, and map types have no corresponding C type (interface is a two-element struct and channel and map are pointers to structs in C, but the structs are deliberately undocumented). C enum types correspond to some integer type, but precisely which one is difficult to predict in general; use a cast. C union types have no corresponding Go type. C struct types containing bitfields have no corresponding Go type. C++ class types have no corresponding Go type.

Memory allocation is completely different between C and Go, as Go uses garbage collection. The exact guidelines in this area are undetermined, but it is likely that it will be permitted to pass a pointer to allocated memory from C to Go. The responsibility of eventually freeing the pointer will remain with C side, and of course if the C side frees the pointer while the Go side still has a copy the program will fail. When passing a pointer from Go to C, the Go function must retain a visible copy of it in some Go variable. Otherwise the Go garbage collector may delete the pointer while the C function is still using it.

Function names

Go code can call C functions directly using a Go extension implemented in gccgo: a function declaration may be preceded by //extern NAME. For example, here is how the C function open can be declared in Go:

//extern open
func c_open(name *byte, mode int, perm int) int

The C function naturally expects a NUL-terminated string, which in Go is equivalent to a pointer to an array (not a slice!) of byte with a terminating zero byte. So a sample call from Go would look like (after importing the syscall package):

var name = [4]byte{'f', 'o', 'o', 0};
i := c_open(&name[0], syscall.O_RDONLY, 0);

(this serves as an example only, to open a file in Go please use Go's os.Open function instead).

Note that if the C function can block, such as in a call to read, calling the C function may block the Go program. Unless you have a clear understanding of what you are doing, all calls between C and Go should be implemented through cgo or SWIG, as for the gc compiler.

The name of Go functions accessed from C is subject to change. At present the name of a Go function that does not have a receiver is prefix.package.Functionname. The prefix is set by the -fgo-prefix option used when the package is compiled; if the option is not used, the default is go. To call the function from C you must set the name using a GCC extension.

extern int go_function(int) __asm__ ("myprefix.mypackage.Function");

Automatic generation of Go declarations from C source code

The Go version of GCC supports automatically generating Go declarations from C code. The facility is rather awkward, and most users should use the cgo program with the -gccgo option instead.

Compile your C code as usual, and add the option -fdump-go-spec=FILENAME. This will create the file FILENAME as a side effect of the compilation. This file will contain Go declarations for the types, variables and functions declared in the C code. C types that can not be represented in Go will be recorded as comments in the Go code. The generated file will not have a package declaration, but can otherwise be compiled directly by gccgo.

This procedure is full of unstated caveats and restrictions and we make no guarantee that it will not change in the future. It is more useful as a starting point for real Go code than as a regular procedure.

RTEMS Port

The gccgo compiler has been ported to RTEMS. RTEMS is a real-time executive that provides a high performance environment for embedded applications on a range of processors and embedded hardware. The current gccgo port is for x86. The goal is to extend the port to most of the architectures supported by RTEMS. For more information on the port, as well as instructions on how to install it, please see this RTEMS Wiki page. go/doc/go-logo-black.png0100644000000000000000000002121312412656734015363 0ustar00rootroot00000000000000PNG  IHDRM` gsRGBbKGD"3IDATxwWuǿoWZVdKec )dBHO&3LfR'L2) !j;eջV}9s^j.ݙ7ʽ{{nZIK궔6Iϫ$5ZRYI5riI%>o%ir!ךJ?i2jvTɤa4-=]'i17[kjI%¼jfl~PҀ5p_ՒfVIYI'$LFI/J:cKJ:ISN#Hz%`~5 ͘k%=-IIG%tWp%5!f)Iw#$==%@T@3IRZc&&&tMVt50"YI'%=.J@Aҝ;$t 4Z^.i >*ĤLZfMҫ =|)9I%}9V@hm̛%:GXljI#\O^A,qm"G.\l`^똴5UjiI}y4>| Z&%&7%=_fa*{y&^ >7 A~FI%fIb2jdyID `VABTm*Ŵ2iI8.cizW;qkXW'HZҖڪݒnDŽd Jz ; AtK;S;rZ j3WPCP qu3Kr.Igc~EI"K4Z18/)興zׂ_5LAщ؄XunXsO&i\qo\%m&ITarud_)0CJZM:R0# LQ`"w`ncr\$ 6siϞ#nt8\R&`RwK&PQa p̍bv)2+ݨbɑ~=nE4Jhx Z>I[ Iuu.ӍIS .G'zQҟI/; 0r+rK:^5bN:_ls(> Isτ_!xދpx帇vpI[LW` _vjkIQHmZlD}oL1n'geȋ5)3n ǮLvT%}!r ϖvs=BU%mYү %} m^Z4VVfof46Gf)f9,0Ź|B!= f61\g$9֏P\9+i8\Һbl53QPM_FSyO83a"ӊV~I*20x$}Vig +R/8O?CoJMZ>[=c[%}cċ̇+yd9gB, Ch:Xqq~{mכҐ+ 6)v'v~GK]]&}_+鋺j68sѮg$}M}<, w~4^}%Z@E#drצ3_ iiT&_ʁs301j zNI4λ%}^z-&kMq.*UOR-#w0i'q>fȒ )`9i<~aB)6HsEkERTpi@~N1k!1!pI+n?'鵒^U=feɧ\˘ g YE?Ogq\W诒Nԧ:+%Y IIɤ/992Hş?%}K! p}abc> nK_ %r[BWLԏJZhmDW$=P VªyEf3h%Uכ80ª`WX|u "-ֶ*žƹ?)wF\,|'bbnV\3߄>z)z'r;AԮ7sPXӟTJh9|2[lcELV?85),Pp:F(G'->%l PL0c?QMiFTa.ٚ2KSĜiu ڊꅀ-$bB{8 lyێpf huԌШDcLz NBaCh@] ZaSbBG@ٔ4 ^Pb'V(%=,Iɲۊ4VHz@e$x5)ĚlLc z)SR2Kde+*_f|-*륆 tya\X$QŬ[b]X#ԩrv_}_Ii0\(& dCgHtxܫ9E/w BcٶL9l~'k@5I)өEۆSXj#X_&OzNIaPJ>xҡ+$&w) #w2\9_D6Y4Cs;X`N\wB>ؖI1-PU1UXwRXã5L$cM!c$BwG)>+ZV\xy d-`E._{f>o&@^q7*oD_8sW|ߠM?U?(b].SCp41V0tax^\iܾ[gK&H\q:MGfT1h@gP {8~sR1:b&EVx_QqC $nBY 9&m 桜5S15<j8]VI?Pz ͵cSOqʓZ7 Py[+JbmìnhO1INI>@?D}ߟ7QuNN+jhZNdY 7'We8e[IxlSX&3Չ S|- ]~Tq}[}{ br6ؤ)emKK&]@$Xˆ bp3E Kq>XQ}nc̾ WrKKӜob:Ne=˯U2H7s3>4-q_ib#CR q#bf8Z_jiλRY&n )nd g\I[vI?B!PL߮Pn ;}ݪk'7NBp^;%MxRL^3A\ K?2g_ԡέv>@SH eF&J5~ګXMꬤ?B FьC60F}mi&^V[O)I݀V8odAE'cjU+ٮE؏63_[ J'ҭmfg%-*oX37SX=;`*,(|9IYᇂ.]՜-mE4 Iɇ0?Wt`a7q~wqssJvr q!v+drpvv5ڀe{A8m)%pSaT!,$!Jkg>uO,raZYa*pҎD<Ȥ-(&&u 1[' Vq8VhA] 9\B͖< !@ȅa^D{>XA3zkƟB>^XmnͨQ[}Վ2utb17X1 5KX"_?qL aL;7$L3QŬƽM d^+UPЂ.P[ F&Gt1~AW8"PM_IF "^4@W`|{> a8ULZ9gE΢7 %mKh1RTCx\1Mi4ҙ/08,D_(ݞ O_Hq&Kaފ֌Ik dͤ|oVX ~FQG*FGDMCߌ͠0-^i61Y*ڶbkG!QAu$Yҟ(f=[Ĩލ4'xi%"<5%>N|D3Ȥ4B:G}IC̬a>orB}&F$G# _S9k+Y&7ֽpA6\BhԠߥTZqVZvǵsƽܮhC }f)דqaoq 8}NHO'g\bV3ńL 6#͒RZΙpLS0q`7xPX<αΗt4ZԨŔ4/ T~Mk{`gzrFIzk~l)GJunotVYͥNwPO^ƀs̑Rp9ӯE1ҤY>3L/a[y7goV [( Χ9)S7bc|vB-*g( pY6zՙi=@fy'}r}h© Hn;{ȣ'.GJPw<"J{p&}Jg<Fn&jS˗A1xkTlbמ9P*nޗs *oHCh b.,28yN Q/aw~X=ycX~Bph5Wj"鷡ʭNÛ6sog\W XoUN u:?zagZ 6VܕbKVmp jbw%%0ňs7׸P:F-@ekż=(ƲǙD6;9^Urm+7ˤn>&~Xqi4$s! 8mMәyhiHuy}fڙYǺ1.qm'} R\'0&xl"vAQC?Cs<32۝q?kRsmd|^/~ZqQHomBqD1l\a]J0*nV&gOoigA6Mv dBvEl>V T#ٖT nlq GT{16+:78}c094V"W,jB c4(#wl{rdoBXbs/c|ɱ 8l͊[pF[+C^E!%f3K)&#vY6J+ɺks*騋t|rbհ\9&8m2\@")jRyb`A&~ /c=I[$9D]Lܜq!:ʬ۠w#,(nABX {'Ln4<7-fdeB1GZTܫy(e+c?Ώ21cb qy#kq82K b7c)V@luavnoCezGQ^rm_/w,i5Z9g@,٠S1'n:Vd] sY>~c| m\bv}*Jྛ s@I1'Z\㝌9N4Bh9XjadeМgA[nLIt w Br8Ur6|+*}3N1) +V&_)suY])"Zx>bvs-8`nA8 +623L[fG''0G7(.&ܯ,=׽P"sF[m!7qqBj`EWӹIΟE>!4\5}T3Ul-6Mf+/vC(зHkKߚq~Rup%B漝UX-B;);9gl7ڦݑ'!(*b)6CJBZJ nJեu4VH #RnXm-Kp\VN%c3ꔼI;fJ;mQ9 s+pk4bnDmW,Jܛv7@>s5Zf6h ,w>` zZ׬L)h'nfY·˺ɺma[:Zg?t[d|6|y#þŹGܼiV_Ҭ#ts"^4.X@Ӈ_pb}'T,{]_8CnGN87LJVȩ] osm-OBƭLmHy|VG1WnwbVN [lۧ/i%2J+Vu׻' Ufn>}Cae\7e:~镊di98ճCE׶vQaPwb]T ӊ+Hj-LC،( xW=ĔnpY&XZwaF=UU{ fy8PNLwJ_ۦ޽[xle9XJ/(,&[?mI5f 9r~ oAcSע ~r`혆[&f%v**>315J+I|JgY>} - uXa-72U]7@9uĖA#>Xk1`I[>mu?m혂*gɼfЊ 6En;&ų)!&WTm9.)^ج[kIg>>F/?)%B-i:χhaKqs͂}[qc՚R`[hV9ԡ yL5B$WkRXxڅD+lIquFpU,7Es Π*¥S6U=aEa]mLׁI۔~T++wn>9&*3kl^7nY5y_M׭Hg3WvX҅IKZEIKZҒ%g_Oa IENDB`go/doc/go-logo-blue.png0100644000000000000000000002222012412656734015235 0ustar00rootroot00000000000000PNG  IHDRKKssRGBbKGD$8IDATx TձYF@QP JDw}%g4bSnb1jո`@Q\dDWs~wL3 ~n۷oW׿jn5ݶ:8[4zIJ[Jޥ7%֮myP6zֹgKtk ak\ݙ-j>EJ;Vײ 3ݚН q@R$Z&6u:\[ꊥ[(ML E6JLX5Wh&o"%kh#ɣ,بLctk2N&L躘J766G0KcG12.=*W̮}Itk+S5Vﳭ[)qƥw6ac|U22mR^Ʀ,aQ8&r QqtL r㿷q=~ |=gc7to86v\ϷqKsl&ntkJUV61p3l̲g5Ox*;~P|fucmkq ۏm/?`koq}iJH/mm$7{ma6^6RvBQW$ۏmNTA|tÔ Rn7Ύ#ر:/qJ*Gl,!f4tK-l,,%7'z \xgkpמ BccOl|*+U,p7${~}RPRloc K[dmmRIH*6 ᣶Ƌ6FF\nϚ¸o@X-kcm|rR|=A9BVײt]<}wھc* VEQ+kbr=֌=~m=~go *сX8(bJ{m[{|ߵ!vɮ_au4=L`jw NORkS7٘c?Vnn8VpRBG1X4fI7/ lBܨ&L)z&_ kXlܯUAa,*f_*q.=ts%Mb\r.p=\".MRAYϗX~OklDvW 8>v|ΠeC<>WdZ;=\uNn";^[w(Fi8)6~"bx2%X[xyW&f6ׄ^٘f7Aj [};4>^~,.}xX<s.Fqd)]þs W/raJ$ZXc?ᜳqJ*fAGۋ"eſ4~|\1w%_Y8 v(߬!B1s_/!VY$7*<'li,ZN[|d»Cml 1Wg>8/XɝQ1e &wZO$Q{+SQ8s%hH\ (n,s~X6ɡ1{. Z_&=rRYbj6|G cDP'K},)Ĭ犢`[bxX3> 끨?cs͎( $пQ'Jn}Azˋml^Eq l%. ],TjXE"A?cn3@G*>BP>ds`x['OcI/K`{Qׇ[', .){];1"ݾ>ױD|*)RJՑyɸK@,W/:wE яp4KyvqߊcEF91%54]X:B/ :WmTh}(9[@=N%[(^LP 8_Ih"F _'ɖ7|{;.Ϊ-7ԮՄ׽sU3nM4?RǙB~ Y{R\g\3W(bJrmQօrnjct'{* 5%1s\ZڔNg3=NM$;&"`RIlQJVz U*zre7PZ^h"qgM\;f(_\qk<|,+X 4}n,EMV[4߱3H_IΡ5Pp?b*ޚ(F[m(dJతwVX9Yhag&˪%eQјb Ī$z_`Ng0)5H%fH(Kl,w_%] r3vN\"I)XA;? lzMZh* |~#kX*i!iT ^k&HB.euxc[n ꯅ2Tp(Atm?a \sk;ӆNX3"tg(I ߽ABI$118$."N.|a"Pvnvh@Z#1M[8, JA0qsJ՘%18ƁE4Dj fI1Pc=$Ԗ{gW3JGh#s ŒQDzU`BPYv}o|gJ֠$Jl (4T],7I,&10~$vYIVx`[ԉ?~Qׅ営,N.^bĊ$s~>e+{;y) $LdvO [ciu=śfNKMb%yR[w$)PY>Ǘ%R8k֍֜}Lǡ@({!{+QYO+c#cLS|gj9.Cm՚"M-F2 ,i%%-<𿂰+S:tɸDoQe\WB9vhvܤT uTb^Fu|0KZ!5b/|L5_̷;Z$9zo;{,wڨj͹ 3Ӎ IR7&=+;{=>Ik"5QcL 4Cnec uRqfx;vhON&p{8[e@P.Nq-O"t\yrƲsPlYMU.ʢBJUMOu;&QԽ}1GS1\PぉDT\I2{ @l)F &ɪxKD%&Y#Оl+"n7{.=BFnBo{mq«I "Aݲv|GI5< R{\08KC5\h4muWV>#*wBmYhkzn qAҵ%TDvpGնh , "RH4 ƞypjVePi1x^LDŽ6a?",qSGUqB hnױHK<\5/%|rIR 's_{k94$?{4M%RV{TPӣ3A& qMr`}1nm2@V(ev޳?Š&_ `y4g| _}_|Qw=VڜV1 ϴnh^ w$Nubm]Ŕ?*&p>7WiO [<)Srj{5N~&%s?^s+/; 3[ @TX ~ypf6H䱉-wסUC0rUα i f0c]1Vb9>>ujjmMx\LS+8XO9nW`jֽ?6+LH!{6Z?7!M=L%u,B,הYh-_[TCtab \pW!1١Q|)} ѳ)Y*{7ih}QŘW ln=p5Ҝkls&; |aHzԒֲJb^N6 U-AI6V)hO>Ry$>Xp4Va39JXrޥ(ghΎ隣Э4kJ"E9;gWbWv@]L5fע@z3[hC(O`U\?9{VU%*Y}\Wm;3fؿi{8`.;os| -U }qqHV;-K>36kTق^D*M{~%0 f`Qn W>E;yyQOȚ۱С@R%(<*<{X'B>iA4(t 1 p.m=l2hS w]f7^ĊN4aSϭf9P0>c2:N,/磖fU͏Q .4ѾOp TBa+etF2m]IxN񒺋hūx`%:ߏ@`O6}",㋖2.E$-L_b]Qg)2k=64(p_Aא0-S"T@V/-z4k(34XKs >+; >3Qb-tb>tsmO1Oâ=Yf JLp(B?6f&,%f,Yg5=qw@U$WX MCO) )z taB_K.@Ꮺ_]cE_KPC?u8A|.ԀM(Z zodqWa  d f EQ!)  ^湷Bbw/.M);vӛ 34sn]_n[28LnCAja{0<@m6ejEʪROTUc  V\D\bV,\%Yۀb;S2ăG׭()<0cOz>ٳ MI^=Mݯ^AP3k3^X ))J[w$vLoǎ۬,|3׸H}Na # ONF{,@Ǎw|8dzUDZ*Բ쉥nO<סQ /ܯ#!TIYZ3+.m.SPQV4aűŊ$F 4ԲDu@lG}IVÂMZp`^ⅎTSv`96z*RmLlU1f"-N| i}~hf47"@. B(NVDͨCQN1q59r7$  ;[&I#h¤uTf顋Q`_] ֕v\[ 輒BX;Cz-lf_}[-[X ߵLx~z[F]28,IAS}:7WV#2ОZ>+Yj18fݓɀ})M}$g؎s+ &.YEյ3:`;JȝiXȓ4YY]3@XW 1o(s+.[W*nB#o֍=*: #jWS21o %= =BWh>?XuWTׄ$~1 DO8>L)C\\GP$UUBvf^`kx9+ŸXTOFu__6 OAЕ&^JXػ^*B&@-Hy{fs!3AHrAEx}~M|v!0x6Vg+tXSgժb/mB^'DIJ"J߆M}sPܵ J£A:H;W0Άs;s6Vyտ*lȰ1GǑZ\{b'.WIGv g#E;?%Q˥Ia/4})UnJ0pZ,^L|-(v0r04œF(C'4 (I5JXўz,/R@SP_6!ϳ鶞Z73|B\B̗aһ@LHC[nNbȝAr|\|ahR)s` χu,7P"[}ނ| 7aMSiڐ[¼[A` F  ]T@Fu7^!%[VrSBs;5M1{wS As/ff]ȗڍShZ!ee1/a׊\y{e[GP{~;mZWRc'y5Vw2C/% ~J@ nrud9xI1-EQ[8P$J0n؉񑽾2\B&Qxh[B*>T^]ӈ*nU]:ͣ, LB'b}Rӡ?BVȩ"eq գ r~¬yv8@s"(1>T}m52@95Ɨ:(NK֒\_[]{U-PqT_ IȮ`T]yU 6$J!ۙq"*w;8Y3bݮb)nlK[5j2)w炥3S5j-ɚ79IENDB`go/doc/go-logo-white.png0100644000000000000000000005173512412656734015443 0ustar00rootroot00000000000000PNG  IHDRLPoSIDATx} q0LLLLBSh M~ZE홼!UMmd3~ZGG?1 0 G0 0 #&L&Kaa&Uaa&Maa&Laa&Laa&NaaC0 ]Ä0 0N&HaZm2n^z 0 !#aa@>mY4 0?`awV%RjgaxqV/znO|Ga0 04ݬ$thy@| 0 $@ 0 JeE=|ѿ?a}|^?4 0[$ e/>zΌ@@d0 xOA@]$'zR_{z Ngǯϝɯan!C#y%@ R ?e:=G_^aJJ+(I#I뿟'2|`'ƄwI맧ke2aIRޢԣ_K@*^^xUyW4E QwUs|>(@z"[_0 WD嶁J$im$]_;|AyKuV>wM(!IzBjS$|D3da<2aRHdiJ"q ķPT.c@^ׯ}|Lt - [>(0 `!@@]|#IblfZ} +׿090 եi3 E)E3aĄ LvTg*ie5$LE[ɗVE\!J?o'%M7+7a !FnBHDdM\`.Ի cLX F8|$P?c0 ^D$LT$"LeZVQs"FXNZ i m$ߐ*nD^6qSן>$Kx^ˆ#(WEq92a_Kx"ITrex\(kpʎ>?a] ÛA$ 9'=x2tp]`jqwaդoLb$t]h vD.TI03a.=Mt^yNX!u7*~$!SݓT* 0/[@/ dNb؊ J+tDzW9-wy|s* E:% B*Eݎ5~Dn뎓Q-8A 0R:JR^^2)hKn]xzXs3b„I{˳߀OA " hQwc$0)ŪB52|,Ze2 0&K\*5^A0X'kq] 4p݉נ|-ΨrgW%ԋӕ,FL1߯E{ċ+1߅GJwa%LuKçT!e{!3R$IH ~/ Ui)P )u9 _Ko-TE7^DQ㹂6aw-#*"UE_$= TCu(J´ pYV+j#u]qۂ'2x&&?JeC&esY0 øYus89"LJQ®܊O<9x/$QjLO_#7w (oCK[DK ŕb"%iba]D9sgM2sFyJ8ϩcEď )w qE)&Q5@oKA٭8z^?S <2+"$|0 %Y- )*#S gr0BP~kYH,DC[dүrGDȓH" V"JݚS "ԥ ߺ3JgQ*LG0]*4KlA 9"H.Sg&:Ǥua?S*AjC7AHzQDĨ6[%"&)tZx;Iaa.~||"W#,(#5y8e0m@<)ptktFBoNNNR?: Ljioo 0\])c5# +̏:J172-o<=9<^8U$jv6Y! {vʁ"T]tt*Twsta6ܥQdV+aQ.PJ0C|dEL2$&58@%kN%/kRRAZϨbak*K#,:J#.`CvԎ$LXr 5[]2 x49b !OY oXE{y㩍7xfh堍gg#*W}#S%uB^M 0ހ,ٕԠR 뛏F6a:덁wVhe1ܑ*5 JRV?foz_ZDqP{ D,bd>di-9F+YnSIi3Th_+|myGm}-*Ap%q}YM 0ހ,]#l OK4K0mtDIn$´׊H_Auc.\8&[@TsGoR *f܄zb񺄩%Uz@GYߓ qui\Po,/"YJDJ0LW<&"PӣemP;hh`?VskPaRנ4QvxV2OX[{'rJPnҿrhƧf!MU k~a&YB32Er(:l2@4B*Zײ878w HDfoVLпTi!O^aZ > w 0QP&l[<<)Yqʟ>_ŞLxsH񮠴a' CqtDpJ=g([qWE @# #N*49j ̽i\ b(Uy>; 0[,zJv΢h #.6K.u&Ҿo2$_Ɍ\=18v%=&<^9Tx}8kdin8)6`2ܷIb (ROzP*2w7zZ¹Iys㳒%5 67 a0 JVkF^;)rp!ar=5݄ G$X\}G:ϔh@o6 ȅ'Vb%0'&XbZFJS؀.'JnAm^1PJ1HSL@$I+y6eӳ'27 %80_&(eAqZR7'NTzbd%0'] pnX3cn+t(dIu(ב!?Az"J)("&bR#6\} a*p8);6{a*0 |e̖Y,uҩq3<΍q1TU g;);TlDj :֏otA~9*!j5w3aOS&coJI]{0  |+[0; vATՐ"xJY[ot ;A{q tn1ua0=#DNrvLuA'SWZCt_@0BE0wځ6[ Q%P @)f4$ M޽ʐaZ(Żk%G0鄏3n)) |p梯X0^Ѣ2V0G9̤*Doz!xt5y/s))}uQ-w89aXFo&;J0eq$v ,.<ܵ~'adi$eao ԥl7ԳV&DJQޛ"I-{cّ6<ќBe80]?}o 5 w_aQcq58ǰ~@U4l}'K.qwzIޗw:t$ѽxm6 qT< Ia#$3Mz61YswΨD׮Ys_)hkG߼ؓKp?qk7 F=aV0fWHWTam"g!h"ڱaJDW=@eb˹0RO~3̸Dh`I%z7GDd)5|baOE^z]#PZLDH BdV+<4|BDIĨ% [fjԁB2oq>1F"x֌ A`..]- `$24 &GLJP)J9bG"(w ڸM=z; 6a%U{vjM]=Sd!B F"L*q%T@]2Y2 Uy#Jޢd]@\zȢ4V\yxmBYڃ<#PB+)up)|vP9PU(kί(¿)4fqa$KB*@&DRC)YeRAJ)~*CSwnR3Z f, ?~j^ܝEfx/{^T'Q+p (ƫ qLJL1.CJ%J)Faa XDjط\P*= tl]S#0.QX;2?uax`v kڲO ET!|cG :(K'#;Ҋ0T^B;&-4S`e~!R9PFԝO&Ltt^y߰iD uYK+>B^/d )Km J;mLϜqD`l g.7U+q髜w܍gTjF \U˯̉c0<$UG; iݽ,l. ?D<[q<;ADb??s $?,&^\7 ҩY(E#ct=Z BQ.Ayp&S[O_GEG?+)K>{~T\D0ݙP@3LD:L9m!ƛ(yjwaԉR F(nt x"3 Ņ|4d*"Eh%R%jƖ|4G$eϤv$v a:ݥJ4BJ4$= bh)" Y\ԉ]/~HM*aTNx|{qvBc hE6BȔg >L"_( OiT_agiqI%O%w/NT90ɼ'TyP\*Hg4O{ދKЕ!51(sw.L;[,]'43xכ't@"#ޭB Zҭβ#P J`VE 70cp`y,\vD!UOóoX,~^N(\I295 3s0{'wdg`? {- r|/Y]2B=CZq_*\q L/0|\ZT>8#+u"{;l90+-[p.$^Q#xr*K>^@YP~5nU&Pv)/ l+m>~]HMWa?4H"D S(L t5[kŽЗ_lO)Do|ExW~4}I\=?U6*U+刽+I? oF S͡"5 RܿR/FjDQEG#rbщE;h]OP='wv?}$/Vേ"U1aȷt7a |g9#ugT9@=Q7{r"@1 [GXWH.md2fFdy%0Cv#AnP]hqkz>3|5]%+)I.|< Y)uAE8*z߫0;&mLy"o$|+M) TeDk#qſ^&qP, -YX6gfڋS_91Mf8=bk#,=#}FS{'Q>P"Ad3:'Z" PUs5$J_>sO^Pg̩ <~ e>*JRl"6H&T\E ~dՇ'6) I|O]+n'? Bd3Y2~L]80]dTEGfva %o,]*R/ȺL;>L`D`X(o$R[\NK4&"i M-h(J lh;nd0T_`fxu&Pr 9Gc&>;]3~|)G2bLyXB5TV~]0fa"FY]S{Iw"HUxBW`=`X/ʏqhҨ1R<k oGJN_+1;i0>컠՜[6׃b[9Dѥr4cfn`|>¬ ѴtXU *O|ڄe?HU(6U7a`WDq*P4&d;<ƷWo tXUPMٸ9fduĐ,>ƙ Th\Ԡ 9őOv̶؞}e0 Ƞ7< pf)I}m]QF?r E9,"̢$XO3C%^ ރdؗ (EtbQQ8cR73yx+!;ĢiUI:hPjI)Q%Mt@& h| >R]!C3G RVtKP2yKgiE4$ FN$ h< =ߥʁS^ v§T)mL5iȒJtnudazt"_:B4("YAڕ6Uw Kltq[R9hN\&ouwR2!^޻}R;yntm(cG~qJ5n Dq;(MFF 5 7g:*FA{]$dYyK#\ܙDi׾YL hFyFo $eUbۄmx?}j)(afja˧5xRii |79հ?S[^ZiQDW.Y\MdNF4d¼?ʍ*cg'@82%":Mu$|F3S`NX JeGEԣb=5r\i܃Jmݭd퓄!i+ 6N2гR*¡𜸈gB"")Ix4:R =|:20TC.7,;^^(ubPIUMXMp,Y#Mb,vuܚr0 :yք}VȤJ> 3"AϮ)u(x`_NQ8B1,)%g,mZQѳv]OYtB]".MqRܕsZ0+UaJXDȿÊH+ТRZnՓ$6 Q[+'ygxo=TMC^l ~wQ .=y*?9A驻gqvq2lO祉xn% Ɖ̮Eu$-5:؟a%eiF(`]άI@&Q XI8|ڷra167"{U|m幙6rw,)Cgϴ,HAw!;&+vezPp+0ˍH>ۑŮ.]"s[w Ag]၉U<B& )I+>㶐gUzɥLjJKX:}atG1[M XEY0g`hr'&g %enx*bcl>8أM|D+FhW#3B5z5|RZ牮T́:ES9caee=9Q+BqQ];;=זs:"y30q~*b~ 7mjmdb\(IL*UW(k ˉJ p%IDxpqx;Wt& ]q!LQ^h'0ŸL"ҟ(7=ELހE o;K m[5"RH^#&EY+bIЮa9H 3dT@BmWaS6 w$IV-YHa`J /b#x&Q  iEku%~Z( CU N+ˁo)Ei "OA'KzVܿ&"b4RKgێ@JiI*P}0~F (ګ*KTDgYT[U|}#k ::R(1{{u=}݇?d U  }\QH%X KAu 3$'1d;7{`Á^HE$BۉGLxqV2qO<`*Fnl 6lAQ2R\5}TGz>@=^lE4U$zw&ocP&?QQ`0 98m8woYưExρYMhYOn_\SC6B+SRA>~v@x?6R&J@;B;8OViv@W* ;h'5H8sw;nZ2:QIYKx-~LJ<>'NZ)E}E$oi_T/&$swS8rl"L:Tzh Y,Y?Pk hN\M6`2P`"V ;E̫8܂AX! b~f1#.*|bKnj3vNE.AWɑe`Yz/z2A.Hn B-5V"K9bC;Y,361l7 `2AIzD$.#Mz1iJ"tx)&j 6w' =[-8 1cl=G\oa ;hΘhF@ ce$J_"4'MgD[O S ̰ŅJةNO2_r` YxcDPv"G&?c7`X*J iT>VPw N0Z& u.T14C)9?-ZտsRrn0Br^kamx,0]{F \H 2T "vk,"{'u,q ˬB+|"ضk ҫxnU@)?i%Cw(F#3/3uԐL}PnmO!K.Z+6SJ^ӿa'IEMdf\)Hz?g[?md"qL )c(v2,q9r]21J[o,Bz붓f254Yw2oxnæR9:`k#f ϟx(:iF1 ;+aIA=G#s/$DK3= 9uydFURDFjPu:4R7 }J(BǘU[BC~GsBe",!qYA0NEG%äp] {uu$B-TbdڍQv'OWh/rFZ-;Sw⼨حũ,Z)"Ug.yCD fB\O*KxZgj$ob*gf dNpvP49e8O4`ZH~av*PМ9PzO dé%A"?.dA =DG SFʕ.% I<`R.j3E\;{Flv=;Rw:Ai]TyNS"OxVDJH/"#h?|M콋ٛ!G\:W;пA*?_v:1=Z0;Q/LTU BJQ Mj67׃ѿn Fg.Ar4Z4>h[w=0s$P/>Ɵ9R9:AlUt=Ȟ*{<+5Iri8:etߜ f2Ҳ?4T>\~r`܄&Rgp65t\=/"&z?@ Rf酂0 F9SMYR(2oeϪHؠ ӚLp>O4w>;،"<endnM% }rD]g;( %0Q=s Lzv d\@qٗ@I9ΰZgȲ,S*ƏTaQ_)< yA5KVWkP;yvFEO )iP@˕J[0yZL&)æ ͒w/>xюK.]'_ ד_33di%z$ CD=xYRfy2nb|.Gpy w\)+h vY(89hf2!zw T Si|OFv3m;VlK 3Va\Kf$ Dh3<@:|N?=9HybT0kB}F"s`%QńR%hcj??L]9W8uY':z%K L&Rfaz/U*tVun"~v?QPb/<7gL؍(/3q\ ^Eg+ &3ffqzs"1a&| ?Û76CkLϱB%E8y ?W0v5 o*롘W$HF,s)D=(3H|@.֑eP ;jW֤Q&rF|܃G__l6WTCR&aᦀ܈,p40㮯KG/ZH}^\\tWPփL8q19| lEH@=Slس/`&.Ah?7wp=VRu9C*k@WvP~n("&ϰL 6^h(,ѯJ'- g4oL3͖5")R|z@噿+قhgrX>S ba)5"dJ䬩0țɒjer+sd JX.gX+n[Oju2ܰ)8E'3)+_M1T/r ¤ʬW"58,g/q8/kmA+tZT茒tDG Q.A,;|ﮗ+&D#yzܖ±% e9PO^hwgDe*[uE,Tz"eC>hZV\S_;.N."/ܺ,<ިNgqZ]Z$Zi*'I륡 E*Q>gL Iܴt9rwr[LDA&_GF2%b.&+2 JP!rA𖙁xoYt39߾+<A _43~ՒIG7O*En1hU|L)/I*c֢qP FNqCY6",[?7¹rw~z,7pR>+Ej@+Ov.+d750: S͋.tpi+uƯRWY-xO/䰋B9Rc1TMa%_N!sx4ș.R^<6bLf3y+笈uq Y [)KyB^R_l%2!L4f\O*M-)x,FaD%poݝ@4uᏻ(f=zb ]ބ(x +&(a& 4}* Lɐ~KJ\~KTBeH"׵H7~Faў肞ylyLq/1y$"Sp" ԢinPr`< SfK`XUO+-DDU"~q(A%hZżXELC=PAw j9h1$ii=j,BI$Sc"r@ԬQ$Dp8QZ)E驧٠:~җWO=Ĩv B?h'pFXͷ#d*Es:(d1Ķh}jyB{,oB6<ӽUBSL%O n"FPڰk߱wD~X1"@gLBR%KP]Q7hJgLwqPމJފ-5ȁKrSJyRSzP)s)0rbHu22΍]tt??KX1!b,;0y]L]27E A.r@.j8(1`L 7o8z1#Q3U3ӽ#ݳOD3aIt3{0z(=˦ ,΂F]DC+}`$*׳IS7Gw `jͧvL@Y6Y+lĐL%IUFoT>1Fd|]PIaRj@2~ѭ;ш$ƲIDvJN(e '6o}i;/P;v/rc<i`Er%Ć_`x~$*m]o]0|#ɍZ{J1Qpb$ԦC xɣ&Tó(KR3B({α7wlEd -bdP S]8e8)]<4=&;7Hxl‹ @+.jHwSCIMOCIAԞ*7ǎR8 QBDI-C +/GUH)ܨtA#~BzHRl0J?0"Eǁf0mdi}x{0I `ĹR_֮/ʓ҅ZgYȷic셼~^nQWg<Ijxnb$N~,/ZLpu"uSoWBD*c~9w0IlF[}XPmAl"Ri2l 2۳d|=L>sSƋ7-j+-j1)j aaj-*~^Tʦa[#r_X5AIdccp=.Ae%He?'KDz9;Q t]AQm:2oT.42D 6R/bdMj/=g|=9Oo [;Cf3Lgˍ;RDUt7& ("_i 27 ]KƏG015(LFQ(w9Ӌ#3A5bn f*ÍQHOdp@{nɎYtf\9£,Vl9b _Kp^oyeiϼm*wtF-d xs#Ua '6Ʊ\ĈUuPV1Q>O@G1gt *6URd@.Y^%Da|B(KXD $ RljdBE*b7L;4dN=pj5Vg$PdUgA"5(V e´c9ZƋ>]23_{XWReU>.VEpD`HhY=faL#UU"0Ol;GךCBzhntJ]=Q\ɒas&YŜA*[A~VMcA )YTn"l3Q ?U } f MD I,Jr+A{3R49AM(e"MxNS@ yD׷au ʜfΠGcfb*S.gi2J,ANe$K+i)hJ<2P .QDJ]rY ނ/|^gPV 0oTRhE(5K3$DV= $*[Rq4'(Ƽl0h(ߛ(ݡ4aim\icMue \W( 0^D]r\"h&aMa _k̃SD]nK ]99Q Y8lJa/J:16)AM.j"{Pt_d.$v-6p9nR1i~Q@зQVPihd64Pin+abU^h80 ե:rc9 4BӗLS?CA(F⿉Gkzv4BjBe˝z09w4a(L^"kPn΍kW}ncak$A(pi`Qrr nJ]Y_@[UT#2)U-.h(F`x^2dT:({a%jɕJ\B-BEڂP&Ǖ|60 x u  Q埜$K#0R,F{ !ʍP,vL2?K d]l6JLUyQ'SxDOl7 0ރ0 ߩ0d)gJd\]PhEX!E4*^[/pwD%g!= S/3Jr0xoWsJ\4%807"M_ 6(]H=`%  {4 bF rTիUR"Գ&ZC_dO@666cF30QYhMG[`ޅ'+ha}*6ScP왒&LyF`#+xa)] $m&5MtVEJsw/vtb(mg!S=ոl'"k~zN{LrO;aJ~%0TP;s _2[0fT!RyN=+8[ipʭa|]?05rs"\tt)ƪvȽ3e "~Ya ӅJC,30oDaO(OOҺwb1)Y_^4=r.v3 "JnLvck֝aiՀƢ2o ! JsaG1.I""@TD.E,Lji6oʃ3u4Q$VrW*T* f%P6=S]ϫaqT f9e 򴊒]rEI}P&2,=!DC!o&T#~JaLaU(1q ?[&2s`$In|}M uHbX`oVݞ"*A4'fKmRV*mYpϥaqa"ڣl7RiQr ɷ = jo, MDTߐ7WG{+y*b1z٪[hN"{y,0 {v2!LQ9;Js=33uFe2~V L0Qab)BiYkPA+#4ns9v%]3|> 0^}}ˤKԧnJ. IT,ͭ485Ӌ /._r EɴPJt/<apH LF2oJcjVQY /쌚DIDzeas,l, Rk"|+HF* {,)aa|+yDJ\OYĸ +Go'&*٘aㄉ;a^relC#aaƣ'tՉytbk*@-SaaS(Eaa+aa&LfaaDG0 0 Ä0 0 0 0gͺaa aaa<I<,0 0 Mzaa es1syԈIENDB`go/doc/go1.1.html0100644000000000000000000011673712412656734013773 0ustar00rootroot00000000000000

Introduction to Go 1.1

The release of Go version 1 (Go 1 or Go 1.0 for short) in March of 2012 introduced a new period of stability in the Go language and libraries. That stability has helped nourish a growing community of Go users and systems around the world. Several "point" releases since then—1.0.1, 1.0.2, and 1.0.3—have been issued. These point releases fixed known bugs but made no non-critical changes to the implementation.

This new release, Go 1.1, keeps the promise of compatibility but adds a couple of significant (backwards-compatible, of course) language changes, has a long list of (again, compatible) library changes, and includes major work on the implementation of the compilers, libraries, and run-time. The focus is on performance. Benchmarking is an inexact science at best, but we see significant, sometimes dramatic speedups for many of our test programs. We trust that many of our users' programs will also see improvements just by updating their Go installation and recompiling.

This document summarizes the changes between Go 1 and Go 1.1. Very little if any code will need modification to run with Go 1.1, although a couple of rare error cases surface with this release and need to be addressed if they arise. Details appear below; see the discussion of 64-bit ints and Unicode literals in particular.

Changes to the language

The Go compatibility document promises that programs written to the Go 1 language specification will continue to operate, and those promises are maintained. In the interest of firming up the specification, though, there are details about some error cases that have been clarified. There are also some new language features.

Integer division by zero

In Go 1, integer division by a constant zero produced a run-time panic:

func f(x int) int {
	return x/0
}

In Go 1.1, an integer division by constant zero is not a legal program, so it is a compile-time error.

Surrogates in Unicode literals

The definition of string and rune literals has been refined to exclude surrogate halves from the set of valid Unicode code points. See the Unicode section for more information.

Method values

Go 1.1 now implements method values, which are functions that have been bound to a specific receiver value. For instance, given a Writer value w, the expression w.Write, a method value, is a function that will always write to w; it is equivalent to a function literal closing over w:

func (p []byte) (n int, err error) {
	return w.Write(p)
}

Method values are distinct from method expressions, which generate functions from methods of a given type; the method expression (*bufio.Writer).Write is equivalent to a function with an extra first argument, a receiver of type (*bufio.Writer):

func (w *bufio.Writer, p []byte) (n int, err error) {
	return w.Write(p)
}

Updating: No existing code is affected; the change is strictly backward-compatible.

Return requirements

Before Go 1.1, a function that returned a value needed an explicit "return" or call to panic at the end of the function; this was a simple way to make the programmer be explicit about the meaning of the function. But there are many cases where a final "return" is clearly unnecessary, such as a function with only an infinite "for" loop.

In Go 1.1, the rule about final "return" statements is more permissive. It introduces the concept of a terminating statement, a statement that is guaranteed to be the last one a function executes. Examples include "for" loops with no condition and "if-else" statements in which each half ends in a "return". If the final statement of a function can be shown syntactically to be a terminating statement, no final "return" statement is needed.

Note that the rule is purely syntactic: it pays no attention to the values in the code and therefore requires no complex analysis.

Updating: The change is backward-compatible, but existing code with superfluous "return" statements and calls to panic may be simplified manually. Such code can be identified by go vet.

Changes to the implementations and tools

Status of gccgo

The GCC release schedule does not coincide with the Go release schedule, so some skew is inevitable in gccgo's releases. The 4.8.0 version of GCC shipped in March, 2013 and includes a nearly-Go 1.1 version of gccgo. Its library is a little behind the release, but the biggest difference is that method values are not implemented. Sometime around July 2013, we expect 4.8.2 of GCC to ship with a gccgo providing a complete Go 1.1 implementaiton.

Command-line flag parsing

In the gc tool chain, the compilers and linkers now use the same command-line flag parsing rules as the Go flag package, a departure from the traditional Unix flag parsing. This may affect scripts that invoke the tool directly. For example, go tool 6c -Fw -Dfoo must now be written go tool 6c -F -w -D foo.

Size of int on 64-bit platforms

The language allows the implementation to choose whether the int type and uint types are 32 or 64 bits. Previous Go implementations made int and uint 32 bits on all systems. Both the gc and gccgo implementations now make int and uint 64 bits on 64-bit platforms such as AMD64/x86-64. Among other things, this enables the allocation of slices with more than 2 billion elements on 64-bit platforms.

Updating: Most programs will be unaffected by this change. Because Go does not allow implicit conversions between distinct numeric types, no programs will stop compiling due to this change. However, programs that contain implicit assumptions that int is only 32 bits may change behavior. For example, this code prints a positive number on 64-bit systems and a negative one on 32-bit systems:

x := ^uint32(0) // x is 0xffffffff
i := int(x)     // i is -1 on 32-bit systems, 0xffffffff on 64-bit
fmt.Println(i)

Portable code intending 32-bit sign extension (yielding -1 on all systems) would instead say:

i := int(int32(x))

Heap size on 64-bit architectures

On 64-bit architectures, the maximum heap size has been enlarged substantially, from a few gigabytes to several tens of gigabytes. (The exact details depend on the system and may change.)

On 32-bit architectures, the heap size has not changed.

Updating: This change should have no effect on existing programs beyond allowing them to run with larger heaps.

Unicode

To make it possible to represent code points greater than 65535 in UTF-16, Unicode defines surrogate halves, a range of code points to be used only in the assembly of large values, and only in UTF-16. The code points in that surrogate range are illegal for any other purpose. In Go 1.1, this constraint is honored by the compiler, libraries, and run-time: a surrogate half is illegal as a rune value, when encoded as UTF-8, or when encoded in isolation as UTF-16. When encountered, for example in converting from a rune to UTF-8, it is treated as an encoding error and will yield the replacement rune, utf8.RuneError, U+FFFD.

This program,

import "fmt"

func main() {
    fmt.Printf("%+q\n", string(0xD800))
}

printed "\ud800" in Go 1.0, but prints "\ufffd" in Go 1.1.

Surrogate-half Unicode values are now illegal in rune and string constants, so constants such as '\ud800' and "\ud800" are now rejected by the compilers. When written explicitly as UTF-8 encoded bytes, such strings can still be created, as in "\xed\xa0\x80". However, when such a string is decoded as a sequence of runes, as in a range loop, it will yield only utf8.RuneError values.

The Unicode byte order mark U+FEFF, encoded in UTF-8, is now permitted as the first character of a Go source file. Even though its appearance in the byte-order-free UTF-8 encoding is clearly unnecessary, some editors add the mark as a kind of "magic number" identifying a UTF-8 encoded file.

Updating: Most programs will be unaffected by the surrogate change. Programs that depend on the old behavior should be modified to avoid the issue. The byte-order-mark change is strictly backward-compatible.

Race detector

A major addition to the tools is a race detector, a way to find bugs in programs caused by concurrent access of the same variable, where at least one of the accesses is a write. This new facility is built into the go tool. For now, it is only available on Linux, Mac OS X, and Windows systems with 64-bit x86 processors. To enable it, set the -race flag when building or testing your program (for instance, go test -race). The race detector is documented in a separate article.

The gc assemblers

Due to the change of the int to 64 bits and a new internal representation of functions, the arrangement of function arguments on the stack has changed in the gc tool chain. Functions written in assembly will need to be revised at least to adjust frame pointer offsets.

Updating: The go vet command now checks that functions implemented in assembly match the Go function prototypes they implement.

Changes to the go command

The go command has acquired several changes intended to improve the experience for new Go users.

First, when compiling, testing, or running Go code, the go command will now give more detailed error messages, including a list of paths searched, when a package cannot be located.

$ go build foo/quxx
can't load package: package foo/quxx: cannot find package "foo/quxx" in any of:
        /home/you/go/src/pkg/foo/quxx (from $GOROOT)
        /home/you/src/foo/quxx (from $GOPATH)

Second, the go get command no longer allows $GOROOT as the default destination when downloading package source. To use the go get command, a valid $GOPATH is now required.

$ GOPATH= go get code.google.com/p/foo/quxx
package code.google.com/p/foo/quxx: cannot download, $GOPATH not set. For more details see: go help gopath

Finally, as a result of the previous change, the go get command will also fail when $GOPATH and $GOROOT are set to the same value.

$ GOPATH=$GOROOT go get code.google.com/p/foo/quxx
warning: GOPATH set to GOROOT (/home/you/go) has no effect
package code.google.com/p/foo/quxx: cannot download, $GOPATH must not be set to $GOROOT. For more details see: go help gopath

Changes to the go test command

The go test command no longer deletes the binary when run with profiling enabled, to make it easier to analyze the profile. The implementation sets the -c flag automatically, so after running,

$ go test -cpuprofile cpuprof.out mypackage

the file mypackage.test will be left in the directory where go test was run.

The go test command can now generate profiling information that reports where goroutines are blocked, that is, where they tend to stall waiting for an event such as a channel communication. The information is presented as a blocking profile enabled with the -blockprofile option of go test. Run go help test for more information.

Changes to the go fix command

The fix command, usually run as go fix, no longer applies fixes to update code from before Go 1 to use Go 1 APIs. To update pre-Go 1 code to Go 1.1, use a Go 1.0 tool chain to convert the code to Go 1.0 first.

Build constraints

The "go1.1" tag has been added to the list of default build constraints. This permits packages to take advantage of the new features in Go 1.1 while remaining compatible with earlier versions of Go.

To build a file only with Go 1.1 and above, add this build constraint:

// +build go1.1

To build a file only with Go 1.0.x, use the converse constraint:

// +build !go1.1

Additional platforms

The Go 1.1 tool chain adds experimental support for freebsd/arm, netbsd/386, netbsd/amd64, netbsd/arm, openbsd/386 and openbsd/amd64 platforms.

An ARMv6 or later processor is required for freebsd/arm or netbsd/arm.

Go 1.1 adds experimental support for cgo on linux/arm.

Cross compilation

When cross-compiling, the go tool will disable cgo support by default.

To explicitly enable cgo, set CGO_ENABLED=1.

Performance

The performance of code compiled with the Go 1.1 gc tool suite should be noticeably better for most Go programs. Typical improvements relative to Go 1.0 seem to be about 30%-40%, sometimes much more, but occasionally less or even non-existent. There are too many small performance-driven tweaks through the tools and libraries to list them all here, but the following major changes are worth noting:

  • The gc compilers generate better code in many cases, most noticeably for floating point on the 32-bit Intel architecture.
  • The gc compilers do more in-lining, including for some operations in the run-time such as append and interface conversions.
  • There is a new implementation of Go maps with significant reduction in memory footprint and CPU time.
  • The garbage collector has been made more parallel, which can reduce latencies for programs running on multiple CPUs.
  • The garbage collector is also more precise, which costs a small amount of CPU time but can reduce the size of the heap significantly, especially on 32-bit architectures.
  • Due to tighter coupling of the run-time and network libraries, fewer context switches are required on network operations.

Changes to the standard library

bufio.Scanner

The various routines to scan textual input in the bufio package, ReadBytes, ReadString and particularly ReadLine, are needlessly complex to use for simple purposes. In Go 1.1, a new type, Scanner, has been added to make it easier to do simple tasks such as read the input as a sequence of lines or space-delimited words. It simplifies the problem by terminating the scan on problematic input such as pathologically long lines, and having a simple default: line-oriented input, with each line stripped of its terminator. Here is code to reproduce the input a line at a time:

scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
    fmt.Println(scanner.Text()) // Println will add back the final '\n'
}
if err := scanner.Err(); err != nil {
    fmt.Fprintln(os.Stderr, "reading standard input:", err)
}

Scanning behavior can be adjusted through a function to control subdividing the input (see the documentation for SplitFunc), but for tough problems or the need to continue past errors, the older interface may still be required.

net

The protocol-specific resolvers in the net package were formerly lax about the network name passed in. Although the documentation was clear that the only valid networks for ResolveTCPAddr are "tcp", "tcp4", and "tcp6", the Go 1.0 implementation silently accepted any string. The Go 1.1 implementation returns an error if the network is not one of those strings. The same is true of the other protocol-specific resolvers ResolveIPAddr, ResolveUDPAddr, and ResolveUnixAddr.

The previous implementation of ListenUnixgram returned a UDPConn as a representation of the connection endpoint. The Go 1.1 implementation instead returns a UnixConn to allow reading and writing with its ReadFrom and WriteTo methods.

The data structures IPAddr, TCPAddr, and UDPAddr add a new string field called Zone. Code using untagged composite literals (e.g. net.TCPAddr{ip, port}) instead of tagged literals (net.TCPAddr{IP: ip, Port: port}) will break due to the new field. The Go 1 compatibility rules allow this change: client code must use tagged literals to avoid such breakages.

Updating: To correct breakage caused by the new struct field, go fix will rewrite code to add tags for these types. More generally, go vet will identify composite literals that should be revised to use field tags.

reflect

The reflect package has several significant additions.

It is now possible to run a "select" statement using the reflect package; see the description of Select and SelectCase for details.

The new method Value.Convert (or Type.ConvertibleTo) provides functionality to execute a Go conversion or type assertion operation on a Value (or test for its possibility).

The new function MakeFunc creates a wrapper function to make it easier to call a function with existing Values, doing the standard Go conversions among the arguments, for instance to pass an actual int to a formal interface{}.

Finally, the new functions ChanOf, MapOf and SliceOf construct new Types from existing types, for example to construct the type []T given only T.

time

On FreeBSD, Linux, NetBSD, OS X and OpenBSD, previous versions of the time package returned times with microsecond precision. The Go 1.1 implementation on these systems now returns times with nanosecond precision. Programs that write to an external format with microsecond precision and read it back, expecting to recover the original value, will be affected by the loss of precision. There are two new methods of Time, Round and Truncate, that can be used to remove precision from a time before passing it to external storage.

The new method YearDay returns the one-indexed integral day number of the year specified by the time value.

The Timer type has a new method Reset that modifies the timer to expire after a specified duration.

Finally, the new function ParseInLocation is like the existing Parse but parses the time in the context of a location (time zone), ignoring time zone information in the parsed string. This function addresses a common source of confusion in the time API.

Updating: Code that needs to read and write times using an external format with lower precision should be modified to use the new methods.

Exp and old subtrees moved to go.exp and go.text subrepositories

To make it easier for binary distributions to access them if desired, the exp and old source subtrees, which are not included in binary distributions, have been moved to the new go.exp subrepository at code.google.com/p/go.exp. To access the ssa package, for example, run

$ go get code.google.com/p/go.exp/ssa

and then in Go source,

import "code.google.com/p/go.exp/ssa"

The old package exp/norm has also been moved, but to a new repository go.text, where the Unicode APIs and other text-related packages will be developed.

New packages

There are three new packages.

  • The go/format package provides a convenient way for a program to access the formatting capabilities of the go fmt command. It has two functions, Node to format a Go parser Node, and Source to reformat arbitrary Go source code into the standard format as provided by the go fmt command.
  • The net/http/cookiejar package provides the basics for managing HTTP cookies.
  • The runtime/race package provides low-level facilities for data race detection. It is internal to the race detector and does not otherwise export any user-visible functionality.

Minor changes to the library

The following list summarizes a number of minor changes to the library, mostly additions. See the relevant package documentation for more information about each change.

  • The bytes package has two new functions, TrimPrefix and TrimSuffix, with self-evident properties. Also, the Buffer type has a new method Grow that provides some control over memory allocation inside the buffer. Finally, the Reader type now has a WriteTo method so it implements the io.WriterTo interface.
  • The compress/gzip package has a new Flush method for its Writer type that flushes its underlying flate.Writer.
  • The crypto/hmac package has a new function, Equal, to compare two MACs.
  • The crypto/x509 package now supports PEM blocks (see DecryptPEMBlock for instance), and a new function ParseECPrivateKey to parse elliptic curve private keys.
  • The database/sql package has a new Ping method for its DB type that tests the health of the connection.
  • The database/sql/driver package has a new Queryer interface that a Conn may implement to improve performance.
  • The encoding/json package's Decoder has a new method Buffered to provide access to the remaining data in its buffer, as well as a new method UseNumber to unmarshal a value into the new type Number, a string, rather than a float64.
  • The encoding/xml package has a new function, EscapeText, which writes escaped XML output, and a method on Encoder, Indent, to specify indented output.
  • In the go/ast package, a new type CommentMap and associated methods makes it easier to extract and process comments in Go programs.
  • In the go/doc package, the parser now keeps better track of stylized annotations such as TODO(joe) throughout the code, information that the godoc command can filter or present according to the value of the -notes flag.
  • The undocumented and only partially implemented "noescape" feature of the html/template package has been removed; programs that depend on it will break.
  • The image/jpeg package now reads progressive JPEG files and handles a few more subsampling configurations.
  • The io package now exports the io.ByteWriter interface to capture the common functionality of writing a byte at a time. It also exports a new error, ErrNoProgress, used to indicate a Read implementation is looping without delivering data.
  • The log/syslog package now provides better support for OS-specific logging features.
  • The math/big package's Int type now has methods MarshalJSON and UnmarshalJSON to convert to and from a JSON representation. Also, Int can now convert directly to and from a uint64 using Uint64 and SetUint64, while Rat can do the same with float64 using Float64 and SetFloat64.
  • The mime/multipart package has a new method for its Writer, SetBoundary, to define the boundary separator used to package the output. The Reader also now transparently decodes any quoted-printable parts and removes the Content-Transfer-Encoding header when doing so.
  • The net package's ListenUnixgram function has changed return types: it now returns a UnixConn rather than a UDPConn, which was clearly a mistake in Go 1.0. Since this API change fixes a bug, it is permitted by the Go 1 compatibility rules.
  • The net package includes a new type, Dialer, to supply options to Dial.
  • The net package adds support for link-local IPv6 addresses with zone qualifiers, such as fe80::1%lo0. The address structures IPAddr, UDPAddr, and TCPAddr record the zone in a new field, and functions that expect string forms of these addresses, such as Dial, ResolveIPAddr, ResolveUDPAddr, and ResolveTCPAddr, now accept the zone-qualified form.
  • The net package adds LookupNS to its suite of resolving functions. LookupNS returns the NS records for a host name.
  • The net package adds protocol-specific packet reading and writing methods to IPConn (ReadMsgIP and WriteMsgIP) and UDPConn (ReadMsgUDP and WriteMsgUDP). These are specialized versions of PacketConn's ReadFrom and WriteTo methods that provide access to out-of-band data associated with the packets.
  • The net package adds methods to UnixConn to allow closing half of the connection (CloseRead and CloseWrite), matching the existing methods of TCPConn.
  • The net/http package includes several new additions. ParseTime parses a time string, trying several common HTTP time formats. The PostFormValue method of Request is like FormValue but ignores URL parameters. The CloseNotifier interface provides a mechanism for a server handler to discover when a client has disconnected. The ServeMux type now has a Handler method to access a path's Handler without executing it. The Transport can now cancel an in-flight request with CancelRequest. Finally, the Transport is now more aggressive at closing TCP connections when a Response.Body is closed before being fully consumed.
  • The net/mail package has two new functions, ParseAddress and ParseAddressList, to parse RFC 5322-formatted mail addresses into Address structures.
  • The net/smtp package's Client type has a new method, Hello, which transmits a HELO or EHLO message to the server.
  • The net/textproto package has two new functions, TrimBytes and TrimString, which do ASCII-only trimming of leading and trailing spaces.
  • The new method os.FileMode.IsRegular makes it easy to ask if a file is a plain file.
  • The os/signal package has a new function, Stop, which stops the package delivering any further signals to the channel.
  • The regexp package now supports Unix-original leftmost-longest matches through the Regexp.Longest method, while Regexp.Split slices strings into pieces based on separators defined by the regular expression.
  • The runtime/debug package has three new functions regarding memory usage. The FreeOSMemory function triggers a run of the garbage collector and then attempts to return unused memory to the operating system; the ReadGCStats function retrieves statistics about the collector; and SetGCPercent provides a programmatic way to control how often the collector runs, including disabling it altogether.
  • The sort package has a new function, Reverse. Wrapping the argument of a call to sort.Sort with a call to Reverse causes the sort order to be reversed.
  • The strings package has two new functions, TrimPrefix and TrimSuffix with self-evident properties, and the new method Reader.WriteTo so the Reader type now implements the io.WriterTo interface.
  • The syscall package's Fchflags function on various BSDs (including Darwin) has changed signature. It now takes an int as the first parameter instead of a string. Since this API change fixes a bug, it is permitted by the Go 1 compatibility rules.
  • The syscall package also has received many updates to make it more inclusive of constants and system calls for each supported operating system.
  • The testing package now automates the generation of allocation statistics in tests and benchmarks using the new AllocsPerRun function. And the ReportAllocs method on testing.B will enable printing of memory allocation statistics for the calling benchmark. It also introduces the AllocsPerOp method of BenchmarkResult. There is also a new Verbose function to test the state of the -v command-line flag, and a new Skip method of testing.B and testing.T to simplify skipping an inappropriate test.
  • In the text/template and html/template packages, templates can now use parentheses to group the elements of pipelines, simplifying the construction of complex pipelines. Also, as part of the new parser, the Node interface got two new methods to provide better error reporting. Although this violates the Go 1 compatibility rules, no existing code should be affected because this interface is explicitly intended only to be used by the text/template and html/template packages and there are safeguards to guarantee that.
  • The implementation of the unicode package has been updated to Unicode version 6.2.0.
  • In the unicode/utf8 package, the new function ValidRune reports whether the rune is a valid Unicode code point. To be valid, a rune must be in range and not be a surrogate half.
go/doc/go1.2.html0100644000000000000000000010426712412656734013767 0ustar00rootroot00000000000000

Introduction to Go 1.2

Since the release of Go version 1.1 in April, 2013, the release schedule has been shortened to make the release process more efficient. This release, Go version 1.2 or Go 1.2 for short, arrives roughly six months after 1.1, while 1.1 took over a year to appear after 1.0. Because of the shorter time scale, 1.2 is a smaller delta than the step from 1.0 to 1.1, but it still has some significant developments, including a better scheduler and one new language feature. Of course, Go 1.2 keeps the promise of compatibility. The overwhelming majority of programs built with Go 1.1 (or 1.0 for that matter) will run without any changes whatsoever when moved to 1.2, although the introduction of one restriction to a corner of the language may expose already-incorrect code (see the discussion of the use of nil).

Changes to the language

In the interest of firming up the specification, one corner case has been clarified, with consequences for programs. There is also one new language feature.

Use of nil

The language now specifies that, for safety reasons, certain uses of nil pointers are guaranteed to trigger a run-time panic. For instance, in Go 1.0, given code like

type T struct {
    X [1<<24]byte
    Field int32
}

func main() {
    var x *T
    ...
}

the nil pointer x could be used to access memory incorrectly: the expression x.Field could access memory at address 1<<24. To prevent such unsafe behavior, in Go 1.2 the compilers now guarantee that any indirection through a nil pointer, such as illustrated here but also in nil pointers to arrays, nil interface values, nil slices, and so on, will either panic or return a correct, safe non-nil value. In short, any expression that explicitly or implicitly requires evaluation of a nil address is an error. The implementation may inject extra tests into the compiled program to enforce this behavior.

Further details are in the design document.

Updating: Most code that depended on the old behavior is erroneous and will fail when run. Such programs will need to be updated by hand.

Three-index slices

Go 1.2 adds the ability to specify the capacity as well as the length when using a slicing operation on an existing array or slice. A slicing operation creates a new slice by describing a contiguous section of an already-created array or slice:

var array [10]int
slice := array[2:4]

The capacity of the slice is the maximum number of elements that the slice may hold, even after reslicing; it reflects the size of the underlying array. In this example, the capacity of the slice variable is 8.

Go 1.2 adds new syntax to allow a slicing operation to specify the capacity as well as the length. A second colon introduces the capacity value, which must be less than or equal to the capacity of the source slice or array, adjusted for the origin. For instance,

slice = array[2:4:7]

sets the slice to have the same length as in the earlier example but its capacity is now only 5 elements (7-2). It is impossible to use this new slice value to access the last three elements of the original array.

In this three-index notation, a missing first index ([:i:j]) defaults to zero but the other two indices must always be specified explicitly. It is possible that future releases of Go may introduce default values for these indices.

Further details are in the design document.

Updating: This is a backwards-compatible change that affects no existing programs.

Changes to the implementations and tools

Pre-emption in the scheduler

In prior releases, a goroutine that was looping forever could starve out other goroutines on the same thread, a serious problem when GOMAXPROCS provided only one user thread. In Go 1.2, this is partially addressed: The scheduler is invoked occasionally upon entry to a function. This means that any loop that includes a (non-inlined) function call can be pre-empted, allowing other goroutines to run on the same thread.

Limit on the number of threads

Go 1.2 introduces a configurable limit (default 10,000) to the total number of threads a single program may have in its address space, to avoid resource starvation issues in some environments. Note that goroutines are multiplexed onto threads so this limit does not directly limit the number of goroutines, only the number that may be simultaneously blocked in a system call. In practice, the limit is hard to reach.

The new SetMaxThreads function in the runtime/debug package controls the thread count limit.

Updating: Few functions will be affected by the limit, but if a program dies because it hits the limit, it could be modified to call SetMaxThreads to set a higher count. Even better would be to refactor the program to need fewer threads, reducing consumption of kernel resources.

Stack size

In Go 1.2, the minimum size of the stack when a goroutine is created has been lifted from 4KB to 8KB. Many programs were suffering performance problems with the old size, which had a tendency to introduce expensive stack-segment switching in performance-critical sections. The new number was determined by empirical testing.

At the other end, the new function SetMaxStack in the runtime/debug package controls the maximum size of a single goroutine's stack. The default is 1GB on 64-bit systems and 250MB on 32-bit systems. Before Go 1.2, it was too easy for a runaway recursion to consume all the memory on a machine.

Updating: The increased minimum stack size may cause programs with many goroutines to use more memory. There is no workaround, but plans for future releases include new stack management technology that should address the problem better.

Cgo and C++

The cgo command will now invoke the C++ compiler to build any pieces of the linked-to library that are written in C++; the documentation has more detail.

Godoc and vet moved to the go.tools subrepository

Both binaries are still included with the distribution, but the source code for the godoc and vet commands has moved to the go.tools subrepository.

Also, the core of the godoc program has been split into a library, while the command itself is in a separate directory. The move allows the code to be updated easily and the separation into a library and command makes it easier to construct custom binaries for local sites and different deployment methods.

Updating: Since godoc and vet are not part of the library, no client Go code depends on the their source and no updating is required.

The binary distributions available from golang.org include these binaries, so users of these distributions are unaffected.

When building from source, users must use "go get" to install godoc and vet. (The binaries will continue to be installed in their usual locations, not $GOPATH/bin.)

$ go get code.google.com/p/go.tools/cmd/godoc
$ go get code.google.com/p/go.tools/cmd/vet

Status of gccgo

We expect the future GCC 4.9 release to include gccgo with full support for Go 1.2. In the current (4.8.2) release of GCC, gccgo implements Go 1.1.2.

Changes to the gc compiler and linker

Go 1.2 has several semantic changes to the workings of the gc compiler suite. Most users will be unaffected by them.

The cgo command now works when C++ is included in the library being linked against. See the cgo documentation for details.

The gc compiler displayed a vestigial detail of its origins when a program had no package clause: it assumed the file was in package main. The past has been erased, and a missing package clause is now an error.

On the ARM, the toolchain supports "external linking", which is a step towards being able to build shared libraries with the gc tool chain and to provide dynamic linking support for environments in which that is necessary.

In the runtime for the ARM, with 5a, it used to be possible to refer to the runtime-internal m (machine) and g (goroutine) variables using R9 and R10 directly. It is now necessary to refer to them by their proper names.

Also on the ARM, the 5l linker (sic) now defines the MOVBS and MOVHS instructions as synonyms of MOVB and MOVH, to make clearer the separation between signed and unsigned sub-word moves; the unsigned versions already existed with a U suffix.

Test coverage

One major new feature of go test is that it can now compute and, with help from a new, separately installed "go tool cover" program, display test coverage results.

The cover tool is part of the go.tools subrepository. It can be installed by running

$ go get code.google.com/p/go.tools/cmd/cover

The cover tool does two things. First, when "go test" is given the -cover flag, it is run automatically to rewrite the source for the package and insert instrumentation statements. The test is then compiled and run as usual, and basic coverage statistics are reported:

$ go test -cover fmt
ok  	fmt	0.060s	coverage: 91.4% of statements
$

Second, for more detailed reports, different flags to "go test" can create a coverage profile file, which the cover program, invoked with "go tool cover", can then analyze.

Details on how to generate and analyze coverage statistics can be found by running the commands

$ go help testflag
$ go tool cover -help

The go doc command is deleted

The "go doc" command is deleted. Note that the godoc tool itself is not deleted, just the wrapping of it by the go command. All it did was show the documents for a package by package path, which godoc itself already does with more flexibility. It has therefore been deleted to reduce the number of documentation tools and, as part of the restructuring of godoc, encourage better options in future.

Updating: For those who still need the precise functionality of running

$ go doc

in a directory, the behavior is identical to running

$ godoc .

Changes to the go command

The go get command now has a -t flag that causes it to download the dependencies of the tests run by the package, not just those of the package itself. By default, as before, dependencies of the tests are not downloaded.

Performance

There are a number of significant performance improvements in the standard library; here are a few of them.

  • The compress/bzip2 decompresses about 30% faster.
  • The crypto/des package is about five times faster.
  • The encoding/json package encodes about 30% faster.
  • Networking performance on Windows and BSD systems is about 30% faster through the use of an integrated network poller in the runtime, similar to what was done for Linux and OS X in Go 1.1.

Changes to the standard library

The archive/tar and archive/zip packages

The archive/tar and archive/zip packages have had a change to their semantics that may break existing programs. The issue is that they both provided an implementation of the os.FileInfo interface that was not compliant with the specification for that interface. In particular, their Name method returned the full path name of the entry, but the interface specification requires that the method return only the base name (final path element).

Updating: Since this behavior was newly implemented and a bit obscure, it is possible that no code depends on the broken behavior. If there are programs that do depend on it, they will need to be identified and fixed manually.

The new encoding package

There is a new package, encoding, that defines a set of standard encoding interfaces that may be used to build custom marshalers and unmarshalers for packages such as encoding/xml, encoding/json, and encoding/binary. These new interfaces have been used to tidy up some implementations in the standard library.

The new interfaces are called BinaryMarshaler, BinaryUnmarshaler, TextMarshaler, and TextUnmarshaler. Full details are in the documentation for the package and a separate design document.

The fmt package

The fmt package's formatted print routines such as Printf now allow the data items to be printed to be accessed in arbitrary order by using an indexing operation in the formatting specifications. Wherever an argument is to be fetched from the argument list for formatting, either as the value to be formatted or as a width or specification integer, a new optional indexing notation [n] fetches argument n instead. The value of n is 1-indexed. After such an indexing operating, the next argument to be fetched by normal processing will be n+1.

For example, the normal Printf call

fmt.Sprintf("%c %c %c\n", 'a', 'b', 'c')

would create the string "a b c", but with indexing operations like this,

fmt.Sprintf("%[3]c %[1]c %c\n", 'a', 'b', 'c')

the result is ""c a b". The [3] index accesses the third formatting argument, which is 'c', [1] accesses the first, 'a', and then the next fetch accesses the argument following that one, 'b'.

The motivation for this feature is programmable format statements to access the arguments in different order for localization, but it has other uses:

log.Printf("trace: value %v of type %[1]T\n", expensiveFunction(a.b[c]))

Updating: The change to the syntax of format specifications is strictly backwards compatible, so it affects no working programs.

The text/template and html/template packages

The text/template package has a couple of changes in Go 1.2, both of which are also mirrored in the html/template package.

First, there are new default functions for comparing basic types. The functions are listed in this table, which shows their names and the associated familiar comparison operator.

Name Operator
eq ==
ne !=
lt <
le <=
gt >
ge >=

These functions behave slightly differently from the corresponding Go operators. First, they operate only on basic types (bool, int, float64, string, etc.). (Go allows comparison of arrays and structs as well, under some circumstances.) Second, values can be compared as long as they are the same sort of value: any signed integer value can be compared to any other signed integer value for example. (Go does not permit comparing an int8 and an int16). Finally, the eq function (only) allows comparison of the first argument with one or more following arguments. The template in this example,

{{"{{"}}if eq .A 1 2 3 {{"}}"}} equal {{"{{"}}else{{"}}"}} not equal {{"{{"}}end{{"}}"}}

reports "equal" if .A is equal to any of 1, 2, or 3.

The second change is that a small addition to the grammar makes "if else if" chains easier to write. Instead of writing,

{{"{{"}}if eq .A 1{{"}}"}} X {{"{{"}}else{{"}}"}} {{"{{"}}if eq .A 2{{"}}"}} Y {{"{{"}}end{{"}}"}} {{"{{"}}end{{"}}"}} 

one can fold the second "if" into the "else" and have only one "end", like this:

{{"{{"}}if eq .A 1{{"}}"}} X {{"{{"}}else if eq .A 2{{"}}"}} Y {{"{{"}}end{{"}}"}}

The two forms are identical in effect; the difference is just in the syntax.

Updating: Neither the "else if" change nor the comparison functions affect existing programs. Those that already define functions called eq and so on through a function map are unaffected because the associated function map will override the new default function definitions.

New packages

There are two new packages.

Minor changes to the library

The following list summarizes a number of minor changes to the library, mostly additions. See the relevant package documentation for more information about each change.

  • The archive/zip package adds the DataOffset accessor to return the offset of a file's (possibly compressed) data within the archive.
  • The bufio package adds Reset methods to Reader and Writer. These methods allow the Readers and Writers to be re-used on new input and output readers and writers, saving allocation overhead.
  • The compress/bzip2 can now decompress concatenated archives.
  • The compress/flate package adds a Reset method on the Writer, to make it possible to reduce allocation when, for instance, constructing an archive to hold multiple compressed files.
  • The compress/gzip package's Writer type adds a Reset so it may be reused.
  • The compress/zlib package's Writer type adds a Reset so it may be reused.
  • The container/heap package adds a Fix method to provide a more efficient way to update an item's position in the heap.
  • The container/list package adds the MoveBefore and MoveAfter methods, which implement the obvious rearrangement.
  • The crypto/cipher package adds the a new GCM mode (Galois Counter Mode), which is almost always used with AES encryption.
  • The crypto/md5 package adds a new Sum function to simplify hashing without sacrificing performance.
  • Similarly, the crypto/sha1 package adds a new Sum function.
  • Also, the crypto/sha256 package adds Sum256 and Sum224 functions.
  • Finally, the crypto/sha512 package adds Sum512 and Sum384 functions.
  • The crypto/x509 package adds support for reading and writing arbitrary extensions.
  • The crypto/tls package adds support for TLS 1.1, 1.2 and AES-GCM.
  • The database/sql package adds a SetMaxOpenConns method on DB to limit the number of open connections to the database.
  • The encoding/csv package now always allows trailing commas on fields.
  • The encoding/gob package now treats channel and function fields of structures as if they were unexported, even if they are not. That is, it ignores them completely. Previously they would trigger an error, which could cause unexpected compatibility problems if an embedded structure added such a field. The package also now supports the generic BinaryMarshaler and BinaryUnmarshaler interfaces of the encoding package described above.
  • The encoding/json package now will always escape ampersands as "\u0026" when printing strings. It will now accept but correct invalid UTF-8 in Marshal (such input was previously rejected). Finally, it now supports the generic encoding interfaces of the encoding package described above.
  • The encoding/xml package now allows attributes stored in pointers to be marshaled. It also supports the generic encoding interfaces of the encoding package described above through the new Marshaler, Unmarshaler, and related MarshalerAttr and UnmarshalerAttr interfaces. The package also adds a Flush method to the Encoder type for use by custom encoders. See the documentation for EncodeToken to see how to use it.
  • The flag package now has a Getter interface to allow the value of a flag to be retrieved. Due to the Go 1 compatibility guidelines, this method cannot be added to the existing Value interface, but all the existing standard flag types implement it. The package also now exports the CommandLine flag set, which holds the flags from the command line.
  • The go/ast package's SliceExpr struct has a new boolean field, Slice3, which is set to true when representing a slice expression with three indices (two colons). The default is false, representing the usual two-index form.
  • The go/build package adds the AllTags field to the Package type, to make it easier to process build tags.
  • The image/draw package now exports an interface, Drawer, that wraps the standard Draw method. The Porter-Duff operators now implement this interface, in effect binding an operation to the draw operator rather than providing it explicitly. Given a paletted image as its destination, the new FloydSteinberg implementation of the Drawer interface will use the Floyd-Steinberg error diffusion algorithm to draw the image. To create palettes suitable for such processing, the new Quantizer interface represents implementations of quantization algorithms that choose a palette given a full-color image. There are no implementations of this interface in the library.
  • The image/gif package can now create GIF files using the new Encode and EncodeAll functions. Their options argument allows specification of an image Quantizer to use; if it is nil, the generated GIF will use the Plan9 color map (palette) defined in the new image/color/palette package. The options also specify a Drawer to use to create the output image; if it is nil, Floyd-Steinberg error diffusion is used.
  • The Copy method of the io package now prioritizes its arguments differently. If one argument implements WriterTo and the other implements ReaderFrom, Copy will now invoke WriterTo to do the work, so that less intermediate buffering is required in general.
  • The net package requires cgo by default because the host operating system must in general mediate network call setup. On some systems, though, it is possible to use the network without cgo, and useful to do so, for instance to avoid dynamic linking. The new build tag netgo (off by default) allows the construction of a net package in pure Go on those systems where it is possible.
  • The net package adds a new field DualStack to the Dialer struct for TCP connection setup using a dual IP stack as described in RFC 6555.
  • The net/http package will no longer transmit cookies that are incorrect according to RFC 6265. It just logs an error and sends nothing. Also, the net/http package's ReadResponse function now permits the *Request parameter to be nil, whereupon it assumes a GET request. Finally, an HTTP server will now serve HEAD requests transparently, without the need for special casing in handler code. While serving a HEAD request, writes to a Handler's ResponseWriter are absorbed by the Server and the client receives an empty body as required by the HTTP specification.
  • The os/exec package's Cmd.StdinPipe method returns an io.WriteCloser, but has changed its concrete implementation from *os.File to an unexported type that embeds *os.File, and it is now safe to close the returned value. Before Go 1.2, there was an unavoidable race that this change fixes. Code that needs access to the methods of *os.File can use an interface type assertion, such as wc.(interface{ Sync() error }).
  • The runtime package relaxes the constraints on finalizer functions in SetFinalizer: the actual argument can now be any type that is assignable to the formal type of the function, as is the case for any normal function call in Go.
  • The sort package has a new Stable function that implements stable sorting. It is less efficient than the normal sort algorithm, however.
  • The strings package adds an IndexByte function for consistency with the bytes package.
  • The sync/atomic package adds a new set of swap functions that atomically exchange the argument with the value stored in the pointer, returning the old value. The functions are SwapInt32, SwapInt64, SwapUint32, SwapUint64, SwapUintptr, and SwapPointer, which swaps an unsafe.Pointer.
  • The syscall package now implements Sendfile for Darwin.
  • The testing package now exports the TB interface. It records the methods in common with the T and B types, to make it easier to share code between tests and benchmarks. Also, the AllocsPerRun function now quantizes the return value to an integer (although it still has type float64), to round off any error caused by initialization and make the result more repeatable.
  • The text/template package now automatically dereferences pointer values when evaluating the arguments to "escape" functions such as "html", to bring the behavior of such functions in agreement with that of other printing functions such as "printf".
  • In the time package, the Parse function and Format method now handle time zone offsets with seconds, such as in the historical date "1871-01-01T05:33:02+00:34:08". Also, pattern matching in the formats for those routines is stricter: a non-lowercase letter must now follow the standard words such as "Jan" and "Mon".
  • The unicode package adds In, a nicer-to-use but equivalent version of the original IsOneOf, to see whether a character is a member of a Unicode category.
go/doc/go1.3.html0100644000000000000000000005513512412656734013767 0ustar00rootroot00000000000000

Introduction to Go 1.3

The latest Go release, version 1.3, arrives six months after 1.2, and contains no language changes. It focuses primarily on implementation work, providing precise garbage collection, a major refactoring of the compiler tool chain that results in faster builds, especially for large projects, significant performance improvements across the board, and support for DragonFly BSD, Solaris, Plan 9 and Google's Native Client architecture (NaCl). It also has an important refinement to the memory model regarding synchronization. As always, Go 1.3 keeps the promise of compatibility, and almost everything will continue to compile and run without change when moved to 1.3.

Changes to the supported operating systems and architectures

Removal of support for Windows 2000

Microsoft stopped supporting Windows 2000 in 2010. Since it has implementation difficulties regarding exception handling (signals in Unix terminology), as of Go 1.3 it is not supported by Go either.

Support for DragonFly BSD

Go 1.3 now includes experimental support for DragonFly BSD on the amd64 (64-bit x86) and 386 (32-bit x86) architectures. It uses DragonFly BSD 3.6 or above.

Support for FreeBSD

It was not announced at the time, but since the release of Go 1.2, support for Go on FreeBSD requires FreeBSD 8 or above.

As of Go 1.3, support for Go on FreeBSD requires that the kernel be compiled with the COMPAT_FREEBSD32 flag configured.

In concert with the switch to EABI syscalls for ARM platforms, Go 1.3 will run only on FreeBSD 10. The x86 platforms, 386 and amd64, are unaffected.

Support for Native Client

Support for the Native Client virtual machine architecture has returned to Go with the 1.3 release. It runs on the 32-bit Intel architectures (GOARCH=386) and also on 64-bit Intel, but using 32-bit pointers (GOARCH=amd64p32). There is not yet support for Native Client on ARM. Note that this is Native Client (NaCl), not Portable Native Client (PNaCl). Details about Native Client are here; how to set up the Go version is described here.

Support for NetBSD

As of Go 1.3, support for Go on NetBSD requires NetBSD 6.0 or above.

Support for OpenBSD

As of Go 1.3, support for Go on OpenBSD requires OpenBSD 5.5 or above.

Support for Plan 9

Go 1.3 now includes experimental support for Plan 9 on the 386 (32-bit x86) architecture. It requires the Tsemacquire syscall, which has been in Plan 9 since June, 2012.

Support for Solaris

Go 1.3 now includes experimental support for Solaris on the amd64 (64-bit x86) architecture. It requires illumos, Solaris 11 or above.

Changes to the memory model

The Go 1.3 memory model adds a new rule concerning sending and receiving on buffered channels, to make explicit that a buffered channel can be used as a simple semaphore, using a send into the channel to acquire and a receive from the channel to release. This is not a language change, just a clarification about an expected property of communication.

Changes to the implementations and tools

Stack

Go 1.3 has changed the implementation of goroutine stacks away from the old, "segmented" model to a contiguous model. When a goroutine needs more stack than is available, its stack is transferred to a larger single block of memory. The overhead of this transfer operation amortizes well and eliminates the old "hot spot" problem when a calculation repeatedly steps across a segment boundary. Details including performance numbers are in this design document.

Changes to the garbage collector

For a while now, the garbage collector has been precise when examining values in the heap; the Go 1.3 release adds equivalent precision to values on the stack. This means that a non-pointer Go value such as an integer will never be mistaken for a pointer and prevent unused memory from being reclaimed.

Starting with Go 1.3, the runtime assumes that values with pointer type contain pointers and other values do not. This assumption is fundamental to the precise behavior of both stack expansion and garbage collection. Programs that use package unsafe to store integers in pointer-typed values are illegal and will crash if the runtime detects the behavior. Programs that use package unsafe to store pointers in integer-typed values are also illegal but more difficult to diagnose during execution. Because the pointers are hidden from the runtime, a stack expansion or garbage collection may reclaim the memory they point at, creating dangling pointers.

Updating: Code that uses unsafe.Pointer to convert an integer-typed value held in memory into a pointer is illegal and must be rewritten. Such code can be identified by go vet.

Map iteration

Iterations over small maps no longer happen in a consistent order. Go 1 defines that “The iteration order over maps is not specified and is not guaranteed to be the same from one iteration to the next.” To keep code from depending on map iteration order, Go 1.0 started each map iteration at a random index in the map. A new map implementation introduced in Go 1.1 neglected to randomize iteration for maps with eight or fewer entries, although the iteration order can still vary from system to system. This has allowed people to write Go 1.1 and Go 1.2 programs that depend on small map iteration order and therefore only work reliably on certain systems. Go 1.3 reintroduces random iteration for small maps in order to flush out these bugs.

Updating: If code assumes a fixed iteration order for small maps, it will break and must be rewritten not to make that assumption. Because only small maps are affected, the problem arises most often in tests.

As part of the general overhaul to the Go linker, the compilers and linkers have been refactored. The linker is still a C program, but now the instruction selection phase that was part of the linker has been moved to the compiler through the creation of a new library called liblink. By doing instruction selection only once, when the package is first compiled, this can speed up compilation of large projects significantly.

Updating: Although this is a major internal change, it should have no effect on programs.

Status of gccgo

GCC release 4.9 will contain the Go 1.2 (not 1.3) version of gccgo. The release schedules for the GCC and Go projects do not coincide, which means that 1.3 will be available in the development branch but that the next GCC release, 4.10, will likely have the Go 1.4 version of gccgo.

Changes to the go command

The cmd/go command has several new features. The go run and go test subcommands support a new -exec option to specify an alternate way to run the resulting binary. Its immediate purpose is to support NaCl.

The test coverage support of the go test subcommand now automatically sets the coverage mode to -atomic when the race detector is enabled, to eliminate false reports about unsafe access to coverage counters.

The go test subcommand now always builds the package, even if it has no test files. Previously, it would do nothing if no test files were present.

The go build subcommand supports a new -i option to install dependencies of the specified target, but not the target itself.

Cross compiling with cgo enabled is now supported. The CC_FOR_TARGET and CXX_FOR_TARGET environment variables are used when running all.bash to specify the cross compilers for C and C++ code, respectively.

Finally, the go command now supports packages that import Objective-C files (suffixed .m) through cgo.

Changes to cgo

The cmd/cgo command, which processes import "C" declarations in Go packages, has corrected a serious bug that may cause some packages to stop compiling. Previously, all pointers to incomplete struct types translated to the Go type *[0]byte, with the effect that the Go compiler could not diagnose passing one kind of struct pointer to a function expecting another. Go 1.3 corrects this mistake by translating each different incomplete struct to a different named type.

Given the C declaration typedef struct S T for an incomplete struct S, some Go code used this bug to refer to the types C.struct_S and C.T interchangeably. Cgo now explicitly allows this use, even for completed struct types. However, some Go code also used this bug to pass (for example) a *C.FILE from one package to another. This is not legal and no longer works: in general Go packages should avoid exposing C types and names in their APIs.

Updating: Code confusing pointers to incomplete types or passing them across package boundaries will no longer compile and must be rewritten. If the conversion is correct and must be preserved, use an explicit conversion via unsafe.Pointer.

SWIG 3.0 required for programs that use SWIG

For Go programs that use SWIG, SWIG version 3.0 is now required. The cmd/go command will now link the SWIG generated object files directly into the binary, rather than building and linking with a shared library.

Command-line flag parsing

In the gc tool chain, the assemblers now use the same command-line flag parsing rules as the Go flag package, a departure from the traditional Unix flag parsing. This may affect scripts that invoke the tool directly. For example, go tool 6a -SDfoo must now be written go tool 6a -S -D foo. (The same change was made to the compilers and linkers in Go 1.1.)

Changes to godoc

When invoked with the -analysis flag, godoc now performs sophisticated static analysis of the code it indexes. The results of analysis are presented in both the source view and the package documentation view, and include the call graph of each package and the relationships between definitions and references, types and their methods, interfaces and their implementations, send and receive operations on channels, functions and their callers, and call sites and their callees.

Miscellany

The program misc/benchcmp that compares performance across benchmarking runs has been rewritten. Once a shell and awk script in the main repository, it is now a Go program in the go.tools repo. Documentation is here.

For the few of us that build Go distributions, the tool misc/dist has been moved and renamed; it now lives in misc/makerelease, still in the main repository.

Performance

The performance of Go binaries for this release has improved in many cases due to changes in the runtime and garbage collection, plus some changes to libraries. Significant instances include:

  • The runtime handles defers more efficiently, reducing the memory footprint by about two kilobytes per goroutine that calls defer.
  • The garbage collector has been sped up, using a concurrent sweep algorithm, better parallelization, and larger pages. The cumulative effect can be a 50-70% reduction in collector pause time.
  • The race detector (see this guide) is now about 40% faster.
  • The regular expression package regexp is now significantly faster for certain simple expressions due to the implementation of a second, one-pass execution engine. The choice of which engine to use is automatic; the details are hidden from the user.

Also, the runtime now includes in stack dumps how long a goroutine has been blocked, which can be useful information when debugging deadlocks or performance issues.

Changes to the standard library

New packages

A new package debug/plan9obj was added to the standard library. It implements access to Plan 9 a.out object files.

Major changes to the library

A previous bug in crypto/tls made it possible to skip verification in TLS inadvertently. In Go 1.3, the bug is fixed: one must specify either ServerName or InsecureSkipVerify, and if ServerName is specified it is enforced. This may break existing code that incorrectly depended on insecure behavior.

There is an important new type added to the standard library: sync.Pool. It provides an efficient mechanism for implementing certain types of caches whose memory can be reclaimed automatically by the system.

The testing package's benchmarking helper, B, now has a RunParallel method to make it easier to run benchmarks that exercise multiple CPUs.

Updating: The crypto/tls fix may break existing code, but such code was erroneous and should be updated.

Minor changes to the library

The following list summarizes a number of minor changes to the library, mostly additions. See the relevant package documentation for more information about each change.

  • In the crypto/tls package, a new DialWithDialer function lets one establish a TLS connection using an existing dialer, making it easier to control dial options such as timeouts. The package also now reports the TLS version used by the connection in the ConnectionState struct.
  • The CreateCertificate function of the crypto/tls package now supports parsing (and elsewhere, serialization) of PKCS #10 certificate signature requests.
  • The formatted print functions of the fmt package now define %F as a synonym for %f when printing floating-point values.
  • The math/big package's Int and Rat types now implement encoding.TextMarshaler and encoding.TextUnmarshaler.
  • The complex power function, Pow, now specifies the behavior when the first argument is zero. It was undefined before. The details are in the documentation for the function.
  • The net/http package now exposes the properties of a TLS connection used to make a client request in the new Response.TLS field.
  • The net/http package now allows setting an optional server error logger with Server.ErrorLog. The default is still that all errors go to stderr.
  • The net/http package now supports disabling HTTP keep-alive connections on the server with Server.SetKeepAlivesEnabled. The default continues to be that the server does keep-alive (reuses connections for multiple requests) by default. Only resource-constrained servers or those in the process of graceful shutdown will want to disable them.
  • The net/http package adds an optional Transport.TLSHandshakeTimeout setting to cap the amount of time HTTP client requests will wait for TLS handshakes to complete. It's now also set by default on DefaultTransport.
  • The net/http package's DefaultTransport, used by the HTTP client code, now enables TCP keep-alives by default. Other Transport values with a nil Dial field continue to function the same as before: no TCP keep-alives are used.
  • The net/http package now enables TCP keep-alives for incoming server requests when ListenAndServe or ListenAndServeTLS are used. When a server is started otherwise, TCP keep-alives are not enabled.
  • The net/http package now provides an optional Server.ConnState callback to hook various phases of a server connection's lifecycle (see ConnState). This can be used to implement rate limiting or graceful shutdown.
  • The net/http package's HTTP client now has an optional Client.Timeout field to specify an end-to-end timeout on requests made using the client.
  • The net/http package's Request.ParseMultipartForm method will now return an error if the body's Content-Type is not mutipart/form-data. Prior to Go 1.3 it would silently fail and return nil. Code that relies on the previous behavior should be updated.
  • In the net package, the Dialer struct now has a KeepAlive option to specify a keep-alive period for the connection.
  • The net/http package's Transport now closes Request.Body consistently, even on error.
  • The os/exec package now implements what the documentation has always said with regard to relative paths for the binary. In particular, it only calls LookPath when the binary's file name contains no path separators.
  • The SetMapIndex function in the reflect package no longer panics when deleting from a nil map.
  • If the main goroutine calls runtime.Goexit and all other goroutines finish execution, the program now always crashes, reporting a detected deadlock. Earlier versions of Go handled this situation inconsistently: most instances were reported as deadlocks, but some trivial cases exited cleanly instead.
  • The runtime/debug package now has a new function debug.WriteHeapDump that writes out a description of the heap.
  • The CanBackquote function in the strconv package now considers the DEL character, U+007F, to be non-printing.
  • The syscall package now provides SendmsgN as an alternate version of Sendmsg that returns the number of bytes written.
  • On Windows, the syscall package now supports the cdecl calling convention through the addition of a new function NewCallbackCDecl alongside the existing function NewCallback.
  • The testing package now diagnoses tests that call panic(nil), which are almost always erroneous. Also, tests now write profiles (if invoked with profiling flags) even on failure.
  • The unicode package and associated support throughout the system has been upgraded from Unicode 6.2.0 to Unicode 6.3.0.
go/doc/go1.html0100644000000000000000000021345212412656737013627 0ustar00rootroot00000000000000

Introduction to Go 1

Go version 1, Go 1 for short, defines a language and a set of core libraries that provide a stable foundation for creating reliable products, projects, and publications.

The driving motivation for Go 1 is stability for its users. People should be able to write Go programs and expect that they will continue to compile and run without change, on a time scale of years, including in production environments such as Google App Engine. Similarly, people should be able to write books about Go, be able to say which version of Go the book is describing, and have that version number still be meaningful much later.

Code that compiles in Go 1 should, with few exceptions, continue to compile and run throughout the lifetime of that version, even as we issue updates and bug fixes such as Go version 1.1, 1.2, and so on. Other than critical fixes, changes made to the language and library for subsequent releases of Go 1 may add functionality but will not break existing Go 1 programs. The Go 1 compatibility document explains the compatibility guidelines in more detail.

Go 1 is a representation of Go as it used today, not a wholesale rethinking of the language. We avoided designing new features and instead focused on cleaning up problems and inconsistencies and improving portability. There are a number changes to the Go language and packages that we had considered for some time and prototyped but not released primarily because they are significant and backwards-incompatible. Go 1 was an opportunity to get them out, which is helpful for the long term, but also means that Go 1 introduces incompatibilities for old programs. Fortunately, the go fix tool can automate much of the work needed to bring programs up to the Go 1 standard.

This document outlines the major changes in Go 1 that will affect programmers updating existing code; its reference point is the prior release, r60 (tagged as r60.3). It also explains how to update code from r60 to run under Go 1.

Changes to the language

Append

The append predeclared variadic function makes it easy to grow a slice by adding elements to the end. A common use is to add bytes to the end of a byte slice when generating output. However, append did not provide a way to append a string to a []byte, which is another common case.

{{code "/doc/progs/go1.go" `/greeting := ..byte/` `/append.*hello/`}}

By analogy with the similar property of copy, Go 1 permits a string to be appended (byte-wise) directly to a byte slice, reducing the friction between strings and byte slices. The conversion is no longer necessary:

{{code "/doc/progs/go1.go" `/append.*world/`}}

Updating: This is a new feature, so existing code needs no changes.

Close

The close predeclared function provides a mechanism for a sender to signal that no more values will be sent. It is important to the implementation of for range loops over channels and is helpful in other situations. Partly by design and partly because of race conditions that can occur otherwise, it is intended for use only by the goroutine sending on the channel, not by the goroutine receiving data. However, before Go 1 there was no compile-time checking that close was being used correctly.

To close this gap, at least in part, Go 1 disallows close on receive-only channels. Attempting to close such a channel is a compile-time error.

    var c chan int
    var csend chan<- int = c
    var crecv <-chan int = c
    close(c)     // legal
    close(csend) // legal
    close(crecv) // illegal

Updating: Existing code that attempts to close a receive-only channel was erroneous even before Go 1 and should be fixed. The compiler will now reject such code.

Composite literals

In Go 1, a composite literal of array, slice, or map type can elide the type specification for the elements' initializers if they are of pointer type. All four of the initializations in this example are legal; the last one was illegal before Go 1.

{{code "/doc/progs/go1.go" `/type Date struct/` `/STOP/`}}

Updating: This change has no effect on existing code, but the command gofmt -s applied to existing source will, among other things, elide explicit element types wherever permitted.

Goroutines during init

The old language defined that go statements executed during initialization created goroutines but that they did not begin to run until initialization of the entire program was complete. This introduced clumsiness in many places and, in effect, limited the utility of the init construct: if it was possible for another package to use the library during initialization, the library was forced to avoid goroutines. This design was done for reasons of simplicity and safety but, as our confidence in the language grew, it seemed unnecessary. Running goroutines during initialization is no more complex or unsafe than running them during normal execution.

In Go 1, code that uses goroutines can be called from init routines and global initialization expressions without introducing a deadlock.

{{code "/doc/progs/go1.go" `/PackageGlobal/` `/^}/`}}

Updating: This is a new feature, so existing code needs no changes, although it's possible that code that depends on goroutines not starting before main will break. There was no such code in the standard repository.

The rune type

The language spec allows the int type to be 32 or 64 bits wide, but current implementations set int to 32 bits even on 64-bit platforms. It would be preferable to have int be 64 bits on 64-bit platforms. (There are important consequences for indexing large slices.) However, this change would waste space when processing Unicode characters with the old language because the int type was also used to hold Unicode code points: each code point would waste an extra 32 bits of storage if int grew from 32 bits to 64.

To make changing to 64-bit int feasible, Go 1 introduces a new basic type, rune, to represent individual Unicode code points. It is an alias for int32, analogous to byte as an alias for uint8.

Character literals such as 'a', '語', and '\u0345' now have default type rune, analogous to 1.0 having default type float64. A variable initialized to a character constant will therefore have type rune unless otherwise specified.

Libraries have been updated to use rune rather than int when appropriate. For instance, the functions unicode.ToLower and relatives now take and return a rune.

{{code "/doc/progs/go1.go" `/STARTRUNE/` `/ENDRUNE/`}}

Updating: Most source code will be unaffected by this because the type inference from := initializers introduces the new type silently, and it propagates from there. Some code may get type errors that a trivial conversion will resolve.

The error type

Go 1 introduces a new built-in type, error, which has the following definition:

    type error interface {
        Error() string
    }

Since the consequences of this type are all in the package library, it is discussed below.

Deleting from maps

In the old language, to delete the entry with key k from map m, one wrote the statement,

    m[k] = value, false

This syntax was a peculiar special case, the only two-to-one assignment. It required passing a value (usually ignored) that is evaluated but discarded, plus a boolean that was nearly always the constant false. It did the job but was odd and a point of contention.

In Go 1, that syntax has gone; instead there is a new built-in function, delete. The call

{{code "/doc/progs/go1.go" `/delete\(m, k\)/`}}

will delete the map entry retrieved by the expression m[k]. There is no return value. Deleting a non-existent entry is a no-op.

Updating: Running go fix will convert expressions of the form m[k] = value, false into delete(m, k) when it is clear that the ignored value can be safely discarded from the program and false refers to the predefined boolean constant. The fix tool will flag other uses of the syntax for inspection by the programmer.

Iterating in maps

The old language specification did not define the order of iteration for maps, and in practice it differed across hardware platforms. This caused tests that iterated over maps to be fragile and non-portable, with the unpleasant property that a test might always pass on one machine but break on another.

In Go 1, the order in which elements are visited when iterating over a map using a for range statement is defined to be unpredictable, even if the same loop is run multiple times with the same map. Code should not assume that the elements are visited in any particular order.

This change means that code that depends on iteration order is very likely to break early and be fixed long before it becomes a problem. Just as important, it allows the map implementation to ensure better map balancing even when programs are using range loops to select an element from a map.

{{code "/doc/progs/go1.go" `/Sunday/` `/^ }/`}}

Updating: This is one change where tools cannot help. Most existing code will be unaffected, but some programs may break or misbehave; we recommend manual checking of all range statements over maps to verify they do not depend on iteration order. There were a few such examples in the standard repository; they have been fixed. Note that it was already incorrect to depend on the iteration order, which was unspecified. This change codifies the unpredictability.

Multiple assignment

The language specification has long guaranteed that in assignments the right-hand-side expressions are all evaluated before any left-hand-side expressions are assigned. To guarantee predictable behavior, Go 1 refines the specification further.

If the left-hand side of the assignment statement contains expressions that require evaluation, such as function calls or array indexing operations, these will all be done using the usual left-to-right rule before any variables are assigned their value. Once everything is evaluated, the actual assignments proceed in left-to-right order.

These examples illustrate the behavior.

{{code "/doc/progs/go1.go" `/sa :=/` `/then sc.0. = 2/`}}

Updating: This is one change where tools cannot help, but breakage is unlikely. No code in the standard repository was broken by this change, and code that depended on the previous unspecified behavior was already incorrect.

Returns and shadowed variables

A common mistake is to use return (without arguments) after an assignment to a variable that has the same name as a result variable but is not the same variable. This situation is called shadowing: the result variable has been shadowed by another variable with the same name declared in an inner scope.

In functions with named return values, the Go 1 compilers disallow return statements without arguments if any of the named return values is shadowed at the point of the return statement. (It isn't part of the specification, because this is one area we are still exploring; the situation is analogous to the compilers rejecting functions that do not end with an explicit return statement.)

This function implicitly returns a shadowed return value and will be rejected by the compiler:

    func Bug() (i, j, k int) {
        for i = 0; i < 5; i++ {
            for j := 0; j < 5; j++ { // Redeclares j.
                k += i*j
                if k > 100 {
                    return // Rejected: j is shadowed here.
                }
            }
        }
        return // OK: j is not shadowed here.
    }

Updating: Code that shadows return values in this way will be rejected by the compiler and will need to be fixed by hand. The few cases that arose in the standard repository were mostly bugs.

Copying structs with unexported fields

The old language did not allow a package to make a copy of a struct value containing unexported fields belonging to a different package. There was, however, a required exception for a method receiver; also, the implementations of copy and append have never honored the restriction.

Go 1 will allow packages to copy struct values containing unexported fields from other packages. Besides resolving the inconsistency, this change admits a new kind of API: a package can return an opaque value without resorting to a pointer or interface. The new implementations of time.Time and reflect.Value are examples of types taking advantage of this new property.

As an example, if package p includes the definitions,

    type Struct struct {
        Public int
        secret int
    }
    func NewStruct(a int) Struct {  // Note: not a pointer.
        return Struct{a, f(a)}
    }
    func (s Struct) String() string {
        return fmt.Sprintf("{%d (secret %d)}", s.Public, s.secret)
    }

a package that imports p can assign and copy values of type p.Struct at will. Behind the scenes the unexported fields will be assigned and copied just as if they were exported, but the client code will never be aware of them. The code

    import "p"

    myStruct := p.NewStruct(23)
    copyOfMyStruct := myStruct
    fmt.Println(myStruct, copyOfMyStruct)

will show that the secret field of the struct has been copied to the new value.

Updating: This is a new feature, so existing code needs no changes.

Equality

Before Go 1, the language did not define equality on struct and array values. This meant, among other things, that structs and arrays could not be used as map keys. On the other hand, Go did define equality on function and map values. Function equality was problematic in the presence of closures (when are two closures equal?) while map equality compared pointers, not the maps' content, which was usually not what the user would want.

Go 1 addressed these issues. First, structs and arrays can be compared for equality and inequality (== and !=), and therefore be used as map keys, provided they are composed from elements for which equality is also defined, using element-wise comparison.

{{code "/doc/progs/go1.go" `/type Day struct/` `/Printf/`}}

Second, Go 1 removes the definition of equality for function values, except for comparison with nil. Finally, map equality is gone too, also except for comparison with nil.

Note that equality is still undefined for slices, for which the calculation is in general infeasible. Also note that the ordered comparison operators (< <= > >=) are still undefined for structs and arrays.

Updating: Struct and array equality is a new feature, so existing code needs no changes. Existing code that depends on function or map equality will be rejected by the compiler and will need to be fixed by hand. Few programs will be affected, but the fix may require some redesign.

The package hierarchy

Go 1 addresses many deficiencies in the old standard library and cleans up a number of packages, making them more internally consistent and portable.

This section describes how the packages have been rearranged in Go 1. Some have moved, some have been renamed, some have been deleted. New packages are described in later sections.

The package hierarchy

Go 1 has a rearranged package hierarchy that groups related items into subdirectories. For instance, utf8 and utf16 now occupy subdirectories of unicode. Also, some packages have moved into subrepositories of code.google.com/p/go while others have been deleted outright.

Old path New path

asn1 encoding/asn1
csv encoding/csv
gob encoding/gob
json encoding/json
xml encoding/xml

exp/template/html html/template

big math/big
cmath math/cmplx
rand math/rand

http net/http
http/cgi net/http/cgi
http/fcgi net/http/fcgi
http/httptest net/http/httptest
http/pprof net/http/pprof
mail net/mail
rpc net/rpc
rpc/jsonrpc net/rpc/jsonrpc
smtp net/smtp
url net/url

exec os/exec

scanner text/scanner
tabwriter text/tabwriter
template text/template
template/parse text/template/parse

utf8 unicode/utf8
utf16 unicode/utf16

Note that the package names for the old cmath and exp/template/html packages have changed to cmplx and template.

Updating: Running go fix will update all imports and package renames for packages that remain inside the standard repository. Programs that import packages that are no longer in the standard repository will need to be edited by hand.

The package tree exp

Because they are not standardized, the packages under the exp directory will not be available in the standard Go 1 release distributions, although they will be available in source code form in the repository for developers who wish to use them.

Several packages have moved under exp at the time of Go 1's release:

  • ebnf
  • html
  • go/types

(The EscapeString and UnescapeString types remain in package html.)

All these packages are available under the same names, with the prefix exp/: exp/ebnf etc.

Also, the utf8.String type has been moved to its own package, exp/utf8string.

Finally, the gotype command now resides in exp/gotype, while ebnflint is now in exp/ebnflint. If they are installed, they now reside in $GOROOT/bin/tool.

Updating: Code that uses packages in exp will need to be updated by hand, or else compiled from an installation that has exp available. The go fix tool or the compiler will complain about such uses.

The package tree old

Because they are deprecated, the packages under the old directory will not be available in the standard Go 1 release distributions, although they will be available in source code form for developers who wish to use them.

The packages in their new locations are:

  • old/netchan

Updating: Code that uses packages now in old will need to be updated by hand, or else compiled from an installation that has old available. The go fix tool will warn about such uses.

Deleted packages

Go 1 deletes several packages outright:

  • container/vector
  • exp/datafmt
  • go/typechecker
  • old/regexp
  • old/template
  • try

and also the command gotry.

Updating: Code that uses container/vector should be updated to use slices directly. See the Go Language Community Wiki for some suggestions. Code that uses the other packages (there should be almost zero) will need to be rethought.

Packages moving to subrepositories

Go 1 has moved a number of packages into other repositories, usually sub-repositories of the main Go repository. This table lists the old and new import paths:
Old New

crypto/bcrypt code.google.com/p/go.crypto/bcrypt
crypto/blowfish code.google.com/p/go.crypto/blowfish
crypto/cast5 code.google.com/p/go.crypto/cast5
crypto/md4 code.google.com/p/go.crypto/md4
crypto/ocsp code.google.com/p/go.crypto/ocsp
crypto/openpgp code.google.com/p/go.crypto/openpgp
crypto/openpgp/armor code.google.com/p/go.crypto/openpgp/armor
crypto/openpgp/elgamal code.google.com/p/go.crypto/openpgp/elgamal
crypto/openpgp/errors code.google.com/p/go.crypto/openpgp/errors
crypto/openpgp/packet code.google.com/p/go.crypto/openpgp/packet
crypto/openpgp/s2k code.google.com/p/go.crypto/openpgp/s2k
crypto/ripemd160 code.google.com/p/go.crypto/ripemd160
crypto/twofish code.google.com/p/go.crypto/twofish
crypto/xtea code.google.com/p/go.crypto/xtea
exp/ssh code.google.com/p/go.crypto/ssh

image/bmp code.google.com/p/go.image/bmp
image/tiff code.google.com/p/go.image/tiff

net/dict code.google.com/p/go.net/dict
net/websocket code.google.com/p/go.net/websocket
exp/spdy code.google.com/p/go.net/spdy

encoding/git85 code.google.com/p/go.codereview/git85
patch code.google.com/p/go.codereview/patch

exp/wingui code.google.com/p/gowingui

Updating: Running go fix will update imports of these packages to use the new import paths. Installations that depend on these packages will need to install them using a go get command.

Major changes to the library

This section describes significant changes to the core libraries, the ones that affect the most programs.

The error type and errors package

The placement of os.Error in package os is mostly historical: errors first came up when implementing package os, and they seemed system-related at the time. Since then it has become clear that errors are more fundamental than the operating system. For example, it would be nice to use Errors in packages that os depends on, like syscall. Also, having Error in os introduces many dependencies on os that would otherwise not exist.

Go 1 solves these problems by introducing a built-in error interface type and a separate errors package (analogous to bytes and strings) that contains utility functions. It replaces os.NewError with errors.New, giving errors a more central place in the environment.

So the widely-used String method does not cause accidental satisfaction of the error interface, the error interface uses instead the name Error for that method:

    type error interface {
        Error() string
    }

The fmt library automatically invokes Error, as it already does for String, for easy printing of error values.

{{code "/doc/progs/go1.go" `/START ERROR EXAMPLE/` `/END ERROR EXAMPLE/`}}

All standard packages have been updated to use the new interface; the old os.Error is gone.

A new package, errors, contains the function

func New(text string) error

to turn a string into an error. It replaces the old os.NewError.

{{code "/doc/progs/go1.go" `/ErrSyntax/`}}

Updating: Running go fix will update almost all code affected by the change. Code that defines error types with a String method will need to be updated by hand to rename the methods to Error.

System call errors

The old syscall package, which predated os.Error (and just about everything else), returned errors as int values. In turn, the os package forwarded many of these errors, such as EINVAL, but using a different set of errors on each platform. This behavior was unpleasant and unportable.

In Go 1, the syscall package instead returns an error for system call errors. On Unix, the implementation is done by a syscall.Errno type that satisfies error and replaces the old os.Errno.

The changes affecting os.EINVAL and relatives are described elsewhere.

Updating: Running go fix will update almost all code affected by the change. Regardless, most code should use the os package rather than syscall and so will be unaffected.

Time

Time is always a challenge to support well in a programming language. The old Go time package had int64 units, no real type safety, and no distinction between absolute times and durations.

One of the most sweeping changes in the Go 1 library is therefore a complete redesign of the time package. Instead of an integer number of nanoseconds as an int64, and a separate *time.Time type to deal with human units such as hours and years, there are now two fundamental types: time.Time (a value, so the * is gone), which represents a moment in time; and time.Duration, which represents an interval. Both have nanosecond resolution. A Time can represent any time into the ancient past and remote future, while a Duration can span plus or minus only about 290 years. There are methods on these types, plus a number of helpful predefined constant durations such as time.Second.

Among the new methods are things like Time.Add, which adds a Duration to a Time, and Time.Sub, which subtracts two Times to yield a Duration.

The most important semantic change is that the Unix epoch (Jan 1, 1970) is now relevant only for those functions and methods that mention Unix: time.Unix and the Unix and UnixNano methods of the Time type. In particular, time.Now returns a time.Time value rather than, in the old API, an integer nanosecond count since the Unix epoch.

{{code "/doc/progs/go1.go" `/sleepUntil/` `/^}/`}}

The new types, methods, and constants have been propagated through all the standard packages that use time, such as os and its representation of file time stamps.

Updating: The go fix tool will update many uses of the old time package to use the new types and methods, although it does not replace values such as 1e9 representing nanoseconds per second. Also, because of type changes in some of the values that arise, some of the expressions rewritten by the fix tool may require further hand editing; in such cases the rewrite will include the correct function or method for the old functionality, but may have the wrong type or require further analysis.

Minor changes to the library

This section describes smaller changes, such as those to less commonly used packages or that affect few programs beyond the need to run go fix. This category includes packages that are new in Go 1. Collectively they improve portability, regularize behavior, and make the interfaces more modern and Go-like.

The archive/zip package

In Go 1, *zip.Writer no longer has a Write method. Its presence was a mistake.

Updating: What little code is affected will be caught by the compiler and must be updated by hand.

The bufio package

In Go 1, bufio.NewReaderSize and bufio.NewWriterSize functions no longer return an error for invalid sizes. If the argument size is too small or invalid, it is adjusted.

Updating: Running go fix will update calls that assign the error to _. Calls that aren't fixed will be caught by the compiler and must be updated by hand.

The compress/flate, compress/gzip and compress/zlib packages

In Go 1, the NewWriterXxx functions in compress/flate, compress/gzip and compress/zlib all return (*Writer, error) if they take a compression level, and *Writer otherwise. Package gzip's Compressor and Decompressor types have been renamed to Writer and Reader. Package flate's WrongValueError type has been removed.

Updating Running go fix will update old names and calls that assign the error to _. Calls that aren't fixed will be caught by the compiler and must be updated by hand.

The crypto/aes and crypto/des packages

In Go 1, the Reset method has been removed. Go does not guarantee that memory is not copied and therefore this method was misleading.

The cipher-specific types *aes.Cipher, *des.Cipher, and *des.TripleDESCipher have been removed in favor of cipher.Block.

Updating: Remove the calls to Reset. Replace uses of the specific cipher types with cipher.Block.

The crypto/elliptic package

In Go 1, elliptic.Curve has been made an interface to permit alternative implementations. The curve parameters have been moved to the elliptic.CurveParams structure.

Updating: Existing users of *elliptic.Curve will need to change to simply elliptic.Curve. Calls to Marshal, Unmarshal and GenerateKey are now functions in crypto/elliptic that take an elliptic.Curve as their first argument.

The crypto/hmac package

In Go 1, the hash-specific functions, such as hmac.NewMD5, have been removed from crypto/hmac. Instead, hmac.New takes a function that returns a hash.Hash, such as md5.New.

Updating: Running go fix will perform the needed changes.

The crypto/x509 package

In Go 1, the CreateCertificate function and CreateCRL method in crypto/x509 have been altered to take an interface{} where they previously took a *rsa.PublicKey or *rsa.PrivateKey. This will allow other public key algorithms to be implemented in the future.

Updating: No changes will be needed.

The encoding/binary package

In Go 1, the binary.TotalSize function has been replaced by Size, which takes an interface{} argument rather than a reflect.Value.

Updating: What little code is affected will be caught by the compiler and must be updated by hand.

The encoding/xml package

In Go 1, the xml package has been brought closer in design to the other marshaling packages such as encoding/gob.

The old Parser type is renamed Decoder and has a new Decode method. An Encoder type was also introduced.

The functions Marshal and Unmarshal work with []byte values now. To work with streams, use the new Encoder and Decoder types.

When marshaling or unmarshaling values, the format of supported flags in field tags has changed to be closer to the json package (`xml:"name,flag"`). The matching done between field tags, field names, and the XML attribute and element names is now case-sensitive. The XMLName field tag, if present, must also match the name of the XML element being marshaled.

Updating: Running go fix will update most uses of the package except for some calls to Unmarshal. Special care must be taken with field tags, since the fix tool will not update them and if not fixed by hand they will misbehave silently in some cases. For example, the old "attr" is now written ",attr" while plain "attr" remains valid but with a different meaning.

The expvar package

In Go 1, the RemoveAll function has been removed. The Iter function and Iter method on *Map have been replaced by Do and (*Map).Do.

Updating: Most code using expvar will not need changing. The rare code that used Iter can be updated to pass a closure to Do to achieve the same effect.

The flag package

In Go 1, the interface flag.Value has changed slightly. The Set method now returns an error instead of a bool to indicate success or failure.

There is also a new kind of flag, Duration, to support argument values specifying time intervals. Values for such flags must be given units, just as time.Duration formats them: 10s, 1h30m, etc.

{{code "/doc/progs/go1.go" `/timeout/`}}

Updating: Programs that implement their own flags will need minor manual fixes to update their Set methods. The Duration flag is new and affects no existing code.

The go/* packages

Several packages under go have slightly revised APIs.

A concrete Mode type was introduced for configuration mode flags in the packages go/scanner, go/parser, go/printer, and go/doc.

The modes AllowIllegalChars and InsertSemis have been removed from the go/scanner package. They were mostly useful for scanning text other then Go source files. Instead, the text/scanner package should be used for that purpose.

The ErrorHandler provided to the scanner's Init method is now simply a function rather than an interface. The ErrorVector type has been removed in favor of the (existing) ErrorList type, and the ErrorVector methods have been migrated. Instead of embedding an ErrorVector in a client of the scanner, now a client should maintain an ErrorList.

The set of parse functions provided by the go/parser package has been reduced to the primary parse function ParseFile, and a couple of convenience functions ParseDir and ParseExpr.

The go/printer package supports an additional configuration mode SourcePos; if set, the printer will emit //line comments such that the generated output contains the original source code position information. The new type CommentedNode can be used to provide comments associated with an arbitrary ast.Node (until now only ast.File carried comment information).

The type names of the go/doc package have been streamlined by removing the Doc suffix: PackageDoc is now Package, ValueDoc is Value, etc. Also, all types now consistently have a Name field (or Names, in the case of type Value) and Type.Factories has become Type.Funcs. Instead of calling doc.NewPackageDoc(pkg, importpath), documentation for a package is created with:

    doc.New(pkg, importpath, mode)

where the new mode parameter specifies the operation mode: if set to AllDecls, all declarations (not just exported ones) are considered. The function NewFileDoc was removed, and the function CommentText has become the method Text of ast.CommentGroup.

In package go/token, the token.FileSet method Files (which originally returned a channel of *token.Files) has been replaced with the iterator Iterate that accepts a function argument instead.

In package go/build, the API has been nearly completely replaced. The package still computes Go package information but it does not run the build: the Cmd and Script types are gone. (To build code, use the new go command instead.) The DirInfo type is now named Package. FindTree and ScanDir are replaced by Import and ImportDir.

Updating: Code that uses packages in go will have to be updated by hand; the compiler will reject incorrect uses. Templates used in conjunction with any of the go/doc types may need manual fixes; the renamed fields will lead to run-time errors.

The hash package

In Go 1, the definition of hash.Hash includes a new method, BlockSize. This new method is used primarily in the cryptographic libraries.

The Sum method of the hash.Hash interface now takes a []byte argument, to which the hash value will be appended. The previous behavior can be recreated by adding a nil argument to the call.

Updating: Existing implementations of hash.Hash will need to add a BlockSize method. Hashes that process the input one byte at a time can implement BlockSize to return 1. Running go fix will update calls to the Sum methods of the various implementations of hash.Hash.

Updating: Since the package's functionality is new, no updating is necessary.

The http package

In Go 1 the http package is refactored, putting some of the utilities into a httputil subdirectory. These pieces are only rarely needed by HTTP clients. The affected items are:

  • ClientConn
  • DumpRequest
  • DumpRequestOut
  • DumpResponse
  • NewChunkedReader
  • NewChunkedWriter
  • NewClientConn
  • NewProxyClientConn
  • NewServerConn
  • NewSingleHostReverseProxy
  • ReverseProxy
  • ServerConn

The Request.RawURL field has been removed; it was a historical artifact.

The Handle and HandleFunc functions, and the similarly-named methods of ServeMux, now panic if an attempt is made to register the same pattern twice.

Updating: Running go fix will update the few programs that are affected except for uses of RawURL, which must be fixed by hand.

The image package

The image package has had a number of minor changes, rearrangements and renamings.

Most of the color handling code has been moved into its own package, image/color. For the elements that moved, a symmetry arises; for instance, each pixel of an image.RGBA is a color.RGBA.

The old image/ycbcr package has been folded, with some renamings, into the image and image/color packages.

The old image.ColorImage type is still in the image package but has been renamed image.Uniform, while image.Tiled has been removed.

This table lists the renamings.

Old New

image.Color color.Color
image.ColorModel color.Model
image.ColorModelFunc color.ModelFunc
image.PalettedColorModel color.Palette

image.RGBAColor color.RGBA
image.RGBA64Color color.RGBA64
image.NRGBAColor color.NRGBA
image.NRGBA64Color color.NRGBA64
image.AlphaColor color.Alpha
image.Alpha16Color color.Alpha16
image.GrayColor color.Gray
image.Gray16Color color.Gray16

image.RGBAColorModel color.RGBAModel
image.RGBA64ColorModel color.RGBA64Model
image.NRGBAColorModel color.NRGBAModel
image.NRGBA64ColorModel color.NRGBA64Model
image.AlphaColorModel color.AlphaModel
image.Alpha16ColorModel color.Alpha16Model
image.GrayColorModel color.GrayModel
image.Gray16ColorModel color.Gray16Model

ycbcr.RGBToYCbCr color.RGBToYCbCr
ycbcr.YCbCrToRGB color.YCbCrToRGB
ycbcr.YCbCrColorModel color.YCbCrModel
ycbcr.YCbCrColor color.YCbCr
ycbcr.YCbCr image.YCbCr

ycbcr.SubsampleRatio444 image.YCbCrSubsampleRatio444
ycbcr.SubsampleRatio422 image.YCbCrSubsampleRatio422
ycbcr.SubsampleRatio420 image.YCbCrSubsampleRatio420

image.ColorImage image.Uniform

The image package's New functions (NewRGBA, NewRGBA64, etc.) take an image.Rectangle as an argument instead of four integers.

Finally, there are new predefined color.Color variables color.Black, color.White, color.Opaque and color.Transparent.

Updating: Running go fix will update almost all code affected by the change.

The log/syslog package

In Go 1, the syslog.NewLogger function returns an error as well as a log.Logger.

Updating: What little code is affected will be caught by the compiler and must be updated by hand.

The mime package

In Go 1, the FormatMediaType function of the mime package has been simplified to make it consistent with ParseMediaType. It now takes "text/html" rather than "text" and "html".

Updating: What little code is affected will be caught by the compiler and must be updated by hand.

The net package

In Go 1, the various SetTimeout, SetReadTimeout, and SetWriteTimeout methods have been replaced with SetDeadline, SetReadDeadline, and SetWriteDeadline, respectively. Rather than taking a timeout value in nanoseconds that apply to any activity on the connection, the new methods set an absolute deadline (as a time.Time value) after which reads and writes will time out and no longer block.

There are also new functions net.DialTimeout to simplify timing out dialing a network address and net.ListenMulticastUDP to allow multicast UDP to listen concurrently across multiple listeners. The net.ListenMulticastUDP function replaces the old JoinGroup and LeaveGroup methods.

Updating: Code that uses the old methods will fail to compile and must be updated by hand. The semantic change makes it difficult for the fix tool to update automatically.

The os package

The Time function has been removed; callers should use the Time type from the time package.

The Exec function has been removed; callers should use Exec from the syscall package, where available.

The ShellExpand function has been renamed to ExpandEnv.

The NewFile function now takes a uintptr fd, instead of an int. The Fd method on files now also returns a uintptr.

There are no longer error constants such as EINVAL in the os package, since the set of values varied with the underlying operating system. There are new portable functions like IsPermission to test common error properties, plus a few new error values with more Go-like names, such as ErrPermission and ErrNotExist.

The Getenverror function has been removed. To distinguish between a non-existent environment variable and an empty string, use os.Environ or syscall.Getenv.

The Process.Wait method has dropped its option argument and the associated constants are gone from the package. Also, the function Wait is gone; only the method of the Process type persists.

The Waitmsg type returned by Process.Wait has been replaced with a more portable ProcessState type with accessor methods to recover information about the process. Because of changes to Wait, the ProcessState value always describes an exited process. Portability concerns simplified the interface in other ways, but the values returned by the ProcessState.Sys and ProcessState.SysUsage methods can be type-asserted to underlying system-specific data structures such as syscall.WaitStatus and syscall.Rusage on Unix.

Updating: Running go fix will drop a zero argument to Process.Wait. All other changes will be caught by the compiler and must be updated by hand.

The os.FileInfo type

Go 1 redefines the os.FileInfo type, changing it from a struct to an interface:

    type FileInfo interface {
        Name() string       // base name of the file
        Size() int64        // length in bytes
        Mode() FileMode     // file mode bits
        ModTime() time.Time // modification time
        IsDir() bool        // abbreviation for Mode().IsDir()
        Sys() interface{}   // underlying data source (can return nil)
    }

The file mode information has been moved into a subtype called os.FileMode, a simple integer type with IsDir, Perm, and String methods.

The system-specific details of file modes and properties such as (on Unix) i-number have been removed from FileInfo altogether. Instead, each operating system's os package provides an implementation of the FileInfo interface, which has a Sys method that returns the system-specific representation of file metadata. For instance, to discover the i-number of a file on a Unix system, unpack the FileInfo like this:

    fi, err := os.Stat("hello.go")
    if err != nil {
        log.Fatal(err)
    }
    // Check that it's a Unix file.
    unixStat, ok := fi.Sys().(*syscall.Stat_t)
    if !ok {
        log.Fatal("hello.go: not a Unix file")
    }
    fmt.Printf("file i-number: %d\n", unixStat.Ino)

Assuming (which is unwise) that "hello.go" is a Unix file, the i-number expression could be contracted to

    fi.Sys().(*syscall.Stat_t).Ino

The vast majority of uses of FileInfo need only the methods of the standard interface.

The os package no longer contains wrappers for the POSIX errors such as ENOENT. For the few programs that need to verify particular error conditions, there are now the boolean functions IsExist, IsNotExist and IsPermission.

{{code "/doc/progs/go1.go" `/os\.Open/` `/}/`}}

Updating: Running go fix will update code that uses the old equivalent of the current os.FileInfo and os.FileMode API. Code that needs system-specific file details will need to be updated by hand. Code that uses the old POSIX error values from the os package will fail to compile and will also need to be updated by hand.

The os/signal package

The os/signal package in Go 1 replaces the Incoming function, which returned a channel that received all incoming signals, with the selective Notify function, which asks for delivery of specific signals on an existing channel.

Updating: Code must be updated by hand. A literal translation of

c := signal.Incoming()

is

c := make(chan os.Signal)
signal.Notify(c) // ask for all signals

but most code should list the specific signals it wants to handle instead:

c := make(chan os.Signal)
signal.Notify(c, syscall.SIGHUP, syscall.SIGQUIT)

The path/filepath package

In Go 1, the Walk function of the path/filepath package has been changed to take a function value of type WalkFunc instead of a Visitor interface value. WalkFunc unifies the handling of both files and directories.

    type WalkFunc func(path string, info os.FileInfo, err error) error

The WalkFunc function will be called even for files or directories that could not be opened; in such cases the error argument will describe the failure. If a directory's contents are to be skipped, the function should return the value filepath.SkipDir

{{code "/doc/progs/go1.go" `/STARTWALK/` `/ENDWALK/`}}

Updating: The change simplifies most code but has subtle consequences, so affected programs will need to be updated by hand. The compiler will catch code using the old interface.

The regexp package

The regexp package has been rewritten. It has the same interface but the specification of the regular expressions it supports has changed from the old "egrep" form to that of RE2.

Updating: Code that uses the package should have its regular expressions checked by hand.

The runtime package

In Go 1, much of the API exported by package runtime has been removed in favor of functionality provided by other packages. Code using the runtime.Type interface or its specific concrete type implementations should now use package reflect. Code using runtime.Semacquire or runtime.Semrelease should use channels or the abstractions in package sync. The runtime.Alloc, runtime.Free, and runtime.Lookup functions, an unsafe API created for debugging the memory allocator, have no replacement.

Before, runtime.MemStats was a global variable holding statistics about memory allocation, and calls to runtime.UpdateMemStats ensured that it was up to date. In Go 1, runtime.MemStats is a struct type, and code should use runtime.ReadMemStats to obtain the current statistics.

The package adds a new function, runtime.NumCPU, that returns the number of CPUs available for parallel execution, as reported by the operating system kernel. Its value can inform the setting of GOMAXPROCS. The runtime.Cgocalls and runtime.Goroutines functions have been renamed to runtime.NumCgoCall and runtime.NumGoroutine.

Updating: Running go fix will update code for the function renamings. Other code will need to be updated by hand.

The strconv package

In Go 1, the strconv package has been significantly reworked to make it more Go-like and less C-like, although Atoi lives on (it's similar to int(ParseInt(x, 10, 0)), as does Itoa(x) (FormatInt(int64(x), 10)). There are also new variants of some of the functions that append to byte slices rather than return strings, to allow control over allocation.

This table summarizes the renamings; see the package documentation for full details.

Old call New call

Atob(x) ParseBool(x)

Atof32(x) ParseFloat(x, 32)§
Atof64(x) ParseFloat(x, 64)
AtofN(x, n) ParseFloat(x, n)

Atoi(x) Atoi(x)
Atoi(x) ParseInt(x, 10, 0)§
Atoi64(x) ParseInt(x, 10, 64)

Atoui(x) ParseUint(x, 10, 0)§
Atoui64(x) ParseUint(x, 10, 64)

Btoi64(x, b) ParseInt(x, b, 64)
Btoui64(x, b) ParseUint(x, b, 64)

Btoa(x) FormatBool(x)

Ftoa32(x, f, p) FormatFloat(float64(x), f, p, 32)
Ftoa64(x, f, p) FormatFloat(x, f, p, 64)
FtoaN(x, f, p, n) FormatFloat(x, f, p, n)

Itoa(x) Itoa(x)
Itoa(x) FormatInt(int64(x), 10)
Itoa64(x) FormatInt(x, 10)

Itob(x, b) FormatInt(int64(x), b)
Itob64(x, b) FormatInt(x, b)

Uitoa(x) FormatUint(uint64(x), 10)
Uitoa64(x) FormatUint(x, 10)

Uitob(x, b) FormatUint(uint64(x), b)
Uitob64(x, b) FormatUint(x, b)

Updating: Running go fix will update almost all code affected by the change.
§ Atoi persists but Atoui and Atof32 do not, so they may require a cast that must be added by hand; the go fix tool will warn about it.

The template packages

The template and exp/template/html packages have moved to text/template and html/template. More significant, the interface to these packages has been simplified. The template language is the same, but the concept of "template set" is gone and the functions and methods of the packages have changed accordingly, often by elimination.

Instead of sets, a Template object may contain multiple named template definitions, in effect constructing name spaces for template invocation. A template can invoke any other template associated with it, but only those templates associated with it. The simplest way to associate templates is to parse them together, something made easier with the new structure of the packages.

Updating: The imports will be updated by fix tool. Single-template uses will be otherwise be largely unaffected. Code that uses multiple templates in concert will need to be updated by hand. The examples in the documentation for text/template can provide guidance.

The testing package

The testing package has a type, B, passed as an argument to benchmark functions. In Go 1, B has new methods, analogous to those of T, enabling logging and failure reporting.

{{code "/doc/progs/go1.go" `/func.*Benchmark/` `/^}/`}}

Updating: Existing code is unaffected, although benchmarks that use println or panic should be updated to use the new methods.

The testing/script package

The testing/script package has been deleted. It was a dreg.

Updating: No code is likely to be affected.

The unsafe package

In Go 1, the functions unsafe.Typeof, unsafe.Reflect, unsafe.Unreflect, unsafe.New, and unsafe.NewArray have been removed; they duplicated safer functionality provided by package reflect.

Updating: Code using these functions must be rewritten to use package reflect. The changes to encoding/gob and the protocol buffer library may be helpful as examples.

The url package

In Go 1 several fields from the url.URL type were removed or replaced.

The String method now predictably rebuilds an encoded URL string using all of URL's fields as necessary. The resulting string will also no longer have passwords escaped.

The Raw field has been removed. In most cases the String method may be used in its place.

The old RawUserinfo field is replaced by the User field, of type *net.Userinfo. Values of this type may be created using the new net.User and net.UserPassword functions. The EscapeUserinfo and UnescapeUserinfo functions are also gone.

The RawAuthority field has been removed. The same information is available in the Host and User fields.

The RawPath field and the EncodedPath method have been removed. The path information in rooted URLs (with a slash following the schema) is now available only in decoded form in the Path field. Occasionally, the encoded data may be required to obtain information that was lost in the decoding process. These cases must be handled by accessing the data the URL was built from.

URLs with non-rooted paths, such as "mailto:dev@golang.org?subject=Hi", are also handled differently. The OpaquePath boolean field has been removed and a new Opaque string field introduced to hold the encoded path for such URLs. In Go 1, the cited URL parses as:

    URL{
        Scheme: "mailto",
        Opaque: "dev@golang.org",
        RawQuery: "subject=Hi",
    }

A new RequestURI method was added to URL.

The ParseWithReference function has been renamed to ParseWithFragment.

Updating: Code that uses the old fields will fail to compile and must be updated by hand. The semantic changes make it difficult for the fix tool to update automatically.

The go command

Go 1 introduces the go command, a tool for fetching, building, and installing Go packages and commands. The go command does away with makefiles, instead using Go source code to find dependencies and determine build conditions. Most existing Go programs will no longer require makefiles to be built.

See How to Write Go Code for a primer on the go command and the go command documentation for the full details.

Updating: Projects that depend on the Go project's old makefile-based build infrastructure (Make.pkg, Make.cmd, and so on) should switch to using the go command for building Go code and, if necessary, rewrite their makefiles to perform any auxiliary build tasks.

The cgo command

In Go 1, the cgo command uses a different _cgo_export.h file, which is generated for packages containing //export lines. The _cgo_export.h file now begins with the C preamble comment, so that exported function definitions can use types defined there. This has the effect of compiling the preamble multiple times, so a package using //export must not put function definitions or variable initializations in the C preamble.

Packaged releases

One of the most significant changes associated with Go 1 is the availability of prepackaged, downloadable distributions. They are available for many combinations of architecture and operating system (including Windows) and the list will grow. Installation details are described on the Getting Started page, while the distributions themselves are listed on the downloads page. go/doc/go1compat.html0100644000000000000000000001351012412656737015024 0ustar00rootroot00000000000000

Introduction

The release of Go version 1, Go 1 for short, is a major milestone in the development of the language. Go 1 is a stable platform for the growth of programs and projects written in Go.

Go 1 defines two things: first, the specification of the language; and second, the specification of a set of core APIs, the "standard packages" of the Go library. The Go 1 release includes their implementation in the form of two compiler suites (gc and gccgo), and the core libraries themselves.

It is intended that programs written to the Go 1 specification will continue to compile and run correctly, unchanged, over the lifetime of that specification. At some indefinite point, a Go 2 specification may arise, but until that time, Go programs that work today should continue to work even as future "point" releases of Go 1 arise (Go 1.1, Go 1.2, etc.).

Compatibility is at the source level. Binary compatibility for compiled packages is not guaranteed between releases. After a point release, Go source will need to be recompiled to link against the new release.

The APIs may grow, acquiring new packages and features, but not in a way that breaks existing Go 1 code.

Expectations

Although we expect that the vast majority of programs will maintain this compatibility over time, it is impossible to guarantee that no future change will break any program. This document is an attempt to set expectations for the compatibility of Go 1 software in the future. There are a number of ways in which a program that compiles and runs today may fail to do so after a future point release. They are all unlikely but worth recording.

  • Security. A security issue in the specification or implementation may come to light whose resolution requires breaking compatibility. We reserve the right to address such security issues.
  • Unspecified behavior. The Go specification tries to be explicit about most properties of the language, but there are some aspects that are undefined. Programs that depend on such unspecified behavior may break in future releases.
  • Specification errors. If it becomes necessary to address an inconsistency or incompleteness in the specification, resolving the issue could affect the meaning or legality of existing programs. We reserve the right to address such issues, including updating the implementations. Except for security issues, no incompatible changes to the specification would be made.
  • Bugs. If a compiler or library has a bug that violates the specification, a program that depends on the buggy behavior may break if the bug is fixed. We reserve the right to fix such bugs.
  • Struct literals. For the addition of features in later point releases, it may be necessary to add fields to exported structs in the API. Code that uses untagged struct literals (such as pkg.T{3, "x"}) to create values of these types would fail to compile after such a change. However, code that uses tagged literals (pkg.T{A: 3, B: "x"}) will continue to compile after such a change. We will update such data structures in a way that allows tagged struct literals to remain compatible, although untagged literals may fail to compile. (There are also more intricate cases involving nested data structures or interfaces, but they have the same resolution.) We therefore recommend that composite literals whose type is defined in a separate package should use the tagged notation.
  • Dot imports. If a program imports a standard package using import . "path", additional names defined in the imported package in future releases may conflict with other names defined in the program. We do not recommend the use of import . outside of tests, and using it may cause a program to fail to compile in future releases.

Of course, for all of these possibilities, should they arise, we would endeavor whenever feasible to update the specification, compilers, or libraries without affecting existing code.

These same considerations apply to successive point releases. For instance, code that runs under Go 1.2 should be compatible with Go 1.2.1, Go 1.3, Go 1.4, etc., although not necessarily with Go 1.1 since it may use features added only in Go 1.2

Features added between releases, available in the source repository but not part of the numbered binary releases, are under active development. No promise of compatibility is made for software using such features until they have been released.

Finally, although it is not a correctness issue, it is possible that the performance of a program may be affected by changes in the implementation of the compilers or libraries upon which it depends. No guarantee can be made about the performance of a given program between releases.

Although these expectations apply to Go 1 itself, we hope similar considerations would be made for the development of externally developed software based on Go 1.

Sub-repositories

Code in sub-repositories of the main go tree, such as code.google.com/p/go.net, may be developed under looser compatibility requirements. However, the sub-repositories will be tagged as appropriate to identify versions that are compatible with the Go 1 point releases.

Tools

Finally, the Go tool chain (compilers, linkers, build tools, and so on) are under active development and may change behavior. This means, for instance, that scripts that depend on the location and properties of the tools may be broken by a point release.

These caveats aside, we believe that Go 1 will be a firm foundation for the development of Go and its ecosystem.

go/doc/go_faq.html0100644000000000000000000021012512412656737014367 0ustar00rootroot00000000000000

Origins

What is the purpose of the project?

No major systems language has emerged in over a decade, but over that time the computing landscape has changed tremendously. There are several trends:

  • Computers are enormously quicker but software development is not faster.
  • Dependency management is a big part of software development today but the “header files” of languages in the C tradition are antithetical to clean dependency analysis—and fast compilation.
  • There is a growing rebellion against cumbersome type systems like those of Java and C++, pushing people towards dynamically typed languages such as Python and JavaScript.
  • Some fundamental concepts such as garbage collection and parallel computation are not well supported by popular systems languages.
  • The emergence of multicore computers has generated worry and confusion.

We believe it's worth trying again with a new language, a concurrent, garbage-collected language with fast compilation. Regarding the points above:

  • It is possible to compile a large Go program in a few seconds on a single computer.
  • Go provides a model for software construction that makes dependency analysis easy and avoids much of the overhead of C-style include files and libraries.
  • Go's type system has no hierarchy, so no time is spent defining the relationships between types. Also, although Go has static types the language attempts to make types feel lighter weight than in typical OO languages.
  • Go is fully garbage-collected and provides fundamental support for concurrent execution and communication.
  • By its design, Go proposes an approach for the construction of system software on multicore machines.

A much more expansive answer to this question is available in the article, Go at Google: Language Design in the Service of Software Engineering.

What is the status of the project?

Go became a public open source project on November 10, 2009. After a couple of years of very active design and development, stability was called for and Go 1 was released on March 28, 2012. Go 1, which includes a language specification, standard libraries, and custom tools, provides a stable foundation for creating reliable products, projects, and publications.

With that stability established, we are using Go to develop programs, products, and tools rather than actively changing the language and libraries. In fact, the purpose of Go 1 is to provide long-term stability. Backwards-incompatible changes will not be made to any Go 1 point release. We want to use what we have to learn how a future version of Go might look, rather than to play with the language underfoot.

Of course, development will continue on Go itself, but the focus will be on performance, reliability, portability and the addition of new functionality such as improved support for internationalization.

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.

What is the origin of the name?

“Ogle” would be a good name for a Go debugger.

What's the origin of the mascot?

The mascot and logo were designed by Renée French, who also designed Glenda, the Plan 9 bunny. The gopher is derived from one she used for an WFMU T-shirt design some years ago. The logo and mascot are covered by the Creative Commons Attribution 3.0 license.

What is the history of the project?

Robert Griesemer, Rob Pike and Ken Thompson started sketching the goals for a new language on the white board on September 21, 2007. Within a few days the goals had settled into a plan to do something and a fair idea of what it would be. Design continued part-time in parallel with unrelated work. By January 2008, Ken had started work on a compiler with which to explore ideas; it generated C code as its output. By mid-year the language had become a full-time project and had settled enough to attempt a production compiler. In May 2008, Ian Taylor independently started on a GCC front end for Go using the draft specification. Russ Cox joined in late 2008 and helped move the language and libraries from prototype to reality.

Go became a public open source project on November 10, 2009. Many people from the community have contributed ideas, discussions, and code.

Why are you creating a new language?

Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java.

Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing. Finally, it is intended to be fast: it should take at most a few seconds to build a large executable on a single computer. To meet these goals required addressing a number of linguistic issues: an expressive but lightweight type system; concurrency and garbage collection; rigid dependency specification; and so on. These cannot be addressed well by libraries or tools; a new language was called for.

The article Go at Google discusses the background and motivation behind the design of the Go language, as well as providing more detail about many of the answers presented in this FAQ.

What are Go's ancestors?

Go is mostly in the C family (basic syntax), with significant input from the Pascal/Modula/Oberon family (declarations, packages), plus some ideas from languages inspired by Tony Hoare's CSP, such as Newsqueak and Limbo (concurrency). However, it is a new language across the board. In every respect the language was designed by thinking about what programmers do and how to make programming, at least the kind of programming we do, more effective, which means more fun.

What are the guiding principles in the design?

Programming today involves too much bookkeeping, repetition, and clerical work. As Dick Gabriel says, “Old programs read like quiet conversations between a well-spoken research worker and a well-studied mechanical colleague, not as a debate with a compiler. Who'd have guessed sophistication bought such noise?” The sophistication is worthwhile—no one wants to go back to the old languages—but can it be more quietly achieved?

Go attempts to reduce the amount of typing in both senses of the word. Throughout its design, we have tried to reduce clutter and complexity. There are no forward declarations and no header files; everything is declared exactly once. Initialization is expressive, automatic, and easy to use. Syntax is clean and light on keywords. Stuttering (foo.Foo* myFoo = new(foo.Foo)) is reduced by simple type derivation using the := declare-and-initialize construct. And perhaps most radically, there is no type hierarchy: types just are, they don't have to announce their relationships. These simplifications allow Go to be expressive yet comprehensible without sacrificing, well, sophistication.

Another important principle is to keep the concepts orthogonal. Methods can be implemented for any type; structures represent data while interfaces represent abstraction; and so on. Orthogonality makes it easier to understand what happens when things combine.

Usage

Is Google using Go internally?

Yes. There are now several Go programs deployed in production inside Google. A public example is the server behind golang.org. It's just the godoc document server running in a production configuration on Google App Engine.

Other examples include the Vitess system for large-scale SQL installations and Google's download server, dl.google.com, which delivers Chrome binaries and other large installables such as apt-get packages.

There are two Go compiler implementations, gc (the 6g program and friends) and gccgo. Gc uses a different calling convention and linker and can therefore only be linked with C programs using the same convention. There is such a C compiler but no C++ compiler. Gccgo is a GCC front-end that can, with care, be linked with GCC-compiled C or C++ programs.

The cgo program provides the mechanism for a “foreign function interface” to allow safe calling of C libraries from Go code. SWIG extends this capability to C++ libraries.

Does Go support Google's protocol buffers?

A separate open source project provides the necessary compiler plugin and library. It is available at code.google.com/p/goprotobuf/

Can I translate the Go home page into another language?

Absolutely. We encourage developers to make Go Language sites in their own languages. However, if you choose to add the Google logo or branding to your site (it does not appear on golang.org), you will need to abide by the guidelines at www.google.com/permissions/guidelines.html

Design

What's up with Unicode identifiers?

It was important to us to extend the space of identifiers from the confines of ASCII. Go's rule—identifier characters must be letters or digits as defined by Unicode—is simple to understand and to implement but has restrictions. Combining characters are excluded by design, for instance. Until there is an agreed external definition of what an identifier might be, plus a definition of canonicalization of identifiers that guarantees no ambiguity, it seemed better to keep combining characters out of the mix. Thus we have a simple rule that can be expanded later without breaking programs, one that avoids bugs that would surely arise from a rule that admits ambiguous identifiers.

On a related note, since an exported identifier must begin with an upper-case letter, identifiers created from “letters” in some languages can, by definition, not be exported. For now the only solution is to use something like X日本語, which is clearly unsatisfactory; we are considering other options. The case-for-visibility rule is unlikely to change however; it's one of our favorite features of Go.

Why does Go not have feature X?

Every language contains novel features and omits someone's favorite feature. Go was designed with an eye on felicity of programming, speed of compilation, orthogonality of concepts, and the need to support features such as concurrency and garbage collection. Your favorite feature may be missing because it doesn't fit, because it affects compilation speed or clarity of design, or because it would make the fundamental system model too difficult.

If it bothers you that Go is missing feature X, please forgive us and investigate the features that Go does have. You might find that they compensate in interesting ways for the lack of X.

Why does Go not have generic types?

Generics may well be added at some point. We don't feel an urgency for them, although we understand some programmers do.

Generics are convenient but they come at a cost in complexity in the type system and run-time. We haven't yet found a design that gives value proportionate to the complexity, although we continue to think about it. Meanwhile, Go's built-in maps and slices, plus the ability to use the empty interface to construct containers (with explicit unboxing) mean in many cases it is possible to write code that does what generics would enable, if less smoothly.

This remains an open issue.

Why does Go not have exceptions?

We believe that coupling exceptions to a control structure, as in the try-catch-finally idiom, results in convoluted code. It also tends to encourage programmers to label too many ordinary errors, such as failing to open a file, as exceptional.

Go takes a different approach. For plain error handling, Go's multi-value returns make it easy to report an error without overloading the return value. A canonical error type, coupled with Go's other features, makes error handling pleasant but quite different from that in other languages.

Go also has a couple of built-in functions to signal and recover from truly exceptional conditions. The recovery mechanism is executed only as part of a function's state being torn down after an error, which is sufficient to handle catastrophe but requires no extra control structures and, when used well, can result in clean error-handling code.

See the Defer, Panic, and Recover article for details.

Why does Go not have assertions?

Go doesn't provide assertions. They are undeniably convenient, but our experience has been that programmers use them as a crutch to avoid thinking about proper error handling and reporting. Proper error handling means that servers continue operation after non-fatal errors instead of crashing. Proper error reporting means that errors are direct and to the point, saving the programmer from interpreting a large crash trace. Precise errors are particularly important when the programmer seeing the errors is not familiar with the code.

We understand that this is a point of contention. There are many things in the Go language and libraries that differ from modern practices, simply because we feel it's sometimes worth trying a different approach.

Why build concurrency on the ideas of CSP?

Concurrency and multi-threaded programming have a reputation for difficulty. We believe this is due partly to complex designs such as pthreads and partly to overemphasis on low-level details such as mutexes, condition variables, and memory barriers. Higher-level interfaces enable much simpler code, even if there are still mutexes and such under the covers.

One of the most successful models for providing high-level linguistic support for concurrency comes from Hoare's Communicating Sequential Processes, or CSP. Occam and Erlang are two well known languages that stem from CSP. Go's concurrency primitives derive from a different part of the family tree whose main contribution is the powerful notion of channels as first class objects. Experience with several earlier languages has shown that the CSP model fits well into a procedural language framework.

Why goroutines instead of threads?

Goroutines are part of making concurrency easy to use. The idea, which has been around for a while, is to multiplex independently executing functions—coroutines—onto a set of threads. When a coroutine blocks, such as by calling a blocking system call, the run-time automatically moves other coroutines on the same operating system thread to a different, runnable thread so they won't be blocked. The programmer sees none of this, which is the point. The result, which we call goroutines, can be very cheap: they have little overhead beyond the memory for the stack, which is just a few kilobytes.

To make the stacks small, Go's run-time uses resizable, bounded stacks. A newly minted goroutine is given a few kilobytes, which is almost always enough. When it isn't, the run-time grows (and shrinks) the memory for storing the stack automatically, allowing many goroutines to live in a modest amount of memory. The CPU overhead averages about three cheap instructions per function call. It is practical to create hundreds of thousands of goroutines in the same address space. If goroutines were just threads, system resources would run out at a much smaller number.

Why are map operations not defined to be atomic?

After long discussion it was decided that the typical use of maps did not require safe access from multiple goroutines, and in those cases where it did, the map was probably part of some larger data structure or computation that was already synchronized. Therefore requiring that all map operations grab a mutex would slow down most programs and add safety to few. This was not an easy decision, however, since it means uncontrolled map access can crash the program.

The language does not preclude atomic map updates. When required, such as when hosting an untrusted program, the implementation could interlock map access.

Will you accept my language change?

People often suggest improvements to the language—the mailing list contains a rich history of such discussions—but very few of these changes have been accepted.

Although Go is an open source project, the language and libraries are protected by a compatibility promise that prevents changes that break existing programs. If your proposal violates the Go 1 specification we cannot even entertain the idea, regardless of its merit. A future major release of Go may be incompatible with Go 1, but we're not ready to start talking about what that might be.

Even if your proposal is compatible with the Go 1 spec, it might not be in the spirit of Go's design goals. The article Go at Google: Language Design in the Service of Software Engineering explains Go's origins and the motivation behind its design.

Types

Is Go an object-oriented language?

Yes and no. Although Go has types and methods and allows an object-oriented style of programming, there is no type hierarchy. The concept of “interface” in Go provides a different approach that we believe is easy to use and in some ways more general. There are also ways to embed types in other types to provide something analogous—but not identical—to subclassing. Moreover, methods in Go are more general than in C++ or Java: they can be defined for any sort of data, even built-in types such as plain, “unboxed” integers. They are not restricted to structs (classes).

Also, the lack of type hierarchy makes “objects” in Go feel much more lightweight than in languages such as C++ or Java.

How do I get dynamic dispatch of methods?

The only way to have dynamically dispatched methods is through an interface. Methods on a struct or any other concrete type are always resolved statically.

Why is there no type inheritance?

Object-oriented programming, at least in the best-known languages, involves too much discussion of the relationships between types, relationships that often could be derived automatically. Go takes a different approach.

Rather than requiring the programmer to declare ahead of time that two types are related, in Go a type automatically satisfies any interface that specifies a subset of its methods. Besides reducing the bookkeeping, this approach has real advantages. Types can satisfy many interfaces at once, without the complexities of traditional multiple inheritance. Interfaces can be very lightweight—an interface with one or even zero methods can express a useful concept. Interfaces can be added after the fact if a new idea comes along or for testing—without annotating the original types. Because there are no explicit relationships between types and interfaces, there is no type hierarchy to manage or discuss.

It's possible to use these ideas to construct something analogous to type-safe Unix pipes. For instance, see how fmt.Fprintf enables formatted printing to any output, not just a file, or how the bufio package can be completely separate from file I/O, or how the image packages generate compressed image files. All these ideas stem from a single interface (io.Writer) representing a single method (Write). And that's only scratching the surface. Go's interfaces have a profound influence on how programs are structured.

It takes some getting used to but this implicit style of type dependency is one of the most productive things about Go.

Why is len a function and not a method?

We debated this issue but decided implementing len and friends as functions was fine in practice and didn't complicate questions about the interface (in the Go type sense) of basic types.

Why does Go not support overloading of methods and operators?

Method dispatch is simplified if it doesn't need to do type matching as well. Experience with other languages told us that having a variety of methods with the same name but different signatures was occasionally useful but that it could also be confusing and fragile in practice. Matching only by name and requiring consistency in the types was a major simplifying decision in Go's type system.

Regarding operator overloading, it seems more a convenience than an absolute requirement. Again, things are simpler without it.

Why doesn't Go have "implements" declarations?

A Go type satisfies an interface by implementing the methods of that interface, nothing more. This property allows interfaces to be defined and used without having to modify existing code. It enables a kind of structural typing that promotes separation of concerns and improves code re-use, and makes it easier to build on patterns that emerge as the code develops. The semantics of interfaces is one of the main reasons for Go's nimble, lightweight feel.

See the question on type inheritance for more detail.

How can I guarantee my type satisfies an interface?

You can ask the compiler to check that the type T implements the interface I by attempting an assignment:

type T struct{}
var _ I = T{}   // Verify that T implements I.

If T doesn't implement I, the mistake will be caught at compile time.

If you wish the users of an interface to explicitly declare that they implement it, you can add a method with a descriptive name to the interface's method set. For example:

type Fooer interface {
    Foo()
    ImplementsFooer()
}

A type must then implement the ImplementsFooer method to be a Fooer, clearly documenting the fact and announcing it in godoc's output.

type Bar struct{}
func (b Bar) ImplementsFooer() {}
func (b Bar) Foo() {}

Most code doesn't make use of such constraints, since they limit the utility of the interface idea. Sometimes, though, they're necessary to resolve ambiguities among similar interfaces.

Why doesn't type T satisfy the Equal interface?

Consider this simple interface to represent an object that can compare itself with another value:

type Equaler interface {
    Equal(Equaler) bool
}

and this type, T:

type T int
func (t T) Equal(u T) bool { return t == u } // does not satisfy Equaler

Unlike the analogous situation in some polymorphic type systems, T does not implement Equaler. The argument type of T.Equal is T, not literally the required type Equaler.

In Go, the type system does not promote the argument of Equal; that is the programmer's responsibility, as illustrated by the type T2, which does implement Equaler:

type T2 int
func (t T2) Equal(u Equaler) bool { return t == u.(T2) }  // satisfies Equaler

Even this isn't like other type systems, though, because in Go any type that satisfies Equaler could be passed as the argument to T2.Equal, and at run time we must check that the argument is of type T2. Some languages arrange to make that guarantee at compile time.

A related example goes the other way:

type Opener interface {
   Open() Reader
}

func (t T3) Open() *os.File

In Go, T3 does not satisfy Opener, although it might in another language.

While it is true that Go's type system does less for the programmer in such cases, the lack of subtyping makes the rules about interface satisfaction very easy to state: are the function's names and signatures exactly those of the interface? Go's rule is also easy to implement efficiently. We feel these benefits offset the lack of automatic type promotion. Should Go one day adopt some form of generic typing, we expect there would be a way to express the idea of these examples and also have them be statically checked.

Can I convert a []T to an []interface{}?

Not directly, because they do not have the same representation in memory. It is necessary to copy the elements individually to the destination slice. This example converts a slice of int to a slice of interface{}:

t := []int{1, 2, 3, 4}
s := make([]interface{}, len(t))
for i, v := range t {
    s[i] = v
}

Why is my nil error value not equal to nil?

Under the covers, interfaces are implemented as two elements, a type and a value. The value, called the interface's dynamic value, is an arbitrary concrete value and the type is that of the value. For the int value 3, an interface value contains, schematically, (int, 3).

An interface value is nil only if the inner value and type are both unset, (nil, nil). In particular, a nil interface will always hold a nil type. If we store a pointer of type *int inside an interface value, the inner type will be *int regardless of the value of the pointer: (*int, nil). Such an interface value will therefore be non-nil even when the pointer inside is nil.

This situation can be confusing, and often arises when a nil value is stored inside an interface value such as an error return:

func returnsError() error {
	var p *MyError = nil
	if bad() {
		p = ErrBad
	}
	return p // Will always return a non-nil error.
}

If all goes well, the function returns a nil p, so the return value is an error interface value holding (*MyError, nil). This means that if the caller compares the returned error to nil, it will always look as if there was an error even if nothing bad happened. To return a proper nil error to the caller, the function must return an explicit nil:

func returnsError() error {
	if bad() {
		return ErrBad
	}
	return nil
}

It's a good idea for functions that return errors always to use the error type in their signature (as we did above) rather than a concrete type such as *MyError, to help guarantee the error is created correctly. As an example, os.Open returns an error even though, if not nil, it's always of concrete type *os.PathError.

Similar situations to those described here can arise whenever interfaces are used. Just keep in mind that if any concrete value has been stored in the interface, the interface will not be nil. For more information, see The Laws of Reflection.

Why are there no untagged unions, as in C?

Untagged unions would violate Go's memory safety guarantees.

Why does Go not have variant types?

Variant types, also known as algebraic types, provide a way to specify that a value might take one of a set of other types, but only those types. A common example in systems programming would specify that an error is, say, a network error, a security error or an application error and allow the caller to discriminate the source of the problem by examining the type of the error. Another example is a syntax tree in which each node can be a different type: declaration, statement, assignment and so on.

We considered adding variant types to Go, but after discussion decided to leave them out because they overlap in confusing ways with interfaces. What would happen if the elements of a variant type were themselves interfaces?

Also, some of what variant types address is already covered by the language. The error example is easy to express using an interface value to hold the error and a type switch to discriminate cases. The syntax tree example is also doable, although not as elegantly.

Values

Why does Go not provide implicit numeric conversions?

The convenience of automatic conversion between numeric types in C is outweighed by the confusion it causes. When is an expression unsigned? How big is the value? Does it overflow? Is the result portable, independent of the machine on which it executes? It also complicates the compiler; “the usual arithmetic conversions” are not easy to implement and inconsistent across architectures. For reasons of portability, we decided to make things clear and straightforward at the cost of some explicit conversions in the code. The definition of constants in Go—arbitrary precision values free of signedness and size annotations—ameliorates matters considerably, though.

A related detail is that, unlike in C, int and int64 are distinct types even if int is a 64-bit type. The int type is generic; if you care about how many bits an integer holds, Go encourages you to be explicit.

Why are maps built in?

The same reason strings are: they are such a powerful and important data structure that providing one excellent implementation with syntactic support makes programming more pleasant. We believe that Go's implementation of maps is strong enough that it will serve for the vast majority of uses. If a specific application can benefit from a custom implementation, it's possible to write one but it will not be as convenient syntactically; this seems a reasonable tradeoff.

Why don't maps allow slices as keys?

Map lookup requires an equality operator, which slices do not implement. They don't implement equality because equality is not well defined on such types; there are multiple considerations involving shallow vs. deep comparison, pointer vs. value comparison, how to deal with recursive types, and so on. We may revisit this issue—and implementing equality for slices will not invalidate any existing programs—but without a clear idea of what equality of slices should mean, it was simpler to leave it out for now.

In Go 1, unlike prior releases, equality is defined for structs and arrays, so such types can be used as map keys. Slices still do not have a definition of equality, though.

Why are maps, slices, and channels references while arrays are values?

There's a lot of history on that topic. Early on, maps and channels were syntactically pointers and it was impossible to declare or use a non-pointer instance. Also, we struggled with how arrays should work. Eventually we decided that the strict separation of pointers and values made the language harder to use. Changing these types to act as references to the associated, shared data structures resolved these issues. This change added some regrettable complexity to the language but had a large effect on usability: Go became a more productive, comfortable language when it was introduced.

Writing Code

How are libraries documented?

There is a program, godoc, written in Go, that extracts package documentation from the source code. It can be used on the command line or on the web. An instance is running at golang.org/pkg/. In fact, godoc implements the full site at golang.org/.

Is there a Go programming style guide?

Eventually, there may be a small number of rules to guide things like naming, layout, and file organization. The document Effective Go contains some style advice. More directly, the program gofmt is a pretty-printer whose purpose is to enforce layout rules; it replaces the usual compendium of do's and don'ts that allows interpretation. All the Go code in the repository has been run through gofmt.

The document titled Go Code Review Comments is a collection of very short essays about details of Go idiom that are often missed by programmers. It is a handy reference for people doing code reviews for Go projects.

How do I submit patches to the Go libraries?

The library sources are in go/src/pkg. If you want to make a significant change, please discuss on the mailing list before embarking.

See the document Contributing to the Go project for more information about how to proceed.

Why does the project use Mercurial and not git?

The Go project, hosted by Google Code at code.google.com/p/go, uses Mercurial as its version control system. When the project launched, Google Code supported only Subversion and Mercurial. Mercurial was a better choice because of its plugin mechanism that allowed us to create the "codereview" plugin to connect the project to the excellent code review tools at codereview.appspot.com.

Programmers who work with the Go project's source rather than release downloads sometimes ask for the project to switch to git. That would be possible, but it would be a lot of work and would also require reimplementing the codereview plugin. Given that Mercurial works today, with code review support, combined with the Go project's mostly linear, non-branching use of version control, a switch to git doesn't seem worthwhile.

Why does "go get" use HTTPS when cloning a repository?

Companies often permit outgoing traffic only on the standard TCP ports 80 (HTTP) and 443 (HTTPS), blocking outgoing traffic on other ports, including TCP port 9418 (git) and TCP port 22 (SSH). When using HTTPS instead of HTTP, git enforces certificate validation by default, providing protection against man-in-the-middle, eavesdropping and tampering attacks. The go get command therefore uses HTTPS for safety.

If you use git and prefer to push changes through SSH using your existing key it's easy to work around this. For GitHub, try one of these solutions:

  • Manually clone the repository in the expected package directory:
    $ cd $GOPATH/src/github.com/username
    $ git clone git@github.com:username/package.git
    
  • Force git push to use the SSH protocol by appending these two lines to ~/.gitconfig:
    [url "git@github.com:"]
    	pushInsteadOf = https://github.com/
    

How should I manage package versions using "go get"?

"Go get" does not have any explicit concept of package versions. Versioning is a source of significant complexity, especially in large code bases, and we are unaware of any approach that works well at scale in a large enough variety of situations to be appropriate to force on all Go users. What "go get" and the larger Go toolchain do provide is isolation of packages with different import paths. For example, the standard library's html/template and text/template coexist even though both are "package template". This observation leads to some advice for package authors and package users.

Packages intended for public use should try to maintain backwards compatibility as they evolve. The Go 1 compatibility guidelines are a good reference here: don't remove exported names, encourage tagged composite literals, and so on. If different functionality is required, add a new name instead of changing an old one. If a complete break is required, create a new package with a new import path.

If you're using an externally supplied package and worry that it might change in unexpected ways, the simplest solution is to copy it to your local repository. (This is the approach Google takes internally.) Store the copy under a new import path that identifies it as a local copy. For example, you might copy "original.com/pkg" to "you.com/external/original.com/pkg". Keith Rarick's goven is one tool to help automate this process.

Pointers and Allocation

When are function parameters passed by value?

As in all languages in the C family, everything in Go is passed by value. That is, a function always gets a copy of the thing being passed, as if there were an assignment statement assigning the value to the parameter. For instance, passing an int value to a function makes a copy of the int, and passing a pointer value makes a copy of the pointer, but not the data it points to. (See the next section for a discussion of how this affects method receivers.)

Map and slice values behave like pointers: they are descriptors that contain pointers to the underlying map or slice data. Copying a map or slice value doesn't copy the data it points to. Copying an interface value makes a copy of the thing stored in the interface value. If the interface value holds a struct, copying the interface value makes a copy of the struct. If the interface value holds a pointer, copying the interface value makes a copy of the pointer, but again not the data it points to.

When should I use a pointer to an interface?

Almost never. Pointers to interface values arise only in rare, tricky situations involving disguising an interface value's type for delayed evaluation.

It is however a common mistake to pass a pointer to an interface value to a function expecting an interface. The compiler will complain about this error but the situation can still be confusing, because sometimes a pointer is necessary to satisfy an interface. The insight is that although a pointer to a concrete type can satisfy an interface, with one exception a pointer to an interface can never satisfy a interface.

Consider the variable declaration,

var w io.Writer

The printing function fmt.Fprintf takes as its first argument a value that satisfies io.Writer—something that implements the canonical Write method. Thus we can write

fmt.Fprintf(w, "hello, world\n")

If however we pass the address of w, the program will not compile.

fmt.Fprintf(&w, "hello, world\n") // Compile-time error.

The one exception is that any value, even a pointer to an interface, can be assigned to a variable of empty interface type (interface{}). Even so, it's almost certainly a mistake if the value is a pointer to an interface; the result can be confusing.

Should I define methods on values or pointers?

func (s *MyStruct) pointerMethod() { } // method on pointer
func (s MyStruct)  valueMethod()   { } // method on value

For programmers unaccustomed to pointers, the distinction between these two examples can be confusing, but the situation is actually very simple. When defining a method on a type, the receiver (s in the above examples) behaves exactly as if it were an argument to the method. Whether to define the receiver as a value or as a pointer is the same question, then, as whether a function argument should be a value or a pointer. There are several considerations.

First, and most important, does the method need to modify the receiver? If it does, the receiver must be a pointer. (Slices and maps act as references, so their story is a little more subtle, but for instance to change the length of a slice in a method the receiver must still be a pointer.) In the examples above, if pointerMethod modifies the fields of s, the caller will see those changes, but valueMethod is called with a copy of the caller's argument (that's the definition of passing a value), so changes it makes will be invisible to the caller.

By the way, pointer receivers are identical to the situation in Java, although in Java the pointers are hidden under the covers; it's Go's value receivers that are unusual.

Second is the consideration of efficiency. If the receiver is large, a big struct for instance, it will be much cheaper to use a pointer receiver.

Next is consistency. If some of the methods of the type must have pointer receivers, the rest should too, so the method set is consistent regardless of how the type is used. See the section on method sets for details.

For types such as basic types, slices, and small structs, a value receiver is very cheap so unless the semantics of the method requires a pointer, a value receiver is efficient and clear.

What's the difference between new and make?

In short: new allocates memory, make initializes the slice, map, and channel types.

See the relevant section of Effective Go for more details.

What is the size of an int on a 64 bit machine?

The sizes of int and uint are implementation-specific but the same as each other on a given platform. For portability, code that relies on a particular size of value should use an explicitly sized type, like int64. Prior to Go 1.1, the 64-bit Go compilers (both gc and gccgo) used a 32-bit representation for int. As of Go 1.1 they use a 64-bit representation. On the other hand, floating-point scalars and complex numbers are always sized: float32, complex64, etc., because programmers should be aware of precision when using floating-point numbers. The default size of a floating-point constant is float64.

How do I know whether a variable is allocated on the heap or the stack?

From a correctness standpoint, you don't need to know. Each variable in Go exists as long as there are references to it. The storage location chosen by the implementation is irrelevant to the semantics of the language.

The storage location does have an effect on writing efficient programs. When possible, the Go compilers will allocate variables that are local to a function in that function's stack frame. However, if the compiler cannot prove that the variable is not referenced after the function returns, then the compiler must allocate the variable on the garbage-collected heap to avoid dangling pointer errors. Also, if a local variable is very large, it might make more sense to store it on the heap rather than the stack.

In the current compilers, if a variable has its address taken, that variable is a candidate for allocation on the heap. However, a basic escape analysis recognizes some cases when such variables will not live past the return from the function and can reside on the stack.

Why does my Go process use so much virtual memory?

The Go memory allocator reserves a large region of virtual memory as an arena for allocations. This virtual memory is local to the specific Go process; the reservation does not deprive other processes of memory.

To find the amount of actual memory allocated to a Go process, use the Unix top command and consult the RES (Linux) or RSIZE (Mac OS X) columns.

Concurrency

What operations are atomic? What about mutexes?

We haven't fully defined it all yet, but some details about atomicity are available in the Go Memory Model specification.

Regarding mutexes, the sync package implements them, but we hope Go programming style will encourage people to try higher-level techniques. In particular, consider structuring your program so that only one goroutine at a time is ever responsible for a particular piece of data.

Do not communicate by sharing memory. Instead, share memory by communicating.

See the Share Memory By Communicating code walk and its associated article for a detailed discussion of this concept.

Why doesn't my multi-goroutine program use multiple CPUs?

You must set the GOMAXPROCS shell environment variable or use the similarly-named function of the runtime package to allow the run-time support to utilize more than one OS thread.

Programs that perform parallel computation should benefit from an increase in GOMAXPROCS. However, be aware that concurrency is not parallelism.

Why does using GOMAXPROCS > 1 sometimes make my program slower?

It depends on the nature of your program. Problems that are intrinsically sequential cannot be sped up by adding more goroutines. Concurrency only becomes parallelism when the problem is intrinsically parallel.

In practical terms, programs that spend more time communicating on channels than doing computation will experience performance degradation when using multiple OS threads. This is because sending data between threads involves switching contexts, which has significant cost. For instance, the prime sieve example from the Go specification has no significant parallelism although it launches many goroutines; increasing GOMAXPROCS is more likely to slow it down than to speed it up.

Go's goroutine scheduler is not as good as it needs to be. In future, it should recognize such cases and optimize its use of OS threads. For now, GOMAXPROCS should be set on a per-application basis.

For more detail on this topic see the talk entitled, Concurrency is not Parallelism.

Functions and Methods

Why do T and *T have different method sets?

From the Go Spec:

The method set of any other named type T consists of all methods with receiver type T. The method set of the corresponding pointer type *T is the set of all methods with receiver *T or T (that is, it also contains the method set of T).

If an interface value contains a pointer *T, a method call can obtain a value by dereferencing the pointer, but if an interface value contains a value T, there is no useful way for a method call to obtain a pointer.

Even in cases where the compiler could take the address of a value to pass to the method, if the method modifies the value the changes will be lost in the caller. As a common example, this code:

var buf bytes.Buffer
io.Copy(buf, os.Stdin)

would copy standard input into a copy of buf, not into buf itself. This is almost never the desired behavior.

What happens with closures running as goroutines?

Some confusion may arise when using closures with concurrency. Consider the following program:

func main() {
    done := make(chan bool)

    values := []string{"a", "b", "c"}
    for _, v := range values {
        go func() {
            fmt.Println(v)
            done <- true
        }()
    }

    // wait for all goroutines to complete before exiting
    for _ = range values {
        <-done
    }
}

One might mistakenly expect to see a, b, c as the output. What you'll probably see instead is c, c, c. This is because each iteration of the loop uses the same instance of the variable v, so each closure shares that single variable. When the closure runs, it prints the value of v at the time fmt.Println is executed, but v may have been modified since the goroutine was launched. To help detect this and other problems before they happen, run go vet.

To bind the current value of v to each closure as it is launched, one must modify the inner loop to create a new variable each iteration. One way is to pass the variable as an argument to the closure:

    for _, v := range values {
        go func(u string) {
            fmt.Println(u)
            done <- true
        }(v)
    }

In this example, the value of v is passed as an argument to the anonymous function. That value is then accessible inside the function as the variable u.

Even easier is just to create a new variable, using a declaration style that may seem odd but works fine in Go:

    for _, v := range values {
        v := v // create a new 'v'.
        go func() {
            fmt.Println(v)
            done <- true
        }()
    }

Control flow

Does Go have the ?: operator?

There is no ternary form in Go. You may use the following to achieve the same result:

if expr {
    n = trueVal
} else {
    n = falseVal
}

Packages and Testing

How do I create a multifile package?

Put all the source files for the package in a directory by themselves. Source files can refer to items from different files at will; there is no need for forward declarations or a header file.

Other than being split into multiple files, the package will compile and test just like a single-file package.

How do I write a unit test?

Create a new file ending in _test.go in the same directory as your package sources. Inside that file, import "testing" and write functions of the form

func TestFoo(t *testing.T) {
    ...
}

Run go test in that directory. That script finds the Test functions, builds a test binary, and runs it.

See the How to Write Go Code document, the testing package and the go test subcommand for more details.

Where is my favorite helper function for testing?

Go's standard testing package makes it easy to write unit tests, but it lacks features provided in other language's testing frameworks such as assertion functions. An earlier section of this document explained why Go doesn't have assertions, and the same arguments apply to the use of assert in tests. Proper error handling means letting other tests run after one has failed, so that the person debugging the failure gets a complete picture of what is wrong. It is more useful for a test to report that isPrime gives the wrong answer for 2, 3, 5, and 7 (or for 2, 4, 8, and 16) than to report that isPrime gives the wrong answer for 2 and therefore no more tests were run. The programmer who triggers the test failure may not be familiar with the code that fails. Time invested writing a good error message now pays off later when the test breaks.

A related point is that testing frameworks tend to develop into mini-languages of their own, with conditionals and controls and printing mechanisms, but Go already has all those capabilities; why recreate them? We'd rather write tests in Go; it's one fewer language to learn and the approach keeps the tests straightforward and easy to understand.

If the amount of extra code required to write good errors seems repetitive and overwhelming, the test might work better if table-driven, iterating over a list of inputs and outputs defined in a data structure (Go has excellent support for data structure literals). The work to write a good test and good error messages will then be amortized over many test cases. The standard Go library is full of illustrative examples, such as in the formatting tests for the fmt package.

Implementation

What compiler technology is used to build the compilers?

Gccgo has a front end written in C++, with a recursive descent parser coupled to the standard GCC back end. Gc is written in C using yacc/bison for the parser. Although it's a new program, it fits in the Plan 9 C compiler suite (http://plan9.bell-labs.com/sys/doc/compiler.html) and uses a variant of the Plan 9 loader to generate ELF/Mach-O/PE binaries.

We considered writing gc, the original Go compiler, in Go itself but elected not to do so because of the difficulties of bootstrapping and especially of open source distribution—you'd need a Go compiler to set up a Go environment. Gccgo, which came later, makes it possible to consider writing a compiler in Go, which might well happen. (Go would be a fine language in which to implement a compiler; a native lexer and parser are already available in the go package and a type checker is in the works.)

We also considered using LLVM for gc but we felt it was too large and slow to meet our performance goals.

How is the run-time support implemented?

Again due to bootstrapping issues, the run-time code is mostly in C (with a tiny bit of assembler) although Go is capable of implementing most of it now. Gccgo's run-time support uses glibc. Gc uses a custom library to keep the footprint under control; it is compiled with a version of the Plan 9 C compiler that supports resizable stacks for goroutines. The gccgo compiler implements these on Linux only, using a technique called segmented stacks, supported by recent modifications to the gold linker.

Why is my trivial program such a large binary?

The linkers in the gc tool chain (5l, 6l, and 8l) do static linking. All Go binaries therefore include the Go run-time, along with the run-time type information necessary to support dynamic type checks, reflection, and even panic-time stack traces.

A simple C "hello, world" program compiled and linked statically using gcc on Linux is around 750 kB, including an implementation of printf. An equivalent Go program using fmt.Printf is around 1.2 MB, but that includes more powerful run-time support.

Can I stop these complaints about my unused variable/import?

The presence of an unused variable may indicate a bug, while unused imports just slow down compilation. Accumulate enough unused imports in your code tree and things can get very slow. For these reasons, Go allows neither.

When developing code, it's common to create these situations temporarily and it can be annoying to have to edit them out before the program will compile.

Some have asked for a compiler option to turn those checks off or at least reduce them to warnings. Such an option has not been added, though, because compiler options should not affect the semantics of the language and because the Go compiler does not report warnings, only errors that prevent compilation.

There are two reasons for having no warnings. First, if it's worth complaining about, it's worth fixing in the code. (And if it's not worth fixing, it's not worth mentioning.) Second, having the compiler generate warnings encourages the implementation to warn about weak cases that can make compilation noisy, masking real errors that should be fixed.

It's easy to address the situation, though. Use the blank identifier to let unused things persist while you're developing.

import "unused"

// This declaration marks the import as used by referencing an
// item from the package.
var _ = unused.Item  // TODO: Delete before committing!

func main() {
    debugData := debug.Profile()
    _ = debugData // Used only during debugging.
    ....
}

Performance

Why does Go perform badly on benchmark X?

One of Go's design goals is to approach the performance of C for comparable programs, yet on some benchmarks it does quite poorly, including several in test/bench/shootout. The slowest depend on libraries for which versions of comparable performance are not available in Go. For instance, pidigits.go depends on a multi-precision math package, and the C versions, unlike Go's, use GMP (which is written in optimized assembler). Benchmarks that depend on regular expressions (regex-dna.go, for instance) are essentially comparing Go's native regexp package to mature, highly optimized regular expression libraries like PCRE.

Benchmark games are won by extensive tuning and the Go versions of most of the benchmarks need attention. If you measure comparable C and Go programs (reverse-complement.go is one example), you'll see the two languages are much closer in raw performance than this suite would indicate.

Still, there is room for improvement. The compilers are good but could be better, many libraries need major performance work, and the garbage collector isn't fast enough yet. (Even if it were, taking care not to generate unnecessary garbage can have a huge effect.)

In any case, Go can often be very competitive. There has been significant improvement in the performance of many programs as the language and tools have developed. See the blog post about profiling Go programs for an informative example.

Changes from C

Why is the syntax so different from C?

Other than declaration syntax, the differences are not major and stem from two desires. First, the syntax should feel light, without too many mandatory keywords, repetition, or arcana. Second, the language has been designed to be easy to analyze and can be parsed without a symbol table. This makes it much easier to build tools such as debuggers, dependency analyzers, automated documentation extractors, IDE plug-ins, and so on. C and its descendants are notoriously difficult in this regard.

Why are declarations backwards?

They're only backwards if you're used to C. In C, the notion is that a variable is declared like an expression denoting its type, which is a nice idea, but the type and expression grammars don't mix very well and the results can be confusing; consider function pointers. Go mostly separates expression and type syntax and that simplifies things (using prefix * for pointers is an exception that proves the rule). In C, the declaration

    int* a, b;

declares a to be a pointer but not b; in Go

    var a, b *int

declares both to be pointers. This is clearer and more regular. Also, the := short declaration form argues that a full variable declaration should present the same order as := so

    var a uint64 = 1

has the same effect as

    a := uint64(1)

Parsing is also simplified by having a distinct grammar for types that is not just the expression grammar; keywords such as func and chan keep things clear.

See the article about Go's Declaration Syntax for more details.

Why is there no pointer arithmetic?

Safety. Without pointer arithmetic it's possible to create a language that can never derive an illegal address that succeeds incorrectly. Compiler and hardware technology have advanced to the point where a loop using array indices can be as efficient as a loop using pointer arithmetic. Also, the lack of pointer arithmetic can simplify the implementation of the garbage collector.

Why are ++ and -- statements and not expressions? And why postfix, not prefix?

Without pointer arithmetic, the convenience value of pre- and postfix increment operators drops. By removing them from the expression hierarchy altogether, expression syntax is simplified and the messy issues around order of evaluation of ++ and -- (consider f(i++) and p[i] = q[++i]) are eliminated as well. The simplification is significant. As for postfix vs. prefix, either would work fine but the postfix version is more traditional; insistence on prefix arose with the STL, a library for a language whose name contains, ironically, a postfix increment.

Why are there braces but no semicolons? And why can't I put the opening brace on the next line?

Go uses brace brackets for statement grouping, a syntax familiar to programmers who have worked with any language in the C family. Semicolons, however, are for parsers, not for people, and we wanted to eliminate them as much as possible. To achieve this goal, Go borrows a trick from BCPL: the semicolons that separate statements are in the formal grammar but are injected automatically, without lookahead, by the lexer at the end of any line that could be the end of a statement. This works very well in practice but has the effect that it forces a brace style. For instance, the opening brace of a function cannot appear on a line by itself.

Some have argued that the lexer should do lookahead to permit the brace to live on the next line. We disagree. Since Go code is meant to be formatted automatically by gofmt, some style must be chosen. That style may differ from what you've used in C or Java, but Go is a new language and gofmt's style is as good as any other. More important—much more important—the advantages of a single, programmatically mandated format for all Go programs greatly outweigh any perceived disadvantages of the particular style. Note too that Go's style means that an interactive implementation of Go can use the standard syntax one line at a time without special rules.

Why do garbage collection? Won't it be too expensive?

One of the biggest sources of bookkeeping in systems programs is memory management. We feel it's critical to eliminate that programmer overhead, and advances in garbage collection technology in the last few years give us confidence that we can implement it with low enough overhead and no significant latency.

Another point is that a large part of the difficulty of concurrent and multi-threaded programming is memory management; as objects get passed among threads it becomes cumbersome to guarantee they become freed safely. Automatic garbage collection makes concurrent code far easier to write. Of course, implementing garbage collection in a concurrent environment is itself a challenge, but meeting it once rather than in every program helps everyone.

Finally, concurrency aside, garbage collection makes interfaces simpler because they don't need to specify how memory is managed across them.

The current implementation is a parallel mark-and-sweep collector but a future version might take a different approach.

On the topic of performance, keep in mind that Go gives the programmer considerable control over memory layout and allocation, much more than is typical in garbage-collected languages. A careful programmer can reduce the garbage collection overhead dramatically by using the language well; see the article about profiling Go programs for a worked example, including a demonstration of Go's profiling tools.

go/doc/go_mem.html0100644000000000000000000003123212412656734014373 0ustar00rootroot00000000000000

Introduction

The Go memory model specifies the conditions under which reads of a variable in one goroutine can be guaranteed to observe values produced by writes to the same variable in a different goroutine.

Happens Before

Within a single goroutine, reads and writes must behave as if they executed in the order specified by the program. That is, compilers and processors may reorder the reads and writes executed within a single goroutine only when the reordering does not change the behavior within that goroutine as defined by the language specification. Because of this reordering, the execution order observed by one goroutine may differ from the order perceived by another. For example, if one goroutine executes a = 1; b = 2;, another might observe the updated value of b before the updated value of a.

To specify the requirements of reads and writes, we define happens before, a partial order on the execution of memory operations in a Go program. If event e1 happens before event e2, then we say that e2 happens after e1. Also, if e1 does not happen before e2 and does not happen after e2, then we say that e1 and e2 happen concurrently.

Within a single goroutine, the happens-before order is the order expressed by the program.

A read r of a variable v is allowed to observe a write w to v if both of the following hold:

  1. r does not happen before w.
  2. There is no other write w' to v that happens after w but before r.

To guarantee that a read r of a variable v observes a particular write w to v, ensure that w is the only write r is allowed to observe. That is, r is guaranteed to observe w if both of the following hold:

  1. w happens before r.
  2. Any other write to the shared variable v either happens before w or after r.

This pair of conditions is stronger than the first pair; it requires that there are no other writes happening concurrently with w or r.

Within a single goroutine, there is no concurrency, so the two definitions are equivalent: a read r observes the value written by the most recent write w to v. When multiple goroutines access a shared variable v, they must use synchronization events to establish happens-before conditions that ensure reads observe the desired writes.

The initialization of variable v with the zero value for v's type behaves as a write in the memory model.

Reads and writes of values larger than a single machine word behave as multiple machine-word-sized operations in an unspecified order.

Synchronization

Initialization

Program initialization runs in a single goroutine, but that goroutine may create other goroutines, which run concurrently.

If a package p imports package q, the completion of q's init functions happens before the start of any of p's.

The start of the function main.main happens after all init functions have finished.

Goroutine creation

The go statement that starts a new goroutine happens before the goroutine's execution begins.

For example, in this program:

var a string

func f() {
	print(a)
}

func hello() {
	a = "hello, world"
	go f()
}

calling hello will print "hello, world" at some point in the future (perhaps after hello has returned).

Goroutine destruction

The exit of a goroutine is not guaranteed to happen before any event in the program. For example, in this program:

var a string

func hello() {
	go func() { a = "hello" }()
	print(a)
}

the assignment to a is not followed by any synchronization event, so it is not guaranteed to be observed by any other goroutine. In fact, an aggressive compiler might delete the entire go statement.

If the effects of a goroutine must be observed by another goroutine, use a synchronization mechanism such as a lock or channel communication to establish a relative ordering.

Channel communication

Channel communication is the main method of synchronization between goroutines. Each send on a particular channel is matched to a corresponding receive from that channel, usually in a different goroutine.

A send on a channel happens before the corresponding receive from that channel completes.

This program:

var c = make(chan int, 10)
var a string

func f() {
	a = "hello, world"
	c <- 0
}

func main() {
	go f()
	<-c
	print(a)
}

is guaranteed to print "hello, world". The write to a happens before the send on c, which happens before the corresponding receive on c completes, which happens before the print.

The closing of a channel happens before a receive that returns a zero value because the channel is closed.

In the previous example, replacing c <- 0 with close(c) yields a program with the same guaranteed behavior.

A receive from an unbuffered channel happens before the send on that channel completes.

This program (as above, but with the send and receive statements swapped and using an unbuffered channel):

var c = make(chan int)
var a string

func f() {
	a = "hello, world"
	<-c
}
func main() {
	go f()
	c <- 0
	print(a)
}

is also guaranteed to print "hello, world". The write to a happens before the receive on c, which happens before the corresponding send on c completes, which happens before the print.

If the channel were buffered (e.g., c = make(chan int, 1)) then the program would not be guaranteed to print "hello, world". (It might print the empty string, crash, or do something else.)

The kth receive on a channel with capacity C happens before the k+Cth send from that channel completes.

This rule generalizes the previous rule to buffered channels. It allows a counting semaphore to be modeled by a buffered channel: the number of items in the channel corresponds to the number of active uses, the capacity of the channel corresponds to the maximum number of simultaneous uses, sending an item acquires the semaphore, and receiving an item releases the semaphore. This is a common idiom for limiting concurrency.

This program starts a goroutine for every entry in the work list, but the goroutines coordinate using the limit channel to ensure that at most three are running work functions at a time.

var limit = make(chan int, 3)

func main() {
	for _, w := range work {
		go func() {
			limit <- 1
			w()
			<-limit
		}()
	}
	select{}
}

Locks

The sync package implements two lock data types, sync.Mutex and sync.RWMutex.

For any sync.Mutex or sync.RWMutex variable l and n < m, call n of l.Unlock() happens before call m of l.Lock() returns.

This program:

var l sync.Mutex
var a string

func f() {
	a = "hello, world"
	l.Unlock()
}

func main() {
	l.Lock()
	go f()
	l.Lock()
	print(a)
}

is guaranteed to print "hello, world". The first call to l.Unlock() (in f) happens before the second call to l.Lock() (in main) returns, which happens before the print.

For any call to l.RLock on a sync.RWMutex variable l, there is an n such that the l.RLock happens (returns) after call n to l.Unlock and the matching l.RUnlock happens before call n+1 to l.Lock.

Once

The sync package provides a safe mechanism for initialization in the presence of multiple goroutines through the use of the Once type. Multiple threads can execute once.Do(f) for a particular f, but only one will run f(), and the other calls block until f() has returned.

A single call of f() from once.Do(f) happens (returns) before any call of once.Do(f) returns.

In this program:

var a string
var once sync.Once

func setup() {
	a = "hello, world"
}

func doprint() {
	once.Do(setup)
	print(a)
}

func twoprint() {
	go doprint()
	go doprint()
}

calling twoprint causes "hello, world" to be printed twice. The first call to doprint runs setup once.

Incorrect synchronization

Note that a read r may observe the value written by a write w that happens concurrently with r. Even if this occurs, it does not imply that reads happening after r will observe writes that happened before w.

In this program:

var a, b int

func f() {
	a = 1
	b = 2
}

func g() {
	print(b)
	print(a)
}

func main() {
	go f()
	g()
}

it can happen that g prints 2 and then 0.

This fact invalidates a few common idioms.

Double-checked locking is an attempt to avoid the overhead of synchronization. For example, the twoprint program might be incorrectly written as:

var a string
var done bool

func setup() {
	a = "hello, world"
	done = true
}

func doprint() {
	if !done {
		once.Do(setup)
	}
	print(a)
}

func twoprint() {
	go doprint()
	go doprint()
}

but there is no guarantee that, in doprint, observing the write to done implies observing the write to a. This version can (incorrectly) print an empty string instead of "hello, world".

Another incorrect idiom is busy waiting for a value, as in:

var a string
var done bool

func setup() {
	a = "hello, world"
	done = true
}

func main() {
	go setup()
	for !done {
	}
	print(a)
}

As before, there is no guarantee that, in main, observing the write to done implies observing the write to a, so this program could print an empty string too. Worse, there is no guarantee that the write to done will ever be observed by main, since there are no synchronization events between the two threads. The loop in main is not guaranteed to finish.

There are subtler variants on this theme, such as this program.

type T struct {
	msg string
}

var g *T

func setup() {
	t := new(T)
	t.msg = "hello, world"
	g = t
}

func main() {
	go setup()
	for g == nil {
	}
	print(g.msg)
}

Even if main observes g != nil and exits its loop, there is no guarantee that it will observe the initialized value for g.msg.

In all these examples, the solution is the same: use explicit synchronization.

go/doc/go_spec.html0100644000000000000000000056474212412656737014573 0ustar00rootroot00000000000000

Introduction

This is a reference manual for the Go programming language. For more information and other documents, see golang.org.

Go is a general-purpose language designed with systems programming in mind. It is strongly typed and garbage-collected and has explicit support for concurrent programming. Programs are constructed from packages, whose properties allow efficient management of dependencies. The existing implementations use a traditional compile/link model to generate executable binaries.

The grammar is compact and regular, allowing for easy analysis by automatic tools such as integrated development environments.

Notation

The syntax is specified using Extended Backus-Naur Form (EBNF):

Production  = production_name "=" [ Expression ] "." .
Expression  = Alternative { "|" Alternative } .
Alternative = Term { Term } .
Term        = production_name | token [ "…" token ] | Group | Option | Repetition .
Group       = "(" Expression ")" .
Option      = "[" Expression "]" .
Repetition  = "{" Expression "}" .

Productions are expressions constructed from terms and the following operators, in increasing precedence:

|   alternation
()  grouping
[]  option (0 or 1 times)
{}  repetition (0 to n times)

Lower-case production names are used to identify lexical tokens. Non-terminals are in CamelCase. Lexical tokens are enclosed in double quotes "" or back quotes ``.

The form a … b represents the set of characters from a through b as alternatives. The horizontal ellipsis is also used elsewhere in the spec to informally denote various enumerations or code snippets that are not further specified. The character (as opposed to the three characters ...) is not a token of the Go language.

Source code representation

Source code is Unicode text encoded in UTF-8. The text is not canonicalized, so a single accented code point is distinct from the same character constructed from combining an accent and a letter; those are treated as two code points. For simplicity, this document will use the unqualified term character to refer to a Unicode code point in the source text.

Each code point is distinct; for instance, upper and lower case letters are different characters.

Implementation restriction: For compatibility with other tools, a compiler may disallow the NUL character (U+0000) in the source text.

Implementation restriction: For compatibility with other tools, a compiler may ignore a UTF-8-encoded byte order mark (U+FEFF) if it is the first Unicode code point in the source text. A byte order mark may be disallowed anywhere else in the source.

Characters

The following terms are used to denote specific Unicode character classes:

newline        = /* the Unicode code point U+000A */ .
unicode_char   = /* an arbitrary Unicode code point except newline */ .
unicode_letter = /* a Unicode code point classified as "Letter" */ .
unicode_digit  = /* a Unicode code point classified as "Decimal Digit" */ .

In The Unicode Standard 6.3, Section 4.5 "General Category" defines a set of character categories. Go treats those characters in category Lu, Ll, Lt, Lm, or Lo as Unicode letters, and those in category Nd as Unicode digits.

Letters and digits

The underscore character _ (U+005F) is considered a letter.

letter        = unicode_letter | "_" .
decimal_digit = "0" … "9" .
octal_digit   = "0" … "7" .
hex_digit     = "0" … "9" | "A" … "F" | "a" … "f" .

Lexical elements

Comments

There are two forms of comments:

  1. Line comments start with the character sequence // and stop at the end of the line. A line comment acts like a newline.
  2. General comments start with the character sequence /* and continue through the character sequence */. A general comment containing one or more newlines acts like a newline, otherwise it acts like a space.

Comments do not nest.

Tokens

Tokens form the vocabulary of the Go language. There are four classes: identifiers, keywords, operators and delimiters, and literals. White space, formed from spaces (U+0020), horizontal tabs (U+0009), carriage returns (U+000D), and newlines (U+000A), is ignored except as it separates tokens that would otherwise combine into a single token. Also, a newline or end of file may trigger the insertion of a semicolon. While breaking the input into tokens, the next token is the longest sequence of characters that form a valid token.

Semicolons

The formal grammar uses semicolons ";" as terminators in a number of productions. Go programs may omit most of these semicolons using the following two rules:

  1. 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

  2. To allow complex statements to occupy a single line, a semicolon may be omitted before a closing ")" or "}".

To reflect idiomatic use, code examples in this document elide semicolons using these rules.

Identifiers

Identifiers name program entities such as variables and types. An identifier is a sequence of one or more letters and digits. The first character in an identifier must be a letter.

identifier = letter { letter | unicode_digit } .
a
_x9
ThisVariableIsExported
αβ

Some identifiers are predeclared.

Keywords

The following keywords are reserved and may not be used as identifiers.

break        default      func         interface    select
case         defer        go           map          struct
chan         else         goto         package      switch
const        fallthrough  if           range        type
continue     for          import       return       var

Operators and Delimiters

The following character sequences represent operators, delimiters, and other special tokens:

+    &     +=    &=     &&    ==    !=    (    )
-    |     -=    |=     ||    <     <=    [    ]
*    ^     *=    ^=     <-    >     >=    {    }
/    <<    /=    <<=    ++    =     :=    ,    ;
%    >>    %=    >>=    --    !     ...   .    :
     &^          &^=

Integer literals

An integer literal is a sequence of digits representing an integer constant. An optional prefix sets a non-decimal base: 0 for octal, 0x or 0X for hexadecimal. In hexadecimal literals, letters a-f and A-F represent values 10 through 15.

int_lit     = decimal_lit | octal_lit | hex_lit .
decimal_lit = ( "1" … "9" ) { decimal_digit } .
octal_lit   = "0" { octal_digit } .
hex_lit     = "0" ( "x" | "X" ) hex_digit { hex_digit } .
42
0600
0xBadFace
170141183460469231731687303715884105727

Floating-point literals

A floating-point literal is a decimal representation of a floating-point constant. It has an integer part, a decimal point, a fractional part, and an exponent part. The integer and fractional part comprise decimal digits; the exponent part is an e or E followed by an optionally signed decimal exponent. One of the integer part or the fractional part may be elided; one of the decimal point or the exponent may be elided.

float_lit = decimals "." [ decimals ] [ exponent ] |
            decimals exponent |
            "." decimals [ exponent ] .
decimals  = decimal_digit { decimal_digit } .
exponent  = ( "e" | "E" ) [ "+" | "-" ] decimals .
0.
72.40
072.40  // == 72.40
2.71828
1.e+0
6.67428e-11
1E6
.25
.12345E+5

Imaginary literals

An imaginary literal is a decimal representation of the imaginary part of a complex constant. It consists of a floating-point literal or decimal integer followed by the lower-case letter i.

imaginary_lit = (decimals | float_lit) "i" .
0i
011i  // == 11i
0.i
2.71828i
1.e+0i
6.67428e-11i
1E6i
.25i
.12345E+5i

Rune literals

A rune literal represents a rune constant, 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 of the character itself, while multi-character sequences beginning with a backslash encode values in various formats.

The simplest form represents the single character within the quotes; since Go source text is Unicode characters encoded in UTF-8, multiple UTF-8-encoded bytes may represent a single integer value. For instance, the literal 'a' holds a single byte representing a literal a, Unicode U+0061, value 0x61, while 'ä' holds two bytes (0xc3 0xa4) representing a literal a-dieresis, U+00E4, value 0xe4.

Several backslash escapes allow arbitrary values to be encoded as ASCII text. There are four ways to represent the integer value as a numeric constant: \x followed by exactly two hexadecimal digits; \u followed by exactly four hexadecimal digits; \U followed by exactly eight hexadecimal digits, and a plain backslash \ followed by exactly three octal digits. In each case the value of the literal is the value represented by the digits in the corresponding base.

Although these representations all result in an integer, they have different valid ranges. Octal escapes must represent a value between 0 and 255 inclusive. Hexadecimal escapes satisfy this condition by construction. The escapes \u and \U represent Unicode code points so within them some values are illegal, in particular those above 0x10FFFF and surrogate halves.

After a backslash, certain single-character escapes represent special values:

\a   U+0007 alert or bell
\b   U+0008 backspace
\f   U+000C form feed
\n   U+000A line feed or newline
\r   U+000D carriage return
\t   U+0009 horizontal tab
\v   U+000b vertical tab
\\   U+005c backslash
\'   U+0027 single quote  (valid escape only within rune literals)
\"   U+0022 double quote  (valid escape only within string literals)

All other sequences starting with a backslash are illegal inside rune literals.

rune_lit         = "'" ( unicode_value | byte_value ) "'" .
unicode_value    = unicode_char | little_u_value | big_u_value | escaped_char .
byte_value       = octal_byte_value | hex_byte_value .
octal_byte_value = `\` octal_digit octal_digit octal_digit .
hex_byte_value   = `\` "x" hex_digit hex_digit .
little_u_value   = `\` "u" hex_digit hex_digit hex_digit hex_digit .
big_u_value      = `\` "U" hex_digit hex_digit hex_digit hex_digit
                           hex_digit hex_digit hex_digit hex_digit .
escaped_char     = `\` ( "a" | "b" | "f" | "n" | "r" | "t" | "v" | `\` | "'" | `"` ) .
'a'
'ä'
'本'
'\t'
'\000'
'\007'
'\377'
'\x07'
'\xff'
'\u12e4'
'\U00101234'
'aa'         // illegal: too many characters
'\xa'        // illegal: too few hexadecimal digits
'\0'         // illegal: too few octal digits
'\uDFFF'     // illegal: surrogate half
'\U00110000' // illegal: invalid Unicode code point

String literals

A string literal represents a string constant obtained from concatenating a sequence of characters. There are two forms: raw string literals and interpreted string literals.

Raw string literals are character sequences between back quotes ``. Within the quotes, any character is legal 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; in particular, backslashes have no special meaning and the string may contain newlines. Carriage return characters ('\r') inside raw string literals are discarded from the raw string value.

Interpreted string literals are character sequences between double quotes "". The text between the quotes, which may not contain newlines, forms the value of the literal, with backslash escapes interpreted as they are in rune literals (except that \' is illegal and \" is legal), with the same restrictions. The three-digit octal (\nnn) and two-digit hexadecimal (\xnn) escapes represent individual bytes of the resulting string; all other escapes represent the (possibly multi-byte) UTF-8 encoding of individual characters. Thus inside a string literal \377 and \xFF represent a single byte of value 0xFF=255, while ÿ, \u00FF, \U000000FF and \xc3\xbf represent the two bytes 0xc3 0xbf of the UTF-8 encoding of character U+00FF.

string_lit             = raw_string_lit | interpreted_string_lit .
raw_string_lit         = "`" { unicode_char | newline } "`" .
interpreted_string_lit = `"` { unicode_value | byte_value } `"` .
`abc`  // same as "abc"
`\n
\n`    // same as "\\n\n\\n"
"\n"
""
"Hello, world!\n"
"日本語"
"\u65e5本\U00008a9e"
"\xff\u00FF"
"\uD800"       // illegal: surrogate half
"\U00110000"   // illegal: invalid Unicode code point

These examples all represent the same string:

"日本語"                                 // UTF-8 input text
`日本語`                                 // UTF-8 input text as a raw literal
"\u65e5\u672c\u8a9e"                    // the explicit Unicode code points
"\U000065e5\U0000672c\U00008a9e"        // the explicit Unicode code points
"\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e"  // the explicit UTF-8 bytes

If the source code represents a character as two code points, such as a combining form involving an accent and a letter, the result will be an error if placed in a rune literal (it is not a single code point), and will appear as two code points if placed in a string literal.

Constants

There are boolean constants, rune constants, integer constants, floating-point constants, complex constants, and string constants. Rune, integer, floating-point, and complex constants are collectively called numeric constants.

A constant value is represented by a rune, integer, floating-point, imaginary, or string literal, an identifier denoting a constant, a constant expression, a conversion with a result that is a constant, or the result value of some built-in functions such as unsafe.Sizeof applied to any value, cap or len applied to some expressions, real and imag applied to a complex constant and complex applied to numeric constants. The boolean truth values are represented by the predeclared constants true and false. The predeclared identifier iota denotes an integer constant.

In general, complex constants are a form of constant expression and are discussed in that section.

Numeric constants represent values of arbitrary precision and do not overflow.

Constants may be typed or untyped. Literal constants, true, false, iota, and certain constant expressions containing only untyped constant operands are untyped.

A constant may be given a type explicitly by a constant declaration or conversion, or implicitly when used in a variable declaration or an assignment or as an operand in an expression. It is an error if the constant value cannot be represented as a value of the respective type. For instance, 3.0 can be given any integer or any floating-point type, while 2147483648.0 (equal to 1<<31) can be given the types float32, float64, or uint32 but not int32 or string.

There are no constants denoting the IEEE-754 infinity and not-a-number values, but the math package's Inf, NaN, IsInf, and IsNaN functions return and test for those values at run time.

Implementation restriction: Although numeric constants have arbitrary precision in the language, a compiler may implement them using an internal representation with limited precision. That said, every implementation must:

  • Represent integer constants with at least 256 bits.
  • Represent floating-point constants, including the parts of a complex constant, with a mantissa of at least 256 bits and a signed exponent of at least 32 bits.
  • Give an error if unable to represent an integer constant precisely.
  • Give an error if unable to represent a floating-point or complex constant due to overflow.
  • Round to the nearest representable constant if unable to represent a floating-point or complex constant due to limits on precision.

These requirements apply both to literal constants and to the result of evaluating constant expressions.

Types

A type determines the set of values and operations specific to values of that type. Types may be named or unnamed. Named types are specified by a (possibly qualified) type name; unnamed types are specified using a type literal, which composes a new type from existing types.

Type      = TypeName | TypeLit | "(" Type ")" .
TypeName  = identifier | QualifiedIdent .
TypeLit   = ArrayType | StructType | PointerType | FunctionType | InterfaceType |
	    SliceType | MapType | ChannelType .

Named instances of the boolean, numeric, and string types are predeclared. Composite types—array, struct, pointer, function, interface, slice, map, and channel types—may be constructed using type literals.

The static type (or just type) of a variable is the type defined by its declaration. Variables of interface type also have a distinct dynamic type, which is the actual type of the value stored in the variable at run time. The dynamic type may vary during execution but is always assignable to the static type of the interface variable. For non-interface types, the dynamic type is always the static type.

Each type T has an underlying type: If T is one of the predeclared boolean, numeric, or string types, or a type literal, the corresponding underlying type is T itself. Otherwise, T's underlying type is the underlying type of the type to which T refers in its type declaration.

   type T1 string
   type T2 T1
   type T3 []T1
   type T4 T3

The underlying type of string, T1, and T2 is string. The underlying type of []T1, T3, and T4 is []T1.

Method sets

A type may have a method set associated with it. The method set of an interface type is its interface. The method set of any other type T consists of all methods declared with receiver type T. The method set of the corresponding pointer type *T is the set of all methods declared with receiver *T or T (that is, it also contains the method set of T). Further rules apply to structs containing anonymous fields, as described in the section on struct types. Any other type has an empty method set. In a method set, each method must have a unique non-blank method name.

The method set of a type determines the interfaces that the type implements and the methods that can be called using a receiver of that type.

Boolean types

A boolean type represents the set of Boolean truth values denoted by the predeclared constants true and false. The predeclared boolean type is bool.

Numeric types

A numeric type represents sets of integer or floating-point values. The predeclared architecture-independent numeric types are:

uint8       the set of all unsigned  8-bit integers (0 to 255)
uint16      the set of all unsigned 16-bit integers (0 to 65535)
uint32      the set of all unsigned 32-bit integers (0 to 4294967295)
uint64      the set of all unsigned 64-bit integers (0 to 18446744073709551615)

int8        the set of all signed  8-bit integers (-128 to 127)
int16       the set of all signed 16-bit integers (-32768 to 32767)
int32       the set of all signed 32-bit integers (-2147483648 to 2147483647)
int64       the set of all signed 64-bit integers (-9223372036854775808 to 9223372036854775807)

float32     the set of all IEEE-754 32-bit floating-point numbers
float64     the set of all IEEE-754 64-bit floating-point numbers

complex64   the set of all complex numbers with float32 real and imaginary parts
complex128  the set of all complex numbers with float64 real and imaginary parts

byte        alias for uint8
rune        alias for int32

The value of an n-bit integer is n bits wide and represented using two's complement arithmetic.

There is also a set of predeclared numeric types with implementation-specific sizes:

uint     either 32 or 64 bits
int      same size as uint
uintptr  an unsigned integer large enough to store the uninterpreted bits of a pointer value

To avoid portability issues all numeric types are distinct except byte, which is an alias for uint8, and rune, which is an alias for int32. Conversions are required when different numeric types are mixed in an expression or assignment. For instance, int32 and int are not the same type even though they may have the same size on a particular architecture.

String types

A string type represents the set of string values. A string value is a (possibly empty) sequence of bytes. Strings are immutable: once created, it is impossible to change the contents of a string. The predeclared string type is string.

The length of a string s (its size in bytes) can be discovered using the built-in function len. The length is a compile-time constant if the string is a constant. A string's bytes can be accessed by integer indices 0 through len(s)-1. It is illegal to take the address of such an element; if s[i] is the i'th byte of a string, &s[i] is invalid.

Array types

An array is a numbered sequence of elements of a single type, called the element type. The number of elements is called the length and is never negative.

ArrayType   = "[" ArrayLength "]" ElementType .
ArrayLength = Expression .
ElementType = Type .

The length is part of the array's type; it must evaluate to a non-negative constant representable by a value of type int. The length of array a can be discovered using the built-in function len. The elements can be addressed by integer indices 0 through len(a)-1. Array types are always one-dimensional but may be composed to form multi-dimensional types.

[32]byte
[2*N] struct { x, y int32 }
[1000]*float64
[3][5]int
[2][2][2]float64  // same as [2]([2]([2]float64))

Slice types

A slice is a descriptor for a contiguous segment of an underlying array and provides access to a numbered sequence of elements from that array. A slice type denotes the set of all slices of arrays of its element type. The value of an uninitialized slice is nil.

SliceType = "[" "]" ElementType .

Like arrays, slices are indexable and have a length. The length of a slice s can be discovered by the built-in function len; unlike with arrays it may change during execution. The elements can be addressed by integer indices 0 through len(s)-1. The slice index of a given element may be less than the index of the same element in the underlying array.

A slice, once initialized, is always associated with an underlying array that holds its elements. A slice therefore shares storage with its array and with other slices of the same array; by contrast, distinct arrays always represent distinct storage.

The array underlying a slice may extend past the end of the slice. The capacity is a measure of that extent: it is the sum of the length of the slice and the length of the array beyond the slice; a slice of length up to that capacity can be created by slicing a new one from the original slice. The capacity of a slice a can be discovered using the built-in function cap(a).

A new, initialized slice value for a given element type T is made using the built-in function make, which takes a slice type and parameters specifying the length and optionally the capacity. A slice created with make always allocates a new, hidden array to which the returned slice value refers. That is, executing

make([]T, length, capacity)

produces the same slice as allocating an array and slicing it, so these two expressions are equivalent:

make([]int, 50, 100)
new([100]int)[0:50]

Like arrays, slices are always one-dimensional but may be composed to construct higher-dimensional objects. With arrays of arrays, the inner arrays are, by construction, always the same length; however with slices of slices (or arrays of slices), the inner lengths may vary dynamically. Moreover, the inner slices must be initialized individually.

Struct types

A struct is a sequence of named elements, called fields, each of which has a name and a type. Field names may be specified explicitly (IdentifierList) or implicitly (AnonymousField). Within a struct, non-blank field names must be unique.

StructType     = "struct" "{" { FieldDecl ";" } "}" .
FieldDecl      = (IdentifierList Type | AnonymousField) [ Tag ] .
AnonymousField = [ "*" ] TypeName .
Tag            = string_lit .
// An empty struct.
struct {}

// A struct with 6 fields.
struct {
	x, y int
	u float32
	_ float32  // padding
	A *[]int
	F func()
}

A field declared with a type but no explicit field name is an anonymous field, also called an embedded field or an embedding of the type in the struct. An embedded type must be specified as a type name T or as a pointer to a non-interface type name *T, and T itself may not be a pointer type. The unqualified type name acts as the field name.

// A struct with four anonymous fields of type T1, *T2, P.T3 and *P.T4
struct {
	T1        // field name is T1
	*T2       // field name is T2
	P.T3      // field name is T3
	*P.T4     // field name is T4
	x, y int  // field names are x and y
}

The following declaration is illegal because field names must be unique in a struct type:

struct {
	T     // conflicts with anonymous field *T and *P.T
	*T    // conflicts with anonymous field T and *P.T
	*P.T  // conflicts with anonymous field T and *T
}

A field or method f of an anonymous field in a struct x is called promoted if x.f is a legal selector that denotes that field or method f.

Promoted fields act like ordinary fields of a struct except that they cannot be used as field names in composite literals of the struct.

Given a struct type S and a type named T, promoted methods are included in the method set of the struct as follows:

  • If S contains an anonymous field T, the method sets of S and *S both include promoted methods with receiver T. The method set of *S also includes promoted methods with receiver *T.
  • If S contains an anonymous field *T, the method sets of S and *S both include promoted methods with receiver T or *T.

A field declaration may be followed by an optional string literal tag, which becomes an attribute for all the fields in the corresponding field declaration. The tags are made visible through a reflection interface and take part in type identity for structs but are otherwise ignored.

// A struct corresponding to the TimeStamp protocol buffer.
// The tag strings define the protocol buffer field numbers.
struct {
	microsec  uint64 "field 1"
	serverIP6 uint64 "field 2"
	process   string "field 3"
}

Pointer types

A pointer type denotes the set of all pointers to variables of a given type, called the base type of the pointer. The value of an uninitialized pointer is nil.

PointerType = "*" BaseType .
BaseType = Type .
*Point
*[4]int

Function types

A function type denotes the set of all functions with the same parameter and result types. The value of an uninitialized variable of function type is nil.

FunctionType   = "func" Signature .
Signature      = Parameters [ Result ] .
Result         = Parameters | Type .
Parameters     = "(" [ ParameterList [ "," ] ] ")" .
ParameterList  = ParameterDecl { "," ParameterDecl } .
ParameterDecl  = [ IdentifierList ] [ "..." ] Type .

Within a list of parameters or results, the names (IdentifierList) must either all be present or all be absent. If present, each name stands for one item (parameter or result) of the specified type and all non-blank names in the signature must be unique. If absent, each type stands for one item of that type. Parameter and result lists are always parenthesized except that if there is exactly one unnamed result it may be written as an unparenthesized type.

The final parameter in a function signature may have a type prefixed with .... A function with such a parameter is called variadic and may be invoked with zero or more arguments for that parameter.

func()
func(x int) int
func(a, _ int, z float32) bool
func(a, b int, z float32) (bool)
func(prefix string, values ...int)
func(a, b int, z float64, opt ...interface{}) (success bool)
func(int, int, float64) (float64, *[]int)
func(n int) func(p *T)

Interface types

An interface type specifies a method set called its interface. A variable of interface type can store a value of any type with a method set that is any superset of the interface. Such a type is said to implement the interface. The value of an uninitialized variable of interface type is nil.

InterfaceType      = "interface" "{" { MethodSpec ";" } "}" .
MethodSpec         = MethodName Signature | InterfaceTypeName .
MethodName         = identifier .
InterfaceTypeName  = TypeName .

As with all method sets, in an interface type, each method must have a unique non-blank name.

// A simple File interface
interface {
	Read(b Buffer) bool
	Write(b Buffer) bool
	Close()
}

More than one type may implement an interface. For instance, if two types S1 and S2 have the method set

func (p T) Read(b Buffer) bool { return … }
func (p T) Write(b Buffer) bool { return … }
func (p T) Close() { … }

(where T stands for either S1 or S2) then the File interface is implemented by both S1 and S2, regardless of what other methods S1 and S2 may have or share.

A type implements any interface comprising any subset of its methods and may therefore implement several distinct interfaces. For instance, all types implement the empty interface:

interface{}

Similarly, consider this interface specification, which appears within a type declaration to define an interface called Lock:

type Lock interface {
	Lock()
	Unlock()
}

If S1 and S2 also implement

func (p T) Lock() { … }
func (p T) Unlock() { … }

they implement the Lock interface as well as the File interface.

An interface may use an interface type name T in place of a method specification. The effect, called embedding an interface, is equivalent to enumerating the methods of T explicitly in the interface.

type ReadWrite interface {
	Read(b Buffer) bool
	Write(b Buffer) bool
}

type File interface {
	ReadWrite  // same as enumerating the methods in ReadWrite
	Lock       // same as enumerating the methods in Lock
	Close()
}

An interface type T may not embed itself or any interface type that embeds T, recursively.

// illegal: Bad cannot embed itself
type Bad interface {
	Bad
}

// illegal: Bad1 cannot embed itself using Bad2
type Bad1 interface {
	Bad2
}
type Bad2 interface {
	Bad1
}

Map types

A map is an unordered group of elements of one type, called the element type, indexed by a set of unique keys of another type, called the key type. The value of an uninitialized map is nil.

MapType     = "map" "[" KeyType "]" ElementType .
KeyType     = Type .

The comparison operators == and != must be fully defined for operands of the key type; thus the key type must not be a function, map, or slice. If the key type is an interface type, these comparison operators must be defined for the dynamic key values; failure will cause a run-time panic.

map[string]int
map[*T]struct{ x, y float64 }
map[string]interface{}

The number of map elements is called its length. For a map m, it can be discovered using the built-in function len and may change during execution. Elements may be added during execution using assignments and retrieved with index expressions; they may be removed with the delete built-in function.

A new, empty map value is made using the built-in function make, which takes the map type and an optional capacity hint as arguments:

make(map[string]int)
make(map[string]int, 100)

The initial capacity does not bound its size: maps grow to accommodate the number of items stored in them, with the exception of nil maps. A nil map is equivalent to an empty map except that no elements may be added.

Channel types

A channel provides a mechanism for concurrently executing functions to communicate by sending and receiving values of a specified element type. The value of an uninitialized channel is nil.

ChannelType = ( "chan" | "chan" "<-" | "<-" "chan" ) ElementType .

The optional <- operator specifies the channel direction, send or receive. If no direction is given, the channel is bidirectional. A channel may be constrained only to send or only to receive by conversion or assignment.

chan T          // can be used to send and receive values of type T
chan<- float64  // can only be used to send float64s
<-chan int      // can only be used to receive ints

The <- operator associates with the leftmost chan possible:

chan<- chan int    // same as chan<- (chan int)
chan<- <-chan int  // same as chan<- (<-chan int)
<-chan <-chan int  // same as <-chan (<-chan int)
chan (<-chan int)

A new, initialized channel value can be made using the built-in function make, which takes the channel type and an optional capacity as arguments:

make(chan int, 100)

The capacity, in number of elements, sets the size of the buffer in the channel. If the capacity is zero or absent, the channel is unbuffered and communication succeeds only when both a sender and receiver are ready. Otherwise, the channel is buffered and communication succeeds without blocking if the buffer is not full (sends) or not empty (receives). A nil channel is never ready for communication.

A channel may be closed with the built-in function close. The multi-valued assignment form of the receive operator reports whether a received value was sent before the channel was closed.

A single channel may be used in send statements, receive operations, and calls to the built-in functions cap and len by any number of goroutines without further synchronization. Channels act as first-in-first-out queues. For example, if one goroutine sends values on a channel and a second goroutine receives them, the values are received in the order sent.

Properties of types and values

Type identity

Two types are either identical or different.

Two named types are identical if their type names originate in the same TypeSpec. A named and an unnamed type are always different. Two unnamed types are identical if the corresponding type literals are identical, that is, if they have the same literal structure and corresponding components have identical types. In detail:

  • Two array types are identical if they have identical element types and the same array length.
  • Two slice types are identical if they have identical element types.
  • Two struct types are identical if they have the same sequence of fields, and if corresponding fields have the same names, and identical types, and identical tags. Two anonymous fields are considered to have the same name. Lower-case field names from different packages are always different.
  • Two pointer types are identical if they have identical base types.
  • Two function types are identical if they have the same number of parameters and result values, corresponding parameter and result types are identical, and either both functions are variadic or neither is. Parameter and result names are not required to match.
  • Two interface types are identical if they have the same set of methods with the same names and identical function types. Lower-case method names from different packages are always different. The order of the methods is irrelevant.
  • Two map types are identical if they have identical key and value types.
  • Two channel types are identical if they have identical value types and the same direction.

Given the declarations

type (
	T0 []string
	T1 []string
	T2 struct{ a, b int }
	T3 struct{ a, c int }
	T4 func(int, float64) *T0
	T5 func(x int, y float64) *[]string
)

these types are identical:

T0 and T0
[]int and []int
struct{ a, b *T5 } and struct{ a, b *T5 }
func(x int, y float64) *[]string and func(int, float64) (result *[]string)

T0 and T1 are different because they are named types with distinct declarations; func(int, float64) *T0 and func(x int, y float64) *[]string are different because T0 is different from []string.

Assignability

A value x is assignable to a variable of type T ("x is assignable to T") in any of these cases:

  • x's type is identical to T.
  • x's type V and T have identical underlying types and at least one of V or T is not a named type.
  • T is an interface type and x implements T.
  • x is a bidirectional channel value, T is a channel type, x's type V and T have identical element types, and at least one of V or T is not a named type.
  • x is the predeclared identifier nil and T is a pointer, function, slice, map, channel, or interface type.
  • x is an untyped constant representable by a value of type T.

Blocks

A block is a possibly empty sequence of declarations and statements within matching brace brackets.

Block = "{" StatementList "}" .
StatementList = { Statement ";" } .

In addition to explicit blocks in the source code, there are implicit blocks:

  1. The universe block encompasses all Go source text.
  2. Each package has a package block containing all Go source text for that package.
  3. Each file has a file block containing all Go source text in that file.
  4. Each "if", "for", and "switch" statement is considered to be in its own implicit block.
  5. Each clause in a "switch" or "select" statement acts as an implicit block.

Blocks nest and influence scoping.

Declarations and scope

A declaration binds a non-blank identifier to a constant, type, variable, function, label, or package. Every identifier in a program must be declared. No identifier may be declared twice in the same block, and no identifier may be declared in both the file and package block.

The blank identifier may be used like any other identifier in a declaration, but it does not introduce a binding and thus is not declared. In the package block, the identifier init may only be used for init function declarations, and like the blank identifier it does not introduce a new binding.

Declaration   = ConstDecl | TypeDecl | VarDecl .
TopLevelDecl  = Declaration | FunctionDecl | MethodDecl .

The scope of a declared identifier is the extent of source text in which the identifier denotes the specified constant, type, variable, function, label, or package.

Go is lexically scoped using blocks:

  1. The scope of a predeclared identifier is the universe block.
  2. The scope of an identifier denoting a constant, type, variable, or function (but not method) declared at top level (outside any function) is the package block.
  3. The scope of the package name of an imported package is the file block of the file containing the import declaration.
  4. The scope of an identifier denoting a method receiver, function parameter, or result variable is the function body.
  5. The scope of a constant or variable identifier declared inside a function begins at the end of the ConstSpec or VarSpec (ShortVarDecl for short variable declarations) and ends at the end of the innermost containing block.
  6. The scope of a type identifier declared inside a function begins at the identifier in the TypeSpec and ends at the end of the innermost containing block.

An identifier declared in a block may be redeclared in an inner block. While the identifier of the inner declaration is in scope, it denotes the entity declared by the inner declaration.

The package clause is not a declaration; the package name does not appear in any scope. Its purpose is to identify the files belonging to the same package and to specify the default package name for import declarations.

Label scopes

Labels are declared by labeled statements and are used in the "break", "continue", and "goto" statements. It is illegal to define a label that is never used. In contrast to other identifiers, labels are not block scoped and do not conflict with identifiers that are not labels. The scope of a label is the body of the function in which it is declared and excludes the body of any nested function.

Blank identifier

The blank identifier is represented by the underscore character _. It serves as an anonymous placeholder instead of a regular (non-blank) identifier and has special meaning in declarations, as an operand, and in assignments.

Predeclared identifiers

The following identifiers are implicitly declared in the universe block:

Types:
	bool byte complex64 complex128 error float32 float64
	int int8 int16 int32 int64 rune string
	uint uint8 uint16 uint32 uint64 uintptr

Constants:
	true false iota

Zero value:
	nil

Functions:
	append cap close complex copy delete imag len
	make new panic print println real recover

Exported identifiers

An identifier may be exported to permit access to it from another package. An identifier is exported if both:

  1. the first character of the identifier's name is a Unicode upper case letter (Unicode class "Lu"); and
  2. the identifier is declared in the package block or it is a field name or method name.

All other identifiers are not exported.

Uniqueness of identifiers

Given a set of identifiers, an identifier is called unique if it is different from every other in the set. Two identifiers are different if they are spelled differently, or if they appear in different packages and are not exported. Otherwise, they are the same.

Constant declarations

A constant declaration binds a list of identifiers (the names of the constants) to the values of a list of constant expressions. The number of identifiers must be equal to the number of expressions, and the nth identifier on the left is bound to the value of the nth expression on the right.

ConstDecl      = "const" ( ConstSpec | "(" { ConstSpec ";" } ")" ) .
ConstSpec      = IdentifierList [ [ Type ] "=" ExpressionList ] .

IdentifierList = identifier { "," identifier } .
ExpressionList = Expression { "," Expression } .

If the type is present, all constants take the type specified, and the expressions must be assignable to that type. If the type is omitted, the constants take the individual types of the corresponding expressions. If the expression values are untyped constants, the declared constants remain untyped and the constant identifiers denote the constant values. For instance, if the expression is a floating-point literal, the constant identifier denotes a floating-point constant, even if the literal's fractional part is zero.

const Pi float64 = 3.14159265358979323846
const zero = 0.0         // untyped floating-point constant
const (
	size int64 = 1024
	eof        = -1  // untyped integer constant
)
const a, b, c = 3, 4, "foo"  // a = 3, b = 4, c = "foo", untyped integer and string constants
const u, v float32 = 0, 3    // u = 0.0, v = 3.0

Within a parenthesized const declaration list the expression list may be omitted from any but the first declaration. Such an empty list is equivalent to the textual substitution of the first preceding non-empty expression list and its type if any. Omitting the list of expressions is therefore equivalent to repeating the previous list. The number of identifiers must be equal to the number of expressions in the previous list. Together with the iota constant generator this mechanism permits light-weight declaration of sequential values:

const (
	Sunday = iota
	Monday
	Tuesday
	Wednesday
	Thursday
	Friday
	Partyday
	numberOfDays  // this constant is not exported
)

Iota

Within a constant declaration, the predeclared identifier iota represents successive untyped integer constants. It is reset to 0 whenever the reserved word const appears in the source and increments after each ConstSpec. It can be used to construct a set of related constants:

const (  // iota is reset to 0
	c0 = iota  // c0 == 0
	c1 = iota  // c1 == 1
	c2 = iota  // c2 == 2
)

const (
	a = 1 << iota  // a == 1 (iota has been reset)
	b = 1 << iota  // b == 2
	c = 1 << iota  // c == 4
)

const (
	u         = iota * 42  // u == 0     (untyped integer constant)
	v float64 = iota * 42  // v == 42.0  (float64 constant)
	w         = iota * 42  // w == 84    (untyped integer constant)
)

const x = iota  // x == 0 (iota has been reset)
const y = iota  // y == 0 (iota has been reset)

Within an ExpressionList, the value of each iota is the same because it is only incremented after each ConstSpec:

const (
	bit0, mask0 = 1 << iota, 1<<iota - 1  // bit0 == 1, mask0 == 0
	bit1, mask1                           // bit1 == 2, mask1 == 1
	_, _                                  // skips iota == 2
	bit3, mask3                           // bit3 == 8, mask3 == 7
)

This last example exploits the implicit repetition of the last non-empty expression list.

Type declarations

A type declaration binds an identifier, the type name, to a new type that has the same underlying type as an existing type, and operations defined for the existing type are also defined for the new type. The new type is different from the existing type.

TypeDecl     = "type" ( TypeSpec | "(" { TypeSpec ";" } ")" ) .
TypeSpec     = identifier Type .
type IntArray [16]int

type (
	Point struct{ x, y float64 }
	Polar Point
)

type TreeNode struct {
	left, right *TreeNode
	value *Comparable
}

type Block interface {
	BlockSize() int
	Encrypt(src, dst []byte)
	Decrypt(src, dst []byte)
}

The declared type does not inherit any methods bound to the existing type, but the method set of an interface type or of elements of a composite type remains unchanged:

// A Mutex is a data type with two methods, Lock and Unlock.
type Mutex struct         { /* Mutex fields */ }
func (m *Mutex) Lock()    { /* Lock implementation */ }
func (m *Mutex) Unlock()  { /* Unlock implementation */ }

// NewMutex has the same composition as Mutex but its method set is empty.
type NewMutex Mutex

// The method set of the base type of PtrMutex remains unchanged,
// but the method set of PtrMutex is empty.
type PtrMutex *Mutex

// The method set of *PrintableMutex contains the methods
// Lock and Unlock bound to its anonymous field Mutex.
type PrintableMutex struct {
	Mutex
}

// MyBlock is an interface type that has the same method set as Block.
type MyBlock Block

A type declaration may be used to define a different boolean, numeric, or string type and attach methods to it:

type TimeZone int

const (
	EST TimeZone = -(5 + iota)
	CST
	MST
	PST
)

func (tz TimeZone) String() string {
	return fmt.Sprintf("GMT+%dh", tz)
}

Variable declarations

A variable declaration creates a variable, binds an identifier to it and gives it a type and optionally an initial value.

VarDecl     = "var" ( VarSpec | "(" { VarSpec ";" } ")" ) .
VarSpec     = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) .
var i int
var U, V, W float64
var k = 0
var x, y float32 = -1, -2
var (
	i       int
	u, v, s = 2.0, 3.0, "bar"
)
var re, im = complexSqrt(-1)
var _, found = entries[name]  // map lookup; only interested in "found"

If a list of expressions is given, the variables are initialized by assigning the expressions to the variables in order; all expressions must be consumed and all variables initialized from them. Otherwise, each variable is initialized to its zero value.

If the type is present, each variable is given that type. Otherwise, the types are deduced from the assignment of the expression list.

If the type is absent and the corresponding expression evaluates to an untyped constant, the type of the declared variable is as described in §Assignments.

Implementation restriction: A compiler may make it illegal to declare a variable inside a function body if the variable is never used.

Short variable declarations

A short variable declaration uses the syntax:

ShortVarDecl = IdentifierList ":=" ExpressionList .

It is shorthand for a regular variable declaration with initializer expressions but no types:

"var" IdentifierList = ExpressionList .
i, j := 0, 10
f := func() int { return 7 }
ch := make(chan int)
r, w := os.Pipe(fd)  // os.Pipe() returns two values
_, y, _ := coord(p)  // coord() returns three values; only interested in y coordinate

Unlike regular variable declarations, a short variable declaration may redeclare variables provided they were originally declared earlier in the same block with the same type, and at least one of the non-blank variables is new. As a consequence, redeclaration can only appear in a multi-variable short declaration. Redeclaration does not introduce a new variable; it just assigns a new value to the original.

field1, offset := nextField(str, 0)
field2, offset := nextField(str, offset)  // redeclares offset
a, a := 1, 2                              // illegal: double declaration of a or no new variable if a was declared elsewhere

Short variable declarations may appear only inside functions. In some contexts such as the initializers for "if", "for", or "switch" statements, they can be used to declare local temporary variables.

Function declarations

A function declaration binds an identifier, the function name, to a function.

FunctionDecl = "func" FunctionName ( Function | Signature ) .
FunctionName = identifier .
Function     = Signature FunctionBody .
FunctionBody = Block .

If the function's signature declares result parameters, the function body's statement list must end in a terminating statement.

func findMarker(c <-chan int) int {
	for i := range c {
		if x := <-c; isMarker(x) {
			return x
		}
	}
	// invalid: missing return statement.
}

A function declaration may omit the body. Such a declaration provides the signature for a function implemented outside Go, such as an assembly routine.

func min(x int, y int) int {
	if x < y {
		return x
	}
	return y
}

func flushICache(begin, end uintptr)  // implemented externally

Method declarations

A method is a function with a receiver. A method declaration binds an identifier, the method name, to a method, and associates the method with the receiver's base type.

MethodDecl   = "func" Receiver MethodName ( Function | Signature ) .
Receiver     = "(" [ identifier ] [ "*" ] BaseTypeName ")" .
BaseTypeName = identifier .

The receiver type must be of the form T or *T where T is a type name. The type denoted by T is called the receiver base type; it must not be a pointer or interface type and it must be declared in the same package as the method. The method is said to be bound to the base type and the method name is visible only within selectors for that type.

A non-blank receiver identifier must be unique in the method signature. If the receiver's value is not referenced inside the body of the method, its identifier may be omitted in the declaration. The same applies in general to parameters of functions and methods.

For a base type, the non-blank names of methods bound to it must be unique. If the base type is a struct type, the non-blank method and field names must be distinct.

Given type Point, the declarations

func (p *Point) Length() float64 {
	return math.Sqrt(p.x * p.x + p.y * p.y)
}

func (p *Point) Scale(factor float64) {
	p.x *= factor
	p.y *= factor
}

bind the methods Length and Scale, with receiver type *Point, to the base type Point.

The type of a method is the type of a function with the receiver as first argument. For instance, the method Scale has type

func(p *Point, factor float64)

However, a function declared this way is not a method.

Expressions

An expression specifies the computation of a value by applying operators and functions to operands.

Operands

Operands denote the elementary values in an expression. An operand may be a literal, a (possibly qualified) non-blank identifier denoting a constant, variable, or function, a method expression yielding a function, or a parenthesized expression.

The blank identifier may appear as an operand only on the left-hand side of an assignment.

Operand    = Literal | OperandName | MethodExpr | "(" Expression ")" .
Literal    = BasicLit | CompositeLit | FunctionLit .
BasicLit   = int_lit | float_lit | imaginary_lit | rune_lit | string_lit .
OperandName = identifier | QualifiedIdent.

Qualified identifiers

A qualified identifier is an identifier qualified with a package name prefix. Both the package name and the identifier must not be blank.

QualifiedIdent = PackageName "." identifier .

A qualified identifier accesses an identifier in a different package, which must be imported. The identifier must be exported and declared in the package block of that package.

math.Sin	// denotes the Sin function in package math

Composite literals

Composite literals construct values for structs, arrays, slices, and maps and create a new value each time they are evaluated. They consist of the type of the value followed by a brace-bound list of composite elements. An element may be a single expression or a key-value pair.

CompositeLit  = LiteralType LiteralValue .
LiteralType   = StructType | ArrayType | "[" "..." "]" ElementType |
                SliceType | MapType | TypeName .
LiteralValue  = "{" [ ElementList [ "," ] ] "}" .
ElementList   = Element { "," Element } .
Element       = [ Key ":" ] Value .
Key           = FieldName | ElementIndex .
FieldName     = identifier .
ElementIndex  = Expression .
Value         = Expression | LiteralValue .

The LiteralType must be a struct, array, slice, or map type (the grammar enforces this constraint except when the type is given as a TypeName). The types of the expressions must be assignable to the respective field, element, and key types of the LiteralType; there is no additional conversion. The key is interpreted as a field name for struct literals, an index for array and slice literals, and a key for map literals. For map literals, all elements must have a key. It is an error to specify multiple elements with the same field name or constant key value.

For struct literals the following rules apply:

  • A key must be a field name declared in the LiteralType.
  • An element list that does not contain any keys must list an element for each struct field in the order in which the fields are declared.
  • If any element has a key, every element must have a key.
  • An element list that contains keys does not need to have an element for each struct field. Omitted fields get the zero value for that field.
  • A literal may omit the element list; such a literal evaluates to the zero value for its type.
  • It is an error to specify an element for a non-exported field of a struct belonging to a different package.

Given the declarations

type Point3D struct { x, y, z float64 }
type Line struct { p, q Point3D }

one may write

origin := Point3D{}                            // zero value for Point3D
line := Line{origin, Point3D{y: -4, z: 12.3}}  // zero value for line.q.x

For array and slice literals the following rules apply:

  • Each element has an associated integer index marking its position in the array.
  • An element with a key uses the key as its index; the key must be a constant integer expression.
  • An element without a key uses the previous element's index plus one. If the first element has no key, its index is zero.

Taking the address of a composite literal generates a pointer to a unique instance of the literal's value.

var pointer *Point3D = &Point3D{y: 1000}

The length of an array literal is the length specified in the LiteralType. If fewer elements than the length are provided in the literal, the missing elements are set to the zero value for the array element type. It is an error to provide elements with index values outside the index range of the array. The notation ... specifies an array length equal to the maximum element index plus one.

buffer := [10]string{}             // len(buffer) == 10
intSet := [6]int{1, 2, 3, 5}       // len(intSet) == 6
days := [...]string{"Sat", "Sun"}  // len(days) == 2

A slice literal describes the entire underlying array literal. Thus, the length and capacity of a slice literal are the maximum element index plus one. A slice literal has the form

[]T{x1, x2, … xn}

and is shorthand for a slice operation applied to an array:

tmp := [n]T{x1, x2, … xn}
tmp[0 : n]

Within a composite literal of array, slice, or map type T, elements that are themselves composite literals may elide the respective literal type if it is identical to the element type of T. Similarly, elements that are addresses of composite literals may elide the &T when the element type is *T.

[...]Point{{1.5, -3.5}, {0, 0}}   // same as [...]Point{Point{1.5, -3.5}, Point{0, 0}}
[][]int{{1, 2, 3}, {4, 5}}        // same as [][]int{[]int{1, 2, 3}, []int{4, 5}}

[...]*Point{{1.5, -3.5}, {0, 0}}  // same as [...]*Point{&Point{1.5, -3.5}, &Point{0, 0}}

A parsing ambiguity arises when a composite literal using the TypeName form of the LiteralType appears as an operand between the keyword and the opening brace of the block of an "if", "for", or "switch" statement, and the composite literal is not enclosed in parentheses, square brackets, or curly braces. In this rare case, the opening brace of the literal is erroneously parsed as the one introducing the block of statements. To resolve the ambiguity, the composite literal must appear within parentheses.

if x == (T{a,b,c}[i]) { … }
if (x == T{a,b,c}[i]) { … }

Examples of valid array, slice, and map literals:

// list of prime numbers
primes := []int{2, 3, 5, 7, 9, 2147483647}

// vowels[ch] is true if ch is a vowel
vowels := [128]bool{'a': true, 'e': true, 'i': true, 'o': true, 'u': true, 'y': true}

// the array [10]float32{-1, 0, 0, 0, -0.1, -0.1, 0, 0, 0, -1}
filter := [10]float32{-1, 4: -0.1, -0.1, 9: -1}

// frequencies in Hz for equal-tempered scale (A4 = 440Hz)
noteFrequency := map[string]float32{
	"C0": 16.35, "D0": 18.35, "E0": 20.60, "F0": 21.83,
	"G0": 24.50, "A0": 27.50, "B0": 30.87,
}

Function literals

A function literal represents an anonymous function.

FunctionLit = "func" Function .
func(a, b int, z float64) bool { return a*b < int(z) }

A function literal can be assigned to a variable or invoked directly.

f := func(x, y int) int { return x + y }
func(ch chan int) { ch <- ACK }(replyChan)

Function literals are closures: they may refer to variables defined in a surrounding function. Those variables are then shared between the surrounding function and the function literal, and they survive as long as they are accessible.

Primary expressions

Primary expressions are the operands for unary and binary expressions.

PrimaryExpr =
	Operand |
	Conversion |
	BuiltinCall |
	PrimaryExpr Selector |
	PrimaryExpr Index |
	PrimaryExpr Slice |
	PrimaryExpr TypeAssertion |
	PrimaryExpr Call .

Selector       = "." identifier .
Index          = "[" Expression "]" .
Slice          = "[" ( [ Expression ] ":" [ Expression ] ) |
                     ( [ Expression ] ":" Expression ":" Expression )
                 "]" .
TypeAssertion  = "." "(" Type ")" .
Call           = "(" [ ArgumentList [ "," ] ] ")" .
ArgumentList   = ExpressionList [ "..." ] .
x
2
(s + ".txt")
f(3.1415, true)
Point{1, 2}
m["foo"]
s[i : j + 1]
obj.color
f.p[i].x()

Selectors

For a primary expression x that is not a package name, the selector expression

x.f

denotes the field or method f of the value x (or sometimes *x; see below). The identifier f is called the (field or method) selector; it must not be the blank identifier. The type of the selector expression is the type of f. If x is a package name, see the section on qualified identifiers.

A selector f may denote a field or method f of a type T, or it may refer to a field or method f of a nested anonymous field of T. The number of anonymous fields traversed to reach f is called its depth in T. The depth of a field or method f declared in T is zero. The depth of a field or method f declared in an anonymous field A in T is the depth of f in A plus one.

The following rules apply to selectors:

  1. For a value x of type T or *T where T is not an interface type, x.f denotes the field or method at the shallowest depth in T where there is such an f. If there is not exactly one f with shallowest depth, the selector expression is illegal.
  2. For a variable x of type I where I is an interface type, x.f denotes the actual method with name f of the value assigned to x. If there is no method with name f in the method set of I, the selector expression is illegal.
  3. In all other cases, x.f is illegal.
  4. If x is of pointer type and has the value nil and x.f denotes a struct field, assigning to or evaluating x.f causes a run-time panic.
  5. If x is of interface type and has the value nil, calling or evaluating the method x.f causes a run-time panic.

Selectors automatically dereference pointers to structs. If x is a pointer to a struct, x.y is shorthand for (*x).y; if the field y is also a pointer to a struct, x.y.z is shorthand for (*(*x).y).z, and so on. If x contains an anonymous field of type *A, where A is also a struct type, x.f is shorthand for (*x.A).f.

For example, given the declarations:

type T0 struct {
	x int
}

func (recv *T0) M0()

type T1 struct {
	y int
}

func (recv T1) M1()

type T2 struct {
	z int
	T1
	*T0
}

func (recv *T2) M2()

var p *T2  // with p != nil and p.T0 != nil

one may write:

p.z   // (*p).z
p.y   // ((*p).T1).y
p.x   // (*(*p).T0).x

p.M2()  // (*p).M2()
p.M1()  // ((*p).T1).M1()
p.M0()  // ((*p).T0).M0()

Index expressions

A primary expression of the form

a[x]

denotes the element of the array, pointer to array, slice, string or map a indexed by x. The value x is called the index or map key, respectively. The following rules apply:

If a is not a map:

  • the index x must be of integer type or untyped; it is in range if 0 <= x < len(a), otherwise it is out of range
  • a constant index must be non-negative and representable by a value of type int

For a of array type A:

  • a constant index must be in range
  • if x is out of range at run time, a run-time panic occurs
  • a[x] is the array element at index x and the type of a[x] is the element type of A

For a of pointer to array type:

  • a[x] is shorthand for (*a)[x]

For a of slice type S:

  • if x is out of range at run time, a run-time panic occurs
  • a[x] is the slice element at index x and the type of a[x] is the element type of S

For a of string type:

  • a constant index must be in range if the string a is also constant
  • if x is out of range at run time, a run-time panic occurs
  • a[x] is the non-constant byte value at index x and the type of a[x] is byte
  • a[x] may not be assigned to

For a of map type M:

  • x's type must be assignable to the key type of M
  • if the map contains an entry with key x, a[x] is the map value with key x and the type of a[x] is the value type of M
  • if the map is nil or does not contain such an entry, a[x] is the zero value for the value type of M

Otherwise a[x] is illegal.

An index expression on a map a of type map[K]V may be used in an assignment or initialization of the special form

v, ok = a[x]
v, ok := a[x]
var v, ok = a[x]

where the result of the index expression is a pair of values with types (V, bool). In this form, the value of ok is true if the key x is present in the map, and false otherwise. The value of v is the value a[x] as in the single-result form.

Assigning to an element of a nil map causes a run-time panic.

Slice expressions

Slice expressions construct a substring or slice from a string, array, pointer to array, or slice. There are two variants: a simple form that specifies a low and high bound, and a full form that also specifies a bound on the capacity.

Simple slice expressions

For a string, array, pointer to array, or slice a, the primary expression

a[low : high]

constructs a substring or slice. The indices low and high select which elements of operand a appear in the result. The result has indices starting at 0 and length equal to high - low. After slicing the array a

a := [5]int{1, 2, 3, 4, 5}
s := a[1:4]

the slice s has type []int, length 3, capacity 4, and elements

s[0] == 2
s[1] == 3
s[2] == 4

For convenience, any of the indices may be omitted. A missing low index defaults to zero; a missing high index defaults to the length of the sliced operand:

a[2:]  // same as a[2 : len(a)]
a[:3]  // same as a[0 : 3]
a[:]   // same as a[0 : len(a)]

If a is a pointer to an array, a[low : high] is shorthand for (*a)[low : high].

For arrays or strings, the indices are in range if 0 <= low <= high <= len(a), otherwise they are out of range. For slices, the upper index bound is the slice capacity cap(a) rather than the length. A constant index must be non-negative and representable by a value of type int; for arrays or constant strings, constant indices must also be in range. If both indices are constant, they must satisfy low <= high. If the indices are out of range at run time, a run-time panic occurs.

Except for untyped strings, if the sliced operand is a string or slice, the result of the slice operation is a non-constant value of the same type as the operand. For untyped string operands the result is a non-constant value of type string. If the sliced operand is an array, it must be addressable and the result of the slice operation is a slice with the same element type as the array.

If the sliced operand of a valid slice expression is a nil slice, the result is a nil slice. Otherwise, the result shares its underlying array with the operand.

Full slice expressions

For an array, pointer to array, or slice a (but not a string), the primary expression

a[low : high : max]

constructs a slice of the same type, and with the same length and elements as the simple slice expression a[low : high]. Additionally, it controls the resulting slice's capacity by setting it to max - low. Only the first index may be omitted; it defaults to 0. After slicing the array a

a := [5]int{1, 2, 3, 4, 5}
t := a[1:3:5]

the slice t has type []int, length 2, capacity 4, and elements

t[0] == 2
t[1] == 3

As for simple slice expressions, if a is a pointer to an array, a[low : high : max] is shorthand for (*a)[low : high : max]. If the sliced operand is an array, it must be addressable.

The indices are in range if 0 <= low <= high <= max <= cap(a), otherwise they are out of range. A constant index must be non-negative and representable by a value of type int; for arrays, constant indices must also be in range. If multiple indices are constant, the constants that are present must be in range relative to each other. If the indices are out of range at run time, a run-time panic occurs.

Type assertions

For an expression x of interface type and a type T, the primary expression

x.(T)

asserts that x is not nil and that the value stored in x is of type T. The notation x.(T) is called a type assertion.

More precisely, if T is not an interface type, x.(T) asserts that the dynamic type of x is identical to the type T. In this case, T must implement the (interface) type of x; otherwise the type assertion is invalid since it is not possible for x to store a value of type T. If T is an interface type, x.(T) asserts that the dynamic type of x implements the interface T.

If the type assertion holds, the value of the expression is the value stored in x and its type is T. If the type assertion is false, a run-time panic occurs. In other words, even though the dynamic type of x is known only at run time, the type of x.(T) is known to be T in a correct program.

var x interface{} = 7  // x has dynamic type int and value 7
i := x.(int)           // i has type int and value 7

type I interface { m() }
var y I
s := y.(string)        // illegal: string does not implement I (missing method m)
r := y.(io.Reader)     // r has type io.Reader and y must implement both I and io.Reader

If a type assertion is used in an assignment or initialization of the form

v, ok = x.(T)
v, ok := x.(T)
var v, ok = x.(T)

the result of the assertion is a pair of values with types (T, bool). If the assertion holds, the expression returns the pair (x.(T), true); otherwise, the expression returns (Z, false) where Z is the zero value for type T. No run-time panic occurs in this case. The type assertion in this construct thus acts like a function call returning a value and a boolean indicating success.

Calls

Given an expression f of function type F,

f(a1, a2, … an)

calls f with arguments a1, a2, … an. Except for one special case, arguments must be single-valued expressions assignable to the parameter types of F and are evaluated before the function is called. The type of the expression is the result type of F. A method invocation is similar but the method itself is specified as a selector upon a value of the receiver type for the method.

math.Atan2(x, y)  // function call
var pt *Point
pt.Scale(3.5)  // method call with receiver pt

In a function call, the function value and arguments are evaluated in the usual order. After they are evaluated, the parameters of the call are passed by value to the function and the called function begins execution. The return parameters of the function are passed by value back to the calling function when the function returns.

Calling a nil function value causes a run-time panic.

As a special case, if the return values of a function or method g are equal in number and individually assignable to the parameters of another function or method f, then the call f(g(parameters_of_g)) will invoke f after binding the return values of g to the parameters of f in order. The call of f must contain no parameters other than the call of g, and g must have at least one return value. If f has a final ... parameter, it is assigned the return values of g that remain after assignment of regular parameters.

func Split(s string, pos int) (string, string) {
	return s[0:pos], s[pos:]
}

func Join(s, t string) string {
	return s + t
}

if Join(Split(value, len(value)/2)) != value {
	log.Panic("test fails")
}

A method call x.m() is valid if the method set of (the type of) x contains m and the argument list can be assigned to the parameter list of m. If x is addressable and &x's method set contains m, x.m() is shorthand for (&x).m():

var p Point
p.Scale(3.5)

There is no distinct method type and there are no method literals.

Passing arguments to ... parameters

If f is variadic with a final parameter p of type ...T, then within f the type of p is equivalent to type []T. If f is invoked with no actual arguments for p, the value passed to p is nil. Otherwise, the value passed is a new slice of type []T with a new underlying array whose successive elements are the actual arguments, which all must be assignable to T. The length and capacity of the slice is therefore the number of arguments bound to p and may differ for each call site.

Given the function and calls

func Greeting(prefix string, who ...string)
Greeting("nobody")
Greeting("hello:", "Joe", "Anna", "Eileen")

within Greeting, who will have the value nil in the first call, and []string{"Joe", "Anna", "Eileen"} in the second.

If the final argument is assignable to a slice type []T, it may be passed unchanged as the value for a ...T parameter if the argument is followed by .... In this case no new slice is created.

Given the slice s and call

s := []string{"James", "Jasmine"}
Greeting("goodbye:", s...)

within Greeting, who will have the same value as s with the same underlying array.

Operators

Operators combine operands into expressions.

Expression = UnaryExpr | Expression binary_op UnaryExpr .
UnaryExpr  = PrimaryExpr | unary_op UnaryExpr .

binary_op  = "||" | "&&" | rel_op | add_op | mul_op .
rel_op     = "==" | "!=" | "<" | "<=" | ">" | ">=" .
add_op     = "+" | "-" | "|" | "^" .
mul_op     = "*" | "/" | "%" | "<<" | ">>" | "&" | "&^" .

unary_op   = "+" | "-" | "!" | "^" | "*" | "&" | "<-" .

Comparisons are discussed elsewhere. For other binary operators, the operand types must be identical unless the operation involves shifts or untyped constants. For operations involving constants only, see the section on constant expressions.

Except for shift operations, if one operand is an untyped constant and the other operand is not, the constant is converted to the type of the other operand.

The right operand in a shift expression must have unsigned integer type or be an untyped constant that can be converted to unsigned integer type. If the left operand of a non-constant shift expression is an untyped constant, the type of the constant is what it would be if the shift expression were replaced by its left operand alone.

var s uint = 33
var i = 1<<s           // 1 has type int
var j int32 = 1<<s     // 1 has type int32; j == 0
var k = uint64(1<<s)   // 1 has type uint64; k == 1<<33
var m int = 1.0<<s     // 1.0 has type int
var n = 1.0<<s != i    // 1.0 has type int; n == false if ints are 32bits in size
var o = 1<<s == 2<<s   // 1 and 2 have type int; o == true if ints are 32bits in size
var p = 1<<s == 1<<33  // illegal if ints are 32bits in size: 1 has type int, but 1<<33 overflows int
var u = 1.0<<s         // illegal: 1.0 has type float64, cannot shift
var u1 = 1.0<<s != 0   // illegal: 1.0 has type float64, cannot shift
var u2 = 1<<s != 1.0   // illegal: 1 has type float64, cannot shift
var v float32 = 1<<s   // illegal: 1 has type float32, cannot shift
var w int64 = 1.0<<33  // 1.0<<33 is a constant shift expression

Operator precedence

Unary operators have the highest precedence. As the ++ and -- operators form statements, not expressions, they fall outside the operator hierarchy. As a consequence, statement *p++ is the same as (*p)++.

There are five precedence levels for binary operators. Multiplication operators bind strongest, followed by addition operators, comparison operators, && (logical AND), and finally || (logical OR):

Precedence    Operator
    5             *  /  %  <<  >>  &  &^
    4             +  -  |  ^
    3             ==  !=  <  <=  >  >=
    2             &&
    1             ||

Binary operators of the same precedence associate from left to right. For instance, x / y * z is the same as (x / y) * z.

+x
23 + 3*x[i]
x <= f()
^a >> b
f() || g()
x == y+1 && <-chanPtr > 0

Arithmetic operators

Arithmetic operators apply to numeric values and yield a result of the same type as the first operand. The four standard arithmetic operators (+, -, *, /) apply to integer, floating-point, and complex types; + also applies to strings. All other arithmetic operators apply to integers only.

+    sum                    integers, floats, complex values, strings
-    difference             integers, floats, complex values
*    product                integers, floats, complex values
/    quotient               integers, floats, complex values
%    remainder              integers

&    bitwise AND            integers
|    bitwise OR             integers
^    bitwise XOR            integers
&^   bit clear (AND NOT)    integers

<<   left shift             integer << unsigned integer
>>   right shift            integer >> unsigned integer

Strings can be concatenated using the + operator or the += assignment operator:

s := "hi" + string(c)
s += " and good bye"

String addition creates a new string by concatenating the operands.

For two integer values x and y, the integer quotient q = x / y and remainder r = x % y satisfy the following relationships:

x = q*y + r  and  |r| < |y|

with x / y truncated towards zero ("truncated division").

 x     y     x / y     x % y
 5     3       1         2
-5     3      -1        -2
 5    -3      -1         2
-5    -3       1        -2

As an exception to this rule, if the dividend x is the most negative value for the int type of x, the quotient q = x / -1 is equal to x (and r = 0).

			 x, q
int8                     -128
int16                  -32768
int32             -2147483648
int64    -9223372036854775808

If the divisor is a constant, it must not be zero. If the divisor is zero at run time, a run-time panic occurs. If the dividend is non-negative and the divisor is a constant power of 2, the division may be replaced by a right shift, and computing the remainder may be replaced by a bitwise AND operation:

 x     x / 4     x % 4     x >> 2     x & 3
 11      2         3         2          3
-11     -2        -3        -3          1

The shift operators shift the left operand by the shift count specified by the right operand. They implement arithmetic shifts if the left operand is a signed integer and logical shifts if it is an unsigned integer. There is no upper limit on the shift count. Shifts behave as if the left operand is shifted n times by 1 for a shift count of n. As a result, x << 1 is the same as x*2 and x >> 1 is the same as x/2 but truncated towards negative infinity.

For integer operands, the unary operators +, -, and ^ are defined as follows:

+x                          is 0 + x
-x    negation              is 0 - x
^x    bitwise complement    is m ^ x  with m = "all bits set to 1" for unsigned x
                                      and  m = -1 for signed x

For floating-point and complex numbers, +x is the same as x, while -x is the negation of x. The result of a floating-point or complex division by zero is not specified beyond the IEEE-754 standard; whether a run-time panic occurs is implementation-specific.

Integer overflow

For unsigned integer values, the operations +, -, *, and << are computed modulo 2n, where n is the bit width of the unsigned integer's type. Loosely speaking, these unsigned integer operations discard high bits upon overflow, and programs may rely on ``wrap around''.

For signed integers, the operations +, -, *, and << may legally overflow and the resulting value exists and is deterministically defined by the signed integer representation, the operation, and its operands. No exception is raised as a result of overflow. A compiler may not optimize code under the assumption that overflow does not occur. For instance, it may not assume that x < x + 1 is always true.

Comparison operators

Comparison operators compare two operands and yield an untyped boolean value.

==    equal
!=    not equal
<     less
<=    less or equal
>     greater
>=    greater or equal

In any comparison, the first operand must be assignable to the type of the second operand, or vice versa.

The equality operators == and != apply to operands that are comparable. The ordering operators <, <=, >, and >= apply to operands that are ordered. These terms and the result of the comparisons are defined as follows:

  • Boolean values are comparable. Two boolean values are equal if they are either both true or both false.
  • Integer values are comparable and ordered, in the usual way.
  • Floating point values are comparable and ordered, as defined by the IEEE-754 standard.
  • Complex values are comparable. Two complex values u and v are equal if both real(u) == real(v) and imag(u) == imag(v).
  • String values are comparable and ordered, lexically byte-wise.
  • Pointer values are comparable. Two pointer values are equal if they point to the same variable or if both have value nil. Pointers to distinct zero-size variables may or may not be equal.
  • Channel values are comparable. Two channel values are equal if they were created by the same call to make or if both have value nil.
  • Interface values are comparable. Two interface values are equal if they have identical dynamic types and equal dynamic values or if both have value nil.
  • A value x of non-interface type X and a value t of interface type T are comparable when values of type X are comparable and X implements T. They are equal if t's dynamic type is identical to X and t's dynamic value is equal to x.
  • Struct values are comparable if all their fields are comparable. Two struct values are equal if their corresponding non-blank fields are equal.
  • Array values are comparable if values of the array element type are comparable. Two array values are equal if their corresponding elements are equal.

A comparison of two interface values with identical dynamic types causes a run-time panic if values of that type are not comparable. This behavior applies not only to direct interface value comparisons but also when comparing arrays of interface values or structs with interface-valued fields.

Slice, map, and function values are not comparable. However, as a special case, a slice, map, or function value may be compared to the predeclared identifier nil. Comparison of pointer, channel, and interface values to nil is also allowed and follows from the general rules above.

const c = 3 < 4            // c is the untyped bool constant true

type MyBool bool
var x, y int
var (
	// The result of a comparison is an untyped bool.
	// The usual assignment rules apply.
	b3        = x == y // b3 has type bool
	b4 bool   = x == y // b4 has type bool
	b5 MyBool = x == y // b5 has type MyBool
)

Logical operators

Logical operators apply to boolean values and yield a result of the same type as the operands. The right operand is evaluated conditionally.

&&    conditional AND    p && q  is  "if p then q else false"
||    conditional OR     p || q  is  "if p then true else q"
!     NOT                !p      is  "not p"

Address operators

For an operand x of type T, the address operation &x generates a pointer of type *T to x. The operand must be addressable, that is, either a variable, pointer indirection, or slice indexing operation; or a field selector of an addressable struct operand; or an array indexing operation of an addressable array. As an exception to the addressability requirement, x may also be a (possibly parenthesized) composite literal. If the evaluation of x would cause a run-time panic, then the evaluation of &x does too.

For an operand x of pointer type *T, the pointer indirection *x denotes the value of type T pointed to by x. If x is nil, an attempt to evaluate *x will cause a run-time panic.

&x
&a[f(2)]
&Point{2, 3}
*p
*pf(x)

var x *int = nil
*x   // causes a run-time panic
&*x  // causes a run-time panic

Receive operator

For an operand ch of channel type, the value of the receive operation <-ch is the value received from the channel ch. The channel direction must permit receive operations, and the type of the receive operation is the element type of the channel. The expression blocks until a value is available. Receiving from a nil channel blocks forever. A receive operation on a closed channel can always proceed immediately, yielding the element type's zero value after any previously sent values have been received.

v1 := <-ch
v2 = <-ch
f(<-ch)
<-strobe  // wait until clock pulse and discard received value

A receive expression used in an assignment or initialization of the form

x, ok = <-ch
x, ok := <-ch
var x, ok = <-ch

yields an additional result of type bool reporting whether the communication succeeded. The value of ok is true if the value received was delivered by a successful send operation to the channel, or false if it is a zero value generated because the channel is closed and empty.

Method expressions

If M is in the method set of type T, T.M is a function that is callable as a regular function with the same arguments as M prefixed by an additional argument that is the receiver of the method.

MethodExpr    = ReceiverType "." MethodName .
ReceiverType  = TypeName | "(" "*" TypeName ")" | "(" ReceiverType ")" .

Consider a struct type T with two methods, Mv, whose receiver is of type T, and Mp, whose receiver is of type *T.

type T struct {
	a int
}
func (tv  T) Mv(a int) int         { return 0 }  // value receiver
func (tp *T) Mp(f float32) float32 { return 1 }  // pointer receiver

var t T

The expression

T.Mv

yields a function equivalent to Mv but with an explicit receiver as its first argument; it has signature

func(tv T, a int) int

That function may be called normally with an explicit receiver, so these five invocations are equivalent:

t.Mv(7)
T.Mv(t, 7)
(T).Mv(t, 7)
f1 := T.Mv; f1(t, 7)
f2 := (T).Mv; f2(t, 7)

Similarly, the expression

(*T).Mp

yields a function value representing Mp with signature

func(tp *T, f float32) float32

For a method with a value receiver, one can derive a function with an explicit pointer receiver, so

(*T).Mv

yields a function value representing Mv with signature

func(tv *T, a int) int

Such a function indirects through the receiver to create a value to pass as the receiver to the underlying method; the method does not overwrite the value whose address is passed in the function call.

The final case, a value-receiver function for a pointer-receiver method, is illegal because pointer-receiver methods are not in the method set of the value type.

Function values derived from methods are called with function call syntax; the receiver is provided as the first argument to the call. That is, given f := T.Mv, f is invoked as f(t, 7) not t.f(7). To construct a function that binds the receiver, use a function literal or method value.

It is legal to derive a function value from a method of an interface type. The resulting function takes an explicit receiver of that interface type.

Method values

If the expression x has static type T and M is in the method set of type T, x.M is called a method value. The method value x.M is a function value that is callable with the same arguments as a method call of x.M. The expression x is evaluated and saved during the evaluation of the method value; the saved copy is then used as the receiver in any calls, which may be executed later.

The type T may be an interface or non-interface type.

As in the discussion of method expressions above, consider a struct type T with two methods, Mv, whose receiver is of type T, and Mp, whose receiver is of type *T.

type T struct {
	a int
}
func (tv  T) Mv(a int) int         { return 0 }  // value receiver
func (tp *T) Mp(f float32) float32 { return 1 }  // pointer receiver

var t T
var pt *T
func makeT() T

The expression

t.Mv

yields a function value of type

func(int) int

These two invocations are equivalent:

t.Mv(7)
f := t.Mv; f(7)

Similarly, the expression

pt.Mp

yields a function value of type

func(float32) float32

As with selectors, a reference to a non-interface method with a value receiver using a pointer will automatically dereference that pointer: pt.Mv is equivalent to (*pt).Mv.

As with method calls, a reference to a non-interface method with a pointer receiver using an addressable value will automatically take the address of that value: t.Mp is equivalent to (&t).Mp.

f := t.Mv; f(7)   // like t.Mv(7)
f := pt.Mp; f(7)  // like pt.Mp(7)
f := pt.Mv; f(7)  // like (*pt).Mv(7)
f := t.Mp; f(7)   // like (&t).Mp(7)
f := makeT().Mp   // invalid: result of makeT() is not addressable

Although the examples above use non-interface types, it is also legal to create a method value from a value of interface type.

var i interface { M(int) } = myVal
f := i.M; f(7)  // like i.M(7)

Conversions

Conversions are expressions of the form T(x) where T is a type and x is an expression that can be converted to type T.

Conversion = Type "(" Expression [ "," ] ")" .

If the type starts with the operator * or <-, or if the type starts with the keyword func and has no result list, it must be parenthesized when necessary to avoid ambiguity:

*Point(p)        // same as *(Point(p))
(*Point)(p)      // p is converted to *Point
<-chan int(c)    // same as <-(chan int(c))
(<-chan int)(c)  // c is converted to <-chan int
func()(x)        // function signature func() x
(func())(x)      // x is converted to func()
(func() int)(x)  // x is converted to func() int
func() int(x)    // x is converted to func() int (unambiguous)

A constant value x can be converted to type T in any of these cases:

  • x is representable by a value of type T.
  • x is a floating-point constant, T is a floating-point type, and x is representable by a value of type T after rounding using IEEE 754 round-to-even rules. The constant T(x) is the rounded value.
  • x is an integer constant and T is a string type. The same rule as for non-constant x applies in this case.

Converting a constant yields a typed constant as result.

uint(iota)               // iota value of type uint
float32(2.718281828)     // 2.718281828 of type float32
complex128(1)            // 1.0 + 0.0i of type complex128
float32(0.49999999)      // 0.5 of type float32
string('x')              // "x" of type string
string(0x266c)           // "♬" of type string
MyString("foo" + "bar")  // "foobar" of type MyString
string([]byte{'a'})      // not a constant: []byte{'a'} is not a constant
(*int)(nil)              // not a constant: nil is not a constant, *int is not a boolean, numeric, or string type
int(1.2)                 // illegal: 1.2 cannot be represented as an int
string(65.0)             // illegal: 65.0 is not an integer constant

A non-constant value x can be converted to type T in any of these cases:

  • x is assignable to T.
  • x's type and T have identical underlying types.
  • x's type and T are unnamed pointer types and their pointer base types have identical underlying types.
  • x's type and T are both integer or floating point types.
  • x's type and T are both complex types.
  • x is an integer or a slice of bytes or runes and T is a string type.
  • x is a string and T is a slice of bytes or runes.

Specific rules apply to (non-constant) conversions between numeric types or to and from a string type. These conversions may change the representation of x and incur a run-time cost. All other conversions only change the type but not the representation of x.

There is no linguistic mechanism to convert between pointers and integers. The package unsafe implements this functionality under restricted circumstances.

Conversions between numeric types

For the conversion of non-constant numeric values, the following rules apply:

  1. When converting between integer types, if the value is a signed integer, it is sign extended to implicit infinite precision; otherwise it is zero extended. It is then truncated to fit in the result type's size. For example, if v := uint16(0x10F0), then uint32(int8(v)) == 0xFFFFFFF0. The conversion always yields a valid value; there is no indication of overflow.
  2. When converting a floating-point number to an integer, the fraction is discarded (truncation towards zero).
  3. When converting an integer or floating-point number to a floating-point type, or a complex number to another complex type, the result value is rounded to the precision specified by the destination type. For instance, the value of a variable x of type float32 may be stored using additional precision beyond that of an IEEE-754 32-bit number, but float32(x) represents the result of rounding x's value to 32-bit precision. Similarly, x + 0.1 may use more than 32 bits of precision, but float32(x + 0.1) does not.

In all non-constant conversions involving floating-point or complex values, if the result type cannot represent the value the conversion succeeds but the result value is implementation-dependent.

Conversions to and from a string type

  1. Converting a signed or unsigned integer value to a string type yields a string containing the UTF-8 representation of the integer. Values outside the range of valid Unicode code points are converted to "\uFFFD".
    string('a')       // "a"
    string(-1)        // "\ufffd" == "\xef\xbf\xbd"
    string(0xf8)      // "\u00f8" == "ø" == "\xc3\xb8"
    type MyString string
    MyString(0x65e5)  // "\u65e5" == "日" == "\xe6\x97\xa5"
    
  2. Converting a slice of bytes to a string type yields a string whose successive bytes are the elements of the slice.
    string([]byte{'h', 'e', 'l', 'l', '\xc3', '\xb8'})   // "hellø"
    string([]byte{})                                     // ""
    string([]byte(nil))                                  // ""
    
    type MyBytes []byte
    string(MyBytes{'h', 'e', 'l', 'l', '\xc3', '\xb8'})  // "hellø"
    
  3. Converting a slice of runes to a string type yields a string that is the concatenation of the individual rune values converted to strings.
    string([]rune{0x767d, 0x9d6c, 0x7fd4})   // "\u767d\u9d6c\u7fd4" == "白鵬翔"
    string([]rune{})                         // ""
    string([]rune(nil))                      // ""
    
    type MyRunes []rune
    string(MyRunes{0x767d, 0x9d6c, 0x7fd4})  // "\u767d\u9d6c\u7fd4" == "白鵬翔"
    
  4. Converting a value of a string type to a slice of bytes type yields a slice whose successive elements are the bytes of the string.
    []byte("hellø")   // []byte{'h', 'e', 'l', 'l', '\xc3', '\xb8'}
    []byte("")        // []byte{}
    
    MyBytes("hellø")  // []byte{'h', 'e', 'l', 'l', '\xc3', '\xb8'}
    
  5. Converting a value of a string type to a slice of runes type yields a slice containing the individual Unicode code points of the string.
    []rune(MyString("白鵬翔"))  // []rune{0x767d, 0x9d6c, 0x7fd4}
    []rune("")                 // []rune{}
    
    MyRunes("白鵬翔")           // []rune{0x767d, 0x9d6c, 0x7fd4}
    

Constant expressions

Constant expressions may contain only constant operands and are evaluated at compile time.

Untyped boolean, numeric, and string constants may be used as operands wherever it is legal to use an operand of boolean, numeric, or string type, respectively. Except for shift operations, if the operands of a binary operation are different kinds of untyped constants, the operation and, for non-boolean operations, the result use the kind that appears later in this list: integer, rune, floating-point, complex. For example, an untyped integer constant divided by an untyped complex constant yields an untyped complex constant.

A constant comparison always yields an untyped boolean constant. If the left operand of a constant shift expression is an untyped constant, the result is an integer constant; otherwise it is a constant of the same type as the left operand, which must be of integer type. Applying all other operators to untyped constants results in an untyped constant of the same kind (that is, a boolean, integer, floating-point, complex, or string constant).

const a = 2 + 3.0          // a == 5.0   (untyped floating-point constant)
const b = 15 / 4           // b == 3     (untyped integer constant)
const c = 15 / 4.0         // c == 3.75  (untyped floating-point constant)
const Θ float64 = 3/2      // Θ == 1.0   (type float64, 3/2 is integer division)
const Π float64 = 3/2.     // Π == 1.5   (type float64, 3/2. is float division)
const d = 1 << 3.0         // d == 8     (untyped integer constant)
const e = 1.0 << 3         // e == 8     (untyped integer constant)
const f = int32(1) << 33   // illegal    (constant 8589934592 overflows int32)
const g = float64(2) >> 1  // illegal    (float64(2) is a typed floating-point constant)
const h = "foo" > "bar"    // h == true  (untyped boolean constant)
const j = true             // j == true  (untyped boolean constant)
const k = 'w' + 1          // k == 'x'   (untyped rune constant)
const l = "hi"             // l == "hi"  (untyped string constant)
const m = string(k)        // m == "x"   (type string)
const Σ = 1 - 0.707i       //            (untyped complex constant)
const Δ = Σ + 2.0e-4       //            (untyped complex constant)
const Φ = iota*1i - 1/1i   //            (untyped complex constant)

Applying the built-in function complex to untyped integer, rune, or floating-point constants yields an untyped complex constant.

const ic = complex(0, c)   // ic == 3.75i  (untyped complex constant)
const iΘ = complex(0, Θ)   // iΘ == 1i     (type complex128)

Constant expressions are always evaluated exactly; intermediate values and the constants themselves may require precision significantly larger than supported by any predeclared type in the language. The following are legal declarations:

const Huge = 1 << 100         // Huge == 1267650600228229401496703205376  (untyped integer constant)
const Four int8 = Huge >> 98  // Four == 4                                (type int8)

The divisor of a constant division or remainder operation must not be zero:

3.14 / 0.0   // illegal: division by zero

The values of typed constants must always be accurately representable as values of the constant type. The following constant expressions are illegal:

uint(-1)     // -1 cannot be represented as a uint
int(3.14)    // 3.14 cannot be represented as an int
int64(Huge)  // 1267650600228229401496703205376 cannot be represented as an int64
Four * 300   // operand 300 cannot be represented as an int8 (type of Four)
Four * 100   // product 400 cannot be represented as an int8 (type of Four)

The mask used by the unary bitwise complement operator ^ matches the rule for non-constants: the mask is all 1s for unsigned constants and -1 for signed and untyped constants.

^1         // untyped integer constant, equal to -2
uint8(^1)  // illegal: same as uint8(-2), -2 cannot be represented as a uint8
^uint8(1)  // typed uint8 constant, same as 0xFF ^ uint8(1) = uint8(0xFE)
int8(^1)   // same as int8(-2)
^int8(1)   // same as -1 ^ int8(1) = -2

Implementation restriction: A compiler may use rounding while computing untyped floating-point or complex constant expressions; see the implementation restriction in the section on constants. This rounding may cause a floating-point constant expression to be invalid in an integer context, even if it would be integral when calculated using infinite precision.

Order of evaluation

At package level, initialization dependencies determine the evaluation order of individual initialization expressions in variable declarations. Otherwise, when evaluating the operands of an expression, assignment, or return statement, all function calls, method calls, and communication operations are evaluated in lexical left-to-right order.

For example, in the (function-local) assignment

y[f()], ok = g(h(), i()+x[j()], <-c), k()

the function calls and communication happen in the order f(), h(), i(), j(), <-c, g(), and k(). However, the order of those events compared to the evaluation and indexing of x and the evaluation of y is not specified.

a := 1
f := func() int { a++; return a }
x := []int{a, f()}            // x may be [1, 2] or [2, 2]: evaluation order between a and f() is not specified
m := map[int]int{a: 1, a: 2}  // m may be {2: 1} or {2: 2}: evaluation order between the two map assignments is not specified
n := map[int]int{a: f()}      // n may be {2: 3} or {3: 3}: evaluation order between the key and the value is not specified

At package level, initialization dependencies override the left-to-right rule for individual initialization expressions, but not for operands within each expression:

var a, b, c = f() + v(), g(), sqr(u()) + v()

func f() int        { return c }
func g() int        { return a }
func sqr(x int) int { return x*x }

// functions u and v are independent of all other variables and functions

The function calls happen in the order u(), sqr(), v(), f(), v(), and g().

Floating-point operations within a single expression are evaluated according to the associativity of the operators. Explicit parentheses affect the evaluation by overriding the default associativity. In the expression x + (y + z) the addition y + z is performed before adding x.

Statements

Statements control execution.

Statement =
	Declaration | LabeledStmt | SimpleStmt |
	GoStmt | ReturnStmt | BreakStmt | ContinueStmt | GotoStmt |
	FallthroughStmt | Block | IfStmt | SwitchStmt | SelectStmt | ForStmt |
	DeferStmt .

SimpleStmt = EmptyStmt | ExpressionStmt | SendStmt | IncDecStmt | Assignment | ShortVarDecl .

Terminating statements

A terminating statement is one of the following:

  1. A "return" or "goto" statement.
  2. A call to the built-in function panic.
  3. A block in which the statement list ends in a terminating statement.
  4. An "if" statement in which:
    • the "else" branch is present, and
    • both branches are terminating statements.
  5. A "for" statement in which:
    • there are no "break" statements referring to the "for" statement, and
    • the loop condition is absent.
  6. A "switch" statement in which:
    • there are no "break" statements referring to the "switch" statement,
    • there is a default case, and
    • the statement lists in each case, including the default, end in a terminating statement, or a possibly labeled "fallthrough" statement.
  7. A "select" statement in which:
    • there are no "break" statements referring to the "select" statement, and
    • the statement lists in each case, including the default if present, end in a terminating statement.
  8. A labeled statement labeling a terminating statement.

All other statements are not terminating.

A statement list ends in a terminating statement if the list is not empty and its final statement is terminating.

Empty statements

The empty statement does nothing.

EmptyStmt = .

Labeled statements

A labeled statement may be the target of a goto, break or continue statement.

LabeledStmt = Label ":" Statement .
Label       = identifier .
Error: log.Panic("error encountered")

Expression statements

With the exception of specific built-in functions, function and method calls and receive operations can appear in statement context. Such statements may be parenthesized.

ExpressionStmt = Expression .

The following built-in functions are not permitted in statement context:

append cap complex imag len make new real
unsafe.Alignof unsafe.Offsetof unsafe.Sizeof
h(x+y)
f.Close()
<-ch
(<-ch)
len("foo")  // illegal if len is the built-in function

Send statements

A send statement sends a value on a channel. The channel expression must be of channel type, the channel direction must permit send operations, and the type of the value to be sent must be assignable to the channel's element type.

SendStmt = Channel "<-" Expression .
Channel  = Expression .

Both the channel and the value expression are evaluated before communication begins. Communication blocks until the send can proceed. A send on an unbuffered channel can proceed if a receiver is ready. A send on a buffered channel can proceed if there is room in the buffer. A send on a closed channel proceeds by causing a run-time panic. A send on a nil channel blocks forever.

ch <- 3  // send value 3 to channel ch

IncDec statements

The "++" and "--" statements increment or decrement their operands by the untyped constant 1. As with an assignment, the operand must be addressable or a map index expression.

IncDecStmt = Expression ( "++" | "--" ) .

The following assignment statements are semantically equivalent:

IncDec statement    Assignment
x++                 x += 1
x--                 x -= 1

Assignments

Assignment = ExpressionList assign_op ExpressionList .

assign_op = [ add_op | mul_op ] "=" .

Each left-hand side operand must be addressable, a map index expression, or (for = assignments only) the blank identifier. Operands may be parenthesized.

x = 1
*p = f()
a[i] = 23
(k) = <-ch  // same as: k = <-ch

An assignment operation x op= y where op is a binary arithmetic operation equivalent to x = x op y but evaluates x only once. The op= construct is a single token. In assignment operations, both the left- and right-hand expression lists must contain exactly one single-valued expression, and the left-hand expression must not be the blank identifier.

a[i] <<= 2
i &^= 1<<n

A tuple assignment assigns the individual elements of a multi-valued operation to a list of variables. There are two forms. In the first, the right hand operand is a single multi-valued expression such as a function evaluation or channel or map operation or a type assertion. The number of operands on the left hand side must match the number of values. For instance, if f is a function returning two values,

x, y = f()

assigns the first value to x and the second to y. In the second form, the number of operands on the left must equal the number of expressions on the right, each of which must be single-valued, and the nth expression on the right is assigned to the nth operand on the left:

one, two, three = '一', '二', '三'

The blank identifier provides a way to ignore right-hand side values in an assignment:

_ = x       // evaluate x but ignore it
x, _ = f()  // evaluate f() but ignore second result value

The assignment proceeds in two phases. First, the operands of index expressions and pointer indirections (including implicit pointer indirections in selectors) on the left and the expressions on the right are all evaluated in the usual order. Second, the assignments are carried out in left-to-right order.

a, b = b, a  // exchange a and b

x := []int{1, 2, 3}
i := 0
i, x[i] = 1, 2  // set i = 1, x[0] = 2

i = 0
x[i], i = 2, 1  // set x[0] = 2, i = 1

x[0], x[0] = 1, 2  // set x[0] = 1, then x[0] = 2 (so x[0] == 2 at end)

x[1], x[3] = 4, 5  // set x[1] = 4, then panic setting x[3] = 5.

type Point struct { x, y int }
var p *Point
x[2], p.x = 6, 7  // set x[2] = 6, then panic setting p.x = 7

i = 2
x = []int{3, 5, 7}
for i, x[i] = range x {  // set i, x[2] = 0, x[0]
	break
}
// after this loop, i == 0 and x == []int{3, 5, 3}

In assignments, each value must be assignable to the type of the operand to which it is assigned, with the following special cases:

  1. If an untyped constant is assigned to a variable of interface type or the blank identifier, the constant is first converted to type bool, rune, int, float64, complex128 or string respectively, depending on whether the value is a boolean, rune, integer, floating-point, complex, or string constant.

  2. If a left-hand side is the blank identifier, any typed or non-constant value except for the predeclared identifier nil may be assigned to it.

If statements

"If" statements specify the conditional execution of two branches according to the value of a boolean expression. If the expression evaluates to true, the "if" branch is executed, otherwise, if present, the "else" branch is executed.

IfStmt = "if" [ SimpleStmt ";" ] Expression Block [ "else" ( IfStmt | Block ) ] .
if x > max {
	x = max
}

The expression may be preceded by a simple statement, which executes before the expression is evaluated.

if x := f(); x < y {
	return x
} else if x > z {
	return z
} else {
	return y
}

Switch statements

"Switch" statements provide multi-way execution. An expression or type specifier is compared to the "cases" inside the "switch" to determine which branch to execute.

SwitchStmt = ExprSwitchStmt | TypeSwitchStmt .

There are two forms: expression switches and type switches. In an expression switch, the cases contain expressions that are compared against the value of the switch expression. In a type switch, the cases contain types that are compared against the type of a specially annotated switch expression.

Expression switches

In an expression switch, the switch expression is evaluated and the case expressions, which need not be constants, are evaluated left-to-right and top-to-bottom; the first one that equals the switch expression triggers execution of the statements of the associated case; the other cases are skipped. If no case matches and there is a "default" case, its statements are executed. There can be at most one default case and it may appear anywhere in the "switch" statement. A missing switch expression is equivalent to the boolean value true.

ExprSwitchStmt = "switch" [ SimpleStmt ";" ] [ Expression ] "{" { ExprCaseClause } "}" .
ExprCaseClause = ExprSwitchCase ":" StatementList .
ExprSwitchCase = "case" ExpressionList | "default" .

In a case or default clause, the last non-empty statement may be a (possibly labeled) "fallthrough" statement to indicate that control should flow from the end of this clause to the first statement of the next clause. Otherwise control flows to the end of the "switch" statement. A "fallthrough" statement may appear as the last statement of all but the last clause of an expression switch.

The expression may be preceded by a simple statement, which executes before the expression is evaluated.

switch tag {
default: s3()
case 0, 1, 2, 3: s1()
case 4, 5, 6, 7: s2()
}

switch x := f(); {  // missing switch expression means "true"
case x < 0: return -x
default: return x
}

switch {
case x < y: f1()
case x < z: f2()
case x == 4: f3()
}

Type switches

A type switch compares types rather than values. It is otherwise similar to an expression switch. It is marked by a special switch expression that has the form of a type assertion using the reserved word type rather than an actual type:

switch x.(type) {
// cases
}

Cases then match actual types T against the dynamic type of the expression x. As with type assertions, x must be of interface type, and each non-interface type T listed in a case must implement the type of x.

TypeSwitchStmt  = "switch" [ SimpleStmt ";" ] TypeSwitchGuard "{" { TypeCaseClause } "}" .
TypeSwitchGuard = [ identifier ":=" ] PrimaryExpr "." "(" "type" ")" .
TypeCaseClause  = TypeSwitchCase ":" StatementList .
TypeSwitchCase  = "case" TypeList | "default" .
TypeList        = Type { "," Type } .

The TypeSwitchGuard may include a short variable declaration. When that form is used, the variable is declared at the beginning of the implicit block in each clause. In clauses with a case listing exactly one type, the variable has that type; otherwise, the variable has the type of the expression in the TypeSwitchGuard.

The type in a case may be nil; that case is used when the expression in the TypeSwitchGuard is a nil interface value.

Given an expression x of type interface{}, the following type switch:

switch i := x.(type) {
case nil:
	printString("x is nil")                // type of i is type of x (interface{})
case int:
	printInt(i)                            // type of i is int
case float64:
	printFloat64(i)                        // type of i is float64
case func(int) float64:
	printFunction(i)                       // type of i is func(int) float64
case bool, string:
	printString("type is bool or string")  // type of i is type of x (interface{})
default:
	printString("don't know the type")     // type of i is type of x (interface{})
}

could be rewritten:

v := x  // x is evaluated exactly once
if v == nil {
	i := v                                 // type of i is type of x (interface{})
	printString("x is nil")
} else if i, isInt := v.(int); isInt {
	printInt(i)                            // type of i is int
} else if i, isFloat64 := v.(float64); isFloat64 {
	printFloat64(i)                        // type of i is float64
} else if i, isFunc := v.(func(int) float64); isFunc {
	printFunction(i)                       // type of i is func(int) float64
} else {
	_, isBool := v.(bool)
	_, isString := v.(string)
	if isBool || isString {
		i := v                         // type of i is type of x (interface{})
		printString("type is bool or string")
	} else {
		i := v                         // type of i is type of x (interface{})
		printString("don't know the type")
	}
}

The type switch guard may be preceded by a simple statement, which executes before the guard is evaluated.

The "fallthrough" statement is not permitted in a type switch.

For statements

A "for" statement specifies repeated execution of a block. The iteration is controlled by a condition, a "for" clause, or a "range" clause.

ForStmt = "for" [ Condition | ForClause | RangeClause ] Block .
Condition = Expression .

In its simplest form, a "for" statement specifies the repeated execution of a block as long as a boolean condition evaluates to true. The condition is evaluated before each iteration. If the condition is absent, it is equivalent to the boolean value true.

for a < b {
	a *= 2
}

A "for" statement with a ForClause is also controlled by its condition, but additionally it may specify an init and a post statement, such as an assignment, an increment or decrement statement. The init statement may be a short variable declaration, but the post statement must not.

ForClause = [ InitStmt ] ";" [ Condition ] ";" [ PostStmt ] .
InitStmt = SimpleStmt .
PostStmt = SimpleStmt .
for i := 0; i < 10; i++ {
	f(i)
}

If non-empty, the init statement is executed once before evaluating the condition for the first iteration; the post statement is executed after each execution of the block (and only if the block was executed). Any element of the ForClause may be empty but the semicolons are required unless there is only a condition. If the condition is absent, it is equivalent to the boolean value true.

for cond { S() }    is the same as    for ; cond ; { S() }
for      { S() }    is the same as    for true     { S() }

A "for" statement with a "range" clause iterates through all entries of an array, slice, string or map, or values received on a channel. For each entry it assigns iteration values to corresponding iteration variables and then executes the block.

RangeClause = ( ExpressionList "=" | IdentifierList ":=" ) "range" Expression .

The expression on the right in the "range" clause is called the range expression, which may be an array, pointer to an array, slice, string, map, or channel permitting receive operations. As with an assignment, the operands on the left must be addressable or map index expressions; they denote the iteration variables. If the range expression is a channel, only one iteration variable is permitted, otherwise there may be one or two. In the latter case, if the second iteration variable is the blank identifier, the range clause is equivalent to the same clause with only the first variable present.

The range expression is evaluated once before beginning the loop, with one exception. If the range expression is an array or a pointer to an array and only the first iteration value is present, only the range expression's length is evaluated; if that length is constant by definition, the range expression itself will not be evaluated.

Function calls on the left are evaluated once per iteration. For each iteration, iteration values are produced as follows:

Range expression                          1st value          2nd value (if 2nd variable is present)

array or slice  a  [n]E, *[n]E, or []E    index    i  int    a[i]       E
string          s  string type            index    i  int    see below  rune
map             m  map[K]V                key      k  K      m[k]       V
channel         c  chan E, <-chan E       element  e  E
  1. For an array, pointer to array, or slice value a, the index iteration values are produced in increasing order, starting at element index 0. If only the first iteration variable is present, the range loop produces iteration values from 0 up to len(a)-1 and does not index into the array or slice itself. For a nil slice, the number of iterations is 0.
  2. For a string value, the "range" clause iterates over the Unicode code points in the string starting at byte index 0. On successive iterations, the index value will be the index of the first byte of successive UTF-8-encoded code points in the string, and the second value, of type rune, will be the value of the corresponding code point. If the iteration encounters an invalid UTF-8 sequence, the second value will be 0xFFFD, the Unicode replacement character, and the next iteration will advance a single byte in the string.
  3. The iteration order over maps is not specified and is not guaranteed to be the same from one iteration to the next. If map entries that have not yet been reached are removed during iteration, the corresponding iteration values will not be produced. If map entries are created during iteration, that entry may be produced during the iteration or may be skipped. The choice may vary for each entry created and from one iteration to the next. If the map is nil, the number of iterations is 0.
  4. For channels, the iteration values produced are the successive values sent on the channel until the channel is closed. If the channel is nil, the range expression blocks forever.

The iteration values are assigned to the respective iteration variables as in an assignment statement.

The iteration variables may be declared by the "range" clause using a form of short variable declaration (:=). In this case their types are set to the types of the respective iteration values and their scope ends at the end of the "for" statement; they are re-used in each iteration. If the iteration variables are declared outside the "for" statement, after execution their values will be those of the last iteration.

var testdata *struct {
	a *[7]int
}
for i, _ := range testdata.a {
	// testdata.a is never evaluated; len(testdata.a) is constant
	// i ranges from 0 to 6
	f(i)
}

var a [10]string
for i, s := range a {
	// type of i is int
	// type of s is string
	// s == a[i]
	g(i, s)
}

var key string
var val interface {}  // value type of m is assignable to val
m := map[string]int{"mon":0, "tue":1, "wed":2, "thu":3, "fri":4, "sat":5, "sun":6}
for key, val = range m {
	h(key, val)
}
// key == last map key encountered in iteration
// val == map[key]

var ch chan Work = producer()
for w := range ch {
	doWork(w)
}

Go statements

A "go" statement starts the execution of a function call as an independent concurrent thread of control, or goroutine, within the same address space.

GoStmt = "go" Expression .

The expression must be a function or method call; it cannot be parenthesized. Calls of built-in functions are restricted as for expression statements.

The function value and parameters are evaluated as usual in the calling goroutine, but unlike with a regular call, program execution does not wait for the invoked function to complete. Instead, the function begins executing independently in a new goroutine. When the function terminates, its goroutine also terminates. If the function has any return values, they are discarded when the function completes.

go Server()
go func(ch chan<- bool) { for { sleep(10); ch <- true; }} (c)

Select statements

A "select" statement chooses which of a set of possible send or receive operations will proceed. It looks similar to a "switch" statement but with the cases all referring to communication operations.

SelectStmt = "select" "{" { CommClause } "}" .
CommClause = CommCase ":" StatementList .
CommCase   = "case" ( SendStmt | RecvStmt ) | "default" .
RecvStmt   = [ ExpressionList "=" | IdentifierList ":=" ] RecvExpr .
RecvExpr   = Expression .

A case with a RecvStmt may assign the result of a RecvExpr to one or two variables, which may be declared using a short variable declaration. The RecvExpr must be a (possibly parenthesized) receive operation. There can be at most one default case and it may appear anywhere in the list of cases.

Execution of a "select" statement proceeds in several steps:

  1. For all the cases in the statement, the channel operands of receive operations and the channel and right-hand-side expressions of send statements are evaluated exactly once, in source order, upon entering the "select" statement. The result is a set of channels to receive from or send to, and the corresponding values to send. Any side effects in that evaluation will occur irrespective of which (if any) communication operation is selected to proceed. Expressions on the left-hand side of a RecvStmt with a short variable declaration or assignment are not yet evaluated.
  2. If one or more of the communications can proceed, a single one that can proceed is chosen via a uniform pseudo-random selection. Otherwise, if there is a default case, that case is chosen. If there is no default case, the "select" statement blocks until at least one of the communications can proceed.
  3. Unless the selected case is the default case, the respective communication operation is executed.
  4. If the selected case is a RecvStmt with a short variable declaration or an assignment, the left-hand side expressions are evaluated and the received value (or values) are assigned.
  5. The statement list of the selected case is executed.

Since communication on nil channels can never proceed, a select with only nil channels and no default case blocks forever.

var a []int
var c, c1, c2, c3, c4 chan int
var i1, i2 int
select {
case i1 = <-c1:
	print("received ", i1, " from c1\n")
case c2 <- i2:
	print("sent ", i2, " to c2\n")
case i3, ok := (<-c3):  // same as: i3, ok := <-c3
	if ok {
		print("received ", i3, " from c3\n")
	} else {
		print("c3 is closed\n")
	}
case a[f()] = <-c4:
	// same as:
	// case t := <-c4
	//	a[f()] = t
default:
	print("no communication\n")
}

for {  // send random sequence of bits to c
	select {
	case c <- 0:  // note: no statement, no fallthrough, no folding of cases
	case c <- 1:
	}
}

select {}  // block forever

Return statements

A "return" statement in a function F terminates the execution of F, and optionally provides one or more result values. Any functions deferred by F are executed before F returns to its caller.

ReturnStmt = "return" [ ExpressionList ] .

In a function without a result type, a "return" statement must not specify any result values.

func noResult() {
	return
}

There are three ways to return values from a function with a result type:

  1. The return value or values may be explicitly listed in the "return" statement. Each expression must be single-valued and assignable to the corresponding element of the function's result type.
    func simpleF() int {
    	return 2
    }
    
    func complexF1() (re float64, im float64) {
    	return -7.0, -4.0
    }
    
  2. The expression list in the "return" statement may be a single call to a multi-valued function. The effect is as if each value returned from that function were assigned to a temporary variable with the type of the respective value, followed by a "return" statement listing these variables, at which point the rules of the previous case apply.
    func complexF2() (re float64, im float64) {
    	return complexF1()
    }
    
  3. The expression list may be empty if the function's result type specifies names for its result parameters. The result parameters act as ordinary local variables and the function may assign values to them as necessary. The "return" statement returns the values of these variables.
    func complexF3() (re float64, im float64) {
    	re = 7.0
    	im = 4.0
    	return
    }
    
    func (devnull) Write(p []byte) (n int, _ error) {
    	n = len(p)
    	return
    }
    

Regardless of how they are declared, all the result values are initialized to the zero values for their type upon entry to the function. A "return" statement that specifies results sets the result parameters before any deferred functions are executed.

Implementation restriction: A compiler may disallow an empty expression list in a "return" statement if a different entity (constant, type, or variable) with the same name as a result parameter is in scope at the place of the return.

func f(n int) (res int, err error) {
	if _, err := f(n-1); err != nil {
		return  // invalid return statement: err is shadowed
	}
	return
}

Break statements

A "break" statement terminates execution of the innermost "for", "switch", or "select" statement within the same function.

BreakStmt = "break" [ Label ] .

If there is a label, it must be that of an enclosing "for", "switch", or "select" statement, and that is the one whose execution terminates.

OuterLoop:
	for i = 0; i < n; i++ {
		for j = 0; j < m; j++ {
			switch a[i][j] {
			case nil:
				state = Error
				break OuterLoop
			case item:
				state = Found
				break OuterLoop
			}
		}
	}

Continue statements

A "continue" statement begins the next iteration of the innermost "for" loop at its post statement. The "for" loop must be within the same function.

ContinueStmt = "continue" [ Label ] .

If there is a label, it must be that of an enclosing "for" statement, and that is the one whose execution advances.

RowLoop:
	for y, row := range rows {
		for x, data := range row {
			if data == endOfRow {
				continue RowLoop
			}
			row[x] = data + bias(x, y)
		}
	}

Goto statements

A "goto" statement transfers control to the statement with the corresponding label within the same function.

GotoStmt = "goto" Label .
goto Error

Executing the "goto" statement must not cause any variables to come into scope that were not already in scope at the point of the goto. For instance, this example:

	goto L  // BAD
	v := 3
L:

is erroneous because the jump to label L skips the creation of v.

A "goto" statement outside a block cannot jump to a label inside that block. For instance, this example:

if n%2 == 1 {
	goto L1
}
for n > 0 {
	f()
	n--
L1:
	f()
	n--
}

is erroneous because the label L1 is inside the "for" statement's block but the goto is not.

Fallthrough statements

A "fallthrough" statement transfers control to the first statement of the next case clause in a expression "switch" statement. It may be used only as the final non-empty statement in such a clause.

FallthroughStmt = "fallthrough" .

Defer statements

A "defer" statement invokes a function whose execution is deferred to the moment the surrounding function returns, either because the surrounding function executed a return statement, reached the end of its function body, or because the corresponding goroutine is panicking.

DeferStmt = "defer" Expression .

The expression must be a function or method call; it cannot be parenthesized. Calls of built-in functions are restricted as for expression statements.

Each time the "defer" statement executes, the function value and parameters to the call are evaluated as usual and saved anew but the actual function body is not executed. Instead, deferred functions are executed immediately before the surrounding function returns, in the reverse order they were deferred.

For instance, if the deferred function is a function literal and the surrounding function has named result parameters that are in scope within the literal, the deferred function may access and modify the result parameters before they are returned. If the deferred function has any return values, they are discarded when the function completes. (See also the section on handling panics.)

lock(l)
defer unlock(l)  // unlocking happens before surrounding function returns

// prints 3 2 1 0 before surrounding function returns
for i := 0; i <= 3; i++ {
	defer fmt.Print(i)
}

// f returns 1
func f() (result int) {
	defer func() {
		result++
	}()
	return 0
}

Built-in functions

Built-in functions are predeclared. They are called like any other function but some of them accept a type instead of an expression as the first argument.

The built-in functions do not have standard Go types, so they can only appear in call expressions; they cannot be used as function values.

BuiltinCall = identifier "(" [ BuiltinArgs [ "," ] ] ")" .
BuiltinArgs = Type [ "," ArgumentList ] | ArgumentList .

Close

For a channel c, the built-in function close(c) records that no more values will be sent on the channel. It is an error if c is a receive-only channel. Sending to or closing a closed channel causes a run-time panic. Closing the nil channel also causes a run-time panic. After calling close, and after any previously sent values have been received, receive operations will return the zero value for the channel's type without blocking. The multi-valued receive operation returns a received value along with an indication of whether the channel is closed.

Length and capacity

The built-in functions len and cap take arguments of various types and return a result of type int. The implementation guarantees that the result always fits into an int.

Call      Argument type    Result

len(s)    string type      string length in bytes
          [n]T, *[n]T      array length (== n)
          []T              slice length
          map[K]T          map length (number of defined keys)
          chan T           number of elements queued in channel buffer

cap(s)    [n]T, *[n]T      array length (== n)
          []T              slice capacity
          chan T           channel buffer capacity

The capacity of a slice is the number of elements for which there is space allocated in the underlying array. At any time the following relationship holds:

0 <= len(s) <= cap(s)

The length of a nil slice, map or channel is 0. The capacity of a nil slice or channel is 0.

The expression len(s) is constant if s is a string constant. The expressions len(s) and cap(s) are constants if the type of s is an array or pointer to an array and the expression s does not contain channel receives or (non-constant) function calls; in this case s is not evaluated. Otherwise, invocations of len and cap are not constant and s is evaluated.

const (
	c1 = imag(2i)                    // imag(2i) = 2.0 is a constant
	c2 = len([10]float64{2})         // [10]float64{2} contains no function calls
	c3 = len([10]float64{c1})        // [10]float64{c1} contains no function calls
	c4 = len([10]float64{imag(2i)})  // imag(2i) is a constant and no function call is issued
	c5 = len([10]float64{imag(z)})   // invalid: imag(x) is a (non-constant) function call
)
var z complex128

Allocation

The built-in function new takes a type T and returns a value of type *T. The memory is initialized as described in the section on initial values.

new(T)

For instance

type S struct { a int; b float64 }
new(S)

dynamically allocates memory for a variable of type S, initializes it (a=0, b=0.0), and returns a value of type *S containing the address of the memory.

Making slices, maps and channels

The built-in function make takes a type T, which must be a slice, map or channel type, optionally followed by a type-specific list of expressions. It returns a value of type T (not *T). The memory is initialized as described in the section on initial values.

Call             Type T     Result

make(T, n)       slice      slice of type T with length n and capacity n
make(T, n, m)    slice      slice of type T with length n and capacity m

make(T)          map        map of type T
make(T, n)       map        map of type T with initial space for n elements

make(T)          channel    unbuffered channel of type T
make(T, n)       channel    buffered channel of type T, buffer size n

The size arguments n and m must be of integer type or untyped. A constant size argument must be non-negative and representable by a value of type int. If both n and m are provided and are constant, then n must be no larger than m. If n is negative or larger than m at run time, a run-time panic occurs.

s := make([]int, 10, 100)       // slice with len(s) == 10, cap(s) == 100
s := make([]int, 1e3)           // slice with len(s) == cap(s) == 1000
s := make([]int, 1<<63)         // illegal: len(s) is not representable by a value of type int
s := make([]int, 10, 0)         // illegal: len(s) > cap(s)
c := make(chan int, 10)         // channel with a buffer size of 10
m := make(map[string]int, 100)  // map with initial space for 100 elements

Appending to and copying slices

The built-in functions append and copy assist in common slice operations. For both functions, the result is independent of whether the memory referenced by the arguments overlaps.

The variadic function append appends zero or more values x to s of type S, which must be a slice type, and returns the resulting slice, also of type S. The values x are passed to a parameter of type ...T where T is the element type of S and the respective parameter passing rules apply. As a special case, append also accepts a first argument assignable to type []byte with a second argument of string type followed by .... This form appends the bytes of the string.

append(s S, x ...T) S  // T is the element type of S

If the capacity of s is not large enough to fit the additional values, append allocates a new, sufficiently large underlying array that fits both the existing slice elements and the additional values. Otherwise, append re-uses the underlying array.

s0 := []int{0, 0}
s1 := append(s0, 2)                // append a single element     s1 == []int{0, 0, 2}
s2 := append(s1, 3, 5, 7)          // append multiple elements    s2 == []int{0, 0, 2, 3, 5, 7}
s3 := append(s2, s0...)            // append a slice              s3 == []int{0, 0, 2, 3, 5, 7, 0, 0}
s4 := append(s3[3:6], s3[2:]...)   // append overlapping slice    s4 == []int{3, 5, 7, 2, 3, 5, 7, 0, 0}

var t []interface{}
t = append(t, 42, 3.1415, "foo")                                  t == []interface{}{42, 3.1415, "foo"}

var b []byte
b = append(b, "bar"...)            // append string contents      b == []byte{'b', 'a', 'r' }

The function copy copies slice elements from a source src to a destination dst and returns the number of elements copied. Both arguments must have identical element type T and must be assignable to a slice of type []T. The number of elements copied is the minimum of len(src) and len(dst). As a special case, copy also accepts a destination argument assignable to type []byte with a source argument of a string type. This form copies the bytes from the string into the byte slice.

copy(dst, src []T) int
copy(dst []byte, src string) int

Examples:

var a = [...]int{0, 1, 2, 3, 4, 5, 6, 7}
var s = make([]int, 6)
var b = make([]byte, 5)
n1 := copy(s, a[0:])            // n1 == 6, s == []int{0, 1, 2, 3, 4, 5}
n2 := copy(s, s[2:])            // n2 == 4, s == []int{2, 3, 4, 5, 4, 5}
n3 := copy(b, "Hello, World!")  // n3 == 5, b == []byte("Hello")

Deletion of map elements

The built-in function delete removes the element with key k from a map m. The type of k must be assignable to the key type of m.

delete(m, k)  // remove element m[k] from map m

If the map m is nil or the element m[k] does not exist, delete is a no-op.

Manipulating complex numbers

Three functions assemble and disassemble complex numbers. The built-in function complex constructs a complex value from a floating-point real and imaginary part, while real and imag extract the real and imaginary parts of a complex value.

complex(realPart, imaginaryPart floatT) complexT
real(complexT) floatT
imag(complexT) floatT

The type of the arguments and return value correspond. For complex, the two arguments must be of the same floating-point type and the return type is the complex type with the corresponding floating-point constituents: complex64 for float32, complex128 for float64. The real and imag functions together form the inverse, so for a complex value z, z == complex(real(z), imag(z)).

If the operands of these functions are all constants, the return value is a constant.

var a = complex(2, -2)             // complex128
var b = complex(1.0, -1.4)         // complex128
x := float32(math.Cos(math.Pi/2))  // float32
var c64 = complex(5, -x)           // complex64
var im = imag(b)                   // float64
var rl = real(c64)                 // float32

Handling panics

Two built-in functions, panic and recover, assist in reporting and handling run-time panics and program-defined error conditions.

func panic(interface{})
func recover() interface{}

While executing a function F, an explicit call to panic or a run-time panic terminates the execution of F. Any functions deferred by F are then executed as usual. Next, any deferred functions run by F's caller are run, and so on up to any deferred by the top-level function in the executing goroutine. At that point, the program is terminated and the error condition is reported, including the value of the argument to panic. This termination sequence is called panicking.

panic(42)
panic("unreachable")
panic(Error("cannot parse"))

The recover function allows a program to manage behavior of a panicking goroutine. Suppose a function G defers a function D that calls recover and a panic occurs in a function on the same goroutine in which G is executing. When the running of deferred functions reaches D, the return value of D's call to recover will be the value passed to the call of panic. If D returns normally, without starting a new panic, the panicking sequence stops. In that case, the state of functions called between G and the call to panic is discarded, and normal execution resumes. Any functions deferred by G before D are then run and G's execution terminates by returning to its caller.

The return value of recover is nil if any of the following conditions holds:

  • panic's argument was nil;
  • the goroutine is not panicking;
  • recover was not called directly by a deferred function.

The protect function in the example below invokes the function argument g and protects callers from run-time panics raised by g.

func protect(g func()) {
	defer func() {
		log.Println("done")  // Println executes normally even if there is a panic
		if x := recover(); x != nil {
			log.Printf("run time panic: %v", x)
		}
	}()
	log.Println("start")
	g()
}

Bootstrapping

Current implementations provide several built-in functions useful during bootstrapping. These functions are documented for completeness but are not guaranteed to stay in the language. They do not return a result.

Function   Behavior

print      prints all arguments; formatting of arguments is implementation-specific
println    like print but prints spaces between arguments and a newline at the end

Packages

Go programs are constructed by linking together packages. A package in turn is constructed from one or more source files that together declare constants, types, variables and functions belonging to the package and which are accessible in all files of the same package. Those elements may be exported and used in another package.

Source file organization

Each source file consists of a package clause defining the package to which it belongs, followed by a possibly empty set of import declarations that declare packages whose contents it wishes to use, followed by a possibly empty set of declarations of functions, types, variables, and constants.

SourceFile       = PackageClause ";" { ImportDecl ";" } { TopLevelDecl ";" } .

Package clause

A package clause begins each source file and defines the package to which the file belongs.

PackageClause  = "package" PackageName .
PackageName    = identifier .

The PackageName must not be the blank identifier.

package math

A set of files sharing the same PackageName form the implementation of a package. An implementation may require that all source files for a package inhabit the same directory.

Import declarations

An import declaration states that the source file containing the declaration depends on functionality of the imported package (§Program initialization and execution) and enables access to exported identifiers of that package. The import names an identifier (PackageName) to be used for access and an ImportPath that specifies the package to be imported.

ImportDecl       = "import" ( ImportSpec | "(" { ImportSpec ";" } ")" ) .
ImportSpec       = [ "." | PackageName ] ImportPath .
ImportPath       = string_lit .

The PackageName is used in qualified identifiers to access exported identifiers of the package within the importing source file. It is declared in the file block. If the PackageName is omitted, it defaults to the identifier specified in the package clause of the imported package. If an explicit period (.) appears instead of a name, all the package's exported identifiers declared in that package's package block will be declared in the importing source file's file block and must be accessed without a qualifier.

The interpretation of the ImportPath is implementation-dependent but it is typically a substring of the full file name of the compiled package and may be relative to a repository of installed packages.

Implementation restriction: A compiler may restrict ImportPaths to non-empty strings using only characters belonging to Unicode's L, M, N, P, and S general categories (the Graphic characters without spaces) and may also exclude the characters !"#$%&'()*,:;<=>?[\]^`{|} and the Unicode replacement character U+FFFD.

Assume we have compiled a package containing the package clause package math, which exports function Sin, and installed the compiled package in the file identified by "lib/math". This table illustrates how Sin is accessed in files that import the package after the various types of import declaration.

Import declaration          Local name of Sin

import   "lib/math"         math.Sin
import m "lib/math"         m.Sin
import . "lib/math"         Sin

An import declaration declares a dependency relation between the importing and imported package. It is illegal for a package to import itself, directly or indirectly, or to directly import a package without referring to any of its exported identifiers. To import a package solely for its side-effects (initialization), use the blank identifier as explicit package name:

import _ "lib/math"

An example package

Here is a complete Go package that implements a concurrent prime sieve.

package main

import "fmt"

// Send the sequence 2, 3, 4, … to channel 'ch'.
func generate(ch chan<- int) {
	for i := 2; ; i++ {
		ch <- i  // Send 'i' to channel 'ch'.
	}
}

// Copy the values from channel 'src' to channel 'dst',
// removing those divisible by 'prime'.
func filter(src <-chan int, dst chan<- int, prime int) {
	for i := range src {  // Loop over values received from 'src'.
		if i%prime != 0 {
			dst <- i  // Send 'i' to channel 'dst'.
		}
	}
}

// The prime sieve: Daisy-chain filter processes together.
func sieve() {
	ch := make(chan int)  // Create a new channel.
	go generate(ch)       // Start generate() as a subprocess.
	for {
		prime := <-ch
		fmt.Print(prime, "\n")
		ch1 := make(chan int)
		go filter(ch, ch1, prime)
		ch = ch1
	}
}

func main() {
	sieve()
}

Program initialization and execution

The zero value

When memory is allocated to store a value, either through a declaration or a call of make or new, and no explicit initialization is provided, the memory is given a default initialization. Each element of such a value is set to the zero value for its type: false for booleans, 0 for integers, 0.0 for floats, "" for strings, and nil for pointers, functions, interfaces, slices, channels, and maps. This initialization is done recursively, so for instance each element of an array of structs will have its fields zeroed if no value is specified.

These two simple declarations are equivalent:

var i int
var i int = 0

After

type T struct { i int; f float64; next *T }
t := new(T)

the following holds:

t.i == 0
t.f == 0.0
t.next == nil

The same would also be true after

var t T

Package initialization

Within a package, package-level variables are initialized according to their dependencies: if a variable x depends on a variable y, x will be initialized after y.

Dependency analysis does not rely on the actual values of the variables, only on lexical references to them in the source, analyzed transitively. For instance, a variable x's initialization expression may refer to a function whose body refers to variable y; if so, x depends on y. Specifically:

  • A reference to a variable or function is an identifier denoting that variable or function.
  • A reference to a method m is a method value or method expression of the form t.m, where the (static) type of t is not an interface type, and the method m is in the method set of t. It is immaterial whether the resulting function value t.m is invoked.
  • A variable, function, or method x depends on a variable y if x's initialization expression or body (for functions and methods) contains a reference to y or to a function or method that depends on y.

Dependency analysis is performed per package; only references referring to variables, functions, and methods declared in the current package are considered. It is an error if variable dependencies form a cycle (but dependency cycles containing no variables are permitted). If two variables are independent of each other, they are initialized in the order they are declared in the source, possibly in multiple files, as presented to the compiler.

For example, given the declarations

var (
	a = c + b
	b = f()
	c = f()
	d = 3
)

func f() int {
	d++
	return d
}

the initialization order is d, b, c, a. Since b and c are independent of each other, they are initialized in declaration order (b before c).

Variables may also be initialized using functions named init declared in the package block, with no arguments and no result parameters.

func init() { … }

Multiple such functions may be defined, even within a single source file. The init identifier is not declared and thus init functions cannot be referred to from anywhere in a program.

A package with no imports is initialized by assigning initial values to all its package-level variables followed by calling all init functions in the order they appear in the source, possibly in multiple files, as presented to the compiler. If a package has imports, the imported packages are initialized before initializing the package itself. If multiple packages import a package, the imported package will be initialized only once. The importing of packages, by construction, guarantees that there can be no cyclic initialization dependencies.

Package initialization—variable initialization and the invocation of init functions—happens in a single goroutine, sequentially, one package at a time. An init function may launch other goroutines, which can run concurrently with the initialization code. However, initialization always sequences the init functions: it will not invoke the next one until the previous one has returned.

Program execution

A complete program is created by linking a single, unimported package called the main package with all the packages it imports, transitively. The main package must have package name main and declare a function main that takes no arguments and returns no value.

func main() { … }

Program execution begins by initializing the main package and then invoking the function main. When that function invocation returns, the program exits. It does not wait for other (non-main) goroutines to complete.

Errors

The predeclared type error is defined as

type error interface {
	Error() string
}

It is the conventional interface for representing an error condition, with the nil value representing no error. For instance, a function to read data from a file might be defined:

func Read(f *File, b []byte) (n int, err error)

Run-time panics

Execution errors such as attempting to index an array out of bounds trigger a run-time panic equivalent to a call of the built-in function panic with a value of the implementation-defined interface type runtime.Error. That type satisfies the predeclared interface type error. The exact error values that represent distinct run-time error conditions are unspecified.

package runtime

type Error interface {
	error
	// and perhaps other methods
}

System considerations

Package unsafe

The built-in package unsafe, known to the compiler, provides facilities for low-level programming including operations that violate the type system. A package using unsafe must be vetted manually for type safety. The package provides the following interface:

package unsafe

type ArbitraryType int  // shorthand for an arbitrary Go type; it is not a real type
type Pointer *ArbitraryType

func Alignof(variable ArbitraryType) uintptr
func Offsetof(selector ArbitraryType) uintptr
func Sizeof(variable ArbitraryType) uintptr

Any pointer or value of underlying type uintptr can be converted to a Pointer type and vice versa. A Pointer is a pointer type but a Pointer value may not be dereferenced.

var f float64
bits = *(*uint64)(unsafe.Pointer(&f))

type ptr unsafe.Pointer
bits = *(*uint64)(ptr(&f))

var p ptr = nil

The functions Alignof and Sizeof take an expression x of any type and return the alignment or size, respectively, of a hypothetical variable v as if v was declared via var v = x.

The function Offsetof takes a (possibly parenthesized) selector s.f, denoting a field f of the struct denoted by s or *s, and returns the field offset in bytes relative to the struct's address. If f is an embedded field, it must be reachable without pointer indirections through fields of the struct. For a struct s with field f:

uintptr(unsafe.Pointer(&s)) + unsafe.Offsetof(s.f) == uintptr(unsafe.Pointer(&s.f))

Computer architectures may require memory addresses to be aligned; that is, for addresses of a variable to be a multiple of a factor, the variable's type's alignment. The function Alignof takes an expression denoting a variable of any type and returns the alignment of the (type of the) variable in bytes. For a variable x:

uintptr(unsafe.Pointer(&x)) % unsafe.Alignof(x) == 0

Calls to Alignof, Offsetof, and Sizeof are compile-time constant expressions of type uintptr.

Size and alignment guarantees

For the numeric types, the following sizes are guaranteed:

type                                 size in bytes

byte, uint8, int8                     1
uint16, int16                         2
uint32, int32, float32                4
uint64, int64, float64, complex64     8
complex128                           16

The following minimal alignment properties are guaranteed:

  1. For a variable x of any type: unsafe.Alignof(x) is at least 1.
  2. For a variable x of struct type: unsafe.Alignof(x) is the largest of all the values unsafe.Alignof(x.f) for each field f of x, but at least 1.
  3. For a variable x of array type: unsafe.Alignof(x) is the same as unsafe.Alignof(x[0]), but at least 1.

A struct or array type has size zero if it contains no fields (or elements, respectively) that have a size greater than zero. Two distinct zero-size variables may have the same address in memory.

go/doc/gopher0040755000000000000000000000000012412656737013454 5ustar00rootroot00000000000000go/doc/gopher/README0100644000000000000000000000033512412656734014406 0ustar00rootroot00000000000000The 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 go/doc/gopher/appenginegopher.jpg0100644000000000000000000041131212412656734017404 0ustar00rootroot00000000000000JFIFExifMM*bj(1r2iT,'T,'Adobe Photoshop CS2 Macintosh2011:04:07 18:12:56&(.HHJFIFHH Adobe_CMAdobed            e" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?*iM,mUT` kZѵck4IJI$RI+/ 9w3_m cdo))2wɫ0kX-?o$63+`Uu_q+eY_ef7CƸYZ}}=7ĻAֵ ` kD5@S2huĺ&׉PduESV:5]3.ʬ̳sNmefuױ=zNѮPcQc1ط#[%5G꫇<ۏSOcT]Oeceƴ:YW;+s9ip#TD9Zx&Qh$62RفfZ%YLVӪ6mͽ?&7|mBCʡ52,lƇ1|)"KٟW.uyv+VpetY~S5iH#PAIKI)I$JTI%)$OSˁ>φaVnq _)Ưn%'=S^]kN&#k쭺:]YLWlf[7ebǶbT+";bw\qsZimN̽هf'/=U3ًպX΢n `k[]4U1?Xʶ%;.s5aձˇ]I~~E%Nm9NYh5dcfTAf))겺Bqq[=+}kwJgW}c[ZK=79g}OvK]XYno_V={>-}wW=NԘ1sgc1[K'?&.a]Ժۿά8nccafSc\OM~yryu_G!VՓSpq:v]8Y=7}V۪̽8.uxvfK>fXӿ[Ώ59;QgΥRosV^3p?YVE}վ޵e30Vu<6}U_HpVF.3mlޟz_Ys~e6=إ&)DzOmާ_RSpu.KE˨ٕCn %?)+*.غ\|zlm\aJJJI$TI%5m}?g Ħ%ֺ?\/Qgo~^]כ}}9E=]u>Pg]N^-9bd7}[ǂǷ.:ε: W~V[c3顛i,{9>[/G$KX~`7kL-WO*Kǣ-i_Ss2f,+;*=]6ձj+j0#='ܺ{lkrmXYwgT{Uf\Zվцec`Ym8󵭷;ܟS_s:gh\U{?[ML/~$SOձ>}-!P>\ͶkT1sԭvM< ;/d~|˾}i~]fem)XQqޏmu[k?Iu.RI3t%%zlsWjJzϬG3 ާ. '5XFbm?z5]t|!Aq;=wһ"9gYH>Atov.xǞ}I.XVJR;/F崏ն[f;jX^XO毛iU]?am]ǹϹgJJ}o+;uΧ:ލvul龷;/}CUǭ~JUycǧox޾S[ӫ">_պ]G{ĸ=*:u9]v;/q[ tV˻GQ)?\tJ8ȣd5h,c7e}[+~`o}.Tp:[U0s.;XU4 ~tOU{,U̶Q&Tť۾k.]bJvI$TI%)sWX)}CcznF#66cϳUy[gc崮bblKO/ xxߴ ǩL zw塞Uzޕպ5Nfnt[֐6߱jBt, l:Xd<78e^_VV'=g6+m]^:슎S" w3عeEp2=_JŽ)z/YffbvևUzUlovۓХFYW9tj0Scۺ?ɱht-}O!GTmsEuPX.m;7mOFWh[zQ.x}bf;pqr1m3!%-+6^QͩQk-{gkov:6T J6-8'Y_[e}?j/ʹ F_4B"G )tI%?TI%)b}kY aٸ\ _2ն~{YXơn&/7T]1WpՋgu*ov=Q; 쬺?ӘkCuVg_O=?]EגS6u~Y[Sg2̼nb֣EtHcsӽv[uuJyK/!mv_\ȯ+eg*kۉϦldb}`Ne++N5ee+42ǵbc7Ҷ9t-~NCFHǺ2Mn;eJKz׬m*oŶ1ݻce74ީʜK:.>F"b&űF>=XhnuU?(}\zu<ٷ[]yv;FE_v?e&Z:#-roeV{kȿ*:k~Ĕn>v`0hin,ǯ)ǯ NgV8.i#W[i$.cuc݁Y~k۔M95?j&N'P0mkl}osJkG5~9ҞэJv\ֽp4=cF-5cYJΛүȠ)¨ǿ&(ë{]e~~Λ1:un:k" mm{rJm$I)ɿ?'7p8oΜqOٷ;EףŦ1_u''$;22ÏYx׺k_FRVBf/Y{*v5dbƋzK/WS?ѿ"oIOhWUŋX[e=&3󀃶W}?}Ceij-k}R:Ypmii-ű}^z5Y0I&87ջ/;ߠΛ}֒SֺC~~{Ȭ`e;|zog跽ag4:WR=JQM{ɂ Wm7Vd_i}~ג絍}VzT2SS?3}oRI$+1q[IsAs F *I)g52$L:I$$I)K 2ʿL -ػ_6ӊ?6Ulԩm9 XNjk2ZX-2^XFl,̞]] 1YV-oʪ%jOg1qfF-mncruou =6T,6z /y+ ;',u/ftd8A]EϳU95%;GU@uV>=plYM[[ZwML:jX:u~vF?TgK◹(."{=KP~ROGUǥn{ł?Mskڛ+/]z~t1im7F?-y%ֿ%ֻճ"JTʩ$ꤗʩ$?`}G/A޿;>]kRIOI/RIOI/RIOI/RIOI/RIOI/RIO_Q՜q[eÜݤm=Ugzwo>ھnI%?G}W2ɖ}v+clOʩ$4Photoshop 3.08BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket PMPPDPaperCodeName com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray PMPPDPaperCodeName Letter com.apple.print.ticket.stateFlag 0 PMTiogaPaperName com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray PMTiogaPaperName na-letter com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0 0 734 576 com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0 0 734 576 com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.stateFlag 0 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIM}}8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIM5-8BIM8BIM@@8BIM8BIMaApp Engine Gopher v3-2nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM e`JFIFHH Adobe_CMAdobed            e" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?*iM,mUT` kZѵck4IJI$RI+/ 9w3_m cdo))2wɫ0kX-?o$63+`Uu_q+eY_ef7CƸYZ}}=7ĻAֵ ` kD5@S2huĺ&׉PduESV:5]3.ʬ̳sNmefuױ=zNѮPcQc1ط#[%5G꫇<ۏSOcT]Oeceƴ:YW;+s9ip#TD9Zx&Qh$62RفfZ%YLVӪ6mͽ?&7|mBCʡ52,lƇ1|)"KٟW.uyv+VpetY~S5iH#PAIKI)I$JTI%)$OSˁ>φaVnq _)Ưn%'=S^]kN&#k쭺:]YLWlf[7ebǶbT+";bw\qsZimN̽هf'/=U3ًպX΢n `k[]4U1?Xʶ%;.s5aձˇ]I~~E%Nm9NYh5dcfTAf))겺Bqq[=+}kwJgW}c[ZK=79g}OvK]XYno_V={>-}wW=NԘ1sgc1[K'?&.a]Ժۿά8nccafSc\OM~yryu_G!VՓSpq:v]8Y=7}V۪̽8.uxvfK>fXӿ[Ώ59;QgΥRosV^3p?YVE}վ޵e30Vu<6}U_HpVF.3mlޟz_Ys~e6=إ&)DzOmާ_RSpu.KE˨ٕCn %?)+*.غ\|zlm\aJJJI$TI%5m}?g Ħ%ֺ?\/Qgo~^]כ}}9E=]u>Pg]N^-9bd7}[ǂǷ.:ε: W~V[c3顛i,{9>[/G$KX~`7kL-WO*Kǣ-i_Ss2f,+;*=]6ձj+j0#='ܺ{lkrmXYwgT{Uf\Zվцec`Ym8󵭷;ܟS_s:gh\U{?[ML/~$SOձ>}-!P>\ͶkT1sԭvM< ;/d~|˾}i~]fem)XQqޏmu[k?Iu.RI3t%%zlsWjJzϬG3 ާ. '5XFbm?z5]t|!Aq;=wһ"9gYH>Atov.xǞ}I.XVJR;/F崏ն[f;jX^XO毛iU]?am]ǹϹgJJ}o+;uΧ:ލvul龷;/}CUǭ~JUycǧox޾S[ӫ">_պ]G{ĸ=*:u9]v;/q[ tV˻GQ)?\tJ8ȣd5h,c7e}[+~`o}.Tp:[U0s.;XU4 ~tOU{,U̶Q&Tť۾k.]bJvI$TI%)sWX)}CcznF#66cϳUy[gc崮bblKO/ xxߴ ǩL zw塞Uzޕպ5Nfnt[֐6߱jBt, l:Xd<78e^_VV'=g6+m]^:슎S" w3عeEp2=_JŽ)z/YffbvևUzUlovۓХFYW9tj0Scۺ?ɱht-}O!GTmsEuPX.m;7mOFWh[zQ.x}bf;pqr1m3!%-+6^QͩQk-{gkov:6T J6-8'Y_[e}?j/ʹ F_4B"G )tI%?TI%)b}kY aٸ\ _2ն~{YXơn&/7T]1WpՋgu*ov=Q; 쬺?ӘkCuVg_O=?]EגS6u~Y[Sg2̼nb֣EtHcsӽv[uuJyK/!mv_\ȯ+eg*kۉϦldb}`Ne++N5ee+42ǵbc7Ҷ9t-~NCFHǺ2Mn;eJKz׬m*oŶ1ݻce74ީʜK:.>F"b&űF>=XhnuU?(}\zu<ٷ[]yv;FE_v?e&Z:#-roeV{kȿ*:k~Ĕn>v`0hin,ǯ)ǯ NgV8.i#W[i$.cuc݁Y~k۔M95?j&N'P0mkl}osJkG5~9ҞэJv\ֽp4=cF-5cYJΛүȠ)¨ǿ&(ë{]e~~Λ1:un:k" mm{rJm$I)ɿ?'7p8oΜqOٷ;EףŦ1_u''$;22ÏYx׺k_FRVBf/Y{*v5dbƋzK/WS?ѿ"oIOhWUŋX[e=&3󀃶W}?}Ceij-k}R:Ypmii-ű}^z5Y0I&87ջ/;ߠΛ}֒SֺC~~{Ȭ`e;|zog跽ag4:WR=JQM{ɂ Wm7Vd_i}~ג絍}VzT2SS?3}oRI$+1q[IsAs F *I)g52$L:I$$I)K 2ʿL -ػ_6ӊ?6Ulԩm9 XNjk2ZX-2^XFl,̞]] 1YV-oʪ%jOg1qfF-mncruou =6T,6z /y+ ;',u/ftd8A]EϳU95%;GU@uV>=plYM[[ZwML:jX:u~vF?TgK◹(."{=KP~ROGUǥn{ł?Mskڛ+/]z~t1im7F?-y%ֿ%ֻճ"JTʩ$ꤗʩ$?`}G/A޿;>]kRIOI/RIOI/RIOI/RIOI/RIOI/RIO_Q՜q[eÜݤm=Ugzwo>ھnI%?G}W2ɖ}v+clOʩ$8BIM!UAdobe PhotoshopAdobe Photoshop CS28BIM:http://ns.adobe.com/xap/1.0/ uuid:7CE6CFD65DFC11E0BCFAEDCC75B07363 uuid:4953275A5EF111E0BCFAEDCC75B07363 uuid:7CE6CFD55DFC11E0BCFAEDCC75B07363 uuid:7CE6CFD55DFC11E0BCFAEDCC75B07363 2011-04-07T18:12:56-07:00 2011-04-07T18:12:56-07:00 2011-04-07T18:12:56-07:00 Adobe Photoshop CS2 Macintosh image/jpeg 1 Dot Gain 20% 1 8999980/10000 8999980/10000 2 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;A5AFE4F036AAF0AABA261C5207BB848B 1431 901 -1 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;930B5231C9F210D213E2C6E624742838 ICC_PROFILEADBEprtrGRAYXYZ acspAPPLnone-ADBEcprt2descgwtpt\bkptpkTRC textCopyright 1999 Adobe Systems Incorporateddesc Dot Gain 20%XYZ -XYZ curv 0@PaDuRY9.9W" a A )   ,Ee$W2xov'D !q"."#$p%4%&'(U)")*+,e-:../01}2\3=4556789:~;m<^=Q>E?;@3A,B&C"D EF G#H'I-J4KvhfPL&"obgt1IqbydLSY%v#ʼn 6,y$1&/0PO呇m`SOn$67Mß5?8V~w?˂/l3Ha5 >̟4$%>I2S^y6~O3dJN@-A=/Oլ,gtބٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳgNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lO"ƥ܅QԝEu*hi+7X.Hy!oXJ+IOeOHoB56]lm|I#Xޫ_[V5=  <ũjǖu==呟&ͅꥍ9&?,ϮSnw2_'6tq 0X<]h?Z]Y~~9>B4f.#GiXp`~H%8m:j?X;Eonl DQt{>/*#f*#f_qȮ(t{Mm tIGF\?ⷐ%5{' y_Q9pʲo7Hk=]^d^oń7Wꚼxz^\_ަk)2)lj_~o1Mr+~TKocQ^UeŴ΍?q˶ĶѸJri~xCծJEUFt-iyȄm-Y+ /oʟ(yV.n7TO7 Xo)dDхC) 6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͔c@7$5_< /XG.Sw̟S@FٶSJ0ysczŵKۋһZc@*NHoo2T]ΧLJ6Nt_>jT/f{2XY?2qkꚝ"yO?or܆oH"S +GgBjg2s;E@e:zPal?$t>BcLqyȒUlZv}j1͛6lٳf͛6l }Zj "sgM֑lL*a?}98c[[Lsrc"[9_ ˧FPtSXd?d%?*jZ6ZլٕJ2R|8y3y%K#9"_75-'o&~$}Da$|] U?ׅʟ$9f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳ`MWW-Q;kxZIX*601]'!:z>c_<ί4ܲׯfxwdliz=:iIs;tH( α;kad=>#J5?^jԼ8Ce {a&:>8M&l ӏڸIFn]:zPVq6lٳf͑-75;Wֳ1n7R6c?甴,ۋMHGQv)alٳf͛6lٳceeSn?#=&?t-۟E|6lٳf͛6lٳf͛6ly;^qkpu%|KOSz8Sy)|Q %:h?1yA[(4 <|o<'ѵqwKk:x]M^-]b LӖD8ȟ;,I4U+LJ/Nu8Vh nSdٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6յ=)Ud̛̿;>v^MR>0+>1C/zkC|g&]^µkE\8|hmF},^A4.~cs]L)no 4TE <W\[6lٳf͛6lٳf͟<޿̫W>͛6lٳf͛6lٳf͛6llcC aPG]?Ə%7-_Ox7'_o.ED7~Bkݔ֍Z"I? y{͚&΍w5NV_v&eyK:"̿qȟY|9M1{Ӯ]+_iה?nm/!geUу)͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͌xFf Y:cgѴv>WQފ)$[X|WόvyK~]<R>b~[6 ?7ڳ wbOmBsW.boҗ`Sow{{xX`U4UPvU S6lٳf͛6lٳf͛6xrvyQ+a:xhWOO% f͛6lٳf͛6lٳf͛6l؍5i4-#e?5o9/.R@moZcXyp̺W))ҖH}##_.]bkIT+_yl\L֬xKH,_WؤY9#5q+gr 07s#e"yf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfc9ki_뚘ZA }߼X~c7aZ5XLJS?RTהJ;|mEuSL; Uk)'mms\,0#s3QUAgv>U=#S8{u}Qh :')3__ 2/R$V Qq{6lٳf͛6lٳf͛6lٳf2pYrӴwksF5W~q|?oVPX–0DQU1lٳf͛6lٳf͛6lٳf͛6l_^m;}9i;zkWWegf͛6lٳf͛6lٳf͛6lٳf͛6lٳg5ѿ1̓m+RuwE\ֱ=@&7"hçGrRtW#~(Kbv?Ǟt4GhӭŤe{I%\ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳgNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6C5?4˭)=D󙪶G'/\}yΚI^ORc}Q"f4&ٛ=8&8Y@㯅܊gY{f͛6lٳf͛6lٳf͛6lٳgv4%?pr;V]u9ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٰξF|駾&SѻIG_.x_'U2n\^N$D(?.o?;i휟N@?ؕ~%)9&{7HWSPM SԉE?flٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛!ߚZWޘږܥj R9ʿʋoaa}d5wk"J1D?6ι88i?3y2Dg0~˲><"P@@2f͛6lٳf͛6lٳf͛6lٳfm9m ? kp玵=? ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳ`]SKխd'JIنxqfMs4Bj_,~?'Ou_%j)gMꮿqܼ_x~N~uV<" N%, 7?蹳f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͜JnQOTLO*~g|Wڔ)w@f(#_?ŝqqO5~c,f=O(j#6|?{>RXaP 6lٳf͛6lٳf͛6lٳf͛6lwCy+Y_ )yƹ˂nII{S6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٲdR+"璿 ͈̞MYN-([{3ӏo=6lٳf͛6lٳf͛6lٳf͛6lٳdCZy?YR},lᥫK9eRO^$۹f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l_dKxKeu|]iWF)C۽5WGSŷ?-@p ?I.d~͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l4?:[i!_L_vΓ6lٳf͛6lٳf͛6lٳf͛6lٳfk9#p`bcॉ?l?6RZƟOe3f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳ~}=~`@ڦ]~賁)}?aSJo$ߋ2?=S898/=/,jO[9+?)=?6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6%yy /st1gw!U@ͲyGrY̚?*7_?Tyg{F೗fܚ1YݎzqPJj^q-cg egg&?4.Y@֑}P{;|mXc6lٳf͛6lٳf͛6lٳf͛6lٳf͜r~_>n?Y?#ֲ4f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳgѼգ\k.z H.i"^o"WF~w_MCB=#|ﴑEI+Y%}Ŀu籼m;̶Iͬe~##kyf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛zݞg.ʰZ@*os adZCkF\ӯ}!_zϟƝʔ2Gڕ() t/Ȗx]|wR(=źo'oۓ:vlٳf͛6lٳf͛6lٳf͛6lٳf͛6l?*_賕 kXf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf5f~b}GOk'!/?VF8bT : 5ӧ췩/$/lE럗3_i`5貯O[o[~_~f~B9JԉA=C9`YEMm6yf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf̀urCP'KkXZI ~x[V<ڱFv20}_ٰwwRԾmXl! ܑOa?7g&,"xgoڒW~<͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6r_ʕ-S[-rZ^-gX͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳ`}B :[۷49誣Us箫w~qy%ԮF#eOmA4-CҬWkcEl{e/kuVVنysqov{? #ə?Ic.Ziw-= FV]xFF\?>swf>̃.}s.cZGis%ͬ$fo/\6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳ`MWW-Q;{h^I*͞rȳe~(P2K?8y[5.cD_hZGʏkMr=Eq2#~jT;*k?+A7ɺ\Z.mN+~܏M~8y6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l?'2~_8RX^gf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳϟ_ߡtHh)hwX#?Dr98au.|vmk7}??{Hɲ3ѽ^/2>6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳoLhEuučJ?hSyZH!_$qri@'t;V0h)s]V/+jVsaj7dd_+#~ԍ*e87_絝/f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6s_O •qX8W 5H뱶vz6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͉\GmO35,MU|ƻ}f{ Yg[{U?<"fi3>Sկ4]R%|M>ӷR7' f́u=.U$eȡ?oũ?䔍3f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6s_" 7oVoYi=B?沯,_V{'6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͜/r9屢Z/5bc4;+O^O}8cu9]mj?mDHĿOZ͛6l%ظHջ1?ƣ7_So1e jkO5 xhH߱'ϢV-}gLR?]u\4͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6Ե+}2Kh93hPf#̨"_4!)P;ӉO;wceOgsi@=GX7u4bThF}Λ!حCgМٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͐Θ}o%I.3  ||~pCβ~gdчfo-h6)kRR=$f|?͛6lٱ+8oa{[Y!J:0eaŕϟ2~]kg'Mw+Do󇿚 j/E&Kj0cxFGg3f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6xrk^%,X}my(t;"?1ul~Vq9XSى?mHlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͜rG/'] DzH_8rLJG^iAU?/P{C6lٳf͛9gyW&5킛Vh<'TIQn$y}6tMbRe桸lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳgNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛!_"yfXRJ?χ+g΂f噘7;/C`T}~p%~B?@?v:lٳg_ΉJ61ޭe7ϡʲțGf͛6lٳf͛6lٳf͛6lٳbsn9L%lkN*uq? ϑ?-OMK_ [l5)" Fa"Ԅ8Eǖh,o"_[q9Dʿ$9E?ʺa|`STDmwYuk e` [ O/6j6YKob#6"9+Ňf9˼#jPbWP%RUlcyTY'l>{nۯ8XȇhOW[}"cOhMa5췟GP;yNyoSz'Ip6=s+5akNԯg_dNΟOGXjHO,?/|iO^Kk?߰& 9/ҿ7 jZLZ?E&zG毖(=$>q&Mo! ,ftx=?|hm{otT6͛6lٳf̈́^{dQ/5۪MbzHQ?g%|?O:f׷{4̑L 6lٳf͛6y s[V<QyHx8xߏȯ?BytZjq4Úes͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͉^]g 3VwcTrcg̿:_3Ww;CIqLoFZ\jn?wn_U.vٳf͞ELzK ?A'1j o?':lٳf͛6lٳce!S$@>ɺVVR&[llmƇ,zַ=WIӭfg] k_>|jRkt?n:%2 XI:=}Y]lp4':css_.91ҿSҥ2EL/ |uCu%VcE6Jۆ5_H)ӿ < q7)5giZpGwF,AyʞliS'i2Ce.SeT1`q?V+6lٳf͛6lٳf͛6lٳf͛6l{:kX&Ir;~Ny:G$XCGqw781M*Կ q>狗>DO> 4r̼p{cEf8.4wal^ԴQټ%&Qe$ЌhkШ4V%fO'8sh?tӨ_V.-nagI-\%{yA"O;gO䇑,Z[b΋eo}T&e?l_6lٳg4-h::Յjk I2X;6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͜rk_$_n3^O;/hkmsG ݂Ja!mHx* +6lٳg4_y^QQVP}EeoukXu )MДĠ|nlٳf͛6S0PYܓO4~zy7<S^}W=N?#7֛( :[=È;G̟~v*E{[+O7f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfJ$Pz*D/)ku7MzQd\98BnlX?n,: U]V9<"R#/i/=ho}n1Vβ?o%To= F[iTd?.ѼũhU֒ uO+XDSE?f*X)?c枅{-~k=^"&Uc|6(m "q/Ud#͈_Cyt8 FUQ;/8@).O*z1{6lٳfߗOy'UQ:_WᏘ~曍-ը<^"$_$fjf͛6ld$e"c@9˼93,rzkAoW8w4Qyv+(I1d!_K.q4gyd'C.V?2=ki5܂diem,OW|Xnǘ(im~ Y|8C+QQW;X%&3ysqc5KG~̅zp!ڧh^5x[8w>j}V:%Y~m͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟?&kZSXJ[/I%\~]tO\q%hzӧzg6lٳf-'Q9B3珖n$^*4 Fe3g A3f͑:~gywqVJFR![Ǟ5d~VR7sKxVy|/89}rk&2c mP'US 36!e :\'޷9) 5_2Kv)KH&rFP|t.pZ%)IYroXm6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٲ*y3j|/3zr|X;#rʗDc[Jy9WyɎW]A-9D՚>Q"?x?V_ ~Xh;-ZG׌_<9m_1)ٚݞSTO8גӻK4K3c7ȟow6mC]V0GEOY_оH<֏mvI5KBT*8ϨaE4i[Ek萠A f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6bi2~qyKu]OTE*RO\o]> EO)[Y?8oi f4%8s #'?9[ Yz;xU:sП}N_#MȘom9T|:R掌; M >1 ~9W=D{׵cx\F'6NOo-fipRd-"slٳf͌;^7e`#38_3PW(b'cȖ<8#rv mZC}? Z%q%fHm|W+?1SOtn _'==zŲ_%Ŵ$lHeyf͛6lٱ (䴸^p̍8̟7v_-4ZN_Y/?] |ke֗V,gQ/ * Ύ?:OX3sx}ioxeIW0f͛6lٳf͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6lٳf͛#^hߕ5F3'NRg+׿2|bJ]_0UhL'69tč;Hc,R8Yd$or<_%/o9A#6/czuX[!H}Hԯ51 JG%X{O*'QG?ϝ[Bv="R\CUlٳf͛9_[d}`~Od<_Oe垶4,Vd͛6lٳf͛1 $o!fpԟsf͛6lٳf͛6lٳf͛6lٳf͛6lٳdG[BW\)iQ r)7+du+u G?o(1D g__5"0OiV_|]z%kN OkYf͘sh/s\,iT Cǥ~ƑGVՓ[+~[mk_XѦez]?e'Y?m}[TEn W_b.tٳf͛9Wo/_KIu$UoF4a9M'W<̯4EF :#d_C9np:܊z?\|#Ȭ4]f=I58ٱ{KյqHO޹9ߝtTgt_؜);6.+:mO2F|<(-iVLf͛6lٳf͛6lٳf͛6lٳf͛?Nlٳf͛6lٳf͛6lٳf͛6lٳf$S8g?^M?u) _1,p1r?n-ݛ+Fmk_ZORq'99,Ė;znX kT"3^DgMWGt#{b`"MT=幵yuPxզ"J+)mYfʒEK $snLO8]]V$=w\ q#M!c@7&av/ʯ0y%U~I?\~]Nys1iF3O_"6lٳf͉Ek8Uvmyrg]-^rehOJ#/T;Iu!o#?YZ5 Hey'ȮO\wQfYn8;˸$iJxHlir)]b< \~wӈR[(&[|9k! ioRuyOɞg+SⰵzQcw΂SPwe͛6lٳf͛6lٳf͛6lٳfȗ槗o"9V8SCo?_`{M~;rCY7x_kg Fvi$sVf$OvcXQRvgIw㿜[kom!_?ԉy_p)'7s;T ?t"W:8]rܸikϥ${cJ@]:H\3͛6ӭWӻ&C0!goI Z$ 98[_FWޜ[8ᡆOX8Gḽ=ᗇ m&qSHgkMF -^ʅp͛U Ub,7yw7.j?fp/VS^ޝ "79:T:6l vW$Ҏ/XQIIy 4WQw4gmJ`DSӼ.~37 㜜~YO2h~-Y^#g`5I:o'v$ZZ"ĚL #g~oEY~aI5oc;|~;I_$i~T4N'AF͈]X[ݎ71$d[W_ilO,J1N\#ȱAo$:#YY"jGY}G_c~y=98=+ dV/[ͿYٳaO٦RM[Ymbu'"e~uGj~wӴVZ%iG5/owާs$jr]/CksMY,WQՆ~#m/vٳf͛6s=@yGɼYmׯ=dL45Pj;Y{/.Чg?4wݚ G\"A%guMCLF8Xs'y+`ӧ%(4)05R>-ZhRj~U''ŰpQ ]^E?$d_UY -( ѷ+2?.A5 @]>ڒ' LJ6fɇ?7|c#o~?z'˞ij/[F+KXi6lٳf͛6lٳf͛6lٱm44:1yr+C&~2˺ v~OTu{^S䑋1>؝%o4(MpZB^y_ѶͿyuA=/_ɏ+y%U$Ŀ?痦6lٳf͛6lQO(>fkVJF\፥{'ܛy7?V%G==_<"k^Nk%,*E*9F yWzHc{bvB}+G2}],d/͟CA6lٳd;>Y0lyt%(Osߚ?󈺿,;jvKRb" =~O<$mpUA %:5 "OݱhNUYE =gaikMFYc.O"U͛6lٳf͛6lٳf͛6lٳfNlٳf͛6lٳf͛6lٳf͛6lEo:iLֵy=;xGA؊%Vϟ:6o1FHSD'#%S,2$aYrUA$UQ'cռTCFK4b?E?_ѴK,t#QcBX76lٳf7ʚUη7kT.$H'M8+9:k5-vEG|?k ?)..0u4[z?\Jq):mHѬl#Zۢ/@(0^l/uwUr5O~hlkOnq)_ܭ?)kVȜN+kFԖZ}'$?#yGEz WߓI#W$9f͛, e`;Gr^Y/kVZBY?\' R]k6{jƔs_V_6U,B=u/#5͡fK_5wX)w|? O /.%Q?s)iFv?-Zyo ~ӭ~ ).lٳf͘E3^Q0ozeHdEzo gۿQ!,|dAK?lW)uK'kU?yQ`.$YGF +/͛6lٳf͛6lٳf͛ <7ʚ|27cԟD_7:!O)ZӕJt{_L_ݧm"έG8`06:Mwwq[G1e~\Py{n>EJ4+6lٳf͛6lٳfͅ40>ujREX++Ĺ_+<>0 dQI[[)kj,DEffkHG U͛6lٳf͛6lٳf͛9W']z¯rgK/ާx{ΞG|>aMꮽԖ~2yr_gU͛6sO;+M6Pmrfx ^V<ͣnn,WF|Hz"g߷f¯5yrU֋|+owD"u*6Ϛ~eϗu+qr_[/9?0>kt'~RWz͛6lٳCG=떈LL6Tnm?ebOB;E* VV ?657 ;G9cfO߱͛6lٳf͛6lٳf͛6lٳfNlٳf͛6lٳf͛6lٳf͛6lҬ#v_R䃺usyeuS$a#;7aݿf͛6lٳ@j/kvS6b>9Ձ~/gϩ$iĒI$9Ŀ_|ө%t9Ǣm%_6OKlA;Jfg#eib#+go̝KVW?Q?wv?ŝGqq*y1bov7 ?YOogk|} *4UTP6UUcf͛#z|duvap7CWs iE%_2V}G;K[6H cLР3Kv葯'Eo/}/7]wx_Oc͛6lٳf͛6lٳfʒ5J8  cyKӵ&7h$?;琵/~M7V4h#?㼻=C˗Dmw ջ27#|-Yȯ[(WMx뱯hKz/4=6lٳf͛6lٳf¯4lέ y3w?ʈ#‹M??76̍T]V+8[kp~4Uf\jWYF\L#YUn~A9$uKuG%?M_&͛6lٳf͛6lٳf͛6ldY?:ki{fP=Ho}?k< e~^ꍥjU5hfQJΞmŚ;jz=Z+AuD4*g?"?:2tM-b@laq}?|QeaB痿=q&ɻKb[]mK"n-ުJ:%e9_ȸ<k̰>VO}i#fU'ozc֭TyNSm+'}N^ n^ʲ#Օߝ7^ݒRzяnٟ{>lٳȿߗT~ {;H<̬TSB7go+Zj7+_BՏf?xM=2{6lٳf_T~pӒ(gV_8QŨ8 B:;{Q3gE͛6lٳf͛6lٳf͛6lٳgNlٳf͛6lٳf͛6lٳf͛64Y$198\y\׮BʧP|0< >5(?RD|fr9FRXP* ͛6lٳc';xi$hY 'CXmTOy?c"P[mN^WR_^F"4J%yFE AjAˑ;alju,VyL}x#W/dmI[X=̝#O/'ÄKDj7>DMInHvK ?m'zziZ  Ԏ}6lٳf͛6lٳf͛6lhQh_Ucr7(|-Ky_Q:~aG!o?dvx2:X}V{wqr/=º& v p2b>6lٳf͛6l$X! $RNx?r3O?꟣#Db"oU/cԏ(gXRP*I=9(je;]vsy'Yf͛6lٳf͛6lٳf͛6l~c\ҤeQJ̱->?0|WDVG82!GK·$op?y;U[_ Z~˩qH?j9o>~\z4:h I?r!uN/Y& 9 8c^E[AY# peI?ݟbOtx7ZUG;{i=#9_ψg'VeMv>.Nރ?D>9f8V~H fGnq%~/)yKWTִ2~n?j9u\-q/=ky)$d TN/Y&͛#?~Jξ_f7Mȿ/E^_͋)gLsB꬧U~`]jZWhl|),([yECůA5`=FyKٳfoA qE'U榥ͦct'9e<woß;#̒5-HN޴@ȟQz͛6lٳf͛6lٳf͛6lٳgNlٳf͛6lٳf͛6lٳf͛6q˟9 'MϪJ!ۯ<5A KUzc%!՗WLf͛6l/zJRy/);4G4oʿ:sPJ]_/ `F ~)>w?R/=6yrN| z~ԃuR//[8_eU-*"CWƿ'!,X_MFңZ[(T^;Mff 1sL]T*!Į?O'm+V"%Od+d/O.4ۈlhn!`25VSLnǭZ(%Gv/OZ<ٳf͛6lٳf5\p*IK xwHكiԟOf?${&G=Q6lٳf͛6lٳf͛6lٳf͛9F5K`^cٻ7on2~|t6[+P)#?qy/cGbv\k{]CH#yɿySTy\D~ڧ/ Z}ap~?el9i& #Bؒ>M6l(w<%91;?IiG`tO%?rOV!8|;禑j~\q_3ހq6l'2.lTS(/Ng dvx::YO%uaYN5Y̺2K#9ܶW2 %xe6*G%:G|"Cu[@d_\/>8j,PIm$Mo[?6J3f͞h|ڄ+H5H=Aޫ+\Yfk{i2L7_g>j6^۞Pȇ\sSpFlٳf͛6lٳf͛6lٳf͟Nlٳf͛6lٳf͛6lٳf͛6xs+RT:Bǧ[#IzKi2mR)EgӭIF-E "AJ(EX76lLAf4rNyOsFM7PJ̄ Jygֿ$g=X_S :觐֯;<&|FӨd'~qZi [["*UUTx*⹳k'{v.5>9/=4wD 5@7fws K΄mN]7­?9?o:FlٲcRBv?Ivuۙ#jė49yK3L}t/˯̝[nQiV5a.yK{F4[8:%G&3f͛6lٳf͛6lٳf͛6l4(3%o_~I8~p~? v?e~r/V}Տth54aGB~(B!^/[$yf͛6lٲ;[_%hwZnT b~#7ï]PV_ԺQerwP[)-_vAm㷍`BGUQ@UQTcf͛6lٳf͛6lٳf͛6lٳf._~P xңqKQ~W?4bMaɹį3M~2Noc #X_[yh[ydpÒl=[ Q'_Sx_~|/n\hpG/:hߴ/oC-ԴI;=!OdV6o3͜ro)YD-m}H<eԋ|͛6l~S~f^^kqj֥ܐ0/oygm+Tm!,IoqXrS`ٳXO>=7 ^}ejտR?#gR͛6lٳf͛6lٳf͛6lٳNlٳf͛6lٳf͛6lٳf͛6|׎SRV[x8.L?5=Yf\4sf͛<96c O~KSB!{~\|>̙ٳfu+~Z*yiu[7X?[o3O:[L#@Y 'ԐT=S7[ncp_ܷu$cV4P_z6lٳGS_'n_4%.CoJ[o##SG\K'eEnY[cO~6Uy\[hYC$f[g91"qĤffU65V~#)?&Jڭ;<uy#O琬b$Onmo=Oo0kԤ/I~M̟c,#a$"Ȍ:2?\[c>90J߲|א "<"oW]?g=8uo-V ?瓷;yٳg1+մ~uOT'o^?ُ437GwjH&Etu2䌾̸lr#_7][¼l֭,AN9f͛=8{dM6vkqG9\ٳd3Dדk*UGQTc׏5ϛ\ˤa?\G0 J͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛ Ǩ. eV>^%rMNzopHju 0o0|ٳfϟ?z{ٍV[t5T?Sg1͛6O?$/~gҝIC\wL.DUE^l_ |fASۯ=uD?n߬VRJ_$LqvϤY}N^ֱh;~6͛<9K|lS䦧r)}?<"//y~7:\fk ?ʪ>'o_>M~PX~[iBKL]\SwoO?ZochKh` =#&y=8J<5jH _[;lٳf͛6lٳf͛6lٳf͛6lٳ?_D7׭ַ:Sju0D)?_SZ6꤃gng_f͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛!Fɺ̠Fq|bZ;vHf͛6|{O<(Z'U|f͛=8wE<'Z\nBC(rRy ٦HQDrN|z-޲I6;pfbsˑ9^'nkomQ5?IWOٳd#6AWr߻ܤ|??f\ݫZ亍5Ù$vƧ=8$IFGP0İ# ˰նaq޷ {XY*9s柜sb\VGFƜc_ra8k=<6 OH({I?=FQ@6e͛6lٳf͛6lٳf͛6lٳf͛%c>~m)-6|&wz k!Pԧ4?RW?/mu >9&aDATnlٳf͛<9#aZyve4!O:7<pokG=/14+\eoZRGcٳg4?/p_-HF<ԓ3~Gy#VzWoBғv?< `M_JWN^v1R/߁ϙmZծ[m&xhƸQ6l$"J].nOUV`CZС4]"HR9Xe8OO<% T&)FG+O*v̺d+=ܫGwoQ~6'>ywAmX{X$8iٲhrQ0<[9:]a9ȥra8@<˩4jӴIĿ4do/=y.[&Ԥ jI?oǕQxj\=z['v|ٳf͛6lٳf͛6lٳf͛6lٳf͞aEщhԓ39q'Nfwg7cc&_tٳf͛<9U惮y5ODOR_-#_yaӯh+Y[\>B`* ttٳf͛6lٳf͛6lٳfȯ44!}g]Xc~)dqq< b,Zcif߇k_>o֘vJѯO\ >e s7w}WKoͿ6V@?dο.R[Wf2;x:__N??^>p *|28ɞl?) ?KD Hh/y[u) >g[^5h?9Ep6ysW"0/-9y8/🜬/VÄ{G'/ 6l&`Nwuw FO> ?֍3m2}*m>x\[H !uw%nWVx}Il陳g?3<43[Q-#Ԡ7-y6ly?2k`nQ),7vpt͛6yS]+Im唟gjjz?z G@\lٳf͛6lٳf͛6lٳf͟Nlٳf͛6lٳf͛6lٳf͛#w/.j@Tgp{/2ڠ1ki?h&؉#gsf͛9iiQ|Qʟ9R. cT?bh#| .Fsg[[;;`v4bDs9g,!s5m|$Fڵך.ا ?8>͛6q/̣O-~7(2¿񑿓<[o-Ttsw"ƞi_\I(CHдH-P-i7Y%o~Nwy'o87(,ii7o0IZ]Lufcg{xX!PơUG@3f͛6lٳf͛6lٳf͛65;]6#q}4v+Q\jDXڼ _hE(/n?^ Y*?6<隥s<'.Jf̈́^z^kt9-JN>g^ZKe< RX /sn6:ߗo_C?|?օcdf͛6lN-y4HԳN|Υuf;OᷗFu'K g`|B!_&gf͛6lٳf͛6lٳf͛85gHxk-hwH&ir|}Ow&7R4_gf͛6 [&;>WFYHV\~ty:A\4fOgz͜?sˣSaQY4/ To9⮾uo"Fg$zJsd_Gʋ-j)"#Q3wVS YeOdź? &&͛6xwrɃCgHWn~q&oˇq6Z%oEF?Ⱦ1gsf 9(51?H /%=.4 vlty._q)c QP!-G଎(dʿo1G43A0HUQ@*?6l?)<Ժ. ImPx< &x=8oӧyFMJAFwS⑁ E;lٳf͛6lٳf͛6lٳf͟Nlٳf͛6lٳf͛6lٳf͛)8* 1렷! ı/ŝCq# y;I[Z2[ӐEuf͛6lg~V?iӵT"T:&dSY|'?~]]|\ `?\_/Ő|}+-O.HџdM,_S0&Y#6sV6s-rwiY6?G>>4yOɶn.3x{ 蹳fϞ_>veMZӌ,gps;[kZHaV˞3qZ]ޭ7شIRϘr^M%甲;ݘc /uzE"C\ǨE=3f͛6lٳf͛6lٳf́5}^GPfK{XW!T|y_Gsg{$"lo&Z{|(?ʛIr5O1Nn?+E%p6l~Je]:^$TUo/筿(?$O?ӮG\!vH]ο6xrww׌7nzu"~e>ZFWCr }9䓾}*͛6lՎ^MlU?:I s=}8CST#y#hlٳf͛6lٳf͛6lٳ~wisI-bb o?f|+R[kܼ9fcVcsf͛6lV[YRh千#)Vã)~=nMVʍT~GYUgu,mhYcJʦHszpV4[L'ȭɅM͟8:|< SNQ5ix$} &zp?_c<P%_)g}͛6p)~8ֳi,e{E#<忚ʾbhDι:SU"/6A<4KiSWx,Ǟ#MS⾤7(9q8\yB<ٳf͞$_04GiAREKô TEX$f/+hZ #?99>͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6xsɧGJkQ- " OoV "ȿEui{5+6qm*Kd!ɾhViYw^$Q(Üٳf͞u'e! I-[,}ek1(t|1|t)ǤԗRP/I%=eNvG(}AgHT( 3f͜ΧPʟW%9/Q9|+;e/4αU[>ypGCЭ%BG?ږO)weɿ)uåyT+udI$L4&>;$)KuO,yf͛6lٳf͛6lٳfg ]NA `?Letwj_7i0;io~?4͛6lh:#a5DL~U<@t/ >/͞Uog?3D?yW>~\k|dծ-!vXE6l*/M/zGsKmXesҟ_k75I)ov)p|QſM͛6l?1~rij}!YI9|IvT?]".?l{ik)mJGQq\2LJǧ-GU䗡 z\jV4>1"3f͞Lguyn&bF{aTFd qG_7R(4kNCp}>=<9=7O말Ɯ~x>I_҇HGoi2k6lٳf͛6lٳf͛6lzGOOjq;I?mf?3f͛6lRKiRx,lM ҍ06:|O΍KrJH{T\-|*Zgg3:[ПGeuγ6l?0䂵+GkϠp/mfc.uٳf͛6lٳf͛6lٰд{YYDg>b3#M),K1=I;͛6lٳfϥao1y_Ld<2/VN|>D?buapRqFDl? (>@oBO2O $П7usf͟<"| )ҋL%;?~3ʣ8 =6|󭠳u Qt:هR]~\lٲˤ[XׄM(?WS9w}¿!U9>xΞsԼͭkz3(Ei+r|}Cc1 h?O}>#>N--1iRI_o3f͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6l/yGX:4E#h?{O^pxdUt ??>͚ā5u}a|hwG=SٳfϚ>aySAOu!C@<"J3X<; d\m].FEql6sȋ1w=^2+ƙ=8ave' ㅳf͛6pH#B 6 _iDQhis͛6lٳf͛6lٳf͜rVȺ&3*s^lٳfι/8~ceZJ1_X&X#R3p_ےfG+c]GsMUGJƋSzg1-_Qa*rD$NH$&Esg?no;|XϘvK2/FGο8dfr l1Eǒ _E33_R5h> }͛6lօkZv١'&¿s~kӘAȿOkf͟68 yYv?|rk8)O>[('ḱ JMH-y$`og50,};j.z0~)e'kzw&L7S6*gO:5S~Ԓ7D?i=/7ai^"&gS`f͛6lٳf͛6lٳf͛6lٳNlٳf͛6lٳf͛6lٳf͛6l)_<զϣjщmn]ȍ6|.5VABZTeOl#4?O.4,hn!`"X}VK?2,z/-uM'4X=~3cyLٲ5-X5+eϚ/W\qC7Uf_;cBZM(3/6|bXN})п@[KiF.cQ$Q%Y`][PM6{>2+f7G>qg O뺀z/6lٳWY ޸0U7?oEǐL\3sf͛6lٳf͛6lٳf͐ν5/&k*SAƙ6lٳgO"HafAiުKM 掑o?uȏ'/Mx6} nN-*6i#ydJfD#l ?!-u\pݎyg m Q9V{6l5D ,WهToD96lٳz?|gV OȎ:Gr|Ε"z<#6|YXm8ݮ^u5Y㵵'$EbVG?*"{DJKE֞%oQb"\p7^tA"8SI29##^ŐKjVQia^J/,~֝dݗ#_?a6lٳf͛6lٳf͛6lٳf͛?Nlٳf͛6lٳf͛6lٳf͛6lϑt;h^чٖ'_&xGGX"Mƙ#R IGoٳd)[/;T.om5P|/i2{?s|lbn?yo_/-)%ܷ&QG{6r co&q@?Ȝ䚾xWʚI5{-4 j(S6ϧʡ@U`2f/禦t$ЛG:mkݝ4Ϩ]DzAF>JՂsg7᦭Kү ~ S,ёHF-6lٳf͛6lٳf͛6ys{}.+m@͛6lac6q'8ufcʿƟ.J95[xUeCA }G_Y7#fӠȢn^0Փ>v}A))A$mܔu"yV7ҵ20E?l͞'o=(>lٳdJ:eoI ɼǞ%mQIYi%@Gf͛6lٳf͛6lٳf͉][Gu9G"aqa2|幼^h@mcVKIG'0LmT9,b2#:$|Pye"U/>nmV^`Y]Ŕg1&h*@w'>GD] GPPZ[*XmTyTw&<9->ֺ^u ⴫B%9'Yk8G㦙GϚLTIc<ɟC3f͜r$ %QLW׼ɥڝķ~FD>͞Z㰬Z5"_g3鷐5y{M_sٳf͛6lٳf͛6lٳg Zz9+x6lٲk+yoe={Ky$(\}͞1սVgzh<yKG}kXkwTϧ@`3P":M?Koou}!Y۳f͛,[IdhËgWOMaI-x{(߈8]e[)ԕ/_&g3f͛6lٳf͛6lٳf͞Ot/;Xcp^Pta/X<6lٱ#0 I tGX?SƱl0{A3ƿ-<4#l $+qJ Y oFt#p}<]`ϛ6s_XQXxQ^1 6lٲ+aCzwF̿>jGw.vmE$HЫhޤau8A>uni42!HcF'pm5;'䉛" ӿ'|=@?, A3R4?b_SKg?!a7iZD^ FNQ/18?yKխw?2̬lٳf͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6lٳg. GHbh$6pUb(qѰt%YH B2@?1}OkK)$/XOoWzSI)-Ď8ya; M'͛6pixy$/B?do<#]i_Oܿ}͛87^'x{K؟]^#3/F5_!Z 7$gO͛6lٳf͛6lٳf͛<h٠hRP}nE'ӔOP4oKK1 n.V3f͖ SQʿ8-l|4J]2UO>\$n핳쏃_N0|d$'D?oͨϬjn_OeU/sDCkk1*JI1r_<j_VՖ +7/yc/#W{Xfk 6lٳgɏ,E"+t\K5<ѧk,x $?[o$ITnlٳf͛6lٳf͛6lٰVsibk[1ȍЫ sW嶨`p铒mn)ԟ<.sٳf͛'>})k spGҿ?Q]Gc6 KҴ@f?>g6<.uK/D[XyiOX=s͐:,BI;Mc-?-ӻ*6͜rC >>B7/w ϧ9f̀oX\۝HdO%+.Hvy;FM?QS5{(nB$>vlٳg1/:([iS4ɇ'֠-#2 ٳf͛6lٳf͛6lٳf͛6lٳNlٳf͛6lٳf͛6lٳf͛6lٳg65l,W8~5>QUG8UEiw—pE0[$2?{S;4>?W.\=y u¹/5SY7 %*y3S`I?C Ǥ@ ']>k:vm )dZIEXFXo8Gk^ԮS Eo͛6p̥'q&ȗ }OϣdMlrslҠhhzp̂m3RМV%e_MByٳf͛6lٳf͛6lٳg.)_K?zrV >SEsf͛6l^k㵵FyX""f?yy7ܮmE:.lٳf͛6lٳf͛6lٰWӼa&B 277G_uf~`ye(-n+X\'~n]R5kGѡ{͛6lٳf͛6lٳf͛:=g6ƳZ!I?g<~\54I[3ҥ+}ؗ~.H6lٳbA%ċ *^G!UTTv :f7;)7]}_fLuKTT43||MC[Rv1ȤL1TE6\,lٳf͑̏'/2ҷ1̃ʨV[9JKu=C)~Mph[j[jkXO%t\H=6lٳf͛6lٳf͛6lٲOɯ*̴ńopLqgk_,[JԮm貢JҿW9?<֣0ƿ{t-& j k3>K򗓙f#7+y{ >*r璦O3f19W_?<%4!4K2-&_ӈDC2ME&z'6l lt;5ÏͿoz3N}=6lٳηi?G=8(_NI#6lٳfj8>lQX' ֺ݅Cv^f͛6lٳf͛6lٳf͛6lٳf͟Nlٳf͛6lٳf͛6lٳf͛6lٳg?8miEdtXe%Q~Bi:'=6lٳg/$G@?Kѿε%jS=I6lw׼(1r <ڝOBxePpwyg3l5_1¿Ґűl+ KlK0ta2JAϥ~o?ҢVp?fAM U$Yf͛6lٳf͛6lٳfo[g{Mo*xVY[cb8I%jvo9;<#k~VMhՠ2! ԓ`̈́YK*O@3y qqdxmͺ]V_ '΅xP>Ǹo_ÝO6ro<)>n7wYA|_>簿 Uy>y~\I?bUT4%f͛6lٳf͛6lٳf͛6lٳfʒEK *I;|YbtZޚ^ W.۬ZV#rY$oc}+t[mJ^ֱQTqO`ٳg+5;@Vl՗WO9|k6ݪ-7U͛6lo?;w1Ϡ_Z@??|ٳf͛6xssOoLlC%6<['lnlٳf͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6lٳg эڊ;'X<T'~PkJ\#9W>>f͛6lO˸bj?xƹ?~v=G6l!oڎMŤѯ̌>dMlkY5 jgn!d\ٳy k;W6>` c"g<3_?|xK[Z"!ԗ=c6lٳf͛6lٳf͛6lٱ;hP:,XNCuO/%l^GzFO/?!FܗH4F/|t[WHN6lw(OΗjtaZSUyFn54%qs"E &y^*V,ub'G͛6lٲwsٙ?ogk.$CG"6YOVV8<~_I ;G'Hg_\|nlٳf͛6lٳf͛6lٳf͛6lٳ󖟛gOMzj~8׹d+s]#q?{:OeK͛ ǮA:٤<@Z6ϙ:֭6}q]u+b{qG>JE=қ;%Ճ\鹳f͉^J!IODVog9_vsD>~FAy#FC6l͛6lrCU'V@jȐëg~& >^/ȧvj\ٳf͛6lٳf͛6lٳf͛6lٳNlٳf͛6lٳf͛6lٳf͛6lٳdk/-:({wX HjA+,k@XUe?w?Vcٳf͞Ňo糅5ɧZm3vlٳg?.-RiE@>?I=w8a;seӧ*wI"6l'_%8k(6yvtm(&*7d6lٳf͛6lٳf͛6lٳf͛6l?>3˒j75{#XiyݤbK3w$wԵ9|x5޽fqao9W3ؙf͛6lٳɟ󗿔 T^f+d)`OX'B4 6z6lٳf͛6lٳf͛6lٳf͛6D42l?/tYuO5B>ڑb<2^QY$n\oeQ("dW]~-41R[7ql!cc ZQR4Q@*ٳf;dyiz$>Wj\j,$ke  ^MgQi&oij_:/tqI.U[zh䏧G6lٳf͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6lٳfK뇉xj$B@ڮxy8seO~0ޟVؓE=_39f͛qO&jCBG$uk͛9`r[!oYXu_w< RD%YXP6ea3-p'jB$.f;E7IIyLlٳf͛6lٳf͛6lٳf͛6l؍Iwvwv4 931Q=?<5%RWOZFv`x7a"W癵;}MNwWRv/!6ɺ-`?ulKRRI''ٳf͛6lRmKilocYFDaPË)ϟ?w_ZQM%&=ӼNoO.i7Qj4708xSB:))Xe{}b$~?O͛6lٳf͛6lٳf͛6lٳaW|ӧ[NX@Sr9Q?k>}pl_~dj+HV4idR-Ea4k /ROM+gЯɟʻ_ˍ 4ة%䴒arSQ}۶O3f́-FLV#I#EUs淟n٪#@"_,wI\?OIk F%?{LyLٳf͜rSwuyNV/Ϟvyq}]P|ϩm @f5 >@S͛6l+0^U}*X./\okuBԄ_P4:xKƅ[gŬ*t<}>SvfҭuX.YWڣF) sf͞A:m-x>ħeR']9ſ![D'JA#GٯO _Y3Йf͛6lٳf͛6lٳf͛6lٳȟ󕟞cS[XO̧{lowVKtapIqe;j]Uv c_%z$n$99KRVD_y9<qE'K~ a{q_8 O6#ERܑ$:gց)N2@.B @Zf?(G%3麭;OGéddcN./rE /$ϞmV]WN2Ǻ82!ѿ[opѨy_PW%h.j̎]g%;̛  ^؟+~-gYf͛6lٳf͛6lٳf͛ |7ʺ|2icԟD_?:;5̻X}*ݏz4̿c l(gXR*OEQܜo855[Mxo俷wٳf+^~q?L? :QZٿ8_ϟ}ګs?q/|a?EϣNmC 54Yf͛8O>,@Wq%?@ӷ4q&4q,Pnv}glٳf_W/fԧ^ҩk +ܗԟds?_ڗ& "~Qĝm6zpDiWQSmx,&u^y'&OVrgٳft H{-TG>(ɹB;h+7oqΧ[O|ٳ`]WKխeYFDm+ 2Ͽ }aiǺ/yu2;)XRZU="Dw)|ur ܳf͛6lٳf͛6lٳf͍͐zm҆IUi[_}M;h-N0rە&%> C *^G!UTTvUUXʢ?2j+ qn?_6lٳ@~vu}^͖MnH>&Q_l,$Ky$;ww9_Ǐy(:WnOU^_:lٳf͞B TӴ$;[B+pJ||Ț:1Mp-xjcf \Yq\.ך27wXsg_fFj'sBmVӔ.e_IWs{WvYOo/;Z)u)j.b~J4W̒1gcRI'ᗕ~Z~12+2^K9(R("P(qUUF-6lٳf͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6lٳf͛<9Vtl1c!?(Vmτ|YE/oD7t2-?UUʆ`> Sd7O[|8CW%Z+AwD4 -tDQY-I<;lٳf͛6lٳf͛6lٳf9AME,\MH']̐۸+ܲHŝ,Ԓzs~GJd_htvz}>?3%趚%:fin#z?o6yκwY[6;KR?x_Yǽ3߹2} T'~Kҷ 6lٳf͛6l3u-^ǪhF~a]u~Bz[~d{kV ~iY%__:Gtb?ja8q{mM=KI .PNA2h^i Fg',5-5ӖYބ+yJ]:%wVHwdOꭆf͛6lٳf͛6ld$#@K3Ro˝?F;nNR}FC7jZsw)I!Q~ A#t^cDIT~7¿o"=cK͛6s_Ο;+>2WKMO I<o3_PWե37'c*D "R.~A6#VP8ҿ|8zs6lٳf*ĆITPI'`N|󟙯IiHOC$Y /0ZAl>꧇Ww>uH?Ș9xS7⟟b_񴋁W0?|[(ySF1Ǝywo#.i5NJ@s𩒟o/++ڻ10a8/)9:PL^CE|2f͛6lٳf͛6lٳf͛6lٳf͟Nlٳf͛6lٳf͛6lٳf͛6lٳf͘nso/Ũժ#}a+:?!'IԦwI2tU#QRH?Gy//9.5ܖ}"섺o.#__R>IqGwh,(tu5VV͛"?_N- >8}< ]^jGNՒL3ܫOhԶŻsFАF˺Y~IXx#<);.~zm7* #!*zqٳf͛6lٳf͛6lٰ.Zi_C#UsWD{=Y.Ye/ڂ#?W[9?%?"/̛+rjMrGZm?>Yäi,/UYݾaxrmo̿KKP 3Q"_͛6lٳf͛6l?'nZ$m V:ɒ>IKthm(gdC98Xkri si( ?Kes̚i¬u!OG{e(J{aǕ|yNj̖C"˞Ͷ%2tո,`i7/alٳf͛6lٱNh*1[rYoկE@Dw?e<_?SҲVCØ)Y:'_n0k(I. UuOz:g,?(4?˫O15̔2I#XY,͛6pɭ?k&֨Tk-a_75v^R&{ۓ椟ʫ\K3E7E{[9^=iY6lٳf+9Y<ҭ^(Vu>dUFxʾ\6k؊]ʱOJ/}.o:Hm"H䣍OM sf͛6ri LEe,c#򭙽FkS slٳf͛6lٳf͛6lٳf͛6lٳgNlٳf͛6lٳf͛6lٳf͛6lٳf͑-{=L<6?eϚ4M/~ QG3,=͛6lgNq~)4c'2&_"^iK;co%z40_ٳf̈́n򥇛4]V?RxHd4lk~^i,j ~ّ?a೧7B'Ⱦ[ JߺvcP~yHIej=O;6lI%~quDṱ2Dj9\7ޯw+^CFc\(+.TvgR߻OKr_eV]'& '+b[~vs04wZEx_*6lٳf͛6lٳf͜KrK˞FkP0!OM$_ry̿ lğ?m9?govܫkjhHvӰ?b/7.M&HOH-aPƂx >s~z[FV< f͛6lٳf͛=+9=;Bֶzj̊y:9!9K U,vݲ}GT?|2řO̿_2cOk*-ng96 .[[9F;W0ӣXR\zr28|9Wj^)4$DԴ?/yj6$J]yf͛6lk~s x"+̿FQ}GZJw֞%nm$?99mv[DuV?2/'y[I.TQ啩=K[8}E58H"[GQ ?ɞ%E$UU£͛6Z7 to19k.y{rT8L};NjKZO YCggtj; :'q~'_z皂\ꢍ4Poٚuomlٳf͛ .\G JƁUG&fUϝ_ߙ`}\ZJ~ OW-Ykh,\N?7gUf͛6l2u!kԶ7%=d4\䎝Gκ<NGg?o>͛6lٳf͛6lٳf͛6lٳf͛6Nlٳf͛6lٳf͛6lٳf͛6lٳf͜Or\䗵SF{)7 &34ziY? O&Jf͛6D5|wKA$?*P[>|ྲNLW;#ث)V~=~h/]Jʐ]>/O͛6l14ҵUA8hݑ|yTF#*n>ĉ2ߴ α9'? zIr}Qm7S-'C"Ұ9fOom ʲF+A77MWa՚HR~^?Uִ;R -4hR>,o" *H æw˿o2yp%fi}O礼97+gvFY da'/syf͛6lٱ;cicYP?fgW|)Nvp.w"osj{dum }8ٳ?&-6߯`8PUeUQ0^he/{4⢰9*/O?Sg|AO"HWZe[8[*$36X4a0iہG;V㒛/ȯ>YGN_PF[Ƹqoхן>ٵF@(#r9~myTo5{S}wUFUȴ\9ggs՘~F@Ig㷜Zٿ_Zxo?=/mJ+sYRo%czZ_8w#FѭL;kd1ġT\6ly7˾MɮEnԨo`NR}{O'[z j>p?8(z4=ٛ6lٳg0*NxtӓfZR9ՙGSS!/ߘ"XWH;O ~?';oaĐʡ2䬧͛6l0ӦGZgP=H/~eo6u}=V>P9>ٓoiE~[oՖkoL/l΅ka([w?Ӻʼn?c6l待ok֩8ȟU_ߴ̏cGwY?IZΣۤS*iwZ\i hȥX|, )~lyT]QE"%&v/,kkvGXx:n9 wVOߔbENt#j@zŲ״bcM3Hn)Y"/;| Y?)2Յ# '}2OZ3e!FV f&ԓsNUVoPC\7_ _<8k:u%s>/g<]2ɒտOg)&K0?^SյΟ$3ѿyu]NB)t_.yOOr߸h=O-_?]t{f 37)OHfnHcZF ? aF\El~h {τ~y|99_2]Bݿv3U?rɦC$J椱%>Nt 7yf[ccfP_IOז|RJ_:MOUm'/; ͛6lٳf͜bDk;H=?a?Ϟu{x=×wmٙX'=8=Ѿ5@bN|nou.v,ٳf͛6xs7XߛSY#gzxw8Cz6es'sf͛6lٳf͛6lٳf͛6lٳf͛?Nlٳf͛6lٳf͛6lٳf͛6lٳf͞"לmgSݚIOo/07\lٳfͅdROR3t?7ş92{=n}W<Dk$柳GF$k{J?窳f͛6l,'t2I%ͤGs)H.?8O*5O-4V(fkxo8hI}M%F$lUYs_ K;D\ y}9.yK-nb?C>7Ű6lٰ~D<յ8l ĿUu O­>X{V;nG%)*lko94 u -?Y.&r\#歈͖ :ef͛6l*5:ԁ4$_8!;/喇;OhV2G%oYo?_ENyͺou}feFiE~tDjߘR5k-?tI[|y~XEy ĺ|^hSUcۯS?1dZ\2[ɡ.'*4eIg[Ac<[%n`ͽ?g_S,8pAitGTt DR9O3{_n1WceVaſ6lٳ`?KԤX%ħD9<8_0i-%p?$sI?/|kڭ@zI+kkK,q *(3ce&CP b3k%bjXCyQ|Vy ͞O<|^n)ٺ0x|2!tZFw]ŨiҼP0hCFR?{~rj6Yv/K}Û6Z.@ ?Ԕ~?>q5ywP&u>!IYyp:_':zRp?2>r^_$juո7OLdw48ZM?G_\S3AJ? cZSOt5`2#/6lٰYޙAv)4j6skqzXA#f8S噉6W{1A&ol []hg+>8=^}a3-?o9@f/s8ms+4+=2h?~Y-\[*3Fbiskq:mC^c%dTMO\?>k6X1E>Ykϒ8]<5%ל'Yc6yWӧui6?ʈ?iݾ_l~df䘬!$[[/bA KTB$쪪:VI&Gǭy9he7d}~=?ookĀ*UFbf͍%JH)؂*Eu_)jg#!Uo4 _ѯLsLLB/d${o_ By{Y$:gWtG$t2''Livt~1 @0Nlٳf͑_oMsiULS-7$yo/OUm/RjJ̿]ot 7v7^~oK}ʶa`O@w*o#k&yf͘r=~]s[=6<([?lB*O01 /)vOLT7r+WÜ ##b?~3r11"և_>Zi j2'H˒-7pv7& ?qIJc?yI-݇yMQ &N4&MOJXP\6lٳf͛6lYlK9u-JU/$h7¹o_Ϋ̝JrHb-=Oo^o| l $n?1/^4z%O"x&_)V5z6g+~W#6qlOΫ̟7iMJ+[K!+·oir5].">>=7rȗn''?H? t+n?qS tgZmYq>޳dՕ[! o&f7ć8o"o-Ap]7jF|>9v]I?bͼ9Ch36Js\z{Jn5nf?+-y#[M=^IʵD`S+/'vf͛6lٳf͛6lٳf͛6C?6-,09tp F7ؕi?:}&GMCʹzSņvךWIe J7nP_sf͛6lٳf͛6lٳf͛6lٳf̀jCR[{H9os¿?w_RoՊ#H?_"gJf%Vv#z6lٳf͛6yr"wҲB;QAW?Mmmu50#GB~y +qGȞwӼí/ħ# ]?p6lٳf͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6lٳf͞4ӽ/2Xށ\ I$)8K^`lIIOxU|ٳf͛6l;-o*gu&jYoO9ON}&5Gٚ~ cƏo>]bi~~W~#oRu$f͛6lٰ_( b VWr_3!y7V-%N9%#rpWhڕYѢ?z}a9>iXAPKrY?2!YyM$^iWS\x ŅűX~lhߘvK Q۶Fؑ~[ɦlٳf͛6lٳf͛6lٳf͛6lG/:i^NVX-ӥwgnĝd5 ~t~y7|LMXmdpzV{Pa#$|(??ߓG#;/)yDђB1wflg$ƟNz76lٳf͛62x#C+ +)޸U%_Xy̺oյysVvGEE(TrFw,x闑|4K=?iYdsX{6lٳf͛6lٳf͛6lٳf:mZysO?m/xG!o6\0|-&wdЏo7ߵBis gwʿsі1\Ƴ$N+)H=Yv#͛6lٳf͛6lٳf͛6lٳg7?. 10kg֍|KZ*"v%H$mmc#8~b/nZh|RSV4[_,y_NZN B(ݾ&W[^~ov$\^ j?Llٳf͛6l]/.m'TMipWS#|YWc=^o@wG}O/y35W}?beW_;gf͛6lٳf͛6lٳf͛6lٳfNlٳf͛6lٳf͛6lٳf͛6lٳf͜#s+Lד{kȚ̲D3_:}n8Ngٳf͛6lٱ8oa{[YaJ8YN̬9k]FEcHYduߍWzj$b:G*~m7/GEk->Ԑ7/xo͛6lٳf͛6lٳf͛6lٳb|wy"C@Tfm<9nehF%Wu{(O#}qw!=wwc6 G~Ny:TeUbr%to r&#F?L?6lٳf͛6lٳf͛6lٳf͞izNIipzw|l,5cMLR"G'|W`ÚޝkV%,?ݲŒr'^~W~Z$H&mx'hoLsP.fZ=ӏ_O(X6~b6 q"?I_ɝEt82 I?>͛6lٳf͛6lٳf͛6lٳg0غKG@?ߒ~OOE\.[iM+v?Y,!HEE8yѴ^;g(aVW_<8gRJp߄7;~g{λtҪKğyς.(qSI.$ğIMOsٟ}{ h/K_9sfn{jG3V!EwY14/՛=6lٳf͛6lF;$rTda8>}q&?㎸u"ir?䚦tٳf͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6lٳf̈́yKh:Jbxde>Y꿥Vk8yd6lٳf͛6lٳ~s7i>~ilu)E?yާy@qjVF@r^eG?/Ymoiue&˼ G at+Uf?'+g&R-,b{M8Գ1%W9?ʟˋ,o7g~ԋ @-NҠ!E51o~ysg 迻z_o'mY%dF v WoK:hzQG>a'/?Isf͛6lٳf͛6lٳf͛6lke~^4)jV+|յKZmF̗741y1"y 3neOC3/K<=6_fխ⺷n*?z.Z7LwIYa}hS_nV߾j~!9q(h<`"G|e,&}z[ƈBbO)wWUl`h̢f==e8qcqChI7'dFimYĐ[8qUQ઻ 6l7iVS?U=8?϶ ƋpBFٳf͛6lٳfϝ`|@\hYfzWpS7SnOM6lٳf͛6lٳf͛6lٳf͛6Nlٳf͛6lٳf͛6lٳf͛6lٳf͘Yu8}Zh GGZx&ne6Lٳf͛6lٳf̀R-"Q4'(\j׳7&\)ػ~-Vq̣~e^ <)4a5oWg%{ 9q{+eeq9s.nj?7Is~B򧝂ǧ^,WmJ*/y3f͛6lٳf͛6l ?+![׿q3ysGF $~/_gd|9otn?ztRuK4XR~Jw˟kXwFjw;5.og["hVG)_y`cT^l~Ε\JMlOiRVjzrϝ[HN% Xve9?"<-/4{hAzW82(/'yF󍠿Ю" BfX}6l`'9ߜ? Rj 5z>I87RSAهi.dw^yIof0Oϑϟ<_e.oɑ~bymRֹO5yشx׭ao8H?So,i7VqK%:_,h$@(&ɞ9Aӎ'x?2skyr⋩X8JdF@@gG=?|^t5`kpOJdoa5z͖P1i]P9\㟘~WoV " ˸a/aY?01u>'Tf8h_I#m -^Kci$hI?Gf>Q~[[^hАyq(nVM3f͛6DO6u: oh^K k?E)4 u2R//S9/?|U"Pwcoy̵$k+X\Ӽ2q8J c #z=?Gjwp'p?9qɎ95>u6Gib>&YN?ʉ9S#:]#KH?9En+H8sǾu4Zט%YipO;Z ZH$9Mk WVa+# ltEO<#R~JlNY󧘊= o4LE?ΆV\wn $]lٳf͛6lٳg?-ſ.d? eNmړdp?gsf͛6lٳf͛6lٳf͛6lٳgNlٳf͛6lٳf͛6lٳf͛6lٳf͛>zF?J,D;g o_˷q56|оz+6lٳf͛6lٳTy.FcK$cg?u=/wh%ƥ$ڐxrFw4NYXf5$o'~Hy[L7aGO$y>y8Uk5ޙ_O _|=0}[B_$Ydf}6lٳ?RyIo"̓?-Y\BgG/$kiwa8OIho/z_,ICjB#΃*H!{s+7ҋ:f3BmacTO06lٳf͛-GMմOؿQB}%07tV[t7Gnlٳf͛6lٳĿ/I$RXoz6lٳf͛6lٳf͛6lٳf͛6Nlٳf͛6lٳf͛6lٳf͛6lٳf͛4*6toOO GXI{6lٳf͛6lٳ?fot6AҊR;q?+roG'Ygf.|-vJeTb|8QWlq%N Y%1_[Sx7bp'֫{ =B>xCsy5sFY?ؚ#9 =FWrToIc:7<ѯu/,du uHTD.MHO:?&^-i$W_RO7&yf͛6lٳ~f~Akmuebo<Ï4ilhé+@Z{)g_RH$^7YFF?-<@)hU>Mw Y[,䫾J4_6fEuU΃8Pq6({*]KpM+/#sk2?#V,>W)O/9\3g8[a3w儂O* ak&$ٰ&jKAxJpr@yW-ћ ݣ.8i )o-Yrs-_v,E@o,>y:Og&Il)i[U|Z_!u;XW!3yOpʚK,ګϩ7#zqȸ~?);VXeA}P?خ ͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟;?|-BWI|8Mχ$ ~w[ *߽xމ2cllٳf͛6lٳp:گ9ٳf͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6lٳf͛<9zNSKȫ"ɇE8励],HΟR4|͛6lٳf͛6|dn3J 'AW sf͛6lٳf͛6lٳT5ƹ+O$W $?llٳf5o#J?Zծc`k,m9_0vlٳf͛6lG͖:e WVn!g3f͛6lٳf͛6lٳf͛6lٳgNlٳf͛6lٳf͛6lٳf͛6lٳf͛9nOȗrY '3RP~J_>]Lٳf͛6lٳ`-sUHԦ&o)sϗג^Iu9;;Ǔ~9;˿Basi'OIlٳf͛6lٳW D)tH||4Z봓Ÿ 3s9f͛6lٳf͛6lٳf͛6lٳNlٳf͛6lٳf͛6lٳf͛6lٳf͛6|ߛ5M.R;dH}h䜋8!Լcr~?M6lٳf͛6lֲ`д0}b#DW qE-22*Nޒ4%3>lٳf͛6lٳf͛6lٳf͛6lٳf͛#ROVi$fcW5u)WOi͛6li_'@g3O/:7[ɴ^lٳfϝ?6Wư+tI?l8]?04t=6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳ~|kImiW:"o>yY]egcLj ڽ~)3sٳf͛6lٳg7u&h^JG20pLjaw*,ٳf͛6lٳf͛6lٳf͛6lٳf͛6ln%HdoIϗky[ҟ=k6lٳ_ҿ&O gҟ_Dtoiٳf͟>?%"Vu~}0gٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf́$Mh3aˋv?0x/mH>G&Z(?^Osf͛6lٰ̺ZuOvI3WϘww/w3Jk$]cɳg΁&jZd6lٳf͛6lٳf͛6lٳf͛6Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6xsl;KfI$j'L6lٳf͛6l_c(SFO?S}9B=o6lٳf͛6lٳf͛6lٳf͛6lٳfO<gptns6zpnSx.lٳf4oVħE,WWz:7Qam&%9f͛>}LևLÁ?}͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳo-˪Aڟ7F )5O*^͛6lٳf9yОRR}RU4G\ߕ~`T]NĮ8%T;6lٳf͛6lٳf͛6lٳf͛6Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6xs2qO͞Y?SI_kt":7[f͛6lٳf͞2׳cs[J/ָ+p&Wy-$ 3syf͛6lٳf͛6lٳf͛6lٳf͛6lk)kX\ɧϚi5K!?z[6lٳg83N~j$g/˄%z$lٳfϞ?"ϚZN?l3IQ2H1J#6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfϛzҮ6[ 9o#=p?Nvٳf͛6l?~nk֝=Or>?%J7_٧ ?7=f͛6lٳf͛6lٳf͛6lٳgNlٳf͛6lٳf͛6lٳf͛6lٳf͛6|?JTR,y"D  E>v#DS6z36lٳf͛6lX}MGF?19V,lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟67g߬sH={8X[gonvٳf͛6F?3<{NVMOH V^_͋o&{ұfcfcɏ͛>~GyK-.Etx|n1O3f͛6lٳf͛6lٳf͛6lٳfNlٳf͛6lٳf͛6lٳf͛6lٳf͛ .UcsF{7pGz]~/b6ez6lٱ , ETnz OW?>lUISY&#Uȿsgп-/Jm"}H -a9f͜'ʷwΦw2H 9M>vg <^bh%d/f^lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfHQSu[ḞY?ݟ?te1NEO9deG6lٳf͞Iկ[Rzs_m*z<cp~}͛6lٳf͛6lٳf͛6lٳf͛6Nlٳf͛6lٳf͛6lٳf͛6lٳf͛9HeSInPZo$}Vcu[4qYeHϧNg[Ƒ %" f͛6lٳfȟƇsʚZ[IJ}H.|V*C.n3ߓuh:5մRp6lٳf͛6lٳf͛6lٳf͛6lٳfZޓaq\ O Qϙhז;xZJѷοiKd7b_}p_02iEuRY-I=yQzTqi0!?K/#|KXa6E<ZU!_Y?_kqiZ4kgU-/rT?`SDY# eA",*/.͛F֯t[ 2gI#%XKYO̴(^u}njS[ZǞtO4wݭ*Dn ?٪l 4&Y6\@*M]cr?oO^AOAZS]E9 Ѵ{j2 W.ƃf4Py+A-~oi?$f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛!~hX򖧪DdŒ~/)"|&8gb'ϦJKǥQr&ìٳf͛ <_.i:oiJ$(+S?Ϛ~iϙuKfV#/(T yY5{p"27ϛ6lٳf͛6lٳf͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6lٳf͛<9RiZkG0?T:u:z=Uw{6lٳf͛6lNԣ #2i;<Ǵ{qT:cVd8P͛6lٳf͛6lٳf͛6lٳf͛6lٳg(?"dd}>ZRhoFR4 g?5<)ɍH[׉Z7]ҘH:$\¤_frV[YȻBT.O/Ky_Puk$o6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳg?5]&w3O 4Y?%l$̞a,i>f͛6lٳߘm㞗T?&^@eq6p?oߙ4چH |Rφ*L3kU@ f͛6lٳf͛6lٳf͛6lٳf͛?Nl-3=ێB'aUHϨpȟP\5ۚ$WJ#,3GͿesf͛6lٳf͛6lٳf͛6lٳfM79_6j7(S>=OyO'?A I5 }8W ViQ<9f͛6lٳf͟5?4"^5 ܕ#3ؿH tks͛6lٳf͛6lٳf͛6lٳf͛6lٳf͜SqJ˾2n?z/ٓ.IJ<5{+zU_d/6 4Vam%"Bؠ';W?|ͯϮqҭIG0)?竧ɿ/~_CGL(2ѥo"%DɾlWc9w|k+3Z'B/Y|8Sږ} $*GVuޘeҦp _[h׀A'ת:K%?ɎL__.~^=FP g؅:6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛<9UӾv薫UZGO?V #/͛6lٰSW6FT>kyp.,P|1Gdy̓[n3kH|Q\&!#R¢uas_\I<)gj%ӝi'#&6lٳf͛6lٳf͛6lٳf͛6s:|}yq~9~KTqzϟuڍVVycEُ_}3_ag[wi GQDXs6lٳf͛6l?ȞW\ڎ✥YQk>|YMq'F噏Q͟J?-|Ma߼һ6lٳf͛6lٳf͛6lٳf͛6lٳf͛6b=23~X_Wc%g3'/>3Vp%:QTlٳf͛6lٳf͛6lٳf͛6lٳgNlVCܮ>:hQ~Zƞ%'o؛,ݹf͛6lٳf͛6lٳf͛6l;}wV X/SF r3-m3P~|J=ћ6lٳf͛6l< 9':Ef?6;9?端%gZ_W[=4fyG=6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͜rw̟}K=?˞΋&Zi0S _lygi1B8( 8\ٳf͕#j] 󷙯uII @h 6-=)8i};Je{a2?f͛6lٳf͛6lٳf͛6ly_^JSr8eD x;v1k;Iro*5_:ܱ6{3ɀ.| o(x'ʟw 4t%#x\7LO34=[f>8"H_~d?޵XvjmkI#QU7m;?'[n>p *(?cm`OO5޶=" #OUs.Cw]ǧۑ%n(f}DGC쓏[=]I!O;I7GU? /KE&'KwXx+s/iE6Kqog6lٳf͛6lٳf͛6l.k? A1D>'/?3-523t.MgqTaߔ|:WK{Pl#t?'7w^c^n C_fVHrIyfZy;*m4З?Cg{γ!7BE-OoL.ګl$PyV9?'Rd7_Ǚ?(x5 irrd!˫/2qf??KԵ#ִIR7)T}Bf'm?7fU@Cnb&Xf͛6l?+7i3SEm( :wtے0^[ #15f͛6lٳf͛6lٳf͛6p/ɋ?"*$( ?-K7F9o,.4^Sk&H n2ѯ ϜW:^GZ .X4ѯ I?ItRI%BkCӞVLߒmc}Hޟ"_͘EC1\ȧnf|W=8~%ljKnCIʙsf͛6lٳf͛6lٳf͛6|2@ܬ`B#'ԐIF 3Ԗ+>nO=ÏWӎɞ͛6lٳf͛#y9mjQ+nB7?~m~kj?owmVIHeTU4~E7Wg-*kg6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6| 5.?H^zspLP솾ʑ?{͛6lٰ^Y=swURGO0hWz>!FES[#~Y5~4 IܶA'ya K|1Olyf͛6lٳf͛6lٳg?#?#ʩ' m]]Ÿ?&+$YؒMI'':voaҵ 6%z((HugiVctQ8ȿI ϟQg(nZG}(礊9_?y/Fu}?^~7|?z<蚇dי-;$Jz1GL^<\y]V] O0:[nrUUYhS\󅗜3O!p<[WiGb_ߵ/WڑrO~е ck%eiF^APp}u?֍c~_'\KmIxJGA4c,G.G2G|̶oO8;,Ff//wf͛<9S~㨢^$W }7I[p^kwI"A1I&P͛6lٳf͛6lٳf͛6s1*BonGy5gϫ) -<αxlOo|=DOrd6lٳf͛6sm'ּ>^O ԟSg|QmS[GO_wl7~5MUZA_OOT&&VXXF@#TtP0Vlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lSNbH]c$mO93f͛6lʟ'%Cl::M\y~-SKnI"eo /=;)@9@[ k͛6lٳf͛6lٳf>GE/O-yn@ڻM2-?kYimlqwpUgwc͞UM W߾.GUchV?̖wr RX]u s6l߽_=kVK<4\ytn,'Vb"-+/L>G#?<ԞK+)X:?ߗ|$7Su= z)![-ɯN͵r;[u\cA䢳gp$>]pR\nOJW$Tn9'#š%tA?i.**^HֵF:ާ]E j?^rOOsAϞ^ЦE ؕ~(_>p}Ɨu-mݣu;e &xuf͛6lٳf͛6lٳf͛6xGr0y̭af/1W"_%/1r:@:eJilӰ?Jrsڙf͛6lٳyX~\ۛ+^7:X=&_J|y1P%3\]jUQ~88оa4WNy=>?ۗ-㷍aV8UPlTl1f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfϟ?>Y@Ƣ)ۋϊ ު8] ,`޿ )cp2]n\PKYERH2e6lٳf͛6lٳGAo/.[~7ua!i޿+n[A. wvp>>(Xef_o_iv<94XU1#==F|yKw-#x7(2i}K˚1oa# <wG_rgtO/\yVX55gn<9ѿt8e{ɱ5ڕFR+g'm7IA^&G+}累sy07GKiKE|ːo0y̿phpkYcĿSKL_=s.ueE7]:?q73Ny#s'b :?ن?ړ8lߗ`Uk9?uuD?x}l%c{ ڸ ^7SPÒ2ٳXyw'AY,%|ds3˺톰 RØd># UA͛6lٳf͛6lٳf͛8tKѴ/50#}ϲ-'J/!Puq"xϣAt+z3ļqr,_ jٳf͛6lLY4//2kDqwْ~q~,u+NKk9%Vf8>;yHo k6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳR~Qei( 3D_LF^h7lg֧-2t*T@bh?]6lٳf͛9䞅oMA=0=EWEL7ֽwszi`ڿ?>//DLAI'?fRETv:i[g?/²GgV͛6lٳf͛6r/?(.>`VMrOqʿi?ݏB>xJUigz5gwcq}O%`א62wxokI|l淔>X]`⌷A?<<;hf4CYJ?]c_M _?=WOM ȶTmCR?eM_\fN+M~}+QA-m{;x2oo>r~g~_ ]Я*3))A$Mԣ>Ysп_Y>%,Ǩr/}ER4qUޑ7ػHO5)_K9q&d`{2,>%/tnRI3f͟Nlߔ#Jd_e?[,ot]pfWSU?+gЯ?[m 5D?fJ}奄Qt rc'~v`"?<, wU%"{H~>z6lٰ^o<5,ep9|9=,Ԥ /G9O4|xJ6Hz +LR?#U֦IV0{C ?BǑ1|;sUf724?e-VỌ7coo7'׍͏78k7?+j^$?jDĎ6ZuvI3ٍKrmB\#M+~!}: uky+Xn ޜi%s_W&ҭCCs9/1'ٳf͛6l~`kV}nRR*'+n#/on&Z]j-%aҿj+uu')g^o%o(g3 $Jsf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l]k)aȩ?Zw]=oouqtpU;_zz_ *71W/_-znҼfsճ~Y:alٳf͛6B?2'< ^7J)TYS?9xOq^G/wnQ֧ׅO%|>{ܥ<11V=O/9l/=c( ] cDyuC *rf͛6l_d(4;<'/?uCQ@FH}IN {6s?}3ո^$}¿S<# _jYMB #_17vfɇ7οVWZUwlr\~^>yS(ml.G[_9@6lٳfNl/ɏgzDtz]2&ϻ#խA2~/n&vY0lkKe[?.,.FdEYo?YVO=\ߖ<Ѩ_PW6++|, +g|9q,^aVVym猼\fy:ehonćI[M9Vȹ?7tx/LzΑOg)姜5axkqYNL?痥zQfk^ysf͛톍 "~ΨNW9γ9==,:v7~>>E?3 D6iswE_L#wTz7H3;?,iO9*Ev1kXŸ'*uOwyqLRY9? oh{p^~GEK"vٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6A?4?&4[~^ Eu vÃ|Y??0^Msִ7pWO$)yWt+u*va~ \Ob 0)cDXjڌ we*O$lXx/pFlٳf͛6q_o/y$EuSR&h|+_'|gٳfi]S61dA UQ3vf9c{/ yrFP =[3y?OrkNLRmJ`Ewc Oo g" Ւ/3y"-ohU)??=s ) ,Q(HUQ@@1ٳf͛6lNlVmu{Itkk1ȍѕgoΟk}i^XOWW7]ٓe&:ԇ-.zA!v?󟷑:T7+8i5 CHK2&*M*#yMfP_F:ePHRȍG-hfȜvߜ!ON46;TɜDYg,ėksH"It ٳEy WS?t|mMɳ'_>􅳼͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳce%CTPFxrBYjU{%YcC#?_)tg4Y} Bj |?׌?^)edemZݏn?\Gq +e B:~lٳf͛!_zW.tMxLh.|q9̍|yTG#">ĉ2ߴ?ŝSqrFo%|6M#}I}RUTe C+X`ٰp|ˬk2mq/|ν֤*G? }_+q򁯮ڤ䥚r}R[syҵU .>$?'uϟ^iNB]_X.5fnQFszy͐QmdoNMylٳf͛6lNlٲ'q`hڐO U}"i_;+Q^6Bv#캟,MQo՗;V?+yC?ec_G#>_{9UFC#AЃ͛6lٳd#Ϳ~Qu]Jzeqp ?TGOukd9h#>ls+dӾ??>$L]/M Cxrnhng_ŗrT>v%?)?/ڃ'~Q_fX ?a&9km6"}%6Haa3`]t%]&ն䇜ry"Y:y羘3<,ij3~&cq_k u(ҬZ?mFY_"2y?ʡeإe ^uX BE 1f͛6l~{Gy#Y!,͞'/[?|PL6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lGr ,E^[6PK$3;jRO!-O3~q&۳aZ,*E*EQIa/XKLIשfb+9>Vu17ٝ?:>lٳf͛"_:OfaVeԉ3?Y|I~]^SUܠ>L?"!o1n4-٩C!`oxizekk 8P*9/>7|.VJW@:zj?uPz^.Hr):"`MA65 u\EkyQ~y΋ $n@epdy󟟿".PtloBֱdg'3Zw*n,h쫹Un@hkw%-"£Fc#1 w"'*Gοf-眔Ty?/W"}W]126|K4b yE[Nx'щ?N%Ni>dYiXKq8wMam~HcBT,{G3ߗ_~XYta-Gpxg@͛6lٳf͛"1|Oh>mgH|ciH͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf5o%t}-.dzfx>~RCFr)[ o6s?,iem;Y2yCkq Ky1nmGR#˞uHӮ?n [Osџ󗗚g 3΁vfOzeWbhI3f͛6lٳf͛6lٳf͛6lɋƭ^V#I>|\K[ b?O43f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳg7㋥S3ǹ{P`-6sO/bFeڐK@A23_^`J/VĚGu&6?ȓ<%'>kW- 49_o˞[m@d?Td; f͛6lٳf͛8g1ԟTcN2&(y1([W`Į 2f͛6lٳfNlٳf͛ u)ia,NM?,*skF hmsV޲}ː=Wpz:f$ch'j6_nޯm #pJ/g7Ҽ8.$:z\̿tLOŝ&#PHP*=͛6lٳf͛6lٳf͛6lٳfo:Ez`W8>bg5թ#z6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6ysm|o8Ϥ? [ɚ)?o\͉]Cy[]" +|,3͟/%0l?cHw*%+yZ.N-䵺N" gB'8Z_oNI?≾?qy?_+$OKmpB?Sw7tٳf͛6lٱl("Rh933vUPbym4aکؔ3晾/=4@ynr6䎮o\f͛6lٳf͛?Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6~tyA [>]g%"ZKcz6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6ysoQ;cOMobx.#4dJ!'?npX#]U_Z?}Ngo5imVQEf9/'WjyctmN[ ÎJA͛6lN;hyc5,P7ff;*goCy˞^r,mEAe?_g Q#U>U:R7Ɵ}򟕬|[ZzvGsݝ<ݿ f͛6lٳf͟Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6!~_ag64LMOVM~LVz6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6ysiOwOnJL}?R?(\͛6l嶁X} z;JqEW? eRN2D{D(_y_Y'p#_dk#`[BUuQO+#R2ɶ9 CUU=&G:65kr|7Iм bv&My3b.ZӻjW:R$# A |m#Mk m֜~QG%3_󑚏 *rӣܲXW_dVN&$P'VJ)?.FO;WoQֿrf͛6lٳf͛6Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛66P>X Jt ^z?p֦??yٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lo͟F?8ɩsƙo3P`Y9͛6lٳfͅ]u[X''MN^~UyNR}.у֩8-DzZDǼ/$t_*-_]Z9$*%3q8itޑ7 ?TWW9yPЧ6ؙ yS;̞Rt=B{h7$2s\0>grounbZ%~? w"-"̋ hc=_ iGJD7v;mW좪6lٳf͛6lٳgNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lg2߯= 8I)0_2<>lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lV?ԹL7(F0q͛6lٳf͛6l_ywN׭͞m%@OC8<5ͅMJC d+/qsɾXn.plA>uEEe͛6lٳf͛6lNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6c  **=OH Sq;>S/leB+H>oQZU,ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l_ͦ={K5ϣS:0?ֹ7͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf8m?to9Ϥ? Wɚ(?o\͛6lٳf͛6lٳf͛6lٳf͛6lٳfNlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf397g4?>>"KT#p@Q cd` nGq)eȶT)LgM =HC@uOu#B5qꈓ?tG7>mZ{>eyYwًӱ5HpbomH#B$ZЖ'#LkUc,?湦>D<z[adE&rFW,}Yn2c5.׷utWK?'2/+X'Jֳ'/б9QUt쪏V1ߟv*nY5/(Ncqf%e5wezggjos.ɰN+ 1tmk(+?}>fEX׍Sͷ"amra_{뭕}? c8Y"%{|RIs' 􌮗[ɢ>Kz{=W~}cױpA46I$JTI%8[#~}2+f9hmsq.g\_/Ƶcwl/}][kmW[}.l5ex"- wzW2>d:=tucFkmmsq=ZUINKoTxVzX 8/$ZRF-},C~NQو:/豱+*V>5-UDZbjjun`6>\b=?Tg7CuE#Ll=Dy[3#T+rN}GYU]"I+Mg3}^jU'2]^sJM?:>݂˞mxߍSGɬ~3{-qOu?}aSY^}=}4>.XunNʣ(@dn,o¨,$D&q:Pض:ە\onex[K/Au`|ZYs=z~F`|zi> .,ԣ4 Y}_ uҲm`d[O`nM7Nf1i{gRvu9Z6pxc\cW>3ǟ~+HyKޕ5mOXO~=u Z*'_kZ=WlS6Vk/~uUNOz6X26`XI.swc̯ݍdp*4בp)V}`k&NLtΫoҭ ̪6Vְ9cR~(2G?_^QSK6ϧhmZNϡ o̳?8=+:\IsF9mY?e.?i裪}ݓs NmٙkuuWnOѳ.HJs/_klLX} heLV"l!DM$ETI%)p_Yى&ƳQ{n Z[eUO4}ykn}'(.41hf߹VfBfP %k&)+Ԫڙc;khv2ZC~v/}Q95S꽂qkfk~~#>f^яՖ zSݍKiٳ>YKmU'a}czvA馻{YPE9 h ȬYz^2iNګ#-~Y/,qGMI =O]K 㿹kV}ozLȷd\Ȱٗc1ͪ=?em}ON6Sˎ03үq 7TmWA̬>}+*܊CYSfWmy6cc\kԗ`uekȷ{4[e6b?"6_ᗡp84Xsǯ@ILTI%)r^ikoلnE,.ph]Z>1),eDg-8 %WC揘yKHp0F>zUEXxW[p*u5yـWOM޷ 8n/U{zqERb"%"mgAoNɞ׏YidzGYzQdXr{\\oK~ukIN0c`9V'ozvNW9S lojj=b+ƫ'؟u{}/a`T繂̇߻sf>U {}>ծ#w~ч2맨{20 Eȵދ1"׹=:ԠVD?[)N8Po1ݠs6Ω!}nwOs_5 ?iǭ;WGZw7FTBԺ}m5%Qf2=m_N{Ik?3%щEv׶5~)8ԭǮfVUe=αS?T45_hw~]I I^g F>gY=Oi%8V9u{6܌~UYzvnX7u?Gu6ӿ һ}v׭tp[NiɄb_Sr{dUR>$]5Go0|[[o65zf-_c\Xm]*uK#H[[~u\[e@o,=$+tINԽԺz/Yy=AٌF{j=ce[k3#6zEz:~}W6ts+—+bd M~ڿF+)YO)u59y4 Z̿B H ƻ~# ":Q/~OY.E.ctv;9A˻oćm݇EԪ=mm,{+[>a779,h:]u{>9"?xC$HˊDpy9LXox5XL1US*??D}'zym/93vs[S(cQOE߫]#m8˽ˬ榶4=OS+u.Xy˔RI$cR 9#,Ykv P7=Xߵ$ıqh.l$j'I$I$.ekm]Q%1[Jaf*n!ڞ㾛gn5ofXR27NJ}E1챍9iAծklNOH 9x?'\=wK}_>M:.}_ƿ}^.'/Etwf/)(LLP!%X{n֙ꭕ[i{o}?cӹ:ʫӾun]]BkكSj5N}Zz-u]f/~һ֖>W//=uOoh*pjfu_2IRz*cZ)G~Tʩ$ꤗʩ$/ hzV}??zͭI)%I)%I)%I)%I)Rag֜kn lvw3w$SHi%aƂDk'oپ};oc~ϡuI%?IWwgGwo~־?~k]|J6FPhotoshop 3.08BIM8BIM%F &Vڰw8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket PMPPDPaperCodeName com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray PMPPDPaperCodeName Letter com.apple.print.ticket.stateFlag 0 PMTiogaPaperName com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray PMTiogaPaperName na-letter com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0 0 734 576 com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0 0 734 576 com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.jobticket com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.stateFlag 0 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIM}}8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM_appenginegophercolor1nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM e`JFIFHH Adobe_CMAdobed            e" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI%W<rn= ssS6]k))=UEOji}>"KT#p@Q cd` nGq)eȶT)LgM =HC@uOu#B5qꈓ?tG7>mZ{>eyYwًӱ5HpbomH#B$ZЖ'#LkUc,?湦>D<z[adE&rFW,}Yn2c5.׷utWK?'2/+X'Jֳ'/б9QUt쪏V1ߟv*nY5/(Ncqf%e5wezggjos.ɰN+ 1tmk(+?}>fEX׍Sͷ"amra_{뭕}? c8Y"%{|RIs' 􌮗[ɢ>Kz{=W~}cױpA46I$JTI%8[#~}2+f9hmsq.g\_/Ƶcwl/}][kmW[}.l5ex"- wzW2>d:=tucFkmmsq=ZUINKoTxVzX 8/$ZRF-},C~NQو:/豱+*V>5-UDZbjjun`6>\b=?Tg7CuE#Ll=Dy[3#T+rN}GYU]"I+Mg3}^jU'2]^sJM?:>݂˞mxߍSGɬ~3{-qOu?}aSY^}=}4>.XunNʣ(@dn,o¨,$D&q:Pض:ە\onex[K/Au`|ZYs=z~F`|zi> .,ԣ4 Y}_ uҲm`d[O`nM7Nf1i{gRvu9Z6pxc\cW>3ǟ~+HyKޕ5mOXO~=u Z*'_kZ=WlS6Vk/~uUNOz6X26`XI.swc̯ݍdp*4בp)V}`k&NLtΫoҭ ̪6Vְ9cR~(2G?_^QSK6ϧhmZNϡ o̳?8=+:\IsF9mY?e.?i裪}ݓs NmٙkuuWnOѳ.HJs/_klLX} heLV"l!DM$ETI%)p_Yى&ƳQ{n Z[eUO4}ykn}'(.41hf߹VfBfP %k&)+Ԫڙc;khv2ZC~v/}Q95S꽂qkfk~~#>f^яՖ zSݍKiٳ>YKmU'a}czvA馻{YPE9 h ȬYz^2iNګ#-~Y/,qGMI =O]K 㿹kV}ozLȷd\Ȱٗc1ͪ=?em}ON6Sˎ03үq 7TmWA̬>}+*܊CYSfWmy6cc\kԗ`uekȷ{4[e6b?"6_ᗡp84Xsǯ@ILTI%)r^ikoلnE,.ph]Z>1),eDg-8 %WC揘yKHp0F>zUEXxW[p*u5yـWOM޷ 8n/U{zqERb"%"mgAoNɞ׏YidzGYzQdXr{\\oK~ukIN0c`9V'ozvNW9S lojj=b+ƫ'؟u{}/a`T繂̇߻sf>U {}>ծ#w~ч2맨{20 Eȵދ1"׹=:ԠVD?[)N8Po1ݠs6Ω!}nwOs_5 ?iǭ;WGZw7FTBԺ}m5%Qf2=m_N{Ik?3%щEv׶5~)8ԭǮfVUe=αS?T45_hw~]I I^g F>gY=Oi%8V9u{6܌~UYzvnX7u?Gu6ӿ һ}v׭tp[NiɄb_Sr{dUR>$]5Go0|[[o65zf-_c\Xm]*uK#H[[~u\[e@o,=$+tINԽԺz/Yy=AٌF{j=ce[k3#6zEz:~}W6ts+—+bd M~ڿF+)YO)u59y4 Z̿B H ƻ~# ":Q/~OY.E.ctv;9A˻oćm݇EԪ=mm,{+[>a779,h:]u{>9"?xC$HˊDpy9LXox5XL1US*??D}'zym/93vs[S(cQOE߫]#m8˽ˬ榶4=OS+u.Xy˔RI$cR 9#,Ykv P7=Xߵ$ıqh.l$j'I$I$.ekm]Q%1[Jaf*n!ڞ㾛gn5ofXR27NJ}E1챍9iAծklNOH 9x?'\=wK}_>M:.}_ƿ}^.'/Etwf/)(LLP!%X{n֙ꭕ[i{o}?cӹ:ʫӾun]]BkكSj5N}Zz-u]f/~һ֖>W//=uOoh*pjfu_2IRz*cZ)G~Tʩ$ꤗʩ$/ hzV}??zͭI)%I)%I)%I)%I)Rag֜kn lvw3w$SHi%aƂDk'oپ};oc~ϡuI%?IWwgGwo~־?~k]|J8BIM!UAdobe PhotoshopAdobe Photoshop CS28BIM:http://ns.adobe.com/xap/1.0/ uuid:0CDE46B9982A11E091A193CDBD092F25 uuid:0CDE46BD982A11E091A193CDBD092F25 uuid:0CDE46B6982A11E091A193CDBD092F25 uuid:AFB0EA80982311E091A193CDBD092F25 2011-06-14T15:05:53+10:00 2011-06-14T15:06:23+10:00 2011-06-14T15:06:23+10:00 Adobe Photoshop CS2 Macintosh image/jpeg 3 sRGB IEC61966-2.1 1 8999980/10000 8999980/10000 2 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;22C38A4F29010CEA3C3F26298C0C806C 1431 901 1 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;70422B8F548BFB2D26B722FCE28738F1 XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed        ""     s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*I5.:h1V1i[E5KH~əKȴ%qVZNh!a q.*{s{WeQ/^oXyR'Ѻ| ?S -GZѬ^I1EI.<\o6ti?TƲ#Rk]bԮ!QqyUx.Td_^dVչgk;oSbgmƯ1]co9b՟凟-)ׂ?5u?Ƹ Z}sG}9QɊKͽJ}wM9?f UiE֞ڿɏ[e_2h $F䷧-Jy+v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UتuK11V1~h_D%uR&T̥Z?,l^IU䧘یQG8UKzY`X2`qHtI/tx_ԩ)KZH:2\(f緝tJ MZz,ꏺ^/0Y՝0*#RyCmmꊤ:]UC+ A_v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb_N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]f &u8|9 *Eu|/X%?tD^;OΩi).0|U/}lʹjK%1WkpuN}su^J?\Q<5,ǰS~c8wSg,G21d?`Co$"lbFEX=P׷[Gɼ@4dV?Z pI,oT&ѥ .|?s yʬLdVfjCgkv*UثWb]v*UثW퍢[%͔ _[F'FYgOF7HzxV[cHޮ]T6uo؁m:9~@ Ȏmґ _GRcZ>Qrq%l>gK^@I甜?֏bVWmft3|iB߽O6**Cd^{ ХHF5%OI UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbMSUҭP;{xZI*͊s CZn#\ Fp_*b<;rMVǼ??&*tUѰI߸E&Sș͐<Αѯ+E=.I%1廑4/ t@Ӱ@[1=|teZw嗗l(cOc"v]v*UثWb]v*UثWbw6]F\"28  @<}?'R&[k)Oem*pwz`yl^*D?nI7VfG6*s&ӝԻ ?ʎY?_Wr|qvK *益iqV߲|1Saɲ9'yk/M]Yܿ*>c 峛 0ލecoc4!#P?خنdO7,DJ;v*UثWb]v*UثWEt;~.!%sqŴ/3N݊v*UثWb]v*UثWb]v*Oum_o8ǖ[ ",Q7k}쓊XȖ[3!pq%/8׼h@s"|iOwJs.9c.EĖ9GKO0Jap#}rַy;s:?Tu.=9ib?lUNw8y+nG_i?/zQa[9Rx[>Uv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb_N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*ukM&u 1VF {b21lyy>˸̠@q|2M_W^o޵yIu'`Z_qTO?-1RKh}+vwK??皿YLFۡS+Mh=&]?ú/+(?\UַQ]F@$n*2K.*v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]2BIHTPIbh'x/w宋v>ZSJnqW~z|qv Oo͊ޯR.Ojqʧ0 F|_#D"{ˑR V#=Ox&˗cӈ3rv*UثWb]v*UثWb]| yTѤH_+~q7S7q5S]v*UثWb]v*UثWb]v*UثWb"UkV{qy Dd{ ɤΗ BBI?,̆{8ґߕ= j6C^VElʌĹ84WVOWCzG<ݿ4ɱ{4uk>0;S8|95q kr5|9ܿ qW+H*EA1UWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb^gh.$֥O ?فkWe>'rJd5Q<.$y^2z:@5"7bG6Eͯ3y5oc#cf:[Z;~ʯثKoZ<+tGqW[Zj(織fbz5 _'71cϘX1|FM?笃 sVpĶȱDUy;<6 UثWb]v*UثWb]v*UثWb^99{ȚfHyXϿ-o>|" L_b27rb]v*UثWb]v*UثWb]v*UثWb]v*ui f YbnO[l ́z.Y,Yzp-cx.~z`yz^O=W * A=eF|0?̽sȷbCh; /\wNe9Z(`v\5U똫Wb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uث6:4ˋ?R{GmPM[?Wÿ:ϟ11}((Ĥo>*Cn=w0*~|=>PӼEķvgW'5y2vp!9ʛ]v*UثWb]v*UثWb]v*UثWb0 [OKr|$'!CpC`~L܉|nM*67#L},1\b]v*UثWb]v*UثWb]v*UثWb]v*UثP*=~K[t \nZ/6gbprxZH0\+As ̤n+ {^Es}-9Zzz,,WǨ[k‡pO,аxA:⪸Wb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UߜVQSm=O?v0ywzqw;rfnU*z⠏SVOV7U#i3_S.~?Y=qT ; ;Wb]v*UثWb]v*UثWb]v*UثViy|f^MH? ޺tZiNfUثWb]v*UثWb]v*UثWb]v*UثWb]v*Uyiӻ^3"9|K5W<S⯁015O?jjڳԟ(%~_gof__Y1zfoYGߴ߻dϞn {^kWb]v*UثWb]v*UثWb]v*UثWbR?@&/TkaNoqڂw"z35|^˚bUثWb]v*UثWb]v*UثWb]v*UثWb]v*UثUB#E*VVE;'jڞ!F;xi>˳èup90$yUN1eٔhٚ2l}[b "׶c/q!ob1Wb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]wJP~jsnO)ɱWx}FMWY36D_َ$b\5j?lK }"~|}L`{;v*UثWb]v*UثWb]v*UثWb]v*UتQE6&f/{}'?5+{4YW7͆K皷fUثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb^I@4 Inff*`tͧ{W\Tk{Zz[7ظ?#??,1mmn%u?ۏW]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb^-9$zZ ?qOX?~ү<+1ɩj=Ƭ>T~/¸.?' }-l?ξ?WLtOO]sv*UثWb]v*UثWb]v*UثWb]v*UثWbv#.s>98s^%]NC-Wu_;Gb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*U_1-,V^//_͙5;Nl[[\W<׶U*J:Xf>&(OD}o_,UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثT=6Pԋ1)gw!U@f8_ο4_$HY/B|E?|_57kon=vf'&)zʷڀYIO}^mGvxppy0ܷb]v*UثWb]v*UثWb]v*UثWb]v*U-4W&zv܌*Ox6lgp4Wvn]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثV e|bPu?f@:$/I>^̓q<x.{N@p7e`ve#6'VE>{| MXQa_\.*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثϿ3;|{KX2'x?O=wR}8R"x tiOښOyb{C<7U+n3{'.+d!ͷ3>O?zvkff)@o592v2 ثWb]v*UثWb]v*UثWb]v*UثWb]v*~`Ohe>ӛ/:x@N}әAs/dkv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]bvk+OdVØ>l<|Wz%Z]"*<Uea haԐFG=/-yZ\vboKv~H}9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*wwMqpQfw!U@f#|9j4$7W#s0d"~*ޯtY]ۓWwbIޭba^+$ԴOj+OuuoqTv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]@Ŧi.ʰ1Wߘ3`ZCFmiOX+ELZQWʲdfv}"iWaG4} ˛|Yɘc Ȳb]v*UثWb]v*UثWb]v*UثWb]v*UثWbX7La?Xg>ptNa{UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*U柞>h&R{WzWe,,w8ZФQW3v >xڟ3rd310/_Y-qgڒ]ʟeF,~&r?['(-R c/d4>0m Zsm'OU긫Wb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]5jER-i$4|7qw <:V4;XQث]7VIܟ_ɿ߲F\Ϳ#27L-tA1*3fR26]b"("r,v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Ŀ6Po@T?ts#OAaG#Y:5{Wb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثRHw!UEI;si~a"!'›7\yI7#Pu} o 5 :Gfہ[.e ;p%zK@vF?YuyS[I˦K":$ljOUa:+K/Ҽ|+v7\/˅t}jZM.-I#5G]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb=SUҭP U䑂3b3?1ll9y>L*>("!d⯙WyD9'hߓVm#3"7؋'/:#q#9~-ov]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*U s/_y9e>ӛ/;x?gffq4Z]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb_9yo3m bv{y7|\3sCwO3KgQX[in8 * 8j%.#eDP|'b]$)T:8* XEw l/=K@_?K:N6|GzZ)GG"o]3ߟ6HWQnm?obv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb_N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*U wr,PDG!UTufcD֞MB,WNy\ [iܓA1GG#)Y{O%-47zuO__k5uDaM[Ʊ0 &)w[G5/#n^`ݐH'imOSl;gb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*yk 9?Pj=II"?q3|^ӚdUثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]ag ;v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbmRqi4'p9^iN{fn-IcoCstߦ~[!״]^Re U3]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]a_>}O#yjY}831xFثVS31Y4-|شp9HS9˓۹ITUثWb<:~v{=r훌;eoN݊v*UثWb]v*UثWb]v*UثWb]oP#QԻ!X?44ZcBz]s}&cO>'<{Г~ryf1UgXr_.ACEKT_T~R^L55 ?aݽ>f6K!-o _c$? =zi^0OSi|\?P;^Q 0PwGA?2-=Gp,GR>L+mῴT64?Ws'$06ol|5/%\?Q׉--~fJ_|-ĝ+?-ĝ+>0ȿ_I|ȿ_Izzyuk_U>u7obxX-?$?+5̛x-~`|y#"Y&a5d(;~h"r֝_8?(;ܯ,G=0od'~I_9SHCL{/Tk2|ɐG11K#9!aiX;"pLtf3DLmͥ7 {y[%F?8:C$OP GLUثWb]v*UثWb]v*Uث=XRx_1qeliaBfvk~E/9|L=iׇiJP'KsWb]v*UثWzu˫D4@=EQ.sy\Q }u8Um&Fd)ؿTa=v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]|y9{Z^Ւz~^qꏩL++zMLc_rй_^hUثWb^j""GI "Usm7Ui3F5sHvq6DY;v*UثWb]v*UثWb]v*m4x#$ O e"-lReF#Eyb[chIꢑB$[^Ŧ(yhw 4AlzU\%K6OqiMVc 3eOѬ_bp I eFX1Dt IUy}$7K& "4˫%Q8 i+\oP/4NHB[~VNrHːr-?'|{PXYD!r:ȭ~AV0G4Gf)uG#?jg^MTT##z|'f.͎TǏGHoy'nwq<=c@~^(LF__r?*{G[=G%ZB`,7D~f,-$':Y{KT D;A][yw9ɾy1'C_7G)lnP ֹ!0z0#T.>6-+ъ1T:kPPGr=>TјSx?7< Vp@l:VߟZ` "w%Y8gKjdZB!nl%#GGI[F'_O?O#GK& 1#2GFњ'}kw bkgYc=`.RbG6 y*dUثWb]v*UتUԢ%4go)g%c)pxΟ7|B\Z>ڶmKÅ꺬Q}wnUثWb]v*Uث 4J]]~"Ku(o7Zq4>ПdL8Wb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]]Gk1jYrlU3In\Z?G1WSht9KsgQ>){<1 r]v*Uثǿ!m [ U6O6:C:XYǴ^&L8 2\ثWb]v*UثWb]Z4+&QR??xB)r g$G2u/Z0>A%YxȴLC #vid$"Ɛu-'Tz5;X,Q?䷪p4D~| \HLr92yv>$'Nnh,OT3f O Z~Mr9[J{r0HN? 5W#76ȓIJh9zV S/G+:49b!%gP?hr1m/a5`Hzdg`tM"Nl-v rG1#ike"Q""Yd*UثWb]v*UثWb]v*UثWb]v*UثWQC "۟,iWMFx2I)r0-dɌX={/\ij@<#yfMgMqHD~hrѫ gIR;MR H~YG6X5qk:Y$We&UD?O\j zuKwi<+"˄ZH恂HI28T䘲;#:y7ҷtL2ueg֯oEH*J,ZXMS!͕韟\[%dQo$iBPv_55s69,'!ثWb]yWϙMZ,&p}IG ~_yf~)ϖΑ '>P!_R\S>)WYQ3r݊v*UثWb]cz'G)#䟼P/.|Ӡhli529tmVXR<&C⮡%Wb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]rW_$_7'e*C˚I}<z йK[(LjDEB TPmMb]v*s0yarfiMJMH~DjXݍZ ?V=V) v*UثWb]v*ko4jeꜪ)9I 5K,c̰_JC-4?&<Y!X5!?4-%DʹMjЁ|]w$pQ6cKMg":{F_$nFh=#rɎ{33YSհ9u1jWY(rc1.H̃7b3䞃8_|A"#n0oluQFĢ8TP`in..]v*UثWb]|}u$!ye9qDI<$_^o9>+@G~h1eol]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]R(/}]H>gч#q+H7zް<-bf7ҏ?W15R{jUثWb]t?Jhז ,QW-*-YEć?j^݁4K'q3qn[sV݊v*UثV3~dhz%V^Pڿ|(/ KDF/? M"(k\tqe=ֿ0hLCH)#,ʎ(ǐqRR{:QCi)R,&_~MyP$F"z)Y1娈oEi?FCO ]^Cf<}Ȏ'e;DMY+NQ(-DVmC,qEP%A$oJUثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb\;b "ޭqjYƯO,92уk0-]l(`Od_xq,ZIksq>:s*9.,=$)J9w6LAt%íBүTcOy7Q(/Z.DWe?ҿʟ)<ÞC̆'Ϳ6Ga]t(u+^K>;º%\Q_YWydS,?v*UثWb]v*Uثſ?>Z6u0+W ZO-$]yW%ѥjCT*=}v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]=_5ӅpQfdz_\M{cLjKzv`]v*Uثx-<氷W&/#vR,!uO34ثWb_^Ѣ#4EOrq&7yǢfnIF,͆_y<KۖoM>'2AÖIK[Pӭ䜎?or6"$g'6t3Gh8_W1e廓4=MmHAcQ"ӂ$2G[_(\K+"ثWb]v*UثWbWCD/\Ġ"_Y=Sݣd` 3NJ/| |Zko% W˧~X_E}ordWFVQWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbT.6CD@Y~`UmcRWS1?lU֜4/;$?9?|i3]Q )nv*UثWb]3B6ڄbpFl/6YXYzϒi6ځ5 :}$ZW02ÆD9إNԓ̞s dV%FaS<KKыXzF̴_6ҁRO-ossse{fc985εKP>#|ucQ^OMΉK7 o/ٯ0#=\žĞ#Aok Ƣb|ܐ+ v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]گ4&_]jo+G5 2/ZD(ގ^4-SǮ!aV"ř{/*x?֖misdZیdo *geO6FL&ZG5b?̏,mH|2x{my d_`W]v*UثWb]v*UثWb]v*UثWb]v*UثWbN*UثWb]v*UثWb]v*UثWb]v*UثWb]c~f?㵨[?;)k'&*{s$]_0R1S?X>91$iB(eTxK{;k#P_9^t}Xȗتc~TN9jmΛ>nszԧ0μy>*}9~fn,0]T 1 XO,vOkyz$.cͼHJ;v*UثWbgz<֑%%ug3C/*axŏ Vo/^gj0,x6*nm)zC!Wb9 z`9ylaBF$٘9q7/JU>_I(xaw.by/y3JNTzP~'>?o|by'YSkWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*U-ɧhqڔc#Z\̹5 7Xks!$/OOs2O8wV7hM^? ?̿)~&!>hǔÓ߼;OexZ׷OOdac'ɐe-]v*Uثg&v3졖4BI&U~e2fMkbSK"iəÖL?Q үb>"<:4=Xė.eI1?IZqWbQV:̓r 4lT늳.A*-IEși_V/3i"wѿDljɊ7ߖ%I5*aQ<dU]v*UثWb]v*UثWb]v*UثWb]v*N*UثWb]v*UثWb]v*UثWb]v*UثWbߦ*-<)-G _1q_2rKl-֍W6M˗N*dyXXIqUdX\X^LI;RD+7<?r!C$CY AM@4'jKh|٫7(?əlHS[1يG{#,u_+8bz6 Y[QpRT$򣥉mWi:}?7 6Q-![C7|kD%o!4O?(.b 91r)TUثWb]v*UثWb]v*UثWb]v*Uت[yA: v|O,3>Ms7y󕾈V 令ǥMI3QDi*K㟜X,n)~Ŋ󄶑O0RH{l"z8mj\?\$>&*4.R`QEAWLqWb]`_N5OgPa䗓u~rnzMث<8c_G D%8o?- RI1W-;ZjV[NRT(Uv*+:Q= FO޸i=Z*x$Y$f/1graz3]|ќ'0gQsa2ey;v*UتbICXTzaEϟ({/2ukrhm?eS_ nQrufX&()W\i"CUe4 arUЙ45,v1z\y~*>iӼd:\ѐ=G_FTv*UثWb]v*UثWb]v*UثWb]v*UN*UثWb]v*UثWb]v*UثWb]v*UثT~l|a&̰Z7cԟD_$(/}_v_O54Q//)?[d^Q ZKtU#b}wUe=6}3)E&*/.3E]<]H?nZ6^ygKҔ&iD\U3]Pq5|ClUjSot7cBVb&.{xa xu{䱬ȑ#ĿU*$zI _ty}gNk99l^`UثT=o@w,PF*ƀ(c)/ ޸XDbAVn =y#o3iN!f\[[7envD6_9 -$~WX po+ 7* g ,r]v*UثWb|y|\*_W-Yl0\1MW&="OHh2Os6AÞyֹ=_]'̒!5I?\ˎ1AĔ̹yc$uYfOvNҮC&Tpg_gim൯u>*l < #̸T5>-^Z HVxX튥W~hVofiɧbcUV %\ѷ.*5˿1h5:un՞&#8X*4uYG2opdl"ZA2ጹ,[XIк?x|ž͆oI!qk"Ktt`.لbG7,HJ;v*UثWb]v*UثWb]v*UثWb1=MzecCM??O2|Kش׼,/^sw+M3~e_scuDT4BtC5,|Wl_󇚾;)Gs?VWҾGǒNd8wY*UثWb]v*UثT>Tmae@TV)qWϿ_v7Apm^r^3JMlU?|6zođT`?j)Wr[c7t }cO)2|7 﫯SLUw#[Ԣ,jG2_|U~aƧ˓e[Kip?fU*~kR|8}OM_bQ.[2#6f/Ԋ&.B*tyɀc&3v*UثVk?4%!ᖛ5>MO}+fN, =kztwјSӱ)}?̹W(/_+[zN6sşbaOW{UثWb&'FUTve#EW˺sT5ccQ(++7- ]8|{ۍzpsN,k~]*UثWbX)D+YG$m2-?_0~h"wmJjL,)pxx\ *H F*,4@_/XZ'ӕ|$_?W_rƏd\U]v*UثWb]v*UثWb]v*UثWb_N*UثWb]v*UثWb]v*UثWb]v*UتE?8iO&ui=+hG&c"jG| ~cj&v-߷/E> UZKu"9 IQ⯨?'Lzْ "11WNgۥ vъ,q(UBUثWb]I{?+w:֤-PxE.GSbo>yΚι;|+]q'(6*y>3 #>/.Nm}9 ) ,Q(HU4۹`KWbv =߄Kvc)ӷN34Nb;yS9U;/crsqg31[˒`ӫ,#oC.q ,&}h=XD½u?ǫ7MLv3v*UثWbX_6m #n ˗/oFec_q|I_oY&8!$/<φyI]\q"3U'^oƟ7,VPuJ!L?^?/iI\M17^˟.h}H?Րbv*UثWbZ C87<o$E^xI kzm)||Ep=D ^ȯ6y,4=tf_?>Sm چ/Lзj7%͜fcOmuu`>/ґ\zv/JV )"0\KWb]v*UثWb]v*UثWb}CPӠ{(#gc@L2O/͛|-0^f?g^uN3(u? MMċvoS2|18o˿_/E[9{JI+BpU]v*UثWb]v*UثT]j?IKZC>7k75u/1lUMդʄ+#YN*|yP7D;Kˊ';4eDHp~hD3? s AqM#Wޅ]Qaث;WMVXuj:?YW$_g˧l\zouM^wa* mOC:jEBB3"ثWbj^y)#x|U:]v*UثWb]v*UثWb]v*UثWb_N*UثWb]v*UثWb]v*UثWb]v*UF;xi$h 31L劾X)l̺5)oNG\<|?J}B;KDig"(31⪣⯸!?-"uT?&bU8Wb]v*UثO_ͯӚKM6 [Sն?.*KVTh:zy_MKb;7n_|+o4qqdC{Wboi7n1ݑvor@k~sߚnE; ik^9nj@Pu2,a5]e ښ4qq|7#-'EBJUQ@* Փn ]]v*Uث^b{dTV213qgx4u0'ڟTUԟ3e `맚Sa{KWX-y/uA/Nj)\PlG'*?FU}2Iv:G8%gzp;\ P?pYf~I'Ŕe&ߏ11[gN8gBfD~6jg!Llem]v*UثWb]v*UثWb=_Wp7?T~7J124JB"?>`]yjd b N\e[u"UU$V=oщe4hN];c쪯bPP *v*UثWb]v*UثWb]v*U?Z?$MsAi.T}}Oj⯈|]WZZ&)u#uu$OiműTCׯt+2g!K[}ik;0kp-el(w*xۺ,bBèLM~Re]F5ow!v(S݋ZzF?kf UثU(rddq86B>Q.MOz:%-J<&8TvTJ_i?gՕL_yb]v*UثWA~H )0Qo\)Ձ~/5U43$%$RI^%u/ŬQ R//I:8Cg5ثT&[_^7bcśrQR_3Η^j70FH vUo7X &C3eU~V šΰ ,>Y }*?k_>~ ^ݚdUثWbPZƵgn Vc*N024Jb"|yk=_IO͖-0rj <̚zc*ɼ}yiY #_NWٿ/Bu#??y^Êv*UثWb]v*UثWb]1 *  ⯟70 5O*p Y_!˗^};V?r K ~*փ ot rJ#( ,#aG0|Aȫ%"h3a0ŘO̷1܇b]v*UثWb]v*UB > .GJY,bdh1E^w4NQFuzŒō ,BefX֗1\#Ye/?!<¥ƺI?ɿG{f*UثWb]v*UثWb]v*UثWbX/嶓5^:1Jz?%X-STm/T^HhfQJΞ ?ݑ2wFnK-:V hTUg5FY8ū[(0R7?W,U*E;*q^;&KKd⏱W6wz-؞h.b<X2²").?2DUZ-YGG:87KÛc3rv*<x|b`$Gu G/9~ɣ..1C1J VX¶n'I/LR*W_59p\9xc9]xז*(u1wH6:I C4Ѱe4a#6WK>W]tx.zbv*UثWb]>]yNJ[7 e~ZݸvBMqWwGߕ_z C]v*UثWb]v*UثWb]v*UثWbN*UثWb]v*UثWb]v*UثWb]v*oӭ`${*n8kWrn۪BQOa\WdϾfOcV~{?rU I Q@@튪b]v*UثU)HIu'~{zgIoc'|S?f~*C[doG+?r4TilevV*?fMVh.#eF<"'"ثRHw!UA$@I A4CkڹNmV'|`?se?G~U~[~a ;)vħ9p S,x?KB( ԻVWb]a{̱ߑٯF`~ye!<̞h$.eEB Xoͬ "(:LIlO_#SǸ []6}_'W~OV=474ݘ%#*UثWb]v*UثWb]v*UثVM~a}SUpz[oWŸߕzl5T Tpʣ+ۍ4WWO.4) )g '_yFzG:0~'l͇q\9?S4g%ثWb]v*UثWb]oW'K`l mO?k'/:x\H¥r$q_o:CEkUֵ \/N0w?OWb]v*UثWb]v*UثWb]v*UثOl%$qhx4lރ{B+g~`^w-KmMkz r_4]b‡̑R0Ub{ICů-2Պ-o^v$⨌UثWbXoBuPX|QIN^12b]v*UثWb],DZ0ҞduHIFfY.- :^&10?孾#x\UثWb]v*UثWb]v*UثWb]v*Uثο;)-1fn {7oStl/ch vDaB)^8Aք/s<ݿW/qWވe t*|9/fO4~:jЭgk#SJ Zo#n3D+FQYFF&)y̶ [|5Gi?.Lf^!Gb69)N׿. ;$Rv:\B02p<ԻWb]3UZ~p|-?7M,Ws{ )`Heew5O8Q:4&k OԒ"ٞྥt//-^yLQr5u?N FԵ+N[[ܼƥ&f^7sp4zU s0?f|WFkEaam5 *]v*UثWb]v*UثWb]v*UثWb{>IӼˣjG#,g]?qWW-b]R]E *|ma&*yS>[MB;:~7e16PhžghkWV)O٤LMs ܃7b]v*UثWb=gVHP4.|M:*/Y(Ga9p|w캅Y*J⹽xEK)q,0uH-ӷ$$ġUP|U\UثWb]v*UثWb]v*UثWb]v*UثW"b 'َ_bWߚ'!*wx>GxrXqWb?*%ƃt|ߣuݾ *#y_P )a¿ Grv:ȡІVn>"ݼRUت Z ,bJR7Ĺ8Ha8 /|áO˧ I Rif2,hymH?տsU}N!fyv*yk-&{(H^a,8OHǮn3XWbYmnYXDq7~隝k-E7 bUثWddj>UWAY4$G(JU 8NwZٿpHx1Wb]v*UثWb]v*UثWb]v*UN*UثWb]v*UثWb]v*UثWb]v*׎WQ&%ԁޔ_Me_ǞmR$o+p>cj8cC>9Ï:|84oo0܍۔podzf6'#M\v*U? Hq;"6:|?]~7yHm">sɻ,(jmƉO8)L"Iٙ|Os˫IUZm?Ox}VD JUlU%#Xy#HDg#IS¯WdWb]v*UثWb]v*UثWb]v*UثW~x~R~chln Jvw7~*,'Ӯ$F(…YOVb@/E]5,'J~?7MF.!cr8ME٩v]v*UثWb^1oi,3fKO^G ;Q1$!k<>(]77J,+WbA]v*UثWb]v*UثWb]v*UثWb]v* -.I ۆVYOˊ:?7/ftgRBݟU/ʯ=Mo0TqG 'Y~E{ \۰)Q]teaX|WPދkMj%FE=_>@qU3q7RƏ+*8Jɴ{RLd̦d\jM zn`]y燔Eֳ֭ڎ2SV.J<.']oW;aCu?pYq  V )ixثW_>\!OgqWnI_Ni<5mMqC 2LUثWb_{K%yn*UثVcYk*׸e=G[+f[ÎOJ]`^j HOMc~w=9ek+%]^(7v,a#O";ku JvUTf6](*KWb^}ſ܄ZZO4x?K/Û|1Zj"/? vͫ~~NQ~[BޒJ\Swo_?ZoWb~g+H` =#PW^oLk2b1Wߔ7Q0874UثWb]v*UثWb]v*UثWb]v*UثWb_)_SLJ+ae̟U4u_LXyK+kwnDs{|E&i>o'eٌ;v*UثWbT/sHFv>96J14FNyu{ɯs;9j_+1$l/Z9Yi KO:*?L_q]v*UثWb]v*UثWb]v*UثWb]v*U_VJaziʿaqrͳv*UثWѸׁ{p>`M\U*UتC$/]YOɇUoqA#Di Sb?nꚵ3qWxWb]v*UثWb]v*UثWb]v*N*UثWb]v*UثWb]v*UثWb]a&̪hEe8o}8Klw 7_F]v*{O=jݮ=AuY|U瘫Wb_E~Ktiz(Rk>W%"\grM4*7}[Wb2|íMp_Â~R㛼0:l㕽C;QX~Oh>&Q0Y,hP UثT~d˚|kB~Mc{Y5/ۜW\<"eW#Mƫ5zCxb?KڟI׵^FSnѼQɱWǝsf\Vzu1?80|y+{Z~ "qObEP( Uv*UثWb]v*UثWb]v*UثWb]v*UثTkVS[\H*‡~o~ay6ɚރw[HB)تcQbSK[C!=O޽?>xqſ dO4ثWb]v*=w::X!=߰w7K 7U*6_Ǖ|k/|x?r ^v*UثWb]v*UثWb]v*UثWb]v*UثT6co%ʇdhOua~iyS\kI0O-kH*_ŏ9/y iW~8UzbqWbsD!@AUF?4pW 'O)1WGyKiҟ5c>^B=4Ws v*Uث=.mHG#j-8G,ZXUh:RJio?d=cNqfo癙 dc4ثUBE*VS TERNq=u! ORѷ,\B$i'ɰv*Uث?"I?(nP,)"_glUXWb&Uqkۂ7WU sڑE]v*UثWb]v*UثWb]v*UثWN*UثWb]v*UثWb]v*UثWb]a?[z~1Ug;W7_}v*Uث/!k7H-#L/x⯚1WbQF6Q}X|X#B}qkmIojGQGݚl۽*`KV#?zΆ\~?bo1e2t◹>zփ.AóL'W;O6U}_kmIo5:QW&ͻ+eL v*UثO9Rr!/!yyQ'z?|ӪG]>Ǣ6q?[/x+KC|9烥y~/['Ԥ?r_/._w,yycʑμo5B.B?_*\UثWb]v*UثWb]v*UثWb]v*UثWb]du܋{;氻/$ثpi늾3]~ K2w8gE7;v*UثWb?lcȿ3oG{ז>aup)\e8ȢHF*]v*UثWb]v*UثWb]v*U3B-ֵەF>)1>#f_4ysCUfYy!cWث5o8k-W?!\n[=Xu~pyFnVZ-+H.oR?\U^J,b%Wt2DR}r|Uϗ\E^eO_Ӝbv*U懔ŎiĴKLn|d)x;POY2k N|ŭ鶺]CuqTv*sGBND W≏clU++GuXYcc<;b] V)'%pc!b&dUSm,2zobl[">Oܦ_k/S>( [xwjHѣzw1flNU6p}88/.c.]l?އS̍߿S}>XWbR1KW-JO+?__Qg/U rev*v*UثWb]v*UثWb]v*UثWb_N*UثWb]v*UثWb]v*UثWb]H$?ˍ%_?it}M7SXٖ?cbWv*/ '?b6zJ??ʣrt>Cv*U_׵dӐ(zSz_ٶ£uzܫCƷ(GZu4y[U^LW=Ya٭v.]al>^BԺQxy't̝>>)UO{?-]UlW܊OA_J/é~y7ʖ~RmM9xlF۱*⯁?'|#ܠ=vaRo7yBZDuL~WDk JUeUqWb]v*UثWb]v*UثWb]v*-CT`ڟV}^ݘ/Y*C9; s ɬUh^WNyDdYN*UثTX:-qNpu?~|Uc5Ė*Rh]u=C)Wu9]DV?nv[3Z]v*Uثx2jCTٚgq_LJ.o(Soi5>alI&/Wb]v*UثWb]v*UثWb]xGK8kr-B?fYq5_a:su!ԟ_RUثWbQNw}\ܒHث) 1Wy.YQ8._xݟn?U^xF䷾i0UO+_ ⯾\KcG$z*U~eU|Z  aZKi-RDj5!X~ I(;r HwnAWb^STRADk",gq溽Lhzc%Ώ!"?jᵳz{>k]Wb Nߗn/}2SmRgywPI$JXU,vl -? 1'8!HbBQ@*v*Ui] ڠˊ_oxPmBAFy@.*lUثWb]v*UثWb]v*UثWb]N*UثWb]v*UثWb]v*UثWb]ZwPU{]Sƣ?|UgGVZ9&M2/lUثWb]̯'Mm7UJ22&t?4/.-I=KG$Cs>ܟSïŊyI_T[9^&ֵU[3.d4>R11m֫>$_R*ƾyn)fv1}8Wqwk-V ;/_a]v*UثWb]v*UثWb]v*u[]&KR hQ|9+&0R ֛E.*^l|?ֵS@~_WIWb^?Ϗ51lokUopLC|qLUv|@U˼smO*UثWV5 Kf)/IqVu~?d#jceHm.4nثWb]dk23G ]~j_$f>$-SHkz1]v*UثWb]v*UثWb]v*ο?.5-RbԄ}︗_sK#Ms;G5,ت v*UثWbQwsYL6FSB UF*m14OR拪ը?n?dW8qV+`Z[9긫W}w8C 4WL'xjE1ؾ*gv*U8 )T /ɊCGRߗY# oRiƙb9n]a?Z!3N>KF3+M*FxoݥrzHأ<d ;bR6X{HIG\Olא\K޺Gˡ6_Vrh+D j_H]v*UG"~_~VX!;ڞ@*3NSKpj:c*.gƍgAZ@W~OxWb]v*UثWb]v*UثWb]v*N*UثWb]v*UثWb]v*UثWb]v*sIv*UتI]{sIo>ܲP Ye|iW1Y[)yufB|9tDSo'Ky4/3X%٤qK SkW|/mZy-fOM3 jUd3*UثWb/߃Fc+j@grFqN)ث.dib,MI'rN*q͵}]xq F;s^HWٸWb]v*UثWb]v*UثWb]v*UN*UثWb]v*UثWb]v*UثWb]v*/_˳+Omlm@y?,\኿>qW󈿛K\75I) sf;,ʗ}wv*UثWb#ȴ5M>T$UYJv2+O EOB]xo- 4i uYOkMaVd}GG`ic/ikv*Uثȿ 50HGw<͆<ˁ q?^W(4ӟpÿj@|QO,5$#C$u&Y'LjOP흊v*Uw;SVeCT7:y\CzOFf`?=\jViebNcWb|uAF]O'7{'+'2l8WbXoaoe~7?W?'_Κ9uZNwSQG؊5n\Uo"WDƃɤ%?lU%(GJ4onA=XG.GO1Wb]v*UثWb]v*UثWb]v*UثN*UثWb]v*UثWb]v*UثWb]v*U7 yWW>aӣ9f6c:{O^oq$,бY #OǏψ_IM#ϭkXz4T\BiF*lU`G^8bsXK'-W8WbI3pEd)_).% ӹw.]v*=<,W7e&>ËN\i:P'İ>n?lmltz{jݛWb3!Gyy7x~rE?󈲔*?npyƹsSUتP{#y$`o|9ycӼCt+N _|y^Qf{MZI IW_Q>Q~B=#F~Ԓ7F}9A[iV ͱWb]v*UثWb]v*UثWb]v*UثWbN*UثWb]v*UثWb]v*UثWb]v*U)G,|ϧO걉mn)?ˣ|h͊?6)˝QnBZDeOjƌ u+.;X:HV *#?r~ 7-u]&4X?g?xUثV9[ZS_ث?tdX9/kur<3v*x6˴pH%%fзR;Lvc_>[ؚV3OP436IwFv*@;-R $sG:(S&ߡO%i6l7o'p_ n_J'O|h+2Ӑx*1Ex U~*UثWb]v*UثWb]v*Uث1cO6U1W8Wb]v*UثTZhŖ)k+ӵ!#pw U~pb5ЦpW|'0b]b_|z*7 ks>zKLܺ_ׂ!ZGZf#K31Wb]v*UثWb]v*UثWb]]9'jъU?\Uv*UثW鷑4}#BXaVVf~6SUMǕ-h"?pFa*]BçyI 45a z4Իl~C~\귟\#yb l뺕SEo]yG K >_$]-p+s<Pv*UثWyص΁/Ky㑾D4?)W34j埔V-MOQҍgg`5 W4ثWߛ^7x~}E5kVZ-oI㵵H$Ecu_[˚_Syr8!/A6ѳG<9y8h| %nm""#d^̏0y_W]憪ԅ8Ŀ^O a&O遨Ro_⯶?.?+ocG`=YIHoEfWb]v*UثWb]v*UثWb]v*UثWN*UثWb]v*UثWb]v*UثWb]v*Uثt9i^nّْ'_qW¿ߑڿ2&[6*\U?_Xj5Դ߼3W'%OO}almeGU|9 5-&_ed?*'_RdD:}#V]v*UثWb]v*UثWb]|9OjثUثWbQzv>s'8ufclU_og6j(22Uo7 _7~JO6o}EXbO_⯅?4/nϡܟQC%($|U_zuE\ΘCe{9WpW*2 ӟH5V;=/z>a]v*yѮ{twTQeH537OFy~N&IO*(BUثWb]v*UثWb]v*UثU+tUJq87ξY=yZLPvEv*Uث?3Um%hV "1qYWtWjv2HO_O~uCoSKb-OOWrTogx>*hZPuϑeahWb]̛v/,^_Fqq/t Kfm~Aao*J@4$++7)ѷiߝ\Z3۷WIz iħyBUo*T_ sg=>?.=M`u&ej~* U܉ _-jv*UثW󇺟rjmn掞O3W]v*UثWb]v*UثWb]v*UثWb]N*UثWb]v*UثWb]v*UثWb]v*UثT&[jY_Dʥ^92=N*_q(Y$ߓVKIUG'0Lhs_/b67bRo䧜JEv=Mɖ?]sڋ1fdf !ev~SOKxG)$`R8"?#f)W]P!l9Kp»G%n>p2'-ejTF$s?35\<If;v*U~lbcRFdiǬ8/nKp~FDn]Cv*UGB'_6ثUq}DjZ|{H$ѩSUثWb]v*UثWb]v*UثWbh}x)I%LU*UثWb>ΚDdb-F~qW*Ub<6;6euS& kV:bΪqWP'5R#J"0W*Onm[V?15FzYb.]v*U.6ɺ+J76-QwS-%/r_',$>]v*UثWb]v*UثWb]v*KsɄy*,mo /SαlҰO1WX?+4#@_K>NUn3N{4ӟ_HqW]r)yW?JH*++Y7PuϑeahWb]u3{]ZA$Jrp5!a1`Edן`Ug# =[N)UǗ+ogJ4l?ZM%'FmZ±Xܰ&?0:&6_~b%#i>>e~nzT/>*o?$擬ȵң/SՐ_VO犾_=ik_Uͦuv_⯪bZ*8vl7" Orb]v*I$EP='y7y\]F5$žiӵvk]WbX7Bu̽/~~AOn~+iuʼ?\UثWb]v*UثWb]v*UثWb.)_O[K(?|׊v*UثWbQVih,0DE,x~~J~ZG}tCy'n~Ԍ7Z$K5Wb|i9!y- Vػ8^iͩ^Ac<>Zi> PlLɷz6v)v*UثWb0ЍޛZIA"ƿѳ;I:4jb 7Z,o\ŸWԋ>^v*UثWb]v*UثWb]v*U*/t2ɥjŤŒ,]~%_~m*Yy/雞Vxq(WDЃUOv*U+|U_/5m3Ku<߲?b36 h-7f=GNتy2BITPI'~m~iyKlcf5E*bqsW^VD~b]xo-|rw0?7_$VZ 2YF+?sn.Ai˱Wb]|CQٚEAN}=]ar(&o_HNb]v*UJ?HZ7s li9{sE o#c 'g *UثWb]v*UثWb]v*UثWb]v*UثN*UثWb]v*UثWb]v*UثWb]v*UثWb8-{nܱbPuI-\3UZo٩v]v*Uث?'6O_W<yЏgF'Wfv*Uث N^X>}n6xش+t nKv*Uk B_?Yo+EaEuO eFYǛGo AZռ97DzbWb]v*UثWb]v*UثWb]}*WOf HЩ_ ~y~C]ݵݲƉ+~n2zCq}1W]v*U^[VB$qzHXsGï_3bqUʊY I=gK3j5v$7 y.4'i f6U{NiݳWb]v*{)СڴqR7ƿd.l'!OofJ qxowHE=p >/nڒ_Ez⯃WD:V?jO21LU6*UثWt!Oi(RN%b&\0>Kv*UثWb|&ٿ ?a0Fi}EBy;v*UثWbaE!c M'#ua]CW=0 *UثWb]v*UثWb]v*UثWb]v*UثN*UثWb]v*UثWb]v*UثWb]v*UثWb7izMO**^ t'yt0VOrt5ثWb]x鮹ͶuZ?-4붯YFQ3v*UثDz痯=i?_^_Naq/~4Z OWt`;Uv*Uث&5iHWWz2/_eqW67ջ&:S[_?moJ]D~ˏh眪銲,UثWb]v*UثWb]v*UثWbk55 T2?qWߚ?ipy.Q5cg1߳7|!kUŭMjk@·RQ`ث]Di* UBro]mZѺt bF{'V*qA5Gs(>)?U8WGyKoqTƲ޿=F_*^}KIQqG}ԎS^vkcBޓNcWb]v*UV6B$il#Kw:L({ʹJLw:y+} s϶{-zx̃%] _V[v*UثWb]v*UثWb]v*UثWb]v*UcƥTbϟ̦'ӭQO/~RbOSvkYH_$qW>[PiK55UF*]v*Crߦ|=ŧVat–wvȱnz\a2׹]v*Ug[xýħN\KxV]?zf)nv*UثWb^ Q6QQ|89jG髞z홎#UثWb]v*UثWb]v*UثWb]v*UثWN*UثWb]v*UثWb]v*UثWb]v*UثWbэ6wQJOnP~|e 1Xz4fq}A7tUثWb] S\<.S2殝v2_0ߤ^sWbPffh3`PMc!b 2$7au s˚noVGv*Ϗ!:ROy]>oF =H*_SbɷskS2_V]v*UثWb]v*UثWb]v*UJx# s(tmCSnt2ǩX \1T?ǿ"FܗH~d}&мNmj1D劧ثWb_ Wb36ICLއ`UamثǴ]&m^ zzA^Y">bR(QQG#4RwDdY;v*UثWbR4y~/0ii%_^,7GbY|CSk>}>KK,LQz|{R+g1~mzu䝣7XPv*UثWb]v*UثWb]v*UثWb]v*Uث/-5E?|Tfeqc?_b?+Λc'oғ#uK=xV&*Sv*Uت] f O. s샖*uyR^gYػıW']ͅ$}`i3KE C![v*UU.%FB_Ty4SDA&4~w8N2b]v*U5%Vƃ\ûfN*g7"KpMh<}zž|BF񴙐㾉]v*UثWb]v*UثWb]v*UثWb]N*UثWb]v*UثWb]v*UثWb]v*UثWbo_.(W69E%bA[I]T?"_YywYMkNc'X7??$H%-16;v*UثW~n_96mtO꾯{8-aZ&*tmuzkb]|3_e2-:RO*WR.,xdC/_3 [ɫ`Yt䆝72֧b]|91n|y.-ӎ`EF\>bޣoEOu\U=_8ZyFlP1Zԣ ʍUb]v*UثWb]v*UثWb]v*UثWb]yj~_v[~6?=s$'rI^NM&:쵊 dGf`j =5ثWb]v*Uث;nAf0 }ecٰjqxl]{?ſο5[X)hv; i_d_@]v*UثWb]v*UثWb]v*UثWbXw54iu C,|I#_>i=)ROV˱J"(ˊ?15 AInUee )kl8bUDE 8]|9qyj٩q7) g|uӯk0Z0*}I|8! ȿBrYFm_VCif=T_w? 'b?86o25fYT-oebZwCѴW4I?7*#!RRKJ~W؋ bv*UتQ ӭ彻q#I#EUqW7ן瘮u*"s?ݏ;L=kbDC+jY,sB+0b]v*ym+Uݔ6[\VSQ/{^f63ʑ\ݓAe9|*UثWbXoϙE%@v fjx$|̝<8WQ> ,bDdQ'osp_6QX[in8 ,h<GQWb]v*UثWb]v*UثWb]v*UثWbN*UثWb]v*UثWb]v*UثWb]v*UثWb^iZ>^{h~֭U>8՝~7U3]iBD- ջE}%=H(&v?ΕoOSib0?v6S]v*/[Vx,.G2ɦ͆p5cE9]jxxlT=?)=5NثWbXGO =XM9/>4f_9ys^5}VieIS懗k7NW0yLlM`e_nCH~+MqWb]E6'L v[&2ſ|ˊ`hO+OmRyQ <+?1W8Wb]v*UثWb]v*UثWb]v*UثW_#Pw^-`{*6?%_2]\U?fo@T| Sgr_4 r݊Io8iEEQN@NR)r R,bHktY9pȴLBMy9d-6X4rջ?K~hߒ󐰓QLQǃ~iߒmmJ@;ԔR 1"ӿ2|0DBc:eClsd*wt9A Pkɧ/(d {2Ó >QY\H~(ξ#su @P򯚵*1jL -PGE6XkMȱ:[ꐨŐ<-eU8Wb]v*UثWb]v*UثWb]J<;"ǹEO#.*C& }&ݏz4̿c nKTB$ 1W?K[1rWW-os5QW]v*gr">#OAyIx_v~9A.U'P4~RXP* 3HM)vv*UثV ~-|,gđ>ao-ZQrqu& y32z-Za&cK.AiӱWb]I;ːM*ݿO3egɪy9sznaJQk6 &C3e_[yQuhl51or֧ثWb]v*UثWb]v*UثWb]v*UثWb_N*UثWb]v*UثWb]v*UثWb]v*UثWb]gyYy<^Rv7 ߱~=+U.uVS2"A#p&~tm~6=9??g.qAOHGWPAR*DS ]y睓yNO!ʹ5'T=/,dhsCX H>+v*UثWb4(v5V0r?7ÞZUn\Dv1%< :8A–YKcykSWb]v*hdtf\Izcar26Q'o""!OV m>KY=(?K Q޹ZNf+_l;>3Olfln#:Y,y 91/| ,5$qI6ŇS8(= ^o#Դɞ!2i~HJuK=jGh?I?bO?UWb]v*UثWb]v*UثWbXwO榋}eb_ް> C$"/H⯅5?7{߬jMOlq׿Y/J*KB$쪪?k}88ST>Bw7\ɟW8Wb]˭3ѵ+&tA߀n%ȟ?1WZw/qws%ILIJ~_y2?*ѮvE"1'f|| ]v*Uث? Q+oL$o=$y_ $y/@B.N%ӕ>%j7ŷfHqq1π`'t+(oytn`&)C䱟2?=4;п7lxO/X?TE+"^Zy`9ʖEhw.C$tˣiE]Mw!IXԳ~yN=~O6,dȯ(c~Yg [[ JET*1U|UثWb]v*UثWb]v*UثWb]v*UثWbN*UثWb]v*UثWb]v*UثWb]v*UثWb]|9Z yӢ&9gj~ߧ$J&]>7'68<^<*~ M&5mۗzHk~Q+FXĹy=Lx)h o1%r#*g!fY.$7&Pt5QMc̆z*|cģΞ}̓QrG{< ekƟfRc(o5ѷWЕ$ O6r)Dѷ e5pFhx ]v*U~hyD\ G#Lr/7YN*UثV;#ivҥuT#,g bmOU}+TZVeDlU! -KMĿelU__"_.(z)1Wb]v*UثWb]v*UثWb]v*U^_YlGvز4]X 6F̧߲]|9\&`l3x򬜥$ +/_,n&#( SQsK_ C=+|g.B⯭/k1[7!F:S|UثWb]v*UثWb]v*4 %!QA$@_=~mZi(}7owSq?u[UO|ɨy-Zw#*?e_V`Mҡ{MT_k~F9y Vոkl+˪C_؇O^׊v*Uث9:t{>2W[/BO_umVC=rbQQ>"d}?KjK=cSݿO*k5 5zf`]v*UثW`=]!*ޜgyg<eP,l?kd:]`Yc1kEn|ۧ?R"is!mR=GG'K/$,ߑ`YnXZHORd|/OaޏV'6!~f)/EڗwpF1s8 uqiK%!4j5ܰ)#W) ҎYΛzupN QV?}ɲd2ղxbiU&0:_כRK]**UثWb]v*UثWb]v*UثWb]v*UثWN*UثWb]v*UثWb]v*UثWb]v*UثWb]nqWWɩj2>8?)t庺qW3B#>W?sƢֹGjĸHMK@xv}Ѣje5'Ƀj_iyҫ%?'_ʎu4c7eU&C2.\5=ZN DCעn-ܚ,LEa =C]KVDN1ގ܇>}6r)$-Ğ~O$ bEs}W c@byn=ڛ?䗦٧C^m|Qeَ;v*UثWrGZ_K~ćV_?fOQMJ_r]jEG!nc?s<\88,a.dUÒ|Uv*U~c~\~~IՒբG#_"⯂3+5oDj&u|W_Iثdvh2:H⯬%?+uuQcsiWұJt! PAU1Wb]v*UثWb]v*UثWbMOTҭT!䑂⯒?;*ֽMX{C?WJmYיnEn1es6a9U560qUQ@j$I6] <3q|$MuY$# Չd|iaBfvkYv*UثWb]v*Uت}3KJ-B:SI~w/+1M A PztsmmD⌬̧5R/b=I k/nZܟ?_S6X7v]5o 9T0'S+k8dCH⯧.2Zy>-*H?Oo/yLbLK|Xkv*UثWb]v*UNyY"(f =*/ʯ+a^Lsފ]>*g'̾~c?bME5H8W~UEߘOi&V%;1Wߖ'մO kO~,iıVmv*Uث?;?%%,NRZ@nE|/J-׵0ɨs=Vw5$U_g{oWƲ=b?߿ʟz. OT=ثWb]v*5GqRE*?y'G:||R|1~և.AALU>,\"\#i}v% ("(G_f6JUثWbXMش%?ȋ7 hj%󯓭>X[unO'Uӧ~]v*UثWb]v*UثWb]v*UثWb]v*N*UثWb]v*UثWb]v*UثWb]v*UثWb]{-P<njP*ԍF UdY!c_fFͻ؊Ȳv*UثW~}skq ̽:MJ_c\i' C~$GLN17(i??2L8kτ@fڻv*UثT>gvH%R?߳M2ϞKʷJ0ٖXefA1n&3OZp>S<'?%owѿ}7yO&A$d2j=*v*U#w7XIkPv*e͊$zտ/dknW3uW.U~eo"^O9yo@MT˼bWUG|8KUʾ?Iv*UثWb]v*UثWb]Cr3˞EWYV_!W+_~f~qkߘWYZ&;h"_?$qV Crld {Ŀg0g}N^[Ov(" Tfv`R v*j'̷NA(:lQa{KWb]v*UثWb]}+ ]ܤ1$,T}f.M;ly@v*Ƽ{ys(&Mȿ`ѓQ{񩺳#cݓo?e)'$z蘫t/>h:[]{G*W.*b]v*UkV:ZzV+r<93}~Ūk=?*6k/-i=%nM""#d^?2yɉ丹:D 6a,X8w3uM'~EyOk 5of&'+M{Wb]v*:sFz$qa/̭(8ygf5;hP.㐏wT]v*UثWb]v*UثWb]v*UثWb]v*UN*UثWb]v*UثWb]v*UثWb]v*UثWb]Wr\w%{q #Lb.tya!? )ۈ\<ѻb]v*C]gfBҼ[?f9k8>VҮ`crٔ/|6G;8}9͏98"[v*UتWO.Z/Vۃ[]?f9 s>PᴹCr=g78 p04^9%7==lh)~׷}QfjvH[̡e`iXbUثWbS@E*F2{kF J+o15F]t'X]sAnTKkHHT-Զc*H {忘\Q-'qm l[oJؐŷ?I?^EvqW~\N0d 2[i|ڍ3j:Eç'MLֻb7wYDR,Q/Wv Ͷv IͼنGK'$l4N$@rxwE'/ۏz*f:9lث`|U_^b)?S'p?9qYEwm(#ե`?#9b}Q"kxT\U{Zy G?U-]L?Ȇ!2V;~oTYOU2/eb7s]9IVbI*E8gc@Ko㗜6Ч,U- Ϙ}Nq~J}Y?1xҴ="lce% 䫊1Wb]8~dyuح*BUlu Gn- ?c_9y̺q%ԌXʿ*ʼ?k.o?,ɇN?1j<˓^[>Drs~\!7e blثWb]v*U>xkͿn3?K&\bQp9+Qo*}J;|r?X/gd8>$ jTt (!7Tb]v*U_W4K>ȵ3?H7%՝A$b0LE~;6Nn*UثWb]v*UثWb]v*UثWb]v*UثWbN*UثWb]v*UثWb]v*UثWb]v*UثWb]XHM#JS3N8RWЁO1X &bjE R]v*UثW~y40گ@/oVlt?N? /·: 7]y'<͏8rpҪTf;v*UثWbo|g FNqB>Ҟ~!3ap_:yʳRq1s( qٷǔLlrb0(=u˛ΖY-\W27\_WBѦUKd7NQUثWbXם.?;[}O]Ka˧b~4⯖15m'ߕ%!l7dΣ1M$+^zMZjmpE*Va/4Nj3􉛜&^qb殱jz7kc }O*s 庲nP4$Vs{#QìZ{JVKgkk-dob_۽8ʆ(_RUGzlkF?x$!<fՠ!dX&9k*ouzⱡd,Uf-1z1O/#{}=D?tScTAp,̲]?B"({ߐ*K./S0'^-^]Avxyr_96`[ۑ!vJf=1g& u0S4}o͔ #u4&^Eg˧Yv*[x.bΐ+?WD bqWb]v*UثWbG?1gjM] fɊ#|/a +<Gs2s b4ᮇwirVXߧ⯜'#54qU`X._FLք Oo~.S6yL/9y,CۉC%&#ǔO{6ae5Z!x y D'zxb4Xo/Oxe#fl51?K=s, Kφ͗3UثWb]v*U#`ӻ+;/Yn,|f\kɚh7$P>"9&Eg巒ǖ4ֆF=9ϗ;\8,w!ثWb]v*}Fb?esiu=pI5-WS#"!|p]b]v*UثWb]v*UثWb]v*UثWb]v*N*UثWb]v*UثWb]v*UثWb]v*UثWb]%ԍϜ!ogݚISKH䍘ĀFofVy?H9f;v*UثWbW^B )T Ѱ,Q|)EV#̄?}ݭ4QЕ`s5}5a9%b&g_'}-3ic5Wv`oo[SLUثWbR?4y'E\U,⻏51?y\Us-.M״szY^#;ywݖ-$WXe!7UꮥHbتv*Uiv*UثVî*&JjnuzZ?LV=9gh~_ЭŦ!wolNff˲v AQmwqL+J124B"?0?6饭7zkTۯ>'LU_!.AŘPl1VWb?y_%.ͽ/|?ÿ3i%StPDRIO7U`N)XZSUqTv*UثTn^jz|\b$.( ^?ſ:yMj|7"W߼8\fnW~.8@aY?^mmk ƀU(U[v*XU) XP*85o2 /M OxEX?7/Uݻ[ν+чfD)qT]hI}c!x0Ҭ#( )?bՏd-,x]e;v*4]E=+c;,,dcɌ%͂?&Դpnk_Iy7 QHsƖ''Vm5]( csV.dUgZiLGR6SK">rE?"9#.Eӭ3AVtt6*!eZI'QVAk9kh$Z< 2*?:j`αwcGX]j/M$1c*N57`wKSǦ@ tɿ04gma^S0M=IW.Q-DC|pH>r6 @"lO1e=/yzm3C^:mpX+r6bK$̹Q#4v*UثWb]CZo%ۈy3M#A",g'U\=V*]ki\b )fm~M~^#_03&m?r5ثWb]v*UOC"+by*!7"pEu7wmCⱪ28Wb]v*UثWb]v*UثWb]v*UثWb]N*UثWb]v*UثWb]v*UثWb]v*UثWb]TFqVAhn8Yz^`]v*UثV5&G=[йȓrntچO++ Cwv"m*,;ο?/+4ٱp'o/eC{Wb]v*UyK82LiMA_?ǔy|D+_ܦ1fo+A'ێyǞ3u($[^囑}Ki8؊qoF-kzG'(d?<5KB8oM '|U Wb]v*j^ӵNf\}`O5_Ձx?LU_Wشn?տV=y8;Ye{`3.*>?kb٧-f!Kv?9qTDV +ՌK3b'\(|JC\_طdH7y:@`4]6r3ȿVqV{_YK+cRa3<&1r!R{?.-#&ck,d) xD6PUB pĥ@c#B?+5pDws_+NۜX˔̱KkinX R >Oc|IM;*+?o~?;xT$jUPvUUqWb]Y",U*v }_ʺ/}YP7d t+d\UBb%U{ŏ By=kd:o䏒G^1!ަ*k+HơG ⨜UثWb]bGt5 r7%xOOUm7QzJ̿?5=B͸TxѕqFQYFF&+y1ij6eJ8qk4!i+lv*UثWbk.q9v89!29& H/,|xܥch1ը^~F~v@˖ TΖ( SQFH?͞|1@52_QO5/__sG'h QL}G"ugҎ_v@$j#YȳhȺǡd rrl1DtOB(@2m v)v*UثWb]v*UثUL#K+ff4 Z ߙߘkZ|- SkƟʹÇI[p|7ׯԍ>#ӧ֧ߍ|H3>l/QU(lCov*UثWb]Zòͳ4 VCF&AR/|gWtK6G%f&fKv*UثWb]v*UثWb]v*UثWb]v*UثWN*UثWb]v*UثWb]v*UثWb]v*UثWb]z@)'ܾQa۫^ B̬y;v*UثWb]xLi["dgiWZWnzg]F_ڍǿ+fp\L}71/ڨ2Voq7f$ q VUثWb]v*ļ]k,> d̈j%7x#'k/2^>xHFgCSOM!5 .N{ '^2)SOYOZGwtݸĨ?䫣b\ޝ>q*Uaβ8-١XG%]rXķRGY[Og'0SCc=[]v*Ο<6tt;FE?H?gHN_ʙbyF^#AO ZF *RIf8a]k 5a?쟳*\UثWb]v*UثWb]v*UثWb]_{?]#xfE_֍sͦ_FE=M*#l5&eo *iS /M:5f;v*UثWb]v*UثWb]v*UثWb]v*Uتi$h 31u$M<;>O09ӴSOCe#1OoqDa^l{9⾂dW$]VN٪_g~/F71ثWb]v*Uث?:ڕֳ)c~_a3k\-N;~^yȺޚj.2!%lk3sCiO a~˧qVAv*UثWb]v*UثWb]v*UثWb]v*UN*UثWb]v*UثWb]v*UثWb]v*UثWb]7}/0_B}*Ŀ''tBusV6ҝsZ]v*UثWb]Ok3JiOYc?gg~s G.y K;2:ƹ`l>еMv//GG_u?4Ӂ1!afUثWb]v*UF QO͈j^Ie78yLD,CS}o|T"& jP/qc7^bjEW9ގ\51-GO ~_kK |R2 .k =CQ!,Яޛi^6! ŠlzCXi3A8-S8|ՍBL@G.deS #+gMp7ʼn'ӧ}58HMM+Ն y}ϋG]v*UثWb]v*UثWb]v*UثWb3~aR&^p''3:dbgW.a{0y_kAT"/mAJFFKɣrWıɱ~y'y[F-!X?i>*b]v*UثWb]v*UثWb]v*UثWZ >M⯌TDׯ4Khe֔#YNο6FQYFF&xMǭvx§A?IO6 ^Lgvw!8a/9Zh|RӬvRvÖ>ߖ-Xťi0" iݿmlU啿˶~EnMS4Sk\'#sYzn`]v*UثWb]]Zw()+n=FhA|)m,*7ADeuˆ~-7Yy_ͷZVN·uq_˙3Bf'y0zu#i_gEe`dYKsWb]v*UثWb]v*UثWb]v*UثN] I=>|ӕDCNEP/?'͆-7Y89u="Kb"lFVHPEw: ^h  9/*[P*]v*UثWb]v*UثWb]v*UثWb_6njKiyiU⶙*iq`isQ]tI&$_4ZUٱm58|/|T_3o.q7Fތ 2c6f0{'6tmz3V ~?ɧ!c9.]v*UثWb]v*UثWb]v*iie`%3i>vە Կ3iz.n.k,30Vf$*ƫ+M}))8%Z٣n />%E(UEU@U#V_dZ^sJ{e }*Ƙqr]aI4fX9; !׹]v*UثWb]bִ+@/<920OM^[е;]ZYe˧~i^k!%5*]v*UثWb]v*UثWb]v*UثWb]N*UثWb]v*UثWb]v*UثWb]v*UثWb]r/K5hSK0N~_nXjvma'?%`#!bDѷ٠w]v*UثWb]v*_A4X/èp3ixrCB^"OB6 "~rZlt7O$_<]-@;Iyv*UثWb]v*UثWb]v*UثWbk͟zWAK9hc~cxe6O̽KY [OUsgɘߗ_矯hԏRg(Y'h'/i}E ~]B' U]8W$ mW__W㑴@Ei<ql\IU>om֧?-{S⹑~x/DK^*LUثW?\5}.p;`_󏗼oo-;I?v`ҝX읊v*UثWb]v*U>7P]I+76-HQߟ<ƭFhW$Wb]v*UثWb]v*UثWb]v*UثWN*UثWb]v*UثWb]v*UثWb]v*UثWb]tƭ_T\Z?F\Uognie_bï~dbaW.?{0SWELʚQSl\BêxM2%m>_ ksdpc()jԵ:æj9YٰǦp'2`vy-R]]Jh1/řn+/ʯ j>us [03_ԇS}IhvZid)omS U'ǖZKO~ kg?FެK+ȼUmʷUSy+8VzQ2hIdWb]v*UثWb]v*UثWb]v*42,/Yu{ )5YH#WoLU׬:ڕ.n$idocɱW"y 2re= DWԓbWbRgAT+v꒠a6*=hzk-lqXk*q).,ֿZ{?ĸk9yzbEZqs?Oo)toyEi6ꖎ,-'qrc KEKȯAJqϘtoY5Ȓ#z&$snEWb]v*UثTY󾍣T_]Ǝ'cR1^}~BG27i&4Z$H.OZ: /)"ofl1p˚?.9m K /dl柦|PZ"D ŏ7OW~o@q0D8qUQ઻ Uv*UOi:^I>  >aX#7]H:sR}lUثWb]v*UثWb?6eUV1h 7X :|_Sjf3ڷ{^)?L{CqWb]v*UثWb]v*UثWb]v*UثWbN*UثWb]v*UثWb]v*UثWb]v*UثWb]Ev8zgnOSGd_D~Y_.XV?O荚G\]q (ov*UثWb]v*UثUʱ!BIph&#z(7)ٷj?>c_踁gG9w$wC%- ZAySӍ#zA YvI?Ϙy4ˆ{_t|  w.<v̼)C $*mv*UثWb]v*UثWb]CTcF >Y(˓HG?=4{*^I؏ݧepғgZ9n_0nk(V|?|'3!1pRbVy- 7v5,Y˿_VuFlwR;PFW>E<+UGR7*⬫v*Uu^/|s[ZMnǴbzbIm%{{1eaB2u^uox =,@H=x;sڿ*w>wh/;^'RfXm*UثUA$ 8ϼ*PIoׯ<9ns _%?;W~jPԏXok"#+*ieokOo$!1Cb0SR8H?|U<Og:7䇑5ZHcuxTTYVPuž)Q-צ*Ujlfk1iP9\U#h:U˸?⯐01>Sdq%8"N7R/7:^F'5_+bo˛o aaGv*UثWbS͟Y`?t'=Nd{/͞L&@߭S#O6_Diq 5`Orr֐/EdO4~o/[^RRHi{=HL6S%-hc:5XD=S?8_bIث!'N,j X\O1/sD݊v*UثWb]v*U"=z6dF?R'im)H=p~i_,OEy⾞]v*UثWb]v*UثWb]v*UثWb]N*UثWb]v*UثWb]v*UثWb]v*UثWb]~|Hi_|GJ,$DٱVmzgZ?\:I?nՏU=)s v*UثWb]v*UثV)ө_Ekl|}gZ͖[ӰfYuH-5!P;(1V->Nn[JH?ɕ_|8=΄Ff7*<*K>f 4dpU)[\U_D3}j13SJq'12oyEZ7?[l(Dv-!\P>hZ$3po x?.c G"9zq)v)v*UثV銥d,TW,y#cz,pga1##FE"9ll8Z>_72#-w~pyR,qm~*)S2#<C=ôgIXqV3{8=t 6l;s+LU#+L=匟42K%;}fhPDGU;oq1#|U; < P1$?C#pOJSU_K4?Gz8mk&qW235xt/,BK!cTb*UثWb]v*@_0w9V>l'_rF9V]M>8O.WӭJ9@|k깡C)AWb]v*UثWb^5{y|mO6O5_WY?sM5fkv*UثWb]v*UثWb]v*UثWb]v*N*UثWb]v*UثWb]v*UثWb]v*UثWb]|[9_4Z߁Y?FqCY1G"a%`jCfkv*UثWb]v*UثW@cчZg^~# 6lt]~\#q?|5NI#$va*UثovLe ^tZo-Ihq/ Sg^xIae؇ڰz#%Rt= B mYPS.Bǩ&- ug M㿝#zwVqDld:\Q,Ǘ{-F_}$35(<>;K/9deLLb=JU{Ws1-ٿy0`M㉤` c (eZ'7?GWr)&Ez7{!$A/^½׌:@D6C׼A_*m'M9WY*UثWb]v*U__Z3_`Y?M=V\U<˦3I)i˵7ixuz [imd0Φ9PЫ }WY{ 7V訥]VQPyS4/Xx.UEYօ8mLs({('^?½.ԬbP/&v%o>*+Uy_~ӭu8rGI_|ULUثFas |L?-cIuo4$]oK!t ?!"Ku0]v*UثWb]v*UثWb]v*UثWb]N*UثWb]v*UثWb]v*UثWb]v*UثWb]|9zn@OdQ";b>Za?z'1u"I>jWb]v*UثWb]nտHyuR [´$rΞ53_Gyo%y:ħWL9㾏]v*Uت?J$캆-[3Z-sZz?CXW.+[c2,Q;HS)jq>*7d_=J!b◐k)%/h銲;ȯ$ ?߉Sevi6T*⩆*UثWb]v*UثWb]v*묿xƸ+Lo&b1Wb]v*sw8g?8UUU(0m1VUv*UثJĊ6_x_Oܐ_O]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*s鵭/2٧+2Z wo'ث$y_,Q_LU*4lG?_CSf9}Iq 2AV12+gt ]v*UثWb]xwBo͞W0Oa #i39}sv*UثWb]v*UثWb]v*UثWb]N*UثWb]v*UثWb]v*UثWb]v*UثWb]y>Sȷh\-䔯%6?['Xc^Aq!4NثWb]v*UثWbebS#*Ii.ɨ{/۞F)fߡ>]*̎.3&(gWb]v*UثWb]v*UثWb]v*UثWb]v*U7^CW'J*øO:K9?lU*UثWb_7nLg|yJ*M*ʱWb]S!*4mX~Db˭RMja?OU/-]Ԭd*U&*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb7v] ) R8~s~p[WHOGbK4ӥ5ɨY?_c5zQgzFa9]v*UثWb]u-TK4I]^=_prSS`_ qW]v*UثWb]v*UثWb]v*UثWb_N*UثWb]v*UثWb]v*UثWb]v*UثWb]H {Ci_[K0_lU1WZ.JIO? Hw6Fdv*UثWb]v*25^" јK- v\jx7amNe~;w6ґȫ7|7⍈Xj:{ڈ\Zm~a76hwX'SkWb]v*Uتv<1ƥ91fM |=̷sy3O<7S&ߢ?^_>_n`ËuR]†sv*UثWb]v*UثWb]v*UثWb]N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*slӺhFǑC _ iyػv*UثWb]v*o"&m4Oj?M޲Ǩi5}iv*UثWb]v*UثWb]v*UثWb]v*UثWbR9Mh%#UYU*UثWb_5n=4m-{?rbWo&*UI1VOv*UثWL Wh?8qS#37~b]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثG*gխK>^t&;H>$_m@oC.w!ثWb]v*Up뿢 cCInztmWOyj%QOʭ1Xh*3h1"W9u/ҴEPUثWb]v*UثWb]v*UثWb]v*UثN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*s6|`WJa* k\'?H95ثWb]v*UثWA[q?UflbuCpkwp_]v*UثWb]v*UثWb]v*UثWb]v*UثV/qo*j-O4W?pE%k_?U*UثWb_3oM3IO?r/ՊD_˚ZI UثWb]=?#.>Y&U8\U[q7 ~]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثBYaٿG{-=_;&j5?[},1\b]v*UثW~yk5d5(iJsNOmF3W^8[uyeݪ}^ߒ|R|?2WטWb]v*UثWb]v*UثWb]v*UثWbN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*JySpj@?"7犳?ȋ30pHj՟U;=(ѳ v*UثWb]v*U?V>fF/?Cl q#Vy4ݼЏ͓}يv*UثWb]v*UثWb]v*UثWb]v*UثWbXOS^63_8x#}v*UثWw4M7 U*?>eإ+"U5]v*Uث?Xϙ5=EMV{O%ۇ&*4y\SkkIτ?7}NJv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb fO~se칧nO,r]v*UثWbwWGQ@ZTj"#L'.o/&.$f,ǹf<6o@HMC$ 򭖓"\x|r/3UثWb]v*UثWb]v*UثWb]v*UثWN*UثWb]v*UثWb]v*UثWb]v*UثWb]QKH^SHR|G~ayV}gRwS1?lU֝?0x$?9?|i3]Q )nv*UثWb]v*U~qX-ߖ&9؆ENԜm@k\:BX vnٸu/lUثWb]v*UثWb]v*UثWb]v*UثWb]v*?=NTo\U͊,ylz޳8G/MpoU&*UثWb{la{XKUFǶ*?r/j=i?G-4hb(?k}8Wo[lN@8`Wb]`^~>V9Lù@UHko犿:WVhm51J:[D}<_UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]H`1Woƣ__.=>*3~]!'&o4̻.PUثWb]yיE |OI>c͎Sq6@/+->SxY3`>]v*UثWb]v*UثWb]v*UثWb]v*N*UثWb]v*UثWb]v*UثWb]v*UثWb]yOIԦSIn#f>##_hsjwX.<|90Z">D@h x7]v*UثWb]@yԴ%gH|YJ3D|Q.n3|ߧ^RW[,U5VKov*UثWb]v*UثWb]v*UثWb]v*UثWb-gKWNqKF~hyw^Y.t[I$h.iKb3bOˍp^8/\c2Y_X]ltɒQ$CP2⩆*Uثf[_+#~)$q}_aiWz$*X/rkNJLumGdRKw5T8$^_ثMrBMCL5I#4`.*s&T%\muKb_Doκ7Knӿ}fwH<#M)o @O~Q\UWV:ޫmkOږOOcCnt2]\5bqWmZh6+m SIFlUb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uny_ʚ#eŏ䬋8md-I=0$/E~J8/3C#fE WȲv*UثWbToo"K(ςf o˯KS1 WD`oaNR6kqg+d^7^:'ɱ{.*UثWb]v*UثWb]v*UثWb]v*UثWN*UثWb]v*UثWb]v*UثWb]v*UثWb]|9NqQ^9s> H7}1u2ܭ4n^Yv]v*UثWb]v*3keZ(\JWe_76tRH}8٪Kz\$xO_@6/N]v*UثWb]v*UثWb]v*UثWb]v*UثWb744l%/~>ُ|[$mpCBlUycC͡ܔd(xN2N: yǏlU8%mt4K$Ur.ZdGnki$*[W^QK ZI͊tۍN,cy%`jYʫXGx8*xhd{ٖQ?k^eyUa_Jd"j7#|//1y`.!RJxEYDYMg FUJeY9 Dv :b9I? b%?\6ֵC]7zķSە˟T5ד-4HB(%U_qW'1~@mfdG[uOg/{*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]oW4{6&i"?K*_9~OS ±;?,>\1-#r}#gpUثWb]y篙z4GGFo9>cl %ϙtRmUk;D?6n(jU]v*UثWb]v*UثWb]v*UثWb]v*N*UثXuٮrB~t劥E򏜧[+;}F3s'zn*UثWb]v*UثWb]v*UثWb]v*Um*͗m1C}_x?#t1cԼr!+/UU+5BދncWb]v*UثWb][đd f=Η/_f&)_!ږNG9kS1Wb]v*UثWb]v*UثWb]v*UثWb]v*UثW~q3>zg4n?|krY1WɞvOJ/!DGczm|Uت;Joy3o{_?|ǮϯN[㘏bS?_R]~Pyz=C =Ĕi_F6]^a?(yRL֤FQQ^Zش7I''OUI6|WHflUk 狖tiHQqV}?ï4n d#YqW_^\Q6k{ ?W]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWi9Y푫[/@e2Q_7ku87ȟ/5ڹrKeYs݊v*UثULFJ#@Y-9ŪOHh++7)|F_#]/tIKTZXMG5v*UثWb]v*UثWb]v*UثWb]v*UثWN*U@=Wo?b=½bOc/Msg=S:4e:}U89%yG2Nwc6ӷdo߱Wb]v*UثWb]v*UثWb]v*UثW~}! ۍ̩x<}I~K|xLԮVYQ|*LjhZ@O-ⳀR(Qc_+KۼJN]v*UثWb]HU6i {cv(qʚrπ[;KN;hqq"ܳf?I?.|eBmb :?WvY.*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UXޯmag;xX_ɐ7(kAVUaiYC,hUv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]BꚄzmӚCm#QKG~bkƧqԯ3]X#Ngk^vZO޷ ~9.)s<1 )nv*UثWb^sњX``'%[F>faf=LW{˿)/|iD279~KL?GX$ jTt 1UlUثWb]v*UثWb]v*UثWb]v*UثWb_N*Utd ҸZ]FTHf\Ukm%ԩo-$@I逫o0^k:<:TD-7T'q4c+v%|iZ-)ٕ9ŇRE/??7ǚ/5I">g|_({*UثWb]v*UثWb]v*UثWb]|9_vX 4&ѩp_yVZMEoIsU:9F{jWb]v*UثWb]zK涖d GbGsϓsѿ?-ĭxAQNr^H)}v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]rc~yv?'qW^WҿKj*+SkY ˄[( 44.ثWb]v*#̇*kg҇ÂrI7xatg+}?8q}7H7KIbe2јWb]v*UثWb]v*UثWb]v*&'-r($DU)VIˎ*4lXL~_ӤK銼Pnv,Lߌ>*&%6g^Tڔ2M5Y{h<&-_?F{Swܬ~}2D[dޱ}MB$GqWVv$}j?UW>iԵ}c4!qW~O[ʒl7$ k<59|?^ɚb'--,uٿ;K pu8q/<{=T1[vqasJ?f럣 *7ov*UثWb]v*UثWb]v*UثWb]KPNA4Dz~iyy[.6{@?I8*]>aIn~+.YO^m }1b]v*UثWb]_;.i f+o_Z|\F (s/ϖ|˨rWRAiEݿe3n꟣Am4km x풅B~)eoydXWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uث{//Ӆ־'? ?[1u2:hܟCf;v*UثWb'c跗JDeqG@5eD˺f.u ȱf<9to.hph:uh) I|qLWb]v*UثWb]v*UثWb]c~w|gv`~ ܏ي!?GWɟYdv gq'xn*|85)re|ou~I7'f*DWèyzXIF?ydGy;C3T}<:C}5-OC Y<W~MXPH4`ceOKdmf㵽nP̞X2y /_Vy/6y7QjUnjWF Bc?Wߟ7~|A!U@4S2Գ}_V/?ˍ[Ԗvէ%U~ԟ?e93FۡϓIh .%ߜSG>vMA/KN#voST6d/fo]v*UثWb]v*UثWb]v*Uث.<GsABqF_+@:mwNr}<VW|"1Lj'vUثWb]v*UثT:fq:ƃrps_0ywaP5g? Ub5_o@DPtӑqKp?^>7KtapMGɰ}v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]|99:@jVOvpy[k6wH]fVya^v*UثWbKf&7x~6oU̍9Q~^a=2 9=sr@qv*UثWb]v*UثWb]v*Uث?om7[KT|JOj7W|ۢyMVW26n|Q8$m}T_ԉNثyoXiҥJ*=KlU_)4 VIAqWߕj_eh@v1# 8?=W% %!e]-"}(?o78S!z_OQ[omq"PFߜni}QAxWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW_׼KZ"2WIY}_˱I>̬ꏩ釥#UثWb]jQg>LSF\&Xq^˧ K q4JKs{q Q4_i0q/tjO XG“{ sْb UثWb]v*UثWb]v*UثW?)D˞\6ÌUu2Ff/#Y$zW J7k f),fV}A)=1W6^KkZ5{IُWV?6.LUr~L ظ]mI$=dLUͼ :ɾZ:#?+UZ<Ѯ.u acɀ$xz119}ay5I4K'ׇM7aI)/hZ[+GA4bX8Rb?WHs Zw#?[MN>!r5fڻv*U玝o0|+;WS'kMȾɘ)}=v*UثWb]v*UثWb]v*Uثο>0s}qz>/ UXM\in9K3(,i/g&en?wRNvN\F#)fUثWb]v*U#w,|kVm~ӟ_[dtw/s5#ZS('ś6n1L/Jxf4uC&aݍo2L5 h(QXWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb_Zu!u'_{w_)칧eiaKWb]v*Uߛ_abӺi?|_>^G,sxg=2fVkm][?7IN9[?犽v*UثWb]v*UثWb]|99R 8Ÿ?2߳k*[X Vv'sVf;3&fMnR'D^_ЧyV9WW.hY)FGSWS*Wͫm.;# o?kn/ ͏98%݊y'^QQۼL{c}ޓfI.aGw/?Fy,/nJ>el]{|UثWb]v*UثWb]v*UثWb_ S~e|tG|JZI>_ߑ>U̚v/w#oF`Pstгoocv*UثWb]v*|i8:Ky o#LXLї0zo+mvD_EoR26_@=4>hH `EvKL_]@*4*;bWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb_ZAƠR+QwU~D;4YȀG?$?dn;,z`9]v*UثWb=0Hşιu;̓qw]547Pv#Xٴì"/&,nt26c^?_ Yiͦjtqm(ISWb]v*UثWb]v*ȿL L[~'-чOOI|_z؎0Nwf?&MnRʰzRKf6n=pc9/04!kwVh)~q?7]&Hȇ~_y7R֢j <\>:w˗-k} 8VW졏QḘ/)9~5Yy~zG1'e/b4Bk# rئ*_1yV,%onVq_㊼_1u7GK yI?a$0*_3~iKdm4 kk4 id{&NZG8]0~}u1WN*3s2yNOV+}g/_-|YIII-?/46>0݋'}0R 3J.XƕG˷AE^&Zy9^dRqa>\^[koS >KP0FY2xU~*UثWb]v*UثWb]v*Uث#:N&v)\?5?/)"mG)`&%FFReE3nv*UثWbX7'}mEx`i?+=>jƩpdCVcsllY7ACOq[Ⱥ;x[fOz*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb:˪iTC2$Gyau/hbMjD͸ T{eoY~"B(}38y]Z2-#o[.# RUثWb]v*y/Ҭ>ċ%?o-ǔÓVLb|_}C]׳?fd2S3fa7Wֽ _GAJY;7Xd_e~SChT,b6ҷ?/³U]v*UثWb]v*O?.>fV]nOFg|U^kw,7/RMYpJ<֮F5??bKÇs3rsrD?躺$?|%:Ty7|oo1mZHNMYQ?dz #_|kp:U\J7# 6E=qWOא;%($4]qWJy[ X:?,qW;6[UJ;^a9TË~Ah">Gl$eRH]o-owDE?C$|%~3rX=,(gXWb]v*UثWb]ZX(4[}+O/-*/IV#JRNГ) &*<9 SJqА!d8|9ouZ 3msVO<x7ZI{۩;?L4-?_ˑCPPo?͚Fn-'gг v*UثWb]yW'V@ngt׼/R*sdt'%ufuU[(?QWbOyo idʿtUWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]|9#8yʱWdAz 4_?k|ӠyA[=9Wc0\e!Edbl>/eBA~ ?j ?mkO~#e~\U쿔?a]WR[j2_Wܽ'0bmKS {(Ud#A#xwW>am/O}[c,%~!f͞[?67Oջ&:S[z<ˬ?LH x+s?W4|8W|g]v& QE5ăa} +aJ3(?)df#]v*N*U_c?ܽi-Ag_ XisnLW5Fۆ̧E)<ϧ }\}W/\Is'*mv*C<"Q0fgOSzfO.(F5/{? *u=+?oIfKv*UثTlҼ5m"ҸZvc>R҉LY)Ci#&KyO?4vJ6vh{)\Q,Uj^zԉ2jFhBFDXߙ>gI_xOo/̟3k~Q⨱HjVQL^*̳oks)T\ir3Ď*Q~{6PK97G sHdo/‡OIո`_PР;K'O{|+˫M:G"!o/'0SC$*mv*UثWb],4>L'`~A?5b{+[#PE~9+'6xgyW$Yv.dߓI MN3?Ƚ'K:InXoڎuE*s,Jƿ*+}8'? Xp?䴍b_]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWߞ_bu)F%>T7NJCt .K[v+UYXbN7l,Y#VEXv?"26`^sqki=P![9X\UY AtcvdUثWb]v*yʚzW+5 jd2rk1>oΣM_oh*KӘ݅hrd[\vxث2g?i~u+Qً3'#XuC)H#pAW]v*Uث?6XidP?z͊?ɏ&~+v##f}cmWle:Z||FGfڻH?+}jv ~'ooU]jɐ@>sgoqV8e@z_oٷ1A!?)?e-VxԿ1ŜƷֿ^VB+[ zQ/昫v*UثWb_N*UثɯW'zD`Z\/GؕN.*:]CrZZ, j+xgSY8 5YMAuaR+b¦_(ɯbkUwhiQd|?k28Mqu 򷚵*1jL #|, +f>Ԉt#ƿ^_{gMk4w7p)r>*rX\UZ,JFiS?oY!n?V*9Z]-9=#y+$,U㺆w7q;yOVS]{[G^rR5#LyK,c̶3m3qo#Dѧ f4cr#=K)-)$6PuR-K)<,$ɕb}/7IGFL1>;ʠYPy_X䬿WϽ/Rf3UL?1>^ɌC`K b?ʉ[&"sKC5ƫ fOVbtGW ͬUثWbVO)Ձ~?4Ukkq]$-1~x  NLwwdhOۺIVؑy6~V7wgQ@NUmcn bfZd;05r}_D_U "(:H}88ȺG_8D~{{Fۘ\G!v>0(#EU1Wb]v*UثN*UتT[Yl/YmCXQ~~~uR~\k-hՓOk/Wb/OQ?8ѵGHf6?7?i0xv/t[v*E5|nvxV>/=?fV=IӉn6yާk9!AT.=?+DqNCG/'k"G,˹b~TY7?OƏz2L,%G5,Q')ɗT⹉<җ2Gc=[v*UثWb]v*UتYNbjS wfR5!ϓ\yG?>:$"%; fofҮgJTO'j'ŠDy85mz+Ն'I,~ЬzEO:銦֟~s?TO8ܑ,׿)Y"X8aSYՙt/Xټ_%2ϥ٫]/K ?31%gثWb;&WtlUߊ7dblUثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UتbYUPA_Z~Wh^UzdD44U$oY70uo-,jaC^<2 OM+X+ڎk?ͰӇ,ɦ1sYb9n]v*UثWbW|g+F^JwViO1061Eww{mr9F ]Gm9ǐLXu1/[413MHݞ޿;GLn[jʓJe`iXbUثT;mӼKmaF#ͯMfMZn5:?#_㊳?$cCx7e)n2zkO3kOQ()5-ǏVI |?1yeeGnaAJFFhi>u?}ۛXWb]v*UثWN*UثV)wHGԅ|QHZ)ؑ?,*ϒu%jh|']ؖ&mo[z_DkRUa~rc/;zؽ5ثWb]v*U)ּ٥hj71{KJ#R1R'-_]i~f*G`s[W;}tȩϹ?z~iymK\~O><{՗Ͱ }GSV-0`%ܟ=v$-YX?'\H:thŪG?пݧ[2Ğ[^9FJ{)?w'xmee'd]GPRrH?.lÇs$(" U&ݨ̇PF6jC#NkJOճmF3WYw4>gԥO`# ~*, y"+2WxWb]v*UثWbN*UثWb wM~yȪm#oݑ_|!jHJ֢1J E~B[d^F,unlS_V]12ܬYv<%Z?/HWgc9ž;?*ŧn*I?Rf\sq`VV'Ӗx 8qN4?1j$zjf O2GC$Z4Kh#Oomćd?)6[~vy"Tcgz`D5DU$:zZ ri2'u?1yhv3\-hd1/|^C.7^Wɸ*4+((YE]יK'7Y*UثWb]v*UثWb]v*UثWb]cߘp["'_kj,|տU*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Upo6ثUMA(vlo6.]G/qK@ tYfd_FLU~y1mB?[O&u%/L9sʾx/;?t~ORO-~?9TlCOsg榛N6Eu9ٿ>%kri9n<\fv*UثWb]v*UثVŮ/A%4Vh~)js+M5J]W45>E6T Uv*UثWb]v*UثN*UثWb]J+iZ~i}ѫ^clU⟑ZVٹo+/&*o *tZh,mGJpzŬ[m pGw3"X^$tӒyGܓ1_1Fq@*v*UثWb]v*UثWb]v*UثWb]J| m0~`⯫f:5ObqWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb6P.i^LU*#%,mqVcv*ukM,8*`elURk [/?(*c̞XԼxl5{y-nr-~˧|8'rmƣY9*lq?''s7cϚW}FP&LO?g\(sv'ɐe-]v*UثWb]b=*[΃̚c[+Z_'#npc6N2 *v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*sgQ?cT\UE3(f0mqVev*UتA#hp6:\Ž9 _6QW󇺎^m!fQ7WwuޓrבIms$Q|X2.R;ٔcYf4񗓑 4_/g%7漖 HZY^2:{3 /2i斗pJ|Ec)sCo"z*C !E]v*Uثx搽hi8?<8w.>{1oMC WIci"u1g8O+yfm'klw)vlU6]v*UثWb]v*N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*x|U኿,*sp}0O}ov*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]|9j)qWƘ]y3E?F*1Wb]v*UyB?Wl㹠us/ |¶OKMȂ5gC^o?4c# b"H6(AVM\U3>d8O+(S1d$G&Coʃd*+W_)=FyH? ꖀf<ž:ϴ̍ [\Ji~vL,&ږm@w,0f?ɿWlbdh1w/ ڟ]a ُGo]eeR?˯}WښZDu 5BD ig2W_gVcFfO~⬿v*UثWb]v*UثWN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*@ wUkx8 _H-w&ثUثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uث͏F,=ث,U;%(V0PqVov*UثWb]@ve3WHb-E.4G_*_!@Tqx"W`o.}&@eAĈ<8$4[D7m"?flUߖ-!C o sFC܋( :X.a9%EyP%)g9lDcy1#q[y:"wy?d?%iha;WS⬋v*UثWb]v*UثWbN*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UoGxOO_qqWؘWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWXzɩWXwKP`v*UثWb]v*UثWbRo@-ͦo %@x|M @Su M8+ȷ?W{=%T 6^@1UWb]v*UثWb]v*N*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*㊾|MLwU8dIسѦԩ *AfU$*h'CҦPl^ Bڴd ܮP(bnSd5RiZLX ͨbF3.fV Cra T]T4(A8LM5;2tD(ta"bĒřqggu"{ Oa&DdAD≔wFc%53`BP7DpWEJ1BT^E̼FpӍu,uWMxe!Mf0\eP"^7U<A} *e\s1fyЌD B bPr0CYsj}XCsH!ӄ֍L)T%4eV8VED7" Sdb)qE%6;EֵI,iDn:P& ra k$|jA?uLEEk?ҡTf<.,UATpUWEhBڲ5J%4{hdd`3Qr;P 5@ZYz e@[Rt] !d,/ Hn 2c2wT3HŃQDe!u]U:nPJ*)pƏ9G32iZtHeΕ>U8dIسѦԩ *AfU$*h'CҦPl^ Bڴd ܮP(bnSd5RiZLX ͨbF3.fV Cra T]T4(A8LM5;2tD$Y_K$w6z3g20CA"@y`Ŏ#T^e 3PTD"q"UO7L̼D k vX tb3rLfP"TQ@Lu D@[Cd\.1#X !`(r$ M30evA~T`]0 uGєޕ&Ӎ Idd&HSfu %T!;e1Ì*XFZHTX*u b? 'ݼfQx)K4i&*ZP&Xwݧ DYd$WjA?uLEA@1fTf<.,թQ)q,w f?uG71:5Q&Ib{& AYFbZcvzZWp;go/doc/gopher/bumper.png0100644000000000000000000103336712412656734015542 0ustar00rootroot00000000000000PNG  IHDR8gVgAMA|Q 9iCCPPhotoshop ICC profileHǝwTTϽwz0R޻{^Ea`(34!ED"HPĀP$VDT$(1ET,oF֋oZ/K<Qt`)LVF_{ͅ!r_zXp3NY|9,8%K.ϊ,f%f(Aˉ9a >,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEV0䥗^zUV笳zꩧ7|%\rgZhB!B!&{0MY^n<wqgg?|Vj1Jo30C!B!B!LH(nrF SϫO|;P7l3a>sNB!B!05,X],A:뭷ފ+}!-Rĸ5XC$niеjϭgDž0u=}Ұ|~MSk=PZ hK>1'oxl6B!B!i꘺j]]l\tETJxqde3;״=CH."`JUjѩP"uSBdú~xIU7K,v s=ma5\y問8+:n!Rw~K>a !B!Bajδ2l_~yO4L5m 6 yޓ+y<z;hpvjlּKw}6蠃pРʋ.Hd\l /0-6=nGZ$L_0Yo$/Z8Ydi:wq-XGGUfxw>#w7 g?-^{I'2y,Ro4C!B!ISZFP裏͟ԧvi'1q3fmƧ~:D2y?$}M7_|%\o}C .q\uU>7'~]Fabtͷqhn>zx~.w>~_ۗ_~__vۍc8SFB4NFDH!B!BRi mQzEj޸>7|s:#s=/k_?_z%}o|,yo~;v~|=z쟌6rzכoIO?_׮hg}5:y믿4exפBZëW:έ38W`A][lO0{[o5/< Ufua^#2W]ve pjΎ֟;#1׿ufj4,ϟgDyg!|wB!B! ]:==cYgA.Rsh~{ߣS_,Ͽx≟V;%X?( O~h.i[(m\4kP;CdM3 ȅi8A$X's9qVu!+s4$㎣#Yn~WW]uU2Ds=+yaiï~+7gHϏ=)>PK/ML}roVIW}B!B!0)'Nn}$ՙOIcA*O>Yx&e?Nk?&LL/;oSH{}s?R>>(`WH4ǚ*!4~-!bdœs9o%,P~u'O~!6[Be&:I_ꩧzmJ?>9ЁAN4i4Kp4̥>9l ;?$K_JgbMj?qF{dg+_ʶnk}r7<8љjl(%_G-k[[}Y/2g0 -C!B!BlY&y$ё jwyEgД de*sdhz\u]<_CI>JxMәB:\Jv0uarE̙fI4YC/(ledc Y~74b!@ٟᄏq:mgR :?Y? oa7jĘ ]Lm~Q[sj KpXHCj:Fz?|bUGUow(($u9!tvgk!B!B!L:Jꪱidi9(A+x8FcjM.-)LFk?*Ǚm2\b5K_H}&5Ml١ =UZ3,AqB/]9 S6W]uUɅ-".l"h~¼ٓ%WP/^qJ`yx:hK> GS{]EqΌ\b}ʲF FC&iNF{ǟ\[GevԩaMA*3ϲ}gG]G'۾ѩ};oP\w:}!K&Yw3PB!B!@byVt:,7W7XX*%Lqre aȕQ2qF箝+1wWnr=HTlyOOR O/{Y @-W7_~TC{nkֽ]tQff$8uݧzYX3s1z yW!κ!LM2Y ~H/=VsoAS~edfaeGA]2{@?>lMgtU`ٖbF\l\>Ig~n:<mJ6:ړ+21':w !B!BlybIt aFl5˴-:vD:N 7"aL5kX ǥGp1 M#hst@밬 ;^9<_%[l1Fo)M(atvݶPow_Ff0ٖ)B@=g_7뗒c9{u!0-"'f ꫯRuv0#{?_NiTf5S3-ۓiOeRͰOtv#mZͧXAĴ&k۩SlD:\;[m/QGN#1tB!B!„J$tM%>KxG)td5qD7 %II`m df%5i%UNx\sX\; ~YfIRmK|?Z8lˣЇ lv33S!rK`SX!jgC6E2&WdiAj\<ΗZh4$qٻJRwN@=i*`qU4b(剦{j`R!B!B\edYe}Wɳ-HGqn%Vs3AO|zSAgy ԧ$rE6`1{+=裏VߙәCdT-X&k}\*bz>[+ٲwQi^/s.7׿Uhiv~+ز4\"mr@ݬ?-POik[4MDF)e 7T{H_ !B!B 4"qz뭴ʉ&DsGq\C=TNnhFdn 6SO=TzR\;aw&:.oxǿg64\bn4r;):>fSb>'sY&ʦ)'4FڇuE~]j|NLwĚXB!B!R^GO:$+&v?N,LIl=$КܭR-T8hFdfSJWG?UqNj4L?nFqiđLfv9'kБ鶪YDd+šϕgGl r^%h,  Vv=dJ͉LS(H@VWt+i8ęXs ꤓO-7ZgW.+t}Ro+O;Ax2C!B!&SV[mb܍P*٫)Υj5t4=iZv%RN e%S^uUs17.0+%`"5zpgXc e]k}g<@(gsk>'}rghV>@ս5: (0h:}QKe[iJzmJqN .õMIOӲ7Һbq|_'",7 M:w=3ڊ_Bmt՞ ^Ɓ! !B!Bwߝܶ +?*F#ȲD* Jjڐ"oO$dI=\L^%=I#>p@+td(8nffuV2}DɋDnW\Qu]Wr: :_3[o3Rlkֹ=I3-/"FR'>ᙅ^nNM. ۓ/BM/oE5tB!B!0RxW$hvrr\sMnvJ\K-uF"㨮e,;5;wEn&@{ɇṶ̃Z@MWHBi|d L£3z/eYF꤃0l7l F jzwX@Hny\З-_|Z>cݻ/4뮓!zKOh}*[AZ趥5W^j~]z'$*FDAeWeFc;[o3|Ǣݯ)`ae{oSjR󍚆ؾ,Ch$(mdq )6Q3PK\]~ПP8 7xn#wm7ZZ^&Lsk2>*ѠǤ޶t{J7eLY%7WLD[|)a`XϪZ";|O>TqplY9҈:JMB!B!Ÿ4 &8Wܳ[Q|dr{SmYѝ+`HK)f 3=L.8 U~}*GF l ~A(_nP/W&&QIenjeOھ9`W\qn+Dn\Tcg "&FH;e(T~>N E^\|{gzVD!erg-{w*袋VCB!B!04t:!$$1B (\&km]f7̊Jl]qWbTZNOx}l?icL뮎cR)Q<)b*R5zk!*5*vޟ,&1w\{[ X+1aKPM![tM+tB!B!(~'K+ɱX5 A;R]j87TX[N=2B -DYkL$-sׂݬD|[~H7#K__OѠǁ:hs5 x+ " Ÿ?)r!ti9CŒm0[*OJw\\VUwCh͐Y=?+w:nUОS}VS.ڥ?lrRM47~#vU !B!B 3^q>wy/4)+hw SP-"kY,=}Y6 ~|n:q[fXbes:04t/;Uב|`PLzHl`Pdy6AVrP#r0 rM:wZLKw]O~Z [5bb{j:/i,A鯽33ZͰlv`O1 A\+|3J+˺[ DF - 5bQa82ZG"=o9DTg.mg!K}7[zu3z>ۂC's3B!B!Lst'[Vςzr'Ъ~8Z'scԎU ѿ&QG[o,3ao4438l=|dV'I?ȏOsRSi|2@4jRTijLBy睧,rd}yy"#<[rsIs@kGM\oiʬVd$= Pwi[sn6_5xc޶c$lC>5S5 6Zg7Sǧ狷"@m9C!B!Q(|;,ڃd#g%U$thHWDھBwG6Kih姞z*?~+I7&yhi_WvS8H3nx≇v^ /kMHF Gsk_W// qnEbTi/ˎqnKO|yOĹGem3B!B!L+ZGg} ??~]wuGq؁PB?KG eW7{o6=_a@$@+7kOW9p+];l=<3v}w7xHc*뎪N>Zg?Yc^1/ո#WyOc6lw<|-f4_Mg &U3UW˅Ӭ{NsB!B!LTpAF ^{m.QR]a+g~8n)ݷT¨`%_Oh/~b@_|q{`+1Rcu*' iWk+`" &48ڇo>b-ƹ/ЙYSO=W':_KjGWzk~ս%ډPݪ}C&ƌۿڥg,ľ\epmݾ+5T z[Z!u/Gs=",,dq!B!TNyiIun-1hWKj|Wk4_Qِ,@7+(銎#C){׾&DV`pcU >i(jc9s$*6aK/}w`W*)^}V[mg7;_uU.q&:sCװюyk۫McA1Oۥ!%>[Е6,#!I>)Ɓ-$g$As ]7M_vVSFv*X؎U7Meh+wS},<^}ՍGIB!B!&5-}OGMuGڵBi[/Ƿ~>ȵ@()g=Ls|_궽W3Ahi$nnxǮZ;L Ţx+'=q|) :D{dž\=y "@tR=ɲM@2ZAte_Iw9guQ{3ϴж-Ng4ߚΣj!B!BS 9k_.Q~=ҏ=Ujl/U G mlG{vqp~s~aqy?zr?Mgve"lvm_~e][o ~g@Ks1k)MY}?z0@Ic>Ң҇z']H~c|[LGg*~P= B!B!(PUn7|2-x40~THi VZi]e4[PNWܾ ]s++yӁihSN9?!BCZͧÓen ؁Iud"iC>Vs톽O~2>d7>'S"枬a)4ڷZ1YucƖ)B!B!0[,!'0D*31N. {цy|%Z I8ꨣXbQ,K>ik[2ܯCBm+ҟ{v*|jjoʐk?vcWo uT"7bKA`h/OƐ<FW=g_g8S9I8dp=iǹL]4g͜SU:B!BaJ)t]wUZ!2JzM'"G?*-yB'̈́?o>Gd0_ZKJs%{о@6Ҝ:o~!L[>bssB[JWtn# F4J1Ț&4 < U-ik~炸/Eo~#Frwqq@B!B!L{J"/kδ*zSWnSL駟&@4xN k|g|7ġhQ,cE]TA.XEtj*o|Lq=x m]7}Gȗh=xY?#YM&V7wvH'x0!1I)!B!BSM\eUvy^o|ZeyUi&=Y=^ xWkmFpAc{ꩧVhC:'vF7`O7+o06H 63o1/?1z%4Ģ3>sr?;2[nEqtuYGi;"~{ߣϷVkx:'5T_Ha\ghB}$_ܰ7[jzC%Cw)~Knnؾ [c^P{Ug8UW]uV!B!B4MosΪ:ӟtE3>etM]Wgq(\o^wuguֶS$$Hg|bM$}f;0 vh#+B)("QfOxp{l5 hsj:a|ɋ/X2,+n'| /[.}mYlg~ l$YzM}Q5=kCY+-BkMOv#Un>ӿIt:sqH.B!B!K%nߞaX" /g]s]ő+t]=RM7tw2Bk b7zP8yl߫(?u`rR$[2G}agcBe@1L='HlGG^EMz= ][lp5pW 5wqG1/xMfB5Yf娣L42pKSLRY_ }L L5vbyݯç<׶Q]G}nګ $i2:<}C%Lnz0o@a'hrsǔD?ӚmcJv!g>0B!B!LytbIL_8FQ}."a˒džoalE"\r%vf*9 Q>)z K+OAUlp%@>SŚ{;p$ɰ2R lR+큕 `;GsYյڀvX.i +Bu ئCn=mN6t4vOyDs1Vޖyןz/~ 7XmtJ&:B!BaQeJ!]x7|T\|瞫璁u4 8 ]Wi7ٶnK,J k'>W8]o9Mڥ"{,l%OE۪|TRj{.z}a6R7o}K׽K|z>id螈AԌ_YfVZiv?'v0Uq\ƨƔM4O Vg/?{1sgW=v) !B!Bɥ~tg^EyHsD49igF_{52A|-dfZ'+ŖB01AZ<5ư LugyfH"Ѫr˭Gy?;c; 4ڂڮ{;\#P\^qtguZo}CEԨT2\%9 ]+w}~{n7~;)t7v,B!B!w^5Xc=qe~pYe[1vHc%mm~#eм/3Hꫮd7w?K/{.1vb<7T#,&Z΁bB!B!CRC/{UWm_ט.`We%:vthm96(YԆptmi{}+=BEɉg͝q#  ZL?Xhʲ[R{zmr>[9O9SW\qJ W< /͝d|\:YJւ=%B>ZBC!B!F –`{7>٫ꞕL"l9㦸u&駟~M7IEk;,t{n_2\ ,KieIlbO]Zh矯 -΂+m&7AWW7|sd (@O75﷬M5GyēTi%+-⠛;J'Nif™YT]yHWu0u6c!'s+ԴQZCbB$ԟuiR´U4B!B! F^{%矧" yl-<5Sd)P uӉ5HДq߫]tQSwnehдZڨ/}K_W+ܸ \M &b tps;/ NFzR<{Pj]pGa3ψJ^xq&i#+Wۍ12ݸ)S*;(0, !B!B\AH|f_ BX,^WDgѭ=҉.RړiJ*jdV`W)OmӾܵ;}sNUc{9r3۬T4ymebׁƴ>CrB;Pf#nsŵW_7xOX$%>0rJnr]*߹fў4=SY'Qv8iB!B!0MP*2tRSM?3r/ ђWrit]T'SyNiܫ@G,v-Xo;`^E$@>5s3~7lMYoLꪫtlQ˄]b}JsW}Htgq8MܣT^T} 'H|;:ϫʬκۊ` ?W\A.xҟGen'6Eb=t|3'HӯV\ %#B!Barr\s5/N,ksk]EDY)^`W`-TѱI]> Q"Yʠ,ꫯP7 ’+ &S'ʣ}z4cʟUӫ/w/~U R >쵼kp@GIH;l"qfhоYK͘6=WtbG`,CB!B!0 Sw1O~ U<B!B! hiDO#G~+_1{jM T샤>;M[C?qχJ O|b`jkLE@s =cg's1Wƅ =@<ȈA;4q_]>]>S&l<|e\)0UJ G8whJ a7 >ڸ@C!B!&tu$J&=E8eWD/~k]fV;vQi7?(!cZr+jwq}砃Zwu/"I/~})$*19>_bȧjjh!N;6!Yvei_TlTQھ{aO']C6D9itguFwcB!B!IAPYwAfǗ^ =7O? ?'4,U+Xum]Rn60% ]յk`C3˳ίRK>bG8n2:0mԳ5!IL7@sHFGy?aF0v4]w{B9zp{vW~w-4?i{xS?B!Bauz6_@{WǷ[Qp_>l )Ӳ N1~#?h)×\rH !SHØs9?G}4q |[ߒLl_h= h>VXo$!ŕkLg>팻ٱM6d%vm-\{HQ˜ Zc5:;6-l'JbYxᅧkK!B!dI ^|★J%q*zise PT#=[s̡\7Ͷd 8wU-B={:N;)iA 矯 c;Vrݤ== '罭 ae{s:1s~w޹ v5o~s Ř*˴N7'&j:M.Ͼ۴oa嗯h!B!BZ ]F,mF{DtU k,%vQG d.P/MTs<+G}SnTyZc9=\oMl߫uL֩P'SMOL73MgܑGI IkV}:-}()NKPRlGhGF'7Ӵ5E9EU 8{-(9WB!B!KWҚkcx@MT'`h4^mM0Ǟ4+[FIT;ɝM}a[n˸iS~2A{w@3 λW_}"w.=r4Gwh/ڄ <:B6 O%{ovS<B!BaR93~q&tX',Z$-j|#PlOve6E;&tKD]"`)4gK,@C9g,׻ =6ۮR<89Cy[U=OSW!(8mik뮻Nu˖!l=w:mHo믿NiZy2 ,\,q@B!B!LtJ! -2vjI946u\j,UW]%ݘ8H -^ *DܲSc{N6 /pWH)HO?5zO=Խ+B8oGfl:ܫ=t̻۞Zt hs:QoW*gfٞkNAVpK_ *dktۡ. Fv2`Gl[mAbugB!B!KK`O-gpܟ^Mۙg)kbia@:b>g*k8m\̖~^I}lc 1s=f||_ה4K;@I{^ǼDC%T2AxwiuYgC}Mq(:\I˯UG 9鉩mY*"MB!B!0Q~)2_|?o:|^P[o102Q0&˓'-Dc:da:u7a Ww.g}v喛ӟh~t}L4.LLnt3y= Jh7#;9ﳏ֠UOlYgeg%iM˄^JnQ3.uĪ?s8d׭rL^X[ӱB!B!NI0袋 .4Mw&ImN;▃?Vˍ7X Ѳ?{;>tYTmFMY}Yg#|h! K~Im`6w[A Хl,*6Ӎ"|_q[n2^C%VOSF܂2aŒ]M4(hn4_ l 7ͳ>;B!B!Ks~Jj\s5ٟŌ-u|MJ_)!d݊ݠqwf.#DR66Qjvj]}2cXZke54NJn{}w1]XCӠGXridi FYSnx9ŜH}=L)㉯ό?[-\XoVm׍8YjzR8Z(J=oNR4B!BaR.Ѕ?Os9r 44nб@1I ?Zj2gLywE;ryܨ2>yg:zYfeg^{yluo{Aw裏==TiGbwR⦢+!X]ҳY/hzH܍Q)BSBOOoG?C6Pdm;uQB!B! OK'l*:aNq6 kGh=U #{J~噈YY,Q.38ϕ30tO00딁W_^tjHc馛]wݽwa4E.]c!wʛO)ŲZ!c[*qK,/W^p47.gtYUҳ^zB -4-_/:\FNd]HַՓlޓ1m$턺+?xB!B!0)gOGyuktD}nY >ľ; X_#l rn^#َgd|Pcq ή:tjiҠ Sϔ_`N `Ӷ' K;cmG8Y>VI&?lM!UW]NO-N;ESGq9L VxlpAiw}7>KM!B!„XP瞻+jWMAk5Kk#7҃<:qZʬGy&+R6$W 9>5/~_쩪!M Bw"j+Iu<5+?Y=s ibmAxu]'_c!@!c`t9Lf Pp54pgTG>8ŬJv.a->QmerT@DDvhil}/c$ 0 iB!B! CԖ\sr؁Cz.H O~M7pO?}ARȔO[$H[}f[t'?ɵZˡ;/ݛ@y}rW99ҟjS ]gMmR _לJzVڃ98gOKVZGX{Ur LVsu2ui)(fvn`wtAiB!B! km;uY?KXܛלcQr&c%vm?3<*I:)ZZz EG/~ )/ڟvl#6L3VVKH\:tba< K;=~jU(HtY<-mMSo6# ꫯ ӭ.Xdz0*Sbt`k َm ewwuUAiB!B! Ci^+o~g '@+IͶV9=GRxuenvi>GtaAD p50A*? .@TqWYd2ԧN:$[nE$ؾN4IMӧx)?DZ}J~"i*+sn)B!B!i'HuC(vʞ B387z PQ:?яx?O/iiVXxJ#/N-&g%L;k䌋S*LLK3_X_[?iyTדٙ|Wpģ>Z9aLȠwHVl#a%}ѲZGċZM:ֻYr-(S)%?B!BS?[Ska-`n}z!%N?t3߉h2\l+Sx /d]hҚt,҄T]zY  jx^{;dM@` ;0#+&S`e4 ;36wy^oy}jyFnDnoA4{ty1&6pCQ*In8A:oye*M:4HOp ‚$WIB!Ba*g)SM^~ٓo_;?OHت'Ւ77^zvmO|"jK]? #@Wro[ntkd`0j^Jң+ܜYC 4np{M h~_U{u eoWN+4xTCUDV0}NU#ԦelDdnx6k))CE}rWM-!B!B nl~k_(ZEs1dC(dY;O(6l3qTt~n-@^}f s7yes%XYNW)|p+kvt洵fVhm=ɦ"͖u]͉'8D5$F/Si7w]z\6$P { 3@ERSL1BPC,9 !B!Bxϔq/ͣ:YBO 7*yeِ9쬳:01(Nk0 ,r.mb TOz#8be)wK믿+K#;V:9%\&5^RњNZbCtC՝=MJ6``2vܜt?ppꩧVPQf&W#(lSMfnLE3/?ؐ.ЉPtITH-Hig/{ ?a;S^+GyYƔNtsI'Ip`U2 \fcwn؎>l@_ 1kv{!B!{ ^eFfT3P+WavL|)S1#,G}Kk-.BKd h MNI®e.:4[hG-ABqz8c8VpKwu=wRNjFJ6bޫqc@vm!B!Bxtb:W_}3ϐ-CAD0gK.9fG;d.ĠA$vi*h{'g|:,f☛^ =_ 6-{=~f[OҝlPojUl.Ͼꪫ‚S쳏QQU+K ܠ kaF]!.S6{B!B!n8NcQ@}{_zk4w2%U=]mM7J;snhd@}n_x㍺j6{8%(?c=/m+E(DXr뮥]nFo&sUz,mj/첁u-sa|0)+[E)gMӭ H0*tG\ 0|[dM:t!B!)zfM>蠃, G@,vmf[YαK4}7p -X},R7%23 _>&]\Rl5.xZj饗Z;9Cձe)\pq FGz{:آ1i"P{w>U ϖ%hzS"8*Xwuۉsa|Xa1ʕmA#[}Ls±UY Ї>W9!B!Bcq7}eP@ }%CVս,L]R30p`E ojfҍKڽ*5(W,_>J*kMG>{_s=WɋG?YzHg?Cꠕ),誖6 -L.џ>^C=g_xO=n믿~MA͠[(CݷXۿ BqgqB!B!&┎3ꫯ~d8jI'o[U]^&p;ߚkc> %ф? kHnC:Bm+lGI[| ߨrsͼ_?92p5RM.]+y M&7Sg]Q6B谊Nqwqǿ jSrygV>a8jj\kOzgB!B! BSЈ,O=Vb%ezeW!^%@z ,tMok]vceVq G3uDKtnTg Wn^3 _{wuW!uoGZh=ٲ_'B7\A$|YyD 䉙V3#10_ͥfFh*VJК6U 43z^{嘇B!B!f>̡$VF7fܘ"#Gԧ>U-u&RSd>hRӆlnK8 %aSq yGq(i,gyql4e T_vT.ts%AWZt7ҡ<5WXX RIOh $df+l'38Xkf`"BݶSF^#.UsU~5S!B!B[o]vYZξnII3` ;NvϿ~Q9EPw$*Cw7JM9"h;,Mկ~ /Tol" %17N8+yDS~go'^{$7w}\oF)=Z yf(2rEG:!s.3>3瀇B!B!}z^F8#I$Zٖ;Vݹg$xs'85~ ސ ZʍCGke#IHϵ("˪|'xFoG?얱P%Оq{f@4^YtW謺vo69:0B pr) /@t 4m M_&k˟=# :o7}xw&G2B!BaZJqs=h>)"2:15En$.k#./Uc 4pgqW5~_p )TkJV>wB!B!LƝ~O8ᄓO>q+XS )= %Ѳ>h/9>묳ZV0 ~{߫ pCM;XeU:&;06l nV:ꫯ҈˶4]Rc:Cr[}ޡoP'|Ҟsa¶nbՓ\-/}iyѸ]Y8  m~B!B!0q|:aێ5 RSN;4GZj&k60nԘ](~¾~8r˭vtJUxsnˌhQ6\qHY{W [n ܨ%1W.ڒC-[kKQkrUR>.Z+G>B!Ba,lha>af:sfyc+sࢄH]Ch @_| Mi-{i[BMb8os=B x{Po`Ԍ1H|^fe=|3B{Ks׷/+3(k_Z`s FB]Ev $ w<КCe<8E۟jt {.-b RTstm4ИF*GHjboךt\hrC!B!N1ydj f0eG{ꩧvE]t4&lyʹK  єٍ \A*w9ؓ9sT9Xb aGuAD7k1&J 68`-+b: 5sU U伦Aj:΅_|j*iۂ]c 2MS[[ *XpfW=a!B!Bo r$Yhr!Śr j@@n' 3̰n3f7IPv;̘AU$$v=+h4zzf;LB7+s;P,qk*E(ai#>n}K/y>xe񧯻t#<7_ʴ mH]̐$\sM)_WzB!B!y߻Ö]vYVooVK韫>֒L}SnA<ۮzUK/]lh-SZ3eW`9c=VtYPGC[WL Kg=S3%RٙyuJP_9P{Z:^q7JVSs(i馛昇B!B! MIqLBP܈,])#[ABۉDk馛C}CcCkZDqYAo})+ן~R Ko}bZgl+p.][ -Ku]wuv$_feNOp6d 0:z 0^fq}MxL !B!B=3nv籼=ٮyxQ ~m.O?4P÷Z^&Gظ);\>lGO[iԧvc=t*++V`~9\ǰ uo}[s_~e6\LN ~ nt8}3jfu޵#B!B!0FTWK/+r%t37:3BnxF $v`@]+p`Q_}FF7{R /"7&|oo4E/kH=;|]bbW,#s5ֱe2:RI?E{pW{5P/]wbsUW˜ZO 7t,s t摄B!B!C7V+H}g?+M\FO hL~b#JhJ2yL"ǁ6VZMR; xp oƋ.H1L1}YAwuWu28R~Jnc7:]'t{0 T`|E8)mWwfFn+HVq}3fzeB!B!K)5%w}wbcyƘPpw|Fs'*ƒl/ pF7Q l갍] v}wq{SY[آK$D?&ckٻhmAL) mvuW:] &v.T^sЇ ?x ;H_]e[ȇB!B! As 4L:{܆lj˿2BR ->=:dgsO81#&d f-hZXp@ldo%~Yl2 `4M7ݔ:j8Q Kg=uaK6R-6(:B!B!BCPsƩë 4O"7=zUlD:VSb\>Dۏ43Q9yԲs"ǭ3\w}7`ʡ=G:RK-%'H>a }2Ud|-4urcң;`)q@ MGCq뭷^ d0fҠu5c̿-T :A[RS L"b#4\'#B!BP*IJ&2՘.S FkR5]]"#MTJ`]s5z꩷zٖ+}y9-5 rGjG7l3$k}{Iv*t$3*'=UI7:p2A^J \dԡ64Z+1Α1G>WՒ)e(G>B!BROO;|t}k4& #cIa3K9Iqgk: ][ *r@WD@BƳd7*WfVN5y۽>L_=vۍY86Hw4XQ[̯~(QǰpѶ6e;2*pY?+;&j7pqQr] У[GH~1!B!BE$ɽKwuo:Udjt㞭I١{;A"MvAkGN9A4hQj;MS)˧ʄ|p1"8*zW׎M^o:u]Vk?V۾~A7?7j+ze|VR\U)#FyniJ]_9眣w嘇B!B!?J| 4T3bOSI#BryI{G} [Ov'4Ҏżλ ݾ⋉Il%43{<-QreW2lghbs>o(ߘ{܃uY-XyE3X9ԙd<σXy}Kq#ښStK\Qr٫wuׁw&{D믿^6O f ľN%{/E8g-g>Jqe}H!všNvG?4?+%Uu W5V9sy晼7C!B!FUW]___rVe 34Cя~D!vm믿@ϓk%Y8tz'Q/`VmOH׼?ii^Vk5PV.tST+Z>ToW!B!B?,bI0lM]\栌/~ ۾+yXbўxto]Xs51K-FiwI, 7К-1c` l͙gyWp RtU[P+_sOӦ \l*qe{۷o}[b~풘X2y!LBz`iTH$_ 8ym|UVI+.zitRMJ5lfM*ᆳcZ@ۻtK/>P'MB!B!||-txݹE4hHlSgaE pv??K;}2Vx;,l2.+q}g}G;¥& -ZJt^63vlτN ${ |Bu~@y;#/:eZc)EXMPʭ`wbGǹ뒮*CP-B~|!B!iʩZf@1e&UBGk~3!Uɞ&Ì+<3;!}GE%oBg|o}C%'HX4RFs.=ֈ6NwE]:ӻ&0Yu6e]V⒂ g'/c?w]9] -|;ߙ}sC!B!om.bjYA|MT1+#U5kY'tAkH|_|<?ȋ;S\ W\qK/D κ7q2Odh+񘧟~?flb%/6xo]Ʃ~7|瞻l6VI|3uu+V>}뭷Cq$HY0Dty睿/.S| qdH DbMZh\B!B!0t11UrML=Eh{gn}^xgdgw/v؁G\)NtxJ ґih`9]Z/C4Q➻hќGYV[ $ycEs=k -.ۀ?\ f1cs˿y} 70B!B!iٟ5]9#$P8hݒ\C RW۟z)B4og̡viN 󫯾C7Mu`dƆU^{5精hb2$R;VY2}lJlP7&lBevqh_C=TuS54zEsDk fgC?D]d8+N7tiB!B!Ls0uh7"!KbꯘFӟR>b>(@?.'Y\kҜI#ο R59z ӴҲI؋-c=f#c:,rox嗅lH(K+UZkjG#p?(YcwqGD*;B!B!Ls&RR\4Ss74;^B _:#կԟB._Uvң5Vvr0=BZ.c~!B!´K sK\#1&zMvT}?K&;:G?љgymao*!I_)?호\6`vOrӚuz:5')ꫯ j33/t~ccR$?, Z}H׌0H 3ݸBR+Vz|dWv~ !B!B(9y7h#1_0ËCRu{Jop }h]ami}믾7ܒ4@gs!Wl RUKÛDa!qM >zfh`E,CHw o ͵7,Qql,UFgr-+zS5B!Ba*,iMY{4;lX>YAk/灤?f}VZɠJ8R,otC׿u7 HrW`̆x]+o~?Olfsr)ݓ.LF`($Y@\r d22Qc Cul {9&B!B!L49LF=êI2WoРxHP{3|PYc5(FY$ ^0ТgY/YDd*B$͑߹B+NmM"u)Fin& M}S h`:4F( hDbkWu&Ru3ٯDjw1+ s_|q` !B!4Dab$l4sZӠ_{6lyOy߻O4qgym~~衇HMCi?(+`H U)l596p Mֲu( Рi<A';\Dg-M>Woͼ\.+ae0Q1]* I/2>w%<4L)B!BaeOGF\aRk UKƒrLo?uϪms4tiT4ʢxEr7SuTݕLfvP}U&8{i%ArKȶVoQe uY38c9?L7ts5?_~`u7fP'YJ({̵FZ+C3:_rwvaB!B!L$ YUkFOPah:^{kMIO }jJ83?SK_&@x㍿/:?g+؂ zǖ\N\KM7's=GVP^yFb/9FN k(B(J5r2vwyK0h iKW$;u]2KZ!B!B ؞~0VZ%u48`vj:awa \W^y[oMg$ PlsU(+oJA_*Jslc6iܵ_|3Oe/$0ٯ!y#d:@Y5}oeW>-u-#b\s5miB!BaTqFW |F8U樕"=v}O&=׭jzQG/}i}U}Nץ+-ޤdHi]4-x4kT̓ڸ馛dk}x>q=j2 7  s/Oӝ_xG}_'m묳NZ!B!B:EcguV1#|3i+wCcV uBKSd~&.+`HyLBLPߑrvifg f[nL WjSfvL2QNXegnhtO 33g۬s_?|4hCSOm)z:û2Dn}`L+a9m]wݭ*a /&!B!r*xk5͔l{KllS]+@OǡE]eUd֤"Z5j'|R&/r~曙^\tE<]s)+*#5:g%!B!B!5o\N9I+ { #=]vمDIƲV>0%BkߋJBM7{8b9BN>yRx0L^u`G'>|Du+إ_ 508jwGl7$ f;CN9각i}t,aruwM.>#_R*#tMI*l8JJ+$ d\`>1iMm!IS5 ХnDz {{4haf>Fp?V֟l E ^0QC/u_#:M)?r.\r6یY0f,IRMiG4e:ѻ)Zҗds# 0!B!@7TajyޭU- * /蟐 U7Mƚ%k~HM6L  ązWwuRڤz{=c+\dkv2.lTdLQ;fsqnvlߚBa-\gu4,BK@\\*Ԡzg2w<y;yK^3Lv (WBtUNƓ<ѕ-j3F'd DttJTC֯Q }s3H 5PK_LJn_aEVl.n:GK_aƙ˶N!B!0aJ홮h ju1ʴcW?3ёoVj2)8Fr6q$wbɗ|Cέytz1 "bNʊ` ;٥K$T] RwT3Rʞˀ Lh,?D3U(o"҅$K%峟pI|0zh?1$/6l3ՌaŞ*2 P=?m!B!EZy;pi_|i"sUW]FuK/5?y-\jJ>~TDf=HxD0☖ܾ q$Z7HK>VtQ=zbhf~c7|v -@2w-QX¤..LVU)?? lY6yNوוģ>oS0%b1tQ,~Po?ByW< &Mq =6hC=@`B!B!ힿg|gʲ Xc4M^wyÛvYkhx2jLtQM UZq)6mIC4Mg g= |(u[m֓Qʂ⡇ʼI_gRr^FzɄy7YdGeLsYVFW&XVkq:^goSEy nvw#9ǨZASN9e9甉ar}1K 5~tzS>O~ ]7B!B!!X3<#y?waZ'QXy.J x_wun|M4W_}&D;+~3/_%4ѹ;~%Y}67 c|k%:@h.R51NaoҠg)4pGF?9me_ӔviG),<͹3M]z8G{Rދ`WYe;uF%RS+nӣս=_W^WJh35e ~vi!/aRᄏ?k5f2i/~ȁ㔦hJY_?Gߩ7Cz?_Ș\!B!Х_$Upc/L(kuy]`>(;n 7tc׍7Yd3Ǚ;!p.XM$3eMr[GwCU ĀS1<(+tm.OV&5$Ýj;'c>KAҲA* {s}WIx U}S_ך={o3%COpZk-R_}]ehԹoEE%pQD8g1=87L2W'R&c8Z +-oVg#&QR#2,=\C TP*>oC_M!B!ER,KdO OT 4r3;s2ƞzQCn>sn̖㾝]O%WAө<,#/5 52)+[5kbmJ.1A(B( N2&;j26 KK}cc_* ַ "[%i ?:꨽c1y睍R+%:wIX>9&Xe3+Tfdniqbɚ`Q2N,G}mp5^=I?7BAБUZ֕pȀ&o ;:޵gH!B!p,?Ôk K,bO}ʍyF3s>3Ddϗ|CUݟDwYul3{fCg8mJ7mƆIz>#ia_dA)t5TxaK7xP_VQ9@O:餦Dvh &ӗ=bk/]KE]aJˍ<2y>زID^W'6!Yoq?KOl#I\* .b'x"S\cFnF F#:!!'? ղFLZ{wmQL6JOB!BS07.& 馛nVc9;aYJ y,7|6$jq? Gj H1!wFpTe1j )A8.R86i71;UKN:5O?4]^5$WѐcDn K/52QG舔'h~E+D/L׿.%kS.Oթ8{z{9aktp2T}&=(]׏˃P=AhJ38?&CTUp;Ug*ȗ71E -B!Baʦqt ΅@i-آs>PB6F9"'w1Ԩ~?l 7Z&7]Cjۖ{6z#M@B7Q凚 4"jvG6Rxp dO^x\ʹlɥ@L24d ȵ0P]rwϯ{`nh'J4 uSQ(lo-W *`(W?B!B!La4ks)M7Ԃe]JzNgut=2I$zD7t7cJ9R\A1FwDp鮾wlޱft'59a!?jv#懶/| ZC20 iӮ6dᏭ&6DQQHƄS W zvt+M?8(eNmBc4SѮtN2:Cc;BQ9\;k. 5R\F֙EְY}~sQu\#pK$KiXsK¤DsSC⨻:RhDOhzrKSGz:۞1Fk)".8 ɨIsB!Btb7Qge1_qe;oIEUN9BWU mx&* $\x!lRy99p-v@Y؇++I+6[ِpOFs_%-Q Ul:u=V&@Xxա $8@Uͺ>t뭷&I)Xr.8dMT} ~Wd60è𾸚]%1$yc_pz1*P'Qhd7kwׁѱ:?)ֵIgɕI!݂Gs"jz4ݶzitsP`̆z|txv[<1Q!B!&'7 W_]DI':[mduL>wa(nw¢}=)VƘD{-O3ynxi?=V+XIr c d\fDv=a2j>(ь%o8OIrʕW^IPZTMM|}BI\('H"㮻iZ%ZkD$ M:uȲ{7/8O6V[c=LVA27tg' MٵşAbKGKLGy%7w%Z:k6."d" 2^u3 \۬ЮpWe/_vQyJ?'Cێ+ltR#k׳Xc*~gʴLmqI렇H9ױ5kaP~^'BPP^ jw_ QC!B!Lj*3ߐ[~GSveBR{v{6nY%zB馛T ,k}.w%սt C;nNEȨW[x똊_Orŧ~$ّp &o)h;i>@Gv`I ;|E-Hp4m*tk&5˂o?qJLtw4;g֧$ycR& Ӯ\>! Mi<Ћ~oVfմ~S*ۇ }IRAjҏ.gLearC=??B!BhtoaSPi:Wޝ]GJd!Hgf%Ռ`C:){n`_Gi.5fT8}(q.ef`]u32,\ %A545 8ȔmEpN>08Pd8hW_jPDeh_D*Q3?]T+^Yot$V\"[Fú,'B5 19o CaLY` ,ǭdghG}>PK| '芗]vI5i&B!B{*U"NNY*O=cX,$\YslwO='Bq+ˋWH'l|ĒLD"wM1m`TG71Id`VI'xD/QS,'8AzjSp[e_R^j Jmkg}1]  u2U18Z[Pb}=4lȋU6׳RMh٦qTPלr"H;jrlL;}#s{"eblI%Dwm@/Á[Bw}j-g3!s"c bv:袋$΅7ߜlӯAfx3? E 4n[S$@ևH~]{8U>L.!B!?&*ǬG׫?8LR{]f(=Bavu8^x%\`er.TŢȈp:] p UR #uVL<tdGO|G3HYвHz|iC .0Z5I*OõтBkiHyT>V>mޓ]#OJ?G6M3묳<9;q/RJ#־S'{TG}5aues zg!sQ,vՕ"b;~]Zߨ Q[* =@˶b6j80o/ƳLk-B*5i02~u<z>wV5j]r{l wܝ?]qܢ+dq€m;+7Wwe*pHҨk  45jk`v8@Q$u`mbOy i$'t4 l( /ht`f<3Xs~7HI5Uzqw:Bjӝ_;U-}Jtᑆ[jkF%MJM^hF3J O=#C^_d-fׂԫV*S`RcYdU[eY| ~i:^lCY u\ ٠8ިZAaB!BaI!̐MIjHnz>dEvRL4;0m S%ͷu7AܑetkJ"=S36u7[ծX\7KRؕs RS5Ǥ\)W5OtLSО8If>|viwcei~#HjL~U}>z8\dOxm+jY0!Ӝ 'Sv70u \pg2t4q؞f ϩ.{,k\ˎ'Nhg*pg[o*…J/hد]}\{tuXiVHb:jh$~^56FՆX0VЕй Y믋RQrMl`)S*US5,:\+k|uIVkrB!B"K:ߐk6p8dlHt&%}wsuNK>,dpwfbU":}OdccSw!~scpv j m>_d 7K֗*µ)cW&wuܲwbnbM.%[js˺wTE3(`7Mfp5=pHx$m-sgObO "#Fs97tSv?J{Q`AP#V(Y8M3'{*v-= |<301Q{).MIdGȀs SÕRysZ}Hpw!jӻ9}6r-.W3!huYNwR֫"EUg'3 iZwH5ݳuxSO>w+@#p$-~t` h_3{c a~OjcrS /#.iB!BR _pDصl!}a~M'Egi&,袜{/b 68;XJ2Bb0m#Jq.٢nG-S|tsK}`#6X`Uk ?f.Y%1hz~);ygR 8<󰖻?=CE"3,IX:Gx I!PGѽD qhz 7 7@A0״Wpux-66xF>gM-}"+^m|, |ݜ r?2.m.U{""k)X_1\H>EG).k՛GŹV{XUe'K UCo)_gVF3+2_De(|΀\u3'k7j;LmP۵7mtC!B!LDz +1Ò ޕ_-n t8 ӴE^zio+a-$Sjb,F$Lt6sT(m ٟ*BUk QP7Jn&X[bH;3'w]i7=CUwk* aQŒ$jAz|91ShTB(MYƶT.lg Wu}sv֓]kxOM>1M.RZɲ5WaBD\Zj4t?m4 )&*bk .4.h@?c[j]Ug(O}SFwr-g6P5qK/L&h*Y5eP~"")9xUc-uyRϕU,hB!BvRnAm^;"~ )ٓ-ޭǭ9|eOCpX uK2OL3G-}lte7̶(GuW_m,:5w FB %Q(bKhZI_5۟nSrT/Iwi%%w_g Bc,3g^b%'psږ{x!t1@Q!(ecrB4qB1O,hY/KRn#F~${ d03߿M o30Īī#d y9?bj=X9dh,rȴL}v#R~1Q3-jZCtҟ6sqկ?ߥ|ˋkFG1U0"c=:^Jx]%$ ɺןLI{R35S~h\F11pg2FW)ggך$8\M]c*O=q`GKWss 1[,zy9B!4gNq ?\Cψ c3,/_veJ [q_~yd*LϘM2&̻h+n9iMu7ѴVuGP,5M \ͳ2w}[`nwQN(Rj]C5)b4&ӫVf &@{ VjyS+a.^{Y{Y)5Yi\`?F1`@hY6vK2yZc?ϊ(46]ve6j2+eyjK8k%{*J:Fn]^ 9>0g U4ur~]$fH49xpkh#g<)F@e3e.nWZcS11>!˜v8 ElH[\zj5;ղҚk9V{'paғ&R vHRvu 2n;H}vo3n1Pm OlW,CO4~DSVӫF8hmBmkF3cSd8<u!B!i._QOHƄ`rHKN=2ei s5\E^)rΩG6s{!(xs[>6f5Cge 2H-DA(dV#3}ݗUA)kr 9.QT+D²՟q%,Gd>rW=&cxjƺo]W ]y+j{VC3=gܥۺ_HOVIAP?"}ȱuyTڻx2oDЌB x߅ƶmۨFM1Zm2# :jԹLI@ٟY___WK ER8Lnh~I!BaNse {RrO WsiJ| JΜ4sW9F~׹=bhy3uB`rC6‰̤&ɘ?@QXKY&-m҅콞An&mܓl gʳWyˣS&6 >! L5,Q=MWU\"x'e]njh;V+ObI:8n,uEJ 4za5o1 9TvKҺL`OvsO#=TCJ*)ͩdI/,s0)u?gb8ݙ1cUf{tt4Scxfr3]h%#ųҊnF* #KI'D-ųT2o܅=!]a1 kNQYmjEO"PwƐ챚n tkuY DT^W״? bڲ'`Ezv̚~{]/9L J=67(W@5Vo1dۘ7ٯWDk{TJ}"YzcZ.kHFo*&B!s'6Б[F7I߭%q 'Ivinա2˸#3e]jB,&][t `>yِݘY1=[h&oU'J;@oXe=IȔ]ZU*J;&FK-S"W{=d·wz$mGl+PWl{OwΞ13,7jn>GRP zcjVee#8.Fܩb4!19,.,E4 rTlc':LE?G+;u?v}$ӓ;4nFwŐag?7sNF1>"5;K~U`J]kV+g]sV uNvRiنzG2yaa\mLpeVXgw\~֬07rn (uI-ni1{xv49n|Ҽ<8Oi4>,HI~%LLY Frq )tU[H3|xy՞;aڽ`Ʒ{W3Ca "IkTO|DHy+~8@9:pO%!Fd<묳c4߼t@}lZz.4_%~q>>)/;}s3(уt9hG3eP@!{rɺPKm S㮟4^~[ŅʐB!FXj2}͙B7f++I>#RӗKG*=ō}%Ɋ}(2ᆂm0م\$l,Pٔ=ƺMFAuohɧ臔2͐OcIܨ$!3X en6 E#vQh45-U2003[^Zc5Z]'4 Lbb(R8BƇHCJՇ.F\t*qv'59+yV }RFw\ոF91 %ܓ\13@:WwCeIAeT.\[[=)H@I=לRjÿ7D/5~f@hwk09?WUƦ)v_?(=Cm~єX3o3l"bý˷qUu_} sٴDG+2< kNCk ^)XB!BRʋ=f1Ov{\qY#ӠyV'‡;4n>Y8)$i aBG棤ӈn<\a=%mv؂wiW{>fWy@GK6כ̇^Hh6Z`a%`o!%v;PQ#W0ϙ[+#nq y81Ƣp21E_3{]!Z]h2nsr–$E6_˔k M,Y{9ο^mu*Eo7USy|x% _0nY^k5?FM46`"z̧`F~ZHM1J֪ =ʘ}c\?<1~'}4hx),62֫+ʹ՘gf{8mI%8 ]oB!x#J+Ԫf=;|>6ڈ ͹5~ IMVH)2VsOFy..0[nV^%5GRN%4wUqʵ 2|L)OoFz1C%RGUmM)6 {_Ϛ=IJOy ]עnyi'9bQ_6$qiMJA*I껗YɾH d(P\YRum|LJqK uu6B6y<z[M3JH($%Z#E%'aG,rFkZ:6Տ]Ae~"r6[;s!wTꂿDWQ447ȯ-vZӉ?[_aNiyHF&B!0J mÛ̟BK iR(nxݮs6-,=APq~ BqN_.yUHtUoqUշ]^Wap'ʄAhA5m[2-Vd5ʟ@mxM3-$0|)м7YGft,#>'c8IYye)"CxT2 ʙ"Ae$C:WxOo?AU|sj'@+7$S51]`π7NwS~qŠ):byW(;c$ <`,f̤`K$;/YKVrùғxm Yyv;#GT',8MF`N7a:T֔_xnN09x '2%w҈Xݬ ,& *e\uYUB4*Z!K3;#"gC7{c2H^%\$|ˢ#|G@{#<Vd;gqf:lZa:H [a]Jnbse]e.%JcN` t MʾR#;'Pڂ#zLV-#$t}/J)٬*s>Tk nVX9`Rݹڶ6"EP@6(TjnuMG?/y3-K\KI$i9&+XDg,QQFa2/)KEaE:ŕGuwSza`vsk&+Td| " id|C_L]g. o8L*w6 Ka.W^y1B>\q)h6wp wNCM{\s <?X}FdZ!ՕRZ \ZVɘ *ڶd;]YL;blu4 O{U"gO'l\/(5[trg{rzḆ|wv4ndb# o$a I]rіe SJ\xFڲ0"IC*TJʏǤԧpl={鶶̢>ڟpYd"Xn m O_g\tHj>oivEA-+5(1/PSrJ%5ӟ[ZɅX) *2); բT͚ ]9] JG*ℎJCTƒC-yhsqh0k:g0ܭ;04qwZQGo$|_|*is,>bb&^^=K1'Y>sNXwM=۵_Z[ n?m]Hgcuꩧ"$ljElls;?m[$x6Z[6EtƁ]7٧ dBm] sbɶгaj1#@o,Ţ܊n!l|%!kK0ج Miu;s!J0Aϓ@d?Bq,pUN#:Bh(Inߏp9ϡ=:`]gzLlOmf̓n`B5cJ;}Rwt๰DPOo1nwE0q @LQ~"0 .k2l+}!_/9qo\6y1jɋx0i9MKe} SЇ>?dWo`Nt0ΆQi,fn!D`{8ޤS~M7=<*[P򕯔ksB4pW[$X/U*H?cV)43 6[pjˉq5ֶ c",2g3bЃ"DZƹ܈QGN-R?v濽XE yH:YE9 ^1gFP 5R-e2oE?)R>)jwS4KD-d1A;,}`nޏ9H\p@4{B"/v!]_H1ϻ;6%)Nmܢ If`#e%3AI? $ ̆J^|E4ɹZB[5 YD]vޯx㍚4hkmH?nN?t0G \\r IVx(˳+ZzWB5n.ieG =I {EYq 0ꕜ`ԛ^v[r>w(4a16n]. e\~7g ''!?Azg;:"$Ԗ(aTq&輜B[]HAXfKqn[T; 7c |e~dx1:tFPB4; "p4.h*g#oe3N|liUɕZ ZDht.3lk %O`jyE._m)`81ف<IY=xxY#>.&ZӢEX,85K;,. Fbi!ڶ͈y3f<\l;9ˆ_e@#QR:`e14ќl+D_[)_ġ(ޢ-Sn}2"#/o<}xt<'$s .'h#(y}'&zcn0z į@\\:JF Kr4m4]Hv.?ar/[O #yll9}1Lr-X߷f5Э 4յ9KwD+no7`hB!M"ocHAcv@x |W"ki= U\,kQ0h2O 3Mx3O6vb7e<3%|;nS@F17"=iG)ہ޼/Fi E:snt-mA"l@6=/A j,lWs(vOADi s+E_TA)|ӟƗVl,R$l=[h8mM% Jl<&(t#gp0;,XvЏ\p oa2 ;8\PX2#;8(~gk Yṛ#pꈂDq9疯2hkdp12rfY`p΋rnh8~#9u7eBQ|uyG;AM̧,r:s&w.,+ ӣ>.` {Ǿ51$\e\Xں(+= ԊUCZTv N &n ZuR T)I>60ʳq ]b@Hf% q&2bA)YƵqib/}K$Gmhmr@'8bXah$_xb VQu.7_Zh+'%J+BXG6FIЦ{YXf P. 2B_m-]ɍ364;n<9 n:1s'hnhIWoa܄"2Йg~A ·p6w 9IZ"«sGգELJD {Qd'ƴ%RGNj" ,,õ "p1sc9thVAT tui*U2_>2:(.ilW'E\|/?;# *F^UO #aep'Z;ہgD~*7Iœ?!Le9\oh):Z4I) _sAf[jK,@Hv: TEgTi_x=]/y׈쐬kEqy׻P u}/䚃1'twG)KK s:FC#HJ[Ǩky/4fcuͫ^*;Λ@u{яzԣZ6ٹɚ_Jnb 4SR)2/~ǸiM^Q\lW{vID*R$=d9bHx­.>8@s6Wzi9}nMMWOdVts񺀵 w\E͢s֌ߨwMz+'lPi-YzV/cWe\ 6u"/Ý먻WQf7۔3-+V2 }>YlE`qi+Ǝֽ[k[lBsKtpA/ 9A(BI:GIϽNq0 >SzMWztOӐV ]+G0ĤKG;Tˋy&Bޢ|T)#t)Ys9gڶbjcC~椯\< * IsXzm<}\PW1[(ha]*B=\d5G#t.Gb1Ѡ Wٺro#R-^o5yoBчp0hS>ED\qADgs Jp#oGnkIMHT>4o趶}hmcƹQy8dqb/ܘ n62APQl կ~32Pf \sE:Wؚ&m` n= y¹~b^d:/s_m)G؆yA٨[='ݒ< -GCCZu"M`35v'؈E7?ÕUPYuԐ ,t5s8cp˔! %a`/}KPOc'΀ubHCvke*_x|YOKZz2b)*F? KDƓb 2`>%J+,<"3V%RWfO.LKpzg'XQ UMsk!*;[]2jtY^n1aKƘ,U|7K"2XP[[[[[[[[[[5ix%[WS8k%ٟY(!e߶ЧO;䢧L:c+ |ۏdRQvkv~T/zW.RSZmI0dɓhˀ{SGi%%Z&ֶc)ꜼQ/}&@sY1!ȈZ;ֈ=&NkP2h>AZZBGe$ P 0 /Ӥb7hsS28W\qs@ _cXiζĦ,>gQܨן-(Paym`Jvvsڻx`B 8Ќ,Nd6TV̍7Xos\R'0Qh!Xr'|+z7 u;/t=ڧ тZ#CEÅϣCN^tE|*T(eS1훍,XQ!C^u @lCIb',I66vv !W冂G`?E- M\9 U`QAu)v\^Њ.yni-IC$Ɛ3oNr>9TVOBMDNFls;N TQ,]whNN2`wi-PLsqD9;FuK\lVHrazDlJH%,W:YGo,\*}$n[:ةm] $ȧK.)?@χ4in)Oy gbDm&튁$`IFAQyԌy&I6"K7&tqv @ ɃD&py[,Ņqs`"`ARTMFٓB(tvQ!CsːX#URn!/\T%/V\e@XW(`N54a sI5d] @f2ybe@W `@qӆ_Qtl12A`+\ʹ{{ߛ k'w  "GRP"dMKgMXxh2 ~&a@;01gL-9şHyZ5$x0I]IMM2.ȆBO杀)I)++XT~ "bkZ^M]|TJrE3EfBlءyV$MMIV#nĵM^!݉|F`B)>z /Ar$IGthe4MT(_G+R*AF|<26Mk[C+sAܺm,X!H I7lhF\-< zB.T iZC\<_ }(odQl!& p.ep\Z/q^oSalLio[ 2G9Cڂ$k" Y)ʏ4Iֶt? ni0ɥ*nG3Bj̎P:,SDVIл˓ o^Sg2Dz2QJuQ.JQXKr+  ]%e@&!MA*+2)[^4dx8fbXN)? OW(҈;A7COc'Zl ICԟi!ZK$0 8B!EW$MVږob kS -$( n?v62}ael[ko`[.ծ:`;t*ڸ]{ _>2mʸ5/*2Oh΋ cuEa/mld5yf_ہ+|JhΊ:￶Uv;{c"6Y[=omkkڒqЁ'F7G]XJϚtG3 ^RX!E-ʳaЌo4|$\cMK.18 tb &ɘ`7ST2i 1& Վ6ПAuR&m4p6D<Θ'M+&b;[En)]/R 疪fKd߶DfV%i5 `JofyI8$zˑIмկதL!RNMNmI;HB0̈́3*_R6mzƓ^|xh.9+4ޗ%tFqn3mmmmmmmmm~1-a s]Tbr%F0$Ao~3 URY~^n@=8ՆJ&BV/ɵ܈T%cqa_j^j˹Ë\&="AMLB2DV*E<Oߝ6"ơoV`!qv M+tCc89#10k$F1I&Q}.gVwJ@v>A*Od^tqyV½M.EfJ,H&)c;tat*v\"2 taw[0ρ6&S)S0 u8TSN8ٖ)My0?w &#5u6K6sF/>6zeCGն x<֢jSZy2t|)zэ)4"YW7"DVtut ;U9+s^en2OѦFQD7[y+^A _/E ㌝AHq`j}b[nS6_4Ua;.WX/ 4/2)pabmwQ?@QR.} <*5XYxh2`wU;@1ʻ bUo6˅[0{^eH DkxgaPO{Hq8C01)F$bIm@ǹ 2)mO>y&(s =3s&s |'^Hj,ب +Z?2%Y!\ؤ S-쨈ްZXQjÔ:{͹%V}y8)mWL⥈8g)=W^~nʍ\0a5 p{(,v -ZQЊ Zhj-*)3ïnK@i9ƴ27v,2 %}$tQªL6lh51!R-q{@;3P@][[[[[[[[[2d :(N-vD.}j%ۚҿ"GkFX3uD8N6>.o$ -F _)Kv2}+sH'Ir0QG%ōR[AXC}ֶ)[ԥ SU{#Ib/~G } Ԁ6"A#C|_nџi`7 M LS.=7%<apmAT9,=JT>ʪ؛Ŝs [YAoTz?_h^ޱiNEC=˻`0.pRFFJ&h]@ڀI0zP9dT$v'v9Te)2-5-OKT*בeFPE۞:$<ɝ8k_G@v%@R1Qu&j?ׁ GFUpSNu]@k:`,/ÅVg Kz/&ٸn{vmԄ|}4ݗoD5ͺr1T7 =q|2²KzAؐ'R]`6y I[^+0L/oL ?T)vsmmm[0=3h&3TwOP2OTeu O}SqhDWFyF  ƺ3%(u'ߠ:&ȷ9Tw9fzeo .vάGUW]3]„W576(d%6e qt.&7B5΋z&fIr9B7-gj&4k-m,^/?kS.g9oⳏ=TĒw7{5Hehj G*>Ӑ1N8? s{;g>m(Siڛ*bg-M۹l24-iV w˚K;ޓP1q\ikkkkkkkkk)u.(rIٜg<L}vAr |nI^,kn" .=^Gy5mKvٱִ^[lZFʳ=*-K ŧ<|{QH[:6Q Zz\{8I5*Qq O͸G7X'xL j V0}_哠 r0 /X#iK(Moz9߰l(~pOa(8y&c:j5yea/ M!5ؼR 7v&%A$#[x4uWHn,C[1gMBШ$ρtd Hk%CZi}qʫ(L`wyT7~$hTG[@FjAOd$1`=@[>H`eV2{?j-ݥ\0Dp \MEQ +"G30s~u}{padδ$S\Ei:Èf,. Gj!HVBtw0&<Gaj=&Fsn. BVJZ$vg 8_ަ zSV-oGXT$&fx ҍc(7noR_\(m:|[ߪxmMpӀC߈=-ʰ1&,??́ƻ (J*<MTG:?]i = t@vӁ&(x~3nvkG !߅q5PoO>y#RIJ`C gVؙV"a)0D4zv#^Dx2)I#8B^'w,Wkq-QeLf YbASp[XmEfskSJW=BK):K""`MTbU|3r]o(i~K :Gw|ȊRQ,]B ur B-צYĒttri钖g]E!G7\s9Yjϕ5a|qLșWS&G$%G2(mmmmmmmmmm1a7*"2t,MP+u`MEZu8Kv쾒*,đd4]c%O+]{xhq9ȫe >v63h]v 8HT#c]4ֶe=r|y/ JL'y&G#/#& e_@<`=* Vw޹y$eaay3-r^Fo?|փ-j/=49ve01 i ׸)[?(HWd Sp3я~Q w69ji3ns4{5j;vmFGG9!=%5O|7 e-}>jLݥs¦KK? `nyMz(% 8If*Q|,>r%//-:! @\d̍o_OqQMIOXe"(%QtՐboZ2䢛 3CULHjXh"ڄcY%M5l>er+ۺnmЋi qTe fSVhNAZT9vܺ +8Q2R̀vЪc3@x & _8=L15H`9Tܜ|W;(n<N9`% W;ƍHIX=OZ3vLL|UGj*NCBrW+??s޽f('{YX-P )F(F{_1üzxb[ß<,Ztf$x|q1yf9„jcE4zYx$k!ǘDWvxس8MY~bO' ikVnN@ ǟTX_3 jWO$f1t n!mmmmmmmmmFyjub?ᶾ8WxL" zl s ? 9j{*V$)Т0"d_'urY.A+~)%A(| J)Ũ 枀kՀZC\&$\TmQ8P u].?)pyV͋wG$CMG9a%vn[U\B{4J o*ۭiObN)AӚP8o+dZ|QҺ4*h6Tz7!Ӻ<< ˢXo9 =ƧXŵUp$~hm<֔~rq%1Ay7ė<_?)j,cn/U)Ƥ hRrk3Fryi+ktO#DƒIh o6ZUzT[[[[[[[[۾\#17"2#ap8)Y,2ȲFD3hT> ( Ղ8["Mml+[)wa_Vɯ5*NÓ|E}mO<8a) ڮB\6م3(7QHBš'? F(v'h.aYa6?NRȌw 8 i-Q sKA ,8əJ4I8Hj5+ +h@ 074b[YpH"GccCܝEy֓+CeU= [fTFY^pf\s }vkӨ29^EΪ@7*:"3ZH8tQJ=4$Q Bu:{~󴎙Cpx>`ᆦu: ʣtAAzkФ gG)mY T(;kѧc0hz/Β̲Pkƴq10-a/KP5ڌλ2_Btմ}.Lg7я~ooտ }OynXZC[ZR&H&+DS‚ڶwSp 368o/^'h8X涉Un9rK9OP`,[Uԧ>YzFl,)0;;ݢ"[¦#k oo,i0!M:,1#q1[T! X@`@Gh"x8/ Z;Q.Q\  %uJB;dĀ;A*5TqQ_CPr%mYs2tWtgcEEߏvO|C)he偩PEZN,6ݨu\p_M%q>À~!Xܽ;<^(O ){"0 &h )HB7yTy@F3a'Urh#pB].Elye/9ʹ*\i}Nwh֢"M&(BQڏ"3@̱,g:I 5aР9[g˕YiET;<֐G>r[~/pA0{جԤH J# |Q ^^_I~=Ԇ(#/fUߨnGl]It@` bIDH,K\}NxuJlUA=fg1F=dB"5ղ*' #^-J:[y~#~j)[=6f@^ϬӬMF?K;!khMkS>fGCn4ub - *M {@D'Ԯ| `mmmmmmmmmfnc %eV(;% `Aֲ2 I _ jb$_J G46-|Ĉ'IjsoU'}4C^i`?`G׿.韆C=T-R$i|!mm;s-гeJ7n;N1g?qɚ73HE.FbZ"]k>ʡ{(A O8#K+)wadn02R&՜bp ۿL=IO"i*Qy6,3B팰FL< IZз̹ͭ7"qK/~75Tĥ(p!5GX>3pZb7L>BŸ- c0)7k_~h- Z튇C׋qMfxG W83aG`WsmaNB= :[uY[{/ 0"fO{[NE<`&=F~k'BӻYp72^~#eyNM<ڪO6q3s+e97f3tf.r /4} kGKH5͖_V+w:{(Q~Ě9i1jyze}_E@@8t ≚D7x{Zvqy :}Z"bSTR'ܾvf}/&E3?n>IpD( %i 禇B xj8ë;LPpiHP|,96 u#x[w+ҥ oN8W:Ge(Ynǩ;jȅ3q g @X~PcDj9(81I+C=IbƧ>+'|$>'~'f[p@W@@TwQp)%{_ͻ3׻s0n ƿ4Mr~o|qUWiVF,)5ox4ThetSmƯ32đn~o>^:v?a;DJ؜ Ykൊ ̖E/.'+LbEUw`aA$O/Mֻ?:$$MГ[0F\ŇYh^&xV( }k et@g<#/2B [y0Vasl_Ti(S&eXӂayu5Hz9E2+eF"ŒNXg&evuq5#'2U9TMn^"KbO4<Z dZ$ktԊԗ!y!j\e38˙/ \o <(K:v+ܪW+Vhуd[[[[[[[[ֲۭ.9!@NgljH7n -t>Q׮j Rs-Q+pj&@p = L 'L4E?ƛOտrP.޷HO4I#7^r%uw]@.A0gPIS/'3tFc"mmcŊh8bEs.gTmsϨɭT$:Aimd:,138Φ`^3;Ltf=wtc9lM:8+|qO|}ѦŻ4T-=aAֳX1;-]gk }"Ғ M+ eE)KFpa 2#n=-QeضwlMvHRi*ˁ9H#We CA\#0T ^e+JW.~ ox[Od7qjVm P̴!n5 bc4р46N~ Ub#J/Xj֒genֈuoV59Lj%Wr&u"8L/6Pk^L9\t]-xЃT8RdD3&[Mi[[:g$.$}I'AHF?~;@cgIlBq|FQmDK(,BNpQ#c(*|ER'yR^#dkrڞ?! wHϵ,Cŗ"0E G>Th]7FLu܂k5\ȫ́e#R,֔]P.b:Wncu":>2?V""}k)Pf<بN)sgq$`% |&~-2&mmkkx'ʧCP賞ַ_6\}O)I0h``]z(RdavUSeG}믆ތGq;`tۥG5AM|2$${eV5`vY=4rXRr{I?ЛqG(AkT9Y{x,ɌN0/b*yQ^|Ug^=u6 >Ϭk(ƨ  *aJ3N[QԔI!hucBoTUFd̴Oc~+j{׿,k,ntݵVȖA?^MDh}S; XAјçk2-s,(ae־,~l.ЖK᮶sAI"(| oR KcMR:W8,%5;i,՟mEwxx#RAίykliy(芮u9Ю>)U}⌜6dqT22>&jd*X/߼)6"װ0;Fv MȈ#6 Y Qj%@K*P/(LjQ~!u^e?q YCE rAckố$Gߖ%8wߒ~+9K4j34D[G^Ky77ty[r)]/ev3-;C \qzMdOzғH lXD@<%&;jP0_d; #F5uԈ BaP7JZq3M-_/|!'u=!.=㷌 vG;,:W4 eW\Q~#kHks& cVt?F9Z`oșA|Èx|f&ԓ'ڢL3k%CݪF216*@妸~}+sY-ݱM QQ;/JbncA :2: !c:j!>|+~NBXds^NI$s;|$; {֔oQ$St#7E$ܟ@E0VvVw;U;.kz$"Bw`i@"DRB7=93hkkۮmvkmXWva3DviJ$xYg8ҩm)*7RlG3J2UPQLjQ@JAr)O5E𲆵H+Еx_YĿկ =ژ>Sr#qZ/\]5r+yz޿:_ȋ92{4JYnQ-hֳ4Q7WRyMi$OWz.f6ϗ v9쳥¼o`csMQV>YG&jLԳh'"R; ۨ '>6DYQ %~p#Q ܙEٓ]N[[ qȃm]zW? [ =\b'TA[k) lQ.b #p1b,OUdKyzn5rX[xL4 .A3zM򖷨,)Z]Rņe"Z ԫ6ԏӛRYf>]rѓxY }AL>'^sr.'D-!tsϥΌ5%8r+?mQhR^.fؔo?zGq z Eb:_pПbnz{Rn zMm5VMU#@Q}rQQpD 幆nqyrnƓF==9i.yg Ѳӳ napv_mmmmmmmmY v#Iee5imB2tpY{45l9p?XJ>v$ H!Bg]p j ) =%uߜ( {Qyemm޶yjl(sq'<ѣ3r턳Kpu n7ys0_}Ղy~^aAHLFVRc@cK>oC-:/>&H1Zp&m-}2@2W  EJpė(ysS_se)Qwb@!uQ W`٪J,ҘwKfm;g͓3RxU5q.JLFWi[s >ڿ5@+賦eE3gk+&iIQ6QfUE$/eSI`}ҶݖV^W0Yb<|Hx}1sB @,?1GlsH3`0B"1f=1^$ tcA2{hxT `MpXV @U&dvGKUW{p7ՁIpsyCBzJ 1pZF+A"_ E9]ULNH/})f(OFo ItDh{L&lwY@mqٚ7]KăF!ǞJbEޱFWy`8UPcNB=rB͋(f6ԬcC k4+4Qs5J!86F%`F9҉'I @Nq>N i!.3pmmף,!bOkkkkkkkkk !K}-p#F"Xڰ Jj::'tf+rT y?"I(R'ۼmmm Plҕq@FÚp "@u9.X'&~.f[yr@^{F'י"BA6Z=Ӛ vAQzuP,:>iHDe KZEy *f<\'P]T{y /DF[%3?3iLws \95+h#B^!uC݁X{ܼyǒђ+0pÙxYug ]bjY;穵*vYm;<9rptQm5qO biqJǯ$f?GH [oV8D@(iO~'~.3| CJ]rIwnE *feb1춶Նu!L0;]LMf9{l6B\ (>QPM4}IH٦w6ϲlm]6v:>-7)́a ciFPXgw=>c:uFۨK;\*ob@@l0u9#$[A_[J6 %`z?x|P *Eh Zl80f]O d҆Pv+&G̿ eخ(`Q 8΂Å,؜O`, HC?mk(܂Gg]DeOsK 26v*ȟa>3dIJ.WnJ%Q`h4,ZS]x+_ e(^2a蒺P쩗Ԧ*& WG=Ձ+a}Oߢ6|<7-S3~$z/fz&@s~a `2-9t3FSUs΍9\C@rN:ÝËnm+<2$3&~oR^6iTZAr#jqgTpgGJ +Zb8ͽq~nT#?я~4>>m39к_QjPME;%D32/ڃhR<7qSLt9?N9?$ KgDLޢ6{u}sK['#~r6n[X':{#aM]Ёv!lc1\J~2BIva>|?@( f1UJ0(,WO~2I}K+"!/4 nF DZ@{7eO]~{#TG?/(%#$sfdFʏ5UY^34 GǠg%~έԼƠ6>l7Qo!!*рLو='m5;]jnKTIįhBXXjƋʱݠGsU:ȉC2*Ў~w%K1^+yk:'k.S;k^GK͏U;|=Ƿ!ڼur. gy&-n mmmmmmmmm2Rqc Ö')ōxWUzH=+a-lG?#e#Ԧq#a0D7ިs43/~]5qDљ6>f)c9n׾xUL+YJͰ1yBEQ* Hǎ-,-;]#D50t4X+ܢ$0b2 Nd6ʞ@G*D:cR:Ns@ F #߹ >4$.JF-ʘdl.KaAoCu3ߖ]@m.Zw1^IO!@#8 0:gaа&&Oj6wKɜ2D[_a"i#8<Θrǖzܜ0(&"P+榠p/mmmmmmmmmMpO>kVq9#&vхv!XA^_r%(+T#y6УfPP>0h?"Rv.}+jT)ߛM62 pX3c?)RI1 0!D*jF")ofIF}Jbag 21@ L֛kԻ3J۱1YL4` #!q6p0沓.f/A9O$43=ꨣ%eРd07hH|4+O=\ɧ7vX<*o Gzs Lժ2S@i#w>'5Q;$s9VǬ>KZ. m-M3'$쫻H<@G9cŐjK_J~_\VFSg5̄58eSrtCʖBږVw }8ׄDDUCʱA|\SDر&ّ@%f̼<} ;|D31CM"؞&q` °tBj^\d6ZML:CvtN 6s΁$wq~qcI߈9)@%vH"2y7yo`ӋBXp W:'T!#:\.O6$%Aڣ@{Nǹ7{>Y*+p0t7&It]#]h H, P(@["7w:8@+0)q=33 s8t!`CWp=qg4>^<sn@-s JlY` +g rlK!-aA h/km;`zQ91Z!#?YXiB5mYs#Dc]8TSfAE5x3&~XV` 8$<[^ VMIC) }ŭ \#eMQ'ben5ަ %c7|)o/I,Q/:crQ 7eF՛/T=$OgƜ^÷-_N$,hB-{$UB٤,OZ_|1r; =򑏜g"Q c;w8 "Z6 z.1LsНAqɘJ(жyc@%Q&ĔcM A7aքݹ-2ٓrsԀN 6YHmz4&xгgn?D[[[[[[[[.V?aMi2;$袋F"lŖ!e,3FXe=߆#FQEjXf)T$XUH+SB^qL$Y O{E3`G |fj3,ԀkS~?s*GD^QbFRf޳@qEX|rO.|Xaj!+\K]]R:Qi,FT|29_Pe!'F(H Zw 6 CFǀϜ5_Y;VOӝik)rr$ fS9K$t\&ڿ֮yf}bGK7O F}Y؁aGqbQlX\wtm~D=8>1ٝP35\4t@QAXғx8;u@+NaD2pS5Y-{G5fErbFҬAY&¸8gQV!Lܑ)g?dqM4 9$d6&#XƲC!biA/Zp?ʸ7~f"\ fR`Ǧ5b͋x1g`=: &tnp=a ? & A'? +"&>$6+-j!H(!u&,P,df뎵B"cx, }f|ӟVW\ 86~gP$>AZ&5P=é;KrxZ 0UJ4[}}ڃc jF49 @y02ox$hBw &[-մ.yvj^RFFLUwW@[A(X0m;ǴG<Zg3 t9ZʩVҷMF.jK]O35 gL8r~>.@'rfkq؂5nֹ)$bdMiIZa˚h\>4\2$hlaNFn- 6,V%e<1ߴij\btm|UMA;᪫&3FT_rFeSbnNdq$!g8(+]mmmmmmmmm%X:*~N>iv/mR"R~bW'rFGӹo{ۨpH A({Ok` PVq6;I|9H#4G|}<ƐwHloۑ@x)Ch43oxW\ڤ4Ah6iYey@9.3j5_3*fzZA7ьM7V!^dlkkkkkkkkmJ 6g)\8dYru{thkۖXpDi:/Q=@'s~{S ܌T5a K9y$<@̧36L JNX:Nu 'EuSPblW] z/| 1X{8sl <//@A;pX&0/Hy#xs^sB5KR%HG`'s&0ʤkN ]jo ~а[劋n:ãA@ l$3!q6Ř>R1';ʰjwsb{cvߩfrK`坓>KYNhfŇcJ7vpuzp\l [\w'Ub\ڦ$KnEC6Lr!;VSp(X;j e~p[£IUžGY]=*qOƝaRs  ۃU)˟?䇰I`#f%s3eRX!Lվm3'9:pvޓnynࡵ"8s5=I~yEV&vL{8k4oceL ݈`JG!W0j!Wڽ#!QY XJqHTmXy/~+9 > ŀFS Ac"${Pcx??7طkZSbx{ 6 nYRE \Xx*;#ani:n\g : H֥ڶ=v'fm"c4r Kb `4v`7j^7D7Sb.Y_W+\pqLdž `ag,a[ xR0;ĒURb#v<zXB{xLjYJ,%cg̛">㡭߿Ĩ?G lNʱ0SPh$|   't6ov./] ٿa.۰kzqiY!Xv* ,6gYE^.|aQ` @]*j x K1J1챹 GrWP*( ue ;X@_W J4! lG(VN+ ”5mM<<8hwhHփzGrOkmo{h,"q1vT?5E[S͝+Uގms[NwX%8v4 us#8&j9i$lFWF+0/4 JbL^@޲=,PnekgS=FE% ~ 9ڲ=!hCq$9׀GG4cvO<_M"Z:JLhDOBz'_xD[i4[mUj{GgVjVEs3 =$W(!j+p%!h RkdUm$21;E-5t&-?fRm5'*i$;<쥠ۤMkO žp-j\Dѡ`ḪfVQH-t\+1ݥ=HI6>]O¢BQh=Zq1ŋQ~XO*7~E6PjpMEi˭KwGlό#^ fR8 q>i^ڠ4CYy'MHTeX]6ab0j<`1>O(jr(f5OLvF#I]BQ1ݟwx 4LCōu7:-~T[_ ?^ HkD3 8/nӼyhü$" ZVь%1dp g!h )ꣻbMJ5`^>56:oi#pԝpHp/*Wҍ& JՊWt5b <3 *恹?e:&zNA'VquWAvL1~Ms@1ݡJ R 35zN#[ܥ5jfNТVc9&^.Iq3&L?Q8v8ȖВ]8|ɑ"ѥ+ē=zˬ=! `$;PfC1̛\8 N27.]mmmmmmmmmmm;GzMKN?& -$'_>tsӸpu] VF`w+h)'@͛h;+xWJH +[qxQbBL}9eg8IX? 7JfUd6b Tl;$VR, >Ҝ!½Q&fPתMʣ@lF jERl@7 Z`Y谛@zZ$&{Y?(5i٫&W8T ^˄)5e=wvehƚ. :*N5LbV9E=:iPP#|tAg.ocԟG}>n: /%"cv3OR&ˌ-kRc GJBSS79'E$@ tƄD6Az82'"CSW΂TwgL]qy$\QH0_GI6xٜ epA{fl.Q ha FTd͆8yjDJ/3qF6ïiwiA}7=(1s7ƫBCіL /,41*O]!Cx!/b{c^{-h)|5`0 M ?gyFH ($="Zpf=%Z nLn'0n{z;vљLGv`[! F&<`.az[趢q ;e5FCdVy/3H3DԲ.q0T<a s+> #< 0:̄b4F!zKВ)+Or9tWSE67i}TMt(nk]R^srQ&끴}Kac\TV">sܒqlfCDB'bmkkkkkkkkkk`cJ4ƋD 3e˰9-n6(?DRFpCF =ARmn'fm\ N?NɆ*B^ Sq(]H.MYYF5 s\|bV~7o@b-twA5hYaYD LDE/Й J2 +4x1g8@WBu ƣUh$4j~I@m b?+MJBF\aF?iٜOBphhڶ2ji-襣b8KVSsI6ۀِՖr/1l KfR2)3D? ]n"gU_#94g4 x0#GƐa)ePEa1f:F-o$PY3Hϙ ҹ\5u7C~g7{*( _U<P ;PwR!?0 5Nǖ4 \IFAM{}nݕV]fK> 7(Z+2.V<(*]mmmmmmmmmmmFP,[p[Y`HtTvV҆ʟ2Hc';8J.PR)g'NBv슃Ael !b9ѱ/ ,w14z:0h^W cOrЯlxyRt) >>FC$.e/ ymwsxC| Ɣ+Ƞ^j0SW@m]@ 2דDOu(m(QAfvc]T8g.#Y( zfO?J@=p|W jBQe)*]794< N4gM6vn `9\TCE =G4 J. BМ mxTܦ-s͛H9 zG|TTF',ϫ͑/;h VJ'7!Oq Wm"GP:7CVc!ɤH6q["+_JC X97j?.YJ [#t@31@o.T:U/7s ^~Y刐͛KL)'b8r"*LKHѸD{m0,h="8% d2jFͳJتǿ, L%f. )ud&nY͍oRBx]W_9m-'h lҍ[8fqbKE= `)P%{ 8`g WgJRgؚh5V% D =ID v Y.ˊ*>9OfWq@Ȏ8_hV`<\y\x|.b(pdn/ݨo' n37П<(wУ)`%%_+ج1 +Sa~0zЊ|;Լ0˯1P,O3TCxeD}.'h^BFKgx&_IAcFiI綷%wdr7tFBR5 ֞yxr \Q]] I:yMto̶xez8i?,(Š[\)X/67g̓ 5ObTz-ԦZ :EOěoq'gt, Ti:h k#!/M Ο>oE ^am8HБΈ3a7R-M2 -ffo4|(ۑr @-'tS\:pE1pH|ӟvo~j*HAsߒ4r]h]J ͱ %KkA!Ծh~NV-*GUYqO>Nes: ݵved(<1  b&ˈҗ>hihbmS80A{!;[V*0hlG8e(uǶ(IzBU#@iGZ$J:Bg7 UfSZ|N'%ZPƓz+am,ÄG3ʕvhtz`N: V#|Q-p %'+Гov:vej&]9KQ}(3% 6ԭkw[ U=O9h F*r{! C<> j27:Cu!ekE=Ȟ6ve.LtFʋP,vmĉ fkX‹Kы|gΩrTL'> U˿ˢeeQ0x&RlDY ^}xBG2XT#xDR9qג35Gzn~mnEaޟ%>{XA@+j'r%pd)W&7LY^Ӈ>$,X#6>o5 IqKix_p(: =tJa儰`0+Y÷変RB㵂>kjꫯҗD'V$WmV=&)Y4|"&^w"!3V(>Vk~}zzkkkkkkkkkk;p NŽop#8LH|A@IL# ƶ$zJmLDqɔDŽ;٢=vhE$wx*KY̲Q:(ʤdK˪,*%P>7n;`XBzA7tӓduåx:/vvIOldG Ce#L(Gm1FhgNZ16-!jʓR* B+E] * Ӻ 4I6ry`T@'ּey4="y&o]< >2'A+V <@2cbsAreYPV*"kyѵSeJ HqR*FgyrtŕM-Z,N<:j5PcG52 n{^ئ.lkGR*C{ќF>n^J~t*6'(Q'GHZ?l9=/ZdMIz,W  H'?#xK?jOZ^Ԁ]^+v".3%+6mE*_tPsfOCur!7H4 &ۖF޷yLG~- \fUљ@;TVSׯ@M܁ԧoCV2Y=m~ٴd rE/j}[ = ħ!8k> A9>2ɻb,W~UQR%t`r4Ef@hќ++;).Xfe8rm?*%3uuF[Eֶ_nZMI_] ?kuQj{bo^$//<μF;r[$'c+PTv}Xu3&, tJdFCz"ڵd|#}NXrp;Fݧr)@'0N(ӄz趠b5@],$eZ^N$u`h 2U{x~јNbM(mE)&K0o| mp>Fn(kF5B`qLvCQflvUML 0M7X%?Zr#J5vqkU 6mmmmmmmmmmƦ ^}]2PoKU'ܮ"VZ?_ f}u_ǻ/X?^'ÛË=Q װ?tVed@01]WU_%kBd 8|XRł0J4;N[!EX:H\:J&(_[_]`|E^] 9JٶO{6d8Hd4H:vj&gXsI#3Bza;#Om UzFlSFxbah_ >X4qp "ru{]q<(s9ǧYB "/|o/A@4<>s~XFcN#+1^o8Ba`BFN*]rv+H-6d Z%y1rGlX-wo(x˻y"Qv( O~6 A&&?@IK4na/ hXHRly mml!:u z`> ڠPяl凓sh쓟/]U8SPqP<!.4j`:((òKd\ ZˏL$l`߇*481+b:t%} 6]K(E4BE9|3|3ؾtxC>s:m ` 5E%0*Ϥ ǨiV12Kpe!>͐ͣv.CEɺE/ą=' sG8ןgG>O[D1V?y t[t 1PM~o 0K$')3+ǂV,5>2/կJ3ˏ|#(u ܗP4+}se[З5FQ~ŸW& &0"]dJ@iۛVZ@'m^!3#ߩLvv-Z/Fy`]62i֤OZN`[,Rq+u'N@<$!r13!DOTH݁:Y(}J\,Z\v+kX0F[ҨGb+K5ia0b$P4xV8 R?ʌƤ6cbڬ̌@O3&{1F5y_4gEj!AI@䨄-]htPD/<@iPsB@o Ya*7 ͍qEW+;GT-jj3Ж4FYML/^cHjuo}Fvmmmmmmmmmm|(TbDri. [$]-q3s7(ޔᅇ?]{B")׃ĩPS^5SIGY۱k! ?|9:~!o{N}P bU8/|4gg:K$l;g3&Eqo}[ xN[UVs궶c??~RT\~}a+H2p R}{O:Ym{ݐ 7pR(cr7a$Ȼ[BBit46 cCgL.;yj&Mb!TI P0D6R%~AXa*9ug(8h>ϧ>){$ǞQJ͎SQ>9 \Dy^ u7SIZ#-2ϺEv#NjcѰbrt;Q̶=eYx≀NRh2Vp6x^66+,Ecu1H|y g|}#h8gfφ4&PAA`b[eJ# r]SAݲGa"8y]6°Ș!%<`& PwqGAe8?2)tޭedL#P jԧ>1l3#T-DtesX~m{_A[=j w ƇŷJd[(2a}O nES}~} Aebab >Rd5j(Fp#ԆX8Cjs=i~Bţ`TiWs3-$?qLvǞov Y.{G)zDmmmmmmmmmmUz"8)R+^dC?peH6u6 qb`|y.u~.ۧ>ye }EUFd=z/f+-~4o8C7Ԃk}fiXKǤ~@|# qj3`]lIjAt >'= hO=hU)m"e@jzd4(2%fg2Mod;Éf$=cJ|^'~bI1Gt'`rd^xS``2[cS<;9(`EZ} 3!`K5+FNN-g0iH:1jUWtRB(Ϝ7@0${m /!!զ,m^&U' A_Wʯ.60Ohr6p\SU)O=M fA3vOQCfKeqviˀ)v$hE/Þ% s7 }T)WYg#O<;$a]x I~H $zp9t`wHgދUdA[[[[[[[[[[۪by{^dS?S&DMoCJtlT`+(3{d-m9#D`ȀbfXclm3ni+0w'.hH& [ X'llg(\Gd9ut@Qw2*)kG&F1aR[r Xg<4!B1nrcg xZJ%y\@#)!:=, bg!AǢ7kF*}\EAs>GDe:ꨓN:Iҁ-$B g> 1kuM7_e7hhs":OK&u4Ɗsʗf%dyI j́׾y9L SOE9xCJ٬M"HG/hK>dC}(B\fX~%Mm ,F%1$>Ćgg^_AO}S,!8ocvm"]?!6K(T nv#y1˥F,㶶-LC%DT!HMFߥh#t&bG؝.'H~J_ '#׽M[Asx#EV(Px%m%k3Nz,RbV(V 1 e@I (zG9"8L27LdJေ8=;/cџ:N*gkܴQ%#*ĮiK,@FK,\8VlAВd4&DAL+֪1TvaY O~$;=IyqHLb6+b RT.m Qollm8sl`6<;wVV#Ǝ05CC/H Nw0=ɡ3F+* J$ߤ6괵mF~% XNP" Vƹz{$A1t5$Pl #|&kZ_8X'4-|l$i4Sq5]][d5w gJ r%#xQ%X_I끰0kҁ`@ndjTѬ/yfqE(棊}x0z'1%(9# 9_Jaʾ_ˢ? 6zVQJaƨ1#t\/AU$<9ϩwv׻"kֶ/s1A m\7i|_E}"Aq/EVֶo&"Ap~?^М070rAD WZ<%ӄ$_1? j|A=\}Fuuԁ-Ȑ} Z4UR1v#`{ĭnE@jr L@1ZgPRq!c4Cן" >YA90'3)NrIOAeY^p8@j  }H .Eږl%#$ۿ6 itD|gw!A}zv]mmm;!bE{~ ӳ$;?HT!th IN !74WxtH!M'D Dٜ|gPoc^&IWRT%bͳ54\`hd BE j"XϋR ,I>1EkzCuJK C$~o[b&Wa nCue1 n<('yܚ:ǂxN \%YU\.j@G~v8._xᅳA‱?_gg-eei3c?Jq}邤SԚ(0:&'YEW쥣"@qdr[CSl?y~d,MftqKX6okk-8$$WYMd`"7hbbR )忽Y/:Ẍ0 ΀N2Oiv9~wo} N KvA\[z-oy dn˙!k\qHbZ1^ǥ^ z2h~:L׋]A覌d Os, r0JA_ڛtA^TqZKveh$(G>6}ŝ3DcRk:znz#) C!*HYFmg[[[[[f44"xrfEGtKp{ o}{@yz܃\s \O%B37K\B}bsr}'Ą"ږ 1ax;Jȏ[E@_K)OO`z7x~"y{zXB[vo۱X|#q榛nƊ>7> mL|Xr%S ?˜οh V'fd&kU-J*5yM^Kb~z`w[[[[[[[[[Ԩ6 m˖Oq0 A> AN,L' haLbrt"mb㙪GFUJ!kP<%_48B8ebǁS Q]Jm^M|N7Ne]VU@QF)[Ea &?$~]EyRtׂqw~ }Moz>q bh_p1U| `2`}EyŒWASA_WzЋ>uO3~3RDaChdd\mq{PgguXcI.L+`:.>yF5y};77J}{Ke]$SLvz&-8rn@0OKظor V',߅$@@iQدKO>Yc~k_[5 (OM6ZzЫzp*>J˹p?G?Rˊ D oAϚ7 2+p0Qs3DP2sZ`/?SEACd)5v;U۠ɎGМjɴ*XA˹ x&%ֱ?{\|@\8 ]FQ+IC(Cbv)0:+|TA_poqc :c=O}y'xUzyk\[æw"JkfD A3/F&[3V4TQ--&JuL'ГJtr28\ {GË;V@yZܠ< `c{€yII8L Pnc>}h+kX ZB`yPԢBOx 7zipy/GbEӺ׽u@vɟ+ywEWdA=&RW\1hoXy<u'\#够/"] Gr Y~׻E!ZSDՇDc+EJ M@tfn)^R^+=b'?E!y䑷mȆpwqIWۡJ+ p!U 3'eSMU˾jx-n (>K?Fs@쩧J/B@J09ԗ>)~0@gbEIzֳP47@Ɛe"i/ J2@: ֡4Т)*F~HEV_/p7^X2&_qRjzwLƱW]aS$Q*T =p4-|[4j\htrÕ:3C9dv v1N&e@,zIVuΏ*OjDگBW,Ѽ1{9y\Rt#|ZJc&p+^Aށ1)َK,jOj4߀/}ғGG$|ٔ!@G[~'>2g{A p=]bnYyhX3擢5%:șIrZgjrvK ;E7=+mmmmmmmmmmmmmmmmi@=0"pgSϓL_EW4n#aҟ~_m M۶fcFW->JL"D3~S} bzE(.Qr-oy U nG_z\p2 _BTe1`hM ̹EǟT,|(U%49AT\JIsDk$2?scW$- 9ZC%#@9Tg:T bzF7 mX,!AȍIhU:H' ijU@*% ⷿm>w2(ɞrK_^ꘉWN ZŸKzT>\|~ry=gnQU'=SNyԣEYI: _ g ˿_qYM7M(}CfIN͕bĄs4J}9G?Z7F}G8/cl2m] r ' o$VH磾ꞨP0, + `7GYQq )>%&|G"A$#:,e}/aή !EtB:׼5[j3YF3< VVT5/P訾xw-Z h5/bFt֘e ❌E`t/)y'$O1^_Dzjmmmmmmmmmmmmmmmm3x.M!,d?v:0Pz#dVO~Mh]bgopBv>vԈJw*gt~@:4hrCP`+&/Ew*(g#PˏWml`W2#*ԓtԌ =s% |.E!ThB ~ʇu]CC+wyw)q HcriB_{GYҸՋRƥ3t՚ڋ\ A~'rYRڶfx3`gH0P8II0M7x*klA )~W͎* zы^( z V'ze·I:rAr~nw; , }tf&9)hÀOGy$٠Ҿ7+r[I-~ ZAX7M)sy"Χv7\ eF'ӟt?? Pܰサ V$!)ÅS2:"0=~?y׿ETw^Ґ~0̬eֱ(A!CDCԷ`%DR&:S+7 (Bo}k ?Lv9jI3@-@KWաVȍNc&c^]zt;dx+c4G3N@|(_ w]TC{Ւc0-x삧~z,!mv>(a4głOB+; <j@jR =xhJ4g^G~d:qsHEO5`D^WySxe(F_iچ׉6I!w=Ji.VX#iwR:¬0GT/GYQ':zA?gTA 34o~P'x≳A\q~ /pӞП.:gz}{4X6V9krMk~w/b;k=ZSL(1JZl(05EK@ny]PEF'|gA_W݂/{q\׾=ggjs74$Ɋ! O8 .mG'vAK]I~(L Ķ-Xw; 6׉LB~! $pIЫ/T~1Fj#Sg$C|凘gtjkkkkkkkkkkkkkkkkۊ G$P8wƌ^[3 PC"{sOQ~^jy   (ki\F1Ds>X@! >ARb=6%-6{k&~P:,@ҳ9vNg_z&wAd1N>dE`Yx4f#jLw3ߒqďu8<Ѓ}$j:0XZ)C,{}M e^nZg`i:vgӃ(qQh jڶn@( W \9Tŀ$U $*z`Ov׻;8pbC5Hn2^P@ohx֯FA~_WsϡBEºQuQg}¦@sBwYΣRo# O}SzЃtUJ8]v> džt| F-sCOh2#ana S4LSt6h@ќatu@kH78KHy;b@sʊMGexN8_@2Fz0/+Y"akU\xhֶE \u OXԀ.P F7T??Lk{VZG?:CmF/EzVi՜)*ąpZtʹ%Y0ayCA @#<`#={*O x-8uT\Xj:&A‚Z428_|1<8xNP2Pb>=dc2:uy%\Pm|ˠ579Ck )^9/ ĝT, 콼#d-pҋF T_s[ .יb/@s@ ) jr@`tN0ֶm{ωukDsP8dJ>p ^)mS2>Z=#pNU,/JXF9eҪ,xom]>k5(j3?3T Iփ0ajv o DNg*h})@XrIU` '%$$_5&A;dLUh$gqT:X?=|3$&28pN;7ȾnJ&!?aպ߂|+IsH>Om$~w!,p0褬~KgSCOƭ6Pb2cct=ßɟD!]:D/BЃ p֠vm#ڶ~~쵯}-h 1@N8Z C E }h t*$sڋpٟS.>:t$ fj0d@e W[:8;1{EWl)yTJ9iG 7gb|7,~P#! v3jw[@x1uk* DKn<>@p bv 0gyk ~/|!:w>1ߛ ߂AӒ0@+8P>)Ii5b7Z@cK|D/FmF.>s@ϽW|<=mK>O!a7@lڬO xgHGP[A]` Ox ^AT #ᖎlХKE0ARQVH(-_T3@4B75 o}[hѿ{GwzhWVq@r2Fu1,ۏ-ʍD`sn0O&|*kx6mmmmmmmmmmmmmmmml%HK$TC3O`eV) ȦBH91K@b"0QHd[9.bX9H' >EMjjdp t,jaߪ2|5 OIgȞ'3!F3]}AoaPDSg54~u@|_8|OjV+`ook6ĩAϞ ػӞvu^An˹R/'idgs(-MZ0ہ5cm TikkkkkkkkkkqRT=C1&tZ zI-e b7/u"Յ>rQ?BAL0dҟRyFu*q$_pG&28?13xO9$&OAj!r-Pњ-(dBbfIFFFqM۷oe%փx ,Ҥp`F&o[oE_uUH @ H̄&21:/PS Fv~+hp$sd3a*?#ľ0~ᄕsԴ\—󈈈Igy|٤2t:+MZl 1C"Ic[lȻ4!=Kʣ!弡9b,hHW:I+`l!+=GwߍH1$L=` YJ2=~;< p H'Is dO*/yCbѠɔ@;fJ Y[:J4(hm+2vi#(cd^b%dѝ@F\r߲&vi4nș !U$@4V=f2.:yyqhөeRnv, #]6$"qꐀ?2t6 Y$C h;$ctMײ m i=E -/Ԉ]sVKJ2A\wrKd)8Y.(*0#<.ᛮ21z1*=fTVoѢeRnpC3IPOF)KVt!4x9zn޼9觟~:a, 'axf]Ϩ)<jB2A@h&$rdΌ::Ęs9=Gps,":!2L@-!\Y],kKgsF4<߿ySs( ෸㌑0jԨlC6{!6r^U dlp  x!Btec Y3Iy. =H}M.f'.++h^Dk*#'pɞv!ЌlJ*,!BPk RlB={A$ŨKl.N-Sȵxlr8oIc*2fW/U%c0E6 b}Jzégy7^{IFrE&M71[FiAe ncw&NtMY(9#pdnz p:'݆=+-iJr10fPs-e*9X2(ݼtm"~QGM2}DNJH00bĈOrDADAQʓ򞣯6l"!Uh1EEvX&M4Ri"#n"q1Hr PZ,OptdѣGB 4n;.`4rVj"2Uh>x܁?)f=`4M":LQM_QSC;b{` )~$o5ECF%EV~Ȁ :Y,B3nll >qH~;wd: ˜0o_d l)ȋ=ߡ?`#e?G14VheBx"@3J і eCx0&h&$"$~&|:X!)ȑg]1:6*JadSQK.GLoXIAi""""""""uN/hO8%;HdF !OזY%+ꞡrJh30wh|馛P{qfY15+N] g+9 >㇥ hvٯ_?j.!4]j/wy^pF87O9-&&Y\6qBHyIl?l, (3~i:,9CU-<it'x"W^;Lg$Kj:CI:~o4ldJ@$aaOSh|ՈIa<2F0c†끸\_ 6GC8"Ff)H>L0&@Eצѣb#Hr6e0Qj/4B< #[y&| %\x#vC羈H%'qAbq%*9 CDuʫV6i$&ٻI9ᜇ598<uՕK˫HxuXV/2;"D[Jt=PQ;s9gGl޼yta0|G6E*IFt-;CюIT/;~`MR8(tɦ .x6ϦǚlU7zHt0_OjЅWuDsŮi!?9pxY?D}&8-9n0wB)Br(3s+x8 O=')Y5AkMT$/$`4c+C[:,Qfbt7x#6Н I`H_( @֐Rqnl{I'!!7s9pװN;Eb=]\a$g!oz %WT)/%;|L@淸W2%rD "MG7} lBVN3U䱉xY `Uu~ᇙ0p@@Zm :{3<:uZ~ m?"`_])9HPG(DRBr*2YzYi#GD'*Ws\"R7T(SvHx8^ jLmȺ e|-qcy&1cF '|2=dUW ݪU+)[o2TfӖY<.cD䵯0p9tm}wfQ/m!5;{,utf*J"iqtf$kn\x੧Jk 3ֈ'9!OxEDDDDDDD:aÆm?ׇz(I)ON9(6$=s8 -P޽)v򨟖-'gY% ?ENYa#)r7}W7'a 0ݖ[ny7>#ޱСCb7pcj{%ބha7#Vc^'x$ 89Sb{M`C}f΃xQ R66;2kpܸqL`l1֘;nVF'""""""""MHoGѯ_k7@ cݹ+̈ w8!{᮶jX_QH8A;FAΆ'i/N8gg^UTGmshdy0z^{K, >hJ++:*I;3RsʭW>O" \>|o :W& 11yoFu>5Y!Fҵ­5ؙw,!owͼnݺiܬY4Ybi0BU$"ɀ>묳0 \?4{ j0:묃xEvmQn-y3TTl0ky6mVX ,ϴ==,b;J &<7 ϭq8ĺۣGb s93̌lL~q]&wp/ IwN7EDDDDDDDHuu32dM7rXEjD-D,éyeko!r; A 1%Q܈o 9Q')7eYxKgʦʻVxV[mub@k/x%dqQsBF4h3nKԗ3KٿJt؄q 뮈?uҒMt|~BJxgͳv=69X>o LvdntIxiFmte5o<='G99ڜv. viԩ)妼Trf.uqit^5?qG;APNh^Fxh_̃/-@|=+2^'"""""""RZR8`tr1ǐ4!@z_' R'-eO>qefLI J~YՏϲ"EPsF?;($R\k~@#pcevWa )S)r;[q+USr<9'*O/&]>@5\O_x&O`Xg\ZEDDDDDDDJ0ϔc,g GO:OB~zG)Wgoي[ny!GX5LaYiJN yEHȋ Z@L3sIǫ oM7Qκk9昃Zy!$l};#%*3Uk^ D I&=<&|<:'OiQI,.Æ y}}oFXs5SM%H g 6@Aq@}uסQ099Y\!ԢF ,*5 q8m69k@:cwAվ ȉh]wED@-27Bn˃5~ɸ` gl-6BZfj1xA . 38FV;mڴአ7'G";CQʮueo$eTclIs.7N 45囇&1H<4s8I=#T׮]^zi$,E]u:H"AwAaZH<.VH Ō&]t1r S 嬪2LR)駟 ֆ!ɅžipVN'igRȂSM4g )r{5jh?⑙۫W/V  ,Xsϛou&{A͛(&&UdCep1OR!l襈&atY:$7r:cSywiIEPs9̄Ql0φ:A1Ygu 7 4 k!RR*tMERd8|GNȂ .X' p==bѢXjUԐBDzřM;坧,# Мq!Lt!FΣUcƌAV(tx 2*ysC::ujSЋPr~Q @F6%&<=$@eGA|xpPXY@h,gt(BH30dt0"5#99dX}1sx8fmYDDDDDDD" +pQG]s5k&a< BC֠ "EfnV2u뭷8pXٝwމ:LJC=N;z]v7oB -D< FaCf8.њa1>A1YjF6?!Y1)gykZ^ t;eXGIĦUx2=6K.mF@ϻj "cq]Q2Ґo*d58r$9uV¹i:{> us ?9B̓O>Р+cّd41+ލ#"""""""ҸA]ve,Ѡw}wK,!FDCDBʊbSh(kNU8 &$7}Qٟ4g1ȥ%G0dp3oy4B)1Td4sGzFDDDDDDDdF4aHEV3MTh!V˯^"i,;tԒ}cދqhHojY/ihg$,ћU9cl$7)7OX8F6D:4 )?qg¸qqsɮJ {o$K/Α#^*=*n̬ t#%"gX1:^WyI'GEe> )=o&N|6M_h&"' ݒcNc+ږ-a9 9{: 믿>2\p|&ODDDDDDDDf(" 1w;@t(Y5Z"Zd0gb;g!#ElE6y96;3r[,O޳4[~CJ΋88d& M-e2VT<\؜M٧O>z:{_mٸ͚5+7mwEK(T2JKB?:z`H9&CG "b~6" fe@/,Qx_3+8HcU1c-G4:-6m6 Co{p61SYDDDDDDDd!tIјN>dMeHnirvKJt=v~`zWfe=-w +ͼdq‰LY=1fi=.vWTEnE$9PYcfm.z>wG~YR BK^:ա !- HVAoAFEPY[(Nhĩ`6'7Pu:O zxdNc*e0C3xIUX)G" HQGG/43({ذa7|3 9!,Hn} ;T:=P'Pc+tC{e.Jo߾xCThgXfeD1^shftʱjfR3;}dTu0Y'g9B< y1 6 *(wݻw={xH:\2Y\S|0\ˋwL^Rhu[l5*|%_{'O&"/΅nֻwo4_LxGsD^Yp%gFRg#1rãg֞]љu/kb1Р>Sr. 5e%wb+{.EyIsjՊIĶ̰!ia$"&Ǝɪ8gh$'ڠA(6L203*&A y'&b\2ip|sΛo9 pnv1ƍ$b^~Y` `6k0_џXD&F΄r<:9N̻dobYq^@y2Y̴ȘJ|0`hQuez,-Ǫm&HXicWS HH`(mڴlͺv1E)V-W4?3GChF"7'D&#IᡎIe+О`i!ٗwmĻ$'}RflHġDSleX(QLJLEeH$2'N`ƈGoLQ0+2q[MN#:qpIcXH<DJϯPZ @žH?Ӻuk6s{ NǎI\c5x:~wmxX#F}^lHW(/jkqFKB0b$f*c=NrVwP&*^t83y<"!m',=g(+-Eg48;sɰKy~8"u,7y`nԤ8"8.4h1rwV3?1<H!ؙ-#'SW}#: tҁ:g}%D0dWN[lAIab1# ."l<@hRYR@ѓ霄x d5TpC-CHډxb zTldegnD9O4̠dkic=xs4Z|u`EDDDDDDDdF&܈HhI^{-qĹR 뮋?] GxV Nw3A\+MW)WZ/X̠#hN:?#JYA0Y>EEA|(>SqkW-/|ȑN F]xᅱ#.=8 ^('j}t e^5Qc'-=214/UDwf#)IfJ=3V(M-yHOQX@_jx#O6 (ȈD#y,#pr?rM7)?9[ne.]0;c&m֬syt n.Tf:!nC_ oFZ4r0 stQ:!XQy!z8="#\^JeRř; Y:-S)0#$u]Pish-?)\D=>S:lºgCyEq?Az8q$j=2PVH6R좜ub:@1orJq&+ܹ3D}^i_~yJ!=AM24i9dБPE?]qgy&ɘeTi:p*9Y5#M։!a26XMQGEG%1?0Ę>.M̲۬g)#gϞdw֍O?tG}&uVMЋ/8T~1rwpߡ>"hshآ-3GnzDC2eʭh|N80dl U>S IR+!9eto\<@^3[:axh޹;`$陬FW 3 3]YMx 4n2y`z;#ѫ6mާ^bMN[KDsϽnVh[D>|2rKhgyӅU~_ٯ/@x#c:M1Z3:ԬA#9 ~y#TG.)e}J!4]D<[nѢt7r4YBE0a}&sK#gr U fRY n+nFqP,C s}dv/?6dL̚#52ک,""""""""_,Q*O^c5(B*@K#I뮇rO壢R5&\@!@WV2\B*Ti?r(a#1"̅"ONn~]hĻ9}G 馛MD=*|z1L*T+G~BYNK Dfcرd ULǣѵ02S 3=<ѬC83<;F^dEN#N:EP 3wB{]yuDDDDDDDDU; K]2eYg(hVz^aaF co(_4>rF/@ ]Nk&5lt:XJds>}p1L48R9LЬF7@CIJ = D"dM?$>~8OYgy/(Ixh'9- h2Hy_:L"8"2y"_DsӁ믿>Ԍ|txXЬ-0K<OHlFBBDDDDDDDDD  k-zacǎ!@I!f;+:kP?Q!"';s:fgrJzwO:-)*A|;s6n^=;,䘠%azxH@^}watifa/,I%e: ˄ ^,Lx 6؀LcJcv_1eB i Ѓ%fhz1SϻwDpfkQ""""""""R)3<Ծr-\`6tSSj>tsx'Cr*X2IFn&m#$c8#F#~"nʜNkF3Q!1c杈uMȰFeF;SQ I23fO?QH0@_0^ +C'0Ew-s guYhʗ]vٍ7H4' \QѲwޙ>I3NtZ"cӝQ (+2^q%3%y)׶m[ɍ}>h!@.6F994"2XFDW4Ǎ sN4^x!r$4?1Mc# 4*? T\o\sM@0;kj@!.G) .y}hw0NK{ A~t90""""""""R#"({/)x+W\(k|Wcvmh%n_9X@_gDmPN7YN$rPr ?)'qBxl>ˤ<(zO9o8OG 3Pf͚ytJ$|3L0 I2_|1;ԬtŸd )gó*""""""""U&by K>E`h쓬N;K.krĉ?8ȍKJayF `fj\sM%3pd͘9Qnd>P8QjgZgm'x" 0$ӃtC+/ TuhghVF#58/ԢZ9~z?ocR&r|=D3sl:gI`4EިSOGq&)SlDitV_jRc~ܦM*}RDDDDDDDDjy睷]vQ}*+q9%pdqPb.*}#"+&Q8kf7 ֵ+@g9*}$G8ơ 42s\ > NGl@O Mu&3Rn9$ZwذaGyd:*z"""""""""Ҵw֭y^x! 7)G`Ř1cvuW[q6IydINB0nKV(@wh{,͈ƒY7o/zW'O49(MO9xg}xhd9cРAOΤ?-K/M tY9"""""""""2c=8 OI@%ט""u]'tO1Nb FciqdhN;^ sĉ,2ovt@5y#?3<7 59j$:;߱N?;wFE] dnz(jz뭗Nrq6k֌bep,bDK%vcDBRjcI&A#0i)Da‘QxѦ CtKjɹ4қl31Xgѷzヒ( LSZůy!Cz8r~XG"IݵkO?osfN9Jh(T#goUV!\;ksN M"""""""""D!/,Dez$K#FFMT]W$l,_&8c~Ҧz9DloYi6h$mC}Fƹp/Mӌni.f+":lr 68p B.8q"ib:Pٳ'5ܖ\rIgDyXbC98=UEDDDDDDDDD _0-Hh؟ &gEb-Lj#Y7E>ĨX#:i wxɧXGfXMrݤaLFg$Xk4;Ch:2@;"nYgƱuAp3B3a&y}馛VZi7|m24Gٻw#ğ|l\Qxye'//be]p 1۶m[X FF#(Kі:~$TS'2R2*6j5iH(q2;hdCfǏOx]>䍾}! %(O<ĉ'ί^{mR5,.ode$hr9~ޚZ<ל+ +2,XdkLm}""""""""""lbT$|GW\qE&o& @>21:/|R͙hE;O]~aRFFf (HA-B?~t)dnE?mtj(6 `p)qj'V[\{lfpxf>hӼg$r暋 UVY@#F"'9^DDDDDDZDDJd`vbܽ{w-@E&ɘׇhU:>ꪫ2c[FE& ֿBX $lhTf1"2;Yz"d8Z+9 Dptddw U##d;wfyV֭-Gs9wuוW^-4gΡ,"""""""""Rkd?Dp&4ZvHePcv&RIر#Qx)$H)?5BSXgJq饗sСDa;ws,15dr"2gl5"2 :th>˚y Y}9o""""""""""R$__LD2w9l0$i|'ovr9ׯ(K/49Y >Tc&cwKЗO;4|crucrXÃ\L#CFFHm۶%bm-ˉ؜]ڵ+31 +ȸ,] ^`," .blNҚ1)myfi.rpn8Q~[j;AR{G$/cjF_f-Z~D0\V."d$:6~zDDDDDDDDDDf@ܜdb4$l͆o߾=4xO=s1Gr+g3^oj3*s",9nZ3<\{\rɮZ~_tJ&KU5spP7_ )I.!"""""""""R}Ⱦq-eW[m5|h?SX_f~W_>|ߧOO<M74nܸO=rK/]a wh4֤aw-"""""""""DAt_LEebN8? (ק~+zt .le]n>l?~ᇉ'4h_xᅳD'Jx$rVZ:]eB?Hp; -Vh逖vܳgχzhy_>x'wڵH;Dy 07ިp_~%nmSr./+灾LHz2{\s͋/}2HaN:k""""""""""߹dg_|ͯZeys=m]%O?k>BlZM~H˖-}^j zzԩSr N;բoK( wq}]ѦMOaٞV7`!gyҎ:vhVZ}g=D*Rs(Y /P-N>صkW= |X *f?BgyG0n#?SLaU5y7C@LFzNC;Lf͚ew4szO=_5=zo:|/7hG(NX^"wa)ixŷzg-d """"""""""3#='6lXM]w]޾i27bw6yofa :OFGIbs:t袋.Zl׮'O-YFwĉ"隆rJvGJ1bZaƬj~m< ,wҥ;hР"ۆZIiܶmX^hp+V&a}H\ٌ}?,AeqT{)wsLiܤYfw߫-.OJ~8۰L:S퓌LG1 C dm""""""""""%Xs,#wN0n?L+l~;&g3,U'tRߪU+4>(pŷ{|+/ǖ-[N2eZ(ZءCap'W#(OwЧOXfm"""""""""ҘHAq+׮zJ)y^ gС аK]EDDDDDDDDqbi&\c5;Q ӸiѣME:/'|ҥKbÉ'_i""""""""" }]]H|%>kX7߼O?+X)s9{sԨQE^+2(cnFV^dE"""""""""RܡCXsgש9m83_zO8=EDw}?~|1[;餓b}EDDDDDDDDi߾ ,ݻwG=CS*|Cs[oӿ뮛{+E]Tz!;Ş,"""""""""%<̓ .R<@)?C6mRKFYC=T[grȐ!U{ףGc9bO?m۶,M6YDDDDDDDDDJTscS}SK`/>ZիW9oS:[gH6J[DDDDDDDDD!AzNW 4(Jz RxO*oU%7xc6h?x9na߱cG{40.lzI~:!oR3o_'vE%Tڍ!#od:O4G|M7be"""""""""Ґd'5kvwOk ~lѼ{U:{,Ȃ .Xo`_^^|ֿҚ&"""""""""R٘`j>3g=tsH (:7t;^^^gu W>CbVX.""""""""" /ߪU;|5(K|5 =l{}%?<3jް[o5o׻ [oM3 xEDDDDDDDD^eY(6ꫯ>yi ͵^D0^ ?$eYg]{>r_tE{Y+mcs5WvG?%ඎ_?HBy7̓:i%Ԫ6۬Ap$ddL2DJnڶmK5\N0aB_(:zhM7ݔ:5"""""""""",By~yJ?H@Dm $52-!+H+K0駟AOGqyOî暴Ss5BDDDDDDDDDj:d_b|{Jd .SN]v套^7Hz뭧5Nhy:{G.2 )y'|'|(cv>쳏: 7pfn={裏j(6g}҇xX W_}vMFAҮ UI@G%]} r7pCQ27|ͫ*\Rxw?5QQ{64:yj?>uɆo,RYX_=E~}>h}]ȝhOuY.~6Ӧ] $gyȃvHȪmQ^a+bG?>.DOoğxjl E;mϓ'Oy晣K//Rm믿vqt;v`*йsLɻo6+A霷>r0iu-}-r駟Fm5|F$@_qsNC5?F~ըf͚k.j曤<|G(3_[}]#;U_뮻6~KSLi 6,lQDΛ^}ΪGn>R]r-zW_l2>'4 zر^b5#LT5rye_~y) A#L\gSD(^z69?IK,#HDDDDDDDDD*fO$od% 4h‘/2yXc ^hU֭D"""""""""Rĉs >7|sgg5jT>9.%>~ۦ>Ӷn!5leu(SNiyg}KgdM*y+w6hJzqŻ{:ߟ-5sV}FmG.5+cJDC$"""""""EY$9#iC ɮk)n/wusns=_L9=zH-<裫}UVh%}p h3+1ZDDDDDDDDDҹsXmِt/bH+׿OwҥoƍcW^y%㫴gy&yD#<2CdlJmݖj' r[noUU۷ov Avic9餓5E6[PD;$&X(cWVX r7_ӻwzS0GY[裏VL[;|pyc=6{ݺuCo,wޙNs@Zzy<.-X, *W^yeZ#_Xr'W\rI?=z!5ϑݼyhNk"""""""""M֭[AT2:kFu꟭\sͿz-rZ* 'W_=Ӭ}!ݻwOz4 VZiX ;J}FJo]F]ã@MkU17xc*ҘdM.7x/ɑ~7w1ꪫf 7W_Mk7.NrCȌl͖jSoM7믿kx~B -^#IuYhт:gyѣ P=$\bJkb˭{ >;EDDDDDDDDf||}մ&,Ǐ_!0zРAݺu˾F,gce@ 6>7|w~VAlp޲Wgw$l֬ADDDDDDDDjD6e]]>?c뭷a;68I{}9TLUF4o Y.ٙK̘i\ql} K/UO= 7ҪUErM7m:tw'*ų;VDDDDDDDDdZp3Oz9|}WDÞ={f?NͽzV-=ܪ#oVaSN-/Ns9#IaV\QDDDDDDDDdayS$¢g]hzV-I۷oH 7ܐR N4)oš۷o_JDr=K-RDDDDDDDDѳB U{Yg ;ή_t0f̘A>lfL64|GqDM-Gyw+S2Ç衇Xd [o͞=8DDDDDDDDD+W\qEY:wyga/Ϯ4vI~_s5 ;;ᆱy_=7pZSY%~=A~,V+NΝ;^9Xc}r[o]-4:sѩ.(A\ sH邟t̾ӽ{w"$=FUX.p wmFx;B\rZ?-[Yn*\su믛=u͛;rE`qg;6|N;sMx:Zr3'ADD$Xhk.σHYi/۶m;f̘+Ԭ7tƥu~u4\8MSTd]7.eY< """ 2x/v[v kỳ_~Co޸Çř[sU=LNNXGԠwqt"""""""""t)r]w%tx߸q㲟4iR1ro~hDBg=j7k֬JN&Pi ]w]: K,YDDDDDDDD+V 7|sO{| c9rdcQ9) 8G\r[nq>35i'|BNwlk~:fϪZDDDDDDDD$رc%i?S1> -O|jn,*g /^x᚜W_7ިa>$@/MS>҉͋2w3XdpGBJFj0EϩFț{gG]+b)S zk?-ZIhݺC[DDDDDDDDYz饳/ZL^ꫯRf&>k+!CTp5( @7"GyӧOtڴiiH:wN+>fUI.޽{+X7t#F 'k{ѵ۶?0+@MV~yh׮\dff$.͚5ˆo@۶mQpEI?c$;6}v*YYrRx(8qbOt={9.!r}U )8x&+@o-\;EfTfy)]:uUј TUSOMkJ3ȋ.(SNɞ#ݻ_~u!~f!9!uq7" FVz} 7)w5qީ\2ꪫ-}ݥ>So05o믿}K.6㮻ִ!{f)DDDDDy'_~oɸ}opȑ n{)ya뭷^2?Qi;m/Lkl[|HosμwV[m5|U0)W(ꑒVO1$"RAyZj>(~裏f[ ԩSweꫯ>Ã>N2,`oڷoG]X#w㏯l|A?e˖٭ 85~i7|=u'xb=+I;]h=sS2N[NWK%߭hO> _|E˗O?t\ |}KrWt֍ۯ*;oeg~w&E9 ܹ]1L3yDDDDDDD1+r;^{mEwɓe ƍ LXq'NXgelY_Z᠃J:3jWw&nVm۶%2;"J_|qϧM$4b[nKbntł mܽ{fɪA#v㼃:%mذa5K/ywlӦM_v8 4 ZDDDDDDDD^+BثW™`qƫzvo w\s=7p҄k~({&}79ջ|vt9+ob%̾D+ 5jI;>ӳǣ}(P'tR"Gʯ[oeWTo? <`⋓A{{mYv /P}y|s1G:iڵsy+Rjo5(A xT &ٽ vaXm󫯾СCQ +0bĈ>'@\{mQ3I"_]>!zJ0Oy;-[:EEDDDDDD? 3]-x9rd `~QzǏ?!/5OLO=-r '.6~uat¡ُT#^[b% gy~7[ouZpj8EP}!$bZ9hР:?쳬u̚!Ufm-޾};G7?sW]uUe[@^wuӚ5 n"d\ o7o}뮻?{Y@9p7%rT#<>**6A97{n'}m)l݋-XIc͛8dq>L;R'= ݟYLm^mV\=,"R -""""""MVZ)wϏ=}zwygo?G}%qKú)r:9?uek ȚX`z0uTҫ\Y.XY.%Yf(/=DDDjjmƞi }ٷoߪڐ 6x5^xW^y:V[s\?ce[]tѲ\i7|p3m"J墋.^ MRsfyڅ;wy9i&?od7)sVuq&Lq]y啕PQ lƚ;tXwW/O [ner,DDDDDDDDDꊥ^:UR~N:vmMG|GPz‘ѩ ltF)('`d5׌5۶m[[!36~\s͕.Ns8DDDDDDDDDꊕW^9Ct8o&fR{p׮]ޛn)s5!CbeYkb|N}՗W^ ry:hi7|y}U(>{w6AA}yu;x93cƌ$P=ܳy'Vca<;묳ᣏ>ʚ!Ew-""""""M&*E9?W_}u4 ;;0x;' g}_+\;c=b[?T_.;/7o[H},+E-<"""""Re:t}INËȈXh⃅Mjꫯ^ӧO?hРbY=7ߴi&WXa"""avgS hʠԧr)Xy:]5"z /ڵV ""R!-[L,K-DDDDDDF\$owgG ;ljBS."(&&MT:]w]dǏ$g}6f;ߥEDD*[nu]Yb-(|QG͚5C,6lsw|~fep q8ՅHX[nv:9$Ó\<{n^o-R[j[l2E9+O<&\{T LU+/P;b5t7|Se2ztJ7]A?OǸq&׿+bJ+gJ|G}> RV]uՙrxr<)AK=܏?zfDDDDD 4gBs5W^G h2dfeDQqeDbE XNҺu-ZxXb%FqO<L(g& & Xy啧4Ru_~e~>XYsO:W?x15ObSLVaÆΝ;{D_J?蓼=[_Qzgm6O"*)_$讴Jr,•6묳RpeM.ʚO{^W_-pڶm{}yJkO? +8O'"4WQW_O?%?7ꫯW]tO?2|a&ckv:z |P`?s=79̠dOR2Sh'B\s /H=>oȑ#E 4~ݙM74qD3ڲ䣏>3[P/-[&AI5;a/"""" @Νc/W,ѣG=}jȐ!6z'^[ser{ 忨#Pu]=᥊ \HMda׎]]<9kP8rHޠ>`s2ze%ZAH~'/{6mA55-4HY=#^k vJ} "Ճjl 5 UVYoSh/W_}#ܣ~_9r$ArgvڕgM &7|sq附H}CV ?# M5Mi\ 8B Yoxsύ93B'HeZ??pdI&~StTi1>tW\iΫ/Rs([U4^r%ɀB ]}lgQ,}_y啟4 6m*aw /lsΡڣG>"""""Ro>?xMi\?]tIy5Մ >C=ߧdDO&3mg-Hezok#<ƒuj+\sS<#e񉈈W&ESӔ矟zrnݪ'{F>= G6V!!0;{uA6md2%C/<^REb@{`۶mZkw̧AF}&92֝s~駉~F[dbyfo\@SwaWq||{!M'Ġ@,?ZVHg3ä}[nV|w7nرc7`b̈K*GQy#4hF\ܣ ehR}ޭ>ec9jڋ^A3{d1oSN@ܧ4.BEFoTX(ЄeF4AK; M RSš&ORTBx#]6z)bGJz)M6$ì-3 'x"ON0qE 34J11tˊd,hϞ=\)nhrE&W\qŴפ>/Ya]L4Pi+|>Vcҷ^|<ŏHqwVxEJq?O3fken5w}wHQ1sPyISeL.bw$A{i¿sOٺ1>#C{{~DDDD̲FV4.$3U)TqmA$J(tUz0!֜4 H̍fm3&9oUV*&x?] {^{-l6EF5qCvm>8ө0GEѣaH2s3+uQÇ4hZK@?"wKhfA.RBƸ9˜sαp+hJo:3:Tg@\&ZpXy啽'H<˜z4o7#&CHÅxtibVaOr [?wTJ34kĉтW[mϜ!ٯ_?>#y#dnŸmmv *31 ҵkW:O7{9Ycǎ@) jҸꫳN^Zn=A: W8"k8=?cZkD)~x NqQ |]w]{z(#}OEoo2H m۶͛7O_C>;n<aI#F{ḓRSt(<8\s16=cuZsgذa~-b~'uݻ;/ R#tDrlԏ3'e %G%]\ޘ8dQ3k3= $ީE;#{wyG2]y "z&$+OJ fʓ^%_o(ϩ,Gc5 z*7bGY2ty0w뮻?N /x)c1ٙ B2n5Mi\p Sc'l>E5}'HHE@+fF_lg_ӰU1? ,|[l![ .R7f⊌1G3Lٹ(z>afJP$0>lF=Zl}l3:Q p}Nx߿?!s;7A*p@dz,Ѡ3cHÐ||io2";3|„ 8qFY$B -}@ʳ馛b3d4'aVvZGG;1QoG),*"r1= t)8>r0ɔmfv/WC5[4!K/sT{i>`GTiٯv@A9LH !dM2w> DGoo9K.e """"P,igϞj҈8qb2uX#y洲 ->Ef)ˇ|`{r)э}؊A yI,SNzCo;O6y==أUV͛7ǒI[V.H<7%4xd~Fd$?gk:psq1y,1B(9Pf/"""" "k=WwJn쯲O$b<TsTIgk߾}`yd3^K140wc=z4&Jp@c&܀,fQo o0>SxGѭ[7,`H B52s묳T?|tNgFJ4_׮]{ b*&r%Gޛs": 2$7о)*PtXMo9}L$IR3npYgŜG}EDDDD*EcEdƉ4 ryVEbsK51]y睏9p/l]%Kc)[gj;]v9 = ^g,\peUVU~_k62󓁃LѢE &qY=ֱ ru1W /@TǎcJMyfx\h(ec! iH(O>deMi, f{2)|e]2^ LH tMDRе!9+#D."8"CIg}W3A S=|"1+9M-řJ =ɏ8?~oLRόS LwBzW_e/9\rIKWIƝp5\Cl" LM<ø,?R4Β)SN9%ۍױ!7c 9+X~DEeʓ,$5>OX[ΈXE$@wT ,,t[S1WVU5;L(BJ`QC>56Ra()n,fmYfVoW/h|IfnƌC2c3@K](dk*l'}X(!9&cxXaܸqҐtY+2ؔHo(A9/t: ='EЦ(m8 ) zSٔF=ܓ׍S)" lY G]y啻F k"% QG_~8P c j]oDoՏ6|Zo$w=k+J9Mc!#9rgqUW]( 1v$cTcSLWA#|饗xFD y3vm'&څi_ŸK1$=B7ssNDDDDJtX O_DJupnC^aX=Qyx xǼdHW(YLCx՞x iX8K0{A9H܇G"AL5[mNj_~Р 1T`n5 M6rqT٢Z`e0TPѲQ>Dv Zs A4g~ΙC.(`%.:dIAʉ3HX+}""""RB`H˔Qܔ҇;y߷IeC`'qèK|Gh|eS`b0vXFB OE}&݂i,@zffkqPܲ QF֡SşN8hF w%_=~|dblkÊEX tcIjuK3 z&@G}GxGqꫯr/wq7x$][:!-{,J""""RZ$h>}7Jf^7ƯX|8qb'GUI iL8K23C$(x9Cd%:~nݺ,FbSb [q<$E%e .9d޸[- /ȃ&i׮][[2_R܋C~D?G/724't+~#K9 ছn`P}|a[n#1Wg_,P]}SJ||'w,K@cBHI&vjlylGVO5"Vb\a0Tr),qap.9Cz꩘gcoڵJn]~RD:B}gJZ:%p|-{Lۄ+?eW{P_u|Aw#=3Nydf2Z O#3"Ti1/,wqOJ/'tw{舅)-R 7@7{x^@AɻHC/C4hf5xBm젔1xꩧF53*.x-[cE"I9zhUҎ)N>5a\L+h+&LmC{2Y/r y'YeU3l/VSF 7!g|0(`/vsBf0Z"j&H]wݕ"&*Ie0@z&UDDDD)nzRtMy}[T4Qw~Ł3˿TCj1S\l裏>9昶m}&yLHgY9 5A :yDjByqx!KtE` soWLؖ#9 `wٌw G}fҟ8^zmf̐aWqe19ǭgwCOn0;d):2DDDD3l7y:0Xy"E]DHE~:UBk1#65bĈ X\L!5 ̞ C+D)z_o` qrQcSM25L(F ;錴#̋9똰#ݙ@&L2 :K/zb̿d؟>`Xwuqe2cPdW\q9-̛"=g}Hh!&E*&SME."""" L*E3}JRʐYK Ft8 :=Gwʊ_2VXF5\ZkERQrڑn6>h$X>;uJ~Ϧ =P_聀%NX{$&}riͦ|7>Hl6lj!,*9* 0to0=;cB5'= )+lQ5nғsy~]TDDDD|7%N)eLRTD)FTa9DqW[m5LodgSEOm5p@4hD?Q%I~Hƍ$S 2)p% \:x[`iС)>0x`2C>]:&l^*A~EN*x; 5 o;ȋ8X#!$6O%kRC^ :?ļ""""R CBϞ=8ީ(ɗ[B܎<7M7tF5"R%7-Yx饗k/ 1p̡Yձcz`}'ÇF" ]8Qj1iVja Ɲ,*dwq} b1Qޛl)71,9c0+ [`q7i$v@w~7߼FQe4)4緉/H(ڹr:shpFv^}UUN)Y0o;tK@i܃,ˬ>GPsЦ{j%\4QPGІ8%{p (U6~2 EVRˊI-BmL/ꨟWu$Bdv ?a1*0<.Ƈv\Hy'ng235mYmڴoE8;0qx R^D)Bح[7Ysh~\w5jԠA9zfMfOVhZDDDDIR꼫rJrw+R ]t̷w)B= )Tb|=񂒅T69s/t/"N5["B]w5~s=pjZw}7O1[WmQ u(x`qȑ#Qb`&C!yC&ɂtLA5D=˯/JEv 1U\k 2]JA"x~% 9P$:5`j41"TV7wyGSJ<@)e~-:Bg8:G╝?e]<Ӆ^Կq9INU:묨6| s  FM/EP21}HǍh){8f̘Gy緝;wƂݺukE8uiRDA "~ĉQ#ǟY b[X~g!X;>̄4z &AK)s嗗|sK9?kG/Y(M(|do1>Gdkvw]%ѪVUouĆ:*}01u"چWcľsysF #,u!#2 #tTB3*h&BOi!x"$4}9)7Sp8D'rF."x[%="btQnEDDDO _}+RXK;_ۢң[ь/ٻwo z;̰X[/,, ^SkqV(lrth+hpSke#qBc弴_(Spܸq <$p`u2ALPQ~.$AFP0H'3A<ӧOSD9>cz><|I`ksEdEgM: wHFA2e 9#!͚tl|#|iɆ mE0a[9v{o'k(P gcg){u@K`f!(G1XQћ:k!V=FHHf(>` 8oQכˎVs=C+:SO=Aj]Ԛ+P>N&,7[o1[G=zѩS u=0?e-:m=/,dƉ'H͞{ɔjDQ7D4c=FDfV_|V}<є.ի7xL$Yg(""""3>x222ncq c3< u<},B.h͘HQO?tHόZ |@$жBSghgqG-,D*k,w#$. )ܮE!xiz&0cJݩƼ,]1&lA3d\eU* /g GǗOZ%G7 ^M.r9о> f!:=?38 zk2ImDS e҈@M^uUtrG<)AV;>dFonh9T7)'ABϊj񓣦:k(Z 1,M>sQRHȋ/HH.Y7U7_ ! |1CC/B]ʾ~W Qg#OI"圝d|7#G '@ bQM 7c>3"Q袋薃 bcǎL<ik.-EHIqqM7Uo| mĹ{?:(d n9g'D%>\GBPfgm=s~4sJ <]~}1ô"p R+Ÿ :C}fD3/kH I [a EgwI{$9~=d`fr /<HgL/_*ݧ8e 626h#÷m6z;oٺ/hwr mQk$S׮]-G j,3Sn~(&8QQp@XÇ~H qq%+]jNG}&lNT#Yj$~Aۈ !OxQ~i6I8syG]8H æ6Yy;{ooL0/H8ECfD@oԝMJԽ#F#&,ÄNHU; ['x">zI }Z~x ҉2ם>@* }Y<]oϺ1HEzg~±*""""2#+v) )}ַoj|o;c,R)"Z^q!iq =D{ի>G |{o6pYj7&:K^{f#Rߌ!0O9Ys j\Z\;<. ӼV>sZdw,̒~G? H `17/#Jabe>KOq\t+0vꩧwq5#4v}T Cf0\)AExA{x`%/ZDDDDfXyOm!3q=moy)vay=a+AelI6+GaVkG2GԺuk蠃& 暈q"t`&m -н{Hf2 mc=̧v[R R^ʠտ=>H{@cFjsX)F_ٿ2w^8Rdhb}{̻4 z(3y"4y=˘V s'G!#i*U^} h/Ft,-j_#u[jCf g >TK'OE<YAsN&P$hUTOϋ.oV Z!˘Y(!@A㑿LJ$++TW1<߈[O'oe,#,b4 6k &3f<5 3Ʒzk!Gw:n .}~x;idMj;L LM6:SHW%~廫HJ [(Gvmcɶjx(Vhg< wrB9RF΁Ƴ[o5 Ey2HPs[5+?yH,~ 摁HXFCgn#jj 3a)VQ`!2jH1:u*$%Pu֍dF 7.2ve1iTF 9*ˑL 7c C!KZ)A wr:01w8ffJnkLD/!_׻țJ+ |T"o)_&]8̏5.Ҝ{1bDe}U2^}x.O2F&_s-Yedh~򌈆;Ÿ#[ 743Z8!y"zm xWX4Me?uAgl6TW:t(7x 'N7M%/#lYgžH!vy[nD G}DANb7od' 51N.ҋx0R'\rI6'N$|#n!#_R`#ERJAoJWmذaB Zt-W7R;Xy*}`jNK,@#0qS2-xW2WH8Uq TK ;3R&JT6-RBt^/l͈#:CMZ,$-34ꫯA;R_|'|+@QT([4v1N1`'}~a@ƀ8Dx.V mYLnŐgP/LWg /GAb;G܂Pfm/V Ƴ =cWjy"ϧ~:}-+tC'VџgjnrRP =""" FZ~yKN<`뮻.󅇗gqFR*~3($X>X(x AZObōaP[?y?IQkoN;DNWz6dfWGp"`*3_|sGuTL$_N- ]; t0'L߿"B@&բcbٗsF-? HMˆqQzb6ےZÓy\M qQO?'m4^_5 x) seÍ Z;cϏCnRz ღR%$!=_}"PhF^LL KZuY'N;py3C j/>< 嚴(eDDDDdFbQKJV7n\6Dks+)xtOJI}/٬p b(DAuBz_%k8.LoG7'1 "K;g~Ɛg)iMC 4|r\C'ava 3r,09rHJvmwqgS81 q &cQPD*N/Gd&"""2#̑dgyoe~|m8e]J iD$9 J~ŷ\pOPTf/ʊk)& `$#޽;J4nJd #.cF?7|JđgCt#RٴpiX͡'L v7S̑Ҏh z쉓)\VH!؁OE /nza[!sڙj0M2J4lYo<8Eɕs~2¿HĬ@ j2~.{ҤI.>|8?w~gK17"""I@["(GjEC=4tPb*u];QS)%i@M|d'!w5WPo}y{ T۴X^X/IFwa_ eȐ!Hd W}RXHN4XND S ŵZ /e iv:WZ9C~@B [4rR4/:ckQz%IL>ii{=*eDp+XaMc!?Ko+\B##;8"g o>K-=z,^i* &h$DME6/z/9) nP,p3d,D;9՜[N=q{ҡrbXbrpnZ׫:=9\C¹$/ zScsr"$= IA(Ço ZDM*J: ҟ' +fPpW?X`"G(wG4S3Low-i.a?>Cs|B%xfβfGd9')o!@0 1.^͝ }U+Oae6"_ߖ;bldRi*5ʐxo|QGzg) S}FF_Cvّo9jtި{ڻ; :*Cj% -DF<@ñФxсQȀFVAz/UBq879BB ٺk4x2T9 !SO GBI=x)jJ-p9( -,49C*4hHHah1 G}śH43W^Nwx^$rB7s[Za11?㻾 H@ABܑxm?>Oa}< XJ/ǜjQyś`I˱V%C?J4 ՊAwo' _vz$z!9t!Da{a:6TG9Qr([5z℣#Bv7GJ?w].r(C4AC%j[CIİ1V$7Dp̊ܽD ?g,ci> [,ȋo$W `2as-'O?w~Do~ɗ| CX4y R;ev/x#Jj`}~`7oG=Jx:^Z-Fo54N1,g(܇HLōڇb?N(CоkVT #j"sc? e^{oy5yask+[@PÃfĄkf^F) [{%yW! >M\A%b.]b[=0ĺ:%eWh'vw@x&,i%Jl|hp//):kUݹt7w<Ax^YyOY1_^ %xray' Pig_S>GQпv4"u >7P քarg +>S>_'{- ac>)17kT 8bZ1D*"~WV('ӹϕq4C]QG @ĨNo,,HhC} };;_9*G+lO!k;sGY1ʡWF7ذ&lx6(00SO ~h9^8+8oƒ0 #φfl†m@4'6,0OkhQhr=I`3R GoqC` lph(w╅q^䕨~ Csj) `pdUۉb/Fo!粷M])T&, 7"A>1W)&8ڂkmy#DS .E#=XFQqn\=tQNxYK,z4*vȰNkН X(ފ`zW9z ǤbVh]JUq](o-g[iZ_ϏC~u(ut/_hSVTaN 5BPnOѹXt5PDstq}+lh)FuFA$Un;Drs]jݛ!iESoӁ7rm?vYG9Qr(/Ql]l ( Lr:"2#-Scs]c!/S`Gv[2(7)!2ԙ J&{n|-dŠ&<şa+$v?蹕 #7LD  CW7!;;@Oe%Iqure81L+5 %xͫFqvlNg9ql@PPչo .@1ױiOc/ן-Gb#!Z?mè6L)-E[ѓxN u"C K%zd0%K7*_>MbWMX=xSa2? Pl,?@s=V 'J1j;FNsᇝ|EsoK3hCS4¨^q:7ڏu\CE } 0;C _g#es0jEN3LVz{fp?h1-F ⵬b}<> iJy║;`k|@ ̕sg,TS!=굧~‹-w% RTO1WVl `b&P54_5_{|)$]ha"닕~8 Kl)5Te%JVxsF.O^oRzw㒻~ysR |-@xJm)~?; BXC \gJ6F?~!kOͷj8kv[h8J %Fė§Hׅڣr!8]/0p wv[~')s΋Piſ!V Qcys7e 98Qrrs%}e޴_yuvн|EX'igX=&{@cLϠ (@Jf q 4 Er-L (MΡbABl,2Aώ8Ls` -Fz5ԲfxAH& pO+/.wԣ:ѽ/q^beGXS"J.7"_,9Nl5 y ov0 ̱ 4q o H:T $C=k{A}Zb!o9𦕸,9Ii[9k_pL(Wo /qk   vLaG]8E1 EwNMFN6D(>4CEӈ.N|Bb?~۴0RIѩ]E^.Sƌ4z wD|ބ$OO:ǹfʐ NEh)p\?RGD<~=uXHV$WHg|ܮ@x3POH:Q1$\bDbIQ|\XX7NN8/>οRLWJݚP_(0D~*}nUzL MTJ0Qreg,1e n~5f){)¯h ~|'w2}w1w 4YgOOC: pYL4 Afp L|'6gR yaRB1J !``;,-dG;`1; .}ٗ>{ѾCcLyiU_U~+Kg'E;u~>5ag?܇~VS*|O>F̯ll@ 6\@yvc%R =k;rG5_9^p@µa6@jѩnU@H߼s,N}T (=t!GE)a )!*XE`D7MxoZqH.AI]_E_Q 傐FQ!iYZPz77nؖ6]KG3Ul0g l PdnJϣF$!%֭p m.ƙҲhXQT'WwZySs|'o9lG: .AK=`|'0BϜz.C/Wv_iE욍v(G9Q_NCh;RL| Etj&'ys~YZ?;^f킹V9f:!fߊrb k~h CdO`]qْ ݆k?s?7FXkŘ.BM== 61lE}>$+eKzwQ*X?Z $?'PQ8i>bP6B&sj\'[ / P>2Vџ ! 퇆B)^zҢspqT__!uk8C `s=y@fHQlw:]̻pCB4x c/Hr^ #$g獅0T,ab?7Mq<3BcE _o Mַ/Шя ~J8jS~NMqPWDp8ʰT M hi:WjEϫ6%]A ҙ@Kv>~UW%7x0;24dhOEo Yi,A]X .J+ tȃS]E(%< fcb0geBPm% V1 4ѽwt,!W(nil>;!^]5M+YÇV:&vMҒ6b) KuY7.1G9QrǗ>:7QnX VGTGO*G5k_xAKY sQ{V5߄B}s D .tplcg' ^RXb1^;_ $'ad>$}];#ʹf!1hbx W|Fqq/P&`#S >Vijr5MDJ /Za fwC`+7HPo;Bׁ-TF9+[HC {!\y[n#6?y+n[B)[=o!l-[yV؁ -z8Bi3_Bf@- @4N Yyڊ~LPuN@+ap(tJiVcg&<vfNg^b4J$K5ghzJ;t"BMFD.8RMQTA؁"D@kɮ@eTם'3eVRLiȡy2XLL=sG_5@0:uzpRG\s}yV 3X^gY@񢀍j C%j+ׯi]tuMHyXBPXܙT } r7VE[! :% =k:%n hK9b 2~cH|Ƃ$ķ"ձ|J[џ4DT=21洳Й몳zV="X#)h(G9Q_NNs'LvYY#{+xtwV؍[[sEx`ٔa+>O`beNު'  \#3K.<;|3e-μ@`%_-*{D1BA|1$ EY=vè.6 jЧW;t @#'muOk~o޽GaT[C1o  E2AAKFb`ClQ5 ![r32jZ X\ɀQ\G7 \Vv4D n#0F \RX=M[`%0Q㐱*hwNèQ#*Gt Emu[?W;IT ?H̗qkCpώJt\<^%Sh].%hsNxQHrEz5ׁpZ 0P1 ).X3 '5swA~w m) S T\bt-"|IioFrx; TS1=%vL{ .6(?=Iэ&O*+4ʯ4ő?Lx~@j\ԿSHAډ7V{C :f Od RbVLA{{B۶bҙ:YrdCϩq Ĝnحϟ rs9V 'bmO#'Ѳr3ן\f&}-jxsLv|lGy2qMQP(C[e8PWQ=*e'sJh(G9QnV o";Q^1! 1;~g@p,{Yd٠Ӆ4AYwLSQBjM6^F5;@3x>h@Vˣ(X˘g܌=π"Y>OH  X=!X4f0twA+Ruo zۑR)֓ 0HT;!>$T@ l&D˔o7.ja>)(`F JYe,!kIGrR\< #q}2]=t>#v(z;xU:^D6m8OE E&+}JuK@"OMG,#Ē$xT\&p4зo= ye{\ّVp<2S%Tį w*a 0. ]+V+m H7 %u3*k?WGZU)3b%# s ޣt#B?!o $:Fu§o<r+ýTɹHi #5E>yW'z4@hiU = P>N.ZJAzOڊ(?raZ n0',;V& eb@ (z{'/Oa:ps_fM+e 9?Ym>Th%MKWE./di5̭8=OBTTTknv:sR p<':cBȯ2{}A=E`~(f+ u]Řcz8hJ0"t/D'tF<#P'(=eL`E 620֍+7AҀlQ!,fc΃^t_Ŋ.8:R0,@L.40;2A Q: 7`Ӎ[BPW|Wv``dI`gΛvaW]zRAha2GhWٷ) y6ӋA_B>v| 5lu3w:J8m:jf3ҳֻߚdXYƝ1Ojf>]aҿ؜8ݱ˺-T7a;יoϼ)D:-A\sZkj:Z{&1^k[2yJl[}9K+Rߢ31k1(7gp̝Qz))ps#d(;L2 ֬G_V9МZ c¥i^D>OlSnŌ6)4Ni` R)晳q VvEPG~[~q$\PDď= (G9QeG/Ev(Gyb_<8씏ݞ5nuPP ` ѧ_ur6GX6" %cG[ 2Mp3ȀXơ*YB#]YiM媼wXYd'% -.֑DhA@؏JfgO(!\fՖI7BfnlrBp7*H !_,wYhnT1X9ЄyXd&3EK]Q>LBlȯr+0M pSMfwe' ]x,/:7wCǙsWޯ&>as7VLqبc$@%3d⒱BIiǁ\~s9;K9`5eF &[p:`Z^utMO)OU )eg1P}X z;!o'o2 j"!.L*u pLac* ğW6y=W[6Sѩm AJ#2c3i6og4[L oq>e#"000Pacf *i uaɰpl/K?^I=bC@Gy~|1ģq[i|6oNmbz_ǔV\Fv, '3{H⴮m{ W>3M븅 %vGXQn0;@xi[ijђG4GͺMT;B1kq9nۜ71b;T~/1 s qDw/ҧ 0"1\8/}(L5. q3Rfk kz'@L2[ʇLABS!H DNuӫoya^*R; #€0P6<GW2* g+k},F7}7A@4ifzrﳝ@ K]ΐDft!YGVvکuM/R3O`AuI_8  `nPZt+RqF'./ `ꗉѮ= Od/&S\?suOb=a|*W1+;lRZ6FMpkT\DoقDq%xYiHfOCTNPVRSѯzB/biqrMSM[|c]K{/$;LR2ױ*?\z۠/x V07)m#=cP8~͏+"Xc}=jIC7NpTh.BWEtaN>@7Kϸ [5SpR"=S{=e  ݕTĸX>(爛(&U9 m XroN(!ɡfcèI$IJt,  +uN04*k [Kk=!tj(iw:kVk 6 W%O,1Ilt4_ҳʤlsiR8k+; PY5CxN~sJ,~:=CQXݬS;~ (2F(GMpڟu (Gy(7,g 2m^_fۊ2VhC,zX$;HۊmcWYuta+\b }\/D/zd3YG Q3t"|^@KX@qqqP4NM ǎ3گ|Qf ?+͎=EyGX {@#v~\/Ci6$N1>[|bUAAT¢ר) tHZ@=H{X4|cy' ;x {c.4? %C7;luB/<(-1?፦0T.ŨPȗHO=S0>3u#&R7 ~7-;>FYiB(8|@= kVr4p55•m:%B A|#&JYV£#AA[e&Y7a.Ɵ??Ho( '"slSek j-f%&9Nf"[\b3}Ȗ||2[Ki-m )'}E! ?fQrܦM2!( @V ☃>>#xW'6K Rac3w? .x'mϺfcQuƹY&Бҳ;cp8u4˞ǁFN )dg4=;(]ŹVۇv֠k@ 6Jv*ab<.IֈPC9nKBzvh tDtG' qXG"k4M7'ra?A d9I,B,ٓjFPN͂!OC`)҅GHEVHiWRZ 5v7g2p7{<ΦteZ8A+.#Y5hM%) $?c# '~@ ,A"_.t|Ǎ06 uŽck (xBc:ui)^UG ?؜)M`%4FA٭r)j'L(P'U7mɹHr=6QLJsR(2(4LKM *q>;gOa~GF:=́' tU7eH,yJ j #}պں Vm;]1Q\)f*WGO3TuN ^A+^yo`tʐ|ڋR4CJ:ޘb d)e)M#,ԬM;/wB{;wq069b Ss+ܭ5)z.џ)Y/j-m*U][ !G9Qr˥cxW(Gy"A)v'3p[CX``%a pK;{BM_m(T 50=4;)GҌ* D]ʔu|EEAf |#+ A02Dۢ;INù|9Jx_s=ob蜦3|+EI1/M] k|g[ϯk<2xO41= oVO&zl.`GBy_;)& T_4 @ΆuBHٙ" (+cd)g[J[!Z~I;0JMFaV|5YF|'0*Aҍ$f *)ï>}Oa.RC<;#-?&xV+*@H)5q4Ύd*+"a;OP@{A1ޔ2`F!Fl TkmjCT?DZt 5"qU ᒾ!// ``Q\/YSk P˲R Ȉ4-} G?uf;rCmX@FPj>dΈF)YW*Cw70q:Jy|o8,Ԛ,v/-$d jD(C?oQ@#eN(Y=c sʘ*`e䆙%$h1 H-Pۘs5)<. ׈?'>Z̞ 6K,J$Z^8-;W$HQIgtu vx[VJ1BJs#zH0Q\Ym} 9p*ӥδwȔ7W!/$9c<noV.L'@y|lXb.μPotH1} 8ۅMn}BK?qvHYymV-xb[IAr Xc (G9m *v-NzXn 2#&Xp1Q> [Z\@o4BFUxŸ6C  )蘡3yQkiWQ3fd;YMʒ7I*@17]ܙ8lX\ pO[u/A&dծ0܇Vnl0,ĝdV؈71hOC"f6Vf*Kl40KçۘăxDNϿ}+B.!-? 5oaνD$֨A0IV`(TcXS&v킖cl*~yapbS(;i1g\7ͷM# `\HZ{7E4N4=qaG!r_A^XָԸp Y7jQ*/tKsz9Ɣ F- DuBĵ,Yu{#څR&u(vG Mntc+}R0juG$pH|~V\>ZkH>U#7s* YY9&MazG 3uK_o-FtVܭ>@=>-|h6CwhLEN([%1JU +)5 uSe\N*6,F&yCTIDg“W x3Z}VXr*Vb% wNDf7H(MOMcW{I]I?O\iv AMZ`9QrO΁e"-ŊNk8\h8v v維ڻF yXbn&l3Cf3l:tlrfPBq/+ R3Q„y 4Sb*+Q!Aya_NO<}N{ v>_M s!#tf- mY0;^ BzBq7⋸>>n ndBܭ@)&a2 s'<睔 !؟1gc=tKA!"j_=ow'RCd1[|xF!rC ; %r k4Ĕ@i٠H#E&CÛ83O¯G`FN1`,!lLkL}5@2>Qv\ q VDR ]LajWe"j~@Or{̓UF SBg<6NŹ7t{nr.lҁ-0z7TDtfN-ϮUDE:pCr5+K &]DD;j+ OeJ!(4w?z^j|kMy3 BeJss{b1"ޮ%k[ܴih콴-PsϘDе(ߗ(G9Q qFceŸYPL ;u(B_>;4:V+jfvWJ\YtRWlE|g2#E1vlHJٙF;`,ܼM2n2)d38;K,ֻ3ԝsQא6`bCfKгٟ.ej8~(5w+e02DeVk+ݻoL\?I7[Xb;x-xEvN!Oýza/XW7gtwY[ŸjcHZZE{3ռIC\a=nP ζLQqo1G{f+֋jN-($b.ǀ7㛂"7ygF$JjZ1]X+g̈́4oIia3[M(p7:6[Kh /{Ti[˓l@09d|n{3֎ӢixvE -EAJ2TKLoS/*F-_%_uzr6 GtYiw$ ;~/^UQC4dy[j@F+4oLqڛ,\KtL\Eg4dvGO<7LRj[n=,C}T"0,?븝!#Ԁ5j);ܖ!밫c̢tfE3%d{uZd5m̰tsXE X,VB$rf]:_&`O܊o£]D3.%gf8mo نPp6 *B3ChpYsZ}%$e Y%A_X#ݶ S LgPZٛrn̵O@98OV40(G9SK'\r[jY3n9g߳*ٺ _!*LzesH0IcZ[R,{ Kw$Q ?8:d3UC2wmF3 hDWr+Ik|":u,[K?fu9vQQ-0s`Expx7ˤ]4,YS`m*CoO]w=\&1zEsRg1ZQC.\d0ԐW0B:` "WO+74YV!P\7vw5Nyރg|*Ǝ(rtZ5·Ryӱ=ԑSA5阻QZddp&3=62ːiз xzcұ6QD&N,y+d {=- =k14`({V4 <_$DB^֑/kc7'oO`QX.Oeu ch34.^^p e?0üv(v?|iIw9RX}C/y-^1UypmL* 3jB` F uCppgsŘ͙6f^*ZUQG@)zu'eȀ~1t&Qclwܣ iH]D2H"a4;6yP? G3օ}CL&z4zW2%>Y!YsW<=_R1Cڄx9K u: :&k_@+Qg |n÷8Y8y A7R/XyPcSD}<'@"] 4 Pf|#qPwxIBXr案 G}R:KHGyQ Aॽ-K&;ٻڝN{b?- -+mE}V1_춷C;OC ^iuZ<ɄĦ 0iBؖ<Q$molP۠U&"˙hCo+[i2QdNڶ R4tvU'ܷ ণlAfvLL@A!JY+\w?,@uA6UL7qL{;"ӔfQ bvb{"޹m@ŷV*m߫ 3psMoϏr(f(} Ѷ]Sݮ(.`TNuy ﳿd!JX 7aѴd[^q 8R)}k!BXBdlpUCe \L(VeԪː+r@Am lloQ#v;K85ΊlotcN.˞|Lx^8DA {C[) &^),jw&vm# OZf~c!ZڢQ.̠s]DuQ+FSR5pV%z CzR'٠0;f`In%ث/?v᫉87l{.=f*t]_@y." Il&iOY8,5˸-\+tҜj*"LmGw}Æw,NO 6a:Wm_J@LM3U Mt:XF {˚,3uV<ӫAC[DA+}`j~CgL S+U*@^íSkFv_!WT_3*>#K.L ٱbkAb+" T_K! $sQDdRcLC,d`ܥ}[}"H!V+p`ýrcq)TaEJg8'X̉sӻ{]Lzj&~ĀҀEB>0u@`q^7<s µmWm"%0]FvD63ibpg{NXi, wIa _e4wrz4 3 *ؼI]khy~]H;$aȡt MPq+Jhʁ&qgQs 0"=Ti&Ϗi>wlL@;R8|6l < D6ay*+ v-HܧQrܲnQj;QnX(;b(& `=G(Vtf| ke1m ,> #.n׮8h[vqnfl67{2TţtY6٧GҪMGjg\ʹ#Rs89j;3lDE˚ՙpgF,xaN;{1&V#RxspsVmӷR^.s5DCÍ;hyG]h@X4V v:L%OwۻhML"A Wk(1ZVge*—݄ҁ4G q˛X[B(O!ϼE%'tg=3FI;0Sch:ߜbd_i!&E#yd6u644g ̀B;Ł:6v֪W3?3-ܜPQ=Sn#Yd]XOlgnfzck!۴7qho.Pqf]hH%v%Ӹ%؇6TIJxcm ,pBν2J-SU mkkZkq=u1й:Jq٧$yt &d]; qAL|VZL'WgZݼL9QFq.F6;(G9QnS&vGyV8n32ʼnL@U(Œ< W)!4p_fcMMHkK;N]6B`g]Pam[_PNZ=K  :P.0beo݁^%rV:3j!Q.@~uK:Q44 [,@[Yu2!xsfގCgnş M ޟVw2 3Y F_6ȲF4ܗ#,(L&aϩ|E+Fu1jSsU3# RdƳK!+ jLM( l{`)*'ҫ:}|ٲE&XW[ Ai "9]Atz"x*`:mB;y0ue[aRR]pmgUHmJ4恚̯lP'=@*yilE@#s3PJ@,["m Kq81S 5e:YITi]C' "24f5 D7(Pz lgaA~d*EcrZCꑆdCJF8K"g!ɉδj5Ȁw\$Be.^e~JDNV.YOzשRuI+1O,ԾK-j&C[ +Q/0s.߇X%kƉ<Gy6ER";1 FjhcqxoxOo/u'rWJZL-Iu~#ޢ+rri_0мC"%,קN :NosS1/ƙ#$9hàO+9%&\1ho>[9sٕeExAg̚pB˄~>Yixz:&ԃ2Fo V4,S_k|pXxL? fzK+h;YoHS]L%o!+nM-֗#!ѥi[L=/R%`> (GyjY0=h[~gw+38(&+\o[OgcMYBYJDVhF:H|]0`(C8Ϛ.ؓ>+:gTXFta+?͝ l-=l!!cXđ`+:Quxٿ{Wz6]`<+$'zie5L8gA5tmI!l i},vuh}mM Q!!G? +gayDHxxw+ )WNcE?tSxp Xtv R>V3|x&2Q/ 2CUsqZd2f&:aO}nr%#^=C"ܘf:9!P38I25TP:*;{u!G%tr&A"p^`p߹UkYWIJDꮅO&DuNḟ@˜dxqo4-X]we5jD )g  CHh/,gr:hB]~VtT ;J4k™v[5=H8oN&eGnr٨XS|L*`J_K5QV.c0PON#ns3un.F>9+v)L-'B'ÏHtKufMmiv#%bXIG8F -?^.Pol_1J[TLO:t+6'nEݢu.|8:kFPT[j2v5[+kki^GUj'V[N3Zmd5C…[(UX|J1k=(znP=N8aɴ%ڴo5G9QFѭ(Gyz3ڙQku;U#B9{6%-4!1Pgd[۶tP5מӐ{{]2"DӪḕa5-b]A써 ,treܟn ?D&r|CfP2eƴJgC<DT"LmJbZ>:Lz K] 6 G uBJ3G2] &0)"CT(*vd9G۴ݟ$0e₉xuUg_/ OKg cՌ+q"1u&;ЄtfĖ~pN/~7#xGC?p;S$4 O crqE+NA'S$u6r)!")4mUD'D-P.RBp_K} œ57ر g:` eU JڛFo?h*nm*q=勢EV5Ѓ`4#?4Lդ/)ha:FS x  k#no &<ԚPEYc!` l[ !D}(\֙f.^Õ&_B!60h Rj 3s`Xo eQW W8|K f @["h) ֓ ?3kZG[ u:. bfds#N>F6e&VQ|vj'Đb)d.JwZrr*2r!}MTO6E]|'QwJY+(yrqֳ+Ж)߉,ft_Lꕒ;ϻ=R 5Kա.TjcG}zv&>mxN(G9QTVL/Lr~G9fܻYJbg)Xog瀭[թ 2[ zg)Փ'svŒ0SW XKC05p|L8W󬀎SmW>k}a^.%Ab7%*Ƥ6for4&Xe`Q/ maYfU|% +G" cM7YOV vT4~Uǁ뱦ފ n7]MljTlO6^]-l-2#ĉy pilTpk]xjɌˁT (JbP %HAlF;;wa̶$~k<Ĩ'ǫ;%R \r JG=Սi?g z&f9RT¹ #T!a83+fk򖾩q (V<5O&$+R[49@ׇP}ĒDS0 S~'4V#:jz{SXv9t[ 7h>]4n%? 0QܯiNEFJ){zXܩJl4 8҅RSqeC3Ԯ"#Bܸ\qYZaӮԟS2(H `,(4b:XxJ#` $r"R/rh"$dr eń Hkg'u9@DhN2w0s?!%>i{XԔk|K$6 `";,}NT.PgPX8ZNlidEпlƪ" SYqYh0z_|3*>_"(dC|dVwQy&8z-@XkvNRN1J4N"OCsq϶B@ %t!Fz 򍺂`@ JW04Ƽ` R}zw4^ Or6uјؽ.6/T~P[7Kp h( xw QN@߮">I#54LZ ?ܩk]#PsZ @yHH2O9}> = OGB,,TCYy @% O;$N'uvDD ze (`iD$9nhoY}uMZk2T_~@,z:ut\V*mYϠ\4-д9; {הViQe)^g Iaoĕ[OMU5F=G(OG࢞r{qꢭL-^(" 8Qr!IZgَr'jf>[\n~Ώ5ehL%U"q0hn͊.Z `j1 f U.g)+kf\n.τ6U3ABȔyWH uXq4a=>ap4#LJ@"Lv ccǼܜ$H 5}GaH=Hk2Y[BI) O `z΃ڹy[Qfn9 *͌qt>4\R`(I @fD{zt%('I } M\V/߇G0;A67+]HAh h5&KOn&P+;vAؖ!@7knpcAOw<6`mILil<!MT@N"b7̩aa#فG]w䨼]Mf]057+јKSUx$hFZ&QF?ɗ)OnD !tAt1 O'z.D9Wi>HĀDo~)\ׅѬC}))1 ҍ}ߓXm!ޣ_κA"ҽ3`2`hJc?Ƨ Ժ YAfPSkQ; OFtbq;:C~gy9%4ܡd]7u}6kgYD朝-X8'; ql4G.Æv;v`j+ - s*󜳄zٓmw7n/nm vki-|^4Z)=YH\_q\AG tX'瀒NR{0GτɊz!__.^,s2VXM/ L<'c#?#Rؽ7݊WTp_i1FsF6g^zTw_hx2@cAf@@a 5#\@ S:!t{ic+ҝ~EzV6QK/y,0"trtp gANXbʙjWʗ^z$\C;K)N3ǚk=ƀ"9Q_ j}sz+K*]1ZV[AqJke,7Qxȸޣ2( ^ɹ:+9ߎBBwyGzD?ۄB7@IC9 Ӈs(蕕hff.[+h |ni*2%MjbTbwlJÄjbEﶝ^ Va{6MvK8!|Vrlxf9[+d;!M.^Cb*_KM>;X8r 2T(7)X22m+׭pЉX*6;sm*X$ qۂt{$mk]ΎJJCe}5;1B3X+Ǭ9A)1Ɩ뤭{D 4t!H Y ESl ?!d?oO]"Nj<%I3L`q8Ӱ?<p:Cfʃx|} HA:EQx׃$q>i" 6߽ A' \*@P̠ YO90.N ΪJ@E=wL8 MdC'U@So4>ІUu vpӣ`1cCGJ]ycƾ}%XanxbKKRAyPSJj-)FXt]ݱ"˭XLh A 2\2R <و`@!K> 6jn+  v.DtPef<_{[y.&G񘯙 [^!5NkA>8ȼD(z<ٴi㫞*Uq158?Jgrt&~do}v֓B㚍\;bʂAOW d;{"M;EALBpoyn5ItrzUŐHhX(a\}nu_M(M#cb6 8$okiDPT\Ȇ5bTamME;\J&:=nuVb U{>7l"!QK TmW`wg\getIa("cQQW6"C5IogjHӽ.ƭ[]Vy57#(G9Qد5MrG! 1bR_?5] `;1A3quȮ":-б;MYC) !j6y2:]anK7ٴF))\T ԓY蒗*CE nechT;AJ<yQ6^]83 FKv`Vԟ̸_csTE:FϋR[L!:JоGeo)W^ P sȋi٨@A/6јR`ef{,48x@Bِ t/"T$D &LyM~@/c2 @W =MZaPp@PI$__DZp62Qn~~D 肬 |v?H塁!1hҌAh= VJL5)CwS^|G 25DE?o+~HHmA}οOQ2ڪEmoeA]Ϻ(,OY4ߨ&M䵺+  V{4¢Pcd -aXlVĻde W/kY}CρSU(u ML:]WspE ]sba4v:a_/+:b_E,CJ& IbiIY~ّ6GNgfQB9#AJ™L+^Y062折`Wݦ1vmV-j15fhA,IcM`bp @}Sfrzf=uWuzGjo9('A{$e6d|V]:[vαNhprG9Qr2e`M*}QW:^.nY)>x瑖 GY" Bf!F<~:36́E[[]vgdirt+[%kIilA$AZ+8 썥z cgt]sA'WU/j*BĆłDŽē`P#.IYj2jiNy]z  2 4=7a  Qn28 Kb%)V@ZS226bp'ܕ{]h,Uו-Wd B/Jnr7=RbYHD/uƹ\ݾwJ≠/Amʌr&8tہ`x{*}8(OZ"kr!hAԚ4;:[c KC (t/>PUp" >= v!!xa[ bb &[OX4 7z%16tJGH@GK6~½9dSY0yO((E]#8iz7gsbaϷw&!BsF*\--}Ce?5^sOZ"(un" >#L*1 "L?G(AĠ.1l>wnM^vD5|#;e)/ZQAJg j!Jtԧ-.{{W+azi!+렮M+zfߟeOghKi2xQQNP}[3u}mO;tuW#$B[}e'JjWu.wWz ]7QHOR'YJ3h]EMJ'@u4-:l@QYzB6hc rAYk5rz>chXc|2&kmw` Fc-ԓ{EDumKf-+4f!ӱ.Tãn|:k md̕^hڐʘLclXS?ergڗ{}:8, 4 qݙ_(+.** 䴻v[s3h+ anE|Ru9WgC HcRUJe8vl  RY˾-}=oaItL%q,Ivuo@E eLBXXFw ^bodA CKOKWڭ F'd+[s xU9EqCj!erEnJMha[A xj9/e/ I|=hOhX,xѾ{Q;ॅLvjdUy եu|aJ )P 3Bh^G1ԙ)1RY QN7$'zðXHDd m:P J`ЄE9uH[8Z!YŨȎir_w\Z xI5O'yU"N,cx3)ZACu6CS)5SV RKK꺨 >7w( IqDL$zW37Hf~,: X3gtlO3 [bGj9<1|}.h >GS f1/)@[&Ab7?@8]q*]RDȦVyէ b5(^smw G95C 8S&{ؿ؊n1m2[k^2l [>C. R A& vQqRU (BBrN 4X$X!Q,aH1 I̚\aNpR3B/*uf)%i3ЖN*<α {w$Yw`\:]Bd yVa“S W[0g w M=RG0|Z;KC&qQϧ_ByXj RܬM>_$ϔVAvGjHe8o;CC}XGeQHOĉ!(?)\[K>`']=@IQgR`hLlv]h WO0e-Eg)i׉1{հGs-Ҷ"C;L0Vmرf%:AKfh|Z8JWDhl3DC~X'0b/܁4dR^u!8OpcBM.st ^b#6]D.W@h^`"d)Ji;;9ʦ k O5g, &KqLa!Gd aޡ׷4IC=goAH끶˃R`d 4[cED"q- WJ{f (avgl' t{ɿ,eGkJ-\ NF =plvK]٠#(G9Q(!M(Yn pᬐAtb.bT3q;EkxWREQ"0 ;<|b O&:j_0E._HVgX`yR 8u졳5rwJeX fE"7(ʔ5 `I_tN0D6Uz痋Ǐ#ud~g$y$ RE%s'ޮS=fN:30[* ˼]>MhY$8ThW0བྷCvvrdEw͸ w?Z$9| ) &.Z efRn +(zW](li +?m4 J4FGx? ,xvH{qI<H$Uaœj%$1+!qnh_٤&k5" *8 ;)UdC!69nj&&:!k{Vu\Wsxu4@ JA&/.2Fn,z\ WoB&K쟕V5S]SH`ژ<(eVIŮwYg6PQJ{dBO6p)#J^'g !.jn†3"wH.&\I`#SX"L^iQ9u;;?Y;(ٶAgR\ h3١%34|(X,L<=v]CAg~W_;IsvszF6'lmP*( oAwmMrM3; t{%[fۑuiYw܅;`,>G=l(#®UXt^(E9bb1X}.q?CTآ@%Exk&A|& 1د,y .aOQ3iI1QfHvz,7U:S5P %KrSu'5b@?i++gLa h=cb ~ pP`wӊ 32ՇlA_R Z+\Y UR* @vM0- rځ/# ؂l{zg}[Rp9HGpxJbE\C"m5p5Y"CDL (Pij)jIC|t{Aa12%Q@oﰈD:"TR;]< $ Opоe[?lkH?1J{q"EiQ .+xdS 9.ƀ̂u!zE4zsA'*CYk!'(6.:b[ Vy|]IQ͵hpPpwes+KZ<?ڒtXbRk*i'"*1_l":2d)Ll.=w~ݥ} eo3fA OJD%6;1}$oc|^ݩVI! _2SHpojj&Qs9뗐B9y_- :9lGොL+:ށ]r4tR;BǮ^jiZr(BϮ %p\(GybuLw#:~^pkӟIY.:P0#ðv6v=+nY x Gɠ]+Wnǃ2.(gkGˌ{dSy5ԧ2;~]GaҸf9"- >'ؐ4Jq/ 8–Zb: `2 0HGAjp<).U@DvьDlơWBk!}I/3T?isBb/A .QA8nFmj@ p~s=e !F8 L'I᷻Oa 4ŠõZ`vkG ]:A[h* o඲ (% kAaᙜvN-Cab54_Ǥf5Ѕ:!h8kjOrT1J2 Ѡߌo]{7&ʛ"2һ DE&ÍZNgȅ 36q\ՍgTCLv}̳+P*M?9dFif]lgj铴hH<4@'j2[I\;gyI&UUu+ #D)O BAFACL|,Njnl)9eՒr891M )b{ZծQ4*VH5qB.s'wįʀ83lmjf_K|RM[1Y6e`c6]7 9>(T4+L>! $b;K; Uv  )ܐmOhLVOJy:u^ $oA"e5OX#j.z cn]q-n';x[fiȀ :ur+0'm'y*$Wrt3# }H|"yg \t]| 7l<8GEGnt5^ Yi4?4*v<.'|Zq\ͧ3dzͶƠ%D_7[HZ&`\݊E 4}u' >GiDAڥZ4B zVq)7m,,YzlN;@&7"Oo:P@cU4LN?S>(|U/]xVVk&UzNagn{"hzcԫڐr ?@_i3C*cFkVTytJJJtrՃ(Ee[?͸^ 4$ P'1^K~+Qat{ktk+txW,%(Gl((erfpǪE2RQ$HːN!;.ͻ]YAy<٩#~Nf0G.Lmcӆgb?N?aL5[)&)0[|MBKqj6vҶԔXsț]o?j5Lq&8/XXPPBd&'XXZ[(i==4M"VL띅cr7Fbo3cOIܗ`Nt0bt1Z,`=18Ji +@)~jn_;tRC`&z A19a+LsPDϤRȔ lx [K(j^p:{d!z +B_0qU=+W\ee$;"r+4O |QիBx9pCL5=d"Xk$x"jtNV}I`d?`XhmyMMj{ 3ama{oM%gT=+<. 'C^W"*ydD9 V^qiCsAD`|*Y@;NBkL+!?7[)R*pY,$&@^`5p;[uń?28Nx˘'?3Hk%yXXBNI5 H#cRƍ@}ur"O7Wהo@PRx.dM9&7}qvhMD^RG57[Gd 3qE[YX} ^z>8:{R-:2g,1#ٍe'$ȶL,U2[S]dyp=@!CKmi<֣_b3S7P9ތMc\%r圎`ZjRQpAl'$ƺD %];@[Shѝ&Zs֨יf$٩{??X0aX:]#Qrk+U+zU[1*8b0^^N zrП[ -⑄7JGjO>:`58>L\"nsMDCT#GuRq-r^V0kBƠ=RcsPҟpu! B .һ(v2 u SoS;Pxl]SԈyAwjjz!>R"λg t~K%5x@7?0g..8h*!o Cx9(43NHuœ*$3Ho6M+Wə&cT Muq~ 鷐VC6Dpdz27-4 [ɻ'>INvב.Bɘ ujv΂Dž>71>1ƗEtX\0.Ms>$ë3"w5iԚD%9P`98b@^ڋ>Qrg,;^ צPbG<w].lV&R!z MFMmfgR,'6gBZv \ᙬbX+q_v,FezF PQI.b7f}2qc~mOt/Ț lpEo9 1t8+"~̲*yZGY#,v]]pL<.8"QZ}Ghu#?eufa 02Mk4[Bt \q++T`cHs^Iļt{3甘'̂vYU=P#fkidp,bk>//$ gcz֍*i//'HWC;tm=,S KKdf.؄)ZVhda WC`A b.5F&WPO@(K)5Z4DPO]Dz& 4ɿR1XuWLKS4lGVVWW"y˱̝C8r+|;}BpO[{t];V?zo>&`HI[5oJƦDx>{_V^ ZڈIS'2'$-4gLABՓ_[KvU-Mz{}w¬gʔxC,"qZ8|`v[di?TUER?M t7Zm@@N}j):虸 xL`J^WS_Z4$]ٟyP}z6(6뾶?mw 5s}W6k(<ҥbc}.bxV:n;c |(G9QaqP:]2,z`Kbhd*pxC֓Utƺ - !SMPLOۤ:o=q[;~r;^s_ 78#zg3*jT+Yn-Nhe4?E!OAAmׯLs vb@r L`adtU44C=tCwd^| 9 Lʗ,p@BEӭ V@L͎N3.M8^^L6S,C`\!& i}Юs -qR i4f55XF? \q1_%>zo^y8,?\a@:mՍRGIғzppBVLX2zF )VYXFyƺ@Bɏ@`=\2\ri&@ai'Cv4`FDl<,̋h.U br#g#멗K Թ0LKVVsMs[ v |cjGCK2OǷ qVzSܹ^8Їz4 XUk"vxCNKK\ '%}%?=WnC!'Ԅ\ej(i]0fvv ƣ dK©6R܁ciX4O|DX} e̙Sp*cXRt£`L k}BIR3i~<;^ ~j/ n-f5R@ƽn=fsANK_~,'L%2FQr+)J1pmeX 0]n ARpu?+m:u=-g:S[ 2Pi]ۅfzBuS=!JB `&oC?1v攫ʣ x1F Px?,BOxW_Vd>v+ x0(y+ee@   1(k1$" <*YT+>kSNޞH& $:Cz *%a]aԔ9 2B2wҤޒjB}*a(>ۙ7x Rb+(Y'U> qwr|+0h=It؊~&-$B91VIW וtHj]W)Tn$Oc!”I\@LpZׁW+܌˅ >.L1oXhyzk23{O^me5õM\w |C׾S/fuCPpkD4'[%c|@<7"=ɿ+.H)jsCG6n7CiStZ }D!ɴcCq:UsgƷɦ^5en"b_7`>Qrg);j˻}<y9[VnB^YUԛSZVО>e:lXʝ .vp^lfcM{캛7Za V@jخ6+b^f, { $IvX,EwqbÇEϐKyO$dP 'd4p Ipb ̌}&,Xa?c+ TjDD[q^N-c:퍝3}f=[5!su"psb5zC% 4d 'y0RLzi otjԎv \R"PgH,c*gp}-;&Țc>e]T5Á^Yğq :ӟNת  \t(3p04c+ \U!(tԍ,?_nw:Eud@{s tŨ(K!7WJo?~aq[dӨ6'%\PSZbaZ4C]eySl@HSxj,Y8 W%ѯ[MrRLjP.O~m:$$EP'ڔ('3kY "8)eUb<d`=fh`KftUy,5_kJ( |<+X? sF@[_V"OT^缰{Hg3.G=_f&#ɧ  oGx8޷!㷲`6NqY<2<XfG+ށW l-Ė6syN MM؞ ^'LYuƣKծТ)teTQreLMiOv DCȏ|#t K sqVsȑPb(@߼jǁ7|"<\1JV(Eet&1n4&lપS iCݘf'B۝JG.W]C|9?\F1B4qv+FĐ8{cjde;R=^)xv“,}(?X!0)e2q6ax=ŸS$$}i^^%7Ð˪o(anc/TĖ_潻NNB/ۙ_S~ʸhWd$TW87iAګi R6t:1K{oWؖ-a%r7Lv?; r<UCxog=zA+;}B=Re_x!B'>1˩fa[Y i6h_#m;ٙc `{CY)&0Pxwny3 c!k[ګǙ"$)$b2LC]z<lT%sUS(R]-.+Qr幊i 遢PT&g,.+ƮJt{ FLi[1]g\, J: Ӿ/S?'M1wCφM|/>۠m?駜@% V~:2|/^e;j!]q՟%Or]x-̼>B嚿.L\}P_xXDq@"M}_3W Jr͛) YK-uEXhAGdt74_W:8"ip6StYD8bρnXɆi;و^ Ks pBeD|wwHk n=a#Tw]pꪬ.D hy y to܊aѷP\GD{n㕙amGaW&h<{98S R29wԼk$D8r`xKG]ʼnHo ׹P޲H\(>oHWDyEeZ mn.C;cAZejCbNE'N8lܼtOiTVYM(|?)k[g{ф̮E SAI6ĩ4 |o⁦ ^f)ukgSIZtvPvʟc\/j2/]'WJ[aQx+xJpmZIJSKwC3[OWe vt`N B,Y[kX={eLN k4;F4jy=yDK1∀>Qr?(.cev$bX9[Y\S_I<;6'FED.ĶS$;˛lн c;QsAuHu1g5Bğ Jdb_B6v^;elr pjRF_oXˆ ];m 9ZHC?v3igJy:@q| _OXnV w~^ Ȼ%CQCsfӇ2diMy F[FiXtѫ1.4j;RtL7v1E%0#ƞ> Yڹn>W{^v\ ݁}ps;o+s|{5ڿgY8sA"Q*f~W"I![Q2oI4}f/>}}\:D:WJ  쥥1 R5yL@]m o50W%Ci~q:ȮLWt TեQUmrXd΋Xw6` d!M 0T!P vVc>xjowŃ{u d%zΤ<aNo!QAIb8ۃK҅)9 bUX 9n 9RZɏ[Z._w*JXdCǖ2qP s 쭐 8=0Yk_-"|O/\`xH`ۊgxSgF6kgr=n #artN"0Rk8*z7 &oO2 ]Ue.>'jFV;}k6ip3_jv1 "w)t3:ﴴ+ [(GoGFrc{'0ǭkRk ۣ(}(U3%G£<8f5~c2q H ,^=M'%]D=UfmY|/--9)BA[=VV3TQnvStb1ka ZC.XO4;D a;W#SRR^Pp% qr ,nBt2g#@O&~aD%lf0tK윱a"#kbjnhڒ^^G*];K pV@H`[̱s^<4sg5Z|y Xj.@H'JG =US$@^?;[ZЫVی~#'t]EҎ/@!D#6p w6viwT@T[H Δ1@9p5> bCSp0LlD <f\}$. ͫ(8uSmRMh׳)ݔEcFjD (h-7ѢL nӾ410VK$skc 36|a +%鰲ӴVjC$-,i }nsLرoݽzYx&+`~}߇bU@H4&^4TrW0NjW'T46"DhŁ ;C`v*G<ۘ%Dj8Y)w;i?/݄ q6`EVVމ}a54?vSN}Jg!N ipV" lPl>F+lh&R>Jʲ"ʸbis̥DckPw3RkCEb֭ G9QNžRAQ>]\+ a 2l: ^^F3OclRm]m܇LjDv wLʴe`C0r a"=:{!!t/JY0eloS1 }MP2V(ǀױж 5Ϝ`͂>9N{[oA e p[ QfԅEkN4'ꚘhD=^sBSmE+rIF!f9<oa (zPpTE.6j9f!fm:vn_`+NQ|kc8uLŸؤc5`[marSc7HB~VȒ>,}W*zOaz@]b`@*^Kƿ!N>좉 QR6qkio{~0IG|I! iEc!Cc4'42WX>"KMFܟeO[25w Ǘ ɄRu,l#odXCtƝ*NO̦w M x2#,I= ;/Uywl?xnpX;:4nL׷9_ƑJܹ dxl c=Gʔ.O[BNTbn"E[ĿĎ:?W6cOX>m>G8|?L|g : )&םfĎu}]$ 0jw2Ym3gbh!3߈`3CCeiO9x^C>0?LPwH9OvpW<+ _Ό >X*\.;mV2 L4" 7ŔecO?\}s9&O\{]c cރ'ǂ\C!qS;S]](;sԚ)X:گj شzuKoi:'Rzb]يq:]ۗ,[*뗻%@;%)㶢ZJ!&+˖pNid`+]} A>"]=+e l`"L&5ht\hAAKDఈq;$ BaCĽ" ]b0!u:|ҙgj׌A4%}B,>,vJRKa>­ڇD|mx N~ 2%NmF{R(B\tFY}ʌ'ڴy-Ї@:;,b̓ܐ-M-зsKP0ڙ "WO<*4pjZÅIr؟! Tmpyrju+a SV|,^VspLX*^(1kt8tԱ n]Garɮ?Wܳ#>$;fm_BVIHSUy3zxyAa'"WX6LsFψ7L '6m`2%4Kʆ#'["ƶ4TOӟ+ +v WpbI8yg  /ΐ.i.:`(?SM b[SeŸ SڨIJe":xmQr PtY(WۯU o}ɶ;L"cn CgHv Ѱ&zӧM<0>5>/,c-|M.#2; KRUEh V]OOtHlE[& $*ݭJ{~԰DyT0cCL j) 9Ɔb3?dy\@\GALjj{VZc6w&euLje:aǁ8̈tE ^hs9Z;AZz|zQЙE݇" c7eX bo:<Ÿ᭥J3X5e{}ڢ?f+!Lx}Չc7d2) /@FTEYMLn6L) k>qV4',|ӄg/\s`S"JoH|٭ FA8BH`1e{+qY:t7qn.W`CrSOrqP -sGF &8 Ɨ:3Z2Oȵa=^ZW1dSG :ӴulȎ EҪ{\si@<~0x422haoV k0֎FJZdDׂi4UN /Jx>[?ڮ Dׅv2is枭 qiWV drMFSxp@\>ISSN rnٓ82zwo .>"Z{lx??#-gٙrHUHPDj&\~4ҁ˶ZQkM+Shbǚp(=K)ܖAJ޾$zڢTR}WTpQ׮@]X,4PKa,@$C7ჺ"v3SJ0`[1GjXp'3UL8A"?o x橊8use)4XB"IRD4 / 57`V91u!N':kcQ%@+(@L/2eLC 03tN @Vt2>=J?-[r6caFG~SJ/RZs,y*.lhH3~wm̃U.(?05N.XB{FFlMu=e+}3lB6:4- 3k]H+&?]6)"hYs%nujgg'YWjּa.O %+MJ Tkւ~+2Fc739}`?}<sh%crًS*ELcre#[j{>hE9mR1l)LW`.s,LL;#a#iʮjvM]oy476RB3n[jϴGDOwiJZeJq^++>xAO\7gڔE599,YbEEwe"r5qe2d#RX4l ~B- ;AE FzY֝ݻD#f; J&xKnM8Tbp=H*\3n0Ro(,Pu z; $+tW H]D||< :9{:}i$1R*>Wj2}} pCOی~ 0@fq $=$+ O3t{*OXO N}[}xQe"2qނUF ;."ϝR "՝];(ݱXn4BX: -.^Rɾ?yglV*xiztD+EL:G2pa\+a8|5AC<mAi*%`/H 'jt}T,m `  -~[b;[e.WmEu#hL9 3+n&*?v񹚳&gaV)%Iib(Z֍v;%Xۓ&WHua45%| wڏk>!N^Yпzp;=H]/F6 \/yM;0Z|'M@{9dzĒwA oN  tN\+ q/yթti^Ö`>Qrg,;hEvUlF9kܖyX+v)LAGYwZq=;90:]А/,m. Zr6O6?lw'R0c 7Z܏\,/ 1Qcy\ xI+hǓ^Ez)],( Ä*@AF!O1DwfiJ0nvdBrM{Yw$v{X^o,40)'V_t ϘVhi 3 H c*p`ك&C}!*û)?؊wNC}һAcipءȑ4PɣJxK6V:5Ln2N{, ?KihED@!>JB,ahn.1.:ycHV? Oh90ྷR 됡R:X+@} :ld keN8iТb>Um~ԗS3}W$fd<͑F:\Yr!G܏:}JEh;d268Ah;;7M8H14O__7M%'<\`AA9G ^`!#4ǜK/x49@} Dx"M؄X\n%m䖰vt+"m{:fE_he]o Kiё^7*|_оnp{No\he# USHR;}w(/Zv;Klz~U P=Z:\Ϩptzz|?v }e I[{= ֶh {}97=o @v\$s(|t@gu1y1*BRbI$`iK3=,*{kWsH<$3RָF–,( \ I)0*~4< v!!,LA ȗeQؙ; RQKQO֗"*E<= \qbO=n_7>6uK]-4IKQ? ?h,auwl_pBpqt3c’$зb6u5#&ht YDi+i(E3ߜ^f@~S G=Ip;kSݡmhVJtC:P{|(^ :,Lhp>)LnXf!x1SMɌ6E[z`/IhtnßrKA9#vDr7:5 EEn)d7=ZTqטf`} XYN3c-pDrVsbMO45\tq7[,=DH'Xv(sUt!${Q>-Nn ,e kɘӢ]P69$]J0TofmlN4>I(R / V3a5Hm' N3L<7ס:;:R@!P$6#tqg=:k+rN9ɥdǟ.zqsn?B}a)IF[Z4Sf+搲0o+Fŧ]D4441-G,+D%a(G9ʋ[OSţrJJx;2†X쫎[Y-+^l !Ŗ.غe+aOdL\v:tOf@,l&w wn! FR>~+8x;S $X8*)۽ş&ˆt!5` ti0eo}=(m 'ƏOh;4Ppifj#ib >>+L,Oq}(jkbjgcdC;zMІa=9aїSF5.fy!pX^ڇ.N9[iQ. 񘶐DrE"h! ~ [^Y'i=ss= @Kh"x&lQ۹=ָT.ub2R | &wE)Or,ދ f><2 Ċڄ&A.!غ)-r "X'd5> Mxɥt蟖离Y2 Z|4i> XX%R%!`ja9Z$-]Zw.1uKBb#t.  ng*Y?Xa+}vNak~VFu w_qd`|q%Dȣp1vh0]5 ix49!5hNIy -FyYʐľTh7:LxmC`@X8Gϧvf2}KrrG9Qz-Ղw GyPJm1".2Ci"Xz IEPQ}UCǚtE3K>! cQCleg=gy"?!^P Y9zp(&]Pdٷ$AQ(UdEJ$ S0BZ9dj"(˝ ֘ st=s>Mh&󦨤ހ>^u^S䋝dfwa`dқXM;L۸za _ѵdFx.@M"kW%^%s*WPtu [,ܠX%q_҂=+mC!xͺlADJhEд8??"V܉nKS2.$*>i 9PX+|M6[HڪͲ COsuyd4([z|ƒIQk\l>Mv"F<]pɵ}ZP~:=knJMʓQmC%W ~z:93d ͵c q<(NיGBz_:##vb9c'F- N6M{N qjsYNh Mp=&F } 'Af2nqzQrUŪF<ȁAE@ϑ-.mS0{maRl0yqMĠP_3(LKkSduON+߮m?>hVlг DPiFӾ`lŢ9u=[mf7p0LvR=zbv]h8@ pƽTEvD=T * ;̭!q@b&i/.&&Jbvsfٗg]p R%K!͑D!3n9|ZSjHpd1VRu[;SFoRs'qɼP@k CaYCȗB<&&Z^M0)5_.[CʜVNMv Gi`8HтI@aՑØH`\^NjxmbtB 19Rc>"XR~wmJYCEUL=fZi0eQKQ:IJE8e?܊E!Z0v ElɳSC)Ϻ.HVPOH=l#lY4kɘRZeҗd5Th@Ņ A=b{$:34O1}Qf (,fBڕ޿t&k.2_}eN\f beFuX$O0ӂiǸxtLSvbzό[7l/otNm }^i<W5Fla\S >9N|)3:Wk\KaV Hኝ/}aIyn7C\bi.ŗP$(F0n@hS^(6M0ɿ!nB+d`ݵM(CZKQ<,吻LĕM+:xguQ[___n~+6OqQ&;o蘘l\N4h((G9[@GyP^7vkФ@lʅ'0#!&-€5+Wn|pcl!=O3v# W ˮ7d|ez]I_|ʃ~&_ ܄zKSֱq-@nc C`]{_'n'B#N=Wl`+o8oqP,sJPJ$hº6 c}=ZY#:ΞG #[!WHx:!KKxnJZn{7 NFP"dXOA `UH |/99G4J{CQ^(,y@=u4I^@uQ v>*K \i1M+,Ұ9aŃe6qUDQ±o4-srK9y3xjSҐHRF6y:sx_ٽi'fkdIvI 7'lc|.: 0Eءн\w9X@6'`Mblolfϱȷ s?oF).3l5_o"8H;ڦs?~-^]TD|$l][j(7nzOKdh&Pu>^s VA:IqPp(G9Kó(Gȗʏ=1¦eAT}UĘd;(goggo"I *bXB"\_`jY8VlkfS@=.{`B~|rb@ $f!X^ZhiQ ЄN"x"YPdaxGcc`[)9-x7R^"Ty \&d@©6Ly1bim؈+,4УGwAE$< C 7!z0(L< q&aOF/#mu .6yb|NP8z2 O|DeKB{b3Du5a~sƗcj76S5+TʏxS,8XqHɉeLVU F8>=fٵOk%J %)|~?yL=Bu;,!ˀBMbT$+wx{6Hh":6?Fi"+Sg*"XY7A-`2}2WX/pcA? mptSFkY8|sLڧq*xC.jވP\uORۼCm43>4j lPPӋ"Hѓ^QRu(oC9=Ur}ٝ^>Zl%7I?8Df֐,La/+*h [ۂĘntv Ɖ.;|,$wϙē t.G0=v VCv2!]+-U'p bVJ.dț -sqy ˚}4!VB Di}lBœ0xO)3Jrj .ɸ'D"܌OB07! s덂UQ[ESnZ%Exj:(M&bۊpjT c>2u8ֲ穋|?[ hß ]ς)DL8FL$\7b0bhZ H(Q?8ҷBM?(q%P38 jedN\h.^x bf3qͯEաMVX*JX#':{UAKB*gGI"V&7'!Ġ;+U+:|r vܴPǧoP+4MyidR@L2F%0WewZJǀ/NHI 릵 'ꍾ:u\7׽H;42 ͽWoƅ;5\%|=A V,m&1VF=c)kc4G9Qe.d>@գ\_a9u\)( \>BecgR&Ϻokh$ 2B l%} + Oi l]`W*I4.-V3p=P bmлM! Ao^jl߰:ޭ2(JJTP<}vY&uedb}DZfVK$ O {H(8SW/'r,^yuP4jmn1g'BHPzQ^e̜PAcD+ @ƨX\Sf1%, 5'M9qo&EkW9A$oZN -5(tǕ$"R̗CZ'Qck0j^ UOi}"=VJzÎlY^1-[6ib/IBx?MO܊))ݥ9 K甒3R8E;e?w+-rk6Nݡ yto(ä.B ~cQl!4!o$af99(sfv<OfcwWf|tYlLĊz:6Ie;^WÐ4otAd)fZ.騢K`DlE=[CO UNˢ'e?`G5wP(G9siQr0zWp̩66s $^Eh6m\ǽc{nO bْFTc@ZS|i޶'g/Þvό|qlXTAKDta:RI-e$?l :_Q{nc06Xv=0+r9bmoҟ `!`9abP^V!g kpz,D ^Ƽd4!ĉ\s1il0Ƨ0X*páEl#P&vR LVoV PtOtfX_Q@ [.aMwIbtʡ.\xWˠ@S,D`PpgZؠz7QCZMq*_.c#Cgtu9&;s_5klZE2 +0Y &FOCiPaP(!% 2̭8%\64V~ޝGZgߢ-M&ƔUIb41j`{E&`GlP `*v("hE""Q1veD-S&5IRR73sl99|Xknw3y+m"/\|..ѩ{x>pޱfl~{OJdW;N_Z$9 {\$iFҢiKƟ>u8_fc1]s]kSO~n.tqI_ghRt+66.Vjv|!YD|XG˯6Un. Ř:SAeeЯj SF f*%\=Ϭ1-d]1 P*E6v<2*4fv@d$gP)_ZqD.?lU|Iw}` B0& Iv[U{^J;#E4S1! #8`'D]&b8܇ >y~q џV%S/KTCx eW-yH+i~k!ޗhqAdc7#2mpV#Ԕ|-ΐ2uUq6Դt/9)ɩ )lӽ$3Ҽv uqK2S4nsSK1i6dѸ.a22]kTcYq~ nB1$qږN e_ؗ]n7U|)(Jmx\DMmCoJhdūѠGO8 ;͠feӗmqq} eb4͚MMğYccS^:4 0zK۪R|>f=˸fo*6oZ}lqkqBJP,z3Ŧխ]<ǚdIYK5ÙeBr4#0E0~);.)Y9_aXt%'tZ2)J)eZ<)e[jԡjk#j":Ǯė2ehRbHGt 10zj]8&-$tKM3md HK[Bl6gLy'tiubODߕmO|GD4~|^Μn5-asUKx7/:)&L`DB]t6rZ %u+o8fF͍A> 1%[Y{ RlRl&Vf)IrSi!+ضv_XR,$&J)eПԧb7U x⦗ CT2qLulA%iyJz1eNof4&ٍ6uHTtڢ|gКeILN%U&ٜ0Y?k'(pXD1!AUjcreŠES%INS;bZ &i\V45(V|+JZ$k*:Z Ec80MI 3-FWSQW(U~sŖXc"ztwEjqfzNq} W{baVÐdQu%o~ڐFR#,;,J7DZtp3sv:6(J]o[`3@˃6lTv=Y`p!%[[&(p|glo8|Kɐ5y'"¿w?^Dh#]s4knq-4IϕTճ/@rAKS.KUd#6ѯ,$ccnSJ)e.@B%v-i̩N8&$$d空]ɱJ.7soofd L+#F_o zmu:]#{%j\e &I$M(yuZFXՌPd[fImo]oZf^ҿ]DI"AHMgd5%4bK_s0&Gi#{2iu} {o-B5DUh KJ? yEpnz%7:@zLg"cV8<z`aM6,ʕKD=M.;l#ˌqk"GKnzn6Yd#ǻk~8 Wѐ _B WNQhv;vmmn]\ļ\dhԓ(mksO7%ΣPS])qYf9]o[z.׃F5pe}Bm|wd}+H[fqң5 dIE/c[L'6LC5,*+\uZrGRJY,!NU ML#fWDrJ+V֏+NɅn0_6rN(/F{qNX@hԟKf,xD>pM,.`*ڜ)qarABO#>mrs^Gh-< ؤS^J'x;)Mkr~d* hFd2Ki{q f<9o1gXDh}jO4}K^"R,%uѧ?"~yҜ$sY2~_7g)lI;[IQ<1{ѣ]3hUEe8S(itѡbc(6z>J3bR03ba~z=Xy˛b"Y27 : C[SJTlU3'Z|s\)x 5 q?rHU ΰcalTeǧ&+K}aXpKя~Էd!OԶsfi/dg{{)+aл4 2FSNQAHfnZ=MmTz~vo2|ƂĦѭvliŀh+ ,_% -em #. 6Wu0M`ғn2F|*E!]MݷfP7R)!|SjqZ;^"(v[f=v|ń1hC4S"m,'1 S3ȮniQo7ļo4-8;ab|f5§k-ste2yɴk_Z46K.$Kњ79n`tMW2X|F璾NFZ[J)6\S]3`ah:51@=+ OŁ݁7lԟdQ[#idb%H/!X.L"yB.>O+D^TlX8+[~CqyNlN*)Մ҃Hqҷ*s%듺T&'._s̑ =ŗc(}k+7}0Q9}EQGacJkf{À|Oݦ%e02Jvd,n6@dCŏXOhzxˡ?G tJ_pk,}/}) Y8*) K9÷a ~ CW9WWIibÇ |cp]@|"|4jqkTTSh}mF:'^0&;_r,fU|%'A*W;_$(|ug}a[ .W] eֶK)e$slX+k{ylyyk_TƇD3EJr?P xOU%,'KrhrֆvpYg % ?D,QwZ5׭$^MoLù؏B&L!D(8ַ36cݸ0S,9&biMoS$cCA O#͗SuY&>7M&g/jѰߩ13\膌;{+Ӟ4 #3g^I*4`pA0K͖qF窯!=%SPj_ϋ+-BЛ\T5<6 Ig 4浮Avؒd!-W3$& Uõ}9]:kz7s=kկzKӝ6ذΖ7[Gq>s5!8+g֧1S~l0Ţ|IXǍAk: 4-9V,wj\J)8]VӆdTtɟ F&,yܜ~[Ir^1(>Jwfﰀ\ANv], 3kRfpkD&"1e6j}_+G| HWE- NOl{ JI=h 2 AڕuUi*Q׽Nr"[]$~Ѽ(G1PFcUKJSa}d'?ܮJTcn}s2OidtʏNr=\,_?IO:[Hd%٬" !ńF6=h$Yz\0hh%-CPFIw&F63&-LC֤>€<;ģ\j<Ҧy!:ޑ<iOhmu<`ܝD!b{@|3lHO 8' L*VҐF5~l[-4E&ydb(t%24HSRkIfqI'n{1n^4~ql2ͅa†=Czֳ蒛'}ǾkSmAd#!fcWG)juV˹6\QQ\ne@K#,. VғT}Ԗ(q~n5qmpT8[v"+`,M$=|tӌ%u#$>k/)္#mÝ&SV%ȃ680ut8 փ5JRvS_|`#сlb-&ٹYv͐A[\'x\N22- 9_:U1lWP$Bi%J1\NBnozӛ5lʟ~8E{R;k?ڊUM^s>4# !=F8*WFV>e%O!W@&͙,K=4)&Eђ7!B" PlN5<*]w򓟤7hkKBAӢ׬dW@öj@! Z{fMH'I4aעi&^ҷuIIo.tl4QF>d%b\-S5raJ315N!mGX/a^X\MrMNJǦ>k:tw]܎ U~;ʤ0Thk~ BLTt6C)=%Je%q ik,gۀak#CVt! , wڸ@,w ''ح[FuUsF]÷MNڞRw38˫A!j@ݠhd{?xg'!ȭ"o)[uKOB)vXYXђ6uꩧͰ@Bjeofjcj=+zFX> )tg G.qi{<%DRt|ufi<::$MKteANg6'cZ:/?+痭} '|2v7ʏ\ȝ;Hʧj 3` 킐)%q[ +z d5/zei:Jy ԰;SLL/6QlKmf rBZ#ʓ\k8ay&WC"}3Eƻ̦{ΙlRJ8Je%직ysRY2/;2!z㼢_p+jŲ18`1|gzsae%Tµ1"B\N]\жARjctymŎ`Mt&2BmS=%/zvhj34=g"%[\!cb~bm3Gc&uT,\mFWsӄǜDO\ffVTJ)=[K십KY(AW-vka(/mr甗Ob`æKZ$ לZw2c3aÜq*qS6 mMݠ0>%#s~`XnZE-LxwKVJ(9uʛK\R];Aۊ.WQƱrye-s^nJ9,ǘxE}DN#W2wX"-;K0Au /HxZ`X3YcB}&^ӭЬ9Hk:PV~{,4*.[;(zrgK_c)n. ;H]\lpqpAЗu-oѠ]d؉ZAr+ ;등H0r_IJٱ$ALl!C#iܒU } ^gC zb-d) /odڮ{k޴E3.#C[ :An0ѵ?(Fօ> Op ϹJږ-LF9_Rs"4{ZszALͺ R,ԝ=_hg30fÜadtxG5XQ?dg?,xjM׿<ю%SʖĒՈv,9M'm'PaX~4gjoL[e^7WJ)ppLR&iG)e{16 2@*$gfmk 08OWRDL! 6(B(Ou=U$$T}sfGmj#FrѾh\Jݡ9_i1(muWo~ֻU7ѬO!y_Dch _&Qp ntv$-=tEKi=i)Y(E=+NT룎:* =6I9j/ κXJ<.,53-JˬkP#gęg9gJ]a<˩L}V }l~rd}ځ|͈TfK(&DЂ;lطΤFh/i*mI(<FUǜIF[L6eiMQ{fby]`0d/EKsLV"ncCY6I|WD^|)MJga-,y(CPKuUToe T°1c閎lk&RJYKF \* GVW;Q)e{սb~.,Yd/N8e,wB'k=9̺vy;^V'0B&Jɗo;Q_0iN_1\8;NC69J#(-~E?J}Jv|v"N;SÏ8V)Ї4IOdǪRHIK%6R}/GW@&X} ^S9qn] ?۠`dJ?׬<\vZ:sJH1Hj8nqkÞkgN d7ҜF7UsJ'ңPD_[6vI^.g*1ڲW϶H;l}]Vc]]2xr@̹M3YWF.0UΞ&XCM7O"%IwCMn8!UIͤn+ 4#@5D)XNlwRIYrHSY[t_*,8L8ӂ[J!iyF2 ͸/$D,_߹/AX'H$bw8qu~{]O!gp*^WT$1՛VSl=cn>kO&Km~ғD4;%6Dj!5$<%w]xۯpԠ ޤjam(f׌'H›IHOv;z^%]kRfyǧ$rҫkI\T#{T5S1"43s6: kfDa/U݂ <sDE-uɼ\"$.{*Pl4K$Ѭf" `Վ߰ G?Hm2#9H498 JV(՘doۋBܓ)!(h^(C^P4hCH#޹cB7{8m8ev"h0\& Dy!zrGzo3̘~QP8MGԦdN% m ^ *Uw(eb7sdMK+kڒi>R&,t굺]0][3bM>M-k(2\h#%ܐ SMvʔ/btEN0XR\^cږ< [ORtU8# sӷ:}qdpnS"˘4%6VJRLN|+cTJY7@W&2pfj-ïC|6bJS0cDL(-CF^dUTU3fbWJEw3y4ѣzH Tf-3yOSO&*ۦ>lJȩ1蛴Mv2}EEkN2u#8`l y%:w O0KҞ{}33G 6dC{|Е\*瑻nRj\[z[϶.) UO}̚{VXOrU^q]Ļ\Њ)\2eIu#YٱHpCHe;t.r5Ɲds]N֕MKee^dYbmz(کI0F~7wtóow]JقL#-lٞ6oq@Y^L&gu֨#Z4N\aG:? -OgW+G(W#BB_J:&~ETW S14ύj3R5fZR!q:/r~8~{x|4\5!ط"`$`/1"lr*:VOcFJE&%@Zzk_Ս~;^WtqMfej9seE![Sϥ5d\[G1%-M-lO.;$̫95HMz f.h̲A$ xא{NDÃhBHe) n*Wmt۩0MeO/Y!fL'WzPv=sӉ }{";]Dr-~_d*{3OZf=t%$;3M %w(6>٢Ạ&495*ױZ(Ҹ#?W411/| elİ1xڞĢD'UYÑ=4^{C+39ŎݓT!@ӚO.>YtlhO3:fs}δw7d{[j'1ZһyIcLvin5{ |-;`pȸj"=qBTz#HJVu.{{{3p 7ǖt=xV8C_4 Ьs>';g鼞bA=ן^k0283+]gO}Yf֗fo-Y@$**[.,:h+egZb5ֲ-(Zz}J)'Ȁ869H!r.5Xno(W2bB! OmnkTBɵҐ,lzN4?b.Kq$u\'@Ի d_(.ϑFj#s1,5&R VpCF<]>oR$dROzLcdf%۱1Jvq9)ĩHZ!\wtj'le?ζniT60 Y%K?5?6x[Iv -6In6P4 ڭ?|do𶷽M0պ+^ CzKזDlET3C #@+kFq{#l AsW'7gF#.FuCH3LW M'+uRrkMƴB;cH{ }P_6+Hgtv/O;mp8ڈ0qSEV5-J9_B)s*mavNi*T/a+04+aӱAQ횵7^%ѳĥDDUU6*H˹5 ,)ҩ"x޳)m{:L7=DXZ3fɀ&Gv҅e9LbAxDX|?piٱ97#,6ÍT$tT"XV2(FCId:11*ې\Y!1I+R #d7Y˚ -}Kvn'*!LNJTN%^5qLAVs-5y}LYvk 39/i,0ICe7mW"zofu9#PMKULj|le-xc8>̫XdemHvN}ټ=]؛'^{i|3"{|3q6mR.kO{C*maz1m-FJhR Ya L.c2@킌$W)ytmI-۵X`Ρ=X?)R[3DV~h7˜S@8]pVYt\CQOY;"LI2FI'Lc^HiOaLZ$8k_,/ZwÞBȞK{XYUR[nKʶW t;Mn]"xǴEٹO33Ubs-b|\ ?b}SOy!gsAp-Gs-DX87-+lH0l+`䲘:>a=U@;eSIƄ\ Gp=r q.,u- ڃ7,pۈ K.s,HD6ԚH/QpNOX< %I nq*ޭ[qrJOnHaw)H 9[96j{r[?:rRVg'2k%[aLr1}rLa$Md . HLMI11l<#zv*Cߗ VD*t%&NU"{ :cV̶oἜ3WU,8yD!OMzjL=smR'$*!fhp@|-M"v[u C9I7{J*-ᴔ~jc%BGz2B2#Q\X@;Պl K[jH*@}i% f=5}м {APv?7gGzun ZkΠ>GwN@BpTYT4ӂ{/m ҝuWIIm4 r{E;̲verѝs5֧S;{s>;+b}ޒRVʮpgƒRc #7;0\t^0XffN_dzdYˈ46ٝ؅$u-GJH'W{o"1!YⷱwCKڬ;!ƥ l=sI֖I+(hDc(i.Uqwx5vcN'qZ 6}]2-Sc}3kȗRVm屘FEJDHbxxGDSն>E)Dg& +limojP@x6qBfG]@2)Rdd5OՒs-sĚ( Z3tIGuQA_?9BsZI289)F^j vf'l|4ݟ,; Fߒq3݇J!47U :xlvZWiCzoJFRv1?7܏aoy8״J)& کJ2b'K1}€ie/t" g*R/_tS҃lWn:ۣHC`j_a/)y.;fvJHO_Hsr%>oU=2=+Q6@i[&(E֐\%d,N?]QR|(t$kgtxgi%\"pUt\ Z;qv1ޝ[j#ߴAV3p]Cu`9ل͒+g-Dx饗JtoYzJnvs׈O3,؝,EڱaF;׆p{Lkg3BLnU[Mr+=fVYN}܇a:)y2&ۚWRzZZL1l4W~֋^"[RvCfُ̙ LPDX,9cxSalf~/$[CL3nK Я,DLkZlz*fl hF"hD2F[ziF_;Q?}5sd|%hX/!K~gQ_@(Lz',=X<ޣHo>ҳW8zRuʹwO*^d95y{nz?d%ot^6?UNyiJ:ǒSCմ Rh#E2V/6+Ζcǜ;%)'gL~k:Ne*$HNиS/gse=L-fA =4;L_&Lm+zR%\gYzs6ۮ.hنuZ AHƵ2fCZ.v'v cƵ{fni`TSr*0-X3Q֜"qd4K20Ȩϱ&1?t'ڙ4Z|a'Fv¸3¬j|6j,'t*1G^ּs''CMNs/3UItskx+yqsbdq)/U[ZKxeJZì0LJlƞ34<ñۨ1S6}֭%2񚱆$ltsZQ>Yjc"ywk=H} ֎S/ya1n5Rb96^+yTd'T[)% D2<>''*‰~{4$KHW3ȁE$f! [|%G%t69d?zKYڲd fN&6Z鰬{;te7\9yn]c1ڴT7>yު V {㺋qS!x#5ZxLӴL4'i>^#Cdb80UZ46;H_L f1M8mFN)hk^ÆjBF9 1&aM.3~LhnJ23H f`F™kJ) 7B;(Ilp~ܖxrtŘ̩ж[)>kC?es9-{qY HiO-Lv'9 Ssa٬)&-G:Ch&1/:rImo-R/SzQŪe2͖rU#'UYktej\:3g30n$P{/G\u{JyJ ްB5Z5$hT~38rFE#6.4b`Ңq;̈eE;\;7^s+)eY$BzEM5S4xnA} e +eWeޫPA|;+m3gRJ٭Hh^s+qB>9\]J1,Ѳ%à ^9CUL`є߻nXTdy[>Έf%-C<#ؘ(Ɩ%zOMHJx>'Cj,,t ApiZ`GaR>ڣя~4isɴ]JHI{rmn#cR׿\&sirb"xݏ}cR?d*2Sx|u'>vH_uΡk?}3\pclkى(zb+<8GPii9 RKh5 z)r%{"e0g[=etc2qV|= >T̔ERw ea.-];uu$>O[lFᣵUw)/'7[j4|m!6 JJXy睗"\+䊧JHI6(kb/BbZIT$8K#gQTږv"m?Ϧ h|c F_|1+LS$PӲS?Q6#!s,9ϑ7ޣ +a= sbfbZ??Ѫr吞O+"QSW03TXAӗu%:~2V%t$h 2aZ 3u:8+S=+zWhMv< טְzk M(/Sںb%2}hf*u =\A&WJ}H9t>[x#//,ebi qC?SO -~s͂s,ؘffjFiX#Qx'z衂m1mots0KzkqeEmE0V&ReAe~S%S(&ջ=:b-8xl7Hsd#;f!ٙBzul8 eM."O{5H_syCo `IǖG0j t暖E>Z[ S;mLޱV C}j#8#':;-ox{ӌxtPjK˹6Kdn~*Y5]q)^wscaٲRv.t"qc:ݴx{ +ϕkf]:*Q)/$'ݏ #aF,ŴĜmoW4}^mOⳎk7w]d&oLcfEJE˳Cò( 4yT #-ԭDf" '`#M b}I3"FB2fCdg xuA,yv,iI8FLnGʥ[Zg_=T3C^2-9|-:`NKKbΦ+իIstٙY<8qkMş:QVw37F8okhΜmpٟep44_磎:*ϩ^薐5Xy,QR6(K"N%T{&WJ}Ƀ?Sdx-Sǝض/ϒi:vRyFgz,K'0{Z8!If%Jo-˶!$nV$ӆ?Mɲ..$9Y\v@f)En4@tQ:5ҞhJ4 $>S=F:{f'yHGSe*㔀4'ӎ\q~>xޕ%1a}G=C[= f^կZ8Ei]Y9捒=V[M2}mԣvleGVP)4FN4JZр5c!^{f圁͋ҽ&uJ)#tTQ+$15<|&9q+SNq'?qG>"f@BLvbXGjF[yU!Y@V-N7^wIe*E/"xk^Ԙ$?G|SX$'R)kxՊ&yϷ 8#gZf=Ps:,fʮ!g^]HR&ysl1,tY%U!M/J6 7h̃>'mv=CFEnq0 92bxG1z>ٝJs9 II*607" FJbj *mD;̴ COXk\юyfhҮ^Zj.G7mGjBV}-++`L֢4MHsrEsRF='$Ng1HlTo/'$ԙR6;\kQ{'U)SƳ1̝AH])-@XJ+GUL/teYS#h{o}[ķΓ{Ңl"N&7#SF91կ~5Y\qNqZدΨj)kb T2Y<묳o2138ß,IpL &:SrI̥$ 촒F tg&ZQAuP@G?rf/z6â/c;5Ȥ*{biZk\>)hoO}) ](]E Ccʯ96 -T/{RvshmBX"Ff!-KXʎAE9򕯔f(Owc9V8^1cx(Cm+@:w= F"c e1u)kH$Q&}K_́֨-oyKJZ4=U/V,9YW)UWm@:U7$Z!O']z饖"khd> PdO gS\ވ\dR͇*Z\z'0\*޶m/d@Os׿uߕ-=~+Œ&Ir,ida5u;Iazpumh+ ʆM|Tk08tIz--31KԹoTY+hHr% KJRRbjco%W&a?1I|I2`(Kz߱[--^)aBޚKK0Ó[sғ`l2,6[QM̥>{42َvzTh2g_)Gq匌VȞgvwgX!s Ev2]3 W/͹_-S}Mv_<=|)*/D#Ju3ap%+):39s+U8h_CrNOd] q'ޡ2{G.iﶤ~'$Hdk$2cCq5Qڕ],&k_Dh49za]R5 IFOVJ)PSS}=0σ9 ,V/zg"xz2e w,xh~hKhʓi$!m=O()ȷ>{Y;ܕ#o S+ 06J)+a$Vl_gDS긶&h6qYԗ)84r[Qr]CtޤEKvrsfz' 0 N@SuVGtb;[C#m%|:` q9;3N>8خD+;%ZKnCJ34&3c0 Vj5iZfcPm<`ƝI;O+s hYǫwERJ);M..2qV}^XA<;lQcRn˸t!Ɛ*墋.fE#R^bZLU/AF92b&JD;o#C!@{&=n%9I1,e= yڲ`.UCw}ednfq491!\L؃qpk xcwnek^%I6&C{]Ho;,@ W.PQ^ѱ%|!ޤ+g!t<,%࠵y-R6,˜8?Ck~N:IO3 ۖ,&fDSu򴶭#6n%\"/Mǻ6_R6)UݭnN}6ZӠMUg1=UhVl+2;N#ҠűaGzI)!TO=?sNZ1{Bt-*5Xe)oU?!5< o6yGR֊tIJI1; [پH86%+GjÖWȉgȴ3ɛ$ϐ<&z̜]dL{וLMɸlXRYޮo"Un:#f b= #nѹEu,.q>Esğ)\sϝ]$4h)=Nxɚ126< 12ZHu1zU^WRJم 6Vݝg-+o9R<Ӌ>X}Rv8i&*D Q%Y /s5`~dw*(%5`Q/Il*ROOƢ'P\զf ;c>Y?׾TlvoRVC Z0Q5!r[𶷽d,R2rhp#$M*b;0֍h27syx~^ gXO_omN_"ՋfSmV^!J,ʆ&/UzT͆M L?+g*٧ U`b2sN%/ Y)Ƈt)lLr`}_0LfM{{O%_vR䌄O<1T䚉y=XQ7Fh{٪dWQ\hr."X1VC#`%ARWF#׷Bz閼e?OUMվ7 -m~WM)k8*MtA0 .]gpv}&RfG] g?53H2 ]\nS}mGTb[ -9S\sY2D4Ao^J,lb*D%3 k-?_ͿoeJ5׸?6LUεd{dzٴ.;ߩP*ƯT]鹔R8\8Tqvci0yd 2=p'ϗc'\%7_g k m/Sԥ?B%h=s5Gζ%V% NsȠ̈Ch$P*;-P,q$hwle6. 냾i9,Z*mcNҨzGAӲm姰"F{}]FC'qhܫޯ?oC 70|%ڷoo~3z+ve'>j<\@e!T Ǩ;0[/ZGbΪxAy_EX*-IRܨ>1׽5M1MWل̘Ͱ˝MH]VcKַ0~ve%ZDg]v4d Vܢ_ΌF&B=l(ParG3,% JWY5K9DSe<2zL.>yRv@J'}{:qQG%9zH)-g*nIܲT6R(B< aj|IQ79rq{H?|9u(?\*&h.+4\` .%yQokJ<.tbeb2m^WRJ֖,Dz| _wJ$"Sdž<?3# ~ T6J4;2T3R+2߆Y#ARavuXNtc #9hЇvXede I$ R֐vsx)KկeD$ܥO Gʛ\4Q=yOlQ //j8 mgPU:]ָG_&[Dq#!K|8)̎I! x@z3*kTQP|$9FY/n)tInݦBjJ7Ly4H6Vm笽 ӎEC}V_hԺn*-ֻ ]J)[NNۭaZE|)e9E8F׽u6;op0|'71xqė~ҶwR)Q2~S#XF՚}@Tɾ{kg ^ـ/'=[&;nٕR֖JG&'>+\$̖㿺[R2g}iO{ڻa5%XfnJכ9Y/ ɅæY;yS>`:l~YA)ea~RvpOKUڶR6Q__N-OEݭo^5~# szd|Vd;&֍lG0r4^xqr2Mt)w|}s:K 14S:s+k<=aΏu%Z)e[]_? h[" CC(EQU0mʬ%WX Xx~-muOVivB9elVa *C # f*Nr1 mofMDlyiSw Ez2G>"Su/% uˢbqY5mjXhyk_;+m ;řdh("f؏zԣiKRfX߮\eJx[? NӔ5׿^/~r!"eF'Q%ZGtgR=2æ#(\Tڀ+1.\ַ̯B䔪hm>כNe%jyFR֊iǏz CwƁ~v7 p-PU[rZ|g*&Gq=yO[|YpO*9u8蠃sEz>e !'Z hs+g[O/}K?`c`ꪫcȫ=FӍAR~c?O;IG~P%m.[:F)e#wue +6A$ȮR6a$7JQ5K ,^?cA<d')L2±]}Ir*<ӵt֮Q4rdSg?vKYsl#k]2E"z e䬆NCHVug-) F:#qgJE:]vg-ߨ RJ gᓽCNe+0{ァ|RNwr7ľ+2G0->veH|+ϑdLR$X!#g2$*_&1`R%Ris)pmoe}ʇ5f\!Ll֔?c>`eWwOȰh^k-Ye)XρhjN4!˿<Ȋkf&mۥ,Zqgԧ>UD0З\r8`>OrGkhQ֛hf僚l =s.r2O-Wb?fz;& }''2dUG˖Yur0e^{]َEW+eI(?>y :;]M`C%d1o퉹x9[UL =,S_re)~qy CN(ALTFeM2a #Mwo$A{/i !xpJyE\}fdېS);}5i>{N4g{jmM|.lB{o}[iwIr zg/+-ih|k^#Y0L$fR$WQ&Єi銄*;%5[Bo4k41R c}iFf)7XL}&$0)̩c:8M΃`Z[JK+C\?ϺxKD!oxӗhi6^y啔_sLnIlΌu&ȷZZ,ub).}v`ZG%~'zK):&[^l6ҏxDΘ@[2q&7=e/.QLlvD&C I^AH-+)fKٰ<D,hYFbC Ve ??/ƙLKz.wvH3ol2wUsM:1>Q@6i9D_ {ﵝ_c}Bg%z"$QsNJ); s Rc<`ؙ @v R[lRJYPpX3o!|$M}EӟӠ&nȒܜ0=tH–JQp3WV>)\S.wὣҠB2zܜ{̠544g?,sЬEݞB]rc;mA)-$0n1̱\ı'%anq箛piO.L1袋>s~uEh:¯گQ~5?_'$,kdڏ%A }#9Wxv;%RLܽկ@su'.nS,R֐% "\Qlw@9g%UHmHsv;=,r);k/?m($QT*%K/=S~پOtܟ,z 1Y(tQs;(zn:>ǐ4M޿mo]r]zq()OyHejՋɜM͒yY]YwƩ;F4pX\wFK),4}{_$a4oޒtRJ)ecHr3Y9;0*d˟*e2sW77qg7a 6Rhj:{u< =SxM}iSv`Pߤ?gq[JUշ<>_UDnw[Xڶ2<31G m /2YЉѺ=ljH Fh)ML>kr%'p_ԌV,R69{_gO\lQJ)y6y{#?Ʃj͂YӚxc'yKYa:Djl C>qprgvϔYwKzX5D+u?|Fy2UŊXF_H/PӶb.K)hJ7u +0ց?.U˒hs)alkO*e[x;s9//~a7^Lddd;s6s}^62GG?zaW .yC^y! QG }Rʊ20"')[e@,r{,R&go#8Ǩf.9)?,D'q]@sf=̓Pn)[O׽O}Do?_W+FZR .y¢;DW_)y-O}Kգ>ڝQV?re!Yv=l .q<=`]-}V37xH [I϶51cwEzs=fJE1{_~AR65yLo۩ߛaw_A>#%1S(6~%r<cDiqiQ9>ّͻtY!UԵ59y* 91Vb>) q1bXɦwRJ)\&YN8Tf hs~* wWP̡*iIYV_tEc5@eygE/?|jϲs/%@ TX89,\]sjg>묗~z¬z-9XJ)e!.36$8}Ӟ67@w\!+,NC6J)RJ,>l\7x7sō;+x^GVv^*0q@0fn/})9Aǽu/J |vyʤ&Mne )_WUVWO{ ].b/TfZhRJ) ~뷲:[e`%nu[MoWNJ 0_RJ)+-h"ύTccaO4*(`j$9.g))G I۷sO.\еgLE礋)mkЇV,/[_NaF&E8ѢiCt-hJ)0 =yyd|_^POWa%RJ)*(=YZ f.gp$ų2S&ooF$_fݎ=<9;vѝ}+n>˦o}b1{YXY~=qHs {FfGo}#צ{n)&yr<2 dlvҙS~jl#4{O~_l!yתmiM+ RJ)MڦhE2A3ۍd@k_S5ݱG /fnq[a֮QJ)e6F/ve+qaL~ '7i@5 ^MUY!ܩÕRJ)l)z4'1wë^*3Y3Y٭X#QN hZ; /<蠃*ToPAɞRl 5dzlBiղ-ep@LaKmNwہuQzЃo;/3a5Rnj;lޛ#Cg^3l3'+RJx9Ŋxϸ3Z3*leo@HG}+߅-Sa?%_A1NM.@V7 0v782V힕t׿s/JF<Ts)ns۰Ya)LkF)RJ)י!oEIJRd'>`/Uiӟ_r~s%Н$>Gǧ7f7lv!w=p&3/| G2DltI`R /s9Ge&=EXIERJ)e#x |߸YK RAH)RJ))HA>_WR;/x$br?O>1{g'>s cgg)ƕ/_RK >OFsڹْ #`ǀ+ v~եRv>7s`+1z:@B[6EpհWcs=L?#Hr ƞ3nzӛ<:WӯM=O<7 $Inwce~v>ٳTWtUouY9u10^J)eg27X|LOhoRJ)bn{e7$8p+Efxo[9Ix1Xv-5P}-K$o}KBcX>я0; 3þ=[bC.Rv׻2)O ˦kRJ)r"]jмn,RA;כ)30&(eL<hY:3D4?'F|\=/iCPU=4.RvEswcgklצ'lRJ)RB_kѺ -Ge/{׿(ndeΤg59O?t;Ί Z)W0-ڞfOyStX<>RJ)e"Au{նW}6=sRJ)R30?C^ҙ96Bo|giά9o>qA{iTTÔ& 6O{M)M-lnv Uzt4+-RJ)R@ :x(N}g\uU? 6h|3{7эO1K)nwv@}Q5Ra\կRJ)RJgy_z%\"+x7Y}o<03Wh?O=__O3ZiR&B l۫>^_i)RJ)em27=`':G?"4_yn?wcҗTfw݋.H*7M|5(s=s4jҟYJ)RJ1;YÁ}Moz[zֳH7#C 0I|9>\x_|1/A,ȭ_~R6Q{ƭUy=ovRJ)Rjhf)/DV+>s)9wwy!E=zJ,䉋y;xFRJ) ӌ</SʯJRJ)RJ)e|}n$ӗy{uQ0WnA3L8K)28>묳)rۿD>#)RJ)R g5K)2œCK)x5nxΝRJ)R6-P5hRJ)cJE]2o|˨R-#=g)RJ)esݨ6ӥRJ)qLLV>Cǝ{2YJ)RJ)RJ)ggs02>;/--n/RJ)RJ)Rmo{0H~^,T77YJ)RJ)RJ)߱{O<1G1|X}>S'mnoRJ)RJ)R<#YyG_ꪫ~~a<ଳp,G=}zkRJ)RJ)RJYZuk~|3zf7Mqa)RJ)RJ)AVځ'7WJ)RJ)RJ)ksSG)RJ)RJ)Mwv {yRJ)RJ)Rr7 np2o}[Ӧo{ے~J)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)l(ךRJ)RJ)RΡ"u)RJ)RJ)ebs^_{)RJ)RJ)RJ)RJ)RJ)ei&r)RJ)RJ)u׾vRJ)RJYc=%RJ)RJ)RJY{?RJ)RJ)RJ)RJYc{^:PJ)RJ)-zR&wCX)RJ)RĎfەRJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ);qk]k=PJ)RJ)RJ)e/RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)5ֵ/a5\:PJ)RJ)RJ)ec=%RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)u~ RJ)RJ)R֞k_{GRJ)RJ)RJ)RJ)RJ)RJ)RʮC7ERJ)RJ)x7f杖RJ)RJ)RJYc*@RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)ewڛzL IENDB`go/doc/gopher/bumper192x108.png0100644000000000000000000002036012412656734016403 0ustar00rootroot00000000000000PNG  IHDRl`*gAMA|Q 9iCCPPhotoshop ICC profileHǝwTTϽwz0R޻{^Ea`(34!ED"HPĀP$VDT$(1ET,oF֋oZ/K<Qt`)LVF_{ͅ!r_zXp3NY|9,8%K.ϊ,f%f(Aˉ9a >,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEV裏>47!c1 />{=ocmU38-X^r˾}viwuM7ݴ~M:=eQzM\_}>~|Wf&lֻ+? ?_F0`0 _Z'xwnݺQ$~'?q]t;w } /?O?}~C~>ؤ4/~㏟.Nkk 5,}o_.;sXׯf!SX:FѣǘcY={5P~y :1V]u_Ռs9g ȈYg rʧz*IϫK49Ԛk邸)bcEꫯL78DոrWOGuҥcǚsό3P/<O?=Bgł .oEQ K!X7/_c^"C.()ѽ{O?4RK-G#\/Cl$_|#\{4$bo^|E. Ubs*C\~-&:PG}4d.s)C>W_}` Z14ee]""`6fWo  +|_6߸3ܖq<c57 `c{)m*~Zk%Wo㍄C|xL;xO< ''dUVm.B K#\rIzE+6d$N>d9m W7tY|v'xbb2_[5\rI}ᇞQo 2OwHu+wqn>YƔ߼kv;j9"tRm1W{'tg!7O. , -P2IeNHkP -vМg`,n|s 6̥ED"(` O9唝wY,BPzۢw^R[ǀ DX#وN0*$j"+(ѯ:Ʃ:"Ա^{uQ$ H)"(2・Dn%*::+;= [oVig6 %֔߮ڡ('>2 X@FB=PH7C?#V+}; ^I>H.S!Zފ0aGF'zk-GD"E'A(뮻@""6 32;t;>K5,N  T3_=jӏRQvf(\|-* a%e(=zkhQAN5ő9O z#gu!dcPڕ7XR1-d#EPq6Ƶ;C {Y!ÐTX$LD#c(|fyj6r$FSʉ峼V\sMs {uE5 S| |aJmMtwnCC\FM!@ I0WFRa)Adߠ ^^鉜1SfkRGب{覣LžJ }LcFi{JE$YE7AXa;RB'E؀c9&Ne6T c=tH;TjC<%*Jͯ.0حT`n/N~g4JզN{  3NibC@n8ׄگkWܣuHDG$mxvT4E 8`6ozYƶ @}Ńд~wކ⮼b9Y~C#X`[zM2(!;sc7{q[w1ؤe;RGK@o ' Iџ0YUNzllSw,7Pq 6JD:, wiag'} r|-,Së9 :/)`/S+OLrqccg\˒~!DR3'zT|qF(qo'J}[ tӀ8tґg_|$OŁXH6Or,.K42:± m\~Pbg?Ƈ Q[16QMBbxb>Zdyv%u]GefTevPFEqXݹU (j*q(/)l Mdv(Q2Y`*Mu7 >,I]G={ Xe>.ׯدk:cr͂Z3#[LQX>FV{hmeu `QuCed0dށNBXI9=z(ݏZUt@,3DPNȐ И7w sI&;3q |p͘Q.CiN3f1ҥKSgj2E(*"t;# kCyDJI?h1Z:f*NqLBXbnIz$(y#Ed}#gsOvÄ54vӕE)^ɔ!0N~~ a 0H9>^7JS*vȗif)(yT`AbH揊Ҭ}$Idt4,~HV>!٤rz$[X~" T\c ݭ+­^`}*Pf"^M%Q$!H%14|?&=8I%z!n'SB:Nfҩݷo_*GR6mYgJt.t?d7ޤ8>rMii2 [ĐhMݱ|1>J$NS^76>}XvaH]T L(%QʓCkĀcФ#UƄE3gĝMi8O^c7W('X'Ezxc{V39dMj_O{dI B4"1YZ/ 'MV#Kb@3BsB_, Ys9T#=`!@&-m[I>K뾂2'= ;跜K_t2`,edlLvdB00*D-uѧ$YpµC&@$Z]/="͚:+ :0ӯ,6c+Gn=|1ocFw V|J KdCqғB aiyCl_˴ݰ#$μR3֖ +"[6*:"Xx|B)wm\,xby.](on75i :bFLU҃&7h e܅g[0ZeS$ë95^ilRL덃V!j"Amci?ےW!gfR}rn|fnRV>7,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEVgvf朙9X3g{ֺVFK$D"H$D"H$D"H$D"H$D"H$D"H$g?}s>cG{w 'pI'r)o1simg7Hje9SՃo[no{a-bc1F7Njafe3RK-袋G?m>n7x%k% |emOSO;'_zWjgI .o~SN+_|G??c|3LD?lɾw}?i Rs\uU<EvmO;~7NP,}nN86}W_=_Y"hvyztM?Ճ;S[o~wgb-?xK/T=G}Dۓagy᫮'?w?r!#\YgPt9 \ ?k_Z_ϋ/b~'ˌP,/)7|ӿ駟>`bpo뙪)'UѺx/,׺FbCVx~٫ZŗO*k9lewqxx[Iu1,[:QU,-ř@ez;M |V :tӵmTG# KR58 XN;-~w5ûUE/"N#hqE1~ګkH5KV&Œ[%I=L35?[gWlgA̎N܄OGP10_ +4Khj\&orQV%_O3M }"ӟ rgX㎓S]ED_*Z<_;ԯ%nљoT,8?Q렃F(g*T]Q_+n{qt)a{W G?ÏBmӆnDN+wӏ 0 t8+ZXpƌ3xwt|PQ%@V_׉SԦ(n6L3QSw8M *9h2*iLULVZi]\sM" !$81l9<@w!"JAaQĸBByTQuHF#^{~ߎӇT45 ~sW(&)WRx Q~_4/Yft́>d IyjmV^ye~8oW?:pcSDw*hg\,m+rbxbҋ4*zrV#tVT<(&xz8S?~s=Ȳ iLh&vy$re71 W\Qk.Px. `o7L3*`p:1oeսMLf,z]{^xa /gb6SFj~'%SQhf"HrW*3~Yr@?}5$v< eS,-+u:ƒ}BdV+'܏)Jl~'fnn%LQ +WkFgTnq9爁bKg#Ā/|Ğ\h6`I'D\hxH1[ECRu]vԥUrG.^y ӁoUi65VN%)9 kƐF_*g.FM*Hy睇aORTk} ҏ*݉]vم0VhDz4Emޅ+M4z/7[ǖ"BVd5D?I%a+EF_1r% z5$!%'hHZ:'"=ʩJ#E hT H6TΪGԚkGK*GSs[LinH Lэ*|߸hf-#msQG]'xFD8b69Z_\]wݕ ki$b,ݪ95 A=cn;[n+âE~Œ~C|9@ìA+G.b&(o{G~u$e}P5K ؞ xӜOt(7h#/%IVZ@Hbl֎n'(뭮fdfr&FCwz+Ǎwjb̟ݪ͛͛wkz1}8/Oy KXIV u]THLuR5EK/T{J*S.o(#xܘV5+o'VIi*Qg*Q ] ˕Ub{Ū~e_ҡRؑx;9rA@dLUmYb5&/FIN-af]x*J  -#x(F헺_F;͟ɛU bZb%l0xHe>oXM˖d9U_:7?Y4UE ޣ EM2c96GAYFJ pO`fc3w]Hopf!XA7|o(튍dyRiT&"si?X]X\K9+Y.U柷%'{M#ϊ Abǚ\b,=$pI_VzEgn,yR Yeі4FD8f<LyAR5JݱX+~fgZYlÎe2a͚Erj8IDMI$Q/];:T!İJV%:,dU#Ae;xK/4cEDM"Yk".ێ6t /Um:Q~devw+8W2i9'& ,A3Z+]yzr1̈Oj]l*G8 ?2&z0%d~5%ɡ?~/7hqXϼĖZ\|Al}#H5ܓ~Os=S & %x[2U:p]U\t+IW0qajG| !mnBИ(IޒV$KWW@7H2B`^/&9YQ¶;/< $c`l3YsF|"lypqfLtE(::gADb&Lst}5=QhZ}%)1s!T e0x7q⥩FRT8â"u iHB9 -J"|Q[x)ѥlFk}HD%$S ri ǚH 6drۈae#L Jx 7K 2"z,Rӂ&T{u|;ƻj;cHD9`ί̾ lTj YL=fב J`%(HPe,Rx/sw?ߌO.L\EVS z,>G-)B&N0iR.p5hh)t8ԨM6&'OA8X=gw;BaIrN9iKDK*^!Ů6`U1T|rS ,kBwیq2a-Ȳ^B^q=M(DC8b}^V)呺ڛ AQo3c׉eUV"4-)>`F#T#9xXP %eS}MmZ~EˈM& F&o/>x 9{~ﳕAdr>%li2䪟P)NaR5bȃ|ELi%+˳5(òhѢW$QYXz=4V}K$FmiˆeRLb0 ʔ')ۈr`"k&Ȧ@fsI:csGΐ"4(w1bP8UPM?UvV]B,DV:]:K4hבZhc9BB-%h)H4SMѺ~@tz#WXnZ7h.?$ k-L9wt1eD:"KN%o,D-G(`GS+2+?, ҵl^i@GM7tyDCG O 4Bfٮ"Nr>ʇͥOP@ioHfըiâs(we 4uȞ`*k]ٮDE˸L3H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$ -li 7th%q%M4Am\[cb1aE4-eKY*kI$}u~Y>g}rˇ~,,@8∃:g˷SN9emmc|ħuY駟.;zX;s}PjN%H 4rJ}TXk-3[j\V'现z)ĀZFVw|iie & zk|+^uU-t1L$cp7nG5,택*K.d]wԉDWX{qYQz6B2?E S^zi`_uU뭷O՟(\2loNW{1a~aH#n>N;t|i|Dw=N 袋䃟,fPz6,p"-K~UλB =*<l /P#f&/Pa@9'< x7xcU}]zh-4ӺH%.rjw?#Y*z|ԉD!џ¼Uѝqm 8$%KU(O=Գ>[JC? Dg0cl>h{5Ra,0O34$>50|Dg0묳rk:묣:o}5Ӗ}O~d3TdGA[쮻*?}[ߊQ68O$ +@$i6l(?#4Q]xrx%lK+y>vqG-*avr8->7|SO S0E'n!d]uPgq'}ďA(hA>'xb!wc͝B IO:+?;pށSѲk+ 6@j$n_%9}}}p`RӪ#fa.ݚLe;nsdI^xŵ _|夓NPhq3a)@m .7L6dةO9,ե[yAѯ7'$w>0Ξ?v uDWB.-2c m~,O>r-C$J+E 'D Tꫂ|jF7:~.xCSO=o=CL1'{Y'twFr^q:ۺ7ĕ׫ Jv"".1zYBwX暫裏3R rW M-B۶ɴ|#uK,8*p+8N#^+X`c?o<';^ve:,L=Պ(uᘶjB{sC ~C Rm㆐աœgi(lᤴaÐZOՠ{s`eygBuQ%3"]sFi`% ltio_5a{Ș870K {p[CqiitxgIMK' .۰P_r!7tSM$ $`9.nFt5^gQ'M@ʭېR%"ҭ>}fkY5F%׃7})8K`[`i.َaRXgȒ[tGhp=W]TUؕZ^S [ ":e2lΉ$K4o<2SήiQG*5ւ 6d<ӟ+:]tQFZ{Šlz~{Glr%8fiA ܏IoJ+ڕ-^ ek\e] 5^֯/\Yc!۬S}d?Oo0fM7]"0ڰDP4|Rdju`.3v9ᵒvOOjOKaVH"DuTBֳ͎ULyr/j*@QnhxH#ThXXG)JҨ2]Ų.%rHs̱;>]:/%gf]*m/WN)Lb1㻚 pY[/aU^^܌Y^X D?GtGPAl;G2[K.$ I+&+fɖLmxRr$D^/rv"Q`PX [aկ~cGrA8)1o"IungEzG@X#YRCA3]筗aa4 hwsn;j|'!3e; ,`"UΌkj̕''"-DLgJ]g'B*̎49眓gWO8 v#=[dE"#m5p:g6M͢|cz{~G.cUpu䫏530X,"RfJ_i)#B]. H7.oٴ;Бlȏ1b,#5y|?%zo%U%iG?i;\ڪing:rΐ.eX6 6;R:0bGCE @*;%Xt4HQ \m*<9溉4,DM<(h**r&)޴EM<ۻY$28JE2"\{ z I tOm "ޖP T`?/ҚFTMAyZdK@(=;8-m@QƇ>a{h%fKt;RUUD4- fDx/e2]!%lԲc^&7j PM@5R}{|`~>魒NM~FBw@v^{Ux1aȞVʳuuGw) {Vy&w;{ʜ4s&R -aHI-͓ .;pcΘ6ڪ& 2\34gl4j ]8>6;"D7B/1wفZ7j"pGc # 7b+'5sV<+iA # S^$ Üҩ`(t[_G*sFFx5 Ҩ#EdE1u9R5D:%\!5TȨ?؈+qߦPԧ iH 37"(OS,(IYš;Xkވ.e]I:%w4NrS̐0fJsS<<A7!©Y[t/g-={Pp7%r^%b2 axne)G[?$ӫ'̍.@@7B[<"`/tO)I<'kYXbRXnϰidQ@Du / SCYaVSy^EPh.bs6I \d^4vƷ+C M~eD\Tp# Ef:]ͪ&b+ںښ(a`[Q8ѹh# ZtU ӫ5dox؊F0[F,>eqL:LұtIzJ͓4zFWB8+a/຅jT˗toX r Ahd~}A4ɥ%lA,݆ީ`xJ*3w #+Bc>;~z d,S]1'"'8-'L>jli@h oCϹ?d ~Q O?8SSPIփ52QO:-can6 L>S|޻ SjVi{KW_nvi$@x~2rrD$:lKm$.ݨgcUWE6ԑMD(IxVšury ]ZK*p?{!L"KD3W)LM21AJnA*kȮQo׏\ߚ*̝*9Zxy"DͥFH̚%RmdczD7U|K6 U`iO#H$D"H$D"H$D"H$D"H$D"H$D"H$D"¬qIENDB`go/doc/gopher/bumper480x270.png0100644000000000000000000006361512412656734016415 0ustar00rootroot00000000000000PNG  IHDRS0gAMA|Q 9iCCPPhotoshop ICC profileHǝwTTϽwz0R޻{^Ea`(34!ED"HPĀP$VDT$(1ET,oF֋oZ/K<Qt`)LVF_{ͅ!r_zXp3NY|9,8%K.ϊ,f%f(Aˉ9a >,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEV=s=~ޯ?s{zz52H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$??Yf%{#HLO'x›7?{!jl7e/{+^}_N8K/s93P]w+0}\s7敿owo>ñyD"1wyg̘?cA7㎳:゛s9fs1sM7y睿/׿m3<Ï}zG5]p:f#b>CV7?7r]v٥LBX>D"1D@Z؛ gvuack; ,|?gBLEa1~:{ \kL晆Y'$zOH$ ebrKg]x+splXI s=wYܦnʧgP-4/b2W'Mз/PE _DnFOH"ڍ6.je-vUV#|QG1E -2q-nGQt P=uyMiX0?׸ 3%HLAx,AMPǨ{q]K=XDzb>)q 'B]6=vBXq$AcghmwqK-TǤ9tƻ{l6v饗oXo2Z5L(NN`)pI'eJ"(H'x"?u~uY?NRdw_JD.T斶s@Dݡtg8䓹;1Pf>ַ5I%H$`~e25ظwc=5!ʒE[lYd&b,|̗ 5#~.;7!D"1?׿&7j~ӟJsLG= D .i9ev>2eT)m2잏M"!EP4"nȨJUu|kCX% -/t(!%n!̣;C4Sb>9D_14*w"ǟc9Zq;s ܌وn'sZ]bwyg:\X:DÓH$ (zkKU3̉_{2n;IaŐڶ5 AOWd#T[c%d _RoY͇'HXiTA7x>SJB8ؿc1%r)AX?ϩ:8բLo6H$!>6%WՆ)Բc: .*/5)Inq7[dHAw@Do=II$LF[;!h*`}. +SdfK܀,C4oN4谝H ;evQTe>EDPa>UAv|;&7lqw7#:DϠO~ڰj`Y%m2fe+(L$-JGQíI(B:oH~+*Hxg%7\lۉD~׎/:v lH$z!ϲ0J019tqv򗿌.i23"m$fk !BsxS]9)$dHL$NYʆF՞׾;N`g`H I~owt}׻ Y4@B3O>NDP♲jsm.:ԍdvm!=AG~`${Ds1ErJ'ecD"1m%bV{3vԧ>'+bVf% h|YMqͤ%suy9KcŒʂC\Z>ND3{&8-MozS?NK,\jCW_Tm[#%'bH|<%DJM6Xp$ LvQ/y?Ns-=I[nTY2D:,Y:rkяKu : ZKwl&(CmkU`8(=D|dDƼ馛]tѾ[oŽҏpD"1aeeXqțREFN 9./M\T_v.06U D"1S; e+d:()aEjx; F|z76~E &slGmJjqHUkT(=)*!kFѠXdE@R"p\/cWfmX8kHč~T RݿBz>-/WLp#_iɬ|!=W `\x V"$U"13B`\s%Zx綾^*˚&,5) \rI6T  ClEUO95ͽ'OjL+^{jF"1@O9mnv;1(ɟwu#T뮫&txugg^EezE>Qހ}JBlA+FoD |hihò.(U,s=>h64^\lE֜};q'Ȃ[k:zMFXLW-cƌB|{)JٙޝHL0ڑ0 i{,7 ڹZۡV5\~[neSwlsƫ^**:AZ ,ugGM"Jд7f; })K7dD,y;H$XvRK-馛J!Y""jVJN>VՄǍVz w]sW`a8KC=ЫeGsj⢩>' g ;%n˩%wy$5T& ew($fۏ=D^gu쪧/M\pof+^*L~h+/FG ҚyŵXQ!$:z5`oErr[[H$"x;,UmWB?K9uTIlb-?7ՉCIސp zlK!$JG~D<9.`u|DK32i ś't;y h!n(e1şwyerv&U ZQ+ƍDp]b⃢KB@ـD3΍hX|qu:i}dx0NJ+xG 4&h=a[&3#Z䈏}ctƑ:+X4zY ؊JF,Xa $T)BR0 xDL%+ h/fI.63$qIXC^ovr9xU*&K5v5`jdnĴ74~ڀSdu7rHf& NlU 'XCoQ6"nr A]wݕj=+B#lwvTSX>I稣BLwqD^p`V}-=Q܅߾}Dy;loijok>@Z|/0d/4t&c]Z[]\l\4B7(N?ϼB"؆j /ǣ|:aSOmm./krFoKjcY~0Zi\ktKEYcJQy)m&# A-`N+2|be`u/퉛qm8B\YĮ `⎻BƊS:N! sꔆʖGBnKvvSi9E$#9f¡j#RERY4oݠS}N$ꐯ5Y\۴c*@+ize%_ˈmxeFn\/AsscMǣrWiec"1maҬJPy6f,*kN7rX̺ ,`<}3q8|nd`vs Ξԛ0rapt1x،f)PСpL?W_ Z.jZ$-;BZc{$y2+h+u\phIL$&N5Q{+uE2\PHRmt `9" n9}(Fk,t#X:Jl\]`(3טb`d_`n( G־P6d3ʫm;IbBD1ҚBqynuGnӺ ,ыmU0 (MPɭ$FU6|bSM3+*: ^&Zl~(ICml(]zO]=qNm'"^h>~E# .d³蕇C| q#<MKTl% r%'iTSJ_-GR܂ >̴9p{VCq;8 }X aN|ֺWdLhv+\$'ULؠZOٰ2\r:Yt<*aX a{of¤Hֈ("ti7-z352bE V;+7 Q$w΀:&G w^U,tRSD>4*ݔt!y~:: 5l@}va{CJ-'"iăD)]+o4k*oJԶq dZpt+$acs&f:%=D@",ne%^*V+e7_,(u}d2~S1\j8- B,72Yo5.v^;$(')8j9Fe1&8dV0+<$b'XQbkqD-lc1՝ˎX㼅DpU`{6%ᝋk7 4멭8cK Q^]mn&n,)6.$͂P磂$t݂mGSFt4Ʀ6a';'fFovV08@I:fԵ㝓Y馛rMa ˂`]Bvkd;m|egEÿyuĦ6¥E˜rD}LlaF #"-XZQT]wiHEu_jg),i187 sok@ŦT$r\#F]NL)nIw\nM;IBDIϘߜtҔ s^è_Q5M"#M7eIDb,MD8SY5nX`d8EA$EXzo-LȚA=4H )ljQv8,مM.tH91UW CQk"uA:#ԏL$0?MQG46cj%TQ#*-bLarSɋ4KʂعYv7{&DW\L?j x=(8,ZgDq:GH # J_ij$1ٔ}܉dQ i^DZ;H6>kgtTdoYb':pD3ub2]8JqS!:=>?oK* fpcXcXY7ҮΉI=or/ݸ#06)gUgL$DFX A<7Ղ-NA%XX[/1W:8Dަ4wQD%.eBT1h3۹([n!]hORDܤ[sAuU =Pc+`fƾzH#^DA+Tg# w #Yo8 \Sb 'D!J4WH2α^-%)d.U%f#M ׉mw4E.#^P kWލ7Ѐ=Ē"y*JYTمMm@R"=*̆T'gy饗lfO-< +ٹ84 !\Uб*Ҙڶ&Yfw7 X^?Lfz#ɣi kK$9H JMxn,\‡ϥNSOl2A{@T!YA ̂^R3^V 3?f0gOG#:E)%#cFD_@e#hPQ݄GF_ԩbvEw>_~^] ytt%pV)<"T$]T"%G-ZE%g 7!wM>BD_. j[eW/)L8-Ǘ~ D0VD":8uɕ*}RD7$d}dDeBvْH$ W5J="d塿YS6"9/,b[vUdI hkZgʆdBH$ ԃ^#ydytxbCb>e'+OCD pH.Jtq#~X;P2Z'u%9HLY&~v-y%Ŕf*BV;lZ))co>2hywHA|-,_||BĤA0L rԒAxAĵ-c)|蛚!Y|۾JsaL`!_`D󶉎2Xq UBAt$D c)uF :)# o)kS3"G1Z%D/^9n@v8,, C { yϿl ꪫjI/TLH$)vEQ22k_WZC9D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$5fm%/ys?D"=gUb-N>?7y{^W|3_r3DxJ+W_}_VXa%Xbe}k^Î^lva}{/f̘\<,_Cdz>o|crt"HL/x >xO<ē vmhN¿7t'?_;owy?q:v#xA1GUED"d}?y ,QGVow{6?(Wz9j/:Ivr"Hk=S# /pYg[ xkT|4D"f}UOߐ_5GBʻP<D"lؓO>Yi&Mxeـк^z .Ac~EYtEw}|+Y g'Dkz?//ozӛdl[n%i ox{?ʪ;.2jc xCYnJzK-#B"HԱn[yYw}w!YBW\Q Xfe^F/0G2.H$+9j@{磌ʎ?Tո˺ag:v=oJ"HG1*曷|C#SW[m-DZ Gz1DQy74Dbmo{wg!i^uU .`|?ϕW%?O隆]*!d/ Db8R۹^6Hx~sYr%?O_wu"@o@"7O}S뮻.{ZĈDbZk]js;!aRY6^:~ ȓ[}M\u^2S>;Db&E } 5Lf@ ߞ{3$.~鈞~M?y0w H$f^٫KlFˊt2Դ{ы^AE)t>%}QJDbfAm(P6 :v9_Q,?C:xU,Rx;@w';S޲D9Ĵz)/{ˮZ''P^RuIUU/| ґG)1nVO~NN$NW*;o% BY.SznjCrptIq'Q7n]޸D"169܅(,WjS9ɍo}n> ŞJBQ_W͝8CwDb#xx ;_ql(TMnj8l׿H]B;L޾D"1g=q7xc|^]նR9rYԳT@B9g?YxN~8FR5N$2 ^(1rʟMv[1Wݢ7 o}>1A!\T O_}P4}ݷ')&`" Rz^@;Z[m+/ Oٍ;jS#M7:묰衇֮?!wC`5HC!K(1I#Si*A«:g'AЄcYd*Б*P>1#v,Q',kKc=ֆ,'WDTicL8{Zu.DD]1A-mˑH{V5Xcd:VEE._,,ۘjbr4Y{(|Vf1C|ix;v2\suy;UCXO^D!2ymוQ7+M/AW`4-gOP" ]=J ;nr]]bwX"Df)aHzߎ;7f>7VpùV-GSOVjsiHLP)=1{sif{E WQF&s% pڀ}YgJJkUPNwZV9p#O[)+PsOV#MQ-`AkeI`T7"5 gtA?1@*]f??U(idn?vmTq3Q7gTBK̥L%A#M8}gr=JШX ͕?#~b `מ*{)>n\!O1 dz .}{#t'wXZ=<%I,ԀU :'TCEpC"#:㎣2H+,:h~~9p15Xc4( =TT7r`m㓦SJgL fC}jt&b ݁)D1B$5,1]xFԶ iDPl͸x\yqTȑ*{ ?Abloް'hg>s̱쩄$&?qBf+v^ϥIdwqap?#|l!e4_^{&M~AP&_بdc7JLtb2!`0nVYe']tFmT69{:CaV a8j]!ߞQlOv]wAtZ7JL_WEFcfDp LJj07fٹm˯RZN A|Ъ~r]w)Af[)kǪUuԝm5ДXlyA{Vٶ|O^~PFRyGC=${˨+w}ƌo6lH:[tBSzHLDzUaq5r58ClfɐD Lcgniyt;찃b=j"3UJuv?WrAW/|ђA) .MJ %#0/tgI2BՋz浅OmB7uTG}w\߯j\ ^rZ^ B2Y~#1>EbzHah4a%ˎ]n|!<9,hil^%#ֆ2MxɠdY,zc7\Wsi rvK@g0kjU<5Jh=G lqD*vexK8;%ĄtcI|S(My&UE1 fē|ͧ䠃jl&2(o˔թ-3-=uhr%+ .Ezc3 |LY0Z.*B"/F0AH9\u=9s9B70 'Tn]믿>+v:&4fk^Ho!u,LIyLT5*5\_ouF(\N;ԕÌ{~ePQ#^1/Z_qRaRDvk ]a脘ӝvn'Diz(1n[CSO?t&(%}3]ed52p K 6D5BVQN@b^Kf֘o^vi!2%VꪫCf S:y4B$Ni>VLt$ hQF6;k.A7?`eA5o^Ϙ1AJ 9Hn1 V vXcʠ6IDjֵa˂vCQXYm81ڼqk[ojbWrdGs"oC Ǜ`R)SG-';҈2AAS>;Kg70;!Gjj鐓W-v\8ݚ\ ,ߴSD1SA=C>k}Yw(a,PsZgs1|bړB[`1HYV{L\52E=%X19)רn4Vhs.}."8i8(!} VF_ lXfxVE;?O3؏hEFb5 v4Ms_ajiÜ(J]tSd߷{3Oj0,$j&loLmJuDb~~dV D#QQ{O@Ɔ;GaAEh+tCeVU'l%mպ4<@pAs $V3#m3?rIXI͆9z;xdHq bM5!1HϢ;(θϵ34scl̻(We/WA|^T9&mfg1-5ɡdcҝe iڅP|v;4n陼?ҰRi_5W|ۃM:I'xԡL,˩M޳pM9t<{&XXP,,̋,߷.sE?S{y dK =pȤLֈbы/0%JX[՘gp.T%cٸuT%̐UFL?#Ā!G9g4B: ʸ*4nfQR,Tƀ,,ER2X7ƩQ3٧hu/>C'vX'B[5wi:߅[fjy[H <526\ZM Y&[kiђvw k6yЪ&:wl>;#&s:ED܃E,e8Mu~= <.͓V=vZMtȽ鑂 : i}>Sޣ. LL!53|nlUȈcGx=0#f\mXXa;U0`X1P2*ZJgDF2 r#σB8-6-4nWG#kgH E!1w(]cߐ_ ~Tr8e0$v( h(Ze4{ĆEy-uSGIǰa"2[:Kt\idLe6wnEͲdo? yB+`1q[YQ(*lax#b"O|< EyL5F`g~EwzV}l7H\H0~z܀6ˑAz#9f{(CB0ݗL2\n.IիΫqӫ3zL1ծc3-;Bg#=z-'=E%.%_\Z}rXy%A7l) Rq3D s5c%cð kAutOLgw! ul1.J9Pьvm Pr&S[:Ä%bnA|ήNVU*ؔv0d/GzȞ{-C^ xؒS㯨K~n{kk[MeOjpb;sjޭa Nu6rD svd-A20J#? m-G]ȑe'<1'"ׂ5Gͥ½y5[]uQ<#%FKBBqu0cmK:fAe/ZUԠuKHXJ *XW-+#Dr,&X<6qQMeqț@XqOf-t#ȯnL6 c9VjmnillkCs'[^ jNӤ kZK`Zr#eBX z,鞱KKs!;a ZE ǚf~Dȶ/;Ÿ#Qї )eSUDYVXfBEjT?D4ID[Fs DGT$3 *7E?uM;XE@G3b\3QK%&dDX-N*0X7FUeډ9j Mq Yv@cКеY`Xb11Lqi|X%i $[mRuʹ D2h:Gb1Km9]BXv) 1 Jc)Ut _:^o8욪ǸѢR\ DoO2!G*v-N-5v:䚖1veyf}0;,Tz&}KL8Y:CtC:8$R' (1a7ltӲQ]rH 1&q(tس?67>d -$Vt/Od%Ƥt-Da}DoB0J@1\NLEti}hlZ$53 #|݈{Qb%kTUD&ËƩٳ^f VD dRcш䝨!\RiT6X""Bd`d5e .$?*gR'tKag>;T#>-iDBaoݨI9??ia-fΓ_+d'P=6uy$t㐔n24g0na>xf폠iv=PH(k|B35,#ָ(hO&hwB0ou_9LgK-ZnV*蒌s~j@s06Y፞dk&Щ yfyBtyґ"}Fz"q1Cf0tS>ByIְUk1by3+;G\8wn$쏕x%7";̅}.'ԁ4#`bL URBLG:()|k9v̨͂+64ctnv!D~I5$lxL)d`|'W+s85HWh4JY/dlo] np_h9B}q(A迬0I"0.dnZYx(t[+AІf5NaCB5l|Y!,5qc?']`SYq 6{T":f4CUH L4 /)(,`*f:xDd9G(KD@Ǟ9[Ϟ>9<$/DsȢ7)O0JOǀQ#b$I-e$\LAelš_M u 3YƪA6#Nz#E4YX@@Bb,DH.a=84t%7=hLF>qB֐43UQXG`VmNp<7;Wa#Bsc>D\M΅pFz^( "Mб3窊$ DmN e /3ɇ\ pCYǑZU SIC2eEyTX`uLfǹ\5R~diD׵R|e`3C(jJ)AYM?a"& *_+k9xx:'[O] (A2P3XpW2QcC`XlpFbm$1i2Qrra5z=i 2v$ 2Ґ!ځWp6P6NT<Z~*1&-aF Uv!0v=AjBrfmC1Ƕlu.A<>*(-bӕoD.]5i#x/h[jOφGl=G<\cB.\. ;jXZO!*Nb*jF `%j In^؁E؆ ZxeM-̱]n;IEM.xB *{d̴2 t™[t_Phࠁ'NY6BYG"|MB%^,`5;X8F2L-P slO#/Ir r!PdaRJрō.!Oȹ*W๡ IR,fY!=&3 o  e(!^t,#v6 WjXX$pD50j\3-gr 8-&L`-'7ǜ!ʕ4nn^i/E glZlqE#LJI`n9 =f2|n_?1iR`^惹 wP#E+G(gy6hƗ+l9 8YsͳDlM}P\2bh:j" m2@Zި8˨3n늱ƌ]"KUz(:*C饀>T4vB鮚J@TU h@ԋO40xv i y\(fy>go؛-_V'T(8c.VgNoH9=dy V`<1V;'TC~<': ;͏2y:C +lUY!X؆vL 8;UA_($&Rqμ[~Dz,k}[wO}$F#}ew CLebiP3r6"Px "4$[VclNDʔ ϼH0]+yGD*JzIOFZBif'u14;1dh1igdFn5FEfP mYQAY*Z}ffNEm0JjNL'F\^d;=SWҾm=Y$:qyYd>D}NU?AeN)WK'A"0S{XʃT#EeI V?"'DfI(NJOB$p2? n?+;'D%20D׎QYYٕt'"9MH0p o[I"͟+*m}z;x1;۝{O/s)y!3}+ [lER`m>?Gn؁jկ*FL\:gPIE(o$_:;jS2tLw{]d+N&0rFM`lͪց I$PkBUUs)L;A&I$Gd}qyWTFt;L$dJ$4k"H$D"H$zNH$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D":D"H$D"H$D"H$3)Z4z.IENDB`go/doc/gopher/bumper640x360.png0100644000000000000000000012203512412656734016403 0ustar00rootroot00000000000000PNG  IHDRhHPgAMA|Q 9iCCPPhotoshop ICC profileHǝwTTϽwz0R޻{^Ea`(34!ED"HPĀP$VDT$(1ET,oF֋oZ/K<Qt`)LVF_{ͅ!r_zXp3NY|9,8%K.ϊ,f%f(Aˉ9a >,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEVQ5PHT+]Q(Q ,4E!tPQQlXcD vbO,Gc~3s̙ysu1y9e{}_k] BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( Ba.VP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( B׸e/{+㒗dIP( k-6Mnr^n֚ BapK\W2\mx7 np[w~]r =w.;;NV2L$BPXt]Zm^׿/<Ӟgqoy[^G>O~;c)/>vy15x;nxs\Vz׻^W> O=ywկ~uup zwݟg__~Oc׿/| ozӛ|7ᴜ)jps=}{?-o_q'>~s:"|[׾׽iO{ھO:~Ā  Ba UBFLh} ^Ŭ7p_Wӟ?/?^xa~7?>O#q݈C9'K4d{Þg|N[P=;O6'~Uz G|_5d|Sg>sr!T( Zy}/~ \^8~jQ'r뭷4*_RuQ˿h'OG/0o['_p^?~_̹[ B0 əzЃ{?$c >O}|3}(]|8?}{߷m7~;׾?5=F]{P( *u]ַ ^ JjN|w!M-3򑬁6=m|60w>z {^/seu+ FF*\'*"?_.^Q'fIU:eÚrh#&O4!ަ67A!%5V^ߍVXBA7cTG R"b,IbƋҕoNjWY:JgMзW;ZQs:?x~_촨ԑ/Hv0k8I Y( q{ WRY"9V]jXM\ MZPG$?yOV3TY>x +w zZ ["xWD5;+ C[ mũףFXJ/'vWxە 2sF'xc:g5q橧_ߨ|VB `aݖB00Gk^>2@*ސ]Y Q{]nEZp+8-X5yM cҠT%2klkQOzgtU$u7n&L|&#H gg^%K"-آ;ۍhu}u ̂ϼ@.P71ů;XR<䟆ԗwD&>#0%6HCѥx 6fxC=أBPMHNz&zhf5oQO~2pJN6oP]pv勉ڊƸ+6[P y̶_s3-4gz7{]hP( d ?q">OL@5CS9!gJY¾ݔ4p5_~!Gq0Ի!:\,G%(P\( Wh?5Ǖ=S2WxtK.F{un9eft)s)F)[mZ(;XpRix BaaԼ|fP#ꆸRC뮻b`!_AM'Foa&3QhHMΙZ\mVhWʫP( JV;ȾrvqU=uubM(@[[#Co}1$d{^zhY3h߭_Tv5<pWxǮjBP()AP3Hu!!.Moz>Kuh u;Hmwȇ0kjDaDJWҵQ+~֗e>w$MF}Ū;P(f+ "`WrGncG3!TI .[8|}O}mb7a\^K|J&`#=O@Kc BaT)X^Yz??Hv4r幷mŏjz,wd]v|b+3nz { ڷu ~J^[( rGk?!Tm뚹\k̎Nm+m&qp(:0M50 ZWN8 Wª;w<ӂ]0xpb,*]M[( S?Zlڽn_T\Y`6 9wG =jw×0n-ط79=- u{FrN! |#!N}91r$7xSN9eū BdM^WwyC]qTڬ!i*9|/%^18ϬC@8:׹Κ~oوڧX Wkc  BaUW;0#^ ;c|ooء2o}[/+4x.eM4jgԧ>!ZIKVv[X9G>u ´˜N;-nMnǵ?*~Z P_I Vs0Ύ2HNU7Y]Z͵ȴiHa\wwc&P( +]ԧc>keXd}7Zw(̗цjW ʊ%^¿/x^L$ `p"uB00'9Gѫ7hT@~e &-)QK" 3V :b@:^yٖ[ndj4d Dh㘤@KZ*BP(.d5#!`x{m]jz֒CC%#W^f >A<"AaN6yC~L7v v >V Ba ppu1гuI5 QIDMš=43QnK;r}o4%/yYk|;ʹ$$xDÅB0} / t{WuB >8NZ#TmF#Z9VMyn 718-q0*ED8)P( +_f-PY{rG?u`?qx<~MR}OW Us:L33}__]H@c"&4& u칺 Baʠ 9mtW0Ϭ;P( u7H93gb=TSa[ )J~^jSSgH~f;`Gny[\( ӄc9ut .T@VH+iVj儀?O(>^#]ȴd. '[= OXʨBP(,iE_Vkwl6WW"\ np=TzI'I.c1ѺDmfT* lnܷKYZֺjdI2IP#|}燏\6Y4!᣷WmRr"EB0fmTtnCcy-N?tAd>я"EwjG>}謳zO\ˣv}o24#1y Ztk%1O <Wҕ&5?qqigݯXfwӝe0bP(L% awuׇ=a~> پ,J*N-y_MjesSmo{ \dx=z 389$Ryhr"Z,*~ #cyXau9 WQM3/d`Dݽ= 4jw`=Ba6a[/̵ar^HO}ӟ[nq{vE$Aշ&܈1oJZCK93<-Dl֦ ^8be悠;n+ avaL@]2QL"ar/6GuH9w%=9si'N|}9Sam1~7Y zH ,Ci7]aY“ilZ|)C1э4%HQIsm%$KcC׽n|AʵKȮ2x7-qܐ93I4H&0/#Bȸʒ''E `>>)u5&\sP>67MDNŸt^/~׻ޅnή ӓ#q{ibTs?6\|3 o=(hO̳2w?O6}~>kx;߹b̓h7u\w=9r[2XMC.3 '3jP(6.PFRztSr#"E~]lk/IJ y;zwwUJ˔8kߔ:Ry:,В$[N_2UK.]rE1bFonj"p26I- zf*$4Ej'6Y /"Itow`RX¹P(.LI˧;RSSA],$<:ꨃ:9yXk_Zx}%剥CF|g#ě,e]0O9=}֯jw}Mf'7xڑK_aVZf GrH{9 ]Խ s Lµ%+|ʕJsS2e'Hxt cb 2Xl\4%? |8x<? YZD\M t\% #o$ڴ ږ񓒳*du ׽uLTw+Na!ZUq2CqFj`72].M9`BjsU iЭh_jl%75tZk 鮋*pwuVjxS;6n5\I CE-6JfDr QBa`of7=cIJ(l@RPllLida#t)tfudˊb:WĥqQI7{!* {nץ{T,6s !pyпq8u߇.# A`_jҢܨ+%HꞬP(l(t@`MrMdr?ԖdK;ޞcBiR(%IOzv=ҧ #ʋqfVsHܵ^8M{l:zCc#Gr<ّZ |H'a.Az+#3}_FPXm]%EIA$f֓F-l#˦ת >YGI);y֖^Y(IF)2&֛)M{rq3PD79zDKn5$qn3Fr»a)]$\/){キW"|wd$q`>}R( Fw; 2zEIZ_nIh;[WJ]B)3$N_R#D d)~9NJ'[uPXSj;Gz̵)8Ъ-qrS-!7JpqǶwdW+P7!yS[{6Zh /wGLۗK~lr7-2)-`C B%H@*B{2KrNUσ;("l>L¤VxύU{ ,HTmN F,X2ҼHu l |v4%Ty?T2MΚ´CGt/yBOAeV̪l]HTB3ۈԏƫDrj;v3Y7v0,::K2rqwʦw,n(Vc} l͒䜈F]*_htYgkua4|zm`Q`#zu¬_fs'EOOH/lh_,>cTt ښgT.,i 7Eƒ>w_ʒxџ{Qy\6|#1~{1F6 1KnSmѷX@<u}}dž}cocbU\竾\0GTqlIc3m`XPwA4n l1+z_ƽ my]:(h-*y9HγTF0j3A^/m9 =!fm8YNjvBa:5n.B9Z ;F63`s|= O|ɕ\w)fAkoy{ߛc%BQ9j=q2jԼ~7dibրDwr$3c unRQ6(Z"šY45~IRޞL{mW+UyF)(Vvݶnj'M{Iž„L\[nO-=hyGc  C%fE0S p ᡍ QUKķfiLŞcTQ,p*ƁpM5.{NM%{TE΢Lއ8k%F}y<?pKa$24nAvʘ>B@ǧPXg-l=mZˢ!i*~jOp~ ьQ8l S5H;%'⧎4⊈*=Sh }TDc{f Jgd/s)WUF~A2\Y+V -$ E~u"aYzD:8TȰ&La kȶ¥FQ##ӐJod@ԍCcj^'BٳQ/U]7ych), #f,hWMo_*9s;]6w^&hcM SCk̡uv *1Urw|HxY'՞y(aTBZ=ithlja]=YjC{nt$oŋ)Yz<ԝJkY;\Tqє:ГjJjUl2?tmT\/uLBl>ne hWT)YzO?% ?Z|Y;YDPkjm|$fЛLJ5׷3M{j/S^p|vJ\ s' ,bQ4-ޭ~϶1M9B/V T \[6ꊌ%C. (V+7U?,Z={x(%N "x{wE;6`{[aŔLMFW?4K|1 "x:&(1g:Si ^2%\='"īBaU TUamH!`6gR;(-d[ ;MRݧWH/eySڌdA.bkB44?I RL؝nn)N13i_r0Pnuءqq6 i3h#,/'=BC:Yp|S΅kXbC"BaAhE$Vqᆁ&FCO#ڔۙnڰ.RyE5Zh) "~"tHJI/MH3Z8n;vMy&$$1w'ЛT +M%NtdIYųt- 꼑rqIu+Vi6u" )IxviYf#Y( 졶1.K_Q ZIh`*n";/_Vp1Jĝ>V21CIݣ43[X/!#uG#thsIz4Uَ5!~-8v+6G{5cpmY HhBFD`c,H|qRf;2"eHp]8 ݆CfL/uë;n3,3trZāKp*:_X^AWPX yVbQ,( [hh*2l2Jp-ضŴziA"6>-/3euCǤ[l^oG(ҎTx!˝'g%N^A) u1Dj3DZ+ ^8Nd0K౪p}r)Cq=uۋ.Q7:93XKsﵴv/!C+R7&Y(+f]:N[l&q(`M(VyM4ݾkR]P`r"l.2(yZTR+ׇh[q;Ax''tcb214r Js| d4:,;tm=$ L? KxΚXQӲ^ty^%JVsE ӥ,KRFCNq3PE&_D8@}->CotcM3@ne֓T7iìypƨW(ՈZ/$iWŅ<ԛlBuEeY2AMٕ nzu<؃K`]tQ hإymD,4'+vslsr 0OZ@C튅Ba ?rKBE69 6SJmx- Xg^#W)aS6%s!]6zc_C'T4iArtWs$4=PGf|ηt]jH}-XmcX9FdfdgKn8]O |N$Gk׹=j( į "[yD7 ۡl2qH=:eIG[WC 0${0hK#ckqg5R#/uL&}Iur,k3P#y65݋茄u_0g?lnn-@RYdE5^{XPm8@9$tVQP Ba9P8Q'.!ZP}H/A&M쏃3$e#:5. [?~ LѱDڗ΃~a]GUl^%ҧ:z2BWۑWu"z'={Pry魶^7CW'%.Tr6*$y{G4q˫Nt}5TD\ދ_b5d6Q,-}5=&[F7"jh8}6a>ٚҤ E@b3!$K6} -΢-bMh&lwPmoBb"AN@;S1s;QrQqݶ'aYNRDy(DT/M*̴q.X/yS%=T]c0DX`Hٶ: m $B'exUYn9 Cw.~MP)l@`Jp@( 2M&%OJer!t?;ўWuw:}ΖZ9INt)pjn9+!N;ǙT,u^ K -B FH%V}/k W]bkvF3|Z/^(ٴ{?\unz[-cY&\z.CEx"-aZ$4AȠ%" uHe]b }8]g3w!6 +$^ KqU/"&Dn43FL00%^onGoX[PqoA=3{Ƒi)L 6e\NHNܮG_AHm !RTjxյS4J]4B$!-l\&8c_]s;j{Ѓ+kC|4-^G  \rmb9x G3d-M] 7 dUPI]n{P yZ]4M6ِMb%R#MK )x*\Q_yP:Nh4H\Iv*"wz!棓m_*s/ үɺ">3tԘEQrs@¸.mDRdvT(lDKZn;\1Qlv%9kh%siu$a:Bp5sP$I={P/ANn9q^v$5tW=u8& p3 KS 3-* [}J(nw}D1!\(l\`M'\Y޵؉uXEl8S%J!9AȌA w2zdᬶ!Q  F@5ط{qk/HEXFc>0 r*@jyIʥh ?Z oqLw@d\wr1a7حv6~@oוB* n|$6&e(&rjhg&6i*`NK{ZG Ӊ}9'kUsE$HVM2V0w]::=]ٮ6%8%DH/&(X^CPN.6RGԳ/f+KC.3{bJmTDs{j~D ) R n ,qh..&\*aY\CǙJ:† b6)% fI>abzj(G[C3_?9ߔZE3AJ`DMy=/”a5UpOy 'ps^"&{RbAcVϓ:.Z5K/{/ Fkl2ԃ12N!7AI&7U6nJ ȩoU;fQg>Wi,ڣ[jyvB? Z F 6d mWhrhJd}|(Ʊ ŵj/6|5U%p:]Y$(C!veΝE(RD?-STaD.2CgrFC ! UGP Pa1^op}@>{oJqd8Hے{j|tlⰎVz۲[lKVIWh@kdtJ~V^shHu Tz)ߓs[32~  #tɰe8+%AkYTr1ޘZQ%[ Kz<8[}|&cv XD tP_W7pP(L+N>d^`J%>O]{] *uDqBBmIj-NZ m9 Z-VDdX*{EײM'q#]c98Y)M7ߞ#-l|* JLcLN b͎iTDd4Y4,=;d0L6wRz 9> [޸N;Lpi)pҜ;;)Ș~v HIu kBP(L1LOiQFz8׬#8<$ mxs~q̎n< ] ?9!gYʼOac@%Fw3 S5= 70ҷA\>{N:$@4 BaZAÔM5"H(c*T::5Qȏ&\cga+ ͧ\cg`sؚn7% .x/lʇ~bk^bb=%YW#>wlfԔBPz`;Wl=dۮp=qmxe8=e>񏋆aPF,JurDR Ba'>_ij{]rxi$>̽YhB+2-Jluŕێ=ؖ$4krj" `b}uc8 #\ n>#{AaaZ|do=甤eAz_TFB0#TN:wSm6' &LAZ}Ğ5s 5GklÝt'e5a5PK0%.e:‘Gi@Z ݖ owBFO{D+[( 3A$c"b5 '~.Ks12N<3-ՖҒ%RZh%I"FES>.]vمQ)ROU4hQ}d)K>B߮FWB0;kb9CW$+oyxG~,:5KTuU]IJ%px4VO/*\<0.U-φv'=I"TU&MHf2ZtҞg>Dw:U]kP(C $Bhj4GN跽mG};Q]|7C{)Rtaמ{^}eocUF~RwfqswaՕ Z>Wש|Y( 3 Lb:g` SD.鋌ޓi哞] K fYYWB/ h+_"+j{%#qv$k./iRݍzӣF, ,Ct%-uP UKZ0F\ PQpX*8hIXrTs@5лQcC(192qWhj%7±v3u^ W+@"}*A6!!]ًBgu~R~}”-ۦ L)X,P)Kٕ%ZߓaF 9>?lL7$ [Gի̑Fm8@K.'9*OB^XmRreDEFuyi&w"uC FD|0wS ^Bo%=`VCvN, g2|DcNCQBwJIU2z*.,g7Y.\nʬq-`d&IL S=u F ^t'Sq^;NY"P$99? ?ug}/yKPvPPd!9)͊Xq||I'09֜6oxBC)WƓy\^1vhVR2jYD #*&&l\Zך{^cA"5sp1"~w}w:S+ A;h&b Ʋ2}op.I n8Ȭ'"`wf8umIfmKղe4WnpZSZfڇaBP+(ŅX~Uj5iF!Ta9Gdg>%~=3P BMu"RŵGuSTS4׼5kBP(̸U EP(6j< G-oyXfV`cyZiG){ˋbT%ʇc=cjSebPYKQX4v>裱&T8 I+XQvJ~;!oK5@ا?>D#h%w^3*Z( Qw rz@0W8@gi^DmFQ+EOzQ,)Ol7d5LP( %@ VoMyƺdR BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( Bl\.vK^ooe) BaUH~^ Wµ}=~{?Õt w_%.qǥ/}ۿԥ.U]( Btwwխ{7 _W/}g=Cy _ _k_]v׽g.wk\z׻usD/83]]( ejW=qO< .ӟt7i 7/˯38o@z(^}裏I{ o\BP(l ;Nvw ;8S7d/w7/~+g>͝|<̼Ͼ-nyk.Gt:BP(l;wy=>vϿp|>9|#˯~G=Q8y{y{^x.AP(6.WVAZOz;Adwv\x~+sO^r|'wumԭBP(f Ғ-o~p(?vm~cS9dr{ݫӟt{GqyE) ;Xя~Ĩ1y-Dσ/G/R{'=KsIui B0b-7`S V^&;79c6tSܛfGy>m/@zЃ jya2͵B-ZPM2x4 _*W~(J]2u?Tt_ַx Ba6]R>E9;nV8/y/}{G>yַ=oփŅBP(L7HB/9ɯx+yqO[KV&M+O9k9օ#]biQYWP( P'?L_)OyJzի{޷mwuסo/~܄Ap 'e* @p_p)Ǭ+.t|;qwi!7!9p VUUP ;cq:_V?pPRɼ;콯$s=;mҗ5BkuBP(BiȌgƎ/wqr&aMMPi~|[ҚH|w%\  Bao~k U$]z𓃫_F*}ӛ4HZH7p7A^u]P(U‹N:餹}{#mo{* 9S-#;L1\{J. ӞE5}ݷ?7 9e>3WBtP(.12{P^WU5ЕG}Yg-{oʶ9EtU BaY~x$O|]N_ќO$^?c*n)TN>TzAu%ؼT~]NpaPEJŒ?<5pCn塐,M!g.| F׾jQz;/ .Xp)P\1˸P(,tx&^JW=(UFC'5q`DGb|3?3nXߥW\(߷P(Lnwۅtãy>y^:Z;$)Z˪a͟%99 loT4iqᆁ*$P( 3K^4w4?dM>~y+_)Y<'Bo}/}hvx^v aw.'P( ,>:QEy(SqgG5*mݰEH^/ykB BpyhGR?80k6!t; ^)p+^pwjE~BP,$D}V`w{|__d;Чz85+gzk_K^^_W՞|sx]BP(L2O&rmme_pk]K=B p/n~;iPg9W9I^<6+[P(Le/kn*rqȣ;<,Ik_CY[P( yz/Nf[λ[ף=syDZV?|jo )] 5NsB BaM8Q hW~6i W:)(_[{#|\$ T_EBPXgPz|ֳ( =D?}Cos,iB+\ /2Lя~4]$ViJ+ :#ЇBNկtq=W{,Pn㎒6lC EgQ.jWIsMyX Ba= [?ڜyS)t9 9a?J@Ճ4 m:Huu/ @խnO_^(+ڞyzW 6-Fψά˪E>?_.f}W*'KyplBr BPXk`_Ngm|t` -$Ew\UH&7NXz8wI8Io|_4=a2CZBP(@yX]QhZƾ{~&&-O9#-6IN:sC`YӫJumP(;l4k 񨣎DI]>Wr iq+_os㩜yH>_Q'X(y6% rO/zae_`E^R K\{Ӵ$@4x:tWwk29xлգFVsr'Gϒ}c*Ō0DQ^](LGd6% <2Ad#z`t!я~O{߯TzYm [tnS7'K|L~(}s3__b>[^AZMS(̬?suƞ^/fi,B۵w)NXR(#R wZlZ#ku=Gޭr`{'< 4?ѧpZhR[_0)qg?{0(`fmDұK$P% ɟ7cn~kߡs#IUhCWwe}*nUt7UUU%Rr>6g<3^Me-'F_;#+48 CXS!Y\W Z>If1L$uvw;L=AzBa6Am>묳3tӱ''>6w~}`Z-O$_-]c>&HRs\epw㞨k&-ʊlxyE|wfQkwv ){+ ÑOcv& ;>Rci+YƧ47%0+)pG>]J!z_K_cM7t!/Y71op!/{ ㊗9gԶY(l7+ʯ~C" 裏 .20nJ%hJ paֻ֊\pe^Z׊j ?DT4 e|NZ|~0׿5M^{$/hQE˒[ ?A wE@) G?C1LTi~R?i:rt_!`7ArQ$sو#ԧw 9KrIѮ>>4Fg}UUwytELH_3S/#Oʚ] f1!فPJI`_,U]#%>PWMȞZ(XE/#O~򓲚3*6hN1ڤnbN0 s%%#͂Ycj/ߗwWt%W2Lp+,c&L7|W(̭s.ϖ>o~S WU7эĆ-/D:% Vqp iL& \_U4Y"z..zi]wT^䅒qU֩* 3U"6׭(Yq5X+QXY>˅&{cmZWF5[Vxc~E-avi2mI|b=Gń.&sʂ'tn/ Q/[ܼjsI)~rLݖwyk81|^$-b_-G!oS9qbXOlN9NPxA20d>>6US z͇^!$ӑdMPL41v0vy䑌??¶h&A ˎ4rJXkѓ"g>YKh DPXHS2uS.>žgK8pNS]ENKbQVfIsY(<"ž1 rzEEt q?m/-fNI:JG҃[̔q:ݕhc:'1+3$tӰeG.e >~,F>ys#=؃g93^6z.-$2$cg_Fp֌^ ! ^͔%Pࠓ+y>ǥ wzEwYHuqɼE:"W'sg9hX9<{Y(+X#NL k7^fC(6'rOSINQ܎g:/Yd^҇ RPSãⁱxטl~_/_ >yg虔R%fI$WhΌK ?Ug`U/0o;jva?R.A۞lX Ɖ2ڲb^lMwQC..B m:A"!{@/Es)Bꧼk 'Ofca|Felw *R-~"lGFX1J$12!]/lj';kcwWCmklf\&JVY^LzvX{V`80G뢸6ڱ\-"*{8]WX5㤒MJỦ[r#SY(.0K )ɉai |M19£FLどM8*]k{GK̆{1 [t?vډa834 C3S`9"HJUFr&Ëux3cm8 PlV{1Zc02u2( K} *e-]Q aHNXY:ד"c菺(=Xapoym2w&vF aX>+YlCC|-J,qqS Fں:t,NNR31]t[`-yܑfUpܴ a4`&2wgH1ґ@t3D\E 'r`%Lc²Q Z\y8hX(ěMft]ɞ 5fb S+DOkOI=u^.R9^8Ǵ ]Mˏ>'k_>݆֔QQt~@w?-ZN!YU8*z➶#ڸ(UK0ŝ0m,Df20Ixޑpy )hSFKv%%O?EKIs6tv NbOŲhIʾ+n48_LLLty0iz [9ʽG)̩n\3 ]f9S#+0EbAG*bY[~$ FggEA~gyB)Bo}dox pCZXݯ{OŒM&3mnt^TFB.d767=8{D9M:7n Vb"`B. wggጸ~ ݠ&̟|.Ǹ[n;Axy`047%y`1J N=[Ko[ci,1iR)IP8X/ۈx!iڣq 7NA&rj[.ߝzE\g+HTշ(/~\;v!ؑa#쮑s9=ce0]lނ(k8Q̙ʘJC+YTABN!4/bC+PWro֪=Qe%g|9oVrUnZ7C#*d/F0? ٲ5с.FRѠe'˭jƮM ykT=R%򴆶hSkx}y@{2#3>jz$IqX-爄qRKJΡT„~$% ʛ29Y¾lR{JaeE M!dI+66S&/ {r-~qHX*^ɩJ#owib&X6N_ّ_)Z|2ĹW5IA}T|.tNodr-4i}0R]#*u=b[I{&wEv$>!gDH|MճsB'1w*G0i^ '"b4sw>wxS\hWs$[dں[=2xϸ|ًpK|pLO>xI"ܭBϑP8> ='riDt }nJyOI}2{»\)χHK{ RbXJcsmO F#3WaP*QZdק%186F"넱%GMzeO< [Cr['Yo.;HJ'#RVqCl;$JbMh%i ݷoŽ9c$ H'ebTA_D+$8ȝh[랈?ʐNiv_/Kx 9[ťQ& V>lmkv$h?3@Կ%nv4:2h.&NR[e7Ryw6h,IK$s(ʤpS#o"ߩ c,]!Pf/tҊrKpUvj?{(1/t.!pu:#s'"PL`U< :* ϕ0B_{w"[@ \wq@@ flQI$bA}nDZsAi)|mFY[C ~{} lTlW/̣5T#~I9"1PQ)3(qnG:6;+!B+G?<1kg(ٞ3iH{aO{fb6_;;*%YFx?,/HBh '^^tևC4㡟oع@RQ,/O=y~A:)Jr) /W'ݬeI[ 9U >7"K1FJL\>nwĵ$/|F-0$cS't0 ?zF(#iu LqtSiiJ.Nr(܇$YiՆ8HWdicAơm֠𓀋O74_]<-`S.cNv;<>ɓPZz3_9bm'(=|g[ô~nJDjk],"#UJ!.T& H"M 2<,E%#iOb}ޤfgvđBv1RGqC ki5ށ cg+DܡM F`Ӡ4u[ ֱJO11sc3I]41:ftb9 ^2IVʺYa\+]["aEjx<͎{50Ż'C*ٖE&{ I7D'n'`<ߜpԂXE[ K-𢐏@g? w4}")(1'Ps'}ZjvtnkYО a=EcI',Y(`,Aț1xfH /'9MVm4D9@qEΖ%7tzҟ[E}<"V㉲3ϲtiNλ`@^N]\,V0 gLȔv$!<f7d<6 VzSL!AK9\(Rmz:EʉǻEhES"ܖd|bgޘUJvB1g0yT  t%e<"y?{0iy%;œhi#||b˳i.8tOTbSJeGOevi$RsxH44{&4^qv1&D7G&P!`cx'cbѲp3ϥO!/HLn$RхvH14w "sP)bN3%H.Tu!^+4nV<`+0r m&?i1J.".0FI;kvvr֝uzb3uȋeuFt̎>cP}cuQ_C:_D ƹ)ޒb$sʞlM.:)_Dx7)FO[07: ́%F|Nՠjʞa$#f$zV&e@<qD02[-gPGӃ/X<ʶ=yz>rsp2t|])dtWTSlxsǑ|{!XHe&T|F>Ӈ c Y$=ha>!u/F \kQ V>x}{1㒼ţ.ԻQ 2ihi$L[[ Qy7G_R֤/oZKnyaɼ# BNLƅ̴Wy N\IDmI%h-Caj8ZOr739Jd$! -?MŌpS%k!7L70dh;܂(6tn<{QDX$xt9'e6=+ʭ͈13U׈<SeҚ;L.hvՈ:x`$U%2{ .sc{1"ņ{ !-6. +*鏭7d3*r27e!/σꇞ`@?p[Q&ݓ=C bܾI² nh ʫXnഝa01ܟ9: ⑶-X^uqUǺr0.qs7 @ icI Ãh$(/s96CanƲZ+.$ˌs;Nky{eͤ~:=F|bM 4; li46!#B6NXa@Y q to6KնE8ꕽ"cËɔLnrH斆nNܪZFqiF!E0{΄!f(l@1Α K:'%4@.pm3p:dY =Dt\Q7SQ"7"[)]TGJs ],+Cp ={zKQ>'6 6e`JZJrgn̑ez,mK 6λ)7^Il$JA,2)N=*(<}H-oF2TXfbZgoIsh$YcDr-r0u?Z8IFոSE2G[1kB2BCO3?ern )8qQ>}Tʄ]%.\t#q-+NP U"M^slz"e҄ IM]8?¦]Y6n!zO[0LVsFDA;WUm=>n.B^ YeUqmxs' hӗ NUz1'.,jApA~fÞG'̉l@0d vPX K_wU6²f'N4C*]ćҧf9 \4JZݻF1uJ<[%i=>WGD\}.b[ z4[Uʙ0坎MN3ŮRiQ@؉8BRIܙK~̯^j۲^Ě!3#9(Y .->P_bU9٥'|q8y$ؐZhPo`OP*­8\B#>"`B.(m{}Ƃ((dRrĩ,:צu"268e/KP$OZSѻlsE.زa'~pJn@فέiev?Z(DmRE 1ۦE !-8czWu{tڧ#[ wdL Kϙ%"nAM  vSKawGCpGpjrg` *[(J]g p}""\8¾t1mUzN{Z$˲5DӺ18/6eFŘvk*,.?eJg"y\.f 3IKs$L_( hŭ"-ލG5xŒPS-(d GQ Bc$k@}:z4xD$ i[:a.h.u_w/(1/ؚ˸rj& `z4lbXxe]`iu&sU3O;2`b7Ze6q4޳ɆbPn}Vd@ΔʂFrRwS;h G(S ٶ^-+'6R8p)rJ%LtO0 7= =xWZyU~$|I05&#R^b:2~J"Ɗ GbSwyL(~3Co3BMQܜ SnHV5 m ԰oF$e8C'aµ|*<2 CXW/iM\O yp /M֘; Nd`Gb+r=Yni6&HK!fs3ߨ,ЖnTƒ>IݎRqT?Btõ$jÆyXі9=oZlnx:W={ݚ/t<=<X:i(9UY&Mߨk\dQ3b渐 -n:wQh-ٲ칖ּ[n 6.> IDIvѕ5bV*bƚNDj$·Q) |>}31ЯܦSnOwqRxb9d(vFz;߈ʴ TDi*GU [۞{kR%GaISնOܚyrK2;JZd!dwEZ{ݠNg4'#`!Ɋ+JXE>\U =:?Ji'<]c.8}9 x`8' 4^2fBlsNM_B7fୃ4EC'%'NիqX%yu/F L0l,B}1=By4go 1xmt3)4)Uu1 ؛UX28='檂*K_eqR!#&S[EPneaדm$~m $,#-%ŪiiU3$Bt" N!Z_ЌYD6Km8i&V*1kC;-6l|ڥ׊Dn[5R+r Xë̃MܮHӾbtOi4efi/ S*3ٓIb;V}ǭBkO= )V7) vld_#5_f]_-8мY~G$NYwȘ$&̪IȲ?ti BBwZ㜎) S2ܮ\[tk'11B'Ep[fVb] p*DRTL.f!:l *4 :L ^c؞2xK=ud@,ٖ sV>9S62Z5u;"xS=͒Tm2QM``r [//:8?KΨKcŔ=RME:Fiy0DfԢIfg_3~BiYr7rR+5N$\XuЫӌvbv  ym;NpRGLn,{'d[BNGеGJXi18l*XCqg]T]2%)[ Izs︳pEֲ_akQ}$^~n6UQ y_3Zqzg%j4(6.;ue/|!Ɛ+(xrJiɍزVpX26OW.þ^զ9RypLee)JBF$,i2T%إjIb,R#@է*)x&M09ڴL_ b=ovivEFOSYȢ]B^)X«n' & j\9SkcVZ^xug}tiAW|QUP7[qHM2GŠXc? )%B,xS+Ջ瞣fZ$>Qi^夬__ؔ; ( 0BcGxǻ8W +~&~ֶjѽ@:Mw΂![gFOp8ЇO*Ě$=3x.@d%=Rzk[{g΢DdX}i>J3U1f3E܃<>1OKKhu ~++` s6755^ t?qRSToaޓD$H1a<Mb4ʩ%oĤ)aƢ kfYSN9e +`XX2_.JKPX/aAt5K/GIKsi\d2.K7x$e}GhxW Rk7wRBFzVnjO3(({r͞ #8UUa8dҠy2z7DXWKRVts1tzyjҀ`St/ӔɰR H[Ā~{+QLa*()!cy]Ԭw6q2|̋5#ڈ34LCC+sP4-M8-2 @kTdt[0G;JKaͶ6s!Htgo6m4-PIsP0||`Qt{HPՌzVyk|jؤnXU z+Wkf^6TjC|B+f[At_MLeEQ,.P#>*U|WXse`{([ zfn,5+V 3x_g[Uaōo|eOKνfj4^ nw;!p hozӛZR0֭O91زG:]4#M1q.6fh]<4]ΐϷ Ay RSMޞi n_{웱ty BkolL <餓0t΃nUx@U)Id%`YR B[mYhsZy5"H꣞^{mT(̃nN;$[?_J*,"nz˷R՚CH ٞQ(أfims9'~PfPXwP(A'f}WlYgEK 2V( Ba%98m#_P( Tg6LBP( BP( BaQ[P( BP!\r^ BP( BP( BP( BP( BPQiwBP( BP( BP( BP( BP( BP( BP( %- BP( BP( BP( BPXXQ( Ba*-2b BPXE( BP( BP( BP( BP( BP(tEuxoCIENDB`go/doc/gopher/doc.png0100644000000000000000000001045312412656734015003 0ustar00rootroot00000000000000PNG  IHDRKdߒiCCPICC profile(c``$PPTR~  |@TTd` 24 Hbd K 1@HR6]bg9- L<% E% )I % yEE%)@P;@%D=13O@"|b\ZTJDz G0302`$40s$B7,,,XX[YYMcξC g".G-ܚ xx N/ÿX@G`T½"*"{EEM7"Q!)'yL*_ZZL->y? [ *U)P5QvPK#TSII:Vzz,05157e6}iv| Vuֹ6qvƎ:NjJ. n Ꞻ^&6>~  2)B.**""ff잸 lIa )kRosdXdff;˞g_Q]vIV骲7%Ujk?lki>*V~Stj_c݉6fO;5~3g}0|K,n]mY{+CV^vz 6l޲dV;vsv_s<~L֧ΝI>ڗ^I6ީ|übO?|!.|hd : 4o pHYs  tIME'⟐ IDATXÍYyXSܹ>:wktZTkݮ"VT,.XVDD˦,"ZJY ZZ*↶ j, e $D ! l{珓$9<"|-wd "D1@= "d#R<^C4N Z&֋xڤ9Q "Y$*⨗H.s\x͟v[?pjZpld:_X6!,1>n]VRBu2ǎ坫PW%Mhɉ~{k(^)n봚r*'iCh ^ ^ ZfNq 1ZmoۓAaNĠ Czޮn^82zǾۼ6|jN6bI F `2LeĬә{p~#^"-8r5EUyIZgRǚ?*wOlVfdYՆQ"b˂לS@Ss*yS.f'[8563&Zh#aB2a=xL^U}#^\Rv+>>4k^'+9uWLFCПwv646?s%֝ҊǗ E>îtZV )' z]VխV:~}tv^UMo7}:5{f޿)84I X, C|ϪU=~ÀdvYǻ)8;b 5ǐ=q{!y4߻@[~[[IL{ #RcGUpa_,_wZb˪alijERGHٓ\&y_6M-]ۃܽHi6i}}Z}ST]**.z{n-'ܢ.͍Z/*ښZ-+=)ϞEV5q|7Jy5`1iͥ'H?ETWtEֲVEQ=eWIcoGc{Fz|}P:=`^qN}G|@N;9q>KF9*q뻯nSن'"smg^7GӊL>MQ[2畢xFPpuʯwD?i5=}.m>)?ٞB3TxȲX>oO߳RJ*k8 nA9{GKL&h+M~|zߤ]'cNwoߣi AP^d4"{; x,ׁ$r8>r)vRTz)XîL x ,RzPL n*0)w@0B+(~`=znQejcCؤm[Ct>7zn V.fGgfԻ_Ykg>s#@/ѳe#=F`qO˶p5֬[Uof?8 (m@#-+vT\V @9]e_poNj GS_?Y:Bi@plL\Nr4ɋ6F{YG+6eʄ wܤ7kۡ| {#{Y;>kfG^0/ţrb: B'Ku$p|lS<=k`.d ^~0:(Yj~ƸPc]aUlL& DS"/W37}<g_ݪt\[y+va}ՂBϻD-:;6q@clc[6m/ƶp`{d~ ``; >˿$뗭?ZYkV.kGw=0DܒsEwadݿŖz l^q?nrhSz 08WJ6$al jW6jD|ǔwqc)Վ39Ay ][&Eq5ta֫ge^BzYp` лg0|m sl}[ңZ0R)%*r7 zX5+,X(FcT K ିk9T$ {nx5z4`DGj]I+fH,@Ix$(RigkvO%wC.Y{[XӢOD|O N!,/>{#46 8E&pҵ8K~  ЇON_j#{;)f;QP"P,4ZH{\cC$xڎfv6. eor:8-*/~pP83ǚ e:'$ mSvM550f::,%TAo1,bƗHmNZ db8ni\Ы:ο}QuwEX z2?Bs3E.<YoWEMt@;մ$zoh; 8a΄ȜH6SuB[BM& Pu^uVLTNE;Prd_NXR#wy=\8eY:1hxP T]d }KFRgav_ƶPKǜjWI\K|˄-5 AxF`Z ~,<#;ś\g*9$̫$zXy~nE3 7Wڑ9|Wٸcu֋;1V淟?$(bl:IENDB`go/doc/gopher/frontpage.png0100644000000000000000000004240412412656734016224 0ustar00rootroot00000000000000PNG  IHDRT@ /iCCPICC profileHǝwTTϽwz0z.0. Qf Ml@DEHb!(`HPb0dFJ|yyǽgs{.$O./ 'z8WGбx0Y驾A@$/7z HeOOҬT_lN:K"N3"$F/JPrb[䥟}Qd[Sl1x{#bG\NoX3I[ql2$ 8xtrp/8 pCfq.Knjm͠{r28?.)ɩL^6g,qm"[Z[Z~Q7%" 3R`̊j[~: w!$E}kyhyRm333: }=#vʉe tqX)I)B>== <8Xȉ9yP:8p΍Lg kk Ѐ$t!0V87`ɀ2A. @JPA#h'@8 .: ``a!2D!UH 2 dA>P ECqB**Z:]B=h~L2  5pN:|ó@ QC !H,G6 H9R ]H/r Aw( Q(OTJCm@*QGQ-(j MF+ 6h/*t:].G7Зw7 Xa<1:L1s3bXyeb~19 vGĩp+5qy^ oó|= ?'Htv`Ba3BDxHxE$Չ"XAP44077&9$An0;T2421t.54ld+s;# V]=iY9FgM֚k&=%Ō:nc1gcbcfX.}lGv{c)LŖN퉛w/p+/<j$.$%&㒣OdxTԂԑ4i3|o~C:&S@L u[Uo3C3OfIgwdO|;W-wsz 17jl8c͉̈́3+{%lKWr[ $ llGmnacOkE&EEY׾2⫅;K,KhtiN=e²{^-_V^Oo§s]?TWީrjVQ=w}`嚢zԶiו8>k׍ E  [ly邟~_Y53rW򯎼^{7so}x>|쇊z>yz;lbKGD pHYs.#.#x?vtIME)hb!:VIDATxgeﮊl`E QX""T(+E(({ Xأkٍ_L6>8i9>{ΜySOK!4~>{-Zt]w͘1cܸqwiֿ>gϞ;C׮];wܩSu]wn;tl[o;ثWC9?묳.뮻{]|5k;h[o+o4iҨQN8>}ѣcǎ-Irp믿.y#F6m#<ꫯC6駞zj޼yӧO袋ءhwy礜x.[ouٲe|-/`^d [W\q9 8X)ɇY[b^"rp,ѣG_x_|1Vem3f y晧z*fL~xunP= ꫯ^`_~ito{4h޽{R)K.… AQGEZ$ 6y!Htyn;~3#<Ӕ n;Y|ARZ2v}Rlf!C$YEgcН\СCKo'Ӥ L-T a <3 `w9qͥa=Q0P6] X ;4 ՝XSd7pD'Tl+/s-PFQ'Z;)ǧ&m~1ktk[8A4zG^~弖9xL ߝ9s&/ /6ߥk3Ձ=OV* &Pae *"]ʾc a`vu T{o=ܓ<(;%|Qu tJ =Mшf=N"]cu=ק}ipWVtguIm)cArwo . %-e)x\(*(oj΁i(i(C}MES1SPC],|%IgNwr7իA6S^ |,]T }㎃~7ߤB1%H${\n]}.3gݼ =(Ipw:S}*ҝWfrGEIUޤ?0,_= $|J 7BzxO:5P4>oy+xrtǑ }]P<aMN2yrrx]x|=HNg 3;/J77Ƿ'0.oa?2zd2{9BMZZ$ ##ǫ@ea916L0|I'ŒƼ OaO-ԟ`ӝQqL?5M$ vt7 uuf4;^jr ~nآz|[%O>9l-dIuBpL3ZuI`!+'NY=Q[ID_$xcD4nsV;/(Q{du婓;O nn +9v|;ZBkJ(Yo5HFLjiN5R#$⼺wժUDGvYU-:-Qg[8xdKpY#:O{4~}a|']<U?%≾EW߰D[‚'5aԏ]wuW gneԎc+H D_>쳣)Q"#+mȇ,Tl )"w"Q_/|I-K\9 Ϙ#vm?vCt.Q4RFCd!)|%5!یL|83{?UdXb듥',QL6}kFwҰ,ERӑ]3-v7 *$;jw %3LJF|b2y ajKQ_NzR/){oKA/&4eAz} *)unoPyTZײR.zEiTZJw&Q٫BuxK}N}=QL/+\<|V"<7=N|BCVs∎%Z(o"0$o& 4#6 # @.|"@-?DN+(X-Pu1:_~oiU%>MYDk@Hy%WIs\Nx8.aM &.Gӹ!zIrH  69O:@[8 %JE kGy%'5GEoDנeAN )D. 6GJ{U$܏X $PQ*,a!4 %_#hQ1iR*{="m]e;Hd"u|t'D4zEk+d\1YZpEz\l}]jҚMZ1hn:L8HKcϻBMP%MMKҮ톀x%|%JggYTt_Q¼x=6cJ]ˉCgd\Y6G#meeJcIIrJǚ"82PD bK3 KZ.uۥ,^M$ wH]Z҃ I"OGjVD3IwJ:JD6,,?vbjHhs}tW[.\, BDίUWwtV_jE2l]>'7QiDԠ 2%zx4&SZ@F^Rs^Ge4#]:<cJ =IQ0H< uiIFwȤx!fkYSݞ2pNP9|7~BN;iܺh;=<[]Qڒ'U1'1}t2cҔ8~ٔ*1hl$ ă3!cQ)kD#EJWU袨2&r.Gi>5@tk׫-)&'myJ׉IC!)k+ WG4,T-OKH@F7|\Doʁ;U})}XX=z9usy]EyM#=kMwIߊ{Ba-18e+e8E5,n%mVS`,'iOzG&8!4Mtzcg\xwx2OcDOo %!9> ZwsgNLfFFtG|dիW!tH=)Ҿ܍;KZR)nWҊ~4Lя]ƖQYV}?/=>5bDppR ϋSE^/qтp;1rh4UtUL$ %8.Xq9WFM$IRjVto-h˥lԉhҿReI?6,HHE"զv'~GVK6XzѼRFP֐ Ul&MHg'bV^:I?})"u,%Iǚ Q ഽuRe/uZ'"1%jQ0CO#GaX}?a |ϖoRKZ*tCڕ5Wɳ!:I ;Yhψ>4kVo&3} XȻe3 Z>,֑u% Lw\tmLѽ h#ȖꀒNwTBĬO%g1S#-ݣ`|Ht#mǔlOi@YV9BVRP_)pz;}rf(e/Mi,:q[)Q~N{jTeNwq tBWg}B6$ƨ60̿*Dq[Z~+rP xNEwsF Ucģq ie}JV"W*%{5\Trv̓mzzZ9{z;a&٤9Ve dXyt)Z.-&HTBΗI+<DUmkΥ{T,x̨2]bN0V 'Fٱ:,#\C+E<=z\r1e-zEUΛ7O.T\E˵wɮ#|)3CvH9(jOѱôzMEwT%7]̥"ts OE~Oړb QmZiCծyIĊ wi+IXqx]Ù>|~c)b)hfO,l25pRM$e DxRVˣڞH)BqadBw|&-=QJ UKeź ~| +Dj46}Hdh9޺ThR@ioeqx,ks ]`:^.r_QB 4ǪN_FFV.UO5IUY b1 @4e`9:+`?Q<[Y}&h s R'@ȸPHOzPAhb k֬! l.[;L)χM,cABl=ft'ġi5 ( nƀ {dЃxҝl)'TTZ/|PQ)!Ayw  vcJ5FwD= /kH/Yհ1Ծ- B3O7=!_S" w!쓪懤4[{! نYWgE@کߓ:d/#adrzT 7P (V Ξt bD:hAc'/6WI ;'݉)X`4 344}@XXE٫=T`%SgFHx6|:i {*7dNJ4%8:&¦ThAܒd^%3rD#”-+U-H4jM inJ:AD HW*ȣې%Nr|%^! 13QT_9C$L2#9vYel"rghvs7KP+t z=k Mj3}>tGۖA$0M륿;TcWƖT2M*ϦBsT͔/'X.IS*R@/Ž=hAFX>LȨ=vʛ0}Ӝݩ\rHR'v3 :E:"l8K?1hq*kUQ>)wC٩?r=f6jAP]铕{ w $j PJ6 OEL"5O_2(g\%[} 1 X[L>tXG^l6ZR5YC٧L);n$^$ڃ^ ഭ>\U5U64. QGn,eBw '|Y w@kJ:lMFD1ʫ#Fi7V{&@T2qXNkPJ!4cn۽L^ԇ7iw% 52WRC[J{e-`ӿ_q7rOԥ@-†JwstG}]ФcYbjpHb{XNN7cF@&nO>8IDtޢ't/;0WUeUmc\dp~j~:o_vovg D72EHF&{ Ow ,/k~R澻t"]=%"j{iVDoqoDduO"'T9sCn%be!ND߫9|c'26`v]f4zc{K=p, [.횞yL檶!JHu7?kJ!C/sѪ|@6p"t'Si!vcFgْ!O3^0WzR_лTh;rK ;="J۩ JmJRK՗tIs*KRѫ֮HаlK"CflFXFk I\P%[>N b{0 4$#sc}DitRg(IH? lK5sFӸ\JfV SN ca]*XC}Ĉr~BӝjeU @wU b MP| Py,)DVŐ(SWh;A$<[CQ("|ǛoĔ)SlU Lw@EN5[Cӝ4**&Vׯ!#D;{4Pa0rJ￿0*U 4@` *R~f))mCӝz.Lw !)9my a=jMÐ0 Ow3 dc?\Xq .A5Җ uXȵ^[<ݯ*9u]ז(vmBɓ'Ow+|M.]`l]{W5`efrb^2#f5sOw˗/2?N;-Zt_p!,V9KR"e42B;&;3g\2^yly aq.Bf~>llﷶujdԤ Aqcd{y׭[7[o}'y!@]cXγ!D`EuG_}WJ G ?ڹҝ::zf:ٳ Ui0-†UVϟxbҝiӦ}jz1jԨ%Kg1QwRN<8묳]{WvAueՠ;}lu6h?bO>H#ꖓ ta_~x6|C)Ow5(TϘ1=zdcǎy*[CX3Fص۲':zKWFX4l&'8>3:tzmy a*Vo8‘G)]&M(t& ,1]_}(ڵo;CȌM4) cǎ&L 0@0Jwx[CXvm(u!"5φ@>|L1ZyJwBol7x]fЖ ^zCԇTܡN*B-!,[Fb>lԘ=\޷o4gsWl6Jw~k~GbȐ!1e;([*!̿ꫣGm>WNDZ駟l+#F`f6l!RdC6TqR1 tG+%|c9&:-X;I>Me/&O?Tԩζ1);O/?siŽJB! (l̈́cs_/3t~wݔf?C}.%@|KO1GTT# 93׬YSR+qq} sc"?|iݼ]vE8F;}D1Ib(V4h?^3r6oәnE-uwc i 6,WEw.{`2tM<=Nw@'fR7nwȑ/TiM[Cpꪖ VZ?NUb2ߥEΝ;ʖQ1>ޣ_ޡCRcV0<RrphzA[taG0ioc< j zFU>n1d 0C]Em.ć>֗mDAcb; ֨j cd{Z /E}Jw$ la Y`ĉA;W^1dch6*~m[C4D ]Cuqw~ 7 k0,ƺ{wvt'CL{1;]yѝlj@TFK/TGlCF:tt].qK: JSQ54 ho`m09b2)ՉT72;%c os뮻Ƅ L5 a~20\!#0l :0#$'q 'تNK-KȌ!ڣ+jQ!dKbASѝ@q%1d y;LTa00 b莚rb>J?F ݩ )ۀY[Cv5j0Mի;Г`-!;\tE´4CQS=T0e[CvP CwڗB>}-!;`>HE>LgDL4 L]bk7lKb: uo͋TtG]-!;E.]}Nѽ}ܹ$JtZ;J4 CM~4 ^ݙetwg0x@Ęzztgzҝ $p=5#& ;eJG}ԖĐ&L#- nU?$lIt񩧞*h;)-ZdKbLNEZtl2g08ҽݝ_ j041`˗/%143ݙms vǕL%1dx;tSѝX;o0{ոjt74뮂ys=gKbŗEy?p n&ajoft R/ڒ_/Llh(xw72ɓ U5røqi]vfFJFwCn(^#n FwC4# Mv T -n_560 k dtpĉfƐ(\iCw4T ?,d_~l 6HsU54 "4q ŋM+4; r3udZu*c(ݗ,Yb c/ҌѝX… ma Y L";T= iӔf|Iat!ưaÄcݻw ; Jwma YIKw w1w}p"N:W~w#:+=Rf2Ŝ9s;fͲ1ǹ+fm[tGf֓!Zdkc[vQG?Z*RͤIlm A d(?5-쓳?~!,U?`Qٌ3ƖOf?viCYWv[2AϞ=BmC9`ZGNM3[C@0]3f=P9 b„ :)TkhZ{rN2đG)իWcb BoѣPkB.Lu224P6S/t;w&^u['CRILtN }{?GNK?Ihrf#F2Gt#l (ݜ0`> l .ߺQxP`GD$slO>B4w<AaVҔYDO *ukz~cKEO7 .VP H)U23;Ec.f @W 'Q*t{k[k=pp9(I.~%C4H/K.5DAF~^t`7FEQsG[2=z om  p)-YRzawᡇRJlV~i_~֭^_nݞA[o|7o^ޒo0rC[oVBۀ9zK>?s-Dl2[ve{A-R;ja[vX%&l73AJG1ٳgG_>`!ђEM=oB4Su&yӝHIꕣdonƩE0~me]r 2BѠܙgYo6 W^mh2u]U9rdR]ҥ F&{g2.qƖkmtomFodžnh G-x wy(& m<@enӣNvy2Y}{_gʕ+ ѿcaaș[UWЦD}d*StGC=\;3_8pNg%pBwBy} /Qp #|~G>~]6!ݵNk>ebOu7ޘֱc%K9;`,]h?/%X,\D'ۚ[t2'3No*gqXChQZ@&v}wVEtG1G}Q uLBs7^f1k^Ǥ.!=zF9s#"4^{Xo ;;iҤ;C)ȨW柑{Wa>[JF?~gΜ9en L={VW_!CrY4%yRݲp1Pt}F%Nõ񥁳ކ8xt7$g̘:_Ŧ??X8N 9w\oD?CY,ҡX{XR饛nҐt^n|T0"K<+w]ҌLvT*Y*r;wv ImOXG`tgL 4v?Q% hzYss2l :2DANpb? )7n{xʔ)|7{U ) /0B.U1a^X$zW= Q HbM6,!-%O`8Ċ+FݧOhO](6z_<2 ;=mP^ۏLLzLgKq| \TUZQw)i*:gp`D,k /.ؿb*HtgSN;PЕ, _%'u ƛn)&Є o\&nNpZY":+>t ݛ5{DdpbH4iD^{o3!K&*bzRWl0~NE2qD ~R>m!:DʹshNOF-R2nhaiULjH*ȔkCM,8:!S;ZҚivN&C;T+e.Sca0Ysz|2*ȁI!NÕ6R[GuTsH/BYMLqEpx IT n 'ܑCKԎ؆Фy0`'C˛ӨsGZ\RvqvJ^9O[R5 X-YxqeL oXO%E*Aw"$ϻN#D#x)]EBGyAMmLE4#0>wN.$Zw H!A\lZNrnُ@XH+|w'"3a;?x8E 6֋e&=Xy;ԑuxij᷵@V"K5S0tJ{mLuYz2ޛ-{o4J9ő_k6=G: rc LbE 012L 6N4IENDB`go/doc/gopher/gopherbw.png0100644000000000000000000051647312412656734016070 0ustar00rootroot00000000000000PNG  IHDŖ! 9iCCPPhotoshop ICC profileHǝwTTϽwz0R޻{^Ea`(34!ED"HPĀP$VDT$(1ET,oF֋oZ/K<Qt`)LVF_{ͅ!r_zXp3NY|9,8%K.ϊ,f%f(Aˉ9a >,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEVM81F~ <)X|0&qxObG?z0Xٹxc ? 0$h?F@DA(F@;F]_4#c[#b(ld~@!#p#b^#z_τX|P˜d~NCcO?7vMk` `T Wjm?O%F^EF0PpvAS=_$_bx/-v>ad|} xs1^_}@n͈b _k(͹x́qX|g6/~`T Y % KU׵E~ZUUO"|$~1C=Ϲ@ eru^\x>:SbFk>u FFm[dؾ{$y|v;GF07F*ǁ\Opy/L͋@$m[kKya47}\uNr>&l؋@n“)$g[SJO/F]@aĮc;]\q.“ $'Nuq1Ǔts9 00x~oA(I?(\\o6(\`T h6ظM:b,'|\CRXu:' 3"6$6J~'ᘮK u準n^J~^;hwa0*rfgD2W{\.qkz\_ s<Etqƈvm[#bb3&sRV+=X F1јniBhݬе~x귔R%/+pb8; kp~aT*9<:QAq$~A TZq>1 U| g\+Oa:0( էؘX q)_`\5L_r ϰظÄ!Qk༣D];^^5KOnWܸx>ub`,abL<ݕE=b=7O7%K4Mq⛛/`T Cl6nW~|_ y8ߤ?(8O/Z.ӋL񌋿-\FF$O'asEEʓbu;֕M Ex2,b``L|Iyag옗mG}q^RJc iĒ~f1,b`ܛ}Nn鑌0.(ʮi$eP GQQG\O~E\n/sL,ykƩm[o_=R}{jQk~1>͗"48&ؒ^OTx*SvwwBr%uqȧKzyajؕk]ye,Tfu]EseX FcT0&m[oH2:=%1òs\bP,zj_ׯQ1pFWWUUZ:2#DOU _O)eo,o4:%Σ<`T Q!6$6&ܐXtcbř=(^䒟e/:`T |~kL,ЛӴn 93$rdX>c?Ffv;wLK/(AU^˜TUZ|seH"bIl<  uh鈌M326.~N1(X‹ޠ IƂʧkߟ?t~$ų!֟U۳47'= -WWĞF,!!ӌt|SOˏ~$6l ([MO%T Aҩ4cDǕP͸|mzJ:d12  O1&˥'JOC/˸ 73A@nnKa}9I'i;xQO/w\|yv!bI>b nݹ,q1Rlzxw OZs/Z<ߞ"Iqiko( %q͔y*ɧZoX|3JS0*dsud际'zy:4eŎ?zZԩО$؏I>kܼ`LC}߻#YzAFxHRL%Cr#1=qnj(eT85MM%!O0V¹4u$e38ŋO@!S$}iko*5&)}HrcX @WWu]X*&u#$IgSpHRTmDpj^śJ;twwg8d'ec|/ސc]yb1F^L\U4 v;o*)“w:{ڶ}ᗭ4,op*^nqL\׵;3d0t:a-){'{s 2-_gV>KcbIX/=J͓]uI@g6&O֑T Ē-|?;}o^{sdA$?2/E|ӉGrj( zxIm~s>^‹@nnKFrC#IFڶFp 9=SrcwJۭ7 OJ5,Vu:_DI~4,X|H~Hl!;5a'Iʡ}V+_@IE^ 0*_~XɘݳR$ B+IR+R}A$9~`T 1ftfY)˥13,VnyJca1E`IqXu]{sHr>Ȁ_fSnŒVs#bbEؐX"}!y!C1,<gF0ׯRKm$r~k%w1}F `T gҘ=tb-IU᩾*aqx²$znT|yvY%Q1DN\׵]*}P%IO+A˰Xi\zZ1Fo6<>(6ȓҭA$ernڰ5$?3*4 >0*|ϐxfvIg)0Vޥ8,Tjq0*緓 ,,U-OݓJw)u|nRӊ0* c'K:{)%I_ϞXZVޛ>SbhP,ܚ1f$9y*z6,.v)S`ػlTlX `T @^skP\׵Fq +IF)Tb~6&wyqӊ{{iouIy[Vcrţl}.!on >0*1PAR7KG4kX,a ]1ӊ0*y[cbIB_ܦ Cߛa:=n0*g>6&v4ўj&I3Lm~]߫F%"Hcb7J:O2$ivST[]_SbL\U?%~70$雦{ ϰ8 {F$0@ҷ_2˨ <)Nsdjư8Rzy 4w}`T ;/@f./ߎ>$66 Ч6$|knxץF"d$C`^SR$7?VxJ$IΡ=m+רS"$lx?ɐ ~VE$WƇ_AbuwPbytse1wJQʘX<).H RbbyR`w1q)€0@|Ku°i\bI_gT )y0+)R}(Iϛewmfa|/u0*ȝ ro&o6wpJa%I9OFZ,0*ȝ p#x2c%i/IyTQgxkX,0*է!1KU)В$9ykO,~ARQ1@|Ő8@R\73;Iy5%=y^7cXRF"LMTcv.MIĒ$8/kťjd說yt+F"L`>jL\׵;3%za IR2aqO}nŨ w^?hL&WIOi\&w_ I-9X4]'SWxyu<{MeQ1Fݘ.M֒$Z0Tu]WֈZ¨ w^1>hL青a$rn~xx*m†]ɽ._F"2&URr~sfE$9G)RE0*؈"Iٍ$|VgE>x6fgF<|~Ӊqgތ&Iҿ)ƺ3-X3ҿ xx‡vwHoN I_gJoT 3/@F⪪U))݀/IRI0Sybq*'EIJ?nn ƫW S%}Cr:I tR|r:1J?;֘X %IzrIr|5*Nt⺮9)) %IriX,ךy-l{}ը W^g>S ߽{nII ݄lT,I5Mɜr͉'"2)lX, @!̨N$Ir~j Thȶ@};=b^;@(W`T PO1$7*_ I2=Е[3o,Ӯx/\\lHfRIczI}S/S:&KӽrE|~;x۹RR72I }ߏ: }ޒzȋ $zv#$I/INr_{w9^x_9Ӊ%iVA$IxOuXrU]מV:ߨ G^h1Om$5Ԫ2Mp0~jab8@(Ibyr? tbIn,6($9AVQs~ Q_\˷?bbOTMn$)b|b\`Fr;{qv+0*C͉A^,A$IiB{5MZCg$IR4,O8U=, JxiT :/`LfLIז˥/$Iu]4! dHks,r4*H!11%}JjƸNyT8V:)Q1@(..D7$vo=BIZv=ZU1OɜRESC>)GҽqT$uMڤڶ5,` {51*VReby[,>D;$[Xk7Klr})2,ƨXlT :/p277_]׹PҤ{7Ku&ɰRm60bb6&0&˥; %e~$I*i_2,ӊF"G> 뵻 %e~s%It߻^du]gdQtRE^c"cb7YJvuIu[4e)Նݻw5x6\\957KRl7_UU$-K? 578)`T bBcb7VJ&I\{1Ш e^I^3}BIfuI[V׵ox|3*HxGO'# 7yKr#Cpu]7ʨxp8`T df>5(#s$Ir3i|A m^bT,_O+x1qfAIQ}7IdpXZ.Fרb`dP,Inu$I~k_b9`T ?Inuù$I* IY4%IJ~?q{_=Z8^Fɹ֨ u^HCHad'In؍$x u_b9F0@fQ>MJ*p.IRlO=}ҵȀ1}|2*HR`/ҧKuӰn}$IEt_l\?IϩiCV0*A^ciܥ'ɍn4$)by2OQ_mإα_Q1pB^ӉSx$MiN]>8qq#p%㸥>0*Hb.1qn$7\$8l6_CmErt\{*jT */D;&oPZܙ' n0$ibm,OSo:zXTgF"@$hݝ$_x`j7{Ҟ$)@X,ߧ)pRbTy`b77_1Q91\Tv?65k)b9`T ~@M4ō㒤r8_nSEsx3KR:1%I:_>qlۭo2Q1"nn$1&&sI*\sIRY0(5.vuoV]۶=jT */a\cb7"JT1Ib͓Z&}?R)-K9u6,FA$!q]fL ?jx]TLڱxxx >Ø*o\]}Rv;wIJyn}%I4Xb=gp$ͷn*$vu]a 5McT,Mp>h8ŇŒou$9WbXXu]IO(|9K]͆G`T ől6(o=|$Iq OQZOg^'m[oxM|.Xxb)No*IRu1u'J~X a6|c0*KR/$r4b]Sw O KUUyJ1FpP,I:_a&rIm[.Nf?ZgXcT,x0/7b(E,bOn=!Iv5"i~qF f?b(dP>As$Iz~arIRl5g<]2*^b>bP,IJ[IR:] _\)֖˥㌧ຮ3*aL&nƝn4aa}BINj2gn (9g:6b‹@yM<&v$x$)HXc;6Жȓu7?N@fϓ?XOFŒ$;xuGnfprN mzs* l1vug$e}m6_$IR:s=4<]W뢔^}$CTIߣF"WtbI҄7:H[]ףszK78(ٰX?@|nM8&nVouC$9 cѯKI*~)PʘӉ%I$4859n_r@|?@2[cbIQV+7K@'"~[UU_7m[CBišqLt,PvׄF%"/ђ$7۞fE$]*cJރ_WYms'%{Ш^k1Ϟ$Ir%I%qrɠPrnΨb7}Kp"Ii(J=b[{Ab`T ~h58IY;S|w$IeTQ<^΁L%EQ1@)n>5&$ڔ7'KJ bn^8^m닭ľfb`T 'sse1qx$M#$1bׅt)Sx /|5ј88wC$)IyUR܅ JE`1M|n}\4Ky R$TIesQ1Fcp$IbL.Irlldw$}_ʹ& Fܘ82$:|L.I:ok,CC)gyFTe>|L=Ix7>.0*(|bLl]&I[7K<>ΰX|6./ "IOV$)ڶ5G}R12̨X{av+0*$ŞN,I[7K=>}uTΨbuqfaP,IcMy@?Fu]K }+5fէ_Q1$O'$M㒤l_0NJRGxJϭiO)izK:,IR鯻˜ϨXrAJӿg_Q1$O'$`DT9 r%y@O cvv1}tbIRMynu(#B)~s8vE)"Fw$Iހk,"IV:QJm eR yxAqiJc3$9A9mcN[uY|15ʨt^~x3tbIҹ ׹L JyZq]>2+'K>(>.;0*x2www${7KRkaFR~5McX,bE(C37I܄&I*FŮ%Qb>6*}*cIIҼ _`Tl,(9kVQ1FSTC{wIΖ%I~Q(w-H~4,V]bX|nHf8Im'IJ.P(cTQr^5֨b>tL^&I&\I %;O,30*|~Ē$7Nt΋/IJ%˥H̛ܱC-|`T X9| os$v5Ǧ O'4NʰX>0*x }߻Ln${0P*zmX,ׄF?XŒ$#s$)CUU%\b4* Imcb7Iʹ_u]{%Iɜ8AIλ!iT Q1@zDtf/IRA7⺙[t\N([.azuMhT Q1@x:$IO:CIRR޷z0CFr>>j Xŋ[b"suiqP,IR97Jiڶڿ$~Jxxb&1sX$IR7H=wa07I4/Q1FX٠g$7\]^tIRR.pr`(97VUQ1FE~HϘ8AqIrs$ɹRy;*v])zvPpsW`"WWn2$9S﹋K]WJ9 nXsn=b">pH2IR9wJ(C4]WJYua2 o% F1=HcoI0C}6#9C1fb[,G9$~w$͸nƖ$MP۶Ʊdw S%řa>gzJ1F}c$7:J;wavwS||m%~kO) `P,IҸ9J0*6*trzbqxBJ8WΆ*b3~iwlIܐk!I*܅Aq 헴l&EIqӰX+gR Q1?h|PTIr݄-I*܅X 픿'%_۶)J\iP Q1\]}b$IrC%Ie0+}%=j9e^BNT]gf1o7ÕĞP,I*%WIRjs,FŧZKiF+\3bA$IܔkIR/r_\S{Ơb3m-IR'ҹZbvQUUÃ2bI=X\7\K0*.=$tO)ܼ>'3&6($)׍֒$0K}OƔ4eM8hsQ1FGԘ8h֝Y LM֒T3Ũ8DŸk,)QJ <ƋpͿCYR7zKܐkIFS5ܯIqZ<bij$o O$\-Ir.è9Qw|j&fLbT Q1..$=$rtG$ F=$2~?}%}W 0}>^8mc`^Kf\7VK0*.Z\)(͗ln$ä}$I'P__gI%˥/ ΠbQ?hLSIR9K0*~6*TfT Q1fσA$Inu.$9O)|d6&v$Ii$eqNgso2O۶xQK0*fLlP,Iq%Ii\ sn^. tʪ뺳 _p"Y4:&vӖ$I9Y䜆QsbOϰ0%/7ݰ%IҘ7>nx%IY@.~志;kϫi_gQ1F01&v#$I,IrNè8usFZ1C0* qs1H%I\eIR4lT,ɵ' Ň_/E 1qly%IҨ7wH8ᗏ~oTSRyR Q1QbK_un$e,9\z:KrMxӨb c_96($ISݘ-I*F;su).Hz CǢ1,IRK(v}{wwW/fεQ:q+psKy(緞N,IF9ZTy'S۶>O{UR>,`T ,c1$I.mI\W%F𹷯ݷ⋋7E X%IR29wK׀(hLt]7ĮXK*|6^Q1FAqRV;$I:AFŒ(rځR/ ? o4UAzvw$I'ʨX}}TX.R Q1P)Is^$9FŒu]~7*1q9i&Iu_t6q(@_KJU⋋7?Nŋ͗UUkM3gI0ᝤ qtz.4I&MΒp".s*y_ߙQ1F@d*8&v#$I6m[/$slu](I1~ZSHx`P,IƮ*b2\Jrx7kjT Q10Ŏq$IfI`T,I^k9Q1)"X/vLMI$y0*7ڶZ`T LAcbO'$)%I{Q$YxL\`T ?}:qUU"$) FŒ2bעbj^z0*GcbIUW$I}Q$zҶmQ1FE%IRܹV$9SIrR103zP[Y`T bA$IJ# $>QQI_t]W0;p.^'WU/IʨXL=,s=*Ic~bQ1"@ⲞPN/I˨XL}]zT=>6MSȿQ1FA0%I*8$?X\vLFiX̠*wuIpFŒ$@Xm⎋_]}:p.^(3(O $IigT,Irmߋa'I4!s"@2($IyB\hP ~JRj5M31=7Q1F@*GfIOFŒ$S$-q+1(t`P5$)ꦾhA.I^wh87/ga$IxA!$If`Ji){O\u s /.^287/{Z$I6${~\J tcg]g9/>N50/d,f{bIr9$I $,/nOqA0&/dW#n$\wH7:S .$?O,=ߠS0*T$kI?OB _^IJ%B4ٌ͙0*`Pܐ $W,u]bH:STURIYG<fχ E/xLfJI5$I+!.$wͲ~8 Kc"@B^c0($I%:DtΕp .ﵶm]J}TrSquiӉ%I~$I3!π\Jc_EɇĞL#IX}߻v$r{$~2b$Cb7DJ#r #IR:Mz}S ~1(qsŘl6wEIWUQ$IO̘X.+I*i{FPn$I'$Ii7P^ZuY _pxӉ%IR2My],IRJmkۭkQbI:jŠx>=B ^0(v$IJ K\H\ X~һKzP FP Ӊ%IΕQ$I;|/y]%kbAM$Ig̵$Iϯ:WNn^u)IAś?6Ƌ'n$IFikm}$IΣPk,IVUQ1Lo>-vP4;$IҨHb7^gIzIި` 'H$M$IySIOg\wJbAͣ$I#eT,I ?(PIRܟjTD (Iu$I_$u 3;@lp8F7;$IRtHt3ŵODס4>'0* %^8jPA$IR*H4]6cmzGt *IJO+ ^xC!I cEi75$ꗎ> ^xY%IRu$Iql r3Z#$==8_ݠ8+7yB$œQ$Iq4qn#$yQ1"c?󧵧$cC?(^ٝXIXbIX$G֙~K)pbJ P0Ě<ĤHR+ xϔ$Imw~zR9X|ugT  `0l/jInN$Ⱦ8ƴ$SG0T sshXS] UUyKr$I5u$en3X bHu]g 'IG$IRTw @x&qtfgIn~(I֗$cū՟? A +WWԛŒy]$Iu$!b@>r&vЙ0i-)I$,L-IiZ  bS=ao I$ɺw|0PbA i77_TmH~If_I$YWZWJbb ć?}Nn%)$IiGJI5,Ziwb=n3 8ް$$I|w(I`ӟ/ )p6aM(;$IzҺRu* 7׿e1L\׵nfi`Xyʁ$I|m|Irnx`w4x.?f0Ln"o K*m] Il6֓~L,* us( `279Ij[I$U.Q9GCx ~b8 j뵡K(DDRW$I֑֓oM,P1ov'֓mk Kғ->U׵/Id*$W}=yp4T @ M~v8 U$=63$IzI]BIOZ*y9`nK?CbI!$Idh)IK _]}0;Ã'T8v[=gG^$gVI*XonNop4T KjiwLnx"\۶^v- H$QygG)0T R(î*ft]뱛%=R?h"ITIқm`1GCc2Ś 0B*ufb ֗$IZ~h(I)t:sab7`Qv8Z,{$I\3mKR5M`q!vgņ8_UU_ /)J}=u*$Iff$1 ]p9{1b ЧO$ @:O=vּH$^l={m*xcv'NTO.Mx%W%I%IIs*6X `^݉ 0u]牣by7s? 8֥$Is$v݊0T @zC݉P_'T[#'J$w$$}xXo0m #=w=f7$IW%I}?`/`(^ٝ8 ]P%Ւ Idm$)7W?C@^au]!yz=Rmk*ISӔ$|k`1bHfx۹&0\$%$I^ZJbڭ`1b u5McaInp@Jca%I"-|gMIҒ}`qxtMP1\_@qR/o5LnƑ~9^,)e%I$蟃ѵQCsT0I7dJzyq}I6 IdMh](Iz{b,tP1E5P7 CQa7fIguIom[ZI$-})IrNc1b  %Mx%sv-{$ImG%Iq8X|{ (fxeX4*f8J*`XҫZ=:$IRk}$Eunzl_u0T ɭkwT I:Gqsag,Ie-#Id-h=(IxNN `xR$KI1TuRiLUUYH$$IO*6X `L]]}bX/riXÂߤ4$I\BIR5ģko+8ߢiWpnI3k ITw!e w\\қKiXR9k*I$]$)cC `0̅J(ks.8z $Ie䇤$I[v+P1@Ѯ>(Nvܐ䦼 ~?$IRY%IznqȬ݊r ?@t]9S*} ,I2>I b .ӛ\;٫[$)|$9M3X|tP1@wRp󜐔S8ଅ$I$Ig*6X `Ƚ{@q-S$7y%I$I"*HPϋ隦1L,I/%%_UUy$I2[&I:wp@殯3Pq) z`KJT~!T"Y/K$YYI A0Py*@qm"q`K*8wya}$IJxM'IRielӟbݻ?ݼ᱗8kd='ITzN!kHwb7=v~8 I_UUyk-Idu$wq |9y*V?ߝPm6$)~'YŒ$Ir~IhbC.݉sG#m@q؅YaH_*9=IK$P1@lPع9bIysVt'IN$gx`1b1R1$ibZN$}Ⱥ-$NnpNl82 HRu&H / $Iz~G$ `b $a-y n$RYMI$ſv$yyww_OX;.lۭX.D0/-z %K$º#I^kw`۹"/(I9R GI$Żn$)qn`1b"(V<7%Ni$EZA`|aZ$IXݑ%IV bX{@q=<<؝XhOa M$$IΕv+H v;wT|WiĒ$$ŒbI$5k4Ib\8 nXK81RCI$=R?/IJ_\>vP1b eX<|#ړ$IR<4IR߽tJP1 5MΉn C$I K3x^_$I?.ĺ, %IJS\, d8P[mۺcuvXIʼ#!$I>.$9`1b\]}b:wJ|W8& K*L<$MүZ$IҲ3k2I4Z5eCY|/l/}A>fgXF@#}%ITL\n ]W0T Hڶjи$鯜|__$IZn]fbIRnb*6X `@Im8Hm1@( ɒ<$I }$9n9p@q lI~TSYK$&$yn9p2ݝ؍n, jIR)Jv Ɨ$IZq$I:s abűfX5u I|*IRVw|?X|s'` *WW&v? 9 ̒$i=m6nŒ$Ie%I4vE*UaXH/L'IzkKגIvo%I҄-Ä,0T `/*vA$%Ð[rbI$e$I|kP1INŒ$t56aY$E̿xlOP1bŏŒ$xCu]{ I$e%$Ir]~:5b]\7P@v($5M39n^Yd(Id%IRvh;- 0T 0.c.0%IRQ)2"I4aP$I ebC G\N_IRm&}r$Ioe%Iooo? L_@q[b+Iʵc:J>K$MS4}OvH$I0 v+0T P.Nc@$I_2T,IZKV L8P2pis8"IRY)꺞} MI\P$IebC .z6P,I,^aIVX${~k`1bŅn K4Smv^lW҅簁Iwv$bib7ycLaGThXTZsXl#kUC/$IK~g$IRom*x 8F;1Jkd%Iސ]%Ir~PbCgء@ܜ(Iҏsx:n}A$IY|*$I,_O ^(0oL0P,IR(sU$ʚJ ]0T F8q#bXx2X,=̾tItKYI^^ C77_N ty.g@$I6 RYoJ$Żv${*Hmbn&n`JTXUU\!I[a J$.C(^(v6S|Fagdki08$ɚ$t._//? <b7̢:$yuC$'}YI2n"ߥxnG ($)šIqc$IZ+eG$Igj 1T \PQR^]ፄҶRmXRZl}k_$Y+l!IR9bCRlo6Jy\J{C2$I V$)bp\^~X|b?p8($)a0 2$IgI9~ux0T .Nc|ڶ Jg>$ɹn(^(C$In|qp%z^l4@$P$I˴n*6X ``]`tv($ɹ@.l<$)>}dXB GحP1@Q8} KY`]K]R$5$IiV `p\OgX<[׳ap}yjF$\ I? b WW(vZ7$i܉DZ$IA?~H$[1P1P +IRa{kkE$~$I>n`(aWnJTy[^P׵A$$I V p4T b7 x|%I0|-]ێA$IWUU"Ih⋋C@~_v;wHdt`œ@ I{C3I$)wk%IR\}حhHC/Łb$If@b-,IR^XKVUU>TlP1`bI}K舔bu]/&; J$6Œ$)ub0PlxR(J4_$8_+r$IR}IV `/h8 K:RjUUeX$%|I| @ & 76P챕$i HV K${Iv+ (v#Kqb$I˶Ĺ?Y ?yz $IRT?(IR-5Tl(D_e8Rܡc+I-V^nx $I?Z׾ד$I{b8 Kd@RzNߒ$v$Iқ[O($0PP8?R;P|ZrMn=Z1X,IZHjb~R;U KsukGr$I3µ雛/? w@i.{l%Iư^YK2jf0 $I[1b ) v;W룾oAʺAJxm$Iyu5$ICbY]^~Xt8첡}փ'IR"A)_E [jbksI|1Pb.G\7 IR-9a< Nm=($YkV$V `~i@qu8I; +v$I٭G$Y=T|s'A + %I*~պBJfݚ $I6눰$Iwv+ L8؆z KTF/ `I֪ZtжA铡bC@J(7 K$96MQ,$I)}'I_77_N@`1WWݥXOg KJon;a FJ%IRŰ^C$Iv+0T إ 3@fIV?=Tzkv|$ɺJ)C /3T 3 C3 o[$,f0i3) ʒ$)¹@$Iv+6T *bb=T%I:G1a%v׏$|ڶ`H-o 7P.z^S4o&3W7Z(vu$Irml<$ɚ[1b U 'abIR/u8HMa}y?Jװ[1`  u8%IR*\}Ae^=0x`$Ize:Y$Q饆onVHL4PrZB($Şab.k)^S$sn$IwcbP1ℋmHkyP$IўJ^8Xl%IrNw.$I) *tu@qT$Řab;?0khBz[MDn $I@$Iw`128.vM'IXۈnxBu5%IR}$IRk!Cb@"o6WʓnXy9>vA$e_ ?h+IRl^6T|qU @ 9-h(I β؏ib1fA$9/ ;K$^n7 ;TnnbbɹkNC1F$P1`({.~8$9o`Ş_/zumbygSIҢ5MGn$Ibu I Q}(q j)_6"I`qN{b"I*3$I5݊C@Qv)vc)I%v7\kv@`2,R۶%I3P,ITZP1`(tؐĴfCI7HQϹTU݊HkO}.ڵg I$M`1`XjnҞ>$)K>rz2X,I˹O$)bP1.q`7{t cLmŞu]Gtן$)a$IJon8P@]]s$9_kX֛}ۭXn'I$IV *W'.ŒoqfbCr$Mֵ֔$I{ Cb`]ݤ$YNuĜ?yY$Me4L$M`1`XbxFl=TX\i).r{mH%%I>o9I$e3T * +ڋv) n%w [OK)N%IQ@$I"V *sse]q)rp(Ins n6I??׈_M8,>g $IzF:ԃqZV,A"v)6[s=axYfa0+uMmz#"x,$UUU%I|qC$ @@qfM OIr1TKsK|'I`1`xï4kvc$) NYv$$0 Iy}'+Ia? 05ۥ.\M^$9W݊ +J}Ϸn=ξK0 gzڍfmv+.I:oL\ IoZyK"c+I\>פΓaNT׬I%Id jb` $;P2W p8v+tp.$=qXJ$ ,A?kW30-IrCq$a I@ʃ%Id-z⫫?K#k{|%IiY/~}oPʤ{$)?%II,|3AV>P\iIح8Y:$%-I$9߽R솸kc,I| H9]%y6L,I$kӿ @I+7Ź}VA$ 0TMsi]8HIޣXSJ$:`1 ٥ذgIRL7.A]AV,[4ٽu]灕d.ְ+$IP1`uuq]wW -IJa kCRޅ!ܜYR]c $Inb.z{a$9 7Birܱ{auIZX;J$)V A]\?*v,I%(gӧO\$l>Ic)O$I~T2Aۑh HҸ9 Ǵc!ijP)J$=$Ib)5݊C`b7ܹ챗$ 8a}0̒Rr:w]yIo, %I[>}fK܋*(姁bC%fD9x޶mRҲ:g7ci/}"K$Ifb ,b=nD%/$eX$IrlE1Tl8*2w)6HW$Iϩ:dwutW$=!:E$Ii,l`]Mnڔ$ppUU1K:gql_9KzmFp8xI$Xۭ0T Z<ڥX1]<$9_`Z(ש<0T*I^&p$ITb1 __vSCl.P<%I(:O}GڛQj,XH$IGix١~*Ɔ%CŞ'ISf2DlX$Iq*qb`*ᢜ]}b Is24SlH ~zЧO<$I(?ۭJ ,*Pl='$)b! j+As%i|м$I>*90v)V)I*.y]kURm[>z$?c!I$0 C.A8wNr=F XJ]o~.AX[+$I䳼bP1D}Rt؀$9o`s׫$k I$)뵡bP1dضK~$)<_QX mz|$I$o0T Seb7@y!IzJn$I⬪*Cbb@q%MqFPIRJ |Xd`=!I$ o8*)R.W۶IrG9A`m)I$)tdK\$ ~n+\c2$I$*pgC@FWU n$ ~x.cZ׵$kR$IRV %sLR=7$IqP<ǥ7KuZ]y$Ifj(\,C  ; IRj Tb8:?$IR-[͗? *^רv)UW*IFUUK` !I$=P1`bxAC;02oYW)$IPu]/2Tl /t{hX/CڹC9#Hҿ;pawpI$IPӟ*"ݥ8z& H#ڭv) yHr<@̆a:$I$I,֡⋋?0T (򋾒($q<$I$I$=V߽ڭR brW} "$I$IF1,C@q|C8ꢯbIR7OaI$I$Ii~$nKfsG $I$INv+ brW~ Kzn5#I$I+`Wǫ?0T ɻp4T.J_Pq\u]71iaxkgGL$I$^ڭR @B usG E`X*0L5$I$IRl^G?Tl bCC[8XGibo؆qtӅ[#I` S$I$eXGqC`b7p;<(IGx||J$I Z<P1*vcm9&IrSXDTUU'$I$IʯX b0T~n=$IM` kSd$I$)nū՟?0T ­$iA* E8YI$I;SCB4PPqurpqI,mk nVu]{_$I$IiP1`v)ւUUy&I2CTĪiK[ I$I^\C77_N"` ׅ[3Il& nAI$IwLv+8PL<Ov^օUU?>/J$If8*w),mֶCEdzt 1ޏ%I$IҔŻ[bb7j<$IU`kQ6 ;I V$I 2T  ./?  $0@d{/׍{w؃$I$I8w+6T 1pKv5qg$+"x*H^$I$~jb` ?a<$G{ =B$Ir ?hbhR]\?*yIRm[TnlgGP$I$I}b]ݬB.JFLxKؕ9{u]^ؒ$I$ePCP1?TuvoG# +כ ) ^z{|*I$InP1-|knUg%I#bN5i 7㋞3}P$I$IZ4P1Ku]$PPXsX?z~:U0=]$I$-Q;ح `b7ꪐ${^_/Iu ]$I$_?vf ߎ__uA)b7$)ڶ5PFG=y$I$IZ2CP1Q,H1@ Jߺx|\7ʅY1I}oc4^ sp8xc{C$I$)b*~P1Yܠem$:30T=C$I$݄݊`  Y.zIb*Bm Q77g ; 7I$IP1p4T OnwqsMTL:ŊxV׵7oH$Ie}* 0w8(vSnyIJޚŊpY~B$I$EQCP1lME7$I0 ~Xמf]1$I$wav+8L7OʕKg HiDv;O֍2Pb$I$bA@qUЅYIb)u[78^:n$I$)CtCP1݀$um]\7:Δ>ulÃ7kI$Ioح 5PLaFedX3\l*CťYx-4I$Is{//?R ݄G$UUepUƺas[8g} I$I2b2_X  W_$)\<0֍-vH$IcTC77_N`ņ6B%I'^= ^7:*v} 5}UU%I$I݊P1.&0b7gu]'Iҙjz ~wO^KԀ#vQx\xJ$I3T nn M]׮JkX3f ihm]s׿J3?''I$If*pOѽ9`]^~0H}%OTfVlK]܉I~/z h%I$I?,8݊P1{n$)6e͘gN Xo-aN$I$ݚb ?Hl *X~Y$| Zi :~*w,?+CI$I @lّ EXIbQ}^,~m&/y~k(cO|ڶ6I$I( bq}wS7+ $ho$^6kMZCǯ)pp$I$Q6TZySCg†u큐$ißRX/P4>kS$I$n`|1DlXy(I5 u 3PKvu|$I$) b"rq by(Idf)%$I$r?0T PͮĆ$Iϖ$I$e݊`*@nn R.zJ$]ֆ p.$I$8Q _\?}-* +<%I:1y N$I;KbabCrP$:qmF}\9`$I~ 03L\c 7J$6uw{22 $I$%V<+V D3LlG] K$)u#$I$IqOgAXG ;nEW7J$)ubL=<<Pi%I$/*|CIju U8ڑE.zJ$Y'fTUeŒ$I$[ڭ d*x뺳\Jfsy(Ij۶5rl>$I3T 80q9a QR.zJ$Y#&4LWa<'}oa I$I4T vqab~. AEWCŒ$Iad]H<L$I|wP? 0T  Ƕz6t-]=%Iai d>/q I$IRy]ڭ $kı ?V7EWEI$ŰF&&C$I|i t ~w\p\$IF`=h00Z֢A$IhC`c91k\$IQ|^)sq?ẁZ$ITwP1@nns(v˱U\%IT50l6S$I$I|i ؝x"0eS\l|$I*}}X4>8VbI$I bv'N'Y$I~)`]׆xsn`X$ItP1@޽@~/Vbh^Goփ!IpKútq4Ƴ>{%I$P1݉'4 \UVIIׅaּ?SU${NI$I}ba%]rVCŒ$I>TL!w$I;MC ./?d1L<T.pQ/+$ITfZ .s@۶sH$I4 bX\\bp8M1.sQ$Zh \x)!nА$Il\Cŀbpܕ$I$%=bx-;\򘫸 $Isg9t^…g K$I[uV?ýS`(j10qCE\$I*owuJ;ʨ*gI$IRڭ^AIN4+J_ؒ⸸(I4g1 f|TyaV$I-CP1`w(uJRd-\X}\$bड़ix`%I$)ϋ ՟IN,v(I$9ց1 (snTI$IJ݊ntAP=J$iaHK0P,p|$I$ExugņFzfYI$C +tMxK$In{P1/qt(ܜ$I >+j$I$.:T|ygL\̒sQ$$ց-!oaY)sL$I$τv+pn4s1sE$IxgmA+s!{I$I*xs˿ ,ͺ3ȩ/J$ub@jymH$IRARv+CNSfv$I܍PK0P,]%I$π)0bqKy)Ir>*|kE$I|:PwP1IMӸ "AN%$IR9C2uoP,$_3ƃ'I$I }zyv'NK_G5=$I7t-'I$I|滸xSC݉ i YR,KI$WUUI~&(&)s$I$[oo??ŽZ`Xtё0H?/%I珷 aB> sS$I$)zӟ* YLQ\Ēby^J$)ߪEs41@4K>S8?J$I~b0T (6P,*C@$Mzx^zUsS$I~K1myV `x_$Ihɡw8 b@Om[Wu\\uxnJ$)]Ų29*$I$n`0PfKEbm[CI$9R '%pޒ$I$P1 S@\SbOI$5ewaGorz H$IRtVP10q 0b*Ie@71A8^Q|"I$I^[ P1p&WW( WK(n8$I3]Lsr{$I$=;ڭ-"N++;$I24 n^$IaK__v3C@R $Ik{}R\8 @$IiOV GC K1]bzJ$)1xnMW$I$Pӟ*^ݻ? R]WtUI$yk<ۧO{3 %i_I$Iُon޽# %dF>tJFf#l@ZGn4*#W 6⋋7Oܘ$I$P$I2Pk+U+t7zu!N)޳jŒ$I$*$I?*@%yve|j?~OfUgkCŒ$I$*$I}H`b83g)@!ٿ]2P e?*6X,I$I*5A$Q4oQ $O_ 더vI!ojŒ$I$*$Iwu.m}Yy@` UU%}aSrJ5 $x?2T|sH$ITR6$Iu}@10 P9t]gSr;&6ZX$ITj6$I = c[]Y\_i8B! Ï05bI$I KTl(#A_D_؅s:#%Ė˥(Db?808V+^on>?e$I$CŒ$)~V(hV)ƾ{|\x$(Jw|dV+$I$P$IGU&*p ^};TX|> $I$垍 IR]_7P deWrw l鵴!Q.<0}Պ%I$I2T,I(1hC{5:hPTrMk\*$I$ IRſG?P!K|  gͦ2,*&TOJF a]^=%I$I9A$+[_6y0 뇹?o\)^YX$ITJ6$I=/d{6@%>uՊ%I$I%d#Hd*ɃP Jgچ:jŒ$I$I2PAK|X 3޷al}n+Iy@.ww_N$I$嘍 IR~Hjil`"ٿg,kyՊ%I$I%IҌzGRL0jq5yڶ"h:9D` K$IJF$)7aQ1Tj>/q`T׶#\"5CŒ$I$CŒ$i΁bCz_.9&(kHQX*q]?Is""@½9 K$IrF$)Ү%7PLbICŔξ0T>OV+å2H l0S}خ K$I KW)U!/y4Mcc>#=f&o0h\a%p/|mX$I$CŒ$eśbx9^+9* ]>UC%I$I9f#HdlVUP Ҽ^PU};I~FvՊ%I$I2T,IRV)splB۶68sQ Qeub1nV+$I$*$IV)LzF]y(XQX*q_CI/i'; Ab~3T,I$I2T,IR'| !v}?\w0 T%Yl -tfbI$IbI4Bo(&H?PTm[/ @4p%I$I%I({xɱ.HAU0]yQ[ޝ$I$ IR4ņ!/M86inЪ܋۹}6X|{t)I$IR$( 'r\|DŽtү R^XVWe (F@Zf[_'H$Ib6$I3vw%C8&@lڶuBa bi\:3UUUyQ~!\;9X|$I$P$IzqƈckzutQelԀznaX$IdX$=g80<  grm%^̽ZJI$IRF$*l"[@?jdg\gUS׶Pg?3wMgbI$IbIdbőbk\?rTJ~i^R$IT$I2P&vuCYlWϹuՊ%I$I%Iz@cSjF^0خkg bm:7$P$I$I%I/V d} Xq?:/@rw%I$I%I7~fذ$0 qll63N)φaeȕ^:T|}O$I$)lIF@@񅑇p|8>o K  @wV+$I$*$If4P&|a8|)3O1ñ9¹5bI$IbIˁbCPڗEy0x -bvngGY@>"@yx%I$I%I*sv ŗE#|Y'^3@x%I$I%I&@HM۶ U پaeY։yh3T,I$IbI {9V dZy ûuY^9 WbI$I K4y _y}X| ]x}*OXrt^*$I$*$*V)$rXqSh&aض* }tgX$IdX$C`$2(Iz9~cez>|`=)|Hnex|Ԕ$I$)lI {,9fiE1Ps /c]ק7@D#zjŒ$I$CŒ$ym[O, a~1T,I$IbIRA&|A 9 {}6ex':s.2U uxs$I$)lI 6rȀ$e{u?gC)P7>W/uՊ%I$I%I*ǜC7S4V)N]}? ubI$IbIRhaJ)Ki֋D?*08ȯǛ$I$If#Hd؃LbQ;X?yٸG~Պ%I$I%IҋX C_ 9~p@TO, ږk;?YbI$IbI (^(r z={rBIJ&rUZ K$IdX$!HU$@<뿮e4K@D/:P$I$P$IR0<[`. 0P<5c@s^ *$I$*$)no?s*_ ng㓕m7MBPz$܇(S%I$I2T,IU=DCp>sh(K ?j@G߫k;9p`^%I$I2T,Ib4 !$pL9, &9PX~̧*CŒ$I$*$P"0 6>Y=*| a5 sg N*xsOJ$Ic6$I/1bEcb=c3nWCL+{?ߴ?PobI$IbIRl&q=<<8l>(Mjr`$I$)lI { _8 c 0 G4m @6MT1DbՊon>g$I$I%IP1D1s@b(GY@׍V+$I$*$PbHiA sVE,9 i3yjҡbŒ$Iز$I2T'|g1"mF=˥1+p iX$IdX$Cņ꺎 Cix e ~;@ !q|$I$ilI {ȉ H}u]E >ٞs_OZX$IdX$Ct`}gs8~(Y Y4oW{sM0X,I$I2T,IRoRXq)|jbHI ?Bug0Bx/8 /O$I$͕ Ib3\?1Z˥^g* O%GI$I KdN*@9sYyru]TߓXbVvsk`$I$ilI^bh~,V@# 8 ߓn" Ð=ºh qs } g$I$I%IJ4j*UZ$I$)lIR|s(u"ūc\ 9 0 ߹Pj5PqXYO0# HՊ%I$I%e#HT*7$q s ?fv /pU˷?C$I)$I*|bqUK)/K;_ 3jŒ$I$CŒ$)bx Ď%m}6?jZ$ixA21Pśӟ!I$I$=ߏ)Y4K[C@!\~AՊ%I$Ie#HdbxngO*]뽽e8ǤǴ^ *xl$I$ilI /v3p}(рO}\0vHڧOV,I$I2T,I*0c Z]^4  ~Y1T,I$I5A$C$UBSKعj @P{}Ƌ _aZ$I$P$IEq&>T(OC{\.`B) em[xV^o*$I$喍 IRACbC)Mu.9,ȃbI$IRN$*rL ;^HmC|^Hz6T,I$I2T,IRoI_8oM_UU^H6(eubೂHʽn6T,I$I2T,IbHV)c\:GH€iHMIvgl6/O$I$+AGvqhUUe12r795MVՊ%I$I%I*M3bðc * Sm[Xa9V- ÿΩm[CŒ$I$CŒ$eiY1|Pe|֎麬{@&0P;iɆ//ߞn'H$ItlI  )pn2L% +ܷ\V,I$I2T,IҤ]_~4T/)8o]Ȅs{j՜๦*xsI$IlI X:w}A3`9xV`>mۺw}XX$IR6$I  99x r@L(w'iDa⻻/$I$I/F$P1 n tl/cG(fI0|N }@TV,I$IJ%A$CBB-pEY|,QR |~_faCŒ$I$CŒ$*Eu]k<0 ~i&>SLe߻A @*^,>S$I$=7ȦE·޳/ŏ緮gn?HUzK$IbF$P1br4p8G4*$I$Ŝ I/h|c sn Tm~Pq*$I$*$*Br:٦@vGzVkHݘC%I$I/F$P1 Y,t|cȂ^+CY'Z$I$\$*Ɨ r|A5jzvQ׵{E>aX$I[6$I?i|4TL_2Ν)4^7%@Tr!'Y4PbI$Is$IxbA/@2/%0@ wOH.h YV+$I$*$)7JCD/Ԫޫ@5^o9pojŒ$I$CŒ$ǣbRA/(0 AD) zYöG)ڶuWƻ7T,I$I2T,IU=` 9qp8xan}>vfg9sZ$I$P$IQI*&/r;uE^q)K#^|qrH$IlIc.Cҝy_$C@Z~{P~t]ގ^ns0#nbI$IbIRlB_"O}'븶mm|{|L1TlX$IlI S$=a ߤxOV,I$I2T,IRo o6waDO%|;]MxQf4 X.^='/Dpz%I$I%I2T.& '9 \>^`nUUwѺwMsݾp$I$*$I)9RӇ,m6/ty]6>7=1\O)A.K/v$ }ヒm[)ZPs\J Z$I$ilI2*츀0Bv;CxM3H, <}*$I$*$)7Ć˥;P(_:[a%f{GdX$IlI*Ɨr/0K4@:" {CŒ$I$CŒ$EPvu=N0%|>gUUy|^97[g K$IF$ t10ETunpNi]"<YV%I$I%I1fz&}Ezp?Gi0 m20 K$I K4b&OC@˥s3ZC6{"|R3Pś^$IdX$Cņz~: UR*VY8B`:M6XZ,>?$IdX~LeyӠ<0qnΑb]r߯,ջӟ&I$I2T,IՊ=E_1̩:L$)\.gyg`sx@)\+}o =S(I$I%IP1~ 0p|vl/_]{Xu8~Lg^,$I$*$i7GCLi*\+:7Χil3^ y2AS[|D%I$)lI1bRsu]a,J Ԕu=Ѕ}_ۿO$I$P$IV+ Y} }yHK+K(.s쟷ׯ_{ \\9Y$I$CŒ$eY `1w24Mc;J^Ygr瀗3LmIL./ߞ$I$IbIV.2@C N*e8҇(zx{RYb,0x ,N$I$P$I~]1b| !P*eM/aOrxv>gl^{q`":< %I$P$IEQ*f"F-@I ֲl6U8y?%I$I%Ikb| +dw ϵ\.ݧp~3aMxa{%I$)lI K9&#Ω.3dw={$zvy(k +W89$I$CŒ$*gVhpj^"U_0Vd~}|Sź70xXX$IrF$P1 x?vŅ *όw  smF_4Mb*6X,I$I%I2T>FUC[[q >4b,j%I$P$Iw}`1l6R`-@_0)x~9CzCFu =_}9y$I$CŒ$YZjkf.&ԅ.prMl+~%I$)lI )bRn<40UUq^1X,I$I:G6$IbaZe}>^X|$}3gv6cOPXoo? 3j?% '⛛?G$IdX仾~Z1sb1a}{)jY>F0׏?"i~bQ~oLPݧՊ%I$IF$)Պ)%k ï#S՝|F=ױ{I/ *$I$I2T/a=WUe 9m,f e %\3 |;TlX$I Kd Y~ Io \V^> ~m^({V+$I$ KPeP1Tۭ;Dk&l,Nl6>7&pN}QR,oN$I$P$I r<mW s>c5kJ\.jy Up/jŒ$IdX$CbU G?e=<<8 Cp~GRy?ڹD/Uc=f '1 [X$I Kd؊Zde<x2Ҡi{!W=7jbV+$I$CŒ$*0#iƐc`V~ioI?SڞI!_ VUUE7TlbI$I2T,Ibb1#Em[h\QzQ$I Kb*@H mI. 5AN\@zf'N 2PbI$I2T,Ib]1m 8|-JXM*׵Պ%I$P$I=pŌ ;bgb)˥ʚ0,뱽Ov@FV+$I$CŒ$eJu\F, nے 5B[~Mxfx-wbI$I2T,IՊ=pEô^v[$?r={U i[~2bI$IbIiq aH:'j86`_/O$I$P$IP5IHCߟ,I$IbIVa+RP1޿$Es+:Xb=\|$I$*$)7H=lSm6C8H0 T|"ຄ{+'dWUU%I$P$IIՊj2嶔@ Nc 6Ƿ\.3f_{%I$P$IV+ iƠc YaVEʩ6$Ƶ yZ^g8>_@`$I$;A$Cx')* '`?O8c_];$I$CŒ$*|A` ޛ4w08sw:i;d.߬V,I$IF$P1$%bkS0kݺF ^>}A/{p?Pśӟ*I$I2T,I,]_?8X I`q2L xq?gjŤ>{obI$I2T,IՊ=`/ 0sOv zj/g3@qX4Y}۠kvkR*xs%I$I%I2Tl3ACLkazRa W\>jO윅}Z$I$*$PebV^ Yt=)~#UbI$I2T,IR]\96X e~a|@tQr=O}oFi2?`$IdX,ycԯsHnKA>c:ld&šbŒ$IdX$C†apÕmxW>f?UXZ\WWN$I$P$I154n?s/#]9@fR,>zQ$I Ktno?c,:yxx rOR_0 ^@sg`D.ɡbŒ$IdX$Cck8l6I۷ iqYX$I K$CPsjJ~~$wobI$I2T,IbR :ǵNu))g<ϵ9ϧ?_$IJF$P1$뺨m(@*LM?H\wg%I$*$I:G771[_LxPp! LOv;| ϣ8TlX$IR$Yr D{k_"R9]kի?N$I$ IRACu]/%<q?~ڙ(϶mm`s$idw$IdX$j0Pc ȍ ȹ~B\s}9 K$I*5AQV+w*w^:{"Viu>zQ$IbI7[CŐ9_61)V.%G2T|{J$IR$>T!*rD `qD _ Ωm[ `bI$I2T,IҤ|<,t籭춽U)Rscj︗L:TX|>$I[6$IV+`Y{b)4:S/V+9S0L~ކXX$I K}oXm[w񥃇?^/!3=7m6پK%I$*$IyVΝk!h$a.ѰrRZP11vZ$I$*$P -KwI0 cY`1I} Z$I$*$)ǔۭk \S;'=ild$l΅ K$I*=A${8^CK`x;~Au]P}_];ْ$Iz6$I=/+kdW1΀ׯZM#MXOjG@J$I2T,Ik&@,Yԫ;p~sL}~Fl6 K$I!A$C#+!Zյ5˥lqĭV//ߞnaH$IR$*@Y +8FǶm (~ Z11wGi,>zR$IbI7D;$C3Ǐ/ix)^c>sFLu7z Ki`$I$I2TN|\/)6M yb_ُ=_'K$IRj$* ~lZͰ&}}WuRGDJ$I2T,I~Պa Tn?aEd? L9TlX$IR$Y؃dӧO8xiGGkl8׸r9*"=ZŒ$I K=؉/'0 qNm pO`⫫w?]$IRF$Pn\yxx0@u]g}};a~(rK {) ۿO$I$Ş IbV዆VU (V gf{Pt.N$I$Ş IbV_1;cmF_t]7ɿ?wpW*6X,I$)lI {_68.*CVK5{5'~ho(K K$I2T,I2*`Ax\}o8umGSX}s0`ś?E$IbF$inn>V }VMj20\}ۏ'Tۭ r8,>zVR$IbIthbH>}dQv}MrkBažL9TlX$IR$* l!TUU@fq}}sP_ /APֽŒ$IJF$iGôc`d6%sF6s$$cŗoO6$I$)lIV*v5Pv%}~e@zeGKJ$I2T,Iaryt]0n+!>^&1/@<ڶM~`$I$I}xa&xfI^ׯ]_DbӟUUe'.APi K$IbIVlƱP9 5V> s/@,rH$IҜ$YCVrq0~=8߰R(>&/@,>zfR$IbIPlł a?k`0Oڦa^)⫫w$I$͕ IR]\Z1d~̏y:,}LGՊ%I$喍 IՊ=hE1뺶&uAMeq{c,$I4g6$Ituhs0{UU'p~AP~obI$I2T,IR.?X4;Dp^au62 b~ XX$I K`Պ!/lܟn{/OI$I2AzꏣbHll\o~o#ӧOض}n(\GLJ$I2T,Ino?d1XDܮ9폹ٷ^_^ʽ70PbI$ISg#Hi,Dܮ9>lκax9$IdXaj5}%jvk#p8|w_X.u$IdX$^㿃 C"_"knڌO}ӧO-uPbI$ISe#Hʛvƒ0{M @د~/ط?ee⻻/$I$ Ib\Q~JZ1|oX_UU6s$il$IdX$ F?Fã){?qHu#I$Ice#Hdx/BB _ knی_m68'Z$I$IJ1&/ z57+u1T XX$I Kdb+$_ km}um98{V+$IdX$퇣b(Uc5Mc*bkUUYX$I Kdb?,t]w3~s}/Z$Iܳ$Iʠ "×Z@YW]6^boh9 _^ IJ$I2T,IZCY> _kf}_`bI$I9g#HIww_a/da1YI{;ʽkomCo?s$I KV`fqW-K#}_`bI$If#H` R\k_Dr87=K$I5AZ,>s,>l̗ZPiV,I$I%I*`rwQAúmT6Ž"xmm[9ȹ3j`$Isd#H` R\gGD$A pjŒ$IrF$j)~?D.eu6ssd{K$IbIVjڝnÅpas{C҆Iap9L9X|wϑ$Id#Hd8<YXCUU =)I$P$Iq!wڛsZ5p ⫫w$I$=5A$gv?8Շk?;P&K$I*=A$C+G78؆/.ޜ9$IlI , `_jֽ f_:@꺶Z$I$CŒ$Pq.kwy@׮e ?DGu e#I$IF$Pq5M7~iǿa`bI$Ig#HT@o%{94߾^bI$I)g#Hdb0Pnѱk;ObX$IR$*6\ _g2=lh&)|  9 ,$IlI vu7:׾ta׏1aFߚq#\zOjŒ$IbF$ {i( ~G\\u]*$IdX$YJ%-a?66ܽ>po!⋋7$I$*Aj8e/ ׾f.^jŒ$IJF$jP_9~4 @r,~}pHbI$I1d#HTXww_Vl 10 2*BƆ*6X,I$1$Zb=VJqLZqoP6l\PK$I*!A$A_vܗ0]3>uaud1AMP)~q⋋7II$I%Iҏ {YZ1zsYX$IR$bj"c/t0k i䇊//߆g$%I$*$I?,6\2NwGom`\{Op& b?s꺶pV+$Is6$IχnݺK@$ޮy]Kv䇊/.ބg#%I$*$I`x(Ҿv - Z$I\$IbWuLMufZ؅Psx6K$I1A$w=$}ngsxR}_V,I$)lI^hUU~ocې'#kƏ :_xI}!I$IGCŒ$Q [—P{zi#V+$I[6$I2XBf\'}=a CŒ$IrF$I#*w#!E_۶]lç{/C,$It4T,I;tN|_kp䱏=8_ ?8knOumbI$I%IR]_7XlyCbT$P$I\$Iғ`xvg{N}g&Ƽ훦qOsh%I$*$I/ի?;Xlïn{=iVpFڶMk]R*rgH$I2T,I=dƿ"w-^f=ߦot_(Պ%I$名 I 'X4'~\($}luix*^,>%I$CŒ$I/pm[wÌ0'QW=~]¶pՊ%I$ IZ8fX1Q4v~`%I$ IZlnӯ{%aYm6;>0*)u$I K$˷g*ܼiڶ5T 3l䶏ɏ.yZ$I$I]\1\05;/Y K$IJ-A$ƀqօbJ_׵oV`kngc:"@j˥bI$I%IV1^<"\۶Է 9r.1ԇ3xG"J$I%IRի?bـq"~C#x\^=3$I$*$I*#o9i~SP$I$CŒ$I)a0նoV w_c{ϕ} I$P$Iy?m[;$I K$+{P0| @\P$I$CŒ$I2XÇ ~i*l@ K$IJ!A$iV-_C?VUUv2(~Hjp..ބ?s~$IbI$V7.0 Uh`1qmsŲJ$Iس$I&UVe}-,iVlX$I*1A$i.~a7=t sNNUgX$IR$I3vqpo R q4 o҈?tV+^oo??ٳ|$IbI$Mǯ OnnHr:1l6Z$IX$I06lC67}hvr_0&CŒ$IbF$IJ僛㳭X< U_ !egPbI$P$I0cW.w?V'){dL#Պ K$I%I@ww_V0'P19KUu`$ITJ6$IRF]_ΐl6Qo$hD`$Iز$I jlJmg^n^vk/*@һdX$I=A$./.0\a%_+04C-ag$I$CŒ$Iʯ/߬^lٛ"DY- MNGI$I%Io *n'ŠbI$I1e#H$ Op- @ +zՈHAP{N$I2T,Ib?<.;1 )jŒ$IbF$IғZ,>[0VA$'Պ$I K$Iw=D s OBP$I$I...@2Ljk3OzB(Պ K$I9f#H$,}jؐbOXu| e __?ْ$I K$I? 4P)}{ |%V,I$ilI$MӀK\{S( 2T,I$ilI$E0`l؃t|a uG K$I+A$IvqpL٪Z>V*yLJCŋӟ,I$P$It./?\ ?ٳk$IbI$i /Cxáצdl6Z$I$IM0S.=x}' K$I*A$IV-ZrMD`_W%6P Nf8,p$IdX$I/ɮZ GJC6= ݣ V+$I4E6$I]r0mmFsX{ 0T,I$ilI$śdl6YrmÐԶzxxpPw%I$ Ipq]( >X񘯣$I$IՊ ,KCY>yn{ 1d|{!}\$F$IYK۶?')/ȯ^U u!㛛$IF$IY HmxՂj~5~~}sI$I/Xc]׾ ]%A_>\|$I2T,I$Yj9,QI$Ixs_ pJ_];$Ie#H$I V ܔ_9JIdX$I*m|]68.KbI$CŒ$IRTV Ц`bIK6$IdHM)⛛W$ilI$i..9X }oXSJt}8=g)I K$I}>Ppmpb@SJ{KIdX$I2TlbW2)%>Xp$I2T,I$9d0SJp$I3A$IJpb?5Mc(S`pH{R$*$I}ơb dJy _];Ғ$Icd#H$I[8vk Sd8tܥ$I2T,I$YϪMØm'۷3X,IdX$I*wj G5|0\,I K$II?PՊ}ov0 _^ bJ$CŒ$IR2>x'{߉"Œ$ɨX$I:;;Zޮ~y0.%_?fX_[_$7*$I>[) ۶}ӵ ?1OzӔ$IFŒ$IQ1؇iv$IzbI$ib׏=,VC⫫+8PUa$I2*$Iij&q]׾QDͰX$Ŕ I$ q9=IިX$IZc~:v{{?$I.$Ii?rB1oЇ6,}nS$A$IJcT\wb FwwwdҰX$K$IϨitR ڰX$K$IPnT L,Kbp~7,qJdT,I$iGٻO}$IFŒ$I"{xҧϳng{<$IFŒ$IhMcbT qhfaqﳜ$K$I~U'FgKdT,I$)Q7C<;ذX\r$IZ11*9,>9yτ$I2*$Iiʨ"3簸yNI%I$5*@xQ1g2*6,$ɨX$IlbZbT|wwC?9y$IQ$IHN+xHUUN+H5,}S$bI$IF@Ԩx:?Q$ɨX$IR⻻;2*ӊ%I2*$I`EV L,Kbӊ%IQ$IF bI%I$[bT\U ܿ~9q$ɨX$IRbb1eY:"5=bIRE$Ikb`K oԶQ$I2*$IA}Qp)%FKuZ8IdT,I$iQӊiiŒ$K$IJbCڶ5*$IFŒ$IR?3pZ15*6,$ɨX$Ibb`ZFV,I%I$~`7*&vuueT kT8IdT,I$ɨӊbI%I$%2*<bpKdT,I$iViڶ]dT\U#kT<|NI%I$Zs DsKs.$IdT pbpjT\'I%I$juޏ9,) bp:X$bI$IN+gT abI%I$XbT4 ܿkbI%I$MQ10iŒ$K$IJdT x1FFś?$ɨX$IQ1+bӊ%IRoT,I$b,1*΅_bIbE$I2=;;,>ﶮLuHIdT,I$)Q7ǴmkT hE˲\bIK$IFހcQqcL>J5*$)\I$)>cĨHk8oT,IzbI$iހi?]>|_UQ$I2*$Iިӊ~0*$)\I$)Qڛ,SmⳘTFŒ$7*$IVmWWWbȾbIbE$I2{xQ1eD_Q$I1"H$IFնmJxGCG$_Q$I1"H$IU~a1SVLNAo8[bIbE$IVܗe]`QF7=`T,IzbI$ɨ؛Ki1(ln$I2*$IdT $i7L]wJ$I"H$IZcҶQ1ىbbIK$IN+~, *~uJ$I1"H$IFxvAoNΎ)E;$ɨX$IRϟ?{xҧB FN)$IQ$IF{s[zT{èX$K$IN+:0~oT 0($I"H$IFX^i߽aT,IQ$I$bo/RQ1<¨X$ I$E٧ia>AqQ쎷$I2*$IioxQ1w8X$bI$IF\^̨?%I2*$IqEV ,!d]׾)c Q$I %A$IrZ S!{䥃4%I2*$IǨm[7*'K$bI$IN+`T #FŒ$K$IrZ7W1*bI%I$E^Q&;,K2*>$ɨX$Iӊ!{)Œ$K$I|ӊbT SUQ$I2*$IieYzGIHCȮ|Cp0(.+I%I$?*vZ10K%r$I${xm%I$IQ77 iYUoA uokIdT,I$)bO5,.ІqJ$I2*$IV w`dm5NyZ_·aJdT,I$)'?rZ1}8X$bI$IQ y4M@*iN)$)\I$io;ӊ!{)Œ$ I${UH~B8xݟ?޾$ɨX$IQa1,N+S%I2*$IBgg]yg82*XbIrE$IVw`tUU ,5(~/I%I${xPFMf~y`P|vGK$bI$Is . 0eTbP嬃ⓓT$K$IrZ771*g+%I2*$Ixw`6F=cP,IR$IӊL¨Bg}Q$I2*$IdT x`F2wwwN)$IFŒ$Ifs5,.һ9b1*$)\I$iބ&aT 7FŒ$國 I$ejub` }cT,IQ I$9o Kr$I +]oX Bg%I9A$IrZ7CHQ$I9"H$IY imkT /`T,IE$IVy`RF3ybIdT,I$iB|F %IQ$I@G~(goӞܽ7-'I"H$I DSΰzK$bI$IN+N1$n(KbbIdT,I$Ů7,¨xhvBzln$IRoT,I$wZ1PFcT׵o(/bI4w.$I$HiTcOO?IިX$Iҳ^40*=<*~nMKK$bI$Iauri$p4⋋?F$7*$I6NHWzAS%IRoT,I$ i iǕ{bIdT,I$iӊmdHuYVR,I%I$:,vZ10y:eݠX$K$I-~Z1_)Œ$ɨX$IRЧoc_J~jP,I%I$M6,6vF>ߵQ$I2*$Ih''=m[8@"{gswwȠ(vI$7*$I4x7do2 Z {^oN)$IFŒ$I0 |~K$bI$I ,KD@"xn8MPݮ#I\I$Io(vN+d^p F8ߓS%IQ$I%N+^fO>Ia~/ %IQ$IņN+^X7RWUUݿ{֑$Izn.$I$3ҍA٧m#I\I$IQV|yyi $@שKaLbI\I$IQV i0M?q]6MĿ,#{U$IFŒ$IBhz3C C)t]5{L|rxH$%A$Iӊ9UUO?_W!I4F.$I F `VߘxDIdT,I$)N+^ȘT2&$IFŒ$IU4@ JePlP,I%I$EVQz/aTě6$I2A$IRRm DȸTN'$I2*$IdTbH\4F2($I2*$I[EqJm0 ls%IE$Ib CgĒ$IFŒ$I #1Q>oe\lP,IdT,I$)†߶iX <~j$zr~kOOJ~:%ěV$I^ I$)ӊ=e2zN  N,IrE$IiXƢ̟:;ԯV=A$I2*$Ilnzb๺ ~0:|.O ''7"I%I$)ӊۭ'-Ї}ŸZ;X$K$I*ӊgsRN,IdT,I$iņF}V2,~jL<$I2*$IpXnQ>$jIdT,I$IN+&ðt:?U>vDi@8b}:~$IҒ$IVlT A{TbI$K$Iҋ;9y?i]yhƨX$I2*$I @6K$ɨX$I^YN+ʨ#I$- I$)ӊWU ,,Qӊ%IdT,I$Io;RfT,I$K$I2*~ ,ȨX$I2*$I$@⌊%I$bI$I(vV ,ǨX$I2*$IYN+4Q$IdT,I$IӏddT,I$K$Iӊ qFŒ$IQ$I$@⌊%I$bI$I2*ĕeiT,I$K$IR[Q)%I$bI$I<0*^I$i\I$IFN+?*vZ$I%I$ɨxQ$IdT,I$I..S˲dʨx:?~9$Iܹ$IVb^bK$ɨX$IFi-N+4*ln_$I4g.$I$;ΨiŒ$I2*$IG ffT,I$K$Iӊ q %I4w.$I$Wtyy) (Qӊ%IdT,I$IZN+t8*ln_$I4G.$I$[Oj`&鍊V,I$bI$IbTbO4FŒ$IQ$I$fsO=,IⳳO/M$I:A$IӊV QHoTbI$K$I҈iMxZ30*$I%I$i`T,I$K$Ir~ Q&I$M I$)6i{$I%I$/~ N*$I%I$VO+ڨ/I$K$IR<ΨX$I2*$I;9y?i|%I$bI$Iikb\*I$i\I$I fN)$I%I$NNOrZ10bI$ɨX$IyZڨ"eT,I$K$I"i<K$IFŒ$Iaӊ 6FŒ$IQ$I$=؍zZq۶ %I$bI$Izik@D%I$bI$Iz7bD]FŒ$IQ$I$-{Z~&fT,I$K$Iӊ q) %I4W.$I$SQF=iOm`B񏊝V,I$bI$IrZ1$bI$ɨX$I0*oXܶ'70TFņŒ$I#A$IV QJcTbI$K$IQ1FśK$IE$Iޜ7,5MbI$ɨX$IV 3*$I%I$iFśK$IE$I$@;X$IFŒ$IHչӊ pFŒ$IQ$I$wZqu%I$bI$IzsEsZ1̨X$I2*$I O+6,umT,I$K$IXqŇQ$IdT,I$IN+K$IFŒ$Ixz#0*$I%I$ib;dT,I$K$IRЧeQ]Ɍzג$IQ$I$5*vZ1iŒ$IQ$I$@V a2*$I%I$i8bI$ɨX$ImpHfT|z%̖$I%I$i6i&K$IFŒ$Ii۔eiT,I$K$I8~6FŒ$IQ$I$9ʨxrr$Ir$I$]\|bmsZ$IdT,I$IcVlX 1*$I%I$iaQ1$Qju~r$I1r$I$)ӊ˲T Qӊ%IdT,I$IN+eT,I$K$IR⪪<WJgTlX,I$bI$I N+pK$IFŒ$IbHQ$IdT,I$IьV cT,I$K$I$m67ӊ FŒ$IQ$I$9gT,I$K$Idnӊ˲^ QzeI$IoE$I$@R;X$IFŒ$Ib'FŒ$IQ$I$9x8,I$K$IRWUiFŒ$I2*$I$bb2U׵Q$IdT,I$IaU~aquG^$Iꍊ%I$iN+ G9{$IQ$I$F֨X$IFŒ$IOF|fibI$K$IV c aT=xR%IިX$Ib;*Qӊ%IdT,I$IN+vZ13*$IR$IdT]UUy@r%I{.$I$E1*vZ1E4FŒ$I2*$I$9ʲ K$)\I$I2*vZ1Y0*$IRι$IdTlX @%Is.$I$EPQzTUذX$IQ$I$9ذ9X$I"H$IQOHQ$IrE$I$bFśK$IzbI$IK ۭI$!Qӊ%IdT,I$IN+vZ13*$IR$IdTD K$)\I$I2*vZ10*$IR$IQ_%mz@Ԍ%Ik.$I$9idèX$I"H$IRdnӊ fFŒ$I5A$IVlX @6%Ik.$I$EjubxbI$嚋 I$IN+~q]y@%Ik.$I$E{ K$)\I$IrZa10*$IR$Iq_=S&D4~0{}#۶5*$IQ$I$)ӊN+ cٱG! rèK$IzbI$IJmXa1>rhUUu]C*?jӊ%IdT,I$IN+vIY352 .mK$ɨX$IbɆ a2*$IRn$IHE `>203Q$IbE$I$VUU6Y,D5*$IQ$I$iN+ʸFŒ$I1A$IVlX d+b?4*>=x2%IިX$Ik:_ŧ_$IK$IRVN+02UUU?N)$IQ$I$)N+g3.Um[!0*$IQ$I$)B9o Fu]?@6Q$I%I$IN+vZ191&%IdT,I$IEqT,KOy>bT,ITs$I$i>l?0~]۶cx=`T,I$bI$IR/2Qu?@R9xݯ_/q$IިX$IkV O3^~kK$ɨX$IԋA1<2fT,Is$I$)ÊbieYz @Cǯg_k@F__$I"H$IӊS(cᗗ:kK$ɨX$Ii>P@b TU!oxu]'t~Q$I%I$ɋ€FņfU}}_zi|4\caσ<K$)\I$IʸAV= (Kܺn #ivֶ,@֯ yr$IdT,I$IrZN~8oUU #lKcV,I$bI$IʾAV<|BaP؜dp 9.0*$I$IN+^;~}p4QuQ$IE$I$}3,YJ';uQ$IE$I$ln:p8x"~kWDcPK$ɨX$Ib e&&www @ %ID.$I$)avD Ee ʨX$IFŒ$I_(:ޤ$)60*$I$I:;߼MJ xm`T,I%r$I$IN+Gx73 E;~$I2*$I$黆䮮kw1R,I$bI$I(/w]K4~v4o bI$͝ I$IrZ1<{dF9NQ$IE$I$EsZ[0's,X 0bI$͝ I$I)p*92,Q$IE$I$9mϟ?LX$IK"H$I}po[OTUUF ',LX$I)"H$IyZid{𰺮\__FQF0*$Iܹ$I y1S}K|! @%ID.$I$Y{ӊʲ4,4Q$I%I$Itvɰy?º^0HgbI$&A$INO?5,^p+a1Ǫ\Xp?,FcT,Is$I$Io{ay/?,nZ&~)&{1*$IX$Id޻\__m[uQ$IE$I$8,^GY\jFŐ}~RŨX$Ic"H$IV @={$.FŒ$I2*$I$9UU/fnaquj_F\\`FŒ$I*A$Ibhp^KK$i\I$IlŮ7, $S4 N< HQ$IE$I$eyZqunЗe\Bܿ@J?K$i\I$IҬwZ1A^4m_bI$M I$IZbb}hp? :bQzח$IQ$I$I3Xu\3*9[]N+$IQ$I$Ib=hp/~0*$I$I:;dX ij{yĔ$I2*$I$iNO bX=PYFŐ){gK$i\I$I} [S4 Ӟ's1K$IQ$I$IgXܸxzCHa10 9X$I1"H$Izx/:gbI$ I$I2,,=ԧj~0*$IX$I$bҔ5WUB3% SOO?I$K$Iiy06[:.4iŒ$I9"H$I";yu6*$IQ$I$Ic_Vܶ^34[k%IdT,I$Ih/^ӊՔ1޺FmۺbI$K$I4V0*1{,KbI$K$I4x w1aT,I"H$I";>3r*0*$IQ$I$Ic^qZ1oV!s ş;%I\I$IRzK|`H^aT,Is$I$I{r}}@B>0m@ү1%I\I$IR_V CF@j?sK$鵹$IO+6,e>=? èX$I"H$I0,KO"gT {9 bI$=7A$IuO+$ R)FŐ9FŒ$Izm.$I$)ӊ> /-  eFŒ$I2*$I$i Q10?cK$)\I$IRҽ{׬0|1%IZ.$I$)ӊ>9#BT~0*$Ikr$I$I }8 g'}M FŒ$IzM.$I$)VsdΨoBY_uI$K${w8a@F> :S . 8}ї/yr2ʖ]rgzz$!d&'⍍uԩ"UJb0 _Kqv|_V,IXr$Iٴ>z[qLQ1p>:1*R~}aT,I$I$I3xDf{,'\*_Z)Qbq{%IdT,I$Ia_ N'M֎c6Qv[1n+$IR$I$iq<<oQZKC൐ۊ%I[A$I o+4B_ocF@?wK$)TA$I^ߏ~[q4-0?jT ¨X$Io!H$Iۊ rc~ͥ=ȨX$I$I$Ib|O,K #ݥӓCڶu[Q1ĨX$IFŒ$I$euT&#,e7 ĩibI$K$I4GEI@gT sz uRyMaT,I$I$ItXb1xr<?K$ɨX$I$,=f+q"m1v~ӶQ$I%I$Io n]q0}b`.HQ$Ib!H$I4`hEi0;Fk[]<~oIeTlX,IdT,I$IV Bbۊ%I$I$IV_H|-nkbI$MC$I$m8類EYЯ-K$K$IW^ߏv[a@|'q[$I%I$IpVUY!S1|=:gQͧ$I%I$I n;b{xx+dlȯ<{ xbI$ŐC$I$iۊW~) y ϯ՟[-@6?K$3*$I$ɰ eced n<yƨX$IQ$I$I s<=gލ5McT,I$bI$Ibqbx||41*1*$IQ$I$IVlX #kި:ǨX$IFŒ$I$h3cT xcT,I$bI$I2%/f`^_^gPX^$IdT,I$Izvs3,! 7*qK$I%I$Ibbkfib KFŒ$I! I$ĬUUyRD/_>)0ӯb %IdT,I$I>,_1`ߺ{}:ǨX$ɨX$I$Mܻwtc /.@ߦ,hJfr7*:ǨX$)$I$IQVb`A_|k[ޯ毊0*dT,Is$I$E;,Z< q!oN˨ܤK$C$I$)nn>u\OOO/z#ᾝg_^K$ɨX$I$*O(\\GŋC$IQ$I$IhX엱)j :mŒ$Is!H$IdTZܿ'\gbI$K$IOQʐ9|_HQ$IR.9I$IV\IʭFB+"Qf2M$IFŒ$I$)Qa10CWp{g-;n+$I2*$I$IF?x "' bIs$I$x'01u]TY;dOlF"o6$I%I$Iȭ] b`3{0Bn)$I! I$IR y3TUe۳Y]4oD30BFŒ$I9$I$IbX/e9{{w)sx<!&ronb2*$IQ$I$IIۊ`f%^t=Ҷm3Q$I%I$Iҫn+{X|1g1n] cSumHbT zȨX$)$I$I~ "wN~^/6M_g>χp88PJ$ɨX$I$E3,K7){zzc?~nn>]?tI$K$I$exޣ{zz=ú.Xec|sۊ%I%I$Iۊ'r mF1sC116;N~}dT,IdT,I$I2hu[1$"vA1^k%bI$I$Ir[ۊ 1 ~kx,|9֨X$IFŒ$I$͢mޗ3O$?/QA1@g%IR!H$I4ۊ  Vc'w<'I'{ AbI$!H$I4a_Eȏ1\nk(曋}H5Q$IQ$I$Iʤwp[1DhNm0 %ӓ`?K$C$I$ifa1Ddnvݬu6tK$i$I$I3lm[O bl!FeY&kP ШX$IFŒ$I$o`.NA1 ̰x>UU/<5Q$I%I$I7 `*0?K$= I$Ia_aw8|FYƷ~64*$I2*$I$Il4r{dd\lP gCbI9$I$IRԷWU!Y}4O2k(נχFŒ$IFŒ$I$in_><'_/.൨Q$I%I$Iҫ$xTȑA12T55(Q$IR9I$IĨ/#(5MK6 w kObI$K$IGņ"Ǒn%;OOOFUU%IdT,I$I>w v@r=<D\ |<sQ$I:bI$IKuX !zߪe<.qliT,IΨX$I$ uTlX |<(`~?_K$3*$I$I`X Lzr0~4*$IP9I$IxXa1QU&AfJ$ɨX$I$ʹOV|OxPb7on)$IҐ9I$I4miwHP ?oK$3*$I$IJ~({Qn(.Q$I!H$Iſ$|Or P-wS$IFŒ$I$IVlX ?0 K$i$I$Ir[_Q$I!H$I$TU'3bVEԣaI$bI$IXvn+ e!kzxxpۊ%IK$IQ|H|TlX 0_g I%IK$I|`T\U3cP @N?S$IFŒ$I$Ivss[1S*mŒ$I2*$I$In+(<t8(oذX$ɨX$I$6n+ Ov>u[$I:bI$I4n+ n( O%IK$InV @.Q$IB$I$Iȷ^Q4%I2 I$I&_t>0*$IR$I$Ir[a1?q8(,n@Q$IB$I$IۊPUU\WFŒ$I C$I$I\޹%I* I$IVlX D*Aͧ'I$bI$IYV\U`R,IP9I$Ib*ҨX$IFŒ$I$)ΰb|~X$I2*$I$Ir[1@ n)$IR$I$Im?`T,I9I$Ibb bŒ$I C$I$I>wfT,I9I$ImņgT,I9I$IٰbeP\]?I$K$I$o===y bI$!H$I$Q$IB$I$IQa11bI$!H$IZ,nUUy I H$ɨX$I$mn+bI$!H$I$*SNՌ%I" I$IkҹM=(.GwZ$I%I$IymWn)$IR$I$I2,v[11bI$!H$IGņK$)DA$I$3*$IR$I$IJdXb`%I" I$Io zT|~$I2*$I$Imz bIr$I$)aۊy1*$IR$I$Ir[a11bI$!H$I$GPUUdT,I9I$ITۊY1($IR$I$Ir[q$E)(bI$!H$InV Ɣ!H$ɨX$I$iۊmI(_R,I9I$Im@ތ%I" I$Imm5ՠ$IQ$I$IR$5,rK$IB$I$IR&by2*$IR$I$IJ6ۊmQͧ/I$bI$I$'tbIr$I$)gY2*$IR$I$IQ1)G77$I%I$I"1*.SQ`ap[$IR.9I$IUY1*$IR$I$I*.SȜQ$I$I$I7HV DΨX$I}s$I$IV|:<=K$oA$I$ZV D˨X$I}s$I$IV ˨X$I}s$I$Ij}Nb _FŒ$IC$I$I4u]{ 2*$IR$I$I7n+1xr0$IdT,I$IM`^XI$K$I$)ۊ;n+$I- I$I4ۊ"gT,I9I$IV 3*$IR$I$I-w]b nFŒ$IC$I$Ir['9bI$!H$I$wEQx <{P|~C$ɨX$I$ISbR,I9I$I$@Č%I" I$I4bho+>N@%I" I$Ib@0*$IQ$I$IRmV e!0*$I1 I$I4mņK$)TA$I$ɰ:Ϟ@$%I* I$I4m6*$IQ$I$IRoDz[qUUĦbIs$I$In+v[1DȨX$I!s$I$IZ},= K$)dA$I$mn+K$)dA$I$)Qq|m= 4McT,I$bI$I,ߨq[1/Q$IR9I$I$bbQ$IB$I$I"ibmI-̨X$Is$I$In+v[1DƨX$Is$I$IFFbI$!H$I$EjqX kAf!H$ɨX$I$IVװxEw[10.bI$!H$I$E}[q<(<K$)dA$I$ɰm?nT,IP9I$I$ſ =(l>^XI$K$I$i޽m0Sn)$IR$I$IR2K$)TA$I$)aqGOm`FŒ$I C$I$Ir[ۊ RFŒ$I C$I$Ir[:%I* I$IPۊ`F%I* I$IbbQ$IB$I$I1,%I* I$Ib@%I* I$IdTlT 2*$IR$I$IR-],b`8FŒ$I C$I$Ir[qbT,IP9I$I$b@%I* I$Ih՗.a10 bI$!H$I$w%I* I$IdXbأ$IQ$I$I Cۊ%Ir!H$I$8HEQx K$)TA$I$)V/n+ K$)TA$I$)ۊmi.dT,IP9I$In+\K$)TA$I$)V/V cT,IP9I$I,o+nX<@%I* I$Im:bI$!H$I$@1*$IQ$I$IvM9,湿Q$IR9I$I$@%I2 I$IdTlT 2*$IR$I$IR-ݔbbI$!H$I$ذ"4Q$I%I$IdT 3*$IR$I$IQ`E.`T,IP9I$In;@o6$I%I$IbHʲtK$I%I$I;@Œ%I" I$IK$)DA$I$in+DK$)DA$I$iVO7,nS^x(%IdT,I$IV 1*$IR$I$IҌZ'xbI$!H$I$iŻS^xbI$!H$I$vXbHQ$I$I$IVlT 3*$IR$I$Iۊ rFŒ$IC$I$Ii$uI/Q$I$I$If[m9bI$!H$I$@䌊%I7 I$I4V/V Q$I$I$IۊGO{1*$IQ$I$IBV yQ$IR9I$I$Mr[12c)I$bI$I$8HeYz /0ިmŒ$I9$I$I4ɨm2FŒ$I C$I$Iҟ|N'O~'%I" I$I$@Č%I" I$IoWF bI$!H$I$iۊ3*$IR$I$I&7M/Q$IB$I$IU]bQ$IB$I$I4mK$)DA$I$IF1bI$!H$I$-Xb%I" I$Io+ϨX$I!r$I$I|T|<={T|$I2*$I$ILZ,n;X$)$I$I)F$IQ$I$IV7㏊V,IcA$I$I/0͠Gū՗ I$bI$I$8hmz 1ݨmŒ$I$I$Iͨmߌ%I* I$I$bP]דon>]>?!IdT,I$I9>wc ۶To)v[$IRn9I$I$"dT,I9I$I$bT2*K$)dA$I$IV K$ɨX$I$I<`%I2 I$IXvn+qK$)dA$I$IQV sgT,I9I$I$E9*6,`%I2 I$IW\u0== kFŒ$I C$I$Iۊ 2FŒ$I C$I$IQ1DƨX$Is$I$I9*^@`FŒ$I C$I$IR@Ό%I: I$I$bLl~X$I2*$I$IQA1רn~X$I2*$I$IQQ1bT,I9I$I$j؍9,vFū߮$I%I$Ib@ MD5*~$IQ$I$IdT K$)dA$I$IF!bI$!H$I$wm7ְ¨X$I!s$I$IJb bI$!H$I$ɨ"dT,I9I$I$@%I2 I$I$bQ$IB$I$IԨ( ObI$!H$I$)H͇mNL!I$ɨX$I$IŨ‰gTbIr$I$I2*6*^$I%I$IdT<ʃʦi<9 {qV,IzA$I$IZ,n;@u]G7*6,$I2*$I$IFmŒ$I C$I$IQ1DʨX$Ir$I$I2*HK$)TA$I$IF(%IdT,I$I$bȝQ$IB$I$IC7ưkObI$!H$I$m1bI$!H$I$ɨ"fT,I9I$I$@Č%I" I$I-bi%IdT,I$IV saT,I9I$I$@䌊%I7 I$I$bQ$I$I$I4Hm7( ObI$!H$I$m9bI$!H$I$ɨ"ˠxrp$IdT,I$I$@`n)$IR$I$I01 "I$bI$I$ɨbI$!H$I$ɨ"7xp0$IdT,I$I$M6*.cbI$!H$I$)QۊȝQ$I$I$IdT 3*$IR$I$I{OȖQ$I$I$IŨmlQjaH$ɨX$I$Ic7r5mŒ$I9$I$Im+bI$!H$I$)QqY"%bI$!H$I$)QۊbbIs$I$IsX 92*$IR$I$IrS׵Q$I%I$IdTlX @K$C$I$IQ1D̨X$I!r$I$I2*K$)DA$I$Iٍ˲DlK$)DA$I$IٍV @N%I" I$I$bQ$IB$I$I娸,KOȂQ$IB$I$Im¨X$I!r$I$I2*K$)DA$I$Iَ ȁQ$IB$I$IdT 3*$IR$I$IoM5,nefT,I9I$I$"fT,I9I$I$@Č%I" I$IGeYz @%I" I$IGn+ eu]G3*n/߅$I2*$I$IfrX )w~8$I2*$I$IV X$I}s$I$I2*2*$IQ$I$I7&E)3I2*$IR$I$If3*v[12*$IR$I$If5*v[1)aPoE$IFŒ$I$IRb"K$oA$I$IK$oA$I$I|V gT,I9I$I$3ɘzP>_? I$K$I$IIV @JR,I9I$I$@䌊%I7 I$IQ{.a1bgÐ$IQ$I$ImEQx @bIs$I$Im¨X$I}s$I$IhT2*aTlX,IdT,I$I$%{['D/gFŒ$IFŒ$I$IRbXF77$I%I$I$b,gn+$I2*$I$I믞>5bI$!H$I$ib;bI$!H$I$ɨبK$oA$I$IFņDlK$ɨX$I$IFF( bI$K$I$)6]lm= :eYK$ɨX$I$In+v[19Q7>H$K$I$IFR\V,IbA$I$IFņDΨX$I}s$I$Is[1Q$I$I$IUDŨX$I}s$I$I2*v[1iP|~H$I2*$I$Im4pK$I$I$I4i]b1bI$!H$I$mFDΨX$I}s$I$I2*Nmz* @b/G$IFŒ$I$IR6b K$oA$I$IFFDibI$K$I$ɨبݨX$)$I$Iϟ=`RFŒ$I C$I$IQۊQ$IB$I$IdTlT @Č%I" I$I$bb"fT,I9I$I$(<`2FŒ$I C$I$Im6;K$)DA$I$In+6* bFŒ$I C$I$IQ *Sj&aT,I9I$I$K$)DA$I$IFFD̨X$I!r$I$I2*6, bFŒ$I C$I$IRm6;׌%I" I$I$1bI$!H$I$ɨ=>>zb (6*$IQ$I$IV @z^nT,IrA$I$IѴXv ǣ' ΨX$Ir$I$Ir[ۊQ$IB$I$IdTlT @%I* I$I$7<`PFŒ$I C$I$IQۊT4FŒ$I2*$I$IQQ1eP|sH$ɨX$I$I2*R,I9I$I$iOٻ{Fv aP5aZcP`&dI|2P̀ GF@Gs0RO?vuUTl(>'a$I2*$I$IfUƣ7J$I!H$I$ɨkcT,Is$I$I2*6* bI$MC$I$IR6˔-7obT,Is$I$IZ׊ƨX$IS$I$IdTlT @0FŒ$I: I$I$bb0*)$I2*$I$IP۶nx^+$I*) I$I$bQ$I!H$I$ɨب`%I4uA$I$IFF`T,I$bI$I$0 ni%IdT,I$I$bP;?$I%I$I$bbbI$MC$I$IQQ1K$i$I$IƨX$IS$I$IM% 5ۭQ$I%I$Izzzr K$i$I$IV @@FŒ$I2 I$I$bb2*$IҔ9I$I$ia1ڣbbI$bI$I$kom[7ﺍ%IJ!H$I$ɨkdT,I)s$I$I2*6* ϟ?o6I$bI$I$imۺu{X$$I$IVb1*$I9I$I$LQqO$IQ$I$IHs*aX|}}oj6]׊%IJ!H$I$k^+ xFŒ$I%$I$IdTlT @ GņŒ$IFŒ$I$IQQ19Aﺍ%Ir!H$I$ɨxapĽޥqDI$K$I$IF^+bu{X$)$I$I¨X$Is$I$IdTlT @FŒ$I+ I$I$bb0*$I\9I$I$Q$I!H$I$)TʰɨX$Is$I$Inn/?~ ;(ϟ $IFŒ$I$IQ׊xbK$K$I$I?ROG$I%I$IUeT @cA?$I%I$IkC62(ϑ$IQ$I$Ib0s$I%I$I+bGo$I%I$I02*PFŒ$I2 I$IF;b]n<~$I%I$I$0#bI$MC$I$IQQ1{?A$IFŒ$I$IRQΨK$i$I$IVr0 _wi I$K$I$IF^+`wwwV,ITRA$I$IFF>{..>#I$bI$I$)DMsH98w^+$I*% I$I$Ǐ%IdT,I$I$G}߻`iPlT,IdT,I$I${xX$Is$I$ITLRb8FŒ$I2*$I$I~/b2iP|ue$I$K$I$IFFL+Œ$I+ I$Il.SݎT.ʠNH$ɨX$I$IZ׊W%I4WA$I$IFFaT,Ir$I$I*1:,nFŒ$I+ I$I$Q$I!H$I$Qq~⧧'72*n9$I2*$I$IVb&kŒ$I$I$IdTlT @0K$ɨX$I$IzQΨ,ĺ6*$I*- I$I$M9@v,I$K$I$IF^+`"V,ITRA$I$IFF`T,I9s$I$I*9ebI$K$I$I#XݘT$Q$IRI9I$I${EI$ɨX$I$I2*6*`^)$I9I$I$fsrPbI$͝C$I$I׊XYAn<~$I%I$I$bb&iPbI$bI$I$ɨبD'3$I2*$I$IrSmX @R,I$bI$I$i?e6*9@R,I%r$I$I2*Z1+2(ϑ$IQ$I$IuMsH (W%IDA$I$I^+6*`%mۆK$K$I$IF+`^)$IR9I$I$U8*Z11K$i$I$IVlT MK$ՐC$I$IQQ1+0*$IҒ9I$I$m[79FŒ$I2*$I$IKZ1ku/mT,ITCA$I$I^+6*`aFŒ$IZ: I$I*kCV___Q(x4*$IQ$I$IǼV IK$ՐC$I$IRm6YV @ $IdT,I$I$yبxX$Ik$I$ITuMsmݬX$Ik$I$Id^+`AŻI$I2*$I$I*XDAW%I%I$I$0($IFŒ$I$IRu(dTlX ?K$i$I$Ib0?K$i$I$IkmAqϐ$IQ$I$IdT7J$I!H$I$IV 7bI$C$I$IXQ$I!H$I$IF,ȨX$Ik$I$I Gņ2*$I9I$I$ɨ=*$I2*$I$IAV,ITcA$I$ItTnݶd&ƝQ$IR9I$I$)Q׊cT,Ir$I$IQ1 1*$IZ9I$I$)Qa1@^%IVA$I$I2*`!FŒ$IZ+ I$I$~rm FŒ$IZ+ I$I$yK$i$I$ITky0*$IZ9I$I$EcZ1s1*$IZ9I$I$׊?~ (⫫/H$ɨX$I$I2*Z1rßH$ɨX$I$I9:, 6/K$i$I$ITk <@P}߇' $I2*$I$IkqŹ[6*$I1 I$I$bI$C$I$IXQ$I!H$I$IF, ʠnϑ$IQ$I$IgFL+Œ$IZ3 I$I$};\dT,I5s$I$IRaQ$I!H$I$IF,  iH$ɨX$I$IQ1+Œ$I2*$I$I"\N٨X$$I$ITkcT,Is$I$IQ130(4~$I%I$I$0K$i$I$IdT ̌%IvA$I$I2*`fk3$IdT,I$I$ɨl[K$ɨX$I$I 4bidbI$K$I$IFjAn<~$I%I$I$4*n֍<@ ^)$IR$I$ITبkq `T,I$bI$I$)z]wrwFŒ$I2*$I$I}%I% I$I$8*<@FŒ$IC$I$I { yI$K$I$I2*`1V,I$bI$I$ɨK$)JA$I$IA]wJ9XQ$I$I$IB_+s;8ȆŒ$I$I$IBG^+XQ$I$I$I$bfbT,I(9I$I$Qq۶nVdT,I(9I$I$Q׊eT,I(9I$I$'SuXnĨX$IQr$I$I׊Q$I$I$I FnV`T,I(9I$I$Q׊aT,I(9I$I$'l.SbgT,I(9I$I$׊XQ$I$I$IJFmۺXXA~8~$I%I$I$>*Z1R,I(9I$I$]]}I9XQ$I$I$I^+`9079%I$I$IΗonn,+Œ$IC$I$I*zxݺXQ$I"$I$I$bfaPlT,IdT,I$I$98,vkK$)RA$I$IbcT,IH9I$I$ɨK$)RA$I$I2*`bmK$ɨX$I$I*kF|C{bbI$K$I$IFƨX$Ir$I$IQ13*$IR$I$IdT Č%I- I$I$U2*ޭ=B%I- I$I$U2*`9FŒ$IC$I$IQ$I$I$I$b&nCt$I2*$I$I~r,K$)RA$I$IbeT,IH9I$I$ɨK$)RA$I$IdX %I) I$I$0bI$E!H$I$IFLɨX$IFŒ$I$IRIm6)a1ˉs_lT,I$bI$I$׊XNAqםϑ$I$I$ITɨ{ J$I$I$IJF^+XF۶FŒ$I2*$I$ICQ1sOlT,I$bI$I$ɨYD_]}?G$IJFŒ$I$IQ19^)$IQ$I$ITڌHq^)n9$IR2*$I$IW%I5 I$I$0bI$E!H$I$IFL$ x{?E$IJFŒ$I$IQ1J$I$I$I ۔ðyK$)jA$I$IbdT,I$bI$I$?T-ݰQ$I%I$I$bfcT,I9I$I$ɨ K$)rA$I$IdT|mkT,I$bI$I$6E08FŒ$I2*$I$I~K$)zA$I$I2*nnn%IdT,I$I$U7bĺ6*$IQ$I$I4{e:,`FŒ$I! I$I$UZ14(>3^$IFŒ$I$IQ1+Œ$I2*$I$IQ1@5b K$ɨX$I$I2*`rFŒ$I% I$I$FFŒ$I% I$I$U2*nm>Č%IKA$I$IdTbK$)$I$IdT K$)$I$IdT K$)$I$IdT E7a,I$)K$I$IudT Pxw^+$IQ$I$IT+F3*$IR.9I$I$ɨ72*$IR.9I$I$ɨ78*l.O$IQ$I$IdT żZ$I%I$I$b&cT,I\r$I$IQ1odT,I\r$I$IREmLd݆o6Ot/I$bI$I$i?{`:V,I$bI$I$ɨw3*$IRN9I$I$ɨ70*$IRN9I$I$Qqni⋋OOu/I$bI$I$i6y|5aTI$)K$I$IuV 0*l.O$IQ$I$IdT ŧS%IdT,I$I$z9;|I$K$I$I\bǨX$I$I$I _+}%I[A$I$I2*)I$%bI$I$ɨn^)$IQ$I$IKRa1o}P\)I$%bI$I$׊x;K$)$I$IdT +xX$I9$I$I$b~W%IkA$I$I2*'K$)$I$IdT O<(O$IQ$I$IdTlT 6+Œ$I2*$I$IdT PbbI$K$I$IFF0*$IR9I$I$Q0 n^ڨX$IFŒ$I$IzFŒ$I2*$I$I-NgJ$IɨX$I$I2*6*xK$)$I$IdT wK$ɨX$I$I2*6*x7bI$C$I$I9)I$%bI$I$i"y+Œ$I2*$I$Ik؃bbI$K$I$IFέ?O2*$IR)9I$I$Q׊~͍Q$I%I$I$9b~,بX$IFŒ$I$I׊xtFŒ$I*) I$I$U8*Z1K$$I$IdT ? `T,I$bI$I$Iǣ_|CbbI$K$I$IF^+x3bI$C$I$IfN)3*$IRi9I$I$׊:bI$C$I$IbI$C$I$I\$Iҏr$I$IQ1/l[K$ɨX$I$IRa+rK$59I$I$Q1_bI$C$I$Ix!A6~$I9I$I$ɨR,Is$I$IQ1/Do6gJ$I!H$I$IFbI$C$I$IxX$I%$I$I$b^0*$IR9I$I$i :bI$C$I$I*}3*$IR9I$I$ɨ%ITbA$I$I2*bI$C$I$IxX$I%$I$I$b^0*$IR9I$I$ɨ%ITbA$I$I2*bI$C$I$I*}W_ѶmA~xL$I2*$I$I1.ШJ$IJ!H$I$IF-x?Q$IzKA$I$I2*o^)$IR9I$I$Qq۶~}߇7%IdT,I$I$c\Q1_bI$C$I$IHFŒ$I2*$I$Iκb:(ϓ$IޓC$I$I*zبۼR,Is$I$IQ1ɨX$IFŒ$I$I }W`T,Is$I$IREbͨX$I%$I$I$bQ$I%I$I$ϨX$I%$I$IJFmwK$$I$ITɨ8(O$IޛC$I$InPbI$MC$I$IgP,Is$I$IQ1@ %ITzA$I$I2*A$IJ!H$I$IFUnŒ$I2*$I$IdT P('$I2*$I$I0 ~ ś)$I\9I$I$Q1_bI$ՒC$I$IeT,IZr$I$IQ1@%IdT,I$I$ɨd1/.>$I$͕C$I$InӚb-ΨkŒ$I2*$I$IVlT 0 bI$ՔC$I$I3 CQa$I!H$I$IFՉ5(Z$I%I$IbjCZkX 3*$IRm9I$I$׊oFŒ$I- I$I$TǨX$I$I$I$bDi$I9I$I$i..>50E ^)$IRm9I$I$k1*$IRm9I$I$ɨ:ŻY$I\9I$I$iQΨ`%www^)$IQ$I$I2_+/FŒ$I2*$I$I'{ Q$Ij!H$I$IK۶FŒ$I2*$I$IdT PxbbI$K$I$IFF7*$IQ$I$I$bK$ɨX$I$I2*6*LAqݎ'I$͙C$I$IbI$՜C$I$IQ$I%I$I$,بX$IFŒ$I$IQQ1d%IT{A$I$I2*(Q$Ij!H$I$I uɨ`YFŒ$I= I$I$JQ1Q$I$I$I$bK$$I$IdT Pa%IA$I$I*{T_U;(6*$IQ$I$IdTbIK$IFŒ$I$IQ1@ጊ%I$bI$I$ɨpFŒ$IQ$I$ITxuPȃ⮻?Q$I; I$I$-\םRbW%I$bI$I$׊jwwwgT,I$K$I$IF%;(6*$IQ$I$IdTlT 0 bI$ɨX$I$IZ2-1,Q$IdT,I$I$Z1@b%IdT,I$I$Q$IdT,I$I$ΨX$I2*$I$I 6 CAqםΟ]$IFŒ$I$IR3*W%I$bI$I$Qq۶~)TɨX$I2*$I$I{Q$IdT,I$I$ΨX$I2*$I$I gT,I$K$I$IF3*$I%I$I$bK$IFŒ$I$IQ1@ጊ%I$bI$I$icT,I$K$I$IռR|}}@vLI$i$I$ITV^)$I%I$I$bK$IFŒ$I$IQ1@ጊ%I$bI$I$QϟJVAqO$I!H$I$I+uia1@ͼR,I$K$I$IUV P3bI$ɨX$I$I2*(Q$IdT,I$I$.y$I9I$I$Qݝ_ J$IdT,I$I$U1*Z1Pr4I$i$I$IdT PK$IFŒ$I$IR5⇇dT,I$K$I$IՌV *ڠx{?K$IZ+ I$I$TםbyX$I2*$I$IzFFŒ$IQ$I$ITըxcT,I$K$I$IUV ȨX$I2*$I$I mT|qi,I$i$I$Ib]w&֨4$Ir$I$IR&ڨx?K$IZ+ I$I$m`]'$IQ$I$IT錊&pr?.I$bI$I$ɨب`:FŒ$IQ$I$IdT PhbbI$E!H$I$IFJ$IdT,I$I$ΨX$I2*$I$I gT,I$K$I$IՎaxFŒ$I2*$I$Ik@ %I$bI$I$)dMsHF׶Q$IdT,I$I$JQ1PbbI$K$I$IZpT< _naݑK$ɨX$I$It JbI$ɨX$I$I [&byxx0*$I%I$I$%<(O$I"$I$I$blyX$I2*$I$IEK$)ZA$I$IZ;%J$IdT,I$I$yب(Q$IdT,I$I$:(6*$IR$I$IdT K$IFŒ$I$IR]\|JK JsPlT,I$bI$I$I+V PbI$ɨX$I$I2*6* gT,I$K$I$I}@1ڶ5*$I%I$I${(YAQ$I%I$I$L"x?Q$IC$I$IbI$ɨX$I$I2*6* wPlT,I$bI$I$IF<(O$I"$I$I$blxX$I2*$I$I_Yk6져NOt.I$bI$I$I뎊w0bI$ɨX$I$Iʶ9$/XA՗$I9I$I$WbK$)$I$IdT ^Qqr-I$bI$I$I?G:b:FŒ$IQ$I$Io]wJFuPßI$I9$I$I ^)6*rbI$ɨX$I$I2*6* v}}mT,I$K$I$IFF@b%IdT,I$I$ɨ`2FŒ$IQ$I$IdTlT .꠸NI$I$I$I$bJ$IdT,I$I$%9(6*$IQ$I$I$bK$IFŒ$I$IQQ1P8bI$ɨX$I$I2*6* uPuI$I9$I$I$bR,I$K$I$IFF@ጊ%I$bI$I$ɨب(XFŒ$IQ$I$IdTlT ,꠸iI$I$I$I$bpR,I$K$I$IFF@ጊ%I$bI$I$ɨب(Q$IdT,I$I$8(l.O$Ir!H$I$IFyX$I2*$I$IK$ɨX$I$IQ1%I$bI$I$ɨب(v5*$I%I$I$bbd1FŒ$I2*$I$IdT 0m%I$bI$I$ɨب(YAQ$I%I$I$MF7*$I%I$I$%=(6*$IQ$I$I F0Q$IdT,I$I${(\;*I$C$I$IV5 CbK$ɨX$I$IQ11(6*$IQ$I$I7uia1@dFŒ$IQ$I$IbbpFŒ$IQ$I$IdTlT .Aqݎ+I$C$I$IVbI$ɨX$I$I2*6* gT,I$K$I$IEuiaϟ ˨X$I2*$I$IVbpFŒ$IQ$I$IdTlT ΨX$I2*$I$I0(O$Ir!H$I$I+\&bf^)$I%I$I$3*$I%I$I$ ?'x?S$I9 I$I$U4*Z1W%I$bI$I$ɨب(\Afs9~$I{A$I$I2*XW%I$bI$I$ɨب(vJ$IdT,I$I$%J$IdT,I$I$:(ny$IR)9I$I$Qq~bI$ɨX$I$I;F1rAfsySK$ɨX$I$I*[hT_)h6Ĩ8$IQ$I$I5jCZjTb`-]w?E$I1 I$I$UJQ1?zX$I2*$I$I?(6*$I$I$IdT 0⋋OH$I$I$IS2*JnRaޑGp4(+@+ ل \p+p8}E>prC= Q18x$I$I$I4d5*bI$I$I$Iŋ@\0*$I$I$I^*)`T K$I$I$IJO/r"Q$I$I$I$S0*$I$I$IpF`T FŒ$I$I$I.AtRb0*$I$I$IrJ1FŒ$I$I$IϨbI$I$I$I 4Q1Q$I$I$I aP\UQ$I$I$I$SCUݵc˲$I$I$I^3*b`SV,I$I$I$i0*$I$I$Ixc'X$I$I$Iz)`T 0*>b$I$I$IKEQQ1ЩvQv$$I$I$I^wPlT Q18Oޓ $I$I$IziArpzQ1d?*$I$I$IrJ1FŒ$I$I$Iib0*ZbI$I$I$I 7بEQxA$I$I$IR/9@FŒ$I$I$IWF`T K$I$I$IJFŒ$I$I$IR+Qa1SaZyA$I$I$IYTuX<~9;X$I$I$I9+"Q5*bbI$I$I$I}Π?Ue@\PUݷFŒ$I$I$IR+QGe@N\bbI$I$I$I,QGƭgBΨX$I$I$IRb7(OUu .K$I$I$IқTڱظ`T,I$I$I$Io.QN9 t.K$I$I$Iқ*"QN<%I$I$I$EǓ@_\0*$I$I$I7eUup.K$I$I$Iҫ+iZbI$I$I$Id;W/"@K$I$I$Izoፌ;nݣ%I$I$I$7cxW.K$I$I$Iҫ2܍sdܺw`T K$I$I$IK*P7qdr*0*z2ΨX$I$I$IR50^,OVbI$I$I$I:ƭ{FT}kT,I$I$I$) pRlT,I$I$I$98߁vYbX$I$I$IRz>m?j2$~x~>|gT,I$I$I$)vsF`TlT,I$I$I$)Ƹy8FθqdrygQ1K$I$I$I1N):klzf"ΨX$I$I$IRʲ4.vz1Q1dEQ$I$I$Is?qs b0*v^$I$I$IR_ b0*v#^$I$I$IH9lybu\^?`T QL.[bI$I$I$I1i10* pPF$I$I$I5}^,O_N0*3YVK$I$I$IO8r|uS"@b7%I$I$I$o=v@ߪ5*$I$I$IKa]Q '?M)nK$I$I$I:Cu]z,Krj1Q1`T,I$I$I$)ܿ;7,0*%I$I$I$%\Q_fZl~?lMyI$I$I$I˼:qlvsg Q1)/I$I$I$酅pJw{{ݩŭ /%I$I$I$ ߃a1Q1Q%I$I$I$[(U4Q e{Nݘ$I$I$IBoٍX^ƩF3*$I$I$Ih! F~ yI$I$I$I}KGr0*b7%I$I$IsRѸQ1 Q$I$I$I p ~Űx>:ȝ=֨X$I$I$IRgsVuO g.d|J$I$I$IR~Ej`⪺^gbX$I$I$IR_l6N,0*bbI$I$I$IcI/$BO%I$I$I$e{o밸\`T 7bI$I$I$IlܧԨ4*6,r"Q$I$I$I rR!Tu0ȅFŒ$I$I$I2=Jm0 Q1/ߌ%I$I$I$RQQ*BO&%I$I$I$%^('˲P`6V WԒ$I$I$IRbb .d>*v^$I$I$IJ;&Cu];ݸ$I$I$IB/l2ÚqZ1Q1K$I$I$Izm}IEa1Q1y/I$I$I$镅rO( 8bb0*6*$I$I$IܓTQ$I$I$I^{9bb0*v_$I$I$IO*"/ConZQQ$I$I$I~Rɰė$I$I$I܏TJ9,nNo)عГocK$I$I$IJO>sXz0*N+$I$I$IVG*՚eTlX Ebw%I$I$I ^dwtvZ1Q1K$I$I$Iy^;wZ1@kT FnK$I$I$Ii^[7,h؍|I$I$I$)܋Q1~wY$I$I$IJ^̰epI$I$I$)܋Tm[bb0*i]$I$I$IEEᗢA2,0*b\$I$I$IJ;"%bq Q$I$I$I4*H鏶ۭa1Q1x<,I$I$I$%A¨0*b7%I$I$I$TQIJiSV Qq 7ۭ;ƒ$I$I$IRb6(FRbGT׵;Ē$I$I$IRm6K/lit QqwST$I$I$IR6(6*a1`T FnK$I$I$I:s %x< ,I$I$I$%SXG_? 0&K$I$I$IJM(t\z0*bbI$I$I$I/)yF@\0*$I$I$II>AnQ =,? nQ$I$I$IRz9X꯺|Lݼ$I$I$Ij|/FI5{hV? 0%I$I$I$ESkN, pW$I$I$IJ,___(نO,@\HxT/K$I$I$Iib)蓋?}n$I$I$Iq!Rܽ&)}s Q.I$I$I$ŝS\{ӶNi>`T,I$I$I$)6Mp(b㰸`T FFŒ$I$I$IR^9X=8m\IUݷ!w$I$I$IR9X߼ӊTbI$I$I$IVS2*R"@~ή$I$I$Iq kßV>EFſ$I$I$IRbK9V Q$I$I$IR9X ,b`Q$I$I$I mPlR}9x2woV Q$I$I$I mPR=wb D.K$I$I$I3{}oT @֣,!$I$I$I)Kӧ }/.>$I$I$I)R\ﱢ(;0*`u%بX$I$I$I/b)Yb=؍I$I$I$)B(ﵗl6F( w%I$I$I2*i`+} r Q$I$I$IR8K0*X$I$I$IҨ:(vOQoþg`T,I$I$I$ umT, XΣbb-\HdT4;ƒ$I$I$IHm۠EQ%)䡾oVӊbKF$I$I$I4^!K^/ K`T,I$I$I$>(v/QoWe N+X$I$I$I 0(v/Qރи`T,I$I$I$ 2(v/QއV<Ĩxx<^EbI$I$I$Ikb)B~ ڜV Q$I$I$I^jP^RnPQ6b7M㎱$I$I$Ic r!иШ$I$I$IR8(vQޓVlT EbI$I$I$I/(AJ,~/qX$I$I$IOyP>/:gT @5*$I$I$I( b)B~? zbbH$I$I$IxRO& \HbI$I$I$I_3 ~f|80*^Q$I$I$I4HQV^(+TFF0ҨxjT,I$I$I$!pW>bpZQ$I$I$Is=1YJs0*bbI$I$I$m^^|6L۪?(o"Q$I$I$ILu]6M͠ НR EG$I$I$Ir͠o9J3¨0*T}bI$I$I$3eYz0*N+$I$I$Ir_54b g.K$I$I$Ig([{o:FQ1֨iw%I$I$IE_d,6+ b^?N+$I$I$I_C!ˇ fy30*8O+$I$I$IR/1qWwM_ gaT ~AgT,I$I$I$O?X&Kw<|vF%I$I$ITuRcnt/sx(ͨȕ V,I$I$I$u2cF^F@\0*$I$I$Ii&3(n#J+b W.K$I$I$Iє˜x>:(18|s Qq4K$I$I$)NýϴY2gzg`T FnjK$I$I$IQ )@P[EbI$I$I$)ʲ4(6,F]ޔdr`T FFŒ$I$I$IʨhPlXi9#)@EbI$I$I$):*6,2?KbpݨX$I$I$I xx<9ϟڔūg?NFŒ$I$I$I[+2A!ߖˇWWWް՝0gIU, /錊%I$I$Iu< =8q7n$,r"Q$I$I$ITũMsX,/>KFŒ$I$I$IR(=,5l_|4q|ƼwHY}F n<6M㮰$I$I$I(A~ >X>g:&]b:X$I$I$IWuԃ15,fQ1wMkI$I$I$Y4Q1|ưX{CsX$I$I$Iݏ;}{ک /b w.`x$I$I$IbN(dNcX\׵7y`m?X$I$I$I jePLvHF䲷EQC,I$I$I`2(&q(k`"ӊ%I$I$INn5(楦/aޔS -I$I$I$P܃ӏSzq)FiŒ$I$I$Is>8Gu]s)Q10ذX$I$I$Ic#N+Vȟ;Q1[K$I$I$) bݩ~oT `T V,I$I$I$ ]]8/ϑ`T ?*vX$I$I$IZ/ݏeD>SoM8XS'iŒ$I$I$IR߅sJŭ{!O&ϔ{/!q QԍiI$I$I$EU'SjX}N)0*$I$I$IR}5aqQ>8\(+ɥwT]K$I$I$?nx6^ţ9>@SMmbI$I$I$U⪺^{tbpS iI$I$I$v5(&SkXnN)0*b7%I$I$ISqO/<-A?z0*%I$I$IVN(&VV/N)B"@ϟ?,I$I$Iwbb7?5 iQ>\L2(Gµ$I$I$ISҡ=٩ӊ}.3f2FŒ$I$I$IJ;AEe cg Q1 -I$I$I34A1>p^jsذX$I$I$Iɠf7 ϟ|FQ$I$I$I(ACy7,f3gL7Bb"@ƣ$I$I$I~XbX$tb0*vZ$I$I$I,Arн|9ýZ3(0*b7%I$I$IbW}kİ8߷.K$I$I$IlZE:(^$7,?X3>s0*= /K$I$I$IbAQ?N)K$I$I$); ńm2lCG^b"Qc$I$I$Iؠ15m/>kbX$I$I$Iqx|8|hwkXg)Q10a>oLK$I$I$)>嘸ݏ~"Qhy.dnLK$I$I$)ʲvPܺȈ/aq`>s߷@*\0*Č$I$I$IRf7&6(&a԰8'9Q10x&$I$I$IޕA1q7{>sN+$I$I$IRvhċc#ga|9Ϧ(oH`T=@"I$I$ItyPܺOH&6qqY|.9&3?4GN+$I$I$IJ;b␫:Ϟg`T co7%I$I$If1J p}F@w7p%I$I$IVN'ŷ>^<(yV,I$I$IV'ˆTf7A }3h|FŒ$I$I$IN N aX}& fg>FŒ$I$I$Ii x{>G&$I$I$IjeP ţ wb ͒$I$I$I8N(:[,fX|{11`T 8بX$I$I$)baXx<3ǐϞC%I$I$I͠ dr%I$I$I⮮kbrX|gXgbHz I$I$Ii׺;gQ1/V,I$I$Im}`X?o/>s św\$I$I$IRm[b0, Q1dQ$I$I$IR66kσ[. Nrc,KOH$I$I$x4 O w`T y}bI$I$Id+ lX!drT6*$I$I$IJXw`X|1F@,=#I$I$I4Ro:;.6&胋Jӊ%I$I$IiF;\.;~11Q1dbI$I$IXvXUwݏ$Sw `T 4*6,$I$I$Ijܳ OO&>?<6*$I$I$IC#_Z#:\87rriŒ$I$I$)nooa`T Fu]{rI$I$I$ ՕA1N+$I$I$I4A1H,=$I$I$Iz-A1bؽ\0*;X$I$I$Y,ֽ*\\|lo6O4I$I$IZ 旄N+$I$I$I  _ēeRݣ0*$I$I$Izmu];6QՕ'$I$I$Iһ wLlP Q1uZ$I$I$I1b0*^EQ$I$I$IųMR݋0*$I$I$IzmaR $.0ڨذX$I$I$8 q_&iŒ$I$I$)Զm{?`T eQ$I$I$I ĝ{;`T K$I$I4Mֽ&h,4*$I$I$IZ 8#d$I$I$I+'Q1iŒ$I$I$b8x6^{LFN+$I$I$IO'ϟFQӊ%I$I$Ik tNF@_0*6,$I$I$) 0*$I$I$Igb0*0Qa$I$I$IyTEc{%`T azJ$I$Is:1 A=#I$I$I+1A1F@ܑ$I$I$IiTucKr?0*R$I$I$Itb0*eB}G$I$I$Y,cr u.P$I$I$IN'rPkO`I$I$Ix`T ;X$I$ID~Cwod69dȍiP)Y$I$I$V<W}/H_LlbK$I$I^qgw r8eYzBK$I$I2(biŒ$I$I$%vpP|߽t0*v }MfĖ$I$I$I#tuueP F@_i V,I$I$I8VC/b0(6*$I$I$I?ĝ{Q12&NoP)\$I$I$ PlwZR7$=&vZ$I$I$IeP F@_e2&6*$I$I$bOAa$I$I$IA+p:1FŒ$I$I$ef>A1*^$I$I$;xL1/bH_Ug=(vZ$I$I$I( LQ/b='I$I$I~ĝ~~~bK$I$IuPܺGF{N+$I$I$'umP @_;X$I$IpN.'axBL$I$I}11bHQ1{xƨiŒ$I$I$}(N @_K$I$Iߠ"@TbԘ$I$I$)RO 0*lN+$I$I$v:1`T }gPlT,I$I$Iw8^ߠ"@>SMv'OI$I$I,?:mgӏm$I$I$I)u</ݏ^1S~NFŒ$I$I$,wGs/ hP|uu|EQxL$I$I}Nib Qmt?I$I$IkxQ9K$I$I4D)ӏO]? %I$I$IRL6&nN?`T |QO), %I$I$IG61drXQ1/FՐ?~4$I$I$)NfL}0*^CR~@J$I$IKeLib_ <(An,I$I$IRH2(nb>xӊ%I$I$IY˜x:rQb-_e2(㡩,=&I$I$I~Q1`ӊ%I$I$I9˜x~>(Q1/l*Sk$I$I}Ltb0*:(T\eSm[K$I$I+Ӊ[q88A a$I$I$)0(o NvZ$I$I$)چAlv8Q1p.i"$I$I$I:W!1qg>~$q8t 7Mt_9X$I$IKQ1נ)c=Z$I$INeYFM_ ӊ%I$I$I!ݏ |1gP\#I$I$IRH4&nN?`T :(6*~Iu]zʲ$I$I$駥4&Q1Я٠8$I$I$I^EQ$5(nݫb`/wp0*$I$I$ Z]{cbb78f$I$IJgLuPݟhݧ`/wz˨X$I$IR<Ç߻}2\: v$I$I>JtN `T #|gP|6MooyjN$I$I2̠ȅ=[{?xv?3Q1%\σ,{˰X$I$IN EG:ni:I$I$IJ8b W.D<**I$I$IzY)/ %\QUݵ}cK$I$I~دtbb EQx 쏮zŕ$I$Iu:1Q1D=*ֿu$I$I$UZcbFX= ֍%I$I$IN `T 񏊏ǣ'~ӊ%I$I$)ߜN `T I˲DEJ$I$IRuߟ;e9X$I$Ip88uK$I$IRڥ:&^O?@\QUݷk$I$I$If7ݏ `T Q Qv+.I$I$Ix8&F`Tlc/yxK$I$I5&Ř0*d3*N!3I$I$I0ex~~~TBbx̆~L$I$I&<$v:1`T 8*.hovC>HV׵.I$I$)~lēe#;}9X$I$Ii N'֨xxL$I$IRog2&6(~ A2*$I$Iۘ U{M$I$IRx<:hl̇$I$I$)0(0*F z}c?|&I$I$Iۘx~>qgcv$I$ImL|qcE!;Ө@uECi$I$IC&1߃ֽ 8qgw'^PI$I$IRGO_߽ 8=Oݩo!?4_$I$I :1Ӊb/z;$I$I$~vLtb W. d2l!6I$I$IN'h`/w<gX,I$I$I*1z|9s`@M;԰lsI$I$IREF0ޗr=da8bI$I$IɜO'nݓ0*ѿpT`5$I$I$<&L.Oblv=,NmnS$I$IӉ0**"mI$I$I{ڠb ŝ,{ .$I$I$<&^Ob`XlsS#%I$I$ŭF͗wN+$I$Iu&1t'0*bV,I$I$)N `Xӊ%I$I$Ӊ胋X,[bK$I$IJvtb;X$I$IR9`Xa$I$I;OEb%I$I$ \QٍG=?Q1ck\lX,I$I$)rf7ݏ}b]_K$I$I wFپ3,N^]מ$I$I"n/1dr辿0*^?ik$I$IRD6&0*QUw [VĔ$I$I/Ӊ[X,u:Aa$I$IJbQ=aI$I$Iaۘ㖭L&k=>VUI%I$I$fq:1FqK门BΡ%I$I$W>cbbعqwqsZаX$I$IʩijHj`=xfX,I$I$Ӊ0* >29 %I$Is:1޽#5* g Rc04N9%긝Ɂcn۟/j?!MxR"ϲXD-{ج{naq]מ$I$Iz1dr?y$I$Iґ!?cbr"d8,$I$IJO]bk>4,$I$I"F_m6=]b^u߇8$I$Id[bK$I$I}M1&xEjXưX$I$I~x6Qݣ`#VlX,I$I$}(0x ۶$I$I/1cbb<8X$I$I+1A1Fݔpa$I$I_UU0$oLmbI$I$)Jf/`XTI$I$EU; abI$I$_K0*O+N$I$I1|~]K0*чŒ$I$IUUUx29.{dxoX,I$I2&b4MIVI$I$^CryQoFK$I$I}v%~:,⪪<*I$IONӰx%I$IceL FqXްX$I$IIVژx29{c@\$X,I$I$=w^&FK$I$)ڶ-TNpbX7,$I$IR4o0*`a'7M YI$I$p(rL,~cX,I$IgUUUc"Fb29 Œ$I$IzjeO珗J"tU{iOJ$I$%R۶ōū$I$IWuc䬻!`T @n7Œ$I$IgLlL  _݃Œ$I$IVUUcQ1@7<mX|}}_I$IfHlP "rCCc<)I$Ig<1ryxyb %I$IkaQ1} K$I$~7~3}.z`T o ;X$I$i>&Q1;X$I$着2~8oFf %I$Im[CgoFrCc<0.$I$IٵZ N F{V$I$)3ywܣbQ<Ҩ4%I$IR ;R"n29 c<ު$I$IJ+abHuK$I$:gϏ0*ؓɒ$I$)ۭQӉ\>lz}}eI$I4ZHc桻Q1yð̒$I$i4&^,w60* fkO3K$IA2~\>^NbbI$IMO&g0* Q''y@tTW'%I$IѪ(cٍdbI$IxmaL<}.{f`T @7#kO@K$IgU׵AbuCٰX$I$%RUUG,aqvd$I$IiMFkOIK$I;Go6eu `a$I$IR!ċ%;0X$I$!qĝF͆Œ$I$i3$N/'`T rrqS4$I$I׶AēYcQ1O>yZ$I [FQ1|aX,I$Ip8rLܣ|~iX,I$IaN%Q1cX,K$I'e1tz{QQ1cZ,n7M)lI$I* ;m?F°X$I$X@y#~.Y<$I$I 9$vo 8痆Œ$I$%"05,$I$6&NσG@_\m nI$I*?Hl{F@\FЮ$I$I?៏Z,nC\FX$I|ڈ1b>E`cX,I$IR|L\~ظD0,A߫+OK$IFA=@\F5}c/..<.I$I/>7 ?mLp7<|;ÿS$I$}m[CaFx^{j\$ITtu] ?sL} . K$I4`N'`P''iaS%I$Iw1qEظX$I4Bu]<&L΂{*@\ PU%I$IƽFRMN4$I0qLq~HfX$ILk֨7A%Fd7'$I$)2`L<I(a$I$i6`L<_E0,Z۶—$Ir2qc,`T aqRDK$IϘט E.Y/ %I$Iΐ7!qg yX,n %I$Ip8F6&v___{_$IΈ71dr0*g'7,n$Isu]@NR<|I$I1ʀ7WCp %I$I/ΐ8!{F`Xl\,I$Ik#ȆyposzX$I2ݻwF݋0*ќ|nR@$Iɀ71dr0*xn':,vj$Ikր7S~Q1K$Iҫڈ7!1Q1ڪ@$IR3$v6_&;,n$IΠ71F`Xi,$I$%/b&P$I$v5hH<ذX$I^]UU 0*$IX2$oH\i?04$IQ2oH<| 9 ;ޢA$IRH>pz!aǯ$I$umx >"3,K$I:Fq;?s<^3,nXiB$Iҳ2&kH3;=,~尸SUe$I}n0cL3:O"7%I$i z#LK wр$Ivggq^EW:99?ľ-)$Iº3`LXx-uӽaǯW Ŗ$IzEƼ;mycqvvw*? I?4?ïGĝk"*n~$I 1'4Cp ?}dd(O$W LCb=*n c?PIum<&0䬈q;:ч$IRnumkL F0o,+ˍLZE@v$IJ;>F;UTUaIo6^b"aQ ~%IRbm["g]~^Et>,ncV+\]]%$IQYc<| @ \N|6_wM%IkŌrrr vqG_4IkF'bq_ظwKD{[H$ ǰH^qa$IJ  @%`Xv#k/$IzRN#N{L<}>3I.i>,fX\׵30$I׽^"X/fX9(ĆŒ$)ڶ(1f| G.D?,)jXlw/$IޫG| g.GӉJ8{Lĝ6 @ \0,Z4EU<%IR\7&9Ҹ`X20$IԶ5'%r8)wwwYVGE$I ս&1tz|t.$9,~_nCBHxcb0* c @RУ&L΂ύ`T  o h&$i";mYXsԺ᳟N-$i!@NO?:~sŒ$y' @޾ ڶ5bŒ$ZxaH @7 uww7ڐK4P{ CbʳXwj#ͪ Axn.I*}Lsϰ\~`~Äv;kZ׵PϺ I{O=Bc<Fk(x\lU׵$I#vqqadhGM ,6LzEm:XzmCbH釬}tm\l`,I;یGHo "鱺6(Ψ\G@$wum|4bH :8CN/$-'sŏ ibI~Ȉ1A`T jy%;p²^οu]KB۶a >Q1qq'+uKrʐؐ3sqQq4$e^UUOiY F% os;~ВYݩG=&F1~a`ldlTo$)vNJ bo鹑q,"aO%)޽{}w63 1,] Öj{B?X9rG7 X_ʨ];6"Nσ1([bnK{ 9ة@\`/+ )}\{!9fb~$ߔcshņI~J^?b"љLΊmkYx^__AK+71q^{z F.ޜRwuJ371tzb"i|QиʼN1nUL 07.nXwW̉N&$i 9^ܝ`rvŒxN${Hއz?E2 2tN-2$.cL}7:$ I}cm0%e!qc,x E2$argV+?LI^1&0*fĩүj&pLu]2"{3+(狑F#JF\cUU&<~&x 쌋Ibtjn4j07!l9xo `T ̰;Qzn9)I^?yx:=$9,=o鏉'+Q1+ƔJWWW~&bL `T p|w'阥>"C6lL^_8*ʰXRm[یޟK:aՕ着61f70*nTܶ)Ց$ump[x> ޓd;*̰XR 4&L΂FYucKzmTkL0*(bT,a!ژؘ֘XiMITUw6='Q1faQKΰXҳ[FvDDbb,qJxMҰum4oFFF?h:MQک^It8 fHbdt =*b/vC C6x `T %WŚ:ћ_2OCa YN)J}UU!tz_0*KޒMI0NEԝm1Fĝ{Db8Xz^N,(ĝ&x_`T $ҳ3,^v5ne1(SڸCc(SՠwP)ksZֶw׺R] >"6 f\N)^Qqٽ{ΐC/f+R"|1bP,%r/3$NσT$쌋K)!j{aΐ's2xPܝ)Z۶N+;O0&bSgTOxXW{&Er6bu٩!C`T eAd~8V>G'Px{ 0* 2;X깔iěCaPlTJmlnXV0* 7rJp2Uq9COO?s/AR, #׈GBbNG9xZY !c _8XV*$';C^S2~6 ,70*HzT, )x؀Kce` e'4*6(ӧOF 0*f0)u][J?d y }S(2CbX%1(vJ1N)^X7`T ` N)/AtzVQ1N)o9;XTśCZ F@º`⺮-Gʠ)`T eFbK?o%3*: F@^O)nzTI gk%biR; L罞R|8GvɌNQ1×N))`T 0xfP, XbqqP;Q}22xb AS!KePb0*20:(~h^'3*: F@_\8(vJR$Y o[Q...;bK/̠1}}P\UC.QI0*rAS c: F@~GMXJ? C: F@6bi}2xb /){ RuH0*2НBbiVA1 A4hN(\`PyWUeE*})Ab0*r)`V$''G0*;*>RH#ٍR,]*&xmb A̠X9b c89*kRA1ѾyPb)A|~.Q1堸Q~(U5MĠuL)R?&6(@_DKfP .R ⺮KU\1˿h`P IbLlP F@AN)J,xb/ɺTUUc,xbpywJ{b`b;x M&gR,X}F}ʲTE6ޠ&xmbMN)z @\_,Kbg\)^O)v*2'Cp}b5Mb(cT,z|P<_g`T Aq?ng]ZV;^bKhF@\fϽR,A1`T DeS5A1`T 9AqUU*w~A FtcľN)V =(^,n2 ߽UZCSƽv;^`T ?ceP DlUUY rASURaQ1O\bbԐ,xC뺶4U5M3ؠ)r\epJt܆<T.E@bbRUUN)xL&gR -rJ1+J)QkvA|~z^E,X:nN)b"@_ 8(NoJhAf~fEbKAN)^̐%kkSP{ ^ܐ%R,!m!J3*v*vbl98X:~N)R"@)_ 8(4U19H!J;X#b g\f0بX%UUU({=E\xPlTrJ1D.g⺮LUTF@J\ KgT $LFF{P<gў)r /Уm-LUTN)o;X^F@Dzma2*{EbKϫAfG}EÍu)@ۨ)R=(L΂3`TlP,=R NPng]"{PlT E\n;XnF@$bԌ/r AQWC ' #rK}R 1 Q1sF.kylPܶukAtz}r  S9>\]]~o WR /QӆBVn[F\H&⻻lFYw륃(^.o5`g\0*}Y-8?{"Qq;/7k0G.a:=F¶Sb cv[JRo6k0G.;?mZz|Pb`\0*yT܍|>MVe4)^ў?r ~Y(uT<Ө;0*tCA}41F6R  Fű{uu5ʨigT  Fűj6*VWQ1M0*6*rJ1P"b?8Ahzm}iF@!`T)cVgß~= 2`\0*6*6*.%>"Qu#P3*}E>}mTp3jAryQ<"Qq:Xi͂0 \0*6*6*ν1yDFFſv8,r3)@!`TxZ9X/nA|~~Q="Qq CZb~bb0,6*6*ι1ųu $ sk@jū*~7*ֳcPXY@ ҰQ]U@`Tʀ*b`T `T )gŏgQ1`T mXlTӸ'؃s:EoG225,iR `T F%f hZ>(6*~E8 NcWUe|;0*F<ӊiH~FQ10MG3vӊ3+,,F.i29sZq#8OJtJ1R?8xcmk렸{Et98AudbF@,7GzQqz]\\D9(vJ1`T Da>tZUU(ߡ?4MbF@l7G3orZq9&vJ1`T D=,6Z,*ASb RoHGJmPlT /Gv(ި8fb bVUeMn R I ӰIdPlT >rZQӊFQy~ 膭i bHiTlXi R gc^UU bYckF@^0x^G7~eKu]g2&gP<F@_8*1^2;0*2Xcc;m(F152*0*xaqwm,2d]V\|O 6*paq<αƼ\iFwwwo6FQ1smXܩj1ml5pJ1Q1pa,ag۶jw Z7(Nύb /"yzqcSbM}\~ZVƴ,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEV 4l)e(QJD4"Mv="u Κ̐6Z?ҽ:ܽg؋@|@T Q1 *Db@T y3՞(AvYǷ"4 *`i }t?gJx *]Cop8b _po #;phXRh\=b\qhXd<3Fd Bni3@T pשǩ+!0Aq@T d:At#+ʼn^ Q1ZnC'}+1 *H(Q1v1DPet\5 7y#1 *R35TD ExQ1 $2 *RKN*U7bD@헃a!10z`|x}: t:{y}@T \՞|WkH @T (">(xT;[>#+=i 8ܦ}Dv-1!Q,M+Iɓ * 7vM+0@4ᰀXLvH3ۛk7<qd"uy)jo}* }At1qI_Aa]@T # 1 FL樈3=?xf @L\{C]= } ` *o>s2ЫҼ 4_0?DD(!$5"^rَ8$A; t7޿Q1ĠF tleY?Q́SB ]# DN#N3\d"㇆GlN^y{#@T t $>)ة˳8f;IF@k䱾O5_GbBD$QR,8_i_ aj)= * +NI oo .!3ߟbRU(9ypcp]\{#@T cRL).$S?;8Š}u]FV{}'} $ HE0qqQS hh8 dI> ${}M\H TkBD["bN-"bb" wĢGœ /"bB|z= vՍp)ES\@|ff޸ebw:ObD) Q#P˳ +K!p"tKS)~Q1*fQ<,&^2Y-goNRI8Аpz+\W|kf捠 215u0A'Eą}"˳^Ӽt a{x_DO?xa#َH~! I}~} D𧙙7!pvņ@ցb1Ĥ}bB○C@L U'yQ19ӈ łC<;<2vj$Tojc|bRJBN#>|7w9dby=DDG"{GN#ɑP6'A+A * ߞb{sMA`,.yzbQ'FZ$kNֺJb@T PfSP~' K~̰Nv#:]7RVk#k?q1&~]4|w (`4)=?=.Q^k1NVzˮoy_ *Ua,*Åَ;"0I;[/[@T sE""Aޡ3b~͉9s$㿞^yobx\qb^3Eg @\L5~=ﵝIX-}ѣ߽`b q/' E4/`Z377ג[ wy3%&~k0q-k& 5_bqEm6rU| 8u1O.uk^ۯw:1e[vmz{J 􃃗EBbQB,^}Bg^寇"ϏPӣ]׫7ůHIqxL(L~ukf,ct:1s/]DD>!(ʂ*^/6 .`\:1aqq?Ð]w5x.aD@1!$*l;)YO/5kǩⰨ]wCs[  *R b!~;N*^L;yRP,(qY-gz_Z퉐x#@zo*>ߟ8J\,0wp_㼾'{@TA^H{)s |Vz+ o ZH!hx"9B[qڵ_xoDyjq%Ȭژ*şJo.I8Q1dy?H5&v1fiƓ.qzq>޽>3S'Jg{.,.>1DZI{󀼐x4f)i>)b8S~~7|r~La~b`LShmN%6;?C\|C%"(Z,,@T I&_r< ;=;l,'31SSOKŀ|O@T DP~ف!f1xw]xO/:wx'󵳵{pj-ֆQ17 mVzV!?7bWczk{_%E?oZPZ~b@@1ܴaHʼnbb%8: ^C]/Nw Q1Kpzd,AYZ"w%??33o@L\NH02dw*VՠfGNa+yX-{Mq]{ haqJX *WHfLcpaHf%kSu~W *t:)ċs0AqpL`,,{?'\xjq *I՞$}*ѮIb3?{qZ݉@L/88o߾UKPb\O?0,v/Q1㓕޲vSQvH3qm'O** * +F21lǃP}1ƺF!.&ŇzۯH[5z\rz\(ֺxHiff^9ŋsޏ}xG-,vQ14&8< 3V|AفDzþw.n{s-`f捰Q1hBR {fR~uiZ.,vQ1I՞Dox=bb33qX|ĵW?z]o?(,@T Ov=d hL\\5lvKb6)ًΟ)wnb7XXŹh[杭u?:XX `ۯ  (Uᙙn+,& (a}@Ώ7S؃܂u D(1]u??뷰Q1|ڈt{}YXLlfba1 g^Cz *Cَd!@;[4 }X⾑Q1D AP~,43aqqዾ >Aaq!,"PǏ?b mo 13tת>5 8禨@T'_Ov= N(v*Y{Ybaq ߣ ܀\wZSa1&x3:ӉċsxAqTZOzV),y?JQ1]ebP,$Aqlpu{yvZAX?7aDŝ{a1t8ܘⴻ܂bg'''ŮDj/f;Q1cWpjLvHs.1qWMhz=k;8=vlQ1bbn 6$噘q133!Ű%N,n D0MbAMةff6̄}_ *;=z{p_=dbHl'\J_ﹾ}Y\r[59t Dp7AGċsHl"k4IŇ/3~b&GkyYyX~'nn4(dcuqq33p~?O]oc+*@T @0AJ/v=VbQ1q㸤xaaQ ̬سgϢ\rbq޽>Db%=ި:po@T @v1qsyHH1(WЙ7ߏ2s:,}~qzB_Vz˾pZӊDu:CY"1,>?s- XT a4_J/< 8̲^S`>;[QŹ9mo ZL *`|r9\RLa\ l5 &bK}2vSQ1Iēf; Ʊ~/CX3C,́b"U={^!o߾UDbB[`qnZPM#ӊSNr9]m~~^fffLG:فXbDܭy_jH|=zIōFCfff/ĠIB>7|Q1@|"n,5$@-pR"̪\AaZXѮ?XT :_z_+= E_Llff69Bl0XT  Rb33MHG(ѫxVzbba1K~^ XP ǩ+,ȅ|>Goo}ꨠ8k"V,*H4_jO*߽>'dPlffB \sb†Q1㼁[c,(633''rbXX :=-CT 3itBN Eϫ, ^t׀!X| K!ӊEEJCbqKPlffBXҵkA';o߄z"*H/@j'Aėg| #Nlff$xkBan{Y^&,:ARPVk#xqnÙOEF႙Y 9 7]r ]H6*ڈP"}c6C0"@,Jo9gaauL~`ffB |]RTaE{$O+v@T @AՃ V?b33I,ԀK]_9Xdۉυ@:p@T =}PUP,&rˌb' ٳ_.wTb"<@!&<,(633|N,אubDZW .M{x"033ouuUXkM?99.,H&*H7_4_eW_NI ̆9q͉ӊ# >lTn *_!q1$AwAt/t7mN~}w.y} =aQ1@V:11 (._^W=`:B0dqӧOц^Uq$O+v@T ZI!A"bg:\2kc.iŢb"\jmT_x>efff9O@G^zI3$_."* $W7L+Wz&x/lCn5O&Ç^:_Fk g|=~Ӊ=P( 333B .\9YȮ'}bա_FayMZQxRCQ fff6 踏َ8)"D=*~ڇ- *@T 0%N,(z8X&n\@87Mx,BŸFOM= *PhqZA̬ʅvb7YEňV EC@CPlffB DtB8Uף{~KKKDŧG^N+vO@T ^ke1qx@)禣 ONNT]fff-Mb _7멨 5@7B+8XPlffDtTma#,4*5DT{DbA1 (.5X033/QB83??눨pZ1b ?ړAACIKfp~'(633MX^/-- *ƧӉL>G`Yxto{9=8kv_noy}@T ` (lG^+s~R)N+âfgQ1@0j'*⫘xaE4E`#(633qx1;|wQ ',Nb_z} gh܃qĀ8]Q@A899u%,pZ1ZiCŀXPlfff㘨Q1us_GN=iQ1@z * dffffϢ:*sz+,D ;__݇"ghܛ{S؃쀠)fff9MXӊj-1^0|4_b@P,*633bTkl #믿&CT!Dŝ{bȬ0&& (PiŢbEYWLܬӣ]Na,/v\Kf }͜VQ1 &vk1?Ծ233hnWXžV^ *55tBL,(xw ,NXL؊׊$*FT HH$(b|S ,ݎ* Z\}}Dňt_xكx'Y;U\'DTQ1vU!/=dTiqn:j";Q1b #נc⫇.w=`$]=r߽>Q1Pc.=\oკM ޲kNa18QQ10n(N'.ylBЎl Q10N!K gb333Kz~J)brOgңZqQ11A1@hN^^WJOO*b{ӊcAL,(b333n~'DX bD=~1ӉOv=D8XTlfff,/\ !xqnulۯZb12̆ZH+]fxOXV  ?bf1tz}Qfff6wy_XLQ9D@_`yPAN)633sӮM3.,iŸ!*@T nN'ݮ"Fa10NIsAj^:H&(v:18u.:b  *"jmDs:Ӊ , 暰>@T dz0x@ü%_PfffѮT8!Db@PbL87@ yc S1ZfT/~EŢbD?85(VU?VEbD@ff{H c0??|233/=]",FTXT #_H*؃xefff6 8D̃⫘C@2Nv &َkWq/,&LE DVk#*&vr 0ls'18?~@㞄 EM?bb>b333b\׃Q1b \mG<{Ldfffa1x]CT hLt:1@R:\^wZ1y@\LTAف]&D FP1pY؊̬9 Q1bzNHR[vJY`YѮZt~'.&눊_&_1qynMffO/tOZ ^ *Fl~ t⫇jxsJY+ba+ƻU1b:Q10ԍcb/֍Ņ̲(1MNNN|1ǴPc<2޲`^޽>sQ1$yS/{@NvRlff?TݜIJvօxBT Z@P bAk4Ico߾M뿜VDDݳPL|JoكzufffA,'La.(,33XWtO19!*FT,*} 2& 5@:^ȧ?g#,FTbDP @cbPŴz. P0bDňEb`tړ ELk`ffAه~*ߍ޲~Q1EL|z!}ٳgb?u@N).>l@P\rL\nzp33BD4~3A⍊2 _{`f;N)63'"k xOXb *QZb݊,}IEp5z]#8|;l7>,xyvA8DfffYl&yűGI4*DPL&*x aRb33[ܦ!ƲgϞ UѨ,;E_X{$nU{)N)6327??/-? '{ܴkms~=)wavl^Af;coffވDfK{ @T,*632'bN+&߁flo)`7*/< *ɉŔ=?z(@8-6bPQ1d_="0n }^+>N\,(FT|[P,*@j'*b8XPlffbٳdkӣ]DaKbA1q\kTDߍ cَD#"̆^!ԢxiN+&!Eu_K`<׆޲;!*uB=4??_܇^wX'0vQ1bӁXb333A1!YZZ{/8յ7$.a@x7*߽>XLlfflnnNtݟ~'B5qŇQ1<УG;h733{ZLZ({0{ {^+*n헢bQ1zs˜"|ܶϟ?~T,"튋}8!G@T  mff&*FX<ŷoFN-kq<DVkcPR~ ٧O~~_7]\\ B+eq$ibQ1ZiL0mDgff^ 1%i+hLgii)긾|u8Y*.o`U;EöN)63'"xuu'A!{ms'*@E/A1b33o7??/"+~?'''bN)n_DPMc3'haSfffPs>9=@ AǕ޲#*63`h4# ]⼂"}@\8Db(QdPvP|paBd\.&3 *j'brT\qff6޾}+1FōFCT ;=ڍ2.gO5N罨@T ?tb<|b33脢pE0ϕ>xaϑR j?cSz/*63vrr" DŐ޲bDzS诐a9<+*63& Q1Ÿ!*@T |{*q1qqH)*"D *AM^E_T t;qb33QWEPⵘN-&{bDIj_{2mo, B!}Hf *@T @7|Ϗ<@F! bCyb *HZtb<[уnWgff#M GūbH󾰘hl0Mbb[Tlff6...ĠPXUJ]CYa a1eKyhaAT\ϟ0u~Ja1eD㏃Pb *633Ccz]T (,ƽ Q1b(ZAj 稸hLT EU Շ1^C *N{}0FŅƨ8y8_N-#*@T @A _U _Uy?h;|_ֽY2DbA\Q=lo߾Be?vZ1dluXC *HӉ بhl@ ɍ߯z=ʟCV@X<{L *;ﻖ?jwma#*@T wL aa&uo8>3*vZ1xOXLz_E{ ㊊LTL,zGTl&y?=(.vQqۣÇ"?^_=YOsP` *͕cb' *n33x/"*F?RDmqלT_4R `b7VmTlff{|8~1W Ӌ w>0jLvP!-87-*63('%zϢb O*Qqsn;|~Zcb'\Q3,]5┾O}"ܡEL,(@T,13&ETHT kmX|=.g Q1btG_=,R|bPQ,--ߥ*,=*nff pM!q3x WcffqM(KJeGe|}D(bw?Ѩp_@=C^  ǠXTlff1O(KJ)~}F[>,~e4&*@T pZI!=rE=ffᄲ4 Q~פa4旁|ZIą=dlQE:,xY^>𻫨XTb&F5zPA,<[{qWY&┾Srš݇>|g8;[ *&H1RlffiM(XT,*bŢbFzHYe (㊊L8F̿>hO+nT/DbbA1}Ea"*N9/~ mх???Q1bbbA1x)ff&DTsJ^@@7ư؟v'g%>86+evC:= *Vk#XP Efff)D'd&b`RH7مpBT D5C *63<&e?,*։l W_|xndd_=@Tlff O(K #>}bUw *xMN'vEffDp=CT a}Q1Ǐ?r =tR,*63bL4??o'/MFs?xϟ5/7Y+e]2HQ\\\T}믿fursuZ1H2S8**@T H>(zW *633Q1 8)![ZZkϪ{E ,َN)@T 0 ?b͵O->?s)WzQ DN+tzWS`\o1XT HB5!t LT bQ1019TTߘ$&zxjgk݃o *633XT 2԰^{N)@T t!C *633C9ۛkA;[YP633X6*ݐ┾և/cZ7Q1b LF61:XTlff **^ݳpJ1b  W;=b333a1DT 0~va{bD@$:YN|~A4MdFC8 ]T~-,.y޽>p↠XT B{򌊗nffEvEŀkݭ7{(D@/A1PNe>!器K)*@T TlfM1Jof)Ţb33XT 'z}xQ1b bbXTlffbPc{s= Q1bN'QD *+_oSֺ{bD@?WF-v*riate^ͤcaoXTlffbHC^D{|W;bDa*3lff&,?ET vX|~[SP P͵ʣb3??/*!a|Joy"AqDT ;)(@T <\b@T,*633a1۷b ^_WgQN)@T y-"N3&XTlff6})N)ݾK\PbDC(@%xXTlff6"(8aH+ n*$vJ1h4kffܺݮ$uQdn_fQ1p/Ăbб!.Q1@_=^cK:])(@T ѣb_-fffbR ֖Dpz⛔!*@T bfM1DŢb333Q1N)0 *łb@Tlff&*FP,*vO HֺZPn *GA [s`0N!'Q1  _3N tZvcgk=9x3 g}@Ptb@T|zN33$ntLs@XZg@P7"@,,qZY$yXD:?b qEIN'ifffBHIT P}bA1b$(n:@TlffԺݮHT ,oP\={3|㈉/ϜN /--L ~؊Z HߛξpFvAՃ;+e3DN+633q$ύŢbD/W'xx  $G3#*@Aq3pz%@TlffȊHT,kMT ,oT@=">1QĒN+@T G^x( j,u]-}~2Q1b7 =xXXXcffyianb0^X *d~N8(^-{ J( Gqj}O8& / H.(:xGEfff?^mYuWbX/ =t6fffwmuuUx%LT ~ӊH/;(~TP|/vңsI~숽F6A KNOO rzϵ?ΏV F8?%3(_<`_xk`TlT,IݵZ-H!b_sbbQݝ{v?̿7Q$IznQ1@V0* #/ Z \J}HVYHÖ,2*Ad<@F"^$3(/w<ٟ !a'ITfa(;Ώ\f55&9=ǎ h_Ҡtb>qCl iŒ$ieo =LbX<7b>>#_t[j,$Izx~) 6zalt]L~ⅅP3ҾpנCFTsl|:Tӊ%IN#7A:z:,n<'qo:?qBF?~KBvkOU1mwgۉ`T 57"Avs3"fj%IJ``LBxU>ذb0(6(E#b s~XHH[[[Ěx4]^g ry{@/7 nt=11A9LN+vZ$I611q5E<@ !P} Hq21LzdFFŒ$U|k,cд}@9n zb1qbs~WZIwv{zj!qxz<@}c87b>S}JtL\{ >0VlT,IR%|pUz z qq{zLYj_Rl6&@a^|7KCbR.76*$IT˓@7,ƶ]tCO"\[YOaa:. pZoj5kID>̰" ,Eh]`TbI+z 0g}H܋A1}8Ȉ>.vz1P~%I^Nڮ ?0)"71ɾt  a:c@U{ Ha_I$Q1VlX c"0N>%IjN+6, j4~v:1<7(~\&\H$)|a܋{C=rm I+kyb6ذq"IlufL 秀$IϨ/`T Ӊζ119*V8$IWޛ RݏC/ vPtbVqqnmeE^ӊ%I4NN)t"abGĀq1A$I2_~pⱣ⹹CŷH0hP |wrLX$I׶{`br_2&nD9`{hĀ̀|FӱƑ$I40 O+6,`hT @/J#; 1Aq:>|vN:5H$IqfT @jT Q1ŏyo1q')jnnnFp=޸V`wgk I$řQ1|ӊx3ܾi~abLʢ1qc? ~}bpQ$IF˨q? _ 61ͅ!OF$I"̨ ú6Q04*h G1(}c!'mkkSn9pj1iŒ$IqfT c߃mX>%Cbà!|ꡗ?LcLpRu:+Z%2P$I"ףX\Ԩذ_&"ĕ=PIJ }85$IR53*`I2,{1t_{hŘؘXLFŮ$IQ^/ͅA0,.~X&Q1Օ?$IUJN+aX'Q1D7(1u:OJSvZ$I~ɨ7  Ad߃'ďn=E+P*W/;5*$I b ͽnP쁓WjLaɃe5*$I =#bt~԰8(Q1na ŷ#]/UiLecbFwI$Bx4=AFA =`R2&vf<+I3* 7,n)Q1ɟ #w}VӉ'b%~;,>? ]$I~'aVb"N'D$p<+Ir FcxiRb*5(n`] JƳܬ̠Vy VxWWW@tN$IRxu9Va'o `T Aq!<ɘcbIzTⵕEǠ$R$IT^F3ذDͽbPbIV9bI$SϏ\{_K0* ! G&?ݲ*VWI*q˓}ߠB~/iIrJ1!>;,v?dߕ6(Rmt=,t;mnnzUңi\TI$[^gPð0(AzUDAGU$I*.p/iT܋RŷBxnX$Ix Pb{iF/7=@Ct<*2 ~@wss/bI_ymc?l6aqq^+Q1☸ ,<*ja1Tʢӊ%Ik:|t`P)||ĒB a񞿑iŒ$I^OgTlX `T @sR1$UsOX$I鼾 T޻pZ1Q1YZz[ʘjtucbI ~'$rOVW$i 6&iub q^%ěd]V+qbI$ݝShɾ=y@F^G1.񞿿`T,IT~ ^ ݗ0*Aw^gYKR<.v1K$9a7,K? `T @ŷc%';X$ ֯.7mǨبX$)jQ1>6Qqn.Q1h<,{P]pdɟNTIz`1}ǃŒ$I^`&|HӊķǽzCwN~P|ppTIzdQ Q$IRl9*>yZF'#?9A$iQ}1$Ixu}a1Q1}6 aPA̘VITIR~߰}$I˲L{ӊtbj%ITףotrV^$I4zN)?>9b^2(~/*6($UwbpZ$IU{dT {YݏCa(י.>s~Tr=0Qqj_$I#_79 `T @`.O=ltbIRIQk5I_Gym6ؠZ-OJR'Cn.z_^]](ItOe.Z]nf xk+N+ ? x'I qzpk7Iʽn^*u9 V%YZz̘dCOIqPtbIZذK$Q1`T N cI ŮpZ8I2*Ck=x⹹C P$I_(Q aFwCŒ$9X$),sJ1<~pb {fwg;Aq4$B0cT,I=p5  Gn=I*I*A^|C2#k_p$I%+)ZHb3;lhP|ҠxTtgYӊ%IiEEHtbUbbIRhSR)%I`0pJ1`T ˜ؠؠؠX^e_]KM$y}cT I|7t 8ss/Y~BbJvQIصZRQdKpZӊ%I[`:.O `T Ŀ fP]C';N_&>=FŒ$IN))5q_aX `T `PxrT4ʼfqӊ%Iby-5 U 5bbzCɿ&) %IJ|ǫj~IʕeQ1TpX~G `T `PlP\%Ifpk+N+$IJK~V}jb<5(vB$)ZV1g=.xu$IH]d?ӊ_ `T P)]$Y>k]`FKKo[Lݓ' jP_TK2+ɾVlT,ItgVao.zu\V `T PS %Iթ]bIrJ1GFFS7 d$TQ'>چح,~mZ$IVJ{/kwX6Q1@| fPl4s˓}bI*k$p~WiinErk'In=*I2?v}%IpJ1H9FaRH { Œ$0?Q[K$‡@uRO)6(A$IwzzjX VlX,IBhzQ aqc83t8Q1@;vIPIQ@VMP5,$I^;8bb @GN($q119zvjb$I|pk#'VlX `T P)ݝm$|J%I*g$`kmmm$IoqJ1TCd 0* K9ؠx4hGŒ$a1A:ϥ$IRٕy=o^{"N+~S8IatO)6($mnnvu}s]EӲ}%Iʬ{EݏC{Qڠj>D0VS$P78º$I*G3פPaF@,,|oPbC I*2p h]JpN) @9Q1PAw$TQbg=YA^I$%zbbޖ2(`A$Ir3^>/x0$I^V bP<`T $ɓ?:(<06Œ$U 무q$IR Fx.7V `T 09%!mP,I1ԯn.Bqk]ITb7Jy0Au2($ɨk4_`a$I~oP އӊF@R/nJ'bI4Z=Z-$IR^>F>`T ;ؠبB˲iiv/)I4{-FN+0* PlPlL!IR9 B}ֵ$I?kuYiņFA(:KVKO$Izhӊ t<)IRCd ׎I$)k}} {OCbbbIkݝmjDguiX,Il]=>T/v1!ŭV$S{ %I{{80*0(i97 4*6,ޓ'2(vBA$IV5Ғ$Il;?3,0*䅋AAA$IIWֵћ̵ѸqtҒ$Ivxx=[ Sk ݏC*E"7*v~G3bIʺȯa.O]Œ$޳4.7K/T/`Pn]>‰qPe'>%I(iZ~qIއIVy*| <-uPl\}Kdᮭ%IRU]ӊV `T $JQҌ$IJYÈΏ %IRiu:|4G满@"N3(6v$8"&$Iըjr~}s pZ1Q1܋ŗ'nKj_d$%\q$}Z@"}VxF=ΏxSH*hL+b`T\ذ_ S G7j$X!aY5 ne&IRBy]Zgubb 'gb'MRԧ$IF V4,&']pI\?Z@Qqn=2_؍ybIT~?aAbp& /4I"m0z _۸bv?2(6EϠX$^Hb׍]Kj^l;?crN[]n)'KTBot]bXlX,Ik)_w2rQ6满{@|ͽ(b͍.4*6($M`0<<@ӊ;N[[[$M,˾wV"UduʢkD7,$I1\s;bT"%N X>eT|ppOIDJ{ZhZ~IPfbiFQ1@;].S%IDz}"NOO}1PHAF׊@$ƞζk6 6Å)E*qJ ]nŒbԘ:FN+&F']K$ћpӊX<5(FҫjxC\]]7+rme5#]K sNB?|7tH/P)NsJ$R.bN+bI6ussZ1Q1 _ 'iZ$=?W;Ƅ%IkL{ذH/؃j9?cCbICKNOO:]֗$i>0⹹CT"J$ITSǕeG^o﹆ĩ>pxx菗$ISטа} T\qi%I| k(\SV %IsB1}Ɏ T"SAɾ X&I}u w7*_/Kn!Pz҆ ='OTڠx$IWՌ+78̵$>TkIiss3kew_iQ1/6J;aVN)$E1qq, {iŐ c'I;88u20MLuZqny f K&1qwӊ%I_;N+/`P⠆$1qX677&}J䵃$I_b P7 $]^7ujq ׬xϰX@|Z"h$%]볞k% x†Ş%b9(n8Xtg߿7kZ7ۇ;<x٨0* bbIh)Ʊt`tiCTNOO a1`T Xi &It b`0K°Xi]1{ӊ_8GWFLE^heNtbI-Aʢk"i_7/B0(n8WJ<eCa.7]|LkIRy-}[}SFS'pɾ]/AV PIJ``JTZu*N-vZ$I_ˠ`:^gV t@7pnhqJ$)BgR )m^bIb+@OÙC!Ez܍ Z]n`$CTCQczZa7.$k/׭|(ӊb 2ss/ $pO?n'}_'n%!!%IVeP PBN+2_7:(v;ʛؗ;880eX\׃v%qa$IA1@J0,8dPFdY PIJ-Y(~i>:QFw+ņŒ t\N+hx8ͨCTZ,uG_K'`Œ$Vb :Qqn D'F!OLr%Iid,$~m_ũ^HA1@n.zN+bb|If#˲{qZ1{#I  b &OJRi߿^; %Ij-Fx$E{@cj3%aq*z0Sʾ~-ӊbb$mzIRO7k!V]R;ۆŒJm{Z"ADoQK<ZVsT՜V xy0bIaמ'IrsQ4 b|υ $R,I '#XA~=?bbI_Ӿ~-ӊbrFwh?=ۃJLK.^'1a( bI۩/5 NqrTT|$iyZ`|r;m'vIR2t%aX?MC̃a w$Iw_2(讻(ÜQ1PƠaPƶ%bi\Zˇe%IJkV 04*b#7R,IiwuueJO3*v= 9q$I_0rחa "@wϏtEKͨPT3}[ IRg=#sO{X!)ŒT L1*,˜V 讗2,HĮ'B`a1`T =(6zHbKRvybT ^IT~bA1@J| Aυ/O`NlT,I7R*ԏ[^7*'y$IuǛ(6ss/oɞR {P^Xeƥ88kl{X]tHR (Ļ;ۮ&duYذxagB⠸aS%Į4~n C G>I uH;?s]Q1@υOivSk+N)$%i^?IR:F5$,@jfz(/$wJ׏S=I*IfP V:$>& åC=S"@JbO)蹡bI!QqeFessň$^:kZT=ư80݁/įAS%IaeH UՒ9r <fXn]HR`1J|~<@%?Ȭ1 0M)  tJ$ I59Q`4G`ŭV˅$y1FņT Szn"'zZaypZӊ!V; rTO>H9(lv?>(6jHwT,I~o@ 1*mt %ucbV `T U8ؠ!FŒe8 iV~$[~gL @zbFg^~JYύDoR?tp#I*vm8 V_zܵ1$0,K&W2&5\Y7?=L/8x4vJ$) F~Yډw!aq.Itw(w~o3vZ1`T =,zLy t~r`n':,{10-/8؀!,7=bIRCH677˲̨<.H|cL "KKo&GEx4?>(n}CZzpZq?ga>t 1*4N"G"ysw[԰x~&EN).87mT,Ivm$ ;&?,}\cI z{S(Z1M/4(n-=QN$փQq?oϡzߥ^uOc⛋s& bbѻ__A˿N)$p=.?;7`X|`H<ww цQ1P)NAsڨXiN+tmtףXeS bH܋O)uSبXhơPQ1 ?]@I v1YJ~u~bpJ1vR hIRBGGN,~uI*ZA8HrᚙyZ)sJ$) CoiPesO(0~Gw/Y]nsZqn `\bbIR$r<Ϩ %)+780*?@Z7=<.Iqf }Q1x}f\,I-=@˓}Fw=ӊ=[Rstk+t$y`/ζhpZu\XNw|CɌbpJp6*$3b`XbIE s7;h gg =cR\7%IaA!PN 7*bbIӨ n.7 V @bKp?rdT zbLJJ s{GņX{_pJ9ʓmT,I/CP0*v )FTmLVlziN)vz\-I+#&:V9*P^WJ1W1a:iQ1ĦXʠ80ڍ^bIR]]].X5588PQRUwhwPӊ Q"@P;̨بX k3;ۮ`7=mrRR!qx)*ZC_CbRN)^]n[|bT,I/'CxB!t|]7.vTU>&7 = )N)vc٨XF;fIҵ=+.t:.G{K 4 fsШB7Jy]bIR~mN=ameѸiR!eYV!qxuZ1`T qv?R즲Q$)"NL{7KDa}BU=ubcCbbbbIRL bM }cjy6&=Ǎ Q1enEiAkI+#!&)2 }x~zq !sU;ؠ\V N)&O$œQ)7*v8l~߅\G0&i@;_(N)640*6*$'?䯅0vٰ0*/ĝRQ$|!,˒;٨x볞qq"q3hP =@bb%IFTQ}!?Br]_Θ8 H~FPS %):OSםLͅSC{J:Pzna1`T RQ$)%œV%5rZ10Ð͒nyĘ8 }Ş@ϥ %ɨbF@\VŁGN!|(J cQQ1v]ظبX1(=SeA vV]oq1N5qPcb'ưس/6(.⛋FFŒdTQ)}V L[>3.v=njݏ`TӔߔsJ16*$cT)!ƩFN3=9!q~gӊb)?O6*8O3P8AWHיn2t:.`05!rgbqQ10%ss/RLb'#IR\+`T(nHɾq;&s}+Q1"@;X1*NRN-,zr(o!1S F`TS134SVݔuبX1*=mT 8q:+uQ1"S1*$`bTlT^{Z b0*FmP÷nlT,IF bT hwg۸*>&>z}#;GnlT,IFip_``T { cbJaZ]nvZ3b0*bKQ1ĨHg`ll iqdQ1N)>z%ɨ^Cħ]FgfQ10tJ1V,I2*iU^5*(ndclL÷~o@dV @`^ 1*$cDQ1PQG/dd z~?{cggQ10=7X6*$bE}OV3*(%HwD~{N+`OuJ1nۖydTLE' CUFq1L`Dw 3,bpJQ1FŒ$b0*eTHr/'Mg 0*vZ1QQ1FŒrʲ`! M&ucc᫗<%F0933O:M`bIҸ@:AFŜbld0*ذ)N)&қ$b0*6*02w!11~ӊb0*&?|kT,IzP)|Mp?z,Vrd1cvwGwg?x0`TbovШnK@ҹ|wWc].?@Fw R\7=7T#K 8Zͨب`,wSx8]KsFF{~)DtWFYB?Ev00g<8?5KGo_ߏ^gW.dT<7° mKKoo.u3_bInƢ`0Dȿ5kDFbFŒ$b(驟c!VOpT<3԰بnJҪVB>^C񌊝V F`T\ M_bIRуD0*Tt]/?zTlX Fb%IF`TϰCV @O)60*6*$Qӊb0* _bI2*1]39_⹹`T i}64*ƨXdFӬZbwg۵9Y7~f=_Fbb%IF'c'|L)ģFsz1PYQ1Q$ɨ\C?d`kTⅅ bލ^IQ1>'S(Ώb0*ڍvmy'IF`TlT`\J9>>Fi;b0*<XdT Ut{=ADR2080*R/iwgۨXdT }ʍ8.FbkT,I2,bbRq~W!^_||gX FbbIa11*ʯ }b~cT,I2,]]],?pX˫ϣ8'`T N)?|fQQ$ɰ)uζtxϐx+ ӊ'@nK YS|nHl\ LE/` %IǨdb5&6.1F`T }6 yTƨQQ$ɰjzW,FvCרXdX ^lmm32.GcT @"ۇ5*6*$~?Zͨ} j=fnSv۪N*ZeW88DAS0Qӆ5$M:+ lkk˨`,;pZQ1S=(vw%IAtHRV3z []n>A♙`T FvרXT"1*Ĕi{:N+ QFF7$bՕM9p21> ܗlTlX F`T7o%IF~9^|z_Ć@4,{aX F`T_bIQ1)Z[Y4&d?7]xia1@86*vӍ[IҴʲ bb=*xϐظ=7]ʰx~'b0*{ߍ2t::IxUn0ڃ1^cX z/(aS=_ ;N+$b 4&aq}|uQbb0*bqk#I2,0Fb Qōφ`T Fw GTt~ߠ c ^{0 Cb 8FſsZ1@FPz܍N7n s$In 0(0bdmeѐbn.zAVY0*{?y͠nJTxj\zQyG3#b N+n w`T Fw֨XdX gS{u?{LN+/ff1*$ɰyrVx_iŞYbpJ?-M7mn[I &nQ1{DFŒ$cPgkr\ bXs?Q1@fg 1*$u:c* o nXgVlT FbbT,I2fGj~+:G{~}ꩌ =П볞Q$ɠ\W5A1N+ʴtZ1`T @u<SO$iAwxx˨$k03oT _mT FbIkT,I2n2*NlLlP\-#lsVlʨذW/5*$9bP G^LF>4&;.ſ>||ӊ"7je0*A1G{F`T S:EoffGܘ5$M, Z-? W/fEϘJ}oN'>*$t?R㽠nv:KIRcH"Q4&ƨ 0*vZ1@cx8YKRVƫvިؠ |Fp}ܷ6*b0(~샹ws֨Xb[[[P,⨬,cT$x/$44(PSΌ%IP,bTvT@/ ,-5&PFŒ$ OOO]%`ss7Qqcbb*/^g~osZ17(妛FFŒJj\ F7Q(b;kb0*bbT,I҃j ɨؠ1\{_aX FcTl$IJzݵaeTlPLJ:NaMܰس6`T @ G|wme KbbI{ȨؠT?XaX i>Yc8;̰ bcT,IңjKeTlPL*ԇ&5 ~ߝe39H1Ap1*$i29XNF ޜV xlQqΰ0(N=7(%I~rJ677}{0b<,>z}.MN+b{yy07b%Iv~GDFſ\lCş=4b0* p满1][Ytcҧ;Kdh\ZĨrv2(vJQq|O PٍaLgs>3$>FŒ$E`0g^oT\&7<>?ޫ{ Q_?|hub0*ff{pbIjkk2*NA1FiScߌ|_>~R_!qiŞbʸPuHlL<`B݌FŒ$Uq2 1*&ӋC%@~Z|IտT5b0* =O,IF/?7,cWA15Jl`< ](a8iQ1XX<}%Iҗz̉@yF^>>?vt܌n4<ͅ.nThlX F|[ab܀I^֑$qEy}2A1c }]ot,z qk?Q1j6cTbID:==Ġ)yIߎ߿p_ۨ(SCbb|5*$IJ2^lG}mmP P2*}fX Fps*Q1nK${bP ظ{>vZ1PfИبbbI˲k1f4(oX|~':*yjX Fհ!Q1nK$U$QnuiL ˩?|= V FhLlTFŒ$IFŅ>ynL `mObTl3,bD/̌+PE ȊFŒ$I-zu11@:3;lLlP\'n@jT,I_+su11@cmT F57cOO+qըX$ɨ8QA1@nt׽OX⥥`T nc%ğV~<̝⦫Q$IBצGo`WN-mQ1@b_u'yl{`MWbI$}Zݮkc~j5_0,^F`T Q!q7ӎc{PMWbI$}Z_Wip?@x'ymb0*JCx=nK$Ae.O +$ğ ]ⅅ  \ss/|,ȇӝRQ$IBy]]7&` 'N+bԘpCT7*ƨX$IU;)ņKzO =nb0**1op\!H%ITQAQQ1)/OP^@Q1Aĩ 9˾ɕ篭,Xq^>憫$I GefvμP 4*b4) bqZ$I ֖տ_y _2*ƨX$IFŔ 0,r3F^4*$IӤ_,3k~bbmT F%ivL|sѫͭA2opsuİn[H$\OҪ|a __bbb0*p:qc\F8؊G$\~yGĿo>oiFżV9bBčīM7J7bI$1(MA1P}9od<=`T <$> .3|B$IעGoujXʈ>H77,̅Q1`ficn\ v7iŒ$IޠxگM iC ;8E/O8sM`T 01ss/>$v#+ܛ\}0*$IROvT|Ը 8VeH5N-(Fwi`T ncTcOGn^3*~\H$ByMiP <$}!W_cbV9'0*xPcb7ߎ%ITlV+וpA1Db0?|=(>\Ш9Ӊ'uVi0*$If)Rlϸ{qnQ1@5N'vc*\-1*$Ifz=qFwݨ0$L56.*ӊbN覔Q1%I"/ QĿo>1-Au7.6,Hb@Q1ӉSsbT,IT޿xuiT 8Ѽz}~@733O 1A19bT,ITB{b`cb#pߪbG80**icb'fШX$ɨ8${Fŀ1qĪ8.aFQ1Q=fTCbI$^i+5.~]{_ lQ1@~ 1Ӊ,Q1FŒ$IFFŀA199ʌ?b0*ENtb7qw?xva1^D2&YFzZ$I} eT f caqb<*vZ14èH~$IQS|O2qq"7 œ'6(Y^|nTLoJ$ɨب o'qq7owg{Vc_K9;|ꦐQ1V,Ib ю˸^ qjc4*bpss/l1*$IңAν|=4*F&qӊ/zP|:ss ,b%I4R 1(PIdAx~'b0* Xdߍ7s_%I };h~Q1=(vJ1U;̿Me|Ai`T ;(vCp)&bwgOI$=(vJ1azZg{bܼ!}J$ɨ8CIL1,.{Y 0(1FwM'cT,IWՂxR b2,v?Q10Iss/yUY^>o@ߣE$I)@b?;*[gw>q},4v Z''@T ׵kc OB;}@C0Z3g'c1FT,*.? Wghk[1i;1BMJc1ƘOV**VT _-}&@bYan+v D((V.Rc1fpc[!͠?9m;RX b AOQ y *UXl1#* @zm! / *R V}WQ1cXT I}! n+.3,v`[1$Am17(1c.9ZMT <&.oġpɰ̿[:δ%  *C"P|P%*ƶbc1Ƙ'ˢbH#(m)jV b 4OO6>yDdavzb]c1FT\n1VE (ۊdx.,@T pG~@%*o7::2cI$*7;LҶbD ˄Vl1c.6ZMT $(}"V\j89(EA?d5c1??튊AP E:G@%bDvbĘ.X.6c1Ƙ8^[]C@AqA im+v`[1@bA1EB|j[1cEŋѾru)aYf'VbbA1"LQ1Q<6c1盘?!X o+.-,vd]X /}B2HV[czttTd1IT|/-ŐsX,*2D@_Y! E1m1c6ZҘ5D (\zX\j8x[q\X HOb|%*&r{C}\c1ƘMۉO[[]CQV\FX, ொ/aD'bc1Ƙ(ftt4ضb6({N$,e؝2D@&'ۑ|`BDo@ll1c?)Ţb&(~p 1'◍mYo+bD@Z^oR1cۧ- E (xaAۊ@T ?x=Cnvz\$Ƕ1cypBa0o=8xdۊ/@T $׃ ŖVl1#(=결JEoT /> *łb| jVl1hT\gQ1 /&}`"w9DDc1Ɣ~BT m'ۊs, H[T bH^<ȠX`cvz¶bc1Ƙ!OVg ř *vNQ1Ė0u *ۊ1cJK:i7 3AT޿vα *bAJDc@Md1Ƙl'bD"Œۊ@T AT gTlc1&XT b ݨx=, m *ŢJ|)VKUd1ƘVe\b_ThmusJQ1b "ccw]BTO:sc1Ƙ\8/皝D%j8zQ1 S?&]?Rz*1^ZT b;7~׶b16.+KE~io{ݶbc1ƘȃbQ1/AT*(^hpQKVl1.Q1N Q1Pk~&(v P?`c[c1&xvzBT ;_ ,AT ϽEpXG?PZR =Hc'ATL1*Qq!xn)*@T TR b{S1cLspp`K!~x"*!|XqvZe]X (uf1)*FX\sc1&%]zE@,$Bαl+Q1d#[!-[׎Ow b^,,|",@T ܄ωwiZ*&c1T>G_֣۷n j3Q1Ͽ_Q1p~*KxNVl1ƘfnnK*6* %(~p #͖♩,(;Ul)Q1bvz1cL{+RUL\{G 9@ۊ qo).4P#c1&t:+yEv[bD- *0::h2cL%{gh_C_*&,?:EűfKm+@T R bQ1c1FT|A DŔ~x"p_ĵ~%,@T ؄K#h+,6cQ1A7QsEۊ@T iDPb>4rύh6&c1dvwBF _~ *]j¥w<7.Ν; 'c1d@T̠b덫"FwvX[]vvQ1'IbI|`i(UT:c1fh#&:*vngT<>Q1WwRAT?X-baV bm"AKMy燰c1<_0&*1P;Wi[{r E *Ϗzc1Eh^;eL|qU+@T _&|\# {Vl1Ƙ$r }7 Qb@[?*reIT o3cI5(>&zظ,(m񉝍ع"@0f'*: *dEŐe,鹂ܹsGe1ƘKapSz?,($=S"bDLN>{Gbm+6cL˸Ź_-}vh/77ع"D`KL *c1\tfpv <"."`@Qqʒ*Q1@T\e!Dz(1s }s*Ń(>"bQ3E8VpY/@TlK1Ŷbc1 rjXPFܸM)V b:(R bDec1Ƙ/+Kj31@/w{gm *[m)Q1x13 =8ιc" ~W4 l).5~@sa1b+}ȀDL/,6cL{^.Gx" @*Fl+@T Y|O)*>,fS%e1ƘN([B8R}'p?b[;t(bcGB{ҰdnnN-e1Ƙwxpu OB_6:8;HHh< *Q- *,,6cLAq*<.(b_ ۊ8XDxTj)1\T\F*\ o#| 9DuP\D~^7)c1o=$>)d;0ؖbrl=Tp&**@T AT >\=M1#(}rł7l) #bD *(( 'xc1N'!qᗍ ,_ @T b~*QCG]?reIXl1Ƙҧjx-k BOGą|"r 9<@K> *[EŐMTgO9UF(ŖBc13sss\7 ([7+rF**@T HbKT11cDBx\|qEmT? &(N5@Lf%ؖb(Dyv~V1ƘnXP @Z,<@.g a1bHO}Q149ضbc1v`CV l)C= 1#(HP @"ع!@ۊ@T,*/{&*6cyO<$ yA1{A{Γ2Vh< *QR9opc1&ޠd^.WZ$*Pbgm[1ba(1q՗=ͳݮc1 [}Ń 6 CᚙjXX DŢbfaܜ*c O".R `[zQ1EpvRLUlZ,c1FPu賶DP,h@Pgݵ@T bkxx6c1N}b D@T6{@Xl1ƘwM !vk0A1⡽֘j8/W/@T,Dtܹ2c}ݾՀ۷n 4&-(vNs *QN$rP?׫~>nnn1Ƙ@j}mu9XP @7;''* *H/bxb X1n=sc1Oh,E:hė5\6F'o昝pF}\UaqJX CPPCP,*oc1bAqZ V^ cV|;D *vى$s = ]cLjzО !AFccw ##7b{_=Vl1d8m(uT#$*0h)ħ_{m;V #PP\_>$@P,*ۊ1#(mAUbIzԩt[q]<Dv-|Ac1&8!Ŷ0hlt /[tKm+@T H`|*,6cʙV;{Tg}am)Nl ϶/_Q1]vBP,* 1Aqsv|OeK1bgQ1~TC{.m 1ƘDgnnNP<|Yaq7cg@4{ Q a1bأb[XT n+c16B}$((϶m+@T  I~WLveIXl1$4m(>yM>3pAmA[7o68gz[q\X D"H¸.&|Ԃa1FPkPc-zm *bEwA\Xl1;VYh G;WXIN.= c3(uKq?OA1bA1@f'*>í Xs ~c1ܜ'CEwDn l+Q1$cAdOXl1:<Ԡ/DnbgkA1q? *s J13 3cgZVЯ/Ex0A*rog]ۊil)@v){bc1FPŗ"6Dn ]73?l+>[Th< *Q/B_Yrxϩe%Cسt:2c1Yܜ0L;_R ~޶bD@QNĂb)g3::2388=b#ڈXP @gbD *@rIG]1w fSqf1& yCq̯Oރ Hу{_$; ϴF㹰Q1]"SF1Ƙ& )l))(}K+Ʌħ_sgkK E}ܸdHY#g}%bD *Qۉ= ! Oc1N1.^/A1(ܧ@> *QA}ce1Ƙ&ܱ^**p9ą;^XX9HZMf1FP}-N|wqD@T\3a=/(7@t@2cŃy]lR Ăb= *Q }zNAvc̐}JR|Wil)"1qۉa˲zQ1TadF_TLfb)HC~mll(،116R b/睽p/~)=,vwQ1R,Ėb)HY lcřpV;_V덫Y1:k`,x,*@T b${N8sss6c1L~x"`C~e3Ѝ9ąu+ B{zʕO@T,Ėb)Ǣl*ی1Ɣ6Nl[{ {ߵR?K Jym ?E);1ƘaO̯7 Sn!*&~u@Ÿg##7?km)FT >czeo{=XP/?4M^Cގm@T,~Dh"c8WE}%*~yОw^@VۊWbD *h+( 1d<ѿ~XTlK1@4BD뇵e$V b } r||3si6ѿz̖b~0f''j=/*Q lϸ8߅cy'{_dK1@Y~?_;8dKa1bۤjK1Ujx,B@{c)(NjE5 5j鳋apBA3Ŷ *Q?m=Dcm)rrm.,$NuB{޹΋E?EŸ۞_ExAXl1t:ɼ>mAUq"/?T˹bb_@ׇxf,*@T rx~I}1szR b:P\v=@T,zӝǂb/,~^Xl1FP,(N>*>ċ@HD\$$am@T,z$͛bLŅ~ocs677ޯR D511_XT Q싊IK;Cl6uѤ &*sqUH̅^J QQ1R,z$;cL__EC yÆ`EH̅_NO8 ;OwV DŢGŢb ́c9@-@Ȅ\ |^m[1b[/*FPn7ߧcҘZ\<䵆HU11,9RRT l)= Xg1Ar! a6 "~T,,@T bѣ/ ߱G]1l+v Q1e.'ǶSmivJ;^_-}&\o\Y7iZt|R.?bw D *4"*{ 1]888P-c/^xmJRl)r|ܸ&&TqЯ1f'=y,,@T bSО 70cBŬ^6 g`@DbHXzX2Kxi[[]6.zcL%Sղ{MZ|!bfPlnnzAXX|}(9ϊW[X *ۊ!cĂbbfQiQ1L3==-,xd䆨@T *AC]݊ꟃOw{XhGc5YZ4sb{ ]@T ضb2l=D"j17y\ݾuSL,(_HW@Qq?9DT *߮jX"<Sl(ͦ:s)~ODp1;_^ 5Ik(3b D`[QqQ"`*1gwF9@NOwYT '&>ΦQ1b%#T#cHSVH\xwυ.Q1Rռ@/Q1bHVbXҖ|HK):J}L|:$.88Dpq?wOP싁63hQ1bHg[ [> r@A)/^P c~kLorb%Yh{-bD *#*b13::eL<;=orb힠kgssә8,*vwa1D.k1P~/,Z,Z0&ucaf ]b0A9bmV *Q[&sro{cdT$0n%х.Q1 7(s^,&!)>[e[@T bQ1I(ajJc"yVbdT HAP,*6A^@ۊbHObt籰XT `kN1Nׇ.sV wŢljy>,,.ۯbX l=Esc \ j߻EPΖbg' /@T bea`([ƘaA1B{ߛL5DPaP,*pŶb *Qxa @[:IŵZMY`Lɓ{L쵠-Ţb?'i66Jޟ|",X _Yn7&5c;ٿQ1bM_E;ƶ@T<ԋY3S 6#*H۬Xi`;^ AT O 뉊Ma/^>:*n4 DSXT t:ܹs5 |/K=^xk&zabXKT oؘxp˜}ۉnK؃A7|c["*>yT|I @T b#b/Q1@v{ST&zl1 Q1C{mYn^ϋ0a2pnXX *Q/dL5$|d6w{.D (NS낍 ۊ_l(G%՟ D *1"DhcBQJ^N Ԩ?eP\To"- uVqkeIA?2rCX *QۊEuqq)xy5xD̶bRQĵZ-skۊD *vL5Şo1Ú^ՐCbCZ,xttTDw`^NOxEŶ@TDŶqPBTe8Z?PF4< D *v!$\6PIH\^Dm'pj .>uOX"DBFŢb[ŐHD\z ۊK7 W >*l|-%؆C?To`Т'bQ1V|rV5R/* s,=v2z=XX3Գu-`Qn+bps XXuP, MM|3mۊD *v D/EOV0EmbT`EEfaq{IQadžOYgu3S -ⷆKa1Cb#)Z[]惉?%.@R_$,G*Ap4i6&y8V]G@Th<v|0"}y۷n {+E&0YDba1 *Cۊe{/r{A^A؜Lzbu`[k~b xvza6>+*qM+(Rй9?`u|aze߶b(Gɇ0Ȩضݾu3ɠXT,81eҽu- sDb@T p[q=بxf0D:犊O Ţгo=vsR+W>b`PamŐ+K=/_ŢbSfjD'aq$%(C=VLQ;;xl쮰in+.lg'`㢽A_~(~d@+b:Nwv^_@EaqSX<6vWX b$bQ1Vy_V TՔPz=zOa;H6*v 6hCU6Ǎ 2HP;V,,D@QQoPȈC/bqqDnQ'ʕOH3*vEs%q8/s玒2؈XhG _wxm.8k#^燜شZon=x .,D@QhQޥ,qqۉ<}Isͦǎ .Fw\6,vwa1 *ҍv\Zև .1z'~D=~6;=UXN$ *k|mŐ7zn)l. CxZ-%espp0Oو;?eFb@T $xmu5R>dpSiL?SgDtSbSg^XX Qx=/'$.<&y/knn9K Q1fT|ux\6TNO$Ϥ=^Qֈ>eWiE.VR۟3S ?k{(ugt:g **,v?b * yq#bmuDRR Ew *hT,,DDQj?yTgnn7#,K"ˆ緷Z$+DTlb ͦNJs>2xd䆰hvkQ4*j~OoОbۊAT P/goUbTjԓb#+,n_ Q1V.=lpi~̥ۼafa[Q1 ,@X$ *V|r[D. ³kQoU1c?ET#p E~@gÌ Q1ndF?ء5b?cA*t;VbQ~ܹc[ *DwV *ۊ+]"xvzkKH=#2b/=fT,,DGccwbs  {ZM9)f~@~޶bQ18x=,TT @Nζb3zbT%E;FT o ?MHi~/@gKa1 *]{ۊŕ.yހxB9ogDO%|2bLN>I",>Dpm+6>j֤xY *ZT,,DJ",vx~AJM3::2V|X aqRX 7[:C Tc[ TkҍН/=),v_v C"x=mfxoylyLDۊxvaqq`lQ1x-4E9Il+n_ Q1FX\\/ =+*j~Љ  db$Q1}X|r69|3:sjR,GFTOb FH؈{n᧹h,)*6DWwm+8+>DEfx軦\UE 3zd䆰 ?C@].mQN48ԈsJۊQ1ze?ְxmu!6}+hw4774b㰨XT,*甶ba],{l+6Qƥ~xbgҶb@T mrI_X bZq3z|hͦǗXT jV *ۊzT<\,mQ705bgҶb@T o|~aB{a6xb!kM.Ët^x!*^SGKa[+Q1ֶ Y.e!*Ef1\T V *dۯb@f'zQ&YsDřMV9&xd䆰VFXt籃mnagXpc̿8f[1?xcD&Y\\;l+@}a1@TlmŹMo=@T o+N+,j8f(vAgvzQό9]1vppYH.*疡Gb@T | ,(ˇx-*6iDFT[V ۊŤD&дj@"m+műOw;f˅nmuy\b~~PۊWb@T 㰛>8({<۶blnnqtDŢbHT#H@T EzXОw@/)3<5b ˅p~KyƔpŋb@T *rO.{qVkˢbR^VSSu混w;$xX\b@Tؐ@a_v.{q'jVl*^7[4*{Qh_sOgPޥB<b (O6e8@48DN'ٟ93ׅ4ֵkoX,.5ÅfQ1֣N\tg~|Y⠣v|1!,.қUT އ ͇gss3Zϴ\pm ˽ОwP/*E&mgUlĴZlRevz"mKa1!h^T Q^/6q9,@_h[1 *l-8Q1x/n[t[1>{[h E8ݰX**L5JWlk5yMb^Ow zaq?9DX brqqEqqqx|, ƶb=;HLӶb@T Ded䆸Kt/&{H.U ZÈV|6i6 m'Z@ |{K;m+6c;1ྑSVd|"Mb^ 7#?Üj] |+[YmB/ mżyF#YmHObq6"$T^ DYb! *hs8m,]wz-zVSf8Ny^Ow}m+D@n\DdxSgl+vbQ1 *8xo{=W/;<T0޿7MŭDă?ųޟ|",Q1ek4g̸О~7{ۊ /3i3s~qi[1 *>0# ϳU W*y_Քgt\T˶bw@T @/xލvAa}9eH\QDDO_~[@E;#(1${@T,,Di_m0>@DFPT6zAq1Tgb@T _/Ɓ_a J/(rAij~7rq\8j6 *>gX\,pD$~b\{STLp7z&ՐFbgb@T @/Ŷj*^ABbۈT|\|aqh<XT n0AŞ6m+D^is*l[X/b]q*Q;#*9B{ óMQ1 * j##7Ţb訲oNt1@V,*Q1CT\,2[^m+8Ơ&$,Q1|oƢb*/u:XP V ŧXT FT|ج sMQ1 * XT,*.QW%tŢbf]j*_Q[cq @_xި^),Q1 ֕+dr𪺄gŶp^G]ۊQ1亹`muه&fcoQILl@_(*Q1m+h=yl[vb|Y+W>x~*. 7{>:$jQ< /JD0cE%D%pl@T T%0 /z=[avz"/?bJ*ʭ.`{IJ8xttTL 8ϴ%ݍ*.varwvsss6_2~ue@T 1E\,*z8ɰB^UH9@/,ST bDT\\J`vOt:FV~#♩b֋@b[s`/%,.^("sN HAq9D+W> *.p*,>GQ1xa{{!/ǰ8BbRbQ1 1Ob@L1 @gb@T Up.1.v9żJ @N_@T ;XT }NOx2XX bpsbVlL !:V  ù?ӊ{?Q1DidF߶bHTL| {F),\-\(bQ1 $+KPFۊ$6 syt *Q1P{L aG1eDPFPTE 0t$!k]@T,*NHF##7<^Q1޶bQ1/ _Yox 4,go߽ ~8r/8GQ1ANO@"TT`f(vU?;agt_w'CYXa;bۊ A[; Eu{KX#SLcvx3i-0EAӰl)G,SG*pA.h:µur6q10ϽuKz<$qQ=qE4z+ůC\GdFd r׊=@\=}pwN@|n/ uY&2N 1 *kŢbQ?bւokz{>bh⍵"@ՐXKbD`Z1PDЮ޽_&I&{ Dv\<l Q1X+bhjQbh]T/,* d@T ֊؉aXT Eqq^Q1*I&YQat|/,+q1 *kŢbfDg,Q1 KQ*,&.DNg3V AT ͏WWQ1X+_p@X Ka1 *QQ+Q1b@T qD֊❟,IXK@T ֊ǣcsEb2Nn6 DΨZ1XU07+>Q1W;>Xܗqq).D֨Z1pQq{LS62. `8|VdQ!~z., bD`@T,vQVQ1 Ըb.*>>ax#a1 *&V ҵ<.u_~1aQ1a#kTT:No qq>|sD1aB@(dǏV]# Q1PZtNu>a1 *D@BWb[LbQ1zT|xxY+PGT|zzunb_ O?`bksUEŝΦD@Qb9הZ1F{ E5vwwEDŢb ܨXX\1WUT,,Q1PzT/$*b^g@ bk\Zsͽ<зV @TlQT\GX|zzub֊_'DX b fVTXzDΉ_ܭEuι&Ţbb x6AkPT,,Q1 *D֊:*V b1Q;=z8M/ *ByZb\1g@ /׊=~_RGT|xxuNT zݻwWv:6*N a1bkuk f٭{vb@T 4CQq1sEǹ?bVWdEŢbkQb'(nf8/*D`XX |-,VoK߿뉊Q1F֊]⿚f D@Qq_T Tb*V '*=zHT Q1PZJ~Q1 *KIVdX,*ZkAoaGڨع6/{@T @TlSX,*vml8M/D *DXX/0بg:@T ̊ E[+vQ1X+2*Rꈊ?~lu;eiz!*Q1дZ1jTl؅pŋAE> b@T 絅ſ~rvS֊ d"*Q1pb.;<< @[)DUfh[TvVąw:bQ{1AbʭlD@4QڊZDŗөյ2,kXzzZ߯%DT b Z1Ĩk˭Uq!R  O+c`иXXŢb@T ֊9?YX+vUaDh%kΉQ1AT,,3֊kMX,*Q1P7bb箾Ө$@T ļV$QuQqas֊b[+ E@T #I&b@TM6N.vb@T X+∊C V\lP&D?kbQsW۷ob8izY+DY+bV,*D E *,I&??QsQ1kb ZYZ@Tݯ뉊Q1ZqQ:*><+ E>t6k]+>?Yx4;*fU'*DZ1;Qq9AqAT G??hbQ[)DbOΉQ1(p;Q1P$d֊2uεgXT k@ꌊݮՉQ1@Qb[+vm?Yx@Qqf#+`{@QqX8R\DP<bk{;[Q@Tߋ/J bXh7r+>֊FR@T MSo˂bQ1 * &y7J1 * $׊=qVQ1PZqXX 8>X\흞VUP bkDbĢb@T j0خu`c ) {}-AqLD(soXJ>2 ,^lJ1 *Ţb8<^O%|;<<GQ1DT`wwW92AqAT %Z1fYCn?b@T ԱVw&*nVRs,-,6*~^/_~vob@T X+DŔPL\CPFP vn׃ Z܊B1 *Z[+Q1aN,6gQ14X+O=!rwxxؐ_?b`[P k֊@TL;zE_En?bNgSL ׊ώV@T Q9IDbk *HbCD+QΖ@T T!I&b@T 7BP kŷ=Xbk\{;[bbidյV) 6*(Deba1댈QJ`l@T 1q1 D@?mZ1pS'l0UK酠֊ {-0͈|H49>o,0N "/b, *.#XoNgS@뉌0izչV,,f9;Z矋s@B\\TL<l Q1`hУ?['Dw$C -[.N "_+Ȉ]_>'aog˃ EC\Q1@֊/b. *.",t6v~ڈ8FH {tQ;?#x"6`iizY+bDl ×bX֊=ZqdX\x83D%_cxzxQ5q<Q1@k}k@7Bt67|?#Q1PoX,*[+<:>$_޽_Eb $VZq ,Q8 +W¯-`]kXDŢbDU|SO!*/w:bDA` 8Ϟ>V b ްh$*Q1`Z1E *<*~G[+QQ1@dյV||!DŢbD֊QQ1zizc@T| ,@T `7*V ֒dRZDV,*Q2Qq>_n٬|XT bk"_+@8hOT@KY+Q1`XT 7bD!GQ1q|oD@$$V %*Q1`XT ba1QhصQ1MEVUX?>lyX+Q1`Z1bD7$J׊=Z1b׊E * *IYZDEFūoB[+Z1b ۥgG 1-Q1k֊ fEd>XZ/V/5*X[(bkXT bZQ EbQ1b$ɤb3 * *xXT ي$, *:*~D֊@T,*Q1 *XT @T,*`GiaQ1Ғd~bV?F-<x ,@T jTlD֊QQ1@YYaq 1g@TTTl X+⍊ *(DS<88M/F֊VDŢbD֊Qba1bDůPbklf֊@TrTbDk@TlQ1@QbVk>`IizV|v`1*^]}#,@T `7*V ܵ⽝-6 * *V ,daX,*@T И8h1*? ,+M/2k *hZF\QbDt6K]+Qx *hZsv(, *(`]Z%*Q1W֊b'DT XT b+5lV,*QQ1@k}Q1E7v<XT  ̰Z1E$B׊=XT  ̵⾵b |Ϟ> , *hZ LT b֊/b6 *ZT,,@T P$VD֊X+D>}7 *6* *V D[+@T *Z酰Q1@?/*,-P-k *V ΒdbDŕFiz!,@T `7*V ΦbX+]X|vbQ1b$$+:,bQ1b׊PgOD,<@AD *n2,bQ1bȣt@T,*@T $d֊@T,*@T `Qxz%={$> Z1Z1 Pk * *VlDŢbDFv` 'H~6 *S^d֊ L֊@T ZGXxFVZj6*|84<rD *V FDa1bKY+9;ZX+Q1@kBba1,OT bbk *.>*t6b]+R;Z1bkD͎7V<@ba1b`$$V bQ1bk֊@T,*@T *V bQ1b`EfDŢbD֊XT ɒdRZxzGa1bk@QbD֊Q1Qq>xYZVn'֊@T `bcTl $2֊֨Z1bk@+Q1b ިZ1bV,<D!HIVVXD *|haT< *3*V bk!*R@ *Q1@Qb I2ɬXT Zb=DuKӋZ1E@T,*@T df)kD *V bQ1b$֊ǣԃ@T `铈⾰Q1@׊7V< bX+QQ1et6K[+RB#{@TuTlQ1@c$ɤ}C#;Ma1bk[+Q1@ Qq_T bQ1bkŷ ިZ1bQ1$Z1x"DV Fŗ'*@T @Q6zIaQ1JIVfX|vP@Q1bQgQQq}QQ1Qqac }STgGR&x4Z1bڽV|hǸej!}[VUaMOŸ-&U^Q1$Z׊1@sY` * * ⍵N+x}GbD֊K ' .hҿߋ`Q1@:׊ώ-⍵*;bDX+^/A1ZBbD48*N `؛  * 󓅇' Dń{TT|!O4ٳOGߣbQ1bo" a'P₱߫يE[+k,D4*.. TZxz|@TƗ=DZbӢ8_{@T $Z1 u?m{Q1bk֊=}"*Uq,l8|%*@T &ΦbR _ 7V| |`Q1֊ &6|-| *@T O@L͉ώ&q~{Q1bk֊@T s_ Ь(@ϵQ1Z1aɸ` bDaPO|*M/2k *󓅯  *ZbcogKX GűbKI0kQ! d-1Nl6k&,=AQ|QX Zq,ohvށX+@T b?Az^O7hk HQZK *VJ[I2 *GkݳODN\h\]_QbD c`kgG T4>p.;==mlXk * *`Y!_~0bʹFWXT ֊+ݮbQ1b&ĵ󓅇* LSŪk=~XX *@T @q (*P* 8_bD`ZUjcmET_aE7⾵bbN?cXT p> /Dx)GԨ.o}DŢbDY+~z^x0\v%EjpX,*@T - &,a@\[.8|MpG᫠bV +Ή%W *@Xl@Giᡀsޒ^k * /h~X|~p@smSkBdQ1M6l{`Y,:zR{Zޑ~zk`XT kxJs 8?}Q1b@T\ ŋ#:} "P\X\oT<;נj7`؇AVqu.8- /oxJs Jޒƣ<@T 5V 0@Tܝn6yKDŢbD4OQq֨O@T\3o:$,铆ŢbDD{@T\3ba1εbQ1bJ 닊}Qsޓ6V|D`YI2V 9tX *@T ع@o:zO3 pJX *@aq}k' YԲ2+\,֊@kŗ9aT EbDVpcWCBQs͸tbQ1bD>@X!s[__jQQ1t6׊Z@T,*@T b@T윰IQk# *@T MAQ1(M/ⳣ-DΉ# *@T K}ZsT *vNX=  *%$b`6)>+z$@T,*@T @߈V|v@6֊kY+DŢbDh0B =pPv +ݮb@T,*@T @ߌ~G>ع8I ,@aqkgG ]bQs 2֊/ߓ|k&5 %, *;+-{Z.roj}Qsq\+=icmK 8I&bQ1To8|DX|~BQ**v.+=L Z1,{j6)<(*bǽ{7,?? R\ݻwb2{;[֊Q9, *;+=h'Z*aq3AQ1{ez=es5]$oJ@ QpJX *֊|JsͿ*ޔO  ȰZ1b\8Q7%ҳOVIbղV|| @T,*vNT|ΖQ1맨o|ݻwNj^M ܰXT @s>zS:>5|o!*@T E?TV?|_T율f{as ]?dw>qd'tKWtᠱԤqh@FzHXk$˂&@2 n1A-ksN=GztuW3 wDŎӢcEHb[q沿8iGg Q1b\X\E 7p_T8bۊQ1bS}. Un;, D⬶ .gggNifIA< *a1m8NǶb@T,*"TX\eYC1o7v_qDXT ,uņb.R8ogHAq< *>g]/(vQ7D@X q@ԔD^X\;_/(vN]󣽗cQ1LZP/*vQja@T Im+j.~IԔDЮ"h ^waq5KO>sGbQ1$ofCQgXl *va=<٨xs}1xa[1bh Zea1@Z㱚q*t_~\T hQ1b*,~$,pߖb ҭ^T ?]X *ۊ.kjjJA8 EضbQ1V*tba#a1-Ŏ4ۏc6V=N" *|( vSSSjP 4؍1*6QQ1Dk m+qb?e_ _T Eb;[a1@[EŎS }[gEy' Q1@X|m'biYT<==-*DŶ *4b8z.;~T\y *`r GKbiiT<55USQ1 *_j qqGT|mŢbDT x%*\6hҾ-ŎǙ cǪmbQ1*,.OAn0M`W{cۊEbamn);ᡨc7E^:5ZhwbǙ y[g;@T,*@T ŶxQٳgOǙڨc7C&ŢbQ1p'bmۊ@hePlK{&5;~ )XX *l+D/;wXjTDŶ *ۊ| e~n@p9_T8DXT l+b$/OOO+='>gjjjbsh 8,΄bzڶ(C9@PlK㈊ϟ?smŶ *ۊ]HR-I',s0QqQq_ D]FWm+v)HNmI'*.5E *7*@T <`[qR @I+*>T-< *am_E22tӧcQ1 *@T 0,Ŕ]9@Pl[DsD@6V#Eb:pڻW^wGTlnV,*l+&~9{Q㈊EXT / ,>=1s~{qDŢb@T(,vI KJO-Y*e-ۊ]T\qDŢb[D@ۊ׎EŎ3Q1 * *aqUGKu wstD@6W" Eb`a/lml+?sQxzzzbȂfGT,*DX N8?sS#6v>SSSb@T,*@T m  sxx8rۆcQFNHpGDDe!,DȧO>~3XT x#*@T Wqeydxq>Kox;a1H-,ec#*V *EQ#8vDŢb`.NvV%*n&,>=1DۊEb[bbA1;)Gc\>pm8#{a1H5*ׯ_+uEŶV *D7GAxӃA1:<GT\\bD@QӃA18;;S6|TD(.P?Q1b mbঋbŎ-s'Q1UP*:ߵR%aӦؖb mŢbQ1mbSlC_#,v rT:uEaq5?7Ә66",v덙l+sif"L\MAqܑ6V>?mu`숊m)DZt: Ea a1'+7t o ?n+;/Dm+@szc ^Jhyۨxs}EP\SD&S5炢bD ޚm u?9;;2(.hA1Q1ȶ,ȨXX o>?m4(X}RˣG_sBAx< *Ŷ@hKD~ĮJ=,}sqH5XT Zkfmyd}WgjjшǏA> E?]X -R5@Rbܪӧ<QQ1~Ma!. Nvkc\xzz:A1yQ1^o-ذ8M>xB h< * *~8s\F$M޼sCQ1.z``͊D@;eBX .O5cgŘ%|hyd@S ˿ƪ3;wQ`cc@T,*@T 9*\>+yMos}hCqq<5G~vETKbS~F.# O.X,>[\ăb?XT H8*xدޒt\,m>&^-{g \1@T $? ߽D.'6rUnm{\,& *"231,6l ĸPP bA1{/ƾbDދKG4~! ^c}"GbDmaVGT&UuP<,|π/7Vk۾^bQ1H]P>EDw o+ *ۊ]KU\/rk$>DŢbQ1zBX aŷV *~hPvm+/,^-D0ۍ7łbQ-b{ŏ Ov #wAa|DŢbQ1zkEaa$U_~RVFʓs *Z8.*ІQQ1 ,HP\nST $,~$,5GK6в8+bQ1fy~Y? 'h"(آbdDl+3,{16֗m(@T GRPKPlC1*|*XT *.,~eXlH ђ'?}݊nwQT *Hc[oT{ xb[Dm+vk{/Ǖ\bD8xydX rz yaqVFWbQ1_u: Eaa%PUTʾ|ԶbDmŷ),h*.q{ Q1b@TAX=57TT,,|c[1]{/ƾ$V *.mֆbDVl+ AU(6 SV Ede$GY痢bQ1@Hۊ⽗cQQ1@amXT HVܶbQ8/bۊ'{e( 4V *hte[1 * *ڱ8⊢<B ӈ`h0*@T ,l[1 * *ڱ8K"*5QqQq_ D!Ŷbۊʲ϶bQ1bۊ3ۊQZ_@X~T,,QQ1amXT *HVh[1 *ڱ8dװDŢbDņ * *1,;*^-XT g:ۊQ@T ЎmYQpXT ضb@T,*VpT*\_1pQ@T @a+boQ; bn,V c[q&*"o@T p⽗cWR *b@T [[a1T@Tl[1ķ 7|Q@T @Qm *HXDŢbQ1 o+XT *Qp@ʹ~QqVoDb#/ ۊ[V,*Db r[q9|85Q@T m@\T  FUۊ c[Eb*V @T,*ЂdPDw6,~\Xl( \_ *xrQhpZXT *b@T ˲An+5Q1bl+DCT޶mCZhƪQ1mŶ-ŢbDbQ1E.x۰D *@T P<ʲEhagEFT *mYPQѮ-hkcؖbQ15ŶmŢbDQ1V-zXl` )XT *8XX )o+Ί~@T @ff>V b[c[qf[1EV-?b[ * mG *@T @պEۊ@T,*@T `[DŢbD DYQ˱.`[1 *@T  *:"XT bD$\!.jTl[10AYe[!./QW *@T @aA.Dob3Q1m+@T `[d 7Q1b&%>V bQ1bvl+ t@T ɇŶXT  YYm *@T @-ۊƢcC] *ضbEUQ1b~n4* EbQ1ۊ @T bۊ@T t: Eۊ w@T CMa1?5@~@T @t: mЦضbQ1Qht%, *>*5obۊD4*ڱQq}x@m+ *Da6WRX *-Fo @[m+`[m *@T @Qq&*Q1bl+Q1ӃaDŢbD4Y(l+Q1bl+Q1⛣ba1bQ1b.b *ba1$obDbH7*@T @ku&gkcUT vm+`KQ1-EYX4_  * * ma2bQ1bD * *8Q1@T QbQ1zǏR FŏNgAT *@T,*Q1b- ˁދ1ZeǿDVR X (,b@ۊEbQ1t:bQ1bQ1bV,*@T,*@T DŢbD@T,*DŢbQ141bQ1b)l+4nwQX *z *Q1bWzkbQ1om *Q1Mt ۊ+m+mņVl[1bD * *@T bQ1DР ,,@T o+7ŤrXbp XT ۊ@T,*@T DŢbQ1@T,*7:baX (,mŢbl+ *@T bQ1bD *:baq9,rcDŢbDV bQ1@T|8>D *b!DHT,,@T\OP<]DPTl[1b[ *QqAqFT *fYdDŶ * ըضbDŢbD@T,*p⽗cCdDŢbDV xQq}Eۊ V Ђx~n QQ1FŶ * *!bQbdDŢbD$XT @6WD XT bۊ *Q@T )DsEH5*QQ1bDBT:`6*@T {X+_~v-*@T bQ1VE:*:lD jTlCZT Qb?9obۓZb *E֊ *D֊ *ghiV PGũn0ZD7X)@T QbkD`ma{ڡQ1bV bDEE;*y#,9Qx9vèZ1D֊ *QQ1bVT Qqߢr -*Z1Sy#*XT { *QQ1b *gy[xˋŢbQ1X+|XT *Qba1bD8*V Q1@LJbo D`Qx9zГZ1D֊ *QGm;xŻcx9|QbQ1X+V @bQ1DŢb7DX *I=,}_;ƣZ1[+ J@T bQ1bؓ bkb**^/`רb[+ nTl@T bQ1bD * *@T bDŢbD *@T,*@T @x]X"ŢbD Z|yq o<\iXJJObQ1s8Y)ucV@bD`XT =T7Q1Ni&_+˹8OZbbFx *kŢbłbQ1X+|XT *$*@TG)=D`XT Q1E6*I@Qq * *ZqQz9w 8獰@T bkʗ'@T,* JQga14װXT @QbQ1X+p?@Ĩx9PJ@T bkG@u?>;p#*@T Q׊EԶR|u]T *QQwbVNKQx9sވD`Z1bD * *@T uaQ1bV,*@T ^'Q1WDM3Zba1;bQ1w\T ^'Q1VEUX++*{X *>yTVX *QbF֊D * *@T hI[X,*r.*@T CZ+W9bQ1b[+wݣ@T bQ1boD+m;-} EbQ1bV,*2(NIT *QQqR *QQwbϥOa@TlQ1_+˹9@Zb D *V @┞Db迦; *kŢbƣ8D *`Q1.*NbQ1bV @bQ1bsLFT {V bQ1 *>kIo֊w׎A<߈bkVE`/vګbuQ!{ZQbi&X+ǣq@T,*@T ֊??(NIT *!EIT d@T ֊EDҨXX *R [+`QbV,* lTJLDb}vd[)@T QbkbQ1b * *Q1bD *>*E pTl@T8獰@T bQ1ZN[+WQř;bQ1b[+QQ1DbQ1b[+ ucZx9EZ1bQ1uTl@T,*@T uZ1bD`ʨgxQ⫫bQ1[+ĻwDbJ_׊DŖ@RŬQ1ӨZ1bQ1b *Q1bD *8bQ1 * rT]_9oJbQ1XT DŢbD *`Qq*M3Q1^ΫmoaJQ1_+E@T T?DQwb@T Q1E3*NEbDɣbo@T @ؕbQ1b<*N%'Q1bG<J1b[+z9 *-}\+vR,*@T ׊EbQ1b@TZDŢbD5*V *QqJObD * nTlQ1 *_rޔŢbQQ1_+|u @ԨZ1XT Ds@ԨZ1XT ^ MZřC=XT *Z1bD@⯟nDb jTl@T,*GgjiZc=Q1xXT *vǣ`Qq*](*=*V 0^{Z=Q1xXT p\异8K펭} wV׊//DQ11$*@T oS[X;V߽vPTV;V;bDQ1?2ubD *X) *Q@T,*@T bQ1XT DŢbQ1`QXZDQ=Q1 *@T gũ *җXT `Q1|XT *@T  *DQ1bDQ1bbQ1bQ1bV,*R|8獨Q1 )*^-fbk3ubD *X) *Q@TƠ껨Q1طjb|D * JqLD@T @-Q1 *D3*N%'Q1b9*v@T DkŢbQ1b@T bQ1bXT * *Q+bp Q'*@T C[)JQ1 zXT *@T xעbD *X) *0vZj EbD@bQ1Tv?v@T bhW *Q1aWE@T,* *D=ǣA@T [+ *DbDQ1QqLrQ1Z1bR,*XT * *Q@T;QqN@T @ܨZ1b;bDGQ'gFm; *!F֊RlQ1EbDQ1bQj1sxr^}T|~YX !mV `M3 *!;ďv**@T bFũ *Q1b7|Dp@m;-5ŢbQ1b Z@T 8bD *vxˋb{DpM3)Ţb+m; *bGn@T,*[)@T bQ1^⚣bzD *]) *Q xTJJObD *YQ[=b®XT *Fܱ_XT <*N%獨Q1EbwzD *1( *DVE@T,*&(nQ1JΛR[X,*xˋb7zD`XT vXT Dx *@T D<݇kQ1bǚfRj\+vR,*@T ֊$*~@T [+ *D^EG7zXT D֊D *ySj]+@T V,* *DbQ1b@T *>ePubD *Yob7yD *Ӡx{ bQ1b[) *Q lTO?MT DŢbQ[<bFũTT DŢbQ;<bD *Q@T ػ7XT *@T _+bQQ1 *bQQ1EbQ1bDŢbD *@T ūC1uGũtݣQ1X)Q1E=Si۩Q1EbwD *~vP<ubViTJLD@TlJ1@T,* *'M_$*@T VEbwwD *@T _b!Q19*@T EQ1XT .*ǣ#Q1b rT@ߢTQT DŢbQqR DŢb}DłbD *^) *Q pT,(@T bQ1A\^U XT ~}Q1sSi۩Q1*(!*v[@T bQ1@ؕbQ1b[Q1b@T `8Qga1b軜TaZ1bV,*DŢbY/EbD *])V hI9EX,*׊Eb@T * *DC} *?cŻCz9(]Q1X+V *Q1ESIIT EIT p"_>V *kŢb+ŢbD *SPZ<  *"GbHTӭXT b[+D)=)X+X[)QD0x{0E}[+DŢb@T|Q1 UrXT Oi&bD`XT 9*n۩Q1E2uEũ{MT DŢb+Ż8bD *QQq *Dkb+ŢbD@T b+*^/E *AF֊+ŢbfRDo7ubpWEbQ1<*˹G@XgծwݣQ1b+ *rQ1|t+*Q1 {XT X)>]PubD *DbQq *~#,ZbwqDQ׊EbQ1 *1( *D{pڨ=Q1ˡbQ1`XT >_+bQ1 *AbQxԉ@T ֊VE *Q1Aq=bQ8b@T XT b+' QT Dݿ'~4*N%獨Q1pڨxGb+ShIT ר8bDWwu EJ1b@T }Q1 *؃Q1rQ1@?W߽&*@T ԱR,*DVGQ1@_@T bQ1`XT bQQbQK7bDVYQ7b@T vXT @T D *Qڨ8bD rT @T ~d@T bQ1`AqLDQ1@حQ1 *@T bQ1@Qq*m; *DmQ;7b@T vXT @T LT b+ŢbXT xԉ@T bQ1`XT b葜ET nE *+ŢbJD *àx{EQQqa1b@T QbD JQ1J9o1bQ1 *׊EXT >DsފbQ;7b@T *Q1-EXT >_+߅XT [+DŢb@T *APubD:,J1bZ1XT }Tx_wݣQ1ЏZ1 *R #(n۩Q1 *i *DotyqViTlQ1 *R b@T ר8wbQ *R 87XQ @Mv?F/*NmbD@VEb+Q1M3 *DbwlDA-EXT V,*D$*@T eW_ *DaWE@QkQQ15*:QQ1 *eT;}8NPVT { *D7ubXT X)DŢb@T껨Q1 *[ *D{4uEũ *D1WbD zT^ {wG>|x>B#utZZZҭH,ىW$KDɇ  c{/tUs꺥+["LWP;;EQ1@[^oCP w95b ų'.*XZ;@T ԢZVV 4}Kq툊n)uz_DŢbbQ1@T,*DCQ1bY3)[^"*vF /XT 4sKD *H<*N3Q1,% K b *Q1@[@T bbg *Q1@I2wE *Q1@Qsi@T b@T p/?gٮD *H9*v& bBL눊]bD *RRl[1 *Q1 *H *N[Q1@TrTLD * @)b,ۙ6]fR,*Q1RlS1xTܝb8wH5*v& b|TT b@T R\^P,*Q1.3IFΣ@T b[Q1Q1D^<{"*Q1 *l)DŢb@T,*Q1EXT b *^^wH5*@T é>*l),*~K @bQUX~DŶ0$*D * o){X|-vDɲݩ"cD@[E@GγbEeٮQ1 *sK}c1b@T ![XT $ciaxVᱍ@T,*l)nTxjXT 8v@T,*과8/*Q1WY33xnQ1R,*DM ^;@T bQ10XTGh"cD *){Q1 *8ZQ1-M 31Rܔ>,۝[!.[M`Wk *D-ŕӻꪐq_D...uN+o=@T,*l)iL/.#.nVb[o4Mcd".;b[*t:bۋD *aŢM`p&0XT R<~q튋D *7g*.Kq1jLE@L>ۮ%(nrTǍ1-Ţb-uez͏$wb2*~Wb[㚴Z *Qm@Nk EQ1-vb -ucrnGZ+bQ1R,*fe=_5*t:ߊbQ1 *l)X\,,b 5K Q8bhU\mD *m)?_nk{ ba1H0*.q% XTl>xUXD *}Kqf2Z *D@޿}eKD *n)ˈ{ q1DŢb@Tl *Q(t#(~\\ *dTT RlKq3Ca1 *Kfn)@3-- WWW M:,β]a1 *D-ŶYd2@T bQ1`KOcm&İ?b@T RlKI;.Q1 *`b#,;*b@T R,*6%h4 &,6bA)c^~LX~ *D@2b܄Z+b@T [g(iMpa;hDT(@TlKihXb ضbhFP,*6h4@T bQ1d5ߝxl[1DŢbNm)6ba1DŢb|v[-kbbcbQ1bQ1Em-- ձγ*,XT RlbQ1E *a=^oCX o˲i axa{~[l)Xf< Q1 *DPl5f3l+XT PbcۊD *-ŁG#,XT $XTlbl\ (B FX *Q-tiLU%,{AO]kAEv[j*G D *ZPlK1RlK Q1hT,(,/΋cb bAi'@T,(J0t:9QuL|RR\vd5@T G|e Hl)6s||,,iK4`Kؘ?FX @E We2(V/a% H;(-*6FX8/DŢb -XjhTi\. *Qؘ8=.(Wa-~b&*nۥ HpKqHA-&F~vPX @Tl[1|-_UPweb@T bQ1`K16b;*^Z\ X^.*~gb@T bۊb[I7* ݳD *_TdTQaba1 *Qm`K-$_Y#,D *@Ӽ*nMM#f2o@T,*[m)6©#* ΄beӺw.[ؖbc0߼mzKqqb|pQ1MQ1 *ϝP T;{(,D *{P\Qؘƶb@T _o%v EƄ3NGT zb*M&UiTZ+b@T bQ1RlK1UNݶbN s5b@T l))(ؘ/mpx(,D *@JN"5/c[1 *D-$>Uo+vXT XZ1#*DؘħTgٮ@ȲlgZvX,*[E3bmŢbXPlL=3DQ1 *R|nm+D *l)cIjB EDŢbRlLh4b ܨxyqE z&(6_|=bhbTl[18XTlRY>vQmV|KRlL\Q>'b@T @P,*6&x2Q1fT0p1C E&~VʌV  M'KgQ1 *Q1 (QqQ1 *Q8XX QO]mmInqUۊQ1m+ԄRlR&o+ ΄D@Aؘ4Nf[1 *Q1 (Qq͟Q1 *QŢbc"ﺭx08beYע EFT\gͶb@T bo~DD/?uJt]P,*6z>Gb@T bۊ R1Ţb#*g[XT Ţbc™NgIT @T,*Aؘ{NǏQ1wY3@ܖQŢb#*T#*Dи-Ţb(oKqA؈gk4Q1 *ԂUI ?VlDŕ b@T b@P}'GT Qg=_K.(؈ lWT  mϟ&VWWFTlK1 *Jy '*Am|NNNDebhvT,,yˤAqa2QM2#*v/@cbۊv6VlRNؠZbIqg[1iAؤ6b@AqvD5L3Q1Ep#K FŶGT *Q1-M E&FbQ1ԯZVAqӣbaImDbhܶަ ۂbQQ1FT2|{KXXlҜh$*nia *GT *ZZ+*ćw.-b#,N4(β]Q1 *_U _Ebӌ@T bhMA4l:@T bhږbmmm)RM#*@-iam-6TVkET  rbGd2Rؖb@T  LKPXkDŢb@T fAI;,b@P@v[-kwY+*D *z&(f:oSb xiaR,NNN#*D@lwj[1>(=NGU+*b m.$hQ1 *ecmBT ϟ<@cⴣ-o4kDT_Nm+[or8uPe;{6Ŧ*(D * (&(MSZlA1 *K gP2F#XP ыgO$omm)yłb@T |Z)`0p1`y"(1q_?;|Q1`[1q)(ƺݏOqqWXl E䛶E"xWyjWXln<9ۊE CxF·@T \l[ 5(17pj[1bA1?6ET3ǢbQ14w[ +Tm=_ckgFⷂ 9jxb/W̋gO C!`dl7ŦǶ Զb~\"!.6MHI@T Զhbg(bSL&`),bQqWT łb;{;?[]f@P,(ׯnVksEŶPmc { ៰VJǏm)CmQ1ey$ʠ8v9f6 DP[T @I6D? EŶb@T gP+k0ȰX}Tܝ *DPLa|b6~4vD@pQŽކvm+jxb ضbc=_.(Aa3@T bϟ WX%|Y]]9ba1bRLXln>u>gs@T V @A] #dR3}fQ1ET|z IŶrl,6?D *؏ łb@T gٮa *D$ų';b? G)~u=gu@]\)al(z ^~&ڞ3bbP _jLC>m(IP Q1i(΍s[aq]SYQ1:"P䇰XP\Ɩb@T T Q@PWP|=xȏZXRLILiyq>ڠ!uv?Nq0Ϝ= *DN,(aqWX<y%Hłbag(y[>ێ0( 3qߣvH2*..H~Pl;1Zw:1 =g *ҋm+H8FA?{C@T onᴬm.wm EXhX|rr'v={Q1K5bۉ!A1<lGŶ뎉[AI6?~,(3h8<DkQIU6x4UO&(?g *DbUU * &.ų'b{m+o08`Yğ?y~ۊEbA9a񵋋[E>ӳ=KQ@P,(fzZ+=b⶞ !ʰxGX\3s@T IRE(v`c19bH^IQ@P,aq1q3@T ).V 0G{by *ƽNh<nn8<Dug~\\DY^w1@P, ~~r7bhK>ۊ0C#π_ [Q18TNBųMyuŷ sHqܸXL **jۊwmP< !`11 YT 7L"",BZkQ1PST,,ƋgO"wPp7ZuGŶ@X_FSH\D@Q\(O# ~\5ʲH⫟ѿ8*@P, g_l@T bQ1@ ^<{"(J:73.~Eb&o( ]P Q14%@P ~ o+..l\4bٓH⫘8//m+HpCqvbD'J-ۊ]8l(.7(ve SbQ1`Cq9Aq!(@T |煠 łbD ⮨ g^[Ţb6 F%ZbۊD߾r1 z&(@T m+RU]ba1 (yPmӪӃmAbD _V_.,U;ی&(vH"*^\^*I1Q1hXPϟ @T //λ4<(3A1b ضb@Pl;1bbssul+~KM̽xDP b/ m+l($&nVQ1]kΥEP Q1 *Ϟ@T /- \l(Q1jTl[1ۆ^oCP V zpP|? *DŶwQ;S@T g @P,(Q1pTl[1 * W1`p&(@T 6]ۉm'Q10eۊ XP bba1c=_"&v? ₑVӃcbۉ A^ⱭKL M 6*@1 * _ 5 pcbA1b@PtX28s *,KP|/- \ۉgٮQ1 ebۊv;bD8xyq%- @T V a8ی0(ۈ>(߿}ϓbbA1i/V yItApx((Q1EMkWg#DФ8:*^^w *P-(vVbH^lLl[1 */8|?)FbhrLl;1@Pl[1p#߾0&ō];(ޱ { A1lAmp7K c⫠x8<rAuT\\~r cƒ @T Q|ضbcOA3"@^ m+XDŶĂb∢o_$IW1`p&(Q14SqyFTl[1| ع/ŢbHr;DgA{Q_&.Ș8Dly~)(N  ybQ1v"1Dl7-v{ڪ/*Ͽ]* IWAq!(Q1Kیm (kP< @T \ ΂R<wQ1|BAqsA1/^?zhz2*^Zh@T ~z:~hoSP YAqQ,ʨXX ay~)(Q1>hZV W1q!&Q1=sskR\t:ۊ3G{W1q"&Q1pw5UMۊO]H XZ21qy@T PUG[[[*g4U@N3}iWqP\T[\N@P<;zKqs||l[1HcnD_5$(*yJ"(vbV8ۉ㈉RP b/* /..MUQ5ŷm'Q10ӠLC-ۊH6&9(vb`QqBGU//λ@Ăb%F3l+ ZZ1UPm@T RQP"*.6Dl'sA1 (L&ƶbbL)(vvbؖ:r\vΖnƨضb`;8/ *J{1'(=,p[)ĽކD@A&3J]1qAqOk@T ,/ŷۊ j@T TBҜzHL,(DP^oÖ;NQϥ_s@T U (.:`;?x@Z[ m+ 3x'(L&] Q1p7y~Y⋋iSߡm⫘xn@m/J;δiSVT,,vb@T 7u ?v@P,(D@8Qqӧإ:tc4⫘((D,ۙ_\\4>*~u)Q N *_Gll=o1/g4tbbۉQ142*6_2|;|xg;1/...Nl;1 **;jⰸ|0p `ˋ TV ӃmۉDVTl /Tc<bQNgbۊ]jۉb^oCL  pTDbۉgbR|ǹ(%,>tq8 *QxSE/ۊ8dL痂b@T )jV MXQ\K $c^oCL  q$ba1ķ/uV@T,*,*5ߌ HQ1EGaަ bFQ1EʼnDa0H6&nVDŢ*guuXX vb@T k  Q1 *nLT|lа?b@Tܔ:,vIN N*|ͅA޿WcbVkEP GŶol+(Om'D eTTܜXX 4vCbbA1 *nA8ضb =bXXWT,,Ŷ@T,*N8*)ZZD@QŅB8XX NoL痂b@T `p6yQH%&N?(Q1pq3ŷv]e4a1o_5(&;D@pQqX1| R\JB0hPH)&v? Q10;tad8(Z\S k m'D@/J?g `1(U2",>99G@X ԥy1b\QqѣGba1Wc&n'KA1_TۘVFĿ{D@ٖm'@}/TũԧnG}Ͷb,Zcb-,IX|I傛&ĭ֊@T a6Uũ)]t+.EGގ6m'@T ASv1d2I›m}k bWӉ.(Nқ&o'KA1b x/(b^oCL *xbbQ1XLܜ*&nVbpxMX| ٨)*nEH511bU$c[1p?bbD7#*1qo]6-*^^wAh|P@T yy',ho_5((z'~@XmĶ *a1bۉ@ضb mG{ V Nl;1bNT,,Ķ *ŶYZ4.&KA1l*.zbbQ1p|ba1 &0&{(&bnk.^@w{M[11(K_Ni/?u "Ҵ}=H툋_<{2&N\P<`pvQXP *R~u\-AaqM޶rKD@ZگY3KiYD|}9EM?{wE>z-:A-٩ l鐞`Ȝz!JĀ%1`)  KxL,(@T Cُڈbe $wbDba1i{|狈8vbD7p yEĂbDt6[cDP  ?}8qh,ğcpOL  ްFkagH hǷ_; @rbbDDbl'+&xv  ٰۉ3Ny)bϿ)/ (n'& rUڰTd;511b ŧ6bvb11boo9 @c1qAq8 *4,k5,vT]1FX0R+3Nv1q.&@T Eb]11aXC08CL鬉pxW.kuy!IQgXl[1uV),e{V 7rHO^=2&vh2,n~cquƁYm'@T @'d @T @y?jl2,~Cb,bDP |biҶuL<wX|zZogWXL b.ee0$2&|Q1tJa1V1q.&@T @}?mWi.,=.@$bbDOluy!ӐsL鬉bX|CX &@T ꠤ _+KE1q.&Q1@?4$/&Rbbn%+&w:kBb>Y^}pC5Y]^<Q1Ͽ) :qFŞ Z _>{/XP by eaw6"XP bB O: u Bbۉ@T @a a1@K^=_ $ *Qq;aC@D=Q13 m+R!&`L`[H|( *m0? m'Q1aquac /wb|X|@Ķ(t:keaqd ֘XP,(Q1<,xSX pXL|/(Q1ba1'Bbۉ@T @aV9 wD3A1͛mŧq_'17!bpWL bB"{3_?$űD@1!q&$Q11sh{a/?303+Kx1g * b rB{11?!hRV6b@V 1b@T @l3.?}8q8[bbA1 *`f[_>{4ɫ;bDFX4P.& *ߗmŧ1z!q( * vT2Q1)ֵl&n;>5Q1yyRX X]^]0 *zFb!瘸(h%,~pmBŞb~}FX|?uP8|Csb1qó@T {Xm[a/?8|t-"@a k BK7o%(Dpd+5?l;,=@9[Y*W;5A1 *Z\|zX\q!1bp',8 Dxv1x|"(DP╥t׏m'DР7g&0>v`VU3@T m=$,>^ @S>kuA1 *a[0s"bۉDCx`V !@T @b['b@T !w m-*N7Wa+3 |򂘸ᘸYb,ED,$Ra^aٸCyDHbL\@T @B__=q Q"bKD$j~͙MDqce'bQ1Y<Р1q1`%& ,;,>vfbw:kbbQ1~m-pbb111l iH,&n/$ű@T 4 WwāĞq ɰGX~L鬉Dpٰx74.=P?@VbbQ1EWBHPD|j<>@X 8س Q1υbY]^wBbQ14gqETaso!q1gbh3 oow:kbbQ1Wрx;bb~Q1e~ͧ)ů) 7&& & gbaױTpRbbD ,n/,w['~ZY*_#m>",. * [ xCQGƯ aDĝΚQ1D^X%/?/6Q1$&ŧB%3(1m.Rw-$n9&32b@E\,H%gHXL bh婆/=o${SQN}nk1?~8"gHx<> *ň}ÉrăQ1uաmG~'“_>{sw0cnw]L Ɇ6Zg>[@V|R2?ta1W;b?YDbb11b`33oa1BDQL\s+b@X|ɸ!5 O@\:GYQ1 ,f\,.?ٽ=\iSq{A1b^V6avbQ<vb6& 4_=N,,t-$N$&O6,b1f_>{ W}-K 7im'Z]^'WXL i߲A< $f13CjkoN1PE`bNgML jߒ VUgQ7Q1ŻYgCͧ'ID+Up*X$i@V !D8P @bWD+}^b/v,͘YR ƚǷ+zpa ĕ8bvU᳈[ľwBb@_Ě/= {X!q&$Q1ͿkoX2U%3.&$DaX?&(b}bpkkiXBԲTY@C߷|J3&sK(/i>}8xʺ cYND~L@T \@qq_S \666ʶ m-<o3;511qqQqȱK*p-,!Ţ\g:&,B3U9'&'&v *qE &|1_ё"H,$N;">5@T e0J:,'0mܹ%7f!qyឈD@H:Ø6~M?V _c&IRq`"Cb?Od⺶q8ሸO *"7?L0^X|=XGD2I~jy!mBaqŖb9::J3o{1Vr6"w:kBbt^'(8Fbg9D@2qivRN? 9ʃ|'m!qQ@T `l\8Ԙƈ:$w:kBb|[늋oo TBbXCTÌFWwwҋX\|q.0ӝͤ?cљ n.&3&vE5xWX,, "网2Q1ЎpWdlK8Ұxeo3 f8b xO\|IUj›?{㗟gwa@T į(ŶG?wPWwęl!uir7yI6aR!hbQ1b[>4 }D [bAq3NBb@T pZqd2QF>wM>,~V 1qb1q]wz@T p EqŦ7[M̓j\DpI Bcnw]L R#7Iiq Hl31`vh#7) 6f(WlM3N6pH\>'X\ E)ľwbϿ20zjZi޾}D\|-8Dw:kbb@T ːbc6GY/?$Bw6"DOZl̷f4%z#L $$">U}obhDPl(OheG_p'"DŢbߤm-DDqH {R\zύF,ҍ+&vׅb8bcr@l#?&tbŢb#.!,~eXL \*5f⧿N./+f¤Ũq'"℃bODbc.1O<6,~pR!"N<&Obdz5LaX]^g[bbQ1@Q1GbوXHvL鬉DiGŽ^Ojj;hۃ is@VDbb11@Tla-q&Dbe0DߗMGƄ2TX \ڃ EgH *e-DWDЬ0 EbQ9DjX#z#"!bhT[ }bZD 3""G!qQD(i8(P(ɓ'ſ(ZH\%,7eK1? R$ ߷TaH D$i8(><,# !1 -#,`0 +ឈ@T A1bhӇQ0bD@l)6&?&do߻FJY"bAo]0bMؘbAmmep7Zbޫb<"bA/b@Rlf,;M$x/"@T A1YŢz6J9&vׅBVE@bc'QͿ1&tx)pP<77<5d28E;kRbbDѰؘُ]+KjO'bbDѽi8(-*n-pX[]1bu:kؘz&Gl%Cb߇@T 2DPlLmV߱rH,$ľHnK15O,QuۂOCY6'? *r|BP,*6MLۊ+ON O"_0$}D@:VLMvS(#9 *Ėbc#PWD\%!ૺVollKM#f@T p "ľҊ⸕-GGGR͉$ EĕDWaK1hZ@\JS@T uTl0BJ @T PP,*6XB^qVbbA1mͻwDxHZ54xnnNEj̹`BZ!q^bp^zRlL#!1 *3!ޘ \hWLl+1" Eƴ=o߾jB+I;" &zԘh;wm)6#p"nw(E@*͋MFQc1Nm|^{Pd_vRlL#G`s6.ˎC1(6_dnns6.nwl2*6|}&UX:m R"ĈoӌV0zQqh_t4z=ը1ߙCߟ7: JQ1~ƘoOlmV^^s+:vx#H%GCёjԘLLAq*m62@)*zaK1f{yJp6.Kbc̷g: g uGU0i@T P [iuo@T DyqAqDXTl&ؖbI}A1-LA A1$^nz=ը1ߘG A͛ *DŶsy]A- *Ŷs ?(!(Q18.m)6%(vKJ԰ؘg:R b&b[izb ҽD@ĪXΠxnnN9jW&ؖb)̨1(ؘt:&*vQ1`-ţH=jW&_WE-4>ŶH@^⣣#1f:FOH%-4>ᠸ/(6#(|&E{QcPK=j̹9<<&( JIIŶR b ZAׯգƜhbI)1(ؘO,A`UOH"(/*szԘss(b[@T m)6#(Q1@#Ž^O=j̹NQD *RxYQsPlK1_7$$zh5/.('@T Dn<>)m)6BЃ`tQ1KC1gfss3 b R[iv666 *hؘFdžbE׾H87 *{9aK1FAD@RAqQёԘ2 ŋ/JGEŶS{{#⾠ؘGP b oj{d?b9(ؘx`t_Q1dP\oT|xx(5Yh4"(/HL^RlL~L,(@}/":bgy\CBQ1LA A1d_@ub }D@bsssRR b ՗ Ŷ\GP \\ǐ`q4KMv@T $h<>)m)6y]TA}D@/ &)( JD vm)6)('HؘZf4 Q1JP\T[nU'sssRYrhh ( chEL,(Q1`-8!E>b ޽Sw:kuo)Jcrb8|xbcr`tQ1:ڷ>\9(~d9{{>vm)6\łؘZƆb?.pEq\t,5Y @\b/l)6f3l(D@Q19fA`U;Aq=Qt:Ufcc~bDŶ3s玠a׶ؘɓ'b@T 2bcf67hPlK167{Po j {d5gxqE^b[ؖb4{{PoyZbQm-e@)*@Plf:6WRT ? Ej@0g\l((z*S`U{PlKiqMŢb4w:k3B.攦&FŶ>'"@Җbcf;Mn)v.E_4M.l)D@8:ƶW19-@\%-t&IcA`U:/"@~3۱9 h0(4'p3C.m)6z m)|fEfMbR\ܐ9FŶ3i"(.= !r өd1wܱaߗ3h0(~d3Qr ؖbcQ1"64MNjҽ .R (6 l)6p  Ž^OejQ1Y"RlLQ{P\>v?fET_4MncK1y"SǍo)SFT E_RlL#*:S"XTl]/)r -/ʦd05Y۷om)D@m)6Eś S݈ *ؘMAx|R3=W"@jAqsQ᡺d7Q-r ؖbcꜺNgt?f~EQؘܜ-hO^6OSurE@]\H塿-:b ؘ\GT D}ETbQ1uMAqV1r XPlL3Nm)D@Aؘ[bsF.k<>i,(L&R4w{P'b~PP˖oߖ?.հ3Nm)D@RT|Ν; Ysih>o0(~u2g!SgAq^7r >Z[Sݼlڟl1>o0(1M96|D@Pg\K[{^Pf[M{tPk@\-M;sttdK1 *79Gœɤ_clP,*D7紑4;sssEq\=r@T-w *:-@g\羥ض⼧x8+Fnw׫)l3C[Q1C%ǐ?mI4~EQ-şM&m&xPlK1#D!GU6YǴؽ ht\OQq|nK1 *~@۷ğmDwQ&>ٝAr@TǏV  *5>Wb@T pWEfvcK1#BpPRPɓ֢Mm#*<"8-mEŶ9o/J2sH.EŢ\Ɩb sH.8mzsEQێ -@\ollVl31aĶb X8{:l51Ŷb P7oe[qѪ-(b `V+at: 2\=<<6?"(ߋQ1pz=5Ν;Ŷb Fސg4EQ1~}+ۊ߾}+*8/*D.VAqAp'*D@LQtFXLlK1 *R ų!O׋8(b@T|)fPX,&b -Eq\onn2sssNgMT _85rљN Ķb nvXfdD&Ю@T \Qqaq6 %d暤XT "@Vaq8gSż\hxu1x<>b n2ZiC-b`aq?Ȱs2dNF~յuQ1 *{ApXc׷o׼)"ʨg666Ĵ DH[Q Ŵ~Q1׋Hܕbb9}q𔄃~yKq1)Ăb@T peĂbQ1W'#(9 D@/>bb X@T QQ1 ,ƖbQ1[Db -Q1R\LA-b!Eq|&.#(i#(ytD@⸴Yă@T lqŹXdbjCb ƗcWM~DThbS~O_j}D@^ϖ݋^8܍'F_TE=vbQ1 { mp; 6ï }D3qW>\O`^L<lD6 {^0k4h{wl at%T)(DbW?)\_ *u`d|H\ @T @[Cttm *RZ?b7~7˹Db@T b@T Nsa@IENDB`go/doc/gopher/gophercolor16x16.png0100644000000000000000000000134312412656734017265 0ustar00rootroot00000000000000PNG  IHDRsO/gAMAOX2tEXtSoftwareAdobe ImageReadyqe<uIDAT(c?2` Kɉ^j)?2W{fcchbf}=93ۋ]=?uo(_?)) Q1 rRbwIkscݽ{\ 111011:J ˏ'OomnRUޡEBn 2988Ueo|WL{mK ro]Y/VQQ+exKۧ5mQ3 Cn$+?/@;` *?i/¶lhȀ@r k9'W{] ``af߹l!灮uЀMi0iFt. )/\a-:ʒH ƪ L̬Q/ ;@W&KE1͛7`O¢b>+C.&"!!uQ PSSc +c?l_nG7 2b n޼ɀ/ dVG W$P__bL=IENDB`go/doc/gopher/help.png0100644000000000000000000001314112412656734015163 0ustar00rootroot00000000000000PNG  IHDRrd9;'iCCPICC profile(c``$PPTR~  |@TTd` 24 Hbd K 1@HR6]bg9- L<% E% )I % yEE%)@P;@%D=13O@"|b\ZTJDz G0302`$40s$B7,,,XX[YYMcξC g".G-ܚ xx N/ÿX@G`T½"*"{EEM7"Q!)'yL*_ZZL->y? [ *U)P5QvPK#TSII:Vzz,05157e6}iv| Vuֹ6qvƎ:NjJ. n Ꞻ^&6>~  2)B.**""ff잸 lIa )kRosdXdff;˞g_Q]vIV骲7%Ujk?lki>*V~Stj_c݉6fO;5~3g}0|K,n]mY{+CV^vz 6l޲dV;vsv_s<~L֧ΝI>ڗ^I6ީ|übO?|!.|hd : 4o pHYs  tIME'.hIDATh޵Zw|Tն{{zZ\@@Z @ В)HF-J0RF0@$!!0$3i?f>Io){ګ|k!"D5ޏ+D&jp+%n5+)sOy.v]BA.5T-ɥk,yFR݉*`YD Hv'{1C1ܹ7БSM cDTW k/f ҳյm]u 0 sѡ[ۜ % MelrvCTV:Z߮e^9{6m9L5bNhkQS3Yw`\#p>BZٳq KhasA/E2 "b-k;< noP~YyiSOHc{3 628. k,xM "`꒻^~=͵T)>x[ n'b@ᜱo#Ӱ* 7vڽ7e$j@,e[+YM˫x{Kyh.!'\E@T2jts0IHFY Q/]!:h^6JTRG r3lʭ]cAn{]T֡!m5w<ʩނ|uPhY|,g<* ϭWxWTMMRlS*"_ǽz$qܜ N{ 6ͪwEo}w3; _~ol :!١x/PO]p 3u*Gj`敟lb'%,n<.B$<ntE}'|q}6 0ٺs[cs Yݿ)YU$VijmGݿm hmxGKOu"5`As'Z.aW.4EloDibm5*\";Us]01vY>fGz^֚wg x ʗFߺ8a3Fc;'D+pHW%6g4 Z@akS(#܎%":{Id9ٔز]ag;.X%V͞eV2H.@׃F3CD@~?f~oDž?n͓+&.sx|ZLyW{}ˈVSnk$p{nPWb+}YjNUzIM\앷K?EWyPן|&ק[7  IrEic]$b81,9N"BQU!@w`z~NM_:hB>yUVQ8S׽:s$`;8osnfJ",K8]n2f}eiaQԟh^TmYnW)8J0 = 6䥝L(crL{-(×9qk`L$OiT9N4gvƘ$|c_-݌wxwJ|Bw܊VܥB>,Qosmë,YV|vYw׵h췞$>l]JN[P8"R^5I2mJAv~f I;No}gnyyݲk!Vy @շe&V)b:rg. ~x6TV&ib`T7C Nu幗Ł 6Sp-d}mJ=+PUS{LFM>:ԌgkLQ#%5wu9'IF)pUƒ_HmAR}<$paɞB/ڷVH{wqHV6/^t٤/0YD 讫4\^)\j;WYd3Gj=@%:|"om0yCfP*4*mǯ~ιQmW\J1Fj|2 ZXF}jw7q*1rǕB͹OBCI.e*+Kg4rQUA̤AwzhUslMFUbiqm,MH6HL(Ŭ_t^ 4~ACiMWYm2jg")+:Dž^ڕ5#E?/>oȐɱ8.c46aXۋ/8j6u&OȲ-HQ9OE8X):lUVYZm6pTyv"ON=rmKFukҤ/}GvX=5O,콪Se$Q$fq<<:sn!u޳ʨ3Aby[P4RM>謶!svAd& $ʒ䚜N]kͲTt^JU1vJG5ct$bԕ?v[U<y(AoL8?)l{FQ@bsۘϠp#.Ϡ:=T &Lݭ- 2lʂSEZ{mE&a{ cg@$L[?dF=&tHxS"^}7G>[3Ds6cFI&8}MKqDۢ};y5<.F c?&NTDkuyVצ`I/pjPrJcv[ާH7Ho|Dp8KO7fx3˅h^\v-2SvQVC"{W\L v0oЭ?}vD`v,J7vdzw?_}|s.ϓ x5\J^P)?O5I_SB54Q%4b2pIENDB`go/doc/gopher/pencil0040755000000000000000000000000012412656734014723 5ustar00rootroot00000000000000go/doc/gopher/pencil/gopherhat.jpg0100644000000000000000000037513312412656734017476 0ustar00rootroot00000000000000ExifMM*bj(1 r2i['['Adobe Photoshop CS5.1 Macintosh2012:03:05 18:01:25wb"*(2FHH Adobe_CMAdobed            ~"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?*iM,mUT` kZѵck4IJI$RI1 :IK_x-dKӌ{ѻfmع1_] ,-LJP 2'M;3~ӯշ+ޕIO ?7ٍe"=7;edq#.Os:^5埾g߷%Xz}{_8tY뙐ۙn{ɿ"Ĕ/<Z@#%c.q7^~z:Rį7dc\&Xd/使{ؒ $JRI$TI%)R_ 뺖s1t $c?F]ven8sJJx;Cp\6?IN#nczRcC [˺C wgE>ZOޞs.iw+?/>?Y9?Yv;M0=>msMKKW\zR$tϫefYZ#u~]V3}cTҺVLݙ]-Kp}po?+oo\n|~r23+ĤǢ;2[-wE+q111MbF )ip0s,OmO?SXos1=aNU^M:o;=9&x#98&Qέ׳$[qVui9eObOCk+>cYaiu`u<*?cv1(UhnMtZ_C}jY#/f>j׻@540YK쵬 sv椦Aׁ6@p%fKvגn+?Gj}=+#>ׇ}x׏Ѷrn-ຮ-ɣg謿5a{9fr,3W3 i)I$TI%)$IOV7Tul<ESN=8u!ΧܗS.:YS%sԎUαّ*J1޷J/[tul_m9&U[luylʪɣ{O اNgMI{=La}TG { ^w}W֒ u>w֜L6 nca9O~۱-غJ2>X.x8"b8gtK1✭SzFJ3[NЭ8ͤڽH A\p~]ߝ%2/v#/Y`kUٴF͍o~\4SΥ;gN/ʵ/>MϽۓ{lu,}_!:vK$ӕM61ӆ;mIMհ.v%fbVj;6grRnk0[ҺOKcmې[Ϫ^gTzcy?Vz{3;q~F9{}O+ ֵYe]C׻+5}쫬zJlGINv 3j. _$3 ]wŦu5ik5,Z[s_[oko-ǯ=[r>Iu6kKl;.k?$I$TI%)db?0+mW=O__l{ωS_wk.o;yq:31f_pǥ%:'SE%Yc9];߷7_>szFGR4sXcKo:֊~@k[wu5]Sӷk*_SqyF B{}p6ԬFU7lfߴu'Ymu'W+YR0pWxSEQ[k[Do,oY~"d\tk[.~59Y>̶6VulΗ\cpX0]lݮW?2tkzs/ĦKj[u{]UWncm֖Y[s\ ck~/F97e@sZ!sm;$Zްm?6;9.nM_V^+[:MWj~Myu%>,-ٽޫ5:g|WYV^sX$3molԕfj>7XN1*cXcMW]2RˬoRJsbmY:D1̪"0nS?-`n_Yd=JYN=Lf5}߬:r _U,ͳW]vc|26;7QnӰآ˛^?emW~9M%;$JTI%)`Ti{Y#HF&ќ?FGD!Vߒ̛#bJv7z.=o=#gGtQ_**~s ,`v5_}PSﵲHp׾nZz۲*XY,18:w?2{rqc 66w{s{VRSU~aXi] fF_N][굟)~+ >-mVg}u$]ŷ_r.s.W_蹶tzn_dUS=۔W O^1,xci<S}Su 7ܗ9iw6U^)B105h}\837]43F,WSحsk gfgkIJI$STI%!̽ؗa|Z^> ;VS[don3>c >+լ ,ʧ=)gKk TGp%6I$I%)$:$I$tzWmuWgͫʾvQų:dZ!X|?$oX_Xŧat9m[U }7=ivk_S]z{ŴUvEֲASom~5-ձzO;CleN4~eԿbJnI)I$JRI(]uTT{jckZ֍{kX֤[mT{kִnsZ֮soזּ2ʺ}UnMoi?3W?{h,Ogr0a{\kk["͸~%mev)Awg5_e}}8ٲRTI%)$IOTI%)`gtӳW] :]{V-cgi[~.;*I)ūoEwIpGQi']rռ>s>́F] Xa:nz2+5dV˪weiՁq>11U[}a JwEc ocEF59Kc]]mX=jHF=e[cUк_/=Wu,ap7 ߎ}1zw侟Uj谺GJۃF(mjJr??Qϳ=&k.m'%\ ]ݗg/Aok/u,J-:_T¥/g33% \NF6]NuǦ63k}J6{mm$I$$I)TI%)$IJT:FF.*ǟC*=FwnVѽ_I%500vXXU qkK.{K,XI$I%)$IJI$RI$Photoshop 3.08BIM%8BIM: printOutputPstSboolInteenumInteClrmprintSixteenBitbool printerNameTEXT!Photosmart C6100 series [49440E]8BIM;printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oGrn doub@oBl doub@oBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@ vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMXX8BIM&?8BIM x8BIM8BIM 8BIM' 8BIM5-8BIM8BIM@@8BIM8BIMIbw Untitled-3wbnullboundsObjcRct1Top longLeftlongBtomlongbRghtlongwslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongbRghtlongwurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM b~|F Adobe_CMAdobed            ~"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?*iM,mUT` kZѵck4IJI$RI1 :IK_x-dKӌ{ѻfmع1_] ,-LJP 2'M;3~ӯշ+ޕIO ?7ٍe"=7;edq#.Os:^5埾g߷%Xz}{_8tY뙐ۙn{ɿ"Ĕ/<Z@#%c.q7^~z:Rį7dc\&Xd/使{ؒ $JRI$TI%)R_ 뺖s1t $c?F]ven8sJJx;Cp\6?IN#nczRcC [˺C wgE>ZOޞs.iw+?/>?Y9?Yv;M0=>msMKKW\zR$tϫefYZ#u~]V3}cTҺVLݙ]-Kp}po?+oo\n|~r23+ĤǢ;2[-wE+q111MbF )ip0s,OmO?SXos1=aNU^M:o;=9&x#98&Qέ׳$[qVui9eObOCk+>cYaiu`u<*?cv1(UhnMtZ_C}jY#/f>j׻@540YK쵬 sv椦Aׁ6@p%fKvגn+?Gj}=+#>ׇ}x׏Ѷrn-ຮ-ɣg謿5a{9fr,3W3 i)I$TI%)$IOV7Tul<ESN=8u!ΧܗS.:YS%sԎUαّ*J1޷J/[tul_m9&U[luylʪɣ{O اNgMI{=La}TG { ^w}W֒ u>w֜L6 nca9O~۱-غJ2>X.x8"b8gtK1✭SzFJ3[NЭ8ͤڽH A\p~]ߝ%2/v#/Y`kUٴF͍o~\4SΥ;gN/ʵ/>MϽۓ{lu,}_!:vK$ӕM61ӆ;mIMհ.v%fbVj;6grRnk0[ҺOKcmې[Ϫ^gTzcy?Vz{3;q~F9{}O+ ֵYe]C׻+5}쫬zJlGINv 3j. _$3 ]wŦu5ik5,Z[s_[oko-ǯ=[r>Iu6kKl;.k?$I$TI%)db?0+mW=O__l{ωS_wk.o;yq:31f_pǥ%:'SE%Yc9];߷7_>szFGR4sXcKo:֊~@k[wu5]Sӷk*_SqyF B{}p6ԬFU7lfߴu'Ymu'W+YR0pWxSEQ[k[Do,oY~"d\tk[.~59Y>̶6VulΗ\cpX0]lݮW?2tkzs/ĦKj[u{]UWncm֖Y[s\ ck~/F97e@sZ!sm;$Zްm?6;9.nM_V^+[:MWj~Myu%>,-ٽޫ5:g|WYV^sX$3molԕfj>7XN1*cXcMW]2RˬoRJsbmY:D1̪"0nS?-`n_Yd=JYN=Lf5}߬:r _U,ͳW]vc|26;7QnӰآ˛^?emW~9M%;$JTI%)`Ti{Y#HF&ќ?FGD!Vߒ̛#bJv7z.=o=#gGtQ_**~s ,`v5_}PSﵲHp׾nZz۲*XY,18:w?2{rqc 66w{s{VRSU~aXi] fF_N][굟)~+ >-mVg}u$]ŷ_r.s.W_蹶tzn_dUS=۔W O^1,xci<S}Su 7ܗ9iw6U^)B105h}\837]43F,WSحsk gfgkIJI$STI%!̽ؗa|Z^> ;VS[don3>c >+լ ,ʧ=)gKk TGp%6I$I%)$:$I$tzWmuWgͫʾvQų:dZ!X|?$oX_Xŧat9m[U }7=ivk_S]z{ŴUvEֲASom~5-ձzO;CleN4~eԿbJnI)I$JRI(]uTT{jckZ֍{kX֤[mT{kִnsZ֮soזּ2ʺ}UnMoi?3W?{h,Ogr0a{\kk["͸~%mev)Awg5_e}}8ٲRTI%)$IOTI%)`gtӳW] :]{V-cgi[~.;*I)ūoEwIpGQi']rռ>s>́F] Xa:nz2+5dV˪weiՁq>11U[}a JwEc ocEF59Kc]]mX=jHF=e[cUк_/=Wu,ap7 ߎ}1zw侟Uj谺GJۃF(mjJr??Qϳ=&k.m'%\ ]ݗg/Aok/u,J-:_T¥/g33% \NF6]NuǦ63k}J6{mm$I$$I)TI%)$IJT:FF.*ǟC*=FwnVѽ_I%500vXXU qkK.{K,XI$I%)$IJI$RI$8BIM!YAdobe PhotoshopAdobe Photoshop CS5.18BIM http://ns.adobe.com/xap/1.0/ ICC_PROFILEADBEprtrGRAYXYZ acspAPPLnone-ADBEcprt2descgwtpt\bkptpkTRC textCopyright 1999 Adobe Systems Incorporateddesc Dot Gain 20%XYZ -XYZ curv 0@PaDuRY9.9W" a A )   ,Ee$W2xov'D !q"."#$p%4%&'(U)")*+,e-:../01}2\3=4556789:~;m<^=Q>E?;@3A,B&C"D EF G#H'I-J4KEUNABIHJW˭RJm{}f L(ZWu ;DDE `*ǩ~lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l$xm\ٳf͛6lٳf͛0 Flٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛(:w͛6l E'sĚ%fU)ɻUMJ+ێ xU5(%Pi_q]m% J?v;Gl0 v 6lٳf͛(PTٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛(־yTS6%$,ƅOo3̀Tc jMHZSDJɼ#TRI "9gS[j:rzgR") nMQf95O9޵&`Lrńt+zo/|ǬelRd@eBHS`L3?9Vv[Ԡԑ8 +Lm<&VphIjG]s_ /B?IW'u*5ɷSlHEzJ:(mtdKGV+,*4.cM+Oc(Bzq/0~~_X116(2؀F _X꟥-E1m j(@B)Z[-:_6c[%A& F uW Jh2[~]iKa5\*E-BWGϩ=3gtD`7G{+6c#)c{+>V5e֭sbč(Q] zkHFk*;udZ)v-~eԒHZJiZo=p75eяOnnusf͛6lٳf͔+SR|ٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٺc@{͛6lٳf͛6lDgTBv4;?z/t5ntFb#26\-h7>'{'jzX v+i,n oRr֙ F'22ra9%'n1@47_U ʔ<|=er<|YBp_ u:"Ԑ9A֧ZWlt:E!DMk"旔w=ީl[ȑL@̎)?gyr{Bu u#?Zo%)R8C9h~]Fy$##f`\4Kt!ym%b$Н %pcʴ^ҷI4o3E " HE m /=y[Ͱߨ&T2`~bhj=ۿ?ZGѕ8I%q'qʷmѵ.2!}9RkҸ}2x*n }j@](Hs)%AaňZ f͛63 tjzf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6Urf2 #/6lٳf͛6lٳeQiZ/phvI'US9rگ<bz,QK匸t}2ܒ? 9+|y+pf@VrP3MKӭ:G]WRj^s_݉*ѫXQ;a0=&A{BEzÕw7X^E?pe5[j}'̯&x'oD9S֙4KieOX䊨DRIc 'ѫk?og*xPH@ aYYmWIRpdX,J֭Ÿa2~\[;Jݣi>=o/oH}~i$Y ҝ;uuEbg#nZsA]j@)~uitzU_RGA$o Z%R5{lyΣ'2tYCơ5ȿh؎-%$+FO '_Vkqy6ȷ?Qc=ܿ o˾t?*CZj1^< 4%d ("$ؠF֩͛9f+T0~^X"2Vl$hf"KklV)HZ捬ڛMV9 >jWyƔ֙5~AjQ57YVI5E>**T ӥpm/!y?]h틟1UP9?`Z}v{ʪ,Z4KqSY:^-嘢Q)T]COGGDԦJZ)7TH؆.N(c9VkڵΣ]yDKDq!Qc'؟V M/OG@7dl km^32\yT u$Ni Bxxx%UA??Z'su.IOMߝh{cӹΟ~EjA>:++ h tΥ}FjIWesE[@ ZYv Ғ2+) GAkS ?6uu}RMueBA(PA+?rX?.=n9uXCfAE)RSrT+'IBC FI[N%+ <7<:/=TEr@>]ӭ6{0QۈzhI,aGCiPvWXȫJ#Ÿv/xXy BHv5O|imnUJs "ɠ8FRI,[ A76V?^G'sGq+ɘjh~$4;[J%).V,@}pPwZ@`%2c,]Qv*3zgssa3@k[]5o"roMV6j*Ë_+*LxK^Y-?Ě* /^\EhyvRЖEC2O/Țe:ŋ%2yV Rlۊ|D^a֮+I:X42۫Z&F*$nEpK>)k@@/M8kt~v87͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6l뗛6li`1f JwN >̄~zNO%@l>yNjr ԅ.yqZs6~q5\ 819bOs=Cr9>Rwf@[-^\zWyr/USJ'xE,L>6榌vgW<,C3ctA*2yrga=E .hFK:ӐbGPWeS  ֦ν>}+& F:TPj X 1I50V)ߚ۫*4 Qz+T<={c_^[xdKiP=F09P\~my=BIk,cb-%,qEV*SVj2yYWLں؆ NY}H?K;#SH4u<|jbM ? >Y(TiEBfzQ= JhFt)ibJ l62CPBDjv >ʱݢ #8eiΐL$ Ŀ~28ҽi_ӵ*PIet>9vvh7 ^@p7uޘ$ ,`pYim0|6HڝETU#625[=jZrƪZ9TZߧмJVE-ԁO].ry(#j\?yEtWpWbOMj:G<4Br19ee.Bid;OOf/-bY#!>;|`jv^iYB^Bu%t)9lUTu?oB_a$E2VRD5yKP~k.{kɬbگNힴ|o ,TnP Aru0Flٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛64qo!Pt岱N#ZlY>!IO'QMSXR%3I*FPiZn&'Uu]E-庍f" ~5|D|yrrV㳈7WBB7* nH뜟U׭/-K&$QzUSʼn]AqY-g=^YE7dQƛMM/[{ֹHEF%B4&_:f[Ml AjTjncӬi#C իE*zt4SEݦ!CUW02&cXV] Ib|5oLiV{:nWFةTXxeރlkR$5e*E 7/y[HUҖ-Fp`%QM)OӞ֯ d[GՔsZxS;$4]&ڑB~43;3kB:uiX$Jus* NzUYت:҇sJainc'shB2RYB@7&5?:%wQI5;]M'*[m>>e.eMִ=Ba **|{eE!xe#\lH"f*R6a8zHGJx j 0=EkAoCJ8)ҽ? JnH_L&K4Nm+$ԥ2+%ՊU 2~p?hikɴ辭Zh8U93寕 (ZjWz=ռ$n _In5swQiAW h #!Ri4·g5FJUk@Wqڧ$-厳kGMıh܂zSǛ]R>$ḺzSqiP5@Ϋ#g\麥jzZ&c9Qͪo|o綍竹,-H-3DMKK@M3Y-ZxoVd!jh~g/6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͔XOMZ2;H׾`AԨ>xo{2!ZM~rpʻNĶV+[ I'߯9O9SL{I.KYV( Wefy7ռc|Gp9-^{=(ACgYuy`M,P$@Y-'|3Z7$z Sը?v68iwv0S^dy~mצtծ,̋eql V X#l\Ūmaq-̷jJHhFoW᧦Ps%ϐ|qz7/mcѨT %_9W-]IVu$0"Tu;g`hQЬ.A~ "/ )vo ~̧qZSQF#WdNhPu_ feoo ui%6mRoCMGBia AN"= r$ -dP)Ҧm(b%W]]D%mʼ +Bncoo+)'~!J` h3;4 Znk\rP/_WdPUz`10җ`*knzm[m%.FטQĩR7;^·H%ѣ` ؎ݲGkrg5[\Ӯ`)]^.6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٲe`ycs@*IAyOAMF 4~cPiz~,R2Tz|{*k/g?9СkixǤb-08p$_' qy~deR 5o/~WyN;( \dO: ,FuO.~_yjYGhC -%(YܚiZmFmEĕܨяHFArǠ4]L.QoDhdw +J_ӾBO;I帆PZpRхfen4ߑ >iլoCQѺ/;gy _ :ӗ/Bo^K=֤Z[}6h][p:-c,fJ<Ϥp۔a 7VP@憜Rs_:=axS'^; ~ӑ3drntXqEgY'-Z~m!NŭO(ϩ3-B}oL5BVJZi)UEOR@r*<7{{xKpCu$!Bg}AiŢ+P꧓q%bxcӮ"әa/Ol X}NhE5]uivz|vI_ *!@Ui;a 9Z+ "AC2}:(gtEaWpX/O {ȵxT3UmBv3*P-HZs+2mJ0eK@8mnPߧ.'yc/=Ivl@?jٱ) ohЂĐ+MkAc U@B7Ízgæ5Z\]۷t+]ӒjT<[[>dLd)7 GrH!ZqcK`\ߖssdTRe* JQ K:ߔ2[mR _Ўfi$nBƔVI]/s ՉP\8~mk~LV5D!̊ADݝi/7WA&TmN4>m廍䶀 0E!YUn^983[)9s->W4H5+GFEX#ȪHƤ+]\4no,-R{"IBs,MEvr%y [هұ3pKҔ, ?5!KEilMB;w8Y@ ӗ;_[P5ezy*kjF|j'IӠhhhK|+T)ixMVI. LUW O l=@4>u>ټ XAJ95[z4,ZWLOtEx( ^&z4ֿbZ`M);npt%1|L R~\Fzpߑ~ydzX4I;qc'e2֛ ]򥄢}2ԂGl=j@h^Oae(C@wZyIͥż7nȭ 񫊒{K]i`A&9b G*ͬv 3I$ERk9#,ARC^Z 2èH9yCQC3p]s4"?Q da Fmr& 0O1Piga7GH`Yk.ʒ 21<dsFz~gӬ8ufUa!*T v'[EKr+N9,vKSNž_7fkIk#gY A5/?3MoZFFR|4x5{ 5PbӱΝi~_ϣXnV# QXߦ#5Pډ O`VW!~MKxwyb×Sr<ևێL4,Ggck%`$։^#?? _ysZ? ɪTp#qww#3~f.6R:pОƒ\k]c `PbwȖ}`_-7x`0~h0z],\U#FH\Y9Vm^Cfmnhxx$@F]֡z|DTרHlI8 wlmU[@ZPX0qS)԰PRRjAk~q;oﱦys]|m?5YjɢA@j%мǫTXŬ%KUs~VYCKL+5̀|\?!Rػ3鏓(a@ʣΙkpvZ#9t^&SA*0%EF+kȨU;(ރ"k]rȪcrUʓ](_JR5yO;k+,񊣓#⧀O;]'MIwR)% 貰 t,w?I!篗luK;3-sF)/CJ1o/ɫOGOj.I"HX3WQ}\KyVk`yV:8r}dbxXGBiri֭w][un@BZh72 2H܆ gKuYfP(Z3Jz흢e{ⵊ%VB*WSItzP>l UQ፶TPoT X*IP2FTq&ROlp;Ӿ^lL4 )B*+J ~#,(~[oꁘңNj?(`~<áj*ǒ/Aԝс'9E f&GS\㿙\Km4fxOExP&ԧ]N?4M~8-M֏ca3>#ѷϔu_ɺ̟$IE=dDe %*xz+oMu}L&SÑ-hIM7~\J"ªfm`+JS<%[Y+t)HFSGy3rV?/yFK^{y3ſ2&nEq`yϺo4.!+IrH/;j<;aa+q^5㡮to/jZKuKtu1ʮW `rg:-NjZp؞v+ LNhJ,5~/xVjVrXǤXFDʠ_|ޥ SKK-s#2Gj^'^$t=ryo_8k[k-Vp+GXʂ0 v?*yjx-pi54Q=|cC6!T1ߥ^|1jcʤѸ Scma0Fb4"t%WjW3"*FZ'b&j6޽љgg5 #HQz\N=x! JF/aFkEpPE?n}KDӯ'}h%H@#*#%vۉxl[,[p5Qγ ƕJ)Η8YڒlT a! ػt;vdhQ1!ElOh(v&qY?3te-f1 do9$|%̪$03:GPP]~7\&)>_WlXYU(ωG,@y[{#{IH\?dz#\[_f[ym =wqHV@ĒlA\'f=Y,W+fbXNAݜV)r7ϗ6>k֚^Io~ؾw9WZ<mBҰy`7qI$N1ީ~& dd?k>UBo4?0M-jlMp|l"+S_WyZ] m%OEr?k- f״x%z7s bfYIy5  u#~ihwWdҤ ieMT/OLFh H WH{itT 6Tvs"4*qe^|~,[׶n.4;2N5dAHR/QEnq ̯*4L>F"4Nb(G>s(- Se퓛>Qe-$9!G,kI,Icɷ$*wfd_(kޟ,QX0>rf͌G, arbs#ۏžwg,ÈQRMG|Ea.# ǓV ڞ#ޢ(06VFE쪩';Уh@AJܟ  PVE_M2S%"7y!-滴1Gf>IJ~mQʿ~R2;Aa1Z]\!-$(nB&.N<Кn/L71ɀ S9/.Vq]+0 WmPCXj0Z jIOJcZ!+_zđɗR 1M*[RHiڨ!(USN3IV@J|@'3f͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳfzcztML"jx?rKo2iz(Y;;4PӏNsyQc7Ha&D d$'^tz2뚅LnΓM'Պ3I$|`AO,T^3/E(E+@;'KJ['o8g)rXڋOy3 *iۧѝgC^QV٩@WҔ?3_^Ru`~Ny[ӧ]tM ɚ6k #Ef~#=c|)DH}#jP0ςQdň ]̲[ί  EkZ Sqϫ[<b74u8iV9(~$)4caeI*Zxpy[rINc^a)NF xN\TUPJn1lըJ"aFA#BS1Y:O1ALEUo) ʽO*(u1)-)z(1q[6u7ZwAH&ܱ[M#v,PlE{dZKXZ[{QH%^.>_ejՁ?4MZtc!$fOhт*ASٰM溻-%S8 H8;ɨ")Т^MC(; :7E[m2):-KtO@A?p&bl[E?~5j|)2E4(6)Iֽ-< "%PE @_қ=Mivjbؚ@Xi[FIAT"l7$6шCW.$(jk- āF#o ݜSXbePE<߽O݄zϓ4iLIqQZAXƵ_@R?w7wd$j`$x|-$l%Zq>~KIw^ROExPH >2f ƍi\^/##\pF(\ucN|VN\ܶu-j=ɁRyKV-jzi6dav)4_Q~2Jj7;ΝcvT0V#mw0|# ٳcZ5rxKqbӑaJ+nI-WCROiܣ*|T"{a,F9ds{%y_[<ĴksIJʉh8YWo md-JG+rSqd;uQySϚngQ"!x듘o12Gr<}J;xf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛[RsD|ڮ IrJcQCLZMV;:)ItkL d5]Wɚc|c61,#RJ!ڃ.Y -5-bH-'jl bw ~Ty7S,KopIEc* և:EVJioybfAVP'zAZPIl1n񨨥{և괚Wn<nu8p%sU-J,6V 枝jw:Η%ޛ* *|\Jt>Ze]C"T)ޠj8 $׏z'$ ^ئlٳnBṀi+Ze8~?8 !%:99zYgRѨEAoL+-*Z6ٯӄ7<;n2NÑ4n<*vaoZZ{xVK;QӟʕEug˾mp_]Ǥ[!&uVS'(E&yo0iOqդJ#Z^0}oâՔl7~V~v2JfTF$Ѹп:ȡYZXĉlO@,`j@AooE]i7raQѾ ?N\zl#`^  s)*jV 2f͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛(cٹRv8}. cd+ֻ3#e=a20Y2GĐ<;8/$=;#m׌s*UZQKOkZVP~`Ņ:")YQ?r$d1a*~N~okO OGS8M`Q݊]gh"kKȯ+p%HG4>>R]'̫VI*B @j{TڗƈD3]0 Ġ5ȕB?ʯlFP^XA|efsĊlvim,D.o"( χLZ+*Sv!{0yDInxj+PBUiX(mojVin3/BKTAv22nY>8`ANs۟ErGEPUE?hR+_Ta yj^¾($d;s\$#J҄SjΘzt(Q6'a喋 cbjVztPn?3)wwŠ_FUHI؀1_J}$}J^=Oģy]e<!h#g D^]{b [U b ׽|0Ji<[ZABW[ FDPiJ310ݢ@Ry;09:'0(kCA߶=i7jK.,@CoF1"* #XQ}1@W`O(GOu`g3̕%SsA@|:," ;Pv9޵2E3XKaP hj#Ϳ#Ⱥl?5+pt!5V-_J\#Ϛu$&maMN:Bd=6U_~><Ώn%6ױD7= r<IԔOUud]0B^Ɓ|+SÊ;6l+5HGASĤTcv<+Mifx OH4`A@tNa4V$pAJd7ߗZ Kkq:/Ib~@Іv+nnBS{B7"PW|aanSMbGկT`#⦥H?.yr7@ԬTXt-Ie[{*}4b^ /ʺƾt6iI5/ F/YBaЊyf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lL ql?~C3їEaNgҼӥYikw54JчU0 ~>9Ks?RݟLK]N6{y=X}0v[ݟѵ=_H6Q<'j#h)&4ӗŝ/Dŭǩ7qn.cn_ ꦝ6{LaqUJ"kPokI"$DQ<{kA?2Hfuy0qVaZ5 >iJβEvd۩"s=~j[$\)Bӗo9:k70jO)X"7-^j":ׅG0zN㸗Um.8*R $)r̪j~Y5,.{+ E3+4ٞl-ZX^D, f@K^ Υ{EKI$%ӆ㍔sTS ɺ&2qP( Yon$ tyu?NBtզemW 7N mv{ XKrB=)&_H(=O\ =_SD!=?xֻw#lUpߩ9P$װ8ۄ.!Qu4eƠpB0CBB4SJ邚ݦq(f{BI$І()s,,Yy3tqd=vt5 C*¨?sAM)"bR5ؑ}"p@+\GTD7K,uYJT6$Ө:X^xrx|u (c"o@VOsiR%%208NF܎5_,b&T:rz*AsBFhzg%O4ZVD%o 9=yMoӤ]BܭFI DRdSÁc\Ÿ{)FjC43Ƞ '6(nt}cq0o*vMSui1}OaUo{ItL KP=l(brFYtБyrqR :5Ja ch, O*b[,P݇=zMNL)$T3BH Bj︯%y[:0((v3jT\ʒ 5nKGWv@R9o+y<˫@"(+K8E-l8ӼuOK[khܤ_ZjgEPNM@ռ|ϡB6I0r_yPQIs|6vӯ(m%V}Sʵȟs0 I೻FB,ӑd@Kon"дO6rQӧͬWDn%QA5Dqڛop%;):W,E_^XK b0&|'{J[tuj*MM6lٳf͛6llٳf͛6lٳf͛6lٳf͛1 ͛>!j+NocCA4l*KGh!"w=0QZ4EDs U_y;qʾf&qw_2 ywJ!<*(qwړ./)-DHdaG-Ք-Knc E2n?r_YV6nHX"K)Ë(HhoB~:\F 7)C7DVH@O*Ui tkrEEw,Q_AzIq? ރzW>HdOD^6 x2<L[Xm7Pmw@ `Ck|̉#VYV 5lLdImO8{Kk]]')rD>WW][Aqv:l8EHVj;W;%k-ݐE`9A 3_zæh\,<]Gȝ]]PO-X?ڭ1Iq@L:ySV-tYah "!-;-Z&)Cq^,0mjiͼ|A@ۂIiHC++(*5:q `iN*~"}c Y&% ?$Jsdpڮ/ƙq(%qXVo]a敭+QFzV Ye̪0)RƃQNDӉqAX<$խ;6o_!X߉e޴$8I#5C1SJ~$F<~f?O5Yjs Pwd,) | )@XnPĠ 098.> A YKG'bosz(im8G$~\:PӡYe*ŏ'qCb5$/ɔқmNEhI8,k Ǜ@!ǼRkclnϨ":T정'j<˫T{c9B/PbU;7jtJK%D%e:Yہ/y %h*\w"B 5;2+Bz}߈wڝ3#⧯LwmսG]N?{bs[eDs1X/pGu;2XG  ]{7H?'? )J`)&'HE6C28؊< +\˩hus噙+E&G )Uy||AyHAc]~K5Qۥ{?gt4i:&ڬWPU-E~y/ʻ{+lx@㱡i@|Xg:Yӵy, n YVP ˶PԮͶCr\/ՕtRI|Kߗl򶥢( \]L+#Zr< kiky$2Fb*VcN/͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lj+R7ۡbh ieJ؀FƇĉcU Ioԟ =H *-#SㄚBRf?Ng}7#m>A`C459!#"qֿ-{ŚLI#TPU[$p!NJNjuu6 ҁfuvN%^ ~&T^?OssCִ׶IpI)! k@oNίw&M{ؐpEBh΍?0ksܫgp9eؐR܃߱kUn.cSJ\Brl(Ig?1?2-J4c./PJ!_N5J򋊷 yՔx嶔p$ֆY/ڊX٣S/I?l~j{;_W% jb<@Ւ;1iP@!z&5=F- j*y Kn}Qah)$bV?/ƒMĊX((zyJk*8^ER^ңǮ)-N-ThAB+`lѾ$iUI(`~-ӵlWO/,8؂>x"S^8 `7??DtKA([gs|{]#eZI0 ZxQFV& 8 b)>%<(>{eݫUE zщphvQՊDޘ mP.!PU < E7"m=$FI A o7O]}UbaJ rb*(E~8W>.VI+T0vj׿mCOv:UTnRzlſե./$o$1Azk3y^A+k 8&ݽN# S@j8?>kP]J%E[Rnh~ӱ5F\|k=] F8Ғ>'q4%*ί}f4&@b[mbUb(Qdun. ;7i3sPkSLJ#J (6-!bƌኩھ8IJE: 0xzO2ࠆ$l}N_f 1+}fI2zXv~HJ"<>ˮFK$VbS7\|7Ƴ;+Zv$ !$ u/Adh4eI Uz;rKK.wv6RB獍YT1ZǑ~pͭH]OD-*ȱdU8=|i\7yzcdԮ4~P5`8٫|'8 -R9I''bCHTky's:/u IA\%kgnM,uĩY/$@iJKcUTL˰U^o=/g`2(@wml-) :lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳeZeMeC?GR6;۔ `GWrC/QE #z'v!v/|aQ8O㿔 KVK cq~i7yayͮh1F+( yGC!H}5s}_Ɣ0D*h.X|XրҍoJ8((`~P'-q*;Sy$2(eNx{I823)F 4@Sda VBA?fWyNఅ Y*v#//ƼKA^ݻ,7'OzG߉\NЀ,_zו+Kv{֤2BdZ N{uL|hpnT+4 k0ivb 9tARpDU TSkXwR!$†܉P|Zp)- Q̠@R "!\"hEY9kQE7~8Kr@C1o5I=%4 yuJooXQ 4>RiZk@dq@+DOyOKmF'0R*P)[}]KLԬdA ZEd.INZQXWPӵ~YrOFCjy+RPA ϸO=ik Upq@HWbi 5"%qxT)>UY?zO ί Gd|Ca&+A0{0;ODi%#J"0>!-S!d-J3l{ '_?rb%wFH]P?КsyrO֘_.Yڴ׏r<ŗҊܭAy&DTq8eyo_p/)^A#?PTUSٓ!̶/zxtFM4f+bs#ʥ!WyqX\yLey'c4ӻG+BM!F]`)yM֣̆LC &UiU(ޛ ߕz~sgX}yRķRG/쯣?o˽/JhFwy-,gLFJ{hzȦ[B!DtZ Z:ހ{e^^2ܭW>c"n?kC 4y|9TR\TG#"(6rq~E5f7UY3dy(Q< >/zGBΑov(Ūiʭ龺> ^{w#dX>M>ywڮnCk3'D#~M^a󾡯[@c4ؖ< Զ*ps y};M16^H$EXKJYomiR- l4§v{hyPO>|UU':F`IX =\=tcj)˒'[I#: 6FHCm|bHzxS*93 aV*EhP,2H9ݛ M]/z6܃c4MUg@(=ZP1jn0g{p4µΪWFv=Z:  z8 dc f =@@6իH gSrv+)ҤLSp*hkiwZ+!낑Q %-E udVZ7yqG%dI fiTc.@nT^Wycan=>mEb6vkD޲ TʜYGNgŝcIfuvbCwnZQiBqd|[SOQhPu :ge?$| VigqH1"Yza>]LԭR垩;:d1ȰakE꣯CALACmZqQZ7={ā PRQeTuic'EU>m/6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٲ';Gj~ד S wF`mR_UĂXw?y}-~vWj$En#gs P `>@3y?rJF#HX.#uAs4ELl$vZpV+gIH5q^G9Uɿ??O8?է/?*yyE'rA5*]?㍄0HJ"ygAtXry yK3>ރӒgʯN,xj/VVmW)+Fc^*~Ρa`W0 MG746gGg`)CQ@qI,wX#Ӡ r܁nXanЈ)՘Ē(9r Lo#ѪF\.Ճ-Hi^<=6fThg$aOzso yw((})&&Yef;! )ACބPu!(vh<ߌBӯJSIq8`~#+ZT ^.NF8F"v޻{b0ڬvNH4`ڿ;RHW 6@Xa28Ux&U={wSVĊ#27,[j(\xS9,bo|Cr.1 ߺh@q2ʼnj*v?|ڮ XZ~4jq"^Ѽ[*~Ѭ#$:*P(c; 6-;T5?G*Tm@zWXT{o>6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٰWm:R16E/3^THǢ EZj:y ͼ5܀;!Bh| Þd?;BKFݭRxche<*ƜnAɰc" C[Q1$= Նeki?t=h9-e[yDgwMxp- wi f^I*͔GG&~#o̫{۽xZMqsÄk37Py+J4gMvPGwfİWX԰zz4hʗJ[-Kwa UY9'/z\iZ1t8:r r$T쥿wW|qO˦ȭ`+6RN>wN>բ7@!Z>.FGAIVy6}{9 ܃¥~Rj:\ x#jy5TxS$VZ*U*jN3n5PXb RcEa΋MO,~Z\[i }B+Ynlp̾RT{oyz~ KitNLC!%jv9/{zKxen-ZG#SL.""?P@+]FT *(CA^c7xq@;SR^wXz"/솭~}:~[0X旔|j sၡ$PDJ'pJXoMQɛeXשq_92h J2+ʤo=^[t#oVg4mU@)4 ah+~}n3ۢT,9 tRڇ4YXxӯCAF [os$EQP;}A۝zS١q;bQ%(hd?TOltU{'n;"Q6R(SOIȈJ WOaʆ܅Eu=C\Vz!Uc8ȞzuxUN'j I傅L |G~4L q$(@ , |Fsy "IJK79@<*\[Ex7koZBRPU^=!~V2W_[H=k7qvXڼS؁Uo48Hu丑 ^ ccoZZTOFV-fui( 8}\4$UD$T95zV-ldVڿ_$zF ~', O^>e^<Vj/1kȲJ@Wt7C Q0۽sf͛6lٳf͛1xm6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lZ[TI=s?z$&h4jucNG$1V ҧ璵 1m˾[ŽӈqU~"Y![g*?N\֮ K tj @*\h :uf Չ'5j*Z|7QOZϠ4R0!{vo#|-"NtO,1w7 >qF=<98{a/+tƛ&S<4R&C1hE7!MLiZJyI4M(" jK}g=Ϣ`B3BhI iQnl2ʔ(7iAႿJ%Z7ČJ\Y8>N̖׶l'6+ɢr ACb#k9+ƣrN`-OΖr0\J* (;Gm $vASk(ѣFJ 0VߎO{;P.|!UTZ;щ'pJnVPPrJlM,1,;clIv-IBHTĞ|^yYø SVrZZO4jF~!$\Ko 4r[@**%+ʴ9+noi}5PST(+q57;nyKKxW!Ku.b qj|^ &YmayNV!9C#J%E)Nzϣml.>7E 2OAZEkĤy L::BCoTM@jS" BТ)7 n ԝ"YTu?^lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lMj]h4Ȭ7 bzzeSeQpMֺj ?-H/0 jG>Vto&M ZV{Ԣ0 e|wzhzB#H5 _RV}3n*ty0dId3J$t*@޸2$ܐ kVʸ"9u#Əͻj8T-E<(smO)+J,dk!|@bS<ćL_NbKXbJ+*܉xgxgbLWWK̰BJ *‡+esx[NLxQ,f :T80oռ9 yV;a<Ec? ;˟+ɿ)a 8-,3DcPCC*+4 Bmo-a"Yft-]Jv.m7)x͚Мov[;h5fi7̿gv̿4yVkw[h'DP^Cg?D)XuϪ)Z*)O3C9 hϥhcMƝ0r6îݫDVh VUI$RV_=^U6\&lrin iҢ!دuV,p@C}a4%JH7گ/";?5}Fٖ)n{E0X\8MB\:Q[8ZDVcn?&FQMey iMw,vwZFv cMqw~y4ɦ^+EjIPrrBr(XqD~[xnν,@o6V''pwc+_ܟ㑭+RmOin8v#\Hnjj˒=r;Z}ozKY#׉U+ixzΏXWadt3Q,G DbQ_BSUm+_645 B*5 vɼrmiZ]Ozof' ʄv`.7bHX.uJWsp?: 2 תD3j2}_NU{8XctQr*]ב%E֮ KkK%Z}>!WTq,?8Y?Y=AT,$ 8=][RK)%[Yʩ+GpܞOʏiQWumwj0ZIa.<sRy4!gj7Ww# Uկ촻IX ^ 0w`]չe}N=Z/ϚyY󺅮m4drH$oW :G60>[̖-@*M~eFb󮛭 Z;6GrӬpʁL0'Ĺ/jZq# jďE>/lĽ"TX<! ∎+S;m-b/+IDűO?os ^Zz[pz8U'Gy>, #;Ta |t_w1?O[%ՔrOn;R%Wѐ/0*Xjqx-tⵆ9f@ x88]ϪZZr,2v%P'k <եjPj0<^KFB+Qy]Fƙ˟=yjk:;,liCF! Qeo-jQƗW–ݝyF1OƫQűko1yOr:sGB;EJV1?7}%7< !VZt W󘗜=-GL(c723Ho=/,i0H(cQYlk;>T60YȨ%aNFQx+onnN (X-eP8TT#qn|w?uŸmFhE(v& (∮ Qn Cmr>Pm0-i2Kv)$YԚЖjIpo3Kk&ho\E3q;;ԓ./'f1u! !! \ԅSg||ϤkG%^)4m»5OI[ FƬ ⽺aSG2/bf͛6lٳf͛6lٳflٳf͛6lٳxJ~9f͛6lٳf͛6s=>YFlR*T ԟ'ֺ,7%Mr ha` '_׿hԠ k9D >4 f%vn_콹^@ "8(c}L:R9b\n~ M:~ȼ"LIXH 69[cKMx5 Y/%ӖId9& hҐ kF<;y)]`.",hdtR)FJ@Mb hk44ZWeE_j2QE|ѠXkZ\]D2QUu4=qNs.[,F(V%}5Z'^M?d:OnN\K"[k)EEŹbW$Y>Uƕxƣs,Qh,Q$͂U$,]!N{4GxQM&{aޟa*HŌj~&]oE<_\sG/-̷b왮#seOjrg$wnRj *:0C^^AKkft:7/іBh(>Nʯκm- RUuĠE*G^[Xr {Av)BV"k+'LY`:Q3w˖ rTRniloaF2Zhڻ$mXfP@>O1L݌M)_~]Մծ湲!h'R4<<3,kSxn^(ITs8,$EUz__=$u%:|C`(zoA넺ƟXutX KʅI"ߟ9:?"Z]fJ2ũLm7_rv}B?Ҋ8n:w<}u h!^ ˓7~^'KiVUs 4_iZD ?:Ֆ !58`Z\ڕi"۬op"䰹?8q~RyBk4Y~-YOHi8yS(kwFh w)$1fAxXּ6gftOŸ&ϭj^u˺%WqEs#Vopia 32"ưFxP ; FX$n(:HEHs^eV}Xf+p#t1PV}}>&=D3r=BBQS)'<n(BA(%Cr?mA֧D=H+"4@GWBuQ-za iOaJt,ɚTx4ezʹIgPUG~d>D,?%AI#W !U`~T$ϭidH3/h:cE"GIH c7߮ QZ%IJ aV8C,uQՆہOOk;gNQކ^A~`izP[6 x5=rEHN"q%G"AcJhF@=4ȤX]$s޼ DGr YwW8m5(&2^DRE8 9-Hn./$.~#B_rڬCMb6bB?v?v2q='R9+!%#R'$nv2 can[۹mg`TEkֹ5[3Uk}X%r)QW<ŧM4Lm*Ԩ^Pߦ;0i>y(`9@+&[ lR6[~#65 *ֻwaS#-IHRk' [L`MzLUZSè0v5izݬa&ѸF 7&޿ V[׵KMO˺b(m>&G:ЗcɫQB:vuȝs7:'Kf $q%A~D|7ў0dD:vV^& RA[\mϿ ͛6l٨h:͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lk.dx]j5 Ѵ &/5 .4[HY^I^pzP)FS;8G盗̑)~Z Պצ}Ãl\h2SXB>?پ8<?w"@+ҹ󷖼2F죾W6(]E9rB):'#b4]'̗m <doݚ]|MW"h0Y]ncno"0X)#;W-3Uq {jt.O>M-!'+tЂ퐿5hqK`L0^fF 8*@w3@ysZt7b;[;ɥvu}$[B2ƇUy>j>K_O2i':~ey'6eѭ;[2Ѐmm=NKcj$r4`P ;!5>oQ#5hfPiNC~E[];V){KWy'WuӮs#Zk?x̲3rQN#Oϣ}4bguhZhhz=e, H${ŝH5R\ a #UĎ1 #q]O~-5BO2QP(ƻVjȽޫƲ0M/_XXBIUﰮZnugۖ(3Yj+N@m8}fHm.U}RjyA'jmNDgaU3y.?KPdJbT(jC_s,ɦ_[9x#Y+Q*;Z=v4XG d!SP)6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lǍX,]y&mS__($YyX9c<-r/,yAw Ɂ`}@/>SNuIʝ7HJXZyz*ޜK*( wFQELCǕhoJ Ze{9^&kkا ]~-ȣKtϖ>a=i7s]k k6ΟXc)U!>CjQe.DBR 5,M 2R5gjT)$ɠKfhXTiҝ 2#'f懪thrE޽3Vo7%_( 2@+r:vTys:x! 4{%@z{bn?B躜3\F I@I4;vϓ'1 zKI~-],#O J]Kʙ z ΏP? o:|}o5Gu ʬ7NM@@ކ9 O=;~Q8(=7v="d04%wma"?ؚW5,85;Ylח(-ĥXӨj@dCƈm'ӎ)$%UCW 놷>Ome#i55ߒQUDut@~]~FZwH  Po UP%i%dr, ZlJGwȦ8[-B҃ne&*Z7"ZG8ַ8ڭзfAH'֘J(eqk_)P麝X; +&۸cpK!X*E7IԱFnQ'4:ֵwc+!}oq75FD1W Ӹj_Җ[:yGe; TӯR@ҧol8yfu͍rQ5 8fR@mBA  ^VO#][y} dU y jWc/ &9TPGyr)Ɣ :TI/O8`Ҳ,ZvD.-෺W<|\45L%wT`2O*SwV j*>Yy_.:z6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٲ-}k%E'@kZϥkDCoO LAC?έ[N$MY.bh∤Hhd;6?"4xu6/;bB[vAc<ܓ>" H@j9n}r} c"l,v?UHVD!kUX7"hܙxF#⫕o/֮y}@4r)&PyFPO&(2 jޕ^xKK+:ѐkA*Ec{$Wv7鲫 siW־c21D RFE Kŗ)j%9hz_ō3N)qDejn AAL?/lIaaUMt. ΔSq>;V$ 5벓kفeJ6)ESѐZoS:BRjV:"¤c` vPwpQ򽜱"ԄR[od\pѲ ̪gA_PEDc[Ԕ=c<ժ~PZ3ort:.+]_}-5!qB<w б# b PJy+B {Bg/ПҹW@IT0;9aYZ鴛5k׶?)4}mdSAw,!GhBjxv ϟi'aX[(c(,ܘLJի_g$qO}k$ ΐ[|1"QRY(W6zUC#Va6~q[^6ג}iZKoTn\rqP~Vy Ͷo}i`eK<@[>y/_,x$)XW }3YeO͛6Q_(\@:W>rrܶ.G-YiɮdU@cXZ|?kG`?;?kzx|C)$WsW oTʥjIޤPo<9qoͅL}+$B9C%t`UX;䵛R A1yP$BWzGX8'a#v;۳K b/UV i dВi'}^/yu]^Htېȅ ?hPߏqW, .T"i`]µK3,x;gs{՗Z) GBu (]i-ʱƴ ƽAvAQX(t) (2S5jeq֍XP -QwtSd^F,kU)o4aJdT|ksy+NSK1HPƔ߯y[ Ϣ w? 7`|5bI_BDb5Bh@k;0+D. Eʒq=BUJj|_Nz1s%D %\܊V'v+I1};(55\Z:R'QNQ/ޣ}鎷1%~4kc[O$J&C"mOjvwmi[F?l6sş?z,vų JPpiZ~~󎟙Vz\RQ\J܀"v{A-aFVTW$JAyf@;^v$uzjϘP0gKm6h~pIW(ѵKv)ƍ")n9$vgpOj95m#3$0.S#V;s?k-w?Nz{q^?V®'ɹoY$cz}šCtV8FTjP*q:s_$1:'Hԡ&q,oPc^X{N%#PA>*ɾF[yD+}h 7΄õЉ19E9`$m%v SܑHmɨ;[6]2@74^ ow/ kCsLnlFVwҙ'$܈PRJ9gXV9lUR4&JTU؏HkWiB( 8JV^;zuvQ O'ԙ> ܪ)J=B쵯cKV <:1HkpfSr;Fݔe17?eT3yP[nb@SSN_mP6355d+)jLwfS&2]^. @Gz]gRZԢh}4,ƀ+˸\ QaG/»:zAiU' U@Q@6lٲj*#$ GJFBJV?0-Z/ΦW "I"EJk~ajW^\ԕSD5m ?9֐Mq)P1C*C@џr'QԮWh 7#|J)bޝ\X(OR;|pmR_5ƽ l04j9fߑ /jB@;} 'Yu Kl@8{gO)MέihMI r R ^SHEQ'T +V ͷzu|ٲQN.I=W3pڽ+5//A>QJ/1;ߕiOd{ 6"1$@(B{9yW A-Ae5U5+Q[=#8wgOjXuhY46~'ˋ0` NvI3f͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛1 7=lLAf\\[H+Q^4>3\`-#0Q9*VjZ‡g|O/ҥ̶ɞ:eLVۗR)Cy̢_9khZz8CO~,ߐjA|dJ2THӯ#}%iv 'jzr9t.GbJbٳf͛6QUXyb3%T푽^=6jP ">75-Z1kyis6]jѹg ˫PEL\i %ԕh> |,~~WNhbv_N̨-[C?)&ܛvЎ{}4yƭ؍kbo`ApM[x7S<9-aiiYimNز5dcP* ~ Y2y7UD0 y <|F B+NyJ^EFhֻrO:d71 AU T`KJ#|l|׬fT$H`kh!kvW]Q<'u="w,$ }'gd;SQ`w^z1Y[4R>(Uu?hտ0dn%n^Ӥj 5XqZa2YS%ՒwpP/9 -//k貉=I%XlJ9j+Zi?VzIo^H`gU.RFTrvoj}:[DƲG%$$pO"mLٳf#`z@~y֥%gfjłrc@+u*$4ٟ~SҮ{J,(2oRI]m<1WD(x5mWIŴ#H+uNI-t4{ec@ Ӱ':CҎ3임s'Uf (L7* smVnE_3>jCͨ8U:oU|Ǩk9 ([5/RF^6ċDӘO1Ӟ8DbFvO,F<;qi(i6lٳf͛6lٱ3,4wv0}Db(l~y_/ãy'Ho-}bh$3q~]flt^`͐-m2@ZT4A͉ʁC<-WOQ]A,-J̍ʟ=^% !UpvTRGB"W'?qElbHR6<*HsHZVG+Ib\V5., : uI=6hM;/6T+q-=v_;N2Z|M$j\F4* &NđncqAw%b^[9RJTqZCOS4t/tȏJ8CA@ aޣM%fgFb$bMϫ_74Ht;xҌcE,r{=s["JPif͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛͘6:fiiV?rHs_6./[]Cq{s(l+H9 75_&y}#H DRX&FsDnB6@~?>VA"P̨pECJՆlň *ڀ"X(ޜѪ,Ԡ ߮O$!+QO냢N͛6#3!v f=ӮC< 3"1XmkPklߓujp5C7h~gпɭIkhZESOKԒRýT6ҕ͍oE+ڃ9aXܜa.&bvsA0bH"H `70,WQA|2#P q?g<8ѡ\jzԑ!1[߾1$*y8riB(Wd@QO^lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lu2nlxwMy?rz,>L,VV5BHU`K?~.g4_0h\Akjq+siiͻB#j>mm_{WGq"jpDaEOQG6ꠏzwIV S;R:ku c,VOLaN/o=~vlٳzB*[mk[϶S09H%AT \KiykZ,' `,zȆ2v r;3~x|wwjJс)i g?7Zn =qm#r8s߁4+SҷL_}(q+:d 70i*+k8&6Re֕yPt Q}=b۔CZz o23Ku3W!U]giKq$ު&a=--mc@hSolٳf͛(*rc@K0VfIeS RF$5FźZ,`޽19W1Z4V,?侣tXu՘gV Uٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛16Tߟs\X2-2nʯ-!-EvFί0^N5%ϩVnJd5$'Ĺɭ/}rh:NԠk]ݧh 8WGb:|=F@+>}\4+J`v5++BG( _ٳemһiOƃ /^8̳S©RM+h>Γ;Qo55qŖ %TA$ :H\NDk'rXQT,wK,c<%;$e5UAQ[oWs+F?%)m'Bzk:g-cR#6lٳf8ye"3T :f`-d8m^rK#@>f8?%- Sq<7!?e `nbA^[RԾSIL"ΒTI,޲,Zn'nkCw*R%WЩ*'z/}{Cgim$ 'yl7ϥ?~f:]}A!ܫLI^s3ABP5 qi]g7Re{uꋃ!Ԏk;C*ԍǦK"|Ǩ\ovܒJFKP p:\Uq:^LEvG^HD=>^ȝuKxY@ R_o<}a.e4vH5N%N 19pr<r֗BhUUd 4-$VܨW;koǹMJ[Ƥ9[jY#sQi٬ =9U6^,~$?9Z$8Y}2 )BJ/oo#o՝ė`BC1;S,~S%R 9 )+t?VYF>@JNF&, Ei<YOTTTx+~]3b4bxeGIdi܇C[LyZpʴhmE͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛#cИ\I'8FFȜ6$mg?997=0+3=%fA"y+2ZEuo8]ɦ2K,=0`.so-4].!jStx=֧cA_ ]e*zCO|ʡT( P}yf͛*8ΈS#J߯,8Ѽ.uHDT (&WUe@qWZ\*nhdXLH=F)~ TS< ŤʗPP#y>Ձ SMJ|kI-€w,”߾}}ɺIn.)w:2:+  m.}nIi#C2dYTIdg8`M,SU{g#Q%>F'e,e͛zA玿-ڛ(Z-m9eF*UJs\ܝZI~X0ZTڹ4.bkxs"dmJW=a OI,"Y8N-V#ܞYyKm&oƭq$qTSF >s\HɊ#8RI2E;4NT!pJTڣ>/KKLIa_ g5Qfw`6r$`xR/SNA_/_[XoF#g.dg PTS3ZI oIg*;LU;LHƄtߎ{VK2+(O՝zȖkE3uz:?tO,κ鈴"HQf%U%VTxr{}*ɺ`xDw:f'NeI%Nlec\Z]V5}j A *3P* /~86Eյ9g-N(Rk_(ntN YӕLڗUUHƘMiӽcyb!C`|@\F(XLHB o|yGamޅ}HGR9:R6=ݨoFXC`(AOrS9/|}wW8r?೓E[֯7v&X^LP C#%{h6Kil(Py6lٳeWze͛6lٳglٳf͛6lٳf͛6lٳt62ig!Qf'aA9ҲO Hb,̀c'PR9;YYSoLysY[jZS]ٯG2pVz#Q\=)r?O4yKu.K}w`@^eB쑐Oϋ2*^:ӡK:@#"Y>P,@A#aS;w|mhrK؄zwT(" Yܩ6Fңk?F Q̊UTPV҅PZ ~! ;$)ժxW<=*lnc!)&h䍮kF܁{w8m~+xc֤G*J ^yM(pR?WHVdSSB<{9KjvgWHeBb*Hg %B_$vQ5ߪEcZxԎ%|61' v')F;6Urf͛NO;?: 9}eϜ>y,XEXtq#859Smҙ/m_O._i7ck3rDoD܆\/'g^.Z F[WQ+ȭ*;/SLJƉ#* w a? ȏ}*R1ZHej7;A;8?,uNH/m# y+jGq|0i貥^w;ԒIϲ;?!m+罞6V91J%EQ@iUh9<5mQXZ]NXJl7x;o't )mՆr B }*:mB_fʌEۦW?)|IW]ӣ4Q5BexRx3 W|󕎅y˳Hmd %^Z0GD#HP+q@;;慇a%v[{גrҨ^xd^󄟘dr2~UiZέKiGźT.|G +L-IoQ`|x֛L" l> {S:b/6l/6lU7DbB և oZ{XLM5bFyrKk_ŵ֧=i8FWY/2~L~`yG_ԣ.!YDi8B]nn =Sks nK8 Vv.@7sdMk\B%Iər06k_mK/ªHA(D9BW 7W/xZz}aHrOk힏^(Hpe?ϠW!mRJq1Hh ~}Zi$y#zvƂg_i<~eUQR63!, G% ~<`Q.MEXN5O;uϣGYmT+"}͍6l|=hEhIg#>{{ڤhZΙ-#[_N9c`<!2iˈn'g?+$$Z\zQhz 遼ǣ_u w o4& 98/ݰT=p&vCmĕ%#Z-i>?FTq㐰aĐ|GL="f;$q޵g/ O򝜳oV4$V ]JgcP1ٱA@ЎUn v~ v!uɍO|-侚ZS4@q  WmaU= v^ն+0^<:ӟG&QlNN8|v汌TaE"Ѩ䞔5vyroLo0y"@Z?xrF­_sk0aPI(*k^nm=&Hf7_XBSa%\0ңMgDK(`q;mΑv͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳfv!"e^,RC%Ɲ4T.-8^yQ[Ym<6ג~ Qd ygAכMm;Q{㑉d^4P ɀZni`+M0~BxAf͕}kMr+uw>ȏ~OTX Y,HNH r$u7~eBh0Nt}o) d) GRw|!s}4IWI ȪQ?]N *M^#gngS ԨbƬ()3ySV)-.+r) <m~RνwjX$Gjr>ɿ'dV4 Fhڻ4Vnw;1jTIg*y ۖ|6{ӴuԬ>YE^OI8lDkc Kɉ"S;K7o m|nlbfHuXT~lS/6lٱ:؟ We1t^G-k-HT )ū׶|<{ot߼Yg!*ƪ@AFZqn8~P꒛X PT(qh)wzuq^Mmb9/D1;z\gӖ)4˘m-Eu# G&pOrvT/Žv֑Duͺ:O,mEbշة?NuF"Pd( FP*ۨ Gմ!Yig E I"5 INuNq5XwcO/! q#r6N@(jW9>2}zrꀴ*EZroȳBЋ~$;E}:P$Ԏ=qsI}IjZGion^.X 5d>Dך6</W-bkCle$r0~,#!>5A_.%_4SW{K< d qOhߗ}Ⱥ`mh@(xSl:S6l@קNDZ͛66v?kZUMUt=xg7x,,o|{A8H#*~d֟ G˗~V~__jRAoqdp~hx;4}}wDVpX "U* Uzޅ=3[@0rbE\T;?-'Ї;Ggg-p0$`ɽW ;ȧ+H$?sCӌ0F#W))=w4Lv6G@D`wN+S@Ti>nbcG<6-ȎIoGq,AbYHEn_&9?+f_ 0 $oCAZw~ swƷBgYfUI@"tAZ8bf͛6l9uCҢ<8 ^VX)TZ4߮y^*-)zXK{frz Uq:K}7^E2_ER#Nm$a5뇯8nq a`^lZӾ-42j^4ucH"Gh2mP^o*n-. PD@5ɝ^h:ٲB0<6nҸA4.~.$F~=3E)Ww,5[S4+$AN&!n:=fX_@c+D2("jq+=eɽ2,1?=^rƊqɇ '?{d_amQ߁y#x4HQF]Ay-Y/>)ݩ$Rp>*1]Tv}j#FԦs2;ʨTI'=ϡynn  ܈,6ߪgoF".GILٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳeTͿ7|g'1"[2'W5 Tt*.r\sVs8c2 r;4aBI=8 8#ed~Q_щ-sZۄ(zlALٳf͛6lݫQso븴&P4:)HTRG~.V0zZUˋ 0*Đ )7zgf @h 8HGzk_RҤS=Snf>x9da4)i$eC!@8^T;}ߟN򽤷<զaN"@Uc$1aCFOoȝ(_;^Wc"%M6$nOq|'=>3Xi.8; @N,vMn*Y>.(yHdI1\ªb%Mz CI֡i4geŕbr Uje^>~CkvIS**tf]Gݴ2fr;C1'Reoo.o=XGq TU7Gٟ YyV.zZF bM)te9>6:>*;6lٳf͛(rlX} \応N}ҲIEbSOW,Ix f*+½{áe PN5MQ_1$&9dc$M{_VnGC#ԅe̍,z2BS Wc;[ids%CVѷnQ"$qPxW纲랹 <ƽ i/ȱF-!Q!\ ~dZXWDtsw,( %A㖘D1HR|ei!#V^&P  '7^yf͛6lٳf͛6llٳf͛6lٳf͛6lٳm`k7MWgr͚}eK$asF- 9 M~]ym-u+$-rwSE`%O 羿/4Xl,@ N*6t6+q|ٳTV3f͛6ldOnlnগ e@RBB7Ҿ,y `uZ7϶y},+c4rGV;9o_挲[hUp2P&bfLK9.*f_a7N~g14|b. x|iX7BN$F+O-ũ+kg7Ƥ=>qrݖ׿on#)*@9.B䪖n@v9rOڇmLY"Q Z8bX(H[_e8k7a764(q[ϣZƷL=UUVҼEOߝva" k3f͛6lޙyf͛6l؄@M|2?˚<]ܥG#‚nWq~saUӬ&]}QCTbUUT;̩~]F-: ~ R1!bd;s۷|:e1 E=yd7Ti v>x~qyasxtw!3ơ?&S zz3Fg rDŔ+4->):m7X+U/J&A~ybe\nDD|MѭYLk|+^ F@45׾UksuыƊzybT*G( @߾Y8@T3]ߛ<'F(:KJc֭ +QF&55,K,E>YF@}=2m])65w$ٳf͛|B Ny rXuX#$սD~6نņTvZ 2pvmRp,Gzg(լ4_^@I q=hÜ Eqspʖ^f2!45߶yrt1։t9E"H1$S*N|s_sok7KD vR)]鞺Ҁ0O Loao_o8rҮmHXD"COϙA P &I 4qeCW:ŠF)G,iJU>:Ϧz^WsrV1ٳf͛(Pm͛6lٲ[MGdwU՞\h!@?~xPԴkx| UbyU _l|?y ;eYRxQ@\M2e5k_,JoN` ?Vހփl$Q??޾;-dK~TOdWϖjh6Ϟft[r[ T;2!T+j<:[FJm}:NdIJԻqjP %=RիEzS$v6YV?~*k ^kmFbD;7S^ֻ|n,["v׿$dFXԹ2 gieI" t|dY*=/ci4cI%H&{>c~d__5&oY`DOBR^o.^EljFpnukPsٚd>(alٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳk5GLpB ȨFv D}wͺecsyZt2Ӌ)1҅&~?J~E#h`vyrj1+jzvoDF ͛6l8' gk~a[HRjRWm^ŷl(Sn_#+⻀EuV;<z 8WrKu@~E S-Q>}Xy[փK֥Wt=|!rڕ$~Fymwϲ[Izn/IW,~>'gKY^GVT36=bKf%B;JĦJ=Ⱦb҉A)=A_m^$svYQhy ߳8MՕ:N4p[4T&AA$ʨeZg+=rKg?)$Z/zZo^)->=i @?.޿o#[ׂ4p?LnnBBi%{o,ҚtZTCz %`ny(D8Y\$ZH}\_Iו/|^PHh(@r$6Y)m"tJB(7bEx>y uk T uA:}p@1|ٳf͛6lٳf͛6llٳf͛6lٳf͛6lٱ+}ZNP V<9%q y/~ s,^+dn+Eb Ņs=4CˇUiqFh*;HV>@|הA oft Oo鞊ӭ0ǵInyf͛6lٳanD2D ԥ]LUc6wN7RWvpKzfE( s}sZrEF*@S?~/͍Wd1yy|$ٸշi<xJRYY^=68:=޹ROFF$;OTq"(*~h_]yto0XEswf%H ugioT tMCK[H+63tJVxWvceS/`i0Ѭ{;2g0Դ.mkrOJ׭*,}c{_#q걘 rX|"xg:}PԧhW]U$EiލE|K]kM5Јd)" T'OMz[c[qjLHD'(+BMKҕ*å}Y LEAwCM Q? |-Mr1eZ?Zw}W%oUAf'8u#ϩ(YyK i[CRAh~Fព~b.cb!Z%hXXm5"h$ e@8țqqXs(?1h-?H6dY f~HqAf~&E7̶q֩ny"V0* u9 v (ژjdcPxBʮFvE" SCnkL_?~r'WGi#b^vNğ<_O47U^n/,΃ % v `s~V~pN"|8tch`kQ<O S:lܩi֫4iv>nb qt$wUpPI;e/"#zcԚ|G$|[<}sWlk0tXn#/##Z֭  ur'ڛ8nt\oqrK<+!UGگo<warXq&I-[v2)&nX yiUӌWޯU& 8Γ4vX2CvDTNyS;Sz~S!&U_Ǧu.J (⢘MAeZ)z g/ϔbխfĩ:i34?)&RF4<*EC-~jx}lc̑W62Ex|8^"ݝ/r Z6H=ڵKrڽYONr^,ٴXF ~OdNsGr7ZsuytF#I(C ;_E-_zk0n+̈R~Y^_](8+Ҝԭz8jq"&xJ Ȥ*!$qicm*a٢?3 ^ Uߵ@Rz9zS㒏*h6:mM?&"drh4>{v=NQ0%̛г @yERr"6vd1L[6lٳf͛6lٳf* 5SiO㗛?lٳf͛6lٳf͛6lٰ=fDB~&Km*=cH[ B-"Ÿ8oLnUxj#^]J KGԅb$x_>[?hb~"wmHBbf͛0͛6lk@ ҿ,󒷗0yZH=hx\|.*H,ǪQZQyd,M4bЯ*RS YpYɠPӷ\]Wiy,lT*k۾yjť:,ވY jgND79m_ޚ('gNHOZiS/6&蒆1ȞD5GOvzaFŒC%xT pVଏdƌXRWp@Hm~Cy˷'ǧ[`C0RKLZۓߙ|䉭/3= [BxSA#e.V?j}̖2jb#dxIʿ:ސ`aGL<]Ԧ͍F6u}':KŖ#0'*j뒸5^D:TB: mߨyzJA=7zL)C^O,O1†5==+]Ԛ;WܪK"6Ř`?FjZ B=7cOso9~dán!&aPIU%F+Ҵ?<Ψ<è6驭ڇzdIU_M;wYЭP%`7z'~/} qL- $ f͛6lٳfޢ;͛6͛6lٳf͛6lٳf͛6lٰb*yH+Tm< 9g$Zc1\1*IQj\K}Jtm}eԴ?PB'7qPpXPy}\U8J vlٳf͛6l(Lo漁aXo-UJX'I<D\I->?*f$MA ;V?4||5_\aTW琏%0]"^&HS)%y#(yvS9.K^A[Yxx]Pу,C'y|Y5{=WF`jVMSqČe+2.)Xj,XxFf'{jFwy97v̖qQr?f6jh Ҵ=Fآ+Go;)BG^ـ P|ri7P0!3Uez|kPXkӜz>"!,.ZZg?1?Ί}u{ [eBy]oKVVdc!E Q[J0ESV~u1jWR1d\$$WZ67'&r^kI l]2!^+@E4K#^=x\>A6wgYP~j1stT`yUA$҇_xIC$F, uK[ee]uy"i4F(MJj 85)BGcfԞ(6Phfp6?z uULo$pDhnvB@$W<͟1yBF̱yi3]-6Q[zAcN>G$:vr;|̖s߼ׯ4TF8H1'^6Υ8E5m&z3 Psaih⣥?92f͛6lٳe5./=IW.x /[~Jj!b iiv1C-Cl܈so˦ GbYfMȑ/q]~Nu My<0;8]Rj~1Ǚ5MA!-!{IYypES~PݣlI\B E$`xsYsY<~O[P[odt@jX" [-$XPZ)d'zo0@闛6nT3Sznj2 ߮GM \(*\ķӜ_z'&[TWcQF^<8JӄP(!Y^6-Ph f5~Yy_ZA >^3a!# Eg^ȑ;"Eh*iSBU ^{g/ſ;hsv)C+q 랕,@K;)Kq"D=z)料V%eg娹UDm?^yNkM:mTO v ~%TrVŧVH.,mVue`K>uYmZ A%QZl uFm͛+}=1C 7ah{+z#Kc*=XRm[r?xS+ߖj{ctNcmg 7o.nl DE*V OWH*xAN{6_Gq+zn ב8? Z  !rNU@޿Y |]I9$̀Q zc⿝=sS۳&fQy/Ȁ|< ޓ$}=ckT3@YyPu5cPM:Ol'6ou4Cq VSZmzk(oBFOQ1pjE:u;0@j8A+m uOP$'w%ҵ'|T?Y7H?j+ӎ{Wh%1"1zu=Q"Dݪ)Pev̦;+|ٳf͛6lٳf͛?lٳf͛6lٳf͛6l'jd7͐M>xH#j&>u~biWW _3+@Ãe⵫q\@XJ;إ6j NNzYc9JBz9;P/6lٳe<$MtK˥Ih!y#)y BQRZm>"nu}N3k1m H̼Ccskc7ykZmXאAB: Gmqˌ:ַ$Y|m§VZ G'Wlu/:AsxlďYak}erTz},}_ZCo(Hgx8К^o9y:K<7 _ybR5h@Vd:~!ּ75SVRW_Q(Ķ{sE!!ۻVaRu1ٽf͛cCfƅSݎX;}U܍Gn+B(@5?]h\"<:)ēԓܜ0-b}i "xҽicp1sf͛6lٳ\ٳeq)4RP8t~-"\eu AзCs5ʉfZR]Y>t?>hb'J( nTS?hNHwx(vy_O Nbյ[IL 9 X2}Ükqʏ?8Cy4ӓ](B3Fc8(#sZB"E)NfLٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6l؜Ą dch5ŵns"̑o;ϛxml)i]\\H>ƥQ:ϲ?+Wm75fv0F,+_bw@As=2f͛6lٳdc)cK*cwsJC>&l=[P}";Cf1\[C Ŕ#F"?PHKI!߰Ԭ3d]~^m!:0ĴLg疮4&Y-]w 0i bA ý 3~Zu M:H[mEaB=C^d szؖEZHYkaoƫHg,zGq99u#?og,<$YBs"qV#P~\{M 9!BZjԀ>1ƹeZ5ĀO7f͘$޽vJ=f͛6l hP:cf͛6U~ᗛ6lٳe ֙y]MUEzb KjvQ|;8^C>X~fEd[Ηwr̳s'G 7Ǒ\^z]yeDE$zDj&pn?}4-{٬:s:)dB!RI⦦~*=Ow^gh_P#uD$TP ^~{q5&scgbڵ=c2!q"1t9,6lپ]3f͛6lٳf͛6llٳf͛6lٳf͛6lؔfs?yZAi=+Sl4O"M!F;.Ϡáư]XeWs%T. (g/tvOV6vG4C1Nu#(.H5'Ƣe͛6lٳd/.MBo-jz,1OKp9B R|>YUO1s_q jCCP,Z 2xV1'"GjsQy[U*,f'U67-$6~YPAAc"( Ǧ+RTP ^lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6l؅>=QŨOTNqj9CV"@^"4yy$Ԡ:O)Y$UQ+K'..8}+!a$IȀr (}32f͔*0Ayf͛ΉNl *iRz!2GZKAm崙&SFW~a_[ֺYg0[9`:IW&ZP~jM3OkSFc~04jPg=yǤGGfBAozg_wմ/Bj7#! ,os A]*G/ާ£;|zחuGuBjs#4)jߴWL~^y]8=3g"bLNBEY=ӷee* sf͛6l@קlx͛6lٳf͛6ljPG&zf͛6lٳfͱNݲPl;fEپS֡ 87W;J.6xs2q]{XgbAztb[g:ti|ڑ^랑B!6fܐ@OON~_F5ԵH45(nf#+erATC_ & AjF'f͛6lٳf͛6lGMї6Wȶ Ӿ^lٍi^ٳf͛6lB=W/6a^f͛6lٳf͛6lmӛ6lٳf͛(n{g" O& Ȥ?]nUFaH)gא5cѼ/|v]GKn%T-(!h'?0V=almm_]` ~#`jvK] @݂f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lRSKR8Z[_ơoDڌ3NUA#T@6KJP|@͛7͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٷ366lٲ5/6lTZ1:k}wPt/U\(gόkR,m_ԧӧe"UC> l/徕:[Y_Ǎ$A1\F߂ e;|T]SӰņlٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lA&yq R&{KrhLߦ|'f%ܚi-Ib4ln RVI$ԅ5>=8Ѭ oMm BIs$qfNtr2(Xq4$5O/"iW'H&I{TRG0W=_->N-QREe @ ᓱe͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lB(sGʰhv|[E;#) 3/b~ܙ_oFvZIໝ答Qh,n~Ͼ,Z-%RDhD6&UP;}p^<ٲ/6lٳf͛6lوћ6lٳf͛6lٲ 2f͛6lٳf͛6lٳf͛0͛6lٳf&Xڥ֗g3O՞|0ۈOt<ٯluk('#nƍ'$F4#g YAnd#D^[=H;' (S0|߮^lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6llXOSl`oB^Z$ 48u渵cABT*KLO2\N Λ%WۉߏG:COtϢ_~8#%q 7Zz"U_f͛D Onyf͛6lٳfilٳf͛6lٳf͛6l^Gҟ<ٳf͛6lٳf͛6lٳf͛6l؟4AF|WVwiϡX#6[`S]\ ^#CBxcu`)ڧ% A^ (͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٍ{f͛6l\)ֺ% S9 >ʃNG< ;ͺeaK-q"O |C^@RfQv\>9ͩui]G%gP:+]]v_"> TM)O ͛6lٳf͛6lsf͛6lٳlٳf͛6lٳf͛6lqLoL:/6lٳf͛6lr57Wj ޢe͚6lٳf͛6lٳf͛6lٳf͛6lٳ\ٳf͛6lٳf͛!7v~JQ.{7)tU!w59]KA淤v'MnGHW+qW嘴m_%ռge*qZ { zCN2h@z!N棦F֪Mf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lFf` )ȟj>W&m5jQ0GGPդYvePʽw?>_w>R架NhXJhJTC^&}}VFS^<9͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6UMiMrf͛6lٳf͛6lDW<9k6DnoTEFE"?ObA,G<{̷Z~&ԾamD ̢Ćmxٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6nS-9@T'9?=. ~hjZQXm 9>Lj[U1ro_oϨ-j6((cIe*$`џ_%N;*NçYf͛5iO|ٳf͛6lٿιf͛ ٳf͛6lٳf͛+z{/6lٳf͍,c^mEڿ76lٳf͛6jlO0Ya٥'1[ʎuYcۊbj]Nп_&!Ox2E4ч>s1jZ/涙he{ j+hɉg`P4ZO9*"I.<֚kBS*/QȆ~>:z* u;f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l'&]ё~vs妝i^g;ۇ reiWZfʿXAU^S#u x.غCFbd 8ҴoN觕ح(UC0 rUp> vlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfq6lٱ!Jp{C楲40)ĄGRj1WWSQ͛6lٳf͛6lmL]٦Tz+4Ad @) g?|߰ϤEPoTN^M?Vlٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6l&%T6? Kx< 9W}no)Q4irY!Eς@9o:4[B̘PPCPTT&HP;UUh:R>}In)͛6lٳf͛0ߵ3f͛6lٳf͛6lٳf͛6lٳfr >GyNFE@sW~U~fk:$l]_D%fiE?Ϡ5d miޝϾj~؅67o8?'1dkB;ۨ⼄*R;f9PQG¹oo4I;Mi2NNjԏaZ靮T 6b6lٳf͛6l;[gXzsϚ9yryF+Tm=w eH(}V_8&$-+C+lh«=-,0GI8 H ]vnٛ.jBo,,V4)Q,jxlGn tDk7|ɨ[rv<Ȳ@"@VjZjwwQ܉daƭ*J-xWv- ylnK/Vڠy/έ3Rem5*J젣 W<>ӌ8c@J[5LPܻ,FPӓA'{͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l)nu)rBHoϚb$vqX~[oա^>aB Q} JSl_7#]Va&H%b5NQ ndVǙCv "PA!b8/6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfM/i7:W^YYʊ&D*|Cl[^O󆧠yCNz\jܵz~x7oQҴ/GR񧙬=2G1[iW09+˛T G:*s'W-"Q"p5m; wZhM?'to&|HhD'iQʐ܀iŸ9HO(Ċ Xg6lٳf͛6lٳf͛6llٳf͛6lٳf͛6ST+9 -sEh~> G MaO-Nߗ5K#N׼i ݽz_Gg"Nk~/x=W[?.if\$#9cB4\JGM hnVVI%9 n\Ms|*`$֛အf&8䖥eTkkevyH?c>u;SV-OD`d{׸$c#rެ͸g_˟$3[_9Ge,Wj>ul6vAk ]w>#Ϊʤј+؟;6lٳfͅfy}q_F:%P7$>g~oYuxumYKWQ< ~Hl~D^R4KI[%w**Ėooɿ2~`6,AI5̰#ܺ #^v坏qcS~h"SW|bb㋱G ui{1AW`{ٳf͛6lٳf͛6lٳflٳf͛6lٳf͛65UK@$_dY;;b.+[xᕮ_АU_J(ygU]KKU6ҹyUeMQnY0ܭAhı5S@vW|C"5 bf͛6l6lٳf/6lٳf͛6lٳf͛6lٳeIC} k+/t> n񵗙#o S*:UwWŋqok$${=8qLLTU*u{BA~A",&88tO*[.ey#i&Dҁ%Bg;Mӧq"}sMEbsUvUU(Dt9aB}=I QqPmeZhv͛6lٳg$,^jUX"fed$1-~*ߵ}WG{/Y[_Oa*% ,PN.n c`ҥk_~W>WZ{qR1kѫc$ uQ p1-=:%!,`G H>ypT7m&~Sle)xz ˞Ne%ƤOMNHsf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛)a4r!~R+ԁSL^:.p)}5b7UAFruV*K&̣|1;]L~a]~$.@ `PWtˋs>0|NLjw闛6lٳf͛6l`XրTvs6lٳf͛6lٳf͛6lٳf͛1Snm9w&jzFjF$M-( ۑW?ўS/?4t,kqi\jwB?JU[x0Ƥ%KQ=]֫v؝O:#P0CZzsͿ,\Zֻs V~heϾuֵzJbXc J*cxqu+-'^6P-,SYDgf$UC=<ـYx۰lpc`Y d6H3f͛6lٱH}&M{:Ǖ/t+4/{&ɦCtc 'S?w=Hg?*|]BR}R9$n\#FexܣdRx=kdXauE#u(H*%|=7&M{VBUaX,k}#Z9fHFu/-IԬl陸]3A%!tVF$7c@ 390Ffe^JZM~5-OZjOnyf͛6lٳf͛6lٳf͛6lٳf͛(ֆ6lٳf͛瓿$?$wX|[Nk. P(D4'e^ IMϐV*Ujn >s6x\o ՁGC|T qL).Eeeoo<1_*յ̃a!Y!ufؕNlZ.]'\OZvRY2#:уV3ڞNҾiVI`Mk֧&a헛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͌OM RoLyV\/TJ)4Uƃlyټ兾m2L6+,g߳~(;jPLt]EdEZrzR 3*vo|{ G-cFw#@߮&#PEf͛6S*ZVrrf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l͛6l-i3_ӥRHHS4S|=L.Gp kYu[Si_n-_WSc%rݘ$2Pk=W[}]8ӈ*E|*f͛6lٳf͛6l@cSiOᗛ6lٳf͛6llٳf͛6lٳf̈́)O gz+5@ :H~di~_Ŗ]j:g% 6ekMO\ߖPh,}e3%dW-u;76_X=&ZHޯҊ#RkL6W`=0͛6lٳf͛6lٳf͛6lٳf͛6lٷNٳf͛6lٳV3f͛6lٳf͛7Lٳf͛<9qK/$][2'$YTvI62/7Zjgkڷofn~ߥ$E+X|*;u_Fg[Ũ(7 ȑ֙^*zS͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͜wqjXBla R0pӒ?VSvQOϞt~:dT1͛Tkrνcfyƻ}iS5ڥG$OIK0{{\~~Eit['+`zAOS;_6lb4 Tؑ^lvlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͔v" =^lٳf͛6lٳfcRLg !%^OϿ'C|(/0Uw:C-5}0ǒ`[Q-m+[axXDQN;uW f͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf5{|yMd.FzVA~9&߻߻.|]*Xl|x5)ejz|9|?i!_ 3 M7L>Wʜa^ 9'.Y|n:%iMӥsyf͛)͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfı iN3e10jMO.jMgv8H{9jH>AOޢяÞ`MS~`r,sHD5dY@C̎~%[=8Mt.`x'0quZrjIzj,W6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳe$ =1Jhڞ'rM~sWc fDљ_WZtoy\F'/onc*@+_E_Q՗*7gx,:7C/kom Kht_&Yf͛6lٳf͛6lٳf͛6lٳf͛1 u͛6lٳf͛6lٳwlٲv:ٳf͛6l]|uwfʫȑGnLDu|"&uPSy`BWp f2iE/v,C5TI+ѮQv?c>y_I]2mxQTpSAJDj(~Clvo6lٳcJ'f͛6lٳf͛6lٳflٳf͛6lٲ5=ksj~c`^v&"7$`3sW˫6,-c,Z(سqEb,|mN:$,3\[!!9/$<9%iAr֠}9ƥ\Zܚ$3 w$)b9r,IڇwO1k/#$121@+"oG3W<UW?2͛6lٳf͛zf͛6lٳf͛6lٳf͛6lٳf͛6lٲhiٗȂ܁A_N^lٳf͛6lٰ[׬4++FQoeenw7QXgYԭ,Ki|Ìhƭ閣'N^Tlٳf͛6l>:4+6*ֱ:45)S$#Wn'C?a^i&iCI. Eߔ,8ӆG;22ˏJ[XPY֮m>Iw޹o KiFZ_Ic]l3-ʺ-Ʒyn[E]:B1Yۊ4_go$4N̢]N V1Eo&Y2}.4>D/Kn/ЉdM(y/e7ʮ$-)Wm@VzuRHcȲt_ :;6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͘t͛(ֆ{W/6lٲ nI}Yyf];03tTFv6o-jVڌw6 LzUu]:.spE"4_W[H-, 6ʴ/adC87D Y£<*ԅѴ0AFJoP͛6lٳf͛6lٳfͽ}f͛6lٳflٳf͛6lz.6'm+@M;gͯ _̨^Nef&"FGIfw| t(?if e4vVƆJek_Jʪ# bīFi~geK#Z4.#rϪQ=C->&)ɚ߯q|ٳf͛6lٳff͛6lٳfA͛6l݆^lٳf͛6lٳf͛6lٳf͛6lؔ$IͩiN&yS5^Fb 'n@ƲRNܻ͟1KЎ"ִ_G{i% iJųSl_^oW][EY&;i Y!2JE@NglO.Ǧ[Z P gHP"P F 6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛62Wnl=hjy#1XaF4*my[O0I,lԝS:,>sp1 Op [ySS̜K]6y`4(L&#mʭ"/ᖇ9/+5E7!:Iu@$l jW7G\󾫤yʟ VD1܉'v_U7Z/}!Gi3Frq?iHTSta^f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lH /05͛6lٳf͛)E>q/m7Naֶ繷"ȱy+@ӏLҵ-^]Bk'!$1+ʌew &\[p-V.F3ml ] -L%R$WV$ JKx7wAJ4(E2f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6&cܘڻ ,g qim,T#,Gz|/fuOkmg4M[)$10J"28~}k9i*Z{P}o D8pORw,]ijk?VV?DR0M@n)JEՄ!$n6Fk_Gh==+NNmn1R0 Jm~_:䕎J?.JY#:Y'7^|h($v#3#m7z(Xpq,BF?k=}8]G\P< !U',ܺƝp%R-G kG^lٳf͛6lٳf͛6Q$ Sᗛ6lٳf͛6lٳf͛6lٳf͛1 6=6lٳf͔ƀ ӦrO#WS\ݛMJ9$C pʄzߧϒjRƭy0wHʢl>L;?*cnFMwqvpfOLվ2B|L= ^ZH^d_EB(ޔ*Gln`T@v%~9n7IPO_zm͛6lٳf͛6lٳf͔A#bFS鿎^lMj+SMc/6lٳf͟lٳf͛6l|ZV?ncj7\Aw䷻iZs }%W-!T⛞F%zƵß6hB$qZg#{!tbF+:d,ѪP8:K;m Ky,Hʆ "Tz0;_Y1ǫk׈^]Nkwq (r ̞XդLeg V2gƶeKIKƔnWϤz^NᎼ*O(ԁ@F)6lٳf͛6a6lٳf͛6lٳf͘V6lٳf͛6lٳf͛6lٳf͛3hV;FKAV)$ߦ|^ VP׸J`rhW ]97!.$7@#5x % 5 $<ǨxE;#| ԝMC  qjC75@E#͛6lٳ6lٳf͛6lٳf͛6lٳf͕yA w Rlٳf͛6lٱ7$ts!0-ƙk?0Yڛ  "ՒN$G ˖Rqc 5Fo=ݍ31@C4d,9̿aŽ^V5^H{7I Q/2?^nt%܏>)xֆIa@RvO~O:".#Tu0S;0`A ͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳ\ٳ`[mf";{uy'v $azK?-WG'7[`PG."dÊ|z~t~[~_7V\s-RK#zQ,QĒf5b^-C/?7UsKhtJ0H*C)%iV^LH<3W6^i\V#~4x "f͛6lٳf͛CZnN `7͛6lٳf͛6o|ٳf͛6lٳf͛6lٳf͛Ó){N+X]cW,feyU ]jW}NYʻ-6WZBBiEwUV9#"`LdnePW&F|Tc_e͛6lٳf͛6lٳf͛6lٳf͛6lٳPU-߶yf͛6lٳf͛65ZA؃5D~TZΘ5-'#+de&AE-̀BqZhdo(_<_6mpn(yG^=xCUjm,>]0Bdkd~3БǏßK;[yć-7ޞ93͛6lٳf͛6lټ7͛6lٳf͛6lٳf͛6lٳf͛1eSl+H{(*QȒOJPMWϚ M:tI̤+ĕCExiz}*Z@+&{f*(Ԛ2K S_/kZ{}.FezJdV$~JcQ\mOH*#yYR,nŬRjdIʴa*/(U]S~Vp̮PI)ո.¬'H++win{Pv%ϊ͞uhtBqurq"Pf9__?dѾ~ZM5ݻ'H!YjR)Q^ v.ynXu?-EpK}s*AfqD@կkT>l<]ȺҢb%u 7* z}]kwבeiJ[5uޝf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6l6"mwNvrZHE7 W.i: dq5%J*{~׾yz54wѠ$ZanS~r&I. xy@kĂ#XT7 ӑ 9f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6P755>WlٰyI'@sQW+J=ދ9^g851͈b '|9E_y,ZY׋Bµԯ;W9Ǖ*UU_G[,?QCjq շ5֟mceP]I47BVlZ{I  -4CTބQ94ȢIBd O <0zhEm~Du4`wBʂT5<_ηm_cHʰHHyD'0gCNHLVc^5?)JZ뵦"kx kB|T+=]ŚN~})N0f͛6lٳf͛6lٳf͛6lٳf͛6l45޽͛6lٳf͛6lٳf͔6tVR=s̿!˷]̍mq"ߨњބwϿ!.h;P^$e(@EJu}.D?$;gQjֱnC#q#Jj>c%6Zʇ֢Z*T6lٳf͛6lٳf͛6lٳf͛6lٳf&eT@;LJͿ^[򼗶W3z֐VTn!X*ՈO<ˬ[bL N^Km2=e Fzlo+4|\j:u)‘Z/ǖƭTW=yF[{uHuQB缕T,$ya5<-S .O5 \L^cZNѻAYWhOOSLMܶzпEE!Xrj1 zm8Vdu댞&fҬ(r3,yKKo,7Q,mרϑ??R~Z~fjV`Ѧ|sEc%O%^-~.\z?}wFwzM<8縍P 2=+^Jϩ^ZՖ[Uc¢kASJ9*x7=<A?3~R /% bސ&+>/'/29[Y%֓#u`8r<6\Uk&[tCu: CFAL?8l[6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͕SȊ-k]v͛6b*(z"nӜLC1=+۠9?9+5iO$[sM*~TQoNsn/luGiaiNB%SN]~M~xZ%̚A#BxV {w>kP.63JsSDj5M 36\ M)l@M+͛6lٳf͛6lٳf͛6lٳf͛hcB"=L뿘Qd5kk8EI4IV{g4G/4y4yoq"#1'Z-z+o_zVjV:NmyOWсȐg%S邪U97?0$gTix!. Ufgzo)56j0y]Miw5]0QVg~=u{8"X/SԽ!&vJ \Vv)'Bhb;|@^QU8/"ȭJlEiS4SEfܱb,w$*I 5)Ńm3e 7_yI[T[e}Np+<Ѣң;ywTt6UN!I-cU_U3'^ݟw :_2:ī1RU#(Ajv3[:pj0֟i,FT5TVְkwf:=Y<3%w NKJ;G䦫˧?5;cŭ* rJ*?&W9ƼWf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͈[EqG"V0=P2*5]/Xm&H!**-)q_52qɚnG)7I֫5YFBK!@*;mBHBV{kޔʼHqn%4 N=aK9rGoXZxAj"e w:g5ǣQ]Ke ʌ*H" @ѸsJ==_ *CQ>f͛6lٳf͛6lٳf͛6l,h*@*O9*Ï^] 8Yb$r@UcY wx䷗<{JR#Y^xj:*ơ^OysrꚞۥakinѨKL\]P@_յ8YEΘ`x\4z$p :P(}XFk9i[QR0I)oJZz*<_ǟ2>+Y9 ev{rcd I;͞].G孙JP7).p:|I-jڍ3"C\}:Sx d7b\9i d ɀۑlXZưZƱğb5 >D29* lM<1o3bV`=H$ze*Aϙ?IyE]"Dl1LhZ1/~T-k%?|}ɚu֙gi kV[TfY"E sN {O/jZ݉V/k^r:->&FuE< )!g̏6ϞrumG_]&xۿfRBD?)]=8ۻ=: wKl F%$:1 ;}_amB*iyf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛PW䠀 oN=;f͛6lNx#CF0;am>Bh Woq??YMiI$OBdry$co04?7iaQh#Wq+Xk9tw?0I(WQheaF~,|U[/:9[A>lk#tguQb!9iy} oY*PDEhJ9>iWv[K*ÕhuDSQ Z`BM -hEkMYK4mZ0zm,h 'C* F$sԲ"Kbki1gX[b*jJ<7;ZnWo|ٳ`Yu XX$vѩă]f͛5Ei6 X֔'}OL HԖy'#Gѵk活0%ݤBEUF Sysf<;KM!$XeV6DR=;xRT4Fv|9Ku][yg̗O(]4#j?>nhRW?,1[=R.D @F Jiy,G Hǘ$3L_?^mH-<ͦ%z[yHʧY'zGM}B=CR D=bJ*QUhHy@SA%֠5M4 ]PLqޘS6W!ȮocR%Fv^77!Bٳe@$ ?>@_=vLh&!RHX :[~{毨[^')䲳iU)Td*Ղ"/_ϝfXI׵ė@ҋһx~NzS!Qq-dvbYjhR949HUHcZ1c1'(~Kx7qZ=ƪR鲕0aOېXlhҟE]n;4ZFD\Sdz3jW'\ߣ/?R"R zڮu[O=94^ISWXL^^#`ɿ5m$y61H9FTיjG殹jDm K[9-E$!$e DjkaIuth-%͌Jn#V 9'5oC͟YiuɅ>1elO3F ) y}lZ}qu%Է zRUY~T{Tuv5H ͛!qO"J ^Hʬ@Z*)IFͿ~a&5C[]s&JB;2OoNk4st%(쬄UfsZuޕA5H,R#کޕǾg֙x ȨQM0.7swd(9* s*_.mN f/nUAxZmN]pR,&+Z#ɣ&U`L"ɷČTv,s\C5%r>P\HK~-,R̡/Mys&]|\.]-kmF(PD}muw$ևMhQ3s$Gq Y|[9󧝮c{VKg:^j 87+6B5E1$wnH㹎gA!']~_Oԣk=B (Uvqa#j.P!3?(^@O$}V2MnzQJ(MF|4͛8774{70^2@W8;iO\j:_Ifj"صc*pU7NwO9~|y=1|痤;kwhrSC;;Yis[-aV5ZOΡ/ɵIlnڨM˟?^g1柘ɨiio*I<N *&W@*OE#p.;kmiwMjMg#GU+rI8Z,` *Pukަ+XGh;hzu_BEֻw`@ٳf͛6Q4կᗛ6lٳf͛Lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6l$+4i]/6lٳf͛6lٳf͛6lR\W*|Gjmo1s$5G5*@U\ #dʒLBŔ!u/UpVs=:eYU(OP7v%B]ɋQ{: V&&i܄Eo W<83R^y5mb-F5nαVTqߥ>^Fno58ҙQzE+Ǖ>/gG'~8D-:n'·ytp\GiPJ"6Ѽw a@(lA<^TS1E#J҃wmE ؂*=xcIE@$oh2n+͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lT6&Z]is$я/ Nsc &$xKd3\EHՑ_ĐǍYG(d C7ÔE~ZnM5 fV+ڲ>Z|xsGUt4Z" !aJ9K|Y_*~X:]BK ^UӭʘK$a!]R ght Xa%c; V4 8E)ӿ|HyWNi_*xqTΒin6*0Gek(eTkZ\ȑ(w` ># sZ Ph,jx6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6͛6E?0u{@2Уs*[zed 5OW3rPqz˥SOLI%Z\kQ3_k:b|+^4$rJxbs3$fȁksѨELvQqi|k\y{9#&3f,*d~6"ߒ:ͣyK[MFRnI`@J(c4 Gxg?.Z6q6Z_2@3flD(EA^lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6ll`M+6lٳf͛6lٳe XՍMI=ڽ:v͛6lٳf͛6lٳf͜{+/fw%[&6 j)#91hzΞtޯcwk?}r9P|XF9'Tbeɷ @G̿dW}Ÿ1hz5+7J>vhyM,X]x$ӵ8 Quw88Iy\b솹9dd|%FSgUT9Uփ=ɧD!@E#R5N헛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛6lٲ|l|-Ϳ$ ڌ#$BcTV$jhV>ciЮ hܴVR^+rY?XVFݤ;n 8SߔzƑCwwl6)LrͦsS@cMKe"I)I4QS`\῟yLе(ZI$"RXQJ#u~Ǯy[mcwk-e56t[AnxRn9\@OLǓm<"ޮmcYfn,v\B6lٳf͛6lٱ7%!A^Bzf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6lٲ }i>J5}>FYaD2E *gϟ:E .HTQRX%ӧT&p@ 5_0< _/}b;nBE$Dn>ȡP8AvOUKSRd;[`+)#$%2AjJbkNF@[׊@T;3Q]zgi46OixZ&2XFAO?tmt,,/ȂDh 8*J*)͛6lٳf͛6R]$yfsf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٰ$>bgg~?rF :A<8Ov:.jͨjbC@C sIWŜ[Z=?o2ZZhDs鶗)jbXi.%rW?!2/;Y_j-զ3iRyA1EV;+! C;:OQRNԦsϿߚwwt$ڄwW!f`RWzPFc^'J>ׅ |Z[\^ K9y$WE-js#ӴiKfzT,i1Ī@3fӮl½f͛6lٳf͛6lj3W cf͛6lٳf͛6lٳf͛6`f͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳdkΞI|c`,iq5!VJѷV#|ol-.ιw,Vr1ʭBYI4jUeefⱢ)=s^O_'Aeڂ >ܼ)i42ȎFҿX+ytɏVqZg]ZI#͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lk(Bi6lٳf͛6lٳf͛6lٳf͛6l٨i߮lٳf͕Cȷ#B +J\ٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٱ9m?_luokf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfgo/doc/gopher/pencil/gopherhelmet.jpg0100644000000000000000000045063512412656734020201 0ustar00rootroot00000000000000ExifMM*bj(1 r2i['['Adobe Photoshop CS5.1 Macintosh2012:03:05 17:16:10q"*(2HH XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km Adobe_CMAdobed            t"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?*iM,mUT` kZѵck4IJI%G2,.q m?Jr4^~%7UwP8.cױ;-lome%)$IJI$RI$I%)$IOTI%)gdZHm5GƵ}Vd]S2${ZwezS,åvW WRJju /鹿0_M:+.{ݗJLO|:ֵ7U},mh}v05pDZjsiϴtL u:L2˩ۜhMs?EPkW~<skٻWLv}uX}Gm%:,L?Wrc]_׉i$I)I$JRI$I$TI%)1ĉG:I)WfUa 'Ҭ 9[OҲ}ϴG%ct.GPX_cӺ]Kk}gnJŬʭ6|mZc;8M77G`j_#*p z,'%c;nc/?=c3m^QvfC)q׎sgMnM9SGٝXm˺_2ٍ뺴83ϰ0%zLskX0ֳʷ~*%X>7hiϫl%PrJe:wQ_VMG@'}+K3솴f3vw: /1 .ޝ֜zn{F\=3v/6ԓ)RI$TI%)$$#M].Ώp liFC"=-r8_~agFE=Bَ>bM5FNoIVu^z(ʪz5 ^>Oq^7fcqs^>]JIO/o_Ӟ}bʫ,m:BsZm7_ oӹE31XdzѿC_~WӾzJ/ήߥvήN_Ԟmxv CjDZmm}~諾7f,ϰTXoO}N5Y]*KIM7?z<9ʇO%2[GW^pmP\Nȷ#=G?Ou/kY$w䔽5]]wR]4sk3qqgE8k5w*};gD/VS]7gQs]Q1im<{;wgo%1yT]sm Kmt{}Vj[K].Y 8Y5Wi%Ź-}юR$JTI%,H`I\>gTkJ͑ma/-X}G9z+(m$Z[!͙ -ݿE̯{\N[3gFёWPѹm=6 Oٽ4DulngR>UcM?lw{+vOǣ߫UzwBƶg]F-CۉǟbYGىҫb3!ַ.˟vWwzxգuc?+vi}}^mԪzu?zf+Q`kK}xs)}t˲o-oTx#s&JbQiܞcNEʻߓmm{ύ[j_szP)eYkӲ]}n7S:eV2Ԫ`]Zvζ?o}=C2OKՊ0sf5v&Ln{M},jH3tnglzQMxaTۨm{5Ƿ$ў:7m}LN:˿r;έE5žS`?.e5NoN9:w79W2\i6Z=Kmkqwr*sz3z2&=wbVKf&d?:>y?˯=~]InN-[Wf^\^ܷ`wS,XqKksNݴlʿ.JdI$TI%0[[x-{O+6SgTمT3Fn4_p[og]NˬXK]&Vv3/wZJy9PzMu[0-z *9sgtTh{zQƯ?Z f֐[g^?K~z_HUzNWNXri~=ӘlnCc_̧:=U3?W[h5XEE=D_Ik2.̭vpWeVw7ߪ]v7RXչ/{-~U_Rm_O{xOEo'+α`h'):mX.{v IHݳd0nXuj]o 6ضez5Z[>m: ^ŪdQK龶U5wެ`u7W2Suk=>ԙ[ONF?,?;ڝHɳ%Ǥ}e^繛=<*KRSDcIů1vM{_}=Vc΋Ӳpb[I"ߏ֮.4}ۿUzE$$I)TI%)d[M9Vtr*-ƺZG9mo+;ZS>~k _Enpgloq3+'Ct;"?RBtRI$iv?Mkcv'Ot~nm,[mU%xv4;RS I$I$TI%)$IND&װͬ&Y.[N7WNGT2}vRIPw>V-ոeog$ݙUeU uk~,DX}aC"1pύUѽX1gjǫYi)K:1>`1$3.l,oEmd_ڣkwINI$I$TI%)$IMGSb ۍqS~-ޝgF~7EꃩauK7u7VmGwE}sXYf'Q%ìe8S=+mq{gW;k}ħIc=JU;2p, h`Ǵ~27߾UW[ )I$JR{:-etT[츱bӵ垳eeYK36z{ ]~;}_ۓNku8y#6Ϡk,]hӾtޟʨd uuۯc9kүUSH-<ӵm}VeXR*3atF [cm{eX.eMVRI$TI%)$IJYC32mɢhm q?]mv5~E$zC0Z4X/ϳ!=z/U9Mv2pP3'uGIN=];l!]bGe'Lf::]T~.%6>zm~4Z7}K~z 9#,Y /SnV79%!='a3S}2矧mvc\I$I%)$IO&LPhotoshop 3.08BIM%8BIM: printOutputPstSboolInteenumInteClrmprintSixteenBitbool printerNameTEXT!Photosmart C6100 series [49440E]8BIM;printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oGrn doub@oBl doub@oBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@ vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMXX8BIM&?8BIM x8BIM8BIM 8BIM' 8BIM5-8BIM8BIM@@8BIM8BIMIq Untitled-3qnullboundsObjcRct1Top longLeftlongBtomlongqRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongqRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM t\ـ XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km Adobe_CMAdobed            t"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?*iM,mUT` kZѵck4IJI%G2,.q m?Jr4^~%7UwP8.cױ;-lome%)$IJI$RI$I%)$IOTI%)gdZHm5GƵ}Vd]S2${ZwezS,åvW WRJju /鹿0_M:+.{ݗJLO|:ֵ7U},mh}v05pDZjsiϴtL u:L2˩ۜhMs?EPkW~<skٻWLv}uX}Gm%:,L?Wrc]_׉i$I)I$JRI$I$TI%)1ĉG:I)WfUa 'Ҭ 9[OҲ}ϴG%ct.GPX_cӺ]Kk}gnJŬʭ6|mZc;8M77G`j_#*p z,'%c;nc/?=c3m^QvfC)q׎sgMnM9SGٝXm˺_2ٍ뺴83ϰ0%zLskX0ֳʷ~*%X>7hiϫl%PrJe:wQ_VMG@'}+K3솴f3vw: /1 .ޝ֜zn{F\=3v/6ԓ)RI$TI%)$$#M].Ώp liFC"=-r8_~agFE=Bَ>bM5FNoIVu^z(ʪz5 ^>Oq^7fcqs^>]JIO/o_Ӟ}bʫ,m:BsZm7_ oӹE31XdzѿC_~WӾzJ/ήߥvήN_Ԟmxv CjDZmm}~諾7f,ϰTXoO}N5Y]*KIM7?z<9ʇO%2[GW^pmP\Nȷ#=G?Ou/kY$w䔽5]]wR]4sk3qqgE8k5w*};gD/VS]7gQs]Q1im<{;wgo%1yT]sm Kmt{}Vj[K].Y 8Y5Wi%Ź-}юR$JTI%,H`I\>gTkJ͑ma/-X}G9z+(m$Z[!͙ -ݿE̯{\N[3gFёWPѹm=6 Oٽ4DulngR>UcM?lw{+vOǣ߫UzwBƶg]F-CۉǟbYGىҫb3!ַ.˟vWwzxգuc?+vi}}^mԪzu?zf+Q`kK}xs)}t˲o-oTx#s&JbQiܞcNEʻߓmm{ύ[j_szP)eYkӲ]}n7S:eV2Ԫ`]Zvζ?o}=C2OKՊ0sf5v&Ln{M},jH3tnglzQMxaTۨm{5Ƿ$ў:7m}LN:˿r;έE5žS`?.e5NoN9:w79W2\i6Z=Kmkqwr*sz3z2&=wbVKf&d?:>y?˯=~]InN-[Wf^\^ܷ`wS,XqKksNݴlʿ.JdI$TI%0[[x-{O+6SgTمT3Fn4_p[og]NˬXK]&Vv3/wZJy9PzMu[0-z *9sgtTh{zQƯ?Z f֐[g^?K~z_HUzNWNXri~=ӘlnCc_̧:=U3?W[h5XEE=D_Ik2.̭vpWeVw7ߪ]v7RXչ/{-~U_Rm_O{xOEo'+α`h'):mX.{v IHݳd0nXuj]o 6ضez5Z[>m: ^ŪdQK龶U5wެ`u7W2Suk=>ԙ[ONF?,?;ڝHɳ%Ǥ}e^繛=<*KRSDcIů1vM{_}=Vc΋Ӳpb[I"ߏ֮.4}ۿUzE$$I)TI%)d[M9Vtr*-ƺZG9mo+;ZS>~k _Enpgloq3+'Ct;"?RBtRI$iv?Mkcv'Ot~nm,[mU%xv4;RS I$I$TI%)$IND&װͬ&Y.[N7WNGT2}vRIPw>V-ոeog$ݙUeU uk~,DX}aC"1pύUѽX1gjǫYi)K:1>`1$3.l,oEmd_ڣkwINI$I$TI%)$IMGSb ۍqS~-ޝgF~7EꃩauK7u7VmGwE}sXYf'Q%ìe8S=+mq{gW;k}ħIc=JU;2p, h`Ǵ~27߾UW[ )I$JR{:-etT[츱bӵ垳eeYK36z{ ]~;}_ۓNku8y#6Ϡk,]hӾtޟʨd uuۯc9kүUSH-<ӵm}VeXR*3atF [cm{eX.eMVRI$TI%)$IJYC32mɢhm q?]mv5~E$zC0Z4X/ϳ!=z/U9Mv2pP3'uGIN=];l!]bGe'Lf::]T~.%6>zm~4Z7}K~z 9#,Y /SnV79%!='a3S}2矧mvc\I$I%)$IO8BIM!YAdobe PhotoshopAdobe Photoshop CS5.18BIM http://ns.adobe.com/xap/1.0/ ICC_PROFILEADBEprtrGRAYXYZ acspAPPLnone-ADBEcprt2descgwtpt\bkptpkTRC textCopyright 1999 Adobe Systems Incorporateddesc Dot Gain 20%XYZ -XYZ curv 0@PaDuRY9.9W" a A )   ,Ee$W2xov'D !q"."#$p%4%&'(U)")*+,e-:../01}2\3=4556789:~;m<^=Q>E?;@3A,B&C"D EF G#H'I-J4Klٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lDe]cylٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛0͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lelٳf͛6lٳf͛6lٳf͛6lٳf͛76lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͔i09yf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6U{e͛6Q9yefrf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳeӮ^lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6nB/6lٲ*\ٳf͛6lٳf͛6lٳf͛6lٳc\*26lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6l\闛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lUf'u%.>.28V6lٳf͛6lٳf͛6lٳf͛6lٳf͔nb2f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lDliM*N]syzZ?I$b9HoʾyŹAąt4'ީejԝN\G/M鎦lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٰ%M4F1BOSmi"{e6yjF7f5f'!CׯQ(W$xU;n_h,WpCZ>8P~>yf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳcJAxd^Lfw>I慮piNLTJ5Gv=6?:LW\4cFjejk͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳcQAU51ٳf͛6lٳf͛6lٳf͛(6yf͛6lٳglٳf͛6lٳf͛6lٳf͛+~`S(^lٳe}9LLWAP1 mu;Vf$ RD?hѶ>/(r)&1 8e$U *?85-H])`.ۺ,Q)g$!=b9b7bQ{[Q@ #M|ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͔I6,:f͛6lٲٳf͛6lٳf^lٳf͛6llٳf͛6lٳf͛6lٳf͛7Lj*:ikbh@ $PO\y|2v5ƝFf OrO+/:iRZ}u[F(א+T~egZ]R/ZUTM,R$Tc8f3~B~{kWM/̕*ےs6Z)[y؁˭qpX)'r+J~oʟS7͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lUޟ^lٳf͛6lٳf͛6lٳf͛(xfyf͛6lٳlٳf͛6lٳf͛6lٳf9u͘b "\)Z!+ЏuUjM*zJm sf͍US@;]}<#q2_+ɫ8- ^D41*@WU)4n?K?1y;]62LqYWNEN2<|1oݶz/ /ͥ踛p9$8H_=/qI4l>^@1v=#m1Lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfƨ |Fٱ)ZS÷ӏ͛6lٳf͛6lٱ?6lٳf͛6lٳf͛6lٳf͛6lٳf"3-JVgC 3*jI0xJ >x(Z Pmyưn4 #Zmu=1-ƣ3BPYy_FVIJU@z2÷zy'R?FֳLT&VhAq,M[{ΰ.#IH=reH6lٳf͛6lٳf͚͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳeS/6lٳf͛6lٳf͛6lٳf͛6lٳf͌nT+UFp:iܑ9~ɧhp29)P)Bj;r |\ rHzjgl:Ԣ4C׵pe w$ҕ1t`FkZbHKs,vzзp SveyER@xn4牼}%|S3G$JGɾ:׬κn,pD"qřIVՇ*ܛS-H؏]4kauK@'6a6lٳf͛6lٳf͛6lٳf͛6lٳf͛5sf͛6lٳf͛6lٳf͛6lٳf͛6l6lٳf͛6llٳf͛6lٳf͛6lٳe^lNu-JRs?0OK{{k([`Y%~|HY~ ?k]Ϛ.俖ْ_ݘ$ y9ET&v?R">dk_=Eg;Csm 7Põ_id!ZTG,]Aě%Pd%y"`=N\yܹ|=__ 2PMCNKNN(B( `Ş9Ok +ǏlL<7ր?HEA}ؒk P |_4y?OEԮ:1/Uf@~S^yw̍A ngZ1*E _3~Ei]DkOU.D?Hp’)tv+mPNK,ndT~$s'kZ_(2Ȯ7\ٳf͛6l^yf͛6lٳfF^lٳf͛6lٳf͛(׶^lٳfS^G\ٳf͛+ze͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛)F#4bUaOug'@2Jg45!Hpy2-:*_~,|ѠԴmIxޓ,`a"1O"V~GK+YUM]BkT(VgUQ~,OrO3,Rƞckp-\,rX}?SvRrΫ%\EEՊ6IbnqKՇB+ƕB>Ai7*:<׏7H5\8͚f͛6lٳf͛6l6lٳf͛6lٳf͛6lٳf9f͛6lB͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳeS^lL1?I@;Bm˽]]HWV`-ڤ68rhx+D:1/N?ɳ~wα[K-KQq%ɚޟ|IYcߒ 迓7wyYT1G-RN)ks<|rm-TsMՄg~i3YjȢ >s+$wq5PAoEE{،Pul$WuM{g=律t=B6h@$VX3_P?,|pi:!14\ xO~փ*i;B),3m(x_[; 'zGNqaP>^?v 4erLlG^hË)ƠAA7A3f͛6lٳf͛6lٳf\ىlٳf͛1͛6lٳf͛͘6lٳ]lٳf͛6nf͛6lٳf͛6lَ*?lٳf͛6lٳf͛6lٳf͛6l9#=ʴ=}LBο!_|ZuV(*C4j[n+ />qnQ ƌ6~d~OiJk/6fC0B$mOUi=/ ꟕ?1wY @$/(Y sa/n_,H.02*HCH!yA^F>=vUAZm;oқc^>DhF[ F\+{gaym=֡}+Lŋeׯ|9- :决k~Rp?2@U(kG$y6R Zb~=izPid 1a(6nzSʮ|˰ MiC/(ֻtr2f͛6lٳf͛6lٳf͛6lٳf͛6lJ7cS2f͛6lٳf͛6l+^lٳf͛6lٳf͛5+glٳf͛6lٳf͛7lUޙyf͛6lHn')$o827yjB\DSi^Ns?,>կ-Zn9p4Wp/ĚLC}soqj!PctiHG^qZFi>}׿)ɞF&IUQVy'/We~ ?Ϙۦ[^C%ImAƔTv䡸Þ gcUǿ|VFCVkvĤJr}{xdcZӢN|H>~iVjڍZh~rKzab4UV>}/k"!2JYV+ܐTܿeLXmbf͛64 6TVS688ٶ x|%ЅҸ1ƥAT7@ojRwn%GEWU>sIt{9R#mafH fq(+M=awy ;zL[)^(őK+ķ';>ӵCaר7v}vn'r'vb EvE$5~<hՉcZl'9dV w80Z9r9W=+[5OR\ zh!SƊ݁>9I4s f"aAk"u(<{e͚f /6b+6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfʦ^lٳf͛6l+xglٳf͛6lٳf͛6UvBAv# 鉇F~G|RIZJᗖژpM;1U (2ɠl]}H7X(p ͢)1J[x` Gk_yo6T:hi z!z- S2OKɰ_̒wv6z|tm1Ji9%V?/n9+ z ̒ q і䰡ͮsN>3Yà=7^أǨ'IVv8}:#(0RN)CF5!'rE)áGq*B94fKEHpvqO*gou1t$n:{ռ+VvMr*/`l"$QGY|G-҇ AQGjmUf8dSc^>2[)4GEo.}Hz`qA=V>N+߿Lg ׾:8eWze6lٳf͛6lٳf͛6lٳf͛61 !N~f͛6lٳf͛6lٳf9f͛6lٱmlٳf͛6lٳf͛6lK =nU mL_WJ&EFC$\OP3 B8{~ҟ eSaX^6 e'3ΊW Yߦ0eݍ EvF:k/qסqI/e!r=Hjʥ}7Z쾁9awzrԳhpC9t?:i9Ԁ+JHuHSVr1Wrdž^V^lo\|N`q={`>aRʙƼ!t"F"bHɕ&oǗ,mFlVF [CFiyKtvM˓gau;G\..qz( y2 jW9+ U~"dY#*}\-G^AZw5b-{)* qw]Z8?֝l,@VM@Ҹ%FwR;鹩 * {b@Aޟf^*\q*9HGc7u'C1 ge}O\n(58XY<l_%Wa/MBSݲԼeje.O4o!hسӬS[FG)#P)g9N9Y"Ʋ5*Rf\*տ(V(CeQPIs9ftj1uVsE`T[%Ft;R.ks#;HͶuF{yFTDn?$&DfQ1)e@b"a!"sysκ,ܴ1%e3bnwgM·G$`IĭSPH$v9/ 7=%Y~,)v͛67)GNG@20Ocƀ[}"U@h `' $Y6MȞ?DQ.F$$kńgw-КɋtbYTǒߛ6xnOI \rfR?YcFhfdMBׂ`6 ŽJ| |'#7?bJ#UP|+łRu<ks aϲK wt(<ͫ2@i DN'p8r=#gucz`vyf X->QV~ UGƫ#Z\tA1"9l,d^+ɸ64x*z`d=ovǶ-8 |$src]o_05)a5]+Ieoب+zb=37.vg}:!,(j|DP_ mS9Mǚ<ohYzUU⪊ACn_7¥O.n59&RRU",ZTV ,kviGRyd;0,O\g&_%rtjP/lN|4}4vcVqF[ʧ9]E=t! S +QKW[^,Ѩ¦Tmjv={a܃(w 7Anzz|SgaPzgƘS-h{ٳeeTVf͛6j͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳc$lٳf͛6lٳf͛6lٳf͛("ۅE~ITn'5\rYW^ݠB }60\h #=J!oJg9~5P$ՔTMW$X큤hs~adh@XHaPHw 0,4DQE0 +"=WQNx^DFTamLU֟u.hek!(*ܨUrU~aCk} i ?f)_:pU q^,v?/u28F<ܸ=~~ k&@6ZlZ^?FW|گ7MJ$zuC6sɞ@Ў<n 8}q$v InT 딄yx㲻)&f͛6lٱJБM&ڸٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf"\slٳf͛6lٳf͛6lٳf͛6lٳfʦP+)4^VWZxb7~* !>p}l73Gpvb"jR?>ahVOkRݪ!=G¼7Y d60*G5XK$Y$qff5#x +P\~zteѡ\4SD`cf͛6QPp%Ōru~$)M˲[Q )@z2|y\y  HK? 7+.."O/O> Sw4hnc*]*xtO"y:(Qt9l#GMxe͛6l3f֫2EsBgBjIsȋG=պmZn)u}&/˟6ç4ΦIP hK.#k8HԊWzПb|ftsZ|$Wf4>YuӸI$~FEfp ~#FV`EsОXNR#΅S%ZFQFH9cnZ4Fҟ-,J`q1t gYPn8޸J=Q"{v$ = 62)}j;eF^XS v.+O |k•M<|;^lَٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lW6lٳf͛6lDq4|*w=vviLI+*b@aEP?gǘoU3_ʁՖõ eF#2{Wȑ6 ;=GA6lٳfymڮj_ $mC<=!<197WkmF+B8;Q~_/GTWbN`|AG FR7NML#}Z`۪߈=y0"Sɾ"MINo LCC+AտW-qz\tx^:mAA8^̚,?]!tR6pآ+ƿi5%Yj -uKt yyr"5[H_N(o4 Jo:Bֵc_ǾJ*=v4oV.6%$!V>?M$P )Z͛(Hޔ?~^lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛1͛6lٳf\ٲJTWnnT*z^9?3o &{HE;+3}3:5/4#/77&IG7#Evj2q%y7-?_\R[UFhE_|sb۠|;E1ٳf͛6lٳf͉L!~eFXn`7鷏LO嬚$zI8nj_Sn"yWY7/_Q%ݹ#/?GBW='ySeh$PO{؏wմJ$*~?>/]WP]i h+F9⃑:4L}0Fff*HPYiWQ=kk_26LFGGίV]G쒴QJo +sYAu1Emt7.5_~v?Hq G5 ir3)m+}pgں92q jy|qߚvVU+^4jqj;⶿q+/'jަcWN)Kѩn-uo ?տ Ȅ%MK|3ohGǩqX^䜢za_4/Vmp`Ly3me`Ǩ!xZSJ|]@ڵ=0X#g /_G-.^D)Af2|'R},eV9`0|k6lٳf͛6lٳf͛6lٳeT/6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf뗛6lؙ ;xKzpz)T<*(E H*4(#ˎo#٥$}UP CC٠ߨ㞦D8߿N.8-1Lٳf͛6P͛6l*0S]N3a=*A(ĐG<]6O*%^1[r<$0`o\N.LjXxߗ*gF՗I"۹Gj^q5E*B Wbo<ү"SlF<$'r-jiG8/>cյ/%v0~ >%tˏ8KK;D J&JvkZZo+ːPQUMUSɞ3Of.}"rT Ա:݂I"1jO=(Urj) 9>XQxe/469W<=i$y'Jx"U%zg P 4EL# Py~ӟJRWUȠ# g"ߐʒZM &OA_(,\7?i|xNi!դU_J:aw+2qzI~@`9t؊ڛS}Y-/ҩֵ+P-ޣLf6j+%URyU6vh 0Ti&Zzn**vV95Yݯd d CYqU)FJG^e@+JjR0;+$jP(6x>,^ oFERP 2-~L蚔$q ʮi^w3 utƎkX0ރey~Q}OJxVB3ro'|4vw{J#&@y~ CDXpV^? oqS}dT7~WE*l람m[Kحz^eT9cۙҭ478V`ݪHnΔ\!Į*T)vOm:r9ZGTv|=v3MLs*3l9:ie?.b(E|U1 vcL6<ՕO1z5PaAZF Xwz S1 KKco%'ƧpT֊jGPӧL*m$cJԞ }e>DN'mZ?烖4$iҀKl@qhmU,F1׿oqWm`0C]H`vM0P:RŤ U&EXmѾG˻-E EǥOb:jUo 6?Fs[* j>@kf]r~Ij|U9?-J/ >r/H,*ihVS_K?~[ޛEh7@$or1gZ1m.}\-]RN&6>p,ܭ'ڦ&RETOnG%5R{$pugjA’Mw͛6lٳf͛6lٳf͛6lٳckSLvllٳf͛6lٳf͛6lٳf͛6lٳf͛6Q'/`N]qDނ9Ϙ& 5*6z0.bn" r;Ȅ*cv'^=zoOA@+ wo;|Pl1͛6lٳf͕M뗛6lSW|*~ЮnPE0ScoIey%eOULm"Ztߊ^=>+"G וzՆyYP^qV񩤡@eN6-'=U_՝fh'6lٳf͛6lٳeh8tHCGsZǁ,na."GW+R*8ƇoJˠuxm> 4@)]Tnv^YM+KK"VR OJ7>} c0m!jk 9%+TcRGB)E2^@QOgDH#vG#R{?&-X9G/ZRw8'7S[Ѧ*@M+D]ƍql WGph.jCMW{oΣ̖nzgnF@&᧯+ܑ7î±@=A>ۋS!q> ՁUf;ZKՋz +ѾA?EɝV w>˔q&4:?V%2U5n+(GjbU ޴Xɔ2˷sGE7?dhFbYnU4 ׮>FK(Iv ݳ4m")jZ 5{^3|l>a|{Q)QB•T @O#Fy:U٨>g6}žf HY j@UʤPҿyQYjD4 BiJ8(T^2s_ho_҉=IP<v_-yf`)t'Qq!!zaRez.9):`pImW,0j͛6lٳf͕]闛6lٲ+^yeLrglٳf͛6lٳf͛6lٳf͛6lٳf͛64l((hszNFtǼoŕy,ںTĞ ^4sPO4Ԝ^T;mMɡjAJuєNJAzmu‡}DN"!f_1Hv.ci$SoG"J6j ڣh4@>n :`qIOa\Ar 7QM0??jSӍWP>#\Ը,@@+ޝ#(Tִ +n\#mV֣mlHDu/SK<0<t9(ux*dHr SۮqeSe Cv`zOV޿~`^*9Ri}~u!rX e=||i˞v.F6?+ڻ9wSשQ:PJv~F(f͛6lٳf͛6lٳf͛6jW(lٳf͛6lٳf͛6lٳf͛6lٳf͕]mb v&Pi]VQ\uӽewVh˨S韋z0~|pYT#?Rԟj?. ^o0^l٫6lٳf͔^Q*n,v;?2&]2V+ZUr}#Wj? Go'nVJ,Y)Tl\ ilTT*7ʣazFr4X4IĬW{B?c&i=/L{)YJ\G5Y0Э쎣=/YG@6=SãcIVM ݰuG$ jW0KCv(<~1CCR|woO(E&?j) TNו*@ >&?o[~@"-9[qa T+6,?Ju<{aNaɔ{`E&Gj:~X nž;xYn \c8Ndj qz|QVWN"YcA$r? m DrQO oqu`M?ĸ *OϧŦ Ev+% V6LOH݁V62-:v0M}:S\ѢzrCL`ĚT[VBBC ^3vFKV9 $1~h~Oiҽƍ#EO"8Vr4/C3ݲ Z 9q_C~[yeKPo4O5҂8Om2\KjVtd^$|5TQkՀ1 ӯخjWlٳt͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛( mb$0r6MB*6>KA t n), R_:?5n'"Ԡ8mS(RҞJ˹|_~*sjWã^m֑s 8r F^lٳf͛6lk r-F3?ޟ,矙ɾZFj/*w<8/f'iL:(@ Wڊ=1}FmX"2⩠Z79/ͫ;R!y*E5N~: ћO` 0>,i2V=G0UT%zvW]zV.CӏŸ݋ b? +h)A Mdvl6_5MO[V;, zhA G)3QӦ -`'u䎑Z2 dViө_"aЭ5),jw'|gTֳ0UJCGmex  n:$OLH+&گ//y.핋Pd  jB9:t6r⹈a6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛64ݱ&yڃ@Gz4]𩌹5 ~Y%[N}@Iyc@EE{lOR;琿/n_+XNԞx_g6ìXE,rrc }mN$AL6lٳf͛6lٲ_܈֙1kIkQnƥ~_yγ\h1R1W!Z&@ylY<KekـUy+1Das*c"QB~CCjPE=@.Gn:4F/N"C^d\ d`7Q\dYBA}V/ځzsچ2[Ԕ"#goBvA˅2œП>-;ef_|׍R8]|_o^xU@)So>۝UV!iÛI"r:3~qyN5TMH模iCS^tŠD +_{cG%U$ H$Z"I9ZOOa_~6 Uz*q,25٘X1x8erޟO/}{Sj=}5X\ޠ : VEB[iтƺڏJk0 E 58J.) d]pdK5Sp L5-A@Slٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛( W11V^p^ oa*{W#"VJ| :,%B+$piNz炗:ΟIy7.7H[!'|izͺog]BD΋G:{|}l+r|rmٳf͛6lٳeLuv98I\ea;TWȵPFR.-+?(%zŽ>!Y(vZ:n,xu |.QO* o+Ct4˙i8;?N?q;b3JPCP5# U麡u q*6SݞuVS_ vlٳf͛53eLup|B4, Ɲ|&cr=.BC2VFvrwgۗ[FmB/^ LUer6_Q8yzP7V +$ :Sarl]薇V:5*N/$_2*Z~sպ"Bk(wZٳBIvHY[EiN>߿)4=NjҊ P ?l$BoZhqh*sb*+I"B7gEחY"/8䦝o}wy{}єyIj!DOA.mϗ.\zK,$+MDR̤?,X\oQ#bП!hkyXC-`e1}E܅sYVL ZfμAB7 I~"eUZoz율ERI\õ z̲j1pvP 9rUžbg{cWu^㩠1zUVn5, 9sr9WU֣Nٽ (9qތTj=]+}ّY@gsNlvh FR AsoP}%`r|N*MLj1aNBaWb0@ܹՔVt%w nKPFf+]^`ZM?g;<&ELf4rPpra[d|@ֽ ?,~f?;SGp٤e'niT 6Rеia @Ř*Pҵq5^@ąF?ƘRu~_**Az =H)#,d;Pr h^ Bc˩'%z6}\g}%;Wl6#b:P*4,Y$ߏƴޕk4r oԩ5zf?ĥV- Ol k{[²Fjk#?(M"0rµkֻҔy}0͕]BU ː%6pќƱ/+Nܿ= v;ؖBIۮu2wg@ns@Ԩ놖ͽ_Q9S~I'*塮ٳfƘԸi_Վ͛6lٳf͟lٳf͛6lٳf͛6lƛf͛6lٳf͔HDqBM1eq[qI.V$yȪ;x?!L[q Kne7; 2_*ZQCK)`OͿkӕhA?ky_r˶-m`bKjUUI[KFuܐ\sFZHmnD3< v W \C$HhG;nHdUYɖsކkҠPx'9YM:ve Q1ȇ ~uI,-iBj;PӂrIiN\k}95_ZZ TzToEuʍGK,l&;@g ̍KrF̢យ]eO|B)j> )t?g{ Ym͘P-N e]@Rո9kP7#BvA)?~V]Z@ނjpD&e!WؘB%hiҾKܰA|O^5ו)|b= mQCy<ÉzM>A>٭vF"qYE.O\lG+Vu UAhOشMpKz2Zq[ٺWn1J ߧ]VjV@e)/@?|~ܲXMJ@tkױ᳈Iob!JCE.{qZ_'{ʑeш'~te&bb\/ߓ-:J%!XaK[))r6E6A͛6lٳf͛6lٳglٳf͛6lٳf͕@ {f͘ٳf͛6lٳef$ +( sbi޵)Kon90& XkyG]CLABJ$^$DTh>9+%\4iX/x3GK,>2ОVu9"XpyHBÈcEfg=aYLG1߿\ypFԡ\6O5 %]1cdt, kPXiJ-jHOӑMK3ĥ_(vm.y_2 4RA( fzUFOG0"}:d#Jn[z/bkHjg`Y*Zup֖=ʲQc!Ż1#^ v>]hfs;F7!Vj#UsU|jo.MxT!%*~#((5= •Aj SpiSG?L u>xc"U|!,%z+֘ƮZjjO5g@h ro bס~"H.sĿZ#,?y*E0xῑVxc$qu)Uo^\\j:,l>3lKsۗiN\0Y׭|I.zqbev۫Ns!{xJ VR~ɢ˗xϖ%J bv#qj3Ν'k{diD|ڌ(pn܎mGIx*=X~ɺuA\K2G9֪fJ#~mJN͉wu CGı($=y+TU֝E2&P#Xh@R}w f7myw E(U{v6W$<$< tP|:SM 5aHkL$ӣTۦB$Po\F9/B kJ(65!/%'=s#7POr;SO@A?t0Ā(q%O 6|$q5ʢgXֿk5 Qٷ2 ~iđxy$j57V2XؖŸ+|<썗:+ѕ+Fݖ v=Efz7uy\zID i#|jWvc"O_,YXE֔'mQ|k_Vt*E_G^4~yV3>$ۙےC!ĥZtrU|ާ2˭NEѝ>̩AP(HSNF4d^5*ň ->?|Oß}Ѱfxn'Hj>%)O.j|\GOO1,O2e9Têo_rL^HXiO̱Tzi/f;}  *"Zwڹ$\ ,PHuf"Ƈ<"ZY l6Y]qAzT=EqqK@A^N ["1~*Iz~8G;)Nk)w8 r/C7ÞksM^܆X.LI,ʭ'Vo_UB):eNרbeb7 ĐwV xC9u/8e$]u_=-^ @䓝_ c&)N" !FAR`G{ʒ3QUw^dVRkCCUd,7CM8* TBݱoPBKW`p8!@Xm Weh>%={S dºVۮk㑘ֻJv-m0@烣5~aBv$קLc0AZWzo1q''WE"~cnE!=s~fy2!]툌\ 5hzqQZYɢphJyR$P~܈߻ AV߸{o;Ý]h_ #<@Z_d9,\;nXPt85͔kM:B"F6lٳf͛?lٳf͛6lٳf+PG2&_of͛6lٳf͛6lٳf9lh?|A7eѤKqV5M?(GM^Vk/FYQ!PIJsMڧ_iW6 :eP\}(zr1sIl5mNQIUY G ywQ&>"EMOWU䄐ʼsۖW(+mtkdDFp~: 5*mvPSO~t0vcÈ i`m*ZHNK1C)H: ̭ Awo4U,w]Cqw(GBeơnjØ#+r>~c_Wyx_f,ǍI @2O]Jx^[I ~4oɷ>/g<%tsUSJc7 VT=BPue=T'a%-Ã7U_-Rԥu( ** [ /-kM|ɭMosws$yQB)%Ÿ;5=+M2JՈמ/揜nb̤LYIzñV,O++g,Ϥ[K$/(}FUFu;A…iAMaУaZQiG0UUY$PWfml"%^:wsjߕ:W TC.AUOK#?Wi,m&Fn/7_BrEى4'~DѼ8o\1< ԰Rji_MI.XqTkZuq^G)o^|;} ~4IZeDb6ᅪ+uC̞ҿ4g=5M3G";€` RZ:_K]'.=4%n =8\QW͹n bJ(+"x*s>PMWShm b pƕʾ8~Xy˓$v(՝!8ո7ĭQƧ #0vkփ].;g8׼ݧ-e>j E*8W74m2o+zKZİO_\^K8oAG}~Gy'-4C*?bE`5KU[~98צHj7/,@2d7@>(ȟ1> &yCap„섂R|opF$6pȥ V-\NOIA^-!-R e˗PjۿYI(ўA*2#'k5AjR UvGO_dr7aMFh b~$ldWQքtGک,6Ù$iqn4;~bs4VÛH޿G1?sT"h?<}={oiќq2F#~g!"İ1E(f4T/,u׋'9%f<2FM v7=y`o>inj1іxh H)Bʜ)Vf<+-QC͡8$UWH$fZ*Ò|'ɿVm}tpd b d %{O"n~G9kMRP XGv^sgk2豶d}"A-RwW %-F4ڜ/5rH(T?NnT4ezjU>%7^Ey +ՙy^YduV(An2 TnʬJ܊U2蠒@6U祬-H͛6jbRDonR(;/3 _1B"0W;!_ms,Q0u޿.*ImvŖ"}+ J"@r[v 5)ʄ}]cC>l{x"ק*TVg:ڀqqnM  rDnD@ zw~p7iJ*J81,0'ûI1uo#n-6*d=-w]FTWm&KqNƘ*"C(mq(Qᗛ6lٳf͟lٳf͛(£prf͛6lٳf͛(Yf͛6l2CN끖 ^:drSՓ`Gr5-6K}oճִ%{-۸Q\nZ1Lj0~iE.K˺,J_j 6W*?kB?.绸EvgFΆ5kqGN W+>G[pTО<6 B6bGڀrƭJ.EOZ`;ǥM: x.cJOӵ<<0$4@Oֆ\i(&`4Ӡ?AҽXveီ<]SH9n6"w E%ͪ !pzrPj?j:q0~M32C+5\8Iu c!Z6UIhy h~ʅ-œZԴV`Ky˄D@6*8sdOS"2Ț\-乍 #F?z,L*ELs%]d$U~*Qy8]uy[&7;7%-W+#*GܓJ BI) '  ޝ+umV% 0ё[}a{GJRPv**}}&{e5OxyxD #)X(NBմA!Ye4%+.B뷎լW}Bs"~)Z5Wj?ͷBVVil*K|Ec;Dr@I k]ñwcڬ2ߑDf5*T^[|+P~g?03ZA)!'w@'[oփKak3\z`'G&D4*}Vi#)7dhdma/R\[KDAT9rbpZ7l'm( :WΓjAA͛6lM VG=]E|+?ZA Eģ+/Z;O&!sbu;daNZlw3oߕV/4U` jkY<ɩQOE$ܾChQh4v}zc@BxѨY&:1uPAE)aս~b6_P#W V_9_t8)o>WH_~/M=DEb45Vhx 7H0\n>f4}r"YcFTw;vzjQOoZ`;\+qcPNl#8T/՜^W\AHCJSM)j+(VAȠiɸ}mח]v'Sc.)^m>|ڤrҶ5uI!F wLS) Rj~uŁMqyf͛6llٳf͛K _:cf͛6c횕͛0͛6lsfyGƜJfQ^Gj~ Ե4}F?mm{<`,q$ߎye}JU_N+YWe~(\cަ5ȬN?Īʎ9r 㞅WdjlA5*iruoKry V'r45.E-AVQm Q9zoӭNU,d555̀j9 V#PWls4|?ay҇0V# HAqZTLsAFcNȴX̒ѝ6ߦtk -*|IӑWAHZUV>MJ,*By o51ڏm1O W q GZ4 cO!¢dYR(!WrǍ{R( `#Ub㋎(V=RtӉ!ɢŀ+0ߓ=ޛ =kREU a^]-3kz#K< ȼ~L)+9\hwLEאZ VZ14&YLR^L|JC곊ҧcާx +0c>cۂ(X:s fQ]xSi%Qovb߿рRAѐpI:jmzTeLGSƊ (jqF9c^qRy}}s>^+CJFgRh:o %y[M"~*^K{~1kx,M)AQv{:9'GZ#d͂O϶FÏ.ݏ[YPDN}G^kq-zɸJ?g;>Htӊ3UP^ɝ Rՠ*Bҽd6^' %:~8BSU$lOcc#G;ƻj)_|[{eJEv[_Y P<;to+Jy[N4j(o醚w қoǾ#yd@^JI4^*+R ?!O]\R t?:L4KޛP3/,+霾qH89(=9S/4[Ym&oQ];_ b!7pE,B0z4<М:G}W'IbI>|29^ysUP*qsBH辉gRs@#WaƁy W_=iN$T uKPP(5oZ.q]4q,i/)bI"@Ƅ*9<n!FBEkZ};53:LPWΑx]Os9 FpZ)GJW3f͛6lٳf͟lٳf͛((RHk2f͛6l헛6lٳcK4=NX ˭3eTT ePC)GLĦ#=L$rWj9?|nČ晕n9bH']yOc]}wRn5"³2;S*z%~/\%cM[!CĢʭEkMiVI:t#nTl%"#^]0e,R #p<<<Kl nF=0rbF[灤iBlhH%ڔnu+SC*ޕN= -v4bnQ SooC`V~ Hڠ^)klnvկаn\,ƛ 򣎣aPn昛-6hvǬ-!VP+ooub OOl ؼ\|=pf3= ÐVoRzsGkЊ"$<@h}ۏX  ] "h6#)}BPnMr(PR O!p( G__4_ )Jx|,ԼPTntj5 ɮ?TX9PT#zC_"{j*BAN ֝'Q3 ~.?$/sKix58*̪ yyPF! W?ۿ,XF5 %WM|\uui Nh,*;֕ͦc(./.)% 1@k6U2fưvO^v?2yJZ0^B C žd7;YJzunT ܩU\i+8ߝu{A$}nVKy28VB϶5ڽh4 ;{ֽrY"zo"x⑭+(7e1͛6lٳf͟lٳf͛6lٳf͛6jf͛6l޹Pe͛(\Oc81 ';!:oE|үgJLÊ;)*\z{O޵opCU*„3W軇osj3Ͳjpc2^|)}T趒Z۪"o$-*՝JAڝ#%bIH'su$.W5 >A=P:l#jju޾)VU:v'/э!W=0"" ~ڿ/j Mi -lI,:oUi~GZ5wR;Sۀᕹ`:v(ՈGZ8˨8'iQMkjCbʱT)Bw1x*JQҠZH15N{185?U19Տ*+@M^!wC85w B)uACN.&7r1]4z~4`3bhߝEFe[1nl74 cORG$a1[1ܐz?6f@Pnv}CyTຶ%'5(x=Oz *vƢZnDo@vQ^7AO?+:T(PGF].6"GjF#BP9M~>U<~ˏ4~\ _]uyG2->_=ẋd6/EٶG~lψbOJ,u- zr<LZ=0[TZGu;S h E+O?,'vh$G0;BqU3z徵i!X+UigRq!xP'0Dd.mChz-:x ~[qH+ToQBҁiO~p3$E`X OfQUm[h^ojӫw>A*x]閈:BjE6ޟNF* ֦Jx=OL}ENJmƻRpЉ`HZQs~facW7uߎ >jF-Fx-Lb{8*iO+žolߕzD(@(ISCFZV/Mm6 fo`ׁ#|S6Q/6lٳf͛?lٳf͛6lٲ+^yf͛64 ] x6lٳf͔3(,nw2NkFAa]7EY\Hl-2HnQ/*;#j<%+@|)UQ |sYw?O)Ey8VR3k[H/ki#?Q(uor8ӿ4|gyu&oȫ,+ǐ`̵bnA:*ʏ<<9Ī9<=3}9w{-QOoNHeF+dž߶ˎKʋ Q-eBo=$-BC%\b ?`P´-?RtYq(ǟ)9.ci99Mq𕇑Du"z<-uO)FrRT1.~yyzl!O)ZX"tQ\Fʵ@v^Ca- qZTf-lϬ@Ct߮ Օ\•bX ?kwm>+qq,j~0TzҎTZ)ޝ}%۟pAB@}jm@抩SmaـSRGJnbKnw? 9~^Nޤo87]P2ԑTPxđEIJlp`J/#=6n 0їSԍ%h7PNJ.I#4Vq,&iJkN:z؁O~yQ[D֦O1QnFc@#t,E&@>*:]D()P+]\oVY`Y )صs>B-͗Ԕo*Bݫ?2,YdeB+E<؀V_ƙ7eъRe~KJZ`Νy@ Q rMm#Jblٳf8/-&=͙;Ҥ\>p}.YX9rfd Pk@$n?<(ױOo"c-nΠqv9}h ?<_I`R_ʬ_y[!L0 "ЁJ~αc-*p>È.zրpƎ>~D툻=}cS4_Q%*vGYZ!BS {:G*HG (;w2 opKhթ5b6Uv [Y)bFRw܎v/Eipou*F~!ZtZ<=\;r ׈&:/'= d"P@߿tfz|[wQSQeLٳf͛6lٳf6lٳf͛6V͛6lٳٳf8֪׵rE)\Cʭۮ[qfj|T|"ּodă5c3~g,bnut(I5Zy5i_ˈfsžx̓_rڤ,!V4Q1 }ԧy;+& TG#-ԹO@;`9eʯ/V"EQ+RcX־m*d:T3r;mǗ*$^`K+9%da>xB16nqSFݻFQ`hjYLˏ/DU`y=oy[m"[0fX5U8`0̌D!#P@dJѠ~>+-o5[ I&i=9D_[@h>unKߒscDG#5#PG~[zf9!$K$Di+*:Hy.NtO+{~KU ^x.k $K2 ˂i~rhk,F_PJX -j ?ᅇ~q*)!=#iyx?6ZHH^6* @v+]IvP:{`g2:]};n>ާ lo Z̿֜v7ʁ9iԍH*Z{\q7m;ݰ<-A|_oxШ܇~#o6NS߾Ԧ5y[Sһt`xsGq44{{$);=MmIyҳ++BUX^[25Q+ӂ S#%,TS淴+ 䂉(ث 3T\C N--E:e2CfwN!C'n,ScC~jPVG]n zϏkvk[dQ$>}[WcB׃vZ}{V7 U~cS˾Q1pOQ8=GO~\wɤ~@kJKn}_޵鿷]Xɘd{$U>JC?n](I?;C?i~&7t^b60p'2Tt(h*;z 0gU?nC9QnK]nђ+KyH3J ^޷Npm HLInee uX:; EVWT!e^=0f&̼CY$EJUZV: ѱ.x< 3禧pR"DK"" >&:]; JZWl_[Ztv5N-fqxrI7z+M܁7/xkO`Ճ7ر|3dԭ6$Uj]2@+,`&11CqBO}h_#jaMpD+KWjVEp{z?`"nvﷵ2+ QdB&AhWI1^ڊMPEJ/QVf'~c?=/JT/y-Z"<9H/^Eb7J\(4jS6$*>>~#m3PG_ 3I "Lk׷`(E}E utlA@;dOӐoO,w/]*jE) :=BeݳBdvd(?$#N~Dj6 @oKa\W@ IJҤx֛v\X"j_'oR JyXGE8"m?5nyF1 q%lٽ1SfVsyZl`Jm ?=2p14:WzMo3S~qBvlE#gp27jJ%LvܙhO> RM-OߐRZ*$aEQ3T\"UOǍ0)w$RJZ0Vav-~8o~cEX"b>gΩ6*Гr;mgB94YуM!`7uR+~Z쯉3v#ufpSǧ0Cʂh цPy8IxN٣+}Kh5ju#sq -dZO~c$ i v=p,pDVp\In%0 UzoLkV<~%p #S}wa,bbJ+ZEO_2wjXՁ-U4^3ѿ1IYy vu{Mqa͊IGι(anSg 8m A. sf͛S   [μj\q Z?#̉oԖyg󮘞N%X[O/ (Y ߒch%taQ QT);yr9}7YI#1#-؊ɝùב}L=j2P!PCT ָ5%Vv$l;c퐬А}%ޟݳ^`[TPRWR@M+N_<ZWkH $Hx-%UFCѭ{s:qcэ@>/$2ӭ;n~9,iVƫ?QiPƅ/P_ o)87 v(܄qTGjrEaҴc4VS1PyF}i [ey.!Y YR$ :U^<2cZ}Z\jI(RJV$Y"d=Ly-tW@QZo_#糿**bloorY V{~>|&zb+YF!jybP7z*7w[_[$^]vAĞ_̿O.% ]#@1E) ?3 Tm_ a a(7ee4޻{oGMPSsO㙊F@qNFixuoYIPj{dS̺ALr%Mܶ^wEh-M;VZTĒ!bdRlWnk"Wvo+H(c'$w~<󶭣iJ\R.bpw,c[Z%jX8>>[BJP7$dKHοvKqJ0a\ٳbrF cFt2Jyxj~nD71VJKR O?ݟjg0|A6KnaTkrR #RQo8 Ib ".EHGNzSxnf87NGѓMN@A2AJJ;1oR}K+v>>8P8c 4DeI"AQJpzI(p*:W* C+0v=ZsR 6͛6lٳflٳlٳf;((}b*)/6jxff͛6lٳfӸMOJMg>5Hv1ԔCJ<7_s:^~V,ByE^f99}|33=ʅN|fPt8NR8?ed$Άa#[z PWh?CׂO"]cNw7;bӼmJGH )4~5]9! f;6# n!sR%Fʟh5&KռaK}Ӵ!m>HŒ~lٳf͛*esFAiq6E'KBCl.נ@~!\]v7 p581#8pqqAĤW0D8:wmri@^~iP"4; _mƌfKaZy|nv{矵.^9$F;UU{!ש?.Auxق@Z?IC@/9%7m"SŇHTQG;79tTy^ Gm`w6،Yj* i{a!.Q^ * ڦ`oOz=_h׭$2%@^6ͦJѣ0\^LO?S-ݣE((jׂWޜg:{b.'' 阢JXmE&͂dª+"0 SKwá\; 5NOtb7*U@Ι3w;008ٱ EBd[TA:T9י|a lym.ѵR+ň6D^caIm&0;{ WMGxuo߫;V>=*Հ$1fv$o]i@&5QTَ6 ҇<Y&ڢnMԱ?W BҍUe܎ڙo%HDaf^-; 3,cZ8!klAFRN}ᅱTN ]eS~g6lٳf͛?5$xe͛6lٳf͛7\kaU =;6lٳf͛6l򘀠>}Ӽc WjwS̯˛1L~mQ[_/[" :M@ALPi GWCs0TAF<jZAg =UΡieoZi hcJ,V0qU<~33Q:-Vv$ +El6x n=S͛6lٳeX[wڂNOc&*;W#ߘQ1F$WMSOKur?ém~vF$r1Jz"@^!U_B9-~'<7­3y5EAvĊ0a:|[Iӯ  V0 Ɲ>Αq]*|@y׮Jmugp;qZŕeq0p4I'Qo6ڔLn32U.p ÷|$;8,KPhӧ-SWpMcCA(RvEUٯZ0uƛctP9$C0@ O|r yfWyQD )ozg|oDtq` vjԴr9X7#c^&DF ;]H6}[#nܚG+һ݉$fZJG0XhQR:V91,u)]n9a9!"^cn_WMmQ-pL~/Gh+ԥ%xcX>"~ߵ{LдxeۃgTwI0CZ90K=%6s\ٱۘ95M@oTӒWi Yȼyo5:F-bE+R6x*>FŀmSCԛIFP+܋'ï~ϔ65@a~1үqž ԯʘaP&TwTR@;W$vW狫z_ Ucޣ<-cy;`JkR( lQW}r!N6u,@6ɿ{G#qJ:>"8^w!Vi$5j mA`p 0BRNJ~yf͛6l u͛6l½f͛6l 5l)lC ^lٳf͛ Zޯ-#n4rHӵ DRd#X2~=Y-i:0AC,Y֬hAXsߐ+˫jԸy_x?_f۠>关P`ElX(|i"Jmc]٤qfy(+SZ;᲻,&mrԪ~ k^**qΙae„6UٺeW0͌g 0PXs̐)P 3Ϟx OҀߐ>0~oAk. ./) jC~'s%cye}Vj4jN͸'&0~CyQѥHgrQ @V`8Q[8ɿvbF:;d +jy 'q%$JF_V#ok&eG,H$nuʺִ馀J(A";oQ#s+Ȩ=~{='jOPׇUZЎgU3U 0R`^t 31*p aZŐ6?(8%O6y"Xw+f~FgDSa ݀ۏ9jU#Ec@lSC5)ᜲJ /FIJWlG#;ƏY庒;qCBE 硿,= ̯8:4c@XoƑ$Sƕ7ڤaѨ*iP:oOՆ%uFF  =8; lk'@WtjMK[YWoj9;Vek|˧z|ЖF}%W~r^;x+2۪#Cփ:4)SÞ%O;_ゃV&5P6lٳf͟+6Q͛6ol`7#o21ZS Ere7͛6lqq9'URO݅[iSw602QEqiexx[]Gk{<%ј!eTsRRN2sW垮X/Pq qhi/ /'ŷL4ȠSădKiL=`e͛7ȏc vo_ A$ h]ȼbBk/Sy|/\9o>j:Ε]^Ji`r#YgDIP41ŕ<󏟔[{MNI=+P`ԣn ~MC1@?lZYQH(͛(񫹮< fM0<+ƀdsU VJIs5y=n&+3uWY^h[ swpoWմ,dD2܅gܝx ɿunKNFHȏ#N?`O-zUWO+3 Vױu LGoƫ ;d/,$cSm´8kCP Yd㷎F'ZDYGA]Vc א^oZ1݂t?ͽCF~! ܊Q+MUӌ P0sXNU/VE1\68@$cZW@5=y vQ´?dIXGUvUyοy~Xi%*ѳ~Dq 92!1%*ԋK Yqn;7֖7YӊC17dœN!^-|agy!5aJx΁e}oAE:wp AP)O8fC*}OBeOjvC| %'^^lx3#\yg] vu^g:}qGA7e OFiF^zݝKNZRM$Vk/Oq`k6#4"AL)M||2iL,90  ;֟2S$t ~| Y\ǩ!AHb;(-sS|E}5ԍ7T{w^Pm_vz?1k֪r3:W†HΣczfEF")] ?鉃j.㯏|>d?}P*wxg(ay$|OTRg;+3"Hp굣gXI ~SSBͶ*\i Ђ$Ek; [-tب-7xodqh5őc6*<<2f͛6lٳlٳf͛*aQ)E*zcMf͛6lٳf bီX+@s˾~]3ǿߜ2n$)ny~[| p<p.8i"Hq2Te*g{l 3(}TzJh(!TPwrkc ԩdLiA|Ql3br9Vzr,rv@FxnQGmY j4QEĿJZTg/5}V-Aio H :9(2|q?_9)ƬF|3XZ@ vlqݶ3e3qݬc|kעMv7~eciYEugURS'[<;k>sR]<~Q$wz)TÏ&:kbX.5~Qlj_ӕ n|g. _*? Y܆fjZx3Xynu(x@ihovLj.ҀyVEW>)ۮD+Ez;Tm^,ˣ݅>Y5$TdI"Qe¤r*F{S/~h6*YO2 w=k:E}b kt ?TKPr0}CMYQs<MOliՖE9B+|A;~b~WEk2O/J+:8H?u>//yLMGQ[ӕXB(j᢭pCd\oX2H;3?yjhjH<ʚ#³ <>l)w椳)`PO}Fb (ރO ,bEO^=(] iaJБAO .mVa*j$]p9Pj<ХY4aYd?h^`5{gY<â"*/eU;r fbֻHڞX(CzR= 1Y*fyn MT'O,yoakKoR.  mJMzlj|"q>4:iB(hxuVq6{UX׹h=+RUBɸS˨oB<[$Ճ#cjѪdz?isӟu֭]b*=αHZW%*cP)߮SuIDn{=:Up#ORC'1B0Zi8w+m9 SPA WaRh7~ЈV.C|{[[x•JE| 9WIaq@u)J ٳf͛6llٳf6lj tXߦ^l٫flٳe1 mwnF?k{&/Hbpn,J^\Wf_<#S&pYK q(]AޯQ/3DK\$HJV1rRX.ާ>.˰[qz+^ VR|az_QcvPS 6V"BTTM֨7]-Me0nCR*r_ ~l+2hx#KHҹpB=f*.8z=̶5Kȑ ZZ|KʿoOl-!m:ƴk^!USIP6jejw&qƩ*ˊ$m'[ mP$7!j~2+|]kG- *3EFW(F(?k(ߵ"%F_-Dw ) VQ2K'l]P.]^lٳW6li@p,h\$t,EC j"\!ߥ)O3ORY h(9WcW? >EtԐ-<<{ug+4QZ¤sizݨu;amQc a]EX䪕#r!`]DEOMyQ)Og[2PK9 Gd;Sk.p v< ;ɵCY,W8dq"gV&:G9_J2CZa"U3iӵUIBr#}W9*=_,s_N eTpj6ր|މzt8HV_Bs"D*0~gʖ3_5C+ SHcoJ1QSC3x{cN]:7{bcvdBJPOp󨼳@/R""t H*7}@s^UXz3{ 7aaOa: u@m n:u87KF(Įy#rNFR! JS5Wf~y6(%@9 r;:)+hi4_MN=@;6lٳf͛6lٳf͛7\[/7͔HQ*4 iuEi헛lЬ,J`i$0H$g7b֡bALl$97VY\o 7 ln7tHܛjU-Vsk=IZDdӒaC7zv?T7j15p$ޙȊr>_q_s~eCxi(\2?"}HdPa(PRe3~iySUu3 ՂVy"`[Z{XxL_ N|G#ޞG^Qwa8 8Ð$ݝ#O(@2 ߙLljBw#Ӯ|}{9˲e#p!ឣ #Lfؕ RݿtO25]oliHmoE8)e9yf͉J dwWU7NqoO:6<QԚNW~qpx[q@ő9\XqOsB~V]' UIjU@ <mwQF•ɤ1]\(Qx8o/^lDW@MՀcȖc <8e5ի2f! fUӍ3~H4aKjg!q|.}R)iӶu+\_656 |%Ċ@2+辣qڜi6QOʻ=NѩI"(EBk@Ny̾F4c~V!_(^UO6$o?~ԵVQjwK,)@d"~g~G4[NV+M7n%kB2cs^_eOc :Coʺk _rK*V4,M0b$RBjF;>xh/;T>y(YB, O}y{K,naTx-]l>mźY0hVm#9*~;CGko$3Vz5_ t k`Ë{N Icߞݰ{1J ypj2*\G Pø:g ׭Io'Wa~qgq(xu.UiߟX֒5y:|\&?1R @Y["j44T>!Pv]mѕ,ߧ 7 BCES[zwow,hBe$*ËMVQt.eVb]evN»PTzgET(55TRuڸd?7L()6lٳflٳf͛64\vlٱNV 5mlx闛6lʂ>*oL&kY˨]HŒ@jXS|j+bK׏/QKU ~Ӽs˺Vs9'9,bV؝܅#rEjFu!vz*ޭxq[ygQOWSfc(G;+Ňyrvj8[gcVK[Ie &EK qپbUKVZ5di֏@ڍ(Ъ;*D^';to憽 zo+*(z} >zCZ VW׵6gPjL"eWsKYk^^i%bCWEjN_~ly[Fӭ-n?؀Wj~]dA 1ycx!+ MZOpGؔxpi]Z0ΟNԭR)"FǕ!REoaw .͌g 'g/ǙAy5rO}:gmo3ܙJG*̨wa'KX|y-ԆIىIUBČ~'SNkS:u@+5YoևoԞ};SAOMp# ٳf͉Ia^i?P}l_d4 33ZYy)^J%:7.i񻟍V-|A3f"{p~cvw?#5#od>E]12̌ 7|[r)YRޏ+,S~;Ui@AqF-jvw K#$\Kʠ*6Vje'CUFU-dXc^%x.q]\Z]H,#ҲHc qitULZd]طnq"&67ܽ _m~8ci#{}ԍJ Fk~]G P$nI{u2/&YO jHRk*Wb]TM@h8="WQzlY"=O*YުΏ_14J EsƄƛc^UIZGq, TӦ[#( Ib(p4u[<1;lzg8- [R . ^j75*8N8 m/tƷӣ2[_bs?y5I)(d*A QeP y=1=Tvh㴄vgcEO@z=l.| BOVuy ye  #[J"uۋ_T1*Va]yS3ٞNFJ 7lp(U6cM((N=T~8Bxf͛6llٳf͛*.͛6l]fy`IGL5P i~}/(y6CX\ "ۿ>buwo }2P0g7(=2(IM4tWVQQQO"qsڣ% ݹgҪ];P`O&hriJ^0ŌЀ~" W=MU򇗫Xc^;@CΣ%⿨BGT> %IING w} +pVRhOZGo$ep4T(iā^vۯg.V'dl1S67}ԞmKW1qu Pj&YywSiu%,3Fő=]#,U+~,(O56 `ڊm bSžCz3_jrc֖P6BI')6<_QʱM3ϡ-$z!c2U&a<DƧm'{Է#94JRkj"4R$2heBjg|o`M 'a_jg@CyTa\ثKW!3:VsjS<< ?T_ ^"~L6(ieߟ!@d93dbOkY//t->7 ME)Ҭ6Pf&I4H`+ˠa=I HtB8PkA=xWm[[^îIu4:v9 E\0K?,U\0f͛65l  =Zh.*RT($&b7:yfo]yOH~ԁ(O'n^g=Kj=R95W05rcYCa^h)8Kum͹Fw]«#-)'9ϔLXVۓ S9 t;Sxhm3KIn.9_,4"Ŝ˖Zl$K؜/ CC'"tXSywiVEI!zVh<}Byǿ+Zmz"UGokۗ+K^q/eM9 +}a^ ;%Rw-`7j)n+@9RzӧA.g0eZUi"xW]%bREc:<[*jR:[HDroP{my4xD^R pHO*?~]>ON0R󵹘U IDdDWg }^0#zWo'Wz()ۿP?=W c6 AroþzFx[(Vu{"$_%Ш6 ~l|p/*iKYſ342UkKP/{Gӑ 8kWͺViPN܀VZvʟ5-I ҫJ)2 hȍr+ F9apñ|܆@~cէpv\zpO9d{m9̒GLv% hju h\|uY\ٳfƲWۆM/&vx)2ƀxz|UOג44RXgme #ɦ<rhp[@?NliA`#i#|b}VT G)yyb"+_<}Z+6AbK>ݏ_ly[ݔ9HX5GdQGx\Ο wEԴ I~*.@YR49oߏ^iƟ$ܤPIDyq-Rʧh W:c,3HJteޓ:ȦGbȤ Oܤz{Eu,F"+X(~yɖ:"k5WVA_]{w~:,/%=)yQȟ\r# :]}L^e7P#r%TS߰nvA??/|?GO]l+QS2+ٴ S<,,O-c(`F$+Hvg ?Uj_/yO/=Λqu[I58K8O3i_2?%RtF4?l7^cDtdU7 `и<4by+(㍉Ǐ썶>5Fih u|$& J7PF8<1\D,&yf͛?lٳf͛6lٳt͕7^lٲA .GXҠOKּvc Y1PN]ؕ,uthJ]nIJ![W2🆟 nu<載)A*٦@91o[8:k$1B&W᯿,~blfDOR == d@Z 6^_.Zv2(U SK<JNFރH ! Zir ON_l'nmo%y(H@ ֿGڹ}Z.,Ŗ@U%-ȶ#;T`\b(؇"En>|kh5Z t*XE 1Ilޟiڃ£-DDN}9?3%'g7/{$+&XI1^'L8Jdq|}=?em:~z?GPe1L QRȮǧ1*GxcI/m|&b3hۦjZR\3BV;Ǽ-\]0zJԥT^_9>ucwF%48rU  P iyyf͛6lٳglٳf͛6lٳfsf͛6l?{iht;3Lޝc{Kw6DG^>9~-L8-W1yi}Rb~% TDp~?f?v>x M?|~r=sS^<hMQ׎x.F:tʕק߁mnUEPH.CqV;GodXcB-#Wkz}FվmlQ>鑭i q_}^ &~(%eB<֟|4&"LƄ6{?(=Zct'8+)4r? |_col/T* @wۧLhkuÈ` 7뎑T#Md$.`+@ǀ߹CFGp 6O,^1ȨM9%hCQ#EWVͫv=H27MH S@݇#ʻNE+he#s4y-E^EH4fӋUDESpUGBvd!eIj K8Nmu+( }u4d](fɑT$UcwѢ@jú犮yWhae@.Sl$Dk_v$W/mfSyHe[r~"{lcrHlmmB;ERȱ 1A-b,R$ /b^ .|Kc5k912ZqfS4&Gvi9<,sH!Y\9eu✁583?o1>?`ktX.& ?0U~}d帚)VB*.;7% 2Ex\e͛ dCYԩ$oihcQ4yP0jq4hZ>wɯ3Iُ[gr\yl*)]4{ LuwlY^ݿXŨz G9W+m5Xf̀R}y/bbO#U#4oPna#7_!UIY0W+ȯRGʻ%o٩ו< 2Ci=$@cY5B*yX)V9a!F#sM3~Y!5c׮LmJ~7EjTPz@l!4ڔ wMv;o As$AzѠPv Po8ϙ|_[ EVIѷ㸯.G+_9_yKQƈW ̌Iv6z>yYb`PW3iW$In'zႚv:",i̼ۨa, єrcϝ iU)Ux/UUlw,z#J394Z!I<#ŗŀ!q xӉTsiJ)\D@ {`*U-M\L헛6lٳf͟lٳf͛6lٲ{e͛6lc_6$An##m\?捗nno pc)t-S >U<I:/77z}g.K r8-)P=FNN?k{3K/Z;?4O坦m`]A!O^;yqK5//\+bo[z,? NG'ķoŻzZ}rGT@־,1&HC*IcdP.e"!F595{~ag4m*O( (%Y4{>^^EWT@Mj7=۶)2@ 񍘃i5M-3(Vu~giug.X̝" ?m}j]A&?O[xhSlƼF).ҀKZ+'Y+wϚ7OpIĎ^Gc(rH9ISo J.|4m&+x/}4IHȥ)/9G}e}1wv*exҵ>Y0BA K2zC^$0I(@f.y%h$TrɃuj")w].t(XqXGUuݲm.;4/#ByPUy04_y7F]ӯ1~1tZ[\EϤ'(jqoNsߒmެ $+@4 |2!fX<%f5(=K! @O S6lٱr9Z;G^ZK{ M (Z5؃yMJkWQ3qvđZӦ# 1:e͍+Si6`+cO m\)r@݀u"1 [W9g,t~Q/!)CMӦsߛ_eխ}GT$5'*~e<_zg3G GR^)[/hwS,$E(Uyq2PmִGl=7geler\G.>^+"RIEXqU?A#ڣmuCw$ ]PFO9кXo!J Ěmc9JE:5ȼ[M.I?Ҳ+⍷*-^ed dhWn*gsjU[kYxeA4vA:1ܒ"H*>򅊈ƴ:m^D`v'¸ulu( Nco&lvlٳf͛6llٳf͛6lٳe()6lٳtn_s L\N"_jdK+O.SIJIaM8FVju\{QvQ»P YM9֩fNmyִRd (vQ,g垘UvoׇCEVo_,*ۨټ:hUI i;[I9ƨ ;ᒻ %m)Fbd{̗g+B@p}95jSi7LiFC9 S_fn 3jWO,$!BzPWg? <~J9jkBjo.ʃ˨$0JN oǻ4)&ɥ0-v)%|lEwP7ϛiz,1X2W qVy)Þ|]J.^(J$@(RJtw%T!^G7_R vLjz|~`yDM GI'9:ƹ2;4q|TMF}gaOiy4OYw)-s+ȁ) O.? |y3_} d]΅5`6_;+׵OK9dE(9ل xE?|[8#$;2|E!I$~]Pkl^~"U? ٺV6I[HT (&6@mTίlHHD!nC {g bB9ĺ~У}TߕWPkӓsf͛q/_|\5ƭI6X {3}vO}rM̿Qug.ԑ8>%:Y~3^Y}$f#0͛(NS h9CV}h:stۖs`])YzQFr ,~8Š@oTTSx/3yf4;|T (r%-[Oy'R*4akޏFOܿ;Sgxʩdoɀ~,6-~he !YVU 4ǾW< :VPeTG1A cٛzCFڻ.*(וVwE[ݪj;n6;twkwˆЀyrZwN90~X[LD![{\bI%bzdq9 Bl'u epd`~_C3] 6) Bzˢ7n؃ͺ52A5@[ǧm"ZHo5@~^wREXܞou1Aiwv#8 I#I,jYNk-* C7:q"8S_Wumnuhzu"Zs >?u[?6P׉$+AVĻNz1JqZu߯lX}OOY^6+^x vl󧜵O#3B׏1PiusvIV-zڪ?աHѣ2{F-|-AߠO[co!QJҟ_3K/R˜rA".E7@WEsvEFXE>hWcN&ïy#'[5;$S' # !+݆eJ}9ͦ@!+Pj6mkn^'Y:({a4ؘ[?,$O0Z';7-NS#PnϏ?>>:ufe{q4veGe^B7(V!T㞤Q%(3쩺&-Ÿ>֍n-N#$Q NlٳbRC !*p;w=~iwn3'@O٧ݞ@OյVcE<^YJj#|4u[߭Ղ2m:Dfsf͛6VlK G?P49jèQam|au5¸Oޡ# (2-/;) ]Ar9מYo`{ R_N@BVP>.ȟN! }0RJc>=N,G f~f"Iǡf+yvKɠ9nI'1Hh~'^BظڜrZKi@ک<*|uXa uTq+Uy>2}:Y4)QPCQWLb*Ɔ!ގZ=:P]3gof$0(Q^7?9w8owpivJ#* `8xОD=_Uc~Su߷ιk%A9\uMT0&y"Two%\J q_-isM`v :kvr7&{'Ȏk]l<2Cb$2o㇖‘6'ae͛6lٳflٳf͛6lٳf͛6lٲUh+ yݍ4@&EE{i$3\0+P63_חIdoN:Qev%M\:/坽5K;=8ҘQ%o-Qj?oyvwZF#gF ,886lFḩ9?0idT5_̕mv[-!i= ⦀j~ pkShNHw уөxm.:C*TVA~̤ݻbU'}2b38gy:Ѫ7ŏZVs^GƼZ"{ϩ#Y#Zq$?tsi?i4HV]֌GTD1 :rRx-$ ]a~x):e$Y-n` DΡU|oAkX~#&)ƶWv#T sWW|Ǥy}_L/7X6fPyӡ==yVּOIB<H,EP27XDL"GCG#r I㲷ÐKW;2`䦃tEE6g`n\՚j(JV ]3[>eWD1PMAԞ+}ߓ?ƢC$|fP>0On;BM2GܓENf/6lٲxFqΛYW89q xgu9e xrK2*}mӚȞœOfTȢ DcW?;&6lٲLe@>8]9BM*Fæ(d);՜Ϟ\]E5iIvY+ +N~/%.m< Mᐝ3V~u*fc!ےT5~*|8y?9_\.I#2F[/^#᧎M/X^Z8SGA\[¿ E<Ԛkm7@LRbe;lGL:Ж(̎ԟj^!ciRP;9:Ț (D~ŖTV;/|J6F|..n%B ?yz%RjuLQ7Q$x+T?Vjqg@\JU=u_:~n@yn bTS;g&LkiNc6O?/!w_Kmǐu+<°}sipѻ<-q%i G5\7 ;k[Tge)njf> u8>,>|kC6v*5h,i"K/MCf-*]}IJ>':d|J_Jt!Z[>C..Կ%+<&y 8JHXqqs$3µOl'巖p@Z;G;^sEixd>%w6a6qx^lA͛6lٳflٳf͛6lٳf͛6lٳeTRԎ4ޅ:9o> U$V9to>|7OIxa[ GŽECDܫi\ ?90,N\:P((C"+ƵfW|UUw\U:U䴨lTT28Ak΍i,omOjg3W-u%N 2LQk~S$l<_]ÝFxUY;ԇ[=.^GoNm4=6pJiT \i Z }&"xxxcAR9V~Qԧ!^{Ek9,biaM֛2GA4߿]SHt+ E?<9U'ǭn f]eZѻ6iw;XZ+sJG0կlu2[jd4 okV?پϦ7gTq:͍e| G!e"Jʼue{G!W FQCS<8滖kdD3&kc?oFwѢh^BO݆}7cQCOQu,;jw^41Ey߈'&:흏kF! bAS7mg}c٥D8/J@Ӗ⢞8eaF)6lٳfwx |tٖҾ` icJg5|}0(. GCq W0zs?Dzz% \Sww1SeM6l3SƕwfPٶW Nffr(O~ dZ:PF-.Qo|j5W=O AGg1?*om~X"C+H%B]PS:i67b{ƲbOEysfnk=ckkZ H%[c:ʯ+a:)}|= '?ȭv`xlJDݾo<nkkmieoEڪroP5S! !ܮK|>E˒iD~C;[ U=1AUXSnzmQ'rOolr޽< qH"Z-/j+^-֚+:!n@u2]ovTPJP_ɿ)hW-%N-4U^FUyxב*9CA j7#>U޽Tlt}Dtk+d^Sq$ZMw~\zwVs:r߈0u-# bizWû}(." "T \(yf͛6l4Y|௱vB52m|w>gq> 4v ! ? 'c/8R+(6J tw>*sf'52f͔EMrm>dvtQؚR^̥@UֵO VCW ,e0=9?ϿèO4B&#@K_ hEx64wE6f?h[¹n9ܣs< łKɸ/(%C#LvrTsCJ\Sƿ8t2CһY8\,jIeO6)i}ko^TXjTגLGNSzM^#$r+v?*S":^:P} Mv4#"ҐXPЭ+ZS3qj~f/R>!𝸟@[>,&.zdIF;G9x d`% cFƬ9} '_J`Y v%z/+aʽ)ZǎKmخj?^cpddiM=t`A͛7Lٳf͛6llٳf͛6lٳf'/6lٳRUޘ5aBE{1xĤ Jr^8Y~PAOɈuB ;նYK`)><&wVdwO:6{H`@KO/d7 {B4DBU-`O#' ]M }LU+Qӊ xRa.gX$EuoO0k~[Gek'cQ7Ĝ~D% U%=AKt cjđ:B4a>yBSrwoo EŽ5R?4i۱aA(6E85~(]qJ5~S`C?F(̤}E6Aa_ >Xҫax R:tV@oMDm=3F_2Uk vr^GUPֆ :SnW~\~~Kk_Y邂mƇozg4vQqLٳcA]s(͛6lٳf͉VOyx)oc@DkaM,YzGcˋ}hg׿ 5=% (&iJpy@PAϏ4 ?:-֙tm2͙ Wg4f$ơy|[Svo3T[8s+4$@TC-@i?e7<~,?JGىM_?z›)D]iJT7/]m\_*^r T,yP,|<,JZ|d)NKSCFlzWi,`)hHҽ1 $sFm6(lծlٳf͛6llٳf͛6lٳeo_lٳf͛)Lkc~ )W`IaQD*kZv1\iW{~Xh\=BWVG<OySeCAj2i|7s[\meDr}9q+r-y{[G5XBC4hhJ q.T^\ݾ^ǵ;@P(+DI,a:u6 ":3k!{C^{o"1`x־ɽ>o1_RB#H$A!XVeq13KүtnG%<Z󅯘xn=GpIۓ^=1u!vèG-ȡ}+'_c],k~iiwL@.7hnk3+(#4WS_ &h̀p{v!jK ׯM䇙4/1ypͭՊq(VyR~n\Yx˞y. "/Hڼxtnž|[HfbEMjI߮=7,>/품bi2f͛6lٳf͛6lٳ`;؏ljr+D& .dXv #rM=&i 2¡EV B~*^v 7P:v"\S6lk׮;6lٳf3T02) hAq]oO<^Q~ =(@ W‡!` eE =⨨~~~A]i_|%RO0⌬BWwWO^h-U5uTGʡiPi׷٠̗Z[A#ZZq7n--mu{Tt#`v*iF޹5'ZMq'm#bjk܂̴ >8~ey2˗XrH*|'N~ i;kFe+G #%F⛭>t4滻 A#XIIڿ$*g,C ~5i]gaҧ*M@w_P"HbS0>wlX)ӝ w1LI6ۦ"BM`>{aP p͛1͛6lٳf͟lٳf͛6lٳf"f͛6lٳef=F"w45|ek\,DUkրx׿#ߖm58³"AT"JeAf Zl|-c-neWw,#U1 މ+}Ese$Nu]ZoDq*+.iB2_DY+Lk9 $ p(>,g`mn㸼n`G5 EEK[s k3Mj[9 ?9t)jMibr9F_rx/,UddjzoqBPT=*ǝdUTLx};McԌڠlǦS`iA_׃OSzބ{Tm\uX:5uQ@Nbn8Nml+CQ]S#Ƥa1嶢(ſk-@ AQA6|3IzFIեV(}289FQ5j:Ҡ|z3@c`B4kҼ$W=-ɥ-6lٳf͛6lٳf͛ Ho\szh, wOWNseanahٓ\w|u[  ~ TTힵ-$PzJ ٳeS/6lٳf͔(n5j+: cEaϡkedFkŠ/Ezkwlfp w+޿cai|"3~eyn8Dqx ͲiO|U3Ǟi/g F!E\! VBvFD^_f<%CS5u[v;Z&s*@Ge*ƀS+z<\7J*Ru28 GiU Qe*(hH8炨bݩ!Tl6ӾKC;6lٳf͛6lٳlٳf͛6lٳf͛6l^E Pv4tePo k-|~xQCx#68lҲ* A,z$fT%To'{ EjPwH̀RN"@sok4i%RBymɍky]T]UcV۫*_?_0~iyO LyUJc܊)dxWٍwS^ǎw!yqmuѱBJYҧ(NAqՖ/.hba$@8/Y|.Ϳÿz/7|o[.ijj@]vQ1,zm8H]SLZn>yNt$EsCF)6lٳf͛6lkfkJm/6Q4rTDHGl^cHݾysvt{v$FbLXאBmʎ5? \[zVI`z\ Y~#WO흗M_8^yeRyf͛6U*k/*$|+hEE:bTCZN^Aza}KUµr+{NܻD΁h‡|| m_Ѝs$m`y;|2:w6v]ZXdqE[02pyR>";պ*QJtnO#DUe#F.?O1i XȒIgS`^"IkEm{JGωAl⿴}{`ș-fC@IfX0S/6lٳeTyf͛?lٳf͛6lٳf͛6jf͛6Ptz )Nq5Pڧ' t8V( Vj|2mˮ: -XnG(rH$F9O$LT;t|=c7W8ֻS؎N\{OȷgGT⥛њ/G `/4*GnDpo/͇y'deU.]cC)q?v/Yh}ak$*) IE;qߗVqGH!a(Bq 83y/tXǁEU8_,r鋭[ڸRzӖs_nm8(e[~Ryu{(^dV-\:3f͛6lٳ+ pe3pM$m޹4k"]BVTQD RX|;Xͮڏ#aHF.i)f9ˏ*[[G uVJ9 h3!W4 (@8yf͕Mf͛*Ʃq5kߦf2N'ЯLꄝx-t Fသ/RAV'9N~WZ˦c1b¼XtZ3:ON>ӑ+}d_~-%[^y^H:j\q%ʲy}P ,Iss>P}a3ȟ li3QяR6w.w-+is9!$VՃ~*~7厱466ƭzױGߦ^T^㇐I{ש0!MpT 7/6lٳf͛6lٳlٳf͛6lٳf͛6lٳfʮ~ٲ&5ߦ2:2zW\hT(je֤OZ`iaD,wqf f>@s_b N9K '2D=xWgLg ow$Tx 4NljVT5ǩ"qY Q? '%nǠS&>4~"J}^QY[YqNuQA])zR(~' o?8-Dj3ENm7)yJhIJV!So|$y=* 6?AF,ۓ_/ɬFJ~GO~g?)/t͝Ŝr[E/-ʔҞV+ P6\XITnUi##rkBurV2 Ӣ yK_DM7aLPky9"Ǧ}_ Qb%=^$|$Pi78?-f#.lX-+PT!0)[q/ʟ;M`!]Ee{簼GuqFs6K_!I2A@O{g;<<3 R)V @}E'xY]vݮ9jҁ~CLbjΥU65Gh„P|`l0bֵ"lhW;6lٳf͛6lٳlٳf͛6lٳf͛6lٱ͚*@ƎA~l!˹9UV A']b>*) +^ ~hA$U<:һoˏ=/S|==[L$ glm~ #bvL4*CtuWLW:'10`Ƨn;x}ݲ{8x-;(wyѐr!Ŷu|;oA>Qo[sR3Cʀ} xjU(^D($ԟ _ߗwMz.QGSwjWCXmQePiZmg:N/;nJ\/p8D݆=Fx'RHf1*ijGㄚB\YOr:w5Pfӥ#BHPPwwyD&cdb@&S?<~,N$P-Fk.5ͭ?ZHʣTTgPbPU,jٳf͕P2I8Q /TSqC:ЪL[!RAKT1ªg/UTϒK |G}:ݿݭPI`(}~846lٳf͛6llٳf͛6lٳf͛6P/PBыoS-GZt q+S N'X48vL)IP~ǿO͵vcQY[|3$8%UyJE#(r[1iVuR@^4Px0Gu*gm$6 /PN8g0VzuS}Uck*kYxOEw܏OZUGĐN+OǾGUkGA"];|wm tB^ĎXPʠ^T] "e!M:|Cmz~vO'yVrqʠsyoCx"Spk+'8 ]7 CMW 8?ā?+]݊4^=J1N|0ei?3I%&NHYy/j8u:#:Ǖ"Njӽw;ΛhH=-ASD@1f͛6llٳf͛6l(k㗌f=bLՔ&M ;O&IV=di@w(V~/}%5kҸULHl9Uٗ-'S3NY\) SX9oˏTk8:5+Fy r^ҾC^#7e^hEݳ~]S˩}. 0ޛwhVswt3BUHdQrn;j?ȏf4yBv<UgE,_hUUU8]X-Ҵ(9N+ҝ7ߦP읺Q\P\نٳf͛6lٳglٳf͛6li͛6lٳf͛F3T-;eJ&:>#Qh+`@&KPS]zrOڧ_l !AQ ҕ|Ԯ5K&xnSB52rF3'}w'[S Tl􆟼+nF Ez*)ʇs}=qg q#nG_W41z> Z$3x,GtAצ?Mr?}<*V]_b%e* T Z<8{wy5_VEAU~?wּ&ܢE*xS1U-&ɇ?8<ѣ_5ӲfQ(e->1/ŷ_<9M -YJ0qFbAj(Z+\:/獥ݺ#wBiZ׷}x[ Z>}'\F̪ҡJۦJm<$QĖڕb^eh*M7=1 hs>8-v>?, > NSQdY(PRj֦Dtp̄kʬTNq9yWZ8Z#F2s[(#Ƈ;_Cq+jBH;2֜ >ǰ^EOU(ƕ  A>ɦxP~.t> =X*ce\ٳ ~f͔!v=/6l؜qgnL4=`(W\S(;05wl+O5=; w'Q ]]HZRR+*$+4we\hC,kU0x-ϝ_r|ko{XQYf^TpzXվnOW\ߗv]^&gڛzt8(*;Wmy/!kHڣh|u$s5n?0|.gs!>A|]{/O8 kwѲK,gZOo󍖷/eIW1+É?gs֚b+F8HL?R8F4 q\ٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͔Eq|j'\d* ]w-I$d!5 VmIj:c?IWo+0vSuP׭~]GFLND*N>sBiZ޹iV}A"aW?gg!fj FmW0rgSґFTz^KI9 >~gOt#ƞc0,)^pou-n3^J˧"y"BQ7\MjV*kR=ΓYTiZ]k:|'mfa:Sol e_s&*Ws-~9qATLLg;UZr_UzZAwG%Br5*&lr Y1s #t+^Xn+A<ä?//$@ʥ9q庖w<?vΓ2V2zRFV4G%x/~Hӊ"eϛ/*_Qv6ڼEد5# 6 ~?kU L&ՍQKLn_|Kׇ~o~9D=I UIY׿=ϬgzM"HU\Sv~(W[ ~tr$ zwU~7䑟RN|^k@;)xzTT|O>7uov/Sف$SVI4чUrCMa޾gebбJoaq۱ٳf͛6l٫(ٳf͕];fnqБ]pS]3)e4!E Oxr΋okg,p G<$r$|*=ڃy?zV4QiֆT%~| C˚V^j!g;E{+[!=Q#Y\^Jߊfk0jײݦM d4~P /Vi)Ԏ͋\yэ$(sY>=9Fy[rj-7rOM J5+O9xC\ E߭={BQ!ڭӦ|{h<2GyeFC57n,QQc֙HldcP" u|NL[tRdr 넺,gO`3k6]*qZڌ? 7h֍$ 7VN'vJtviqOnM.x|טM֣U?62¾%!ڇLXFQSljƵۧLTrXzUO\Bk 1H) dKDN>J0Gd-Άn$SCw4،-J7Xr @Aڥܦ@ܐT{S=e-%P(PqۿM^W\Z Ո?̭w0yrmaVQMw?o5+M:~%px'$#lqY@| 7:McfHb@A Clτ 燎 ȎBbլ{S`f$KI.$,tRY0zJ< NTn:|;R="!GL/]v]͑^]h;yj&Q$xy⫞mVRʼ~϶u4(ܻ<ynxzg9o䇖,s_ڨhؔ(8h~.=~|:="KH#JmZVhZ6 $CrG j)E>m;y+ mf2Ckԑӯ 1Ӿ2f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͘]yAO,9W꯭ImwQ/k*ϣ {b}4k*R66|!n»z*%X㱯J,cRyR&}9R!>q -Ry=ZO<ȯaGb;tg. t!PH^zl/|sv]Xd  ш ZGY&AiڒחE*(|AIBEզ/LPv49Tc!Z< ٳf͛6U w4=Mr0Pr$Џ3[z4=v\ AmF=56֤ȪPRZVvZcRE)P\zZ^"zd SޛԆpJ1ٳf͛6lٳf9^yf͛6lٳf3`6ޣHS=Q4<9[qZO^Un(pSSfڙM^[U$a2PS]t/j} -a]& ŇkαmQ%DV$_NSAJ?W݀NgV$ԖsX%$Se2dG6 _Kd>$1:a?6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6|*T5<9d&iıv' 7u3|loXo.#oΑ4M2+DOurSwhO‡s% )Wq^sպC?˾yf͛6lٲٳfLA ACw1. iRw?<b? ^l*6)`|q"FtŸtzLٳf͛6lٳf͛65cPP(1D/6lh+(2rCQj "^bK9PAO4 (}"g)RRh?˗տ'b~'fa ͛6lٳf͛6lٳalٳf͛6lٳf͛6lٳf͔p%-OS2LR/Zխ}|?wxoy0g?0&<\>ND^*Di7ȉTK܂[0p83=QS9Ay"Qmw&7wӗ5gluخ[8"ʉz(;YV[GHdЭOP%?4q_<e1,\\_LP=:ԣ}u b #e#uV* }4i Ƥ/6lٳf͛6lٳf/6lٲc2 /*6lٳf͛6lٳf͛6lٳf͔Oن,َWL #R  &&PA睿 <{-_}\ެ%iP,=gSo..FA ZU^,Vc=,0FĠ8ΛVAj1J\Ƕb1-Tޔ#q%}DKWzWov`uW//6lٳf͛6lٳflٳf͛6lٳf͛(e͛6lٱ9)ƍFR6Y*T ==w ;h@z]P=j;~yTIcjŒFcARjmFxT<,3Nn@f߈+xW$Ѿ w]ZE܎H>TCWWiT[;d`MNMiZ{WeӋ[(8?ko?8mtuH( ĭCɘn~?g󌺅i5|wؐ$F?6bqe6lٳf͛6l@/6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lI#خlDdPu=0)bnz#z42jkׯø8ij[wu2[m/BcP#W?9kZe Ȝ AdfjnD&PQp2ul^&}O50jK\ĨZ ;(o6P'^lٳf͛6llٳf͛6lٳf͛6lٳf͛65oN,`E)Ʌ0<O~TP=JDb0jrc^Gu?(\ꪲ8 FP@ :oB׼f,V2jƕjy8L~]MBN8 T%wS<a~tԔAn;q޼-y53:KipV%DW QǓǴS_(m;E͘ <2〦lٳLj+f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l͔zf,µ43jY3GT￉sJx/.n5^`(N Yė$OQxF3Yq8,CڄQk TjsO/f%,B;mSS6uU-(*4q\T6^lٳf6lٳf͛6l͛6lٳf͛6lٳf͛6lٳf; ٤Rlh]Knկ|) 6@ }HQUR|iq /kX+UqT_`m6tdv. y*K(I=vBG<oUזE9P_v}2C =lC1ߦ^lٲr`ke͛6lٳf͛6lٳf͛6V^lٳf͛6lٳf͛7lٲl x.XTr;t~SD΋ˑJH}>[#Ԯ|@PE($uޠx5~UvͱM(kfH %2J۟&ݩtCJ+sRz8.eiecȳКP|*;5InH~>|T`+9`vf͛1P3f͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lSb1)Á,ec'8Y׵{cR wvZ'vSԦyr@4sqbhdVP5\0Fjdqv05Ajևx-Vh9)n@<Ɋxe-hSHTqGLjE3f^lW( 4yMٳf͛6lٳf͛6lٳf͘S/6lٳf͛6lٳf͛6lٱx8A+)ۙ}O %h>C՚֕$<9cjp,ǨP#YR?/yl^\3]U kV-'Fe\DJ Eeh Њ[@H!׾)6W\ٳf͛6lٳf͛6lٳl*)6lٳf͛6lٳA\ٳf͛6lٲwʩ4ȑ ֝6bĕ#Ihw2ڬwq'%,)V5Q$9Ǫ oԕ'!ai)܏:eW RϠz,q R}+O: *j2cO]fEbC+/6lDWB{uf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳb38AJһT7,0FOP CbX5'g%un[:&~B&>))&垁.YMDPH55^٬,sXw{W%_sKq{Q@+׾;6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳfU;2_#R@؋>nV,⟞z!q'kgT*V _Mo۽JQŨ V<#biZV\y %{yeBOu aAO0ZSlGuo~ٳf͛0͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6 G ڍ¾1VjArB}9khX;Ms#E"8f @W+>zhf:༖sReFehoT_BE V"ۑҧΓchW&RUH\ >x-76^lٳPVf͛6lٳf͛6lٳflkJSo|vlٳf͛6lٳf͛6lٳf͛6l8V>5)֟vĭ^Qg$5;.wXծa(u(^TgEdru]I?% !Rbh?Wѯ!wl0RItG T Ѓ6W\f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͍qQNsCMcr|l[45=ikKYo>so"?˧!Bf킽3^RԼ6xdyT;U *]]=[(VtM='3MOh$7R)%F;6lٳf͛6lƽ͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf#:'$EUSr*HXg?-SOL:/Dd某6yMF%EIUbVn8QvP|9풻%@֦Q"% }/6ljHeP^lٳf͛6lٳf͛6ll7͔Ð^lٳf͛6lٳf͛6b+Lٳf͛E~xf#u=yr;'9r3FIpgtVOKyxf\MlRNoWGV ȗ[1nJh&Y$[ڪ!5ev1_(9qRhzk_@@Zxbٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6Sts SȳE\1jEh=|IsɠNSO*"Uے}?MC!pjbU0A?:gH@'0oE;vÐD#**<;͛(o6lٳf͛6lٳf͛6leAV 4yf͛6lٳf͛6lٳf&/6lٳfƑS^!zs.9 O8h&nR21]$6i\Կ2%O QW WpUH=72E2h*urzqaZwFyv/m[s𲂦kSC\َlٳe\/6lٳf͛6lٳf͛6Vyf͛6lٳf͛6lٳf͛6lٳ`I#/%^ȯwQ(R 1v,^gдKB5%cv:+Ɯ}5 ˹)ĿŸ'~mySf1cOO^\ $hf~ BCiS|ٲ^lٳf͛6lٳf͛6lٳl͛HR SBcJcf͛6lٳf͛6lٲf͛6QޠSzW! X?,u.Ud%m&k+qsߑZ}N*LK#0A*rT#˖{} Fݯu!JxU$rem 1QG6Y&:0N`k^lٳf͍kһcf͛6lٳf͛6lٳf͛6lC6^lٳf͛+^lٳf͛6lb׸?#`1eIАk]oӡ 1/YWԪOt$9ƨrrPH@aJ&Vfx~i>[l8)O0*m͛6l6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛(m6lٳe(h>!cD|y'~nT؎̻_{XƿpHe͛6lٳf͛6lٳf͛6lٲ^lٳf͛*yf͛6lٳf͛6lٳf͉^29&V+S?/\;-#3C7BbL䦧x3*Pqdb\E]UjH?nPmo*kZaX5nZmɭ}eHyoHHYyr.Y)[z(S@|E`=~94H+!)ڝiVW ^yf͛6P͛6lٳf͛(͛6Q/6lٳf͛6lٳf͛6lٳf͛6lٱ*0XEKgjiW:~gVo"d3-X ATb9wM3XҶnx|,GJAQ>y!-#V2 ߷_m!fB51Tc8♲YyUk/6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳe ekv6Z_8S]ҎX AU6 AFv<[?=andM*+3Bsػ6aݲ<0`͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٲ{˄&uH”4m]M͇%TDD@NKt _ =ZKsࢪv?v9WjTL:1ٲ ͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛(P6녚n քW|-1 3qgɄn-*%%le-v蟑O2pnU'PoN2Gjd ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6%*)trYOq25NO|"}z_( kwJj~ҳg$o-oIA =v<2v~ 1YAkMٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6P'\ٳf͛6lٳf͘IiM\8C>^Yjp5 &٥ȡYZ8F7R/*UȀ8ԬQW 5ؓN(j҃/Lٳf͛6lٳf͛6lٲ<QLJrf͛6lٳf͗6lٳf͛6lٳf͛6lkVn(XQ0:$ҊswVڬϦf"}!! Yeufpi|c)t槏#H0E}4jҿFIP5j >]0z Rq\ٺ͛0͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٲ^lٺ͛6lٳc5H>'<9S$:`V41z,[9~FVx\m(^@+VWo>JC^};Qjᚚٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͔2cIC|;A :+ʻv D[~Vkd6Pq>+/%SyïMb)0 =䇈-ZKB~0B bٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛61F%wy/rQj:J\NvKN|7TZNFOʭ.kQnibhm80y5G$`ߠߕ:]X'p줓j0fÄ Lٳf͛6lٳf/6lٳf͚f͛6lٳf͛6lٳf͛6lٳf͛5sf͛().Q}V*ƵڛAў^?DMbQC ! ^L4F-OZ7~Q8ݪhVriU29fٕ+Ǝ#7z|Eժsں<Umdܪ-i1@(#/6lٳf͛6lٳf͛6lٳflٳf͛6a6lٳf͛6lٳf͛6Q$t͛6Uĉ5W-R/-2iW"ЫRN)Z쟳|ԓP0y-.a!xJۏ(`Ź}⤶{[QO]K:*F7.t랂Ҧr*lNImf͛6l~ٳf͛6lٳf͛6lٳf͛6lٳf9f͛6lٳf͛6l rek $6?)+坢:̕.3/٭U{-w&?W,u[V7341RZ/~_1Ho{UQS&125h[mj2f͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lG/6lٳcu#9O^kTS0h(Y_Ğ枰Z;E+}]ĔUh[~ly FOuRGQzPŰeqչ%»gYE:A^'6lٳew͛6Q u͛6lٳf͛6lٳf͛6lB1E>g/6lٳeS/6lٳf͛6lُL v> s6hQϳ,Ŕ 5xRSOUmIDo0 8x߈uȏȼv W*+U#l*j+^sk:wU$mL0Nٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6lWF<ѦqT1BC(76<^NIW ݸwdⵏrdq[fVF rVQTPjW=ՠ80E`RFK/vc6lٳf6lٱf͛6lٳf͛6lٳf͕^\\lٳf͛6lٳf͛6lٳbr!O1[ G TTt>ɟ+˪i5Ghvlٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛6lw(*c~@5EEu?Eyjt$D~FNNªVm ?P$7:dPJ1; ۘO087$rߕไMiJK-' hj1ٳf͘f͛6l_,ٳf͛6lٳf&y6n}4 G+pFR7x69U)ٳf͛6lٳf͛6lٳe7L#QEV>duDu]6VhH FxC;嗝|#'E7"(3QsR埘]qcW;sgH*^>m8͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6lka~jg g{qy%$p7/#cN_l>$&kdEQ4 !tiJX_~>y{8duqAƛw=|s**7jٳf͛6lٳf͛6lٳf͛6lTFP b0f*7?j9saOlgt_W`BRx2#~XiigmyVHʙ<N"Yf+}&HÈ#>xt6lٳf͛6lٳf͛6l me;{)R]M>`W<93m€*IOtP\r<֙?2-ˠC&oU8(~zqGi.VjW( +`j2f56lٳRf͛6lٳf͟lٳf͛6lٳf|ٳf͛6lٳf͛6lٳf̀"yrsVrM8&`ч"5FG> T/.9=oH!Mم賸-˛qG7(j ʔ&zmnRЩ=H~o $T͛6lٳf͛6lٳf͛6lٲ:MRZg|2{7%Gܶo&y?BEAqp 'N@RS|.͝%!Ո˧,`+륂ʖ?3@ԍG]of ܩ);|~XyZ G:Jp_TrOC3Z-f͛6lٳf͛6lٳf͛iIݤkOK7T9n2Iu ":7Fދ</6wSD #'FXqBk^9/ȭԡSL* `<~x0f͛6o|ٳf͛6lٳf͛6llٳf͛lٳf͛6lٳf͛6lٳf͛6lGW>||S XJ J(|?h͍}Dy%RV "TH)g&<|i ݢXbjY$ZrszTDe5N%p\3f͛6lٳf͛6lٳf͛6lٱ944ۮxrI_PhݙӋꢏxlx:@nm'P0[{c"5m UɣgP%v#z% NkM~iɔIĤ\8bsq53,r__Z\xX颂Jq 'XS/򶌊+Μ qR3Mb3f͛6lٳf͛6lٳf͛1f%Pl@Vi>)"s"yJ羆'HSGTlk{~93mǛ/>kd ;sYyUx =9גϡEգ4W»Ӧt{Iy4"oa͛64 ڻ z͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6l؄NǛWf栊T*EB|:ހK%-I"d x%m*3#ͷz^tiGDI#b [ʺZ)9 ]E}'6 #/7jኚvlٳf͛6lٳf͛6lٳf͛j9%[nxr:LfRU6HR$$QIQN,w UXee5-=X'%a< _II5%vWfouGFU1zcf͛6lٳf͛6lٳf͛6lS+gr"Gn+ըa>{Bf[ՐBi$*ZJ0N/r?3~e)ѳEyx|_i}63$e#,-UVmŸpӴC%9d#j?1,aoGb8- d0;ܞ_]C/,-BrP6lٳf͚D6lٳf?<+mFc?] "bEQ^A6.KyD!94'6ϟZǗg+Io"gd^LZl~4_Qu/ŝBK ne+ǤÄhT?ƹ"p+;S;6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6l8MgӼѥ5m=yx2pfAoN[?k<)ikW yum@L+qB ,O*Nzq^D,4OQx0$G_qs|Vvq";S Jm ͛6lٳf͛6lٳf͛6lٳa/ɣsJO熿"t}r5ŌD]<ypErR?xWbݷ1o94u5 jD,o gt9u,.<K:垙% tAUPw͏=]^cR]^=tgx8,$^99Bzq:~ hCŔ+7"x/\6lٳf͛+|´߮j6lʯݚIZ27w"MNJ$TUY6'~QFR|7vlOޏ-6w9LLbļ U&'慫Y>SśvRL6GF"/Ȇ_ZEJ)a|ٳf5Nyf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lو!pQZd[VUFHк` ?i]mAR7Qdd@kexV*5i< `oZ,'ϔ-+4/II,Ejj|Nucsf͛6lٳSz\ٲ͛6W|9!tꐹ75s\- z8Rޠ uV%GҦ\m ޿TKG":5Pq䬊鞏\]^$K+*ly 1ǧ=Wæyf͚f͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6V^l =9ʝHuUQqIbztu(x~E|Um}+[;hXD ˌ8sUOy^G:*j(Qۻ{;֕tP(hH}lٳf͛6lٳf͛6lٳf͔Mjg 6kqK/bJ*\`[Wj%ʾb/5U#zMRO$bz_][Nӥk5O&CāF+kK_q,إ*GoF>!Fj%Yj)ˌMӂiUo5-0$j\P.l'5=i^R@iܾԹ>@i 3f͛6lٳf͕\޹ylٳewEM2zz~li\)ڮһT{P$iV)An Ph?k>e^j,QAYV%R5dZEW~=8ۤc$5TIqɸ2 |T랫ӿo#^lٳf͛6nf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6V^lSNU!9 _6ynVkBcU._*7C4_>ofΏG$JI%(JU6˿>+ΐ,rע"Qwou¬ 5|qnde MO|:e͛6lٳf͛6lٳf͛6l#*!cuђsRJPv;]&Y7 ꆐ]k_Y8?/EK! 2ȶp=D+Q]#[&XyZ߉:|@S/6lٳf͛6l5ٳf͛(@X 2ԃe5@'Wc,ν29oܽWiA>6B6rQTd2f;\jo ݹY^Hޟ,hB+W+_w~TZ\^~kR7C2?d'׏%o;>`u[G_N5 *I4$͛(ٳfyf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6`k6lIS CDb>9'}?ןk@o+xTN[YOȍzeF& , xœJ}#. ֟'2 Z6lٳf͛6lٳew͛6lٲRCuZp(ңv^ 1p ٳeٳf͕(e͛(V9ye NdeSN,F޴F[ D֧_jTTH仒zBX eɂq!ڥ6r]Ux*pGuV򦜩hvݲ킳cMi\I~X^lٳf͛6lٳf͛6lٳf;f͛6lٳf͛6lٳf͛6lٳf͛6lٱon!P"G]\6cj߬6E,K5DR*⨔?3yZ~gMJ8@1\Ag9ʽNOO/y=קN|aZŗ/6lٳf͛*/6lٳf͛6jf͛6lٳf͛6lٳf͕Q6lٲ뗛(Wn1'˹: ג^?ΘR]P,XtG{xŝ,Bg!"R<cDhe[$h,_{𘢩5; O )Q&7똊͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳeSzW!~wtt`y2Q|򦡣-lne)2/[슨yJ|w 1xm:}M\8 Q z|7HdHju;t3f͛6lٳf͛Scf͛6lٳfƚf͛6lٳfM3eelٲ0\ٽ4H ':u#z%,pZl"mjRV^KQIܜ1<%4>}!+$WrapP~@h:tLGzd#o #z?*}}NrO|͛6lٳf&6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf\w/z3p"(F~1+.t><>\1ʠhHuRO!S_QJǖ;b\['cQJ:"QWûq_Ł͛6lYyf͕6lٳf͛6lٳf͛+/6lَl헕1m6W|ٳfD#(<+e! _o@3CKzc@U?j6GU[xnZ,}9dNe'/XrYdIf#|g受a483X^Db>l܎u@{4^yD6Rw=qٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͉*:SdWk{yS_JT$Av ׏.!{go1pjr=? 7 E=e|OA҃%pLA>6X-i6lٳfsf͛6j6lٳf͛6l٫Lٳf͛6lٳfyMJooپyG6/64SLէ½VHa V H-H!@jSl7wnl\'nޏdAoU]h`FϿ&n}^ h(y7𖣱G]D2p:to:Uvnp~lk7yf͛(־y{͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͌"..w_?au'ԱʓKDzr,)FU /ɾ,憣MyoW19n[Ӣc#>MCv1Z)> ΍oxΠvSѸ. rf͛6lٳf͛6lٳ^f͛6lٳf͛6lٳf͘{o\Fư, F;14+nǕQKW;*Q@0?@+=rfhV7vfVk42n ];cU[,HE^AWwZ;ˣuQk)lڌE'Ƈx>&ۓ[9yǮyJ)6Q`͛6lٳf͛6lٳflٳf͛6lٳf"f͛6lٳf͛6lٳf͛6lٳbnXṵxЫ)t|[K-pq*j1y*[7ĜsпߘnMf9#u߉j*24=n2ᑔZlr8QUMqLٳf͛6lٳf͛6lt*4y/6lٳf͛6lٳf\n^|ٳf뛕EF\)/LvD,j+NA4?0O4?='.|<g#yEtUmo@,E"3s^+WmYO *Az/g&w -H>24^'x;s?ov>@Px/|fCwR* pXOlٳf͛6lٳf͛6lٳf͟lٳf͛6`6lٳf͛6lٳf͛6lٳf͛6lٳeS2!8/_u@d%Z^Aܚ؅8~xb?sLxt*#=r@yw#(2f͛6lٲ6^l6lٳf͛6lٳf͛6lٳf͛lٳ ٳeu2GtU35 )pf_*ʌH~#!VP6Xmk;1hF? `|#-0GBFM %zW|MEybJ|W5~Sh>cG~2 Eq q6_yζZL/{l$2p?//"&W綡Swq\Rji_}zOʞwc*Sܚ:)6lٳf\ٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6c죧PE)ϙ4Xu;i!uV,EE<>x~dC>XϧBhsb>L"ֵ_mGԻΨz&#>T,lmϒjmpH^gS?G.|Flٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6nA\`^tSZ\⿜:*q ޤȯnd|Cex ':%9sc6 u5&:Iq4InRۢV7ދ CU/ކzOV{zLHd/Ao +P]H xW灥BUxjvzN7>p2h35r|TP#T*zlx8GQտD%ߦ}-u([raZ 2_ ͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6b+wq5̃(!:dGҼa&Gsg!<u| ky#K5 -*74KVy_q__̽7gޣ?q,O*o&!JrsHNvހfK-=EF»P׆;bf͛6lٳfʮyf͛6lٲf͛6lٳf͘#6Wl~C55ߨ_(Hc>rR`BI!hצy?H']kc.-XTJusf B'/ ƹjmKdE1ix&܀6~^bYl?%!+PӚB_YW-)Ewe^Mcw ZO<6u~X4${ ZgAӼק(CFn.sqJYAOW~;"DV$A o eS) n=64)zHgUhil+ d۬x#Q,a"9yLD,5m7HGtUP5 'z"x1lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l؄0؞_PHLx>HA, |@#QǑpw;Z7pf*x|%SNM2F$a4yCI0Cu,a 4߻L0~; __.n/mRUIQjάRUUy7Z7"Ln;pA@-y+|_@ǘ<}k%Ι{tx e$ sNFjב?6*#@&㓤ٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lL6BIhAG'?L[Ç1̽1j͛6lٳf͛6U2f͛6lٳf͛6lٳf͛6P)ozovأI3QWmOyZGЮ%tҽOO݀[Vjkp( .: yA,DFޗ>cwly,n (V7*C:z|_ɟ)j %$B5WPVa]%Q+GHjtItxdJ#L_yr>oO ]T|#e$wd<}xU+༪6p ƝKK"jFdWp#q~W~fA1o#eO Ϸ_V=@aװsore5uɮ;6lٳf͛6lٳf͛6lٳf͛6lٳf͛6Uw^& bL4*Fu6݉Jx>VD/x+rsh۝FW'fRa^^$[ү<"ryW[>Rj$CJr8|G*sߓhE-/p O|A\r>#Z^L G"$/Sb&Krm:2Đ7%axTRP:cf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳbRڟ+!^(A ;̚ePm׈`zӐ;yMc:-wժR/sȟ?J[^̰B j9,Ƿs_Nq"YmwRHќvxm켶{Mim ~5Rygf*}5ogyW6zݨt26(k|mkpZ?FFf͛6lٳf͛6lٳf͛6lٳf͛6lٱE 똰P<2=gLDXY$%QWqʄM }X{;T^[x[D$*DVYTzx;]|H5i{KxʻZc_ʋyro3 ^A)ѹIIثo2}P~Xy IHH[sY+Fcj?>\}? /} msV۴\ac:42q.%5ϑn.lT\2E ,W ?fG.`3Cg]ͼ֣&HRȾ* պ/lo|iլT 6՞UaS$W/5{f͛6lٳf͛6lٳf͔2f͛6Vnxj~GCb4$u"=d=6F.ApF~Fh0αU, ~3FFNֵUXro0ހ~B*sF>^/G=ĒLI (m}JH9PAE!/unm+৐^GU+ 7I8H<MkrOʭ:<7QΥFFuűhxWFnżn晌|e18TWccFdIG4Iђ X*X7215_jh;%桨Bf0S!VJSfET󅦵mȲ/M~&ޣ a"xɦ9{2f͛6lٳf͛6lٳf͛65SS', Rm-êQX: ־dkR$I G 1nC:|<_6}=JEPe٩4@Zx'7r`i-tj,RDLZ-/o:/F !^%$Q]vVg+59`h`oKJBFoR'Zq? Jzy;QhЬ6>%(ݝB"@߆*ٲj352f͛6lٳf͛|ٳf͛6bi͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳb3V)ǥ }9{rcN[[LNtdy"3)Eӟ%Z P\Y%0id n\UX֜W=ENSklFAn dm-c:|k@># /nך %D5`OOw(.q^?yXS"q<-G H蠯&z2rWo:OgRf+Pİ]|+˱G՟#ʆO/jWJ+ˡu%S'iogVclA#_7M?siTW~v%ڻ&RHo=s!>r;♳f͛6lٳf͛6lٳf͌'15*p5A6P,{P Kݙ䨧rh>ˠ1-6s?+?M$)u+5UH"YQe5$>n~bS&\Hٹ 7.X!ɦI/s7 59|NCnS/AlyOq,Ou3|f~<&`c_5'=6֖+m|*~.mzMHHF?6lٳf͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6LU]w=@'p&ޚ4k -]X(;][/v t'}F{3,q\31oRܻ!~.~vq"em ]|8<{R#; 2lvd}Y_!>iwJ1yA䧢^HܫѭEG9+nT3ZV-qB)ZG͔rf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6Qҹcv"@x{s ɺn($Sz|Un<EYl!,,6Zm39R>?fO4a|@~_s?󐟟WmAjW$zJ##b!EX C ?3c^mg%2$&d#x蜫4K{l; +"/#J)׫K6 ,(^ O˥yNNnQN"9 hws,HIk(9!q7t<\0#l ޙ%Wq'0.Te!@D;HA,ia?ܷ! Jc,,@į_7v2PO rZvm9Ӵ?̫QGHFtxNWWb;7>[ rxjw <zWԣdmuؔSROAKR7@zIiɾxE0nL7N*kY);ߵ2̢ir+O8HzjIހck $G_5FBiࠒSO8 ʜIÏPϯy:Y9sI+LsmrW9?9^znSF?Y;w_/[o]s O$X9fP~˩wPd1]es@*"%`i"<[T#砿-?!42t ,S#E?i~(F^U-GeHjĖ IO-RN@Ax[P Uf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳRf͛6lٳf͛6lٳf͛6lٳf͛6l،Wo#3󙮶5iFfJ~LK0xJm4׸L8S_? @Jr~, Qm==2n+9n#Ђ#rG=35֢5,R1[]~ Ҽ˯bkˢKTvvI: :rY~P~Y~\V{ 5)]?oK)<i~*]?ΐʀM~&5KxTPܖ4~kt}~"X]%̋#S$7ȟ1tIۜ줬q27mi۴01UZSŇ_j>`.gHGक़ Zo\oh\N+[d@5*hdUcǕ|@~v5ղ'x䪰'gksoͿ8y]ܬa5yx^&#EI_ӜbZ)m9 i+K372?+7ֵXtE#!ruA_ggmVImqPPu-51m!Aܳ_t~@$-5 9)Y9 ,3cEB(:xd(L|F)Lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6V͛6lٳf͛6lٳf͛6lٳf͛6a^*;W/6lJu,QK:tK[x"2/B;4)sy3ZV+mq̷ ؐ%u-rBZdcVgqdb*M&٩z淜?15uv$cRܒ5'/-cafmlg]F&Gצ棕Gc"ǟVsyKzS |y*>}Mh+e6Y i`wJO;dʺEŵwN}bzD)?+2_/ư-О|hj)azw,u8KqE9`Gp/MByb8$] |T<^y{K¦[%xX"8SN>қ=% \j U5(=[ TU >%e@_;W Tq N[/ӕ7t$$`JI }*vzD(W|:q_[y\ƭou$3(FzF}wG2]b \O%k>궊X۝8QS or/E5^W~' [ =fK Q$Ɲu )+@bbhPX ZFa}Oqa>97ZX5ui~ВJ8h|U%h|^iU^[46&H)ɤ ^J8^\xj3חQH䤎Bꮱ3J~ o52W.c}^r2*]n=jB,,~-kSYZ{GXt}?!70yr?:چszlmb_U$GG@yr{ys~RmBk[<7sR9:Z FeT%mKo54}ݔ-yg=c'^п+15Q9G^]wAE٫UI9imhC+Rkr 1%@j SWH%Q^bmDPo*|k͛6lNHM `e4aP(O|MՁڽ;ׯJ{OY u`(ICir3~Jhܟ\_Ӱ[9(<c0R! y?iC!ihL,5JS(ҔYGa X S= ]675f~(a=3.[_ JdYFaQ@@.J9!-}%dI'@DQc,GOYߘc~[t٧|AeDd>'b‹ƛfN;)^Մ߀ SZ}ъG"ȳ=9L^c4Nuj~w~F_Md6eyD;le/Şgu_70nI*^n>uǟ*Zm@=^ nD2#.G\7'|oj֢މ `fu'\40BziRz"y~%-Z0MznWJ}B~vB?";"=NшQ(Y]jG$XE{4&k%d%Q2o_Vk1UIqrQB_l60AL6lٳu͛6lٳflٳf͛6lٳf͛6SVnrf͛6llٳf͛6lٳf͛lٳf͛6lٳf͛6lٳf͛6lٳf͛"t8(t͕Lٳf͛*oSJR[+]"F5nĐ{n幥TPU=@e M xSp+D"tV-֪:WA ^;m5a X jא"8q%CGE*Z򅻺9A6oa$n{8ZHnZ)؁Jt;:i[L:!T)])NQE`+Z:޸K!T^ƛ}ȯyIMTJ0hozYVv *yHEWBs: ls2vH-ǫ|O\~My'A64\Z-aGMQ^j1m fNI;@UeaJ q?^]+g4kM!z14׃0c ^IVm=GѠRN Z~އuh(6l٩L͔2eͶlٳf͛6l٪+Nf͛7Lٳf͛6llٳf͛6lf͛6lٳf͛6lٳf͛6lٳf͛6lٳWzf͛6lٳf9͛6lٳeIlTlax+ LrZ9UԆSOjt1ŝdM:a' .bA@znO0Q}v~{QZy#pdsĻ)%(ro`c$Hj}Sڜg|) H;ێf7NE:T@<9kH[] }cpc(]^vZx~MNbekPТ#ḪyK')Y-;w咱6lٳf͚f͛6lٳf͛6lٳf͛6lLٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l@1f͛6lk# wf͛6lT"`)74nIEHң / '\ɇV1;;]z!\yN %n %XGDj*ҵ^H_a3O 'PYs554Y$#%-$@ Z 9>y{9dk~u}RP9GQy<ŗ`BjkҢ_ sf͛1lC|ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lU|ٳf͛*͛6lٳf͛6lٳf͛6lT Wzu[~Skf|¢gV)Wm;^tN-q C!* Ua'!O{#~|YjlbpA*X>7FQK;Bm֤Wz[ңiX_bO~Ώϩ]wCտGZٿcG;G^a%CW.G(-`Q$x%5"jn Iwg_*Oܽo,izKmeG@ڜ@uT 6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛5A͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛53f͛6lٲf͛6lٳf͛6lٳf͛1͍&k cxa>[cwu:ikO1xI,iWgV*{G_geo 㓄:uFm߆1f͛6lٳf͛6lٳf͛6lٳf͛)% t9yf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf9f͛6lٳf͛+͛6lٳf͛6lٳf͛6lٳet8#2J#r2Eyg\f0ߗ ~2!_51-5$kCo]'YnSoiNN8|ieXUSӣU>LPbS/6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l^ R;6lپyXRmvlٲTͪA1@cf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6l߫6lٳf͛6lٳf͛6lٳf͛6lٳ~ٳf͕Lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͚f͛6lٳf͛6lٳf͛6lٳf͛6W\ٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l}ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳ͛6lٳf͛6lٳf͛6lٳe_^lD57͛6lٳf͛6lٳf͛6lٳf͛6lٳff͛6lٳl6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳff͛6lٳf͛6lB֭Ao ~lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͔2f͛6lٳf͛6lٳf͛6lٳS+/6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳeO|ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͕6lٳf͛6Q4=W~6jo\ٳf͛6llٳcd׎͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͔{e͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͘f͛6lٳf͛6lٳf͛6lٳf͟go/doc/gopher/pencil/gophermega.jpg0100644000000000000000000035675412412656734017643 0ustar00rootroot00000000000000#ExifMM*bj(1 r2i['['Adobe Photoshop CS5.1 Macintosh2012:03:05 17:56:56.G"*(2HH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?*iM,mUT` kZѵck4IJI$RI$I%)$IJI$RI$I%)$IJI$STI%)$^1{Ƃ9RZ:oڟM1,YȽ5*QOȯ79a+CS7*nV5[8?OWݍ7զPSMt\Ygus[0'֪ܪ3˵q+ߝNoP /|o=ʯU]ߏVї~Zqq?uv*_ҟ3וuIiŶE[_oUҖ5\'T'_uE\ٟJJqe^c./n.M [pw_U? ,k~}_eW09m{_7Rg"Otfl{.iu4~ѩ>o%;),?WsUxOoJQwai$I)I$JRKguf+3rQC 2vs5EO)?#oGT8WڞUmC-e2Jz$I%?TI%)aG%1IOl/x_wRd޷'Ղ2:=C:ٔmK?)@8 U:gK}EpcmJy2bYı<v[qȨ~έʛCNVC~q~;S-[kobT ,x @3SK?'V-&Wu*&[m~jxkD:Ĕ|Zջ}ΚKT FWOw]~;?M*rWYUS.<nkՇ7};"}.-{2S uVʿힻOJLV9Y6[[,lںc[e']?IJS˾8yt9c-]WcrʶlâZW[o[9Ժ.'U2c^sFWVI_U.Ӿޘ^DikESV= lk_E%'?8Ʋl_l363M=4$뾴_uv_f%ߛoi}MobYYVSfl|oϦP陿Zz Yf>Cw4Os=Zs=i%;x;lvFmpcDs9`u|`8M74ewhe[XY܊~t2eiV?>ǩR¶*5|ˤUW][4~*$վrck1KAa5u7Xu9Y,,\S[ǥ{[VnVͯ%vq}K1w~Vثt3t<.Nn qibhfߋ]=s^Q~'Pm= =%4>k[8wZ]``e.q.+qlk.;X>Gc~\m{kvIOTI%#e6=^֒@d}JhTLj]Sy9[\O{skk21|[EV2$I)2潏AnH=vkbxy~n?z~/c-smcG5SsZ斸5: Ƿo;]#K?jJsuCkB_ 9UĠ{}iR17?F7*վ̌kq `YӓmScٓUz=9aa1+%N^5}7Zcc%^1:OO8_W*V=V5gG_zMMל(n]A)x:6Y[+k/OrvF;}aȩ쭯w~u\t:_yY9t߲Kɺ>N{+>?gJu1Ws}6׌g9VP /ӇպE0[qŅ챕k[cں89Ԯ'K~IZJu%,m?Sf}̯GoGغeu}///>evخ2S32d=3ocՕzo%~i'&jj,>tNuX}=niwc:]efM8c[]4FֵZݡ%h~-y;E^gSe.ǩw )TI%0QK*i{h>Qci`ǎv-.Qs0i#/n3Tֱր%2I$RI$I%8_]SP'h=]XH'+/"ߪX2WQ*:~;N_(~ڪvևXK/EuB/_3Mq1VJy*(t*:OS讵u_k˩u gaY6_Z=TԪgf[=f6c@REkz7I%8:_^;1G}xiz:O#8*Ak6[kmsMUk+Mj$\gIʩ6] l˥ߥ&C[OgV>goG ٜ/u^][|dmy7zunzbVP`!{}zvmC~CGdtW{\>װAnm}Rͮ5$Vz9K6e: 7Z}KC8SQUKU$STI%8I'/H$lƯ+<{8v+zxc~d-3~˰mc^YN6-{1q}@#~j🝈iB湖v+snϨ3{=+q%-fduJ0\ꬾCYU{Y?Ct]sv mUmQN=-)I$uz~ٗ[;Gsjo}e4i)'3fm;xcm۝mWڡnՒvߖ;##lOe?,_IJI$RI$I%)$IOUOd4Zݭxy=_NQkگl*Jx԰:66[2YיlWpc\ư6r:I)_Vo&~K=,=6=6_^E3'W?[Z!: I$I%)$IJI$RI$I%?Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$Photoshop 3.08BIM%8BIM: printOutputPstSboolInteenumInteClrmprintSixteenBitbool printerNameTEXT!Photosmart C6100 series [49440E]8BIM;printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oGrn doub@oBl doub@oBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@ vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMXX8BIM&?8BIM x8BIM8BIM 8BIM' 8BIM5-8BIM8BIM@@8BIM8BIMIG. Untitled-3.GnullboundsObjcRct1Top longLeftlongBtomlongGRghtlong.slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongGRghtlong.urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM  Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?*iM,mUT` kZѵck4IJI$RI$I%)$IJI$RI$I%)$IJI$STI%)$^1{Ƃ9RZ:oڟM1,YȽ5*QOȯ79a+CS7*nV5[8?OWݍ7զPSMt\Ygus[0'֪ܪ3˵q+ߝNoP /|o=ʯU]ߏVї~Zqq?uv*_ҟ3וuIiŶE[_oUҖ5\'T'_uE\ٟJJqe^c./n.M [pw_U? ,k~}_eW09m{_7Rg"Otfl{.iu4~ѩ>o%;),?WsUxOoJQwai$I)I$JRKguf+3rQC 2vs5EO)?#oGT8WڞUmC-e2Jz$I%?TI%)aG%1IOl/x_wRd޷'Ղ2:=C:ٔmK?)@8 U:gK}EpcmJy2bYı<v[qȨ~έʛCNVC~q~;S-[kobT ,x @3SK?'V-&Wu*&[m~jxkD:Ĕ|Zջ}ΚKT FWOw]~;?M*rWYUS.<nkՇ7};"}.-{2S uVʿힻOJLV9Y6[[,lںc[e']?IJS˾8yt9c-]WcrʶlâZW[o[9Ժ.'U2c^sFWVI_U.Ӿޘ^DikESV= lk_E%'?8Ʋl_l363M=4$뾴_uv_f%ߛoi}MobYYVSfl|oϦP陿Zz Yf>Cw4Os=Zs=i%;x;lvFmpcDs9`u|`8M74ewhe[XY܊~t2eiV?>ǩR¶*5|ˤUW][4~*$վrck1KAa5u7Xu9Y,,\S[ǥ{[VnVͯ%vq}K1w~Vثt3t<.Nn qibhfߋ]=s^Q~'Pm= =%4>k[8wZ]``e.q.+qlk.;X>Gc~\m{kvIOTI%#e6=^֒@d}JhTLj]Sy9[\O{skk21|[EV2$I)2潏AnH=vkbxy~n?z~/c-smcG5SsZ斸5: Ƿo;]#K?jJsuCkB_ 9UĠ{}iR17?F7*վ̌kq `YӓmScٓUz=9aa1+%N^5}7Zcc%^1:OO8_W*V=V5gG_zMMל(n]A)x:6Y[+k/OrvF;}aȩ쭯w~u\t:_yY9t߲Kɺ>N{+>?gJu1Ws}6׌g9VP /ӇպE0[qŅ챕k[cں89Ԯ'K~IZJu%,m?Sf}̯GoGغeu}///>evخ2S32d=3ocՕzo%~i'&jj,>tNuX}=niwc:]efM8c[]4FֵZݡ%h~-y;E^gSe.ǩw )TI%0QK*i{h>Qci`ǎv-.Qs0i#/n3Tֱր%2I$RI$I%8_]SP'h=]XH'+/"ߪX2WQ*:~;N_(~ڪvևXK/EuB/_3Mq1VJy*(t*:OS讵u_k˩u gaY6_Z=TԪgf[=f6c@REkz7I%8:_^;1G}xiz:O#8*Ak6[kmsMUk+Mj$\gIʩ6] l˥ߥ&C[OgV>goG ٜ/u^][|dmy7zunzbVP`!{}zvmC~CGdtW{\>װAnm}Rͮ5$Vz9K6e: 7Z}KC8SQUKU$STI%8I'/H$lƯ+<{8v+zxc~d-3~˰mc^YN6-{1q}@#~j🝈iB湖v+snϨ3{=+q%-fduJ0\ꬾCYU{Y?Ct]sv mUmQN=-)I$uz~ٗ[;Gsjo}e4i)'3fm;xcm۝mWڡnՒvߖ;##lOe?,_IJI$RI$I%)$IOUOd4Zݭxy=_NQkگl*Jx԰:66[2YיlWpc\ư6r:I)_Vo&~K=,=6=6_^E3'W?[Z!: I$I%)$IJI$RI$I%?Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!YAdobe PhotoshopAdobe Photoshop CS5.18BIM http://ns.adobe.com/xap/1.0/ ICC_PROFILEADBEprtrGRAYXYZ acspAPPLnone-ADBEcprt2descgwtpt\bkptpkTRC textCopyright 1999 Adobe Systems Incorporateddesc Dot Gain 20%XYZ -XYZ curv 0@PaDuRY9.9W" a A )   ,Ee$W2xov'D !q"."#$p%4%&'(U)")*+,e-:../01}2\3=4556789:~;m<^=Q>E?;@3A,B&C"D EF G#H'I-J4KGժ? I)k+3f͛6lٳf͛6lٳf͛1 uߨiFY S(A҆s&`Y߼aϟ$t];g-!bo-fT|(N~24?cXXK*<@>|_g4(ϧK&q9(gEU*նk΋8ˮ_Ȧ&Ě#ǰfo_} ŘSalٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛v4P*sɿ֋G:$e.TTȠXq)Z.|=(oWfUs~ftKkYl%䌖%~prxgwֺ+NZ'x2W#vt >ѹgq5 *>5yf͛6lٳf͛6lٳbn"I yWLHV2൮aCKk)M!J8Vz~cHZ@Jێ/zg쨮s{]FI|/p_SiU#<)aRWx>ZyjL7&7_d 3y@S/6lٳf͛6lٳf͛6lٳf͛6lٳf͛1͛6lٳf͛6lٳf͛6lَf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛ udYbAZm\kKˈn/'v ?;30nk t8>#^tU΍kRjh=|[2 =MHߠ;cP{&$2Pא䦏+.(TuyO7c"9K C5YUTzI( jjh3п_:.aogw/f? %/-m5MC ͛6lٳf͛6lٳc\UH*)Q!ڌg/n.exbX$T A{0Ϝh]Ve{{Y z2qo8ѢoiEFbOh䍤m#$VY"FO#Os_pO# r,b 8B3cPT (Ǩadce^}>XP?MP+HקM_DG?kWloƥaXxe rffRdfE,eW=Q'k;Kx.]H&j7ݾk $;>2PTTkjr%n%=4JZ(s3-aurΥamZo) )cl::>c6MZ.T&:O~x>H?vyr}?Um(ڒGY3DUF:r'q׻ P3,KJ/}=8˦21æ̬8#7ckBWW k_=c}ox 7==jҘc {u_|.Ej73ym 겉 {S)D]w2M`RU zlaDjun n]rO֢ȕ53A;T|?ηaw-=Ci)\T p3OdKyDŕ2RF`p>gnNIkǘ l6~^l ҭ89HޭđF(( ^2=N_{r+]Ԥb{=D8 ^\/!hR#̙jh?2,v\i gLolVG}GV?iQFV^n>)Z[VHzKcUrY&QS?'Y^Ȇ8y^I R/ r/Ŀl4rGL(tf 0ne$!ZN~~yQ<)3(ufFaĈС)z%ڮo 2@~* oLJ%˲oYu$bD")n*+8ڧ^YFYȷLyi(QkHWᮛ%,.ªezq*ĩq 4Ok]:4woryU*׈J;L+=YnmeYLǐ(DUk'_̞il;ZIɐSyV=OZ$ޛv!_?h'bM;PK 7" G@ek=#cM.m!DJoЏ?qIysG@N\$?#n/Nqr\sk7Þ" תW]X\}}fyf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6F<ޜII8(Yxz爼q=PkHSnqMXǟr3So;4jӍ$m{hp:0=sЉ8)э7< pŜ(&S㫵F' }}8Air9Ĥu5y=uO#-Dd$Cu}ÿߑ:ַoyq*壠,Qɞjeo?2o| >iG8HɑOقQ\6Wf=[Gk$E5`en\[H 4JъPѻ֜G^כ:MDtxdv]oOnC/mq}QDm_;Ri_,)k-E{}} ZBz>;lxrKy8r׷pHg@=t?IM9-^=~w>n-po//ŌoP;r#?fm䟕.y$rmxێȿ ~Kh4:6$TȌ5&PE]O:FR+RYPaWljܯ.n$N RMݾ0bUH~/T-|[IKR3]2nX!3j ME#]iX!MNyGOqkڋXvd- ZƄ_捒mGB4Uy7U!IܬI|OZ7e݃<^8C<yZ}r{Jf7"<+ƼJ>Ӟ~gXW$, زsJߋ&~KrOE]kur-혙"H4jӓr4]?goӅƨcKb$`OU;mؑяKV+bܽI*6S VbhA!HۧpO_VCC(d ->*#.]=7_e4WEe  PT7*Dn>ɹ?1܋36O6oǻ)c RslU>Fv&~_ǣTO@Lv!EA) *jk\Z"j(~B[ql*4zimtkfӦZH@T)#'/ea)[Z,XIJ-Ţ̑HT% Jɽ&F1e`2TfEʚb1)"O#aZ7ơ?gh*|c **M:~Tej(zЎ`qFU<e[vpcEQ58,(wW[Y}w_ >Nç|"5ex~OO1UhMݤo"Bܗ}_syqszr(BS{xga ,F5c#_ҜFoɟ6]Ckg4f6t RАv*>n#QѼ.8"hJQ?^;|,2>ƹ\bGV"4V$W&>\$r ",8`Qсm?UZv'sEOQ)\󅎣hQʏ`ç*e"oSUmۮ)Z͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6a6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6cco@]+Mӽ xzΥiyik2QyCUGuzG'R>%? ˇT'wYL;+E snjݩ}ǕV̲$~7 ZaQnzS `G ,@BքRoZ/q|^ۈvO#xڇ/ß,SR>XhZ1>8R1ZAT=:|'хw>\RX7 k˚(PjH]_,)59z}5?Nq̟/Z3G` V \Sම6EĬ/U7Ϗ>y<&M{^rЂ` Qq'Ϳ:{or ^-PU~`yY HpVFQh>*U1?ge徑 J!Ev:_h8 ҵuN|_6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6l& ƐFjw~p7Iq%ퟨ7 Eh(;o<6%3R ݙTiVQPmN*L /JCˮ۷hyzqwfQ~4?̯ϐzK !㫫@'\iqUrz(XKx/O]39/&*T* hW~L&_瘠֠IY%ڔ2Sqx@xr#VYv) Kwfyj6RhSa7Y ;[f >:,AUթSO)һ♲rPtVyf͛6lٳe c5q (_9?4Uh>chR?F ??iIyi\$fVm7cV x 0aQ6lٳf͛6lٳe ͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6Q`1 \ުbE9`/(͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6l!֙@aJH?ٞ]hZ p$F Z55b:*ӥ?kx5a+v( 0cpe\{Zj%]vQTsU3O凙`մ'`GӧjgA玤lm eȡw5yr?FLze&Wh`T92-,Ϗjk#!I, #A bӂǍ~XW1L0 o1Z/1hTUՀ^2 _˿7Z|^)^>@ (h(=͛6lٳu͛6lٳf͛6l،(nD%oiJL"ǐ#>m򅯙'cWU#=vlƟ&7f^$|$*?gdOo-4d5I?$ao"<j:SO-D[$Ԡy5%Z`/6lٳf͛6lٳf͛6l6lٳflٳf͛6lٳf͛6lٳf͛6lٳf\M 0Zդ`d_>pV %_o.]#G ZASQ0O\3zֻQٺ ƮثV*{=v{ᖉ917Kj h7;]h_z 8Q5};"{I~MFEru2ɠ2f͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6#4 ~u.%V[٠`~qf"Y&A'Oʾ}2a'ľnc+ӐI;TFG?^#KgyZ+SAojH *(TVGG7y+;)hdZ9;֜xm^=j-J Ekd,R#0.ZkkzHe]ՅG|+um!it7"9QDdx>ߟ ?:<d }|#y+0Ϡy2Hے-4 LWBr7㊃`S6lٳf͛6lS6lٳeASE6vW6P$SoҠ֗ouȀ({xbi CLߜyJ]:(E9:~K- ~Cm=U4|X+V3׹;|K7ŞFjD}WzDed9~lٳf͛6lٳf͛6VSZ헛6l٩6Uk/6lٳf͛6lٳf͛6lٳf͔M16P ڧ)mPLO 6m]HsySw#F$ U*7!+F}~]8ηH[?LTE ]Wmy3j]eye49"c8 >Aƴ _+k)8ԀG{?/Y\r_gʮ7׶WTXf ]?6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͔Lj'=F cW9G&-"[ˉ"9q4Y/=b:]HtqB21a'~:glk9? *c]|Y'(t &KkDWn=I GͲ=<"f.P ?|[g_:KP$d_Jh8/?g;㇛5/hm/j+VF' . UpSB?0tbE"FV/?!ʍuظ%RF?1U8@|v,zsZS/6lٳf͛6lٺcyx w&D.0f 0 QbB~G\1QN ܫt{ ڎ ZSoz0I(ƛX2Ƿ\va6lٱqGHAoWD_ ߯Z1+?]_AԐK9-˗]OGwR}^5p̤*čtG+VRF+gRա Gqk\ٳf͛6lٳf͛6lٳfc͛6lٳf͛6lٳf͛6lٳtƳ\^JM*\E!fg <94l a)M<=|G?:/&4qLI w<8Q]Fv%B`\jEx݊rjSsO^ף" 6Ia4Q3"oKn쁰]\ D=v ڽapdORiҒ2 #cAֹm^ȒnrJbryJs'TFHoN3/07XrhčFj79Rt=yo)0K dJT]ܙz?yf͛6lٳf͛6llٲ{͛6lٳf͛6lٳf͛6lٳfM0V@lIڙÿ3?=#.cS!$0*s7=J%ڤ|/UUh:H]V6zOOq4Pz 7MG?+mtkX5n lDj}Ek^c(z֔R҄*,j'z̥`>fVFw5##zf ^tb lY[*ОtUu$_LPS7!*…ѻ5Y):f͛o9|yM PHK@j[yH6UT;r-mjPyl54adғĒīl gN4s{zG_vW3 6Y+1Q¤iك+grٲ+^ɮź.?24]H7$h0?2ȼ] ,)MN& :8v==Rٳf͛6l*/6lٳf͛6lD2z͛6lٳf͛6lٳfu] mG| ?N Rzrxռ`4ix% 2k"꿴G9䞭'AM2eR-%z.+U~Y>NUPx* h}a+H 2~}Կ14M$Z_ISעSG-44;^<\2DB!AB!O=FR9ᱍ #)f;G4 Ws&TX AW*7C'^]};4Tb"+Gm%y @)J`{h%!*zT)ў$7 Hܳ-(Ay }E%6"./8ʀ1XU{vc2&U(XCLF };lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳcʚSo-0~"|o/l>PQh;t#sZڞ?s:οmm%I'rЪӎ?HJ +\͛6l6lٺʨq'R;QN{tPC 70_9JCm 憏ep-r#y=J8Վs̟?:~'gWTAǚIR^P|l|עjdDIc 7 }qGr!1+=@W~tϔͶD 5).#XHVk^GOTϝ%眦--=DŢwH .ZV L\f,ɷUd 5/VԹ&($) ~b'k0UƃJ|?kLHC>k7ףf{#CZ)$XT8ކ3f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛(aVpc5CJu9-KrHXTP#JP{FiOmڿgӵTogh 'X2E^;3:m{m" gG& Q?e |ߗv7)ѥX*4_͝NO- E+x5+N%-\ *U? ۦy+qvH˒pB>_v/n]&R9+O$kOU^Y[?d//b7VwK[ U׌fVN\/C\O~i'dE4U) (Sȷ*hW;~THa+FӚSSXۜR+}GGzϭ|j?xMxQQX`vbk^ߓp׬%~9yP%Hg|x/6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lrx,`3e~cIZeX",OϜrͯ;Ei]e΋V~b=?E8e,j 2F:CWzu=5/ZƨbU5<)A6lٳf͛6lٳeMLM϶ꚃCjQs1ZHhnR|G6l() '|^}(pRzO"P^mbp.ՉmPrE #`[ORVx؄PR O)8ՐsPDj3ZrimE,D+^S,U=1\ٳf͛6l"=2 =cB \wL"u^S*E_R d_g95^BFj6e3v\ӯcJF/JEݙhת?:?+%Kv@KTW6'L:# ~ =NTS6lٳf͛6lٳf͛6lٳf͛6lٳf"rfcL*/ź1<mmߕ`ԃAN's~f!QqF1 U'|'aM[ n+d;\헖GB;5YM ~NFa%%e@SJGoֿyÿ=5lkHX%|tVm䍦HTqUt=i0ڟkt>S eգ'y%`x?Qۖ~ֶ֤^Q4P@:u揯7TPd }D۶/6lٳf͉ ΅lE2- =M}XN㩭sߟ~mk 26b#H1M%?g-;ԬԊcNrr=+ cZQ)cO#Y`pkj~oV ROyA4sF@vZOͻ]f=J^F 5CRT zR cGH# )\Gmlٳf͛6lٳf͛6lٳf͛6lٳc] !icg`zgދKe ~$SPja; n=}W[nUMhMI˥aw-∬-&(r*GMgmL6z|܊0N6tq[>*)Nzgy>]R \<WUy񽳎n8|maX V(!ŘpK®z#_v>eR#ʼyߗ`kf{:|Z֏5Iz|"6j=Ϟt)k>Tud95o-N{sq:dQFZ.*x0`NŘS'礭\<||\6lٳf͛6lٳglNXE(졙OUf͛6lٳf͛6lٳf͛6l.I4\@=Ιl}󔿚Ǔ4=vR ]z|Exx~r@$.VT (#;}~EO.` Ҭh8r{ B% S6lٳf͛6lٳf͕[TP*Gqm~pXIV]\o*jx/& x>~guC+ݶe ^ M6YJN Ybg|Ma}2Lwv)/^Z5 G|3iz:+C߿QĄ:wo6*>RPS>v TA][qDkN?a]<OS؝Txe.>$u8egh~ )AP[<_*j^'Ot) 8c|4oϨV1aHڣzc=am[ԆHVI+Wo 鞗wtrCQSBzҾБ vb+͛6lٱEk9yNZt*XkЊoϞ>\<t[!J1Wn]eM{@."E^ A^TJ3ۺ>ЩhaȕaccݳWHմ[WƼ E?<Kˏ̏K@; QH9z55.x=v996KTZĔBOG}㝧V̒BC|;|#M?\A("APU)퓨l^Q͛6lٳf͛6lٳf͛6l6lDW05*91Ge2[@Fy?l#Y77Sӧsy~̚_k >/? zd igPGEWUjEx>zkHȿJFu i(OUGmkȧƽqyi6 xeH1?BM?Ӟw7)+͟o7ZSJ".m.3bU%Z1fR˵?qyo e`WnJ XY}Yxִ6lEA%nt+mJ&hu!("/˽SJ-,tص4Y#$_̼ [}#2$!\T bc_w[=jHdY@j{g?/-"WV,91jӍGq˴=1lΧqƼ5bE6mVvWAԶpolٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛(1SMnT+QlON?tc志eI,( \ UI觯\r% ğE/$'-ZO(.{g˚rK󢴎 H|?ͷžz6)M+sf͛6lٳf͛6lٲp<"2*{8- eT A [EV&g>q癦)L/);VcW^l9U{PI7$xV4[~QQs]BӣX~¿[y{mlƃڣn?SJ0b5S[ $ T/̨-6 o.Zℐ(yP DM*No CO߇!H~ĿQ|2VGҿۄڕؠ?5` we只Uh|w4Gߑ2SNԭb2 XLwm B e7n` IT׮s"/޳(ґ9bvcei< ZyVn,yĽѵ4 a|ٳf͛6lBx}T;/:~]HY->NZ!eqC.h_#sV8Ҡ=gEE*˱=AVd!cf͛6lNl%!F?E{O1ys0[_C%q<(YG_V~FL>-ȸ.* uboivRG22zt˞"MA@+/7i铭cGXkZg k-ͺ)ljЂ;I?V<"TS2Gkj |0=dZ'%*Gi0?䄑~8TTPx? ™!|_6l͛6lٳf͛6lٳf͛65T*\aAo9 " O)sl"o$/4!J%H4gA'h ZFĊo_˧eiKש WdIŸesz=GlPTS•*6_%O5)XQj@=kٯ/;me?Aq++7 #?R378Ǹ?:^?0=^#qa8Rx7&;wq}WStHHԞ?M>?t ŪjऍVX lA}TZDFU=m%`t͛65{b4*Cq,OR;7y_YEfmj_ޫҙߓn|z.d"%Yy,/샆Lku. qVq(7㽆 ]J !hGom5<3ѾTm@]ђiM a=kai,ݚ8cy 4VZ_z?/4_2l@(c` =qV-Ҝ)/Oxamkކ?9?7SԇLagS5+Crs;{T֮/I4ffP_"Ohw %9'rx}MB:0]9_J=:͍j{f͑:)v/R&#׿|\:|p$\ )ԯ)_?M~YA9|$?Nt/8 F59,DO”4__Ϟ^o5)ZA7+"Y/rAymWʖ7&Fh@?g+;Kvsf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛\E?Ion6ț>>lry~tqͣbVHC!@;8{=N}6j^T=%)|b@q/6lٳf͛6l٩6lٱzH8_jIn6#bwO ǕkWb#zoCPwcCr@k>A,Sn9QwKo3d]Z]i,',ySTIomijn..}kKoP)Ȋۦw+.X}Cԭv٧u/zi#zmApA]?4 -Nl=`P:7Dj585-bI&5€>ۥ4IrZ"pH ccF%>96=ԷT$P( j97o\Z[EM?eȺ'ӭ፧:v $eʃ=!fPU MVԧ(wq$Ȭx_ QBv _ iNٳf͛pmXc\ےK "1,>#e{u!YէCTo֥u(͂y$^~e/dCƥF@:k_8x-"v# 3f͛6lٳf͛?lٳf͛6lٳf͛6lٳf͕A(ML>a ='4"G~`O3IBd̍F >_fO{qGOݢBƤI^CsZ~g`EQQ{bLٳf͛6lٳf͛]̰W>kjy-[Zm0%\U5oo?iMY乵BiP*U#}8Z}UP6@ٳf͉\ #<{9-Q2BO+jWW*|K.y{L-<VFé^L*žK+LU.nX T-z_Vvl,ƬNVlWգ *+S;bܐhmƂ, Vrң>᾵ +U֒ITOTH)2gȹn$-Z11P" Mv| {V_}h'&kxKi&νQZ_Ο,7Z1"! (,O6kw_`G. VlW޽}4YV >Pd`{oENsmɐzW6/#=CyB[XCfbw&bP)_\1mX=ο,`NZ KRej W!S^KHᾍc%5+SB)m-Nc߱G$DSſ/{R#AYJҧαey%P{~:ڜsNaG`Z/yӠ<m$3Z# Q~$ TwzюPTONjF;6lٳf͛6lٳf͕PsxֵvAjBN<~jgI,KlxqP[#y_Z^!1ÉrPԆrL00h$/x|'~>'/ 6v/G5 Jpg~㾏]Ũ[bK$nx;&M2/M"UEZ1mSNH:N½##inM\F#~ɮjQ{k_C5]W0 qU%e w_󓺭 S[>$THO]ORwQ% $jTSq]΁V3a}<jVMo$%eWjs;$|tANU]z@[o[x e&CgJkkb71*@M>͛6lٱ+g^i&{*6̼xT4 y@tZ'EҸO䱐ZQD_P󖓭+Ce0%OAL_&QY^uR3ثy,{|r岭+&-Ge$VV@"#e?+D߫ ϤZY R5@ܚkA^yf͛6lٳflٳf͛6lٳf͛6lٳf͛o}zL_4$G%"p'*A$Rv>)_O6=ʤQ2 *6ep('yP|?,OAIV$EVjā݇SqLvlٳf͛6lٳf͛6lyX]&۔QXPϕWeFf~@5Ɓ|, }RyB8HA$0#\[6)f͛6#80MYr&^ӥt5ۄmsG7L43QHd]u4CM}(<$ :.Ť*$I -ϙyז9Ko%}NRTq*} #*$_nT?ȃ(qJwYUrhJcqDzJw\Og]ҵ\- ދ)w5$q"NJz1_YPh2ѺВ9)9rosޟh*>-Awny j rܟ o"^SCSO7ͺ厓q5vzhH^fgrojYj~g.4t&&R#I4r#> 8r?}2ݮ"n&wTi!HiֽAۗ{_>Pң 0Z'gwmmQNu;` XDN7ǏCլ=h*n},RJlx(Sgۗ$v{MIٝIbSnaӿʈRCĀzbM:;qnЬhA"u 󞜷:S՚E0/vf^]..\|8Jh,]BAۉ< ̚QmD镨^4įw/E b^n@I>>Փej.>x]h3$+־&IhShNE+L lCi5_2[+XգW * }:&+Mxn%G'؊?nC\}zJ nu7Sҟ|~u\t`ច5ŬrIx~ A@]*cx!ՕbN%#G"iq~]TӢفBC FumrxnrG5$V: nח~ly?K.n)4&|i:\k  CH*5߿ 髡DvPd)S?˺|pj\uZlsg݋i P ~XjC U$l xdI"WP$S5 W?,7}jd h di8Tz0r(9}I,f͛6lE48+mj]HCO5Ǧ =鈵 Ƙ1z|F}j(WV| *|){ti~|wHXrwWyP]ؗiD&Z푶?r׭kY%K*,GJp_x;w΁OȝPGOVFTiĮ}eSW:ynݏU+Z֛39#U +tÁ^ .Ë-("z}\Pni/HQ{mZ";<.ߣ`RVvˮ&mz9Smk18RA9{KjY9\x`X|@u&X|T-ӧӅ>l s*:4*+\Ms>j+O$n#.)I)xEjTsyģ Kh㙨U!QOC`?osKM,̓z]" h+%>Qs\q)R:X v2idjH @<>/{CˑIԯ#֦͛6lُL?v>ȜȌ?=\t]:Ɠpl,W)' *}NmV7U7_MHw<~{ :*exڝcw酳8هBIIV)gʣqBS@iA +R|OStʟ˫{̆'{ "Wf &a_/ϥߔxiHFXsؾl^Ur2{6XM$H\! n6ݟ%4p%=T~bO!_ Y*q>b[umiYSmu^@۬-[@eT*@3q_C0gL~Uvy[ Ei\/4fQAӧg|9{1jy %ho~\jnm5UyGiS_a9/KyȶzlQ\ ]~~̵oͯ'Yť3LRo{P殭-qGoX aˁ^l4M]Vb(LOJҕ{DRDk5D;4mMÏ-K&{qoUFVfTߒm7_oV~si~eqoGΝuU%]o9_%ޓâsRKTӪ_⧕SNӚ###ӏECţY?=Dc) LvlDy=15@`@wiڽp=ُ@R}yr+AQͭ$^*:2:Ī$`#']٩rgTWGKcq2^D\23USyLZ^].ԝBoDf䑳 ;3u]#s#A-F2,r<dV._Sy PcBlE>No ~$ d#VeV$|"|LGA{U~PUeحvƿć_Zm"Ur$tTF[HϝHRE_,krgs8# my(^O'??XcOUm dl64+EiT@(QO,[i<{`Ո :Ku3,S}Z}8j@H bߍ>B9淝< ^ݪnT wyu;]kpoq)yW_~#Lט ƇmtUGTg ꠞ=siڋHR?Z6A9 ӯdb*O78U 5W5ĉ-X 6۷K:Eևq`^*.Y9/^/~w!ӾX|ٳcdR?,'㺴H')-q5:qc7R\kw=6h$aw_nXg-GtS2xj;ByJ|I-/y_W -yu2^M1c0C3?z* ǧ|f250a͛6lٳf͛?lٳf͛6lٳe IIYyf͛6l؄XZ枲VBe~-^zߚ[yf@UM귖7^l7qK!I$r'!E]XqO|P*E3#< ztnoZG˪DцB""UAt,e͉6GHA^Lþh~B,,o$qS )B P~/FeԢm^(%dG`r'%7v6p4w aFY®Yzrjk~K_:uf([9.q]O4\6btU53̼{(_=[DpZb^6  ʪ$L_</un6K6ԓPX8*HZg%4j^X q^A׈:_i%Ŭ}Ux84o˟Zs+&um,(Vp1u%n?<'P=j+smpN+Qӓj#}?*4mss@5MOo?3G5" _H =%v,v5ᷧ_*o=io'gE%@IX k.y,o#P2 qTв; oko$G1-aT'ߍ+OVpeM0%l#ԼmcysbBGo;/rʞAIĿZԂBAd׎ܾʞlo5-h%VBbc \s?6WeTH0G28ӽW·?&$ZwK|%ʴ7nNooQ[9} yE, @WsP~1պ=LyR݆*&\>Gʐuem@P8{liv - "H@i_ũEruk/6lDuL.oVԯ@57֗TTcAĊ\喩~]ҋ2 9;SGF_n"IO[ 4HȫUM[/LJoVH# u)-4C2NJԣtM:c̱4̲+I}E ޟg=1XС nOO%;{;_^UJourlbĪG+JspL y#$ؿ酶1C$YTxiLLq;T /K( Z;QGP*4Ix{2ݦ-G>v ͛6n?B[&O]^/Td2 By`v/,/˗&Li8-fSyX-8Pr_b~PAZyz5&WSmU;Cgik*q΀ ɬS l68geӯ0Bi Zc*ơE7!>矛Lntˈh>%jЅP$ޯmOnW EOq@(kxzqcnղhQBp v]3X (62WA+14GVkҽ8W/@T%'涅hai%NUT30U[aMQ\su`Ycb <[$Z\IÚʕaoaڟ)6l ӬɓPTԮAW>}[ԄF$(V <#UQTѩ_sߕk|`T/(8]ג?SЧP%E,A>e-F(k癭u]7R\Yc"˒ӕhCjϠ>B2ВI,zԨ8ٳf͛6lٳlٳf͛6lٳf͛6lٳf̈́jp cRɸ#u4;akЛj]QtVF_ȽVX\XruUu^?kmo--n#f͛6lٳf͛6lٳf͑4p;x>JAKoa[t2* lƤ|CNXvB~xO/~CA^lٳf͔2wbzKa5 ^lٳ`{/ZNO_>sΜв W;7*H }h:ۈ*qUR)7ĠEV* pbu&~#2PY:xa,$&"h vs䇞}//.:=5a=g84zwâq=[#4Xp2jzZ|q1hΏ{+%[⬪>ur*i׉cFyQм4k8;( "꣥s^@SΟ p359^]}_hGn.T=vȖ=?N:\(pWY]E?_yov޵Fv#N@}ۦJtQaf@@m"BT"+~:g̿2][MDas9}PӎH~K[D+ĵ  ALi,!0-U3$QHb2f͛(W^lٳS#~tԓNѮ(8ڦ@ );~9_.{I@qR#ʕOqU~ d' we@Fi#dBeGP6u}'H7Q»%Fk#|uKHIH#nIԞtună /%ECUT|}?sZTYmљQo9/yfwZ۟> ];$qow G zG_`aky*<>#g5i&po>W\w9/nHt3\W?{*ʁh7/6lٳe_/6lٳf͛6lvܑ<9mgD}p !kV@hqϝ%םmj)F$6E8LkCp]@Z1Z1q|ٳf͛6lنl٫6lٱ,H:*2-4l0x;PeV#I=㽓fl^p~ŝKWX+~ДNd+{嶛?Ջ+/,iw9_/?6-wzƉA]; W|7lA}I>'PVFlKWxrS)4K(ÉO8Qֻ瞈mbP78CJ ib 3TTT9/v2Y⻆Kh)$(Y^B6H e82qO woB/%*+AJӵsEQP*; Ók.auܣ*jI!ZVYؿ#4Tڐ@§jgdi*A!'+~`Eצx{rv{۩N6dP ,Oe_:DA*S׊pjg$٘mTޟ,p b^P$͛6lٳe59%O0\WDF(rC}*=,_zxդ%Hf faIscPnwL iF?k]l Jw؟B<MUYT+W/>\ŧMDӕxr0$HMGĻt/y8Šy"!M@HWzPhxƽ>v9KTVT|S BFӍ<qڣ<91狭Ob!` ["W[U (QŜ}S~Rn}i%2(G$YHÖgiփk$TUT(6ë:;qZ +QNs'>pHd5 @4<d_wQ|普5[b'$27q?g/ Qz\F VA6lXt,$CiRTeQP SǓ7Pu28sy5};DB6V)u?0M}U'aNeNbCtW]욾M0w9`RYщ4)zW=87״?+o{礬2ƆW͛6lٳf͟lٳf͛6lٳf͛6lٳfƾ7zM?GD#UIʋ>xzyPP]]~1`T}ٻ?)4]bӉ;m݊_g͛6lٳf͛6lٳf͛6VCc2ƿ C==<٢F6܁ޞqAX X\;\9=ONo Hb77'RT }BXTRS'8ٳu͛6lٳf͛I9+۶0"̖(B;Gq_H6q:%I}~._ٞ%6#a"ޕ&;˔hYQc>NG"@Fkm_.yVSO/ k,дӉn?sH c@q!;q$[ޙnBĮTQVaS|<Չrƻu {}?i%1ɹڛ+X,6?V|Eל湱X"Z"9ۜq>-Ǘ?kG4$w$k^Ol(0P=_aqv~~_1"_Ў@ Ր$ٛwYrk|RRI!:zCSɗd~IzL7P( < +_ww=͛6')<g?15 6`N^I>D'%Su?y9IB\_k:ϛ//n4 7 wДzҠrbv[[)7کI /uM() Ff͛6lٳglٳf͛6lٳf͛6lٳeQ\Jyrh~]#y. +AF"Q$mgI5oMQދ@?!/,n yTJE҃;Ϳbqlٳf͛6lٳf͛6lٲkNxhLg?>-lӥ$xrUK)T/OLX^]kXJtPm% d?K/0iVѬ> )ִ鞅YP5pH5͛6lٳfM79f͛6lM!ߧ\?[N"$p5cݸ10{gYmV ԝd;t.ϨCi\ =PC+O߉ƭ;FbEhIOЧ٢B*H!WjVyoo~B?$ fAƱwPLw|6?Ӄ9ezoLۄaЂ >XɮR ܝ1Rh&"21Z4dh>VQ9'p+NT~@Jg]闛6lٳf͛6Q4h|#FxGXYB2I+E}7>'ëi,<՗pT*ƟaKP{+o/Z"EEa (xQڭ(EA1SV3?qﮈ`ZaJ)Cهo`&mw'Y:eI"YT'*W: E$,ťnLƿBm%@f͍rޙͽiڣ0A)I]Ҵe;ס-!FF ^qW~Zz_Zql>*Zh7~e{,A0q$VQ|Jca5NuOk(9VOu?^kҔ, alٳf͛6llٳf͛6lٳf͛6lٳf¯1^4RBxZwLp^4>ᶧ٠T)' -l\G*\,}X ]N$xi8ϠͫyrXH^?pS#͛6lٳf͛6lٳf͛6lke m\C4$Irk~w~MSRT >'P)ˏ_"|7冾EUM9bہ]Ͼ}(_ EvaP4toXj1^D$NC͛6lٳf͛6lkTיg%}5 rj}_ߘmJ-,$f%LRN >*_k\..AWBZח{{qwz>s[eSR,y3;/%״3#FM**li'RoHn5'7#nq(7" EHD4@%~jBa*EsMxI#ϝ^t5;43zL*AY+K4lZ篿!!UTl:S`>vzw˓n[ J ٨3f͛6`)c6lٱ9qei(=r^ݖxb$k/ןś=?wVDfcR>]JȞzŲ$6U^m½SMV+g`!NMw|4 е‰G4+cujWAݤx+q__g=ϤFv bYHFHm) =1ۏADiWj|ǩn@Ԁ|6Ϛdo1IXˇ77iA2Aou:.{+z04 u䤪 /ƙ3鱥;m*އ:VS畵Fc|j*xc}g.[` vG$+!1~=8} 15*HϽOZV}l% \O'<9|~QhȪAD~uu_??^{X>> ?mڥ*yz:*KJ¦y-<Ȩ:FgweF^,Ź.~_z{q[IXdHe6o#n{,* ͛6lٳf͛?lٳf͛6lٳf͛6lٳfj.7@wTsߟwE JXcE" W8\6lٳf͛6l`{7k/Zznoʯϡgh\%E,@Ž:}C]n6ژ}I>)ic~^5n)syu.REfPN\U\<Ѯ$ҵ KE]"71w?"R(⌂$pՇ v߿V勫y`tPDӉ@}#ӧOs/攚4(Pzv5٦ a̞D0_.00&6lh+)"CLSrFP' ҧ\e[uaVmM煯nn5y={B&2aJW9H*ΣqCH!<ՎV+Õ~?ܯSM qݠJsmMUOLPjqLy˶ZŹe2W ;7LL:6my ~]Կ]_Ì:4m [QXT))e||ٸtuwAYjQ&X xXF媭ӗö Kyۙ-ɐ9ehU}4q4M6jv# Q}>kF*@Ȫ^bPV[,⧏-/I|i LV1-G}"((LՖr#|v~#o\ŖaGNqVUV3]Gizmsoly%á싿nyS9[%4rOvu*UhaSЅ?szuˆpmz$ $#~ar;vɏ>ˬϣ$Zb߻]S)_LE*W{{'C~V(A)9=6%g3B',+q×q/-~c1$j5&,9Uj))D'741}}Sբ[.?3bUIPxkMN;yGwƌ R^])ߐg{GśӺaolٳf͘f͛6lٱ8?" V>)EW)n$&NC 9e Q*=/lzjMcNiGU$Wpufo@Ƥx< Vܰo+Ӂ뜗KQNV4Ҁ9QU@vuU3K=h9بś[I-Ÿ -t K`mE~0$3p7wъ]-Gh'>~NX;yĈf/Ƥ:*ӯAVy8HݵKp~+4dxSz*w|yζWfԮfT&QQ]8u0yϚ+0")IIhV)*8T`H4;YҎ"UI7݆oO,X e|LBRhJAR?XxJZ}vlٰ-=V4 ֙r?6uKayaP ˗"?K_%GKRW/fs n9|<*zrXq쟴3ʞU\:XjQH8?o9G}QKiu5q,đMRNgbUlٳf͛6lٳf͛6lٳf͍cqLZ [P*Hr̟-IygE | vٳ?w?)4nhKm 9ה?0|[rHhHgz Y /Sy;rHxQu bF*@}3Y~vy>eΧnjSn5k: /8XWb5`IR4"{'lgїoV=g R90"LHrYmz}֙<}zUԓYO.Xp[)*]PAP3xt_.Y4ciQ+uV'趺 ɦ.f*-1_$Uo3jiq[!y4$`*NxTtn=q. @ihUBM"]ź 3-h &"PR.Ƽ<P}A"kEkC$/#qZ_^Ce#P3^a8+5Q4xo0ACɓ6$EpK% *_ԦxTU.!&xX=8׀ B!Vm)r.9giZ&@G͛*ŊTO^(z+\ wisab)xLvNU@d%*BL-ykO Cr*IŜqϚ{ *j]IR.&3v}3H>*&Úڄk*r#o|򵥟53E;BSG+W*CźWjg)5}?Xmdȣz(~6Ꚍe2Dyq)RjJ/nC8^y̆iHᇇ|3bJ)+o+_EHAޟ4!!v"vZoCtOVK0b #EoRMUZ|<]Flٳf͛6lٳTVyOrZMSCͦ@"FPщU‹W?$%kaqmy~]D hM+^!MG4Eͺ܃0GJn.ǐ۶yKŗ"Ĺap?ytI=2zEnV)5{|ʚֿ3Kp!$>]z5[mgti50ҤwH;yP*>&A` KoOm"ҒPQxrOM-/bv+_XCהqSSj3\Hr F*UZ/R|ABZQJ<9%(eaBFL̠U X+kM^)+R@TQn_p>Zϭ-ҩi1"LQ>,3^FЦ-!SYƤӝBPP|O\6l-&lfp*V6m»j#,qFXr$!nwY"oVk4 Tw&>5Z5[z_veR=SOg` lԮ5]^H444އZ;P8dEuZ x7V) h\ >_&sj6+O|?>GkC}hXOXg}DL=Aa@h 1yR ,8U$ 0+ YY;Yz_΋-N*AG%YJH-7읫]'4QKwuGP3E_kMFk^LUHn! 4lѰ[_gy;ZmƩg%1`j܎Ř׍?[yWS9#j7ZrEsOhuk(`Lp|J  @nq*x:gͭM\ys_)q%eV2#D)śԿG'pĔEN[|'9.wv),`(Bϐays~Kz!Ԡ9y8A(a~.1~y)RLX+B_sL0iڃ#5Q(%iZg?8T\ar2)Ƚ9/mPxWӴMQ༶1g$V_\و;s"!ʅA\r&| f͘ ͛lٲy /ٲ鍐?^ph!wε{Y}H fUy19"[;[׸h֨k^<xzRg\E? PiZЪrj1V+'yn!`KoJױ_^N1[JKT=>ɇ.\ƥ_\%ԍKNŹӦJ"YX2B%{0Y(@~.ًKT ŝ-4_$uw&z/"~L|~grsrB/57OIӘ@>*T\мח:XK[p>M 6Sƿiwvdm. ضWNMBTF9f "zcEy `#~ӎ5~.9|G_S˱Ip%gn*Ao}Oq:WP퇡om GsFIW5cW=kikIV@i$QF; f͔zm>L|} O/TNjhkW>yЭ/ga:l7]>FN? q.,ku h!CJF~=yo?v_?mF{{FŜzF!yU4vO3"h*yO ǖ΋kg3~ l9,ԈA^lٳf͛6llٲ\ٳf͛6lٳf͛6l+֡ qgbYhF*}t.f+%.YHm@ϲ6#=8֐" WhUOn~祭W6lٳf͛6lٳf͛6lٳf͛*r({bZ֣c\俘^Mt%tw` 9{QirVFo\( E_lcZK&x[t甎vS_i:=*H$RB^]ڟ76^fA@\+ nv_>g_.f1]N X&zɇ|c3E7ުURA$ ~ekx1=y$GT9>/z|淂D}^b-/Uѿ݋Z|+7uƾWKp N^XJ[~>ZOy^b/e-e ̶ ]=vL);~l9U?vUn,:ͺC-y Y 8rGR#ݹW;?$PT n+}Fb")H*>cAG͛T-T/MSP{+ʂo%T Am3}y4I/!-A"Uۑe?Tϔzg$jH$)L-L7&;mdF^٭fh) iZҋw~0xi,DAV+:>af[ڴ3uRħ_uɏ?f ZSge%n[SB"i滟/$BGZ0 Em ookI+^{}vk. ލN5'%vtYyuDN@!vUʭ#>(y ƃ)Nn}$a)&e>׏N?~Y#/zX2]C++8;sesnp$=R3kq^\=VPX'=QUòMHO0 ֕`5[5%֤䓹zvW79GA<7?5t,^IykMKYU\#'`iśmw gMJIJsUVJ:K'ےZdivc6X(wh7&:ה,ukg[c⣧;oힺuKMbĉRWkSLPPvOof͔w'94>J%A1M?ٍ; sCx);('fųYźzIl*Z@64˖֗jndKRZ Wb>g9$ZR>CnyO.#p_LI}-*Q@ :S͛6lٳf͛?lٳf͛6lٳf͛6lٳf} h+J휇_i;DUu< KZ4;גOqx @\7a)ܖUI߭^zAF ͛6lٳf͛5i6lٳf͛6lٳfʥN28.؃޳3Tfk#vaZu.-0%Jľ.Aq if#73JP_ 8)7w(%4teQ@ ך?,KehIO Wh9dO֘iRIđ  ^ybڏG<"B~aa*ƛ($ǫbG޷+~mYvrx4Zy&f ե(߈)E{dEC-wPr,Nλ]cDLTiH0@e͛6liZ^XE(v_&z:L&?FsOߒuJ-fK5[U`8HeWWC" IPX 車Sm+Z WBSsPqY)CC%^?]V˒nob)$<ΑUj0⇠Z..n5+Ez9+%k7We{{Ⱦe3q=$ S_듫-~3{"@׭w4s?~K_Z`e*$7 i4$)Ɲ{s:bFNc\UIܐ:{S~R׾%P uNyZudY4%&HQOK鷶C?1DJd5@$4Iy͞XҴlytx0}#̩$V Э~ ܪ`)U:g$~,2׶'4bEԄ!oZSBwg(,-'KL FC"PI}ګ7xͥV{h9 G>~_K AusXܔQ55ٳf͛67~qٳf874ȟn$u)V;tlӫ[­TTq*~ׇs1M@TUhmD SB}Cm"[rkZҫ@_}HTa;vZ\)7x ӊZ۟,~Y5+87"n*u9ѯ!t/+5-X0cEv+]}jߟm43ڣ°&d Ӓ!9l[]󗘽/]Ox )vJ0Hn,Tg8m:^]3]qyJR~#Nzׯ= ? pƜ@P wN;!VZƛ>᧕|km,K(NVDt@G#]NPʪx{u ٲLBPxr]Y ]2>Z~[Mb+Xn:A/_oɇ再j,'M1⿝ͦm!*b') Y U) ".Yy>l+nWϞ_YˮؽxN s ƀp(fji/:jk6!dea]w7XN9%?ǎ^lٳf͛6lٳf͛6lٳf͛6lٳf͛6l ePS57͛6lٳf͛6lE@@ ;E)Q m:a{u :|j~.;<2G8k6W)4sFJ;/*r=M2RH,0 t4ǹ_IE7Bu~ vȦqZry(":犿9uZO9SoE4t Y9~7Ty?mB`yƒ*ֻm8=b.`viFl*6ZAb7DuQp?%\ʆ ̳UrHi5R5u .NJ`D~!⪊noO"|%Hڥ*7E3zkяڛat"6lٳf͔2f̈́Z2Il@8o=EoN"yv;=L:,@c긪hB@;:UT|\ηw+ZǺ+ԯ"fzUOٳf͛6lٳeALٳf͛6lٲ^lٳf͛6lٳf͛6lٳf͛6lٰݺ:@Zڙ|_k)ؖ~=gqO9o s1cd**-\\A,*@ޔW۾u-ͅ@R<;d ۭݶ+p8CRʵ6a%q<01M _'P/?~1Z&'oI>f#Ĕm/_wJoZKH+0 w{5{R g5SqX, $和CKvozE3(z(r[YjUIܐ?k-mBT@ƴ{ 8<1ç^lٱZ6S X0Ɔ&䝾|>IEtD]+@6ZΪi[gJNcl),Ƶ%G 5o4:k^&+>x<Ͼ^IWI8/QRI?crgtAm,)23" dipf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͉Ξl<39cb!dnI"z俑iW٤,l膝FQW|OݬUe  ð:@֘lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳc@nDٳf͛6lٳfyG(+u%I!|;xatXYD"ok}`HĮ\ xs OjwHq*Y ;Tfo)L:ƧyHa_9lk4- ƾa3 w7>-15Y}$29,8f54ϗ?n,;ӧ.U!u^ ^*[/\+D^-wP%Z(U5n4{%>3 oS ח%5ۖAK̚mFQ Fv@Wp/FJ:`ү\ZIlHȵUڻ? U_sߟf{(r?6"z 1cۨއbH8_Z}n0ʔc *ayXKܐREm؝gSΐ =+^? iJW>W/0Yse~4gr=j2f͛6lٳf͛PFxTPz^,EjPI6&փjOg?=x5ZO]u~kq UQǏN;ǐoZD)3%dHso- h.We+F_J}Wno7ӘKCOs@Ty*Ȑ:>/=@[dڧbZjc2l%6KzQQMJv遭]O={a^Xj`51cm[y ]s^d|d_TNg9,L|rɦjLٳf͛6liZ2<vi^%Ryl4i"+VvVAP/͉/ˍrK:)Ujn>V+m izCE'7嫫;oX[N>iW,~. }fG'^^#Y*7(ۅ טU"`Ƀnc ڹ/,jMSC:9!WUyS:k>>GCBȎq3nyVu멆 DA䷗߯z,+TCog~_H}^. Zmo΃tڀ}ئlٳf͛6lٳlٳf͛6lٳf͛6lٳf͔vY˛8EU d$P)d/ln8=jE'OE>uEJ733K1j Pջ{au"OE"G߼^;K)_9FY0%V`A_hdo{"ii)X J%֚kMI_:& 0b~lhѹצr󦷥v\GfYTCT )_#zP+#wT3y_GlԞby=AĠ}lie슰̌@`IP `Աq TI:FۋBB׾%V"TVTH&JPvb/6lٳvҒj~YUjXJDbO@Ñ5 _ |FIaf"]VFPKo˞zCfe ZƻSڟ:2io+p t͛14͛5k2<.SkǦ[O *@!Iis\KA?NHfBji5ΟhC4QDX"hSWUn_ GL6r_Y]VC-rHO"ۧ&=}zoqGHKBHߓο | Ѹ>=Nfص)2Lf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͔sw$sB$58+Wo4 ]X4rT/\N;+ʔ̭Rմ5,!$rzU|=umk䯻My%TXO!bUxY'c׏ݞ-O_DU]vTb(Ū~~lyzLӴ KhQȑ~q`$n1U*r|?|捫SBRdcJzr/÷W=~?U-"V T7.5oᓽ2! jx|YVDaV.R]Kl ~xҼsRT ^_Vzmǟgo)%Q>܆+E* 3͟ߒIkV `fdW5B#*S|uZ3F**jآ5v鞠Mu6xAC(e(kWsZZEO*l{TႠ&02q(!O9eTdI(MM[ȁ!dm^TFdJ2*Y~Q<ٙ&~<8' O/ᦝ) Ad#ׂ)N ~/ᓯ/Pj"s7fʲѾZ~%S ˝wH]:;sv4f9A {HfA1cS zLc9qtrb(FȮ r״˟,E6eJ ]ת_,>_n=8d$:/TMgq* rOq }VӯSX(IF(Tf0bv ][,+L}<ϫM,YE@XK6?O}gXn5=5 FY ;Ԗ&Mz.ΏId䖥BOB)շ?jgk[V-YK @c`APԚ;7ٮI.5k_&yYBƬß-qg|Oj 0 A4ߓ9KһnG*(6Qx~l6FR=4$3Szro휣dJ"bkHrIj%$q`xraϟ3h)46M,͑A9-M}=3y rJxj2 IBuo״o+jލdESE#T xAuaipGnW2+F (c&F֥Ϯ,FGT+s?k6[xUc(PfǥxW"ߔΝwu@g%ܫ῞trZcGlG-{Sx}Dqed*܏qF_f_5}%)xCpJ~>Nδ;{KֺޗR$ 'Pxyd73?.=\ O?xgit [i%@ktub@ tcf͛6lٳf͛?lٳf͛6lٳf͛6lٳf̀upe([)26.J be&o]Je9nGqL隷~.">~Fl06lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lv`F[C}+Xge(Cu™"(K0 h*x`(QFvÿ,0ɥ%G`AR9Ri滝\|6R!~*_=ٿ<qCs*/b` )¾;9k7kI`úʌiB8c}bH~^C+!mMڇ;&9Z\YinhLW" R+|-B_;Wط֯/ܚTv~* eZ8*$VE ֦r+_hE?F܅qMAwV"*Fv+K:5״խFUV+U~ JVO-c̊a$/^!juoGX"fGSz|3;VҸ"u 7?5<帕Q_L`]œFyrU/- 9Xj*}} !-I5=q@[,1AAk7\/DӡXúNtjgEV dU 4L:6k5Fét͟ V;uĎH`k^&Ky7MOAI Y+Mg]H!mϿ0 )}Kt܅2'xG ׆q4AE- V?T2rqv9CYq `;ɬ?,TƑ,m͚/(a/5h4).\$Q&c(>s~~kK14r {wPCyTb;X)bz?On+ʚ,wmo U~\B[% [R(o946`aŠ7n+Xc%ݿ YKj99.fխm׮*)yK&O/T7/@y'R+kUi#iPr]j/3i^*Pb= 5a=9T tnNG\#?^Y 64pPj* +@~X͊N` OcNRiČ-CR8GO߁UQF{o>o<ۧcy0ݐ`C7>u?.k-GHщP[v!S:9,I@S:%E|eV]CRZ]c (ܜUz?` حH9V>\Ѓxt?q?r.ZEa#mxv ?XWsP_ϑfO)ҝJn9ߔ4-i+K+'5n~|AdAEJ`o׌R8R>5%(,w-gҮnXۯ۶xκmX? jRos]iֺ&Ck@idn쯋ޕʕSmB=; R)c >0@#`6U2S6Ktgr'_Z}6Z@JmѝF8ųf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͜or&OmBU^.Cm8ߗϛzeVf14%<F()q7s05(nwH)6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛(VvWҩwS>w.ZVSf챋9/_;ٝ&2I u;XDjhl:9o,sq#( (~&e~fBt/n9y4jrE*r#7U&Jꁸ[|WCMޝ5Kde G셩KM滘ٖY'W~Gj ٹ}{WIӞ)J*ϐ'3ƿVF֒0rGM3kX7G5_PR~璏3_tIQt,WVʿg< q=E%(Ԓ:̖P;q*ZTSˉ 4nA Wx qȼk뷰psR)Juq8&ak]N{Y wj֝B#vϚDţ##>^iH,p%m0}UֿNk@z+8tfdwUgBJ*H 26 bx ߥzlk*&OShz4~,M)OG jK{txjA_;g3,ͮt HQ ^z ^^g4L/>O|b/+yJe~"MӢa4ymte!q@9qUTW+_?ySe5,1X ]LW+WO$\,tIJs&tVUKvOK?C˺ .laIW]>WNE ;V؇|gmd"ڝ(=ǀk?)14Z OoAʈWژo.GcuUs$.%+ @X!ܚfS>f6&H'Xǰ7o3wZm]=5ܪR2_" ?٢#Ǜ0  R3zCjes=~EyUf/PLu)IޛG-(m?/L"DXb(F*4m@'雀.qٳf$Sye*|T޹j1DxKYZz{vVm+\IŴr&B+R\O䦑!7 :|u-=Ciռy)oز?Q UOn57C[ἏTwl?pA֠ǣ+ ڂuA4ޕS窆j+zA"Mi~;^NnfeBF@X5iM~nYMxi2$.V~nŭh3&Ԩ!^C{ܤJ+|\Sz`#nb6 W Oa/ 폮QI=IeGO+#}eO?m]QQSjg2坎>mQV£~u~SC!W#A7>53/~p#I?Ox‚)m H^:VWo׋5,kFG;H=OZwzCb^BSP,(؜Nh뺯 3t˿zCckPH=J|>[bAǀEk֞JҸ; A-.Y>ɨч߂k/6lٳf͛6lٳf͛6l)N0%աiCZ2;(Y6oslUT&~0Oekc$ˑ\vjߴGPKciiEj3l7bNnxם5K>sӉzP]ɚV*J`{7q,w$:%?RTs.*Z{a/f͛6lٳf͛6llٳf͛6lٳf͛6lٳf¿2jZ*ȪIQ-WXUkhnmn zUa͓SחFClqd&pr ĚYC6JWyf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳeQC}u?/yXO QSCPyz+ 5Dq%cy3W)9sɶU SO.O=P'JS͔EvKvGt:5nbhO9YGƅ:voثB"6r'*ۿJ놺O|JѴ2ۣEhӓ7,Cݕu%<]Z??cu?,w4yK-9.8I<;Z);&^4f?o-m\I{tcy-ާCKrV qO(jfԦXW.烿2?1|Һ֕zԻ) gztJOmSihv;0ԓM\x1|ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳe"ikx,+43PdU[w38y~_upGX4mv9@4qڔd(;6lٳf͕^yf͛6lٳf͛6lٳf͛6lٳf͛6l+ Z oZD;H,| ?$w0@+NbV( + _rak5B,4Xܦ.2pTß&j.yY 8XDYdǔ(acZU\^-m qn\UZ-x᥌PGeu / viiN4biO wi 3 zu']P6֗'E(UIZ|4H͙_i-3A#ME0'I*$PoiP轢iSE = $rᝣq77K[F[LܖH }FAgESQE vF1lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf<Ey=fE8++ ,rOxlŮ(I*FʡJW0eFW>yJB@Ɍ1Fo͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛1./^G[Yfx\H#,gn.x ] q\ky$0W į4pWZ缴xǢN/6S Tyf͛6lٳf͛6lٳf͛6lٳf͛6l3f͛6lT', *чCQ]sGr 2(hQۜZ,63R:b@oJL㚷oͣ 0ӏ`#qE;LISؠBڌND5oď;IrQqSƼf 8t KБ @#*0ƿ׏CQN[JH.O^yމ"x<-(5?^~ײHpU8|1r~uv ۔pFZ֔Q$hPtÔDnC*]^lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳc$@yQ}vSDL҇zW9Qy)_R[$#GVOl֕ /6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳcJSfHN҇.v'.#آiNeVcr>qt1J ٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳdswKk]V᭚H5\|xgϏ:G W/^= ZGԢL2V>_S'~HjkQMHޢtjVj9}9Fm0͛6lٲ2f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛9\oT "|Mu`@w8q>rA33:jP}`Lb<߹!^L9x=!H{`hM\SbOW=Ag) yf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳg/o4/?#mقCS+_ʛ>UcҴ.Ĭ@7cB>.[{;,(A(fԑlHZGӠ݋f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6poR%1GHwm?,|'6ȐꥨX~[}EϠJz\AU.@qΝwخlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٲ"PkUmc) ;x|;z~@y>6>g&*#w(zjɋ0ΕnIOK) ʃE2f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfvʿz͝Z|nr (86'`uoٯ?-gv#?wQU?}# Jtٳf͛6lٳf͛6lٳf͛6lٳf͛X Đk=;6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͉ۤ‰+*@97j |1Lٳc])c/mNtNp8.1@U%x}r*bm^wv$Hd J ?i>hޔ(XQMd6lٳf͛6lٳf͛6lHE*Mo}kUq1zZT+l랦[坷!@)̓sQШ_j՞$})]vRGZe͛Ts͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lOQtMQpJB~$/QԵbX˹?ܔpBs!aK&T,USJs T>>r1 r<~=*3!OQڔ 3f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳt{sZ<yaH4*ʺcOg~ 5}WQHI Q$1z}"ipIIQXPһs\ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳg+*>Ty"I$FTNa*f ayQj~<,tlԡRKI x8z_~V>V7eEu(䢤ZIvhЦlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳ:iּ^]DZByzYS=H h[' 5~i#+uySN[;d p%k/6lٳf͛6lٳf͛6lٳf͛6lٰ5iJP9;=$EGLٳf͛6lٳf͛6lٳf͛6lٳf͛<9[}JiۋNS`$RcGF*_<{8kZ[AȬ0[o2h8Jxgӯ-QVeꢍ|ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛)<@-M4͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lɥX#iUv>kCy{D3H\qYV+rVg V^\$D%ƪ3䬫`?#F{M@#^4Ƈٳf͛6lٳf͛6lٳf͛6%s+AuGSP=qo*~pk^zfz/1oXr1?v'r͛9~ $Ѷ $$#X{Oh7 +C`%Ei^)͛6lٳf͛6lٳf͔+/6lٳf͛66IjXwrs:iF83 ?$ ,i\r3IYWnFl罴T0{t͔ܩҵ|;͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lB{V^@5hG Z>OX58Iemh"P}GnV=(gЯ,ǣhVnɁ5m4sۧlٳf͛6lٳf͛6lٳf͛87כt 'i%J^[ҫ]Ckq\yKI Y*/Fz%vI=HtA3f7`j:wEI%r}2*x] [÷*~C"skt4AuLٳf͛6lٳf͛6lٳf͛6lٳf_槙>U҆Xm $}E2X-c2Kl$i.K)^A+T7j|4=5ӭ='6 9zN>Ҕ36lٳfʡ5/6lٳf͛6lٳf͛6lٳf͛6Rփ6͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6l<&ܤXgv @+ͯ+2F[ H-ASN]ד5 *~_LhPf͛6lٳf͛6l@"h(k{헛6lٲO=kR_e"P Fv1뼟t_oC8OhuvX'usp*~Yb/͛<9wauwwER꒣ ?l?Q{'wIѴk{x@XTP|ٳf͛6lٳf͛6lٳf͛6lٳf,a:e̢Y$nH\4he/ڝZwKgm漚2T~6?Cfsvj~#:P͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6l=e-#FeRB ȿIY!jeN#jX}Se)Pt͛6lٳf͛6lٳf͛6l؏G?c=ƘKB=3׷AW >}km#t;mBKn|D^{?˰v1HhZ}}gV͛#j[98?8J.ڨJ2r*C+!-=`6z_$Yf͛6lٳf͛6lٳf͛6lٳf&/?kMhQ%1A8PՐ/9W5-~=JرM,WDV9KҊgf??*iXETd͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lΛA'N*  >C~%^To8%y۳ -#VoH~A^#EP" sf͛6lٳf͛6lٳf͛6l'Ū]KtܳB~X7? Y%`[is,`s0)r+d*)mxc">m5ıhuɧ=ymXh٤G.5?jY~pxv6lٳf͛6lٳf͛6lٳf͛6l;8^yXK9=_< kQүndeI]Oх^ktŏ*jpd%i!("οlң9f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6ldk>|I~`jsk=[yY-tÓKT Hlez(HI4A#(&ŕQM_{2 Jl0nlٳf͛6lٳf͛6lٳf͛<9}]K\HtNPA22/ 3}!7vƱe!V"H@-01eQ3>y@yY8Ӗ!X74,NP_7amt.uP_?HH'l5>eOPf͛6lٳf͛6lٳf͛6lٳf͛ 6^^\ $sHiF [Uoy.|׼>dhnofH9%!OoDP.jUy{,L%*7]; 0B͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6ldM#)2(V€`HS}nٳf͛6lٲ{͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l ]%RcNgo;z's۴y=zY2VG?@GY )e-WN(@#_0Flٳf͛6lٳf͛6lٳf͛<-9΅j*ڼbB^n]qckyf츑&c7PvNY'ռF <S<~YĿ"q/9k$dVF_lǑto/I;6PI1^xH8?F }oc ,aE:t&ʡFyf͛6lٳf͛6lٳf͛6lٳc\I;s_^{5-GKmfۛ?VNHZ3A$WFv=y7BcP{b+Fhvr7ƿf&jKKhl2yf͛6lٳf ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6l$󍼗zNcKy\mĕ |avzeo e}ûzqwODGld*W>N{~||ٳf͛6lٳf͛6lٳf͛6xsr2zֲZk*3)e_"*пl^[X ^ޔgc1nqy%H#$(cT e=W|$\R)o#R@YXSG}8?.uXJMrYք4RB׉5?-\ƣ:[h^XmOL!cU@҇ Yo {i>HJjYf4Nʦ=r2$ Ztv:!N͛6lٳf͛6lٳf͛6lٳf͔o*X~lyJDдk B$+'oyqk]9#^d-ĆbѾ.KDKZUtf7tnp"<5, qaƜ{GqsGO*TI=؎(;| yg{[6ld腑yOcf͛6lٳf͛6lٳf͑_>St$B_=?6M.u>mԬ>,!yR*% MàjbKV_Y}&0[7=1հC MgeK&&H̲-~%$V_1,jDj #_g4;I=6i64Qփ6lٳf͛6lٳf͛6lٳf͛65/z:.>pi(ۀh盿!O5c58}鞒kX JJՋр /wk=efHPz`ٳf͛6lٳf͛6lٳf͛6Q9(,|46`(%QY]C:} %s8c^]#4^>( g@ӴtE!`({ni] uo #%:VW6lٳf͛6lٳf͛6lٳf͛6lٳNBbH1Px`yl8~J.i--N`MD{5OLiP#ET4$r]6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͚͛6lٳf͛6lٳflٲrRGQ6lٳf͛6lٱ/$+s:_m?arpmj}y0^8hOn}Zrudcjۡki5f͛6lٳf͛6lٳf͛6l2+Pj(1͛6lٳf͛6lcȡ)E&R 65a~lٳf͛6lٳf͛Ёo| muG;B]@Q:/RW8y>M{QgyTP;/3Ǖ :+svq 0Nlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6l<99T$Y~,HT⠞ʻ*wY[HHTއq;So)y~Nv24+ƭsi?g:kx~lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6Q `kT4f\@iW3r8P:Λ3p!.yLL]ĕ{qTF4+^!Jq<͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lP( ٳf͛6lٳf͛6l؍?PI9ɏ?X-&%c:;/eqf@0ꚝk;TtG m=iY "Sj_<ѧga)j9 8B䱟r *Ѻ64D@o_%i[%q0)*y5 @7[?-uyDjK!I=zgF0͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳg󵎝{&QHP(w角E\o嶉uf~4^M F*ߴU9_􄰳4@=Y.8-)MLٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳfƯkZ=ㄉ$l౹Ѽ_JL$3&Ճ6xs3]1?Kr!~15vB(W_K ]M x^k@K_e'ygQ#maZ#я8ǥT.o/ hQ[w}3箻tlPI#(En 3T[Sl?1hx~84{KKîc6lٳf͛6lٳf͛6lٲUԫTz6f͛6lٳf͛6lLٳf͛6lٳf͛#w{ϯ,-BMeQVc좹]Z御0ҵ $Ӌs/znygCn+qzhw3h8#gl=Yf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳe3g/FmM?Ƭ)#q 6v ^#X7.%Ś1ƱǺcǥݾGҼ+[tW5vJ It->(áZv0=ͪR*rs_H򞏭'&ց]%]nLw [T^9ils\\V,@mAPW<|{mF?&0-<}ElZFyf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf́ شY.4$gjMnsߜ~b]6 z|'V~8䊒+Tx-Q5y=FnLp;|5- W4'z,nnlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳdw̃O"RL^0ӚH0Ï*=3ÿL2kZjNFeU~%y3MƟڕ9= ƿ:Wp~ яa9篐<=ӂdW1&;x}2F AT}ϗW:/⟟|yn,I! ~ MnvBf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛( ?*1ɤǡh6rn^*]G!feB}42 Im…^A8gR#ÐZ]N pT ˻x[$U?c//yV3&cN>?ly^t$l;Em3 ܡKNK._&^BTZeյ[ B/Ťϧ>yvoB3 $#utj|F;6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6j8^ukgt댁їbX'fe_h~ pN7QG̘\S@nD:'0K jX%+@+)xחľ+˨\_Α-Ek"{*w4-_ߛG懘m$K p@$ezj#fsC~Zj>9.h5ozon)yaq/6lٳf͛6lٳf͛6lٳf͛6lٳf6|ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛"ss/m0I" ; N-؏{9ͫ-ƬsHXl >KJG52PHvE^5Ϡx/5[l{ff͛6lٳ錊Ex~~lٳf͛6lٳf͛6lٳbs̖WM'o*IS6lٳf͜_CEFh91{~l.a$"o_0yHا ONWhί1q5ޝ"ϫ1pUe#Ӓ8~*W;GI⸎%O*de#"bL@7OG㞭c)A=MIbNp)bf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6li@Mq;u&B){.o ca$fV-xK(ɹmN=xƥmibAo#tCz?Q#=&VQɳߞZլmߎn$Buwg5G* f͛6lٳf͛6lٳf͛6lٳf͛6lٳc$c984[:1M %̧YTvG.ew yw̾b AUIr[Ʃϖs ,y _v0$jR ԉ(g%垯ab:zvpFlٳf͛6lٳf͛6lٳf͛(E)*ƧƔf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٰ̾]F.x"0 Uрdo9ɏˏ6[]:I"ܤ "HoQ)<*2+?ZiS2p'.F0č=7 ͚e\xx?`Y<|[1͛6lٳf͛6lٳf͛6lٳf͛6luAV49/*^Mg{w2B '>s`BKviUU[Q ý>n9 :>q\!/$X0 ? Yw/ז%\4f`j~o׏+?-uKHC,4QPȪ OzOR.*Oo4{0 |wϞ?J̱j#oc=$C\~lW"yFG?5'sO qHd)6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6STc6lٳflٳf͛6lٳf͛6lٳf͛6lٳf#w:t7lM|;*_2ɦnOR'Pc%⡚:>>x~xi]!3D A?[8]l4ף_UXER R2d%>]/?0K ''0X$el*Eʝ@ї P(A?5f~ߚHf%La1ԏjtΈ<,jK:xʆu~-8tMM/đ8n7}f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳt͛6.-SuϜ_+SbcrK$5,=/LU>gyn +Dr@QRMw4[V^O.)*89|=9"ƍ_GK+V8 :K(8ƴgz{os?$EJ/Mw4<хaOX*һ~'?Leh?wBƁf[#/dqTgU59VKwx*Sʴw\R۝y/H_ʿ3ipjWR+1,> G/̗b) pZFgQ"ZrD58sj4"jWaFN?*獅"EfÐn GMI1|c7oᙩEyX )5g~vbX$Ƅ]K70kvHv2MR@Z G xnhW1Ie}n W#-D \x2+QJbo{mڽ{`7DdT\[n "6>~ }m;N 3$h]SQ(v~P:uơ ܢd4Vn*@!ouSp"F['E*۫qFEb6PdUk̼3y]EŴ #I,ߣ ;ܺrd^_5cK4%X6 $Ây/]Lm!8J0N;VT]ҕkd%n;S m ݕקzg-"/n~M&O|zU?XE gQrf^r7ѽ9*mNy+[$VqÍ@K |cŀ?Vk~NZ"6"(>yo'yp >RyPݸA^vay/uFRȗ wF ȲogJ39,o#08N|xD¿"o<,RD(! P "zʘ~Ny᭣*Y!ԀG4ed>,D],nZ%=8c Bw1?)Ul.̺.))Rxdf"vFߚ!֩s wc*Y>3F@ѣQ"N|oGPm:x-uG28sSUQI]Y8o1s-3d̜J,WY>N`5 ՜}9GSWJ:ӑߔ"a4W]$pH3 #mω^V8 rYSy iAtȄC~uq&,qO3rکUˑMrWzJ7ҴGZ H%-˃&%ornxi%pGG^J8sПm֥}%ש,zƃIyx它ܛ8CpH v@iI,~PM=cT O}yKOZHYS!_W=R4k[!n!N+0L]83?\?kkJon.."J;^K7n;qϠZ/5Ud*XTrvJ>Nf6Njj?F!^~I?:PYHu m/S2ĉ)5xԆredZ#/L&Sl6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛ |Edh6Z rk>nM,o೹ (]Ku6 U>>T3'NCЌٰ-"zӧ>mFRDŽ.UF5$^\{g^NQҧ@ 2ٟ힪 y}V@$7\& R7O^A jYh+"g zW^Ķ'V:E(=w'ߖ| QI\|(H5 3}lNksB 1zȥ,ƧoWldxfF6p̼:7mMF8}2(a$<,7#$t_jm"sLjKyIU4*Ī5xאfo-b1Yj8Kj,D\^FJUn-8wMFeVehYyK`DqksDb{[ I#`ed! ǃ+^e\n?%d1dđ*i-"^f8j t/0k/KX 9"iV*PC|}2@vb*~eRCMyf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛)aC<o6Cꉸk{X}%Q")//gocGKaulIf Dh(RYc%s-ŻZ\FT~@e#-~20Eic]jX3KHHJ$<PSͿiW2is[Z) >$'6lٳf͛6lٳf͛6lٳf͛(ԯL qh5dk]򦝭%*IƅR #r?y&Ԋ*c;р풝Dⶴ8a SQNLt[k5af͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lBf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6lamaTq9ȍOFo_kHᑉi+?&RX2H9i/˧-_GzWOCwJ?xH`xeG ^ΉK=Ա %(&wTn|vp˯9kvi3 f[DȑX0 -~8PEiڠ(y[o `5Giyr.8?|Ț徯i^VU~KS^D~"K{K{{C09'aɊ QJ cf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳe}f͛6nf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛6lٱQ=9-xq:9-wqXX:͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͘eU5/6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lOC͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛W?ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳQL@|Oe͛6lٳf͛6lٳe;e͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l٩6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lo\ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lq6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfʮӗ6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lJE^lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6Q!ENe͛6lٳf͛6lٳf͛6lٳf͔ :rf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٱ66f" eSS6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛)(,ƀnI͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛(aB*2f͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfgo/doc/gopher/pencil/gopherrunning.jpg0100644000000000000000000025043312412656734020375 0ustar00rootroot00000000000000ExifMM*bj(1 r2i['['Adobe Photoshop CS5.1 Macintosh2012:03:05 18:06:49|="*(2THH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?*iM,mUT` kZѵck4IJI$RI$I%)$IJI/3[%5$W]lceYcݱG?c;EZHZ:lSk}ZSa$IJI$RI$I%?TAƳ+*U {;~zJLޓ\VwfUaJNׂAƉag4$I)^f6&u Kv1ewЭ`,Q"vvJ?]f=׈幍2*;QuYY_[/wJ]Cܧsd&9so_ZfuO Ud:62m>r6~gη)a{r7ב޵E-zvqhhgS?XOL=7]M8fU@sjv>wY]Cn 3HvvOQcþUm諣%{+13sS]w<Ӌ[ݛq)$`tk:%.f:i>m5^7c累g댜 ,a.3)xgf/B_PGa;}vV[gRw< JWSC1,k[FGi΍[?:_mi:ǵ;׺M6Ν+ScnvXѮK~]_k]Ӻn-sߑG\%=VI;U*v}':KvO¥7?k락nU:9f*YQ~jFM,5KHWcS};V~E)I$U_`b;0پh%AccױVIN+~7+b5]Ot 1/qqġXIN9wsW?(]r.fec59Y9Ow.g'잵%:]nֺP3>My@=Χ:OcSzM:s1m ۱Yͯwҫn= 2Ρ@ &Ǘ5Գm$_zބ:^n72Ǻ׹4ˮ/٩3o[jl:Ū['I$'c'KRwe,k2}#ޥ_vU]h׋[i6 C[NWF궻f>g?Ep[?qڿI[)zzOGNabRE`f~2~f}e׷ 7`=ߎ=[vv5{e^Y~zf%a7} uVk׷t_zSYnU}si0[v,ogJz|/86}_yV-=ONGoo?G>^u:o#+ RM}Y~ݗ~b/ΣӺGmnlw K+je~oYtLw=\t?WoSoX|8W*ml]Kt<_*u7YKc}=wNX1fm=znOY[ߑPsڭu.:V.ǽdl;sK?3LSy$IOTI%)3״9ZuyI%#V=L$2OYDI$uuNo۬dvsX?-ɗ윜plf[[]O+ƫ&5^çxߣ?RRTI%#ǧ+l )ÚwW7*t477ܖ5:뽭k>_?U$}T:mtײ =/;C. 7],wšǥ{+%c 熍"$qszKAtV27׋iw7{w-TI%)$IJI$S+es \B;.1r:Ɗ%Űz:ø/?rZwG8[P1z`N;ަnG"JzXX[4 5I%)$IJI$RI$۝Xs(/;6 ɬՓS.ܲƇ4կ!h8y~}Zݺ "ԈC3)3զꞛeC`ջ]jJKo.Ugݑz&~wEj#?LCfvcGn^af5Lmm lֵ)H xSFsH>[fhXd[Euvxs\6$c{e]6Yl0l0:gvn[XudZ78ljúc}}ƾt%YK[-=GUt]o_+-W?yQMi)\zU_?.Ʃntm.ܬn) b'\Mc5OT1sll?peOuOw{VUMԺTI%)$IJXr}5fc$N>9l,6]'84vUOݳ})NI)TI%)B l/kiȓ{4SH,V+)7d ;V8cw~}CR={ݍ5εRIJYٿXzO&wPkXv9W5u<Xr~}k\Dڽ(wI\7OվUoL7ׇUtkmTf܆3V{CWS,ߡg Ysr25QEΓ.Ƶwzkw{wm )I*ycs($18 )RoO·5um`m}/M.Θ:6@e&[c~]]:VkΚ[%[K6vIeYUҺ\uau'<6+־RJv>lATԲ͡v~Z֭GV.{Y}`TÇk^y%)$IOTI%)$IJI$RI$uӎ-wkeWm/fEO~7c,ϙV}tuX4EU?"?wǻЯݞ} I)F6>U.&M4 5R:)CqX+Zj?oWIO;On o~=)³?z: ;sZ7we$t;>R s\XAwmenJC^.3vSP0?#$JRI$Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$Photoshop 3.08BIM%8BIM: printOutputPstSboolInteenumInteClrmprintSixteenBitbool printerNameTEXT!Photosmart C6100 series [49440E]8BIM;printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oGrn doub@oBl doub@oBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@ vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMXX8BIM&?8BIM <8BIM8BIM 8BIM' 8BIM5-8BIM8BIM@@8BIM8BIMI=| Untitled-3|=nullboundsObjcRct1Top longLeftlongBtomlong=Rghtlong|slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong=Rghtlong|urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM p`T Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?*iM,mUT` kZѵck4IJI$RI$I%)$IJI/3[%5$W]lceYcݱG?c;EZHZ:lSk}ZSa$IJI$RI$I%?TAƳ+*U {;~zJLޓ\VwfUaJNׂAƉag4$I)^f6&u Kv1ewЭ`,Q"vvJ?]f=׈幍2*;QuYY_[/wJ]Cܧsd&9so_ZfuO Ud:62m>r6~gη)a{r7ב޵E-zvqhhgS?XOL=7]M8fU@sjv>wY]Cn 3HvvOQcþUm諣%{+13sS]w<Ӌ[ݛq)$`tk:%.f:i>m5^7c累g댜 ,a.3)xgf/B_PGa;}vV[gRw< JWSC1,k[FGi΍[?:_mi:ǵ;׺M6Ν+ScnvXѮK~]_k]Ӻn-sߑG\%=VI;U*v}':KvO¥7?k락nU:9f*YQ~jFM,5KHWcS};V~E)I$U_`b;0پh%AccױVIN+~7+b5]Ot 1/qqġXIN9wsW?(]r.fec59Y9Ow.g'잵%:]nֺP3>My@=Χ:OcSzM:s1m ۱Yͯwҫn= 2Ρ@ &Ǘ5Գm$_zބ:^n72Ǻ׹4ˮ/٩3o[jl:Ū['I$'c'KRwe,k2}#ޥ_vU]h׋[i6 C[NWF궻f>g?Ep[?qڿI[)zzOGNabRE`f~2~f}e׷ 7`=ߎ=[vv5{e^Y~zf%a7} uVk׷t_zSYnU}si0[v,ogJz|/86}_yV-=ONGoo?G>^u:o#+ RM}Y~ݗ~b/ΣӺGmnlw K+je~oYtLw=\t?WoSoX|8W*ml]Kt<_*u7YKc}=wNX1fm=znOY[ߑPsڭu.:V.ǽdl;sK?3LSy$IOTI%)3״9ZuyI%#V=L$2OYDI$uuNo۬dvsX?-ɗ윜plf[[]O+ƫ&5^çxߣ?RRTI%#ǧ+l )ÚwW7*t477ܖ5:뽭k>_?U$}T:mtײ =/;C. 7],wšǥ{+%c 熍"$qszKAtV27׋iw7{w-TI%)$IJI$S+es \B;.1r:Ɗ%Űz:ø/?rZwG8[P1z`N;ަnG"JzXX[4 5I%)$IJI$RI$۝Xs(/;6 ɬՓS.ܲƇ4կ!h8y~}Zݺ "ԈC3)3զꞛeC`ջ]jJKo.Ugݑz&~wEj#?LCfvcGn^af5Lmm lֵ)H xSFsH>[fhXd[Euvxs\6$c{e]6Yl0l0:gvn[XudZ78ljúc}}ƾt%YK[-=GUt]o_+-W?yQMi)\zU_?.Ʃntm.ܬn) b'\Mc5OT1sll?peOuOw{VUMԺTI%)$IJXr}5fc$N>9l,6]'84vUOݳ})NI)TI%)B l/kiȓ{4SH,V+)7d ;V8cw~}CR={ݍ5εRIJYٿXzO&wPkXv9W5u<Xr~}k\Dڽ(wI\7OվUoL7ׇUtkmTf܆3V{CWS,ߡg Ysr25QEΓ.Ƶwzkw{wm )I*ycs($18 )RoO·5um`m}/M.Θ:6@e&[c~]]:VkΚ[%[K6vIeYUҺ\uau'<6+־RJv>lATԲ͡v~Z֭GV.{Y}`TÇk^y%)$IOTI%)$IJI$RI$uӎ-wkeWm/fEO~7c,ϙV}tuX4EU?"?wǻЯݞ} I)F6>U.&M4 5R:)CqX+Zj?oWIO;On o~=)³?z: ;sZ7we$t;>R s\XAwmenJC^.3vSP0?#$JRI$Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!YAdobe PhotoshopAdobe Photoshop CS5.18BIM http://ns.adobe.com/xap/1.0/ ICC_PROFILEADBEprtrGRAYXYZ acspAPPLnone-ADBEcprt2descgwtpt\bkptpkTRC textCopyright 1999 Adobe Systems Incorporateddesc Dot Gain 20%XYZ -XYZ curv 0@PaDuRY9.9W" a A )   ,Ee$W2xov'D !q"."#$p%4%&'(U)")*+,e-:../01}2\3=4556789:~;m<^=Q>E?;@3A,B&C"D EF G#H'I-J4K*sVAH;;ϟ?:ek]ofޜ` %UhkF];r V5K)? (-u!<6"RcG*(nx+_/$RXWNu}1-Y La~7DoI'iסaVBnjS4 }ݳe@H>Y˽}6#3f4ѩzbqE R 9@6Ƈ SQ2f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6'3q盿+5Uҿ,d,VxyHCTRICB1E,BN??ݕVsTɳ굟rXh*M@+uaXJ9 ctgNM?TVԎYH#jUnS?o1qa{mg,sc{lwŒf($s-i<ͥDBIsr$`U 'g]Z1$k:o}fsT Z_3$uUUcF'kg!c +z0#HWI*xGÒ?ߘY.+w[F)DF $,cgrnK:<_edU"͂LT2ҝSm񸑭te6H8+*u ~(l_y;5+y`ƀzc~G:?'ZzL9>GxqΩ6 `0Z.Z5@Dn )*Ħsf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳc$"RvO[1#A~\Ef$E)6X̊#G.^2,4j&%ѤfH4ĤMƇ*#뜮sqQ缎 c()d#Hr/ǧ&o1oW./X8DMp XBUJ^V۬[h\y[R([@3v5힔Κ͕4[\ʱ6җ.r]8%-3Dh"Bőy1?>'ʷϘ-cd(8@uCω~W"jbJ_ӄ NexV*zL`M:.г/-C'ly{ `I{ 'w *IQ]ye@I7՗6l@MA$$}#lvlٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٰ-eD^LFXE55k6գzw̍$t.J BԴ/6+ Z$F;ӯ.нV,>,QH!.cfJz;gLKk2Mtd bZ/6lٳfѣ݀,TБQfe_i^gFm%ޡu'J# X)YI<Ӧ!桿Uizg33|sj:/孝Յǭ]\p1HYĴF Ă9?g<|nZԴꚤ( [[t l45uU+NO0}gCXRD,I[Kw\)QySPf66aqZSŸ:<^ۖu/,$Eo5}ng()lkmT nu!// ޥI#(歱TBWNMsNOG=IPDrıēӾN4[_R@1 ^<>X.h5q)+ !7zP6ccmc2Ȉֿiv1DP/&,}mcʠ{tiSkʟ|u;2 0I n>$t5_R Wڄ ~_yr!UX(A/~C \#p*{ 򯞿ɭjR>ǥ?֊ۢFqE B߼7q;o%֖wkxcj#R)}clC电/y8ḫK:^ 0lyW_ň֚ F$1M2G*•S]9/Λ9 :SP9ܸuW.;Q.ԶqDys\„u7 nzctOkyE60XA%ēi܎ԭ7IIyb\GqDU6+qv%En0? 3jgjz|Ml&B1dPJq9;7ᔰPbb:8cxO?7Z}ZfӮЫҤ@Ś6 (Iqۮ9O!Zz͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lDsU__.mld4 >Qpܘ  <8]/N֮5N/ b$h"} ſ.j<ֺJk|'[xkMSg/<fzEē*U *@7o(Jk~f]/՚%XI,obH.a/#2A ˕?yH4褂1g_MCĐ*ASJJLٳeUb&牽( .6:}gK28^ )N1cUNwV0V痛6lٳf͔5cC6lD(z`[~J*רzdr8խ2ABjMkHq-y!56E KVMƤ'@%ԃ@~f~JkD@`k{^= eO ]A#I'-Kc4 "|,}yIT9?ʏˋJl|k Υdur@JY:7wƸhGҪ~]ZUaA_AuM+C\\=ȅ) #`EB _Ms״]b +6Ҷ;Y%SQtb {?I8$Žh6K"A%8:N^w즍c k[)Owu4eO ²T'>]n5=_Uu[k2f-K= ̤b!88ϺgRń=oa=x"hF xȤE )BYD <Ŭy}?VmBG\Hޢy['YȟɻMjƥc )w?ZӕT1O>'5Rs֚pqC`͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lZLͰ wyj}CοZxH!3B?jfPѸ``j1).C9A>\'<Ӥ薦+xKqJʩVPo5cn!3QJ 'dSѾ!<=+Qj+Iw"ڭ OP@99Ǘc+ηv:v+y4љ [iU}wRSU~^K<},&0n\pem94![k^rYdM=Z&%y%=*'J}*M2kG )ʐA)J%6mBX((j(2f͛6lٲ{$ ֕ocLրԊQARMqo"x˩IaޝHqٳf͛ѣ/6Ě&,Hݷ8[sI]M9<\F j$%y]SO<#8e cDI#O3%a NDT!_77:li R.$;TV koj.5$J~Qȷ;䧗<qi74pݹe3Xh}Q>㧐tBoGmr$U_+Pu+uԬvG*F圅bK7߂.d"'`!B|^;G&BdF.[&_X>`Qf^;ԑR `)O]+cꑣNeҹ0~Iu/+ܛF颁2-7nB~F'y{?yY;?.% ]K$gГՏ)UgeDc\}w95'BXkMe3Hqi#RεVCs9HIWlzTcf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6l_/BF;s/.Le.=:Jqi~\>?6l#5K7є)W?Nxql GK@UxA]Vr!6Tȟg揚+'춓|Je( %}uat'IkN+[8-ԒTy3mAyortH >udGjUn_<痦On>xRDAW^GŋYL(D$1k'}09F1JR@N/+ i6柗t')u[Guo3[I2 j $<9=WiV$RfUNQUfV|&j>*np3rO̶m(t}Z{,׌BCDGVPT|kVe)-oGtDӬjv=[ x%V"jvĊ6yrU&-SQ ZEC UxzG󾓫@1"H=aoY!.3R LlA w=]ԭ1BY=MĪQY*E[~4>aṲ`}OcP894Ҏx ~8h!Q=6\}Gd4@+97)|ķtyb 8bɐVo&"_hVG6B&h{uѵɞPǦzqr*0WN[Gsvxq'_SUt#UA8 £͛6lٳf͛6lٳlٳf͛6lـlٳu͛6lٳfQ9f͛6lٳf?5-sthA'<-ekoצyGAlN:6@ҪH*꼓>B.xgf͜#L.it+ƛӷ|֎:}Xg݄D1QGb i\0VTuZ@ONK-ʪUڧzb[c\\4Z2J\V*VVn <ϧ7A-:GM_L=>XyKŸ_T\~\\#XLr26 /6QNtZvmlٳf͛6lٳf͕QJ8GyN5HBBeRr" ?10<{WOn.o "2G|Dr+r?os]Gf&hpI螭x7DtG'֩{%ݬԙֵƟb'%5rDܒ37!YXzl{|G6w!0HCɱEeX"Kxx`#w4.桸k=cBj5YB$XVPu^isu{=3I$-rfN܅f`;'%Y;M: _,\p[%O_DT;O5~?!3m-ݢuX!H20UcB+v ~%!e5ٳcYjx^dTy*'nε'{+DYTCsJ~?֥s7pֶ}5* ;2E_ tx2XImV@)3֟_|pyZ?CV;THcE?cB<)iڵT;P=qٳc0xB1݀J?6<걶Q}ERA¤P|#Ty!Xg=ʑHY׀m.?1gg|ɥ u1Wd-P86M1x)DWZesEw7Y ebeWԐeP zNlk(5:tE`¢I+6lٳf͛6lٳglٳf͛62Yc6V Lh9UuƭjDT G_CRxSNmha#.)o<ǿ?>h[ΦW}9)??zƥ}[84\G,G_Q}3Pn_4qgu}mA= G:bGn>ňh_B^lWJA2U ] ni1(FdV =0&ـVޘsU*WwQ mkXqRfE Mä9PCƒZ6ۧ\MO@ɵ75;9쭙2dz_m3Ÿ1o!r2a@6}fl+[?roN%7Mk!9oD6ߏ|3ék~u hlfג!*$Oki+qjRe.ok5bh E*k'MU+=H^erMo4eI86]B__>@ȒW5im*(Ue͛6lٳf͛6bh =7GZOj̧P}ZRVyrYkAq$8] կ{g9OnR[K[x8\*Q5BחM-? gJqJ,gSq fDtue.~J/˶#MtV-9Bdn"I%v(4llAKdCD7#o]qݧA3NcdLEO.@ې ?Zej67l-sgvTX31?-G~9)u:z#Zs[BlPO7wh3$RJސyZ)'⽳y60yJAoo ϬB8eUߥConz^yRK PGiĻIcZޛɠ^٭5m;QC?H<܏M輸Ly/MS%WU(Z8'£ɭFlٳe28]uf"vC$˨[oPTU_ٯ~?ΏotVRXİ}iѦrLjݗ~[ 0^[ԯ-5=RP-tm-?K4pS%$1j~OO>"GTE}=V`䀅]P)=Gm9qFEn$ͅژ#mCZg=Hƥ1?,EMv+}?:_wzF,YCu:a徧qԼ2鐻K2*E? DK v垘|ɬ拿7̱B^!^-ݹ?8Ki{ya65K=2)ۨDD#xX%5yZNz6lٳf͛6lٳglٳeR H)"=xr_IJKxg6!1E]+ʨ*ǍsߜdpV%I.7S@YP$Od\&-esE\ŭɑ1-Hny3r%T!o0Os\Z@O8'.CC#GlL|ѡ?mOKoO[2ItmXM ɀ|W_!OM2GcƾxY4ꉽ=]Լ3}{N5^墵G+mNkJCG..s˒O[X5ЎEYnlqy"gEt?,I[}&h{-PVDUԫ%)vd7E򟜿&5a|$~h&H`ốI %d:M3(՗H]xkRLpNJ;vlٳf͛6lٳfů֬dm3:9|g_Д5nֺBKSƼW yC>[+.Cl4&H卶`\ Qät? 3+*0 Ag]L[|P9m.#%uzꏏvyNƙaek`E+S)0rZ{}5V(ԚoZ%%ix)Jw1BiÒ5,F?ӨSE!D~,z۽p-ڕVf,n܃A:G*,U˟CӨA5}4FOAEaقqKYsZ&ˢbfI%0,i<Κdfa>.vf ֖ !Dޙ[+oB]GA2gp#1]z5~&SZg6u0yBBҤIbS  ]|,[+&;bF-# im6l sTyRy%Ud5M ?3 uCXRYy@|DMa~pwm2U> # ҟc>yϐy;ax\B#- 1Zp FtYASU=?6Q酺&'JHkt>3C g"JPg54)/Y֤~?|i]Pդ<{#gRf=AW[B=.MHbYbv0ֹB@C+YƋd{$p2R׭q9r AjW8!Bx/]\jKw_\!,skȅrsvy\Hf[{ ;$'s~ByL6usqv9&l-Ar,I+rv&"z >|yқM7H(_f͛6lٳf͛6lَ8<y/Vç[ h8M|1Uߗ9.D'%tbٳLMZuؑ*Xb"B!@*|G|jj5SU0K h}YlFEM>B<҆K*#lg,eq5Εe.XC2=~~UWo_E)wwEad'T~osC͗_-$]Y')R%_o_XŪۘ_U6NvjJK(NJz0I Gd ~|8` BA φyrIGg4V4+ qVḈ5$SQ1\zbOR1/5|$l*AmN%_1\@d"<@GRۊ9{;WSLh* Wc_U3dTwfUTP(2f͛6lٳf͟lٳf͔+P}e2VF xrqO;`ZdY$H@O&?lj9q?yzWu->WPŃXiEdHPHo?V,1|+j7z @h=*Cͤ2d*d ?)i^yX_al.\_-.J<|LƏe.^<̿>@MuQe[kAp[tKDA8e~-jamߟ}}3NguklLn@+U//Sy/4-Z@cteI`I֓Is /382E#o$%bK]YOC߯2*fPF_4?K+{ h=()Z/6lٳf͛6lٳf͛6%< 5៙Z_5 nl[@UP܃ \ߒ556_YO*}^.N8<; )ݽ?kMYe-*҅hNLFݫFsڮ " ήn"b Z{֓{Eo&%O06ο/rcU=7TYK8UżwQIȻ%ZIZn@UHUڢjVޒф ]7w͛6lٳf͛6ll[۹\ٳ~؜Ɵg5uq,ҥXdFg(2w[K;[xm,H-b(*$hUP(l16lٳf͛6lٳf͛6lݰWB5{ goΝ/Pɺ3,sy4Mh6?|d<ϫXխ"`E\[=[ 7¸( l3f͛6S@%I )Q+Q6lٳf͛#gDB d`MI 'a,moആ+ZȐ⌅؊4Uz_>Q6a*A5#:IΣ؛?3i:Rg6lٳe( ۧ_|&#JE |Ὶ#G]bkZ홮o>8~CuTпNG:9?/u_.zLAxf[Wf}6D>{mDOfp)x.Jb* ?&}X<fE`T \zjVis )g^6#r$#rRMjs^pE9 $Sb ?Z}-t+K0($a J}cV}1lՠ-PZxf׀4mU??Fs͛6lٳf͛6llٳf͛6lٲr7cfx+>SRwI8cUEEIcAMI>ٳf͛6lٳf͛6lٳf3$HK|( >n}핚)E xZ۞ tj$ud[H\$qF%F}LtQbVQPONS6lٳff͛6ly(#j>i+qg*6ɢwZDD-#IU]dRyxⷐmP~y~hjmi.$m;8y &wsC*FyH>Jsij)ks)w@#OA:~RYj6̓FHeaݺ6 ͪA+n#-^u9/cy% YBCqjr/Q7cAR= #f?Ą^?*3H(|Ϥ&c 1oмDR@P^Pִ#Z\é̮d4W~ P5SKyVD RnC.7)":큸yF b|@g? 鎅55mϨQ$HUެyq.k6lٳf͛6lٳglٳf͕S O-)/6lٳf͛6lٳf͛6lٳf͛6lUSINGC3'ѪyrYh.I}6XZB~*|3ֿS䤗UK7j$P#(j;3wD5f͛6lٳf͛6lٰ=q<;y?nu;t{e,JH_P+N&H'|=kAAoLBFX7/ߡ_MOӾ+6lٳcO:mڔj]Hfn#j<9[ ja3ۻ_~-7wu-ԷWi#U@%I?ZV4DՍGOFG:אC2GS̾\ԌāP(E"򶫧KqOڽq'E2#UU7 9>^&A&-dVYL)VǶ=k}FjhGp+Ao59WkӚ(,lꂌM{3ߚdZޤ1]MpvwUZF/qZNn?$8ַ䷼`YLP۬µARr*7W6[Rԓ Q@ R9e(A ^e.f.5X*¯/~`˟5kow5?ZGK-O#`<ܓėqHn=GI䂜~>)e%ͥ$}WSOP$pƑO0E`hzq-_yz1,3j1qjqSEsp>Z^iȣ^7p TN9*?(9 o3CZuxr[Z:6/.  )JT /P m ƞQmBW( )? ~}5շP\}V.@ڣr\55gqiuDLd%&4.Ip%UY\QyHӴL˧iUDDItXѨ~%?:xW4,6l6la~:u-ׯ]i|ʺ_C$Oi5+M{itF{9Zk9)Z&  1kXviī Ȝ.܁~. JIҞh%R g(„õ<1<GY*Ĺ4P(&z֗m:AWAU_RBl8NzE-'jZ귶ի/ ~&<#ɠ^v ڊ+4ֻS'vw6:+}>K]}V6eTUY]k.o$JfTQOZ?dwżHtftMz/MNWAkP^X, Lk5 m)J)KO+/ŬXykL,|JrcIZPA-xW_'~Ry;ʐCg6֡B8;t%ڬĀ*IMHµ]``ՉX2o'4J"уk9?4v*ml=? Z}Oq??3}Ă3+9Fc!Zvc:[5M*L9#) (VUUUl]fFqsqt-b~/PW ?k=e)M} HTLWIGƊN^]rzdvX$fYf&%w(obs󎿒ZjWi!$}4fx?[Ksii@UŠo0PTw4͛6lٳf͛6lm6lٳf͛6lٳf͘:z-IkIkk$hAݏ_̶ZdVdjq'oL󘿓vp5OK g9qONp~=p69c}{ioJ (+R=>ʦvjVW70z۲2GPaMחXl"{]^+`pH$a+r+Zw83@򧙒)F+A,@Q]Oj wzB.`G0ZaSi_tsy x1k{ 8ƻT :e͛6lٳf͛6lٳaf̺t사ϗߜי5mX[ms=X-/N6f82┩9gѮRwy5vjxgɿ jG$&K9PB 8MKRϖDmS IGfXuR'6.Ս}=^)Xk "LM0<ORU#} }O\qOs\#H o}n{m7JK;4brdD7ğd/|Gp\qL8NRzg CT{(f5 *G]5@>#\Ӽ{}srE枠,IS;o5OM&x + H[ 'fQP^T lOZ1QeZ1z|2uqdu.êB( @EC%r5x+rͣhFvX\pKUZ<Gzuo4n8 LTFn;Uuoɿ3ed5oFVK+Ҧi" _tOMV;6)TyWWZz~"`С?#~d󦍠ڴzҬ\i#<3zדj <\ @ 5V$/+Ew]YyP3D0%р€9svW0ycNr=5TG`6#]ʔY7V׷l~n͛6lٳf͛6llٳf͛6lٳf͛6l"vo/j0QW+,BM< ?yr;^QdZVIem #2J;g|=ѿ|ƺ"r#[WR͛6'1! S|^ۘ~ wܨ]yÞ-U]rS83п'c5տյO2yF Ai4P,esԊVIf͛6lٳf͛6lٳavv3箎.x`eTLN6YoSBǗ;o44ǩKdy]`ҳ72J*ai?yJ @&;7x`d1yPڮto'5h\g7̆gB-R >ɨVu3˟PQimm61lH҃V? Y2/x;gʘbo&IT s$Nj`Os~Oi>[Neojl хD@`HolYnʞY|l.ws TH97<v^-=BM[Xvv_-770wIvƱlW݈ hj>C\P)*tngf殯尺>9.+$G>Vjzo|?^Z,N2*9 (݀'A90O3Gw:FZ@f lj'ܲʓg-\Ԇu(67`}fb750|i~O#m9yc$ XY/, ,jyŪ7vPm/x=UE4V]Sy>6^ Cݬ2% DC=xw>pۻ)4!v^ЕeU`J^$cSzcK*G}WD{[{EnI3LܤUz(u_?~lt*xn,k94n!-' D`P~w?o=g]m:K+)d\ 9.VUSf / ]?M] N@yRB(E:e͛6lh_|'aw*"O]05|g>"L^oSsU#Wwv?QsroKPԠ$֙"ڧ]f͛6lٳf͛6lfƸT[u[h=\$R$"5yg1=-uXMj^)) W_4MEo^_Ԋn3f͛6lٲc=~$kMv]I4VN{Ed A:tV$ʪR$(nzu_l4MGz) AQڵ‹%~^s޵Ȯ[CBĖn(RNs'箙..5]^!,PK'o髱^ˈoe~\yhͨu $n<K:*m_z<2jzjQLmB9c2:d+^jXXYdp @`xe$0^۴#52(M:Fa+2b:}yiL֢IQnx* çJWm*{re|RA/*hQpgOҮ!i72ėsGOY*fӼo>lHGxFҴQ@+ޘCy.>*0D@@a>}5GIm5AU$+V~\E~:P 3:qew=;-RE7Nӯl7cߚcQu5^p>>cP8[KҖtx!J4PVM7ËkyRBlG9 n[ /Ih bw؎ضlٳf͛6lٳf͛?lٳf͛6lٳf͛6l }[_Zu1xH Gc^_6jHu҂ Whkz1 >-x_bm$yMR>Cz#@an?,*JXG[IInl#y&i9%r="9P6akv~g QrW4)20⁍syspf6H$kzb8ܳ DE2Ɉ]Ҧ_G篟==KݾK(Jn}GW(2KVΣo>i:Ž毬@֍F *Hp VNP#־KVD9̖]OFVv.Yu5cHbvu<׉ M@Muf͛6l~aZ[kv?QªPxމ @H 70u?~dCc40ŦY!iUʭ7V_YFOMڇ͛6lٳeoQz͛6lٳf4ִ˫GPRe %e=Tև>{jv_uP,}J񎆜@+QuMӼզFwt""!r:?Fv͛6lٳf͉vآ5rw'.^pEȝs@Ns<^aqs#3BTFz}yV J30p",FBRrv">} *[wI$+,f1OMsZ} _ɯ)oS׮}x^rI,I Yx$^o?$GڌE,hOGƟF7#㈚֦ /tVWv V#򍂪"TT*Ȁ){Si8X̌ #1;oA]7YeҼ PiSj֛Zm- EoࠡE@=pUc`v4s:\C,$UӠg#O+i6~bKIɊI1Ե89.XN廙aCN{ RCOHݖJUOkOzq/"z|gEoZ9RVhxpY>\-5_3iZG5 t[t2 )6RO3'Y8pgZǚt@/zcI d@)ŏ9pO/_#~UZU ^G G4 əEI;7t5Bfv((͛6lٱ^&"i"f! V=38t=.6PfbYYAŸVq!>E"*Zxlٳf͛6lٳf͛6lٱh{g|iw,r *Ugpڬ.Syl{kUү.eW."V`jO~%_5h죙%Y@^BSD0"އ`rpk͛6lٳeLcM)ㄷGy! MW+Ub-.sQhAۜl_ gWzʺ-%@`X*G.(d~yKCt]2"m؊'~DuRGWz@ (3fHq6G|IRT k$Dc*nb(DH´yr_v‹,]"gz]~]mo|csr5ҢeJeӟgvt6lٳf͛6y}2 x++E.ϘRZKX)I: ~*auskNt v0Flٳf͛6lـlٳf͛6b""j򦙮XMiyn̜&GRϟ^BȰZˡIkawAܲ%tӺ}Ӑ%Wo禓hpGzk;Ix[A"0Ф(VS}_Zդ~]yX=*(ӂKf&NLv}x{ӣt Ş0osG8.ѺЎ5RUe0?Je헔= i˯nE6ĤH MWZz}T1}ygouw- 3Jʑ lwy2O,Fge$W%C]M`$r(Mѱ݇G[M?Oΐ]CP"uop08VVh/:5= I5TS׮ l7|Os\ #Yx씍UGWPݶ?$k2K;Ux1!Yx#Vk>moip4K EdʤGΙ=գ1!w -+\yGmlf1,lj 7;P|uEL ʿNyp4#n8xTlƔ>Y|3:˩ $d R )P511;y-ϣ( Zv, j2~i//SvB+|}Iy7̱CjV";2Z`q$Е`?E:Ξx4k)vnECH0!Tqg>Wu;{kGq˜8<^ B;}&:)n~ՠ0^lٳf͛6l٩6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6lILMvO1uϤ+S&lnvFh`DE972hVOC+?U Pl+/A=2f͛6lٳf͛6lٳf͛S5#=y爸YjiJ\ZaťIH׿ȟ2ͩjqkv%(AnB+%{Δ➒7/.4:[Vcu}CL_iv}^cpUOCpCrSAִ BNӮͅޡqpP r11 I2kڧcݲ2o(Wٕ AQAZw~{c"g5ԯCޕ\ƾUqwmNEZxyO;]I۾@X1`YX}79;<-7>cՠ[Fi$Fĩg|=V,_]&VKqNU3[іYZ,?thY,JZ۔SFbo==, O5͛xbPrMv6ۿ|[ۛ%<11KEdzMXH-H!`'*l}EC{s˿Q-{DP2SԎF P_f+˓[4b+o^;FF%\!f9.(( G稿)/᷆WNn 93\O{9"jCyD±-I< o Ϯb%qR# z~x؍V4Ҟ1rMzS#>tҭìK(NVdzb,=BW 4_3h^aEoP,,'S. |6͛6lٳf͛?lٳf͛6lٳf͛6lٳ6lٳf͛6lٳf?2G zYԱE"nzޏ5@Pii2_ݡżBFPeԩ$ /?)fڭ1YH'^ =u#ߤӱPC5HѨ a Y R@dfDs$=w) Vf(hjH`^ó8Ua qѐVANT|䵜:cY+%[ 8_Bym힃_+oO'vbMOo 4;1ٕfs,x"KӠyqwߗ-lN̞W>Zw y0IUG 5,^G0X_ TMi>XW0Tݳ~o~ky{~WMx:4b934ɏ;=4ypE%4v~⡫$IƤTʨL~UOϢ^}i %rK#Cgѹz p''F`n$bf2MVEGeyf͛6lٳlٳf͛6lٳf͛6lٳnf͛6lٳf͛6P A;0Kq'q+|JI\'#OS=v֋s<" Z(ʀۚ;ACZ♳f͛6lٳf͛6lٳf͛6QPzmΑoq;9Z)6$ҝ)Ly^m[LlĞjȆP"W9W[hxf 6x%Ë\sQϐ.̿ޜ|_ +5SYh,^Kb^WK"!Y7yRݥMm-#{;EtiJÔ5⾡83y!+VlYj# yXLwt? "7ٮˁtn5#[  BV5[,0eU|eqܲ?knyW6u$kf.%$ÿ/NxqyɷL󖍫:}\F&PPGUï'>6vo!1iv=E=vO$x^;"Ė=_#EYmc&?A Io4؄&)B-JF)4+ڣ4ڣnq-cqԎ׼c$2aPk8?&$:Ӵ`^l@.ēF دN¼s!y&WN@vF܈z*u-+^kX%HLwTSȆ(v;7忘eE CV.E:վD@&GRhiQY;i!$E3*@i c¿s<׺_.A4R9Y#NĎ=HgruDX@ T>*:mV<K+DiZV:!t,|bI+HPH65z A}SG9aT>T í:=+ n'Ԛxc^/Tːޝk\_>_,YUX5;FFhB)ڿcf_h zf>}bV8MUx&\4?..D J β տPKs*0O=[Nri9, %>>AN4]R1ftHmRܷ_>5b{1Vn[(vlmk l5j;S8*Cuqelr$pcȐEYgu是k< C0=8n*Gt޵r)u {.jBߒ*+BMk#\ZM/-,mE=@,׿zZAŠ+whu-ȯvϢIK4hP)!p_A. cbY'G)*Vg? tcA3HiU$N߫=hMZ;bkZ;|QG6ћ̞O5ݵ9bKyOqSPPl#b?00b/צX Y.-b܆='jhܜ I;{į4YQlTנدC_|g7.4)\ivVuKx%ZXq@X3tq8$~^y]_1jIәnkx5Z?&d}%ϥVH!VpFǠ+^fLlB27#EEF̖0uk -t9u+ 4R GJgU3~>~U^Bn=NXhx\jtqk$3#~ u$oLsf͛6lٳlٳf͛6lٳf͛6lٽf͛6lٳf͛6lٳry}u+jzQ;Y$QA?ؑ9c,wrIZZmB8ꥊ3}j&98; f͛6lٳf͛6lEA`ӷNyf͛6lٳcB(:ms*,|rx)51QXSƈ2cRN mOlW6lO] نlD9EWo,XUt#8oG]E!YXnA"zg}V4 $2fOU+^"@TMs5_im [SZKqmէg?yo_zwO4Vu5EbAd% ;5:vȧ`Tx~!_>kk?痚Kina?7| xK>Z?ɽ $desZycϼAӛ6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳh\hfҦe*1f*|GLIZ : 4iT'&'u_k>HO/,CWWʥm^3f͛6lٲ*?e͛6lٳf͛6lٳf `/HonY??DE֐ap-XB\q*:M 9F(ZL)|yl =JfѬ‹KT(,Ï<~-2/*ZDnfT{3)e`)҇[O)TK (#b| ~q'}zv7̓mZu#Rd &[>E}GUX鶚@0B0GzΛgQ@ XWqkZ`B,d@kyr2D5_8XyQƌxSN;A̒O'ҵs$m"u%ʞ1#nâ:3yczY n$>{y,~-i~1Aj=UNTlϮFKд)m }.w nk SI ]$/I(ʌ!nvL+2X)'zϙ_<-OD$yN`Qv, ~CwSC|i'WTXdB+Zc#гf͚Lٲ v2lٳf͛6lٳf͛6lٳf͛6lٳ|f͛6l T@nxQ3:?*Cs cZ-$3IWzNծt8Amq9 K%LĐ ]Ӎ*Kk ܗSqCVp6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lo\+lEhk2+ukdj;"AH#l|in̬ٗ`l8,E)_ϮlByFGs+CHU%.!ѐ‡^ɺǘ7X-Hn'THU0>ѧ˗gv)tj-m< ȩ#S3Nҭ54cGx#Ks(2,1Ď @S_~}I0$1 )P{}6jp44 _s/2X k +|򅮟 %_=ɧ4҂ G?s4x%pC/./kN ٳf͛6llٳf͛6lٳf͛6lٳf͛6lٲwN,ٲT@•éoԴumӐ?qЙL=JF"#!84ڇ>|A#{kX$VG͚vWCU䔫nz0ϫeW8gZ]D zlzsf͛6lٳf͕Mɩv͛6QPH'zv͛6lٳf͛(( 2f͛6lٳf͛6lٳf͔+MrfƸߘTwvWޙa,lo@q5?64 WT<{ե,ar9|jeEs~n!Kvz6 L /)f(PVEP~?UYKW>atksY(yCN巩w#e` MeW㰥 +u J<9Q-q*ŬβA(0j6n['dq;E%opLv\.g{;b5ÃpR(hP ͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf,T3\A44@'0w=/6l\Jg3󶆷"27"RY@=s/Oϗ!=͛6lٳf͛6lٳf͛6lٳf͛lѯ7ZM{W.U͛7lٲ;+1q!Rϛw/2tt rv1jU˽3"ouNY4))&9 g ʉ)E|+G2CK,X{~^e6\n5+^ %*,P|T0 Jз>/>yv{{"(FZ^5WpV#TBwZ]\A+O~bKHr5{˗.,rK Q1V,deŗoՆ2܂̴]P֛tp̸|˫qZkm-^6^EeB)-n6nf3f5@>/6lٳfޞ6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳ`;]0n?쮏/7B,85Ey0~S.Ko[K\ۘ.}CitB5^>-@s6k4q%@npRP5(wo;=.e(Ӝ9 84ϟ_>SǘM [cNj)'LJqo=O8A* |+,XVMd4e34[YTaOmmO6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6jnf<ke=IV3_aԠnan"ƦN2N"WSȏoutɯbm!LVeeU_:uWVqOsGPE*U 836lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l؅J]B)2;y4˨U(ѾlQ4Uޭ'o\4X d($I$He xӌONih:/4MAl#y4gT@FaVaY?_2jw=ֳmJb ò6[5ɏ'?05͚ߕ&q<.oRBc8/RIӭ4Hmm㌨Pjے }\ٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6ln7/6lLw$u1ȡӚ0hzWw-^>oP+Y2׃nϜ֥w-#M;4^5$Őw|go/^X k$gCJ[n|;6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lZlh~yѮ" v;L!򿘢ѴXPӿX:]VW9Ks`+#yYԠ֍XnI$OWg~כm/|ww:,6!~Cb+`QKhK%U hm8-@<HMV{cf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛6lُ6S T@yB?5;͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf́o-"F^R;瘿%?--<˩45}Y*=D}w* zgͽCE< RmoֳC̟\"PA%>.-SpW+N?6m<ȟZ8eQS\U5ƃn߆-6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6!v4#<9;g\hѸ^qIo QU!Oܨ8\AMޣZs\KVeHۏd2JQ@c~;r9K e*kRFæ B~yf͛6lٳflٳf͛6lٳf sf͛6lٳf͛6lٳf͛6lٳyFTԊ_PBއΟF5}<(D!pPʵ_Ǐl6o{MG%(3 ʨV/B#zzCH*%@A`OR*ilf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͉M^4j$umGIvVV p) jFE4ȋ{)4;vOGd ?#Oz3TSJ*+5͛6lٳf͛6 Rf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛1獑z0sgy6\Pb(8G%w3Ǟ<{/9_K,mgv.-#!H8FfJrZV罿12~i 욌n\F1 9⦄g#^HzAJ@=ql߫6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛!K( n~dg4,ͨjz2kpBѷ]iB6پ* g(rkbko ͣ_Kr.mx` cyuΗ֊og .<؀RMZRץ~gR(nUIXzq v-;l2Ď\FPf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lL*3mhj_ԭ%XbS#HѶu7> =xp_g#-CEt[yR5wPMJ1E}-ȾyxבFXdZ$.>\}H$>f͛6lٳf͛lٳf͛6lٳf͛6lٳf͛6lٳf͛6lEv9椳Ajv|"ԁxQP~xJ_2Inoo/0"K<>43Xf2e #/% jf_l"ө I)m:퉫Jѫcr'Pہ8l"A͛6lٳflٳf͛6lٳf͛6lٳf͛6lىlٽ,Qx{i41I_S`;i:0/^icGFChg|i@ԟXwo6Mw֓4a.?gՋ>s sŹEi>ʲi6lٱ qO,}lMr?ˀjTlq>s#.Nȑ4i0cN l\Wv\ZAi ͹ԧ@5swq8\7>†A_?. '?Wjshzciw.,IHf͛ ( kUMoNot۔ibO8|DsZD}@]2zv~8֤Չ.V|)wJSYCª$hֈ9TVtC yf͛"V-=Ƕso?6jz66Q;Pq;k0#=I4["h4BHj%-.´Y#@LHXHMjMa]h^?N&Hcx_ҭIŬ3I942-:s?ikyi>R-pZk/i'1\7 X zwY' #~QHWЩ;F-Ǘ[[3Zǖ/Wٻ#iTV;Lsk˾HC Vf,;uf.Ř,shUv?6jDJcmvѵ"bYR5^#㗙$6HjjIM:e͛YH}I﷏l?:DzMϤْN*ؑQc:0Z&{j:|;5HY/JHPxy8eJ4ӽ6$ A7>"oΟ#Il(z0Vl@PQ|yx-QYX+B_z*|\j768^M.R<~`Zǭ[yoӔ\7+JK#*I*/Fm?31X SYZOnF;E進"ns5 v1BI E-,C*]רspzƍCas$-_ Ymy@P3&瞿#,aFӼ^&S0I! Nծ8kqI#֬e)DGѕC0S_OjW~`ٺl:f͛6lٳf͟lٳf͈em5B@I!Ehܓds6fP1 pD"t<9-MET;iF+9PhHlzJ5}1Njh]Tc@zWnybraxhVC--"@Kr~8sﵽ#Nױ@9AE"@ #Ʋ Ȥ\ź-*GŸ&Ҵ{sqnj8T ј?5㜳s$Ԓf(?XT ٝu*G.qO2^y=B.OZͩXpT[2A74 $C+G[x~9U|kJ~rM>գAvA+,x$\?3<ɣVގLeU+rzABXu 8o1644-F^\UX2mCYf͛6lٳf͛6lٳf͛6lٳf͛6lٱ׉zo2Vq^JbPUBTQO2ϮZo n>y}a =/MeK<˧yxg-#g9b*coN@/ݰV~fFiMgT"#{b$rb]$6z7Ή]_[jiP\qӵ+(`dXzeKN$rXU:?8=}˚%PI__]8f+{^K^Rw&8?.X_iuյڅ cG> 2CO7 ևsiqEw^f{dHL$M٨1+yyVD[46YT@* !D7٧?hZ_|c}e@֦!#77&zœt[ 6NEkƛ*,i@:\r e͛6lٳf͔6=뗛6Q嗅:ȰgD *|sUVlQ3x(V$ni<>j6yvkV7VWsG BR/QJE$7JUeϠ?@| 6)"r\KvOMI/<ٳf͛6lٳf͛6lٳf͛6lٳf͛6lBX oNTe|Hyf$$v5v8%8٣~aG-<43H]D`%%t]CU)n{~[6lٳf͛6lٳlٳf͛6W^Tp֙ms [#/iI/ҷMΣ齹iRKC{qZu=(Vk fQչ!~dv&q'L=6[ZYs,Imt0y"Ç/]* ʥQq/(3TOVVԒ4:Gqr9TTqFX}K:wme=䶳Z=NܧIତpA8<ߝNՒ cO"R{{!_ܳH12FZ9;qf-_qw[Ե!-/! 93+ӗv8Uaɩ4(GqdJeQ@k@lyGDq^MhMlU "2ԯ"n{4LAvѪ At@8)&&$Ӡc+Jw嗛6lٳf͛6lٳf͛$a+˶ڕڔT@RETқg̿2_7㽁!hщA!u@nǠ-QR琴E 4YexU tcG|o o?66OMs?0ɥۙ,^4JAï-{V5".i^(nvO4qs]8))/*imkmsBUai̮~QjΦ(2bR޻_6M-<Ði^8C 7ZM d[yEπGn'}Y:S>` ֵx4Vi¤QI J+?- CM Y@29 (xjJ;ފn-g8IbvH#$_to&hz%kpԍ}ɟ_VZSY/ݧ5(^\ۛ|z_g%}`[{kmkt.c  $</OԵOm[KҤҐ/t!B2Z7_z?Şط c*sf͛6lٳf͛6lٳf͛6lٳf͛6lٳf&_3zAOxrg~Ϳ`]\s[xUArŘ}/yr6u*J7w\U7,Q"܋WÞP;e͛6lٳf͛6lٳf͛6lٳ6l6Pܼٳf͛6lٳf͛6lٳf͛6lٰ j"g'?h tvxr ,AkRsBdY$`HVZ8qomڧŎwOo{Ŧh0eRW v]۶CWyFT,TVrmc[Ч7j^2qrP|+g<ѩ~iiK-^-Q/!Ns2%UOOG{kiEgeYJc UP5y8!+}.E:8RZY[G<ʂX:LE@:+/4-MЬ"c#E@6P͛6QC؝ ٳf͛6lٳf͛6lٳf͛6lٳfʯZ2k;QTQi|o+yϾbn/u95ԵAoYRdT }{7qJЬߢ Auu4ӺHұ <گ|f͛6lٳf͛?lٳf͛Ě5}Olva6lFٳf͛6lٳf͛6lٳf͛6lqZS(@;ӱlٰ%oJo9MWG .MYm N<-+*!^*8VV(?JE90E ">K',{c0)񪏀llۼdUXn;9aM3z23QH'r̿'j7̆[+Vpr^n,d_ bߞߚ^aCҤ|-ȶH^v%zt _,Sz5O-K{,&b9{iWdAVn 8s>YއGd߳C=Dn ~'/9{[;k;xmcXPĀUQA@1|ٲ޿Flٳf͛6lٳf͛6lٳf͛6lٳf͛L$`7 ȯ/L9#5#jgz-Kvxp[/)d@ }?VgNV_ en|Pq|Ysf͛6lٳf͛6lٳf͛6lٳf͛6lٳALٳf͛6Uw6͛6lٳf͛6l]^l-ԏUT=A&M4mBYOUm QљžJ9li?"<޾k kˍ.VU^Vzp=P͟@4kFfaPG\c5+20JTk׮yϟ^ot{1cdR[?v}Kf- 7q;?S6y$Cs c(݌;ߕ?,;=KP$\ZF&wvsQɾS/*nE;m/6lf͛6lٳf͛6lٳf͛6lٳf͛6lȌBdڴW'piJW8כFAk"IS3(T4'sAhqCa$ab8k6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͔EAcCٳf͛6lٳf͛0|ٳfͅ:B䨪ҝΙHVxOkk3YGfdc54*poڎ '*spH(K%X,1Uمv3^ 8QI|ɧfZMȡ1! c͛6lٍhi]f^f͛6lٳf͛6lٳf͛6lٳf͛uϰK+miqb-nu9"vH* L$nkEEe⸿KM~ pZVF(cup΍z|["^$`eoR+[ Q?A8Ьm _ttȊ¬G}O./q6'}oCjIHX]\ զxrELo,wuѳVABHOcZ$mloWO[Y 7(tbqP;3$*;>0r+.ŧ}QH3ycŽCD^TnY°]Yf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳe *zxw̚*9 +Rxlon~aM9;- 缵KOY WYuxW#[U)_Cd4T%QR+ eerf͛6lٳf͛6llٳf͛6STJ(Rzٳf͛6P,=N}OG( r@5#k3ͥeD=9q r 0CB=5E75?p^AP8veiS}9yJUQEQvyf͛6lٳf逵ĵi3ߟ^di+m}%K=qᇅ9qzP>.[md.rvm>9iѦy]YA%.kE!uK9oknu].KM&Gܾ'% DD}؅Ə.u.V;N9Umڿ #3ch,^;#C#Uf-QS8Ρ:C>qy%[X1[F!rYՂcćr3~a[Ϩok7(G> yU+go?*YyU[:JƀD-.dԐg_m/6lD@M {͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l@ ʟ /h7߸Ya߼}|G<~a\6N!H4ۗBR!f,'WV9G򽞏m$ENK Y*m2s6lٳf͛6lٳflٳf͛6lֻmXlٳf͛6l=^lٳf͛6lٳf͛62J;[xh⾐Qk^w#?!ϥ5cls1 eڌG/ho4\,2PN!+spYsgLVelMjqe5ˍ M[+gF%T:-8+GZugG4bYm^:\Hr .Kƿ/LZ:U\=n$\W6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf4hHPyBbђ !rftFETS|?g_1h: i,ANz:,ap33&nIFo涸mnP/% )U"@# I\ߙ^^Օ徘j0ϏÞѢ I R/F:nf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳcHIPhhhpX>5A ר\6ln?FZ]oxu'dˁ\4v.Vt"J,<3a拸-} ji#2d)+*K6exգ~V*@ *QB@=^lٳf͛6lٳf͛6lٱkV-SQZl<f͛6lٳf͛6lٳf́FZT|gu]!xi*Q 4Jg;{~Qoku5weI5hcr_MJ,i{!.tkmz9%R:/ Xjjڶ_Ia"F%¡Kđv,E*$JF'^lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳt6ld,kɶ6 Eԍ~U ~vMNiWjZW&O8VF3UhCR0O4{(Vf[Ybs!XUЕΝ6_委"`I% )y$.4ާ<͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳeq+֛ue͛6lَlٳf͕.#e͛6PMN݆]Ei6- BzN>fbv̩/$JA,mpCc~/%c '4XD! q"jKkPf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l´߯|َw(o`4t/Z(RšK1[}NB~g<=k|d,bK&a [R7*$VdN¿koA?hZ֩5 [H䶉 (P*MG} -7}f͛6lٳf͛6lٳflٳf͛6lٳf͛6llٳf͛6lٳf36lٳf͛6Uw ;n~9xfB$Qzoyr+^Y[XQuGӉe}Aw ts/S}gjrM2EcUܫV|^cGOrUt&GX"k(}i}Gh"USJ?:sx#ЯeMYq1VhF* #scG5Z(‡ZӅ5L?jKJNnaTk/B)\rʃ?@}-խsbҘ")haXU][3ycn(Y/'&^^*#k/5W3*w u=\sxjGW?dgDQZflٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6nzQZw͛6lٳf͛tgW AR~ JZ]/M{v0PU'aRߥFrs[9J빖@+-:")pPy3gOtdF0e|p`nA˨W?/6lٳf͛6lٳf͛6lٳf͛6l.:t;Jgѯ5}:Յ+[+2 ~5O" hׯnu]1{kVi=ԥa"Kb`],z-8}OT(" ˑnZa Zw VP…*hv5}W̫kΠrXFyLw+\?sf8]C O"8w-z&o3y5/'qMOqu5ȽFI y\NݫTs󍿗Əi$u1 K!%aUPߟӞbEJTf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l<ٳf͚f͛6lٳf͛6l6͌hVTZt^'sZ4e4|~M_Ҥ4FU`ww|;WWm.jWc&Bx P+ɩ̼yrk3Ap &Y7H-]C Y?[,ky&jϕ`Ѥ1 f4;s}ҟzT~h>dӵ2;>/!,$ b S$ te:<-"zmf͛6lٳf͛6lٳf͛6lٱ "b@ 怚 gDiͼwwH x$e$u y}oOgͧR*:jQ_2GqusXaYaV1Y8 Q\8|9 }c]ڽD TUHJQ?4fӣT}ѿ4.WVӈUn"tVtP%JROXD -hǢqdK?r<{sKXAp5 ;+ǣr9nm|m`it V{eBR\T$Iķ*dGض,TwJkbZ;(E#/"~̋+r9ZfΡf{.DVR %+]?<u-|=ǔ)Y b:>(Dnۏo%~TϥA{qFj@+JզLsf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6l^}f͛6l ͛6lٳfk6n+ZxVKiVqIpjPs1^ky-P)Wƪ79:VAV?+X[]+X11yߔ*u.ijhд;Եb%[eWA#xMB;5ʸ4-2b M>Le4Cһȑg)9γkekoޔPQWyOaQZr>ʞ١aZkbZ}ݑ A G$ fUw^Rٳf͛6lٳf͛6lٳf͍f@"(Z)dFI9S ?,RRe +COՋ#@î ׍#_7/7IsE 2KGSAJS+J?̿[KXy-"iFV">FsZFQ^C5<׿Et0N-QL3nɘq=8ǰ>VmmcKQu@b]=Όޙ&Mjv{:;#' " Jn;S0^lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛V?vCp'Z$Ƌޯ|aATԊ׏%V[Zд#{ H-_ '4BGay˚V:L"[=YęI >r?ѻGV~x[;N~wFR8zH96 E~SyXA r5RI31O qC` hNb"XI+C*TWe,wf͛6lٳf͛6lٳf'pDVz6$oӏ^9oycOϗ" +$`B,GӸl~fyr8O֡K+ <~dwH̵'O $VWa@)Wj܊ᴫꢘNyilWcn|2#/)Az,f :y͋s=@G ڑї1^<_זZZXm"+OBkq2(b±G%s_wE<l՞ܘJGzH޼DD#aJ._b/Xz-&Z`ZZJ3 $^CzVzr {tŮmAdW`fB֜v?vi͝3N '#%I`{/ z)qa"F\vlٳf͛6lٳf͛6lc:ݼ~k6$--XݪAڙ_,ku9ե섄ʿ+ˮxkMXԖOnlU9 eדF(rt 󡼙f@Lp\xs> ~Tdh WG\ nZ0YC|]~ޑvB@P P~eumT{MoUxo1yzE\W8KԷZt+{ZT"HGi ,G_`<Ѣya6\O nѷ5T6(I$w$[]j=5̯2$ kjؚG͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳfzm+zv͛6lٳf͛6lE BƃҿaٙT&xI ٤]i^9]vYip;W>4In\bYU(?k tRҩ3Kn H 13u>d7-G)e`!1%$Y'1x]WۍE4doi$qT~ h=}'SzvuSzt&mꪂVFe\yOSǯ:jbY8>i,Gm~VZ\d; lh9/UxPW|<04,Aޡ4x˱+QP>O$f .FchLG+;Q#?*O˶^n4(#Gu!Q$nHW}J-7˟ c,GּYgr= uqjUd+?Zshz !c4լO`߳_q8IyXwny VƁ^r^Nm8X]?Rb=@Lnn9-?.9 G喍i3Z~f+,Q΀ TH栟|~l*,-{K_U~+PZg<[`,[.%gW kҩZ[)msyHt[\$Ym0gY'=~Id9sXV&0MyʲfwvQM&.CBC`-SM7̶^mUSԑ* \-X#G!$`ˮ?)tx|qo% ]Yyq\$WtҭẂ iEAlԮWa9%{d͞hqqqor|U 4C.8ӮmeXƗ0<Vd˷: Z%%GĻ#S9?)s/5~d]ѠդnE4d >b<>{歯o57maXġM/[1j~aV3]VRax5oMCO+8cey~KighR)෿I.$eoq&.<N9<}k&}gTL-*jvP4њDxdX#ckz_:VgۤDu!V??%h:lAlR܈Ӫ,A=KDZ0l ܝAJӶqXЀx -N4olX"Z|q)-Ħv#7al<@p .EBjjWž=֯ i5zo<^jvWHD XK(,#dyVg_@jCӴw߃N*rz?o4|~|1%޽cMi}4YL2 +rl0_VĤH ѲD P s9Phw:[<']4pMpmR$vfhAa:$?1y3]Er$X"ve;I)$qNϧ~J~^Dj~\k/~\)"cV,~CiiiolifkxR$j޸w5^EaC将P0~\h~aE}F9戣+*`_Kd kDx1{y{HoD)X""UfѽCLlu,jדV7u 0O˸嫘 NF{^2Xe/𪪺[TGůݾc<SzsԚ{[*W+*ɹ:%&s~_5Wķo/KJkB@ʹɏ⮹hZ|Ha$&1օ oQBN&=冡s+.,  >c"T7G lX0{Km.l~v2[JK 1jGV+oƋm]b7cEE#0ⱵÐBv90?gm˩iVah"sC4QGn8rDhQ ^-ē] >VHs?j'<-ڪY Hx#Fڊ̿#KHq,`l{( mo67^RlٲXP>e͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛)fyf͛6lٳfͅ:͐VVnxwqQ֏4)[qi핓^?NJ5*)򦱦ߦ$]6eųCq?kNuӍ>`{<5idyHI&hqCSxRO!6Ǧ:.%K 4Pܵ}@cU z\ h[s>-m8t뚶x} KOMi;E< oxpM#@cgCek˗oĵ -hvaMLٳf͕@w#!!TPiW*=Xqե7f̓* j *+X*GlgcN^86%6Qڃ,ĥH¸ȠE>'Z1|ٳf͛$FBJj+AX@QZ 5?yƲz?{H(>^Ieoheaf͛6lٳf͛1Oq6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6WJ͛6lٳf͛65i#\SŔMA2(Msi3DLmJ uB_UVҵMhwmR d*ȡI+!X4,$yWrk"7:!E+f͛6lٳf͍j҄~]P2ڝ;Ʊ/$;:>ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛5\ 2f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l]k6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6l6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lDW0͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛7zf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳe1`* Vyf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6jһ͛6l`VTTwq+A^6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6W,͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lAٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͕SR(h5چf͛6lٳf͛6lDW0`ze͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛(Oi)Y=/,X*F212[ ʣ, EGSE52Y}9vzRjlTI.z^·Ɇ'4z~57IGlךv+YI%= KZz;A?W3<r-mmJ-nAtF.]oǴfS*%;I acYkhǥP:oXQ?TTclv6I$RI$I%?TI%)$IJX{wIͫuW[jnu`Ļ)o&̮Ԭ.21[uwL QC?M>W)%4DE~V!FEo{ۍevQcu zJՏaaab׍MxV UKCXmkC96'Nn&bvT -nn.^+n_XIJI%W;ޝ[mTV }6O;Zlsw9%630pv>mUi?Eߜ:M.vkX=ps\%A))zԌ| 8tf: YcCG7L@+n˿RqkF-]70:}Aul6V_ʃY^}?N?Hu]{5sn{q%!X9ϥxWMMz+IOFȧ)ṫӏYy2d9߹FU筤I%)$IOTI%)$INo/ɤe pj"}LENn:'M+c`o7>mǛ-w2/tv}6>zw@4~}ݿmwpnngٟKIJI$Sg0zCΫ7zvK#9gܛ˓tϪ=wQ|3ϭsY6̪>]s*e|k_>IM||깯ָk,u No۷Tkux[ELc]yX}Y~MnwQ/XZ?gȁx.ܭeŀ_o$ع4ӗ1<V ];N=7@ak'sVoԋOΗfSq71kt~5GdXi{wR_sjmf]U,^)VjT"ZuV6'{X{}/mV2~>ONȸdtb:=Vnú׿ڛ˖_@̷oDsl}\Zǟ:EՓ^ŏ)~mu;n tz};#/?9޾J}$IJI$STBf.56YCcu$0oIN'_ z?Ku1wmml c[l ߗN=6[]+hloq25"SlOPv:29͢9oWwZ\0sulI75XEތ~w;}GnVp鱞[TF\}_Djmm,[Ygaћd˪qKr:JRI$ֶңN/u.ѓv[wMt]#>kA(oa#J[kӾu:^Pū*mhtV~JGOTů%Fc`]>[g*:/]C[N5nk5f5X5! Kl:4}'Yš2+k1d5)0:^?^&_~qmO8k/S'ƪ{)=?Ҧwu.IW`e3ܭVܼbXuv۷[-z'ռ,^~wRuvuv?gm/6k:OS|,\2ʫjs}>u.Ϥt:NxTY]e-Կ&β>񙍅K1C*mhp?yz [_W`7 qk:o:GD$?\n3<(s^Uc;e ZKH I$UO`ҳ:{lM6>=BߠrJx}Z~̦-wO$[wo}eڮ7;^OBn%y^n}v9_&:McElu`䘗g6͟?)w:~s]˱`f_~wou?/Pr)}kK,9i{s\'OYW^E{7Ukhn wn-5Իѻ )4 >]>]3*/6_2f6V׾ݕMFnu6ڞ%04$i$JRI$\^W wdj##%fŦ[}:oq-yNpj?Ȓ>57ߑ)b_UDj,vm3c=,)µ_lv#Eusv~OӬg72ťoM|Rۓoя]?lyo^]cA +uzk3s:gWƦ_ӌcߡk?ui)uUMtW1Ziήگs^>wA\l?g{:u~-3+*AVYMvXNEN}mg̷mgֶKF.=66)i}2WXqlQCEYNkd(iu))TTXekꪪm߸$nN/ݘ`[?>VE]Kp?71.2X-#nߡ)g?:מFFfQf(ʨqhg㹬m+m>qq~6ULF*psrJfeF8z`n/mroB9YmV]a%ձ0XR=ݯXϪ_(qT[?_lEWt~o>Ι96fHgw}?ZJzW[8ms\$tY!}+#;RGlkcѫcFfC;ںbʥZx[[ײZӷzx}rc8ße>>r_\٫s:?U{]k=bz}m]tz`9sow*'93"ʬc7Xw}ϥUD>5>riUޯsvZ6Ms5?­4>պI~f}Kj}Jhaz`gH]3u\o{oO{˪\=AU/mwR̦ѨUG[ʳ^eOh8hY!{>c}OoQK*]BJy^A,[[c}Q-}m l ;zo.$I%?U'YǦŹXׇ֫fwWekE$C}cmc#.xmV̫\kƶ}]F꘽S I cw}rkN^>o S>36ٳ 3}]U*ʤ.: GK}aae%fQ+THkKC=s?CgEl7"enJǻw*{*GOQy Ŧ2H}I3:f?.$uέM#wYcڬzƳ%}ϭ{7tnf~6]@e5YOe6bcكcv%Qڿ;Sz޻Qw` OPϬSYoܖiW+zz/C59hç6d5ӎo.kOd1c'9^ݵtg]h6]{__c~(Do݇[g.ʹ=V]*M>u3ma d乧k>3W>t.aC6h6@ )@ htIJI$RI$TI%)$IO; zmv-0q$[qSE?Vz|?e5/{ ls.õή\+IVEݹck}Tִ}cuʛCeUQ{7wuS%5S賩`Up(mH[7eU y@8 S݁ q|r+ױ:F}w7#+}mnjT {W*g޷H2 \>}v7))0:?O͸52nw:W59n.Ty7euOi)Y=/,X*F212[ ʣ, EGSE52Y}9vzRjlTI.z^·Ɇ'4z~57IGlךv+YI%= KZz;A?W3<r-mmJ-nAtF.]oǴfS*%;I acYkhǥP:oXQ?TTclv6I$RI$I%?TI%)$IJX{wIͫuW[jnu`Ļ)o&̮Ԭ.21[uwL QC?M>W)%4DE~V!FEo{ۍevQcu zJՏaaab׍MxV UKCXmkC96'Nn&bvT -nn.^+n_XIJI%W;ޝ[mTV }6O;Zlsw9%630pv>mUi?Eߜ:M.vkX=ps\%A))zԌ| 8tf: YcCG7L@+n˿RqkF-]70:}Aul6V_ʃY^}?N?Hu]{5sn{q%!X9ϥxWMMz+IOFȧ)ṫӏYy2d9߹FU筤I%)$IOTI%)$INo/ɤe pj"}LENn:'M+c`o7>mǛ-w2/tv}6>zw@4~}ݿmwpnngٟKIJI$Sg0zCΫ7zvK#9gܛ˓tϪ=wQ|3ϭsY6̪>]s*e|k_>IM||깯ָk,u No۷Tkux[ELc]yX}Y~MnwQ/XZ?gȁx.ܭeŀ_o$ع4ӗ1<V ];N=7@ak'sVoԋOΗfSq71kt~5GdXi{wR_sjmf]U,^)VjT"ZuV6'{X{}/mV2~>ONȸdtb:=Vnú׿ڛ˖_@̷oDsl}\Zǟ:EՓ^ŏ)~mu;n tz};#/?9޾J}$IJI$STBf.56YCcu$0oIN'_ z?Ku1wmml c[l ߗN=6[]+hloq25"SlOPv:29͢9oWwZ\0sulI75XEތ~w;}GnVp鱞[TF\}_Djmm,[Ygaћd˪qKr:JRI$ֶңN/u.ѓv[wMt]#>kA(oa#J[kӾu:^Pū*mhtV~JGOTů%Fc`]>[g*:/]C[N5nk5f5X5! Kl:4}'Yš2+k1d5)0:^?^&_~qmO8k/S'ƪ{)=?Ҧwu.IW`e3ܭVܼbXuv۷[-z'ռ,^~wRuvuv?gm/6k:OS|,\2ʫjs}>u.Ϥt:NxTY]e-Կ&β>񙍅K1C*mhp?yz [_W`7 qk:o:GD$?\n3<(s^Uc;e ZKH I$UO`ҳ:{lM6>=BߠrJx}Z~̦-wO$[wo}eڮ7;^OBn%y^n}v9_&:McElu`䘗g6͟?)w:~s]˱`f_~wou?/Pr)}kK,9i{s\'OYW^E{7Ukhn wn-5Իѻ )4 >]>]3*/6_2f6V׾ݕMFnu6ڞ%04$i$JRI$\^W wdj##%fŦ[}:oq-yNpj?Ȓ>57ߑ)b_UDj,vm3c=,)µ_lv#Eusv~OӬg72ťoM|Rۓoя]?lyo^]cA +uzk3s:gWƦ_ӌcߡk?ui)uUMtW1Ziήگs^>wA\l?g{:u~-3+*AVYMvXNEN}mg̷mgֶKF.=66)i}2WXqlQCEYNkd(iu))TTXekꪪm߸$nN/ݘ`[?>VE]Kp?71.2X-#nߡ)g?:מFFfQf(ʨqhg㹬m+m>qq~6ULF*psrJfeF8z`n/mroB9YmV]a%ձ0XR=ݯXϪ_(qT[?_lEWt~o>Ι96fHgw}?ZJzW[8ms\$tY!}+#;RGlkcѫcFfC;ںbʥZx[[ײZӷzx}rc8ße>>r_\٫s:?U{]k=bz}m]tz`9sow*'93"ʬc7Xw}ϥUD>5>riUޯsvZ6Ms5?­4>պI~f}Kj}Jhaz`gH]3u\o{oO{˪\=AU/mwR̦ѨUG[ʳ^eOh8hY!{>c}OoQK*]BJy^A,[[c}Q-}m l ;zo.$I%?U'YǦŹXׇ֫fwWekE$C}cmc#.xmV̫\kƶ}]F꘽S I cw}rkN^>o S>36ٳ 3}]U*ʤ.: GK}aae%fQ+THkKC=s?CgEl7"enJǻw*{*GOQy Ŧ2H}I3:f?.$uέM#wYcڬzƳ%}ϭ{7tnf~6]@e5YOe6bcكcv%Qڿ;Sz޻Qw` OPϬSYoܖiW+zz/C59hç6d5ӎo.kOd1c'9^ݵtg]h6]{__c~(Do݇[g.ʹ=V]*M>u3ma d乧k>3W>t.aC6h6@ )@ htIJI$RI$TI%)$IO; zmv-0q$[qSE?Vz|?e5/{ ls.õή\+IVEݹck}Tִ}cuʛCeUQ{7wuS%5S賩`Up(mH[7eU y@8 S݁ q|r+ױ:F}w7#+}mnjT {W*g޷H2 \>}v7))0:?O͸52nw:W59n.Ty7eu ICC_PROFILEADBEprtrGRAYXYZ acspAPPLnone-ADBEcprt2descgwtpt\bkptpkTRC textCopyright 1999 Adobe Systems Incorporateddesc Dot Gain 20%XYZ -XYZ curv 0@PaDuRY9.9W" a A )   ,Ee$W2xov'D !q"."#$p%4%&'(U)")*+,e-:../01}2\3=4556789:~;m<^=Q>E?;@3A,B&C"D EF G#H'I-J4K#LW5qZd3Cz1$2CLaN,ZI'Ț #P>33qeSG52w/\ٳf͛6UqD^\hҹe!OSz +ރyJ㸿f`z#!EX3~!k_Sް7LA%©Tr?'K!ė75!#i\ro 比.5![jܤBgA*r1qH8  iOokvRA"\ ܘS!%aBԣ35CSw~{y w:\D Ew篒1p^Io$1D#wjȦ;/ͯ.P֓}ճHaY!\sr7Z%W¼ZB,l>GjpE憃avEƽTuSמt88棵/;YI (mB>5fyNQXyI"J oasz Gkr(*|ZI2׊w.y_lOmQn-{^K{NDnK~Jāߓs-]\~u]q|Dt?DU`ƅK'%Gyf˵+yMF-^FNcwW~4 'eXχł,YG7Mk-a3\Y:G sf<^BP|)P7E wFVC}Nxb,4jېM~.]s*̳igiZ̍h `U@ըi-ah~d/⹲!*KJoS&VΤۥOn;cݚlD*zf8־UDDMĹ_酗jkBE~Ƽ95/C{ %s@>%QH2UW$ NH5 DpԊ8`d(9mVs2QX_h_6Db_^8y!+r d7QAtǟ\淝uYZ Wӝty"~O@"4?*ǡ%3w4RXKvwJai΁yͭTTh$lXHATI#<@o9gu«_?Ϊ,ZαLU1a*8BuX` }%4nB|UR4/vOyb/K#I-$zSպ#tn}3[U&efqfv* |q9;Zy\i784AcVv]8*<0h"+1G5-wC5z+f$";p;Zg_4݁;V,HEhxxó,ԌNyUT`V@j[m+tmEGb VnD!AyJw-~aaz`O$."Ycy^0neI#Zru995?֚d[XE} $$5j(e@~z5۩ :dR yi09Ovٱ)Xw&$1\L8K! ۧŇ?Nk˪p76lE%k$n5_'[Zԍc"q3YzJ uupI)$^>*-Oõ)S7ιb!bY\yV/K^*K#^XO1̥aPA̿uhYѵ٤A+sGI8GJXTPf WpNZZ5'h"7 b1!/R\RݰX"yooW6ߒH,@ ݟe \k}M"jq[X[ӳY{ t.bh.8pB [va ¶N])̞.p^_?!՟Dxyz)FP'b\3ƟsǤ-Η*Hp2,1$@x럓?KZ.}jsȒk2:Kn2 GjUL^+[  "KNjHz3/pzOخNQ#}?Y=AW+zdfݒ9αq귺˧m^9,F5IɩSϗ|zv4)a7-jȀxnym ud559v7na8y Ep_ύ5֮|vB9 jWŃ~;(u//]JJ,RZ9ʼ*zĞ:ߒ;imkI!ZȤH=w~[I{ײ)72 KeT 4J!y/omsKze=GFM_+9+P wڵ$u^CiP+a~x`=i=N|9Q{{tmcTYsl+#(YT*Qǂum=45m3BK+oѸ0MϞ wK֧iR ^mCPh^fC8bG#{)uj4ޅugWTNβ1P\RÖ笒.᳡yOqq楸WpA!':>8MV'{vePU2ށf+*|8ævPLKn'D/$8V;Og嗗b%=0A ={.4q$UND3 ~xcTP@z[Fj \gY:eHVPlz"PT>?w/ЍVӠ?,j I߯ldaB֠S8cdtdK޴PSi4T0߈s|HhpR8) ^:TeͬhQ5x W.7:E'xc`C (WB]"PAVxRkCNBs?10y6ytgg.tNfi uZѻ*/qVζgLq-Ռ"3@,Sף+鵎֟f(r ޫ6jvz'#{Kۙ~Rxa*S$"Z3iD$L Yx?'9wdDdˁ4K:NXyzkLinΞ\lͿ/5Udmlmӭ&b-CnHKB6,~Ҽ-&Z^\]y/4y J2{3}]Gun֬4'dc!Mr=)}+\hnb,2,Pыs&nʤ8`ISVx^UZ5TX`EF.vicbp=pd5=*z 4Nm>swY-Z7ֆ^ `|@ͺ X.yI{ 2i!1b=6vfJ:9>j.hBoôp~:B$'e;qW57A _inʦ2,f仏y?= γAkdIӍ\J_ԊjUH SG*M͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٲX\׍H 29GD@PmJ N~S:|#nv>zemzm!(ߡ;x(]\&6ʃӨn ӒT;GWtnQM=^˶[_X$WU, "DAVǗOb?q:iHdMDt2a?zZzcC5(d쾰n.8hfbj*,9%BkZKdj#sKPUz9x~yοqVWb}RՒBi%RTXґ}uy^z̗f3 LU 6/,?~|{m"[٣,͂Ɯ!UA$ſmVmu UUC(;@'?,46%=Uk^ ZV;tɶ4s0ƁzZm\A묦qZS8dd Swc`.TR7\TB+yf͛(ڹyTR(zee Jk1Pixۓ %HC-}>5Ԍ sXI,I5nti_+`j"#Ry+LH r Hq]A KzsAVWc?>_&-^@fZ2+/8N8qkKi+D3 %ɉ&UR<5W~ngS]yv掅[yn7^$-E*@ H[ޭ}UX\]ւ?m`3$*'e+W1|eMXZͤZ'R @EVDf@xl,lMEi[3!*O ܾz;ʿTɆ;Ð(Yj}lGc<5 |fӵU,n¦m :-bҿFk>jӴԑP* 3(Tzy_󕟗[ZwD3H"OYO0ȖXfpcR R>^W/:*涸6VYQFța fqܴ,v$h# Zھ t˯Sy\?$V&]i.ܣW*d/_NYCgˍR-GHY$>׉%wO@ OOPH[ӯ\BUZP{avg'UcROڹrɑO廥YIlkkpEqboQ>.\~/5]EjiY6/F*#6/~¸U}#] }cfڻ^_QRm#z ƝfdNLIU==y8徣Қ!XFIKTU<~]3~JT4ج(A$kwO-7UP)t>V/:=L-a{q>X nz^lٳf͛6lٳf͛6l2ZqClaACeIz:bZF:K0wfÕK9|oOGu_5YKepᕈ TmHy]ϯ^۝D d\'%yE|c:~Uލmm%~ VHR.'`"u&C)_m]O-JZFRܥf3M¤_qO2Y3$qoNq0nHV=ٮLI&ԯbAW3yCZ-t;5 6>s(Tk`*֥X9dW71JFK} {{WGB*͹ǗzYTٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛6lٲǡDy+x-C" ԭC0W<9 %yF+[Ha2NLU`[LjQgkUĴּmsn4LJh)%t~zNp[(jEi\{Z鶢{+deWph" h?j\EK"bbI]ʡb99䵡PQE jz$u`hbAb 9/叕0I1X}{O^TY>8R`ݾ)ϕ?GWu8Ιau>#zdSZN]y(XKEAo(`PBn{?cq~K:Be($?SяN.[҂A<@|8cْWQFQ:Vlٳf͛)K M5Ǡ2f͛6lٳf͛6l*7E}l@Plʡ@S)I||};c\aM7YFo {N If3Ѳ5O*N 98 j:3GXV # Ia+Hdnk$e2lK@,շ0&@#IxܜT5OOk;[vGּ_LzR0dNJBۯߡrè[Xn"dQ'¥VX,tNgR X0Ƅ 4俳LO?"53۵a]HdҢj}%?V[~GhT^דyH` B䁸+\6r$1^FcACր(e$'`5i_s:ZYYiK{ Wh>3#0PjulMo7ji2_=A2LX#+)Bf_}˖G[rI0YB0Z|\zN'*w {S 3f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6b@;6lٳf͛6lC]ўbc)#Yc\ƙ |z~i(4i.U'xQu O]_eWҶ_inn ą 0s鏒5="7'1$ -+wMrmyki؋+@@c#PxWrʾu|qq&Iy5h9.DJWVh:?qrf?q"̖ޕ, ܲ+R%Nӯ rbUIj@<@>YRCB>?<9e?_k~aZ0^)&i@d2FDu Ⱦh^ycTE'*.=Juoot/7Mњ C[FJч^;~7%SFe=~ĕCݑz|l^sf͛6lٳf͛6lٳf͛6lٳf͛(AMC / V!ȜDYc51Ūvӿ\ d@P!MGoSb>io}&kp`*)\FH? wo d'gN"Aku<oxN΄`(tF2نb ,097|}qJ( &2qY+ѿ6~lB cIpDr cCSc@(j˽:t:ߗţiWvqVX)#<;8'\y>a KĜ*HU%`@T_3SL4~{wx.uu5GJ[dGrC>.Kw ӦQ{ҽ+_9]ej.Mޙ27i95Zy#6a%r3N@fpȨ>-0u/y;(Uדf<4vшԫp*hzzuohv mL7 ٳf͛6lٳf͛6lٳf͛6lٳf͛6lkӃWaMid1PUGG"g?/9hZ>nV2\ wB;go1y7U]}Y9ucS}#s7b܊d Mo&-n&F{yn `}H Gu\'7Z}/HOvĈ#K,,T/D?s_aOUeAJ/7|>Y.nu4MDHαD.n~<-y:^%iFEԗ+uYk"; ؎JCv#] [#MM:Vķ^3Dƥ9hrmAOifـ#0+& KnH(GOׇ ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfgUeT|\7/o鳘uQnKoƆ',@R)<QBhoqI9~ҸN᯾{rSA- }kib-۷ʹ'ZlmMo(T߁ TVkR #QamL89LQ1n4+Ga'./SRʾҼsyO3Gd..nԪʧt-Ӧ/\N$7)W'UW?ԡCFs%K&&a:lHѼO$tVwS?q4QFW@ro TvqLٳf͛6lٳf͛6lٳf͛7Nf͛6lٳf͛0á"pSUubA]؟)BMu!yjaXig"ARvs+yߗi~ho53\[[mP8r u>qο/ȻK'AiZ1'_T -Kg󍿙FҼfgg j?Yh_LPxAZ9~\'|Qwj6r %2*]گ!dc?w#y+MP,K"AĚs|[oaL jw%h Con%(age+W|Xn+6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf"E^#߾B( ԚTmNxorqQc9nMUZdoU>nH#7fc^Zg1*5-[Pv)oqY܏N dXeR҈KȁȠ%hWkHm,C'r6?vw;BА L?Vu|;KHMkҸ )'ߙ*wSc͛6lٳf͛6lٳf͛6lٳf f͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͉ȣZ|4nI4rb>;}ZL$aXE.]R"|/ɦp$ ;qzai vQx^Vs(!@;7=2f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6jo^T޹LAA!?^[ށ->-BUF̧=A^g0k~oi 7-%?y)v'r*NxrqRԮ< RӲ}Dgz3,aG@|% 7H;.ndZOjb输HG i<ŨG/l$q\YUEboSöEP zↇoնX7o6lٳf͛0sf͛6lٳf͛6lٳf͛(7&'a6lٳf͛6lٳf͛6lٳf͛6lٳf͉ sI+EtqfC67R *7|-♳f͛6lٳf͛65>~IzR&k#¬tAyߗKu֦JPs3;/!.5s7~aǙu+O3IJK$6|*GĞCs>C7nKn`VQmrz^ -W O.Pgo,j N ڧ%@͛6lٳf͛6lٳf͛6lٳf͛6l*Gߗ6lٳf͛6lٳfQʬv:Px!>q򕶭opXe [qRn/4;gxs/Ra~]x8<cYF$4RI=Ev`o\MZrsZ FK`yjR6i^0ٺWqٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfʩis̿'Z#yU+Ղu<92hBWPSYOd #3oFVN4<&/-̶%!e0jj lm,e JUC9ֹ8ey\58׎Z^WL&YO @2M~ 9}9P|<1_6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lDT` `">"_oVƤb%$P2@a]|'~fy RγiMeOy"n'h~Nȼ{c;_9Xr'.-@އ=\I?zvE+rUZ떅=->v͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳeWpzLJ@DखTRI4 v͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٱ*7EpPᔺ[+68W厃Oִ4Ը2E 1#kç𞠗VˢꑮyvGk$ zjZgo5EܤIx $v7I^I;8h^oO )H`6mQ/6lٳf͘ u֛͘u6lٳf͛6lٳf͛6lٳf:x͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳ`kk i//%[{xHxܒNx_r rSL-"SQO:\@H%8Z/FZ矿<{繼5l<ޯfO! 5';}B 7L@ JmN)*xSjcf͛6lٳf͛6lٳf͛6lٲ6M: ~#6IuqshdyVcSҸR,q )oS~$jy$,ʈ}րƤ/*4ޟ?1u Z@qjo؜vlٳf͛6lٳf͛xSv{3Ξ]ӵL,⻷\Q*O(|s/3~O~eGZZyo.lL2%bUv$ {~"+8mZOEC^@4@UZ响 sS-"[Pش^'`ĽPSnYGT:渉.IJ>.*9'Tfo`p q_#ބW>݁ޟF/r9@ԒzS$s.g|:|Flٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6l(^ ss;J(:VҨLeexZ̥U kJ{g9<t˞Q?I^K kwI#!HQ7٩x7兇g۫GY$iYB&@:r$Ҙr8tOl޹f͛6lٳf͛6lٳc]4i$`,ƀ$vlٲ* xTctEXqf+Rñ1FH0iƴ|qn5 `Qg[.N$ҥC@|]ly~J}nh2 K#&OrD [G 0M19 PݪGYJuOR S^_{KʂR8u)ZOJ/VPVfn?[br?0Z&(QSɇG':?%\%F[~mN% ;z5؏µ5WCr,fG7qn<.'94FV\MG0B'Ӊ# _ydZ'4mv:f@f6$LQ;ӡ$7W-[áb$ӭ5RӚb --3p8|p_t ]煭nHV+n$20D28naG󿘼CNڽ+u:JRxU#ASq^-G.|+iZD$2-?WI75^>o!-8H*I9**Z?OкLZZ܇٪q7Z@UW'_vBzTw ZMX*+Nf͛6lٳf͈Uv'`F?<ߛGӼ-cweu$N4RѰaA|w<,/5O:~`f@mWݤ欢*xYߛ],?+ ICPqM|v*[ mQJt? QA^lٳf͛6lٳf͛6lٳfHq4=kӯji`dT955ۦy[s bW&S/!$ݶn>]f&jl.&4;kv V54HrWyϚיo>G m/9jRV2U_%MG7X\tD5&mK?XFd;84GYFZcDFu >ѭF ZƤsv @"?|a, - dF,mh29|\Dy3R6FH1%ZEIcfJ@ ц)JƟC $ no[iHE0Jm ⏒4Z3tKFe-X.\j?wZNtaYYIc$sz$ơG%׏/9%G斋b4]wʲ]Kg>ib(D=Ӡ` qLxpQJ謖R dBĚby!Y7)HU$\QҮ [D\r2FYrXyDIssH-+8I>SɫÑˋ,]oo.4q,xdz!bMt;&ɴ%%XfFoҵMtkM$Th> ڽNaiQʽ>oỶ5+;T-(9.:T{Z_tQ~HI=+Oz焼co#s }hkkՊWUv;hЩbn {/s͇˟Qi1Gi]oB8^ |K]cҺq$%WJ)Jd7Y:8ٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6l fZN<+7GKKh-B4qL~R([=_/Zj&XI. J,p̯8Y>Ym=#HXHɠ:ח@2wkavUXUjUaڄRË]&ߊQT$&OJozmƝpI! *s :P<6=/PHeQރa%Ic#Onr޼<;SWUJȝ2Gq^ڤ}Io4Gj *+"<~\]hdM$mK CgFwtaAQ}^yz-MRI$G "fYC,f0Xq$pc.~(gZkNq |bxq4V<9I]>,\-nb+XXߦ)b]yrqwqv)WXcA(LsL2[Htu*1Vـؕ?1FλoqAE#j}ؿPVjE:73zkƀ =2)BzKnMYъcxtzgɿ5IV[\ޞj,ZG QYxNCq6arF U.9sxe#ux5nm3L#e5f͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛64$3W򝆟b]I##eIJGP3346n]3g;atch>;FKG*(}(iU,~!7.!0GWCw keEX.P :QԀN݂S6lSM헛6lٳf͛6lٳfs+N;R8_禅i*4%dEvT$4%-t4;=V[4-[T Hg"-njeB7U.$ǛK[c;(*"'>ŘWq__XеhuD=gr;0 Vԍ2e kZW6o|ٳf͛6l_iGqB+zvaC@ϔv^cG<˩7H.gPm܆?*Հז}&ic8eXzg@w=b &Ҿ@@d:BOTl_g5<8Pgӿ2Yv´@;NCn>s:O5ŬVF[257 AHF?!}-(WI#?ݜ,G(s׉4a(#`jw͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6PLo'wLTUܚ>ZNy>y}co{7Ž͜NfT<3r7JOy 4X,0)exg ,C죋)`q?j[Dx/!"R|k[xr޼$0Flٳf͛6lٳf͛6lٳeS*FUBxzg?^^,5;=3Ԗo_C,nՕOG[ɇSG:Mw4 >⼘r^&u 3y,?[8kB9xcUoQC)#iVW厍G}V&,*X؏siz4q,O* o|:H B^N H O=f͛6lٳbrDz|3k>mQڮou#4J;}\qVױC|ԷE %JK1Z0;v渼kq+I84X,aZ +D#~zMCB$~yG~]*G@N^hUmԂ@aFpO#i/nD[jX. qAhrԭBq?3ğt˛N$'Z[F XZ#|eUϥ].]ߍMI|?&1 / 3f͛6lٳf͛6lٳf͛6lٿVlٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6sOo4kb8RGmEf նϜmʋcvI"rKmqn O=:~-v^Sn#YyZ+r}A;{ag)O"7”/6lٳf͛6lٳf͛6lٲ =oZg,rXp(kPK0L9ko6p@>- "H Kjї"ϖNTdz}˭ݵ.UeWi%Ov՟zɞA1]}L[$f@aOJfSV~5IjmRqP(I͛6lٳf͛6lcIJSipN$ؖbP*W|cQR1CJsWpXG(i8N .Uƿ>OyWN!!4&EKc i5ś#^R׵%yP-`q?! ?$144pKjf ; ZaQv;rDjiCe͛6lٳf/:="?/u4tB=j{uYn#=q,4r1U~A@58nʧݗ&I=k\ؕ_BV0@u|W4?a)%xw$DJz.Fр> TѳZ{Ujv,mJ H&sEaMRMjI 뗛6lٳf͛6lٳf͛6lT S@֛f͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛$4Bg>?=5/0yʞZwEu-gK^>"wX|\g/Ӑ_Ε3K_aЏJceI̚ -K'o{T6¥v5%Qk|~lٳf͛6ld^6@iQJ炿1|{c⳴ZʵYHTު\m?㷖{6ֱʳGax@u$)rd,@3,eIYx-j;aAqٳc k0U"|D~u>~QynJiVt^DQU N'U4aӼ\iVNɨ[Bd2@Uvu.LeTd=E06lٳf^n5܍'嗛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳ4͛6lٳf͛6rO2)ǩ4k#E|L ϔ^nEVGUEJfqQ1pE~? (s8Wi~Y-5ؕJ(`zQUf͛6lٳf͛6lٳf͛6l*7o9y$RKqan$Q/'@,R,4.3Issm-vC ,qyTPq_Sӿ_:^5[\)%˳: C)Jˋ|_ʾ ZsFZ׎$f͛6lٱ"GNFaTq,BprZ^kyyEpPہJYgIQЀ6᝽s(! =:6lcaJ?B|-76"JsF$UVU?(Wq{ezҭřvk (sHo;]SQmRy+q )IƋ5N ~/T'<Кo\&$r;J>np^lٳf͛6lMH])_^+կHEH4*>fj -+X[K{J-Ղ5HW~._|[rmyI Yx-N↠(;|ݿgc|߾n1{KUr\V R=3ɿow//]3$sݪG-%(+!,29ڿs?-HM坓~>Miu΁H?6lٳetlrf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͉ %'E,Iހ 9U_Xnkq>G^4?:(]DyWLG$2C}sV}OUE AfϥQѣ8xNMB \W6lٳf͛6lٳf͛6lٳc$QO3Mt;ڣ< ;An8UJ7|V/uq*iKU,`T # ֟{#J1Ě\[xx͛6lٳf͛6lٳf͛j.VEV ά"ў ռ1irBV olcK pYDʠp_9j&]_Q57]I4ݳ;I($9J~{ZAU-ZI^>ЇLٳf͛6lFmin>îxrkr6M.Lfo{mJj\ .\m-$$Zi10k[im ?ykE=VO~ٕ^fV jrE"Z*6c:㷜<ͩǩI,IL'Ze].ZxOvr'pVM9^çG+b P2^4on>'>1eՔ6K1!Kt11#JKqo>|͌X=:. ͛Yh:Fs̟,ǭVވ 񱪳TToj 9ʞRלb4(ҔyzIQ8~2?˗\)sRФ[AഅčsU!XE BjKl;8q6lٲhS+PkPќs{T !>( RH=PЯ>[/Y]N"D1f$-x=sϟmnm<`xܒDPSxSɾ.>yu0xrFSN2!d?htߧO ^^ʒՍc@Vw gο K+7 CW$GU$b>ÞB//Ǧ=į4aa04u) !o:%-GRO,zbH.FO jH*.w4:eIx.7Sb~ZR*|۽)TZ^2zI]!`|5,<>RR? rf͛6lٳf\ٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf.[{i&v=>xrގ撏iIqie[qPV`#D8s~FygȞvb]i<[iYg Ie!8oJA-*1A(2jj|Tǁ@^lٳf͛6lٳf͛6lٳf"Zg?ɏ2.u[{ʯffS{iT!SX_8-Z]=ĚU2DL}0] {\0/nDjzΒ7͛6R 9[qh*{g%=B~KhYҮMBJ9TWxyƥd7쟟Zkj=J?2Bv֑<:#לT6azQɖkm54'Ըrh"j'oպ{'M= 2.\^ҫT֋SLmaX؞c(䃀*ܹ7<<_6l/TR^WUB OZ"s"3 NJr"@* !@H3kͶj_V =6R4 /"r8_廉&3o]ȦHfͅi"5xdjgίOʍ̒OR Vƹ !XI4(xxƬ qndZW]bA2.V4 ΜaʼL;N.`pIJn3f͛,n n&YhT|ycOc2%CQۏsh|9M&ž|pꭸH`x9ͮ1/o.;DAm+';T.Wu?kas%ZmWIKR!.!/|?vxKtӹjk7ծkiӓb?7뚕 z`S6ӑA J跕='΁m?ij{|)/Godo_(ecEhXy hhi_՟00l} <%lJc+$$CĀ BS^b5NDn;ЀT{K:TNE>eFH́ 1:?̓,?5M>?}Rc%ji<~wϢZfZ"!fWв(*.z˚:KH>ljѨz}8R663N4F!@֚r++%*ʆVUϘ_ߏO֒YIyU4 EWs٤  <~_iyMinEe\|2p5a˦ 7w5kiL,X#q{qi-fӮDH>L-&Ȳ :s=+>αu-6Dr#ՙ B@\{ Zt/pTPSMgI@B;6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳc%"Bӥ|ćXE冯Kube/)MN4CrRQiDB8D{oM[N xo~gJN JR x}ضlٳf͛6lٳf͛6lٳf͛^I'kA0ӣ}|κڽŧC y1UE׉nGl8ZV)nnaW̰:̾],Ovҹm*8wڔ͛6lFۯjCTŮtm 1JX%jsPWn|f2ոQH!.2F$uoS#y"ʯY-~KTH jFrW^Hx Tt^~jyO )F/S/?klɬ񃋆?ijQ8MqiKb!hhޠRMZdi{6zdѩoϥ>Ij@Kqނ'C6lY){ P<pl+@ s*TOW%^ԉ#1L8#F>rƭj2K 7kn L ;|@Sҟdvn9ʑ++UJPLN=re3A1j%~ 'jW3wų̟2i:ӾBVIL^v~.|wdaO^Kv҂8}8Wy|]Y- VpH(Ńwju )\g퍪$<4w8w~^i)gIܪ,\ mQVnXay.u*Ԁ6=+m[."1JnjU&_l>aoeHwXXER=hs?'u[N>bV9#aɌerZR7S~A~dx>l5nդ#g;AUiRM/^SQ0̚b(u6n%|MPF~t@0)|\k-:u{us(1Ɗ`즋ϙǖqwͦ(X y[gR7ەi͗ʐ]4^.U^x'X.׋O'.7ⵡ3_ߓW&OڲQL\@¿l$wdW,C%TCԍ\'q@; vlٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٲI9wzX"AbX$܎|Fyդo-4)-@?yUKʖApg$Ӱ#jjg{427((;p2f͛6lٳf͛6lٳf͛6lؔ)Jߞ8`rXyBx‚bZ~rkEVKubU$ (QJtQ@ER=M=x5͛6lٰG !j)N>?@_Ƭwb X[6 ' RUxhͅzΓhڕ}C}3!`Xj3`1 ރoKfͅڬFx}1'{usgL[2EĚ@-cc*Xȯ:Ժ؆.xR[gQ︮hז}Х wJkZ`W'$*TXOnnV8HMd$ _殏O壻 Hb B|eTgBET+ʜ~yGާbI~W5JGܾ.aux\Y5bz8 Oj:4-VE!EB%D!;pRnrCF""XGf8nMkǗRԴ[LecBZW&OjW.jkF(n# N 0wjϲ]5kM8in/-,XQ`۳ҭ<(.Iqq4:ENfAG&?MhYCj"H|߼J-UlH53К\m(]HvS f͑2j[,ը X79|Ѽϩ\h6 qZ_Bvi1GJҫF(f6r'?HBPTC tf f$P#Z1$u'ƒ5XW۶K.B_Q kYܴ/[MQA $lhM35ц{T 39u|%β񠌥m r#qO; DR7zRdB2UO ]@f._m^~O7VW{޲.jAzODyG#4 4v:$1E?θlLh [o/yf-V+n" MdEh;#"qoaZXGSUJ ֧<-ywrF{KI`Nŭ؞c |k>C濳iŃQzd5RUU~"vRsJR4ܖ-F]HџIZvд1麥dnqM*vpJo^yC[-I)P ?i{aLzjH -!v5&@NsI("Āo9F"h6v^2d$(EO~Yȼ9ebRWl.X RC N2U~nn'b(ISĥ/e *S槧lJ oNUr?0h~Noɮ\,VgEi@i!*(/3Q$ZMo"3*J/sX]7˖wpzraB܅A-ZF.c %jDPxc{͛6lٳf͔X H$li;6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳfƖ ׶mwu/)dTm&rwzT:^ڬvjG"Hw%OT:MWf_XO w[[^y"2@1oKCIAH%̑0쾠iZ%ΧPa~mrЂ`Vf f C2H]ȩn/, d"aeQrYTZ^o7Z:Vy 5+}@;,AX4 >XhMc[}d3H=I)kҹ,vU|4/6lٳf͛6lٳf͛6lٳf͛6^Km:V;0>=$Ή+Վn^FL}R #5<ͱ7]iw)!孑0khZc ҠmaG6lٳf́oU^^Һʌ:/5t}Iuw:p6vWIlb.oHd>8?,<׭2=chx\?ًȤqģ9|;[u.~bue~*qOl)~fKm:2|1V]G&mmt!+4YHV nNt= ]Z>$~dYD7*o(]!m{]X򮙨LY? /IU_ߔPVJ- ݔga|=CVoHĪk'@͕q7O+A ԑednO^3ӧ>rSFu:2P}]dwuW0K;sI<ȋ]ayKUVWbUc ρ̄s$3'^EPY GC0T iaRv[=/ǦHdg *4ЎrB7"'ze[ZFjTP(QA&?Nc;N^lٳf͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٱ). Yd m g'M;x-.osK(>7Oҧl俙h痾X WEOniQݛM?vyx^u޵uI6#fAV ܃+jd^[Ľ{y"DZ1#>r7) R;~OfF2G^~3ƱE!PBQ_zJ,tYtX:ݴ@ ̒0),~Y(_͚M 6Ciy9sP>[<9q^Ɗ챥 bjvNFivm#KV.GV ,QT27>5(\jɥ[7#neTTyCrNm טe+a4)R/YPedee<4Nn4~"3z}Q_ZgjƋο185F=gWX沷Z± ^l)m>#( X, f*~%2O'څO=Mʈ#D$R[`Jʼ]9Ǚ #Xo^i Jh M8L>r|=~YӭmD\t)[(.Ïa?:qe7P׷,@ZxXͰQX7=QvO)_OPi,*hPcWH󶗠UoK+H׊s'-*`E>=7 =KSbck=jͨ0rUK\n;׼bsK[E]ZP bW`rr8BF4Ju}9uGSkkUc!BMO:'yxmu|#iRWx`GJ9)j6v̮ *Z=>y=a: g>AC׭]QĊ,2EG rGYB7 ;*<<{$:M #Lwe)R=0G*_xUuK_}bKH'Y&9r o՟D%/t'pi0AYK\UlI4?ltJ,9*hw=~Y!cVMȩPPv͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lNY$27D'?KhSF&"F$dPx 0Sy{rJamNUkcY w 9()yC~j{+˛{}SUX^B'/ۇ7F=KEշeRT"/d`z? |\'zfU9UB]KDKuB`,uk"\Qc}RoGL4!_\ޣ&+s'ߏکiߖw6tjw2V+.$JN#m_so*\hmq\o$\QbP86bC+<4q,rֺ}Ų}bS$r_f4A㞎:|Ivn&ʢq˘UImöo+ [(z;k㓨z f͛6lٳf͛6lٳf͛6lٳe0ߧ|yJu&R_IkZLguFt˅ kvRՠ@麌!BÔ##ռܺY ghײ9,Ӊ@O/ճ~h~v[YՒ+9ZG eT`ƣkY+kzE sj"9T+|Q MGGmME퍾A*ԚI/gtK upZ6d$+÷P1lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6k miG%aEx'kp m[Cmv&h/'"exN9guMEN$"-` S#3p=GOy|9|cm몗vwWNCcnHR%H. b'uY&{p8[rzSh~Kӯ;|h1i"z :Sn" GjFR)V[hÇ;~[u?N2x bz} 9Z[HF8Y9,>z~Zi5!j'ȿ:J`\SjFv ƉsiyGU0ڔ$\L$ 4|&;oK۟%Zj/xo{Eg@DGs!r Pzcq?.:zzIJQ#Hros/[Vb7?H@2ock$PBG`I(L6Z=|;e͛6lٳf͛lٳf޾ٳf͛6lٳf͛6llٳf͛6lٳf͛jk%1w=NxrZci_]}ekX1:9Vb)YeGvBT1QE޹x|qJEYP :|-1O+y{XO{]=FNcکQNB?%"<-_Y"k֩fp}tOZg4 1GDb)P>,ǦZ* -(tʠ{NFY=6ѥG^C,ܙ}"I5Ȋ#gzuţշic-#G%Y15;r9_ D^KwsON:S*sZDq޻sާ|ٳf͛6lٳf͛6lٳf͛6lٳfZ]אTTSsʿZ#sOǥe47$)<.,kuT?WǕ|=ޥswlZLޠp d)xCWʣ ? 7{K}l5OdE DkÎC˗Lo"/|,0:ڗUhj׏':+kFc ob=Z)*`i?,Ro~%헛6lٳfn$H`|U8TPjd^ֱ֟z R1f/)ePW3*5?>泱3Km,VnёXރ E֡w-RoEEi^ΎQIr cEZjOsܟ^7ݙ9 JƧ=Ga%5hdL42Aj[GPAg+< VFUf6֮d$UBr0sş:=[MYhn8FBh|!L$WZf)_PĊ"Nr.I? Id5kٚk(cV'CsZjq_Ɵw?ǟ+:tԖKy< $TH۞tv$ϾJ(@xq)O<@AN6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf̀-BNydD@{|O3D֬,*_ZGuUU _rU#ssw ҳhڕ^ktJi&PUחZY+TCЭY%eOX)$mJUq_3BU^?vO4&3D)/TE7f=2=櫷 &UC )|?ߘ0\i{F99"8r*PW=Q %.S DPH(5%N=m݄8ԁH Ӡu? Zqq͛6lٳf͛6lٳf͛6lٳf͛6ll ԩGPp[$0GȊ 9P<8ZUvz[ }96eVgve >_iJ=Q`zܫMSB\_&Xtqܗ7ޝhdܲIqV3E$GO%o|Uq`^+xzG 51ʙO_Ͽ*~`4v.}n3+DG*zWkLOdYVE,A 9 OՆVj ]z{QU1f)?@,FL}~HF9oR<|J}BS H"g)ޜUѢ1TjJㄔ4_ݳ59>ĖSHT$wBAG`]ƱrNT?_^v4gTehB+y|iW?bQ_?U_Fq"FӍ Yig?+t,ZiW2Bn-3G+?NI)7_Ҿ]c+įVPdRGZt-rX*sY(fW#]#0i'`{9.P<"?LsS4# g5Y҅ΫyuujUxԂU7w'vy I;I7crQ$U<Q_'`܍I1I$_M98C#Pf 4P=靥 (hԢWXh~3 $z`b"u*Ao樧ʘ:e<*ZƝP;M½ȔF`Uo C5](I-#Z|I5'a^OnfIaXg3󞗥_Y4a +*ہE[g-3II..$?W75H>&6bYAw_-/X2zSxuI)+B}6¹/)S:'JQIa#&bHoI`> P \X0 d>? „ݽQI83vƱ E#?6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳfĮn!K J^WcET$ns_?BiDm> 75^*3RD2񵶣l[m&4졻[ q Sh6wyM5춍+f+E22FQM ⟴~/k:~E[*j 2]J*5N(4cдKkuY!;l;Xyk Pk̕'cL3r |~lٳFyzŌRjWQ=1H E+|3_76s dw`Ǩ 0m>~Tit:#2G6fB<ijTJt4ځj߰@Lvlٳf͛6lٳf͛6lٳf͛6l_!CQM7^lNd6xW4-ZZlH+\>iL7FIC(B!`є 3j=su}aO5'Ljc1ez.+W9ya/'_jq]G+ۣ<}8ˉ >χH5M6 cOn,.{,юESUskgI^n4_a"V*KmLJǝ8yfh܄Y-qBŤPYi3]twW^T ëw54*}bX] SN so>yoXww~ukKֵPb'=dxciA/#|nz"=fPVKN.- 5B3į챦r{2fy`]f}$ jՠf=NzqϗMv{mx-bK *_[k=]=~Wug+NnԸ]$/@S;rFMm%H" )IːFQj(4A$W" \:ցjwvo^zW}m}s2pA'%wN Q+2%+ ڜ]40KmOw;g/zvZ5U>͞.EDTPQ_:}?^v`) ZKФ$rV,ŠEAnJ*k[Q +7 _QiUvO̜ =TY%c-ӸjP aLli.Ø5=pH8Ir%懹;ƍA#(_@POwZaU HZR "{2I H5ԀhٗP>n)J!̍UKYc;-$B- 6?YoCHm;Dig8gUZJs~">%>B޳2sdNrGN\ͽ3ߔctXb*@9(^UZ4+Vd0uӦIRST5;7Dgٍ?wP(^^yf͛0t͛6lٺ* SQ?^lٳf͛6lٳf͛6lٳglٳf͛6lٳf&?<|ayv]Vsc4~<-E⭵W-~jy>c&4OAuH!siq!^2+^2%mJ=:=&Bk%t18r$撕r"W?*uXV7RZB9HBҢj]~-IKhU!ZLnd>0 XSRIP<()I vluTThwlݯ&F.HWffVeۍs[ּ})P?QbJ>,]98xT_דkhY$0@f͛6lٳf͛6lٳf͛6lٳf͛6l##h@zz;>VYPFz3*́+lE֤[}Q9uWҝi 0 fn$oS.,S\R-5 ;/.[D~!(1?GyuW-*rnNuJUǰ[{˻COjzV?VQy/*թi}j+3H̴̰_k{{Z}f[{bM$Fn!VR?nvdǖlM6Vx֫²;/wFbh|'qKm>!۴у:<Ƈunㄺ<0i}i$;Udu(\uڝvO 2y[YcKȦH,aERAK+LGb[aSJ)5*7_Fu"W Qyal;^dFB2j@_QB ]ΧbU<{R¨wjHB|ͦlQ"fT|$ 7y{WS[C7 DIUo8Xߜ/PVm=&7 ܖE#EEV*;zWq_YUo5Jē/ښhecVVZ(o,~gkT`H#r'sZEu$Ou@%oJ"+ gO5"gUޝ|G2>N(ASMeAR[e*XR-q*F}R,vjAT#,¯peUO`)o 0Ze"rnv<Z=O/͛ #WKIs$6 na Dҿ^Tad_c-;46ADs4QHeP U {C<8[Rڽ:dh@ ͛6lٳf͛6lٳf͛6lٳf͛6lٳf͔<<1P@\nAeGNT4J^h\sbxNz!+yoȬa>,X$uFX|:d0Mp=TqFhy;wq!:W}WIt5Vӳty TbF,-z=Ŀ[ =A&7-B*'ۍQ׀Su850OSIl J.n:(/(qk7pI:GU?1lG>50K'[]j*HU|'$5 ՞#Z$u; |^$'_z SF 9!^@a@y5 0"+ҿR?6޼p8T8l/q>c2<1O1ֽ,~QU hG\|)HFARYMu#r9Mb w$j-h|_۞}GКPFL9`GƱ"69?<?*irh~oִ2JrR^J <T4 l8i$Sj3۟Z 촨X})B$־;ι]`F$jToAWM6з (Q8iQ$Vv!%Z #zJS`wk(:j~⠝aRN>#\S6lٱȑ!w:zt718: ;iu%#@_i[`8@hYWD3GWS9(]ї6lٳf͛6lٳf͛6lٳf͛5k6lB/6lٲ&Q#޿ |w@1UcUd`SmĦWAV5$gE/Q֨(AR;6W Wc\^M2"(-Qh#AaMyHЪ45hrO8J`-0ԕARFvBF_v<:x5$$}1D6DB6a^,)QQNWoQ$`%UJFdT*bzJ'o#:Β&$ w# :4- PO4,ɏ))H$|7?/Q-֚SnUE`b)B|o$SiL\)26T h[k*ڰԵRQR 7Lܪ ?e'柕_/ bUxRWU"/EUjU_._ "4 ?~cEhԞܣ)   k>kB4aXhO^t-S 2glTpmol}I~ynZįQW4B#c;6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lkӶYo*ۦ^U7~g(_ iro"v#q1cO )Uu(20!PF_NeO*# oVbH8T֕am夎BaEP {{F̭ʟ9Yf_Zi^J  B0'#/e  n49RFX" F>$/ƠtI8A~;@ʤnC jQs3pP$_NwE^{ Ͼ%yn^:?R*X *Ptyp];xz||qkEqu-1I6 ֛z[m-5K$-]Ng{3Auhۯؓ%)JH,p; wa%~4U*§pZ 924?%8VDU$ gc§=XтR(@?@rWrAMX  r^,dچEz }2MOzlE{f^nPyT#^gtb!HHҿ> @RiJϚ:\:/a1_XC(C g|ݧ5g+ caXyMI<$^``(xOroin7--Q$EtM;g?-sD3+^M 5"B59qCPSuZ}aQ)F&:VN/v&NYwdۭ;vÈ}^)QF S(^)Z:ydY >0TSbj|?tRw5H$ŀ7$ҦnVw#sz;qe׵q< I u5; ƭyS+X(m0oP-Ffb3AC4G4E"ܸ!{7/=Y"$hB{?ihyJ7*o_leK=7O.ѵhDž*X;@1!J᭷lLbpGUsޔ55۷zsr2E6È"m">0 tېŷQC8-'Y+BB<):eZiV$=zbڧoٳf͛6lٳf͛6llٳf͛6lٳ?>yL..­r3+@/b$.ɟҚ4}<#xP %ϒt˿>YH+fjz*#db?v幷NCϣ~_"(ߋ2P?LQ:hƔjӭdXH"P&;КlSJnET"@$vLٳf́T-j6n;w)R~^\|5YDWb;@ /x _~_JaDm).Jj8ߟlu z;8.R\)׶/6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf`: ͛6lٳf͛6l7O|b,zTjh*JoL9S+Ĺ ȪN5i,JzЊ`P@ο{V>iad_UKAyqE܆4@U""^iEǗG6yr;X[Xy(-[D,ZzkR/QfɄi<^aī]V; *qݰy>m9k~k3@o>5o5w>}ecY k*@σ<~h>y!iV7ygf+L$ *teb7! }=(`׊QK1?g_R}x5 E aN>8Q&r]pC }? &E? ?N? (_z1o\yw;,;N_Sԕ[4`rEzA;+ȭ% ]}?_ZOh, e=BqՉ ~,`%tZIYO#wF+0$ GZy^lİ4K.³2#L(|MOڬ%@IT޼OBzy͞xdYoT$P'&ja^4hz\6X*WjoFI~>:AJlՠo|[VIxfe`(Km Sppt>`׭3HBcbjj `OI ݧvыȐ@m~mkXC]kT]N}@)z1nBԨ|~mޤg֢/"w[VYRBz+o^\"|B5XDQ³oޕ!~gF9I j%-r 4-ӷέyL ImL>#iwI9u0.+RM Fؾj6lٳf͛6lٳflٳf͛6l Tb"Nx rkM=W%RKr$GHF^$9'O_'q""PyW|omb4]ERyP+Wi{/ǷQȷY%WV5+l½O:?:G?9,S=IQQz'rWcm6k_%AٜrN3zvyҕҦƻ듋_4E8R#Gb@ q$Q}a7ѸAYh*oR+a,͛6lٳf͛6llٳf͛6l؜ƋS^S~>cfc~V}qSosd (ѩ^J~Λ*rMִ |Pnz͛6lȡ~L~cX˶Z̝8Ha^\6+,A$s]уö^lٳf͛6lٳf͛6lٳf͛6lٳf͛6lB͛6lC R6ٻ͕Io|U16Qþ^'Uj+b?Q˗BZeW+]ۮ'3w$Syo`wxb%,yTƵ;;`;: 19+ƃzl;BРZBc=yrh_&([j=9 ]Pm 8l4.C+sPRY\aQCŞӥ$r*;w\q|WOmPw3矒|]QcCZ[9TV0z^6Q rP8;+P@ٗM,4}4.7ՠUqu(yN@oݏϔeӮm]8I&e(*ʤn3~acZZ͏45P W!B),(x_Z?S-Qi?F$,+TVO~s/:Ũ=uqwˈkyiŪT˓_CӍGPi-@8PTzzt/ǟ-Ķj 7-4 O":*[f 7;1!'zg垃![HԠT0[ t4풫/#iĪ\B@釚KRO`7FGL)qEE;ͧ[Φٝ選ȐE6)6}a$W)F[iѨg< ]i@M QP]`K-Z=Q+, 7?xZDyZ q>v4p. ))`̀6`Hِ0~Os MÈϧ͹t"g⥾ bN5%AwyAO*h|?k97]p$>qo@HPQ_9W䟮-סjV[I2D9rRKF(~Ñ{փs|oU_/~)G{^6g41E$ |[x_R󯤚>o{tC(2SEeODCM>pWn^ ͛6lٳf͛6llٳf͛6l> QMxs6vgjO#\WLT(4q&܋xTf8aeZr"GJ=qS\t;xHk‚W>h*kLE5P>te 4[!4XbG+ N F,S 9w/ VwV8a)*}ח,E+kAy@TP )6lkAF<9Ue-`li5 Jze_<tZ$'Ү#$;1y+#$|r 6?ʯ4ũ\4~[-r.bfϩE}y*N=Ee#ǐֹ?U"Jzq͛6o~f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͍DY,h ; ;6lٳf|Fs6W|,PJ)OEAu%p: $uHI+Өo>zZO9ei~Jde]NI#E(JCE4O+YޠK$Hӈv(6~ym.} YY Qǯˮyr7r?,]HSs[J\D=|O3y612ERiEݩNqo7XMɳjt_P~!kNSBѽ5чSPw0]2afAX)F=~ve\eľ7inADVy =S;O<9JQF) s<ОU44cƫՖcXYB֣-|а$JS~LXyrv1*INS.ƻq]-IP({wEc>a@CMҽ ґbi^ 5ē20(FԁB{{efGWV FQ8ЂEGCZ%ZK'fl:P葺r-E@O nM]aAZ\(5CFVp<'#Bѽj٨j2|oQB>Gkg9 \/psguXT uA?ϣbu-ˑюk?.6etڃ!>eү.";GVGa`A =s\ZD/l9$(4B謵 $FǕ.jS$mB9kuKGȮ|Tϫ?`t+9΋" TPP+ub qo_'yξ_]BVX%ILF& ^DB6**AkMWCY";;)A!?݈ m?WS`Q4$NP#o +Q1ٳf͛673q֧|Wj\F3ueClJ+Ϗ7{Vڊif #ij12OY]QGsџW:^FבC3Em~RV$RT\1k1^Dܨ*G H$9*:ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfʮl,ٳfO6lٺO R큯f1I,8 S!s]m]!#7?*/<~qgԽ=AX|I+BJKWƾqElm*}' o%sI)SM?_|mnlf_B );ez|&;kn\OQx +WѰdaSaؿc,ƅxwwϧ FjV0jEe T T.;\NFuP Aߦ5_$dR][oOs^({nƝdiiQ0^1ācFM{g;w_5k2 f>`|,TA*I3_~do=\i}j:L@R@q?X|٫O%"RG$!L_gǔ|mYC<3- jJվtK2}f͛6lٳglٳf͛6lٰl1EjpFƻ$̖)>7d' g<Ϡi׶_[%R z"K55ӼcwaCdA˗4T۠M[]yҵߠŝiqip,7P.֠=V՚1s6Oq9$!JYMx* ឆo|iQ&F~w zvm'8Qخ^lٳf* um.-BDt[/ Cg'?5fǕLZ<-s+x@21BuT񵭼0ioiWw1j͂8w!G /Þ`͞Zo-ƽ1 0RQddcʭ߶zJ pmAAQA_]|ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳcLjdYjܕY@ hU v$ToOqٳe3RǢMM͛lDEz^lٳf͛6j6UEiVbORݫf4 <{ ;n?Vyorw^S,Mݭ7ҵ1ơuƀ7ܳ;_XZM,Pɨ; )īVHw4NJFz(@ X+_GF~VdL埑B`F1?u/3\]PeY]8v,rZQ( |Z4*~Moc4:dT"I&&KiF8cēC\*4JC n¬},Yl֓K6U$ g͏ϯ7wtF d^P.:5X5crKSNh#l5f+xe @zBKEnٳf͛6llٳf͛6lٱ9 ;ZoS\G5MVkGm1cct$PASjAgk{& gPPO/D~Fu>=Pi*Ks z/Rr E >VO@ 0:ʣr҂,avP9eyMijMLccNg_5H ȗD!HSעR9]"&=_2k\VIDnJVUir[U满'6lٳe7$ 7ΞU4{)-+YZ)cM* oƻkkV6E$!rO7~Rg[g<hhzqJKV5QU=9W=rA_m$}g? IJB\oM{XKeI ? 99玧MD0InpU.9M#ب_VHKIX#ҵ {2#EfVUv~*.X;%I#)X@Q# CMӆЂPBT:s 1}T/AOLȥ@=w ap:lbUKn-=Ri{roqn#^Qʼȭ(+pXK (*^'؞ 7実-*B7jk%-N6HI< QP$.y3Zh~hf(V5]U+ǎæ}Z} )RhU$5v>& ֭hk_)_^lٳf͛6lٳf͛6lٱBido̶Z]$ 6/"><~rkS5B G?VT= "QvM~RjZZë$铉brsy/^*:3F?3sӦCe$3iImQPGq1~`I2" 3|9#ڸ(QF; 4޿so"$!hZw>gra]dѯ͝2̞FH #Vޥd/ays[K+8yz"'>+ׁPdgiJ֗Rs=(PnYknQ&/J/zwΧCU5?NDiҏ JTE|9|?z7MeÐRyy~@; ҝ8}OV 35_ +C;=0JN &6S#f$R aC$7v\r,QDF9k9cR{ä:( ]jV!ƿkO|;Hx#$%Q햘OlHYI}B:aB8 o>LNݩ`' _Qiʼ Ps^mEp+\w*z͍֙O>j;~XY䥮y\]ԯ8r#d'έ-+YⴚXx}D8u k߯FyGqNom#\I"VҢĕsJQټ!KMg&f lI;~eCyVVI#PkFң~x#.\%ՔrMR߃*U#fے)GXo,53y<--M -YJq,FVǏ=]_hXjR3-%c6fyKW>.M"$mq'JN]sf͛6lٳlٳf͛6lٱ{k:O AH'~ϔ?։Xen.ct$W0wiror oP0\ڢ}Z?SHx%"B#Y *˵J_*g??4 үS<[}bP"r - j~*紴R'>Ӓ56nΧߩ\埜PеM.̎6t ,SP>/y=/|}JoQͧQWPx؞)҈9 '.cEf]U޸SJw`{8q2Fr~ͽ}.j>jh٢)-tFy"@Ǐٳߖ@M b>Uj=mBR,^3N;"m I 43qQBLQU{҄B:/71.zl|FW%37u!?gb9W}NK,8"J3Sv [OR3,6C ǮQ&crw^|+Lʁbi GCA儗m0}P&I`iB<;9%]:HGwFfսF j8.9?˿+y\ u*BѫM `'!iY#FͬfURU,YjO-tC\Mivm}ݣMsMnk7LYa$?^O%*Zi7q^Dӕ. 嵑z dۯ?__մ m7;DRWww>Nh"OzWf͛6lٳglٳf͛6lٳ`kDEœG"kNNxrEu;Ia{`I{k a$ZUW'P(󏑵*ݙ/tYhz(FJ9<%<Zcfep9  W>Uy_ѣVesExр*{ZmkV:A`đ#~T)5煵+wX[SYq%Ѥh`ܻqeߗÝ#&QQ$w[E81zΈ<}{VQb*JUEV[ΗhKBēBbf͛6lHG8Ԗjw=dHyGÕ~.@=(myȿ3%/BWL"_P2 5YuR<u<:. nn( pUCp|_b״)\VZXq.b;Hj__˯˭sʓZi?vU$MC Ui6=/ GyOHmu]J)vV#lɹɇA7ͨ9UFbzUF@3sS5ۉo!PdIuS?fOyϯcUSOuikH[3 j94a]@ex~FD/5)bewAV?WE7!S1^[յDiW1ЅJdG%sywqo;][wQ۹pb!Z@PU[>~DyKQj2ۄI,iP1#>';T@7P;t͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͍S; qRQ^Qřv!Z" hf"`]Jl*:.1ּ<ls~F{qfʯ"z  ?Mʆ -G2|phfiF۵zmDQC,q`#bĐi،^ݛ7 J=FęO$j^)Zq,g*ss$3ZSj¿@ĸ̳anyv7Q"#*QZWyPmBJKh+[B رnrkqcIm4nlֻԣ&1*YNP,|TsM]keԮ6ON4 c%eyQsqt35KqfoǠ4-jjԥ˚dp$ I iP+ąsҟAwMw(Ă"iG B-TH`)xð$NA$G:vq[ƾĜ\yNHp#JQHPsPPJjCӭ;a5 o16lٳf͛6lٳf͛6lT 5b5Z#y3X6D7Z*GL}5W@;'* YKYQI%:ּԑOE+g,?,opGq> z՝Fdm>?v@?yPnjzZs,r*Hޞ1D M RT- !ss;|kl1cdr%uڛW|衋R):nAːFm}4Hڤ'"zx5Ԗ~i_6hAm0X"#$ 埚+Zy3W:dHmg!Czo4Hi| kחBNلڭ̠۩WXرܵeS*tl:M\-@DVF_Q|EՏcV)"rhMv9O %n.QUbj`˽31-iVpyv9&)@P~^@м[uDciaHnT3mM/LPapS*){d7::ݒ=6g@@bVʋKW m;cVln/Ň!736`_k ijƶЏM9R'&:=ΑF = Ĥ"2G?,3ߗZyݭbD[W$').;u;DHjqP6lٳf͟lٳf͛6lٳf̈́`Ӆ͜A4">Qnik1}'W7 7S@T O?~Կ/]'^VS^ȩ8Prpk=YlaRtѹ)Bֆ,n=VⓏI@F/v~aeuF0H8;ls?.%)]]Da,ܭO5>XM$LVWăn}4`kOoׂsf͛6lٳbR-A,A WƻyasF ֝w۶Di2GXVG1Nd&T1HϚ?:zZ4Ƽyz3ŻE:1]|U]Ϻl5mJd2El $c~'UU6?+'5?3%(4 q/O/ʯ.yO:Ump#H𔡍Zjio"UXPԨxxW$kek3ݶiP|Cp~B@:>-IBe[jK3Rv@ .lWb9,R{XyC@&n(|_ W:GԷ}tZ2;a2#Q*1{Gv:5/J? (mΝ#LW* ҟ)YCQXRïLsrg(cI0pJތA u1\JdE ;rG# *8;\BKIVCŜ's޸j* RX\*ﰩ툺 ۑjV=qh[*Hblyor4IG0&',MHbwϘ?7jZL]Q]n:/0|dy+ʷe:팲1C*P31S/3^E 5X.#>d v#z\= U5#6zcЃP -z+Q^JiǿmPVa]Gss& 4 Z_ jjT x!ph%~9YiQK<$vIK[M{)$;u}?_OVmR@>Y>zǛ[$\ꞜҴƴY-+J"R.%JZreBȊt9רf͛6lٳlٳf͛6lٳf͉6hw9?8<`AiRۉX܆a֜a$nM!$)Pz'ʺ)@@H|;yf͛6lDWOq[~SO3󐿚xf&-K-ޠg'nIF Jl?yԎ[}xΠ༇g,6[!u/ʍUeZ=9'iQU"v(QJv2wkƼi@/$ kZu%U 8P#,CZՑg-ȱADew ߀}b[;Ӷs4~|yk0G%|;_XմL+4MuP =IW$qk߃a~}Q+qX.fd@*WQ7.Go0Oq Ρi4X*@/>P˖GX7W*rM!kO6lٳf͛6lٳf͛6lٳf͛6lٳf͛6P!`j3cWƄ倮.Y-é UzV)so̭lD" ԼDE-Rv#r>h}Y4w4i1*Cs\@_9jKPI5vAp9 AqXӼ+G DeRM;j{x[V5HTXє" uD{R2#cN) e#p(a{aFJu5#a\g9U!CEIQ^QcJcˠI+^ZCTpP v Պ5jY+ 45wicҎI䤀;Vptf1XAԀvZb%9 ZZālbį@ !"O^v~ |GcCgF2 F%jVcDUe"IC<ߤ^h]]54}FvCk72,o_Lqy[n5H.t{tY]XBLjUe#y_ʚƕ.jQvhLIjXTU?wYȦ:l$a~PMZ$#ʸ׭`1%zr#Ⱦ\k[D1<[ݭ%RAY(Cԕ-~m{kJJ 4ەꒋA 10~[5~t+Z_}cUӹK FȬթ$${4<٫]O I(Wjb%CKpPG"ߘZޘdnuzU_:Ϝ<+Gm}2OPRk>%K{~z4TPD*Hu^#אFǮTx͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛*2M:Rw=d[\ԑx n9o֬H37^59)XRȨk"v,Rp_/zж9"VD "HZb⌬~0 "r`7"zP^Ko6a28vHe $IVZH}86r kN@:Xnƞ2Ҭn __ָ9Yen$DBYH7(TmLR1!UFM*]JtD$v}G\?hk}IBȏ݂vmZI-K:%S>9 47i7)#+E.`@d !uTh;8#Ida"S SqWq >ŪyrXa sVi+V`[f7vpj%h1 gHnVr9I;_/t If#? Pƴ4Vm+TlBC3G;zhU^]$K6&H 1]}`[Bf2vdd8rhXP4E][I )\"*̯ːY-' JB2geh詸#ثWo UM2'qf< }]{JxaBkEv0V B[ lwfҒ~K%Oq%x8?>wyϗ,Z|Kk6֐eWm;gߘ/+{BC2jr-7 -y'pH@%@(Hcf͛6lٳglٳf͛6lٳf͛SPr )7t9f{Qt@` (i'/Gw||$lY6$NH#&Z*AC"˗P+ Eq !ԊtF~Vk 4Yjvwk HB4@_}ލ%'uufHLij 3H~lD355tM~4(KLUzj>‡ɺ74KZ`QCPO`UEWg_˃\"O$jrœNþ֯5#Pjұ`JA?ֺuQ@"q͔7\U .l~y:9Ӑ4Iq%40TV&/3˦X۴*VwR'\ʒ(l:t</%sH/ILBiRRrEgNzY%mCϨK R5SC+9.ydXƁ7@6d0,+$"$IM; aVJ#ޜ܈z\X@$hq0F,=kBOA P4s[(G\}|zPM!~'K3Fʦ0|wGщFVHbBOjZaj #~׮n̩ƇO @#}m^&(50¤Vc:{|x?|YXnqx>tx:+snu@ weV(#qZ/_CHR`ƴ`uW.JZ1j -AgoRXُ 2~- /-kIA-ry+ᑣj)NMXfZI6on-niW;bB'%}Gf%FȆYj;tVᵭ[%$S} $Cۦ,xx|YT4+Sxx1"U'N'%l u~!5V]EӐ%A\?qZY-wI4J1XUSvZƙRfuōűV+sbT[3O~U77VZ,:I^]_4 (xAgUHl_6lٳf͛6llٳf͛6lٳf͛+p7z`k!N+CPk9GD韙DW_3XZeڟgdC<',>PL4ƞcԫ!c ![lmҴ׽'I&H[~&-_07w 1/¾9$$+0oߧڡ΃|MWVTPrm \uf)RƄo`͛6lٳf́`q@57#l>^榏,nޝ 3\ fd2|O׏١Z/}}oc+><α_*ڤ1- L/O9_a+?3ܝ Qj$( ӷ.FO/̯_1KQ =ŝ$V3!11ոJySʚ !>g=o/*PsM>߫%pn\TFǗ~UÔ@j 6DVf ɢBv$־.fe*Z D˝UT;  cr$T:mFܚ}0WYcw)hz \FF2CU?l'E 3NGm @bO'$'@hFǠ돉PeO`>FA$هa %Q7'ޔ`iej(6^1OO$צɪG0NInu _83fP`ԓdY'j RG i#H n=*;o_\ Oܶ )퉝6)uvubF|oDAR]OтܹҨm̛R0Q?18[5[D@ՙz|)3-ɕ'|`fԮ]MND1PIcBFSN̊~ +Z1;*Wr@a|63r;AC@0?34/%:r -c!v>kNg7*<Өr1/@sEjx+?a~&:]Կ2gs{pv"J V>i z߾zGq]FKo2y{_BfXusyGȖz]!UeUНޙEU1lٳf͛6lٳglٳf͛6lٳf͛+z k }E*GCwj`;tԤȵkƙϏ;_=Zդ eXd3ZH+3P֕5xJחs'Zt4۩^xBX fZ^iSq^M!GE̞l=MnRDfEz6OO~t4VmpYW#bhqq#+NS x-U ~mF5a A-Q#c㒋=)9/CB 4tB3LY3##%7٩C.һ5lN/$gdQ<0Ɵ !.8*A-{[k;UгrZxWµ4;h8YjgPZYq^kh $:n4TXp1& rjW w 9!̌c@QWo wf5k*[tk b JBj),W};~VsMq9 $Nce`ymF?rqoO$i~Vi@S"klfkkG6,_LbVQ^$}>ߔ43Ez7!9M>!J 1D/!NG:9trf͛6o՛6lٳf͛6lٿ Z;+ W/62@& 1KM S@)Ņ[=gͺ~sfjHd)8wD -aĆ?~!,0Q BQJ8$Hʰ;|Č}ka颱5ׯQIOY(@jAbE)8ոi!ԐG2NѴ61PljA>ٮ8R]¤C;K:5ߑjq&XցWp?~zg5h-nZx-9Wd nC 8^]F4 4d;C4rlYW:F9Mcg8I8ڱ3vmdHRҀr5jrD`G/6)Z? _\mz&N*8%|z{`x8EU#nTo$_Z05pPBݤ#Wr9/w,D2z oR |Rm&>&^&:ҫһ|jBQ5*EEw%&ŕUG#:sFS^8Cy{zr%<毮yXvjb%gUo>pkXkvKȶ\2[q \G毛}/L{ H$f |@֬ Mv{g|)Ֆkb(S) P_띗MEAn;  QARxP- Pt͛6j]6lcVf;r^400dNR|zkJjĆQ!x4q4i=5*P{SpGScm[Y3-bReRI$V=zc~ +'>vҝþ%詐Tz0ܲG&Qӓ@J.#z(5ޞ9'~gK$FA+kOJJ?.Q)yjZzƚ|wAnmWj|$~w?)gyÝ ݯ"5Ky$~<^@UzO_G.rU@F(%8cNB=~y\[]$|;Glï#[ !|ݺw9)ЍT)W=cD&PW U8z6lٳf͔@=|ke͛6lUZt?Iz!V@VML]*QB@]HsUGPiA z!*xOÞD1w4yN@ZVx~~b5寖XRyf ҄v!;Q~R>cݙy R*vsVVU!MkAN2JSS!@\Vo_$ ndZQmj$* jH=:$tӾ V$ z1R(@>=$O"߀lu(`0o Ae怃ByRn6J=r{],㷒5gY f)i%/./uYX/$o[(.)7Mr5aK5`  ^A9<4;V9V)BxgTЎ-??=J&l`PBRhM9+I//Խڼ-,(D)YI,| ǟXE~^͚ڵwV[9PUDı)Sȿ42yBXz,@FA_k\W{{ 2ю8㍑5e%oы1c\no *HڵH ٳf͛6lٳf͟lٳf͛6lٳf͛6WLur1h@{P~y\OA*I=ֽ7G<ï:O𖷳$G{E(%HU䯶{ rfkNXjmA!SQӥUj\û (Ӯy\\D;J7fZ {Un{B2E%U:0A;|gtjyJGڤ/A, +QxR/6lٳf͛5䌰I؃O&ѿE'~ &H<~x»3rWwsLٲ{}9BwCՋB~; boŁNZatH$0Q>+Bӯ=CAYNHIRiO-}KAAYȚ Ol^IzOo:xzq*£s󉚦e -`l%(p VُD0?dgּa6tǝvBi$k`=aǻS9uf>S\5S>N:\韚_iݮA6bǩn@?|9eMrҖNx*A5w+sy*еln8vV#JԀr:gv¨>av@]u '>̞W $_ 8hS^ "T$ZWm5LM( v3ƍVm+C'4&*hOSn,Sr/6`j+6lzv5w7}TVSNR#%Ҵ7Q-´KFREMj^lQ.À"Q䧖-Li?y%\f)Vzٷ5~nMkٶ7դ[8$h\4?Acӣ+ٯd I)Bր6zc3qMwckp l OR]˶x*p@)o&Y<\LhxHEXBkJᲅu`E@@H41s) @hjvIv"I kif b *5 lKr#mAD2R wc?|cEB };zb1T7U+oEKM+P8eȐX{3N`*&)ScZצ8Lըʃr=HA[F"IG9 4@UonB|4Hno%U5Ò@M W>a~uy3ϳwHy;kZT^=g] >-u=]frKU hTR@ZП_>Coe,Pۧ6MF+[wX" ҇ z.}6U]Kd~ݾ!9OmFRzn .ȥ 4%'G?KŧizD62EpbPOs_ߘ:,qjD]Mj/fJB*9FnC#ϕ5 0(vH1^vf}{ J$n'@oqI)Cא'Zc41Xj^Xzͨ\.Eo'Ϟk{ZH^ qTT*tʟ9\\E*PaE13b)1!hT=+:)WVPt)#fM/Ld2ΒʵfB*=<i%ā;ؓ;!voM-,)8؞ 3yf͛6lٳf͛6lٳf͛6lٳf͛6"_ݵy ݄zƩ mu+)s@nGE3O桮^_yn<3zㄭwn览4د%a^f璴&UYgIɸ Zs~I~R? oI2iW6H;c(e Gyy ޜ}Ӽצ]DnH㾍%hՊIZ*6+O_ WPdFjR*Q=c%!PU=* (z( w͛6lٳf^ٲ͛6l[Vt82'jX<:SG_~]?ZH2 #}H&?N ,x02)ZȾK,? ߘ_zlZGaAyp7!VGUW>?맶ֵ?/.u!oĮ+4#A8f[;^e:O]-+ cY9n(oQ]<ؓS|çH|-F"$o4.H SL(ԼɦKuiȠ!@CE yUJ$ҟ\OG܆e:IÒr?k󙟘\Og=kI,~1 N#G,_mbdh{=lI Pj緓5T׭ Υ YAPjA4;OAʥj=3PN W]N9~01bI8fڼQA*qr yZ<1u!`T1_B$XP}>,l+JT[^ +3Bv>kF d5 b埉`(M&u)7bwJo\yQnvĆ1 O'0 ׫rGN@v`k4[B4O}HۦIuۻG.G>T3|D9˯?4[Lrj1C<3R$,(ŷd*'|Yo 4}675V@^'Ċbomv I<݀hFU1>;V0/+7_qC*hzLqu O~f"Jd |" 3@ Ȋ3L~kkP4WHՀ V2yPs&UW>\slN'$hrڠpuxn"vߎ YďXvjEM6e X GN S$(e!p.$3}XqYf`kME"ql`J+BNҍOQJͬi(Pއ8YqigJM{!-ݢ.tZ~}Q[NƿީȑV_Vտ4ԓ 6_h--29!/ *.WazB֫kQubS3y_sڌs;;(֥1l+S|KZaZ}Z^%PK _V;V9Xym^Q$\GR_Xַ g6Lcy+򩹦E.0<ڜAi[jTWBم9L:`+=uuzBMF7\T'?-m[􄬂-2&i.KJnhWV~[[wzLpvjN8;"Z=~W%1}0閺Au&KH Z* ~#m x)|oj:a= FSX&$ $Sc)?k9ט'|##Xjv2O!1i$RFZ4d-۷ywKqv&`Ionbfgd][(ѯf]T5Ku  Dg|F?u&-6C( Nz^T"meUfDŽ@Ct?($ TYAuޝNL pT6Ɓ)D#e> ֤I_>l^#m}愲(iՋfqƴMKWŖ5e#` W10:2GfȁCf;P 2ƋA h~xZĥZʨ,cA5m=1IQM~ehH\0ܪjxf/@Sp jMhGoeg8NCvzaaqpթS5$}u'rpAP_]VomOEΗ4߼LI+8>-Pg|iXХfa:+%ԯ|G]冋Z[0"w"=)8q+=2V(/6l\G4$֕2(|DXBkZ)K3.*ԡ?#\bInv͜EN=\c@"دxl)Nyf͛6lٳf͛6lٳglٳf͛6lٳf͔Huݾ&v îGeH2x>FDy}w#]{kSj[z" TAZr~P>ZBJR¢b?jOEg' FmOkld&JZLp#x<oM/Յ"*&;Ǧyo{qʺBV %Z-Ƽ!O7!Jץ'2ܫex V?ȏ:yt]k|m5eF'FA׽sJL ۧN%F؀j(vk@phi1Jc]hYQ'UOyb+q(~QQMlyE-.ItIB-q#H3ih:aYTIhČ/1%PL'Råvsf͛6lٳf͛6lٲO|q?H3Gz;D̨T')\kۣ*9SQ`K$i#tq OT4={S .3T]p>o *uF%F5l*|_8O0 h]X" d ^%4?Bǟ*Qv~xfll5G= [xЫlDkvRi/%f0,O"Ϊxq u)o=(?А91Jve4??hmosMO |tT-9(SăO ^gut.PQ+Z/hy &`TUQZQX֝K,u;goз/TeXF~#5CK^*Yjek/05JsenN=[IkWC$!H!ӏ/ MX MnUOX"bΪӵ+v~b2ίgp'ID% ,RO'uM2EϚhUҐޘVvDP~ガ+?4O4 kuip̓FTIU>& wPѧ7 (yKhn(+ߦ;`6۾ko鶟gw"LM W5xɚ)%Kj q88mS2/_r ]0W'5Q~³Mp1F|Lz|_hgWㄞnlƥ`F$T䪻8y*~H|5Ԣ{LK,HZG*rVvq۲CnŔ-_rSe`Q*WbM<)_~umd!Kr&xd"E^.j]KXq~&"}L^_KPO+G!yۙE6|O4}^ Bk sn<7?"-ƭ"@G*珨x5`Dr=-lJ; ΙmCF-6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͍f  H9^Z <9W+]k] ?[m,VxHI:5Z'|÷5/1" 0j@}V__%^MMhJ=icԪ) Ha$-Z)6+HrUf}?P:$@87nOKHCj Gz>?u'qSua(ݻ33H 9jryeo-5On i+I$Q2ףb?ծ_隝ex`eY BUOKPOjZ2jPH.73T!iP9T_e(yKL]f=8ޝ FOnG# uWa1"XZ]YGY+d5 R n̿.:DwލܗqsQ}Y'cB(ZlH#_Z:vՓX%lKz T2F Ap%L.<:;dYܩg(^nQ~đׇnshh졾Oo8Y"t22JwzbJ/4R>~lٳf͛6lٳf CӾ^0k7W* +P^諢e5ePrEb<60OŝzrD }8͘DZ"H#mzf{wuHd !RR JoGnuUCEAb6 "ªhDpMi%U)' hHԕ+$ME(|el梨GKol%`Eqኖu1ZCPlVv*q`i߮ق<֌1TPtq;  JZ5!EjEw|1pA?]5GNƑMw 1jiC8+)` UgZ("@qUۭ }HqJUbNiJnթ3}@?q ^E >mskq"*80E+:&j 4vHR*4HLqUr b.A o<1̠E zb&Yv7@Cȸ>܇/>4+5K]BΟ$0Im$fK'/=?_㷝|r0鏢" 'TU_Lӝ W_sm 7$Zp rLCF:cTy|-ǢW~~z1\% [E8EޝX:>/ 3A>ޜX[3X#<=èB- r¤WH>5fRƯqj54/~us]2](c=93?6i]޿/ۯz{w**Nڃ0QuZʔ/--@ޔxiJ@=ԝʚ~T(iTr(iFđ5-cQޘF"A\c[B 'ml #%?hQKf(j@'1?c ON@քcEB\F种p2&dPH (;"Nw!()+q#BZ%7NPDNU*65߰ܤQȆ'n(/nƀ]:1pU@Vh;![^E h=:PFկmbHS(oJ^d*U>jZs,7+ e65y14WnأnJ`6ap]8-T֝6S, 7?>ٙя 'aA̠)E@64BL1A}?+)J/V P|4N,/Xy1oP@ ^8W?掙=.~(LhdU\}\yRjZ%>%/"1$P ܈r*yp xx"͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͌s ӜC̖Q5-r:eRGZ!bv|㞣Ey9ZOq Y,Z6ݚ{qV~uGz/&s (5&n*~{GI%cQaNJ4HP*AU^\8dƴSTVP9~)JA; IrޛX*āOΞGӼݧK!`qŃ <8:9$ut 8l%sȯHUUy>h ln[yt9%d:CKA%OJĸeU'|6}ht~89jkrSqNYo/G%mcB9_6HĈ@;0]*/bWӿs?:WynO또+E:t1HUaMw<>Gs&sur$vEU5? }8ڴZ֗ZjsL6w-\;`Yǒ>^Hl {?qu_dΞodIGHϸRۮ|ݯ<&w%5' !D_fvFPàmeYZ"QJq_![HN(kJG9l-R#=6lٳf͛6lٳf͛6lٳe@ܓ5>,|ٳf͛6lٳflٳf͛6lٳc]ј"&*vhtƂYk!CrZ;%sfq=;יbܒaѶ[P1!J^Yq y;N}hRjiD^9a*tڦ[[L擌"ڔA ?=^,E}sx8' q$6$NApq$`%$sJQOg8?-;KJʺuRuvʰ(œU"-\-{|9Pvh$SA 5Ɏ! T=>' W=iԮgtF)+ :g %50/<7ޚ_Ec$ A J+q=fy{6ZŤkqJCDA$}muT QR;5T}0C4d^Gz)cEKxG Du .t%7 $hO jA}lj>+q4D9$S4y ZP)4S^[o*G'2ҠPSsOVvmLPZ4Ԫ,ԥGsYlϜ5%ZjEqwH*(9/yN,eYT`Ah{8DuONRkCMQ^ǾnCo闛6lٳf͛6lٳel:ٻOIﱥF?6laNf7|cҙFcUH;0HĢ@dHt=? REG_ +#;k_5 ClkB|qU؞ۭNq6GPv2D7e5 J*'UME(Ek~ؤƁEI kN[}J;WnGjከ+M "5Ps*G%CA6O| Ûn.G"cj(ap8N ( (Wzjǘ肄<9yk#y~ݱ.ⷜxRu.C0Y:\]Zr!=1٘}WZBƫo dfj/TԒ_ۦ{O>Aܷ7zt3FQ@1ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6l؍VZF{͟ZKvhD!O2&K(h3RiFiZp0[y^_^XVZZtKS,2Kjdep2%~sϚ4d.lRL,WA-e *ʈbks|qe}{&-MC,n#Xxxmμg)su~EmyIjQߍ>ϾFJq~_F{cq'2igHjhTj0SjpH](-Bǯ\1h*~@0Zګn9A@b헔<{27Z-qsW,[hp* CF}޿/6kҭmI"JWrL`(%bY31c :߷Ly!P p|:S0PjPq:W73 _{S.iƪ*ԧ-鰧%TPkmSۡ'-h@r?^hIȧھ=1ɲ&O΃|JH̎ZzĎ<Tc~]/(ZcS]SiП|iTS̩%+SjcP~b;P:w4YuI`/%30:l'F=V HRPX:Ku+(t1l.#[Y < o<ɨjX󀺼i#gC`dɗ ,Zb77rgm1gy"F2 U5 cciȦ80r$wӝFӒT} 2͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳܑ[fCT`u ңqчcf͛6lٰXխ4[9gY" BY ~wGIS ,bVpV}3^o5B \S R q"Tk~~ݯlյϬ=̚-P[HVeU,ʼc)j'Cq4? GқXM΋)k,]^%cN`m#" LIB6CS}?簏LYZ~7H4v xF6%!soד_Dhl,W")EUn\5d6ڄL1sJCBz'6eNi'2H#BioRWPjI,A9%.VFv ^2}EbBO~Lym7,eIT->EÞyo$Uv,qG@8|!׊@o0MUt)3}yGJ.5y汞UE995Q*A"g/yV[i~ؐ'NJj$)wň^"Z5WvP+`m:m#\˃15T"74rcji?4 r^2RCi!_F>c.E)89 w*k vlFi^@קz`KEEMVaK6, $ p60\5M^\j"KrnT Ate@a+~[[{ imZ]ܡeiNM_g j; M9bk,=N'a;*ǀ'k$_ZuԮCmLF5br}9{9M%ĖqE.V%j>+{g|H9uxV#Pjt}MCY5j"B4XlUAn^;)yhV K O̍F2kz٩_ aw# .tPȼcNCm?ztu9g݀5*R4cR"Bnͭg聭$(sIBTʬyH?/?"尲:Ym3,wpU\zE9˿x5Km6mv (x=zH~L(ONto<[$Px0`y0H٫$$3++Cz |Mp|7KAe{^lٳf͛6lٳf͛6lٿ^Q=Bza@  M:uQH#>'- TRN_Q8D1jՎSS85$J 2n$P}h w9rܭnA@*P;c$h6I vjXlV'"HbvWlV7,+-iN[bsʱ Rd5߷C(ToNğ yfT A wu>4ġPdh>OSWH(Tƿryr @t{_Em_UK4q'!1ir?2u2!k41wGyˢC_T#-{ HwS[f*eyԲԊ+Wp=DZ[VL]Up@jG*p]F/Zzd8jv͛6lٳf͛6lޙf͛6lFl]x͛6lٳf͛6llٳf͛6cg44m [nd`3y1SIR$Hct>mOKJF13eq'Z0mgT+ZjT{a'8*+':XgMu )![~ a\rmb7dPH>r&Sƞ=7S-a*9G&־mi)`Gpޢ%MH*|Fα?umkuI,IƂf/[SE~ۧUsi1E4PIT7a$"b mр'VB@/~[o w?0`A /r#'ZwEA9f͛64 SȥUM+qa:He`(^ifETVoB+!֥u@ o/%FRB2+qaxq\~ezR #O*@,f8)c^e\?+#jŅ`R;{e7`vx%/Z~bj_b[2A<WQpw Z7|$s__N׉oeybc*$$l@O_3h^x"U]EJq`ViJB\,TƆjOAƛyMS:2^ALqQ;+F1x,*LvB:tQ^bm<Ȋ9+I25Xl+Z:,6΅g,Y*ːRyo:21Ok%4yhPF,ӿ5osmqm<RX ~&:5;Hn]^ԣ-BkC؜3tK(Rh8MB9SOSdFcxÏ놑ʒe5cx6lٳf͛6lٳfʠj|D{p޾Д4뙸VI$#B~ǁ|{P~1R[Z֝۾:5ݨϲ(݉q3$G_)Pk#0Vg]h7X֧n+UpBHolFyebHǻ w7 ހX>Sp{`3WZt\wƣ:"o'UH0wqQҢkLpVT/5=sNJ[mɋlʱ X+W<ߝfAkZ_z_=FBh&*&ˋ1V-[4*B*%"{uv̶N{>W`hۻ\MT2eGe_M~LaҬetWÉח.UWzWq-59lѬʤ6*PЊ^VVHh-){=Z@Ff͛6lٳf͛6lS6lٳf͚6V͛6lٳf͛6lٳlٳf͛6l:憎-Hu$6xQRPLȏ=izƅ]ZL,mމchj/5?iK5VM.aK'I ?{ߙ]b%E7阿jG*G|h t11h;}EMyP^N1*X#z}Zcb2Hi9qŁRAުR΅E S U)ڻt" 20`劎HooBsVJr^mQF"nQ ^\ԊZऻw&5MqhVE ¼izrBR1j:93to+Ũ\WpdH#i>&$Q '.>K/\KuorU/m ʲ4c$>Eg9^lSOCe$3_ eQ-Nso$\ywz]bQx}+[i%}FPÏ3L_8-!HꁒBOz~ Mg[-LRHg 3f͛6lٳf͛6lPS6lٳf͔Ia]32f͛6lٳf͛6lٳglٳf͛6l߯"on(#.W6E%] +3ğy˷kڵ塚W֐ܳ3J#)[~t.BռiJl5d{k%J% !~[/_,ca$ydQ/աQ$QEZ!5o?loX`2cAqypE:#A5O;u-kYż}STW7V6J?p㚿UoZqw[ǔΝ&y-Wm ~o¥:/<5ȼi\wdgZ"RjO=R;,w}BYn6:T7_@R_Jht)[uE1, , v$" GǾ)h !jy~+QZwĢy'&%L(EH]MGh+^f͛6l@AfXրᅍJ\Pxx5֟i F+PPW /.a@U[sK&o:M:5Y^}\HE"062x/e85,(ַ2Dqe#|-} |ͫ~zRZrt+DI,WAF1Nt gj5_AyƈvNj9lO.C 3`XٕL)5v,/ZyKe# SME+;]ՂӰBvF 11+/VҝX'n E+Ss2]2憟ָ"[Q]Dh'$DZ"aSAAjW +8VEc'S8Ly+4;05Y3q (Dh2SA*qZ57^T#-ccUXu"Vk۹ oNiX=̌V%QGrr ~v5Wi֯u),XbчC5H1P>ѠϿnL4k 1A[ʳ_%URGN&5 'G$N? PҬ,ސOf^BM+𞜛g6xiRâ/LI#L̈9joɫJ]# <|gV-9t(4azҵd~mB%w/NcNT(: ٳf͛6lٳf͛6lٳf͛6P>/6lٳf͛6lٳf͛?lٳf͛6lʢ_ Co,h @5Pu9$п:2|\E $ӵVu۠F ۑ 9jus ΞU6^o$c9h`d]:G Z}7.-|i>tKp@W_nt_xΕ[^+GTpħ:=i5Fzא#~&5i7b6ӧ|i`x~t 2*ݩqPcwA| ˩ zxex$z*O!A {:RZ7-԰lkBXpymZ n.hB7pR򝎡EE(;d[PuOn #*B B? J3X˿X [ua<%䅈nGW8t$Z\ t]V@#kFpCUu៙.#]'z6{ p+$җ"M9|! cŖ+-7[K{a~I L~>,y_k}Hs !o(h\gVw|5EWxLP0U7Ï:PEybl čvn9OT$F]O^]]=VI7ic h cM8r&燶4E Q}Nz3>aDAxsF,G3b S4y/'꺔T+mNgrO##NnV[tnqcZ7~~ R%m$⡔UyڠdCgnq1*BOեղۨrn9bGSIŅER(*8X՚4&aUzj47֋o'H3rAS'|J`DGZ1G%F\jy-9lc}oa#W,KPZ39R4ߟ`WҮŕJ"7q B(RE&~?-K.u;GUI0#ȯHn⼓烵SUխ=AGd3W%V5Jc&"Ŭr|qdLRKJ7y|1|EE99Y]W Op_ٙ>:W%:#Si[G'e / #e-Nl:ΥmD@~ĬB"Ɓ@RO?Ur6| DkXEd%^_j=1yVJ6%꜊?T(=yT8ߙ65iˊ73֫ˎsZRiocaā[ZVv$N­SSw!)[tO]D,.I Ƈ%hڴ-XTMj~*o_HҖ(Ѩŷ*N~Pe͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٲ>d"x> GG\tR794L`ǣFdd(S-7cҫTrC&_@f2 1֛H鷶yAq8>1h$G_|-u-*˺}Lk-{d/2$`KNy=Q{kmh`VB -&tg ֣j6o+kQ3+<*ĖVГ׮vu&%* Bu?#A޸ٳf͛6lٳfͽ6GrGldK&b_W@EG`Cͤq# ׎)Q;Jut,C +]#Hͮ['\D9MA,|*{K"v-4/T޴ge[WHb,P ΰȴ'R=6~b~'Qy[YuYAb|鬣ImP,dڢUy)ɐͯ{kM*n Ӧ"H}Hبזd|9%˛ČG[^+UCrx읝7rVxfRK;%Z$I%je (:+<kL6>Ѹ<HhyW;Vk[]n)!B5’)"өɅ+1'۽BsnJC5 T7]a-`p̒ѲXѺv=j7Rz d5Og%/QcqPiWzPwˑLb#IOl ;0Qn.TMZK4%uoNWVlr@|p6F$Q6@k X-B\nBP {a|H^&UgY]0 ָW?s:$r,irU ~ (kD?,4M Nr-ȧ*5#z_>O#:Y:b#T'XP{H1V)#F&ƕ7Wj~!-_U&--rWj(Hv$r@Xd:~|$~DEaRޗUᔱyy m.d2OKqPF9ڂ"0H䱯g<yG-SI#aF+0y;re_ſk嵺ie}72ʂ&"#?W |ӖykκϘtXmd&)<xJuGGj0> Cy}h4Ro7K ,(QaU2ψRqyOͷmiwZFBs$,X9԰m#aܿjV}ܫN+|q(QDVRʧy =woms'JMyU". @ WS_n#!>cu5 Z(i-V9`d1qڭ _^}CZx[̩o%b A!]v^iMVžGw([g1ҼyUNpVYwB3 5)Qy6{7.io{ķz*wH+~Ήke1 MN=sz@_Mjt6%E;6lٳf͛6lٳfu͛6lٳf͛)X0 "/6lٳf͛6lٳf͛?lٳf͛6lf͘ʠ9ׯO }:ʪB҇qϟ8囝1ӊ[$e,z?|S~Gڗ4F;;Mhg7zC۱B@J|9 =o-)Z fifBQGZHh !2/6lٳf͛6lټsfʥzJ3PVW(wu c qd)A=GJ dV 2 iqZGzޟZF)S} I!I~}'"y2\Ip~Ȝ0Mծm/hn2`'"E)P RkӮA8 sJ6sh֗R@%Iʠ<8D=[IZs1h¬g쯩'b Y(ia42 kZչ0CFĒ߳US?<6QY~ϩ9-F^yR@ӌqz$D00PUAo~ݳ}J+Xkܿ?OhMl@WG+G\~k T̀0*L3oWW"~jI_/ZȪIőƵVӼK0vv,!Wf<FvO.._Β곷Y8"ePz*@wVyCVqC(Kj I{]Ҽ x,揥:(w sd W6lٳf͛6lٳf͛6lٳf͔7^lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lۚ>Ka[C5{GkIYnV /O7F|3Ci3Lv btI,yEf_4qţ]QfKp @J3ϧON{遼( ?jBXג;\)izTC/4ZW6lٳf͛6j=3f͕Mrf͍+zr>C ~\oOŸ#RSm{5Yd S7?v#.nQq.JZt KTt րN֭.tR/" FvC_FVɨBK5х!rtn9Qn$='FB_PwJ.Yc*_Ie$-MO*Ʋ(Hpǒ`企h|<5.}^RU?DjG) :ټ22J ZO Ox.dXa@R@j)h5[7JPP=JSZpmƭ i<)%^@ @{室KڿaJߠc4K8*) >~H rJ*}3,8}wpE#HedpO)L8ƩđBX&It 4޵xZ)%@(B7Q}e D^fGbvkژdwwR#uwgM@TS<Mj-aaMz OHdbbW vUB8*A5W_0HZy,q(~Y|9-kfnZ{1[(Pyq;Q_mPYGI\ESe +źmN.mF:ݼ!uDdRMҿ旜 _{g EF-#)Ax2-뺃y4޺14kA]~Y6HqKeo9 NLTŏ^[ZOiJӡkEwg vf-AMsZ"G/ޕw&zvvd5iE@>liDKŕx` SAٳf͛6lٳf͛6lٳf͛6lJ(74's6lٳf͛6lٳf͛6llٳf͛6lٳf͛6l..!Uuro<9 Iw-,[%/5xEvrk+96$L,m/?| *!oݲ8 |y~mKV&'EKQɩWo;|F̶,~~9ݞHfVҕd0qۮf͛6lٳf͔ErS(͕M4ӕH zoVОw̨ bnqۅw^?<hQnLh 8hQMi@hс@ESfo ~мiTL}}@XnD ŖJW/nߘyoְ?UgbN^ebleZTK?&5mOut !5Pe`GJ4l;iKeBՕ( VI˝kT97[ dĂN?es_i7jF"f!o6NkK{C7wQ: #]'}F-RI .N[\'@y?’3(M{~ySy#w7Qq:>!Z~3NK,R,5l~gcTh5 {ؖYDFU$Cpܩ(j>/!G];V9& 풁:.~ۖz9&2C?6.lr0yHŽe`6ŝռBO$'R~_,#>أYL'ґCHyqRhMך-.;8;uJ[FK8rSmys'QE泚xĒ]Sf1^+PM)7?ߙhZf4+#aҴ4i15$$ܞ.J/Dt6v5P#hI8/5( ܷ֡Ooɿ.*J8"ԒFiGi^z ?\ O R*h7gX±< q%|2mi) f'jսzeRdH؀v؊o_L68(f͛6lٳf͛6S0QSҠl ܚyf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͕SP(i2eOsᗍe צyf.%x+t;lz9ySk./'TeKYUx31Z Ozn/ >k,nVPe~dTд%,td٥2F4e|4C~R~~{Hm啥$(dZ gXGqmO}ef  k|6lٳf͛1͛6olم{I @۷fMcr<;]F@{)GZBEwּs^!BiC\F[QDdPOqϢZ!8* m[kxOH aqHѹjdd[iW^[y # ԿZB6(@AS(wh$翚]Re Ķg+ΗM4hV7ucAΝNj8n;`2PwEki1Ƣ Z!`R%gOў1/ڨQrCa+OkJ-h i~"5$.FWEbd*@JlM:8} YP8{P;[/ME6 Vo x:6lٳf͛6lٳf͛6lٳf͛6lٳfߐ5VǦ^lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳe2"c%K*3bX|y뛇G/$B84U۲z!GCz7 LSO4[P\0XD"?M4]GD- ]UcQ(#%Rnkfi;/$qB qM6m+^i!l#TzJy@.=]/'/ZX P9@iP2@zt%MqC(i'$Z;x|`Я*B >x<` A#Wh֣"bthR%5]i:XGc:$" 1j@7kX1!ꡣvz 7c H ԭ2Emd3*BW pcT >C@:f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lkF$47$͛6lٳf͛ } ;Fa,w+/r޿ =䟘?c3X@)M%,J=NJhYh:n;W8U< 3n5= oW4;x,㾍ۗJGߵ25? s;K2I()q!xSsO>[4j&"B,]իr]%k2Txx`GEڏOۓKw9O Ba`:)#8A` 5#k 2.Sr)Cs?y^F5hX O%~<#44 yP^RZJ+8̋IJ_g|yeC$ryTb957^/Il[' 5rĊ:V€D](*.Hmtu'ޡZ_j},%)UzT.tcxͷx=mH h tRVGW'Fm1~1_ jB FŧGib[Z0KtBvS36lٳf͛6lٳf͛6lٳfAt͛6l@E z/6lٳfTmї6lٳf͛6llٳf͛6l(w6lٳf͛6lٲ܊u?V22 $wXR~p]7|Vְ64eq@!aŁFUϟߘZ`Γ:LZs]R$IR[ԛvoU E@mboaTܵ=Uk@Nsտ_,ltaX+6bEPܣ&! %7˾{˞z{XdYF1 s 4DZf͛6lٳenq/6lٳf͛6lٳf͛622ȂۭI!>{vқ3HjB v5$T4Oٯ1D\y m<8Ǹ!}\E!x 䆤ՙ;x"@*w(IIWpĩ44q6֮:mݚKPʩNԥz |.+~Prw =Xab & ӧ\ߞ:otHiv2XPyJ(i#V26ɺ_LvjkmZ)CD85%O2ÒdߒznnxP2ԩ9 ~XQ\Q~Y\KX 2Bez+!;΍,0P ׯal,An@vѫ5`BI|BcC%:Ӑ;Z(ۀ6荶zMZEH9_o+mnTJ$B l;?Vb@ ܨ> A6lٳf͛6lٳf͛6lٳf͛6lٳfAZq~yf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛1Tbm!qO xеKW5oj$dBI< ]9~e=hmBO+񛆾+#1` QȐяQf+iZk{]B6UXe_S'?:ͧYmʮH8cW'Þ|ߥ}) ր$*whGl.Y"A^[֣j9x Ĩ[#7f͘f͛6P=6lٳf͛6lٳf͔@"7Wᚊ@c^b*Jmq)(!%T קї2GB7ĞF)$lHb+v,cidc R>ҘejBeA'e3~`~r+K7ccW246q%Ć4/DOzSy0_3SVD'>^#+nJr$_KƂn[JI[kx ] vi(*T1q[|90Ʊ"j֔$|USɸI=V x]G6EKl? -խ% (zpqCJ%cFei '`! ,Z.TP!_sJ!ـ7 ]0BMzf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l+mhZ[Hc䔌c #sPꄰU넷 5*;8G%_ҾM ѶK琴j=>B`PzZ'mGڕډ&HW2%IJq2OXQ7.bMB>n/IpFViO4;|_,-uדH!;ci.%o̒"T%I<mՀ:D:rԠ-Wvޠ1QZXenJPMb'G Z=I߷Zof͛6l٨+^e ͛6lٳfQ1[Sƿc$: t7yT֟1}CA4[+"c؁4|k7B2%ĂztZ1zƸoB" ACCm;[J ʭ5+M PF5_3Y[%)b<KT@+gϿMdZ4jr5..Rb T({ԯ.$$:5q$B#/x:? %XfA#jyȖC Ԯ-d2K`$J*8H]o{ؠ3oiq,K#e_U#sߖYl!xmF%b$P*v=5m8Ґ`+߿|K Z|!x;SOl4%w%HY?Wsa_dV$A㎍Qch^gLQJј(PGQl{bZw5s<H/PO͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfu͕B(pIRj+S^yf͛6lٳflٳf͛6lٳf͛6lٳf͛6cToBf`  {a3Pu=eߵNX6Y\H;tLǞ U&01Zq|4"r+֝sO|&kWhPhX@t@x qM4K #LҞ2F2H* $S3^RJҵK{jmowHx@€ֱۯN:d?7R, gw;$2YL,!KKlE>y˞x,vWfz[m۰'\YyO 8b؆ڭŪBٙK4cm&Qp/#$f͛6nMBrm^lJGQZ,־vMOzcjmNƆU$峪GXJcZE8ɃqҼvPTI~8;ׂOoӽ2S)JԕGI*k9tb0ULXd 5M8[q-Q*|R%޾1t})SQ*@rn!CӊI=869]VK{9nou<ȱZ(A~J|i9e/4B4/OM~t ב=ZaK} n%9kS/)y7̚AEA pn[\2-ŞJf4W4sLE>٘ ޕ=Gh-#lB! ;J7^Q28+"GVQMVع["QM(y v91H[_PN)a$76U]RZl^ ;x#X <[%XT' e@}fHTЃBz`RS ڻ(B+b6P*;˾;6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٺ`=\EFm,#o煚ՙH#pv! ?[GnrG,v̼Q̥Z>\XnIŇl8}ͮZ뻅 t$(VYۀr9n*u֧e] /%KWGRť@Ւu\E D@?RӇWZj0:X]Iu3,* 3?w2&Yk˦uk2$>5*G)J{"axgd6 *p.NPT6PgldSlwxm͍7S(,z2;TbMWj5>%Zn:oɮڸ5Z6ܚu锒ڀֿROqJPW\uP[F'}ƜJNF( vc`ekrAo5Z2n@+B+֧eXxצ- *1'EUE'j|V!íhjh(3:ixjRuKN?w33Ɠhr-*Gl产w{2A-Չ$:އ9o?-dWйuT̲qA,ʜ*O>ַ:Do=FiWq F`g}V .N#'4 <$#U:t59y%ME\'ac!wRsjӤypA6\t{.Q?z]ҵu̼A{7 0\׭,,B]A8懒^hK :ATW EYٓPID0$H$ĬjB$筼c)L@ƁwZw<"; ֤ƽ0qYB}5zP=MϪx][bE;0l0zY(OZv`04cR62 +RIQH܀0J*rXI%Ƅׅz7!ִ&_zZt82f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳfOS4F R9ם|!57뚆g$8%Sȁ8_?< lmY$y~F$y3[UyKF .&ct4F!",Jd/Ϟlyy1[F֌+$lCRBI*G"ݹo\ O7}!=KȊ 쭟S?$<kbY mgw+6Ąb P\2J/;6Qƻi3^^%V1]14&bJqh\\} 2D1A37e$d 6e`D3A\gTע1I!Wz~U%V͋R+MjP[[9dvME7;xuIka i |IPEC~pZ֍G<0D;\T((Ȯ9yO/ڽq2b`CEFkT7?V4Ho629g"$-ya9ABQ : 345C4ԊTJkQ!R+P{ fh(nuMB+KUuViBTHA˶GJS1b癙V, Wڅ#S b ( 9ޘ ʗ]Oitd#rHFtvl/~ o!쯵 EhC(lnW#' m׼"6bt68XfFIa'ٳ_j.kw5k}5 'yYW~Mffߧ|a:.:xaRsTyW i&[{9^Zzaȯ=ź:2ys58k670h:^oH>C$jhKk\4mmD1:/e6|-1R@aIֵkIXJ HB "&KN%N<}6[MdgXHdBzˈm3f=_ͪ[85 =w jh(IUi;_5 aHF9 P#ӮwsvU,vq@xP(~|;NE6^egYb0X4ڬRvᚊ N^Q!A=>xU_jfWً99<]}O,%2 +~>Upv/]NP%մTۘFSŕO| wgԵf[Җ0n%HD^,:~ 3[_,jCqCqq,N8Oj=1?0~fyVm.6jc3:QbURX ռ/5 [k F*eT*2Zm ~Mc[kg[VL{GT?*4[ql]kzO4Zg,ZĖѬѫ@etb!~|cwjZ9터?՞&|xy_Z:42sTƎ 7,f`*ysC͗=e\zCq{k UDLHf<R=ζ%O꞊"Vw꜔ ɸퟖ_wיtc>gp^KE%yzH5/mK^ֵ4صoG4R;Vy[Fi(RO|dcTj-:v`ZHW;w8P]`+ˮ2܂vpͭ3/+üZXX,B߳.1Zuzrovr[[c(Snܹr}WWzë؏]nMb$Xc}5=ƯŒm Y&*2I]R]w8ci/5hQ; #1گ}4BM:/+ZD`~I 2\HMA5/*>X\>_6m,E}hn2VTO( lu5}w&$dkc8 A#V$MSkcTmҋyierTS@ 'oO;Tt#*%B q!OyE8q)6W W-Yc&@P""q~)_ék+ja$F'@Oc jYg1X!qJ:P ;yV+ SL߁X@ `+& ~򾝮[66q[ImZ xcDh 3(PbwMhM* E7i,4`XV4$!' |8yGVˤ >8oRz`. EI#E |%@ikmQ S*W-S]enPX"p}cBJl95]GGެjŪ]v@DP/~ݩ0,Ц %qJ~so%6?pCy+Y[˧',Qz}2V\Kȏ$S7418Q(J&{qyyP=Fq^jhj7ʼvV訢ܠ? N݇Gƛ9WQ4Ө?xYǿ2k.c³ZK$-̂+g'+/di$,K4FtP'}8O2%n)k%344*,L$$Qt |xԓLmVA+G@zbI; }A_MT]A]KUZ UqԠ̃ac͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lA"25B*JmAٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛e6vX*|4 uk?ZK[i"K̬ D_PWxKJ嗛:徤,%iH@:|'vZ$羿*?*boә "iK01;Ǖ4Y!dH0 NDқ{0`?-\@!S~pZ**ԯ~V>YwQiqKsu! o2 3]vGIV})@)B7Ujד|9ɩ~L@ȕ2)@4bk XkC5 (U_TmSJHY |Y59P$RT j h6ŗEFcY}5"BKP vL˦zeeک;qI5(*0c^u T#JcC < HX*'lz<\-@R6aN"ˆђA,A5_Ȭ 䢮YQZ t@(+AjP[ `Ƽk1_DjT'If59qbx0UHs2+) T0VwqCXE<_T{Ԓ:H+!uHU~roV6mn--lP]i*/U,iWY_/0ߥc!Kft'ӷx'AǍ)].Gs^'J 8?_lym줆j()mu dAmbT"y&A">"5>4U2\z^CedxwϡZQk!)P>]G^šWHFI=ݑJp'lQ , m(<2f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛#^t{.fS̀Q]7^mO8Xyg[i^pȅ"~;w\1/˗Qy9:!PA *B4ryn-c*W*PQ/h: vޙ x#8^8)~ۍʂfZjIǘZҜA54+οj~KӬ9,0^\'1/yDl(գOy-2 ꖑϨI"ҡ&B*"ѓw䞥dɬ듛ؤQeBT ZnhZ(*@F&6,P=FEzr"kJ:W+()a\o\wGfEb _/62 ۷% wLCՈ;P*]*~XE~fvҀv!Y3+A,P)ozot,YAޞkpJvŖU5҆0]>זVY'dN)v7jZ8(q PP}o-o`Г1*sYV:+Ng ] "^edP(;ogM>#E7C{ǫr_/M8唋yOPNWHP'~ +>2)粴gfUqcUP қ־-utjaQq,f?hGȻՉE4-q6lٳf͛6lٳf͛6lٳf͛6lٳf͛6V=)w/6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͘'ƻM#Я-.;)7Ѻ+SFϝΫϫirkѭD@y z#~dT84.YڡI~8;IjN9-ӁV)Pi}l;t62!GsJtI+7SEGeS^+ȏ ҀK$jRZRGϹDI^j~B5S%KtcW`V82rVq5[ XuHZJEPH֣e#`nW^twHԒGûubƠFq$:EQMl{FyC]u&~ Y.dgea꼔_ ml+\GR" Y_-´,+FzrK+tXtb8Id-*s@re$94/0 չF؃ĚnO':6豐&ޕ7cl} P("XW~\Mzgͯϫ<+8:7@"&fUkU9St|\k8mG[M^5Rd!2 |Tߕm$QB QҕɅD SzJۖT4Ǎ)6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfztt;6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͔ą$u<柛i̷7QKoVRqޟϗW[,`[Ԣ7VGRIRcN8\xgt.%tWcXܞXWD^ۥ+?!^nyZ)J^?3dbȫrW\⧔|l#޷Lb8 ԰5 &n +v;T+_% 0% H#p)JW¸66F ~N~7|ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳ ~f͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͔ztkV0s.dYyMfGAXb+QcI# +01voQmwI-WJ8x-DH=8˴T9PӼ?r&dӥ{y%6VR1T$-xrÅP.it.M;ͧɹp=:2<T+~i ]OZj2ܥj;e47?s=Bڮiq&%1G4(rԐK|DhY4lxDR\JTzj9BxzrM|yZAi)o#K^= hyT>, qU FɝßJwe͛6lٳf͛6lٳf'~;fMOs/sCnOK?1X5H^$mO,Q@ޕ==\A"vFTcso7y+N,2[e( ",Rwr g5?!ݥv}ͅtKRD^5gu>PyiKqjskR ۤR/MBA.6FeXW-[KQCȼHFfߦ5X5DDȯ5B@ j@f?xsWA#i+:"\BU~!+g-mT!"8 RiJTɥK$yvD@X֢.@2f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l٩6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛!~k򕞬+2%1En@ϱX?.o.&k̷N Ԟ[3~c.JG+X}dKi,W *<i5Nm"X- , )y=-,d7NI _V/MQND`Q"QЂ_'ZLrk,&Y?HІ.Q@Y ׻.vO}3Cam5/*%}?zf(@*K-4TTw  ٳf͛6lٳf͛6lٲ͕T19pTu }=ەH+M .l# C"4vr1 3W qhN zVO9W?!%`ВI3r.~$eIڕVWG˂0첞4+dt&z=h%v ӿ=g~J Ǖ!AB~֙>4qU ƀ;uM!WkٯN, m6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6la\ٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛650*~v:U_}~+i%)$IJIU4`1u^OmAwSIk~we+6ESD.fI96-k CfO/SI$$I)I$JRI$TI%5}=?W=-k+KchU^lX۳3Y;1ۓ0pܮɫWFkM_RoWVZϫuZUV.m55ōݵ{jeeTUeJe F5X lmZic-U~tպcqe6X^ V4ڃm}l{_SQ%713UKcePHjU]?c.iR[Ӿ.hYTbϰfӧXЯikcv[uc>o+AgV9~l)5ZBSp ٿ%zO\r E-ζBYOgWo}lINսG7XU[e-ͣpeR܌K7j%e~j.3N~t{p3WK.0Y}YmCdW_~OW٤ɁUK%܂:Z˰kC-ϷԷ >7W_:}o+}Yvu 0Bޡ}QU6,p]B̏zTf_W~nwO@v}~`[:ݘYoSNYH{7z>߳0}2Wu\ )ِ Rc?jZ1q0, v/M}WؖbՊT3?W7W]Lqh8Y^6 ݓ3o_jc&d?OgKm}쾠~WPei1nM_95nWEuuo=8%$·kqZ̬\;nn^8kUV ~ݞk}OK~Sz/#'+}L;oה0-b6Ic{}yVx?2F}Os2FOK"̼![ې.o(ȣ"zWUTĤc?LAv^[uRs] m c]j-j[/mVPC[>:펲{ʬuf>vV)Sf3, 7%ձ7gfzhW-coXl}YռˆI>E{2)ԣ"DI%?TI%9Mm>?XE_Ya>M}z'qZ(*GU*c\udTbʬW9=Um~[`~#-?}-DSWB^ެ = {In6z~pzR%ٙV֟FP1ozv~%}Ye5&Z{ݶ6=VWs;Eۿ~ĔGժ=Zkбnu]5ߢIY3%M}nF5,5seǣuM~=?klcZY S%;/c^19.g6*%o-i>J+v0Χm'cY.ZvJspq z[gWq:enm mes/oCe+NU}yMpj Ȍ_ ԪwԪ꿝Ѻ@˗궺i{۲=WZCg魯YfF>>U/ɩ`eV49>ZWqُ+#20nKPs(dߠ5.u=Ku. 'mdKfaW:Sm6 ng~MvcUm?Z5UU2Xڪֵk75)}lk:FuP~6]QP17Sm$JTTzW錫mߒKͭ5cwuϪڒ^> nsOp o0kof?=j,F^ǶSfN#~g;{OUS+ ZjO lod&Hl^Et ?PhΪXm{,pû4c_C,2 66}7JNE5dݿ*ˍ-8}~7+p;O7^n^/\d[_HȾ۱8 }[ablz):wVvfS55i\7uչYř ?߆Czx4.}O6y/Bǵgn@ &}Yʙ('S_UMFU zxxo7E_IJ}nlZi a}66~j?G@:m =Am?1wSE>reT:Q=M^-]Wϳ0]-{饞i?JV> /eua1=O֋^7BMLg}4"S~UWHy}VA76z[W^Y>XWL-^z={FBݛԲzQs~;hmh.ٗgV3AtXYfT:bv{;f5t2ˍ־6WK]JΊ:M1!ks[n]R*+yeՋkC=SBJmV~Sm׼A_Ͱ7f!ւJR3 i! Ӹ9xðUc3()I$ST ,\yU6փ 8ptSe,j_E]b= Zi?Fgoi_:~F=aim[at]`:v7fgRE&ebSU7ב[SW_e[bJzFhk@kF 7]Mڪf5)6gXubUZݞ[`ɮܷX4Y}ߟrlޕ)/?Yc_iC}Ǻ=Fozkw:{UssX=OR\peAusYK=zڿKj32U~Ľ?};evv2~SzviMڮavs=7:g=к=_[tǤ>15P g\f/Wj';7:=Zmm0Vͻ15*Y39}iWg[mvֿ;*/Ȫӵ_)%6IٓGte`;q,%J}Zi閺Ϋ$h[+̫Ƨ[WZJ?WmO,33 sK=JF6+nk_wzO _%'92QfF}z\k}~XgS0̢C-ng;豯ZM!ES_kWH!Y^\Fߛmy9q궬]؝>'>fׇSפ^8zu[0),Z9 2*ȩeOkO::椤'Y.ǘuAѨi7evV;۾̶Q[?unY/2zvk7ܳlYpX/c.kzls:}/w&gJYfrS>L02Vױޥo SnFk?w2Vq04'IOTI%)$IJI$S2-`;ˈ{ ])й_WOzKv6ʋ_4\s02?Dw{MSo_W8!`s}'XJsjvd1*]]:ik>֒I$$I)K#tLVӰqSƱ27VdS7{=Z,g?WŮJqO@rfEMY)*ֶI%)$IOPhotoshop 3.08BIM%8BIM: printOutputPstSboolInteenumInteClrmprintSixteenBitbool printerNameTEXT!Photosmart C6100 series [49440E]8BIM;printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oGrn doub@oBl doub@oBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@ vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMXX8BIM&?8BIM x8BIM8BIM 8BIM' 8BIM5-8BIM8BIM@@8BIM8BIMI Untitled-3nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM K_ / Adobe_CMAdobed            _" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?*iM,mUT` kZѵck4IJI%ckZC1vIiָUk,JYB̛)_QdIg~׺Ɨb9gn6C?B[3ꮆqiVF_XޅTkgoGzJvX;?:mż_|>v:U_}~+i%)$IJIU4`1u^OmAwSIk~we+6ESD.fI96-k CfO/SI$$I)I$JRI$TI%5}=?W=-k+KchU^lX۳3Y;1ۓ0pܮɫWFkM_RoWVZϫuZUV.m55ōݵ{jeeTUeJe F5X lmZic-U~tպcqe6X^ V4ڃm}l{_SQ%713UKcePHjU]?c.iR[Ӿ.hYTbϰfӧXЯikcv[uc>o+AgV9~l)5ZBSp ٿ%zO\r E-ζBYOgWo}lINսG7XU[e-ͣpeR܌K7j%e~j.3N~t{p3WK.0Y}YmCdW_~OW٤ɁUK%܂:Z˰kC-ϷԷ >7W_:}o+}Yvu 0Bޡ}QU6,p]B̏zTf_W~nwO@v}~`[:ݘYoSNYH{7z>߳0}2Wu\ )ِ Rc?jZ1q0, v/M}WؖbՊT3?W7W]Lqh8Y^6 ݓ3o_jc&d?OgKm}쾠~WPei1nM_95nWEuuo=8%$·kqZ̬\;nn^8kUV ~ݞk}OK~Sz/#'+}L;oה0-b6Ic{}yVx?2F}Os2FOK"̼![ې.o(ȣ"zWUTĤc?LAv^[uRs] m c]j-j[/mVPC[>:펲{ʬuf>vV)Sf3, 7%ձ7gfzhW-coXl}YռˆI>E{2)ԣ"DI%?TI%9Mm>?XE_Ya>M}z'qZ(*GU*c\udTbʬW9=Um~[`~#-?}-DSWB^ެ = {In6z~pzR%ٙV֟FP1ozv~%}Ye5&Z{ݶ6=VWs;Eۿ~ĔGժ=Zkбnu]5ߢIY3%M}nF5,5seǣuM~=?klcZY S%;/c^19.g6*%o-i>J+v0Χm'cY.ZvJspq z[gWq:enm mes/oCe+NU}yMpj Ȍ_ ԪwԪ꿝Ѻ@˗궺i{۲=WZCg魯YfF>>U/ɩ`eV49>ZWqُ+#20nKPs(dߠ5.u=Ku. 'mdKfaW:Sm6 ng~MvcUm?Z5UU2Xڪֵk75)}lk:FuP~6]QP17Sm$JTTzW錫mߒKͭ5cwuϪڒ^> nsOp o0kof?=j,F^ǶSfN#~g;{OUS+ ZjO lod&Hl^Et ?PhΪXm{,pû4c_C,2 66}7JNE5dݿ*ˍ-8}~7+p;O7^n^/\d[_HȾ۱8 }[ablz):wVvfS55i\7uչYř ?߆Czx4.}O6y/Bǵgn@ &}Yʙ('S_UMFU zxxo7E_IJ}nlZi a}66~j?G@:m =Am?1wSE>reT:Q=M^-]Wϳ0]-{饞i?JV> /eua1=O֋^7BMLg}4"S~UWHy}VA76z[W^Y>XWL-^z={FBݛԲzQs~;hmh.ٗgV3AtXYfT:bv{;f5t2ˍ־6WK]JΊ:M1!ks[n]R*+yeՋkC=SBJmV~Sm׼A_Ͱ7f!ւJR3 i! Ӹ9xðUc3()I$ST ,\yU6փ 8ptSe,j_E]b= Zi?Fgoi_:~F=aim[at]`:v7fgRE&ebSU7ב[SW_e[bJzFhk@kF 7]Mڪf5)6gXubUZݞ[`ɮܷX4Y}ߟrlޕ)/?Yc_iC}Ǻ=Fozkw:{UssX=OR\peAusYK=zڿKj32U~Ľ?};evv2~SzviMڮavs=7:g=к=_[tǤ>15P g\f/Wj';7:=Zmm0Vͻ15*Y39}iWg[mvֿ;*/Ȫӵ_)%6IٓGte`;q,%J}Zi閺Ϋ$h[+̫Ƨ[WZJ?WmO,33 sK=JF6+nk_wzO _%'92QfF}z\k}~XgS0̢C-ng;豯ZM!ES_kWH!Y^\Fߛmy9q궬]؝>'>fׇSפ^8zu[0),Z9 2*ȩeOkO::椤'Y.ǘuAѨi7evV;۾̶Q[?unY/2zvk7ܳlYpX/c.kzls:}/w&gJYfrS>L02Vױޥo SnFk?w2Vq04'IOTI%)$IJI$S2-`;ˈ{ ])й_WOzKv6ʋ_4\s02?Dw{MSo_W8!`s}'XJsjvd1*]]:ik>֒I$$I)K#tLVӰqSƱ27VdS7{=Z,g?WŮJqO@rfEMY)*ֶI%)$IO8BIM!YAdobe PhotoshopAdobe Photoshop CS5.18BIM http://ns.adobe.com/xap/1.0/ ICC_PROFILEADBEprtrGRAYXYZ acspAPPLnone-ADBEcprt2descgwtpt\bkptpkTRC textCopyright 1999 Adobe Systems Incorporateddesc Dot Gain 20%XYZ -XYZ curv 0@PaDuRY9.9W" a A )   ,Ee$W2xov'D !q"."#$p%4%&'(U)")*+,e-:../01}2\3=4556789:~;m<^=Q>E?;@3A,B&C"D EF G#H'I-J4K/;?r'3;]F* docr5]sy˞jҎs İf1!v^,?g|?-/c-Υj (Df,fXÊkd댦342T9ֲoA(G]ԏ+\AG";vݢY#eejCZ6o k+RvHnFQ^#lٳf͛6lٳf͍f**s+r˨\,nӷ\u{W5؍S\NFP sGMN*ڋ 7(R)$"ÿ,mǘ;ŨRޥ|<=zp z M(E|Z҈bvLWj?pcʷV?\z798m{=q_Ϧ>BŦ0UEt4tH~3f͛6lٳf͛6lٳf͔M^aol 2f͛6lٳf͛6lٳf͛6lٳf͛6lٳe_b@ x͛6lٳf͛6lA qٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6lG 5O1n4(3RFTa)U}AOs5_2[c]&W>q~sy ]乲JfxT7p^չ33SkHg?TFiUjU_G*Ձge+^R (3xy3ZLf /bc+U䭾|OWJb r܌@Da':䤳ebP!8_T XMTSz~׎O-%G-a͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l@i \%Լg`"_IA?Ͽ&|.om"}TI": z|Zev/(7kaQ%ӤQYcf=PdUh:Uoʭ+v0[Z[ƱԵ%ԒO-nK^oZ(~0 NA_ׂ3 m[3kz#bʈjyq^+ȷœ>1/&~Q冃|[h*"q۝vHZ 3̖wBAZYZ :Օ VQYPj P;\ fy@§ .n-F>q$ Rh]VفuVˢFS8Qe=>9¼sC6׫e5iP=G J\Q[?d?3t}J:]nHX:.4j#n|9W5^lU6*9TRnv_?t,Uk_BBIIQ#dhϧۙ91+B@9RI@n+649xuσtkT]BS<1414>.K+Hhѕn1s"oM)~l뷓YrM, Myovޡ=I~*-_~dyJŬ.-.oI& R>Ï#H*d1QxY{%hI"oU}8ғ_cELPLޣKD}F>d2*KnVCpnc5>yˁf ՐK/1!2Kk'a?*PiqVb!s@˛2q+5]MOt-<}{shJeYtpC+\G sS,j9 .z%5YJ FeQJa9,}%ߘv7qtC8Zy21_pGyJg+Q% SONOȾwo,7>`VY$[bG/P[wX"h!hђw`ܽ][~!N*;ub/6lٳf͛6lٳf͛6lٳf͛*/6lٳf͛6lٳf͛6lٳf͘c$cl eF;Nzװ>oьmt+bdaOP(ص]<7Z={73'1,XOŸTT;=뺬hXTTUx~r-<ƩIQB9#y.ƙ^dfA V&f=@gn%&Q̋%97?|?_Y裸RcFi(=RT* $9m2n)4 Flٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͔[ryf͘f͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6l8Ggn-* dvY^[c2/%dP5>7>j)W2%%`/"_I[smy.2xٛj$HPj2rLil +:Vª 5*6;bdSlFʄt|pϯǭ'JHޥ #&\N|W_}&).,mN\Ub~&+ O%=me \9I_74J)6SPE*(p;[@(]*"vkd#p^#>p`J(w+!^h4N+ ẍjT99o!8r>H֩WR6^.O/?92XyM[7^3 e++N\2|0o7y5$ׂͥo/GHyg^ХD8.-o|%_ǯ-=(d53OM%Tq ?u#!X KU82?QY4i:%cd(C/:_|Ŝ?qCм9H=Fgԍ^A&J+JG6 }1j[IYn!'"LH/6HV>u5p侣bGqtd烒˩~җQ΃X̺tHd1T!pfzvzF[`n =Ճa6lٳf͛6lٳf͛6lٳf͘:f͛6lٳf͛6lٳf͛6cO{y-S(f5#ń|Zα'h}&t|(ӍPs~l$4 fv-.ɦ f?yq['2sT'T׊\7嶏g'm"ȣ?YL|iqե6u v:oqG}4 m2m@ Tu€}7?+5Yӭ,1pQe#oO Ƶo͜Ǭe~v/?:zcENR0Ũ~+dnL1H%P͛6lٳf͛7Lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6c͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6ldU g?[k/mdGHT+|^ǫ79qx>qj:62MV&JQvYX!U<c'rsvەVVh~2$'AiZ בyv}9=OUiyY rfrSg̓jZ܎p#nDvP‚8_ԅUϡA`6[ż9'_iELyqv^Md"r6]ֵD.Qs>UF!!hHBBHܶG翚<ՠMOfҫYQABR'7(ѵ0yJC9Xg ch $ȦOKhטNH?8k{+2]TS3Y 33'$P,PϟRӥrikAnG pJʵ^ 9}ٔdDgys:]/#3ER7RPI@ܕ<8uܰqzV/I1Eo-o0qTJSWpAt (aB8->k;?HRHP I`qu@v빯;]8Vk^0d6,`**-0B r;Q#l6cfU Bv8_|X#ze;"퉤\@Q?=P1}767kKϏ2iS\ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l I,V`-M{gϿɿ4BQ{ndn=e *&䌒hJ|uoW,Uw.N"8Î}9QH95{渝mgs@~n44;ZU5"w܍WcAzScZasOl`Ki4r!F с|.{楂 Kҫ#n)ۯڣ2O<},QoRCc"?GNI׉g\յs:@غVs<^-o:9ycM65OZȓ[.DZWQ_iZ5դH F Z4MxWt=)k K[X]PzːQW7-e( L|5 8M[Ӛ*,E GW1Ty0XuS)V`)6`)6lٳf͌af`_AZS2Ĩ(:a}ޞ /~ai3ԏK#PGj3c+߉(}xquyWh}O崗0QR)4Y|\$~o=#UTDI ?{7|E {Nk1UMZn3Y t;Նi C/C&yf>9yf T|/6lٳf͛6lٳf͛6lٳf͛6lٳfM0@k??<ԖE y>n8N ̎;E}w6ZSȡXҟh.]I,t8)rw:iA(D~7ȟ|e2IԴ2J~ǿ|AқOP6mSU+zU 3xp\B5_둯OpwDph"͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛65G**TOf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6ly̖ I4nсAȀ~,Uyϝ:p7QO!yR FOI׏_K|=U@|Kk K2ҫ.К'Ŷ Li[lxp(kF܀>W$rT .s[FcpDm/5E+qcOa/HB$sRk¿dW=-Z&_zٵщj3"mg|u RI iZG/g?-.4' %귦JRG[~\1YϠ?Z,Ե@w&Wa;6{k8(P:ҝSa/Z!HmۯӋ+f͛6lٳf͛6lٳf͛6lG/;5iM^Q\9ACLㅥƹzh}y4vaBd%jǽ>&^oߐ׬?HpeqGjGyt/ɛP>`ފK, -V *_(oQ&8?/Č׶ߺs"p mcra&}+܊g=|iDР(i3k \i Qmcr9STsX~tyv4W :!K1-]ۏCB#/V{{scޕ-_3'nugv"ܤQG~$ZA_8oN5aU}y WjV>JT٨֤7nGoՊz͛6lٳf͛6lٳf͛6lٳf͛6l-aV?ȟ:YbԄX;"PjGV\s3R)M$Enn 8?teoWme9YǘKm$L|SN/aikMK.dV4 Ró)ΙǨv߹ޘ)͛6lٳfʨ;͛6lٳf͛6lٳf͛6lٳf͛L~@w2?@ 6o^dekR$dS$›ք_&?󍖤EyTVߎܳTEDU >Yq)Zwd)WVP}UrilaPs_ :dvfޑ*P('8qu0.ڭ"*DEUf་a]hg p.#Nalٳf͛6lٳf͛6lٳf͛6lٳe (͛6lٳf͛6lٳcQjk@$6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛6l.]b]0C@]Ϋ^g=&[TE_D"rB_,y౳y+^_FY c֠ƫV;UH0yuYtYo%TDP*>WBHWA44?,7iPsZ ^qd0Fcf3-"܍> H^ͣ>7(79l#J6>_|,eMxܳ rq^xpf<1.>:v*&-l_-y վoO,33_G 8S~%ٸSNI1>Ǧ^lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳg5вf7To?OOptK%Fb&<x++mj\BaH6;+|&B@@::'痔WAo}I+r_G?QdUŲ?zUF%@WI_~Co˿OqȂTphWdQ `ћ)g?K~]dH=ޫ/.7VvQU|)e [t6Ya,<\[ UeWBrue L|~gBI ٳf͕}f͛6lٳf͛6!uw GNp;ȝɎ" ewgKM ,9pXEugn>4,#$ZKavx'赔Js=:?4<FKU?0܃CˢS f͛6lٳf͛6lٳf͛6lٳf͛(T^lٳf͛6l٨+^f͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6ldj+zowk"LCBGL9I{5(-1YSzzhHf B1Ϙ~JyC`vY~#- PUG䣗Ų?HX5[8WRdA"Ɋe攦0[Ey /O6!{nD)7.2yZvPk䗖-=AE.ǰ ~QȚˤM#G@N!x?^L¹#SGƿ Rd lyo^lƝoqq$aFAϊem)'}ppvlٳf͛6lٳf͛6lٳf͛6lٳf͛6lz(;{Go6ƫiɀR"xq\V-,:fB$sSO̩4К'I.B#adSC˯)8~//iyϺw#M JjnvɄN  rf͛6lٳf͛6lٳf͛6lٳf͛6lى5r3?}oygj|2"mdsݤrChN|(($,)SFڟoZ7oօɅx0FRĨw|#g6͖"FR#Bxy-7u=F86T[=@~`[6VkJytiR$gx,5hܳ5 TJQɋ{L򧛵;{{\*Iʎo[AY.ׂ*PT}eG&|=z49(x*=zo!ɯi0݊ ɢvWZnik>P,em%ND4V뷎qԼ椾&&8eF˽KF82 >G(x',nkNqp\zB䍾܄Jdk#<E`OjR4Uy~&s,셇+ ]Erf C3?_p?7~PZg"i3j.d02G/GW~gh^DP (R~|;芆,82 Q6\Z͛6lٳf͛6lٳf͛6lٳf͛6lDW䈄1Sg?)~_|rW!5Ak1i8Jn4tcGr4j~.Ӯ+jҵf-ͧJ4eQQT̪,4W͚V).b\7US,c=YA-e`j~A2̡S͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6Uw^llٳf͛6lٳf͛6lٳf͛6lٳf͛6lؗF@EeimHpCF漸;EO拏.jq,onW7ITnG垩=cwRGioڏ sZB0(VGqQ#1#}S +Bn6lٳf͛6lٳfq8A^vij>޵]%j_ώT)@zoK:$´b7o YdV햬X5;e͛6lh6͛6lelE0%բJ}|?慙ӚXu[H9G'ʜ֍չg  =qE5v͕Ws^lٳf͛6lٳf͛6lٳ\ qg'!f9RO!аvq*G fh(~PzG!YEm E$vW"Eޣn=tXT(. ɲ0LqEwjP֠u|An?DC/ ϟӪR"2(/U`H9U)>`9֒ 8qe ({`znE8zC,yļæs>tDDkD@hkx?Wv?\GozPĵ11IJ 5$oQ~c9c:Okf-gJ=O6ͷzg4r+Fž8z5;6lٳf͛͘6lٳbW,R&#|{v{4w.]yYQV˪a^i|rFaA_Śsze*U?0[8| u-U2"WEƿ XM !P-"gDO@bB}C˗ͧIcv0i H<83VXO{]R3T-Nr34|ӄ`'B',5khn\4R>z%28lٳeTNyf͛6lٳf͛6lٳe#P´"wyf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6je&.mbipA nXropVR oa(OOBh8ZBUxѳKobKp}XW8!.x߳޿4@tu%mhe.QK:Fʪ~XLi~KvGS˄R*EO]=I8YР/URV?Pj ҤiQO=jz3؍i^+VߏP\ƾٳf͛6lٳey'@+ӯgr'(۞Aszew8MNI Qy33qk{WȌZbǨKo;Ɛ̘aHhS7yPhzեo]fuFee5hjV^Jce?V[^Iiz*eչ`8$M1g,˛|8U_m;2 գaU0Oģe(>v,~xs̫;*!q4eObWeZd~`Y"'!-wSꟙ:/4鯵)(rQxl;bT»EA: ;5+r@rqnB8 ^/6lٳf͍{\ %f޹_ϿƍfԼ躜ljO@G R=|yσM֤xdx"vT_K]Ȩ|YNdpUX{@6SkBz ;[VF*\r$/*SrO|^F6j )Rg#yV\+Pe"k,Zޝz~SrSޗȯ(igW<\5fyt q*YVW.iqRGD71@"2%IxGD3ًPHK TfQsyVH*[F 2$p͛6lٳf͛6lٳf͛( E).bn0 {vQ;}=pcĤn{rB޿&ol'[ԖCâGSӂ濊(}F?7?Z巴u TÒW_6g>iw#QT-`L?g}E[,kYG2WZ3 ?g垷:l4㙮cEYRҜTt_hqr0~ot[EBf1ɔ|C7jnӂ톐O@&ZT,Χa( ̫BzcԮC?2?>|>kd& $qjx=EI@mZ`;+^jW ec KpxSN9mcKt(Y7oƭ巺?,?B3$ \ (N\UYz./HnFLٳRf͛6lٳf͛ |s5qsnFN>mGyO3ܦ4amb J#u~c@V8A2  9rq/N{*‚G0`t@1=2-=\5pEݜ|R5DyH;1}=4A·گoOmwSKAQ =8|CHRKƟ;He"C/jW}}9:bE'rqOQqsbil,^|ih@V9eR╡~ߚ;d;8]DqUe}|A闛6lٳf͛6lٳcB嫱S\vlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6Q u̠Iml>Dҧt'*23mŠ;3oq?cϺFyc4ܧU~ j{MYE5_t[cm,jbba<9'Sgg7٦u2-d+#8xzi֜X׊]:]b{u&{`^Mq /<}6c4B$OPg+!?%+ܞYf͛)T( /6lٳfƩ]qMn鑍Gκt ,!>N>&PIU _Q]Mcwv(c)ŹVz9V! ڬ tMÏo$ġX4o?'r\K]`E6ޓ[IlWZ7FLyeל?0妈i$)(IѪ><|W gnm,gGBN@UV*x/,I>2{:=ҡBJt^^a%6/驪ָ+ȁ ƪ*Su-%Crr8y,q:N8/!Eڪ+23w8EIxbB8앑i7.ȝ ~rEkDeѬ@ك^R*[~ai>[g_ ֖D2*Y ~BE _Gk9 o7Q7VNN8q^2KAn:o75H#d@!Ŕ"nۓaƼ}Ws<8fs'9>>/ZS:Țn:}e Uޙyf͛6l)ۮz|QQ_mV=dC>%Cr}%=/,F_13^Teh,K9d_~zZ}jʟ?kϯO̾>2 i zh[\8lg卽 k'7 ;7}M*q}-ȭR:Kb5(R=:GjV(V]|_mh X.is{'DE*FӖ{%o]\߼_6Wq#`ۓzoĝ}gUx*b:_˻qO4vֲj$~LAl9!kE8=ξP7GɫUCUZn\?=o9H-4M⾧!U8j~%2^$ZWzOʿz-k+2`zu3x 5Jtԡ+2f͛6lٳf͛6lٳf͘F(զ\ҹ24=1o`WA4Rw뜧R-ښ q}O~J2}95x5bx2h~z>,,ժe)ѥ %I+#rj|>;ߟpFZ$vj8sYG.sۿkKsy;X˾zml=ѿ.u+=# s :nl㻚)qV5 xS:"[9)RA=2r mJnƫiN|$V)#zWS=pO_/ : ?߾k7D*]|"Ԩm~/^ZS A埞 xeSm1X? ӁL>R}6kY=HHSazsz2 ͛6lٳf͛06lٰ6^7VZi!uUqU$;|m7Q]Hx˥AW2*ļn5=M1\i~Tz.I[V }=Πfm0=7$"^=*2=+J96Q_7m)E̒[/6]yEUzҴKE֒4k6mgSaecj}ç$ۛ!`ݎ»Pk= o9}?kp#/n.cXQV &OLx {oɱUj)Rj>տ&4]?Թ;DMri&_%RݙUWË:^Mpy61ӗňjqfuHuDه2}UؖP>/do^ut9hz5BJ#rgbW7<IK@\$i dr5ePܞ.+s9t'PyJTz8'6aǗ/};{w4 7O,y[&940)%/ո* -MWRk1}BH@ ]^dv Uv,#Qct! V:YbwRQDӫqlhT%6ڽ`noӶ-\͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lT޹yf͛?lٳf͛6lٳ|ٳf͛6lٳf͛6lٳfӋxZSWcڞ>7K}0XS8BqF<~fxky( b#⌊B_k)FkP)r[ ?WXl<m (6w?-4;~kʰ4(Nj 2lxn qZw,] Y]2,8r:8mMR$1ӏ>j'X/ᩆ c, < hʿ9?-~^i],#PFA>-OHor~X9tFáǾEc7ڸq u%iFDt&+]w=)ǎ]SZ/O1UOаh[ /.5qV⼹ _αk6%JTAnOV8Mg%4*HW-_GhILGՍ ZqXQt/Q~[{7K(Qn*x)Gl>(|\}v+XBiZ%ʶ|Bm0P@A(1)1 ~Qڗ:7ZsrcغCq!}?r'Ռ\v7[`djR0`@gfI*#ڻٳf͛6lҡqٳf͌1*=ƛg'm-浃Og̱:0#Gj<4k2r\:yN>dŌު^l*/RݺSߺ-h;K+Dg)O䇓tt\ 1*5U˜?1}23FTWR5rVq֟^uͻt Yaw $$E @\q? s_~c^;ȥ-fU'G |Gd,5KkV x@_Sk_jXz:*dH~Q#oU~|ɧ?#|#jJ#0Ƭ*j$9q}M?]THAyU%(ҹ1i,"G66FCS*(o^Gr(P7ѧɧBCliOlg+o;!su1$,# g:_g F?VGnHkJ(T2~ێ ߗ~iHt0B*>*r]B̽pZIUb4,UU+"i|9WW"d*ླriؕ#Lc3) lb<}_;FSy6X_>imh^Gq.XDjn,#j6lqqzf9c䡛܆~¹/צ輇bGޤiɹRs^mJY#AFTuť#D*A؃ზTjPָٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͚Zq̇G./Iw7(m,>)(vM.|_Mf#n2+*9UUlxzK&|fB0W76+|Eg$P#cJtEq< ٳf͛6lٳf;RI϶]$r}9ǝ0tF0lç> SENwO(<רiZ77TVaBcuBj[\?04Okj ~Y~fin[ L7neP͛6lٳf͛6l ٳW3~wRFޜ@ϙ=tBv"o{#z~+_I w]3sL!#؀y W~7ֱ/@x}="P`Ze͛(bHLv~X//_q!zћ ssWw4}?Q}VK\VnW! yzHTÝCqZ![zBuފ? .4ewvi(dM)9f͛6lٳLA闛6lݷ1]Mo=h:P/*x;84멼X1c)ի΍7/福] PU)5ym}V14/ @PG 5~,k2G זy2zˆoTzQa(J! ""] e j 9|M~/Rk_,Ϛ,潱y;yQ$Hй VuQOM=xY?iImb@'d(9F> ܳyWq M>Fgt ū_PI5ƲQkv8Ԕams?Ț~34Dg4*֘z+tM"5ڛ_͝&K""g`+Iy+;3+IkCJw C(t% RVR~aY9m8axVIb:\QΊ0pYڟkWԑ` ̑2&UZZ8!~p75;ӥ, z Rn3jq, *Nٳf&PY VURiV v;g3?|<ɨBA ,NTQޝldi;'J7a]`*W]᪕9a]Ryou%KKH-SE}ך)z҅ !,9r U*~2OϷFlhz*YTSlZ@"_qMKs#.G{ 6lٺf͛6lٳf0Y[%(%)o_+\@*pYJ Wązq :sgUI8Gov $~HK3f}:|DŽɟmKT"6I!F~h )(?i鸫g?,i%EaV" PmS^lٳf͛6U1 mSA?0-t_-Cѽh CԂpz{oOxz͕y{[ so%N]HAlٳf&6U7|B"JOm$fTE*(f&D6.5O55Y9^T~y3Bh}f5&}=0M|>vlٳfqjZa{vXn,uuU5(΅ASCSPW<ƭ?7]%4RXք:3nnJ[lߙڟWё(C7ٍrƍG|}wN$Pg@q&~_6lٳf͛6R@'cޛs 9yf͜_k^B^Y ~ jopGK|fKBQ3Kve*RiV0f͍g (S!r3~` _Ehvza<=HDҸI4fr%n\Ot=z͟z۵Ehpǹ4bi?妭ue-޼2pkHNz?%%ȁ&Yn1iYsSAGPQi ~jC@тfZbO:'S}qkLBUy|E^W1QCd4nzjoΟ)C鼷G ( 9f? ?i~Zgwu}AMVΦw%L֡K`SWPJ/PƤV1ήhlVDt]SsC[Lr աHPH+!Rǟ|нڣưM%u8 Q;)[1j"Xĭyr)`hxw42/<:'bK8`cifUI ȔS#-{*q+˚nLj$>З!Ŀ`̣U%s?Kt7Wx[ƅ"vwق#߳-[h]n#M:z ,,sՔU۶oIIz㔭H~͛6l /6j i@O*ogm:z+E~E˱?4@J+J7j% d A9UN 4Ar'"Eh[P6ryf7G҈E#$eQ}O//n(8UsbZ8,yrZZQŬPH),EboVYϣ{-gDn"AE9w?sz]Z$St(C-wӭ;%W-\7N[yJ]J8Ͱ8G/'-"A!c! Q>)09JO$~svڍƛuF W9*Z՟cLl/:R;0Wn q@TZ+7iƋ8ySK8g#D[l@8S]jgX (.5 f )n>pYos-О>DȮV |A8-@43? ++)cN-?)VZ]~#v>uUb"&Jۯ7j^ci\%hjSk${wR:f͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͉` Vju'leF%YUW䊒4\%fӁApo.ɦme뷏PSOV5qWqib@<{I:}&0jzq{͛6lٳf͛6lٳeA\_:Ti;CDm'XbOM?>|nt2C|3]Ϭ9ҤVٳu͛6l/(C.hˊ(]^?vߓs{T)#d*P-њj q~~Q^-d%ASGv9 *u?rpnlٳw͛519P:=\>IvqOgn8& w9?/E$,ʎ-O>2eggqTW]PuF驌P)˿=ɥޥ€iJ}s6a6lٳe16clb)~8ٳfo3CL*F@C =_枛&{VF PrA;6ܟdP͵KTU@ MwўS6lk0QS(lW!6]Q+lPJ~o$wr]z&#~glcaç7V*[~+Ɯ|<3g縶H]#1 Ƈu-$GYu=kZԬeYX*ıjS/M|giO#)NN ÈU{8>"N%E?%G.AkN g?-+l,[Fm,绵ϥBI$?3Ւ'¼?bֿ~iblTVr$ƇRIugŦhaVXII bJK*s%M#_Oap1kK]NG1_euVOmԋ73>c!S\ƳjYhw~la $I@Hڪ9:*2~ӳ E_;K+qUnuʜ;>/ِYɨ_Nļ6"Oߕ7];p:|"(٪i]{aӣ@#MB"+lAB6lٳf͛6lم{ʥq6Q2iH vȏ,o:XMq mn"1ʍЊEe"[k[ڭ<=5(hʊv.xCwYHk0'y=)ڜ.~-5^[5'y8^l+眥zZ:{CigU5]*75_:2I  #qHN_o{@ubȬ(#z)m yB8dO0oO/7ƾeX=ldMF>"좭?g ]U{=IVB&6H$,Wi_jWt$'y[4-H$@*AaJ x|Tl4-x~t?[BOu-EpQ)0L#lm@mn>Se}G$;/\yPS=+JEJSBs_W|zuǗ`akhgFNLh>3}sW6lٳf͛6lٳflٳf6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳfcr'淞!5 ;ȴPy69_̾d_n !A]9}~Nayg#+nH{ME+Q@s:USݰ0͛6lٳf͛6lٳdoz͖mWwF̰yJe|槙V{]Q?N(cz2bd_sOmW?PO1yV[iHBrVϢ^TN"h8ɭ> ӭF-M뗛6lٳf͛6lٳ\x[UCS<9Ec..k8-ڭEdvZThDu0(B/͛6lӮlٳf͛6lٳf͛5k6l#zE4j_Xqu[[\FO2s w_`3KMI!YYY"cdy?$nS/ ?Ϡ KkܴR:Z Ut͛6lٳf͛6lٳf͛6lٳf͛6lنlٳlٲ i6lٳf͛6lٳf͛6lٳf́&X~fO|\t=ą,ёֈ+p. ,yZG@2$ 4(*| Èߓt?ʿ ޿NM hJBGI= 6lٳfYf͛6lٳ`[4kjs_4v7vЪݛnk-rxGCшV;LIԥ ٳf=f,\*` 7,z^H[F\H :1 bD0;SA^l;.[궒]2z|Ͷ攋UyhccP5rt Vo/-׿B gBR">1S â ^lٳf͛٣N`{ 'c<)9K3, 58P(*<~&yq͏y(_8VcEC_Y Y_AC$ 2Ifcf͔M0  |=`hK$KVxJǯ9q-5r"GŒc<cl BnFfcTum5j Og/;^Wzx%Cӥ[瞤~J w9f͛6lٳf޹yf̀5+Gt *@4B T^"dzÙ)~28kG9%H EhAQ-G¤x`ؓ,&V;ڟ<[9!wznȿX $4P j3+ʟlI {鏦)q^JWj ?-sa @nx߮$D}7SDEy1g o̰ 0XS8מ<ܳ)hVeƛ)Y̟ۯ7_ɢy` T)#r-A*uz}HH$$-")^+1j%O )^)Mkק:-ax6 l~ϠaJR9E<3p{eQ[ xNhaj4mMaid)4~sa鶪'ImUpMcf#p?ؓJg;Z]ZkxYe A\?e?gt~Z_ym=`H!CFPd{gdm^N k(jB*tqƃM*CkZU@L,lViC(ٳflٲ1aj͛6lٳf͔I$?vyf͛Jaʽ#Y՟S?X7dC 1 +<]H5f?+Oԯ>Nв2:P?d5.[W}%sY(0v?vMmD9C/6l w7[O M$Rqj PxOr3P-ROr( ?`7n?HCkս@Ey\o_JYd*I'bQЂ_٪y(BG㗋8N  {|;z{pZ?[יH ~@w_}n =p6lٳf͛6lٳf͛65ג㜯Vp]Ū]ȱ#ȄtxϏM$<'*у Ud2>2]iy &͌qS\ߛVh*EG%dh`ĿSle^\\ٯ2F,._w5J~r!zE }SJsf=Go속o$!#q. QCRw+dIe[huKrPT*8v,Z{!浼c2iSpVKxWW kHBafEۗΡ8-YE?,,}"İF}7Ǟ$мDWuRA RSt %Jsx;gO7qƊ?=ϣ_Cnip>AG=6lٳfZ͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳbDM3z:3u^A@~q-Z9_9khN6gw >̠4s^Q>eJ $=h a1U͉K*]Dʕ ]k♳Vf͛6lٳf"ʫ)fR @!Bߚ8F%rd 5לv:SHr?tHǓKu'd.}%{8m-ӌq(@`)(:W6lٳfRCyί@ZֽB3þu󮡯ܵ̓,ax7/ Run;W;W&XzE7 Ae#+r~w\̰]E,F8qVZ}qze|ޫsHHz lnFwl;yqASPT!$kԼE'ـNT; >+ڻПo?2=E ol܆;(;[vk( iXT`b?W˞a{4SipGU=7!s鏑u6K* A)]m:,F)6Q4& wzY( ߦykr?[VݥZ$9@lh_9i֋g5y#GVOQ]*k:\XK(4ehȱdug.gkZhdR$. *39H*t]p_QMۧH#yqQF wMM_s+qf5`Wj+bƪJzrR ^ag,C" .]#f=i~y`մ=KY?è`~\FJ~LW~09va40TDbji>y~uyc摇"Yw;зa-ӿ&gH-mfuxFGHey_V z!p]5$W=d* ܲ^_06lLo'"~:4_s#/i 卋1$o]=78?WDedˑN7S@]ml͛6lٳf͛6lٳf̀5Lȯ_L{>Uy˺瘯H塁G o}=8DּcgmSQ\kdop$"r 7Ў~{E1D Ǒ@G£_?1t3[bAԡmʟWk6 ;iHlh=>\=ʾd\0q$WUaVM)]=KfHCo~c nŦhCQIQ>r~l O{]B%h1Ȳ*у(񚪳(+I߱FhQIDWC$%C^LOƥj=3jl}bCKD^ . J?}#ʞ]Yu!Vo݉ mǏ^,gukAHŔP@o8zu)6k@*E ȁx=U˻}V=@É,Gӷӟ@ڢ~ ΝojF.1Ĕ}cl؜yd;Ͼ52B(J cJB|o-ח7/ǸDEPxotO̶Z}[<"QYhxzeQp[ΥWPuF>@~תO)C6oyF8)< =lnR!Q{a+Jvةlٳf$U6v?dW19 $djJ*H "eu_ƙ2_̺ $eT ~0p\R+rݶk_SiZdVPٽEzx}[(k(N3FK 1韇"g_mݍnf[Бp |@'Ud^yaN806ZY4dpZ!NH[9Z` 4KY{eI1PC/*UffE/pյR2!^u/6܏:9wWH xU5fv`?_9?]ΰ#LLA`w Vrp]0xwVnza^ "bI)rf͛6lٳfK(K>{TfX̰hr [R٣*x(^FD1̿KLeY-JhGA*Wfa84{A" EQHIKu%:gyDҭQi"ˑ ۩u3\{6iWWFQC[|L> Bgg%q.*yxsWvZé.h1ˉZP96E~[S .uIG78cs_+Ejݴ؄(UFNaq0}rwլbgvh$N@\wrlc1nJͽ&? ,l/! -S رWު?ze3ܚU alٲ^lDW/6lٳf͛6lٳf͛6aZo6lٳlٳlٳf͛6lٳf͛6lٳfM7͛6lٰ b:ʟ;7̭pz`J6yo#qK7qqݲJ~H BaZxĪTPaƣeaPFcf͛6lٳf͛6ldUM:k[^-:XI`"0HFWTM4ڂ4P7*Okm=(p+W^lٳf͛ƂC"YxX6?J/x9 6Jz8FAfx=go+(XDJ =AΗ,*_!on RV/ :?3B,[D A(>|JY|݄*~fSE6|w j_.JKϒ)F?\sWNK-x,VT8+qX)?:taQNrjn0'ɗfM"ӛ$PJ4VgOD!y=~!v2*G ~^?isyqgGLhHaxBizPT`,aO Xs.cZ7-t&N Ț匁ZUz"rp}bVB CPO/jsҟֺb,c y1"OMjxЊn ut.խ1: ãyqI x'dž?ʽ6{d4% Rs^H|4={}?/;0Bٵm(eҴ޻qLu /d!mZO˿(Kq[V`uxy^~v4Zg\(һz2[,INKen4}+RZ`R7JY=43zUY|?ysWwey][J౻uE*Hps;%1Oh(+4ɞXmrCG MN60 ͛1VY\-b Tl6ץ1C+AYU hP,KEj݃Eƣaq(t؉6^4WHQ(J'y;MԭE)*e G۷ӣ\\a^m͜OpP-Y5S%#-#0JmGpc.<˫Ly֪wc؊FYxJjG^][zϞ{k>bԵXxP P[I UxǦia^#0RUo~L2 -mh+[cE,~.]Zឯ6j]Hfh@*!bꨱ%/ySߛtsy{KO$ (>_"Ȍ'a9*L7.D 3J")Z42Mހ5i@zud5.{ლRwXFۮ^lٳeR=4QQRh7&'|vlٳf͛ f͛6l؜ł=seNaX!aΜ]3?lRr7R{6zC6Z%^!feRXmJԐNkXjl:g/?0.9h*[$Ĩܙ P\sΏǖjrcy%I124t!*b|+🋥wڅX'6`*~.=u{ɵ8eIrl[RxU?g~,Q+&JWp:&6 <[s返oQpI^;15͔EsK% DlXhձϞu?3 .la^tQRd|J͓5~i>@baͥܭI2F>aG ?w:Wܮ-"OJU ٭xɍZ9y*vd*2D%W~+G[Qx̫~TXE%zun6tP5DJ9!]HPjn_}hr{TJ^d Bf͛6lٳf͛6lٳe2xCe߸(B$m"AEӗ~dmZ&ol9-GZ3ALwsl jkN?-ʩuD\[:GC]wW4bB`ݠXO9Uqb͞Gs\CaA?Ώ/5$ngRIV4Dq;,yNiV-Q8x($a$uW~_DwZ,Ol)pڋo 6ш4~97>em.vKABDCFqޕ/e!Ȧv?<.u)'e ReR(C~잘/K֤[{(ϭ:E{vngQƫUUw<74TT:.0vyf4O<+939 {!l8G2Zte2p~q쏋o}A8cY%-cxQH . Ǿx3_?6sa3X`Qe@ On_ ɏͻ<$)ԍQX;@9oN?g>y URrmñnլn<P9yf͛6lSSZRJzr%˫.(Ӆ#`_95 +.e}*}ZZۡCBM>ίͻdMehzqN@HKcVX5^^χ_?zov ֟>(Y Ji^MҟJ4.Ha+W;SaOyl.z;ly#ι EWMDƆgmJ4VdU~\KFEbeSW᮹CR S3+?;_ I[m-,I4@Q~"g(|kXCpmXY}5 *N ZVPx'6lٳo_lٳf͛6lٳf͛6lٳf͛65-AR?-ٳf͛?lٳf͛6lٳf3f͛6lٳf͛6l4 գyUef׋15!;g<[C+[w('gxy 8'Z%CϠ~Oԍ`B־?VPkڀٳf͛6lٳf͛6lٰ3t{^A& ƥSQS>UyT׆o5R b,@ /Ư}0Mlųf͛6lٱ¿;fFHWIkT;765M:|n'揘[*X Ijm~3YO(DSJƀvF9qqcu AuƑ8ue߯Qry.KZWGv%ɑ1,*s| I85=v&BSK{IhLZE5RFS۽1Bcmib6QV%~zu~Lo㏒(d34`~Ew*A`Eh~Zw3vHc/Ѥ!Or7Z_P7%bŬDy #-J~+̾d|M6z4~WBi9w9 vp rceDEaʽz͘>ӟRҚ8vAeh*c!Jצ$j͛6lٳf͛6l+헛6Sr xZ^q?ȯ"QWeq6#:rϚX_/h+HP*}Cgӯ1kE$ֿ,1!9ڙ-m =_b ;͓jۭծ;DP4Wbݟ&_WA=IJr.Dd41MU2W)RKs#ܨ V4P̥E_=?^P-Z `,>ȑAR/' U̹2-;汲oQB ? |bz u0`yC HgiYIg}Nj $`No\k1^$0]?)J-&1|MmVicc5*ѹlƃsfT,>_~W~t9H_AdО:ׂsf͉O'C޿]i4/s2)]-œd+*z>$Z#L%LXX6E_3~H~Xo͒4[&2t4) 4ƟLsX򭶝j ݵ۷:ta(>m/6lyFV5:ENhO;k% H-@Ҳ*K_O#?.oZm o]4ŵ*ESs۾O֟iʫk]Ե?i sc')$wcO8њ}2=GZ sf͛6lٳc7Mvei ޚ-vÚ v'- +;+fd@7?<+'bGR[oSҐC۷r,1ue.<,3;pVehTȦv/'Gy[[XA;UR&PȞlD~?.y[gnXq";jgC }fP sm+ &.ʒ2;RmޏNf+!Q!$׊=g|{inl1X4'!/DGP BI bP{Zx'݇f`H~N sG k hktn1nave[GzΒTĪJm@qz;~oOg'v[uԭy -'^1T)Z7ĭ_xW^/wʳCy*ZFۗǒ+Ϩ[FV];7z؞R8VEa+?'sԿ͡o0e)ʵN}RڹdkwWl}|K{/8\%H1rHEyoJ{[ˉ 輢7X̟eJve /PˇO$!Y ` t#5%xToux?%Ti^SEoFf+sVbg̈́0F]W:݇Sg]Wk:2L@qPJoGwf^[~ua0n~3Hk].z-7z %xD8ҙX?Zo͛6lٳf. r x8 kIjy<Уoy-zK\i>J$s5yS=˦KX cok[=܋I{h<_k;SM,r%vcʞ9&}6uGbM: X;,yѼIp)]G$1K6 ]8xIR*ٻWIqi&6y9АPSׇ/[\ɩGkr%8$Dc;q3/ɖcIZHxR{s菔-#&EO.ٳbokZ%%^XPG!Ou4E͕T'ļO*? 4jX-R\D൫Nv\K+-ZKnb0f5Z0 n ~t-K$Qƌ̈#,8%(-GA͛6lٳf͛6lٳf͛6S 9Wo)n^!U m0uk7>BC][-1a VӟC 2>` xsKgy #bTPP U 8n9&dxR =;W5YyjҖ 1# ;{kqNm+ˑwHewUYAj,~lR9NBVDdFW`Wm>v~h'XuzC"t@,y>bdPEQ#Vz#tϣ?DO]:JS޿]6B++vrZ|'1Zu845F.%e(I؎ǦV_˿;+y{hy\Ǖ R-QTIoםzЏˏ!UӡU Ӯu:G!bwx*z@v͛6lݭ` YT>yXt.|m ^YX9Y5E@Sx_?5OYy=B;[ &6,p~TIY籸Q QɯZr@s϶ja5R`}NuHf͛6U7^lٳf͛( ,4+{Y pAjr3}?xzc\%hfML _{LsjqM6EmUa `I#fP9{dMRKk~~%7Ð}sw->]1) j JB 7=1⑎GZV[jf͛6lٳf͛6lٳf͛((RH's/6lٳf͛6lٳglٳf͛6lٳf͛6jLٳf͛6lٰWTx8H*l4ȍQL@Zx 78DGWm_N{B!m퇱TP♳f͛6lٳf͛6lٳaOm>[9kTdn&;g? y#ȾfPҥݒAYY Ց]}8A5}iHbV .ɕWw"mgS5Oųf͛6a6l؜א|sGD=D%*YWԨ*ĩQu8>Q aw|*)hLcL*_ EAwFѴYy2-~.\xQ~%4'He})(*A8[;*t=4HR0[)݁5#aGޛdxA3.`'^eA)|KՓK∘edRk~jXH / jI}hg4m't8ur-겺j^@"h/eI,ӬFB+f\S|x̩,¬HhUBU~}|c :alٱ]-I;r(*O#9r?B;wCA ,sW+Gɣ4o?rg8o-S<ʼnFJrnkO<tTALSQ/6lٳf͛6lٳf͛6lGqwέy54!uvU-śq_7z.x;ZcbC*h@ꞘF'>y_P[XMj|&<9Oc,Mxx䍈aZ-h̿jnkGx<7aOL寮XUY#O8q#:;꿥n3=x̆iH (/ZL<8^n@Ƨ*;Th;ErOc~E_$D JJ$U nd2<n+C-ԿI+JѧF?hic9EjTwڇsŸɣ[Oǭ\іAnGL~Lv+ U1Qi~RMH+l Ěοh8̌JVOү74e ƉB=';LiV3JLbr4; 9YajG\,InYEp}Qy-8|v -BEAJ0!O/C;gtAn᩠z%ROfyeL~|;\a~`>P| _0-+8 ' "Oޯ'!n\[\|~O~V[y) j}+ǍQt]X"Ű_ 3eTV^lٳf͛6lٳe |s~uy86< XbjW;P{g;JZtũ/7aTH*7@f?8L1@$Vo&Ǯ{GźF~͛6lٳf͛6lyvZ^ !< A[5?ƥyΚ}.WMuHչQt soϚqn9oHTZyWFmJHi*ef>D]qv>S:;&bгVN *CsT_Rwn_i9"@ZD"V|}9?/ 1#DU2otTcKbn {Ა\6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͉%o+@ d@͛ ||V C_G|g`Ve±T.J6^,Ł28~s'rv*yhBCS~hn}0kZ^|_|p;T헛6lٳf͛6lٳf͛ՍG\נ0=/5|O<>:y|bq"ANG=/8ݨڟ+ZAjE*CuON힐6lٳf͛6lƘ=rl,J< e͛ƝzdK:Wcg8K~U/rcKX$ O4}Ş wUu%vTˏ>q \ye/5_:D3ZTrE5?g~}m.K$?Q,8G3LrD+0>_XQ5s;e^S78Ɛ(% eqhQ"/+eMƪ貟5k+д^i-#8-8,?ćOo*9/䏐q>&%o՘w h4lٳf͛6lٳf͛6lٳf?4۴L28Fe)J ېo՟"<<КlY9ۙ,sׁ BM>F/1\/ IW非6rP'_ycR2DÐ/o>Twixո0Y'>.fkubPu 16I*ґEu2*VKw"cm̢¾9RLxo'b{K +9]ݳ)w ĒGcCCS׶|ͼS<\L6)r hM+oL5/Z>Avڢڞ'>J~e/K{D jL R\R$Rcf͛6lٳf͛0͛6lٳf͛6lFf͛?lٳf͛6lٳf͛6lD;A 54Ƃu];6lS[Eylcv"lƖvW1|7LrKnMjp#Xq [Y.%eRYr+zq.iN߇ӆѺ7P?q;6lٳf͛6lٳf͛6SRr_qyw:1G~Ǒ%1 OP5qwaLٳepZM\c}mx>ʎ>]2Վ>Jj *[s~PkVh5wS :ƈ@vzӓ#~4^=~YnK*eJ}~w5X"=<α3zvQݤ~RyzMB4+Ius_אvqD2ʡm߷L pqQb$,5Fej筴}6;8x(lٳf͛6lٳf͛6lٳf́}]EK)~|}mJ "8]J iyUg;⎵;@njUɵyГ=T4ݰSbHG"{tr>y3LQԥH`j5wԓȺ XnHIIᠯo&~.%5*ԉj6~},/ƹ:KKАxҪG x#r(HOK&LJ 3r 3>B&)2֡lU١9?(~dhc-:\b*i9ѭo#`dRVz~lLEs~~yʷ]/浔QW**܇ϛ?\o0yYm̒I,dۃ-/ԯ,iio(9{t%*@>EpEw^2YV%.ƀdo[i.)SN;=o|y˾Vg#*y0~ %[}^:(>|;T7\:&4 Bm DJP1([`%M\^Rұך'9$)Ub={gJ)zٳff͛9?6i.!IwR@9?reH-#wϜCה5<VwD"T.K4[?^xȻIܨWSb7+ϥ^I] ,\(7SP2n#lٳf͛6lٳfƴ 4z6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lَwQO<9Icu'eV(THM9=?8kqeTFy.T #Tp|\=}ܺB"Gp8+ǡSz͛6lٳf͛6lٳf"KMh1[kQ𰹝L^GVYGe >.%7-R9Lkbƥǩ!},jcZ2[(]Eo\$;⹳f͛6lٳf͔EE2f͛6ak$h93@k1"1̞oZ+.]pÒn Ee%_Lo쮭iH3"YnܣF sz^mt䵲 ƼTq`\ڜ-kyr_f;VhZ)"#JN$^'a9S~1uo7ZZq3) 7hR@KR ϥNQ6RQ_ "G0`tv͛6lٳ`k>/nCT\s &7Pǣ'^5ԵN&ŕRcǓC@×AYS~~Pm^% BKR)1nIΕ°AƦԜ_ߝ4I#+WU\ Ǚ>#_D ƹv#ԮVh5?NU$?S^i3+ik Q7"Tmur<1f͛6lٳfyf͛6lٱ9ASǾxr:y'9GR%fyR˷g?cծm|6Ӊ}7erBo?( 24dYXuG"1G*\K)j[[/mF HKtн|CfztyK[#DjF 3z]AQU#ÃnZt܎@,ҲrZf~"K*x~.?eW9\-kWzrMG~o^Z,=j̘[.Oz+O.ǂ܁sfMKQ(cIYF*ihk[F{XٸR(*:MOF*yqKMma򺷪%~/ڵޤ P x?kĿ,cUah~59>'|0^wz adDO 9a/nwc樥- :,6z:6+^2׮+閣᪁_ʯ2%հiI4x%ǯ=#F0qٲsZV6vc.\HAT)Xi'e^ߘav 'Sll>[|7QAі0-V4T7'g0UVY\oz `*hŽ>3?1n.d^"(XVUM5&#o'<׬6J70"օ4p/->GoCcs G"0U/e,!$TqD~5e*wJYK8cκ64ze9T x->%\埙[o闢bcș}V Ǒ $^JbefͅͰd+=?+-')*aG/>$ڕAs_V46TM>!q?<3 se͛6lٳf͛6lٳ具> $wxUT P|!Y͸I&x6Wc-z{qC5h L ۹! bB\E%MF i/6lٳf͛6lٳf͛6lٳf͛6lٲ^lٳf͛6lٳf͛6lٳf͛6lٰ }Ph)P7<9B}?'ܕ+$gU$ܐ.|ߐ7M̚4[8Q4R''?Ş/"IVOL@j,W6lٳf͛6lٳf͛6lK]2R XdBZ0>5ϛ?^]ϟ2Yذ1AדSʼ'>9FQ6ʧ='^ T8nmf͛6lٳf͛6lٳcY"Қ/;m0$n JR_\rӆgΟ+7Ԙ XfH_@ԩx7^L [#I-thm!B-޽*:YS@A4_Ɠ뷟W ify]t0pg.+N2i@*K#;@QɏT_}8n^`q?jﷶt5đIa51&7_\@|Lq^~Ż37˦<46Hҽ%"^+Ղǻ0lg䎙y̶ϢJ"PƀM:+sZ}D[x"79+Ҡ =ȿ0+R+e$)/"DH»g;%DiQbp qFIz4to|,JM!5E-Wn?Ed5r[f<}8e-:ݮ=[gey:F D< nOzMR h{a/Lvlٳf͛6lٳf͛6lٳf͛6qȽ]cɷ1I3>o,#>_~g~VO=V|Ҵ.QwO PfWZ>qY'h2*,ğWw&$P17 z=,bƇ%Or bj ޟcS:I#[S*7mrP}ISZT..u+7O/~/R-F - E~1u?3hڵhbJHN̊*gaʟ,!yX/maPIB|qf4^ 6zϔ~-U5a| \eEՒhkqKf,*Ar_?-yR$^ @4䧒lʴ~.KZ>lieKXrrQ_qƼj~ /mpV_~ ߳Z>Rfy8^MY8mmqYߠ&QP~!~x,eL*isg0Q1?O|>,~^JJ#S!SoL5/) ɹq4ڙo/BQilCͧix0g1)E_Se\b]Kd{(yG*|qUv?kzl[#Hr) r$2Ƨ)UOz".O> RU' Fmo u,Gr ؒv}G淗mjk ' FYClQ-V]l[yVH4ȥmMҠP [/;]Fh/Hl8 2HKU8ڑX-B.&Aup)&EfBkJ5͔s ٳ`{XϟkmEuxUeup5R O#-:~J^:i2Kr#.yE?Ȯ}_}ɖ6NPM;ٳf͛6lٳfF$E~ mN?6-2x|_$:R, NExFPqiÑ/MCc_EPY|x>zgy3Jܔ#O4(z~lٳf͛6lٳf͔է֣㗛6lٳf͛6lhb lEwcflٳf͛6lٳf͛6lٳf͛6lٰR2A}WILJ,B+MӓʽˉUjqy9/|m,w2ȑ -"Tn|JW>y 6ZW 0v( iG^Ҭ=aVa^j2f͛6lٳeL͛6S0QS2DJ1Z.;; ['fk~ji#5O"xGD%R}~ZyG޳*(CUgyHh׌hNyrSbKiv\Ɠ-bo8_-o6xG_˺.]߽ "=622x~._%V_Zzp$å@ Jo9/k)utzpAP~o.[kǹqr)f400Z[2PO).mojf/S֑滑ic"HHR:o94RYdfQ۰Wbh)ƻT>g >MFU(sA&Q5W ^ n([\vG|Ūd᧑ 1[`Py R8o/iuypɑQ@k+? y?99/h듫įCVnh]S\aajp UcZѪ|1֒rh/;gfeiȗ6HT9q_D.?.5O/G#XȑKoU^yCeq__ܼVCor ܹ㞐(0;6lٳf͛6lٳf͛6lٲC*ٳanossd;6 FAϛ˺e7W1O6.1!,Qo |i#%vCN݈60(ךgrnɷ2L @Ah~Li|`4}Eu1? Dl\/Ĝ=8۬\%VܻNTF%[1 DfW^T޹M.@謧N-O\"~Y/n)jr|E ;4JY/"[2F"bf͛6lNfeBWxrK4Yu&YJ)$*wF$׭}Fq@jD#{=IXQ@p0]r?j 6u_B?D,gb$WiZU'Bi< /,SW bSR-ʬbAQoǓ*g]ͿNLzX1B@&8Pgr:rZs$ ٫\/U ۿ# 2GƕH}ZЈL$<[\⟘^_V'FST9I*]OVī|8&D4##֋Ӎv~*`.AyјdI,h))/˦cr3R[Ċ;Z3on1O#JHjz_Z-}R"*$*r=懑|TBnu[u^ T7P4 x-1 Nݳ/$r20s)Oॾ(%En?9y l[$0F(Xvh;vι=jY(UUy`[|_\QlJxyd@XAaצߵ/V^,}=y !_淗wZ216(ozgk~|n5[2:DXI3*ݷn};kqsC[Y&sunDm JHn^@܊|UTʿ <|]OPXrzn@O%|&4-RIݷo:`f͛6lٳf͛6lٳ`^/,Jqe?||ZckE"Į`\x,gĊ3q7^=wuhPv]<=vf͛6lٳf͛6l6lٲ6ֹxPXooS˨6)]9;<$ >*?|_5~RjqiwK#h=#Ĭ(ܖr^Y/{?2ѣRV@靣M[]Zrcf͛6lٳf&,cs{dlRN&<9w l#ncZ5U> o*_WS!%ݠqV5H W)T(+23!Xxy"R}Jf=qml# %ql;SLm+ֽAp~ޡM?ݢ\PAȟ(Nz0^HwyqJUտJ !esQ*_$1Og<8E&ZH Z<_p ^sii5YDLJGc ䷿X}YzA^*N]LHռYY:r~niI4Puf/%P]X[E#<-aq}EX( IJ?nPN\#53~PZ}/poṚ|L@eV U;U4lBM@KdyU{O/eė1ˋz(iCE""'h:~-N%(")YFYg8k6hq,h+sj썸} |8+ωÄGURqx6uVosƒ]g0!hª>@׎UӃ/7%??+MmFh5OInI'{ %#3dF,&.zOKTԓO|8 :KGmn $9FT>B9Y.Fe-Fxc)S*t>nkˀI ?v5c[9Wp7Ry|Ge**>Kyɖ:nj>c~[^`8Se^_6*RPǒH\proתI4:pI"ƳJw דEqFqdhI-r#p+Ax4HL-ĨgKd%痋WО>rAio$a&#*X Im*-)NMP_/X|2F ۷/s6Pz|6lٳe| ~"$O|}VX`H@?'.&4좜Oyr7/;GƿVcEn{nTTmlٳf͛6lٳf͛6lٲr_! W zu=v>\ky;4na)Ol+nUs\ysܫ~7":Tgj1Lٳf͛6lٳf͛6lٳf͛5ʦ^lٳflvٳf͛6lٳf͛6lٳf͛6ld(A=dsY,Z0AǷ,6ynCpٷ Q~ɢ`Ԭ"bZ( ҝ{Ҡ.w- ͛6lٳf͛6lٳf͛6lFx@)ק0QнvҿFxq= ^I^V#31b$jǗMǒ/-ȺzvJo?)VnM^+ʕ?k^9oˏ)(Bf;==iʆ5Ei#_JQAń{3W05H W+\Wl .?m ׿3,4ʈ?|A O*r'FA>c02H*Sf 7rXuTgr(HOnY4=/[$|A"Ȫ6y_zS,]G7BH&6䮿s+A<" JXGo՛:€ Lvl\c*#Ƹ#xg+='Nw1!mʂ5I/G\סjRiSL'.!-Ȓ÷?Ӧ_4DžOo| A|gv,_)yfۍƯ X\#W߇,w^GZ:atx*VHk2WfUZҞ5ڙ]cP_'7bf` _njΜXt\܇Lqiͤ'ש*O/ݢ4|>d/M 3̟VaxꈁQ]׀?Z #Z\ -$| \VZx.ivesvbOY*  l ~<~IA B&Ui.آ\$lfCNGuTqZ?|<{>=#2N&u)Q;ѿ >RԵ}FY!(hJ FʻϥSO*H)BŨNhA:kBcf͛6l\;';sirEBQB̿8}h]rmNT截HYIa'}ej;lF(cf͛*6lٳf͛6l[֌4R ~q9;.Eӌȿ/ɂI^Q](Vw?\G3ӊsː5<@Ȁ[{Ȋu;+6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6l\Eywe͛6lٰ=ۨO#Zݯj3G_l駿n3Yx$ TRjYXH&6Fel_Mtk؞? FhlhAf͛6lٳf͛6lٳf͛65ӚJNWaOo<8p 9fQ(YT?=3a_˯7wWt#FSJ4':D>gմXVU_QCWS@to-oV514QAr/qW51yl5̂H~ 5r6fZqɺgt OΞa/ \ QCérE3Kʺ?q.<`Pߊ׊:gm! 9Se 97}prߠ@\I.B'f9˗4bi-o͜,GYFNEUF?܆{O֭t?58 }8^YxJXUdAAEs8^ZK̨+7AEߊkKt@=>3f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͈D}rCW_{Mo3X*U>)FEo; ?wTޛSޔ_?4;o9y~z5Ɵ;gB~QϓϫoNvEUeSNJĈFOEwIV$5WvNu>񝞍Z qHyr_Ai9b>nOvϜMw]4 tkgs_ߗZW(*F.+;ڙ p~\]cqʡk2 +Ch%5qƵWڲCӭ3~pNh3i5X8MZV}|Լy#iۉ[) 5ط<x-mĕ*x׉\rӠ+ 9ziwJ֔B'[e;35*@#ӍAJf|4]Ï.6冾 F+Ź#q%y)F~,6xBf/Lvlٳf͛6lٳf͛6lٲg?%:4XB6eh *yTJSyCq[<&uEuvY^^b9߉͛6lٳf͕W~y6lٳf͛s)CP6޽vlٳfllٳf͛6lٳf͛6lٳf͛6lٰxz"^XԞS0.; n$^Yk%<?S0iV#J٤ b+u_T?S!$Ř&iZPvlٲlٳf͛6lٳf͛6l޸@ w)TI,T9/"묦4 H&BÓx~w?ɏ<Zʒ:ZC֧ot*GcSpj>^M U65# f͛(V͔w+69敹:F@)b8^?my./o縺R1HYUE]~'U^xVJ[h^ʏ0\ZXi3_6RƋ$ -~^M\w"޽Aqxv*_ZX+=Xi[A:ޟ,^V]oo; q!őj;ߘo1X֐XTȳ1ԕu}8IAٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf*)Ⓦz%שZ.d#/%ktx<,B-<L'<+_ F$FV3DBJөV(; U1f͛6l$o<9Hlӑd,ʪRxRþ|>ymp[X٬ƊYx ̌L:K-cH4@64sik2 !?#oՆٳf͛6lٳf͛6lٳf͛|٠[yLy#! Ą5+.5Q.wpIH!Y"U^$ h~(I|9~vnm[I%[:3Dӕ:S6lٳf͛6lٳf͛6lٳf͛6nflٳf͛6lٳf͛6lٳf͛6lL9 mw*Z& M/8;o}s{}\g3~aTDPZqyuZiבO]q$=[?|nvڽE7ӑ͛6lٳf͛6lٳf͛6lٳeSz2CʸM67RWWׁB~K.M4p~y 7䦓Ҝ15y(|_7En3F+u2/Grk}v:]m'WrLj)鐆[[h!_YHoId`*)On[S/JlWyVF.yO&=ŭIwi z~*$ \;/ >&>i.K8m8Cɤf,y5ڵsĂ};>FRҤ+Ԁ >T+@w%!Vٳf͛6lk"i8eӐ=qĚ66+iD$*zkWҬ$1۲%*I 8 _fs"ڀg1]cNԯbѹ 11Fޯ82\7R= u⡀U@A5SgtC@v̋Ƴl4$t+oɊÎ3qH]l#򚢬FI?& V.Y?AhZxñlٳf͛6lٳf͛6lٳf͛6lٳf]6lٲ'w/,ͤY{B@W1 Ɔ^yq!&t'Q⸚Eѐq 08^-Wlq `Zwy"g6a%_*8]h{f䨭#"#qh9Ӌ)zECFPHֽN!rSNosrKȨ 7Qʇo՟)dӴ/j"o ^RXru$+"T?bf8BbN|"BFv z) ;֘--o;6Q`/5rku*@>fH:-Q,L"Qq >DX\a,Z: (4cJQj &*sݭߖVVэS^w=a`J~1W^lٲzeY~.,6lٳfͅzoڴرGbs#KV1LdQȚz.Ϟlxi۔ޣ<ԞAASկ.[1QO'²%8#G\6lٳf͛6lٳf͛6`)lPo徕G[M>i斲* b>|PL+G s>Q7 nT>2>Tf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛*/6lٳf͛6lNRJl^EP <9G-D2ȥ$H( Pſwr;g;nE- *(;G^|~\%EsܾOY!cɀt(Z W͛6lوl ֛͛6lٳf͛6lٳePf&Ѓ=8kߨ0 lNX|>4N8>]1N4&%4x8+)P׮=c (1Lٳf͛6lٳdw/|AY!z#Ҏ:N븭v|Eϑu.T*'[k Jt Y''tn /iIqo OE'<\y2YU[Džv򤎗$R<&RXÚƲhUI>$fߙ41]Nwn#p0?+NwOWb+t޲ H}1 uUlm#~;?,tov:npk$V eP*sgoO:++[{WjUA1f+7+h; 8/6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lYlfr@6F`w6|͔G?^3jve#d( 887^KY6}+wB)N, =t%Fp5mD<^O |@uO{-QmA#%:P?yB%ށf$cUgb6h rzo.TFd>WMyCΑior徼$ v$@ϟ#J7s%joz`,#CVQ"1gӈ nϡ'"dJxJ)QF+R}iYY{9MuIM}꧉qƆ$9dQ2>lVmk,@WfX|4*7#} νH\WڇӒr´8͛6c6lٳf͛6lV8O?A%H )Ù)o1_Y/]%p$UuVi}Z?qSɳk !Hu+@ŕ ^]~6}tֺ(4~Uڴ^-_ zh͛6lٳf͛6lٳf͛6lَ8VDmYpfkE*mg'_@Žh1g/<+W$d6桼qٳf͛6lٳf͛6lٳf͔k2f͛6llٳf͛6lٳf͛6lٳf͛6l^F^2Z@x7I-Dk l0@<9偨y5u,N1WUxZQYpknY亞&Y$Vs2sn,ž @ o A8o6lٳf͛6lٳf͛6lٳf͛6lٳf͛.ZVkT+yٿЭ-Ս"$$Wq*#ğ=ͨm˽T):VF}:\:ޛq zkPy~é8a+j6֣ w5 I: ]3捯q5}r~eirVP9gX1oT=d 5nwLmOdHIhoM Gq42 XH%mڠힲ0?dغ =*>~lٳf͛6lٳf͛6lT<]/6l*Ɲ=6J8从g/9lm+!f(@)Ɯ]/Odnlc·@F?6lٳf}f͚f͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٲ 3.dS:t?yNTH#'pVj7 ~Y$]&H)^ +>ZjK4%* ׭d,ALٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛+/6lٳf͛6lj8C wf˦P˦Wj* \+|hxpJF) (R]hǥn+8[knrrۘ\,} Ou*{gJPƝapMH;lq2K; `58 Wze͛6lٳfM3f͛6lٳf͛6lٳf)^_iWM"s@Q7;,A'2}mLh5I)̏Uf"0^vW|iOoWaV u+T">S_:gu;r.'?տVxZg|\jnYHzGc1ZHlSKVO 9$l_2N?yLSO[kVmb4 Cesdɽ?xH*E}=gl-8(jesY ͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٲ\ٳf͛6lMZm1gjy-`k'Vjlj3Ͽr}O[2EFf,qou<>5O|yM2xntE΀4|h]^ eEVP5; >\Z fi3_:#t-0/hi-V?cS˟_~V&Ĵ?jbɶY闔5(`I04A'0( q)޹xUxq_o0+܍8+BC ĝvZN5Hfn2q$ai6@U[kmM#b'JLK-A; uާa7 8%vE *ڦ|Gn.|x4 INҳ*W9*)EUqwWŴlG""U8BE|SM#rI:rYtxҿ1`yX!Ym-RJ:HG&^g&%mS01H_C>?K4n4u펛"}c!co@`ÒQO\'*ZA!#cNL\GQGEխc^nvR;we}-(! FWy懪Cu uA5$J~0R<9yE:U $'P‘'R^[=eu%n/e,тαgvjQ`2f͛6lٳcDC=T$?kfxt%a #g"%asI'NfFxSVQ2 kUwin-CEdu[퐧r MV}&t^eB(>҃q/#0ZȊ.x)iɩש랈tԷM;h.Pcf͛6lٳf͛6lٳf͛6l|$g6"Tkg>Fe=0 YȔ#ʼ7V]1mtJӪK~k9]=Ķ×ڧm 3f͛6lU|ٷlٳeo_lٳf͛6lٳglٳf͛6lf͛6lٳf͛6lٱ)$ePK9޹r۝ۍ»uWo8!`"ʤ"f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l٫6lٳf͛(.\Eƥm{27 `%e}֗^OF\1ݖTA xunUΝo,ygM"$ٵq#QƄo LwoY\"aȢzu?pW7uwt^)6o[CJ Y+kt HhUԏ%ŝ̗#E3ESSO",dAy{qKA7"~:W՟A8iSн{4T'z6lv 'sjWӌ%YuYRF$F8 x?Rԅ4\Ԍ~%%Hط o'/gN򯜴6Ǩi,*wuUw$c6lٳf͛6lٳd_i,&>ayd[[YKDbc[a~_#=8.V(,|@TתAFܖ*3Ue2Gk(bNіOMۡŭk:{G} *WQ>b*uEksNԧI(cS;+4aUf A)9$Q G^\?Fxcro^4-"AkۣC$ҕXgT$VBţY8槚Ȑj^p+S$ՃW۪0 ]wUDH`,-*@]^KcFGz?t+jg ;fPgJgZ^xmVg TX*w_gY8vv]w?@‰JJ  <5ⷔ=^mRDI;Hvc 8H̦oy%yltqJg \)Ǔ376ɼsA #vC t0cf8PT^ (@\_~vuQ,)o+Nhա疵)>43(kJ 3~ |U{nx/541F2dbGQˍiFUpd +Lp5͛6lى4Z`k.""ҰU-3󑿟>Z_/ $,,%2vjW/GnōKH:FŨ>aGϙ?2o]idb5?[riE=>R~H\PwG*rG>+Flp@}:à)͛6lٳf͛6lٳf͛6Uw^lٳeW<9iiy]z2EayddF?6w[f&6O-PmzÛ$q>=y 90ϧ$!MEF^l+OlLJ @:/6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٱl9GkO.ƒK~u-ʇm۾c4y\MU6ddV5RO~w6Oſ| }X_9V_-qA͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳe͔=^lٳfsf͛6l4_͋&Сѧ`,K$"?.Roj|yyhgG#כrr΍? W2mM_N UHYʊ G-fA569;5*8ڿo.6ivu#!q3E@i~?ћ~#|~Wh[m5r Ԏ]풽3@A m>81iA{%¨G a˞PմFLm2oN.P/,\yJ/ƀ~8ÏŭwPf̚qzPC$ꌌiD~LܛoXX  6lٳf͛6y#rs&{f>\S*L}8/,DIB5 (_佧muǸQ}\U < o><DBdy~<9! 9q?֞Wӭt^aKvBYZ ~7*=ݭ"E5f͛6lٳf͛6aD>cZyn/{=&DK!vF+![**LoKYCWvޒl~}Me1kR[ki*(ڼUw}[qbi18,еXr~o~oM+\0I[D]J+%/B˓߳C:t۫k;`ϨX3SgiLӵ{- ux?{o鋗U'LLŀOSA\B[bRҰEɧ\-^Ta-;{.Ɵqy(ymX@⑘UylnQ_~fnjsmM` 3t4Byq+Zxn@PP ,'|hbP>Wcڬ?i[F7 PGS/6lٳf͛6lٳf͛6lٳf͛6c?r7ɖpYG[rzyۈ&NLv>+򦫠yN#mqk2\MP?WZ^gYx?&4-I闛6lٲ f͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٱ-zphWjW%sguWxQHjUyg8zZmiUUA(jҪ T&떫0 gyr{3-4YZ9G1L3+=7^Cu'\y3SbkwRJRfTmHiv#XCڔ|٢׭*0`y[6lٳe2=0AZuaʫ=RYn[]w@O[w^[z>,jA⼀CO|w}qq{ FI0 ɾ~芺o^IodQҊ?To4'gɷ*[(!snCɃR0rz>&++:R>_Aе9H}^߃mfP߇~cXPl]d!1 1$5yy/'FʌT~^?+Y#vxsP|0͛6lٳf͛6lٳf͛6lٳfZr^lٳf͚͛6l͛6lٳf͛6lـlٳf̀RE7vxrgP%D:,F8[]Et߾hE%Zß>%EH ԳE5 EF~]ui61 v:❳Ɠp<1) !>| iZ\-0\4p(yhYWztϔjO:\sʒp\#}E+x3W>@ykZ4L,J,jT؀yS >?k=d~6lٳf͛ۋ5gȍ2?,o-]:[JZ9RZqUOkwʹ6!p$U}\|r'?g4M#\$̗|rc+Ǘƌ8trV~\}Fx;$qSVU[ەzm |z`ٳf͛6lٳf͜_+/wnW{y9Xa>=5Y~~|yThnIr*ST*Tq/NĞa,Ĭ<*/)Rgb~߶~I"K5iOHy E[MIx2GJQ{|ZS/6lٳf͛6lNHR_7InNT徑ym/ G!Hȕ䶉rֳ* JSYIJYH$%UFu.h9'cdI,X̲qrɿXVfEg i-qrUjj~ߊgjT󍆽y=!;uhYLr_`7_Q>99|LTdKC+kv=MS B_Eԩ2(D{33qdW%50nIt5̗eVxgҫpU_"_-cSi+uo1!AFQz^vn\!?,-1@8BBS^ԞHҼ*&EُX,VŰ UOŠj*p!Te6lٳf͛6lٳf͛6lٳf͛6l BB܏4aE%I۱~1fY{)!Y.h$^!BY<[VES9{ڒZ:d͛6li͛6lٲO^lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٰ^m^if5w',6n8 ?<=tkfYZD!xQ_w ~sze\B /prH_Y[U~G{?:;3zRQBQ@j{/x`qjd8b|S6P5͛6lٲ,P BO,j:[wl#FI 6v|˿&zΨ_!5~&T*>/aͶuςV/S%GQ}%79KF o dxmwųf͛6lٳf͛6˶gtA9[Μ_r F>YM~P,`Sm,i#QЫ\▮iYsFHp`+jN$rXBjbDTg1y:]ALU0VX^ v5?+pLjsAq=+^B%ߚ܁zSebO)5]Q,jWp*Lq;f͔@4'Lٳf͚f͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٲCHh@5@Woq/#So0_^AK2[oT0ƛpvߑ1 XٮYWqCȷ*%~A~!R?/.laz#q^TW͛6lٳf͛6lٳf͛6lٲ"=f͚͛6a6lJX}rf͛6lٳf͛6lٳf͑:h%V?' ;4->fc$ܚk` dI?m{4VƭȝR΍hHRI&vSjDJN?If!554wmWͺvfײLwe2laR۽5OS+̿9 <ηksww]*[:oRgYWps~Y!H= SV{[=ۥv(b ђXE@FS͛6lٳf͘};ךbah4$7^KByms?6֚xy*@1_UP?rʫm7gU.ZRHT#LI E'@6lٳf͛6lٱ UHϞ~HK{ۙ$xڕnߵ8m[I'I%A?+^C=>a$@;C:\-CS>a~d.j\%$p`'j.<|8]{˷XF5Q͈-sr˩y/W/$P4VW#(Zݕ!N) }J*yf͛6lٳf͛6rϯ#?<-s x5⇖tO:9qV PA3+}ꗐiYBF2cyhN|$R` E9D-ryVߑ y7%3ySὊ]^ iM)<g:aN:Qsc[9%w~B`S 3AZ,H OA|&f3I`PdAвq/ϨC_X5~B bf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l6l*( =)c>U'b;ﷹs_Nע:!qN$dY ;FQVd^^;pN-JJ9e;)b8RoLe Smٳf͛)#cN2f͛)]\UMw#yf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lK"pɴг~ƀ,H\q^?Jg)Ŭ7vFA"8Ĕ~'nS)ruߗ=+}S `pҁ_ _,[ P($RN;6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳe͛6q$ӏfUiE % LhwAYzg⹳fMrf͛6l֨Z/^x-tճ׎%I`AnfVH/oruipF0g$-z~kqL1;NRA A"DRkqS>hqH?H3f͛6lW6lٳf͛ -5}>KwdCF!҇>_~xyn/)y^YH/iwdd/q!hɍmۍ󺡨c\li<93awkЙ.(~r*<-9rLOk0]0Q6GǑ⢢J!/匰%FԩEkSoNY]IlH$o\sA\'&umKYEdPY*3[ctE6ꖷ fF0.g>_i+iBE ѝۧlS6lٳf͛6lٳf͛6lZu헛6lٳf6lٳf͛6lٳf͔+~ٳf͛6lٳcHbĝŸVxU-g麟젾iߔѬeeM:/Zr8%qqcnֆA ,jPAǹ\~kSoƣ6lٳel6͛6lB߮^lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6llI=2F7 rfxr?Z!}b 3a,CIԖB~'y?ڮXnc'UMXnIwϠZ;Z@D/e=O g3[Bѫuұj\D^IjzRsyf%_N >sgO P X ff͛6lٳf͛6l\忖g[)bpEq JB8N×4o9nMR[bR<9DP0FF#ZYRԭ储\K(fmN5>hcrlٳf͛6lٳf͛d,[7dTʒK%^GԒ8<&y >B5= d '֕x-?ixց(>ضStȯu2"uw"|WE]T_RC gGxJ 7rK8_&X/y+ s^S=i=oZ(Xi'#VVjbiUy sKMරPW+HK7ȯ!?h<oĝ@\!YJ2Z/cUC GH'{1qP1f͛6lٳf͛6l&;{e͛6l*:f͛6lٳf͛6lٳf͛6lٳf͛6lٳew+M9yCM헍s@i<9uAYx hP*v9qUwK4+c$qUAaXB݈c縯4L")6lٳe͛)I` 'f$($V );2f͛16lٳflٳf͛6lٳf͛6lٳf͛6lZZ8֩B=>;gFHՔ)**įSo~}]ɧ!=2R%R4ZUk+y=#OiKZZя!BK Rcו44(h@7(_McUdV#f͛6lٳf͛6lٳf͛6lٳf͚6lٳf͛6lٳf͛6lٳf͛6lٳc]>1YMx!N0; W~iVX3*? YI7 B{r߂񏊍ϵ鋢6lٳf͛6l]2f͔iB3~zy=K %%䌺`d  :pb|ϘntpZo0c#74"O OeUnd_IFSX@iS;eO(cf zf͛(:e͛6lٳf͛6lA͛6lٳf͛6lٲ|S^l٨+^f͛6lٳf͛6lNr}6^kRwud>%.J伖sg_zo-NF?4^+P(5?Ri T0 e6lٳf͛6lٳf͔1;v;]iM~]^C f+ź%+[og/7j>Qg w1Me#"]0K-~XKY6B |4,v#ßVKZl?Mִ/6lٳf͛6lٲ]3jI/!ߙ^ZVq^&7Fbܗqšm~G̓,QA(TVF ȕ!⫽)Y ~Mf;EoDo0M˶^j}1nysr3hpjޔOU!5N^Mn[5C;W R( GFoÞ?$4O6i5xP1PRЂjr__1VCR# /F n}˞yfd37i%VBhZsCǚt但EPdI%/hz t9f͛6lٳf͛6lٳfك-TVݞpD]!5ӛp >Pqc3]&I%xLz*КIDž>,~XOIL,eCXCBw w|.&RZ5jΈʴ͛6lٳf͛6lٳ`k}{vkF0o-D͈s"iSj6G̭uF.R@~Bx.qRJ2g6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6'2sB+O|y_4ӷJH 7ou2;cbٳf͛6lٳf͛6lٳfuV/u?𥭭ۘ}IXW~ m7]yKiZMȅ>C&jW>b~qSw o"0pYPɻ;as[DБ(<o{F4`'9" qBAo 4i. TebB(xsEM66zDej~+sϿ+icSG!2_Oyr^?UUPl)$cf3f͛6lٳf6͛6lٳf͛6lَlٳf͛6lٳf͛6lٳf͛6lٳf͛(/?%piz# Wh܍EkmdXUܲgbTnǗ/Jum: 9+2( O٠ܘ\\EYhUNzmؘf͛6lD͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6[d.#s=ƹ{QaG$QR[f?!Pg$?,5;y=r(pUj*OaH: ΁t@lvlٳ\ٳf͛6lٳf͛6lٳw͛6Pt6l`sLٳf͛0vf͛6Pˮlٳf͛6l`sc Ȳ9љ(9'6S~ K k\Q6lٳf͛6lٳߝVӴx~)#SBBV~ZƓwޤ\ȐUEW?C^s7Ku 'B T̖ˤ}f+oHK1U9 I' 0;~_72Ixl h9P;tϤXEAbi97dyQFnxq? \Hyit3GirIuKd q` %j熿!um>Qj24; >!J*>/?O<"Mo{=)6lٳf9f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6P{͛14ךnൔiZJiiz.}a[B.3>\wr~Py˶ <)$ VNu$N-͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6C15{Ik5AЬdrrZW<9 wi[o¨g2†>noKo-Co"2v_G?\^lٳf͛6lٳf͛6lٳf͛6lٳf͛^ٳf͛6lٳf͛+>*~~c6lٳfJ wxr}i4>coq p>%n!kV 7f֙ t;MKK-v UKM$7+H~[.["iieҴQƍ+UhXS=2f͛6Vy O^lٳcKs\G `+ω5t;>V̭pXƪEi?_ﺰY.R/GL1+ܲ1r9|Ө?0[KPS7}*M]jJg;t 48dZ@γz,q,`'uBSVy^Y"V K,ȵDW~#쎬Tz+Xޝ%^i W/P:$3<hr LJ;Σ ?ZT939׋|7VСd т+f͛6lٳf͍RĞBpķ$ RI'^q!kIl5}.i`dB&@x9V?DA=#eNjXrUz)ȍc8Moakb ޗP7J;΍wXoK׉]U!8q Mzrwʚ1GNw+,@>.*y.o|aEUdjTWa2G&pMCkzZaI' I4QN_Uߞ$mlӤnmϋ''*OEo'k6'*PmP1f͛6U7뗛6lٳf͛64 $;6l6lٳf͛6lٳf͛6lٳf͛6lٲP͛6lٲ֝- CTF91UH#>_vuK1X5Z2-3qou~C_yi (8AMwRJTubsf͛6lٳf͛5+6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛(gdM82Hȕ_Ʈy~K;6:ij-ijHs( cǏe?W% dD=ATxD%fXaGo3M1!,1^Q> sO6Ds~r,Ӓ3 sF}r_{[l{ )naxtea"H FUN~]:$[-"Voxߋv/`zJ5H$tˋIe 1v&?z[WMy|%|ڳ%U2*5N*VRkq~U_6Hq<+ Tn>y(&γksX2-9/0A xӗ}Ɓ>'B*J84_7,?6?/5:Fy(Nj4pޥxb~ Ɵtc')e<K̭ϥREXf1ٳf͛6lٳf͛6lٳf͛6lٳfV *h^17Uj7 m:K^EفFAEqZ=5yjV=[[LkfUɸQC!9m"!oQҀ alٳf͛6lٳfZŮhn}ƀW<;lMŤ2ƷM<Ÿ#&f694c̚XsY :EfZY#C?~tV{;JYDRoAPJSM._YğҜ/n} x»$zf5( bR¹9?VQfi ZQ?Uz4Vb_PpzTEu!kz֞3"e5 C}q"/ieYd>1y.Ѳ@ ?Fhr|\!m%؏ܫFCկ(^G:?4{ ܢ 94?~kn+f͛6lٳf͛97D[8)%c[> 6/&k\@!2|?k6^?wy?_[/+/_EñϔSMWVYQ'"Q>/󬟲>*3u-pT=G7 hv'N[ o.<ߠiBȞzG̿ `~< qK&Y\ fUdU Z_/\j_~f.e5=8ݕ>9- o q-֛m:Y%s"]G!NKūJ¹IH~@q =)&>c6lٳf͛6lPҤyf/6lٳf͛6lٳf͛6lٳf͛6nf͛6lٳf͔PW;߾^l濝^c>R58KFav*TW>ZOIOjra6-MY9s'yVJ{'q?TѦ[8^dT:PfSVݛ`X0ǥ:@{e͛6l6lٳu͛6lٳf͛6llٳf͛6lٳf͛6lٳf͘(byആ _׊^$L5ߚ.)}A$K1˗|iV3ߐ>_Z :q2mɃHL=`uf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛5sfʮo^lٳf͛6ld S^ݬ&GUnr^9t->3M " 'r4s ZVefm>=)F֯,c/Ix7=Chzyf͛6lٳfr8_"Q,iO >.͞)*1-%(0#ܚCP?Fi-Z>pGuF>%6ўuPȭ7Jo܆^lٳf͛6l]궲[GR|2joJ6@XrNHKY6w-_VBUVOMb~.w+힞`@1b`R?4$Ҽ Ż$mΥWU]@nJ/䇚n;q4< RZ Rͷ}nяl9c9B>P[ۋyHn+f_mlw :Go$fJpeWAi}+(7dO9VfAqY?McS6lٳf͛6lٳf͛6lٳf͛6lٳf͛6U7^lٳf͛6lٳf͛6U{e͛6lל{r6x|fΓcǐ^|]7􍤄5VPTh-d<+o#;ƌOYT!-liZ͛6l; ~k&n LjM*}f͛6`)͛6lٳf͛6ll٨lٳf͛6lٳf͛67fgpS<9My hMKQb&y|*y?$W}ZDQFB E~".?zE@4TUa0)z1\ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͍g 0qk6jyTWҔ;rCe: ,`7pvz&E ar@=kvrqEn?nW$ O\x5͛6lٳfơg-G3=+SZ{iXI F&`*J[~KoWqhrGoV<>Egwݙ?NҔ"6q*]:aPX6lٳfaQLhGL70$ѕa]@|{IKɢ'G6]W6}GY_Ex8*xZ0_ެ j>Uyf͛65%#<9g5֓CsEnİx2hT!P|)\Hѵ&FK*%xѣ@Sϣ Q$$EZl~P<9e',#󹝘$|xx6o%5Y|2Cr.8yf͛6lٳf͛6lٳf͛6l@t͛(i^yUFq4_!j mncJJgψ<=強6j,0r!gHʟY礿爋'+%4hQfZH @Bi;]\ٲPt͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٲ">y_J{d%OMf% lr V>_fAf]WJ/$PVJ Ȝ=m}*F7;7PiƽEW=;۪.۾EGmLDT =f͛6lٳf͛(Pt͛6lٳf͛6lٳf uq7W`jV&J7pP=fBkiNs??|yzA3x՞Yʕ%LmʇK2\wGA! ܤH~&v(pqPz崪|-յM&T4IoQb_rXPr*cN k9 \(a=w; S6lٳf͛9綵6;OE#KrPhՠ=<º qmJĥT0#UPž>'|^TxBq%3D68'sӑ-!J9)yf͛*0 75qSp8aKCWXXBZ3j|gqID.4Y̊4RFUC*/&@ޓX?ʟz'{{fUi*bDkWh^_ޤg.,4,Ev0 *?=cΩ7=8B5b5 {ٳf͛6l@뗛(„WhQu9iKmrT1Ҥ|$q#ol-ɭ`k>UўDpI1_ݚfSǑ?/O:m,}rS/RE[}+}G^QMTTׯݾI; cʈ7dž:6c^ٳf͐%i{F]=zЎKͻ_k]\[}V47QEH̀+rMSbSM2 E\J؏bZ ŴnxQJ5 0$:SOG]ϛ٤"Raڭ"FjC=~*ßL(&R z!F>_C/R9$u2J/19=$|ץỞSr\4LJ0fR[C֥xӒvmO2V+l'al(?6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l[/6lٲj7겞ʷPZF:i$u7o(,c>d^i~Z1\ʶ"i2qU!kWK,J{|Z1NORC/1Rj :Vw0߈{v/6lٳf͛64"/DOke͛6lٳf͛?lٳf͛6lٳf͛6lٳfħ~ \䧚M Y\L\XS i(QѷbϞQ8V{csqU/ߎ}CmA,q*("WCP>'|vlٳeWze͛6lٳf͛6lٳf͛6alٳOld,[@*NA̍ˆiU<$TTg-4,:0PJpm9+_˺{J^8DN2u||ծ~pYIզ[n%@$2V@827P19IdX-fy UQ.S|g|JaǡڕCq_%P~,7e{m h\P ب8‚@gpT9 cQ%S??-u)f㸎H*%ŮqKo3]iv_*Ɗq W&} -n$SC#,H˿?j'̺ޅЄ"G*$B§voo ?-wr]AYh^#49/gT[x29,F<#|(ONMӮxɺV{(k+LH 5CG(].喻.ܻ*TPt ࡛6lٳfmyrwTvhovgU~Fuj]gnIxUMnr6 roZv3`q5ysѳ :v"0rv9?c"߳oJxj|oo}j& +[K2|9&zQ?!8XOXd Bl)_4#;l[6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lC/6lٳf )?#mY]RP̼W$~>\+G!ϞqCYuyn5eRYը6 D*OMnu tYUA#DccFO_jZV>҂_+Blk 4=eI鷎^lٳf͛(79yf͛6lٳflٳf͛6lٳf͛6lٳfJ+M˿󕚆J0ߚh *VGS2k t$&nu3Q:Cqsc M=K2'͛6lٳf͛6lٳf͛6lٲ6lkHhOјH=33Lv4 q_̈|$pk%ܴͩMNE6oJosiE_345Bcraӟy{[3V]OBZ&X#>!;=sY}36lٳf͉ ¹rs\\+ePڃ b]d1F}&s-N@O)ZIy,R@3E0WO9/[]*/(o)F]ߝ"/F0\6lٳ@8%7w-R)ʔ  !΍p/侒H.,1b%q_[~vfjUPD*Jtro^ #sY 䚴a-䩍*zĄ^+GB>\i]\YM}"!ZEcˋu g7 oX2H[\|֋)#ezzg/i7?HVXr93ͥXuֽ hqP)/6lٳf͛6lٳe2= 1)VRXv9UyWK4ao-yatU-Pԫ7GӞ2eku]6D dZcm'?hw?(.#!pIfusq)a+? ǃ0G- 6v޺,v٣VCJ kl;_o6#@ANJ?1immdGrW⋽#^ ܹY eK6gYdf>5kÑ|D-[nƝ:d@U"0.dfx&ۖ HPvz˟7ck3PFO>Uko}P\ \2~)Zgm{v9f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٲC;sn}n?%-"hh&2(얿N5hV/Pݲ$>_sA@_kcʰS+*,y;~ w?Q34ސQFeЭA+;i!⪁;|>3/s1MDTw.7A3rY)mim* Eٯ9vq͝wzOj A5S묃N]i&~g*=fo qv܌,*W 9 {<8M:FD Z_rG_m<"KH*[oFK8+fgy 3 SA5~~wyXm/B41vʨP8~~AUr/4uM`m&UhӸAPO/Hjq+=噖6;Td$AAϨěAJ|f` )" UܵTtQScPKڤ3DJcψP\ӎݸ9=o-ޞi.GT5VׇN~(̪yGί}[714>Qcz2Mn9%_.uq~X0wM&:ĻJUN;g) N \q/ CzlhۋJ@Xډdgw.E\xEՖf͛6l{Ǧf/ x ]>P ~(_O<>u9^I⻸^#iEd0n,x.-zѴeҭ&jKDc|}b%Tz=>/O~5Vh(W@({S ٳf͛)Al˧ix-ԎA?k iTq nC:եRmU\=1|P2E_ ێ4hڛ^٬E埫,S]Ld%(n=_gաui!%% ZI|2q@ȌŤGr{[iBTŮ@ʬ3VnN[*ao.>X-k8} 棏hVF3߾Wv6!,vҭL!]yFu=zAՌ0 i CkOqӊNvmn?*B*< P1UnZ1{s-+2q<“*-~&~\>YJ69P(Hix hޘ \dJX*w|<S;xJ3nQP xrUu^\)'ӴWăf u ]!~U 2=>Et A+ci[7Dٕ88• ]Hh_^e>JQXjETseO"M+Lbu =Kٔ;$q7bX0V!i7<«s#V"ԗ?O{$y5hL㓋!QFݾ/`9+O厹h/QҢ+ӽ*>^iqo1&VG z|G~3e9,7^.sОu#&,!D+IꥅgP<}OK+ *[s鬒u 9//k:NXh;p;`/4vc0jd F Y lnŠO9'Лrmef# *9qM~^~cAAlfqgf42cks;<^qs,HH@X̋O7^\xDҼemBmF4h̀|'4骁]iSJ|%iqgst 샌32MHea~6V?.!~ 1CIn2IJzlsxN<ۍA?6lٳeA^HUl081Ae7OZÓ<QMwvo ?5ˢf$'+gH&yBW0%d]K}|i6^X+WQiARIS;ƥ,!׶x͚ޚG1J/ +\!pYiZ$U~cΙ]%i_;UF<[Ο>SMG}Kɮ_r1 %8J(㗿Sgֵ$>t3я(ֿ ľ+zoB>42&n\H Z]gM"EZv0 dV;`[W/$C|;<9E~"$K݁6x8on/8 {>ory0+ő-~2|<ӣ?$Alٳfr3o4CEf|xrWϜz&0iڼ3*PQ݄U~.qm2su}!k{y"wTQwCk _];D66A*Q+6lٳeQE1( p %#nTAk~6ADjD@Hd^*U//m}fHt& JdJsVA^mWB8{Cˉ$VBv_%1ۙ#$N&ɒE5p6@K(P#ڦ|G0E둙R'()Tb]|Q'i^gcIb%u^,ܦE9[*JQv|8G:|o6x">E  ODZ/.<,?AHՖ8Bʌ %JQG=aǖ?#l-%7jĠfj%8'OGſ 5UW8XG)#/ݟQxv|^~Yhx`X Dd –QT^hӦ֢ F),EOl*(9|43SU OgQP& BvYH;ÿ+?rFHMf#<*ޘ'e x7&[y~d__d[9Qyޓg@:E][IQ@Ď;Dsf͛6qۍ+|o+˖F^,LaǗ|^qZXZJYΦ&-2/v&}8ɡ]A%>E9sF-Wں-G앥M{lj+S+Bz6lٳfHl]қcӦ^lPŒ*=5!ɥ*>9ʟ,@ʼQC3F>*~5em/Q]_2jJI=%f1x1oGMKNx(Lyf͍RI5vf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6S# W/6lٳLkZ:Z{׫W9pyJ3  xt`.cZNjĩ({lx3ϙO$+ZJ֛P6rnͱ'/xNs+F.]ܙd xq5 ] n3+Wj ]~g4=1#`)4=rUh7އ,)*6Q/lAowm$mXB"O (&Q~jѢAFV6UR#ܙ'Tُp+'/-#~_U5^W[m6n2#<($p^?ZſgU44mQf$FIkrEZ Əͷvԓ8ο+YY󏫩x%%t-Kl iCN8E>̒>_zѤsT .hJLA~HɠOd(#z/iLdF~g%BLPѴrr-I }<9?'bl4S G9ܷWT* %dP5͛6lloɏ:[ZEp$X@G`~MFp*_CU# O+c(geƫ-Lgs*⬮ |~%H6d<>q?}FtIf#o b-%jjzPX5'|{bg'{(5NcNePzuLt\vұzm I8KWNAwrCN=vޤ"K:-ϙuBk^KX=P_iZ~&osӿ~cf Ŝ!H@kɹ)YӶ|(0^lٳf狿0RkKR HnU**}Yxɳ>c4TNavwְINF65r+q}IQ%OJb"OYG"đ_&zZP؃p1f͛6l6lٳb2B$پ Rg<~2NĄgÞei2zХqsX`2̲z<ҿ ~A(&MFsf͛6lٳeLٲ헛$hz]i5v̤0{e͛6Q6뗛6lٳf͛6lٳf͛6lٳf͛6lٳePV ⢻)4?3>t[ǨA8EzD}D)_[-öc :lLD+ȕ@dV*/tPPgHSQ;cWzeٳf͛6l3f͛6lٳf͛6llٳf͛6lٳf͛6lٱM(8_/tңudpGߍ>sOwtȻ-Ϥ ~8Q8- QSjxؓ_{I> vZӥ2f͛6lKZ]{/6lٳe̻էiŸ3t L Omȵ]w7?ђH+R_HSq'RWXʱ[*rZh׵H#[HJ%*SxpOG^nБHhéOOPoz0QO?4K~O/Q]2P5Xkn70^_-X[b OʊUL|{9%q|rx5Nq9+|'~{Y?I)A$ݙCؕ?j_{gq))e՚{˽sͳXT$-Δ젆\Şc <֒)"$rVo yR(5wX8 //n1YE*#Qҧ` - E9t  +Wbܸ\syK`KHpw5xDXe~yVCIF&L}6+M;&I5eQ b  /likNt#%D!>DKԎ<_(ශh7}oyV)aG`9u!`@278חFHTcB I@~oo 5=:Ys? =*dc?oxx0o;WZ@l )'uROg!ETis/7FyW@H^tcDdW8~q9=1&R$^29;.&x[eq=d@I~gu)q>KM/QXs"rF9rfԼᬇ<~'C4F %Ѕ|zou }ZxKVy-(~rWQڕԯ.eYLrq#ҙ:Կ),|mJ-3q/g>bח;j瑣SKK)摑~,Gb8*kD+cq7%T$vuH+?06l QX-R@K76wڬ*bex]}S1+gOʽ-'M&XpY q8HJT^jwTYkhȈJ 쟋Nvu9Ԩcހ F^lٳf͛1WhDrVR1E8ېLVVod9gY13R)55zQZT-hknkcҧ< ܰ 8̨>N>l v}*FZE J9GBֻ-֙&8X:(;uaL.{kQvֶ)h^Jdd *^OKWI-ʇAaPmO<9G$o{NT `˕dGT*j^rB1^Rr)UwO|4$ I+q;jl*i킛r?ɖ7M)+LՇ]p9Q{F)TcVH*OiD+B(^5 8ҵrSo$y+M#PHFX N9.TP0}>>f|4o3C $|_$s==Ǘ3JHIR@cӨsжA6l،T;{>4^uH^{ۊ2)oNB#}>_>k~FՌ1[H)pru514bӮ#847XU(ϸP J A$eb)Ƣk&LҐUӿS6lٳf͛6lٲ'<}bKHM1,hC.n_gך9_JB V~9Ȩ/~tcJ"U_W]j1f͛6lٳea??5w#iޡªH/eT*$ݔԶ'^D$ b x]>6/o/]*XTte;Q`>s˟_~a4?Jk4."b`o_pj7J׭͍`NNy~/iNjs[L +ųf͛6lٳf͛6lٳf͛6lٳf͛6jӾlٳf͛5;7,(ZmxkrUvo/$YeA((E_ہ?y"Vռӧtܘ2$+M96jA͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳeR3mXXh+cu G^-C5=\[KxIvn y,G8~.;z>X=ss@J LXĮա"@U~.ٳf͛6lٳe3q8QB'l=pR2$aN;Ey \89 n-ZKw$O!xs{shv{!LUMC+ǎiW8uOUcDi%[y#Xa3seu,xIgc0~;&qi,EA|S-R2#J\2"RM贎xt"zd]ifv!^d?tT լ{ )6ѤHUW;S1?QT;!^gj^^@ C7/g>+9 >k9VҖGnIfFhӑV):[9?~g2ڋ/] +9ˊP(-NI<+Ojc'RLJ}^ܟUEE~G~5^jKH"H8!? mĽWx?0:JYI;]ӓSAoȟ7WjK{MH|lH0H~87Nj􇐿t **й +p4i bHΟ8LEX4Y r+-I?ct3ARHDn?*n|e#+@4*܇xߗfG-)lTP)+O0p v\BخlٱJ|sH~P 6NC% k_<^ile(F>Vw5UOgr.58.,+w[iRcBsJ3+Χ=/2M1ݹbYNG쎛Οe|"' QAAe͛6lٳ`-Jqik$$`:oc}|5 OI$*_⛳)cVOTH C;PND`Gy[rI:tzrH GuE"3}j畼^IUaeFJ D~aʥ~ۦ{ʟZV IUP PkK۾/۶p8ӛt=ܞݾd%j '9LvLj=g*+bWO^?P+}qw1`bjPR[vۯ١8; vXe*<^ߦyq_Z^I JQL\T-ZkǾqsq:νm͛6l؍J{3K5g>&z^.Wc>a~om11X1aIraR[ÏK+/j:] qsfZ)d_ߧ[5, L-Sխ{f͛6lٳf͛6Q &Z徦uےnW|]3TLs̔%# bt>%T{P!6ʯmUHn1\ٳf͛6a^e:4oWY"НPYmu40ܤvZ甲bJD_T͍Ons[fmbR̉B;I [Ft߭@v#5&$n:>[Ak~su[+xUEQX n0jo+?&ܗ>h[@h@}6lٳcj܈A{ٳf͛6lٳf͛6lٳf͛6lٳf͛6Q4KP=?ˤ򍆷jܲޥTPX/OޜV=7L|}hQZT rY=b>/9D+/QJu:͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳeWN:KC4<)x:Hn?˞-4-v$m#bˢDJf4s_Q8w_Y RX5v4pŞ u^>uƋ$ŅO?+^lٳf͛14Ħbw uƳ>™*]R/%F` b9#)-߶sXh j VU8srɳq.@WeQXqjw}G^%jx94O-hXђ/Ѡ<~A8oʧ/_%ZYqBQZ64>k]:"($*I7o }r4)RƆE?jv+g.gK:&XV "FS6d˷??Xm"im»Qhgc>+5*G YGk82;3ֱWB"\|F~zu3MC"`wcZ-v⼩-LeRg ~GYGȹ %[~<[$?ߟV~NmaiWK xx z\=NMMܗT^*\2} NENyKr72[6vՆʆZXxWG_%DH%OƦt!Tr(?k@RHv C?N?Eq TE %j4:HX-,t@mU}8RjYmB%IŴ~Ԏ ˇ8iz VOKǍxE-ˈ,4=59_`P+Б@ ;rfZn4#ڱaȊ(˰oB {OP^malV@oMz|[=x|736]j܎+kOgXu/%4. )~,KNJ=Ks= i؞#XCT۱N8,co qJCc*# پUqv ͸s:Hy ĝ-F^* GYQHÐ׭wFخlٳf͛6lyV}E8(QVvQ|OsMӬŁvImvVP9%hynxVjsYG!/^we!T;E?ܯ]› \F1"7Nk^Y7A1zSr,sFtr6 |E?dm" ;DQ$ ʪ􂰒3ɕ<E]2F VXsJ3}M9 vvkyMO% WrЯ.[Eul 1P%VdQ ߕsjQo1VK#ncӾx{'N&fr\P~&'5^[g.|tΧ, ,X|Da7]v*hyK)4M.o)#8?+뿞aE΋ 2?Zz@g.5aw]7G>ʊKI⌌|`_跒쬡Ju>ͰO|\e͛6!pS#]RwN|ambyx>1thA'CjTFܩy(yȩ֥~ogv"ѩV;]㞬Ӝ2_kxr2f6lٳf͛6l] 6R^5>|'AKc,iKIhGB&EC鞿 Tr8ЄzU2O,U23BCօnACf͛6lٳfv}&9Lyi HE/#/,8Ue۟Н'*B8+Y"~xzQC5@ l rtj,BJs#~-ݼ8XKx#7r_I)Wu W~+ lٱΟ+Sö;6lٽm%˄%,v~qLVJ>Xr#:ݹ22+O>`k^f}"%IꢒJ%9Hk׭EZ.=j^qXoBV8#@cU}rsS/~P֖FWaɇЂSfΥkePY@ E.]FGs46p-ФU2uWMdWV/ǒ?*)kگPB&SQXjJxg/.iiֶ P9P4+R?~[t΅g{4kZ|=5#x~&-Hd8m^S8Q"2l%y UCBtsHW%6b%oe+^2rc]>:7/g w$v?w >>(VXb, 2VYaSR}W.[(-V`RwV~}QɈ?2<|=Vg|H \q#|J[S<Y2ܬ12IXx3|JKo^C4+z/v].FF"@GMK+PPmsryϞY7n-п:i˥qO~is{pjI l"VoUuygɒJc[^ |ITS@l5k\GK9p@ 0VW3ߟd D1EQOVWdΡ85 sonQH ѫM]~,e$@ G&z[XJ 4[iֿ[cFUnA<+E1-@^4LP PBOߙ?4,46sE/<zug/AsW_m~KydLB\R' xy=&OZ2Ajr{c^z404m T9bVG ח+?U4-0s`_R<џI3[~[V hDM@ʅu=zqӑ]9/!>߫ مi^lىlUrr [/6՗Naن^@uCYG6qPF!y/8TgYA,x( _ `DP5<: =ɶ>;o6~>T8j.KFHZ7<ˢyrZ+G-!<!i׉r 3?^}>PnT+xg}Ӭ#@P(A94E=2ȁN˾D'7⠙]]X:*q]|=BylpXn%H P鏲f7ȲqQ,x3ӟ+Yj  ܬf0OPRܛ:.m3K5Axhi֑  `d Po$tX9y5 {2L"zXcVzڰRk{(g F1T_.{/g :1bR;Pd|Hfv,E (Ǒ;=kމ(1Aw9%CQ͕,f͛6nf͛ )"<3Py_:֏"4:&I>#eG.+3:~\埗PYtE{R%eSN1P0 臐Ənխc^v4#L͛6lٳf͔ƀ |Hai>#0a+z|G5x.u EX'#cGyzȶXiv\p21 /%P QdqAwC9Z3&>P(wBvfjq,$dB'Y I7Ï'j_Aigr@/6lٲ55v͛6lٳf͛6lٳf͛6l]j2f͛6lJ$Poni\ tƃ$r\,1YQR~C.Q74ʄQSJS}*x⹳f͛6lٳf͛(/6lٳf͛6lw>ٳf͛6lٳf͛6lٳc n48e?>i7v1_$:UZ6+F# 9Ut sMXn&EpPnUQX5V[6dcܑoVrWZoi\ٳe J/6l6Za#HoJhYOqQ KSQ]+HDqzQ/z(vO=ao3OaIfC?B*<tuh UރnK~z3M-SʫMjO*VfU9;: B6eo#֝i7f3-F%1TZR?yWes;~o]<幯._VwDU1yG`Mѱ.~AyΗ_YrWf# "sI+ŕv"J)HW >%ZOoO+@V mPGjHT_߾@<ߦE=+,.n=k6h8n@Jۦ> ֜nP|4?Vg(ƃ/^W ϔ,/.]HHS X)1tb^(t;7έ_Mh]k/7OMB+nYbI"e~QÎq/Ƣ1iҧydfǧјF_Hĝ>˝h?lKţ/@ u/#z+24|?=q;B%vA\,dHXH"?B5&oltW5Ǥ(.JՏ(fMZh8M- |EWo:ڗνk-輲r输UO_ AF?9F>VuPxK/AYfiW^kIe7_B[; f*%PegU9Կ.7h-ƥ(SmՑKŶn*G}mNs7L1I9N~#pcX\_ sj%`8F̕ 슐uʏ>hj׺t2pQبfI.G*^0yruI.)11F pV1}Ǐ"6kiZޝK3nESIfq$\U^ϚU`{?D$4qxoěMbYĶ/@9Yd +JCJYGEA@Xs~'oؖc':mGcf͛ )EUJyUԒK܆-d ސ)lQ|\hQY/v,R]3(>/XQ]fuU 5 r+׏Ƨ L֪Az8,T/05͛6QM;mVڝnj)f;}oSWzSӚAlU5@=3H,:z:Ό ?(UH&^JUz'FW{"ѬP!;$|usmHiqY:!O:H/^{k^EXPLM j2TsUf|^U$*=xsSt]40IT͐O-k~`J_dkyc2C<<ֲWrBNJE0_<\qPzKWI6U@ dq^gW|)LetY>&ew'moՑ`F9;.tm"g(ޡ_xdh@*;`9 G?  o+lIǬ;87iZW"P u?r{y{ NU=R\֟ rO-iP,+$l(QMF BgH4xhG$ "1;%7c_#u󞷨3X\;^2/ݺʒYYVL.ma*D!VVNn ufOh&~CyZR%4<R^ziՑ%}~C./5o'Pcg.(W?Ý^* P6݆OJ3";␽#En'M`KҀg<@֟NxrO#z n$l!dmےySʞwHB21^)E ms\uVFC|U?} pF%m@Z}pdo~p-F@r5Oez{WyV]jiGIyT>.JAq_Aq"q4 QN  /?hs9:п/5$=e懂-Z}0ok!ZyK]8xEUeX3//n~):5{}g[+{{t.I'YbEj9 ^<+!y{SHyM˜KDW8WȞSVnU#1xCԟ\jka{qc$!`H'&qhs"tEu¿zL `O"N%ݙ}ؑܐOrf͛6$oO?,y* TtƧi"]^*Z ~&O噚9iH? jx;mA+Ώ.BZ+``%$q7;?L֟& dGMp㓳qy6 :;6Q,MM8֋{"2'ETw>eـj^ ޛJZWo #7ъf͛6lٳf͛6lI՝)u+9\$wV !hT6$(;? Y=H-烄 ^,<a٢6$TGTbf͛6lٲ:SAͥY+x|QYJR0LoˏeBOZu'+zi+7#Q__٧t k}e +{g4bX:(> ANjkrt.=\Ms-qxԳ2~~,8ޭ8sܟ11Egl*Aʬkt ٳf͛lٳf͛6lٳf͛6lٳf͛6lٳf͛6%)(Lcɥ_jeN_ʪy~Şe~zR4F_)W^<(8|1ۣqm5M@^lٳfZrޙy6jĢH IO26lٳf͛6llٳf͛6lٳf͛6lcUM\)AYsSZ_˯]f֡hYE$TlysyV=<_=y}Pj: ^p"EUUI2%俵~Ob/f3_!!]DɏMYW߉6/ޛynpjBxUYr)S5ԑݖkxDy8uhY/P!jW}(w+N]lʠOJ ,3.Q#|Y:)Dy*!=QmRzQ*%s"dY YbLLҕ?S5OϏ̯6si5YAYȉ)%8^\[HTMUf+ۍR+3<(e]KQy ´~JZY#1s u ƫuq^_q lKM) %?O^nۓs&_>Zk[(DP]G SLN'HPUB/ ]᭾ SOC I}b:Ֆ5(w,d?_sq 9@IQˉy8*+/Ϳi*Ӛpr!KIO5sr͑[]vw"HE"h7'/!zMۙS77H$U(K%x |٪Gmuth,ޛhfudjŢ.$kqu_R9-)ZWko}b52R"υN:b?k˖Vw&"@A᫾~p˺ %k=Ũ" i/g'.n3t=;9PZ>3P`Vs4eWqY hjS&{ɩy+Y5,I8ђ4{ 5.lӉe FwkĔ!h ;avbbi_5yf0h; Lʡzw͛6l-5k]odXRH**%P|뺳mhK< [ۻ.cK#GˇL"tb|{%ŵc(՗tTY|W4ZZXEDkL[p!CBT[G;:-+kac`+\ٳf͈0T3ycFbf ܝߦq2OiڎH.db͘4`$Q`ɷ"n|8kSRI"bxfR~**6fEVb;Eqmk]n*YP*䎍˯ŞЦs J)z@Tu\n6';xޡ]iqoa^nLRxƃSiB;/rO8ȴ-mƧt\E1l[Ha fO\V1P>#O 7\6$^ZJ.tPƴ UpͿ:Co"/%+,WF?iq8't=r]#sW ZٜKP9$dh)סoۓ}>u/*kֆ WUR)պ^_Uy'z3pX(K$w3Xy^[H|p/%d6lٳf͛6l|"ԭ?WaֻϿ Z(tQ,e[ƛrPeG+rNm~-rb܇bI" uizWf͛6lٱ竝0g5afyҶ<ToOx..?4l<˫:֖QğQҿ iɏr@0R)@jQPy76Zti1̑(gbNJe[|*楩j2+ӕ)|`ٶfWq#GI*F w=yf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6$K𞂄>ZC,0N?F"2G7V92ťjpcs5c y7 ϥ~JIljЕ瓨~}eP9yO|ٳcW#ʜ{S;1͛6lٳf͛6llٳf͛6lٳf͛(؜,jY?2sX ͤdRBRXlޫm>+?+,}ّVh$B)p?ۋ/[/'ռ\z85;)L,TI*78]x$Es@rIOP"HP/r O~ gߑߘ5 +kntl:7A8z_B Y[̭?&G;>TdTӝc=J7$y2.ۙ<˯ދ-Q31EX#)R1ox<wRhVc*BszrwW 9|+bf͛6lٳd[BylӒRb+m3wZ+\&p8Z(9Gʒq N\iƼk_om>j6DhPYEJ%QCNSۤ:dTTբh:PcTŔ[\j(O#i#eخ٢T;ȿiU}e L~ji4m*R}FKc02N|qx}9!^17x5=`D>(VApy,ܚ*!GH.`/RCCFq' FM|iok,wW7BCpBGQq #U^]:y$hӭ"P1ayqF( 9*qGhEPoռi|P;Mȭ柖->$R 6rʜ^=C_81;SҊ*usyrKK<,.ɿĂ8Hvfjʕm'喣ejgih> A1F Uyq,xL8KY繗QkYHiN0Kj7T rNK t 7+:QOrMD!mnc73G5n>žvMq>xIo<:[Iw;2Hz3ÇZmHSz,Xڬ[ ƵOӿ*4;qoJ)EpF8A>< sjxg|ŧQ/,mr6 aI!PJ7mپ/y~iyMb,o~%ׁfcJ ԃj?z6UIq8S|8gU[+[-QZ48 +Pxד_Um? 3\pN @n ]2ȵP?=}緙<ȵF&DԊ%ex~ǻ9A<2[[Iq4d * RUPKo׎zKV%8a6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfʦmlƴCwws Qq-A9]wQ1.|ݍ##"C@1@?ݨO?*5f(ֵs@ CƸlș:cVqf͛+'7W痛(͛6lٳf͛6llٳf͛6lٳf͛*ҟNso;}KpX,qĵIPC 46|?βޓ$nnd]ٚ8qE28x1\YǪdYb*d?{qu]/N2ĚTj 5WdPܾH?hk>_ūӁ0aG!gn}[%h6q^o);}ر݉8m> QP6g1+wN`uvP</-cm43iN_go?5 : 95=΍Hb͛6j)r%]ѓC}3ȟ6}f Rfx*+Ǐ$^4)Q;:Ǔ|Țܲr9U2kkHH!=(2w3KMGM%(i [I`T<9S”s.iml1ET!-bF?QtmXMC2I̥$V$ deu8|'rɇ?5MJ WYkj[x.}0cA#J^hLC~^Km&eҪN e?xҝgCvz},|BIvlYV%jl(+@Goo?#nw-lLtJ2a EIe':ogV_QQÔk.4Ȯl&-fPU9uy;P?mpBn+hT0hF[ro^`x.SIr JK->ن=794(o)!ODlzK65gPv4$/^{~:]&X2VA~-&Yhkۏ#@ I.Hu 2b"T4팒kJ?,I-H>1pX%E|e5rwduĢr+Њ׮),HZV<9Ij_Pe0R* |C<8۝Jh$y"*=?Wd`R0I'R7UkT yEx*}kSl+Lٳf͔FJXi/mi WϜ~tė]ܲIk¼!RCU QxH&Sƿ/CL_ƁnyLtas=sXګ%XU T}-ARHqN)K : ϶",M/mhk^9ϝ?/'2鞃ۨ $e Ӄ:27%r&_,j iQ]J.n+ߵd>5#%j^lٳf͛( eIP>Srϟ*vmz-g༜-'>}}JFOVEZ8[~Ay@ZEEUPAJo|=ʦj͛6l׍_sȍ/~`.n&&HKܸUUȯosѺtXLv#RkAݻ{pGLٷlىP5͛6lٳf͛6lٳf͛6lٳf͛6lٳf̟͑/ nN~CO,i`k&>o9|#+lFyї7m -ߏ4Tи}2y5k$xس`kr| @3zH +z*P'/6lٳf͍ࡋ9=:~ ue*èxCre|{qKQX*zjWe dlDYoN⦪Ovx?3Wgj2v#*M3QGe8o)4}*nVQvD^:= n.'oS\"~-tˍ:RI2VVj+DQƸGo?|Iu?ȿ;o[G(yf~hyfUCoAov 6! l܂"֙+jVٮʦ&Sd-}+rothwx*OpwvɍH̉ZSA*1DTS/6Q4/)g(y˒:֌3[Ǚ!ӭ<#4_/f$؋[hn'BZf,b= e܎qxO6{{[UЂJ*hrqaE牤Hex_Un臗>ʆ}%dsg|TQ")׮yAic#I9rVɼI#j}gGny+U~8kz}Yј4bRňRXò` >aCWهJfuژf͛6lٳfPR~, ԕDLMAԧ|к]SͷXuqoix'J9N\C U <Vz4vP+BC]C ֣~CS"aQI\ %U+G㜳W__)[.!RA޵ȧuӗӼxshP(^iE6D_dW?6lٳf͛6lo%(UƢkɺ/{@R)ftxQx&/]0/ϗ~XM>XKI^2kjŘ'^_z}nnRE`GC`zeYyRٳf͛6l+dVSbQ'`H50BFmLPPl; ٳf͛0͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛ܪ%ϗ_kvm#KCk31$jV HǧNjd ^Դ3gr,.f@rc~hRw)>2^lٳe ͛67#ca=e0#|2lٳf͛?lٳf͛6lٳf͛6D<{_2#\Fo|"AZ[~'ֵx$,fVg~. :?I}|6v][[s r8z8ӘFG75?11G{-ս 0URLj:[$~tҞ[e>·ޛ}1APY>0Ep.fI!<臑N!MxOS +HvQ4W,`L @ qAJ|5\k9dl!2K!da(N~!9.%U ( ^J쌩^;r;Vvi+>o+r㤁=EU2Vh WtFIUPLyD;L[j܌~lٳf͛6Q8io(B;2L$NFMn+׼Om1zeL]XVŕ4~`.c9$@UC/$ߑpT^XZHJUy"/8=y pyPO Q#:3}+N94/o%3wG1GrTm:~z|_փ:=oM7.A% ;Vj@)ڣazZF5ȍF,*LR^lٳR3e*QARv6lٲhi׶^lo @ޟycOe3f͛6jw͛12z(y<_=O3̃?| RZHOķOʿz^hh.`PȈjr9Wu6cjYL E/En?HwFźkPLLٳf* кv4R9ߓ[O:Ca3jhOz(~>+%!YSj~lB)wħZ+ƕXG-"\g^VDH#.>9Κu寝ncAszV**(c"z{*^fɄ(PZ}[RiA d8L$֬2Pmzg?+㸆kmwmfV,-bxQks7?ս1#4J+Ҝ:-j@$R$>8lٳf͛6l}^nc*di'>-@e[ȱ,E8dJPЍazCq[4bji}3:2@ը0 *i_ruv8v&'6Mic/+VJܩQ-xW%PTԒFV㞾#3Q͛6lٳf͛6'*]\ykE][&Xǐ5-˙'SN ۤj^YnQ0̷<{ZgIUU& h*tgV Tbٳf͛6lٳf͛53f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfħNkYs#0躲yym# 7E\b;]p˝KE̶?ĥu89#7<$PR&Iֻ[sf͛(E͛6l ׾^lٳfV/6lF lٳf͛6lٳf͛6b*(q)`Yg2W~sk4E~ү.C uN_OǧF6qzllJ`~.`krVP:ֿ$dNTJX+:32=+u+q--%{$15FAōX8%;S$Zb 'd ]yqL4?(;~e{NB)% YT W׮M-th,TW_\u5X-սhcPrQDZ=CIg3qS~~~~;w;8 _|jqV?㒨$S+3f͛6lٳ`GN2 8Њ Z _6lٳf͛6lٳf6lٳf͛6l!EOLk4?q~S#yVWNBD>&C8/| -xhӑm#Ur#qhzͶk (弇`y&8ג7쁞#6lvԌ ڀ\~lٳf͛6St.NjV:eĐ;)dp fa<8 5߬%AI$>Zj2v Sj q\ٳe |sK3&'j}煿2/,!bE+&駡Ҕ- Z5QQM:=Kl>ٶ:*v)@w#j0 P~yO̜ETN.N@`aoP2IZ ~lٳf͛6lٲ-9g]y^dEo$JʁO}秛o|in:J ΏE)Q\5>]8e㞧zrPYyxj7EJY6\%GBl1V*2f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l3̿T<嘥ԤX^VH^YDQ+ʭPy"WElAm4rN[w1PLz/Krs[Z-l857(bݳf6lٳf͛6lٳf͛056l٪ӛ?lٳf͛6lٳf͛6ly-Fk)4 ֣0# SjccwژB <\?qya;ҴW x-迖>mK/dydd@P)ܸRz[Z9-|Fg$NGqe7JAڣ#ez Lٳf͛6Q闛64cU2f͛6lٳf͛6l6l*6lٳf͛6llJW9A^/!i4 $sBާ} ֮5GPKbgi`^P92ܺDRowM_F-[K+;kx$T $Ez'Z}_]^Inma%ā1i ~Y-HAff͛6l؜V6 Ёs݅Υp(Jcʜr_x~-4Qnx S`2M<s fʮ1ߏ~eAƕ}:ާ<9a'[\:&3E Ȳ7 4+ҭ#L{&Y8V (? 3Vw.]?Ik bXTs̟~So0B;Ai-Q|d`b%WW <4G5G$_ْ~YC.zOzٲ=f͛6lGa(IޠL7Y}mk4VXדs19aԢorfp+ОDawp% $˱j) .ȮvyrYԣ;Q:Q  m9㞈Mnf٫s( V)NlDחnlٳf͛6aZo6lXaխ$PHT0"HnEۻ;ʲCqngHD_Z6槧nUo̿=,.|褒(i)!8?7< i=gK4ΤPS7/վʜ}|0nl٩g*HV +sfƓMV u6H;N>8jjz5X^Ut@꧘ :xDi[h,t*kC;tR~Jaw;lHF~!L/˛agQq8Z~F zFmDZJo $%C%JHzK$z1q`v0Flٳf͛6lٳbj]h< @Yٵ,迥䌱\0n{ MOͨ3df!/rX2M=8Y6lٳf͛6S0QS6߮^lٳf͛6lٳf͛6lٳf͛6lٳf͛6jePV/6lٳf͛(F󾜺we4^ 0R(c3_iWǚS:Cnk}v Ƈe͛1͛6lTnC =2f͛6lٳf͛?lٳf͛6lٳf͛6lٲTn^lٳe ɤAisMX0S- '7˩-c:#3^4AFDbO[G |y] Ufb8=j^TEr1e} Ji1nEԩTlhQSLjY%J 71ٳf͛6lٳdOq3[)iI?>+r:TԮ-{3~)Cu,(Z7Zg8esg+Ѱތ* U9F(ǓMnyN&.}uuX)s"l:|lG,xb~7q)nC^G…(UzwKKp~vλ4:~3J#E!sͤVOWT9)zkV}WE`#fDrV;r6AlO5e?cӖX_POEC?/PBapjI+js_W>iǔ`ٳf8҄Pi|qϔȳOS%Cc*ޥO|%O"O>`j4,*4YeW!K6O+@qB7٫ĻoГ*YKСvQȬ65`] UE\^q!vTW3l`+gAxN?Ryax}$-SDȈE*?|ZLdEJd;e4?%&i.m[1t ^\YN_mAeY"pTbU_ Œ|5xqMc D<`V AElۧЏ-j_^h~T+p 6R7%;6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf6lٳf͛]'f껨\?|xK% E{2"(̇sŅT|_hҧ&<Gn$4eP"l #n۵/TVSz6lٳf͔+S_/6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6l؜ڹ?xo&g oL%ҙ,BL](ރf;z3OoףyQ9pG TA1:nj9o/ϽFTK/0_:\PF(UR̷árhz֐065O@ ٳf͛6lٳf͛6lٳf͛6lL*:ӧLٳf͛6lٲiYȿ<'گ>_/q.HRqF`5wL͏? :}hֶLHkU~Hx(CWe~f#ixwR9>٪vݱ}+=e'9O5kR+9SWʹVgU*d_U*ÊVMGfmiQ6"M{PWs҂V*:`ZFvCOk-1%xr\U>N# V,_qٴB(T=@X%Ñ _W|Cuo[ c(( _}> rr $4=w3f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lJAGǨ F|>Sisi9$#woois?? Sn^Dw=I(kO%c;i8ZUun\˿uLCq pJ%droI _cCa=OTE'vTN6XEKƈq =& NY6lדX#s;ٌ/p%ם"Ӛ_N4lajve< /i)Ⱦp)NX;(0F~N~^*(&KPHݨ*h:to;,<QOZ{Ŧ 6Ŀ#?/-|K*V;Js?Ŀ;949Tb̞Er[vsؖRri:x1M Uv9& KQ1$7%J1v|FMEhRry 1@GDg8^ӈ(scq*N#kC>̄lwM9m ǥ[|?Ñ/6lٳf^ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6ld=s¿-jL"^+~Fܹ/r[̟?VAy6{x^`eMP;.u7g^:- aCPҴosͯ=BԤ0.HDh@ƇcK2_;X&]dRM+_cZu//=cɷߢA#$LaVOU>. >:I!C^_7K>\Ԗ5;a!$DqY8-+q 3Կ?v:|m*Jz~g-/A ǧ5`2f͛6lٳf͛6lٳf͛6l@/6lٳf͛6lٱe JF%jī1nbMWP w~wy~a[fW m:(0RUn@/~$vljKڞQzHNH9HUv?,,̟WyfA'ij9U+re{[ZuV H@j($B>یS+|ٳf͛6W|@<ūNA RaZM3Wκ7i+Nᄧ9$cZ?4K6¢"ߵ=uuÀ77: C>oBy5=GS1W"wV|) k}_Z4v0zkCAP1=W-)dUWpzp(}]@OO9AZ.ڔZt XxDsP8SF"r]7Q:mJ,埆Ç\!o@,+O$_wэ[:9Ǘzr`,ZUxyO[ 4($j3/ܳ~aAwi63"L&{Ԅ 1+-[+/@ >#B}?r/$2yXv%P13插[qx*XKN!UOiszրOѝ>рN\(G؂k#"bH _cڣr/PZpoV![SUd٦u  Z9㜚1B=%V>(E((w>8lٳf͛6lk6l{`O9$[ixiy&m?ԎxQcb#@Vyf=#3V5JR yO*yMwDB(LeO6n?ƛҋK8pZۮO~blٳf͛6P^lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳe1ޝ?UV̱9Ԫ>TǦx#^LyJc*3A:*L;mf%أPᩭ5z_J6koqăn*AĢ(Gyr?4Y \nRjU#O3(yS<cYAv*?etR^5=3f͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳu K)2z7QE?xwyx)Ð:"zg}pXcv3TCUxSnYon x%WASZ@IP"UE: ~lٳf͛6lٳenyf͘fEsf͛6lٳf͛67{ 3B@\?~]pXZ*‡wǾsW疹ƹAF!!s^,P۹umYgo0>2Ky,9}EeL@=u/ETWn%jlwmu,ѯ( iNm.ۃ͛6lٳf͛Z}9֢g2 n};RzיuYژ-OV4"B8[㾋=nd  Fn=[q Jy 9ΝIc侤f#Cb }? gݮQ3M< 伤jqhEKꌂi䟕e!g mG,r*yUqg9,Kk=Đ$R$S+?Vܶ9;~by1Z2sxQBLE(YȒm=8o=71WYF`֬,%Y8N>~3za7_=ϑ5d<}9/n > cf@zS=kĒFC){7BY~"zJCNt0jZY5=61@ʭT~Th]xBgؙ9n(@ Qa zO|s˻dPs\ iCjK:FӠKb$-Ϛ;$o=0ȿ;pR\kߴM`, I~5T},>k}ȶW,VsD459]/~aZLVR󈘙I/TҢԦ J#VcxHߴ)޹MPvf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfͅ^@2bB)ҙ JW>c=ktx4}@~ȯ8>yRD.if2$Lұ/ ϝ`dMRԱVn*9ǡF^M!\6lٳf͛6lٳf3f͛6l헛6lٳfx~#e󖝡Z}sQ-@ Fݎ璿;/m>].$w䱨UcGī×\j\}j{6PDɍR8띏?Ek&4L$8G` />-5v+oq? -׌n@ 1|[;7|k[-A"QNL p@5 }eAV^lٳf͛6ld;} EY#;V i~~h TqjЍ@j+kLycKy3(FvO'>b^MKOw f> M,(܈&}$];ߚWm7'GC!G ^Wڹ~lJnwI$/jr//\~>0Քqsoam)lB$RԠF\KQT`#w]O\`7 ۉbxԐS?֬-LH+OO<3:Q:~X{nI9f͛6lٳf͛6l {"<IySxi{HK]qlޘ%Pc-Vsv COlJm Z(X՜f'c } _7hQM1qr@ Sgiè#6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf޾yf͛6lٳf;oo;yy""YP3 6zZ %w,$hZW6+r9yP$7 */.;TT}zNE#ak)勉"?6lٳeLٳf͛6lٳf͛6j͔M2')#WI,k'sO:~wOk+jC韉KuZ 9oͿ/ܬ|l <TeN'3zGejo5RU2L\BUf侘#74~C/w]C,ͧ1 "&du ky0^vk5dvI`O:쑞?UOAwĚs)M[&4zosպ_6| RsE隓@цd ʥ2ĩ#wC|93 CU$J@鞐aApzunjYDTN&+~dOjR@o}9)Y =|xWWpHA%8 b wѯ(z֑jԩ2s]Vd ϒ~pG?7u)P MJP䄅̬xдP :X|?K|z&Ӣ:/O*X~&yyگR\jhyi W J95o~rEE=b$U*9J*@6| ?Q4Ey>vϘ^h׵˭I0g8PHy Qu`MWZ!)^Q}_=O3aDi@:Sųf͛( ޾yf͛66 |Zw[(?xKU He_>Gfԯ,Jއ%02LK~0xU/fto'm[хoBsomѷ(t5r^]J͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛lٳLٳf͛6lٳff*s󗟚[[y&xIjEr~ 2՟μt>{k?{%sLj&>$ҿϤpV`D1wjivmKZfi_ G91TlgDu>i^^ řtC7Uo? 31C c M Vb0y|8*qzz4v\@?8_lVGX*π *:e͕MϾyf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٱrZ6_?~?6P`Ii16q]2 o^u2haa{$A)E9umes>sy~h4>,v!gh+|y,%+ .I&(jiNo^ >%xc2RƜ\.mCQ*_gw:Q_讵ieRxHP?c&TKrOYd9wY\R p}Ժ]j#|ٳf͛6lٳfZbs䟛ֶZON 8eR*6?,ߙ^eb,L(*|F'cx)h6PBV~q/6[`e So=(iTaL71lٳf$.բM'o7?!Ƈ^6lٳeO/@?z<:l$7 =sOpj鑄*zN_ד377ƿOM7̒+<dVruE^_mE>ߘmRd;=Tyf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6jW6l+/~9}>tDK"N_ wK*a'lٲ^lٳf͛6lٳf͛6llٳf͛6lJa}3f͛6lٳf͛6Q4뗛)\QEAn2fʦ%<)2qP|r)y;Mj[DާՈ$vvj|4~ND L򈸹^j Z[f~HkƅR k(ˈmedֵj3?y"Z}HnUKvнecJD/b͐; E%DGdwN$J_("ylw.$Tn- ,S/6lٳf͛6lَE Į}v9+v МH"Y& ́"W=[i|B_U(7X,uRnk;⹳f͛6a^sA^ ۞4Vm7<?ȩq -dy UeY۲۲ў-CR PE["ӡ~P(K]o4ݨgn]ռ{{,jZ9$P7~ [?گ%ߟ6_6RF"jXBj¿^mf͛+zt.S^hB5!\.Ũ/9'_Wj;MiA{q)cPG&$,GewݿOt ')(ݚMÎ\\x>!W 囫) zϚ?Ե6pDęHe:ePYXS_$6Vʱ2l:oA]vDikAZ͛6lٳf͔ʞƹyf͚Xd̪Pu׮{ƽ:B*MU++qOsΚIX^N HJMɧ俛㿶{!$m-A8_{6|r;*#ȥ|~ᅲu mA/x??:f͛6lٳf;͛6lٳf͛6lٳf͛6lٳe*c6lٳf͛6lٳc$D`Oݟ?&'+Rz d}ɑ? *逧~Jiiwvq?*6>A󿘭t$:2"\_Z4Oo{nJHwuU z|}谪@ ԩ4ɔ:ljFaL1rU<߽1}뗘 f͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lؔ_3~hp EZ: P߲NZ%nb^,ÉN(Ѣʃ#G4qR=UH=iP:sj@M{yw>Po% _rX g0.|$KƐrf 7Nessmz&y&+x?ey4QhS9g75 ѭ#cM/*s'2NJyq-syGRkV)aw25r4>zz#_ï8oNե|*~S'Y~T3ު-! fo n_kSsuc*Y@Z- Q5ydDXSg..RH2GlJ|!/8qG7j׋(`4GI}6sUߐj?sVS,R.O!_^AV8^x#P2nIN_ݸo=Y^yBy,$sP\#2zJH_P\q垗m֡h`i4zܽQ4pĈ׊'nM.<Mjw+_)Ja.ũYMg:,Udej҄S5?%|=ph!ODc9K1TU芃vǏ1x3 #?X9^kzJnh79"IS6lٳf͛6lٳboŏSOȽH[inVVe"Qx2_S/kjHoQ (rL*>^{bՓNWh*qZ~5~!\vlٳf͛610GF!Hj>牦7r?e|YgWa &DNk%Fpo~fh;9Xȡ*>l?2]n]-)OEznqyˈ`ҜTKoL>rjMt#,OI .dʝϩ@?aٹnfVzMBCxm{e͛6lٳrڧ~/玳&Ij4)R݌cp_▲u:V?lJhA7GP -).[܁J΄Xo\V?0:")tc_/jO'kSq7(l\䵤~3$b6bn:~#sک P~;alٳf͛6lJ{ׯ^Qlٳf^ltu=BU&Gb<t_o͙6n'ҴT&5Vn|#e "?9qn)lj>QMFrDieܔ!T(;Œ(<.[IwuUQ(@SZk%'//TDy\mnʦ+osn-ӛN&({/Y/yXDVAJW;f͛6lٳf͛6lٳf͛6lٷlٳf͛6lٳf͛6lٲ^lW^Ai,~o׶|?T[i\JQJNFAS$E 1TqQ)8<[A'DLؓRNzvJ;aĪ@4Puͱ2_lvlٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6l2CCOrSS}+ȗF(Ef } ~ ^ed+:|+vsNQdF{uOkk(ȀjTMaӨZn\WP * |T}?GnXhs/ I"p#NR1Z? Ra=!xYLH}7*"#r͝rVj6MGL6EFQ^?34XZЙ Ĉ( ȪX,|Luo >_ ,YzNϨXF2\UV=z{U'*e$ېΉgsEv"R;8QAkEEүІa5'/(m>/',44y3/FUx8{g[ϗo#x_0~ϳ9D`|ٳf͛6lٳfʦKC LԤKgKvL0@+FJb$\ް-^Eq k8 0**'?ЏKa_@NVn/vS͛6lٳe ;›G徬y 9gB 9iʅy-Yyr9{9,n<ܖ_[Uk@t@ C|6=ᏸ5J|t)y[8h19J=>lBϘ_V]Kqb5ddz@PO nu?/10"T5۷_zlö6P9yfe@* OCNN?ӷ|/ŭ1z\ZPN> g5VSAߗtR0OvUI4F뷆yrWPI[X*]iTn_ۏQJ|j7d?PTMgjF6OZ}%c@@>:ЊW|nTz6lٳf"yfʦ 614-Jyg"ȌhHP3DQ<|ǶxξrcUeIc%AH.cV`~~W]~A~Qay]eZK{9UB~ ~_K>{sUtj]Fh7Fl~X~ZiNӖO"E?tӢ#~k6k&RfFV2y;^n59 TVlQ6pUv}^j~j:Kr. }8 _~_!Oߚ?/5l>$S/(MTҴ.#+,uS6gD-6rnN|<îOgKG㸑He9F`Hd[h|E]9rc7pܔW})|-v.r'c%0zh(~1T( ;m͕]͛6lٳf͛6lٳf͛)W^lٳflٳf͛6lٳf͛6lٳf͛6lٳf;pRO9ɚ;5? kM"7DG:+&}"fT[,P?׏,wڔr<)j괊1dY9( kvkL~oou RDI (M~Ϙ\g]1|0i2YH=4X0j`aZm|Q#-+eK˕2PeS6a6l >Lhwbq="HIAFǑ ~5?g>[yJ^ING DJ!K­Íz_叙|%ptmu&Huf'!"| g|囋tiHWrPeO~YQEjpZ#vac晕F{n-.}[Smm/$~̐3V 1q"Js2Q}T3.4qm%B+v8&$F4n<{kR=NEwӝTYw%mWy:5O: F^lٳf͛#>iq*{xkr"iT0j!"E? (4ZM[粴vZ'#R+ `Ej\f k#ҕ"`]d]*  s9quppq·?x3{g?ӡ{p> |{ݘR|k:l * jp^lٳfy^lٳfd qr#^}ra1!Y]P{CмZ㲻76.T@S~kǥ3ڟW[_g`y}:碬5fF:wȠ cf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛+P5mMdxW^F'֎5yЫT.;/M>ZO6~SOII9,rwfMWڛg,`H+E߿}‚˦lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6lLy3sCI4kXmm..]Iq8+ZmڅMex?* IU ʴ\Y&ݸ|w;5 ZYBU<T^W`z@"Se;g-ZyutMVfx)HpT'e/[73Y]G6䲽UHؒ(Z<{~ECj]85  W;ݤCjW`)R>xMKs #|;<3weL(:e͛6lٳf͛6l،ЬCf"$3IUg۫|UNK<?R:EזQY"bC@ voVjZKYY2ѡWu7.V&jo,@n.X$i&jPfNAbN-ųL65\Eq 馱P}IEY:0wGLp(oJܖu|gGAͶ'OS,ӕrޕƇRx߆?o5xIP va("ao+,6Q>j~`[UC'q pCiSI/Mu(o8&f͛6lJYxg0.R j\EBvPni1ekc{{Ėa֭6f *ߵ{cgJ)G'-{Si G4 S 9 j+o/4jz7,h(F%xZUO[{LHXZ*Yh\p_~o_\jYrFjG ;)x?-Lq:cg2U GÞӃPs f͛(闛6EgRIހ (5Ѿx-i+\ʨTJHS:?6ZX٤ (zAgl| mOׇwq2 W/n"i8Wu^jW<=9 ;GHBV܊&$qߕ3AݍdZA" f$`,+_Jq;}8QHT6,*a\ f͛6lٳf͛6lkaŨTAgbDŲ 唗,qBk3柟-<.4א\F k@J ŹUׯ\H<ɨC_6H5^Gȷ>$|h"醗4FJTP]}XGjT{5M_T:0O^adגI+F=EöDNCc/بfيP>F?ս"*Q~HE~&:'%kӃXAmY쪫"'čߟ=9_-+"Gvjh 0=/Yԁ G Oo p`I\ٳf͛6lٲ^lٳerze͛6lٳf͛6lٲAS"K1sBiyKrʱInhγ, NLnM>*Om>1e6+%8- JyɵHwg)m^;hEx^\R5'm-iLjڛ|+oJ͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٲ'=,QvB5@lMRyiBTHi+R8 3ImMR+-պŞul8J4cfocP19-ʋR9cѸ-o"LlcN(xr!1/_-_ZV&>/ rTjuxw3nK )ZrkT";W6lٳf͛6lٳf͈]PMZSkvHX4qb1x6x]]cgv_]-ŭ̬䴋E:X?~_>WGE/T-z܊0^ƥ+w-_l澫_M"87|v`Ih+о̧^yR4y$Q*ۏ.3;m$Xdbvm-,+|9!zkZ ,Un+ZӨ9ο0$Kyl^CE)PHa^Vd+Fdrt쐁Zƻ7}i+h-[̰\$5(**}xfPIORJR{~0t\QMErf͛6lٳf͛6lفlٳff͛6lٳeu2KHYKz-Xϙ_k6q[%t"h9:X'YƝ _;~fš̓LոŸ5FF$"Q~{qNo+JjWpœg&(HFzLռ=lٳf͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٱ9!_gof}OL gty""ZR!i*>&vjO.T_[:徹HL<1[88RH[;G+=u!m4wVB䍑Qdh¾>LG7?ys_idSlcUYT' ~>MTA8,5G{oJ9`@ʲ3)HMh3Bxm5 k&T{Pk cMĀʼ#>=% G¢ ٳf͛6PPPuf͛6lٳf͛6lٳfaSw4#l;(,'RTs=*) 9<1%PXTu?39$ht;uc2x#2F!l{~*3^lfKȠE󍙊PjoO rNGEߚg`,bikeQzxlБÉDO/k~}yV%3#ӌJOcfe?߈o9^.}0[Wf#ɞV~B֚ʹ[i%ȡ;3I4f*>hfXS<"'*b {#_KkIimK8~%>jfn g7gvgv}Rrjݿt8g#瞻Yd "4Ax9Y $֯^kz҄TB<=c^Q5FɑL.J39 AV'⬹}zd[.DaԨXW>;| KʨqB U~̄P\| 9S?W6R㼸PKT7%O'AY 7[GjRV*ɖ-M>Xܓh0):tk ^5Zٳf͛C(~xK*qAsG.5_FKH$|}LaQU}6 Q&OE:< ]԰=::W!-(:A؂ ǦI4 t&TVn.b)EMg 0 x݀贠s7`Y][yLC~aA쵹U(? m->ޘHYYZVQ5oJ0N\4neyCmN@΅iQ5Y{f͕/6lI$)׮DkynաXUKcJPn.G8XM8խG顣ԊFRPqW`Tϣ_gKl={C3ÿE*Zm埚Z2Y!MJzpƈPn:VjZIUq% iJ[&:<=x+2I$DIܫ|9O-y N p @6BNwx5zoT2p`!uҼh5C1FQڽq6Ik^M3 1%r~ўd? 3OrY拊'%VaBYBAo<{-QH]OlHml H!UsF^  pC 7eT W-2zS= 9[jFJKXfqٳf͛6lٳf͛6P`X͛6lٳf͛6l U$v?61l[T)]UB#LbM? J)#9;+~YEhrF/ę- mxmenJ[2"46{!YXR<`(eC+%)~OG8go~q FԤ 1?UcݖY=cFuˏ.:q{kqo3 '⇗P\=ƶ51>M'VRA|嘲!>Tg )y۵4YeF^,iG/·þ{_~j -_Bέk*e4.AUk&9mo"3ƌT  }a2;mB5aH'­:e-)=#%}j}OVҜk@8yTO2ȒrE0DNmI!6{ eiuB0$ҥjLZN˹o JAF|+M s_sL~gӤQ #QSP4Ɣt~i~e|yIuwE4JLĬxqOˋ2ygviRƠ˰R;v!sEjm̪DpO]*H(Unjv0)6lƅ R;dFO 5*i H$7-}?2o0i&i ]T&FaG+FiOߺO?!.myZzrW2!*~Տ¥^l 52Y?עyrFқLo 5foF;;?4,omJ2y14Ļo9+~hV4SuRH"-V)#H]7,*kCCf͛6lٳf͛76lٳf͛`ɢ(7.]k~SBMĂ R5ZP\Χ]ZX"P_`RC(䱨>%eF_Wwן9cZuD,LO5ZE~2mgOk%!0OW$*qھUզ%alٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͚\@17"7f͛6lٳ\ٳf͛6lٳf͛6l@m6lL )H:"u󅏒Υ~_л7EUsoQ/5JQO(x:^fߑ>Ytu}~3.CjoK;fk 7$Jdjtu bZz<9;VH^"zw2aJ׏\Q/߲ɟ{uF9`er*jN@vzN6у $|\P/#>9Ӵ(# R+_ӄgB8Wzk8&wSXaY[F8B!yS7H%* 2 -xƽy-w\>_51Xǒ0R)zZ.U8lfxV7e\ZSÊ֣B zD/< olhL nFzGH֖c5yys!T4W;|2GrhX25ZTPL5V(!&*XH4VɶkZ+[ȪVSх|pzg$NO\C?6~d뺾'\XH0W=(#D6rxW.\F/#.aPv=LOŃtf͛6cQ#j#Ϛ:u~䐈j:S>myau5k(Pd`B0U}n{tEjhEnÈ[=/nxPxLyے -wSez\z{+*) ZZg<(䉖(B(edY |U__˫L$/4*|Iܩ0~3͌I **#tM;~,wڿ$eAlٳTVf͛6lٳf͛6:T:*OӞJ'p)|Ǟ|jeu9_+(sӲр r "Xu~|7 +7Yƒ$y;_rZúߗ~挊rOMeٹmaW5K+We,ExԲ\GΟi_9/oPP Up M(zg?ZclVA4*~:`@)?θ!W;6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6l^yf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf$( ;;g6;<4PۥYHByB=E07V47T˼(t]Fy49(L: XwoŻ"Bі1қD0uct ^ .%ym~ ?8ET.~jq"ZislJI՚EWeFTE_MAՋ  !5` >.nSE{hR42] cmy`$ ЯKGzk;}FdCCƯ{ut4,?LzkHiBϷ<49uBoe K_x_[dVx__n58  %zvxTߝ;q[-EHixXh[*/uMCLNHY\oMHs|BƈHH U~/νs׾Jcմ.#HO PW'xW9ߞsV 8:Zxojο6y{͐7?[I=Uk O)8{oO"q]*'PBv~a~hT seJ?mPWNw6rM9ʪÏ :kV^ f(@Z2*Sl;.,TxY9(n!6*h@rWn.6jp"PӒʄ* +S09y}vXA{tMD0 zQQuo7X7"0-c>;HP3'U}"y+7i9ZϙS|[k̑GfU-j^jSvrXfu3); m-IGjG}XkUʙ~Jhh̪ߦ Kz5E+cdVYZ{e\MBG".@v5A;|RԌ(Du;A{g>|"v74+"j™6~N.5qu "LӼjPz{y泤}vXB}._gvT}oé_߽u<68>/,O7mndw~&UV"oǾws^ꗰ,mov-ont:G'40RW(Bz^U 6Q;DSw,QCX5 +)ż_6k2Y/' c4>P n]>_"2j(;קϘ.|wennv  rݶl>R7P EoXszXǪ|TεDf@hjOo SBX ek1FAROK(dk݀2).ySNR"*/ګoiмo,Sܛ D"E S:%y זC2"?:u渶"X"bffS`Q zq KPnF XExDoBپU^Q'/=A0f>jTWx΅=jWWZeMɈٕs5OP:D}Wk%v- ~|G^Z(c`+08 V͛6lٳf͛6lٳf͛6lٳTVf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6ly4u+&gw)_i%ⰶ,neS=bƈs)*9%6vPѬP%QgDߋ l) @yb,D$7\^W4Q̥%D~\3rV+2_5^ǡAqWSvvnDp9!߈mnR4qN8V瞿6WX򫵼6eHQOT2HUwKN:m5l0HZ3! LnwpIJ ?/ }>O!Ge1$̆.feF5Un #٨&Jn$9/ӭtg[nԆfZ?go|y[[$Bq>F+5vkWh2` T#j¼' OyH9c)?$\gQݭYX GJwm%5z@WreknaN#s_XcPxZW8ߖdװ"Os F_eZ|5WsY: 7+"(><3X_\^hfdW+6*dTm^;5xn~o)c$.gj5}޿ ^6"w0pȕ8r]X /ņd9+q'7۞\9QOsmlVH!I#R/$ ~eO5R!y-e^L*7N2ZI.fo1Icpn8 ;%!7}i6Aޣʪ]#<_(e?t#4Ď0enHEx, Y| 0J؝-=Id4jBO힔 JGSRۓt[/-(6zbP#~;MyDe͛6lٳf͛6lٳf͔S+N`e͛Bqٳf͛6lٱp;7冇 ḧvp(Ö(߯]?ڟ4淎)a$ƀu(!*ej~ p ̦} (egx8Z k/VzϯZn0eo(db@Jz!dEVAw"㚁 SœA'y͚H޻?BH.VpM˧Iu\Cr,Q2*hX@yX݇of]C $pѤ^LYM6!x}9O\GomZP`GZ)(+aZVAln=C/u9cUaD)x^:qb@WfK1^  O?nb8e'L}2Riʉ]Tվ:|[o[AL.~"C_OA?24ۛh햋 ׁ![lR_w.-n{5"8MI $>/z)坟ȴjpTjźt=;ާq0T/Lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛7Lٳf͛6lٳf͛6lٳf͛6lٳf͛6lͿ9 ˾Z%Q qBX>܍H@92:KGPִ6d,Q؇$ܓ颲zL=Ϧ `U5=oZuqo5qm4~ARIb~+:z5PEzS'"!ZVF#pBBsÿv7z[_.'7 nޢd5E>#zkVfsF>[H֞ P_đNeOVJKkBo5j?OіsF'䟍# U۝|w,Wzg-=DSP })kᜧΞPլn#ᶓ<ҢΟ|,?+y|3C zmYBTed`_q0UO k9y]swm}$[(W`f` "n:?%.^75H*ɘʫ7E94~iOĖVP[/ qw*Å9É[NTD{B}ap6 Z6_N}7_i]hɚOCP;6{[H`@,qc$1hPOSUỲvw8*0ԱOݜgv\WcK8($V >O>~kb25nW #* 1ș>;zo!Αkɦ$"8! 28>(8v>7تdJhFX<>"ۏ1yB`%n82J!Z9;"{]_UdV2(yXg K]3Zژ+s,~)SO)45 EǠ׊P6A>|>'Sz8o)@HCՇ`G&L e* s 9w`g󿛠tʈR*Gz0?EN~X[y1Hffu 5 ?;/?3u\/8Tꂭ: TWw;=*ZSۢWo=i!tX$X-M?htGyD N|ߦݳhؑf#؁Mlj@,i.Ǯ2(bS*7 ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛*! KbTs?-#[ &FTiKg,u 6dp^2;:B r^;d/HW0Z@KȨVٌRrN[Stƿ"ͪyuSc""iOkx9ʑ ^^& )ۂ@h>ԨkrFH.uW|oJҢG lwk>`XiVzE Gg,3\IU4|+Hky򖟠eQN(Dj;7?nEy|?#Y򶰑A& YM7kS0}#Q cOw=).--~lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf5H.@+Mqٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l)]_/6lٳf͛6lٳf;g*nt9|jdXԺ(q*}#52ILWGp)VUq>0Bv`0'~ǹ8Kxd';ߒ5u,FWVA0븨4>& `iؚt)=JPn_0N]64yf F .tN5;C"bQT rNjro$mVYd 3nE=IZ9~ҷ.,c#R-mc,ІDL~c++kT)Q# ` qJM.9*+IQ#%#Myr.{ݚB9ilsPy/hVVk~I.*8|a~{+5BywRjӹ&YbTTU,ARV:w,ܛXfd _7޸S+QMmdžO)A'ȽiC#*EvB֤g_TNfyH׏1Q EWڻ7q5wZ+k&'$-FHgSÔ|[y+:uk f0#dsc!MxȕPpY7™&XTyC"?ߔT^=IkO*X m(T ]>2{i RЅ}C+bo JS0;Ma4܀~YҼa=2m A$[0Z;oo-O3^wLJ[p bT~'GẰ%Xk";HmYRPB-!XSÿg?+$|K%Ÿ9(xJC;ޗTU4iCb$=Ewv6h!^,v#m`X#m-Jz˦lٳf͛6lٳf͛6lٳf͛6lٳf wf͛6lٳf͔k/n؛ۤ68m O&Z\Rue%I5ZO\V_+4~^+weɘwoZ轲MJ @4&'% AN+y wpo6w{4F~@ X:Ո*ZΊ~|-[9bGH,U b%xmʜ_Jc}6xLCp8vm鞕I0zp(&T@x0ܴV>T/"$9P rg!yxzV1fguIf>۟ ,<Jӿl1:<Ҡ 071qlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfnax$Zc:1f͛6lٳds͚ f\ jQDX[8S\4R(9T<jS Eq/%~nʾcQr>8mۉ4eZhv,㹷~P8c֣Z*0% ZPw>>o" Vy-+3Pr?͜qݴ [[\BKxq E.EM6>%a-8zQEI7tNZM\ t41I">:ƻQ3➝̶fmi{} ׼BC3)| ű9"-cs D*;V}ߙ2,3_ۉ*>UCr'(O<ߞ^_΢G>eUkV׶p/3ݕŵF&3+h^~!Z"Ϻg!I *7abn=O`G_`P{Bl6 =q`>}7͛6lٳf͛6lٳf͛6lٳf͛6lٳf6lٳf͛6lٳf͛6W@JR[ڃZn+m?]QnZ;?as_؅ڕ;b[rzS'ɂ„g?25Il/' $wM~*+ֻ{6x'2\jE42G$vZ}J=l]; &hE6E6sS* 5AZYf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6c6lٳf͍n|q޾>f͛6lٳf͛6lٳf͘m6lٳf͛Zp;m_IxPk^ODҠ^L78?y EI1iVCōY,$>LXѿekg!<$EcXW J- UY?w Yl~lyOxCs. ֭4bdYvi*[SYh=WN%ZWo 䑿29-8Hh+!(t,V2~_vw2hU#+|QpI oiV+m/̢,b8QN qL^-R)_lxlEv>Y:/?Bfi EeT?yS-{`4;mZK 9!F Y B$8!ΠrZߗĚ}ַ^EDTs%n$,j%>QwO+cp E_2JqFLZ}2$JX2*[-_k[:қ~ym-#܊P׆؊7Z FS1qC},U6w:QiV (C-OF׿34(wB~14(ݟ3?_לGYan+42Gƙ3FPz87fSO-Cke2Kv=WD=Oxs5WloO&~Y_I};f|D#P8P׉aGСQ;~{-JTZS䄞 xfZtRO"]*Aw;6lٲ͛6lS*/-(>͛6lٳf͛6lٳf͛6lhu,Rz~vlٳf͛6lٳf͛6lٳf͛6lٳf͛6l GTg?F+c]6 Tqe&4y dm2x@H4ɘ闛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6b=2ijTo u ʊ1۷bkNEw'W1>+/w휃?g]R-fA Q4Rf p,9Nl̼~%Uɿ3V0iP[[, FI ̪ldޫ@4/ɭf]Y n^y2U?s=ZxߗiYYe&5V_C~/' lw 7zMȭ3?~eǤ]fTH8Յjߗų}g%N`?e$UkZdƠ >ke1"ˡA_. FTnJ9\7 f{_Pllj߯fZ-2Su]/#/md$@)/< Uu >'|dG+mZGbDVu^NIQq$v*.qsj,2269"+7?,[nZݜ$K'!M$zs^_ѻigFkn4pTO~L?z>swwg^ WU=Oe[D[%8Suè@4oLl[﯆F7S Pڂ?dQP ?2?l!/.Z}$6)fgng_̉/u+tH1BUGUЌ5κ-j)E#S4OѥOΘٳf6lٳf3f͛6lٳf͛6lٳf͛6lٳf͛6lٳf8K[<>䦛,>khY.$UhF>j0Ǐ\ߒ_q_ڍ=[ԯpGcH*;w m!ǘջ9/[;QT+N9"|?|sgdmm+$#?Oz6NgX;J1 v Bz缼hȄR!f+M͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͟lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf޿F^lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳeZ$a1 UlA΁k4F9S sZ׮E/lCk[uvjRE+d$SъE&2ٜTo5nC#u:Ķ 9:ЗVⵢy6(x̟:գ3L,ՈHk_vſ*<j>7J |O )oj/Wyi,~p/j*7;yyoA5HRy +~9>@Lr2҇MFƞ5jOiobY֤!'e]pR.+G;{S DAjx{E jcPv>1\[GNdN{?Dž؟>+˸eRx)떓I?oq_EͱXdHBGhNسG7^G϶B%XOw^~< 7?0}ESʖm4,CwZW?3 6YzMH-U:4xxg_N ͔GLf͛6lٳf͛6lٳf͛6lٳe",j +^yf͛6lٳf͛6llٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf8G@:c h)LJ(#j# :no %q]F =G|_ M}&nv$TF/?z4+KG4+!ȱaNYVw:5:tHڄCJZoחL4I)VoL,Ya^[84+:I>#IT'/=['7qDoZH<8]Gک9;O[eLٳf͛6lٳf͛6lٳf͛6lٳcA$͛6lٳf͘ELٳf͛6luZr T|f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lh֜vqٳf͛6lٳf͛6lٳf͔zS(- 8cFSmɪ7?iipA ?hRNDM/?$`m R#^J5O-r[7X(chc_O/sTWaޏuegf@[ toˍN%"¨;2KoF5!}#8ֽA۶.q.EGl+ nXX#1r͘t͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛1͛6lٳfQY5h:dS=wP {hEHm^8)lV7aJG$-R 6nfsf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf^lٳf͛6lٳLf͛6#͛6lٳf͛6lٳf͛6lٳf͛6lٳٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lJdֆx͛6l/6l\ ނ3Q_ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͘ t͛6lٳf͛6lٳf͛6llٳfJf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛7Lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lлԒ;6lٳf͚f͛6lٳf"yf͛6lhY T|٩16lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳflٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛8*;qٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳev͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛(Hw7f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳglٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6Qy6b+LٳfA\ٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lB߮Q$қL_O*ݶ?6lٳf͛6ls05͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͕Vf͛6lٳf͚͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfLlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳe;w͛6lٳf͛6lٳf͛6lٳf͛6lٳlٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͚f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٷ͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳeWze͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6Lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٷ͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛?lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛J@>f͛6lٳf͛6lٳf͛6lٳf͛1lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛076lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6l(zf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳfƽikQҞ>ٳf43f͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛6lٳf͛ҵ=<+͛6go/doc/gopher/pkg.png0100644000000000000000000001244112412656734015016 0ustar00rootroot00000000000000PNG  IHDRSx)iCCPICC profile(c``$PPTR~  |@TTd` 24 Hbd K 1@HR6]bg9- L<% E% )I % yEE%)@P;@%D=13O@"|b\ZTJDz G0302`$40s$B7,,,XX[YYMcξC g".G-ܚ xx N/ÿX@G`T½"*"{EEM7"Q!)'yL*_ZZL->y? [ *U)P5QvPK#TSII:Vzz,05157e6}iv| Vuֹ6qvƎ:NjJ. n Ꞻ^&6>~  2)B.**""ff잸 lIa )kRosdXdff;˞g_Q]vIV骲7%Ujk?lki>*V~Stj_c݉6fO;5~3g}0|K,n]mY{+CV^vz 6l޲dV;vsv_s<~L֧ΝI>ڗ^I6ީ|übO?|!.|hd : 4o pHYs  tIME&IDAThޥZyTTg9==ӓtLM=LLv4}pCQl%qKDQ#( ^@U@QTUEm}7+ s8}'#@;AD  H&L((2JK}eҵ |O 33 qd?nIDl_o )'eV.g˳3x!0lu.Ef`1(%+M)> sc2? "PE\X^}VπƋ _<>퉞r9]<1~;܊VF1r ZX{vx0[37] Fޞ Tz̹,xySӎުrXM.F$`yv<"`M?^/ toucFo2y&TVjSļ%ȱk1&DD`0Ǟh1@(=D8P҇[xy&x!zqΛec;ըQ=,wi1(wRXKsadbЃ =˨&}'eI β=Vq(zw=3w:?}/>?To0܁Y:V?WV4a[uF %ްB~߹VSXWݠ K]U;8ie@ >vtҴ S[TzS]}#ueV' lk.=3(|sFUUo6wvhU) NH'.N;vQ~i5J봘z^!ɋTKsX1V>/,esZ;lV4(v^1: \(jO-,,ΝkAnRբћ6lq9ͱg:8& Y7Fwn~'Cc>xhk̉ZMZVktv,.b}^o%G2<9{wɣWG-3CR٪MVZL]s6wyYȂVa7ܝazB~_fi%1$.=Jh;6e1t n@G2)R۔3gy߾G՗FNVoӖ+Mjn;ZCÚbS 1w{os_).ȘZ^~JݦIwĜQÔk2xٟ?&511vZ|_9ki.1Wڪ0Zm!cm ߿vѬsf ysg#&4[_W'p]sݦ3th+6㺼ٰYgkW'Nd©Oiq3%?xqLv85sʼxǤ cn!fj>-tǰe^nB韖U:҅逈w:[uK~hԳfWFo̓C:~]=WQ:-<>/d8 1w"Qd>cq]Lž~ס)/?8y딅-;۸/ֶ`MEᶩ̰dkGowlFJ'8ﲉ&e-oJjIhYg+'gֻ Y;z3uͲ;o.}i cy{qۈQQ'+OwN F#. 굷8?-|/\{6;}ׁ C({.oy· kԿ$81_^ JI^OiWQDpkho;_Y/h8)&"bkz:}.,SZ"d[I91촯?yCIDDiso['|AwIxQP"tW|X/xwM#'$q%` @(u&H$PŢrPUN<' ];'. aߛh蕻`;,_0(a~!fs)[,}w3߬f,Q3i 3 _eݲ''[0 NLj]$Df@ƣ%ZD쁯+QF2 WU_uGvkD=(=qܽ ([@^Ifpa憭'lp&ӰgLB@,rC \;7h#'zNST v^Xlmu>Tx{̛>zp[쒋r5獵qݥLh~0nG/Kؓ3Qـ0˶+Y6l}h`z[܁Du#<ړsEc|DͨZɌY"38JcT9g 7WDDp$IqcĥZpc"% apPu (ֿi8ZJ0m1 \NTCQ Mwkϛg(zYjIL_6 2 G#VYem>;!A0e=>5ǂUss{ -{7&D{{W\;Ϛ3o 'm?G U.w}Y{fn̘#^~fC<@yKm D($TXسZe}ɋSK|G˦ Ggtu)|[Lv@WxxʔpCR{@Kp𢍤W#($9MgGIENDB`go/doc/gopher/project.png0100644000000000000000000001755212412656734015713 0ustar00rootroot00000000000000PNG  IHDRd>iCCPICC profile(c``$PPTR~  |@TTd` 24 Hbd K 1@HR6]bg9- L<% E% )I % yEE%)@P;@%D=13O@"|b\ZTJDz G0302`$40s$B7,,,XX[YYMcξC g".G-ܚ xx N/ÿX@G`T½"*"{EEM7"Q!)'yL*_ZZL->y? [ *U)P5QvPK#TSII:Vzz,05157e6}iv| Vuֹ6qvƎ:NjJ. n Ꞻ^&6>~  2)B.**""ff잸 lIa )kRosdXdff;˞g_Q]vIV骲7%Ujk?lki>*V~Stj_c݉6fO;5~3g}0|K,n]mY{+CV^vz 6l޲dV;vsv_s<~L֧ΝI>ڗ^I6ީ|übO?|!.|hd : 4o pHYs  tIME$0҂IDATxڝ|iTY.ߏ~_gUWWYCfgVV`VYΦj"< 2(Ȥ̨#*D1(<ވFĉ.➈=|hD"t?]$" ?v"`ćB7C|Lf%zh:( F^vл9k#q H)0ĉKI" 8HX&ҍX FH1'Ԁ{5W H '6/?AR L4& 3%"F׀K DӖ/*Ԁ{C ;}%kyygLPxڙɊs҄9‚(Dc3DOI#ߩhZXNT,@]= <ChRi2';o63ͣD0(lE KPCVn'3+X9p/%mL;-6Xa 1 !<#N7H&F*ճ̐"4Jh$z2=E0n7c\E ڦ,QN+,^G{ +5qgQ8Bf\`6 ><~U 3WN==59Rcq `0;ȸn[wC1:~p=kYʊ\":z%vX cQ ;eeQ=f=)apC} j ɷBmjluZ'aY\-R|K?SXPuEH osDF yxe5(qLiDo.("]Vj۶Y*Vye4Kҫ )yv;- g h]sm<Lywn RSM;q%ն_79}LK'.Oosw ubRd⃷I.\rpt7/m4/wmk¹=z2JOXJCj]:pn@ "G0,)? DyOV}ƼV?6ݣfT׊";Ks< YQzp ^p#&PXW>b=^ܰ70oѯ&`Y jeU>X"}y D _nL3Y[:o xeZ# и]5@PnyΙe,(Zy~نϛ@>hJ&,<`V~P0E(@%>99#(聖Iܛ廂v(| `|i5fr ȁA+ x eqNsj>0:;p;0Tk4/\I{)_+O/ gf hR~тH=@ŦpaIjNAzǬKflq2ۖ.ٜ pQٔϯwt *5 gLbqG0kY:e;_pY H[ݧKIҠuI<Ìa,plBY_.] *oUrߏWtBzC]xa=<0[Qt Dyh@LTs۪sLƲZ~}-sȬwR=GY1Zi18pĄ$y"-@Ppն\0+^ 0!̔3k8cy!NV/02UD ]}#OCcPgbe ΘK׶YrWBE\* i1}U~ OEn lzC,Fr? ·@"w(!DZESh>Z{n7ƎPڱEǁ]7kms:>? kз'2Nؚoˠaϙ\~9z&d5p릵K~O\sb伕w βu@Z*Ga?Ӄk~$Ou98d({,0Ӎ^ƮMcF<λ@F H+G~Lp{lѭ5=,/?YA~vuMe^SZBw/;2qn)Svpf:'to}DUK\#tnNrj>:+>,{P|T㔣,'l>@euvHtPd7 ~\_:IY&S'j $0PWhIfߖ#I^Bm` tWAD~\?IGEҘʚ2Hˆ2%S}`2YUAg۫\~Q <:#l`(d讉38D/{%]1&%Ig#9WwuGG0GMAM$nCVE~ʪZDG;ar[>'4M˝|j9fH`fTY1l>EA"σy^L9>*m*[&lkt :~4b ?RAok[ uVw+ѭ.a8%PpvIXίlܯ_yc;| `) tJkH/d_ M"ڵZSQ)=73R^QeR c$QﺙD,' &a 9{6G ]^ p}+ ۃHL0&aP` SAz F j=NDl#ͦ =GwVq=BrRVm  ZKO`K> @IFؿ:IIVX$KʁQsUkX~WDD8̅%93 +ĂQoNx[=r)^&Yֻ L_,jYI~9m\+Db^ae 3ey~vVGkڷ iGvKs@D7&-#,{7BQ#z>͑lUD"8q^[|˧2aT) TA@ǀٌdp״ROL0hD8d_Czu0F#d ~ǒfSf1+CZ= m)5Yh; 8x],s:@4I Wv$C޺ U>1yŷ,8xwdf%3̩"=jFd5;sYtw@PQ&JBk*-9ήֆߚKmbTL@@<:)!T#A?Y#<ڦⲫ+K Cj]NA Z?Z_.\n&W/?7_,Ǭm5Q NU y%%.RjfULcVX%uwϤU[},)\CƍI詼@&nI ?|0i3)wڴ!Ņ>@Bm[}#G>IkŨ#nM=QVV{bOӏMf>ۥ{C34Ո@O*vܭ.>zrH0h*!pu |=jIH;0瞱wƈKuHgyEǹU R.xi5KA6U[:$XxA' $e9)A7ɕYuj{]kZDpb~[/՜{=MdɣrNzKr3']U<<} ;8ai1o¶&{@o #dT=;[3:b76CXqNQW_%}c^-*FjPT7i\GqPnLwe)$l]\-lvD@"WlKפ_O:e1qU7x\2a6o5 #L&SJ=d50r8͌%qϾܟ&Eq* y8J L9]NY](/ " hW`O%Cޅ>yǩ@縔ٔe4^,$Ԧ;LA~-CP>-tEwhdBМ8MY>/~CФZIazC*P9. h@~M`kƋ0]XL@3=:qC #b|C~ԶAހxc_VƺXR8%ὪPyJdBfI,*T\lC/~~Y%BD7%zc{hrXmivu?d> ڭDc Jf|c$8 R E.z `OʤMk~[c/'?/yq[^ mQ,jG5OEBǀ)lơbY]Ar  ddfّqCğlqޛ_63fS'E^=w60-my"z\pOeC7jxia ؐ{Uf[ه_TzUYڵ]0aRpi1^5My xy灉k_tCL@VK4 Ey\'m44Q{Oe̜%)8.(jlwX]7<ۉi(sLVyO3K;$wLQ0*_ˋvPvrC_=~̀c;9 Jg;t=2Br\{ JC=CIENDB`go/doc/gopher/ref.png0100644000000000000000000001340712412656734015014 0ustar00rootroot00000000000000PNG  IHDRi&/iCCPICC Profile(c``$PPTR~  |@T$&]0.b &-(%8H8c - f!A@v OIjH/s~AeQfzFcJ~RBpeqIjng^r~QA~QbIj P-u/QpOS02Pe2#Z  )4 0ex(XʸS ̑ ߰Xtbcmef6{8n%./pkr/+;Oo bWR~ "6IHD1|ii2e겷](lU,TSzV@DA.PM%Z'Z ?b(DޔK,'XYڹ[;;89+(ʻ)+{{zx%N Z+bpH芘{$%&%7IΑa57b.{}~Ew%YTWTaZQl\[aN鮢ӽ}w'L=igh}N,]$uɷe Yuz}-7ldyVmwXܿu}a9H1+NZ:w&.j_:z%snܺ{=,˃ʿW_|)ԟ 4y pHYs{{x$IDATh[gTTrsKLkb4&1x-+Q D,RD ذ kTHD;:3L93Euo!82yKk<@  !&~D`"&@!{o#=H&@BwO<1#Uf( < 9yof]w%EJTa:?ig<i!{NX{U/0j*WEd/-t(6,{)0YHWE#uVf\UvGߖQRQte 05is Ӕıt}H_C@h}8!qkB!s`""%O <}TAhLX/E|MyGu:fӬAv=13~_ni%AF틎3GU fM3#Cޖ÷~Jj alHhb4+\#D/7IÓAH{ztƤB0n5`"'/D ַupDB=jqfKw&G$u&.ÉVo։g Ǩ>UB|HXp9֘U;oko,0t"%ru[8Pͭ͛EGO9UMUQeEJRиؤjpϹ*a 4b;BU'~+'\&ƃԙz>/U|]e~3ulO YBԩA`FO]?_5wJDh xBjn$zyYiղG>M) lRylgn}@8?[ *~M++&p >j8d{Ơ9pvbVVVv]ow wQyn<_Mr]+Dt95_"o̧nbތ Bup؟HZQ4KցAskf7OMy ^ԚGYW/?!$oִ>@j_g8ހAER"PZeË̤Х:Dp8!_-ްxc_k&c^}'2sxQG$3YFTF}*Ąd7h+_ԵːinM9Eφiultym@2Py+l65OO9t85'ST rǮ6(=XV㏓2U :9ܵ0hCKEҍ `Z}+qRUrK4^0 R1_vۓqZ;h$,n1ȣJCL @D@-jjc:8Y0jqG Y(9eEm{:XL_k{CA9n[:~(>\ʙßAe5(]vw9~O9dEY2|1ZD OƟך/ZCƋ B2/{wOM_5 H[2{ѱ0U|4i1x>T4iu JeO#C)E =0q#YU pZ20^g;MɷeDki%3]mW ae;gzqbC>9EUh<*ccb&wL6|s$.eGiM3#ͲWO1c:2A<1O#&}|vFw%ؾG.?eQ2CA3QG/Z}yQ*8PSLŮ-d1ݫ>س}>uPP' 8X^Wsw-B*v顲[$I{'R~|/to7Govj7rXSbwZ}hX5_GE>ҹ߶uZ 0Vmhb#\nlt' c6->wmNf֩*T [&2A霁LgZD`@ .w{72^'5M;f01gAq/KMμWXtz2<R0딼aC+`j1.@SŃGG HSRA iޫΔk4:ZR@LC!Kmi>{C 9PO%b(x5T7d9 9D R:0CJj'*D@1l8)4-V*}ubwzF'J89[/>1<V"X}D_:h˒\'t\Y]ubgY<(qD,dٺ?.<0ZfVwoE&W YAFv[ޮonê`%~ၳ8Է?.ޞtj\_1K;̳:$gBB**Nu}ߴEOdoww[t5zsgٴ5J-_[vDa=E׿ut=դ61$iV?EOt|T́5!Q[MWQ]]]%TG`xZN 'gJ5R kYgu4]`PN{Q x@H~iLk~te`{}$mޥi5`bBx>CN3c*l/|uICĤ.;ZJ}u]Ҿ9 0>=,`+jf##լP#M tm&<٘Hx_Ҫ~y2/67`,g&Dk% #qoMUvf*MnN;b t?_dF(e1wO ǫJӖn<ʚS Z";eK?HkD (9:ޡs9.GdQn,(>%4KXw K.-aLMoc~3H~ܬff 5<P:qOFLtcܬ}V-ɺ'oyMdsO;/&Pv2M6߲c3{^(旼p<3 :8sD@4Q,t(_sP@8պ.XV~ҢEM"2™@c^sv-,E!Tкxtܨ "u7,Nȿ>{{$ShZğzi;YY.}cnAvh6MrdAb$%v"GeI_  av3:!䏃  Vߒ^*,Z\WpPh;/kfx7+rI$4Δm߷ND@ f[y48H!v$4"&R79DM|dǏUF/ : Ѥzrvbέ ?l^,5)9C/9 tsFGtTr}ޙLվMUؾk˖+^Ͽg=/Ia*SFA%@Q`g;dO]-?Y.9SFERW._|e+eֵok܊sYY,? %#$%b`;a6eӪǶ_wLlJd$SA5kJ Z4ɠV%D'k, P m|΀xd;u5EQBz0Ktt[؏kV]Yg޷{. (; H@0mӿLdnӜ5Yއ챀Qc'_;o*zO9uΊyG?Zk)$xsZ4b2>o~ï7TPpW%*_L31Ŋ44)=9CB=j:丠TNjґ b4j76p9c "ё 7Ǔf 6:^6$f[oM%r;7-푞 6"Y{L2Lf`2j l[ќpIk+Fxvg2jlg; h\%޲G}=d--#@@׈u6n;hZ,qf#7kuNl[bM5r4rUE`:c28 H=d!jS<<τSux=\Y,p&MĵK3D!D>\*k9/kw eS f@;zZl#4 6='=IXXyD^n|."jDGMi)O/41[YүVr yeL 5boi2/Oj5 &!ټ \Iiɱ)#-*9031Mf (Tm[lLh `v>3FwF(mDݙڟ,P9jr828)5ff{tgܺ$+ͪ[ݙƷ,5Pq=tj Kk&ËuL"Ne)]&"VDD0:u+2mBMeMo*/:&V37$ɢS쌀ߡqC+skF0 T]rzP/Mdx}WY11:q@-2B?3"‰ځt @J~yVY S 16|hsJY@';UG.̩fWJ3M6aKWhICp̽oHΒ.!=~&>9.%t<@ Z2v0&J鞽L2I԰##חK4Z"hVj2ǻzC$#vFķzu}uI6"D刄-| XqA2cZA T^a *brHXCjH{8| %8/g~c%>֯0St֠79%!-, Xݾ{\γ\<&J?im(3 fyI7+` {BNX@'Y dE_!WϷ>EkSɘuars;h>fLUWDG'tZ`xMf,89"t 6 x`ukEeY&K'uQӇލkڕsD}z֌h3\4%?PұĔXb 0Tl׶@ë:A3*_yYBDUm&\q,˩_{CT-/^]u)ɤ3 w˪yYQ a a]q}UZ C+MLKO2_Vn5hGRL#|bݥ۫L|$QC l( 98V[d\9Z*CMN=]/,Iҵ̪`z?Ӭ`]'&È]i^m5}{Ϯw?~"Is+vXPn7B?eS4;;k]:<杉" `_ȦTO!Gg}^^PlMU*[t{{=wܬe n^S6XDOeLB^ uFCRAAY<"<ǣTo ^^[ۭū"dO.d=w-11E&xUe.jU_[! F?FtZ}u̦CFHK wz&+%;L% ԟ4YP񯙢s4uMi5u YTH(Cy"Ĵ6* e%U$ڭ]Jцòդ\޸jͷ̀κo7T7 HBwFtg-NH8з<`g{IXͨ$ 0yYUm?Aׂg6]2 UDխ{⨘x )G3]aI-,BjcTQ5,7_hD &,Y~K%r4r;]$HGݘe,&?'0 ⳁ߈ys@B/RT+ d^پPNBv )?vQw-$;hȮ 3u^PRE@ĘIES]I_dK"j3RtL51Q^K.`+r ^LLe\]6O]$`޷P6jHOeXmႽ}X ϯf͡ĤTSAjq$x1`[. A輑.8ݠ_+j%g0e2=f]@D|gpnEl~Йq.&˚ nTo|MHb`?|1=dzƦ*4@>xDUܴ1#pC r,FS7޸'܎YRg2@xQApAVLqQr$`#.(6˽~dw^ZOĮkh.(2mАjtagE=u|b ?2xq%&IgSwf@5!|QFH1n3flMnD=m˦eGm߿fJAi&DDw t?8 %DƤ#mx"@گĤ u/YIR6<@oZGWъ -nTțS5 ;O _H.7R-)4"mh"r8d;{5YqLj%& tXoV O+]D $l<1c-|'C7}nK5Yс] D|p.=wmr88()@85p7=I (ۻ&*%${H۴ajSIjryXrw&PY2pJTkqoL,\;ChXca$x({}++]D\Q̯80k8i٥̔:S$$Uʐt睏=y $ia)eY"yb`[pѳ5o޴49/U=ZYtdlXhhٝW2%7Լ]'tH-EHޝԎYz.Y4JgYZ7Yat|즃9ۈ:HԤ\5]e1睅4=1(s<+Li @M+ .3w]KZa iui2];Dz:ʤ[JcvQN.IҖxSTռ$X>#nٝ:DINI9'u31$ !⯝~&EHg2WB֑G·q:/< Nn*|? ARj$@NP6%7θ;E WR],lCy㭭 lBy.;\'ɯ'Ҵ!"=is{s@lj]dI'{QޫWH o?sE0\k/+\Y!b:c6W #u7Z& 2 ޟ @wHR{I΁2GD$#&cvLp't V6e$ּo]f@h,uvH/4gH`EW.qL );D 6:J1:P OR WA !͑~KJJ  a0L;bK $]4vsVuOyM 7O PPx^Ibm)q;[I^swϖG(&sAV'oa/.|vjuٕH6S=c:#9O b="T 5GUZbH Cڗi^: F`g/ :һWUM8َO"DOz<׽`QߧlȎW!+~^{qґN3"N5x"ټѬHY`>v-P M:[F>[oԹY lRXD8 [5/Hv;;"tm?1QaznO:Q1hbk gbQ2#uQl;"0cu1\Y9Ρ\F/Wwx31]"b.j{ a Y7 kC-m.ʥ]1fD^hiǥZnWz!hʌ E?yg՚9~ȏDDJ:ZmW:14w^Q=z $_Qot22U:xd᝽oʑ\V= 1k0i.$;{zlBWMj-g,۶ܻ>hҭ933,_QwOfC'v$p};As֛mΩ-iƨ}GկνFCl<)h%!f~bϤ*ٶiʭ I8wTe.|ɞNJ/80nT`ޝ;h2o]GwpvNLD²ڌ.D˟wT9*Tu;ay5E6y+/?8QG,'$OsjlvϹoS%gͪ;@d4jͬe!b݊2'EgE~1.0Gs PO~Q>+d $c<us 9'rO }E*IPt$@nH Ħb$%\.@\p.Hټr-sU6VXc Hy$?8r06"G˔Ư`RB{PYwh^: $.̩0nmGԦHd(/{_ZvVDP\p=,";:Pհ 7Q56A oj.oe<j3!9֥;uʅ%0P .킝x'_!b=ص5ЖZu45ǮE֖dn]vCDFP32Jpы!'Q밹fx6b$g?^rqElq#!NPl_?L K[%vWOă OPvʗb'8dU\yS@Y `` O=a-p^9mƤI'`{cGuDڜjɮ*pn"uw0m8_8;Kzn?_R[^0j {-H]U08VAGiV.o A(Oz?QTڜa&z @iSΩX~dH9}["x^a]@Մxr89B0;aݝvTZO-8SLKEj=nKRFnP8h3DIQɟr@0H.K|0.Ę-r\R*2aes+R˄"WFvQJvǒG# jN],䃭2~\jMm9iC:ou^{:q vST,sq6E1POVn\ZAͷ_~k3"ͺmM3Q#[u. ϛu=vfnpIR[l*u~Stys!CL0:1G]5Ւo_+5h4N=Q>0=G Mk#4 vi2J[:e[]#b2YM%EG{9ӭ C . @΃ ىI4ҥϡHȈe7 lc$qQ%*0o|l|Nd=ɹޤ뉺P.9If|s_>mmQDD@m,R6tnONWp`~IWoԦ*W7yxy/8qopX*)j~=0 iTD}W`kaXD&68ݭ @f\˪)q-9Ϥ6n1 V]WV@w4EcƱZ2$\Dreq۝kT4e_p'BSGKzݞR@!qTBH7mq[t?qSX!x'WWyGYnb/^yLz~z.6riXjljz!(!0yȻlH]tY˄__ye٫)5-NQ  0x׸G#c ! LWǃ!M:^!xڄk$'.XU&\\R^ @D@ќxSLUMɠ+T7%0qPwFx)*ԋC{y7q:yjUn<)aro.ʖ;k7Gy`DD忽JmBS0y40$CTεE C{w%9d]w,n<|ܯ'僵EhxahyEP&=YC'H<αJIo+^,!P'=:g~}41k 5WZLJ4lnJ![NG$s/F4Nzbu2ik>g<$Fr؝ ǩmʔmdkdȞ*c|F0p>1D ֬$_xAS}dX>G/~%~;@ ^압g| qdy  +A,5jԩ 01| tS<ĉ@E}[rqv_~Q]]@m@>'} |D""v7RȥQݭCͺ0`篦E(4J~⒅wA\gJ%Ct2bdBrӼO?=E p3yӌO-Q@ync^&[t)OgP_䑡 wƶޕ6/\^/u}br]7um~ ɷRz(^6Z2aeV_ C$@]L+4' L+DŽh2AoGvx.p'w&_2p~6  .*=c.~@o z9Y oCs0>Gz; }šrSŴXWk}w^AQ#v $V$wxUx̣M(j+9&mlGnJh1o1 hwkDY䜠 .qm+"]Mc'PpcG_]JpO+إƇh=˛v;;] H4> ;s69Ru5s- It[0L?4Sko2"Kv^a9m&XxugAuLCv$45+*ӢƆͅgń7NCs[yԖnl]}foNO}{? x0;Jko6ll_^i֗UWW7wo8ud7n>muߋoV6mP)O_'^5?iןFknGr*!U+~]aWv1ЉFFXJ y1$~!ņ_ǸQ۲#!F#hjIENDB`go/doc/help.html0100644000000000000000000000337312412656734014065 0ustar00rootroot00000000000000

Need help with Go? Try these resources.

Answers to common questions about Go.

The Go Playground

A place to write, run, and share Go code.

The Go Wiki

A wiki maintained by the Go community.

Go Nuts Mailing List

Search the golang-nuts archives and consult the FAQ and wiki before posting.

Go IRC Channel

Get live support at #go-nuts on irc.freenode.net, the official Go IRC channel.

The Go+ community

The Google+ community for Go enthusiasts.

The Go Programming Language at Google+

The Go project's Google+ page.

@golang at Twitter

The Go project's official Twitter account.

Tweeting about your problem with the #golang hashtag usually generates some helpful responses.

Go User Groups

Each month in places around the world, groups of Go programmers ("gophers") meet to talk about Go. Find a chapter near you.

go/doc/ie.css0100644000000000000000000000004212412656734013344 0ustar00rootroot00000000000000#nav-main li { display: inline; } go/doc/install-source.html0100644000000000000000000003533112412656734016100 0ustar00rootroot00000000000000

Introduction

Go is an open source project, distributed under a BSD-style license. This document explains how to check out the sources, build them on your own machine, and run them.

Most users don't need to do this, and will instead install from precompiled binary packages as described in Getting Started, a much simpler process. If you want to help develop what goes into those precompiled packages, though, read on.

There are two official Go compiler tool chains. This document focuses on the gc Go compiler and tools (6g, 8g etc.). For information on how to work on gccgo, a more traditional compiler using the GCC back end, see Setting up and using gccgo.

The Go compilers support three instruction sets. There are important differences in the quality of the compilers for the different architectures.

amd64 (a.k.a. x86-64); 6g,6l,6c,6a
A mature implementation. The compiler has an effective optimizer (registerizer) and generates good code (although gccgo can do noticeably better sometimes).
386 (a.k.a. x86 or x86-32); 8g,8l,8c,8a
Comparable to the amd64 port.
arm (a.k.a. ARM); 5g,5l,5c,5a
Supports Linux, FreeBSD and NetBSD binaries. Less widely used than the other ports.

Except for things like low-level operating system interface code, the run-time support is the same in all ports and includes a mark-and-sweep garbage collector, efficient array and string slicing, and support for efficient goroutines, such as stacks that grow and shrink on demand.

The compilers can target the DragonFly BSD, FreeBSD, Linux, NetBSD, OpenBSD, OS X (Darwin), Plan 9, Solaris and Windows operating systems. The full set of supported combinations is listed in the discussion of environment variables below.

Install C tools, if needed

The Go tool chain is written in C. To build it, you need a C compiler installed. Please refer to the InstallFromSource page on the Go community Wiki for operating system specific instructions.

Install Mercurial, if needed

To perform the next step you must have Mercurial installed. (Check that you have an hg command.)

If you do not have a working Mercurial installation, follow the instructions on the Mercurial downloads page.

Mercurial versions 1.7.x and up require the configuration of Certification Authorities (CAs). Error messages of the form:

warning: code.google.com certificate with fingerprint b1:af: ... bc not verified (check hostfingerprints or web.cacerts config setting)

when using Mercurial indicate that the CAs are missing. Check your Mercurial version (hg --version) and configure the CAs if necessary.

Fetch the repository

Go will install to a directory named go. Change to the directory that will be its parent and make sure the go directory does not exist. Then check out the repository:

$ hg clone -u release https://code.google.com/p/go

If you intend to modify the go source code, and contribute your changes to the project, then move your repository off the release branch, and onto the default (development) branch. Otherwise, skip this step.

$ hg update default

Install Go

To build the Go distribution, run

$ cd go/src
$ ./all.bash

(To build under Windows use all.bat.)

If all goes well, it will finish by printing output like:

ALL TESTS PASSED

---
Installed Go for linux/amd64 in /home/you/go.
Installed commands in /home/you/go/bin.
*** You need to add /home/you/go/bin to your $PATH. ***

where the details on the last few lines reflect the operating system, architecture, and root directory used during the install.

For more information about ways to control the build, see the discussion of environment variables below. all.bash (or all.bat) runs important tests for Go, which can take more time than simply building Go. If you do not want to run the test suite use make.bash (or make.bat) instead.

Testing your installation

Check that Go is installed correctly by building a simple program.

Create a file named hello.go and put the following program in it:

package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

Then run it with the go tool:

$ go run hello.go
hello, world

If you see the "hello, world" message then Go is installed correctly.

Set up your work environment

You're almost done. You just need to do a little more setup.

How to Write Go Code Learn how to set up and use the Go tools

The How to Write Go Code document provides essential setup instructions for using the Go tools.

Install additional tools

The source code for several Go tools (including godoc) is kept in the go.tools repository. To install all of them, run the go get command:

$ go get code.google.com/p/go.tools/cmd/...

Or if you just want to install a specific command (godoc in this case):

$ go get code.google.com/p/go.tools/cmd/godoc

To install these tools, the go get command requires that Mercurial be installed locally.

You must also have a workspace (GOPATH) set up; see How to Write Go Code for the details.

Note: The go command will install the godoc binary to $GOROOT/bin (or $GOBIN) and the cover and vet binaries to $GOROOT/pkg/tool/$GOOS_$GOARCH. You can access the latter commands with "go tool cover" and "go tool vet".

Community resources

The usual community resources such as #go-nuts on the Freenode IRC server and the Go Nuts mailing list have active developers that can help you with problems with your installation or your development work. For those who wish to keep up to date, there is another mailing list, golang-checkins, that receives a message summarizing each checkin to the Go repository.

Bugs can be reported using the Go issue tracker.

Keeping up with releases

The Go project maintains a stable tag in its Mercurial repository: release.

The release tag refers to the current stable release of Go. Most Go users should use this version. New releases are announced on the golang-announce mailing list.

To update an existing tree to the latest release, you can run:

$ cd go/src
$ hg pull
$ hg update release
$ ./all.bash

Optional environment variables

The Go compilation environment can be customized by environment variables. None is required by the build, but you may wish to set some to override the defaults.

  • $GOROOT

    The root of the Go tree, often $HOME/go. Its value is built into the tree when it is compiled, and defaults to the parent of the directory where all.bash was run. There is no need to set this unless you want to switch between multiple local copies of the repository.

  • $GOROOT_FINAL

    The value assumed by installed binaries and scripts when $GOROOT is not set explicitly. It defaults to the value of $GOROOT. If you want to build the Go tree in one location but move it elsewhere after the build, set $GOROOT_FINAL to the eventual location.

  • $GOOS and $GOARCH

    The name of the target operating system and compilation architecture. These default to the values of $GOHOSTOS and $GOHOSTARCH respectively (described below).

    Choices for $GOOS are darwin (Mac OS X 10.6 and above), dragonfly, freebsd, linux, netbsd, openbsd, plan9, solaris and windows. Choices for $GOARCH are amd64 (64-bit x86, the most mature port), 386 (32-bit x86), and arm (32-bit ARM). The valid combinations of $GOOS and $GOARCH are:
    $GOOS $GOARCH
    darwin 386
    darwin amd64
    dragonfly 386
    dragonfly amd64
    freebsd 386
    freebsd amd64
    freebsd arm
    linux 386
    linux amd64
    linux arm
    netbsd 386
    netbsd amd64
    netbsd arm
    openbsd 386
    openbsd amd64
    plan9 386
    plan9 amd64
    solaris amd64
    windows 386
    windows amd64

  • $GOHOSTOS and $GOHOSTARCH

    The name of the host operating system and compilation architecture. These default to the local system's operating system and architecture.

    Valid choices are the same as for $GOOS and $GOARCH, listed above. The specified values must be compatible with the local system. For example, you should not set $GOHOSTARCH to arm on an x86 system.

  • $GOBIN

    The location where Go binaries will be installed. The default is $GOROOT/bin. After installing, you will want to arrange to add this directory to your $PATH, so you can use the tools. If $GOBIN is set, the go command installs all commands there.

  • $GO386 (for 386 only, default is auto-detected if built on either 386 or amd64, 387 otherwise)

    This controls the code generated by 8g to use either the 387 floating-point unit (set to 387) or SSE2 instructions (set to sse2) for floating point computations.

    • GO386=387: use x87 for floating point operations; should support all x86 chips (Pentium MMX or later).
    • GO386=sse2: use SSE2 for floating point operations; has better performance than 387, but only available on Pentium 4/Opteron/Athlon 64 or later.
  • $GOARM (for arm only; default is auto-detected if building on the target processor, 6 if not)

    This sets the ARM floating point co-processor architecture version the run-time should target. If you are compiling on the target system, its value will be auto-detected.

    • GOARM=5: use software floating point; when CPU doesn't have VFP co-processor
    • GOARM=6: use VFPv1 only; default if cross compiling; usually ARM11 or better cores (VFPv2 or better is also supported)
    • GOARM=7: use VFPv3; usually Cortex-A cores

    If in doubt, leave this variable unset, and adjust it if required when you first run the Go executable. The GoARM page on the Go community wiki contains further details regarding Go's ARM support.

Note that $GOARCH and $GOOS identify the target environment, not the environment you are running on. In effect, you are always cross-compiling. By architecture, we mean the kind of binaries that the target environment can run: an x86-64 system running a 32-bit-only operating system must set GOARCH to 386, not amd64.

If you choose to override the defaults, set these variables in your shell profile ($HOME/.bashrc, $HOME/.profile, or equivalent). The settings might look something like this:

export GOROOT=$HOME/go
export GOARCH=amd64
export GOOS=linux

although, to reiterate, none of these variables needs to be set to build, install, and develop the Go tree.

go/doc/install.html0100644000000000000000000002031312412656737014577 0ustar00rootroot00000000000000

Download the Go distribution

Download Go Click here to visit the downloads page

Official binary distributions are available for the FreeBSD (release 8 and above), Linux, Mac OS X (Snow Leopard and above), and Windows operating systems and the 32-bit (386) and 64-bit (amd64) x86 processor architectures.

If a binary distribution is not available for your combination of operating system and architecture, try installing from source or installing gccgo instead of gc.

System requirements

The gc compiler supports the following operating systems and architectures. Please ensure your system meets these requirements before proceeding. If your OS or architecture is not on the list, it's possible that gccgo might support your setup; see Setting up and using gccgo for details.

Operating system Architectures Notes

FreeBSD 8 or later amd64, 386, arm Debian GNU/kFreeBSD not supported; FreeBSD/ARM needs FreeBSD 10 or later
Linux 2.6.23 or later with glibc amd64, 386, arm CentOS/RHEL 5.x not supported; no binary distribution for ARM yet
Mac OS X 10.6 or later amd64, 386 use the gcc that comes with Xcode
Windows XP or later amd64, 386 use MinGW gcc. No need for cgywin or msys.

gcc is required only if you plan to use cgo.
You only need to install the command line tools for Xcode. If you have already installed Xcode 4.3+, you can install it from the Components tab of the Downloads preferences panel.

Install the Go tools

If you are upgrading from an older version of Go you must first remove the existing version.

Linux, Mac OS X, and FreeBSD tarballs

Download the archive and extract it into /usr/local, creating a Go tree in /usr/local/go. For example:

tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz

Choose the archive file appropriate for your installation. For instance, if you are installing Go version 1.2.1 for 64-bit x86 on Linux, the archive you want is called go1.2.1.linux-amd64.tar.gz.

(Typically these commands must be run as root or through sudo.)

Add /usr/local/go/bin to the PATH environment variable. You can do this by adding this line to your /etc/profile (for a system-wide installation) or $HOME/.profile:

export PATH=$PATH:/usr/local/go/bin

Installing to a custom location

The Go binary distributions assume they will be installed in /usr/local/go (or c:\Go under Windows), but it is possible to install the Go tools to a different location. In this case you must set the GOROOT environment variable to point to the directory in which it was installed.

For example, if you installed Go to your home directory you should add the following commands to $HOME/.profile:

export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin

Note: GOROOT must be set only when installing to a custom location.

Mac OS X package installer

Download the package file, open it, and follow the prompts to install the Go tools. The package installs the Go distribution to /usr/local/go.

The package should put the /usr/local/go/bin directory in your PATH environment variable. You may need to restart any open Terminal sessions for the change to take effect.

Windows

The Go project provides two installation options for Windows users (besides installing from source): a zip archive that requires you to set some environment variables and an MSI installer that configures your installation automatically.

MSI installer

Open the MSI file and follow the prompts to install the Go tools. By default, the installer puts the Go distribution in c:\Go.

The installer should put the c:\Go\bin directory in your PATH environment variable. You may need to restart any open command prompts for the change to take effect.

Zip archive

Download the zip file and extract it into the directory of your choice (we suggest c:\Go).

If you chose a directory other than c:\Go, you must set the GOROOT environment variable to your chosen path.

Add the bin subdirectory of your Go root (for example, c:\Go\bin) to your PATH environment variable.

Setting environment variables under Windows

Under Windows, you may set environment variables through the "Environment Variables" button on the "Advanced" tab of the "System" control panel. Some versions of Windows provide this control panel through the "Advanced System Settings" option inside the "System" control panel.

Test your installation

Check that Go is installed correctly by building a simple program, as follows.

Create a file named hello.go and put the following program in it:

package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

Then run it with the go tool:

$ go run hello.go
hello, world

If you see the "hello, world" message then your Go installation is working.

Set up your work environment

You're almost done. You just need to do a little more setup.

How to Write Go Code Learn how to set up and use the Go tools

The How to Write Go Code document provides essential setup instructions for using the Go tools.

Uninstalling Go

To remove an existing Go installation from your system delete the go directory. This is usually /usr/local/go under Linux, Mac OS X, and FreeBSD or c:\Go under Windows.

You should also remove the Go bin directory from your PATH environment variable. Under Linux and FreeBSD you should edit /etc/profile or $HOME/.profile. If you installed Go with the Mac OS X package then you should remove the /etc/paths.d/go file. Windows users should read the section about setting environment variables under Windows.

Getting help

For real-time help, ask the helpful gophers in #go-nuts on the Freenode IRC server.

The official mailing list for discussion of the Go language is Go Nuts.

Report bugs using the Go issue tracker.

go/doc/logo-153x55.png0100644000000000000000000000646612412656734014573 0ustar00rootroot00000000000000PNG  IHDR7J$ IDATx]PTY5:iŬePLcƜӬYtsXs.sr+( J0d=ki`~ꔿx}_0}6 50p;)rXb˔)Өm۶FsF&&&m,,,6lX1VD:a 1]fͽM6=E7o,!*ܮ]VsνO>%L8QpB՝;wRR^z8wbiQ :uݻ7̙3qkٲ k׮͚5[1iҤQ cDz},66V~?..N R%=?{YLݺucF +diii9ydH&JPyyyIn~ ދT*ņ Tj=}s=b@ܿפ̞jٲeR:r$ͦL&r׮]lذa L ZQq pBWt郃vŅ!P@2N8!e&_ppp#2x(͛7wp@NSNUΚ59;;3gEׯ_Yܳ+WfyxxիW3D&zI7#={K[x1۲eK_%~aS= ˋoX |k''̤%.DA&L *'O̮\}tQtРAAW*)y޾}*Iwssc6mbYqmL!CЗU+֦MCի{AY:Yfҁ, )&"֠D:Jx3=4J*ݽ{Y(/>>dR/_.̌3dѕ<ӧr,&C"& tRc2zdR#G =HjOIrHw˧Jٳg^29%Jx-zfXԟQaq^5yb!Yz8 ;r &>2J8RU{[IBzbX`k׮}1<<<,$k=zri8477DbȪW>÷F4OOHmI4ߕFFF^be Z2O1 Zdy׼,VFϬlٲQU@L!.ڵk&bŲXiXf%K. H9 'u ]Afe?fK2d$wḴ0j- ߀;^(SXd[$X\خcctE0rmmm2 *%fMufǎchegŁ*@c-`.xY6K'3B(ePo5*Ӧ%2e2 )Yz2tBp4(*t3}9v,H \._5\ ;w. aիorsD9UtPk\Nh+r9Uļ8IEP`>og,D`Д HbOѨJִ}P)W޿EEEO;wJ^_LUP!QA2 6y@`/(LTOr"@mMP4A [HID@(V#Z^+QtXt~v_/TCN[[h&#i+IԢSP2fH$37y|H9ˁ@3rwSWNwk݆Vt(vWJoV0(e]L}og| U#V,.Q37j£N[d*,Mv+*yN-"z&0`0Ј3cROD&?={m0 e@!Zx0]x2J1$D 6 "rDU>NԩcʽRMN䎀԰M'XP'Hd3ſu@!-TRFEH2#7-"+e*>9ȉMeNE6ވRc* 䨆c0I!C:z(UņUV-ue#ŭ7W9͇ ܓi&OЗmwrx6cn4⌕ܕFRƍWZ5d ZIv2Zp`%%+@Ck'G LP dZ%@\2Wl~b6KEū5mȑ/ U=PYat+ˍҟxt3 xDMPHTV$cjSt/*BuO.y,@ &-*xDoo{ԩ8ѣG85z^4/0O!G+1x3Sh%KBnxUTfb0 hoF) ( ڣϲRtbu,Zg Q9/!Aj qgYx߱E>oU[k62WIENDB`go/doc/play0040755000000000000000000000000012412656734013132 5ustar00rootroot00000000000000go/doc/play/fib.go0100644000000000000000000000046212412656734014277 0ustar00rootroot00000000000000package main import "fmt" // fib returns a function that returns // successive Fibonacci numbers. func fib() func() int { a, b := 0, 1 return func() int { a, b = b, a+b return a } } func main() { f := fib() // Function calls are evaluated left-to-right. fmt.Println(f(), f(), f(), f(), f()) } go/doc/play/hello.go0100644000000000000000000000011212412656734014632 0ustar00rootroot00000000000000package main import "fmt" func main() { fmt.Println("Hello, 世界") } go/doc/play/life.go0100644000000000000000000000470212412656734014457 0ustar00rootroot00000000000000// An implementation of Conway's Game of Life. package main import ( "bytes" "fmt" "math/rand" "time" ) // Field represents a two-dimensional field of cells. type Field struct { s [][]bool w, h int } // NewField returns an empty field of the specified width and height. func NewField(w, h int) *Field { s := make([][]bool, h) for i := range s { s[i] = make([]bool, w) } return &Field{s: s, w: w, h: h} } // Set sets the state of the specified cell to the given value. func (f *Field) Set(x, y int, b bool) { f.s[y][x] = b } // Alive reports whether the specified cell is alive. // If the x or y coordinates are outside the field boundaries they are wrapped // toroidally. For instance, an x value of -1 is treated as width-1. func (f *Field) Alive(x, y int) bool { x += f.w x %= f.w y += f.h y %= f.h return f.s[y][x] } // Next returns the state of the specified cell at the next time step. func (f *Field) Next(x, y int) bool { // Count the adjacent cells that are alive. alive := 0 for i := -1; i <= 1; i++ { for j := -1; j <= 1; j++ { if (j != 0 || i != 0) && f.Alive(x+i, y+j) { alive++ } } } // Return next state according to the game rules: // exactly 3 neighbors: on, // exactly 2 neighbors: maintain current state, // otherwise: off. return alive == 3 || alive == 2 && f.Alive(x, y) } // Life stores the state of a round of Conway's Game of Life. type Life struct { a, b *Field w, h int } // NewLife returns a new Life game state with a random initial state. func NewLife(w, h int) *Life { a := NewField(w, h) for i := 0; i < (w * h / 4); i++ { a.Set(rand.Intn(w), rand.Intn(h), true) } return &Life{ a: a, b: NewField(w, h), w: w, h: h, } } // Step advances the game by one instant, recomputing and updating all cells. func (l *Life) Step() { // Update the state of the next field (b) from the current field (a). for y := 0; y < l.h; y++ { for x := 0; x < l.w; x++ { l.b.Set(x, y, l.a.Next(x, y)) } } // Swap fields a and b. l.a, l.b = l.b, l.a } // String returns the game board as a string. func (l *Life) String() string { var buf bytes.Buffer for y := 0; y < l.h; y++ { for x := 0; x < l.w; x++ { b := byte(' ') if l.a.Alive(x, y) { b = '*' } buf.WriteByte(b) } buf.WriteByte('\n') } return buf.String() } func main() { l := NewLife(40, 15) for i := 0; i < 300; i++ { l.Step() fmt.Print("\x0c", l) // Clear screen and print field. time.Sleep(time.Second / 30) } } go/doc/play/peano.go0100644000000000000000000000272012412656734014640 0ustar00rootroot00000000000000// Peano integers are represented by a linked // list whose nodes contain no data // (the nodes are the data). // http://en.wikipedia.org/wiki/Peano_axioms // This program demonstrates the power of Go's // segmented stacks when doing massively // recursive computations. package main import "fmt" // Number is a pointer to a Number type Number *Number // The arithmetic value of a Number is the // count of the nodes comprising the list. // (See the count function below.) // ------------------------------------- // Peano primitives func zero() *Number { return nil } func isZero(x *Number) bool { return x == nil } func add1(x *Number) *Number { e := new(Number) *e = x return e } func sub1(x *Number) *Number { return *x } func add(x, y *Number) *Number { if isZero(y) { return x } return add(add1(x), sub1(y)) } func mul(x, y *Number) *Number { if isZero(x) || isZero(y) { return zero() } return add(mul(x, sub1(y)), x) } func fact(n *Number) *Number { if isZero(n) { return add1(zero()) } return mul(fact(sub1(n)), n) } // ------------------------------------- // Helpers to generate/count Peano integers func gen(n int) *Number { if n > 0 { return add1(gen(n - 1)) } return zero() } func count(x *Number) int { if isZero(x) { return 0 } return count(sub1(x)) + 1 } // ------------------------------------- // Print i! for i in [0,9] func main() { for i := 0; i <= 9; i++ { f := count(fact(gen(i))) fmt.Println(i, "! =", f) } } go/doc/play/pi.go0100644000000000000000000000112412412656734014143 0ustar00rootroot00000000000000// Concurrent computation of pi. // See http://goo.gl/ZuTZM. // // This demonstrates Go's ability to handle // large numbers of concurrent processes. // It is an unreasonable way to calculate pi. package main import ( "fmt" "math" ) func main() { fmt.Println(pi(5000)) } // pi launches n goroutines to compute an // approximation of pi. func pi(n int) float64 { ch := make(chan float64) for k := 0; k <= n; k++ { go term(ch, float64(k)) } f := 0.0 for k := 0; k <= n; k++ { f += <-ch } return f } func term(ch chan float64, k float64) { ch <- 4 * math.Pow(-1, k) / (2*k + 1) } go/doc/play/sieve.go0100644000000000000000000000137212412656734014653 0ustar00rootroot00000000000000// A concurrent prime sieve package main import "fmt" // Send the sequence 2, 3, 4, ... to channel 'ch'. func Generate(ch chan<- int) { for i := 2; ; i++ { ch <- i // Send 'i' to channel 'ch'. } } // Copy the values from channel 'in' to channel 'out', // removing those divisible by 'prime'. func Filter(in <-chan int, out chan<- int, prime int) { for { i := <-in // Receive value from 'in'. if i%prime != 0 { out <- i // Send 'i' to 'out'. } } } // The prime sieve: Daisy-chain Filter processes. func main() { ch := make(chan int) // Create a new channel. go Generate(ch) // Launch Generate goroutine. for i := 0; i < 10; i++ { prime := <-ch fmt.Println(prime) ch1 := make(chan int) go Filter(ch, ch1, prime) ch = ch1 } } go/doc/play/solitaire.go0100644000000000000000000000516612412656734015540 0ustar00rootroot00000000000000// This program solves the (English) peg // solitaire board game. // http://en.wikipedia.org/wiki/Peg_solitaire package main import "fmt" const N = 11 + 1 // length of a row (+1 for \n) // The board must be surrounded by 2 illegal // fields in each direction so that move() // doesn't need to check the board boundaries. // Periods represent illegal fields, // ● are pegs, and ○ are holes. var board = []rune( `........... ........... ....●●●.... ....●●●.... ..●●●●●●●.. ..●●●○●●●.. ..●●●●●●●.. ....●●●.... ....●●●.... ........... ........... `) // center is the position of the center hole if // there is a single one; otherwise it is -1. var center int func init() { n := 0 for pos, field := range board { if field == '○' { center = pos n++ } } if n != 1 { center = -1 // no single hole } } var moves int // number of times move is called // move tests if there is a peg at position pos that // can jump over another peg in direction dir. If the // move is valid, it is executed and move returns true. // Otherwise, move returns false. func move(pos, dir int) bool { moves++ if board[pos] == '●' && board[pos+dir] == '●' && board[pos+2*dir] == '○' { board[pos] = '○' board[pos+dir] = '○' board[pos+2*dir] = '●' return true } return false } // unmove reverts a previously executed valid move. func unmove(pos, dir int) { board[pos] = '●' board[pos+dir] = '●' board[pos+2*dir] = '○' } // solve tries to find a sequence of moves such that // there is only one peg left at the end; if center is // >= 0, that last peg must be in the center position. // If a solution is found, solve prints the board after // each move in a backward fashion (i.e., the last // board position is printed first, all the way back to // the starting board position). func solve() bool { var last, n int for pos, field := range board { // try each board position if field == '●' { // found a peg for _, dir := range [...]int{-1, -N, +1, +N} { // try each direction if move(pos, dir) { // a valid move was found and executed, // see if this new board has a solution if solve() { unmove(pos, dir) fmt.Println(string(board)) return true } unmove(pos, dir) } } last = pos n++ } } // tried each possible move if n == 1 && (center < 0 || last == center) { // there's only one peg left fmt.Println(string(board)) return true } // no solution found for this board return false } func main() { if !solve() { fmt.Println("no solution found") } fmt.Println(moves, "moves tried") } go/doc/play/tree.go0100644000000000000000000000373112412656734014500 0ustar00rootroot00000000000000// Go's concurrency primitives make it easy to // express concurrent concepts, such as // this binary tree comparison. // // Trees may be of different shapes, // but have the same contents. For example: // // 4 6 // 2 6 4 7 // 1 3 5 7 2 5 // 1 3 // // This program compares a pair of trees by // walking each in its own goroutine, // sending their contents through a channel // to a third goroutine that compares them. package main import ( "fmt" "math/rand" ) // A Tree is a binary tree with integer values. type Tree struct { Left *Tree Value int Right *Tree } // Walk traverses a tree depth-first, // sending each Value on a channel. func Walk(t *Tree, ch chan int) { if t == nil { return } Walk(t.Left, ch) ch <- t.Value Walk(t.Right, ch) } // Walker launches Walk in a new goroutine, // and returns a read-only channel of values. func Walker(t *Tree) <-chan int { ch := make(chan int) go func() { Walk(t, ch) close(ch) }() return ch } // Compare reads values from two Walkers // that run simultaneously, and returns true // if t1 and t2 have the same contents. func Compare(t1, t2 *Tree) bool { c1, c2 := Walker(t1), Walker(t2) for { v1, ok1 := <-c1 v2, ok2 := <-c2 if !ok1 || !ok2 { return ok1 == ok2 } if v1 != v2 { break } } return false } // New returns a new, random binary tree // holding the values 1k, 2k, ..., nk. func New(n, k int) *Tree { var t *Tree for _, v := range rand.Perm(n) { t = insert(t, (1+v)*k) } return t } func insert(t *Tree, v int) *Tree { if t == nil { return &Tree{nil, v, nil} } if v < t.Value { t.Left = insert(t.Left, v) return t } t.Right = insert(t.Right, v) return t } func main() { t1 := New(100, 1) fmt.Println(Compare(t1, New(100, 1)), "Same Contents") fmt.Println(Compare(t1, New(99, 1)), "Differing Sizes") fmt.Println(Compare(t1, New(100, 2)), "Differing Values") fmt.Println(Compare(t1, New(101, 2)), "Dissimilar") } go/doc/progs0040755000000000000000000000000012412656734013317 5ustar00rootroot00000000000000go/doc/progs/cgo1.go0100644000000000000000000000053112412656734014552 0ustar00rootroot00000000000000// skip // 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 rand /* #include */ import "C" // STOP OMIT func Random() int { return int(C.rand()) } // STOP OMIT func Seed(i int) { C.srand(C.uint(i)) } // END OMIT go/doc/progs/cgo2.go0100644000000000000000000000053612412656734014560 0ustar00rootroot00000000000000// skip // 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 rand2 /* #include */ import "C" func Random() int { var r C.int = C.rand() return int(r) } // STOP OMIT func Seed(i int) { C.srand(C.uint(i)) } // END OMIT go/doc/progs/cgo3.go0100644000000000000000000000057012412656734014557 0ustar00rootroot00000000000000// skip // 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 print // #include // #include import "C" import "unsafe" func Print(s string) { cs := C.CString(s) C.fputs(cs, (*C.FILE)(C.stdout)) C.free(unsafe.Pointer(cs)) } // END OMIT go/doc/progs/cgo4.go0100644000000000000000000000057612412656734014566 0ustar00rootroot00000000000000// skip // 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 print // #include // #include import "C" import "unsafe" func Print(s string) { cs := C.CString(s) defer C.free(unsafe.Pointer(cs)) C.fputs(cs, (*C.FILE)(C.stdout)) } // END OMIT go/doc/progs/defer.go0100644000000000000000000000154712412656734015016 0ustar00rootroot00000000000000// cmpout // Copyright 2011 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 file contains the code snippets included in "Defer, Panic, and Recover." package main import ( "fmt" "io" "os" ) func a() { i := 0 defer fmt.Println(i) i++ return } // STOP OMIT func b() { for i := 0; i < 4; i++ { defer fmt.Print(i) } } // STOP OMIT func c() (i int) { defer func() { i++ }() return 1 } // STOP OMIT // Initial version. func CopyFile(dstName, srcName string) (written int64, err error) { src, err := os.Open(srcName) if err != nil { return } dst, err := os.Create(dstName) if err != nil { return } written, err = io.Copy(dst, src) dst.Close() src.Close() return } // STOP OMIT func main() { a() b() fmt.Println() fmt.Println(c()) } go/doc/progs/defer.out0100644000000000000000000000001112412656734015201 0ustar00rootroot000000000000000 3210 2 go/doc/progs/defer2.go0100644000000000000000000000202212412656734015065 0ustar00rootroot00000000000000// cmpout // Copyright 2011 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 file contains the code snippets included in "Defer, Panic, and Recover." package main import "fmt" import "io" // OMIT import "os" // OMIT func main() { f() fmt.Println("Returned normally from f.") } func f() { defer func() { if r := recover(); r != nil { fmt.Println("Recovered in f", r) } }() fmt.Println("Calling g.") g(0) fmt.Println("Returned normally from g.") } func g(i int) { if i > 3 { fmt.Println("Panicking!") panic(fmt.Sprintf("%v", i)) } defer fmt.Println("Defer in g", i) fmt.Println("Printing in g", i) g(i + 1) } // STOP OMIT // Revised version. func CopyFile(dstName, srcName string) (written int64, err error) { src, err := os.Open(srcName) if err != nil { return } defer src.Close() dst, err := os.Create(dstName) if err != nil { return } defer dst.Close() return io.Copy(dst, src) } // STOP OMIT go/doc/progs/defer2.out0100644000000000000000000000026512412656734015276 0ustar00rootroot00000000000000Calling g. Printing in g 0 Printing in g 1 Printing in g 2 Printing in g 3 Panicking! Defer in g 3 Defer in g 2 Defer in g 1 Defer in g 0 Recovered in f 4 Returned normally from f. go/doc/progs/eff_bytesize.go0100644000000000000000000000162512412656734016404 0ustar00rootroot00000000000000// cmpout // Copyright 2009 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 "fmt" type ByteSize float64 const ( _ = iota // ignore first value by assigning to blank identifier KB ByteSize = 1 << (10 * iota) MB GB TB PB EB ZB YB ) func (b ByteSize) String() string { switch { case b >= YB: return fmt.Sprintf("%.2fYB", b/YB) case b >= ZB: return fmt.Sprintf("%.2fZB", b/ZB) case b >= EB: return fmt.Sprintf("%.2fEB", b/EB) case b >= PB: return fmt.Sprintf("%.2fPB", b/PB) case b >= TB: return fmt.Sprintf("%.2fTB", b/TB) case b >= GB: return fmt.Sprintf("%.2fGB", b/GB) case b >= MB: return fmt.Sprintf("%.2fMB", b/MB) case b >= KB: return fmt.Sprintf("%.2fKB", b/KB) } return fmt.Sprintf("%.2fB", b) } func main() { fmt.Println(YB, ByteSize(1e13)) } go/doc/progs/eff_bytesize.out0100644000000000000000000000001612412656734016577 0ustar00rootroot000000000000001.00YB 9.09TB go/doc/progs/eff_qr.go0100644000000000000000000000201512412656734015162 0ustar00rootroot00000000000000// compile // Copyright 2009 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 ( "flag" "html/template" "log" "net/http" ) var addr = flag.String("addr", ":1718", "http service address") // Q=17, R=18 var templ = template.Must(template.New("qr").Parse(templateStr)) func main() { flag.Parse() http.Handle("/", http.HandlerFunc(QR)) err := http.ListenAndServe(*addr, nil) if err != nil { log.Fatal("ListenAndServe:", err) } } func QR(w http.ResponseWriter, req *http.Request) { templ.Execute(w, req.FormValue("s")) } const templateStr = ` QR Link Generator {{if .}}
{{.}}

{{end}}
` go/doc/progs/eff_sequence.go0100644000000000000000000000136712412656734016361 0ustar00rootroot00000000000000// cmpout // Copyright 2009 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 ( "fmt" "sort" ) func main() { seq := Sequence{6, 2, -1, 44, 16} sort.Sort(seq) fmt.Println(seq) } type Sequence []int // Methods required by sort.Interface. func (s Sequence) Len() int { return len(s) } func (s Sequence) Less(i, j int) bool { return s[i] < s[j] } func (s Sequence) Swap(i, j int) { s[i], s[j] = s[j], s[i] } // Method for printing - sorts the elements before printing. func (s Sequence) String() string { sort.Sort(s) str := "[" for i, elem := range s { if i > 0 { str += " " } str += fmt.Sprint(elem) } return str + "]" } go/doc/progs/eff_sequence.out0100644000000000000000000000001712412656734016552 0ustar00rootroot00000000000000[-1 2 6 16 44] go/doc/progs/eff_unused1.go0100644000000000000000000000024312412656734016125 0ustar00rootroot00000000000000// skip package main import ( "fmt" "io" "log" "os" ) func main() { fd, err := os.Open("test.go") if err != nil { log.Fatal(err) } // TODO: use fd. } go/doc/progs/eff_unused2.go0100644000000000000000000000043512412656734016131 0ustar00rootroot00000000000000// compile package main import ( "fmt" "io" "log" "os" ) var _ = fmt.Printf // For debugging; delete when done. var _ io.Reader // For debugging; delete when done. func main() { fd, err := os.Open("test.go") if err != nil { log.Fatal(err) } // TODO: use fd. _ = fd } go/doc/progs/error.go0100644000000000000000000000443512412656734015061 0ustar00rootroot00000000000000// compile // Copyright 2011 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 file contains the code snippets included in "Error Handling and Go." package main import ( "encoding/json" "errors" "fmt" "log" "net" "os" "time" ) type File struct{} func Open(name string) (file *File, err error) { // OMIT panic(1) // STOP OMIT } func openFile() { // OMIT f, err := os.Open("filename.ext") if err != nil { log.Fatal(err) } // do something with the open *File f // STOP OMIT _ = f } // errorString is a trivial implementation of error. type errorString struct { s string } func (e *errorString) Error() string { return e.s } // STOP OMIT // New returns an error that formats as the given text. func New(text string) error { return &errorString{text} } // STOP OMIT func Sqrt(f float64) (float64, error) { if f < 0 { return 0, errors.New("math: square root of negative number") } // implementation return 0, nil // OMIT } // STOP OMIT func printErr() (int, error) { // OMIT f, err := Sqrt(-1) if err != nil { fmt.Println(err) } // STOP OMIT // fmtError OMIT if f < 0 { return 0, fmt.Errorf("math: square root of negative number %g", f) } // STOP OMIT return 0, nil } type NegativeSqrtError float64 func (f NegativeSqrtError) Error() string { return fmt.Sprintf("math: square root of negative number %g", float64(f)) } // STOP OMIT type SyntaxError struct { msg string // description of error Offset int64 // error occurred after reading Offset bytes } func (e *SyntaxError) Error() string { return e.msg } // STOP OMIT func decodeError(dec *json.Decoder, val struct{}) error { // OMIT var f os.FileInfo // OMIT if err := dec.Decode(&val); err != nil { if serr, ok := err.(*json.SyntaxError); ok { line, col := findLine(f, serr.Offset) return fmt.Errorf("%s:%d:%d: %v", f.Name(), line, col, err) } return err } // STOP OMIT return nil } func findLine(os.FileInfo, int64) (int, int) { // place holder; no need to run return 0, 0 } func netError(err error) { // OMIT for { // OMIT if nerr, ok := err.(net.Error); ok && nerr.Temporary() { time.Sleep(1e9) continue } if err != nil { log.Fatal(err) } // STOP OMIT } } func main() {} go/doc/progs/error2.go0100644000000000000000000000221112412656734015131 0ustar00rootroot00000000000000// compile // Copyright 2011 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 file contains the code snippets included in "Error Handling and Go." package main import ( "net/http" "text/template" ) func init() { http.HandleFunc("/view", viewRecord) } func viewRecord(w http.ResponseWriter, r *http.Request) { c := appengine.NewContext(r) key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) record := new(Record) if err := datastore.Get(c, key, record); err != nil { http.Error(w, err.Error(), 500) return } if err := viewTemplate.Execute(w, record); err != nil { http.Error(w, err.Error(), 500) } } // STOP OMIT type ap struct{} func (ap) NewContext(*http.Request) *ctx { return nil } type ctx struct{} func (*ctx) Errorf(string, ...interface{}) {} var appengine ap type ds struct{} func (ds) NewKey(*ctx, string, string, int, *int) string { return "" } func (ds) Get(*ctx, string, *Record) error { return nil } var datastore ds type Record struct{} var viewTemplate *template.Template func main() {} go/doc/progs/error3.go0100644000000000000000000000246212412656734015142 0ustar00rootroot00000000000000// compile // Copyright 2011 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 file contains the code snippets included in "Error Handling and Go." package main import ( "net/http" "text/template" ) func init() { http.Handle("/view", appHandler(viewRecord)) } // STOP OMIT func viewRecord(w http.ResponseWriter, r *http.Request) error { c := appengine.NewContext(r) key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) record := new(Record) if err := datastore.Get(c, key, record); err != nil { return err } return viewTemplate.Execute(w, record) } // STOP OMIT type appHandler func(http.ResponseWriter, *http.Request) error func (fn appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { if err := fn(w, r); err != nil { http.Error(w, err.Error(), 500) } } // STOP OMIT type ap struct{} func (ap) NewContext(*http.Request) *ctx { return nil } type ctx struct{} func (*ctx) Errorf(string, ...interface{}) {} var appengine ap type ds struct{} func (ds) NewKey(*ctx, string, string, int, *int) string { return "" } func (ds) Get(*ctx, string, *Record) error { return nil } var datastore ds type Record struct{} var viewTemplate *template.Template func main() {} go/doc/progs/error4.go0100644000000000000000000000311512412656734015137 0ustar00rootroot00000000000000// compile // Copyright 2011 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 file contains the code snippets included in "Error Handling and Go." package main import ( "net/http" "text/template" ) type appError struct { Error error Message string Code int } // STOP OMIT type appHandler func(http.ResponseWriter, *http.Request) *appError func (fn appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { if e := fn(w, r); e != nil { // e is *appError, not error. c := appengine.NewContext(r) c.Errorf("%v", e.Error) http.Error(w, e.Message, e.Code) } } // STOP OMIT func viewRecord(w http.ResponseWriter, r *http.Request) *appError { c := appengine.NewContext(r) key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) record := new(Record) if err := datastore.Get(c, key, record); err != nil { return &appError{err, "Record not found", 404} } if err := viewTemplate.Execute(w, record); err != nil { return &appError{err, "Can't display record", 500} } return nil } // STOP OMIT func init() { http.Handle("/view", appHandler(viewRecord)) } type ap struct{} func (ap) NewContext(*http.Request) *ctx { return nil } type ctx struct{} func (*ctx) Errorf(string, ...interface{}) {} var appengine ap type ds struct{} func (ds) NewKey(*ctx, string, string, int, *int) string { return "" } func (ds) Get(*ctx, string, *Record) error { return nil } var datastore ds type Record struct{} var viewTemplate *template.Template func main() {} go/doc/progs/go1.go0100644000000000000000000001150012412656734014405 0ustar00rootroot00000000000000// compile // this file will output a list of filenames in cwd, not suitable for cmpout // Copyright 2011 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 file contains examples to embed in the Go 1 release notes document. package main import ( "errors" "flag" "fmt" "log" "os" "path/filepath" "testing" "time" "unicode" ) func main() { flag.Parse() stringAppend() mapDelete() mapIteration() multipleAssignment() structEquality() compositeLiterals() runeType() errorExample() timePackage() walkExample() osIsExist() } var timeout = flag.Duration("timeout", 30*time.Second, "how long to wait for completion") func init() { // canonicalize the logging log.SetFlags(0) } func mapDelete() { m := map[string]int{"7": 7, "23": 23} k := "7" delete(m, k) if m["7"] != 0 || m["23"] != 23 { log.Fatal("mapDelete:", m) } } func stringAppend() { greeting := []byte{} greeting = append(greeting, []byte("hello ")...) greeting = append(greeting, "world"...) if string(greeting) != "hello world" { log.Fatal("stringAppend: ", string(greeting)) } } func mapIteration() { m := map[string]int{"Sunday": 0, "Monday": 1} for name, value := range m { // This loop should not assume Sunday will be visited first. f(name, value) } } func f(string, int) { } func assert(t bool) { if !t { log.Panic("assertion fail") } } func multipleAssignment() { sa := []int{1, 2, 3} i := 0 i, sa[i] = 1, 2 // sets i = 1, sa[0] = 2 sb := []int{1, 2, 3} j := 0 sb[j], j = 2, 1 // sets sb[0] = 2, j = 1 sc := []int{1, 2, 3} sc[0], sc[0] = 1, 2 // sets sc[0] = 1, then sc[0] = 2 (so sc[0] = 2 at end) assert(i == 1 && sa[0] == 2) assert(j == 1 && sb[0] == 2) assert(sc[0] == 2) } func structEquality() { type Day struct { long string short string } Christmas := Day{"Christmas", "XMas"} Thanksgiving := Day{"Thanksgiving", "Turkey"} holiday := map[Day]bool{ Christmas: true, Thanksgiving: true, } fmt.Printf("Christmas is a holiday: %t\n", holiday[Christmas]) } func compositeLiterals() { type Date struct { month string day int } // Struct values, fully qualified; always legal. holiday1 := []Date{ Date{"Feb", 14}, Date{"Nov", 11}, Date{"Dec", 25}, } // Struct values, type name elided; always legal. holiday2 := []Date{ {"Feb", 14}, {"Nov", 11}, {"Dec", 25}, } // Pointers, fully qualified, always legal. holiday3 := []*Date{ &Date{"Feb", 14}, &Date{"Nov", 11}, &Date{"Dec", 25}, } // Pointers, type name elided; legal in Go 1. holiday4 := []*Date{ {"Feb", 14}, {"Nov", 11}, {"Dec", 25}, } // STOP OMIT _, _, _, _ = holiday1, holiday2, holiday3, holiday4 } func runeType() { // STARTRUNE OMIT delta := 'δ' // delta has type rune. var DELTA rune DELTA = unicode.ToUpper(delta) epsilon := unicode.ToLower(DELTA + 1) if epsilon != 'δ'+1 { log.Fatal("inconsistent casing for Greek") } // ENDRUNE OMIT } // START ERROR EXAMPLE OMIT type SyntaxError struct { File string Line int Message string } func (se *SyntaxError) Error() string { return fmt.Sprintf("%s:%d: %s", se.File, se.Line, se.Message) } // END ERROR EXAMPLE OMIT func errorExample() { var ErrSyntax = errors.New("syntax error") _ = ErrSyntax se := &SyntaxError{"file", 7, "error"} got := fmt.Sprint(se) const expect = "file:7: error" if got != expect { log.Fatalf("errorsPackage: expected %q got %q", expect, got) } } // sleepUntil sleeps until the specified time. It returns immediately if it's too late. func sleepUntil(wakeup time.Time) { now := time.Now() // A Time. if !wakeup.After(now) { return } delta := wakeup.Sub(now) // A Duration. fmt.Printf("Sleeping for %.3fs\n", delta.Seconds()) time.Sleep(delta) } func timePackage() { sleepUntil(time.Now().Add(123 * time.Millisecond)) } func walkExample() { // STARTWALK OMIT markFn := func(path string, info os.FileInfo, err error) error { if path == "pictures" { // Will skip walking of directory pictures and its contents. return filepath.SkipDir } if err != nil { return err } log.Println(path) return nil } err := filepath.Walk(".", markFn) if err != nil { log.Fatal(err) } // ENDWALK OMIT } func initializationFunction(c chan int) { c <- 1 } var PackageGlobal int func init() { c := make(chan int) go initializationFunction(c) PackageGlobal = <-c } func BenchmarkSprintf(b *testing.B) { // Verify correctness before running benchmark. b.StopTimer() got := fmt.Sprintf("%x", 23) const expect = "17" if expect != got { b.Fatalf("expected %q; got %q", expect, got) } b.StartTimer() for i := 0; i < b.N; i++ { fmt.Sprintf("%x", 23) } } func osIsExist() { name := "go1.go" f, err := os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0600) if os.IsExist(err) { log.Printf("%s already exists", name) } _ = f } go/doc/progs/gobs1.go0100644000000000000000000000071112412656734014734 0ustar00rootroot00000000000000// compile // Copyright 2011 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 gobs1 type T struct{ X, Y, Z int } // Only exported fields are encoded and decoded. var t = T{X: 7, Y: 0, Z: 8} // STOP OMIT type U struct{ X, Y *int8 } // Note: pointers to int8s var u U // STOP OMIT type Node struct { Value int Left, Right *Node } // STOP OMIT go/doc/progs/gobs2.go0100644000000000000000000000174712412656734014747 0ustar00rootroot00000000000000// compile // Copyright 2011 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 ( "bytes" "encoding/gob" "fmt" "log" ) type P struct { X, Y, Z int Name string } type Q struct { X, Y *int32 Name string } func main() { // Initialize the encoder and decoder. Normally enc and dec would be // bound to network connections and the encoder and decoder would // run in different processes. var network bytes.Buffer // Stand-in for a network connection enc := gob.NewEncoder(&network) // Will write to network. dec := gob.NewDecoder(&network) // Will read from network. // Encode (send) the value. err := enc.Encode(P{3, 4, 5, "Pythagoras"}) if err != nil { log.Fatal("encode error:", err) } // Decode (receive) the value. var q Q err = dec.Decode(&q) if err != nil { log.Fatal("decode error:", err) } fmt.Printf("%q: {%d,%d}\n", q.Name, *q.X, *q.Y) } go/doc/progs/image_draw.go0100644000000000000000000000611112412656734016020 0ustar00rootroot00000000000000// compile // 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. // This file contains the code snippets included in "The Go image/draw package." package main import ( "image" "image/color" "image/draw" ) func main() { Color() Rect() RectAndScroll() ConvAndCircle() Glyph() } func Color() { c := color.RGBA{255, 0, 255, 255} r := image.Rect(0, 0, 640, 480) dst := image.NewRGBA(r) // ZERO OMIT // image.ZP is the zero point -- the origin. draw.Draw(dst, r, &image.Uniform{c}, image.ZP, draw.Src) // STOP OMIT // BLUE OMIT m := image.NewRGBA(image.Rect(0, 0, 640, 480)) blue := color.RGBA{0, 0, 255, 255} draw.Draw(m, m.Bounds(), &image.Uniform{blue}, image.ZP, draw.Src) // STOP OMIT // RESET OMIT draw.Draw(m, m.Bounds(), image.Transparent, image.ZP, draw.Src) // STOP OMIT } func Rect() { dst := image.NewRGBA(image.Rect(0, 0, 640, 480)) sr := image.Rect(0, 0, 200, 200) src := image.Black dp := image.Point{100, 100} // RECT OMIT r := image.Rectangle{dp, dp.Add(sr.Size())} draw.Draw(dst, r, src, sr.Min, draw.Src) // STOP OMIT } func RectAndScroll() { dst := image.NewRGBA(image.Rect(0, 0, 640, 480)) sr := image.Rect(0, 0, 200, 200) src := image.Black dp := image.Point{100, 100} // RECT2 OMIT r := sr.Sub(sr.Min).Add(dp) draw.Draw(dst, r, src, sr.Min, draw.Src) // STOP OMIT m := dst // SCROLL OMIT b := m.Bounds() p := image.Pt(0, 20) // Note that even though the second argument is b, // the effective rectangle is smaller due to clipping. draw.Draw(m, b, m, b.Min.Add(p), draw.Src) dirtyRect := b.Intersect(image.Rect(b.Min.X, b.Max.Y-20, b.Max.X, b.Max.Y)) // STOP OMIT _ = dirtyRect // noop } func ConvAndCircle() { src := image.NewRGBA(image.Rect(0, 0, 640, 480)) dst := image.NewRGBA(image.Rect(0, 0, 640, 480)) // CONV OMIT b := src.Bounds() m := image.NewRGBA(b) draw.Draw(m, b, src, b.Min, draw.Src) // STOP OMIT p := image.Point{100, 100} r := 50 // CIRCLE2 OMIT draw.DrawMask(dst, dst.Bounds(), src, image.ZP, &circle{p, r}, image.ZP, draw.Over) // STOP OMIT } func theGlyphImageForAFont() image.Image { return image.NewRGBA(image.Rect(0, 0, 640, 480)) } func theBoundsFor(index int) image.Rectangle { return image.Rect(0, 0, 32, 32) } func Glyph() { p := image.Point{100, 100} dst := image.NewRGBA(image.Rect(0, 0, 640, 480)) glyphIndex := 42 // GLYPH OMIT src := &image.Uniform{color.RGBA{0, 0, 255, 255}} mask := theGlyphImageForAFont() mr := theBoundsFor(glyphIndex) draw.DrawMask(dst, mr.Sub(mr.Min).Add(p), src, image.ZP, mask, mr.Min, draw.Over) // STOP OMIT } //CIRCLESTRUCT OMIT type circle struct { p image.Point r int } func (c *circle) ColorModel() color.Model { return color.AlphaModel } func (c *circle) Bounds() image.Rectangle { return image.Rect(c.p.X-c.r, c.p.Y-c.r, c.p.X+c.r, c.p.Y+c.r) } func (c *circle) At(x, y int) color.Color { xx, yy, rr := float64(x-c.p.X)+0.5, float64(y-c.p.Y)+0.5, float64(c.r) if xx*xx+yy*yy < rr*rr { return color.Alpha{255} } return color.Alpha{0} } //STOP OMIT go/doc/progs/image_package1.go0100644000000000000000000000044412412656734016542 0ustar00rootroot00000000000000// cmpout // 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 import ( "fmt" "image" ) func main() { p := image.Point{2, 1} fmt.Println("X is", p.X, "Y is", p.Y) } go/doc/progs/image_package1.out0100644000000000000000000000001612412656734016737 0ustar00rootroot00000000000000X is 2 Y is 1 go/doc/progs/image_package2.go0100644000000000000000000000057612412656734016551 0ustar00rootroot00000000000000// cmpout // 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 import ( "fmt" "image" ) func main() { r := image.Rect(2, 1, 5, 5) // Dx and Dy return a rectangle's width and height. fmt.Println(r.Dx(), r.Dy(), image.Pt(0, 0).In(r)) // prints 3 4 false } go/doc/progs/image_package2.out0100644000000000000000000000001212412656734016734 0ustar00rootroot000000000000003 4 false go/doc/progs/image_package3.go0100644000000000000000000000053612412656734016546 0ustar00rootroot00000000000000// cmpout // 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 import ( "fmt" "image" ) func main() { r := image.Rect(2, 1, 5, 5).Add(image.Pt(-4, -2)) fmt.Println(r.Dx(), r.Dy(), image.Pt(0, 0).In(r)) // prints 3 4 true } go/doc/progs/image_package3.out0100644000000000000000000000001112412656734016734 0ustar00rootroot000000000000003 4 true go/doc/progs/image_package4.go0100644000000000000000000000064012412656734016543 0ustar00rootroot00000000000000// cmpout // 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 import ( "fmt" "image" ) func main() { r := image.Rect(0, 0, 4, 3).Intersect(image.Rect(2, 2, 5, 5)) // Size returns a rectangle's width and height, as a Point. fmt.Printf("%#v\n", r.Size()) // prints image.Point{X:2, Y:1} } go/doc/progs/image_package4.out0100644000000000000000000000002612412656734016743 0ustar00rootroot00000000000000image.Point{X:2, Y:1} go/doc/progs/image_package5.go0100644000000000000000000000054612412656734016551 0ustar00rootroot00000000000000// cmpout // 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 import ( "fmt" "image" "image/color" ) func main() { m := image.NewRGBA(image.Rect(0, 0, 640, 480)) m.Set(5, 5, color.RGBA{255, 0, 0, 255}) fmt.Println(m.At(5, 5)) } go/doc/progs/image_package5.out0100644000000000000000000000001612412656734016743 0ustar00rootroot00000000000000{255 0 0 255} go/doc/progs/image_package6.go0100644000000000000000000000071312412656734016546 0ustar00rootroot00000000000000// cmpout // 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 import ( "fmt" "image" ) func main() { m0 := image.NewRGBA(image.Rect(0, 0, 8, 5)) m1 := m0.SubImage(image.Rect(1, 2, 5, 5)).(*image.RGBA) fmt.Println(m0.Bounds().Dx(), m1.Bounds().Dx()) // prints 8, 4 fmt.Println(m0.Stride == m1.Stride) // prints true } go/doc/progs/image_package6.out0100644000000000000000000000001112412656734016737 0ustar00rootroot000000000000008 4 true go/doc/progs/interface.go0100644000000000000000000000206212412656734015662 0ustar00rootroot00000000000000// compile // 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. // This file contains the code snippets included in "The Laws of Reflection." package main import ( "bufio" "bytes" "io" "os" ) type MyInt int var i int var j MyInt // STOP OMIT // Reader is the interface that wraps the basic Read method. type Reader interface { Read(p []byte) (n int, err error) } // Writer is the interface that wraps the basic Write method. type Writer interface { Write(p []byte) (n int, err error) } // STOP OMIT func readers() { // OMIT var r io.Reader r = os.Stdin r = bufio.NewReader(r) r = new(bytes.Buffer) // and so on // STOP OMIT } func typeAssertions() (interface{}, error) { // OMIT var r io.Reader tty, err := os.OpenFile("/dev/tty", os.O_RDWR, 0) if err != nil { return nil, err } r = tty // STOP OMIT var w io.Writer w = r.(io.Writer) // STOP OMIT var empty interface{} empty = w // STOP OMIT return empty, err } func main() { } go/doc/progs/interface2.go0100644000000000000000000000517112412656734015750 0ustar00rootroot00000000000000// cmpout // 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. // This file contains the code snippets included in "The Laws of Reflection." package main import ( "fmt" "reflect" ) func main() { var x float64 = 3.4 fmt.Println("type:", reflect.TypeOf(x)) // STOP OMIT // TODO(proppy): test output OMIT } // STOP main OMIT func f1() { // START f1 OMIT var x float64 = 3.4 v := reflect.ValueOf(x) fmt.Println("type:", v.Type()) fmt.Println("kind is float64:", v.Kind() == reflect.Float64) fmt.Println("value:", v.Float()) // STOP OMIT } func f2() { // START f2 OMIT var x uint8 = 'x' v := reflect.ValueOf(x) fmt.Println("type:", v.Type()) // uint8. fmt.Println("kind is uint8: ", v.Kind() == reflect.Uint8) // true. x = uint8(v.Uint()) // v.Uint returns a uint64. // STOP OMIT } func f3() { // START f3 OMIT type MyInt int var x MyInt = 7 v := reflect.ValueOf(x) // STOP OMIT // START f3b OMIT y := v.Interface().(float64) // y will have type float64. fmt.Println(y) // STOP OMIT // START f3c OMIT fmt.Println(v.Interface()) // STOP OMIT // START f3d OMIT fmt.Printf("value is %7.1e\n", v.Interface()) // STOP OMIT } func f4() { // START f4 OMIT var x float64 = 3.4 v := reflect.ValueOf(x) v.SetFloat(7.1) // Error: will panic. // STOP OMIT } func f5() { // START f5 OMIT var x float64 = 3.4 v := reflect.ValueOf(x) fmt.Println("settability of v:", v.CanSet()) // STOP OMIT } func f6() { // START f6 OMIT var x float64 = 3.4 v := reflect.ValueOf(x) // STOP OMIT // START f6b OMIT v.SetFloat(7.1) // STOP OMIT } func f7() { // START f7 OMIT var x float64 = 3.4 p := reflect.ValueOf(&x) // Note: take the address of x. fmt.Println("type of p:", p.Type()) fmt.Println("settability of p:", p.CanSet()) // STOP OMIT // START f7b OMIT v := p.Elem() fmt.Println("settability of v:", v.CanSet()) // STOP OMIT // START f7c OMIT v.SetFloat(7.1) fmt.Println(v.Interface()) fmt.Println(x) // STOP OMIT } func f8() { // START f8 OMIT type T struct { A int B string } t := T{23, "skidoo"} s := reflect.ValueOf(&t).Elem() typeOfT := s.Type() for i := 0; i < s.NumField(); i++ { f := s.Field(i) fmt.Printf("%d: %s %s = %v\n", i, typeOfT.Field(i).Name, f.Type(), f.Interface()) } // STOP OMIT // START f8b OMIT s.Field(0).SetInt(77) s.Field(1).SetString("Sunset Strip") fmt.Println("t is now", t) // STOP OMIT } func f9() { // START f9 OMIT var x float64 = 3.4 fmt.Println("value:", reflect.ValueOf(x)) // STOP OMIT } go/doc/progs/interface2.out0100644000000000000000000000001612412656734016143 0ustar00rootroot00000000000000type: float64 go/doc/progs/json1.go0100644000000000000000000000273012412656734014756 0ustar00rootroot00000000000000// run // 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 import ( "encoding/json" "log" "reflect" ) type Message struct { Name string Body string Time int64 } // STOP OMIT func Encode() { m := Message{"Alice", "Hello", 1294706395881547000} b, err := json.Marshal(m) if err != nil { panic(err) } expected := []byte(`{"Name":"Alice","Body":"Hello","Time":1294706395881547000}`) if !reflect.DeepEqual(b, expected) { log.Panicf("Error marshalling %q, expected %q, got %q.", m, expected, b) } } func Decode() { b := []byte(`{"Name":"Alice","Body":"Hello","Time":1294706395881547000}`) var m Message err := json.Unmarshal(b, &m) if err != nil { panic(err) } expected := Message{ Name: "Alice", Body: "Hello", Time: 1294706395881547000, } if !reflect.DeepEqual(m, expected) { log.Panicf("Error unmarshalling %q, expected %q, got %q.", b, expected, m) } m = Message{ Name: "Alice", Body: "Hello", Time: 1294706395881547000, } // STOP OMIT } func PartialDecode() { b := []byte(`{"Name":"Bob","Food":"Pickle"}`) var m Message err := json.Unmarshal(b, &m) // STOP OMIT if err != nil { panic(err) } expected := Message{ Name: "Bob", } if !reflect.DeepEqual(expected, m) { log.Panicf("Error unmarshalling %q, expected %q, got %q.", b, expected, m) } } func main() { Encode() Decode() PartialDecode() } go/doc/progs/json2.go0100644000000000000000000000130312412656734014752 0ustar00rootroot00000000000000// cmpout // 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 import ( "fmt" "math" ) func InterfaceExample() { var i interface{} i = "a string" i = 2011 i = 2.777 // STOP OMIT r := i.(float64) fmt.Println("the circle's area", math.Pi*r*r) // STOP OMIT switch v := i.(type) { case int: fmt.Println("twice i is", v*2) case float64: fmt.Println("the reciprocal of i is", 1/v) case string: h := len(v) / 2 fmt.Println("i swapped by halves is", v[h:]+v[:h]) default: // i isn't one of the types above } // STOP OMIT } func main() { InterfaceExample() } go/doc/progs/json2.out0100644000000000000000000000011712412656734015156 0ustar00rootroot00000000000000the circle's area 24.227111172875365 the reciprocal of i is 0.3601008282319049 go/doc/progs/json3.go0100644000000000000000000000234112412656734014756 0ustar00rootroot00000000000000// compile // 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 import ( "encoding/json" "fmt" "log" "reflect" ) func Decode() { b := []byte(`{"Name":"Wednesday","Age":6,"Parents":["Gomez","Morticia"]}`) var f interface{} err := json.Unmarshal(b, &f) // STOP OMIT if err != nil { panic(err) } expected := map[string]interface{}{ "Name": "Wednesday", "Age": float64(6), "Parents": []interface{}{ "Gomez", "Morticia", }, } if !reflect.DeepEqual(f, expected) { log.Panicf("Error unmarshalling %q, expected %q, got %q", b, expected, f) } f = map[string]interface{}{ "Name": "Wednesday", "Age": 6, "Parents": []interface{}{ "Gomez", "Morticia", }, } // STOP OMIT m := f.(map[string]interface{}) for k, v := range m { switch vv := v.(type) { case string: fmt.Println(k, "is string", vv) case int: fmt.Println(k, "is int", vv) case []interface{}: fmt.Println(k, "is an array:") for i, u := range vv { fmt.Println(i, u) } default: fmt.Println(k, "is of a type I don't know how to handle") } } // STOP OMIT } func main() { Decode() } go/doc/progs/json4.go0100644000000000000000000000137012412656734014760 0ustar00rootroot00000000000000// run // 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 import ( "encoding/json" "log" "reflect" ) type FamilyMember struct { Name string Age int Parents []string } // STOP OMIT func Decode() { b := []byte(`{"Name":"Bob","Age":20,"Parents":["Morticia", "Gomez"]}`) var m FamilyMember err := json.Unmarshal(b, &m) // STOP OMIT if err != nil { panic(err) } expected := FamilyMember{ Name: "Bob", Age: 20, Parents: []string{"Morticia", "Gomez"}, } if !reflect.DeepEqual(expected, m) { log.Panicf("Error unmarshalling %q, expected %q, got %q", b, expected, m) } } func main() { Decode() } go/doc/progs/json5.go0100644000000000000000000000106112412656734014756 0ustar00rootroot00000000000000// compile // 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 import ( "encoding/json" "log" "os" ) func main() { dec := json.NewDecoder(os.Stdin) enc := json.NewEncoder(os.Stdout) for { var v map[string]interface{} if err := dec.Decode(&v); err != nil { log.Println(err) return } for k := range v { if k != "Name" { delete(v, k) } } if err := enc.Encode(&v); err != nil { log.Println(err) } } } go/doc/progs/run0100755000000000000000000000461612412656734014134 0ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2009 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. set -e goos=$(go env GOOS) defer_panic_recover=" defer defer2 " effective_go=" eff_bytesize eff_qr eff_sequence eff_unused2 " error_handling=" error error2 error3 error4 " law_of_reflection=" interface interface2 " c_go_cgo=" cgo1 cgo2 cgo3 cgo4 " # cgo1 and cgo2 don't run on freebsd, srandom has a different signature if [ "$goos" == "freebsd" ]; then c_go_cgo="cgo3 cgo4" fi # cgo1 and cgo2 don't run on netbsd, srandom has a different signature # cgo3 and cgo4 don't run on netbsd, since cgo cannot handle stdout correctly if [ "$goos" == "netbsd" ]; then c_go_cgo="" fi # cgo3 and cgo4 don't run on openbsd, since cgo cannot handle stdout correctly if [ "$goos" == "openbsd" ]; then c_go_cgo="cgo1 cgo2" fi if [ "$CGO_ENABLED" != 1 ]; then c_go_cgo="" fi timeout=" timeout1 timeout2 " gobs=" gobs1 gobs2 " json=" json1 json2 json3 json4 json5 " image_package=" image_package1 image_package2 image_package3 image_package4 image_package5 image_package6 " all=$(echo $defer_panic_recover $effective_go $error_handling $law_of_reflection $c_go_cgo $timeout $gobs $json $image_package slices go1) for i in $all; do go build $i.go done # Write to temporary file to avoid mingw bash bug. TMPFILE="${TMPDIR:-/tmp}/gotest3.$USER" function testit { ./$1 >"$TMPFILE" 2>&1 || true x=$(echo $(cat "$TMPFILE")) # extra echo canonicalizes if ! echo "$x" | grep "$2" > /dev/null then echo $1 failed: '"'$x'"' is not '"'$2'"' fi } testit defer '^0 3210 2$' testit defer2 '^Calling g. Printing in g 0 Printing in g 1 Printing in g 2 Printing in g 3 Panicking! Defer in g 3 Defer in g 2 Defer in g 1 Defer in g 0 Recovered in f 4 Returned normally from f.$' testit eff_bytesize '^1.00YB 9.09TB$' testit eff_sequence '^\[-1 2 6 16 44\]$' testit go1 '^Christmas is a holiday: true Sleeping for 0.123s.*go1.go already exists$' testit interface2 "^type: float64$" testit json1 "^$" testit json2 "the reciprocal of i is" testit json3 "Age is int 6" testit json4 "^$" testit image_package1 "^X is 2 Y is 1$" testit image_package2 "^3 4 false$" testit image_package3 "^3 4 true$" testit image_package4 "^image.Point{X:2, Y:1}$" testit image_package5 "^{255 0 0 255}$" testit image_package6 "^8 4 true$" rm -f $all "$TMPFILE" go/doc/progs/slices.go0100644000000000000000000000226112412656734015205 0ustar00rootroot00000000000000// compile // 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 import ( "io/ioutil" "regexp" ) func AppendByte(slice []byte, data ...byte) []byte { m := len(slice) n := m + len(data) if n > cap(slice) { // if necessary, reallocate // allocate double what's needed, for future growth. newSlice := make([]byte, (n+1)*2) copy(newSlice, slice) slice = newSlice } slice = slice[0:n] copy(slice[m:n], data) return slice } // STOP OMIT // Filter returns a new slice holding only // the elements of s that satisfy fn. func Filter(s []int, fn func(int) bool) []int { var p []int // == nil for _, i := range s { if fn(i) { p = append(p, i) } } return p } // STOP OMIT var digitRegexp = regexp.MustCompile("[0-9]+") func FindDigits(filename string) []byte { b, _ := ioutil.ReadFile(filename) return digitRegexp.Find(b) } // STOP OMIT func CopyDigits(filename string) []byte { b, _ := ioutil.ReadFile(filename) b = digitRegexp.Find(b) c := make([]byte, len(b)) copy(c, b) return c } // STOP OMIT func main() { // place holder; no need to run } go/doc/progs/timeout1.go0100644000000000000000000000075412412656734015477 0ustar00rootroot00000000000000// compile // 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 timeout import ( "time" ) func Timeout() { ch := make(chan bool, 1) timeout := make(chan bool, 1) go func() { time.Sleep(1 * time.Second) timeout <- true }() // STOP OMIT select { case <-ch: // a read from ch has occurred case <-timeout: // the read from ch has timed out } // STOP OMIT } go/doc/progs/timeout2.go0100644000000000000000000000101612412656734015470 0ustar00rootroot00000000000000// compile // 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 query type Conn string func (c Conn) DoQuery(query string) Result { return Result("result") } type Result string func Query(conns []Conn, query string) Result { ch := make(chan Result, 1) for _, conn := range conns { go func(c Conn) { select { case ch <- c.DoQuery(query): default: } }(conn) } return <-ch } // STOP OMIT go/doc/progs/update.bash0100755000000000000000000000050212412656734015514 0ustar00rootroot00000000000000#!/usr/bin/env bash # 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. set -e rm -f *.out *.rej *.orig [568].out for i in *.go; do if grep -q '^// cmpout$' $i; then echo $i go run $i &> ${i/.go/.out} fi done go/doc/root.html0100644000000000000000000000755012412656734014121 0ustar00rootroot00000000000000
Try Go
Hello, 世界
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Download Go Binary distributions available for
Linux, Mac OS X, Windows, and more.
Featured video
Featured articles
go/doc/share.png0100644000000000000000000000566112412656734014061 0ustar00rootroot00000000000000PNG  IHDRqsD iCCPICC Profile8˭wTSϽ鍒 #JKl$ 1$(""`(8@ƂX dQ z}ww>P+EQ>E t#%@Fbޑm@3ۖ3Z3E6'p2;G8E,H  g)r 'o91Q#:x2)@Bl!IyHD35X3IpC3Ydre<7Um ?'gG o*f9,rs,D1ÖHbX=!|ArxL?7qsSccQf,?+;{o1#)7dF}9RV #\K(@ޯ85&H~EA3"e"Il8X&'[[""1'G( +Z<v8^ sp.o+:wa)G EYQT"*%BE*PuT'u%EB}Dc44mvCc, Zt ݀nC_@F_1&a`aLsss3b*Xc6MîƖ`wc[]>véq'vnq$O &-~@0$"l*B)p0L"*bqBH|D|G"H.$i=tt4HHȾ%d y |BQ(1e rA&g%ǐc˭k%Z o(-L>WB W #_Zj  4EEbbTՈOeSC4MKc6.҆JJ 4bJJcTe{8jR C%CTJʧyZqkwkޤ*GHU'5Z6vhu3+_T(8@4ӌ\_渖VPkyW*^igGuh::+ѭ՝3֋ۨתXײַ_߭?fcfgl`ljӰp(hQscUcqq# :;XSgtݦ7`3Tj氹9|yB`Qg1`I̶lR hnzj`a} &fM[[3[m;]:7=ha8:9[G j#K/`\|\ֹr*v=[[ 8 ,rsg׺K=I'|&}]}vzUOc0A!AۂZ 1&B9$:*iY(3  (0\"#GGu!vaϢlziˣ'b|bJcƚJb5MŗK_fѵ^BG".1.>q|8,)Xҿxi+ԗe,;\~9s$LR|RSgf9HIcv^Q;3RMLH}UޤMLH?>'TABvfNf\X p]cŘ(DTe-+l+VQ\_epHn@ϫѫYt6 ^SZ{u7l nHFeoԙ> D6#B]_EW+?JdSO[R:ي*ڿs[CbYnm;Ra_w'qd2c>WVݭnѬ)}kמZ{~w6Ψb?vgscz}q҆ NMMpyВC7hlmUi->H%!G9k9nxDQԶm=]ڑw2dw[_~=xJTiӥggL=;%zu{n{y߹BŐ/\:sSW\|㵶Oۉ^޶N7:n[wsn_øsnݾ{KϸAa=Vx\DI樂J?~p5?>?<i|nh_ zU5M^cƆ߈L-y{O&SE>4|t)ϸϕ_Lt~ h?=-d`P))=%Mr,?AB"Co?@ABCDEGHIJ"K)L.M1N2O2P2Q.R,S%T UVWXXYZ[\]^_`abcdefzgthoijjdk_lXmSnKoEp ?@ABCDEFGGHIJKLMNOPiQVR>S)TTUVWXYZk[V\A].^_ _`abcdefgh}inj\kLl7m$n nopqr{sXt0u uvw|xFyyz{Y||}~E~iЂ4ㄒBI􈡉LLI򎜏FC풘CE򖟗M\ t)ޝP ȠH ϣWদk1N߭s= ձo= ܵS&Һ]9jUA0 ̸ͧΘω{m`UJA93/-,/2:CRbx/eEndinS4@@&P@T@ӝx 3PtG0^QfG | J "   1eJ!6"$a%')B*,.n0A2&46.8Y:= ?BTE.H*KEN~QU>X\W_cgmk-nrv[y}lًG$lأCyܴ=Ne;Ҫٌe(|)@C. 3PtG0^QfG | J "   1eJ!7"$p&'){+;-.02468:=F?BDG-IL|O9RTWZ]`cg#j]mptUw{5~D򉽍͝#R|z/ǸӹSul!ZyyX 3PtG0^QfG | J "   1eJ!6"$e&')R+,.0c2J4D6S8z:=?BCEGJMQ TEWZ^jaewi lpCsww{~{:Ҟk4ǰV߷`پGȅtk[4+_~هwKdescrobrobrobtextCopyright Apple Inc., 2008mmod"&mW,3&dihlp,tmx|pH,Ȥrl:ШtJZجvzxL.zn|N~ uj vm "h^TJ H*dpÇA8!ŋ-bxO#Ǐ<IN$ɓL\K%˗\œJ&͛l9J'ϟ|I(ѣ"]H)ӧBZH*իbݺG+ׯvG,ٳl̢]{F-۷bE.ݻX;E +'QEl#gV<.s'$LE 8Pu?5M۸sM [ȓ|Dy:qia@ ËO),0{ ˟O| ( !hf `}hgP `{'0`}) J(~Y$ 4,ZA"Ǝ)Di)$ !fN< = ÿQh?Jf`x3(җMTxQ ^ؙ`v%~7ns A߉w3l$W?wE0Z HH*) @0n&8C7lqA̕p{ `'"͈;`J6ZlDCpf[ӈ5Lh F( 8@G@'Xu$%}aFG,AaӹQy3TI'\T%<>ac N9! [!Ui"r 4# X̦6  Բ A"rs€/La€B0 'AqtT3 V@MJЂGԢ1NMhEە2GXdk  `%,`[gڙa 2A2rM&SLAˊf4MU@"R!$X ZS-YKΩjM9TDa>$_ n -)hj)x(yu$zhգZ "D&Qjʺ"#@j&f`@3R%m Zh\mjEڒFrYV m=X~T!WW+YU^br\<7 hpKJ*ij# w * 0ߔ2g}y^J-zK Y:,`u-`/O.g;V kNظ%BDhXfG"0{Qf7]/x~M  8Z]0#Epx[ b ,04%\c|i8ߍcpQ q[et_>2Ԓ\τ5p>'ٿ>^p} d"yk;fgcDVwA{$/4@,!\o՛e vl]`'JMM@:_Xv^뼂P {, z݄n ! ztd6f,4syή lq-6-Zi m, [h U@{ʾl' gw4JDě 8"OApng1Gw`Cj{ |uM`:3/De;pMH]TO:YmhDj|.삵@L) (̋P|ҙpv `*7e˞ `@A%Ow\ZaF"ۑ[ԇ{bu_{P_BK{d^#8:poO/l;̵n֒lr8 4M_wo|`WaqQ]t}Dzn"TxD0&v<vUgr(hvu3}1y=z{|6U-BGdshgKVF}BPz-saw|$`1\'ՃWp,@P.\4 7phdLwVa**PEQ+hؒx )7T5(~hiHFN;`YJRy^Xm?hxW gnm ABT9?ЋLyXxhsh<ph17r36#Rɤz3 pr:t) Ф7%Rn@1y\^!Pepg*@ʦBZF٧`Jٸ )mq㥘6=Ћ3ph5  -9X5 F̔R8,:\ $WA|b¸}ek̅<8NL9+*mV1з= \T *,<l :,#9 ښj3"+Ր H& );O6m6B|o髌ȌP\bJk شwQxˑ8(˘xrsLt3Ek2Z5 ):4ɡ,"|;2QUc, A 4F"`#v)LZ|dw{̯\dKVة Hݮ'X0剿c,8/%0)Zl&`ѵ1#&,&.{ >I? =0AF @B\lƚT4tTJZ)+1^t䅗OŮ7͗,|n]M(y}1P .pxfJЎm],j Y͏2-4M Ӭ|ѣ~y/%Pzg\kP٢ڎ*'V ֬m܆Hl(H& ʜ_.ݧ](>lŝ%{[2tV-kfi]oͳx= )Rze<;iq=6}R P&~(Gxћߪm!%L%-@#KHɍ݅3~['QPq#&ie佉9fo P@53Ny^^:xZ7bjV1^6^L3}aNu^wfh~$Mv wQvT~wi%:phڂu=+W6 , ?Wj)oNqn_sl"W^^0첮YX~Z~렮:x,L\]AKE6_Bp\@$b#'I-했GP pޏ=Yj̮`QtzoqP 歇{O}hSM#0<j`8Z$@*x%IG-?M̢Oc;/SޗJ='*ߺ/v {m'  B?N+ӱy1IX}"R !* |Y%9ZT"{(Ldc"3[w ʷ3IQY^u}]>ݬ5B`կ=XȢ!#0%0#L*D2!Id LTceJdG,tZuHXFh E&di뤦*VZpuذ>8 ["p=A]sxQ8Xg儇ep,6!}>z4(NI}7^ǰm&npnnw?3 nb8BO `ס > AvL@8[xc`rh Z;H55V$< ZygBz?gO{)P t1`~Gv8 w$xxA1.2k|0 Q;{xr$fj"d>"2BbHЀ{R@]0;+ U9qT*I/sf/>)(a+_qA6@)[v Ӊ~2@uD &cE?I:TD?q 1*D:Ʈ#BC]L[}!c X,*,<6#bYYhPG ,t1@'IGQ2d0I) r&1Y|glVescB3 PS@4ILfsC gpӛ. Y14@9f ](C=H@SЋt;"ME;-"h.^~/(#^@O"2C#NRLzW2'Q`!@@SeJ!iXSIU.b3 WH O ZW3e^T)Qi\0WIԵL_mDXH)M}_(F\{604vMuZ_QYa6a 0i+J;WV/YE-d`ʉf3Mq-Y[L Vj[2ᰍHlkj(@n[\V57fԲmxF^b*x+0 W BllTÅ;L`d=  _kx82Ԩ 8:Pۂh#صt|,. Q*kaXB %{y R"Ü hNsM]!dfonÐl;9z3?:Ђ4 mC#:ъ^4GC:Ғ4+mKc:Ӛ4;O:Ԣ5KmS:ժ^5[W:ֲ5km[:׺5{_;6mc#;^6gC;Ҟ6mkc;6o;7ms;^7w;7m{;7<8 n#<;go/doc/tos.html0100644000000000000000000000055012412656734013734 0ustar00rootroot00000000000000

The Go website (the "Website") is hosted by Google. By using and/or visiting the Website, you consent to be bound by Google's general Terms of Service and Google's general Privacy Policy.

go/favicon.ico0100644000000000000000000000217612412656734013623 0ustar00rootroot00000000000000 h(  TN8vvvvvvvvvvvvTN8TN8vvvvvvvvvvvvTN8TN8vvvvvvvvvvvvTN8TN8vvvvvvvvvvvvTN8TN8vvvvvvvvvvvvTN8TN8vvvvvvvvvvvvTN8TN8vvvvvϻy²zvwwwvTN8TN8vvvyttvwwvTN8TN8vwvvttvuxvTN8TN8vtȳr # #ȳrtvTN8TN8v.,'vv.,'vTN8TN8xh4ȧN.,'vv.,'ȧNue7TN8TN8ȧNHȳrȳrvvȳrȳrHȧNTN8TN8{sNHȧNȧNvvvvʿT{sNTN8{sN{sNWN1A:%NE'eW-{sN{sNgo/include0040755000000000000000000000000012412656737013046 5ustar00rootroot00000000000000go/include/README0100644000000000000000000000042312412656734013776 0ustar00rootroot00000000000000The header files under this directory are strictly internal to the gc toolchain, so please don't copy them to the system include file directory (/usr/include, /usr/local/include, etc.) Also note that they must be kept as is in $GOROOT/include, or cmd/dist will malfunction. go/include/ar.h0100644000000000000000000000365512412656734013703 0ustar00rootroot00000000000000// Inferno utils/include/ar.h // http://code.google.com/p/inferno-os/source/browse/utils/include/ar.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #define ARMAG "!\n" #define SARMAG 8 #define ARFMAG "`\n" #define SARNAME 16 struct ar_hdr { char name[SARNAME]; char date[12]; char uid[6]; char gid[6]; char mode[8]; char size[10]; char fmag[2]; }; #define SAR_HDR (SARNAME+44) go/include/bio.h0100644000000000000000000001055412412656737014051 0ustar00rootroot00000000000000/* http://code.google.com/p/inferno-os/source/browse/include/bio.h Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. Revisions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com). All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef _BIO_H_ #define _BIO_H_ 1 #if defined(__cplusplus) extern "C" { #endif #ifdef AUTOLIB AUTOLIB(bio) #endif typedef struct Biobuf Biobuf; enum { Bsize = 8*1024, Bungetsize = 4, /* space for ungetc */ Bmagic = 0x314159, Beof = -1, Bbad = -2, Binactive = 0, /* states */ Bractive, Bwactive, Bracteof, Bend }; struct Biobuf { int icount; /* neg num of bytes at eob */ int ocount; /* num of bytes at bob */ int rdline; /* num of bytes after rdline */ int runesize; /* num of bytes of last getrune */ int state; /* r/w/inactive */ int fid; /* open file */ int flag; /* magic if malloc'ed */ vlong offset; /* offset of buffer in file */ int bsize; /* size of buffer */ unsigned char* bbuf; /* pointer to beginning of buffer */ unsigned char* ebuf; /* pointer to end of buffer */ unsigned char* gbuf; /* pointer to good data in buf */ unsigned char b[Bungetsize+Bsize]; }; /* * These macros get 1-, 2-, and 4-byte integer values by reading the * next few bytes in little-endian order. */ #define BGETC(bp)\ ((bp)->icount?(int)((bp)->ebuf[(bp)->icount++]):Bgetc((bp))) #define BGETLE2(bp)\ ((bp)->icount<=-2?((bp)->icount+=2,((bp)->ebuf[(bp)->icount-2])|((bp)->ebuf[(bp)->icount-1]<<8)):Bgetle2((bp))) #define BGETLE4(bp)\ (int)((bp)->icount<=-4?((bp)->icount+=4,((bp)->ebuf[(bp)->icount-4])|((bp)->ebuf[(bp)->icount-3]<<8)|((bp)->ebuf[(bp)->icount-2]<<16)|((uint32)(bp)->ebuf[(bp)->icount-1]<<24)):Bgetle4((bp))) /* * These macros put 1-, 2-, and 4-byte integer values by writing the * next few bytes in little-endian order. */ #define BPUTC(bp,c)\ ((bp)->ocount?(bp)->ebuf[(bp)->ocount++]=(unsigned char)(c),0:Bputc((bp),(c))) #define BPUTLE2(bp,c)\ ((bp)->ocount<=-2?(bp)->ocount+=2,(bp)->ebuf[(bp)->ocount-2]=(unsigned char)(c),(bp)->ebuf[(bp)->ocount-1]=(unsigned char)(c>>8),0:Bputle2((bp),(c))) #define BPUTLE4(bp,c)\ ((bp)->ocount<=-4?(bp)->ocount+=4,(bp)->ebuf[(bp)->ocount-4]=(unsigned char)(c),(bp)->ebuf[(bp)->ocount-3]=(unsigned char)(c>>8),(bp)->ebuf[(bp)->ocount-2]=(unsigned char)(c>>16),(bp)->ebuf[(bp)->ocount-1]=(unsigned char)(c>>24),0:Bputle4((bp),(c))) #define BOFFSET(bp)\ (((bp)->state==Bractive)?\ (bp)->offset + (bp)->icount:\ (((bp)->state==Bwactive)?\ (bp)->offset + ((bp)->bsize + (bp)->ocount):\ -1)) #define BLINELEN(bp)\ (bp)->rdline #define BFILDES(bp)\ (bp)->fid int Bbuffered(Biobuf*); Biobuf* Bfdopen(int, int); int Bfildes(Biobuf*); int Bflush(Biobuf*); int Bgetc(Biobuf*); int Bgetle2(Biobuf*); int Bgetle4(Biobuf*); int Bgetd(Biobuf*, double*); long Bgetrune(Biobuf*); int Binit(Biobuf*, int, int); int Binits(Biobuf*, int, int, unsigned char*, int); int Blinelen(Biobuf*); vlong Boffset(Biobuf*); Biobuf* Bopen(char*, int); int Bprint(Biobuf*, char*, ...); int Bputc(Biobuf*, int); int Bputle2(Biobuf*, int); int Bputle4(Biobuf*, int); int Bputrune(Biobuf*, long); void* Brdline(Biobuf*, int); char* Brdstr(Biobuf*, int, int); long Bread(Biobuf*, void*, long); vlong Bseek(Biobuf*, vlong, int); int Bterm(Biobuf*); int Bungetc(Biobuf*); int Bungetrune(Biobuf*); long Bwrite(Biobuf*, void*, long); int Bvprint(Biobuf*, char*, va_list); #if defined(__cplusplus) } #endif #endif go/include/fmt.h0100644000000000000000000000751612412656734014067 0ustar00rootroot00000000000000#ifndef _FMT_H_ #define _FMT_H_ 1 #if defined(__cplusplus) extern "C" { #endif /* * The authors of this software are Rob Pike and Ken Thompson. * Copyright (c) 2002 by Lucent Technologies. * Permission to use, copy, modify, and distribute this software for any * purpose without fee is hereby granted, provided that this entire notice * is included in all copies of any software which is or includes a copy * or modification of this software and in all copies of the supporting * documentation for such software. * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. */ #include #include typedef struct Fmt Fmt; struct Fmt{ unsigned char runes; /* output buffer is runes or chars? */ void *start; /* of buffer */ void *to; /* current place in the buffer */ void *stop; /* end of the buffer; overwritten if flush fails */ int (*flush)(Fmt *); /* called when to == stop */ void *farg; /* to make flush a closure */ int nfmt; /* num chars formatted so far */ va_list args; /* args passed to dofmt */ Rune r; /* % format Rune */ int width; int prec; unsigned long flags; char *decimal; /* decimal point; cannot be "" */ /* For %'d */ char *thousands; /* separator for thousands */ /* * Each char is an integer indicating #digits before next separator. Values: * \xFF: no more grouping (or \x7F; defined to be CHAR_MAX in POSIX) * \x00: repeat previous indefinitely * \x**: count that many */ char *grouping; /* descriptor of separator placement */ }; enum{ FmtWidth = 1, FmtLeft = FmtWidth << 1, FmtPrec = FmtLeft << 1, FmtSharp = FmtPrec << 1, FmtSpace = FmtSharp << 1, FmtSign = FmtSpace << 1, FmtApost = FmtSign << 1, FmtZero = FmtApost << 1, FmtUnsigned = FmtZero << 1, FmtShort = FmtUnsigned << 1, FmtLong = FmtShort << 1, FmtVLong = FmtLong << 1, FmtComma = FmtVLong << 1, FmtByte = FmtComma << 1, FmtLDouble = FmtByte << 1, FmtFlag = FmtLDouble << 1 }; extern int (*fmtdoquote)(int); /* Edit .+1,/^$/ | cfn $PLAN9/src/lib9/fmt/?*.c | grep -v static |grep -v __ */ int dofmt(Fmt *f, char *fmt); int dorfmt(Fmt *f, const Rune *fmt); double fmtcharstod(int(*f)(void*), void *vp); int fmtfdflush(Fmt *f); int fmtfdinit(Fmt *f, int fd, char *buf, int size); int fmtinstall(int c, int (*f)(Fmt*)); int fmtnullinit(Fmt*); void fmtlocaleinit(Fmt*, char*, char*, char*); int fmtprint(Fmt *f, char *fmt, ...); int fmtrune(Fmt *f, int r); int fmtrunestrcpy(Fmt *f, Rune *s); int fmtstrcpy(Fmt *f, char *s); char* fmtstrflush(Fmt *f); int fmtstrinit(Fmt *f); double fmtstrtod(const char *as, char **aas); int fmtvprint(Fmt *f, char *fmt, va_list args); int fprint(int fd, char *fmt, ...); int print(char *fmt, ...); void quotefmtinstall(void); int quoterunestrfmt(Fmt *f); int quotestrfmt(Fmt *f); Rune* runefmtstrflush(Fmt *f); int runefmtstrinit(Fmt *f); Rune* runeseprint(Rune *buf, Rune *e, char *fmt, ...); Rune* runesmprint(char *fmt, ...); int runesnprint(Rune *buf, int len, char *fmt, ...); int runesprint(Rune *buf, char *fmt, ...); Rune* runevseprint(Rune *buf, Rune *e, char *fmt, va_list args); Rune* runevsmprint(char *fmt, va_list args); int runevsnprint(Rune *buf, int len, char *fmt, va_list args); char* seprint(char *buf, char *e, char *fmt, ...); char* smprint(char *fmt, ...); int snprint(char *buf, int len, char *fmt, ...); int sprint(char *buf, char *fmt, ...); int vfprint(int fd, char *fmt, va_list args); char* vseprint(char *buf, char *e, char *fmt, va_list args); char* vsmprint(char *fmt, va_list args); int vsnprint(char *buf, int len, char *fmt, va_list args); #if defined(__cplusplus) } #endif #endif go/include/libc.h0100644000000000000000000002726012412656734014210 0ustar00rootroot00000000000000/* Derived from Inferno include/kern.h and Plan 9 from User Space include/libc.h http://code.google.com/p/inferno-os/source/browse/include/kern.h http://code.swtch.com/plan9port/src/tip/include/libc.h Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. Revisions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com). All rights reserved. Portions Copyright © 2001-2007 Russ Cox. All rights reserved. Portions Copyright © 2009 The Go Authors. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* * Lib9 is miscellany from the Plan 9 C library that doesn't * fit into libutf or into libfmt, but is still missing from traditional * Unix C libraries. */ #ifndef _LIBC_H_ #define _LIBC_H_ 1 #if defined(__cplusplus) extern "C" { #endif #include #include /* * Begin trimmed down usual libc.h */ #ifndef nil #define nil ((void*)0) #endif #define nelem(x) (sizeof(x)/sizeof((x)[0])) #ifndef offsetof #define offsetof(s, m) (ulong)(&(((s*)0)->m)) #endif extern char* strecpy(char*, char*, char*); extern int tokenize(char*, char**, int); extern double p9cputime(void); #ifndef NOPLAN9DEFINES #define cputime p9cputime #endif /* * one-of-a-kind */ enum { PNPROC = 1, PNGROUP = 2 }; int isInf(double, int); extern int p9atoi(char*); extern long p9atol(char*); extern vlong p9atoll(char*); extern double fmtcharstod(int(*)(void*), void*); extern char* cleanname(char*); extern int exitcode(char*); extern void exits(char*); extern double frexp(double, int*); extern char* p9getenv(char*); extern int p9putenv(char*, char*); extern int getfields(char*, char**, int, int, char*); extern int gettokens(char *, char **, int, char *); extern char* p9getwd(char*, int); extern void p9longjmp(p9jmp_buf, int); extern void p9notejmp(void*, p9jmp_buf, int); extern void perror(const char*); extern int postnote(int, int, char *); extern double p9pow10(int); extern char* p9ctime(long); #define p9setjmp(b) sigsetjmp((void*)(b), 1) extern void sysfatal(char*, ...); #ifndef NOPLAN9DEFINES #define atoi p9atoi #define atol p9atol #define atoll p9atoll #define getenv p9getenv #define getwd p9getwd #define longjmp p9longjmp #undef setjmp #define setjmp p9setjmp #define putenv p9putenv #define notejmp p9notejmp #define jmp_buf p9jmp_buf #define pow10 p9pow10 #undef strtod #define strtod fmtstrtod #define charstod fmtcharstod #define ctime p9ctime #endif /* * system calls * */ #define STATMAX 65535U /* max length of machine-independent stat structure */ #define DIRMAX (sizeof(Dir)+STATMAX) /* max length of Dir structure */ #define ERRMAX 128 /* max length of error string */ #define MORDER 0x0003 /* mask for bits defining order of mounting */ #define MREPL 0x0000 /* mount replaces object */ #define MBEFORE 0x0001 /* mount goes before others in union directory */ #define MAFTER 0x0002 /* mount goes after others in union directory */ #define MCREATE 0x0004 /* permit creation in mounted directory */ #define MCACHE 0x0010 /* cache some data */ #define MMASK 0x0017 /* all bits on */ #define OREAD 0 /* open for read */ #define OWRITE 1 /* write */ #define ORDWR 2 /* read and write */ #define OEXEC 3 /* execute, == read but check execute permission */ #define OTRUNC 16 /* or'ed in (except for exec), truncate file first */ #define ORCLOSE 64 /* or'ed in, remove on close */ #define ODIRECT 128 /* or'ed in, direct access */ #define OEXCL 0x1000 /* or'ed in, exclusive use (create only) */ #define OAPPEND 0x4000 /* or'ed in, append only */ #define AEXIST 0 /* accessible: exists */ #define AEXEC 1 /* execute access */ #define AWRITE 2 /* write access */ #define AREAD 4 /* read access */ /* Segattch */ #define SG_RONLY 0040 /* read only */ #define SG_CEXEC 0100 /* detach on exec */ #define NCONT 0 /* continue after note */ #define NDFLT 1 /* terminate after note */ #define NSAVE 2 /* clear note but hold state */ #define NRSTR 3 /* restore saved state */ /* bits in Qid.type */ #define QTDIR 0x80 /* type bit for directories */ #define QTAPPEND 0x40 /* type bit for append only files */ #define QTEXCL 0x20 /* type bit for exclusive use files */ #define QTMOUNT 0x10 /* type bit for mounted channel */ #define QTAUTH 0x08 /* type bit for authentication file */ #define QTTMP 0x04 /* type bit for non-backed-up file */ #define QTSYMLINK 0x02 /* type bit for symbolic link */ #define QTFILE 0x00 /* type bits for plain file */ /* bits in Dir.mode */ #define DMDIR 0x80000000 /* mode bit for directories */ #define DMAPPEND 0x40000000 /* mode bit for append only files */ #define DMEXCL 0x20000000 /* mode bit for exclusive use files */ #define DMMOUNT 0x10000000 /* mode bit for mounted channel */ #define DMAUTH 0x08000000 /* mode bit for authentication file */ #define DMTMP 0x04000000 /* mode bit for non-backed-up file */ #define DMSYMLINK 0x02000000 /* mode bit for symbolic link (Unix, 9P2000.u) */ #define DMDEVICE 0x00800000 /* mode bit for device file (Unix, 9P2000.u) */ #define DMNAMEDPIPE 0x00200000 /* mode bit for named pipe (Unix, 9P2000.u) */ #define DMSOCKET 0x00100000 /* mode bit for socket (Unix, 9P2000.u) */ #define DMSETUID 0x00080000 /* mode bit for setuid (Unix, 9P2000.u) */ #define DMSETGID 0x00040000 /* mode bit for setgid (Unix, 9P2000.u) */ #define DMREAD 0x4 /* mode bit for read permission */ #define DMWRITE 0x2 /* mode bit for write permission */ #define DMEXEC 0x1 /* mode bit for execute permission */ #ifdef RFMEM /* FreeBSD, OpenBSD, NetBSD */ #undef RFFDG #undef RFNOTEG #undef RFPROC #undef RFMEM #undef RFNOWAIT #undef RFCFDG #undef RFNAMEG #undef RFENVG #undef RFCENVG #undef RFCFDG #undef RFCNAMEG #endif enum { RFNAMEG = (1<<0), RFENVG = (1<<1), RFFDG = (1<<2), RFNOTEG = (1<<3), RFPROC = (1<<4), RFMEM = (1<<5), RFNOWAIT = (1<<6), RFCNAMEG = (1<<10), RFCENVG = (1<<11), RFCFDG = (1<<12) /* RFREND = (1<<13), */ /* RFNOMNT = (1<<14) */ }; typedef struct Qid { uvlong path; ulong vers; uchar type; } Qid; typedef struct Dir { /* system-modified data */ ushort type; /* server type */ uint dev; /* server subtype */ /* file data */ Qid qid; /* unique id from server */ ulong mode; /* permissions */ ulong atime; /* last read time */ ulong mtime; /* last write time */ vlong length; /* file length */ char *name; /* last element of path */ char *uid; /* owner name */ char *gid; /* group name */ char *muid; /* last modifier name */ /* 9P2000.u extensions */ uint uidnum; /* numeric uid */ uint gidnum; /* numeric gid */ uint muidnum; /* numeric muid */ char *ext; /* extended info */ } Dir; typedef struct Waitmsg { int pid; /* of loved one */ ulong time[3]; /* of loved one & descendants */ char *msg; } Waitmsg; extern void _exits(char*); extern void abort(void); extern long p9alarm(ulong); extern int await(char*, int); extern int awaitfor(int, char*, int); extern int awaitnohang(char*, int); extern int p9chdir(char*); extern int close(int); extern int p9create(char*, int, ulong); extern int p9dup(int, int); extern int errstr(char*, uint); extern int p9exec(char*, char*[]); extern int p9execl(char*, ...); extern int p9rfork(int); extern int noted(int); extern int notify(void(*)(void*, char*)); extern int noteenable(char*); extern int notedisable(char*); extern int notifyon(char*); extern int notifyoff(char*); extern int p9open(char*, int); extern int fd2path(int, char*, int); extern long readn(int, void*, long); extern int remove(const char*); extern vlong p9seek(int, vlong, int); extern int p9sleep(long); extern Waitmsg* p9wait(void); extern Waitmsg* p9waitfor(int); extern Waitmsg* waitnohang(void); extern int p9waitpid(void); extern ulong rendezvous(ulong, ulong); extern char* getgoos(void); extern char* getgoarch(void); extern char* getgoroot(void); extern char* getgoversion(void); extern char* getgoarm(void); extern char* getgo386(void); extern char* getgoextlinkenabled(void); extern char* mktempdir(void); extern void removeall(char*); extern int runcmd(char**); extern void flagcount(char*, char*, int*); extern void flagint32(char*, char*, int32*); extern void flagint64(char*, char*, int64*); extern void flagstr(char*, char*, char**); extern void flagparse(int*, char***, void (*usage)(void)); extern void flagfn0(char*, char*, void(*fn)(void)); extern void flagfn1(char*, char*, void(*fn)(char*)); extern void flagfn2(char*, char*, void(*fn)(char*, char*)); extern void flagprint(int); #ifdef _WIN32 #if !defined(_WIN64) && !defined(__MINGW64_VERSION_MAJOR) struct timespec { int tv_sec; long tv_nsec; }; #define execv(prog, argv) execv(prog, (const char* const*)(argv)) #define execvp(prog, argv) execvp(prog, (const char**)(argv)) #endif extern int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); extern int fork(void); extern int pread(int fd, void *buf, int n, int off); extern int pwrite(int fd, void *buf, int n, int off); #undef getwd #define getwd(s, ns) getcwd(s, ns) #undef lseek #define lseek(fd, n, base) _lseeki64(fd, n, base) #define mkdir(path, perm) mkdir(path) #define pipe(fd) _pipe(fd, 512, O_BINARY) #else #define O_BINARY 0 #endif #ifndef NOPLAN9DEFINES #define alarm p9alarm #define dup p9dup #define exec p9exec #define execl p9execl #define seek p9seek #define sleep p9sleep #define wait p9wait #define waitpid p9waitpid #define rfork p9rfork #define create p9create #undef open #define open p9open #define waitfor p9waitfor #endif extern Dir* dirstat(char*); extern Dir* dirfstat(int); extern int dirwstat(char*, Dir*); extern int dirfwstat(int, Dir*); extern void nulldir(Dir*); extern long dirreadall(int, Dir**); extern void rerrstr(char*, uint); extern char* sysname(void); extern void werrstr(char*, ...); extern char* getns(void); extern char* get9root(void); extern char* unsharp(char*); /* external names that we don't want to step on */ #ifndef NOPLAN9DEFINES #define main p9main #endif /* compiler directives on plan 9 */ #define SET(x) ((x)=0) #define USED(x) if(x){}else{} #ifdef __GNUC__ # if __GNUC__ >= 3 # undef USED # define USED(x) ((void)(x)) # endif #endif /* command line */ extern char *argv0; extern void __fixargv0(void); #define ARGBEGIN for((void)(argv0?0:(argv0=(__fixargv0(),*argv))),argv++,argc--;\ argv[0] && argv[0][0]=='-' && argv[0][1];\ argc--, argv++) {\ char *_args, *_argt;\ Rune _argc;\ _args = &argv[0][1];\ if(_args[0]=='-' && _args[1]==0){\ argc--; argv++; break;\ }\ _argc = 0;\ while(*_args && (_args += chartorune(&_argc, _args)))\ switch(_argc) #define ARGEND SET(_argt);USED(_argt);USED(_argc);USED(_args);}USED(argv);USED(argc); #define ARGF() (_argt=_args, _args="",\ (*_argt? _argt: argv[1]? (argc--, *++argv): 0)) #define EARGF(x) (_argt=_args, _args="",\ (*_argt? _argt: argv[1]? (argc--, *++argv): ((x), abort(), (char*)0))) #define ARGC() _argc #if defined(__cplusplus) } #endif #endif /* _LIB9_H_ */ go/include/link.h0100644000000000000000000003202612412656737014233 0ustar00rootroot00000000000000// Derived from Inferno utils/6l/l.h and related files. // http://code.google.com/p/inferno-os/source/browse/utils/6l/l.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. typedef struct Addr Addr; typedef struct Prog Prog; typedef struct LSym LSym; typedef struct Reloc Reloc; typedef struct Auto Auto; typedef struct Hist Hist; typedef struct Link Link; typedef struct Plist Plist; typedef struct LinkArch LinkArch; typedef struct Library Library; typedef struct Pcln Pcln; typedef struct Pcdata Pcdata; typedef struct Pciter Pciter; // prevent incompatible type signatures between liblink and 8l on Plan 9 #pragma incomplete struct Node struct Addr { vlong offset; union { char sval[8]; float64 dval; Prog* branch; // for 5g, 6g, 8g } u; LSym* sym; LSym* gotype; short type; uint8 index; int8 scale; int8 reg; // for 5l int8 name; // for 5l int8 class; // for 5l uint8 etype; // for 5g, 6g, 8g int32 offset2; // for 5l, 8l struct Node* node; // for 5g, 6g, 8g int64 width; // for 5g, 6g, 8g }; struct Reloc { int32 off; uchar siz; uchar done; int32 type; int64 add; int64 xadd; LSym* sym; LSym* xsym; }; struct Prog { vlong pc; int32 lineno; Prog* link; short as; uchar reg; // arm only uchar scond; // arm only Addr from; Addr to; // for 5g, 6g, 8g internal use void* opt; // for 5l, 6l, 8l internal use Prog* forwd; Prog* pcond; Prog* comefrom; // 6l, 8l Prog* pcrel; // 5l int32 spadj; uchar mark; uchar back; // 6l, 8l char ft; /* 6l, 8l oclass cache */ char tt; // 6l, 8l uchar optab; // 5l uchar isize; // 6l, 8l char width; /* fake for DATA */ char mode; /* 16, 32, or 64 in 6l, 8l; internal use in 5g, 6g, 8g */ }; // prevent incompatible type signatures between liblink and 8l on Plan 9 #pragma incomplete struct Section struct LSym { char* name; char* extname; // name used in external object files short type; short version; uchar dupok; uchar external; uchar nosplit; uchar reachable; uchar cgoexport; uchar special; uchar stkcheck; uchar hide; uchar leaf; // arm only uchar fnptr; // arm only uchar seenglobl; uchar onlist; // on the textp or datap lists int16 symid; // for writing .5/.6/.8 files int32 dynid; int32 sig; int32 plt; int32 got; int32 align; // if non-zero, required alignment in bytes int32 elfsym; int32 args; // size of stack frame incoming arguments area int32 locals; // size of stack frame locals area (arm only?) vlong value; vlong size; LSym* hash; // in hash table LSym* allsym; // in all symbol list LSym* next; // in text or data list LSym* sub; // in SSUB list LSym* outer; // container of sub LSym* gotype; LSym* reachparent; LSym* queue; char* file; char* dynimplib; char* dynimpvers; struct Section* sect; // STEXT Auto* autom; Prog* text; Prog* etext; Pcln* pcln; // SDATA, SBSS uchar* p; int32 np; int32 maxp; Reloc* r; int32 nr; int32 maxr; }; // LSym.type enum { Sxxx, /* order here is order in output file */ /* readonly, executable */ STEXT, SELFRXSECT, /* readonly, non-executable */ STYPE, SSTRING, SGOSTRING, SGOFUNC, SRODATA, SFUNCTAB, STYPELINK, SSYMTAB, // TODO: move to unmapped section SPCLNTAB, SELFROSECT, /* writable, non-executable */ SMACHOPLT, SELFSECT, SMACHO, /* Mach-O __nl_symbol_ptr */ SMACHOGOT, SNOPTRDATA, SINITARR, SDATA, SWINDOWS, SBSS, SNOPTRBSS, STLSBSS, /* not mapped */ SXREF, SMACHOSYMSTR, SMACHOSYMTAB, SMACHOINDIRECTPLT, SMACHOINDIRECTGOT, SFILE, SFILEPATH, SCONST, SDYNIMPORT, SHOSTOBJ, SSUB = 1<<8, /* sub-symbol, linked from parent via ->sub list */ SMASK = SSUB - 1, SHIDDEN = 1<<9, // hidden or local symbol }; // Reloc.type enum { R_ADDR = 1, R_SIZE, R_CALL, // relocation for direct PC-relative call R_CALLARM, // relocation for ARM direct call R_CALLIND, // marker for indirect call (no actual relocating necessary) R_CONST, R_PCREL, R_TLS, R_TLS_LE, // TLS local exec offset from TLS segment register R_TLS_IE, // TLS initial exec offset from TLS base pointer R_GOTOFF, R_PLT0, R_PLT1, R_PLT2, R_USEFIELD, }; // Auto.type enum { A_AUTO = 1, A_PARAM, }; struct Auto { LSym* asym; Auto* link; int32 aoffset; int16 type; LSym* gotype; }; enum { LINKHASH = 100003, }; struct Hist { Hist* link; char* name; int32 line; int32 offset; }; struct Plist { LSym* name; Prog* firstpc; int recur; Plist* link; }; struct Library { char *objref; // object where we found the reference char *srcref; // src file where we found the reference char *file; // object file char *pkg; // import path }; struct Pcdata { uchar *p; int n; int m; }; struct Pcln { Pcdata pcsp; Pcdata pcfile; Pcdata pcline; Pcdata *pcdata; int npcdata; LSym **funcdata; int64 *funcdataoff; int nfuncdata; LSym **file; int nfile; int mfile; LSym *lastfile; int lastindex; }; // Pcdata iterator. // for(pciterinit(ctxt, &it, &pcd); !it.done; pciternext(&it)) { it.value holds in [it.pc, it.nextpc) } struct Pciter { Pcdata d; uchar *p; uint32 pc; uint32 nextpc; uint32 pcscale; int32 value; int start; int done; }; void pciterinit(Link*, Pciter*, Pcdata*); void pciternext(Pciter*); // symbol version, incremented each time a file is loaded. // version==1 is reserved for savehist. enum { HistVersion = 1, }; // Link holds the context for writing object code from a compiler // to be linker input or for reading that input into the linker. struct Link { int32 thechar; // '5' (arm), '6' (amd64), etc. char* thestring; // full name of architecture ("arm", "amd64", ..) int32 goarm; // for arm only, GOARM setting int headtype; LinkArch* arch; int32 (*ignore)(char*); // do not emit names satisfying this function int32 debugasm; // -S flag in compiler int32 debugline; // -L flag in compiler int32 debughist; // -O flag in linker int32 debugread; // -W flag in linker int32 debugvlog; // -v flag in linker int32 debugstack; // -K flag in linker int32 debugzerostack; // -Z flag in linker int32 debugdivmod; // -M flag in 5l int32 debugfloat; // -F flag in 5l int32 debugpcln; // -O flag in linker int32 flag_shared; // -shared flag in linker int32 iself; Biobuf* bso; // for -v flag char* pathname; int32 windows; char* trimpath; char* goroot; char* goroot_final; // hash table of all symbols LSym* hash[LINKHASH]; LSym* allsym; int32 nsymbol; // file-line history Hist* hist; Hist* ehist; // all programs Plist* plist; Plist* plast; // code generation LSym* sym_div; LSym* sym_divu; LSym* sym_mod; LSym* sym_modu; LSym* symmorestack[20]; LSym* gmsym; LSym* plan9tos; Prog* curp; Prog* printp; Prog* blitrl; Prog* elitrl; int rexflag; int rep; // for nacl int repn; // for nacl int lock; // for nacl int asmode; uchar* andptr; uchar and[100]; int32 instoffset; int32 autosize; int32 armsize; // for reading input files (during linker) vlong pc; char** libdir; int32 nlibdir; int32 maxlibdir; Library* library; int libraryp; int nlibrary; int tlsoffset; void (*diag)(char*, ...); int mode; Auto* curauto; Auto* curhist; LSym* cursym; int version; LSym* textp; LSym* etextp; int32 histdepth; int32 nhistfile; LSym* filesyms; }; // LinkArch is the definition of a single architecture. struct LinkArch { char* name; // "arm", "amd64", and so on int thechar; // '5', '6', and so on void (*addstacksplit)(Link*, LSym*); void (*assemble)(Link*, LSym*); int (*datasize)(Prog*); void (*follow)(Link*, LSym*); int (*iscall)(Prog*); int (*isdata)(Prog*); Prog* (*prg)(void); void (*progedit)(Link*, Prog*); void (*settextflag)(Prog*, int); int (*symtype)(Addr*); int (*textflag)(Prog*); int minlc; int ptrsize; int regsize; // TODO: Give these the same values on all systems. int D_ADDR; int D_AUTO; int D_BRANCH; int D_CONST; int D_EXTERN; int D_FCONST; int D_NONE; int D_PARAM; int D_SCONST; int D_STATIC; int ACALL; int ADATA; int AEND; int AFUNCDATA; int AGLOBL; int AJMP; int ANOP; int APCDATA; int ARET; int ATEXT; int ATYPE; int AUSEFIELD; }; /* executable header types */ enum { Hunknown = 0, Hdarwin, Hdragonfly, Helf, Hfreebsd, Hlinux, Hnacl, Hnetbsd, Hopenbsd, Hplan9, Hsolaris, Hwindows, }; enum { LinkAuto = 0, LinkInternal, LinkExternal, }; extern uchar fnuxi8[8]; extern uchar fnuxi4[4]; extern uchar inuxi1[1]; extern uchar inuxi2[2]; extern uchar inuxi4[4]; extern uchar inuxi8[8]; // asm5.c void span5(Link *ctxt, LSym *s); int chipfloat5(Link *ctxt, float64 e); int chipzero5(Link *ctxt, float64 e); // asm6.c void span6(Link *ctxt, LSym *s); // asm8.c void span8(Link *ctxt, LSym *s); // data.c vlong addaddr(Link *ctxt, LSym *s, LSym *t); vlong addaddrplus(Link *ctxt, LSym *s, LSym *t, vlong add); vlong addaddrplus4(Link *ctxt, LSym *s, LSym *t, vlong add); vlong addpcrelplus(Link *ctxt, LSym *s, LSym *t, vlong add); Reloc* addrel(LSym *s); vlong addsize(Link *ctxt, LSym *s, LSym *t); vlong adduint16(Link *ctxt, LSym *s, uint16 v); vlong adduint32(Link *ctxt, LSym *s, uint32 v); vlong adduint64(Link *ctxt, LSym *s, uint64 v); vlong adduint8(Link *ctxt, LSym *s, uint8 v); vlong adduintxx(Link *ctxt, LSym *s, uint64 v, int wid); void mangle(char *file); void savedata(Link *ctxt, LSym *s, Prog *p, char *pn); vlong setaddr(Link *ctxt, LSym *s, vlong off, LSym *t); vlong setaddrplus(Link *ctxt, LSym *s, vlong off, LSym *t, vlong add); vlong setuint16(Link *ctxt, LSym *s, vlong r, uint16 v); vlong setuint32(Link *ctxt, LSym *s, vlong r, uint32 v); vlong setuint64(Link *ctxt, LSym *s, vlong r, uint64 v); vlong setuint8(Link *ctxt, LSym *s, vlong r, uint8 v); vlong setuintxx(Link *ctxt, LSym *s, vlong off, uint64 v, vlong wid); void symgrow(Link *ctxt, LSym *s, vlong siz); // go.c void double2ieee(uint64 *ieee, double native); void* emallocz(long n); void* erealloc(void *p, long n); char* estrdup(char *p); char* expandpkg(char *t0, char *pkg); // ld.c void addhist(Link *ctxt, int32 line, int type); void addlib(Link *ctxt, char *src, char *obj, char *path); void addlibpath(Link *ctxt, char *srcref, char *objref, char *file, char *pkg); void collapsefrog(Link *ctxt, LSym *s); void copyhistfrog(Link *ctxt, char *buf, int nbuf); int find1(int32 l, int c); void linkgetline(Link *ctxt, int32 line, LSym **f, int32 *l); void histtoauto(Link *ctxt); void mkfwd(LSym*); void nuxiinit(void); void savehist(Link *ctxt, int32 line, int32 off); Prog* copyp(Link*, Prog*); Prog* appendp(Link*, Prog*); vlong atolwhex(char*); // list[568].c void listinit5(void); void listinit6(void); void listinit8(void); // obj.c int linklinefmt(Link *ctxt, Fmt *fp); void linklinehist(Link *ctxt, int lineno, char *f, int offset); Plist* linknewplist(Link *ctxt); void linkprfile(Link *ctxt, int32 l); // objfile.c void ldobjfile(Link *ctxt, Biobuf *b, char *pkg, int64 len, char *path); void writeobj(Link *ctxt, Biobuf *b); // pass.c Prog* brchain(Link *ctxt, Prog *p); Prog* brloop(Link *ctxt, Prog *p); void linkpatch(Link *ctxt, LSym *sym); // pcln.c void linkpcln(Link*, LSym*); // sym.c LSym* linklookup(Link *ctxt, char *name, int v); Link* linknew(LinkArch*); LSym* linknewsym(Link *ctxt, char *symb, int v); LSym* linkrlookup(Link *ctxt, char *name, int v); int linksymfmt(Fmt *f); int headtype(char*); char* headstr(int); extern char* anames5[]; extern char* anames6[]; extern char* anames8[]; extern LinkArch link386; extern LinkArch linkamd64; extern LinkArch linkamd64p32; extern LinkArch linkarm; #pragma varargck type "A" int #pragma varargck type "D" Addr* #pragma varargck type "lD" Addr* #pragma varargck type "P" Prog* #pragma varargck type "R" int // TODO(ality): remove this workaround. // It's here because Pconv in liblink/list?.c references %L. #pragma varargck type "L" int32 go/include/plan90040755000000000000000000000000012412656734014066 5ustar00rootroot00000000000000go/include/plan9/3860040755000000000000000000000000012412656734014406 5ustar00rootroot00000000000000go/include/plan9/386/u.h0100644000000000000000000000065012412656734015100 0ustar00rootroot00000000000000// 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. #include "/386/include/u.h" typedef char int8; typedef uchar uint8; typedef short int16; typedef ushort uint16; typedef int int32; typedef uint uint32; typedef vlong int64; typedef uvlong uint64; typedef int intptr; typedef float float32; typedef double float64; go/include/plan9/amd640040755000000000000000000000000012412656734015001 5ustar00rootroot00000000000000go/include/plan9/amd64/u.h0100644000000000000000000000065412412656734015477 0ustar00rootroot00000000000000// 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. #include "/amd64/include/u.h" typedef char int8; typedef uchar uint8; typedef short int16; typedef ushort uint16; typedef int int32; typedef uint uint32; typedef vlong int64; typedef uvlong uint64; typedef vlong intptr; typedef float float32; typedef double float64; go/include/plan9/arm0040755000000000000000000000000012412656734014645 5ustar00rootroot00000000000000go/include/plan9/arm/u.h0100644000000000000000000000057112412656734015341 0ustar00rootroot00000000000000// 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. #include "/arm/include/u.h" typedef char int8; typedef uchar uint8; typedef short int16; typedef ushort uint16; typedef int int32; typedef uint uint32; typedef vlong int64; typedef uvlong uint64; typedef int intptr; go/include/plan9/bio.h0100644000000000000000000000034512412656734015066 0ustar00rootroot00000000000000// Copyright 2013 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. #include "../bio.h" #define fmtcharstod charstod #define lseek seek go/include/plan9/errno.h0100644000000000000000000000030012412656734015431 0ustar00rootroot00000000000000// 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. int errno; #define ERANGE 1001 go/include/plan9/fmt.h0100644000000000000000000000376612412656734015115 0ustar00rootroot00000000000000// 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. #include "../fmt.h" #pragma varargck argpos fmtprint 2 #pragma varargck argpos fprint 2 #pragma varargck argpos print 1 #pragma varargck argpos runeseprint 3 #pragma varargck argpos runesmprint 1 #pragma varargck argpos runesnprint 3 #pragma varargck argpos runesprint 2 #pragma varargck argpos seprint 3 #pragma varargck argpos smprint 1 #pragma varargck argpos snprint 3 #pragma varargck argpos sprint 2 #pragma varargck type "lld" vlong #pragma varargck type "llo" vlong #pragma varargck type "llx" vlong #pragma varargck type "llb" vlong #pragma varargck type "lld" uvlong #pragma varargck type "llo" uvlong #pragma varargck type "llx" uvlong #pragma varargck type "llb" uvlong #pragma varargck type "ld" long #pragma varargck type "lo" long #pragma varargck type "lx" long #pragma varargck type "lb" long #pragma varargck type "ld" ulong #pragma varargck type "lo" ulong #pragma varargck type "lx" ulong #pragma varargck type "lb" ulong #pragma varargck type "d" int #pragma varargck type "o" int #pragma varargck type "x" int #pragma varargck type "c" int #pragma varargck type "C" int #pragma varargck type "b" int #pragma varargck type "d" uint #pragma varargck type "x" uint #pragma varargck type "c" uint #pragma varargck type "C" uint #pragma varargck type "b" uint #pragma varargck type "f" double #pragma varargck type "e" double #pragma varargck type "g" double #pragma varargck type "s" char* #pragma varargck type "q" char* #pragma varargck type "S" Rune* #pragma varargck type "Q" Rune* #pragma varargck type "r" void #pragma varargck type "%" void #pragma varargck type "n" int* #pragma varargck type "p" uintptr #pragma varargck type "p" void* #pragma varargck flag ',' #pragma varargck flag ' ' #pragma varargck flag 'h' #pragma varargck type "<" void* #pragma varargck type "[" void* #pragma varargck type "H" void* #pragma varargck type "lH" void* go/include/plan9/libc.h0100644000000000000000000000174012412656734015226 0ustar00rootroot00000000000000// 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. #include "/sys/include/ctype.h" #include "fmt.h" #include "utf.h" #include "libc_plan9.h" char* getgoos(void); char* getgoarch(void); char* getgoroot(void); char* getgoversion(void); char* getgoarm(void); char* getgo386(void); char* getgoextlinkenabled(void); void flagcount(char*, char*, int*); void flagint32(char*, char*, int32*); void flagint64(char*, char*, int64*); void flagstr(char*, char*, char**); void flagparse(int*, char***, void (*usage)(void)); void flagfn0(char*, char*, void(*fn)(void)); void flagfn1(char*, char*, void(*fn)(char*)); void flagfn2(char*, char*, void(*fn)(char*, char*)); void flagprint(int); // The libraries use size_t to avoid -Wconversion warnings from GCC // when calling standard library functions like memcpy. typedef unsigned long size_t; // math.h #define HUGE_VAL 1.79769313486231e+308 go/include/plan9/link.h0100644000000000000000000000026512412656734015253 0ustar00rootroot00000000000000// Copyright 2013 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. #include "../link.h" go/include/plan9/mklibc.rc0100755000000000000000000000027612412656734015741 0ustar00rootroot00000000000000#!/bin/rc pattern='/umuldiv/d /rune routines/,/^\/\*/d /print routines/,/^\/\*/d /error string for/,/^\/\*/d' sed -e $pattern /sys/include/libc.h | awk '/^enum/ && !n++, /^};/ {next}1' go/include/plan9/stdarg.h0100644000000000000000000000023712412656734015601 0ustar00rootroot00000000000000// 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. go/include/plan9/utf.h0100644000000000000000000000026412412656734015113 0ustar00rootroot00000000000000// 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. #include "../utf.h" go/include/u.h0100644000000000000000000001321012412656734013531 0ustar00rootroot00000000000000/* Plan 9 from User Space include/u.h http://code.swtch.com/plan9port/src/tip/include/u.h Copyright 2001-2007 Russ Cox. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef _U_H_ #define _U_H_ 1 #if defined(__cplusplus) extern "C" { #endif #define __BSD_VISIBLE 1 /* FreeBSD 5.x */ #if defined(__sun__) # define __EXTENSIONS__ 1 /* SunOS */ # if defined(__SunOS5_6__) || defined(__SunOS5_7__) || defined(__SunOS5_8__) /* NOT USING #define __MAKECONTEXT_V2_SOURCE 1 / * SunOS */ # else # define __MAKECONTEXT_V2_SOURCE 1 # endif #endif #define _BSD_SOURCE 1 #define _NETBSD_SOURCE 1 /* NetBSD */ #define _DEFAULT_SOURCE 1 /* glibc > 2.19 */ #define _SVID_SOURCE 1 #if !defined(__APPLE__) && !defined(__OpenBSD__) # define _XOPEN_SOURCE 1000 # define _XOPEN_SOURCE_EXTENDED 1 #endif #if defined(__FreeBSD__) # include /* for strtoll */ # undef __ISO_C_VISIBLE # define __ISO_C_VISIBLE 1999 # undef __LONG_LONG_SUPPORTED # define __LONG_LONG_SUPPORTED #endif #define _LARGEFILE64_SOURCE 1 #define _FILE_OFFSET_BITS 64 #include #include #include #include #include #include #include #include #include #include #include /* for tolower */ #include #include /* * OS-specific crap */ #define _NEEDUCHAR 1 #define _NEEDUSHORT 1 #define _NEEDUINT 1 #define _NEEDULONG 1 #ifdef _WIN32 typedef jmp_buf sigjmp_buf; #endif typedef long p9jmp_buf[sizeof(sigjmp_buf)/sizeof(long)]; #if defined(__linux__) # include # if defined(__Linux26__) # include # define PLAN9PORT_USING_PTHREADS 1 # endif # if defined(__USE_MISC) # undef _NEEDUSHORT # undef _NEEDUINT # undef _NEEDULONG # endif #elif defined(__sun__) # include # include # define PLAN9PORT_USING_PTHREADS 1 # undef _NEEDUSHORT # undef _NEEDUINT # undef _NEEDULONG # define nil 0 /* no cast to void* */ #elif defined(__FreeBSD__) # include # include # if __FreeBSD_version >= 500000 # define PLAN9PORT_USING_PTHREADS 1 # include # endif # if !defined(_POSIX_SOURCE) # undef _NEEDUSHORT # undef _NEEDUINT # endif #elif defined(__APPLE__) # include # include # define PLAN9PORT_USING_PTHREADS 1 # if __GNUC__ < 4 # undef _NEEDUSHORT # undef _NEEDUINT # endif # undef _ANSI_SOURCE # undef _POSIX_C_SOURCE # undef _XOPEN_SOURCE # if !defined(NSIG) # define NSIG 32 # endif # define _NEEDLL 1 #elif defined(__NetBSD__) # include # include # undef _NEEDUSHORT # undef _NEEDUINT # undef _NEEDULONG #elif defined(__OpenBSD__) # include # undef _NEEDUSHORT # undef _NEEDUINT # undef _NEEDULONG #elif defined(_WIN32) #else /* No idea what system this is -- try some defaults */ # include # define PLAN9PORT_USING_PTHREADS 1 #endif #ifndef O_DIRECT #define O_DIRECT 0 #endif typedef signed char schar; #ifdef _NEEDUCHAR typedef unsigned char uchar; #endif #ifdef _NEEDUSHORT typedef unsigned short ushort; #endif #ifdef _NEEDUINT typedef unsigned int uint; #endif #ifdef _NEEDULONG typedef unsigned long ulong; #endif typedef unsigned long long uvlong; typedef long long vlong; typedef uint64_t u64int; typedef int64_t s64int; typedef uint8_t u8int; typedef int8_t s8int; typedef uint16_t u16int; typedef int16_t s16int; typedef uintptr_t uintptr; typedef intptr_t intptr; typedef uint32_t u32int; typedef int32_t s32int; typedef s8int int8; typedef u8int uint8; typedef s16int int16; typedef u16int uint16; typedef s32int int32; typedef u32int uint32; typedef s64int int64; typedef u64int uint64; typedef float float32; typedef double float64; #undef _NEEDUCHAR #undef _NEEDUSHORT #undef _NEEDUINT #undef _NEEDULONG #define getcallerpc(x) __builtin_return_address(0) #ifndef SIGBUS #define SIGBUS SIGSEGV /* close enough */ #endif /* * Funny-named symbols to tip off 9l to autolink. */ #define AUTOLIB(x) static int __p9l_autolib_ ## x = 1; #define AUTOFRAMEWORK(x) static int __p9l_autoframework_ ## x = 1; /* * Gcc is too smart for its own good. */ #if defined(__GNUC__) # undef strcmp /* causes way too many warnings */ # if __GNUC__ >= 4 || (__GNUC__==3 && !defined(__APPLE_CC__) && !defined(_WIN32)) # undef AUTOLIB # define AUTOLIB(x) int __p9l_autolib_ ## x __attribute__ ((weak)); # undef AUTOFRAMEWORK # define AUTOFRAMEWORK(x) int __p9l_autoframework_ ## x __attribute__ ((weak)); # else # undef AUTOLIB # define AUTOLIB(x) static int __p9l_autolib_ ## x __attribute__ ((unused)); # undef AUTOFRAMEWORK # define AUTOFRAMEWORK(x) static int __p9l_autoframework_ ## x __attribute__ ((unused)); # endif #endif #if defined(__cplusplus) } #endif #endif go/include/utf.h0100644000000000000000000000004112412656734014061 0ustar00rootroot00000000000000#include "../src/lib9/utf/utf.h" go/lib0040755000000000000000000000000012412656740012163 5ustar00rootroot00000000000000go/lib/time0040755000000000000000000000000012412656734013124 5ustar00rootroot00000000000000go/lib/time/README0100644000000000000000000000057112412656734014063 0ustar00rootroot00000000000000The zoneinfo.zip archive contains time zone files compiled using the code and data maintained as part of the IANA Time Zone Database. The IANA asserts that the database is in the public domain. For more information, see http://www.iana.org/time-zones ftp://ftp.iana.org/tz/code/tz-link.htm http://tools.ietf.org/html/rfc6557 To rebuild the archive, read and run update.bash. go/lib/time/update.bash0100755000000000000000000000241612412656734015327 0ustar00rootroot00000000000000#!/bin/sh # 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. # This script rebuilds the time zone files using files # downloaded from the ICANN/IANA distribution. # Versions to use. CODE=2014d DATA=2014d set -e rm -rf work mkdir work cd work mkdir zoneinfo curl -O http://www.iana.org/time-zones/repository/releases/tzcode$CODE.tar.gz curl -O http://www.iana.org/time-zones/repository/releases/tzdata$DATA.tar.gz tar xzf tzcode$CODE.tar.gz tar xzf tzdata$DATA.tar.gz # Turn off 64-bit output in time zone files. # We don't need those until 2037. perl -p -i -e 's/pass <= 2/pass <= 1/' zic.c make CFLAGS=-DSTD_INSPIRED AWK=awk TZDIR=zoneinfo posix_only # America/Los_Angeles should not be bigger than 1100 bytes. # If it is, we probably failed to disable the 64-bit output, which # triples the size of the files. size=$(ls -l zoneinfo/America/Los_Angeles | awk '{print $5}') if [ $size -gt 1200 ]; then echo 'zone file too large; 64-bit edit failed?' >&2 exit 2 fi cd zoneinfo rm -f ../../zoneinfo.zip zip -0 -r ../../zoneinfo.zip * cd ../.. echo if [ "$1" == "-work" ]; then echo Left workspace behind in work/. else rm -rf work fi echo New time zone files in zoneinfo.zip. go/lib/time/zoneinfo.zip0100644000000000000000000127502512412656734015567 0ustar00rootroot00000000000000PK NDAfrica/UT soSsoSux PK NDFUU Africa/DoualaUT soSsoSux TZif2h LMTWAT WAT-1 PK ND١??Africa/El_AaiunUT soSsoSux TZif2[H Ѱ aG ?pQ'pHAH"pJ#JpKL]pMN4OPP1 PgQ|QˠRRlsS7zSs S TLUU\U& U V,7V>WV*W}XT X Y(ݠYPjY6 ZZ[#[ \ \ϕ \" ] ^ ^H ^ _ `_ `t ` a}b? bHbpc]ڠdC?e=fgg hiȇjbkil mKna oh-pC qQJ rf% s1, tF u v/#v xx yz {ɠ|Р} ~y| LMTWATWESTWET WET0WEST,M3.5.0,M10.5.0/3 PK NDi?{{Africa/JohannesburgUT soSsoSux TZif2 Fḫ͞opΎn~Qp@*0 LMTSAST SAST-2 PK ND \\Africa/Sao_TomeUT soSsoSux TZif2PpLMTGMT GMT0 PK ND|%T??Africa/BujumburaUT soSsoSux TZif2 CAT CAT-2 PK NDvȁ  Africa/TripoliUT soSsoSux TZif2!$ݻ#`xe/?pNB`p+*_`̯`z p` pJp!a~"Rp#D$4%%7`&@2N`3D6p45jPQTـRi \   LMTCESTCETEET EET-2 PK NDeÁ Africa/TunisUT soSsoSux TZif2"`PO:X`"T˭iK̰ͩ΢5ϒ4ЉrN` pdtp":#<($,% &> Africa/LomeUT soSsoSux TZif2GMT GMT0 PK NDGUrrAfrica/TimbuktuUT soSsoSux TZif2 LMTGMTWAT GMT0 PK ND'??Africa/KinshasaUT soSsoSux TZif2WAT WAT-1 PK ND'-rrAfrica/NouakchottUT soSsoSux TZif2 tȐ LMTGMTWAT GMT0 PK ND~~~~Africa/CasablancaUT soSsoSux TZif2fQXpҡ25'%r@pkm aG ?pQ'poHAH"pJ#JpKL]pMN4OPP1 PgQ|QˠRRlsS7zSs S TLUU\U& U V,7V>WV*W}XT X Y(ݠYPjY6 ZZ[#[ \ \ϕ \" ] ^ ^H ^ _ `_ `t ` a}b? bHbpc]ڠdC?e=fgg hiȇjbkil mKna oh-pC qQJ rf% s1, tF u v/#v xx yz {ɠ|Р} ~y|  LMTWESTWETCET WET0WEST,M3.5.0,M10.5.0/3 PK NDU3bb Africa/AsmaraUT soSsoSux TZif2 $t$h*0 AMTADMTEAT EAT-3 PK NDnff Africa/MalaboUT soSsoSux TZif2 D<LMTGMTWAT WAT-1 PK ND0,:UU Africa/LagosUT soSsoSux TZif2QP0LMTWAT WAT-1 PK NDr] UUAfrica/BrazzavilleUT soSsoSux TZif2,TLMTWAT WAT-1 PK NDSooAfrica/MogadishuUT soSsoSux TZif2 PJ**0#(*0LMTEATBEAT EAT-3 PK ND LUU Africa/MaputoUT soSsoSux TZif2F LMTCAT CAT-2 PK NDffAfrica/Porto-NovoUT soSsoSux TZif2 tLMTGMTWAT WAT-1 PK ND rAfrica/KhartoumUT soSsoSux TZif2#z4P}[g`~=@` P B S $ P  P ?`sP`gh`J+H`+_P(` o`PKPm~8E *0 *0 LMTCASTCATEAT EAT-3 PK NDYmUU Africa/HarareUT soSsoSux TZif2Fd LMTCAT CAT-2 PK ND:qqAfrica/MonroviaUT soSsoSux TZif2_la LMTMMTLRTGMT GMT0 PK NDrHAfrica/KampalaUT soSsoSux TZif2š֝GTd*0#(& *0LMTEATBEATBEAUT EAT-3 PK NDEE Africa/CairoUT soSsoSux TZif2 ȓ{ˮ`)ͬϏfЩyф`ҊP6c`-P ``mﰳpy%ZYsp;Up6Ep9۾p%gYpIap+C Հ$Ep x < 1pdt(pU\np7OPHp{<pp4g p!a"z\p#D $b'p%%S&^`?sWP@zA\sBq\CEPF1 FjPHHIJPK`LaLXLPSu8S:ST$PU9k`UUzVdPW"WU`W}`WYiY(`YP2`YbZKZX`["`[D\-\\\]&^ɜ_m`OaV%PbpT`c6PdJ`ePf*`fPh `hխPi`jPkӲlmn~ovp^oqsXr>QsS:t3uA?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y   LMTWETWESTCETCEST CET-1CEST,M3.5.0,M10.5.0/3 PK NDba1yUU Africa/LusakaUT soSsoSux TZif2F LMTCAT CAT-2 PK NDlaa Africa/LuandaUT soSsoSux TZif2 xL h 4LMTAOTWAT WAT-1 PK NDSDUUAfrica/BlantyreUT soSsoSux TZif2Fð  LMTCAT CAT-2 PK NDOO Africa/AccraUT soSsoSux TZif2 0fLzP.-ͭ`ŮPǐrʴLSP̕5 LMTGHSTGMT GMT0 PK NDLee Africa/DakarUT soSsoSux TZif2 ;LMTWATGMT GMT0 PK NDۥvv Africa/BanjulUT soSsoSux TZif2*'6dd LMTBMTWATGMT GMT0 PK ND~)ii Africa/MaseruUT soSsoSux TZif2 FʸΎn~Qp *0LMTSAST SAST-2 PK NDWyyAfrica/GaboroneUT soSsoSux TZif2FhΎn~QpL *0 LMTSASTCATCAST CAT-2 PK NDU3bb Africa/AsmeraUT soSsoSux TZif2 $t$h*0 AMTADMTEAT EAT-3 PK NDAfrica/FreetownUT soSsoSux TZif22l80ӽt0´UĖ$60wX%Y;0D̽|S̼p4#plqp٠RӀ4pP  LMTFMTSLSTWATGMT GMT0 PK NDt8ss Africa/NiameyUT soSsoSux TZif2 挄Ɛ0LMTWATGMT WAT-1 PK NDTQTTAfrica/OuagadougouUT soSsoSux TZif2LMTGMT GMT0 PK ND277Africa/AlgiersUT soSsoSux TZif2"`POGx,ppHp*` .zL5ppX ϒ4ЊrN$pKp\xC DxZhYvCpfB_|O_1  LMTPMTWESTWETCESTCET CET-1 PK ND+DbbAfrica/Addis_AbabaUT soSsoSux TZif2 $H$h*0 LMTADMTEAT EAT-3 PK NDkAfrica/NairobiUT soSsoSux TZif2šǑG/"*0#(& *0LMTEATBEATBEAUT EAT-3 PK NDPn?Z@oPA:eBO2CGD/D)FF GH'IJ KրLMNb͐OwPBQ`R"S@T U {UW]WrX?YTZ![6\=]k^_T4`ia4bHcd(ŀdڐffӼghiѦjkl|mjn\oqLpGw G |   LMTCMTARTARSTWARTWARST ART3 PK ND*y[ America/BoiseUT soSsoSux TZif2H*FL ˉ #pauXW:9wqaP@0ހ   ࡐ ٿ yeidYGIF9))("E '& ̀ v!"U#j$5%J&'*'ߐ) r)*T+,p-.R/~g041g2s3Gf4R5'H62ڀ7*88 9:;ۻ< =>?@oΐABOCd}D/ED_EG-|GӧI ^IJ@KL\M|N>O\iP Qp?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Q|?8@o|AUlBOj|Cd7lD/L|EDlE~G-5G`I IBJK_|LlM|A|NPO\?`PPQ?@oܠABOCdD/EDmFG$OG I1I؁ JKLjM|NLO\wP.Q?@oΐABOCd}D/ED_EG-|GӧI ^IJ@KL\M|N>O\iP Qp?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Q? @oABO̰CdD/ED{E0G- G0I z I0J\ KLxM|NZO\P?@oΐABOCd}D/ED_FtG$AGI#IsJKULM)NOx PQa'RlSA TLU V,}ẀXpXீY|pZ[^p\]@p^_"p`ira~>bITc^ d)6e>fRgg4hijݨklpmڀnpoqppqZrfkps:tFMpuv/ivxKxay-zC{|_}~AT LMTMSTCSTPSTMDTCDT CST6CDT,M4.1.0,M10.5.0 PK ND$BAmerica/Knox_INUT soSsoSux TZif2,ppˈ#pa U 5sޗݩp޾y߉rp[iTp~=I6p^Wt?1@otANdBOctCd0dD/EtEDdEwG-.GYI I;JKXtLdM|:tN HO\8XPHQ<XRuHSXTUHTXV5HVXXYZ[u\]W^d_9`MXaVHb-Xcg8Hd cXeGHeEXg&Hg'XiHi XjHk%lmvnoUpq5rostOdtXv8HvެXxcHxXyEHzpX{'H|~RX} H~^4XHΔܤΔ LMTNDTNSTNPTNWTNDDT NST3:30NDT,M3.2.0,M11.1.0 PK ND̽@America/Grand_TurkUT soSsoSux TZif2xeyHiGY*I)9 ) ")` ` p`p`p` v!`"U#j$5%J&'*s'p) U)ޥp*7+p,T`-ip.6`/~Kp0`1gg2r`3GI4R`5'+62`7 889:;۞p?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Q`?T@o`AqPBO`CdSPD/h`ED5PEG-QG|I 3I^JK{`L2PM|]`NPO\?`PPQ?@oΐABOCd}D/ED_EG-|GӧI ^IJ@KL\M|N>O\iP Q?@oΐABOCd}D/ED_EG-|GӧI ^IJ@KL\M|N>O\iP Q?@oܠABOCdD/EDmE G-Gӵ I lI JNKLjM|NLO\wP.Qހ?@oABOCd}CoD/EDQpEG-mGәI OI{J1KLNpM|yN0pO\[PpQ<=RupSTUpTV5pVXXYZ[ޘ\]z^d_\`M€aypb-cg[pd eG=pehg'pgJipi,jpkIlmv+noV pq5rostOtv8pvπxpxyhpz{Jp|~u},p~^Wp LMTCDTCSTCWTCPT CST6CDT,M3.2.0,M11.1.0 PK NDSxAmerica/ParamariboUT soSsoSux TZif2*Kb, X1H<L LMTPMTNEGTSRT SRT3 PK NDg3TTAmerica/MontserratUT soSsoSux TZif273TLMTAST AST4 PK NDHTAmerica/AsuncionUT soSsoSux TZif2+@ t ʰ x0-@Z1t`dCU@FȰ8@'0L /@c0۳08l@O0 p!a@"S#DX@$4;0%A;@&n'@'0(@)H*Ͻ+ 0,@-p ./O0n@16h02W.347406678Ͱ9ֶ:;@<0=q>0?Z@@oz0Aq@B3CQ@DE1@EpGGRHI4JڒK;0LM0NO0Pp@QNl0RP@S.N0T0@U00V@VLW@X.Yh@Z[\]f^v԰_yH`_0aY*b?0c9 d0ee0g @gy0h@i[0j@kwl@mYn@oh;pjqHrJs't*su0v Uv0w7x0yz0{6@|0}@~p0r@ LMTAMTPYTPYST PYT4PYST,M10.1.0/0,M3.4.0/0 PK NDj~~America/TegucigalpaUT soSsoSux TZif2 LKD !\P"z#<}PD]D<LMTCDTCST CST6 PK NDmAAAmerica/Glace_BayUT soSsoSux TZif24`Pˈ`#p`?`i8P``PP@`0P ` P ` xP w` ٔ Y`vuXWy:i9YI8("PP`P`P`P u!P"U#j$5%J&'*e'`) G)ޗ`*)+y`,FP-[`.(P/~=`0 P1gY2rP3G;4RP5'62P7889:;ې<`=r>`?T@o`AqPBO`CdSPD/h`ED5PEG-QG|I 3I^JK{`L2PM|]`NPO\?`PPQp?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`QGw G |   LMTCMTARTARSTWARTWARST ART3 PK ND VAmerica/Argentina/Rio_GallegosUT soSsoSux TZif2=0{R@ɰ@p0}@0x @Z@;0~`@*0A70ȁ@MM0ΰ)5Cd=0l02@柰C0w@65S0R@504@J$o#$%7%v'!0'X)0):*0+W 7ư8*@0@ Gw G   LMTCMTARTARSTWART ART3 PK NDZpAmerica/Argentina/SaltaUT soSsoSux TZif2;0{R@ɰ@p0}@0x @Z@;0~`@*0A70ȁ@MM0ΰ)5Cd=0l02@柰C0w@65S0R@504@J$o#$%7%v'!0'X)@):*0+W 7ư8*Gw G ¬  LMTCMTARTARSTWART ART3 PK NDwپAmerica/Argentina/San_JuanUT soSsoSux TZif2>0{R@ɰ@p0}@0x @Z@;0~`@*0A70ȁ@MM0ΰ)5Cd=0l02@柰C0w@65S0R@504@J$o#$%7%v'!0'͵(&&@)0):*0+W 7ư8*@A0@Gw G   LMTCMTARTARSTWART ART3 PK NDcjAmerica/Argentina/Buenos_AiresUT soSsoSux TZif2=0{R@ɰ@p0}@0x @Z@;0~`@*0A70ȁ@MM0ΰ)5Cd=0l02@柰C0w@65S0R@504@J$o#$%7%v'!0'X)0):*0+W 7ư8*Gw G HIa 4  LMTCMTARTARST ART3 PK NDvAmerica/Argentina/CordobaUT soSsoSux TZif2=0{R@ɰ@p0}@0x @Z@;0~`@*0A70ȁ@MM0ΰ)5Cd=0l02@柰C0w@65S0R@504@J$o#$%7%v'!0'X)@):*0+W 7ư8*Gw G HIa   LMTCMTARTARSTWART ART3 PK ND- America/Argentina/UshuaiaUT soSsoSux TZif2=0{R@ɰ@p0}@0x @Z@;0~`@*0A70ȁ@MM0ΰ)5Cd=0l02@柰C0w@65S0R@504@J$o#$%7%v'!0'X)0):*0+W 7ư8*@N0@ Gw G   LMTCMTARTARSTWART ART3 PK ND America/Argentina/ComodRivadaviaUT soSsoSux TZif2=0{R@ɰ@p0}@0x @Z@;0~`@*0A70ȁ@MM0ΰ)5Cd=0l02@柰C0w@65S0R@504@J$o#$%7%v'!0'X)@):*0+W 7ư8*@0@ Gw G T  LMTCMTARTARSTWART ART3 PK NDEAmerica/Argentina/TucumanUT soSsoSux TZif2?0{R@ɰ@p0}@0x @Z@;0~`@*0A70ȁ@MM0ΰ)5Cd=0l02@柰C0w@65S0R@504@J$o#$%7%v'!0'X)@):*0+W 7ư8*@0@@Gw G HIa   LMTCMTARTARSTWART ART3 PK NDAmerica/Argentina/CatamarcaUT soSsoSux TZif2=0{R@ɰ@p0}@0x @Z@;0~`@*0A70ȁ@MM0ΰ)5Cd=0l02@柰C0w@65S0R@504@J$o#$%7%v'!0'X)@):*0+W 7ư8*@0@ Gw G T  LMTCMTARTARSTWART ART3 PK ND!Ɠ%America/Argentina/San_LuisUT soSsoSux TZif2 > 0{R@ɰ@p0}@0x @Z@;0~`@*0A70ȁ@MM0ΰ)5Cd=0l02@柰C0w@65S0R@504@J$o#$%7%'4@'ð(G7ư8*@A0@Gw GGRHv@I4JX@  LMTCMTARTARSTWARTWARST ART3 PK NDˢ'America/Argentina/JujuyUT soSsoSux TZif2 ; 0{R@ɰ@p0}@0x @Z@;0~`@*0A70ȁ@MM0ΰ)5Cd=0l02@柰C0w@65S0R@504@J$o#$%7%v'*W'۰(@):*0+W 7ư8*Gw G    LMTCMTARTARSTWARTWARST ART3 PK NDnAmerica/Argentina/La_RiojaUT soSsoSux TZif2>0{R@ɰ@p0}@0x @Z@;0~`@*0A70ȁ@MM0ΰ)5Cd=0l02@柰C0w@65S0R@504@J$o#$%7%v'!0'͵(&&@)0):*0+W 7ư8*@0@ Gw G T  LMTCMTARTARSTWART ART3 PK NDAmerica/MiquelonUT soSsoSux TZif2i8nc u!w@"U#j$5%Ju&'*W'P) 9)މP*+kP,8@-MP.@/~/P0@1gK2r@3G-4R@5'62@7889:Ƶ;ۂP?F@oPAc@BOxPCdE@D/ZPED'@EG-CGnI %IPJKmPL$@M|OPN@O\1PP@Q<PRu@SPTU@TPV5@VXXYZ[n\]P^d{_2`MPaO@b-zPcg1@d \PeG@e>Pg&@g Pi@iPj@klmvnoUpq5ro{stO]tPv8z@vޥPx\@xPy>@ziP{ @|~KP}@~^-P@X LMTASTPMSTPMDT PMST3PMDT,M3.2.0,M11.1.0 PK ND5##America/Rainy_RiverUT soSsoSux TZif2pW`ˈ#pa  π p p ٰ uttyViVY8I89)"7pppp܀p v!p"U#j$5%J&'*'р) c)޳*E+,bp-w.Dp/~Y0&p1gv2sp3GX4Rp5':62p7889:;۬<=>ހ?p@oApBOCdopD/EDQpEG-mGәI OI{J1KLNpM|yN0pO\[PpQ<=RupSTUpTV5pVXXYZ[ޘ\]z^d_\`M€aypb-cg[pd eG=pehg'pgJipi,jpkIlmv+noV pq5rostOtv8pvπxpxyhpz{Jp|~u},p~^WpX LMTCDTCSTCWTCPT CST6CDT,M3.2.0,M11.1.0 PK ND"z-America/GuyanaUT soSsoSux TZif2 y9> }<'0xDD LMTGBGTGYT GYT4 PK NDCV.{{America/BelizeUT soSsoSux TZif28^ٰ;EQء.nX^PX>2X'`X`X`جǤ`vخ`Vذh`6زpشPf|ض0HߙX*฿{X ຟ]X)`?X `_!X`?Xx`(X`8`!ɧsːXUpXb`Paq`7PP  LMTCHDTCSTCDT CST6 PK ND&rtAmerica/HermosilloUT soSsoSux TZif2pnfV`C` 6`q`ؑp1g2s3Gf4R5'H62ڀ LMTMSTCSTPSTMDT MST7 PK ND(DAmerica/Porto_VelhoUT soSsoSux TZif2 WNB@ނ08@@ܹg0#@ޛ0ݨ@TA0 l0r@,Q:@0 @ɜ@xC 3ݰ!w@" ְ LMTAMSTAMT AMT4 PK NDylAmerica/MonctonUT soSsoSux TZif2P`P<8л#@н@пs@S@»3@ě@p @H@^ˈ`#p`u@U 5|u`W{`ݩtP޾]`߉VP?`i8P~!`IP^`(PG'֨ƧP`P`Po`_kPOj`?MP/L`(i.`KJ-,wpP``PP ` P ` xP w` ٔ Y`vuXWy:i9YI8("PP`P`P`P u!P"U#j$5%J&'*e'`) G)ޗ`*)+]|,*l-?|. l/~!|0l1g=2rl3G4Rl5'62l7889:Ƨ;t<|=V>|?8@o|AUlBOj|Cd7lD/L|EDlEG-QG|I 3I^JK{`L2PM|]`NPO\?`PPQ?0@oAŰBOCdD/EDE@G-0G@I 0I@Jj0KLֆM|NhO\PJQ?@oܠABOCdD/EDmFG$OG I1I؁ JKLjM|NLO\wP.Q kI@40t 800ܹY 0ޛ ݚ0T3 ^ d0Q,0 Ұ0}Ɏ0xנ5 3Ϡ!i0" Ƞ#X#p %7% '!0')0) * +k2,0-f .0/F 0y01M2W 3j 48T04 6 06h7ư8 90:,;NNHOI  LMTBRSTBRT BRT3 PK NDg3TTAmerica/St_KittsUT soSsoSux TZif273TLMTAST AST4 PK NDاAmerica/IndianapolisUT soSsoSux TZif2c,ppW"Gpˈ#pa u@U 5sޗݩp޾y߉rp[iTp~=I6p^D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Q--America/Indiana/VevayUT soSsoSux TZif2Q,ppˈ#pa ~=wp``pP`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`QNPe0Q 9 LMTBRSTBRT BRT3 PK NDL88America/MontevideoUT soSsoSux TZif2 %Y8C0Ìvԗyy8_[}x8?=]Z8=<8<080ʋ8UM8͕_ . EJ r T s 6ꦠ>0bqؖ(0ɨX0Ǡ ZG( ݠ0 U0nG!T0";>#$ %Jg%v'!0'X) +):*0+AL0BF/CHDEKPE~GgG`HIIBJ+K_@L M|A@NO\#@Pq PQ<@RPPS@T0PT@VPVWPXYvPZ[\]t^dm_yV`M@aY8b-l@c9d N@ee0@gPg@hPi@jPklPmunPoUpjq5rJst*t@v cvޗ@wExy@y'z[@{DP|~=@}&P~^@sPTTLMTMMTUYHSTUYTUYST UYT3UYST,M10.1.0,M3.2.0 PK ND{\4mmAmerica/CrestonUT soSsoSux TZif2 Kp;LMTMSTPST MST7 PK NDCAmerica/EdmontonUT soSsoSux TZif2҅萣jʐ5ÀS3ˉ #paU uX9aP@0ހ ݐ  ࡐ ٿ yeidYGIF9))("E '& ̀ v!"U#j$5%J&'*'ߐ) r)*T+,p-.R/~g041g2s3Gf4R5'H62ڀ7*88 9:;ۻ< =>?@oΐABOCd}D/ED_EG-|GӧI ^IJ@KL\M|N>O\iP Qހ?p@oApBOCdopD/EDQpFfG$3pGIpIeJpKGLM)NOx PQa'RlSA TLU V,}ẀXpXீY|pZ[^p\]@p^_"p`ira~>bITc^ d)6e>fRgg4hijݨklpmڀnpoqppqZrfkps:tFMpuv/ivxKxay-zC{|_}~A LMTCSTESTCDT CST6CDT,M4.1.0,M10.5.0 PK ND>G``America/PanamaUT soSsoSux TZif2 apLMTCMTEST EST5 PK ND' __America/MenomineeUT soSsoSux TZif2,ppˈ#pa u@Jg+@p0p' p p ٰ uttyViVY8I89)"7pppp܀p v!p"U#j$5%J&'*'р) c)޳*E+,bp-w.Dp/~Y0&p1gv2sp3GX4Rp5':62p7889:;۬<=>ހ?p@oApBOCdopD/EDQpEG-mGәI OI{J1KLNpM|yN0pO\[PpQ<=RupSTUpTV5pVXXYZ[ޘ\]z^d_\`M€aypb-cg[pd eG=pehg'pgJipi,jpkIlmv+noV pq5rostOtv8pvπxpxyhpz{Jp|~u},p~^Wp LMTCDTCSTCWTCPTEST CST6CDT,M3.2.0,M11.1.0 PK NDdAmerica/Campo_GrandeUT soSsoSux TZif2 z4WNB@ނ08@@ܹg0#@ޛ0ݨ@TA0 l0r@,Q:@0 @ɜ@xC 3ݰ!w@" ְ#X#~0%8%0'!@')@)0*+k@,@-f0.@/F00@1[2W.3x048b@406 -@6v7809@::; N? @@.A@B0CQ@C0EMaEG@G0HI0JڒKLtM`NVOI0Ps@Q GRcU@S)TC7@TF0V#@V(0X@X 0Y@Z0[\h0]^H0_`1̰akbcKc0e+cerg@gThb@iq0jD@kzS0l&@mZ50n@o:0p}$q0r]r0t?@oΐABOCd}D/ED_FtG$AGI#IsJKUL"M7NOxPQa5RlSATLU V,WېXXཐYZ[l\]N^_0`ia~MbIbc^/d)De>f`ggBhi$jݷklӀmnoqʐpqZrfys:tF[uv/xvxZxoy<zQ{|m}~O< LMTMSTCSTPSTMDT MST7MDT,M4.1.0,M10.5.0 PK NDc|66America/VancouverUT soSsoSux TZif2ˉ#pa&v S}U 5  Ѡ޳ݩ޾߉wip~YIR^;)4GX Q': 3   qޠo_O?/(f fe HG *)  x q(a'Q A 0 ΐ ͠ ௠    ysir YUIT 97)6 "S  54ې v+ !"V #j$5 %J& '*') )Ϡ*b+,~-.`/~u0B1g 2s$3Gt 4S5'V 6278 88 9: ;<=>?@oܠABOCdD/EDmE G-Gӵ I lI JNKLjM|NLO\wP.Qp?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`QP(iiGY*I)9 ) ")` ` p`p`p` v!`"U#j$5%J&'*s'p) U)ޥp*7+p,T`-ip.6`/~Kp0`1gg2r`3GI4R`5'+62`7 889:;۞p?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`QndAmerica/JamaicaUT soSsoSux TZif2 p ` ` p ٢ gpfeyHiGY*I)9 ) ")` ` LMTKMTESTEDT EST5 PK NDTؤrrAmerica/La_PazUT soSsoSux TZif2, LMTCMTBOSTBOT BOT4 PK NDg3TTAmerica/GrenadaUT soSsoSux TZif273TLMTAST AST4 PK ND==America/Port-au-PrinceUT soSsoSux TZif2XnqF@P@P@P@ P!w@"U#j$5%J&'*s'`) U)ޗ`*7+y`,T`-[`.6`/~=`0`1gY2r`3G;4R`BOxPCdE@D/ZPED'@O\MpP`Qހ?p@oApBOCdopD/EDQpEG-mGәI OI{J1KLNpM|yN0pO\[PpQ<=RupSTUpTV5pVXXYZ[ޘ\]z^d_\`M€aypb-cg[pd eG=pehg'pgJipi,jpkIlmv+noV pq5rostOtv8pvπxpxyhpz{Jp|~u},p~^Wp   zzzCDDTCSTCDTEST CST6CDT,M3.2.0,M11.1.0 PK ND\*QڝAmerica/Coral_HarbourUT soSsoSux TZif2pW`ˈ#pa  LMTCDTCSTCWTCPTEST EST5 PK ND-_OOAmerica/OjinagaUT soSsoSux TZif2[pnfV`C` 6`1gv2sp3GX4Rp5'H62ڀ7*88 9:;< =>?@oΐABOCd}D/ED_FtG$AGI#IsJKL\M|N>O\iP Q?@oΐABOCd}D/ED_EG-|GӧI ^IJ@KL\M|N>O\iP QPQoP1QP)a *KP+C2PBXC?iPDTnEY` LMTMMTCSTESTCDT CST6 PK NDHzAmerica/ReginaUT soSsoSux TZif26eO0HE1*% 0pp `raQ8`1!p `p`ˉ #pacSoU 5Ðޥݩ޾߉iib~KID^-)&GJC',% LMTMDTMSTMWTMPTCST CST6 PK NDWAmerica/AnchorageUT soSsoSux TZif2 *ˉ6#paB0Gc@F0E@(0x'@qDaCQ&A%1_  @ ̰ 0 0@0@y0i@Yq0Ip@9S0)R@"o 4@Q+B%$ v90!ˠ"V0#j $50%J &0'* ') )ݰ*p +,ӌ-.n/~0P1g02s23G04S5'd0627F08 8(09 : 0; <&= >? @oABO̰CdD/ED{E0G- G0I z I0J\ KLxM|NZO\PNA@B0CQ@C0EMaEG@G0HI0JڒKLtM`NVOI0Ps@Q GRcU@S)TC7@TF0V#@V(0X@X 0Y@Z0[\h0]^H0_`1̰akbcKc0e+cerg@gThb@iq0jD@kzS0l&@mZ50n@o:0p}$q0r]r0tO@  @@ Ѱ @ 0 @ 0@h0H0f(v0F&{t]V?8\@>@p @ 0!o@"90#E$0%8&&'١0()½*צ+,-.j/bc0@1BE2`i@3=04@K@5 D06 @7հ8@809+:0; <0=>j0?@SʰAhB3CHDE1@EpG@G0Hv@Io0JX@KL:@M0NPOPBQ|R+@S\rT @UP LMTBMTADTAST AST4 PK NDmAmerica/Sao_PauloUT soSsoSux TZif2 rI@40t 800ܹY 0ޛ ݚ0T3 Z 0^ d0Q,0 Ұ0}Ɏ0xנ5 3Ϡ!i0" Ƞ#X#p %7% '!0')0) * +k2,0-f .0/F 0y01M2W 3j 48T04 6 06h7ư8 90:,;N?0@.ҠA0B CQ0C EMSEG0G HIw JڄKLfM`uNHOI Pe0Q 9RcG0STC)0T8 V# 0V X0X Y0Z [\h ]Ͱ^H _`1akbcKsc e+Uedgr0gFhT0ic j60kzE l0mZ' n0o: p}q r\r t<ڰtٯ vvˠwx y܀z{ŝ0|bq}0~K a0L LMTBRSTBRT BRT3BRST,M10.3.0/0,M2.3.0/0 PK NDo}}America/CaracasUT soSsoSux TZif2 ,))America/MaceioUT soSsoSux TZif2* h|I@40t 800ܹY 0ޛ ݚ0T3 ^ d0Q,0 Ұ0}Ɏ0xנ5 3Ϡ!i0" Ƞ#X#p %7% 0y01M7ư8 909J ;?@oܠABOCdD/EDmFG$OG I1I؁ JKc L0ME NOx' PQaCRlSA%TLU!V,WXXˠYZ[z\ ]\^ _>`i a~[bIp c^=d)R e>fnggPhi2jklmnÐoqؠpqZ rfs: tFiu v/v xhx} yJz_ {,|{}~]P LMTMSTPSTPDTPWTPPT PST8PDT,M4.1.0,M10.5.0 PK ND1ňAmerica/GuatemalaUT soSsoSux TZif2  U`͖,x`P'(\DTR`EKP$LMTCDTCST CST6 PK NDttAmerica/El_SalvadorUT soSsoSux TZif2 զ !\P"z#<}P`LMTCDTCST CST6 PK ND~#""America/DanmarkshavnUT soSsoSux TZif2#IM|P3#ܐ͐㯐ӠÑ| lr!\c"LT#?@oܠABOCdD/EDmE G-Gӵ I lI JNKLjM|NLO\wP.Qހ?p@oApBOCdopD/EDQpFfG$3pGIpIeJpKGLM)NOx PQa'RlSA TLU V,}ẀXpXீY|pZ[^p\]@p^_"p`ira~>bITc^ d)6e>fRgg4hijݨklpmڀnpoqppqZrfkps:tFMpuv/ivxKxay-zC{|_}~ALMTCSTCDT CST6CDT,M4.1.0,M10.5.0 PK NDJPʄVVAmerica/NassauUT soSsoSux TZif2 7BOxp?[`/Zp(wp?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Q? @oABO̰CdD/ED{E0G- G0I z I0J\ KLxM|NZO\P@zSP @ Z5P!o@"CQ#N@$#3%.@&''P()މP*״+kP,-MP.x/~/P0wZ1gK2W<3G-4@YP5P62P6P889:Ƶ;ېP?T@f[ED5PEG$PGܩPIPIPJPKmPLMNNOwPPQ<PRuPSPTUPTPV5PVXXYZ[|\]^^d{_@`MPa]Pb-zPcg?Pd \PeG!Pe>Pg'Pg PiPiPjPklmvnoUpq5rostOktPv8PvޥPxjPxPyLPziP{.P|~KP}P~^-PP LMTHMTCDTCST CST5CDT,M3.2.0/0,M11.1.0/1 PK NDH  America/MatamorosUT soSsoSux TZif2X `"U#j1gv2sp3GX4Rp5':62p7889:;<=>ހ?p@oApBOCdopD/EDQpFfG$3pGIpIeJpKLNpM|yN0pO\[PpQ<=RupSTUpTV5pVXXYZ[ޘ\]z^d_\`M€aypb-cg[pd eG=pehg'pgJipi,jpkIlmv+noV pq5rostOtv8pvπxpxyhpz{Jp|~u},p~^Wp@LMTCSTCDT CST6CDT,M3.2.0,M11.1.0 PK NDR//America/FortalezaUT soSsoSux TZif2( kI@40t 800ܹY 0ޛ ݚ0T3 ^ d0Q,0 Ұ0}Ɏ0xנ5 3Ϡ!i0" Ƞ#X#p %7% 7ư8 909J ;p?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Q?@oApBOCdopD/EDQpEG-mGәI OI{J1KLNpM|yN0pO\[PpQ<=RupSTUpTV5pVXXYZ[ޘ\]z^d_\`M€aypb-cg[pd eG=pehg'pgJipi,jpkIlmv+noV pq5rostOtv8pvπxpxyhpz{Jp|~u},p~^Wp LMTMDTMSTMWTMPTCDTCST CST6CDT,M3.2.0,M11.1.0 PK NDW|America/North_Dakota/BeulahUT soSsoSux TZif2:ˉ #pauXW:9wqaP@0ހ5   ࡐ ٿ yeidYGIF9))("E '& ̀ v!"U#j$5%J&'*'ߐ) r)*T+,p-.R/~g041g2s3Gf4R5'H62ڀ7*88 9:;ۻ< =>?@oΐABOCd}D/ED_EG-|GӧI ^IJ@KL\M|yN0pO\[PpQ<=RupSTUpTV5pVXXYZ[ޘ\]z^d_\`M€aypb-cg[pd eG=pehg'pgJipi,jpkIlmv+noV pq5rostOtv8pvπxpxyhpz{Jp|~u},p~^Wp LMTMDTMSTMWTMPTCDTCST CST6CDT,M3.2.0,M11.1.0 PK ND U America/North_Dakota/CenterUT soSsoSux TZif2:ˉ #pauXW:9wqaP@0ހ5   ࡐ ٿ yeidYGIF9))("E '& ̀ v!"U#j$5%J&'*'ߐ) r)*T+,bp-w.Dp/~Y0&p1gv2sp3GX4Rp5':62p7889:;۬<=>ހ?p@oApBOCdopD/EDQpEG-mGәI OI{J1KLNpM|yN0pO\[PpQ<=RupSTUpTV5pVXXYZ[ޘ\]z^d_\`M€aypb-cg[pd eG=pehg'pgJipi,jpkIlmv+noV pq5rostOtv8pvπxpxyhpz{Jp|~u},p~^Wp LMTMDTMSTMWTMPTCDTCST CST6CDT,M3.2.0,M11.1.0 PK NDjeeAmerica/Lower_PrincesUT soSsoSux TZif2 .#H]LMTANTAST AST4 PK ND  America/MontrealUT soSsoSux TZif2dp`X袔 _s>S-ގpp܍pR诼SP~5Pg.@|PG@[P&@;P@$й@лнĝпox„aOZdC/p?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Qp?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Q`?T@o`AqPBO`CdSPD/h`ED5PEG-QG|I 3I^JK{`L2PM|]`NPO\?`PPQp?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Qp?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Qp?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Qހ?p@oApBOCdopD/EDQpFfG$3pGIpIeJpKGLM)NOx PQa'RlSA TLU V,}ẀXpXீY|pZ[^p\]@p^_"p`ira~>bITc^ d)6e>fRgg4hijݨklpmڀnpoqppqZrfkps:tFMpuv/ivxKxay-zC{|_}~A LMTCSTEDTESTCDT CST6CDT,M4.1.0,M10.5.0 PK NDwY America/NomeUT soSsoSux TZif2 &ˉD#paP@UqPT@SP6@x5PqRaQQ4A31m  P @ @P@Py@iPY@I~P9a@)`P"} BP_+B%$ v90!ˠ"V0#j $50%J &0'* ') )ݰ*p +,ӌ-.n/~0P1g02s23G04S5'd0627F08 8(09 : 0; <&= >? @oABO̰CdD/ED{E0G- G0I z I0J\ KLxM|NZO\P?0@oAŰBOCdD/EDE@G-0G@I 0I@Jj0KLֆM|NhO\PJQ? @oABO̰CdD/ED{E0G- G0I z I0J\ KLxM|NZO\P?@oΐABOCd}D/ED_EG-|GӧI ^IJ@KL\M|N>O\iP Qހ?p@oApBOCdopD/EDQpFfG$3pGIpIeJpKGLM)NOx PQa'RlSA TLU V,}ẀXpXீY|pZ[^p\]@p^_"p`ira~>bITc^ d)6e>fRgg4hijݨklpmڀnpoqppqZrfkps:tFMpuv/ivxKxay-zC{|_}~A  LMTMSTCSTCDTCWT CST6CDT,M4.1.0,M10.5.0 PK ND~RAmerica/Boa_VistaUT soSsoSux TZif2" WNB@ނ08@@ܹg0#@ޛ0ݨ@TA0 l0r@,Q:@0 @ɜ@xC 3ݰ!w@" ְ7809@9  LMTAMSTAMT AMT4 PK NDnAmerica/GodthabUT soSsoSux TZif3v hM|P3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~yπLMTWGTWGST WGT3WGST,M3.5.0/-2,M10.5.0/-1 PK ND&FK00America/ChicagoUT soSsoSux TZif2,pptEҀcSp3ޕwaYC~;_gXp|AG:p\#'p<p瀹ppZހ?p@oApBOCdopD/EDQpEG-mGәI OI{J1KLNpM|yN0pO\[PpQ<=RupSTUpTV5pVXXYZ[ޘ\]z^d_\`M€aypb-cg[pd eG=pehg'pgJipi,jpkIlmv+noV pq5rostOtv8pvπxpxyhpz{Jp|~u},p~^Wp LMTCDTCSTESTCWTCPT CST6CDT,M3.2.0,M11.1.0 PK NDAmerica/ScoresbysundUT soSsoSux TZif2vLMn@4$#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~yh LMTCGTCGSTEGTEGST EGT1EGST,M3.5.0/0,M10.5.0/1 PK NDgx&&America/MetlakatlaUT soSsoSux TZif2"ˉ#pa&G *)  x q(a'Q A 0C ΐ ௠    ysir YUIT 97)6 "S  5 LMTPSTPWTPPTPDTMeST MeST8 PK ND0""America/Los_AngelesUT soSsoSux TZif2H*ˉ#pa&t ؀Ѡ޳ݩ޾߉wip~YIR^;)4GX Q': 3   qޠo_O?/(f fe HG *)  x q(a'Q A 0C ΐ ௠    ysir YUIT 97)6 "S  54ې v+ !"V #j$5 %J& '*') )Ϡ*b+,~-.`/~u0B1g 2s$3Gt 4S5'V 6278 88 9: ;<=>?@oܠABOCdD/EDmE G-Gӵ I lI JNKLjM|NLO\wP.Qހ?p@oApBOCdopD/EDQpEG-mGәI OI{J1KLNpM|yN0pO\[PpQ<=RupSTUpTV5pVXXYZ[ޘ\]z^d_\`M€aypb-cg[pd eG=pehg'pgJipi,jpkIlmv+noV pq5rostOtv8pvπxpxyhpz{Jp|~u},p~^Wp   zzzCDDTCSTCDTEST CST6CDT,M3.2.0,M11.1.0 PK NDg3TTAmerica/St_LuciaUT soSsoSux TZif273TLMTAST AST4 PK NDlPEOOAmerica/ChihuahuaUT soSsoSux TZif2[pnfV`C` 6`1gv2sp3GX4Rp5'H62ڀ7*88 9:;< =>?@oΐABOCd}D/ED_FtG$AGI#IsJKUL"M7NOxPQa5RlSATLU V,WېXXཐYZ[l\]N^_0`ia~MbIbc^/d)De>f`ggBhi$jݷklӀmnoqʐpqZrfys:tF[uv/xvxZxoy<zQ{|m}~O LMTMSTCSTCDTMDT MST7MDT,M4.1.0,M10.5.0 PK ND Antarctica/UT soSsoSux PK ND(>Antarctica/South_PoleUT soSsoSux TZif2QXxhC`Xh#`8h`hmḩOh཮࿎nƒNcp.~L``,o`}hښ@  ` ~^>xgXIf8+`!H`e`*`G` `)``g `` F`!`"0 #i$%.`&B' `'$(`)*ͧ`+#`,`-`.k`/j`0mM`1J`2Vi3*`46K5 `6-678Ӌ9:m;`s1?~`@\N`A^`B<0`C>`D`Ex`E`FZ`GH<`IgJ`KIL`M+N}`Ow PfQ`*`RFS@ `T&U`VV`WX߲`YhZ`[`\]g`^_oI``htaO+`bHVc/ `d(8e`fU`f g7`hi`jk`lm`nwop`p``qYr@`s9t t`uvV`vw8`xcy`zE{6|b`}~D`h LMTNZSTNZMTNZDT NZST-12NZDT,M9.5.0,M4.1.0/3 PK NDDUAntarctica/PalmerUT soSsoSux TZif3~柰C0w@65S0R@504@J$o0]V?8\@>@p @ 0!o@"90#E$0%8&&'١0()½*צ+,-.j/bc0@1BE2`i@3=04@K@5 D06 @7հ8@809+:0; <0=>j0?@SʰAhB3CHDE1@EpG@G0Hv@Io0JX@KL:@M0NPOPBQ|R+@S\rT @U~~Antarctica/CaseyUT soSsoSux TZif2 ̀J KN OC͐ppzzzWSTCAST WST-8 PK NDAAAntarctica/MacquarieUT soSsoSux TZif2[ x 𠇴` h~Yv;V?p9 P8/ ߀  ~^>xXf8HO!d1Fc(E g' Y~!΀"B#i$"}%I&_')'()Ԙ*À+z,-\./t>0mi1]Z2V3=<46h56J67,89:Ā;*<= >?~@eA^ЀBEC>D.EFKGGHIׄJuKfzzzESTMIST MIST-11 PK ND(>Antarctica/McMurdoUT soSsoSux TZif2QXxhC`Xh#`8h`hmḩOh཮࿎nƒNcp.~L``,o`}hښ@  ` ~^>xgXIf8+`!H`e`*`G` `)``g `` F`!`"0 #i$%.`&B' `'$(`)*ͧ`+#`,`-`.k`/j`0mM`1J`2Vi3*`46K5 `6-678Ӌ9:m;`s1?~`@\N`A^`B<0`C>`D`Ex`E`FZ`GH<`IgJ`KIL`M+N}`Ow PfQ`*`RFS@ `T&U`VV`WX߲`YhZ`[`\]g`^_oI``htaO+`bHVc/ `d(8e`fU`f g7`hi`jk`lm`nwop`p``qYr@`s9t t`uvV`vw8`xcy`zE{6|b`}~D`h LMTNZSTNZMTNZDT NZST-12NZDT,M9.5.0,M4.1.0/3 PK ND%8nnAntarctica/DumontDUrvilleUT soSsoSux TZif2 Լv4``<zzzPMTDDUT DDUT-10 PK NDWWAntarctica/SyowaUT soSsoSux TZif2 X*0zzzSYOT SYOT-3 PK NDUT̅Antarctica/DavisUT soSsoSux TZif2 @GGJ0K@N0OCbpFPbpzzzDAVT DAVT-7 PK ND!VVAntarctica/RotheraUT soSsoSux TZif2 -zzzROTT ROTT3 PK NDȍHBAntarctica/TrollUT soSsoSux TZif2D B GBFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  zzzCESTUTC UTC0CEST-2,M3.5.0/1,M10.5.0/3 PK NDjXWWAntarctica/VostokUT soSsoSux TZif2 XT`zzzVOST VOST-6 PK NDArctic/UT soSsoSux PK NDWSSArctic/LongyearbyenUT soSsoSux TZif2 '{`ȷM`Kͩ΢Cϒ4Ђ%rb L=.xhXG7'/ҐΗMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y       LMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK NDAsia/UT soSsoSux PK ND{UU Asia/KuwaitUT soSsoSux TZif2a5,*0LMTAST AST-3 PK ND࿃ Asia/IstanbulUT soSsoSux TZif2  `վТec{PN`?Ц%''Ъ((`Ы1P`J`΀Pˮ`Pqk PӢ9`CPL ){+ ]`?`\P`ݳ`dh`8kKi`4Pnp9u  :  ` $P 9`P`sPgM6Gz#݀'\>PܔP|s ld!\U"LF#<7$,(%& '5'p( p)p*p+p,p-p.p/tp0dp1]2r3=4Ry562[6b8xp8D9Zp:&;%p?p@fpABEpCcD%pECE2FɐG#GIIJKL̿MݐNOnnPQWRleS8TLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y                               (h*0 8@*0*0 *0 LMTIMTEESTEETTRSTTRT EET-2EEST,M3.5.0/3,M10.5.0/4 PK ND, Asia/HarbinUT soSsoSux TZif2xǐm6ip ~h!Iap"^J#)Cp$Gg%_&'I&A(+(#vwp ~~ p LMTCHATCSTCDT CST-8 PK NDa}(Ixx Asia/HebronUT soSsoSux TZif3YPͬϏfЩyф`Ҋpek6c`-P ``mﰳpy%ZYsp;Up6Ep9'BP| ` 3``P `!I"^# ]P$Z0`%?P& &'(P)`*+e,-G._P/{)0H01dF`2A`3D(`4!`5$ `6`67a`8DP8}9`:_;B#?@A\B^CAD-`EPFFopGHPIJ<`KLaMN5PN\ NPOt`P[QT`RDPS4`T$PU`VdPVWFPXY(PZa[ P\C]&^}%_m`]aLbF$`c,d&`e f`fPg`hխPiŬ`jPk`lqPmnuSPonpU5PqNnr>Qs.Pt3u2uvO`wx1`yz`{|`}P~v`fP *0 *0*0   LMTEETEESTIDTIST EET-2EEST,M3.5.4/24,M9.3.6/144 PK NDBPX Asia/ShanghaiUT soSsoSux TZif2 \'pZ6ip ~h!Iap"^J#)Cp$Gg%_&'I&A(+(#q~pLMTCDTCST CST-8 PK ND8"" Asia/TashkentUT soSsoSux TZif2  0'} ivgXI|: l+!\"L #;$+%& '@'@( (P)`0 @FPbp T`T`bp T` FPT`FPLMTTASTTASSTUZTUZST UZT-5 PK NDb Asia/BishkekUT soSsoSux TZif2 5 ~0'} ivgXI|: l+!\"L #;$+%& '@'@()70*ĥ +0, -0.i /00dK 1f02Mg3=4RV5k6286M8UH8/97H:;H<.X=H>X?H@eXABEXB          EFPbp T`T`bp T` T`FPT`T`LMTFRUTFRUSTKGSTKGT KGT-6 PK ND2ɇAsia/YekaterinburgUT soSsoSux TZif2 A @' 0' wufW|H l9!\*"L#< $+%& ' P'P(`)x`)Դ *ė+P,P-P.P/tP0duP1]2r{3=4R]5d62?6F8\P8(9>P: ; P<'P=P> P?P@ePABEPCcD%PECFPG#GIIΏJjKqL̇PMS  88@T` FPFPT` FP 8@T`FPT`FPT`LMTSVETSVESTYEKSTYEKT YEKT-6 PK NDF7ss Asia/JayapuraUT soSsoSux TZif2 Xh~~LMTWITCST WIT-9 PK NDu\( Asia/IrkutskUT soSsoSux TZif2 A 'apȀMZK<-| l!\"K#;$+Ӡ%Ġ& ' ' (0)xy0)ԉ*l+ , -x .i /tZ 0dK 1]v2rQ3=X4R35:62682 89 :; < = > ? @e A֠BE CcD% ECFg G#|GI^IeJ@KGL] M) aabp~ pp~ p bp~~ LMTIMTIRKTIRKST IRKT-9 PK NDkJAsia/Hong_KongUT soSsoSux TZif2FiZW:KxLbpj8ԓJB8֚>A.$9ܸʨޢ8߬[(8(Oi8v(/K8_Ǩ-8?I+m Ol(wѸN(W0(@8h( 8G(%~8a(`8C(B8_^A@#"~n]MG(78&(=8 ( 8 ( ֩8 ƌ(98olk ~p ~ p LMTHKSTHKTJST HKT-8 PK NDAsia/QyzylordaUT soSsoSux TZif2 5 @'  ' wufW|H l9!\*"L#< $+%& ' P')K0)xP)Ԧ*ĉ+@,@-@.@/tv@0dg@1]2rm3=t4RO5V621688N@890@:;@<@=@>@?@@e@AB5   =`8@FPT` T`FPT` FPbpT`bpT`LMTKIZTKIZSTQYZTQYZST QYZT-6 PK NDCAsia/Kuala_LumpurUT soSsoSux TZif2gN `ʳ`ˑ_Hm_Va]bpg  g ix~pLMTSMTMALTMALSTJSTMYT MYT-8 PK ND] Asia/SeoulUT soSsoSux TZif2  ~x𸄴xO)ᒀ 5x Dp!n=`"&p#N`ww~~p~LMTKSTKDT KST-9 PK NDN  Asia/DhakaUT soSsoSux TZif2ۆq̕2ݨҘO J;KP:; P<5`=P>`?P@e`ABE`CcD%`ECF`G#GIIΝJjKL̇PMaNiPOnCPKPQW``Rl-PS7B`TLPU$`V+PV`X X`YZ`[\]^_`_a}Pb?c]Pdne=vPf`gXPgm`h:PiO`jPk1`l8m`nog`pqQres0tEuv.PvxPxЙyPz{{΃P|`}eP~yz`GP!H*0 LMTEESTEET EET-2EEST,M3.5.0/0,M10.5.0/0 PK NDUmAsia/NovokuznetskUT soSsoSux TZif2 A @ 'o׀֐ [hYJ;|, l!\"K#;$+%Ұ& ð'0'0(@)x@)Ԙ*z+0,0-0.w0/th00dY01]2r_3=f4RA5H62#6*8@08 9"0:;0< 0=0>0?0@e0ABE0CcưD%0ECFu0G#GIlIsJNKULy@ME QT`p bpbpp bp T`bpT`bpNMTKRATKRASTNOVSTNOVT NOVT-7 PK ND Asia/OmskUT soSsoSux TZif2 A @0'} ivgXI|: l+!\"L #;$+%& '@'@(P)xP)Ԧ*ĉ+@,@-@.@/tv@0dg@1]2rm3=t4RO5V621688N@890@:;@<@=@>@?@@e@ABE@CcD%@ECF@G#GIzI΁J\KcLy@MEDFPbp T`T`bp T` FPbpbp LMTOMSTOMSST OMST-7 PK ND:3 Asia/AnadyrUT soSsoSux TZif2 A '0ON0@İ@"````{` k`![`"K`#;`$+`%`& }`''()x@)Q*4+],N-?.0/t!0d1]>`2r`3= `4Q`5`61`6`88`9:`;ڽ<=>?@eA`BEjCc`D%LECb`F.G#D`GK`I&`I-`J`K`L2Mpd    LMTANATANAST ANAT-12 PK ND!Asia/SingaporeUT soSsoSux TZif2 gN `ʳ`ˑ_HmMa]a]bpg  g ix~ixpLMTSMTMALTMALSTJSTSGT SGT-8 PK NDɋ Asia/AmmanUT soSsoSux TZif2v ry P$7` j P u #``r` `P r`!bP"R`#K$d`%+&7o`' ( s(JP)`*f+e,H-G.x/d`0X1dF`2A`3D(`4!`5$ `6`7z`78|9ӿ`:^;`<`=`>t`?O`@cV`AnBLrC`2r`3= `4Q`5`61`6`88`9:`;ڽ<=>?@eA`BEjCc`D%LECb`F.G#D`GK`I&`I-`J`K`L2Mp   LMTPETTPETST PETT-12 PK ND< Asia/YerevanUT soSsoSux TZif2AH P'0@50̅te|V lG!\8"L)#<$, %& '`' `(@( p)@*ij0+p,p-p.p/tp0dp2p3=4Rk5r62M6T8j`869L`:;.`<5`=`>`?`@e`ABE`CcD%`ECF`G#GIIΝJxKL̕`MaNw`   )*0FP 8@8@FP 8@ *08@*08@8@FP8@LMTYERTYERSTAMTAMST AMT-4 PK NDN  Asia/DaccaUT soSsoSux TZif2ۆq̕2ݨҘO J;Kö ŘPGy:[?@eAȐBECcD%wECFYG#nGuIPIWJ2K9LOMyp ~~ ~ p LMTYAKTYAKST YAKT-10 PK ND^\ff Asia/ThimbuUT soSsoSux TZif2 t!aMT MXT`LMTISTBTT BTT-6 PK NDĒ& Asia/KashgarUT soSsoSux TZif2DǑm06ip ~h!Iap"^J#)Cp$Gg%_&'I&A(+(#G<MXFP~ p LMTKASTCDTCST CST-8 PK ND'A޵rr Asia/AlmatyUT soSsoSux TZif23{ܵ0'} ivgXI|: l+!\"L #;$+%& '@'|)Ԧ*ĉ+@,@-@.@/tv@0dg@1]2rm3=t4RO5V621688N@890@:;@<@=@>@?@@e@AB5 H$FPbp T`T`bp LMTALMTALMST ALMT-6 PK NDs.գ Asia/TbilisiUT soSsoSux TZif26 P'0@50̅te|V lG!\8"L)#<$, %& '`' `(( p)`P)P*@+P,@-P.@/tv@0dY01]3=f4RA5V62#688@089"0:;0<@=0>@?0@e@@ǰABEp   ***0 FP8@ 8@ FP8@*08@*0FP8@8@LMTTBMTTBITTBISTGETGEST GET-4 PK NDy¨ Asia/SaigonUT soSsoSux TZif2 oB_ГAdcbppbpLMTSMTICT ICT-7 PK NDmo Asia/AqtobeUT soSsoSux TZif2 4 h@'  ' wufW|H l9!\*"L#< $+%& ' P')K0)Դ *ė+P,P-P.P/tP0duP1]2r{3=4R]5d62?6F8\P8(9>P: ; P<'P=P> P?P@ePAB50 58@FPT` T`FPT` T`FPT`FPLMTAKTTAKTSTAQTSTAQTT AQTT-5 PK ND+/%Asia/ChongqingUT soSsoSux TZif2m6ip ~h!Iap"^J#)Cp$Gg%_&'I&A(+(#cbp~ p LMTLONTCDTCST CST-8 PK NDc Asia/CalcuttaUT soSsoSux TZif2ۆq̕2tRR[hMX [h LMTHMTBURTIST IST-5:30 PK ND`Asia/Ujung_PandangUT soSsoSux TZif2]ՐˈVpoop~ pLMTMMTWITAJST WITA-8 PK NDO|u Asia/NicosiaUT soSsoSux TZif2 w ݒ d P 9``uOc`SPM3P#`P`P`hPg`fe|H lG!\*"L)#< $, %& ' P' `(P)`*P+`,P-`.P/t`0duP1]2M3=4-s5r62x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~yH*0  *0LMTEESTEET EET-2EEST,M3.5.0/3,M10.5.0/4 PK ND7,껀Asia/VientianeUT soSsoSux TZif2 oFP_ГA`0cbppbpLMTSMTICT ICT-7 PK NDi8hhAsia/ChoibalsanUT soSsoSux TZif20( ܐȀ?p"`!p`p{` kp![`"Kp#;`$+p%`& p''()ԉ*l+k,N-M.0/t/0d1]Lp2M/`3=.p4-`5p6 `:饐;<=>?tb@daATDBDCC4&D$%ECGkXbpp~ p LMTULATCHOTCHOST CHOT-8 PK NDy1Ebb Asia/BruneiUT soSsoSux TZif2DgGkixpLMTBNT BNT-8 PK NDhAsia/PyongyangUT soSsoSux TZif2~x𸄴xO)5xuw~p~LMTKST KST-9 PK NDmׇ Asia/RangoonUT soSsoSux TZif2sXњgZ(Z([h~ [hLMTRMTBURTJSTMMT MMT-6:30 PK ND4qq Asia/TehranUT soSsoSux TZif2el}Ht-@@0:@UgEJ7-( v(۝)˜*"+H,V8-./o7H0a81Pj2B324%u5#H686V7ܸ8֊H98:H;8{vH?m8@\AO/B?.C1GHHO8INHJ8KLMHNz;8OhP[nQKmR=S,HT'8U VZVHW8XэHY8Z[F\H]z8^u'_g`WaJ2b8Hc+f8de eGHf8gHhR8ijk3Hl8mfnsobHpU 8qEHr78s&RtظuHu 8vw?x>yĸzrH{8|}+~nHa_8080818FP 8@?H 18LMTTMTIRSTIRDT PK NDXGAsia/VladivostokUT soSsoSux TZif2 A YGP'E`yxP`1`>/ | k!["KՀ#;ƀ$+%& ''()x])m*P+z,k-\.M/t>0d/1]Z2r53=<4R5616889:Ā;<=>?@eABECcD%iEC~FKG#`GgIBIIJ$K+LAM {~  ~  LMTVLATVLASTVLASST VLAT-11 PK NDAnn Asia/GazaUT soSsoSux TZif3YPͬϏfЩyф`Ҋpek6c`-P ``mﰳpy%ZYsp;Up6Ep9'BP| ` 3``P `!I"^# ]P$Z0`%?P& &'(P)`*+e,-G._P/{)0H01dF`2A`3D(`4!`5$ `6`67a`8DP8}9`:_;B#?@A\B^CAD-`EPFFopGHIJ<`K.LaMN5POt`P[QT`RDPS4`T$PU`VdPVWFPXY(PZa[ P\C]&^}%_m`]aLbF$`c,d&`e f`fPg`hխPiŬ`jPk`lqPmnuSPonpU5PqNnr>Qs.Pt3u2uvO`wx1`yz`{|`}P~v`fP P*0 *0*0   LMTEETEESTIDTIST EET-2EEST,M3.5.4/24,M9.3.6/144 PK NDXXAsia/JerusalemUT soSsoSux TZif30EYPͬϏfЩyф`ҊpekZ`/pF۴4ܹ ޴΀ߤvV}J`64tҀ'O| ` 3``P `!I"^# ]P$Z0`%?P& &'(P)`*+e,-G._P/{)0H1H2p?|@s6pAP`BLCHOpD,qEF SFcG5HpIJKL MNpOtP^BQTـRlIpS4TL+pUV, pVX)XaY ZC[\`]^}B_`]$a}pb=c]pde=pfgtpghVpiȀj8pklTmn6oenpqNres.mtEuOv.pv1xpxypz{Οp|}p~vcp! *0 8@*0LMTJMTIDTISTIDDT IST-2IDT,M3.4.4/26,M10.5.0 PK NDs+;; Asia/MacauUT soSsoSux TZif2+$wѸN(W0(7dh( 8G(c'`8C(B8_^A@#"~n]M=p-& ( 8 ( ֩8 ƌ( 8n(<vo;p_:Op8]j|~p p LMTMOSTMOTCST CST-8 PK NDXX Asia/Tel_AvivUT soSsoSux TZif30EYPͬϏfЩyф`ҊpekZ`/pF۴4ܹ ޴΀ߤvV}J`64tҀ'O| ` 3``P `!I"^# ]P$Z0`%?P& &'(P)`*+e,-G._P/{)0H1H2p?|@s6pAP`BLCHOpD,qEF SFcG5HpIJKL MNpOtP^BQTـRlIpS4TL+pUV, pVX)XaY ZC[\`]^}B_`]$a}pb=c]pde=pfgtpghVpiȀj8pklTmn6oenpqNres.mtEuOv.pv1xpxypz{Οp|}p~vcp! *0 8@*0LMTJMTIDTISTIDDT IST-2IDT,M3.4.4/26,M10.5.0 PK NDjRNNAsia/UlaanbaatarUT soSsoSux TZif2/L ܐȀM0p/p{p k![p"KՀ#;p$+%p& ''()Ԙ*z+z,\-\.>/t>0d 1]Z2M=p3=<4-p56 p:鳠;<=>?tp@doATRBDQC44D$3EQd4bp~ pLMTULATULAST ULAT-8 PK NDjRNNAsia/Ulan_BatorUT soSsoSux TZif2/L ܐȀM0p/p{p k![p"KՀ#;p$+%p& ''()Ԙ*z+z,\-\.>/t>0d 1]Z2M=p3=<4-p56 p:鳠;<=>?tp@doATRBDQC44D$3EQd4bp~ pLMTULATULAST ULAT-8 PK ND8y Asia/OralUT soSsoSux TZif24ܵ@'  ' wufW|H l9!\*"L#< $+%& '`')K@)0*ĥ +`,`-`.`/t`0d`1]2r3=4Rk5r62M6T8j`869L`:;.`<5`=`>`?`@e`AB5@ 0$8@FPT` T`FPT` FP 8@FP8@FP8@FPLMTURATURASTORASTORAT ORAT-5 PK ND^\ff Asia/ThimphuUT soSsoSux TZif2 t!aMT MXT`LMTISTBTT BTT-6 PK NDYɖff Asia/QatarUT soSsoSux TZif2 00P8@*0LMTGSTAST AST-3 PK ND Asia/NovosibirskUT soSsoSux TZif2 B $ 'o׀֐ [hYJ;|, l!\"K#;$+%Ұ& ð'0'0(@)x@)Ԙ*z+0+N,@-@.@/tv@0dg@1]2rm3=t4RO5V621688N@890@:;@<@=@>@?@@e@ABE@CcD%@ECF@G#GIzI΁J\KcLy@MEMT`p bpbpp bp T`bp bpLMTNOVTNOVST NOVT-7 PK NDs+;; Asia/MacaoUT soSsoSux TZif2+$wѸN(W0(7dh( 8G(c'`8C(B8_^A@#"~n]M=p-& ( 8 ( ֩8 ƌ( 8n(<vo;p_:Op8]j|~p p LMTMOSTMOTCST CST-8 PK NDCє Asia/KarachiUT soSsoSux TZif2 ~̕2tݨO0MX[hFPT` FPLMTISTKARTPKSTPKT PKT-5 PK ND=m$$ Asia/TaipeiUT soSsoSux TZif2) їazpyBZ:#p<fp&pYݪrsߵdp|ᖗ]wp>0 p!qp p ?/ypVp ݉ νPSq~pLMTCDTCST CST-8 PK NDwff Asia/BahrainUT soSsoSux TZif2 /l8@*0LMTGSTAST AST-3 PK NDy¨Asia/Ho_Chi_MinhUT soSsoSux TZif2 oB_ГAdcbppbpLMTSMTICT ICT-7 PK ND+/%Asia/ChungkingUT soSsoSux TZif2m6ip ~h!Iap"^J#)Cp$Gg%_&'I&A(+(#cbp~ p LMTLONTCDTCST CST-8 PK NDgw Asia/ColomboUT soSsoSux TZif2Z(̕+u81(2q D?(JJMXT` [h[hT`MXLMTMMTISTIHSTLKT IST-5:30 PK ND܆2u Asia/KhandygaUT soSsoSux TZif2 C 뵣'Sp`p?pL=.| l!["K#;Ԑ$+Ő%& ''( )xk ){*^+,y-j.[/tL0d=1]h2rC3=J4R%5,6268$89:Ґ;<=>??p@eABECcD%iEC~FKG#`GgIBIIJ$K+LAM NnP        p ~~ ~ pLMTYAKTYAKSTVLASTVLAT YAKT-10 PK ND|1B Asia/Ust-NeraUT soSsoSux TZif2 B ݺ'Spkj@P#P0p!ppp{p kp![p"Kp#;p$+p%p& p''()xO)_*B+k,\-M.>/t/0d 1]Lp2r'p3=.p4R p5p61p6p88p9:p;<=>?@eApBExCcpD%ZECppF۫ڀ݋~~~JSTCJTJDT JST-9 PK NDÃL Asia/DushanbeUT soSsoSux TZif20'} ivgXI|: l+!\"L #;$+%& '@'@(ʏP@FPbp T`T`bp T` FPLMTDUSTDUSSTTJT TJT-5 PK NDc0NN Asia/HovdUT soSsoSux TZif2/ ֐ [>= | l!["K#;ƀ$+Ő%& ''()Ԧ*ĉ+,k-j.M/tL0d/1]h2MK3=J4--5,6 :;<=>?t~@d}AT`BD_C4BD$AE_ UT`p bpLMTHOVTHOVST HOVT-7 PK NDK+1#ii Asia/KatmanduUT soSsoSux TZif2 }0OMXPLMTISTNPT NPT-5:45 PK ND"UU Asia/RiyadhUT soSsoSux TZif2a6+*0LMTAST AST-3 PK ND'%` Asia/MagadanUT soSsoSux TZif2 A 6'7Pkj@P#P0p!ppp{p kp![p"Kp#;p$+p%p& p''()xO)_*B+k,\-M.>/t/0d 1]Lp2r'p3=.p4R p5p61p6p88p9:p;<=>?@eApBExCcpD%ZECppF3?@fA+BECd D%ـECFG#GIIκJKḺM~NOn`PuQW|RlWS7^TL9U@V,V"X8XYZ[\]^_`_a}܀b?c]de=fgg艀hdikjFkMlcm/nEohp'qQ.rf s1tEuv/vxxжyˀz{έ|}~yq .*0FP 8@8@FP 8@ *08@8@FP8@FPLMTBAKTBAKSTAZTAZST AZT-4AZST,M3.5.0/4,M10.5.0/5 PK ND Asia/BaghdadUT soSsoSux TZif260<0hPPC@̓@Pte|V lG!\8"L)#<$, %& '`'x(纀)*?+0,s-d./|0m1_2P_3@P415!6778<9~:o;<=>ր?z@k[A\BLC=рD-€EFG8))*08@ *08@ LMTBMTASTADT AST-3 PK NDDYAsia/KrasnoyarskUT soSsoSux TZif2 A  'o׀֐ [hYJ;|, l!\"K#;$+%Ұ& ð'0'0(@)x@)Ԙ*z+0,0-0.w0/th00dY01]2r_3=f4RA5H62#6*8@08 9"0:;0< 0=0>0?0@e0ABE0CcưD%0ECFu0G#GIlIsJNKULk0M7WT`p bpbpp bp T`pp LMTKRATKRAST KRAT-8 PK NDaV@6UU Asia/DubaiUT soSsoSux TZif238@LMTGST GST-4 PK NDt*ҭAsia/PontianakUT soSsoSux TZif2 yVp<&!tffix~ ppbpLMTPMTWIBJSTWITA WIB-7 PK ND\Asia/AshkhabadUT soSsoSux TZif2  D@' 0' wufW|H l9!\*"L#< $+%& ' P'P(`) @)x` 68@T` FPFPT` FP 8@8@FPLMTASHTASHSTTMT TMT-5 PK NDfrq Asia/AqtauUT soSsoSux TZif24ൣ@Ԯ00 ' wufW|H l9!\*"L#< $+%& ' P')K0)Դ *ė+P,P-P.P/tP0d`1]2r3=4Rk5r62M6T8j`869L`:;.`<5`=`>`?`@e`AB5@  / 8@FPFP T` T`FP T`T`FPT`FPFP8@8@FPLMTFORTSHETSHESTAQTSTAQTT AQTT-5 PK ND>*gg Asia/DamascusUT soSsoSux TZif2 x/^pa>p@ap Հ}R[ps(;~pUT66Hptp4gpgIa+C  p$S  .p p ?kYsLpmpJpU#p Gz!"`41hP5`677P89TP:S`;<=P>`?y@k?`A\sBLrC=PD-`EPF 6G*>PGS`I qIJPK`LPM`NPOt`PPQT`RiPS4`TRU`V2Vc`XjXYLZa[.\C]^}%_-P`]a{Pb/t/0d 1]Lp2r'p3=.p4R5616889:Ā;<=>?@eABECcD%iEC~FKG#`GgIBIIJ$K+LAM ~~   LMTCJTJSTSAKSTSAKT SAKT-11 PK ND` Asia/MakassarUT soSsoSux TZif2]ՐˈVpoop~ pLMTMMTWITAJST WITA-8 PK NDvόaUU Asia/MuscatUT soSsoSux TZif268@LMTGST GST-4 PK NDaAsia/Phnom_PenhUT soSsoSux TZif2 oD$_ГAb\cbppbpLMTSMTICT ICT-7 PK NDj9aa Asia/BangkokUT soSsoSux TZif2 jg^<^<bpLMTBMTICT ICT-7 PK ND4''Asia/SamarkandUT soSsoSux TZif2  `@'  ' wufW|H l9!\*"L#< $+%& ' P'P( (P)`0 >8@FPT` T`FPT` FPT`FPLMTSAMTSAMSTTASTUZTUZST UZT-5 PK NDfWڒ Asia/DiliUT soSsoSux TZif2˙2Vp 0p9Ùup~~p ~LMTTLTJSTWITA TLT-9 PK ND Atlantic/UT soSsoSux PK ND``Atlantic/St_HelenaUT soSsoSux TZif2 BXLMTJMTGMT GMT0 PK ND">>Atlantic/South_GeorgiaUT soSsoSux TZif2GST GST2 PK NDƮvAtlantic/FaeroeUT soSsoSux TZif2t mX#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~yLMTWETWEST WET0WEST,M3.5.0/1,M10.5.0 PK NDՠN~Atlantic/CanaryUT soSsoSux TZif2w\A M63#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y   LMTCANTWETWEST WET0WEST,M3.5.0/1,M10.5.0 PK NDWSSAtlantic/Jan_MayenUT soSsoSux TZif2 '{`ȷM`Kͩ΢Cϒ4Ђ%rb L=.xhXG7'/ҐΗMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y       LMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK NDtmxxAtlantic/Cape_VerdeUT soSsoSux TZif2 Q̕ t| @LMTCVTCVST CVT1 PK ND@!!Atlantic/AzoresUT soSsoSux TZif2 XK㠜 ɟ_pAn#)O @k"p>rP 2h䐸ՐƐ{ xhzXk?!8M:XȐK<˵òh͕ܿQgrېu3ϬRХUьf2҅YI9@)@@ @@@ܹu@ݲޢߒsrdbURFB72("E@ 6@'@@ @@@@@@z@j@cSC3#qb )Et6d'T&D 4#̠۠˰Ӯß    | l !\q "Lb #A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  (LMTHMTAZOSTAZOTAZOMTWET AZOT1AZOST,M3.5.0/0,M10.5.0/1 PK NDƮvAtlantic/FaroeUT soSsoSux TZif2t mX#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~yLMTWETWEST WET0WEST,M3.5.0/1,M10.5.0 PK ND0Atlantic/ReykjavikUT soSsoSux TZif2A`шrQMf&C& %ˬB ͌$μ lМ K҅+ʠe9 Eq %S p w ܹY 4 ޢu߮ W b9m BM !6ؠ   ~ ` Bj _ S_A 3?# d F (E l  LMTRMTISSTISTGMT GMT0 PK ND)Atlantic/BermudaUT soSsoSux TZif2  ` P ` xP w` ٔ Y`vuXWy:i9YI8("PP`P`P`P u!P"U#j$5%J&'*e'`) G)ޗ`*)+y`,FP-[`.(P/~=`0 P1gY2rP3G;4RP5'62P7889:;ې<`=r>`?T@o`AqPBO`CdSPD/h`ED5PEG-QG|I 3I^JK{`L2PM|]`NPO\?`PPQ)P?Z`@ PA:`BaPC`DAPDo`F!PFQ`H HmIJOKʑL1  LMTSMTFKSTFKT FKST3 PK NDAtlantic/MadeiraUT soSsoSux TZif2 "XK{Րɑ_bA瀣n}#Oɶ2]zp0rP2Zրǀ︀mx{hlX]?8?:X=.q˵àYܱ͕CYpr̀u%ϬuRХUьW2t҅YI90)00 000ܹg0ݲޢߒterVbGR8B)2" 70 (00 0000000z0j0cSC3#rcT  7t(dTC3#ܐ͐㽠ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  ((LMTFMTMADSTMADTMADMTWESTWET WET0WEST,M3.5.0/1,M10.5.0 PK ND Australia/UT soSsoSux PK NDҗAustralia/NorthUT soSsoSux TZif2 N'T^x̷]ͧ@xΠzχ"x~CST CST-9:30 PK NDتAustralia/WestUT soSsoSux TZif2N¼=T s̷rͧU  b)%\) Eq Fg G#|GI^Iel~p~pLMTWST WST-8 PK ND3>>Australia/MelbourneUT soSsoSux TZif2N TWp̷Vͧ9pΠsχpp9 P8/ ߀  ~^>xXf8H矀!dǁFc(E y Y~!w"B#i$"}%I&_')') )*s+ʀ,ҏ-x.q/t>0S1]Z2r53=<4R5616889:Ā;<=>?@eABECcD.EC~FKG#`GHIׄJuKfLWMHN9Ow*PpUQ`FRP7S@(T0U VVW݀X΀YϿZ[\]^_x`haXbHsc8dd(UeFfqgbgShDi5j&klmnopۀpjqYrIs9t)uv vwxـyqzb{|~}o~`rQLMTEST EST-10EST,M10.1.0,M4.1.0/3 PK NDXzL>>Australia/CanberraUT soSsoSux TZif2N TWp̷Vͧ9pΠsχpp9 P8/ ߀  ~^>xXf8H !dǁFc(E y Y~!΀"B#i$"}%I%')') )*s+ʀ,ҏ-x.q/X0S1]Z2r53=<4R5616889:Ā;<=>?@eABECcD.EC~FKG#`GHIׄJuKfLWMHN9Ow*PpUQ`FRP7S@(T0U VVW݀X΀YϿZ[\]^_x`haXbHsc8dd(UeFfqgbgShDi5j&klmnopۀpjqYrIs9t)uv vwxـyqzb{|~}o~`rQLMTEST EST-10EST,M10.1.0,M4.1.0/3 PK ND P Australia/LHIUT soSsoSux TZif2s f8@h!]xlh?xNh!x0hxyp Ypp!x"B#i$"n%I%')'Ͻ) )*k+p,҈x-xp.jx/Xp0Lx1]Lp2r.x3=.p4Rx5p61x6p88p9x:p;<=>?@eAxBExCcxD.pECwxFfcpg[xgEph=xi'pjxk plxmpnxopppiqYrIs9t)uv vwxqyizS{x|pp}hx~RprJx$LMTESTLHST LHST-10:30LHST-11,M10.1.0,M4.1.0 PK NDҗAustralia/DarwinUT soSsoSux TZif2 N'T^x̷]ͧ@xΠzχ"x~CST CST-9:30 PK NDتAustralia/PerthUT soSsoSux TZif2N¼=T s̷rͧU  b)%\) Eq Fg G#|GI^Iel~p~pLMTWST WST-8 PK ND3>>Australia/VictoriaUT soSsoSux TZif2N TWp̷Vͧ9pΠsχpp9 P8/ ߀  ~^>xXf8H矀!dǁFc(E y Y~!w"B#i$"}%I&_')') )*s+ʀ,ҏ-x.q/t>0S1]Z2r53=<4R5616889:Ā;<=>?@eABECcD.EC~FKG#`GHIׄJuKfLWMHN9Ow*PpUQ`FRP7S@(T0U VVW݀X΀YϿZ[\]^_x`haXbHsc8dd(UeFfqgbgShDi5j&klmnopۀpjqYrIs9t)uv vwxـyqzb{|~}o~`rQLMTEST EST-10EST,M10.1.0,M4.1.0/3 PK NDJ^Australia/BrisbaneUT soSsoSux TZif2N TWp̷Vͧ9pΠsχpp9 %I%')') )xLMTEST EST-10 PK NDV<<Australia/SouthUT soSsoSux TZif2N'T^x̷]ͧ@xΠzχ"xp@ #P"?0!   Ȉ   ^>xXm8O禈!kLjMj/Ly Y!Ո"B#i$"%I&f')') )d*z+ш,Җ-(.x/tE0Z1]a2r<3=C4R5%626889:ˈ;<=>?@eABECcD.ECFRG#gGHI׋J|KmL^MON@Ow1Pp\Q`MRP>S@/T0 U VVWXՈYƈZ[\]^_x`haXbHzc8kd(\eMfxgigZhKi> Australia/NSWUT soSsoSux TZif2N TWp̷Vͧ9pΠsχpp9 P8/ ߀  ~^>xXf8H !dǁFc(E y Y~!΀"B#i$"}%I%')') )*s+ʀ,ҏ-x.q/X0S1]Z2r53=<4R5616889:Ā;<=>?@eABECcD.EC~FKG#`GHIׄJuKfLWMHN9Ow*PpUQ`FRP7S@(T0U VVW݀X΀YϿZ[\]^_x`haXbHsc8dd(UeFfqgbgShDi5j&klmnopۀpjqYrIs9t)uv vwxـyqzb{|~}o~`rQLMTEST EST-10EST,M10.1.0,M4.1.0/3 PK NDDn\ffAustralia/HobartUT soSsoSux TZif2x TWp̷Vͧ9pΠsχp~Yv;V?p9 P8/ ߀  ~^>xXf8HO!d1Fc(E g' Y~!΀"B#i$"}%I&_')'()Ԙ*À+z,-\./t>0mi1]Z2V3=<46h56J67,89:Ā;*<= >?~@eA^ЀBEC>D.EFKGGHIׄJuKfLWMHN9Ow*PpUQ`FRP7S@(T0U VVW݀X΀YϿZ[\]^_x`haXbHsc8dd(UeFfqgbgShDi5j&klmnopۀpjqYrIs9t)uv vwxـyqzb{|~}o~`rQLMTEST EST-10EST,M10.1.0,M4.1.0/3 PK NDDn\ffAustralia/TasmaniaUT soSsoSux TZif2x TWp̷Vͧ9pΠsχp~Yv;V?p9 P8/ ߀  ~^>xXf8HO!d1Fc(E g' Y~!΀"B#i$"}%I&_')'()Ԙ*À+z,-\./t>0mi1]Z2V3=<46h56J67,89:Ā;*<= >?~@eA^ЀBEC>D.EFKGGHIׄJuKfLWMHN9Ow*PpUQ`FRP7S@(T0U VVW݀X΀YϿZ[\]^_x`haXbHsc8dd(UeFfqgbgShDi5j&klmnopۀpjqYrIs9t)uv vwxـyqzb{|~}o~`rQLMTEST EST-10EST,M10.1.0,M4.1.0/3 PK NDV<<Australia/AdelaideUT soSsoSux TZif2N'T^x̷]ͧ@xΠzχ"xp@ #P"?0!   Ȉ   ^>xXm8O禈!kLjMj/Ly Y!Ո"B#i$"%I&f')') )d*z+ш,Җ-(.x/tE0Z1]a2r<3=C4R5%626889:ˈ;<=>?@eABECcD.ECFRG#gGHI׋J|KmL^MON@Ow1Pp\Q`MRP>S@/T0 U VVWXՈYƈZ[\]^_x`haXbHzc8kd(\eMfxgigZhKi> Australia/ACTUT soSsoSux TZif2N TWp̷Vͧ9pΠsχpp9 P8/ ߀  ~^>xXf8H !dǁFc(E y Y~!΀"B#i$"}%I%')') )*s+ʀ,ҏ-x.q/X0S1]Z2r53=<4R5616889:Ā;<=>?@eABECcD.EC~FKG#`GHIׄJuKfLWMHN9Ow*PpUQ`FRP7S@(T0U VVW݀X΀YϿZ[\]^_x`haXbHsc8dd(UeFfqgbgShDi5j&klmnopۀpjqYrIs9t)uv vwxـyqzb{|~}o~`rQLMTEST EST-10EST,M10.1.0,M4.1.0/3 PK NDnAAAustralia/YancowinnaUT soSsoSux TZif2N'T^x̷]ͧ@xΠzχ"xp@ #P"?0!   Ȉ   ^>xXm8O !kLjMj/Ly Y!Ո"B#i$"%I%')') )*z+ш,Җ-x.x/X0Z1]a2r<3=C4R5%62688l89:ˈ;<=>?@eABECcD.ECFRG#gGHI׋J|KmL^MON@Ow1Pp\Q`MRP>S@/T0 U VVWXՈYƈZ[\]^_x`haXbHzc8kd(\eMfxgigZhKi?@eAxBExCcxD.pECwxFfcpg[xgEph=xi'pjxk plxmpnxopppiqYrIs9t)uv vwxqyizS{x|pp}hx~RprJx$LMTESTLHST LHST-10:30LHST-11,M10.1.0,M4.1.0 PK NDnAAAustralia/Broken_HillUT soSsoSux TZif2N'T^x̷]ͧ@xΠzχ"xp@ #P"?0!   Ȉ   ^>xXm8O !kLjMj/Ly Y!Ո"B#i$"%I%')') )*z+ш,Җ-x.x/X0Z1]a2r<3=C4R5%62688l89:ˈ;<=>?@eABECcD.ECFRG#gGHI׋J|KmL^MON@Ow1Pp\Q`MRP>S@/T0 U VVWXՈYƈZ[\]^_x`haXbHzc8kd(\eMfxgigZhKi>Australia/SydneyUT soSsoSux TZif2N TWp̷Vͧ9pΠsχpp9 P8/ ߀  ~^>xXf8H !dǁFc(E y Y~!΀"B#i$"}%I%')') )*s+ʀ,ҏ-x.q/X0S1]Z2r53=<4R5616889:Ā;<=>?@eABECcD.EC~FKG#`GHIׄJuKfLWMHN9Ow*PpUQ`FRP7S@(T0U VVW݀X΀YϿZ[\]^_x`haXbHsc8dd(UeFfqgbgShDi5j&klmnopۀpjqYrIs9t)uv vwxـyqzb{|~}o~`rQLMTEST EST-10EST,M10.1.0,M4.1.0/3 PK NDګ>>Australia/CurrieUT soSsoSux TZif2x TWp̷Vͧ9pΠsχpp9 P8/ ߀  ~^>xXf8HO!d1Fc(E g' Y~!΀"B#i$"}%I&_')'()Ԙ*À+z,-\./t>0mi1]Z2V3=<46h56J67,89:Ā;*<= >?~@eA^ЀBEC>D.EFKGGHIׄJuKfLWMHN9Ow*PpUQ`FRP7S@(T0U VVW݀X΀YϿZ[\]^_x`haXbHsc8dd(UeFfqgbgShDi5j&klmnopۀpjqYrIs9t)uv vwxـyqzb{|~}o~`rQLMTEST EST-10EST,M10.1.0,M4.1.0/3 PK NDVZAustralia/LindemanUT soSsoSux TZif2N TWp̷Vͧ9pΠsχpp9 %I%')') )*Ph*s+ʀ,ҏ-xLMTEST EST-10 PK NDJ^Australia/QueenslandUT soSsoSux TZif2N TWp̷Vͧ9pΠsχpp9 %I%')') )xLMTEST EST-10 PK NDBrazil/UT soSsoSux PK NDC# Brazil/WestUT soSsoSux TZif2  DWNB@ނ08@@ܹg0#@ޛ0ݨ@TA0 l0r@,Q:@0 @ɜ@xC 3ݰ!w@" ְ,@-f0Ǽ LMTAMSTAMT AMT4 PK NDm Brazil/EastUT soSsoSux TZif2 rI@40t 800ܹY 0ޛ ݚ0T3 Z 0^ d0Q,0 Ұ0}Ɏ0xנ5 3Ϡ!i0" Ƞ#X#p %7% '!0')0) * +k2,0-f .0/F 0y01M2W 3j 48T04 6 06h7ư8 90:,;N?0@.ҠA0B CQ0C EMSEG0G HIw JڄKLfM`uNHOI Pe0Q 9RcG0STC)0T8 V# 0V X0X Y0Z [\h ]Ͱ^H _`1akbcKsc e+Uedgr0gFhT0ic j60kzE l0mZ' n0o: p}q r\r t<ڰtٯ vvˠwx y܀z{ŝ0|bq}0~K a0L LMTBRSTBRT BRT3BRST,M10.3.0/0,M2.3.0/0 PK NDٔM   Brazil/AcreUT soSsoSux TZif2 f\PPސ@8PPܹu@1Pޛ@ݶPTO@z@P:QHP@ "PɪPxQ 3!P" H`PRp LMTACSTACTAMT ACT5 PK NDw!Brazil/DeNoronhaUT soSsoSux TZif2( ed;и2& f8 ӠܹK ޛ݌ T%PV Q Ƿ Ġ oɀ xɐ' 3![ " #X#b%7%Թ78w9 9;p?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Q?@oΐABOCd}D/ED_EG-|GӧI ^IJ@KL\M|N>O\iP Q?@oܠABOCdD/EDmE G-Gӵ I lI JNKLjM|NLO\wP.Q?@oܠABOCdD/EDmE G-Gӵ I lI JNKLjM|NLO\wP.Q`?T@o`AqPBO`CdSPD/h`ED5PEG-QG|I 3I^JK{`L2PM|]`NPO\?`PPQt?1@otANdBOctCd0dD/EtEDdEwG-.GYI I;JKXtLdM|:tN HO\8XPHQ<XRuHSXTUHTXV5HVXXYZ[u\]W^d_9`MXaVHb-Xcg8Hd cXeGHeEXg&Hg'XiHi XjHk%lmvnoUpq5rostOdtXv8HvެXxcHxXyEHzpX{'H|~RX} H~^4XHΔܤΔ LMTNDTNSTNPTNWTNDDT NST3:30NDT,M3.2.0,M11.1.0 PK ND[@L77Canada/CentralUT soSsoSux TZif2úPp ;Oˈ#pa ӈhS`U 5\ޗݩp޾y߉rp[iTp~=I6p^)pG<4'o1bJvgXI:+ wqa P@0ހ π  ٿ utyeiVYGI89))"E' ܀̀ v!"U#j$5%J&'*'р) r)޳*T+,p-w.R/~Y041gv2s3GX4R5':62ڀ7889:;ۻ<=>ހ?@oABOCd}CoD/EDQpEG-mGәI OI{J1KLNpM|yN0pO\[PpQ<=RupSTUpTV5pVXXYZ[ޘ\]z^d_\`M€aypb-cg[pd eG=pehg'pgJipi,jpkIlmv+noV pq5rostOtv8pvπxpxyhpz{Jp|~u},p~^Wp LMTCDTCSTCWTCPT CST6CDT,M3.2.0,M11.1.0 PK ND7<CETUT soSsoSux TZif2 `ٮ qKͩ΢Cϒ4Ђ%rN@ cEt6d'TMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  CESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK NDChile/UT soSsoSux PK NDN~`Chile/ContinentalUT soSsoSux TZif3 $iƛ\PqFq^wƱw=@AгXp"4P9@gзP\ Pn@lɰvP<@rܰuP@IU2 +>O@  @@ Ѱ @ 0 @ 0@h0H0f(v0F&{t]V?8\@>@p @ 0!o@"90#E$0%8&&'١0()½*צ+,-.j/bc0@1BE2`i@3=04@K@5 D06 @7հ8@809+:0; <0=>j0?@SʰAhB3CHDE1@EpG@G0Hv@Io0JX@KL:@M0NPOPBQ|R+@S\rT @UO@  @@ Ѱ @ 0 @ 0@h0H0f(v0F&{t]V?8\@>@p @ 0!o@"90#E$0%8&&'١0()½*צ+,-.j/bc0@1BE2`i@3=04@K@5 D06 @7հ8@809+:0; <0=>j0?@SʰAhB3CHDE1@EpG@G0Hv@Io0JX@KL:@M0NPOPBQ|R+@S\rT @Uހ?p@oApBOCdopD/EDQpEG-mGәI OI{J1KLNpM|yN0pO\[PpQ<=RupSTUpTV5pVXXYZ[ޘ\]z^d_\`M€aypb-cg[pd eG=pehg'pgJipi,jpkIlmv+noV pq5rostOtv8pvπxpxyhpz{Jp|~u},p~^Wp CDTCSTCWTCPT CST6CDT,M3.2.0,M11.1.0 PK ND)\yCubaUT soSsoSux TZif2b€ӔPt]@[fQ@;Hʼm$eP̜O P;ӣP`}@=DS;@ũh@wp@`P5@PH@ P{ P j@ iP ن KPhP}@Qf1F[&{;d]F?(\@ >@zSP @ Z5P!o@"CQ#N@$#3%.@&''P()މP*״+kP,-MP.x/~/P0wZ1gK2W<3G-4@YP5P62P6P889:Ƶ;ېP?T@f[ED5PEG$PGܩPIPIPJPKmPLMNNOwPPQ<PRuPSPTUPTPV5PVXXYZ[|\]^^d{_@`MPa]Pb-zPcg?Pd \PeG!Pe>Pg'Pg PiPiPjPklmvnoUpq5rostOktPv8PvޥPxjPxPyLPziP{.P|~KP}P~^-PP LMTHMTCDTCST CST5CDT,M3.2.0/0,M11.1.0/1 PK NDPTZ EETUT soSsoSux TZif2z cEt6d'TMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y*0 EESTEET EET-2EEST,M3.5.0/3,M10.5.0/4 PK NDEEEgyptUT soSsoSux TZif2 ȓ{ˮ`)ͬϏfЩyф`ҊP6c`-P ``mﰳpy%ZYsp;Up6Ep9۾p%gYpIap+C Հ$Ep x < 1pdt(pU\np7OPHp{<pp4g p!a"z\p#D $b'p%%S&^`?sWP@zA\sBq\CEPF1 FjPHHIJPK`LaLXLPSu8S:ST$PU9k`UUzVdPW"WU`W}`WYiY(`YP2`YbZKZX`["`[D\-\\\]&^ɜ_m`OaV%PbpT`c6PdJ`ePf*`fPh `hխPi`jPkӲlmn~ovp^oqsXr>QsS:t3uA?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y   $ LMTDMTISTBSTGMT GMT0IST,M3.5.0/1,M10.5.0 PK NDs>>ESTUT soSsoSux TZif2EST EST5 PK NDp-_]]EST5EDTUT soSsoSux TZif2p`p`ˈp#p`X;:wp``pP`@p0`p ` ` p ٢ gpfeyHiGY*I)9 ) ")` ` p`p`p` v!`"U#j$5%J&'*s'p) U)ޥp*7+p,T`-ip.6`/~Kp0`1gg2r`3GI4R`5'+62`7 889:;۞p?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Q1 PK ND>>Etc/UTCUT soSsoSux TZif2UTC UTC0 PK NDx=GG Etc/GMT+12UT soSsoSux TZif2W@GMT+12 12 PK ND:DD Etc/GMT+2UT soSsoSux TZif2GMT+2 2 PK ND>> Etc/UniversalUT soSsoSux TZif2UTC UTC0 PK ND>>Etc/ZuluUT soSsoSux TZif2UTC UTC0 PK NDń,DD Etc/GMT+8UT soSsoSux TZif2GMT+8 8 PK NDPY\>> Etc/GMT+0UT soSsoSux TZif2GMT GMT0 PK ND۵EE Etc/GMT-6UT soSsoSux TZif2T`GMT-6 -6 PK NDUbEE Etc/GMT-1UT soSsoSux TZif2GMT-1 -1 PK NDy>>Etc/UCTUT soSsoSux TZif2UCT UCT0 PK ND;HH Etc/GMT-13UT soSsoSux TZif2GMT-13 -13 PK NDiDD Etc/GMT+7UT soSsoSux TZif2GMT+7 7 PK ND㯎DD Etc/GMT+6UT soSsoSux TZif2GMT+6 6 PK NDpUHH Etc/GMT-14UT soSsoSux TZif2GMT-14 -14 PK NDPY\>>Etc/GMT0UT soSsoSux TZif2GMT GMT0 PK NDqDD Etc/GMT+9UT soSsoSux TZif2pGMT+9 9 PK NDPY\>> Etc/GMT-0UT soSsoSux TZif2GMT GMT0 PK NDcEE Etc/GMT-8UT soSsoSux TZif2pGMT-8 -8 PK ND?HH Etc/GMT-12UT soSsoSux TZif2GMT-12 -12 PK ND84SDD Etc/GMT+5UT soSsoSux TZif2GMT+5 5 PK NDvPiEE Etc/GMT-4UT soSsoSux TZif28@GMT-4 -4 PK ND[EE Etc/GMT-3UT soSsoSux TZif2*0GMT-3 -3 PK ND{EE Etc/GMT-5UT soSsoSux TZif2FPGMT-5 -5 PK NDjgDD Etc/GMT+4UT soSsoSux TZif2GMT+4 4 PK ND8DD Etc/GMT+3UT soSsoSux TZif2GMT+3 3 PK NDPY\>>Etc/GMTUT soSsoSux TZif2GMT GMT0 PK ND..GG Etc/GMT+10UT soSsoSux TZif2s`GMT+10 10 PK NDPY\>> Etc/GreenwichUT soSsoSux TZif2GMT GMT0 PK ND-ĮEE Etc/GMT-7UT soSsoSux TZif2bpGMT-7 -7 PK ND [HH Etc/GMT-10UT soSsoSux TZif2GMT-10 -10 PK NDKmLGG Etc/GMT+11UT soSsoSux TZif2ePGMT+11 11 PK NDEE Etc/GMT-9UT soSsoSux TZif2~GMT-9 -9 PK ND)EE Etc/GMT-2UT soSsoSux TZif2 GMT-2 -2 PK ND !kHH Etc/GMT-11UT soSsoSux TZif2GMT-11 -11 PK NDEurope/UT soSsoSux PK ND{wK:VVEurope/BelfastUT soSsoSux TZif2& 0à ve {ȠN? %` ' *, Ӡ l N y0 РpLrP.IZ 02vXԠ W  x z Xy Q8[ : X֠ &ʗYw;ͱ`Xϐn^r2i c)I !BN . p  ޴߮ ̠rHkt R*T2 = ) T q S  g} aI_ Jf _A ! ?#  Ѡ {ǻpp )X P  : 0  l N  0  qޠ.Qy1X#8Ɛ͐㯐Ñk lr!M"LT#a/$,6%JK& '*-'4) )*+,Ӑ-ڐ./t00$1]2r3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  LMTBSTGMTBDST GMT0BST,M3.5.0/1,M10.5.0 PK ND=>Europe/BudapestUT soSsoSux TZif2 `ٮ0Xp) dyp( ZA?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y      LMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK ND࿃Europe/IstanbulUT soSsoSux TZif2  `վТec{PN`?Ц%''Ъ((`Ы1P`J`΀Pˮ`Pqk PӢ9`CPL ){+ ]`?`\P`ݳ`dh`8kKi`4Pnp9u  :  ` $P 9`P`sPgM6Gz#݀'\>PܔP|s ld!\U"LF#<7$,(%& '5'p( p)p*p+p,p-p.p/tp0dp1]2r3=4Ry562[6b8xp8D9Zp:&;%p?p@fpABEpCcD%pECE2FɐG#GIIJKL̿MݐNOnnPQWRleS8TLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y                               (h*0 8@*0*0 *0 LMTIMTEESTEETTRSTTRT EET-2EEST,M3.5.0/3,M10.5.0/4 PK NDl Europe/TiraneUT soSsoSux TZif2 4hmpKͩ͸(9>` x q Op H` k*`pt `pS`pp;`Hp`1p_`̯| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  LMTCETCEST CET-1CEST,M3.5.0,M10.5.0/3 PK ND8r00 Europe/DublinUT soSsoSux TZif2 & 0à ve {ȠN? ?%` ' *, Ӡ l N y0 РpLrP.IZ 02vXԠ W  x z Xy Q8[ : X֠ I!N,( . p  ޴߮ ̠rHkt R*T2 = ) T q S  g} aI_ Jf _A ! ?#  Ѡ {ǻpp )X P  : 0  l N  0  qޠ.Qy1X#8Ɛ͐㯐Ñk lr!M"LT#a/$,6%JK& '*-'4) )*+,Ӑ-ڐ./t00$1]2r3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y   $ LMTDMTISTBSTGMT GMT0IST,M3.5.0/1,M10.5.0 PK ND[11 Europe/KievUT soSsoSux TZif2 y "d`.Kͩ΢Cͨp'@PC@̓s|d lU!\F"L7#<($,% & & ()`*P+`,P-`.P/t0d1]2r3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y           *0   8@*0 8@*0*0 LMTKMTEETMSKCETCESTMSDEEST EET-2EEST,M3.5.0/3,M10.5.0/4 PK NDohӱEurope/TiraspolUT soSsoSux TZif2&k >``ߍ`~`ȩླྀྨ࿘|mx^hOX@H18"(ȼ`w}PKͩ΢Cϒ4N`'@PC@̓s|d lU!\F"L7#<($,% %sP&C>'&()``)`*P+`,P-`.P/t`0duP1]2r{3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  x*0   *0   8@*0"*0"8@*0  LMTCMTBMTEESTEETCETCESTMSDMSK EET-2EEST,M3.5.0/3,M10.5.0/4 PK ND#:.66Europe/ZaporozhyeUT soSsoSux TZif2 z "0`ʪKͩ΢Cνp'@PC@̓s|d lU!\F"L7#<($,% & ''p'p(P)`*P+`,P-`.P/t0d1]2r3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y            *0   8@*0 8@*0*0 LMTCUTEETMSKCETCESTMSDEEST EET-2EEST,M3.5.0/3,M10.5.0/4 PK ND{wK:VV Europe/JerseyUT soSsoSux TZif2& 0à ve {ȠN? %` ' *, Ӡ l N y0 РpLrP.IZ 02vXԠ W  x z Xy Q8[ : X֠ &ʗYw;ͱ`Xϐn^r2i c)I !BN . p  ޴߮ ̠rHkt R*T2 = ) T q S  g} aI_ Jf _A ! ?#  Ѡ {ǻpp )X P  : 0  l N  0  qޠ.Qy1X#8Ɛ͐㯐Ñk lr!M"LT#a/$,6%JK& '*-'4) )*+,Ӑ-ڐ./t00$1]2r3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  LMTBSTGMTBDST GMT0BST,M3.5.0/1,M10.5.0 PK NDY_Europe/VaticanUT soSsoSux TZif2 7𝵼pp`~p\7pL(pl5Kͩ΢Cϒ4_`nBprL>1Ip)뀐 3pp`Ųb`ZpBwpv+np gE:I .Wp 9 9p  ptppSpΗMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y       RMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK ND]h=KEurope/SarajevoUT soSsoSux TZif2y 5Kͩ΢Cϒ4Ђ%pѡN@E_p㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y8   LMTCETCEST CET-1CEST,M3.5.0,M10.5.0/3 PK ND`W> Europe/MaltaUT soSsoSux TZif2 7𝵼pp`~p\7pL(pl5Kͩ΢Cϒ4Ђ%rL>1Ip)뀐 3pp`Ųb`ZpBwpv+3p $pp4p  ؐрavAE[*#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y       LMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK NDmEb$[[Europe/KaliningradUT soSsoSux TZif2N" `ٮ qKͩ΢Cϒ4Ђ%pѕ`ҊP&'@PC@̓s|d lU!\F"L7#<($,% & ''p'p()P*@+,ۀ-̀./t0d1]2r3=4R562j6q88S9h:5;J3?@fA+BECd D%ـECFG#GIIκJKḺM~  8    *0 8@ *0*08@ *0 *0 *0LMTCESTCETMSDMSKEESTEETFET FET-3 PK NDMR\\ Europe/MonacoUT soSsoSux TZif2 `POGx,ppHp*` .zL5^#p%5'X&p}4p_PAɧ#Opkp"prpPpI//p2Lpppp`ȷ𽸨_pxlh]XN?p80:Xp [T˭iKͩ΢Cϒ4ЉrN@ 9  cEt6d'TMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y 1     LMTPMTWESTWETWEMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK NDD1 Europe/MinskUT soSsoSux TZif2 E &8`^pKͩ΢Cϒ4 `'@PC@̓s|d lU!\F"L7#<($,% %sP'p()`*`+,ۀ-̀./t0d1]2r3=4R562j6q88S9h:5;J3?@fA+BECd D%ـECFG#GIIκJKḺM~       *0   8@*0 8@*0 *0"LMTMMTEETMSKCETCESTMSDEESTFET FET-3 PK NDuff Europe/AthensUT soSsoSux TZif2 !|ƯcPKͪL΢ϓip`߷ P ^` ` ͮ U]7jd{RF`3P#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y                                                         <<*0  *0 *0 LMTAMTEESTEETCETCEST EET-2EEST,M3.5.0/3,M10.5.0/4 PK ND;rtEurope/MariehamnUT soSsoSux TZif2vsoQ`̿#݀΀㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~yhh*0 *0 LMTHMTEESTEET EET-2EEST,M3.5.0/3,M10.5.0/4 PK NDNN Europe/MoscowUT soSsoSux TZif2M"_؝>*9Xm(<@m=2h=EP`'@PC@̓s|d lU!\F"L7#<($,% & ''p'p()x)@*ij0+p,p-p.p/tp0dp1]2r3=4Ry562[6b8xp8D9Zp:&;%p?p@fpABEpCcD%pECFpG#GIIΫJKḶpMo  #<#(1h#X?x *08@FP *08@*0 8@8@LMTMMTMSTMDSTMSKMSDEETEEST MSK-4 PK NDWSS Europe/OsloUT soSsoSux TZif2 '{`ȷM`Kͩ΢Cϒ4Ђ%rb L=.xhXG7'/ҐΗMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y       LMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK NDa++ Europe/SofiaUT soSsoSux TZif2  Kͩ΢Cϒ4Ђ%pr$ cPU?M 5!,p 㡀ӒÃ|s ld!\U"LF#<7$,(%& '5'' `(P)`*P+`,P-`.P/t`0duP1]2r{3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y                                         h   *0 *0*0 IMTEETCETCESTEEST EET-2EEST,M3.5.0/3,M10.5.0/4 PK ND]h=K Europe/SkopjeUT soSsoSux TZif2y 5Kͩ΢Cϒ4Ђ%pѡN@E_p㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y8   LMTCETCEST CET-1CEST,M3.5.0,M10.5.0/3 PK NDdҀ   Europe/SamaraUT soSsoSux TZif2B& PL&'0@50̅te|V lG!\8"L)#<$, % & ''p'p())0*ĥ +`,`-`.`/t`0d`1]2r3=4Rk5r62M6T8j`869L`:;.`<5`=`>`?`@e`ABE`CcD%`ECF`G#GIIΝJxKḶpMo    /*08@FP 8@8@FP 8@ *0*0  FPFP8@8@*08@LMTSAMTKUYSTKUYTSAMST SAMT-4 PK ND Europe/MadridUT soSsoSux TZif2 pp*p^pp_ɧ#Opkp"prpPp¨pXN9p80:!Mp`̖`K`΢ϣ-`Ѝ`у``pb`AF p ` tp   9`ltpd'TMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y     LMTWESTWETWEMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK ND Europe/ZurichUT soSsoSux TZif2w jqLS#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y    BMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK ND ++Europe/CopenhagenUT soSsoSux TZif2 `վCWpKͩ΢Cϒ4Ђ%r$y^Gɐ׿ΗMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y       CMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK ND Rhh Europe/RigaUT soSsoSux TZif2&F˃ȯd`bePKͩ΢Cϒ4Ђ%Аp'@PC@̓s|d lU!\F"L7#<($,%& '5'&()*+,ۀ-̀./t0d1]2M23=4R562x688:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y                                         $ *0  8@*08@*0! *0! LMTRMTLSTEETMSKCETCESTMSDEEST EET-2EEST,M3.5.0/3,M10.5.0/4 PK ND]h=KEurope/BelgradeUT soSsoSux TZif2y 5Kͩ΢Cϒ4Ђ%pѡN@E_p㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y8   LMTCETCEST CET-1CEST,M3.5.0,M10.5.0/3 PK NDѿ]NN Europe/ViennaUT soSsoSux TZif2 `ٮppD[ qKͩ΢Cϒ4Ђ%rE4cI9), M'3`#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~yQ      LMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK NDI.gg Europe/ParisUT soSsoSux TZif2 `PGx,ppHp*` .zL5^#p%5'X&p}4p_PAɧ#Opkp"prpPpI//p2Lpppp`ȷ𽸨_pxlh]XN?p80:Xp l'Kͩ΢Cϒ4OЉrN@ 9  cEt6d'TMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y   11      LMTPMTWESTWETCETCESTWEMT CET-1CEST,M3.5.0,M10.5.0/3 PK NDO|uEurope/NicosiaUT soSsoSux TZif2 w ݒ d P 9``uOc`SPM3P#`P`P`hPg`fe|H lG!\*"L)#< $, %& ' P' `(P)`*P+`,P-`.P/t`0duP1]2M3=4-s5r62x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~yH*0  *0LMTEESTEET EET-2EEST,M3.5.0/3,M10.5.0/4 PK NDE[ww Europe/BerlinUT soSsoSux TZif2  `ٮ qKͩ΢Cϒ4Ђ%rѶXҡO4cK#9 gըs), xΗMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y     *0 *0   LMTCESTCETCEMT CET-1CEST,M3.5.0,M10.5.0/3 PK ND]h=K Europe/ZagrebUT soSsoSux TZif2y 5Kͩ΢Cϒ4Ђ%pѡN@E_p㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y8   LMTCETCEST CET-1CEST,M3.5.0,M10.5.0/3 PK ND>;Europe/StockholmUT soSsoSux TZif2w `MD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  SETCETCEST CET-1CEST,M3.5.0,M10.5.0/3 PK NDohӱEurope/ChisinauUT soSsoSux TZif2&k >``ߍ`~`ȩླྀྨ࿘|mx^hOX@H18"(ȼ`w}PKͩ΢Cϒ4N`'@PC@̓s|d lU!\F"L7#<($,% %sP&C>'&()``)`*P+`,P-`.P/t`0duP1]2r{3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  x*0   *0   8@*0"*0"8@*0  LMTCMTBMTEESTEETCETCESTMSDMSK EET-2EEST,M3.5.0/3,M10.5.0/4 PK ND$r]]Europe/TallinnUT soSsoSux TZif2}"Y-̞+psoLȰƗPKͩ΢Cϒ4t'@PC@̓s|d lU!\F"L7#<($,%& '5'&()*+,ۀ-̀./t0d1]2r3=4R56P62x688<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y                                       44    *0 8@*08@*0  *0*0LMTTMTCESTCETEETMSKMSDEEST EET-2EEST,M3.5.0/3,M10.5.0/4 PK ND]h=KEurope/PodgoricaUT soSsoSux TZif2y 5Kͩ΢Cϒ4Ђ%pѡN@E_p㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y8   LMTCETCEST CET-1CEST,M3.5.0,M10.5.0/3 PK ND{wK:VVEurope/Isle_of_ManUT soSsoSux TZif2& 0à ve {ȠN? %` ' *, Ӡ l N y0 РpLrP.IZ 02vXԠ W  x z Xy Q8[ : X֠ &ʗYw;ͱ`Xϐn^r2i c)I !BN . p  ޴߮ ̠rHkt R*T2 = ) T q S  g} aI_ Jf _A ! ?#  Ѡ {ǻpp )X P  : 0  l N  0  qޠ.Qy1X#8Ɛ͐㯐Ñk lr!M"LT#a/$,6%JK& '*-'4) )*+,Ӑ-ڐ./t00$1]2r3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  LMTBSTGMTBDST GMT0BST,M3.5.0/1,M10.5.0 PK NDY_Europe/San_MarinoUT soSsoSux TZif2 7𝵼pp`~p\7pL(pl5Kͩ΢Cϒ4_`nBprL>1Ip)뀐 3pp`Ųb`ZpBwpv+np gE:I .Wp 9 9p  ptppSpΗMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y       RMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK ND{wK:VVEurope/GuernseyUT soSsoSux TZif2& 0à ve {ȠN? %` ' *, Ӡ l N y0 РpLrP.IZ 02vXԠ W  x z Xy Q8[ : X֠ &ʗYw;ͱ`Xϐn^r2i c)I !BN . p  ޴߮ ̠rHkt R*T2 = ) T q S  g} aI_ Jf _A ! ?#  Ѡ {ǻpp )X P  : 0  l N  0  qޠ.Qy1X#8Ɛ͐㯐Ñk lr!M"LT#a/$,6%JK& '*-'4) )*+,Ӑ-ڐ./t00$1]2r3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  LMTBSTGMTBDST GMT0BST,M3.5.0/1,M10.5.0 PK ND Europe/VaduzUT soSsoSux TZif2w jqLS#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y    BMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK ND;rtEurope/HelsinkiUT soSsoSux TZif2vsoQ`̿#݀΀㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~yhh*0 *0 LMTHMTEESTEET EET-2EEST,M3.5.0/3,M10.5.0/4 PK NDO22Europe/UzhgorodUT soSsoSux TZif2 z  qKͩ΢Cϒ4Ѐ`С'@PC@̓s|d lU!\F"L7#<($,% %sP&.'B)`*P+`,P-`.P/t0d1]2r3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y   8@ *0*08@  *0*0 LMTCETCESTMSDMSKEETEEST EET-2EEST,M3.5.0/3,M10.5.0/4 PK ND'xxEurope/GibraltarUT soSsoSux TZif2& 0à ve {ȠN? %` ' *, Ӡ l N y0 РpLrP.IZ 02vXԠ W  x z Xy Q8[ : X֠ &ʗYw;ͱ`Xϐn^r2i c)I !BN . p  ޴߮ ̠rHkt R*T2 = ) T͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y   LMTBSTGMTBDSTCETCEST CET-1CEST,M3.5.0,M10.5.0/3 PK ND=퟼MMEurope/BucharestUT soSsoSux TZif2>``ߍ`~`ȩླྀྨ࿘|mx^hOX@H18"(`SPM 3`#݀΀㡀ӒÃ|s ld!\U"LF#<7$,(%& '5'' `(`)`*`+`,`-$-`.P/t`0duP1]2r{3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~yxx*0 *0 *0 LMTBMTEESTEET EET-2EEST,M3.5.0/3,M10.5.0/4 PK ND-FFEurope/SimferopolUT soSsoSux TZif2M" `Kͩ΢Cϒ4ϟ8'@PC@̓s|d lU!\F"L7#<($,% %sP&.)`*P+`,P-`-.@/tP0dg@1]1]2r2~3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7^           *0   8@*0 8@*0*0 8@ LMTSMTEETMSKCETCESTMSDEEST MSK-4 PK ND6hSS Europe/PragueUT soSsoSux TZif2 `ٮ qKͩ΢Cϒ4n^yҡOӀIL8), pxdpd'TMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y       PMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK ND{wK:VV Europe/LondonUT soSsoSux TZif2& 0à ve {ȠN? %` ' *, Ӡ l N y0 РpLrP.IZ 02vXԠ W  x z Xy Q8[ : X֠ &ʗYw;ͱ`Xϐn^r2i c)I !BN . p  ޴߮ ̠rHkt R*T2 = ) T q S  g} aI_ Jf _A ! ?#  Ѡ {ǻpp )X P  : 0  l N  0  qޠ.Qy1X#8Ɛ͐㯐Ñk lr!M"LT#a/$,6%JK& '*-'4) )*+,Ӑ-ڐ./t00$1]2r3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  LMTBSTGMTBDST GMT0BST,M3.5.0/1,M10.5.0 PK NDZk__Europe/AmsterdamUT soSsoSux TZif2 .\ٸ %  Av p#V P6 %['^㌩Z 煌' gf IΙ+pH R P* s0 T  @x q쌼 Ό،]x§ˌ]\Xtpp8Vp`!rDPKͩ΢Cϒ4Ђ%rN@ *p cEt6d'TMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y         LMTNSTAMTNETNESTCETCEST CET-1CEST,M3.5.0,M10.5.0/3 PK NDVH$Europe/VolgogradUT soSsoSux TZif2 A Fܫ؆P PL@'0@50̅te|V lG!\8"L)#<$, % & ''p'p)`*ij0+p,p-p.p/tp0dp1]2r3=4Ry562[6b8xp8D9Zp:&;%p?p@fpABEpCcD%pECFpG#GIIΫJKḶpMo                     )*0*0 8@ FP8@8@FP8@*0*08@LMTTSATSTATVOLSTVOLT VOLT-4 PK NDY_ Europe/RomeUT soSsoSux TZif2 7𝵼pp`~p\7pL(pl5Kͩ΢Cϒ4_`nBprL>1Ip)뀐 3pp`Ųb`ZpBwpv+np gE:I .Wp 9 9p  ptppSpΗMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y       RMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK NDmbbEurope/VilniusUT soSsoSux TZif2z&OPJ0fx`ȬpY*Kͩ΢Cϒ40='@PC@̓s|d lU!\F"L7#<($,% & ''p'p()*+,ۀ-̀./t0d1]2r3=4R4`562x68>`>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y    h  *0   8@*08@*0!    *0!LMTWMTKMTCETEETMSKCESTMSDEEST EET-2EEST,M3.5.0/3,M10.5.0/4 PK NDy%=AXXEurope/BrusselsUT soSsoSux TZif2 DI %pٮ0`~p.zL5^#p%5'*}4p_PAɧ#OpkpLrP.IZ 02v㠹Ԡ֋  x h Xy ?/8[ : X֠ J Kͩ΢Cϒ4[`n^rN@ӑ@K# *p cEt6d'TMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y       BMTWETCETCESTWEST CET-1CEST,M3.5.0,M10.5.0/3 PK ND]h=KEurope/LjubljanaUT soSsoSux TZif2y 5Kͩ΢Cϒ4Ђ%pѡN@E_p㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y8   LMTCETCEST CET-1CEST,M3.5.0,M10.5.0/3 PK NDEurope/BusingenUT soSsoSux TZif2w jqLS#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y    BMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK ND  Europe/LisbonUT soSsoSux TZif2 KmpǀpɃprp_TppApnop# Opɧ#Opkp"prpPp2Lppppȷ𽸨_pxlh]XN?p80:Xpp/p pb˵R̀Kܢ͕4K`rſpuϬgRХpTьI2f҅pYI9 )  ܹY ݲޢuߒfWrHb9R*B2 !)    z j cSC3#sdUF *  7t(dTC3#ܐ͐㽠ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y p      LMTWESTWETWEMTCETCEST WET0WEST,M3.5.0/1,M10.5.0 PK ND6hSSEurope/BratislavaUT soSsoSux TZif2 `ٮ qKͩ΢Cϒ4n^yҡOӀIL8), pxdpd'TMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y       PMTCESTCET CET-1CEST,M3.5.0,M10.5.0/3 PK NDB?Europe/AndorraUT soSsoSux TZif2lA| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~yl  LMTWETCETCEST CET-1CEST,M3.5.0,M10.5.0/3 PK NDN8 Europe/WarsawUT soSsoSux TZif2 *Л `ٮe}|`vKͩ΢Cϒ4Ѐ`ЄѕpҊ`bpK#^), xT᥀і캳Zzw<ZY:;}: *p U 7t(dT M63#݀΀㡀ӒÃ|s ld!\U!"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y     *0    LMTWMTCESTCETEESTEET CET-1CEST,M3.5.0,M10.5.0/3 PK ND@afkkEurope/LuxembourgUT soSsoSux TZif2`pp`~堢.zi5^?%5'*4pnآpPɧ2Opkp0rpP.IZ 02v㠹Ԡ֋  x h Xy ?/8[ : X֠ B0 Kͩ΢Cϒ4orN@ӑ@K# *p cEt6d'TMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y              LMTCESTCETWESTWET CET-1CEST,M3.5.0,M10.5.0/3 PK NDFactoryUT soSsoSux TZif21Local time zone must be set--see zic manual page 0 PK ND{wK:VVGBUT soSsoSux TZif2& 0à ve {ȠN? %` ' *, Ӡ l N y0 РpLrP.IZ 02vXԠ W  x z Xy Q8[ : X֠ &ʗYw;ͱ`Xϐn^r2i c)I !BN . p  ޴߮ ̠rHkt R*T2 = ) T q S  g} aI_ Jf _A ! ?#  Ѡ {ǻpp )X P  : 0  l N  0  qޠ.Qy1X#8Ɛ͐㯐Ñk lr!M"LT#a/$,6%JK& '*-'4) )*+,Ӑ-ڐ./t00$1]2r3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  LMTBSTGMTBDST GMT0BST,M3.5.0/1,M10.5.0 PK ND{wK:VVGB-EireUT soSsoSux TZif2& 0à ve {ȠN? %` ' *, Ӡ l N y0 РpLrP.IZ 02vXԠ W  x z Xy Q8[ : X֠ &ʗYw;ͱ`Xϐn^r2i c)I !BN . p  ޴߮ ̠rHkt R*T2 = ) T q S  g} aI_ Jf _A ! ?#  Ѡ {ǻpp )X P  : 0  l N  0  qޠ.Qy1X#8Ɛ͐㯐Ñk lr!M"LT#a/$,6%JK& '*-'4) )*+,Ӑ-ڐ./t00$1]2r3=4R562x688a9v:C;X<_=:>A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  LMTBSTGMTBDST GMT0BST,M3.5.0/1,M10.5.0 PK NDPY\>>GMTUT soSsoSux TZif2GMT GMT0 PK NDPY\>>GMT0UT soSsoSux TZif2GMT GMT0 PK NDPY\>>GMT-0UT soSsoSux TZif2GMT GMT0 PK NDPY\>>GMT+0UT soSsoSux TZif2GMT GMT0 PK NDPY\>> GreenwichUT soSsoSux TZif2GMT GMT0 PK NDkJHongkongUT soSsoSux TZif2FiZW:KxLbpj8ԓJB8֚>A.$9ܸʨޢ8߬[(8(Oi8v(/K8_Ǩ-8?I+m Ol(wѸN(W0(@8h( 8G(%~8a(`8C(B8_^A@#"~n]MG(78&(=8 ( 8 ( ֩8 ƌ(98olk ~p ~ p LMTHKSTHKTJST HKT-8 PK ND#??HSTUT soSsoSux TZif2s`HST HST10 PK ND0IcelandUT soSsoSux TZif2A`шrQMf&C& %ˬB ͌$μ lМ K҅+ʠe9 Eq %S p w ܹY 4 ޢu߮ W b9m BM !6ؠ   ~ ` Bj _ S_A 3?# d F (E l  LMTRMTISSTISTGMT GMT0 PK NDIndian/UT soSsoSux PK NDxYUU Indian/ComoroUT soSsoSux TZif2(*0LMTEAT EAT-3 PK NDBB Indian/CocosUT soSsoSux TZif2[hCCT CCT-6:30 PK NDw}iaaIndian/MaldivesUT soSsoSux TZif2 /ØDDFPLMTMMTMVT MVT-5 PK ND:UUUIndian/ReunionUT soSsoSux TZif2948@LMTRET RET-4 PK ND&8??Indian/ChristmasUT soSsoSux TZif2bpCXT CXT-7 PK ND9bb Indian/ChagosUT soSsoSux TZif2~0ݰCFPT`LMTIOT IOT-6 PK ND#HPttIndian/AntananarivoUT soSsoSux TZif2 3⫹@,*08@*0LMTEATEAST EAT-3 PK NDbZUU Indian/MaheUT soSsoSux TZif2d38@LMTSCT SCT-4 PK NDtUUIndian/KerguelenUT soSsoSux TZif2abFPzzzTFT TFT-5 PK NDvvIndian/MauritiusUT soSsoSux TZif2 @r0IIΏ5FP8@ LMTMUSTMUT MUT-4 PK ND^UUIndian/MayotteUT soSsoSux TZif2*h*0LMTEAT EAT-3 PK ND4qqIranUT soSsoSux TZif2el}Ht-@@0:@UgEJ7-( v(۝)˜*"+H,V8-./o7H0a81Pj2B324%u5#H686V7ܸ8֊H98:H;8{vH?m8@\AO/B?.C1GHHO8INHJ8KLMHNz;8OhP[nQKmR=S,HT'8U VZVHW8XэHY8Z[F\H]z8^u'_g`WaJ2b8Hc+f8de eGHf8gHhR8ijk3Hl8mfnsobHpU 8qEHr78s&RtظuHu 8vw?x>yĸzrH{8|}+~nHa_8080818FP 8@?H 18LMTTMTIRSTIRDT PK NDXXIsraelUT soSsoSux TZif30EYPͬϏfЩyф`ҊpekZ`/pF۴4ܹ ޴΀ߤvV}J`64tҀ'O| ` 3``P `!I"^# ]P$Z0`%?P& &'(P)`*+e,-G._P/{)0H1H2p?|@s6pAP`BLCHOpD,qEF SFcG5HpIJKL MNpOtP^BQTـRlIpS4TL+pUV, pVX)XaY ZC[\`]^}B_`]$a}pb=c]pde=pfgtpghVpiȀj8pklTmn6oenpqNres.mtEuOv.pv1xpxypz{Οp|}p~vcp! *0 8@*0LMTJMTIDTISTIDDT IST-2IDT,M3.4.4/26,M10.5.0 PK ND>ndJamaicaUT soSsoSux TZif2 p ` ` p ٢ gpfeyHiGY*I)9 ) ")` ` LMTKMTESTEDT EST5 PK NDrJapanUT soSsoSux TZif2  ΅p>۫ڀ݋~~~JSTCJTJDT JST-9 PK NDpp KwajaleinUT soSsoSux TZif2 P,tW@LMTMHTKWAT MHT-12 PK NDvȁ  LibyaUT soSsoSux TZif2!$ݻ#`xe/?pNB`p+*_`̯`z p` pJp!a~"Rp#D$4%%7`&@2N`3D6p45jPQTـRi \   LMTCESTCETEET EET-2 PK NDQ/ METUT soSsoSux TZif2 `ٮ qKͩ΢Cϒ4Ђ%rN@ cEt6d'TMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y  MESTMET MET-1MEST,M3.5.0,M10.5.0/3 PK NDMexico/UT soSsoSux PK NDUooMexico/GeneralUT soSsoSux TZif2cpnfV`C` 6`ް`Ɨ4PUPϷVPڙv1gv2sp3GX4Rp5':62p7889:;<=>ހ?p@oApBOCdopD/EDQpFfG$3pGIpIeJpKGLM)NOx PQa'RlSA TLU V,}ẀXpXீY|pZ[^p\]@p^_"p`ira~>bITc^ d)6e>fRgg4hijݨklpmڀnpoqppqZrfkps:tFMpuv/ivxKxay-zC{|_}~A  LMTMSTCSTCDTCWT CST6CDT,M4.1.0,M10.5.0 PK ND zzMexico/BajaNorteUT soSsoSux TZif2yOp|fdp ꍀ#pҙpYؑ~YIR^;)4GX Q': 3    ௠    ysir YUIT 97)6 "S  54ې v+ !"V #j$5 %J& '*') )Ϡ*b+,~-.`/~u0B1g 2s$3Gt 4S5'V 6278 88 9: ;<=>?@oܠABOCdD/EDmFG$OG I1I؁ JKLjM|NLO\wP.Q?@oΐABOCd}D/ED_FtG$AGI#IsJKUL"M7NOxPQa5RlSATLU V,WېXXཐYZ[l\]N^_0`ia~MbIbc^/d)De>f`ggBhi$jݷklӀmnoqʐpqZrfys:tF[uv/xvxZxoy<zQ{|m}~O< LMTMSTCSTPSTMDT MST7MDT,M4.1.0,M10.5.0 PK ND%j>>MSTUT soSsoSux TZif2MST MST7 PK NDz0]]MST7MDTUT soSsoSux TZif2:ˉ #pauXW:9wqaP@0ހ5   ࡐ ٿ yeidYGIF9))("E '& ̀ v!"U#j$5%J&'*'ߐ) r)*T+,p-.R/~g041g2s3Gf4R5'H62ڀ7*88 9:;ۻ< =>?@oΐABOCd}D/ED_EG-|GӧI ^IJ@KL\M|N>O\iP Q?@oΐABOCd}D/ED_EG-|GӧI ^IJ@KL\M|N>O\iP QNZUT soSsoSux TZif2QXxhC`Xh#`8h`hmḩOh཮࿎nƒNcp.~L``,o`}hښ@  ` ~^>xgXIf8+`!H`e`*`G` `)``g `` F`!`"0 #i$%.`&B' `'$(`)*ͧ`+#`,`-`.k`/j`0mM`1J`2Vi3*`46K5 `6-678Ӌ9:m;`s1?~`@\N`A^`B<0`C>`D`Ex`E`FZ`GH<`IgJ`KIL`M+N}`Ow PfQ`*`RFS@ `T&U`VV`WX߲`YhZ`[`\]g`^_oI``htaO+`bHVc/ `d(8e`fU`f g7`hi`jk`lm`nwop`p``qYr@`s9t t`uvV`vw8`xcy`zE{6|b`}~D`h LMTNZSTNZMTNZDT NZST-12NZDT,M9.5.0,M4.1.0/3 PK ND8  NZ-CHATUT soSsoSux TZif2  ` ~^>xgXIf8+`!H`e`*`G` `)``g `` F`!`"0 #i$%.`&B' `'$(`)*ͧ`+#`,`-`.k`/j`0mM`1J`2Vi3*`46K5 `6-678Ӌ9:m;`s1?~`@\N`A^`B<0`C>`D`Ex`E`FZ`GH<`IgJ`KIL`M+N}`Ow PfQ`*`RFS@ `T&U`VV`WX߲`YhZ`[`\]g`^_oI``htaO+`bHVc/ `d(8e`fU`f g7`hi`jk`lm`nwop`p``qYr@`s9t t`uvV`vw8`xcy`zE{6|b`}~D`h\L L LMTCHADTCHAST CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45 PK NDPacific/UT soSsoSux PK NDbggPacific/GalapagosUT soSsoSux TZif2 LPLMTECTGALT GALT6 PK NDҿVVPacific/GuadalcanalUT soSsoSux TZif2O3LMTSBT SBT-11 PK NDxmmPacific/KosraeUT soSsoSux TZif2 P6g@LMTKOST KOST-11 PK ND8  Pacific/ChathamUT soSsoSux TZif2  ` ~^>xgXIf8+`!H`e`*`G` `)``g `` F`!`"0 #i$%.`&B' `'$(`)*ͧ`+#`,`-`.k`/j`0mM`1J`2Vi3*`46K5 `6-678Ӌ9:m;`s1?~`@\N`A^`B<0`C>`D`Ex`E`FZ`GH<`IgJ`KIL`M+N}`Ow PfQ`*`RFS@ `T&U`VV`WX߲`YhZ`[`\]g`^_oI``htaO+`bHVc/ `d(8e`fU`f g7`hi`jk`lm`nwop`p``qYr@`s9t t`uvV`vw8`xcy`zE{6|b`}~D`h\L L LMTCHADTCHAST CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45 PK NDh+BB Pacific/TrukUT soSsoSux TZif2CHUT CHUT-10 PK NDwK Pacific/SamoaUT soSsoSux TZif2b8U+00x_^HeP eP ePLMTSAMTNSTBSTSST SST11 PK NDY``Pacific/PitcairnUT soSsoSux TZif2 5DB xLMTPNTPST PST8 PK ND˱ Pacific/EfateUT soSsoSux TZif2 ´fP{P k@![P"K@#;P$+@%~P& a@&`P'C@(|)Q@*H+a3@ LMTVUSTVUT VUT-11 PK NDh_@@Pacific/WallisUT soSsoSux TZif2WFT WFT-12 PK NDTbeePacific/NorfolkUT soSsoSux TZif2 AxLMTNMTNFT NFT-11:30 PK ND(>Pacific/AucklandUT soSsoSux TZif2QXxhC`Xh#`8h`hmḩOh཮࿎nƒNcp.~L``,o`}hښ@  ` ~^>xgXIf8+`!H`e`*`G` `)``g `` F`!`"0 #i$%.`&B' `'$(`)*ͧ`+#`,`-`.k`/j`0mM`1J`2Vi3*`46K5 `6-678Ӌ9:m;`s1?~`@\N`A^`B<0`C>`D`Ex`E`FZ`GH<`IgJ`KIL`M+N}`Ow PfQ`*`RFS@ `T&U`VV`WX߲`YhZ`[`\]g`^_oI``htaO+`bHVc/ `d(8e`fU`f g7`hi`jk`lm`nwop`p``qYr@`s9t t`uvV`vw8`xcy`zE{6|b`}~D`h LMTNZSTNZMTNZDT NZST-12NZDT,M9.5.0,M4.1.0/3 PK NDcpjVVPacific/GambierUT soSsoSux TZif2 PH|pLMTGAMT GAMT9 PK NDL>BB Pacific/WakeUT soSsoSux TZif2WAKT WAKT-12 PK ND yy Pacific/NauruUT soSsoSux TZif2 +˴HBPp|~LMTNRTJST NRT-12 PK ND;5Pacific/TongatapuUT soSsoSux TZif2 sB7G8}:P:r@;PO@  @@ Ѱ @ 0 @ 0@h0H0f(v0F&{t]V?8\@>@p @ 0!o@"90#E$0%8&&'١0()½*צ+,-.j/bc0@1BE2`i@3=04@K@5 D06 @7հ8@809+:0; <0=>j0?@SʰAhB3CHDE1@EpG@G0Hv@Io0JX@KL:@M0NPOPBQ|R+@S\rT @UA?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y     *0    LMTWMTCESTCETEESTEET CET-1CEST,M3.5.0,M10.5.0/3 PK ND PortugalUT soSsoSux TZif2 KmpǀpɃprp_TppApnop# Opɧ#Opkp"prpPp2Lppppȷ𽸨_pxlh]XN?p80:Xpp/p pb˵R̀Kܢ͕4K`rſpuϬgRХpTьI2f҅pYI9 )  ܹY ݲޢuߒfWrHb9R*B2 !)    z j cSC3#sdUF *  7t(dTC3#ܐ͐㽠ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y p      LMTWESTWETWEMTCETCEST WET0WEST,M3.5.0/1,M10.5.0 PK NDBPXPRCUT soSsoSux TZif2 \'pZ6ip ~h!Iap"^J#)Cp$Gg%_&'I&A(+(#q~pLMTCDTCST CST-8 PK ND}gL]]PST8PDTUT soSsoSux TZif2H*ˉ#pa& fe HG *)  x q(a'Q A 0C ΐ ௠    ysir YUIT 97)6 "S  54ې v+ !"V #j$5 %J& '*') )Ϡ*b+,~-.`/~u0B1g 2s$3Gt 4S5'V 6278 88 9: ;<=>?@oܠABOCdD/EDmE G-Gӵ I lI JNKLjM|NLO\wP.Q0 p!qp p ?/ypVp ݉ νPSq~pLMTCDTCST CST-8 PK ND]ROKUT soSsoSux TZif2  ~x𸄴xO)ᒀ 5x Dp!n=`"&p#N`ww~~p~LMTKSTKDT KST-9 PK ND! SingaporeUT soSsoSux TZif2 gN `ʳ`ˑ_HmMa]a]bpg  g ix~ixpLMTSMTMALTMALSTJSTSGT SGT-8 PK ND࿃TurkeyUT soSsoSux TZif2  `վТec{PN`?Ц%''Ъ((`Ы1P`J`΀Pˮ`Pqk PӢ9`CPL ){+ ]`?`\P`ݳ`dh`8kKi`4Pnp9u  :  ` $P 9`P`sPgM6Gz#݀'\>PܔP|s ld!\U"LF#<7$,(%& '5'p( p)p*p+p,p-p.p/tp0dp1]2r3=4Ry562[6b8xp8D9Zp:&;%p?p@fpABEpCcD%pECE2FɐG#GIIJKL̿MݐNOnnPQWRleS8TLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~y                               (h*0 8@*0*0 *0 LMTIMTEESTEETTRSTTRT EET-2EEST,M3.5.0/3,M10.5.0/4 PK NDy>>UCTUT soSsoSux TZif2UCT UCT0 PK ND>> UniversalUT soSsoSux TZif2UTC UTC0 PK NDUS/UT soSsoSux PK NDwKUS/SamoaUT soSsoSux TZif2b8U+00x_^HeP eP ePLMTSAMTNSTBSTSST SST11 PK NDPl US/EasternUT soSsoSux TZif2p`p`epjp5`S`3އpiRK௳4~-౜QpgJ`|3pG,`\p'`;p`p`ƴ`Ĺ𿏲o„}Ovd_/XM|p:-^pW` @p9`ˈp#p`u@U 5peމpݩ`޾kp߉d`MpiF`~/pI(`^pW.G-7'ֶƵ`p`p`op_y`Oxp?[`/Zp(wp?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Q?@oΐABOCd}D/ED_EG-|GӧI ^IJ@KL\M|N>O\iP Q?@oܠABOCdD/EDmE G-Gӵ I lI JNKLjM|NLO\wP.Qp?b@opA`BOpCda`D/vpEDC`EG-_GӊI AIlJ#KpL@`M|kpN"`O\MpP`Q?0@oAŰBOCdD/EDE@G-0G@I 0I@Jj0KLֆM|NhO\PJQ? @oABO̰CdD/ED{E0G- G0I z I0J\ KLxM|NZO\P?@oܠABOCdD/EDmE G-Gӵ I lI JNKLjM|NLO\wP.Qހ?p@oApBOCdopD/EDQpEG-mGәI OI{J1KLNpM|yN0pO\[PpQ<=RupSTUpTV5pVXXYZ[ޘ\]z^d_\`M€aypb-cg[pd eG=pehg'pgJipi,jpkIlmv+noV pq5rostOtv8pvπxpxyhpz{Jp|~u},p~^Wp LMTCDTCSTESTCWTCPT CST6CDT,M3.2.0,M11.1.0 PK ND>>UTCUT soSsoSux TZif2UTC UTC0 PK NDZWETUT soSsoSux TZif2z cEt6d'TMD3#ܐ͐㯐ӠÑ| lr!\c"LT#A?@f#A9BFCdD%ECFɐG#GIIJKL̿MNOnnPQWRleS7lTLGUNV,)V0XFXY(Z[ \]^_`_a}b?c]̐de=fgg藐hriyjTk[lqm=nSohp5qQ<rfs1tEuv/vxxyِz{λ|}~yWESTWET WET0WEST,M3.5.0/1,M10.5.0 PK NDNNW-SUUT soSsoSux TZif2M"_؝>*9Xm(<@m=2h=EP`'@PC@̓s|d lU!\F"L7#<($,% & ''p'p()x)@*ij0+p,p-p.p/tp0dp1]2r3=4Ry562[6b8xp8D9Zp:&;%p?p@fpABEpCcD%pECFpG#GIIΫJKḶpMo  #<#(1h#X?x *08@FP *08@*0 8@8@LMTMMTMSTMDSTMSKMSDEETEEST MSK-4 PK ND>>ZuluUT soSsoSux TZif2UTC UTC0 PK NDAAfrica/UTsoSux PK NDFUU AAfrica/DoualaUTsoSux PK ND١??Africa/El_AaiunUTsoSux PK NDi?{{eAfrica/JohannesburgUTsoSux PK ND \\-Africa/Sao_TomeUTsoSux PK ND|%T??Africa/BujumburaUTsoSux PK NDvȁ  [Africa/TripoliUTsoSux PK NDeÁ Africa/TunisUTsoSux PK ND r Africa/JubaUTsoSux PK NDQWWh Africa/MbabaneUTsoSux PK ND|%T?? Africa/LubumbashiUTsoSux PK NDNNll Africa/NdjamenaUTsoSux PK ND*NUU F Africa/KigaliUTsoSux PK ND7(rr Africa/ConakryUTsoSux PK NDd6uu Africa/Dar_es_SalaamUTsoSux PK NDDtTT_ Africa/AbidjanUTsoSux PK NDlUUU Africa/DjiboutiUTsoSux PK NDGUrr Africa/BamakoUTsoSux PK NDPY\>> RAfrica/LomeUTsoSux PK NDGUrrAfrica/TimbuktuUTsoSux PK ND'??Africa/KinshasaUTsoSux PK ND'-rrAfrica/NouakchottUTsoSux PK ND~~~~Africa/CasablancaUTsoSux PK NDU3bb Africa/AsmaraUTsoSux PK NDnff GAfrica/MalaboUTsoSux PK ND0,:UU Africa/LagosUTsoSux PK NDr] UUAfrica/BrazzavilleUTsoSux PK NDSoo0Africa/MogadishuUTsoSux PK ND LUU Africa/MaputoUTsoSux PK NDffAfrica/Porto-NovoUTsoSux PK ND r6Africa/KhartoumUTsoSux PK NDYmUU Africa/HarareUTsoSux PK ND:qq.Africa/MonroviaUTsoSux PK NDrHAfrica/KampalaUTsoSux PK NDEE Africa/CairoUTsoSux PK ND%˶ee !Africa/BissauUTsoSux PK NDUU!Africa/LibrevilleUTsoSux PK NDGOUU ["Africa/BanguiUTsoSux PK ND@/ "Africa/CeutaUTsoSux PK NDba1yUU V&Africa/LusakaUTsoSux PK NDlaa &Africa/LuandaUTsoSux PK NDSDUU'Africa/BlantyreUTsoSux PK NDOO 8(Africa/AccraUTsoSux PK NDLee %)Africa/DakarUTsoSux PK NDۥvv )Africa/BanjulUTsoSux PK ND~)ii *Africa/MaseruUTsoSux PK NDWyy=+Africa/GaboroneUTsoSux PK NDU3bb +Africa/AsmeraUTsoSux PK ND,Africa/FreetownUTsoSux PK NDt8ss  .Africa/NiameyUTsoSux PK NDTQTT.Africa/OuagadougouUTsoSux PK ND277e/Africa/AlgiersUTsoSux PK ND+Dbb0Africa/Addis_AbabaUTsoSux PK NDk1Africa/NairobiUTsoSux PK NDPAmerica/TorontoUTsoSux PK NDg3TTCAmerica/DominicaUTsoSux PK NDاqDAmerica/Fort_WayneUTsoSux PK ND,AӌDGAmerica/Blanc-SablonUTsoSux PK NDv6HAmerica/Goose_BayUTsoSux PK ND^ "MAmerica/LimaUTsoSux PK ND zzNAmerica/EnsenadaUTsoSux PK NDP--QAmerica/Cambridge_BayUTsoSux PK NDcjWUAmerica/Buenos_AiresUTsoSux PK NDٔM  IWAmerica/Rio_BrancoUTsoSux PK ND$XAmerica/LouisvilleUTsoSux PK ND=//gg\America/YakutatUTsoSux PK NDo2`America/EirunepeUTsoSux PK ND`` bAmerica/CaymanUTsoSux PK NDg3TTbAmerica/Port_of_SpainUTsoSux PK NDGf1jjXcAmerica/Bahia_BanderasUTsoSux PK ND$BfAmerica/Knox_INUTsoSux PK NDSSiAmerica/St_JohnsUTsoSux PK ND̽@oAmerica/Grand_TurkUTsoSux PK ND HH rAmerica/ThuleUTsoSux PK ND}aa5uAmerica/CayenneUTsoSux PK ND*uAmerica/InuvikUTsoSux PK NDg3TTyAmerica/St_VincentUTsoSux PK NDkdyAmerica/YellowknifeUTsoSux PK NDؾ|America/Swift_CurrentUTsoSux PK NDu  '~America/DawsonUTsoSux PK NDi/America/SantaremUTsoSux PK NDvׂAmerica/CordobaUTsoSux PK NDٔM  لAmerica/Porto_AcreUTsoSux PK NDm#0America/PhoenixUTsoSux PK ND[@L77America/WinnipegUTsoSux PK NDSxAmerica/ParamariboUTsoSux PK NDg3TTpAmerica/MontserratUTsoSux PK NDHTAmerica/AsuncionUTsoSux PK NDj~~iAmerica/TegucigalpaUTsoSux PK NDmAA4America/Glace_BayUTsoSux PK NDcHHAmerica/DetroitUTsoSux PK NDAQAmerica/Argentina/UTsoSux PK ND^dAmerica/Argentina/MendozaUTsoSux PK ND VAmerica/Argentina/Rio_GallegosUTsoSux PK NDZpМAmerica/Argentina/SaltaUTsoSux PK NDwپОAmerica/Argentina/San_JuanUTsoSux PK NDcjAmerica/Argentina/Buenos_AiresUTsoSux PK NDvޢAmerica/Argentina/CordobaUTsoSux PK ND- America/Argentina/UshuaiaUTsoSux PK ND America/Argentina/ComodRivadaviaUTsoSux PK NDE America/Argentina/TucumanUTsoSux PK NDAmerica/Argentina/CatamarcaUTsoSux PK ND!Ɠ%-America/Argentina/San_LuisUTsoSux PK NDˢ'MAmerica/Argentina/JujuyUTsoSux PK NDncAmerica/Argentina/La_RiojaUTsoSux PK NDuAmerica/MiquelonUTsoSux PK ND5##DAmerica/Rainy_RiverUTsoSux PK ND"z-America/GuyanaUTsoSux PK NDCV.{{|America/BelizeUTsoSux PK ND&rt?America/HermosilloUTsoSux PK ND(DQAmerica/Porto_VelhoUTsoSux PK NDylAmerica/MonctonUTsoSux PK ND$W, kAmerica/AtkaUTsoSux PK ND zz7America/TijuanaUTsoSux PK NDpt= America/BahiaUTsoSux PK NDg3TTAmerica/St_KittsUTsoSux PK NDاlAmerica/IndianapolisUTsoSux PK NDg3TTAAmerica/AnguillaUTsoSux PK NDAAmerica/Indiana/UTsoSux PK ND o6)America/Indiana/MarengoUTsoSux PK NDրfAmerica/Indiana/WinamacUTsoSux PK ND>--America/Indiana/VevayUTsoSux PK NDاAmerica/Indiana/IndianapolisUTsoSux PK NDwgnAmerica/Indiana/VincennesUTsoSux PK NDRAmerica/Indiana/PetersburgUTsoSux PK ND$BAmerica/Indiana/KnoxUTsoSux PK NDF5"¡fAmerica/Indiana/Tell_CityUTsoSux PK NDF[[ZAmerica/AraguainaUTsoSux PK NDL88America/MontevideoUTsoSux PK ND{\4mmAmerica/CrestonUTsoSux PK NDC:America/EdmontonUTsoSux PK NDjee America/CuracaoUTsoSux PK NDg3TTAmerica/TortolaUTsoSux PK NDs144VAmerica/MeridaUTsoSux PK ND>G``America/PanamaUTsoSux PK ND' __zAmerica/MenomineeUTsoSux PK NDd$America/Campo_GrandeUTsoSux PK ND[^^eAmerica/MazatlanUTsoSux PK NDc|66 America/VancouverUTsoSux PK NDC#America/ManausUTsoSux PK NDg3TTAmerica/GuadeloupeUTsoSux PK NDCjE##mAmerica/NipigonUTsoSux PK ND2ee America/AntiguaUTsoSux PK ND America/IqaluitUTsoSux PK ND>ndAmerica/JamaicaUTsoSux PK NDTؤrrAmerica/La_PazUTsoSux PK NDg3TTAmerica/GrenadaUTsoSux PK ND==WAmerica/Port-au-PrinceUTsoSux PK NDg3TTAmerica/St_ThomasUTsoSux PK NDEqDAmerica/Rankin_InletUTsoSux PK ND\*QڝAmerica/Coral_HarbourUTsoSux PK ND-_OOAmerica/OjinagaUTsoSux PK NDCvv6America/Puerto_RicoUTsoSux PK NDNx#America/ShiprockUTsoSux PK NDhAmerica/ManaguaUTsoSux PK NDHz America/ReginaUTsoSux PK NDW"America/AnchorageUTsoSux PK ND &America/BelemUTsoSux PK NDơ'America/CuiabaUTsoSux PK NDN~`*America/SantiagoUTsoSux PK NDo*.America/Costa_RicaUTsoSux PK NDǯ/America/BarbadosUTsoSux PK NDm0America/Sao_PauloUTsoSux PK NDo}}3America/CaracasUTsoSux PK ND>))4America/MaceioUTsoSux PK NDzz16America/Santa_IsabelUTsoSux PK ND1ň9America/GuatemalaUTsoSux PK NDtt:America/El_SalvadorUTsoSux PK ND~#"";America/DanmarkshavnUTsoSux PK NDjee<America/KralendijkUTsoSux PK ND=Aݘ  =America/WhitehorseUTsoSux PK ND.6  AAmerica/MonterreyUTsoSux PK NDJPʄVVCAmerica/NassauUTsoSux PK ND#GAmerica/CatamarcaUTsoSux PK NDass 'IAmerica/SitkaUTsoSux PK NDC9kwwLAmerica/BogotaUTsoSux PK ND)\yMAmerica/HavanaUTsoSux PK NDH  |QAmerica/MatamorosUTsoSux PK NDR//SAmerica/FortalezaUTsoSux PK NDw!QUAmerica/NoronhaUTsoSux PK NDZ44VAmerica/PangnirtungUTsoSux PK NDˢ' :ZAmerica/JujuyUTsoSux PK NDAF\America/North_Dakota/UTsoSux PK NDi]\America/North_Dakota/New_SalemUTsoSux PK NDW|s`America/North_Dakota/BeulahUTsoSux PK ND U NdAmerica/North_Dakota/CenterUTsoSux PK NDjee)hAmerica/Lower_PrincesUTsoSux PK ND  hAmerica/MontrealUTsoSux PK NDs:T``4nAmerica/GuayaquilUTsoSux PK ND0ܧ}nAmerica/RecifeUTsoSux PK NDhFpAmerica/Dawson_CreekUTsoSux PK NDjee 0rAmerica/ArubaUTsoSux PK ND\*QڝrAmerica/AtikokanUTsoSux PK NDI*qwwsAmerica/MartiniqueUTsoSux PK NDCCtAmerica/Thunder_BayUTsoSux PK NDg3TTxAmerica/VirginUTsoSux PK NDw=}xAmerica/HalifaxUTsoSux PK NDA}America/Kentucky/UTsoSux PK ND$?~America/Kentucky/LouisvilleUTsoSux PK ND8j||America/Kentucky/MonticelloUTsoSux PK NDPlwAmerica/New_YorkUTsoSux PK NDt?݋America/Santo_DomingoUTsoSux PK ND˨@@America/CancunUTsoSux PK NDwY America/NomeUTsoSux PK ND$W, OAmerica/AdakUTsoSux PK ND͏ America/JuneauUTsoSux PK NDNx#America/DenverUTsoSux PK NDUooAmerica/Mexico_CityUTsoSux PK ND~R|America/Boa_VistaUTsoSux PK NDnȢAmerica/GodthabUTsoSux PK ND&FK00ߥAmerica/ChicagoUTsoSux PK NDXAmerica/ScoresbysundUTsoSux PK NDgx&&America/MetlakatlaUTsoSux PK ND0""America/Los_AngelesUTsoSux PK NDlAmerica/ResoluteUTsoSux PK NDg3TTAmerica/St_LuciaUTsoSux PK NDlPEOO5America/ChihuahuaUTsoSux PK ND AϺAntarctica/UTsoSux PK ND(>Antarctica/South_PoleUTsoSux PK NDDUAntarctica/PalmerUTsoSux PK ND<FmdddAntarctica/MawsonUTsoSux PK ND甦>~~Antarctica/CaseyUTsoSux PK NDAAAntarctica/MacquarieUTsoSux PK ND(>jAntarctica/McMurdoUTsoSux PK ND%8nnVAntarctica/DumontDUrvilleUTsoSux PK NDWWAntarctica/SyowaUTsoSux PK NDUT̅Antarctica/DavisUTsoSux PK ND!VVAntarctica/RotheraUTsoSux PK NDȍHB)Antarctica/TrollUTsoSux PK NDjXWW?Antarctica/VostokUTsoSux PK NDAArctic/UTsoSux PK NDWSS"Arctic/LongyearbyenUTsoSux PK NDAAsia/UTsoSux PK ND{UU Asia/KuwaitUTsoSux PK ND࿃ Asia/IstanbulUTsoSux PK ND, Asia/HarbinUTsoSux PK NDa}(Ixx Asia/HebronUTsoSux PK NDBPX Asia/ShanghaiUTsoSux PK ND8"" Asia/TashkentUTsoSux PK NDb #Asia/BishkekUTsoSux PK ND2ɇAsia/YekaterinburgUTsoSux PK NDF7ss \Asia/JayapuraUTsoSux PK NDu\( Asia/IrkutskUTsoSux PK NDkJ@Asia/Hong_KongUTsoSux PK NDRAsia/QyzylordaUTsoSux PK NDCQAsia/Kuala_LumpurUTsoSux PK ND] RAsia/SeoulUTsoSux PK NDN  NAsia/DhakaUTsoSux PK ND' DAsia/ManilaUTsoSux PK NDK+1#ii"Asia/KathmanduUTsoSux PK ND.n"00 Asia/BeirutUTsoSux PK NDUmHAsia/NovokuznetskUTsoSux PK ND ~Asia/OmskUTsoSux PK ND:3 Asia/AnadyrUTsoSux PK ND!Asia/SingaporeUTsoSux PK NDɋ Asia/AmmanUTsoSux PK NDz(+Asia/KamchatkaUTsoSux PK ND< Asia/YerevanUTsoSux PK NDN  3Asia/DaccaUTsoSux PK ND[ )Asia/KuchingUTsoSux PK ND; NAsia/UrumqiUTsoSux PK ND]7 BAsia/JakartaUTsoSux PK NDc 0Asia/KolkataUTsoSux PK ND"0 Asia/YakutskUTsoSux PK ND^\ff  Asia/ThimbuUTsoSux PK NDĒ&  Asia/KashgarUTsoSux PK ND'A޵rr  Asia/AlmatyUTsoSux PK NDs.գ  Asia/TbilisiUTsoSux PK NDy¨ Asia/SaigonUTsoSux PK NDmo ZAsia/AqtobeUTsoSux PK ND+/%IAsia/ChongqingUTsoSux PK NDc @Asia/CalcuttaUTsoSux PK ND`Asia/Ujung_PandangUTsoSux PK NDO|u Asia/NicosiaUTsoSux PK ND7,껀&Asia/VientianeUTsoSux PK NDi8hhAsia/ChoibalsanUTsoSux PK NDy1Ebb Asia/BruneiUTsoSux PK NDhFAsia/PyongyangUTsoSux PK NDmׇ Asia/RangoonUTsoSux PK ND4qq Asia/TehranUTsoSux PK NDXGAsia/VladivostokUTsoSux PK NDAnn  Asia/GazaUTsoSux PK NDXXm$Asia/JerusalemUTsoSux PK NDs+;;  (Asia/MacauUTsoSux PK NDXX )Asia/Tel_AvivUTsoSux PK NDjRNN+-Asia/UlaanbaatarUTsoSux PK NDjRNN.Asia/Ulan_BatorUTsoSux PK ND8y Z0Asia/OralUTsoSux PK ND^\ff _2Asia/ThimphuUTsoSux PK NDYɖff  3Asia/QatarUTsoSux PK ND 3Asia/NovosibirskUTsoSux PK NDs+;; 5Asia/MacaoUTsoSux PK NDCє [7Asia/KarachiUTsoSux PK ND=m$$ V8Asia/TaipeiUTsoSux PK NDwff 9Asia/BahrainUTsoSux PK NDy¨k:Asia/Ho_Chi_MinhUTsoSux PK ND+/%5;Asia/ChungkingUTsoSux PK NDgw ,<Asia/ColomboUTsoSux PK ND܆2u %=Asia/KhandygaUTsoSux PK ND|1B r?Asia/Ust-NeraUTsoSux PK NDr AAsia/TokyoUTsoSux PK NDÃL BAsia/DushanbeUTsoSux PK NDc0NN CAsia/HovdUTsoSux PK NDK+1#ii aEAsia/KatmanduUTsoSux PK ND"UU FAsia/RiyadhUTsoSux PK ND'%` FAsia/MagadanUTsoSux PK ND\ HAsia/AshgabatUTsoSux PK NDZ+0`` .JAsia/KabulUTsoSux PK ND:UU JAsia/AdenUTsoSux PK NDw/6 jKAsia/BakuUTsoSux PK ND NAsia/BaghdadUTsoSux PK NDDYsPAsia/KrasnoyarskUTsoSux PK NDaV@6UU RAsia/DubaiUTsoSux PK NDt*ҭ.SAsia/PontianakUTsoSux PK ND\#TAsia/AshkhabadUTsoSux PK NDfrq UAsia/AqtauUTsoSux PK ND>*gg WAsia/DamascusUTsoSux PK ND,  Q[Asia/SakhalinUTsoSux PK ND` ~]Asia/MakassarUTsoSux PK NDvόaUU K^Asia/MuscatUTsoSux PK NDa^Asia/Phnom_PenhUTsoSux PK NDj9aa _Asia/BangkokUTsoSux PK ND4''U`Asia/SamarkandUTsoSux PK NDfWڒ aAsia/DiliUTsoSux PK ND AbAtlantic/UTsoSux PK ND``bAtlantic/St_HelenaUTsoSux PK ND">>cAtlantic/South_GeorgiaUTsoSux PK NDƮvdAtlantic/FaeroeUTsoSux PK NDՠN~gAtlantic/CanaryUTsoSux PK NDWSS>Australia/MelbourneUTsoSux PK NDXzL>>Australia/CanberraUTsoSux PK ND P Australia/LHIUTsoSux PK NDҗAustralia/DarwinUTsoSux PK NDتAustralia/PerthUTsoSux PK ND3>>Australia/VictoriaUTsoSux PK NDJ^xAustralia/BrisbaneUTsoSux PK NDV<<}Australia/SouthUTsoSux PK NDXzL>> Australia/NSWUTsoSux PK NDDn\ffAustralia/HobartUTsoSux PK NDDn\ff7Australia/TasmaniaUTsoSux PK NDV<<Australia/AdelaideUTsoSux PK ND_8qAustralia/EuclaUTsoSux PK NDXzL>> Australia/ACTUTsoSux PK NDnAAAustralia/YancowinnaUTsoSux PK ND PAustralia/Lord_HoweUTsoSux PK NDnAAAustralia/Broken_HillUTsoSux PK NDXzL>>4Australia/SydneyUTsoSux PK NDګ>>Australia/CurrieUTsoSux PK NDVZDAustralia/LindemanUTsoSux PK NDJ^bAustralia/QueenslandUTsoSux PK NDAiBrazil/UTsoSux PK NDC# Brazil/WestUTsoSux PK NDm Brazil/EastUTsoSux PK NDٔM   Brazil/AcreUTsoSux PK NDw!nBrazil/DeNoronhaUTsoSux PK NDACanada/UTsoSux PK NDHzCanada/SaskatchewanUTsoSux PK ND1  Canada/EasternUTsoSux PK NDCBCanada/MountainUTsoSux PK NDc|66Canada/PacificUTsoSux PK NDHzCanada/East-SaskatchewanUTsoSux PK ND=Aݘ   jCanada/YukonUTsoSux PK NDw=}Canada/AtlanticUTsoSux PK NDSSCanada/NewfoundlandUTsoSux PK ND[@L77Canada/CentralUTsoSux PK ND7<1CETUTsoSux PK NDAChile/UTsoSux PK NDN~`Chile/ContinentalUTsoSux PK ND6ggChile/EasterIslandUTsoSux PK NDX WX]]CST6CDTUTsoSux PK ND)\y!CubaUTsoSux PK NDPTZ EETUTsoSux PK NDEEEgyptUTsoSux PK ND8r00FEireUTsoSux PK NDs>> ESTUTsoSux PK NDp-_]]/ EST5EDTUTsoSux PK NDAEtc/UTsoSux PK NDFrz&DD  Etc/GMT+1UTsoSux PK ND>>Etc/UTCUTsoSux PK NDx=GG Etc/GMT+12UTsoSux PK ND:DD Etc/GMT+2UTsoSux PK ND>> #Etc/UniversalUTsoSux PK ND>>Etc/ZuluUTsoSux PK NDń,DD (Etc/GMT+8UTsoSux PK NDPY\>> Etc/GMT+0UTsoSux PK ND۵EE 0Etc/GMT-6UTsoSux PK NDUbEE Etc/GMT-1UTsoSux PK NDy>>@Etc/UCTUTsoSux PK ND;HH Etc/GMT-13UTsoSux PK NDiDD KEtc/GMT+7UTsoSux PK ND㯎DD Etc/GMT+6UTsoSux PK NDpUHH YEtc/GMT-14UTsoSux PK NDPY\>>Etc/GMT0UTsoSux PK NDqDD eEtc/GMT+9UTsoSux PK NDPY\>> Etc/GMT-0UTsoSux PK NDcEE mEtc/GMT-8UTsoSux PK ND?HH Etc/GMT-12UTsoSux PK ND84SDD Etc/GMT+5UTsoSux PK NDvPiEE Etc/GMT-4UTsoSux PK ND[EE Etc/GMT-3UTsoSux PK ND{EE Etc/GMT-5UTsoSux PK NDjgDD Etc/GMT+4UTsoSux PK ND8DD 'Etc/GMT+3UTsoSux PK NDPY\>>Etc/GMTUTsoSux PK ND..GG -Etc/GMT+10UTsoSux PK NDPY\>> Etc/GreenwichUTsoSux PK ND-ĮEE =Etc/GMT-7UTsoSux PK ND [HH Etc/GMT-10UTsoSux PK NDKmLGG Q Etc/GMT+11UTsoSux PK NDEE  Etc/GMT-9UTsoSux PK ND)EE d!Etc/GMT-2UTsoSux PK ND !kHH !Etc/GMT-11UTsoSux PK NDAx"Europe/UTsoSux PK ND{wK:VV"Europe/BelfastUTsoSux PK ND=>W(Europe/BudapestUTsoSux PK ND࿃4,Europe/IstanbulUTsoSux PK NDl 0Europe/TiraneUTsoSux PK ND8r00 3Europe/DublinUTsoSux PK ND[11 f9Europe/KievUTsoSux PK NDohӱ<Europe/TiraspolUTsoSux PK ND#:.66@Europe/ZaporozhyeUTsoSux PK ND{wK:VV WDEurope/JerseyUTsoSux PK NDY_IEurope/VaticanUTsoSux PK ND]h=K NEurope/SarajevoUTsoSux PK ND`W> SQEurope/MaltaUTsoSux PK NDmEb$[[sUEurope/KaliningradUTsoSux PK NDMR\\ XEurope/MonacoUTsoSux PK NDD1 \Europe/MinskUTsoSux PK NDuff _Europe/AthensUTsoSux PK ND;rtbEurope/MariehamnUTsoSux PK NDNN eEurope/MoscowUTsoSux PK NDWSS hEurope/OsloUTsoSux PK NDa++ lEurope/SofiaUTsoSux PK ND]h=K oEurope/SkopjeUTsoSux PK NDdҀ   rEurope/SamaraUTsoSux PK ND #uEurope/MadridUTsoSux PK ND IyEurope/ZurichUTsoSux PK ND ++`|Europe/CopenhagenUTsoSux PK ND Rhh Europe/RigaUTsoSux PK ND]h=KEurope/BelgradeUTsoSux PK NDѿ]NN Europe/ViennaUTsoSux PK NDI.gg KEurope/ParisUTsoSux PK NDO|uEurope/NicosiaUTsoSux PK NDE[ww ?Europe/BerlinUTsoSux PK ND]h=K Europe/ZagrebUTsoSux PK ND>;.Europe/StockholmUTsoSux PK NDohӱHEurope/ChisinauUTsoSux PK ND$r]]BEurope/TallinnUTsoSux PK ND]h=KEurope/PodgoricaUTsoSux PK ND{wK:VVEurope/Isle_of_ManUTsoSux PK NDY_Europe/San_MarinoUTsoSux PK ND{wK:VVEurope/GuernseyUTsoSux PK ND Europe/VaduzUTsoSux PK ND;rtEurope/HelsinkiUTsoSux PK NDO22üEurope/UzhgorodUTsoSux PK ND'xx>Europe/GibraltarUTsoSux PK ND=퟼MMEurope/BucharestUTsoSux PK ND-FFEurope/SimferopolUTsoSux PK ND6hSS (Europe/PragueUTsoSux PK ND{wK:VV Europe/LondonUTsoSux PK NDZk___Europe/AmsterdamUTsoSux PK NDVH$Europe/VolgogradUTsoSux PK NDY_ DEurope/RomeUTsoSux PK NDmbbmEurope/VilniusUTsoSux PK NDy%=AXXEurope/BrusselsUTsoSux PK ND]h=KEurope/LjubljanaUTsoSux PK NDEurope/BusingenUTsoSux PK ND  Europe/LisbonUTsoSux PK ND6hSS\Europe/BratislavaUTsoSux PK NDB?Europe/AndorraUTsoSux PK NDN8 Europe/WarsawUTsoSux PK ND@afkk(Europe/LuxembourgUTsoSux PK NDFactoryUTsoSux PK ND{wK:VVGBUTsoSux PK ND{wK:VVK GB-EireUTsoSux PK NDPY\>>GMTUTsoSux PK NDPY\>>]GMT0UTsoSux PK NDPY\>>GMT-0UTsoSux PK NDPY\>>VGMT+0UTsoSux PK NDPY\>> GreenwichUTsoSux PK NDkJTHongkongUTsoSux PK ND#??`HSTUTsoSux PK ND0IcelandUTsoSux PK NDAIndian/UTsoSux PK NDxYUU "Indian/ComoroUTsoSux PK NDBB Indian/CocosUTsoSux PK NDw}iaaFIndian/MaldivesUTsoSux PK ND:UUUIndian/ReunionUTsoSux PK ND&8??Indian/ChristmasUTsoSux PK ND9bb Indian/ChagosUTsoSux PK ND#HPttIndian/AntananarivoUTsoSux PK NDbZUU Indian/MaheUTsoSux PK NDtUUIndian/KerguelenUTsoSux PK NDvvIndian/MauritiusUTsoSux PK ND^UUyIndian/MayotteUTsoSux PK ND4qqIranUTsoSux PK NDXXIsraelUTsoSux PK ND>nd]#JamaicaUTsoSux PK NDrn$JapanUTsoSux PK NDpp >%KwajaleinUTsoSux PK NDvȁ  %LibyaUTsoSux PK NDQ/ 9'METUTsoSux PK NDA*Mexico/UTsoSux PK NDUoo*Mexico/GeneralUTsoSux PK ND zz-Mexico/BajaNorteUTsoSux PK ND[^^K1Mexico/BajaSurUTsoSux PK ND%j>>3MSTUTsoSux PK NDz0]]l4MST7MDTUTsoSux PK NDNx# 8NavajoUTsoSux PK ND(>;NZUTsoSux PK ND8  ?NZ-CHATUTsoSux PK NDACPacific/UTsoSux PK NDbggJCPacific/GalapagosUTsoSux PK NDҿVVCPacific/GuadalcanalUTsoSux PK NDxmmDPacific/KosraeUTsoSux PK ND8  TEPacific/ChathamUTsoSux PK NDh+BB HPacific/TrukUTsoSux PK NDwK 0IPacific/SamoaUTsoSux PK NDY``JPacific/PitcairnUTsoSux PK ND˱ JPacific/EfateUTsoSux PK NDh_@@KPacific/WallisUTsoSux PK NDTbeeHLPacific/NorfolkUTsoSux PK ND(>LPacific/AucklandUTsoSux PK NDcpjVVPPacific/GambierUTsoSux PK NDL>BB QPacific/WakeUTsoSux PK ND yy RPacific/NauruUTsoSux PK ND;5RPacific/TongatapuUTsoSux PK NDwKSPacific/Pago_PagoUTsoSux PK NDݤTPacific/RarotongaUTsoSux PK ND@@UPacific/FunafutiUTsoSux PK ND,fBBDVPacific/PohnpeiUTsoSux PK NDpɝ VPacific/ApiaUTsoSux PK NDWWXPacific/TahitiUTsoSux PK ND8u}}oYPacific/HonoluluUTsoSux PK ND8u}}6ZPacific/JohnstonUTsoSux PK ND]*ٸjj ZPacific/NiueUTsoSux PK NDqL@@[Pacific/Port_MoresbyUTsoSux PK ND;mm;\Pacific/EnderburyUTsoSux PK ND(? \Pacific/FijiUTsoSux PK ND&Gdd ^Pacific/GuamUTsoSux PK ND,fBB_Pacific/PonapeUTsoSux PK ND6gg`Pacific/EasterUTsoSux PK NDmzcPacific/MidwayUTsoSux PK NDv=?? dPacific/PalauUTsoSux PK NDfqq ePacific/SaipanUTsoSux PK NDh+BB ePacific/YapUTsoSux PK ND h^^`fPacific/FakaofoUTsoSux PK NDppgPacific/KwajaleinUTsoSux PK NDh+BB gPacific/ChuukUTsoSux PK ND5\YYKhPacific/MarquesasUTsoSux PK ND =mmhPacific/KiritimatiUTsoSux PK ND/ziPacific/NoumeaUTsoSux PK ND^2}^^jPacific/MajuroUTsoSux PK NDa)ÅBB'kPacific/TarawaUTsoSux PK NDN8kPolandUTsoSux PK ND oPortugalUTsoSux PK NDBPXEuPRCUTsoSux PK ND}gL]]3vPST8PDTUTsoSux PK ND=m$$yROCUTsoSux PK ND]2{ROKUTsoSux PK ND! '|SingaporeUTsoSux PK ND࿃-}TurkeyUTsoSux PK NDy>>}UCTUTsoSux PK ND>> UniversalUTsoSux PK NDAyUS/UTsoSux PK NDwKUS/SamoaUTsoSux PK NDPl US/EasternUTsoSux PK NDNx# US/MountainUTsoSux PK NDاČUS/East-IndianaUTsoSux PK ND0"" US/PacificUTsoSux PK NDcHH US/MichiganUTsoSux PK NDm# US/ArizonaUTsoSux PK ND$W, dUS/AleutianUTsoSux PK NDW /US/AlaskaUTsoSux PK ND0""US/Pacific-NewUTsoSux PK ND8u}} dUS/HawaiiUTsoSux PK ND$B$US/Indiana-StarkeUTsoSux PK ND&FK00 US/CentralUTsoSux PK ND>>yUTCUTsoSux PK NDZWETUTsoSux PK NDNNW-SUUTsoSux PK ND>>ZuluUTsoSux PKXXgo/misc0040755000000000000000000000000012412656737012356 5ustar00rootroot00000000000000go/misc/IntelliJIDEA0040755000000000000000000000000012412656737014513 5ustar00rootroot00000000000000go/misc/IntelliJIDEA/Go.xml0100644000000000000000000000673712412656737015673 0ustar00rootroot00000000000000 go/misc/arm0040755000000000000000000000000012412656734013132 5ustar00rootroot00000000000000go/misc/arm/a0100755000000000000000000000332212412656734013354 0ustar00rootroot00000000000000#!/usr/bin/env bash # 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. # This is a small script for executing go binaries on the android platform. # # example: # ./a 5.out foo bar baz # # The script exports the local values of GOARCH, GOTRACEBACK and GOGC # to the android environment. # # Known issues: # The script fails unless the last character output by the program is "\n" # # TODO(kaib): add gdb bridge support exp () { if [ ${!1} ]; then echo "export $1=\"${!1}\"; " fi } # adb does not correctly return the exit value of the executed program. use this # wrapper to manually extract the exit value rloc=/data/local/tmp/retval rsize=$(adb shell "ls -l $rloc"|tr -s ' '|cut -d' ' -f4) rcheck=38 if [ "$rsize" != "$rcheck" ]; then # echo "debug: retval size incorrect want $rcheck, got $rsize. uploading" echo >/tmp/adb.retval '#!/system/bin/sh "$@" echo RETVAL: $?' adb push /tmp/adb.retval $rloc >/dev/null 2>&1 adb shell chmod 755 $rloc fi # run the main binary if [ "-g" == "$1" ]; then adb forward tcp:$2 tcp:$2 args=$(echo $*| cut -d' ' -f4-) adb push $3 /data/local/tmp/$3 >/dev/null 2>&1 adb shell "$(exp GOARCH) $(exp GOTRACEBACK) $(exp GOGC) \ gdbserver :$2 /data/local/tmp/retval /data/local/tmp/$3 $args" \ 2>&1|tr -d '\r' |tee /tmp/adb.out|grep -v RETVAL else if [ "$*" != "$1" ]; then args=$(echo $*| cut -d' ' -f2-) fi adb push $1 /data/local/tmp/$1 >/dev/null 2>&1 adb shell "$(exp GOARCH) $(exp GOTRACEBACK) $(exp GOGC) \ /data/local/tmp/retval /data/local/tmp/$1 $args" \ 2>&1|tr -d '\r' |tee /tmp/adb.out|grep -v RETVAL fi exit $(grep RETVAL /tmp/adb.out|tr -d '\n\r'| cut -d' ' -f2) go/misc/bash0040755000000000000000000000000012412656737013273 5ustar00rootroot00000000000000go/misc/bash/go0100644000000000000000000001304112412656737013676 0ustar00rootroot00000000000000# install in /etc/bash_completion.d/ or your personal directory complete -f -X '!*.8' 8l complete -f -X '!*.6' 6l complete -f -X '!*.5' 5l complete -f -X '!*.go' 8g 6g 5g gofmt gccgo _go_importpath() { echo "$(compgen -W "$(go list all) all std" -- "$1")" } _go() { # TODO: Only allow flags before other arguments. run already does # this. local cur=`_get_cword` local prev="${COMP_WORDS[COMP_CWORD-1]}" local cmd="${COMP_WORDS[1]}" local cmds="build clean env fix fmt get install list run test tool version vet" local addhelp="c gopath importpath packages testflag testfunc" local other="help" if [ "$COMP_CWORD" == 1 ]; then for opt in $cmds; do if [[ "$opt" == "$cmd" ]]; then COMPREPLY=("$opt") return fi done fi case "$cmd" in 'build') case "$prev" in '-o') _filedir ;; '-p') ;; *) if [[ "$cur" == -* ]]; then COMPREPLY=($(compgen -W "-a -n -o -p -v -x" -- "$cur")) else local found=0 for ((i=0; i < ${#COMP_WORDS[@]}; i++)); do case "$i" in 0|1|"$COMP_CWORD") continue ;; esac local opt="${COMP_WORDS[i]}" if [[ "$opt" != -* ]]; then if [[ "$opt" == *.go && -f "$opt" ]]; then found=1 break else found=2 break fi fi done case "$found" in 0) _filedir go COMPREPLY+=(`_go_importpath "$cur"`) ;; 1) _filedir go ;; 2) COMPREPLY=(`_go_importpath "$cur"`) ;; esac fi ;; esac ;; 'clean') if [[ "$cur" == -* ]]; then COMPREPLY=($(compgen -W "-i -r -n -x" -- "$cur")) else COMPREPLY=(`_go_importpath "$cur"`) fi ;; 'fix') COMPREPLY=(`_go_importpath "$cur"`) ;; 'fmt') COMPREPLY=(`_go_importpath "$cur"`) ;; 'get') case "$prev" in '-p') ;; *) if [[ "$cur" == -* ]]; then COMPREPLY=($(compgen -W "-a -d -fix -n -p -u -v -x" -- "$cur")) else COMPREPLY=(`_go_importpath "$cur"`) fi ;; esac ;; 'install') case "$prev" in '-p') ;; *) if [[ "$cur" == -* ]]; then COMPREPLY=($(compgen -W "-a -n -p -v -x" -- "$cur")) else COMPREPLY=(`_go_importpath "$cur"`) fi ;; esac ;; 'list') case "$prev" in '-f') ;; *) if [[ "$cur" == -* ]]; then COMPREPLY=($(compgen -W "-e -f -json" -- "$cur")) else COMPREPLY=(`_go_importpath "$cur"`) fi ;; esac ;; 'run') if [[ "$cur" == -* && "$prev" != *.go ]]; then COMPREPLY=($(compgen -W "-a -n -x" -- "$cur")) else _filedir fi ;; 'test') # TODO: Support for testflags. case "$prev" in '-file') _filedir go ;; '-p') ;; *) if [[ "$cur" == -* ]]; then COMPREPLY=($(compgen -W "-c -file -i -p -x" -- "$cur")) else COMPREPLY=(`_go_importpath "$cur"`) fi ;; esac ;; 'tool') if [ "$COMP_CWORD" == 2 ]; then COMPREPLY=($(compgen -W "$(go tool)" -- "$cur")) else case "${COMP_WORDS[2]}" in [568]a) # TODO: Implement something. #_go_tool_568a ;; [568]c) # TODO: Implement something. #_go_tool_568c ;; [568]g) # TODO: Implement something. #_go_tool_568g ;; [568]l) # TODO: Implement something. #_go_tool_568l ;; 'api') # TODO: Implement something. #_go_tool_api ;; 'cgo') # TODO: Implement something. #_go_tool_cgo ;; 'cov') # TODO: Implement something. #_go_tool_cov ;; 'dist') # TODO: Implement something. #_go_tool_dist ;; 'fix') # TODO: Implement something. #_go_tool_fix ;; 'nm') # TODO: Implement something. #_go_tool_nm ;; 'pack') # TODO: Implement something. #_go_tool_pack ;; 'pprof') # TODO: Implement something. #_go_tool_pprof ;; 'vet') # TODO: Implement something. #_go_tool_vet ;; 'yacc') # TODO: Implement something. #_go_tool_yacc ;; esac if [[ "$cur" == -* ]]; then COMPREPLY=($(compgen -W "${COMPREPLY[*]} -h" -- "$cur")) fi fi ;; 'version') ;; 'vet') if [[ "$cur" == -* ]]; then : else COMPREPLY=(`_go_importpath "$cur"`) fi ;; 'help') if [ "$COMP_CWORD" == 2 ]; then COMPREPLY=($(compgen -W "$cmds $addhelp" -- "$cur")) fi ;; *) if [ "$COMP_CWORD" == 1 ]; then COMPREPLY=($(compgen -W "$cmds $other" -- "$cur")) else _filedir fi ;; esac } complete $filenames -F _go go # vim:ts=2 sw=2 et syn=sh go/misc/bbedit0040755000000000000000000000000012412656737013607 5ustar00rootroot00000000000000go/misc/bbedit/Go.plist0100644000000000000000000000341312412656737015306 0ustar00rootroot00000000000000// Copyright 2009 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. { BBEditDocumentType = "CodelessLanguageModule"; BBLMColorsSyntax = YES; BBLMIsCaseSensitive = YES; BBLMKeywordList = ( append, bool, break, byte, cap, case, chan, close, complex, complex128, complex64, const, continue, copy, default, defer, delete, else, error, fallthrough, false, float32, float64, for, func, go, goto, if, iota, imag, import, int, int16, int32, int64, int8, interface, len, make, map, new, nil, package, panic, print, println, range, real, recover, return, rune, select, string, struct, switch, true, type, uint, uint16, uint32, uint64, uint8, uintptr, var, ); BBLMLanguageCode = go; "BBLMLanguageDisplayName" = "Go"; BBLMScansFunctions = YES; BBLMSuffixMap = ( { BBLMLanguageSuffix = ".go"; }, ); "Language Features" = { "Close Block Comments" = "*/"; "Close Parameter Lists" = ")"; "Close Statement Blocks" = "}"; "Close Strings 1" = "`"; "Close Strings 2" = "\""; "End-of-line Ends Strings 1" = YES; "End-of-line Ends Strings 2" = YES; "Escape Char in Strings 1" = "\\"; "Escape Char in Strings 2" = "\\"; "Identifier and Keyword Characters" = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"; "Open Block Comments" = "/*"; "Open Line Comments" = "//"; "Open Parameter Lists" = "("; "Open Statement Blocks" = "{"; "Open Strings 1" = "`"; "Open Strings 2" = "\""; "Prefix for Functions" = "func"; "Prefix for Procedures" = "func"; "Terminator for Prototypes 1" = ";"; "Terminator for Prototypes 2" = ""; }; } go/misc/benchcmp0100755000000000000000000000016612412656734014137 0ustar00rootroot00000000000000#!/bin/bash echo 'misc/benchcmp has moved:' >&2 echo ' go get -u code.google.com/p/go.tools/cmd/benchcmp' >&2 exit 2 go/misc/cgo0040755000000000000000000000000012412656737013126 5ustar00rootroot00000000000000go/misc/cgo/errors0040755000000000000000000000000012412656737014442 5ustar00rootroot00000000000000go/misc/cgo/errors/err1.go0100644000000000000000000000042212412656734015711 0ustar00rootroot00000000000000// Copyright 2013 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 /* #cgo LDFLAGS: -c void test() { xxx; // ERROR HERE } */ import "C" func main() { C.test() } go/misc/cgo/errors/err2.go0100644000000000000000000000036612412656734015721 0ustar00rootroot00000000000000// Copyright 2013 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 "C" func main() { s := "" _ = s C.malloc(s) // ERROR HERE } go/misc/cgo/errors/err3.go0100644000000000000000000000050312412656734015713 0ustar00rootroot00000000000000// 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. package main /* typedef struct foo foo_t; typedef struct bar bar_t; foo_t *foop; */ import "C" func main() { x := (*C.bar_t)(nil) C.foop = x // ERROR HERE } go/misc/cgo/errors/test.bash0100755000000000000000000000147112412656737016342 0ustar00rootroot00000000000000# Copyright 2013 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. check() { file=$1 line=$(grep -n 'ERROR HERE' $file | sed 's/:.*//') if [ "$line" = "" ]; then echo 1>&2 misc/cgo/errors/test.bash: BUG: cannot find ERROR HERE in $file exit 1 fi if go build $file >errs 2>&1; then echo 1>&2 misc/cgo/errors/test.bash: BUG: expected cgo to fail but it succeeded exit 1 fi if ! test -s errs; then echo 1>&2 misc/cgo/errors/test.bash: BUG: expected error output but saw none exit 1 fi if ! fgrep $file:$line: errs >/dev/null 2>&1; then echo 1>&2 misc/cgo/errors/test.bash: BUG: expected error on line $line but saw: cat 1>&2 errs exit 1 fi } check err1.go check err2.go check err3.go rm -rf errs _obj exit 0 go/misc/cgo/gmp0040755000000000000000000000000012412656734013706 5ustar00rootroot00000000000000go/misc/cgo/gmp/fib.go0100644000000000000000000000162712412656734015057 0ustar00rootroot00000000000000// Copyright 2009 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 ignore // Compute Fibonacci numbers with two goroutines // that pass integers back and forth. No actual // concurrency, just threads and synchronization // and foreign code on multiple pthreads. package main import ( big "." "runtime" ) func fibber(c chan *big.Int, out chan string, n int64) { // Keep the fibbers in dedicated operating system // threads, so that this program tests coordination // between pthreads and not just goroutines. runtime.LockOSThread() i := big.NewInt(n) if n == 0 { c <- i } for { j := <-c out <- j.String() i.Add(i, j) c <- i } } func main() { c := make(chan *big.Int) out := make(chan string) go fibber(c, out, 0) go fibber(c, out, 1) for i := 0; i < 200; i++ { println(<-out) } } go/misc/cgo/gmp/gmp.go0100644000000000000000000002301412412656734015074 0ustar00rootroot00000000000000// Copyright 2009 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. /* An example of wrapping a C library in Go. This is the GNU multiprecision library gmp's integer type mpz_t wrapped to look like the Go package big's integer type Int. This is a syntactically valid Go program—it can be parsed with the Go parser and processed by godoc—but it is not compiled directly by 6g. Instead, a separate tool, cgo, processes it to produce three output files. The first two, 6g.go and 6c.c, are a Go source file for 6g and a C source file for 6c; both compile as part of the named package (gmp, in this example). The third, gcc.c, is a C source file for gcc; it compiles into a shared object (.so) that is dynamically linked into any 6.out that imports the first two files. The stanza // #include import "C" is a signal to cgo. The doc comment on the import of "C" provides additional context for the C file. Here it is just a single #include but it could contain arbitrary C definitions to be imported and used. Cgo recognizes any use of a qualified identifier C.xxx and uses gcc to find the definition of xxx. If xxx is a type, cgo replaces C.xxx with a Go translation. C arithmetic types translate to precisely-sized Go arithmetic types. A C struct translates to a Go struct, field by field; unrepresentable fields are replaced with opaque byte arrays. A C union translates into a struct containing the first union member and perhaps additional padding. C arrays become Go arrays. C pointers become Go pointers. C function pointers become Go's uintptr. C void pointers become Go's unsafe.Pointer. For example, mpz_t is defined in as: typedef unsigned long int mp_limb_t; typedef struct { int _mp_alloc; int _mp_size; mp_limb_t *_mp_d; } __mpz_struct; typedef __mpz_struct mpz_t[1]; Cgo generates: type _C_int int32 type _C_mp_limb_t uint64 type _C___mpz_struct struct { _mp_alloc _C_int; _mp_size _C_int; _mp_d *_C_mp_limb_t; } type _C_mpz_t [1]_C___mpz_struct and then replaces each occurrence of a type C.xxx with _C_xxx. If xxx is data, cgo arranges for C.xxx to refer to the C variable, with the type translated as described above. To do this, cgo must introduce a Go variable that points at the C variable (the linker can be told to initialize this pointer). For example, if the gmp library provided mpz_t zero; then cgo would rewrite a reference to C.zero by introducing var _C_zero *C.mpz_t and then replacing all instances of C.zero with (*_C_zero). Cgo's most interesting translation is for functions. If xxx is a C function, then cgo rewrites C.xxx into a new function _C_xxx that calls the C xxx in a standard pthread. The new function translates its arguments, calls xxx, and translates the return value. Translation of parameters and the return value follows the type translation above except that arrays passed as parameters translate explicitly in Go to pointers to arrays, as they do (implicitly) in C. Garbage collection is the big problem. It is fine for the Go world to have pointers into the C world and to free those pointers when they are no longer needed. To help, the Go code can define Go objects holding the C pointers and use runtime.SetFinalizer on those Go objects. It is much more difficult for the C world to have pointers into the Go world, because the Go garbage collector is unaware of the memory allocated by C. The most important consideration is not to constrain future implementations, so the rule is that Go code can hand a Go pointer to C code but must separately arrange for Go to hang on to a reference to the pointer until C is done with it. */ package gmp /* #cgo LDFLAGS: -lgmp #include #include // gmp 5.0.0+ changed the type of the 3rd argument to mp_bitcnt_t, // so, to support older versions, we wrap these two functions. void _mpz_mul_2exp(mpz_ptr a, mpz_ptr b, unsigned long n) { mpz_mul_2exp(a, b, n); } void _mpz_div_2exp(mpz_ptr a, mpz_ptr b, unsigned long n) { mpz_div_2exp(a, b, n); } */ import "C" import ( "os" "unsafe" ) /* * one of a kind */ // An Int represents a signed multi-precision integer. // The zero value for an Int represents the value 0. type Int struct { i C.mpz_t init bool } // NewInt returns a new Int initialized to x. func NewInt(x int64) *Int { return new(Int).SetInt64(x) } // Int promises that the zero value is a 0, but in gmp // the zero value is a crash. To bridge the gap, the // init bool says whether this is a valid gmp value. // doinit initializes z.i if it needs it. This is not inherent // to FFI, just a mismatch between Go's convention of // making zero values useful and gmp's decision not to. func (z *Int) doinit() { if z.init { return } z.init = true C.mpz_init(&z.i[0]) } // Bytes returns z's representation as a big-endian byte array. func (z *Int) Bytes() []byte { b := make([]byte, (z.Len()+7)/8) n := C.size_t(len(b)) C.mpz_export(unsafe.Pointer(&b[0]), &n, 1, 1, 1, 0, &z.i[0]) return b[0:n] } // Len returns the length of z in bits. 0 is considered to have length 1. func (z *Int) Len() int { z.doinit() return int(C.mpz_sizeinbase(&z.i[0], 2)) } // Set sets z = x and returns z. func (z *Int) Set(x *Int) *Int { z.doinit() C.mpz_set(&z.i[0], &x.i[0]) return z } // SetBytes interprets b as the bytes of a big-endian integer // and sets z to that value. func (z *Int) SetBytes(b []byte) *Int { z.doinit() if len(b) == 0 { z.SetInt64(0) } else { C.mpz_import(&z.i[0], C.size_t(len(b)), 1, 1, 1, 0, unsafe.Pointer(&b[0])) } return z } // SetInt64 sets z = x and returns z. func (z *Int) SetInt64(x int64) *Int { z.doinit() // TODO(rsc): more work on 32-bit platforms C.mpz_set_si(&z.i[0], C.long(x)) return z } // SetString interprets s as a number in the given base // and sets z to that value. The base must be in the range [2,36]. // SetString returns an error if s cannot be parsed or the base is invalid. func (z *Int) SetString(s string, base int) error { z.doinit() if base < 2 || base > 36 { return os.ErrInvalid } p := C.CString(s) defer C.free(unsafe.Pointer(p)) if C.mpz_set_str(&z.i[0], p, C.int(base)) < 0 { return os.ErrInvalid } return nil } // String returns the decimal representation of z. func (z *Int) String() string { if z == nil { return "nil" } z.doinit() p := C.mpz_get_str(nil, 10, &z.i[0]) s := C.GoString(p) C.free(unsafe.Pointer(p)) return s } func (z *Int) destroy() { if z.init { C.mpz_clear(&z.i[0]) } z.init = false } /* * arithmetic */ // Add sets z = x + y and returns z. func (z *Int) Add(x, y *Int) *Int { x.doinit() y.doinit() z.doinit() C.mpz_add(&z.i[0], &x.i[0], &y.i[0]) return z } // Sub sets z = x - y and returns z. func (z *Int) Sub(x, y *Int) *Int { x.doinit() y.doinit() z.doinit() C.mpz_sub(&z.i[0], &x.i[0], &y.i[0]) return z } // Mul sets z = x * y and returns z. func (z *Int) Mul(x, y *Int) *Int { x.doinit() y.doinit() z.doinit() C.mpz_mul(&z.i[0], &x.i[0], &y.i[0]) return z } // Div sets z = x / y, rounding toward zero, and returns z. func (z *Int) Div(x, y *Int) *Int { x.doinit() y.doinit() z.doinit() C.mpz_tdiv_q(&z.i[0], &x.i[0], &y.i[0]) return z } // Mod sets z = x % y and returns z. // Like the result of the Go % operator, z has the same sign as x. func (z *Int) Mod(x, y *Int) *Int { x.doinit() y.doinit() z.doinit() C.mpz_tdiv_r(&z.i[0], &x.i[0], &y.i[0]) return z } // Lsh sets z = x << s and returns z. func (z *Int) Lsh(x *Int, s uint) *Int { x.doinit() z.doinit() C._mpz_mul_2exp(&z.i[0], &x.i[0], C.ulong(s)) return z } // Rsh sets z = x >> s and returns z. func (z *Int) Rsh(x *Int, s uint) *Int { x.doinit() z.doinit() C._mpz_div_2exp(&z.i[0], &x.i[0], C.ulong(s)) return z } // Exp sets z = x^y % m and returns z. // If m == nil, Exp sets z = x^y. func (z *Int) Exp(x, y, m *Int) *Int { m.doinit() x.doinit() y.doinit() z.doinit() if m == nil { C.mpz_pow_ui(&z.i[0], &x.i[0], C.mpz_get_ui(&y.i[0])) } else { C.mpz_powm(&z.i[0], &x.i[0], &y.i[0], &m.i[0]) } return z } func (z *Int) Int64() int64 { if !z.init { return 0 } return int64(C.mpz_get_si(&z.i[0])) } // Neg sets z = -x and returns z. func (z *Int) Neg(x *Int) *Int { x.doinit() z.doinit() C.mpz_neg(&z.i[0], &x.i[0]) return z } // Abs sets z to the absolute value of x and returns z. func (z *Int) Abs(x *Int) *Int { x.doinit() z.doinit() C.mpz_abs(&z.i[0], &x.i[0]) return z } /* * functions without a clear receiver */ // CmpInt compares x and y. The result is // // -1 if x < y // 0 if x == y // +1 if x > y // func CmpInt(x, y *Int) int { x.doinit() y.doinit() switch cmp := C.mpz_cmp(&x.i[0], &y.i[0]); { case cmp < 0: return -1 case cmp == 0: return 0 } return +1 } // DivModInt sets q = x / y and r = x % y. func DivModInt(q, r, x, y *Int) { q.doinit() r.doinit() x.doinit() y.doinit() C.mpz_tdiv_qr(&q.i[0], &r.i[0], &x.i[0], &y.i[0]) } // GcdInt sets d to the greatest common divisor of a and b, // which must be positive numbers. // If x and y are not nil, GcdInt sets x and y such that d = a*x + b*y. // If either a or b is not positive, GcdInt sets d = x = y = 0. func GcdInt(d, x, y, a, b *Int) { d.doinit() x.doinit() y.doinit() a.doinit() b.doinit() C.mpz_gcdext(&d.i[0], &x.i[0], &y.i[0], &a.i[0], &b.i[0]) } // ProbablyPrime performs n Miller-Rabin tests to check whether z is prime. // If it returns true, z is prime with probability 1 - 1/4^n. // If it returns false, z is not prime. func (z *Int) ProbablyPrime(n int) bool { z.doinit() return int(C.mpz_probab_prime_p(&z.i[0], C.int(n))) > 0 } go/misc/cgo/gmp/pi.go0100644000000000000000000000561312412656734014726 0ustar00rootroot00000000000000// +build ignore /* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of "The Computer Language Benchmarks Game" nor the name of "The Computer Language Shootout Benchmarks" nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* The Computer Language Benchmarks Game * http://shootout.alioth.debian.org/ * * contributed by The Go Authors. * based on pidigits.c (by Paolo Bonzini & Sean Bartlett, * modified by Michael Mellor) */ package main import ( big "." "fmt" "runtime" ) var ( tmp1 = big.NewInt(0) tmp2 = big.NewInt(0) numer = big.NewInt(1) accum = big.NewInt(0) denom = big.NewInt(1) ten = big.NewInt(10) ) func extractDigit() int64 { if big.CmpInt(numer, accum) > 0 { return -1 } tmp1.Lsh(numer, 1).Add(tmp1, numer).Add(tmp1, accum) big.DivModInt(tmp1, tmp2, tmp1, denom) tmp2.Add(tmp2, numer) if big.CmpInt(tmp2, denom) >= 0 { return -1 } return tmp1.Int64() } func nextTerm(k int64) { y2 := k*2 + 1 accum.Add(accum, tmp1.Lsh(numer, 1)) accum.Mul(accum, tmp1.SetInt64(y2)) numer.Mul(numer, tmp1.SetInt64(k)) denom.Mul(denom, tmp1.SetInt64(y2)) } func eliminateDigit(d int64) { accum.Sub(accum, tmp1.Mul(denom, tmp1.SetInt64(d))) accum.Mul(accum, ten) numer.Mul(numer, ten) } func main() { i := 0 k := int64(0) for { d := int64(-1) for d < 0 { k++ nextTerm(k) d = extractDigit() } eliminateDigit(d) fmt.Printf("%c", d+'0') if i++; i%50 == 0 { fmt.Printf("\n") if i >= 1000 { break } } } fmt.Printf("\n%d calls; bit sizes: %d %d %d\n", runtime.NumCgoCall(), numer.Len(), accum.Len(), denom.Len()) } go/misc/cgo/life0040755000000000000000000000000012412656734014042 5ustar00rootroot00000000000000go/misc/cgo/life/c-life.c0100644000000000000000000000266512412656734015432 0ustar00rootroot00000000000000// 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. #include #include "life.h" #include "_cgo_export.h" const int MYCONST = 0; // Do the actual manipulation of the life board in C. This could be // done easily in Go, we are just using C for demonstration // purposes. void Step(int x, int y, int *a, int *n) { struct GoStart_return r; // Use Go to start 4 goroutines each of which handles 1/4 of the // board. r = GoStart(0, x, y, 0, x / 2, 0, y / 2, a, n); assert(r.r0 == 0 && r.r1 == 100); // test multiple returns r = GoStart(1, x, y, x / 2, x, 0, y / 2, a, n); assert(r.r0 == 1 && r.r1 == 101); // test multiple returns GoStart(2, x, y, 0, x / 2, y / 2, y, a, n); GoStart(3, x, y, x / 2, x, y / 2, y, a, n); GoWait(0); GoWait(1); GoWait(2); GoWait(3); } // The actual computation. This is called in parallel. void DoStep(int xdim, int ydim, int xstart, int xend, int ystart, int yend, int *a, int *n) { int x, y, c, i, j; for(x = xstart; x < xend; x++) { for(y = ystart; y < yend; y++) { c = 0; for(i = -1; i <= 1; i++) { for(j = -1; j <= 1; j++) { if(x+i >= 0 && x+i < xdim && y+j >= 0 && y+j < ydim && (i != 0 || j != 0)) c += a[(x+i)*xdim + (y+j)] != 0; } } if(c == 3 || (c == 2 && a[x*xdim + y] != 0)) n[x*xdim + y] = 1; else n[x*xdim + y] = 0; } } } go/misc/cgo/life/life.go0100644000000000000000000000160012412656734015361 0ustar00rootroot00000000000000// skip // 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. package life // #include "life.h" import "C" import "unsafe" func Run(gen, x, y int, a []int32) { n := make([]int32, x*y) for i := 0; i < gen; i++ { C.Step(C.int(x), C.int(y), (*C.int)(unsafe.Pointer(&a[0])), (*C.int)(unsafe.Pointer(&n[0]))) copy(a, n) } } // Keep the channels visible from Go. var chans [4]chan bool //export GoStart // Double return value is just for testing. func GoStart(i, xdim, ydim, xstart, xend, ystart, yend C.int, a *C.int, n *C.int) (int, int) { c := make(chan bool, int(C.MYCONST)) go func() { C.DoStep(xdim, ydim, xstart, xend, ystart, yend, a, n) c <- true }() chans[i] = c return int(i), int(i + 100) } //export GoWait func GoWait(i C.int) { <-chans[i] chans[i] = nil } go/misc/cgo/life/life.h0100644000000000000000000000044512412656734015211 0ustar00rootroot00000000000000// 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. extern void Step(int, int, int *, int *); extern void DoStep(int, int, int, int, int, int, int *, int *); extern const int MYCONST; go/misc/cgo/life/main.go0100644000000000000000000000144212412656734015372 0ustar00rootroot00000000000000// cmpout // 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. // +build ignore // Run the game of life in C using Go for parallelization. package main import ( "." "flag" "fmt" ) const MAXDIM = 100 var dim = flag.Int("dim", 16, "board dimensions") var gen = flag.Int("gen", 10, "generations") func main() { flag.Parse() var a [MAXDIM * MAXDIM]int32 for i := 2; i < *dim; i += 8 { for j := 2; j < *dim-3; j += 8 { for y := 0; y < 3; y++ { a[i**dim+j+y] = 1 } } } life.Run(*gen, *dim, *dim, a[:]) for i := 0; i < *dim; i++ { for j := 0; j < *dim; j++ { if a[i**dim+j] == 0 { fmt.Print(" ") } else { fmt.Print("X") } } fmt.Print("\n") } } go/misc/cgo/life/main.out0100644000000000000000000000042012412656734015567 0ustar00rootroot00000000000000 XXX XXX XXX XXX go/misc/cgo/nocgo0040755000000000000000000000000012412656734014230 5ustar00rootroot00000000000000go/misc/cgo/nocgo/nocgo.go0100644000000000000000000000107612412656734015744 0ustar00rootroot00000000000000// 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. // Test that -static works when not using cgo. This test is in // misc/cgo to take advantage of the testing framework support for // when -static is expected to work. package nocgo func NoCgo() int { c := make(chan int) // The test is run with external linking, which means that // goroutines will be created via the runtime/cgo package. // Make sure that works. go func() { c <- 42 }() return <-c } go/misc/cgo/nocgo/nocgo_test.go0100644000000000000000000000044412412656734017001 0ustar00rootroot00000000000000// 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. package nocgo import "testing" func TestNop(t *testing.T) { i := NoCgo() if i != 42 { t.Errorf("got %d, want %d", i, 42) } } go/misc/cgo/stdio0040755000000000000000000000000012412656734014245 5ustar00rootroot00000000000000go/misc/cgo/stdio/chain.go0100644000000000000000000000162412412656734015735 0ustar00rootroot00000000000000// cmpout // Copyright 2009 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 ignore // Pass numbers along a chain of threads. package main import ( "../stdio" "runtime" "strconv" ) const N = 10 const R = 5 func link(left chan<- int, right <-chan int) { // Keep the links in dedicated operating system // threads, so that this program tests coordination // between pthreads and not just goroutines. runtime.LockOSThread() for { v := <-right stdio.Stdout.WriteString(strconv.Itoa(v) + "\n") left <- 1 + v } } func main() { leftmost := make(chan int) var left chan int right := leftmost for i := 0; i < N; i++ { left, right = right, make(chan int) go link(left, right) } for i := 0; i < R; i++ { right <- 0 x := <-leftmost stdio.Stdout.WriteString(strconv.Itoa(x) + "\n") } } go/misc/cgo/stdio/chain.out0100644000000000000000000000016312412656734016134 0ustar00rootroot000000000000000 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 go/misc/cgo/stdio/fib.go0100644000000000000000000000170712412656734015415 0ustar00rootroot00000000000000// cmpout // Copyright 2009 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 ignore // Compute Fibonacci numbers with two goroutines // that pass integers back and forth. No actual // concurrency, just threads and synchronization // and foreign code on multiple pthreads. package main import ( "../stdio" "runtime" "strconv" ) func fibber(c, out chan int64, i int64) { // Keep the fibbers in dedicated operating system // threads, so that this program tests coordination // between pthreads and not just goroutines. runtime.LockOSThread() if i == 0 { c <- i } for { j := <-c stdio.Stdout.WriteString(strconv.FormatInt(j, 10) + "\n") out <- j <-out i += j c <- i } } func main() { c := make(chan int64) out := make(chan int64) go fibber(c, out, 0) go fibber(c, out, 1) <-out for i := 0; i < 90; i++ { out <- 1 <-out } } go/misc/cgo/stdio/fib.out0100644000000000000000000000170212412656734015612 0ustar00rootroot000000000000000 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 2971215073 4807526976 7778742049 12586269025 20365011074 32951280099 53316291173 86267571272 139583862445 225851433717 365435296162 591286729879 956722026041 1548008755920 2504730781961 4052739537881 6557470319842 10610209857723 17167680177565 27777890035288 44945570212853 72723460248141 117669030460994 190392490709135 308061521170129 498454011879264 806515533049393 1304969544928657 2111485077978050 3416454622906707 5527939700884757 8944394323791464 14472334024676221 23416728348467685 37889062373143906 61305790721611591 99194853094755497 160500643816367088 259695496911122585 420196140727489673 679891637638612258 1100087778366101931 1779979416004714189 2880067194370816120 go/misc/cgo/stdio/file.go0100644000000000000000000000155312412656734015573 0ustar00rootroot00000000000000// skip // Copyright 2009 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. /* A trivial example of wrapping a C library in Go. For a more complex example and explanation, see ../gmp/gmp.go. */ package stdio /* #include #include #include #include char* greeting = "hello, world"; */ import "C" import "unsafe" type File C.FILE // Test reference to library symbol. // Stdout and stderr are too special to be a reliable test. //var = C.environ func (f *File) WriteString(s string) { p := C.CString(s) C.fputs(p, (*C.FILE)(f)) C.free(unsafe.Pointer(p)) f.Flush() } func (f *File) Flush() { C.fflush((*C.FILE)(f)) } var Greeting = C.GoString(C.greeting) var Gbytes = C.GoBytes(unsafe.Pointer(C.greeting), C.int(len(Greeting))) go/misc/cgo/stdio/hello.go0100644000000000000000000000044012412656734015751 0ustar00rootroot00000000000000// cmpout // Copyright 2009 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 ignore package main import "../stdio" func main() { stdio.Stdout.WriteString(stdio.Greeting + "\n") } go/misc/cgo/stdio/hello.out0100644000000000000000000000001512412656734016151 0ustar00rootroot00000000000000hello, world go/misc/cgo/stdio/run.out0100644000000000000000000000213012412656734015652 0ustar00rootroot00000000000000* hello hello, world * fib 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 2971215073 4807526976 7778742049 12586269025 20365011074 32951280099 53316291173 86267571272 139583862445 225851433717 365435296162 591286729879 956722026041 1548008755920 2504730781961 4052739537881 6557470319842 10610209857723 17167680177565 27777890035288 44945570212853 72723460248141 117669030460994 190392490709135 308061521170129 498454011879264 806515533049393 1304969544928657 2111485077978050 3416454622906707 5527939700884757 8944394323791464 14472334024676221 23416728348467685 37889062373143906 61305790721611591 99194853094755497 160500643816367088 259695496911122585 420196140727489673 679891637638612258 1100087778366101931 1779979416004714189 2880067194370816120 * chain 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 go/misc/cgo/stdio/stdio.go0100644000000000000000000000114612412656734015774 0ustar00rootroot00000000000000// skip // Copyright 2009 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 stdio /* #include // on mingw, stderr and stdout are defined as &_iob[FILENO] // on netbsd, they are defined as &__sF[FILENO] // and cgo doesn't recognize them, so write a function to get them, // instead of depending on internals of libc implementation. FILE *getStdout(void) { return stdout; } FILE *getStderr(void) { return stderr; } */ import "C" var Stdout = (*File)(C.getStdout()) var Stderr = (*File)(C.getStderr()) go/misc/cgo/test0040755000000000000000000000000012412656737014105 5ustar00rootroot00000000000000go/misc/cgo/test/align.go0100644000000000000000000000331512412656734015601 0ustar00rootroot00000000000000// 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. package cgotest /* #include typedef unsigned char Uint8; typedef unsigned short Uint16; typedef enum { MOD1 = 0x0000, MODX = 0x8000 } SDLMod; typedef enum { A = 1, B = 322, SDLK_LAST } SDLKey; typedef struct SDL_keysym { Uint8 scancode; SDLKey sym; SDLMod mod; Uint16 unicode; } SDL_keysym; typedef struct SDL_KeyboardEvent { Uint8 typ; Uint8 which; Uint8 state; SDL_keysym keysym; } SDL_KeyboardEvent; void makeEvent(SDL_KeyboardEvent *event) { unsigned char *p; int i; p = (unsigned char*)event; for (i=0; ityp == typ && e->which == which && e->state == state && e->keysym.scancode == scan && e->keysym.sym == sym && e->keysym.mod == mod && e->keysym.unicode == uni; } void cTest(SDL_KeyboardEvent *event) { printf("C: %#x %#x %#x %#x %#x %#x %#x\n", event->typ, event->which, event->state, event->keysym.scancode, event->keysym.sym, event->keysym.mod, event->keysym.unicode); fflush(stdout); } */ import "C" import ( "testing" ) func testAlign(t *testing.T) { var evt C.SDL_KeyboardEvent C.makeEvent(&evt) if C.same(&evt, evt.typ, evt.which, evt.state, evt.keysym.scancode, evt.keysym.sym, evt.keysym.mod, evt.keysym.unicode) == 0 { t.Error("*** bad alignment") C.cTest(&evt) t.Errorf("Go: %#x %#x %#x %#x %#x %#x %#x\n", evt.typ, evt.which, evt.state, evt.keysym.scancode, evt.keysym.sym, evt.keysym.mod, evt.keysym.unicode) t.Error(evt) } } go/misc/cgo/test/api.go0100644000000000000000000000110712412656734015255 0ustar00rootroot00000000000000// Copyright 2013 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. // API Compatibility Checks for cgo package cgotest // #include // const char *api_hello = "hello!"; import "C" import "unsafe" func testAPI() { var cs *C.char cs = C.CString("hello") defer C.free(unsafe.Pointer(cs)) var s string s = C.GoString((*C.char)(C.api_hello)) s = C.GoStringN((*C.char)(C.api_hello), C.int(6)) var b []byte b = C.GoBytes(unsafe.Pointer(C.api_hello), C.int(6)) _, _ = s, b } go/misc/cgo/test/backdoor0040755000000000000000000000000012412656737015671 5ustar00rootroot00000000000000go/misc/cgo/test/backdoor/backdoor.go0100644000000000000000000000042512412656737020061 0ustar00rootroot00000000000000// 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 backdoor func LockedOSThread() bool // in runtime.c func Issue7695(x1, x2, x3, x4, x5, x6, x7, x8 uintptr) go/misc/cgo/test/backdoor/backdoor_gccgo.go0100644000000000000000000000046612412656737021230 0ustar00rootroot00000000000000// 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. // This is the gccgo version of the stub in runtime.c. // +build gccgo package backdoor func Issue7695(x1, x2, x3, x4, x5, x6, x7, x8 uintptr) {} go/misc/cgo/test/backdoor/runtime.c0100644000000000000000000000115012412656737017571 0ustar00rootroot00000000000000// Copyright 2011 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. // Expose some runtime functions for testing. // Must be in a non-cgo-using package so that // the go command compiles this file with 6c, not gcc. // +build gc typedef char bool; bool runtime·lockedOSThread(void); static void FLUSH(void*) { } void ·LockedOSThread(bool b) { b = runtime·lockedOSThread(); FLUSH(&b); } // This is what a cgo-compiled stub declaration looks like. void ·Issue7695(struct{void *y[8*sizeof(void*)];}p) { USED(p); } go/misc/cgo/test/backdoor/runtime_gccgo.c0100644000000000000000000000066012412656734020735 0ustar00rootroot00000000000000// 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. // Expose some runtime functions for testing. // This is the gccgo version of runtime.c. // +build gccgo _Bool runtime_lockedOSThread(void); _Bool LockedOSThread(void) asm(GOPKGPATH ".LockedOSThread"); _Bool LockedOSThread(void) { return runtime_lockedOSThread(); } go/misc/cgo/test/basic.go0100644000000000000000000000532212412656737015573 0ustar00rootroot00000000000000// 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. // Basic test cases for cgo. package cgotest /* #include #include #include #include #define SHIFT(x, y) ((x)<<(y)) #define KILO SHIFT(1, 10) #define UINT32VAL 0xc008427bU enum E { Enum1 = 1, Enum2 = 2, }; typedef unsigned char cgo_uuid_t[20]; void uuid_generate(cgo_uuid_t x) { x[0] = 0; } struct S { int x; }; extern enum E myConstFunc(struct S* const ctx, int const id, struct S **const filter); enum E myConstFunc(struct S *const ctx, int const id, struct S **const filter) { return 0; } // issue 1222 typedef union { long align; } xxpthread_mutex_t; struct ibv_async_event { union { int x; } element; }; struct ibv_context { xxpthread_mutex_t mutex; }; int add(int x, int y) { return x+y; }; */ import "C" import ( "runtime" "syscall" "testing" "unsafe" ) const EINVAL = C.EINVAL /* test #define */ var KILO = C.KILO func uuidgen() { var uuid C.cgo_uuid_t C.uuid_generate(&uuid[0]) } func Strtol(s string, base int) (int, error) { p := C.CString(s) n, err := C.strtol(p, nil, C.int(base)) C.free(unsafe.Pointer(p)) return int(n), err } func Atol(s string) int { p := C.CString(s) n := C.atol(p) C.free(unsafe.Pointer(p)) return int(n) } func testConst(t *testing.T) { C.myConstFunc(nil, 0, nil) } func testEnum(t *testing.T) { if C.Enum1 != 1 || C.Enum2 != 2 { t.Error("bad enum", C.Enum1, C.Enum2) } } func testAtol(t *testing.T) { l := Atol("123") if l != 123 { t.Error("Atol 123: ", l) } } func testErrno(t *testing.T) { p := C.CString("no-such-file") m := C.CString("r") f, err := C.fopen(p, m) C.free(unsafe.Pointer(p)) C.free(unsafe.Pointer(m)) if err == nil { C.fclose(f) t.Fatalf("C.fopen: should fail") } if err != syscall.ENOENT { t.Fatalf("C.fopen: unexpected error: %v", err) } } func testMultipleAssign(t *testing.T) { p := C.CString("234") n, m := C.strtol(p, nil, 345), C.strtol(p, nil, 10) if runtime.GOOS == "openbsd" { // Bug in OpenBSD strtol(3) - base > 36 succeeds. if (n != 0 && n != 239089) || m != 234 { t.Fatal("Strtol x2: ", n, m) } } else if n != 0 || m != 234 { t.Fatal("Strtol x2: ", n, m) } C.free(unsafe.Pointer(p)) } var ( cuint = (C.uint)(0) culong C.ulong cchar C.char ) type Context struct { ctx *C.struct_ibv_context } func benchCgoCall(b *testing.B) { const x = C.int(2) const y = C.int(3) for i := 0; i < b.N; i++ { C.add(x, y) } } // Issue 2470. func testUnsignedInt(t *testing.T) { a := (int64)(C.UINT32VAL) b := (int64)(0xc008427b) if a != b { t.Errorf("Incorrect unsigned int - got %x, want %x", a, b) } } go/misc/cgo/test/callback.go0100644000000000000000000033261112412656737016252 0ustar00rootroot00000000000000// Copyright 2011 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 cgotest /* void callback(void *f); void callGoFoo(void); void callGoStackCheck(void); void callPanic(void); */ import "C" import ( "./backdoor" "path" "runtime" "strings" "testing" "unsafe" ) // nestedCall calls into C, back into Go, and finally to f. func nestedCall(f func()) { // NOTE: Depends on representation of f. // callback(x) calls goCallback(x) C.callback(*(*unsafe.Pointer)(unsafe.Pointer(&f))) } //export goCallback func goCallback(p unsafe.Pointer) { (*(*func())(unsafe.Pointer(&p)))() } func testCallback(t *testing.T) { var x = false nestedCall(func() { x = true }) if !x { t.Fatal("nestedCall did not call func") } } func testCallbackGC(t *testing.T) { nestedCall(runtime.GC) } var lockedOSThread = backdoor.LockedOSThread func testCallbackPanic(t *testing.T) { // Make sure panic during callback unwinds properly. if lockedOSThread() { t.Fatal("locked OS thread on entry to TestCallbackPanic") } defer func() { s := recover() if s == nil { t.Fatal("did not panic") } if s.(string) != "callback panic" { t.Fatal("wrong panic:", s) } if lockedOSThread() { t.Fatal("locked OS thread on exit from TestCallbackPanic") } }() nestedCall(func() { panic("callback panic") }) panic("nestedCall returned") } func testCallbackPanicLoop(t *testing.T) { // Make sure we don't blow out m->g0 stack. for i := 0; i < 100000; i++ { testCallbackPanic(t) } } func testCallbackPanicLocked(t *testing.T) { runtime.LockOSThread() defer runtime.UnlockOSThread() if !lockedOSThread() { t.Fatal("runtime.LockOSThread didn't") } defer func() { s := recover() if s == nil { t.Fatal("did not panic") } if s.(string) != "callback panic" { t.Fatal("wrong panic:", s) } if !lockedOSThread() { t.Fatal("lost lock on OS thread after panic") } }() nestedCall(func() { panic("callback panic") }) panic("nestedCall returned") } // Callback with zero arguments used to make the stack misaligned, // which broke the garbage collector and other things. func testZeroArgCallback(t *testing.T) { defer func() { s := recover() if s != nil { t.Fatal("panic during callback:", s) } }() C.callGoFoo() } //export goFoo func goFoo() { x := 1 for i := 0; i < 10000; i++ { // variadic call mallocs + writes to variadic(x, x, x) if x != 1 { panic("bad x") } } } func variadic(x ...interface{}) {} func testBlocking(t *testing.T) { c := make(chan int) go func() { for i := 0; i < 10; i++ { c <- <-c } }() nestedCall(func() { for i := 0; i < 10; i++ { c <- i if j := <-c; j != i { t.Errorf("out of sync %d != %d", j, i) } } }) } // Test that the stack can be unwound through a call out and call back // into Go. func testCallbackCallers(t *testing.T) { if runtime.Compiler != "gc" { // The exact function names are not going to be the same. t.Skip("skipping for non-gc toolchain") } pc := make([]uintptr, 100) n := 0 name := []string{ "test.goCallback", "runtime.cgocallbackg1", "runtime.cgocallbackg", "runtime.cgocallback_gofunc", "runtime.asmcgocall", "runtime.cgocall", "test._Cfunc_callback", "test.nestedCall", "test.testCallbackCallers", "test.TestCallbackCallers", "testing.tRunner", "runtime.goexit", } nestedCall(func() { n = runtime.Callers(2, pc) }) if n != len(name) { t.Errorf("expected %d frames, got %d", len(name), n) } for i := 0; i < n; i++ { f := runtime.FuncForPC(pc[i]) if f == nil { t.Fatalf("expected non-nil Func for pc %p", pc[i]) } fname := f.Name() // Remove the prepended pathname from automatically // generated cgo function names. if strings.HasPrefix(fname, "_") { fname = path.Base(f.Name()[1:]) } if fname != name[i] { t.Errorf("expected function name %s, got %s", name[i], fname) } } } func testPanicFromC(t *testing.T) { defer func() { r := recover() if r == nil { t.Fatal("did not panic") } if r.(string) != "panic from C" { t.Fatal("wrong panic:", r) } }() C.callPanic() } func testCallbackStack(t *testing.T) { // Make cgo call and callback with different amount of stack stack available. // We do not do any explicit checks, just ensure that it does not crash. for _, f := range splitTests { f() } } //export goStackCheck func goStackCheck() { // use some stack memory to trigger split stack check var buf [256]byte use(buf[:]) } var Used byte func use(buf []byte) { for _, c := range buf { Used += c } } var splitTests = []func(){ // Edit .+1,/^}/-1|seq 4 4 5000 | sed 's/.*/ stack&,/' | fmt stack4, stack8, stack12, stack16, stack20, stack24, stack28, stack32, stack36, stack40, stack44, stack48, stack52, stack56, stack60, stack64, stack68, stack72, stack76, stack80, stack84, stack88, stack92, stack96, stack100, stack104, stack108, stack112, stack116, stack120, stack124, stack128, stack132, stack136, stack140, stack144, stack148, stack152, stack156, stack160, stack164, stack168, stack172, stack176, stack180, stack184, stack188, stack192, stack196, stack200, stack204, stack208, stack212, stack216, stack220, stack224, stack228, stack232, stack236, stack240, stack244, stack248, stack252, stack256, stack260, stack264, stack268, stack272, stack276, stack280, stack284, stack288, stack292, stack296, stack300, stack304, stack308, stack312, stack316, stack320, stack324, stack328, stack332, stack336, stack340, stack344, stack348, stack352, stack356, stack360, stack364, stack368, stack372, stack376, stack380, stack384, stack388, stack392, stack396, stack400, stack404, stack408, stack412, stack416, stack420, stack424, stack428, stack432, stack436, stack440, stack444, stack448, stack452, stack456, stack460, stack464, stack468, stack472, stack476, stack480, stack484, stack488, stack492, stack496, stack500, stack504, stack508, stack512, stack516, stack520, stack524, stack528, stack532, stack536, stack540, stack544, stack548, stack552, stack556, stack560, stack564, stack568, stack572, stack576, stack580, stack584, stack588, stack592, stack596, stack600, stack604, stack608, stack612, stack616, stack620, stack624, stack628, stack632, stack636, stack640, stack644, stack648, stack652, stack656, stack660, stack664, stack668, stack672, stack676, stack680, stack684, stack688, stack692, stack696, stack700, stack704, stack708, stack712, stack716, stack720, stack724, stack728, stack732, stack736, stack740, stack744, stack748, stack752, stack756, stack760, stack764, stack768, stack772, stack776, stack780, stack784, stack788, stack792, stack796, stack800, stack804, stack808, stack812, stack816, stack820, stack824, stack828, stack832, stack836, stack840, stack844, stack848, stack852, stack856, stack860, stack864, stack868, stack872, stack876, stack880, stack884, stack888, stack892, stack896, stack900, stack904, stack908, stack912, stack916, stack920, stack924, stack928, stack932, stack936, stack940, stack944, stack948, stack952, stack956, stack960, stack964, stack968, stack972, stack976, stack980, stack984, stack988, stack992, stack996, stack1000, stack1004, stack1008, stack1012, stack1016, stack1020, stack1024, stack1028, stack1032, stack1036, stack1040, stack1044, stack1048, stack1052, stack1056, stack1060, stack1064, stack1068, stack1072, stack1076, stack1080, stack1084, stack1088, stack1092, stack1096, stack1100, stack1104, stack1108, stack1112, stack1116, stack1120, stack1124, stack1128, stack1132, stack1136, stack1140, stack1144, stack1148, stack1152, stack1156, stack1160, stack1164, stack1168, stack1172, stack1176, stack1180, stack1184, stack1188, stack1192, stack1196, stack1200, stack1204, stack1208, stack1212, stack1216, stack1220, stack1224, stack1228, stack1232, stack1236, stack1240, stack1244, stack1248, stack1252, stack1256, stack1260, stack1264, stack1268, stack1272, stack1276, stack1280, stack1284, stack1288, stack1292, stack1296, stack1300, stack1304, stack1308, stack1312, stack1316, stack1320, stack1324, stack1328, stack1332, stack1336, stack1340, stack1344, stack1348, stack1352, stack1356, stack1360, stack1364, stack1368, stack1372, stack1376, stack1380, stack1384, stack1388, stack1392, stack1396, stack1400, stack1404, stack1408, stack1412, stack1416, stack1420, stack1424, stack1428, stack1432, stack1436, stack1440, stack1444, stack1448, stack1452, stack1456, stack1460, stack1464, stack1468, stack1472, stack1476, stack1480, stack1484, stack1488, stack1492, stack1496, stack1500, stack1504, stack1508, stack1512, stack1516, stack1520, stack1524, stack1528, stack1532, stack1536, stack1540, stack1544, stack1548, stack1552, stack1556, stack1560, stack1564, stack1568, stack1572, stack1576, stack1580, stack1584, stack1588, stack1592, stack1596, stack1600, stack1604, stack1608, stack1612, stack1616, stack1620, stack1624, stack1628, stack1632, stack1636, stack1640, stack1644, stack1648, stack1652, stack1656, stack1660, stack1664, stack1668, stack1672, stack1676, stack1680, stack1684, stack1688, stack1692, stack1696, stack1700, stack1704, stack1708, stack1712, stack1716, stack1720, stack1724, stack1728, stack1732, stack1736, stack1740, stack1744, stack1748, stack1752, stack1756, stack1760, stack1764, stack1768, stack1772, stack1776, stack1780, stack1784, stack1788, stack1792, stack1796, stack1800, stack1804, stack1808, stack1812, stack1816, stack1820, stack1824, stack1828, stack1832, stack1836, stack1840, stack1844, stack1848, stack1852, stack1856, stack1860, stack1864, stack1868, stack1872, stack1876, stack1880, stack1884, stack1888, stack1892, stack1896, stack1900, stack1904, stack1908, stack1912, stack1916, stack1920, stack1924, stack1928, stack1932, stack1936, stack1940, stack1944, stack1948, stack1952, stack1956, stack1960, stack1964, stack1968, stack1972, stack1976, stack1980, stack1984, stack1988, stack1992, stack1996, stack2000, stack2004, stack2008, stack2012, stack2016, stack2020, stack2024, stack2028, stack2032, stack2036, stack2040, stack2044, stack2048, stack2052, stack2056, stack2060, stack2064, stack2068, stack2072, stack2076, stack2080, stack2084, stack2088, stack2092, stack2096, stack2100, stack2104, stack2108, stack2112, stack2116, stack2120, stack2124, stack2128, stack2132, stack2136, stack2140, stack2144, stack2148, stack2152, stack2156, stack2160, stack2164, stack2168, stack2172, stack2176, stack2180, stack2184, stack2188, stack2192, stack2196, stack2200, stack2204, stack2208, stack2212, stack2216, stack2220, stack2224, stack2228, stack2232, stack2236, stack2240, stack2244, stack2248, stack2252, stack2256, stack2260, stack2264, stack2268, stack2272, stack2276, stack2280, stack2284, stack2288, stack2292, stack2296, stack2300, stack2304, stack2308, stack2312, stack2316, stack2320, stack2324, stack2328, stack2332, stack2336, stack2340, stack2344, stack2348, stack2352, stack2356, stack2360, stack2364, stack2368, stack2372, stack2376, stack2380, stack2384, stack2388, stack2392, stack2396, stack2400, stack2404, stack2408, stack2412, stack2416, stack2420, stack2424, stack2428, stack2432, stack2436, stack2440, stack2444, stack2448, stack2452, stack2456, stack2460, stack2464, stack2468, stack2472, stack2476, stack2480, stack2484, stack2488, stack2492, stack2496, stack2500, stack2504, stack2508, stack2512, stack2516, stack2520, stack2524, stack2528, stack2532, stack2536, stack2540, stack2544, stack2548, stack2552, stack2556, stack2560, stack2564, stack2568, stack2572, stack2576, stack2580, stack2584, stack2588, stack2592, stack2596, stack2600, stack2604, stack2608, stack2612, stack2616, stack2620, stack2624, stack2628, stack2632, stack2636, stack2640, stack2644, stack2648, stack2652, stack2656, stack2660, stack2664, stack2668, stack2672, stack2676, stack2680, stack2684, stack2688, stack2692, stack2696, stack2700, stack2704, stack2708, stack2712, stack2716, stack2720, stack2724, stack2728, stack2732, stack2736, stack2740, stack2744, stack2748, stack2752, stack2756, stack2760, stack2764, stack2768, stack2772, stack2776, stack2780, stack2784, stack2788, stack2792, stack2796, stack2800, stack2804, stack2808, stack2812, stack2816, stack2820, stack2824, stack2828, stack2832, stack2836, stack2840, stack2844, stack2848, stack2852, stack2856, stack2860, stack2864, stack2868, stack2872, stack2876, stack2880, stack2884, stack2888, stack2892, stack2896, stack2900, stack2904, stack2908, stack2912, stack2916, stack2920, stack2924, stack2928, stack2932, stack2936, stack2940, stack2944, stack2948, stack2952, stack2956, stack2960, stack2964, stack2968, stack2972, stack2976, stack2980, stack2984, stack2988, stack2992, stack2996, stack3000, stack3004, stack3008, stack3012, stack3016, stack3020, stack3024, stack3028, stack3032, stack3036, stack3040, stack3044, stack3048, stack3052, stack3056, stack3060, stack3064, stack3068, stack3072, stack3076, stack3080, stack3084, stack3088, stack3092, stack3096, stack3100, stack3104, stack3108, stack3112, stack3116, stack3120, stack3124, stack3128, stack3132, stack3136, stack3140, stack3144, stack3148, stack3152, stack3156, stack3160, stack3164, stack3168, stack3172, stack3176, stack3180, stack3184, stack3188, stack3192, stack3196, stack3200, stack3204, stack3208, stack3212, stack3216, stack3220, stack3224, stack3228, stack3232, stack3236, stack3240, stack3244, stack3248, stack3252, stack3256, stack3260, stack3264, stack3268, stack3272, stack3276, stack3280, stack3284, stack3288, stack3292, stack3296, stack3300, stack3304, stack3308, stack3312, stack3316, stack3320, stack3324, stack3328, stack3332, stack3336, stack3340, stack3344, stack3348, stack3352, stack3356, stack3360, stack3364, stack3368, stack3372, stack3376, stack3380, stack3384, stack3388, stack3392, stack3396, stack3400, stack3404, stack3408, stack3412, stack3416, stack3420, stack3424, stack3428, stack3432, stack3436, stack3440, stack3444, stack3448, stack3452, stack3456, stack3460, stack3464, stack3468, stack3472, stack3476, stack3480, stack3484, stack3488, stack3492, stack3496, stack3500, stack3504, stack3508, stack3512, stack3516, stack3520, stack3524, stack3528, stack3532, stack3536, stack3540, stack3544, stack3548, stack3552, stack3556, stack3560, stack3564, stack3568, stack3572, stack3576, stack3580, stack3584, stack3588, stack3592, stack3596, stack3600, stack3604, stack3608, stack3612, stack3616, stack3620, stack3624, stack3628, stack3632, stack3636, stack3640, stack3644, stack3648, stack3652, stack3656, stack3660, stack3664, stack3668, stack3672, stack3676, stack3680, stack3684, stack3688, stack3692, stack3696, stack3700, stack3704, stack3708, stack3712, stack3716, stack3720, stack3724, stack3728, stack3732, stack3736, stack3740, stack3744, stack3748, stack3752, stack3756, stack3760, stack3764, stack3768, stack3772, stack3776, stack3780, stack3784, stack3788, stack3792, stack3796, stack3800, stack3804, stack3808, stack3812, stack3816, stack3820, stack3824, stack3828, stack3832, stack3836, stack3840, stack3844, stack3848, stack3852, stack3856, stack3860, stack3864, stack3868, stack3872, stack3876, stack3880, stack3884, stack3888, stack3892, stack3896, stack3900, stack3904, stack3908, stack3912, stack3916, stack3920, stack3924, stack3928, stack3932, stack3936, stack3940, stack3944, stack3948, stack3952, stack3956, stack3960, stack3964, stack3968, stack3972, stack3976, stack3980, stack3984, stack3988, stack3992, stack3996, stack4000, stack4004, stack4008, stack4012, stack4016, stack4020, stack4024, stack4028, stack4032, stack4036, stack4040, stack4044, stack4048, stack4052, stack4056, stack4060, stack4064, stack4068, stack4072, stack4076, stack4080, stack4084, stack4088, stack4092, stack4096, stack4100, stack4104, stack4108, stack4112, stack4116, stack4120, stack4124, stack4128, stack4132, stack4136, stack4140, stack4144, stack4148, stack4152, stack4156, stack4160, stack4164, stack4168, stack4172, stack4176, stack4180, stack4184, stack4188, stack4192, stack4196, stack4200, stack4204, stack4208, stack4212, stack4216, stack4220, stack4224, stack4228, stack4232, stack4236, stack4240, stack4244, stack4248, stack4252, stack4256, stack4260, stack4264, stack4268, stack4272, stack4276, stack4280, stack4284, stack4288, stack4292, stack4296, stack4300, stack4304, stack4308, stack4312, stack4316, stack4320, stack4324, stack4328, stack4332, stack4336, stack4340, stack4344, stack4348, stack4352, stack4356, stack4360, stack4364, stack4368, stack4372, stack4376, stack4380, stack4384, stack4388, stack4392, stack4396, stack4400, stack4404, stack4408, stack4412, stack4416, stack4420, stack4424, stack4428, stack4432, stack4436, stack4440, stack4444, stack4448, stack4452, stack4456, stack4460, stack4464, stack4468, stack4472, stack4476, stack4480, stack4484, stack4488, stack4492, stack4496, stack4500, stack4504, stack4508, stack4512, stack4516, stack4520, stack4524, stack4528, stack4532, stack4536, stack4540, stack4544, stack4548, stack4552, stack4556, stack4560, stack4564, stack4568, stack4572, stack4576, stack4580, stack4584, stack4588, stack4592, stack4596, stack4600, stack4604, stack4608, stack4612, stack4616, stack4620, stack4624, stack4628, stack4632, stack4636, stack4640, stack4644, stack4648, stack4652, stack4656, stack4660, stack4664, stack4668, stack4672, stack4676, stack4680, stack4684, stack4688, stack4692, stack4696, stack4700, stack4704, stack4708, stack4712, stack4716, stack4720, stack4724, stack4728, stack4732, stack4736, stack4740, stack4744, stack4748, stack4752, stack4756, stack4760, stack4764, stack4768, stack4772, stack4776, stack4780, stack4784, stack4788, stack4792, stack4796, stack4800, stack4804, stack4808, stack4812, stack4816, stack4820, stack4824, stack4828, stack4832, stack4836, stack4840, stack4844, stack4848, stack4852, stack4856, stack4860, stack4864, stack4868, stack4872, stack4876, stack4880, stack4884, stack4888, stack4892, stack4896, stack4900, stack4904, stack4908, stack4912, stack4916, stack4920, stack4924, stack4928, stack4932, stack4936, stack4940, stack4944, stack4948, stack4952, stack4956, stack4960, stack4964, stack4968, stack4972, stack4976, stack4980, stack4984, stack4988, stack4992, stack4996, stack5000, } // Edit .+1,$ | seq 4 4 5000 | sed 's/.*/func stack&() { var buf [&]byte; use(buf[:]); C.callGoStackCheck() }/' func stack4() { var buf [4]byte; use(buf[:]); C.callGoStackCheck() } func stack8() { var buf [8]byte; use(buf[:]); C.callGoStackCheck() } func stack12() { var buf [12]byte; use(buf[:]); C.callGoStackCheck() } func stack16() { var buf [16]byte; use(buf[:]); C.callGoStackCheck() } func stack20() { var buf [20]byte; use(buf[:]); C.callGoStackCheck() } func stack24() { var buf [24]byte; use(buf[:]); C.callGoStackCheck() } func stack28() { var buf [28]byte; use(buf[:]); C.callGoStackCheck() } func stack32() { var buf [32]byte; use(buf[:]); C.callGoStackCheck() } func stack36() { var buf [36]byte; use(buf[:]); C.callGoStackCheck() } func stack40() { var buf [40]byte; use(buf[:]); C.callGoStackCheck() } func stack44() { var buf [44]byte; use(buf[:]); C.callGoStackCheck() } func stack48() { var buf [48]byte; use(buf[:]); C.callGoStackCheck() } func stack52() { var buf [52]byte; use(buf[:]); C.callGoStackCheck() } func stack56() { var buf [56]byte; use(buf[:]); C.callGoStackCheck() } func stack60() { var buf [60]byte; use(buf[:]); C.callGoStackCheck() } func stack64() { var buf [64]byte; use(buf[:]); C.callGoStackCheck() } func stack68() { var buf [68]byte; use(buf[:]); C.callGoStackCheck() } func stack72() { var buf [72]byte; use(buf[:]); C.callGoStackCheck() } func stack76() { var buf [76]byte; use(buf[:]); C.callGoStackCheck() } func stack80() { var buf [80]byte; use(buf[:]); C.callGoStackCheck() } func stack84() { var buf [84]byte; use(buf[:]); C.callGoStackCheck() } func stack88() { var buf [88]byte; use(buf[:]); C.callGoStackCheck() } func stack92() { var buf [92]byte; use(buf[:]); C.callGoStackCheck() } func stack96() { var buf [96]byte; use(buf[:]); C.callGoStackCheck() } func stack100() { var buf [100]byte; use(buf[:]); C.callGoStackCheck() } func stack104() { var buf [104]byte; use(buf[:]); C.callGoStackCheck() } func stack108() { var buf [108]byte; use(buf[:]); C.callGoStackCheck() } func stack112() { var buf [112]byte; use(buf[:]); C.callGoStackCheck() } func stack116() { var buf [116]byte; use(buf[:]); C.callGoStackCheck() } func stack120() { var buf [120]byte; use(buf[:]); C.callGoStackCheck() } func stack124() { var buf [124]byte; use(buf[:]); C.callGoStackCheck() } func stack128() { var buf [128]byte; use(buf[:]); C.callGoStackCheck() } func stack132() { var buf [132]byte; use(buf[:]); C.callGoStackCheck() } func stack136() { var buf [136]byte; use(buf[:]); C.callGoStackCheck() } func stack140() { var buf [140]byte; use(buf[:]); C.callGoStackCheck() } func stack144() { var buf [144]byte; use(buf[:]); C.callGoStackCheck() } func stack148() { var buf [148]byte; use(buf[:]); C.callGoStackCheck() } func stack152() { var buf [152]byte; use(buf[:]); C.callGoStackCheck() } func stack156() { var buf [156]byte; use(buf[:]); C.callGoStackCheck() } func stack160() { var buf [160]byte; use(buf[:]); C.callGoStackCheck() } func stack164() { var buf [164]byte; use(buf[:]); C.callGoStackCheck() } func stack168() { var buf [168]byte; use(buf[:]); C.callGoStackCheck() } func stack172() { var buf [172]byte; use(buf[:]); C.callGoStackCheck() } func stack176() { var buf [176]byte; use(buf[:]); C.callGoStackCheck() } func stack180() { var buf [180]byte; use(buf[:]); C.callGoStackCheck() } func stack184() { var buf [184]byte; use(buf[:]); C.callGoStackCheck() } func stack188() { var buf [188]byte; use(buf[:]); C.callGoStackCheck() } func stack192() { var buf [192]byte; use(buf[:]); C.callGoStackCheck() } func stack196() { var buf [196]byte; use(buf[:]); C.callGoStackCheck() } func stack200() { var buf [200]byte; use(buf[:]); C.callGoStackCheck() } func stack204() { var buf [204]byte; use(buf[:]); C.callGoStackCheck() } func stack208() { var buf [208]byte; use(buf[:]); C.callGoStackCheck() } func stack212() { var buf [212]byte; use(buf[:]); C.callGoStackCheck() } func stack216() { var buf [216]byte; use(buf[:]); C.callGoStackCheck() } func stack220() { var buf [220]byte; use(buf[:]); C.callGoStackCheck() } func stack224() { var buf [224]byte; use(buf[:]); C.callGoStackCheck() } func stack228() { var buf [228]byte; use(buf[:]); C.callGoStackCheck() } func stack232() { var buf [232]byte; use(buf[:]); C.callGoStackCheck() } func stack236() { var buf [236]byte; use(buf[:]); C.callGoStackCheck() } func stack240() { var buf [240]byte; use(buf[:]); C.callGoStackCheck() } func stack244() { var buf [244]byte; use(buf[:]); C.callGoStackCheck() } func stack248() { var buf [248]byte; use(buf[:]); C.callGoStackCheck() } func stack252() { var buf [252]byte; use(buf[:]); C.callGoStackCheck() } func stack256() { var buf [256]byte; use(buf[:]); C.callGoStackCheck() } func stack260() { var buf [260]byte; use(buf[:]); C.callGoStackCheck() } func stack264() { var buf [264]byte; use(buf[:]); C.callGoStackCheck() } func stack268() { var buf [268]byte; use(buf[:]); C.callGoStackCheck() } func stack272() { var buf [272]byte; use(buf[:]); C.callGoStackCheck() } func stack276() { var buf [276]byte; use(buf[:]); C.callGoStackCheck() } func stack280() { var buf [280]byte; use(buf[:]); C.callGoStackCheck() } func stack284() { var buf [284]byte; use(buf[:]); C.callGoStackCheck() } func stack288() { var buf [288]byte; use(buf[:]); C.callGoStackCheck() } func stack292() { var buf [292]byte; use(buf[:]); C.callGoStackCheck() } func stack296() { var buf [296]byte; use(buf[:]); C.callGoStackCheck() } func stack300() { var buf [300]byte; use(buf[:]); C.callGoStackCheck() } func stack304() { var buf [304]byte; use(buf[:]); C.callGoStackCheck() } func stack308() { var buf [308]byte; use(buf[:]); C.callGoStackCheck() } func stack312() { var buf [312]byte; use(buf[:]); C.callGoStackCheck() } func stack316() { var buf [316]byte; use(buf[:]); C.callGoStackCheck() } func stack320() { var buf [320]byte; use(buf[:]); C.callGoStackCheck() } func stack324() { var buf [324]byte; use(buf[:]); C.callGoStackCheck() } func stack328() { var buf [328]byte; use(buf[:]); C.callGoStackCheck() } func stack332() { var buf [332]byte; use(buf[:]); C.callGoStackCheck() } func stack336() { var buf [336]byte; use(buf[:]); C.callGoStackCheck() } func stack340() { var buf [340]byte; use(buf[:]); C.callGoStackCheck() } func stack344() { var buf [344]byte; use(buf[:]); C.callGoStackCheck() } func stack348() { var buf [348]byte; use(buf[:]); C.callGoStackCheck() } func stack352() { var buf [352]byte; use(buf[:]); C.callGoStackCheck() } func stack356() { var buf [356]byte; use(buf[:]); C.callGoStackCheck() } func stack360() { var buf [360]byte; use(buf[:]); C.callGoStackCheck() } func stack364() { var buf [364]byte; use(buf[:]); C.callGoStackCheck() } func stack368() { var buf [368]byte; use(buf[:]); C.callGoStackCheck() } func stack372() { var buf [372]byte; use(buf[:]); C.callGoStackCheck() } func stack376() { var buf [376]byte; use(buf[:]); C.callGoStackCheck() } func stack380() { var buf [380]byte; use(buf[:]); C.callGoStackCheck() } func stack384() { var buf [384]byte; use(buf[:]); C.callGoStackCheck() } func stack388() { var buf [388]byte; use(buf[:]); C.callGoStackCheck() } func stack392() { var buf [392]byte; use(buf[:]); C.callGoStackCheck() } func stack396() { var buf [396]byte; use(buf[:]); C.callGoStackCheck() } func stack400() { var buf [400]byte; use(buf[:]); C.callGoStackCheck() } func stack404() { var buf [404]byte; use(buf[:]); C.callGoStackCheck() } func stack408() { var buf [408]byte; use(buf[:]); C.callGoStackCheck() } func stack412() { var buf [412]byte; use(buf[:]); C.callGoStackCheck() } func stack416() { var buf [416]byte; use(buf[:]); C.callGoStackCheck() } func stack420() { var buf [420]byte; use(buf[:]); C.callGoStackCheck() } func stack424() { var buf [424]byte; use(buf[:]); C.callGoStackCheck() } func stack428() { var buf [428]byte; use(buf[:]); C.callGoStackCheck() } func stack432() { var buf [432]byte; use(buf[:]); C.callGoStackCheck() } func stack436() { var buf [436]byte; use(buf[:]); C.callGoStackCheck() } func stack440() { var buf [440]byte; use(buf[:]); C.callGoStackCheck() } func stack444() { var buf [444]byte; use(buf[:]); C.callGoStackCheck() } func stack448() { var buf [448]byte; use(buf[:]); C.callGoStackCheck() } func stack452() { var buf [452]byte; use(buf[:]); C.callGoStackCheck() } func stack456() { var buf [456]byte; use(buf[:]); C.callGoStackCheck() } func stack460() { var buf [460]byte; use(buf[:]); C.callGoStackCheck() } func stack464() { var buf [464]byte; use(buf[:]); C.callGoStackCheck() } func stack468() { var buf [468]byte; use(buf[:]); C.callGoStackCheck() } func stack472() { var buf [472]byte; use(buf[:]); C.callGoStackCheck() } func stack476() { var buf [476]byte; use(buf[:]); C.callGoStackCheck() } func stack480() { var buf [480]byte; use(buf[:]); C.callGoStackCheck() } func stack484() { var buf [484]byte; use(buf[:]); C.callGoStackCheck() } func stack488() { var buf [488]byte; use(buf[:]); C.callGoStackCheck() } func stack492() { var buf [492]byte; use(buf[:]); C.callGoStackCheck() } func stack496() { var buf [496]byte; use(buf[:]); C.callGoStackCheck() } func stack500() { var buf [500]byte; use(buf[:]); C.callGoStackCheck() } func stack504() { var buf [504]byte; use(buf[:]); C.callGoStackCheck() } func stack508() { var buf [508]byte; use(buf[:]); C.callGoStackCheck() } func stack512() { var buf [512]byte; use(buf[:]); C.callGoStackCheck() } func stack516() { var buf [516]byte; use(buf[:]); C.callGoStackCheck() } func stack520() { var buf [520]byte; use(buf[:]); C.callGoStackCheck() } func stack524() { var buf [524]byte; use(buf[:]); C.callGoStackCheck() } func stack528() { var buf [528]byte; use(buf[:]); C.callGoStackCheck() } func stack532() { var buf [532]byte; use(buf[:]); C.callGoStackCheck() } func stack536() { var buf [536]byte; use(buf[:]); C.callGoStackCheck() } func stack540() { var buf [540]byte; use(buf[:]); C.callGoStackCheck() } func stack544() { var buf [544]byte; use(buf[:]); C.callGoStackCheck() } func stack548() { var buf [548]byte; use(buf[:]); C.callGoStackCheck() } func stack552() { var buf [552]byte; use(buf[:]); C.callGoStackCheck() } func stack556() { var buf [556]byte; use(buf[:]); C.callGoStackCheck() } func stack560() { var buf [560]byte; use(buf[:]); C.callGoStackCheck() } func stack564() { var buf [564]byte; use(buf[:]); C.callGoStackCheck() } func stack568() { var buf [568]byte; use(buf[:]); C.callGoStackCheck() } func stack572() { var buf [572]byte; use(buf[:]); C.callGoStackCheck() } func stack576() { var buf [576]byte; use(buf[:]); C.callGoStackCheck() } func stack580() { var buf [580]byte; use(buf[:]); C.callGoStackCheck() } func stack584() { var buf [584]byte; use(buf[:]); C.callGoStackCheck() } func stack588() { var buf [588]byte; use(buf[:]); C.callGoStackCheck() } func stack592() { var buf [592]byte; use(buf[:]); C.callGoStackCheck() } func stack596() { var buf [596]byte; use(buf[:]); C.callGoStackCheck() } func stack600() { var buf [600]byte; use(buf[:]); C.callGoStackCheck() } func stack604() { var buf [604]byte; use(buf[:]); C.callGoStackCheck() } func stack608() { var buf [608]byte; use(buf[:]); C.callGoStackCheck() } func stack612() { var buf [612]byte; use(buf[:]); C.callGoStackCheck() } func stack616() { var buf [616]byte; use(buf[:]); C.callGoStackCheck() } func stack620() { var buf [620]byte; use(buf[:]); C.callGoStackCheck() } func stack624() { var buf [624]byte; use(buf[:]); C.callGoStackCheck() } func stack628() { var buf [628]byte; use(buf[:]); C.callGoStackCheck() } func stack632() { var buf [632]byte; use(buf[:]); C.callGoStackCheck() } func stack636() { var buf [636]byte; use(buf[:]); C.callGoStackCheck() } func stack640() { var buf [640]byte; use(buf[:]); C.callGoStackCheck() } func stack644() { var buf [644]byte; use(buf[:]); C.callGoStackCheck() } func stack648() { var buf [648]byte; use(buf[:]); C.callGoStackCheck() } func stack652() { var buf [652]byte; use(buf[:]); C.callGoStackCheck() } func stack656() { var buf [656]byte; use(buf[:]); C.callGoStackCheck() } func stack660() { var buf [660]byte; use(buf[:]); C.callGoStackCheck() } func stack664() { var buf [664]byte; use(buf[:]); C.callGoStackCheck() } func stack668() { var buf [668]byte; use(buf[:]); C.callGoStackCheck() } func stack672() { var buf [672]byte; use(buf[:]); C.callGoStackCheck() } func stack676() { var buf [676]byte; use(buf[:]); C.callGoStackCheck() } func stack680() { var buf [680]byte; use(buf[:]); C.callGoStackCheck() } func stack684() { var buf [684]byte; use(buf[:]); C.callGoStackCheck() } func stack688() { var buf [688]byte; use(buf[:]); C.callGoStackCheck() } func stack692() { var buf [692]byte; use(buf[:]); C.callGoStackCheck() } func stack696() { var buf [696]byte; use(buf[:]); C.callGoStackCheck() } func stack700() { var buf [700]byte; use(buf[:]); C.callGoStackCheck() } func stack704() { var buf [704]byte; use(buf[:]); C.callGoStackCheck() } func stack708() { var buf [708]byte; use(buf[:]); C.callGoStackCheck() } func stack712() { var buf [712]byte; use(buf[:]); C.callGoStackCheck() } func stack716() { var buf [716]byte; use(buf[:]); C.callGoStackCheck() } func stack720() { var buf [720]byte; use(buf[:]); C.callGoStackCheck() } func stack724() { var buf [724]byte; use(buf[:]); C.callGoStackCheck() } func stack728() { var buf [728]byte; use(buf[:]); C.callGoStackCheck() } func stack732() { var buf [732]byte; use(buf[:]); C.callGoStackCheck() } func stack736() { var buf [736]byte; use(buf[:]); C.callGoStackCheck() } func stack740() { var buf [740]byte; use(buf[:]); C.callGoStackCheck() } func stack744() { var buf [744]byte; use(buf[:]); C.callGoStackCheck() } func stack748() { var buf [748]byte; use(buf[:]); C.callGoStackCheck() } func stack752() { var buf [752]byte; use(buf[:]); C.callGoStackCheck() } func stack756() { var buf [756]byte; use(buf[:]); C.callGoStackCheck() } func stack760() { var buf [760]byte; use(buf[:]); C.callGoStackCheck() } func stack764() { var buf [764]byte; use(buf[:]); C.callGoStackCheck() } func stack768() { var buf [768]byte; use(buf[:]); C.callGoStackCheck() } func stack772() { var buf [772]byte; use(buf[:]); C.callGoStackCheck() } func stack776() { var buf [776]byte; use(buf[:]); C.callGoStackCheck() } func stack780() { var buf [780]byte; use(buf[:]); C.callGoStackCheck() } func stack784() { var buf [784]byte; use(buf[:]); C.callGoStackCheck() } func stack788() { var buf [788]byte; use(buf[:]); C.callGoStackCheck() } func stack792() { var buf [792]byte; use(buf[:]); C.callGoStackCheck() } func stack796() { var buf [796]byte; use(buf[:]); C.callGoStackCheck() } func stack800() { var buf [800]byte; use(buf[:]); C.callGoStackCheck() } func stack804() { var buf [804]byte; use(buf[:]); C.callGoStackCheck() } func stack808() { var buf [808]byte; use(buf[:]); C.callGoStackCheck() } func stack812() { var buf [812]byte; use(buf[:]); C.callGoStackCheck() } func stack816() { var buf [816]byte; use(buf[:]); C.callGoStackCheck() } func stack820() { var buf [820]byte; use(buf[:]); C.callGoStackCheck() } func stack824() { var buf [824]byte; use(buf[:]); C.callGoStackCheck() } func stack828() { var buf [828]byte; use(buf[:]); C.callGoStackCheck() } func stack832() { var buf [832]byte; use(buf[:]); C.callGoStackCheck() } func stack836() { var buf [836]byte; use(buf[:]); C.callGoStackCheck() } func stack840() { var buf [840]byte; use(buf[:]); C.callGoStackCheck() } func stack844() { var buf [844]byte; use(buf[:]); C.callGoStackCheck() } func stack848() { var buf [848]byte; use(buf[:]); C.callGoStackCheck() } func stack852() { var buf [852]byte; use(buf[:]); C.callGoStackCheck() } func stack856() { var buf [856]byte; use(buf[:]); C.callGoStackCheck() } func stack860() { var buf [860]byte; use(buf[:]); C.callGoStackCheck() } func stack864() { var buf [864]byte; use(buf[:]); C.callGoStackCheck() } func stack868() { var buf [868]byte; use(buf[:]); C.callGoStackCheck() } func stack872() { var buf [872]byte; use(buf[:]); C.callGoStackCheck() } func stack876() { var buf [876]byte; use(buf[:]); C.callGoStackCheck() } func stack880() { var buf [880]byte; use(buf[:]); C.callGoStackCheck() } func stack884() { var buf [884]byte; use(buf[:]); C.callGoStackCheck() } func stack888() { var buf [888]byte; use(buf[:]); C.callGoStackCheck() } func stack892() { var buf [892]byte; use(buf[:]); C.callGoStackCheck() } func stack896() { var buf [896]byte; use(buf[:]); C.callGoStackCheck() } func stack900() { var buf [900]byte; use(buf[:]); C.callGoStackCheck() } func stack904() { var buf [904]byte; use(buf[:]); C.callGoStackCheck() } func stack908() { var buf [908]byte; use(buf[:]); C.callGoStackCheck() } func stack912() { var buf [912]byte; use(buf[:]); C.callGoStackCheck() } func stack916() { var buf [916]byte; use(buf[:]); C.callGoStackCheck() } func stack920() { var buf [920]byte; use(buf[:]); C.callGoStackCheck() } func stack924() { var buf [924]byte; use(buf[:]); C.callGoStackCheck() } func stack928() { var buf [928]byte; use(buf[:]); C.callGoStackCheck() } func stack932() { var buf [932]byte; use(buf[:]); C.callGoStackCheck() } func stack936() { var buf [936]byte; use(buf[:]); C.callGoStackCheck() } func stack940() { var buf [940]byte; use(buf[:]); C.callGoStackCheck() } func stack944() { var buf [944]byte; use(buf[:]); C.callGoStackCheck() } func stack948() { var buf [948]byte; use(buf[:]); C.callGoStackCheck() } func stack952() { var buf [952]byte; use(buf[:]); C.callGoStackCheck() } func stack956() { var buf [956]byte; use(buf[:]); C.callGoStackCheck() } func stack960() { var buf [960]byte; use(buf[:]); C.callGoStackCheck() } func stack964() { var buf [964]byte; use(buf[:]); C.callGoStackCheck() } func stack968() { var buf [968]byte; use(buf[:]); C.callGoStackCheck() } func stack972() { var buf [972]byte; use(buf[:]); C.callGoStackCheck() } func stack976() { var buf [976]byte; use(buf[:]); C.callGoStackCheck() } func stack980() { var buf [980]byte; use(buf[:]); C.callGoStackCheck() } func stack984() { var buf [984]byte; use(buf[:]); C.callGoStackCheck() } func stack988() { var buf [988]byte; use(buf[:]); C.callGoStackCheck() } func stack992() { var buf [992]byte; use(buf[:]); C.callGoStackCheck() } func stack996() { var buf [996]byte; use(buf[:]); C.callGoStackCheck() } func stack1000() { var buf [1000]byte; use(buf[:]); C.callGoStackCheck() } func stack1004() { var buf [1004]byte; use(buf[:]); C.callGoStackCheck() } func stack1008() { var buf [1008]byte; use(buf[:]); C.callGoStackCheck() } func stack1012() { var buf [1012]byte; use(buf[:]); C.callGoStackCheck() } func stack1016() { var buf [1016]byte; use(buf[:]); C.callGoStackCheck() } func stack1020() { var buf [1020]byte; use(buf[:]); C.callGoStackCheck() } func stack1024() { var buf [1024]byte; use(buf[:]); C.callGoStackCheck() } func stack1028() { var buf [1028]byte; use(buf[:]); C.callGoStackCheck() } func stack1032() { var buf [1032]byte; use(buf[:]); C.callGoStackCheck() } func stack1036() { var buf [1036]byte; use(buf[:]); C.callGoStackCheck() } func stack1040() { var buf [1040]byte; use(buf[:]); C.callGoStackCheck() } func stack1044() { var buf [1044]byte; use(buf[:]); C.callGoStackCheck() } func stack1048() { var buf [1048]byte; use(buf[:]); C.callGoStackCheck() } func stack1052() { var buf [1052]byte; use(buf[:]); C.callGoStackCheck() } func stack1056() { var buf [1056]byte; use(buf[:]); C.callGoStackCheck() } func stack1060() { var buf [1060]byte; use(buf[:]); C.callGoStackCheck() } func stack1064() { var buf [1064]byte; use(buf[:]); C.callGoStackCheck() } func stack1068() { var buf [1068]byte; use(buf[:]); C.callGoStackCheck() } func stack1072() { var buf [1072]byte; use(buf[:]); C.callGoStackCheck() } func stack1076() { var buf [1076]byte; use(buf[:]); C.callGoStackCheck() } func stack1080() { var buf [1080]byte; use(buf[:]); C.callGoStackCheck() } func stack1084() { var buf [1084]byte; use(buf[:]); C.callGoStackCheck() } func stack1088() { var buf [1088]byte; use(buf[:]); C.callGoStackCheck() } func stack1092() { var buf [1092]byte; use(buf[:]); C.callGoStackCheck() } func stack1096() { var buf [1096]byte; use(buf[:]); C.callGoStackCheck() } func stack1100() { var buf [1100]byte; use(buf[:]); C.callGoStackCheck() } func stack1104() { var buf [1104]byte; use(buf[:]); C.callGoStackCheck() } func stack1108() { var buf [1108]byte; use(buf[:]); C.callGoStackCheck() } func stack1112() { var buf [1112]byte; use(buf[:]); C.callGoStackCheck() } func stack1116() { var buf [1116]byte; use(buf[:]); C.callGoStackCheck() } func stack1120() { var buf [1120]byte; use(buf[:]); C.callGoStackCheck() } func stack1124() { var buf [1124]byte; use(buf[:]); C.callGoStackCheck() } func stack1128() { var buf [1128]byte; use(buf[:]); C.callGoStackCheck() } func stack1132() { var buf [1132]byte; use(buf[:]); C.callGoStackCheck() } func stack1136() { var buf [1136]byte; use(buf[:]); C.callGoStackCheck() } func stack1140() { var buf [1140]byte; use(buf[:]); C.callGoStackCheck() } func stack1144() { var buf [1144]byte; use(buf[:]); C.callGoStackCheck() } func stack1148() { var buf [1148]byte; use(buf[:]); C.callGoStackCheck() } func stack1152() { var buf [1152]byte; use(buf[:]); C.callGoStackCheck() } func stack1156() { var buf [1156]byte; use(buf[:]); C.callGoStackCheck() } func stack1160() { var buf [1160]byte; use(buf[:]); C.callGoStackCheck() } func stack1164() { var buf [1164]byte; use(buf[:]); C.callGoStackCheck() } func stack1168() { var buf [1168]byte; use(buf[:]); C.callGoStackCheck() } func stack1172() { var buf [1172]byte; use(buf[:]); C.callGoStackCheck() } func stack1176() { var buf [1176]byte; use(buf[:]); C.callGoStackCheck() } func stack1180() { var buf [1180]byte; use(buf[:]); C.callGoStackCheck() } func stack1184() { var buf [1184]byte; use(buf[:]); C.callGoStackCheck() } func stack1188() { var buf [1188]byte; use(buf[:]); C.callGoStackCheck() } func stack1192() { var buf [1192]byte; use(buf[:]); C.callGoStackCheck() } func stack1196() { var buf [1196]byte; use(buf[:]); C.callGoStackCheck() } func stack1200() { var buf [1200]byte; use(buf[:]); C.callGoStackCheck() } func stack1204() { var buf [1204]byte; use(buf[:]); C.callGoStackCheck() } func stack1208() { var buf [1208]byte; use(buf[:]); C.callGoStackCheck() } func stack1212() { var buf [1212]byte; use(buf[:]); C.callGoStackCheck() } func stack1216() { var buf [1216]byte; use(buf[:]); C.callGoStackCheck() } func stack1220() { var buf [1220]byte; use(buf[:]); C.callGoStackCheck() } func stack1224() { var buf [1224]byte; use(buf[:]); C.callGoStackCheck() } func stack1228() { var buf [1228]byte; use(buf[:]); C.callGoStackCheck() } func stack1232() { var buf [1232]byte; use(buf[:]); C.callGoStackCheck() } func stack1236() { var buf [1236]byte; use(buf[:]); C.callGoStackCheck() } func stack1240() { var buf [1240]byte; use(buf[:]); C.callGoStackCheck() } func stack1244() { var buf [1244]byte; use(buf[:]); C.callGoStackCheck() } func stack1248() { var buf [1248]byte; use(buf[:]); C.callGoStackCheck() } func stack1252() { var buf [1252]byte; use(buf[:]); C.callGoStackCheck() } func stack1256() { var buf [1256]byte; use(buf[:]); C.callGoStackCheck() } func stack1260() { var buf [1260]byte; use(buf[:]); C.callGoStackCheck() } func stack1264() { var buf [1264]byte; use(buf[:]); C.callGoStackCheck() } func stack1268() { var buf [1268]byte; use(buf[:]); C.callGoStackCheck() } func stack1272() { var buf [1272]byte; use(buf[:]); C.callGoStackCheck() } func stack1276() { var buf [1276]byte; use(buf[:]); C.callGoStackCheck() } func stack1280() { var buf [1280]byte; use(buf[:]); C.callGoStackCheck() } func stack1284() { var buf [1284]byte; use(buf[:]); C.callGoStackCheck() } func stack1288() { var buf [1288]byte; use(buf[:]); C.callGoStackCheck() } func stack1292() { var buf [1292]byte; use(buf[:]); C.callGoStackCheck() } func stack1296() { var buf [1296]byte; use(buf[:]); C.callGoStackCheck() } func stack1300() { var buf [1300]byte; use(buf[:]); C.callGoStackCheck() } func stack1304() { var buf [1304]byte; use(buf[:]); C.callGoStackCheck() } func stack1308() { var buf [1308]byte; use(buf[:]); C.callGoStackCheck() } func stack1312() { var buf [1312]byte; use(buf[:]); C.callGoStackCheck() } func stack1316() { var buf [1316]byte; use(buf[:]); C.callGoStackCheck() } func stack1320() { var buf [1320]byte; use(buf[:]); C.callGoStackCheck() } func stack1324() { var buf [1324]byte; use(buf[:]); C.callGoStackCheck() } func stack1328() { var buf [1328]byte; use(buf[:]); C.callGoStackCheck() } func stack1332() { var buf [1332]byte; use(buf[:]); C.callGoStackCheck() } func stack1336() { var buf [1336]byte; use(buf[:]); C.callGoStackCheck() } func stack1340() { var buf [1340]byte; use(buf[:]); C.callGoStackCheck() } func stack1344() { var buf [1344]byte; use(buf[:]); C.callGoStackCheck() } func stack1348() { var buf [1348]byte; use(buf[:]); C.callGoStackCheck() } func stack1352() { var buf [1352]byte; use(buf[:]); C.callGoStackCheck() } func stack1356() { var buf [1356]byte; use(buf[:]); C.callGoStackCheck() } func stack1360() { var buf [1360]byte; use(buf[:]); C.callGoStackCheck() } func stack1364() { var buf [1364]byte; use(buf[:]); C.callGoStackCheck() } func stack1368() { var buf [1368]byte; use(buf[:]); C.callGoStackCheck() } func stack1372() { var buf [1372]byte; use(buf[:]); C.callGoStackCheck() } func stack1376() { var buf [1376]byte; use(buf[:]); C.callGoStackCheck() } func stack1380() { var buf [1380]byte; use(buf[:]); C.callGoStackCheck() } func stack1384() { var buf [1384]byte; use(buf[:]); C.callGoStackCheck() } func stack1388() { var buf [1388]byte; use(buf[:]); C.callGoStackCheck() } func stack1392() { var buf [1392]byte; use(buf[:]); C.callGoStackCheck() } func stack1396() { var buf [1396]byte; use(buf[:]); C.callGoStackCheck() } func stack1400() { var buf [1400]byte; use(buf[:]); C.callGoStackCheck() } func stack1404() { var buf [1404]byte; use(buf[:]); C.callGoStackCheck() } func stack1408() { var buf [1408]byte; use(buf[:]); C.callGoStackCheck() } func stack1412() { var buf [1412]byte; use(buf[:]); C.callGoStackCheck() } func stack1416() { var buf [1416]byte; use(buf[:]); C.callGoStackCheck() } func stack1420() { var buf [1420]byte; use(buf[:]); C.callGoStackCheck() } func stack1424() { var buf [1424]byte; use(buf[:]); C.callGoStackCheck() } func stack1428() { var buf [1428]byte; use(buf[:]); C.callGoStackCheck() } func stack1432() { var buf [1432]byte; use(buf[:]); C.callGoStackCheck() } func stack1436() { var buf [1436]byte; use(buf[:]); C.callGoStackCheck() } func stack1440() { var buf [1440]byte; use(buf[:]); C.callGoStackCheck() } func stack1444() { var buf [1444]byte; use(buf[:]); C.callGoStackCheck() } func stack1448() { var buf [1448]byte; use(buf[:]); C.callGoStackCheck() } func stack1452() { var buf [1452]byte; use(buf[:]); C.callGoStackCheck() } func stack1456() { var buf [1456]byte; use(buf[:]); C.callGoStackCheck() } func stack1460() { var buf [1460]byte; use(buf[:]); C.callGoStackCheck() } func stack1464() { var buf [1464]byte; use(buf[:]); C.callGoStackCheck() } func stack1468() { var buf [1468]byte; use(buf[:]); C.callGoStackCheck() } func stack1472() { var buf [1472]byte; use(buf[:]); C.callGoStackCheck() } func stack1476() { var buf [1476]byte; use(buf[:]); C.callGoStackCheck() } func stack1480() { var buf [1480]byte; use(buf[:]); C.callGoStackCheck() } func stack1484() { var buf [1484]byte; use(buf[:]); C.callGoStackCheck() } func stack1488() { var buf [1488]byte; use(buf[:]); C.callGoStackCheck() } func stack1492() { var buf [1492]byte; use(buf[:]); C.callGoStackCheck() } func stack1496() { var buf [1496]byte; use(buf[:]); C.callGoStackCheck() } func stack1500() { var buf [1500]byte; use(buf[:]); C.callGoStackCheck() } func stack1504() { var buf [1504]byte; use(buf[:]); C.callGoStackCheck() } func stack1508() { var buf [1508]byte; use(buf[:]); C.callGoStackCheck() } func stack1512() { var buf [1512]byte; use(buf[:]); C.callGoStackCheck() } func stack1516() { var buf [1516]byte; use(buf[:]); C.callGoStackCheck() } func stack1520() { var buf [1520]byte; use(buf[:]); C.callGoStackCheck() } func stack1524() { var buf [1524]byte; use(buf[:]); C.callGoStackCheck() } func stack1528() { var buf [1528]byte; use(buf[:]); C.callGoStackCheck() } func stack1532() { var buf [1532]byte; use(buf[:]); C.callGoStackCheck() } func stack1536() { var buf [1536]byte; use(buf[:]); C.callGoStackCheck() } func stack1540() { var buf [1540]byte; use(buf[:]); C.callGoStackCheck() } func stack1544() { var buf [1544]byte; use(buf[:]); C.callGoStackCheck() } func stack1548() { var buf [1548]byte; use(buf[:]); C.callGoStackCheck() } func stack1552() { var buf [1552]byte; use(buf[:]); C.callGoStackCheck() } func stack1556() { var buf [1556]byte; use(buf[:]); C.callGoStackCheck() } func stack1560() { var buf [1560]byte; use(buf[:]); C.callGoStackCheck() } func stack1564() { var buf [1564]byte; use(buf[:]); C.callGoStackCheck() } func stack1568() { var buf [1568]byte; use(buf[:]); C.callGoStackCheck() } func stack1572() { var buf [1572]byte; use(buf[:]); C.callGoStackCheck() } func stack1576() { var buf [1576]byte; use(buf[:]); C.callGoStackCheck() } func stack1580() { var buf [1580]byte; use(buf[:]); C.callGoStackCheck() } func stack1584() { var buf [1584]byte; use(buf[:]); C.callGoStackCheck() } func stack1588() { var buf [1588]byte; use(buf[:]); C.callGoStackCheck() } func stack1592() { var buf [1592]byte; use(buf[:]); C.callGoStackCheck() } func stack1596() { var buf [1596]byte; use(buf[:]); C.callGoStackCheck() } func stack1600() { var buf [1600]byte; use(buf[:]); C.callGoStackCheck() } func stack1604() { var buf [1604]byte; use(buf[:]); C.callGoStackCheck() } func stack1608() { var buf [1608]byte; use(buf[:]); C.callGoStackCheck() } func stack1612() { var buf [1612]byte; use(buf[:]); C.callGoStackCheck() } func stack1616() { var buf [1616]byte; use(buf[:]); C.callGoStackCheck() } func stack1620() { var buf [1620]byte; use(buf[:]); C.callGoStackCheck() } func stack1624() { var buf [1624]byte; use(buf[:]); C.callGoStackCheck() } func stack1628() { var buf [1628]byte; use(buf[:]); C.callGoStackCheck() } func stack1632() { var buf [1632]byte; use(buf[:]); C.callGoStackCheck() } func stack1636() { var buf [1636]byte; use(buf[:]); C.callGoStackCheck() } func stack1640() { var buf [1640]byte; use(buf[:]); C.callGoStackCheck() } func stack1644() { var buf [1644]byte; use(buf[:]); C.callGoStackCheck() } func stack1648() { var buf [1648]byte; use(buf[:]); C.callGoStackCheck() } func stack1652() { var buf [1652]byte; use(buf[:]); C.callGoStackCheck() } func stack1656() { var buf [1656]byte; use(buf[:]); C.callGoStackCheck() } func stack1660() { var buf [1660]byte; use(buf[:]); C.callGoStackCheck() } func stack1664() { var buf [1664]byte; use(buf[:]); C.callGoStackCheck() } func stack1668() { var buf [1668]byte; use(buf[:]); C.callGoStackCheck() } func stack1672() { var buf [1672]byte; use(buf[:]); C.callGoStackCheck() } func stack1676() { var buf [1676]byte; use(buf[:]); C.callGoStackCheck() } func stack1680() { var buf [1680]byte; use(buf[:]); C.callGoStackCheck() } func stack1684() { var buf [1684]byte; use(buf[:]); C.callGoStackCheck() } func stack1688() { var buf [1688]byte; use(buf[:]); C.callGoStackCheck() } func stack1692() { var buf [1692]byte; use(buf[:]); C.callGoStackCheck() } func stack1696() { var buf [1696]byte; use(buf[:]); C.callGoStackCheck() } func stack1700() { var buf [1700]byte; use(buf[:]); C.callGoStackCheck() } func stack1704() { var buf [1704]byte; use(buf[:]); C.callGoStackCheck() } func stack1708() { var buf [1708]byte; use(buf[:]); C.callGoStackCheck() } func stack1712() { var buf [1712]byte; use(buf[:]); C.callGoStackCheck() } func stack1716() { var buf [1716]byte; use(buf[:]); C.callGoStackCheck() } func stack1720() { var buf [1720]byte; use(buf[:]); C.callGoStackCheck() } func stack1724() { var buf [1724]byte; use(buf[:]); C.callGoStackCheck() } func stack1728() { var buf [1728]byte; use(buf[:]); C.callGoStackCheck() } func stack1732() { var buf [1732]byte; use(buf[:]); C.callGoStackCheck() } func stack1736() { var buf [1736]byte; use(buf[:]); C.callGoStackCheck() } func stack1740() { var buf [1740]byte; use(buf[:]); C.callGoStackCheck() } func stack1744() { var buf [1744]byte; use(buf[:]); C.callGoStackCheck() } func stack1748() { var buf [1748]byte; use(buf[:]); C.callGoStackCheck() } func stack1752() { var buf [1752]byte; use(buf[:]); C.callGoStackCheck() } func stack1756() { var buf [1756]byte; use(buf[:]); C.callGoStackCheck() } func stack1760() { var buf [1760]byte; use(buf[:]); C.callGoStackCheck() } func stack1764() { var buf [1764]byte; use(buf[:]); C.callGoStackCheck() } func stack1768() { var buf [1768]byte; use(buf[:]); C.callGoStackCheck() } func stack1772() { var buf [1772]byte; use(buf[:]); C.callGoStackCheck() } func stack1776() { var buf [1776]byte; use(buf[:]); C.callGoStackCheck() } func stack1780() { var buf [1780]byte; use(buf[:]); C.callGoStackCheck() } func stack1784() { var buf [1784]byte; use(buf[:]); C.callGoStackCheck() } func stack1788() { var buf [1788]byte; use(buf[:]); C.callGoStackCheck() } func stack1792() { var buf [1792]byte; use(buf[:]); C.callGoStackCheck() } func stack1796() { var buf [1796]byte; use(buf[:]); C.callGoStackCheck() } func stack1800() { var buf [1800]byte; use(buf[:]); C.callGoStackCheck() } func stack1804() { var buf [1804]byte; use(buf[:]); C.callGoStackCheck() } func stack1808() { var buf [1808]byte; use(buf[:]); C.callGoStackCheck() } func stack1812() { var buf [1812]byte; use(buf[:]); C.callGoStackCheck() } func stack1816() { var buf [1816]byte; use(buf[:]); C.callGoStackCheck() } func stack1820() { var buf [1820]byte; use(buf[:]); C.callGoStackCheck() } func stack1824() { var buf [1824]byte; use(buf[:]); C.callGoStackCheck() } func stack1828() { var buf [1828]byte; use(buf[:]); C.callGoStackCheck() } func stack1832() { var buf [1832]byte; use(buf[:]); C.callGoStackCheck() } func stack1836() { var buf [1836]byte; use(buf[:]); C.callGoStackCheck() } func stack1840() { var buf [1840]byte; use(buf[:]); C.callGoStackCheck() } func stack1844() { var buf [1844]byte; use(buf[:]); C.callGoStackCheck() } func stack1848() { var buf [1848]byte; use(buf[:]); C.callGoStackCheck() } func stack1852() { var buf [1852]byte; use(buf[:]); C.callGoStackCheck() } func stack1856() { var buf [1856]byte; use(buf[:]); C.callGoStackCheck() } func stack1860() { var buf [1860]byte; use(buf[:]); C.callGoStackCheck() } func stack1864() { var buf [1864]byte; use(buf[:]); C.callGoStackCheck() } func stack1868() { var buf [1868]byte; use(buf[:]); C.callGoStackCheck() } func stack1872() { var buf [1872]byte; use(buf[:]); C.callGoStackCheck() } func stack1876() { var buf [1876]byte; use(buf[:]); C.callGoStackCheck() } func stack1880() { var buf [1880]byte; use(buf[:]); C.callGoStackCheck() } func stack1884() { var buf [1884]byte; use(buf[:]); C.callGoStackCheck() } func stack1888() { var buf [1888]byte; use(buf[:]); C.callGoStackCheck() } func stack1892() { var buf [1892]byte; use(buf[:]); C.callGoStackCheck() } func stack1896() { var buf [1896]byte; use(buf[:]); C.callGoStackCheck() } func stack1900() { var buf [1900]byte; use(buf[:]); C.callGoStackCheck() } func stack1904() { var buf [1904]byte; use(buf[:]); C.callGoStackCheck() } func stack1908() { var buf [1908]byte; use(buf[:]); C.callGoStackCheck() } func stack1912() { var buf [1912]byte; use(buf[:]); C.callGoStackCheck() } func stack1916() { var buf [1916]byte; use(buf[:]); C.callGoStackCheck() } func stack1920() { var buf [1920]byte; use(buf[:]); C.callGoStackCheck() } func stack1924() { var buf [1924]byte; use(buf[:]); C.callGoStackCheck() } func stack1928() { var buf [1928]byte; use(buf[:]); C.callGoStackCheck() } func stack1932() { var buf [1932]byte; use(buf[:]); C.callGoStackCheck() } func stack1936() { var buf [1936]byte; use(buf[:]); C.callGoStackCheck() } func stack1940() { var buf [1940]byte; use(buf[:]); C.callGoStackCheck() } func stack1944() { var buf [1944]byte; use(buf[:]); C.callGoStackCheck() } func stack1948() { var buf [1948]byte; use(buf[:]); C.callGoStackCheck() } func stack1952() { var buf [1952]byte; use(buf[:]); C.callGoStackCheck() } func stack1956() { var buf [1956]byte; use(buf[:]); C.callGoStackCheck() } func stack1960() { var buf [1960]byte; use(buf[:]); C.callGoStackCheck() } func stack1964() { var buf [1964]byte; use(buf[:]); C.callGoStackCheck() } func stack1968() { var buf [1968]byte; use(buf[:]); C.callGoStackCheck() } func stack1972() { var buf [1972]byte; use(buf[:]); C.callGoStackCheck() } func stack1976() { var buf [1976]byte; use(buf[:]); C.callGoStackCheck() } func stack1980() { var buf [1980]byte; use(buf[:]); C.callGoStackCheck() } func stack1984() { var buf [1984]byte; use(buf[:]); C.callGoStackCheck() } func stack1988() { var buf [1988]byte; use(buf[:]); C.callGoStackCheck() } func stack1992() { var buf [1992]byte; use(buf[:]); C.callGoStackCheck() } func stack1996() { var buf [1996]byte; use(buf[:]); C.callGoStackCheck() } func stack2000() { var buf [2000]byte; use(buf[:]); C.callGoStackCheck() } func stack2004() { var buf [2004]byte; use(buf[:]); C.callGoStackCheck() } func stack2008() { var buf [2008]byte; use(buf[:]); C.callGoStackCheck() } func stack2012() { var buf [2012]byte; use(buf[:]); C.callGoStackCheck() } func stack2016() { var buf [2016]byte; use(buf[:]); C.callGoStackCheck() } func stack2020() { var buf [2020]byte; use(buf[:]); C.callGoStackCheck() } func stack2024() { var buf [2024]byte; use(buf[:]); C.callGoStackCheck() } func stack2028() { var buf [2028]byte; use(buf[:]); C.callGoStackCheck() } func stack2032() { var buf [2032]byte; use(buf[:]); C.callGoStackCheck() } func stack2036() { var buf [2036]byte; use(buf[:]); C.callGoStackCheck() } func stack2040() { var buf [2040]byte; use(buf[:]); C.callGoStackCheck() } func stack2044() { var buf [2044]byte; use(buf[:]); C.callGoStackCheck() } func stack2048() { var buf [2048]byte; use(buf[:]); C.callGoStackCheck() } func stack2052() { var buf [2052]byte; use(buf[:]); C.callGoStackCheck() } func stack2056() { var buf [2056]byte; use(buf[:]); C.callGoStackCheck() } func stack2060() { var buf [2060]byte; use(buf[:]); C.callGoStackCheck() } func stack2064() { var buf [2064]byte; use(buf[:]); C.callGoStackCheck() } func stack2068() { var buf [2068]byte; use(buf[:]); C.callGoStackCheck() } func stack2072() { var buf [2072]byte; use(buf[:]); C.callGoStackCheck() } func stack2076() { var buf [2076]byte; use(buf[:]); C.callGoStackCheck() } func stack2080() { var buf [2080]byte; use(buf[:]); C.callGoStackCheck() } func stack2084() { var buf [2084]byte; use(buf[:]); C.callGoStackCheck() } func stack2088() { var buf [2088]byte; use(buf[:]); C.callGoStackCheck() } func stack2092() { var buf [2092]byte; use(buf[:]); C.callGoStackCheck() } func stack2096() { var buf [2096]byte; use(buf[:]); C.callGoStackCheck() } func stack2100() { var buf [2100]byte; use(buf[:]); C.callGoStackCheck() } func stack2104() { var buf [2104]byte; use(buf[:]); C.callGoStackCheck() } func stack2108() { var buf [2108]byte; use(buf[:]); C.callGoStackCheck() } func stack2112() { var buf [2112]byte; use(buf[:]); C.callGoStackCheck() } func stack2116() { var buf [2116]byte; use(buf[:]); C.callGoStackCheck() } func stack2120() { var buf [2120]byte; use(buf[:]); C.callGoStackCheck() } func stack2124() { var buf [2124]byte; use(buf[:]); C.callGoStackCheck() } func stack2128() { var buf [2128]byte; use(buf[:]); C.callGoStackCheck() } func stack2132() { var buf [2132]byte; use(buf[:]); C.callGoStackCheck() } func stack2136() { var buf [2136]byte; use(buf[:]); C.callGoStackCheck() } func stack2140() { var buf [2140]byte; use(buf[:]); C.callGoStackCheck() } func stack2144() { var buf [2144]byte; use(buf[:]); C.callGoStackCheck() } func stack2148() { var buf [2148]byte; use(buf[:]); C.callGoStackCheck() } func stack2152() { var buf [2152]byte; use(buf[:]); C.callGoStackCheck() } func stack2156() { var buf [2156]byte; use(buf[:]); C.callGoStackCheck() } func stack2160() { var buf [2160]byte; use(buf[:]); C.callGoStackCheck() } func stack2164() { var buf [2164]byte; use(buf[:]); C.callGoStackCheck() } func stack2168() { var buf [2168]byte; use(buf[:]); C.callGoStackCheck() } func stack2172() { var buf [2172]byte; use(buf[:]); C.callGoStackCheck() } func stack2176() { var buf [2176]byte; use(buf[:]); C.callGoStackCheck() } func stack2180() { var buf [2180]byte; use(buf[:]); C.callGoStackCheck() } func stack2184() { var buf [2184]byte; use(buf[:]); C.callGoStackCheck() } func stack2188() { var buf [2188]byte; use(buf[:]); C.callGoStackCheck() } func stack2192() { var buf [2192]byte; use(buf[:]); C.callGoStackCheck() } func stack2196() { var buf [2196]byte; use(buf[:]); C.callGoStackCheck() } func stack2200() { var buf [2200]byte; use(buf[:]); C.callGoStackCheck() } func stack2204() { var buf [2204]byte; use(buf[:]); C.callGoStackCheck() } func stack2208() { var buf [2208]byte; use(buf[:]); C.callGoStackCheck() } func stack2212() { var buf [2212]byte; use(buf[:]); C.callGoStackCheck() } func stack2216() { var buf [2216]byte; use(buf[:]); C.callGoStackCheck() } func stack2220() { var buf [2220]byte; use(buf[:]); C.callGoStackCheck() } func stack2224() { var buf [2224]byte; use(buf[:]); C.callGoStackCheck() } func stack2228() { var buf [2228]byte; use(buf[:]); C.callGoStackCheck() } func stack2232() { var buf [2232]byte; use(buf[:]); C.callGoStackCheck() } func stack2236() { var buf [2236]byte; use(buf[:]); C.callGoStackCheck() } func stack2240() { var buf [2240]byte; use(buf[:]); C.callGoStackCheck() } func stack2244() { var buf [2244]byte; use(buf[:]); C.callGoStackCheck() } func stack2248() { var buf [2248]byte; use(buf[:]); C.callGoStackCheck() } func stack2252() { var buf [2252]byte; use(buf[:]); C.callGoStackCheck() } func stack2256() { var buf [2256]byte; use(buf[:]); C.callGoStackCheck() } func stack2260() { var buf [2260]byte; use(buf[:]); C.callGoStackCheck() } func stack2264() { var buf [2264]byte; use(buf[:]); C.callGoStackCheck() } func stack2268() { var buf [2268]byte; use(buf[:]); C.callGoStackCheck() } func stack2272() { var buf [2272]byte; use(buf[:]); C.callGoStackCheck() } func stack2276() { var buf [2276]byte; use(buf[:]); C.callGoStackCheck() } func stack2280() { var buf [2280]byte; use(buf[:]); C.callGoStackCheck() } func stack2284() { var buf [2284]byte; use(buf[:]); C.callGoStackCheck() } func stack2288() { var buf [2288]byte; use(buf[:]); C.callGoStackCheck() } func stack2292() { var buf [2292]byte; use(buf[:]); C.callGoStackCheck() } func stack2296() { var buf [2296]byte; use(buf[:]); C.callGoStackCheck() } func stack2300() { var buf [2300]byte; use(buf[:]); C.callGoStackCheck() } func stack2304() { var buf [2304]byte; use(buf[:]); C.callGoStackCheck() } func stack2308() { var buf [2308]byte; use(buf[:]); C.callGoStackCheck() } func stack2312() { var buf [2312]byte; use(buf[:]); C.callGoStackCheck() } func stack2316() { var buf [2316]byte; use(buf[:]); C.callGoStackCheck() } func stack2320() { var buf [2320]byte; use(buf[:]); C.callGoStackCheck() } func stack2324() { var buf [2324]byte; use(buf[:]); C.callGoStackCheck() } func stack2328() { var buf [2328]byte; use(buf[:]); C.callGoStackCheck() } func stack2332() { var buf [2332]byte; use(buf[:]); C.callGoStackCheck() } func stack2336() { var buf [2336]byte; use(buf[:]); C.callGoStackCheck() } func stack2340() { var buf [2340]byte; use(buf[:]); C.callGoStackCheck() } func stack2344() { var buf [2344]byte; use(buf[:]); C.callGoStackCheck() } func stack2348() { var buf [2348]byte; use(buf[:]); C.callGoStackCheck() } func stack2352() { var buf [2352]byte; use(buf[:]); C.callGoStackCheck() } func stack2356() { var buf [2356]byte; use(buf[:]); C.callGoStackCheck() } func stack2360() { var buf [2360]byte; use(buf[:]); C.callGoStackCheck() } func stack2364() { var buf [2364]byte; use(buf[:]); C.callGoStackCheck() } func stack2368() { var buf [2368]byte; use(buf[:]); C.callGoStackCheck() } func stack2372() { var buf [2372]byte; use(buf[:]); C.callGoStackCheck() } func stack2376() { var buf [2376]byte; use(buf[:]); C.callGoStackCheck() } func stack2380() { var buf [2380]byte; use(buf[:]); C.callGoStackCheck() } func stack2384() { var buf [2384]byte; use(buf[:]); C.callGoStackCheck() } func stack2388() { var buf [2388]byte; use(buf[:]); C.callGoStackCheck() } func stack2392() { var buf [2392]byte; use(buf[:]); C.callGoStackCheck() } func stack2396() { var buf [2396]byte; use(buf[:]); C.callGoStackCheck() } func stack2400() { var buf [2400]byte; use(buf[:]); C.callGoStackCheck() } func stack2404() { var buf [2404]byte; use(buf[:]); C.callGoStackCheck() } func stack2408() { var buf [2408]byte; use(buf[:]); C.callGoStackCheck() } func stack2412() { var buf [2412]byte; use(buf[:]); C.callGoStackCheck() } func stack2416() { var buf [2416]byte; use(buf[:]); C.callGoStackCheck() } func stack2420() { var buf [2420]byte; use(buf[:]); C.callGoStackCheck() } func stack2424() { var buf [2424]byte; use(buf[:]); C.callGoStackCheck() } func stack2428() { var buf [2428]byte; use(buf[:]); C.callGoStackCheck() } func stack2432() { var buf [2432]byte; use(buf[:]); C.callGoStackCheck() } func stack2436() { var buf [2436]byte; use(buf[:]); C.callGoStackCheck() } func stack2440() { var buf [2440]byte; use(buf[:]); C.callGoStackCheck() } func stack2444() { var buf [2444]byte; use(buf[:]); C.callGoStackCheck() } func stack2448() { var buf [2448]byte; use(buf[:]); C.callGoStackCheck() } func stack2452() { var buf [2452]byte; use(buf[:]); C.callGoStackCheck() } func stack2456() { var buf [2456]byte; use(buf[:]); C.callGoStackCheck() } func stack2460() { var buf [2460]byte; use(buf[:]); C.callGoStackCheck() } func stack2464() { var buf [2464]byte; use(buf[:]); C.callGoStackCheck() } func stack2468() { var buf [2468]byte; use(buf[:]); C.callGoStackCheck() } func stack2472() { var buf [2472]byte; use(buf[:]); C.callGoStackCheck() } func stack2476() { var buf [2476]byte; use(buf[:]); C.callGoStackCheck() } func stack2480() { var buf [2480]byte; use(buf[:]); C.callGoStackCheck() } func stack2484() { var buf [2484]byte; use(buf[:]); C.callGoStackCheck() } func stack2488() { var buf [2488]byte; use(buf[:]); C.callGoStackCheck() } func stack2492() { var buf [2492]byte; use(buf[:]); C.callGoStackCheck() } func stack2496() { var buf [2496]byte; use(buf[:]); C.callGoStackCheck() } func stack2500() { var buf [2500]byte; use(buf[:]); C.callGoStackCheck() } func stack2504() { var buf [2504]byte; use(buf[:]); C.callGoStackCheck() } func stack2508() { var buf [2508]byte; use(buf[:]); C.callGoStackCheck() } func stack2512() { var buf [2512]byte; use(buf[:]); C.callGoStackCheck() } func stack2516() { var buf [2516]byte; use(buf[:]); C.callGoStackCheck() } func stack2520() { var buf [2520]byte; use(buf[:]); C.callGoStackCheck() } func stack2524() { var buf [2524]byte; use(buf[:]); C.callGoStackCheck() } func stack2528() { var buf [2528]byte; use(buf[:]); C.callGoStackCheck() } func stack2532() { var buf [2532]byte; use(buf[:]); C.callGoStackCheck() } func stack2536() { var buf [2536]byte; use(buf[:]); C.callGoStackCheck() } func stack2540() { var buf [2540]byte; use(buf[:]); C.callGoStackCheck() } func stack2544() { var buf [2544]byte; use(buf[:]); C.callGoStackCheck() } func stack2548() { var buf [2548]byte; use(buf[:]); C.callGoStackCheck() } func stack2552() { var buf [2552]byte; use(buf[:]); C.callGoStackCheck() } func stack2556() { var buf [2556]byte; use(buf[:]); C.callGoStackCheck() } func stack2560() { var buf [2560]byte; use(buf[:]); C.callGoStackCheck() } func stack2564() { var buf [2564]byte; use(buf[:]); C.callGoStackCheck() } func stack2568() { var buf [2568]byte; use(buf[:]); C.callGoStackCheck() } func stack2572() { var buf [2572]byte; use(buf[:]); C.callGoStackCheck() } func stack2576() { var buf [2576]byte; use(buf[:]); C.callGoStackCheck() } func stack2580() { var buf [2580]byte; use(buf[:]); C.callGoStackCheck() } func stack2584() { var buf [2584]byte; use(buf[:]); C.callGoStackCheck() } func stack2588() { var buf [2588]byte; use(buf[:]); C.callGoStackCheck() } func stack2592() { var buf [2592]byte; use(buf[:]); C.callGoStackCheck() } func stack2596() { var buf [2596]byte; use(buf[:]); C.callGoStackCheck() } func stack2600() { var buf [2600]byte; use(buf[:]); C.callGoStackCheck() } func stack2604() { var buf [2604]byte; use(buf[:]); C.callGoStackCheck() } func stack2608() { var buf [2608]byte; use(buf[:]); C.callGoStackCheck() } func stack2612() { var buf [2612]byte; use(buf[:]); C.callGoStackCheck() } func stack2616() { var buf [2616]byte; use(buf[:]); C.callGoStackCheck() } func stack2620() { var buf [2620]byte; use(buf[:]); C.callGoStackCheck() } func stack2624() { var buf [2624]byte; use(buf[:]); C.callGoStackCheck() } func stack2628() { var buf [2628]byte; use(buf[:]); C.callGoStackCheck() } func stack2632() { var buf [2632]byte; use(buf[:]); C.callGoStackCheck() } func stack2636() { var buf [2636]byte; use(buf[:]); C.callGoStackCheck() } func stack2640() { var buf [2640]byte; use(buf[:]); C.callGoStackCheck() } func stack2644() { var buf [2644]byte; use(buf[:]); C.callGoStackCheck() } func stack2648() { var buf [2648]byte; use(buf[:]); C.callGoStackCheck() } func stack2652() { var buf [2652]byte; use(buf[:]); C.callGoStackCheck() } func stack2656() { var buf [2656]byte; use(buf[:]); C.callGoStackCheck() } func stack2660() { var buf [2660]byte; use(buf[:]); C.callGoStackCheck() } func stack2664() { var buf [2664]byte; use(buf[:]); C.callGoStackCheck() } func stack2668() { var buf [2668]byte; use(buf[:]); C.callGoStackCheck() } func stack2672() { var buf [2672]byte; use(buf[:]); C.callGoStackCheck() } func stack2676() { var buf [2676]byte; use(buf[:]); C.callGoStackCheck() } func stack2680() { var buf [2680]byte; use(buf[:]); C.callGoStackCheck() } func stack2684() { var buf [2684]byte; use(buf[:]); C.callGoStackCheck() } func stack2688() { var buf [2688]byte; use(buf[:]); C.callGoStackCheck() } func stack2692() { var buf [2692]byte; use(buf[:]); C.callGoStackCheck() } func stack2696() { var buf [2696]byte; use(buf[:]); C.callGoStackCheck() } func stack2700() { var buf [2700]byte; use(buf[:]); C.callGoStackCheck() } func stack2704() { var buf [2704]byte; use(buf[:]); C.callGoStackCheck() } func stack2708() { var buf [2708]byte; use(buf[:]); C.callGoStackCheck() } func stack2712() { var buf [2712]byte; use(buf[:]); C.callGoStackCheck() } func stack2716() { var buf [2716]byte; use(buf[:]); C.callGoStackCheck() } func stack2720() { var buf [2720]byte; use(buf[:]); C.callGoStackCheck() } func stack2724() { var buf [2724]byte; use(buf[:]); C.callGoStackCheck() } func stack2728() { var buf [2728]byte; use(buf[:]); C.callGoStackCheck() } func stack2732() { var buf [2732]byte; use(buf[:]); C.callGoStackCheck() } func stack2736() { var buf [2736]byte; use(buf[:]); C.callGoStackCheck() } func stack2740() { var buf [2740]byte; use(buf[:]); C.callGoStackCheck() } func stack2744() { var buf [2744]byte; use(buf[:]); C.callGoStackCheck() } func stack2748() { var buf [2748]byte; use(buf[:]); C.callGoStackCheck() } func stack2752() { var buf [2752]byte; use(buf[:]); C.callGoStackCheck() } func stack2756() { var buf [2756]byte; use(buf[:]); C.callGoStackCheck() } func stack2760() { var buf [2760]byte; use(buf[:]); C.callGoStackCheck() } func stack2764() { var buf [2764]byte; use(buf[:]); C.callGoStackCheck() } func stack2768() { var buf [2768]byte; use(buf[:]); C.callGoStackCheck() } func stack2772() { var buf [2772]byte; use(buf[:]); C.callGoStackCheck() } func stack2776() { var buf [2776]byte; use(buf[:]); C.callGoStackCheck() } func stack2780() { var buf [2780]byte; use(buf[:]); C.callGoStackCheck() } func stack2784() { var buf [2784]byte; use(buf[:]); C.callGoStackCheck() } func stack2788() { var buf [2788]byte; use(buf[:]); C.callGoStackCheck() } func stack2792() { var buf [2792]byte; use(buf[:]); C.callGoStackCheck() } func stack2796() { var buf [2796]byte; use(buf[:]); C.callGoStackCheck() } func stack2800() { var buf [2800]byte; use(buf[:]); C.callGoStackCheck() } func stack2804() { var buf [2804]byte; use(buf[:]); C.callGoStackCheck() } func stack2808() { var buf [2808]byte; use(buf[:]); C.callGoStackCheck() } func stack2812() { var buf [2812]byte; use(buf[:]); C.callGoStackCheck() } func stack2816() { var buf [2816]byte; use(buf[:]); C.callGoStackCheck() } func stack2820() { var buf [2820]byte; use(buf[:]); C.callGoStackCheck() } func stack2824() { var buf [2824]byte; use(buf[:]); C.callGoStackCheck() } func stack2828() { var buf [2828]byte; use(buf[:]); C.callGoStackCheck() } func stack2832() { var buf [2832]byte; use(buf[:]); C.callGoStackCheck() } func stack2836() { var buf [2836]byte; use(buf[:]); C.callGoStackCheck() } func stack2840() { var buf [2840]byte; use(buf[:]); C.callGoStackCheck() } func stack2844() { var buf [2844]byte; use(buf[:]); C.callGoStackCheck() } func stack2848() { var buf [2848]byte; use(buf[:]); C.callGoStackCheck() } func stack2852() { var buf [2852]byte; use(buf[:]); C.callGoStackCheck() } func stack2856() { var buf [2856]byte; use(buf[:]); C.callGoStackCheck() } func stack2860() { var buf [2860]byte; use(buf[:]); C.callGoStackCheck() } func stack2864() { var buf [2864]byte; use(buf[:]); C.callGoStackCheck() } func stack2868() { var buf [2868]byte; use(buf[:]); C.callGoStackCheck() } func stack2872() { var buf [2872]byte; use(buf[:]); C.callGoStackCheck() } func stack2876() { var buf [2876]byte; use(buf[:]); C.callGoStackCheck() } func stack2880() { var buf [2880]byte; use(buf[:]); C.callGoStackCheck() } func stack2884() { var buf [2884]byte; use(buf[:]); C.callGoStackCheck() } func stack2888() { var buf [2888]byte; use(buf[:]); C.callGoStackCheck() } func stack2892() { var buf [2892]byte; use(buf[:]); C.callGoStackCheck() } func stack2896() { var buf [2896]byte; use(buf[:]); C.callGoStackCheck() } func stack2900() { var buf [2900]byte; use(buf[:]); C.callGoStackCheck() } func stack2904() { var buf [2904]byte; use(buf[:]); C.callGoStackCheck() } func stack2908() { var buf [2908]byte; use(buf[:]); C.callGoStackCheck() } func stack2912() { var buf [2912]byte; use(buf[:]); C.callGoStackCheck() } func stack2916() { var buf [2916]byte; use(buf[:]); C.callGoStackCheck() } func stack2920() { var buf [2920]byte; use(buf[:]); C.callGoStackCheck() } func stack2924() { var buf [2924]byte; use(buf[:]); C.callGoStackCheck() } func stack2928() { var buf [2928]byte; use(buf[:]); C.callGoStackCheck() } func stack2932() { var buf [2932]byte; use(buf[:]); C.callGoStackCheck() } func stack2936() { var buf [2936]byte; use(buf[:]); C.callGoStackCheck() } func stack2940() { var buf [2940]byte; use(buf[:]); C.callGoStackCheck() } func stack2944() { var buf [2944]byte; use(buf[:]); C.callGoStackCheck() } func stack2948() { var buf [2948]byte; use(buf[:]); C.callGoStackCheck() } func stack2952() { var buf [2952]byte; use(buf[:]); C.callGoStackCheck() } func stack2956() { var buf [2956]byte; use(buf[:]); C.callGoStackCheck() } func stack2960() { var buf [2960]byte; use(buf[:]); C.callGoStackCheck() } func stack2964() { var buf [2964]byte; use(buf[:]); C.callGoStackCheck() } func stack2968() { var buf [2968]byte; use(buf[:]); C.callGoStackCheck() } func stack2972() { var buf [2972]byte; use(buf[:]); C.callGoStackCheck() } func stack2976() { var buf [2976]byte; use(buf[:]); C.callGoStackCheck() } func stack2980() { var buf [2980]byte; use(buf[:]); C.callGoStackCheck() } func stack2984() { var buf [2984]byte; use(buf[:]); C.callGoStackCheck() } func stack2988() { var buf [2988]byte; use(buf[:]); C.callGoStackCheck() } func stack2992() { var buf [2992]byte; use(buf[:]); C.callGoStackCheck() } func stack2996() { var buf [2996]byte; use(buf[:]); C.callGoStackCheck() } func stack3000() { var buf [3000]byte; use(buf[:]); C.callGoStackCheck() } func stack3004() { var buf [3004]byte; use(buf[:]); C.callGoStackCheck() } func stack3008() { var buf [3008]byte; use(buf[:]); C.callGoStackCheck() } func stack3012() { var buf [3012]byte; use(buf[:]); C.callGoStackCheck() } func stack3016() { var buf [3016]byte; use(buf[:]); C.callGoStackCheck() } func stack3020() { var buf [3020]byte; use(buf[:]); C.callGoStackCheck() } func stack3024() { var buf [3024]byte; use(buf[:]); C.callGoStackCheck() } func stack3028() { var buf [3028]byte; use(buf[:]); C.callGoStackCheck() } func stack3032() { var buf [3032]byte; use(buf[:]); C.callGoStackCheck() } func stack3036() { var buf [3036]byte; use(buf[:]); C.callGoStackCheck() } func stack3040() { var buf [3040]byte; use(buf[:]); C.callGoStackCheck() } func stack3044() { var buf [3044]byte; use(buf[:]); C.callGoStackCheck() } func stack3048() { var buf [3048]byte; use(buf[:]); C.callGoStackCheck() } func stack3052() { var buf [3052]byte; use(buf[:]); C.callGoStackCheck() } func stack3056() { var buf [3056]byte; use(buf[:]); C.callGoStackCheck() } func stack3060() { var buf [3060]byte; use(buf[:]); C.callGoStackCheck() } func stack3064() { var buf [3064]byte; use(buf[:]); C.callGoStackCheck() } func stack3068() { var buf [3068]byte; use(buf[:]); C.callGoStackCheck() } func stack3072() { var buf [3072]byte; use(buf[:]); C.callGoStackCheck() } func stack3076() { var buf [3076]byte; use(buf[:]); C.callGoStackCheck() } func stack3080() { var buf [3080]byte; use(buf[:]); C.callGoStackCheck() } func stack3084() { var buf [3084]byte; use(buf[:]); C.callGoStackCheck() } func stack3088() { var buf [3088]byte; use(buf[:]); C.callGoStackCheck() } func stack3092() { var buf [3092]byte; use(buf[:]); C.callGoStackCheck() } func stack3096() { var buf [3096]byte; use(buf[:]); C.callGoStackCheck() } func stack3100() { var buf [3100]byte; use(buf[:]); C.callGoStackCheck() } func stack3104() { var buf [3104]byte; use(buf[:]); C.callGoStackCheck() } func stack3108() { var buf [3108]byte; use(buf[:]); C.callGoStackCheck() } func stack3112() { var buf [3112]byte; use(buf[:]); C.callGoStackCheck() } func stack3116() { var buf [3116]byte; use(buf[:]); C.callGoStackCheck() } func stack3120() { var buf [3120]byte; use(buf[:]); C.callGoStackCheck() } func stack3124() { var buf [3124]byte; use(buf[:]); C.callGoStackCheck() } func stack3128() { var buf [3128]byte; use(buf[:]); C.callGoStackCheck() } func stack3132() { var buf [3132]byte; use(buf[:]); C.callGoStackCheck() } func stack3136() { var buf [3136]byte; use(buf[:]); C.callGoStackCheck() } func stack3140() { var buf [3140]byte; use(buf[:]); C.callGoStackCheck() } func stack3144() { var buf [3144]byte; use(buf[:]); C.callGoStackCheck() } func stack3148() { var buf [3148]byte; use(buf[:]); C.callGoStackCheck() } func stack3152() { var buf [3152]byte; use(buf[:]); C.callGoStackCheck() } func stack3156() { var buf [3156]byte; use(buf[:]); C.callGoStackCheck() } func stack3160() { var buf [3160]byte; use(buf[:]); C.callGoStackCheck() } func stack3164() { var buf [3164]byte; use(buf[:]); C.callGoStackCheck() } func stack3168() { var buf [3168]byte; use(buf[:]); C.callGoStackCheck() } func stack3172() { var buf [3172]byte; use(buf[:]); C.callGoStackCheck() } func stack3176() { var buf [3176]byte; use(buf[:]); C.callGoStackCheck() } func stack3180() { var buf [3180]byte; use(buf[:]); C.callGoStackCheck() } func stack3184() { var buf [3184]byte; use(buf[:]); C.callGoStackCheck() } func stack3188() { var buf [3188]byte; use(buf[:]); C.callGoStackCheck() } func stack3192() { var buf [3192]byte; use(buf[:]); C.callGoStackCheck() } func stack3196() { var buf [3196]byte; use(buf[:]); C.callGoStackCheck() } func stack3200() { var buf [3200]byte; use(buf[:]); C.callGoStackCheck() } func stack3204() { var buf [3204]byte; use(buf[:]); C.callGoStackCheck() } func stack3208() { var buf [3208]byte; use(buf[:]); C.callGoStackCheck() } func stack3212() { var buf [3212]byte; use(buf[:]); C.callGoStackCheck() } func stack3216() { var buf [3216]byte; use(buf[:]); C.callGoStackCheck() } func stack3220() { var buf [3220]byte; use(buf[:]); C.callGoStackCheck() } func stack3224() { var buf [3224]byte; use(buf[:]); C.callGoStackCheck() } func stack3228() { var buf [3228]byte; use(buf[:]); C.callGoStackCheck() } func stack3232() { var buf [3232]byte; use(buf[:]); C.callGoStackCheck() } func stack3236() { var buf [3236]byte; use(buf[:]); C.callGoStackCheck() } func stack3240() { var buf [3240]byte; use(buf[:]); C.callGoStackCheck() } func stack3244() { var buf [3244]byte; use(buf[:]); C.callGoStackCheck() } func stack3248() { var buf [3248]byte; use(buf[:]); C.callGoStackCheck() } func stack3252() { var buf [3252]byte; use(buf[:]); C.callGoStackCheck() } func stack3256() { var buf [3256]byte; use(buf[:]); C.callGoStackCheck() } func stack3260() { var buf [3260]byte; use(buf[:]); C.callGoStackCheck() } func stack3264() { var buf [3264]byte; use(buf[:]); C.callGoStackCheck() } func stack3268() { var buf [3268]byte; use(buf[:]); C.callGoStackCheck() } func stack3272() { var buf [3272]byte; use(buf[:]); C.callGoStackCheck() } func stack3276() { var buf [3276]byte; use(buf[:]); C.callGoStackCheck() } func stack3280() { var buf [3280]byte; use(buf[:]); C.callGoStackCheck() } func stack3284() { var buf [3284]byte; use(buf[:]); C.callGoStackCheck() } func stack3288() { var buf [3288]byte; use(buf[:]); C.callGoStackCheck() } func stack3292() { var buf [3292]byte; use(buf[:]); C.callGoStackCheck() } func stack3296() { var buf [3296]byte; use(buf[:]); C.callGoStackCheck() } func stack3300() { var buf [3300]byte; use(buf[:]); C.callGoStackCheck() } func stack3304() { var buf [3304]byte; use(buf[:]); C.callGoStackCheck() } func stack3308() { var buf [3308]byte; use(buf[:]); C.callGoStackCheck() } func stack3312() { var buf [3312]byte; use(buf[:]); C.callGoStackCheck() } func stack3316() { var buf [3316]byte; use(buf[:]); C.callGoStackCheck() } func stack3320() { var buf [3320]byte; use(buf[:]); C.callGoStackCheck() } func stack3324() { var buf [3324]byte; use(buf[:]); C.callGoStackCheck() } func stack3328() { var buf [3328]byte; use(buf[:]); C.callGoStackCheck() } func stack3332() { var buf [3332]byte; use(buf[:]); C.callGoStackCheck() } func stack3336() { var buf [3336]byte; use(buf[:]); C.callGoStackCheck() } func stack3340() { var buf [3340]byte; use(buf[:]); C.callGoStackCheck() } func stack3344() { var buf [3344]byte; use(buf[:]); C.callGoStackCheck() } func stack3348() { var buf [3348]byte; use(buf[:]); C.callGoStackCheck() } func stack3352() { var buf [3352]byte; use(buf[:]); C.callGoStackCheck() } func stack3356() { var buf [3356]byte; use(buf[:]); C.callGoStackCheck() } func stack3360() { var buf [3360]byte; use(buf[:]); C.callGoStackCheck() } func stack3364() { var buf [3364]byte; use(buf[:]); C.callGoStackCheck() } func stack3368() { var buf [3368]byte; use(buf[:]); C.callGoStackCheck() } func stack3372() { var buf [3372]byte; use(buf[:]); C.callGoStackCheck() } func stack3376() { var buf [3376]byte; use(buf[:]); C.callGoStackCheck() } func stack3380() { var buf [3380]byte; use(buf[:]); C.callGoStackCheck() } func stack3384() { var buf [3384]byte; use(buf[:]); C.callGoStackCheck() } func stack3388() { var buf [3388]byte; use(buf[:]); C.callGoStackCheck() } func stack3392() { var buf [3392]byte; use(buf[:]); C.callGoStackCheck() } func stack3396() { var buf [3396]byte; use(buf[:]); C.callGoStackCheck() } func stack3400() { var buf [3400]byte; use(buf[:]); C.callGoStackCheck() } func stack3404() { var buf [3404]byte; use(buf[:]); C.callGoStackCheck() } func stack3408() { var buf [3408]byte; use(buf[:]); C.callGoStackCheck() } func stack3412() { var buf [3412]byte; use(buf[:]); C.callGoStackCheck() } func stack3416() { var buf [3416]byte; use(buf[:]); C.callGoStackCheck() } func stack3420() { var buf [3420]byte; use(buf[:]); C.callGoStackCheck() } func stack3424() { var buf [3424]byte; use(buf[:]); C.callGoStackCheck() } func stack3428() { var buf [3428]byte; use(buf[:]); C.callGoStackCheck() } func stack3432() { var buf [3432]byte; use(buf[:]); C.callGoStackCheck() } func stack3436() { var buf [3436]byte; use(buf[:]); C.callGoStackCheck() } func stack3440() { var buf [3440]byte; use(buf[:]); C.callGoStackCheck() } func stack3444() { var buf [3444]byte; use(buf[:]); C.callGoStackCheck() } func stack3448() { var buf [3448]byte; use(buf[:]); C.callGoStackCheck() } func stack3452() { var buf [3452]byte; use(buf[:]); C.callGoStackCheck() } func stack3456() { var buf [3456]byte; use(buf[:]); C.callGoStackCheck() } func stack3460() { var buf [3460]byte; use(buf[:]); C.callGoStackCheck() } func stack3464() { var buf [3464]byte; use(buf[:]); C.callGoStackCheck() } func stack3468() { var buf [3468]byte; use(buf[:]); C.callGoStackCheck() } func stack3472() { var buf [3472]byte; use(buf[:]); C.callGoStackCheck() } func stack3476() { var buf [3476]byte; use(buf[:]); C.callGoStackCheck() } func stack3480() { var buf [3480]byte; use(buf[:]); C.callGoStackCheck() } func stack3484() { var buf [3484]byte; use(buf[:]); C.callGoStackCheck() } func stack3488() { var buf [3488]byte; use(buf[:]); C.callGoStackCheck() } func stack3492() { var buf [3492]byte; use(buf[:]); C.callGoStackCheck() } func stack3496() { var buf [3496]byte; use(buf[:]); C.callGoStackCheck() } func stack3500() { var buf [3500]byte; use(buf[:]); C.callGoStackCheck() } func stack3504() { var buf [3504]byte; use(buf[:]); C.callGoStackCheck() } func stack3508() { var buf [3508]byte; use(buf[:]); C.callGoStackCheck() } func stack3512() { var buf [3512]byte; use(buf[:]); C.callGoStackCheck() } func stack3516() { var buf [3516]byte; use(buf[:]); C.callGoStackCheck() } func stack3520() { var buf [3520]byte; use(buf[:]); C.callGoStackCheck() } func stack3524() { var buf [3524]byte; use(buf[:]); C.callGoStackCheck() } func stack3528() { var buf [3528]byte; use(buf[:]); C.callGoStackCheck() } func stack3532() { var buf [3532]byte; use(buf[:]); C.callGoStackCheck() } func stack3536() { var buf [3536]byte; use(buf[:]); C.callGoStackCheck() } func stack3540() { var buf [3540]byte; use(buf[:]); C.callGoStackCheck() } func stack3544() { var buf [3544]byte; use(buf[:]); C.callGoStackCheck() } func stack3548() { var buf [3548]byte; use(buf[:]); C.callGoStackCheck() } func stack3552() { var buf [3552]byte; use(buf[:]); C.callGoStackCheck() } func stack3556() { var buf [3556]byte; use(buf[:]); C.callGoStackCheck() } func stack3560() { var buf [3560]byte; use(buf[:]); C.callGoStackCheck() } func stack3564() { var buf [3564]byte; use(buf[:]); C.callGoStackCheck() } func stack3568() { var buf [3568]byte; use(buf[:]); C.callGoStackCheck() } func stack3572() { var buf [3572]byte; use(buf[:]); C.callGoStackCheck() } func stack3576() { var buf [3576]byte; use(buf[:]); C.callGoStackCheck() } func stack3580() { var buf [3580]byte; use(buf[:]); C.callGoStackCheck() } func stack3584() { var buf [3584]byte; use(buf[:]); C.callGoStackCheck() } func stack3588() { var buf [3588]byte; use(buf[:]); C.callGoStackCheck() } func stack3592() { var buf [3592]byte; use(buf[:]); C.callGoStackCheck() } func stack3596() { var buf [3596]byte; use(buf[:]); C.callGoStackCheck() } func stack3600() { var buf [3600]byte; use(buf[:]); C.callGoStackCheck() } func stack3604() { var buf [3604]byte; use(buf[:]); C.callGoStackCheck() } func stack3608() { var buf [3608]byte; use(buf[:]); C.callGoStackCheck() } func stack3612() { var buf [3612]byte; use(buf[:]); C.callGoStackCheck() } func stack3616() { var buf [3616]byte; use(buf[:]); C.callGoStackCheck() } func stack3620() { var buf [3620]byte; use(buf[:]); C.callGoStackCheck() } func stack3624() { var buf [3624]byte; use(buf[:]); C.callGoStackCheck() } func stack3628() { var buf [3628]byte; use(buf[:]); C.callGoStackCheck() } func stack3632() { var buf [3632]byte; use(buf[:]); C.callGoStackCheck() } func stack3636() { var buf [3636]byte; use(buf[:]); C.callGoStackCheck() } func stack3640() { var buf [3640]byte; use(buf[:]); C.callGoStackCheck() } func stack3644() { var buf [3644]byte; use(buf[:]); C.callGoStackCheck() } func stack3648() { var buf [3648]byte; use(buf[:]); C.callGoStackCheck() } func stack3652() { var buf [3652]byte; use(buf[:]); C.callGoStackCheck() } func stack3656() { var buf [3656]byte; use(buf[:]); C.callGoStackCheck() } func stack3660() { var buf [3660]byte; use(buf[:]); C.callGoStackCheck() } func stack3664() { var buf [3664]byte; use(buf[:]); C.callGoStackCheck() } func stack3668() { var buf [3668]byte; use(buf[:]); C.callGoStackCheck() } func stack3672() { var buf [3672]byte; use(buf[:]); C.callGoStackCheck() } func stack3676() { var buf [3676]byte; use(buf[:]); C.callGoStackCheck() } func stack3680() { var buf [3680]byte; use(buf[:]); C.callGoStackCheck() } func stack3684() { var buf [3684]byte; use(buf[:]); C.callGoStackCheck() } func stack3688() { var buf [3688]byte; use(buf[:]); C.callGoStackCheck() } func stack3692() { var buf [3692]byte; use(buf[:]); C.callGoStackCheck() } func stack3696() { var buf [3696]byte; use(buf[:]); C.callGoStackCheck() } func stack3700() { var buf [3700]byte; use(buf[:]); C.callGoStackCheck() } func stack3704() { var buf [3704]byte; use(buf[:]); C.callGoStackCheck() } func stack3708() { var buf [3708]byte; use(buf[:]); C.callGoStackCheck() } func stack3712() { var buf [3712]byte; use(buf[:]); C.callGoStackCheck() } func stack3716() { var buf [3716]byte; use(buf[:]); C.callGoStackCheck() } func stack3720() { var buf [3720]byte; use(buf[:]); C.callGoStackCheck() } func stack3724() { var buf [3724]byte; use(buf[:]); C.callGoStackCheck() } func stack3728() { var buf [3728]byte; use(buf[:]); C.callGoStackCheck() } func stack3732() { var buf [3732]byte; use(buf[:]); C.callGoStackCheck() } func stack3736() { var buf [3736]byte; use(buf[:]); C.callGoStackCheck() } func stack3740() { var buf [3740]byte; use(buf[:]); C.callGoStackCheck() } func stack3744() { var buf [3744]byte; use(buf[:]); C.callGoStackCheck() } func stack3748() { var buf [3748]byte; use(buf[:]); C.callGoStackCheck() } func stack3752() { var buf [3752]byte; use(buf[:]); C.callGoStackCheck() } func stack3756() { var buf [3756]byte; use(buf[:]); C.callGoStackCheck() } func stack3760() { var buf [3760]byte; use(buf[:]); C.callGoStackCheck() } func stack3764() { var buf [3764]byte; use(buf[:]); C.callGoStackCheck() } func stack3768() { var buf [3768]byte; use(buf[:]); C.callGoStackCheck() } func stack3772() { var buf [3772]byte; use(buf[:]); C.callGoStackCheck() } func stack3776() { var buf [3776]byte; use(buf[:]); C.callGoStackCheck() } func stack3780() { var buf [3780]byte; use(buf[:]); C.callGoStackCheck() } func stack3784() { var buf [3784]byte; use(buf[:]); C.callGoStackCheck() } func stack3788() { var buf [3788]byte; use(buf[:]); C.callGoStackCheck() } func stack3792() { var buf [3792]byte; use(buf[:]); C.callGoStackCheck() } func stack3796() { var buf [3796]byte; use(buf[:]); C.callGoStackCheck() } func stack3800() { var buf [3800]byte; use(buf[:]); C.callGoStackCheck() } func stack3804() { var buf [3804]byte; use(buf[:]); C.callGoStackCheck() } func stack3808() { var buf [3808]byte; use(buf[:]); C.callGoStackCheck() } func stack3812() { var buf [3812]byte; use(buf[:]); C.callGoStackCheck() } func stack3816() { var buf [3816]byte; use(buf[:]); C.callGoStackCheck() } func stack3820() { var buf [3820]byte; use(buf[:]); C.callGoStackCheck() } func stack3824() { var buf [3824]byte; use(buf[:]); C.callGoStackCheck() } func stack3828() { var buf [3828]byte; use(buf[:]); C.callGoStackCheck() } func stack3832() { var buf [3832]byte; use(buf[:]); C.callGoStackCheck() } func stack3836() { var buf [3836]byte; use(buf[:]); C.callGoStackCheck() } func stack3840() { var buf [3840]byte; use(buf[:]); C.callGoStackCheck() } func stack3844() { var buf [3844]byte; use(buf[:]); C.callGoStackCheck() } func stack3848() { var buf [3848]byte; use(buf[:]); C.callGoStackCheck() } func stack3852() { var buf [3852]byte; use(buf[:]); C.callGoStackCheck() } func stack3856() { var buf [3856]byte; use(buf[:]); C.callGoStackCheck() } func stack3860() { var buf [3860]byte; use(buf[:]); C.callGoStackCheck() } func stack3864() { var buf [3864]byte; use(buf[:]); C.callGoStackCheck() } func stack3868() { var buf [3868]byte; use(buf[:]); C.callGoStackCheck() } func stack3872() { var buf [3872]byte; use(buf[:]); C.callGoStackCheck() } func stack3876() { var buf [3876]byte; use(buf[:]); C.callGoStackCheck() } func stack3880() { var buf [3880]byte; use(buf[:]); C.callGoStackCheck() } func stack3884() { var buf [3884]byte; use(buf[:]); C.callGoStackCheck() } func stack3888() { var buf [3888]byte; use(buf[:]); C.callGoStackCheck() } func stack3892() { var buf [3892]byte; use(buf[:]); C.callGoStackCheck() } func stack3896() { var buf [3896]byte; use(buf[:]); C.callGoStackCheck() } func stack3900() { var buf [3900]byte; use(buf[:]); C.callGoStackCheck() } func stack3904() { var buf [3904]byte; use(buf[:]); C.callGoStackCheck() } func stack3908() { var buf [3908]byte; use(buf[:]); C.callGoStackCheck() } func stack3912() { var buf [3912]byte; use(buf[:]); C.callGoStackCheck() } func stack3916() { var buf [3916]byte; use(buf[:]); C.callGoStackCheck() } func stack3920() { var buf [3920]byte; use(buf[:]); C.callGoStackCheck() } func stack3924() { var buf [3924]byte; use(buf[:]); C.callGoStackCheck() } func stack3928() { var buf [3928]byte; use(buf[:]); C.callGoStackCheck() } func stack3932() { var buf [3932]byte; use(buf[:]); C.callGoStackCheck() } func stack3936() { var buf [3936]byte; use(buf[:]); C.callGoStackCheck() } func stack3940() { var buf [3940]byte; use(buf[:]); C.callGoStackCheck() } func stack3944() { var buf [3944]byte; use(buf[:]); C.callGoStackCheck() } func stack3948() { var buf [3948]byte; use(buf[:]); C.callGoStackCheck() } func stack3952() { var buf [3952]byte; use(buf[:]); C.callGoStackCheck() } func stack3956() { var buf [3956]byte; use(buf[:]); C.callGoStackCheck() } func stack3960() { var buf [3960]byte; use(buf[:]); C.callGoStackCheck() } func stack3964() { var buf [3964]byte; use(buf[:]); C.callGoStackCheck() } func stack3968() { var buf [3968]byte; use(buf[:]); C.callGoStackCheck() } func stack3972() { var buf [3972]byte; use(buf[:]); C.callGoStackCheck() } func stack3976() { var buf [3976]byte; use(buf[:]); C.callGoStackCheck() } func stack3980() { var buf [3980]byte; use(buf[:]); C.callGoStackCheck() } func stack3984() { var buf [3984]byte; use(buf[:]); C.callGoStackCheck() } func stack3988() { var buf [3988]byte; use(buf[:]); C.callGoStackCheck() } func stack3992() { var buf [3992]byte; use(buf[:]); C.callGoStackCheck() } func stack3996() { var buf [3996]byte; use(buf[:]); C.callGoStackCheck() } func stack4000() { var buf [4000]byte; use(buf[:]); C.callGoStackCheck() } func stack4004() { var buf [4004]byte; use(buf[:]); C.callGoStackCheck() } func stack4008() { var buf [4008]byte; use(buf[:]); C.callGoStackCheck() } func stack4012() { var buf [4012]byte; use(buf[:]); C.callGoStackCheck() } func stack4016() { var buf [4016]byte; use(buf[:]); C.callGoStackCheck() } func stack4020() { var buf [4020]byte; use(buf[:]); C.callGoStackCheck() } func stack4024() { var buf [4024]byte; use(buf[:]); C.callGoStackCheck() } func stack4028() { var buf [4028]byte; use(buf[:]); C.callGoStackCheck() } func stack4032() { var buf [4032]byte; use(buf[:]); C.callGoStackCheck() } func stack4036() { var buf [4036]byte; use(buf[:]); C.callGoStackCheck() } func stack4040() { var buf [4040]byte; use(buf[:]); C.callGoStackCheck() } func stack4044() { var buf [4044]byte; use(buf[:]); C.callGoStackCheck() } func stack4048() { var buf [4048]byte; use(buf[:]); C.callGoStackCheck() } func stack4052() { var buf [4052]byte; use(buf[:]); C.callGoStackCheck() } func stack4056() { var buf [4056]byte; use(buf[:]); C.callGoStackCheck() } func stack4060() { var buf [4060]byte; use(buf[:]); C.callGoStackCheck() } func stack4064() { var buf [4064]byte; use(buf[:]); C.callGoStackCheck() } func stack4068() { var buf [4068]byte; use(buf[:]); C.callGoStackCheck() } func stack4072() { var buf [4072]byte; use(buf[:]); C.callGoStackCheck() } func stack4076() { var buf [4076]byte; use(buf[:]); C.callGoStackCheck() } func stack4080() { var buf [4080]byte; use(buf[:]); C.callGoStackCheck() } func stack4084() { var buf [4084]byte; use(buf[:]); C.callGoStackCheck() } func stack4088() { var buf [4088]byte; use(buf[:]); C.callGoStackCheck() } func stack4092() { var buf [4092]byte; use(buf[:]); C.callGoStackCheck() } func stack4096() { var buf [4096]byte; use(buf[:]); C.callGoStackCheck() } func stack4100() { var buf [4100]byte; use(buf[:]); C.callGoStackCheck() } func stack4104() { var buf [4104]byte; use(buf[:]); C.callGoStackCheck() } func stack4108() { var buf [4108]byte; use(buf[:]); C.callGoStackCheck() } func stack4112() { var buf [4112]byte; use(buf[:]); C.callGoStackCheck() } func stack4116() { var buf [4116]byte; use(buf[:]); C.callGoStackCheck() } func stack4120() { var buf [4120]byte; use(buf[:]); C.callGoStackCheck() } func stack4124() { var buf [4124]byte; use(buf[:]); C.callGoStackCheck() } func stack4128() { var buf [4128]byte; use(buf[:]); C.callGoStackCheck() } func stack4132() { var buf [4132]byte; use(buf[:]); C.callGoStackCheck() } func stack4136() { var buf [4136]byte; use(buf[:]); C.callGoStackCheck() } func stack4140() { var buf [4140]byte; use(buf[:]); C.callGoStackCheck() } func stack4144() { var buf [4144]byte; use(buf[:]); C.callGoStackCheck() } func stack4148() { var buf [4148]byte; use(buf[:]); C.callGoStackCheck() } func stack4152() { var buf [4152]byte; use(buf[:]); C.callGoStackCheck() } func stack4156() { var buf [4156]byte; use(buf[:]); C.callGoStackCheck() } func stack4160() { var buf [4160]byte; use(buf[:]); C.callGoStackCheck() } func stack4164() { var buf [4164]byte; use(buf[:]); C.callGoStackCheck() } func stack4168() { var buf [4168]byte; use(buf[:]); C.callGoStackCheck() } func stack4172() { var buf [4172]byte; use(buf[:]); C.callGoStackCheck() } func stack4176() { var buf [4176]byte; use(buf[:]); C.callGoStackCheck() } func stack4180() { var buf [4180]byte; use(buf[:]); C.callGoStackCheck() } func stack4184() { var buf [4184]byte; use(buf[:]); C.callGoStackCheck() } func stack4188() { var buf [4188]byte; use(buf[:]); C.callGoStackCheck() } func stack4192() { var buf [4192]byte; use(buf[:]); C.callGoStackCheck() } func stack4196() { var buf [4196]byte; use(buf[:]); C.callGoStackCheck() } func stack4200() { var buf [4200]byte; use(buf[:]); C.callGoStackCheck() } func stack4204() { var buf [4204]byte; use(buf[:]); C.callGoStackCheck() } func stack4208() { var buf [4208]byte; use(buf[:]); C.callGoStackCheck() } func stack4212() { var buf [4212]byte; use(buf[:]); C.callGoStackCheck() } func stack4216() { var buf [4216]byte; use(buf[:]); C.callGoStackCheck() } func stack4220() { var buf [4220]byte; use(buf[:]); C.callGoStackCheck() } func stack4224() { var buf [4224]byte; use(buf[:]); C.callGoStackCheck() } func stack4228() { var buf [4228]byte; use(buf[:]); C.callGoStackCheck() } func stack4232() { var buf [4232]byte; use(buf[:]); C.callGoStackCheck() } func stack4236() { var buf [4236]byte; use(buf[:]); C.callGoStackCheck() } func stack4240() { var buf [4240]byte; use(buf[:]); C.callGoStackCheck() } func stack4244() { var buf [4244]byte; use(buf[:]); C.callGoStackCheck() } func stack4248() { var buf [4248]byte; use(buf[:]); C.callGoStackCheck() } func stack4252() { var buf [4252]byte; use(buf[:]); C.callGoStackCheck() } func stack4256() { var buf [4256]byte; use(buf[:]); C.callGoStackCheck() } func stack4260() { var buf [4260]byte; use(buf[:]); C.callGoStackCheck() } func stack4264() { var buf [4264]byte; use(buf[:]); C.callGoStackCheck() } func stack4268() { var buf [4268]byte; use(buf[:]); C.callGoStackCheck() } func stack4272() { var buf [4272]byte; use(buf[:]); C.callGoStackCheck() } func stack4276() { var buf [4276]byte; use(buf[:]); C.callGoStackCheck() } func stack4280() { var buf [4280]byte; use(buf[:]); C.callGoStackCheck() } func stack4284() { var buf [4284]byte; use(buf[:]); C.callGoStackCheck() } func stack4288() { var buf [4288]byte; use(buf[:]); C.callGoStackCheck() } func stack4292() { var buf [4292]byte; use(buf[:]); C.callGoStackCheck() } func stack4296() { var buf [4296]byte; use(buf[:]); C.callGoStackCheck() } func stack4300() { var buf [4300]byte; use(buf[:]); C.callGoStackCheck() } func stack4304() { var buf [4304]byte; use(buf[:]); C.callGoStackCheck() } func stack4308() { var buf [4308]byte; use(buf[:]); C.callGoStackCheck() } func stack4312() { var buf [4312]byte; use(buf[:]); C.callGoStackCheck() } func stack4316() { var buf [4316]byte; use(buf[:]); C.callGoStackCheck() } func stack4320() { var buf [4320]byte; use(buf[:]); C.callGoStackCheck() } func stack4324() { var buf [4324]byte; use(buf[:]); C.callGoStackCheck() } func stack4328() { var buf [4328]byte; use(buf[:]); C.callGoStackCheck() } func stack4332() { var buf [4332]byte; use(buf[:]); C.callGoStackCheck() } func stack4336() { var buf [4336]byte; use(buf[:]); C.callGoStackCheck() } func stack4340() { var buf [4340]byte; use(buf[:]); C.callGoStackCheck() } func stack4344() { var buf [4344]byte; use(buf[:]); C.callGoStackCheck() } func stack4348() { var buf [4348]byte; use(buf[:]); C.callGoStackCheck() } func stack4352() { var buf [4352]byte; use(buf[:]); C.callGoStackCheck() } func stack4356() { var buf [4356]byte; use(buf[:]); C.callGoStackCheck() } func stack4360() { var buf [4360]byte; use(buf[:]); C.callGoStackCheck() } func stack4364() { var buf [4364]byte; use(buf[:]); C.callGoStackCheck() } func stack4368() { var buf [4368]byte; use(buf[:]); C.callGoStackCheck() } func stack4372() { var buf [4372]byte; use(buf[:]); C.callGoStackCheck() } func stack4376() { var buf [4376]byte; use(buf[:]); C.callGoStackCheck() } func stack4380() { var buf [4380]byte; use(buf[:]); C.callGoStackCheck() } func stack4384() { var buf [4384]byte; use(buf[:]); C.callGoStackCheck() } func stack4388() { var buf [4388]byte; use(buf[:]); C.callGoStackCheck() } func stack4392() { var buf [4392]byte; use(buf[:]); C.callGoStackCheck() } func stack4396() { var buf [4396]byte; use(buf[:]); C.callGoStackCheck() } func stack4400() { var buf [4400]byte; use(buf[:]); C.callGoStackCheck() } func stack4404() { var buf [4404]byte; use(buf[:]); C.callGoStackCheck() } func stack4408() { var buf [4408]byte; use(buf[:]); C.callGoStackCheck() } func stack4412() { var buf [4412]byte; use(buf[:]); C.callGoStackCheck() } func stack4416() { var buf [4416]byte; use(buf[:]); C.callGoStackCheck() } func stack4420() { var buf [4420]byte; use(buf[:]); C.callGoStackCheck() } func stack4424() { var buf [4424]byte; use(buf[:]); C.callGoStackCheck() } func stack4428() { var buf [4428]byte; use(buf[:]); C.callGoStackCheck() } func stack4432() { var buf [4432]byte; use(buf[:]); C.callGoStackCheck() } func stack4436() { var buf [4436]byte; use(buf[:]); C.callGoStackCheck() } func stack4440() { var buf [4440]byte; use(buf[:]); C.callGoStackCheck() } func stack4444() { var buf [4444]byte; use(buf[:]); C.callGoStackCheck() } func stack4448() { var buf [4448]byte; use(buf[:]); C.callGoStackCheck() } func stack4452() { var buf [4452]byte; use(buf[:]); C.callGoStackCheck() } func stack4456() { var buf [4456]byte; use(buf[:]); C.callGoStackCheck() } func stack4460() { var buf [4460]byte; use(buf[:]); C.callGoStackCheck() } func stack4464() { var buf [4464]byte; use(buf[:]); C.callGoStackCheck() } func stack4468() { var buf [4468]byte; use(buf[:]); C.callGoStackCheck() } func stack4472() { var buf [4472]byte; use(buf[:]); C.callGoStackCheck() } func stack4476() { var buf [4476]byte; use(buf[:]); C.callGoStackCheck() } func stack4480() { var buf [4480]byte; use(buf[:]); C.callGoStackCheck() } func stack4484() { var buf [4484]byte; use(buf[:]); C.callGoStackCheck() } func stack4488() { var buf [4488]byte; use(buf[:]); C.callGoStackCheck() } func stack4492() { var buf [4492]byte; use(buf[:]); C.callGoStackCheck() } func stack4496() { var buf [4496]byte; use(buf[:]); C.callGoStackCheck() } func stack4500() { var buf [4500]byte; use(buf[:]); C.callGoStackCheck() } func stack4504() { var buf [4504]byte; use(buf[:]); C.callGoStackCheck() } func stack4508() { var buf [4508]byte; use(buf[:]); C.callGoStackCheck() } func stack4512() { var buf [4512]byte; use(buf[:]); C.callGoStackCheck() } func stack4516() { var buf [4516]byte; use(buf[:]); C.callGoStackCheck() } func stack4520() { var buf [4520]byte; use(buf[:]); C.callGoStackCheck() } func stack4524() { var buf [4524]byte; use(buf[:]); C.callGoStackCheck() } func stack4528() { var buf [4528]byte; use(buf[:]); C.callGoStackCheck() } func stack4532() { var buf [4532]byte; use(buf[:]); C.callGoStackCheck() } func stack4536() { var buf [4536]byte; use(buf[:]); C.callGoStackCheck() } func stack4540() { var buf [4540]byte; use(buf[:]); C.callGoStackCheck() } func stack4544() { var buf [4544]byte; use(buf[:]); C.callGoStackCheck() } func stack4548() { var buf [4548]byte; use(buf[:]); C.callGoStackCheck() } func stack4552() { var buf [4552]byte; use(buf[:]); C.callGoStackCheck() } func stack4556() { var buf [4556]byte; use(buf[:]); C.callGoStackCheck() } func stack4560() { var buf [4560]byte; use(buf[:]); C.callGoStackCheck() } func stack4564() { var buf [4564]byte; use(buf[:]); C.callGoStackCheck() } func stack4568() { var buf [4568]byte; use(buf[:]); C.callGoStackCheck() } func stack4572() { var buf [4572]byte; use(buf[:]); C.callGoStackCheck() } func stack4576() { var buf [4576]byte; use(buf[:]); C.callGoStackCheck() } func stack4580() { var buf [4580]byte; use(buf[:]); C.callGoStackCheck() } func stack4584() { var buf [4584]byte; use(buf[:]); C.callGoStackCheck() } func stack4588() { var buf [4588]byte; use(buf[:]); C.callGoStackCheck() } func stack4592() { var buf [4592]byte; use(buf[:]); C.callGoStackCheck() } func stack4596() { var buf [4596]byte; use(buf[:]); C.callGoStackCheck() } func stack4600() { var buf [4600]byte; use(buf[:]); C.callGoStackCheck() } func stack4604() { var buf [4604]byte; use(buf[:]); C.callGoStackCheck() } func stack4608() { var buf [4608]byte; use(buf[:]); C.callGoStackCheck() } func stack4612() { var buf [4612]byte; use(buf[:]); C.callGoStackCheck() } func stack4616() { var buf [4616]byte; use(buf[:]); C.callGoStackCheck() } func stack4620() { var buf [4620]byte; use(buf[:]); C.callGoStackCheck() } func stack4624() { var buf [4624]byte; use(buf[:]); C.callGoStackCheck() } func stack4628() { var buf [4628]byte; use(buf[:]); C.callGoStackCheck() } func stack4632() { var buf [4632]byte; use(buf[:]); C.callGoStackCheck() } func stack4636() { var buf [4636]byte; use(buf[:]); C.callGoStackCheck() } func stack4640() { var buf [4640]byte; use(buf[:]); C.callGoStackCheck() } func stack4644() { var buf [4644]byte; use(buf[:]); C.callGoStackCheck() } func stack4648() { var buf [4648]byte; use(buf[:]); C.callGoStackCheck() } func stack4652() { var buf [4652]byte; use(buf[:]); C.callGoStackCheck() } func stack4656() { var buf [4656]byte; use(buf[:]); C.callGoStackCheck() } func stack4660() { var buf [4660]byte; use(buf[:]); C.callGoStackCheck() } func stack4664() { var buf [4664]byte; use(buf[:]); C.callGoStackCheck() } func stack4668() { var buf [4668]byte; use(buf[:]); C.callGoStackCheck() } func stack4672() { var buf [4672]byte; use(buf[:]); C.callGoStackCheck() } func stack4676() { var buf [4676]byte; use(buf[:]); C.callGoStackCheck() } func stack4680() { var buf [4680]byte; use(buf[:]); C.callGoStackCheck() } func stack4684() { var buf [4684]byte; use(buf[:]); C.callGoStackCheck() } func stack4688() { var buf [4688]byte; use(buf[:]); C.callGoStackCheck() } func stack4692() { var buf [4692]byte; use(buf[:]); C.callGoStackCheck() } func stack4696() { var buf [4696]byte; use(buf[:]); C.callGoStackCheck() } func stack4700() { var buf [4700]byte; use(buf[:]); C.callGoStackCheck() } func stack4704() { var buf [4704]byte; use(buf[:]); C.callGoStackCheck() } func stack4708() { var buf [4708]byte; use(buf[:]); C.callGoStackCheck() } func stack4712() { var buf [4712]byte; use(buf[:]); C.callGoStackCheck() } func stack4716() { var buf [4716]byte; use(buf[:]); C.callGoStackCheck() } func stack4720() { var buf [4720]byte; use(buf[:]); C.callGoStackCheck() } func stack4724() { var buf [4724]byte; use(buf[:]); C.callGoStackCheck() } func stack4728() { var buf [4728]byte; use(buf[:]); C.callGoStackCheck() } func stack4732() { var buf [4732]byte; use(buf[:]); C.callGoStackCheck() } func stack4736() { var buf [4736]byte; use(buf[:]); C.callGoStackCheck() } func stack4740() { var buf [4740]byte; use(buf[:]); C.callGoStackCheck() } func stack4744() { var buf [4744]byte; use(buf[:]); C.callGoStackCheck() } func stack4748() { var buf [4748]byte; use(buf[:]); C.callGoStackCheck() } func stack4752() { var buf [4752]byte; use(buf[:]); C.callGoStackCheck() } func stack4756() { var buf [4756]byte; use(buf[:]); C.callGoStackCheck() } func stack4760() { var buf [4760]byte; use(buf[:]); C.callGoStackCheck() } func stack4764() { var buf [4764]byte; use(buf[:]); C.callGoStackCheck() } func stack4768() { var buf [4768]byte; use(buf[:]); C.callGoStackCheck() } func stack4772() { var buf [4772]byte; use(buf[:]); C.callGoStackCheck() } func stack4776() { var buf [4776]byte; use(buf[:]); C.callGoStackCheck() } func stack4780() { var buf [4780]byte; use(buf[:]); C.callGoStackCheck() } func stack4784() { var buf [4784]byte; use(buf[:]); C.callGoStackCheck() } func stack4788() { var buf [4788]byte; use(buf[:]); C.callGoStackCheck() } func stack4792() { var buf [4792]byte; use(buf[:]); C.callGoStackCheck() } func stack4796() { var buf [4796]byte; use(buf[:]); C.callGoStackCheck() } func stack4800() { var buf [4800]byte; use(buf[:]); C.callGoStackCheck() } func stack4804() { var buf [4804]byte; use(buf[:]); C.callGoStackCheck() } func stack4808() { var buf [4808]byte; use(buf[:]); C.callGoStackCheck() } func stack4812() { var buf [4812]byte; use(buf[:]); C.callGoStackCheck() } func stack4816() { var buf [4816]byte; use(buf[:]); C.callGoStackCheck() } func stack4820() { var buf [4820]byte; use(buf[:]); C.callGoStackCheck() } func stack4824() { var buf [4824]byte; use(buf[:]); C.callGoStackCheck() } func stack4828() { var buf [4828]byte; use(buf[:]); C.callGoStackCheck() } func stack4832() { var buf [4832]byte; use(buf[:]); C.callGoStackCheck() } func stack4836() { var buf [4836]byte; use(buf[:]); C.callGoStackCheck() } func stack4840() { var buf [4840]byte; use(buf[:]); C.callGoStackCheck() } func stack4844() { var buf [4844]byte; use(buf[:]); C.callGoStackCheck() } func stack4848() { var buf [4848]byte; use(buf[:]); C.callGoStackCheck() } func stack4852() { var buf [4852]byte; use(buf[:]); C.callGoStackCheck() } func stack4856() { var buf [4856]byte; use(buf[:]); C.callGoStackCheck() } func stack4860() { var buf [4860]byte; use(buf[:]); C.callGoStackCheck() } func stack4864() { var buf [4864]byte; use(buf[:]); C.callGoStackCheck() } func stack4868() { var buf [4868]byte; use(buf[:]); C.callGoStackCheck() } func stack4872() { var buf [4872]byte; use(buf[:]); C.callGoStackCheck() } func stack4876() { var buf [4876]byte; use(buf[:]); C.callGoStackCheck() } func stack4880() { var buf [4880]byte; use(buf[:]); C.callGoStackCheck() } func stack4884() { var buf [4884]byte; use(buf[:]); C.callGoStackCheck() } func stack4888() { var buf [4888]byte; use(buf[:]); C.callGoStackCheck() } func stack4892() { var buf [4892]byte; use(buf[:]); C.callGoStackCheck() } func stack4896() { var buf [4896]byte; use(buf[:]); C.callGoStackCheck() } func stack4900() { var buf [4900]byte; use(buf[:]); C.callGoStackCheck() } func stack4904() { var buf [4904]byte; use(buf[:]); C.callGoStackCheck() } func stack4908() { var buf [4908]byte; use(buf[:]); C.callGoStackCheck() } func stack4912() { var buf [4912]byte; use(buf[:]); C.callGoStackCheck() } func stack4916() { var buf [4916]byte; use(buf[:]); C.callGoStackCheck() } func stack4920() { var buf [4920]byte; use(buf[:]); C.callGoStackCheck() } func stack4924() { var buf [4924]byte; use(buf[:]); C.callGoStackCheck() } func stack4928() { var buf [4928]byte; use(buf[:]); C.callGoStackCheck() } func stack4932() { var buf [4932]byte; use(buf[:]); C.callGoStackCheck() } func stack4936() { var buf [4936]byte; use(buf[:]); C.callGoStackCheck() } func stack4940() { var buf [4940]byte; use(buf[:]); C.callGoStackCheck() } func stack4944() { var buf [4944]byte; use(buf[:]); C.callGoStackCheck() } func stack4948() { var buf [4948]byte; use(buf[:]); C.callGoStackCheck() } func stack4952() { var buf [4952]byte; use(buf[:]); C.callGoStackCheck() } func stack4956() { var buf [4956]byte; use(buf[:]); C.callGoStackCheck() } func stack4960() { var buf [4960]byte; use(buf[:]); C.callGoStackCheck() } func stack4964() { var buf [4964]byte; use(buf[:]); C.callGoStackCheck() } func stack4968() { var buf [4968]byte; use(buf[:]); C.callGoStackCheck() } func stack4972() { var buf [4972]byte; use(buf[:]); C.callGoStackCheck() } func stack4976() { var buf [4976]byte; use(buf[:]); C.callGoStackCheck() } func stack4980() { var buf [4980]byte; use(buf[:]); C.callGoStackCheck() } func stack4984() { var buf [4984]byte; use(buf[:]); C.callGoStackCheck() } func stack4988() { var buf [4988]byte; use(buf[:]); C.callGoStackCheck() } func stack4992() { var buf [4992]byte; use(buf[:]); C.callGoStackCheck() } func stack4996() { var buf [4996]byte; use(buf[:]); C.callGoStackCheck() } func stack5000() { var buf [5000]byte; use(buf[:]); C.callGoStackCheck() } go/misc/cgo/test/callback_c.c0100644000000000000000000000170612412656737016367 0ustar00rootroot00000000000000// Copyright 2011 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. #include #include #include "_cgo_export.h" void callback(void *f) { // use some stack space volatile char data[64*1024]; data[0] = 0; goCallback(f); data[sizeof(data)-1] = 0; } void callGoFoo(void) { extern void goFoo(void); goFoo(); } void IntoC(void) { BackIntoGo(); } #ifdef WIN32 #include long long mysleep(int seconds) { long long st = GetTickCount(); sleep(seconds); return st; } #else #include long long mysleep(int seconds) { long long st; struct timeval tv; gettimeofday(&tv, NULL); st = tv.tv_sec * 1000 + tv.tv_usec / 1000; sleep(seconds); return st; } #endif long long twoSleep(int n) { BackgroundSleep(n); return mysleep(n); } void callGoStackCheck(void) { extern void goStackCheck(void); goStackCheck(); } go/misc/cgo/test/callback_c_gc.c0100644000000000000000000000075512412656737017043 0ustar00rootroot00000000000000// Copyright 2013 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 gc #include "_cgo_export.h" /* Test calling panic from C. This is what SWIG does. */ extern void crosscall2(void (*fn)(void *, int), void *, int); extern void _cgo_panic(void *, int); void callPanic(void) { struct { const char *p; } a; a.p = "panic from C"; crosscall2(_cgo_panic, &a, sizeof a); *(int*)1 = 1; } go/misc/cgo/test/callback_c_gccgo.c0100644000000000000000000000054512412656737017531 0ustar00rootroot00000000000000// Copyright 2013 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 "_cgo_export.h" /* Test calling panic from C. This is what SWIG does. */ extern void _cgo_panic(const char *); void callPanic(void) { _cgo_panic("panic from C"); } go/misc/cgo/test/cflags.go0100644000000000000000000000145312412656734015747 0ustar00rootroot00000000000000// Copyright 2013 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. // Test that the #cgo CFLAGS directive works, // with and without platform filters. // See http://code.google.com/p/go/issues/detail?id=5224 for details. package cgotest /* #cgo CFLAGS: -DCOMMON_VALUE=123 #cgo windows CFLAGS: -DIS_WINDOWS=1 #cgo !windows CFLAGS: -DIS_WINDOWS=0 int common = COMMON_VALUE; int is_windows = IS_WINDOWS; */ import "C" import ( "runtime" "testing" ) func testCflags(t *testing.T) { is_windows := C.is_windows == 1 if is_windows != (runtime.GOOS == "windows") { t.Errorf("is_windows: %v, runtime.GOOS: %s", is_windows, runtime.GOOS) } if C.common != 123 { t.Errorf("common: %v (expected 123)", C.common) } } go/misc/cgo/test/cgo_linux_test.go0100644000000000000000000000044212412656737017536 0ustar00rootroot00000000000000// 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 cgotest import "testing" func TestSetgid(t *testing.T) { testSetgid(t) } func Test6997(t *testing.T) { test6997(t) } go/misc/cgo/test/cgo_test.go0100644000000000000000000000607512412656737016327 0ustar00rootroot00000000000000// Copyright 2011 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 cgotest import "testing" // The actual test functions are in non-_test.go files // so that they can use cgo (import "C"). // These wrappers are here for gotest to find. func TestAlign(t *testing.T) { testAlign(t) } func TestConst(t *testing.T) { testConst(t) } func TestEnum(t *testing.T) { testEnum(t) } func TestAtol(t *testing.T) { testAtol(t) } func TestErrno(t *testing.T) { testErrno(t) } func TestMultipleAssign(t *testing.T) { testMultipleAssign(t) } func TestUnsignedInt(t *testing.T) { testUnsignedInt(t) } func TestCallback(t *testing.T) { testCallback(t) } func TestCallbackGC(t *testing.T) { testCallbackGC(t) } func TestCallbackPanic(t *testing.T) { testCallbackPanic(t) } func TestCallbackPanicLoop(t *testing.T) { testCallbackPanicLoop(t) } func TestCallbackPanicLocked(t *testing.T) { testCallbackPanicLocked(t) } func TestPanicFromC(t *testing.T) { testPanicFromC(t) } func TestZeroArgCallback(t *testing.T) { testZeroArgCallback(t) } func TestBlocking(t *testing.T) { testBlocking(t) } func Test1328(t *testing.T) { test1328(t) } func TestParallelSleep(t *testing.T) { testParallelSleep(t) } func TestSetEnv(t *testing.T) { testSetEnv(t) } func TestHelpers(t *testing.T) { testHelpers(t) } func TestLibgcc(t *testing.T) { testLibgcc(t) } func Test1635(t *testing.T) { test1635(t) } func TestPrintf(t *testing.T) { testPrintf(t) } func Test4029(t *testing.T) { test4029(t) } func TestBoolAlign(t *testing.T) { testBoolAlign(t) } func Test3729(t *testing.T) { test3729(t) } func Test3775(t *testing.T) { test3775(t) } func TestCthread(t *testing.T) { testCthread(t) } func TestCallbackCallers(t *testing.T) { testCallbackCallers(t) } func Test5227(t *testing.T) { test5227(t) } func TestCflags(t *testing.T) { testCflags(t) } func Test5337(t *testing.T) { test5337(t) } func Test5548(t *testing.T) { test5548(t) } func Test5603(t *testing.T) { test5603(t) } func Test6833(t *testing.T) { test6833(t) } func Test3250(t *testing.T) { test3250(t) } func TestCallbackStack(t *testing.T) { testCallbackStack(t) } func TestFpVar(t *testing.T) { testFpVar(t) } func Test4339(t *testing.T) { test4339(t) } func Test6390(t *testing.T) { test6390(t) } func Test5986(t *testing.T) { test5986(t) } func Test7665(t *testing.T) { test7665(t) } func TestNaming(t *testing.T) { testNaming(t) } func Test7560(t *testing.T) { test7560(t) } func Test7978(t *testing.T) { test7978(t) } func BenchmarkCgoCall(b *testing.B) { benchCgoCall(b) } go/misc/cgo/test/cthread.go0100644000000000000000000000110112412656734016110 0ustar00rootroot00000000000000// Copyright 2013 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 cgotest // extern void doAdd(int, int); import "C" import ( "sync" "testing" ) var sum struct { sync.Mutex i int } //export Add func Add(x int) { defer func() { recover() }() sum.Lock() sum.i += x sum.Unlock() var p *int *p = 2 } func testCthread(t *testing.T) { sum.i = 0 C.doAdd(10, 6) want := 10 * (10 - 1) / 2 * 6 if sum.i != want { t.Fatalf("sum=%d, want %d", sum.i, want) } } go/misc/cgo/test/cthread_unix.c0100644000000000000000000000123712412656734017002 0ustar00rootroot00000000000000// Copyright 2013 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 darwin dragonfly freebsd linux netbsd openbsd #include #include "_cgo_export.h" static void* addThread(void *p) { int i, max; max = *(int*)p; for(i=0; i MaxThread) nthread = MaxThread; for(i=0; i #include #include "_cgo_export.h" __stdcall static unsigned int addThread(void *p) { int i, max; max = *(int*)p; for(i=0; i MaxThread) nthread = MaxThread; for(i=0; i */ import "C" import ( "os" "runtime" "testing" "unsafe" ) // This is really an os package test but here for convenience. func testSetEnv(t *testing.T) { if runtime.GOOS == "windows" { // Go uses SetEnvironmentVariable on windows. Howerver, // C runtime takes a *copy* at process startup of thei // OS environment, and stores it in environ/envp. // It is this copy that getenv/putenv manipulate. t.Logf("skipping test") return } const key = "CGO_OS_TEST_KEY" const val = "CGO_OS_TEST_VALUE" os.Setenv(key, val) keyc := C.CString(key) defer C.free(unsafe.Pointer(keyc)) v := C.getenv(keyc) if v == (*C.char)(unsafe.Pointer(uintptr(0))) { t.Fatal("getenv returned NULL") } vs := C.GoString(v) if vs != val { t.Fatalf("getenv() = %q; want %q", vs, val) } } go/misc/cgo/test/exports.go0100644000000000000000000000041112412656737016210 0ustar00rootroot00000000000000// Copyright 2011 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 cgotest import "C" //export ReturnIntLong func ReturnIntLong() (int, C.long) { return 1, 2 } go/misc/cgo/test/fpvar.go0100644000000000000000000000164612412656734015632 0ustar00rootroot00000000000000// Copyright 2013 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 file contains test cases for cgo with function pointer variables. package cgotest /* typedef int (*intFunc) (); int bridge_int_func(intFunc f) { return f(); } int fortytwo() { return 42; } */ import "C" import "testing" func callBridge(f C.intFunc) int { return int(C.bridge_int_func(f)) } func callCBridge(f C.intFunc) C.int { return C.bridge_int_func(f) } func testFpVar(t *testing.T) { const expected = 42 f := C.intFunc(C.fortytwo) res1 := C.bridge_int_func(f) if r1 := int(res1); r1 != expected { t.Errorf("got %d, want %d", r1, expected) } res2 := callCBridge(f) if r2 := int(res2); r2 != expected { t.Errorf("got %d, want %d", r2, expected) } r3 := callBridge(f) if r3 != expected { t.Errorf("got %d, want %d", r3, expected) } } go/misc/cgo/test/helpers.go0100644000000000000000000000142012412656734016144 0ustar00rootroot00000000000000// Copyright 2011 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 cgotest // const char *greeting = "hello, world"; import "C" import ( "reflect" "testing" "unsafe" ) const greeting = "hello, world" type testPair struct { Name string Got, Want interface{} } var testPairs = []testPair{ {"GoString", C.GoString(C.greeting), greeting}, {"GoStringN", C.GoStringN(C.greeting, 5), greeting[:5]}, {"GoBytes", C.GoBytes(unsafe.Pointer(C.greeting), 5), []byte(greeting[:5])}, } func testHelpers(t *testing.T) { for _, pair := range testPairs { if !reflect.DeepEqual(pair.Got, pair.Want) { t.Errorf("%s: got %#v, want %#v", pair.Name, pair.Got, pair.Want) } } } go/misc/cgo/test/issue1222.go0100644000000000000000000000073012412656734016144 0ustar00rootroot00000000000000// 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. // This file contains test cases for cgo. package cgotest /* // issue 1222 typedef union { long align; } xxpthread_mutex_t; struct ibv_async_event { union { int x; } element; }; struct ibv_context { xxpthread_mutex_t mutex; }; */ import "C" type AsyncEvent struct { event C.struct_ibv_async_event } go/misc/cgo/test/issue1328.go0100644000000000000000000000074512412656734016161 0ustar00rootroot00000000000000// Copyright 2011 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 cgotest import "testing" // extern void BackIntoGo(void); // void IntoC(void); import "C" //export BackIntoGo func BackIntoGo() { x := 1 for i := 0; i < 10000; i++ { xvariadic(x) if x != 1 { panic("x is not 1?") } } } func xvariadic(x ...interface{}) { } func test1328(t *testing.T) { C.IntoC() } go/misc/cgo/test/issue1560.go0100644000000000000000000000235612412656734016157 0ustar00rootroot00000000000000// Copyright 2011 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 cgotest /* // mysleep returns the absolute start time in ms. long long mysleep(int seconds); // twoSleep returns the absolute start time of the first sleep // in ms. long long twoSleep(int); */ import "C" import ( "testing" "time" ) var sleepDone = make(chan int64) // parallelSleep returns the absolute difference between the start time // of the two sleeps. func parallelSleep(n int) int64 { t := int64(C.twoSleep(C.int(n))) - <-sleepDone if t < 0 { return -t } return t } //export BackgroundSleep func BackgroundSleep(n int32) { go func() { sleepDone <- int64(C.mysleep(C.int(n))) }() } func testParallelSleep(t *testing.T) { sleepSec := 1 dt := time.Duration(parallelSleep(sleepSec)) * time.Millisecond t.Logf("difference in start time for two sleep(%d) is %v", sleepSec, dt) // bug used to run sleeps in serial, producing a 2*sleepSec-second delay. // we detect if the start times of those sleeps are > 0.5*sleepSec-second. if dt >= time.Duration(sleepSec)*time.Second/2 { t.Fatalf("parallel %d-second sleeps slept for %f seconds", sleepSec, dt.Seconds()) } } go/misc/cgo/test/issue1635.go0100644000000000000000000000134012412656734016152 0ustar00rootroot00000000000000// 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 cgotest /* // Mac OS X's gcc will generate scattered relocation 2/1 for // this function on Darwin/386, and 8l couldn't handle it. // this example is in issue 1635 #include void scatter() { void *p = scatter; printf("scatter = %p\n", p); } // this example is in issue 3253 int hola = 0; int testHola() { return hola; } */ import "C" import "testing" func test1635(t *testing.T) { C.scatter() if v := C.hola; v != 0 { t.Fatalf("C.hola is %d, should be 0", v) } if v := C.testHola(); v != 0 { t.Fatalf("C.testHola() is %d, should be 0", v) } } go/misc/cgo/test/issue2462.go0100644000000000000000000000256612412656734016164 0ustar00rootroot00000000000000// Copyright 2011 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 cgotest import "C" //export exportbyte func exportbyte() byte { return 0 } //export exportbool func exportbool() bool { return false } //export exportrune func exportrune() rune { return 0 } //export exporterror func exporterror() error { return nil } //export exportint func exportint() int { return 0 } //export exportuint func exportuint() uint { return 0 } //export exportuintptr func exportuintptr() uintptr { return (uintptr)(0) } //export exportint8 func exportint8() int8 { return 0 } //export exportuint8 func exportuint8() uint8 { return 0 } //export exportint16 func exportint16() int16 { return 0 } //export exportuint16 func exportuint16() uint16 { return 0 } //export exportint32 func exportint32() int32 { return 0 } //export exportuint32 func exportuint32() uint32 { return 0 } //export exportint64 func exportint64() int64 { return 0 } //export exportuint64 func exportuint64() uint64 { return 0 } //export exportfloat32 func exportfloat32() float32 { return 0 } //export exportfloat64 func exportfloat64() float64 { return 0 } //export exportcomplex64 func exportcomplex64() complex64 { return 0 } //export exportcomplex128 func exportcomplex128() complex128 { return 0 } go/misc/cgo/test/issue3250.go0100644000000000000000000000314012412656734016145 0ustar00rootroot00000000000000// Copyright 2013 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 !windows package cgotest /* #include #include #include #include static void *thread(void *p) { (void)p; const int M = 100; int i; for (i = 0; i < M; i++) { pthread_kill(pthread_self(), SIGCHLD); usleep(rand() % 20 + 5); } return NULL; } void testSendSIG() { const int N = 20; int i; pthread_t tid[N]; for (i = 0; i < N; i++) { usleep(rand() % 200 + 100); pthread_create(&tid[i], 0, thread, NULL); } for (i = 0; i < N; i++) pthread_join(tid[i], 0); } */ import "C" import ( "os" "os/signal" "syscall" "testing" "time" ) func test3250(t *testing.T) { t.Skip("skipped, see golang.org/issue/5885") const ( thres = 1 sig = syscall.SIGCHLD ) type result struct { n int sig os.Signal } var ( sigCh = make(chan os.Signal, 10) waitStart = make(chan struct{}) waitDone = make(chan result) ) signal.Notify(sigCh, sig) go func() { n := 0 alarm := time.After(time.Second * 3) for { select { case <-waitStart: waitStart = nil case v := <-sigCh: n++ if v != sig || n > thres { waitDone <- result{n, v} return } case <-alarm: waitDone <- result{n, sig} return } } }() waitStart <- struct{}{} C.testSendSIG() r := <-waitDone if r.sig != sig { t.Fatalf("received signal %v, but want %v", r.sig, sig) } t.Logf("got %d signals\n", r.n) if r.n <= thres { t.Fatalf("expected more than %d", thres) } } go/misc/cgo/test/issue3250w.go0100644000000000000000000000036612412656734016343 0ustar00rootroot00000000000000// Copyright 2013 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 windows package cgotest import "testing" func test3250(t *testing.T) {} go/misc/cgo/test/issue3261.go0100644000000000000000000000173712412656734016161 0ustar00rootroot00000000000000// 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 cgotest /* // libgcc on ARM might be compiled as thumb code, but our 5l // can't handle that, so we have to disable this test on arm. #ifdef __ARMEL__ #include int vabs(int x) { puts("testLibgcc is disabled on ARM because 5l cannot handle thumb library."); return (x < 0) ? -x : x; } #else int __absvsi2(int); // dummy prototype for libgcc function // we shouldn't name the function abs, as gcc might use // the builtin one. int vabs(int x) { return __absvsi2(x); } #endif */ import "C" import "testing" func testLibgcc(t *testing.T) { var table = []struct { in, out C.int }{ {0, 0}, {1, 1}, {-42, 42}, {1000300, 1000300}, {1 - 1<<31, 1<<31 - 1}, } for _, v := range table { if o := C.vabs(v.in); o != v.out { t.Fatalf("abs(%d) got %d, should be %d", v.in, o, v.out) return } } } go/misc/cgo/test/issue3729.go0100644000000000000000000000174012412656734016164 0ustar00rootroot00000000000000// 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. // Issue 3729: cmd/cgo: access errno from void C function // void f(void) returns [0]byte, error in Go world. // +build !windows package cgotest /* #include void g(void) { errno = E2BIG; } // try to pass some non-trivial arguments to function g2 const char _expA = 0x42; const float _expB = 3.14159; const short _expC = 0x55aa; const int _expD = 0xdeadbeef; void g2(int x, char a, float b, short c, int d) { if (a == _expA && b == _expB && c == _expC && d == _expD) errno = x; else errno = -1; } */ import "C" import ( "syscall" "testing" ) func test3729(t *testing.T) { _, e := C.g() if e != syscall.E2BIG { t.Errorf("got %q, expect %q", e, syscall.E2BIG) } _, e = C.g2(C.EINVAL, C._expA, C._expB, C._expC, C._expD) if e != syscall.EINVAL { t.Errorf("got %q, expect %q", e, syscall.EINVAL) } } go/misc/cgo/test/issue3729w.go0100644000000000000000000000061312412656734016351 0ustar00rootroot00000000000000// 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. // Issue 3729: cmd/cgo: access errno from void C function // void f(void) returns [0]byte, error in Go world. // +build windows package cgotest import "testing" func test3729(t *testing.T) { t.Log("skip errno test on Windows") } go/misc/cgo/test/issue3741.go0100644000000000000000000000066012412656734016156 0ustar00rootroot00000000000000// 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 cgotest import "C" //export exportSliceIn func exportSliceIn(s []byte) bool { return len(s) == cap(s) } //export exportSliceOut func exportSliceOut() []byte { return []byte{1} } //export exportSliceInOut func exportSliceInOut(s []byte) []byte { return s } go/misc/cgo/test/issue3775.go0100644000000000000000000000124212412656734016162 0ustar00rootroot00000000000000package cgotest /* void lockOSThreadCallback(void); inline static void lockOSThreadC(void) { lockOSThreadCallback(); } int usleep(unsigned usec); */ import "C" import ( "runtime" "testing" ) func init() { // Same as test3775 but run during init so that // there are two levels of internal runtime lock // (1 for init, 1 for cgo). // This would have been broken by CL 11663043. C.lockOSThreadC() } func test3775(t *testing.T) { // Used to panic because of the UnlockOSThread below. C.lockOSThreadC() } //export lockOSThreadCallback func lockOSThreadCallback() { runtime.LockOSThread() runtime.UnlockOSThread() go C.usleep(10000) runtime.Gosched() } go/misc/cgo/test/issue3945.go0100644000000000000000000000070212412656734016161 0ustar00rootroot00000000000000// 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 cgotest // Test that cgo reserves enough stack space during cgo call. // See http://golang.org/issue/3945 for details. // #include // // void say() { // printf("%s from C\n", "hello"); // } // import "C" import "testing" func testPrintf(t *testing.T) { C.say() } go/misc/cgo/test/issue4029.go0100644000000000000000000000220212412656734016150 0ustar00rootroot00000000000000// 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. // +build !windows package cgotest /* #include #cgo linux LDFLAGS: -ldl */ import "C" import ( "fmt" "testing" ) //export IMPIsOpaque func IMPIsOpaque() { fmt.Println("isOpaque") } //export IMPInitWithFrame func IMPInitWithFrame() { fmt.Println("IInitWithFrame") } //export IMPDrawRect func IMPDrawRect() { fmt.Println("drawRect:") } //export IMPWindowResize func IMPWindowResize() { fmt.Println("windowDidResize:") } func test4029(t *testing.T) { loadThySelf(t, "IMPWindowResize") loadThySelf(t, "IMPDrawRect") loadThySelf(t, "IMPInitWithFrame") loadThySelf(t, "IMPIsOpaque") } func loadThySelf(t *testing.T, symbol string) { this_process := C.dlopen(nil, C.RTLD_NOW) if this_process == nil { t.Error("dlopen:", C.GoString(C.dlerror())) return } defer C.dlclose(this_process) symbol_address := C.dlsym(this_process, C.CString(symbol)) if symbol_address == nil { t.Error("dlsym:", C.GoString(C.dlerror())) return } t.Log(symbol, symbol_address) } go/misc/cgo/test/issue4029w.go0100644000000000000000000000036712412656734016351 0ustar00rootroot00000000000000// 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. // +build windows package cgotest import "testing" func test4029(t *testing.T) { } go/misc/cgo/test/issue4054a.go0100644000000000000000000000052512412656734016315 0ustar00rootroot00000000000000// 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 cgotest /* typedef enum { A = 0, B, C, D, E, F, G, H, I, J, } issue4054a; */ import "C" var issue4054a = []int{C.A, C.B, C.C, C.D, C.E, C.F, C.G, C.H, C.I, C.J} go/misc/cgo/test/issue4054b.go0100644000000000000000000000052512412656734016316 0ustar00rootroot00000000000000// 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 cgotest /* typedef enum { A = 0, B, C, D, E, F, G, H, I, J, } issue4054b; */ import "C" var issue4054b = []int{C.A, C.B, C.C, C.D, C.E, C.F, C.G, C.H, C.I, C.J} go/misc/cgo/test/issue4273.c0100644000000000000000000000050112412656734015766 0ustar00rootroot00000000000000// 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. #ifdef __ELF__ __attribute__((weak)) __attribute__((visibility("hidden"))) void _compilerrt_abort_impl(const char *file, int line, const char *func) { } #endif go/misc/cgo/test/issue4273b.c0100644000000000000000000000056712412656734016144 0ustar00rootroot00000000000000// 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. #ifdef __ELF__ extern void _compilerrt_abort_impl(const char *file, int line, const char *func); void __my_abort(const char *file, int line, const char *func) { _compilerrt_abort_impl(file, line, func); } #endif go/misc/cgo/test/issue4339.c0100644000000000000000000000033612412656734015777 0ustar00rootroot00000000000000#include #include "issue4339.h" static void impl(void) { //printf("impl\n"); } Issue4339 exported4339 = {"bar", impl}; void handle4339(Issue4339 *x) { //printf("handle\n"); x->bar(); //printf("done\n"); } go/misc/cgo/test/issue4339.go0100644000000000000000000000045412412656734016163 0ustar00rootroot00000000000000// Copyright 2013 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 cgotest /* #include "issue4339.h" */ import "C" import "testing" func test4339(t *testing.T) { C.handle4339(&C.exported4339) } go/misc/cgo/test/issue4339.h0100644000000000000000000000023112412656734015776 0ustar00rootroot00000000000000typedef struct Issue4339 Issue4339; struct Issue4339 { char *name; void (*bar)(void); }; extern Issue4339 exported4339; void handle4339(Issue4339*); go/misc/cgo/test/issue4417.go0100644000000000000000000000172512412656734016162 0ustar00rootroot00000000000000// 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. // Issue 4417: cmd/cgo: bool alignment/padding issue. // bool alignment is wrong and causing wrong arguments when calling functions. // package cgotest /* #include static int c_bool(bool a, bool b, int c, bool d, bool e) { return c; } */ import "C" import "testing" func testBoolAlign(t *testing.T) { b := C.c_bool(true, true, 10, true, false) if b != 10 { t.Fatalf("found %d expected 10\n", b) } b = C.c_bool(true, true, 5, true, true) if b != 5 { t.Fatalf("found %d expected 5\n", b) } b = C.c_bool(true, true, 3, true, false) if b != 3 { t.Fatalf("found %d expected 3\n", b) } b = C.c_bool(false, false, 1, true, false) if b != 1 { t.Fatalf("found %d expected 1\n", b) } b = C.c_bool(false, true, 200, true, false) if b != 200 { t.Fatalf("found %d expected 200\n", b) } } go/misc/cgo/test/issue4857.go0100644000000000000000000000047312412656734016171 0ustar00rootroot00000000000000// Copyright 2013 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 cgotest /* #cgo CFLAGS: -Werror const struct { int a; } *issue4857() { return (void *)0; } */ import "C" func test4857() { _ = C.issue4857() } go/misc/cgo/test/issue5227.go0100644000000000000000000000114612412656734016157 0ustar00rootroot00000000000000// Copyright 2013 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 5227: linker incorrectly treats common symbols and // leaves them undefined. package cgotest /* typedef struct { int Count; } Fontinfo; Fontinfo SansTypeface; extern void init(); Fontinfo loadfont() { Fontinfo f = {0}; return f; } void init() { SansTypeface = loadfont(); } */ import "C" import "testing" func test5227(t *testing.T) { C.init() } func selectfont() C.Fontinfo { return C.SansTypeface } go/misc/cgo/test/issue5337.go0100644000000000000000000000111412412656734016154 0ustar00rootroot00000000000000// Copyright 2013 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 !windows package cgotest /* #include #include static void *thread1(void *p) { (void)p; pthread_kill(pthread_self(), SIGPROF); return NULL; } void test5337() { pthread_t tid; pthread_create(&tid, 0, thread1, NULL); pthread_join(tid, 0); } */ import "C" import "testing" // Verify that we can withstand SIGPROF received on foreign threads func test5337(t *testing.T) { C.test5337() } go/misc/cgo/test/issue5337w.go0100644000000000000000000000036612412656734016353 0ustar00rootroot00000000000000// Copyright 2013 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 windows package cgotest import "testing" func test5337(t *testing.T) {} go/misc/cgo/test/issue5548.go0100644000000000000000000000071512412656737016171 0ustar00rootroot00000000000000// Copyright 2013 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 cgotest import "testing" /* extern int issue5548_in_c(void); */ import "C" //export issue5548FromC func issue5548FromC(s string, i int) int { if len(s) == 4 && s == "test" && i == 42 { return 1 } return 0 } func test5548(t *testing.T) { if C.issue5548_in_c() == 0 { t.Fail() } } go/misc/cgo/test/issue5548_c.c0100644000000000000000000000070712412656734016306 0ustar00rootroot00000000000000// Copyright 2013 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. #include "_cgo_export.h" static void clobber_stack() { volatile char a[1024]; int i; for(i = 0; i < sizeof a; i++) a[i] = 0xff; } static int call_go() { GoString s; s.p = "test"; s.n = 4; return issue5548FromC(s, 42); } int issue5548_in_c() { clobber_stack(); return call_go(); } go/misc/cgo/test/issue5603.go0100644000000000000000000000174012412656734016155 0ustar00rootroot00000000000000// Copyright 2013 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 cgotest /* const long long issue5603exp = 0x12345678; long long issue5603foo0() { return issue5603exp; } long long issue5603foo1(void *p) { return issue5603exp; } long long issue5603foo2(void *p, void *q) { return issue5603exp; } long long issue5603foo3(void *p, void *q, void *r) { return issue5603exp; } long long issue5603foo4(void *p, void *q, void *r, void *s) { return issue5603exp; } */ import "C" import "testing" func test5603(t *testing.T) { var x [5]int64 exp := int64(C.issue5603exp) x[0] = int64(C.issue5603foo0()) x[1] = int64(C.issue5603foo1(nil)) x[2] = int64(C.issue5603foo2(nil, nil)) x[3] = int64(C.issue5603foo3(nil, nil, nil)) x[4] = int64(C.issue5603foo4(nil, nil, nil, nil)) for i, v := range x { if v != exp { t.Errorf("issue5603foo%d() returns %v, expected %v", i, v, exp) } } } go/misc/cgo/test/issue5740.go0100644000000000000000000000056012412656734016156 0ustar00rootroot00000000000000// Copyright 2013 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 cgotest // int test5740a(void), test5740b(void); import "C" import "testing" func test5740(t *testing.T) { if v := C.test5740a() + C.test5740b(); v != 5 { t.Errorf("expected 5, got %v", v) } } go/misc/cgo/test/issue5740a.c0100644000000000000000000000034012412656734016130 0ustar00rootroot00000000000000// Copyright 2013 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. static int volatile val = 2; int test5740a() { return val; } go/misc/cgo/test/issue5740b.c0100644000000000000000000000034012412656734016131 0ustar00rootroot00000000000000// Copyright 2013 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. static int volatile val = 3; int test5740b() { return val; } go/misc/cgo/test/issue5986.go0100644000000000000000000000117112412656734016171 0ustar00rootroot00000000000000// Copyright 2013 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 cgotest /* #cgo LDFLAGS: -lm #include #include static void output5986() { int current_row = 0, row_count = 0; double sum_squares = 0; do { if (current_row == 10) { current_row = 0; } ++row_count; } while (current_row++ != 1); double d = sqrt(sum_squares / row_count); printf("sqrt is: %g\n", d); } */ import "C" import "testing" func test5986(t *testing.T) { C.output5986() } go/misc/cgo/test/issue6128.go0100644000000000000000000000071712412656734016163 0ustar00rootroot00000000000000// Copyright 2013 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 cgotest // Test handling of #defined names in clang. // golang.org/issue/6128. /* // NOTE: Must use hex, or else a shortcut for decimals // in cgo avoids trying to pass this to clang. #define X 0x1 */ import "C" func test6128() { // nothing to run, just make sure this compiles. _ = C.X } go/misc/cgo/test/issue6390.go0100644000000000000000000000067712412656734016171 0ustar00rootroot00000000000000// Copyright 2013 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 cgotest // #include import "C" import "testing" func test6390(t *testing.T) { p1 := C.malloc(1024) if p1 == nil { t.Fatalf("C.malloc(1024) returned nil") } p2 := C.malloc(0) if p2 == nil { t.Fatalf("C.malloc(0) returned nil") } C.free(p1) C.free(p2) } go/misc/cgo/test/issue6472.go0100644000000000000000000000057612412656734016170 0ustar00rootroot00000000000000// Copyright 2013 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 cgotest /* typedef struct { struct { int x; } y[16]; } z; */ import "C" func test6472() { // nothing to run, just make sure this compiles s := new(C.z) println(s.y[0].x) } go/misc/cgo/test/issue6506.go0100644000000000000000000000137112412656734016160 0ustar00rootroot00000000000000// Copyright 2013 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 cgotest // Test handling of size_t in the face of incorrect clang debug information. // golang.org/issue/6506. /* #include #include */ import "C" func test6506() { // nothing to run, just make sure this compiles var x C.size_t C.calloc(x, x) C.malloc(x) C.realloc(nil, x) C.memcpy(nil, nil, x) C.memcmp(nil, nil, x) C.memmove(nil, nil, x) C.strncpy(nil, nil, x) C.strncmp(nil, nil, x) C.strncat(nil, nil, x) x = C.strxfrm(nil, nil, x) C.memchr(nil, 0, x) x = C.strcspn(nil, nil) x = C.strspn(nil, nil) C.memset(nil, 0, x) x = C.strlen(nil) _ = x } go/misc/cgo/test/issue6612.go0100644000000000000000000000406612412656734016162 0ustar00rootroot00000000000000// Copyright 2013 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. // golang.org/issue/6612 // Test new scheme for deciding whether C.name is an expression, type, constant. // Clang silences some warnings when the name is a #defined macro, so test those too // (even though we now use errors exclusively, not warnings). package cgotest /* void myfunc(void) {} int myvar = 5; const char *mytext = "abcdef"; typedef int mytype; enum { myenum = 1234, }; #define myfunc_def myfunc #define myvar_def myvar #define mytext_def mytext #define mytype_def mytype #define myenum_def myenum #define myint_def 12345 #define myfloat_def 1.5 #define mystring_def "hello" */ import "C" import "testing" func testNaming(t *testing.T) { C.myfunc() C.myfunc_def() if v := C.myvar; v != 5 { t.Errorf("C.myvar = %d, want 5", v) } if v := C.myvar_def; v != 5 { t.Errorf("C.myvar_def = %d, want 5", v) } if s := C.GoString(C.mytext); s != "abcdef" { t.Errorf("C.mytext = %q, want %q", s, "abcdef") } if s := C.GoString(C.mytext_def); s != "abcdef" { t.Errorf("C.mytext_def = %q, want %q", s, "abcdef") } if c := C.myenum; c != 1234 { t.Errorf("C.myenum = %v, want 1234", c) } if c := C.myenum_def; c != 1234 { t.Errorf("C.myenum_def = %v, want 1234", c) } { const c = C.myenum if c != 1234 { t.Errorf("C.myenum as const = %v, want 1234", c) } } { const c = C.myenum_def if c != 1234 { t.Errorf("C.myenum as const = %v, want 1234", c) } } if c := C.myint_def; c != 12345 { t.Errorf("C.myint_def = %v, want 12345", c) } { const c = C.myint_def if c != 12345 { t.Errorf("C.myint as const = %v, want 12345", c) } } // This would be nice, but it has never worked. /* if c := C.myfloat_def; c != 1.5 { t.Errorf("C.myint_def = %v, want 1.5", c) } { const c = C.myfloat_def if c != 1.5 { t.Errorf("C.myint as const = %v, want 1.5", c) } } */ if s := C.mystring_def; s != "hello" { t.Errorf("C.mystring_def = %q, want %q", s, "hello") } } go/misc/cgo/test/issue6833.go0100644000000000000000000000120012412656734016152 0ustar00rootroot00000000000000// Copyright 2013 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 cgotest /* extern unsigned long long issue6833Func(unsigned int, unsigned long long); */ import "C" import "testing" //export GoIssue6833Func func GoIssue6833Func(aui uint, aui64 uint64) uint64 { return aui64 + uint64(aui) } func test6833(t *testing.T) { ui := 7 ull := uint64(0x4000300020001000) v := uint64(C.issue6833Func(C.uint(ui), C.ulonglong(ull))) exp := uint64(ui) + ull if v != exp { t.Errorf("issue6833Func() returns %x, expected %x", v, exp) } } go/misc/cgo/test/issue6833_c.c0100644000000000000000000000046012412656734016300 0ustar00rootroot00000000000000// Copyright 2013 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. #include "_cgo_export.h" unsigned long long issue6833Func(unsigned int aui, unsigned long long aull) { return GoIssue6833Func(aui, aull); } go/misc/cgo/test/issue6997_linux.c0100644000000000000000000000100412412656734017223 0ustar00rootroot00000000000000// 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. #include #include #include static pthread_t thread; static void* threadfunc(void* dummy) { while(1) { sleep(1); } } int StartThread() { return pthread_create(&thread, NULL, &threadfunc, NULL); } int CancelThread() { void *r; pthread_cancel(thread); pthread_join(thread, &r); return (r == PTHREAD_CANCELED); } go/misc/cgo/test/issue6997_linux.go0100644000000000000000000000153312412656734017415 0ustar00rootroot00000000000000// 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. // Test that pthread_cancel works as expected // (NPTL uses SIGRTMIN to implement thread cancellation) // See http://golang.org/issue/6997 package cgotest /* #cgo CFLAGS: -pthread #cgo LDFLAGS: -pthread extern int StartThread(); extern int CancelThread(); */ import "C" import "testing" import "time" func test6997(t *testing.T) { r := C.StartThread() if r != 0 { t.Error("pthread_create failed") } c := make(chan C.int) go func() { time.Sleep(500 * time.Millisecond) c <- C.CancelThread() }() select { case r = <-c: if r == 0 { t.Error("pthread finished but wasn't cancelled??") } case <-time.After(5 * time.Second): t.Error("hung in pthread_cancel/pthread_join") } } go/misc/cgo/test/issue7234_test.go0100644000000000000000000000117712412656734017222 0ustar00rootroot00000000000000// 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. 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 // handling string constants when using -linkmode=external. The test // is in this directory because we routinely test -linkmode=external // here. var v7234 = [...]string{"runtime/cgo"} func TestIssue7234(t *testing.T) { if v7234[0] != "runtime/cgo" { t.Errorf("bad string constant %q", v7234[0]) } } go/misc/cgo/test/issue7560.go0100644000000000000000000000166212412656734016164 0ustar00rootroot00000000000000// 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. package cgotest /* #include typedef struct { char x; long y; } __attribute__((__packed__)) misaligned; int offset7560(void) { return (uintptr_t)&((misaligned*)0)->y; } */ import "C" import ( "reflect" "testing" ) func test7560(t *testing.T) { // some mingw don't implement __packed__ correctly. if C.offset7560() != 1 { t.Skip("C compiler did not pack struct") } // C.misaligned should have x but then a padding field to get to the end of the struct. // There should not be a field named 'y'. var v C.misaligned rt := reflect.TypeOf(&v).Elem() if rt.NumField() != 2 || rt.Field(0).Name != "x" || rt.Field(1).Name != "_" { t.Errorf("unexpected fields in C.misaligned:\n") for i := 0; i < rt.NumField(); i++ { t.Logf("%+v\n", rt.Field(i)) } } } go/misc/cgo/test/issue7665.go0100644000000000000000000000102312412656734016161 0ustar00rootroot00000000000000// Copyright 2013 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 cgotest import ( "testing" "unsafe" ) // extern void f7665(void); import "C" //export f7665 func f7665() {} var bad7665 unsafe.Pointer = C.f7665 var good7665 uintptr = uintptr(C.f7665) func test7665(t *testing.T) { if bad7665 == nil || bad7665 != unsafe.Pointer(good7665) { t.Errorf("ptrs = %p, %#x, want same non-nil pointer", bad7665, good7665) } } go/misc/cgo/test/issue7695_test.go0100644000000000000000000000077512412656737017243 0ustar00rootroot00000000000000// 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. // Demo of deferred C function with untrue prototype // breaking stack copying. See golang.org/issue/7695. package cgotest import ( "testing" "./backdoor" ) func TestIssue7695(t *testing.T) { defer backdoor.Issue7695(1, 0, 2, 0, 0, 3, 0, 4) recurse(100) } func recurse(n int) { var x [128]int n += x[0] if n > 0 { recurse(n - 1) } } go/misc/cgo/test/issue7786.go0100644000000000000000000000215512412656734016174 0ustar00rootroot00000000000000// Copyright 2013 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 7786. No runtime test, just make sure that typedef and struct/union/class are interchangeable at compile time. package cgotest // struct test7786; // typedef struct test7786 typedef_test7786; // void f7786(struct test7786 *ctx) {} // void g7786(typedef_test7786 *ctx) {} // // typedef struct body7786 typedef_body7786; // struct body7786 { int x; }; // void b7786(struct body7786 *ctx) {} // void c7786(typedef_body7786 *ctx) {} // // typedef union union7786 typedef_union7786; // void u7786(union union7786 *ctx) {} // void v7786(typedef_union7786 *ctx) {} import "C" func f() { var x1 *C.typedef_test7786 var x2 *C.struct_test7786 x1 = x2 x2 = x1 C.f7786(x1) C.f7786(x2) C.g7786(x1) C.g7786(x2) var b1 *C.typedef_body7786 var b2 *C.struct_body7786 b1 = b2 b2 = b1 C.b7786(b1) C.b7786(b2) C.c7786(b1) C.c7786(b2) var u1 *C.typedef_union7786 var u2 *C.union_union7786 u1 = u2 u2 = u1 C.u7786(u1) C.u7786(u2) C.v7786(u1) C.v7786(u2) } go/misc/cgo/test/issue7978.go0100644000000000000000000000512612412656737016203 0ustar00rootroot00000000000000// 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. // Issue 7978. Stack tracing didn't work during cgo code after calling a Go // callback. Make sure GC works and the stack trace is correct. package cgotest /* #include void issue7978cb(void); // use ugly atomic variable sync since that doesn't require calling back into // Go code or OS dependencies static void issue7978c(uint32_t *sync) { while(__sync_fetch_and_add(sync, 0) != 0) ; __sync_fetch_and_add(sync, 1); while(__sync_fetch_and_add(sync, 0) != 2) ; issue7978cb(); __sync_fetch_and_add(sync, 1); while(__sync_fetch_and_add(sync, 0) != 6) ; } */ import "C" import ( "os" "runtime" "strings" "sync/atomic" "testing" ) var issue7978sync uint32 func issue7978check(t *testing.T, wantFunc string, badFunc string, depth int) { runtime.GC() buf := make([]byte, 65536) trace := string(buf[:runtime.Stack(buf, true)]) for _, goroutine := range strings.Split(trace, "\n\n") { if strings.Contains(goroutine, "test.issue7978go") { trace := strings.Split(goroutine, "\n") // look for the expected function in the stack for i := 0; i < depth; i++ { if badFunc != "" && strings.Contains(trace[1+2*i], badFunc) { t.Errorf("bad stack: found %s in the stack:\n%s", badFunc, goroutine) return } if strings.Contains(trace[1+2*i], wantFunc) { return } } t.Errorf("bad stack: didn't find %s in the stack:\n%s", wantFunc, goroutine) return } } t.Errorf("bad stack: goroutine not found. Full stack dump:\n%s", trace) } func issue7978wait(store uint32, wait uint32) { if store != 0 { atomic.StoreUint32(&issue7978sync, store) } for atomic.LoadUint32(&issue7978sync) != wait { runtime.Gosched() } } //export issue7978cb func issue7978cb() { issue7978wait(3, 4) } func issue7978go() { C.issue7978c((*C.uint32_t)(&issue7978sync)) issue7978wait(7, 8) } func test7978(t *testing.T) { if os.Getenv("GOTRACEBACK") != "2" { t.Fatal("GOTRACEBACK must be 2") } issue7978sync = 0 go issue7978go() // test in c code, before callback issue7978wait(0, 1) issue7978check(t, "runtime.cgocall(", "", 1) // test in go code, during callback issue7978wait(2, 3) issue7978check(t, "test.issue7978cb(", "test.issue7978go", 4) // test in c code, after callback issue7978wait(4, 5) issue7978check(t, "runtime.cgocall(", "runtime.cgocallback", 1) // test in go code, after return from cgo issue7978wait(6, 7) issue7978check(t, "test.issue7978go(", "", 4) atomic.StoreUint32(&issue7978sync, 8) } go/misc/cgo/test/issue8148.go0100644000000000000000000000113212412656734016157 0ustar00rootroot00000000000000// 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. // Issue 8148. A typedef of an unnamed struct didn't work when used // with an exported Go function. No runtime test; just make sure it // compiles. package cgotest /* typedef struct { int i; } T; int issue8148Callback(T*); static int get() { T t; t.i = 42; return issue8148Callback(&t); } */ import "C" //export issue8148Callback func issue8148Callback(t *C.T) C.int { return t.i } func Issue8148() int { return int(C.get()) } go/misc/cgo/test/issue8331.h0100644000000000000000000000030712412656734015776 0ustar00rootroot00000000000000// 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. typedef struct { int i; } issue8331; go/misc/cgo/test/issue8331a.go0100644000000000000000000000063212412656734016316 0ustar00rootroot00000000000000// 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. // Issue 8331. A typedef of an unnamed struct is the same struct when // #include'd twice. No runtime test; just make sure it compiles. package cgotest // #include "issue8331.h" import "C" func issue8331a() C.issue8331 { return issue8331Var } go/misc/cgo/test/issue8331b.go0100644000000000000000000000060012412656734016312 0ustar00rootroot00000000000000// 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. // Issue 8331. A typedef of an unnamed struct is the same struct when // #include'd twice. No runtime test; just make sure it compiles. package cgotest // #include "issue8331.h" import "C" var issue8331Var C.issue8331 go/misc/cgo/test/issue8441.go0100644000000000000000000000103012412656734016150 0ustar00rootroot00000000000000// 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. // Issue 8368 and 8441. Recursive struct definitions didn't work. // No runtime test; just make sure it compiles. package cgotest /* typedef struct one one; typedef struct two two; struct one { two *x; }; struct two { one *x; }; */ import "C" func issue8368(one *C.struct_one, two *C.struct_two) { } func issue8441(one *C.one, two *C.two) { issue8441(two.x, one.x) } go/misc/cgo/test/setgid_linux.go0100644000000000000000000000107712412656734017210 0ustar00rootroot00000000000000// 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. // Test that setgid does not hang on GNU/Linux. // See http://code.google.com/p/go/issues/detail?id=3871 for details. package cgotest /* #include #include */ import "C" import ( "testing" "time" ) func testSetgid(t *testing.T) { c := make(chan bool) go func() { C.setgid(0) c <- true }() select { case <-c: case <-time.After(5 * time.Second): t.Error("setgid hung") } } go/misc/cgo/test/sleep_windows_386.go0100644000000000000000000000074312412656734017773 0ustar00rootroot00000000000000// Copyright 2011 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 cgotest /* // mingw32 on windows/386 provides usleep() but not sleep(), // as we don't want to require all other OSes to provide usleep, // we emulate sleep(int s) using win32 API Sleep(int ms). #include unsigned int sleep(unsigned int seconds) { Sleep(1000 * seconds); return 0; } */ import "C" go/misc/cgo/testasan0040755000000000000000000000000012412656734014745 5ustar00rootroot00000000000000go/misc/cgo/testasan/main.go0100644000000000000000000000165312412656734016301 0ustar00rootroot00000000000000// Copyright 2013 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 /* #include #include #include void ctor(void) __attribute__((constructor)); static void* thread(void*); void ctor(void) { // occupy memory where Go runtime would normally map heap mmap((void*)0x00c000000000, 64<<10, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, -1, 0); // allocate 4K every 10us pthread_t t; pthread_create(&t, 0, thread, 0); } static void* thread(void *p) { for(;;) { usleep(10000); mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); } return 0; } */ import "C" import ( "time" ) func main() { // ensure that we can function normally var v [][]byte for i := 0; i < 1000; i++ { time.Sleep(10 * time.Microsecond) v = append(v, make([]byte, 64<<10)) } } go/misc/cgo/testcdefs0040755000000000000000000000000012412656737015112 5ustar00rootroot00000000000000go/misc/cgo/testcdefs/cdefstest.c0100644000000000000000000000034512412656737017320 0ustar00rootroot00000000000000// Copyright 2013 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. #include "runtime.h" #include "cdefstest.h" struct CdefsTest test; go/misc/cgo/testcdefs/cdefstest.go0100644000000000000000000000234112412656737017501 0ustar00rootroot00000000000000// Copyright 2013 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 ignore package cgotest /* // This file tests a bug found in the cgo -cdefs tool that incorrectly // translated Go pointer arrays generated by the cgo godefs tool back into C // pointer arrays. // // The comments below show how the type is translated from gcc-style C into Go // and back into C for both the buggy version and the correct version struct cdefsTest { // This was already being handled correctly // Correct: -> Array [20]int8 -> int8 array[20] char array1[20]; // Buggy: -> Array [20][20]int8 -> [20]int8 array[20] // Correct: -> Array [20][20]int8 -> int8 array[20][20] char array2[20][20]; // Buggy: -> Array [20]*int8 -> *int8 array[20] // Correct: -> Array [20]*int8 -> int8 *array[20] char *array3[20]; // Buggy: -> Array [20][20]*int8 -> [20]*int8 array[20] // Correct: -> Array [20]**int8 -> int8 *array[20][20] char *array4[20][20]; // Buggy: -> Array [20][20]**int8 -> [20]**int8 array[20] // Correct: -> Array [20][20]**int8 -> int8 **array[20][20] char **array5[20][20]; }; */ import "C" type CdefsTest C.struct_cdefsTest go/misc/cgo/testcdefs/main.c0100644000000000000000000000376412412656737016270 0ustar00rootroot00000000000000// Copyright 2013 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. #include "runtime.h" #include "cdefstest.h" void runtime·printf(int8*, ...); // From cdefstest.go. typedef struct CdefsOrig CdefsOrig; struct CdefsOrig { int8 array1[20]; int8 array2[20][20]; int8 *array3[20]; int8 *array4[20][20]; int8 **array5[20][20]; }; void main·test(int32 ret) { CdefsOrig o; CdefsTest t; ret = 0; if(sizeof(t.array1) != sizeof(o.array1) || offsetof(CdefsTest, array1[0]) != offsetof(CdefsOrig, array1[0])) { runtime·printf("array1: size, offset = %d, %d, want %d, %d\n", sizeof(t.array1), offsetof(CdefsTest, array1[0]), sizeof(o.array1), offsetof(CdefsOrig, array1[0])); ret = 1; } if(sizeof(t.array2) != sizeof(o.array2) || offsetof(CdefsTest, array2[0][0]) != offsetof(CdefsOrig, array2[0][0])) { runtime·printf("array2: size, offset = %d, %d, want %d, %d\n", sizeof(t.array2), offsetof(CdefsTest, array2[0][0]), sizeof(o.array2), offsetof(CdefsOrig, array2[0][0])); ret = 1; } if(sizeof(t.array3) != sizeof(o.array3) || offsetof(CdefsTest, array3[0]) != offsetof(CdefsOrig, array3[0])) { runtime·printf("array3: size, offset = %d, %d, want %d, %d\n", sizeof(t.array3), offsetof(CdefsTest, array3[0]), sizeof(o.array3), offsetof(CdefsOrig, array3[0])); ret = 1; } if(sizeof(t.array4) != sizeof(o.array4) || offsetof(CdefsTest, array4[0][0]) != offsetof(CdefsOrig, array4[0][0])) { runtime·printf("array4: size, offset = %d, %d, want %d, %d\n", sizeof(t.array4), offsetof(CdefsTest, array4[0][0]), sizeof(o.array4), offsetof(CdefsOrig, array4[0][0])); ret = 1; } if(sizeof(t.array5) != sizeof(o.array5) || offsetof(CdefsTest, array5[0][0]) != offsetof(CdefsOrig, array5[0][0])) { runtime·printf("array5: size, offset = %d, %d, want %d, %d\n", sizeof(t.array5), offsetof(CdefsTest, array5[0][0]), sizeof(o.array5), offsetof(CdefsOrig, array5[0][0])); ret = 1; } FLUSH(&ret); // flush return value } go/misc/cgo/testcdefs/main.go0100644000000000000000000000040112412656734016431 0ustar00rootroot00000000000000// Copyright 2013 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 "os" func test() int32 // in main.c func main() { os.Exit(int(test())) } go/misc/cgo/testcdefs/test.bash0100755000000000000000000000061512412656734017006 0ustar00rootroot00000000000000# Copyright 2013 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. # Just add issue file prefixes to this list if more issues come up FILE_PREFIXES="cdefstest" for FP in $FILE_PREFIXES do go tool cgo -cdefs ${FP}.go > ${FP}.h done go build . && ./testcdefs EXIT=$? rm -rf _obj testcdefs *.h exit $EXIT go/misc/cgo/testso0040755000000000000000000000000012412656734014444 5ustar00rootroot00000000000000go/misc/cgo/testso/cgoso.c0100644000000000000000000000045612412656734016003 0ustar00rootroot00000000000000// Copyright 2013 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. #include "_cgo_export.h" #ifdef WIN32 extern void setCallback(void *); void init() { setCallback(goCallback); } #else void init() {} #endif go/misc/cgo/testso/cgoso.go0100644000000000000000000000126212412656734016162 0ustar00rootroot00000000000000// Copyright 2011 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 cgosotest /* // intentionally write the same LDFLAGS differently // to test correct handling of LDFLAGS. #cgo linux LDFLAGS: -L. -lcgosotest #cgo dragonfly LDFLAGS: -L. -l cgosotest #cgo freebsd LDFLAGS: -L. -l cgosotest #cgo openbsd LDFLAGS: -L. -l cgosotest #cgo netbsd LDFLAGS: -L. libcgosotest.so #cgo darwin LDFLAGS: -L. libcgosotest.dylib #cgo windows LDFLAGS: -L. libcgosotest.dll void init(void); void sofunc(void); */ import "C" func Test() { C.init() C.sofunc() } //export goCallback func goCallback() { } go/misc/cgo/testso/cgoso_c.c0100644000000000000000000000137612412656734016307 0ustar00rootroot00000000000000// Copyright 2011 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 ignore #ifdef WIN32 // A Windows DLL is unable to call an arbitrary function in // the main executable. Work around that by making the main // executable pass the callback function pointer to us. void (*goCallback)(void); __declspec(dllexport) void setCallback(void *f) { goCallback = (void (*)())f; } __declspec(dllexport) void sofunc(void); #else extern void goCallback(void); void setCallback(void *f) { (void)f; } #endif // OpenBSD and older Darwin lack TLS support #if !defined(__OpenBSD__) && !defined(__APPLE__) __thread int tlsvar = 12345; #endif void sofunc(void) { goCallback(); } go/misc/cgo/testso/cgoso_unix.go0100644000000000000000000000062012412656734017222 0ustar00rootroot00000000000000// 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 dragonfly freebsd linux netbsd package cgosotest /* extern int __thread tlsvar; int *getTLS() { return &tlsvar; } */ import "C" func init() { if v := *C.getTLS(); v != 12345 { println("got", v) panic("BAD TLS value") } } go/misc/cgo/testso/main.go0100644000000000000000000000035612412656734015777 0ustar00rootroot00000000000000// Copyright 2011 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 ignore package main import "." func main() { cgosotest.Test() } go/misc/cgo/testso/test.bash0100755000000000000000000000100612412656734016336 0ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2011 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. set -e args= dyld_envvar=LD_LIBRARY_PATH ext=so if [ "$(uname)" == "Darwin" ]; then args="-undefined suppress -flat_namespace" dyld_envvar=DYLD_LIBRARY_PATH ext=dylib fi dylib=libcgosotest.$ext $(go env CC) $(go env GOGCCFLAGS) -shared $args -o $dylib cgoso_c.c go build main.go eval "$dyld_envvar"=. ./main rm -rf $dylib main *.dSYM go/misc/cgo/testso/test.bat0100644000000000000000000000063312412656734016171 0ustar00rootroot00000000000000:: Copyright 2013 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. @echo off gcc -c cgoso_c.c gcc -shared -o libcgosotest.dll cgoso_c.o if not exist libcgosotest.dll goto fail go build main.go if not exist main.exe goto fail main.exe goto :end :fail set FAIL=1 :end del /F cgoso_c.o libcgosotest.dll main.exe 2>NUL go/misc/cgo/testtls0040755000000000000000000000000012412656734014625 5ustar00rootroot00000000000000go/misc/cgo/testtls/tls.go0100644000000000000000000000116412412656734016034 0ustar00rootroot00000000000000// Copyright 2013 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 cgotlstest // #include // extern void setTLS(int); // extern int getTLS(); import "C" import ( "runtime" "testing" ) func testTLS(t *testing.T) { runtime.LockOSThread() defer runtime.UnlockOSThread() if val := C.getTLS(); val != 0 { t.Fatalf("at start, C.getTLS() = %#x, want 0", val) } const keyVal = 0x1234 C.setTLS(keyVal) if val := C.getTLS(); val != keyVal { t.Fatalf("at end, C.getTLS() = %#x, want %#x", val, keyVal) } } go/misc/cgo/testtls/tls_test.go0100644000000000000000000000040512412656734017070 0ustar00rootroot00000000000000// Copyright 2013 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 !windows package cgotlstest import "testing" func TestTLS(t *testing.T) { testTLS(t) } go/misc/cgo/testtls/tls_unix.c0100644000000000000000000000042112412656734016707 0ustar00rootroot00000000000000// Copyright 2013 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. #include static __thread int tls; void setTLS(int v) { tls = v; } int getTLS() { return tls; } go/misc/chrome0040755000000000000000000000000012412656734013630 5ustar00rootroot00000000000000go/misc/chrome/gophertool0040755000000000000000000000000012412656734016012 5ustar00rootroot00000000000000go/misc/chrome/gophertool/README.txt0100644000000000000000000000030212412656734017557 0ustar00rootroot00000000000000To install: 1) chrome://extensions/ 2) click "[+] Developer Mode" in top right 3) "Load unpacked extension..." 4) pick $GOROOT/misc/chrome/gophertool Done. It'll now auto-reload from source. go/misc/chrome/gophertool/background.html0100644000000000000000000000041112412656734021067 0ustar00rootroot00000000000000 go/misc/chrome/gophertool/background.js0100644000000000000000000000037712412656734020552 0ustar00rootroot00000000000000chrome.omnibox.onInputEntered.addListener(function(t) { var url = urlForInput(t); if (url) { chrome.tabs.getSelected(null, function(tab) { if (!tab) return; chrome.tabs.update(tab.id, { "url": url, "selected": true }); }); } }); go/misc/chrome/gophertool/gopher.js0100644000000000000000000000201112412656734017702 0ustar00rootroot00000000000000// Copyright 2011 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. var numericRE = /^\d+$/; var commitRE = /^(?:\d+:)?([0-9a-f]{6,20})$/; // e.g "8486:ab29d2698a47" or "ab29d2698a47" var pkgRE = /^[a-z0-9_\/]+$/; function urlForInput(t) { if (!t) { return null; } if (numericRE.test(t)) { if (t < 150000) { return "http://code.google.com/p/go/issues/detail?id=" + t; } return "http://codereview.appspot.com/" + t + "/"; } var match = commitRE.exec(t); if (match) { return "http://code.google.com/p/go/source/detail?r=" + match[1]; } if (pkgRE.test(t)) { // TODO: make this smarter, using a list of packages + substring matches. // Get the list from godoc itself in JSON format? // TODO: prefer localhost:6060 to golang.org if localhost:6060 is responding. return "http://golang.org/pkg/" + t; } return null; } go/misc/chrome/gophertool/gopher.png0100644000000000000000000001272412412656734020066 0ustar00rootroot00000000000000PNG  IHDR00W OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGD pHYs\F\FCAtIME!; IDAThYytT{/Lf2If0H@%DPA[[<pi"XrP#U Y If$޽#$,s_r}Ch 6̌dMiea9}L.utx*K+jY-_oeif|?WK+!R0ךd`rƌ 8]j@+HHLRG@!E i(N;#5IDAGO ǀHx0x-F=W 5 as>?`k$u{~LB(/,+ڍs _ ~q|{QưP;S%X|~~>R'c8]>x>jk$df$O!~4?-Q? obb$f6bV!tu'bCB.c;151RIlY1" C,bt^ 'LcBxjOځ0t8]B Q섉w!d{RJLO݂E {`FƇk/~>nmtpyj6!!!gN##a NFYe-}` 0*>BSS Ѩ%;ɠ'X 9cN0zB((:{S7Vcge \['@EM9Rxb`BeDxb->h x}dMAoiA@023B>_2jAfFr-:Bde@5 \{Mv^F^j7:^L> z"nC c D"/pq>2TxƦLH\m툉 g1h0ժV)A)F5:,3d[T 9x_ BCwV@8biujT" QC?m~8k.nZE竛P@fhH2PJ8>lwZsDҸuλ*ЊF'qjPډ@T"V$ !;"  KA@1ը1ݷܼsn&o(!)}]{ 1e(w )yT,JX{{;$w@ZJ+iiəH?`jBjߎ8sx e̓Ə=}~)T %ZE-k!o9->u`{Iw"6/r   >E@z~^ڸu{v8C)q{M=8/QؑV #Fʱ.go1LJG"S#6TԺszkt'Zw&}Ւy8JO>p  Z% άΣH1!iꯞwkF%آI=`0` GAQ$7e &!ȁݘJ$4 8S l*S &6vxRIicw爏.,ɇ֯P\h⛍t!UbUVA~gy7O!%_&u>[IENDB`go/misc/chrome/gophertool/manifest.json0100644000000000000000000000057212412656734020573 0ustar00rootroot00000000000000{ "name": "Hacking Gopher", "version": "1.0", "manifest_version": 2, "description": "Go Hacking utility", "background": { "page": "background.html" }, "browser_action": { "default_icon": "gopher.png", "default_popup": "popup.html" }, "omnibox": { "keyword": "golang" }, "icons": { "16": "gopher.png" }, "permissions": [ "tabs" ] } go/misc/chrome/gophertool/popup.html0100644000000000000000000000144712412656734020125 0ustar00rootroot00000000000000 issue, codereview, commit, or pkg id/name: Also: buildbots go/misc/chrome/gophertool/popup.js0100644000000000000000000000177412412656734017600 0ustar00rootroot00000000000000function openURL(url) { chrome.tabs.create({ "url": url }) } function addLinks() { var links = document.getElementsByTagName("a"); for (var i = 0; i < links.length; i++) { var url = links[i].getAttribute("url"); if (url) links[i].addEventListener("click", function () { openURL(this.getAttribute("url")); }); } } window.addEventListener("load", function () { addLinks(); console.log("hacking gopher pop-up loaded."); document.getElementById("inputbox").focus(); }); window.addEventListener("submit", function () { console.log("submitting form"); var box = document.getElementById("inputbox"); box.focus(); var t = box.value; if (t == "") { return false; } var success = function(url) { console.log("matched " + t + " to: " + url) box.value = ""; openURL(url); return false; // cancel form submission }; var url = urlForInput(t); if (url) { return success(url); } console.log("no match for text: " + t) return false; }); go/misc/dashboard0040755000000000000000000000000012412656734014302 5ustar00rootroot00000000000000go/misc/dashboard/codereview0040755000000000000000000000000012412656734016436 5ustar00rootroot00000000000000go/misc/dashboard/codereview/app.yaml0100644000000000000000000000060112412656734020153 0ustar00rootroot00000000000000application: gocodereview version: 1 runtime: go api_version: go1 inbound_services: - mail handlers: - url: /static/(.*) static_files: static/\1 upload: static/.* - url: /_ah/mail/.* script: _go_app login: admin - url: /_ah/queue/go/delay script: _go_app login: admin - url: /(gc|update-cl) script: _go_app login: admin - url: /.* script: _go_app login: required go/misc/dashboard/codereview/cron.yaml0100644000000000000000000000007512412656734020341 0ustar00rootroot00000000000000cron: - description: GC url: /gc schedule: every 6 hours go/misc/dashboard/codereview/dashboard0040755000000000000000000000000012412656734020365 5ustar00rootroot00000000000000go/misc/dashboard/codereview/dashboard/cl.go0100644000000000000000000003105612412656734021373 0ustar00rootroot00000000000000// 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 dashboard // This file handles operations on the CL entity kind. import ( "bytes" "encoding/json" "fmt" "html/template" "io" "io/ioutil" "net/http" "net/url" "regexp" "sort" "strings" "time" "appengine" "appengine/datastore" "appengine/taskqueue" "appengine/urlfetch" "appengine/user" ) func init() { http.HandleFunc("/assign", handleAssign) http.HandleFunc("/update-cl", handleUpdateCL) } const codereviewBase = "http://codereview.appspot.com" const gobotBase = "http://research.swtch.com/gobot_codereview" var clRegexp = regexp.MustCompile(`\d+`) // CL represents a code review. type CL struct { Number string // e.g. "5903061" Closed bool Owner string // email address Created, Modified time.Time Description []byte `datastore:",noindex"` FirstLine string `datastore:",noindex"` LGTMs []string NotLGTMs []string LastUpdateBy string // author of most recent review message LastUpdate string `datastore:",noindex"` // first line of most recent review message // Mail information. Subject string `datastore:",noindex"` Recipients []string `datastore:",noindex"` LastMessageID string `datastore:",noindex"` // These are person IDs (e.g. "rsc"); they may be empty Author string Reviewer string } // Reviewed reports whether the reviewer has replied to the CL. // The heuristic is that the CL has been replied to if it is LGTMed // or if the last CL message was from the reviewer. func (cl *CL) Reviewed() bool { if cl.LastUpdateBy == cl.Reviewer { return true } if person := emailToPerson[cl.LastUpdateBy]; person != "" && person == cl.Reviewer { return true } for _, who := range cl.LGTMs { if who == cl.Reviewer { return true } } return false } // DisplayOwner returns the CL's owner, either as their email address // or the person ID if it's a reviewer. It is for display only. func (cl *CL) DisplayOwner() string { if p, ok := emailToPerson[cl.Owner]; ok { return p } return cl.Owner } func (cl *CL) FirstLineHTML() template.HTML { s := template.HTMLEscapeString(cl.FirstLine) // Embolden the package name. if i := strings.Index(s, ":"); i >= 0 { s = "" + s[:i] + "" + s[i:] } return template.HTML(s) } func formatEmails(e []string) template.HTML { x := make([]string, len(e)) for i, s := range e { s = template.HTMLEscapeString(s) if !strings.Contains(s, "@") { s = "" + s + "" } s = `" x[i] = s } return template.HTML(strings.Join(x, ", ")) } func (cl *CL) LGTMHTML() template.HTML { return formatEmails(cl.LGTMs) } func (cl *CL) NotLGTMHTML() template.HTML { return formatEmails(cl.NotLGTMs) } func (cl *CL) ModifiedAgo() string { // Just the first non-zero unit. units := [...]struct { suffix string unit time.Duration }{ {"d", 24 * time.Hour}, {"h", time.Hour}, {"m", time.Minute}, {"s", time.Second}, } d := time.Now().Sub(cl.Modified) for _, u := range units { if d > u.unit { return fmt.Sprintf("%d%s", d/u.unit, u.suffix) } } return "just now" } func handleAssign(w http.ResponseWriter, r *http.Request) { c := appengine.NewContext(r) if r.Method != "POST" { http.Error(w, "Bad method "+r.Method, 400) return } u := user.Current(c) person, ok := emailToPerson[u.Email] if !ok { http.Error(w, "Not allowed", http.StatusUnauthorized) return } n, rev := r.FormValue("cl"), r.FormValue("r") if !clRegexp.MatchString(n) { c.Errorf("Bad CL %q", n) http.Error(w, "Bad CL", 400) return } if _, ok := preferredEmail[rev]; !ok && rev != "" { c.Errorf("Unknown reviewer %q", rev) http.Error(w, "Unknown reviewer", 400) return } key := datastore.NewKey(c, "CL", n, 0, nil) if rev != "" { // Make sure the reviewer is listed in Rietveld as a reviewer. url := codereviewBase + "/" + n + "/fields" resp, err := urlfetch.Client(c).Get(url + "?field=reviewers") if err != nil { c.Errorf("Retrieving CL reviewer list failed: %v", err) http.Error(w, err.Error(), 500) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { c.Errorf("Failed reading body: %v", err) http.Error(w, err.Error(), 500) return } if resp.StatusCode != 200 { c.Errorf("Retrieving CL reviewer list failed: got HTTP response %d\nBody: %s", resp.StatusCode, body) http.Error(w, "Failed contacting Rietveld", 500) return } var apiResp struct { Reviewers []string `json:"reviewers"` } if err := json.Unmarshal(body, &apiResp); err != nil { // probably can't be retried msg := fmt.Sprintf("Malformed JSON from %v: %v", url, err) c.Errorf("%s", msg) http.Error(w, msg, 500) return } found := false for _, r := range apiResp.Reviewers { if emailToPerson[r] == rev { found = true break } } if !found { c.Infof("Adding %v as a reviewer of CL %v", rev, n) url := fmt.Sprintf("%s?cl=%s&r=%s&obo=%s", gobotBase, n, rev, person) resp, err := urlfetch.Client(c).Get(url) if err != nil { c.Errorf("Gobot GET failed: %v", err) http.Error(w, err.Error(), 500) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { c.Errorf("Failed reading Gobot body: %v", err) http.Error(w, err.Error(), 500) return } if resp.StatusCode != 200 { c.Errorf("Gobot GET failed: got HTTP response %d\nBody: %s", resp.StatusCode, body) http.Error(w, "Failed contacting Gobot", 500) return } c.Infof("Gobot said %q", resp.Status) } } // Update our own record. err := datastore.RunInTransaction(c, func(c appengine.Context) error { cl := new(CL) err := datastore.Get(c, key, cl) if err != nil { return err } cl.Reviewer = rev _, err = datastore.Put(c, key, cl) return err }, nil) if err != nil { msg := fmt.Sprintf("Assignment failed: %v", err) c.Errorf("%s", msg) http.Error(w, msg, 500) return } c.Infof("Assigned CL %v to %v", n, rev) } func UpdateCLLater(c appengine.Context, n string, delay time.Duration) { t := taskqueue.NewPOSTTask("/update-cl", url.Values{ "cl": []string{n}, }) t.Delay = delay if _, err := taskqueue.Add(c, t, "update-cl"); err != nil { c.Errorf("Failed adding task: %v", err) } } func handleUpdateCL(w http.ResponseWriter, r *http.Request) { c := appengine.NewContext(r) n := r.FormValue("cl") if !clRegexp.MatchString(n) { c.Errorf("Bad CL %q", n) http.Error(w, "Bad CL", 400) return } if err := updateCL(c, n); err != nil { c.Errorf("Failed updating CL %v: %v", n, err) http.Error(w, "Failed update", 500) return } io.WriteString(w, "OK") } // apiMessage describes the JSON sent back by Rietveld in the CL messages list. type apiMessage struct { Date string `json:"date"` Text string `json:"text"` Sender string `json:"sender"` Recipients []string `json:"recipients"` Approval bool `json:"approval"` } // byDate implements sort.Interface to order the messages by date, earliest first. // The dates are sent in RFC 3339 format, so string comparison matches time value comparison. type byDate []*apiMessage func (x byDate) Len() int { return len(x) } func (x byDate) Swap(i, j int) { x[i], x[j] = x[j], x[i] } func (x byDate) Less(i, j int) bool { return x[i].Date < x[j].Date } // updateCL updates a single CL. If a retryable failure occurs, an error is returned. func updateCL(c appengine.Context, n string) error { c.Debugf("Updating CL %v", n) key := datastore.NewKey(c, "CL", n, 0, nil) url := codereviewBase + "/api/" + n + "?messages=true" resp, err := urlfetch.Client(c).Get(url) if err != nil { return err } defer resp.Body.Close() raw, err := ioutil.ReadAll(resp.Body) if err != nil { return fmt.Errorf("Failed reading HTTP body: %v", err) } // Special case for abandoned CLs. if resp.StatusCode == 404 && bytes.Contains(raw, []byte("No issue exists with that id")) { // Don't bother checking for errors. The CL might never have been saved, for instance. datastore.Delete(c, key) c.Infof("Deleted abandoned CL %v", n) return nil } if resp.StatusCode != 200 { return fmt.Errorf("Update: got HTTP response %d", resp.StatusCode) } var apiResp struct { Description string `json:"description"` Reviewers []string `json:"reviewers"` Created string `json:"created"` OwnerEmail string `json:"owner_email"` Modified string `json:"modified"` Closed bool `json:"closed"` Subject string `json:"subject"` Messages []*apiMessage `json:"messages"` } if err := json.Unmarshal(raw, &apiResp); err != nil { // probably can't be retried c.Errorf("Malformed JSON from %v: %v", url, err) return nil } //c.Infof("RAW: %+v", apiResp) sort.Sort(byDate(apiResp.Messages)) cl := &CL{ Number: n, Closed: apiResp.Closed, Owner: apiResp.OwnerEmail, Description: []byte(apiResp.Description), FirstLine: apiResp.Description, Subject: apiResp.Subject, Author: emailToPerson[apiResp.OwnerEmail], } cl.Created, err = time.Parse("2006-01-02 15:04:05.000000", apiResp.Created) if err != nil { c.Errorf("Bad creation time %q: %v", apiResp.Created, err) } cl.Modified, err = time.Parse("2006-01-02 15:04:05.000000", apiResp.Modified) if err != nil { c.Errorf("Bad modification time %q: %v", apiResp.Modified, err) } if i := strings.Index(cl.FirstLine, "\n"); i >= 0 { cl.FirstLine = cl.FirstLine[:i] } // Treat zero reviewers as a signal that the CL is completed. // This could be after the CL has been submitted, but before the CL author has synced, // but it could also be a CL manually edited to remove reviewers. if len(apiResp.Reviewers) == 0 { cl.Closed = true } lgtm := make(map[string]bool) notLGTM := make(map[string]bool) rcpt := make(map[string]bool) for _, msg := range apiResp.Messages { s, rev := msg.Sender, false if p, ok := emailToPerson[s]; ok { s, rev = p, true } line := firstLine(msg.Text) if line != "" { cl.LastUpdateBy = msg.Sender cl.LastUpdate = line } // CLs submitted by someone other than the CL owner do not immediately // transition to "closed". Let's simulate the intention by treating // messages starting with "*** Submitted as " from a reviewer as a // signal that the CL is now closed. if rev && strings.HasPrefix(msg.Text, "*** Submitted as ") { cl.Closed = true } if msg.Approval { lgtm[s] = true delete(notLGTM, s) // "LGTM" overrules previous "NOT LGTM" } if strings.Contains(line, "NOT LGTM") { notLGTM[s] = true delete(lgtm, s) // "NOT LGTM" overrules previous "LGTM" } for _, r := range msg.Recipients { rcpt[r] = true } } for l := range lgtm { cl.LGTMs = append(cl.LGTMs, l) } for l := range notLGTM { cl.NotLGTMs = append(cl.NotLGTMs, l) } for r := range rcpt { cl.Recipients = append(cl.Recipients, r) } sort.Strings(cl.LGTMs) sort.Strings(cl.NotLGTMs) sort.Strings(cl.Recipients) err = datastore.RunInTransaction(c, func(c appengine.Context) error { ocl := new(CL) err := datastore.Get(c, key, ocl) if err != nil && err != datastore.ErrNoSuchEntity { return err } else if err == nil { // LastMessageID and Reviewer need preserving. cl.LastMessageID = ocl.LastMessageID cl.Reviewer = ocl.Reviewer } _, err = datastore.Put(c, key, cl) return err }, nil) if err != nil { return err } c.Infof("Updated CL %v", n) return nil } // trailingSpaceRE matches trailing spaces. var trailingSpaceRE = regexp.MustCompile(`(?m)[ \t\r]+$`) // removeRE is the list of patterns to skip over at the beginning of a // message when looking for message text. var removeRE = regexp.MustCompile(`(?m-s)\A(` + // Skip leading "Hello so-and-so," generated by codereview plugin. `(Hello(.|\n)*?\n\n)` + // Skip quoted text. `|((On.*|.* writes|.* wrote):\n)` + `|((>.*\n)+)` + // Skip lines with no letters. `|(([^A-Za-z]*\n)+)` + // Skip links to comments and file info. `|(http://codereview.*\n([^ ]+:[0-9]+:.*\n)?)` + `|(File .*:\n)` + `)`, ) // firstLine returns the first interesting line of the message text. func firstLine(text string) string { // Cut trailing spaces. text = trailingSpaceRE.ReplaceAllString(text, "") // Skip uninteresting lines. for { text = strings.TrimSpace(text) m := removeRE.FindStringIndex(text) if m == nil || m[0] != 0 { break } text = text[m[1]:] } // Chop line at newline or else at 74 bytes. i := strings.Index(text, "\n") if i >= 0 { text = text[:i] } if len(text) > 74 { text = text[:70] + "..." } return text } go/misc/dashboard/codereview/dashboard/front.go0100644000000000000000000001572312412656734022130 0ustar00rootroot00000000000000// 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 dashboard // This file handles the front page. import ( "bytes" "html/template" "io" "net/http" "strings" "sync" "time" "appengine" "appengine/datastore" "appengine/user" ) func init() { http.HandleFunc("/", handleFront) http.HandleFunc("/favicon.ico", http.NotFound) } // maximum number of active CLs to show in person-specific tables. const maxCLs = 100 func handleFront(w http.ResponseWriter, r *http.Request) { c := appengine.NewContext(r) data := &frontPageData{ Reviewers: personList, User: user.Current(c).Email, IsAdmin: user.IsAdmin(c), } var currentPerson string u := data.User you := "you" if e := r.FormValue("user"); e != "" { u = e you = e } currentPerson, data.UserIsReviewer = emailToPerson[u] if !data.UserIsReviewer { currentPerson = u } var wg sync.WaitGroup errc := make(chan error, 10) activeCLs := datastore.NewQuery("CL"). Filter("Closed =", false). Order("-Modified") tableFetch := func(index int, f func(tbl *clTable) error) { wg.Add(1) go func() { defer wg.Done() start := time.Now() if err := f(&data.Tables[index]); err != nil { errc <- err } data.Timing[index] = time.Now().Sub(start) }() } data.Tables[0].Title = "CLs assigned to " + you + " for review" if data.UserIsReviewer { tableFetch(0, func(tbl *clTable) error { q := activeCLs.Filter("Reviewer =", currentPerson).Limit(maxCLs) tbl.Assignable = true _, err := q.GetAll(c, &tbl.CLs) return err }) } tableFetch(1, func(tbl *clTable) error { q := activeCLs if data.UserIsReviewer { q = q.Filter("Author =", currentPerson) } else { q = q.Filter("Owner =", currentPerson) } q = q.Limit(maxCLs) tbl.Title = "CLs sent by " + you tbl.Assignable = true _, err := q.GetAll(c, &tbl.CLs) return err }) tableFetch(2, func(tbl *clTable) error { q := activeCLs.Limit(50) tbl.Title = "Other active CLs" tbl.Assignable = true if _, err := q.GetAll(c, &tbl.CLs); err != nil { return err } // filter for i := len(tbl.CLs) - 1; i >= 0; i-- { cl := tbl.CLs[i] if cl.Owner == currentPerson || cl.Author == currentPerson || cl.Reviewer == currentPerson { // Preserve order. copy(tbl.CLs[i:], tbl.CLs[i+1:]) tbl.CLs = tbl.CLs[:len(tbl.CLs)-1] } } return nil }) tableFetch(3, func(tbl *clTable) error { q := datastore.NewQuery("CL"). Filter("Closed =", true). Order("-Modified"). Limit(10) tbl.Title = "Recently closed CLs" tbl.Assignable = false _, err := q.GetAll(c, &tbl.CLs) return err }) // Not really a table fetch. tableFetch(0, func(_ *clTable) error { var err error data.LogoutURL, err = user.LogoutURL(c, "/") return err }) wg.Wait() select { case err := <-errc: c.Errorf("%v", err) http.Error(w, err.Error(), http.StatusInternalServerError) return default: } var b bytes.Buffer if err := frontPage.ExecuteTemplate(&b, "front", &data); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } io.Copy(w, &b) } type frontPageData struct { Tables [4]clTable Timing [4]time.Duration Reviewers []string UserIsReviewer bool User, LogoutURL string // actual logged in user IsAdmin bool } type clTable struct { Title string Assignable bool CLs []*CL } var frontPage = template.Must(template.New("front").Funcs(template.FuncMap{ "selected": func(a, b string) string { if a == b { return "selected" } return "" }, "shortemail": func(s string) string { if i := strings.Index(s, "@"); i >= 0 { s = s[:i] } return s }, }).Parse(` Go code reviews

Go code reviews

{{range $i, $tbl := .Tables}} {{if .CLs}} {{range $cl := .CLs}} {{end}} {{else}} {{end}} {{end}}

{{$tbl.Title}}

{{if $tbl.Assignable}} {{end}} {{.Number}}: {{.FirstLineHTML}} {{if and .LGTMs $tbl.Assignable}}
LGTMs: {{.LGTMHTML}}{{end}} {{if and .NotLGTMs $tbl.Assignable}}
NOT LGTMs: {{.NotLGTMHTML}}{{end}} {{if .LastUpdateBy}}
({{.LastUpdateBy | shortemail}}) {{.LastUpdate}}{{end}}
{{.ModifiedAgo}} {{if $.IsAdmin}}{{end}}
none

You are · logout
datastore timing: {{range .Timing}} {{.}}{{end}}
`)) go/misc/dashboard/codereview/dashboard/gc.go0100644000000000000000000000212112412656734021355 0ustar00rootroot00000000000000// 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 dashboard // This file handles garbage collection of old CLs. import ( "net/http" "time" "appengine" "appengine/datastore" ) func init() { http.HandleFunc("/gc", handleGC) } func handleGC(w http.ResponseWriter, r *http.Request) { c := appengine.NewContext(r) // Delete closed CLs that haven't been modified in 168 hours (7 days). cutoff := time.Now().Add(-168 * time.Hour) q := datastore.NewQuery("CL"). Filter("Closed =", true). Filter("Modified <", cutoff). Limit(100). KeysOnly() keys, err := q.GetAll(c, nil) if err != nil { c.Errorf("GetAll failed for old CLs: %v", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } if len(keys) == 0 { return } if err := datastore.DeleteMulti(c, keys); err != nil { c.Errorf("DeleteMulti failed for old CLs: %v", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } c.Infof("Deleted %d old CLs", len(keys)) } go/misc/dashboard/codereview/dashboard/mail.go0100644000000000000000000000312112412656734021707 0ustar00rootroot00000000000000// 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 dashboard // This file handles receiving mail. import ( "net/http" "net/mail" "regexp" "time" "appengine" "appengine/datastore" ) func init() { http.HandleFunc("/_ah/mail/", handleMail) } var subjectRegexp = regexp.MustCompile(`.*code review (\d+):.*`) func handleMail(w http.ResponseWriter, r *http.Request) { c := appengine.NewContext(r) defer r.Body.Close() msg, err := mail.ReadMessage(r.Body) if err != nil { c.Errorf("mail.ReadMessage: %v", err) return } subj := msg.Header.Get("Subject") m := subjectRegexp.FindStringSubmatch(subj) if len(m) != 2 { c.Debugf("Subject %q did not match /%v/", subj, subjectRegexp) return } c.Infof("Found issue %q", m[1]) // Track the MessageID. key := datastore.NewKey(c, "CL", m[1], 0, nil) err = datastore.RunInTransaction(c, func(c appengine.Context) error { cl := new(CL) err := datastore.Get(c, key, cl) if err != nil && err != datastore.ErrNoSuchEntity { return err } if err == datastore.ErrNoSuchEntity { // Must set sentinel values for time.Time fields // if this is a new entity. cl.Created = time.Unix(0, 0) cl.Modified = time.Unix(0, 0) } cl.LastMessageID = msg.Header.Get("Message-ID") _, err = datastore.Put(c, key, cl) return err }, nil) if err != nil { c.Errorf("datastore transaction failed: %v", err) } // Update the CL after a delay to give Rietveld a chance to catch up. UpdateCLLater(c, m[1], 10*time.Second) } go/misc/dashboard/codereview/dashboard/people.go0100644000000000000000000000274112412656734022260 0ustar00rootroot00000000000000// 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 dashboard // This file handles identities of people. import ( "sort" ) var ( emailToPerson = make(map[string]string) // email => person preferredEmail = make(map[string]string) // person => email personList []string ) func init() { // People we assume have golang.org and google.com accounts, // and prefer to use their golang.org address for code review. gophers := [...]string{ "adg", "agl", "bradfitz", "campoy", "cshapiro", "dsymonds", "gri", "iant", "khr", "mpvl", "nigeltao", "r", "rsc", "sameer", } for _, p := range gophers { personList = append(personList, p) emailToPerson[p+"@golang.org"] = p emailToPerson[p+"@google.com"] = p preferredEmail[p] = p + "@golang.org" } // Other people. others := map[string]string{ "adonovan": "adonovan@google.com", "brainman": "alex.brainman@gmail.com", "ality": "ality@pbrane.org", "dfc": "dave@cheney.net", "dvyukov": "dvyukov@google.com", "gustavo": "gustavo@niemeyer.net", "jsing": "jsing@google.com", "mikio": "mikioh.mikioh@gmail.com", "minux": "minux.ma@gmail.com", "remy": "remyoudompheng@gmail.com", "rminnich": "rminnich@gmail.com", } for p, e := range others { personList = append(personList, p) emailToPerson[e] = p preferredEmail[p] = e } sort.Strings(personList) } go/misc/dashboard/codereview/index.yaml0100644000000000000000000000052212412656734020504 0ustar00rootroot00000000000000indexes: - kind: CL properties: - name: Author - name: Modified direction: desc - kind: CL properties: - name: Owner - name: Modified direction: desc - kind: CL properties: - name: Closed - name: Modified direction: desc - kind: CL properties: - name: Reviewer - name: Modified direction: desc go/misc/dashboard/codereview/queue.yaml0100644000000000000000000000006712412656734020525 0ustar00rootroot00000000000000queue: - name: update-cl rate: 12/m bucket_size: 1 go/misc/dashboard/codereview/static0040755000000000000000000000000012412656734017725 5ustar00rootroot00000000000000go/misc/dashboard/codereview/static/gopherstamp.jpg0100644000000000000000000004114412412656734023040 0ustar00rootroot00000000000000JFIFXXICC_PROFILEADBEprtrGRAYXYZ acspAPPLnone-ADBEcprt2descgwtpt\bkptpkTRC textCopyright 1999 Adobe Systems Incorporateddesc Dot Gain 20%XYZ -XYZ curv 0@PaDuRY9.9W" a A )   ,Ee$W2xov'D !q"."#$p%4%&'(U)")*+,e-:../01}2\3=4556789:~;m<^=Q>E?;@3A,B&C"D EF G#H'I-J4K}h>8?d쳩|Fmƾ);\ʶ2 elNF9oaO_/xX7Tι/5u.V NU0RWmFFiw((((() I$:^e '/y?oOBF@+Wv>#L.olHd-{hfb=_)~?hw^qீcnn/C`4m d:2GAk) ɢfhvr]k?NZ#dy?joKÿ>7~z|>^mZxSe}!Xf' uRs[no *Ie;YD獏YAS z?aA@$_Fe= H斐IWj"~"|R5YcgK9_V||>&xs_bBڤ&$c#c`ǸȢ(((xmiHbQgl_+|F?f߅>+G;l&A4⼯C~Nj4Y|g>+k>4yg-ŸvR$-I݂8 c>>8އxš5"M.()y#vo kH RRym&PL滈)FxN+ͼoĘeO|+ĒyGEVg]` +O<]Uekۛ7\2}k  >0|zq;t$`fpyOG' 6v1P,|?&L%Ϋ\?wb@8@[?uo ]i>%Yo! XgTԁ62b"jf3'[k8'w!}aErih(5׈|Y.i=M~Dx7/(7|dh|E)HNY~A6`"fb~ <j'>!@M$prp?';ɾ$;&4._8l$_$++B:*Tk/í·kM|4{ lv3σt˄+7M}{8_@ zo!ᵻ5ΛErwaؙ}h((/kZ~!7˻}V?_%ƞ<*$QW;ÿa;CŲ:Ԥ47s(ip (>"um{R8-,^y( Xzp+w?qy~ܚ9N_t-u\ǫ4*8t?VVZA k8@7;c1=)_OIkv:-%*ҿ9n~ MoKֵ@跞"hcȸ ¾!$F|Z/ 1]o.fP9;K~vzƱ~,PPo4dh@~n*W#qsX);kKƞo YI2BЛF[o%f%)?z?,e0kԗɾxex8FA+޴Q^q#s~SJkqmjrǗI !p 7U~? g=Q<9(Mgdiz}㍷*;J؎ JawuO?U'g/x nh0^n.c,VeP̑+k:+YhSAtQE \r~4QEQ_S3|CIKkGGߙX#c'6>,]Iuw;X< <[>0GH+ey\\*Vu;3A<vz<1OZ HFXcL{PA$$FUKDb2)*EuP2w Y~: /'Vkî@^5v$g8~ w>;Xx<7WAe߁)i&lz1$AmɌw_>+c~.l?jVų0\+r1_Ξ//VkgcRj? KMOX1p^X$!:gk}kEQEQE~sM4N'L[E66^ y+ nq9nG imk~ikY@/f"3*^] p~e"OMZMd38|yYNjM?Nye6 rz}~2j> // R].9RTq0CXZV㼱Lm6ܧE~q~׺ſ e=PU5Ehˋ=C+brAY R.I _h_G߂xğ3 m' `sBR:W^*p~-bO2Id"- l\ܛY"VoR:n+3ֱ|W1곘NE1%ˣaCqGˁ-V 6Tio-⺒S!c#°$τ?!Ϧ/5t& YdEã)Ix_=.Ea;oi$j7@}k$Jq|A W j4~b~S^;ǿZ܋ȵ? O&%s^ET7ŔGR gB?׌ ˦WN#!cppǓ~~(е.,5+YCFV@C29#oG{\Q9Yu }Los',Oɏ.|non2u.z01_%߲ڗRxVtm~&V?ߍ$2 ~]Z >,xCR?/Yh|6sdЖQc|2]şM~<2Gn dN?<=y= \<d9_tzkkK_  P6G\t(|Q-*[s׻aqcqm,|$ =}EQEQEW7źv㯀捦sj;-`qʱykFӃ\KO#C(:[vѣB@88f(b whUx_~dcx9hY7#AP%X4K۟>DHZێ;䁏S_=x퉤|F4 ~R7VqB5e[wf H, K)Hlw9ryk_^wO V$IӡX(UEW5૟&J9Z]ˆ\p Gj;QEQER5[i?m_'|Qe;>q\R3V?g? 5~ xSW}6}nOiyknӈ 6 >|4<7 nj=iPY ]WN $ӞkO؟O-uK]Jك[BI>FF:5Zom VX8&gG쿧^GUoMnׄXoCpxݴq>3xd3a'~/JmR4|I"n>аPC( "+ګX}B_4 6/g"1j' ^PgZ^V49R=BwQEH:| $m7S|C{.Dphm?{WQEQETS!SQj"[~*MO3Ns-1DE}ފ(eVRa?_";X_ͼ|$mU/ Axsl? 塷՞O3Kvq>n85l/$m?' H̼T$`}c1^Uч@zn8)Q<'DŽ|E Q -bynw `c^NZ~Жi+t@R"pv rq8|z-;J˂] QE_ ]k46I&hmЯ,jڲod$t_tQEQEQ\5Hto .Ye(pU $~U?{5A5΁;h+os3Ҿ(ox#8O|3xLmYC~"v+KhY#vDx(O5[{fρ>xi7QU]=d'YAێcjEQEQEQEW_όcKgFZɑ9e =k74u|0j|$֛j f rŚyfP!$A:`cQEQGz(_SO'w$|Aeh.⅁l+/0%ýR:לVw4Rc()-Wc~~k7/.s$rFҎ9"H }?4&5;xz*"P?ZQEQEyo_ |&Ȇ`ZR>@7Yb/?hM/}׍O|=ԧM7LMkr:U7EA((!09q_~|SG #WBsOmg^ H,**Xzß_p~ǿWԼsj &41]h7"V#p'a?{_uxmω<IJ^DSG+c {/ Nq%mu+;HB ~W_{`) u-EC,^@[*n@2e1.+>;[tr }QGz((ҿ4BOĵ)" jVa \@8+t(x}S 7m?6Z6`:'-:MsA;k-'¾P9|y) 4/K1{_Zby`bsĭ+$ࡿ<o)G/Z >%X_umܐb"RVƩa>h0G:ܹ_Wmt'^壋P,mhXGGD5JTrjϹdͼ຾./ Se[Bܘ.[cϓ}k [n?HV g[O =1ڸ#%e1@bTu4@񴈠T qS~eQTm5=;P[Y|P;[8>QEQE):J{: kD76wiRAydS ?NJ((_0Ҿ _|=̲ "[(?ٰݐqv_7'  4mWݏ)9B ۟wL_._Kc8S:0ވLI&3#q~>?ਗ਼GO^0x|)i%Մ {(e60EVybo|D?K?|O|C川kg/32!`|4 |EG$U '`e^WSx 1ỉ5kJ) K+ll­ѷkkc+lku>ILh;T |_xNj +đ^a2LA ) >,"D~6k=XLiy bz(_wkbXnbi&"I'^[dzQ<+Xa z/l|{G|kԨEb_rwymyJH lIQW)h(_>;?fdEi1t|(X>a^MOwᖛ?}q1l)w ʊO@W?vwlÝA%g+`8#4_%w|{j"G>bx߱[P1U|wVk_:/Ÿx61\&m予rw)q^4bXM!k}g~ҭO 6mae"Eͯښk/OEXydsWLUNGpK^^uSJZݞcn$Fe1SʐkV^"{-~+<7Oa1`rNHb~,I|),5Zo%vRG"|IA Gx /m3LIElV5Y#O$1&SAsR=Ǐ:Dmٶ̋w$_+~ӟ?O uazxZLw3jYĞe˧!E Tc5~AxWIlMN(W>.CIm0e5eml 1cu>nXvwJӬ4 iVkglZ[»R(B EQE~xq-gbm$Q'>+X$K;lc8hjM+P7 ټyϒ989aB7Έ\Z -`B[ί8O4l728A`ּ?k8#o euXw,WW\Aa9 |B{#@EM}r1ֿ3 C3SsFkfW4y;Kv8~m}l)aAU^:qҜ+_֯??TO?.ᛍ᎑ouIci%Ėf$WY~r"S_P @ ?_>%} d(kXm$ >Òcoyk_/k͊ҒGmԅs_?"?e?CҘxJ@O'Q(GZ{ kJ8VKӎolm|xCm`Az_XOσ5idM[¶s(WۂA8t(,k9jh9(|5qIM~G+d]Ǧ7:#oP3^O׀-wj27P, lR9/zwR)?8sKGZSu a`B+n60D$OZ4Fw y5AjR述J:=~0|/x J{/_ZQ $;u?mx_dƟngN 1b@_8uo|{x⦲ڼ&gd>K8@a23OZ p+ ~?~He(k0y|]mhs 3UeeK;fS߷7G_Rƿ;(9P +a$S| .WYM7vd?ÜÌ+T=R,䷽k*WpA=<V4=#L/(ie-9ە#5 DjnF4~k\N6$(N1_{'/ڃ#:/m`d]c !׽QEQ^aAGwy3˓0 }k&.u5ЙM1 \3XtlWQEW/ 3<4񟗒6;C}мb]?![ B46Xe8!s~|ho/7tX}_Yݕ<&UA9ʿ+P~/XK4eɁwU#o~~qIw/#i ""8O`k ĞxZGI< kWZgd*pd,#\pq~tڃ\ <9j?ŚtzşF\;&۰n!PZҥݴbz2AFNx..ż(X P?:wv%h'?*cd8eO|t w^'SVvB}{3vHU?tKW%Q>e ^w`:u~PDO)}3^|Iῃ,ġ혔-Zp+u|:O /&KH$3N'tW#/@ڍI"_} xv~Ⱥ. Aʙ̸8##q8^Ӡ =[k2NulOkIJF ldtU@vQE7lK۸WxÂ&P6w+߂=BodžbpCF1 !~G_ZQEQFy5^Kkb9*GC ySi$7B(tpwnB4$H_jT.vV71su9v+Q=+G/*- WѼIhlGa*hјӂ <m/x]𽿆5FNZrI>h6I{'߈8|I<=f#vMw$hO*.;'90"~i5:2Aj-` p1q^k u64 'ҵK5{ڏY#M % Ǩ^<)h((f7|E/kK+t6lu.@U#Woy_kkA5ȕS&&%V\|u#un>Sڛ|G1uoVR5՟4rm"qFfg_ٻ>6YC36+#D{0VV 6/QEQEwč#'߈:Kv'h= h;ƖW޿uԖ[*IRkn$ri]r- K )?Gd}u>:S{ .>) Oq(8%$RIyʷ߲uۗ62HE;[8ܙ$SE<"HdIPe9(($W_|ikZ׎!;gphpCg,B|,tx_ۗvn5/5W/ ;Crx r2r4Rv( ~uhR~8Y};x/WQ_`K3$+/,OZm)GM~Z5Ҷ~IAI=q?fO2~_7R4rxwÞ_6JGµN3ɔ NI<~EQEQEO'$~/5"ZHۤGH@R݆Oٗ~͞7:e Q脬2(E܎{Z^xI%5uy6"@N E|f%$ ı__!'͏8gO2mdVc,n$!q*JZ((((}@|OG@,o0۹ :E|%72V]D@kj i~Bydl [yO5sKo%}=ĈE}~GK0@N;{pp1ޫ^YjZlw)Ya0A9(~G[|xj.v^ s ~ |-CNm?ih<260uR߅~8^(Om & j~Ҷ^7r!N _Bkw@Z4LQ=)nxv#@%0Ñȯ~jU>#|!*m.][,d$j+~v:ף?[KڣYT$rqKcc)yi{2Km5MHذYXE l[i U2 ו~Ŀ3hoګZj3{IJ]Rp€@;eciiVVV$jҭEQEQEQEQEQEI-o _cedž %KHdR$|kԽд+xš߈{lQ*wUGeC($3([95ʺGJM5(,y6?`"DQ^3i߰ !O|N`iIrHNJ$bފG&_m+hq:NalƀwZ(((((((+W΃k? džKik͔IW.;>PA&ZoB3Cpڬj`_-'įKOԼWV{ۨ2F_p[c(((((((WFuLt=SN6kkđ ^ ?g7# |o/uoG Fz(I==IEQEQEQEQEQE#0T,:KEQEQEQEQEQEQEQEQEQEQEQEQEgo/misc/dashboard/codereview/static/icon.png0100644000000000000000000000063412412656734021442 0ustar00rootroot00000000000000PNG  IHDRacIDATx=/A9xh$H(qBPzѨE#oA DTݭְWw|S->%i0 `XT`3)N܀ȯMaZkZ^qq7 9ы) >Q޵fx X\\щV)phƄX½7ХsT>t*j 5.ؾgw{ĞKZՇ6pGA-&B6A7MZ;0E}BYlq|g;D1]hЎͳm1O3A,i^mtw_QyIENDB`go/misc/emacs0040755000000000000000000000000012412656737013446 5ustar00rootroot00000000000000go/misc/emacs/go-mode-load.el0100644000000000000000000000561512412656737016317 0ustar00rootroot00000000000000;;; go-mode-load.el --- automatically extracted autoloads ;;; Commentary: ;; To install go-mode, add the following lines to your .emacs file: ;; (add-to-list 'load-path "PATH CONTAINING go-mode-load.el" t) ;; (require 'go-mode-load) ;; ;; After this, go-mode will be used for files ending in '.go'. ;; ;; To compile go-mode from the command line, run the following ;; emacs -batch -f batch-byte-compile go-mode.el ;; ;; See go-mode.el for documentation. ;; ;; To update this file, evaluate the following form ;; (let ((generated-autoload-file buffer-file-name)) (update-file-autoloads "go-mode.el")) ;;; Code: ;;;### (autoloads (go-download-play godoc gofmt-before-save go-mode) ;;;;;; "go-mode" "go-mode.el" (20767 50749)) ;;; Generated autoloads from go-mode.el (autoload 'go-mode "go-mode" "\ Major mode for editing Go source text. This mode provides (not just) basic editing capabilities for working with Go code. It offers almost complete syntax highlighting, indentation that is almost identical to gofmt, proper parsing of the buffer content to allow features such as navigation by function, manipulation of comments or detection of strings. Additionally to these core features, it offers various features to help with writing Go code. You can directly run buffer content through gofmt, read godoc documentation from within Emacs, modify and clean up the list of package imports or interact with the Playground (uploading and downloading pastes). The following extra functions are defined: - `gofmt' - `godoc' - `go-import-add' - `go-remove-unused-imports' - `go-goto-imports' - `go-play-buffer' and `go-play-region' - `go-download-play' If you want to automatically run `gofmt' before saving a file, add the following hook to your emacs configuration: \(add-hook 'before-save-hook 'gofmt-before-save) If you're looking for even more integration with Go, namely on-the-fly syntax checking, auto-completion and snippets, it is recommended to look at goflymake \(https://github.com/dougm/goflymake), gocode \(https://github.com/nsf/gocode) and yasnippet-go \(https://github.com/dominikh/yasnippet-go) \(fn)" t nil) (add-to-list 'auto-mode-alist (cons "\\.go\\'" 'go-mode)) (autoload 'gofmt-before-save "go-mode" "\ Add this to .emacs to run gofmt on the current buffer when saving: (add-hook 'before-save-hook 'gofmt-before-save). Note that this will cause go-mode to get loaded the first time you save any file, kind of defeating the point of autoloading. \(fn)" t nil) (autoload 'godoc "go-mode" "\ Show go documentation for a query, much like M-x man. \(fn QUERY)" t nil) (autoload 'go-download-play "go-mode" "\ Downloads a paste from the playground and inserts it in a Go buffer. Tries to look for a URL at point. \(fn URL)" t nil) ;;;*** (provide 'go-mode-load) ;; Local Variables: ;; version-control: never ;; no-byte-compile: t ;; no-update-autoloads: t ;; coding: utf-8 ;; End: ;;; go-mode-load.el ends here go/misc/emacs/go-mode.el0100644000000000000000000013461712412656737015407 0ustar00rootroot00000000000000;;; go-mode.el --- Major mode for the Go programming language ;; Copyright 2013 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. (require 'cl) (require 'etags) (require 'ffap) (require 'find-file) (require 'ring) (require 'url) ;; XEmacs compatibility guidelines ;; - Minimum required version of XEmacs: 21.5.32 ;; - Feature that cannot be backported: POSIX character classes in ;; regular expressions ;; - Functions that could be backported but won't because 21.5.32 ;; covers them: plenty. ;; - Features that are still partly broken: ;; - godef will not work correctly if multibyte characters are ;; being used ;; - Fontification will not handle unicode correctly ;; ;; - Do not use \_< and \_> regexp delimiters directly; use ;; go--regexp-enclose-in-symbol ;; ;; - The character `_` must not be a symbol constituent but a ;; character constituent ;; ;; - Do not use process-lines ;; ;; - Use go--old-completion-list-style when using a plain list as the ;; collection for completing-read ;; ;; - Use go--kill-whole-line instead of kill-whole-line (called ;; kill-entire-line in XEmacs) ;; ;; - Use go--position-bytes instead of position-bytes (defmacro go--xemacs-p () `(featurep 'xemacs)) (defalias 'go--kill-whole-line (if (fboundp 'kill-whole-line) #'kill-whole-line #'kill-entire-line)) ;; Delete the current line without putting it in the kill-ring. (defun go--delete-whole-line (&optional arg) ;; Emacs uses both kill-region and kill-new, Xemacs only uses ;; kill-region. In both cases we turn them into operations that do ;; not modify the kill ring. This solution does depend on the ;; implementation of kill-line, but it's the only viable solution ;; that does not require to write kill-line from scratch. (flet ((kill-region (beg end) (delete-region beg end)) (kill-new (s) ())) (go--kill-whole-line arg))) ;; declare-function is an empty macro that only byte-compile cares ;; about. Wrap in always false if to satisfy Emacsen without that ;; macro. (if nil (declare-function go--position-bytes "go-mode" (point))) ;; XEmacs unfortunately does not offer position-bytes. We can fall ;; back to just using (point), but it will be incorrect as soon as ;; multibyte characters are being used. (if (fboundp 'position-bytes) (defalias 'go--position-bytes #'position-bytes) (defun go--position-bytes (point) point)) (defun go--old-completion-list-style (list) (mapcar (lambda (x) (cons x nil)) list)) ;; GNU Emacs 24 has prog-mode, older GNU Emacs and XEmacs do not, so ;; copy its definition for those. (if (not (fboundp 'prog-mode)) (define-derived-mode prog-mode fundamental-mode "Prog" "Major mode for editing source code." (set (make-local-variable 'require-final-newline) mode-require-final-newline) (set (make-local-variable 'parse-sexp-ignore-comments) t) (setq bidi-paragraph-direction 'left-to-right))) (defun go--regexp-enclose-in-symbol (s) ;; XEmacs does not support \_<, GNU Emacs does. In GNU Emacs we make ;; extensive use of \_< to support unicode in identifiers. Until we ;; come up with a better solution for XEmacs, this solution will ;; break fontification in XEmacs for identifiers such as "typeµ". ;; XEmacs will consider "type" a keyword, GNU Emacs won't. (if (go--xemacs-p) (concat "\\<" s "\\>") (concat "\\_<" s "\\_>"))) ;; Move up one level of parentheses. (defun go-goto-opening-parenthesis (&optional legacy-unused) ;; The old implementation of go-goto-opening-parenthesis had an ;; optional argument to speed up the function. It didn't change the ;; function's outcome. ;; Silently fail if there's no matching opening parenthesis. (condition-case nil (backward-up-list) (scan-error nil))) (defconst go-dangling-operators-regexp "[^-]-\\|[^+]\\+\\|[/*&><.=|^]") (defconst go-identifier-regexp "[[:word:][:multibyte:]]+") (defconst go-label-regexp go-identifier-regexp) (defconst go-type-regexp "[[:word:][:multibyte:]*]+") (defconst go-func-regexp (concat (go--regexp-enclose-in-symbol "func") "\\s *\\(" go-identifier-regexp "\\)")) (defconst go-func-meth-regexp (concat (go--regexp-enclose-in-symbol "func") "\\s *\\(?:(\\s *" "\\(" go-identifier-regexp "\\s +\\)?" go-type-regexp "\\s *)\\s *\\)?\\(" go-identifier-regexp "\\)(")) (defconst go-builtins '("append" "cap" "close" "complex" "copy" "delete" "imag" "len" "make" "new" "panic" "print" "println" "real" "recover") "All built-in functions in the Go language. Used for font locking.") (defconst go-mode-keywords '("break" "default" "func" "interface" "select" "case" "defer" "go" "map" "struct" "chan" "else" "goto" "package" "switch" "const" "fallthrough" "if" "range" "type" "continue" "for" "import" "return" "var") "All keywords in the Go language. Used for font locking.") (defconst go-constants '("nil" "true" "false" "iota")) (defconst go-type-name-regexp (concat "\\(?:[*(]\\)*\\(?:" go-identifier-regexp "\\.\\)?\\(" go-identifier-regexp "\\)")) (defvar go-dangling-cache) (defvar go-godoc-history nil) (defvar go--coverage-current-file-name) (defgroup go nil "Major mode for editing Go code" :group 'languages) (defgroup go-cover nil "Options specific to `cover`" :group 'go) (defcustom go-fontify-function-calls t "Fontify function and method calls if this is non-nil." :type 'boolean :group 'go) (defcustom go-mode-hook nil "Hook called by `go-mode'." :type 'hook :group 'go) (defcustom go-command "go" "The 'go' command. Some users have multiple Go development trees and invoke the 'go' tool via a wrapper that sets GOROOT and GOPATH based on the current directory. Such users should customize this variable to point to the wrapper script." :type 'string :group 'go) (defcustom gofmt-command "gofmt" "The 'gofmt' command. Some users may replace this with 'goimports' from https://github.com/bradfitz/goimports." :type 'string :group 'go) (defcustom go-other-file-alist '(("_test\\.go\\'" (".go")) ("\\.go\\'" ("_test.go"))) "See the documentation of `ff-other-file-alist' for details." :type '(repeat (list regexp (choice (repeat string) function))) :group 'go) (defface go-coverage-untracked '((t (:foreground "#505050"))) "Coverage color of untracked code." :group 'go-cover) (defface go-coverage-0 '((t (:foreground "#c00000"))) "Coverage color for uncovered code." :group 'go-cover) (defface go-coverage-1 '((t (:foreground "#808080"))) "Coverage color for covered code with weight 1." :group 'go-cover) (defface go-coverage-2 '((t (:foreground "#748c83"))) "Coverage color for covered code with weight 2." :group 'go-cover) (defface go-coverage-3 '((t (:foreground "#689886"))) "Coverage color for covered code with weight 3." :group 'go-cover) (defface go-coverage-4 '((t (:foreground "#5ca489"))) "Coverage color for covered code with weight 4." :group 'go-cover) (defface go-coverage-5 '((t (:foreground "#50b08c"))) "Coverage color for covered code with weight 5." :group 'go-cover) (defface go-coverage-6 '((t (:foreground "#44bc8f"))) "Coverage color for covered code with weight 6." :group 'go-cover) (defface go-coverage-7 '((t (:foreground "#38c892"))) "Coverage color for covered code with weight 7." :group 'go-cover) (defface go-coverage-8 '((t (:foreground "#2cd495"))) "Coverage color for covered code with weight 8. For mode=set, all covered lines will have this weight." :group 'go-cover) (defface go-coverage-9 '((t (:foreground "#20e098"))) "Coverage color for covered code with weight 9." :group 'go-cover) (defface go-coverage-10 '((t (:foreground "#14ec9b"))) "Coverage color for covered code with weight 10." :group 'go-cover) (defface go-coverage-covered '((t (:foreground "#2cd495"))) "Coverage color of covered code." :group 'go-cover) (defvar go-mode-syntax-table (let ((st (make-syntax-table))) (modify-syntax-entry ?+ "." st) (modify-syntax-entry ?- "." st) (modify-syntax-entry ?% "." st) (modify-syntax-entry ?& "." st) (modify-syntax-entry ?| "." st) (modify-syntax-entry ?^ "." st) (modify-syntax-entry ?! "." st) (modify-syntax-entry ?= "." st) (modify-syntax-entry ?< "." st) (modify-syntax-entry ?> "." st) (modify-syntax-entry ?/ (if (go--xemacs-p) ". 1456" ". 124b") st) (modify-syntax-entry ?* ". 23" st) (modify-syntax-entry ?\n "> b" st) (modify-syntax-entry ?\" "\"" st) (modify-syntax-entry ?\' "\"" st) (modify-syntax-entry ?` "\"" st) (modify-syntax-entry ?\\ "\\" st) ;; It would be nicer to have _ as a symbol constituent, but that ;; would trip up XEmacs, which does not support the \_< anchor (modify-syntax-entry ?_ "w" st) st) "Syntax table for Go mode.") (defun go--build-font-lock-keywords () ;; we cannot use 'symbols in regexp-opt because GNU Emacs <24 ;; doesn't understand that (append `((,(go--regexp-enclose-in-symbol (regexp-opt go-mode-keywords t)) . font-lock-keyword-face) (,(concat "\\(" (go--regexp-enclose-in-symbol (regexp-opt go-builtins t)) "\\)[[:space:]]*(") 1 font-lock-builtin-face) (,(go--regexp-enclose-in-symbol (regexp-opt go-constants t)) . font-lock-constant-face) (,go-func-regexp 1 font-lock-function-name-face)) ;; function (not method) name (if go-fontify-function-calls `((,(concat "\\(" go-identifier-regexp "\\)[[:space:]]*(") 1 font-lock-function-name-face) ;; function call/method name (,(concat "[^[:word:][:multibyte:]](\\(" go-identifier-regexp "\\))[[:space:]]*(") 1 font-lock-function-name-face)) ;; bracketed function call `((,go-func-meth-regexp 2 font-lock-function-name-face))) ;; method name `( ("\\(`[^`]*`\\)" 1 font-lock-multiline) ;; raw string literal, needed for font-lock-syntactic-keywords (,(concat (go--regexp-enclose-in-symbol "type") "[[:space:]]+\\([^[:space:]]+\\)") 1 font-lock-type-face) ;; types (,(concat (go--regexp-enclose-in-symbol "type") "[[:space:]]+" go-identifier-regexp "[[:space:]]*" go-type-name-regexp) 1 font-lock-type-face) ;; types (,(concat "[^[:word:][:multibyte:]]\\[\\([[:digit:]]+\\|\\.\\.\\.\\)?\\]" go-type-name-regexp) 2 font-lock-type-face) ;; Arrays/slices (,(concat "\\(" go-identifier-regexp "\\)" "{") 1 font-lock-type-face) (,(concat (go--regexp-enclose-in-symbol "map") "\\[[^]]+\\]" go-type-name-regexp) 1 font-lock-type-face) ;; map value type (,(concat (go--regexp-enclose-in-symbol "map") "\\[" go-type-name-regexp) 1 font-lock-type-face) ;; map key type (,(concat (go--regexp-enclose-in-symbol "chan") "[[:space:]]*\\(?:<-\\)?" go-type-name-regexp) 1 font-lock-type-face) ;; channel type (,(concat (go--regexp-enclose-in-symbol "\\(?:new\\|make\\)") "\\(?:[[:space:]]\\|)\\)*(" go-type-name-regexp) 1 font-lock-type-face) ;; new/make type ;; TODO do we actually need this one or isn't it just a function call? (,(concat "\\.\\s *(" go-type-name-regexp) 1 font-lock-type-face) ;; Type conversion (,(concat (go--regexp-enclose-in-symbol "func") "[[:space:]]+(" go-identifier-regexp "[[:space:]]+" go-type-name-regexp ")") 1 font-lock-type-face) ;; Method receiver (,(concat (go--regexp-enclose-in-symbol "func") "[[:space:]]+(" go-type-name-regexp ")") 1 font-lock-type-face) ;; Method receiver without variable name ;; Like the original go-mode this also marks compound literal ;; fields. There, it was marked as to fix, but I grew quite ;; accustomed to it, so it'll stay for now. (,(concat "^[[:space:]]*\\(" go-label-regexp "\\)[[:space:]]*:\\(\\S.\\|$\\)") 1 font-lock-constant-face) ;; Labels and compound literal fields (,(concat (go--regexp-enclose-in-symbol "\\(goto\\|break\\|continue\\)") "[[:space:]]*\\(" go-label-regexp "\\)") 2 font-lock-constant-face)))) ;; labels in goto/break/continue (defconst go--font-lock-syntactic-keywords ;; Override syntax property of raw string literal contents, so that ;; backslashes have no special meaning in ``. Used in Emacs 23 or older. '((go--match-raw-string-literal (1 (7 . ?`)) (2 (15 . nil)) ;; 15 = "generic string" (3 (7 . ?`))))) (defvar go-mode-map (let ((m (make-sparse-keymap))) (define-key m "}" #'go-mode-insert-and-indent) (define-key m ")" #'go-mode-insert-and-indent) (define-key m "," #'go-mode-insert-and-indent) (define-key m ":" #'go-mode-insert-and-indent) (define-key m "=" #'go-mode-insert-and-indent) (define-key m (kbd "C-c C-a") #'go-import-add) (define-key m (kbd "C-c C-j") #'godef-jump) (define-key m (kbd "C-x 4 C-c C-j") #'godef-jump-other-window) (define-key m (kbd "C-c C-d") #'godef-describe) m) "Keymap used by Go mode to implement electric keys.") (defun go-mode-insert-and-indent (key) "Invoke the global binding of KEY, then reindent the line." (interactive (list (this-command-keys))) (call-interactively (lookup-key (current-global-map) key)) (indent-according-to-mode)) (defmacro go-paren-level () `(car (syntax-ppss))) (defmacro go-in-string-or-comment-p () `(nth 8 (syntax-ppss))) (defmacro go-in-string-p () `(nth 3 (syntax-ppss))) (defmacro go-in-comment-p () `(nth 4 (syntax-ppss))) (defmacro go-goto-beginning-of-string-or-comment () `(goto-char (nth 8 (syntax-ppss)))) (defun go--backward-irrelevant (&optional stop-at-string) "Skips backwards over any characters that are irrelevant for indentation and related tasks. It skips over whitespace, comments, cases and labels and, if STOP-AT-STRING is not true, over strings." (let (pos (start-pos (point))) (skip-chars-backward "\n\s\t") (if (and (save-excursion (beginning-of-line) (go-in-string-p)) (looking-back "`") (not stop-at-string)) (backward-char)) (if (and (go-in-string-p) (not stop-at-string)) (go-goto-beginning-of-string-or-comment)) (if (looking-back "\\*/") (backward-char)) (if (go-in-comment-p) (go-goto-beginning-of-string-or-comment)) (setq pos (point)) (beginning-of-line) (if (or (looking-at (concat "^" go-label-regexp ":")) (looking-at "^[[:space:]]*\\(case .+\\|default\\):")) (end-of-line 0) (goto-char pos)) (if (/= start-pos (point)) (go--backward-irrelevant stop-at-string)) (/= start-pos (point)))) (defun go--buffer-narrowed-p () "Return non-nil if the current buffer is narrowed." (/= (buffer-size) (- (point-max) (point-min)))) (defun go--match-raw-string-literal (end) "Search for a raw string literal. Set point to the end of the occurence found on success. Returns nil on failure." (when (search-forward "`" end t) (goto-char (match-beginning 0)) (if (go-in-string-or-comment-p) (progn (goto-char (match-end 0)) (go--match-raw-string-literal end)) (when (looking-at "\\(`\\)\\([^`]*\\)\\(`\\)") (goto-char (match-end 0)) t)))) (defun go-previous-line-has-dangling-op-p () "Returns non-nil if the current line is a continuation line." (let* ((cur-line (line-number-at-pos)) (val (gethash cur-line go-dangling-cache 'nope))) (if (or (go--buffer-narrowed-p) (equal val 'nope)) (save-excursion (beginning-of-line) (go--backward-irrelevant t) (setq val (looking-back go-dangling-operators-regexp)) (if (not (go--buffer-narrowed-p)) (puthash cur-line val go-dangling-cache)))) val)) (defun go--at-function-definition () "Return non-nil if point is on the opening curly brace of a function definition. We do this by first calling (beginning-of-defun), which will take us to the start of *some* function. We then look for the opening curly brace of that function and compare its position against the curly brace we are checking. If they match, we return non-nil." (if (= (char-after) ?\{) (save-excursion (let ((old-point (point)) start-nesting) (beginning-of-defun) (when (looking-at "func ") (setq start-nesting (go-paren-level)) (skip-chars-forward "^{") (while (> (go-paren-level) start-nesting) (forward-char) (skip-chars-forward "^{") 0) (if (and (= (go-paren-level) start-nesting) (= old-point (point))) t)))))) (defun go--indentation-for-opening-parenthesis () "Return the semantic indentation for the current opening parenthesis. If point is on an opening curly brace and said curly brace belongs to a function declaration, the indentation of the func keyword will be returned. Otherwise the indentation of the current line will be returned." (save-excursion (if (go--at-function-definition) (progn (beginning-of-defun) (current-indentation)) (current-indentation)))) (defun go-indentation-at-point () (save-excursion (let (start-nesting) (back-to-indentation) (setq start-nesting (go-paren-level)) (cond ((go-in-string-p) (current-indentation)) ((looking-at "[])}]") (go-goto-opening-parenthesis) (if (go-previous-line-has-dangling-op-p) (- (current-indentation) tab-width) (go--indentation-for-opening-parenthesis))) ((progn (go--backward-irrelevant t) (looking-back go-dangling-operators-regexp)) ;; only one nesting for all dangling operators in one operation (if (go-previous-line-has-dangling-op-p) (current-indentation) (+ (current-indentation) tab-width))) ((zerop (go-paren-level)) 0) ((progn (go-goto-opening-parenthesis) (< (go-paren-level) start-nesting)) (if (go-previous-line-has-dangling-op-p) (current-indentation) (+ (go--indentation-for-opening-parenthesis) tab-width))) (t (current-indentation)))))) (defun go-mode-indent-line () (interactive) (let (indent shift-amt (pos (- (point-max) (point))) (point (point)) (beg (line-beginning-position))) (back-to-indentation) (if (go-in-string-or-comment-p) (goto-char point) (setq indent (go-indentation-at-point)) (if (looking-at (concat go-label-regexp ":\\([[:space:]]*/.+\\)?$\\|case .+:\\|default:")) (decf indent tab-width)) (setq shift-amt (- indent (current-column))) (if (zerop shift-amt) nil (delete-region beg (point)) (indent-to indent)) ;; If initial point was within line's indentation, ;; position after the indentation. Else stay at same point in text. (if (> (- (point-max) pos) (point)) (goto-char (- (point-max) pos)))))) (defun go-beginning-of-defun (&optional count) (setq count (or count 1)) (let ((first t) failure) (dotimes (i (abs count)) (while (and (not failure) (or first (go-in-string-or-comment-p))) (if (>= count 0) (progn (go--backward-irrelevant) (if (not (re-search-backward go-func-meth-regexp nil t)) (setq failure t))) (if (looking-at go-func-meth-regexp) (forward-char)) (if (not (re-search-forward go-func-meth-regexp nil t)) (setq failure t))) (setq first nil))) (if (< count 0) (beginning-of-line)) (not failure))) (defun go-end-of-defun () (let (orig-level) ;; It can happen that we're not placed before a function by emacs (if (not (looking-at "func")) (go-beginning-of-defun -1)) (skip-chars-forward "^{") (forward-char) (setq orig-level (go-paren-level)) (while (>= (go-paren-level) orig-level) (skip-chars-forward "^}") (forward-char)))) ;;;###autoload (define-derived-mode go-mode prog-mode "Go" "Major mode for editing Go source text. This mode provides (not just) basic editing capabilities for working with Go code. It offers almost complete syntax highlighting, indentation that is almost identical to gofmt and proper parsing of the buffer content to allow features such as navigation by function, manipulation of comments or detection of strings. In addition to these core features, it offers various features to help with writing Go code. You can directly run buffer content through gofmt, read godoc documentation from within Emacs, modify and clean up the list of package imports or interact with the Playground (uploading and downloading pastes). The following extra functions are defined: - `gofmt' - `godoc' - `go-import-add' - `go-remove-unused-imports' - `go-goto-imports' - `go-play-buffer' and `go-play-region' - `go-download-play' - `godef-describe' and `godef-jump' - `go-coverage' If you want to automatically run `gofmt' before saving a file, add the following hook to your emacs configuration: \(add-hook 'before-save-hook #'gofmt-before-save) If you want to use `godef-jump' instead of etags (or similar), consider binding godef-jump to `M-.', which is the default key for `find-tag': \(add-hook 'go-mode-hook (lambda () (local-set-key (kbd \"M-.\") #'godef-jump))) Please note that godef is an external dependency. You can install it with go get code.google.com/p/rog-go/exp/cmd/godef If you're looking for even more integration with Go, namely on-the-fly syntax checking, auto-completion and snippets, it is recommended that you look at goflymake \(https://github.com/dougm/goflymake), gocode \(https://github.com/nsf/gocode), go-eldoc \(github.com/syohex/emacs-go-eldoc) and yasnippet-go \(https://github.com/dominikh/yasnippet-go)" ;; Font lock (set (make-local-variable 'font-lock-defaults) '(go--build-font-lock-keywords)) ;; Indentation (set (make-local-variable 'indent-line-function) #'go-mode-indent-line) ;; Comments (set (make-local-variable 'comment-start) "// ") (set (make-local-variable 'comment-end) "") (set (make-local-variable 'comment-use-syntax) t) (set (make-local-variable 'comment-start-skip) "\\(//+\\|/\\*+\\)\\s *") (set (make-local-variable 'beginning-of-defun-function) #'go-beginning-of-defun) (set (make-local-variable 'end-of-defun-function) #'go-end-of-defun) (set (make-local-variable 'parse-sexp-lookup-properties) t) (if (boundp 'syntax-propertize-function) (set (make-local-variable 'syntax-propertize-function) #'go-propertize-syntax) (set (make-local-variable 'font-lock-syntactic-keywords) go--font-lock-syntactic-keywords) (set (make-local-variable 'font-lock-multiline) t)) (set (make-local-variable 'go-dangling-cache) (make-hash-table :test 'eql)) (add-hook 'before-change-functions (lambda (x y) (setq go-dangling-cache (make-hash-table :test 'eql))) t t) ;; ff-find-other-file (setq ff-other-file-alist 'go-other-file-alist) (setq imenu-generic-expression '(("type" "^type *\\([^ \t\n\r\f]*\\)" 1) ("func" "^func *\\(.*\\) {" 1))) (imenu-add-to-menubar "Index") ;; Go style (setq indent-tabs-mode t) ;; Handle unit test failure output in compilation-mode ;; ;; Note the final t argument to add-to-list for append, ie put these at the ;; *ends* of compilation-error-regexp-alist[-alist]. We want go-test to be ;; handled first, otherwise other elements will match that don't work, and ;; those alists are traversed in *reverse* order: ;; http://lists.gnu.org/archive/html/bug-gnu-emacs/2001-12/msg00674.html (when (and (boundp 'compilation-error-regexp-alist) (boundp 'compilation-error-regexp-alist-alist)) (add-to-list 'compilation-error-regexp-alist 'go-test t) (add-to-list 'compilation-error-regexp-alist-alist '(go-test . ("^\t+\\([^()\t\n]+\\):\\([0-9]+\\):? .*$" 1 2)) t))) ;;;###autoload (add-to-list 'auto-mode-alist (cons "\\.go\\'" 'go-mode)) (defun go--apply-rcs-patch (patch-buffer) "Apply an RCS-formatted diff from PATCH-BUFFER to the current buffer." (let ((target-buffer (current-buffer)) ;; Relative offset between buffer line numbers and line numbers ;; in patch. ;; ;; Line numbers in the patch are based on the source file, so ;; we have to keep an offset when making changes to the ;; buffer. ;; ;; Appending lines decrements the offset (possibly making it ;; negative), deleting lines increments it. This order ;; simplifies the forward-line invocations. (line-offset 0)) (save-excursion (with-current-buffer patch-buffer (goto-char (point-min)) (while (not (eobp)) (unless (looking-at "^\\([ad]\\)\\([0-9]+\\) \\([0-9]+\\)") (error "invalid rcs patch or internal error in go--apply-rcs-patch")) (forward-line) (let ((action (match-string 1)) (from (string-to-number (match-string 2))) (len (string-to-number (match-string 3)))) (cond ((equal action "a") (let ((start (point))) (forward-line len) (let ((text (buffer-substring start (point)))) (with-current-buffer target-buffer (decf line-offset len) (goto-char (point-min)) (forward-line (- from len line-offset)) (insert text))))) ((equal action "d") (with-current-buffer target-buffer (go--goto-line (- from line-offset)) (incf line-offset len) (go--delete-whole-line len))) (t (error "invalid rcs patch or internal error in go--apply-rcs-patch"))))))))) (defun gofmt () "Formats the current buffer according to the gofmt tool." (interactive) (let ((tmpfile (make-temp-file "gofmt" nil ".go")) (patchbuf (get-buffer-create "*Gofmt patch*")) (errbuf (get-buffer-create "*Gofmt Errors*")) (coding-system-for-read 'utf-8) (coding-system-for-write 'utf-8)) (with-current-buffer errbuf (setq buffer-read-only nil) (erase-buffer)) (with-current-buffer patchbuf (erase-buffer)) (write-region nil nil tmpfile) ;; We're using errbuf for the mixed stdout and stderr output. This ;; is not an issue because gofmt -w does not produce any stdout ;; output in case of success. (if (zerop (call-process gofmt-command nil errbuf nil "-w" tmpfile)) (if (zerop (call-process-region (point-min) (point-max) "diff" nil patchbuf nil "-n" "-" tmpfile)) (progn (kill-buffer errbuf) (message "Buffer is already gofmted")) (go--apply-rcs-patch patchbuf) (kill-buffer errbuf) (message "Applied gofmt")) (message "Could not apply gofmt. Check errors for details") (gofmt--process-errors (buffer-file-name) tmpfile errbuf)) (kill-buffer patchbuf) (delete-file tmpfile))) (defun gofmt--process-errors (filename tmpfile errbuf) ;; Convert the gofmt stderr to something understood by the compilation mode. (with-current-buffer errbuf (goto-char (point-min)) (insert "gofmt errors:\n") (while (search-forward-regexp (concat "^\\(" (regexp-quote tmpfile) "\\):") nil t) (replace-match (file-name-nondirectory filename) t t nil 1)) (compilation-mode) (display-buffer errbuf))) ;;;###autoload (defun gofmt-before-save () "Add this to .emacs to run gofmt on the current buffer when saving: (add-hook 'before-save-hook 'gofmt-before-save). Note that this will cause go-mode to get loaded the first time you save any file, kind of defeating the point of autoloading." (interactive) (when (eq major-mode 'go-mode) (gofmt))) (defun godoc--read-query () "Read a godoc query from the minibuffer." ;; Compute the default query as the symbol under the cursor. ;; TODO: This does the wrong thing for e.g. multipart.NewReader (it only grabs ;; half) but I see no way to disambiguate that from e.g. foobar.SomeMethod. (let* ((bounds (bounds-of-thing-at-point 'symbol)) (symbol (if bounds (buffer-substring-no-properties (car bounds) (cdr bounds))))) (completing-read (if symbol (format "godoc (default %s): " symbol) "godoc: ") (go--old-completion-list-style (go-packages)) nil nil nil 'go-godoc-history symbol))) (defun godoc--get-buffer (query) "Get an empty buffer for a godoc query." (let* ((buffer-name (concat "*godoc " query "*")) (buffer (get-buffer buffer-name))) ;; Kill the existing buffer if it already exists. (when buffer (kill-buffer buffer)) (get-buffer-create buffer-name))) (defun godoc--buffer-sentinel (proc event) "Sentinel function run when godoc command completes." (with-current-buffer (process-buffer proc) (cond ((string= event "finished\n") ;; Successful exit. (goto-char (point-min)) (view-mode 1) (display-buffer (current-buffer) t)) ((/= (process-exit-status proc) 0) ;; Error exit. (let ((output (buffer-string))) (kill-buffer (current-buffer)) (message (concat "godoc: " output))))))) ;;;###autoload (defun godoc (query) "Show go documentation for a query, much like M-x man." (interactive (list (godoc--read-query))) (unless (string= query "") (set-process-sentinel (start-process-shell-command "godoc" (godoc--get-buffer query) (concat "godoc " query)) 'godoc--buffer-sentinel) nil)) (defun go-goto-imports () "Move point to the block of imports. If using import ( \"foo\" \"bar\" ) it will move point directly behind the last import. If using import \"foo\" import \"bar\" it will move point to the next line after the last import. If no imports can be found, point will be moved after the package declaration." (interactive) ;; FIXME if there's a block-commented import before the real ;; imports, we'll jump to that one. ;; Generally, this function isn't very forgiving. it'll bark on ;; extra whitespace. It works well for clean code. (let ((old-point (point))) (goto-char (point-min)) (cond ((re-search-forward "^import ()" nil t) (backward-char 1) 'block-empty) ((re-search-forward "^import ([^)]+)" nil t) (backward-char 2) 'block) ((re-search-forward "\\(^import \\([^\"]+ \\)?\"[^\"]+\"\n?\\)+" nil t) 'single) ((re-search-forward "^[[:space:]\n]*package .+?\n" nil t) (message "No imports found, moving point after package declaration") 'none) (t (goto-char old-point) (message "No imports or package declaration found. Is this really a Go file?") 'fail)))) (defun go-play-buffer () "Like `go-play-region', but acts on the entire buffer." (interactive) (go-play-region (point-min) (point-max))) (defun go-play-region (start end) "Send the region to the Playground and stores the resulting link in the kill ring." (interactive "r") (let* ((url-request-method "POST") (url-request-extra-headers '(("Content-Type" . "application/x-www-form-urlencoded"))) (url-request-data (encode-coding-string (buffer-substring-no-properties start end) 'utf-8)) (content-buf (url-retrieve "http://play.golang.org/share" (lambda (arg) (cond ((equal :error (car arg)) (signal 'go-play-error (cdr arg))) (t (re-search-forward "\n\n") (kill-new (format "http://play.golang.org/p/%s" (buffer-substring (point) (point-max)))) (message "http://play.golang.org/p/%s" (buffer-substring (point) (point-max))))))))))) ;;;###autoload (defun go-download-play (url) "Downloads a paste from the playground and inserts it in a Go buffer. Tries to look for a URL at point." (interactive (list (read-from-minibuffer "Playground URL: " (ffap-url-p (ffap-string-at-point 'url))))) (with-current-buffer (let ((url-request-method "GET") url-request-data url-request-extra-headers) (url-retrieve-synchronously (concat url ".go"))) (let ((buffer (generate-new-buffer (concat (car (last (split-string url "/"))) ".go")))) (goto-char (point-min)) (re-search-forward "\n\n") (copy-to-buffer buffer (point) (point-max)) (kill-buffer) (with-current-buffer buffer (go-mode) (switch-to-buffer buffer))))) (defun go-propertize-syntax (start end) (save-excursion (goto-char start) (while (search-forward "\\" end t) (put-text-property (1- (point)) (point) 'syntax-table (if (= (char-after) ?`) '(1) '(9)))))) (defun go-import-add (arg import) "Add a new import to the list of imports. When called with a prefix argument asks for an alternative name to import the package as. If no list exists yet, one will be created if possible. If an identical import has been commented, it will be uncommented, otherwise a new import will be added." ;; - If there's a matching `// import "foo"`, uncomment it ;; - If we're in an import() block and there's a matching `"foo"`, uncomment it ;; - Otherwise add a new import, with the appropriate syntax (interactive (list current-prefix-arg (replace-regexp-in-string "^[\"']\\|[\"']$" "" (completing-read "Package: " (go--old-completion-list-style (go-packages)))))) (save-excursion (let (as line import-start) (if arg (setq as (read-from-minibuffer "Import as: "))) (if as (setq line (format "%s \"%s\"" as import)) (setq line (format "\"%s\"" import))) (goto-char (point-min)) (if (re-search-forward (concat "^[[:space:]]*//[[:space:]]*import " line "$") nil t) (uncomment-region (line-beginning-position) (line-end-position)) (case (go-goto-imports) ('fail (message "Could not find a place to add import.")) ('block-empty (insert "\n\t" line "\n")) ('block (save-excursion (re-search-backward "^import (") (setq import-start (point))) (if (re-search-backward (concat "^[[:space:]]*//[[:space:]]*" line "$") import-start t) (uncomment-region (line-beginning-position) (line-end-position)) (insert "\n\t" line))) ('single (insert "import " line "\n")) ('none (insert "\nimport (\n\t" line "\n)\n"))))))) (defun go-root-and-paths () (let* ((output (split-string (shell-command-to-string (concat go-command " env GOROOT GOPATH")) "\n")) (root (car output)) (paths (split-string (cadr output) ":"))) (append (list root) paths))) (defun go--string-prefix-p (s1 s2 &optional ignore-case) "Return non-nil if S1 is a prefix of S2. If IGNORE-CASE is non-nil, the comparison is case-insensitive." (eq t (compare-strings s1 nil nil s2 0 (length s1) ignore-case))) (defun go--directory-dirs (dir) "Recursively return all subdirectories in DIR." (if (file-directory-p dir) (let ((dir (directory-file-name dir)) (dirs '()) (files (directory-files dir nil nil t))) (dolist (file files) (unless (member file '("." "..")) (let ((file (concat dir "/" file))) (if (file-directory-p file) (setq dirs (append (cons file (go--directory-dirs file)) dirs)))))) dirs) '())) (defun go-packages () (sort (delete-dups (mapcan (lambda (topdir) (let ((pkgdir (concat topdir "/pkg/"))) (mapcan (lambda (dir) (mapcar (lambda (file) (let ((sub (substring file (length pkgdir) -2))) (unless (or (go--string-prefix-p "obj/" sub) (go--string-prefix-p "tool/" sub)) (mapconcat #'identity (cdr (split-string sub "/")) "/")))) (if (file-directory-p dir) (directory-files dir t "\\.a$")))) (if (file-directory-p pkgdir) (go--directory-dirs pkgdir))))) (go-root-and-paths))) #'string<)) (defun go-unused-imports-lines () ;; FIXME Technically, -o /dev/null fails in quite some cases (on ;; Windows, when compiling from within GOPATH). Practically, ;; however, it has the same end result: There won't be a ;; compiled binary/archive, and we'll get our import errors when ;; there are any. (reverse (remove nil (mapcar (lambda (line) (if (string-match "^\\(.+\\):\\([[:digit:]]+\\): imported and not used: \".+\".*$" line) (if (string= (file-truename (match-string 1 line)) (file-truename buffer-file-name)) (string-to-number (match-string 2 line))))) (split-string (shell-command-to-string (concat go-command (if (string-match "_test\.go$" buffer-file-truename) " test -c" " build -o /dev/null"))) "\n"))))) (defun go-remove-unused-imports (arg) "Removes all unused imports. If ARG is non-nil, unused imports will be commented, otherwise they will be removed completely." (interactive "P") (save-excursion (let ((cur-buffer (current-buffer)) flymake-state lines) (when (boundp 'flymake-mode) (setq flymake-state flymake-mode) (flymake-mode-off)) (save-some-buffers nil (lambda () (equal cur-buffer (current-buffer)))) (if (buffer-modified-p) (message "Cannot operate on unsaved buffer") (setq lines (go-unused-imports-lines)) (dolist (import lines) (go--goto-line import) (beginning-of-line) (if arg (comment-region (line-beginning-position) (line-end-position)) (go--delete-whole-line))) (message "Removed %d imports" (length lines))) (if flymake-state (flymake-mode-on))))) (defun godef--find-file-line-column (specifier other-window) "Given a file name in the format of `filename:line:column', visit FILENAME and go to line LINE and column COLUMN." (if (not (string-match "\\(.+\\):\\([0-9]+\\):\\([0-9]+\\)" specifier)) ;; We've only been given a directory name (funcall (if other-window #'find-file-other-window #'find-file) specifier) (let ((filename (match-string 1 specifier)) (line (string-to-number (match-string 2 specifier))) (column (string-to-number (match-string 3 specifier)))) (with-current-buffer (funcall (if other-window #'find-file-other-window #'find-file) filename) (go--goto-line line) (beginning-of-line) (forward-char (1- column)) (if (buffer-modified-p) (message "Buffer is modified, file position might not have been correct")))))) (defun godef--call (point) "Call godef, acquiring definition position and expression description at POINT." (if (go--xemacs-p) (error "godef does not reliably work in XEmacs, expect bad results")) (if (not (buffer-file-name (go--coverage-origin-buffer))) (error "Cannot use godef on a buffer without a file name") (let ((outbuf (get-buffer-create "*godef*"))) (with-current-buffer outbuf (erase-buffer)) (call-process-region (point-min) (point-max) "godef" nil outbuf nil "-i" "-t" "-f" (file-truename (buffer-file-name (go--coverage-origin-buffer))) "-o" (number-to-string (go--position-bytes point))) (with-current-buffer outbuf (split-string (buffer-substring-no-properties (point-min) (point-max)) "\n"))))) (defun godef-describe (point) "Describe the expression at POINT." (interactive "d") (condition-case nil (let ((description (cdr (butlast (godef--call point) 1)))) (if (not description) (message "No description found for expression at point") (message "%s" (mapconcat #'identity description "\n")))) (file-error (message "Could not run godef binary")))) (defun godef-jump (point &optional other-window) "Jump to the definition of the expression at POINT." (interactive "d") (condition-case nil (let ((file (car (godef--call point)))) (cond ((string= "-" file) (message "godef: expression is not defined anywhere")) ((string= "godef: no identifier found" file) (message "%s" file)) ((go--string-prefix-p "godef: no declaration found for " file) (message "%s" file)) ((go--string-prefix-p "error finding import path for " file) (message "%s" file)) (t (push-mark) (ring-insert find-tag-marker-ring (point-marker)) (godef--find-file-line-column file other-window)))) (file-error (message "Could not run godef binary")))) (defun godef-jump-other-window (point) (interactive "d") (godef-jump point t)) (defun go--goto-line (line) (goto-char (point-min)) (forward-line (1- line))) (defun go--line-column-to-point (line column) (save-excursion (go--goto-line line) (forward-char (1- column)) (point))) (defstruct go--covered start-line start-column end-line end-column covered count) (defun go--coverage-file () "Return the coverage file to use, either by reading it from the current coverage buffer or by prompting for it." (if (boundp 'go--coverage-current-file-name) go--coverage-current-file-name (read-file-name "Coverage file: " nil nil t))) (defun go--coverage-origin-buffer () "Return the buffer to base the coverage on." (or (buffer-base-buffer) (current-buffer))) (defun go--coverage-face (count divisor) "Return the intensity face for COUNT when using DIVISOR to scale it to a range [0,10]. DIVISOR scales the absolute cover count to values from 0 to 10. For DIVISOR = 0 the count will always translate to 8." (let* ((norm (cond ((= count 0) -0.1) ;; Uncovered code, set to -0.1 so n becomes 0. ((= divisor 0) 0.8) ;; covermode=set, set to 0.8 so n becomes 8. (t (/ (log count) divisor)))) (n (1+ (floor (* norm 9))))) ;; Convert normalized count [0,1] to intensity [0,10] (concat "go-coverage-" (number-to-string n)))) (defun go--coverage-make-overlay (range divisor) "Create a coverage overlay for a RANGE of covered/uncovered code. Uses DIVISOR to scale absolute counts to a [0,10] scale." (let* ((count (go--covered-count range)) (face (go--coverage-face count divisor)) (ov (make-overlay (go--line-column-to-point (go--covered-start-line range) (go--covered-start-column range)) (go--line-column-to-point (go--covered-end-line range) (go--covered-end-column range))))) (overlay-put ov 'face face) (overlay-put ov 'help-echo (format "Count: %d" count)))) (defun go--coverage-clear-overlays () "Remove existing overlays and put a single untracked overlay over the entire buffer." (remove-overlays) (overlay-put (make-overlay (point-min) (point-max)) 'face 'go-coverage-untracked)) (defun go--coverage-parse-file (coverage-file file-name) "Parse COVERAGE-FILE and extract coverage information and divisor for FILE-NAME." (let (ranges (max-count 0)) (with-temp-buffer (insert-file-contents coverage-file) (go--goto-line 2) ;; Skip over mode (while (not (eobp)) (let* ((parts (split-string (buffer-substring (point-at-bol) (point-at-eol)) ":")) (file (car parts)) (rest (split-string (nth 1 parts) "[., ]"))) (destructuring-bind (start-line start-column end-line end-column num count) (mapcar #'string-to-number rest) (when (string= (file-name-nondirectory file) file-name) (if (> count max-count) (setq max-count count)) (push (make-go--covered :start-line start-line :start-column start-column :end-line end-line :end-column end-column :covered (/= count 0) :count count) ranges))) (forward-line))) (list ranges (if (> max-count 0) (log max-count) 0))))) (defun go-coverage (&optional coverage-file) "Open a clone of the current buffer and overlay it with coverage information gathered via go test -coverprofile=COVERAGE-FILE. If COVERAGE-FILE is nil, it will either be inferred from the current buffer if it's already a coverage buffer, or be prompted for." (interactive) (let* ((cur-buffer (current-buffer)) (origin-buffer (go--coverage-origin-buffer)) (gocov-buffer-name (concat (buffer-name origin-buffer) "")) (coverage-file (or coverage-file (go--coverage-file))) (ranges-and-divisor (go--coverage-parse-file coverage-file (file-name-nondirectory (buffer-file-name origin-buffer)))) (cov-mtime (nth 5 (file-attributes coverage-file))) (cur-mtime (nth 5 (file-attributes (buffer-file-name origin-buffer))))) (if (< (float-time cov-mtime) (float-time cur-mtime)) (message "Coverage file is older than the source file.")) (with-current-buffer (or (get-buffer gocov-buffer-name) (make-indirect-buffer origin-buffer gocov-buffer-name t)) (set (make-local-variable 'go--coverage-current-file-name) coverage-file) (save-excursion (go--coverage-clear-overlays) (dolist (range (car ranges-and-divisor)) (go--coverage-make-overlay range (cadr ranges-and-divisor)))) (if (not (eq cur-buffer (current-buffer))) (display-buffer (current-buffer) #'display-buffer-reuse-window))))) (provide 'go-mode) go/misc/fraise0040755000000000000000000000000012412656737013627 5ustar00rootroot00000000000000go/misc/fraise/go.plist0100644000000000000000000000444112412656737015370 0ustar00rootroot00000000000000 beginCommand endCommand beginInstruction endInstruction beginVariable endVariable firstString " secondString ' firstSingleLineComment // secondSingleLineComment beginFirstMultiLineComment /* endFirstMultiLineComment */ beginSecondMultiLineComment endSecondMultiLineComment functionDefinition ^func\s*.*\(.*\)\s?\{ removeFromFunction keywordsCaseSensitive recolourKeywordIfAlreadyColoured keywords break case chan const continue default defer else fallthrough for func go goto if import interface map package range return select struct switch type var bool byte chan complex64 complex128 float32 float64 int int8 int16 int32 int64 map string uint uintptr uint8 uint16 uint32 uint64 autocompleteWords go/misc/fraise/readme.txt0100644000000000000000000000067512412656737015711 0ustar00rootroot00000000000000##Instructions for enabling Go syntax highlighting in Fraise.app## 1. Move go.plist to /Applications/Fraise.app/Contents/Resources/Syntax\ Definitions/ 2. Open /Applications/Fraise.app/Contents/Resources/SyntaxDefinitions.plist and add name GoogleGo file go extensions go before 3. Restart Fraise and you're good to Go!go/misc/git0040755000000000000000000000000012412656734013136 5ustar00rootroot00000000000000go/misc/git/pre-commit0100755000000000000000000000132712412656734015217 0ustar00rootroot00000000000000#!/bin/sh # 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. # git gofmt pre-commit hook # # To use, store as .git/hooks/pre-commit inside your repository and make sure # it has execute permissions. # # This script does not handle file names that contain spaces. gofiles=$(git diff --cached --name-only --diff-filter=ACM | grep '.go$') [ -z "$gofiles" ] && exit 0 unformatted=$(gofmt -l $gofiles) [ -z "$unformatted" ] && exit 0 # Some files are not gofmt'd. Print message and fail. echo >&2 "Go files must be formatted with gofmt. Please run:" for fn in $unformatted; do echo >&2 " gofmt -w $PWD/$fn" done exit 1 go/misc/kate0040755000000000000000000000000012412656737013302 5ustar00rootroot00000000000000go/misc/kate/go.xml0100644000000000000000000001341712412656737014513 0ustar00rootroot00000000000000 break case chan const continue default defer else fallthrough for func go goto if import interface map package range return select struct switch type var false iota nil true bool byte complex64 complex128 error float32 float64 int int8 int16 int32 int64 rune string uint uintptr uint8 uint16 uint32 uint64 append cap close complex copy delete imag len make new panic print println real recover go/misc/linkcheck0040755000000000000000000000000012412656734014306 5ustar00rootroot00000000000000go/misc/linkcheck/linkcheck.go0100644000000000000000000000772012412656734016652 0ustar00rootroot00000000000000// Copyright 2013 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. // The linkcheck command finds missing links in the godoc website. // It crawls a URL recursively and notes URLs and URL fragments // that it's seen and prints a report of missing links at the end. package main import ( "errors" "flag" "fmt" "io/ioutil" "log" "net/http" "os" "regexp" "strings" "sync" ) var ( root = flag.String("root", "http://localhost:6060", "Root to crawl") verbose = flag.Bool("verbose", false, "verbose") ) var wg sync.WaitGroup // outstanding fetches var urlq = make(chan string) // URLs to crawl // urlFrag is a URL and its optional #fragment (without the #) type urlFrag struct { url, frag string } var ( mu sync.Mutex crawled = make(map[string]bool) // URL without fragment -> true neededFrags = make(map[urlFrag][]string) // URL#frag -> who needs it ) var aRx = regexp.MustCompile(`]+)`) // Owned by crawlLoop goroutine: var ( linkSources = make(map[string][]string) // url no fragment -> sources fragExists = make(map[urlFrag]bool) problems []string ) func localLinks(body string) (links []string) { seen := map[string]bool{} mv := aRx.FindAllStringSubmatch(body, -1) for _, m := range mv { ref := m[1] if strings.HasPrefix(ref, "/src/") { continue } if !seen[ref] { seen[ref] = true links = append(links, m[1]) } } return } var idRx = regexp.MustCompile(`\bid=['"]?([^\s'">]+)`) func pageIDs(body string) (ids []string) { mv := idRx.FindAllStringSubmatch(body, -1) for _, m := range mv { ids = append(ids, m[1]) } return } // url may contain a #fragment, and the fragment is then noted as needing to exist. func crawl(url string, sourceURL string) { if strings.Contains(url, "/devel/release") { return } mu.Lock() defer mu.Unlock() var frag string if i := strings.Index(url, "#"); i >= 0 { frag = url[i+1:] url = url[:i] if frag != "" { uf := urlFrag{url, frag} neededFrags[uf] = append(neededFrags[uf], sourceURL) } } if crawled[url] { return } crawled[url] = true wg.Add(1) go func() { urlq <- url }() } func addProblem(url, errmsg string) { msg := fmt.Sprintf("Error on %s: %s (from %s)", url, errmsg, linkSources[url]) if *verbose { log.Print(msg) } problems = append(problems, msg) } func crawlLoop() { for url := range urlq { if err := doCrawl(url); err != nil { addProblem(url, err.Error()) } } } func doCrawl(url string) error { defer wg.Done() req, err := http.NewRequest("GET", url, nil) if err != nil { return err } res, err := http.DefaultTransport.RoundTrip(req) if err != nil { return err } // Handle redirects. if res.StatusCode/100 == 3 { newURL, err := res.Location() if err != nil { return fmt.Errorf("resolving redirect: %v", err) } if !strings.HasPrefix(newURL.String(), *root) { // Skip off-site redirects. return nil } crawl(newURL.String(), url) return nil } if res.StatusCode != 200 { return errors.New(res.Status) } slurp, err := ioutil.ReadAll(res.Body) res.Body.Close() if err != nil { log.Fatalf("Error reading %s body: %v", url, err) } if *verbose { log.Printf("Len of %s: %d", url, len(slurp)) } body := string(slurp) for _, ref := range localLinks(body) { if *verbose { log.Printf(" links to %s", ref) } dest := *root + ref linkSources[dest] = append(linkSources[dest], url) crawl(dest, url) } for _, id := range pageIDs(body) { if *verbose { log.Printf(" url %s has #%s", url, id) } fragExists[urlFrag{url, id}] = true } return nil } func main() { flag.Parse() go crawlLoop() crawl(*root, "") wg.Wait() close(urlq) for uf, needers := range neededFrags { if !fragExists[uf] { problems = append(problems, fmt.Sprintf("Missing fragment for %+v from %v", uf, needers)) } } for _, s := range problems { fmt.Println(s) } if len(problems) > 0 { os.Exit(1) } } go/misc/makerelease0040755000000000000000000000000012412656737014634 5ustar00rootroot00000000000000go/misc/makerelease/darwin0040755000000000000000000000000012412656734016115 5ustar00rootroot00000000000000go/misc/makerelease/darwin/Distribution0100644000000000000000000000251112412656734020572 0ustar00rootroot00000000000000 Go com.googlecode.go.pkg go/misc/makerelease/darwin/Resources0040755000000000000000000000000012412656734020067 5ustar00rootroot00000000000000go/misc/makerelease/darwin/Resources/bg.png0100644000000000000000000002631212412656734021245 0ustar00rootroot00000000000000PNG  IHDRp;iCCPICC Profile(UoT?o\?US[IB*unS6mUo xB ISA$=t@hpS]Ƹ9w>5@WI`]5;V! A'@{N\..ƅG_!7suV$BlW=}i; F)A<.&Xax,38S(b׵*%31l #O-zQvaXOP5o6Zz&⻏^wkI/#&\%x/@{7S މjPh͔&mry>k7=ߪB#@fs_{덱п0-LZ~%Gpˈ{YXf^+_s-T>D@קƸ-9!r[2]3BcnCs?>*ԮeD|%4` :X2 pQSLPRaeyqĘ י5Fit )CdL$o$rpӶb>4+̹F_{Яki+x.+B.{L<۩ =UHcnf<>F ^e||pyv%b:iX'%8Iߔ? rw[vITVQN^dpYI"|#\cz[2M^S0[zIJ/HHȟ- Icޛf֥apxzoW&IP椉\3Ø05g D˛D;$Ӫ u r̈́v/O ]*} C%yڸ.Sa;'`˖]k{27D/Uɕ3`Ҡ.`iazSn&~plC *]ў$٥] ;]KOش&X,(!10 b%)yWrJNniշ6n/>v Vƍd7ẂF{mKgppqg"\KŽDf2;ӧAj!8|œ6{cC}=)Re_(޺No[>K.=l۶M  JA&\.{ۚF'ib?=!Dtm) B޲Y9$}R1ge5J o [ <&=93gpuRth-:v̏!0xN >ڽ{fK[3|fE`l] ?qN ̶n:4]}CM)d+ ظR.57Ǚ\-ׯ pj$i/gkR^ YgǓry%iImOM+'Vč7mկ_YYY{7eӆv 2a? Dx~w,a!fP^~[Unc$1|vё$aj9CHP')&Wȑ#էOoh&LY3!Ax&u|?_GfR@<&xܾ_o QwX͚,iSs Dǵ(a}+fܼy%```o>LӦM Vŏ='̒9`fb ؅F|Lgg)&D"96eH7͊ԖIALrVKC[bb"}J3P@`` 4mf","x|@ɚV$6b.+<eMԩƎ3LLK1 YqIQvLѫ5|WJAXX*xf mf̄N-R" c:0)7;UC_nqn0{m xSy檼o"f?Р;ʘEv|c,!S[yRX0ߦ7;%ul1`Su177=z,[ |\&ʞ$8>Z6 #0^N//J"Zɽ{x3"d!#˄[2|AE,!Aa᥂RȹEYZZ?Xv=4El/\c1Úl<4(ZZ|mdg~ a))-<~`2v$s,QC=`L ZnS*k>|/0.Zo|R(=˦`bUE4u#zzfkؘ=Pǧ. 2 MąV[pޮ=Cq9'ӍVa;R o Q\q4d8n̬Fo_,2rO'-E m5 : >ئC&¡GyCzI4O8=ܜ ''؈lI"8 fO[&c}}+9(\9j|vdK!77IAj2k~G}q=mACK}YO Gݪ\KC;)nH"T%Di,7==\ű<8(ݽ/^Yv x(a&PFu_ɺL7T؟* ibry4GU"@cgc9(m]}ufAqVO_ۡ\[ztAJsQopMjRY\Mɜ]o,ںTros}e(lt}8026˗/o2͚5 F .^Yo":pW|O+V^ТU{g}.."iR8.UŪ,c(_4+JdQ?@ݺux{{À 0 U:EĄă ʢU9m+IfanrE Ju 5BPc%['RHԝhjFGF5]`ɴ^A =APưnznoe+U0[sg{E%?Mֺ1O͜Q=JmYbbb؅t`1 A KpMP9b1dȐ!Я߻0hP,Þ -Z>`i*cSsoӦ̀VÆ` :u+++ֺɘ#w-OwIpK/yPKeDZ͓壯 3MhebЯ_?hUF0<5eI7D bNn_v,9{A`o0VPϫC>пKSXwg^>ʋ/UZw(Xsxt ;e?Me OoI{'",yyyaÇ[j~9:|3@@pwǖTK#ĕdԝxdV 5$|s|`x4eAAHay^hQ䅓VKnY ...N5b2mřdsamT5y5@ N0> }ۯmYx,h -0wuZEBJ3`[c-Aj}ӴAElXt[  7-O[l/RK]ո3ڥu }==vvv`ll{q JΎ3eĖ\M9-,nt%wN8rsgΟ+Rv#UL BeȞRȊ>~X >N0g%$+,gAxF0{TO& =X5MMQwO[AqreǗ 9~)8 h\홳8Jq0)S&A xZF|RY#C_{DX}#"3|yb%pTE275[@r@؜41V/UH,h]6u=F"|x$_@1S:Qͅ}?y`\3.^ӆ#S% ^ ;G {Xack-m3z5GBɛ  ZgVeMhX˄1cpG,:ՑUXX%ٗwhP^ O'/kzYR?x`5s| `υK2 ]d̀9ø6g: 'u p xSà$M`MY*ӆu;`|MHMi*,,zٗz(6>TXq =šA`d #F] &==-ӧO`FL3ށX۽m0Θ sdkbV)}S'Cּr _Wpt~;ξAXJ.2kYg,r ߴ07OydG󮪞2o@Q=JgxhӰ=9zȋO/Bfr]Y27gqyduPwZ^W?ع._>~֢>|wz ޿YH==_ۥ Gχp/ ͐T ر*3l\dg[/*IJ*A Y7'Ɔk|'rK<|z vj>Ȓfw2|01st m̃k%N7l- ,I*w$ UyCLŝZ4>Ck.N1ܫ9I@_241\)w Ũ!G oO**0:v^2^0jA`}>!aNTwpf5]2[:D =5 EM4 (5&Ei<'A12)pH6/)z-//WgSp.~Ek>3XvjG]\\i",Ž@n H5ۇ̜N, E aqq?#.2u_w{u136(?Y6)Y[\ ,W'G iHHFRxH1+Ë], yqX1XfpXܹSWa޽/6!vR0 sGpXcaQsvܜ,l%4٢) iMG6.b E{uyKl6p6_צд 3}$7uPD7Ci sw|XD"=6M{L d+??0,C H2MwrEXRgsXjpPfHD"dE+3LxXpA va4'X \ggX{|\Dtb7)z^{/  uZN\A(S= nsMqBjjS ǕCN8G9'WUa±2E 48KM~K~]h;&mߜ/Y %%&&lT5ղ(R:ʰz9 Drqm 2'ԑ ;qY,^18kafG͗^ Qob |HNm'Xe){D pN8VחjiҨsJ o,&FrBR}K]q9' 4-8wJmېS:KqqÒ! o/Ʈ*_&5afo4%RϚx1f*"fUsPi(VϮŰXpx\L, g,W fŰ[[~%Q5hr0+*/ŭL(6?2SytYv- N(k {FG5 ˥D0,&F__1[g=,LM54ttU^ez g;s1(+':0Z܁6x *aƾЫw_ؾ}L:QppU۠u!Օtl F XyIrZ+}x1^066VeQ[揬'hʨ3VüA&tk6k>y` [/:p?S@IĬ8 \=$|E>sw Ԉ`yKHCZ=u{S^᪫-[B< yWŽ*6-qpP|tDGP\,"SL#5Vm̙|)ͯzE Spj$hk/k[7]:rvv>ajjy>^G"[?Nl2 Ph!Qf?ZZPw0gL[ݺ`s57Y*F2(-ë,k[ 70oJMky #&?ڥ.Ͽ~u<89]*IbؓK3 j:̚:,!X^Ͳy6m:7)Nپ1~&QQ- tibLiNv44/ަ+E> &}n$fռs( iQL7EH0oD`jlMNcYZ`~`ld%Rd~5KoՊ+N38/ϞާXuvyX`:bmulm~˞)|}Ţ|Y% 1Veץ3uu[⒭ 7fo mP 'v^XG1uts@{ $OF„ATS$:~M#ZoS C0 vO(Sv3؆X)YN  .y3?]vlcl>$$:4ޣ`WM@BںT9$L@ukA5G0F &;BQBo.P&!% X3&=>Fb}etZ)4S$gsCA}zz|ܝۄ—_}?χ 6,!p:,Nܥ'{S8Xy )]> -v1f|*7iI )nGej[|%XXX{cz'6Anv4`} kK'L{@_O}^הjn`yH4iI' aXv %otttg=|&+G["K*+ ̟)0Yao g= 3 { b.Label = p[2] } if *includeRace { for _, t := range raceAvailable { if t == targ || strings.HasPrefix(targ, t+"-") { b.Race = true } } } if *staticToolchain { for _, os := range staticLinkAvailable { if b.OS == os { b.static = true } } } } if err := b.Do(); err != nil { log.Printf("%s: %v", targ, err) } } } type Build struct { Source bool // if true, OS and Arch must be empty Race bool // build race toolchain OS string Arch string Label string root string gopath string static bool // if true, build statically linked toolchain } func (b *Build) Do() error { work, err := ioutil.TempDir("", "makerelease") if err != nil { return err } defer os.RemoveAll(work) b.root = filepath.Join(work, "go") b.gopath = work // Clone Go distribution and update to tag. _, err = b.hgCmd(work, "clone", *repo, b.root) if err != nil { return err } _, err = b.hgCmd(b.root, "update", *tag) if err != nil { return err } // Remove exp and old packages. if err := b.clean(preBuildCleanFiles); err != nil { return err } src := filepath.Join(b.root, "src") if b.Source { if runtime.GOOS == "windows" { log.Print("Warning: running make.bash on Windows; source builds are intended to be run on a Unix machine") } // Build dist tool only. _, err = b.run(src, "bash", "make.bash", "--dist-tool") } else { // Build. if b.OS == "windows" { _, err = b.run(src, "cmd", "/C", "make.bat") } else { _, err = b.run(src, "bash", "make.bash") } if b.Race { if err != nil { return err } goCmd := filepath.Join(b.root, "bin", "go") if b.OS == "windows" { goCmd += ".exe" } _, err = b.run(src, goCmd, "install", "-race", "std") if err != nil { return err } // Re-install std without -race, so that we're not left // with a slower, race-enabled cmd/go, etc. _, err = b.run(src, goCmd, "install", "-a", "std") // Re-building go command leaves old versions of go.exe as go.exe~ on windows. // See (*builder).copyFile in $GOROOT/src/cmd/go/build.go for details. // Remove it manually. if b.OS == "windows" { os.Remove(goCmd + "~") } } if err != nil { return err } err = b.extras() } if err != nil { return err } // Get version strings. var ( version string // "weekly.2012-03-04" fullVersion []byte // "weekly.2012-03-04 9353aa1efdf3" ) pat := filepath.Join(b.root, "pkg/tool/*/dist*") // trailing * for .exe m, err := filepath.Glob(pat) if err != nil { return err } if len(m) == 0 { return fmt.Errorf("couldn't find dist in %q", pat) } fullVersion, err = b.run("", m[0], "version") if err != nil { return err } fullVersion = bytes.TrimSpace(fullVersion) v := bytes.SplitN(fullVersion, []byte(" "), 2) version = string(v[0]) if *versionOverride != "" { version = *versionOverride } // Write VERSION file. err = ioutil.WriteFile(filepath.Join(b.root, "VERSION"), fullVersion, 0644) if err != nil { return err } // Clean goroot. if err := b.clean(cleanFiles); err != nil { return err } if b.Source { if err := b.clean(sourceCleanFiles); err != nil { return err } } // Create packages. base := fmt.Sprintf("%s.%s-%s", version, b.OS, b.Arch) if b.Label != "" { base += "-" + b.Label } if !strings.HasPrefix(base, "go") { base = "go." + base } var targs []string switch b.OS { case "linux", "freebsd", "netbsd", "": // build tarball targ := base if b.Source { targ = fmt.Sprintf("%s.src", version) if !strings.HasPrefix(targ, "go") { targ = "go." + targ } } targ += ".tar.gz" err = makeTar(targ, work) targs = append(targs, targ) case "darwin": // build tarball targ := base + ".tar.gz" err = makeTar(targ, work) targs = append(targs, targ) makerelease := filepath.Join(runtime.GOROOT(), "misc/makerelease") // build pkg // arrange work so it's laid out as the dest filesystem etc := filepath.Join(makerelease, "darwin/etc") _, err = b.run(work, "cp", "-r", etc, ".") if err != nil { return err } localDir := filepath.Join(work, "usr/local") err = os.MkdirAll(localDir, 0755) if err != nil { return err } _, err = b.run(work, "mv", "go", localDir) if err != nil { return err } // build package pkgdest, err := ioutil.TempDir("", "pkgdest") if err != nil { return err } defer os.RemoveAll(pkgdest) _, err = b.run("", "pkgbuild", "--identifier", "com.googlecode.go", "--version", version, "--scripts", filepath.Join(makerelease, "darwin/scripts"), "--root", work, filepath.Join(pkgdest, "com.googlecode.go.pkg")) if err != nil { return err } targ = base + ".pkg" _, err = b.run("", "productbuild", "--distribution", filepath.Join(makerelease, "darwin/Distribution"), "--resources", filepath.Join(makerelease, "darwin/Resources"), "--package-path", pkgdest, targ) if err != nil { return err } targs = append(targs, targ) case "windows": // Create ZIP file. zip := filepath.Join(work, base+".zip") err = makeZip(zip, work) // Copy zip to target file. targ := base + ".zip" err = cp(targ, zip) if err != nil { return err } targs = append(targs, targ) // Create MSI installer. win := filepath.Join(runtime.GOROOT(), "misc/makerelease/windows") installer := filepath.Join(win, "installer.wxs") appfiles := filepath.Join(work, "AppFiles.wxs") msi := filepath.Join(work, "installer.msi") // Gather files. _, err = b.run(work, "heat", "dir", "go", "-nologo", "-gg", "-g1", "-srd", "-sfrag", "-cg", "AppFiles", "-template", "fragment", "-dr", "INSTALLDIR", "-var", "var.SourceDir", "-out", appfiles) if err != nil { return err } // Build package. _, err = b.run(work, "candle", "-nologo", "-dVersion="+version, "-dArch="+b.Arch, "-dSourceDir=go", installer, appfiles) if err != nil { return err } appfiles = filepath.Join(work, "AppFiles.wixobj") installer = filepath.Join(work, "installer.wixobj") _, err = b.run(win, "light", "-nologo", "-ext", "WixUIExtension", "-ext", "WixUtilExtension", installer, appfiles, "-o", msi) if err != nil { return err } // Copy installer to target file. targ = base + ".msi" err = cp(targ, msi) targs = append(targs, targ) } if err == nil && *upload { for _, targ := range targs { err = b.Upload(version, targ) if err != nil { return fmt.Errorf("uploading %s: %v", targ, err) } } } return err } // extras fetches the go.tools, go.blog, and go-tour repositories, // builds them and copies the resulting binaries and static assets // to the new GOROOT. func (b *Build) extras() error { defer b.cleanGopath() if err := b.tools(); err != nil { return err } if err := b.blog(); err != nil { return err } return b.tour() } func (b *Build) get(repoPath, revision string) error { // Fetch the packages (without building/installing). _, err := b.run(b.gopath, filepath.Join(b.root, "bin", "go"), "get", "-d", repoPath+"/...") if err != nil { return err } // Update the repo to the specified revision. p := filepath.Join(b.gopath, "src", filepath.FromSlash(repoPath)) _, err = b.run(p, "hg", "update", revision) return err } func (b *Build) tools() error { // Fetch the go.tools repository. if err := b.get(toolPath, *toolTag); err != nil { return err } // Install tools. args := append([]string{"install"}, toolPaths...) _, err := b.run(b.gopath, filepath.Join(b.root, "bin", "go"), args...) if err != nil { return err } // Copy doc.go from go.tools/cmd/$CMD to $GOROOT/src/cmd/$CMD // while rewriting "package main" to "package documentation". for _, p := range toolPaths { d, err := ioutil.ReadFile(filepath.Join(b.gopath, "src", filepath.FromSlash(p), "doc.go")) if err != nil { return err } d = bytes.Replace(d, []byte("\npackage main\n"), []byte("\npackage documentation\n"), 1) cmdDir := filepath.Join(b.root, "src", "cmd", path.Base(p)) if err := os.MkdirAll(cmdDir, 0755); err != nil { return err } docGo := filepath.Join(cmdDir, "doc.go") if err := ioutil.WriteFile(docGo, d, 0644); err != nil { return err } } return nil } func (b *Build) blog() error { // Fetch the blog repository. _, err := b.run(b.gopath, filepath.Join(b.root, "bin", "go"), "get", "-d", blogPath+"/blog") if err != nil { return err } // Copy blog content to $GOROOT/blog. blogSrc := filepath.Join(b.gopath, "src", filepath.FromSlash(blogPath)) contentDir := filepath.Join(b.root, "blog") return cpAllDir(contentDir, blogSrc, blogContent...) } func (b *Build) tour() error { // Fetch the go-tour repository. if err := b.get(tourPath, *tourTag); err != nil { return err } // Build tour binary. _, err := b.run(b.gopath, filepath.Join(b.root, "bin", "go"), "install", tourPath+"/gotour") if err != nil { return err } // Copy all the tour content to $GOROOT/misc/tour. importPath := filepath.FromSlash(tourPath) tourSrc := filepath.Join(b.gopath, "src", importPath) contentDir := filepath.Join(b.root, "misc", "tour") if err = cpAllDir(contentDir, tourSrc, tourContent...); err != nil { return err } // Copy the tour source code so it's accessible with $GOPATH pointing to $GOROOT/misc/tour. if err = cpAllDir(filepath.Join(contentDir, "src", importPath), tourSrc, tourPackages...); err != nil { return err } // Copy gotour binary to tool directory as "tour"; invoked as "go tool tour". return cp( filepath.Join(b.root, "pkg", "tool", b.OS+"_"+b.Arch, "tour"+ext()), filepath.Join(b.gopath, "bin", "gotour"+ext()), ) } func (b *Build) cleanGopath() { for _, d := range []string{"bin", "pkg", "src"} { os.RemoveAll(filepath.Join(b.gopath, d)) } } func ext() string { if runtime.GOOS == "windows" { return ".exe" } return "" } func (b *Build) hgCmd(dir string, args ...string) ([]byte, error) { return b.run(dir, "hg", append([]string{"--config", "extensions.codereview=!"}, args...)...) } func (b *Build) run(dir, name string, args ...string) ([]byte, error) { buf := new(bytes.Buffer) absName, err := lookPath(name) if err != nil { return nil, err } cmd := exec.Command(absName, args...) var output io.Writer = buf if *verbose { log.Printf("Running %q %q", absName, args) output = io.MultiWriter(buf, os.Stdout) } cmd.Stdout = output cmd.Stderr = output cmd.Dir = dir cmd.Env = b.env() if err := cmd.Run(); err != nil { fmt.Fprintf(os.Stderr, "%s", buf.Bytes()) return nil, fmt.Errorf("%s %s: %v", name, strings.Join(args, " "), err) } return buf.Bytes(), nil } var cleanEnv = []string{ "GOARCH", "GOBIN", "GOHOSTARCH", "GOHOSTOS", "GOOS", "GOROOT", "GOROOT_FINAL", "GOPATH", } func (b *Build) env() []string { env := os.Environ() for i := 0; i < len(env); i++ { for _, c := range cleanEnv { if strings.HasPrefix(env[i], c+"=") { env = append(env[:i], env[i+1:]...) } } } final := "/usr/local/go" if b.OS == "windows" { final = `c:\go` } env = append(env, "GOARCH="+b.Arch, "GOHOSTARCH="+b.Arch, "GOHOSTOS="+b.OS, "GOOS="+b.OS, "GOROOT="+b.root, "GOROOT_FINAL="+final, "GOPATH="+b.gopath, ) if b.static { env = append(env, "GO_DISTFLAGS=-s") } return env } func (b *Build) Upload(version string, filename string) error { file, err := ioutil.ReadFile(filename) if err != nil { return err } svc, err := storage.New(oauthClient) if err != nil { return err } obj := &storage.Object{ Acl: []*storage.ObjectAccessControl{{Entity: "allUsers", Role: "READER"}}, Name: filename, } _, err = svc.Objects.Insert(*storageBucket, obj).Media(bytes.NewReader(file)).Do() if err != nil { return err } sum := fmt.Sprintf("%x", sha1.Sum(file)) kind := "unknown" switch { case b.Source: kind = "source" case strings.HasSuffix(filename, ".tar.gz"), strings.HasSuffix(filename, ".zip"): kind = "archive" case strings.HasSuffix(filename, ".msi"), strings.HasSuffix(filename, ".pkg"): kind = "installer" } req, err := json.Marshal(File{ Filename: filename, Version: version, OS: b.OS, Arch: b.Arch, Checksum: sum, Kind: kind, }) if err != nil { return err } u := fmt.Sprintf("%s?%s", *uploadURL, url.Values{"key": []string{builderKey}}.Encode()) resp, err := http.Post(u, "application/json", bytes.NewReader(req)) if err != nil { return err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return fmt.Errorf("upload status: %v", resp.Status) } return nil } type File struct { Filename string OS string Arch string Version string Checksum string `datastore:",noindex"` Kind string // "archive", "installer", "source" } func setupOAuthClient() error { config := &oauth.Config{ ClientId: "999119582588-h7kpj5pcm6d9solh5lgrbusmvvk4m9dn.apps.googleusercontent.com", ClientSecret: "8YLFgOhXIELWbO", Scope: storage.DevstorageRead_writeScope, AuthURL: "https://accounts.google.com/o/oauth2/auth", TokenURL: "https://accounts.google.com/o/oauth2/token", TokenCache: oauth.CacheFile(*tokenCache), RedirectURL: "oob", } transport := &oauth.Transport{Config: config} if token, err := config.TokenCache.Token(); err != nil { url := transport.Config.AuthCodeURL("") fmt.Println("Visit the following URL, obtain an authentication" + "code, and enter it below.") fmt.Println(url) fmt.Print("Enter authentication code: ") code := "" if _, err := fmt.Scan(&code); err != nil { return err } if _, err := transport.Exchange(code); err != nil { return err } } else { transport.Token = token } oauthClient = transport.Client() return nil } func (b *Build) clean(files []string) error { for _, name := range files { err := os.RemoveAll(filepath.Join(b.root, name)) if err != nil { return err } } return nil } func exists(path string) bool { _, err := os.Stat(path) return err == nil } func readCredentials() error { name := os.Getenv("HOME") if runtime.GOOS == "windows" { name = os.Getenv("HOMEDRIVE") + os.Getenv("HOMEPATH") } name = filepath.Join(name, ".gobuildkey") f, err := os.Open(name) if err != nil { return err } defer f.Close() s := bufio.NewScanner(f) if s.Scan() { builderKey = s.Text() } return s.Err() } func cp(dst, src string) error { sf, err := os.Open(src) if err != nil { return err } defer sf.Close() fi, err := sf.Stat() if err != nil { return err } df, err := os.Create(dst) if err != nil { return err } defer df.Close() // Windows doesn't currently implement Fchmod if runtime.GOOS != "windows" { if err := df.Chmod(fi.Mode()); err != nil { return err } } _, err = io.Copy(df, sf) return err } func cpDir(dst, src string) error { walk := func(srcPath string, info os.FileInfo, err error) error { if err != nil { return err } dstPath := filepath.Join(dst, srcPath[len(src):]) if info.IsDir() { return os.MkdirAll(dstPath, 0755) } return cp(dstPath, srcPath) } return filepath.Walk(src, walk) } func cpAllDir(dst, basePath string, dirs ...string) error { for _, dir := range dirs { if err := cpDir(filepath.Join(dst, dir), filepath.Join(basePath, dir)); err != nil { return err } } return nil } func makeTar(targ, workdir string) error { f, err := os.Create(targ) if err != nil { return err } zout := gzip.NewWriter(f) tw := tar.NewWriter(zout) err = filepath.Walk(workdir, func(path string, fi os.FileInfo, err error) error { if !strings.HasPrefix(path, workdir) { log.Panicf("walked filename %q doesn't begin with workdir %q", path, workdir) } name := path[len(workdir):] // Chop of any leading / from filename, leftover from removing workdir. if strings.HasPrefix(name, "/") { name = name[1:] } // Don't include things outside of the go subdirectory (for instance, // the zip file that we're currently writing here.) if !strings.HasPrefix(name, "go/") { return nil } if *verbose { log.Printf("adding to tar: %s", name) } target, _ := os.Readlink(path) hdr, err := tar.FileInfoHeader(fi, target) if err != nil { return err } hdr.Name = name hdr.Uname = "root" hdr.Gname = "root" hdr.Uid = 0 hdr.Gid = 0 // Force permissions to 0755 for executables, 0644 for everything else. if fi.Mode().Perm()&0111 != 0 { hdr.Mode = hdr.Mode&^0777 | 0755 } else { hdr.Mode = hdr.Mode&^0777 | 0644 } err = tw.WriteHeader(hdr) if err != nil { return fmt.Errorf("Error writing file %q: %v", name, err) } if fi.IsDir() { return nil } r, err := os.Open(path) if err != nil { return err } defer r.Close() _, err = io.Copy(tw, r) return err }) if err != nil { return err } if err := tw.Close(); err != nil { return err } if err := zout.Close(); err != nil { return err } return f.Close() } func makeZip(targ, workdir string) error { f, err := os.Create(targ) if err != nil { return err } zw := zip.NewWriter(f) err = filepath.Walk(workdir, func(path string, fi os.FileInfo, err error) error { if !strings.HasPrefix(path, workdir) { log.Panicf("walked filename %q doesn't begin with workdir %q", path, workdir) } name := path[len(workdir):] // Convert to Unix-style named paths, as that's the // type of zip file that archive/zip creates. name = strings.Replace(name, "\\", "/", -1) // Chop of any leading / from filename, leftover from removing workdir. if strings.HasPrefix(name, "/") { name = name[1:] } // Don't include things outside of the go subdirectory (for instance, // the zip file that we're currently writing here.) if !strings.HasPrefix(name, "go/") { return nil } if *verbose { log.Printf("adding to zip: %s", name) } fh, err := zip.FileInfoHeader(fi) if err != nil { return err } fh.Name = name fh.Method = zip.Deflate if fi.IsDir() { fh.Name += "/" // append trailing slash fh.Method = zip.Store // no need to deflate 0 byte files } w, err := zw.CreateHeader(fh) if err != nil { return err } if fi.IsDir() { return nil } r, err := os.Open(path) if err != nil { return err } defer r.Close() _, err = io.Copy(w, r) return err }) if err != nil { return err } if err := zw.Close(); err != nil { return err } return f.Close() } type tool struct { name string commonDirs []string } var wixTool = tool{ "http://wix.sourceforge.net/, version 3.5", []string{`C:\Program Files\Windows Installer XML v3.5\bin`, `C:\Program Files (x86)\Windows Installer XML v3.5\bin`}, } var hgTool = tool{ "http://mercurial.selenic.com/wiki/WindowsInstall", []string{`C:\Program Files\Mercurial`, `C:\Program Files (x86)\Mercurial`, }, } var gccTool = tool{ "Mingw gcc; http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/", []string{`C:\Mingw\bin`}, } var windowsDeps = map[string]tool{ "gcc": gccTool, "heat": wixTool, "candle": wixTool, "light": wixTool, "cmd": {"Windows cmd.exe", nil}, "hg": hgTool, } func checkWindowsDeps() { for prog, help := range windowsDeps { absPath, err := lookPath(prog) if err != nil { log.Fatalf("Failed to find necessary binary %q in path or common locations; %s", prog, help) } if *verbose { log.Printf("found windows dep %s at %s", prog, absPath) } } } func lookPath(prog string) (absPath string, err error) { absPath, err = exec.LookPath(prog) if err == nil { return } t, ok := windowsDeps[prog] if !ok { return } for _, dir := range t.commonDirs { for _, ext := range []string{"exe", "bat"} { absPath = filepath.Join(dir, prog+"."+ext) if _, err1 := os.Stat(absPath); err1 == nil { err = nil os.Setenv("PATH", os.Getenv("PATH")+";"+dir) return } } } return } go/misc/makerelease/windows0040755000000000000000000000000012412656734016323 5ustar00rootroot00000000000000go/misc/makerelease/windows/LICENSE.rtf0100644000000000000000000000322712412656734020202 0ustar00rootroot00000000000000{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Courier New;}} {\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\lang1033\f0\fs18 Copyright (c) 2009 The Go Authors. All rights reserved.\par \par Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\par \par * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\par * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\par * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\par \par THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\par \fs20\par } go/misc/makerelease/windows/README.txt0100644000000000000000000000071612412656734020101 0ustar00rootroot00000000000000 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 go/misc/makerelease/windows/images0040755000000000000000000000000012412656734017570 5ustar00rootroot00000000000000go/misc/makerelease/windows/images/Banner.jpg0100644000000000000000000001476312412656734021566 0ustar00rootroot00000000000000JFIFHH^Photoshop 3.08BIM%Z%GFPixelmator 1.6.78BIM%vqf~CƛICC_PROFILEappl mntrRGB XYZ   acspAPPLappl-appl descodscmxlcprt8wtptrXYZ0gXYZDbXYZXrTRClchad|,bTRClgTRCldescGeneric RGB ProfileGeneric RGB Profilemluc skSK(xhrHR(caES$ptBR&ukUA*frFU(Vaeobecn RGB profilGeneri ki RGB profilPerfil RGB genricPerfil RGB Genrico030;L=89 ?@>D09; RGBProfil gnrique RVBu( RGB r_icϏProfilo RGB genericoGenerisk RGB-profil| RGB \ |Obecn RGB profil RGB Allgemeines RGB-Profilltalnos RGB profilfn RGB cϏeNN, RGB 000000Profil RGB generic  RGBPerfil RGB genricoAlgemeen RGB-profielB#D%L RGB 1H'DGenel RGB ProfiliYleinen RGB-profiiliUniwersalny profil RGB1I89 ?@>D8;L RGBEDA *91JA RGB 'D9'EGeneric RGB ProfileGenerel RGB-beskrivelsetextCopyright 2007 Apple Inc., all rights reserved.XYZ RXYZ tM=XYZ Zus4XYZ (6curvsf32 B&lExifMM*bj(1r2iHHPixelmator 1.6.72012-02-20 00:44:26 -0600:xhttp://ns.adobe.com/xap/1.0/ CC: }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( _??kkohZxt=:RkYo >~0WVnt_Me%?ffh*Ǐ W#f>8x xWT;>#XVh:RxP ']w_~ӵ7="_h6>1!sÿ|<7 ]CG[׀;_2~|;Ɖ;%xh_|Bw|q=4OhZ5 kvg̅@P@P@P@P@P@P@P@P@P@P@P@P@P@P@~T@mCVw+º?+K?Ex[x>x{_> |M  '6Euؙ,|4e~_xsƞu}_rڏ|=!+ıkσ<7 :|/,~k>/0Z~ rtA𾙧麄;~H|eqxkOӼ9qk?5= {kKO_|o XXCڵ߃4C~7bN7^/V5=+oR|S\'?T|WOh?=gKxI]3?7|4Ng??ao?>.؟u<{zBgzv۵g_富-':5mkJ@?:~~ÿ~_ ?ළ+x߅>(g$#cv|#Wӟ~4K6-4/k3EtOH~1Kާx[/',];d6ں|Γi5I{-ohZ %u<+L@>a?| Ho?jIjbRE?i:Yޅx{:VޝZj:>cg\@P@P@P@P@P@P@P@P@P@P@P@P@P@/Y[V9 ';k&h_|.Gcm/ro%5s JDe'_ Q爭zi:V{Lz/1^>~j:4KGaxڋ #x]O.-6^xVŸ~>A:]oH߃><߁kk;\8a]l5o'1jv=<|h亶WDf|H7aE%ej~o{?[ ;2\`fKR7sMu<8[@P@P@P@P@P@P@P@P@P@P@P@P@P@(lڏmZ~)<#gZ>co|.uK|I5I凜(/)l-sI/S㾕i"{W᷈PB nePv ^o8XY0[ƒƧ~ ( ( ( ( ( ( ( ( ( ( ( ( ( (>_)n}i"|EkƉV+MɥuE.f1@>?1?-߅~5Yi!-mKw0m67qn-ej( ( ( ( ( ( ( ( ( ( ( ( ( ( |WGU|!|UKV 2|>}W߄"ܦ!ᗇ5Oi<5|? k: a_Oi[xs^|='mCߋo x}SGGK'U->$:燭{moŢz?kmg7.`?h_GgI"` YMSKi-/!|`(]CzF[ǁ7uɵo_>!~,|H};]Ǐt#|lt A;AмSSïhu=NOZ_jqpEHjqHEQ@UUU@(P@P@P@P@P@P@P@P@P@P@P@P@P@P@{;MG~! [k V+KK nmnWxdx9 _n3뻧k7}: }c SHZK_ x#vh hiZ5QۨP@go/misc/makerelease/windows/images/Dialog.jpg0100644000000000000000000004005412412656734021550 0ustar00rootroot00000000000000JFIFHH^Photoshop 3.08BIM%Z%GFPixelmator 1.6.78BIM%vqf~CƛICC_PROFILEappl mntrRGB XYZ   acspAPPLappl-appl descodscmxlcprt8wtptrXYZ0gXYZDbXYZXrTRClchad|,bTRClgTRCldescGeneric RGB ProfileGeneric RGB Profilemluc skSK(xhrHR(caES$ptBR&ukUA*frFU(Vaeobecn RGB profilGeneri ki RGB profilPerfil RGB genricPerfil RGB Genrico030;L=89 ?@>D09; RGBProfil gnrique RVBu( RGB r_icϏProfilo RGB genericoGenerisk RGB-profil| RGB \ |Obecn RGB profil RGB Allgemeines RGB-Profilltalnos RGB profilfn RGB cϏeNN, RGB 000000Profil RGB generic  RGBPerfil RGB genricoAlgemeen RGB-profielB#D%L RGB 1H'DGenel RGB ProfiliYleinen RGB-profiiliUniwersalny profil RGB1I89 ?@>D8;L RGBEDA *91JA RGB 'D9'EGeneric RGB ProfileGenerel RGB-beskrivelsetextCopyright 2007 Apple Inc., all rights reserved.XYZ RXYZ tM=XYZ Zus4XYZ (6curvsf32 B&lExifMM*bj(1r2iHHPixelmator 1.6.72012-02-20 00:09:27 -06008xhttp://ns.adobe.com/xap/1.0/ CC8 }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ??( ( ( ( (?1rvMq@P@P@P@P@P@P@P@P@P@P@=P@P@P@P@P@9E&߸ ( ( ( ( ( ( ( ( ( (? ( ( ( ( ( cݓP@P@P@P@P@P@P@P@P@P@P@@P@P@P@P@P1Qɿ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((dP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@_o( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ??/7P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@c~?( ( ( ( ( ( ( ( ( ( z( ( ( ( (?1rvMq@P@P@P@P@P@P@P@P@P@P@=P@P@P@VVjƩ{*AgVW:0D9'݂qF@(~)ߴ/ U/M3#zį0=mDMr4{l:f)A""­5Vz|>hZh^ez XQ㯊?W ~Z?hj?<;1+|Lj0ڦo OSEg€w]|5͞ octdyLxw/x[XBYJt/kK4/a2?g? uO|A~"kq}{Oo_Vt_k7pkIc.5ڈtA|a8F1,GbF 2 ??/7P@P@P@P@P@P@P@P@P@P@P@P@zW[Cv%Z(VBoiaB8" y:|D0J?b_ 4Wh8t/ٷ.&xu\ݒC̒,QČ '?^W7|x4oO>xfd/?|MM0=ωͦZ YAs6-g?'woI.e UWxJlS㝃7 Ho`l[k}jPӐb Lq,HK#qIDDPY؅UPK H?o9 [⯉mþ+>2i?jmvVZVWX/Wih?eխԞo^ψ>'_sb P ]ukzpSU>Zσ亖ɔȢ|aס`d(&1(?1rvMq@P@P@P@P@P@P@P@P@P@P@=8s㯋=>o ǺxG@7׈A\-閠(r% l j2~'~ͬGZ~П{LYg>$xNsкػ[Ht;| u{&ӑ}QigPy(S'o zYĞ'y쮵mL|ٶ\GuoWt c-p@>)F "4PaH5q/:[B%goZOw0{>׏k7$M$m ?NJχoSo5.w'¿ ? x^#"ծ~&x~q)RH|9p{j7+M4qO_k/??axS>??e:Fk1ΒZ?¿aO <KmgY/G''S|5sKhNnxoh~.jV>-?zM>]H[k7`x—V^ui/ߵ~O|MeKl ֺ?EtMlPGWoC|r_MS_,g%l%5[YZBJŲ˪ذ h?P_OAGM&[焬hcě9Ժ>%0MwMѭS ((dP@P@P@P@P@P@P@P@P@P@P@Gx]уuu9VVe 9vwfwvgwv,Iff$f$bI$I4' piuwϊfHP' U׿5ى0x/vH('@t|-1#bcGˇ4lڿsgf'mdߦwjoGG˹6;ݮ}(+d KMSF}_2*xF{m.@ x I&`[Au}m>\::LF7?ߴ%΃Z~/R=^5_,5-5_G1#t F0 o-cŸN/'Fmox:x6?x~Y-mt sI+1nKE kZX?QK;fBYk/~_a~7 =nai;v1IIǖ/Z}KQU4[ ^趩hxT _ѡitOjoľ4ZfozjxG{@<j_%?߂:_ox|)ޓ}?kv<]ao}>c}Xk jvV:v] o# oQtq}[M7;C67qҮ~!sGi NMōդzmW?  ((dP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@_o( ( ( ( ( ( ( ( ( ( ( aZoxwŮ Ե=> ]gUm.M.>s׎?gJ-ŗ>$>gKk$$>xuZMHGgsqZ.x~Ai|)~#x|Pֵ?fW|!0_ K{B5 xM gk_VG Clk ӵ-_I^|DW[h~!|EEx֠7a(O |;? ]'Vڃi1x [}n]#ǑhmCҴ.M ( ( ( ((dP@P@P@P@P@P@P@P@P@P@P.?o<l_4x?kOY-_mGBu{D|Ss˝V 5ˤI|)O? |a6KM?>DžIYlfH/!ӥ4EB[ "x<~~_u~+mKþ jֻ?xoEI[5x:Ώ!Ӵ]7q=ӟFko|33&[7^*O+_xZKf4^>=",A2 v NI g'Y: }I<P _x>noxJX̆Q>'7 x$YY|Ai_|8_>-r!bgibxQ%SΖHT"tH0id ʿ(,O"se0@n<"fǖ%h՜F[yEf;]k5 -/!m-&gZ|,~o i-wowEfO5jM֍ƷiSVqx#AvE@<_ ZxkNJ<>uK54MiƛqjB6pܽ ,m,jI_1Pz_emW 4bt"guoS1Gq$zf!`e:|>u׍xS@WkoD_Z_5G$ ď";"B (?1rvMq@P@P@P@P@P@P@P@P@P@P@=M_k2)|{5ͦֈ.Ӽ)d #ƺg ]2D%J o6֞&+[;}gmV:p] #qs28@|9!akeZxcEҴKM;L[6pDFɠ--k[,`@*~|.k~8~EZxU{,?Zot-%?/~%' S|1/4_xGR:ž7j_~(f=x/͇<>&4xYЮl Վ_$:ίq:0ߖcrm[؃~/Ҽ|_:SIkwk~)?cÿهf˟04 o@/j潫?0>x8ZxH]0Y? }~}ťx[Vmm ᮟk> |ӼQg~p6ú~(Əǩkֺ i1_|GF /x߆Y>0_om0~4Z'٣6&u_ zޤVm~4?km;k>?/$xĞ.񖣯 gsY.u}S,@?1rvMq@P@P@P@P@P@P@P@P@P@P@=u?fO8|fߋ|''WoYxsEv:gk-OZ{qkfe F]O]Fwv`?_>(r|w fV֥ggMwjcmws~%l\ ɟck؛khߴo&wg?0e-Ye 4Sh <wWZm/~"n׃/v (c S7SC^2<]RZAi?@ĐZ/+5j!K$fk747-5o x:7:Vz]wfRC{u1]_ ՝Q\[ѣJ?ÿ_wU/? m><> >$779/ _O]]nxL_^h.\^4i@?4on/o'yn$igyr$J$9,I$Pl~ ~ɺfLx}oKom;޷Gd.|y<:7xgŞ%բgO>/wh_#<35k~jn}x_Qo_:޻Q5hگfe}vѽ sFе=*UpE}q7ɠϦO+7o imAGwzLIeq^𾅤U{{@?SǾ-AG>w@>xC/ i)jԼg{ow-} D)ĿU-KZԟڦB{{Oneu46=Zơvg/乿֠ ( ( ( ( ( ( ( ( ( (W?~F߃%W6'_躅kU" YKkyH[xUΥծ |?]]KhS&P:un ͔j ;uh#Ӽ-vηhwVjZ~;6Okp_o( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ??/7P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@c~?( ( ( ( ( ( ( ( ( ( z( ( ( ( (?1rvMq@P@P@P@P@P@P@P@P@P@P@=P@P@P@P@P@9E&߸ ( ( ( ( ( ( ( ( ( (? ( ( ( ( ( cݓP@P@P@P@P@P@P@P@P@P@P@@P@P@P@P@P1Qɿ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((dP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@_o( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ??/7P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@c~?( ( ( ( ( ( ( ( ( ( z( ( ( ( (?1rvMq@P@P@P@P@P@P@P@P@P@P@=P@P@P@P@P@9E&߸ ( ( ( ( ( ( ( ( ( (? ( ( ( ( ( cݓP@P@P@P@P@P@P@P@P@P@P@@P@P@P@P@P1Qɿ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((dP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@_o( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ??/7P@P@P@P@P@P@P@P@P@P@go/misc/makerelease/windows/images/DialogLeft.jpg0100644000000000000000000003124112412656734022361 0ustar00rootroot00000000000000JFIFHH^Photoshop 3.08BIM%Z%GFPixelmator 1.6.78BIM%vqf~CƛICC_PROFILEappl mntrRGB XYZ   acspAPPLappl-appl descodscmxlcprt8wtptrXYZ0gXYZDbXYZXrTRClchad|,bTRClgTRCldescGeneric RGB ProfileGeneric RGB Profilemluc skSK(xhrHR(caES$ptBR&ukUA*frFU(Vaeobecn RGB profilGeneri ki RGB profilPerfil RGB genricPerfil RGB Genrico030;L=89 ?@>D09; RGBProfil gnrique RVBu( RGB r_icϏProfilo RGB genericoGenerisk RGB-profil| RGB \ |Obecn RGB profil RGB Allgemeines RGB-Profilltalnos RGB profilfn RGB cϏeNN, RGB 000000Profil RGB generic  RGBPerfil RGB genricoAlgemeen RGB-profielB#D%L RGB 1H'DGenel RGB ProfiliYleinen RGB-profiiliUniwersalny profil RGB1I89 ?@>D8;L RGBEDA *91JA RGB 'D9'EGeneric RGB ProfileGenerel RGB-beskrivelsetextCopyright 2007 Apple Inc., all rights reserved.XYZ RXYZ tM=XYZ Zus4XYZ (6curvsf32 B&lExifMM*bj(1r2iHHPixelmator 1.6.72012-02-20 00:09:48 -06008xhttp://ns.adobe.com/xap/1.0/ CC8 }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ??( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( t=kĚT׵Bet]>T類H-,,bgbc'v$ 4?f/G6k?g=z>4%~(t5 !ItF @^hhCKu]r7E5 cQ$AvW:Afmm#yJX썰'~/ 3?>.oK'ƻObFa}vHMEq5bA r€ Ŭvh_iR@>t<;Hֿo?S?~)I**kS~myt_>'j^UTzׁ̞ȷ;C%Ry`ÏK~?POW-=l>7m%k~8ζIm {c3^]giV֧@ֵD׏ sm'\MRM?n$d3LW-dp+ axc(Ouß~!GWj U[׎F#\ 5kǼko4ӯ4R(wK f`$v$`@  ( ( |J +OK| /x8D~ҵ yq*( 0[QWᶕr|o ΚBG]2Mt",,H|h/kk|x4oo_t,߁~2j=b64;{=5o|F/57ϣxFN.{?H>]x[T~qKS\l6mx!x?G¿ j9^ǃ\'--.,T6&|iJ4Pkxo0ZJFj[!hGP_hDS/H<Ǹ *5NrRC|XIF֖[V>|AR᠋I??.p/~#kxu-\{U$[<{'rH`x3@Sa߄ ŭ4"g yR_*Ķ5og)WEdiXHw?f_;gMG_ ʲ\/Mo|7Mm5~U8o?nm૏QɴL|]rB ZW?_]/QxM_>?xNs_[|m_mou[IOu[ǧ m$O⇊>?~_Gs~j5Oi4 Gx{_u3: .O|Wm&Zgc[Ri~>8ۿY_Z?`$㯅?=s@)~Z|Q=k+o􏅿 IO]SLWhOߴuC/:ᦔQÆ/|9$32d8ʀ|skg5%ji}1]ssbgʑZ=k`?߳>uj^]{↥q}%OLj~u'Hy kWe9h5V/|'6d _|5mt9i_Kcdr(]=D vZZ_F"ƿ*nﭼG@ ܷ?hht6[J<ֵ 3 :V|dq^ I" qwksVMk ۟uk GM#xJxcZ4doP]@ ^FMFL{<>.y)7z]؇xc2]x:ㅧK+o/@Ѥ |[g!ռq4vVKKր ( ( ( K;oπ?nwkږ?LMBQ]C~/DlAoiu7OిkYtbƨ-4_xᎧX^UvzU4hVV6:Phzɦawu[y6T8KKoOO%QZRzoÈ4/xH{COҴ'ÍpKOS׮N??pA>2~fk^Qmƺ惪3v~񅕞~ڿumYfcTK5H_J~*~I@ eپ&H-x'e~l [G^j( ( ( ( ( ( (>oc~ /=?~2x? |+c[}Oj(O_M=oXx:n^Hf]nÿE ú+C3KAVi/ .{x+VtRK}Þ,>?fQҭ<I-[K,<[H̅< ( ( ( (?^LA>1:g/|jּ=wx⇏ k/> ӯ7ɮ?H'n4x+I~i~i鿴/>?irOnAY8 5 wO]xXм[G#O7]i׎<7recGڇ|&𽮷>k]~9_jZeuMCТ~+D>: ٣ğQ)|1`xzׇ`|;|UDqx-&HmiVֺfmknP@P@P@P@P' '_7v[%~*x3RFuH4?Ir-/^|/j> SvdHc,#>iڔ0x;/Gjh_Xf~sm,Rr?c_:ִ_>Xr\׋|SxY|5`dQ޿jZNn.1ogk1!4-?{(_|#>Ğ))V:|NFMnSYҭV[iYZ<4ID䓀2I'ܓI=O"/~}ρ5_jWz}g'l-}KO׊5ӭ"g7T+~%i/? f){Yv_eW _\cz-6k:5ߕ'مҭo'hX3*$IKS;_OZ\iv imr.,dP>:u=3NZ!aj$ԕ4jO hvu|C_ٓ– I 2CKmnFE'-o>u!K?x>m0𽗎.<)X<j7Z> -R/ JyxWImH .`YC) ߄w~~Wu?u^9mlZY|5}mhBkյ-̖.x|@g:|3_O ,"գߌ<)xg_K)RMZZh h3H2FqP@P@l~^*+ŗeuw7C#F|~;[s,ZvV QD־h^!_4rZiz6f[{ ɲ3ƫ)-O*8G?KmROt;_:4:OV_h:u) {}emkmo,( mQ@k@/x'<xE^&cWI5-ORhq\44PG,G~~??8i >}aa=7Oi ~9Gu߇j>#~4'IdV=%2O^#^[]|F7zDT)'K%bM;J/?#N|Qx_|4?$1k_ً>LJuKu k}t4.^ }OE2֛|O?Ѵ8$Hl|Q {2 z4(u+bZ.|+0?&oٗQ#F>5tbͭ~px v_߳ƥldVր>kk'׿b?k+^$ӿd2z?|{+ }_%Ǎ8UѴW[G%o ?l_޽5O<|).|;wnw/@|1k:o-k/Z_?ag!hϏ/V=+PØ?po ~>.ewsA~֫? @>9xCi?xo |/gk/B=IuM@ ~_gžxKw6uX\|'x+Ƌ_(Oj$xAVL>ip h~ه_4/i(5߅uK߅ _Ca%*||3|N¯Q >8߄/=[Z5++ 繷d)K35?dڇ߱~#ZŞ$tmU>'y􉴿~"ߊ7ω}σ4 ǣj>=DF (>&xÚOS#{ ׍&[[iUz7&My,G{vy7|U_xA5_¾-ak.wsڭ麦y WvsCuguW4hҴOֵ1[C!־?Ư#Up_ |QB* iдʵK_G5>U\x'?_~o|_)0>|4<>G|1Gd| ||N߇ ~#žU Dt{14h|;xJMKo' cǚῄ^4> ·qaVt}ug6a[8ZZ$0D|y⟉- }gSJU[ Lk{H^+85+>KuLP_ٯW?!?I'^ >0֗xBz6xsZLKX5+$P[o|J/|A^$񎱨j:s}bTԗ)u4ڛHcͅT*. ( ( (Uߎ5 xozߌW;RoOUxkܛ]7]MGU&R:]&{6RZ9J(4|/o65 +/voY,-zZjJu=7KKj+X p7 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( go/misc/makerelease/windows/images/gopher.ico0100644000000000000000000007272612412656734021642 0ustar00rootroot0000000000000000 %f  & h600 %;  ` hnq(0` XXXݑxpxxxthxlpxpp`pݑtplpxhxݑhxlDDhL\hpt`ph|xtpphpppxݑP\hlxDDpl|p]] pxx`pl|ݑXdp`ppxxxX`hݑpxX`ht|hppxppthhh`xXhxplxpxxlxxhxhP\hxlHPXݑ`hpphp|Tdt@P`h|`hxdxpp`th`phhp`tPX``pdxphpxHXhXptxhP`pphxhXhxxP`pxXhxpll`p(088@H`xpxp```t`pxphxhPPP000LPPtPhxxhxL\hl||xpt\hphpXXXpll|P`hݑx<<<,,(phHXdXdl`ddTdt8@H]] |pxx`xHXhXhxt|Tdtlxlt|XhpdxpDDDpxXdp?????????( @ \\\]] D"ttxxpxttx|Dphx]] z||ldx|x]] xtxh|Tlhzl`txTlh\htPdt`x`x\pd| \th]] xptxTdpt|`r|xthzTblxzrLNP|btv^n|`xvpp|rN\h@NZ?(  t. b' 0`3 ]z_n{`jt"PR\d^mzߑSdrj|@t@@?(0` TTT~~@y@@3rxuxvdukryrpao|s~lmps~iv@@jzkg~|K]louao{|g{zrn33pjmqr{f3R\elxmm{|r~3nv~z]rm{Yeo_qrwxvU`ioy~Zag@tjmqwptqgfgU~byUYl|rjxrx|jwwgziP]ixl|HR[U*bjqoi~}r{UfuARad{^lwdxlq_ti_phlpauQW\bseypbnxIYh[nrwjPaptfwk  WizxP`nzU[lzooo_p*3:8DNczox~r`_^udsyo~fx@iOPP210KNRuUPfxvgyM]ko|}{rtUU\hrhq[[[pnl}R_kz<<<.,*oh~JXdUZdmadgVes7AIUU}nywbvFWf[jvu~UfumwlszZfpexp33ozYep??????????( @ ]]]~utvxpx¾uuy~pix{{~kdz}yvtxi|Sk~g{l_uþxUnk\htRevbzbw]qd ]vhxrwzTesw}as|xti{UbmxzrMOQ}cuv_o}axwqq}rN\iAN[_(  ]z_n{`jtR\d^mzSdrj|@t@@go/misc/makerelease/windows/installer.wxs0100644000000000000000000001324312412656734021142 0ustar00rootroot00000000000000 1 VersionNT >= 500 go/misc/nacl0040755000000000000000000000000012412656737013273 5ustar00rootroot00000000000000go/misc/nacl/README0100644000000000000000000000563612412656737014241 0ustar00rootroot00000000000000Native Client ============= This document outlines the basics of building and developing the Go runtime and programs in the Native Client (NaCl) environment. Go 1.3 supports two architectures * nacl/386 which is standard 386. * nacl/amd64p32 which is a 64 bit architecture, where the address space is limited to a 4gb window. For background it is recommended that you read http://golang.org/s/go13nacl. Prerequisites ------------- Native Client programs are executed inside a sandbox, the NaCl runtime. This runtime must be installed before you can use NaCl programs. The NaCl distribution comes with an installer which ensures you have access to the latest version of the runtime. The version tracks the Chrome numbering scheme. # Download NaCl Download nacl_sdk.zip file from https://developers.google.com/native-client/dev/sdk/download, and unpack it. I chose /opt/nacl_sdk # Update The zip file contains a small skeleton that can be used to download the correct sdk. These are released every 6-8 weeks, in line with Chrome releases. % cd /opt/nacl_sdk % ./naclsdk update At this time pepper_33 is the stable version. If naclsdk downloads a later version, please adjust accordingly. The cmd/go helper scripts expect that the runtime loaders, sel_ldr_x86_{32,64} are in your path. I find it easiest to make a symlink from the NaCl distribution to my $GOPATH/bin directory. % ln -nfs /opt/nacl_sdk/pepper_33/tools/sel_ldr_x86_32 $GOPATH/bin/sel_ldr_x86_32 % ln -nfs /opt/nacl_sdk/pepper_33/tools/sel_ldr_x86_64 $GOPATH/bin/sel_ldr_x86_64 Support scripts --------------- Symlink the two scripts in this directory into your $PATH, just as you did with NaCl sdk above. % ln -nfs $GOROOT/go/misc/nacl/go_nacl_amd64p32_exec $GOPATH/bin/go_nacl_amd64p32_exec % ln -nfs $GOROOT/go/misc/nacl/go_nacl_386_exec $GOPATH/bin/go_nacl_386_exec Building and testing -------------------- Building for NaCl is similar to cross compiling for other platforms. However, as it is not possible to ever build in a `native` NaCl environment, the cmd/go tool has been enhanced to allow the full build, all.bash, to be executed, rather than just the compile stage, make.bash. The cmd/go tool knows that if GOOS is set to `nacl` it should not try to execute any binaries itself. Instead it passes their execution to a support script which sets up a Native Client environment and invokes the NaCl sandbox. The script's name has a special format, go_$GOOS_$GOARCH_exec, so cmd/go can find it. In short, if the support scripts are in place, the cmd/go tool can be used as per normal. # Build and test Go for NaCl NaCl does not permit direct file system access. Instead, package syscall provides a simulated file system served by in-memory data. The script nacltest.bash is the NaCl equivalent of all.bash. It builds NaCl with an in-memory file system containing files needed for tests, and then it runs the tests. % cd go/src % env GOARCH=amd64p32 ./nacltest.bash go/misc/nacl/go_nacl_386_exec0100755000000000000000000000032212412656734016275 0ustar00rootroot00000000000000#!/bin/bash eval $(go env) export NACLENV_GOARCH=$GOARCH export NACLENV_GOOS=$GOOS export NACLENV_GOROOT=/go export NACLENV_NACLPWD=$(pwd | sed "s;$GOROOT;/go;") exec sel_ldr_x86_32 -l /dev/null -S -e "$@" go/misc/nacl/go_nacl_amd64p32_exec0100755000000000000000000000032112412656734017214 0ustar00rootroot00000000000000#!/bin/bash eval $(go env) export NACLENV_GOARCH=$GOARCH export NACLENV_GOOS=$GOOS export NACLENV_GOROOT=/go export NACLENV_NACLPWD=$(pwd | sed "s;$GOROOT;/go;") exec sel_ldr_x86_64 -l /dev/null -S -e "$@" go/misc/nacl/mkzip.go0100644000000000000000000001157312412656737015037 0ustar00rootroot00000000000000// 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. // Mkzip creates a zip file from a 'proto' file describing the contents. // // The proto file is inspired by the Plan 9 mkfs prototype file format. // It describes a file tree, one directory per line, with leading tab // indentation marking the tree structure. Each line contains a leading // name field giving the name of the file to copy into the zip file, // and then a sequence of optional key=value attributes to control // the copy. The only known attribute is src=foo, meaning copy the // actual data for the file (or directory) from an alternate location. package main import ( "archive/zip" "bufio" "flag" "fmt" "io" "io/ioutil" "log" "os" "path" "path/filepath" "strings" ) func usage() { fmt.Fprintf(os.Stderr, "usage: mkzip [-r root] src.proto out.zip\n") os.Exit(2) } func sysfatal(format string, args ...interface{}) { fmt.Fprintf(os.Stderr, "mkzip: %s\n", fmt.Sprintf(format, args...)) os.Exit(2) } var ( root = flag.String("r", ".", "interpret source paths relative to this directory") gopackage = flag.String("p", "", "write Go source file in this package") ) type stack struct { name string src string depth int } func main() { log.SetFlags(0) flag.Usage = usage flag.Parse() args := flag.Args() if len(args) != 2 { usage() } rf, err := os.Open(args[0]) if err != nil { sysfatal("%v", err) } r := bufio.NewScanner(rf) zf, err := os.Create(args[1]) if err != nil { sysfatal("%v", err) } var w io.Writer = zf if *gopackage != "" { fmt.Fprintf(zf, "package %s\n\nfunc init() {\n\tunzip(\"", *gopackage) gw := &goWriter{b: bufio.NewWriter(w)} defer func() { if err := gw.Close(); err != nil { sysfatal("finishing Go output: %v", err) } }() w = gw } z := zip.NewWriter(w) lineno := 0 addfile := func(info os.FileInfo, dst string, src string) { zh, err := zip.FileInfoHeader(info) if err != nil { sysfatal("%s:%d: %s: %v", args[0], lineno, src, err) } zh.Name = dst zh.Method = zip.Deflate if info.IsDir() && !strings.HasSuffix(dst, "/") { zh.Name += "/" } w, err := z.CreateHeader(zh) if err != nil { sysfatal("%s:%d: %s: %v", args[0], lineno, src, err) } if info.IsDir() { return } r, err := os.Open(src) if err != nil { sysfatal("%s:%d: %s: %v", args[0], lineno, src, err) } defer r.Close() if _, err := io.Copy(w, r); err != nil { sysfatal("%s:%d: %s: %v", args[0], lineno, src, err) } } var stk []stack for r.Scan() { line := r.Text() lineno++ s := strings.TrimLeft(line, "\t") prefix, line := line[:len(line)-len(s)], s if i := strings.Index(line, "#"); i >= 0 { line = line[:i] } f := strings.Fields(line) if len(f) == 0 { continue } if strings.HasPrefix(line, " ") { sysfatal("%s:%d: must use tabs for indentation", args[0], lineno) } depth := len(prefix) for len(stk) > 0 && depth <= stk[len(stk)-1].depth { stk = stk[:len(stk)-1] } parent := "" psrc := *root if len(stk) > 0 { parent = stk[len(stk)-1].name psrc = stk[len(stk)-1].src } if strings.Contains(f[0], "/") { sysfatal("%s:%d: destination name cannot contain slash", args[0], lineno) } name := path.Join(parent, f[0]) src := filepath.Join(psrc, f[0]) for _, attr := range f[1:] { i := strings.Index(attr, "=") if i < 0 { sysfatal("%s:%d: malformed attribute %q", args[0], lineno, attr) } key, val := attr[:i], attr[i+1:] switch key { case "src": src = val default: sysfatal("%s:%d: unknown attribute %q", args[0], lineno, attr) } } stk = append(stk, stack{name: name, src: src, depth: depth}) if f[0] == "*" || f[0] == "+" { if f[0] == "*" { dir, err := ioutil.ReadDir(psrc) if err != nil { sysfatal("%s:%d: %v", args[0], lineno, err) } for _, d := range dir { addfile(d, path.Join(parent, d.Name()), filepath.Join(psrc, d.Name())) } } else { err := filepath.Walk(psrc, func(src string, info os.FileInfo, err error) error { if err != nil { return err } if src == psrc { return nil } if psrc == "." { psrc = "" } name := path.Join(parent, filepath.ToSlash(src[len(psrc):])) addfile(info, name, src) return nil }) if err != nil { sysfatal("%s:%d: %v", args[0], lineno, err) } } continue } fi, err := os.Stat(src) if err != nil { sysfatal("%s:%d: %v", args[0], lineno, err) } addfile(fi, name, src) } if err := z.Close(); err != nil { sysfatal("finishing zip file: %v", err) } } type goWriter struct { b *bufio.Writer } func (w *goWriter) Write(b []byte) (int, error) { for _, c := range b { fmt.Fprintf(w.b, "\\x%02x", c) } return len(b), nil } func (w *goWriter) Close() error { fmt.Fprintf(w.b, "\")\n}\n") w.b.Flush() return nil } go/misc/nacl/testdata0040755000000000000000000000000012412656734015101 5ustar00rootroot00000000000000go/misc/nacl/testdata/bin0040755000000000000000000000000012412656734015651 5ustar00rootroot00000000000000go/misc/nacl/testdata/bin/placeholder0100644000000000000000000000000012412656734020120 0ustar00rootroot00000000000000go/misc/nacl/testdata/empty0100644000000000000000000000000012412656734016224 0ustar00rootroot00000000000000go/misc/nacl/testdata/group0100644000000000000000000000016412412656734016235 0ustar00rootroot00000000000000nobody:*:-2: nogroup:*:-1: wheel:*:0:root daemon:*:1:root kmem:*:2:root sys:*:3:root tty:*:4:root operator:*:5:root go/misc/nacl/testdata/hosts0100644000000000000000000000002412412656734016234 0ustar00rootroot00000000000000127.0.0.1 localhost go/misc/nacl/testdata/mime.types0100644000000000000000000015001212412656734017171 0ustar00rootroot00000000000000# This file maps Internet media types to unique file extension(s). # Although created for httpd, this file is used by many software systems # and has been placed in the public domain for unlimited redisribution. # # The table below contains both registered and (common) unregistered types. # A type that has no unique extension can be ignored -- they are listed # here to guide configurations toward known types and to make it easier to # identify "new" types. File extensions are also commonly used to indicate # content languages and encodings, so choose them carefully. # # Internet media types should be registered as described in RFC 4288. # The registry is at . # # MIME type (lowercased) Extensions # ============================================ ========== # application/1d-interleaved-parityfec # application/3gpp-ims+xml # application/activemessage application/andrew-inset ez # application/applefile application/applixware aw application/atom+xml atom application/atomcat+xml atomcat # application/atomicmail application/atomsvc+xml atomsvc # application/auth-policy+xml # application/batch-smtp # application/beep+xml # application/calendar+xml # application/cals-1840 # application/ccmp+xml application/ccxml+xml ccxml application/cdmi-capability cdmia application/cdmi-container cdmic application/cdmi-domain cdmid application/cdmi-object cdmio application/cdmi-queue cdmiq # application/cea-2018+xml # application/cellml+xml # application/cfw # application/cnrp+xml # application/commonground # application/conference-info+xml # application/cpl+xml # application/csta+xml # application/cstadata+xml application/cu-seeme cu # application/cybercash application/davmount+xml davmount # application/dca-rft # application/dec-dx # application/dialog-info+xml # application/dicom # application/dns application/docbook+xml dbk # application/dskpp+xml application/dssc+der dssc application/dssc+xml xdssc # application/dvcs application/ecmascript ecma # application/edi-consent # application/edi-x12 # application/edifact application/emma+xml emma # application/epp+xml application/epub+zip epub # application/eshop # application/example application/exi exi # application/fastinfoset # application/fastsoap # application/fits application/font-tdpfr pfr # application/framework-attributes+xml application/gml+xml gml application/gpx+xml gpx application/gxf gxf # application/h224 # application/held+xml # application/http application/hyperstudio stk # application/ibe-key-request+xml # application/ibe-pkg-reply+xml # application/ibe-pp-data # application/iges # application/im-iscomposing+xml # application/index # application/index.cmd # application/index.obj # application/index.response # application/index.vnd application/inkml+xml ink inkml # application/iotp application/ipfix ipfix # application/ipp # application/isup application/java-archive jar application/java-serialized-object ser application/java-vm class application/javascript js application/json json application/jsonml+json jsonml # application/kpml-request+xml # application/kpml-response+xml application/lost+xml lostxml application/mac-binhex40 hqx application/mac-compactpro cpt # application/macwriteii application/mads+xml mads application/marc mrc application/marcxml+xml mrcx application/mathematica ma nb mb # application/mathml-content+xml # application/mathml-presentation+xml application/mathml+xml mathml # application/mbms-associated-procedure-description+xml # application/mbms-deregister+xml # application/mbms-envelope+xml # application/mbms-msk+xml # application/mbms-msk-response+xml # application/mbms-protection-description+xml # application/mbms-reception-report+xml # application/mbms-register+xml # application/mbms-register-response+xml # application/mbms-user-service-description+xml application/mbox mbox # application/media_control+xml application/mediaservercontrol+xml mscml application/metalink+xml metalink application/metalink4+xml meta4 application/mets+xml mets # application/mikey application/mods+xml mods # application/moss-keys # application/moss-signature # application/mosskey-data # application/mosskey-request application/mp21 m21 mp21 application/mp4 mp4s # application/mpeg4-generic # application/mpeg4-iod # application/mpeg4-iod-xmt # application/msc-ivr+xml # application/msc-mixer+xml application/msword doc dot application/mxf mxf # application/nasdata # application/news-checkgroups # application/news-groupinfo # application/news-transmission # application/nss # application/ocsp-request # application/ocsp-response application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy mobipocket-ebook application/oda oda application/oebps-package+xml opf application/ogg ogx application/omdoc+xml omdoc application/onenote onetoc onetoc2 onetmp onepkg application/oxps oxps # application/parityfec application/patch-ops-error+xml xer application/pdf pdf application/pgp-encrypted pgp # application/pgp-keys application/pgp-signature asc sig application/pics-rules prf # application/pidf+xml # application/pidf-diff+xml application/pkcs10 p10 application/pkcs7-mime p7m p7c application/pkcs7-signature p7s application/pkcs8 p8 application/pkix-attr-cert ac application/pkix-cert cer application/pkix-crl crl application/pkix-pkipath pkipath application/pkixcmp pki application/pls+xml pls # application/poc-settings+xml application/postscript ai eps ps # application/prs.alvestrand.titrax-sheet application/prs.cww cww # application/prs.nprend # application/prs.plucker # application/prs.rdf-xml-crypt # application/prs.xsf+xml application/pskc+xml pskcxml # application/qsig application/rdf+xml rdf application/reginfo+xml rif application/relax-ng-compact-syntax rnc # application/remote-printing application/resource-lists+xml rl application/resource-lists-diff+xml rld # application/riscos # application/rlmi+xml application/rls-services+xml rs application/rpki-ghostbusters gbr application/rpki-manifest mft application/rpki-roa roa # application/rpki-updown application/rsd+xml rsd application/rss+xml rss application/rtf rtf # application/rtx # application/samlassertion+xml # application/samlmetadata+xml application/sbml+xml sbml application/scvp-cv-request scq application/scvp-cv-response scs application/scvp-vp-request spq application/scvp-vp-response spp application/sdp sdp # application/set-payment application/set-payment-initiation setpay # application/set-registration application/set-registration-initiation setreg # application/sgml # application/sgml-open-catalog application/shf+xml shf # application/sieve # application/simple-filter+xml # application/simple-message-summary # application/simplesymbolcontainer # application/slate # application/smil application/smil+xml smi smil # application/soap+fastinfoset # application/soap+xml application/sparql-query rq application/sparql-results+xml srx # application/spirits-event+xml application/srgs gram application/srgs+xml grxml application/sru+xml sru application/ssdl+xml ssdl application/ssml+xml ssml # application/tamp-apex-update # application/tamp-apex-update-confirm # application/tamp-community-update # application/tamp-community-update-confirm # application/tamp-error # application/tamp-sequence-adjust # application/tamp-sequence-adjust-confirm # application/tamp-status-query # application/tamp-status-response # application/tamp-update # application/tamp-update-confirm application/tei+xml tei teicorpus application/thraud+xml tfi # application/timestamp-query # application/timestamp-reply application/timestamped-data tsd # application/tve-trigger # application/ulpfec # application/vcard+xml # application/vemmi # application/vividence.scriptfile # application/vnd.3gpp.bsf+xml application/vnd.3gpp.pic-bw-large plb application/vnd.3gpp.pic-bw-small psb application/vnd.3gpp.pic-bw-var pvb # application/vnd.3gpp.sms # application/vnd.3gpp2.bcmcsinfo+xml # application/vnd.3gpp2.sms application/vnd.3gpp2.tcap tcap application/vnd.3m.post-it-notes pwn application/vnd.accpac.simply.aso aso application/vnd.accpac.simply.imp imp application/vnd.acucobol acu application/vnd.acucorp atc acutc application/vnd.adobe.air-application-installer-package+zip air application/vnd.adobe.formscentral.fcdt fcdt application/vnd.adobe.fxp fxp fxpl # application/vnd.adobe.partial-upload application/vnd.adobe.xdp+xml xdp application/vnd.adobe.xfdf xfdf # application/vnd.aether.imp # application/vnd.ah-barcode application/vnd.ahead.space ahead application/vnd.airzip.filesecure.azf azf application/vnd.airzip.filesecure.azs azs application/vnd.amazon.ebook azw application/vnd.americandynamics.acc acc application/vnd.amiga.ami ami # application/vnd.amundsen.maze+xml application/vnd.android.package-archive apk application/vnd.anser-web-certificate-issue-initiation cii application/vnd.anser-web-funds-transfer-initiation fti application/vnd.antix.game-component atx application/vnd.apple.installer+xml mpkg application/vnd.apple.mpegurl m3u8 # application/vnd.arastra.swi application/vnd.aristanetworks.swi swi application/vnd.astraea-software.iota iota application/vnd.audiograph aep # application/vnd.autopackage # application/vnd.avistar+xml application/vnd.blueice.multipass mpm # application/vnd.bluetooth.ep.oob application/vnd.bmi bmi application/vnd.businessobjects rep # application/vnd.cab-jscript # application/vnd.canon-cpdl # application/vnd.canon-lips # application/vnd.cendio.thinlinc.clientconf application/vnd.chemdraw+xml cdxml application/vnd.chipnuts.karaoke-mmd mmd application/vnd.cinderella cdy # application/vnd.cirpack.isdn-ext application/vnd.claymore cla application/vnd.cloanto.rp9 rp9 application/vnd.clonk.c4group c4g c4d c4f c4p c4u application/vnd.cluetrust.cartomobile-config c11amc application/vnd.cluetrust.cartomobile-config-pkg c11amz # application/vnd.collection+json # application/vnd.commerce-battelle application/vnd.commonspace csp application/vnd.contact.cmsg cdbcmsg application/vnd.cosmocaller cmc application/vnd.crick.clicker clkx application/vnd.crick.clicker.keyboard clkk application/vnd.crick.clicker.palette clkp application/vnd.crick.clicker.template clkt application/vnd.crick.clicker.wordbank clkw application/vnd.criticaltools.wbs+xml wbs application/vnd.ctc-posml pml # application/vnd.ctct.ws+xml # application/vnd.cups-pdf # application/vnd.cups-postscript application/vnd.cups-ppd ppd # application/vnd.cups-raster # application/vnd.cups-raw # application/vnd.curl application/vnd.curl.car car application/vnd.curl.pcurl pcurl # application/vnd.cybank application/vnd.dart dart application/vnd.data-vision.rdz rdz application/vnd.dece.data uvf uvvf uvd uvvd application/vnd.dece.ttml+xml uvt uvvt application/vnd.dece.unspecified uvx uvvx application/vnd.dece.zip uvz uvvz application/vnd.denovo.fcselayout-link fe_launch # application/vnd.dir-bi.plate-dl-nosuffix application/vnd.dna dna application/vnd.dolby.mlp mlp # application/vnd.dolby.mobile.1 # application/vnd.dolby.mobile.2 application/vnd.dpgraph dpg application/vnd.dreamfactory dfac application/vnd.ds-keypoint kpxx application/vnd.dvb.ait ait # application/vnd.dvb.dvbj # application/vnd.dvb.esgcontainer # application/vnd.dvb.ipdcdftnotifaccess # application/vnd.dvb.ipdcesgaccess # application/vnd.dvb.ipdcesgaccess2 # application/vnd.dvb.ipdcesgpdd # application/vnd.dvb.ipdcroaming # application/vnd.dvb.iptv.alfec-base # application/vnd.dvb.iptv.alfec-enhancement # application/vnd.dvb.notif-aggregate-root+xml # application/vnd.dvb.notif-container+xml # application/vnd.dvb.notif-generic+xml # application/vnd.dvb.notif-ia-msglist+xml # application/vnd.dvb.notif-ia-registration-request+xml # application/vnd.dvb.notif-ia-registration-response+xml # application/vnd.dvb.notif-init+xml # application/vnd.dvb.pfr application/vnd.dvb.service svc # application/vnd.dxr application/vnd.dynageo geo # application/vnd.easykaraoke.cdgdownload # application/vnd.ecdis-update application/vnd.ecowin.chart mag # application/vnd.ecowin.filerequest # application/vnd.ecowin.fileupdate # application/vnd.ecowin.series # application/vnd.ecowin.seriesrequest # application/vnd.ecowin.seriesupdate # application/vnd.emclient.accessrequest+xml application/vnd.enliven nml # application/vnd.eprints.data+xml application/vnd.epson.esf esf application/vnd.epson.msf msf application/vnd.epson.quickanime qam application/vnd.epson.salt slt application/vnd.epson.ssf ssf # application/vnd.ericsson.quickcall application/vnd.eszigno3+xml es3 et3 # application/vnd.etsi.aoc+xml # application/vnd.etsi.cug+xml # application/vnd.etsi.iptvcommand+xml # application/vnd.etsi.iptvdiscovery+xml # application/vnd.etsi.iptvprofile+xml # application/vnd.etsi.iptvsad-bc+xml # application/vnd.etsi.iptvsad-cod+xml # application/vnd.etsi.iptvsad-npvr+xml # application/vnd.etsi.iptvservice+xml # application/vnd.etsi.iptvsync+xml # application/vnd.etsi.iptvueprofile+xml # application/vnd.etsi.mcid+xml # application/vnd.etsi.overload-control-policy-dataset+xml # application/vnd.etsi.sci+xml # application/vnd.etsi.simservs+xml # application/vnd.etsi.tsl+xml # application/vnd.etsi.tsl.der # application/vnd.eudora.data application/vnd.ezpix-album ez2 application/vnd.ezpix-package ez3 # application/vnd.f-secure.mobile application/vnd.fdf fdf application/vnd.fdsn.mseed mseed application/vnd.fdsn.seed seed dataless # application/vnd.ffsns # application/vnd.fints application/vnd.flographit gph application/vnd.fluxtime.clip ftc # application/vnd.font-fontforge-sfd application/vnd.framemaker fm frame maker book application/vnd.frogans.fnc fnc application/vnd.frogans.ltf ltf application/vnd.fsc.weblaunch fsc application/vnd.fujitsu.oasys oas application/vnd.fujitsu.oasys2 oa2 application/vnd.fujitsu.oasys3 oa3 application/vnd.fujitsu.oasysgp fg5 application/vnd.fujitsu.oasysprs bh2 # application/vnd.fujixerox.art-ex # application/vnd.fujixerox.art4 # application/vnd.fujixerox.hbpl application/vnd.fujixerox.ddd ddd application/vnd.fujixerox.docuworks xdw application/vnd.fujixerox.docuworks.binder xbd # application/vnd.fut-misnet application/vnd.fuzzysheet fzs application/vnd.genomatix.tuxedo txd # application/vnd.geocube+xml application/vnd.geogebra.file ggb application/vnd.geogebra.tool ggt application/vnd.geometry-explorer gex gre application/vnd.geonext gxt application/vnd.geoplan g2w application/vnd.geospace g3w # application/vnd.globalplatform.card-content-mgt # application/vnd.globalplatform.card-content-mgt-response application/vnd.gmx gmx application/vnd.google-earth.kml+xml kml application/vnd.google-earth.kmz kmz application/vnd.grafeq gqf gqs # application/vnd.gridmp application/vnd.groove-account gac application/vnd.groove-help ghf application/vnd.groove-identity-message gim application/vnd.groove-injector grv application/vnd.groove-tool-message gtm application/vnd.groove-tool-template tpl application/vnd.groove-vcard vcg # application/vnd.hal+json application/vnd.hal+xml hal application/vnd.handheld-entertainment+xml zmm application/vnd.hbci hbci # application/vnd.hcl-bireports application/vnd.hhe.lesson-player les application/vnd.hp-hpgl hpgl application/vnd.hp-hpid hpid application/vnd.hp-hps hps application/vnd.hp-jlyt jlt application/vnd.hp-pcl pcl application/vnd.hp-pclxl pclxl # application/vnd.httphone application/vnd.hydrostatix.sof-data sfd-hdstx # application/vnd.hzn-3d-crossword # application/vnd.ibm.afplinedata # application/vnd.ibm.electronic-media application/vnd.ibm.minipay mpy application/vnd.ibm.modcap afp listafp list3820 application/vnd.ibm.rights-management irm application/vnd.ibm.secure-container sc application/vnd.iccprofile icc icm application/vnd.igloader igl application/vnd.immervision-ivp ivp application/vnd.immervision-ivu ivu # application/vnd.informedcontrol.rms+xml # application/vnd.informix-visionary # application/vnd.infotech.project # application/vnd.infotech.project+xml # application/vnd.innopath.wamp.notification application/vnd.insors.igm igm application/vnd.intercon.formnet xpw xpx application/vnd.intergeo i2g # application/vnd.intertrust.digibox # application/vnd.intertrust.nncp application/vnd.intu.qbo qbo application/vnd.intu.qfx qfx # application/vnd.iptc.g2.conceptitem+xml # application/vnd.iptc.g2.knowledgeitem+xml # application/vnd.iptc.g2.newsitem+xml # application/vnd.iptc.g2.newsmessage+xml # application/vnd.iptc.g2.packageitem+xml # application/vnd.iptc.g2.planningitem+xml application/vnd.ipunplugged.rcprofile rcprofile application/vnd.irepository.package+xml irp application/vnd.is-xpr xpr application/vnd.isac.fcs fcs application/vnd.jam jam # application/vnd.japannet-directory-service # application/vnd.japannet-jpnstore-wakeup # application/vnd.japannet-payment-wakeup # application/vnd.japannet-registration # application/vnd.japannet-registration-wakeup # application/vnd.japannet-setstore-wakeup # application/vnd.japannet-verification # application/vnd.japannet-verification-wakeup application/vnd.jcp.javame.midlet-rms rms application/vnd.jisp jisp application/vnd.joost.joda-archive joda application/vnd.kahootz ktz ktr application/vnd.kde.karbon karbon application/vnd.kde.kchart chrt application/vnd.kde.kformula kfo application/vnd.kde.kivio flw application/vnd.kde.kontour kon application/vnd.kde.kpresenter kpr kpt application/vnd.kde.kspread ksp application/vnd.kde.kword kwd kwt application/vnd.kenameaapp htke application/vnd.kidspiration kia application/vnd.kinar kne knp application/vnd.koan skp skd skt skm application/vnd.kodak-descriptor sse application/vnd.las.las+xml lasxml # application/vnd.liberty-request+xml application/vnd.llamagraphics.life-balance.desktop lbd application/vnd.llamagraphics.life-balance.exchange+xml lbe application/vnd.lotus-1-2-3 123 application/vnd.lotus-approach apr application/vnd.lotus-freelance pre application/vnd.lotus-notes nsf application/vnd.lotus-organizer org application/vnd.lotus-screencam scm application/vnd.lotus-wordpro lwp application/vnd.macports.portpkg portpkg # application/vnd.marlin.drm.actiontoken+xml # application/vnd.marlin.drm.conftoken+xml # application/vnd.marlin.drm.license+xml # application/vnd.marlin.drm.mdcf application/vnd.mcd mcd application/vnd.medcalcdata mc1 application/vnd.mediastation.cdkey cdkey # application/vnd.meridian-slingshot application/vnd.mfer mwf application/vnd.mfmp mfm application/vnd.micrografx.flo flo application/vnd.micrografx.igx igx application/vnd.mif mif # application/vnd.minisoft-hp3000-save # application/vnd.mitsubishi.misty-guard.trustweb application/vnd.mobius.daf daf application/vnd.mobius.dis dis application/vnd.mobius.mbk mbk application/vnd.mobius.mqy mqy application/vnd.mobius.msl msl application/vnd.mobius.plc plc application/vnd.mobius.txf txf application/vnd.mophun.application mpn application/vnd.mophun.certificate mpc # application/vnd.motorola.flexsuite # application/vnd.motorola.flexsuite.adsi # application/vnd.motorola.flexsuite.fis # application/vnd.motorola.flexsuite.gotap # application/vnd.motorola.flexsuite.kmr # application/vnd.motorola.flexsuite.ttc # application/vnd.motorola.flexsuite.wem # application/vnd.motorola.iprm application/vnd.mozilla.xul+xml xul application/vnd.ms-artgalry cil # application/vnd.ms-asf application/vnd.ms-cab-compressed cab # application/vnd.ms-color.iccprofile application/vnd.ms-excel xls xlm xla xlc xlt xlw application/vnd.ms-excel.addin.macroenabled.12 xlam application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb application/vnd.ms-excel.sheet.macroenabled.12 xlsm application/vnd.ms-excel.template.macroenabled.12 xltm application/vnd.ms-fontobject eot application/vnd.ms-htmlhelp chm application/vnd.ms-ims ims application/vnd.ms-lrm lrm # application/vnd.ms-office.activex+xml application/vnd.ms-officetheme thmx # application/vnd.ms-opentype # application/vnd.ms-package.obfuscated-opentype application/vnd.ms-pki.seccat cat application/vnd.ms-pki.stl stl # application/vnd.ms-playready.initiator+xml application/vnd.ms-powerpoint ppt pps pot application/vnd.ms-powerpoint.addin.macroenabled.12 ppam application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm application/vnd.ms-powerpoint.slide.macroenabled.12 sldm application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm application/vnd.ms-powerpoint.template.macroenabled.12 potm # application/vnd.ms-printing.printticket+xml application/vnd.ms-project mpp mpt # application/vnd.ms-tnef # application/vnd.ms-wmdrm.lic-chlg-req # application/vnd.ms-wmdrm.lic-resp # application/vnd.ms-wmdrm.meter-chlg-req # application/vnd.ms-wmdrm.meter-resp application/vnd.ms-word.document.macroenabled.12 docm application/vnd.ms-word.template.macroenabled.12 dotm application/vnd.ms-works wps wks wcm wdb application/vnd.ms-wpl wpl application/vnd.ms-xpsdocument xps application/vnd.mseq mseq # application/vnd.msign # application/vnd.multiad.creator # application/vnd.multiad.creator.cif # application/vnd.music-niff application/vnd.musician mus application/vnd.muvee.style msty application/vnd.mynfc taglet # application/vnd.ncd.control # application/vnd.ncd.reference # application/vnd.nervana # application/vnd.netfpx application/vnd.neurolanguage.nlu nlu application/vnd.nitf ntf nitf application/vnd.noblenet-directory nnd application/vnd.noblenet-sealer nns application/vnd.noblenet-web nnw # application/vnd.nokia.catalogs # application/vnd.nokia.conml+wbxml # application/vnd.nokia.conml+xml # application/vnd.nokia.isds-radio-presets # application/vnd.nokia.iptv.config+xml # application/vnd.nokia.landmark+wbxml # application/vnd.nokia.landmark+xml # application/vnd.nokia.landmarkcollection+xml # application/vnd.nokia.n-gage.ac+xml application/vnd.nokia.n-gage.data ngdat application/vnd.nokia.n-gage.symbian.install n-gage # application/vnd.nokia.ncd # application/vnd.nokia.pcd+wbxml # application/vnd.nokia.pcd+xml application/vnd.nokia.radio-preset rpst application/vnd.nokia.radio-presets rpss application/vnd.novadigm.edm edm application/vnd.novadigm.edx edx application/vnd.novadigm.ext ext # application/vnd.ntt-local.file-transfer # application/vnd.ntt-local.sip-ta_remote # application/vnd.ntt-local.sip-ta_tcp_stream application/vnd.oasis.opendocument.chart odc application/vnd.oasis.opendocument.chart-template otc application/vnd.oasis.opendocument.database odb application/vnd.oasis.opendocument.formula odf application/vnd.oasis.opendocument.formula-template odft application/vnd.oasis.opendocument.graphics odg application/vnd.oasis.opendocument.graphics-template otg application/vnd.oasis.opendocument.image odi application/vnd.oasis.opendocument.image-template oti application/vnd.oasis.opendocument.presentation odp application/vnd.oasis.opendocument.presentation-template otp application/vnd.oasis.opendocument.spreadsheet ods application/vnd.oasis.opendocument.spreadsheet-template ots application/vnd.oasis.opendocument.text odt application/vnd.oasis.opendocument.text-master odm application/vnd.oasis.opendocument.text-template ott application/vnd.oasis.opendocument.text-web oth # application/vnd.obn # application/vnd.oftn.l10n+json # application/vnd.oipf.contentaccessdownload+xml # application/vnd.oipf.contentaccessstreaming+xml # application/vnd.oipf.cspg-hexbinary # application/vnd.oipf.dae.svg+xml # application/vnd.oipf.dae.xhtml+xml # application/vnd.oipf.mippvcontrolmessage+xml # application/vnd.oipf.pae.gem # application/vnd.oipf.spdiscovery+xml # application/vnd.oipf.spdlist+xml # application/vnd.oipf.ueprofile+xml # application/vnd.oipf.userprofile+xml application/vnd.olpc-sugar xo # application/vnd.oma-scws-config # application/vnd.oma-scws-http-request # application/vnd.oma-scws-http-response # application/vnd.oma.bcast.associated-procedure-parameter+xml # application/vnd.oma.bcast.drm-trigger+xml # application/vnd.oma.bcast.imd+xml # application/vnd.oma.bcast.ltkm # application/vnd.oma.bcast.notification+xml # application/vnd.oma.bcast.provisioningtrigger # application/vnd.oma.bcast.sgboot # application/vnd.oma.bcast.sgdd+xml # application/vnd.oma.bcast.sgdu # application/vnd.oma.bcast.simple-symbol-container # application/vnd.oma.bcast.smartcard-trigger+xml # application/vnd.oma.bcast.sprov+xml # application/vnd.oma.bcast.stkm # application/vnd.oma.cab-address-book+xml # application/vnd.oma.cab-feature-handler+xml # application/vnd.oma.cab-pcc+xml # application/vnd.oma.cab-user-prefs+xml # application/vnd.oma.dcd # application/vnd.oma.dcdc application/vnd.oma.dd2+xml dd2 # application/vnd.oma.drm.risd+xml # application/vnd.oma.group-usage-list+xml # application/vnd.oma.pal+xml # application/vnd.oma.poc.detailed-progress-report+xml # application/vnd.oma.poc.final-report+xml # application/vnd.oma.poc.groups+xml # application/vnd.oma.poc.invocation-descriptor+xml # application/vnd.oma.poc.optimized-progress-report+xml # application/vnd.oma.push # application/vnd.oma.scidm.messages+xml # application/vnd.oma.xcap-directory+xml # application/vnd.omads-email+xml # application/vnd.omads-file+xml # application/vnd.omads-folder+xml # application/vnd.omaloc-supl-init application/vnd.openofficeorg.extension oxt # application/vnd.openxmlformats-officedocument.custom-properties+xml # application/vnd.openxmlformats-officedocument.customxmlproperties+xml # application/vnd.openxmlformats-officedocument.drawing+xml # application/vnd.openxmlformats-officedocument.drawingml.chart+xml # application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml # application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml # application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml # application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml # application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml # application/vnd.openxmlformats-officedocument.extended-properties+xml # application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml # application/vnd.openxmlformats-officedocument.presentationml.comments+xml # application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml # application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml # application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml application/vnd.openxmlformats-officedocument.presentationml.presentation pptx # application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml # application/vnd.openxmlformats-officedocument.presentationml.presprops+xml application/vnd.openxmlformats-officedocument.presentationml.slide sldx # application/vnd.openxmlformats-officedocument.presentationml.slide+xml # application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml # application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx # application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml # application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml # application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml # application/vnd.openxmlformats-officedocument.presentationml.tags+xml application/vnd.openxmlformats-officedocument.presentationml.template potx # application/vnd.openxmlformats-officedocument.presentationml.template.main+xml # application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx # application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx # application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml # application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml # application/vnd.openxmlformats-officedocument.theme+xml # application/vnd.openxmlformats-officedocument.themeoverride+xml # application/vnd.openxmlformats-officedocument.vmldrawing # application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml application/vnd.openxmlformats-officedocument.wordprocessingml.document docx # application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml # application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml # application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml # application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml # application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml # application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml # application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml # application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml # application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx # application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml # application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml # application/vnd.openxmlformats-package.core-properties+xml # application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml # application/vnd.openxmlformats-package.relationships+xml # application/vnd.quobject-quoxdocument # application/vnd.osa.netdeploy application/vnd.osgeo.mapguide.package mgp # application/vnd.osgi.bundle application/vnd.osgi.dp dp application/vnd.osgi.subsystem esa # application/vnd.otps.ct-kip+xml application/vnd.palm pdb pqa oprc # application/vnd.paos.xml application/vnd.pawaafile paw application/vnd.pg.format str application/vnd.pg.osasli ei6 # application/vnd.piaccess.application-licence application/vnd.picsel efif application/vnd.pmi.widget wg # application/vnd.poc.group-advertisement+xml application/vnd.pocketlearn plf application/vnd.powerbuilder6 pbd # application/vnd.powerbuilder6-s # application/vnd.powerbuilder7 # application/vnd.powerbuilder7-s # application/vnd.powerbuilder75 # application/vnd.powerbuilder75-s # application/vnd.preminet application/vnd.previewsystems.box box application/vnd.proteus.magazine mgz application/vnd.publishare-delta-tree qps application/vnd.pvi.ptid1 ptid # application/vnd.pwg-multiplexed # application/vnd.pwg-xhtml-print+xml # application/vnd.qualcomm.brew-app-res application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb # application/vnd.radisys.moml+xml # application/vnd.radisys.msml+xml # application/vnd.radisys.msml-audit+xml # application/vnd.radisys.msml-audit-conf+xml # application/vnd.radisys.msml-audit-conn+xml # application/vnd.radisys.msml-audit-dialog+xml # application/vnd.radisys.msml-audit-stream+xml # application/vnd.radisys.msml-conf+xml # application/vnd.radisys.msml-dialog+xml # application/vnd.radisys.msml-dialog-base+xml # application/vnd.radisys.msml-dialog-fax-detect+xml # application/vnd.radisys.msml-dialog-fax-sendrecv+xml # application/vnd.radisys.msml-dialog-group+xml # application/vnd.radisys.msml-dialog-speech+xml # application/vnd.radisys.msml-dialog-transform+xml # application/vnd.rainstor.data # application/vnd.rapid application/vnd.realvnc.bed bed application/vnd.recordare.musicxml mxl application/vnd.recordare.musicxml+xml musicxml # application/vnd.renlearn.rlprint application/vnd.rig.cryptonote cryptonote application/vnd.rim.cod cod application/vnd.rn-realmedia rm application/vnd.rn-realmedia-vbr rmvb application/vnd.route66.link66+xml link66 # application/vnd.rs-274x # application/vnd.ruckus.download # application/vnd.s3sms application/vnd.sailingtracker.track st # application/vnd.sbm.cid # application/vnd.sbm.mid2 # application/vnd.scribus # application/vnd.sealed.3df # application/vnd.sealed.csf # application/vnd.sealed.doc # application/vnd.sealed.eml # application/vnd.sealed.mht # application/vnd.sealed.net # application/vnd.sealed.ppt # application/vnd.sealed.tiff # application/vnd.sealed.xls # application/vnd.sealedmedia.softseal.html # application/vnd.sealedmedia.softseal.pdf application/vnd.seemail see application/vnd.sema sema application/vnd.semd semd application/vnd.semf semf application/vnd.shana.informed.formdata ifm application/vnd.shana.informed.formtemplate itp application/vnd.shana.informed.interchange iif application/vnd.shana.informed.package ipk application/vnd.simtech-mindmapper twd twds application/vnd.smaf mmf # application/vnd.smart.notebook application/vnd.smart.teacher teacher # application/vnd.software602.filler.form+xml # application/vnd.software602.filler.form-xml-zip application/vnd.solent.sdkm+xml sdkm sdkd application/vnd.spotfire.dxp dxp application/vnd.spotfire.sfs sfs # application/vnd.sss-cod # application/vnd.sss-dtf # application/vnd.sss-ntf application/vnd.stardivision.calc sdc application/vnd.stardivision.draw sda application/vnd.stardivision.impress sdd application/vnd.stardivision.math smf application/vnd.stardivision.writer sdw vor application/vnd.stardivision.writer-global sgl application/vnd.stepmania.package smzip application/vnd.stepmania.stepchart sm # application/vnd.street-stream application/vnd.sun.xml.calc sxc application/vnd.sun.xml.calc.template stc application/vnd.sun.xml.draw sxd application/vnd.sun.xml.draw.template std application/vnd.sun.xml.impress sxi application/vnd.sun.xml.impress.template sti application/vnd.sun.xml.math sxm application/vnd.sun.xml.writer sxw application/vnd.sun.xml.writer.global sxg application/vnd.sun.xml.writer.template stw # application/vnd.sun.wadl+xml application/vnd.sus-calendar sus susp application/vnd.svd svd # application/vnd.swiftview-ics application/vnd.symbian.install sis sisx application/vnd.syncml+xml xsm application/vnd.syncml.dm+wbxml bdm application/vnd.syncml.dm+xml xdm # application/vnd.syncml.dm.notification # application/vnd.syncml.ds.notification application/vnd.tao.intent-module-archive tao application/vnd.tcpdump.pcap pcap cap dmp application/vnd.tmobile-livetv tmo application/vnd.trid.tpt tpt application/vnd.triscape.mxs mxs application/vnd.trueapp tra # application/vnd.truedoc # application/vnd.ubisoft.webplayer application/vnd.ufdl ufd ufdl application/vnd.uiq.theme utz application/vnd.umajin umj application/vnd.unity unityweb application/vnd.uoml+xml uoml # application/vnd.uplanet.alert # application/vnd.uplanet.alert-wbxml # application/vnd.uplanet.bearer-choice # application/vnd.uplanet.bearer-choice-wbxml # application/vnd.uplanet.cacheop # application/vnd.uplanet.cacheop-wbxml # application/vnd.uplanet.channel # application/vnd.uplanet.channel-wbxml # application/vnd.uplanet.list # application/vnd.uplanet.list-wbxml # application/vnd.uplanet.listcmd # application/vnd.uplanet.listcmd-wbxml # application/vnd.uplanet.signal application/vnd.vcx vcx # application/vnd.vd-study # application/vnd.vectorworks # application/vnd.verimatrix.vcas # application/vnd.vidsoft.vidconference application/vnd.visio vsd vst vss vsw application/vnd.visionary vis # application/vnd.vividence.scriptfile application/vnd.vsf vsf # application/vnd.wap.sic # application/vnd.wap.slc application/vnd.wap.wbxml wbxml application/vnd.wap.wmlc wmlc application/vnd.wap.wmlscriptc wmlsc application/vnd.webturbo wtb # application/vnd.wfa.wsc # application/vnd.wmc # application/vnd.wmf.bootstrap # application/vnd.wolfram.mathematica # application/vnd.wolfram.mathematica.package application/vnd.wolfram.player nbp application/vnd.wordperfect wpd application/vnd.wqd wqd # application/vnd.wrq-hp3000-labelled application/vnd.wt.stf stf # application/vnd.wv.csp+wbxml # application/vnd.wv.csp+xml # application/vnd.wv.ssp+xml application/vnd.xara xar application/vnd.xfdl xfdl # application/vnd.xfdl.webform # application/vnd.xmi+xml # application/vnd.xmpie.cpkg # application/vnd.xmpie.dpkg # application/vnd.xmpie.plan # application/vnd.xmpie.ppkg # application/vnd.xmpie.xlim application/vnd.yamaha.hv-dic hvd application/vnd.yamaha.hv-script hvs application/vnd.yamaha.hv-voice hvp application/vnd.yamaha.openscoreformat osf application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg # application/vnd.yamaha.remote-setup application/vnd.yamaha.smaf-audio saf application/vnd.yamaha.smaf-phrase spf # application/vnd.yamaha.through-ngn # application/vnd.yamaha.tunnel-udpencap application/vnd.yellowriver-custom-menu cmp application/vnd.zul zir zirz application/vnd.zzazz.deck+xml zaz application/voicexml+xml vxml # application/vq-rtcpxr # application/watcherinfo+xml # application/whoispp-query # application/whoispp-response application/widget wgt application/winhlp hlp # application/wita # application/wordperfect5.1 application/wsdl+xml wsdl application/wspolicy+xml wspolicy application/x-7z-compressed 7z application/x-abiword abw application/x-ace-compressed ace # application/x-amf application/x-apple-diskimage dmg application/x-authorware-bin aab x32 u32 vox application/x-authorware-map aam application/x-authorware-seg aas application/x-bcpio bcpio application/x-bittorrent torrent application/x-blorb blb blorb application/x-bzip bz application/x-bzip2 bz2 boz application/x-cbr cbr cba cbt cbz cb7 application/x-cdlink vcd application/x-cfs-compressed cfs application/x-chat chat application/x-chess-pgn pgn application/x-conference nsc # application/x-compress application/x-cpio cpio application/x-csh csh application/x-debian-package deb udeb application/x-dgc-compressed dgc application/x-director dir dcr dxr cst cct cxt w3d fgd swa application/x-doom wad application/x-dtbncx+xml ncx application/x-dtbook+xml dtb application/x-dtbresource+xml res application/x-dvi dvi application/x-envoy evy application/x-eva eva application/x-font-bdf bdf # application/x-font-dos # application/x-font-framemaker application/x-font-ghostscript gsf # application/x-font-libgrx application/x-font-linux-psf psf application/x-font-otf otf application/x-font-pcf pcf application/x-font-snf snf # application/x-font-speedo # application/x-font-sunos-news application/x-font-ttf ttf ttc application/x-font-type1 pfa pfb pfm afm application/x-font-woff woff # application/x-font-vfont application/x-freearc arc application/x-futuresplash spl application/x-gca-compressed gca application/x-glulx ulx application/x-gnumeric gnumeric application/x-gramps-xml gramps application/x-gtar gtar # application/x-gzip application/x-hdf hdf application/x-install-instructions install application/x-iso9660-image iso application/x-java-jnlp-file jnlp application/x-latex latex application/x-lzh-compressed lzh lha application/x-mie mie application/x-mobipocket-ebook prc mobi application/x-mpegurl m3u8 application/x-ms-application application application/x-ms-shortcut lnk application/x-ms-wmd wmd application/x-ms-wmz wmz application/x-ms-xbap xbap application/x-msaccess mdb application/x-msbinder obd application/x-mscardfile crd application/x-msclip clp application/x-msdownload exe dll com bat msi application/x-msmediaview mvb m13 m14 application/x-msmetafile wmf wmz emf emz application/x-msmoney mny application/x-mspublisher pub application/x-msschedule scd application/x-msterminal trm application/x-mswrite wri application/x-netcdf nc cdf application/x-nzb nzb application/x-pkcs12 p12 pfx application/x-pkcs7-certificates p7b spc application/x-pkcs7-certreqresp p7r application/x-rar-compressed rar application/x-research-info-systems ris application/x-sh sh application/x-shar shar application/x-shockwave-flash swf application/x-silverlight-app xap application/x-sql sql application/x-stuffit sit application/x-stuffitx sitx application/x-subrip srt application/x-sv4cpio sv4cpio application/x-sv4crc sv4crc application/x-t3vm-image t3 application/x-tads gam application/x-tar tar application/x-tcl tcl application/x-tex tex application/x-tex-tfm tfm application/x-texinfo texinfo texi application/x-tgif obj application/x-ustar ustar application/x-wais-source src application/x-x509-ca-cert der crt application/x-xfig fig application/x-xliff+xml xlf application/x-xpinstall xpi application/x-xz xz application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8 # application/x400-bp application/xaml+xml xaml # application/xcap-att+xml # application/xcap-caps+xml application/xcap-diff+xml xdf # application/xcap-el+xml # application/xcap-error+xml # application/xcap-ns+xml # application/xcon-conference-info-diff+xml # application/xcon-conference-info+xml application/xenc+xml xenc application/xhtml+xml xhtml xht # application/xhtml-voice+xml application/xml xml xsl application/xml-dtd dtd # application/xml-external-parsed-entity # application/xmpp+xml application/xop+xml xop application/xproc+xml xpl application/xslt+xml xslt application/xspf+xml xspf application/xv+xml mxml xhvml xvml xvm application/yang yang application/yin+xml yin application/zip zip # audio/1d-interleaved-parityfec # audio/32kadpcm # audio/3gpp # audio/3gpp2 # audio/ac3 audio/adpcm adp # audio/amr # audio/amr-wb # audio/amr-wb+ # audio/asc # audio/atrac-advanced-lossless # audio/atrac-x # audio/atrac3 audio/basic au snd # audio/bv16 # audio/bv32 # audio/clearmode # audio/cn # audio/dat12 # audio/dls # audio/dsr-es201108 # audio/dsr-es202050 # audio/dsr-es202211 # audio/dsr-es202212 # audio/dv # audio/dvi4 # audio/eac3 # audio/evrc # audio/evrc-qcp # audio/evrc0 # audio/evrc1 # audio/evrcb # audio/evrcb0 # audio/evrcb1 # audio/evrcwb # audio/evrcwb0 # audio/evrcwb1 # audio/example # audio/fwdred # audio/g719 # audio/g722 # audio/g7221 # audio/g723 # audio/g726-16 # audio/g726-24 # audio/g726-32 # audio/g726-40 # audio/g728 # audio/g729 # audio/g7291 # audio/g729d # audio/g729e # audio/gsm # audio/gsm-efr # audio/gsm-hr-08 # audio/ilbc # audio/ip-mr_v2.5 # audio/isac # audio/l16 # audio/l20 # audio/l24 # audio/l8 # audio/lpc audio/midi mid midi kar rmi # audio/mobile-xmf audio/mp4 mp4a # audio/mp4a-latm audio/mp4a-latm m4a m4p # audio/mpa # audio/mpa-robust audio/mpeg mpga mp2 mp2a mp3 m2a m3a # audio/mpeg4-generic # audio/musepack audio/ogg oga ogg spx # audio/opus # audio/parityfec # audio/pcma # audio/pcma-wb # audio/pcmu-wb # audio/pcmu # audio/prs.sid # audio/qcelp # audio/red # audio/rtp-enc-aescm128 # audio/rtp-midi # audio/rtx audio/s3m s3m audio/silk sil # audio/smv # audio/smv0 # audio/smv-qcp # audio/sp-midi # audio/speex # audio/t140c # audio/t38 # audio/telephone-event # audio/tone # audio/uemclip # audio/ulpfec # audio/vdvi # audio/vmr-wb # audio/vnd.3gpp.iufp # audio/vnd.4sb # audio/vnd.audiokoz # audio/vnd.celp # audio/vnd.cisco.nse # audio/vnd.cmles.radio-events # audio/vnd.cns.anp1 # audio/vnd.cns.inf1 audio/vnd.dece.audio uva uvva audio/vnd.digital-winds eol # audio/vnd.dlna.adts # audio/vnd.dolby.heaac.1 # audio/vnd.dolby.heaac.2 # audio/vnd.dolby.mlp # audio/vnd.dolby.mps # audio/vnd.dolby.pl2 # audio/vnd.dolby.pl2x # audio/vnd.dolby.pl2z # audio/vnd.dolby.pulse.1 audio/vnd.dra dra audio/vnd.dts dts audio/vnd.dts.hd dtshd # audio/vnd.dvb.file # audio/vnd.everad.plj # audio/vnd.hns.audio audio/vnd.lucent.voice lvp audio/vnd.ms-playready.media.pya pya # audio/vnd.nokia.mobile-xmf # audio/vnd.nortel.vbk audio/vnd.nuera.ecelp4800 ecelp4800 audio/vnd.nuera.ecelp7470 ecelp7470 audio/vnd.nuera.ecelp9600 ecelp9600 # audio/vnd.octel.sbc # audio/vnd.qcelp # audio/vnd.rhetorex.32kadpcm audio/vnd.rip rip # audio/vnd.sealedmedia.softseal.mpeg # audio/vnd.vmx.cvsd # audio/vorbis # audio/vorbis-config audio/webm weba audio/x-aac aac audio/x-aiff aif aiff aifc audio/x-caf caf audio/x-flac flac audio/x-matroska mka audio/x-mpegurl m3u audio/x-ms-wax wax audio/x-ms-wma wma audio/x-pn-realaudio ram ra audio/x-pn-realaudio-plugin rmp # audio/x-tta audio/x-wav wav audio/xm xm chemical/x-cdx cdx chemical/x-cif cif chemical/x-cmdf cmdf chemical/x-cml cml chemical/x-csml csml # chemical/x-pdb chemical/x-xyz xyz image/bmp bmp image/cgm cgm # image/example # image/fits image/g3fax g3 image/gif gif image/ief ief # image/jp2 image/jp2 jp2 image/jpeg jpeg jpg jpe # image/jpm # image/jpx image/ktx ktx # image/naplps image/pict pict pic pct image/png png image/prs.btif btif # image/prs.pti image/sgi sgi image/svg+xml svg svgz # image/t38 image/tiff tiff tif # image/tiff-fx image/vnd.adobe.photoshop psd # image/vnd.cns.inf2 image/vnd.dece.graphic uvi uvvi uvg uvvg image/vnd.dvb.subtitle sub image/vnd.djvu djvu djv image/vnd.dwg dwg image/vnd.dxf dxf image/vnd.fastbidsheet fbs image/vnd.fpx fpx image/vnd.fst fst image/vnd.fujixerox.edmics-mmr mmr image/vnd.fujixerox.edmics-rlc rlc # image/vnd.globalgraphics.pgb # image/vnd.microsoft.icon # image/vnd.mix image/vnd.ms-modi mdi image/vnd.ms-photo wdp image/vnd.net-fpx npx # image/vnd.radiance # image/vnd.sealed.png # image/vnd.sealedmedia.softseal.gif # image/vnd.sealedmedia.softseal.jpg # image/vnd.svf image/vnd.wap.wbmp wbmp image/vnd.xiff xif image/webp webp image/x-3ds 3ds image/x-cmu-raster ras image/x-cmx cmx image/x-freehand fh fhc fh4 fh5 fh7 image/x-icon ico image/x-macpaint pntg pnt mac image/x-mrsid-image sid image/x-pcx pcx image/x-pict pic pct image/x-portable-anymap pnm image/x-portable-bitmap pbm image/x-portable-graymap pgm image/x-portable-pixmap ppm image/x-quicktime qtif qti image/x-rgb rgb image/x-tga tga image/x-xbitmap xbm image/x-xpixmap xpm image/x-xwindowdump xwd # message/cpim # message/delivery-status # message/disposition-notification # message/example # message/external-body # message/feedback-report # message/global # message/global-delivery-status # message/global-disposition-notification # message/global-headers # message/http # message/imdn+xml # message/news # message/partial message/rfc822 eml mime # message/s-http # message/sip # message/sipfrag # message/tracking-status # message/vnd.si.simp # model/example model/iges igs iges model/mesh msh mesh silo model/vnd.collada+xml dae model/vnd.dwf dwf # model/vnd.flatland.3dml model/vnd.gdl gdl # model/vnd.gs-gdl # model/vnd.gs.gdl model/vnd.gtw gtw # model/vnd.moml+xml model/vnd.mts mts # model/vnd.parasolid.transmit.binary # model/vnd.parasolid.transmit.text model/vnd.vtu vtu model/vrml wrl vrml model/x3d+binary x3db x3dbz model/x3d+vrml x3dv x3dvz model/x3d+xml x3d x3dz # multipart/alternative # multipart/appledouble # multipart/byteranges # multipart/digest # multipart/encrypted # multipart/example # multipart/form-data # multipart/header-set # multipart/mixed # multipart/parallel # multipart/related # multipart/report # multipart/signed # multipart/voice-message text/cache-manifest manifest # text/1d-interleaved-parityfec text/cache-manifest appcache text/calendar ics ifb text/css css text/csv csv # text/directory # text/dns # text/ecmascript # text/enriched # text/example # text/fwdred text/html html htm # text/javascript text/n3 n3 # text/parityfec text/plain txt text conf def list log in # text/prs.fallenstein.rst text/prs.lines.tag dsc # text/vnd.radisys.msml-basic-layout # text/red # text/rfc822-headers text/richtext rtx # text/rtf # text/rtp-enc-aescm128 # text/rtx text/sgml sgml sgm # text/t140 text/tab-separated-values tsv text/troff t tr roff man me ms text/turtle ttl # text/ulpfec text/uri-list uri uris urls text/vcard vcard # text/vnd.abc text/vnd.curl curl text/vnd.curl.dcurl dcurl text/vnd.curl.scurl scurl text/vnd.curl.mcurl mcurl # text/vnd.dmclientscript text/vnd.dvb.subtitle sub # text/vnd.esmertec.theme-descriptor text/vnd.fly fly text/vnd.fmi.flexstor flx text/vnd.graphviz gv text/vnd.in3d.3dml 3dml text/vnd.in3d.spot spot # text/vnd.iptc.newsml # text/vnd.iptc.nitf # text/vnd.latex-z # text/vnd.motorola.reflex # text/vnd.ms-mediapackage # text/vnd.net2phone.commcenter.command # text/vnd.si.uricatalogue text/vnd.sun.j2me.app-descriptor jad # text/vnd.trolltech.linguist # text/vnd.wap.si # text/vnd.wap.sl text/vnd.wap.wml wml text/vnd.wap.wmlscript wmls text/x-asm s asm text/x-c c cc cxx cpp h hh dic text/x-fortran f for f77 f90 text/x-java-source java text/x-opml opml text/x-pascal p pas text/x-nfo nfo text/x-setext etx text/x-sfv sfv text/x-uuencode uu text/x-vcalendar vcs text/x-vcard vcf # text/xml # text/xml-external-parsed-entity # video/1d-interleaved-parityfec video/3gpp 3gp # video/3gpp-tt video/3gpp2 3g2 # video/bmpeg # video/bt656 # video/celb # video/dv # video/example video/h261 h261 video/h263 h263 # video/h263-1998 # video/h263-2000 video/h264 h264 # video/h264-rcdo # video/h264-svc video/jpeg jpgv # video/jpeg2000 video/jpm jpm jpgm video/mj2 mj2 mjp2 # video/mp1s # video/mp2p # video/mp4v-es video/mp2t ts video/mp4 mp4 mp4v mpg4 m4v video/mpeg mpeg mpg mpe m1v m2v # video/mpeg4-generic # video/mpv # video/nv video/ogg ogv # video/parityfec # video/pointer video/quicktime qt mov # video/raw # video/rtp-enc-aescm128 # video/rtx # video/smpte292m # video/ulpfec # video/vc1 # video/vnd.cctv video/vnd.dece.hd uvh uvvh video/vnd.dece.mobile uvm uvvm # video/vnd.dece.mp4 video/vnd.dece.pd uvp uvvp video/vnd.dece.sd uvs uvvs video/vnd.dece.video uvv uvvv # video/vnd.directv.mpeg # video/vnd.directv.mpeg-tts # video/vnd.dlna.mpeg-tts video/vnd.dvb.file dvb video/vnd.fvt fvt # video/vnd.hns.video # video/vnd.iptvforum.1dparityfec-1010 # video/vnd.iptvforum.1dparityfec-2005 # video/vnd.iptvforum.2dparityfec-1010 # video/vnd.iptvforum.2dparityfec-2005 # video/vnd.iptvforum.ttsavc # video/vnd.iptvforum.ttsmpeg2 # video/vnd.motorola.video # video/vnd.motorola.videop video/vnd.mpegurl mxu m4u video/vnd.ms-playready.media.pyv pyv # video/vnd.nokia.interleaved-multimedia # video/vnd.nokia.videovoip # video/vnd.objectvideo # video/vnd.sealed.mpeg1 # video/vnd.sealed.mpeg4 # video/vnd.sealed.swf # video/vnd.sealedmedia.softseal.mov video/vnd.uvvu.mp4 uvu uvvu video/vnd.vivo viv video/x-dv dv dif video/webm webm video/x-f4v f4v video/x-fli fli video/x-flv flv video/x-m4v m4v video/x-matroska mkv mk3d mks video/x-mng mng video/x-ms-asf asf asx video/x-ms-vob vob video/x-ms-wm wm video/x-ms-wmv wmv video/x-ms-wmx wmx video/x-ms-wvx wvx video/x-msvideo avi video/x-sgi-movie movie video/x-smv smv x-conference/x-cooltalk ice go/misc/nacl/testzip.proto0100644000000000000000000000234312412656737016140 0ustar00rootroot00000000000000etc src=/etc mime.types src=../misc/nacl/testdata/mime.types resolv.conf src=../misc/nacl/testdata/empty group src=../misc/nacl/testdata/group passwd src=../misc/nacl/testdata/empty hosts src=../misc/nacl/testdata/hosts services usr src=../misc/nacl/testdata bin go src=.. src cmd gofmt testdata + pkg archive tar testdata + zip testdata + compress bzip2 testdata + flate gzip testdata + lzw testdata + zlib crypto rsa testdata + tls testdata + debug dwarf testdata + elf testdata + macho testdata + pe testdata + plan9obj testdata + go build + doc testdata + format + parser + printer + image testdata + draw gif jpeg png testdata + io + mime testdata + multipart testdata + net http + testdata + os + path filepath + regexp testdata + strconv testdata + text template testdata + lib time zoneinfo.zip test + go/misc/notepadplus0040755000000000000000000000000012412656737014714 5ustar00rootroot00000000000000go/misc/notepadplus/README0100644000000000000000000000341112412656737015647 0ustar00rootroot00000000000000Notepad++ syntax highlighting ----------------------------- The userDefineLang.xml uses the new User Defined Language system (UDL2), which needs Notepad++ v6.2 or higher. Installing from Notepad++ Installer 1. Add the contents of userDefineLang.xml at %APPDATA%\Notepad++\userDefineLang.xml between ... 2. Restart Notepad++ Installing from Notepad++ zip/7z package 1. Given a Notepad++ installation at . 2. Add the contents of userDefineLang.xml at \userDefineLang.xml between ... 3. Restart Notepad++ Reference 1. http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=User_Defined_Languages 2. http://notepad-plus-plus.org/news/notepad-6.2-release-udl2.html 3. http://udl20.weebly.com/index.html Notepad++ keyword auto-completion --------------------------------- 1. Given a Notepad++ installation at . 2. Copy go.xml to \plugins\APIs 3. Restart Notepad++ Reference 1. http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Auto_Completion Notepad++ Function List ----------------------- The functionList.xml uses the Function List Pane new feature, which needs Notepad++ v6.4 or higher. Installing from Notepad++ Installer 1. Add the contents of userDefineLang.xml at %APPDATA%\Notepad++\functionList.xml between ... and ... 2. Restart Notepad++ Installing from Notepad++ zip/7z package 1. Given a Notepad++ installation at . 2. Add the contents of functionList.xml at \functionList.xml between ... and ... 3. Restart Notepad++ Reference 1. http://notepad-plus-plus.org/features/function-list.html go/misc/notepadplus/functionList.xml0100644000000000000000000000240012412656737020167 0ustar00rootroot00000000000000 go/misc/notepadplus/go.xml0100644000000000000000000000656112412656737016127 0ustar00rootroot00000000000000 go/misc/notepadplus/userDefineLang.xml0100644000000000000000000001262212412656737020410 0ustar00rootroot00000000000000 00// 01 02 03/* 04*/ 0x 0X a b c d e f A B C D E F i ( ) [ ] { } ... , ; & ^ % > < ! = + - * / | : break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var bool byte complex64 complex128 error float32 float64 int int8 int16 int32 int64 rune string uint uint8 uint16 uint32 uint64 uintptr true false iota nil append cap close complex copy delete imag len make new panic print println real recover _ 00" 01\ 02" 03' 04\ 05' 06` 07 08` 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 go/misc/pprof0100755000000000000000000046457012412656737013526 0ustar00rootroot00000000000000#! /usr/bin/env perl # This is a copy of http://google-perftools.googlecode.com/svn/trunk/src/pprof # with local modifications to handle generation of SVG images and # the Go-style pprof paths. These modifications will probably filter # back into the official source before long. # It's convenient to have a copy here because we need just the one # Perl script, not all the C++ libraries that surround it. # Copyright (c) 1998-2007, Google Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following disclaimer # in the documentation and/or other materials provided with the # distribution. # * Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived from # this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # --- # Program for printing the profile generated by common/profiler.cc, # or by the heap profiler (common/debugallocation.cc) # # The profile contains a sequence of entries of the form: # # This program parses the profile, and generates user-readable # output. # # Examples: # # % tools/pprof "program" "profile" # Enters "interactive" mode # # % tools/pprof --text "program" "profile" # Generates one line per procedure # # % tools/pprof --gv "program" "profile" # Generates annotated call-graph and displays via "gv" # # % tools/pprof --gv --focus=Mutex "program" "profile" # Restrict to code paths that involve an entry that matches "Mutex" # # % tools/pprof --gv --focus=Mutex --ignore=string "program" "profile" # Restrict to code paths that involve an entry that matches "Mutex" # and does not match "string" # # % tools/pprof --list=IBF_CheckDocid "program" "profile" # Generates disassembly listing of all routines with at least one # sample that match the --list= pattern. The listing is # annotated with the flat and cumulative sample counts at each line. # # % tools/pprof --disasm=IBF_CheckDocid "program" "profile" # Generates disassembly listing of all routines with at least one # sample that match the --disasm= pattern. The listing is # annotated with the flat and cumulative sample counts at each PC value. # # TODO: Use color to indicate files? use strict; use warnings; use Getopt::Long; use File::Temp; use File::Copy; my $PPROF_VERSION = "1.5"; # NOTE: All mentions of c++filt have been expunged from this script # because (1) we don't use C++, and (2) the copy of c++filt that ships # on OS X is from 2007 and destroys nm output by "demangling" the # first two columns (address and symbol type). # These are the object tools we use which can come from a # user-specified location using --tools, from the PPROF_TOOLS # environment variable, or from the environment. my %obj_tool_map = ( "objdump" => "objdump", "nm" => "nm", "addr2line" => "addr2line", ## ConfigureObjTools may add architecture-specific entries: #"nm_pdb" => "nm-pdb", # for reading windows (PDB-format) executables #"addr2line_pdb" => "addr2line-pdb", # ditto #"otool" => "otool", # equivalent of objdump on OS X ); my $DOT = "dot"; # leave non-absolute, since it may be in /usr/local my $GV = "gv"; my $KCACHEGRIND = "kcachegrind"; my $PS2PDF = "ps2pdf"; # These are used for dynamic profiles # These are the web pages that servers need to support for dynamic profiles my $HEAP_PAGE = "/pprof/heap"; my $THREAD_PAGE = "/pprof/thread"; my $PROFILE_PAGE = "/pprof/profile"; # must support cgi-param "?seconds=#" my $BLOCK_PAGE = "/pprof/block"; my $PMUPROFILE_PAGE = "/pprof/pmuprofile(?:\\?.*)?"; # must support cgi-param # ?seconds=#&event=x&period=n my $GROWTH_PAGE = "/pprof/growth"; my $CONTENTION_PAGE = "/pprof/contention"; my $WALL_PAGE = "/pprof/wall(?:\\?.*)?"; # accepts options like namefilter my $FILTEREDPROFILE_PAGE = "/pprof/filteredprofile(?:\\?.*)?"; my $SYMBOL_PAGE = "/pprof/symbol"; # must support symbol lookup via POST my $PROGRAM_NAME_PAGE = "/pprof/cmdline"; # default binary name my $UNKNOWN_BINARY = "(unknown)"; # There is a pervasive dependency on the length (in hex characters, # i.e., nibbles) of an address, distinguishing between 32-bit and # 64-bit profiles. To err on the safe size, default to 64-bit here: my $address_length = 16; # A list of paths to search for shared object files my @prefix_list = (); # Special routine name that should not have any symbols. # Used as separator to parse "addr2line -i" output. my $sep_symbol = '_fini'; my $sep_address = undef; my $OS = $^O; my $DEVNULL = "/dev/null"; if ($^O =~ /MSWin32|cygwin|msys/) { $OS = "windows"; $DEVNULL = "NUL"; } ##### Argument parsing ##### sub usage_string { return < is a space separated list of profile names. pprof [options] is a list of profile files where each file contains the necessary symbol mappings as well as profile data (likely generated with --raw). pprof [options] is a remote form. Symbols are obtained from host:port$SYMBOL_PAGE Each name can be: /path/to/profile - a path to a profile file host:port[/] - a location of a service to get profile from The / can be $HEAP_PAGE, $PROFILE_PAGE, /pprof/pmuprofile, $GROWTH_PAGE, $CONTENTION_PAGE, /pprof/wall, $THREAD_PAGE, $BLOCK_PAGE or /pprof/filteredprofile. For instance: pprof http://myserver.com:80$HEAP_PAGE If / is omitted, the service defaults to $PROFILE_PAGE (cpu profiling). pprof --symbols Maps addresses to symbol names. In this mode, stdin should be a list of library mappings, in the same format as is found in the heap- and cpu-profile files (this loosely matches that of /proc/self/maps on linux), followed by a list of hex addresses to map, one per line. For more help with querying remote servers, including how to add the necessary server-side support code, see this filename (or one like it): /usr/doc/google-perftools-$PPROF_VERSION/pprof_remote_servers.html Options: --cum Sort by cumulative data --base= Subtract from before display --interactive Run in interactive mode (interactive "help" gives help) [default] --seconds= Length of time for dynamic profiles [default=30 secs] --add_lib= Read additional symbols and line info from the given library --lib_prefix= Comma separated list of library path prefixes Reporting Granularity: --addresses Report at address level --lines Report at source line level --functions Report at function level [default] --files Report at source file level Output type: --text Generate text report --callgrind Generate callgrind format to stdout --gv Generate Postscript and display --web Generate SVG and display --list= Generate source listing of matching routines --disasm= Generate disassembly of matching routines --symbols Print demangled symbol names found at given addresses --dot Generate DOT file to stdout --ps Generate Postcript to stdout --pdf Generate PDF to stdout --svg Generate SVG to stdout --gif Generate GIF to stdout --raw Generate symbolized pprof data (useful with remote fetch) Heap-Profile Options: --inuse_space Display in-use (mega)bytes [default] --inuse_objects Display in-use objects --alloc_space Display allocated (mega)bytes --alloc_objects Display allocated objects --show_bytes Display space in bytes --drop_negative Ignore negative differences Contention-profile options: --total_delay Display total delay at each region [default] --contentions Display number of delays at each region --mean_delay Display mean delay at each region Call-graph Options: --nodecount= Show at most so many nodes [default=80] --nodefraction= Hide nodes below *total [default=.005] --edgefraction= Hide edges below *total [default=.001] --focus= Focus on nodes matching --ignore= Ignore nodes matching --scale= Set GV scaling [default=0] --heapcheck Make nodes with non-0 object counts (i.e. direct leak generators) more visible Miscellaneous: --tools= Prefix for object tool pathnames --test Run unit tests --help This message --version Version information Environment Variables: PPROF_TMPDIR Profiles directory. Defaults to \$HOME/pprof PPROF_TOOLS Prefix for object tools pathnames Examples: pprof /bin/ls ls.prof Enters "interactive" mode pprof --text /bin/ls ls.prof Outputs one line per procedure pprof --web /bin/ls ls.prof Displays annotated call-graph in web browser pprof --gv /bin/ls ls.prof Displays annotated call-graph via 'gv' pprof --gv --focus=Mutex /bin/ls ls.prof Restricts to code paths including a .*Mutex.* entry pprof --gv --focus=Mutex --ignore=string /bin/ls ls.prof Code paths including Mutex but not string pprof --list=getdir /bin/ls ls.prof (Per-line) annotated source listing for getdir() pprof --disasm=getdir /bin/ls ls.prof (Per-PC) annotated disassembly for getdir() pprof http://localhost:1234/ Enters "interactive" mode pprof --text localhost:1234 Outputs one line per procedure for localhost:1234 pprof --raw localhost:1234 > ./local.raw pprof --text ./local.raw Fetches a remote profile for later analysis and then analyzes it in text mode. EOF } sub version_string { return <new()->filename; $main::tmpfile_ps = File::Temp->new()->filename; $main::next_tmpfile = 0; $SIG{'INT'} = \&sighandler; # Cache from filename/linenumber to source code $main::source_cache = (); $main::opt_help = 0; $main::opt_version = 0; $main::opt_cum = 0; $main::opt_base = ''; $main::opt_addresses = 0; $main::opt_lines = 0; $main::opt_functions = 0; $main::opt_files = 0; $main::opt_lib_prefix = ""; $main::opt_text = 0; $main::opt_callgrind = 0; $main::opt_list = ""; $main::opt_disasm = ""; $main::opt_symbols = 0; $main::opt_gv = 0; $main::opt_web = 0; $main::opt_dot = 0; $main::opt_ps = 0; $main::opt_pdf = 0; $main::opt_gif = 0; $main::opt_svg = 0; $main::opt_raw = 0; $main::opt_nodecount = 80; $main::opt_nodefraction = 0.005; $main::opt_edgefraction = 0.001; $main::opt_focus = ''; $main::opt_ignore = ''; $main::opt_scale = 0; $main::opt_heapcheck = 0; $main::opt_seconds = 30; $main::opt_lib = ""; $main::opt_inuse_space = 0; $main::opt_inuse_objects = 0; $main::opt_alloc_space = 0; $main::opt_alloc_objects = 0; $main::opt_show_bytes = 0; $main::opt_drop_negative = 0; $main::opt_interactive = 0; $main::opt_total_delay = 0; $main::opt_contentions = 0; $main::opt_mean_delay = 0; $main::opt_tools = ""; $main::opt_debug = 0; $main::opt_test = 0; # These are undocumented flags used only by unittests. $main::opt_test_stride = 0; # Are we using $SYMBOL_PAGE? $main::use_symbol_page = 0; # Files returned by TempName. %main::tempnames = (); # Type of profile we are dealing with # Supported types: # cpu # heap # growth # contention $main::profile_type = ''; # Empty type means "unknown" GetOptions("help!" => \$main::opt_help, "version!" => \$main::opt_version, "cum!" => \$main::opt_cum, "base=s" => \$main::opt_base, "seconds=i" => \$main::opt_seconds, "add_lib=s" => \$main::opt_lib, "lib_prefix=s" => \$main::opt_lib_prefix, "functions!" => \$main::opt_functions, "lines!" => \$main::opt_lines, "addresses!" => \$main::opt_addresses, "files!" => \$main::opt_files, "text!" => \$main::opt_text, "callgrind!" => \$main::opt_callgrind, "list=s" => \$main::opt_list, "disasm=s" => \$main::opt_disasm, "symbols!" => \$main::opt_symbols, "gv!" => \$main::opt_gv, "web!" => \$main::opt_web, "dot!" => \$main::opt_dot, "ps!" => \$main::opt_ps, "pdf!" => \$main::opt_pdf, "svg!" => \$main::opt_svg, "gif!" => \$main::opt_gif, "raw!" => \$main::opt_raw, "interactive!" => \$main::opt_interactive, "nodecount=i" => \$main::opt_nodecount, "nodefraction=f" => \$main::opt_nodefraction, "edgefraction=f" => \$main::opt_edgefraction, "focus=s" => \$main::opt_focus, "ignore=s" => \$main::opt_ignore, "scale=i" => \$main::opt_scale, "heapcheck" => \$main::opt_heapcheck, "inuse_space!" => \$main::opt_inuse_space, "inuse_objects!" => \$main::opt_inuse_objects, "alloc_space!" => \$main::opt_alloc_space, "alloc_objects!" => \$main::opt_alloc_objects, "show_bytes!" => \$main::opt_show_bytes, "drop_negative!" => \$main::opt_drop_negative, "total_delay!" => \$main::opt_total_delay, "contentions!" => \$main::opt_contentions, "mean_delay!" => \$main::opt_mean_delay, "tools=s" => \$main::opt_tools, "test!" => \$main::opt_test, "debug!" => \$main::opt_debug, # Undocumented flags used only by unittests: "test_stride=i" => \$main::opt_test_stride, ) || usage("Invalid option(s)"); # Deal with the standard --help and --version if ($main::opt_help) { print usage_string(); exit(0); } if ($main::opt_version) { print version_string(); exit(0); } # Disassembly/listing/symbols mode requires address-level info if ($main::opt_disasm || $main::opt_list || $main::opt_symbols) { $main::opt_functions = 0; $main::opt_lines = 0; $main::opt_addresses = 1; $main::opt_files = 0; } # Check heap-profiling flags if ($main::opt_inuse_space + $main::opt_inuse_objects + $main::opt_alloc_space + $main::opt_alloc_objects > 1) { usage("Specify at most on of --inuse/--alloc options"); } # Check output granularities my $grains = $main::opt_functions + $main::opt_lines + $main::opt_addresses + $main::opt_files + 0; if ($grains > 1) { usage("Only specify one output granularity option"); } if ($grains == 0) { $main::opt_functions = 1; } # Check output modes my $modes = $main::opt_text + $main::opt_callgrind + ($main::opt_list eq '' ? 0 : 1) + ($main::opt_disasm eq '' ? 0 : 1) + ($main::opt_symbols == 0 ? 0 : 1) + $main::opt_gv + $main::opt_web + $main::opt_dot + $main::opt_ps + $main::opt_pdf + $main::opt_svg + $main::opt_gif + $main::opt_raw + $main::opt_interactive + 0; if ($modes > 1) { usage("Only specify one output mode"); } if ($modes == 0) { if (-t STDOUT) { # If STDOUT is a tty, activate interactive mode $main::opt_interactive = 1; } else { $main::opt_text = 1; } } if ($main::opt_test) { RunUnitTests(); # Should not return exit(1); } # Binary name and profile arguments list $main::prog = ""; @main::pfile_args = (); # Remote profiling without a binary (using $SYMBOL_PAGE instead) if (IsProfileURL($ARGV[0])) { $main::use_symbol_page = 1; } elsif ($ARGV[0] && IsSymbolizedProfileFile($ARGV[0])) { $main::use_symbolized_profile = 1; $main::prog = $UNKNOWN_BINARY; # will be set later from the profile file } if ($main::use_symbol_page || $main::use_symbolized_profile) { # We don't need a binary! my %disabled = ('--lines' => $main::opt_lines, '--disasm' => $main::opt_disasm); for my $option (keys %disabled) { usage("$option cannot be used without a binary") if $disabled{$option}; } # Set $main::prog later... scalar(@ARGV) || usage("Did not specify profile file"); } elsif ($main::opt_symbols) { # --symbols needs a binary-name (to run nm on, etc) but not profiles $main::prog = shift(@ARGV) || usage("Did not specify program"); } else { $main::prog = shift(@ARGV) || usage("Did not specify program"); scalar(@ARGV) || usage("Did not specify profile file"); } # Parse profile file/location arguments foreach my $farg (@ARGV) { if ($farg =~ m/(.*)\@([0-9]+)(|\/.*)$/ ) { my $machine = $1; my $num_machines = $2; my $path = $3; for (my $i = 0; $i < $num_machines; $i++) { unshift(@main::pfile_args, "$i.$machine$path"); } } else { unshift(@main::pfile_args, $farg); } } if ($main::use_symbol_page) { unless (IsProfileURL($main::pfile_args[0])) { error("The first profile should be a remote form to use $SYMBOL_PAGE\n"); } CheckSymbolPage(); $main::prog = FetchProgramName(); } elsif (!$main::use_symbolized_profile) { # may not need objtools! ConfigureObjTools($main::prog) } # Break the opt_lib_prefix into the prefix_list array @prefix_list = split (',', $main::opt_lib_prefix); # Remove trailing / from the prefixes, in the list to prevent # searching things like /my/path//lib/mylib.so foreach (@prefix_list) { s|/+$||; } } sub Main() { Init(); $main::collected_profile = undef; @main::profile_files = (); $main::op_time = time(); # Printing symbols is special and requires a lot less info that most. if ($main::opt_symbols) { PrintSymbols(*STDIN); # Get /proc/maps and symbols output from stdin return; } # Fetch all profile data FetchDynamicProfiles(); # this will hold symbols that we read from the profile files my $symbol_map = {}; # Read one profile, pick the last item on the list my $data = ReadProfile($main::prog, pop(@main::profile_files)); my $profile = $data->{profile}; my $pcs = $data->{pcs}; my $libs = $data->{libs}; # Info about main program and shared libraries $symbol_map = MergeSymbols($symbol_map, $data->{symbols}); # Add additional profiles, if available. if (scalar(@main::profile_files) > 0) { foreach my $pname (@main::profile_files) { my $data2 = ReadProfile($main::prog, $pname); $profile = AddProfile($profile, $data2->{profile}); $pcs = AddPcs($pcs, $data2->{pcs}); $symbol_map = MergeSymbols($symbol_map, $data2->{symbols}); } } # Subtract base from profile, if specified if ($main::opt_base ne '') { my $base = ReadProfile($main::prog, $main::opt_base); $profile = SubtractProfile($profile, $base->{profile}); $pcs = AddPcs($pcs, $base->{pcs}); $symbol_map = MergeSymbols($symbol_map, $base->{symbols}); } # Get total data in profile my $total = TotalProfile($profile); # Collect symbols my $symbols; if ($main::use_symbolized_profile) { $symbols = FetchSymbols($pcs, $symbol_map); } elsif ($main::use_symbol_page) { $symbols = FetchSymbols($pcs); } else { $symbols = ExtractSymbols($libs, $pcs); } # Remove uniniteresting stack items $profile = RemoveUninterestingFrames($symbols, $profile); # Focus? if ($main::opt_focus ne '') { $profile = FocusProfile($symbols, $profile, $main::opt_focus); } # Ignore? if ($main::opt_ignore ne '') { $profile = IgnoreProfile($symbols, $profile, $main::opt_ignore); } my $calls = ExtractCalls($symbols, $profile); # Reduce profiles to required output granularity, and also clean # each stack trace so a given entry exists at most once. my $reduced = ReduceProfile($symbols, $profile); # Get derived profiles my $flat = FlatProfile($reduced); my $cumulative = CumulativeProfile($reduced); # Print if (!$main::opt_interactive) { if ($main::opt_disasm) { PrintDisassembly($libs, $flat, $cumulative, $main::opt_disasm, $total); } elsif ($main::opt_list) { PrintListing($total, $libs, $flat, $cumulative, $main::opt_list, 0); } elsif ($main::opt_text) { # Make sure the output is empty when have nothing to report # (only matters when --heapcheck is given but we must be # compatible with old branches that did not pass --heapcheck always): if ($total != 0) { Infof("Total: %s %s\n", Unparse($total), Units()); } PrintText($symbols, $flat, $cumulative, $total, -1); } elsif ($main::opt_raw) { PrintSymbolizedProfile($symbols, $profile, $main::prog); } elsif ($main::opt_callgrind) { PrintCallgrind($calls); } else { if (PrintDot($main::prog, $symbols, $profile, $flat, $cumulative, $total)) { if ($main::opt_gv) { RunGV(TempName($main::next_tmpfile, "ps"), ""); } elsif ($main::opt_web) { my $tmp = TempName($main::next_tmpfile, "svg"); RunWeb($tmp); # The command we run might hand the file name off # to an already running browser instance and then exit. # Normally, we'd remove $tmp on exit (right now), # but fork a child to remove $tmp a little later, so that the # browser has time to load it first. delete $main::tempnames{$tmp}; if (fork() == 0) { sleep 5; unlink($tmp); exit(0); } } } else { exit(1); } } } else { InteractiveMode($profile, $symbols, $libs, $total); } cleanup(); exit(0); } ##### Entry Point ##### Main(); # Temporary code to detect if we're running on a Goobuntu system. # These systems don't have the right stuff installed for the special # Readline libraries to work, so as a temporary workaround, we default # to using the normal stdio code, rather than the fancier readline-based # code sub ReadlineMightFail { if (-e '/lib/libtermcap.so.2') { return 0; # libtermcap exists, so readline should be okay } else { return 1; } } sub RunGV { my $fname = shift; my $bg = shift; # "" or " &" if we should run in background if (!system("$GV --version >$DEVNULL 2>&1")) { # Options using double dash are supported by this gv version. # Also, turn on noantialias to better handle bug in gv for # postscript files with large dimensions. # TODO: Maybe we should not pass the --noantialias flag # if the gv version is known to work properly without the flag. system("$GV --scale=$main::opt_scale --noantialias " . $fname . $bg); } else { # Old gv version - only supports options that use single dash. print STDERR "$GV -scale $main::opt_scale\n"; system("$GV -scale $main::opt_scale " . $fname . $bg); } } sub RunWeb { my $fname = shift; print STDERR "Loading web page file:///$fname\n"; if (`uname` =~ /Darwin/) { # OS X: open will use standard preference for SVG files. system("/usr/bin/open", $fname); return; } if (`uname` =~ /CYGWIN/) { # Windows(cygwin): open will use standard preference for SVG files. my $winname = `cygpath -wa $fname`; system("explorer.exe", $winname); return; } # Some kind of Unix; try generic symlinks, then specific browsers. # (Stop once we find one.) # Works best if the browser is already running. my @alt = ( "/etc/alternatives/gnome-www-browser", "/etc/alternatives/x-www-browser", "google-chrome", "firefox", ); foreach my $b (@alt) { if (system($b, $fname) == 0) { return; } } print STDERR "Could not load web browser.\n"; } sub RunKcachegrind { my $fname = shift; my $bg = shift; # "" or " &" if we should run in background print STDERR "Starting '$KCACHEGRIND " . $fname . $bg . "'\n"; system("$KCACHEGRIND " . $fname . $bg); } ##### Interactive helper routines ##### sub InteractiveMode { $| = 1; # Make output unbuffered for interactive mode my ($orig_profile, $symbols, $libs, $total) = @_; print STDERR "Welcome to pprof! For help, type 'help'.\n"; # Use ReadLine if it's installed and input comes from a console. if ( -t STDIN && !ReadlineMightFail() && defined(eval {require Term::ReadLine}) ) { my $term = new Term::ReadLine 'pprof'; while ( defined ($_ = $term->readline('(pprof) '))) { $term->addhistory($_) if /\S/; if (!InteractiveCommand($orig_profile, $symbols, $libs, $total, $_)) { last; # exit when we get an interactive command to quit } } } else { # don't have readline while (1) { print STDERR "(pprof) "; $_ = ; last if ! defined $_ ; s/\r//g; # turn windows-looking lines into unix-looking lines # Save some flags that might be reset by InteractiveCommand() my $save_opt_lines = $main::opt_lines; if (!InteractiveCommand($orig_profile, $symbols, $libs, $total, $_)) { last; # exit when we get an interactive command to quit } # Restore flags $main::opt_lines = $save_opt_lines; } } } # Takes two args: orig profile, and command to run. # Returns 1 if we should keep going, or 0 if we were asked to quit sub InteractiveCommand { my($orig_profile, $symbols, $libs, $total, $command) = @_; $_ = $command; # just to make future m//'s easier if (!defined($_)) { print STDERR "\n"; return 0; } if (m/^\s*quit/) { return 0; } if (m/^\s*help/) { InteractiveHelpMessage(); return 1; } # Clear all the mode options -- mode is controlled by "$command" $main::opt_text = 0; $main::opt_callgrind = 0; $main::opt_disasm = 0; $main::opt_list = 0; $main::opt_gv = 0; $main::opt_cum = 0; if (m/^\s*(text|top)(\d*)\s*(.*)/) { $main::opt_text = 1; my $line_limit = ($2 ne "") ? int($2) : 10; my $routine; my $ignore; ($routine, $ignore) = ParseInteractiveArgs($3); my $profile = ProcessProfile($total, $orig_profile, $symbols, "", $ignore); my $reduced = ReduceProfile($symbols, $profile); # Get derived profiles my $flat = FlatProfile($reduced); my $cumulative = CumulativeProfile($reduced); PrintText($symbols, $flat, $cumulative, $total, $line_limit); return 1; } if (m/^\s*callgrind\s*([^ \n]*)/) { $main::opt_callgrind = 1; # Get derived profiles my $calls = ExtractCalls($symbols, $orig_profile); my $filename = $1; if ( $1 eq '' ) { $filename = TempName($main::next_tmpfile, "callgrind"); } PrintCallgrind($calls, $filename); if ( $1 eq '' ) { RunKcachegrind($filename, " & "); $main::next_tmpfile++; } return 1; } if (m/^\s*(web)?list\s*(.+)/) { my $html = (defined($1) && ($1 eq "web")); $main::opt_list = 1; my $routine; my $ignore; ($routine, $ignore) = ParseInteractiveArgs($2); my $profile = ProcessProfile($total, $orig_profile, $symbols, "", $ignore); my $reduced = ReduceProfile($symbols, $profile); # Get derived profiles my $flat = FlatProfile($reduced); my $cumulative = CumulativeProfile($reduced); PrintListing($total, $libs, $flat, $cumulative, $routine, $html); return 1; } if (m/^\s*disasm\s*(.+)/) { $main::opt_disasm = 1; my $routine; my $ignore; ($routine, $ignore) = ParseInteractiveArgs($1); # Process current profile to account for various settings my $profile = ProcessProfile($total, $orig_profile, $symbols, "", $ignore); my $reduced = ReduceProfile($symbols, $profile); # Get derived profiles my $flat = FlatProfile($reduced); my $cumulative = CumulativeProfile($reduced); PrintDisassembly($libs, $flat, $cumulative, $routine, $total); return 1; } if (m/^\s*(gv|web)\s*(.*)/) { $main::opt_gv = 0; $main::opt_web = 0; if ($1 eq "gv") { $main::opt_gv = 1; } elsif ($1 eq "web") { $main::opt_web = 1; } my $focus; my $ignore; ($focus, $ignore) = ParseInteractiveArgs($2); # Process current profile to account for various settings my $profile = ProcessProfile($total, $orig_profile, $symbols, $focus, $ignore); my $reduced = ReduceProfile($symbols, $profile); # Get derived profiles my $flat = FlatProfile($reduced); my $cumulative = CumulativeProfile($reduced); if (PrintDot($main::prog, $symbols, $profile, $flat, $cumulative, $total)) { if ($main::opt_gv) { RunGV(TempName($main::next_tmpfile, "ps"), " &"); } elsif ($main::opt_web) { RunWeb(TempName($main::next_tmpfile, "svg")); } $main::next_tmpfile++; } return 1; } if (m/^\s*$/) { return 1; } print STDERR "Unknown command: try 'help'.\n"; return 1; } sub ProcessProfile { my $total_count = shift; my $orig_profile = shift; my $symbols = shift; my $focus = shift; my $ignore = shift; # Process current profile to account for various settings my $profile = $orig_profile; printf("Total: %s %s\n", Unparse($total_count), Units()); if ($focus ne '') { $profile = FocusProfile($symbols, $profile, $focus); my $focus_count = TotalProfile($profile); Infof("After focusing on '%s': %s %s of %s (%0.1f%%)\n", $focus, Unparse($focus_count), Units(), Unparse($total_count), ($focus_count*100.0) / $total_count); } if ($ignore ne '') { $profile = IgnoreProfile($symbols, $profile, $ignore); my $ignore_count = TotalProfile($profile); Infof("After ignoring '%s': %s %s of %s (%0.1f%%)\n", $ignore, Unparse($ignore_count), Units(), Unparse($total_count), ($ignore_count*100.0) / $total_count); } return $profile; } sub InteractiveHelpMessage { print STDERR <{$k}; my @addrs = split(/\n/, $k); if ($#addrs >= 0) { my $depth = $#addrs + 1; # int(foo / 2**32) is the only reliable way to get rid of bottom # 32 bits on both 32- and 64-bit systems. print pack('L*', $count & 0xFFFFFFFF, int($count / 2**32)); print pack('L*', $depth & 0xFFFFFFFF, int($depth / 2**32)); foreach my $full_addr (@addrs) { my $addr = $full_addr; $addr =~ s/0x0*//; # strip off leading 0x, zeroes if (length($addr) > 16) { print STDERR "Invalid address in profile: $full_addr\n"; next; } my $low_addr = substr($addr, -8); # get last 8 hex chars my $high_addr = substr($addr, -16, 8); # get up to 8 more hex chars print pack('L*', hex('0x' . $low_addr), hex('0x' . $high_addr)); } } } } # Print symbols and profile data sub PrintSymbolizedProfile { my $symbols = shift; my $profile = shift; my $prog = shift; $SYMBOL_PAGE =~ m,[^/]+$,; # matches everything after the last slash my $symbol_marker = $&; print '--- ', $symbol_marker, "\n"; if (defined($prog)) { print 'binary=', $prog, "\n"; } while (my ($pc, $name) = each(%{$symbols})) { my $sep = ' '; print '0x', $pc; # We have a list of function names, which include the inlined # calls. They are separated (and terminated) by --, which is # illegal in function names. for (my $j = 2; $j <= $#{$name}; $j += 3) { print $sep, $name->[$j]; $sep = '--'; } print "\n"; } print '---', "\n"; $PROFILE_PAGE =~ m,[^/]+$,; # matches everything after the last slash my $profile_marker = $&; print '--- ', $profile_marker, "\n"; if (defined($main::collected_profile)) { # if used with remote fetch, simply dump the collected profile to output. open(SRC, "<$main::collected_profile"); while () { print $_; } close(SRC); } else { # dump a cpu-format profile to standard out PrintProfileData($profile); } } # Print information conditionally filtered out depending on the output # format. sub Infof { my $format = shift; my @args = @_; return if $main::opt_svg; printf($format, @args); } # Print text output sub PrintText { my $symbols = shift; my $flat = shift; my $cumulative = shift; my $total = shift; my $line_limit = shift; # Which profile to sort by? my $s = $main::opt_cum ? $cumulative : $flat; my $running_sum = 0; my $lines = 0; foreach my $k (sort { GetEntry($s, $b) <=> GetEntry($s, $a) || $a cmp $b } keys(%{$cumulative})) { my $f = GetEntry($flat, $k); my $c = GetEntry($cumulative, $k); $running_sum += $f; my $sym = $k; if (exists($symbols->{$k})) { $sym = $symbols->{$k}->[0] . " " . $symbols->{$k}->[1]; if ($main::opt_addresses) { $sym = $k . " " . $sym; } } if ($f != 0 || $c != 0) { printf("%8s %6s %6s %8s %6s %s\n", Unparse($f), Percent($f, $total), Percent($running_sum, $total), Unparse($c), Percent($c, $total), $sym); } $lines++; last if ($line_limit >= 0 && $lines >= $line_limit); } } # Print the call graph in a way that's suiteable for callgrind. sub PrintCallgrind { my $calls = shift; my $filename; if ($main::opt_interactive) { $filename = shift; print STDERR "Writing callgrind file to '$filename'.\n" } else { $filename = "&STDOUT"; } open(CG, ">".$filename ); printf CG ("events: Hits\n\n"); foreach my $call ( map { $_->[0] } sort { $a->[1] cmp $b ->[1] || $a->[2] <=> $b->[2] } map { /([^:]+):(\d+):([^ ]+)( -> ([^:]+):(\d+):(.+))?/; [$_, $1, $2] } keys %$calls ) { my $count = int($calls->{$call}); $call =~ /([^:]+):(\d+):([^ ]+)( -> ([^:]+):(\d+):(.+))?/; my ( $caller_file, $caller_line, $caller_function, $callee_file, $callee_line, $callee_function ) = ( $1, $2, $3, $5, $6, $7 ); printf CG ("fl=$caller_file\nfn=$caller_function\n"); if (defined $6) { printf CG ("cfl=$callee_file\n"); printf CG ("cfn=$callee_function\n"); printf CG ("calls=$count $callee_line\n"); } printf CG ("$caller_line $count\n\n"); } } # Print disassembly for all all routines that match $main::opt_disasm sub PrintDisassembly { my $libs = shift; my $flat = shift; my $cumulative = shift; my $disasm_opts = shift; my $total = shift; foreach my $lib (@{$libs}) { my $symbol_table = GetProcedureBoundaries($lib->[0], $disasm_opts); my $offset = AddressSub($lib->[1], $lib->[3]); foreach my $routine (sort ByName keys(%{$symbol_table})) { my $start_addr = $symbol_table->{$routine}->[0]; my $end_addr = $symbol_table->{$routine}->[1]; # See if there are any samples in this routine my $length = hex(AddressSub($end_addr, $start_addr)); my $addr = AddressAdd($start_addr, $offset); for (my $i = 0; $i < $length; $i++) { if (defined($cumulative->{$addr})) { PrintDisassembledFunction($lib->[0], $offset, $routine, $flat, $cumulative, $start_addr, $end_addr, $total); last; } $addr = AddressInc($addr); } } } } # Return reference to array of tuples of the form: # [start_address, filename, linenumber, instruction, limit_address] # E.g., # ["0x806c43d", "/foo/bar.cc", 131, "ret", "0x806c440"] sub Disassemble { my $prog = shift; my $offset = shift; my $start_addr = shift; my $end_addr = shift; my $objdump = $obj_tool_map{"objdump"}; my $cmd = sprintf("$objdump -C -d -l --no-show-raw-insn " . "--start-address=0x$start_addr " . "--stop-address=0x$end_addr $prog"); if (system("$objdump --help >$DEVNULL 2>&1") != 0) { # objdump must not exist. Fall back to go tool objdump. $objdump = "go tool objdump"; $cmd = "$objdump $prog 0x$start_addr 0x$end_addr"; } open(OBJDUMP, "$cmd |") || error("$objdump: $!\n"); my @result = (); my $filename = ""; my $linenumber = -1; my $last = ["", "", "", ""]; while () { s/\r//g; # turn windows-looking lines into unix-looking lines chop; if (m|\s*(.+):(\d+)\s*$|) { # Location line of the form: # : $filename = $1; $linenumber = $2; } elsif (m/^ +([0-9a-f]+):\s*(.*)/) { # Disassembly line -- zero-extend address to full length my $addr = HexExtend($1); my $k = AddressAdd($addr, $offset); $last->[4] = $k; # Store ending address for previous instruction $last = [$k, $filename, $linenumber, $2, $end_addr]; push(@result, $last); } } close(OBJDUMP); return @result; } # The input file should contain lines of the form /proc/maps-like # output (same format as expected from the profiles) or that looks # like hex addresses (like "0xDEADBEEF"). We will parse all # /proc/maps output, and for all the hex addresses, we will output # "short" symbol names, one per line, in the same order as the input. sub PrintSymbols { my $maps_and_symbols_file = shift; # ParseLibraries expects pcs to be in a set. Fine by us... my @pclist = (); # pcs in sorted order my $pcs = {}; my $map = ""; foreach my $line (<$maps_and_symbols_file>) { $line =~ s/\r//g; # turn windows-looking lines into unix-looking lines if ($line =~ /\b(0x[0-9a-f]+)\b/i) { push(@pclist, HexExtend($1)); $pcs->{$pclist[-1]} = 1; } else { $map .= $line; } } my $libs = ParseLibraries($main::prog, $map, $pcs); my $symbols = ExtractSymbols($libs, $pcs); foreach my $pc (@pclist) { # ->[0] is the shortname, ->[2] is the full name print(($symbols->{$pc}->[0] || "??") . "\n"); } } # For sorting functions by name sub ByName { return ShortFunctionName($a) cmp ShortFunctionName($b); } # Print source-listing for all all routines that match $main::opt_list sub PrintListing { my $total = shift; my $libs = shift; my $flat = shift; my $cumulative = shift; my $list_opts = shift; my $html = shift; my $output = \*STDOUT; my $fname = ""; if ($html) { # Arrange to write the output to a temporary file $fname = TempName($main::next_tmpfile, "html"); $main::next_tmpfile++; if (!open(TEMP, ">$fname")) { print STDERR "$fname: $!\n"; return; } $output = \*TEMP; print $output HtmlListingHeader(); printf $output ("
%s
Total: %s %s
\n", $main::prog, Unparse($total), Units()); } my $listed = 0; foreach my $lib (@{$libs}) { my $symbol_table = GetProcedureBoundaries($lib->[0], $list_opts); my $offset = AddressSub($lib->[1], $lib->[3]); foreach my $routine (sort ByName keys(%{$symbol_table})) { # Print if there are any samples in this routine my $start_addr = $symbol_table->{$routine}->[0]; my $end_addr = $symbol_table->{$routine}->[1]; my $length = hex(AddressSub($end_addr, $start_addr)); my $addr = AddressAdd($start_addr, $offset); for (my $i = 0; $i < $length; $i++) { if (defined($cumulative->{$addr})) { $listed += PrintSource( $lib->[0], $offset, $routine, $flat, $cumulative, $start_addr, $end_addr, $html, $output); last; } $addr = AddressInc($addr); } } } if ($html) { if ($listed > 0) { print $output HtmlListingFooter(); close($output); RunWeb($fname); } else { close($output); unlink($fname); } } } sub HtmlListingHeader { return <<'EOF'; Pprof listing EOF } sub HtmlListingFooter { return <<'EOF'; EOF } sub HtmlEscape { my $text = shift; $text =~ s/&/&/g; $text =~ s//>/g; return $text; } # Returns the indentation of the line, if it has any non-whitespace # characters. Otherwise, returns -1. sub Indentation { my $line = shift; if (m/^(\s*)\S/) { return length($1); } else { return -1; } } # Print source-listing for one routine sub PrintSource { my $prog = shift; my $offset = shift; my $routine = shift; my $flat = shift; my $cumulative = shift; my $start_addr = shift; my $end_addr = shift; my $html = shift; my $output = shift; # Disassemble all instructions (just to get line numbers) my @instructions = Disassemble($prog, $offset, $start_addr, $end_addr); # Hack 1: assume that the first source file encountered in the # disassembly contains the routine my $filename = undef; for (my $i = 0; $i <= $#instructions; $i++) { if ($instructions[$i]->[2] >= 0) { $filename = $instructions[$i]->[1]; last; } } if (!defined($filename)) { print STDERR "no filename found in $routine\n"; return 0; } # Hack 2: assume that the largest line number from $filename is the # end of the procedure. This is typically safe since if P1 contains # an inlined call to P2, then P2 usually occurs earlier in the # source file. If this does not work, we might have to compute a # density profile or just print all regions we find. my $lastline = 0; for (my $i = 0; $i <= $#instructions; $i++) { my $f = $instructions[$i]->[1]; my $l = $instructions[$i]->[2]; if (($f eq $filename) && ($l > $lastline)) { $lastline = $l; } } # Hack 3: assume the first source location from "filename" is the start of # the source code. my $firstline = 1; for (my $i = 0; $i <= $#instructions; $i++) { if ($instructions[$i]->[1] eq $filename) { $firstline = $instructions[$i]->[2]; last; } } # Hack 4: Extend last line forward until its indentation is less than # the indentation we saw on $firstline my $oldlastline = $lastline; { if (!open(FILE, "<$filename")) { print STDERR "$filename: $!\n"; return 0; } my $l = 0; my $first_indentation = -1; while () { s/\r//g; # turn windows-looking lines into unix-looking lines $l++; my $indent = Indentation($_); if ($l >= $firstline) { if ($first_indentation < 0 && $indent >= 0) { $first_indentation = $indent; last if ($first_indentation == 0); } } if ($l >= $lastline && $indent >= 0) { if ($indent >= $first_indentation) { $lastline = $l+1; } else { last; } } } close(FILE); } # Assign all samples to the range $firstline,$lastline, # Hack 4: If an instruction does not occur in the range, its samples # are moved to the next instruction that occurs in the range. my $samples1 = {}; # Map from line number to flat count my $samples2 = {}; # Map from line number to cumulative count my $running1 = 0; # Unassigned flat counts my $running2 = 0; # Unassigned cumulative counts my $total1 = 0; # Total flat counts my $total2 = 0; # Total cumulative counts my %disasm = (); # Map from line number to disassembly my $running_disasm = ""; # Unassigned disassembly my $skip_marker = "---\n"; if ($html) { $skip_marker = ""; for (my $l = $firstline; $l <= $lastline; $l++) { $disasm{$l} = ""; } } foreach my $e (@instructions) { # Add up counts for all address that fall inside this instruction my $c1 = 0; my $c2 = 0; for (my $a = $e->[0]; $a lt $e->[4]; $a = AddressInc($a)) { $c1 += GetEntry($flat, $a); $c2 += GetEntry($cumulative, $a); } if ($html) { $running_disasm .= sprintf(" %6s %6s \t\t%8s: %s\n", HtmlPrintNumber($c1), HtmlPrintNumber($c2), $e->[0], CleanDisassembly($e->[3])); } $running1 += $c1; $running2 += $c2; $total1 += $c1; $total2 += $c2; my $file = $e->[1]; my $line = $e->[2]; if (($file eq $filename) && ($line >= $firstline) && ($line <= $lastline)) { # Assign all accumulated samples to this line AddEntry($samples1, $line, $running1); AddEntry($samples2, $line, $running2); $running1 = 0; $running2 = 0; if ($html) { $disasm{$line} .= $running_disasm; $running_disasm = ''; } } } # Assign any leftover samples to $lastline AddEntry($samples1, $lastline, $running1); AddEntry($samples2, $lastline, $running2); if ($html) { printf $output ( "

%s

%s\n
\n" .
      "Total:%6s %6s (flat / cumulative %s)\n",
      HtmlEscape(ShortFunctionName($routine)),
      HtmlEscape($filename),
      Unparse($total1),
      Unparse($total2),
      Units());
  } else {
    printf $output (
      "ROUTINE ====================== %s in %s\n" .
      "%6s %6s Total %s (flat / cumulative)\n",
      ShortFunctionName($routine),
      $filename,
      Unparse($total1),
      Unparse($total2),
      Units());
  }
  if (!open(FILE, "<$filename")) {
    print STDERR "$filename: $!\n";
    return 0;
  }
  my $l = 0;
  while () {
    s/\r//g;         # turn windows-looking lines into unix-looking lines
    $l++;
    if ($l >= $firstline - 5 &&
        (($l <= $oldlastline + 5) || ($l <= $lastline))) {
      chop;
      my $text = $_;
      if ($l == $firstline) { print $output $skip_marker; }
      my $n1 = GetEntry($samples1, $l);
      my $n2 = GetEntry($samples2, $l);
      if ($html) {
        my $dis = $disasm{$l};
        if (!defined($dis) || $n1 + $n2 == 0) {
          # No samples/disassembly for this source line
          printf $output (
            "%5d " .
            "%6s %6s %s\n",
            $l,
            HtmlPrintNumber($n1),
            HtmlPrintNumber($n2),
            HtmlEscape($text));
        } else {
          printf $output (
            "%5d " .
            "%6s %6s %s" .
            "%s\n",
            $l,
            HtmlPrintNumber($n1),
            HtmlPrintNumber($n2),
            HtmlEscape($text),
            HtmlEscape($dis));
        }
      } else {
        printf $output(
          "%6s %6s %4d: %s\n",
          UnparseAlt($n1),
          UnparseAlt($n2),
          $l,
          $text);
      }
      if ($l == $lastline)  { print $output $skip_marker; }
    };
  }
  close(FILE);
  if ($html) {
    print $output "
\n"; } return 1; } # Return the source line for the specified file/linenumber. # Returns undef if not found. sub SourceLine { my $file = shift; my $line = shift; # Look in cache if (!defined($main::source_cache{$file})) { if (100 < scalar keys(%main::source_cache)) { # Clear the cache when it gets too big $main::source_cache = (); } # Read all lines from the file if (!open(FILE, "<$file")) { print STDERR "$file: $!\n"; $main::source_cache{$file} = []; # Cache the negative result return undef; } my $lines = []; push(@{$lines}, ""); # So we can use 1-based line numbers as indices while () { push(@{$lines}, $_); } close(FILE); # Save the lines in the cache $main::source_cache{$file} = $lines; } my $lines = $main::source_cache{$file}; if (($line < 0) || ($line > $#{$lines})) { return undef; } else { return $lines->[$line]; } } # Print disassembly for one routine with interspersed source if available sub PrintDisassembledFunction { my $prog = shift; my $offset = shift; my $routine = shift; my $flat = shift; my $cumulative = shift; my $start_addr = shift; my $end_addr = shift; my $total = shift; # Disassemble all instructions my @instructions = Disassemble($prog, $offset, $start_addr, $end_addr); # Make array of counts per instruction my @flat_count = (); my @cum_count = (); my $flat_total = 0; my $cum_total = 0; foreach my $e (@instructions) { # Add up counts for all address that fall inside this instruction my $c1 = 0; my $c2 = 0; for (my $a = $e->[0]; $a lt $e->[4]; $a = AddressInc($a)) { $c1 += GetEntry($flat, $a); $c2 += GetEntry($cumulative, $a); } push(@flat_count, $c1); push(@cum_count, $c2); $flat_total += $c1; $cum_total += $c2; } # Print header with total counts printf("ROUTINE ====================== %s\n" . "%6s %6s %s (flat, cumulative) %.1f%% of total\n", ShortFunctionName($routine), Unparse($flat_total), Unparse($cum_total), Units(), ($cum_total * 100.0) / $total); # Process instructions in order my $current_file = ""; for (my $i = 0; $i <= $#instructions; ) { my $e = $instructions[$i]; # Print the new file name whenever we switch files if ($e->[1] ne $current_file) { $current_file = $e->[1]; my $fname = $current_file; $fname =~ s|^\./||; # Trim leading "./" # Shorten long file names if (length($fname) >= 58) { $fname = "..." . substr($fname, -55); } printf("-------------------- %s\n", $fname); } # TODO: Compute range of lines to print together to deal with # small reorderings. my $first_line = $e->[2]; my $last_line = $first_line; my %flat_sum = (); my %cum_sum = (); for (my $l = $first_line; $l <= $last_line; $l++) { $flat_sum{$l} = 0; $cum_sum{$l} = 0; } # Find run of instructions for this range of source lines my $first_inst = $i; while (($i <= $#instructions) && ($instructions[$i]->[2] >= $first_line) && ($instructions[$i]->[2] <= $last_line)) { $e = $instructions[$i]; $flat_sum{$e->[2]} += $flat_count[$i]; $cum_sum{$e->[2]} += $cum_count[$i]; $i++; } my $last_inst = $i - 1; # Print source lines for (my $l = $first_line; $l <= $last_line; $l++) { my $line = SourceLine($current_file, $l); if (!defined($line)) { $line = "?\n"; next; } else { $line =~ s/^\s+//; } printf("%6s %6s %5d: %s", UnparseAlt($flat_sum{$l}), UnparseAlt($cum_sum{$l}), $l, $line); } # Print disassembly for (my $x = $first_inst; $x <= $last_inst; $x++) { my $e = $instructions[$x]; my $address = $e->[0]; $address = AddressSub($address, $offset); # Make relative to section $address =~ s/^0x//; $address =~ s/^0*//; printf("%6s %6s %8s: %6s\n", UnparseAlt($flat_count[$x]), UnparseAlt($cum_count[$x]), $address, CleanDisassembly($e->[3])); } } } # Print DOT graph sub PrintDot { my $prog = shift; my $symbols = shift; my $raw = shift; my $flat = shift; my $cumulative = shift; my $overall_total = shift; # Get total my $local_total = TotalProfile($flat); my $nodelimit = int($main::opt_nodefraction * $local_total); my $edgelimit = int($main::opt_edgefraction * $local_total); my $nodecount = $main::opt_nodecount; # Find nodes to include my @list = (sort { abs(GetEntry($cumulative, $b)) <=> abs(GetEntry($cumulative, $a)) || $a cmp $b } keys(%{$cumulative})); my $last = $nodecount - 1; if ($last > $#list) { $last = $#list; } while (($last >= 0) && (abs(GetEntry($cumulative, $list[$last])) <= $nodelimit)) { $last--; } if ($last < 0) { print STDERR "No nodes to print\n"; cleanup(); return 0; } if ($nodelimit > 0 || $edgelimit > 0) { printf STDERR ("Dropping nodes with <= %s %s; edges with <= %s abs(%s)\n", Unparse($nodelimit), Units(), Unparse($edgelimit), Units()); } # Open DOT output file my $output; if ($main::opt_gv) { $output = "| $DOT -Tps2 >" . TempName($main::next_tmpfile, "ps"); } elsif ($main::opt_ps) { $output = "| $DOT -Tps2"; } elsif ($main::opt_pdf) { $output = "| $DOT -Tps2 | $PS2PDF - -"; } elsif ($main::opt_web || $main::opt_svg) { # We need to post-process the SVG, so write to a temporary file always. $output = "| $DOT -Tsvg >" . TempName($main::next_tmpfile, "svg"); } elsif ($main::opt_gif) { $output = "| $DOT -Tgif"; } else { $output = ">&STDOUT"; } open(DOT, $output) || error("$output: $!\n"); # Title printf DOT ("digraph \"%s; %s %s\" {\n", $prog, Unparse($overall_total), Units()); if ($main::opt_pdf) { # The output is more printable if we set the page size for dot. printf DOT ("size=\"8,11\"\n"); } printf DOT ("node [width=0.375,height=0.25];\n"); # Print legend printf DOT ("Legend [shape=box,fontsize=24,shape=plaintext," . "label=\"%s\\l%s\\l%s\\l%s\\l%s\\l\"];\n", $prog, sprintf("Total %s: %s", Units(), Unparse($overall_total)), sprintf("Focusing on: %s", Unparse($local_total)), sprintf("Dropped nodes with <= %s abs(%s)", Unparse($nodelimit), Units()), sprintf("Dropped edges with <= %s %s", Unparse($edgelimit), Units()) ); # Print nodes my %node = (); my $nextnode = 1; foreach my $a (@list[0..$last]) { # Pick font size my $f = GetEntry($flat, $a); my $c = GetEntry($cumulative, $a); my $fs = 8; if ($local_total > 0) { $fs = 8 + (50.0 * sqrt(abs($f * 1.0 / $local_total))); } $node{$a} = $nextnode++; my $sym = $a; $sym =~ s/\s+/\\n/g; $sym =~ s/::/\\n/g; # Extra cumulative info to print for non-leaves my $extra = ""; if ($f != $c) { $extra = sprintf("\\rof %s (%s)", Unparse($c), Percent($c, $overall_total)); } my $style = ""; if ($main::opt_heapcheck) { if ($f > 0) { # make leak-causing nodes more visible (add a background) $style = ",style=filled,fillcolor=gray" } elsif ($f < 0) { # make anti-leak-causing nodes (which almost never occur) # stand out as well (triple border) $style = ",peripheries=3" } } printf DOT ("N%d [label=\"%s\\n%s (%s)%s\\r" . "\",shape=box,fontsize=%.1f%s];\n", $node{$a}, $sym, Unparse($f), Percent($f, $overall_total), $extra, $fs, $style, ); } # Get edges and counts per edge my %edge = (); my $n; foreach my $k (keys(%{$raw})) { # TODO: omit low %age edges $n = $raw->{$k}; my @translated = TranslateStack($symbols, $k); for (my $i = 1; $i <= $#translated; $i++) { my $src = $translated[$i]; my $dst = $translated[$i-1]; #next if ($src eq $dst); # Avoid self-edges? if (exists($node{$src}) && exists($node{$dst})) { my $edge_label = "$src\001$dst"; if (!exists($edge{$edge_label})) { $edge{$edge_label} = 0; } $edge{$edge_label} += $n; } } } # Print edges foreach my $e (keys(%edge)) { my @x = split(/\001/, $e); $n = $edge{$e}; if (abs($n) > $edgelimit) { # Compute line width based on edge count my $fraction = abs($local_total ? (3 * ($n / $local_total)) : 0); if ($fraction > 1) { $fraction = 1; } my $w = $fraction * 2; if ($w < 1 && ($main::opt_web || $main::opt_svg)) { # SVG output treats line widths < 1 poorly. $w = 1; } # Dot sometimes segfaults if given edge weights that are too large, so # we cap the weights at a large value my $edgeweight = abs($n) ** 0.7; if ($edgeweight > 100000) { $edgeweight = 100000; } $edgeweight = int($edgeweight); my $style = sprintf("setlinewidth(%f)", $w); if ($x[1] =~ m/\(inline\)/) { $style .= ",dashed"; } # Use a slightly squashed function of the edge count as the weight printf DOT ("N%s -> N%s [label=%s, weight=%d, style=\"%s\"];\n", $node{$x[0]}, $node{$x[1]}, Unparse($n), $edgeweight, $style); } } print DOT ("}\n"); close(DOT); if ($main::opt_web || $main::opt_svg) { # Rewrite SVG to be more usable inside web browser. RewriteSvg(TempName($main::next_tmpfile, "svg")); } return 1; } sub RewriteSvg { my $svgfile = shift; open(SVG, $svgfile) || die "open temp svg: $!"; my @svg = ; close(SVG); unlink $svgfile; my $svg = join('', @svg); # Dot's SVG output is # # # # ... # # # # Change it to # # # $svg_javascript # # # ... # # # # Fix width, height; drop viewBox. $svg =~ s/(?s) above first my $svg_javascript = SvgJavascript(); my $viewport = "\n"; $svg =~ s/ above . $svg =~ s/(.*)(<\/svg>)/$1<\/g>$2/; $svg =~ s/$svgfile") || die "open $svgfile: $!"; print SVG $svg; close(SVG); } } sub SvgJavascript { return <<'EOF'; EOF } # Translate a stack of addresses into a stack of symbols sub TranslateStack { my $symbols = shift; my $k = shift; my @addrs = split(/\n/, $k); my @result = (); for (my $i = 0; $i <= $#addrs; $i++) { my $a = $addrs[$i]; # Skip large addresses since they sometimes show up as fake entries on RH9 if (length($a) > 8 && $a gt "7fffffffffffffff") { next; } if ($main::opt_disasm || $main::opt_list) { # We want just the address for the key push(@result, $a); next; } my $symlist = $symbols->{$a}; if (!defined($symlist)) { $symlist = [$a, "", $a]; } # We can have a sequence of symbols for a particular entry # (more than one symbol in the case of inlining). Callers # come before callees in symlist, so walk backwards since # the translated stack should contain callees before callers. for (my $j = $#{$symlist}; $j >= 2; $j -= 3) { my $func = $symlist->[$j-2]; my $fileline = $symlist->[$j-1]; my $fullfunc = $symlist->[$j]; if ($j > 2) { $func = "$func (inline)"; } if ($main::opt_addresses) { push(@result, "$a $func $fileline"); } elsif ($main::opt_lines) { if ($func eq '??' && $fileline eq '??:0') { push(@result, "$a"); } else { push(@result, "$func $fileline"); } } elsif ($main::opt_functions) { if ($func eq '??') { push(@result, "$a"); } else { push(@result, $func); } } elsif ($main::opt_files) { if ($fileline eq '??:0' || $fileline eq '') { push(@result, "$a"); } else { my $f = $fileline; $f =~ s/:\d+$//; push(@result, $f); } } else { push(@result, $a); last; # Do not print inlined info } } } # print join(",", @addrs), " => ", join(",", @result), "\n"; return @result; } # Generate percent string for a number and a total sub Percent { my $num = shift; my $tot = shift; if ($tot != 0) { return sprintf("%.1f%%", $num * 100.0 / $tot); } else { return ($num == 0) ? "nan" : (($num > 0) ? "+inf" : "-inf"); } } # Generate pretty-printed form of number sub Unparse { my $num = shift; if ($main::profile_type eq 'heap' || $main::profile_type eq 'growth') { if ($main::opt_inuse_objects || $main::opt_alloc_objects) { return sprintf("%d", $num); } else { if ($main::opt_show_bytes) { return sprintf("%d", $num); } else { return sprintf("%.1f", $num / 1048576.0); } } } elsif ($main::profile_type eq 'contention' && !$main::opt_contentions) { return sprintf("%.3f", $num / 1e9); # Convert nanoseconds to seconds } else { return sprintf("%d", $num); } } # Alternate pretty-printed form: 0 maps to "." sub UnparseAlt { my $num = shift; if ($num == 0) { return "."; } else { return Unparse($num); } } # Alternate pretty-printed form: 0 maps to "" sub HtmlPrintNumber { my $num = shift; if ($num == 0) { return ""; } else { return Unparse($num); } } # Return output units sub Units { if ($main::profile_type eq 'heap' || $main::profile_type eq 'growth') { if ($main::opt_inuse_objects || $main::opt_alloc_objects) { return "objects"; } else { if ($main::opt_show_bytes) { return "B"; } else { return "MB"; } } } elsif ($main::profile_type eq 'contention' && !$main::opt_contentions) { return "seconds"; } elsif ($main::profile_type eq 'thread') { return "threads"; } else { return "samples"; } } ##### Profile manipulation code ##### # Generate flattened profile: # If count is charged to stack [a,b,c,d], in generated profile, # it will be charged to [a] sub FlatProfile { my $profile = shift; my $result = {}; foreach my $k (keys(%{$profile})) { my $count = $profile->{$k}; my @addrs = split(/\n/, $k); if ($#addrs >= 0) { AddEntry($result, $addrs[0], $count); } } return $result; } # Generate cumulative profile: # If count is charged to stack [a,b,c,d], in generated profile, # it will be charged to [a], [b], [c], [d] sub CumulativeProfile { my $profile = shift; my $result = {}; foreach my $k (keys(%{$profile})) { my $count = $profile->{$k}; my @addrs = split(/\n/, $k); foreach my $a (@addrs) { AddEntry($result, $a, $count); } } return $result; } # If the second-youngest PC on the stack is always the same, returns # that pc. Otherwise, returns undef. sub IsSecondPcAlwaysTheSame { my $profile = shift; my $second_pc = undef; foreach my $k (keys(%{$profile})) { my @addrs = split(/\n/, $k); if ($#addrs < 1) { return undef; } if (not defined $second_pc) { $second_pc = $addrs[1]; } else { if ($second_pc ne $addrs[1]) { return undef; } } } return $second_pc; } sub ExtractSymbolLocation { my $symbols = shift; my $address = shift; # 'addr2line' outputs "??:0" for unknown locations; we do the # same to be consistent. my $location = "??:0:unknown"; if (exists $symbols->{$address}) { my $file = $symbols->{$address}->[1]; if ($file eq "?") { $file = "??:0" } $location = $file . ":" . $symbols->{$address}->[0]; } return $location; } # Extracts a graph of calls. sub ExtractCalls { my $symbols = shift; my $profile = shift; my $calls = {}; while( my ($stack_trace, $count) = each %$profile ) { my @address = split(/\n/, $stack_trace); my $destination = ExtractSymbolLocation($symbols, $address[0]); AddEntry($calls, $destination, $count); for (my $i = 1; $i <= $#address; $i++) { my $source = ExtractSymbolLocation($symbols, $address[$i]); my $call = "$source -> $destination"; AddEntry($calls, $call, $count); $destination = $source; } } return $calls; } sub RemoveUninterestingFrames { my $symbols = shift; my $profile = shift; # List of function names to skip my %skip = (); my $skip_regexp = 'NOMATCH'; if ($main::profile_type eq 'heap' || $main::profile_type eq 'growth') { foreach my $name ('calloc', 'cfree', 'malloc', 'free', 'memalign', 'posix_memalign', 'pvalloc', 'valloc', 'realloc', 'tc_calloc', 'tc_cfree', 'tc_malloc', 'tc_free', 'tc_memalign', 'tc_posix_memalign', 'tc_pvalloc', 'tc_valloc', 'tc_realloc', 'tc_new', 'tc_delete', 'tc_newarray', 'tc_deletearray', 'tc_new_nothrow', 'tc_newarray_nothrow', 'do_malloc', '::do_malloc', # new name -- got moved to an unnamed ns '::do_malloc_or_cpp_alloc', 'DoSampledAllocation', 'simple_alloc::allocate', '__malloc_alloc_template::allocate', '__builtin_delete', '__builtin_new', '__builtin_vec_delete', '__builtin_vec_new', 'operator new', 'operator new[]', # Go 'catstring', 'cnew', 'copyin', 'gostring', 'gostringsize', 'growslice1', 'appendslice1', 'hash_init', 'hash_subtable_new', 'hash_conv', 'hash_grow', 'hash_insert_internal', 'hash_insert', 'mapassign', 'runtime.mapassign', 'runtime.appendslice', 'runtime.mapassign1', 'makechan', 'makemap', 'mal', 'profilealloc', 'runtime.new', 'makeslice1', 'runtime.malloc', 'unsafe.New', 'runtime.mallocgc', 'runtime.catstring', 'runtime.cnew', 'runtime.cnewarray', 'runtime.growslice', 'runtime.ifaceT2E', 'runtime.ifaceT2I', 'runtime.makechan', 'runtime.makechan_c', 'runtime.makemap', 'runtime.makemap_c', 'runtime.makeslice', 'runtime.mal', 'runtime.settype', 'runtime.settype_flush', 'runtime.slicebytetostring', 'runtime.sliceinttostring', 'runtime.stringtoslicebyte', 'runtime.stringtosliceint', # These mark the beginning/end of our custom sections '__start_google_malloc', '__stop_google_malloc', '__start_malloc_hook', '__stop_malloc_hook') { $skip{$name} = 1; $skip{"_" . $name} = 1; # Mach (OS X) adds a _ prefix to everything } # TODO: Remove TCMalloc once everything has been # moved into the tcmalloc:: namespace and we have flushed # old code out of the system. $skip_regexp = "TCMalloc|^tcmalloc::"; } elsif ($main::profile_type eq 'contention') { foreach my $vname ('Mutex::Unlock', 'Mutex::UnlockSlow') { $skip{$vname} = 1; } } elsif ($main::profile_type eq 'cpu') { # Drop signal handlers used for CPU profile collection # TODO(dpeng): this should not be necessary; it's taken # care of by the general 2nd-pc mechanism below. foreach my $name ('ProfileData::Add', # historical 'ProfileData::prof_handler', # historical 'CpuProfiler::prof_handler', '__FRAME_END__', '__pthread_sighandler', '__restore') { $skip{$name} = 1; } } else { # Nothing skipped for unknown types } # Go doesn't have the problem that this heuristic tries to fix. Disable. if (0 && $main::profile_type eq 'cpu') { # If all the second-youngest program counters are the same, # this STRONGLY suggests that it is an artifact of measurement, # i.e., stack frames pushed by the CPU profiler signal handler. # Hence, we delete them. # (The topmost PC is read from the signal structure, not from # the stack, so it does not get involved.) while (my $second_pc = IsSecondPcAlwaysTheSame($profile)) { my $result = {}; my $func = ''; if (exists($symbols->{$second_pc})) { $second_pc = $symbols->{$second_pc}->[0]; } print STDERR "Removing $second_pc from all stack traces.\n"; foreach my $k (keys(%{$profile})) { my $count = $profile->{$k}; my @addrs = split(/\n/, $k); splice @addrs, 1, 1; my $reduced_path = join("\n", @addrs); AddEntry($result, $reduced_path, $count); } $profile = $result; } } my $result = {}; foreach my $k (keys(%{$profile})) { my $count = $profile->{$k}; my @addrs = split(/\n/, $k); my @path = (); foreach my $a (@addrs) { if (exists($symbols->{$a})) { my $func = $symbols->{$a}->[0]; if ($skip{$func} || ($func =~ m/$skip_regexp/)) { next; } } push(@path, $a); } my $reduced_path = join("\n", @path); AddEntry($result, $reduced_path, $count); } return $result; } # Reduce profile to granularity given by user sub ReduceProfile { my $symbols = shift; my $profile = shift; my $result = {}; foreach my $k (keys(%{$profile})) { my $count = $profile->{$k}; my @translated = TranslateStack($symbols, $k); my @path = (); my %seen = (); $seen{''} = 1; # So that empty keys are skipped foreach my $e (@translated) { # To avoid double-counting due to recursion, skip a stack-trace # entry if it has already been seen if (!$seen{$e}) { $seen{$e} = 1; push(@path, $e); } } my $reduced_path = join("\n", @path); AddEntry($result, $reduced_path, $count); } return $result; } # Does the specified symbol array match the regexp? sub SymbolMatches { my $sym = shift; my $re = shift; if (defined($sym)) { for (my $i = 0; $i < $#{$sym}; $i += 3) { if ($sym->[$i] =~ m/$re/ || $sym->[$i+1] =~ m/$re/) { return 1; } } } return 0; } # Focus only on paths involving specified regexps sub FocusProfile { my $symbols = shift; my $profile = shift; my $focus = shift; my $result = {}; foreach my $k (keys(%{$profile})) { my $count = $profile->{$k}; my @addrs = split(/\n/, $k); foreach my $a (@addrs) { # Reply if it matches either the address/shortname/fileline if (($a =~ m/$focus/) || SymbolMatches($symbols->{$a}, $focus)) { AddEntry($result, $k, $count); last; } } } return $result; } # Focus only on paths not involving specified regexps sub IgnoreProfile { my $symbols = shift; my $profile = shift; my $ignore = shift; my $result = {}; foreach my $k (keys(%{$profile})) { my $count = $profile->{$k}; my @addrs = split(/\n/, $k); my $matched = 0; foreach my $a (@addrs) { # Reply if it matches either the address/shortname/fileline if (($a =~ m/$ignore/) || SymbolMatches($symbols->{$a}, $ignore)) { $matched = 1; last; } } if (!$matched) { AddEntry($result, $k, $count); } } return $result; } # Get total count in profile sub TotalProfile { my $profile = shift; my $result = 0; foreach my $k (keys(%{$profile})) { $result += $profile->{$k}; } return $result; } # Add A to B sub AddProfile { my $A = shift; my $B = shift; my $R = {}; # add all keys in A foreach my $k (keys(%{$A})) { my $v = $A->{$k}; AddEntry($R, $k, $v); } # add all keys in B foreach my $k (keys(%{$B})) { my $v = $B->{$k}; AddEntry($R, $k, $v); } return $R; } # Merges symbol maps sub MergeSymbols { my $A = shift; my $B = shift; my $R = {}; foreach my $k (keys(%{$A})) { $R->{$k} = $A->{$k}; } if (defined($B)) { foreach my $k (keys(%{$B})) { $R->{$k} = $B->{$k}; } } return $R; } # Add A to B sub AddPcs { my $A = shift; my $B = shift; my $R = {}; # add all keys in A foreach my $k (keys(%{$A})) { $R->{$k} = 1 } # add all keys in B foreach my $k (keys(%{$B})) { $R->{$k} = 1 } return $R; } # Subtract B from A sub SubtractProfile { my $A = shift; my $B = shift; my $R = {}; foreach my $k (keys(%{$A})) { my $v = $A->{$k} - GetEntry($B, $k); if ($v < 0 && $main::opt_drop_negative) { $v = 0; } AddEntry($R, $k, $v); } if (!$main::opt_drop_negative) { # Take care of when subtracted profile has more entries foreach my $k (keys(%{$B})) { if (!exists($A->{$k})) { AddEntry($R, $k, 0 - $B->{$k}); } } } return $R; } # Get entry from profile; zero if not present sub GetEntry { my $profile = shift; my $k = shift; if (exists($profile->{$k})) { return $profile->{$k}; } else { return 0; } } # Add entry to specified profile sub AddEntry { my $profile = shift; my $k = shift; my $n = shift; if (!exists($profile->{$k})) { $profile->{$k} = 0; } $profile->{$k} += $n; } # Add a stack of entries to specified profile, and add them to the $pcs # list. sub AddEntries { my $profile = shift; my $pcs = shift; my $stack = shift; my $count = shift; my @k = (); foreach my $e (split(/\s+/, $stack)) { my $pc = HexExtend($e); $pcs->{$pc} = 1; push @k, $pc; } AddEntry($profile, (join "\n", @k), $count); } sub IsSymbolizedProfileFile { my $file_name = shift; if (!(-e $file_name) || !(-r $file_name)) { return 0; } $SYMBOL_PAGE =~ m,[^/]+$,; # matches everything after the last slash my $symbol_marker = $&; # Check if the file contains a symbol-section marker. open(TFILE, "<$file_name"); my @lines = ; my $result = grep(/^--- *$symbol_marker/, @lines); close(TFILE); return $result > 0; } ##### Code to profile a server dynamically ##### sub CheckSymbolPage { my $url = SymbolPageURL(); print STDERR "Read $url\n"; my $line = FetchHTTP($url); $line =~ s/\r//g; # turn windows-looking lines into unix-looking lines unless (defined($line)) { error("$url doesn't exist\n"); } if ($line =~ /^num_symbols:\s+(\d+)$/) { if ($1 == 0) { error("Stripped binary. No symbols available.\n"); } } else { error("Failed to get the number of symbols from $url\n"); } } sub IsProfileURL { my $profile_name = shift; my ($scheme, $host, $port, $prefix, $path) = ParseProfileURL($profile_name); return defined($host) and defined($port) and defined($path); } sub ParseProfileURL { my $profile_name = shift; if (defined($profile_name) && $profile_name =~ m,^(?:(https?)://|)([^/:]+):(\d+)(|\@\d+)(|/|(.*?)($PROFILE_PAGE|$PMUPROFILE_PAGE|$HEAP_PAGE|$GROWTH_PAGE|$THREAD_PAGE|$BLOCK_PAGE|$CONTENTION_PAGE|$WALL_PAGE|$FILTEREDPROFILE_PAGE))$,o) { # $7 is $PROFILE_PAGE/$HEAP_PAGE/etc. $5 is *everything* after # the hostname, as long as that everything is the empty string, # a slash, or something ending in $PROFILE_PAGE/$HEAP_PAGE/etc. # So "$7 || $5" is $PROFILE_PAGE/etc if there, or else it's "/" or "". return ($1 || "http", $2, $3, $6, $7 || $5); } return (); } # We fetch symbols from the first profile argument. sub SymbolPageURL { my ($scheme, $host, $port, $prefix, $path) = ParseProfileURL($main::pfile_args[0]); return "$scheme://$host:$port$prefix$SYMBOL_PAGE"; } sub FetchProgramName() { my ($scheme, $host, $port, $prefix, $path) = ParseProfileURL($main::pfile_args[0]); my $url = "$scheme://$host:$port$prefix$PROGRAM_NAME_PAGE"; my $cmdline = FetchHTTP($url); $cmdline =~ s/\n.*//s; # first line only $cmdline =~ s/\r//g; # turn windows-looking lines into unix-looking lines error("Failed to get program name from $url\n") unless defined($cmdline); $cmdline =~ s/\x00.+//; # Remove argv[1] and latters. $cmdline =~ s!\n!!g; # Remove LFs. return $cmdline; } # Reads a symbol map from the file handle name given as $1, returning # the resulting symbol map. Also processes variables relating to symbols. # Currently, the only variable processed is 'binary=' which updates # $main::prog to have the correct program name. sub ReadSymbols { my $in = shift; my $map = shift; while (<$in>) { s/\r//g; # turn windows-looking lines into unix-looking lines # Removes all the leading zeroes from the symbols, see comment below. if (m/^0x0*([0-9a-f]+)\s+(.+)/) { $map->{$1} = $2; } elsif (m/^---/) { last; } elsif (m/^([a-z][^=]*)=(.*)$/ ) { my ($variable, $value) = ($1, $2); for ($variable, $value) { s/^\s+//; s/\s+$//; } if ($variable eq "binary") { if ($main::prog ne $UNKNOWN_BINARY && $main::prog ne $value) { printf STDERR ("Warning: Mismatched binary name '%s', using '%s'.\n", $main::prog, $value); } $main::prog = $value; } else { printf STDERR ("Ignoring unknown variable in symbols list: " . "'%s' = '%s'\n", $variable, $value); } } } return $map; } # Fetches and processes symbols to prepare them for use in the profile output # code. If the optional 'symbol_map' arg is not given, fetches symbols from # $SYMBOL_PAGE for all PC values found in profile. Otherwise, the raw symbols # are assumed to have already been fetched into 'symbol_map' and are simply # extracted and processed. sub FetchSymbols { my $pcset = shift; my $symbol_map = shift; my %seen = (); my @pcs = grep { !$seen{$_}++ } keys(%$pcset); # uniq if (!defined($symbol_map)) { $symbol_map = {}; my $post_data = join("+", sort((map {"0x" . "$_"} @pcs))); my $url = SymbolPageURL(); my $content = PostHTTP($url, $post_data); my $tmp_symbol = File::Temp->new()->filename; open(SYMBOL, ">$tmp_symbol"); print SYMBOL $content; close(SYMBOL); open(SYMBOL, "<$tmp_symbol") || error("$tmp_symbol"); ReadSymbols(*SYMBOL{IO}, $symbol_map); close(SYMBOL); } my $symbols = {}; foreach my $pc (@pcs) { my $fullname; # For 64 bits binaries, symbols are extracted with 8 leading zeroes. # Then /symbol reads the long symbols in as uint64, and outputs # the result with a "0x%08llx" format which get rid of the zeroes. # By removing all the leading zeroes in both $pc and the symbols from # /symbol, the symbols match and are retrievable from the map. my $shortpc = $pc; $shortpc =~ s/^0*//; # Each line may have a list of names, which includes the function # and also other functions it has inlined. They are separated # (in PrintSymbolizedFile), by --, which is illegal in function names. my $fullnames; if (defined($symbol_map->{$shortpc})) { $fullnames = $symbol_map->{$shortpc}; } else { $fullnames = "0x" . $pc; # Just use addresses } my $sym = []; $symbols->{$pc} = $sym; foreach my $fullname (split("--", $fullnames)) { my $name = ShortFunctionName($fullname); push(@{$sym}, $name, "?", $fullname); } } return $symbols; } sub BaseName { my $file_name = shift; $file_name =~ s!^.*/!!; # Remove directory name return $file_name; } sub MakeProfileBaseName { my ($binary_name, $profile_name) = @_; my ($scheme, $host, $port, $prefix, $path) = ParseProfileURL($profile_name); my $binary_shortname = BaseName($binary_name); return sprintf("%s.%s.%s-port%s", $binary_shortname, $main::op_time, $host, $port); } sub FetchDynamicProfile { my $binary_name = shift; my $profile_name = shift; my $fetch_name_only = shift; my $encourage_patience = shift; if (!IsProfileURL($profile_name)) { return $profile_name; } else { my ($scheme, $host, $port, $prefix, $path) = ParseProfileURL($profile_name); if ($path eq "" || $path eq "/") { # Missing type specifier defaults to cpu-profile $path = $PROFILE_PAGE; } my $profile_file = MakeProfileBaseName($binary_name, $profile_name); my $url; my $timeout; if (($path =~ m/$PROFILE_PAGE/) || ($path =~ m/$PMUPROFILE_PAGE/)) { if ($path =~ m/$PROFILE_PAGE/) { $url = sprintf("$scheme://$host:$port$prefix$path?seconds=%d", $main::opt_seconds); } else { if ($profile_name =~ m/[?]/) { $profile_name .= "&" } else { $profile_name .= "?" } $url = sprintf("$scheme://$profile_name" . "seconds=%d", $main::opt_seconds); } $timeout = int($main::opt_seconds * 1.01 + 60); } else { # For non-CPU profiles, we add a type-extension to # the target profile file name. my $suffix = $path; $suffix =~ s,/,.,g; $profile_file .= "$suffix"; $url = "$scheme://$host:$port$prefix$path"; } my $tmp_profile = File::Temp->new()->filename; my $real_profile = File::Temp->new()->filename; if ($fetch_name_only > 0) { return $real_profile; } if (($path =~ m/$PROFILE_PAGE/) || ($path =~ m/$PMUPROFILE_PAGE/)){ print STDERR "Gathering CPU profile from $url for $main::opt_seconds seconds to\n ${real_profile}\n"; if ($encourage_patience) { print STDERR "Be patient...\n"; } } else { print STDERR "Fetching $path profile from $host:$port to\n ${real_profile}\n"; } my $content = FetchHTTP($url, $timeout); open(OUTFILE, ">$tmp_profile"); binmode(OUTFILE); print OUTFILE $content; close(OUTFILE); my $line = $content; $line !~ /^Could not enable CPU profiling/ || error($line); copy($tmp_profile, $real_profile) || error("Unable to copy profile\n"); print STDERR "Wrote profile to $real_profile\n"; $main::collected_profile = $real_profile; return $main::collected_profile; } } # Collect profiles in parallel sub FetchDynamicProfiles { my $items = scalar(@main::pfile_args); my $levels = log($items) / log(2); if ($items == 1) { $main::profile_files[0] = FetchDynamicProfile($main::prog, $main::pfile_args[0], 0, 1); } else { # math rounding issues if ((2 ** $levels) < $items) { $levels++; } my $count = scalar(@main::pfile_args); for (my $i = 0; $i < $count; $i++) { $main::profile_files[$i] = FetchDynamicProfile($main::prog, $main::pfile_args[$i], 1, 0); } print STDERR "Fetching $count profiles, Be patient...\n"; FetchDynamicProfilesRecurse($levels, 0, 0); $main::collected_profile = join(" \\\n ", @main::profile_files); } } # Recursively fork a process to get enough processes # collecting profiles sub FetchDynamicProfilesRecurse { my $maxlevel = shift; my $level = shift; my $position = shift; if (my $pid = fork()) { $position = 0 | ($position << 1); TryCollectProfile($maxlevel, $level, $position); wait; } else { $position = 1 | ($position << 1); TryCollectProfile($maxlevel, $level, $position); exit(0); } } # Collect a single profile sub TryCollectProfile { my $maxlevel = shift; my $level = shift; my $position = shift; if ($level >= ($maxlevel - 1)) { if ($position < scalar(@main::pfile_args)) { FetchDynamicProfile($main::prog, $main::pfile_args[$position], 0, 0); } } else { FetchDynamicProfilesRecurse($maxlevel, $level+1, $position); } } ##### Parsing code ##### # Provide a small streaming-read module to handle very large # cpu-profile files. Stream in chunks along a sliding window. # Provides an interface to get one 'slot', correctly handling # endian-ness differences. A slot is one 32-bit or 64-bit word # (depending on the input profile). We tell endianness and bit-size # for the profile by looking at the first 8 bytes: in cpu profiles, # the second slot is always 3 (we'll accept anything that's not 0). BEGIN { package CpuProfileStream; sub new { my ($class, $file, $fname) = @_; my $self = { file => $file, base => 0, stride => 512 * 1024, # must be a multiple of bitsize/8 slots => [], unpack_code => "", # N for big-endian, V for little }; bless $self, $class; # Let unittests adjust the stride if ($main::opt_test_stride > 0) { $self->{stride} = $main::opt_test_stride; } # Read the first two slots to figure out bitsize and endianness. my $slots = $self->{slots}; my $str; read($self->{file}, $str, 8); # Set the global $address_length based on what we see here. # 8 is 32-bit (8 hexadecimal chars); 16 is 64-bit (16 hexadecimal chars). $address_length = ($str eq (chr(0)x8)) ? 16 : 8; if ($address_length == 8) { if (substr($str, 6, 2) eq chr(0)x2) { $self->{unpack_code} = 'V'; # Little-endian. } elsif (substr($str, 4, 2) eq chr(0)x2) { $self->{unpack_code} = 'N'; # Big-endian } else { ::error("$fname: header size >= 2**16\n"); } @$slots = unpack($self->{unpack_code} . "*", $str); } else { # If we're a 64-bit profile, make sure we're a 64-bit-capable # perl. Otherwise, each slot will be represented as a float # instead of an int64, losing precision and making all the # 64-bit addresses right. We *could* try to handle this with # software emulation of 64-bit ints, but that's added complexity # for no clear benefit (yet). We use 'Q' to test for 64-bit-ness; # perl docs say it's only available on 64-bit perl systems. my $has_q = 0; eval { $has_q = pack("Q", "1") ? 1 : 1; }; if (!$has_q) { ::error("$fname: need a 64-bit perl to process this 64-bit profile.\n"); } read($self->{file}, $str, 8); if (substr($str, 4, 4) eq chr(0)x4) { # We'd love to use 'Q', but it's a) not universal, b) not endian-proof. $self->{unpack_code} = 'V'; # Little-endian. } elsif (substr($str, 0, 4) eq chr(0)x4) { $self->{unpack_code} = 'N'; # Big-endian } else { ::error("$fname: header size >= 2**32\n"); } my @pair = unpack($self->{unpack_code} . "*", $str); # Since we know one of the pair is 0, it's fine to just add them. @$slots = (0, $pair[0] + $pair[1]); } return $self; } # Load more data when we access slots->get(X) which is not yet in memory. sub overflow { my ($self) = @_; my $slots = $self->{slots}; $self->{base} += $#$slots + 1; # skip over data we're replacing my $str; read($self->{file}, $str, $self->{stride}); if ($address_length == 8) { # the 32-bit case # This is the easy case: unpack provides 32-bit unpacking primitives. @$slots = unpack($self->{unpack_code} . "*", $str); } else { # We need to unpack 32 bits at a time and combine. my @b32_values = unpack($self->{unpack_code} . "*", $str); my @b64_values = (); for (my $i = 0; $i < $#b32_values; $i += 2) { # TODO(csilvers): if this is a 32-bit perl, the math below # could end up in a too-large int, which perl will promote # to a double, losing necessary precision. Deal with that. if ($self->{unpack_code} eq 'V') { # little-endian push(@b64_values, $b32_values[$i] + $b32_values[$i+1] * (2**32)); } else { push(@b64_values, $b32_values[$i] * (2**32) + $b32_values[$i+1]); } } @$slots = @b64_values; } } # Access the i-th long in the file (logically), or -1 at EOF. sub get { my ($self, $idx) = @_; my $slots = $self->{slots}; while ($#$slots >= 0) { if ($idx < $self->{base}) { # The only time we expect a reference to $slots[$i - something] # after referencing $slots[$i] is reading the very first header. # Since $stride > |header|, that shouldn't cause any lookback # errors. And everything after the header is sequential. print STDERR "Unexpected look-back reading CPU profile"; return -1; # shrug, don't know what better to return } elsif ($idx > $self->{base} + $#$slots) { $self->overflow(); } else { return $slots->[$idx - $self->{base}]; } } # If we get here, $slots is [], which means we've reached EOF return -1; # unique since slots is supposed to hold unsigned numbers } } # Parse profile generated by common/profiler.cc and return a reference # to a map: # $result->{version} Version number of profile file # $result->{period} Sampling period (in microseconds) # $result->{profile} Profile object # $result->{map} Memory map info from profile # $result->{pcs} Hash of all PC values seen, key is hex address sub ReadProfile { my $prog = shift; my $fname = shift; if (IsSymbolizedProfileFile($fname) && !$main::use_symbolized_profile) { # we have both a binary and symbolized profiles, abort usage("Symbolized profile '$fname' cannot be used with a binary arg. " . "Try again without passing '$prog'."); } $main::profile_type = ''; $CONTENTION_PAGE =~ m,[^/]+$,; # matches everything after the last slash my $contention_marker = $&; $GROWTH_PAGE =~ m,[^/]+$,; # matches everything after the last slash my $growth_marker = $&; $SYMBOL_PAGE =~ m,[^/]+$,; # matches everything after the last slash my $symbol_marker = $&; $PROFILE_PAGE =~ m,[^/]+$,; # matches everything after the last slash my $profile_marker = $&; # Look at first line to see if it is a heap or a CPU profile. # CPU profile may start with no header at all, and just binary data # (starting with \0\0\0\0) -- in that case, don't try to read the # whole firstline, since it may be gigabytes(!) of data. open(PROFILE, "<$fname") || error("$fname: $!\n"); binmode PROFILE; # New perls do UTF-8 processing my $firstchar = ""; my $header = ""; read(PROFILE, $firstchar, 1); seek(PROFILE, -1, 1); # unread the firstchar if ($firstchar ne "\0") { $header = ; if (!defined($header)) { error("Profile is empty.\n"); } $header =~ s/\r//g; # turn windows-looking lines into unix-looking lines } my $symbols; if ($header =~ m/^--- *$symbol_marker/o) { # read the symbol section of the symbolized profile file $symbols = ReadSymbols(*PROFILE{IO}); # read the next line to get the header for the remaining profile $header = ""; read(PROFILE, $firstchar, 1); seek(PROFILE, -1, 1); # unread the firstchar if ($firstchar ne "\0") { $header = ; $header =~ s/\r//g; } } my $result; if ($header =~ m/^heap profile:.*$growth_marker/o) { $main::profile_type = 'growth'; $result = ReadHeapProfile($prog, $fname, $header); } elsif ($header =~ m/^heap profile:/) { $main::profile_type = 'heap'; $result = ReadHeapProfile($prog, $fname, $header); } elsif ($header =~ m/^--- *$contention_marker/o) { $main::profile_type = 'contention'; $result = ReadSynchProfile($prog, $fname); } elsif ($header =~ m/^--- *Stacks:/) { print STDERR "Old format contention profile: mistakenly reports " . "condition variable signals as lock contentions.\n"; $main::profile_type = 'contention'; $result = ReadSynchProfile($prog, $fname); } elsif ($header =~ m/^thread creation profile:/) { $main::profile_type = 'thread'; $result = ReadThreadProfile($prog, $fname); } elsif ($header =~ m/^--- *$profile_marker/) { # the binary cpu profile data starts immediately after this line $main::profile_type = 'cpu'; $result = ReadCPUProfile($prog, $fname); } else { if (defined($symbols)) { # a symbolized profile contains a format we don't recognize, bail out error("$fname: Cannot recognize profile section after symbols.\n"); } # no ascii header present -- must be a CPU profile $main::profile_type = 'cpu'; $result = ReadCPUProfile($prog, $fname); } # if we got symbols along with the profile, return those as well if (defined($symbols)) { $result->{symbols} = $symbols; } return $result; } # Subtract one from caller pc so we map back to call instr. # However, don't do this if we're reading a symbolized profile # file, in which case the subtract-one was done when the file # was written. # # We apply the same logic to all readers, though ReadCPUProfile uses an # independent implementation. sub FixCallerAddresses { my $stack = shift; if ($main::use_symbolized_profile) { return $stack; } else { $stack =~ /(\s)/; my $delimiter = $1; my @addrs = split(' ', $stack); my @fixedaddrs; $#fixedaddrs = $#addrs; if ($#addrs >= 0) { $fixedaddrs[0] = $addrs[0]; } for (my $i = 1; $i <= $#addrs; $i++) { $fixedaddrs[$i] = AddressSub($addrs[$i], "0x1"); } return join $delimiter, @fixedaddrs; } } # CPU profile reader sub ReadCPUProfile { my $prog = shift; my $fname = shift; my $version; my $period; my $i; my $profile = {}; my $pcs = {}; # Parse string into array of slots. my $slots = CpuProfileStream->new(*PROFILE, $fname); # Read header. The current header version is a 5-element structure # containing: # 0: header count (always 0) # 1: header "words" (after this one: 3) # 2: format version (0) # 3: sampling period (usec) # 4: unused padding (always 0) if ($slots->get(0) != 0 ) { error("$fname: not a profile file, or old format profile file\n"); } $i = 2 + $slots->get(1); $version = $slots->get(2); $period = $slots->get(3); # Do some sanity checking on these header values. if ($version > (2**32) || $period > (2**32) || $i > (2**32) || $i < 5) { error("$fname: not a profile file, or corrupted profile file\n"); } # Parse profile while ($slots->get($i) != -1) { my $n = $slots->get($i++); my $d = $slots->get($i++); if ($d > (2**16)) { # TODO(csilvers): what's a reasonable max-stack-depth? my $addr = sprintf("0%o", $i * ($address_length == 8 ? 4 : 8)); print STDERR "At index $i (address $addr):\n"; error("$fname: stack trace depth >= 2**32\n"); } if ($slots->get($i) == 0) { # End of profile data marker $i += $d; last; } # Make key out of the stack entries my @k = (); for (my $j = 0; $j < $d; $j++) { my $pc = $slots->get($i+$j); # Subtract one from caller pc so we map back to call instr. # However, don't do this if we're reading a symbolized profile # file, in which case the subtract-one was done when the file # was written. if ($j > 0 && !$main::use_symbolized_profile) { $pc--; } $pc = sprintf("%0*x", $address_length, $pc); $pcs->{$pc} = 1; push @k, $pc; } AddEntry($profile, (join "\n", @k), $n); $i += $d; } # Parse map my $map = ''; seek(PROFILE, $i * 4, 0); read(PROFILE, $map, (stat PROFILE)[7]); close(PROFILE); my $r = {}; $r->{version} = $version; $r->{period} = $period; $r->{profile} = $profile; $r->{libs} = ParseLibraries($prog, $map, $pcs); $r->{pcs} = $pcs; return $r; } sub ReadHeapProfile { my $prog = shift; my $fname = shift; my $header = shift; my $index = 1; if ($main::opt_inuse_space) { $index = 1; } elsif ($main::opt_inuse_objects) { $index = 0; } elsif ($main::opt_alloc_space) { $index = 3; } elsif ($main::opt_alloc_objects) { $index = 2; } # Find the type of this profile. The header line looks like: # heap profile: 1246: 8800744 [ 1246: 8800744] @ /266053 # There are two pairs , the first inuse objects/space, and the # second allocated objects/space. This is followed optionally by a profile # type, and if that is present, optionally by a sampling frequency. # For remote heap profiles (v1): # The interpretation of the sampling frequency is that the profiler, for # each sample, calculates a uniformly distributed random integer less than # the given value, and records the next sample after that many bytes have # been allocated. Therefore, the expected sample interval is half of the # given frequency. By default, if not specified, the expected sample # interval is 128KB. Only remote-heap-page profiles are adjusted for # sample size. # For remote heap profiles (v2): # The sampling frequency is the rate of a Poisson process. This means that # the probability of sampling an allocation of size X with sampling rate Y # is 1 - exp(-X/Y) # For version 2, a typical header line might look like this: # heap profile: 1922: 127792360 [ 1922: 127792360] @ _v2/524288 # the trailing number (524288) is the sampling rate. (Version 1 showed # double the 'rate' here) my $sampling_algorithm = 0; my $sample_adjustment = 0; chomp($header); my $type = "unknown"; if ($header =~ m"^heap profile:\s*(\d+):\s+(\d+)\s+\[\s*(\d+):\s+(\d+)\](\s*@\s*([^/]*)(/(\d+))?)?") { if (defined($6) && ($6 ne '')) { $type = $6; my $sample_period = $8; # $type is "heapprofile" for profiles generated by the # heap-profiler, and either "heap" or "heap_v2" for profiles # generated by sampling directly within tcmalloc. It can also # be "growth" for heap-growth profiles. The first is typically # found for profiles generated locally, and the others for # remote profiles. if (($type eq "heapprofile") || ($type !~ /heap/) ) { # No need to adjust for the sampling rate with heap-profiler-derived data $sampling_algorithm = 0; } elsif ($type =~ /_v2/) { $sampling_algorithm = 2; # version 2 sampling if (defined($sample_period) && ($sample_period ne '')) { $sample_adjustment = int($sample_period); } } else { $sampling_algorithm = 1; # version 1 sampling if (defined($sample_period) && ($sample_period ne '')) { $sample_adjustment = int($sample_period)/2; } } } else { # We detect whether or not this is a remote-heap profile by checking # that the total-allocated stats ($n2,$s2) are exactly the # same as the in-use stats ($n1,$s1). It is remotely conceivable # that a non-remote-heap profile may pass this check, but it is hard # to imagine how that could happen. # In this case it's so old it's guaranteed to be remote-heap version 1. my ($n1, $s1, $n2, $s2) = ($1, $2, $3, $4); if (($n1 == $n2) && ($s1 == $s2)) { # This is likely to be a remote-heap based sample profile $sampling_algorithm = 1; } } } if ($sampling_algorithm > 0) { # For remote-heap generated profiles, adjust the counts and sizes to # account for the sample rate (we sample once every 128KB by default). if ($sample_adjustment == 0) { # Turn on profile adjustment. $sample_adjustment = 128*1024; print STDERR "Adjusting heap profiles for 1-in-128KB sampling rate\n"; } else { printf STDERR ("Adjusting heap profiles for 1-in-%d sampling rate\n", $sample_adjustment); } if ($sampling_algorithm > 1) { # We don't bother printing anything for the original version (version 1) printf STDERR "Heap version $sampling_algorithm\n"; } } my $profile = {}; my $pcs = {}; my $map = ""; while () { s/\r//g; # turn windows-looking lines into unix-looking lines if (/^MAPPED_LIBRARIES:/) { # Read the /proc/self/maps data while () { s/\r//g; # turn windows-looking lines into unix-looking lines $map .= $_; } last; } if (/^--- Memory map:/) { # Read /proc/self/maps data as formatted by DumpAddressMap() my $buildvar = ""; while () { s/\r//g; # turn windows-looking lines into unix-looking lines # Parse "build=" specification if supplied if (m/^\s*build=(.*)\n/) { $buildvar = $1; } # Expand "$build" variable if available $_ =~ s/\$build\b/$buildvar/g; $map .= $_; } last; } # Read entry of the form: # : [: ] @ a1 a2 a3 ... an s/^\s*//; s/\s*$//; if (m/^\s*(\d+):\s+(\d+)\s+\[\s*(\d+):\s+(\d+)\]\s+@\s+(.*)$/) { my $stack = $5; my ($n1, $s1, $n2, $s2) = ($1, $2, $3, $4); if ($sample_adjustment) { if ($sampling_algorithm == 2) { # Remote-heap version 2 # The sampling frequency is the rate of a Poisson process. # This means that the probability of sampling an allocation of # size X with sampling rate Y is 1 - exp(-X/Y) my $ratio; $ratio = (($s1*1.0)/$n1)/($sample_adjustment); my $scale_factor; $scale_factor = 1/(1 - exp(-$ratio)); $n1 *= $scale_factor; $s1 *= $scale_factor; $ratio = (($s2*1.0)/$n2)/($sample_adjustment); $scale_factor = 1/(1 - exp(-$ratio)); $n2 *= $scale_factor; $s2 *= $scale_factor; } else { # Remote-heap version 1 my $ratio; if ($n1 > 0) { $ratio = (($s1*1.0)/$n1)/($sample_adjustment); if ($ratio < 1) { $n1 /= $ratio; $s1 /= $ratio; } } if ($n2 > 0) { $ratio = (($s2*1.0)/$n2)/($sample_adjustment); if ($ratio < 1) { $n2 /= $ratio; $s2 /= $ratio; } } } } my @counts = ($n1, $s1, $n2, $s2); AddEntries($profile, $pcs, FixCallerAddresses($stack), $counts[$index]); } } my $r = {}; $r->{version} = "heap"; $r->{period} = 1; $r->{profile} = $profile; $r->{libs} = ParseLibraries($prog, $map, $pcs); $r->{pcs} = $pcs; return $r; } sub ReadThreadProfile { my $prog = shift; my $fname = shift; my $profile = {}; my $pcs = {}; my $map = ""; while () { s/\r//g; # turn windows-looking lines into unix-looking lines if (/^MAPPED_LIBRARIES:/) { # Read the /proc/self/maps data while () { s/\r//g; # turn windows-looking lines into unix-looking lines $map .= $_; } last; } if (/^--- Memory map:/) { # Read /proc/self/maps data as formatted by DumpAddressMap() my $buildvar = ""; while () { s/\r//g; # turn windows-looking lines into unix-looking lines # Parse "build=" specification if supplied if (m/^\s*build=(.*)\n/) { $buildvar = $1; } # Expand "$build" variable if available $_ =~ s/\$build\b/$buildvar/g; $map .= $_; } last; } # Read entry of the form: # @ a1 a2 a3 ... an s/^\s*//; s/\s*$//; if (m/^@\s+(.*)$/) { AddEntries($profile, $pcs, FixCallerAddresses($1), 1); } } my $r = {}; $r->{version} = "thread"; $r->{period} = 1; $r->{profile} = $profile; $r->{libs} = ParseLibraries($prog, $map, $pcs); $r->{pcs} = $pcs; return $r; } sub ReadSynchProfile { my ($prog, $fname, $header) = @_; my $map = ''; my $profile = {}; my $pcs = {}; my $sampling_period = 1; my $cyclespernanosec = 2.8; # Default assumption for old binaries my $seen_clockrate = 0; my $line; my $index = 0; if ($main::opt_total_delay) { $index = 0; } elsif ($main::opt_contentions) { $index = 1; } elsif ($main::opt_mean_delay) { $index = 2; } while ( $line = ) { $line =~ s/\r//g; # turn windows-looking lines into unix-looking lines if ( $line =~ /^\s*(\d+)\s+(\d+) \@\s*(.*?)\s*$/ ) { my ($cycles, $count, $stack) = ($1, $2, $3); # Convert cycles to nanoseconds $cycles /= $cyclespernanosec; # Adjust for sampling done by application $cycles *= $sampling_period; $count *= $sampling_period; my @values = ($cycles, $count, $cycles / $count); AddEntries($profile, $pcs, FixCallerAddresses($stack), $values[$index]); } elsif ( $line =~ /^(slow release).*thread \d+ \@\s*(.*?)\s*$/ || $line =~ /^\s*(\d+) \@\s*(.*?)\s*$/ ) { my ($cycles, $stack) = ($1, $2); if ($cycles !~ /^\d+$/) { next; } # Convert cycles to nanoseconds $cycles /= $cyclespernanosec; # Adjust for sampling done by application $cycles *= $sampling_period; AddEntries($profile, $pcs, FixCallerAddresses($stack), $cycles); } elsif ( $line =~ m/^([a-z][^=]*)=(.*)$/ ) { my ($variable, $value) = ($1,$2); for ($variable, $value) { s/^\s+//; s/\s+$//; } if ($variable eq "cycles/second") { $cyclespernanosec = $value / 1e9; $seen_clockrate = 1; } elsif ($variable eq "sampling period") { $sampling_period = $value; } elsif ($variable eq "ms since reset") { # Currently nothing is done with this value in pprof # So we just silently ignore it for now } elsif ($variable eq "discarded samples") { # Currently nothing is done with this value in pprof # So we just silently ignore it for now } else { printf STDERR ("Ignoring unnknown variable in /contention output: " . "'%s' = '%s'\n",$variable,$value); } } else { # Memory map entry $map .= $line; } } close PROFILE; if (!$seen_clockrate) { printf STDERR ("No cycles/second entry in profile; Guessing %.1f GHz\n", $cyclespernanosec); } my $r = {}; $r->{version} = 0; $r->{period} = $sampling_period; $r->{profile} = $profile; $r->{libs} = ParseLibraries($prog, $map, $pcs); $r->{pcs} = $pcs; return $r; } # Given a hex value in the form "0x1abcd" return "0001abcd" or # "000000000001abcd", depending on the current address length. # There's probably a more idiomatic (or faster) way to do this... sub HexExtend { my $addr = shift; $addr =~ s/^0x//; if (length $addr > $address_length) { printf STDERR "Warning: address $addr is longer than address length $address_length\n"; } return substr("000000000000000".$addr, -$address_length); } ##### Symbol extraction ##### # Aggressively search the lib_prefix values for the given library # If all else fails, just return the name of the library unmodified. # If the lib_prefix is "/my/path,/other/path" and $file is "/lib/dir/mylib.so" # it will search the following locations in this order, until it finds a file: # /my/path/lib/dir/mylib.so # /other/path/lib/dir/mylib.so # /my/path/dir/mylib.so # /other/path/dir/mylib.so # /my/path/mylib.so # /other/path/mylib.so # /lib/dir/mylib.so (returned as last resort) sub FindLibrary { my $file = shift; my $suffix = $file; # Search for the library as described above do { foreach my $prefix (@prefix_list) { my $fullpath = $prefix . $suffix; if (-e $fullpath) { return $fullpath; } } } while ($suffix =~ s|^/[^/]+/|/|); return $file; } # Return path to library with debugging symbols. # For libc libraries, the copy in /usr/lib/debug contains debugging symbols sub DebuggingLibrary { my $file = shift; if ($file =~ m|^/| && -f "/usr/lib/debug$file") { return "/usr/lib/debug$file"; } return undef; } # Parse text section header of a library using objdump sub ParseTextSectionHeaderFromObjdump { my $lib = shift; my $size = undef; my $vma; my $file_offset; # Get objdump output from the library file to figure out how to # map between mapped addresses and addresses in the library. my $objdump = $obj_tool_map{"objdump"}; open(OBJDUMP, "$objdump -h $lib |") || error("$objdump $lib: $!\n"); while () { s/\r//g; # turn windows-looking lines into unix-looking lines # Idx Name Size VMA LMA File off Algn # 10 .text 00104b2c 420156f0 420156f0 000156f0 2**4 # For 64-bit objects, VMA and LMA will be 16 hex digits, size and file # offset may still be 8. But AddressSub below will still handle that. my @x = split; if (($#x >= 6) && ($x[1] eq '.text')) { $size = $x[2]; $vma = $x[3]; $file_offset = $x[5]; last; } } close(OBJDUMP); if (!defined($size)) { return undef; } my $r = {}; $r->{size} = $size; $r->{vma} = $vma; $r->{file_offset} = $file_offset; return $r; } # Parse text section header of a library using otool (on OS X) sub ParseTextSectionHeaderFromOtool { my $lib = shift; my $size = undef; my $vma = undef; my $file_offset = undef; # Get otool output from the library file to figure out how to # map between mapped addresses and addresses in the library. my $otool = $obj_tool_map{"otool"}; open(OTOOL, "$otool -l $lib |") || error("$otool $lib: $!\n"); my $cmd = ""; my $sectname = ""; my $segname = ""; foreach my $line () { $line =~ s/\r//g; # turn windows-looking lines into unix-looking lines # Load command <#> # cmd LC_SEGMENT # [...] # Section # sectname __text # segname __TEXT # addr 0x000009f8 # size 0x00018b9e # offset 2552 # align 2^2 (4) # We will need to strip off the leading 0x from the hex addresses, # and convert the offset into hex. if ($line =~ /Load command/) { $cmd = ""; $sectname = ""; $segname = ""; } elsif ($line =~ /Section/) { $sectname = ""; $segname = ""; } elsif ($line =~ /cmd (\w+)/) { $cmd = $1; } elsif ($line =~ /sectname (\w+)/) { $sectname = $1; } elsif ($line =~ /segname (\w+)/) { $segname = $1; } elsif (!(($cmd eq "LC_SEGMENT" || $cmd eq "LC_SEGMENT_64") && $sectname eq "__text" && $segname eq "__TEXT")) { next; } elsif ($line =~ /\baddr 0x([0-9a-fA-F]+)/) { $vma = $1; } elsif ($line =~ /\bsize 0x([0-9a-fA-F]+)/) { $size = $1; } elsif ($line =~ /\boffset ([0-9]+)/) { $file_offset = sprintf("%016x", $1); } if (defined($vma) && defined($size) && defined($file_offset)) { last; } } close(OTOOL); if (!defined($vma) || !defined($size) || !defined($file_offset)) { return undef; } my $r = {}; $r->{size} = $size; $r->{vma} = $vma; $r->{file_offset} = $file_offset; return $r; } sub ParseTextSectionHeader { # obj_tool_map("otool") is only defined if we're in a Mach-O environment if (defined($obj_tool_map{"otool"})) { my $r = ParseTextSectionHeaderFromOtool(@_); if (defined($r)){ return $r; } } # If otool doesn't work, or we don't have it, fall back to objdump return ParseTextSectionHeaderFromObjdump(@_); } # Split /proc/pid/maps dump into a list of libraries sub ParseLibraries { return if $main::use_symbol_page; # We don't need libraries info. my $prog = shift; my $map = shift; my $pcs = shift; my $result = []; my $h = "[a-f0-9]+"; my $zero_offset = HexExtend("0"); my $buildvar = ""; foreach my $l (split("\n", $map)) { if ($l =~ m/^\s*build=(.*)$/) { $buildvar = $1; } my $start; my $finish; my $offset; my $lib; if ($l =~ /^($h)-($h)\s+..x.\s+($h)\s+\S+:\S+\s+\d+\s+(\S+\.(so|dll|dylib|bundle)((\.\d+)+\w*(\.\d+){0,3})?)$/i) { # Full line from /proc/self/maps. Example: # 40000000-40015000 r-xp 00000000 03:01 12845071 /lib/ld-2.3.2.so $start = HexExtend($1); $finish = HexExtend($2); $offset = HexExtend($3); $lib = $4; $lib =~ s|\\|/|g; # turn windows-style paths into unix-style paths } elsif ($l =~ /^\s*($h)-($h):\s*(\S+\.so(\.\d+)*)/) { # Cooked line from DumpAddressMap. Example: # 40000000-40015000: /lib/ld-2.3.2.so $start = HexExtend($1); $finish = HexExtend($2); $offset = $zero_offset; $lib = $3; } else { next; } # Expand "$build" variable if available $lib =~ s/\$build\b/$buildvar/g; $lib = FindLibrary($lib); # Check for pre-relocated libraries, which use pre-relocated symbol tables # and thus require adjusting the offset that we'll use to translate # VM addresses into symbol table addresses. # Only do this if we're not going to fetch the symbol table from a # debugging copy of the library. if (!DebuggingLibrary($lib)) { my $text = ParseTextSectionHeader($lib); if (defined($text)) { my $vma_offset = AddressSub($text->{vma}, $text->{file_offset}); $offset = AddressAdd($offset, $vma_offset); } } push(@{$result}, [$lib, $start, $finish, $offset]); } # Append special entry for additional library (not relocated) if ($main::opt_lib ne "") { my $text = ParseTextSectionHeader($main::opt_lib); if (defined($text)) { my $start = $text->{vma}; my $finish = AddressAdd($start, $text->{size}); push(@{$result}, [$main::opt_lib, $start, $finish, $start]); } } # Append special entry for the main program. This covers # 0..max_pc_value_seen, so that we assume pc values not found in one # of the library ranges will be treated as coming from the main # program binary. my $min_pc = HexExtend("0"); my $max_pc = $min_pc; # find the maximal PC value in any sample foreach my $pc (keys(%{$pcs})) { if (HexExtend($pc) gt $max_pc) { $max_pc = HexExtend($pc); } } push(@{$result}, [$prog, $min_pc, $max_pc, $zero_offset]); return $result; } # Add two hex addresses of length $address_length. # Run pprof --test for unit test if this is changed. sub AddressAdd { my $addr1 = shift; my $addr2 = shift; my $sum; if ($address_length == 8) { # Perl doesn't cope with wraparound arithmetic, so do it explicitly: $sum = (hex($addr1)+hex($addr2)) % (0x10000000 * 16); return sprintf("%08x", $sum); } else { # Do the addition in 7-nibble chunks to trivialize carry handling. if ($main::opt_debug and $main::opt_test) { print STDERR "AddressAdd $addr1 + $addr2 = "; } my $a1 = substr($addr1,-7); $addr1 = substr($addr1,0,-7); my $a2 = substr($addr2,-7); $addr2 = substr($addr2,0,-7); $sum = hex($a1) + hex($a2); my $c = 0; if ($sum > 0xfffffff) { $c = 1; $sum -= 0x10000000; } my $r = sprintf("%07x", $sum); $a1 = substr($addr1,-7); $addr1 = substr($addr1,0,-7); $a2 = substr($addr2,-7); $addr2 = substr($addr2,0,-7); $sum = hex($a1) + hex($a2) + $c; $c = 0; if ($sum > 0xfffffff) { $c = 1; $sum -= 0x10000000; } $r = sprintf("%07x", $sum) . $r; $sum = hex($addr1) + hex($addr2) + $c; if ($sum > 0xff) { $sum -= 0x100; } $r = sprintf("%02x", $sum) . $r; if ($main::opt_debug and $main::opt_test) { print STDERR "$r\n"; } return $r; } } # Subtract two hex addresses of length $address_length. # Run pprof --test for unit test if this is changed. sub AddressSub { my $addr1 = shift; my $addr2 = shift; my $diff; if ($address_length == 8) { # Perl doesn't cope with wraparound arithmetic, so do it explicitly: $diff = (hex($addr1)-hex($addr2)) % (0x10000000 * 16); return sprintf("%08x", $diff); } else { # Do the addition in 7-nibble chunks to trivialize borrow handling. # if ($main::opt_debug) { print STDERR "AddressSub $addr1 - $addr2 = "; } my $a1 = hex(substr($addr1,-7)); $addr1 = substr($addr1,0,-7); my $a2 = hex(substr($addr2,-7)); $addr2 = substr($addr2,0,-7); my $b = 0; if ($a2 > $a1) { $b = 1; $a1 += 0x10000000; } $diff = $a1 - $a2; my $r = sprintf("%07x", $diff); $a1 = hex(substr($addr1,-7)); $addr1 = substr($addr1,0,-7); $a2 = hex(substr($addr2,-7)) + $b; $addr2 = substr($addr2,0,-7); $b = 0; if ($a2 > $a1) { $b = 1; $a1 += 0x10000000; } $diff = $a1 - $a2; $r = sprintf("%07x", $diff) . $r; $a1 = hex($addr1); $a2 = hex($addr2) + $b; if ($a2 > $a1) { $a1 += 0x100; } $diff = $a1 - $a2; $r = sprintf("%02x", $diff) . $r; # if ($main::opt_debug) { print STDERR "$r\n"; } return $r; } } # Increment a hex addresses of length $address_length. # Run pprof --test for unit test if this is changed. sub AddressInc { my $addr = shift; my $sum; if ($address_length == 8) { # Perl doesn't cope with wraparound arithmetic, so do it explicitly: $sum = (hex($addr)+1) % (0x10000000 * 16); return sprintf("%08x", $sum); } else { # Do the addition in 7-nibble chunks to trivialize carry handling. # We are always doing this to step through the addresses in a function, # and will almost never overflow the first chunk, so we check for this # case and exit early. # if ($main::opt_debug) { print STDERR "AddressInc $addr1 = "; } my $a1 = substr($addr,-7); $addr = substr($addr,0,-7); $sum = hex($a1) + 1; my $r = sprintf("%07x", $sum); if ($sum <= 0xfffffff) { $r = $addr . $r; # if ($main::opt_debug) { print STDERR "$r\n"; } return HexExtend($r); } else { $r = "0000000"; } $a1 = substr($addr,-7); $addr = substr($addr,0,-7); $sum = hex($a1) + 1; $r = sprintf("%07x", $sum) . $r; if ($sum <= 0xfffffff) { $r = $addr . $r; # if ($main::opt_debug) { print STDERR "$r\n"; } return HexExtend($r); } else { $r = "00000000000000"; } $sum = hex($addr) + 1; if ($sum > 0xff) { $sum -= 0x100; } $r = sprintf("%02x", $sum) . $r; # if ($main::opt_debug) { print STDERR "$r\n"; } return $r; } } # Extract symbols for all PC values found in profile sub ExtractSymbols { my $libs = shift; my $pcset = shift; my $symbols = {}; # Map each PC value to the containing library my %seen = (); foreach my $lib (@{$libs}) { my $libname = $lib->[0]; my $start = $lib->[1]; my $finish = $lib->[2]; my $offset = $lib->[3]; # Get list of pcs that belong in this library. my $contained = []; foreach my $pc (keys(%{$pcset})) { if (!$seen{$pc} && ($pc ge $start) && ($pc le $finish)) { $seen{$pc} = 1; push(@{$contained}, $pc); } } # Map to symbols MapToSymbols($libname, AddressSub($start, $offset), $contained, $symbols); } return $symbols; } # Map list of PC values to symbols for a given image sub MapToSymbols { my $image = shift; my $offset = shift; my $pclist = shift; my $symbols = shift; my $debug = 0; # Ignore empty binaries if ($#{$pclist} < 0) { return; } # Figure out the addr2line command to use my $addr2line = $obj_tool_map{"addr2line"}; my $cmd = "$addr2line -f -C -e $image"; if (exists $obj_tool_map{"addr2line_pdb"}) { $addr2line = $obj_tool_map{"addr2line_pdb"}; $cmd = "$addr2line --demangle -f -C -e $image"; } # Use the go version because we know it works on all platforms $addr2line = "go tool addr2line"; $cmd = "$addr2line $image"; # If "addr2line" isn't installed on the system at all, just use # nm to get what info we can (function names, but not line numbers). if (system("$addr2line --help >$DEVNULL 2>&1") != 0) { MapSymbolsWithNM($image, $offset, $pclist, $symbols); return; } # "addr2line -i" can produce a variable number of lines per input # address, with no separator that allows us to tell when data for # the next address starts. So we find the address for a special # symbol (_fini) and interleave this address between all real # addresses passed to addr2line. The name of this special symbol # can then be used as a separator. $sep_address = undef; # May be filled in by MapSymbolsWithNM() my $nm_symbols = {}; MapSymbolsWithNM($image, $offset, $pclist, $nm_symbols); # TODO(csilvers): only add '-i' if addr2line supports it. if (defined($sep_address)) { # Only add " -i" to addr2line if the binary supports it. # addr2line --help returns 0, but not if it sees an unknown flag first. if (system("$cmd -i --help >$DEVNULL 2>&1") == 0) { $cmd .= " -i"; } else { $sep_address = undef; # no need for sep_address if we don't support -i } } # Make file with all PC values with intervening 'sep_address' so # that we can reliably detect the end of inlined function list open(ADDRESSES, ">$main::tmpfile_sym") || error("$main::tmpfile_sym: $!\n"); if ($debug) { print("---- $image ---\n"); } for (my $i = 0; $i <= $#{$pclist}; $i++) { # addr2line always reads hex addresses, and does not need '0x' prefix. if ($debug) { printf STDERR ("%s\n", $pclist->[$i]); } printf ADDRESSES ("%s\n", AddressSub($pclist->[$i], $offset)); if (defined($sep_address)) { printf ADDRESSES ("%s\n", $sep_address); } } close(ADDRESSES); if ($debug) { print("----\n"); system("cat $main::tmpfile_sym"); print("---- $cmd\n"); system("$cmd <$main::tmpfile_sym"); print("----\n"); } open(SYMBOLS, "$cmd <$main::tmpfile_sym |") || error("$cmd: $!\n"); my $count = 0; # Index in pclist while () { # Read fullfunction and filelineinfo from next pair of lines s/\r?\n$//g; my $fullfunction = $_; $_ = ; s/\r?\n$//g; my $filelinenum = $_; if (defined($sep_address) && $fullfunction eq $sep_symbol) { # Terminating marker for data for this address $count++; next; } $filelinenum =~ s|\\|/|g; # turn windows-style paths into unix-style paths my $pcstr = $pclist->[$count]; my $function = ShortFunctionName($fullfunction); if ($fullfunction eq '??') { # See if nm found a symbol my $nms = $nm_symbols->{$pcstr}; if (defined($nms)) { $function = $nms->[0]; $fullfunction = $nms->[2]; } } # Prepend to accumulated symbols for pcstr # (so that caller comes before callee) my $sym = $symbols->{$pcstr}; if (!defined($sym)) { $sym = []; $symbols->{$pcstr} = $sym; } unshift(@{$sym}, $function, $filelinenum, $fullfunction); if ($debug) { printf STDERR ("%s => [%s]\n", $pcstr, join(" ", @{$sym})); } if (!defined($sep_address)) { # Inlining is off, se this entry ends immediately $count++; } } close(SYMBOLS); } # Use nm to map the list of referenced PCs to symbols. Return true iff we # are able to read procedure information via nm. sub MapSymbolsWithNM { my $image = shift; my $offset = shift; my $pclist = shift; my $symbols = shift; # Get nm output sorted by increasing address my $symbol_table = GetProcedureBoundaries($image, "."); if (!%{$symbol_table}) { return 0; } # Start addresses are already the right length (8 or 16 hex digits). my @names = sort { $symbol_table->{$a}->[0] cmp $symbol_table->{$b}->[0] } keys(%{$symbol_table}); if ($#names < 0) { # No symbols: just use addresses foreach my $pc (@{$pclist}) { my $pcstr = "0x" . $pc; $symbols->{$pc} = [$pcstr, "?", $pcstr]; } return 0; } # Sort addresses so we can do a join against nm output my $index = 0; my $fullname = $names[0]; my $name = ShortFunctionName($fullname); foreach my $pc (sort { $a cmp $b } @{$pclist}) { # Adjust for mapped offset my $mpc = AddressSub($pc, $offset); while (($index < $#names) && ($mpc ge $symbol_table->{$fullname}->[1])){ $index++; $fullname = $names[$index]; $name = ShortFunctionName($fullname); } if ($mpc lt $symbol_table->{$fullname}->[1]) { $symbols->{$pc} = [$name, "?", $fullname]; } else { my $pcstr = "0x" . $pc; $symbols->{$pc} = [$pcstr, "?", $pcstr]; } } return 1; } sub ShortFunctionName { my $function = shift; while ($function =~ s/(?]*>//g) { } # Remove template arguments $function =~ s/^.*\s+(\w+::)/$1/; # Remove leading type return $function; } # Trim overly long symbols found in disassembler output sub CleanDisassembly { my $d = shift; while ($d =~ s/(?]*>/$1/g) { } # Remove template arguments return $d; } ##### Miscellaneous ##### # Find the right versions of the above object tools to use. The # argument is the program file being analyzed, and should be an ELF # 32-bit or ELF 64-bit executable file. The location of the tools # is determined by considering the following options in this order: # 1) --tools option, if set # 2) PPROF_TOOLS environment variable, if set # 3) the environment sub ConfigureObjTools { my $prog_file = shift; # Check for the existence of $prog_file because /usr/bin/file does not # predictably return error status in prod. (-e $prog_file) || error("$prog_file does not exist.\n"); # Follow symlinks (at least for systems where "file" supports that) my $file_cmd = "/usr/bin/file -L $prog_file 2>$DEVNULL || /usr/bin/file $prog_file 2>$DEVNULL"; if ($^O eq "MSWin32") { $file_cmd = "file -L $prog_file 2>NUL || file $prog_file 2>NUL"; } my $file_type = `$file_cmd`; if ($file_type =~ /64-bit/) { # Change $address_length to 16 if the program file is ELF 64-bit. # We can't detect this from many (most?) heap or lock contention # profiles, since the actual addresses referenced are generally in low # memory even for 64-bit programs. $address_length = 16; } if (($file_type =~ /MS Windows/) || ($OS eq "windows")) { # For windows, we provide a version of nm and addr2line as part of # the opensource release, which is capable of parsing # Windows-style PDB executables. It should live in the path, or # in the same directory as pprof. $obj_tool_map{"nm_pdb"} = "nm-pdb"; $obj_tool_map{"addr2line_pdb"} = "addr2line-pdb"; $obj_tool_map{"objdump"} = "false"; # no objdump } if ($file_type =~ /Mach-O/) { # OS X uses otool to examine Mach-O files, rather than objdump. $obj_tool_map{"otool"} = "otool"; $obj_tool_map{"addr2line"} = "false"; # no addr2line $obj_tool_map{"objdump"} = "false"; # no objdump } # Go fill in %obj_tool_map with the pathnames to use: foreach my $tool (keys %obj_tool_map) { $obj_tool_map{$tool} = ConfigureTool($obj_tool_map{$tool}); } } # Returns the path of a caller-specified object tool. If --tools or # PPROF_TOOLS are specified, then returns the full path to the tool # with that prefix. Otherwise, returns the path unmodified (which # means we will look for it on PATH). sub ConfigureTool { my $tool = shift; my $path; if ($main::opt_tools ne "") { # Use a prefix specified by the --tools option... $path = $main::opt_tools . $tool; if (!-x $path) { error("No '$tool' found with prefix specified by --tools $main::opt_tools\n"); } } elsif (exists $ENV{"PPROF_TOOLS"} && $ENV{"PPROF_TOOLS"} ne "") { #... or specified with the PPROF_TOOLS environment variable... $path = $ENV{"PPROF_TOOLS"} . $tool; if (!-x $path) { error("No '$tool' found with prefix specified by PPROF_TOOLS=$ENV{PPROF_TOOLS}\n"); } } else { # ... otherwise use the version that exists in the same directory as # pprof. If there's nothing there, use $PATH. $0 =~ m,[^/]*$,; # this is everything after the last slash my $dirname = $`; # this is everything up to and including the last slash if (-x "$dirname$tool") { $path = "$dirname$tool"; } else { $path = $tool; } } if ($main::opt_debug) { print STDERR "Using '$path' for '$tool'.\n"; } return $path; } # FetchHTTP retrieves a URL using either curl or LWP::UserAgent. # It returns the entire body of the page on success, or exits the program # with an error message on any failure. sub FetchHTTP { my $url = shift; my $timeout = shift; # optional, in seconds eval "use LWP::UserAgent ();"; if ($@) { my @max; push @max, "--max-time", $timeout if $timeout; open(my $fh, "-|", "curl", @max, "-s", $url) or error("Neither LWP::UserAgent nor curl is installed: $!\n"); my $slurp = do { local $/; <$fh> }; close($fh); if ($? != 0) { error("Error fetching $url with curl: exit $?") } return $slurp; } my $ua = LWP::UserAgent->new; $ua->timeout($timeout) if $timeout; my $res = $ua->get($url); error("Failed to fetch $url\n") unless $res->is_success(); return $res->content(); } sub PostHTTP { my ($url, $post_data) = @_; eval "use LWP::UserAgent ();"; if ($@) { open(POSTFILE, ">$main::tmpfile_sym"); print POSTFILE $post_data; close(POSTFILE); open(my $fh, "-|", "curl", "-s", "-d", "\@$main::tmpfile_sym", $url) or error("Neither LWP::UserAgent nor curl is installed: $!\n"); my $slurp = do { local $/; <$fh> }; close($fh); if ($? != 0) { error("Error fetching $url with curl: exit $?") } return $slurp; } my $req = HTTP::Request->new(POST => $url); $req->content($post_data); my $ua = LWP::UserAgent->new; my $res = $ua->request($req); error("Failed to POST to $url\n") unless $res->is_success(); return $res->content(); } sub cleanup { unlink($main::tmpfile_sym) if defined $main::tmpfile_sym; unlink(keys %main::tempnames) if %main::tempnames; unlink($main::collected_profile) if defined $main::collected_profile; # We leave any collected profiles in $HOME/pprof in case the user wants # to look at them later. We print a message informing them of this. if ((scalar(@main::profile_files) > 0) && defined($main::collected_profile)) { if (scalar(@main::profile_files) == 1) { print STDERR "Dynamically gathered profile is in $main::collected_profile\n"; } print STDERR "If you want to investigate this profile further, you can do:\n"; print STDERR "\n"; print STDERR " pprof \\\n"; print STDERR " $main::prog \\\n"; print STDERR " $main::collected_profile\n"; print STDERR "\n"; } } sub sighandler { cleanup(); exit(1); } sub error { my $msg = shift; print STDERR $msg; cleanup(); exit(1); } # Run $nm_command and get all the resulting procedure boundaries whose # names match "$regexp" and returns them in a hashtable mapping from # procedure name to a two-element vector of [start address, end address] sub GetProcedureBoundariesViaNm { my $nm_command = shift; my $regexp = shift; my $symbol_table = {}; open(NM, "$nm_command |") || error("$nm_command: $!\n"); my $last_start = "0"; my $routine = ""; while () { s/\r//g; # turn windows-looking lines into unix-looking lines if (m/^\s*([0-9a-f]+) (.) (..*)/) { my $start_val = $1; my $type = $2; my $this_routine = $3; # It's possible for two symbols to share the same address, if # one is a zero-length variable (like __start_google_malloc) or # one symbol is a weak alias to another (like __libc_malloc). # In such cases, we want to ignore all values except for the # actual symbol, which in nm-speak has type "T". The logic # below does this, though it's a bit tricky: what happens when # we have a series of lines with the same address, is the first # one gets queued up to be processed. However, it won't # *actually* be processed until later, when we read a line with # a different address. That means that as long as we're reading # lines with the same address, we have a chance to replace that # item in the queue, which we do whenever we see a 'T' entry -- # that is, a line with type 'T'. If we never see a 'T' entry, # we'll just go ahead and process the first entry (which never # got touched in the queue), and ignore the others. if ($start_val eq $last_start && $type =~ /t/i) { # We are the 'T' symbol at this address, replace previous symbol. $routine = $this_routine; next; } elsif ($start_val eq $last_start) { # We're not the 'T' symbol at this address, so ignore us. next; } if ($this_routine eq $sep_symbol) { $sep_address = HexExtend($start_val); } # Tag this routine with the starting address in case the image # has multiple occurrences of this routine. We use a syntax # that resembles template paramters that are automatically # stripped out by ShortFunctionName() $this_routine .= "<$start_val>"; if (defined($routine) && $routine =~ m/$regexp/) { $symbol_table->{$routine} = [HexExtend($last_start), HexExtend($start_val)]; } $last_start = $start_val; $routine = $this_routine; } elsif (m/^Loaded image name: (.+)/) { # The win32 nm workalike emits information about the binary it is using. if ($main::opt_debug) { print STDERR "Using Image $1\n"; } } elsif (m/^PDB file name: (.+)/) { # The win32 nm workalike emits information about the pdb it is using. if ($main::opt_debug) { print STDERR "Using PDB $1\n"; } } } close(NM); # Handle the last line in the nm output. Unfortunately, we don't know # how big this last symbol is, because we don't know how big the file # is. For now, we just give it a size of 0. # TODO(csilvers): do better here. if (defined($routine) && $routine =~ m/$regexp/) { $symbol_table->{$routine} = [HexExtend($last_start), HexExtend($last_start)]; } return $symbol_table; } # Gets the procedure boundaries for all routines in "$image" whose names # match "$regexp" and returns them in a hashtable mapping from procedure # name to a two-element vector of [start address, end address]. # Will return an empty map if nm is not installed or not working properly. sub GetProcedureBoundaries { my $image = shift; my $regexp = shift; # For libc libraries, the copy in /usr/lib/debug contains debugging symbols my $debugging = DebuggingLibrary($image); if ($debugging) { $image = $debugging; } my $nm = $obj_tool_map{"nm"}; # nm can fail for two reasons: 1) $image isn't a debug library; 2) nm # binary doesn't support --demangle. In addition, for OS X we need # to use the -f flag to get 'flat' nm output (otherwise we don't sort # properly and get incorrect results). Unfortunately, GNU nm uses -f # in an incompatible way. So first we test whether our nm supports # --demangle and -f. my $demangle_flag = ""; if (system("$nm --demangle $image >$DEVNULL 2>&1") == 0) { # In this mode, we do "nm --demangle " $demangle_flag = "--demangle"; } my $flatten_flag = ""; if (system("$nm -f $image >$DEVNULL 2>&1") == 0) { $flatten_flag = "-f"; } # Finally, in the case $image isn't a debug library, we try again with # -D to at least get *exported* symbols. If we can't use --demangle, too bad. my @nm_commands = ("$nm -n $flatten_flag $demangle_flag" . " $image 2>$DEVNULL", "$nm -D -n $flatten_flag $demangle_flag" . " $image 2>$DEVNULL", # go tool nm is for Go binaries "go tool nm $image 2>$DEVNULL | sort"); foreach my $nm_command (@nm_commands) { my $symbol_table = GetProcedureBoundariesViaNm($nm_command, $regexp); return $symbol_table if (%{$symbol_table}); } my $symbol_table = {}; return $symbol_table; } # The test vectors for AddressAdd/Sub/Inc are 8-16-nibble hex strings. # To make them more readable, we add underscores at interesting places. # This routine removes the underscores, producing the canonical representation # used by pprof to represent addresses, particularly in the tested routines. sub CanonicalHex { my $arg = shift; return join '', (split '_',$arg); } # Unit test for AddressAdd: sub AddressAddUnitTest { my $test_data_8 = shift; my $test_data_16 = shift; my $error_count = 0; my $fail_count = 0; my $pass_count = 0; # print STDERR "AddressAddUnitTest: ", 1+$#{$test_data_8}, " tests\n"; # First a few 8-nibble addresses. Note that this implementation uses # plain old arithmetic, so a quick sanity check along with verifying what # happens to overflow (we want it to wrap): $address_length = 8; foreach my $row (@{$test_data_8}) { if ($main::opt_debug and $main::opt_test) { print STDERR "@{$row}\n"; } my $sum = AddressAdd ($row->[0], $row->[1]); if ($sum ne $row->[2]) { printf STDERR "ERROR: %s != %s + %s = %s\n", $sum, $row->[0], $row->[1], $row->[2]; ++$fail_count; } else { ++$pass_count; } } printf STDERR "AddressAdd 32-bit tests: %d passes, %d failures\n", $pass_count, $fail_count; $error_count = $fail_count; $fail_count = 0; $pass_count = 0; # Now 16-nibble addresses. $address_length = 16; foreach my $row (@{$test_data_16}) { if ($main::opt_debug and $main::opt_test) { print STDERR "@{$row}\n"; } my $sum = AddressAdd (CanonicalHex($row->[0]), CanonicalHex($row->[1])); my $expected = join '', (split '_',$row->[2]); if ($sum ne CanonicalHex($row->[2])) { printf STDERR "ERROR: %s != %s + %s = %s\n", $sum, $row->[0], $row->[1], $row->[2]; ++$fail_count; } else { ++$pass_count; } } printf STDERR "AddressAdd 64-bit tests: %d passes, %d failures\n", $pass_count, $fail_count; $error_count += $fail_count; return $error_count; } # Unit test for AddressSub: sub AddressSubUnitTest { my $test_data_8 = shift; my $test_data_16 = shift; my $error_count = 0; my $fail_count = 0; my $pass_count = 0; # print STDERR "AddressSubUnitTest: ", 1+$#{$test_data_8}, " tests\n"; # First a few 8-nibble addresses. Note that this implementation uses # plain old arithmetic, so a quick sanity check along with verifying what # happens to overflow (we want it to wrap): $address_length = 8; foreach my $row (@{$test_data_8}) { if ($main::opt_debug and $main::opt_test) { print STDERR "@{$row}\n"; } my $sum = AddressSub ($row->[0], $row->[1]); if ($sum ne $row->[3]) { printf STDERR "ERROR: %s != %s - %s = %s\n", $sum, $row->[0], $row->[1], $row->[3]; ++$fail_count; } else { ++$pass_count; } } printf STDERR "AddressSub 32-bit tests: %d passes, %d failures\n", $pass_count, $fail_count; $error_count = $fail_count; $fail_count = 0; $pass_count = 0; # Now 16-nibble addresses. $address_length = 16; foreach my $row (@{$test_data_16}) { if ($main::opt_debug and $main::opt_test) { print STDERR "@{$row}\n"; } my $sum = AddressSub (CanonicalHex($row->[0]), CanonicalHex($row->[1])); if ($sum ne CanonicalHex($row->[3])) { printf STDERR "ERROR: %s != %s - %s = %s\n", $sum, $row->[0], $row->[1], $row->[3]; ++$fail_count; } else { ++$pass_count; } } printf STDERR "AddressSub 64-bit tests: %d passes, %d failures\n", $pass_count, $fail_count; $error_count += $fail_count; return $error_count; } # Unit test for AddressInc: sub AddressIncUnitTest { my $test_data_8 = shift; my $test_data_16 = shift; my $error_count = 0; my $fail_count = 0; my $pass_count = 0; # print STDERR "AddressIncUnitTest: ", 1+$#{$test_data_8}, " tests\n"; # First a few 8-nibble addresses. Note that this implementation uses # plain old arithmetic, so a quick sanity check along with verifying what # happens to overflow (we want it to wrap): $address_length = 8; foreach my $row (@{$test_data_8}) { if ($main::opt_debug and $main::opt_test) { print STDERR "@{$row}\n"; } my $sum = AddressInc ($row->[0]); if ($sum ne $row->[4]) { printf STDERR "ERROR: %s != %s + 1 = %s\n", $sum, $row->[0], $row->[4]; ++$fail_count; } else { ++$pass_count; } } printf STDERR "AddressInc 32-bit tests: %d passes, %d failures\n", $pass_count, $fail_count; $error_count = $fail_count; $fail_count = 0; $pass_count = 0; # Now 16-nibble addresses. $address_length = 16; foreach my $row (@{$test_data_16}) { if ($main::opt_debug and $main::opt_test) { print STDERR "@{$row}\n"; } my $sum = AddressInc (CanonicalHex($row->[0])); if ($sum ne CanonicalHex($row->[4])) { printf STDERR "ERROR: %s != %s + 1 = %s\n", $sum, $row->[0], $row->[4]; ++$fail_count; } else { ++$pass_count; } } printf STDERR "AddressInc 64-bit tests: %d passes, %d failures\n", $pass_count, $fail_count; $error_count += $fail_count; return $error_count; } # Driver for unit tests. # Currently just the address add/subtract/increment routines for 64-bit. sub RunUnitTests { my $error_count = 0; # This is a list of tuples [a, b, a+b, a-b, a+1] my $unit_test_data_8 = [ [qw(aaaaaaaa 50505050 fafafafa 5a5a5a5a aaaaaaab)], [qw(50505050 aaaaaaaa fafafafa a5a5a5a6 50505051)], [qw(ffffffff aaaaaaaa aaaaaaa9 55555555 00000000)], [qw(00000001 ffffffff 00000000 00000002 00000002)], [qw(00000001 fffffff0 fffffff1 00000011 00000002)], ]; my $unit_test_data_16 = [ # The implementation handles data in 7-nibble chunks, so those are the # interesting boundaries. [qw(aaaaaaaa 50505050 00_000000f_afafafa 00_0000005_a5a5a5a 00_000000a_aaaaaab)], [qw(50505050 aaaaaaaa 00_000000f_afafafa ff_ffffffa_5a5a5a6 00_0000005_0505051)], [qw(ffffffff aaaaaaaa 00_000001a_aaaaaa9 00_0000005_5555555 00_0000010_0000000)], [qw(00000001 ffffffff 00_0000010_0000000 ff_ffffff0_0000002 00_0000000_0000002)], [qw(00000001 fffffff0 00_000000f_ffffff1 ff_ffffff0_0000011 00_0000000_0000002)], [qw(00_a00000a_aaaaaaa 50505050 00_a00000f_afafafa 00_a000005_a5a5a5a 00_a00000a_aaaaaab)], [qw(0f_fff0005_0505050 aaaaaaaa 0f_fff000f_afafafa 0f_ffefffa_5a5a5a6 0f_fff0005_0505051)], [qw(00_000000f_fffffff 01_800000a_aaaaaaa 01_800001a_aaaaaa9 fe_8000005_5555555 00_0000010_0000000)], [qw(00_0000000_0000001 ff_fffffff_fffffff 00_0000000_0000000 00_0000000_0000002 00_0000000_0000002)], [qw(00_0000000_0000001 ff_fffffff_ffffff0 ff_fffffff_ffffff1 00_0000000_0000011 00_0000000_0000002)], ]; $error_count += AddressAddUnitTest($unit_test_data_8, $unit_test_data_16); $error_count += AddressSubUnitTest($unit_test_data_8, $unit_test_data_16); $error_count += AddressIncUnitTest($unit_test_data_8, $unit_test_data_16); if ($error_count > 0) { print STDERR $error_count, " errors: FAILED\n"; } else { print STDERR "PASS\n"; } exit ($error_count); } ����������������������������������������������������������������������������������������������������������������������������������������go/misc/swig����������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656734�013324� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/swig/callback�������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656734�015060� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/swig/callback/callback.cc�������������������������������������������������������������������0100644�0000000�0000000�00000000605�12412656734�017200� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2013 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 .cc file will be automatically compiled by the go tool and // included in the package. #include #include "callback.h" std::string Caller::call() { if (callback_ != 0) return callback_->run(); return ""; } ���������������������������������������������������������������������������������������������������������������������������go/misc/swig/callback/callback.go�������������������������������������������������������������������0100644�0000000�0000000�00000000414�12412656734�017216� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// 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 callback type GoCallback struct{} func (p *GoCallback) Run() string { return "GoCallback.Run" } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/swig/callback/callback.h��������������������������������������������������������������������0100644�0000000�0000000�00000001022�12412656734�017034� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2011 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. class Callback { public: virtual ~Callback() { } virtual std::string run() { return "Callback::run"; } }; class Caller { private: Callback *callback_; public: Caller(): callback_(0) { } ~Caller() { delCallback(); } void delCallback() { delete callback_; callback_ = 0; } void setCallback(Callback *cb) { delCallback(); callback_ = cb; } std::string call(); }; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/swig/callback/callback.swigcxx��������������������������������������������������������������0100644�0000000�0000000�00000000567�12412656734�020316� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright 2011 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. */ /* An example of writing a C++ virtual function in Go. */ %module(directors="1") callback %{ #include #include "callback.h" %} %include "std_string.i" %feature("director"); %include "callback.h" �����������������������������������������������������������������������������������������������������������������������������������������go/misc/swig/callback/callback_test.go��������������������������������������������������������������0100644�0000000�0000000�00000001354�12412656734�020261� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// 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 callback_test import ( "../callback" "testing" ) func TestCall(t *testing.T) { c := callback.NewCaller() cb := callback.NewCallback() c.SetCallback(cb) s := c.Call() if s != "Callback::run" { t.Errorf("unexpected string from Call: %q", s) } c.DelCallback() } func TestCallback(t *testing.T) { c := callback.NewCaller() cb := callback.NewDirectorCallback(&callback.GoCallback{}) c.SetCallback(cb) s := c.Call() if s != "GoCallback.Run" { t.Errorf("unexpected string from Call with callback: %q", s) } c.DelCallback() callback.DeleteDirectorCallback(cb) } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/swig/stdio����������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656734�014446� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/swig/stdio/file.swig������������������������������������������������������������������������0100644�0000000�0000000�00000001064�12412656734�016335� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright 2011 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. */ /* A trivial example of wrapping a C library using SWIG. */ %{ #include #include %} %typemap(gotype) const char * "string" %typemap(in) const char * %{ $1 = malloc($input.n + 1); memcpy($1, $input.p, $input.n); $1[$input.n] = '\0'; %} %typemap(freearg) const char * %{ free($1); %} FILE *fopen(const char *name, const char *mode); int fclose(FILE *); int fgetc(FILE *); ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/swig/stdio/file_test.go���������������������������������������������������������������������0100644�0000000�0000000�00000001061�12412656734�017025� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// 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 file import "testing" // Open this file itself and verify that the first few characters are // as expected. func TestRead(t *testing.T) { f := Fopen("file_test.go", "r") if f == nil { t.Fatal("fopen failed") } if Fgetc(f) != '/' || Fgetc(f) != '/' || Fgetc(f) != ' ' || Fgetc(f) != 'C' { t.Error("read unexpected characters") } if Fclose(f) != 0 { t.Error("fclose failed") } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim�����������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013151� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/autoload��������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�014761� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/autoload/go�����������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�015366� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/autoload/go/complete.vim����������������������������������������������������������������0100644�0000000�0000000�00000005117�12412656737�017773� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������" Copyright 2011 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 file provides a utility function that performs auto-completion of " package names, for use by other commands. let s:goos = $GOOS let s:goarch = $GOARCH if len(s:goos) == 0 if exists('g:golang_goos') let s:goos = g:golang_goos elseif has('win32') || has('win64') let s:goos = 'windows' elseif has('macunix') let s:goos = 'darwin' else let s:goos = '*' endif endif if len(s:goarch) == 0 if exists('g:golang_goarch') let s:goarch = g:golang_goarch else let s:goarch = '*' endif endif function! go#complete#PackageMembers(package, member) silent! let content = system('godoc ' . a:package) if v:shell_error || !len(content) return [] endif let lines = filter(split(content, "\n"),"v:val !~ '^\\s\\+$'") try let mx1 = '^\s\+\(\S+\)\s\+=\s\+.*' let mx2 = '^\%(const\|var\|type\|func\) \([A-Z][^ (]\+\).*' let candidates = \ map(filter(copy(lines), 'v:val =~ mx1'), 'substitute(v:val, mx1, "\\1", "")') \ + map(filter(copy(lines), 'v:val =~ mx2'), 'substitute(v:val, mx2, "\\1", "")') return filter(candidates, '!stridx(v:val, a:member)') catch return [] endtry endfunction function! go#complete#Package(ArgLead, CmdLine, CursorPos) let dirs = [] let words = split(a:CmdLine, '\s\+', 1) if len(words) > 2 " Complete package members return go#complete#PackageMembers(words[1], words[2]) endif if executable('go') let goroot = substitute(system('go env GOROOT'), '\n', '', 'g') if v:shell_error echomsg '''go env GOROOT'' failed' endif else let goroot = $GOROOT endif if len(goroot) != 0 && isdirectory(goroot) let dirs += [goroot] endif let pathsep = ':' if s:goos == 'windows' let pathsep = ';' endif let workspaces = split($GOPATH, pathsep) if workspaces != [] let dirs += workspaces endif if len(dirs) == 0 " should not happen return [] endif let ret = {} for dir in dirs " this may expand to multiple lines let root = split(expand(dir . '/pkg/' . s:goos . '_' . s:goarch), "\n") call add(root, expand(dir . '/src')) for r in root for i in split(globpath(r, a:ArgLead.'*'), "\n") if isdirectory(i) let i .= '/' elseif i !~ '\.a$' continue endif let i = substitute(substitute(i[len(r)+1:], '[\\]', '/', 'g'), '\.a$', '', 'g') let ret[i] = i endfor endfor endfor return sort(keys(ret)) endfunction �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/compiler��������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�014763� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/compiler/go.vim�������������������������������������������������������������������������0100644�0000000�0000000�00000001157�12412656737�016165� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������" Copyright 2013 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. " " compiler/go.vim: Vim compiler file for Go. if exists("current_compiler") finish endif let current_compiler = "go" if exists(":CompilerSet") != 2 command -nargs=* CompilerSet setlocal endif let s:save_cpo = &cpo set cpo-=C CompilerSet makeprg=go\ build CompilerSet errorformat= \%-G#\ %.%#, \%A%f:%l:%c:\ %m, \%A%f:%l:\ %m, \%C%*\\s%m, \%-G%.%# let &cpo = s:save_cpo unlet s:save_cpo " vim:ts=4:sw=4:et �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/ftdetect��������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�014753� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/ftdetect/gofiletype.vim�����������������������������������������������������������������0100644�0000000�0000000�00000001554�12412656737�017720� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������" We take care to preserve the user's fileencodings and fileformats, " because those settings are global (not buffer local), yet we want " to override them for loading Go files, which are defined to be UTF-8. let s:current_fileformats = '' let s:current_fileencodings = '' " define fileencodings to open as utf-8 encoding even if it's ascii. function! s:gofiletype_pre() let s:current_fileformats = &g:fileformats let s:current_fileencodings = &g:fileencodings set fileencodings=utf-8 fileformats=unix setlocal filetype=go endfunction " restore fileencodings as others function! s:gofiletype_post() let &g:fileformats = s:current_fileformats let &g:fileencodings = s:current_fileencodings endfunction au BufNewFile *.go setlocal filetype=go fileencoding=utf-8 fileformat=unix au BufRead *.go call s:gofiletype_pre() au BufReadPost *.go call s:gofiletype_post() ����������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/ftplugin��������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�015001� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/ftplugin/go�����������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�015406� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/ftplugin/go/fmt.vim���������������������������������������������������������������������0100644�0000000�0000000�00000003454�12412656737�016773� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������" Copyright 2011 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. " " fmt.vim: Vim command to format Go files with gofmt. " " This filetype plugin add a new commands for go buffers: " " :Fmt " " Filter the current Go buffer through gofmt. " It tries to preserve cursor position and avoids " replacing the buffer with stderr output. " " Options: " " g:go_fmt_commands [default=1] " " Flag to indicate whether to enable the commands listed above. " " g:gofmt_command [default="gofmt"] " " Flag naming the gofmt executable to use. " if exists("b:did_ftplugin_go_fmt") finish endif if !exists("g:go_fmt_commands") let g:go_fmt_commands = 1 endif if !exists("g:gofmt_command") let g:gofmt_command = "gofmt" endif if g:go_fmt_commands command! -buffer Fmt call s:GoFormat() endif function! s:GoFormat() let view = winsaveview() silent execute "%!" . g:gofmt_command if v:shell_error let errors = [] for line in getline(1, line('$')) let tokens = matchlist(line, '^\(.\{-}\):\(\d\+\):\(\d\+\)\s*\(.*\)') if !empty(tokens) call add(errors, {"filename": @%, \"lnum": tokens[2], \"col": tokens[3], \"text": tokens[4]}) endif endfor if empty(errors) % | " Couldn't detect gofmt error format, output errors endif undo if !empty(errors) call setqflist(errors, 'r') endif echohl Error | echomsg "Gofmt returned error" | echohl None endif call winrestview(view) endfunction let b:did_ftplugin_go_fmt = 1 " vim:ts=4:sw=4:et ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/ftplugin/go/import.vim������������������������������������������������������������������0100644�0000000�0000000�00000020423�12412656737�017512� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������" Copyright 2011 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. " " import.vim: Vim commands to import/drop Go packages. " " This filetype plugin adds three new commands for go buffers: " " :Import {path} " " Import ensures that the provided package {path} is imported " in the current Go buffer, using proper style and ordering. " If {path} is already being imported, an error will be " displayed and the buffer will be untouched. " " :ImportAs {localname} {path} " " Same as Import, but uses a custom local name for the package. " " :Drop {path} " " Remove the import line for the provided package {path}, if " present in the current Go buffer. If {path} is not being " imported, an error will be displayed and the buffer will be " untouched. " " If you would like to add shortcuts, you can do so by doing the following: " " Import fmt " au Filetype go nnoremap f :Import fmt " " Drop fmt " au Filetype go nnoremap F :Drop fmt " " Import the word under your cursor " au Filetype go nnoremap k " \ :exe 'Import ' . expand('') " " The backslash '\' is the default maplocalleader, so it is possible that " your vim is set to use a different character (:help maplocalleader). " " Options: " " g:go_import_commands [default=1] " " Flag to indicate whether to enable the commands listed above. " if exists("b:did_ftplugin_go_import") finish endif if !exists("g:go_import_commands") let g:go_import_commands = 1 endif if g:go_import_commands command! -buffer -nargs=? -complete=customlist,go#complete#Package Drop call s:SwitchImport(0, '', ) command! -buffer -nargs=1 -complete=customlist,go#complete#Package Import call s:SwitchImport(1, '', ) command! -buffer -nargs=* -complete=customlist,go#complete#Package ImportAs call s:SwitchImport(1, ) endif function! s:SwitchImport(enabled, localname, path) let view = winsaveview() let path = a:path " Quotes are not necessary, so remove them if provided. if path[0] == '"' let path = strpart(path, 1) endif if path[len(path)-1] == '"' let path = strpart(path, 0, len(path) - 1) endif if path == '' call s:Error('Import path not provided') return endif " Extract any site prefix (e.g. github.com/). " If other imports with the same prefix are grouped separately, " we will add this new import with them. " Only up to and including the first slash is used. let siteprefix = matchstr(path, "^[^/]*/") let qpath = '"' . path . '"' if a:localname != '' let qlocalpath = a:localname . ' ' . qpath else let qlocalpath = qpath endif let indentstr = 0 let packageline = -1 " Position of package name statement let appendline = -1 " Position to introduce new import let deleteline = -1 " Position of line with existing import let linesdelta = 0 " Lines added/removed " Find proper place to add/remove import. let line = 0 while line <= line('$') let linestr = getline(line) if linestr =~# '^package\s' let packageline = line let appendline = line elseif linestr =~# '^import\s\+(' let appendstr = qlocalpath let indentstr = 1 let appendline = line let firstblank = -1 let lastprefix = "" while line <= line("$") let line = line + 1 let linestr = getline(line) let m = matchlist(getline(line), '^\()\|\(\s\+\)\(\S*\s*\)"\(.\+\)"\)') if empty(m) if siteprefix == "" && a:enabled " must be in the first group break endif " record this position, but keep looking if firstblank < 0 let firstblank = line endif continue endif if m[1] == ')' " if there's no match, add it to the first group if appendline < 0 && firstblank >= 0 let appendline = firstblank endif break endif let lastprefix = matchstr(m[4], "^[^/]*/") if a:localname != '' && m[3] != '' let qlocalpath = printf('%-' . (len(m[3])-1) . 's %s', a:localname, qpath) endif let appendstr = m[2] . qlocalpath let indentstr = 0 if m[4] == path let appendline = -1 let deleteline = line break elseif m[4] < path " don't set candidate position if we have a site prefix, " we've passed a blank line, and this doesn't share the same " site prefix. if siteprefix == "" || firstblank < 0 || match(m[4], "^" . siteprefix) >= 0 let appendline = line endif elseif siteprefix != "" && match(m[4], "^" . siteprefix) >= 0 " first entry of site group let appendline = line - 1 break endif endwhile break elseif linestr =~# '^import ' if appendline == packageline let appendstr = 'import ' . qlocalpath let appendline = line - 1 endif let m = matchlist(linestr, '^import\(\s\+\)\(\S*\s*\)"\(.\+\)"') if !empty(m) if m[3] == path let appendline = -1 let deleteline = line break endif if m[3] < path let appendline = line endif if a:localname != '' && m[2] != '' let qlocalpath = printf("%s %" . len(m[2])-1 . "s", a:localname, qpath) endif let appendstr = 'import' . m[1] . qlocalpath endif elseif linestr =~# '^\(var\|const\|type\|func\)\>' break endif let line = line + 1 endwhile " Append or remove the package import, as requested. if a:enabled if deleteline != -1 call s:Error(qpath . ' already being imported') elseif appendline == -1 call s:Error('No package line found') else if appendline == packageline call append(appendline + 0, '') call append(appendline + 1, 'import (') call append(appendline + 2, ')') let appendline += 2 let linesdelta += 3 let appendstr = qlocalpath let indentstr = 1 endif call append(appendline, appendstr) execute appendline + 1 if indentstr execute 'normal >>' endif let linesdelta += 1 endif else if deleteline == -1 call s:Error(qpath . ' not being imported') else execute deleteline . 'd' let linesdelta -= 1 if getline(deleteline-1) =~# '^import\s\+(' && getline(deleteline) =~# '^)' " Delete empty import block let deleteline -= 1 execute deleteline . "d" execute deleteline . "d" let linesdelta -= 2 endif if getline(deleteline) == '' && getline(deleteline - 1) == '' " Delete spacing for removed line too. execute deleteline . "d" let linesdelta -= 1 endif endif endif " Adjust view for any changes. let view.lnum += linesdelta let view.topline += linesdelta if view.topline < 0 let view.topline = 0 endif " Put buffer back where it was. call winrestview(view) endfunction function! s:Error(s) echohl Error | echo a:s | echohl None endfunction let b:did_ftplugin_go_import = 1 " vim:ts=4:sw=4:et ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/ftplugin/go/test.sh���������������������������������������������������������������������0100755�0000000�0000000�00000003142�12412656737�017000� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/bash -e # # 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. # # Tests for import.vim. cd $(dirname $0) cat > base.go <&1 -n "$1: " vim -e -s -u /dev/null -U /dev/null --noplugin -c "source import.vim" \ -c "$1" -c 'wq! test.go' base.go # ensure blank lines are treated correctly if ! gofmt test.go | cmp test.go -; then echo 2>&1 "gofmt conflict" gofmt test.go | diff -u test.go - | sed "s/^/ /" 2>&1 fail=1 return fi if ! [[ $(cat test.go) =~ $2 ]]; then echo 2>&1 "$2 did not match" cat test.go | sed "s/^/ /" 2>&1 fail=1 return fi echo 2>&1 "ok" } # Tests for Import test_one "Import baz" '"baz".*"bytes"' test_one "Import io/ioutil" '"io".*"io/ioutil".*"net"' test_one "Import myc" '"io".*"myc".*"net"' # prefix of a site prefix test_one "Import nat" '"io".*"nat".*"net"' test_one "Import net/http" '"net".*"net/http".*"mycorp/foo"' test_one "Import zoo" '"net".*"zoo".*"mycorp/foo"' test_one "Import mycorp/bar" '"net".*"mycorp/bar".*"mycorp/foo"' test_one "Import mycorp/goo" '"net".*"mycorp/foo".*"mycorp/goo"' # Tests for Drop cat > base.go <&1 "FAIL" exit 1 fi echo 2>&1 "PASS" ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/ftplugin/go.vim�������������������������������������������������������������������������0100644�0000000�0000000�00000000652�12412656737�016202� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������" Copyright 2013 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. " " go.vim: Vim filetype plugin for Go. if exists("b:did_ftplugin") finish endif let b:did_ftplugin = 1 setlocal formatoptions-=t setlocal comments=s1:/*,mb:*,ex:*/,:// setlocal commentstring=//\ %s let b:undo_ftplugin = "setl fo< com< cms<" " vim:ts=4:sw=4:et ��������������������������������������������������������������������������������������go/misc/vim/indent����������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�014432� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/indent/go.vim���������������������������������������������������������������������������0100644�0000000�0000000�00000003522�12412656737�015632� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������" Copyright 2011 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. " " indent/go.vim: Vim indent file for Go. " " TODO: " - function invocations split across lines " - general line splits (line ends in an operator) if exists("b:did_indent") finish endif let b:did_indent = 1 " C indentation is too far off useful, mainly due to Go's := operator. " Let's just define our own. setlocal nolisp setlocal autoindent setlocal indentexpr=GoIndent(v:lnum) setlocal indentkeys+=<:>,0=},0=) if exists("*GoIndent") finish endif " The shiftwidth() function is relatively new. " Don't require it to exist. if exists('*shiftwidth') func s:sw() return shiftwidth() endfunc else func s:sw() return &shiftwidth endfunc endif function! GoIndent(lnum) let prevlnum = prevnonblank(a:lnum-1) if prevlnum == 0 " top of file return 0 endif " grab the previous and current line, stripping comments. let prevl = substitute(getline(prevlnum), '//.*$', '', '') let thisl = substitute(getline(a:lnum), '//.*$', '', '') let previ = indent(prevlnum) let ind = previ if prevl =~ '[({]\s*$' " previous line opened a block let ind += s:sw() endif if prevl =~# '^\s*\(case .*\|default\):$' " previous line is part of a switch statement let ind += s:sw() endif " TODO: handle if the previous line is a label. if thisl =~ '^\s*[)}]' " this line closed a block let ind -= s:sw() endif " Colons are tricky. " We want to outdent if it's part of a switch ("case foo:" or "default:"). " We ignore trying to deal with jump labels because (a) they're rare, and " (b) they're hard to disambiguate from a composite literal key. if thisl =~# '^\s*\(case .*\|default\):$' let ind -= s:sw() endif return ind endfunction ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/plugin����������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�014447� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/plugin/godoc.vim������������������������������������������������������������������������0100644�0000000�0000000�00000006053�12412656737�016337� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������" Copyright 2011 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. " " godoc.vim: Vim command to see godoc. " " " Commands: " " :Godoc " " Open the relevant Godoc for either the word[s] passed to the command or " the, by default, the word under the cursor. " " Options: " " g:go_godoc_commands [default=1] " " Flag to indicate whether to enable the commands listed above. if exists("g:loaded_godoc") finish endif let g:loaded_godoc = 1 let s:buf_nr = -1 let s:last_word = '' if !exists('g:go_godoc_commands') let g:go_godoc_commands = 1 endif if g:go_godoc_commands command! -nargs=* -range -complete=customlist,go#complete#Package Godoc :call s:Godoc() endif nnoremap (godoc-keyword) :call Godoc('') function! s:GodocView() if !bufexists(s:buf_nr) leftabove new file `="[Godoc]"` let s:buf_nr = bufnr('%') elseif bufwinnr(s:buf_nr) == -1 leftabove split execute s:buf_nr . 'buffer' delete _ elseif bufwinnr(s:buf_nr) != bufwinnr('%') execute bufwinnr(s:buf_nr) . 'wincmd w' endif setlocal filetype=godoc setlocal bufhidden=delete setlocal buftype=nofile setlocal noswapfile setlocal nobuflisted setlocal modifiable setlocal nocursorline setlocal nocursorcolumn setlocal iskeyword+=: setlocal iskeyword-=- nnoremap K :Godoc au BufHidden call let buf_nr = -1 endfunction function! s:GodocWord(word) if !executable('godoc') echohl WarningMsg echo "godoc command not found." echo " install with: go get code.google.com/p/go.tools/cmd/godoc" echohl None return 0 endif let word = a:word silent! let content = system('godoc ' . word) if v:shell_error || !len(content) if len(s:last_word) silent! let content = system('godoc ' . s:last_word.'/'.word) if v:shell_error || !len(content) echo 'No documentation found for "' . word . '".' return 0 endif let word = s:last_word.'/'.word else echo 'No documentation found for "' . word . '".' return 0 endif endif let s:last_word = word silent! call s:GodocView() setlocal modifiable silent! %d _ silent! put! =content silent! normal gg setlocal nomodifiable setfiletype godoc return 1 endfunction function! s:Godoc(...) if !len(a:000) let oldiskeyword = &iskeyword setlocal iskeyword+=. let word = expand('') let &iskeyword = oldiskeyword let word = substitute(word, '[^a-zA-Z0-9\\/._~-]', '', 'g') let words = split(word, '\.\ze[^./]\+$') else let words = a:000 endif if !len(words) return endif if s:GodocWord(words[0]) if len(words) > 1 if search('^\%(const\|var\|type\|\s\+\) ' . words[1] . '\s\+=\s') return endif if search('^func ' . words[1] . '(') silent! normal zt return endif echo 'No documentation found for "' . words[1] . '".' endif endif endfunction " vim:ts=4:sw=4:et �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/readme.txt������������������������������������������������������������������������������0100644�0000000�0000000�00000006460�12412656737�015231� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������Vim plugins for Go (http://golang.org) ====================================== To use all the Vim plugins, add these lines to your $HOME/.vimrc. " Some Linux distributions set filetype in /etc/vimrc. " Clear filetype flags before changing runtimepath to force Vim to reload them. if exists("g:did_load_filetypes") filetype off filetype plugin indent off endif set runtimepath+=$GOROOT/misc/vim " replace $GOROOT with the output of: go env GOROOT filetype plugin indent on syntax on If you want to select fewer plugins, use the instructions in the rest of this file. A popular configuration is to gofmt Go source files when they are saved. To do that, add this line to the end of your $HOME/.vimrc. autocmd FileType go autocmd BufWritePre Fmt Vim syntax highlighting ----------------------- To install automatic syntax highlighting for GO programs: 1. Copy or link the filetype detection script to the ftdetect directory underneath your vim runtime directory (normally $HOME/.vim/ftdetect) 2. Copy or link syntax/go.vim to the syntax directory underneath your vim runtime directory (normally $HOME/.vim/syntax). Linking this file rather than just copying it will ensure any changes are automatically reflected in your syntax highlighting. 3. Add the following line to your .vimrc file (normally $HOME/.vimrc): syntax on In a typical unix environment you might accomplish this using the following commands: mkdir -p $HOME/.vim/ftdetect mkdir -p $HOME/.vim/syntax mkdir -p $HOME/.vim/autoload/go ln -s $GOROOT/misc/vim/ftdetect/gofiletype.vim $HOME/.vim/ftdetect/ ln -s $GOROOT/misc/vim/syntax/go.vim $HOME/.vim/syntax ln -s $GOROOT/misc/vim/autoload/go/complete.vim $HOME/.vim/autoload/go echo "syntax on" >> $HOME/.vimrc Vim filetype plugins -------------------- To install one of the available filetype plugins: 1. Same as 1 above. 2. Copy or link ftplugin/go.vim to the ftplugin directory underneath your vim runtime directory (normally $HOME/.vim/ftplugin). Copy or link one or more additional plugins from ftplugin/go/*.vim to the Go-specific subdirectory in the same place ($HOME/.vim/ftplugin/go/*.vim). 3. Add the following line to your .vimrc file (normally $HOME/.vimrc): filetype plugin on Vim indentation plugin ---------------------- To install automatic indentation: 1. Same as 1 above. 2. Copy or link indent/go.vim to the indent directory underneath your vim runtime directory (normally $HOME/.vim/indent). 3. Add the following line to your .vimrc file (normally $HOME/.vimrc): filetype indent on Vim compiler plugin ------------------- To install the compiler plugin: 1. Same as 1 above. 2. Copy or link compiler/go.vim to the compiler directory underneath your vim runtime directory (normally $HOME/.vim/compiler). 3. Activate the compiler plugin with ":compiler go". To always enable the compiler plugin in Go source files add an autocommand to your .vimrc file (normally $HOME/.vimrc): autocmd FileType go compiler go Godoc plugin ------------ To install godoc plugin: 1. Same as 1 above. 2. Copy or link plugin/godoc.vim to $HOME/.vim/plugin/godoc, syntax/godoc.vim to $HOME/.vim/syntax/godoc.vim, and autoload/go/complete.vim to $HOME/.vim/autoload/go/complete.vim. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/syntax����������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�014477� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/syntax/go.vim���������������������������������������������������������������������������0100644�0000000�0000000�00000017357�12412656737�015712� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������" Copyright 2009 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. " " go.vim: Vim syntax file for Go. " " Options: " There are some options for customizing the highlighting; the recommended " settings are the default values, but you can write: " let OPTION_NAME = 0 " in your ~/.vimrc file to disable particular options. You can also write: " let OPTION_NAME = 1 " to enable particular options. At present, all options default to on. " " - go_highlight_array_whitespace_error " Highlights white space after "[]". " - go_highlight_chan_whitespace_error " Highlights white space around the communications operator that don't follow " the standard style. " - go_highlight_extra_types " Highlights commonly used library types (io.Reader, etc.). " - go_highlight_space_tab_error " Highlights instances of tabs following spaces. " - go_highlight_trailing_whitespace_error " Highlights trailing white space. " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") finish endif if !exists("go_highlight_array_whitespace_error") let go_highlight_array_whitespace_error = 1 endif if !exists("go_highlight_chan_whitespace_error") let go_highlight_chan_whitespace_error = 1 endif if !exists("go_highlight_extra_types") let go_highlight_extra_types = 1 endif if !exists("go_highlight_space_tab_error") let go_highlight_space_tab_error = 1 endif if !exists("go_highlight_trailing_whitespace_error") let go_highlight_trailing_whitespace_error = 1 endif syn case match syn keyword goDirective package import syn keyword goDeclaration var const type syn keyword goDeclType struct interface hi def link goDirective Statement hi def link goDeclaration Keyword hi def link goDeclType Keyword " Keywords within functions syn keyword goStatement defer go goto return break continue fallthrough syn keyword goConditional if else switch select syn keyword goLabel case default syn keyword goRepeat for range hi def link goStatement Statement hi def link goConditional Conditional hi def link goLabel Label hi def link goRepeat Repeat " Predefined types syn keyword goType chan map bool string error syn keyword goSignedInts int int8 int16 int32 int64 rune syn keyword goUnsignedInts byte uint uint8 uint16 uint32 uint64 uintptr syn keyword goFloats float32 float64 syn keyword goComplexes complex64 complex128 hi def link goType Type hi def link goSignedInts Type hi def link goUnsignedInts Type hi def link goFloats Type hi def link goComplexes Type " Treat func specially: it's a declaration at the start of a line, but a type " elsewhere. Order matters here. syn match goType /\/ syn match goDeclaration /^func\>/ " Predefined functions and values syn keyword goBuiltins append cap close complex copy delete imag len syn keyword goBuiltins make new panic print println real recover syn keyword goConstants iota true false nil hi def link goBuiltins Keyword hi def link goConstants Keyword " Comments; their contents syn keyword goTodo contained TODO FIXME XXX BUG syn cluster goCommentGroup contains=goTodo syn region goComment start="/\*" end="\*/" contains=@goCommentGroup,@Spell syn region goComment start="//" end="$" contains=@goCommentGroup,@Spell hi def link goComment Comment hi def link goTodo Todo " Go escapes syn match goEscapeOctal display contained "\\[0-7]\{3}" syn match goEscapeC display contained +\\[abfnrtv\\'"]+ syn match goEscapeX display contained "\\x\x\{2}" syn match goEscapeU display contained "\\u\x\{4}" syn match goEscapeBigU display contained "\\U\x\{8}" syn match goEscapeError display contained +\\[^0-7xuUabfnrtv\\'"]+ hi def link goEscapeOctal goSpecialString hi def link goEscapeC goSpecialString hi def link goEscapeX goSpecialString hi def link goEscapeU goSpecialString hi def link goEscapeBigU goSpecialString hi def link goSpecialString Special hi def link goEscapeError Error " Strings and their contents syn cluster goStringGroup contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU,goEscapeError syn region goString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@goStringGroup syn region goRawString start=+`+ end=+`+ hi def link goString String hi def link goRawString String " Characters; their contents syn cluster goCharacterGroup contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU syn region goCharacter start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@goCharacterGroup hi def link goCharacter Character " Regions syn region goBlock start="{" end="}" transparent fold syn region goParen start='(' end=')' transparent " Integers syn match goDecimalInt "\<\d\+\([Ee]\d\+\)\?\>" syn match goHexadecimalInt "\<0x\x\+\>" syn match goOctalInt "\<0\o\+\>" syn match goOctalError "\<0\o*[89]\d*\>" hi def link goDecimalInt Integer hi def link goHexadecimalInt Integer hi def link goOctalInt Integer hi def link Integer Number " Floating point syn match goFloat "\<\d\+\.\d*\([Ee][-+]\d\+\)\?\>" syn match goFloat "\<\.\d\+\([Ee][-+]\d\+\)\?\>" syn match goFloat "\<\d\+[Ee][-+]\d\+\>" hi def link goFloat Float " Imaginary literals syn match goImaginary "\<\d\+i\>" syn match goImaginary "\<\d\+\.\d*\([Ee][-+]\d\+\)\?i\>" syn match goImaginary "\<\.\d\+\([Ee][-+]\d\+\)\?i\>" syn match goImaginary "\<\d\+[Ee][-+]\d\+i\>" hi def link goImaginary Number " Spaces after "[]" if go_highlight_array_whitespace_error != 0 syn match goSpaceError display "\(\[\]\)\@<=\s\+" endif " Spacing errors around the 'chan' keyword if go_highlight_chan_whitespace_error != 0 " receive-only annotation on chan type syn match goSpaceError display "\(<-\)\@<=\s\+\(chan\>\)\@=" " send-only annotation on chan type syn match goSpaceError display "\(\/ syn match goExtraType /\/ syn match goExtraType /\/ syn match goExtraType /\/ endif " Space-tab error if go_highlight_space_tab_error != 0 syn match goSpaceError display " \+\t"me=e-1 endif " Trailing white space error if go_highlight_trailing_whitespace_error != 0 syn match goSpaceError display excludenl "\s\+$" endif hi def link goExtraType Type hi def link goSpaceError Error " Search backwards for a global declaration to start processing the syntax. "syn sync match goSync grouphere NONE /^\(const\|var\|type\|func\)\>/ " There's a bug in the implementation of grouphere. For now, use the " following as a more expensive/less precise workaround. syn sync minlines=500 let b:current_syntax = "go" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/vim/syntax/godoc.vim������������������������������������������������������������������������0100644�0000000�0000000�00000000625�12412656737�016366� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������" Copyright 2011 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 exists("b:current_syntax") finish endif syn case match syn match godocTitle "^\([A-Z][A-Z ]*\)$" command -nargs=+ HiLink hi def link HiLink godocTitle Title delcommand HiLink let b:current_syntax = "godoc" " vim:ts=4 sts=2 sw=2: �����������������������������������������������������������������������������������������������������������go/misc/xcode���������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013460� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/xcode/3�������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013622� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/xcode/3/README������������������������������������������������������������������������������0100644�0000000�0000000�00000000232�12412656737�014553� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������This directory contains files for Go syntax highlighting in Xcode 3.x. See the comments in go.pbfilespec and go.xclangspec for installation instructions. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/xcode/3/go.pbfilespec�����������������������������������������������������������������������0100644�0000000�0000000�00000001510�12412656737�016336� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright 2009 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. go.pbfilespec Go source file spec for Xcode 3 There is not much documentation available regarding the format of .pbfilespec files. As a starting point, see for instance the outdated documentation at: http://maxao.free.fr/xcode-plugin-interface/specifications.html and the files in: /Developer/Library/PrivateFrameworks/XcodeEdit.framework/Versions/A/Resources/ Place this file in directory: ~/Library/Application Support/Developer/Shared/Xcode/Specifications/ */ ( { Identifier = sourcecode.go; BasedOn = sourcecode; Name = "Go Files"; Extensions = ("go"); MIMETypes = ("text/go"); Language = "xcode.lang.go"; IsTextFile = YES; IsSourceFile = YES; } ) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/xcode/3/go.xclangspec�����������������������������������������������������������������������0100644�0000000�0000000�00000014574�12412656737�016367� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright 2009 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. Go.xclangspec Go language specification for Xcode 3 This is a preliminary version that supports basic syntax high-lighting (such as keywords, literals, and comments) and an attempt to provide some structure information (incomplete). There is not much documentation available regarding the format of .xclangspec files. As a starting point, see for instance the outdated documentation at: http://maxao.free.fr/xcode-plugin-interface/specifications.html and the files in: /Developer/Library/PrivateFrameworks/XcodeEdit.framework/Versions/A/Resources/ Place this file in directory: ~/Library/Application Support/Developer/Shared/Xcode/Specifications/ */ ( // ---------------------------------------------------------------------------- // Keywords // TODO How do we get general Unicode identifiers? { Identifier = "xcode.lang.go.identifier"; Syntax = { StartChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"; Chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"; Words = ( "break", "case", "chan", "const", "continue", "default", "defer", "else", "fallthrough", "for", "func", "go", "goto", "if", "import", "interface", "map", "package", "range", "return", "select", "struct", "switch", "type", "var", ); Type = "xcode.syntax.keyword"; AltType = "xcode.syntax.identifier"; // non-keywords are identifiers }; }, // TODO decide what should go here, if anything { Identifier = "xcode.lang.go.interestingOperators"; Syntax = { Words = ( "...", ".", "*", ",", ":", ); Type = "xcode.syntax.plain"; }; }, { Identifier = "xcode.lang.go.rawstring"; Syntax = { Start = "`"; End = "`"; Type = "xcode.syntax.string"; }; }, // ---------------------------------------------------------------------------- // Syntax Coloring { Identifier = "xcode.lang.go"; Description = "Go Coloring"; BasedOn = "xcode.lang.simpleColoring"; IncludeInMenu = YES; Name = "Go"; Syntax = { Tokenizer = "xcode.lang.go.lexer.toplevel"; IncludeRules = ( "xcode.lang.go.block", "xcode.lang.go.bracketexpr", "xcode.lang.go.parenexpr", ); Type = "xcode.syntax.plain"; }; }, // The following rule returns tokens to the other rules { Identifier = "xcode.lang.go.lexer"; Syntax = { IncludeRules = ( "xcode.lang.go.comment", "xcode.lang.go.comment.singleline", "xcode.lang.string", "xcode.lang.character", "xcode.lang.go.rawstring", "xcode.lang.go.identifier", "xcode.lang.number", "xcode.lang.go.interestingOperators", ); }; }, { Identifier = "xcode.lang.go.lexer.toplevel"; Syntax = { IncludeRules = ( "xcode.lang.go.comment", "xcode.lang.go.comment.singleline", "xcode.lang.string", "xcode.lang.character", "xcode.lang.go.rawstring", "xcode.lang.go.type.declaration", "xcode.lang.go.method.declaration", "xcode.lang.go.function.declaration", "xcode.lang.go.identifier", "xcode.lang.number", ); }; }, { Identifier = "xcode.lang.go.method.declaration"; Syntax = { Tokenizer = "xcode.lang.go.lexer"; Rules = ( "func", "xcode.lang.go.parenexpr", "xcode.lang.go.identifier", "xcode.lang.go.parenexpr", ); Type = "xcode.syntax.declaration.method"; }; }, { Identifier = "xcode.lang.go.type.declaration"; Syntax = { Tokenizer = "xcode.lang.go.lexer"; Rules = ( "type", "xcode.lang.go.identifier", ); Type = "xcode.syntax.typedef"; }; }, { Identifier = "xcode.lang.go.function.declaration"; Syntax = { Tokenizer = "xcode.lang.go.lexer"; Rules = ( "func", "xcode.lang.go.identifier", "xcode.lang.go.parenexpr", ); Type = "xcode.syntax.declaration.function"; }; }, // ---------------------------------------------------------------------------- // Blocks { Identifier = "xcode.lang.go.block"; Syntax = { Tokenizer = "xcode.lang.go.lexer"; Start = "{"; End = "}"; Foldable = YES; Recursive = YES; IncludeRules = ( "xcode.lang.go.bracketexpr", "xcode.lang.go.parenexpr", ); }; }, { Identifier = "xcode.lang.go.parenexpr"; Syntax = { Tokenizer = "xcode.lang.go.lexer"; Start = "("; End = ")"; Recursive = YES; IncludeRules = ( "xcode.lang.go.bracketexpr", "xcode.lang.go.block", ); }; }, { Identifier = "xcode.lang.go.bracketexpr"; Syntax = { Tokenizer = "xcode.lang.go.lexer"; Start = "["; End = "]"; Recursive = YES; IncludeRules = ( "xcode.lang.go.parenexpr", ); }; }, { Identifier = "xcode.lang.go.comment"; Syntax = { Start = "/*"; End = "*/"; Foldable = YES; IncludeRules = ( "xcode.lang.url", "xcode.lang.url.mail", "xcode.lang.comment.mark", ); Type = "xcode.syntax.comment"; }; }, { Identifier = "xcode.lang.go.comment.singleline"; Syntax = { Start = "//"; End = "\n"; IncludeRules = ( "xcode.lang.url", "xcode.lang.url.mail", "xcode.lang.comment.mark", ); Type = "xcode.syntax.comment"; }; }, // This rule recognizes special comments markers and adds them // to the list of file markers at the top of the editor window. // This overrides the markers specified in // /Developer/Library/PrivateFrameworks/XcodeEdit.framework/Versions/A/Resources/BaseSupport.xclangspec // and appears to apply them to all languages. Thus, for now // "inherit" the existing markers here for backward-compatibility. { Identifier = "xcode.lang.comment.mark"; Syntax = { StartChars = "BMTF!?"; Match = ( // Go-specific markers "^\(BUG.*$\)$", // include "BUG" in the markers list "^\(TODO.*$\)$", // include "TODO" in the markers list // inherited markers "^MARK:[ \t]+\(.*\)$", "^\(TODO:[ \t]+.*\)$", // include "TODO: " in the markers list "^\(FIXME:[ \t]+.*\)$", // include "FIXME: " in the markers list "^\(!!!:.*\)$", // include "!!!:" in the markers list "^\(\\?\\?\\?:.*\)$" // include "???:" in the markers list ); // This is the order of captures. All of the match strings above need the same order. CaptureTypes = ( "xcode.syntax.mark" ); Type = "xcode.syntax.comment"; }; }, ) ������������������������������������������������������������������������������������������������������������������������������������go/misc/xcode/4�������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013623� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/xcode/4/README������������������������������������������������������������������������������0100644�0000000�0000000�00000000172�12412656737�014557� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������This directory contains files for Go syntax highlighting in Xcode 4.x. For installation, read, edit, and run go4xcode.sh .������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/xcode/4/go.xclangspec�����������������������������������������������������������������������0100644�0000000�0000000�00000014264�12412656737�016364� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* 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. go.xclangspec Go language specification for Xcode 4.x. This is a preliminary version that supports basic syntax coloring (such as keywords, literals, and comments) and an attempt to provide some structure information (incomplete). There is not much documentation available regarding the format of .xclangspec files. As a starting point, see for instance the outdated documentation at: http://maxao.free.fr/xcode-plugin-interface/specifications.html */ ( // ---------------------------------------------------------------------------- // Keywords // TODO How do we get general Unicode identifiers? { Identifier = "xcode.lang.go.identifier"; Syntax = { StartChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"; Chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"; Words = ( "break", "case", "chan", "const", "continue", "default", "defer", "else", "fallthrough", "for", "func", "go", "goto", "if", "import", "interface", "map", "package", "range", "return", "select", "struct", "switch", "type", "var", ); Type = "xcode.syntax.keyword"; AltType = "xcode.syntax.identifier"; // non-keywords are identifiers }; }, // TODO decide what should go here, if anything { Identifier = "xcode.lang.go.interestingOperators"; Syntax = { Words = ( "...", ".", "*", ",", ":", ); Type = "xcode.syntax.plain"; }; }, { Identifier = "xcode.lang.go.rawstring"; Syntax = { Start = "`"; End = "`"; Type = "xcode.syntax.string"; }; }, // ---------------------------------------------------------------------------- // Syntax Coloring { Identifier = "xcode.lang.go"; Description = "Go Coloring"; BasedOn = "xcode.lang.simpleColoring"; IncludeInMenu = YES; Name = "Go"; Syntax = { Tokenizer = "xcode.lang.go.lexer.toplevel"; IncludeRules = ( "xcode.lang.go.block", "xcode.lang.go.bracketexpr", "xcode.lang.go.parenexpr", ); Type = "xcode.syntax.plain"; }; }, // The following rule returns tokens to the other rules { Identifier = "xcode.lang.go.lexer"; Syntax = { IncludeRules = ( "xcode.lang.go.comment", "xcode.lang.go.comment.singleline", "xcode.lang.string", "xcode.lang.character", "xcode.lang.go.rawstring", "xcode.lang.go.identifier", "xcode.lang.number", "xcode.lang.go.interestingOperators", ); }; }, { Identifier = "xcode.lang.go.lexer.toplevel"; Syntax = { IncludeRules = ( "xcode.lang.go.comment", "xcode.lang.go.comment.singleline", "xcode.lang.string", "xcode.lang.character", "xcode.lang.go.rawstring", "xcode.lang.go.type.declaration", "xcode.lang.go.method.declaration", "xcode.lang.go.function.declaration", "xcode.lang.go.identifier", "xcode.lang.number", ); }; }, { Identifier = "xcode.lang.go.method.declaration"; Syntax = { Tokenizer = "xcode.lang.go.lexer"; Rules = ( "func", "xcode.lang.go.parenexpr", "xcode.lang.go.identifier", "xcode.lang.go.parenexpr", ); Type = "xcode.syntax.declaration.method"; }; }, { Identifier = "xcode.lang.go.type.declaration"; Syntax = { Tokenizer = "xcode.lang.go.lexer"; Rules = ( "type", "xcode.lang.go.identifier", ); Type = "xcode.syntax.typedef"; }; }, { Identifier = "xcode.lang.go.function.declaration"; Syntax = { Tokenizer = "xcode.lang.go.lexer"; Rules = ( "func", "xcode.lang.go.identifier", "xcode.lang.go.parenexpr", ); Type = "xcode.syntax.declaration.function"; }; }, // ---------------------------------------------------------------------------- // Blocks { Identifier = "xcode.lang.go.block"; Syntax = { Tokenizer = "xcode.lang.go.lexer"; Start = "{"; End = "}"; Foldable = YES; Recursive = YES; IncludeRules = ( "xcode.lang.go.bracketexpr", "xcode.lang.go.parenexpr", ); }; }, { Identifier = "xcode.lang.go.parenexpr"; Syntax = { Tokenizer = "xcode.lang.go.lexer"; Start = "("; End = ")"; Recursive = YES; IncludeRules = ( "xcode.lang.go.bracketexpr", "xcode.lang.go.block", ); }; }, { Identifier = "xcode.lang.go.bracketexpr"; Syntax = { Tokenizer = "xcode.lang.go.lexer"; Start = "["; End = "]"; Recursive = YES; IncludeRules = ( "xcode.lang.go.parenexpr", ); }; }, { Identifier = "xcode.lang.go.comment"; Syntax = { Start = "/*"; End = "*/"; Foldable = YES; IncludeRules = ( "xcode.lang.url", "xcode.lang.url.mail", "xcode.lang.comment.mark", ); Type = "xcode.syntax.comment"; }; }, { Identifier = "xcode.lang.go.comment.singleline"; Syntax = { Start = "//"; End = "\n"; IncludeRules = ( "xcode.lang.url", "xcode.lang.url.mail", "xcode.lang.comment.mark", ); Type = "xcode.syntax.comment"; }; }, // This rule recognizes special comments markers and adds them // to the list of file markers at the top of the editor window. // This overrides the markers specified in // /Developer/Library/PrivateFrameworks/XcodeEdit.framework/Versions/A/Resources/BaseSupport.xclangspec // and appears to apply them to all languages. Thus, for now // "inherit" the existing markers here for backward-compatibility. { Identifier = "xcode.lang.comment.mark"; Syntax = { StartChars = "BMTF!?"; Match = ( // Go-specific markers "^\(BUG.*$\)$", // include "BUG" in the markers list "^\(TODO.*$\)$", // include "TODO" in the markers list // inherited markers "^MARK:[ \t]+\(.*\)$", "^\(TODO:[ \t]+.*\)$", // include "TODO: " in the markers list "^\(FIXME:[ \t]+.*\)$", // include "FIXME: " in the markers list "^\(!!!:.*\)$", // include "!!!:" in the markers list "^\(\\?\\?\\?:.*\)$" // include "???:" in the markers list ); // This is the order of captures. All of the match strings above need the same order. CaptureTypes = ( "xcode.syntax.mark" ); Type = "xcode.syntax.comment"; }; }, ) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/xcode/4/go4xcode.sh�������������������������������������������������������������������������0100755�0000000�0000000�00000007626�12412656737�015765� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env bash # 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. # Illustrates how a Go language specification can be installed for Xcode 4+, # to enable syntax coloring, by adding an entry to a plugindata file. # # FIXME: Write a decent Xcode plugin to handle the file type association and # language specification properly instead of altering Xcode library files. set -e # Assumes Xcode 4+. XCODE_MAJOR_VERSION=`xcodebuild -version | awk 'NR == 1 {print substr($2,1,1)}'` if [ "$XCODE_MAJOR_VERSION" -lt "4" ]; then echo "Xcode 4+ not found." exit 1 fi # DVTFOUNDATION_DIR may vary depending on Xcode setup. If Xcode has installed # the `xcode-select` command, it will be determined automatically. Otherwise, # change it to reflect your current Xcode setup. Find suitable path with e.g.: # # find / -type f -name 'DVTFoundation.xcplugindata' 2> /dev/null # # Example of DVTFOUNDATION_DIR's from "default" Xcode 4+ setups; # # Xcode 4.1: /Developer/Library/PrivateFrameworks/DVTFoundation.framework/Versions/A/Resources/ # Xcode 4.3: /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/ # Defaults to Xcode 4.3's DVTFOUNDATION_DIR. Path is modified automatically if # `xcode-select` command is available, as mentioned above. DVTFOUNDATION_DIR="/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/" if type "xcode-select" > /dev/null; then DVTFOUNDATION_DIR=`xcode-select --print-path` DVTFOUNDATION_DIR+="/.." FRAMEWORK_NAME="DVTFoundation.framework" DVTFOUNDATION_DIR=`find $DVTFOUNDATION_DIR -name $FRAMEWORK_NAME -print` DVTFOUNDATION_DIR+="/Versions/A/Resources" fi PLUGINDATA_FILE="DVTFoundation.xcplugindata" PLISTBUDDY=/usr/libexec/PlistBuddy PLIST_FILE=tmp.plist # Provide means of deleting the Go entry from the plugindata file. if [ "$1" = "--delete-entry" ]; then echo "Removing Go language specification entry." $PLISTBUDDY -c "Delete :plug-in:extensions:Xcode.SourceCodeLanguage.Go" $DVTFOUNDATION_DIR/$PLUGINDATA_FILE echo "Run 'sudo rm -rf /var/folders/*' and restart Xcode to update change immediately." exit 0 fi GO_VERSION="`go version`" GO_LANG_ENTRY=" Xcode.SourceCodeLanguage.Go conformsTo identifier Xcode.SourceCodeLanguage.Generic documentationAbbreviation go fileDataType identifier com.apple.xcode.go-source id Xcode.SourceCodeLanguage.Go languageName Go languageSpecification xcode.lang.go name The Go Programming Language point Xcode.SourceCodeLanguage version $GO_VERSION " echo "Backing up plugindata file (copied to $PLUGINDATA_FILE.bak)." cp $DVTFOUNDATION_DIR/$PLUGINDATA_FILE $DVTFOUNDATION_DIR/$PLUGINDATA_FILE.bak echo "Adding Go language specification entry." echo $GO_LANG_ENTRY > $PLIST_FILE $PLISTBUDDY -c "Merge $PLIST_FILE plug-in:extensions" $DVTFOUNDATION_DIR/$PLUGINDATA_FILE rm -f $PLIST_FILE echo "Installing Go language specification file for Xcode." cp $GOROOT/misc/xcode/4/go.xclangspec $DVTFOUNDATION_DIR echo "Run 'sudo rm -rf /var/folders/*' and restart Xcode to update change immediately." echo "Syntax coloring must be manually selected from the Editor - Syntax Coloring menu in Xcode." ����������������������������������������������������������������������������������������������������������go/misc/zsh�����������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013162� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/misc/zsh/go��������������������������������������������������������������������������������������0100644�0000000�0000000�00000012451�12412656737�013571� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# install in /etc/zsh/zshrc or your personal .zshrc # gc prefixes=(5 6 8) for p in $prefixes; do compctl -g "*.${p}" ${p}l compctl -g "*.go" ${p}g done # standard go tools compctl -g "*.go" gofmt # gccgo compctl -g "*.go" gccgo # go tool __go_tool_complete() { typeset -a commands build_flags commands+=( 'build[compile packages and dependencies]' 'clean[remove object files]' 'env[print Go environment information]' 'fix[run go tool fix on packages]' 'fmt[run gofmt on package sources]' 'get[download and install packages and dependencies]' 'help[display help]' 'install[compile and install packages and dependencies]' 'list[list packages]' 'run[compile and run Go program]' 'test[test packages]' 'tool[run specified go tool]' 'version[print Go version]' 'vet[run go tool vet on packages]' ) if (( CURRENT == 2 )); then # explain go commands _values 'go tool commands' ${commands[@]} return fi build_flags=( '-a[force reinstallation of packages that are already up-to-date]' '-n[print the commands but do not run them]' '-p[number of parallel builds]:number' '-race[enable data race detection]' '-x[print the commands]' '-work[print temporary directory name and keep it]' '-ccflags[flags for 5c/6c/8c]:flags' '-gcflags[flags for 5g/6g/8g]:flags' '-ldflags[flags for 5l/6l/8l]:flags' '-gccgoflags[flags for gccgo]:flags' '-compiler[name of compiler to use]:name' '-installsuffix[suffix to add to package directory]:suffix' '-tags[list of build tags to consider satisfied]:tags' ) __go_list() { local expl importpaths declare -a importpaths importpaths=($(go list ${words[$CURRENT]}... 2>/dev/null)) _wanted importpaths expl 'import paths' compadd "$@" - "${importpaths[@]}" } case ${words[2]} in clean|doc) _arguments -s -w : '*:importpaths:__go_list' ;; fix|fmt|list|vet) _alternative ':importpaths:__go_list' ':files:_path_files -g "*.go"' ;; install) _arguments -s -w : ${build_flags[@]} \ "-v[show package names]" \ '*:importpaths:__go_list' ;; get) _arguments -s -w : \ ${build_flags[@]} ;; build) _arguments -s -w : \ ${build_flags[@]} \ "-v[show package names]" \ "-o[output file]:file:_files" \ "*:args:{ _alternative ':importpaths:__go_list' ':files:_path_files -g \"*.go\"' }" ;; test) _arguments -s -w : \ ${build_flags[@]} \ "-c[do not run, compile the test binary]" \ "-i[do not run, install dependencies]" \ "-v[print test output]" \ "-x[print the commands]" \ "-short[use short mode]" \ "-parallel[number of parallel tests]:number" \ "-cpu[values of GOMAXPROCS to use]:number list" \ "-cover[enable coverage analysis]" \ "-run[run tests and examples matching regexp]:regexp" \ "-bench[run benchmarks matching regexp]:regexp" \ "-benchmem[print memory allocation stats]" \ "-benchtime[run each benchmark until taking this long]:duration" \ "-blockprofile[write goroutine blocking profile to file]:file" \ "-blockprofilerate[set sampling rate of goroutine blocking profile]:number" \ "-timeout[kill test after that duration]:duration" \ "-cpuprofile[write CPU profile to file]:file:_files" \ "-memprofile[write heap profile to file]:file:_files" \ "-memprofilerate[set heap profiling rate]:number" \ "*:args:{ _alternative ':importpaths:__go_list' ':files:_path_files -g \"*.go\"' }" ;; help) _values "${commands[@]}" \ 'c[how to call C code]' \ 'importpath[description of import path]' \ 'gopath[GOPATH environment variable]' \ 'packages[description of package lists]' \ 'testflag[description of testing flags]' \ 'testfunc[description of testing functions]' ;; run) _arguments -s -w : \ ${build_flags[@]} \ '*:file:_path_files -g "*.go"' ;; tool) if (( CURRENT == 3 )); then _values "go tool" $(go tool) return fi case ${words[3]} in [568]g) _arguments -s -w : \ '-I[search for packages in DIR]:includes:_path_files -/' \ '-L[show full path in file:line prints]' \ '-S[print the assembly language]' \ '-V[print the compiler version]' \ '-e[no limit on number of errors printed]' \ '-h[panic on an error]' \ '-l[disable inlining]' \ '-m[print optimization decisions]' \ '-o[file specify output file]:file' \ '-p[assumed import path for this code]:importpath' \ '-u[disable package unsafe]' \ "*:file:_files -g '*.go'" ;; [568]l) local O=${words[3]%l} _arguments -s -w : \ '-o[file specify output file]:file' \ '-L[search for packages in DIR]:includes:_path_files -/' \ "*:file:_files -g '*.[ao$O]'" ;; dist) _values "dist tool" banner bootstrap clean env install version ;; *) # use files by default _files ;; esac ;; esac } compdef __go_tool_complete go �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/robots.txt���������������������������������������������������������������������������������������0100644�0000000�0000000�00000000032�12412656734�013540� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������User-agent: * Disallow: / ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src����������������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656740�012204� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/Make.dist������������������������������������������������������������������������������������0100644�0000000�0000000�00000001051�12412656734�014022� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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. # Run go tool dist to install a command. # The -v causes dist to print the name of each directory as it runs. # The -vv causes dist to print each build command as it runs. # go tool dist clean cleans all directories, not just this one, # but it's as close as we can get. # Default target (first). install: go tool dist install -v verbose: go tool dist install -vv clean: go tool dist clean ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/all.bash�������������������������������������������������������������������������������������0100755�0000000�0000000�00000000627�12412656734�013702� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env bash # Copyright 2009 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. set -e if [ ! -f make.bash ]; then echo 'all.bash must be run from $GOROOT/src' 1>&2 exit 1 fi OLDPATH="$PATH" . ./make.bash "$@" --no-banner bash run.bash --no-rebuild PATH="$OLDPATH" $GOTOOLDIR/dist banner # print build info ���������������������������������������������������������������������������������������������������������go/src/all.bat��������������������������������������������������������������������������������������0100644�0000000�0000000�00000001326�12412656734�013525� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������:: 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. @echo off setlocal if exist make.bat goto ok echo all.bat must be run from go\src :: cannot exit: would kill parent command interpreter goto end :ok set OLDPATH=%PATH% call make.bat --no-banner --no-local if %GOBUILDFAIL%==1 goto end call run.bat --no-rebuild --no-local if %GOBUILDFAIL%==1 goto end :: we must restore %PATH% before running "dist banner" so that the latter :: can get the original %PATH% and give suggestion to add %GOROOT%/bin :: to %PATH% if necessary. set PATH=%OLDPATH% "%GOTOOLDIR%/dist" banner :end if x%GOBUILDEXIT%==x1 exit %GOBUILDFAIL% ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/all.rc���������������������������������������������������������������������������������������0100755�0000000�0000000�00000000601�12412656734�013361� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/rc -e # 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. rfork n if(! test -f make.rc){ echo 'all.rc must be run from $GOROOT/src' >[1=2] exit wrongdir } . ./make.rc --no-banner bind -b $GOROOT/bin /bin ./run.rc --no-rebuild $GOTOOLDIR/dist banner # print build info �������������������������������������������������������������������������������������������������������������������������������go/src/clean.bash�����������������������������������������������������������������������������������0100755�0000000�0000000�00000000552�12412656734�014211� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env bash # Copyright 2009 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. set -e eval $(go tool dist env) if [ ! -x $GOTOOLDIR/dist ]; then echo 'cannot find $GOTOOLDIR/dist; nothing to clean' >&2 exit 1 fi "$GOBIN/go" clean -i std $GOTOOLDIR/dist clean ������������������������������������������������������������������������������������������������������������������������������������������������������go/src/clean.bat������������������������������������������������������������������������������������0100644�0000000�0000000�00000001023�12412656734�014031� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������:: 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. @echo off setlocal set GOBUILDFAIL=0 go tool dist env -wp >env.bat if errorlevel 1 goto fail call env.bat del env.bat echo. if exist %GOTOOLDIR%\dist.exe goto distok echo cannot find %GOTOOLDIR%\dist; nothing to clean goto fail :distok "%GOBIN%\go" clean -i std %GOTOOLDIR%\dist clean goto end :fail set GOBUILDFAIL=1 :end if x%GOBUILDEXIT%==x1 exit %GOBUILDFAIL% �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/clean.rc�������������������������������������������������������������������������������������0100755�0000000�0000000�00000000541�12412656734�013676� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/rc -e # 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. eval `{go tool dist env -9} if(! test -x $GOTOOLDIR/dist){ echo 'cannot find $GOTOOLDIR/dist; nothing to clean' >[1=2] exit noclean } $GOBIN/go clean -i std $GOTOOLDIR/dist clean ���������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd������������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�012755� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5a���������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013262� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5a/Makefile������������������������������������������������������������������������������0100644�0000000�0000000�00000000405�12412656734�014772� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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. include ../../Make.dist install: y.tab.h y.tab.h: a.y LANG=C LANGUAGE=en_US.UTF8 bison -d -v -y a.y �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5a/a.h�����������������������������������������������������������������������������������0100644�0000000�0000000�00000007576�12412656734�013743� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5a/a.h // http://code.google.com/p/inferno-os/source/browse/utils/5a/a.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "../5l/5.out.h" #ifndef EXTERN #define EXTERN extern #endif #undef getc #undef ungetc #undef BUFSIZ #define getc ccgetc #define ungetc ccungetc typedef struct Sym Sym; typedef struct Io Io; #define MAXALIGN 7 #define FPCHIP 1 #define NSYMB 8192 #define BUFSIZ 8192 #define HISTSZ 20 #ifndef EOF #define EOF (-1) #endif #define IGN (-2) #define GETC() ((--fi.c < 0)? filbuf(): *fi.p++ & 0xff) #define NHASH 503 #define STRINGSZ 200 #define NMACRO 10 struct Sym { Sym* link; char* macro; int32 value; ushort type; char *name; char sym; }; #define S ((Sym*)0) EXTERN struct { char* p; int c; } fi; struct Io { Io* link; char b[BUFSIZ]; char* p; short c; short f; }; #define I ((Io*)0) enum { CLAST, CMACARG, CMACRO, CPREPROC, Always = 14, }; EXTERN int debug[256]; EXTERN Sym* hash[NHASH]; EXTERN char** Dlist; EXTERN int nDlist; EXTERN int newflag; EXTERN char* hunk; EXTERN char** include; EXTERN Io* iofree; EXTERN Io* ionext; EXTERN Io* iostack; EXTERN int32 lineno; EXTERN int nerrors; EXTERN int32 nhunk; EXTERN int ninclude; EXTERN int32 nsymb; EXTERN Addr nullgen; EXTERN char* outfile; EXTERN int pass; EXTERN int32 pc; EXTERN int peekc; EXTERN int32 stmtline; EXTERN int sym; EXTERN char* symb; EXTERN int thechar; EXTERN char* thestring; EXTERN int32 thunk; EXTERN Biobuf obuf; EXTERN Link* ctxt; EXTERN Biobuf bstdout; void* alloc(int32); void* allocn(void*, int32, int32); void ensuresymb(int32); void errorexit(void); void pushio(void); void newio(void); void newfile(char*, int); Sym* slookup(char*); Sym* lookup(void); void syminit(Sym*); int32 yylex(void); int getc(void); int getnsc(void); void unget(int); int escchar(int); void cinit(void); void pinit(char*); void cclean(void); int isreg(Addr*); void outcode(int, int, Addr*, int, Addr*); int filbuf(void); Sym* getsym(void); void domacro(void); void macund(void); void macdef(void); void macexpand(Sym*, char*); void macinc(void); void maclin(void); void macprag(void); void macif(int); void macend(void); void dodefine(char*); void prfile(int32); void linehist(char*, int); void gethunk(void); void yyerror(char*, ...); int yyparse(void); void setinclude(char*); int assemble(char*); void listinit(void); ����������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5a/a.y�����������������������������������������������������������������������������������0100644�0000000�0000000�00000026316�12412656737�013760� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5a/a.y // http://code.google.com/p/inferno-os/source/browse/utils/5a/a.y // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. %{ #include #include /* if we don't, bison will, and a.h re-#defines getc */ #include #include "a.h" #include "../../pkg/runtime/funcdata.h" %} %union { Sym *sym; int32 lval; double dval; char sval[8]; Addr addr; } %left '|' %left '^' %left '&' %left '<' '>' %left '+' '-' %left '*' '/' '%' %token LTYPE1 LTYPE2 LTYPE3 LTYPE4 LTYPE5 %token LTYPE6 LTYPE7 LTYPE8 LTYPE9 LTYPEA %token LTYPEB LTYPEC LTYPED LTYPEE %token LTYPEG LTYPEH LTYPEI LTYPEJ LTYPEK %token LTYPEL LTYPEM LTYPEN LTYPEBX LTYPEPLD %token LCONST LSP LSB LFP LPC %token LTYPEX LTYPEPC LTYPEF LR LREG LF LFREG LC LCREG LPSR LFCR %token LCOND LS LAT %token LFCONST %token LSCONST %token LNAME LLAB LVAR %type con expr oexpr pointer offset sreg spreg creg %type rcon cond reglist %type gen rel reg regreg freg shift fcon frcon %type imm ximm name oreg ireg nireg ioreg imsr %% prog: | prog { stmtline = lineno; } line line: LLAB ':' { if($1->value != pc) yyerror("redeclaration of %s", $1->name); $1->value = pc; } line | LNAME ':' { $1->type = LLAB; $1->value = pc; } line | LNAME '=' expr ';' { $1->type = LVAR; $1->value = $3; } | LVAR '=' expr ';' { if($1->value != $3) yyerror("redeclaration of %s", $1->name); $1->value = $3; } | ';' | inst ';' | error ';' inst: /* * ADD */ LTYPE1 cond imsr ',' spreg ',' reg { outcode($1, $2, &$3, $5, &$7); } | LTYPE1 cond imsr ',' spreg ',' { outcode($1, $2, &$3, $5, &nullgen); } | LTYPE1 cond imsr ',' reg { outcode($1, $2, &$3, NREG, &$5); } /* * MVN */ | LTYPE2 cond imsr ',' reg { outcode($1, $2, &$3, NREG, &$5); } /* * MOVW */ | LTYPE3 cond gen ',' gen { outcode($1, $2, &$3, NREG, &$5); } /* * B/BL */ | LTYPE4 cond comma rel { outcode($1, $2, &nullgen, NREG, &$4); } | LTYPE4 cond comma nireg { outcode($1, $2, &nullgen, NREG, &$4); } /* * BX */ | LTYPEBX comma ireg { outcode($1, Always, &nullgen, NREG, &$3); } /* * BEQ */ | LTYPE5 comma rel { outcode($1, Always, &nullgen, NREG, &$3); } /* * SWI */ | LTYPE6 cond comma gen { outcode($1, $2, &nullgen, NREG, &$4); } /* * CMP */ | LTYPE7 cond imsr ',' spreg comma { outcode($1, $2, &$3, $5, &nullgen); } /* * MOVM */ | LTYPE8 cond ioreg ',' '[' reglist ']' { Addr g; g = nullgen; g.type = D_CONST; g.offset = $6; outcode($1, $2, &$3, NREG, &g); } | LTYPE8 cond '[' reglist ']' ',' ioreg { Addr g; g = nullgen; g.type = D_CONST; g.offset = $4; outcode($1, $2, &g, NREG, &$7); } /* * SWAP */ | LTYPE9 cond reg ',' ireg ',' reg { outcode($1, $2, &$5, $3.reg, &$7); } | LTYPE9 cond reg ',' ireg comma { outcode($1, $2, &$5, $3.reg, &$3); } | LTYPE9 cond comma ireg ',' reg { outcode($1, $2, &$4, $6.reg, &$6); } /* * RET */ | LTYPEA cond comma { outcode($1, $2, &nullgen, NREG, &nullgen); } /* * TEXT/GLOBL */ | LTYPEB name ',' imm { $4.type = D_CONST2; $4.offset2 = ArgsSizeUnknown; outcode($1, Always, &$2, 0, &$4); } | LTYPEB name ',' con ',' imm { $6.type = D_CONST2; $6.offset2 = ArgsSizeUnknown; outcode($1, Always, &$2, $4, &$6); } | LTYPEB name ',' con ',' imm '-' con { $6.type = D_CONST2; $6.offset2 = $8; outcode($1, Always, &$2, $4, &$6); } /* * DATA */ | LTYPEC name '/' con ',' ximm { outcode($1, Always, &$2, $4, &$6); } /* * CASE */ | LTYPED cond reg comma { outcode($1, $2, &$3, NREG, &nullgen); } /* * word */ | LTYPEH comma ximm { outcode($1, Always, &nullgen, NREG, &$3); } /* * floating-point coprocessor */ | LTYPEI cond freg ',' freg { outcode($1, $2, &$3, NREG, &$5); } | LTYPEK cond frcon ',' freg { outcode($1, $2, &$3, NREG, &$5); } | LTYPEK cond frcon ',' LFREG ',' freg { outcode($1, $2, &$3, $5, &$7); } | LTYPEL cond freg ',' freg comma { outcode($1, $2, &$3, $5.reg, &nullgen); } /* * MCR MRC */ | LTYPEJ cond con ',' expr ',' spreg ',' creg ',' creg oexpr { Addr g; g = nullgen; g.type = D_CONST; g.offset = (0xe << 24) | /* opcode */ ($1 << 20) | /* MCR/MRC */ ($2 << 28) | /* scond */ (($3 & 15) << 8) | /* coprocessor number */ (($5 & 7) << 21) | /* coprocessor operation */ (($7 & 15) << 12) | /* arm register */ (($9 & 15) << 16) | /* Crn */ (($11 & 15) << 0) | /* Crm */ (($12 & 7) << 5) | /* coprocessor information */ (1<<4); /* must be set */ outcode(AMRC, Always, &nullgen, NREG, &g); } /* * MULL r1,r2,(hi,lo) */ | LTYPEM cond reg ',' reg ',' regreg { outcode($1, $2, &$3, $5.reg, &$7); } /* * MULA r1,r2,r3,r4: (r1*r2+r3) & 0xffffffff -> r4 * MULAW{T,B} r1,r2,r3,r4 */ | LTYPEN cond reg ',' reg ',' reg ',' spreg { $7.type = D_REGREG2; $7.offset = $9; outcode($1, $2, &$3, $5.reg, &$7); } /* * PLD */ | LTYPEPLD oreg { outcode($1, Always, &$2, NREG, &nullgen); } /* * PCDATA */ | LTYPEPC gen ',' gen { if($2.type != D_CONST || $4.type != D_CONST) yyerror("arguments to PCDATA must be integer constants"); outcode($1, Always, &$2, NREG, &$4); } /* * FUNCDATA */ | LTYPEF gen ',' gen { if($2.type != D_CONST) yyerror("index for FUNCDATA must be integer constant"); if($4.type != D_EXTERN && $4.type != D_STATIC && $4.type != D_OREG) yyerror("value for FUNCDATA must be symbol reference"); outcode($1, Always, &$2, NREG, &$4); } /* * END */ | LTYPEE comma { outcode($1, Always, &nullgen, NREG, &nullgen); } cond: { $$ = Always; } | cond LCOND { $$ = ($1 & ~C_SCOND) | $2; } | cond LS { $$ = $1 | $2; } comma: | ',' comma rel: con '(' LPC ')' { $$ = nullgen; $$.type = D_BRANCH; $$.offset = $1 + pc; } | LNAME offset { $$ = nullgen; if(pass == 2) yyerror("undefined label: %s", $1->name); $$.type = D_BRANCH; $$.offset = $2; } | LLAB offset { $$ = nullgen; $$.type = D_BRANCH; $$.offset = $1->value + $2; } ximm: '$' con { $$ = nullgen; $$.type = D_CONST; $$.offset = $2; } | '$' oreg { $$ = $2; $$.type = D_CONST; } | '$' '*' '$' oreg { $$ = $4; $$.type = D_OCONST; } | '$' LSCONST { $$ = nullgen; $$.type = D_SCONST; memcpy($$.u.sval, $2, sizeof($$.u.sval)); } | fcon fcon: '$' LFCONST { $$ = nullgen; $$.type = D_FCONST; $$.u.dval = $2; } | '$' '-' LFCONST { $$ = nullgen; $$.type = D_FCONST; $$.u.dval = -$3; } reglist: spreg { $$ = 1 << $1; } | spreg '-' spreg { int i; $$=0; for(i=$1; i<=$3; i++) $$ |= 1<' '>' rcon { $$ = nullgen; $$.type = D_SHIFT; $$.offset = $1 | $4 | (1 << 5); } | spreg '-' '>' rcon { $$ = nullgen; $$.type = D_SHIFT; $$.offset = $1 | $4 | (2 << 5); } | spreg LAT '>' rcon { $$ = nullgen; $$.type = D_SHIFT; $$.offset = $1 | $4 | (3 << 5); } rcon: spreg { if($$ < 0 || $$ >= 16) print("register value out of range\n"); $$ = (($1&15) << 8) | (1 << 4); } | con { if($$ < 0 || $$ >= 32) print("shift value out of range\n"); $$ = ($1&31) << 7; } sreg: LREG | LPC { $$ = REGPC; } | LR '(' expr ')' { if($3 < 0 || $3 >= NREG) print("register value out of range\n"); $$ = $3; } spreg: sreg | LSP { $$ = REGSP; } creg: LCREG | LC '(' expr ')' { if($3 < 0 || $3 >= NREG) print("register value out of range\n"); $$ = $3; } frcon: freg | fcon freg: LFREG { $$ = nullgen; $$.type = D_FREG; $$.reg = $1; } | LF '(' con ')' { $$ = nullgen; $$.type = D_FREG; $$.reg = $3; } name: con '(' pointer ')' { $$ = nullgen; $$.type = D_OREG; $$.name = $3; $$.sym = nil; $$.offset = $1; } | LNAME offset '(' pointer ')' { $$ = nullgen; $$.type = D_OREG; $$.name = $4; $$.sym = linklookup(ctxt, $1->name, 0); $$.offset = $2; } | LNAME '<' '>' offset '(' LSB ')' { $$ = nullgen; $$.type = D_OREG; $$.name = D_STATIC; $$.sym = linklookup(ctxt, $1->name, 1); $$.offset = $4; } offset: { $$ = 0; } | '+' con { $$ = $2; } | '-' con { $$ = -$2; } pointer: LSB | LSP | LFP con: LCONST | LVAR { $$ = $1->value; } | '-' con { $$ = -$2; } | '+' con { $$ = $2; } | '~' con { $$ = ~$2; } | '(' expr ')' { $$ = $2; } oexpr: { $$ = 0; } | ',' expr { $$ = $2; } expr: con | expr '+' expr { $$ = $1 + $3; } | expr '-' expr { $$ = $1 - $3; } | expr '*' expr { $$ = $1 * $3; } | expr '/' expr { $$ = $1 / $3; } | expr '%' expr { $$ = $1 % $3; } | expr '<' '<' expr { $$ = $1 << $4; } | expr '>' '>' expr { $$ = $1 >> $4; } | expr '&' expr { $$ = $1 & $3; } | expr '^' expr { $$ = $1 ^ $3; } | expr '|' expr { $$ = $1 | $3; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5a/doc.go��������������������������������������������������������������������������������0100644�0000000�0000000�00000000722�12412656734�014430� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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 ignore /* 5a is a version of the Plan 9 assembler. The original is documented at http://plan9.bell-labs.com/magic/man2html/1/8a Go-specific considerations are documented at http://golang.org/doc/asm Its target architecture is the ARM, referred to by these tools as arm. */ package main ����������������������������������������������go/src/cmd/5a/lex.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000024215�12412656737�014276� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5a/lex.c // http://code.google.com/p/inferno-os/source/browse/utils/5a/lex.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #define EXTERN #include #include #include "a.h" #include "y.tab.h" enum { Plan9 = 1<<0, Unix = 1<<1, Windows = 1<<2, }; int systemtype(int sys) { #ifdef _WIN32 return sys&Windows; #else return sys&Plan9; #endif } int Lconv(Fmt *fp) { return linklinefmt(ctxt, fp); } void dodef(char *p) { if(nDlist%8 == 0) Dlist = allocn(Dlist, nDlist*sizeof(char *), 8*sizeof(char *)); Dlist[nDlist++] = p; } void usage(void) { print("usage: %ca [options] file.c...\n", thechar); flagprint(1); errorexit(); } void main(int argc, char *argv[]) { char *p; thechar = '5'; thestring = "arm"; ctxt = linknew(&linkarm); ctxt->diag = yyerror; ctxt->bso = &bstdout; Binit(&bstdout, 1, OWRITE); listinit5(); fmtinstall('L', Lconv); // Allow GOARCH=thestring or GOARCH=thestringsuffix, // but not other values. p = getgoarch(); if(strncmp(p, thestring, strlen(thestring)) != 0) sysfatal("cannot use %cc with GOARCH=%s", thechar, p); ensuresymb(NSYMB); memset(debug, 0, sizeof(debug)); cinit(); outfile = 0; setinclude("."); flagfn1("D", "name[=value]: add #define", dodef); flagfn1("I", "dir: add dir to include path", setinclude); flagcount("S", "print assembly and machine code", &debug['S']); flagcount("m", "debug preprocessor macros", &debug['m']); flagstr("o", "file: set output file", &outfile); flagstr("trimpath", "prefix: remove prefix from recorded source file paths", &ctxt->trimpath); flagparse(&argc, &argv, usage); ctxt->debugasm = debug['S']; if(argc < 1) usage(); if(argc > 1){ print("can't assemble multiple files\n"); errorexit(); } if(assemble(argv[0])) errorexit(); Bflush(&bstdout); exits(0); } int assemble(char *file) { char *ofile, *p; int i, of; ofile = alloc(strlen(file)+3); // +3 for .x\0 (x=thechar) strcpy(ofile, file); p = utfrrune(ofile, '/'); if(p) { include[0] = ofile; *p++ = 0; } else p = ofile; if(outfile == 0) { outfile = p; if(outfile){ p = utfrrune(outfile, '.'); if(p) if(p[1] == 's' && p[2] == 0) p[0] = 0; p = utfrune(outfile, 0); p[0] = '.'; p[1] = thechar; p[2] = 0; } else outfile = "/dev/null"; } of = create(outfile, OWRITE, 0664); if(of < 0) { yyerror("%ca: cannot create %s", thechar, outfile); errorexit(); } Binit(&obuf, of, OWRITE); Bprint(&obuf, "go object %s %s %s\n", getgoos(), getgoarch(), getgoversion()); Bprint(&obuf, "!\n"); for(pass = 1; pass <= 2; pass++) { pinit(file); for(i=0; itype = itab[i].type; s->value = itab[i].value; } } void syminit(Sym *s) { s->type = LNAME; s->value = 0; } int isreg(Addr *g) { USED(g); return 1; } void cclean(void) { outcode(AEND, Always, &nullgen, NREG, &nullgen); } static int bcode[] = { ABEQ, ABNE, ABCS, ABCC, ABMI, ABPL, ABVS, ABVC, ABHI, ABLS, ABGE, ABLT, ABGT, ABLE, AB, ANOP, }; static Prog *lastpc; void outcode(int a, int scond, Addr *g1, int reg, Addr *g2) { Prog *p; Plist *pl; /* hack to make B.NE etc. work: turn it into the corresponding conditional */ if(a == AB){ a = bcode[scond&0xf]; scond = (scond & ~0xf) | Always; } if(pass == 1) goto out; p = malloc(sizeof *p); memset(p, 0, sizeof *p); p->as = a; p->lineno = stmtline; p->scond = scond; p->from = *g1; p->reg = reg; p->to = *g2; p->pc = pc; if(lastpc == nil) { pl = linknewplist(ctxt); pl->firstpc = p; } else lastpc->link = p; lastpc = p; out: if(a != AGLOBL && a != ADATA) pc++; } #include "../cc/lexbody" #include "../cc/macbody" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5a/y.tab.c�������������������������������������������������������������������������������0100644�0000000�0000000�00000262225�12412656737�014530� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A Bison parser, made by GNU Bison 2.7.12-4996. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.7.12-4996" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Copy the first part of user declarations. */ /* Line 371 of yacc.c */ #line 31 "a.y" #include #include /* if we don't, bison will, and a.h re-#defines getc */ #include #include "a.h" #include "../../pkg/runtime/funcdata.h" /* Line 371 of yacc.c */ #line 76 "y.tab.c" # ifndef YY_NULL # if defined __cplusplus && 201103L <= __cplusplus # define YY_NULL nullptr # else # define YY_NULL 0 # endif # endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* In a future release of Bison, this section will be replaced by #include "y.tab.h". */ #ifndef YY_YY_Y_TAB_H_INCLUDED # define YY_YY_Y_TAB_H_INCLUDED /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int yydebug; #endif /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { LTYPE1 = 258, LTYPE2 = 259, LTYPE3 = 260, LTYPE4 = 261, LTYPE5 = 262, LTYPE6 = 263, LTYPE7 = 264, LTYPE8 = 265, LTYPE9 = 266, LTYPEA = 267, LTYPEB = 268, LTYPEC = 269, LTYPED = 270, LTYPEE = 271, LTYPEG = 272, LTYPEH = 273, LTYPEI = 274, LTYPEJ = 275, LTYPEK = 276, LTYPEL = 277, LTYPEM = 278, LTYPEN = 279, LTYPEBX = 280, LTYPEPLD = 281, LCONST = 282, LSP = 283, LSB = 284, LFP = 285, LPC = 286, LTYPEX = 287, LTYPEPC = 288, LTYPEF = 289, LR = 290, LREG = 291, LF = 292, LFREG = 293, LC = 294, LCREG = 295, LPSR = 296, LFCR = 297, LCOND = 298, LS = 299, LAT = 300, LFCONST = 301, LSCONST = 302, LNAME = 303, LLAB = 304, LVAR = 305 }; #endif /* Tokens. */ #define LTYPE1 258 #define LTYPE2 259 #define LTYPE3 260 #define LTYPE4 261 #define LTYPE5 262 #define LTYPE6 263 #define LTYPE7 264 #define LTYPE8 265 #define LTYPE9 266 #define LTYPEA 267 #define LTYPEB 268 #define LTYPEC 269 #define LTYPED 270 #define LTYPEE 271 #define LTYPEG 272 #define LTYPEH 273 #define LTYPEI 274 #define LTYPEJ 275 #define LTYPEK 276 #define LTYPEL 277 #define LTYPEM 278 #define LTYPEN 279 #define LTYPEBX 280 #define LTYPEPLD 281 #define LCONST 282 #define LSP 283 #define LSB 284 #define LFP 285 #define LPC 286 #define LTYPEX 287 #define LTYPEPC 288 #define LTYPEF 289 #define LR 290 #define LREG 291 #define LF 292 #define LFREG 293 #define LC 294 #define LCREG 295 #define LPSR 296 #define LFCR 297 #define LCOND 298 #define LS 299 #define LAT 300 #define LFCONST 301 #define LSCONST 302 #define LNAME 303 #define LLAB 304 #define LVAR 305 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { /* Line 387 of yacc.c */ #line 39 "a.y" Sym *sym; int32 lval; double dval; char sval[8]; Addr addr; /* Line 387 of yacc.c */ #line 228 "y.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE yylval; #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ #endif /* !YY_YY_Y_TAB_H_INCLUDED */ /* Copy the second part of user declarations. */ /* Line 390 of yacc.c */ #line 256 "y.tab.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ # define YY_(Msgid) Msgid # endif #endif #ifndef __attribute__ /* This feature is available in gcc versions 2.5 and later. */ # if (! defined __GNUC__ || __GNUC__ < 2 \ || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) # define __attribute__(Spec) /* empty */ # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) #else # define YYUSE(E) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(N) (N) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int yyi) #else static int YYID (yyi) int yyi; #endif { return yyi; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ while (YYID (0)) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 609 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 71 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 35 /* YYNRULES -- Number of rules. */ #define YYNRULES 133 /* YYNRULES -- Number of states. */ #define YYNSTATES 339 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 305 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 69, 12, 5, 2, 67, 68, 10, 8, 64, 9, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 61, 63, 6, 62, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 65, 2, 66, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 70, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 4, 5, 9, 10, 15, 16, 21, 26, 31, 33, 36, 39, 47, 54, 60, 66, 72, 77, 82, 86, 90, 95, 102, 110, 118, 126, 133, 140, 144, 149, 156, 165, 172, 177, 181, 187, 193, 201, 208, 221, 229, 239, 242, 247, 252, 255, 256, 259, 262, 263, 266, 271, 274, 277, 280, 283, 288, 291, 293, 296, 300, 302, 306, 310, 312, 314, 316, 321, 323, 325, 327, 329, 331, 333, 335, 339, 341, 346, 348, 353, 355, 357, 359, 361, 364, 366, 372, 377, 382, 387, 392, 394, 396, 398, 400, 405, 407, 409, 411, 416, 418, 420, 422, 427, 432, 438, 446, 447, 450, 453, 455, 457, 459, 461, 463, 466, 469, 472, 476, 477, 480, 482, 486, 490, 494, 498, 502, 507, 512, 516, 520 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { 72, 0, -1, -1, -1, 72, 73, 74, -1, -1, 59, 61, 75, 74, -1, -1, 58, 61, 76, 74, -1, 58, 62, 105, 63, -1, 60, 62, 105, 63, -1, 63, -1, 77, 63, -1, 1, 63, -1, 13, 78, 89, 64, 96, 64, 91, -1, 13, 78, 89, 64, 96, 64, -1, 13, 78, 89, 64, 91, -1, 14, 78, 89, 64, 91, -1, 15, 78, 84, 64, 84, -1, 16, 78, 79, 80, -1, 16, 78, 79, 85, -1, 35, 79, 86, -1, 17, 79, 80, -1, 18, 78, 79, 84, -1, 19, 78, 89, 64, 96, 79, -1, 20, 78, 87, 64, 65, 83, 66, -1, 20, 78, 65, 83, 66, 64, 87, -1, 21, 78, 91, 64, 86, 64, 91, -1, 21, 78, 91, 64, 86, 79, -1, 21, 78, 79, 86, 64, 91, -1, 22, 78, 79, -1, 23, 100, 64, 90, -1, 23, 100, 64, 103, 64, 90, -1, 23, 100, 64, 103, 64, 90, 9, 103, -1, 24, 100, 11, 103, 64, 81, -1, 25, 78, 91, 79, -1, 28, 79, 81, -1, 29, 78, 99, 64, 99, -1, 31, 78, 98, 64, 99, -1, 31, 78, 98, 64, 48, 64, 99, -1, 32, 78, 99, 64, 99, 79, -1, 30, 78, 103, 64, 105, 64, 96, 64, 97, 64, 97, 104, -1, 33, 78, 91, 64, 91, 64, 92, -1, 34, 78, 91, 64, 91, 64, 91, 64, 96, -1, 36, 88, -1, 43, 84, 64, 84, -1, 44, 84, 64, 84, -1, 26, 79, -1, -1, 78, 53, -1, 78, 54, -1, -1, 64, 79, -1, 103, 67, 41, 68, -1, 58, 101, -1, 59, 101, -1, 69, 103, -1, 69, 88, -1, 69, 10, 69, 88, -1, 69, 57, -1, 82, -1, 69, 56, -1, 69, 9, 56, -1, 96, -1, 96, 9, 96, -1, 96, 79, 83, -1, 91, -1, 81, -1, 93, -1, 93, 67, 96, 68, -1, 51, -1, 52, -1, 103, -1, 88, -1, 99, -1, 86, -1, 100, -1, 67, 96, 68, -1, 86, -1, 103, 67, 95, 68, -1, 100, -1, 100, 67, 95, 68, -1, 87, -1, 91, -1, 90, -1, 93, -1, 69, 103, -1, 96, -1, 67, 96, 64, 96, 68, -1, 96, 6, 6, 94, -1, 96, 7, 7, 94, -1, 96, 9, 7, 94, -1, 96, 55, 7, 94, -1, 96, -1, 103, -1, 46, -1, 41, -1, 45, 67, 105, 68, -1, 95, -1, 38, -1, 50, -1, 49, 67, 105, 68, -1, 99, -1, 82, -1, 48, -1, 47, 67, 103, 68, -1, 103, 67, 102, 68, -1, 58, 101, 67, 102, 68, -1, 58, 6, 7, 101, 67, 39, 68, -1, -1, 8, 103, -1, 9, 103, -1, 39, -1, 38, -1, 40, -1, 37, -1, 60, -1, 9, 103, -1, 8, 103, -1, 70, 103, -1, 67, 105, 68, -1, -1, 64, 105, -1, 103, -1, 105, 8, 105, -1, 105, 9, 105, -1, 105, 10, 105, -1, 105, 11, 105, -1, 105, 12, 105, -1, 105, 6, 6, 105, -1, 105, 7, 7, 105, -1, 105, 5, 105, -1, 105, 4, 105, -1, 105, 3, 105, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 68, 68, 70, 69, 77, 76, 84, 83, 89, 94, 100, 101, 102, 108, 112, 116, 123, 130, 137, 141, 148, 155, 162, 169, 176, 185, 197, 201, 205, 212, 219, 225, 231, 240, 247, 254, 261, 265, 269, 273, 280, 302, 310, 319, 326, 335, 346, 352, 355, 359, 364, 365, 368, 374, 382, 389, 395, 400, 405, 411, 414, 420, 428, 432, 441, 447, 448, 449, 450, 455, 461, 467, 473, 474, 477, 478, 486, 495, 496, 505, 506, 512, 515, 516, 517, 519, 527, 535, 544, 550, 556, 562, 570, 576, 584, 585, 589, 597, 598, 604, 605, 613, 614, 617, 623, 631, 639, 647, 657, 660, 664, 670, 671, 672, 675, 676, 680, 684, 688, 692, 698, 701, 707, 708, 712, 716, 720, 724, 728, 732, 736, 740, 744 }; #endif #if YYDEBUG || YYERROR_VERBOSE || 0 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "'|'", "'^'", "'&'", "'<'", "'>'", "'+'", "'-'", "'*'", "'/'", "'%'", "LTYPE1", "LTYPE2", "LTYPE3", "LTYPE4", "LTYPE5", "LTYPE6", "LTYPE7", "LTYPE8", "LTYPE9", "LTYPEA", "LTYPEB", "LTYPEC", "LTYPED", "LTYPEE", "LTYPEG", "LTYPEH", "LTYPEI", "LTYPEJ", "LTYPEK", "LTYPEL", "LTYPEM", "LTYPEN", "LTYPEBX", "LTYPEPLD", "LCONST", "LSP", "LSB", "LFP", "LPC", "LTYPEX", "LTYPEPC", "LTYPEF", "LR", "LREG", "LF", "LFREG", "LC", "LCREG", "LPSR", "LFCR", "LCOND", "LS", "LAT", "LFCONST", "LSCONST", "LNAME", "LLAB", "LVAR", "':'", "'='", "';'", "','", "'['", "']'", "'('", "')'", "'$'", "'~'", "$accept", "prog", "$@1", "line", "$@2", "$@3", "inst", "cond", "comma", "rel", "ximm", "fcon", "reglist", "gen", "nireg", "ireg", "ioreg", "oreg", "imsr", "imm", "reg", "regreg", "shift", "rcon", "sreg", "spreg", "creg", "frcon", "freg", "name", "offset", "pointer", "con", "oexpr", "expr", YY_NULL }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 124, 94, 38, 60, 62, 43, 45, 42, 47, 37, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 58, 61, 59, 44, 91, 93, 40, 41, 36, 126 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 71, 72, 73, 72, 75, 74, 76, 74, 74, 74, 74, 74, 74, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 78, 78, 79, 79, 80, 80, 80, 81, 81, 81, 81, 81, 82, 82, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, 85, 86, 87, 87, 88, 88, 88, 89, 89, 89, 90, 91, 92, 93, 93, 93, 93, 94, 94, 95, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 100, 101, 101, 101, 102, 102, 102, 103, 103, 103, 103, 103, 103, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 0, 3, 0, 4, 0, 4, 4, 4, 1, 2, 2, 7, 6, 5, 5, 5, 4, 4, 3, 3, 4, 6, 7, 7, 7, 6, 6, 3, 4, 6, 8, 6, 4, 3, 5, 5, 7, 6, 12, 7, 9, 2, 4, 4, 2, 0, 2, 2, 0, 2, 4, 2, 2, 2, 2, 4, 2, 1, 2, 3, 1, 3, 3, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 1, 4, 1, 1, 1, 1, 2, 1, 5, 4, 4, 4, 4, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 4, 5, 7, 0, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 3, 0, 2, 1, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. Performed when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 2, 3, 1, 0, 0, 48, 48, 48, 48, 51, 48, 48, 48, 48, 48, 0, 0, 48, 51, 51, 48, 48, 48, 48, 48, 48, 51, 0, 0, 0, 0, 0, 0, 11, 4, 0, 13, 0, 0, 0, 51, 51, 0, 51, 0, 0, 51, 51, 0, 0, 115, 109, 116, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 82, 44, 80, 0, 99, 96, 0, 95, 0, 104, 70, 71, 0, 67, 60, 0, 73, 66, 68, 98, 87, 74, 72, 0, 7, 0, 5, 0, 12, 49, 50, 0, 0, 84, 83, 85, 0, 0, 0, 52, 109, 109, 22, 0, 0, 0, 0, 0, 0, 0, 0, 87, 30, 118, 117, 0, 0, 0, 0, 123, 0, 119, 0, 0, 0, 51, 36, 0, 0, 0, 103, 0, 102, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 61, 59, 57, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 109, 19, 20, 75, 76, 0, 54, 55, 0, 23, 0, 0, 51, 0, 0, 0, 0, 109, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 31, 0, 113, 112, 114, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 62, 0, 45, 0, 0, 0, 0, 0, 46, 8, 9, 6, 10, 16, 87, 17, 18, 54, 0, 0, 51, 0, 0, 0, 0, 0, 51, 0, 0, 133, 132, 131, 0, 0, 124, 125, 126, 127, 128, 0, 106, 0, 37, 0, 104, 38, 51, 0, 0, 81, 79, 97, 105, 58, 69, 89, 93, 94, 90, 91, 92, 15, 53, 24, 0, 64, 65, 0, 29, 51, 28, 0, 107, 129, 130, 32, 34, 0, 0, 40, 0, 0, 14, 26, 25, 27, 0, 0, 0, 39, 0, 42, 0, 108, 33, 0, 0, 0, 0, 100, 0, 0, 43, 0, 0, 0, 0, 121, 88, 101, 0, 41, 122 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 3, 34, 168, 166, 35, 37, 109, 112, 83, 84, 185, 85, 176, 69, 70, 86, 102, 103, 87, 317, 88, 281, 89, 121, 326, 141, 91, 72, 128, 211, 129, 337, 130 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -128 static const yytype_int16 yypact[] = { -128, 4, -128, 315, -35, -128, -128, -128, -128, -10, -128, -128, -128, -128, -128, 44, 44, -128, -10, -10, -128, -128, -128, -128, -128, -128, -10, 416, 371, 371, -49, 9, 32, -128, -128, 38, -128, 487, 487, 344, 69, -10, 391, 69, 487, 209, 489, 69, 317, 317, -128, 49, -128, 317, 317, 42, 48, 106, 67, -128, 61, 191, 25, 93, 191, 67, 67, 68, 170, -128, -128, -128, 72, 84, -128, -128, 86, -128, 109, -128, -128, -128, 233, -128, -128, 80, -128, -128, 115, -128, 426, -128, 84, 120, -128, 317, -128, 317, -128, -128, -128, 317, 137, -128, -128, -128, 148, 155, 397, -128, 74, 74, -128, 164, 371, 204, 240, 207, 206, 68, 223, -128, -128, -128, -128, 270, 317, 317, 227, -128, 183, -128, 90, 160, 317, -10, -128, 234, 237, 16, -128, 254, -128, 255, 256, 257, 240, -128, 212, 168, 548, 317, 317, 428, 258, -128, -128, -128, 84, 371, 240, 318, 316, 335, 348, 371, 315, 502, 315, 512, -128, 240, 240, 371, 49, -128, -128, -128, -128, 289, -128, -128, 330, -128, 240, 291, 11, 307, 168, 312, 68, 74, -128, -128, 160, 317, 317, 317, 377, 379, 317, 317, 317, 317, 317, -128, -128, 324, -128, -128, -128, 325, 337, -128, 77, 317, 338, 126, 77, 240, 240, -128, 339, 342, 249, 347, -128, 416, -128, 352, 170, 170, 170, 170, -128, -128, -128, -128, -128, -128, 362, -128, -128, 227, -2, 359, -10, 366, 240, 240, 240, 240, 375, 336, 384, 562, 590, 597, 317, 317, 213, 213, -128, -128, -128, 385, -128, 61, -128, 357, 395, -128, -10, 396, 398, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, 240, -128, -128, 434, -128, -128, 400, -128, 432, -128, 424, -128, 436, 436, 459, -128, 240, 77, -128, 402, 240, -128, -128, -128, -128, 404, 317, 411, -128, 240, -128, 415, -128, -128, 216, 418, 240, 413, -128, 421, 240, -128, 317, 216, 419, 302, 425, -128, -128, 317, -128, 573 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -128, -128, -128, -77, -128, -128, -128, 538, 50, 382, -57, 429, 33, -7, -128, -48, -43, -21, 36, -127, -23, -128, 29, 17, -101, -28, 161, -128, -37, -8, -65, 299, 2, -128, -32 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -64 static const yytype_int16 yytable[] = { 90, 90, 117, 136, 2, 206, 71, 55, 57, 90, 90, 90, 94, 95, 104, 104, 90, 56, 56, 147, 248, 104, 93, 120, 137, 216, 142, 143, 36, 73, 92, 92, 107, 48, 49, 135, 208, 209, 210, 245, 148, 92, 144, 145, 113, 180, 181, 118, 222, 223, 123, 124, 48, 49, 41, 125, 131, 126, 127, 42, 177, 157, 50, 167, 138, 169, 105, 105, 59, 60, 96, 189, 155, 105, 106, 41, 67, -63, 99, 100, 115, 50, 126, 127, 158, 52, 90, 223, 186, 235, 108, 237, 53, 114, 97, 54, 119, 122, 48, 49, 178, 98, 51, 170, 52, 74, 132, 183, 75, 243, 179, 53, 76, 77, 54, 133, 92, 134, 148, 224, 99, 100, 99, 100, 78, 79, 253, 50, 192, 193, 82, 90, 229, 41, 207, 146, 212, 90, 301, 149, 78, 79, 252, 240, 159, 90, 99, 100, 239, 241, 52, 150, 228, 151, 225, 124, 246, 53, 234, 101, 54, 92, 139, 255, 256, 257, 242, 92, 260, 261, 262, 263, 264, 78, 270, 92, 152, 268, 48, 49, 271, 272, 160, 269, 165, 213, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 273, 274, 208, 209, 210, 171, 282, 282, 282, 282, 279, 50, 74, 75, 302, 75, 172, 76, 77, 76, 77, 48, 49, 173, 291, 186, 186, 202, 203, 204, 299, 300, 294, 73, 52, 182, 283, 283, 283, 283, 249, 53, 78, 79, 54, 48, 153, 154, 99, 100, 50, 309, 284, 285, 286, 205, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 99, 100, 308, 324, 325, 315, 184, 52, 50, 187, 311, 188, 116, 314, 68, 191, 74, 54, 221, 75, 292, 293, 318, 76, 77, 190, 322, 155, 156, 51, 118, 52, 194, 328, 289, 332, 214, 331, 68, 215, 296, 54, 338, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 320, 4, 277, 217, 218, 219, 220, 305, 231, 230, 48, 49, 227, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 232, 19, 20, 21, 22, 23, 24, 25, 26, 27, 48, 49, 50, 233, 244, 247, 28, 29, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 335, 245, 250, 30, 31, 32, 251, 52, 33, 48, 49, 50, 74, 258, 53, 75, 259, 54, 265, 76, 77, 78, 79, 266, 226, 80, 81, 99, 100, 48, 49, 267, 51, 297, 52, 48, 49, 275, 50, 74, 276, 68, 75, 82, 54, 278, 76, 77, 78, 79, 280, 303, 80, 81, 48, 49, 287, 288, 50, 51, 290, 52, 161, 162, 50, 163, 48, 49, 68, 295, 82, 54, 48, 49, 200, 201, 202, 203, 204, 110, 111, 52, 298, 50, 101, 174, 111, 52, 53, 304, 306, 54, 307, 312, 68, 50, 310, 54, 313, 316, 74, 50, 319, 75, 51, 321, 52, 76, 77, 323, 329, 164, 327, 68, 226, 330, 54, 334, 52, 336, 175, 333, 140, 254, 52, 53, 41, 0, 54, 0, 0, 68, 0, 0, 54, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 74, 0, 74, 75, 0, 75, 0, 76, 77, 76, 77, 0, 0, 0, 0, 99, 100, 99, 100, 38, 39, 40, 0, 43, 44, 45, 46, 47, 41, 0, 58, 101, 0, 61, 62, 63, 64, 65, 66, 0, 236, 196, 197, 198, 199, 200, 201, 202, 203, 204, 238, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 208, 209, 210, 75, 0, 0, 0, 76, 77, 197, 198, 199, 200, 201, 202, 203, 204, 198, 199, 200, 201, 202, 203, 204 }; #define yypact_value_is_default(Yystate) \ (!!((Yystate) == (-128))) #define yytable_value_is_error(Yytable_value) \ YYID (0) static const yytype_int16 yycheck[] = { 28, 29, 45, 60, 0, 132, 27, 15, 16, 37, 38, 39, 61, 62, 37, 38, 44, 15, 16, 67, 9, 44, 29, 46, 61, 9, 63, 64, 63, 27, 28, 29, 39, 8, 9, 58, 38, 39, 40, 41, 68, 39, 65, 66, 42, 110, 111, 45, 149, 150, 48, 49, 8, 9, 64, 6, 54, 8, 9, 9, 108, 82, 37, 95, 62, 97, 37, 38, 18, 19, 61, 119, 56, 44, 38, 64, 26, 66, 53, 54, 44, 37, 8, 9, 82, 60, 114, 188, 116, 166, 40, 168, 67, 43, 62, 70, 46, 47, 8, 9, 108, 63, 58, 101, 60, 38, 64, 114, 41, 174, 108, 67, 45, 46, 70, 67, 114, 11, 146, 151, 53, 54, 53, 54, 47, 48, 191, 37, 126, 127, 69, 159, 160, 64, 132, 67, 134, 165, 265, 67, 47, 48, 190, 171, 64, 173, 53, 54, 171, 172, 60, 67, 159, 67, 152, 153, 184, 67, 165, 69, 70, 159, 69, 195, 196, 197, 173, 165, 200, 201, 202, 203, 204, 47, 48, 173, 67, 214, 8, 9, 217, 218, 67, 215, 64, 135, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 219, 220, 38, 39, 40, 64, 230, 231, 232, 233, 227, 37, 38, 41, 267, 41, 64, 45, 46, 45, 46, 8, 9, 64, 248, 249, 250, 10, 11, 12, 258, 259, 251, 227, 60, 67, 230, 231, 232, 233, 186, 67, 47, 48, 70, 8, 9, 10, 53, 54, 37, 290, 231, 232, 233, 68, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 53, 54, 287, 49, 50, 304, 64, 60, 37, 64, 295, 67, 65, 303, 67, 7, 38, 70, 68, 41, 249, 250, 307, 45, 46, 64, 316, 56, 57, 58, 290, 60, 67, 323, 246, 329, 64, 327, 67, 64, 252, 70, 336, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 313, 1, 68, 64, 64, 64, 64, 272, 7, 6, 8, 9, 69, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 7, 28, 29, 30, 31, 32, 33, 34, 35, 36, 8, 9, 37, 7, 67, 66, 43, 44, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 68, 41, 65, 58, 59, 60, 64, 60, 63, 8, 9, 37, 38, 6, 67, 41, 7, 70, 64, 45, 46, 47, 48, 68, 56, 51, 52, 53, 54, 8, 9, 64, 58, 67, 60, 8, 9, 68, 37, 38, 68, 67, 41, 69, 70, 68, 45, 46, 47, 48, 68, 64, 51, 52, 8, 9, 64, 68, 37, 58, 64, 60, 6, 7, 37, 9, 8, 9, 67, 64, 69, 70, 8, 9, 8, 9, 10, 11, 12, 58, 59, 60, 68, 37, 69, 58, 59, 60, 67, 64, 64, 70, 64, 39, 67, 37, 66, 70, 9, 67, 38, 37, 68, 41, 58, 64, 60, 45, 46, 64, 67, 55, 64, 67, 56, 64, 70, 68, 60, 64, 108, 330, 63, 194, 60, 67, 64, -1, 70, -1, -1, 67, -1, -1, 70, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 38, -1, 38, 41, -1, 41, -1, 45, 46, 45, 46, -1, -1, -1, -1, 53, 54, 53, 54, 6, 7, 8, -1, 10, 11, 12, 13, 14, 64, -1, 17, 69, -1, 20, 21, 22, 23, 24, 25, -1, 63, 4, 5, 6, 7, 8, 9, 10, 11, 12, 63, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 38, 39, 40, 41, -1, -1, -1, 45, 46, 5, 6, 7, 8, 9, 10, 11, 12, 6, 7, 8, 9, 10, 11, 12 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 72, 0, 73, 1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 43, 44, 58, 59, 60, 63, 74, 77, 63, 78, 78, 78, 78, 64, 79, 78, 78, 78, 78, 78, 8, 9, 37, 58, 60, 67, 70, 100, 103, 100, 78, 79, 79, 78, 78, 78, 78, 78, 78, 79, 67, 86, 87, 88, 100, 103, 38, 41, 45, 46, 47, 48, 51, 52, 69, 81, 82, 84, 88, 91, 93, 95, 96, 99, 103, 84, 61, 62, 61, 62, 63, 53, 54, 69, 89, 90, 91, 93, 89, 84, 79, 79, 58, 59, 80, 103, 79, 89, 65, 87, 103, 79, 91, 96, 79, 103, 103, 6, 8, 9, 101, 103, 105, 103, 64, 67, 11, 91, 81, 99, 103, 69, 82, 98, 99, 99, 91, 91, 67, 86, 96, 67, 67, 67, 67, 9, 10, 56, 57, 88, 103, 64, 67, 6, 7, 9, 55, 64, 76, 105, 75, 105, 103, 64, 64, 64, 58, 80, 85, 86, 100, 103, 101, 101, 67, 84, 64, 83, 96, 64, 67, 86, 64, 7, 103, 103, 67, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 68, 90, 103, 38, 39, 40, 102, 103, 79, 64, 64, 9, 64, 64, 64, 64, 68, 95, 95, 105, 103, 56, 69, 84, 96, 6, 7, 7, 7, 84, 74, 63, 74, 63, 91, 96, 91, 84, 101, 67, 41, 96, 66, 9, 79, 65, 64, 86, 101, 102, 105, 105, 105, 6, 7, 105, 105, 105, 105, 105, 64, 68, 64, 99, 105, 48, 99, 99, 91, 91, 68, 68, 68, 68, 88, 68, 94, 96, 103, 94, 94, 94, 64, 68, 79, 64, 96, 83, 83, 91, 64, 79, 67, 68, 105, 105, 90, 81, 64, 64, 79, 64, 64, 91, 87, 66, 91, 39, 9, 96, 99, 67, 92, 91, 68, 103, 64, 96, 64, 49, 50, 97, 64, 96, 67, 64, 96, 105, 97, 68, 68, 64, 104, 105 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. However, YYFAIL appears to be in use. Nevertheless, it is formally deprecated in Bison 2.4.2's NEWS entry, where a plan to phase it out is discussed. */ #define YYFAIL goto yyerrlab #if defined YYFAIL /* This is here to suppress warnings from the GCC cpp's -Wunused-macros. Normally we don't worry about that warning, but some users do, and we want to make it easy for users to remove YYFAIL uses, which will produce warnings from Bison 2.5. */ #endif #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (yylen); \ yystate = *yyssp; \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) /* Error token number */ #define YYTERROR 1 #define YYERRCODE 256 /* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (YYLEX_PARAM) #else # define YYLEX yylex () #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { FILE *yyo = yyoutput; YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif YYUSE (yytype); } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void yy_stack_print (yybottom, yytop) yytype_int16 *yybottom; yytype_int16 *yytop; #endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule) #else static void yy_reduce_print (yyvsp, yyrule) YYSTYPE *yyvsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULL; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per "expected"). */ int yycount = 0; /* There are many possibilities here to consider: - Assume YYFAIL is not used. It's too flawed to consider. See for details. YYERROR is fine as it does not invoke this function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yytoken != YYEMPTY) { int yyn = yypact[*yyssp]; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR && !yytable_value_is_error (yytable[yyx + yyn])) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; break; } yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } } } } switch (yycount) { # define YYCASE_(N, S) \ case N: \ yyformat = S; \ break YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); # undef YYCASE_ } { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return 1; } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ { char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyformat += 2; } else { yyp++; yyformat++; } } return 0; } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void yydestruct (yymsg, yytype, yyvaluep) const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); YYUSE (yytype); } /* The lookahead symbol. */ int yychar; #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif /* The semantic value of the lookahead symbol. */ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); /* Number of syntax errors so far. */ int yynerrs; /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: `yyss': related to states. `yyvs': related to semantic values. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken = 0; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yyssp = yyss = yyssa; yyvsp = yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 3: /* Line 1787 of yacc.c */ #line 70 "a.y" { stmtline = lineno; } break; case 5: /* Line 1787 of yacc.c */ #line 77 "a.y" { if((yyvsp[(1) - (2)].sym)->value != pc) yyerror("redeclaration of %s", (yyvsp[(1) - (2)].sym)->name); (yyvsp[(1) - (2)].sym)->value = pc; } break; case 7: /* Line 1787 of yacc.c */ #line 84 "a.y" { (yyvsp[(1) - (2)].sym)->type = LLAB; (yyvsp[(1) - (2)].sym)->value = pc; } break; case 9: /* Line 1787 of yacc.c */ #line 90 "a.y" { (yyvsp[(1) - (4)].sym)->type = LVAR; (yyvsp[(1) - (4)].sym)->value = (yyvsp[(3) - (4)].lval); } break; case 10: /* Line 1787 of yacc.c */ #line 95 "a.y" { if((yyvsp[(1) - (4)].sym)->value != (yyvsp[(3) - (4)].lval)) yyerror("redeclaration of %s", (yyvsp[(1) - (4)].sym)->name); (yyvsp[(1) - (4)].sym)->value = (yyvsp[(3) - (4)].lval); } break; case 14: /* Line 1787 of yacc.c */ #line 109 "a.y" { outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].addr), (yyvsp[(5) - (7)].lval), &(yyvsp[(7) - (7)].addr)); } break; case 15: /* Line 1787 of yacc.c */ #line 113 "a.y" { outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].addr), (yyvsp[(5) - (6)].lval), &nullgen); } break; case 16: /* Line 1787 of yacc.c */ #line 117 "a.y" { outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); } break; case 17: /* Line 1787 of yacc.c */ #line 124 "a.y" { outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); } break; case 18: /* Line 1787 of yacc.c */ #line 131 "a.y" { outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); } break; case 19: /* Line 1787 of yacc.c */ #line 138 "a.y" { outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].addr)); } break; case 20: /* Line 1787 of yacc.c */ #line 142 "a.y" { outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].addr)); } break; case 21: /* Line 1787 of yacc.c */ #line 149 "a.y" { outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].addr)); } break; case 22: /* Line 1787 of yacc.c */ #line 156 "a.y" { outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].addr)); } break; case 23: /* Line 1787 of yacc.c */ #line 163 "a.y" { outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &nullgen, NREG, &(yyvsp[(4) - (4)].addr)); } break; case 24: /* Line 1787 of yacc.c */ #line 170 "a.y" { outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].addr), (yyvsp[(5) - (6)].lval), &nullgen); } break; case 25: /* Line 1787 of yacc.c */ #line 177 "a.y" { Addr g; g = nullgen; g.type = D_CONST; g.offset = (yyvsp[(6) - (7)].lval); outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].addr), NREG, &g); } break; case 26: /* Line 1787 of yacc.c */ #line 186 "a.y" { Addr g; g = nullgen; g.type = D_CONST; g.offset = (yyvsp[(4) - (7)].lval); outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &g, NREG, &(yyvsp[(7) - (7)].addr)); } break; case 27: /* Line 1787 of yacc.c */ #line 198 "a.y" { outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(5) - (7)].addr), (yyvsp[(3) - (7)].addr).reg, &(yyvsp[(7) - (7)].addr)); } break; case 28: /* Line 1787 of yacc.c */ #line 202 "a.y" { outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(5) - (6)].addr), (yyvsp[(3) - (6)].addr).reg, &(yyvsp[(3) - (6)].addr)); } break; case 29: /* Line 1787 of yacc.c */ #line 206 "a.y" { outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(4) - (6)].addr), (yyvsp[(6) - (6)].addr).reg, &(yyvsp[(6) - (6)].addr)); } break; case 30: /* Line 1787 of yacc.c */ #line 213 "a.y" { outcode((yyvsp[(1) - (3)].lval), (yyvsp[(2) - (3)].lval), &nullgen, NREG, &nullgen); } break; case 31: /* Line 1787 of yacc.c */ #line 220 "a.y" { (yyvsp[(4) - (4)].addr).type = D_CONST2; (yyvsp[(4) - (4)].addr).offset2 = ArgsSizeUnknown; outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr)); } break; case 32: /* Line 1787 of yacc.c */ #line 226 "a.y" { (yyvsp[(6) - (6)].addr).type = D_CONST2; (yyvsp[(6) - (6)].addr).offset2 = ArgsSizeUnknown; outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); } break; case 33: /* Line 1787 of yacc.c */ #line 232 "a.y" { (yyvsp[(6) - (8)].addr).type = D_CONST2; (yyvsp[(6) - (8)].addr).offset2 = (yyvsp[(8) - (8)].lval); outcode((yyvsp[(1) - (8)].lval), Always, &(yyvsp[(2) - (8)].addr), (yyvsp[(4) - (8)].lval), &(yyvsp[(6) - (8)].addr)); } break; case 34: /* Line 1787 of yacc.c */ #line 241 "a.y" { outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr)); } break; case 35: /* Line 1787 of yacc.c */ #line 248 "a.y" { outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &(yyvsp[(3) - (4)].addr), NREG, &nullgen); } break; case 36: /* Line 1787 of yacc.c */ #line 255 "a.y" { outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, NREG, &(yyvsp[(3) - (3)].addr)); } break; case 37: /* Line 1787 of yacc.c */ #line 262 "a.y" { outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); } break; case 38: /* Line 1787 of yacc.c */ #line 266 "a.y" { outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), NREG, &(yyvsp[(5) - (5)].addr)); } break; case 39: /* Line 1787 of yacc.c */ #line 270 "a.y" { outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].addr), (yyvsp[(5) - (7)].lval), &(yyvsp[(7) - (7)].addr)); } break; case 40: /* Line 1787 of yacc.c */ #line 274 "a.y" { outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].addr), (yyvsp[(5) - (6)].addr).reg, &nullgen); } break; case 41: /* Line 1787 of yacc.c */ #line 281 "a.y" { Addr g; g = nullgen; g.type = D_CONST; g.offset = (0xe << 24) | /* opcode */ ((yyvsp[(1) - (12)].lval) << 20) | /* MCR/MRC */ ((yyvsp[(2) - (12)].lval) << 28) | /* scond */ (((yyvsp[(3) - (12)].lval) & 15) << 8) | /* coprocessor number */ (((yyvsp[(5) - (12)].lval) & 7) << 21) | /* coprocessor operation */ (((yyvsp[(7) - (12)].lval) & 15) << 12) | /* arm register */ (((yyvsp[(9) - (12)].lval) & 15) << 16) | /* Crn */ (((yyvsp[(11) - (12)].lval) & 15) << 0) | /* Crm */ (((yyvsp[(12) - (12)].lval) & 7) << 5) | /* coprocessor information */ (1<<4); /* must be set */ outcode(AMRC, Always, &nullgen, NREG, &g); } break; case 42: /* Line 1787 of yacc.c */ #line 303 "a.y" { outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].addr), (yyvsp[(5) - (7)].addr).reg, &(yyvsp[(7) - (7)].addr)); } break; case 43: /* Line 1787 of yacc.c */ #line 311 "a.y" { (yyvsp[(7) - (9)].addr).type = D_REGREG2; (yyvsp[(7) - (9)].addr).offset = (yyvsp[(9) - (9)].lval); outcode((yyvsp[(1) - (9)].lval), (yyvsp[(2) - (9)].lval), &(yyvsp[(3) - (9)].addr), (yyvsp[(5) - (9)].addr).reg, &(yyvsp[(7) - (9)].addr)); } break; case 44: /* Line 1787 of yacc.c */ #line 320 "a.y" { outcode((yyvsp[(1) - (2)].lval), Always, &(yyvsp[(2) - (2)].addr), NREG, &nullgen); } break; case 45: /* Line 1787 of yacc.c */ #line 327 "a.y" { if((yyvsp[(2) - (4)].addr).type != D_CONST || (yyvsp[(4) - (4)].addr).type != D_CONST) yyerror("arguments to PCDATA must be integer constants"); outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].addr), NREG, &(yyvsp[(4) - (4)].addr)); } break; case 46: /* Line 1787 of yacc.c */ #line 336 "a.y" { if((yyvsp[(2) - (4)].addr).type != D_CONST) yyerror("index for FUNCDATA must be integer constant"); if((yyvsp[(4) - (4)].addr).type != D_EXTERN && (yyvsp[(4) - (4)].addr).type != D_STATIC && (yyvsp[(4) - (4)].addr).type != D_OREG) yyerror("value for FUNCDATA must be symbol reference"); outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].addr), NREG, &(yyvsp[(4) - (4)].addr)); } break; case 47: /* Line 1787 of yacc.c */ #line 347 "a.y" { outcode((yyvsp[(1) - (2)].lval), Always, &nullgen, NREG, &nullgen); } break; case 48: /* Line 1787 of yacc.c */ #line 352 "a.y" { (yyval.lval) = Always; } break; case 49: /* Line 1787 of yacc.c */ #line 356 "a.y" { (yyval.lval) = ((yyvsp[(1) - (2)].lval) & ~C_SCOND) | (yyvsp[(2) - (2)].lval); } break; case 50: /* Line 1787 of yacc.c */ #line 360 "a.y" { (yyval.lval) = (yyvsp[(1) - (2)].lval) | (yyvsp[(2) - (2)].lval); } break; case 53: /* Line 1787 of yacc.c */ #line 369 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_BRANCH; (yyval.addr).offset = (yyvsp[(1) - (4)].lval) + pc; } break; case 54: /* Line 1787 of yacc.c */ #line 375 "a.y" { (yyval.addr) = nullgen; if(pass == 2) yyerror("undefined label: %s", (yyvsp[(1) - (2)].sym)->name); (yyval.addr).type = D_BRANCH; (yyval.addr).offset = (yyvsp[(2) - (2)].lval); } break; case 55: /* Line 1787 of yacc.c */ #line 383 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_BRANCH; (yyval.addr).offset = (yyvsp[(1) - (2)].sym)->value + (yyvsp[(2) - (2)].lval); } break; case 56: /* Line 1787 of yacc.c */ #line 390 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_CONST; (yyval.addr).offset = (yyvsp[(2) - (2)].lval); } break; case 57: /* Line 1787 of yacc.c */ #line 396 "a.y" { (yyval.addr) = (yyvsp[(2) - (2)].addr); (yyval.addr).type = D_CONST; } break; case 58: /* Line 1787 of yacc.c */ #line 401 "a.y" { (yyval.addr) = (yyvsp[(4) - (4)].addr); (yyval.addr).type = D_OCONST; } break; case 59: /* Line 1787 of yacc.c */ #line 406 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_SCONST; memcpy((yyval.addr).u.sval, (yyvsp[(2) - (2)].sval), sizeof((yyval.addr).u.sval)); } break; case 61: /* Line 1787 of yacc.c */ #line 415 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_FCONST; (yyval.addr).u.dval = (yyvsp[(2) - (2)].dval); } break; case 62: /* Line 1787 of yacc.c */ #line 421 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_FCONST; (yyval.addr).u.dval = -(yyvsp[(3) - (3)].dval); } break; case 63: /* Line 1787 of yacc.c */ #line 429 "a.y" { (yyval.lval) = 1 << (yyvsp[(1) - (1)].lval); } break; case 64: /* Line 1787 of yacc.c */ #line 433 "a.y" { int i; (yyval.lval)=0; for(i=(yyvsp[(1) - (3)].lval); i<=(yyvsp[(3) - (3)].lval); i++) (yyval.lval) |= 1<= 16) print("register value out of range\n"); (yyval.lval) = (((yyvsp[(1) - (1)].lval)&15) << 8) | (1 << 4); } break; case 94: /* Line 1787 of yacc.c */ #line 577 "a.y" { if((yyval.lval) < 0 || (yyval.lval) >= 32) print("shift value out of range\n"); (yyval.lval) = ((yyvsp[(1) - (1)].lval)&31) << 7; } break; case 96: /* Line 1787 of yacc.c */ #line 586 "a.y" { (yyval.lval) = REGPC; } break; case 97: /* Line 1787 of yacc.c */ #line 590 "a.y" { if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= NREG) print("register value out of range\n"); (yyval.lval) = (yyvsp[(3) - (4)].lval); } break; case 99: /* Line 1787 of yacc.c */ #line 599 "a.y" { (yyval.lval) = REGSP; } break; case 101: /* Line 1787 of yacc.c */ #line 606 "a.y" { if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= NREG) print("register value out of range\n"); (yyval.lval) = (yyvsp[(3) - (4)].lval); } break; case 104: /* Line 1787 of yacc.c */ #line 618 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_FREG; (yyval.addr).reg = (yyvsp[(1) - (1)].lval); } break; case 105: /* Line 1787 of yacc.c */ #line 624 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_FREG; (yyval.addr).reg = (yyvsp[(3) - (4)].lval); } break; case 106: /* Line 1787 of yacc.c */ #line 632 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_OREG; (yyval.addr).name = (yyvsp[(3) - (4)].lval); (yyval.addr).sym = nil; (yyval.addr).offset = (yyvsp[(1) - (4)].lval); } break; case 107: /* Line 1787 of yacc.c */ #line 640 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_OREG; (yyval.addr).name = (yyvsp[(4) - (5)].lval); (yyval.addr).sym = linklookup(ctxt, (yyvsp[(1) - (5)].sym)->name, 0); (yyval.addr).offset = (yyvsp[(2) - (5)].lval); } break; case 108: /* Line 1787 of yacc.c */ #line 648 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_OREG; (yyval.addr).name = D_STATIC; (yyval.addr).sym = linklookup(ctxt, (yyvsp[(1) - (7)].sym)->name, 1); (yyval.addr).offset = (yyvsp[(4) - (7)].lval); } break; case 109: /* Line 1787 of yacc.c */ #line 657 "a.y" { (yyval.lval) = 0; } break; case 110: /* Line 1787 of yacc.c */ #line 661 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; case 111: /* Line 1787 of yacc.c */ #line 665 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; case 116: /* Line 1787 of yacc.c */ #line 677 "a.y" { (yyval.lval) = (yyvsp[(1) - (1)].sym)->value; } break; case 117: /* Line 1787 of yacc.c */ #line 681 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; case 118: /* Line 1787 of yacc.c */ #line 685 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; case 119: /* Line 1787 of yacc.c */ #line 689 "a.y" { (yyval.lval) = ~(yyvsp[(2) - (2)].lval); } break; case 120: /* Line 1787 of yacc.c */ #line 693 "a.y" { (yyval.lval) = (yyvsp[(2) - (3)].lval); } break; case 121: /* Line 1787 of yacc.c */ #line 698 "a.y" { (yyval.lval) = 0; } break; case 122: /* Line 1787 of yacc.c */ #line 702 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; case 124: /* Line 1787 of yacc.c */ #line 709 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval); } break; case 125: /* Line 1787 of yacc.c */ #line 713 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval); } break; case 126: /* Line 1787 of yacc.c */ #line 717 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval); } break; case 127: /* Line 1787 of yacc.c */ #line 721 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval); } break; case 128: /* Line 1787 of yacc.c */ #line 725 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval); } break; case 129: /* Line 1787 of yacc.c */ #line 729 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval); } break; case 130: /* Line 1787 of yacc.c */ #line 733 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval); } break; case 131: /* Line 1787 of yacc.c */ #line 737 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval); } break; case 132: /* Line 1787 of yacc.c */ #line 741 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval); } break; case 133: /* Line 1787 of yacc.c */ #line 745 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval); } break; /* Line 1787 of yacc.c */ #line 2707 "y.tab.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) { char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = YYSYNTAX_ERROR; if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == 1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = 2; } else { yysyntax_error_status = YYSYNTAX_ERROR; yymsgp = yymsg; } } yyerror (yymsgp); if (yysyntax_error_status == 2) goto yyexhaustedlab; } # undef YYSYNTAX_ERROR #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); } /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5a/y.tab.h�������������������������������������������������������������������������������0100644�0000000�0000000�00000010440�12412656734�014520� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A Bison parser, made by GNU Bison 2.7.12-4996. */ /* Bison interface for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ #ifndef YY_YY_Y_TAB_H_INCLUDED # define YY_YY_Y_TAB_H_INCLUDED /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int yydebug; #endif /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { LTYPE1 = 258, LTYPE2 = 259, LTYPE3 = 260, LTYPE4 = 261, LTYPE5 = 262, LTYPE6 = 263, LTYPE7 = 264, LTYPE8 = 265, LTYPE9 = 266, LTYPEA = 267, LTYPEB = 268, LTYPEC = 269, LTYPED = 270, LTYPEE = 271, LTYPEG = 272, LTYPEH = 273, LTYPEI = 274, LTYPEJ = 275, LTYPEK = 276, LTYPEL = 277, LTYPEM = 278, LTYPEN = 279, LTYPEBX = 280, LTYPEPLD = 281, LCONST = 282, LSP = 283, LSB = 284, LFP = 285, LPC = 286, LTYPEX = 287, LTYPEPC = 288, LTYPEF = 289, LR = 290, LREG = 291, LF = 292, LFREG = 293, LC = 294, LCREG = 295, LPSR = 296, LFCR = 297, LCOND = 298, LS = 299, LAT = 300, LFCONST = 301, LSCONST = 302, LNAME = 303, LLAB = 304, LVAR = 305 }; #endif /* Tokens. */ #define LTYPE1 258 #define LTYPE2 259 #define LTYPE3 260 #define LTYPE4 261 #define LTYPE5 262 #define LTYPE6 263 #define LTYPE7 264 #define LTYPE8 265 #define LTYPE9 266 #define LTYPEA 267 #define LTYPEB 268 #define LTYPEC 269 #define LTYPED 270 #define LTYPEE 271 #define LTYPEG 272 #define LTYPEH 273 #define LTYPEI 274 #define LTYPEJ 275 #define LTYPEK 276 #define LTYPEL 277 #define LTYPEM 278 #define LTYPEN 279 #define LTYPEBX 280 #define LTYPEPLD 281 #define LCONST 282 #define LSP 283 #define LSB 284 #define LFP 285 #define LPC 286 #define LTYPEX 287 #define LTYPEPC 288 #define LTYPEF 289 #define LR 290 #define LREG 291 #define LF 292 #define LFREG 293 #define LC 294 #define LCREG 295 #define LPSR 296 #define LFCR 297 #define LCOND 298 #define LS 299 #define LAT 300 #define LFCONST 301 #define LSCONST 302 #define LNAME 303 #define LLAB 304 #define LVAR 305 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { /* Line 2053 of yacc.c */ #line 39 "a.y" Sym *sym; int32 lval; double dval; char sval[8]; Addr addr; /* Line 2053 of yacc.c */ #line 166 "y.tab.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE yylval; #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ #endif /* !YY_YY_Y_TAB_H_INCLUDED */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5c���������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013264� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5c/Makefile������������������������������������������������������������������������������0100644�0000000�0000000�00000000265�12412656734�015000� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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. include ../../Make.dist �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5c/cgen.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000051570�12412656737�014430� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5c/cgen.c // http://code.google.com/p/inferno-os/source/browse/utils/5c/cgen.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" #include "../../pkg/runtime/funcdata.h" void _cgen(Node *n, Node *nn, int inrel) { Node *l, *r; Prog *p1; Node nod, nod1, nod2, nod3, nod4; int o, t; int32 v, curs; if(debug['g']) { prtree(nn, "cgen lhs"); prtree(n, "cgen"); } if(n == Z || n->type == T) return; if(typesuv[n->type->etype]) { sugen(n, nn, n->type->width); return; } l = n->left; r = n->right; o = n->op; if(n->addable >= INDEXED) { if(nn == Z) { switch(o) { default: nullwarn(Z, Z); break; case OINDEX: nullwarn(l, r); break; } return; } gmove(n, nn); return; } curs = cursafe; if(n->complex >= FNX) if(l->complex >= FNX) if(r != Z && r->complex >= FNX) switch(o) { default: regret(&nod, r); cgen(r, &nod); regsalloc(&nod1, r); gopcode(OAS, &nod, Z, &nod1); regfree(&nod); nod = *n; nod.right = &nod1; cgen(&nod, nn); return; case OFUNC: case OCOMMA: case OANDAND: case OOROR: case OCOND: case ODOT: break; } switch(o) { default: diag(n, "unknown op in cgen: %O", o); break; case OAS: if(l->op == OBIT) goto bitas; if(l->addable >= INDEXED && l->complex < FNX) { if(nn != Z || r->addable < INDEXED) { if(r->complex >= FNX && nn == Z) regret(&nod, r); else regalloc(&nod, r, nn); cgen(r, &nod); gmove(&nod, l); if(nn != Z) gmove(&nod, nn); regfree(&nod); } else gmove(r, l); break; } if(l->complex >= r->complex) { reglcgen(&nod1, l, Z); if(r->addable >= INDEXED) { gmove(r, &nod1); if(nn != Z) gmove(r, nn); regfree(&nod1); break; } regalloc(&nod, r, nn); cgen(r, &nod); } else { regalloc(&nod, r, nn); cgen(r, &nod); reglcgen(&nod1, l, Z); } gmove(&nod, &nod1); regfree(&nod); regfree(&nod1); break; bitas: n = l->left; regalloc(&nod, r, nn); if(l->complex >= r->complex) { reglcgen(&nod1, n, Z); cgen(r, &nod); } else { cgen(r, &nod); reglcgen(&nod1, n, Z); } regalloc(&nod2, n, Z); gopcode(OAS, &nod1, Z, &nod2); bitstore(l, &nod, &nod1, &nod2, nn); break; case OBIT: if(nn == Z) { nullwarn(l, Z); break; } bitload(n, &nod, Z, Z, nn); gopcode(OAS, &nod, Z, nn); regfree(&nod); break; case ODIV: case OMOD: if(nn != Z) if((t = vlog(r)) >= 0) { /* signed div/mod by constant power of 2 */ cgen(l, nn); gopcode(OGE, nodconst(0), nn, Z); p1 = p; if(o == ODIV) { gopcode(OADD, nodconst((1<op == OCONST) if(!typefd[n->type->etype]) { cgen(r, nn); gopcode(o, Z, l, nn); break; } case OADD: case OAND: case OOR: case OXOR: case OLSHR: case OASHL: case OASHR: /* * immediate operands */ if(nn != Z) if(r->op == OCONST) if(!typefd[n->type->etype]) { cgen(l, nn); if(r->vconst == 0) if(o != OAND) break; if(nn != Z) gopcode(o, r, Z, nn); break; } case OLMUL: case OLDIV: case OLMOD: case OMUL: muldiv: if(nn == Z) { nullwarn(l, r); break; } if(o == OMUL || o == OLMUL) { if(mulcon(n, nn)) break; } if(l->complex >= r->complex) { regalloc(&nod, l, nn); cgen(l, &nod); regalloc(&nod1, r, Z); cgen(r, &nod1); gopcode(o, &nod1, Z, &nod); } else { regalloc(&nod, r, nn); cgen(r, &nod); regalloc(&nod1, l, Z); cgen(l, &nod1); gopcode(o, &nod, &nod1, &nod); } gopcode(OAS, &nod, Z, nn); regfree(&nod); regfree(&nod1); break; case OASLSHR: case OASASHL: case OASASHR: case OASAND: case OASADD: case OASSUB: case OASXOR: case OASOR: if(l->op == OBIT) goto asbitop; if(r->op == OCONST) if(!typefd[r->type->etype]) if(!typefd[n->type->etype]) { if(l->addable < INDEXED) reglcgen(&nod2, l, Z); else nod2 = *l; regalloc(&nod, r, nn); gopcode(OAS, &nod2, Z, &nod); gopcode(o, r, Z, &nod); gopcode(OAS, &nod, Z, &nod2); regfree(&nod); if(l->addable < INDEXED) regfree(&nod2); break; } case OASLMUL: case OASLDIV: case OASLMOD: case OASMUL: case OASDIV: case OASMOD: if(l->op == OBIT) goto asbitop; if(l->complex >= r->complex) { if(l->addable < INDEXED) reglcgen(&nod2, l, Z); else nod2 = *l; regalloc(&nod1, r, Z); cgen(r, &nod1); } else { regalloc(&nod1, r, Z); cgen(r, &nod1); if(l->addable < INDEXED) reglcgen(&nod2, l, Z); else nod2 = *l; } regalloc(&nod, n, nn); gmove(&nod2, &nod); gopcode(o, &nod1, Z, &nod); gmove(&nod, &nod2); if(nn != Z) gopcode(OAS, &nod, Z, nn); regfree(&nod); regfree(&nod1); if(l->addable < INDEXED) regfree(&nod2); break; asbitop: regalloc(&nod4, n, nn); if(l->complex >= r->complex) { bitload(l, &nod, &nod1, &nod2, &nod4); regalloc(&nod3, r, Z); cgen(r, &nod3); } else { regalloc(&nod3, r, Z); cgen(r, &nod3); bitload(l, &nod, &nod1, &nod2, &nod4); } gmove(&nod, &nod4); gopcode(o, &nod3, Z, &nod4); regfree(&nod3); gmove(&nod4, &nod); regfree(&nod4); bitstore(l, &nod, &nod1, &nod2, nn); break; case OADDR: if(nn == Z) { nullwarn(l, Z); break; } lcgen(l, nn); break; case OFUNC: if(l->complex >= FNX) { if(l->op != OIND) diag(n, "bad function call"); regret(&nod, l->left); cgen(l->left, &nod); regsalloc(&nod1, l->left); gopcode(OAS, &nod, Z, &nod1); regfree(&nod); nod = *n; nod.left = &nod2; nod2 = *l; nod2.left = &nod1; nod2.complex = 1; cgen(&nod, nn); return; } if(REGARG >= 0) o = reg[REGARG]; gargs(r, &nod, &nod1); gpcdata(PCDATA_ArgSize, curarg); if(l->addable < INDEXED) { reglcgen(&nod, l, Z); gopcode(OFUNC, Z, Z, &nod); regfree(&nod); } else gopcode(OFUNC, Z, Z, l); gpcdata(PCDATA_ArgSize, -1); if(REGARG >= 0) if(o != reg[REGARG]) reg[REGARG]--; if(nn != Z) { regret(&nod, n); gopcode(OAS, &nod, Z, nn); regfree(&nod); } break; case OIND: if(nn == Z) { nullwarn(l, Z); break; } regialloc(&nod, n, nn); r = l; while(r->op == OADD) r = r->right; if(sconst(r) && (v = r->vconst+nod.xoffset) > -4096 && v < 4096) { v = r->vconst; r->vconst = 0; cgen(l, &nod); nod.xoffset += v; r->vconst = v; } else cgen(l, &nod); regind(&nod, n); gopcode(OAS, &nod, Z, nn); regfree(&nod); break; case OEQ: case ONE: case OLE: case OLT: case OGE: case OGT: case OLO: case OLS: case OHI: case OHS: if(nn == Z) { nullwarn(l, r); break; } boolgen(n, 1, nn); break; case OANDAND: case OOROR: boolgen(n, 1, nn); if(nn == Z) patch(p, pc); break; case ONOT: if(nn == Z) { nullwarn(l, Z); break; } boolgen(n, 1, nn); break; case OCOMMA: cgen(l, Z); cgen(r, nn); break; case OCAST: if(nn == Z) { nullwarn(l, Z); break; } /* * convert from types l->n->nn */ if(nocast(l->type, n->type)) { if(nocast(n->type, nn->type)) { cgen(l, nn); break; } } regalloc(&nod, l, nn); cgen(l, &nod); regalloc(&nod1, n, &nod); if(inrel) gmover(&nod, &nod1); else gopcode(OAS, &nod, Z, &nod1); gopcode(OAS, &nod1, Z, nn); regfree(&nod1); regfree(&nod); break; case ODOT: sugen(l, nodrat, l->type->width); if(nn != Z) { warn(n, "non-interruptable temporary"); nod = *nodrat; if(!r || r->op != OCONST) { diag(n, "DOT and no offset"); break; } nod.xoffset += (int32)r->vconst; nod.type = n->type; cgen(&nod, nn); } break; case OCOND: bcgen(l, 1); p1 = p; cgen(r->left, nn); gbranch(OGOTO); patch(p1, pc); p1 = p; cgen(r->right, nn); patch(p1, pc); break; case OPOSTINC: case OPOSTDEC: v = 1; if(l->type->etype == TIND) v = l->type->link->width; if(o == OPOSTDEC) v = -v; if(l->op == OBIT) goto bitinc; if(nn == Z) goto pre; if(l->addable < INDEXED) reglcgen(&nod2, l, Z); else nod2 = *l; regalloc(&nod, l, nn); gopcode(OAS, &nod2, Z, &nod); regalloc(&nod1, l, Z); if(typefd[l->type->etype]) { regalloc(&nod3, l, Z); if(v < 0) { gopcode(OAS, nodfconst(-v), Z, &nod3); gopcode(OSUB, &nod3, &nod, &nod1); } else { gopcode(OAS, nodfconst(v), Z, &nod3); gopcode(OADD, &nod3, &nod, &nod1); } regfree(&nod3); } else gopcode(OADD, nodconst(v), &nod, &nod1); gopcode(OAS, &nod1, Z, &nod2); regfree(&nod); regfree(&nod1); if(l->addable < INDEXED) regfree(&nod2); break; case OPREINC: case OPREDEC: v = 1; if(l->type->etype == TIND) v = l->type->link->width; if(o == OPREDEC) v = -v; if(l->op == OBIT) goto bitinc; pre: if(l->addable < INDEXED) reglcgen(&nod2, l, Z); else nod2 = *l; regalloc(&nod, l, nn); gopcode(OAS, &nod2, Z, &nod); if(typefd[l->type->etype]) { regalloc(&nod3, l, Z); if(v < 0) { gopcode(OAS, nodfconst(-v), Z, &nod3); gopcode(OSUB, &nod3, Z, &nod); } else { gopcode(OAS, nodfconst(v), Z, &nod3); gopcode(OADD, &nod3, Z, &nod); } regfree(&nod3); } else gopcode(OADD, nodconst(v), Z, &nod); gopcode(OAS, &nod, Z, &nod2); regfree(&nod); if(l->addable < INDEXED) regfree(&nod2); break; bitinc: if(nn != Z && (o == OPOSTINC || o == OPOSTDEC)) { bitload(l, &nod, &nod1, &nod2, Z); gopcode(OAS, &nod, Z, nn); gopcode(OADD, nodconst(v), Z, &nod); bitstore(l, &nod, &nod1, &nod2, Z); break; } bitload(l, &nod, &nod1, &nod2, nn); gopcode(OADD, nodconst(v), Z, &nod); bitstore(l, &nod, &nod1, &nod2, nn); break; } cursafe = curs; return; } void cgen(Node *n, Node *nn) { _cgen(n, nn, 0); } void cgenrel(Node *n, Node *nn) { _cgen(n, nn, 1); } void reglcgen(Node *t, Node *n, Node *nn) { Node *r; int32 v; regialloc(t, n, nn); if(n->op == OIND) { r = n->left; while(r->op == OADD) r = r->right; if(sconst(r) && (v = r->vconst+t->xoffset) > -4096 && v < 4096) { v = r->vconst; r->vconst = 0; lcgen(n, t); t->xoffset += v; r->vconst = v; regind(t, n); return; } } else if(n->op == OINDREG) { if((v = n->xoffset) > -4096 && v < 4096) { n->op = OREGISTER; cgen(n, t); t->xoffset += v; n->op = OINDREG; regind(t, n); return; } } lcgen(n, t); regind(t, n); } void reglpcgen(Node *n, Node *nn, int f) { Type *t; t = nn->type; nn->type = types[TLONG]; if(f) reglcgen(n, nn, Z); else { regialloc(n, nn, Z); lcgen(nn, n); regind(n, nn); } nn->type = t; } void lcgen(Node *n, Node *nn) { Prog *p1; Node nod; if(debug['g']) { prtree(nn, "lcgen lhs"); prtree(n, "lcgen"); } if(n == Z || n->type == T) return; if(nn == Z) { nn = &nod; regalloc(&nod, n, Z); } switch(n->op) { default: if(n->addable < INDEXED) { diag(n, "unknown op in lcgen: %O", n->op); break; } nod = *n; nod.op = OADDR; nod.left = n; nod.right = Z; nod.type = types[TIND]; gopcode(OAS, &nod, Z, nn); break; case OCOMMA: cgen(n->left, n->left); lcgen(n->right, nn); break; case OIND: cgen(n->left, nn); break; case OCOND: bcgen(n->left, 1); p1 = p; lcgen(n->right->left, nn); gbranch(OGOTO); patch(p1, pc); p1 = p; lcgen(n->right->right, nn); patch(p1, pc); break; } } void bcgen(Node *n, int true) { if(n->type == T) gbranch(OGOTO); else boolgen(n, true, Z); } void boolgen(Node *n, int true, Node *nn) { int o; Prog *p1, *p2; Node *l, *r, nod, nod1; int32 curs; if(debug['g']) { prtree(nn, "boolgen lhs"); prtree(n, "boolgen"); } curs = cursafe; l = n->left; r = n->right; switch(n->op) { default: regalloc(&nod, n, nn); cgen(n, &nod); o = ONE; if(true) o = comrel[relindex(o)]; if(typefd[n->type->etype]) { gopcode(o, nodfconst(0), &nod, Z); } else gopcode(o, nodconst(0), &nod, Z); regfree(&nod); goto com; case OCONST: o = vconst(n); if(!true) o = !o; gbranch(OGOTO); if(o) { p1 = p; gbranch(OGOTO); patch(p1, pc); } goto com; case OCOMMA: cgen(l, Z); boolgen(r, true, nn); break; case ONOT: boolgen(l, !true, nn); break; case OCOND: bcgen(l, 1); p1 = p; bcgen(r->left, true); p2 = p; gbranch(OGOTO); patch(p1, pc); p1 = p; bcgen(r->right, !true); patch(p2, pc); p2 = p; gbranch(OGOTO); patch(p1, pc); patch(p2, pc); goto com; case OANDAND: if(!true) goto caseor; caseand: bcgen(l, true); p1 = p; bcgen(r, !true); p2 = p; patch(p1, pc); gbranch(OGOTO); patch(p2, pc); goto com; case OOROR: if(!true) goto caseand; caseor: bcgen(l, !true); p1 = p; bcgen(r, !true); p2 = p; gbranch(OGOTO); patch(p1, pc); patch(p2, pc); goto com; case OEQ: case ONE: case OLE: case OLT: case OGE: case OGT: case OHI: case OHS: case OLO: case OLS: o = n->op; if(true) o = comrel[relindex(o)]; if(l->complex >= FNX && r->complex >= FNX) { regret(&nod, r); cgenrel(r, &nod); regsalloc(&nod1, r); gopcode(OAS, &nod, Z, &nod1); regfree(&nod); nod = *n; nod.right = &nod1; boolgen(&nod, true, nn); break; } if(sconst(l)) { regalloc(&nod, r, nn); cgenrel(r, &nod); o = invrel[relindex(o)]; gopcode(o, l, &nod, Z); regfree(&nod); goto com; } if(sconst(r)) { regalloc(&nod, l, nn); cgenrel(l, &nod); gopcode(o, r, &nod, Z); regfree(&nod); goto com; } if(l->complex >= r->complex) { regalloc(&nod1, l, nn); cgenrel(l, &nod1); regalloc(&nod, r, Z); cgenrel(r, &nod); } else { regalloc(&nod, r, nn); cgenrel(r, &nod); regalloc(&nod1, l, Z); cgenrel(l, &nod1); } gopcode(o, &nod, &nod1, Z); regfree(&nod); regfree(&nod1); com: if(nn != Z) { p1 = p; gopcode(OAS, nodconst(1), Z, nn); gbranch(OGOTO); p2 = p; patch(p1, pc); gopcode(OAS, nodconst(0), Z, nn); patch(p2, pc); } break; } cursafe = curs; } void sugen(Node *n, Node *nn, int32 w) { Prog *p1; Node nod0, nod1, nod2, nod3, nod4, *l, *r; Type *t; int32 pc1; int i, m, c; if(n == Z || n->type == T) return; if(debug['g']) { prtree(nn, "sugen lhs"); prtree(n, "sugen"); } if(nn == nodrat) if(w > nrathole) nrathole = w; switch(n->op) { case OIND: if(nn == Z) { nullwarn(n->left, Z); break; } default: goto copy; case OCONST: if(n->type && typev[n->type->etype]) { if(nn == Z) { nullwarn(n->left, Z); break; } t = nn->type; nn->type = types[TLONG]; reglcgen(&nod1, nn, Z); nn->type = t; if(isbigendian) gopcode(OAS, nod32const(n->vconst>>32), Z, &nod1); else gopcode(OAS, nod32const(n->vconst), Z, &nod1); nod1.xoffset += SZ_LONG; if(isbigendian) gopcode(OAS, nod32const(n->vconst), Z, &nod1); else gopcode(OAS, nod32const(n->vconst>>32), Z, &nod1); regfree(&nod1); break; } goto copy; case ODOT: l = n->left; sugen(l, nodrat, l->type->width); if(nn != Z) { warn(n, "non-interruptable temporary"); nod1 = *nodrat; r = n->right; if(!r || r->op != OCONST) { diag(n, "DOT and no offset"); break; } nod1.xoffset += (int32)r->vconst; nod1.type = n->type; sugen(&nod1, nn, w); } break; case OSTRUCT: /* * rewrite so lhs has no side effect. */ if(nn != Z && side(nn)) { nod1 = *n; nod1.type = typ(TIND, n->type); regret(&nod2, &nod1); lcgen(nn, &nod2); regsalloc(&nod0, &nod1); gopcode(OAS, &nod2, Z, &nod0); regfree(&nod2); nod1 = *n; nod1.op = OIND; nod1.left = &nod0; nod1.right = Z; nod1.complex = 1; sugen(n, &nod1, w); return; } r = n->left; for(t = n->type->link; t != T; t = t->down) { l = r; if(r->op == OLIST) { l = r->left; r = r->right; } if(nn == Z) { cgen(l, nn); continue; } /* * hand craft *(&nn + o) = l */ nod0 = znode; nod0.op = OAS; nod0.type = t; nod0.left = &nod1; nod0.right = l; nod1 = znode; nod1.op = OIND; nod1.type = t; nod1.left = &nod2; nod2 = znode; nod2.op = OADD; nod2.type = typ(TIND, t); nod2.left = &nod3; nod2.right = &nod4; nod3 = znode; nod3.op = OADDR; nod3.type = nod2.type; nod3.left = nn; nod4 = znode; nod4.op = OCONST; nod4.type = nod2.type; nod4.vconst = t->offset; ccom(&nod0); acom(&nod0); xcom(&nod0); nod0.addable = 0; cgen(&nod0, Z); } break; case OAS: if(nn == Z) { if(n->addable < INDEXED) sugen(n->right, n->left, w); break; } sugen(n->right, nodrat, w); warn(n, "non-interruptable temporary"); sugen(nodrat, n->left, w); sugen(nodrat, nn, w); break; case OFUNC: if(nn == Z) { sugen(n, nodrat, w); break; } if(nn->op != OIND) { nn = new1(OADDR, nn, Z); nn->type = types[TIND]; nn->addable = 0; } else nn = nn->left; n = new(OFUNC, n->left, new(OLIST, nn, n->right)); n->type = types[TVOID]; n->left->type = types[TVOID]; cgen(n, Z); break; case OCOND: bcgen(n->left, 1); p1 = p; sugen(n->right->left, nn, w); gbranch(OGOTO); patch(p1, pc); p1 = p; sugen(n->right->right, nn, w); patch(p1, pc); break; case OCOMMA: cgen(n->left, Z); sugen(n->right, nn, w); break; } return; copy: if(nn == Z) return; if(n->complex >= FNX && nn->complex >= FNX) { t = nn->type; nn->type = types[TLONG]; regialloc(&nod1, nn, Z); lcgen(nn, &nod1); regsalloc(&nod2, nn); nn->type = t; gopcode(OAS, &nod1, Z, &nod2); regfree(&nod1); nod2.type = typ(TIND, t); nod1 = nod2; nod1.op = OIND; nod1.left = &nod2; nod1.right = Z; nod1.complex = 1; nod1.type = t; sugen(n, &nod1, w); return; } w /= SZ_LONG; if(w <= 2) { if(n->complex > nn->complex) { reglpcgen(&nod1, n, 1); reglpcgen(&nod2, nn, 1); } else { reglpcgen(&nod2, nn, 1); reglpcgen(&nod1, n, 1); } regalloc(&nod3, ®node, Z); regalloc(&nod4, ®node, Z); nod0 = *nodconst((1<complex > nn->complex) { reglpcgen(&nod1, n, 0); reglpcgen(&nod2, nn, 0); } else { reglpcgen(&nod2, nn, 0); reglpcgen(&nod1, n, 0); } m = 0; for(c = 0; c < w && c < 4; c++) { i = tmpreg(); if (i == 0) break; reg[i]++; m |= 1<c; w-=c) { gmovm(&nod1, &nod4, 1); gmovm(&nod4, &nod2, 1); } goto out; } regalloc(&nod3, ®node, Z); gopcode(OAS, nodconst(w/c), Z, &nod3); w %= c; pc1 = pc; gmovm(&nod1, &nod4, 1); gmovm(&nod4, &nod2, 1); gopcode(OSUB, nodconst(1), Z, &nod3); gopcode(OEQ, nodconst(0), &nod3, Z); p->as = ABGT; patch(p, pc1); regfree(&nod3); out: if (w) { i = 0; while (c>w) { while ((m&(1<0); regfree(&nod1); regfree(&nod2); } ����������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5c/doc.go��������������������������������������������������������������������������������0100644�0000000�0000000�00000000611�12412656734�014427� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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 ignore /* 5c is a version of the Plan 9 C compiler. The original is documented at http://plan9.bell-labs.com/magic/man2html/1/8c Its target architecture is the ARM, referred to by these tools as arm. */ package main �����������������������������������������������������������������������������������������������������������������������go/src/cmd/5c/gc.h����������������������������������������������������������������������������������0100644�0000000�0000000�00000015777�12412656737�014123� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5c/gc.h // http://code.google.com/p/inferno-os/source/browse/utils/5c/gc.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "../cc/cc.h" #include "../5l/5.out.h" /* * 5c/arm * Arm 7500 */ #define SZ_CHAR 1 #define SZ_SHORT 2 #define SZ_INT 4 #define SZ_LONG 4 #define SZ_IND 4 #define SZ_FLOAT 4 #define SZ_VLONG 8 #define SZ_DOUBLE 8 #define FNX 100 typedef struct Case Case; typedef struct C1 C1; typedef struct Multab Multab; typedef struct Hintab Hintab; typedef struct Reg Reg; typedef struct Rgn Rgn; #define R0ISZERO 0 #define A ((Addr*)0) #define INDEXED 9 #define P ((Prog*)0) struct Case { Case* link; int32 val; int32 label; char def; char isv; }; #define C ((Case*)0) struct C1 { int32 val; int32 label; }; struct Multab { int32 val; char code[20]; }; struct Hintab { ushort val; char hint[10]; }; struct Reg { int32 pc; int32 rpo; /* reverse post ordering */ Bits set; Bits use1; Bits use2; Bits refbehind; Bits refahead; Bits calbehind; Bits calahead; Bits regdiff; Bits act; int32 regu; int32 loop; /* could be shorter */ Reg* log5; int32 active; Reg* p1; Reg* p2; Reg* p2link; Reg* s1; Reg* s2; Reg* link; Prog* prog; }; #define R ((Reg*)0) #define NRGN 600 struct Rgn { Reg* enter; short cost; short varno; short regno; }; EXTERN int32 breakpc; EXTERN int32 nbreak; EXTERN Case* cases; EXTERN Node constnode; EXTERN Node fconstnode; EXTERN int32 continpc; EXTERN int32 curarg; EXTERN int32 cursafe; EXTERN int32 isbigendian; EXTERN Prog* lastp; EXTERN int32 maxargsafe; EXTERN int mnstring; EXTERN Multab multab[20]; EXTERN int retok; extern int hintabsize; EXTERN Node* nodrat; EXTERN Node* nodret; EXTERN Node* nodsafe; EXTERN int32 nrathole; EXTERN int32 nstring; EXTERN Prog* p; EXTERN int32 pc; EXTERN Node regnode; EXTERN char string[NSNAME]; EXTERN Sym* symrathole; EXTERN Node znode; EXTERN Prog zprog; EXTERN char reg[NREG+NFREG]; EXTERN int32 exregoffset; EXTERN int32 exfregoffset; EXTERN int suppress; #define BLOAD(r) band(bnot(r->refbehind), r->refahead) #define BSTORE(r) band(bnot(r->calbehind), r->calahead) #define LOAD(r) (~r->refbehind.b[z] & r->refahead.b[z]) #define STORE(r) (~r->calbehind.b[z] & r->calahead.b[z]) #define bset(a,n) ((a).b[(n)/32]&(1L<<(n)%32)) #define CLOAD 4 #define CREF 5 #define CINF 1000 #define LOOP 3 EXTERN Rgn region[NRGN]; EXTERN Rgn* rgp; EXTERN int nregion; EXTERN int nvar; EXTERN Bits externs; EXTERN Bits params; EXTERN Bits consts; EXTERN Bits addrs; EXTERN int32 regbits; EXTERN int32 exregbits; EXTERN int change; EXTERN Reg* firstr; EXTERN Reg* lastr; EXTERN Reg zreg; EXTERN Reg* freer; EXTERN int32* idom; EXTERN Reg** rpo2r; EXTERN int32 maxnr; extern char* anames[]; extern Hintab hintab[]; /* * sgen.c */ void codgen(Node*, Node*); void gen(Node*); void noretval(int); void usedset(Node*, int); void xcom(Node*); int bcomplex(Node*, Node*); Prog* gtext(Sym*, int32); vlong argsize(void); /* * cgen.c */ void cgen(Node*, Node*); void reglcgen(Node*, Node*, Node*); void lcgen(Node*, Node*); void bcgen(Node*, int); void boolgen(Node*, int, Node*); void sugen(Node*, Node*, int32); void layout(Node*, Node*, int, int, Node*); void cgenrel(Node*, Node*); /* * txt.c */ void ginit(void); void gclean(void); void nextpc(void); void gargs(Node*, Node*, Node*); void garg1(Node*, Node*, Node*, int, Node**); Node* nodconst(int32); Node* nod32const(vlong); Node* nodfconst(double); void nodreg(Node*, Node*, int); void regret(Node*, Node*); int tmpreg(void); void regalloc(Node*, Node*, Node*); void regfree(Node*); void regialloc(Node*, Node*, Node*); void regsalloc(Node*, Node*); void regaalloc1(Node*, Node*); void regaalloc(Node*, Node*); void regind(Node*, Node*); void gprep(Node*, Node*); void raddr(Node*, Prog*); void naddr(Node*, Addr*); void gmovm(Node*, Node*, int); void gmove(Node*, Node*); void gmover(Node*, Node*); void gins(int a, Node*, Node*); void gopcode(int, Node*, Node*, Node*); int samaddr(Node*, Node*); void gbranch(int); void patch(Prog*, int32); int sconst(Node*); int sval(int32); void gpseudo(int, Sym*, Node*); void gprefetch(Node*); void gpcdata(int, int); /* * swt.c */ int swcmp(const void*, const void*); void doswit(Node*); void swit1(C1*, int, int32, Node*); void swit2(C1*, int, int32, Node*); void newcase(void); void bitload(Node*, Node*, Node*, Node*, Node*); void bitstore(Node*, Node*, Node*, Node*, Node*); int mulcon(Node*, Node*); Multab* mulcon0(int32); void nullwarn(Node*, Node*); void outcode(void); /* * list */ void listinit(void); /* * reg.c */ Reg* rega(void); int rcmp(const void*, const void*); void regopt(Prog*); void addmove(Reg*, int, int, int); Bits mkvar(Addr*, int); void prop(Reg*, Bits, Bits); void loopit(Reg*, int32); void synch(Reg*, Bits); uint32 allreg(uint32, Rgn*); void paint1(Reg*, int); uint32 paint2(Reg*, int); void paint3(Reg*, int, int32, int); void addreg(Addr*, int); /* * peep.c */ void peep(void); void excise(Reg*); Reg* uniqp(Reg*); Reg* uniqs(Reg*); int regtyp(Addr*); int regzer(Addr*); int anyvar(Addr*); int subprop(Reg*); int copyprop(Reg*); int shiftprop(Reg*); void constprop(Addr*, Addr*, Reg*); int copy1(Addr*, Addr*, Reg*, int); int copyu(Prog*, Addr*, Addr*); int copyas(Addr*, Addr*); int copyau(Addr*, Addr*); int copyau1(Prog*, Addr*); int copysub(Addr*, Addr*, Addr*, int); int copysub1(Prog*, Addr*, Addr*, int); int32 RtoB(int); int32 FtoB(int); int BtoR(int32); int BtoF(int32); void predicate(void); int isbranch(Prog *); int predicable(Prog *p); int modifiescpsr(Prog *p); �go/src/cmd/5c/list.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000003372�12412656734�014461� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5c/list.c // http://code.google.com/p/inferno-os/source/browse/utils/5c/list.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #define EXTERN #include "gc.h" void listinit(void) { listinit5(); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5c/mul.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000025361�12412656734�014305� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5c/mul.c // http://code.google.com/p/inferno-os/source/browse/utils/5c/mul.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" /* * code sequences for multiply by constant. * [a-l][0-3] * lsl $(A-'a'),r0,r1 * [+][0-7] * add r0,r1,r2 * [-][0-7] * sub r0,r1,r2 */ static int maxmulops = 3; /* max # of ops to replace mul with */ static int multabp; static int32 mulval; static char* mulcp; static int32 valmax; static int shmax; static int docode(char *hp, char *cp, int r0, int r1); static int gen1(int len); static int gen2(int len, int32 r1); static int gen3(int len, int32 r0, int32 r1, int flag); enum { SR1 = 1<<0, /* r1 has been shifted */ SR0 = 1<<1, /* r0 has been shifted */ UR1 = 1<<2, /* r1 has not been used */ UR0 = 1<<3, /* r0 has not been used */ }; Multab* mulcon0(int32 v) { int a1, a2, g; Multab *m, *m1; char hint[10]; if(v < 0) v = -v; /* * look in cache */ m = multab; for(g=0; gval == v) { if(m->code[0] == 0) return 0; return m; } m++; } /* * select a spot in cache to overwrite */ multabp++; if(multabp < 0 || multabp >= nelem(multab)) multabp = 0; m = multab+multabp; m->val = v; mulval = v; /* * look in execption hint table */ a1 = 0; a2 = hintabsize; for(;;) { if(a1 >= a2) goto no; g = (a2 + a1)/2; if(v < hintab[g].val) { a2 = g; continue; } if(v > hintab[g].val) { a1 = g+1; continue; } break; } if(docode(hintab[g].hint, m->code, 1, 0)) return m; print("multiply table failure %d\n", v); m->code[0] = 0; return 0; no: /* * try to search */ hint[0] = 0; for(g=1; g<=maxmulops; g++) { if(g >= maxmulops && v >= 65535) break; mulcp = hint+g; *mulcp = 0; if(gen1(g)) { if(docode(hint, m->code, 1, 0)) return m; print("multiply table failure %d\n", v); break; } } /* * try a recur followed by a shift */ g = 0; while(!(v & 1)) { g++; v >>= 1; } if(g) { m1 = mulcon0(v); if(m1) { strcpy(m->code, m1->code); sprint(strchr(m->code, 0), "%c0", g+'a'); return m; } } m->code[0] = 0; return 0; } static int docode(char *hp, char *cp, int r0, int r1) { int c, i; c = *hp++; *cp = c; cp += 2; switch(c) { default: c -= 'a'; if(c < 1 || c >= 30) break; for(i=0; i<4; i++) { switch(i) { case 0: if(docode(hp, cp, r0<= mulval) break; } if(mulval == 1) return 1; len--; for(i=1; i<=shmax; i++) if(gen2(len, 1<= r1 || r1 > valmax) return 0; len--; if(len == 0) goto calcr0; if(!(flag & UR1)) { f1 = UR1|SR1; for(i=1; i<=shmax; i++) { x = r0< valmax) break; if(gen3(len, r0, x, f1)) { i += 'a'; goto out; } } } if(!(flag & UR0)) { f1 = UR1|SR1; for(i=1; i<=shmax; i++) { x = r1< valmax) break; if(gen3(len, r1, x, f1)) { i += 'a'; goto out; } } } if(!(flag & SR1)) { f1 = UR1|SR1|(flag&UR0); for(i=1; i<=shmax; i++) { x = r1< valmax) break; if(gen3(len, r0, x, f1)) { i += 'a'; goto out; } } } if(!(flag & SR0)) { f1 = UR0|SR0|(flag&(SR1|UR1)); f2 = UR1|SR1; if(flag & UR1) f2 |= UR0; if(flag & SR1) f2 |= SR0; for(i=1; i<=shmax; i++) { x = r0< valmax) break; if(x > r1) { if(gen3(len, r1, x, f2)) { i += 'a'; goto out; } } else if(gen3(len, x, r1, f1)) { i += 'a'; goto out; } } } x = r1+r0; if(gen3(len, r0, x, UR1)) { i = '+'; goto out; } if(gen3(len, r1, x, UR1)) { i = '+'; goto out; } x = r1-r0; if(gen3(len, x, r1, UR0)) { i = '-'; goto out; } if(x > r0) { if(gen3(len, r0, x, UR1)) { i = '-'; goto out; } } else if(gen3(len, x, r0, UR0)) { i = '-'; goto out; } return 0; calcr0: f1 = flag & (UR0|UR1); if(f1 == UR1) { for(i=1; i<=shmax; i++) { x = r1<= mulval) { if(x == mulval) { i += 'a'; goto out; } break; } } } if(mulval == r1+r0) { i = '+'; goto out; } if(mulval == r1-r0) { i = '-'; goto out; } return 0; out: *--mulcp = i; return 1; } /* * hint table has numbers that * the search algorithm fails on. * <1000: * all numbers * <5000: * ÷ by 5 * <10000: * ÷ by 50 * <65536: * ÷ by 250 */ Hintab hintab[] = { 683, "b++d+e+", 687, "b+e++e-", 691, "b++d+e+", 731, "b++d+e+", 811, "b++d+i+", 821, "b++e+e+", 843, "b+d++e+", 851, "b+f-+e-", 853, "b++e+e+", 877, "c++++g-", 933, "b+c++g-", 981, "c-+e-d+", 1375, "b+c+b+h-", 1675, "d+b++h+", 2425, "c++f-e+", 2675, "c+d++f-", 2750, "b+d-b+h-", 2775, "c-+g-e-", 3125, "b++e+g+", 3275, "b+c+g+e+", 3350, "c++++i+", 3475, "c-+e-f-", 3525, "c-+d+g-", 3625, "c-+e-j+", 3675, "b+d+d+e+", 3725, "b+d-+h+", 3925, "b+d+f-d-", 4275, "b+g++e+", 4325, "b+h-+d+", 4425, "b+b+g-j-", 4525, "b+d-d+f+", 4675, "c++d-g+", 4775, "b+d+b+g-", 4825, "c+c-+i-", 4850, "c++++i-", 4925, "b++e-g-", 4975, "c+f++e-", 5500, "b+g-c+d+", 6700, "d+b++i+", 9700, "d++++j-", 11000, "b+f-c-h-", 11750, "b+d+g+j-", 12500, "b+c+e-k+", 13250, "b+d+e-f+", 13750, "b+h-c-d+", 14250, "b+g-c+e-", 14500, "c+f+j-d-", 14750, "d-g--f+", 16750, "b+e-d-n+", 17750, "c+h-b+e+", 18250, "d+b+h-d+", 18750, "b+g-++f+", 19250, "b+e+b+h+", 19750, "b++h--f-", 20250, "b+e-l-c+", 20750, "c++bi+e-", 21250, "b+i+l+c+", 22000, "b+e+d-g-", 22250, "b+d-h+k-", 22750, "b+d-e-g+", 23250, "b+c+h+e-", 23500, "b+g-c-g-", 23750, "b+g-b+h-", 24250, "c++g+m-", 24750, "b+e+e+j-", 25000, "b++dh+g+", 25250, "b+e+d-g-", 25750, "b+e+b+j+", 26250, "b+h+c+e+", 26500, "b+h+c+g+", 26750, "b+d+e+g-", 27250, "b+e+e+f+", 27500, "c-i-c-d+", 27750, "b+bd++j+", 28250, "d-d-++i-", 28500, "c+c-h-e-", 29000, "b+g-d-f+", 29500, "c+h+++e-", 29750, "b+g+f-c+", 30250, "b+f-g-c+", 33500, "c-f-d-n+", 33750, "b+d-b+j-", 34250, "c+e+++i+", 35250, "e+b+d+k+", 35500, "c+e+d-g-", 35750, "c+i-++e+", 36250, "b+bh-d+e+", 36500, "c+c-h-e-", 36750, "d+e--i+", 37250, "b+g+g+b+", 37500, "b+h-b+f+", 37750, "c+be++j-", 38500, "b+e+b+i+", 38750, "d+i-b+d+", 39250, "b+g-l-+d+", 39500, "b+g-c+g-", 39750, "b+bh-c+f-", 40250, "b+bf+d+g-", 40500, "b+g-c+g+", 40750, "c+b+i-e+", 41250, "d++bf+h+", 41500, "b+j+c+d-", 41750, "c+f+b+h-", 42500, "c+h++g+", 42750, "b+g+d-f-", 43250, "b+l-e+d-", 43750, "c+bd+h+f-", 44000, "b+f+g-d-", 44250, "b+d-g--f+", 44500, "c+e+c+h+", 44750, "b+e+d-h-", 45250, "b++g+j-g+", 45500, "c+d+e-g+", 45750, "b+d-h-e-", 46250, "c+bd++j+", 46500, "b+d-c-j-", 46750, "e-e-b+g-", 47000, "b+c+d-j-", 47250, "b+e+e-g-", 47500, "b+g-c-h-", 47750, "b+f-c+h-", 48250, "d--h+n-", 48500, "b+c-g+m-", 48750, "b+e+e-g+", 49500, "c-f+e+j-", 49750, "c+c+g++f-", 50000, "b+e+e+k+", 50250, "b++i++g+", 50500, "c+g+f-i+", 50750, "b+e+d+k-", 51500, "b+i+c-f+", 51750, "b+bd+g-e-", 52250, "b+d+g-j+", 52500, "c+c+f+g+", 52750, "b+c+e+i+", 53000, "b+i+c+g+", 53500, "c+g+g-n+", 53750, "b+j+d-c+", 54250, "b+d-g-j-", 54500, "c-f+e+f+", 54750, "b+f-+c+g+", 55000, "b+g-d-g-", 55250, "b+e+e+g+", 55500, "b+cd++j+", 55750, "b+bh-d-f-", 56250, "c+d-b+j-", 56500, "c+d+c+i+", 56750, "b+e+d++h-", 57000, "b+d+g-f+", 57250, "b+f-m+d-", 57750, "b+i+c+e-", 58000, "b+e+d+h+", 58250, "c+b+g+g+", 58750, "d-e-j--e+", 59000, "d-i-+e+", 59250, "e--h-m+", 59500, "c+c-h+f-", 59750, "b+bh-e+i-", 60250, "b+bh-e-e-", 60500, "c+c-g-g-", 60750, "b+e-l-e-", 61250, "b+g-g-c+", 61750, "b+g-c+g+", 62250, "f--+c-i-", 62750, "e+f--+g+", 64750, "b+f+d+p-", }; int hintabsize = nelem(hintab); �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5c/peep.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000063163�12412656737�014446� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5c/peep.c // http://code.google.com/p/inferno-os/source/browse/utils/5c/peep.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" int xtramodes(Reg*, Addr*); void peep(void) { Reg *r, *r1, *r2; Prog *p, *p1; int t; /* * complete R structure */ t = 0; for(r=firstr; r!=R; r=r1) { r1 = r->link; if(r1 == R) break; p = r->prog->link; while(p != r1->prog) switch(p->as) { default: r2 = rega(); r->link = r2; r2->link = r1; r2->prog = p; r2->p1 = r; r->s1 = r2; r2->s1 = r1; r1->p1 = r2; r = r2; t++; case ADATA: case AGLOBL: case ANAME: case ASIGNAME: p = p->link; } } loop1: t = 0; for(r=firstr; r!=R; r=r->link) { p = r->prog; if(p->as == ASLL || p->as == ASRL || p->as == ASRA) { /* * elide shift into D_SHIFT operand of subsequent instruction */ if(shiftprop(r)) { excise(r); t++; } } if(p->as == AMOVW || p->as == AMOVF || p->as == AMOVD) if(regtyp(&p->to)) { if(p->from.type == D_CONST) constprop(&p->from, &p->to, r->s1); else if(regtyp(&p->from)) if(p->from.type == p->to.type) { if(copyprop(r)) { excise(r); t++; } else if(subprop(r) && copyprop(r)) { excise(r); t++; } } } } if(t) goto loop1; /* * look for MOVB x,R; MOVB R,R */ for(r=firstr; r!=R; r=r->link) { p = r->prog; switch(p->as) { default: continue; case AEOR: /* * EOR -1,x,y => MVN x,y */ if(p->from.type == D_CONST && p->from.offset == -1) { p->as = AMVN; p->from.type = D_REG; if(p->reg != NREG) p->from.reg = p->reg; else p->from.reg = p->to.reg; p->reg = NREG; } continue; case AMOVH: case AMOVHS: case AMOVHU: case AMOVB: case AMOVBS: case AMOVBU: if(p->to.type != D_REG) continue; break; } r1 = r->link; if(r1 == R) continue; p1 = r1->prog; if(p1->as != p->as) continue; if(p1->from.type != D_REG || p1->from.reg != p->to.reg) continue; if(p1->to.type != D_REG || p1->to.reg != p->to.reg) continue; excise(r1); } for(r=firstr; r!=R; r=r->link) { p = r->prog; switch(p->as) { case AMOVW: case AMOVB: case AMOVBS: case AMOVBU: if(p->from.type == D_OREG && p->from.offset == 0) xtramodes(r, &p->from); else if(p->to.type == D_OREG && p->to.offset == 0) xtramodes(r, &p->to); else continue; break; case ACMP: /* * elide CMP $0,x if calculation of x can set condition codes */ if(p->from.type != D_CONST || p->from.offset != 0) continue; r2 = r->s1; if(r2 == R) continue; t = r2->prog->as; switch(t) { default: continue; case ABEQ: case ABNE: case ABMI: case ABPL: break; case ABGE: t = ABPL; break; case ABLT: t = ABMI; break; case ABHI: t = ABNE; break; case ABLS: t = ABEQ; break; } r1 = r; do r1 = uniqp(r1); while (r1 != R && r1->prog->as == ANOP); if(r1 == R) continue; p1 = r1->prog; if(p1->to.type != D_REG) continue; if(p1->to.reg != p->reg) if(!(p1->as == AMOVW && p1->from.type == D_REG && p1->from.reg == p->reg)) continue; switch(p1->as) { default: continue; case AMOVW: if(p1->from.type != D_REG) continue; case AAND: case AEOR: case AORR: case ABIC: case AMVN: case ASUB: case ARSB: case AADD: case AADC: case ASBC: case ARSC: break; } p1->scond |= C_SBIT; r2->prog->as = t; excise(r); continue; } } predicate(); } void excise(Reg *r) { Prog *p; p = r->prog; p->as = ANOP; p->scond = zprog.scond; p->from = zprog.from; p->to = zprog.to; p->reg = zprog.reg; /**/ } Reg* uniqp(Reg *r) { Reg *r1; r1 = r->p1; if(r1 == R) { r1 = r->p2; if(r1 == R || r1->p2link != R) return R; } else if(r->p2 != R) return R; return r1; } Reg* uniqs(Reg *r) { Reg *r1; r1 = r->s1; if(r1 == R) { r1 = r->s2; if(r1 == R) return R; } else if(r->s2 != R) return R; return r1; } int regtyp(Addr *a) { if(a->type == D_REG) return 1; if(a->type == D_FREG) return 1; return 0; } /* * the idea is to substitute * one register for another * from one MOV to another * MOV a, R0 * ADD b, R0 / no use of R1 * MOV R0, R1 * would be converted to * MOV a, R1 * ADD b, R1 * MOV R1, R0 * hopefully, then the former or latter MOV * will be eliminated by copy propagation. */ int subprop(Reg *r0) { Prog *p; Addr *v1, *v2; Reg *r; int t; p = r0->prog; v1 = &p->from; if(!regtyp(v1)) return 0; v2 = &p->to; if(!regtyp(v2)) return 0; for(r=uniqp(r0); r!=R; r=uniqp(r)) { if(uniqs(r) == R) break; p = r->prog; switch(p->as) { case ABL: return 0; case ACMP: case ACMN: case AADD: case ASUB: case ARSB: case ASLL: case ASRL: case ASRA: case AORR: case AAND: case AEOR: case AMUL: case ADIV: case ADIVU: case ACMPF: case ACMPD: case AADDD: case AADDF: case ASUBD: case ASUBF: case AMULD: case AMULF: case ADIVD: case ADIVF: if(p->to.type == v1->type) if(p->to.reg == v1->reg) { if(p->reg == NREG) p->reg = p->to.reg; goto gotit; } break; case AMOVF: case AMOVD: case AMOVW: if(p->to.type == v1->type) if(p->to.reg == v1->reg) goto gotit; break; case AMOVM: t = 1<reg; if((p->from.type == D_CONST && (p->from.offset&t)) || (p->to.type == D_CONST && (p->to.offset&t))) return 0; break; } if(copyau(&p->from, v2) || copyau1(p, v2) || copyau(&p->to, v2)) break; if(copysub(&p->from, v1, v2, 0) || copysub1(p, v1, v2, 0) || copysub(&p->to, v1, v2, 0)) break; } return 0; gotit: copysub(&p->to, v1, v2, 1); if(debug['P']) { print("gotit: %D->%D\n%P", v1, v2, r->prog); if(p->from.type == v2->type) print(" excise"); print("\n"); } for(r=uniqs(r); r!=r0; r=uniqs(r)) { p = r->prog; copysub(&p->from, v1, v2, 1); copysub1(p, v1, v2, 1); copysub(&p->to, v1, v2, 1); if(debug['P']) print("%P\n", r->prog); } t = v1->reg; v1->reg = v2->reg; v2->reg = t; if(debug['P']) print("%P last\n", r->prog); return 1; } /* * The idea is to remove redundant copies. * v1->v2 F=0 * (use v2 s/v2/v1/)* * set v1 F=1 * use v2 return fail * ----------------- * v1->v2 F=0 * (use v2 s/v2/v1/)* * set v1 F=1 * set v2 return success */ int copyprop(Reg *r0) { Prog *p; Addr *v1, *v2; Reg *r; p = r0->prog; v1 = &p->from; v2 = &p->to; if(copyas(v1, v2)) return 1; for(r=firstr; r!=R; r=r->link) r->active = 0; return copy1(v1, v2, r0->s1, 0); } int copy1(Addr *v1, Addr *v2, Reg *r, int f) { int t; Prog *p; if(r->active) { if(debug['P']) print("act set; return 1\n"); return 1; } r->active = 1; if(debug['P']) print("copy %D->%D f=%d\n", v1, v2, f); for(; r != R; r = r->s1) { p = r->prog; if(debug['P']) print("%P", p); if(!f && uniqp(r) == R) { f = 1; if(debug['P']) print("; merge; f=%d", f); } t = copyu(p, v2, A); switch(t) { case 2: /* rar, can't split */ if(debug['P']) print("; %Drar; return 0\n", v2); return 0; case 3: /* set */ if(debug['P']) print("; %Dset; return 1\n", v2); return 1; case 1: /* used, substitute */ case 4: /* use and set */ if(f) { if(!debug['P']) return 0; if(t == 4) print("; %Dused+set and f=%d; return 0\n", v2, f); else print("; %Dused and f=%d; return 0\n", v2, f); return 0; } if(copyu(p, v2, v1)) { if(debug['P']) print("; sub fail; return 0\n"); return 0; } if(debug['P']) print("; sub%D/%D", v2, v1); if(t == 4) { if(debug['P']) print("; %Dused+set; return 1\n", v2); return 1; } break; } if(!f) { t = copyu(p, v1, A); if(!f && (t == 2 || t == 3 || t == 4)) { f = 1; if(debug['P']) print("; %Dset and !f; f=%d", v1, f); } } if(debug['P']) print("\n"); if(r->s2) if(!copy1(v1, v2, r->s2, f)) return 0; } return 1; } /* * The idea is to remove redundant constants. * $c1->v1 * ($c1->v2 s/$c1/v1)* * set v1 return * The v1->v2 should be eliminated by copy propagation. */ void constprop(Addr *c1, Addr *v1, Reg *r) { Prog *p; if(debug['C']) print("constprop %D->%D\n", c1, v1); for(; r != R; r = r->s1) { p = r->prog; if(debug['C']) print("%P", p); if(uniqp(r) == R) { if(debug['C']) print("; merge; return\n"); return; } if(p->as == AMOVW && copyas(&p->from, c1)) { if(debug['C']) print("; sub%D/%D", &p->from, v1); p->from = *v1; } else if(copyu(p, v1, A) > 1) { if(debug['C']) print("; %Dset; return\n", v1); return; } if(debug['C']) print("\n"); if(r->s2) constprop(c1, v1, r->s2); } } /* * ASLL x,y,w * .. (not use w, not set x y w) * AXXX w,a,b (a != w) * .. (not use w) * (set w) * ----------- changed to * .. * AXXX (x<prog; if(p->to.type != D_REG) FAIL("BOTCH: result not reg"); n = p->to.reg; a = zprog.from; if(p->reg != NREG && p->reg != p->to.reg) { a.type = D_REG; a.reg = p->reg; } if(debug['H']) print("shiftprop\n%P", p); r1 = r; for(;;) { /* find first use of shift result; abort if shift operands or result are changed */ r1 = uniqs(r1); if(r1 == R) FAIL("branch"); if(uniqp(r1) == R) FAIL("merge"); p1 = r1->prog; if(debug['H']) print("\n%P", p1); switch(copyu(p1, &p->to, A)) { case 0: /* not used or set */ if((p->from.type == D_REG && copyu(p1, &p->from, A) > 1) || (a.type == D_REG && copyu(p1, &a, A) > 1)) FAIL("args modified"); continue; case 3: /* set, not used */ FAIL("BOTCH: noref"); } break; } /* check whether substitution can be done */ switch(p1->as) { default: FAIL("non-dpi"); case AAND: case AEOR: case AADD: case AADC: case AORR: case ASUB: case ARSB: case ASBC: case ARSC: if(p1->reg == n || (p1->reg == NREG && p1->to.type == D_REG && p1->to.reg == n)) { if(p1->from.type != D_REG) FAIL("can't swap"); p1->reg = p1->from.reg; p1->from.reg = n; switch(p1->as) { case ASUB: p1->as = ARSB; break; case ARSB: p1->as = ASUB; break; case ASBC: p1->as = ARSC; break; case ARSC: p1->as = ASBC; break; } if(debug['H']) print("\t=>%P", p1); } case ABIC: case ACMP: case ACMN: if(p1->reg == n) FAIL("can't swap"); if(p1->reg == NREG && p1->to.reg == n) FAIL("shift result used twice"); case AMVN: if(p1->from.type == D_SHIFT) FAIL("shift result used in shift"); if(p1->from.type != D_REG || p1->from.reg != n) FAIL("BOTCH: where is it used?"); break; } /* check whether shift result is used subsequently */ p2 = p1; if(p1->to.reg != n) for (;;) { r1 = uniqs(r1); if(r1 == R) FAIL("inconclusive"); p1 = r1->prog; if(debug['H']) print("\n%P", p1); switch(copyu(p1, &p->to, A)) { case 0: /* not used or set */ continue; case 3: /* set, not used */ break; default:/* used */ FAIL("reused"); } break; } /* make the substitution */ p2->from.type = D_SHIFT; p2->from.reg = NREG; o = p->reg; if(o == NREG) o = p->to.reg; switch(p->from.type){ case D_CONST: o |= (p->from.offset&0x1f)<<7; break; case D_REG: o |= (1<<4) | (p->from.reg<<8); break; } switch(p->as){ case ASLL: o |= 0<<5; break; case ASRL: o |= 1<<5; break; case ASRA: o |= 2<<5; break; } p2->from.offset = o; if(debug['H']) print("\t=>%P\tSUCCEED\n", p2); return 1; } Reg* findpre(Reg *r, Addr *v) { Reg *r1; for(r1=uniqp(r); r1!=R; r=r1,r1=uniqp(r)) { if(uniqs(r1) != r) return R; switch(copyu(r1->prog, v, A)) { case 1: /* used */ case 2: /* read-alter-rewrite */ return R; case 3: /* set */ case 4: /* set and used */ return r1; } } return R; } Reg* findinc(Reg *r, Reg *r2, Addr *v) { Reg *r1; Prog *p; for(r1=uniqs(r); r1!=R && r1!=r2; r=r1,r1=uniqs(r)) { if(uniqp(r1) != r) return R; switch(copyu(r1->prog, v, A)) { case 0: /* not touched */ continue; case 4: /* set and used */ p = r1->prog; if(p->as == AADD) if(p->from.type == D_CONST) if(p->from.offset > -4096 && p->from.offset < 4096) return r1; default: return R; } } return R; } int nochange(Reg *r, Reg *r2, Prog *p) { Addr a[3]; int i, n; if(r == r2) return 1; n = 0; if(p->reg != NREG && p->reg != p->to.reg) { a[n].type = D_REG; a[n++].reg = p->reg; } switch(p->from.type) { case D_SHIFT: a[n].type = D_REG; a[n++].reg = p->from.offset&0xf; case D_REG: a[n].type = D_REG; a[n++].reg = p->from.reg; } if(n == 0) return 1; for(; r!=R && r!=r2; r=uniqs(r)) { p = r->prog; for(i=0; i 1) return 0; } return 1; } int findu1(Reg *r, Addr *v) { for(; r != R; r = r->s1) { if(r->active) return 0; r->active = 1; switch(copyu(r->prog, v, A)) { case 1: /* used */ case 2: /* read-alter-rewrite */ case 4: /* set and used */ return 1; case 3: /* set */ return 0; } if(r->s2) if (findu1(r->s2, v)) return 1; } return 0; } int finduse(Reg *r, Addr *v) { Reg *r1; for(r1=firstr; r1!=R; r1=r1->link) r1->active = 0; return findu1(r, v); } int xtramodes(Reg *r, Addr *a) { Reg *r1, *r2, *r3; Prog *p, *p1; Addr v; p = r->prog; if((p->as == AMOVB || p->as == AMOVBS) && p->from.type == D_OREG) /* byte load */ return 0; v = *a; v.type = D_REG; r1 = findpre(r, &v); if(r1 != R) { p1 = r1->prog; if(p1->to.type == D_REG && p1->to.reg == v.reg) switch(p1->as) { case AADD: if(p1->from.type == D_REG || (p1->from.type == D_SHIFT && (p1->from.offset&(1<<4)) == 0 && ((p->as != AMOVB && p->as != AMOVBS) || (a == &p->from && (p1->from.offset&~0xf) == 0))) || (p1->from.type == D_CONST && p1->from.offset > -4096 && p1->from.offset < 4096)) if(nochange(uniqs(r1), r, p1)) { if(a != &p->from || v.reg != p->to.reg) if (finduse(r->s1, &v)) { if(p1->reg == NREG || p1->reg == v.reg) /* pre-indexing */ p->scond |= C_WBIT; else return 0; } switch (p1->from.type) { case D_REG: /* register offset */ a->type = D_SHIFT; a->offset = p1->from.reg; break; case D_SHIFT: /* scaled register offset */ a->type = D_SHIFT; case D_CONST: /* immediate offset */ a->offset = p1->from.offset; break; } if(p1->reg != NREG) a->reg = p1->reg; excise(r1); return 1; } break; case AMOVW: if(p1->from.type == D_REG) if((r2 = findinc(r1, r, &p1->from)) != R) { for(r3=uniqs(r2); r3->prog->as==ANOP; r3=uniqs(r3)) ; if(r3 == r) { /* post-indexing */ p1 = r2->prog; a->reg = p1->to.reg; a->offset = p1->from.offset; p->scond |= C_PBIT; if(!finduse(r, &r1->prog->to)) excise(r1); excise(r2); return 1; } } break; } } if(a != &p->from || a->reg != p->to.reg) if((r1 = findinc(r, R, &v)) != R) { /* post-indexing */ p1 = r1->prog; a->offset = p1->from.offset; p->scond |= C_PBIT; excise(r1); return 1; } return 0; } /* * return * 1 if v only used (and substitute), * 2 if read-alter-rewrite * 3 if set * 4 if set and used * 0 otherwise (not touched) */ int copyu(Prog *p, Addr *v, Addr *s) { switch(p->as) { default: if(debug['P']) print(" (?)"); return 2; case AMOVM: if(v->type != D_REG) return 0; if(p->from.type == D_CONST) { /* read reglist, read/rar */ if(s != A) { if(p->from.offset&(1<reg)) return 1; if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyau(&p->to, v)) { if(p->scond&C_WBIT) return 2; return 1; } if(p->from.offset&(1<reg)) return 1; } else { /* read/rar, write reglist */ if(s != A) { if(p->to.offset&(1<reg)) return 1; if(copysub(&p->from, v, s, 1)) return 1; return 0; } if(copyau(&p->from, v)) { if(p->scond&C_WBIT) return 2; if(p->to.offset&(1<reg)) return 4; return 1; } if(p->to.offset&(1<reg)) return 3; } return 0; case ANOP: /* read, write */ case AMOVW: case AMOVF: case AMOVD: case AMOVH: case AMOVHS: case AMOVHU: case AMOVB: case AMOVBS: case AMOVBU: case AMOVDW: case AMOVWD: case AMOVFD: case AMOVDF: if(p->scond&(C_WBIT|C_PBIT)) if(v->type == D_REG) { if(p->from.type == D_OREG || p->from.type == D_SHIFT) { if(p->from.reg == v->reg) return 2; } else { if(p->to.reg == v->reg) return 2; } } if(s != A) { if(copysub(&p->from, v, s, 1)) return 1; if(!copyas(&p->to, v)) if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyas(&p->to, v)) { if(copyau(&p->from, v)) return 4; return 3; } if(copyau(&p->from, v)) return 1; if(copyau(&p->to, v)) return 1; return 0; case AADD: /* read, read, write */ case ASUB: case ARSB: case ASLL: case ASRL: case ASRA: case AORR: case AAND: case AEOR: case AMUL: case ADIV: case ADIVU: case AADDF: case AADDD: case ASUBF: case ASUBD: case AMULF: case AMULD: case ADIVF: case ADIVD: case ACMPF: case ACMPD: case ACMP: case ACMN: case ACASE: if(s != A) { if(copysub(&p->from, v, s, 1)) return 1; if(copysub1(p, v, s, 1)) return 1; if(!copyas(&p->to, v)) if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyas(&p->to, v)) { if(p->reg == NREG) p->reg = p->to.reg; if(copyau(&p->from, v)) return 4; if(copyau1(p, v)) return 4; return 3; } if(copyau(&p->from, v)) return 1; if(copyau1(p, v)) return 1; if(copyau(&p->to, v)) return 1; return 0; case ABEQ: /* read, read */ case ABNE: case ABCS: case ABHS: case ABCC: case ABLO: case ABMI: case ABPL: case ABVS: case ABVC: case ABHI: case ABLS: case ABGE: case ABLT: case ABGT: case ABLE: case APLD: if(s != A) { if(copysub(&p->from, v, s, 1)) return 1; return copysub1(p, v, s, 1); } if(copyau(&p->from, v)) return 1; if(copyau1(p, v)) return 1; return 0; case AB: /* funny */ if(s != A) { if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyau(&p->to, v)) return 1; return 0; case ARET: /* funny */ if(v->type == D_REG) if(v->reg == REGRET) return 2; if(v->type == D_FREG) if(v->reg == FREGRET) return 2; case ABL: /* funny */ if(v->type == D_REG) { if(v->reg <= REGEXT && v->reg > exregoffset) return 2; if(v->reg == REGARG) return 2; } if(v->type == D_FREG) if(v->reg <= FREGEXT && v->reg > exfregoffset) return 2; if(s != A) { if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyau(&p->to, v)) return 4; return 3; case ATEXT: /* funny */ if(v->type == D_REG) if(v->reg == REGARG) return 3; return 0; } } int a2type(Prog *p) { switch(p->as) { case ACMP: case ACMN: case AADD: case ASUB: case ARSB: case ASLL: case ASRL: case ASRA: case AORR: case AAND: case AEOR: case AMUL: case ADIV: case ADIVU: return D_REG; case ACMPF: case ACMPD: case AADDF: case AADDD: case ASUBF: case ASUBD: case AMULF: case AMULD: case ADIVF: case ADIVD: return D_FREG; } return D_NONE; } /* * direct reference, * could be set/use depending on * semantics */ int copyas(Addr *a, Addr *v) { if(regtyp(v)) { if(a->type == v->type) if(a->reg == v->reg) return 1; } else if(v->type == D_CONST) { /* for constprop */ if(a->type == v->type) if(a->name == v->name) if(a->sym == v->sym) if(a->reg == v->reg) if(a->offset == v->offset) return 1; } return 0; } /* * either direct or indirect */ int copyau(Addr *a, Addr *v) { if(copyas(a, v)) return 1; if(v->type == D_REG) { if(a->type == D_OREG) { if(v->reg == a->reg) return 1; } else if(a->type == D_SHIFT) { if((a->offset&0xf) == v->reg) return 1; if((a->offset&(1<<4)) && (a->offset>>8) == v->reg) return 1; } } return 0; } int copyau1(Prog *p, Addr *v) { if(regtyp(v)) { if(a2type(p) == v->type) if(p->reg == v->reg) { if(a2type(p) != v->type) print("botch a2type %P\n", p); return 1; } } return 0; } /* * substitute s for v in a * return failure to substitute */ int copysub(Addr *a, Addr *v, Addr *s, int f) { if(f) if(copyau(a, v)) { if(a->type == D_SHIFT) { if((a->offset&0xf) == v->reg) a->offset = (a->offset&~0xf)|s->reg; if((a->offset&(1<<4)) && (a->offset>>8) == v->reg) a->offset = (a->offset&~(0xf<<8))|(s->reg<<8); } else a->reg = s->reg; } return 0; } int copysub1(Prog *p1, Addr *v, Addr *s, int f) { if(f) if(copyau1(p1, v)) p1->reg = s->reg; return 0; } struct { int opcode; int notopcode; int scond; int notscond; } predinfo[] = { { ABEQ, ABNE, 0x0, 0x1, }, { ABNE, ABEQ, 0x1, 0x0, }, { ABCS, ABCC, 0x2, 0x3, }, { ABHS, ABLO, 0x2, 0x3, }, { ABCC, ABCS, 0x3, 0x2, }, { ABLO, ABHS, 0x3, 0x2, }, { ABMI, ABPL, 0x4, 0x5, }, { ABPL, ABMI, 0x5, 0x4, }, { ABVS, ABVC, 0x6, 0x7, }, { ABVC, ABVS, 0x7, 0x6, }, { ABHI, ABLS, 0x8, 0x9, }, { ABLS, ABHI, 0x9, 0x8, }, { ABGE, ABLT, 0xA, 0xB, }, { ABLT, ABGE, 0xB, 0xA, }, { ABGT, ABLE, 0xC, 0xD, }, { ABLE, ABGT, 0xD, 0xC, }, }; typedef struct { Reg *start; Reg *last; Reg *end; int len; } Joininfo; enum { Join, Split, End, Branch, Setcond, Toolong }; enum { Falsecond, Truecond, Delbranch, Keepbranch }; int isbranch(Prog *p) { return (ABEQ <= p->as) && (p->as <= ABLE); } int predicable(Prog *p) { if (isbranch(p) || p->as == ANOP || p->as == AXXX || p->as == ADATA || p->as == AGLOBL || p->as == AGOK || p->as == AHISTORY || p->as == ANAME || p->as == ASIGNAME || p->as == ATEXT || p->as == AWORD || p->as == ABCASE || p->as == ACASE) return 0; return 1; } /* * Depends on an analysis of the encodings performed by 5l. * These seem to be all of the opcodes that lead to the "S" bit * being set in the instruction encodings. * * C_SBIT may also have been set explicitly in p->scond. */ int modifiescpsr(Prog *p) { return (p->scond&C_SBIT) || p->as == ATST || p->as == ATEQ || p->as == ACMN || p->as == ACMP || p->as == AMULU || p->as == ADIVU || p->as == AMUL || p->as == ADIV || p->as == AMOD || p->as == AMODU || p->as == ABL; } /* * Find the maximal chain of instructions starting with r which could * be executed conditionally */ int joinsplit(Reg *r, Joininfo *j) { j->start = r; j->last = r; j->len = 0; do { if (r->p2 && (r->p1 || r->p2->p2link)) { j->end = r; return Join; } if (r->s1 && r->s2) { j->end = r; return Split; } j->last = r; if (r->prog->as != ANOP) j->len++; if (!r->s1 && !r->s2) { j->end = r->link; return End; } if (r->s2) { j->end = r->s2; return Branch; } if (modifiescpsr(r->prog)) { j->end = r->s1; return Setcond; } r = r->s1; } while (j->len < 4); j->end = r; return Toolong; } Reg * successor(Reg *r) { if (r->s1) return r->s1; else return r->s2; } void applypred(Reg *rstart, Joininfo *j, int cond, int branch) { int pred; Reg *r; if(j->len == 0) return; if (cond == Truecond) pred = predinfo[rstart->prog->as - ABEQ].scond; else pred = predinfo[rstart->prog->as - ABEQ].notscond; for (r = j->start; ; r = successor(r)) { if (r->prog->as == AB) { if (r != j->last || branch == Delbranch) excise(r); else { if (cond == Truecond) r->prog->as = predinfo[rstart->prog->as - ABEQ].opcode; else r->prog->as = predinfo[rstart->prog->as - ABEQ].notopcode; } } else if (predicable(r->prog)) r->prog->scond = (r->prog->scond&~C_SCOND)|pred; if (r->s1 != r->link) { r->s1 = r->link; r->link->p1 = r; } if (r == j->last) break; } } void predicate(void) { Reg *r; int t1, t2; Joininfo j1, j2; for(r=firstr; r!=R; r=r->link) { if (isbranch(r->prog)) { t1 = joinsplit(r->s1, &j1); t2 = joinsplit(r->s2, &j2); if(j1.last->link != j2.start) continue; if(j1.end == j2.end) if((t1 == Branch && (t2 == Join || t2 == Setcond)) || (t2 == Join && (t1 == Join || t1 == Setcond))) { applypred(r, &j1, Falsecond, Delbranch); applypred(r, &j2, Truecond, Delbranch); excise(r); continue; } if(t1 == End || t1 == Branch) { applypred(r, &j1, Falsecond, Keepbranch); excise(r); continue; } } } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5c/reg.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000052123�12412656737�014264� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5c/reg.c // http://code.google.com/p/inferno-os/source/browse/utils/5c/reg.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" void addsplits(void); Reg* rega(void) { Reg *r; r = freer; if(r == R) { r = alloc(sizeof(*r)); } else freer = r->link; *r = zreg; return r; } int rcmp(const void *a1, const void *a2) { Rgn *p1, *p2; int c1, c2; p1 = (Rgn*)a1; p2 = (Rgn*)a2; c1 = p2->cost; c2 = p1->cost; if(c1 -= c2) return c1; return p2->varno - p1->varno; } void regopt(Prog *p) { Reg *r, *r1, *r2; Prog *p1; int i, z; int32 initpc, val, npc; uint32 vreg; Bits bit; struct { int32 m; int32 c; Reg* p; } log5[6], *lp; firstr = R; lastr = R; nvar = 0; regbits = 0; for(z=0; zm = val; lp->c = 0; lp->p = R; val /= 5L; lp++; } val = 0; for(; p != P; p = p->link) { switch(p->as) { case ADATA: case AGLOBL: case ANAME: case ASIGNAME: case AFUNCDATA: continue; } r = rega(); if(firstr == R) { firstr = r; lastr = r; } else { lastr->link = r; r->p1 = lastr; lastr->s1 = r; lastr = r; } r->prog = p; r->pc = val; val++; lp = log5; for(i=0; i<5; i++) { lp->c--; if(lp->c <= 0) { lp->c = lp->m; if(lp->p != R) lp->p->log5 = r; lp->p = r; (lp+1)->c = 0; break; } lp++; } r1 = r->p1; if(r1 != R) switch(r1->prog->as) { case ARET: case AB: case ARFE: r->p1 = R; r1->s1 = R; } /* * left side always read */ bit = mkvar(&p->from, p->as==AMOVW); for(z=0; zuse1.b[z] |= bit.b[z]; /* * right side depends on opcode */ bit = mkvar(&p->to, 0); if(bany(&bit)) switch(p->as) { default: diag(Z, "reg: unknown asop: %A", p->as); break; /* * right side write */ case ANOP: case AMOVB: case AMOVBS: case AMOVBU: case AMOVH: case AMOVHS: case AMOVHU: case AMOVW: case AMOVF: case AMOVD: for(z=0; zset.b[z] |= bit.b[z]; break; /* * right side read */ case APLD: for(z=0; zuse2.b[z] |= bit.b[z]; break; /* * funny */ case ABL: for(z=0; zas == AMOVM) { if(p->from.type == D_CONST) z = p->from.offset; else z = p->to.offset; for(i=0; z; i++) { if(z&1) regbits |= RtoB(i); z >>= 1; } } } if(firstr == R) return; initpc = pc - val; npc = val; /* * pass 2 * turn branch references to pointers * build back pointers */ for(r = firstr; r != R; r = r->link) { p = r->prog; if(p->to.type == D_BRANCH) { val = p->to.offset - initpc; r1 = firstr; while(r1 != R) { r2 = r1->log5; if(r2 != R && val >= r2->pc) { r1 = r2; continue; } if(r1->pc == val) break; r1 = r1->link; } if(r1 == R) { nearln = p->lineno; diag(Z, "ref not found\n%P", p); continue; } if(r1 == r) { nearln = p->lineno; diag(Z, "ref to self\n%P", p); continue; } r->s2 = r1; r->p2link = r1->p2; r1->p2 = r; } } if(debug['R']) { p = firstr->prog; print("\n%L %D\n", p->lineno, &p->from); } /* * pass 2.5 * find looping structure */ for(r = firstr; r != R; r = r->link) r->active = 0; change = 0; loopit(firstr, npc); /* * pass 3 * iterate propagating usage * back until flow graph is complete */ loop1: change = 0; for(r = firstr; r != R; r = r->link) r->active = 0; for(r = firstr; r != R; r = r->link) if(r->prog->as == ARET) prop(r, zbits, zbits); loop11: /* pick up unreachable code */ i = 0; for(r = firstr; r != R; r = r1) { r1 = r->link; if(r1 && r1->active && !r->active) { prop(r, zbits, zbits); i = 1; } } if(i) goto loop11; if(change) goto loop1; /* * pass 4 * iterate propagating register/variable synchrony * forward until graph is complete */ loop2: change = 0; for(r = firstr; r != R; r = r->link) r->active = 0; synch(firstr, zbits); if(change) goto loop2; addsplits(); if(debug['R'] && debug['v']) { print("\nprop structure:\n"); for(r = firstr; r != R; r = r->link) { print("%d:%P", r->loop, r->prog); for(z=0; zset.b[z] | r->refahead.b[z] | r->calahead.b[z] | r->refbehind.b[z] | r->calbehind.b[z] | r->use1.b[z] | r->use2.b[z]; if(bany(&bit)) { print("\t"); if(bany(&r->use1)) print(" u1=%B", r->use1); if(bany(&r->use2)) print(" u2=%B", r->use2); if(bany(&r->set)) print(" st=%B", r->set); if(bany(&r->refahead)) print(" ra=%B", r->refahead); if(bany(&r->calahead)) print(" ca=%B", r->calahead); if(bany(&r->refbehind)) print(" rb=%B", r->refbehind); if(bany(&r->calbehind)) print(" cb=%B", r->calbehind); } print("\n"); } } /* * pass 5 * isolate regions * calculate costs (paint1) */ r = firstr; if(r) { for(z=0; zrefahead.b[z] | r->calahead.b[z]) & ~(externs.b[z] | params.b[z] | addrs.b[z] | consts.b[z]); if(bany(&bit)) { nearln = r->prog->lineno; warn(Z, "used and not set: %B", bit); if(debug['R'] && !debug['w']) print("used and not set: %B\n", bit); } } for(r = firstr; r != R; r = r->link) r->act = zbits; rgp = region; nregion = 0; for(r = firstr; r != R; r = r->link) { for(z=0; zset.b[z] & ~(r->refahead.b[z] | r->calahead.b[z] | addrs.b[z]); if(bany(&bit)) { nearln = r->prog->lineno; warn(Z, "set and not used: %B", bit); if(debug['R']) print("set and not used: %B\n", bit); excise(r); } for(z=0; zact.b[z] | addrs.b[z]); while(bany(&bit)) { i = bnum(bit); rgp->enter = r; rgp->varno = i; change = 0; if(debug['R'] && debug['v']) print("\n"); paint1(r, i); bit.b[i/32] &= ~(1L<<(i%32)); if(change <= 0) { if(debug['R']) print("%L $%d: %B\n", r->prog->lineno, change, blsh(i)); continue; } rgp->cost = change; nregion++; if(nregion >= NRGN) { warn(Z, "too many regions"); goto brk; } rgp++; } } brk: qsort(region, nregion, sizeof(region[0]), rcmp); /* * pass 6 * determine used registers (paint2) * replace code (paint3) */ rgp = region; for(i=0; ivarno); vreg = paint2(rgp->enter, rgp->varno); vreg = allreg(vreg, rgp); if(debug['R']) { if(rgp->regno >= NREG) print("%L $%d F%d: %B\n", rgp->enter->prog->lineno, rgp->cost, rgp->regno-NREG, bit); else print("%L $%d R%d: %B\n", rgp->enter->prog->lineno, rgp->cost, rgp->regno, bit); } if(rgp->regno != 0) paint3(rgp->enter, rgp->varno, vreg, rgp->regno); rgp++; } /* * pass 7 * peep-hole on basic block */ if(!debug['R'] || debug['P']) peep(); /* * pass 8 * recalculate pc */ val = initpc; for(r = firstr; r != R; r = r1) { r->pc = val; p = r->prog; p1 = P; r1 = r->link; if(r1 != R) p1 = r1->prog; for(; p != p1; p = p->link) { switch(p->as) { default: val++; break; case ANOP: case ADATA: case AGLOBL: case ANAME: case ASIGNAME: case AFUNCDATA: break; } } } pc = val; /* * fix up branches */ if(debug['R']) if(bany(&addrs)) print("addrs: %B\n", addrs); r1 = 0; /* set */ for(r = firstr; r != R; r = r->link) { p = r->prog; if(p->to.type == D_BRANCH) { p->to.offset = r->s2->pc; p->to.u.branch = r->s2->prog; } r1 = r; } /* * last pass * eliminate nops * free aux structures */ for(p = firstr->prog; p != P; p = p->link){ while(p->link && p->link->as == ANOP) p->link = p->link->link; } if(r1 != R) { r1->link = freer; freer = firstr; } } void addsplits(void) { Reg *r, *r1; int z, i; Bits bit; for(r = firstr; r != R; r = r->link) { if(r->loop > 1) continue; if(r->prog->as == ABL) continue; for(r1 = r->p2; r1 != R; r1 = r1->p2link) { if(r1->loop <= 1) continue; for(z=0; zcalbehind.b[z] & (r->refahead.b[z] | r->use1.b[z] | r->use2.b[z]) & ~(r->calahead.b[z] & addrs.b[z]); while(bany(&bit)) { i = bnum(bit); bit.b[i/32] &= ~(1L << (i%32)); } } } } /* * add mov b,rn * just after r */ void addmove(Reg *r, int bn, int rn, int f) { Prog *p, *p1; Addr *a; Var *v; p1 = alloc(sizeof(*p1)); *p1 = zprog; p = r->prog; p1->link = p->link; p->link = p1; p1->lineno = p->lineno; v = var + bn; a = &p1->to; a->sym = v->sym; a->name = v->name; a->offset = v->offset; a->etype = v->etype; a->type = D_OREG; if(a->etype == TARRAY || a->sym == nil) a->type = D_CONST; p1->as = AMOVW; if(v->etype == TCHAR || v->etype == TUCHAR) p1->as = AMOVBS; if(v->etype == TSHORT || v->etype == TUSHORT) p1->as = AMOVHS; if(v->etype == TFLOAT) p1->as = AMOVF; if(v->etype == TDOUBLE) p1->as = AMOVD; p1->from.type = D_REG; p1->from.reg = rn; if(rn >= NREG) { p1->from.type = D_FREG; p1->from.reg = rn-NREG; } if(!f) { p1->from = *a; *a = zprog.from; a->type = D_REG; a->reg = rn; if(rn >= NREG) { a->type = D_FREG; a->reg = rn-NREG; } if(v->etype == TUCHAR) p1->as = AMOVBU; if(v->etype == TUSHORT) p1->as = AMOVHU; } if(debug['R']) print("%P\t.a%P\n", p, p1); } Bits mkvar(Addr *a, int docon) { Var *v; int i, t, n, et, z; int32 o; Bits bit; LSym *s; t = a->type; if(t == D_REG && a->reg != NREG) regbits |= RtoB(a->reg); if(t == D_FREG && a->reg != NREG) regbits |= FtoB(a->reg); s = a->sym; o = a->offset; et = a->etype; if(s == nil) { if(t != D_CONST || !docon || a->reg != NREG) goto none; et = TLONG; } if(t == D_CONST) { if(s == nil && sval(o)) goto none; } n = a->name; v = var; for(i=0; isym) if(n == v->name) if(o == v->offset) goto out; v++; } if(s) if(s->name[0] == '.') goto none; if(nvar >= NVAR) { if(debug['w'] > 1 && s) warn(Z, "variable not optimized: %s", s->name); goto none; } i = nvar; nvar++; v = &var[i]; v->sym = s; v->offset = o; v->etype = et; v->name = n; if(debug['R']) print("bit=%2d et=%2d %D\n", i, et, a); out: bit = blsh(i); if(n == D_EXTERN || n == D_STATIC) for(z=0; zetype != et || !typechlpfd[et]) /* funny punning */ for(z=0; zp1) { for(z=0; zrefahead.b[z]; if(ref.b[z] != r1->refahead.b[z]) { r1->refahead.b[z] = ref.b[z]; change++; } cal.b[z] |= r1->calahead.b[z]; if(cal.b[z] != r1->calahead.b[z]) { r1->calahead.b[z] = cal.b[z]; change++; } } switch(r1->prog->as) { case ABL: for(z=0; zset.b[z]) | r1->use1.b[z] | r1->use2.b[z]; cal.b[z] &= ~(r1->set.b[z] | r1->use1.b[z] | r1->use2.b[z]); r1->refbehind.b[z] = ref.b[z]; r1->calbehind.b[z] = cal.b[z]; } if(r1->active) break; r1->active = 1; } for(; r != r1; r = r->p1) for(r2 = r->p2; r2 != R; r2 = r2->p2link) prop(r2, r->refbehind, r->calbehind); } /* * find looping structure * * 1) find reverse postordering * 2) find approximate dominators, * the actual dominators if the flow graph is reducible * otherwise, dominators plus some other non-dominators. * See Matthew S. Hecht and Jeffrey D. Ullman, * "Analysis of a Simple Algorithm for Global Data Flow Problems", * Conf. Record of ACM Symp. on Principles of Prog. Langs, Boston, Massachusetts, * Oct. 1-3, 1973, pp. 207-217. * 3) find all nodes with a predecessor dominated by the current node. * such a node is a loop head. * recursively, all preds with a greater rpo number are in the loop */ int32 postorder(Reg *r, Reg **rpo2r, int32 n) { Reg *r1; r->rpo = 1; r1 = r->s1; if(r1 && !r1->rpo) n = postorder(r1, rpo2r, n); r1 = r->s2; if(r1 && !r1->rpo) n = postorder(r1, rpo2r, n); rpo2r[n] = r; n++; return n; } int32 rpolca(int32 *idom, int32 rpo1, int32 rpo2) { int32 t; if(rpo1 == -1) return rpo2; while(rpo1 != rpo2){ if(rpo1 > rpo2){ t = rpo2; rpo2 = rpo1; rpo1 = t; } while(rpo1 < rpo2){ t = idom[rpo2]; if(t >= rpo2) fatal(Z, "bad idom"); rpo2 = t; } } return rpo1; } int doms(int32 *idom, int32 r, int32 s) { while(s > r) s = idom[s]; return s == r; } int loophead(int32 *idom, Reg *r) { int32 src; src = r->rpo; if(r->p1 != R && doms(idom, src, r->p1->rpo)) return 1; for(r = r->p2; r != R; r = r->p2link) if(doms(idom, src, r->rpo)) return 1; return 0; } void loopmark(Reg **rpo2r, int32 head, Reg *r) { if(r->rpo < head || r->active == head) return; r->active = head; r->loop += LOOP; if(r->p1 != R) loopmark(rpo2r, head, r->p1); for(r = r->p2; r != R; r = r->p2link) loopmark(rpo2r, head, r); } void loopit(Reg *r, int32 nr) { Reg *r1; int32 i, d, me; if(nr > maxnr) { rpo2r = alloc(nr * sizeof(Reg*)); idom = alloc(nr * sizeof(int32)); maxnr = nr; } d = postorder(r, rpo2r, 0); if(d > nr) fatal(Z, "too many reg nodes"); nr = d; for(i = 0; i < nr / 2; i++){ r1 = rpo2r[i]; rpo2r[i] = rpo2r[nr - 1 - i]; rpo2r[nr - 1 - i] = r1; } for(i = 0; i < nr; i++) rpo2r[i]->rpo = i; idom[0] = 0; for(i = 0; i < nr; i++){ r1 = rpo2r[i]; me = r1->rpo; d = -1; if(r1->p1 != R && r1->p1->rpo < me) d = r1->p1->rpo; for(r1 = r1->p2; r1 != nil; r1 = r1->p2link) if(r1->rpo < me) d = rpolca(idom, d, r1->rpo); idom[i] = d; } for(i = 0; i < nr; i++){ r1 = rpo2r[i]; r1->loop++; if(r1->p2 != R && loophead(idom, r1)) loopmark(rpo2r, i, r1); } } void synch(Reg *r, Bits dif) { Reg *r1; int z; for(r1 = r; r1 != R; r1 = r1->s1) { for(z=0; zrefbehind.b[z] & r1->refahead.b[z])) | r1->set.b[z] | r1->regdiff.b[z]; if(dif.b[z] != r1->regdiff.b[z]) { r1->regdiff.b[z] = dif.b[z]; change++; } } if(r1->active) break; r1->active = 1; for(z=0; zcalbehind.b[z] & r1->calahead.b[z]); if(r1->s2 != R) synch(r1->s2, dif); } } uint32 allreg(uint32 b, Rgn *r) { Var *v; int i; v = var + r->varno; r->regno = 0; switch(v->etype) { default: diag(Z, "unknown etype %d/%d", bitno(b), v->etype); break; case TCHAR: case TUCHAR: case TSHORT: case TUSHORT: case TINT: case TUINT: case TLONG: case TULONG: case TIND: case TARRAY: i = BtoR(~b); if(i && r->cost >= 0) { r->regno = i; return RtoB(i); } break; case TVLONG: case TDOUBLE: case TFLOAT: i = BtoF(~b); if(i && r->cost >= 0) { r->regno = i+NREG; return FtoB(i); } break; } return 0; } void paint1(Reg *r, int bn) { Reg *r1; Prog *p; int z; uint32 bb; z = bn/32; bb = 1L<<(bn%32); if(r->act.b[z] & bb) return; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = r->p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(r1->act.b[z] & bb) break; r = r1; } if(LOAD(r) & ~(r->set.b[z] & ~(r->use1.b[z]|r->use2.b[z])) & bb) { change -= CLOAD * r->loop; if(debug['R'] && debug['v']) print("%d%P\td %B $%d\n", r->loop, r->prog, blsh(bn), change); } for(;;) { r->act.b[z] |= bb; p = r->prog; if(r->use1.b[z] & bb) { change += CREF * r->loop; if(debug['R'] && debug['v']) print("%d%P\tu1 %B $%d\n", r->loop, p, blsh(bn), change); } if((r->use2.b[z]|r->set.b[z]) & bb) { change += CREF * r->loop; if(debug['R'] && debug['v']) print("%d%P\tu2 %B $%d\n", r->loop, p, blsh(bn), change); } if(STORE(r) & r->regdiff.b[z] & bb) { change -= CLOAD * r->loop; if(debug['R'] && debug['v']) print("%d%P\tst %B $%d\n", r->loop, p, blsh(bn), change); } if(r->refbehind.b[z] & bb) for(r1 = r->p2; r1 != R; r1 = r1->p2link) if(r1->refahead.b[z] & bb) paint1(r1, bn); if(!(r->refahead.b[z] & bb)) break; r1 = r->s2; if(r1 != R) if(r1->refbehind.b[z] & bb) paint1(r1, bn); r = r->s1; if(r == R) break; if(r->act.b[z] & bb) break; if(!(r->refbehind.b[z] & bb)) break; } } uint32 paint2(Reg *r, int bn) { Reg *r1; int z; uint32 bb, vreg; z = bn/32; bb = 1L << (bn%32); vreg = regbits; if(!(r->act.b[z] & bb)) return vreg; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = r->p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(!(r1->act.b[z] & bb)) break; r = r1; } for(;;) { r->act.b[z] &= ~bb; vreg |= r->regu; if(r->refbehind.b[z] & bb) for(r1 = r->p2; r1 != R; r1 = r1->p2link) if(r1->refahead.b[z] & bb) vreg |= paint2(r1, bn); if(!(r->refahead.b[z] & bb)) break; r1 = r->s2; if(r1 != R) if(r1->refbehind.b[z] & bb) vreg |= paint2(r1, bn); r = r->s1; if(r == R) break; if(!(r->act.b[z] & bb)) break; if(!(r->refbehind.b[z] & bb)) break; } return vreg; } void paint3(Reg *r, int bn, int32 rb, int rn) { Reg *r1; Prog *p; int z; uint32 bb; z = bn/32; bb = 1L << (bn%32); if(r->act.b[z] & bb) return; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = r->p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(r1->act.b[z] & bb) break; r = r1; } if(LOAD(r) & ~(r->set.b[z] & ~(r->use1.b[z]|r->use2.b[z])) & bb) addmove(r, bn, rn, 0); for(;;) { r->act.b[z] |= bb; p = r->prog; if(r->use1.b[z] & bb) { if(debug['R']) print("%P", p); addreg(&p->from, rn); if(debug['R']) print("\t.c%P\n", p); } if((r->use2.b[z]|r->set.b[z]) & bb) { if(debug['R']) print("%P", p); addreg(&p->to, rn); if(debug['R']) print("\t.c%P\n", p); } if(STORE(r) & r->regdiff.b[z] & bb) addmove(r, bn, rn, 1); r->regu |= rb; if(r->refbehind.b[z] & bb) for(r1 = r->p2; r1 != R; r1 = r1->p2link) if(r1->refahead.b[z] & bb) paint3(r1, bn, rb, rn); if(!(r->refahead.b[z] & bb)) break; r1 = r->s2; if(r1 != R) if(r1->refbehind.b[z] & bb) paint3(r1, bn, rb, rn); r = r->s1; if(r == R) break; if(r->act.b[z] & bb) break; if(!(r->refbehind.b[z] & bb)) break; } } void addreg(Addr *a, int rn) { a->sym = 0; a->name = D_NONE; a->type = D_REG; a->reg = rn; if(rn >= NREG) { a->type = D_FREG; a->reg = rn-NREG; } } /* * bit reg * 0 R0 * 1 R1 * ... ... * 10 R10 * 12 R12 */ int32 RtoB(int r) { if(r < 2 || (r >= REGTMP-2 && r != 12)) // excluded R9 and R10 for m and g, but not R12 return 0; return 1L << r; } int BtoR(int32 b) { b &= 0x11fcL; // excluded R9 and R10 for m and g, but not R12 if(b == 0) return 0; return bitno(b); } /* * bit reg * 18 F2 * 19 F3 * ... ... * 31 F15 */ int32 FtoB(int f) { if(f < 2 || f > NFREG-1) return 0; return 1L << (f + 16); } int BtoF(int32 b) { b &= 0xfffc0000L; if(b == 0) return 0; return bitno(b) - 16; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5c/sgen.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000011667�12412656737�014453� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5c/sgen.c // http://code.google.com/p/inferno-os/source/browse/utils/5c/sgen.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" Prog* gtext(Sym *s, int32 stkoff) { int32 a; a = argsize(); if((textflag & NOSPLIT) != 0 && stkoff >= 128) yyerror("stack frame too large for NOSPLIT function"); gpseudo(ATEXT, s, nodconst(stkoff)); p->to.type = D_CONST2; p->to.offset2 = a; return p; } void noretval(int n) { if(n & 1) { gins(ANOP, Z, Z); p->to.type = D_REG; p->to.reg = REGRET; } if(n & 2) { gins(ANOP, Z, Z); p->to.type = D_FREG; p->to.reg = FREGRET; } } /* * calculate addressability as follows * CONST ==> 20 $value * NAME ==> 10 name * REGISTER ==> 11 register * INDREG ==> 12 *[(reg)+offset] * &10 ==> 2 $name * ADD(2, 20) ==> 2 $name+offset * ADD(3, 20) ==> 3 $(reg)+offset * &12 ==> 3 $(reg)+offset * *11 ==> 11 ?? * *2 ==> 10 name * *3 ==> 12 *(reg)+offset * calculate complexity (number of registers) */ void xcom(Node *n) { Node *l, *r; int t; if(n == Z) return; l = n->left; r = n->right; n->addable = 0; n->complex = 0; switch(n->op) { case OCONST: n->addable = 20; return; case OREGISTER: n->addable = 11; return; case OINDREG: n->addable = 12; return; case ONAME: n->addable = 10; return; case OADDR: xcom(l); if(l->addable == 10) n->addable = 2; if(l->addable == 12) n->addable = 3; break; case OIND: xcom(l); if(l->addable == 11) n->addable = 12; if(l->addable == 3) n->addable = 12; if(l->addable == 2) n->addable = 10; break; case OADD: xcom(l); xcom(r); if(l->addable == 20) { if(r->addable == 2) n->addable = 2; if(r->addable == 3) n->addable = 3; } if(r->addable == 20) { if(l->addable == 2) n->addable = 2; if(l->addable == 3) n->addable = 3; } break; case OASLMUL: case OASMUL: xcom(l); xcom(r); t = vlog(r); if(t >= 0) { n->op = OASASHL; r->vconst = t; r->type = types[TINT]; } break; case OMUL: case OLMUL: xcom(l); xcom(r); t = vlog(r); if(t >= 0) { n->op = OASHL; r->vconst = t; r->type = types[TINT]; } t = vlog(l); if(t >= 0) { n->op = OASHL; n->left = r; n->right = l; r = l; l = n->left; r->vconst = t; r->type = types[TINT]; } break; case OASLDIV: xcom(l); xcom(r); t = vlog(r); if(t >= 0) { n->op = OASLSHR; r->vconst = t; r->type = types[TINT]; } break; case OLDIV: xcom(l); xcom(r); t = vlog(r); if(t >= 0) { n->op = OLSHR; r->vconst = t; r->type = types[TINT]; } break; case OASLMOD: xcom(l); xcom(r); t = vlog(r); if(t >= 0) { n->op = OASAND; r->vconst--; } break; case OLMOD: xcom(l); xcom(r); t = vlog(r); if(t >= 0) { n->op = OAND; r->vconst--; } break; default: if(l != Z) xcom(l); if(r != Z) xcom(r); break; } if(n->addable >= 10) return; if(l != Z) n->complex = l->complex; if(r != Z) { if(r->complex == n->complex) n->complex = r->complex+1; else if(r->complex > n->complex) n->complex = r->complex; } if(n->complex == 0) n->complex++; if(com64(n)) return; switch(n->op) { case OFUNC: n->complex = FNX; break; case OADD: case OXOR: case OAND: case OOR: case OEQ: case ONE: /* * immediate operators, make const on right */ if(l->op == OCONST) { n->left = r; n->right = l; } break; } } �������������������������������������������������������������������������go/src/cmd/5c/swt.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000022425�12412656737�014326� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5c/swt.c // http://code.google.com/p/inferno-os/source/browse/utils/5c/swt.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" void swit1(C1 *q, int nc, int32 def, Node *n) { Node nreg; if(typev[n->type->etype]) { regsalloc(&nreg, n); nreg.type = types[TVLONG]; cgen(n, &nreg); swit2(q, nc, def, &nreg); return; } regalloc(&nreg, n, Z); nreg.type = types[TLONG]; cgen(n, &nreg); swit2(q, nc, def, &nreg); regfree(&nreg); } void swit2(C1 *q, int nc, int32 def, Node *n) { C1 *r; int i; int32 v; Prog *sp; if(nc >= 3) { i = (q+nc-1)->val - (q+0)->val; if(i > 0 && i < nc*2) goto direct; } if(nc < 5) { for(i=0; ival); gopcode(OEQ, nodconst(q->val), n, Z); patch(p, q->label); q++; } gbranch(OGOTO); patch(p, def); return; } i = nc / 2; r = q+i; if(debug['W']) print("case > %.8ux\n", r->val); gopcode(OGT, nodconst(r->val), n, Z); sp = p; gopcode(OEQ, nodconst(r->val), n, Z); /* just gen the B.EQ */ patch(p, r->label); swit2(q, i, def, n); if(debug['W']) print("case < %.8ux\n", r->val); patch(sp, pc); swit2(r+1, nc-i-1, def, n); return; direct: v = q->val; if(v != 0) gopcode(OSUB, nodconst(v), Z, n); gopcode(OCASE, nodconst((q+nc-1)->val - v), n, Z); patch(p, def); for(i=0; ival); while(q->val != v) { nextpc(); p->as = ABCASE; patch(p, def); v++; } nextpc(); p->as = ABCASE; patch(p, q->label); q++; v++; } gbranch(OGOTO); /* so that regopt() won't be confused */ patch(p, def); } void bitload(Node *b, Node *n1, Node *n2, Node *n3, Node *nn) { int sh; int32 v; Node *l; /* * n1 gets adjusted/masked value * n2 gets address of cell * n3 gets contents of cell */ l = b->left; if(n2 != Z) { regalloc(n1, l, nn); reglcgen(n2, l, Z); regalloc(n3, l, Z); gopcode(OAS, n2, Z, n3); gopcode(OAS, n3, Z, n1); } else { regalloc(n1, l, nn); cgen(l, n1); } if(b->type->shift == 0 && typeu[b->type->etype]) { v = ~0 + (1L << b->type->nbits); gopcode(OAND, nodconst(v), Z, n1); } else { sh = 32 - b->type->shift - b->type->nbits; if(sh > 0) gopcode(OASHL, nodconst(sh), Z, n1); sh += b->type->shift; if(sh > 0) if(typeu[b->type->etype]) gopcode(OLSHR, nodconst(sh), Z, n1); else gopcode(OASHR, nodconst(sh), Z, n1); } } void bitstore(Node *b, Node *n1, Node *n2, Node *n3, Node *nn) { int32 v; Node nod, *l; int sh; /* * n1 has adjusted/masked value * n2 has address of cell * n3 has contents of cell */ l = b->left; regalloc(&nod, l, Z); v = ~0 + (1L << b->type->nbits); gopcode(OAND, nodconst(v), Z, n1); gopcode(OAS, n1, Z, &nod); if(nn != Z) gopcode(OAS, n1, Z, nn); sh = b->type->shift; if(sh > 0) gopcode(OASHL, nodconst(sh), Z, &nod); v <<= sh; gopcode(OAND, nodconst(~v), Z, n3); gopcode(OOR, n3, Z, &nod); gopcode(OAS, &nod, Z, n2); regfree(&nod); regfree(n1); regfree(n2); regfree(n3); } int32 outstring(char *s, int32 n) { int32 r; if(suppress) return nstring; r = nstring; while(n) { string[mnstring] = *s++; mnstring++; nstring++; if(mnstring >= NSNAME) { gpseudo(ADATA, symstring, nodconst(0L)); p->from.offset += nstring - NSNAME; p->reg = NSNAME; p->to.type = D_SCONST; memmove(p->to.u.sval, string, NSNAME); mnstring = 0; } n--; } return r; } int mulcon(Node *n, Node *nn) { Node *l, *r, nod1, nod2; Multab *m; int32 v, vs; int o; char code[sizeof(m->code)+2], *p; if(typefd[n->type->etype]) return 0; l = n->left; r = n->right; if(l->op == OCONST) { l = r; r = n->left; } if(r->op != OCONST) return 0; v = convvtox(r->vconst, n->type->etype); if(v != r->vconst) { if(debug['M']) print("%L multiply conv: %lld\n", n->lineno, r->vconst); return 0; } m = mulcon0(v); if(!m) { if(debug['M']) print("%L multiply table: %lld\n", n->lineno, r->vconst); return 0; } if(debug['M'] && debug['v']) print("%L multiply: %d\n", n->lineno, v); memmove(code, m->code, sizeof(m->code)); code[sizeof(m->code)] = 0; p = code; if(p[1] == 'i') p += 2; regalloc(&nod1, n, nn); cgen(l, &nod1); vs = v; regalloc(&nod2, n, Z); loop: switch(*p) { case 0: regfree(&nod2); if(vs < 0) { gopcode(OAS, &nod1, Z, &nod1); gopcode(OSUB, &nod1, nodconst(0), nn); } else gopcode(OAS, &nod1, Z, nn); regfree(&nod1); return 1; case '+': o = OADD; goto addsub; case '-': o = OSUB; addsub: /* number is r,n,l */ v = p[1] - '0'; r = &nod1; if(v&4) r = &nod2; n = &nod1; if(v&2) n = &nod2; l = &nod1; if(v&1) l = &nod2; gopcode(o, l, n, r); break; default: /* op is shiftcount, number is r,l */ v = p[1] - '0'; r = &nod1; if(v&2) r = &nod2; l = &nod1; if(v&1) l = &nod2; v = *p - 'a'; if(v < 0 || v >= 32) { diag(n, "mulcon unknown op: %c%c", p[0], p[1]); break; } gopcode(OASHL, nodconst(v), l, r); break; } p += 2; goto loop; } void sextern(Sym *s, Node *a, int32 o, int32 w) { int32 e, lw; for(e=0; efrom.offset += o+e; p->reg = lw; p->to.type = D_SCONST; memmove(p->to.u.sval, a->cstring+e, lw); } } void gextern(Sym *s, Node *a, int32 o, int32 w) { if(a->op == OCONST && typev[a->type->etype]) { if(isbigendian) gpseudo(ADATA, s, nod32const(a->vconst>>32)); else gpseudo(ADATA, s, nod32const(a->vconst)); p->from.offset += o; p->reg = 4; if(isbigendian) gpseudo(ADATA, s, nod32const(a->vconst)); else gpseudo(ADATA, s, nod32const(a->vconst>>32)); p->from.offset += o + 4; p->reg = 4; return; } gpseudo(ADATA, s, a); p->from.offset += o; p->reg = w; if(p->to.type == D_OREG) p->to.type = D_CONST; } void outcode(void) { Bprint(&outbuf, "go object %s %s %s\n", getgoos(), getgoarch(), getgoversion()); if(pragcgobuf.to > pragcgobuf.start) { Bprint(&outbuf, "\n"); Bprint(&outbuf, "$$ // exports\n\n"); Bprint(&outbuf, "$$ // local types\n\n"); Bprint(&outbuf, "$$ // cgo\n"); Bprint(&outbuf, "%s", fmtstrflush(&pragcgobuf)); Bprint(&outbuf, "\n$$\n\n"); } Bprint(&outbuf, "!\n"); writeobj(ctxt, &outbuf); lastp = P; } int32 align(int32 i, Type *t, int op, int32 *maxalign) { int32 o; Type *v; int w; o = i; w = 1; switch(op) { default: diag(Z, "unknown align opcode %d", op); break; case Asu2: /* padding at end of a struct */ w = *maxalign; if(w < 1) w = 1; if(packflg) w = packflg; break; case Ael1: /* initial align of struct element */ for(v=t; v->etype==TARRAY; v=v->link) ; if(v->etype == TSTRUCT || v->etype == TUNION) w = v->align; else { w = ewidth[v->etype]; if(w == 8) w = 4; } if(w < 1 || w > SZ_LONG) fatal(Z, "align"); if(packflg) w = packflg; break; case Ael2: /* width of a struct element */ o += t->width; break; case Aarg0: /* initial passbyptr argument in arg list */ if(typesuv[t->etype]) { o = align(o, types[TIND], Aarg1, nil); o = align(o, types[TIND], Aarg2, nil); } break; case Aarg1: /* initial align of parameter */ w = ewidth[t->etype]; if(w <= 0 || w >= SZ_LONG) { w = SZ_LONG; break; } w = 1; /* little endian no adjustment */ break; case Aarg2: /* width of a parameter */ o += t->width; w = t->width; if(w > SZ_LONG) w = SZ_LONG; break; case Aaut3: /* total align of automatic */ o = align(o, t, Ael2, nil); o = align(o, t, Ael1, nil); w = SZ_LONG; /* because of a pun in cc/dcl.c:contig() */ break; } o = xround(o, w); if(maxalign != nil && *maxalign < w) *maxalign = w; if(debug['A']) print("align %s %d %T = %d\n", bnames[op], i, t, o); return o; } int32 maxround(int32 max, int32 v) { v = xround(v, SZ_LONG); if(v > max) return v; return max; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5c/txt.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000052402�12412656737�014326� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5c/txt.c // http://code.google.com/p/inferno-os/source/browse/utils/5c/txt.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" int thechar = '5'; char *thestring = "arm"; LinkArch *thelinkarch = &linkarm; void linkarchinit(void) { } void ginit(void) { Type *t; exregoffset = REGEXT; exfregoffset = FREGEXT; listinit(); nstring = 0; mnstring = 0; nrathole = 0; pc = 0; breakpc = -1; continpc = -1; cases = C; lastp = P; tfield = types[TLONG]; zprog.link = P; zprog.as = AGOK; zprog.reg = NREG; zprog.from.type = D_NONE; zprog.from.name = D_NONE; zprog.from.reg = NREG; zprog.to = zprog.from; zprog.scond = 0xE; regnode.op = OREGISTER; regnode.class = CEXREG; regnode.reg = REGTMP; regnode.complex = 0; regnode.addable = 11; regnode.type = types[TLONG]; constnode.op = OCONST; constnode.class = CXXX; constnode.complex = 0; constnode.addable = 20; constnode.type = types[TLONG]; fconstnode.op = OCONST; fconstnode.class = CXXX; fconstnode.complex = 0; fconstnode.addable = 20; fconstnode.type = types[TDOUBLE]; nodsafe = new(ONAME, Z, Z); nodsafe->sym = slookup(".safe"); nodsafe->type = types[TINT]; nodsafe->etype = types[TINT]->etype; nodsafe->class = CAUTO; complex(nodsafe); t = typ(TARRAY, types[TCHAR]); symrathole = slookup(".rathole"); symrathole->class = CGLOBL; symrathole->type = t; nodrat = new(ONAME, Z, Z); nodrat->sym = symrathole; nodrat->type = types[TIND]; nodrat->etype = TVOID; nodrat->class = CGLOBL; complex(nodrat); nodrat->type = t; nodret = new(ONAME, Z, Z); nodret->sym = slookup(".ret"); nodret->type = types[TIND]; nodret->etype = TIND; nodret->class = CPARAM; nodret = new(OIND, nodret, Z); complex(nodret); com64init(); memset(reg, 0, sizeof(reg)); } void gclean(void) { int i; Sym *s; for(i=0; itype->width = nstring; symrathole->type->width = nrathole; for(i=0; ilink) { if(s->type == T) continue; if(s->type->width == 0) continue; if(s->class != CGLOBL && s->class != CSTATIC) continue; if(s->type == types[TENUM]) continue; gpseudo(AGLOBL, s, nodconst(s->type->width)); } nextpc(); p->as = AEND; outcode(); } void nextpc(void) { Plist *pl; p = alloc(sizeof(*p)); *p = zprog; p->lineno = nearln; pc++; if(lastp == nil) { pl = linknewplist(ctxt); pl->firstpc = p; } else lastp->link = p; lastp = p; } void gargs(Node *n, Node *tn1, Node *tn2) { int32 regs; Node fnxargs[20], *fnxp; regs = cursafe; fnxp = fnxargs; garg1(n, tn1, tn2, 0, &fnxp); /* compile fns to temps */ curarg = 0; fnxp = fnxargs; garg1(n, tn1, tn2, 1, &fnxp); /* compile normal args and temps */ cursafe = regs; } void garg1(Node *n, Node *tn1, Node *tn2, int f, Node **fnxp) { Node nod; if(n == Z) return; if(n->op == OLIST) { garg1(n->left, tn1, tn2, f, fnxp); garg1(n->right, tn1, tn2, f, fnxp); return; } if(f == 0) { if(n->complex >= FNX) { regsalloc(*fnxp, n); nod = znode; nod.op = OAS; nod.left = *fnxp; nod.right = n; nod.type = n->type; cgen(&nod, Z); (*fnxp)++; } return; } if(typesuv[n->type->etype]) { regaalloc(tn2, n); if(n->complex >= FNX) { sugen(*fnxp, tn2, n->type->width); (*fnxp)++; } else sugen(n, tn2, n->type->width); return; } if(REGARG >= 0 && curarg == 0 && typechlp[n->type->etype]) { regaalloc1(tn1, n); if(n->complex >= FNX) { cgen(*fnxp, tn1); (*fnxp)++; } else cgen(n, tn1); return; } regalloc(tn1, n, Z); if(n->complex >= FNX) { cgen(*fnxp, tn1); (*fnxp)++; } else cgen(n, tn1); regaalloc(tn2, n); gopcode(OAS, tn1, Z, tn2); regfree(tn1); } Node* nodconst(int32 v) { constnode.vconst = v; return &constnode; } Node* nod32const(vlong v) { constnode.vconst = v & MASK(32); return &constnode; } Node* nodfconst(double d) { fconstnode.fconst = d; return &fconstnode; } void nodreg(Node *n, Node *nn, int reg) { *n = regnode; n->reg = reg; n->type = nn->type; n->lineno = nn->lineno; } void regret(Node *n, Node *nn) { int r; r = REGRET; if(typefd[nn->type->etype]) r = FREGRET+NREG; nodreg(n, nn, r); reg[r]++; } int tmpreg(void) { int i; for(i=REGRET+1; itype->etype) { case TCHAR: case TUCHAR: case TSHORT: case TUSHORT: case TINT: case TUINT: case TLONG: case TULONG: case TIND: if(o != Z && o->op == OREGISTER) { i = o->reg; if(i >= 0 && i < NREG) goto out; } for(i=REGRET+1; i<=REGEXT-2; i++) if(reg[i] == 0) goto out; diag(tn, "out of fixed registers"); goto err; case TFLOAT: case TDOUBLE: case TVLONG: if(o != Z && o->op == OREGISTER) { i = o->reg; if(i >= NREG && i < NREG+NFREG) goto out; } for(i=NREG; itype); err: nodreg(n, tn, 0); return; out: reg[i]++; nodreg(n, tn, i); } void regialloc(Node *n, Node *tn, Node *o) { Node nod; nod = *tn; nod.type = types[TIND]; regalloc(n, &nod, o); } void regfree(Node *n) { int i; i = 0; if(n->op != OREGISTER && n->op != OINDREG) goto err; i = n->reg; if(i < 0 || i >= nelem(reg)) goto err; if(reg[i] <= 0) goto err; reg[i]--; return; err: diag(n, "error in regfree: %d", i); } void regsalloc(Node *n, Node *nn) { cursafe = align(cursafe, nn->type, Aaut3, nil); maxargsafe = maxround(maxargsafe, cursafe+curarg); *n = *nodsafe; n->xoffset = -(stkoff + cursafe); n->type = nn->type; n->etype = nn->type->etype; n->lineno = nn->lineno; } void regaalloc1(Node *n, Node *nn) { if(REGARG < 0) { fatal(n, "regaalloc1 and REGARG<0"); return; } nodreg(n, nn, REGARG); reg[REGARG]++; curarg = align(curarg, nn->type, Aarg1, nil); curarg = align(curarg, nn->type, Aarg2, nil); maxargsafe = maxround(maxargsafe, cursafe+curarg); } void regaalloc(Node *n, Node *nn) { curarg = align(curarg, nn->type, Aarg1, nil); *n = *nn; n->op = OINDREG; n->reg = REGSP; n->xoffset = curarg + SZ_LONG; n->complex = 0; n->addable = 20; curarg = align(curarg, nn->type, Aarg2, nil); maxargsafe = maxround(maxargsafe, cursafe+curarg); } void regind(Node *n, Node *nn) { if(n->op != OREGISTER) { diag(n, "regind not OREGISTER"); return; } n->op = OINDREG; n->type = nn->type; } void raddr(Node *n, Prog *p) { Addr a; naddr(n, &a); if(R0ISZERO && a.type == D_CONST && a.offset == 0) { a.type = D_REG; a.reg = 0; } if(a.type != D_REG && a.type != D_FREG) { if(n) diag(n, "bad in raddr: %O", n->op); else diag(n, "bad in raddr: "); p->reg = NREG; } else p->reg = a.reg; } void naddr(Node *n, Addr *a) { int32 v; a->type = D_NONE; if(n == Z) return; switch(n->op) { default: bad: diag(n, "bad in naddr: %O", n->op); break; case OREGISTER: a->type = D_REG; a->sym = nil; a->reg = n->reg; if(a->reg >= NREG) { a->type = D_FREG; a->reg -= NREG; } break; case OIND: naddr(n->left, a); if(a->type == D_REG) { a->type = D_OREG; break; } if(a->type == D_CONST) { a->type = D_OREG; break; } goto bad; case OINDREG: a->type = D_OREG; a->sym = nil; a->offset = n->xoffset; a->reg = n->reg; break; case ONAME: a->etype = n->etype; a->type = D_OREG; a->name = D_STATIC; a->sym = linksym(n->sym); a->offset = n->xoffset; if(n->class == CSTATIC) break; if(n->class == CEXTERN || n->class == CGLOBL) { a->name = D_EXTERN; break; } if(n->class == CAUTO) { a->name = D_AUTO; break; } if(n->class == CPARAM) { a->name = D_PARAM; break; } goto bad; case OCONST: a->sym = nil; a->reg = NREG; if(typefd[n->type->etype]) { a->type = D_FCONST; a->u.dval = n->fconst; } else { a->type = D_CONST; a->offset = n->vconst; } break; case OADDR: naddr(n->left, a); if(a->type == D_OREG) { a->type = D_CONST; break; } goto bad; case OADD: if(n->left->op == OCONST) { naddr(n->left, a); v = a->offset; naddr(n->right, a); } else { naddr(n->right, a); v = a->offset; naddr(n->left, a); } a->offset += v; break; } } void fop(int as, int f1, int f2, Node *t) { Node nod1, nod2, nod3; nodreg(&nod1, t, NREG+f1); nodreg(&nod2, t, NREG+f2); regalloc(&nod3, t, t); gopcode(as, &nod1, &nod2, &nod3); gmove(&nod3, t); regfree(&nod3); } void gmovm(Node *f, Node *t, int w) { gins(AMOVM, f, t); p->scond |= C_UBIT; if(w) p->scond |= C_WBIT; } void gmove(Node *f, Node *t) { int ft, tt, a; Node nod, nod1; Prog *p1; ft = f->type->etype; tt = t->type->etype; if(ft == TDOUBLE && f->op == OCONST) { } if(ft == TFLOAT && f->op == OCONST) { } /* * a load -- * put it into a register then * worry what to do with it. */ if(f->op == ONAME || f->op == OINDREG || f->op == OIND) { switch(ft) { default: a = AMOVW; break; case TFLOAT: a = AMOVF; break; case TDOUBLE: a = AMOVD; break; case TCHAR: a = AMOVBS; break; case TUCHAR: a = AMOVBU; break; case TSHORT: a = AMOVHS; break; case TUSHORT: a = AMOVHU; break; } if(typechlp[ft] && typeilp[tt]) regalloc(&nod, t, t); else regalloc(&nod, f, t); gins(a, f, &nod); gmove(&nod, t); regfree(&nod); return; } /* * a store -- * put it into a register then * store it. */ if(t->op == ONAME || t->op == OINDREG || t->op == OIND) { switch(tt) { default: a = AMOVW; break; case TUCHAR: a = AMOVBU; break; case TCHAR: a = AMOVBS; break; case TUSHORT: a = AMOVHU; break; case TSHORT: a = AMOVHS; break; case TFLOAT: a = AMOVF; break; case TVLONG: case TDOUBLE: a = AMOVD; break; } if(ft == tt) regalloc(&nod, t, f); else regalloc(&nod, t, Z); gmove(f, &nod); gins(a, &nod, t); regfree(&nod); return; } /* * type x type cross table */ a = AGOK; switch(ft) { case TDOUBLE: case TVLONG: case TFLOAT: switch(tt) { case TDOUBLE: case TVLONG: a = AMOVD; if(ft == TFLOAT) a = AMOVFD; break; case TFLOAT: a = AMOVDF; if(ft == TFLOAT) a = AMOVF; break; case TINT: case TUINT: case TLONG: case TULONG: case TIND: a = AMOVDW; if(ft == TFLOAT) a = AMOVFW; break; case TSHORT: case TUSHORT: case TCHAR: case TUCHAR: a = AMOVDW; if(ft == TFLOAT) a = AMOVFW; break; } break; case TUINT: case TULONG: if(tt == TFLOAT || tt == TDOUBLE) { // ugly and probably longer than necessary, // but vfp has a single instruction for this, // so hopefully it won't last long. // // tmp = f // tmp1 = tmp & 0x80000000 // tmp ^= tmp1 // t = float(int32(tmp)) // if(tmp1) // t += 2147483648. // regalloc(&nod, f, Z); regalloc(&nod1, f, Z); gins(AMOVW, f, &nod); gins(AMOVW, &nod, &nod1); gins(AAND, nodconst(0x80000000), &nod1); gins(AEOR, &nod1, &nod); if(tt == TFLOAT) gins(AMOVWF, &nod, t); else gins(AMOVWD, &nod, t); gins(ACMP, nodconst(0), Z); raddr(&nod1, p); gins(ABEQ, Z, Z); regfree(&nod); regfree(&nod1); p1 = p; regalloc(&nod, t, Z); gins(AMOVF, nodfconst(2147483648.), &nod); gins(AADDF, &nod, t); regfree(&nod); patch(p1, pc); return; } // fall through case TINT: case TLONG: case TIND: switch(tt) { case TDOUBLE: gins(AMOVWD, f, t); return; case TFLOAT: gins(AMOVWF, f, t); return; case TINT: case TUINT: case TLONG: case TULONG: case TIND: case TSHORT: case TUSHORT: case TCHAR: case TUCHAR: a = AMOVW; break; } break; case TSHORT: switch(tt) { case TDOUBLE: regalloc(&nod, f, Z); gins(AMOVHS, f, &nod); gins(AMOVWD, &nod, t); regfree(&nod); return; case TFLOAT: regalloc(&nod, f, Z); gins(AMOVHS, f, &nod); gins(AMOVWF, &nod, t); regfree(&nod); return; case TUINT: case TINT: case TULONG: case TLONG: case TIND: a = AMOVHS; break; case TSHORT: case TUSHORT: case TCHAR: case TUCHAR: a = AMOVW; break; } break; case TUSHORT: switch(tt) { case TDOUBLE: regalloc(&nod, f, Z); gins(AMOVHU, f, &nod); gins(AMOVWD, &nod, t); regfree(&nod); return; case TFLOAT: regalloc(&nod, f, Z); gins(AMOVHU, f, &nod); gins(AMOVWF, &nod, t); regfree(&nod); return; case TINT: case TUINT: case TLONG: case TULONG: case TIND: a = AMOVHU; break; case TSHORT: case TUSHORT: case TCHAR: case TUCHAR: a = AMOVW; break; } break; case TCHAR: switch(tt) { case TDOUBLE: regalloc(&nod, f, Z); gins(AMOVBS, f, &nod); gins(AMOVWD, &nod, t); regfree(&nod); return; case TFLOAT: regalloc(&nod, f, Z); gins(AMOVBS, f, &nod); gins(AMOVWF, &nod, t); regfree(&nod); return; case TINT: case TUINT: case TLONG: case TULONG: case TIND: case TSHORT: case TUSHORT: a = AMOVBS; break; case TCHAR: case TUCHAR: a = AMOVW; break; } break; case TUCHAR: switch(tt) { case TDOUBLE: regalloc(&nod, f, Z); gins(AMOVBU, f, &nod); gins(AMOVWD, &nod, t); regfree(&nod); return; case TFLOAT: regalloc(&nod, f, Z); gins(AMOVBU, f, &nod); gins(AMOVWF, &nod, t); regfree(&nod); return; case TINT: case TUINT: case TLONG: case TULONG: case TIND: case TSHORT: case TUSHORT: a = AMOVBU; break; case TCHAR: case TUCHAR: a = AMOVW; break; } break; } if(a == AGOK) diag(Z, "bad opcode in gmove %T -> %T", f->type, t->type); if(a == AMOVW || a == AMOVF || a == AMOVD) if(samaddr(f, t)) return; gins(a, f, t); } void gmover(Node *f, Node *t) { int ft, tt, a; ft = f->type->etype; tt = t->type->etype; a = AGOK; if(typechlp[ft] && typechlp[tt] && ewidth[ft] >= ewidth[tt]){ switch(tt){ case TSHORT: a = AMOVHS; break; case TUSHORT: a = AMOVHU; break; case TCHAR: a = AMOVBS; break; case TUCHAR: a = AMOVBU; break; } } if(a == AGOK) gmove(f, t); else gins(a, f, t); } void gins(int a, Node *f, Node *t) { nextpc(); p->as = a; if(f != Z) naddr(f, &p->from); if(t != Z) naddr(t, &p->to); if(debug['g']) print("%P\n", p); } void gopcode(int o, Node *f1, Node *f2, Node *t) { int a, et; Addr ta; et = TLONG; if(f1 != Z && f1->type != T) et = f1->type->etype; a = AGOK; switch(o) { case OAS: gmove(f1, t); return; case OASADD: case OADD: a = AADD; if(et == TFLOAT) a = AADDF; else if(et == TDOUBLE || et == TVLONG) a = AADDD; break; case OASSUB: case OSUB: if(f2 && f2->op == OCONST) { Node *t = f1; f1 = f2; f2 = t; a = ARSB; } else a = ASUB; if(et == TFLOAT) a = ASUBF; else if(et == TDOUBLE || et == TVLONG) a = ASUBD; break; case OASOR: case OOR: a = AORR; break; case OASAND: case OAND: a = AAND; break; case OASXOR: case OXOR: a = AEOR; break; case OASLSHR: case OLSHR: a = ASRL; break; case OASASHR: case OASHR: a = ASRA; break; case OASASHL: case OASHL: a = ASLL; break; case OFUNC: a = ABL; break; case OASMUL: case OMUL: a = AMUL; if(et == TFLOAT) a = AMULF; else if(et == TDOUBLE || et == TVLONG) a = AMULD; break; case OASDIV: case ODIV: a = ADIV; if(et == TFLOAT) a = ADIVF; else if(et == TDOUBLE || et == TVLONG) a = ADIVD; break; case OASMOD: case OMOD: a = AMOD; break; case OASLMUL: case OLMUL: a = AMULU; break; case OASLMOD: case OLMOD: a = AMODU; break; case OASLDIV: case OLDIV: a = ADIVU; break; case OCASE: case OEQ: case ONE: case OLT: case OLE: case OGE: case OGT: case OLO: case OLS: case OHS: case OHI: a = ACMP; if(et == TFLOAT) a = ACMPF; else if(et == TDOUBLE || et == TVLONG) a = ACMPD; nextpc(); p->as = a; naddr(f1, &p->from); if(a == ACMP && f1->op == OCONST && p->from.offset < 0) { p->as = ACMN; p->from.offset = -p->from.offset; } raddr(f2, p); switch(o) { case OEQ: a = ABEQ; break; case ONE: a = ABNE; break; case OLT: a = ABLT; break; case OLE: a = ABLE; break; case OGE: a = ABGE; break; case OGT: a = ABGT; break; case OLO: a = ABLO; break; case OLS: a = ABLS; break; case OHS: a = ABHS; break; case OHI: a = ABHI; break; case OCASE: nextpc(); p->as = ACASE; p->scond = 0x9; naddr(f2, &p->from); a = ABHI; break; } f1 = Z; f2 = Z; break; } if(a == AGOK) diag(Z, "bad in gopcode %O", o); nextpc(); p->as = a; if(f1 != Z) naddr(f1, &p->from); if(f2 != Z) { naddr(f2, &ta); p->reg = ta.reg; } if(t != Z) naddr(t, &p->to); if(debug['g']) print("%P\n", p); } int samaddr(Node *f, Node *t) { if(f->op != t->op) return 0; switch(f->op) { case OREGISTER: if(f->reg != t->reg) break; return 1; } return 0; } void gbranch(int o) { int a; a = AGOK; switch(o) { case ORETURN: a = ARET; break; case OGOTO: a = AB; break; } nextpc(); if(a == AGOK) { diag(Z, "bad in gbranch %O", o); nextpc(); } p->as = a; } void patch(Prog *op, int32 pc) { op->to.offset = pc; op->to.type = D_BRANCH; } void gpseudo(int a, Sym *s, Node *n) { nextpc(); p->as = a; p->from.type = D_OREG; p->from.sym = linksym(s); p->from.name = D_EXTERN; switch(a) { case ATEXT: p->reg = textflag; textflag = 0; break; case AGLOBL: p->reg = s->dataflag; break; } if(s->class == CSTATIC) p->from.name = D_STATIC; naddr(n, &p->to); if(a == ADATA || a == AGLOBL) pc--; } void gpcdata(int index, int value) { Node n1; n1 = *nodconst(index); gins(APCDATA, &n1, nodconst(value)); } void gprefetch(Node *n) { Node n1; regalloc(&n1, n, Z); gmove(n, &n1); n1.op = OINDREG; gins(APLD, &n1, Z); regfree(&n1); } int sconst(Node *n) { vlong vv; if(n->op == OCONST) { if(!typefd[n->type->etype]) { vv = n->vconst; if(vv >= (vlong)(-32766) && vv < (vlong)32766) return 1; /* * should be specialised for constant values which will * fit in different instructionsl; for now, let 5l * sort it out */ return 1; } } return 0; } int sval(int32 v) { int i; for(i=0; i<16; i++) { if((v & ~0xff) == 0) return 1; if((~v & ~0xff) == 0) return 1; v = (v<<2) | ((uint32)v>>30); } return 0; } int32 exreg(Type *t) { int32 o; if(typechlp[t->etype]) { if(exregoffset <= REGEXT-4) return 0; o = exregoffset; exregoffset--; return o; } if(typefd[t->etype]) { if(exfregoffset <= NFREG-1) return 0; o = exfregoffset + NREG; exfregoffset--; return o; } return 0; } schar ewidth[NTYPE] = { -1, /* [TXXX] */ SZ_CHAR, /* [TCHAR] */ SZ_CHAR, /* [TUCHAR] */ SZ_SHORT, /* [TSHORT] */ SZ_SHORT, /* [TUSHORT] */ SZ_INT, /* [TINT] */ SZ_INT, /* [TUINT] */ SZ_LONG, /* [TLONG] */ SZ_LONG, /* [TULONG] */ SZ_VLONG, /* [TVLONG] */ SZ_VLONG, /* [TUVLONG] */ SZ_FLOAT, /* [TFLOAT] */ SZ_DOUBLE, /* [TDOUBLE] */ SZ_IND, /* [TIND] */ 0, /* [TFUNC] */ -1, /* [TARRAY] */ 0, /* [TVOID] */ -1, /* [TSTRUCT] */ -1, /* [TUNION] */ SZ_INT, /* [TENUM] */ }; int32 ncast[NTYPE] = { 0, /* [TXXX] */ BCHAR|BUCHAR, /* [TCHAR] */ BCHAR|BUCHAR, /* [TUCHAR] */ BSHORT|BUSHORT, /* [TSHORT] */ BSHORT|BUSHORT, /* [TUSHORT] */ BINT|BUINT|BLONG|BULONG|BIND, /* [TINT] */ BINT|BUINT|BLONG|BULONG|BIND, /* [TUINT] */ BINT|BUINT|BLONG|BULONG|BIND, /* [TLONG] */ BINT|BUINT|BLONG|BULONG|BIND, /* [TULONG] */ BVLONG|BUVLONG, /* [TVLONG] */ BVLONG|BUVLONG, /* [TUVLONG] */ BFLOAT, /* [TFLOAT] */ BDOUBLE, /* [TDOUBLE] */ BLONG|BULONG|BIND, /* [TIND] */ 0, /* [TFUNC] */ 0, /* [TARRAY] */ 0, /* [TVOID] */ BSTRUCT, /* [TSTRUCT] */ BUNION, /* [TUNION] */ 0, /* [TENUM] */ }; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5g���������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013270� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5g/Makefile������������������������������������������������������������������������������0100644�0000000�0000000�00000000265�12412656734�015004� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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. include ../../Make.dist �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5g/cgen.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000102767�12412656737�014441� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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. #include #include #include "gg.h" /* * generate: * res = n; * simplifies and calls gmove. */ void cgen(Node *n, Node *res) { Node *nl, *nr, *r; Node n1, n2, f0, f1; int a, w, rg; Prog *p1, *p2, *p3; Addr addr; if(debug['g']) { dump("\ncgen-n", n); dump("cgen-res", res); } if(n == N || n->type == T) goto ret; if(res == N || res->type == T) fatal("cgen: res nil"); switch(n->op) { case OSLICE: case OSLICEARR: case OSLICESTR: case OSLICE3: case OSLICE3ARR: if (res->op != ONAME || !res->addable) { tempname(&n1, n->type); cgen_slice(n, &n1); cgen(&n1, res); } else cgen_slice(n, res); return; case OEFACE: if (res->op != ONAME || !res->addable) { tempname(&n1, n->type); cgen_eface(n, &n1); cgen(&n1, res); } else cgen_eface(n, res); return; } while(n->op == OCONVNOP) n = n->left; if(n->ullman >= UINF) { if(n->op == OINDREG) fatal("cgen: this is going to misscompile"); if(res->ullman >= UINF) { tempname(&n1, n->type); cgen(n, &n1); cgen(&n1, res); goto ret; } } if(isfat(n->type)) { if(n->type->width < 0) fatal("forgot to compute width for %T", n->type); sgen(n, res, n->type->width); goto ret; } // update addressability for string, slice // can't do in walk because n->left->addable // changes if n->left is an escaping local variable. switch(n->op) { case OSPTR: case OLEN: if(isslice(n->left->type) || istype(n->left->type, TSTRING)) n->addable = n->left->addable; break; case OCAP: if(isslice(n->left->type)) n->addable = n->left->addable; break; case OITAB: n->addable = n->left->addable; break; } // if both are addressable, move if(n->addable && res->addable) { if(is64(n->type) || is64(res->type) || n->op == OREGISTER || res->op == OREGISTER || iscomplex[n->type->etype] || iscomplex[res->type->etype]) { gmove(n, res); } else { regalloc(&n1, n->type, N); gmove(n, &n1); cgen(&n1, res); regfree(&n1); } goto ret; } // if both are not addressable, use a temporary. if(!n->addable && !res->addable) { // could use regalloc here sometimes, // but have to check for ullman >= UINF. tempname(&n1, n->type); cgen(n, &n1); cgen(&n1, res); return; } // if result is not addressable directly but n is, // compute its address and then store via the address. if(!res->addable) { igen(res, &n1, N); cgen(n, &n1); regfree(&n1); return; } if(complexop(n, res)) { complexgen(n, res); return; } // if n is sudoaddable generate addr and move if (!is64(n->type) && !is64(res->type) && !iscomplex[n->type->etype] && !iscomplex[res->type->etype]) { a = optoas(OAS, n->type); if(sudoaddable(a, n, &addr, &w)) { if (res->op != OREGISTER) { regalloc(&n2, res->type, N); p1 = gins(a, N, &n2); p1->from = addr; if(debug['g']) print("%P [ignore previous line]\n", p1); gmove(&n2, res); regfree(&n2); } else { p1 = gins(a, N, res); p1->from = addr; if(debug['g']) print("%P [ignore previous line]\n", p1); } sudoclean(); goto ret; } } // otherwise, the result is addressable but n is not. // let's do some computation. nl = n->left; nr = n->right; if(nl != N && nl->ullman >= UINF) if(nr != N && nr->ullman >= UINF) { tempname(&n1, nl->type); cgen(nl, &n1); n2 = *n; n2.left = &n1; cgen(&n2, res); goto ret; } // 64-bit ops are hard on 32-bit machine. if(is64(n->type) || is64(res->type) || n->left != N && is64(n->left->type)) { switch(n->op) { // math goes to cgen64. case OMINUS: case OCOM: case OADD: case OSUB: case OMUL: case OLROT: case OLSH: case ORSH: case OAND: case OOR: case OXOR: cgen64(n, res); return; } } if(nl != N && isfloat[n->type->etype] && isfloat[nl->type->etype]) goto flt; switch(n->op) { default: dump("cgen", n); fatal("cgen: unknown op %+hN", n); break; case OREAL: case OIMAG: case OCOMPLEX: fatal("unexpected complex"); break; // these call bgen to get a bool value case OOROR: case OANDAND: case OEQ: case ONE: case OLT: case OLE: case OGE: case OGT: case ONOT: p1 = gbranch(AB, T, 0); p2 = pc; gmove(nodbool(1), res); p3 = gbranch(AB, T, 0); patch(p1, pc); bgen(n, 1, 0, p2); gmove(nodbool(0), res); patch(p3, pc); goto ret; case OPLUS: cgen(nl, res); goto ret; // unary case OCOM: a = optoas(OXOR, nl->type); regalloc(&n1, nl->type, N); cgen(nl, &n1); nodconst(&n2, nl->type, -1); gins(a, &n2, &n1); gmove(&n1, res); regfree(&n1); goto ret; case OMINUS: regalloc(&n1, nl->type, N); cgen(nl, &n1); nodconst(&n2, nl->type, 0); gins(optoas(OMINUS, nl->type), &n2, &n1); gmove(&n1, res); regfree(&n1); goto ret; // symmetric binary case OAND: case OOR: case OXOR: case OADD: case OADDPTR: case OMUL: a = optoas(n->op, nl->type); goto sbop; // asymmetric binary case OSUB: a = optoas(n->op, nl->type); goto abop; case OHMUL: cgen_hmul(nl, nr, res); break; case OLROT: case OLSH: case ORSH: cgen_shift(n->op, n->bounded, nl, nr, res); break; case OCONV: if(eqtype(n->type, nl->type) || noconv(n->type, nl->type)) { cgen(nl, res); break; } if(nl->addable && !is64(nl->type)) { regalloc(&n1, nl->type, res); gmove(nl, &n1); } else { if(n->type->width > widthptr || is64(nl->type) || isfloat[nl->type->etype]) tempname(&n1, nl->type); else regalloc(&n1, nl->type, res); cgen(nl, &n1); } if(n->type->width > widthptr || is64(n->type) || isfloat[n->type->etype]) tempname(&n2, n->type); else regalloc(&n2, n->type, N); gmove(&n1, &n2); gmove(&n2, res); if(n1.op == OREGISTER) regfree(&n1); if(n2.op == OREGISTER) regfree(&n2); break; case ODOT: case ODOTPTR: case OINDEX: case OIND: case ONAME: // PHEAP or PPARAMREF var igen(n, &n1, res); gmove(&n1, res); regfree(&n1); break; case OITAB: // interface table is first word of interface value igen(nl, &n1, res); n1.type = n->type; gmove(&n1, res); regfree(&n1); break; case OSPTR: // pointer is the first word of string or slice. if(isconst(nl, CTSTR)) { regalloc(&n1, types[tptr], res); p1 = gins(AMOVW, N, &n1); datastring(nl->val.u.sval->s, nl->val.u.sval->len, &p1->from); gmove(&n1, res); regfree(&n1); break; } igen(nl, &n1, res); n1.type = n->type; gmove(&n1, res); regfree(&n1); break; case OLEN: if(istype(nl->type, TMAP) || istype(nl->type, TCHAN)) { // map has len in the first 32-bit word. // a zero pointer means zero length regalloc(&n1, types[tptr], res); cgen(nl, &n1); nodconst(&n2, types[tptr], 0); gcmp(optoas(OCMP, types[tptr]), &n1, &n2); p1 = gbranch(optoas(OEQ, types[tptr]), T, -1); n2 = n1; n2.op = OINDREG; n2.type = types[TINT32]; gmove(&n2, &n1); patch(p1, pc); gmove(&n1, res); regfree(&n1); break; } if(istype(nl->type, TSTRING) || isslice(nl->type)) { // both slice and string have len one pointer into the struct. igen(nl, &n1, res); n1.type = types[TUINT32]; n1.xoffset += Array_nel; gmove(&n1, res); regfree(&n1); break; } fatal("cgen: OLEN: unknown type %lT", nl->type); break; case OCAP: if(istype(nl->type, TCHAN)) { // chan has cap in the second 32-bit word. // a zero pointer means zero length regalloc(&n1, types[tptr], res); cgen(nl, &n1); nodconst(&n2, types[tptr], 0); gcmp(optoas(OCMP, types[tptr]), &n1, &n2); p1 = gbranch(optoas(OEQ, types[tptr]), T, -1); n2 = n1; n2.op = OINDREG; n2.xoffset = 4; n2.type = types[TINT32]; gmove(&n2, &n1); patch(p1, pc); gmove(&n1, res); regfree(&n1); break; } if(isslice(nl->type)) { igen(nl, &n1, res); n1.type = types[TUINT32]; n1.xoffset += Array_cap; gmove(&n1, res); regfree(&n1); break; } fatal("cgen: OCAP: unknown type %lT", nl->type); break; case OADDR: agen(nl, res); break; case OCALLMETH: case OCALLFUNC: // Release res so that it is available for cgen_call. // Pick it up again after the call. rg = -1; if(n->ullman >= UINF) { if(res != N && (res->op == OREGISTER || res->op == OINDREG)) { rg = res->val.u.reg; reg[rg]--; } } if(n->op == OCALLMETH) cgen_callmeth(n, 0); else cgen_call(n, 0); if(rg >= 0) reg[rg]++; cgen_callret(n, res); break; case OCALLINTER: cgen_callinter(n, res, 0); cgen_callret(n, res); break; case OMOD: case ODIV: a = optoas(n->op, nl->type); goto abop; } goto ret; sbop: // symmetric binary if(nl->ullman < nr->ullman) { r = nl; nl = nr; nr = r; } abop: // asymmetric binary // TODO(kaib): use fewer registers here. if(nl->ullman >= nr->ullman) { regalloc(&n1, nl->type, res); cgen(nl, &n1); switch(n->op) { case OADD: case OSUB: case OAND: case OOR: case OXOR: if(smallintconst(nr)) { n2 = *nr; break; } default: regalloc(&n2, nr->type, N); cgen(nr, &n2); } } else { switch(n->op) { case OADD: case OSUB: case OAND: case OOR: case OXOR: if(smallintconst(nr)) { n2 = *nr; break; } default: regalloc(&n2, nr->type, res); cgen(nr, &n2); } regalloc(&n1, nl->type, N); cgen(nl, &n1); } gins(a, &n2, &n1); // Normalize result for types smaller than word. if(n->type->width < widthptr) { switch(n->op) { case OADD: case OSUB: case OMUL: gins(optoas(OAS, n->type), &n1, &n1); break; } } gmove(&n1, res); regfree(&n1); if(n2.op != OLITERAL) regfree(&n2); goto ret; flt: // floating-point. regalloc(&f0, nl->type, res); if(nr != N) goto flt2; if(n->op == OMINUS) { nr = nodintconst(-1); convlit(&nr, n->type); n->op = OMUL; goto flt2; } // unary cgen(nl, &f0); if(n->op != OCONV && n->op != OPLUS) gins(optoas(n->op, n->type), &f0, &f0); gmove(&f0, res); regfree(&f0); goto ret; flt2: // binary if(nl->ullman >= nr->ullman) { cgen(nl, &f0); regalloc(&f1, n->type, N); gmove(&f0, &f1); cgen(nr, &f0); gins(optoas(n->op, n->type), &f0, &f1); } else { cgen(nr, &f0); regalloc(&f1, n->type, N); cgen(nl, &f1); gins(optoas(n->op, n->type), &f0, &f1); } gmove(&f1, res); regfree(&f0); regfree(&f1); goto ret; ret: ; } /* * generate array index into res. * n might be any size; res is 32-bit. * returns Prog* to patch to panic call. */ Prog* cgenindex(Node *n, Node *res, int bounded) { Node tmp, lo, hi, zero, n1, n2; if(!is64(n->type)) { cgen(n, res); return nil; } tempname(&tmp, types[TINT64]); cgen(n, &tmp); split64(&tmp, &lo, &hi); gmove(&lo, res); if(bounded) { splitclean(); return nil; } regalloc(&n1, types[TINT32], N); regalloc(&n2, types[TINT32], N); nodconst(&zero, types[TINT32], 0); gmove(&hi, &n1); gmove(&zero, &n2); gcmp(ACMP, &n1, &n2); regfree(&n2); regfree(&n1); splitclean(); return gbranch(ABNE, T, -1); } /* * generate: * res = &n; * The generated code checks that the result is not nil. */ void agen(Node *n, Node *res) { Node *nl; Node n1, n2, n3; int r; if(debug['g']) { dump("\nagen-res", res); dump("agen-r", n); } if(n == N || n->type == T || res == N || res->type == T) fatal("agen"); while(n->op == OCONVNOP) n = n->left; if(isconst(n, CTNIL) && n->type->width > widthptr) { // Use of a nil interface or nil slice. // Create a temporary we can take the address of and read. // The generated code is just going to panic, so it need not // be terribly efficient. See issue 3670. tempname(&n1, n->type); gvardef(&n1); clearfat(&n1); regalloc(&n2, types[tptr], res); gins(AMOVW, &n1, &n2); gmove(&n2, res); regfree(&n2); goto ret; } if(n->addable) { memset(&n1, 0, sizeof n1); n1.op = OADDR; n1.left = n; regalloc(&n2, types[tptr], res); gins(AMOVW, &n1, &n2); gmove(&n2, res); regfree(&n2); goto ret; } nl = n->left; switch(n->op) { default: fatal("agen: unknown op %+hN", n); break; case OCALLMETH: case OCALLFUNC: // Release res so that it is available for cgen_call. // Pick it up again after the call. r = -1; if(n->ullman >= UINF) { if(res->op == OREGISTER || res->op == OINDREG) { r = res->val.u.reg; reg[r]--; } } if(n->op == OCALLMETH) cgen_callmeth(n, 0); else cgen_call(n, 0); if(r >= 0) reg[r]++; cgen_aret(n, res); break; case OCALLINTER: cgen_callinter(n, res, 0); cgen_aret(n, res); break; case OSLICE: case OSLICEARR: case OSLICESTR: case OSLICE3: case OSLICE3ARR: tempname(&n1, n->type); cgen_slice(n, &n1); agen(&n1, res); break; case OEFACE: tempname(&n1, n->type); cgen_eface(n, &n1); agen(&n1, res); break; case OINDEX: agenr(n, &n1, res); gmove(&n1, res); regfree(&n1); break; case ONAME: // should only get here with names in this func. if(n->funcdepth > 0 && n->funcdepth != funcdepth) { dump("bad agen", n); fatal("agen: bad ONAME funcdepth %d != %d", n->funcdepth, funcdepth); } // should only get here for heap vars or paramref if(!(n->class & PHEAP) && n->class != PPARAMREF) { dump("bad agen", n); fatal("agen: bad ONAME class %#x", n->class); } cgen(n->heapaddr, res); if(n->xoffset != 0) { nodconst(&n1, types[TINT32], n->xoffset); regalloc(&n2, n1.type, N); regalloc(&n3, types[TINT32], N); gmove(&n1, &n2); gmove(res, &n3); gins(optoas(OADD, types[tptr]), &n2, &n3); gmove(&n3, res); regfree(&n2); regfree(&n3); } break; case OIND: cgen(nl, res); cgen_checknil(res); break; case ODOT: agen(nl, res); if(n->xoffset != 0) { nodconst(&n1, types[TINT32], n->xoffset); regalloc(&n2, n1.type, N); regalloc(&n3, types[TINT32], N); gmove(&n1, &n2); gmove(res, &n3); gins(optoas(OADD, types[tptr]), &n2, &n3); gmove(&n3, res); regfree(&n2); regfree(&n3); } break; case ODOTPTR: cgen(nl, res); cgen_checknil(res); if(n->xoffset != 0) { nodconst(&n1, types[TINT32], n->xoffset); regalloc(&n2, n1.type, N); regalloc(&n3, types[tptr], N); gmove(&n1, &n2); gmove(res, &n3); gins(optoas(OADD, types[tptr]), &n2, &n3); gmove(&n3, res); regfree(&n2); regfree(&n3); } break; } ret: ; } /* * generate: * newreg = &n; * res = newreg * * on exit, a has been changed to be *newreg. * caller must regfree(a). * The generated code checks that the result is not *nil. */ void igen(Node *n, Node *a, Node *res) { Node n1; int r; if(debug['g']) { dump("\nigen-n", n); } switch(n->op) { case ONAME: if((n->class&PHEAP) || n->class == PPARAMREF) break; *a = *n; return; case OINDREG: // Increase the refcount of the register so that igen's caller // has to call regfree. if(n->val.u.reg != REGSP) reg[n->val.u.reg]++; *a = *n; return; case ODOT: igen(n->left, a, res); a->xoffset += n->xoffset; a->type = n->type; return; case ODOTPTR: if(n->left->addable || n->left->op == OCALLFUNC || n->left->op == OCALLMETH || n->left->op == OCALLINTER) { // igen-able nodes. igen(n->left, &n1, res); regalloc(a, types[tptr], &n1); gmove(&n1, a); regfree(&n1); } else { regalloc(a, types[tptr], res); cgen(n->left, a); } cgen_checknil(a); a->op = OINDREG; a->xoffset = n->xoffset; a->type = n->type; return; case OCALLMETH: case OCALLFUNC: case OCALLINTER: // Release res so that it is available for cgen_call. // Pick it up again after the call. r = -1; if(n->ullman >= UINF) { if(res != N && (res->op == OREGISTER || res->op == OINDREG)) { r = res->val.u.reg; reg[r]--; } } switch(n->op) { case OCALLMETH: cgen_callmeth(n, 0); break; case OCALLFUNC: cgen_call(n, 0); break; case OCALLINTER: cgen_callinter(n, N, 0); break; } if(r >= 0) reg[r]++; regalloc(a, types[tptr], res); cgen_aret(n, a); a->op = OINDREG; a->type = n->type; return; } agenr(n, a, res); a->op = OINDREG; a->type = n->type; } /* * allocate a register in res and generate * newreg = &n * The caller must call regfree(a). */ void cgenr(Node *n, Node *a, Node *res) { Node n1; if(debug['g']) dump("cgenr-n", n); if(isfat(n->type)) fatal("cgenr on fat node"); if(n->addable) { regalloc(a, types[tptr], res); gmove(n, a); return; } switch(n->op) { case ONAME: case ODOT: case ODOTPTR: case OINDEX: case OCALLFUNC: case OCALLMETH: case OCALLINTER: igen(n, &n1, res); regalloc(a, types[tptr], &n1); gmove(&n1, a); regfree(&n1); break; default: regalloc(a, n->type, res); cgen(n, a); break; } } /* * generate: * newreg = &n; * * caller must regfree(a). * The generated code checks that the result is not nil. */ void agenr(Node *n, Node *a, Node *res) { Node *nl, *nr; Node n1, n2, n3, n4, tmp; Prog *p1, *p2; uint32 w; uint64 v; int bounded; if(debug['g']) dump("agenr-n", n); nl = n->left; nr = n->right; switch(n->op) { case ODOT: case ODOTPTR: case OCALLFUNC: case OCALLMETH: case OCALLINTER: igen(n, &n1, res); regalloc(a, types[tptr], &n1); agen(&n1, a); regfree(&n1); break; case OIND: cgenr(n->left, a, res); cgen_checknil(a); break; case OINDEX: p2 = nil; // to be patched to panicindex. w = n->type->width; bounded = debug['B'] || n->bounded; if(nr->addable) { if(!isconst(nr, CTINT)) tempname(&tmp, types[TINT32]); if(!isconst(nl, CTSTR)) agenr(nl, &n3, res); if(!isconst(nr, CTINT)) { p2 = cgenindex(nr, &tmp, bounded); regalloc(&n1, tmp.type, N); gmove(&tmp, &n1); } } else if(nl->addable) { if(!isconst(nr, CTINT)) { tempname(&tmp, types[TINT32]); p2 = cgenindex(nr, &tmp, bounded); regalloc(&n1, tmp.type, N); gmove(&tmp, &n1); } if(!isconst(nl, CTSTR)) { agenr(nl, &n3, res); } } else { tempname(&tmp, types[TINT32]); p2 = cgenindex(nr, &tmp, bounded); nr = &tmp; if(!isconst(nl, CTSTR)) agenr(nl, &n3, res); regalloc(&n1, tmp.type, N); gins(optoas(OAS, tmp.type), &tmp, &n1); } // &a is in &n3 (allocated in res) // i is in &n1 (if not constant) // w is width // constant index if(isconst(nr, CTINT)) { if(isconst(nl, CTSTR)) fatal("constant string constant index"); v = mpgetfix(nr->val.u.xval); if(isslice(nl->type) || nl->type->etype == TSTRING) { if(!debug['B'] && !n->bounded) { n1 = n3; n1.op = OINDREG; n1.type = types[tptr]; n1.xoffset = Array_nel; regalloc(&n4, n1.type, N); gmove(&n1, &n4); nodconst(&n2, types[TUINT32], v); gcmp(optoas(OCMP, types[TUINT32]), &n4, &n2); regfree(&n4); p1 = gbranch(optoas(OGT, types[TUINT32]), T, +1); ginscall(panicindex, 0); patch(p1, pc); } n1 = n3; n1.op = OINDREG; n1.type = types[tptr]; n1.xoffset = Array_array; gmove(&n1, &n3); } nodconst(&n2, types[tptr], v*w); gins(optoas(OADD, types[tptr]), &n2, &n3); *a = n3; break; } regalloc(&n2, types[TINT32], &n1); // i gmove(&n1, &n2); regfree(&n1); if(!debug['B'] && !n->bounded) { // check bounds if(isconst(nl, CTSTR)) { nodconst(&n4, types[TUINT32], nl->val.u.sval->len); } else if(isslice(nl->type) || nl->type->etype == TSTRING) { n1 = n3; n1.op = OINDREG; n1.type = types[tptr]; n1.xoffset = Array_nel; regalloc(&n4, types[TUINT32], N); gmove(&n1, &n4); } else { nodconst(&n4, types[TUINT32], nl->type->bound); } gcmp(optoas(OCMP, types[TUINT32]), &n2, &n4); if(n4.op == OREGISTER) regfree(&n4); p1 = gbranch(optoas(OLT, types[TUINT32]), T, +1); if(p2) patch(p2, pc); ginscall(panicindex, 0); patch(p1, pc); } if(isconst(nl, CTSTR)) { regalloc(&n3, types[tptr], res); p1 = gins(AMOVW, N, &n3); datastring(nl->val.u.sval->s, nl->val.u.sval->len, &p1->from); p1->from.type = D_CONST; } else if(isslice(nl->type) || nl->type->etype == TSTRING) { n1 = n3; n1.op = OINDREG; n1.type = types[tptr]; n1.xoffset = Array_array; gmove(&n1, &n3); } if(w == 0) { // nothing to do } else if(w == 1 || w == 2 || w == 4 || w == 8) { memset(&n4, 0, sizeof n4); n4.op = OADDR; n4.left = &n2; cgen(&n4, &n3); if (w == 1) gins(AADD, &n2, &n3); else if(w == 2) gshift(AADD, &n2, SHIFT_LL, 1, &n3); else if(w == 4) gshift(AADD, &n2, SHIFT_LL, 2, &n3); else if(w == 8) gshift(AADD, &n2, SHIFT_LL, 3, &n3); } else { regalloc(&n4, types[TUINT32], N); nodconst(&n1, types[TUINT32], w); gmove(&n1, &n4); gins(optoas(OMUL, types[TUINT32]), &n4, &n2); gins(optoas(OADD, types[tptr]), &n2, &n3); regfree(&n4); } *a = n3; regfree(&n2); break; default: regalloc(a, types[tptr], res); agen(n, a); break; } } void gencmp0(Node *n, Type *t, int o, int likely, Prog *to) { Node n1, n2, n3; int a; regalloc(&n1, t, N); cgen(n, &n1); a = optoas(OCMP, t); if(a != ACMP) { nodconst(&n2, t, 0); regalloc(&n3, t, N); gmove(&n2, &n3); gcmp(a, &n1, &n3); regfree(&n3); } else gins(ATST, &n1, N); a = optoas(o, t); patch(gbranch(a, t, likely), to); regfree(&n1); } /* * generate: * if(n == true) goto to; */ void bgen(Node *n, int true, int likely, Prog *to) { int et, a; Node *nl, *nr, *r; Node n1, n2, n3, n4, tmp; NodeList *ll; Prog *p1, *p2; USED(n4); // in unreachable code below if(debug['g']) { dump("\nbgen", n); } if(n == N) n = nodbool(1); if(n->ninit != nil) genlist(n->ninit); if(n->type == T) { convlit(&n, types[TBOOL]); if(n->type == T) goto ret; } et = n->type->etype; if(et != TBOOL) { yyerror("cgen: bad type %T for %O", n->type, n->op); patch(gins(AEND, N, N), to); goto ret; } nr = N; switch(n->op) { default: a = ONE; if(!true) a = OEQ; gencmp0(n, n->type, a, likely, to); goto ret; case OLITERAL: // need to ask if it is bool? if(!true == !n->val.u.bval) patch(gbranch(AB, T, 0), to); goto ret; case OANDAND: if(!true) goto caseor; caseand: p1 = gbranch(AB, T, 0); p2 = gbranch(AB, T, 0); patch(p1, pc); bgen(n->left, !true, -likely, p2); bgen(n->right, !true, -likely, p2); p1 = gbranch(AB, T, 0); patch(p1, to); patch(p2, pc); goto ret; case OOROR: if(!true) goto caseand; caseor: bgen(n->left, true, likely, to); bgen(n->right, true, likely, to); goto ret; case OEQ: case ONE: case OLT: case OGT: case OLE: case OGE: nr = n->right; if(nr == N || nr->type == T) goto ret; case ONOT: // unary nl = n->left; if(nl == N || nl->type == T) goto ret; } switch(n->op) { case ONOT: bgen(nl, !true, likely, to); goto ret; case OEQ: case ONE: case OLT: case OGT: case OLE: case OGE: a = n->op; if(!true) { if(isfloat[nl->type->etype]) { // brcom is not valid on floats when NaN is involved. p1 = gbranch(AB, T, 0); p2 = gbranch(AB, T, 0); patch(p1, pc); ll = n->ninit; n->ninit = nil; bgen(n, 1, -likely, p2); n->ninit = ll; patch(gbranch(AB, T, 0), to); patch(p2, pc); goto ret; } a = brcom(a); true = !true; } // make simplest on right if(nl->op == OLITERAL || (nl->ullman < UINF && nl->ullman < nr->ullman)) { a = brrev(a); r = nl; nl = nr; nr = r; } if(isslice(nl->type)) { // only valid to cmp darray to literal nil if((a != OEQ && a != ONE) || nr->op != OLITERAL) { yyerror("illegal array comparison"); break; } igen(nl, &n1, N); n1.xoffset += Array_array; n1.type = types[tptr]; gencmp0(&n1, types[tptr], a, likely, to); regfree(&n1); break; } if(isinter(nl->type)) { // front end shold only leave cmp to literal nil if((a != OEQ && a != ONE) || nr->op != OLITERAL) { yyerror("illegal interface comparison"); break; } igen(nl, &n1, N); n1.type = types[tptr]; n1.xoffset += 0; gencmp0(&n1, types[tptr], a, likely, to); regfree(&n1); break; } if(iscomplex[nl->type->etype]) { complexbool(a, nl, nr, true, likely, to); break; } if(is64(nr->type)) { if(!nl->addable) { tempname(&n1, nl->type); cgen(nl, &n1); nl = &n1; } if(!nr->addable) { tempname(&n2, nr->type); cgen(nr, &n2); nr = &n2; } cmp64(nl, nr, a, likely, to); break; } if(nr->op == OLITERAL) { if(isconst(nr, CTINT) && mpgetfix(nr->val.u.xval) == 0) { gencmp0(nl, nl->type, a, likely, to); break; } if(nr->val.ctype == CTNIL) { gencmp0(nl, nl->type, a, likely, to); break; } } a = optoas(a, nr->type); if(nr->ullman >= UINF) { regalloc(&n1, nl->type, N); cgen(nl, &n1); tempname(&tmp, nl->type); gmove(&n1, &tmp); regfree(&n1); regalloc(&n2, nr->type, N); cgen(nr, &n2); regalloc(&n1, nl->type, N); cgen(&tmp, &n1); gcmp(optoas(OCMP, nr->type), &n1, &n2); patch(gbranch(a, nr->type, likely), to); regfree(&n1); regfree(&n2); break; } tempname(&n3, nl->type); cgen(nl, &n3); tempname(&tmp, nr->type); cgen(nr, &tmp); regalloc(&n1, nl->type, N); gmove(&n3, &n1); regalloc(&n2, nr->type, N); gmove(&tmp, &n2); gcmp(optoas(OCMP, nr->type), &n1, &n2); if(isfloat[nl->type->etype]) { if(n->op == ONE) { p1 = gbranch(ABVS, nr->type, likely); patch(gbranch(a, nr->type, likely), to); patch(p1, to); } else { p1 = gbranch(ABVS, nr->type, -likely); patch(gbranch(a, nr->type, likely), to); patch(p1, pc); } } else { patch(gbranch(a, nr->type, likely), to); } regfree(&n1); regfree(&n2); break; } goto ret; ret: ; } /* * n is on stack, either local variable * or return value from function call. * return n's offset from SP. */ int32 stkof(Node *n) { Type *t; Iter flist; int32 off; switch(n->op) { case OINDREG: return n->xoffset; case ODOT: t = n->left->type; if(isptr[t->etype]) break; off = stkof(n->left); if(off == -1000 || off == 1000) return off; return off + n->xoffset; case OINDEX: t = n->left->type; if(!isfixedarray(t)) break; off = stkof(n->left); if(off == -1000 || off == 1000) return off; if(isconst(n->right, CTINT)) return off + t->type->width * mpgetfix(n->right->val.u.xval); return 1000; case OCALLMETH: case OCALLINTER: case OCALLFUNC: t = n->left->type; if(isptr[t->etype]) t = t->type; t = structfirst(&flist, getoutarg(t)); if(t != T) return t->width + 4; // correct for LR break; } // botch - probably failing to recognize address // arithmetic on the above. eg INDEX and DOT return -1000; } /* * block copy: * memmove(&res, &n, w); * NB: character copy assumed little endian architecture */ void sgen(Node *n, Node *res, int64 w) { Node dst, src, tmp, nend, r0, r1, r2, *f; int32 c, odst, osrc; int dir, align, op; Prog *p, *ploop; NodeList *l; if(debug['g']) { print("\nsgen w=%lld\n", w); dump("r", n); dump("res", res); } if(n->ullman >= UINF && res->ullman >= UINF) fatal("sgen UINF"); if(w < 0 || (int32)w != w) fatal("sgen copy %lld", w); if(n->type == T) fatal("sgen: missing type"); if(w == 0) { // evaluate side effects only. regalloc(&dst, types[tptr], N); agen(res, &dst); agen(n, &dst); regfree(&dst); return; } // If copying .args, that's all the results, so record definition sites // for them for the liveness analysis. if(res->op == ONAME && strcmp(res->sym->name, ".args") == 0) for(l = curfn->dcl; l != nil; l = l->next) if(l->n->class == PPARAMOUT) gvardef(l->n); // Avoid taking the address for simple enough types. if(componentgen(n, res)) return; // determine alignment. // want to avoid unaligned access, so have to use // smaller operations for less aligned types. // for example moving [4]byte must use 4 MOVB not 1 MOVW. align = n->type->align; switch(align) { default: fatal("sgen: invalid alignment %d for %T", align, n->type); case 1: op = AMOVB; break; case 2: op = AMOVH; break; case 4: op = AMOVW; break; } if(w%align) fatal("sgen: unaligned size %lld (align=%d) for %T", w, align, n->type); c = w / align; // offset on the stack osrc = stkof(n); odst = stkof(res); if(osrc != -1000 && odst != -1000 && (osrc == 1000 || odst == 1000)) { // osrc and odst both on stack, and at least one is in // an unknown position. Could generate code to test // for forward/backward copy, but instead just copy // to a temporary location first. tempname(&tmp, n->type); sgen(n, &tmp, w); sgen(&tmp, res, w); return; } if(osrc%align != 0 || odst%align != 0) fatal("sgen: unaligned offset src %d or dst %d (align %d)", osrc, odst, align); // if we are copying forward on the stack and // the src and dst overlap, then reverse direction dir = align; if(osrc < odst && odst < osrc+w) dir = -dir; if(op == AMOVW && dir > 0 && c >= 4 && c <= 128) { r0.op = OREGISTER; r0.val.u.reg = REGALLOC_R0; r1.op = OREGISTER; r1.val.u.reg = REGALLOC_R0 + 1; r2.op = OREGISTER; r2.val.u.reg = REGALLOC_R0 + 2; regalloc(&src, types[tptr], &r1); regalloc(&dst, types[tptr], &r2); if(n->ullman >= res->ullman) { // eval n first agen(n, &src); if(res->op == ONAME) gvardef(res); agen(res, &dst); } else { // eval res first if(res->op == ONAME) gvardef(res); agen(res, &dst); agen(n, &src); } regalloc(&tmp, types[tptr], &r0); f = sysfunc("duffcopy"); p = gins(ADUFFCOPY, N, f); afunclit(&p->to, f); // 8 and 128 = magic constants: see ../../pkg/runtime/asm_arm.s p->to.offset = 8*(128-c); regfree(&tmp); regfree(&src); regfree(&dst); return; } if(n->ullman >= res->ullman) { agenr(n, &dst, res); // temporarily use dst regalloc(&src, types[tptr], N); gins(AMOVW, &dst, &src); if(res->op == ONAME) gvardef(res); agen(res, &dst); } else { if(res->op == ONAME) gvardef(res); agenr(res, &dst, res); agenr(n, &src, N); } regalloc(&tmp, types[TUINT32], N); // set up end marker memset(&nend, 0, sizeof nend); if(c >= 4) { regalloc(&nend, types[TUINT32], N); p = gins(AMOVW, &src, &nend); p->from.type = D_CONST; if(dir < 0) p->from.offset = dir; else p->from.offset = w; } // move src and dest to the end of block if necessary if(dir < 0) { p = gins(AMOVW, &src, &src); p->from.type = D_CONST; p->from.offset = w + dir; p = gins(AMOVW, &dst, &dst); p->from.type = D_CONST; p->from.offset = w + dir; } // move if(c >= 4) { p = gins(op, &src, &tmp); p->from.type = D_OREG; p->from.offset = dir; p->scond |= C_PBIT; ploop = p; p = gins(op, &tmp, &dst); p->to.type = D_OREG; p->to.offset = dir; p->scond |= C_PBIT; p = gins(ACMP, &src, N); raddr(&nend, p); patch(gbranch(ABNE, T, 0), ploop); regfree(&nend); } else { while(c-- > 0) { p = gins(op, &src, &tmp); p->from.type = D_OREG; p->from.offset = dir; p->scond |= C_PBIT; p = gins(op, &tmp, &dst); p->to.type = D_OREG; p->to.offset = dir; p->scond |= C_PBIT; } } regfree(&dst); regfree(&src); regfree(&tmp); } static int cadable(Node *n) { if(!n->addable) { // dont know how it happens, // but it does return 0; } switch(n->op) { case ONAME: return 1; } return 0; } /* * copy a composite value by moving its individual components. * Slices, strings and interfaces are supported. * nr is N when assigning a zero value. * return 1 if can do, 0 if cant. */ int componentgen(Node *nr, Node *nl) { Node nodl, nodr, tmp; int freel, freer; freel = 0; freer = 0; switch(nl->type->etype) { default: goto no; case TARRAY: if(!isslice(nl->type)) goto no; case TSTRING: case TINTER: break; } nodl = *nl; if(!cadable(nl)) { if(nr == N || !cadable(nr)) goto no; igen(nl, &nodl, N); freel = 1; } if(nr != N) { nodr = *nr; if(!cadable(nr)) { igen(nr, &nodr, N); freer = 1; } } else { // When zeroing, prepare a register containing zero. nodconst(&tmp, nl->type, 0); regalloc(&nodr, types[TUINT], N); gmove(&tmp, &nodr); freer = 1; } // nl and nr are 'cadable' which basically means they are names (variables) now. // If they are the same variable, don't generate any code, because the // VARDEF we generate will mark the old value as dead incorrectly. // (And also the assignments are useless.) if(nr != N && nl->op == ONAME && nr->op == ONAME && nl == nr) goto yes; switch(nl->type->etype) { case TARRAY: if(nl->op == ONAME) gvardef(nl); nodl.xoffset += Array_array; nodl.type = ptrto(nl->type->type); if(nr != N) { nodr.xoffset += Array_array; nodr.type = nodl.type; } gmove(&nodr, &nodl); nodl.xoffset += Array_nel-Array_array; nodl.type = types[simtype[TUINT]]; if(nr != N) { nodr.xoffset += Array_nel-Array_array; nodr.type = nodl.type; } gmove(&nodr, &nodl); nodl.xoffset += Array_cap-Array_nel; nodl.type = types[simtype[TUINT]]; if(nr != N) { nodr.xoffset += Array_cap-Array_nel; nodr.type = nodl.type; } gmove(&nodr, &nodl); goto yes; case TSTRING: if(nl->op == ONAME) gvardef(nl); nodl.xoffset += Array_array; nodl.type = ptrto(types[TUINT8]); if(nr != N) { nodr.xoffset += Array_array; nodr.type = nodl.type; } gmove(&nodr, &nodl); nodl.xoffset += Array_nel-Array_array; nodl.type = types[simtype[TUINT]]; if(nr != N) { nodr.xoffset += Array_nel-Array_array; nodr.type = nodl.type; } gmove(&nodr, &nodl); goto yes; case TINTER: if(nl->op == ONAME) gvardef(nl); nodl.xoffset += Array_array; nodl.type = ptrto(types[TUINT8]); if(nr != N) { nodr.xoffset += Array_array; nodr.type = nodl.type; } gmove(&nodr, &nodl); nodl.xoffset += Array_nel-Array_array; nodl.type = ptrto(types[TUINT8]); if(nr != N) { nodr.xoffset += Array_nel-Array_array; nodr.type = nodl.type; } gmove(&nodr, &nodl); goto yes; } no: if(freer) regfree(&nodr); if(freel) regfree(&nodl); return 0; yes: if(freer) regfree(&nodr); if(freel) regfree(&nodl); return 1; } ���������go/src/cmd/5g/cgen64.c������������������������������������������������������������������������������0100644�0000000�0000000�00000036103�12412656734�014576� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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. #include #include #include "gg.h" /* * attempt to generate 64-bit * res = n * return 1 on success, 0 if op not handled. */ void cgen64(Node *n, Node *res) { Node t1, t2, *l, *r; Node lo1, lo2, hi1, hi2; Node al, ah, bl, bh, cl, ch, s, n1, creg; Prog *p1, *p2, *p3, *p4, *p5, *p6; uint64 v; if(res->op != OINDREG && res->op != ONAME) { dump("n", n); dump("res", res); fatal("cgen64 %O of %O", n->op, res->op); } l = n->left; if(!l->addable) { tempname(&t1, l->type); cgen(l, &t1); l = &t1; } split64(l, &lo1, &hi1); switch(n->op) { default: fatal("cgen64 %O", n->op); case OMINUS: split64(res, &lo2, &hi2); regalloc(&t1, lo1.type, N); regalloc(&al, lo1.type, N); regalloc(&ah, hi1.type, N); gins(AMOVW, &lo1, &al); gins(AMOVW, &hi1, &ah); gmove(ncon(0), &t1); p1 = gins(ASUB, &al, &t1); p1->scond |= C_SBIT; gins(AMOVW, &t1, &lo2); gmove(ncon(0), &t1); gins(ASBC, &ah, &t1); gins(AMOVW, &t1, &hi2); regfree(&t1); regfree(&al); regfree(&ah); splitclean(); splitclean(); return; case OCOM: regalloc(&t1, lo1.type, N); gmove(ncon(-1), &t1); split64(res, &lo2, &hi2); regalloc(&n1, lo1.type, N); gins(AMOVW, &lo1, &n1); gins(AEOR, &t1, &n1); gins(AMOVW, &n1, &lo2); gins(AMOVW, &hi1, &n1); gins(AEOR, &t1, &n1); gins(AMOVW, &n1, &hi2); regfree(&t1); regfree(&n1); splitclean(); splitclean(); return; case OADD: case OSUB: case OMUL: case OLSH: case ORSH: case OAND: case OOR: case OXOR: case OLROT: // binary operators. // common setup below. break; } // setup for binary operators r = n->right; if(r != N && !r->addable) { tempname(&t2, r->type); cgen(r, &t2); r = &t2; } if(is64(r->type)) split64(r, &lo2, &hi2); regalloc(&al, lo1.type, N); regalloc(&ah, hi1.type, N); // Do op. Leave result in ah:al. switch(n->op) { default: fatal("cgen64: not implemented: %N\n", n); case OADD: // TODO: Constants regalloc(&bl, types[TPTR32], N); regalloc(&bh, types[TPTR32], N); gins(AMOVW, &hi1, &ah); gins(AMOVW, &lo1, &al); gins(AMOVW, &hi2, &bh); gins(AMOVW, &lo2, &bl); p1 = gins(AADD, &bl, &al); p1->scond |= C_SBIT; gins(AADC, &bh, &ah); regfree(&bl); regfree(&bh); break; case OSUB: // TODO: Constants. regalloc(&bl, types[TPTR32], N); regalloc(&bh, types[TPTR32], N); gins(AMOVW, &lo1, &al); gins(AMOVW, &hi1, &ah); gins(AMOVW, &lo2, &bl); gins(AMOVW, &hi2, &bh); p1 = gins(ASUB, &bl, &al); p1->scond |= C_SBIT; gins(ASBC, &bh, &ah); regfree(&bl); regfree(&bh); break; case OMUL: // TODO(kaib): this can be done with 4 regs and does not need 6 regalloc(&bl, types[TPTR32], N); regalloc(&bh, types[TPTR32], N); regalloc(&cl, types[TPTR32], N); regalloc(&ch, types[TPTR32], N); // load args into bh:bl and bh:bl. gins(AMOVW, &hi1, &bh); gins(AMOVW, &lo1, &bl); gins(AMOVW, &hi2, &ch); gins(AMOVW, &lo2, &cl); // bl * cl -> ah al p1 = gins(AMULLU, N, N); p1->from.type = D_REG; p1->from.reg = bl.val.u.reg; p1->reg = cl.val.u.reg; p1->to.type = D_REGREG; p1->to.reg = ah.val.u.reg; p1->to.offset = al.val.u.reg; //print("%P\n", p1); // bl * ch + ah -> ah p1 = gins(AMULA, N, N); p1->from.type = D_REG; p1->from.reg = bl.val.u.reg; p1->reg = ch.val.u.reg; p1->to.type = D_REGREG2; p1->to.reg = ah.val.u.reg; p1->to.offset = ah.val.u.reg; //print("%P\n", p1); // bh * cl + ah -> ah p1 = gins(AMULA, N, N); p1->from.type = D_REG; p1->from.reg = bh.val.u.reg; p1->reg = cl.val.u.reg; p1->to.type = D_REGREG2; p1->to.reg = ah.val.u.reg; p1->to.offset = ah.val.u.reg; //print("%P\n", p1); regfree(&bh); regfree(&bl); regfree(&ch); regfree(&cl); break; case OLROT: // We only rotate by a constant c in [0,64). // if c >= 32: // lo, hi = hi, lo // c -= 32 // if c == 0: // no-op // else: // t = hi // shld hi:lo, c // shld lo:t, c v = mpgetfix(r->val.u.xval); regalloc(&bl, lo1.type, N); regalloc(&bh, hi1.type, N); if(v >= 32) { // reverse during load to do the first 32 bits of rotate v -= 32; gins(AMOVW, &hi1, &bl); gins(AMOVW, &lo1, &bh); } else { gins(AMOVW, &hi1, &bh); gins(AMOVW, &lo1, &bl); } if(v == 0) { gins(AMOVW, &bh, &ah); gins(AMOVW, &bl, &al); } else { // rotate by 1 <= v <= 31 // MOVW bl<>(32-v), ah // OR bh>>(32-v), al gshift(AMOVW, &bl, SHIFT_LL, v, &al); gshift(AMOVW, &bh, SHIFT_LL, v, &ah); gshift(AORR, &bl, SHIFT_LR, 32-v, &ah); gshift(AORR, &bh, SHIFT_LR, 32-v, &al); } regfree(&bl); regfree(&bh); break; case OLSH: regalloc(&bl, lo1.type, N); regalloc(&bh, hi1.type, N); gins(AMOVW, &hi1, &bh); gins(AMOVW, &lo1, &bl); if(r->op == OLITERAL) { v = mpgetfix(r->val.u.xval); if(v >= 64) { // TODO(kaib): replace with gins(AMOVW, nodintconst(0), &al) // here and below (verify it optimizes to EOR) gins(AEOR, &al, &al); gins(AEOR, &ah, &ah); } else if(v > 32) { gins(AEOR, &al, &al); // MOVW bl<<(v-32), ah gshift(AMOVW, &bl, SHIFT_LL, (v-32), &ah); } else if(v == 32) { gins(AEOR, &al, &al); gins(AMOVW, &bl, &ah); } else if(v > 0) { // MOVW bl<>(32-v), ah gshift(AORR, &bl, SHIFT_LR, 32-v, &ah); } else { gins(AMOVW, &bl, &al); gins(AMOVW, &bh, &ah); } goto olsh_break; } regalloc(&s, types[TUINT32], N); regalloc(&creg, types[TUINT32], N); if (is64(r->type)) { // shift is >= 1<<32 split64(r, &cl, &ch); gmove(&ch, &s); gins(ATST, &s, N); p6 = gbranch(ABNE, T, 0); gmove(&cl, &s); splitclean(); } else { gmove(r, &s); p6 = P; } gins(ATST, &s, N); // shift == 0 p1 = gins(AMOVW, &bl, &al); p1->scond = C_SCOND_EQ; p1 = gins(AMOVW, &bh, &ah); p1->scond = C_SCOND_EQ; p2 = gbranch(ABEQ, T, 0); // shift is < 32 nodconst(&n1, types[TUINT32], 32); gmove(&n1, &creg); gcmp(ACMP, &s, &creg); // MOVW.LO bl<scond = C_SCOND_LO; // MOVW.LO bh<scond = C_SCOND_LO; // SUB.LO s, creg p1 = gins(ASUB, &s, &creg); p1->scond = C_SCOND_LO; // OR.LO bl>>creg, ah p1 = gregshift(AORR, &bl, SHIFT_LR, &creg, &ah); p1->scond = C_SCOND_LO; // BLO end p3 = gbranch(ABLO, T, 0); // shift == 32 p1 = gins(AEOR, &al, &al); p1->scond = C_SCOND_EQ; p1 = gins(AMOVW, &bl, &ah); p1->scond = C_SCOND_EQ; p4 = gbranch(ABEQ, T, 0); // shift is < 64 nodconst(&n1, types[TUINT32], 64); gmove(&n1, &creg); gcmp(ACMP, &s, &creg); // EOR.LO al, al p1 = gins(AEOR, &al, &al); p1->scond = C_SCOND_LO; // MOVW.LO creg>>1, creg p1 = gshift(AMOVW, &creg, SHIFT_LR, 1, &creg); p1->scond = C_SCOND_LO; // SUB.LO creg, s p1 = gins(ASUB, &creg, &s); p1->scond = C_SCOND_LO; // MOVW bl<scond = C_SCOND_LO; p5 = gbranch(ABLO, T, 0); // shift >= 64 if (p6 != P) patch(p6, pc); gins(AEOR, &al, &al); gins(AEOR, &ah, &ah); patch(p2, pc); patch(p3, pc); patch(p4, pc); patch(p5, pc); regfree(&s); regfree(&creg); olsh_break: regfree(&bl); regfree(&bh); break; case ORSH: regalloc(&bl, lo1.type, N); regalloc(&bh, hi1.type, N); gins(AMOVW, &hi1, &bh); gins(AMOVW, &lo1, &bl); if(r->op == OLITERAL) { v = mpgetfix(r->val.u.xval); if(v >= 64) { if(bh.type->etype == TINT32) { // MOVW bh->31, al gshift(AMOVW, &bh, SHIFT_AR, 31, &al); // MOVW bh->31, ah gshift(AMOVW, &bh, SHIFT_AR, 31, &ah); } else { gins(AEOR, &al, &al); gins(AEOR, &ah, &ah); } } else if(v > 32) { if(bh.type->etype == TINT32) { // MOVW bh->(v-32), al gshift(AMOVW, &bh, SHIFT_AR, v-32, &al); // MOVW bh->31, ah gshift(AMOVW, &bh, SHIFT_AR, 31, &ah); } else { // MOVW bh>>(v-32), al gshift(AMOVW, &bh, SHIFT_LR, v-32, &al); gins(AEOR, &ah, &ah); } } else if(v == 32) { gins(AMOVW, &bh, &al); if(bh.type->etype == TINT32) { // MOVW bh->31, ah gshift(AMOVW, &bh, SHIFT_AR, 31, &ah); } else { gins(AEOR, &ah, &ah); } } else if( v > 0) { // MOVW bl>>v, al gshift(AMOVW, &bl, SHIFT_LR, v, &al); // OR bh<<(32-v), al gshift(AORR, &bh, SHIFT_LL, 32-v, &al); if(bh.type->etype == TINT32) { // MOVW bh->v, ah gshift(AMOVW, &bh, SHIFT_AR, v, &ah); } else { // MOVW bh>>v, ah gshift(AMOVW, &bh, SHIFT_LR, v, &ah); } } else { gins(AMOVW, &bl, &al); gins(AMOVW, &bh, &ah); } goto orsh_break; } regalloc(&s, types[TUINT32], N); regalloc(&creg, types[TUINT32], N); if(is64(r->type)) { // shift is >= 1<<32 split64(r, &cl, &ch); gmove(&ch, &s); gins(ATST, &s, N); if(bh.type->etype == TINT32) p1 = gshift(AMOVW, &bh, SHIFT_AR, 31, &ah); else p1 = gins(AEOR, &ah, &ah); p1->scond = C_SCOND_NE; p6 = gbranch(ABNE, T, 0); gmove(&cl, &s); splitclean(); } else { gmove(r, &s); p6 = P; } gins(ATST, &s, N); // shift == 0 p1 = gins(AMOVW, &bl, &al); p1->scond = C_SCOND_EQ; p1 = gins(AMOVW, &bh, &ah); p1->scond = C_SCOND_EQ; p2 = gbranch(ABEQ, T, 0); // check if shift is < 32 nodconst(&n1, types[TUINT32], 32); gmove(&n1, &creg); gcmp(ACMP, &s, &creg); // MOVW.LO bl>>s, al p1 = gregshift(AMOVW, &bl, SHIFT_LR, &s, &al); p1->scond = C_SCOND_LO; // SUB.LO s,creg p1 = gins(ASUB, &s, &creg); p1->scond = C_SCOND_LO; // OR.LO bh<<(32-s), al p1 = gregshift(AORR, &bh, SHIFT_LL, &creg, &al); p1->scond = C_SCOND_LO; if(bh.type->etype == TINT32) { // MOVW bh->s, ah p1 = gregshift(AMOVW, &bh, SHIFT_AR, &s, &ah); } else { // MOVW bh>>s, ah p1 = gregshift(AMOVW, &bh, SHIFT_LR, &s, &ah); } p1->scond = C_SCOND_LO; // BLO end p3 = gbranch(ABLO, T, 0); // shift == 32 p1 = gins(AMOVW, &bh, &al); p1->scond = C_SCOND_EQ; if(bh.type->etype == TINT32) gshift(AMOVW, &bh, SHIFT_AR, 31, &ah); else gins(AEOR, &ah, &ah); p4 = gbranch(ABEQ, T, 0); // check if shift is < 64 nodconst(&n1, types[TUINT32], 64); gmove(&n1, &creg); gcmp(ACMP, &s, &creg); // MOVW.LO creg>>1, creg p1 = gshift(AMOVW, &creg, SHIFT_LR, 1, &creg); p1->scond = C_SCOND_LO; // SUB.LO creg, s p1 = gins(ASUB, &creg, &s); p1->scond = C_SCOND_LO; if(bh.type->etype == TINT32) { // MOVW bh->(s-32), al p1 = gregshift(AMOVW, &bh, SHIFT_AR, &s, &al); p1->scond = C_SCOND_LO; } else { // MOVW bh>>(v-32), al p1 = gregshift(AMOVW, &bh, SHIFT_LR, &s, &al); p1->scond = C_SCOND_LO; } // BLO end p5 = gbranch(ABLO, T, 0); // s >= 64 if(p6 != P) patch(p6, pc); if(bh.type->etype == TINT32) { // MOVW bh->31, al gshift(AMOVW, &bh, SHIFT_AR, 31, &al); } else { gins(AEOR, &al, &al); } patch(p2, pc); patch(p3, pc); patch(p4, pc); patch(p5, pc); regfree(&s); regfree(&creg); orsh_break: regfree(&bl); regfree(&bh); break; case OXOR: case OAND: case OOR: // TODO(kaib): literal optimizations // make constant the right side (it usually is anyway). // if(lo1.op == OLITERAL) { // nswap(&lo1, &lo2); // nswap(&hi1, &hi2); // } // if(lo2.op == OLITERAL) { // // special cases for constants. // lv = mpgetfix(lo2.val.u.xval); // hv = mpgetfix(hi2.val.u.xval); // splitclean(); // right side // split64(res, &lo2, &hi2); // switch(n->op) { // case OXOR: // gmove(&lo1, &lo2); // gmove(&hi1, &hi2); // switch(lv) { // case 0: // break; // case 0xffffffffu: // gins(ANOTL, N, &lo2); // break; // default: // gins(AXORL, ncon(lv), &lo2); // break; // } // switch(hv) { // case 0: // break; // case 0xffffffffu: // gins(ANOTL, N, &hi2); // break; // default: // gins(AXORL, ncon(hv), &hi2); // break; // } // break; // case OAND: // switch(lv) { // case 0: // gins(AMOVL, ncon(0), &lo2); // break; // default: // gmove(&lo1, &lo2); // if(lv != 0xffffffffu) // gins(AANDL, ncon(lv), &lo2); // break; // } // switch(hv) { // case 0: // gins(AMOVL, ncon(0), &hi2); // break; // default: // gmove(&hi1, &hi2); // if(hv != 0xffffffffu) // gins(AANDL, ncon(hv), &hi2); // break; // } // break; // case OOR: // switch(lv) { // case 0: // gmove(&lo1, &lo2); // break; // case 0xffffffffu: // gins(AMOVL, ncon(0xffffffffu), &lo2); // break; // default: // gmove(&lo1, &lo2); // gins(AORL, ncon(lv), &lo2); // break; // } // switch(hv) { // case 0: // gmove(&hi1, &hi2); // break; // case 0xffffffffu: // gins(AMOVL, ncon(0xffffffffu), &hi2); // break; // default: // gmove(&hi1, &hi2); // gins(AORL, ncon(hv), &hi2); // break; // } // break; // } // splitclean(); // splitclean(); // goto out; // } regalloc(&n1, lo1.type, N); gins(AMOVW, &lo1, &al); gins(AMOVW, &hi1, &ah); gins(AMOVW, &lo2, &n1); gins(optoas(n->op, lo1.type), &n1, &al); gins(AMOVW, &hi2, &n1); gins(optoas(n->op, lo1.type), &n1, &ah); regfree(&n1); break; } if(is64(r->type)) splitclean(); splitclean(); split64(res, &lo1, &hi1); gins(AMOVW, &al, &lo1); gins(AMOVW, &ah, &hi1); splitclean(); //out: regfree(&al); regfree(&ah); } /* * generate comparison of nl, nr, both 64-bit. * nl is memory; nr is constant or memory. */ void cmp64(Node *nl, Node *nr, int op, int likely, Prog *to) { Node lo1, hi1, lo2, hi2, r1, r2; Prog *br; Type *t; split64(nl, &lo1, &hi1); split64(nr, &lo2, &hi2); // compare most significant word; // if they differ, we're done. t = hi1.type; regalloc(&r1, types[TINT32], N); regalloc(&r2, types[TINT32], N); gins(AMOVW, &hi1, &r1); gins(AMOVW, &hi2, &r2); gcmp(ACMP, &r1, &r2); regfree(&r1); regfree(&r2); br = P; switch(op) { default: fatal("cmp64 %O %T", op, t); case OEQ: // cmp hi // bne L // cmp lo // beq to // L: br = gbranch(ABNE, T, -likely); break; case ONE: // cmp hi // bne to // cmp lo // bne to patch(gbranch(ABNE, T, likely), to); break; case OGE: case OGT: // cmp hi // bgt to // blt L // cmp lo // bge to (or bgt to) // L: patch(gbranch(optoas(OGT, t), T, likely), to); br = gbranch(optoas(OLT, t), T, -likely); break; case OLE: case OLT: // cmp hi // blt to // bgt L // cmp lo // ble to (or jlt to) // L: patch(gbranch(optoas(OLT, t), T, likely), to); br = gbranch(optoas(OGT, t), T, -likely); break; } // compare least significant word t = lo1.type; regalloc(&r1, types[TINT32], N); regalloc(&r2, types[TINT32], N); gins(AMOVW, &lo1, &r1); gins(AMOVW, &lo2, &r2); gcmp(ACMP, &r1, &r2); regfree(&r1); regfree(&r2); // jump again patch(gbranch(optoas(op, t), T, likely), to); // point first branch down here if appropriate if(br != P) patch(br, pc); splitclean(); splitclean(); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5g/doc.go��������������������������������������������������������������������������������0100644�0000000�0000000�00000000561�12412656734�014437� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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 ignore /* 5g is the version of the gc compiler for the ARM. The $GOARCH for these tools is arm. It reads .go files and outputs .5 files. The flags are documented in ../gc/doc.go. */ package main �����������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5g/galign.c������������������������������������������������������������������������������0100644�0000000�0000000�00000001476�12412656737�014761� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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. #include #include #include "gg.h" int thechar = '5'; char* thestring = "arm"; LinkArch* thelinkarch = &linkarm; void linkarchinit(void) { } vlong MAXWIDTH = (1LL<<32) - 1; /* * go declares several platform-specific type aliases: * int, uint, float, and uintptr */ Typedef typedefs[] = { "int", TINT, TINT32, "uint", TUINT, TUINT32, "uintptr", TUINTPTR, TUINT32, 0 }; void betypeinit(void) { widthptr = 4; widthint = 4; widthreg = 4; zprog.link = P; zprog.as = AGOK; zprog.scond = C_SCOND_NONE; zprog.reg = NREG; zprog.from.type = D_NONE; zprog.from.name = D_NONE; zprog.from.reg = NREG; zprog.to = zprog.from; listinit5(); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5g/gg.h����������������������������������������������������������������������������������0100644�0000000�0000000�00000005364�12412656737�014122� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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. #ifndef EXTERN #define EXTERN extern #endif #include "../gc/go.h" #include "../5l/5.out.h" #define TEXTFLAG reg #define REGALLOC_R0 0 #define REGALLOC_RMAX REGEXT #define REGALLOC_F0 NREG #define REGALLOC_FMAX (REGALLOC_F0 + FREGEXT) EXTERN int32 dynloc; EXTERN uchar reg[REGALLOC_FMAX+1]; EXTERN int32 pcloc; // instruction counter EXTERN Strlit emptystring; EXTERN Prog zprog; EXTERN Node* newproc; EXTERN Node* deferproc; EXTERN Node* deferreturn; EXTERN Node* panicindex; EXTERN Node* panicslice; EXTERN Node* throwreturn; extern long unmappedzero; /* * gen.c */ void compile(Node*); void gen(Node*); Node* lookdot(Node*, Node*, int); void cgen_as(Node*, Node*); void cgen_callmeth(Node*, int); void cgen_callinter(Node*, Node*, int); void cgen_proc(Node*, int); void cgen_callret(Node*, Node*); void cgen_dcl(Node*); int needconvert(Type*, Type*); void genconv(Type*, Type*); void allocparams(void); void checklabels(void); void ginscall(Node*, int); /* * cgen */ void agen(Node*, Node*); Prog* cgenindex(Node *, Node *, int); void igen(Node*, Node*, Node*); void agenr(Node *n, Node *a, Node *res); vlong fieldoffset(Type*, Node*); void sgen(Node*, Node*, int64); void gmove(Node*, Node*); Prog* gins(int, Node*, Node*); int samaddr(Node*, Node*); void raddr(Node *n, Prog *p); Prog* gcmp(int, Node*, Node*); Prog* gshift(int as, Node *lhs, int32 stype, int32 sval, Node *rhs); Prog * gregshift(int as, Node *lhs, int32 stype, Node *reg, Node *rhs); void naddr(Node*, Addr*, int); void cgen_aret(Node*, Node*); void cgen_hmul(Node*, Node*, Node*); void cgen_shift(int, int, Node*, Node*, Node*); int componentgen(Node*, Node*); /* * cgen64.c */ void cmp64(Node*, Node*, int, int, Prog*); void cgen64(Node*, Node*); /* * gsubr.c */ void clearp(Prog*); Prog* gbranch(int, Type*, int); Prog* prog(int); void gconv(int, int); int conv2pt(Type*); vlong convvtox(vlong, int); void fnparam(Type*, int, int); Prog* gop(int, Node*, Node*, Node*); int optoas(int, Type*); void ginit(void); void gclean(void); void regalloc(Node*, Type*, Node*); void regfree(Node*); Node* nodarg(Type*, int); void nodreg(Node*, Type*, int); void nodindreg(Node*, Type*, int); void buildtxt(void); Plist* newplist(void); int isfat(Type*); int dotaddable(Node*, Node*); void sudoclean(void); int sudoaddable(int, Node*, Addr*, int*); void afunclit(Addr*, Node*); void datagostring(Strlit*, Addr*); void split64(Node*, Node*, Node*); void splitclean(void); Node* ncon(uint32 i); void gtrack(Sym*); void gargsize(int32); /* * obj.c */ void datastring(char*, int, Addr*); /* * list.c */ void listinit(void); void zaddr(Biobuf*, Addr*, int, int); ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5g/ggen.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000047417�12412656737�014445� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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. #undef EXTERN #define EXTERN #include #include #include "gg.h" #include "opt.h" static Prog* appendpp(Prog*, int, int, int, int32, int, int, int32); static Prog *zerorange(Prog *p, vlong frame, vlong lo, vlong hi, uint32 *r0); void defframe(Prog *ptxt) { uint32 frame, r0; Prog *p; vlong hi, lo; NodeList *l; Node *n; // fill in argument size ptxt->to.type = D_CONST2; ptxt->to.offset2 = rnd(curfn->type->argwid, widthptr); // fill in final stack size frame = rnd(stksize+maxarg, widthptr); ptxt->to.offset = frame; // insert code to contain ambiguously live variables // so that garbage collector only sees initialized values // when it looks for pointers. p = ptxt; lo = hi = 0; r0 = 0; for(l=curfn->dcl; l != nil; l = l->next) { n = l->n; if(!n->needzero) continue; if(n->class != PAUTO) fatal("needzero class %d", n->class); if(n->type->width % widthptr != 0 || n->xoffset % widthptr != 0 || n->type->width == 0) fatal("var %lN has size %d offset %d", n, (int)n->type->width, (int)n->xoffset); if(lo != hi && n->xoffset + n->type->width >= lo - 2*widthptr) { // merge with range we already have lo = rnd(n->xoffset, widthptr); continue; } // zero old range p = zerorange(p, frame, lo, hi, &r0); // set new range hi = n->xoffset + n->type->width; lo = n->xoffset; } // zero final range zerorange(p, frame, lo, hi, &r0); } static Prog* zerorange(Prog *p, vlong frame, vlong lo, vlong hi, uint32 *r0) { vlong cnt, i; Prog *p1; Node *f; cnt = hi - lo; if(cnt == 0) return p; if(*r0 == 0) { p = appendpp(p, AMOVW, D_CONST, NREG, 0, D_REG, 0, 0); *r0 = 1; } if(cnt < 4*widthptr) { for(i = 0; i < cnt; i += widthptr) p = appendpp(p, AMOVW, D_REG, 0, 0, D_OREG, REGSP, 4+frame+lo+i); } else if(cnt <= 128*widthptr) { p = appendpp(p, AADD, D_CONST, NREG, 4+frame+lo, D_REG, 1, 0); p->reg = REGSP; p = appendpp(p, ADUFFZERO, D_NONE, NREG, 0, D_OREG, NREG, 0); f = sysfunc("duffzero"); naddr(f, &p->to, 1); afunclit(&p->to, f); p->to.offset = 4*(128-cnt/widthptr); } else { p = appendpp(p, AADD, D_CONST, NREG, 4+frame+lo, D_REG, 1, 0); p->reg = REGSP; p = appendpp(p, AADD, D_CONST, NREG, cnt, D_REG, 2, 0); p->reg = 1; p1 = p = appendpp(p, AMOVW, D_REG, 0, 0, D_OREG, 1, 4); p->scond |= C_PBIT; p = appendpp(p, ACMP, D_REG, 1, 0, D_NONE, 0, 0); p->reg = 2; p = appendpp(p, ABNE, D_NONE, NREG, 0, D_BRANCH, NREG, 0); patch(p, p1); } return p; } static Prog* appendpp(Prog *p, int as, int ftype, int freg, int32 foffset, int ttype, int treg, int32 toffset) { Prog *q; q = mal(sizeof(*q)); clearp(q); q->as = as; q->lineno = p->lineno; q->from.type = ftype; q->from.reg = freg; q->from.offset = foffset; q->to.type = ttype; q->to.reg = treg; q->to.offset = toffset; q->link = p->link; p->link = q; return q; } // Sweep the prog list to mark any used nodes. void markautoused(Prog* p) { for (; p; p = p->link) { if (p->as == ATYPE || p->as == AVARDEF || p->as == AVARKILL) continue; if (p->from.node) p->from.node->used = 1; if (p->to.node) p->to.node->used = 1; } } // Fixup instructions after allocauto (formerly compactframe) has moved all autos around. void fixautoused(Prog* p) { Prog **lp; for (lp=&p; (p=*lp) != P; ) { if (p->as == ATYPE && p->from.node && p->from.name == D_AUTO && !p->from.node->used) { *lp = p->link; continue; } if ((p->as == AVARDEF || p->as == AVARKILL) && p->to.node && !p->to.node->used) { // Cannot remove VARDEF instruction, because - unlike TYPE handled above - // VARDEFs are interspersed with other code, and a jump might be using the // VARDEF as a target. Replace with a no-op instead. A later pass will remove // the no-ops. p->to.type = D_NONE; p->to.node = N; p->as = ANOP; continue; } if (p->from.name == D_AUTO && p->from.node) p->from.offset += p->from.node->stkdelta; if (p->to.name == D_AUTO && p->to.node) p->to.offset += p->to.node->stkdelta; lp = &p->link; } } /* * generate: * call f * proc=-1 normal call but no return * proc=0 normal call * proc=1 goroutine run in new proc * proc=2 defer call save away stack * proc=3 normal call to C pointer (not Go func value) */ void ginscall(Node *f, int proc) { int32 arg; Prog *p; Node n1, r, r1, con; if(f->type != T) setmaxarg(f->type); arg = -1; // Most functions have a fixed-size argument block, so traceback uses that during unwind. // Not all, though: there are some variadic functions in package runtime, // and for those we emit call-specific metadata recorded by caller. // Reflect generates functions with variable argsize (see reflect.methodValueCall/makeFuncStub), // so we do this for all indirect calls as well. if(f->type != T && (f->sym == S || (f->sym != S && f->sym->pkg == runtimepkg) || proc == 1 || proc == 2)) { arg = f->type->argwid; if(proc == 1 || proc == 2) arg += 3*widthptr; } if(arg != -1) gargsize(arg); switch(proc) { default: fatal("ginscall: bad proc %d", proc); break; case 0: // normal call case -1: // normal call but no return if(f->op == ONAME && f->class == PFUNC) { if(f == deferreturn) { // Deferred calls will appear to be returning to // the BL deferreturn(SB) that we are about to emit. // However, the stack trace code will show the line // of the instruction before that return PC. // To avoid that instruction being an unrelated instruction, // insert a NOP so that we will have the right line number. // ARM NOP 0x00000000 is really AND.EQ R0, R0, R0. // Use the latter form because the NOP pseudo-instruction // would be removed by the linker. nodreg(&r, types[TINT], 0); p = gins(AAND, &r, &r); p->scond = C_SCOND_EQ; } p = gins(ABL, N, f); afunclit(&p->to, f); if(proc == -1 || noreturn(p)) gins(AUNDEF, N, N); break; } nodreg(&r, types[tptr], 7); nodreg(&r1, types[tptr], 1); gmove(f, &r); r.op = OINDREG; gmove(&r, &r1); r.op = OREGISTER; r1.op = OINDREG; gins(ABL, &r, &r1); break; case 3: // normal call of c function pointer gins(ABL, N, f); break; case 1: // call in new proc (go) case 2: // deferred call (defer) regalloc(&r, types[tptr], N); p = gins(AMOVW, N, &r); p->from.type = D_OREG; p->from.reg = REGSP; p = gins(AMOVW, &r, N); p->to.type = D_OREG; p->to.reg = REGSP; p->to.offset = -12; p->scond |= C_WBIT; memset(&n1, 0, sizeof n1); n1.op = OADDR; n1.left = f; gins(AMOVW, &n1, &r); p = gins(AMOVW, &r, N); p->to.type = D_OREG; p->to.reg = REGSP; p->to.offset = 8; nodconst(&con, types[TINT32], argsize(f->type)); gins(AMOVW, &con, &r); p = gins(AMOVW, &r, N); p->to.type = D_OREG; p->to.reg = REGSP; p->to.offset = 4; regfree(&r); if(proc == 1) ginscall(newproc, 0); else ginscall(deferproc, 0); nodreg(&r, types[tptr], 1); p = gins(AMOVW, N, N); p->from.type = D_CONST; p->from.reg = REGSP; p->from.offset = 12; p->to.reg = REGSP; p->to.type = D_REG; if(proc == 2) { nodconst(&con, types[TINT32], 0); p = gins(ACMP, &con, N); p->reg = 0; p = gbranch(ABEQ, T, +1); cgen_ret(N); patch(p, pc); } break; } if(arg != -1) gargsize(-1); } /* * n is call to interface method. * generate res = n. */ void cgen_callinter(Node *n, Node *res, int proc) { int r; Node *i, *f; Node tmpi, nodo, nodr, nodsp; Prog *p; i = n->left; if(i->op != ODOTINTER) fatal("cgen_callinter: not ODOTINTER %O", i->op); f = i->right; // field if(f->op != ONAME) fatal("cgen_callinter: not ONAME %O", f->op); i = i->left; // interface // Release res register during genlist and cgen, // which might have their own function calls. r = -1; if(res != N && (res->op == OREGISTER || res->op == OINDREG)) { r = res->val.u.reg; reg[r]--; } if(!i->addable) { tempname(&tmpi, i->type); cgen(i, &tmpi); i = &tmpi; } genlist(n->list); // args if(r >= 0) reg[r]++; regalloc(&nodr, types[tptr], res); regalloc(&nodo, types[tptr], &nodr); nodo.op = OINDREG; agen(i, &nodr); // REG = &inter nodindreg(&nodsp, types[tptr], REGSP); nodsp.xoffset = 4; nodo.xoffset += widthptr; cgen(&nodo, &nodsp); // 4(SP) = 4(REG) -- i.data nodo.xoffset -= widthptr; cgen(&nodo, &nodr); // REG = 0(REG) -- i.tab cgen_checknil(&nodr); // in case offset is huge nodo.xoffset = n->left->xoffset + 3*widthptr + 8; if(proc == 0) { // plain call: use direct c function pointer - more efficient cgen(&nodo, &nodr); // REG = 20+offset(REG) -- i.tab->fun[f] nodr.op = OINDREG; proc = 3; } else { // go/defer. generate go func value. p = gins(AMOVW, &nodo, &nodr); p->from.type = D_CONST; // REG = &(20+offset(REG)) -- i.tab->fun[f] } nodr.type = n->left->type; ginscall(&nodr, proc); regfree(&nodr); regfree(&nodo); } /* * generate function call; * proc=0 normal call * proc=1 goroutine run in new proc * proc=2 defer call save away stack */ void cgen_call(Node *n, int proc) { Type *t; Node nod, afun; if(n == N) return; if(n->left->ullman >= UINF) { // if name involves a fn call // precompute the address of the fn tempname(&afun, types[tptr]); cgen(n->left, &afun); } genlist(n->list); // assign the args t = n->left->type; // call tempname pointer if(n->left->ullman >= UINF) { regalloc(&nod, types[tptr], N); cgen_as(&nod, &afun); nod.type = t; ginscall(&nod, proc); regfree(&nod); goto ret; } // call pointer if(n->left->op != ONAME || n->left->class != PFUNC) { regalloc(&nod, types[tptr], N); cgen_as(&nod, n->left); nod.type = t; ginscall(&nod, proc); regfree(&nod); goto ret; } // call direct n->left->method = 1; ginscall(n->left, proc); ret: ; } /* * call to n has already been generated. * generate: * res = return value from call. */ void cgen_callret(Node *n, Node *res) { Node nod; Type *fp, *t; Iter flist; t = n->left->type; if(t->etype == TPTR32 || t->etype == TPTR64) t = t->type; fp = structfirst(&flist, getoutarg(t)); if(fp == T) fatal("cgen_callret: nil"); memset(&nod, 0, sizeof(nod)); nod.op = OINDREG; nod.val.u.reg = REGSP; nod.addable = 1; nod.xoffset = fp->width + 4; // +4: saved lr at 0(SP) nod.type = fp->type; cgen_as(res, &nod); } /* * call to n has already been generated. * generate: * res = &return value from call. */ void cgen_aret(Node *n, Node *res) { Node nod1, nod2; Type *fp, *t; Iter flist; t = n->left->type; if(isptr[t->etype]) t = t->type; fp = structfirst(&flist, getoutarg(t)); if(fp == T) fatal("cgen_aret: nil"); memset(&nod1, 0, sizeof(nod1)); nod1.op = OINDREG; nod1.val.u.reg = REGSP; nod1.addable = 1; nod1.xoffset = fp->width + 4; // +4: saved lr at 0(SP) nod1.type = fp->type; if(res->op != OREGISTER) { regalloc(&nod2, types[tptr], res); agen(&nod1, &nod2); gins(AMOVW, &nod2, res); regfree(&nod2); } else agen(&nod1, res); } /* * generate return. * n->left is assignments to return values. */ void cgen_ret(Node *n) { Prog *p; if(n != N) genlist(n->list); // copy out args if(hasdefer) ginscall(deferreturn, 0); genlist(curfn->exit); p = gins(ARET, N, N); if(n != N && n->op == ORETJMP) { p->to.name = D_EXTERN; p->to.type = D_CONST; p->to.sym = linksym(n->left->sym); } } /* * generate += *= etc. */ void cgen_asop(Node *n) { Node n1, n2, n3, n4; Node *nl, *nr; Prog *p1; Addr addr; int a, w; nl = n->left; nr = n->right; if(nr->ullman >= UINF && nl->ullman >= UINF) { tempname(&n1, nr->type); cgen(nr, &n1); n2 = *n; n2.right = &n1; cgen_asop(&n2); goto ret; } if(!isint[nl->type->etype]) goto hard; if(!isint[nr->type->etype]) goto hard; if(is64(nl->type) || is64(nr->type)) goto hard64; switch(n->etype) { case OADD: case OSUB: case OXOR: case OAND: case OOR: a = optoas(n->etype, nl->type); if(nl->addable) { if(smallintconst(nr)) n3 = *nr; else { regalloc(&n3, nr->type, N); cgen(nr, &n3); } regalloc(&n2, nl->type, N); cgen(nl, &n2); gins(a, &n3, &n2); cgen(&n2, nl); regfree(&n2); if(n3.op != OLITERAL) regfree(&n3); goto ret; } if(nr->ullman < UINF) if(sudoaddable(a, nl, &addr, &w)) { w = optoas(OAS, nl->type); regalloc(&n2, nl->type, N); p1 = gins(w, N, &n2); p1->from = addr; regalloc(&n3, nr->type, N); cgen(nr, &n3); gins(a, &n3, &n2); p1 = gins(w, &n2, N); p1->to = addr; regfree(&n2); regfree(&n3); sudoclean(); goto ret; } } hard: n2.op = 0; n1.op = 0; if(nr->op == OLITERAL) { // don't allocate a register for literals. } else if(nr->ullman >= nl->ullman || nl->addable) { regalloc(&n2, nr->type, N); cgen(nr, &n2); nr = &n2; } else { tempname(&n2, nr->type); cgen(nr, &n2); nr = &n2; } if(!nl->addable) { igen(nl, &n1, N); nl = &n1; } n3 = *n; n3.left = nl; n3.right = nr; n3.op = n->etype; regalloc(&n4, nl->type, N); cgen(&n3, &n4); gmove(&n4, nl); if(n1.op) regfree(&n1); if(n2.op == OREGISTER) regfree(&n2); regfree(&n4); goto ret; hard64: if(nr->ullman > nl->ullman) { tempname(&n2, nr->type); cgen(nr, &n2); igen(nl, &n1, N); } else { igen(nl, &n1, N); tempname(&n2, nr->type); cgen(nr, &n2); } n3 = *n; n3.left = &n1; n3.right = &n2; n3.op = n->etype; cgen(&n3, &n1); ret: ; } int samereg(Node *a, Node *b) { if(a->op != OREGISTER) return 0; if(b->op != OREGISTER) return 0; if(a->val.u.reg != b->val.u.reg) return 0; return 1; } /* * generate high multiply * res = (nl * nr) >> wordsize */ void cgen_hmul(Node *nl, Node *nr, Node *res) { int w; Node n1, n2, *tmp; Type *t; Prog *p; if(nl->ullman < nr->ullman) { tmp = nl; nl = nr; nr = tmp; } t = nl->type; w = t->width * 8; regalloc(&n1, t, res); cgen(nl, &n1); regalloc(&n2, t, N); cgen(nr, &n2); switch(simtype[t->etype]) { case TINT8: case TINT16: gins(optoas(OMUL, t), &n2, &n1); gshift(AMOVW, &n1, SHIFT_AR, w, &n1); break; case TUINT8: case TUINT16: gins(optoas(OMUL, t), &n2, &n1); gshift(AMOVW, &n1, SHIFT_LR, w, &n1); break; case TINT32: case TUINT32: // perform a long multiplication. if(issigned[t->etype]) p = gins(AMULL, &n2, N); else p = gins(AMULLU, &n2, N); // n2 * n1 -> (n1 n2) p->reg = n1.val.u.reg; p->to.type = D_REGREG; p->to.reg = n1.val.u.reg; p->to.offset = n2.val.u.reg; break; default: fatal("cgen_hmul %T", t); break; } cgen(&n1, res); regfree(&n1); regfree(&n2); } /* * generate shift according to op, one of: * res = nl << nr * res = nl >> nr */ void cgen_shift(int op, int bounded, Node *nl, Node *nr, Node *res) { Node n1, n2, n3, nt, t, lo, hi; int w, v; Prog *p1, *p2, *p3; Type *tr; uvlong sc; USED(bounded); if(nl->type->width > 4) fatal("cgen_shift %T", nl->type); w = nl->type->width * 8; if(op == OLROT) { v = mpgetfix(nr->val.u.xval); regalloc(&n1, nl->type, res); if(w == 32) { cgen(nl, &n1); gshift(AMOVW, &n1, SHIFT_RR, w-v, &n1); } else { regalloc(&n2, nl->type, N); cgen(nl, &n2); gshift(AMOVW, &n2, SHIFT_LL, v, &n1); gshift(AORR, &n2, SHIFT_LR, w-v, &n1); regfree(&n2); // Ensure sign/zero-extended result. gins(optoas(OAS, nl->type), &n1, &n1); } gmove(&n1, res); regfree(&n1); return; } if(nr->op == OLITERAL) { regalloc(&n1, nl->type, res); cgen(nl, &n1); sc = mpgetfix(nr->val.u.xval); if(sc == 0) { // nothing to do } else if(sc >= nl->type->width*8) { if(op == ORSH && issigned[nl->type->etype]) gshift(AMOVW, &n1, SHIFT_AR, w, &n1); else gins(AEOR, &n1, &n1); } else { if(op == ORSH && issigned[nl->type->etype]) gshift(AMOVW, &n1, SHIFT_AR, sc, &n1); else if(op == ORSH) gshift(AMOVW, &n1, SHIFT_LR, sc, &n1); else // OLSH gshift(AMOVW, &n1, SHIFT_LL, sc, &n1); } if(w < 32 && op == OLSH) gins(optoas(OAS, nl->type), &n1, &n1); gmove(&n1, res); regfree(&n1); return; } tr = nr->type; if(tr->width > 4) { tempname(&nt, nr->type); if(nl->ullman >= nr->ullman) { regalloc(&n2, nl->type, res); cgen(nl, &n2); cgen(nr, &nt); n1 = nt; } else { cgen(nr, &nt); regalloc(&n2, nl->type, res); cgen(nl, &n2); } split64(&nt, &lo, &hi); regalloc(&n1, types[TUINT32], N); regalloc(&n3, types[TUINT32], N); gmove(&lo, &n1); gmove(&hi, &n3); splitclean(); gins(ATST, &n3, N); nodconst(&t, types[TUINT32], w); p1 = gins(AMOVW, &t, &n1); p1->scond = C_SCOND_NE; tr = types[TUINT32]; regfree(&n3); } else { if(nl->ullman >= nr->ullman) { regalloc(&n2, nl->type, res); cgen(nl, &n2); regalloc(&n1, nr->type, N); cgen(nr, &n1); } else { regalloc(&n1, nr->type, N); cgen(nr, &n1); regalloc(&n2, nl->type, res); cgen(nl, &n2); } } // test for shift being 0 gins(ATST, &n1, N); p3 = gbranch(ABEQ, T, -1); // test and fix up large shifts // TODO: if(!bounded), don't emit some of this. regalloc(&n3, tr, N); nodconst(&t, types[TUINT32], w); gmove(&t, &n3); gcmp(ACMP, &n1, &n3); if(op == ORSH) { if(issigned[nl->type->etype]) { p1 = gshift(AMOVW, &n2, SHIFT_AR, w-1, &n2); p2 = gregshift(AMOVW, &n2, SHIFT_AR, &n1, &n2); } else { p1 = gins(AEOR, &n2, &n2); p2 = gregshift(AMOVW, &n2, SHIFT_LR, &n1, &n2); } p1->scond = C_SCOND_HS; p2->scond = C_SCOND_LO; } else { p1 = gins(AEOR, &n2, &n2); p2 = gregshift(AMOVW, &n2, SHIFT_LL, &n1, &n2); p1->scond = C_SCOND_HS; p2->scond = C_SCOND_LO; } regfree(&n3); patch(p3, pc); // Left-shift of smaller word must be sign/zero-extended. if(w < 32 && op == OLSH) gins(optoas(OAS, nl->type), &n2, &n2); gmove(&n2, res); regfree(&n1); regfree(&n2); } void clearfat(Node *nl) { uint32 w, c, q; Node dst, nc, nz, end, r0, r1, *f; Prog *p, *pl; /* clear a fat object */ if(debug['g']) dump("\nclearfat", nl); w = nl->type->width; // Avoid taking the address for simple enough types. if(componentgen(N, nl)) return; c = w % 4; // bytes q = w / 4; // quads r0.op = OREGISTER; r0.val.u.reg = REGALLOC_R0; r1.op = OREGISTER; r1.val.u.reg = REGALLOC_R0 + 1; regalloc(&dst, types[tptr], &r1); agen(nl, &dst); nodconst(&nc, types[TUINT32], 0); regalloc(&nz, types[TUINT32], &r0); cgen(&nc, &nz); if(q > 128) { regalloc(&end, types[tptr], N); p = gins(AMOVW, &dst, &end); p->from.type = D_CONST; p->from.offset = q*4; p = gins(AMOVW, &nz, &dst); p->to.type = D_OREG; p->to.offset = 4; p->scond |= C_PBIT; pl = p; p = gins(ACMP, &dst, N); raddr(&end, p); patch(gbranch(ABNE, T, 0), pl); regfree(&end); } else if(q >= 4) { f = sysfunc("duffzero"); p = gins(ADUFFZERO, N, f); afunclit(&p->to, f); // 4 and 128 = magic constants: see ../../pkg/runtime/asm_arm.s p->to.offset = 4*(128-q); } else while(q > 0) { p = gins(AMOVW, &nz, &dst); p->to.type = D_OREG; p->to.offset = 4; p->scond |= C_PBIT; //print("1. %P\n", p); q--; } while(c > 0) { p = gins(AMOVB, &nz, &dst); p->to.type = D_OREG; p->to.offset = 1; p->scond |= C_PBIT; //print("2. %P\n", p); c--; } regfree(&dst); regfree(&nz); } // Called after regopt and peep have run. // Expand CHECKNIL pseudo-op into actual nil pointer check. void expandchecks(Prog *firstp) { int reg; Prog *p, *p1; for(p = firstp; p != P; p = p->link) { if(p->as != ACHECKNIL) continue; if(debug_checknil && p->lineno > 1) // p->lineno==1 in generated wrappers warnl(p->lineno, "generated nil check"); if(p->from.type != D_REG) fatal("invalid nil check %P", p); reg = p->from.reg; // check is // CMP arg, $0 // MOV.EQ arg, 0(arg) p1 = mal(sizeof *p1); clearp(p1); p1->link = p->link; p->link = p1; p1->lineno = p->lineno; p1->pc = 9999; p1->as = AMOVW; p1->from.type = D_REG; p1->from.reg = reg; p1->to.type = D_OREG; p1->to.reg = reg; p1->to.offset = 0; p1->scond = C_SCOND_EQ; p->as = ACMP; p->from.type = D_CONST; p->from.reg = NREG; p->from.offset = 0; p->reg = reg; } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5g/gobj.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000012445�12412656734�014434� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Derived from Inferno utils/5c/swt.c // http://code.google.com/p/inferno-os/source/browse/utils/5c/swt.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "gg.h" int dsname(Sym *sym, int off, char *t, int n) { Prog *p; p = gins(ADATA, N, N); p->from.type = D_OREG; p->from.name = D_EXTERN; p->from.etype = TINT32; p->from.offset = off; p->from.reg = NREG; p->from.sym = linksym(sym); p->reg = n; p->to.type = D_SCONST; p->to.name = D_NONE; p->to.reg = NREG; p->to.offset = 0; memmove(p->to.u.sval, t, n); return off + n; } /* * make a refer to the data s, s+len * emitting DATA if needed. */ void datastring(char *s, int len, Addr *a) { Sym *sym; sym = stringsym(s, len); a->type = D_OREG; a->name = D_EXTERN; a->etype = TINT32; a->offset = widthptr+4; // skip header a->reg = NREG; a->sym = linksym(sym); a->node = sym->def; } /* * make a refer to the string sval, * emitting DATA if needed. */ void datagostring(Strlit *sval, Addr *a) { Sym *sym; sym = stringsym(sval->s, sval->len); a->type = D_OREG; a->name = D_EXTERN; a->etype = TINT32; a->offset = 0; // header a->reg = NREG; a->sym = linksym(sym); a->node = sym->def; } void gdata(Node *nam, Node *nr, int wid) { Prog *p; vlong v; if(nr->op == OLITERAL) { switch(nr->val.ctype) { case CTCPLX: gdatacomplex(nam, nr->val.u.cval); return; case CTSTR: gdatastring(nam, nr->val.u.sval); return; } } if(wid == 8 && is64(nr->type)) { v = mpgetfix(nr->val.u.xval); p = gins(ADATA, nam, nodintconst(v)); p->reg = 4; p = gins(ADATA, nam, nodintconst(v>>32)); p->reg = 4; p->from.offset += 4; return; } p = gins(ADATA, nam, nr); p->reg = wid; } void gdatacomplex(Node *nam, Mpcplx *cval) { Prog *p; int w; w = cplxsubtype(nam->type->etype); w = types[w]->width; p = gins(ADATA, nam, N); p->reg = w; p->to.type = D_FCONST; p->to.u.dval = mpgetflt(&cval->real); p = gins(ADATA, nam, N); p->reg = w; p->from.offset += w; p->to.type = D_FCONST; p->to.u.dval = mpgetflt(&cval->imag); } void gdatastring(Node *nam, Strlit *sval) { Prog *p; Node nod1; p = gins(ADATA, nam, N); datastring(sval->s, sval->len, &p->to); p->reg = types[tptr]->width; p->to.type = D_CONST; p->to.etype = TINT32; //print("%P\n", p); nodconst(&nod1, types[TINT32], sval->len); p = gins(ADATA, nam, &nod1); p->reg = types[TINT32]->width; p->from.offset += types[tptr]->width; } int dstringptr(Sym *s, int off, char *str) { Prog *p; off = rnd(off, widthptr); p = gins(ADATA, N, N); p->from.type = D_OREG; p->from.name = D_EXTERN; p->from.sym = linksym(s); p->from.offset = off; p->reg = widthptr; datastring(str, strlen(str)+1, &p->to); p->to.type = D_CONST; p->to.etype = TINT32; off += widthptr; return off; } int dgostrlitptr(Sym *s, int off, Strlit *lit) { Prog *p; if(lit == nil) return duintptr(s, off, 0); off = rnd(off, widthptr); p = gins(ADATA, N, N); p->from.type = D_OREG; p->from.name = D_EXTERN; p->from.sym = linksym(s); p->from.offset = off; p->reg = widthptr; datagostring(lit, &p->to); p->to.type = D_CONST; p->to.etype = TINT32; off += widthptr; return off; } int dgostringptr(Sym *s, int off, char *str) { int n; Strlit *lit; if(str == nil) return duintptr(s, off, 0); n = strlen(str); lit = mal(sizeof *lit + n); strcpy(lit->s, str); lit->len = n; return dgostrlitptr(s, off, lit); } int dsymptr(Sym *s, int off, Sym *x, int xoff) { Prog *p; off = rnd(off, widthptr); p = gins(ADATA, N, N); p->from.type = D_OREG; p->from.name = D_EXTERN; p->from.sym = linksym(s); p->from.offset = off; p->reg = widthptr; p->to.type = D_CONST; p->to.name = D_EXTERN; p->to.sym = linksym(x); p->to.offset = xoff; off += widthptr; return off; } void nopout(Prog *p) { p->as = ANOP; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5g/gsubr.c�������������������������������������������������������������������������������0100644�0000000�0000000�00000114024�12412656737�014634� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Derived from Inferno utils/5c/txt.c // http://code.google.com/p/inferno-os/source/browse/utils/5c/txt.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "gg.h" #include "../../pkg/runtime/funcdata.h" // TODO(rsc): Can make this bigger if we move // the text segment up higher in 5l for all GOOS. // At the same time, can raise StackBig in ../../pkg/runtime/stack.h. long unmappedzero = 4096; void clearp(Prog *p) { p->as = AEND; p->reg = NREG; p->scond = C_SCOND_NONE; p->from.type = D_NONE; p->from.name = D_NONE; p->from.reg = NREG; p->to.type = D_NONE; p->to.name = D_NONE; p->to.reg = NREG; p->pc = pcloc; pcloc++; } static int ddumped; static Prog *dfirst; static Prog *dpc; /* * generate and return proc with p->as = as, * linked into program. pc is next instruction. */ Prog* prog(int as) { Prog *p; if(as == ADATA || as == AGLOBL) { if(ddumped) fatal("already dumped data"); if(dpc == nil) { dpc = mal(sizeof(*dpc)); dfirst = dpc; } p = dpc; dpc = mal(sizeof(*dpc)); p->link = dpc; p->reg = 0; // used for flags } else { p = pc; pc = mal(sizeof(*pc)); clearp(pc); p->link = pc; } if(lineno == 0) { if(debug['K']) warn("prog: line 0"); } p->as = as; p->lineno = lineno; return p; } void dumpdata(void) { ddumped = 1; if(dfirst == nil) return; newplist(); *pc = *dfirst; pc = dpc; clearp(pc); } /* * generate a branch. * t is ignored. * likely values are for branch prediction: * -1 unlikely * 0 no opinion * +1 likely */ Prog* gbranch(int as, Type *t, int likely) { Prog *p; USED(t); USED(likely); // TODO: record this for linker p = prog(as); p->to.type = D_BRANCH; p->to.u.branch = P; return p; } /* * patch previous branch to jump to to. */ void patch(Prog *p, Prog *to) { if(p->to.type != D_BRANCH) fatal("patch: not a branch"); p->to.u.branch = to; p->to.offset = to->pc; } Prog* unpatch(Prog *p) { Prog *q; if(p->to.type != D_BRANCH) fatal("unpatch: not a branch"); q = p->to.u.branch; p->to.u.branch = P; p->to.offset = 0; return q; } /* * start a new Prog list. */ Plist* newplist(void) { Plist *pl; pl = linknewplist(ctxt); pc = mal(sizeof(*pc)); clearp(pc); pl->firstpc = pc; return pl; } void gused(Node *n) { gins(ANOP, n, N); // used } Prog* gjmp(Prog *to) { Prog *p; p = gbranch(AB, T, 0); if(to != P) patch(p, to); return p; } void ggloblnod(Node *nam) { Prog *p; p = gins(AGLOBL, nam, N); p->lineno = nam->lineno; p->from.sym->gotype = linksym(ngotype(nam)); p->to.sym = nil; p->to.type = D_CONST; p->to.offset = nam->type->width; if(nam->readonly) p->reg = RODATA; if(nam->type != T && !haspointers(nam->type)) p->reg |= NOPTR; } void gargsize(int32 size) { Node n1, n2; nodconst(&n1, types[TINT32], PCDATA_ArgSize); nodconst(&n2, types[TINT32], size); gins(APCDATA, &n1, &n2); } void ggloblsym(Sym *s, int32 width, int dupok, int rodata) { Prog *p; p = gins(AGLOBL, N, N); p->from.type = D_OREG; p->from.name = D_EXTERN; p->from.sym = linksym(s); p->to.type = D_CONST; p->to.name = D_NONE; p->to.offset = width; if(dupok) p->reg |= DUPOK; if(rodata) p->reg |= RODATA; } void gtrack(Sym *s) { Prog *p; p = gins(AUSEFIELD, N, N); p->from.type = D_OREG; p->from.name = D_EXTERN; p->from.sym = linksym(s); } int isfat(Type *t) { if(t != T) switch(t->etype) { case TSTRUCT: case TARRAY: case TSTRING: case TINTER: // maybe remove later return 1; } return 0; } /* * naddr of func generates code for address of func. * if using opcode that can take address implicitly, * call afunclit to fix up the argument. * also fix up direct register references to be D_OREG. */ void afunclit(Addr *a, Node *n) { if(a->type == D_CONST && a->name == D_EXTERN || a->type == D_REG) { a->type = D_OREG; if(n->op == ONAME) a->sym = linksym(n->sym); } } static int resvd[] = { 9, // reserved for m 10, // reserved for g REGSP, // reserved for SP }; void ginit(void) { int i; for(i=0; ietype]; if(is64(t)) fatal("regalloc: 64 bit type %T"); switch(et) { case TINT8: case TUINT8: case TINT16: case TUINT16: case TINT32: case TUINT32: case TPTR32: case TBOOL: if(o != N && o->op == OREGISTER) { i = o->val.u.reg; if(i >= REGALLOC_R0 && i <= REGALLOC_RMAX) goto out; } for(i=REGALLOC_R0; i<=REGALLOC_RMAX; i++) if(reg[i] == 0) { regpc[i] = (uintptr)getcallerpc(&n); goto out; } print("registers allocated at\n"); for(i=REGALLOC_R0; i<=REGALLOC_RMAX; i++) print("%d %p\n", i, regpc[i]); yyerror("out of fixed registers"); goto err; case TFLOAT32: case TFLOAT64: if(o != N && o->op == OREGISTER) { i = o->val.u.reg; if(i >= REGALLOC_F0 && i <= REGALLOC_FMAX) goto out; } for(i=REGALLOC_F0; i<=REGALLOC_FMAX; i++) if(reg[i] == 0) goto out; yyerror("out of floating point registers"); goto err; case TCOMPLEX64: case TCOMPLEX128: tempname(n, t); return; } yyerror("regalloc: unknown type %T", t); err: nodreg(n, t, 0); return; out: reg[i]++; nodreg(n, t, i); } void regfree(Node *n) { int i, fixfree, floatfree; if(0 && debug['r']) { fixfree = 0; for(i=REGALLOC_R0; i<=REGALLOC_RMAX; i++) if(reg[i] == 0) fixfree++; floatfree = 0; for(i=REGALLOC_F0; i<=REGALLOC_FMAX; i++) if(reg[i] == 0) floatfree++; print("regalloc fix %d float %d\n", fixfree, floatfree); } if(n->op == ONAME) return; if(n->op != OREGISTER && n->op != OINDREG) fatal("regfree: not a register"); i = n->val.u.reg; if(i == REGSP) return; if(i < 0 || i >= nelem(reg) || i >= nelem(regpc)) fatal("regfree: reg out of range"); if(reg[i] <= 0) fatal("regfree: reg %R not allocated", i); reg[i]--; if(reg[i] == 0) regpc[i] = 0; } /* * initialize n to be register r of type t. */ void nodreg(Node *n, Type *t, int r) { if(t == T) fatal("nodreg: t nil"); memset(n, 0, sizeof(*n)); n->op = OREGISTER; n->addable = 1; ullmancalc(n); n->val.u.reg = r; n->type = t; } /* * initialize n to be indirect of register r; n is type t. */ void nodindreg(Node *n, Type *t, int r) { nodreg(n, t, r); n->op = OINDREG; } Node* nodarg(Type *t, int fp) { Node *n; NodeList *l; Type *first; Iter savet; // entire argument struct, not just one arg if(t->etype == TSTRUCT && t->funarg) { n = nod(ONAME, N, N); n->sym = lookup(".args"); n->type = t; first = structfirst(&savet, &t); if(first == nil) fatal("nodarg: bad struct"); if(first->width == BADWIDTH) fatal("nodarg: offset not computed for %T", t); n->xoffset = first->width; n->addable = 1; goto fp; } if(t->etype != TFIELD) fatal("nodarg: not field %T", t); if(fp == 1) { for(l=curfn->dcl; l; l=l->next) { n = l->n; if((n->class == PPARAM || n->class == PPARAMOUT) && !isblanksym(t->sym) && n->sym == t->sym) return n; } } n = nod(ONAME, N, N); n->type = t->type; n->sym = t->sym; if(t->width == BADWIDTH) fatal("nodarg: offset not computed for %T", t); n->xoffset = t->width; n->addable = 1; n->orig = t->nname; fp: // Rewrite argument named _ to __, // or else the assignment to _ will be // discarded during code generation. if(isblank(n)) n->sym = lookup("__"); switch(fp) { default: fatal("nodarg %T %d", t, fp); case 0: // output arg for calling another function n->op = OINDREG; n->val.u.reg = REGSP; n->xoffset += 4; break; case 1: // input arg to current function n->class = PPARAM; break; } n->typecheck = 1; return n; } /* * return constant i node. * overwritten by next call, but useful in calls to gins. */ Node* ncon(uint32 i) { static Node n; if(n.type == T) nodconst(&n, types[TUINT32], 0); mpmovecfix(n.val.u.xval, i); return &n; } /* * Is this node a memory operand? */ int ismem(Node *n) { switch(n->op) { case OINDREG: case ONAME: case OPARAM: case OCLOSUREVAR: return 1; } return 0; } Node sclean[10]; int nsclean; /* * n is a 64-bit value. fill in lo and hi to refer to its 32-bit halves. */ void split64(Node *n, Node *lo, Node *hi) { Node n1; int64 i; if(!is64(n->type)) fatal("split64 %T", n->type); if(nsclean >= nelem(sclean)) fatal("split64 clean"); sclean[nsclean].op = OEMPTY; nsclean++; switch(n->op) { default: if(!dotaddable(n, &n1)) { igen(n, &n1, N); sclean[nsclean-1] = n1; } n = &n1; goto common; case ONAME: if(n->class == PPARAMREF) { cgen(n->heapaddr, &n1); sclean[nsclean-1] = n1; // fall through. n = &n1; } goto common; case OINDREG: common: *lo = *n; *hi = *n; lo->type = types[TUINT32]; if(n->type->etype == TINT64) hi->type = types[TINT32]; else hi->type = types[TUINT32]; hi->xoffset += 4; break; case OLITERAL: convconst(&n1, n->type, &n->val); i = mpgetfix(n1.val.u.xval); nodconst(lo, types[TUINT32], (uint32)i); i >>= 32; if(n->type->etype == TINT64) nodconst(hi, types[TINT32], (int32)i); else nodconst(hi, types[TUINT32], (uint32)i); break; } } void splitclean(void) { if(nsclean <= 0) fatal("splitclean"); nsclean--; if(sclean[nsclean].op != OEMPTY) regfree(&sclean[nsclean]); } #define CASE(a,b) (((a)<<16)|((b)<<0)) void gmove(Node *f, Node *t) { int a, ft, tt, fa, ta; Type *cvt; Node r1, r2, flo, fhi, tlo, thi, con; Prog *p1; if(debug['M']) print("gmove %N -> %N\n", f, t); ft = simsimtype(f->type); tt = simsimtype(t->type); cvt = t->type; if(iscomplex[ft] || iscomplex[tt]) { complexmove(f, t); return; } // cannot have two memory operands; // except 64-bit, which always copies via registers anyway. if(!is64(f->type) && !is64(t->type) && ismem(f) && ismem(t)) goto hard; // convert constant to desired type if(f->op == OLITERAL) { switch(tt) { default: convconst(&con, t->type, &f->val); break; case TINT16: case TINT8: convconst(&con, types[TINT32], &f->val); regalloc(&r1, con.type, t); gins(AMOVW, &con, &r1); gmove(&r1, t); regfree(&r1); return; case TUINT16: case TUINT8: convconst(&con, types[TUINT32], &f->val); regalloc(&r1, con.type, t); gins(AMOVW, &con, &r1); gmove(&r1, t); regfree(&r1); return; } f = &con; ft = simsimtype(con.type); // constants can't move directly to memory if(ismem(t) && !is64(t->type)) goto hard; } // value -> value copy, only one memory operand. // figure out the instruction to use. // break out of switch for one-instruction gins. // goto rdst for "destination must be register". // goto hard for "convert to cvt type first". // otherwise handle and return. switch(CASE(ft, tt)) { default: goto fatal; /* * integer copy and truncate */ case CASE(TINT8, TINT8): // same size if(!ismem(f)) { a = AMOVB; break; } case CASE(TUINT8, TINT8): case CASE(TINT16, TINT8): // truncate case CASE(TUINT16, TINT8): case CASE(TINT32, TINT8): case CASE(TUINT32, TINT8): a = AMOVBS; break; case CASE(TUINT8, TUINT8): if(!ismem(f)) { a = AMOVB; break; } case CASE(TINT8, TUINT8): case CASE(TINT16, TUINT8): case CASE(TUINT16, TUINT8): case CASE(TINT32, TUINT8): case CASE(TUINT32, TUINT8): a = AMOVBU; break; case CASE(TINT64, TINT8): // truncate low word case CASE(TUINT64, TINT8): a = AMOVBS; goto trunc64; case CASE(TINT64, TUINT8): case CASE(TUINT64, TUINT8): a = AMOVBU; goto trunc64; case CASE(TINT16, TINT16): // same size if(!ismem(f)) { a = AMOVH; break; } case CASE(TUINT16, TINT16): case CASE(TINT32, TINT16): // truncate case CASE(TUINT32, TINT16): a = AMOVHS; break; case CASE(TUINT16, TUINT16): if(!ismem(f)) { a = AMOVH; break; } case CASE(TINT16, TUINT16): case CASE(TINT32, TUINT16): case CASE(TUINT32, TUINT16): a = AMOVHU; break; case CASE(TINT64, TINT16): // truncate low word case CASE(TUINT64, TINT16): a = AMOVHS; goto trunc64; case CASE(TINT64, TUINT16): case CASE(TUINT64, TUINT16): a = AMOVHU; goto trunc64; case CASE(TINT32, TINT32): // same size case CASE(TINT32, TUINT32): case CASE(TUINT32, TINT32): case CASE(TUINT32, TUINT32): a = AMOVW; break; case CASE(TINT64, TINT32): // truncate case CASE(TUINT64, TINT32): case CASE(TINT64, TUINT32): case CASE(TUINT64, TUINT32): split64(f, &flo, &fhi); regalloc(&r1, t->type, N); gins(AMOVW, &flo, &r1); gins(AMOVW, &r1, t); regfree(&r1); splitclean(); return; case CASE(TINT64, TINT64): // same size case CASE(TINT64, TUINT64): case CASE(TUINT64, TINT64): case CASE(TUINT64, TUINT64): split64(f, &flo, &fhi); split64(t, &tlo, &thi); regalloc(&r1, flo.type, N); regalloc(&r2, fhi.type, N); gins(AMOVW, &flo, &r1); gins(AMOVW, &fhi, &r2); gins(AMOVW, &r1, &tlo); gins(AMOVW, &r2, &thi); regfree(&r1); regfree(&r2); splitclean(); splitclean(); return; /* * integer up-conversions */ case CASE(TINT8, TINT16): // sign extend int8 case CASE(TINT8, TUINT16): case CASE(TINT8, TINT32): case CASE(TINT8, TUINT32): a = AMOVBS; goto rdst; case CASE(TINT8, TINT64): // convert via int32 case CASE(TINT8, TUINT64): cvt = types[TINT32]; goto hard; case CASE(TUINT8, TINT16): // zero extend uint8 case CASE(TUINT8, TUINT16): case CASE(TUINT8, TINT32): case CASE(TUINT8, TUINT32): a = AMOVBU; goto rdst; case CASE(TUINT8, TINT64): // convert via uint32 case CASE(TUINT8, TUINT64): cvt = types[TUINT32]; goto hard; case CASE(TINT16, TINT32): // sign extend int16 case CASE(TINT16, TUINT32): a = AMOVHS; goto rdst; case CASE(TINT16, TINT64): // convert via int32 case CASE(TINT16, TUINT64): cvt = types[TINT32]; goto hard; case CASE(TUINT16, TINT32): // zero extend uint16 case CASE(TUINT16, TUINT32): a = AMOVHU; goto rdst; case CASE(TUINT16, TINT64): // convert via uint32 case CASE(TUINT16, TUINT64): cvt = types[TUINT32]; goto hard; case CASE(TINT32, TINT64): // sign extend int32 case CASE(TINT32, TUINT64): split64(t, &tlo, &thi); regalloc(&r1, tlo.type, N); regalloc(&r2, thi.type, N); gmove(f, &r1); p1 = gins(AMOVW, &r1, &r2); p1->from.type = D_SHIFT; p1->from.offset = 2 << 5 | 31 << 7 | r1.val.u.reg; // r1->31 p1->from.reg = NREG; //print("gmove: %P\n", p1); gins(AMOVW, &r1, &tlo); gins(AMOVW, &r2, &thi); regfree(&r1); regfree(&r2); splitclean(); return; case CASE(TUINT32, TINT64): // zero extend uint32 case CASE(TUINT32, TUINT64): split64(t, &tlo, &thi); gmove(f, &tlo); regalloc(&r1, thi.type, N); gins(AMOVW, ncon(0), &r1); gins(AMOVW, &r1, &thi); regfree(&r1); splitclean(); return; /* * float to integer */ case CASE(TFLOAT32, TINT8): case CASE(TFLOAT32, TUINT8): case CASE(TFLOAT32, TINT16): case CASE(TFLOAT32, TUINT16): case CASE(TFLOAT32, TINT32): case CASE(TFLOAT32, TUINT32): // case CASE(TFLOAT32, TUINT64): case CASE(TFLOAT64, TINT8): case CASE(TFLOAT64, TUINT8): case CASE(TFLOAT64, TINT16): case CASE(TFLOAT64, TUINT16): case CASE(TFLOAT64, TINT32): case CASE(TFLOAT64, TUINT32): // case CASE(TFLOAT64, TUINT64): fa = AMOVF; a = AMOVFW; if(ft == TFLOAT64) { fa = AMOVD; a = AMOVDW; } ta = AMOVW; switch(tt) { case TINT8: ta = AMOVBS; break; case TUINT8: ta = AMOVBU; break; case TINT16: ta = AMOVHS; break; case TUINT16: ta = AMOVHU; break; } regalloc(&r1, types[ft], f); regalloc(&r2, types[tt], t); gins(fa, f, &r1); // load to fpu p1 = gins(a, &r1, &r1); // convert to w switch(tt) { case TUINT8: case TUINT16: case TUINT32: p1->scond |= C_UBIT; } gins(AMOVW, &r1, &r2); // copy to cpu gins(ta, &r2, t); // store regfree(&r1); regfree(&r2); return; /* * integer to float */ case CASE(TINT8, TFLOAT32): case CASE(TUINT8, TFLOAT32): case CASE(TINT16, TFLOAT32): case CASE(TUINT16, TFLOAT32): case CASE(TINT32, TFLOAT32): case CASE(TUINT32, TFLOAT32): case CASE(TINT8, TFLOAT64): case CASE(TUINT8, TFLOAT64): case CASE(TINT16, TFLOAT64): case CASE(TUINT16, TFLOAT64): case CASE(TINT32, TFLOAT64): case CASE(TUINT32, TFLOAT64): fa = AMOVW; switch(ft) { case TINT8: fa = AMOVBS; break; case TUINT8: fa = AMOVBU; break; case TINT16: fa = AMOVHS; break; case TUINT16: fa = AMOVHU; break; } a = AMOVWF; ta = AMOVF; if(tt == TFLOAT64) { a = AMOVWD; ta = AMOVD; } regalloc(&r1, types[ft], f); regalloc(&r2, types[tt], t); gins(fa, f, &r1); // load to cpu gins(AMOVW, &r1, &r2); // copy to fpu p1 = gins(a, &r2, &r2); // convert switch(ft) { case TUINT8: case TUINT16: case TUINT32: p1->scond |= C_UBIT; } gins(ta, &r2, t); // store regfree(&r1); regfree(&r2); return; case CASE(TUINT64, TFLOAT32): case CASE(TUINT64, TFLOAT64): fatal("gmove UINT64, TFLOAT not implemented"); return; /* * float to float */ case CASE(TFLOAT32, TFLOAT32): a = AMOVF; break; case CASE(TFLOAT64, TFLOAT64): a = AMOVD; break; case CASE(TFLOAT32, TFLOAT64): regalloc(&r1, types[TFLOAT64], t); gins(AMOVF, f, &r1); gins(AMOVFD, &r1, &r1); gins(AMOVD, &r1, t); regfree(&r1); return; case CASE(TFLOAT64, TFLOAT32): regalloc(&r1, types[TFLOAT64], t); gins(AMOVD, f, &r1); gins(AMOVDF, &r1, &r1); gins(AMOVF, &r1, t); regfree(&r1); return; } gins(a, f, t); return; rdst: // TODO(kaib): we almost always require a register dest anyway, this can probably be // removed. // requires register destination regalloc(&r1, t->type, t); gins(a, f, &r1); gmove(&r1, t); regfree(&r1); return; hard: // requires register intermediate regalloc(&r1, cvt, t); gmove(f, &r1); gmove(&r1, t); regfree(&r1); return; trunc64: // truncate 64 bit integer split64(f, &flo, &fhi); regalloc(&r1, t->type, N); gins(a, &flo, &r1); gins(a, &r1, t); regfree(&r1); splitclean(); return; fatal: // should not happen fatal("gmove %N -> %N", f, t); } int samaddr(Node *f, Node *t) { if(f->op != t->op) return 0; switch(f->op) { case OREGISTER: if(f->val.u.reg != t->val.u.reg) break; return 1; } return 0; } /* * generate one instruction: * as f, t */ Prog* gins(int as, Node *f, Node *t) { // Node nod; // int32 v; Prog *p; Addr af, at; if(f != N && f->op == OINDEX) { fatal("gins OINDEX not implemented"); // regalloc(&nod, ®node, Z); // v = constnode.vconst; // cgen(f->right, &nod); // constnode.vconst = v; // idx.reg = nod.reg; // regfree(&nod); } if(t != N && t->op == OINDEX) { fatal("gins OINDEX not implemented"); // regalloc(&nod, ®node, Z); // v = constnode.vconst; // cgen(t->right, &nod); // constnode.vconst = v; // idx.reg = nod.reg; // regfree(&nod); } memset(&af, 0, sizeof af); memset(&at, 0, sizeof at); if(f != N) naddr(f, &af, 1); if(t != N) naddr(t, &at, 1); p = prog(as); if(f != N) p->from = af; if(t != N) p->to = at; if(debug['g']) print("%P\n", p); return p; } /* * insert n into reg slot of p */ void raddr(Node *n, Prog *p) { Addr a; naddr(n, &a, 1); if(a.type != D_REG && a.type != D_FREG) { if(n) fatal("bad in raddr: %O", n->op); else fatal("bad in raddr: "); p->reg = NREG; } else p->reg = a.reg; } /* generate a comparison TODO(kaib): one of the args can actually be a small constant. relax the constraint and fix call sites. */ Prog* gcmp(int as, Node *lhs, Node *rhs) { Prog *p; if(lhs->op != OREGISTER) fatal("bad operands to gcmp: %O %O", lhs->op, rhs->op); p = gins(as, rhs, N); raddr(lhs, p); return p; } /* generate a constant shift * arm encodes a shift by 32 as 0, thus asking for 0 shift is illegal. */ Prog* gshift(int as, Node *lhs, int32 stype, int32 sval, Node *rhs) { Prog *p; if(sval <= 0 || sval > 32) fatal("bad shift value: %d", sval); sval = sval&0x1f; p = gins(as, N, rhs); p->from.type = D_SHIFT; p->from.offset = stype | sval<<7 | lhs->val.u.reg; return p; } /* generate a register shift */ Prog * gregshift(int as, Node *lhs, int32 stype, Node *reg, Node *rhs) { Prog *p; p = gins(as, N, rhs); p->from.type = D_SHIFT; p->from.offset = stype | reg->val.u.reg << 8 | 1<<4 | lhs->val.u.reg; return p; } /* * generate code to compute n; * make a refer to result. */ void naddr(Node *n, Addr *a, int canemitcode) { Sym *s; a->type = D_NONE; a->name = D_NONE; a->reg = NREG; a->gotype = nil; a->node = N; a->etype = 0; if(n == N) return; if(n->type != T && n->type->etype != TIDEAL) { dowidth(n->type); a->width = n->type->width; } switch(n->op) { default: fatal("naddr: bad %O %D", n->op, a); break; case OREGISTER: if(n->val.u.reg <= REGALLOC_RMAX) { a->type = D_REG; a->reg = n->val.u.reg; } else { a->type = D_FREG; a->reg = n->val.u.reg - REGALLOC_F0; } a->sym = nil; break; case OINDEX: case OIND: fatal("naddr: OINDEX"); // naddr(n->left, a); // if(a->type >= D_AX && a->type <= D_DI) // a->type += D_INDIR; // else // if(a->type == D_CONST) // a->type = D_NONE+D_INDIR; // else // if(a->type == D_ADDR) { // a->type = a->index; // a->index = D_NONE; // } else // goto bad; // if(n->op == OINDEX) { // a->index = idx.reg; // a->scale = n->scale; // } // break; case OINDREG: a->type = D_OREG; a->reg = n->val.u.reg; a->sym = linksym(n->sym); a->offset = n->xoffset; break; case OPARAM: // n->left is PHEAP ONAME for stack parameter. // compute address of actual parameter on stack. a->etype = simtype[n->left->type->etype]; a->width = n->left->type->width; a->offset = n->xoffset; a->sym = linksym(n->left->sym); a->type = D_OREG; a->name = D_PARAM; a->node = n->left->orig; break; case OCLOSUREVAR: if(!curfn->needctxt) fatal("closurevar without needctxt"); a->type = D_OREG; a->reg = 7; a->offset = n->xoffset; a->sym = nil; break; case OCFUNC: naddr(n->left, a, canemitcode); a->sym = linksym(n->left->sym); break; case ONAME: a->etype = 0; a->width = 0; a->reg = NREG; if(n->type != T) { a->etype = simtype[n->type->etype]; a->width = n->type->width; } a->offset = n->xoffset; s = n->sym; a->node = n->orig; //if(a->node >= (Node*)&n) // fatal("stack node"); if(s == S) s = lookup(".noname"); if(n->method) { if(n->type != T) if(n->type->sym != S) if(n->type->sym->pkg != nil) s = pkglookup(s->name, n->type->sym->pkg); } a->type = D_OREG; switch(n->class) { default: fatal("naddr: ONAME class %S %d\n", n->sym, n->class); case PEXTERN: a->name = D_EXTERN; break; case PAUTO: a->name = D_AUTO; break; case PPARAM: case PPARAMOUT: a->name = D_PARAM; break; case PFUNC: a->name = D_EXTERN; a->type = D_CONST; s = funcsym(s); break; } a->sym = linksym(s); break; case OLITERAL: switch(n->val.ctype) { default: fatal("naddr: const %lT", n->type); break; case CTFLT: a->type = D_FCONST; a->u.dval = mpgetflt(n->val.u.fval); break; case CTINT: case CTRUNE: a->sym = nil; a->type = D_CONST; a->offset = mpgetfix(n->val.u.xval); break; case CTSTR: datagostring(n->val.u.sval, a); break; case CTBOOL: a->sym = nil; a->type = D_CONST; a->offset = n->val.u.bval; break; case CTNIL: a->sym = nil; a->type = D_CONST; a->offset = 0; break; } break; case OITAB: // itable of interface value naddr(n->left, a, canemitcode); a->etype = TINT32; if(a->type == D_CONST && a->offset == 0) break; // len(nil) break; case OSPTR: // pointer in a string or slice naddr(n->left, a, canemitcode); if(a->type == D_CONST && a->offset == 0) break; // ptr(nil) a->etype = simtype[tptr]; a->offset += Array_array; a->width = widthptr; break; case OLEN: // len of string or slice naddr(n->left, a, canemitcode); a->etype = TINT32; if(a->type == D_CONST && a->offset == 0) break; // len(nil) a->offset += Array_nel; break; case OCAP: // cap of string or slice naddr(n->left, a, canemitcode); a->etype = TINT32; if(a->type == D_CONST && a->offset == 0) break; // cap(nil) a->offset += Array_cap; break; case OADDR: naddr(n->left, a, canemitcode); a->etype = tptr; switch(a->type) { case D_OREG: a->type = D_CONST; break; case D_REG: case D_CONST: break; default: fatal("naddr: OADDR %d\n", a->type); } } if(a->width < 0) fatal("naddr: bad width for %N -> %D", n, a); } /* * return Axxx for Oxxx on type t. */ int optoas(int op, Type *t) { int a; if(t == T) fatal("optoas: t is nil"); a = AGOK; switch(CASE(op, simtype[t->etype])) { default: fatal("optoas: no entry %O-%T etype %T simtype %T", op, t, types[t->etype], types[simtype[t->etype]]); break; /* case CASE(OADDR, TPTR32): a = ALEAL; break; case CASE(OADDR, TPTR64): a = ALEAQ; break; */ // TODO(kaib): make sure the conditional branches work on all edge cases case CASE(OEQ, TBOOL): case CASE(OEQ, TINT8): case CASE(OEQ, TUINT8): case CASE(OEQ, TINT16): case CASE(OEQ, TUINT16): case CASE(OEQ, TINT32): case CASE(OEQ, TUINT32): case CASE(OEQ, TINT64): case CASE(OEQ, TUINT64): case CASE(OEQ, TPTR32): case CASE(OEQ, TPTR64): case CASE(OEQ, TFLOAT32): case CASE(OEQ, TFLOAT64): a = ABEQ; break; case CASE(ONE, TBOOL): case CASE(ONE, TINT8): case CASE(ONE, TUINT8): case CASE(ONE, TINT16): case CASE(ONE, TUINT16): case CASE(ONE, TINT32): case CASE(ONE, TUINT32): case CASE(ONE, TINT64): case CASE(ONE, TUINT64): case CASE(ONE, TPTR32): case CASE(ONE, TPTR64): case CASE(ONE, TFLOAT32): case CASE(ONE, TFLOAT64): a = ABNE; break; case CASE(OLT, TINT8): case CASE(OLT, TINT16): case CASE(OLT, TINT32): case CASE(OLT, TINT64): case CASE(OLT, TFLOAT32): case CASE(OLT, TFLOAT64): a = ABLT; break; case CASE(OLT, TUINT8): case CASE(OLT, TUINT16): case CASE(OLT, TUINT32): case CASE(OLT, TUINT64): a = ABLO; break; case CASE(OLE, TINT8): case CASE(OLE, TINT16): case CASE(OLE, TINT32): case CASE(OLE, TINT64): case CASE(OLE, TFLOAT32): case CASE(OLE, TFLOAT64): a = ABLE; break; case CASE(OLE, TUINT8): case CASE(OLE, TUINT16): case CASE(OLE, TUINT32): case CASE(OLE, TUINT64): a = ABLS; break; case CASE(OGT, TINT8): case CASE(OGT, TINT16): case CASE(OGT, TINT32): case CASE(OGT, TINT64): case CASE(OGT, TFLOAT32): case CASE(OGT, TFLOAT64): a = ABGT; break; case CASE(OGT, TUINT8): case CASE(OGT, TUINT16): case CASE(OGT, TUINT32): case CASE(OGT, TUINT64): a = ABHI; break; case CASE(OGE, TINT8): case CASE(OGE, TINT16): case CASE(OGE, TINT32): case CASE(OGE, TINT64): case CASE(OGE, TFLOAT32): case CASE(OGE, TFLOAT64): a = ABGE; break; case CASE(OGE, TUINT8): case CASE(OGE, TUINT16): case CASE(OGE, TUINT32): case CASE(OGE, TUINT64): a = ABHS; break; case CASE(OCMP, TBOOL): case CASE(OCMP, TINT8): case CASE(OCMP, TUINT8): case CASE(OCMP, TINT16): case CASE(OCMP, TUINT16): case CASE(OCMP, TINT32): case CASE(OCMP, TUINT32): case CASE(OCMP, TPTR32): a = ACMP; break; case CASE(OCMP, TFLOAT32): a = ACMPF; break; case CASE(OCMP, TFLOAT64): a = ACMPD; break; case CASE(OAS, TBOOL): a = AMOVB; break; case CASE(OAS, TINT8): a = AMOVBS; break; case CASE(OAS, TUINT8): a = AMOVBU; break; case CASE(OAS, TINT16): a = AMOVHS; break; case CASE(OAS, TUINT16): a = AMOVHU; break; case CASE(OAS, TINT32): case CASE(OAS, TUINT32): case CASE(OAS, TPTR32): a = AMOVW; break; case CASE(OAS, TFLOAT32): a = AMOVF; break; case CASE(OAS, TFLOAT64): a = AMOVD; break; case CASE(OADD, TINT8): case CASE(OADD, TUINT8): case CASE(OADD, TINT16): case CASE(OADD, TUINT16): case CASE(OADD, TINT32): case CASE(OADD, TUINT32): case CASE(OADD, TPTR32): case CASE(OADDPTR, TPTR32): a = AADD; break; case CASE(OADD, TFLOAT32): a = AADDF; break; case CASE(OADD, TFLOAT64): a = AADDD; break; case CASE(OSUB, TINT8): case CASE(OSUB, TUINT8): case CASE(OSUB, TINT16): case CASE(OSUB, TUINT16): case CASE(OSUB, TINT32): case CASE(OSUB, TUINT32): case CASE(OSUB, TPTR32): a = ASUB; break; case CASE(OSUB, TFLOAT32): a = ASUBF; break; case CASE(OSUB, TFLOAT64): a = ASUBD; break; case CASE(OMINUS, TINT8): case CASE(OMINUS, TUINT8): case CASE(OMINUS, TINT16): case CASE(OMINUS, TUINT16): case CASE(OMINUS, TINT32): case CASE(OMINUS, TUINT32): case CASE(OMINUS, TPTR32): a = ARSB; break; case CASE(OAND, TINT8): case CASE(OAND, TUINT8): case CASE(OAND, TINT16): case CASE(OAND, TUINT16): case CASE(OAND, TINT32): case CASE(OAND, TUINT32): case CASE(OAND, TPTR32): a = AAND; break; case CASE(OOR, TINT8): case CASE(OOR, TUINT8): case CASE(OOR, TINT16): case CASE(OOR, TUINT16): case CASE(OOR, TINT32): case CASE(OOR, TUINT32): case CASE(OOR, TPTR32): a = AORR; break; case CASE(OXOR, TINT8): case CASE(OXOR, TUINT8): case CASE(OXOR, TINT16): case CASE(OXOR, TUINT16): case CASE(OXOR, TINT32): case CASE(OXOR, TUINT32): case CASE(OXOR, TPTR32): a = AEOR; break; case CASE(OLSH, TINT8): case CASE(OLSH, TUINT8): case CASE(OLSH, TINT16): case CASE(OLSH, TUINT16): case CASE(OLSH, TINT32): case CASE(OLSH, TUINT32): case CASE(OLSH, TPTR32): a = ASLL; break; case CASE(ORSH, TUINT8): case CASE(ORSH, TUINT16): case CASE(ORSH, TUINT32): case CASE(ORSH, TPTR32): a = ASRL; break; case CASE(ORSH, TINT8): case CASE(ORSH, TINT16): case CASE(ORSH, TINT32): a = ASRA; break; case CASE(OMUL, TUINT8): case CASE(OMUL, TUINT16): case CASE(OMUL, TUINT32): case CASE(OMUL, TPTR32): a = AMULU; break; case CASE(OMUL, TINT8): case CASE(OMUL, TINT16): case CASE(OMUL, TINT32): a = AMUL; break; case CASE(OMUL, TFLOAT32): a = AMULF; break; case CASE(OMUL, TFLOAT64): a = AMULD; break; case CASE(ODIV, TUINT8): case CASE(ODIV, TUINT16): case CASE(ODIV, TUINT32): case CASE(ODIV, TPTR32): a = ADIVU; break; case CASE(ODIV, TINT8): case CASE(ODIV, TINT16): case CASE(ODIV, TINT32): a = ADIV; break; case CASE(OMOD, TUINT8): case CASE(OMOD, TUINT16): case CASE(OMOD, TUINT32): case CASE(OMOD, TPTR32): a = AMODU; break; case CASE(OMOD, TINT8): case CASE(OMOD, TINT16): case CASE(OMOD, TINT32): a = AMOD; break; // case CASE(OEXTEND, TINT16): // a = ACWD; // break; // case CASE(OEXTEND, TINT32): // a = ACDQ; // break; // case CASE(OEXTEND, TINT64): // a = ACQO; // break; case CASE(ODIV, TFLOAT32): a = ADIVF; break; case CASE(ODIV, TFLOAT64): a = ADIVD; break; } return a; } enum { ODynam = 1<<0, OPtrto = 1<<1, }; static Node clean[20]; static int cleani = 0; void sudoclean(void) { if(clean[cleani-1].op != OEMPTY) regfree(&clean[cleani-1]); if(clean[cleani-2].op != OEMPTY) regfree(&clean[cleani-2]); cleani -= 2; } int dotaddable(Node *n, Node *n1) { int o; int64 oary[10]; Node *nn; if(n->op != ODOT) return 0; o = dotoffset(n, oary, &nn); if(nn != N && nn->addable && o == 1 && oary[0] >= 0) { *n1 = *nn; n1->type = n->type; n1->xoffset += oary[0]; return 1; } return 0; } /* * generate code to compute address of n, * a reference to a (perhaps nested) field inside * an array or struct. * return 0 on failure, 1 on success. * on success, leaves usable address in a. * * caller is responsible for calling sudoclean * after successful sudoaddable, * to release the register used for a. */ int sudoaddable(int as, Node *n, Addr *a, int *w) { int o, i; int64 oary[10]; int64 v; Node n1, n2, n3, n4, *nn, *l, *r; Node *reg, *reg1; Prog *p1, *p2; Type *t; if(n->type == T) return 0; switch(n->op) { case OLITERAL: if(!isconst(n, CTINT)) break; v = mpgetfix(n->val.u.xval); if(v >= 32000 || v <= -32000) break; goto lit; case ODOT: case ODOTPTR: cleani += 2; reg = &clean[cleani-1]; reg1 = &clean[cleani-2]; reg->op = OEMPTY; reg1->op = OEMPTY; goto odot; case OINDEX: return 0; // disabled: OINDEX case is now covered by agenr // for a more suitable register allocation pattern. if(n->left->type->etype == TSTRING) return 0; cleani += 2; reg = &clean[cleani-1]; reg1 = &clean[cleani-2]; reg->op = OEMPTY; reg1->op = OEMPTY; goto oindex; } return 0; lit: switch(as) { default: return 0; case AADD: case ASUB: case AAND: case AORR: case AEOR: case AMOVB: case AMOVBS: case AMOVBU: case AMOVH: case AMOVHS: case AMOVHU: case AMOVW: break; } cleani += 2; reg = &clean[cleani-1]; reg1 = &clean[cleani-2]; reg->op = OEMPTY; reg1->op = OEMPTY; naddr(n, a, 1); goto yes; odot: o = dotoffset(n, oary, &nn); if(nn == N) goto no; if(nn->addable && o == 1 && oary[0] >= 0) { // directly addressable set of DOTs n1 = *nn; n1.type = n->type; n1.xoffset += oary[0]; naddr(&n1, a, 1); goto yes; } regalloc(reg, types[tptr], N); n1 = *reg; n1.op = OINDREG; if(oary[0] >= 0) { agen(nn, reg); n1.xoffset = oary[0]; } else { cgen(nn, reg); cgen_checknil(reg); n1.xoffset = -(oary[0]+1); } for(i=1; i= 0) fatal("can't happen"); gins(AMOVW, &n1, reg); cgen_checknil(reg); n1.xoffset = -(oary[i]+1); } a->type = D_NONE; a->name = D_NONE; n1.type = n->type; naddr(&n1, a, 1); goto yes; oindex: l = n->left; r = n->right; if(l->ullman >= UINF && r->ullman >= UINF) goto no; // set o to type of array o = 0; if(isptr[l->type->etype]) { o += OPtrto; if(l->type->type->etype != TARRAY) fatal("not ptr ary"); if(l->type->type->bound < 0) o += ODynam; } else { if(l->type->etype != TARRAY) fatal("not ary"); if(l->type->bound < 0) o += ODynam; } *w = n->type->width; if(isconst(r, CTINT)) goto oindex_const; switch(*w) { default: goto no; case 1: case 2: case 4: case 8: break; } // load the array (reg) if(l->ullman > r->ullman) { regalloc(reg, types[tptr], N); if(o & OPtrto) { cgen(l, reg); cgen_checknil(reg); } else agen(l, reg); } // load the index (reg1) t = types[TUINT32]; if(issigned[r->type->etype]) t = types[TINT32]; regalloc(reg1, t, N); regalloc(&n3, types[TINT32], reg1); p2 = cgenindex(r, &n3, debug['B'] || n->bounded); gmove(&n3, reg1); regfree(&n3); // load the array (reg) if(l->ullman <= r->ullman) { regalloc(reg, types[tptr], N); if(o & OPtrto) { cgen(l, reg); cgen_checknil(reg); } else agen(l, reg); } // check bounds if(!debug['B']) { if(o & ODynam) { n2 = *reg; n2.op = OINDREG; n2.type = types[tptr]; n2.xoffset = Array_nel; } else { if(o & OPtrto) nodconst(&n2, types[TUINT32], l->type->type->bound); else nodconst(&n2, types[TUINT32], l->type->bound); } regalloc(&n3, n2.type, N); cgen(&n2, &n3); gcmp(optoas(OCMP, types[TUINT32]), reg1, &n3); regfree(&n3); p1 = gbranch(optoas(OLT, types[TUINT32]), T, +1); if(p2) patch(p2, pc); ginscall(panicindex, 0); patch(p1, pc); } if(o & ODynam) { n2 = *reg; n2.op = OINDREG; n2.type = types[tptr]; n2.xoffset = Array_array; gmove(&n2, reg); } switch(*w) { case 1: gins(AADD, reg1, reg); break; case 2: gshift(AADD, reg1, SHIFT_LL, 1, reg); break; case 4: gshift(AADD, reg1, SHIFT_LL, 2, reg); break; case 8: gshift(AADD, reg1, SHIFT_LL, 3, reg); break; } naddr(reg1, a, 1); a->type = D_OREG; a->reg = reg->val.u.reg; a->offset = 0; goto yes; oindex_const: // index is constant // can check statically and // can multiply by width statically regalloc(reg, types[tptr], N); if(o & OPtrto) { cgen(l, reg); cgen_checknil(reg); } else agen(l, reg); v = mpgetfix(r->val.u.xval); if(o & ODynam) { if(!debug['B'] && !n->bounded) { n1 = *reg; n1.op = OINDREG; n1.type = types[tptr]; n1.xoffset = Array_nel; nodconst(&n2, types[TUINT32], v); regalloc(&n3, types[TUINT32], N); cgen(&n2, &n3); regalloc(&n4, n1.type, N); cgen(&n1, &n4); gcmp(optoas(OCMP, types[TUINT32]), &n4, &n3); regfree(&n4); regfree(&n3); p1 = gbranch(optoas(OGT, types[TUINT32]), T, +1); ginscall(panicindex, 0); patch(p1, pc); } n1 = *reg; n1.op = OINDREG; n1.type = types[tptr]; n1.xoffset = Array_array; gmove(&n1, reg); } n2 = *reg; n2.op = OINDREG; n2.xoffset = v * (*w); a->type = D_NONE; a->name = D_NONE; naddr(&n2, a, 1); goto yes; yes: return 1; no: sudoclean(); return 0; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5g/opt.h���������������������������������������������������������������������������������0100644�0000000�0000000�00000011625�12412656737�014324� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5c/gc.h // http://code.google.com/p/inferno-os/source/browse/utils/5c/gc.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "../gc/popt.h" #define Z N #define Adr Addr #define D_HI D_NONE #define D_LO D_NONE #define BLOAD(r) band(bnot(r->refbehind), r->refahead) #define BSTORE(r) band(bnot(r->calbehind), r->calahead) #define LOAD(r) (~r->refbehind.b[z] & r->refahead.b[z]) #define STORE(r) (~r->calbehind.b[z] & r->calahead.b[z]) #define CLOAD 5 #define CREF 5 #define CINF 1000 #define LOOP 3 typedef struct Reg Reg; typedef struct Rgn Rgn; // A Reg is a wrapper around a single Prog (one instruction) that holds // register optimization information while the optimizer runs. // r->prog is the instruction. // r->prog->opt points back to r. struct Reg { Flow f; Bits set; // variables written by this instruction. Bits use1; // variables read by prog->from. Bits use2; // variables read by prog->to. Bits refbehind; Bits refahead; Bits calbehind; Bits calahead; Bits regdiff; Bits act; int32 regu; // register used bitmap }; #define R ((Reg*)0) #define NRGN 600 struct Rgn { Reg* enter; short cost; short varno; short regno; }; EXTERN int32 exregoffset; // not set EXTERN int32 exfregoffset; // not set EXTERN Reg zreg; EXTERN Reg* freer; EXTERN Reg** rpo2r; EXTERN Rgn region[NRGN]; EXTERN Rgn* rgp; EXTERN int nregion; EXTERN int nvar; EXTERN int32 regbits; EXTERN int32 exregbits; EXTERN Bits externs; EXTERN Bits params; EXTERN Bits consts; EXTERN Bits addrs; EXTERN Bits ivar; EXTERN Bits ovar; EXTERN int change; EXTERN int32 maxnr; EXTERN int32* idom; EXTERN struct { int32 ncvtreg; int32 nspill; int32 nreload; int32 ndelmov; int32 nvar; int32 naddr; } ostats; /* * reg.c */ Reg* rega(void); int rcmp(const void*, const void*); void regopt(Prog*); void addmove(Reg*, int, int, int); Bits mkvar(Reg *r, Adr *a); void prop(Reg*, Bits, Bits); void synch(Reg*, Bits); uint32 allreg(uint32, Rgn*); void paint1(Reg*, int); uint32 paint2(Reg*, int); void paint3(Reg*, int, int32, int); void addreg(Adr*, int); void dumpit(char *str, Flow *r0, int); /* * peep.c */ void peep(Prog*); void excise(Flow*); int copyu(Prog*, Adr*, Adr*); int32 RtoB(int); int32 FtoB(int); int BtoR(int32); int BtoF(int32); /* * prog.c */ typedef struct ProgInfo ProgInfo; struct ProgInfo { uint32 flags; // the bits below }; enum { // Pseudo-op, like TEXT, GLOBL, TYPE, PCDATA, FUNCDATA. Pseudo = 1<<1, // There's nothing to say about the instruction, // but it's still okay to see. OK = 1<<2, // Size of right-side write, or right-side read if no write. SizeB = 1<<3, SizeW = 1<<4, SizeL = 1<<5, SizeQ = 1<<6, SizeF = 1<<7, // float aka float32 SizeD = 1<<8, // double aka float64 // Left side: address taken, read, write. LeftAddr = 1<<9, LeftRead = 1<<10, LeftWrite = 1<<11, // Register in middle; never written. RegRead = 1<<12, CanRegRead = 1<<13, // Right side: address taken, read, write. RightAddr = 1<<14, RightRead = 1<<15, RightWrite = 1<<16, // Instruction kinds Move = 1<<17, // straight move Conv = 1<<18, // size conversion Cjmp = 1<<19, // conditional jump Break = 1<<20, // breaks control flow (no fallthrough) Call = 1<<21, // function call Jump = 1<<22, // jump Skip = 1<<23, // data instruction }; void proginfo(ProgInfo*, Prog*); // To allow use of AJMP and ACALL in ../gc/popt.c. enum { AJMP = AB, ACALL = ABL, }; �����������������������������������������������������������������������������������������������������������go/src/cmd/5g/peep.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000072016�12412656737�014447� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5c/peep.c // http://code.google.com/p/inferno-os/source/browse/utils/5c/peep.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "gg.h" #include "opt.h" static int xtramodes(Graph*, Flow*, Adr*); static int shortprop(Flow *r); static int subprop(Flow*); static int copyprop(Graph*, Flow*); static int copy1(Adr*, Adr*, Flow*, int); static int copyas(Adr*, Adr*); static int copyau(Adr*, Adr*); static int copysub(Adr*, Adr*, Adr*, int); static int copysub1(Prog*, Adr*, Adr*, int); static Flow* findpre(Flow *r, Adr *v); static int copyau1(Prog *p, Adr *v); static int isdconst(Addr *a); static uint32 gactive; // UNUSED int shiftprop(Flow *r); void constprop(Adr *c1, Adr *v1, Flow *r); void predicate(Graph*); void peep(Prog *firstp) { Flow *r; Graph *g; Prog *p; int t; g = flowstart(firstp, sizeof(Flow)); if(g == nil) return; gactive = 0; loop1: if(debug['P'] && debug['v']) dumpit("loop1", g->start, 0); t = 0; for(r=g->start; r!=nil; r=r->link) { p = r->prog; switch(p->as) { case ASLL: case ASRL: case ASRA: /* * elide shift into D_SHIFT operand of subsequent instruction */ // if(shiftprop(r)) { // excise(r); // t++; // break; // } break; case AMOVB: case AMOVH: case AMOVW: case AMOVF: case AMOVD: if(regtyp(&p->from)) if(p->from.type == p->to.type) if(p->scond == C_SCOND_NONE) { if(copyprop(g, r)) { excise(r); t++; break; } if(subprop(r) && copyprop(g, r)) { excise(r); t++; break; } } break; case AMOVHS: case AMOVHU: case AMOVBS: case AMOVBU: if(p->from.type == D_REG) { if(shortprop(r)) t++; } break; #ifdef NOTDEF if(p->scond == C_SCOND_NONE) if(regtyp(&p->to)) if(isdconst(&p->from)) { constprop(&p->from, &p->to, r->s1); } break; #endif } } if(t) goto loop1; for(r=g->start; r!=nil; r=r->link) { p = r->prog; switch(p->as) { case AEOR: /* * EOR -1,x,y => MVN x,y */ if(isdconst(&p->from) && p->from.offset == -1) { p->as = AMVN; p->from.type = D_REG; if(p->reg != NREG) p->from.reg = p->reg; else p->from.reg = p->to.reg; p->reg = NREG; } break; } } for(r=g->start; r!=nil; r=r->link) { p = r->prog; switch(p->as) { case AMOVW: case AMOVB: case AMOVBS: case AMOVBU: if(p->from.type == D_OREG && p->from.offset == 0) xtramodes(g, r, &p->from); else if(p->to.type == D_OREG && p->to.offset == 0) xtramodes(g, r, &p->to); else continue; break; // case ACMP: // /* // * elide CMP $0,x if calculation of x can set condition codes // */ // if(isdconst(&p->from) || p->from.offset != 0) // continue; // r2 = r->s1; // if(r2 == nil) // continue; // t = r2->prog->as; // switch(t) { // default: // continue; // case ABEQ: // case ABNE: // case ABMI: // case ABPL: // break; // case ABGE: // t = ABPL; // break; // case ABLT: // t = ABMI; // break; // case ABHI: // t = ABNE; // break; // case ABLS: // t = ABEQ; // break; // } // r1 = r; // do // r1 = uniqp(r1); // while (r1 != nil && r1->prog->as == ANOP); // if(r1 == nil) // continue; // p1 = r1->prog; // if(p1->to.type != D_REG) // continue; // if(p1->to.reg != p->reg) // if(!(p1->as == AMOVW && p1->from.type == D_REG && p1->from.reg == p->reg)) // continue; // // switch(p1->as) { // default: // continue; // case AMOVW: // if(p1->from.type != D_REG) // continue; // case AAND: // case AEOR: // case AORR: // case ABIC: // case AMVN: // case ASUB: // case ARSB: // case AADD: // case AADC: // case ASBC: // case ARSC: // break; // } // p1->scond |= C_SBIT; // r2->prog->as = t; // excise(r); // continue; } } // predicate(g); flowend(g); } int regtyp(Adr *a) { if(a->type == D_REG) return 1; if(a->type == D_FREG) return 1; return 0; } /* * the idea is to substitute * one register for another * from one MOV to another * MOV a, R0 * ADD b, R0 / no use of R1 * MOV R0, R1 * would be converted to * MOV a, R1 * ADD b, R1 * MOV R1, R0 * hopefully, then the former or latter MOV * will be eliminated by copy propagation. */ static int subprop(Flow *r0) { Prog *p; Adr *v1, *v2; Flow *r; int t; ProgInfo info; p = r0->prog; v1 = &p->from; if(!regtyp(v1)) return 0; v2 = &p->to; if(!regtyp(v2)) return 0; for(r=uniqp(r0); r!=nil; r=uniqp(r)) { if(uniqs(r) == nil) break; p = r->prog; if(p->as == AVARDEF || p->as == AVARKILL) continue; proginfo(&info, p); if(info.flags & Call) return 0; if((info.flags & CanRegRead) && p->to.type == D_REG) { info.flags |= RegRead; info.flags &= ~(CanRegRead | RightRead); p->reg = p->to.reg; } switch(p->as) { case AMULLU: case AMULA: case AMVN: return 0; } if((info.flags & (RightRead|RightWrite)) == RightWrite) { if(p->to.type == v1->type) if(p->to.reg == v1->reg) if(p->scond == C_SCOND_NONE) goto gotit; } if(copyau(&p->from, v2) || copyau1(p, v2) || copyau(&p->to, v2)) break; if(copysub(&p->from, v1, v2, 0) || copysub1(p, v1, v2, 0) || copysub(&p->to, v1, v2, 0)) break; } return 0; gotit: copysub(&p->to, v1, v2, 1); if(debug['P']) { print("gotit: %D->%D\n%P", v1, v2, r->prog); if(p->from.type == v2->type) print(" excise"); print("\n"); } for(r=uniqs(r); r!=r0; r=uniqs(r)) { p = r->prog; copysub(&p->from, v1, v2, 1); copysub1(p, v1, v2, 1); copysub(&p->to, v1, v2, 1); if(debug['P']) print("%P\n", r->prog); } t = v1->reg; v1->reg = v2->reg; v2->reg = t; if(debug['P']) print("%P last\n", r->prog); return 1; } /* * The idea is to remove redundant copies. * v1->v2 F=0 * (use v2 s/v2/v1/)* * set v1 F=1 * use v2 return fail * ----------------- * v1->v2 F=0 * (use v2 s/v2/v1/)* * set v1 F=1 * set v2 return success */ static int copyprop(Graph *g, Flow *r0) { Prog *p; Adr *v1, *v2; USED(g); p = r0->prog; v1 = &p->from; v2 = &p->to; if(copyas(v1, v2)) return 1; gactive++; return copy1(v1, v2, r0->s1, 0); } static int copy1(Adr *v1, Adr *v2, Flow *r, int f) { int t; Prog *p; if(r->active == gactive) { if(debug['P']) print("act set; return 1\n"); return 1; } r->active = gactive; if(debug['P']) print("copy %D->%D f=%d\n", v1, v2, f); for(; r != nil; r = r->s1) { p = r->prog; if(debug['P']) print("%P", p); if(!f && uniqp(r) == nil) { f = 1; if(debug['P']) print("; merge; f=%d", f); } t = copyu(p, v2, nil); switch(t) { case 2: /* rar, can't split */ if(debug['P']) print("; %Drar; return 0\n", v2); return 0; case 3: /* set */ if(debug['P']) print("; %Dset; return 1\n", v2); return 1; case 1: /* used, substitute */ case 4: /* use and set */ if(f) { if(!debug['P']) return 0; if(t == 4) print("; %Dused+set and f=%d; return 0\n", v2, f); else print("; %Dused and f=%d; return 0\n", v2, f); return 0; } if(copyu(p, v2, v1)) { if(debug['P']) print("; sub fail; return 0\n"); return 0; } if(debug['P']) print("; sub%D/%D", v2, v1); if(t == 4) { if(debug['P']) print("; %Dused+set; return 1\n", v2); return 1; } break; } if(!f) { t = copyu(p, v1, nil); if(!f && (t == 2 || t == 3 || t == 4)) { f = 1; if(debug['P']) print("; %Dset and !f; f=%d", v1, f); } } if(debug['P']) print("\n"); if(r->s2) if(!copy1(v1, v2, r->s2, f)) return 0; } return 1; } // UNUSED /* * The idea is to remove redundant constants. * $c1->v1 * ($c1->v2 s/$c1/v1)* * set v1 return * The v1->v2 should be eliminated by copy propagation. */ void constprop(Adr *c1, Adr *v1, Flow *r) { Prog *p; if(debug['P']) print("constprop %D->%D\n", c1, v1); for(; r != nil; r = r->s1) { p = r->prog; if(debug['P']) print("%P", p); if(uniqp(r) == nil) { if(debug['P']) print("; merge; return\n"); return; } if(p->as == AMOVW && copyas(&p->from, c1)) { if(debug['P']) print("; sub%D/%D", &p->from, v1); p->from = *v1; } else if(copyu(p, v1, nil) > 1) { if(debug['P']) print("; %Dset; return\n", v1); return; } if(debug['P']) print("\n"); if(r->s2) constprop(c1, v1, r->s2); } } /* * shortprop eliminates redundant zero/sign extensions. * * MOVBS x, R * * MOVBS R, R' * * changed to * * MOVBS x, R * ... * MOVB R, R' (compiled to mov) * * MOVBS above can be a MOVBS, MOVBU, MOVHS or MOVHU. */ static int shortprop(Flow *r) { Prog *p, *p1; Flow *r1; p = r->prog; r1 = findpre(r, &p->from); if(r1 == nil) return 0; p1 = r1->prog; if(p1->as == p->as) { // Two consecutive extensions. goto gotit; } if(p1->as == AMOVW && isdconst(&p1->from) && p1->from.offset >= 0 && p1->from.offset < 128) { // Loaded an immediate. goto gotit; } return 0; gotit: if(debug['P']) print("shortprop\n%P\n%P", p1, p); switch(p->as) { case AMOVBS: case AMOVBU: p->as = AMOVB; break; case AMOVHS: case AMOVHU: p->as = AMOVH; break; } if(debug['P']) print(" => %A\n", p->as); return 1; } // UNUSED /* * ASLL x,y,w * .. (not use w, not set x y w) * AXXX w,a,b (a != w) * .. (not use w) * (set w) * ----------- changed to * .. * AXXX (x<prog; if(p->to.type != D_REG) FAIL("BOTCH: result not reg"); n = p->to.reg; a = zprog.from; if(p->reg != NREG && p->reg != p->to.reg) { a.type = D_REG; a.reg = p->reg; } if(debug['P']) print("shiftprop\n%P", p); r1 = r; for(;;) { /* find first use of shift result; abort if shift operands or result are changed */ r1 = uniqs(r1); if(r1 == nil) FAIL("branch"); if(uniqp(r1) == nil) FAIL("merge"); p1 = r1->prog; if(debug['P']) print("\n%P", p1); switch(copyu(p1, &p->to, nil)) { case 0: /* not used or set */ if((p->from.type == D_REG && copyu(p1, &p->from, nil) > 1) || (a.type == D_REG && copyu(p1, &a, nil) > 1)) FAIL("args modified"); continue; case 3: /* set, not used */ FAIL("BOTCH: noref"); } break; } /* check whether substitution can be done */ switch(p1->as) { default: FAIL("non-dpi"); case AAND: case AEOR: case AADD: case AADC: case AORR: case ASUB: case ASBC: case ARSB: case ARSC: if(p1->reg == n || (p1->reg == NREG && p1->to.type == D_REG && p1->to.reg == n)) { if(p1->from.type != D_REG) FAIL("can't swap"); p1->reg = p1->from.reg; p1->from.reg = n; switch(p1->as) { case ASUB: p1->as = ARSB; break; case ARSB: p1->as = ASUB; break; case ASBC: p1->as = ARSC; break; case ARSC: p1->as = ASBC; break; } if(debug['P']) print("\t=>%P", p1); } case ABIC: case ATST: case ACMP: case ACMN: if(p1->reg == n) FAIL("can't swap"); if(p1->reg == NREG && p1->to.reg == n) FAIL("shift result used twice"); // case AMVN: if(p1->from.type == D_SHIFT) FAIL("shift result used in shift"); if(p1->from.type != D_REG || p1->from.reg != n) FAIL("BOTCH: where is it used?"); break; } /* check whether shift result is used subsequently */ p2 = p1; if(p1->to.reg != n) for (;;) { r1 = uniqs(r1); if(r1 == nil) FAIL("inconclusive"); p1 = r1->prog; if(debug['P']) print("\n%P", p1); switch(copyu(p1, &p->to, nil)) { case 0: /* not used or set */ continue; case 3: /* set, not used */ break; default:/* used */ FAIL("reused"); } break; } /* make the substitution */ p2->from.type = D_SHIFT; p2->from.reg = NREG; o = p->reg; if(o == NREG) o = p->to.reg; switch(p->from.type){ case D_CONST: o |= (p->from.offset&0x1f)<<7; break; case D_REG: o |= (1<<4) | (p->from.reg<<8); break; } switch(p->as){ case ASLL: o |= 0<<5; break; case ASRL: o |= 1<<5; break; case ASRA: o |= 2<<5; break; } p2->from.offset = o; if(debug['P']) print("\t=>%P\tSUCCEED\n", p2); return 1; } /* * findpre returns the last instruction mentioning v * before r. It must be a set, and there must be * a unique path from that instruction to r. */ static Flow* findpre(Flow *r, Adr *v) { Flow *r1; for(r1=uniqp(r); r1!=nil; r=r1,r1=uniqp(r)) { if(uniqs(r1) != r) return nil; switch(copyu(r1->prog, v, nil)) { case 1: /* used */ case 2: /* read-alter-rewrite */ return nil; case 3: /* set */ case 4: /* set and used */ return r1; } } return nil; } /* * findinc finds ADD instructions with a constant * argument which falls within the immed_12 range. */ static Flow* findinc(Flow *r, Flow *r2, Adr *v) { Flow *r1; Prog *p; for(r1=uniqs(r); r1!=nil && r1!=r2; r=r1,r1=uniqs(r)) { if(uniqp(r1) != r) return nil; switch(copyu(r1->prog, v, nil)) { case 0: /* not touched */ continue; case 4: /* set and used */ p = r1->prog; if(p->as == AADD) if(isdconst(&p->from)) if(p->from.offset > -4096 && p->from.offset < 4096) return r1; default: return nil; } } return nil; } static int nochange(Flow *r, Flow *r2, Prog *p) { Adr a[3]; int i, n; if(r == r2) return 1; n = 0; if(p->reg != NREG && p->reg != p->to.reg) { a[n].type = D_REG; a[n++].reg = p->reg; } switch(p->from.type) { case D_SHIFT: a[n].type = D_REG; a[n++].reg = p->from.offset&0xf; case D_REG: a[n].type = D_REG; a[n++].reg = p->from.reg; } if(n == 0) return 1; for(; r!=nil && r!=r2; r=uniqs(r)) { p = r->prog; for(i=0; i 1) return 0; } return 1; } static int findu1(Flow *r, Adr *v) { for(; r != nil; r = r->s1) { if(r->active) return 0; r->active = 1; switch(copyu(r->prog, v, nil)) { case 1: /* used */ case 2: /* read-alter-rewrite */ case 4: /* set and used */ return 1; case 3: /* set */ return 0; } if(r->s2) if (findu1(r->s2, v)) return 1; } return 0; } static int finduse(Graph *g, Flow *r, Adr *v) { Flow *r1; for(r1=g->start; r1!=nil; r1=r1->link) r1->active = 0; return findu1(r, v); } /* * xtramodes enables the ARM post increment and * shift offset addressing modes to transform * MOVW 0(R3),R1 * ADD $4,R3,R3 * into * MOVW.P 4(R3),R1 * and * ADD R0,R1 * MOVBU 0(R1),R0 * into * MOVBU R0<<0(R1),R0 */ static int xtramodes(Graph *g, Flow *r, Adr *a) { Flow *r1, *r2, *r3; Prog *p, *p1; Adr v; p = r->prog; v = *a; v.type = D_REG; r1 = findpre(r, &v); if(r1 != nil) { p1 = r1->prog; if(p1->to.type == D_REG && p1->to.reg == v.reg) switch(p1->as) { case AADD: if(p1->scond & C_SBIT) // avoid altering ADD.S/ADC sequences. break; if(p1->from.type == D_REG || (p1->from.type == D_SHIFT && (p1->from.offset&(1<<4)) == 0 && ((p->as != AMOVB && p->as != AMOVBS) || (a == &p->from && (p1->from.offset&~0xf) == 0))) || (p1->from.type == D_CONST && p1->from.offset > -4096 && p1->from.offset < 4096)) if(nochange(uniqs(r1), r, p1)) { if(a != &p->from || v.reg != p->to.reg) if (finduse(g, r->s1, &v)) { if(p1->reg == NREG || p1->reg == v.reg) /* pre-indexing */ p->scond |= C_WBIT; else return 0; } switch (p1->from.type) { case D_REG: /* register offset */ a->type = D_SHIFT; a->offset = p1->from.reg; break; case D_SHIFT: /* scaled register offset */ a->type = D_SHIFT; case D_CONST: /* immediate offset */ a->offset = p1->from.offset; break; } if(p1->reg != NREG) a->reg = p1->reg; excise(r1); return 1; } break; case AMOVW: if(p1->from.type == D_REG) if((r2 = findinc(r1, r, &p1->from)) != nil) { for(r3=uniqs(r2); r3->prog->as==ANOP; r3=uniqs(r3)) ; if(r3 == r) { /* post-indexing */ p1 = r2->prog; a->reg = p1->to.reg; a->offset = p1->from.offset; p->scond |= C_PBIT; if(!finduse(g, r, &r1->prog->to)) excise(r1); excise(r2); return 1; } } break; } } if(a != &p->from || a->reg != p->to.reg) if((r1 = findinc(r, nil, &v)) != nil) { /* post-indexing */ p1 = r1->prog; a->offset = p1->from.offset; p->scond |= C_PBIT; excise(r1); return 1; } return 0; } /* * return * 1 if v only used (and substitute), * 2 if read-alter-rewrite * 3 if set * 4 if set and used * 0 otherwise (not touched) */ int copyu(Prog *p, Adr *v, Adr *s) { switch(p->as) { default: print("copyu: can't find %A\n", p->as); return 2; case AMOVM: if(v->type != D_REG) return 0; if(p->from.type == D_CONST) { /* read reglist, read/rar */ if(s != nil) { if(p->from.offset&(1<reg)) return 1; if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyau(&p->to, v)) { if(p->scond&C_WBIT) return 2; return 1; } if(p->from.offset&(1<reg)) return 1; } else { /* read/rar, write reglist */ if(s != nil) { if(p->to.offset&(1<reg)) return 1; if(copysub(&p->from, v, s, 1)) return 1; return 0; } if(copyau(&p->from, v)) { if(p->scond&C_WBIT) return 2; if(p->to.offset&(1<reg)) return 4; return 1; } if(p->to.offset&(1<reg)) return 3; } return 0; case ANOP: /* read,, write */ case AMOVW: case AMOVF: case AMOVD: case AMOVH: case AMOVHS: case AMOVHU: case AMOVB: case AMOVBS: case AMOVBU: case AMOVFW: case AMOVWF: case AMOVDW: case AMOVWD: case AMOVFD: case AMOVDF: if(p->scond&(C_WBIT|C_PBIT)) if(v->type == D_REG) { if(p->from.type == D_OREG || p->from.type == D_SHIFT) { if(p->from.reg == v->reg) return 2; } else { if(p->to.reg == v->reg) return 2; } } if(s != nil) { if(copysub(&p->from, v, s, 1)) return 1; if(!copyas(&p->to, v)) if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyas(&p->to, v)) { if(p->scond != C_SCOND_NONE) return 2; if(copyau(&p->from, v)) return 4; return 3; } if(copyau(&p->from, v)) return 1; if(copyau(&p->to, v)) return 1; return 0; case AMULLU: /* read, read, write, write */ case AMULL: case AMULA: case AMVN: return 2; case AADD: /* read, read, write */ case AADC: case ASUB: case ASBC: case ARSB: case ASLL: case ASRL: case ASRA: case AORR: case AAND: case AEOR: case AMUL: case AMULU: case ADIV: case ADIVU: case AMOD: case AMODU: case AADDF: case AADDD: case ASUBF: case ASUBD: case AMULF: case AMULD: case ADIVF: case ADIVD: case ACHECKNIL: /* read */ case ACMPF: /* read, read, */ case ACMPD: case ACMP: case ACMN: case ACASE: case ATST: /* read,, */ if(s != nil) { if(copysub(&p->from, v, s, 1)) return 1; if(copysub1(p, v, s, 1)) return 1; if(!copyas(&p->to, v)) if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyas(&p->to, v)) { if(p->scond != C_SCOND_NONE) return 2; if(p->reg == NREG) p->reg = p->to.reg; if(copyau(&p->from, v)) return 4; if(copyau1(p, v)) return 4; return 3; } if(copyau(&p->from, v)) return 1; if(copyau1(p, v)) return 1; if(copyau(&p->to, v)) return 1; return 0; case ABEQ: /* read, read */ case ABNE: case ABCS: case ABHS: case ABCC: case ABLO: case ABMI: case ABPL: case ABVS: case ABVC: case ABHI: case ABLS: case ABGE: case ABLT: case ABGT: case ABLE: if(s != nil) { if(copysub(&p->from, v, s, 1)) return 1; return copysub1(p, v, s, 1); } if(copyau(&p->from, v)) return 1; if(copyau1(p, v)) return 1; return 0; case AB: /* funny */ if(s != nil) { if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyau(&p->to, v)) return 1; return 0; case ARET: /* funny */ if(s != nil) return 1; return 3; case ABL: /* funny */ if(v->type == D_REG) { if(v->reg <= REGEXT && v->reg > exregoffset) return 2; if(v->reg == REGARG) return 2; } if(v->type == D_FREG) if(v->reg <= FREGEXT && v->reg > exfregoffset) return 2; if(p->from.type == D_REG && v->type == D_REG && p->from.reg == v->reg) return 2; if(s != nil) { if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyau(&p->to, v)) return 4; return 3; case ADUFFZERO: // R0 is zero, used by DUFFZERO, cannot be substituted. // R1 is ptr to memory, used and set, cannot be substituted. if(v->type == D_REG) { if(v->reg == REGALLOC_R0) return 1; if(v->reg == REGALLOC_R0+1) return 2; } return 0; case ADUFFCOPY: // R0 is scratch, set by DUFFCOPY, cannot be substituted. // R1, R2 areptr to src, dst, used and set, cannot be substituted. if(v->type == D_REG) { if(v->reg == REGALLOC_R0) return 3; if(v->reg == REGALLOC_R0+1 || v->reg == REGALLOC_R0+2) return 2; } return 0; case ATEXT: /* funny */ if(v->type == D_REG) if(v->reg == REGARG) return 3; return 0; case APCDATA: case AFUNCDATA: case AVARDEF: case AVARKILL: return 0; } } /* * direct reference, * could be set/use depending on * semantics */ static int copyas(Adr *a, Adr *v) { if(regtyp(v)) { if(a->type == v->type) if(a->reg == v->reg) return 1; } else if(v->type == D_CONST) { /* for constprop */ if(a->type == v->type) if(a->name == v->name) if(a->sym == v->sym) if(a->reg == v->reg) if(a->offset == v->offset) return 1; } return 0; } int sameaddr(Adr *a, Adr *v) { if(a->type != v->type) return 0; if(regtyp(v) && a->reg == v->reg) return 1; if(v->type == D_AUTO || v->type == D_PARAM) { if(v->offset == a->offset) return 1; } return 0; } /* * either direct or indirect */ static int copyau(Adr *a, Adr *v) { if(copyas(a, v)) return 1; if(v->type == D_REG) { if(a->type == D_CONST && a->reg != NREG) { if(a->reg == v->reg) return 1; } else if(a->type == D_OREG) { if(a->reg == v->reg) return 1; } else if(a->type == D_REGREG || a->type == D_REGREG2) { if(a->reg == v->reg) return 1; if(a->offset == v->reg) return 1; } else if(a->type == D_SHIFT) { if((a->offset&0xf) == v->reg) return 1; if((a->offset&(1<<4)) && (a->offset>>8) == v->reg) return 1; } } return 0; } static int a2type(Prog *p) { if(p->reg == NREG) return D_NONE; switch(p->as) { default: fatal("a2type: unhandled %P", p); case AAND: case AEOR: case ASUB: case ARSB: case AADD: case AADC: case ASBC: case ARSC: case ATST: case ATEQ: case ACMP: case ACMN: case AORR: case ABIC: case AMVN: case ASRL: case ASRA: case ASLL: case AMULU: case ADIVU: case AMUL: case ADIV: case AMOD: case AMODU: case AMULA: case AMULL: case AMULAL: case AMULLU: case AMULALU: case AMULWT: case AMULWB: case AMULAWT: case AMULAWB: return D_REG; case ACMPF: case ACMPD: case AADDF: case AADDD: case ASUBF: case ASUBD: case AMULF: case AMULD: case ADIVF: case ADIVD: case ASQRTF: case ASQRTD: case AABSF: case AABSD: return D_FREG; } } /* * compare v to the center * register in p (p->reg) */ static int copyau1(Prog *p, Adr *v) { if(v->type == D_REG && v->reg == NREG) return 0; return p->reg == v->reg && a2type(p) == v->type; } /* * substitute s for v in a * return failure to substitute */ static int copysub(Adr *a, Adr *v, Adr *s, int f) { if(f) if(copyau(a, v)) { if(a->type == D_SHIFT) { if((a->offset&0xf) == v->reg) a->offset = (a->offset&~0xf)|s->reg; if((a->offset&(1<<4)) && (a->offset>>8) == v->reg) a->offset = (a->offset&~(0xf<<8))|(s->reg<<8); } else if(a->type == D_REGREG || a->type == D_REGREG2) { if(a->offset == v->reg) a->offset = s->reg; if(a->reg == v->reg) a->reg = s->reg; } else a->reg = s->reg; } return 0; } static int copysub1(Prog *p1, Adr *v, Adr *s, int f) { if(f) if(copyau1(p1, v)) p1->reg = s->reg; return 0; } struct { int opcode; int notopcode; int scond; int notscond; } predinfo[] = { { ABEQ, ABNE, 0x0, 0x1, }, { ABNE, ABEQ, 0x1, 0x0, }, { ABCS, ABCC, 0x2, 0x3, }, { ABHS, ABLO, 0x2, 0x3, }, { ABCC, ABCS, 0x3, 0x2, }, { ABLO, ABHS, 0x3, 0x2, }, { ABMI, ABPL, 0x4, 0x5, }, { ABPL, ABMI, 0x5, 0x4, }, { ABVS, ABVC, 0x6, 0x7, }, { ABVC, ABVS, 0x7, 0x6, }, { ABHI, ABLS, 0x8, 0x9, }, { ABLS, ABHI, 0x9, 0x8, }, { ABGE, ABLT, 0xA, 0xB, }, { ABLT, ABGE, 0xB, 0xA, }, { ABGT, ABLE, 0xC, 0xD, }, { ABLE, ABGT, 0xD, 0xC, }, }; typedef struct { Flow *start; Flow *last; Flow *end; int len; } Joininfo; enum { Join, Split, End, Branch, Setcond, Toolong }; enum { Falsecond, Truecond, Delbranch, Keepbranch }; static int isbranch(Prog *p) { return (ABEQ <= p->as) && (p->as <= ABLE); } static int predicable(Prog *p) { switch(p->as) { case ANOP: case AXXX: case ADATA: case AGLOBL: case AGOK: case AHISTORY: case ANAME: case ASIGNAME: case ATEXT: case AWORD: case ABCASE: case ACASE: return 0; } if(isbranch(p)) return 0; return 1; } /* * Depends on an analysis of the encodings performed by 5l. * These seem to be all of the opcodes that lead to the "S" bit * being set in the instruction encodings. * * C_SBIT may also have been set explicitly in p->scond. */ static int modifiescpsr(Prog *p) { switch(p->as) { case AMULLU: case AMULA: case AMULU: case ADIVU: case ATEQ: case ACMN: case ATST: case ACMP: case AMUL: case ADIV: case AMOD: case AMODU: case ABL: return 1; } if(p->scond & C_SBIT) return 1; return 0; } /* * Find the maximal chain of instructions starting with r which could * be executed conditionally */ static int joinsplit(Flow *r, Joininfo *j) { j->start = r; j->last = r; j->len = 0; do { if (r->p2 && (r->p1 || r->p2->p2link)) { j->end = r; return Join; } if (r->s1 && r->s2) { j->end = r; return Split; } j->last = r; if (r->prog->as != ANOP) j->len++; if (!r->s1 && !r->s2) { j->end = r->link; return End; } if (r->s2) { j->end = r->s2; return Branch; } if (modifiescpsr(r->prog)) { j->end = r->s1; return Setcond; } r = r->s1; } while (j->len < 4); j->end = r; return Toolong; } static Flow* successor(Flow *r) { if(r->s1) return r->s1; else return r->s2; } static void applypred(Flow *rstart, Joininfo *j, int cond, int branch) { int pred; Flow *r; if(j->len == 0) return; if(cond == Truecond) pred = predinfo[rstart->prog->as - ABEQ].scond; else pred = predinfo[rstart->prog->as - ABEQ].notscond; for(r = j->start;; r = successor(r)) { if(r->prog->as == AB) { if(r != j->last || branch == Delbranch) excise(r); else { if(cond == Truecond) r->prog->as = predinfo[rstart->prog->as - ABEQ].opcode; else r->prog->as = predinfo[rstart->prog->as - ABEQ].notopcode; } } else if(predicable(r->prog)) r->prog->scond = (r->prog->scond&~C_SCOND)|pred; if(r->s1 != r->link) { r->s1 = r->link; r->link->p1 = r; } if(r == j->last) break; } } void predicate(Graph *g) { Flow *r; int t1, t2; Joininfo j1, j2; for(r=g->start; r!=nil; r=r->link) { if (isbranch(r->prog)) { t1 = joinsplit(r->s1, &j1); t2 = joinsplit(r->s2, &j2); if(j1.last->link != j2.start) continue; if(j1.end == j2.end) if((t1 == Branch && (t2 == Join || t2 == Setcond)) || (t2 == Join && (t1 == Join || t1 == Setcond))) { applypred(r, &j1, Falsecond, Delbranch); applypred(r, &j2, Truecond, Delbranch); excise(r); continue; } if(t1 == End || t1 == Branch) { applypred(r, &j1, Falsecond, Keepbranch); excise(r); continue; } } } } static int isdconst(Addr *a) { if(a->type == D_CONST && a->reg == NREG) return 1; return 0; } int stackaddr(Addr *a) { return regtyp(a) && a->reg == REGSP; } int smallindir(Addr *a, Addr *reg) { return reg->type == D_REG && a->type == D_OREG && a->reg == reg->reg && 0 <= a->offset && a->offset < 4096; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5g/prog.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000011603�12412656734�014455� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2013 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. #include #include #include "gg.h" #include "opt.h" enum { RightRdwr = RightRead | RightWrite, }; // This table gives the basic information about instruction // generated by the compiler and processed in the optimizer. // See opt.h for bit definitions. // // Instructions not generated need not be listed. // As an exception to that rule, we typically write down all the // size variants of an operation even if we just use a subset. // // The table is formatted for 8-space tabs. static ProgInfo progtable[ALAST] = { [ATYPE]= {Pseudo | Skip}, [ATEXT]= {Pseudo}, [AFUNCDATA]= {Pseudo}, [APCDATA]= {Pseudo}, [AUNDEF]= {Break}, [AUSEFIELD]= {OK}, [ACHECKNIL]= {LeftRead}, [AVARDEF]= {Pseudo | RightWrite}, [AVARKILL]= {Pseudo | RightWrite}, // NOP is an internal no-op that also stands // for USED and SET annotations, not the Intel opcode. [ANOP]= {LeftRead | RightWrite}, // Integer. [AADC]= {SizeL | LeftRead | RegRead | RightWrite}, [AADD]= {SizeL | LeftRead | RegRead | RightWrite}, [AAND]= {SizeL | LeftRead | RegRead | RightWrite}, [ABIC]= {SizeL | LeftRead | RegRead | RightWrite}, [ACMN]= {SizeL | LeftRead | RightRead}, [ACMP]= {SizeL | LeftRead | RightRead}, [ADIVU]= {SizeL | LeftRead | RegRead | RightWrite}, [ADIV]= {SizeL | LeftRead | RegRead | RightWrite}, [AEOR]= {SizeL | LeftRead | RegRead | RightWrite}, [AMODU]= {SizeL | LeftRead | RegRead | RightWrite}, [AMOD]= {SizeL | LeftRead | RegRead | RightWrite}, [AMULALU]= {SizeL | LeftRead | RegRead | RightRdwr}, [AMULAL]= {SizeL | LeftRead | RegRead | RightRdwr}, [AMULA]= {SizeL | LeftRead | RegRead | RightRdwr}, [AMULU]= {SizeL | LeftRead | RegRead | RightWrite}, [AMUL]= {SizeL | LeftRead | RegRead | RightWrite}, [AMULL]= {SizeL | LeftRead | RegRead | RightWrite}, [AMULLU]= {SizeL | LeftRead | RegRead | RightWrite}, [AMVN]= {SizeL | LeftRead | RightWrite}, [AORR]= {SizeL | LeftRead | RegRead | RightWrite}, [ARSB]= {SizeL | LeftRead | RegRead | RightWrite}, [ARSC]= {SizeL | LeftRead | RegRead | RightWrite}, [ASBC]= {SizeL | LeftRead | RegRead | RightWrite}, [ASLL]= {SizeL | LeftRead | RegRead | RightWrite}, [ASRA]= {SizeL | LeftRead | RegRead | RightWrite}, [ASRL]= {SizeL | LeftRead | RegRead | RightWrite}, [ASUB]= {SizeL | LeftRead | RegRead | RightWrite}, [ATEQ]= {SizeL | LeftRead | RightRead}, [ATST]= {SizeL | LeftRead | RightRead}, // Floating point. [AADDD]= {SizeD | LeftRead | RightRdwr}, [AADDF]= {SizeF | LeftRead | RightRdwr}, [ACMPD]= {SizeD | LeftRead | RightRead}, [ACMPF]= {SizeF | LeftRead | RightRead}, [ADIVD]= {SizeD | LeftRead | RightRdwr}, [ADIVF]= {SizeF | LeftRead | RightRdwr}, [AMULD]= {SizeD | LeftRead | RightRdwr}, [AMULF]= {SizeF | LeftRead | RightRdwr}, [ASUBD]= {SizeD | LeftRead | RightRdwr}, [ASUBF]= {SizeF | LeftRead | RightRdwr}, // Conversions. [AMOVWD]= {SizeD | LeftRead | RightWrite | Conv}, [AMOVWF]= {SizeF | LeftRead | RightWrite | Conv}, [AMOVDF]= {SizeF | LeftRead | RightWrite | Conv}, [AMOVDW]= {SizeL | LeftRead | RightWrite | Conv}, [AMOVFD]= {SizeD | LeftRead | RightWrite | Conv}, [AMOVFW]= {SizeL | LeftRead | RightWrite | Conv}, // Moves. [AMOVB]= {SizeB | LeftRead | RightWrite | Move}, [AMOVD]= {SizeD | LeftRead | RightWrite | Move}, [AMOVF]= {SizeF | LeftRead | RightWrite | Move}, [AMOVH]= {SizeW | LeftRead | RightWrite | Move}, [AMOVW]= {SizeL | LeftRead | RightWrite | Move}, // In addtion, duffzero reads R0,R1 and writes R1. This fact is // encoded in peep.c [ADUFFZERO]= {Call}, // In addtion, duffcopy reads R1,R2 and writes R0,R1,R2. This fact is // encoded in peep.c [ADUFFCOPY]= {Call}, // These should be split into the two different conversions instead // of overloading the one. [AMOVBS]= {SizeB | LeftRead | RightWrite | Conv}, [AMOVBU]= {SizeB | LeftRead | RightWrite | Conv}, [AMOVHS]= {SizeW | LeftRead | RightWrite | Conv}, [AMOVHU]= {SizeW | LeftRead | RightWrite | Conv}, // Jumps. [AB]= {Jump | Break}, [ABL]= {Call}, [ABEQ]= {Cjmp}, [ABNE]= {Cjmp}, [ABCS]= {Cjmp}, [ABHS]= {Cjmp}, [ABCC]= {Cjmp}, [ABLO]= {Cjmp}, [ABMI]= {Cjmp}, [ABPL]= {Cjmp}, [ABVS]= {Cjmp}, [ABVC]= {Cjmp}, [ABHI]= {Cjmp}, [ABLS]= {Cjmp}, [ABGE]= {Cjmp}, [ABLT]= {Cjmp}, [ABGT]= {Cjmp}, [ABLE]= {Cjmp}, [ARET]= {Break}, }; void proginfo(ProgInfo *info, Prog *p) { *info = progtable[p->as]; if(info->flags == 0) fatal("unknown instruction %P", p); if(p->from.type == D_CONST && p->from.sym != nil && (info->flags & LeftRead)) { info->flags &= ~LeftRead; info->flags |= LeftAddr; } if((info->flags & RegRead) && p->reg == NREG) { info->flags &= ~RegRead; info->flags |= CanRegRead | RightRead; } if(((p->scond & C_SCOND) != C_SCOND_NONE) && (info->flags & RightWrite)) info->flags |= RightRead; } �����������������������������������������������������������������������������������������������������������������������������go/src/cmd/5g/reg.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000073514�12412656737�014277� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5c/reg.c // http://code.google.com/p/inferno-os/source/browse/utils/5c/reg.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "gg.h" #include "opt.h" #define NREGVAR 32 #define REGBITS ((uint32)0xffffffff) void addsplits(void); static Reg* firstr; static int first = 1; int rcmp(const void *a1, const void *a2) { Rgn *p1, *p2; int c1, c2; p1 = (Rgn*)a1; p2 = (Rgn*)a2; c1 = p2->cost; c2 = p1->cost; if(c1 -= c2) return c1; return p2->varno - p1->varno; } void excise(Flow *r) { Prog *p; p = r->prog; p->as = ANOP; p->scond = zprog.scond; p->from = zprog.from; p->to = zprog.to; p->reg = zprog.reg; } static void setaddrs(Bits bit) { int i, n; Var *v; Node *node; while(bany(&bit)) { // convert each bit to a variable i = bnum(bit); node = var[i].node; n = var[i].name; bit.b[i/32] &= ~(1L<<(i%32)); // disable all pieces of that variable for(i=0; inode == node && v->name == n) v->addr = 2; } } } static char* regname[] = { ".R0", ".R1", ".R2", ".R3", ".R4", ".R5", ".R6", ".R7", ".R8", ".R9", ".R10", ".R11", ".R12", ".R13", ".R14", ".R15", ".F0", ".F1", ".F2", ".F3", ".F4", ".F5", ".F6", ".F7", ".F8", ".F9", ".F10", ".F11", ".F12", ".F13", ".F14", ".F15", }; static Node* regnodes[NREGVAR]; static void walkvardef(Node *n, Reg *r, int active); void regopt(Prog *firstp) { Reg *r, *r1; Prog *p; Graph *g; int i, z, active; uint32 vreg; Bits bit; ProgInfo info; if(first) { fmtinstall('Q', Qconv); first = 0; } mergetemp(firstp); /* * control flow is more complicated in generated go code * than in generated c code. define pseudo-variables for * registers, so we have complete register usage information. */ nvar = NREGVAR; memset(var, 0, NREGVAR*sizeof var[0]); for(i=0; iopt = nil; return; } firstr = (Reg*)g->start; for(r = firstr; r != R; r = (Reg*)r->f.link) { p = r->f.prog; if(p->as == AVARDEF || p->as == AVARKILL) continue; proginfo(&info, p); // Avoid making variables for direct-called functions. if(p->as == ABL && p->to.type == D_EXTERN) continue; bit = mkvar(r, &p->from); if(info.flags & LeftRead) for(z=0; zuse1.b[z] |= bit.b[z]; if(info.flags & LeftAddr) setaddrs(bit); if(info.flags & RegRead) { if(p->from.type != D_FREG) r->use1.b[0] |= RtoB(p->reg); else r->use1.b[0] |= FtoB(p->reg); } if(info.flags & (RightAddr | RightRead | RightWrite)) { bit = mkvar(r, &p->to); if(info.flags & RightAddr) setaddrs(bit); if(info.flags & RightRead) for(z=0; zuse2.b[z] |= bit.b[z]; if(info.flags & RightWrite) for(z=0; zset.b[z] |= bit.b[z]; } } if(firstr == R) return; for(i=0; iaddr) { bit = blsh(i); for(z=0; zaddr, v->etype, v->width, v->node, v->offset); } if(debug['R'] && debug['v']) dumpit("pass1", &firstr->f, 1); /* * pass 2 * find looping structure */ flowrpo(g); if(debug['R'] && debug['v']) dumpit("pass2", &firstr->f, 1); /* * pass 2.5 * iterate propagating fat vardef covering forward * r->act records vars with a VARDEF since the last CALL. * (r->act will be reused in pass 5 for something else, * but we'll be done with it by then.) */ active = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) { r->f.active = 0; r->act = zbits; } for(r = firstr; r != R; r = (Reg*)r->f.link) { p = r->f.prog; if(p->as == AVARDEF && isfat(p->to.node->type) && p->to.node->opt != nil) { active++; walkvardef(p->to.node, r, active); } } /* * pass 3 * iterate propagating usage * back until flow graph is complete */ loop1: change = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) r->f.active = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) if(r->f.prog->as == ARET) prop(r, zbits, zbits); loop11: /* pick up unreachable code */ i = 0; for(r = firstr; r != R; r = r1) { r1 = (Reg*)r->f.link; if(r1 && r1->f.active && !r->f.active) { prop(r, zbits, zbits); i = 1; } } if(i) goto loop11; if(change) goto loop1; if(debug['R'] && debug['v']) dumpit("pass3", &firstr->f, 1); /* * pass 4 * iterate propagating register/variable synchrony * forward until graph is complete */ loop2: change = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) r->f.active = 0; synch(firstr, zbits); if(change) goto loop2; addsplits(); if(debug['R'] && debug['v']) dumpit("pass4", &firstr->f, 1); if(debug['R'] > 1) { print("\nprop structure:\n"); for(r = firstr; r != R; r = (Reg*)r->f.link) { print("%d:%P", r->f.loop, r->f.prog); for(z=0; zset.b[z] | r->refahead.b[z] | r->calahead.b[z] | r->refbehind.b[z] | r->calbehind.b[z] | r->use1.b[z] | r->use2.b[z]; bit.b[z] &= ~addrs.b[z]; } if(bany(&bit)) { print("\t"); if(bany(&r->use1)) print(" u1=%Q", r->use1); if(bany(&r->use2)) print(" u2=%Q", r->use2); if(bany(&r->set)) print(" st=%Q", r->set); if(bany(&r->refahead)) print(" ra=%Q", r->refahead); if(bany(&r->calahead)) print(" ca=%Q", r->calahead); if(bany(&r->refbehind)) print(" rb=%Q", r->refbehind); if(bany(&r->calbehind)) print(" cb=%Q", r->calbehind); } print("\n"); } } /* * pass 4.5 * move register pseudo-variables into regu. */ for(r = firstr; r != R; r = (Reg*)r->f.link) { r->regu = (r->refbehind.b[0] | r->set.b[0]) & REGBITS; r->set.b[0] &= ~REGBITS; r->use1.b[0] &= ~REGBITS; r->use2.b[0] &= ~REGBITS; r->refbehind.b[0] &= ~REGBITS; r->refahead.b[0] &= ~REGBITS; r->calbehind.b[0] &= ~REGBITS; r->calahead.b[0] &= ~REGBITS; r->regdiff.b[0] &= ~REGBITS; r->act.b[0] &= ~REGBITS; } if(debug['R'] && debug['v']) dumpit("pass4.5", &firstr->f, 1); /* * pass 5 * isolate regions * calculate costs (paint1) */ r = firstr; if(r) { for(z=0; zrefahead.b[z] | r->calahead.b[z]) & ~(externs.b[z] | params.b[z] | addrs.b[z] | consts.b[z]); if(bany(&bit) & !r->f.refset) { // should never happen - all variables are preset if(debug['w']) print("%L: used and not set: %Q\n", r->f.prog->lineno, bit); r->f.refset = 1; } } for(r = firstr; r != R; r = (Reg*)r->f.link) r->act = zbits; rgp = region; nregion = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) { for(z=0; zset.b[z] & ~(r->refahead.b[z] | r->calahead.b[z] | addrs.b[z]); if(bany(&bit) && !r->f.refset) { if(debug['w']) print("%L: set and not used: %Q\n", r->f.prog->lineno, bit); r->f.refset = 1; excise(&r->f); } for(z=0; zact.b[z] | addrs.b[z]); while(bany(&bit)) { i = bnum(bit); rgp->enter = r; rgp->varno = i; change = 0; if(debug['R'] > 1) print("\n"); paint1(r, i); bit.b[i/32] &= ~(1L<<(i%32)); if(change <= 0) { if(debug['R']) print("%L $%d: %Q\n", r->f.prog->lineno, change, blsh(i)); continue; } rgp->cost = change; nregion++; if(nregion >= NRGN) { if(debug['R'] > 1) print("too many regions\n"); goto brk; } rgp++; } } brk: qsort(region, nregion, sizeof(region[0]), rcmp); if(debug['R'] && debug['v']) dumpit("pass5", &firstr->f, 1); /* * pass 6 * determine used registers (paint2) * replace code (paint3) */ rgp = region; for(i=0; ivarno); vreg = paint2(rgp->enter, rgp->varno); vreg = allreg(vreg, rgp); if(debug['R']) { if(rgp->regno >= NREG) print("%L $%d F%d: %Q\n", rgp->enter->f.prog->lineno, rgp->cost, rgp->regno-NREG, bit); else print("%L $%d R%d: %Q\n", rgp->enter->f.prog->lineno, rgp->cost, rgp->regno, bit); } if(rgp->regno != 0) paint3(rgp->enter, rgp->varno, vreg, rgp->regno); rgp++; } if(debug['R'] && debug['v']) dumpit("pass6", &firstr->f, 1); /* * free aux structures. peep allocates new ones. */ for(i=0; iopt = nil; flowend(g); firstr = R; /* * pass 7 * peep-hole on basic block */ if(!debug['R'] || debug['P']) { peep(firstp); } if(debug['R'] && debug['v']) dumpit("pass7", &firstr->f, 1); /* * last pass * eliminate nops * free aux structures * adjust the stack pointer * MOVW.W R1,-12(R13) <<- start * MOVW R0,R1 * MOVW R1,8(R13) * MOVW $0,R1 * MOVW R1,4(R13) * BL ,runtime.newproc+0(SB) * MOVW &ft+-32(SP),R7 <<- adjust * MOVW &j+-40(SP),R6 <<- adjust * MOVW autotmp_0003+-24(SP),R5 <<- adjust * MOVW $12(R13),R13 <<- finish */ vreg = 0; for(p = firstp; p != P; p = p->link) { while(p->link != P && p->link->as == ANOP) p->link = p->link->link; if(p->to.type == D_BRANCH) while(p->to.u.branch != P && p->to.u.branch->as == ANOP) p->to.u.branch = p->to.u.branch->link; if(p->as == AMOVW && p->to.reg == 13) { if(p->scond & C_WBIT) { vreg = -p->to.offset; // in adjust region // print("%P adjusting %d\n", p, vreg); continue; } if(p->from.type == D_CONST && p->to.type == D_REG) { if(p->from.offset != vreg) print("in and out different\n"); // print("%P finish %d\n", p, vreg); vreg = 0; // done adjust region continue; } // print("%P %d %d from type\n", p, p->from.type, D_CONST); // print("%P %d %d to type\n\n", p, p->to.type, D_REG); } if(p->as == AMOVW && vreg != 0) { if(p->from.sym != nil) if(p->from.name == D_AUTO || p->from.name == D_PARAM) { p->from.offset += vreg; // print("%P adjusting from %d %d\n", p, vreg, p->from.type); } if(p->to.sym != nil) if(p->to.name == D_AUTO || p->to.name == D_PARAM) { p->to.offset += vreg; // print("%P adjusting to %d %d\n", p, vreg, p->from.type); } } } } static void walkvardef(Node *n, Reg *r, int active) { Reg *r1, *r2; int bn; Var *v; for(r1=r; r1!=R; r1=(Reg*)r1->f.s1) { if(r1->f.active == active) break; r1->f.active = active; if(r1->f.prog->as == AVARKILL && r1->f.prog->to.node == n) break; for(v=n->opt; v!=nil; v=v->nextinnode) { bn = v - var; r1->act.b[bn/32] |= 1L << (bn%32); } if(r1->f.prog->as == ABL) break; } for(r2=r; r2!=r1; r2=(Reg*)r2->f.s1) if(r2->f.s2 != nil) walkvardef(n, (Reg*)r2->f.s2, active); } void addsplits(void) { Reg *r, *r1; int z, i; Bits bit; for(r = firstr; r != R; r = (Reg*)r->f.link) { if(r->f.loop > 1) continue; if(r->f.prog->as == ABL) continue; if(r->f.prog->as == ADUFFZERO) continue; if(r->f.prog->as == ADUFFCOPY) continue; for(r1 = (Reg*)r->f.p2; r1 != R; r1 = (Reg*)r1->f.p2link) { if(r1->f.loop <= 1) continue; for(z=0; zcalbehind.b[z] & (r->refahead.b[z] | r->use1.b[z] | r->use2.b[z]) & ~(r->calahead.b[z] & addrs.b[z]); while(bany(&bit)) { i = bnum(bit); bit.b[i/32] &= ~(1L << (i%32)); } } } } /* * add mov b,rn * just after r */ void addmove(Reg *r, int bn, int rn, int f) { Prog *p, *p1, *p2; Adr *a; Var *v; p1 = mal(sizeof(*p1)); *p1 = zprog; p = r->f.prog; // If there's a stack fixup coming (after BL newproc or BL deferproc), // delay the load until after the fixup. p2 = p->link; if(p2 && p2->as == AMOVW && p2->from.type == D_CONST && p2->from.reg == REGSP && p2->to.reg == REGSP && p2->to.type == D_REG) p = p2; p1->link = p->link; p->link = p1; p1->lineno = p->lineno; v = var + bn; a = &p1->to; a->name = v->name; a->node = v->node; a->sym = linksym(v->node->sym); a->offset = v->offset; a->etype = v->etype; a->type = D_OREG; if(a->etype == TARRAY || a->sym == nil) a->type = D_CONST; if(v->addr) fatal("addmove: shouldn't be doing this %A\n", a); switch(v->etype) { default: print("What is this %E\n", v->etype); case TINT8: p1->as = AMOVBS; break; case TBOOL: case TUINT8: //print("movbu %E %d %S\n", v->etype, bn, v->sym); p1->as = AMOVBU; break; case TINT16: p1->as = AMOVHS; break; case TUINT16: p1->as = AMOVHU; break; case TINT32: case TUINT32: case TPTR32: p1->as = AMOVW; break; case TFLOAT32: p1->as = AMOVF; break; case TFLOAT64: p1->as = AMOVD; break; } p1->from.type = D_REG; p1->from.reg = rn; if(rn >= NREG) { p1->from.type = D_FREG; p1->from.reg = rn-NREG; } if(!f) { p1->from = *a; *a = zprog.from; a->type = D_REG; a->reg = rn; if(rn >= NREG) { a->type = D_FREG; a->reg = rn-NREG; } if(v->etype == TUINT8 || v->etype == TBOOL) p1->as = AMOVBU; if(v->etype == TUINT16) p1->as = AMOVHU; } if(debug['R']) print("%P\t.a%P\n", p, p1); } static int overlap(int32 o1, int w1, int32 o2, int w2) { int32 t1, t2; t1 = o1+w1; t2 = o2+w2; if(!(t1 > o2 && t2 > o1)) return 0; return 1; } Bits mkvar(Reg *r, Adr *a) { Var *v; int i, t, n, et, z, w, flag; int32 o; Bits bit; Node *node; // mark registers used t = a->type; flag = 0; switch(t) { default: print("type %d %d %D\n", t, a->name, a); goto none; case D_NONE: case D_FCONST: case D_BRANCH: break; case D_REGREG: case D_REGREG2: bit = zbits; if(a->offset != NREG) bit.b[0] |= RtoB(a->offset); if(a->reg != NREG) bit.b[0] |= RtoB(a->reg); return bit; case D_CONST: case D_REG: case D_SHIFT: if(a->reg != NREG) { bit = zbits; bit.b[0] = RtoB(a->reg); return bit; } break; case D_OREG: if(a->reg != NREG) { if(a == &r->f.prog->from) r->use1.b[0] |= RtoB(a->reg); else r->use2.b[0] |= RtoB(a->reg); if(r->f.prog->scond & (C_PBIT|C_WBIT)) r->set.b[0] |= RtoB(a->reg); } break; case D_FREG: if(a->reg != NREG) { bit = zbits; bit.b[0] = FtoB(a->reg); return bit; } break; } switch(a->name) { default: goto none; case D_EXTERN: case D_STATIC: case D_AUTO: case D_PARAM: n = a->name; break; } node = a->node; if(node == N || node->op != ONAME || node->orig == N) goto none; node = node->orig; if(node->orig != node) fatal("%D: bad node", a); if(node->sym == S || node->sym->name[0] == '.') goto none; et = a->etype; o = a->offset; w = a->width; if(w < 0) fatal("bad width %d for %D", w, a); for(i=0; inode == node && v->name == n) { if(v->offset == o) if(v->etype == et) if(v->width == w) if(!flag) return blsh(i); // if they overlap, disable both if(overlap(v->offset, v->width, o, w)) { v->addr = 1; flag = 1; } } } switch(et) { case 0: case TFUNC: goto none; } if(nvar >= NVAR) { if(debug['w'] > 1 && node) fatal("variable not optimized: %D", a); // If we're not tracking a word in a variable, mark the rest as // having its address taken, so that we keep the whole thing // live at all calls. otherwise we might optimize away part of // a variable but not all of it. for(i=0; inode == node) v->addr = 1; } goto none; } i = nvar; nvar++; //print("var %d %E %D %S\n", i, et, a, s); v = var+i; v->offset = o; v->name = n; v->etype = et; v->width = w; v->addr = flag; // funny punning v->node = node; // node->opt is the head of a linked list // of Vars within the given Node, so that // we can start at a Var and find all the other // Vars in the same Go variable. v->nextinnode = node->opt; node->opt = v; bit = blsh(i); if(n == D_EXTERN || n == D_STATIC) for(z=0; zclass == PPARAM) for(z=0; zclass == PPARAMOUT) for(z=0; zaddrtaken) v->addr = 1; // Disable registerization for globals, because: // (1) we might panic at any time and we want the recovery code // to see the latest values (issue 1304). // (2) we don't know what pointers might point at them and we want // loads via those pointers to see updated values and vice versa (issue 7995). // // Disable registerization for results if using defer, because the deferred func // might recover and return, causing the current values to be used. if(node->class == PEXTERN || (hasdefer && node->class == PPARAMOUT)) v->addr = 1; if(debug['R']) print("bit=%2d et=%2E w=%d+%d %#N %D flag=%d\n", i, et, o, w, node, a, v->addr); return bit; none: return zbits; } void prop(Reg *r, Bits ref, Bits cal) { Reg *r1, *r2; int z, i, j; Var *v, *v1; for(r1 = r; r1 != R; r1 = (Reg*)r1->f.p1) { for(z=0; zrefahead.b[z]; if(ref.b[z] != r1->refahead.b[z]) { r1->refahead.b[z] = ref.b[z]; change++; } cal.b[z] |= r1->calahead.b[z]; if(cal.b[z] != r1->calahead.b[z]) { r1->calahead.b[z] = cal.b[z]; change++; } } switch(r1->f.prog->as) { case ABL: if(noreturn(r1->f.prog)) break; // Mark all input variables (ivar) as used, because that's what the // liveness bitmaps say. The liveness bitmaps say that so that a // panic will not show stale values in the parameter dump. // Mark variables with a recent VARDEF (r1->act) as used, // so that the optimizer flushes initializations to memory, // so that if a garbage collection happens during this CALL, // the collector will see initialized memory. Again this is to // match what the liveness bitmaps say. for(z=0; zact.b[z]; ref.b[z] = 0; } // cal.b is the current approximation of what's live across the call. // Every bit in cal.b is a single stack word. For each such word, // find all the other tracked stack words in the same Go variable // (struct/slice/string/interface) and mark them live too. // This is necessary because the liveness analysis for the garbage // collector works at variable granularity, not at word granularity. // It is fundamental for slice/string/interface: the garbage collector // needs the whole value, not just some of the words, in order to // interpret the other bits correctly. Specifically, slice needs a consistent // ptr and cap, string needs a consistent ptr and len, and interface // needs a consistent type word and data word. for(z=0; z= nvar || ((cal.b[z]>>i)&1) == 0) continue; v = var+z*32+i; if(v->node->opt == nil) // v represents fixed register, not Go variable continue; // v->node->opt is the head of a linked list of Vars // corresponding to tracked words from the Go variable v->node. // Walk the list and set all the bits. // For a large struct this could end up being quadratic: // after the first setting, the outer loop (for z, i) would see a 1 bit // for all of the remaining words in the struct, and for each such // word would go through and turn on all the bits again. // To avoid the quadratic behavior, we only turn on the bits if // v is the head of the list or if the head's bit is not yet turned on. // This will set the bits at most twice, keeping the overall loop linear. v1 = v->node->opt; j = v1 - var; if(v == v1 || ((cal.b[j/32]>>(j&31))&1) == 0) { for(; v1 != nil; v1 = v1->nextinnode) { j = v1 - var; cal.b[j/32] |= 1<<(j&31); } } } } break; case ATEXT: for(z=0; zset.b[z]) | r1->use1.b[z] | r1->use2.b[z]; cal.b[z] &= ~(r1->set.b[z] | r1->use1.b[z] | r1->use2.b[z]); r1->refbehind.b[z] = ref.b[z]; r1->calbehind.b[z] = cal.b[z]; } if(r1->f.active) break; r1->f.active = 1; } for(; r != r1; r = (Reg*)r->f.p1) for(r2 = (Reg*)r->f.p2; r2 != R; r2 = (Reg*)r2->f.p2link) prop(r2, r->refbehind, r->calbehind); } void synch(Reg *r, Bits dif) { Reg *r1; int z; for(r1 = r; r1 != R; r1 = (Reg*)r1->f.s1) { for(z=0; zrefbehind.b[z] & r1->refahead.b[z])) | r1->set.b[z] | r1->regdiff.b[z]; if(dif.b[z] != r1->regdiff.b[z]) { r1->regdiff.b[z] = dif.b[z]; change++; } } if(r1->f.active) break; r1->f.active = 1; for(z=0; zcalbehind.b[z] & r1->calahead.b[z]); if(r1->f.s2 != nil) synch((Reg*)r1->f.s2, dif); } } uint32 allreg(uint32 b, Rgn *r) { Var *v; int i; v = var + r->varno; r->regno = 0; switch(v->etype) { default: fatal("unknown etype %d/%E", bitno(b), v->etype); break; case TINT8: case TUINT8: case TINT16: case TUINT16: case TINT32: case TUINT32: case TINT: case TUINT: case TUINTPTR: case TBOOL: case TPTR32: i = BtoR(~b); if(i && r->cost >= 0) { r->regno = i; return RtoB(i); } break; case TFLOAT32: case TFLOAT64: i = BtoF(~b); if(i && r->cost >= 0) { r->regno = i+NREG; return FtoB(i); } break; case TINT64: case TUINT64: case TPTR64: case TINTER: case TSTRUCT: case TARRAY: break; } return 0; } void paint1(Reg *r, int bn) { Reg *r1; Prog *p; int z; uint32 bb; z = bn/32; bb = 1L<<(bn%32); if(r->act.b[z] & bb) return; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = (Reg*)r->f.p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(r1->act.b[z] & bb) break; r = r1; } if(LOAD(r) & ~(r->set.b[z] & ~(r->use1.b[z]|r->use2.b[z])) & bb) { change -= CLOAD * r->f.loop; if(debug['R'] > 1) print("%d%P\td %Q $%d\n", r->f.loop, r->f.prog, blsh(bn), change); } for(;;) { r->act.b[z] |= bb; p = r->f.prog; if(r->f.prog->as != ANOP) { // don't give credit for NOPs if(r->use1.b[z] & bb) { change += CREF * r->f.loop; if(debug['R'] > 1) print("%d%P\tu1 %Q $%d\n", r->f.loop, p, blsh(bn), change); } if((r->use2.b[z]|r->set.b[z]) & bb) { change += CREF * r->f.loop; if(debug['R'] > 1) print("%d%P\tu2 %Q $%d\n", r->f.loop, p, blsh(bn), change); } } if(STORE(r) & r->regdiff.b[z] & bb) { change -= CLOAD * r->f.loop; if(debug['R'] > 1) print("%d%P\tst %Q $%d\n", r->f.loop, p, blsh(bn), change); } if(r->refbehind.b[z] & bb) for(r1 = (Reg*)r->f.p2; r1 != R; r1 = (Reg*)r1->f.p2link) if(r1->refahead.b[z] & bb) paint1(r1, bn); if(!(r->refahead.b[z] & bb)) break; r1 = (Reg*)r->f.s2; if(r1 != R) if(r1->refbehind.b[z] & bb) paint1(r1, bn); r = (Reg*)r->f.s1; if(r == R) break; if(r->act.b[z] & bb) break; if(!(r->refbehind.b[z] & bb)) break; } } uint32 paint2(Reg *r, int bn) { Reg *r1; int z; uint32 bb, vreg; z = bn/32; bb = 1L << (bn%32); vreg = regbits; if(!(r->act.b[z] & bb)) return vreg; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = (Reg*)r->f.p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(!(r1->act.b[z] & bb)) break; r = r1; } for(;;) { r->act.b[z] &= ~bb; vreg |= r->regu; if(r->refbehind.b[z] & bb) for(r1 = (Reg*)r->f.p2; r1 != R; r1 = (Reg*)r1->f.p2link) if(r1->refahead.b[z] & bb) vreg |= paint2(r1, bn); if(!(r->refahead.b[z] & bb)) break; r1 = (Reg*)r->f.s2; if(r1 != R) if(r1->refbehind.b[z] & bb) vreg |= paint2(r1, bn); r = (Reg*)r->f.s1; if(r == R) break; if(!(r->act.b[z] & bb)) break; if(!(r->refbehind.b[z] & bb)) break; } return vreg; } void paint3(Reg *r, int bn, int32 rb, int rn) { Reg *r1; Prog *p; int z; uint32 bb; z = bn/32; bb = 1L << (bn%32); if(r->act.b[z] & bb) return; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = (Reg*)r->f.p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(r1->act.b[z] & bb) break; r = r1; } if(LOAD(r) & ~(r->set.b[z] & ~(r->use1.b[z]|r->use2.b[z])) & bb) addmove(r, bn, rn, 0); for(;;) { r->act.b[z] |= bb; p = r->f.prog; if(r->use1.b[z] & bb) { if(debug['R']) print("%P", p); addreg(&p->from, rn); if(debug['R']) print("\t.c%P\n", p); } if((r->use2.b[z]|r->set.b[z]) & bb) { if(debug['R']) print("%P", p); addreg(&p->to, rn); if(debug['R']) print("\t.c%P\n", p); } if(STORE(r) & r->regdiff.b[z] & bb) addmove(r, bn, rn, 1); r->regu |= rb; if(r->refbehind.b[z] & bb) for(r1 = (Reg*)r->f.p2; r1 != R; r1 = (Reg*)r1->f.p2link) if(r1->refahead.b[z] & bb) paint3(r1, bn, rb, rn); if(!(r->refahead.b[z] & bb)) break; r1 = (Reg*)r->f.s2; if(r1 != R) if(r1->refbehind.b[z] & bb) paint3(r1, bn, rb, rn); r = (Reg*)r->f.s1; if(r == R) break; if(r->act.b[z] & bb) break; if(!(r->refbehind.b[z] & bb)) break; } } void addreg(Adr *a, int rn) { a->sym = nil; a->name = D_NONE; a->type = D_REG; a->reg = rn; if(rn >= NREG) { a->type = D_FREG; a->reg = rn-NREG; } } /* * bit reg * 0 R0 * 1 R1 * ... ... * 10 R10 * 12 R12 */ int32 RtoB(int r) { if(r >= REGTMP-2 && r != 12) // excluded R9 and R10 for m and g, but not R12 return 0; return 1L << r; } int BtoR(int32 b) { b &= 0x11fcL; // excluded R9 and R10 for m and g, but not R12 if(b == 0) return 0; return bitno(b); } /* * bit reg * 18 F2 * 19 F3 * ... ... * 31 F15 */ int32 FtoB(int f) { if(f < 2 || f > NFREG-1) return 0; return 1L << (f + 16); } int BtoF(int32 b) { b &= 0xfffc0000L; if(b == 0) return 0; return bitno(b) - 16; } void dumpone(Flow *f, int isreg) { int z; Bits bit; Reg *r; print("%d:%P", f->loop, f->prog); if(isreg) { r = (Reg*)f; for(z=0; zset.b[z] | r->use1.b[z] | r->use2.b[z] | r->refbehind.b[z] | r->refahead.b[z] | r->calbehind.b[z] | r->calahead.b[z] | r->regdiff.b[z] | r->act.b[z] | 0; if(bany(&bit)) { print("\t"); if(bany(&r->set)) print(" s:%Q", r->set); if(bany(&r->use1)) print(" u1:%Q", r->use1); if(bany(&r->use2)) print(" u2:%Q", r->use2); if(bany(&r->refbehind)) print(" rb:%Q ", r->refbehind); if(bany(&r->refahead)) print(" ra:%Q ", r->refahead); if(bany(&r->calbehind)) print(" cb:%Q ", r->calbehind); if(bany(&r->calahead)) print(" ca:%Q ", r->calahead); if(bany(&r->regdiff)) print(" d:%Q ", r->regdiff); if(bany(&r->act)) print(" a:%Q ", r->act); } } print("\n"); } void dumpit(char *str, Flow *r0, int isreg) { Flow *r, *r1; print("\n%s\n", str); for(r = r0; r != nil; r = r->link) { dumpone(r, isreg); r1 = r->p2; if(r1 != nil) { print(" pred:"); for(; r1 != nil; r1 = r1->p2link) print(" %.4ud", (int)r1->prog->pc); if(r->p1 != nil) print(" (and %.4ud)", (int)r->p1->prog->pc); else print(" (only)"); print("\n"); } // r1 = r->s1; // if(r1 != nil) { // print(" succ:"); // for(; r1 != R; r1 = r1->s1) // print(" %.4ud", (int)r1->prog->pc); // print("\n"); // } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5l���������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013275� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5l/5.out.h�������������������������������������������������������������������������������0100644�0000000�0000000�00000011436�12412656737�014501� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5c/5.out.h // http://code.google.com/p/inferno-os/source/browse/utils/5c/5.out.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #define NSNAME 8 #define NSYM 50 #define NREG 16 #include "../ld/textflag.h" #define REGRET 0 /* -1 disables use of REGARG */ #define REGARG -1 /* compiler allocates R1 up as temps */ /* compiler allocates register variables R3 up */ #define REGEXT 10 /* these two registers are declared in runtime.h */ #define REGG (REGEXT-0) #define REGM (REGEXT-1) /* compiler allocates external registers R10 down */ #define REGTMP 11 #define REGSP 13 #define REGLINK 14 #define REGPC 15 #define NFREG 16 #define FREGRET 0 #define FREGEXT 7 #define FREGTMP 15 /* compiler allocates register variables F0 up */ /* compiler allocates external registers F7 down */ enum as { AXXX, AAND, AEOR, ASUB, ARSB, AADD, AADC, ASBC, ARSC, ATST, ATEQ, ACMP, ACMN, AORR, ABIC, AMVN, AB, ABL, /* * Do not reorder or fragment the conditional branch * opcodes, or the predication code will break */ ABEQ, ABNE, ABCS, ABHS, ABCC, ABLO, ABMI, ABPL, ABVS, ABVC, ABHI, ABLS, ABGE, ABLT, ABGT, ABLE, AMOVWD, AMOVWF, AMOVDW, AMOVFW, AMOVFD, AMOVDF, AMOVF, AMOVD, ACMPF, ACMPD, AADDF, AADDD, ASUBF, ASUBD, AMULF, AMULD, ADIVF, ADIVD, ASQRTF, ASQRTD, AABSF, AABSD, ASRL, ASRA, ASLL, AMULU, ADIVU, AMUL, ADIV, AMOD, AMODU, AMOVB, AMOVBS, AMOVBU, AMOVH, AMOVHS, AMOVHU, AMOVW, AMOVM, ASWPBU, ASWPW, ANOP, ARFE, ASWI, AMULA, ADATA, AGLOBL, AGOK, AHISTORY, ANAME, ARET, ATEXT, AWORD, ADYNT_, AINIT_, ABCASE, ACASE, AEND, AMULL, AMULAL, AMULLU, AMULALU, ABX, ABXRET, ADWORD, ASIGNAME, ALDREX, ASTREX, ALDREXD, ASTREXD, APLD, AUNDEF, ACLZ, AMULWT, AMULWB, AMULAWT, AMULAWB, AUSEFIELD, ATYPE, AFUNCDATA, APCDATA, ACHECKNIL, AVARDEF, AVARKILL, ADUFFCOPY, ADUFFZERO, AMRC, // MRC/MCR ALAST, }; /* scond byte */ #define C_SCOND ((1<<4)-1) #define C_SBIT (1<<4) #define C_PBIT (1<<5) #define C_WBIT (1<<6) #define C_FBIT (1<<7) /* psr flags-only */ #define C_UBIT (1<<7) /* up bit, unsigned bit */ #define C_SCOND_EQ 0 #define C_SCOND_NE 1 #define C_SCOND_HS 2 #define C_SCOND_LO 3 #define C_SCOND_MI 4 #define C_SCOND_PL 5 #define C_SCOND_VS 6 #define C_SCOND_VC 7 #define C_SCOND_HI 8 #define C_SCOND_LS 9 #define C_SCOND_GE 10 #define C_SCOND_LT 11 #define C_SCOND_GT 12 #define C_SCOND_LE 13 #define C_SCOND_NONE 14 #define C_SCOND_NV 15 /* D_SHIFT type */ #define SHIFT_LL 0<<5 #define SHIFT_LR 1<<5 #define SHIFT_AR 2<<5 #define SHIFT_RR 3<<5 enum { /* type/name */ D_GOK = 0, D_NONE = 1, /* type */ D_BRANCH = (D_NONE+1), D_OREG = (D_NONE+2), D_CONST = (D_NONE+7), D_FCONST = (D_NONE+8), D_SCONST = (D_NONE+9), D_PSR = (D_NONE+10), D_REG = (D_NONE+12), D_FREG = (D_NONE+13), D_FILE = (D_NONE+16), D_OCONST = (D_NONE+17), D_FILE1 = (D_NONE+18), D_SHIFT = (D_NONE+19), D_FPCR = (D_NONE+20), D_REGREG = (D_NONE+21), // (reg, reg) D_ADDR = (D_NONE+22), D_SBIG = (D_NONE+23), D_CONST2 = (D_NONE+24), D_REGREG2 = (D_NONE+25), // reg, reg /* name */ D_EXTERN = (D_NONE+3), D_STATIC = (D_NONE+4), D_AUTO = (D_NONE+5), D_PARAM = (D_NONE+6), }; /* * this is the ranlib header */ #define SYMDEF "__.GOSYMDEF" ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5l/Makefile������������������������������������������������������������������������������0100644�0000000�0000000�00000000265�12412656734�015011� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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. include ../../Make.dist �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5l/asm.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000036562�12412656737�014311� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5l/asm.c // http://code.google.com/p/inferno-os/source/browse/utils/5l/asm.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Writing object files. #include "l.h" #include "../ld/lib.h" #include "../ld/elf.h" #include "../ld/dwarf.h" char linuxdynld[] = "/lib/ld-linux.so.3"; // 2 for OABI, 3 for EABI char freebsddynld[] = "/usr/libexec/ld-elf.so.1"; char openbsddynld[] = "XXX"; char netbsddynld[] = "/libexec/ld.elf_so"; char dragonflydynld[] = "XXX"; char solarisdynld[] = "XXX"; static int needlib(char *name) { char *p; LSym *s; if(*name == '\0') return 0; /* reuse hash code in symbol table */ p = smprint(".dynlib.%s", name); s = linklookup(ctxt, p, 0); free(p); if(s->type == 0) { s->type = 100; // avoid SDATA, etc. return 1; } return 0; } int nelfsym = 1; static void addpltsym(Link*, LSym*); static void addgotsym(Link*, LSym*); static void addgotsyminternal(Link*, LSym*); // Preserve highest 8 bits of a, and do addition to lower 24-bit // of a and b; used to adjust ARM branch intruction's target static int32 braddoff(int32 a, int32 b) { return (((uint32)a) & 0xff000000U) | (0x00ffffffU & (uint32)(a + b)); } void adddynrela(LSym *rel, LSym *s, Reloc *r) { addaddrplus(ctxt, rel, s, r->off); adduint32(ctxt, rel, R_ARM_RELATIVE); } void adddynrel(LSym *s, Reloc *r) { LSym *targ, *rel; targ = r->sym; ctxt->cursym = s; switch(r->type) { default: if(r->type >= 256) { diag("unexpected relocation type %d", r->type); return; } break; // Handle relocations found in ELF object files. case 256 + R_ARM_PLT32: r->type = R_CALLARM; if(targ->type == SDYNIMPORT) { addpltsym(ctxt, targ); r->sym = linklookup(ctxt, ".plt", 0); r->add = braddoff(r->add, targ->plt / 4); } return; case 256 + R_ARM_THM_PC22: // R_ARM_THM_CALL diag("R_ARM_THM_CALL, are you using -marm?"); errorexit(); return; case 256 + R_ARM_GOT32: // R_ARM_GOT_BREL if(targ->type != SDYNIMPORT) { addgotsyminternal(ctxt, targ); } else { addgotsym(ctxt, targ); } r->type = R_CONST; // write r->add during relocsym r->sym = S; r->add += targ->got; return; case 256 + R_ARM_GOT_PREL: // GOT(S) + A - P if(targ->type != SDYNIMPORT) { addgotsyminternal(ctxt, targ); } else { addgotsym(ctxt, targ); } r->type = R_PCREL; r->sym = linklookup(ctxt, ".got", 0); r->add += targ->got + 4; return; case 256 + R_ARM_GOTOFF: // R_ARM_GOTOFF32 r->type = R_GOTOFF; return; case 256 + R_ARM_GOTPC: // R_ARM_BASE_PREL r->type = R_PCREL; r->sym = linklookup(ctxt, ".got", 0); r->add += 4; return; case 256 + R_ARM_CALL: r->type = R_CALLARM; if(targ->type == SDYNIMPORT) { addpltsym(ctxt, targ); r->sym = linklookup(ctxt, ".plt", 0); r->add = braddoff(r->add, targ->plt / 4); } return; case 256 + R_ARM_REL32: // R_ARM_REL32 r->type = R_PCREL; r->add += 4; return; case 256 + R_ARM_ABS32: if(targ->type == SDYNIMPORT) diag("unexpected R_ARM_ABS32 relocation for dynamic symbol %s", targ->name); r->type = R_ADDR; return; case 256 + R_ARM_V4BX: // we can just ignore this, because we are targeting ARM V5+ anyway if(r->sym) { // R_ARM_V4BX is ABS relocation, so this symbol is a dummy symbol, ignore it r->sym->type = 0; } r->sym = S; return; case 256 + R_ARM_PC24: case 256 + R_ARM_JUMP24: r->type = R_CALLARM; if(targ->type == SDYNIMPORT) { addpltsym(ctxt, targ); r->sym = linklookup(ctxt, ".plt", 0); r->add = braddoff(r->add, targ->plt / 4); } return; } // Handle references to ELF symbols from our own object files. if(targ->type != SDYNIMPORT) return; switch(r->type) { case R_CALLARM: addpltsym(ctxt, targ); r->sym = linklookup(ctxt, ".plt", 0); r->add = targ->plt; return; case R_ADDR: if(s->type != SDATA) break; if(iself) { adddynsym(ctxt, targ); rel = linklookup(ctxt, ".rel", 0); addaddrplus(ctxt, rel, s, r->off); adduint32(ctxt, rel, ELF32_R_INFO(targ->dynid, R_ARM_GLOB_DAT)); // we need a S + A dynmic reloc r->type = R_CONST; // write r->add during relocsym r->sym = S; return; } break; } ctxt->cursym = s; diag("unsupported relocation for dynamic symbol %s (type=%d stype=%d)", targ->name, r->type, targ->type); } int elfreloc1(Reloc *r, vlong sectoff) { int32 elfsym; LPUT(sectoff); elfsym = r->xsym->elfsym; switch(r->type) { default: return -1; case R_ADDR: if(r->siz == 4) LPUT(R_ARM_ABS32 | elfsym<<8); else return -1; break; case R_PCREL: if(r->siz == 4) LPUT(R_ARM_REL32 | elfsym<<8); else return -1; break; case R_CALLARM: if(r->siz == 4) { if((r->add & 0xff000000) == 0xeb000000) // BL LPUT(R_ARM_CALL | elfsym<<8); else LPUT(R_ARM_JUMP24 | elfsym<<8); } else return -1; break; case R_TLS: if(r->siz == 4) { if(flag_shared) LPUT(R_ARM_TLS_IE32 | elfsym<<8); else LPUT(R_ARM_TLS_LE32 | elfsym<<8); } else return -1; break; } return 0; } void elfsetupplt(void) { LSym *plt, *got; plt = linklookup(ctxt, ".plt", 0); got = linklookup(ctxt, ".got.plt", 0); if(plt->size == 0) { // str lr, [sp, #-4]! adduint32(ctxt, plt, 0xe52de004); // ldr lr, [pc, #4] adduint32(ctxt, plt, 0xe59fe004); // add lr, pc, lr adduint32(ctxt, plt, 0xe08fe00e); // ldr pc, [lr, #8]! adduint32(ctxt, plt, 0xe5bef008); // .word &GLOBAL_OFFSET_TABLE[0] - . addpcrelplus(ctxt, plt, got, 4); // the first .plt entry requires 3 .plt.got entries adduint32(ctxt, got, 0); adduint32(ctxt, got, 0); adduint32(ctxt, got, 0); } } int machoreloc1(Reloc *r, vlong sectoff) { USED(r); USED(sectoff); return -1; } int archreloc(Reloc *r, LSym *s, vlong *val) { LSym *rs; if(linkmode == LinkExternal) { switch(r->type) { case R_CALLARM: r->done = 0; // set up addend for eventual relocation via outer symbol. rs = r->sym; r->xadd = r->add; if(r->xadd & 0x800000) r->xadd |= ~0xffffff; r->xadd *= 4; while(rs->outer != nil) { r->xadd += symaddr(rs) - symaddr(rs->outer); rs = rs->outer; } if(rs->type != SHOSTOBJ && rs->sect == nil) diag("missing section for %s", rs->name); r->xsym = rs; *val = braddoff((0xff000000U & (uint32)r->add), (0xffffff & (uint32)(r->xadd / 4))); return 0; } return -1; } switch(r->type) { case R_CONST: *val = r->add; return 0; case R_GOTOFF: *val = symaddr(r->sym) + r->add - symaddr(linklookup(ctxt, ".got", 0)); return 0; // The following three arch specific relocations are only for generation of // Linux/ARM ELF's PLT entry (3 assembler instruction) case R_PLT0: // add ip, pc, #0xXX00000 if (symaddr(linklookup(ctxt, ".got.plt", 0)) < symaddr(linklookup(ctxt, ".plt", 0))) diag(".got.plt should be placed after .plt section."); *val = 0xe28fc600U + (0xff & ((uint32)(symaddr(r->sym) - (symaddr(linklookup(ctxt, ".plt", 0)) + r->off) + r->add) >> 20)); return 0; case R_PLT1: // add ip, ip, #0xYY000 *val = 0xe28cca00U + (0xff & ((uint32)(symaddr(r->sym) - (symaddr(linklookup(ctxt, ".plt", 0)) + r->off) + r->add + 4) >> 12)); return 0; case R_PLT2: // ldr pc, [ip, #0xZZZ]! *val = 0xe5bcf000U + (0xfff & (uint32)(symaddr(r->sym) - (symaddr(linklookup(ctxt, ".plt", 0)) + r->off) + r->add + 8)); return 0; case R_CALLARM: // bl XXXXXX or b YYYYYY *val = braddoff((0xff000000U & (uint32)r->add), (0xffffff & (uint32) ((symaddr(r->sym) + ((uint32)r->add) * 4 - (s->value + r->off)) / 4))); return 0; } return -1; } static Reloc * addpltreloc(Link *ctxt, LSym *plt, LSym *got, LSym *sym, int typ) { Reloc *r; r = addrel(plt); r->sym = got; r->off = plt->size; r->siz = 4; r->type = typ; r->add = sym->got - 8; plt->reachable = 1; plt->size += 4; symgrow(ctxt, plt, plt->size); return r; } static void addpltsym(Link *ctxt, LSym *s) { LSym *plt, *got, *rel; if(s->plt >= 0) return; adddynsym(ctxt, s); if(iself) { plt = linklookup(ctxt, ".plt", 0); got = linklookup(ctxt, ".got.plt", 0); rel = linklookup(ctxt, ".rel.plt", 0); if(plt->size == 0) elfsetupplt(); // .got entry s->got = got->size; // In theory, all GOT should point to the first PLT entry, // Linux/ARM's dynamic linker will do that for us, but FreeBSD/ARM's // dynamic linker won't, so we'd better do it ourselves. addaddrplus(ctxt, got, plt, 0); // .plt entry, this depends on the .got entry s->plt = plt->size; addpltreloc(ctxt, plt, got, s, R_PLT0); // add lr, pc, #0xXX00000 addpltreloc(ctxt, plt, got, s, R_PLT1); // add lr, lr, #0xYY000 addpltreloc(ctxt, plt, got, s, R_PLT2); // ldr pc, [lr, #0xZZZ]! // rel addaddrplus(ctxt, rel, got, s->got); adduint32(ctxt, rel, ELF32_R_INFO(s->dynid, R_ARM_JUMP_SLOT)); } else { diag("addpltsym: unsupported binary format"); } } static void addgotsyminternal(Link *ctxt, LSym *s) { LSym *got; if(s->got >= 0) return; got = linklookup(ctxt, ".got", 0); s->got = got->size; addaddrplus(ctxt, got, s, 0); if(iself) { ; } else { diag("addgotsyminternal: unsupported binary format"); } } static void addgotsym(Link *ctxt, LSym *s) { LSym *got, *rel; if(s->got >= 0) return; adddynsym(ctxt, s); got = linklookup(ctxt, ".got", 0); s->got = got->size; adduint32(ctxt, got, 0); if(iself) { rel = linklookup(ctxt, ".rel", 0); addaddrplus(ctxt, rel, got, s->got); adduint32(ctxt, rel, ELF32_R_INFO(s->dynid, R_ARM_GLOB_DAT)); } else { diag("addgotsym: unsupported binary format"); } } void adddynsym(Link *ctxt, LSym *s) { LSym *d; int t; char *name; if(s->dynid >= 0) return; if(iself) { s->dynid = nelfsym++; d = linklookup(ctxt, ".dynsym", 0); /* name */ name = s->extname; adduint32(ctxt, d, addstring(linklookup(ctxt, ".dynstr", 0), name)); /* value */ if(s->type == SDYNIMPORT) adduint32(ctxt, d, 0); else addaddr(ctxt, d, s); /* size */ adduint32(ctxt, d, 0); /* type */ t = STB_GLOBAL << 4; if((s->cgoexport & CgoExportDynamic) && (s->type&SMASK) == STEXT) t |= STT_FUNC; else t |= STT_OBJECT; adduint8(ctxt, d, t); adduint8(ctxt, d, 0); /* shndx */ if(s->type == SDYNIMPORT) adduint16(ctxt, d, SHN_UNDEF); else { switch(s->type) { default: case STEXT: t = 11; break; case SRODATA: t = 12; break; case SDATA: t = 13; break; case SBSS: t = 14; break; } adduint16(ctxt, d, t); } } else { diag("adddynsym: unsupported binary format"); } } void adddynlib(char *lib) { LSym *s; if(!needlib(lib)) return; if(iself) { s = linklookup(ctxt, ".dynstr", 0); if(s->size == 0) addstring(s, ""); elfwritedynent(linklookup(ctxt, ".dynamic", 0), DT_NEEDED, addstring(s, lib)); } else { diag("adddynlib: unsupported binary format"); } } void asmb(void) { uint32 symo; Section *sect; LSym *sym; int i; if(debug['v']) Bprint(&bso, "%5.2f asmb\n", cputime()); Bflush(&bso); if(iself) asmbelfsetup(); sect = segtext.sect; cseek(sect->vaddr - segtext.vaddr + segtext.fileoff); codeblk(sect->vaddr, sect->len); for(sect = sect->next; sect != nil; sect = sect->next) { cseek(sect->vaddr - segtext.vaddr + segtext.fileoff); datblk(sect->vaddr, sect->len); } if(segrodata.filelen > 0) { if(debug['v']) Bprint(&bso, "%5.2f rodatblk\n", cputime()); Bflush(&bso); cseek(segrodata.fileoff); datblk(segrodata.vaddr, segrodata.filelen); } if(debug['v']) Bprint(&bso, "%5.2f datblk\n", cputime()); Bflush(&bso); cseek(segdata.fileoff); datblk(segdata.vaddr, segdata.filelen); /* output symbol table */ symsize = 0; lcsize = 0; symo = 0; if(!debug['s']) { // TODO: rationalize if(debug['v']) Bprint(&bso, "%5.2f sym\n", cputime()); Bflush(&bso); switch(HEADTYPE) { default: if(iself) goto ElfSym; case Hplan9: symo = segdata.fileoff+segdata.filelen; break; ElfSym: symo = segdata.fileoff+segdata.filelen; symo = rnd(symo, INITRND); break; } cseek(symo); switch(HEADTYPE) { default: if(iself) { if(debug['v']) Bprint(&bso, "%5.2f elfsym\n", cputime()); asmelfsym(); cflush(); cwrite(elfstrdat, elfstrsize); if(debug['v']) Bprint(&bso, "%5.2f dwarf\n", cputime()); dwarfemitdebugsections(); if(linkmode == LinkExternal) elfemitreloc(); } break; case Hplan9: asmplan9sym(); cflush(); sym = linklookup(ctxt, "pclntab", 0); if(sym != nil) { lcsize = sym->np; for(i=0; i < lcsize; i++) cput(sym->p[i]); cflush(); } break; } } ctxt->cursym = nil; if(debug['v']) Bprint(&bso, "%5.2f header\n", cputime()); Bflush(&bso); cseek(0L); switch(HEADTYPE) { default: case Hplan9: /* plan 9 */ lput(0x647); /* magic */ lput(segtext.filelen); /* sizes */ lput(segdata.filelen); lput(segdata.len - segdata.filelen); lput(symsize); /* nsyms */ lput(entryvalue()); /* va of entry */ lput(0L); lput(lcsize); break; case Hlinux: case Hfreebsd: case Hnetbsd: case Hopenbsd: asmbelf(symo); break; } cflush(); if(debug['c']){ print("textsize=%ulld\n", segtext.filelen); print("datsize=%ulld\n", segdata.filelen); print("bsssize=%ulld\n", segdata.len - segdata.filelen); print("symsize=%d\n", symsize); print("lcsize=%d\n", lcsize); print("total=%lld\n", segtext.filelen+segdata.len+symsize+lcsize); } } /* void cput(int32 c) { *cbp++ = c; if(--cbc <= 0) cflush(); } */ void wput(int32 l) { cbp[0] = l>>8; cbp[1] = l; cbp += 2; cbc -= 2; if(cbc <= 0) cflush(); } void hput(int32 l) { cbp[0] = l>>8; cbp[1] = l; cbp += 2; cbc -= 2; if(cbc <= 0) cflush(); } void lput(int32 l) { cbp[0] = l>>24; cbp[1] = l>>16; cbp[2] = l>>8; cbp[3] = l; cbp += 4; cbc -= 4; if(cbc <= 0) cflush(); } void nopstat(char *f, Count *c) { if(c->outof) Bprint(&bso, "%s delay %d/%d (%.2f)\n", f, c->outof - c->count, c->outof, (double)(c->outof - c->count)/c->outof); } int32 rnd(int32 v, int32 r) { int32 c; if(r <= 0) return v; v += r - 1; c = v % r; if(c < 0) c += r; v -= c; return v; } ����������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5l/doc.go��������������������������������������������������������������������������������0100644�0000000�0000000�00000000464�12412656734�014446� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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 ignore /* 5l is the linker for the ARM. The $GOARCH for these tools is arm. The flags are documented in ../ld/doc.go. */ package main ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5l/l.h�����������������������������������������������������������������������������������0100644�0000000�0000000�00000010141�12412656737�013752� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5l/l.h // http://code.google.com/p/inferno-os/source/browse/utils/5l/l.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include #include #include "5.out.h" enum { thechar = '5', PtrSize = 4, IntSize = 4, RegSize = 4, MaxAlign = 8, // max data alignment FuncAlign = 4 // single-instruction alignment }; #ifndef EXTERN #define EXTERN extern #endif /* do not undefine this - code will be removed eventually */ #define CALLEEBX #define dynptrsize 0 #define P ((Prog*)0) #define S ((LSym*)0) #define TNAME (ctxt->cursym?ctxt->cursym->name:noname) #define SIGNINTERN (1729*325*1729) typedef struct Count Count; struct Count { int32 count; int32 outof; }; enum { /* mark flags */ FOLL = 1<<0, LABEL = 1<<1, LEAF = 1<<2, STRINGSZ = 200, MINSIZ = 64, NENT = 100, MAXIO = 8192, MAXHIST = 40, /* limit of path elements for history symbols */ MINLC = 4, C_NONE = 0, C_REG, C_REGREG, C_REGREG2, C_SHIFT, C_FREG, C_PSR, C_FCR, C_RCON, /* 0xff rotated */ C_NCON, /* ~RCON */ C_SCON, /* 0xffff */ C_LCON, C_LCONADDR, C_ZFCON, C_SFCON, C_LFCON, C_RACON, C_LACON, C_SBRA, C_LBRA, C_HAUTO, /* halfword insn offset (-0xff to 0xff) */ C_FAUTO, /* float insn offset (0 to 0x3fc, word aligned) */ C_HFAUTO, /* both H and F */ C_SAUTO, /* -0xfff to 0xfff */ C_LAUTO, C_HOREG, C_FOREG, C_HFOREG, C_SOREG, C_ROREG, C_SROREG, /* both nil and R */ C_LOREG, C_PC, C_SP, C_HREG, C_ADDR, /* reference to relocatable address */ C_GOK, }; #ifndef COFFCVT EXTERN int32 autosize; EXTERN LSym* datap; EXTERN int debug[128]; EXTERN char* noname; EXTERN Prog* lastp; EXTERN int32 lcsize; EXTERN char literal[32]; EXTERN int nerrors; EXTERN int32 instoffset; EXTERN char* rpath; EXTERN uint32 stroffset; EXTERN int32 symsize; EXTERN int armsize; #pragma varargck type "I" uint32* int Iconv(Fmt *fp); void adddynlib(char *lib); void adddynrel(LSym *s, Reloc *r); void adddynrela(LSym *rel, LSym *s, Reloc *r); void adddynsym(Link *ctxt, LSym *s); int archreloc(Reloc *r, LSym *s, vlong *val); void asmb(void); void cput(int32 c); int elfreloc1(Reloc *r, vlong sectoff); void elfsetupplt(void); void hput(int32 l); void listinit(void); void lput(int32 l); int machoreloc1(Reloc *r, vlong sectoff); void main(int argc, char *argv[]); void noops(void); void nopstat(char *f, Count *c); int32 rnd(int32 v, int32 r); void wput(int32 l); /* Native is little-endian */ #define LPUT(a) lputl(a) #define WPUT(a) wputl(a) #define VPUT(a) abort() #endif /* Used by ../ld/dwarf.c */ enum { DWARFREGSP = 13 }; �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5l/list.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000004402�12412656734�014465� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5l/list.h // http://code.google.com/p/inferno-os/source/browse/utils/5l/list.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Printing. #include "l.h" #include "../ld/lib.h" void listinit(void) { listinit5(); fmtinstall('I', Iconv); } int Iconv(Fmt *fp) { int i, n; uint32 *p; char *s; Fmt fmt; n = fp->prec; fp->prec = 0; if(!(fp->flags&FmtPrec) || n < 0) return fmtstrcpy(fp, "%I"); fp->flags &= ~FmtPrec; p = va_arg(fp->args, uint32*); // format into temporary buffer and // call fmtstrcpy to handle padding. fmtstrinit(&fmt); for(i=0; i 0) fmtprint(&fmt, " "); fmtprint(&fmt, "%.8ux", *p++); } s = fmtstrflush(&fmt); fmtstrcpy(fp, s); free(s); return 0; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5l/mkenam��������������������������������������������������������������������������������0100644�0000000�0000000�00000003515�12412656737�014550� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Inferno utils/5c/mkenam # http://code.google.com/p/inferno-os/source/browse/utils/5c/mkenam # # Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. # Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) # Portions Copyright © 1997-1999 Vita Nuova Limited # Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) # Portions Copyright © 2004,2006 Bruce Ellis # Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) # Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others # Portions Copyright © 2009 The Go Authors. All rights reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. awk ' BEGIN { print "char* anames[] =" print "{" } /^ A/ { name=$1 sub(/,/, "", name) sub(/^A/, "", name) print "\t\"" name "\"," } END { print "};" } ' ../5l/5.out.h >enam.c �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5l/noop.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000003550�12412656737�014473� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5l/noop.c // http://code.google.com/p/inferno-os/source/browse/utils/5l/noop.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Code transformations. #include "l.h" #include "../ld/lib.h" void noops(void) { LSym *s; for(s = ctxt->textp; s != nil; s = s->next) ctxt->arch->addstacksplit(ctxt, s); } ��������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/5l/obj.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000006230�12412656737�014270� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/5l/obj.c // http://code.google.com/p/inferno-os/source/browse/utils/5l/obj.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Reading object files. #include "l.h" #include "../ld/lib.h" #include "../ld/elf.h" #include "../ld/dwarf.h" #include char *thestring = "arm"; LinkArch *thelinkarch = &linkarm; void linkarchinit(void) { } void archinit(void) { LSym *s; // getgoextlinkenabled is based on GO_EXTLINK_ENABLED when // Go was built; see ../../make.bash. if(linkmode == LinkAuto && strcmp(getgoextlinkenabled(), "0") == 0) linkmode = LinkInternal; switch(HEADTYPE) { default: if(linkmode == LinkAuto) linkmode = LinkInternal; if(linkmode == LinkExternal && strcmp(getgoextlinkenabled(), "1") != 0) sysfatal("cannot use -linkmode=external with -H %s", headstr(HEADTYPE)); break; case Hlinux: case Hfreebsd: break; } switch(HEADTYPE) { default: diag("unknown -H option"); errorexit(); case Hplan9: /* plan 9 */ HEADR = 32L; if(INITTEXT == -1) INITTEXT = 4128; if(INITDAT == -1) INITDAT = 0; if(INITRND == -1) INITRND = 4096; break; case Hlinux: /* arm elf */ case Hfreebsd: case Hnetbsd: case Hnacl: debug['d'] = 0; // with dynamic linking elfinit(); HEADR = ELFRESERVE; if(INITTEXT == -1) INITTEXT = 0x10000 + HEADR; if(INITDAT == -1) INITDAT = 0; if(INITRND == -1) INITRND = 4096; break; } if(INITDAT != 0 && INITRND != 0) print("warning: -D0x%ux is ignored because of -R0x%ux\n", INITDAT, INITRND); // embed goarm to runtime.goarm s = linklookup(ctxt, "runtime.goarm", 0); s->type = SRODATA; adduint8(ctxt, s, ctxt->goarm); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6a���������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013263� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6a/Makefile������������������������������������������������������������������������������0100644�0000000�0000000�00000000405�12412656734�014773� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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. include ../../Make.dist install: y.tab.h y.tab.h: a.y LANG=C LANGUAGE=en_US.UTF8 bison -d -v -y a.y �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6a/a.h�����������������������������������������������������������������������������������0100644�0000000�0000000�00000010055�12412656734�013726� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6a/a.h // http://code.google.com/p/inferno-os/source/browse/utils/6a/a.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "../6l/6.out.h" #ifndef EXTERN #define EXTERN extern #endif #undef getc #undef ungetc #undef BUFSIZ #define getc ccgetc #define ungetc ccungetc typedef struct Sym Sym; typedef struct Ref Ref; typedef struct Io Io; typedef struct Addr2 Addr2; #define MAXALIGN 7 #define FPCHIP 1 #define NSYMB 500 #define BUFSIZ 8192 #define HISTSZ 20 #ifndef EOF #define EOF (-1) #endif #define IGN (-2) #define GETC() ((--fi.c < 0)? filbuf(): *fi.p++ & 0xff) #define NHASH 503 #define STRINGSZ 200 #define NMACRO 10 struct Sym { Sym* link; Ref* ref; char* macro; vlong value; ushort type; char *name; char sym; }; #define S ((Sym*)0) struct Ref { int class; }; EXTERN struct { char* p; int c; } fi; struct Io { Io* link; char b[BUFSIZ]; char* p; short c; short f; }; #define I ((Io*)0) struct Addr2 { Addr from; Addr to; }; enum { CLAST, CMACARG, CMACRO, CPREPROC, }; EXTERN int debug[256]; EXTERN Sym* hash[NHASH]; EXTERN char** Dlist; EXTERN int nDlist; EXTERN int newflag; EXTERN char* hunk; EXTERN char** include; EXTERN Io* iofree; EXTERN Io* ionext; EXTERN Io* iostack; EXTERN int32 lineno; EXTERN int nerrors; EXTERN int32 nhunk; EXTERN int ninclude; EXTERN int32 nsymb; EXTERN Addr nullgen; EXTERN char* outfile; EXTERN int pass; EXTERN int32 pc; EXTERN int peekc; EXTERN int32 stmtline; EXTERN int sym; EXTERN char* symb; EXTERN int thechar; EXTERN char* thestring; EXTERN int32 thunk; EXTERN Biobuf obuf; EXTERN Link* ctxt; EXTERN Biobuf bstdout; void* alloc(int32); void* allocn(void*, int32, int32); void ensuresymb(int32); void errorexit(void); void pushio(void); void newio(void); void newfile(char*, int); Sym* slookup(char*); Sym* lookup(void); void syminit(Sym*); int32 yylex(void); int getc(void); int getnsc(void); void unget(int); int escchar(int); void cinit(void); void checkscale(int); void pinit(char*); void cclean(void); int isreg(Addr*); void outcode(int, Addr2*); void outhist(void); void zaddr(Addr*, int); void zname(char*, int, int); int filbuf(void); Sym* getsym(void); void domacro(void); void macund(void); void macdef(void); void macexpand(Sym*, char*); void macinc(void); void macprag(void); void maclin(void); void macif(int); void macend(void); void dodefine(char*); void prfile(int32); void linehist(char*, int); void gethunk(void); void yyerror(char*, ...); int yyparse(void); void setinclude(char*); int assemble(char*); �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6a/a.y�����������������������������������������������������������������������������������0100644�0000000�0000000�00000024505�12412656737�013757� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6a/a.y // http://code.google.com/p/inferno-os/source/browse/utils/6a/a.y // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. %{ #include #include /* if we don't, bison will, and a.h re-#defines getc */ #include #include "a.h" #include "../../pkg/runtime/funcdata.h" %} %union { Sym *sym; vlong lval; double dval; char sval[8]; Addr addr; Addr2 addr2; } %left '|' %left '^' %left '&' %left '<' '>' %left '+' '-' %left '*' '/' '%' %token LTYPE0 LTYPE1 LTYPE2 LTYPE3 LTYPE4 %token LTYPEC LTYPED LTYPEN LTYPER LTYPET LTYPEG LTYPEPC %token LTYPES LTYPEM LTYPEI LTYPEXC LTYPEX LTYPERT LTYPEF %token LCONST LFP LPC LSB %token LBREG LLREG LSREG LFREG LMREG LXREG %token LFCONST %token LSCONST LSP %token LNAME LLAB LVAR %type con con2 expr pointer offset %type mem imm imm2 reg nam rel rem rim rom omem nmem %type nonnon nonrel nonrem rimnon rimrem remrim %type spec1 spec2 spec3 spec4 spec5 spec6 spec7 spec8 spec9 %type spec10 spec11 spec12 spec13 %% prog: | prog { stmtline = lineno; } line line: LLAB ':' { if($1->value != pc) yyerror("redeclaration of %s", $1->name); $1->value = pc; } line | LNAME ':' { $1->type = LLAB; $1->value = pc; } line | ';' | inst ';' | error ';' inst: LNAME '=' expr { $1->type = LVAR; $1->value = $3; } | LVAR '=' expr { if($1->value != $3) yyerror("redeclaration of %s", $1->name); $1->value = $3; } | LTYPE0 nonnon { outcode($1, &$2); } | LTYPE1 nonrem { outcode($1, &$2); } | LTYPE2 rimnon { outcode($1, &$2); } | LTYPE3 rimrem { outcode($1, &$2); } | LTYPE4 remrim { outcode($1, &$2); } | LTYPER nonrel { outcode($1, &$2); } | LTYPED spec1 { outcode($1, &$2); } | LTYPET spec2 { outcode($1, &$2); } | LTYPEC spec3 { outcode($1, &$2); } | LTYPEN spec4 { outcode($1, &$2); } | LTYPES spec5 { outcode($1, &$2); } | LTYPEM spec6 { outcode($1, &$2); } | LTYPEI spec7 { outcode($1, &$2); } | LTYPEXC spec8 { outcode($1, &$2); } | LTYPEX spec9 { outcode($1, &$2); } | LTYPERT spec10 { outcode($1, &$2); } | LTYPEG spec11 { outcode($1, &$2); } | LTYPEPC spec12 { outcode($1, &$2); } | LTYPEF spec13 { outcode($1, &$2); } nonnon: { $$.from = nullgen; $$.to = nullgen; } | ',' { $$.from = nullgen; $$.to = nullgen; } rimrem: rim ',' rem { $$.from = $1; $$.to = $3; } remrim: rem ',' rim { $$.from = $1; $$.to = $3; } rimnon: rim ',' { $$.from = $1; $$.to = nullgen; } | rim { $$.from = $1; $$.to = nullgen; } nonrem: ',' rem { $$.from = nullgen; $$.to = $2; } | rem { $$.from = nullgen; $$.to = $1; } nonrel: ',' rel { $$.from = nullgen; $$.to = $2; } | rel { $$.from = nullgen; $$.to = $1; } | imm ',' rel { $$.from = $1; $$.to = $3; } spec1: /* DATA */ nam '/' con ',' imm { $$.from = $1; $$.from.scale = $3; $$.to = $5; } spec2: /* TEXT */ mem ',' imm2 { $$.from = $1; $$.to = $3; } | mem ',' con ',' imm2 { $$.from = $1; $$.from.scale = $3; $$.to = $5; } spec3: /* JMP/CALL */ ',' rom { $$.from = nullgen; $$.to = $2; } | rom { $$.from = nullgen; $$.to = $1; } spec4: /* NOP */ nonnon | nonrem spec5: /* SHL/SHR */ rim ',' rem { $$.from = $1; $$.to = $3; } | rim ',' rem ':' LLREG { $$.from = $1; $$.to = $3; if($$.from.index != D_NONE) yyerror("dp shift with lhs index"); $$.from.index = $5; } spec6: /* MOVW/MOVL */ rim ',' rem { $$.from = $1; $$.to = $3; } | rim ',' rem ':' LSREG { $$.from = $1; $$.to = $3; if($$.to.index != D_NONE) yyerror("dp move with lhs index"); $$.to.index = $5; } spec7: rim ',' { $$.from = $1; $$.to = nullgen; } | rim { $$.from = $1; $$.to = nullgen; } | rim ',' rem { $$.from = $1; $$.to = $3; } spec8: /* CMPPS/CMPPD */ reg ',' rem ',' con { $$.from = $1; $$.to = $3; $$.to.offset = $5; } spec9: /* shufl */ imm ',' rem ',' reg { $$.from = $3; $$.to = $5; if($1.type != D_CONST) yyerror("illegal constant"); $$.to.offset = $1.offset; } spec10: /* RET/RETF */ { $$.from = nullgen; $$.to = nullgen; } | imm { $$.from = $1; $$.to = nullgen; } spec11: /* GLOBL */ mem ',' imm { $$.from = $1; $$.to = $3; } | mem ',' con ',' imm { $$.from = $1; $$.from.scale = $3; $$.to = $5; } spec12: /* PCDATA */ rim ',' rim { if($1.type != D_CONST || $3.type != D_CONST) yyerror("arguments to PCDATA must be integer constants"); $$.from = $1; $$.to = $3; } spec13: /* FUNCDATA */ rim ',' rim { if($1.type != D_CONST) yyerror("index for FUNCDATA must be integer constant"); if($3.type != D_EXTERN && $3.type != D_STATIC) yyerror("value for FUNCDATA must be symbol reference"); $$.from = $1; $$.to = $3; } rem: reg | mem rom: rel | nmem | '*' reg { $$ = $2; } | '*' omem { $$ = $2; } | reg | omem rim: rem | imm rel: con '(' LPC ')' { $$ = nullgen; $$.type = D_BRANCH; $$.offset = $1 + pc; } | LNAME offset { $$ = nullgen; if(pass == 2) yyerror("undefined label: %s", $1->name); $$.type = D_BRANCH; $$.offset = $2; } | LLAB offset { $$ = nullgen; $$.type = D_BRANCH; $$.offset = $1->value + $2; } reg: LBREG { $$ = nullgen; $$.type = $1; } | LFREG { $$ = nullgen; $$.type = $1; } | LLREG { $$ = nullgen; $$.type = $1; } | LMREG { $$ = nullgen; $$.type = $1; } | LSP { $$ = nullgen; $$.type = D_SP; } | LSREG { $$ = nullgen; $$.type = $1; } | LXREG { $$ = nullgen; $$.type = $1; } imm2: '$' con2 { $$ = nullgen; $$.type = D_CONST; $$.offset = $2; } imm: '$' con { $$ = nullgen; $$.type = D_CONST; $$.offset = $2; } | '$' nam { $$ = $2; $$.index = $2.type; $$.type = D_ADDR; /* if($2.type == D_AUTO || $2.type == D_PARAM) yyerror("constant cannot be automatic: %s", $2.sym->name); */ } | '$' LSCONST { $$ = nullgen; $$.type = D_SCONST; memcpy($$.u.sval, $2, sizeof($$.u.sval)); } | '$' LFCONST { $$ = nullgen; $$.type = D_FCONST; $$.u.dval = $2; } | '$' '(' LFCONST ')' { $$ = nullgen; $$.type = D_FCONST; $$.u.dval = $3; } | '$' '(' '-' LFCONST ')' { $$ = nullgen; $$.type = D_FCONST; $$.u.dval = -$4; } | '$' '-' LFCONST { $$ = nullgen; $$.type = D_FCONST; $$.u.dval = -$3; } mem: omem | nmem omem: con { $$ = nullgen; $$.type = D_INDIR+D_NONE; $$.offset = $1; } | con '(' LLREG ')' { $$ = nullgen; $$.type = D_INDIR+$3; $$.offset = $1; } | con '(' LSP ')' { $$ = nullgen; $$.type = D_INDIR+D_SP; $$.offset = $1; } | con '(' LSREG ')' { $$ = nullgen; $$.type = D_INDIR+$3; $$.offset = $1; } | con '(' LLREG '*' con ')' { $$ = nullgen; $$.type = D_INDIR+D_NONE; $$.offset = $1; $$.index = $3; $$.scale = $5; checkscale($$.scale); } | con '(' LLREG ')' '(' LLREG '*' con ')' { $$ = nullgen; $$.type = D_INDIR+$3; $$.offset = $1; $$.index = $6; $$.scale = $8; checkscale($$.scale); } | con '(' LLREG ')' '(' LSREG '*' con ')' { $$ = nullgen; $$.type = D_INDIR+$3; $$.offset = $1; $$.index = $6; $$.scale = $8; checkscale($$.scale); } | '(' LLREG ')' { $$ = nullgen; $$.type = D_INDIR+$2; } | '(' LSP ')' { $$ = nullgen; $$.type = D_INDIR+D_SP; } | '(' LLREG '*' con ')' { $$ = nullgen; $$.type = D_INDIR+D_NONE; $$.index = $2; $$.scale = $4; checkscale($$.scale); } | '(' LLREG ')' '(' LLREG '*' con ')' { $$ = nullgen; $$.type = D_INDIR+$2; $$.index = $5; $$.scale = $7; checkscale($$.scale); } nmem: nam { $$ = $1; } | nam '(' LLREG '*' con ')' { $$ = $1; $$.index = $3; $$.scale = $5; checkscale($$.scale); } nam: LNAME offset '(' pointer ')' { $$ = nullgen; $$.type = $4; $$.sym = linklookup(ctxt, $1->name, 0); $$.offset = $2; } | LNAME '<' '>' offset '(' LSB ')' { $$ = nullgen; $$.type = D_STATIC; $$.sym = linklookup(ctxt, $1->name, 1); $$.offset = $4; } offset: { $$ = 0; } | '+' con { $$ = $2; } | '-' con { $$ = -$2; } pointer: LSB | LSP { $$ = D_AUTO; } | LFP con: LCONST | LVAR { $$ = $1->value; } | '-' con { $$ = -$2; } | '+' con { $$ = $2; } | '~' con { $$ = ~$2; } | '(' expr ')' { $$ = $2; } con2: LCONST { $$ = ($1 & 0xffffffffLL) + ((vlong)ArgsSizeUnknown << 32); } | '-' LCONST { $$ = (-$2 & 0xffffffffLL) + ((vlong)ArgsSizeUnknown << 32); } | LCONST '-' LCONST { $$ = ($1 & 0xffffffffLL) + (($3 & 0xffffLL) << 32); } | '-' LCONST '-' LCONST { $$ = (-$2 & 0xffffffffLL) + (($4 & 0xffffLL) << 32); } expr: con | expr '+' expr { $$ = $1 + $3; } | expr '-' expr { $$ = $1 - $3; } | expr '*' expr { $$ = $1 * $3; } | expr '/' expr { $$ = $1 / $3; } | expr '%' expr { $$ = $1 % $3; } | expr '<' '<' expr { $$ = $1 << $4; } | expr '>' '>' expr { $$ = $1 >> $4; } | expr '&' expr { $$ = $1 & $3; } | expr '^' expr { $$ = $1 ^ $3; } | expr '|' expr { $$ = $1 | $3; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6a/doc.go��������������������������������������������������������������������������������0100644�0000000�0000000�00000000727�12412656734�014436� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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 ignore /* 6a is a version of the Plan 9 assembler. The original is documented at http://plan9.bell-labs.com/magic/man2html/1/8a Go-specific considerations are documented at http://golang.org/doc/asm Its target architecture is the x86-64, referred to by these tools as amd64. */ package main �����������������������������������������go/src/cmd/6a/lex.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000067275�12412656737�014314� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6a/lex.c // http://code.google.com/p/inferno-os/source/browse/utils/6a/lex.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #define EXTERN #include #include #include "a.h" #include "y.tab.h" enum { Plan9 = 1<<0, Unix = 1<<1, Windows = 1<<2, }; int systemtype(int sys) { #ifdef _WIN32 return sys&Windows; #else return sys&Plan9; #endif } int pathchar(void) { return '/'; } int Lconv(Fmt *fp) { return linklinefmt(ctxt, fp); } void dodef(char *p) { if(nDlist%8 == 0) Dlist = allocn(Dlist, nDlist*sizeof(char *), 8*sizeof(char *)); Dlist[nDlist++] = p; } LinkArch* thelinkarch = &linkamd64; void usage(void) { print("usage: %ca [options] file.c...\n", thechar); flagprint(1); errorexit(); } void main(int argc, char *argv[]) { char *p; thechar = '6'; thestring = "amd64"; // Allow GOARCH=thestring or GOARCH=thestringsuffix, // but not other values. p = getgoarch(); if(strncmp(p, thestring, strlen(thestring)) != 0) sysfatal("cannot use %cc with GOARCH=%s", thechar, p); if(strcmp(p, "amd64p32") == 0) thelinkarch = &linkamd64p32; ctxt = linknew(thelinkarch); ctxt->diag = yyerror; ctxt->bso = &bstdout; Binit(&bstdout, 1, OWRITE); listinit6(); fmtinstall('L', Lconv); ensuresymb(NSYMB); memset(debug, 0, sizeof(debug)); cinit(); outfile = 0; setinclude("."); flagfn1("D", "name[=value]: add #define", dodef); flagfn1("I", "dir: add dir to include path", setinclude); flagcount("S", "print assembly and machine code", &debug['S']); flagcount("m", "debug preprocessor macros", &debug['m']); flagstr("o", "file: set output file", &outfile); flagstr("trimpath", "prefix: remove prefix from recorded source file paths", &ctxt->trimpath); flagparse(&argc, &argv, usage); ctxt->debugasm = debug['S']; if(argc < 1) usage(); if(argc > 1){ print("can't assemble multiple files\n"); errorexit(); } if(assemble(argv[0])) errorexit(); Bflush(&bstdout); exits(0); } int assemble(char *file) { char *ofile, *p; int i, of; ofile = alloc(strlen(file)+3); // +3 for .x\0 (x=thechar) strcpy(ofile, file); p = utfrrune(ofile, pathchar()); if(p) { include[0] = ofile; *p++ = 0; } else p = ofile; if(outfile == 0) { outfile = p; if(outfile){ p = utfrrune(outfile, '.'); if(p) if(p[1] == 's' && p[2] == 0) p[0] = 0; p = utfrune(outfile, 0); p[0] = '.'; p[1] = thechar; p[2] = 0; } else outfile = "/dev/null"; } of = create(outfile, OWRITE, 0664); if(of < 0) { yyerror("%ca: cannot create %s", thechar, outfile); errorexit(); } Binit(&obuf, of, OWRITE); Bprint(&obuf, "go object %s %s %s\n", getgoos(), getgoarch(), getgoversion()); Bprint(&obuf, "!\n"); for(pass = 1; pass <= 2; pass++) { pinit(file); for(i=0; itype != LNAME) yyerror("double initialization %s", itab[i].name); s->type = itab[i].type; s->value = itab[i].value; } } void checkscale(int scale) { switch(scale) { case 1: case 2: case 4: case 8: return; } yyerror("scale must be 1248: %d", scale); } void syminit(Sym *s) { s->type = LNAME; s->value = 0; } void cclean(void) { Addr2 g2; g2.from = nullgen; g2.to = nullgen; outcode(AEND, &g2); } static Prog *lastpc; void outcode(int a, Addr2 *g2) { Prog *p; Plist *pl; if(pass == 1) goto out; p = malloc(sizeof *p); memset(p, 0, sizeof *p); p->as = a; p->lineno = stmtline; p->from = g2->from; p->to = g2->to; p->pc = pc; if(lastpc == nil) { pl = linknewplist(ctxt); pl->firstpc = p; } else lastpc->link = p; lastpc = p; out: if(a != AGLOBL && a != ADATA) pc++; } #include "../cc/lexbody" #include "../cc/macbody" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6a/y.tab.c�������������������������������������������������������������������������������0100644�0000000�0000000�00000236361�12412656737�014533� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Using locations. */ #define YYLSP_NEEDED 0 /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { LTYPE0 = 258, LTYPE1 = 259, LTYPE2 = 260, LTYPE3 = 261, LTYPE4 = 262, LTYPEC = 263, LTYPED = 264, LTYPEN = 265, LTYPER = 266, LTYPET = 267, LTYPEG = 268, LTYPEPC = 269, LTYPES = 270, LTYPEM = 271, LTYPEI = 272, LTYPEXC = 273, LTYPEX = 274, LTYPERT = 275, LTYPEF = 276, LCONST = 277, LFP = 278, LPC = 279, LSB = 280, LBREG = 281, LLREG = 282, LSREG = 283, LFREG = 284, LMREG = 285, LXREG = 286, LFCONST = 287, LSCONST = 288, LSP = 289, LNAME = 290, LLAB = 291, LVAR = 292 }; #endif /* Tokens. */ #define LTYPE0 258 #define LTYPE1 259 #define LTYPE2 260 #define LTYPE3 261 #define LTYPE4 262 #define LTYPEC 263 #define LTYPED 264 #define LTYPEN 265 #define LTYPER 266 #define LTYPET 267 #define LTYPEG 268 #define LTYPEPC 269 #define LTYPES 270 #define LTYPEM 271 #define LTYPEI 272 #define LTYPEXC 273 #define LTYPEX 274 #define LTYPERT 275 #define LTYPEF 276 #define LCONST 277 #define LFP 278 #define LPC 279 #define LSB 280 #define LBREG 281 #define LLREG 282 #define LSREG 283 #define LFREG 284 #define LMREG 285 #define LXREG 286 #define LFCONST 287 #define LSCONST 288 #define LSP 289 #define LNAME 290 #define LLAB 291 #define LVAR 292 /* Copy the first part of user declarations. */ #line 31 "a.y" #include #include /* if we don't, bison will, and a.h re-#defines getc */ #include #include "a.h" #include "../../pkg/runtime/funcdata.h" /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 0 #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 38 "a.y" { Sym *sym; vlong lval; double dval; char sval[8]; Addr addr; Addr2 addr2; } /* Line 193 of yacc.c. */ #line 187 "y.tab.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif /* Copy the second part of user declarations. */ /* Line 216 of yacc.c. */ #line 200 "y.tab.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int i) #else static int YYID (i) int i; #endif { return i; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss; YYSTYPE yyvs; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack, Stack, yysize); \ Stack = &yyptr->Stack; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 560 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 56 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 42 /* YYNRULES -- Number of rules. */ #define YYNRULES 137 /* YYNRULES -- Number of states. */ #define YYNSTATES 277 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 292 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 54, 12, 5, 2, 52, 53, 10, 8, 51, 9, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 48, 49, 6, 50, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 55, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 4, 5, 9, 10, 15, 16, 21, 23, 26, 29, 33, 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 82, 85, 88, 91, 94, 95, 97, 101, 105, 108, 110, 113, 115, 118, 120, 124, 130, 134, 140, 143, 145, 147, 149, 153, 159, 163, 169, 172, 174, 178, 184, 190, 191, 193, 197, 203, 207, 211, 213, 215, 217, 219, 222, 225, 227, 229, 231, 233, 238, 241, 244, 246, 248, 250, 252, 254, 256, 258, 261, 264, 267, 270, 273, 278, 284, 288, 290, 292, 294, 299, 304, 309, 316, 326, 336, 340, 344, 350, 359, 361, 368, 374, 382, 383, 386, 389, 391, 393, 395, 397, 399, 402, 405, 408, 412, 414, 417, 421, 426, 428, 432, 436, 440, 444, 448, 453, 458, 462, 466 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { 57, 0, -1, -1, -1, 57, 58, 59, -1, -1, 46, 48, 60, 59, -1, -1, 45, 48, 61, 59, -1, 49, -1, 62, 49, -1, 1, 49, -1, 45, 50, 97, -1, 47, 50, 97, -1, 13, 63, -1, 14, 67, -1, 15, 66, -1, 16, 64, -1, 17, 65, -1, 21, 68, -1, 19, 69, -1, 22, 70, -1, 18, 71, -1, 20, 72, -1, 25, 73, -1, 26, 74, -1, 27, 75, -1, 28, 76, -1, 29, 77, -1, 30, 78, -1, 23, 79, -1, 24, 80, -1, 31, 81, -1, -1, 51, -1, 84, 51, 82, -1, 82, 51, 84, -1, 84, 51, -1, 84, -1, 51, 82, -1, 82, -1, 51, 85, -1, 85, -1, 88, 51, 85, -1, 92, 11, 95, 51, 88, -1, 89, 51, 87, -1, 89, 51, 95, 51, 87, -1, 51, 83, -1, 83, -1, 63, -1, 67, -1, 84, 51, 82, -1, 84, 51, 82, 48, 37, -1, 84, 51, 82, -1, 84, 51, 82, 48, 38, -1, 84, 51, -1, 84, -1, 84, 51, 82, -1, 86, 51, 82, 51, 95, -1, 88, 51, 82, 51, 86, -1, -1, 88, -1, 89, 51, 88, -1, 89, 51, 95, 51, 88, -1, 84, 51, 84, -1, 84, 51, 84, -1, 86, -1, 89, -1, 85, -1, 91, -1, 10, 86, -1, 10, 90, -1, 86, -1, 90, -1, 82, -1, 88, -1, 95, 52, 34, 53, -1, 45, 93, -1, 46, 93, -1, 36, -1, 39, -1, 37, -1, 40, -1, 44, -1, 38, -1, 41, -1, 54, 96, -1, 54, 95, -1, 54, 92, -1, 54, 43, -1, 54, 42, -1, 54, 52, 42, 53, -1, 54, 52, 9, 42, 53, -1, 54, 9, 42, -1, 90, -1, 91, -1, 95, -1, 95, 52, 37, 53, -1, 95, 52, 44, 53, -1, 95, 52, 38, 53, -1, 95, 52, 37, 10, 95, 53, -1, 95, 52, 37, 53, 52, 37, 10, 95, 53, -1, 95, 52, 37, 53, 52, 38, 10, 95, 53, -1, 52, 37, 53, -1, 52, 44, 53, -1, 52, 37, 10, 95, 53, -1, 52, 37, 53, 52, 37, 10, 95, 53, -1, 92, -1, 92, 52, 37, 10, 95, 53, -1, 45, 93, 52, 94, 53, -1, 45, 6, 7, 93, 52, 35, 53, -1, -1, 8, 95, -1, 9, 95, -1, 35, -1, 44, -1, 33, -1, 32, -1, 47, -1, 9, 95, -1, 8, 95, -1, 55, 95, -1, 52, 97, 53, -1, 32, -1, 9, 32, -1, 32, 9, 32, -1, 9, 32, 9, 32, -1, 95, -1, 97, 8, 97, -1, 97, 9, 97, -1, 97, 10, 97, -1, 97, 11, 97, -1, 97, 12, 97, -1, 97, 6, 6, 97, -1, 97, 7, 7, 97, -1, 97, 5, 97, -1, 97, 4, 97, -1, 97, 3, 97, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 66, 66, 68, 67, 75, 74, 82, 81, 87, 88, 89, 92, 97, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 124, 128, 135, 142, 149, 154, 161, 166, 173, 178, 183, 190, 198, 203, 211, 216, 223, 224, 227, 232, 242, 247, 257, 262, 267, 274, 282, 292, 296, 303, 308, 316, 325, 336, 337, 340, 341, 342, 346, 350, 351, 354, 355, 358, 364, 372, 380, 385, 390, 395, 400, 405, 410, 416, 424, 430, 441, 447, 453, 459, 465, 473, 474, 477, 483, 489, 495, 501, 510, 519, 528, 533, 538, 546, 556, 560, 569, 576, 585, 588, 592, 598, 599, 603, 606, 607, 611, 615, 619, 623, 629, 634, 639, 644, 651, 652, 656, 660, 664, 668, 672, 676, 680, 684, 688 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "'|'", "'^'", "'&'", "'<'", "'>'", "'+'", "'-'", "'*'", "'/'", "'%'", "LTYPE0", "LTYPE1", "LTYPE2", "LTYPE3", "LTYPE4", "LTYPEC", "LTYPED", "LTYPEN", "LTYPER", "LTYPET", "LTYPEG", "LTYPEPC", "LTYPES", "LTYPEM", "LTYPEI", "LTYPEXC", "LTYPEX", "LTYPERT", "LTYPEF", "LCONST", "LFP", "LPC", "LSB", "LBREG", "LLREG", "LSREG", "LFREG", "LMREG", "LXREG", "LFCONST", "LSCONST", "LSP", "LNAME", "LLAB", "LVAR", "':'", "';'", "'='", "','", "'('", "')'", "'$'", "'~'", "$accept", "prog", "@1", "line", "@2", "@3", "inst", "nonnon", "rimrem", "remrim", "rimnon", "nonrem", "nonrel", "spec1", "spec2", "spec3", "spec4", "spec5", "spec6", "spec7", "spec8", "spec9", "spec10", "spec11", "spec12", "spec13", "rem", "rom", "rim", "rel", "reg", "imm2", "imm", "mem", "omem", "nmem", "nam", "offset", "pointer", "con", "con2", "expr", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 124, 94, 38, 60, 62, 43, 45, 42, 47, 37, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 58, 59, 61, 44, 40, 41, 36, 126 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 56, 57, 58, 57, 60, 59, 61, 59, 59, 59, 59, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 64, 65, 66, 66, 67, 67, 68, 68, 68, 69, 70, 70, 71, 71, 72, 72, 73, 73, 74, 74, 75, 75, 75, 76, 77, 78, 78, 79, 79, 80, 81, 82, 82, 83, 83, 83, 83, 83, 83, 84, 84, 85, 85, 85, 86, 86, 86, 86, 86, 86, 86, 87, 88, 88, 88, 88, 88, 88, 88, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 91, 91, 92, 92, 93, 93, 93, 94, 94, 94, 95, 95, 95, 95, 95, 95, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 0, 3, 0, 4, 0, 4, 1, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 3, 3, 2, 1, 2, 1, 2, 1, 3, 5, 3, 5, 2, 1, 1, 1, 3, 5, 3, 5, 2, 1, 3, 5, 5, 0, 1, 3, 5, 3, 3, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 4, 5, 3, 1, 1, 1, 4, 4, 4, 6, 9, 9, 3, 3, 5, 8, 1, 6, 5, 7, 0, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 3, 1, 2, 3, 4, 1, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 2, 3, 1, 0, 0, 33, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 9, 4, 0, 11, 34, 14, 0, 0, 117, 79, 81, 84, 80, 82, 85, 83, 111, 118, 0, 0, 0, 15, 40, 66, 67, 94, 95, 107, 96, 0, 16, 74, 38, 75, 17, 0, 18, 0, 0, 111, 111, 0, 22, 48, 68, 72, 73, 69, 96, 20, 0, 34, 49, 50, 23, 111, 0, 0, 19, 42, 0, 0, 21, 0, 30, 0, 31, 0, 24, 0, 25, 0, 26, 56, 27, 0, 28, 0, 29, 61, 32, 0, 7, 0, 5, 0, 10, 120, 119, 0, 0, 0, 0, 39, 0, 0, 127, 0, 121, 0, 0, 0, 90, 89, 0, 88, 87, 37, 0, 0, 70, 71, 77, 78, 47, 0, 0, 77, 41, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 12, 0, 13, 111, 112, 113, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 93, 0, 0, 35, 36, 0, 0, 43, 0, 45, 0, 62, 0, 64, 51, 53, 57, 0, 0, 65, 8, 6, 0, 116, 114, 115, 0, 0, 0, 137, 136, 135, 0, 0, 128, 129, 130, 131, 132, 0, 0, 97, 99, 98, 0, 91, 76, 0, 0, 123, 86, 0, 0, 0, 0, 0, 0, 0, 109, 105, 0, 133, 134, 0, 0, 0, 92, 44, 124, 0, 46, 63, 52, 54, 58, 59, 0, 0, 108, 100, 0, 0, 0, 125, 110, 0, 0, 0, 126, 106, 0, 0, 101, 102 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 3, 28, 159, 157, 29, 32, 61, 63, 57, 48, 85, 76, 89, 69, 81, 95, 97, 99, 101, 103, 105, 91, 93, 107, 58, 70, 59, 71, 50, 192, 60, 51, 52, 53, 54, 119, 209, 55, 233, 124 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -94 static const yytype_int16 yypact[] = { -94, 15, -94, 218, -28, -25, 264, 285, 285, 340, 163, 2, 319, 97, 415, 415, 285, 285, 285, 285, 306, -24, -24, 285, -17, -14, 4, -94, -94, 48, -94, -94, -94, 481, 481, -94, -94, -94, -94, -94, -94, -94, -94, 19, -94, 340, 399, 481, -94, -94, -94, -94, -94, -94, 46, 47, 385, -94, -94, 52, -94, -94, 59, -94, 60, 374, 19, 56, 243, -94, -94, -94, -94, -94, -94, 63, -94, 106, 340, -94, -94, -94, 56, 138, 481, -94, -94, 69, 72, -94, 74, -94, 76, -94, 77, -94, 79, -94, 80, -94, 81, -94, 83, -94, 89, -94, -94, -94, 94, -94, 481, -94, 481, -94, -94, -94, 119, 481, 481, 98, -94, -1, 100, -94, 84, -94, 117, 23, 426, -94, -94, 433, -94, -94, -94, 340, 285, -94, -94, 98, -94, -94, 75, 481, -94, -94, 138, 122, 440, 444, 285, 340, 340, 340, 340, 340, 285, 218, 393, 218, 393, 56, -94, -94, -15, 481, 105, -94, 481, 481, 481, 156, 162, 481, 481, 481, 481, 481, -94, 165, 0, 123, 133, -94, 474, 134, -94, -94, 136, 140, -94, 7, -94, 141, -94, 143, -94, 148, 149, -94, 147, 160, -94, -94, -94, 164, -94, -94, -94, 167, 168, 180, 533, 541, 548, 481, 481, 58, 58, -94, -94, -94, 481, 481, 171, -94, -94, 172, -94, -94, -24, 192, 217, -94, 175, -24, 219, 216, 481, 306, 220, -94, -94, 247, 33, 33, 205, 208, 41, -94, -94, 253, 234, -94, -94, -94, -94, -94, -94, 215, 481, -94, -94, 259, 260, 239, -94, -94, 221, 481, 481, -94, -94, 223, 224, -94, -94 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -94, -94, -94, -43, -94, -94, -94, 266, -94, -94, -94, 273, -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, 26, 229, 32, -11, -9, 57, -8, 71, -2, -6, 1, -60, -94, -10, -94, -93 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -1 static const yytype_uint16 yytable[] = { 75, 72, 86, 88, 74, 87, 139, 140, 73, 165, 223, 102, 77, 104, 106, 2, 231, 158, 206, 160, 207, 30, 144, 114, 115, 116, 31, 117, 118, 208, 56, 109, 49, 110, 111, 64, 123, 125, 49, 232, 62, 173, 174, 175, 176, 177, 133, 43, 94, 96, 98, 100, 166, 224, 112, 108, 137, 132, 75, 72, 180, 181, 74, 138, 117, 118, 73, 182, 175, 176, 177, 120, 145, 88, 123, 212, 213, 214, 263, 264, 217, 218, 219, 220, 221, 90, 92, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 113, 126, 127, 123, 205, 123, 134, 120, 33, 34, 162, 163, 188, 135, 136, 180, 181, 203, 142, 204, 143, 115, 182, 146, 123, 244, 245, 147, 148, 161, 149, 150, 35, 151, 152, 153, 189, 154, 190, 88, 178, 193, 195, 155, 194, 82, 67, 44, 156, 33, 34, 83, 84, 164, 56, 47, 167, 179, 210, 188, 211, 123, 123, 123, 186, 215, 123, 123, 123, 123, 123, 187, 216, 35, 33, 34, 65, 115, 222, 225, 197, 198, 199, 200, 201, 196, 82, 67, 44, 226, 228, 202, 229, 84, 230, 234, 47, 235, 35, 236, 237, 238, 36, 37, 38, 39, 40, 41, 123, 123, 42, 66, 67, 44, 239, 246, 247, 68, 46, 240, 243, 47, 4, 241, 242, 250, 248, 251, 249, 252, 254, 257, 191, 258, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 268, 33, 34, 65, 256, 259, 255, 260, 261, 273, 274, 262, 265, 24, 25, 26, 266, 27, 267, 269, 270, 271, 33, 34, 272, 35, 275, 276, 79, 36, 37, 38, 39, 40, 41, 80, 0, 42, 66, 67, 44, 253, 0, 33, 34, 46, 35, 141, 47, 0, 36, 37, 38, 39, 40, 41, 0, 0, 42, 43, 0, 44, 0, 0, 0, 45, 46, 35, 0, 47, 0, 36, 37, 38, 39, 40, 41, 33, 34, 42, 43, 0, 44, 0, 0, 0, 0, 46, 0, 56, 47, 0, 36, 37, 38, 39, 40, 41, 33, 34, 42, 35, 0, 0, 0, 36, 37, 38, 39, 40, 41, 0, 0, 42, 43, 0, 44, 0, 0, 0, 78, 46, 35, 0, 47, 0, 36, 37, 38, 39, 40, 41, 33, 34, 42, 43, 0, 44, 0, 0, 0, 0, 46, 33, 128, 47, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 35, 33, 34, 0, 36, 37, 38, 39, 40, 41, 0, 35, 42, 0, 0, 44, 0, 33, 34, 0, 46, 129, 130, 47, 43, 35, 44, 0, 33, 34, 121, 131, 0, 0, 47, 33, 184, 122, 0, 0, 44, 35, 33, 34, 0, 84, 33, 34, 47, 0, 0, 0, 35, 0, 43, 0, 44, 0, 0, 35, 0, 46, 183, 0, 47, 0, 35, 44, 0, 185, 35, 0, 84, 0, 44, 47, 33, 34, 0, 84, 0, 44, 47, 33, 34, 44, 84, 0, 191, 47, 84, 0, 56, 47, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 35, 0, 0, 227, 0, 0, 0, 0, 44, 0, 0, 0, 0, 84, 0, 44, 47, 0, 0, 0, 84, 0, 0, 47, 169, 170, 171, 172, 173, 174, 175, 176, 177, 170, 171, 172, 173, 174, 175, 176, 177, 171, 172, 173, 174, 175, 176, 177 }; static const yytype_int16 yycheck[] = { 10, 10, 13, 13, 10, 13, 66, 67, 10, 10, 10, 20, 11, 21, 22, 0, 9, 110, 33, 112, 35, 49, 82, 33, 34, 6, 51, 8, 9, 44, 54, 48, 6, 50, 48, 9, 46, 47, 12, 32, 8, 8, 9, 10, 11, 12, 56, 45, 16, 17, 18, 19, 53, 53, 50, 23, 65, 56, 68, 68, 37, 38, 68, 65, 8, 9, 68, 44, 10, 11, 12, 45, 83, 83, 84, 168, 169, 170, 37, 38, 173, 174, 175, 176, 177, 14, 15, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 49, 52, 52, 110, 161, 112, 51, 78, 8, 9, 117, 118, 34, 51, 51, 37, 38, 157, 52, 159, 11, 128, 44, 51, 131, 215, 216, 52, 51, 7, 51, 51, 32, 51, 51, 51, 143, 51, 146, 146, 53, 148, 149, 51, 149, 45, 46, 47, 51, 8, 9, 51, 52, 52, 54, 55, 53, 37, 165, 34, 52, 168, 169, 170, 135, 6, 173, 174, 175, 176, 177, 136, 7, 32, 8, 9, 10, 184, 10, 53, 151, 152, 153, 154, 155, 150, 45, 46, 47, 53, 53, 156, 53, 52, 51, 51, 55, 51, 32, 48, 48, 51, 36, 37, 38, 39, 40, 41, 215, 216, 44, 45, 46, 47, 51, 222, 223, 51, 52, 52, 37, 55, 1, 53, 53, 230, 52, 32, 53, 9, 235, 238, 54, 239, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 260, 8, 9, 10, 38, 35, 37, 10, 53, 269, 270, 53, 9, 45, 46, 47, 32, 49, 53, 10, 10, 32, 8, 9, 53, 32, 53, 53, 12, 36, 37, 38, 39, 40, 41, 12, -1, 44, 45, 46, 47, 234, -1, 8, 9, 52, 32, 68, 55, -1, 36, 37, 38, 39, 40, 41, -1, -1, 44, 45, -1, 47, -1, -1, -1, 51, 52, 32, -1, 55, -1, 36, 37, 38, 39, 40, 41, 8, 9, 44, 45, -1, 47, -1, -1, -1, -1, 52, -1, 54, 55, -1, 36, 37, 38, 39, 40, 41, 8, 9, 44, 32, -1, -1, -1, 36, 37, 38, 39, 40, 41, -1, -1, 44, 45, -1, 47, -1, -1, -1, 51, 52, 32, -1, 55, -1, 36, 37, 38, 39, 40, 41, 8, 9, 44, 45, -1, 47, -1, -1, -1, -1, 52, 8, 9, 55, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 32, 8, 9, -1, 36, 37, 38, 39, 40, 41, -1, 32, 44, -1, -1, 47, -1, 8, 9, -1, 52, 42, 43, 55, 45, 32, 47, -1, 8, 9, 37, 52, -1, -1, 55, 8, 9, 44, -1, -1, 47, 32, 8, 9, -1, 52, 8, 9, 55, -1, -1, -1, 32, -1, 45, -1, 47, -1, -1, 32, -1, 52, 42, -1, 55, -1, 32, 47, -1, 42, 32, -1, 52, -1, 47, 55, 8, 9, -1, 52, -1, 47, 55, 8, 9, 47, 52, -1, 54, 55, 52, -1, 54, 55, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, 32, -1, -1, 42, -1, -1, -1, -1, 47, -1, -1, -1, -1, 52, -1, 47, 55, -1, -1, -1, 52, -1, -1, 55, 4, 5, 6, 7, 8, 9, 10, 11, 12, 5, 6, 7, 8, 9, 10, 11, 12, 6, 7, 8, 9, 10, 11, 12 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 57, 0, 58, 1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 45, 46, 47, 49, 59, 62, 49, 51, 63, 8, 9, 32, 36, 37, 38, 39, 40, 41, 44, 45, 47, 51, 52, 55, 67, 82, 86, 89, 90, 91, 92, 95, 54, 66, 82, 84, 88, 64, 84, 65, 82, 10, 45, 46, 51, 71, 83, 85, 86, 90, 91, 95, 69, 92, 51, 63, 67, 72, 45, 51, 52, 68, 85, 88, 95, 70, 89, 79, 89, 80, 84, 73, 84, 74, 84, 75, 84, 76, 86, 77, 88, 78, 88, 81, 84, 48, 50, 48, 50, 49, 95, 95, 6, 8, 9, 93, 82, 37, 44, 95, 97, 95, 52, 52, 9, 42, 43, 52, 92, 95, 51, 51, 51, 86, 90, 93, 93, 83, 52, 11, 93, 85, 51, 52, 51, 51, 51, 51, 51, 51, 51, 51, 51, 61, 97, 60, 97, 7, 95, 95, 52, 10, 53, 53, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 53, 37, 37, 38, 44, 42, 9, 42, 82, 84, 34, 95, 85, 54, 87, 95, 88, 95, 84, 82, 82, 82, 82, 82, 84, 59, 59, 93, 33, 35, 44, 94, 95, 52, 97, 97, 97, 6, 7, 97, 97, 97, 97, 97, 10, 10, 53, 53, 53, 42, 53, 53, 51, 9, 32, 96, 51, 51, 48, 48, 51, 51, 52, 53, 53, 37, 97, 97, 95, 95, 52, 53, 88, 32, 9, 87, 88, 37, 38, 95, 86, 35, 10, 53, 53, 37, 38, 9, 32, 53, 95, 10, 10, 32, 53, 95, 95, 53, 53 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (YYLEX_PARAM) #else # define YYLEX yylex () #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) #else static void yy_stack_print (bottom, top) yytype_int16 *bottom; yytype_int16 *top; #endif { YYFPRINTF (stderr, "Stack now"); for (; bottom <= top; ++bottom) YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule) #else static void yy_reduce_print (yyvsp, yyrule) YYSTYPE *yyvsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { fprintf (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); fprintf (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into YYRESULT an error message about the unexpected token YYCHAR while in state YYSTATE. Return the number of bytes copied, including the terminating null byte. If YYRESULT is null, do not copy anything; just return the number of bytes that would be copied. As a special case, return 0 if an ordinary "syntax error" message will do. Return YYSIZE_MAXIMUM if overflow occurs during size calculation. */ static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar) { int yyn = yypact[yystate]; if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) return 0; else { int yytype = YYTRANSLATE (yychar); YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; int yysize_overflow = 0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; int yyx; # if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ YY_("syntax error, unexpected %s"); YY_("syntax error, unexpected %s, expecting %s"); YY_("syntax error, unexpected %s, expecting %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); # endif char *yyfmt; char const *yyf; static char const yyunexpected[] = "syntax error, unexpected %s"; static char const yyexpecting[] = ", expecting %s"; static char const yyor[] = " or %s"; char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) * (sizeof yyor - 1))]; char const *yyprefix = yyexpecting; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 1; yyarg[0] = yytname[yytype]; yyfmt = yystpcpy (yyformat, yyunexpected); for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; yyformat[sizeof yyunexpected - 1] = '\0'; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); yyprefix = yyor; } yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; if (yysize_overflow) return YYSIZE_MAXIMUM; if (yyresult) { /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ char *yyp = yyresult; int yyi = 0; while ((*yyp = *yyf) != '\0') { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else { yyp++; yyf++; } } } return yysize; } } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void yydestruct (yymsg, yytype, yyvaluep) const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /* The look-ahead symbol. */ int yychar; /* The semantic value of the look-ahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { int yystate; int yyn; int yyresult; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* Look-ahead token as an internal (translated) token number. */ int yytoken = 0; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif /* Three stacks and their tools: `yyss': related to states, `yyvs': related to semantic values, `yyls': related to locations. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss = yyssa; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) YYSIZE_T yystacksize = YYINITDEPTH; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss); YYSTACK_RELOCATE (yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a look-ahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a look-ahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } if (yyn == YYFINAL) YYACCEPT; /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the look-ahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 3: #line 68 "a.y" { stmtline = lineno; } break; case 5: #line 75 "a.y" { if((yyvsp[(1) - (2)].sym)->value != pc) yyerror("redeclaration of %s", (yyvsp[(1) - (2)].sym)->name); (yyvsp[(1) - (2)].sym)->value = pc; } break; case 7: #line 82 "a.y" { (yyvsp[(1) - (2)].sym)->type = LLAB; (yyvsp[(1) - (2)].sym)->value = pc; } break; case 12: #line 93 "a.y" { (yyvsp[(1) - (3)].sym)->type = LVAR; (yyvsp[(1) - (3)].sym)->value = (yyvsp[(3) - (3)].lval); } break; case 13: #line 98 "a.y" { if((yyvsp[(1) - (3)].sym)->value != (yyvsp[(3) - (3)].lval)) yyerror("redeclaration of %s", (yyvsp[(1) - (3)].sym)->name); (yyvsp[(1) - (3)].sym)->value = (yyvsp[(3) - (3)].lval); } break; case 14: #line 103 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 15: #line 104 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 16: #line 105 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 17: #line 106 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 18: #line 107 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 19: #line 108 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 20: #line 109 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 21: #line 110 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 22: #line 111 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 23: #line 112 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 24: #line 113 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 25: #line 114 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 26: #line 115 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 27: #line 116 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 28: #line 117 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 29: #line 118 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 30: #line 119 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 31: #line 120 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 32: #line 121 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 33: #line 124 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = nullgen; } break; case 34: #line 129 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = nullgen; } break; case 35: #line 136 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 36: #line 143 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 37: #line 150 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (2)].addr); (yyval.addr2).to = nullgen; } break; case 38: #line 155 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (1)].addr); (yyval.addr2).to = nullgen; } break; case 39: #line 162 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(2) - (2)].addr); } break; case 40: #line 167 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(1) - (1)].addr); } break; case 41: #line 174 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(2) - (2)].addr); } break; case 42: #line 179 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(1) - (1)].addr); } break; case 43: #line 184 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 44: #line 191 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).from.scale = (yyvsp[(3) - (5)].lval); (yyval.addr2).to = (yyvsp[(5) - (5)].addr); } break; case 45: #line 199 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 46: #line 204 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).from.scale = (yyvsp[(3) - (5)].lval); (yyval.addr2).to = (yyvsp[(5) - (5)].addr); } break; case 47: #line 212 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(2) - (2)].addr); } break; case 48: #line 217 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(1) - (1)].addr); } break; case 51: #line 228 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 52: #line 233 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).to = (yyvsp[(3) - (5)].addr); if((yyval.addr2).from.index != D_NONE) yyerror("dp shift with lhs index"); (yyval.addr2).from.index = (yyvsp[(5) - (5)].lval); } break; case 53: #line 243 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 54: #line 248 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).to = (yyvsp[(3) - (5)].addr); if((yyval.addr2).to.index != D_NONE) yyerror("dp move with lhs index"); (yyval.addr2).to.index = (yyvsp[(5) - (5)].lval); } break; case 55: #line 258 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (2)].addr); (yyval.addr2).to = nullgen; } break; case 56: #line 263 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (1)].addr); (yyval.addr2).to = nullgen; } break; case 57: #line 268 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 58: #line 275 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).to = (yyvsp[(3) - (5)].addr); (yyval.addr2).to.offset = (yyvsp[(5) - (5)].lval); } break; case 59: #line 283 "a.y" { (yyval.addr2).from = (yyvsp[(3) - (5)].addr); (yyval.addr2).to = (yyvsp[(5) - (5)].addr); if((yyvsp[(1) - (5)].addr).type != D_CONST) yyerror("illegal constant"); (yyval.addr2).to.offset = (yyvsp[(1) - (5)].addr).offset; } break; case 60: #line 292 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = nullgen; } break; case 61: #line 297 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (1)].addr); (yyval.addr2).to = nullgen; } break; case 62: #line 304 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 63: #line 309 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).from.scale = (yyvsp[(3) - (5)].lval); (yyval.addr2).to = (yyvsp[(5) - (5)].addr); } break; case 64: #line 317 "a.y" { if((yyvsp[(1) - (3)].addr).type != D_CONST || (yyvsp[(3) - (3)].addr).type != D_CONST) yyerror("arguments to PCDATA must be integer constants"); (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 65: #line 326 "a.y" { if((yyvsp[(1) - (3)].addr).type != D_CONST) yyerror("index for FUNCDATA must be integer constant"); if((yyvsp[(3) - (3)].addr).type != D_EXTERN && (yyvsp[(3) - (3)].addr).type != D_STATIC) yyerror("value for FUNCDATA must be symbol reference"); (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 70: #line 343 "a.y" { (yyval.addr) = (yyvsp[(2) - (2)].addr); } break; case 71: #line 347 "a.y" { (yyval.addr) = (yyvsp[(2) - (2)].addr); } break; case 76: #line 359 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_BRANCH; (yyval.addr).offset = (yyvsp[(1) - (4)].lval) + pc; } break; case 77: #line 365 "a.y" { (yyval.addr) = nullgen; if(pass == 2) yyerror("undefined label: %s", (yyvsp[(1) - (2)].sym)->name); (yyval.addr).type = D_BRANCH; (yyval.addr).offset = (yyvsp[(2) - (2)].lval); } break; case 78: #line 373 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_BRANCH; (yyval.addr).offset = (yyvsp[(1) - (2)].sym)->value + (yyvsp[(2) - (2)].lval); } break; case 79: #line 381 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = (yyvsp[(1) - (1)].lval); } break; case 80: #line 386 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = (yyvsp[(1) - (1)].lval); } break; case 81: #line 391 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = (yyvsp[(1) - (1)].lval); } break; case 82: #line 396 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = (yyvsp[(1) - (1)].lval); } break; case 83: #line 401 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_SP; } break; case 84: #line 406 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = (yyvsp[(1) - (1)].lval); } break; case 85: #line 411 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = (yyvsp[(1) - (1)].lval); } break; case 86: #line 417 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_CONST; (yyval.addr).offset = (yyvsp[(2) - (2)].lval); } break; case 87: #line 425 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_CONST; (yyval.addr).offset = (yyvsp[(2) - (2)].lval); } break; case 88: #line 431 "a.y" { (yyval.addr) = (yyvsp[(2) - (2)].addr); (yyval.addr).index = (yyvsp[(2) - (2)].addr).type; (yyval.addr).type = D_ADDR; /* if($2.type == D_AUTO || $2.type == D_PARAM) yyerror("constant cannot be automatic: %s", $2.sym->name); */ } break; case 89: #line 442 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_SCONST; memcpy((yyval.addr).u.sval, (yyvsp[(2) - (2)].sval), sizeof((yyval.addr).u.sval)); } break; case 90: #line 448 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_FCONST; (yyval.addr).u.dval = (yyvsp[(2) - (2)].dval); } break; case 91: #line 454 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_FCONST; (yyval.addr).u.dval = (yyvsp[(3) - (4)].dval); } break; case 92: #line 460 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_FCONST; (yyval.addr).u.dval = -(yyvsp[(4) - (5)].dval); } break; case 93: #line 466 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_FCONST; (yyval.addr).u.dval = -(yyvsp[(3) - (3)].dval); } break; case 96: #line 478 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+D_NONE; (yyval.addr).offset = (yyvsp[(1) - (1)].lval); } break; case 97: #line 484 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+(yyvsp[(3) - (4)].lval); (yyval.addr).offset = (yyvsp[(1) - (4)].lval); } break; case 98: #line 490 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+D_SP; (yyval.addr).offset = (yyvsp[(1) - (4)].lval); } break; case 99: #line 496 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+(yyvsp[(3) - (4)].lval); (yyval.addr).offset = (yyvsp[(1) - (4)].lval); } break; case 100: #line 502 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+D_NONE; (yyval.addr).offset = (yyvsp[(1) - (6)].lval); (yyval.addr).index = (yyvsp[(3) - (6)].lval); (yyval.addr).scale = (yyvsp[(5) - (6)].lval); checkscale((yyval.addr).scale); } break; case 101: #line 511 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+(yyvsp[(3) - (9)].lval); (yyval.addr).offset = (yyvsp[(1) - (9)].lval); (yyval.addr).index = (yyvsp[(6) - (9)].lval); (yyval.addr).scale = (yyvsp[(8) - (9)].lval); checkscale((yyval.addr).scale); } break; case 102: #line 520 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+(yyvsp[(3) - (9)].lval); (yyval.addr).offset = (yyvsp[(1) - (9)].lval); (yyval.addr).index = (yyvsp[(6) - (9)].lval); (yyval.addr).scale = (yyvsp[(8) - (9)].lval); checkscale((yyval.addr).scale); } break; case 103: #line 529 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+(yyvsp[(2) - (3)].lval); } break; case 104: #line 534 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+D_SP; } break; case 105: #line 539 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+D_NONE; (yyval.addr).index = (yyvsp[(2) - (5)].lval); (yyval.addr).scale = (yyvsp[(4) - (5)].lval); checkscale((yyval.addr).scale); } break; case 106: #line 547 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+(yyvsp[(2) - (8)].lval); (yyval.addr).index = (yyvsp[(5) - (8)].lval); (yyval.addr).scale = (yyvsp[(7) - (8)].lval); checkscale((yyval.addr).scale); } break; case 107: #line 557 "a.y" { (yyval.addr) = (yyvsp[(1) - (1)].addr); } break; case 108: #line 561 "a.y" { (yyval.addr) = (yyvsp[(1) - (6)].addr); (yyval.addr).index = (yyvsp[(3) - (6)].lval); (yyval.addr).scale = (yyvsp[(5) - (6)].lval); checkscale((yyval.addr).scale); } break; case 109: #line 570 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = (yyvsp[(4) - (5)].lval); (yyval.addr).sym = linklookup(ctxt, (yyvsp[(1) - (5)].sym)->name, 0); (yyval.addr).offset = (yyvsp[(2) - (5)].lval); } break; case 110: #line 577 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_STATIC; (yyval.addr).sym = linklookup(ctxt, (yyvsp[(1) - (7)].sym)->name, 1); (yyval.addr).offset = (yyvsp[(4) - (7)].lval); } break; case 111: #line 585 "a.y" { (yyval.lval) = 0; } break; case 112: #line 589 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; case 113: #line 593 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; case 115: #line 600 "a.y" { (yyval.lval) = D_AUTO; } break; case 118: #line 608 "a.y" { (yyval.lval) = (yyvsp[(1) - (1)].sym)->value; } break; case 119: #line 612 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; case 120: #line 616 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; case 121: #line 620 "a.y" { (yyval.lval) = ~(yyvsp[(2) - (2)].lval); } break; case 122: #line 624 "a.y" { (yyval.lval) = (yyvsp[(2) - (3)].lval); } break; case 123: #line 630 "a.y" { (yyval.lval) = ((yyvsp[(1) - (1)].lval) & 0xffffffffLL) + ((vlong)ArgsSizeUnknown << 32); } break; case 124: #line 635 "a.y" { (yyval.lval) = (-(yyvsp[(2) - (2)].lval) & 0xffffffffLL) + ((vlong)ArgsSizeUnknown << 32); } break; case 125: #line 640 "a.y" { (yyval.lval) = ((yyvsp[(1) - (3)].lval) & 0xffffffffLL) + (((yyvsp[(3) - (3)].lval) & 0xffffLL) << 32); } break; case 126: #line 645 "a.y" { (yyval.lval) = (-(yyvsp[(2) - (4)].lval) & 0xffffffffLL) + (((yyvsp[(4) - (4)].lval) & 0xffffLL) << 32); } break; case 128: #line 653 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval); } break; case 129: #line 657 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval); } break; case 130: #line 661 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval); } break; case 131: #line 665 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval); } break; case 132: #line 669 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval); } break; case 133: #line 673 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval); } break; case 134: #line 677 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval); } break; case 135: #line 681 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval); } break; case 136: #line 685 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval); } break; case 137: #line 689 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval); } break; /* Line 1267 of yacc.c. */ #line 2588 "y.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) { YYSIZE_T yyalloc = 2 * yysize; if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) yyalloc = YYSTACK_ALLOC_MAXIMUM; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yyalloc); if (yymsg) yymsg_alloc = yyalloc; else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; } } if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); yyerror (yymsg); } else { yyerror (YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } } #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse look-ahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse look-ahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } if (yyn == YYFINAL) YYACCEPT; *++yyvsp = yylval; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #ifndef yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEOF && yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6a/y.tab.h�������������������������������������������������������������������������������0100644�0000000�0000000�00000006670�12412656734�014533� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { LTYPE0 = 258, LTYPE1 = 259, LTYPE2 = 260, LTYPE3 = 261, LTYPE4 = 262, LTYPEC = 263, LTYPED = 264, LTYPEN = 265, LTYPER = 266, LTYPET = 267, LTYPEG = 268, LTYPEPC = 269, LTYPES = 270, LTYPEM = 271, LTYPEI = 272, LTYPEXC = 273, LTYPEX = 274, LTYPERT = 275, LTYPEF = 276, LCONST = 277, LFP = 278, LPC = 279, LSB = 280, LBREG = 281, LLREG = 282, LSREG = 283, LFREG = 284, LMREG = 285, LXREG = 286, LFCONST = 287, LSCONST = 288, LSP = 289, LNAME = 290, LLAB = 291, LVAR = 292 }; #endif /* Tokens. */ #define LTYPE0 258 #define LTYPE1 259 #define LTYPE2 260 #define LTYPE3 261 #define LTYPE4 262 #define LTYPEC 263 #define LTYPED 264 #define LTYPEN 265 #define LTYPER 266 #define LTYPET 267 #define LTYPEG 268 #define LTYPEPC 269 #define LTYPES 270 #define LTYPEM 271 #define LTYPEI 272 #define LTYPEXC 273 #define LTYPEX 274 #define LTYPERT 275 #define LTYPEF 276 #define LCONST 277 #define LFP 278 #define LPC 279 #define LSB 280 #define LBREG 281 #define LLREG 282 #define LSREG 283 #define LFREG 284 #define LMREG 285 #define LXREG 286 #define LFCONST 287 #define LSCONST 288 #define LSP 289 #define LNAME 290 #define LLAB 291 #define LVAR 292 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 38 "a.y" { Sym *sym; vlong lval; double dval; char sval[8]; Addr addr; Addr2 addr2; } /* Line 1529 of yacc.c. */ #line 132 "y.tab.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif extern YYSTYPE yylval; ������������������������������������������������������������������������go/src/cmd/6c���������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013265� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6c/Makefile������������������������������������������������������������������������������0100644�0000000�0000000�00000000265�12412656734�015001� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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. include ../../Make.dist �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6c/cgen.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000111043�12412656737�014421� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6c/cgen.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/cgen.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" #include "../../pkg/runtime/funcdata.h" /* ,x/^(print|prtree)\(/i/\/\/ */ int castup(Type*, Type*); int vaddr(Node *n, int a); void cgen(Node *n, Node *nn) { Node *l, *r, *t; Prog *p1; Node nod, nod1, nod2, nod3, nod4; int o, hardleft; int32 v, curs; vlong c; if(debug['g']) { prtree(nn, "cgen lhs"); prtree(n, "cgen"); } if(n == Z || n->type == T) return; if(typesu[n->type->etype]) { sugen(n, nn, n->type->width); return; } l = n->left; r = n->right; o = n->op; if(n->op == OEXREG || (nn != Z && nn->op == OEXREG)) { gmove(n, nn); return; } if(n->addable >= INDEXED) { if(nn == Z) { switch(o) { default: nullwarn(Z, Z); break; case OINDEX: nullwarn(l, r); break; } return; } gmove(n, nn); return; } curs = cursafe; if(l->complex >= FNX) if(r != Z && r->complex >= FNX) switch(o) { default: if(cond(o) && typesu[l->type->etype]) break; regret(&nod, r); cgen(r, &nod); regsalloc(&nod1, r); gmove(&nod, &nod1); regfree(&nod); nod = *n; nod.right = &nod1; cgen(&nod, nn); return; case OFUNC: case OCOMMA: case OANDAND: case OOROR: case OCOND: case ODOT: break; } hardleft = l->addable < INDEXED || l->complex >= FNX; switch(o) { default: diag(n, "unknown op in cgen: %O", o); break; case ONEG: case OCOM: if(nn == Z) { nullwarn(l, Z); break; } regalloc(&nod, l, nn); cgen(l, &nod); gopcode(o, n->type, Z, &nod); gmove(&nod, nn); regfree(&nod); break; case OAS: if(l->op == OBIT) goto bitas; if(!hardleft) { if(nn != Z || r->addable < INDEXED || hardconst(r)) { if(r->complex >= FNX && nn == Z) regret(&nod, r); else regalloc(&nod, r, nn); cgen(r, &nod); gmove(&nod, l); if(nn != Z) gmove(&nod, nn); regfree(&nod); } else gmove(r, l); break; } if(l->complex >= r->complex) { if(l->op == OINDEX && immconst(r)) { gmove(r, l); break; } reglcgen(&nod1, l, Z); if(r->addable >= INDEXED && !hardconst(r)) { gmove(r, &nod1); if(nn != Z) gmove(r, nn); regfree(&nod1); break; } regalloc(&nod, r, nn); cgen(r, &nod); } else { regalloc(&nod, r, nn); cgen(r, &nod); reglcgen(&nod1, l, Z); } gmove(&nod, &nod1); regfree(&nod); regfree(&nod1); break; bitas: n = l->left; regalloc(&nod, r, nn); if(l->complex >= r->complex) { reglcgen(&nod1, n, Z); cgen(r, &nod); } else { cgen(r, &nod); reglcgen(&nod1, n, Z); } regalloc(&nod2, n, Z); gmove(&nod1, &nod2); bitstore(l, &nod, &nod1, &nod2, nn); break; case OBIT: if(nn == Z) { nullwarn(l, Z); break; } bitload(n, &nod, Z, Z, nn); gmove(&nod, nn); regfree(&nod); break; case OLSHR: case OASHL: case OASHR: if(nn == Z) { nullwarn(l, r); break; } if(r->op == OCONST) { if(r->vconst == 0) { cgen(l, nn); break; } regalloc(&nod, l, nn); cgen(l, &nod); if(o == OASHL && r->vconst == 1) gopcode(OADD, n->type, &nod, &nod); else gopcode(o, n->type, r, &nod); gmove(&nod, nn); regfree(&nod); break; } /* * get nod to be D_CX */ if(nodreg(&nod, nn, D_CX)) { regsalloc(&nod1, n); gmove(&nod, &nod1); cgen(n, &nod); /* probably a bug */ gmove(&nod, nn); gmove(&nod1, &nod); break; } reg[D_CX]++; if(nn->op == OREGISTER && nn->reg == D_CX) regalloc(&nod1, l, Z); else regalloc(&nod1, l, nn); if(r->complex >= l->complex) { cgen(r, &nod); cgen(l, &nod1); } else { cgen(l, &nod1); cgen(r, &nod); } gopcode(o, n->type, &nod, &nod1); gmove(&nod1, nn); regfree(&nod); regfree(&nod1); break; case OADD: case OSUB: case OOR: case OXOR: case OAND: if(nn == Z) { nullwarn(l, r); break; } if(typefd[n->type->etype]) goto fop; if(r->op == OCONST) { if(r->vconst == 0 && o != OAND) { cgen(l, nn); break; } } if(n->op == OOR && l->op == OASHL && r->op == OLSHR && l->right->op == OCONST && r->right->op == OCONST && l->left->op == ONAME && r->left->op == ONAME && l->left->sym == r->left->sym && l->right->vconst + r->right->vconst == 8 * l->left->type->width) { regalloc(&nod, l->left, nn); cgen(l->left, &nod); gopcode(OROTL, n->type, l->right, &nod); gmove(&nod, nn); regfree(&nod); break; } if(n->op == OADD && l->op == OASHL && l->right->op == OCONST && (r->op != OCONST || r->vconst < -128 || r->vconst > 127)) { c = l->right->vconst; if(c > 0 && c <= 3) { if(l->left->complex >= r->complex) { regalloc(&nod, l->left, nn); cgen(l->left, &nod); if(r->addable < INDEXED) { regalloc(&nod1, r, Z); cgen(r, &nod1); genmuladd(&nod, &nod, 1 << c, &nod1); regfree(&nod1); } else genmuladd(&nod, &nod, 1 << c, r); } else { regalloc(&nod, r, nn); cgen(r, &nod); regalloc(&nod1, l->left, Z); cgen(l->left, &nod1); genmuladd(&nod, &nod1, 1 << c, &nod); regfree(&nod1); } gmove(&nod, nn); regfree(&nod); break; } } if(r->addable >= INDEXED && !hardconst(r)) { regalloc(&nod, l, nn); cgen(l, &nod); gopcode(o, n->type, r, &nod); gmove(&nod, nn); regfree(&nod); break; } if(l->complex >= r->complex) { regalloc(&nod, l, nn); cgen(l, &nod); regalloc(&nod1, r, Z); cgen(r, &nod1); gopcode(o, n->type, &nod1, &nod); } else { regalloc(&nod1, r, nn); cgen(r, &nod1); regalloc(&nod, l, Z); cgen(l, &nod); gopcode(o, n->type, &nod1, &nod); } gmove(&nod, nn); regfree(&nod); regfree(&nod1); break; case OLMOD: case OMOD: case OLMUL: case OLDIV: case OMUL: case ODIV: if(nn == Z) { nullwarn(l, r); break; } if(typefd[n->type->etype]) goto fop; if(r->op == OCONST && typechl[n->type->etype]) { /* TO DO */ SET(v); switch(o) { case ODIV: case OMOD: c = r->vconst; if(c < 0) c = -c; v = xlog2(c); if(v < 0) break; /* fall thru */ case OMUL: case OLMUL: regalloc(&nod, l, nn); cgen(l, &nod); switch(o) { case OMUL: case OLMUL: mulgen(n->type, r, &nod); break; case ODIV: sdiv2(r->vconst, v, l, &nod); break; case OMOD: smod2(r->vconst, v, l, &nod); break; } gmove(&nod, nn); regfree(&nod); goto done; case OLDIV: c = r->vconst; if((c & 0x80000000) == 0) break; regalloc(&nod1, l, Z); cgen(l, &nod1); regalloc(&nod, l, nn); zeroregm(&nod); gins(ACMPL, &nod1, nodconst(c)); gins(ASBBL, nodconst(-1), &nod); regfree(&nod1); gmove(&nod, nn); regfree(&nod); goto done; } } if(o == OMUL || o == OLMUL) { if(l->addable >= INDEXED) { t = l; l = r; r = t; } reg[D_DX]++; // for gopcode case OMUL regalloc(&nod, l, nn); cgen(l, &nod); if(r->addable < INDEXED || hardconst(r)) { regalloc(&nod1, r, Z); cgen(r, &nod1); gopcode(OMUL, n->type, &nod1, &nod); regfree(&nod1); }else gopcode(OMUL, n->type, r, &nod); /* addressible */ gmove(&nod, nn); regfree(&nod); reg[D_DX]--; break; } /* * get nod to be D_AX * get nod1 to be D_DX */ if(nodreg(&nod, nn, D_AX)) { regsalloc(&nod2, n); gmove(&nod, &nod2); v = reg[D_AX]; reg[D_AX] = 0; if(isreg(l, D_AX)) { nod3 = *n; nod3.left = &nod2; cgen(&nod3, nn); } else if(isreg(r, D_AX)) { nod3 = *n; nod3.right = &nod2; cgen(&nod3, nn); } else cgen(n, nn); gmove(&nod2, &nod); reg[D_AX] = v; break; } if(nodreg(&nod1, nn, D_DX)) { regsalloc(&nod2, n); gmove(&nod1, &nod2); v = reg[D_DX]; reg[D_DX] = 0; if(isreg(l, D_DX)) { nod3 = *n; nod3.left = &nod2; cgen(&nod3, nn); } else if(isreg(r, D_DX)) { nod3 = *n; nod3.right = &nod2; cgen(&nod3, nn); } else cgen(n, nn); gmove(&nod2, &nod1); reg[D_DX] = v; break; } reg[D_AX]++; if(r->op == OCONST && (o == ODIV || o == OLDIV) && immconst(r) && typechl[r->type->etype]) { reg[D_DX]++; if(l->addable < INDEXED) { regalloc(&nod2, l, Z); cgen(l, &nod2); l = &nod2; } if(o == ODIV) sdivgen(l, r, &nod, &nod1); else udivgen(l, r, &nod, &nod1); gmove(&nod1, nn); if(l == &nod2) regfree(l); goto freeaxdx; } if(l->complex >= r->complex) { cgen(l, &nod); reg[D_DX]++; if(o == ODIV || o == OMOD) gins(typechl[l->type->etype]? ACDQ: ACQO, Z, Z); if(o == OLDIV || o == OLMOD) zeroregm(&nod1); if(r->addable < INDEXED || r->op == OCONST) { regsalloc(&nod3, r); cgen(r, &nod3); gopcode(o, n->type, &nod3, Z); } else gopcode(o, n->type, r, Z); } else { regsalloc(&nod3, r); cgen(r, &nod3); cgen(l, &nod); reg[D_DX]++; if(o == ODIV || o == OMOD) gins(typechl[l->type->etype]? ACDQ: ACQO, Z, Z); if(o == OLDIV || o == OLMOD) zeroregm(&nod1); gopcode(o, n->type, &nod3, Z); } if(o == OMOD || o == OLMOD) gmove(&nod1, nn); else gmove(&nod, nn); freeaxdx: regfree(&nod); regfree(&nod1); break; case OASLSHR: case OASASHL: case OASASHR: if(r->op == OCONST) goto asand; if(l->op == OBIT) goto asbitop; if(typefd[n->type->etype]) goto asand; /* can this happen? */ /* * get nod to be D_CX */ if(nodreg(&nod, nn, D_CX)) { regsalloc(&nod1, n); gmove(&nod, &nod1); cgen(n, &nod); if(nn != Z) gmove(&nod, nn); gmove(&nod1, &nod); break; } reg[D_CX]++; if(r->complex >= l->complex) { cgen(r, &nod); if(hardleft) reglcgen(&nod1, l, Z); else nod1 = *l; } else { if(hardleft) reglcgen(&nod1, l, Z); else nod1 = *l; cgen(r, &nod); } gopcode(o, l->type, &nod, &nod1); regfree(&nod); if(nn != Z) gmove(&nod1, nn); if(hardleft) regfree(&nod1); break; case OASAND: case OASADD: case OASSUB: case OASXOR: case OASOR: asand: if(l->op == OBIT) goto asbitop; if(typefd[l->type->etype] || typefd[r->type->etype]) goto asfop; if(l->complex >= r->complex) { if(hardleft) reglcgen(&nod, l, Z); else nod = *l; if(!immconst(r)) { regalloc(&nod1, r, nn); cgen(r, &nod1); gopcode(o, l->type, &nod1, &nod); regfree(&nod1); } else gopcode(o, l->type, r, &nod); } else { regalloc(&nod1, r, nn); cgen(r, &nod1); if(hardleft) reglcgen(&nod, l, Z); else nod = *l; gopcode(o, l->type, &nod1, &nod); regfree(&nod1); } if(nn != Z) gmove(&nod, nn); if(hardleft) regfree(&nod); break; asfop: if(l->complex >= r->complex) { if(hardleft) reglcgen(&nod, l, Z); else nod = *l; if(r->addable < INDEXED){ regalloc(&nod1, r, nn); cgen(r, &nod1); }else nod1 = *r; regalloc(&nod2, r, Z); gmove(&nod, &nod2); gopcode(o, r->type, &nod1, &nod2); gmove(&nod2, &nod); regfree(&nod2); if(r->addable < INDEXED) regfree(&nod1); } else { regalloc(&nod1, r, nn); cgen(r, &nod1); if(hardleft) reglcgen(&nod, l, Z); else nod = *l; if(o != OASMUL && o != OASADD) { regalloc(&nod2, r, Z); gmove(&nod, &nod2); gopcode(o, r->type, &nod1, &nod2); regfree(&nod1); gmove(&nod2, &nod); regfree(&nod2); } else { gopcode(o, r->type, &nod, &nod1); gmove(&nod1, &nod); regfree(&nod1); } } if(nn != Z) gmove(&nod, nn); if(hardleft) regfree(&nod); break; case OASLMUL: case OASLDIV: case OASLMOD: case OASMUL: case OASDIV: case OASMOD: if(l->op == OBIT) goto asbitop; if(typefd[n->type->etype] || typefd[r->type->etype]) goto asfop; if(r->op == OCONST && typechl[n->type->etype]) { SET(v); switch(o) { case OASDIV: case OASMOD: c = r->vconst; if(c < 0) c = -c; v = xlog2(c); if(v < 0) break; /* fall thru */ case OASMUL: case OASLMUL: if(hardleft) reglcgen(&nod2, l, Z); else nod2 = *l; regalloc(&nod, l, nn); cgen(&nod2, &nod); switch(o) { case OASMUL: case OASLMUL: mulgen(n->type, r, &nod); break; case OASDIV: sdiv2(r->vconst, v, l, &nod); break; case OASMOD: smod2(r->vconst, v, l, &nod); break; } havev: gmove(&nod, &nod2); if(nn != Z) gmove(&nod, nn); if(hardleft) regfree(&nod2); regfree(&nod); goto done; case OASLDIV: c = r->vconst; if((c & 0x80000000) == 0) break; if(hardleft) reglcgen(&nod2, l, Z); else nod2 = *l; regalloc(&nod1, l, nn); cgen(&nod2, &nod1); regalloc(&nod, l, nn); zeroregm(&nod); gins(ACMPL, &nod1, nodconst(c)); gins(ASBBL, nodconst(-1), &nod); regfree(&nod1); goto havev; } } if(o == OASMUL) { /* should favour AX */ regalloc(&nod, l, nn); if(r->complex >= FNX) { regalloc(&nod1, r, Z); cgen(r, &nod1); r = &nod1; } if(hardleft) reglcgen(&nod2, l, Z); else nod2 = *l; cgen(&nod2, &nod); if(r->addable < INDEXED || hardconst(r)) { if(r->complex < FNX) { regalloc(&nod1, r, Z); cgen(r, &nod1); } gopcode(OASMUL, n->type, &nod1, &nod); regfree(&nod1); } else gopcode(OASMUL, n->type, r, &nod); if(r == &nod1) regfree(r); gmove(&nod, &nod2); if(nn != Z) gmove(&nod, nn); regfree(&nod); if(hardleft) regfree(&nod2); break; } /* * get nod to be D_AX * get nod1 to be D_DX */ if(nodreg(&nod, nn, D_AX)) { regsalloc(&nod2, n); gmove(&nod, &nod2); v = reg[D_AX]; reg[D_AX] = 0; if(isreg(l, D_AX)) { nod3 = *n; nod3.left = &nod2; cgen(&nod3, nn); } else if(isreg(r, D_AX)) { nod3 = *n; nod3.right = &nod2; cgen(&nod3, nn); } else cgen(n, nn); gmove(&nod2, &nod); reg[D_AX] = v; break; } if(nodreg(&nod1, nn, D_DX)) { regsalloc(&nod2, n); gmove(&nod1, &nod2); v = reg[D_DX]; reg[D_DX] = 0; if(isreg(l, D_DX)) { nod3 = *n; nod3.left = &nod2; cgen(&nod3, nn); } else if(isreg(r, D_DX)) { nod3 = *n; nod3.right = &nod2; cgen(&nod3, nn); } else cgen(n, nn); gmove(&nod2, &nod1); reg[D_DX] = v; break; } reg[D_AX]++; reg[D_DX]++; if(l->complex >= r->complex) { if(hardleft) reglcgen(&nod2, l, Z); else nod2 = *l; cgen(&nod2, &nod); if(r->op == OCONST && typechl[r->type->etype]) { switch(o) { case OASDIV: sdivgen(&nod2, r, &nod, &nod1); goto divdone; case OASLDIV: udivgen(&nod2, r, &nod, &nod1); divdone: gmove(&nod1, &nod2); if(nn != Z) gmove(&nod1, nn); goto freelxaxdx; } } if(o == OASDIV || o == OASMOD) gins(typechl[l->type->etype]? ACDQ: ACQO, Z, Z); if(o == OASLDIV || o == OASLMOD) zeroregm(&nod1); if(r->addable < INDEXED || r->op == OCONST || !typeil[r->type->etype]) { regalloc(&nod3, r, Z); cgen(r, &nod3); gopcode(o, l->type, &nod3, Z); regfree(&nod3); } else gopcode(o, n->type, r, Z); } else { regalloc(&nod3, r, Z); cgen(r, &nod3); if(hardleft) reglcgen(&nod2, l, Z); else nod2 = *l; cgen(&nod2, &nod); if(o == OASDIV || o == OASMOD) gins(typechl[l->type->etype]? ACDQ: ACQO, Z, Z); if(o == OASLDIV || o == OASLMOD) zeroregm(&nod1); gopcode(o, l->type, &nod3, Z); regfree(&nod3); } if(o == OASMOD || o == OASLMOD) { gmove(&nod1, &nod2); if(nn != Z) gmove(&nod1, nn); } else { gmove(&nod, &nod2); if(nn != Z) gmove(&nod, nn); } freelxaxdx: if(hardleft) regfree(&nod2); regfree(&nod); regfree(&nod1); break; fop: if(l->complex >= r->complex) { regalloc(&nod, l, nn); cgen(l, &nod); if(r->addable < INDEXED) { regalloc(&nod1, r, Z); cgen(r, &nod1); gopcode(o, n->type, &nod1, &nod); regfree(&nod1); } else gopcode(o, n->type, r, &nod); } else { /* TO DO: could do better with r->addable >= INDEXED */ regalloc(&nod1, r, Z); cgen(r, &nod1); regalloc(&nod, l, nn); cgen(l, &nod); gopcode(o, n->type, &nod1, &nod); regfree(&nod1); } gmove(&nod, nn); regfree(&nod); break; asbitop: regalloc(&nod4, n, nn); if(l->complex >= r->complex) { bitload(l, &nod, &nod1, &nod2, &nod4); regalloc(&nod3, r, Z); cgen(r, &nod3); } else { regalloc(&nod3, r, Z); cgen(r, &nod3); bitload(l, &nod, &nod1, &nod2, &nod4); } gmove(&nod, &nod4); { /* TO DO: check floating point source */ Node onod; /* incredible grot ... */ onod = nod3; onod.op = o; onod.complex = 2; onod.addable = 0; onod.type = tfield; onod.left = &nod4; onod.right = &nod3; cgen(&onod, Z); } regfree(&nod3); gmove(&nod4, &nod); regfree(&nod4); bitstore(l, &nod, &nod1, &nod2, nn); break; case OADDR: if(nn == Z) { nullwarn(l, Z); break; } lcgen(l, nn); break; case OFUNC: if(l->complex >= FNX) { if(l->op != OIND) diag(n, "bad function call"); regret(&nod, l->left); cgen(l->left, &nod); regsalloc(&nod1, l->left); gmove(&nod, &nod1); regfree(&nod); nod = *n; nod.left = &nod2; nod2 = *l; nod2.left = &nod1; nod2.complex = 1; cgen(&nod, nn); return; } gargs(r, &nod, &nod1); gpcdata(PCDATA_ArgSize, curarg); if(l->addable < INDEXED) { reglcgen(&nod, l, nn); nod.op = OREGISTER; gopcode(OFUNC, n->type, Z, &nod); regfree(&nod); } else gopcode(OFUNC, n->type, Z, l); gpcdata(PCDATA_ArgSize, -1); if(REGARG >= 0 && reg[REGARG]) reg[REGARG]--; if(nn != Z) { regret(&nod, n); gmove(&nod, nn); regfree(&nod); } break; case OIND: if(nn == Z) { nullwarn(l, Z); break; } regialloc(&nod, n, nn); r = l; while(r->op == OADD) r = r->right; if(sconst(r)) { v = r->vconst; r->vconst = 0; cgen(l, &nod); nod.xoffset += v; r->vconst = v; } else cgen(l, &nod); regind(&nod, n); gmove(&nod, nn); regfree(&nod); break; case OEQ: case ONE: case OLE: case OLT: case OGE: case OGT: case OLO: case OLS: case OHI: case OHS: if(nn == Z) { nullwarn(l, r); break; } boolgen(n, 1, nn); break; case OANDAND: case OOROR: boolgen(n, 1, nn); if(nn == Z) patch(p, pc); break; case ONOT: if(nn == Z) { nullwarn(l, Z); break; } boolgen(n, 1, nn); break; case OCOMMA: cgen(l, Z); cgen(r, nn); break; case OCAST: if(nn == Z) { nullwarn(l, Z); break; } /* * convert from types l->n->nn */ if(nocast(l->type, n->type) && nocast(n->type, nn->type)) { /* both null, gen l->nn */ cgen(l, nn); break; } if(ewidth[n->type->etype] < ewidth[l->type->etype]){ if(l->type->etype == TIND && typechlp[n->type->etype]) warn(n, "conversion of pointer to shorter integer"); }else if(0){ if(nocast(n->type, nn->type) || castup(n->type, nn->type)){ if(typefd[l->type->etype] != typefd[nn->type->etype]) regalloc(&nod, l, nn); else regalloc(&nod, nn, nn); cgen(l, &nod); gmove(&nod, nn); regfree(&nod); break; } } regalloc(&nod, l, nn); cgen(l, &nod); regalloc(&nod1, n, &nod); gmove(&nod, &nod1); gmove(&nod1, nn); regfree(&nod1); regfree(&nod); break; case ODOT: sugen(l, nodrat, l->type->width); if(nn == Z) break; warn(n, "non-interruptable temporary"); nod = *nodrat; if(!r || r->op != OCONST) { diag(n, "DOT and no offset"); break; } nod.xoffset += (int32)r->vconst; nod.type = n->type; cgen(&nod, nn); break; case OCOND: bcgen(l, 1); p1 = p; cgen(r->left, nn); gbranch(OGOTO); patch(p1, pc); p1 = p; cgen(r->right, nn); patch(p1, pc); break; case OPOSTINC: case OPOSTDEC: v = 1; if(l->type->etype == TIND) v = l->type->link->width; if(o == OPOSTDEC) v = -v; if(l->op == OBIT) goto bitinc; if(nn == Z) goto pre; if(hardleft) reglcgen(&nod, l, Z); else nod = *l; gmove(&nod, nn); if(typefd[n->type->etype]) { regalloc(&nod1, l, Z); gmove(&nod, &nod1); if(v < 0) gopcode(OSUB, n->type, nodfconst(-v), &nod1); else gopcode(OADD, n->type, nodfconst(v), &nod1); gmove(&nod1, &nod); regfree(&nod1); } else gopcode(OADD, n->type, nodconst(v), &nod); if(hardleft) regfree(&nod); break; case OPREINC: case OPREDEC: v = 1; if(l->type->etype == TIND) v = l->type->link->width; if(o == OPREDEC) v = -v; if(l->op == OBIT) goto bitinc; pre: if(hardleft) reglcgen(&nod, l, Z); else nod = *l; if(typefd[n->type->etype]) { regalloc(&nod1, l, Z); gmove(&nod, &nod1); if(v < 0) gopcode(OSUB, n->type, nodfconst(-v), &nod1); else gopcode(OADD, n->type, nodfconst(v), &nod1); gmove(&nod1, &nod); regfree(&nod1); } else gopcode(OADD, n->type, nodconst(v), &nod); if(nn != Z) gmove(&nod, nn); if(hardleft) regfree(&nod); break; bitinc: if(nn != Z && (o == OPOSTINC || o == OPOSTDEC)) { bitload(l, &nod, &nod1, &nod2, Z); gmove(&nod, nn); gopcode(OADD, tfield, nodconst(v), &nod); bitstore(l, &nod, &nod1, &nod2, Z); break; } bitload(l, &nod, &nod1, &nod2, nn); gopcode(OADD, tfield, nodconst(v), &nod); bitstore(l, &nod, &nod1, &nod2, nn); break; } done: cursafe = curs; } void reglcgen(Node *t, Node *n, Node *nn) { Node *r; int32 v; regialloc(t, n, nn); if(n->op == OIND) { r = n->left; while(r->op == OADD) r = r->right; if(sconst(r)) { v = r->vconst; r->vconst = 0; lcgen(n, t); t->xoffset += v; r->vconst = v; regind(t, n); return; } } lcgen(n, t); regind(t, n); } void lcgen(Node *n, Node *nn) { Prog *p1; Node nod; if(debug['g']) { prtree(nn, "lcgen lhs"); prtree(n, "lcgen"); } if(n == Z || n->type == T) return; if(nn == Z) { nn = &nod; regalloc(&nod, n, Z); } switch(n->op) { default: if(n->addable < INDEXED) { diag(n, "unknown op in lcgen: %O", n->op); break; } gopcode(OADDR, n->type, n, nn); break; case OCOMMA: cgen(n->left, n->left); lcgen(n->right, nn); break; case OIND: cgen(n->left, nn); break; case OCOND: bcgen(n->left, 1); p1 = p; lcgen(n->right->left, nn); gbranch(OGOTO); patch(p1, pc); p1 = p; lcgen(n->right->right, nn); patch(p1, pc); break; } } void bcgen(Node *n, int true) { if(n->type == T) gbranch(OGOTO); else boolgen(n, true, Z); } void boolgen(Node *n, int true, Node *nn) { int o; Prog *p1, *p2, *p3; Node *l, *r, nod, nod1; int32 curs; if(debug['g']) { print("boolgen %d\n", true); prtree(nn, "boolgen lhs"); prtree(n, "boolgen"); } curs = cursafe; l = n->left; r = n->right; switch(n->op) { default: o = ONE; if(true) o = OEQ; /* bad, 13 is address of external that becomes constant */ if(n->addable >= INDEXED && n->addable != 13) { if(typefd[n->type->etype]) { regalloc(&nod1, n, Z); gmove(nodfconst(0.0), &nod1); /* TO DO: FREGZERO */ gopcode(o, n->type, n, &nod1); regfree(&nod1); } else gopcode(o, n->type, n, nodconst(0)); goto com; } regalloc(&nod, n, nn); cgen(n, &nod); if(typefd[n->type->etype]) { regalloc(&nod1, n, Z); gmove(nodfconst(0.0), &nod1); /* TO DO: FREGZERO */ gopcode(o, n->type, &nod, &nod1); regfree(&nod1); } else gopcode(o, n->type, &nod, nodconst(0)); regfree(&nod); goto com; case OCONST: o = vconst(n); if(!true) o = !o; gbranch(OGOTO); if(o) { p1 = p; gbranch(OGOTO); patch(p1, pc); } goto com; case OCOMMA: cgen(l, Z); boolgen(r, true, nn); break; case ONOT: boolgen(l, !true, nn); break; case OCOND: bcgen(l, 1); p1 = p; bcgen(r->left, true); p2 = p; gbranch(OGOTO); patch(p1, pc); p1 = p; bcgen(r->right, !true); patch(p2, pc); p2 = p; gbranch(OGOTO); patch(p1, pc); patch(p2, pc); goto com; case OANDAND: if(!true) goto caseor; caseand: bcgen(l, true); p1 = p; bcgen(r, !true); p2 = p; patch(p1, pc); gbranch(OGOTO); patch(p2, pc); goto com; case OOROR: if(!true) goto caseand; caseor: bcgen(l, !true); p1 = p; bcgen(r, !true); p2 = p; gbranch(OGOTO); patch(p1, pc); patch(p2, pc); goto com; case OEQ: case ONE: case OLE: case OLT: case OGE: case OGT: case OHI: case OHS: case OLO: case OLS: o = n->op; if(true && typefd[l->type->etype] && (o == OEQ || o == ONE)) { // Cannot rewrite !(l == r) into l != r with float64; it breaks NaNs. // Jump around instead. boolgen(n, 0, Z); p1 = p; gbranch(OGOTO); patch(p1, pc); goto com; } if(true) o = comrel[relindex(o)]; if(l->complex >= FNX && r->complex >= FNX) { regret(&nod, r); cgen(r, &nod); regsalloc(&nod1, r); gmove(&nod, &nod1); regfree(&nod); nod = *n; nod.right = &nod1; boolgen(&nod, true, nn); break; } if(immconst(l)) { // NOTE: Reversing the comparison here is wrong // for floating point ordering comparisons involving NaN, // but we don't have any of those yet so we don't // bother worrying about it. o = invrel[relindex(o)]; /* bad, 13 is address of external that becomes constant */ if(r->addable < INDEXED || r->addable == 13) { regalloc(&nod, r, nn); cgen(r, &nod); gopcode(o, l->type, &nod, l); regfree(&nod); } else gopcode(o, l->type, r, l); goto com; } if(typefd[l->type->etype]) o = invrel[relindex(logrel[relindex(o)])]; if(l->complex >= r->complex) { regalloc(&nod, l, nn); cgen(l, &nod); if(r->addable < INDEXED || hardconst(r) || typefd[l->type->etype]) { regalloc(&nod1, r, Z); cgen(r, &nod1); gopcode(o, l->type, &nod, &nod1); regfree(&nod1); } else { gopcode(o, l->type, &nod, r); } regfree(&nod); goto fixfloat; } regalloc(&nod, r, nn); cgen(r, &nod); if(l->addable < INDEXED || l->addable == 13 || hardconst(l)) { regalloc(&nod1, l, Z); cgen(l, &nod1); if(typechl[l->type->etype] && ewidth[l->type->etype] <= ewidth[TINT]) gopcode(o, types[TINT], &nod1, &nod); else gopcode(o, l->type, &nod1, &nod); regfree(&nod1); } else gopcode(o, l->type, l, &nod); regfree(&nod); fixfloat: if(typefd[l->type->etype]) { switch(o) { case OEQ: // Already emitted AJEQ; want AJEQ and AJPC. p1 = p; gbranch(OGOTO); p2 = p; patch(p1, pc); gins(AJPC, Z, Z); patch(p2, pc); break; case ONE: // Already emitted AJNE; want AJNE or AJPS. p1 = p; gins(AJPS, Z, Z); p2 = p; gbranch(OGOTO); p3 = p; patch(p1, pc); patch(p2, pc); gbranch(OGOTO); patch(p3, pc); break; } } com: if(nn != Z) { p1 = p; gmove(nodconst(1L), nn); gbranch(OGOTO); p2 = p; patch(p1, pc); gmove(nodconst(0L), nn); patch(p2, pc); } break; } cursafe = curs; } void sugen(Node *n, Node *nn, int32 w) { Prog *p1; Node nod0, nod1, nod2, nod3, nod4, *l, *r; Type *t; int c, mt, mo; vlong o0, o1; if(n == Z || n->type == T) return; if(debug['g']) { prtree(nn, "sugen lhs"); prtree(n, "sugen"); } if(nn == nodrat) if(w > nrathole) nrathole = w; switch(n->op) { case OIND: if(nn == Z) { nullwarn(n->left, Z); break; } default: goto copy; case OCONST: goto copy; case ODOT: l = n->left; sugen(l, nodrat, l->type->width); if(nn == Z) break; warn(n, "non-interruptable temporary"); nod1 = *nodrat; r = n->right; if(!r || r->op != OCONST) { diag(n, "DOT and no offset"); break; } nod1.xoffset += (int32)r->vconst; nod1.type = n->type; sugen(&nod1, nn, w); break; case OSTRUCT: /* * rewrite so lhs has no fn call */ if(nn != Z && side(nn)) { nod1 = *n; nod1.type = typ(TIND, n->type); regret(&nod2, &nod1); lcgen(nn, &nod2); regsalloc(&nod0, &nod1); cgen(&nod2, &nod0); regfree(&nod2); nod1 = *n; nod1.op = OIND; nod1.left = &nod0; nod1.right = Z; nod1.complex = 1; sugen(n, &nod1, w); return; } r = n->left; for(t = n->type->link; t != T; t = t->down) { l = r; if(r->op == OLIST) { l = r->left; r = r->right; } if(nn == Z) { cgen(l, nn); continue; } /* * hand craft *(&nn + o) = l */ nod0 = znode; nod0.op = OAS; nod0.type = t; nod0.left = &nod1; nod0.right = nil; nod1 = znode; nod1.op = OIND; nod1.type = t; nod1.left = &nod2; nod2 = znode; nod2.op = OADD; nod2.type = typ(TIND, t); nod2.left = &nod3; nod2.right = &nod4; nod3 = znode; nod3.op = OADDR; nod3.type = nod2.type; nod3.left = nn; nod4 = znode; nod4.op = OCONST; nod4.type = nod2.type; nod4.vconst = t->offset; ccom(&nod0); acom(&nod0); xcom(&nod0); nod0.addable = 0; nod0.right = l; // prtree(&nod0, "hand craft"); cgen(&nod0, Z); } break; case OAS: if(nn == Z) { if(n->addable < INDEXED) sugen(n->right, n->left, w); break; } sugen(n->right, nodrat, w); warn(n, "non-interruptable temporary"); sugen(nodrat, n->left, w); sugen(nodrat, nn, w); break; case OFUNC: if(nn == Z) { sugen(n, nodrat, w); break; } if(nn->op != OIND) { nn = new1(OADDR, nn, Z); nn->type = types[TIND]; nn->addable = 0; } else nn = nn->left; n = new(OFUNC, n->left, new(OLIST, nn, n->right)); n->type = types[TVOID]; n->left->type = types[TVOID]; cgen(n, Z); break; case OCOND: bcgen(n->left, 1); p1 = p; sugen(n->right->left, nn, w); gbranch(OGOTO); patch(p1, pc); p1 = p; sugen(n->right->right, nn, w); patch(p1, pc); break; case OCOMMA: cgen(n->left, Z); sugen(n->right, nn, w); break; } return; copy: if(nn == Z) { switch(n->op) { case OASADD: case OASSUB: case OASAND: case OASOR: case OASXOR: case OASMUL: case OASLMUL: case OASASHL: case OASASHR: case OASLSHR: break; case OPOSTINC: case OPOSTDEC: case OPREINC: case OPREDEC: break; default: return; } } if(n->complex >= FNX && nn != nil && nn->complex >= FNX) { t = nn->type; nn->type = types[TIND]; regialloc(&nod1, nn, Z); lcgen(nn, &nod1); regsalloc(&nod2, nn); nn->type = t; gins(AMOVQ, &nod1, &nod2); regfree(&nod1); nod2.type = typ(TIND, t); nod1 = nod2; nod1.op = OIND; nod1.left = &nod2; nod1.right = Z; nod1.complex = 1; nod1.type = t; sugen(n, &nod1, w); return; } if(w <= 32) { c = cursafe; if(n->left != Z && n->left->complex >= FNX && n->right != Z && n->right->complex >= FNX) { regsalloc(&nod1, n->right); cgen(n->right, &nod1); nod2 = *n; nod2.right = &nod1; cgen(&nod2, nn); cursafe = c; return; } if(w & 7) { mt = TLONG; mo = AMOVL; } else { mt = TVLONG; mo = AMOVQ; } if(n->complex > nn->complex) { t = n->type; n->type = types[mt]; regalloc(&nod0, n, Z); if(!vaddr(n, 0)) { reglcgen(&nod1, n, Z); n->type = t; n = &nod1; } else n->type = t; t = nn->type; nn->type = types[mt]; if(!vaddr(nn, 0)) { reglcgen(&nod2, nn, Z); nn->type = t; nn = &nod2; } else nn->type = t; } else { t = nn->type; nn->type = types[mt]; regalloc(&nod0, nn, Z); if(!vaddr(nn, 0)) { reglcgen(&nod2, nn, Z); nn->type = t; nn = &nod2; } else nn->type = t; t = n->type; n->type = types[mt]; if(!vaddr(n, 0)) { reglcgen(&nod1, n, Z); n->type = t; n = &nod1; } else n->type = t; } o0 = n->xoffset; o1 = nn->xoffset; w /= ewidth[mt]; while(--w >= 0) { gins(mo, n, &nod0); gins(mo, &nod0, nn); n->xoffset += ewidth[mt]; nn->xoffset += ewidth[mt]; } n->xoffset = o0; nn->xoffset = o1; if(nn == &nod2) regfree(&nod2); if(n == &nod1) regfree(&nod1); regfree(&nod0); return; } /* botch, need to save in .safe */ c = 0; if(n->complex > nn->complex) { t = n->type; n->type = types[TIND]; nodreg(&nod1, n, D_SI); if(reg[D_SI]) { gins(APUSHQ, &nod1, Z); c |= 1; reg[D_SI]++; } lcgen(n, &nod1); n->type = t; t = nn->type; nn->type = types[TIND]; nodreg(&nod2, nn, D_DI); if(reg[D_DI]) { warn(Z, "DI botch"); gins(APUSHQ, &nod2, Z); c |= 2; reg[D_DI]++; } lcgen(nn, &nod2); nn->type = t; } else { t = nn->type; nn->type = types[TIND]; nodreg(&nod2, nn, D_DI); if(reg[D_DI]) { warn(Z, "DI botch"); gins(APUSHQ, &nod2, Z); c |= 2; reg[D_DI]++; } lcgen(nn, &nod2); nn->type = t; t = n->type; n->type = types[TIND]; nodreg(&nod1, n, D_SI); if(reg[D_SI]) { gins(APUSHQ, &nod1, Z); c |= 1; reg[D_SI]++; } lcgen(n, &nod1); n->type = t; } nodreg(&nod3, n, D_CX); if(reg[D_CX]) { gins(APUSHQ, &nod3, Z); c |= 4; reg[D_CX]++; } gins(AMOVL, nodconst(w/SZ_INT), &nod3); gins(ACLD, Z, Z); gins(AREP, Z, Z); gins(AMOVSL, Z, Z); if(c & 4) { gins(APOPQ, Z, &nod3); reg[D_CX]--; } if(c & 2) { gins(APOPQ, Z, &nod2); reg[nod2.reg]--; } if(c & 1) { gins(APOPQ, Z, &nod1); reg[nod1.reg]--; } } /* * TO DO */ void layout(Node *f, Node *t, int c, int cv, Node *cn) { Node t1, t2; while(c > 3) { layout(f, t, 2, 0, Z); c -= 2; } regalloc(&t1, &lregnode, Z); regalloc(&t2, &lregnode, Z); if(c > 0) { gmove(f, &t1); f->xoffset += SZ_INT; } if(cn != Z) gmove(nodconst(cv), cn); if(c > 1) { gmove(f, &t2); f->xoffset += SZ_INT; } if(c > 0) { gmove(&t1, t); t->xoffset += SZ_INT; } if(c > 2) { gmove(f, &t1); f->xoffset += SZ_INT; } if(c > 1) { gmove(&t2, t); t->xoffset += SZ_INT; } if(c > 2) { gmove(&t1, t); t->xoffset += SZ_INT; } regfree(&t1); regfree(&t2); } /* * constant is not vlong or fits as 32-bit signed immediate */ int immconst(Node *n) { int32 v; if(n->op != OCONST || !typechlpv[n->type->etype]) return 0; if(typechl[n->type->etype]) return 1; v = n->vconst; return n->vconst == (vlong)v; } /* * if a constant and vlong, doesn't fit as 32-bit signed immediate */ int hardconst(Node *n) { return n->op == OCONST && !immconst(n); } /* * casting up to t2 covers an intermediate cast to t1 */ int castup(Type *t1, Type *t2) { int ft; if(!nilcast(t1, t2)) return 0; /* known to be small to large */ ft = t1->etype; switch(t2->etype){ case TINT: case TLONG: return ft == TLONG || ft == TINT || ft == TSHORT || ft == TCHAR; case TUINT: case TULONG: return ft == TULONG || ft == TUINT || ft == TUSHORT || ft == TUCHAR; case TVLONG: return ft == TLONG || ft == TINT || ft == TSHORT; case TUVLONG: return ft == TULONG || ft == TUINT || ft == TUSHORT; } return 0; } void zeroregm(Node *n) { gins(AMOVL, nodconst(0), n); } /* do we need to load the address of a vlong? */ int vaddr(Node *n, int a) { switch(n->op) { case ONAME: if(a) return 1; return !(n->class == CEXTERN || n->class == CGLOBL || n->class == CSTATIC); case OCONST: case OREGISTER: case OINDREG: return 1; } return 0; } int32 hi64v(Node *n) { if(align(0, types[TCHAR], Aarg1, nil)) /* isbigendian */ return (int32)(n->vconst) & ~0L; else return (int32)((uvlong)n->vconst>>32) & ~0L; } int32 lo64v(Node *n) { if(align(0, types[TCHAR], Aarg1, nil)) /* isbigendian */ return (int32)((uvlong)n->vconst>>32) & ~0L; else return (int32)(n->vconst) & ~0L; } Node * hi64(Node *n) { return nodconst(hi64v(n)); } Node * lo64(Node *n) { return nodconst(lo64v(n)); } int cond(int op) { switch(op) { case OANDAND: case OOROR: case ONOT: return 1; case OEQ: case ONE: case OLE: case OLT: case OGE: case OGT: case OHI: case OHS: case OLO: case OLS: return 1; } return 0; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6c/div.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000011644�12412656734�014272� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6c/div.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/div.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" /* * Based on: Granlund, T.; Montgomery, P.L. * "Division by Invariant Integers using Multiplication". * SIGPLAN Notices, Vol. 29, June 1994, page 61. */ #define TN(n) ((uvlong)1 << (n)) #define T31 TN(31) #define T32 TN(32) int multiplier(uint32 d, int p, uvlong *mp) { int l; uvlong mlo, mhi, tlo, thi; l = topbit(d - 1) + 1; mlo = (((TN(l) - d) << 32) / d) + T32; if(l + p == 64) mhi = (((TN(l) + 1 - d) << 32) / d) + T32; else mhi = (TN(32 + l) + TN(32 + l - p)) / d; /*assert(mlo < mhi);*/ while(l > 0) { tlo = mlo >> 1; thi = mhi >> 1; if(tlo == thi) break; mlo = tlo; mhi = thi; l--; } *mp = mhi; return l; } int sdiv(uint32 d, uint32 *mp, int *sp) { int s; uvlong m; s = multiplier(d, 32 - 1, &m); *mp = m; *sp = s; if(m >= T31) return 1; else return 0; } int udiv(uint32 d, uint32 *mp, int *sp, int *pp) { int p, s; uvlong m; s = multiplier(d, 32, &m); p = 0; if(m >= T32) { while((d & 1) == 0) { d >>= 1; p++; } s = multiplier(d, 32 - p, &m); } *mp = m; *pp = p; if(m >= T32) { /*assert(p == 0);*/ *sp = s - 1; return 1; } else { *sp = s; return 0; } } void sdivgen(Node *l, Node *r, Node *ax, Node *dx) { int a, s; uint32 m; vlong c; c = r->vconst; if(c < 0) c = -c; a = sdiv(c, &m, &s); //print("a=%d i=%d s=%d m=%ux\n", a, (long)r->vconst, s, m); gins(AMOVL, nodconst(m), ax); gins(AIMULL, l, Z); gins(AMOVL, l, ax); if(a) gins(AADDL, ax, dx); gins(ASHRL, nodconst(31), ax); gins(ASARL, nodconst(s), dx); gins(AADDL, ax, dx); if(r->vconst < 0) gins(ANEGL, Z, dx); } void udivgen(Node *l, Node *r, Node *ax, Node *dx) { int a, s, t; uint32 m; Node nod; a = udiv(r->vconst, &m, &s, &t); //print("a=%ud i=%d p=%d s=%d m=%ux\n", a, (long)r->vconst, t, s, m); if(t != 0) { gins(AMOVL, l, ax); gins(ASHRL, nodconst(t), ax); gins(AMOVL, nodconst(m), dx); gins(AMULL, dx, Z); } else if(a) { if(l->op != OREGISTER) { regalloc(&nod, l, Z); gins(AMOVL, l, &nod); l = &nod; } gins(AMOVL, nodconst(m), ax); gins(AMULL, l, Z); gins(AADDL, l, dx); gins(ARCRL, nodconst(1), dx); if(l == &nod) regfree(l); } else { gins(AMOVL, nodconst(m), ax); gins(AMULL, l, Z); } if(s != 0) gins(ASHRL, nodconst(s), dx); } void sext(Node *d, Node *s, Node *l) { if(s->reg == D_AX && !nodreg(d, Z, D_DX)) { reg[D_DX]++; gins(ACDQ, Z, Z); } else { regalloc(d, l, Z); gins(AMOVL, s, d); gins(ASARL, nodconst(31), d); } } void sdiv2(int32 c, int v, Node *l, Node *n) { Node nod; if(v > 0) { if(v > 1) { sext(&nod, n, l); gins(AANDL, nodconst((1 << v) - 1), &nod); gins(AADDL, &nod, n); regfree(&nod); } else { gins(ACMPL, n, nodconst(0x80000000)); gins(ASBBL, nodconst(-1), n); } gins(ASARL, nodconst(v), n); } if(c < 0) gins(ANEGL, Z, n); } void smod2(int32 c, int v, Node *l, Node *n) { Node nod; if(c == 1) { zeroregm(n); return; } sext(&nod, n, l); if(v == 0) { zeroregm(n); gins(AXORL, &nod, n); gins(ASUBL, &nod, n); } else if(v > 1) { gins(AANDL, nodconst((1 << v) - 1), &nod); gins(AADDL, &nod, n); gins(AANDL, nodconst((1 << v) - 1), n); gins(ASUBL, &nod, n); } else { gins(AANDL, nodconst(1), n); gins(AXORL, &nod, n); gins(ASUBL, &nod, n); } regfree(&nod); } ��������������������������������������������������������������������������������������������go/src/cmd/6c/doc.go��������������������������������������������������������������������������������0100644�0000000�0000000�00000000616�12412656734�014435� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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 ignore /* 6c is a version of the Plan 9 C compiler. The original is documented at http://plan9.bell-labs.com/magic/man2html/1/8c Its target architecture is the x86-64, referred to by these tools as amd64. */ package main ������������������������������������������������������������������������������������������������������������������go/src/cmd/6c/gc.h����������������������������������������������������������������������������������0100644�0000000�0000000�00000016706�12412656737�014115� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6c/gc.h // http://code.google.com/p/inferno-os/source/browse/utils/6c/gc.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "../cc/cc.h" #include "../6l/6.out.h" /* * 6c/amd64 * Intel 386 with AMD64 extensions */ #define SZ_CHAR 1 #define SZ_SHORT 2 #define SZ_INT 4 #define SZ_LONG 4 #define SZ_IND 8 #define SZ_FLOAT 4 #define SZ_VLONG 8 #define SZ_DOUBLE 8 #define FNX 100 typedef struct Case Case; typedef struct C1 C1; typedef struct Reg Reg; typedef struct Rgn Rgn; typedef struct Renv Renv; EXTERN struct { Node* regtree; Node* basetree; short scale; short reg; short ptr; } idx; #define INDEXED 9 #define A ((Addr*)0) #define P ((Prog*)0) struct Case { Case* link; vlong val; int32 label; char def; char isv; }; #define C ((Case*)0) struct C1 { vlong val; int32 label; }; struct Reg { int32 pc; int32 rpo; /* reverse post ordering */ Bits set; Bits use1; Bits use2; Bits refbehind; Bits refahead; Bits calbehind; Bits calahead; Bits regdiff; Bits act; int32 regu; int32 loop; /* could be shorter */ Reg* log5; int32 active; Reg* p1; Reg* p2; Reg* p2link; Reg* s1; Reg* s2; Reg* link; Prog* prog; }; #define R ((Reg*)0) struct Renv { int safe; Node base; Node* saved; Node* scope; }; #define NRGN 600 struct Rgn { Reg* enter; short cost; short varno; short regno; }; EXTERN int32 breakpc; EXTERN int32 nbreak; EXTERN Case* cases; EXTERN Node constnode; EXTERN Node fconstnode; EXTERN Node vconstnode; EXTERN int32 continpc; EXTERN int32 curarg; EXTERN int32 cursafe; EXTERN Prog* lastp; EXTERN int32 maxargsafe; EXTERN int mnstring; EXTERN int retok; EXTERN Node* nodrat; EXTERN Node* nodret; EXTERN Node* nodsafe; EXTERN int32 nrathole; EXTERN int32 nstring; EXTERN Prog* p; EXTERN int32 pc; EXTERN Node lregnode; EXTERN Node qregnode; EXTERN char string[NSNAME]; EXTERN Sym* symrathole; EXTERN Node znode; EXTERN Prog zprog; EXTERN int reg[D_NONE]; EXTERN int32 exregoffset; EXTERN int32 exfregoffset; EXTERN uchar typechlpv[NTYPE]; #define BLOAD(r) band(bnot(r->refbehind), r->refahead) #define BSTORE(r) band(bnot(r->calbehind), r->calahead) #define LOAD(r) (~r->refbehind.b[z] & r->refahead.b[z]) #define STORE(r) (~r->calbehind.b[z] & r->calahead.b[z]) #define bset(a,n) ((a).b[(n)/32]&(1L<<(n)%32)) #define CLOAD 5 #define CREF 5 #define CINF 1000 #define LOOP 3 EXTERN Rgn region[NRGN]; EXTERN Rgn* rgp; EXTERN int nregion; EXTERN int nvar; EXTERN Bits externs; EXTERN Bits params; EXTERN Bits consts; EXTERN Bits addrs; EXTERN int32 regbits; EXTERN int32 exregbits; EXTERN int change; EXTERN int suppress; EXTERN Reg* firstr; EXTERN Reg* lastr; EXTERN Reg zreg; EXTERN Reg* freer; EXTERN int32* idom; EXTERN Reg** rpo2r; EXTERN int32 maxnr; extern char* anames[]; /* * sgen.c */ void codgen(Node*, Node*); void gen(Node*); void noretval(int); void usedset(Node*, int); void xcom(Node*); void indx(Node*); int bcomplex(Node*, Node*); Prog* gtext(Sym*, int32); vlong argsize(void); /* * cgen.c */ void zeroregm(Node*); void cgen(Node*, Node*); void reglcgen(Node*, Node*, Node*); void lcgen(Node*, Node*); void bcgen(Node*, int); void boolgen(Node*, int, Node*); void sugen(Node*, Node*, int32); int needreg(Node*, int); int hardconst(Node*); int immconst(Node*); /* * txt.c */ void ginit(void); void gclean(void); void nextpc(void); void gargs(Node*, Node*, Node*); void garg1(Node*, Node*, Node*, int, Node**); Node* nodconst(int32); Node* nodfconst(double); Node* nodgconst(vlong, Type*); int nodreg(Node*, Node*, int); int isreg(Node*, int); void regret(Node*, Node*); void regalloc(Node*, Node*, Node*); void regfree(Node*); void regialloc(Node*, Node*, Node*); void regsalloc(Node*, Node*); void regaalloc1(Node*, Node*); void regaalloc(Node*, Node*); void regind(Node*, Node*); void gprep(Node*, Node*); void naddr(Node*, Addr*); void gcmp(int, Node*, vlong); void gmove(Node*, Node*); void gins(int a, Node*, Node*); void gopcode(int, Type*, Node*, Node*); int samaddr(Node*, Node*); void gbranch(int); void patch(Prog*, int32); int sconst(Node*); void gpseudo(int, Sym*, Node*); void gprefetch(Node*); void gpcdata(int, int); /* * swt.c */ int swcmp(const void*, const void*); void doswit(Node*); void swit1(C1*, int, int32, Node*); void swit2(C1*, int, int32, Node*); void newcase(void); void bitload(Node*, Node*, Node*, Node*, Node*); void bitstore(Node*, Node*, Node*, Node*, Node*); int32 outstring(char*, int32); void nullwarn(Node*, Node*); void sextern(Sym*, Node*, int32, int32); void gextern(Sym*, Node*, int32, int32); void outcode(void); /* * list */ void listinit(void); /* * reg.c */ Reg* rega(void); int rcmp(const void*, const void*); void regopt(Prog*); void addmove(Reg*, int, int, int); Bits mkvar(Reg*, Addr*); void prop(Reg*, Bits, Bits); void loopit(Reg*, int32); void synch(Reg*, Bits); uint32 allreg(uint32, Rgn*); void paint1(Reg*, int); uint32 paint2(Reg*, int); void paint3(Reg*, int, int32, int); void addreg(Addr*, int); /* * peep.c */ void peep(void); void excise(Reg*); Reg* uniqp(Reg*); Reg* uniqs(Reg*); int regtyp(Addr*); int anyvar(Addr*); int subprop(Reg*); int copyprop(Reg*); int copy1(Addr*, Addr*, Reg*, int); int copyu(Prog*, Addr*, Addr*); int copyas(Addr*, Addr*); int copyau(Addr*, Addr*); int copysub(Addr*, Addr*, Addr*, int); int copysub1(Prog*, Addr*, Addr*, int); int32 RtoB(int); int32 FtoB(int); int BtoR(int32); int BtoF(int32); #define D_HI D_NONE #define D_LO D_NONE /* * bound */ void comtarg(void); /* * com64 */ int cond(int); int com64(Node*); void com64init(void); void bool64(Node*); int32 lo64v(Node*); int32 hi64v(Node*); Node* lo64(Node*); Node* hi64(Node*); /* * div/mul */ void sdivgen(Node*, Node*, Node*, Node*); void udivgen(Node*, Node*, Node*, Node*); void sdiv2(int32, int, Node*, Node*); void smod2(int32, int, Node*, Node*); void mulgen(Type*, Node*, Node*); void genmuladd(Node*, Node*, int, Node*); void shiftit(Type*, Node*, Node*); #define D_X7 (D_X0+7) void fgopcode(int, Node*, Node*, int, int); ����������������������������������������������������������go/src/cmd/6c/list.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000003371�12412656734�014461� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6c/list.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/list.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #define EXTERN #include "gc.h" void listinit(void) { listinit6(); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6c/machcap.c�����������������������������������������������������������������������������0100644�0000000�0000000�00000005071�12412656734�015101� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6c/machcap.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/machcap.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" int machcap(Node *n) { if(n == Z) return 1; /* test */ switch(n->op) { case OMUL: case OLMUL: case OASMUL: case OASLMUL: if(typechl[n->type->etype]) return 1; if(typev[n->type->etype]) return 1; break; case OCOM: case ONEG: case OADD: case OAND: case OOR: case OSUB: case OXOR: case OASHL: case OLSHR: case OASHR: if(typechlv[n->left->type->etype]) return 1; break; case OCAST: return 1; case OCOND: case OCOMMA: case OLIST: case OANDAND: case OOROR: case ONOT: return 1; case OASADD: case OASSUB: case OASAND: case OASOR: case OASXOR: return 1; case OASASHL: case OASASHR: case OASLSHR: return 1; case OPOSTINC: case OPOSTDEC: case OPREINC: case OPREDEC: return 1; case OEQ: case ONE: case OLE: case OGT: case OLT: case OGE: case OHI: case OHS: case OLO: case OLS: return 1; } return 0; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6c/mul.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000016135�12412656734�014305� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6c/mul.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/mul.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" typedef struct Malg Malg; typedef struct Mparam Mparam; struct Malg { schar vals[10]; }; struct Mparam { uint32 value; schar alg; char neg; char shift; char arg; schar off; }; static Mparam multab[32]; static int mulptr; static Malg malgs[] = { {0, 100}, {-1, 1, 100}, {-9, -5, -3, 3, 5, 9, 100}, {6, 10, 12, 18, 20, 24, 36, 40, 72, 100}, {-8, -4, -2, 2, 4, 8, 100}, }; /* * return position of lowest 1 */ int lowbit(uint32 v) { int s, i; uint32 m; s = 0; m = 0xFFFFFFFFUL; for(i = 16; i > 0; i >>= 1) { m >>= i; if((v & m) == 0) { v >>= i; s += i; } } return s; } void genmuladd(Node *d, Node *s, int m, Node *a) { Node nod; nod.op = OINDEX; nod.left = a; nod.right = s; nod.scale = m; nod.type = types[TIND]; nod.xoffset = 0; xcom(&nod); gopcode(OADDR, d->type, &nod, d); } void mulparam(uint32 m, Mparam *mp) { int c, i, j, n, o, q, s; int bc, bi, bn, bo, bq, bs, bt; schar *p; int32 u; uint32 t; bc = bq = 10; bi = bn = bo = bs = bt = 0; for(i = 0; i < nelem(malgs); i++) { for(p = malgs[i].vals, j = 0; (o = p[j]) < 100; j++) for(s = 0; s < 2; s++) { c = 10; q = 10; u = m - o; if(u == 0) continue; if(s) { o = -o; if(o > 0) continue; u = -u; } n = lowbit(u); t = (uint32)u >> n; switch(i) { case 0: if(t == 1) { c = s + 1; q = 0; break; } switch(t) { case 3: case 5: case 9: c = s + 1; if(n) c++; q = 0; break; } if(s) break; switch(t) { case 15: case 25: case 27: case 45: case 81: c = 2; if(n) c++; q = 1; break; } break; case 1: if(t == 1) { c = 3; q = 3; break; } switch(t) { case 3: case 5: case 9: c = 3; q = 2; break; } break; case 2: if(t == 1) { c = 3; q = 2; break; } break; case 3: if(s) break; if(t == 1) { c = 3; q = 1; break; } break; case 4: if(t == 1) { c = 3; q = 0; break; } break; } if(c < bc || (c == bc && q > bq)) { bc = c; bi = i; bn = n; bo = o; bq = q; bs = s; bt = t; } } } mp->value = m; if(bc <= 3) { mp->alg = bi; mp->shift = bn; mp->off = bo; mp->neg = bs; mp->arg = bt; } else mp->alg = -1; } int m0(int a) { switch(a) { case -2: case 2: return 2; case -3: case 3: return 2; case -4: case 4: return 4; case -5: case 5: return 4; case 6: return 2; case -8: case 8: return 8; case -9: case 9: return 8; case 10: return 4; case 12: return 2; case 15: return 2; case 18: return 8; case 20: return 4; case 24: return 2; case 25: return 4; case 27: return 2; case 36: return 8; case 40: return 4; case 45: return 4; case 72: return 8; case 81: return 8; } diag(Z, "bad m0"); return 0; } int m1(int a) { switch(a) { case 15: return 4; case 25: return 4; case 27: return 8; case 45: return 8; case 81: return 8; } diag(Z, "bad m1"); return 0; } int m2(int a) { switch(a) { case 6: return 2; case 10: return 2; case 12: return 4; case 18: return 2; case 20: return 4; case 24: return 8; case 36: return 4; case 40: return 8; case 72: return 8; } diag(Z, "bad m2"); return 0; } void shiftit(Type *t, Node *s, Node *d) { int32 c; c = (int32)s->vconst & 31; switch(c) { case 0: break; case 1: gopcode(OADD, t, d, d); break; default: gopcode(OASHL, t, s, d); } } static int mulgen1(uint32 v, Node *n) { int i, o; Mparam *p; Node nod, nods; for(i = 0; i < nelem(multab); i++) { p = &multab[i]; if(p->value == v) goto found; } p = &multab[mulptr]; if(++mulptr == nelem(multab)) mulptr = 0; mulparam(v, p); found: // print("v=%.x a=%d n=%d s=%d g=%d o=%d \n", p->value, p->alg, p->neg, p->shift, p->arg, p->off); if(p->alg < 0) return 0; nods = *nodconst(p->shift); o = OADD; if(p->alg > 0) { regalloc(&nod, n, Z); if(p->off < 0) o = OSUB; } switch(p->alg) { case 0: switch(p->arg) { case 1: shiftit(n->type, &nods, n); break; case 15: case 25: case 27: case 45: case 81: genmuladd(n, n, m1(p->arg), n); /* fall thru */ case 3: case 5: case 9: genmuladd(n, n, m0(p->arg), n); shiftit(n->type, &nods, n); break; default: goto bad; } if(p->neg == 1) gins(ANEGL, Z, n); break; case 1: switch(p->arg) { case 1: gmove(n, &nod); shiftit(n->type, &nods, &nod); break; case 3: case 5: case 9: genmuladd(&nod, n, m0(p->arg), n); shiftit(n->type, &nods, &nod); break; default: goto bad; } if(p->neg) gopcode(o, n->type, &nod, n); else { gopcode(o, n->type, n, &nod); gmove(&nod, n); } break; case 2: genmuladd(&nod, n, m0(p->off), n); shiftit(n->type, &nods, n); goto comop; case 3: genmuladd(&nod, n, m0(p->off), n); shiftit(n->type, &nods, n); genmuladd(n, &nod, m2(p->off), n); break; case 4: genmuladd(&nod, n, m0(p->off), nodconst(0)); shiftit(n->type, &nods, n); goto comop; default: diag(Z, "bad mul alg"); break; comop: if(p->neg) { gopcode(o, n->type, n, &nod); gmove(&nod, n); } else gopcode(o, n->type, &nod, n); } if(p->alg > 0) regfree(&nod); return 1; bad: diag(Z, "mulgen botch"); return 1; } void mulgen(Type *t, Node *r, Node *n) { if(!mulgen1(r->vconst, n)) gopcode(OMUL, t, r, n); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6c/peep.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000034615�12412656734�014444� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6c/peep.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/peep.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" static int needc(Prog *p) { while(p != P) { switch(p->as) { case AADCL: case AADCQ: case ASBBL: case ASBBQ: case ARCRL: case ARCRQ: return 1; case AADDL: case AADDQ: case ASUBL: case ASUBQ: case AJMP: case ARET: case ACALL: return 0; default: if(p->to.type == D_BRANCH) return 0; } p = p->link; } return 0; } static Reg* rnops(Reg *r) { Prog *p; Reg *r1; if(r != R) for(;;){ p = r->prog; if(p->as != ANOP || p->from.type != D_NONE || p->to.type != D_NONE) break; r1 = uniqs(r); if(r1 == R) break; r = r1; } return r; } void peep(void) { Reg *r, *r1, *r2; Prog *p, *p1; int t; /* * complete R structure */ t = 0; for(r=firstr; r!=R; r=r1) { r1 = r->link; if(r1 == R) break; p = r->prog->link; while(p != r1->prog) switch(p->as) { default: r2 = rega(); r->link = r2; r2->link = r1; r2->prog = p; r2->p1 = r; r->s1 = r2; r2->s1 = r1; r1->p1 = r2; r = r2; t++; case ADATA: case AGLOBL: case ANAME: case ASIGNAME: p = p->link; } } pc = 0; /* speculating it won't kill */ loop1: t = 0; for(r=firstr; r!=R; r=r->link) { p = r->prog; switch(p->as) { case AMOVL: case AMOVQ: case AMOVSS: case AMOVSD: if(regtyp(&p->to)) if(regtyp(&p->from)) { if(copyprop(r)) { excise(r); t++; } else if(subprop(r) && copyprop(r)) { excise(r); t++; } } break; case AMOVBLZX: case AMOVWLZX: case AMOVBLSX: case AMOVWLSX: if(regtyp(&p->to)) { r1 = rnops(uniqs(r)); if(r1 != R) { p1 = r1->prog; if(p->as == p1->as && p->to.type == p1->from.type){ p1->as = AMOVL; t++; } } } break; case AMOVBQSX: case AMOVBQZX: case AMOVWQSX: case AMOVWQZX: case AMOVLQSX: case AMOVLQZX: if(regtyp(&p->to)) { r1 = rnops(uniqs(r)); if(r1 != R) { p1 = r1->prog; if(p->as == p1->as && p->to.type == p1->from.type){ p1->as = AMOVQ; t++; } } } break; case AADDL: case AADDQ: case AADDW: if(p->from.type != D_CONST || needc(p->link)) break; if(p->from.offset == -1){ if(p->as == AADDQ) p->as = ADECQ; else if(p->as == AADDL) p->as = ADECL; else p->as = ADECW; p->from = zprog.from; } else if(p->from.offset == 1){ if(p->as == AADDQ) p->as = AINCQ; else if(p->as == AADDL) p->as = AINCL; else p->as = AINCW; p->from = zprog.from; } break; case ASUBL: case ASUBQ: case ASUBW: if(p->from.type != D_CONST || needc(p->link)) break; if(p->from.offset == -1) { if(p->as == ASUBQ) p->as = AINCQ; else if(p->as == ASUBL) p->as = AINCL; else p->as = AINCW; p->from = zprog.from; } else if(p->from.offset == 1){ if(p->as == ASUBQ) p->as = ADECQ; else if(p->as == ASUBL) p->as = ADECL; else p->as = ADECW; p->from = zprog.from; } break; } } if(t) goto loop1; } void excise(Reg *r) { Prog *p; p = r->prog; p->as = ANOP; p->from = zprog.from; p->to = zprog.to; } Reg* uniqp(Reg *r) { Reg *r1; r1 = r->p1; if(r1 == R) { r1 = r->p2; if(r1 == R || r1->p2link != R) return R; } else if(r->p2 != R) return R; return r1; } Reg* uniqs(Reg *r) { Reg *r1; r1 = r->s1; if(r1 == R) { r1 = r->s2; if(r1 == R) return R; } else if(r->s2 != R) return R; return r1; } int regtyp(Addr *a) { int t; t = a->type; if(t >= D_AX && t <= D_R15) return 1; if(t >= D_X0 && t <= D_X0+15) return 1; return 0; } /* * the idea is to substitute * one register for another * from one MOV to another * MOV a, R0 * ADD b, R0 / no use of R1 * MOV R0, R1 * would be converted to * MOV a, R1 * ADD b, R1 * MOV R1, R0 * hopefully, then the former or latter MOV * will be eliminated by copy propagation. */ int subprop(Reg *r0) { Prog *p; Addr *v1, *v2; Reg *r; int t; p = r0->prog; v1 = &p->from; if(!regtyp(v1)) return 0; v2 = &p->to; if(!regtyp(v2)) return 0; for(r=uniqp(r0); r!=R; r=uniqp(r)) { if(uniqs(r) == R) break; p = r->prog; switch(p->as) { case ACALL: return 0; case AIMULL: case AIMULQ: case AIMULW: if(p->to.type != D_NONE) break; goto giveup; case AROLB: case AROLL: case AROLQ: case AROLW: case ARORB: case ARORL: case ARORQ: case ARORW: case ASALB: case ASALL: case ASALQ: case ASALW: case ASARB: case ASARL: case ASARQ: case ASARW: case ASHLB: case ASHLL: case ASHLQ: case ASHLW: case ASHRB: case ASHRL: case ASHRQ: case ASHRW: if(p->from.type == D_CONST) break; goto giveup; case ADIVB: case ADIVL: case ADIVQ: case ADIVW: case AIDIVB: case AIDIVL: case AIDIVQ: case AIDIVW: case AIMULB: case AMULB: case AMULL: case AMULQ: case AMULW: case AREP: case AREPN: case ACWD: case ACDQ: case ACQO: case ASTOSB: case ASTOSL: case ASTOSQ: case AMOVSB: case AMOVSL: case AMOVSQ: case AMOVQL: giveup: return 0; case AMOVL: case AMOVQ: if(p->to.type == v1->type) goto gotit; break; } if(copyau(&p->from, v2) || copyau(&p->to, v2)) break; if(copysub(&p->from, v1, v2, 0) || copysub(&p->to, v1, v2, 0)) break; } return 0; gotit: copysub(&p->to, v1, v2, 1); if(debug['P']) { print("gotit: %D->%D\n%P", v1, v2, r->prog); if(p->from.type == v2->type) print(" excise"); print("\n"); } for(r=uniqs(r); r!=r0; r=uniqs(r)) { p = r->prog; copysub(&p->from, v1, v2, 1); copysub(&p->to, v1, v2, 1); if(debug['P']) print("%P\n", r->prog); } t = v1->type; v1->type = v2->type; v2->type = t; if(debug['P']) print("%P last\n", r->prog); return 1; } /* * The idea is to remove redundant copies. * v1->v2 F=0 * (use v2 s/v2/v1/)* * set v1 F=1 * use v2 return fail * ----------------- * v1->v2 F=0 * (use v2 s/v2/v1/)* * set v1 F=1 * set v2 return success */ int copyprop(Reg *r0) { Prog *p; Addr *v1, *v2; Reg *r; p = r0->prog; v1 = &p->from; v2 = &p->to; if(copyas(v1, v2)) return 1; for(r=firstr; r!=R; r=r->link) r->active = 0; return copy1(v1, v2, r0->s1, 0); } int copy1(Addr *v1, Addr *v2, Reg *r, int f) { int t; Prog *p; if(r->active) { if(debug['P']) print("act set; return 1\n"); return 1; } r->active = 1; if(debug['P']) print("copy %D->%D f=%d\n", v1, v2, f); for(; r != R; r = r->s1) { p = r->prog; if(debug['P']) print("%P", p); if(!f && uniqp(r) == R) { f = 1; if(debug['P']) print("; merge; f=%d", f); } t = copyu(p, v2, A); switch(t) { case 2: /* rar, can't split */ if(debug['P']) print("; %D rar; return 0\n", v2); return 0; case 3: /* set */ if(debug['P']) print("; %D set; return 1\n", v2); return 1; case 1: /* used, substitute */ case 4: /* use and set */ if(f) { if(!debug['P']) return 0; if(t == 4) print("; %D used+set and f=%d; return 0\n", v2, f); else print("; %D used and f=%d; return 0\n", v2, f); return 0; } if(copyu(p, v2, v1)) { if(debug['P']) print("; sub fail; return 0\n"); return 0; } if(debug['P']) print("; sub %D/%D", v2, v1); if(t == 4) { if(debug['P']) print("; %D used+set; return 1\n", v2); return 1; } break; } if(!f) { t = copyu(p, v1, A); if(!f && (t == 2 || t == 3 || t == 4)) { f = 1; if(debug['P']) print("; %D set and !f; f=%d", v1, f); } } if(debug['P']) print("\n"); if(r->s2) if(!copy1(v1, v2, r->s2, f)) return 0; } return 1; } /* * return * 1 if v only used (and substitute), * 2 if read-alter-rewrite * 3 if set * 4 if set and used * 0 otherwise (not touched) */ int copyu(Prog *p, Addr *v, Addr *s) { switch(p->as) { default: if(debug['P']) print("unknown op %A\n", p->as); /* SBBL; ADCL; FLD1; SAHF */ return 2; case ANEGB: case ANEGW: case ANEGL: case ANEGQ: case ANOTB: case ANOTW: case ANOTL: case ANOTQ: if(copyas(&p->to, v)) return 2; break; case ALEAL: /* lhs addr, rhs store */ case ALEAQ: if(copyas(&p->from, v)) return 2; case ANOP: /* rhs store */ case AMOVL: case AMOVQ: case AMOVBLSX: case AMOVBLZX: case AMOVBQSX: case AMOVBQZX: case AMOVLQSX: case AMOVLQZX: case AMOVWLSX: case AMOVWLZX: case AMOVWQSX: case AMOVWQZX: case AMOVQL: case AMOVSS: case AMOVSD: case ACVTSD2SL: case ACVTSD2SQ: case ACVTSD2SS: case ACVTSL2SD: case ACVTSL2SS: case ACVTSQ2SD: case ACVTSQ2SS: case ACVTSS2SD: case ACVTSS2SL: case ACVTSS2SQ: case ACVTTSD2SL: case ACVTTSD2SQ: case ACVTTSS2SL: case ACVTTSS2SQ: if(copyas(&p->to, v)) { if(s != A) return copysub(&p->from, v, s, 1); if(copyau(&p->from, v)) return 4; return 3; } goto caseread; case AROLB: case AROLL: case AROLQ: case AROLW: case ARORB: case ARORL: case ARORQ: case ARORW: case ASALB: case ASALL: case ASALQ: case ASALW: case ASARB: case ASARL: case ASARQ: case ASARW: case ASHLB: case ASHLL: case ASHLQ: case ASHLW: case ASHRB: case ASHRL: case ASHRQ: case ASHRW: if(copyas(&p->to, v)) return 2; if(copyas(&p->from, v)) if(p->from.type == D_CX) return 2; goto caseread; case AADDB: /* rhs rar */ case AADDL: case AADDQ: case AADDW: case AANDB: case AANDL: case AANDQ: case AANDW: case ADECL: case ADECQ: case ADECW: case AINCL: case AINCQ: case AINCW: case ASUBB: case ASUBL: case ASUBQ: case ASUBW: case AORB: case AORL: case AORQ: case AORW: case AXORB: case AXORL: case AXORQ: case AXORW: case AMOVB: case AMOVW: case AADDSD: case AADDSS: case ACMPSD: case ACMPSS: case ADIVSD: case ADIVSS: case AMAXSD: case AMAXSS: case AMINSD: case AMINSS: case AMULSD: case AMULSS: case ARCPSS: case ARSQRTSS: case ASQRTSD: case ASQRTSS: case ASUBSD: case ASUBSS: case AXORPD: if(copyas(&p->to, v)) return 2; goto caseread; case ACMPL: /* read only */ case ACMPW: case ACMPB: case ACMPQ: case APREFETCHT0: case APREFETCHT1: case APREFETCHT2: case APREFETCHNTA: case ACOMISD: case ACOMISS: case AUCOMISD: case AUCOMISS: caseread: if(s != A) { if(copysub(&p->from, v, s, 1)) return 1; return copysub(&p->to, v, s, 1); } if(copyau(&p->from, v)) return 1; if(copyau(&p->to, v)) return 1; break; case AJGE: /* no reference */ case AJNE: case AJLE: case AJEQ: case AJHI: case AJLS: case AJMI: case AJPL: case AJGT: case AJLT: case AJCC: case AJCS: case AADJSP: case AWAIT: case ACLD: break; case AIMULL: case AIMULQ: case AIMULW: if(p->to.type != D_NONE) { if(copyas(&p->to, v)) return 2; goto caseread; } case ADIVB: case ADIVL: case ADIVQ: case ADIVW: case AIDIVB: case AIDIVL: case AIDIVQ: case AIDIVW: case AIMULB: case AMULB: case AMULL: case AMULQ: case AMULW: case ACWD: case ACDQ: case ACQO: if(v->type == D_AX || v->type == D_DX) return 2; goto caseread; case AREP: case AREPN: if(v->type == D_CX) return 2; goto caseread; case AMOVSB: case AMOVSL: case AMOVSQ: if(v->type == D_DI || v->type == D_SI) return 2; goto caseread; case ASTOSB: case ASTOSL: case ASTOSQ: if(v->type == D_AX || v->type == D_DI) return 2; goto caseread; case AJMP: /* funny */ if(s != A) { if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyau(&p->to, v)) return 1; return 0; case ARET: /* funny */ if(v->type == REGRET || v->type == FREGRET) return 2; if(s != A) return 1; return 3; case ACALL: /* funny */ if(REGARG >= 0 && v->type == (uchar)REGARG) return 2; if(s != A) { if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyau(&p->to, v)) return 4; return 3; case ATEXT: /* funny */ if(REGARG >= 0 && v->type == (uchar)REGARG) return 3; return 0; } return 0; } /* * direct reference, * could be set/use depending on * semantics */ int copyas(Addr *a, Addr *v) { if(a->type != v->type) return 0; if(regtyp(v)) return 1; if(v->type == D_AUTO || v->type == D_PARAM) if(v->offset == a->offset) return 1; return 0; } /* * either direct or indirect */ int copyau(Addr *a, Addr *v) { if(copyas(a, v)) return 1; if(regtyp(v)) { if(a->type-D_INDIR == v->type) return 1; if(a->index == v->type) return 1; } return 0; } /* * substitute s for v in a * return failure to substitute */ int copysub(Addr *a, Addr *v, Addr *s, int f) { int t; if(copyas(a, v)) { t = s->type; if(t >= D_AX && t <= D_R15 || t >= D_X0 && t <= D_X0+15) { if(f) a->type = t; } return 0; } if(regtyp(v)) { t = v->type; if(a->type == t+D_INDIR) { if((s->type == D_BP || s->type == D_R13) && a->index != D_NONE) return 1; /* can't use BP-base with index */ if(f) a->type = s->type+D_INDIR; // return 0; } if(a->index == t) { if(f) a->index = s->type; return 0; } return 0; } return 0; } �������������������������������������������������������������������������������������������������������������������go/src/cmd/6c/reg.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000064266�12412656734�014275� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6c/reg.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/reg.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" static void fixjmp(Reg*); Reg* rega(void) { Reg *r; r = freer; if(r == R) { r = alloc(sizeof(*r)); } else freer = r->link; *r = zreg; return r; } int rcmp(const void *a1, const void *a2) { Rgn *p1, *p2; int c1, c2; p1 = (Rgn*)a1; p2 = (Rgn*)a2; c1 = p2->cost; c2 = p1->cost; if(c1 -= c2) return c1; return p2->varno - p1->varno; } void regopt(Prog *p) { Reg *r, *r1, *r2; Prog *p1; int i, z; int32 initpc, val, npc; uint32 vreg; Bits bit; struct { int32 m; int32 c; Reg* p; } log5[6], *lp; firstr = R; lastr = R; nvar = 0; regbits = RtoB(D_SP) | RtoB(D_AX) | RtoB(D_X0); for(z=0; zm = val; lp->c = 0; lp->p = R; val /= 5L; lp++; } val = 0; for(; p != P; p = p->link) { switch(p->as) { case ADATA: case AGLOBL: case ANAME: case ASIGNAME: case AFUNCDATA: continue; } r = rega(); if(firstr == R) { firstr = r; lastr = r; } else { lastr->link = r; r->p1 = lastr; lastr->s1 = r; lastr = r; } r->prog = p; r->pc = val; val++; lp = log5; for(i=0; i<5; i++) { lp->c--; if(lp->c <= 0) { lp->c = lp->m; if(lp->p != R) lp->p->log5 = r; lp->p = r; (lp+1)->c = 0; break; } lp++; } r1 = r->p1; if(r1 != R) switch(r1->prog->as) { case ARET: case AJMP: case AIRETL: case AIRETQ: r->p1 = R; r1->s1 = R; } bit = mkvar(r, &p->from); if(bany(&bit)) switch(p->as) { /* * funny */ case ALEAL: case ALEAQ: for(z=0; zuse1.b[z] |= bit.b[z]; break; } bit = mkvar(r, &p->to); if(bany(&bit)) switch(p->as) { default: diag(Z, "reg: unknown op: %A", p->as); break; /* * right side read */ case ACMPB: case ACMPL: case ACMPQ: case ACMPW: case APREFETCHT0: case APREFETCHT1: case APREFETCHT2: case APREFETCHNTA: case ACOMISS: case ACOMISD: case AUCOMISS: case AUCOMISD: for(z=0; zuse2.b[z] |= bit.b[z]; break; /* * right side write */ case ANOP: case AMOVL: case AMOVQ: case AMOVB: case AMOVW: case AMOVBLSX: case AMOVBLZX: case AMOVBQSX: case AMOVBQZX: case AMOVLQSX: case AMOVLQZX: case AMOVWLSX: case AMOVWLZX: case AMOVWQSX: case AMOVWQZX: case AMOVQL: case AMOVSS: case AMOVSD: case ACVTSD2SL: case ACVTSD2SQ: case ACVTSD2SS: case ACVTSL2SD: case ACVTSL2SS: case ACVTSQ2SD: case ACVTSQ2SS: case ACVTSS2SD: case ACVTSS2SL: case ACVTSS2SQ: case ACVTTSD2SL: case ACVTTSD2SQ: case ACVTTSS2SL: case ACVTTSS2SQ: for(z=0; zset.b[z] |= bit.b[z]; break; /* * right side read+write */ case AADDB: case AADDL: case AADDQ: case AADDW: case AANDB: case AANDL: case AANDQ: case AANDW: case ASUBB: case ASUBL: case ASUBQ: case ASUBW: case AORB: case AORL: case AORQ: case AORW: case AXORB: case AXORL: case AXORQ: case AXORW: case ASALB: case ASALL: case ASALQ: case ASALW: case ASARB: case ASARL: case ASARQ: case ASARW: case AROLB: case AROLL: case AROLQ: case AROLW: case ARORB: case ARORL: case ARORQ: case ARORW: case ASHLB: case ASHLL: case ASHLQ: case ASHLW: case ASHRB: case ASHRL: case ASHRQ: case ASHRW: case AIMULL: case AIMULQ: case AIMULW: case ANEGL: case ANEGQ: case ANOTL: case ANOTQ: case AADCL: case AADCQ: case ASBBL: case ASBBQ: case AADDSD: case AADDSS: case ACMPSD: case ACMPSS: case ADIVSD: case ADIVSS: case AMAXSD: case AMAXSS: case AMINSD: case AMINSS: case AMULSD: case AMULSS: case ARCPSS: case ARSQRTSS: case ASQRTSD: case ASQRTSS: case ASUBSD: case ASUBSS: case AXORPD: for(z=0; zset.b[z] |= bit.b[z]; r->use2.b[z] |= bit.b[z]; } break; /* * funny */ case ACALL: for(z=0; zas) { case AIMULL: case AIMULQ: case AIMULW: if(p->to.type != D_NONE) break; case AIDIVB: case AIDIVL: case AIDIVQ: case AIDIVW: case AIMULB: case ADIVB: case ADIVL: case ADIVQ: case ADIVW: case AMULB: case AMULL: case AMULQ: case AMULW: case ACWD: case ACDQ: case ACQO: r->regu |= RtoB(D_AX) | RtoB(D_DX); break; case AREP: case AREPN: case ALOOP: case ALOOPEQ: case ALOOPNE: r->regu |= RtoB(D_CX); break; case AMOVSB: case AMOVSL: case AMOVSQ: case AMOVSW: case ACMPSB: case ACMPSL: case ACMPSQ: case ACMPSW: r->regu |= RtoB(D_SI) | RtoB(D_DI); break; case ASTOSB: case ASTOSL: case ASTOSQ: case ASTOSW: case ASCASB: case ASCASL: case ASCASQ: case ASCASW: r->regu |= RtoB(D_AX) | RtoB(D_DI); break; case AINSB: case AINSL: case AINSW: case AOUTSB: case AOUTSL: case AOUTSW: r->regu |= RtoB(D_DI) | RtoB(D_DX); break; } } if(firstr == R) return; initpc = pc - val; npc = val; /* * pass 2 * turn branch references to pointers * build back pointers */ for(r = firstr; r != R; r = r->link) { p = r->prog; if(p->to.type == D_BRANCH) { val = p->to.offset - initpc; r1 = firstr; while(r1 != R) { r2 = r1->log5; if(r2 != R && val >= r2->pc) { r1 = r2; continue; } if(r1->pc == val) break; r1 = r1->link; } if(r1 == R) { nearln = p->lineno; diag(Z, "ref not found\n%P", p); continue; } if(r1 == r) { nearln = p->lineno; diag(Z, "ref to self\n%P", p); continue; } r->s2 = r1; r->p2link = r1->p2; r1->p2 = r; } } if(debug['R']) { p = firstr->prog; print("\n%L %D\n", p->lineno, &p->from); } /* * pass 2.1 * fix jumps */ fixjmp(firstr); /* * pass 2.5 * find looping structure */ for(r = firstr; r != R; r = r->link) r->active = 0; change = 0; loopit(firstr, npc); if(debug['R'] && debug['v']) { print("\nlooping structure:\n"); for(r = firstr; r != R; r = r->link) { print("%d:%P", r->loop, r->prog); for(z=0; zuse1.b[z] | r->use2.b[z] | r->set.b[z]; if(bany(&bit)) { print("\t"); if(bany(&r->use1)) print(" u1=%B", r->use1); if(bany(&r->use2)) print(" u2=%B", r->use2); if(bany(&r->set)) print(" st=%B", r->set); } print("\n"); } } /* * pass 3 * iterate propagating usage * back until flow graph is complete */ loop1: change = 0; for(r = firstr; r != R; r = r->link) r->active = 0; for(r = firstr; r != R; r = r->link) if(r->prog->as == ARET) prop(r, zbits, zbits); loop11: /* pick up unreachable code */ i = 0; for(r = firstr; r != R; r = r1) { r1 = r->link; if(r1 && r1->active && !r->active) { prop(r, zbits, zbits); i = 1; } } if(i) goto loop11; if(change) goto loop1; /* * pass 4 * iterate propagating register/variable synchrony * forward until graph is complete */ loop2: change = 0; for(r = firstr; r != R; r = r->link) r->active = 0; synch(firstr, zbits); if(change) goto loop2; /* * pass 5 * isolate regions * calculate costs (paint1) */ r = firstr; if(r) { for(z=0; zrefahead.b[z] | r->calahead.b[z]) & ~(externs.b[z] | params.b[z] | addrs.b[z] | consts.b[z]); if(bany(&bit)) { nearln = r->prog->lineno; warn(Z, "used and not set: %B", bit); if(debug['R'] && !debug['w']) print("used and not set: %B\n", bit); } } if(debug['R'] && debug['v']) print("\nprop structure:\n"); for(r = firstr; r != R; r = r->link) r->act = zbits; rgp = region; nregion = 0; for(r = firstr; r != R; r = r->link) { if(debug['R'] && debug['v']) { print("%P\t", r->prog); if(bany(&r->set)) print("s:%B ", r->set); if(bany(&r->refahead)) print("ra:%B ", r->refahead); if(bany(&r->calahead)) print("ca:%B ", r->calahead); print("\n"); } for(z=0; zset.b[z] & ~(r->refahead.b[z] | r->calahead.b[z] | addrs.b[z]); if(bany(&bit)) { nearln = r->prog->lineno; warn(Z, "set and not used: %B", bit); if(debug['R']) print("set and not used: %B\n", bit); excise(r); } for(z=0; zact.b[z] | addrs.b[z]); while(bany(&bit)) { i = bnum(bit); rgp->enter = r; rgp->varno = i; change = 0; if(debug['R'] && debug['v']) print("\n"); paint1(r, i); bit.b[i/32] &= ~(1L<<(i%32)); if(change <= 0) { if(debug['R']) print("%L$%d: %B\n", r->prog->lineno, change, blsh(i)); continue; } rgp->cost = change; nregion++; if(nregion >= NRGN) { warn(Z, "too many regions"); goto brk; } rgp++; } } brk: qsort(region, nregion, sizeof(region[0]), rcmp); /* * pass 6 * determine used registers (paint2) * replace code (paint3) */ rgp = region; for(i=0; ivarno); vreg = paint2(rgp->enter, rgp->varno); vreg = allreg(vreg, rgp); if(debug['R']) { print("%L$%d %R: %B\n", rgp->enter->prog->lineno, rgp->cost, rgp->regno, bit); } if(rgp->regno != 0) paint3(rgp->enter, rgp->varno, vreg, rgp->regno); rgp++; } /* * pass 7 * peep-hole on basic block */ if(!debug['R'] || debug['P']) peep(); /* * pass 8 * recalculate pc */ val = initpc; for(r = firstr; r != R; r = r1) { r->pc = val; p = r->prog; p1 = P; r1 = r->link; if(r1 != R) p1 = r1->prog; for(; p != p1; p = p->link) { switch(p->as) { default: val++; break; case ANOP: case ADATA: case AGLOBL: case ANAME: case ASIGNAME: case AFUNCDATA: break; } } } pc = val; /* * fix up branches */ if(debug['R']) if(bany(&addrs)) print("addrs: %B\n", addrs); r1 = 0; /* set */ for(r = firstr; r != R; r = r->link) { p = r->prog; if(p->to.type == D_BRANCH) { p->to.offset = r->s2->pc; p->to.u.branch = r->s2->prog; } r1 = r; } /* * last pass * eliminate nops * free aux structures */ for(p = firstr->prog; p != P; p = p->link){ while(p->link && p->link->as == ANOP) p->link = p->link->link; } if(r1 != R) { r1->link = freer; freer = firstr; } } /* * add mov b,rn * just after r */ void addmove(Reg *r, int bn, int rn, int f) { Prog *p, *p1; Addr *a; Var *v; p1 = alloc(sizeof(*p1)); *p1 = zprog; p = r->prog; p1->link = p->link; p->link = p1; p1->lineno = p->lineno; v = var + bn; a = &p1->to; a->sym = v->sym; a->offset = v->offset; a->etype = v->etype; a->type = v->name; p1->as = AMOVL; if(v->etype == TCHAR || v->etype == TUCHAR) p1->as = AMOVB; if(v->etype == TSHORT || v->etype == TUSHORT) p1->as = AMOVW; if(v->etype == TVLONG || v->etype == TUVLONG || (v->etype == TIND && ewidth[TIND] == 8)) p1->as = AMOVQ; if(v->etype == TFLOAT) p1->as = AMOVSS; if(v->etype == TDOUBLE) p1->as = AMOVSD; p1->from.type = rn; if(!f) { p1->from = *a; *a = zprog.from; a->type = rn; if(v->etype == TUCHAR) p1->as = AMOVB; if(v->etype == TUSHORT) p1->as = AMOVW; } if(debug['R']) print("%P\t.a%P\n", p, p1); } uint32 doregbits(int r) { uint32 b; b = 0; if(r >= D_INDIR) r -= D_INDIR; if(r >= D_AX && r <= D_R15) b |= RtoB(r); else if(r >= D_AL && r <= D_R15B) b |= RtoB(r-D_AL+D_AX); else if(r >= D_AH && r <= D_BH) b |= RtoB(r-D_AH+D_AX); else if(r >= D_X0 && r <= D_X0+15) b |= FtoB(r); return b; } Bits mkvar(Reg *r, Addr *a) { Var *v; int i, t, n, et, z; int32 o; Bits bit; LSym *s; /* * mark registers used */ t = a->type; r->regu |= doregbits(t); r->regu |= doregbits(a->index); switch(t) { default: goto none; case D_ADDR: a->type = a->index; bit = mkvar(r, a); for(z=0; ztype = t; goto none; case D_EXTERN: case D_STATIC: case D_PARAM: case D_AUTO: n = t; break; } s = a->sym; if(s == nil) goto none; if(s->name[0] == '.') goto none; et = a->etype; o = a->offset; v = var; for(i=0; isym) if(n == v->name) if(o == v->offset) goto out; v++; } if(nvar >= NVAR) { if(debug['w'] > 1 && s) warn(Z, "variable not optimized: %s", s->name); goto none; } i = nvar; nvar++; v = &var[i]; v->sym = s; v->offset = o; v->name = n; v->etype = et; if(debug['R']) print("bit=%2d et=%2d %D\n", i, et, a); out: bit = blsh(i); if(n == D_EXTERN || n == D_STATIC) for(z=0; zetype != et || !(typechlpfd[et] || typev[et])) /* funny punning */ for(z=0; zp1) { for(z=0; zrefahead.b[z]; if(ref.b[z] != r1->refahead.b[z]) { r1->refahead.b[z] = ref.b[z]; change++; } cal.b[z] |= r1->calahead.b[z]; if(cal.b[z] != r1->calahead.b[z]) { r1->calahead.b[z] = cal.b[z]; change++; } } switch(r1->prog->as) { case ACALL: for(z=0; zset.b[z]) | r1->use1.b[z] | r1->use2.b[z]; cal.b[z] &= ~(r1->set.b[z] | r1->use1.b[z] | r1->use2.b[z]); r1->refbehind.b[z] = ref.b[z]; r1->calbehind.b[z] = cal.b[z]; } if(r1->active) break; r1->active = 1; } for(; r != r1; r = r->p1) for(r2 = r->p2; r2 != R; r2 = r2->p2link) prop(r2, r->refbehind, r->calbehind); } /* * find looping structure * * 1) find reverse postordering * 2) find approximate dominators, * the actual dominators if the flow graph is reducible * otherwise, dominators plus some other non-dominators. * See Matthew S. Hecht and Jeffrey D. Ullman, * "Analysis of a Simple Algorithm for Global Data Flow Problems", * Conf. Record of ACM Symp. on Principles of Prog. Langs, Boston, Massachusetts, * Oct. 1-3, 1973, pp. 207-217. * 3) find all nodes with a predecessor dominated by the current node. * such a node is a loop head. * recursively, all preds with a greater rpo number are in the loop */ int32 postorder(Reg *r, Reg **rpo2r, int32 n) { Reg *r1; r->rpo = 1; r1 = r->s1; if(r1 && !r1->rpo) n = postorder(r1, rpo2r, n); r1 = r->s2; if(r1 && !r1->rpo) n = postorder(r1, rpo2r, n); rpo2r[n] = r; n++; return n; } int32 rpolca(int32 *idom, int32 rpo1, int32 rpo2) { int32 t; if(rpo1 == -1) return rpo2; while(rpo1 != rpo2){ if(rpo1 > rpo2){ t = rpo2; rpo2 = rpo1; rpo1 = t; } while(rpo1 < rpo2){ t = idom[rpo2]; if(t >= rpo2) fatal(Z, "bad idom"); rpo2 = t; } } return rpo1; } int doms(int32 *idom, int32 r, int32 s) { while(s > r) s = idom[s]; return s == r; } int loophead(int32 *idom, Reg *r) { int32 src; src = r->rpo; if(r->p1 != R && doms(idom, src, r->p1->rpo)) return 1; for(r = r->p2; r != R; r = r->p2link) if(doms(idom, src, r->rpo)) return 1; return 0; } void loopmark(Reg **rpo2r, int32 head, Reg *r) { if(r->rpo < head || r->active == head) return; r->active = head; r->loop += LOOP; if(r->p1 != R) loopmark(rpo2r, head, r->p1); for(r = r->p2; r != R; r = r->p2link) loopmark(rpo2r, head, r); } void loopit(Reg *r, int32 nr) { Reg *r1; int32 i, d, me; if(nr > maxnr) { rpo2r = alloc(nr * sizeof(Reg*)); idom = alloc(nr * sizeof(int32)); maxnr = nr; } d = postorder(r, rpo2r, 0); if(d > nr) fatal(Z, "too many reg nodes"); nr = d; for(i = 0; i < nr / 2; i++){ r1 = rpo2r[i]; rpo2r[i] = rpo2r[nr - 1 - i]; rpo2r[nr - 1 - i] = r1; } for(i = 0; i < nr; i++) rpo2r[i]->rpo = i; idom[0] = 0; for(i = 0; i < nr; i++){ r1 = rpo2r[i]; me = r1->rpo; d = -1; if(r1->p1 != R && r1->p1->rpo < me) d = r1->p1->rpo; for(r1 = r1->p2; r1 != nil; r1 = r1->p2link) if(r1->rpo < me) d = rpolca(idom, d, r1->rpo); idom[i] = d; } for(i = 0; i < nr; i++){ r1 = rpo2r[i]; r1->loop++; if(r1->p2 != R && loophead(idom, r1)) loopmark(rpo2r, i, r1); } } void synch(Reg *r, Bits dif) { Reg *r1; int z; for(r1 = r; r1 != R; r1 = r1->s1) { for(z=0; zrefbehind.b[z] & r1->refahead.b[z])) | r1->set.b[z] | r1->regdiff.b[z]; if(dif.b[z] != r1->regdiff.b[z]) { r1->regdiff.b[z] = dif.b[z]; change++; } } if(r1->active) break; r1->active = 1; for(z=0; zcalbehind.b[z] & r1->calahead.b[z]); if(r1->s2 != R) synch(r1->s2, dif); } } uint32 allreg(uint32 b, Rgn *r) { Var *v; int i; v = var + r->varno; r->regno = 0; switch(v->etype) { default: diag(Z, "unknown etype %d/%d", bitno(b), v->etype); break; case TCHAR: case TUCHAR: case TSHORT: case TUSHORT: case TINT: case TUINT: case TLONG: case TULONG: case TVLONG: case TUVLONG: case TIND: case TARRAY: i = BtoR(~b); if(i && r->cost > 0) { r->regno = i; return RtoB(i); } break; case TDOUBLE: case TFLOAT: i = BtoF(~b); if(i && r->cost > 0) { r->regno = i; return FtoB(i); } break; } return 0; } void paint1(Reg *r, int bn) { Reg *r1; Prog *p; int z; uint32 bb; z = bn/32; bb = 1L<<(bn%32); if(r->act.b[z] & bb) return; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = r->p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(r1->act.b[z] & bb) break; r = r1; } if(LOAD(r) & ~(r->set.b[z]&~(r->use1.b[z]|r->use2.b[z])) & bb) { change -= CLOAD * r->loop; if(debug['R'] && debug['v']) print("%d%P\td %B $%d\n", r->loop, r->prog, blsh(bn), change); } for(;;) { r->act.b[z] |= bb; p = r->prog; if(r->use1.b[z] & bb) { change += CREF * r->loop; if(debug['R'] && debug['v']) print("%d%P\tu1 %B $%d\n", r->loop, p, blsh(bn), change); } if((r->use2.b[z]|r->set.b[z]) & bb) { change += CREF * r->loop; if(debug['R'] && debug['v']) print("%d%P\tu2 %B $%d\n", r->loop, p, blsh(bn), change); } if(STORE(r) & r->regdiff.b[z] & bb) { change -= CLOAD * r->loop; if(debug['R'] && debug['v']) print("%d%P\tst %B $%d\n", r->loop, p, blsh(bn), change); } if(r->refbehind.b[z] & bb) for(r1 = r->p2; r1 != R; r1 = r1->p2link) if(r1->refahead.b[z] & bb) paint1(r1, bn); if(!(r->refahead.b[z] & bb)) break; r1 = r->s2; if(r1 != R) if(r1->refbehind.b[z] & bb) paint1(r1, bn); r = r->s1; if(r == R) break; if(r->act.b[z] & bb) break; if(!(r->refbehind.b[z] & bb)) break; } } uint32 regset(Reg *r, uint32 bb) { uint32 b, set; Addr v; int c; set = 0; v = zprog.from; while(b = bb & ~(bb-1)) { v.type = b & 0xFFFF? BtoR(b): BtoF(b); if(v.type == 0) diag(Z, "zero v.type for %#ux", b); c = copyu(r->prog, &v, A); if(c == 3) set |= b; bb &= ~b; } return set; } uint32 reguse(Reg *r, uint32 bb) { uint32 b, set; Addr v; int c; set = 0; v = zprog.from; while(b = bb & ~(bb-1)) { v.type = b & 0xFFFF? BtoR(b): BtoF(b); c = copyu(r->prog, &v, A); if(c == 1 || c == 2 || c == 4) set |= b; bb &= ~b; } return set; } uint32 paint2(Reg *r, int bn) { Reg *r1; int z; uint32 bb, vreg, x; z = bn/32; bb = 1L << (bn%32); vreg = regbits; if(!(r->act.b[z] & bb)) return vreg; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = r->p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(!(r1->act.b[z] & bb)) break; r = r1; } for(;;) { r->act.b[z] &= ~bb; vreg |= r->regu; if(r->refbehind.b[z] & bb) for(r1 = r->p2; r1 != R; r1 = r1->p2link) if(r1->refahead.b[z] & bb) vreg |= paint2(r1, bn); if(!(r->refahead.b[z] & bb)) break; r1 = r->s2; if(r1 != R) if(r1->refbehind.b[z] & bb) vreg |= paint2(r1, bn); r = r->s1; if(r == R) break; if(!(r->act.b[z] & bb)) break; if(!(r->refbehind.b[z] & bb)) break; } bb = vreg; for(; r; r=r->s1) { x = r->regu & ~bb; if(x) { vreg |= reguse(r, x); bb |= regset(r, x); } } return vreg; } void paint3(Reg *r, int bn, int32 rb, int rn) { Reg *r1; Prog *p; int z; uint32 bb; z = bn/32; bb = 1L << (bn%32); if(r->act.b[z] & bb) return; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = r->p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(r1->act.b[z] & bb) break; r = r1; } if(LOAD(r) & ~(r->set.b[z] & ~(r->use1.b[z]|r->use2.b[z])) & bb) addmove(r, bn, rn, 0); for(;;) { r->act.b[z] |= bb; p = r->prog; if(r->use1.b[z] & bb) { if(debug['R']) print("%P", p); addreg(&p->from, rn); if(debug['R']) print("\t.c%P\n", p); } if((r->use2.b[z]|r->set.b[z]) & bb) { if(debug['R']) print("%P", p); addreg(&p->to, rn); if(debug['R']) print("\t.c%P\n", p); } if(STORE(r) & r->regdiff.b[z] & bb) addmove(r, bn, rn, 1); r->regu |= rb; if(r->refbehind.b[z] & bb) for(r1 = r->p2; r1 != R; r1 = r1->p2link) if(r1->refahead.b[z] & bb) paint3(r1, bn, rb, rn); if(!(r->refahead.b[z] & bb)) break; r1 = r->s2; if(r1 != R) if(r1->refbehind.b[z] & bb) paint3(r1, bn, rb, rn); r = r->s1; if(r == R) break; if(r->act.b[z] & bb) break; if(!(r->refbehind.b[z] & bb)) break; } } void addreg(Addr *a, int rn) { a->sym = 0; a->offset = 0; a->type = rn; } int32 RtoB(int r) { if(r < D_AX || r > D_R15) return 0; return 1L << (r-D_AX); } int BtoR(int32 b) { b &= 0xffffL; if(nacl) b &= ~((1<<(D_BP-D_AX)) | (1<<(D_R15-D_AX))); if(b == 0) return 0; return bitno(b) + D_AX; } /* * bit reg * 16 X5 * 17 X6 * 18 X7 */ int32 FtoB(int f) { if(f < FREGMIN || f > FREGEXT) return 0; return 1L << (f - FREGMIN + 16); } int BtoF(int32 b) { b &= 0x70000L; if(b == 0) return 0; return bitno(b) - 16 + FREGMIN; } /* what instruction does a JMP to p eventually land on? */ static Reg* chasejmp(Reg *r, int *jmploop) { int n; n = 0; for(; r; r=r->s2) { if(r->prog->as != AJMP || r->prog->to.type != D_BRANCH) break; if(++n > 10) { *jmploop = 1; break; } } return r; } /* mark all code reachable from firstp as alive */ static void mark(Reg *firstr) { Reg *r; Prog *p; for(r=firstr; r; r=r->link) { if(r->active) break; r->active = 1; p = r->prog; if(p->as != ACALL && p->to.type == D_BRANCH) mark(r->s2); if(p->as == AJMP || p->as == ARET || p->as == AUNDEF) break; } } /* * the code generator depends on being able to write out JMP * instructions that it can jump to now but fill in later. * the linker will resolve them nicely, but they make the code * longer and more difficult to follow during debugging. * remove them. */ static void fixjmp(Reg *firstr) { int jmploop; Reg *r; Prog *p; if(debug['R'] && debug['v']) print("\nfixjmp\n"); // pass 1: resolve jump to AJMP, mark all code as dead. jmploop = 0; for(r=firstr; r; r=r->link) { p = r->prog; if(debug['R'] && debug['v']) print("%04d %P\n", (int)r->pc, p); if(p->as != ACALL && p->to.type == D_BRANCH && r->s2 && r->s2->prog->as == AJMP) { r->s2 = chasejmp(r->s2, &jmploop); p->to.offset = r->s2->pc; p->to.u.branch = r->s2->prog; if(debug['R'] && debug['v']) print("->%P\n", p); } r->active = 0; } if(debug['R'] && debug['v']) print("\n"); // pass 2: mark all reachable code alive mark(firstr); // pass 3: delete dead code (mostly JMPs). for(r=firstr; r; r=r->link) { if(!r->active) { p = r->prog; if(p->link == P && p->as == ARET && r->p1 && r->p1->prog->as != ARET) { // This is the final ARET, and the code so far doesn't have one. // Let it stay. } else { if(debug['R'] && debug['v']) print("del %04d %P\n", (int)r->pc, p); p->as = ANOP; } } } // pass 4: elide JMP to next instruction. // only safe if there are no jumps to JMPs anymore. if(!jmploop) { for(r=firstr; r; r=r->link) { p = r->prog; if(p->as == AJMP && p->to.type == D_BRANCH && r->s2 == r->link) { if(debug['R'] && debug['v']) print("del %04d %P\n", (int)r->pc, p); p->as = ANOP; } } } // fix back pointers. for(r=firstr; r; r=r->link) { r->p2 = R; r->p2link = R; } for(r=firstr; r; r=r->link) { if(r->s2) { r->p2link = r->s2->p2; r->s2->p2 = r; } } if(debug['R'] && debug['v']) { print("\n"); for(r=firstr; r; r=r->link) print("%04d %P\n", (int)r->pc, r->prog); print("\n"); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6c/sgen.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000020657�12412656737�014453� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6c/sgen.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/sgen.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" #include "../../pkg/runtime/funcdata.h" Prog* gtext(Sym *s, int32 stkoff) { vlong v; v = ((uvlong)argsize() << 32) | (stkoff & 0xffffffff); if((textflag & NOSPLIT) && stkoff >= 128) yyerror("stack frame too large for NOSPLIT function"); gpseudo(ATEXT, s, nodgconst(v, types[TVLONG])); return p; } void noretval(int n) { if(n & 1) { gins(ANOP, Z, Z); p->to.type = REGRET; } if(n & 2) { gins(ANOP, Z, Z); p->to.type = FREGRET; } } /* welcome to commute */ static void commute(Node *n) { Node *l, *r; l = n->left; r = n->right; if(r->complex > l->complex) { n->left = r; n->right = l; } } void indexshift(Node *n) { int g; if(!typechlpv[n->type->etype]) return; simplifyshift(n); if(n->op == OASHL && n->right->op == OCONST){ g = vconst(n->right); if(g >= 0 && g <= 3) n->addable = 7; } } /* * calculate addressability as follows * NAME ==> 10/11 name+value(SB/SP) * REGISTER ==> 12 register * CONST ==> 20 $value * *(20) ==> 21 value * &(10) ==> 13 $name+value(SB) * &(11) ==> 1 $name+value(SP) * (13) + (20) ==> 13 fold constants * (1) + (20) ==> 1 fold constants * *(13) ==> 10 back to name * *(1) ==> 11 back to name * * (20) * (X) ==> 7 multiplier in indexing * (X,7) + (13,1) ==> 8 adder in indexing (addresses) * (8) ==> &9(OINDEX) index, almost addressable * * calculate complexity (number of registers) */ void xcom(Node *n) { Node *l, *r; int g; if(n == Z) return; l = n->left; r = n->right; n->complex = 0; n->addable = 0; switch(n->op) { case OCONST: n->addable = 20; break; case ONAME: if(flag_largemodel) n->addable = 9; else n->addable = 10; if(n->class == CPARAM || n->class == CAUTO) n->addable = 11; break; case OEXREG: n->addable = 0; break; case OREGISTER: n->addable = 12; break; case OINDREG: n->addable = 12; break; case OADDR: xcom(l); if(l->addable == 10) n->addable = 13; else if(l->addable == 11) n->addable = 1; break; case OADD: xcom(l); xcom(r); if(n->type->etype != TIND) break; switch(r->addable) { case 20: switch(l->addable) { case 1: case 13: commadd: l->type = n->type; *n = *l; l = new(0, Z, Z); *l = *(n->left); l->xoffset += r->vconst; n->left = l; r = n->right; goto brk; } break; case 1: case 13: case 10: case 11: /* l is the base, r is the index */ if(l->addable != 20) n->addable = 8; break; } switch(l->addable) { case 20: switch(r->addable) { case 13: case 1: r = n->left; l = n->right; n->left = l; n->right = r; goto commadd; } break; case 13: case 1: case 10: case 11: /* r is the base, l is the index */ if(r->addable != 20) n->addable = 8; break; } if(n->addable == 8 && !side(n) && !nacl) { indx(n); l = new1(OINDEX, idx.basetree, idx.regtree); l->scale = idx.scale; l->addable = 9; l->complex = l->right->complex; l->type = l->left->type; n->op = OADDR; n->left = l; n->right = Z; n->addable = 8; break; } break; case OINDEX: xcom(l); xcom(r); n->addable = 9; break; case OIND: xcom(l); if(l->op == OADDR) { l = l->left; l->type = n->type; *n = *l; return; } switch(l->addable) { case 20: n->addable = 21; break; case 1: n->addable = 11; break; case 13: n->addable = 10; break; } break; case OASHL: xcom(l); xcom(r); indexshift(n); break; case OMUL: case OLMUL: xcom(l); xcom(r); g = vlog(l); if(g >= 0) { n->left = r; n->right = l; l = r; r = n->right; } g = vlog(r); if(g >= 0) { n->op = OASHL; r->vconst = g; r->type = types[TINT]; indexshift(n); break; } commute(n); break; case OASLDIV: xcom(l); xcom(r); g = vlog(r); if(g >= 0) { n->op = OASLSHR; r->vconst = g; r->type = types[TINT]; } break; case OLDIV: xcom(l); xcom(r); g = vlog(r); if(g >= 0) { n->op = OLSHR; r->vconst = g; r->type = types[TINT]; indexshift(n); break; } break; case OASLMOD: xcom(l); xcom(r); g = vlog(r); if(g >= 0) { n->op = OASAND; r->vconst--; } break; case OLMOD: xcom(l); xcom(r); g = vlog(r); if(g >= 0) { n->op = OAND; r->vconst--; } break; case OASMUL: case OASLMUL: xcom(l); xcom(r); g = vlog(r); if(g >= 0) { n->op = OASASHL; r->vconst = g; } break; case OLSHR: case OASHR: xcom(l); xcom(r); indexshift(n); break; default: if(l != Z) xcom(l); if(r != Z) xcom(r); break; } brk: if(n->addable >= 10) return; if(l != Z) n->complex = l->complex; if(r != Z) { if(r->complex == n->complex) n->complex = r->complex+1; else if(r->complex > n->complex) n->complex = r->complex; } if(n->complex == 0) n->complex++; switch(n->op) { case OFUNC: n->complex = FNX; break; case OCAST: if(l->type->etype == TUVLONG && typefd[n->type->etype]) n->complex += 2; break; case OLMOD: case OMOD: case OLMUL: case OLDIV: case OMUL: case ODIV: case OASLMUL: case OASLDIV: case OASLMOD: case OASMUL: case OASDIV: case OASMOD: if(r->complex >= l->complex) { n->complex = l->complex + 3; if(r->complex > n->complex) n->complex = r->complex; } else { n->complex = r->complex + 3; if(l->complex > n->complex) n->complex = l->complex; } break; case OLSHR: case OASHL: case OASHR: case OASLSHR: case OASASHL: case OASASHR: if(r->complex >= l->complex) { n->complex = l->complex + 2; if(r->complex > n->complex) n->complex = r->complex; } else { n->complex = r->complex + 2; if(l->complex > n->complex) n->complex = l->complex; } break; case OADD: case OXOR: case OAND: case OOR: /* * immediate operators, make const on right */ if(l->op == OCONST) { n->left = r; n->right = l; } break; case OEQ: case ONE: case OLE: case OLT: case OGE: case OGT: case OHI: case OHS: case OLO: case OLS: /* * compare operators, make const on left */ if(r->op == OCONST) { n->left = r; n->right = l; n->op = invrel[relindex(n->op)]; } break; } } void indx(Node *n) { Node *l, *r; if(debug['x']) prtree(n, "indx"); l = n->left; r = n->right; if(l->addable == 1 || l->addable == 13 || r->complex > l->complex) { n->right = l; n->left = r; l = r; r = n->right; } if(l->addable != 7) { idx.regtree = l; idx.scale = 1; } else if(l->right->addable == 20) { idx.regtree = l->left; idx.scale = 1 << l->right->vconst; } else if(l->left->addable == 20) { idx.regtree = l->right; idx.scale = 1 << l->left->vconst; } else diag(n, "bad index"); idx.basetree = r; if(debug['x']) { print("scale = %d\n", idx.scale); prtree(idx.regtree, "index"); prtree(idx.basetree, "base"); } } ���������������������������������������������������������������������������������go/src/cmd/6c/swt.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000016466�12412656737�014337� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6c/swt.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/swt.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" void swit1(C1 *q, int nc, int32 def, Node *n) { Node nreg; regalloc(&nreg, n, Z); if(typev[n->type->etype]) nreg.type = types[TVLONG]; else nreg.type = types[TLONG]; cgen(n, &nreg); swit2(q, nc, def, &nreg); regfree(&nreg); } void swit2(C1 *q, int nc, int32 def, Node *n) { C1 *r; int i; Prog *sp; if(nc < 5) { for(i=0; ival); gcmp(OEQ, n, q->val); patch(p, q->label); q++; } gbranch(OGOTO); patch(p, def); return; } i = nc / 2; r = q+i; if(debug['W']) print("case > %.8llux\n", r->val); gcmp(OGT, n, r->val); sp = p; gbranch(OGOTO); p->as = AJEQ; patch(p, r->label); swit2(q, i, def, n); if(debug['W']) print("case < %.8llux\n", r->val); patch(sp, pc); swit2(r+1, nc-i-1, def, n); } void bitload(Node *b, Node *n1, Node *n2, Node *n3, Node *nn) { int sh; int32 v; Node *l; /* * n1 gets adjusted/masked value * n2 gets address of cell * n3 gets contents of cell */ l = b->left; if(n2 != Z) { regalloc(n1, l, nn); reglcgen(n2, l, Z); regalloc(n3, l, Z); gmove(n2, n3); gmove(n3, n1); } else { regalloc(n1, l, nn); cgen(l, n1); } if(b->type->shift == 0 && typeu[b->type->etype]) { v = ~0 + (1L << b->type->nbits); gopcode(OAND, tfield, nodconst(v), n1); } else { sh = 32 - b->type->shift - b->type->nbits; if(sh > 0) gopcode(OASHL, tfield, nodconst(sh), n1); sh += b->type->shift; if(sh > 0) if(typeu[b->type->etype]) gopcode(OLSHR, tfield, nodconst(sh), n1); else gopcode(OASHR, tfield, nodconst(sh), n1); } } void bitstore(Node *b, Node *n1, Node *n2, Node *n3, Node *nn) { int32 v; Node nod; int sh; regalloc(&nod, b->left, Z); v = ~0 + (1L << b->type->nbits); gopcode(OAND, types[TLONG], nodconst(v), n1); gmove(n1, &nod); if(nn != Z) gmove(n1, nn); sh = b->type->shift; if(sh > 0) gopcode(OASHL, types[TLONG], nodconst(sh), &nod); v <<= sh; gopcode(OAND, types[TLONG], nodconst(~v), n3); gopcode(OOR, types[TLONG], n3, &nod); gmove(&nod, n2); regfree(&nod); regfree(n1); regfree(n2); regfree(n3); } int32 outstring(char *s, int32 n) { int32 r; if(suppress) return nstring; r = nstring; while(n) { string[mnstring] = *s++; mnstring++; nstring++; if(mnstring >= NSNAME) { gpseudo(ADATA, symstring, nodconst(0L)); p->from.offset += nstring - NSNAME; p->from.scale = NSNAME; p->to.type = D_SCONST; memmove(p->to.u.sval, string, NSNAME); mnstring = 0; } n--; } return r; } void sextern(Sym *s, Node *a, int32 o, int32 w) { int32 e, lw; for(e=0; efrom.offset += o+e; p->from.scale = lw; p->to.type = D_SCONST; memmove(p->to.u.sval, a->cstring+e, lw); } } void gextern(Sym *s, Node *a, int32 o, int32 w) { if(0 && a->op == OCONST && typev[a->type->etype]) { gpseudo(ADATA, s, lo64(a)); p->from.offset += o; p->from.scale = 4; gpseudo(ADATA, s, hi64(a)); p->from.offset += o + 4; p->from.scale = 4; return; } gpseudo(ADATA, s, a); p->from.offset += o; p->from.scale = w; switch(p->to.type) { default: p->to.index = p->to.type; p->to.type = D_ADDR; case D_CONST: case D_FCONST: case D_ADDR: break; } } void outcode(void) { int f; Biobuf b; f = open(outfile, OWRITE); if(f < 0) { diag(Z, "cannot open %s", outfile); return; } Binit(&b, f, OWRITE); Bprint(&b, "go object %s %s %s\n", getgoos(), getgoarch(), getgoversion()); if(pragcgobuf.to > pragcgobuf.start) { Bprint(&b, "\n"); Bprint(&b, "$$ // exports\n\n"); Bprint(&b, "$$ // local types\n\n"); Bprint(&b, "$$ // cgo\n"); Bprint(&b, "%s", fmtstrflush(&pragcgobuf)); Bprint(&b, "\n$$\n\n"); } Bprint(&b, "!\n"); writeobj(ctxt, &b); Bterm(&b); close(f); lastp = P; } int32 align(int32 i, Type *t, int op, int32 *maxalign) { int32 o; Type *v; int w; o = i; w = 1; switch(op) { default: diag(Z, "unknown align opcode %d", op); break; case Asu2: /* padding at end of a struct */ w = *maxalign; if(w < 1) w = 1; if(packflg) w = packflg; break; case Ael1: /* initial align of struct element */ for(v=t; v->etype==TARRAY; v=v->link) ; if(v->etype == TSTRUCT || v->etype == TUNION) w = v->align; else w = ewidth[v->etype]; if(w < 1 || w > SZ_VLONG) fatal(Z, "align"); if(packflg) w = packflg; break; case Ael2: /* width of a struct element */ o += t->width; break; case Aarg0: /* initial passbyptr argument in arg list */ if(typesu[t->etype]) { o = align(o, types[TIND], Aarg1, nil); o = align(o, types[TIND], Aarg2, nil); } break; case Aarg1: /* initial align of parameter */ if(ewidth[TIND] == 4) { if(typesu[t->etype]) { for(v = t->link; v != T; v = v->down) o = align(o, v, Aarg1, maxalign); goto out; } w = ewidth[t->etype]; if(typev[t->etype] || t->etype == TDOUBLE) w = 8; else if(w <= 0 || w >= 4) w = 4; else w = 1; break; } w = ewidth[t->etype]; if(w <= 0 || w >= SZ_VLONG) { w = SZ_VLONG; break; } w = 1; /* little endian no adjustment */ break; case Aarg2: /* width of a parameter */ o += t->width; if(ewidth[TIND] == 4) { o = align(o, t, Aarg1, maxalign); goto out; } w = t->width; if(w > SZ_VLONG) w = SZ_VLONG; break; case Aaut3: /* total align of automatic */ o = align(o, t, Ael1, nil); o = align(o, t, Ael2, nil); break; } o = xround(o, w); if(maxalign && *maxalign < w) *maxalign = w; out: if(debug['A']) print("align %s %d %T = %d\n", bnames[op], i, t, o); return o; } int32 maxround(int32 max, int32 v) { v = xround(v, SZ_VLONG); if(v > max) return v; return max; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6c/txt.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000074022�12412656737�014331� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6c/txt.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/txt.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" int thechar = '6'; char *thestring = "amd64"; LinkArch *thelinkarch = &linkamd64; void linkarchinit(void) { if(strcmp(getgoarch(), "amd64p32") == 0) thelinkarch = &linkamd64p32; } void ginit(void) { int i; Type *t; dodefine("_64BITREG"); if(ewidth[TIND] == 8) dodefine("_64BIT"); listinit(); nstring = 0; mnstring = 0; nrathole = 0; pc = 0; breakpc = -1; continpc = -1; cases = C; lastp = P; tfield = types[TINT]; typeword = typechlvp; typecmplx = typesu; /* TO DO */ memmove(typechlpv, typechlp, sizeof(typechlpv)); typechlpv[TVLONG] = 1; typechlpv[TUVLONG] = 1; zprog.link = P; zprog.as = AGOK; zprog.from.type = D_NONE; zprog.from.index = D_NONE; zprog.from.scale = 0; zprog.to = zprog.from; lregnode.op = OREGISTER; lregnode.class = CEXREG; lregnode.reg = REGTMP; lregnode.complex = 0; lregnode.addable = 11; lregnode.type = types[TLONG]; qregnode = lregnode; qregnode.type = types[TVLONG]; constnode.op = OCONST; constnode.class = CXXX; constnode.complex = 0; constnode.addable = 20; constnode.type = types[TLONG]; vconstnode = constnode; vconstnode.type = types[TVLONG]; fconstnode.op = OCONST; fconstnode.class = CXXX; fconstnode.complex = 0; fconstnode.addable = 20; fconstnode.type = types[TDOUBLE]; nodsafe = new(ONAME, Z, Z); nodsafe->sym = slookup(".safe"); nodsafe->type = types[TINT]; nodsafe->etype = types[TINT]->etype; nodsafe->class = CAUTO; complex(nodsafe); t = typ(TARRAY, types[TCHAR]); symrathole = slookup(".rathole"); symrathole->class = CGLOBL; symrathole->type = t; nodrat = new(ONAME, Z, Z); nodrat->sym = symrathole; nodrat->type = types[TIND]; nodrat->etype = TVOID; nodrat->class = CGLOBL; complex(nodrat); nodrat->type = t; nodret = new(ONAME, Z, Z); nodret->sym = slookup(".ret"); nodret->type = types[TIND]; nodret->etype = TIND; nodret->class = CPARAM; nodret = new(OIND, nodret, Z); complex(nodret); if(0) com64init(); for(i=0; i= D_AX && i <= D_R15 && i != D_SP) reg[i] = 0; if(i >= D_X0 && i <= D_X7) reg[i] = 0; } if(nacl) { reg[D_BP] = 1; reg[D_R15] = 1; } } void gclean(void) { int i; Sym *s; reg[D_SP]--; if(nacl) { reg[D_BP]--; reg[D_R15]--; } for(i=D_AX; i<=D_R15; i++) if(reg[i]) diag(Z, "reg %R left allocated", i); for(i=D_X0; i<=D_X7; i++) if(reg[i]) diag(Z, "reg %R left allocated", i); while(mnstring) outstring("", 1L); symstring->type->width = nstring; symrathole->type->width = nrathole; for(i=0; ilink) { if(s->type == T) continue; if(s->type->width == 0) continue; if(s->class != CGLOBL && s->class != CSTATIC) continue; if(s->type == types[TENUM]) continue; gpseudo(AGLOBL, s, nodconst(s->type->width)); } nextpc(); p->as = AEND; outcode(); } void nextpc(void) { Plist *pl; p = alloc(sizeof(*p)); *p = zprog; p->lineno = nearln; p->pc = pc; pc++; if(lastp == nil) { pl = linknewplist(ctxt); pl->firstpc = p; } else lastp->link = p; lastp = p; } void gargs(Node *n, Node *tn1, Node *tn2) { int32 regs; Node fnxargs[20], *fnxp; regs = cursafe; fnxp = fnxargs; garg1(n, tn1, tn2, 0, &fnxp); /* compile fns to temps */ curarg = 0; fnxp = fnxargs; garg1(n, tn1, tn2, 1, &fnxp); /* compile normal args and temps */ cursafe = regs; } int nareg(void) { int i, n; n = 0; for(i=D_AX; i<=D_R15; i++) if(reg[i] == 0) n++; return n; } void garg1(Node *n, Node *tn1, Node *tn2, int f, Node **fnxp) { Node nod; if(n == Z) return; if(n->op == OLIST) { garg1(n->left, tn1, tn2, f, fnxp); garg1(n->right, tn1, tn2, f, fnxp); return; } if(f == 0) { if(n->complex >= FNX) { regsalloc(*fnxp, n); nod = znode; nod.op = OAS; nod.left = *fnxp; nod.right = n; nod.type = n->type; cgen(&nod, Z); (*fnxp)++; } return; } if(typesu[n->type->etype]) { regaalloc(tn2, n); if(n->complex >= FNX) { sugen(*fnxp, tn2, n->type->width); (*fnxp)++; } else sugen(n, tn2, n->type->width); return; } if(REGARG >= 0 && curarg == 0 && typechlpv[n->type->etype]) { regaalloc1(tn1, n); if(n->complex >= FNX) { cgen(*fnxp, tn1); (*fnxp)++; } else cgen(n, tn1); return; } if(vconst(n) == 0) { regaalloc(tn2, n); gmove(n, tn2); return; } regalloc(tn1, n, Z); if(n->complex >= FNX) { cgen(*fnxp, tn1); (*fnxp)++; } else cgen(n, tn1); regaalloc(tn2, n); gmove(tn1, tn2); regfree(tn1); } Node* nodgconst(vlong v, Type *t) { if(!typev[t->etype]) return nodconst((int32)v); vconstnode.vconst = v; return &vconstnode; } Node* nodconst(int32 v) { constnode.vconst = v; return &constnode; } Node* nodfconst(double d) { fconstnode.fconst = d; return &fconstnode; } int isreg(Node *n, int r) { if(n->op == OREGISTER) if(n->reg == r) return 1; return 0; } int nodreg(Node *n, Node *nn, int r) { int et; *n = qregnode; n->reg = r; if(nn != Z){ et = nn->type->etype; if(!typefd[et] && nn->type->width <= SZ_LONG && 0) n->type = typeu[et]? types[TUINT]: types[TINT]; else n->type = nn->type; //print("nodreg %s [%s]\n", tnames[et], tnames[n->type->etype]); n->lineno = nn->lineno; } if(reg[r] == 0) return 0; if(nn != Z) { if(nn->op == OREGISTER) if(nn->reg == r) return 0; } return 1; } void regret(Node *n, Node *nn) { int r; r = REGRET; if(typefd[nn->type->etype]) r = FREGRET; nodreg(n, nn, r); reg[r]++; } void regalloc(Node *n, Node *tn, Node *o) { int i; switch(tn->type->etype) { case TCHAR: case TUCHAR: case TSHORT: case TUSHORT: case TINT: case TUINT: case TLONG: case TULONG: case TVLONG: case TUVLONG: case TIND: if(o != Z && o->op == OREGISTER) { i = o->reg; if(i >= D_AX && i <= D_R15) goto out; } for(i=D_AX; i<=D_R15; i++) if(reg[i] == 0) goto out; diag(tn, "out of fixed registers"); goto err; case TFLOAT: case TDOUBLE: if(o != Z && o->op == OREGISTER) { i = o->reg; if(i >= D_X0 && i <= D_X7) goto out; } for(i=D_X0; i<=D_X7; i++) if(reg[i] == 0) goto out; diag(tn, "out of float registers"); goto out; } diag(tn, "unknown type in regalloc: %T", tn->type); err: i = 0; out: if(i) reg[i]++; nodreg(n, tn, i); } void regialloc(Node *n, Node *tn, Node *o) { Node nod; nod = *tn; nod.type = types[TIND]; regalloc(n, &nod, o); } void regfree(Node *n) { int i; i = 0; if(n->op != OREGISTER && n->op != OINDREG) goto err; i = n->reg; if(i < 0 || i >= nelem(reg)) goto err; if(reg[i] <= 0) goto err; reg[i]--; return; err: diag(n, "error in regfree: %R", i); } void regsalloc(Node *n, Node *nn) { cursafe = align(cursafe, nn->type, Aaut3, nil); maxargsafe = maxround(maxargsafe, cursafe+curarg); *n = *nodsafe; n->xoffset = -(stkoff + cursafe); n->type = nn->type; n->etype = nn->type->etype; n->lineno = nn->lineno; } void regaalloc1(Node *n, Node *nn) { if(REGARG < 0) { fatal(n, "regaalloc1 and REGARG<0"); return; } nodreg(n, nn, REGARG); reg[(uchar)REGARG]++; curarg = align(curarg, nn->type, Aarg1, nil); curarg = align(curarg, nn->type, Aarg2, nil); maxargsafe = maxround(maxargsafe, cursafe+curarg); } void regaalloc(Node *n, Node *nn) { curarg = align(curarg, nn->type, Aarg1, nil); *n = *nn; n->op = OINDREG; n->reg = REGSP; n->xoffset = curarg; n->complex = 0; n->addable = 20; curarg = align(curarg, nn->type, Aarg2, nil); maxargsafe = maxround(maxargsafe, cursafe+curarg); } void regind(Node *n, Node *nn) { if(n->op != OREGISTER) { diag(n, "regind not OREGISTER"); return; } n->op = OINDREG; n->type = nn->type; } void naddr(Node *n, Addr *a) { int32 v; a->type = D_NONE; if(n == Z) return; switch(n->op) { default: bad: diag(n, "bad in naddr: %O %D", n->op, a); break; case OREGISTER: a->type = n->reg; a->sym = nil; break; case OEXREG: a->type = D_INDIR + D_TLS; a->offset = n->reg - 1; break; case OIND: naddr(n->left, a); if(a->type >= D_AX && a->type <= D_R15) a->type += D_INDIR; else if(a->type == D_CONST) a->type = D_NONE+D_INDIR; else if(a->type == D_ADDR) { a->type = a->index; a->index = D_NONE; } else goto bad; break; case OINDEX: a->type = idx.ptr; if(n->left->op == OADDR || n->left->op == OCONST) naddr(n->left, a); if(a->type >= D_AX && a->type <= D_R15) a->type += D_INDIR; else if(a->type == D_CONST) a->type = D_NONE+D_INDIR; else if(a->type == D_ADDR) { a->type = a->index; a->index = D_NONE; } else goto bad; a->index = idx.reg; a->scale = n->scale; a->offset += n->xoffset; break; case OINDREG: a->type = n->reg+D_INDIR; a->sym = nil; a->offset = n->xoffset; break; case ONAME: a->etype = n->etype; a->type = D_STATIC; a->sym = linksym(n->sym); a->offset = n->xoffset; if(n->class == CSTATIC) break; if(n->class == CEXTERN || n->class == CGLOBL) { a->type = D_EXTERN; break; } if(n->class == CAUTO) { a->type = D_AUTO; break; } if(n->class == CPARAM) { a->type = D_PARAM; break; } goto bad; case OCONST: if(typefd[n->type->etype]) { a->type = D_FCONST; a->u.dval = n->fconst; break; } a->sym = nil; a->type = D_CONST; if(typev[n->type->etype] || (n->type->etype == TIND && ewidth[TIND] == 8)) a->offset = n->vconst; else a->offset = convvtox(n->vconst, typeu[n->type->etype]? TULONG: TLONG); break; case OADDR: naddr(n->left, a); if(a->type >= D_INDIR) { a->type -= D_INDIR; break; } if(a->type == D_EXTERN || a->type == D_STATIC || a->type == D_AUTO || a->type == D_PARAM) if(a->index == D_NONE) { a->index = a->type; a->type = D_ADDR; break; } goto bad; case OADD: if(n->right->op == OCONST) { v = n->right->vconst; naddr(n->left, a); } else if(n->left->op == OCONST) { v = n->left->vconst; naddr(n->right, a); } else goto bad; a->offset += v; break; } } void gcmp(int op, Node *n, vlong val) { Node *cn, nod; cn = nodgconst(val, n->type); if(!immconst(cn)){ regalloc(&nod, n, Z); gmove(cn, &nod); gopcode(op, n->type, n, &nod); regfree(&nod); }else gopcode(op, n->type, n, cn); } #define CASE(a,b) ((a<<8)|(b<<0)) void gmove(Node *f, Node *t) { int ft, tt, t64, a; Node nod, nod1, nod2, nod3; Prog *p1, *p2; ft = f->type->etype; tt = t->type->etype; if(ewidth[TIND] == 4) { if(ft == TIND) ft = TUINT; if(tt == TIND) tt = TUINT; } t64 = tt == TVLONG || tt == TUVLONG || tt == TIND; if(debug['M']) print("gop: %O %O[%s],%O[%s]\n", OAS, f->op, tnames[ft], t->op, tnames[tt]); if(typefd[ft] && f->op == OCONST) { /* TO DO: pick up special constants, possibly preloaded */ if(f->fconst == 0.0){ regalloc(&nod, t, t); gins(AXORPD, &nod, &nod); gmove(&nod, t); regfree(&nod); return; } } /* * load */ if(ft == TVLONG || ft == TUVLONG) if(f->op == OCONST) if(f->vconst > 0x7fffffffLL || f->vconst < -0x7fffffffLL) if(t->op != OREGISTER) { regalloc(&nod, f, Z); gmove(f, &nod); gmove(&nod, t); regfree(&nod); return; } if(f->op == ONAME || f->op == OINDREG || f->op == OIND || f->op == OINDEX) switch(ft) { case TCHAR: a = AMOVBLSX; if(t64) a = AMOVBQSX; goto ld; case TUCHAR: a = AMOVBLZX; if(t64) a = AMOVBQZX; goto ld; case TSHORT: a = AMOVWLSX; if(t64) a = AMOVWQSX; goto ld; case TUSHORT: a = AMOVWLZX; if(t64) a = AMOVWQZX; goto ld; case TINT: case TLONG: if(typefd[tt]) { regalloc(&nod, t, t); if(tt == TDOUBLE) a = ACVTSL2SD; else a = ACVTSL2SS; gins(a, f, &nod); gmove(&nod, t); regfree(&nod); return; } a = AMOVL; if(t64) a = AMOVLQSX; goto ld; case TUINT: case TULONG: a = AMOVL; if(t64) a = AMOVLQZX; /* could probably use plain MOVL */ goto ld; case TVLONG: if(typefd[tt]) { regalloc(&nod, t, t); if(tt == TDOUBLE) a = ACVTSQ2SD; else a = ACVTSQ2SS; gins(a, f, &nod); gmove(&nod, t); regfree(&nod); return; } case TUVLONG: a = AMOVQ; goto ld; case TIND: a = AMOVQ; if(ewidth[TIND] == 4) a = AMOVL; ld: regalloc(&nod, f, t); nod.type = t64? types[TVLONG]: types[TINT]; gins(a, f, &nod); gmove(&nod, t); regfree(&nod); return; case TFLOAT: a = AMOVSS; goto fld; case TDOUBLE: a = AMOVSD; fld: regalloc(&nod, f, t); if(tt != TDOUBLE && tt != TFLOAT){ /* TO DO: why is this here */ prtree(f, "odd tree"); nod.type = t64? types[TVLONG]: types[TINT]; } gins(a, f, &nod); gmove(&nod, t); regfree(&nod); return; } /* * store */ if(t->op == ONAME || t->op == OINDREG || t->op == OIND || t->op == OINDEX) switch(tt) { case TCHAR: case TUCHAR: a = AMOVB; goto st; case TSHORT: case TUSHORT: a = AMOVW; goto st; case TINT: case TUINT: case TLONG: case TULONG: a = AMOVL; goto st; case TVLONG: case TUVLONG: case TIND: a = AMOVQ; goto st; st: if(f->op == OCONST) { gins(a, f, t); return; } fst: regalloc(&nod, t, f); gmove(f, &nod); gins(a, &nod, t); regfree(&nod); return; case TFLOAT: a = AMOVSS; goto fst; case TDOUBLE: a = AMOVSD; goto fst; } /* * convert */ switch(CASE(ft,tt)) { default: /* * integer to integer ******** a = AGOK; break; case CASE( TCHAR, TCHAR): case CASE( TUCHAR, TCHAR): case CASE( TSHORT, TCHAR): case CASE( TUSHORT,TCHAR): case CASE( TINT, TCHAR): case CASE( TUINT, TCHAR): case CASE( TLONG, TCHAR): case CASE( TULONG, TCHAR): case CASE( TCHAR, TUCHAR): case CASE( TUCHAR, TUCHAR): case CASE( TSHORT, TUCHAR): case CASE( TUSHORT,TUCHAR): case CASE( TINT, TUCHAR): case CASE( TUINT, TUCHAR): case CASE( TLONG, TUCHAR): case CASE( TULONG, TUCHAR): case CASE( TSHORT, TSHORT): case CASE( TUSHORT,TSHORT): case CASE( TINT, TSHORT): case CASE( TUINT, TSHORT): case CASE( TLONG, TSHORT): case CASE( TULONG, TSHORT): case CASE( TSHORT, TUSHORT): case CASE( TUSHORT,TUSHORT): case CASE( TINT, TUSHORT): case CASE( TUINT, TUSHORT): case CASE( TLONG, TUSHORT): case CASE( TULONG, TUSHORT): case CASE( TINT, TINT): case CASE( TUINT, TINT): case CASE( TLONG, TINT): case CASE( TULONG, TINT): case CASE( TINT, TUINT): case CASE( TUINT, TUINT): case CASE( TLONG, TUINT): case CASE( TULONG, TUINT): *****/ a = AMOVL; break; case CASE( TINT, TIND): case CASE( TINT, TVLONG): case CASE( TINT, TUVLONG): case CASE( TLONG, TIND): case CASE( TLONG, TVLONG): case CASE( TLONG, TUVLONG): a = AMOVLQSX; if(f->op == OCONST) { f->vconst &= (uvlong)0xffffffffU; if(f->vconst & 0x80000000) f->vconst |= (vlong)0xffffffff << 32; a = AMOVQ; } break; case CASE( TUINT, TIND): case CASE( TUINT, TVLONG): case CASE( TUINT, TUVLONG): case CASE( TULONG, TVLONG): case CASE( TULONG, TUVLONG): case CASE( TULONG, TIND): a = AMOVLQZX; if(f->op == OCONST) { f->vconst &= (uvlong)0xffffffffU; a = AMOVQ; } break; case CASE( TIND, TCHAR): case CASE( TIND, TUCHAR): case CASE( TIND, TSHORT): case CASE( TIND, TUSHORT): case CASE( TIND, TINT): case CASE( TIND, TUINT): case CASE( TIND, TLONG): case CASE( TIND, TULONG): case CASE( TVLONG, TCHAR): case CASE( TVLONG, TUCHAR): case CASE( TVLONG, TSHORT): case CASE( TVLONG, TUSHORT): case CASE( TVLONG, TINT): case CASE( TVLONG, TUINT): case CASE( TVLONG, TLONG): case CASE( TVLONG, TULONG): case CASE( TUVLONG, TCHAR): case CASE( TUVLONG, TUCHAR): case CASE( TUVLONG, TSHORT): case CASE( TUVLONG, TUSHORT): case CASE( TUVLONG, TINT): case CASE( TUVLONG, TUINT): case CASE( TUVLONG, TLONG): case CASE( TUVLONG, TULONG): a = AMOVQL; if(f->op == OCONST) { f->vconst &= (int)0xffffffffU; a = AMOVL; } break; case CASE( TIND, TIND): case CASE( TIND, TVLONG): case CASE( TIND, TUVLONG): case CASE( TVLONG, TIND): case CASE( TVLONG, TVLONG): case CASE( TVLONG, TUVLONG): case CASE( TUVLONG, TIND): case CASE( TUVLONG, TVLONG): case CASE( TUVLONG, TUVLONG): a = AMOVQ; break; case CASE( TSHORT, TINT): case CASE( TSHORT, TUINT): case CASE( TSHORT, TLONG): case CASE( TSHORT, TULONG): a = AMOVWLSX; if(f->op == OCONST) { f->vconst &= 0xffff; if(f->vconst & 0x8000) f->vconst |= 0xffff0000; a = AMOVL; } break; case CASE( TSHORT, TVLONG): case CASE( TSHORT, TUVLONG): case CASE( TSHORT, TIND): a = AMOVWQSX; if(f->op == OCONST) { f->vconst &= 0xffff; if(f->vconst & 0x8000){ f->vconst |= 0xffff0000; f->vconst |= (vlong)~0 << 32; } a = AMOVL; } break; case CASE( TUSHORT,TINT): case CASE( TUSHORT,TUINT): case CASE( TUSHORT,TLONG): case CASE( TUSHORT,TULONG): a = AMOVWLZX; if(f->op == OCONST) { f->vconst &= 0xffff; a = AMOVL; } break; case CASE( TUSHORT,TVLONG): case CASE( TUSHORT,TUVLONG): case CASE( TUSHORT,TIND): a = AMOVWQZX; if(f->op == OCONST) { f->vconst &= 0xffff; a = AMOVL; /* MOVL also zero-extends to 64 bits */ } break; case CASE( TCHAR, TSHORT): case CASE( TCHAR, TUSHORT): case CASE( TCHAR, TINT): case CASE( TCHAR, TUINT): case CASE( TCHAR, TLONG): case CASE( TCHAR, TULONG): a = AMOVBLSX; if(f->op == OCONST) { f->vconst &= 0xff; if(f->vconst & 0x80) f->vconst |= 0xffffff00; a = AMOVL; } break; case CASE( TCHAR, TVLONG): case CASE( TCHAR, TUVLONG): case CASE( TCHAR, TIND): a = AMOVBQSX; if(f->op == OCONST) { f->vconst &= 0xff; if(f->vconst & 0x80){ f->vconst |= 0xffffff00; f->vconst |= (vlong)~0 << 32; } a = AMOVQ; } break; case CASE( TUCHAR, TSHORT): case CASE( TUCHAR, TUSHORT): case CASE( TUCHAR, TINT): case CASE( TUCHAR, TUINT): case CASE( TUCHAR, TLONG): case CASE( TUCHAR, TULONG): a = AMOVBLZX; if(f->op == OCONST) { f->vconst &= 0xff; a = AMOVL; } break; case CASE( TUCHAR, TVLONG): case CASE( TUCHAR, TUVLONG): case CASE( TUCHAR, TIND): a = AMOVBQZX; if(f->op == OCONST) { f->vconst &= 0xff; a = AMOVL; /* zero-extends to 64-bits */ } break; /* * float to fix */ case CASE( TFLOAT, TCHAR): case CASE( TFLOAT, TUCHAR): case CASE( TFLOAT, TSHORT): case CASE( TFLOAT, TUSHORT): case CASE( TFLOAT, TINT): case CASE( TFLOAT, TUINT): case CASE( TFLOAT, TLONG): case CASE( TFLOAT, TULONG): case CASE( TFLOAT, TVLONG): case CASE( TFLOAT, TUVLONG): case CASE( TFLOAT, TIND): case CASE( TDOUBLE,TCHAR): case CASE( TDOUBLE,TUCHAR): case CASE( TDOUBLE,TSHORT): case CASE( TDOUBLE,TUSHORT): case CASE( TDOUBLE,TINT): case CASE( TDOUBLE,TUINT): case CASE( TDOUBLE,TLONG): case CASE( TDOUBLE,TULONG): case CASE( TDOUBLE,TVLONG): case CASE( TDOUBLE,TUVLONG): case CASE( TDOUBLE,TIND): regalloc(&nod, t, Z); if(ewidth[tt] == SZ_VLONG || typeu[tt] && ewidth[tt] == SZ_INT){ if(ft == TFLOAT) a = ACVTTSS2SQ; else a = ACVTTSD2SQ; }else{ if(ft == TFLOAT) a = ACVTTSS2SL; else a = ACVTTSD2SL; } gins(a, f, &nod); gmove(&nod, t); regfree(&nod); return; /* * uvlong to float */ case CASE( TUVLONG, TDOUBLE): case CASE( TUVLONG, TFLOAT): a = ACVTSQ2SS; if(tt == TDOUBLE) a = ACVTSQ2SD; regalloc(&nod, f, f); gmove(f, &nod); regalloc(&nod1, t, t); gins(ACMPQ, &nod, nodconst(0)); gins(AJLT, Z, Z); p1 = p; gins(a, &nod, &nod1); gins(AJMP, Z, Z); p2 = p; patch(p1, pc); regalloc(&nod2, f, Z); regalloc(&nod3, f, Z); gmove(&nod, &nod2); gins(ASHRQ, nodconst(1), &nod2); gmove(&nod, &nod3); gins(AANDL, nodconst(1), &nod3); gins(AORQ, &nod3, &nod2); gins(a, &nod2, &nod1); gins(tt == TDOUBLE? AADDSD: AADDSS, &nod1, &nod1); regfree(&nod2); regfree(&nod3); patch(p2, pc); regfree(&nod); regfree(&nod1); return; case CASE( TULONG, TDOUBLE): case CASE( TUINT, TDOUBLE): case CASE( TULONG, TFLOAT): case CASE( TUINT, TFLOAT): a = ACVTSQ2SS; if(tt == TDOUBLE) a = ACVTSQ2SD; regalloc(&nod, f, f); gins(AMOVLQZX, f, &nod); regalloc(&nod1, t, t); gins(a, &nod, &nod1); gmove(&nod1, t); regfree(&nod); regfree(&nod1); return; /* * fix to float */ case CASE( TCHAR, TFLOAT): case CASE( TUCHAR, TFLOAT): case CASE( TSHORT, TFLOAT): case CASE( TUSHORT,TFLOAT): case CASE( TINT, TFLOAT): case CASE( TLONG, TFLOAT): case CASE( TVLONG, TFLOAT): case CASE( TIND, TFLOAT): case CASE( TCHAR, TDOUBLE): case CASE( TUCHAR, TDOUBLE): case CASE( TSHORT, TDOUBLE): case CASE( TUSHORT,TDOUBLE): case CASE( TINT, TDOUBLE): case CASE( TLONG, TDOUBLE): case CASE( TVLONG, TDOUBLE): case CASE( TIND, TDOUBLE): regalloc(&nod, t, t); if(ewidth[ft] == SZ_VLONG){ if(tt == TFLOAT) a = ACVTSQ2SS; else a = ACVTSQ2SD; }else{ if(tt == TFLOAT) a = ACVTSL2SS; else a = ACVTSL2SD; } gins(a, f, &nod); gmove(&nod, t); regfree(&nod); return; /* * float to float */ case CASE( TFLOAT, TFLOAT): a = AMOVSS; break; case CASE( TDOUBLE,TFLOAT): a = ACVTSD2SS; break; case CASE( TFLOAT, TDOUBLE): a = ACVTSS2SD; break; case CASE( TDOUBLE,TDOUBLE): a = AMOVSD; break; } if(a == AMOVQ || a == AMOVSD || a == AMOVSS || a == AMOVL && ewidth[ft] == ewidth[tt]) /* TO DO: check AMOVL */ if(samaddr(f, t)) return; gins(a, f, t); } void doindex(Node *n) { Node nod, nod1; int32 v; if(debug['Y']) prtree(n, "index"); if(n->left->complex >= FNX) print("botch in doindex\n"); regalloc(&nod, &qregnode, Z); v = constnode.vconst; cgen(n->right, &nod); idx.ptr = D_NONE; if(n->left->op == OCONST) idx.ptr = D_CONST; else if(n->left->op == OREGISTER) idx.ptr = n->left->reg; else if(n->left->op != OADDR) { reg[D_BP]++; // can't be used as a base regalloc(&nod1, &qregnode, Z); cgen(n->left, &nod1); idx.ptr = nod1.reg; regfree(&nod1); reg[D_BP]--; } idx.reg = nod.reg; regfree(&nod); constnode.vconst = v; } void gins(int a, Node *f, Node *t) { if(f != Z && f->op == OINDEX) doindex(f); if(t != Z && t->op == OINDEX) doindex(t); nextpc(); p->as = a; if(f != Z) naddr(f, &p->from); if(t != Z) naddr(t, &p->to); if(debug['g']) print("%P\n", p); } void gopcode(int o, Type *ty, Node *f, Node *t) { int a, et; et = TLONG; if(ty != T) et = ty->etype; if(et == TIND && ewidth[TIND] == 4) et = TUINT; if(debug['M']) { if(f != Z && f->type != T) print("gop: %O %O[%s],", o, f->op, tnames[et]); else print("gop: %O Z,", o); if(t != Z && t->type != T) print("%O[%s]\n", t->op, tnames[t->type->etype]); else print("Z\n"); } a = AGOK; switch(o) { case OCOM: a = ANOTL; if(et == TCHAR || et == TUCHAR) a = ANOTB; if(et == TSHORT || et == TUSHORT) a = ANOTW; if(et == TVLONG || et == TUVLONG || et == TIND) a = ANOTQ; break; case ONEG: a = ANEGL; if(et == TCHAR || et == TUCHAR) a = ANEGB; if(et == TSHORT || et == TUSHORT) a = ANEGW; if(et == TVLONG || et == TUVLONG || et == TIND) a = ANEGQ; break; case OADDR: a = ALEAQ; break; case OASADD: case OADD: a = AADDL; if(et == TCHAR || et == TUCHAR) a = AADDB; if(et == TSHORT || et == TUSHORT) a = AADDW; if(et == TVLONG || et == TUVLONG || et == TIND) a = AADDQ; if(et == TFLOAT) a = AADDSS; if(et == TDOUBLE) a = AADDSD; break; case OASSUB: case OSUB: a = ASUBL; if(et == TCHAR || et == TUCHAR) a = ASUBB; if(et == TSHORT || et == TUSHORT) a = ASUBW; if(et == TVLONG || et == TUVLONG || et == TIND) a = ASUBQ; if(et == TFLOAT) a = ASUBSS; if(et == TDOUBLE) a = ASUBSD; break; case OASOR: case OOR: a = AORL; if(et == TCHAR || et == TUCHAR) a = AORB; if(et == TSHORT || et == TUSHORT) a = AORW; if(et == TVLONG || et == TUVLONG || et == TIND) a = AORQ; break; case OASAND: case OAND: a = AANDL; if(et == TCHAR || et == TUCHAR) a = AANDB; if(et == TSHORT || et == TUSHORT) a = AANDW; if(et == TVLONG || et == TUVLONG || et == TIND) a = AANDQ; break; case OASXOR: case OXOR: a = AXORL; if(et == TCHAR || et == TUCHAR) a = AXORB; if(et == TSHORT || et == TUSHORT) a = AXORW; if(et == TVLONG || et == TUVLONG || et == TIND) a = AXORQ; break; case OASLSHR: case OLSHR: a = ASHRL; if(et == TCHAR || et == TUCHAR) a = ASHRB; if(et == TSHORT || et == TUSHORT) a = ASHRW; if(et == TVLONG || et == TUVLONG || et == TIND) a = ASHRQ; break; case OASASHR: case OASHR: a = ASARL; if(et == TCHAR || et == TUCHAR) a = ASARB; if(et == TSHORT || et == TUSHORT) a = ASARW; if(et == TVLONG || et == TUVLONG || et == TIND) a = ASARQ; break; case OASASHL: case OASHL: a = ASALL; if(et == TCHAR || et == TUCHAR) a = ASALB; if(et == TSHORT || et == TUSHORT) a = ASALW; if(et == TVLONG || et == TUVLONG || et == TIND) a = ASALQ; break; case OROTL: a = AROLL; if(et == TCHAR || et == TUCHAR) a = AROLB; if(et == TSHORT || et == TUSHORT) a = AROLW; if(et == TVLONG || et == TUVLONG || et == TIND) a = AROLQ; break; case OFUNC: a = ACALL; break; case OASMUL: case OMUL: if(f->op == OREGISTER && t != Z && isreg(t, D_AX) && reg[D_DX] == 0) t = Z; a = AIMULL; if(et == TVLONG || et == TUVLONG || et == TIND) a = AIMULQ; if(et == TFLOAT) a = AMULSS; if(et == TDOUBLE) a = AMULSD; break; case OASMOD: case OMOD: case OASDIV: case ODIV: a = AIDIVL; if(et == TVLONG || et == TUVLONG || et == TIND) a = AIDIVQ; if(et == TFLOAT) a = ADIVSS; if(et == TDOUBLE) a = ADIVSD; break; case OASLMUL: case OLMUL: a = AMULL; if(et == TVLONG || et == TUVLONG || et == TIND) a = AMULQ; break; case OASLMOD: case OLMOD: case OASLDIV: case OLDIV: a = ADIVL; if(et == TVLONG || et == TUVLONG || et == TIND) a = ADIVQ; break; case OEQ: case ONE: case OLT: case OLE: case OGE: case OGT: case OLO: case OLS: case OHS: case OHI: a = ACMPL; if(et == TCHAR || et == TUCHAR) a = ACMPB; if(et == TSHORT || et == TUSHORT) a = ACMPW; if(et == TVLONG || et == TUVLONG || et == TIND) a = ACMPQ; if(et == TFLOAT) a = AUCOMISS; if(et == TDOUBLE) a = AUCOMISD; gins(a, f, t); switch(o) { case OEQ: a = AJEQ; break; case ONE: a = AJNE; break; case OLT: a = AJLT; break; case OLE: a = AJLE; break; case OGE: a = AJGE; break; case OGT: a = AJGT; break; case OLO: a = AJCS; break; case OLS: a = AJLS; break; case OHS: a = AJCC; break; case OHI: a = AJHI; break; } gins(a, Z, Z); return; } if(a == AGOK) diag(Z, "bad in gopcode %O", o); gins(a, f, t); } int samaddr(Node *f, Node *t) { return f->op == OREGISTER && t->op == OREGISTER && f->reg == t->reg; } void gbranch(int o) { int a; a = AGOK; switch(o) { case ORETURN: a = ARET; break; case OGOTO: a = AJMP; break; } nextpc(); if(a == AGOK) { diag(Z, "bad in gbranch %O", o); nextpc(); } p->as = a; } void patch(Prog *op, int32 pc) { op->to.offset = pc; op->to.type = D_BRANCH; op->to.u.branch = nil; op->pcond = nil; } void gpseudo(int a, Sym *s, Node *n) { nextpc(); p->as = a; p->from.type = D_EXTERN; p->from.sym = linksym(s); switch(a) { case ATEXT: p->from.scale = textflag; textflag = 0; break; case AGLOBL: p->from.scale = s->dataflag; break; } if(s->class == CSTATIC) p->from.type = D_STATIC; naddr(n, &p->to); if(a == ADATA || a == AGLOBL) pc--; } void gpcdata(int index, int value) { Node n1; n1 = *nodconst(index); gins(APCDATA, &n1, nodconst(value)); } void gprefetch(Node *n) { Node n1; regalloc(&n1, n, Z); gmove(n, &n1); n1.op = OINDREG; gins(APREFETCHNTA, &n1, Z); regfree(&n1); } int sconst(Node *n) { int32 v; if(n->op == OCONST && !typefd[n->type->etype]) { v = n->vconst; if(v >= -32766L && v < 32766L) return 1; } return 0; } int32 exreg(Type *t) { int32 o; if(typechlpv[t->etype]) { if(exregoffset >= 64) return 0; o = exregoffset; exregoffset += ewidth[TIND]; return o+1; // +1 to avoid 0 == failure; naddr's case OEXREG will subtract 1. } return 0; } schar ewidth[NTYPE] = { -1, /*[TXXX]*/ SZ_CHAR, /*[TCHAR]*/ SZ_CHAR, /*[TUCHAR]*/ SZ_SHORT, /*[TSHORT]*/ SZ_SHORT, /*[TUSHORT]*/ SZ_INT, /*[TINT]*/ SZ_INT, /*[TUINT]*/ SZ_LONG, /*[TLONG]*/ SZ_LONG, /*[TULONG]*/ SZ_VLONG, /*[TVLONG]*/ SZ_VLONG, /*[TUVLONG]*/ SZ_FLOAT, /*[TFLOAT]*/ SZ_DOUBLE, /*[TDOUBLE]*/ SZ_IND, /*[TIND]*/ 0, /*[TFUNC]*/ -1, /*[TARRAY]*/ 0, /*[TVOID]*/ -1, /*[TSTRUCT]*/ -1, /*[TUNION]*/ SZ_INT, /*[TENUM]*/ }; int32 ncast[NTYPE] = { 0, /*[TXXX]*/ BCHAR|BUCHAR, /*[TCHAR]*/ BCHAR|BUCHAR, /*[TUCHAR]*/ BSHORT|BUSHORT, /*[TSHORT]*/ BSHORT|BUSHORT, /*[TUSHORT]*/ BINT|BUINT|BLONG|BULONG, /*[TINT]*/ BINT|BUINT|BLONG|BULONG, /*[TUINT]*/ BINT|BUINT|BLONG|BULONG, /*[TLONG]*/ BINT|BUINT|BLONG|BULONG, /*[TULONG]*/ BVLONG|BUVLONG|BIND, /*[TVLONG]*/ BVLONG|BUVLONG|BIND, /*[TUVLONG]*/ BFLOAT, /*[TFLOAT]*/ BDOUBLE, /*[TDOUBLE]*/ BVLONG|BUVLONG|BIND, /*[TIND]*/ 0, /*[TFUNC]*/ 0, /*[TARRAY]*/ 0, /*[TVOID]*/ BSTRUCT, /*[TSTRUCT]*/ BUNION, /*[TUNION]*/ 0, /*[TENUM]*/ }; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6g���������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013271� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6g/Makefile������������������������������������������������������������������������������0100644�0000000�0000000�00000000265�12412656734�015005� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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. include ../../Make.dist �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6g/cgen.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000102566�12412656737�014437� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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. #include #include #include "gg.h" /* * generate: * res = n; * simplifies and calls gmove. */ void cgen(Node *n, Node *res) { Node *nl, *nr, *r; Node n1, n2; int a, f; Prog *p1, *p2, *p3; Addr addr; if(debug['g']) { dump("\ncgen-n", n); dump("cgen-res", res); } if(n == N || n->type == T) goto ret; if(res == N || res->type == T) fatal("cgen: res nil"); while(n->op == OCONVNOP) n = n->left; switch(n->op) { case OSLICE: case OSLICEARR: case OSLICESTR: case OSLICE3: case OSLICE3ARR: if (res->op != ONAME || !res->addable) { tempname(&n1, n->type); cgen_slice(n, &n1); cgen(&n1, res); } else cgen_slice(n, res); goto ret; case OEFACE: if (res->op != ONAME || !res->addable) { tempname(&n1, n->type); cgen_eface(n, &n1); cgen(&n1, res); } else cgen_eface(n, res); goto ret; } if(n->ullman >= UINF) { if(n->op == OINDREG) fatal("cgen: this is going to misscompile"); if(res->ullman >= UINF) { tempname(&n1, n->type); cgen(n, &n1); cgen(&n1, res); goto ret; } } if(isfat(n->type)) { if(n->type->width < 0) fatal("forgot to compute width for %T", n->type); sgen(n, res, n->type->width); goto ret; } if(!res->addable) { if(n->ullman > res->ullman) { regalloc(&n1, n->type, res); cgen(n, &n1); if(n1.ullman > res->ullman) { dump("n1", &n1); dump("res", res); fatal("loop in cgen"); } cgen(&n1, res); regfree(&n1); goto ret; } if(res->ullman >= UINF) goto gen; if(complexop(n, res)) { complexgen(n, res); goto ret; } f = 1; // gen thru register switch(n->op) { case OLITERAL: if(smallintconst(n)) f = 0; break; case OREGISTER: f = 0; break; } if(!iscomplex[n->type->etype]) { a = optoas(OAS, res->type); if(sudoaddable(a, res, &addr)) { if(f) { regalloc(&n2, res->type, N); cgen(n, &n2); p1 = gins(a, &n2, N); regfree(&n2); } else p1 = gins(a, n, N); p1->to = addr; if(debug['g']) print("%P [ignore previous line]\n", p1); sudoclean(); goto ret; } } gen: igen(res, &n1, N); cgen(n, &n1); regfree(&n1); goto ret; } // update addressability for string, slice // can't do in walk because n->left->addable // changes if n->left is an escaping local variable. switch(n->op) { case OSPTR: case OLEN: if(isslice(n->left->type) || istype(n->left->type, TSTRING)) n->addable = n->left->addable; break; case OCAP: if(isslice(n->left->type)) n->addable = n->left->addable; break; case OITAB: n->addable = n->left->addable; break; } if(complexop(n, res)) { complexgen(n, res); goto ret; } if(n->addable) { gmove(n, res); goto ret; } nl = n->left; nr = n->right; if(nl != N && nl->ullman >= UINF) if(nr != N && nr->ullman >= UINF) { tempname(&n1, nl->type); cgen(nl, &n1); n2 = *n; n2.left = &n1; cgen(&n2, res); goto ret; } if(!iscomplex[n->type->etype]) { a = optoas(OAS, n->type); if(sudoaddable(a, n, &addr)) { if(res->op == OREGISTER) { p1 = gins(a, N, res); p1->from = addr; } else { regalloc(&n2, n->type, N); p1 = gins(a, N, &n2); p1->from = addr; gins(a, &n2, res); regfree(&n2); } sudoclean(); goto ret; } } switch(n->op) { default: dump("cgen", n); fatal("cgen: unknown op %+hN", n); break; // these call bgen to get a bool value case OOROR: case OANDAND: case OEQ: case ONE: case OLT: case OLE: case OGE: case OGT: case ONOT: p1 = gbranch(AJMP, T, 0); p2 = pc; gmove(nodbool(1), res); p3 = gbranch(AJMP, T, 0); patch(p1, pc); bgen(n, 1, 0, p2); gmove(nodbool(0), res); patch(p3, pc); goto ret; case OPLUS: cgen(nl, res); goto ret; // unary case OCOM: a = optoas(OXOR, nl->type); regalloc(&n1, nl->type, N); cgen(nl, &n1); nodconst(&n2, nl->type, -1); gins(a, &n2, &n1); gmove(&n1, res); regfree(&n1); goto ret; case OMINUS: if(isfloat[nl->type->etype]) { nr = nodintconst(-1); convlit(&nr, n->type); a = optoas(OMUL, nl->type); goto sbop; } a = optoas(n->op, nl->type); goto uop; // symmetric binary case OAND: case OOR: case OXOR: case OADD: case OADDPTR: case OMUL: a = optoas(n->op, nl->type); if(a == AIMULB) { cgen_bmul(n->op, nl, nr, res); break; } goto sbop; // asymmetric binary case OSUB: a = optoas(n->op, nl->type); goto abop; case OHMUL: cgen_hmul(nl, nr, res); break; case OCONV: if(n->type->width > nl->type->width) { // If loading from memory, do conversion during load, // so as to avoid use of 8-bit register in, say, int(*byteptr). switch(nl->op) { case ODOT: case ODOTPTR: case OINDEX: case OIND: case ONAME: igen(nl, &n1, res); regalloc(&n2, n->type, res); gmove(&n1, &n2); gmove(&n2, res); regfree(&n2); regfree(&n1); goto ret; } } regalloc(&n1, nl->type, res); regalloc(&n2, n->type, &n1); cgen(nl, &n1); // if we do the conversion n1 -> n2 here // reusing the register, then gmove won't // have to allocate its own register. gmove(&n1, &n2); gmove(&n2, res); regfree(&n2); regfree(&n1); break; case ODOT: case ODOTPTR: case OINDEX: case OIND: case ONAME: // PHEAP or PPARAMREF var igen(n, &n1, res); gmove(&n1, res); regfree(&n1); break; case OITAB: // interface table is first word of interface value igen(nl, &n1, res); n1.type = n->type; gmove(&n1, res); regfree(&n1); break; case OSPTR: // pointer is the first word of string or slice. if(isconst(nl, CTSTR)) { regalloc(&n1, types[tptr], res); p1 = gins(ALEAQ, N, &n1); datastring(nl->val.u.sval->s, nl->val.u.sval->len, &p1->from); gmove(&n1, res); regfree(&n1); break; } igen(nl, &n1, res); n1.type = n->type; gmove(&n1, res); regfree(&n1); break; case OLEN: if(istype(nl->type, TMAP) || istype(nl->type, TCHAN)) { // map and chan have len in the first int-sized word. // a zero pointer means zero length regalloc(&n1, types[tptr], res); cgen(nl, &n1); nodconst(&n2, types[tptr], 0); gins(optoas(OCMP, types[tptr]), &n1, &n2); p1 = gbranch(optoas(OEQ, types[tptr]), T, 0); n2 = n1; n2.op = OINDREG; n2.type = types[simtype[TINT]]; gmove(&n2, &n1); patch(p1, pc); gmove(&n1, res); regfree(&n1); break; } if(istype(nl->type, TSTRING) || isslice(nl->type)) { // both slice and string have len one pointer into the struct. // a zero pointer means zero length igen(nl, &n1, res); n1.type = types[simtype[TUINT]]; n1.xoffset += Array_nel; gmove(&n1, res); regfree(&n1); break; } fatal("cgen: OLEN: unknown type %lT", nl->type); break; case OCAP: if(istype(nl->type, TCHAN)) { // chan has cap in the second int-sized word. // a zero pointer means zero length regalloc(&n1, types[tptr], res); cgen(nl, &n1); nodconst(&n2, types[tptr], 0); gins(optoas(OCMP, types[tptr]), &n1, &n2); p1 = gbranch(optoas(OEQ, types[tptr]), T, 0); n2 = n1; n2.op = OINDREG; n2.xoffset = widthint; n2.type = types[simtype[TINT]]; gmove(&n2, &n1); patch(p1, pc); gmove(&n1, res); regfree(&n1); break; } if(isslice(nl->type)) { igen(nl, &n1, res); n1.type = types[simtype[TUINT]]; n1.xoffset += Array_cap; gmove(&n1, res); regfree(&n1); break; } fatal("cgen: OCAP: unknown type %lT", nl->type); break; case OADDR: if(n->bounded) // let race detector avoid nil checks disable_checknil++; agen(nl, res); if(n->bounded) disable_checknil--; break; case OCALLMETH: cgen_callmeth(n, 0); cgen_callret(n, res); break; case OCALLINTER: cgen_callinter(n, res, 0); cgen_callret(n, res); break; case OCALLFUNC: cgen_call(n, 0); cgen_callret(n, res); break; case OMOD: case ODIV: if(isfloat[n->type->etype]) { a = optoas(n->op, nl->type); goto abop; } if(nl->ullman >= nr->ullman) { regalloc(&n1, nl->type, res); cgen(nl, &n1); cgen_div(n->op, &n1, nr, res); regfree(&n1); } else { if(!smallintconst(nr)) { regalloc(&n2, nr->type, res); cgen(nr, &n2); } else { n2 = *nr; } cgen_div(n->op, nl, &n2, res); if(n2.op != OLITERAL) regfree(&n2); } break; case OLSH: case ORSH: case OLROT: cgen_shift(n->op, n->bounded, nl, nr, res); break; } goto ret; sbop: // symmetric binary /* * put simplest on right - we'll generate into left * and then adjust it using the computation of right. * constants and variables have the same ullman * count, so look for constants specially. * * an integer constant we can use as an immediate * is simpler than a variable - we can use the immediate * in the adjustment instruction directly - so it goes * on the right. * * other constants, like big integers or floating point * constants, require a mov into a register, so those * might as well go on the left, so we can reuse that * register for the computation. */ if(nl->ullman < nr->ullman || (nl->ullman == nr->ullman && (smallintconst(nl) || (nr->op == OLITERAL && !smallintconst(nr))))) { r = nl; nl = nr; nr = r; } abop: // asymmetric binary if(nl->ullman >= nr->ullman) { regalloc(&n1, nl->type, res); cgen(nl, &n1); /* * This generates smaller code - it avoids a MOV - but it's * easily 10% slower due to not being able to * optimize/manipulate the move. * To see, run: go test -bench . crypto/md5 * with and without. * if(sudoaddable(a, nr, &addr)) { p1 = gins(a, N, &n1); p1->from = addr; gmove(&n1, res); sudoclean(); regfree(&n1); goto ret; } * */ if(smallintconst(nr)) n2 = *nr; else { regalloc(&n2, nr->type, N); cgen(nr, &n2); } } else { if(smallintconst(nr)) n2 = *nr; else { regalloc(&n2, nr->type, res); cgen(nr, &n2); } regalloc(&n1, nl->type, N); cgen(nl, &n1); } gins(a, &n2, &n1); gmove(&n1, res); regfree(&n1); if(n2.op != OLITERAL) regfree(&n2); goto ret; uop: // unary regalloc(&n1, nl->type, res); cgen(nl, &n1); gins(a, N, &n1); gmove(&n1, res); regfree(&n1); goto ret; ret: ; } /* * allocate a register (reusing res if possible) and generate * a = n * The caller must call regfree(a). */ void cgenr(Node *n, Node *a, Node *res) { Node n1; if(debug['g']) dump("cgenr-n", n); if(isfat(n->type)) fatal("cgenr on fat node"); if(n->addable) { regalloc(a, n->type, res); gmove(n, a); return; } switch(n->op) { case ONAME: case ODOT: case ODOTPTR: case OINDEX: case OCALLFUNC: case OCALLMETH: case OCALLINTER: igen(n, &n1, res); regalloc(a, types[tptr], &n1); gmove(&n1, a); regfree(&n1); break; default: regalloc(a, n->type, res); cgen(n, a); break; } } /* * allocate a register (reusing res if possible) and generate * a = &n * The caller must call regfree(a). * The generated code checks that the result is not nil. */ void agenr(Node *n, Node *a, Node *res) { Node *nl, *nr; Node n1, n2, n3, n5, tmp, tmp2, nlen; Prog *p1; Type *t; uint64 w; uint64 v; int freelen; if(debug['g']) { dump("\nagenr-n", n); } nl = n->left; nr = n->right; switch(n->op) { case ODOT: case ODOTPTR: case OCALLFUNC: case OCALLMETH: case OCALLINTER: igen(n, &n1, res); regalloc(a, types[tptr], &n1); agen(&n1, a); regfree(&n1); break; case OIND: cgenr(n->left, a, res); cgen_checknil(a); break; case OINDEX: freelen = 0; w = n->type->width; // Generate the non-addressable child first. if(nr->addable) goto irad; if(nl->addable) { cgenr(nr, &n1, N); if(!isconst(nl, CTSTR)) { if(isfixedarray(nl->type)) { agenr(nl, &n3, res); } else { igen(nl, &nlen, res); freelen = 1; nlen.type = types[tptr]; nlen.xoffset += Array_array; regalloc(&n3, types[tptr], res); gmove(&nlen, &n3); nlen.type = types[simtype[TUINT]]; nlen.xoffset += Array_nel-Array_array; } } goto index; } tempname(&tmp, nr->type); cgen(nr, &tmp); nr = &tmp; irad: if(!isconst(nl, CTSTR)) { if(isfixedarray(nl->type)) { agenr(nl, &n3, res); } else { if(!nl->addable) { // igen will need an addressable node. tempname(&tmp2, nl->type); cgen(nl, &tmp2); nl = &tmp2; } igen(nl, &nlen, res); freelen = 1; nlen.type = types[tptr]; nlen.xoffset += Array_array; regalloc(&n3, types[tptr], res); gmove(&nlen, &n3); nlen.type = types[simtype[TUINT]]; nlen.xoffset += Array_nel-Array_array; } } if(!isconst(nr, CTINT)) { cgenr(nr, &n1, N); } goto index; index: // &a is in &n3 (allocated in res) // i is in &n1 (if not constant) // len(a) is in nlen (if needed) // w is width // constant index if(isconst(nr, CTINT)) { if(isconst(nl, CTSTR)) fatal("constant string constant index"); // front end should handle v = mpgetfix(nr->val.u.xval); if(isslice(nl->type) || nl->type->etype == TSTRING) { if(!debug['B'] && !n->bounded) { nodconst(&n2, types[simtype[TUINT]], v); if(smallintconst(nr)) { gins(optoas(OCMP, types[simtype[TUINT]]), &nlen, &n2); } else { regalloc(&tmp, types[simtype[TUINT]], N); gmove(&n2, &tmp); gins(optoas(OCMP, types[simtype[TUINT]]), &nlen, &tmp); regfree(&tmp); } p1 = gbranch(optoas(OGT, types[simtype[TUINT]]), T, +1); ginscall(panicindex, -1); patch(p1, pc); } regfree(&nlen); } if (v*w != 0) ginscon(optoas(OADD, types[tptr]), v*w, &n3); *a = n3; break; } // type of the index t = types[TUINT64]; if(issigned[n1.type->etype]) t = types[TINT64]; regalloc(&n2, t, &n1); // i gmove(&n1, &n2); regfree(&n1); if(!debug['B'] && !n->bounded) { // check bounds t = types[simtype[TUINT]]; if(is64(nr->type)) t = types[TUINT64]; if(isconst(nl, CTSTR)) { nodconst(&nlen, t, nl->val.u.sval->len); } else if(isslice(nl->type) || nl->type->etype == TSTRING) { if(is64(nr->type)) { regalloc(&n5, t, N); gmove(&nlen, &n5); regfree(&nlen); nlen = n5; } } else { nodconst(&nlen, t, nl->type->bound); if(!smallintconst(&nlen)) { regalloc(&n5, t, N); gmove(&nlen, &n5); nlen = n5; freelen = 1; } } gins(optoas(OCMP, t), &n2, &nlen); p1 = gbranch(optoas(OLT, t), T, +1); ginscall(panicindex, -1); patch(p1, pc); } if(isconst(nl, CTSTR)) { regalloc(&n3, types[tptr], res); p1 = gins(ALEAQ, N, &n3); datastring(nl->val.u.sval->s, nl->val.u.sval->len, &p1->from); if(flag_largemodel) { gins(AADDQ, &n2, &n3); } else { p1->from.scale = 1; p1->from.index = n2.val.u.reg; } goto indexdone; } if(w == 0) { // nothing to do } else if(w == 1 || w == 2 || w == 4 || w == 8) { p1 = gins(ALEAQ, &n2, &n3); p1->from.scale = w; p1->from.index = p1->from.type; p1->from.type = p1->to.type + D_INDIR; } else { ginscon(optoas(OMUL, t), w, &n2); gins(optoas(OADD, types[tptr]), &n2, &n3); } indexdone: *a = n3; regfree(&n2); if(freelen) regfree(&nlen); break; default: regalloc(a, types[tptr], res); agen(n, a); break; } } /* * generate: * res = &n; * The generated code checks that the result is not nil. */ void agen(Node *n, Node *res) { Node *nl, *nr; Node n1, n2; if(debug['g']) { dump("\nagen-res", res); dump("agen-r", n); } if(n == N || n->type == T) return; while(n->op == OCONVNOP) n = n->left; if(isconst(n, CTNIL) && n->type->width > widthptr) { // Use of a nil interface or nil slice. // Create a temporary we can take the address of and read. // The generated code is just going to panic, so it need not // be terribly efficient. See issue 3670. tempname(&n1, n->type); gvardef(&n1); clearfat(&n1); regalloc(&n2, types[tptr], res); gins(ALEAQ, &n1, &n2); gmove(&n2, res); regfree(&n2); goto ret; } if(n->addable) { regalloc(&n1, types[tptr], res); gins(ALEAQ, n, &n1); gmove(&n1, res); regfree(&n1); goto ret; } nl = n->left; nr = n->right; USED(nr); switch(n->op) { default: fatal("agen: unknown op %+hN", n); break; case OCALLMETH: cgen_callmeth(n, 0); cgen_aret(n, res); break; case OCALLINTER: cgen_callinter(n, res, 0); cgen_aret(n, res); break; case OCALLFUNC: cgen_call(n, 0); cgen_aret(n, res); break; case OSLICE: case OSLICEARR: case OSLICESTR: case OSLICE3: case OSLICE3ARR: tempname(&n1, n->type); cgen_slice(n, &n1); agen(&n1, res); break; case OEFACE: tempname(&n1, n->type); cgen_eface(n, &n1); agen(&n1, res); break; case OINDEX: agenr(n, &n1, res); gmove(&n1, res); regfree(&n1); break; case ONAME: // should only get here with names in this func. if(n->funcdepth > 0 && n->funcdepth != funcdepth) { dump("bad agen", n); fatal("agen: bad ONAME funcdepth %d != %d", n->funcdepth, funcdepth); } // should only get here for heap vars or paramref if(!(n->class & PHEAP) && n->class != PPARAMREF) { dump("bad agen", n); fatal("agen: bad ONAME class %#x", n->class); } cgen(n->heapaddr, res); if(n->xoffset != 0) ginscon(optoas(OADD, types[tptr]), n->xoffset, res); break; case OIND: cgen(nl, res); cgen_checknil(res); break; case ODOT: agen(nl, res); if(n->xoffset != 0) ginscon(optoas(OADD, types[tptr]), n->xoffset, res); break; case ODOTPTR: cgen(nl, res); cgen_checknil(res); if(n->xoffset != 0) ginscon(optoas(OADD, types[tptr]), n->xoffset, res); break; } ret: ; } /* * generate: * newreg = &n; * res = newreg * * on exit, a has been changed to be *newreg. * caller must regfree(a). * The generated code checks that the result is not *nil. */ void igen(Node *n, Node *a, Node *res) { Type *fp; Iter flist; Node n1; if(debug['g']) { dump("\nigen-n", n); } switch(n->op) { case ONAME: if((n->class&PHEAP) || n->class == PPARAMREF) break; *a = *n; return; case OINDREG: // Increase the refcount of the register so that igen's caller // has to call regfree. if(n->val.u.reg != D_SP) reg[n->val.u.reg]++; *a = *n; return; case ODOT: igen(n->left, a, res); a->xoffset += n->xoffset; a->type = n->type; fixlargeoffset(a); return; case ODOTPTR: cgenr(n->left, a, res); cgen_checknil(a); a->op = OINDREG; a->xoffset += n->xoffset; a->type = n->type; fixlargeoffset(a); return; case OCALLFUNC: case OCALLMETH: case OCALLINTER: switch(n->op) { case OCALLFUNC: cgen_call(n, 0); break; case OCALLMETH: cgen_callmeth(n, 0); break; case OCALLINTER: cgen_callinter(n, N, 0); break; } fp = structfirst(&flist, getoutarg(n->left->type)); memset(a, 0, sizeof *a); a->op = OINDREG; a->val.u.reg = D_SP; a->addable = 1; a->xoffset = fp->width; a->type = n->type; return; case OINDEX: // Index of fixed-size array by constant can // put the offset in the addressing. // Could do the same for slice except that we need // to use the real index for the bounds checking. if(isfixedarray(n->left->type) || (isptr[n->left->type->etype] && isfixedarray(n->left->left->type))) if(isconst(n->right, CTINT)) { // Compute &a. if(!isptr[n->left->type->etype]) igen(n->left, a, res); else { igen(n->left, &n1, res); cgen_checknil(&n1); regalloc(a, types[tptr], res); gmove(&n1, a); regfree(&n1); a->op = OINDREG; } // Compute &a[i] as &a + i*width. a->type = n->type; a->xoffset += mpgetfix(n->right->val.u.xval)*n->type->width; fixlargeoffset(a); return; } break; } agenr(n, a, res); a->op = OINDREG; a->type = n->type; } /* * generate: * if(n == true) goto to; */ void bgen(Node *n, int true, int likely, Prog *to) { int et, a; Node *nl, *nr, *l, *r; Node n1, n2, tmp; NodeList *ll; Prog *p1, *p2; if(debug['g']) { dump("\nbgen", n); } if(n == N) n = nodbool(1); if(n->ninit != nil) genlist(n->ninit); if(n->type == T) { convlit(&n, types[TBOOL]); if(n->type == T) goto ret; } et = n->type->etype; if(et != TBOOL) { yyerror("cgen: bad type %T for %O", n->type, n->op); patch(gins(AEND, N, N), to); goto ret; } nr = N; while(n->op == OCONVNOP) { n = n->left; if(n->ninit != nil) genlist(n->ninit); } switch(n->op) { default: def: regalloc(&n1, n->type, N); cgen(n, &n1); nodconst(&n2, n->type, 0); gins(optoas(OCMP, n->type), &n1, &n2); a = AJNE; if(!true) a = AJEQ; patch(gbranch(a, n->type, likely), to); regfree(&n1); goto ret; case OLITERAL: // need to ask if it is bool? if(!true == !n->val.u.bval) patch(gbranch(AJMP, T, likely), to); goto ret; case ONAME: if(n->addable == 0) goto def; nodconst(&n1, n->type, 0); gins(optoas(OCMP, n->type), n, &n1); a = AJNE; if(!true) a = AJEQ; patch(gbranch(a, n->type, likely), to); goto ret; case OANDAND: if(!true) goto caseor; caseand: p1 = gbranch(AJMP, T, 0); p2 = gbranch(AJMP, T, 0); patch(p1, pc); bgen(n->left, !true, -likely, p2); bgen(n->right, !true, -likely, p2); p1 = gbranch(AJMP, T, 0); patch(p1, to); patch(p2, pc); goto ret; case OOROR: if(!true) goto caseand; caseor: bgen(n->left, true, likely, to); bgen(n->right, true, likely, to); goto ret; case OEQ: case ONE: case OLT: case OGT: case OLE: case OGE: nr = n->right; if(nr == N || nr->type == T) goto ret; case ONOT: // unary nl = n->left; if(nl == N || nl->type == T) goto ret; break; } switch(n->op) { case ONOT: bgen(nl, !true, likely, to); goto ret; case OEQ: case ONE: case OLT: case OGT: case OLE: case OGE: a = n->op; if(!true) { if(isfloat[nr->type->etype]) { // brcom is not valid on floats when NaN is involved. p1 = gbranch(AJMP, T, 0); p2 = gbranch(AJMP, T, 0); patch(p1, pc); ll = n->ninit; // avoid re-genning ninit n->ninit = nil; bgen(n, 1, -likely, p2); n->ninit = ll; patch(gbranch(AJMP, T, 0), to); patch(p2, pc); goto ret; } a = brcom(a); true = !true; } // make simplest on right if(nl->op == OLITERAL || (nl->ullman < nr->ullman && nl->ullman < UINF)) { a = brrev(a); r = nl; nl = nr; nr = r; } if(isslice(nl->type)) { // front end should only leave cmp to literal nil if((a != OEQ && a != ONE) || nr->op != OLITERAL) { yyerror("illegal slice comparison"); break; } a = optoas(a, types[tptr]); igen(nl, &n1, N); n1.xoffset += Array_array; n1.type = types[tptr]; nodconst(&tmp, types[tptr], 0); gins(optoas(OCMP, types[tptr]), &n1, &tmp); patch(gbranch(a, types[tptr], likely), to); regfree(&n1); break; } if(isinter(nl->type)) { // front end should only leave cmp to literal nil if((a != OEQ && a != ONE) || nr->op != OLITERAL) { yyerror("illegal interface comparison"); break; } a = optoas(a, types[tptr]); igen(nl, &n1, N); n1.type = types[tptr]; nodconst(&tmp, types[tptr], 0); gins(optoas(OCMP, types[tptr]), &n1, &tmp); patch(gbranch(a, types[tptr], likely), to); regfree(&n1); break; } if(iscomplex[nl->type->etype]) { complexbool(a, nl, nr, true, likely, to); break; } if(nr->ullman >= UINF) { regalloc(&n1, nl->type, N); cgen(nl, &n1); tempname(&tmp, nl->type); gmove(&n1, &tmp); regfree(&n1); regalloc(&n2, nr->type, N); cgen(nr, &n2); regalloc(&n1, nl->type, N); cgen(&tmp, &n1); goto cmp; } regalloc(&n1, nl->type, N); cgen(nl, &n1); if(smallintconst(nr)) { gins(optoas(OCMP, nr->type), &n1, nr); patch(gbranch(optoas(a, nr->type), nr->type, likely), to); regfree(&n1); break; } regalloc(&n2, nr->type, N); cgen(nr, &n2); cmp: // only < and <= work right with NaN; reverse if needed l = &n1; r = &n2; if(isfloat[nl->type->etype] && (a == OGT || a == OGE)) { l = &n2; r = &n1; a = brrev(a); } gins(optoas(OCMP, nr->type), l, r); if(isfloat[nr->type->etype] && (n->op == OEQ || n->op == ONE)) { if(n->op == OEQ) { // neither NE nor P p1 = gbranch(AJNE, T, -likely); p2 = gbranch(AJPS, T, -likely); patch(gbranch(AJMP, T, 0), to); patch(p1, pc); patch(p2, pc); } else { // either NE or P patch(gbranch(AJNE, T, likely), to); patch(gbranch(AJPS, T, likely), to); } } else patch(gbranch(optoas(a, nr->type), nr->type, likely), to); regfree(&n1); regfree(&n2); break; } goto ret; ret: ; } /* * n is on stack, either local variable * or return value from function call. * return n's offset from SP. */ int64 stkof(Node *n) { Type *t; Iter flist; int64 off; switch(n->op) { case OINDREG: return n->xoffset; case ODOT: t = n->left->type; if(isptr[t->etype]) break; off = stkof(n->left); if(off == -1000 || off == 1000) return off; return off + n->xoffset; case OINDEX: t = n->left->type; if(!isfixedarray(t)) break; off = stkof(n->left); if(off == -1000 || off == 1000) return off; if(isconst(n->right, CTINT)) return off + t->type->width * mpgetfix(n->right->val.u.xval); return 1000; case OCALLMETH: case OCALLINTER: case OCALLFUNC: t = n->left->type; if(isptr[t->etype]) t = t->type; t = structfirst(&flist, getoutarg(t)); if(t != T) return t->width; break; } // botch - probably failing to recognize address // arithmetic on the above. eg INDEX and DOT return -1000; } /* * block copy: * memmove(&ns, &n, w); */ void sgen(Node *n, Node *ns, int64 w) { Node nodl, nodr, nodsi, noddi, cx, oldcx, tmp; vlong c, q, odst, osrc; NodeList *l; Prog *p; if(debug['g']) { print("\nsgen w=%lld\n", w); dump("r", n); dump("res", ns); } if(n->ullman >= UINF && ns->ullman >= UINF) fatal("sgen UINF"); if(w < 0) fatal("sgen copy %lld", w); // If copying .args, that's all the results, so record definition sites // for them for the liveness analysis. if(ns->op == ONAME && strcmp(ns->sym->name, ".args") == 0) for(l = curfn->dcl; l != nil; l = l->next) if(l->n->class == PPARAMOUT) gvardef(l->n); // Avoid taking the address for simple enough types. if(componentgen(n, ns)) return; if(w == 0) { // evaluate side effects only regalloc(&nodr, types[tptr], N); agen(ns, &nodr); agen(n, &nodr); regfree(&nodr); return; } // offset on the stack osrc = stkof(n); odst = stkof(ns); if(osrc != -1000 && odst != -1000 && (osrc == 1000 || odst == 1000)) { // osrc and odst both on stack, and at least one is in // an unknown position. Could generate code to test // for forward/backward copy, but instead just copy // to a temporary location first. tempname(&tmp, n->type); sgen(n, &tmp, w); sgen(&tmp, ns, w); return; } if(n->ullman >= ns->ullman) { agenr(n, &nodr, N); if(ns->op == ONAME) gvardef(ns); agenr(ns, &nodl, N); } else { if(ns->op == ONAME) gvardef(ns); agenr(ns, &nodl, N); agenr(n, &nodr, N); } nodreg(&noddi, types[tptr], D_DI); nodreg(&nodsi, types[tptr], D_SI); gmove(&nodl, &noddi); gmove(&nodr, &nodsi); regfree(&nodl); regfree(&nodr); c = w % 8; // bytes q = w / 8; // quads savex(D_CX, &cx, &oldcx, N, types[TINT64]); // if we are copying forward on the stack and // the src and dst overlap, then reverse direction if(osrc < odst && odst < osrc+w) { // reverse direction gins(ASTD, N, N); // set direction flag if(c > 0) { gconreg(addptr, w-1, D_SI); gconreg(addptr, w-1, D_DI); gconreg(movptr, c, D_CX); gins(AREP, N, N); // repeat gins(AMOVSB, N, N); // MOVB *(SI)-,*(DI)- } if(q > 0) { if(c > 0) { gconreg(addptr, -7, D_SI); gconreg(addptr, -7, D_DI); } else { gconreg(addptr, w-8, D_SI); gconreg(addptr, w-8, D_DI); } gconreg(movptr, q, D_CX); gins(AREP, N, N); // repeat gins(AMOVSQ, N, N); // MOVQ *(SI)-,*(DI)- } // we leave with the flag clear gins(ACLD, N, N); } else { // normal direction if(q > 128 || (nacl && q >= 4)) { gconreg(movptr, q, D_CX); gins(AREP, N, N); // repeat gins(AMOVSQ, N, N); // MOVQ *(SI)+,*(DI)+ } else if (q >= 4) { p = gins(ADUFFCOPY, N, N); p->to.type = D_ADDR; p->to.sym = linksym(pkglookup("duffcopy", runtimepkg)); // 14 and 128 = magic constants: see ../../pkg/runtime/asm_amd64.s p->to.offset = 14*(128-q); } else while(q > 0) { gins(AMOVSQ, N, N); // MOVQ *(SI)+,*(DI)+ q--; } // copy the remaining c bytes if(w < 4 || c <= 1 || (odst < osrc && osrc < odst+w)) { while(c > 0) { gins(AMOVSB, N, N); // MOVB *(SI)+,*(DI)+ c--; } } else if(w < 8 || c <= 4) { nodsi.op = OINDREG; noddi.op = OINDREG; nodsi.type = types[TINT32]; noddi.type = types[TINT32]; if(c > 4) { nodsi.xoffset = 0; noddi.xoffset = 0; gmove(&nodsi, &noddi); } nodsi.xoffset = c-4; noddi.xoffset = c-4; gmove(&nodsi, &noddi); } else { nodsi.op = OINDREG; noddi.op = OINDREG; nodsi.type = types[TINT64]; noddi.type = types[TINT64]; nodsi.xoffset = c-8; noddi.xoffset = c-8; gmove(&nodsi, &noddi); } } restx(&cx, &oldcx); } static int cadable(Node *n) { if(!n->addable) { // dont know how it happens, // but it does return 0; } switch(n->op) { case ONAME: return 1; } return 0; } /* * copy a composite value by moving its individual components. * Slices, strings and interfaces are supported. * Small structs or arrays with elements of basic type are * also supported. * nr is N when assigning a zero value. * return 1 if can do, 0 if can't. */ int componentgen(Node *nr, Node *nl) { Node nodl, nodr; Type *t; int freel, freer; vlong fldcount; vlong loffset, roffset; freel = 0; freer = 0; switch(nl->type->etype) { default: goto no; case TARRAY: t = nl->type; // Slices are ok. if(isslice(t)) break; // Small arrays are ok. if(t->bound > 0 && t->bound <= 3 && !isfat(t->type)) break; goto no; case TSTRUCT: // Small structs with non-fat types are ok. // Zero-sized structs are treated separately elsewhere. fldcount = 0; for(t=nl->type->type; t; t=t->down) { if(isfat(t->type)) goto no; if(t->etype != TFIELD) fatal("componentgen: not a TFIELD: %lT", t); fldcount++; } if(fldcount == 0 || fldcount > 4) goto no; break; case TSTRING: case TINTER: break; } nodl = *nl; if(!cadable(nl)) { if(nr == N || !cadable(nr)) goto no; igen(nl, &nodl, N); freel = 1; } if(nr != N) { nodr = *nr; if(!cadable(nr)) { igen(nr, &nodr, N); freer = 1; } } // nl and nr are 'cadable' which basically means they are names (variables) now. // If they are the same variable, don't generate any code, because the // VARDEF we generate will mark the old value as dead incorrectly. // (And also the assignments are useless.) if(nr != N && nl->op == ONAME && nr->op == ONAME && nl == nr) goto yes; switch(nl->type->etype) { case TARRAY: // componentgen for arrays. if(nl->op == ONAME) gvardef(nl); t = nl->type; if(!isslice(t)) { nodl.type = t->type; nodr.type = nodl.type; for(fldcount=0; fldcount < t->bound; fldcount++) { if(nr == N) clearslim(&nodl); else gmove(&nodr, &nodl); nodl.xoffset += t->type->width; nodr.xoffset += t->type->width; } goto yes; } // componentgen for slices. nodl.xoffset += Array_array; nodl.type = ptrto(nl->type->type); if(nr != N) { nodr.xoffset += Array_array; nodr.type = nodl.type; } else nodconst(&nodr, nodl.type, 0); gmove(&nodr, &nodl); nodl.xoffset += Array_nel-Array_array; nodl.type = types[simtype[TUINT]]; if(nr != N) { nodr.xoffset += Array_nel-Array_array; nodr.type = nodl.type; } else nodconst(&nodr, nodl.type, 0); gmove(&nodr, &nodl); nodl.xoffset += Array_cap-Array_nel; nodl.type = types[simtype[TUINT]]; if(nr != N) { nodr.xoffset += Array_cap-Array_nel; nodr.type = nodl.type; } else nodconst(&nodr, nodl.type, 0); gmove(&nodr, &nodl); goto yes; case TSTRING: if(nl->op == ONAME) gvardef(nl); nodl.xoffset += Array_array; nodl.type = ptrto(types[TUINT8]); if(nr != N) { nodr.xoffset += Array_array; nodr.type = nodl.type; } else nodconst(&nodr, nodl.type, 0); gmove(&nodr, &nodl); nodl.xoffset += Array_nel-Array_array; nodl.type = types[simtype[TUINT]]; if(nr != N) { nodr.xoffset += Array_nel-Array_array; nodr.type = nodl.type; } else nodconst(&nodr, nodl.type, 0); gmove(&nodr, &nodl); goto yes; case TINTER: if(nl->op == ONAME) gvardef(nl); nodl.xoffset += Array_array; nodl.type = ptrto(types[TUINT8]); if(nr != N) { nodr.xoffset += Array_array; nodr.type = nodl.type; } else nodconst(&nodr, nodl.type, 0); gmove(&nodr, &nodl); nodl.xoffset += Array_nel-Array_array; nodl.type = ptrto(types[TUINT8]); if(nr != N) { nodr.xoffset += Array_nel-Array_array; nodr.type = nodl.type; } else nodconst(&nodr, nodl.type, 0); gmove(&nodr, &nodl); goto yes; case TSTRUCT: if(nl->op == ONAME) gvardef(nl); loffset = nodl.xoffset; roffset = nodr.xoffset; // funarg structs may not begin at offset zero. if(nl->type->etype == TSTRUCT && nl->type->funarg && nl->type->type) loffset -= nl->type->type->width; if(nr != N && nr->type->etype == TSTRUCT && nr->type->funarg && nr->type->type) roffset -= nr->type->type->width; for(t=nl->type->type; t; t=t->down) { nodl.xoffset = loffset + t->width; nodl.type = t->type; if(nr == N) clearslim(&nodl); else { nodr.xoffset = roffset + t->width; nodr.type = nodl.type; gmove(&nodr, &nodl); } } goto yes; } no: if(freer) regfree(&nodr); if(freel) regfree(&nodl); return 0; yes: if(freer) regfree(&nodr); if(freel) regfree(&nodl); return 1; } ������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6g/doc.go��������������������������������������������������������������������������������0100644�0000000�0000000�00000000566�12412656734�014445� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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 ignore /* 6g is the version of the gc compiler for the x86-64. The $GOARCH for these tools is amd64. It reads .go files and outputs .6 files. The flags are documented in ../gc/doc.go. */ package main ������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6g/galign.c������������������������������������������������������������������������������0100644�0000000�0000000�00000002237�12412656737�014756� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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. #include #include #include "gg.h" int thechar = '6'; char* thestring = "amd64"; LinkArch* thelinkarch = &linkamd64; void linkarchinit(void) { if(strcmp(getgoarch(), "amd64p32") == 0) thelinkarch = &linkamd64p32; } vlong MAXWIDTH = 1LL<<50; int addptr = AADDQ; int movptr = AMOVQ; int leaptr = ALEAQ; int cmpptr = ACMPQ; /* * go declares several platform-specific type aliases: * int, uint, float, and uintptr */ Typedef typedefs[] = { "int", TINT, TINT64, "uint", TUINT, TUINT64, "uintptr", TUINTPTR, TUINT64, 0 }; void betypeinit(void) { widthptr = 8; widthint = 8; widthreg = 8; if(strcmp(getgoarch(), "amd64p32") == 0) { widthptr = 4; widthint = 4; addptr = AADDL; movptr = AMOVL; leaptr = ALEAL; cmpptr = ACMPL; typedefs[0].sameas = TINT32; typedefs[1].sameas = TUINT32; typedefs[2].sameas = TUINT32; } zprog.link = P; zprog.as = AGOK; zprog.from.type = D_NONE; zprog.from.index = D_NONE; zprog.from.scale = 0; zprog.to = zprog.from; listinit6(); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6g/gg.h����������������������������������������������������������������������������������0100644�0000000�0000000�00000005365�12412656737�014124� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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. #ifndef EXTERN #define EXTERN extern #endif #include "../gc/go.h" #include "../6l/6.out.h" #define TEXTFLAG from.scale EXTERN int32 dynloc; EXTERN uchar reg[D_NONE]; EXTERN int32 pcloc; // instruction counter EXTERN Strlit emptystring; EXTERN Prog zprog; EXTERN Node* newproc; EXTERN Node* deferproc; EXTERN Node* deferreturn; EXTERN Node* panicindex; EXTERN Node* panicslice; EXTERN Node* panicdiv; EXTERN Node* throwreturn; extern vlong unmappedzero; extern int addptr; extern int cmpptr; extern int movptr; extern int leaptr; /* * ggen.c */ void compile(Node*); void gen(Node*); Node* lookdot(Node*, Node*, int); void cgen_as(Node*, Node*); void cgen_callmeth(Node*, int); void cgen_callinter(Node*, Node*, int); void cgen_proc(Node*, int); void cgen_callret(Node*, Node*); void cgen_div(int, Node*, Node*, Node*); void cgen_bmul(int, Node*, Node*, Node*); void cgen_hmul(Node*, Node*, Node*); void cgen_shift(int, int, Node*, Node*, Node*); void cgen_dcl(Node*); int needconvert(Type*, Type*); void genconv(Type*, Type*); void allocparams(void); void checklabels(void); void ginscall(Node*, int); int gen_as_init(Node*); void clearslim(Node*); /* * cgen.c */ void agen(Node*, Node*); void agenr(Node*, Node*, Node*); void cgenr(Node*, Node*, Node*); void igen(Node*, Node*, Node*); vlong fieldoffset(Type*, Node*); void sgen(Node*, Node*, int64); void gmove(Node*, Node*); Prog* gins(int, Node*, Node*); int samaddr(Node*, Node*); void naddr(Node*, Addr*, int); void cgen_aret(Node*, Node*); void restx(Node*, Node*); void savex(int, Node*, Node*, Node*, Type*); int componentgen(Node*, Node*); /* * gsubr.c */ void clearp(Prog*); Prog* gbranch(int, Type*, int); Prog* prog(int); void gconv(int, int); int conv2pt(Type*); vlong convvtox(vlong, int); void fnparam(Type*, int, int); Prog* gop(int, Node*, Node*, Node*); int optoas(int, Type*); void ginit(void); void gclean(void); void regalloc(Node*, Type*, Node*); void regfree(Node*); Node* nodarg(Type*, int); void nodreg(Node*, Type*, int); void nodindreg(Node*, Type*, int); void gconreg(int, vlong, int); void ginscon(int, vlong, Node*); void buildtxt(void); Plist* newplist(void); int isfat(Type*); void sudoclean(void); int sudoaddable(int, Node*, Addr*); void afunclit(Addr*, Node*); void nodfconst(Node*, Type*, Mpflt*); void gtrack(Sym*); void gargsize(vlong); void fixlargeoffset(Node *n); /* * cplx.c */ int complexop(Node*, Node*); void complexmove(Node*, Node*); void complexgen(Node*, Node*); /* * gobj.c */ void datastring(char*, int, Addr*); void datagostring(Strlit*, Addr*); /* * list.c */ void listinit(void); void zaddr(Biobuf*, Addr*, int, int); ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6g/ggen.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000062064�12412656737�014441� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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. #undef EXTERN #define EXTERN #include #include #include "gg.h" #include "opt.h" static Prog *appendpp(Prog*, int, int, vlong, int, vlong); static Prog *zerorange(Prog *p, vlong frame, vlong lo, vlong hi, uint32 *ax); void defframe(Prog *ptxt) { uint32 frame, ax; Prog *p; vlong hi, lo; NodeList *l; Node *n; // fill in argument size ptxt->to.offset = rnd(curfn->type->argwid, widthptr); // fill in final stack size ptxt->to.offset <<= 32; frame = rnd(stksize+maxarg, widthreg); ptxt->to.offset |= frame; // insert code to zero ambiguously live variables // so that the garbage collector only sees initialized values // when it looks for pointers. p = ptxt; lo = hi = 0; ax = 0; // iterate through declarations - they are sorted in decreasing xoffset order. for(l=curfn->dcl; l != nil; l = l->next) { n = l->n; if(!n->needzero) continue; if(n->class != PAUTO) fatal("needzero class %d", n->class); if(n->type->width % widthptr != 0 || n->xoffset % widthptr != 0 || n->type->width == 0) fatal("var %lN has size %d offset %d", n, (int)n->type->width, (int)n->xoffset); if(lo != hi && n->xoffset + n->type->width >= lo - 2*widthreg) { // merge with range we already have lo = n->xoffset; continue; } // zero old range p = zerorange(p, frame, lo, hi, &ax); // set new range hi = n->xoffset + n->type->width; lo = n->xoffset; } // zero final range zerorange(p, frame, lo, hi, &ax); } static Prog* zerorange(Prog *p, vlong frame, vlong lo, vlong hi, uint32 *ax) { vlong cnt, i; cnt = hi - lo; if(cnt == 0) return p; if(*ax == 0) { p = appendpp(p, AMOVQ, D_CONST, 0, D_AX, 0); *ax = 1; } if(cnt % widthreg != 0) { // should only happen with nacl if(cnt % widthptr != 0) fatal("zerorange count not a multiple of widthptr %d", cnt); p = appendpp(p, AMOVL, D_AX, 0, D_SP+D_INDIR, frame+lo); lo += widthptr; cnt -= widthptr; } if(cnt <= 4*widthreg) { for(i = 0; i < cnt; i += widthreg) { p = appendpp(p, AMOVQ, D_AX, 0, D_SP+D_INDIR, frame+lo+i); } } else if(!nacl && (cnt <= 128*widthreg)) { p = appendpp(p, leaptr, D_SP+D_INDIR, frame+lo, D_DI, 0); p = appendpp(p, ADUFFZERO, D_NONE, 0, D_ADDR, 2*(128-cnt/widthreg)); p->to.sym = linksym(pkglookup("duffzero", runtimepkg)); } else { p = appendpp(p, AMOVQ, D_CONST, cnt/widthreg, D_CX, 0); p = appendpp(p, leaptr, D_SP+D_INDIR, frame+lo, D_DI, 0); p = appendpp(p, AREP, D_NONE, 0, D_NONE, 0); p = appendpp(p, ASTOSQ, D_NONE, 0, D_NONE, 0); } return p; } static Prog* appendpp(Prog *p, int as, int ftype, vlong foffset, int ttype, vlong toffset) { Prog *q; q = mal(sizeof(*q)); clearp(q); q->as = as; q->lineno = p->lineno; q->from.type = ftype; q->from.offset = foffset; q->to.type = ttype; q->to.offset = toffset; q->link = p->link; p->link = q; return q; } // Sweep the prog list to mark any used nodes. void markautoused(Prog* p) { for (; p; p = p->link) { if (p->as == ATYPE || p->as == AVARDEF || p->as == AVARKILL) continue; if (p->from.node) p->from.node->used = 1; if (p->to.node) p->to.node->used = 1; } } // Fixup instructions after allocauto (formerly compactframe) has moved all autos around. void fixautoused(Prog *p) { Prog **lp; for (lp=&p; (p=*lp) != P; ) { if (p->as == ATYPE && p->from.node && p->from.type == D_AUTO && !p->from.node->used) { *lp = p->link; continue; } if ((p->as == AVARDEF || p->as == AVARKILL) && p->to.node && !p->to.node->used) { // Cannot remove VARDEF instruction, because - unlike TYPE handled above - // VARDEFs are interspersed with other code, and a jump might be using the // VARDEF as a target. Replace with a no-op instead. A later pass will remove // the no-ops. p->to.type = D_NONE; p->to.node = N; p->as = ANOP; continue; } if (p->from.type == D_AUTO && p->from.node) p->from.offset += p->from.node->stkdelta; if (p->to.type == D_AUTO && p->to.node) p->to.offset += p->to.node->stkdelta; lp = &p->link; } } /* * generate: * call f * proc=-1 normal call but no return * proc=0 normal call * proc=1 goroutine run in new proc * proc=2 defer call save away stack * proc=3 normal call to C pointer (not Go func value) */ void ginscall(Node *f, int proc) { int32 arg; Prog *p; Node reg, con; Node r1; if(f->type != T) setmaxarg(f->type); arg = -1; // Most functions have a fixed-size argument block, so traceback uses that during unwind. // Not all, though: there are some variadic functions in package runtime, // and for those we emit call-specific metadata recorded by caller. // Reflect generates functions with variable argsize (see reflect.methodValueCall/makeFuncStub), // so we do this for all indirect calls as well. if(f->type != T && (f->sym == S || (f->sym != S && f->sym->pkg == runtimepkg) || proc == 1 || proc == 2)) { arg = f->type->argwid; if(proc == 1 || proc == 2) arg += 2*widthptr; } if(arg != -1) gargsize(arg); switch(proc) { default: fatal("ginscall: bad proc %d", proc); break; case 0: // normal call case -1: // normal call but no return if(f->op == ONAME && f->class == PFUNC) { if(f == deferreturn) { // Deferred calls will appear to be returning to // the CALL deferreturn(SB) that we are about to emit. // However, the stack trace code will show the line // of the instruction byte before the return PC. // To avoid that being an unrelated instruction, // insert an x86 NOP that we will have the right line number. // x86 NOP 0x90 is really XCHG AX, AX; use that description // because the NOP pseudo-instruction would be removed by // the linker. nodreg(®, types[TINT], D_AX); gins(AXCHGL, ®, ®); } p = gins(ACALL, N, f); afunclit(&p->to, f); if(proc == -1 || noreturn(p)) gins(AUNDEF, N, N); break; } nodreg(®, types[tptr], D_DX); nodreg(&r1, types[tptr], D_BX); gmove(f, ®); reg.op = OINDREG; gmove(®, &r1); reg.op = OREGISTER; gins(ACALL, ®, &r1); break; case 3: // normal call of c function pointer gins(ACALL, N, f); break; case 1: // call in new proc (go) case 2: // deferred call (defer) nodconst(&con, types[TINT64], argsize(f->type)); if(widthptr == 4) { nodreg(&r1, types[TINT32], D_CX); gmove(f, &r1); nodreg(®, types[TINT64], D_CX); nodconst(&r1, types[TINT64], 32); gins(ASHLQ, &r1, ®); gins(AORQ, &con, ®); gins(APUSHQ, ®, N); } else { nodreg(®, types[TINT64], D_CX); gmove(f, ®); gins(APUSHQ, ®, N); gins(APUSHQ, &con, N); } if(proc == 1) ginscall(newproc, 0); else { if(!hasdefer) fatal("hasdefer=0 but has defer"); ginscall(deferproc, 0); } nodreg(®, types[TINT64], D_CX); gins(APOPQ, N, ®); if(widthptr == 8) gins(APOPQ, N, ®); if(proc == 2) { nodreg(®, types[TINT64], D_AX); gins(ATESTQ, ®, ®); p = gbranch(AJEQ, T, +1); cgen_ret(N); patch(p, pc); } break; } if(arg != -1) gargsize(-1); } /* * n is call to interface method. * generate res = n. */ void cgen_callinter(Node *n, Node *res, int proc) { Node *i, *f; Node tmpi, nodi, nodo, nodr, nodsp; i = n->left; if(i->op != ODOTINTER) fatal("cgen_callinter: not ODOTINTER %O", i->op); f = i->right; // field if(f->op != ONAME) fatal("cgen_callinter: not ONAME %O", f->op); i = i->left; // interface if(!i->addable) { tempname(&tmpi, i->type); cgen(i, &tmpi); i = &tmpi; } genlist(n->list); // assign the args // i is now addable, prepare an indirected // register to hold its address. igen(i, &nodi, res); // REG = &inter nodindreg(&nodsp, types[tptr], D_SP); nodi.type = types[tptr]; nodi.xoffset += widthptr; cgen(&nodi, &nodsp); // 0(SP) = 8(REG) -- i.data regalloc(&nodo, types[tptr], res); nodi.type = types[tptr]; nodi.xoffset -= widthptr; cgen(&nodi, &nodo); // REG = 0(REG) -- i.tab regfree(&nodi); regalloc(&nodr, types[tptr], &nodo); if(n->left->xoffset == BADWIDTH) fatal("cgen_callinter: badwidth"); cgen_checknil(&nodo); // in case offset is huge nodo.op = OINDREG; nodo.xoffset = n->left->xoffset + 3*widthptr + 8; if(proc == 0) { // plain call: use direct c function pointer - more efficient cgen(&nodo, &nodr); // REG = 32+offset(REG) -- i.tab->fun[f] proc = 3; } else { // go/defer. generate go func value. gins(ALEAQ, &nodo, &nodr); // REG = &(32+offset(REG)) -- i.tab->fun[f] } nodr.type = n->left->type; ginscall(&nodr, proc); regfree(&nodr); regfree(&nodo); } /* * generate function call; * proc=0 normal call * proc=1 goroutine run in new proc * proc=2 defer call save away stack */ void cgen_call(Node *n, int proc) { Type *t; Node nod, afun; if(n == N) return; if(n->left->ullman >= UINF) { // if name involves a fn call // precompute the address of the fn tempname(&afun, types[tptr]); cgen(n->left, &afun); } genlist(n->list); // assign the args t = n->left->type; // call tempname pointer if(n->left->ullman >= UINF) { regalloc(&nod, types[tptr], N); cgen_as(&nod, &afun); nod.type = t; ginscall(&nod, proc); regfree(&nod); return; } // call pointer if(n->left->op != ONAME || n->left->class != PFUNC) { regalloc(&nod, types[tptr], N); cgen_as(&nod, n->left); nod.type = t; ginscall(&nod, proc); regfree(&nod); return; } // call direct n->left->method = 1; ginscall(n->left, proc); } /* * call to n has already been generated. * generate: * res = return value from call. */ void cgen_callret(Node *n, Node *res) { Node nod; Type *fp, *t; Iter flist; t = n->left->type; if(t->etype == TPTR32 || t->etype == TPTR64) t = t->type; fp = structfirst(&flist, getoutarg(t)); if(fp == T) fatal("cgen_callret: nil"); memset(&nod, 0, sizeof(nod)); nod.op = OINDREG; nod.val.u.reg = D_SP; nod.addable = 1; nod.xoffset = fp->width; nod.type = fp->type; cgen_as(res, &nod); } /* * call to n has already been generated. * generate: * res = &return value from call. */ void cgen_aret(Node *n, Node *res) { Node nod1, nod2; Type *fp, *t; Iter flist; t = n->left->type; if(isptr[t->etype]) t = t->type; fp = structfirst(&flist, getoutarg(t)); if(fp == T) fatal("cgen_aret: nil"); memset(&nod1, 0, sizeof(nod1)); nod1.op = OINDREG; nod1.val.u.reg = D_SP; nod1.addable = 1; nod1.xoffset = fp->width; nod1.type = fp->type; if(res->op != OREGISTER) { regalloc(&nod2, types[tptr], res); gins(leaptr, &nod1, &nod2); gins(movptr, &nod2, res); regfree(&nod2); } else gins(leaptr, &nod1, res); } /* * generate return. * n->left is assignments to return values. */ void cgen_ret(Node *n) { Prog *p; if(n != N) genlist(n->list); // copy out args if(hasdefer) ginscall(deferreturn, 0); genlist(curfn->exit); p = gins(ARET, N, N); if(n != N && n->op == ORETJMP) { p->to.type = D_EXTERN; p->to.sym = linksym(n->left->sym); } } /* * generate += *= etc. */ void cgen_asop(Node *n) { Node n1, n2, n3, n4; Node *nl, *nr; Prog *p1; Addr addr; int a; nl = n->left; nr = n->right; if(nr->ullman >= UINF && nl->ullman >= UINF) { tempname(&n1, nr->type); cgen(nr, &n1); n2 = *n; n2.right = &n1; cgen_asop(&n2); goto ret; } if(!isint[nl->type->etype]) goto hard; if(!isint[nr->type->etype]) goto hard; switch(n->etype) { case OADD: if(smallintconst(nr)) if(mpgetfix(nr->val.u.xval) == 1) { a = optoas(OINC, nl->type); if(nl->addable) { gins(a, N, nl); goto ret; } if(sudoaddable(a, nl, &addr)) { p1 = gins(a, N, N); p1->to = addr; sudoclean(); goto ret; } } break; case OSUB: if(smallintconst(nr)) if(mpgetfix(nr->val.u.xval) == 1) { a = optoas(ODEC, nl->type); if(nl->addable) { gins(a, N, nl); goto ret; } if(sudoaddable(a, nl, &addr)) { p1 = gins(a, N, N); p1->to = addr; sudoclean(); goto ret; } } break; } switch(n->etype) { case OADD: case OSUB: case OXOR: case OAND: case OOR: a = optoas(n->etype, nl->type); if(nl->addable) { if(smallintconst(nr)) { gins(a, nr, nl); goto ret; } regalloc(&n2, nr->type, N); cgen(nr, &n2); gins(a, &n2, nl); regfree(&n2); goto ret; } if(nr->ullman < UINF) if(sudoaddable(a, nl, &addr)) { if(smallintconst(nr)) { p1 = gins(a, nr, N); p1->to = addr; sudoclean(); goto ret; } regalloc(&n2, nr->type, N); cgen(nr, &n2); p1 = gins(a, &n2, N); p1->to = addr; regfree(&n2); sudoclean(); goto ret; } } hard: n2.op = 0; n1.op = 0; if(nr->op == OLITERAL) { // don't allocate a register for literals. } else if(nr->ullman >= nl->ullman || nl->addable) { regalloc(&n2, nr->type, N); cgen(nr, &n2); nr = &n2; } else { tempname(&n2, nr->type); cgen(nr, &n2); nr = &n2; } if(!nl->addable) { igen(nl, &n1, N); nl = &n1; } n3 = *n; n3.left = nl; n3.right = nr; n3.op = n->etype; regalloc(&n4, nl->type, N); cgen(&n3, &n4); gmove(&n4, nl); if(n1.op) regfree(&n1); if(n2.op == OREGISTER) regfree(&n2); regfree(&n4); ret: ; } int samereg(Node *a, Node *b) { if(a == N || b == N) return 0; if(a->op != OREGISTER) return 0; if(b->op != OREGISTER) return 0; if(a->val.u.reg != b->val.u.reg) return 0; return 1; } /* * generate division. * generates one of: * res = nl / nr * res = nl % nr * according to op. */ void dodiv(int op, Node *nl, Node *nr, Node *res) { int a, check; Node n3, n4; Type *t, *t0; Node ax, dx, ax1, n31, oldax, olddx; Prog *p1, *p2; // Have to be careful about handling // most negative int divided by -1 correctly. // The hardware will trap. // Also the byte divide instruction needs AH, // which we otherwise don't have to deal with. // Easiest way to avoid for int8, int16: use int32. // For int32 and int64, use explicit test. // Could use int64 hw for int32. t = nl->type; t0 = t; check = 0; if(issigned[t->etype]) { check = 1; if(isconst(nl, CTINT) && mpgetfix(nl->val.u.xval) != -(1ULL<<(t->width*8-1))) check = 0; else if(isconst(nr, CTINT) && mpgetfix(nr->val.u.xval) != -1) check = 0; } if(t->width < 4) { if(issigned[t->etype]) t = types[TINT32]; else t = types[TUINT32]; check = 0; } a = optoas(op, t); regalloc(&n3, t0, N); if(nl->ullman >= nr->ullman) { savex(D_AX, &ax, &oldax, res, t0); cgen(nl, &ax); regalloc(&ax, t0, &ax); // mark ax live during cgen cgen(nr, &n3); regfree(&ax); } else { cgen(nr, &n3); savex(D_AX, &ax, &oldax, res, t0); cgen(nl, &ax); } if(t != t0) { // Convert ax1 = ax; n31 = n3; ax.type = t; n3.type = t; gmove(&ax1, &ax); gmove(&n31, &n3); } p2 = P; if(nacl) { // Native Client does not relay the divide-by-zero trap // to the executing program, so we must insert a check // for ourselves. nodconst(&n4, t, 0); gins(optoas(OCMP, t), &n3, &n4); p1 = gbranch(optoas(ONE, t), T, +1); if(panicdiv == N) panicdiv = sysfunc("panicdivide"); ginscall(panicdiv, -1); patch(p1, pc); } if(check) { nodconst(&n4, t, -1); gins(optoas(OCMP, t), &n3, &n4); p1 = gbranch(optoas(ONE, t), T, +1); if(op == ODIV) { // a / (-1) is -a. gins(optoas(OMINUS, t), N, &ax); gmove(&ax, res); } else { // a % (-1) is 0. nodconst(&n4, t, 0); gmove(&n4, res); } p2 = gbranch(AJMP, T, 0); patch(p1, pc); } savex(D_DX, &dx, &olddx, res, t); if(!issigned[t->etype]) { nodconst(&n4, t, 0); gmove(&n4, &dx); } else gins(optoas(OEXTEND, t), N, N); gins(a, &n3, N); regfree(&n3); if(op == ODIV) gmove(&ax, res); else gmove(&dx, res); restx(&dx, &olddx); if(check) patch(p2, pc); restx(&ax, &oldax); } /* * register dr is one of the special ones (AX, CX, DI, SI, etc.). * we need to use it. if it is already allocated as a temporary * (r > 1; can only happen if a routine like sgen passed a * special as cgen's res and then cgen used regalloc to reuse * it as its own temporary), then move it for now to another * register. caller must call restx to move it back. * the move is not necessary if dr == res, because res is * known to be dead. */ void savex(int dr, Node *x, Node *oldx, Node *res, Type *t) { int r; r = reg[dr]; // save current ax and dx if they are live // and not the destination memset(oldx, 0, sizeof *oldx); nodreg(x, t, dr); if(r > 1 && !samereg(x, res)) { regalloc(oldx, types[TINT64], N); x->type = types[TINT64]; gmove(x, oldx); x->type = t; oldx->ostk = r; // squirrel away old r value reg[dr] = 1; } } void restx(Node *x, Node *oldx) { if(oldx->op != 0) { x->type = types[TINT64]; reg[x->val.u.reg] = oldx->ostk; gmove(oldx, x); regfree(oldx); } } /* * generate division according to op, one of: * res = nl / nr * res = nl % nr */ void cgen_div(int op, Node *nl, Node *nr, Node *res) { Node n1, n2, n3; int w, a; Magic m; if(nr->op != OLITERAL) goto longdiv; w = nl->type->width*8; // Front end handled 32-bit division. We only need to handle 64-bit. // try to do division by multiply by (2^w)/d // see hacker's delight chapter 10 switch(simtype[nl->type->etype]) { default: goto longdiv; case TUINT64: m.w = w; m.ud = mpgetfix(nr->val.u.xval); umagic(&m); if(m.bad) break; if(op == OMOD) goto longmod; cgenr(nl, &n1, N); nodconst(&n2, nl->type, m.um); regalloc(&n3, nl->type, res); cgen_hmul(&n1, &n2, &n3); if(m.ua) { // need to add numerator accounting for overflow gins(optoas(OADD, nl->type), &n1, &n3); nodconst(&n2, nl->type, 1); gins(optoas(ORROTC, nl->type), &n2, &n3); nodconst(&n2, nl->type, m.s-1); gins(optoas(ORSH, nl->type), &n2, &n3); } else { nodconst(&n2, nl->type, m.s); gins(optoas(ORSH, nl->type), &n2, &n3); // shift dx } gmove(&n3, res); regfree(&n1); regfree(&n3); return; case TINT64: m.w = w; m.sd = mpgetfix(nr->val.u.xval); smagic(&m); if(m.bad) break; if(op == OMOD) goto longmod; cgenr(nl, &n1, res); nodconst(&n2, nl->type, m.sm); regalloc(&n3, nl->type, N); cgen_hmul(&n1, &n2, &n3); if(m.sm < 0) { // need to add numerator gins(optoas(OADD, nl->type), &n1, &n3); } nodconst(&n2, nl->type, m.s); gins(optoas(ORSH, nl->type), &n2, &n3); // shift n3 nodconst(&n2, nl->type, w-1); gins(optoas(ORSH, nl->type), &n2, &n1); // -1 iff num is neg gins(optoas(OSUB, nl->type), &n1, &n3); // added if(m.sd < 0) { // this could probably be removed // by factoring it into the multiplier gins(optoas(OMINUS, nl->type), N, &n3); } gmove(&n3, res); regfree(&n1); regfree(&n3); return; } goto longdiv; longdiv: // division and mod using (slow) hardware instruction dodiv(op, nl, nr, res); return; longmod: // mod using formula A%B = A-(A/B*B) but // we know that there is a fast algorithm for A/B regalloc(&n1, nl->type, res); cgen(nl, &n1); regalloc(&n2, nl->type, N); cgen_div(ODIV, &n1, nr, &n2); a = optoas(OMUL, nl->type); if(w == 8) { // use 2-operand 16-bit multiply // because there is no 2-operand 8-bit multiply a = AIMULW; } if(!smallintconst(nr)) { regalloc(&n3, nl->type, N); cgen(nr, &n3); gins(a, &n3, &n2); regfree(&n3); } else gins(a, nr, &n2); gins(optoas(OSUB, nl->type), &n2, &n1); gmove(&n1, res); regfree(&n1); regfree(&n2); } /* * generate high multiply: * res = (nl*nr) >> width */ void cgen_hmul(Node *nl, Node *nr, Node *res) { Type *t; int a; Node n1, n2, ax, dx, *tmp; t = nl->type; a = optoas(OHMUL, t); if(nl->ullman < nr->ullman) { tmp = nl; nl = nr; nr = tmp; } cgenr(nl, &n1, res); cgenr(nr, &n2, N); nodreg(&ax, t, D_AX); gmove(&n1, &ax); gins(a, &n2, N); regfree(&n2); regfree(&n1); if(t->width == 1) { // byte multiply behaves differently. nodreg(&ax, t, D_AH); nodreg(&dx, t, D_DX); gmove(&ax, &dx); } nodreg(&dx, t, D_DX); gmove(&dx, res); } /* * generate shift according to op, one of: * res = nl << nr * res = nl >> nr */ void cgen_shift(int op, int bounded, Node *nl, Node *nr, Node *res) { Node n1, n2, n3, n4, n5, cx, oldcx; int a, rcx; Prog *p1; uvlong sc; Type *tcount; a = optoas(op, nl->type); if(nr->op == OLITERAL) { regalloc(&n1, nl->type, res); cgen(nl, &n1); sc = mpgetfix(nr->val.u.xval); if(sc >= nl->type->width*8) { // large shift gets 2 shifts by width-1 nodconst(&n3, types[TUINT32], nl->type->width*8-1); gins(a, &n3, &n1); gins(a, &n3, &n1); } else gins(a, nr, &n1); gmove(&n1, res); regfree(&n1); goto ret; } if(nl->ullman >= UINF) { tempname(&n4, nl->type); cgen(nl, &n4); nl = &n4; } if(nr->ullman >= UINF) { tempname(&n5, nr->type); cgen(nr, &n5); nr = &n5; } rcx = reg[D_CX]; nodreg(&n1, types[TUINT32], D_CX); // Allow either uint32 or uint64 as shift type, // to avoid unnecessary conversion from uint32 to uint64 // just to do the comparison. tcount = types[simtype[nr->type->etype]]; if(tcount->etype < TUINT32) tcount = types[TUINT32]; regalloc(&n1, nr->type, &n1); // to hold the shift type in CX regalloc(&n3, tcount, &n1); // to clear high bits of CX nodreg(&cx, types[TUINT64], D_CX); memset(&oldcx, 0, sizeof oldcx); if(rcx > 0 && !samereg(&cx, res)) { regalloc(&oldcx, types[TUINT64], N); gmove(&cx, &oldcx); } cx.type = tcount; if(samereg(&cx, res)) regalloc(&n2, nl->type, N); else regalloc(&n2, nl->type, res); if(nl->ullman >= nr->ullman) { cgen(nl, &n2); cgen(nr, &n1); gmove(&n1, &n3); } else { cgen(nr, &n1); gmove(&n1, &n3); cgen(nl, &n2); } regfree(&n3); // test and fix up large shifts if(!bounded) { nodconst(&n3, tcount, nl->type->width*8); gins(optoas(OCMP, tcount), &n1, &n3); p1 = gbranch(optoas(OLT, tcount), T, +1); if(op == ORSH && issigned[nl->type->etype]) { nodconst(&n3, types[TUINT32], nl->type->width*8-1); gins(a, &n3, &n2); } else { nodconst(&n3, nl->type, 0); gmove(&n3, &n2); } patch(p1, pc); } gins(a, &n1, &n2); if(oldcx.op != 0) { cx.type = types[TUINT64]; gmove(&oldcx, &cx); regfree(&oldcx); } gmove(&n2, res); regfree(&n1); regfree(&n2); ret: ; } /* * generate byte multiply: * res = nl * nr * there is no 2-operand byte multiply instruction so * we do a full-width multiplication and truncate afterwards. */ void cgen_bmul(int op, Node *nl, Node *nr, Node *res) { Node n1, n2, n1b, n2b, *tmp; Type *t; int a; // largest ullman on left. if(nl->ullman < nr->ullman) { tmp = nl; nl = nr; nr = tmp; } // generate operands in "8-bit" registers. regalloc(&n1b, nl->type, res); cgen(nl, &n1b); regalloc(&n2b, nr->type, N); cgen(nr, &n2b); // perform full-width multiplication. t = types[TUINT64]; if(issigned[nl->type->etype]) t = types[TINT64]; nodreg(&n1, t, n1b.val.u.reg); nodreg(&n2, t, n2b.val.u.reg); a = optoas(op, t); gins(a, &n2, &n1); // truncate. gmove(&n1, res); regfree(&n1b); regfree(&n2b); } void clearfat(Node *nl) { int64 w, c, q; Node n1, oldn1, ax, oldax, di, z; Prog *p; /* clear a fat object */ if(debug['g']) dump("\nclearfat", nl); w = nl->type->width; // Avoid taking the address for simple enough types. if(componentgen(N, nl)) return; c = w % 8; // bytes q = w / 8; // quads savex(D_DI, &n1, &oldn1, N, types[tptr]); agen(nl, &n1); savex(D_AX, &ax, &oldax, N, types[tptr]); gconreg(AMOVL, 0, D_AX); if(q > 128 || (q >= 4 && nacl)) { gconreg(movptr, q, D_CX); gins(AREP, N, N); // repeat gins(ASTOSQ, N, N); // STOQ AL,*(DI)+ } else if(q >= 4) { p = gins(ADUFFZERO, N, N); p->to.type = D_ADDR; p->to.sym = linksym(pkglookup("duffzero", runtimepkg)); // 2 and 128 = magic constants: see ../../pkg/runtime/asm_amd64.s p->to.offset = 2*(128-q); } else while(q > 0) { gins(ASTOSQ, N, N); // STOQ AL,*(DI)+ q--; } z = ax; di = n1; if(w >= 8 && c >= 4) { di.op = OINDREG; di.type = z.type = types[TINT64]; p = gins(AMOVQ, &z, &di); p->to.scale = 1; p->to.offset = c-8; } else if(c >= 4) { di.op = OINDREG; di.type = z.type = types[TINT32]; p = gins(AMOVL, &z, &di); if(c > 4) { p = gins(AMOVL, &z, &di); p->to.scale = 1; p->to.offset = c-4; } } else while(c > 0) { gins(ASTOSB, N, N); // STOB AL,*(DI)+ c--; } restx(&n1, &oldn1); restx(&ax, &oldax); } // Called after regopt and peep have run. // Expand CHECKNIL pseudo-op into actual nil pointer check. void expandchecks(Prog *firstp) { Prog *p, *p1, *p2; for(p = firstp; p != P; p = p->link) { if(p->as != ACHECKNIL) continue; if(debug_checknil && p->lineno > 1) // p->lineno==1 in generated wrappers warnl(p->lineno, "generated nil check"); // check is // CMP arg, $0 // JNE 2(PC) (likely) // MOV AX, 0 p1 = mal(sizeof *p1); p2 = mal(sizeof *p2); clearp(p1); clearp(p2); p1->link = p2; p2->link = p->link; p->link = p1; p1->lineno = p->lineno; p2->lineno = p->lineno; p1->pc = 9999; p2->pc = 9999; p->as = cmpptr; p->to.type = D_CONST; p->to.offset = 0; p1->as = AJNE; p1->from.type = D_CONST; p1->from.offset = 1; // likely p1->to.type = D_BRANCH; p1->to.u.branch = p2->link; // crash by write to memory address 0. // if possible, since we know arg is 0, use 0(arg), // which will be shorter to encode than plain 0. p2->as = AMOVL; p2->from.type = D_AX; if(regtyp(&p->from)) p2->to.type = p->from.type + D_INDIR; else p2->to.type = D_INDIR+D_NONE; p2->to.offset = 0; } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6g/gobj.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000012043�12412656734�014427� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Derived from Inferno utils/6c/swt.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/swt.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "gg.h" int dsname(Sym *s, int off, char *t, int n) { Prog *p; p = gins(ADATA, N, N); p->from.type = D_EXTERN; p->from.index = D_NONE; p->from.offset = off; p->from.scale = n; p->from.sym = linksym(s); p->to.type = D_SCONST; p->to.index = D_NONE; memmove(p->to.u.sval, t, n); return off + n; } /* * make a refer to the data s, s+len * emitting DATA if needed. */ void datastring(char *s, int len, Addr *a) { Sym *sym; sym = stringsym(s, len); a->type = D_EXTERN; a->sym = linksym(sym); a->node = sym->def; a->offset = widthptr+widthint; // skip header a->etype = simtype[TINT]; } /* * make a refer to the string sval, * emitting DATA if needed. */ void datagostring(Strlit *sval, Addr *a) { Sym *sym; sym = stringsym(sval->s, sval->len); a->type = D_EXTERN; a->sym = linksym(sym); a->node = sym->def; a->offset = 0; // header a->etype = TINT32; } void gdata(Node *nam, Node *nr, int wid) { Prog *p; if(nr->op == OLITERAL) { switch(nr->val.ctype) { case CTCPLX: gdatacomplex(nam, nr->val.u.cval); return; case CTSTR: gdatastring(nam, nr->val.u.sval); return; } } p = gins(ADATA, nam, nr); p->from.scale = wid; } void gdatacomplex(Node *nam, Mpcplx *cval) { Prog *p; int w; w = cplxsubtype(nam->type->etype); w = types[w]->width; p = gins(ADATA, nam, N); p->from.scale = w; p->to.type = D_FCONST; p->to.u.dval = mpgetflt(&cval->real); p = gins(ADATA, nam, N); p->from.scale = w; p->from.offset += w; p->to.type = D_FCONST; p->to.u.dval = mpgetflt(&cval->imag); } void gdatastring(Node *nam, Strlit *sval) { Prog *p; Node nod1; p = gins(ADATA, nam, N); datastring(sval->s, sval->len, &p->to); p->from.scale = types[tptr]->width; p->to.index = p->to.type; p->to.type = D_ADDR; //print("%P\n", p); nodconst(&nod1, types[TINT], sval->len); p = gins(ADATA, nam, &nod1); p->from.scale = widthint; p->from.offset += widthptr; } int dstringptr(Sym *s, int off, char *str) { Prog *p; off = rnd(off, widthptr); p = gins(ADATA, N, N); p->from.type = D_EXTERN; p->from.index = D_NONE; p->from.sym = linksym(s); p->from.offset = off; p->from.scale = widthptr; datastring(str, strlen(str)+1, &p->to); p->to.index = p->to.type; p->to.type = D_ADDR; p->to.etype = simtype[TINT]; off += widthptr; return off; } int dgostrlitptr(Sym *s, int off, Strlit *lit) { Prog *p; if(lit == nil) return duintptr(s, off, 0); off = rnd(off, widthptr); p = gins(ADATA, N, N); p->from.type = D_EXTERN; p->from.index = D_NONE; p->from.sym = linksym(s); p->from.offset = off; p->from.scale = widthptr; datagostring(lit, &p->to); p->to.index = p->to.type; p->to.type = D_ADDR; p->to.etype = simtype[TINT]; off += widthptr; return off; } int dgostringptr(Sym *s, int off, char *str) { int n; Strlit *lit; if(str == nil) return duintptr(s, off, 0); n = strlen(str); lit = mal(sizeof *lit + n); strcpy(lit->s, str); lit->len = n; return dgostrlitptr(s, off, lit); } int dsymptr(Sym *s, int off, Sym *x, int xoff) { Prog *p; off = rnd(off, widthptr); p = gins(ADATA, N, N); p->from.type = D_EXTERN; p->from.index = D_NONE; p->from.sym = linksym(s); p->from.offset = off; p->from.scale = widthptr; p->to.type = D_ADDR; p->to.index = D_EXTERN; p->to.sym = linksym(x); p->to.offset = xoff; off += widthptr; return off; } void nopout(Prog *p) { p->as = ANOP; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6g/gsubr.c�������������������������������������������������������������������������������0100644�0000000�0000000�00000121335�12412656737�014640� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Derived from Inferno utils/6c/txt.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/txt.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "gg.h" #include "../../pkg/runtime/funcdata.h" // TODO(rsc): Can make this bigger if we move // the text segment up higher in 6l for all GOOS. // At the same time, can raise StackBig in ../../pkg/runtime/stack.h. vlong unmappedzero = 4096; void clearp(Prog *p) { p->as = AEND; p->from.type = D_NONE; p->from.index = D_NONE; p->to.type = D_NONE; p->to.index = D_NONE; p->pc = pcloc; pcloc++; } static int ddumped; static Prog *dfirst; static Prog *dpc; /* * generate and return proc with p->as = as, * linked into program. pc is next instruction. */ Prog* prog(int as) { Prog *p; if(as == ADATA || as == AGLOBL) { if(ddumped) fatal("already dumped data"); if(dpc == nil) { dpc = mal(sizeof(*dpc)); dfirst = dpc; } p = dpc; dpc = mal(sizeof(*dpc)); p->link = dpc; } else { p = pc; pc = mal(sizeof(*pc)); clearp(pc); p->link = pc; } if(lineno == 0) { if(debug['K']) warn("prog: line 0"); } p->as = as; p->lineno = lineno; return p; } void dumpdata(void) { ddumped = 1; if(dfirst == nil) return; newplist(); *pc = *dfirst; pc = dpc; clearp(pc); } /* * generate a branch. * t is ignored. * likely values are for branch prediction: * -1 unlikely * 0 no opinion * +1 likely */ Prog* gbranch(int as, Type *t, int likely) { Prog *p; USED(t); p = prog(as); p->to.type = D_BRANCH; p->to.u.branch = P; if(as != AJMP && likely != 0) { p->from.type = D_CONST; p->from.offset = likely > 0; } return p; } /* * patch previous branch to jump to to. */ void patch(Prog *p, Prog *to) { if(p->to.type != D_BRANCH) fatal("patch: not a branch"); p->to.u.branch = to; p->to.offset = to->pc; } Prog* unpatch(Prog *p) { Prog *q; if(p->to.type != D_BRANCH) fatal("unpatch: not a branch"); q = p->to.u.branch; p->to.u.branch = P; p->to.offset = 0; return q; } /* * start a new Prog list. */ Plist* newplist(void) { Plist *pl; pl = linknewplist(ctxt); pc = mal(sizeof(*pc)); clearp(pc); pl->firstpc = pc; return pl; } void gused(Node *n) { gins(ANOP, n, N); // used } Prog* gjmp(Prog *to) { Prog *p; p = gbranch(AJMP, T, 0); if(to != P) patch(p, to); return p; } void ggloblnod(Node *nam) { Prog *p; p = gins(AGLOBL, nam, N); p->lineno = nam->lineno; p->from.sym->gotype = linksym(ngotype(nam)); p->to.sym = nil; p->to.type = D_CONST; p->to.offset = nam->type->width; if(nam->readonly) p->from.scale = RODATA; if(nam->type != T && !haspointers(nam->type)) p->from.scale |= NOPTR; } void gtrack(Sym *s) { Prog *p; p = gins(AUSEFIELD, N, N); p->from.type = D_EXTERN; p->from.index = D_NONE; p->from.sym = linksym(s); } void gargsize(vlong size) { Node n1, n2; nodconst(&n1, types[TINT32], PCDATA_ArgSize); nodconst(&n2, types[TINT32], size); gins(APCDATA, &n1, &n2); } void ggloblsym(Sym *s, int32 width, int dupok, int rodata) { Prog *p; p = gins(AGLOBL, N, N); p->from.type = D_EXTERN; p->from.index = D_NONE; p->from.sym = linksym(s); p->to.type = D_CONST; p->to.index = D_NONE; p->to.offset = width; if(dupok) p->from.scale |= DUPOK; if(rodata) p->from.scale |= RODATA; } int isfat(Type *t) { if(t != T) switch(t->etype) { case TSTRUCT: case TARRAY: case TSTRING: case TINTER: // maybe remove later return 1; } return 0; } /* * naddr of func generates code for address of func. * if using opcode that can take address implicitly, * call afunclit to fix up the argument. */ void afunclit(Addr *a, Node *n) { if(a->type == D_ADDR && a->index == D_EXTERN) { a->type = D_EXTERN; a->index = D_NONE; a->sym = linksym(n->sym); } } static int resvd[] = { D_DI, // for movstring D_SI, // for movstring D_AX, // for divide D_CX, // for shift D_DX, // for divide D_SP, // for stack }; void ginit(void) { int i; for(i=0; ietype]; switch(et) { case TINT8: case TUINT8: case TINT16: case TUINT16: case TINT32: case TUINT32: case TINT64: case TUINT64: case TPTR32: case TPTR64: case TBOOL: if(o != N && o->op == OREGISTER) { i = o->val.u.reg; if(i >= D_AX && i <= D_R15) goto out; } for(i=D_AX; i<=D_R15; i++) if(reg[i] == 0) { regpc[i-D_AX] = (uintptr)getcallerpc(&n); goto out; } flusherrors(); for(i=0; i+D_AX<=D_R15; i++) print("%d %p\n", i, regpc[i]); fatal("out of fixed registers"); case TFLOAT32: case TFLOAT64: if(o != N && o->op == OREGISTER) { i = o->val.u.reg; if(i >= D_X0 && i <= D_X15) goto out; } for(i=D_X0; i<=D_X15; i++) if(reg[i] == 0) goto out; fatal("out of floating registers"); case TCOMPLEX64: case TCOMPLEX128: tempname(n, t); return; } fatal("regalloc: unknown type %T", t); return; out: reg[i]++; nodreg(n, t, i); } void regfree(Node *n) { int i; if(n->op == ONAME) return; if(n->op != OREGISTER && n->op != OINDREG) fatal("regfree: not a register"); i = n->val.u.reg; if(i == D_SP) return; if(i < 0 || i >= nelem(reg)) fatal("regfree: reg out of range"); if(reg[i] <= 0) fatal("regfree: reg not allocated"); reg[i]--; if(reg[i] == 0 && D_AX <= i && i <= D_R15) regpc[i - D_AX] = 0; } /* * initialize n to be register r of type t. */ void nodreg(Node *n, Type *t, int r) { if(t == T) fatal("nodreg: t nil"); memset(n, 0, sizeof(*n)); n->op = OREGISTER; n->addable = 1; ullmancalc(n); n->val.u.reg = r; n->type = t; } /* * initialize n to be indirect of register r; n is type t. */ void nodindreg(Node *n, Type *t, int r) { nodreg(n, t, r); n->op = OINDREG; } Node* nodarg(Type *t, int fp) { Node *n; NodeList *l; Type *first; Iter savet; // entire argument struct, not just one arg if(t->etype == TSTRUCT && t->funarg) { n = nod(ONAME, N, N); n->sym = lookup(".args"); n->type = t; first = structfirst(&savet, &t); if(first == nil) fatal("nodarg: bad struct"); if(first->width == BADWIDTH) fatal("nodarg: offset not computed for %T", t); n->xoffset = first->width; n->addable = 1; goto fp; } if(t->etype != TFIELD) fatal("nodarg: not field %T", t); if(fp == 1) { for(l=curfn->dcl; l; l=l->next) { n = l->n; if((n->class == PPARAM || n->class == PPARAMOUT) && !isblanksym(t->sym) && n->sym == t->sym) return n; } } n = nod(ONAME, N, N); n->type = t->type; n->sym = t->sym; if(t->width == BADWIDTH) fatal("nodarg: offset not computed for %T", t); n->xoffset = t->width; n->addable = 1; n->orig = t->nname; fp: // Rewrite argument named _ to __, // or else the assignment to _ will be // discarded during code generation. if(isblank(n)) n->sym = lookup("__"); switch(fp) { case 0: // output arg n->op = OINDREG; n->val.u.reg = D_SP; break; case 1: // input arg n->class = PPARAM; break; case 2: // offset output arg fatal("shouldn't be used"); n->op = OINDREG; n->val.u.reg = D_SP; n->xoffset += types[tptr]->width; break; } n->typecheck = 1; return n; } /* * generate * as $c, reg */ void gconreg(int as, vlong c, int reg) { Node nr; switch(as) { case AADDL: case AMOVL: case ALEAL: nodreg(&nr, types[TINT32], reg); break; default: nodreg(&nr, types[TINT64], reg); } ginscon(as, c, &nr); } /* * generate * as $c, n */ void ginscon(int as, vlong c, Node *n2) { Node n1, ntmp; switch(as) { case AADDL: case AMOVL: case ALEAL: nodconst(&n1, types[TINT32], c); break; default: nodconst(&n1, types[TINT64], c); } if(as != AMOVQ && (c < -(1LL<<31) || c >= 1LL<<31)) { // cannot have 64-bit immediate in ADD, etc. // instead, MOV into register first. regalloc(&ntmp, types[TINT64], N); gins(AMOVQ, &n1, &ntmp); gins(as, &ntmp, n2); regfree(&ntmp); return; } gins(as, &n1, n2); } #define CASE(a,b) (((a)<<16)|((b)<<0)) /* * Is this node a memory operand? */ int ismem(Node *n) { switch(n->op) { case OITAB: case OSPTR: case OLEN: case OCAP: case OINDREG: case ONAME: case OPARAM: case OCLOSUREVAR: return 1; case OADDR: if(flag_largemodel) return 1; break; } return 0; } /* * set up nodes representing 2^63 */ Node bigi; Node bigf; void bignodes(void) { static int did; if(did) return; did = 1; nodconst(&bigi, types[TUINT64], 1); mpshiftfix(bigi.val.u.xval, 63); bigf = bigi; bigf.type = types[TFLOAT64]; bigf.val.ctype = CTFLT; bigf.val.u.fval = mal(sizeof *bigf.val.u.fval); mpmovefixflt(bigf.val.u.fval, bigi.val.u.xval); } /* * generate move: * t = f * hard part is conversions. */ // TODO: lost special constants for floating point. XORPD for 0.0? void gmove(Node *f, Node *t) { int a, ft, tt; Type *cvt; Node r1, r2, r3, r4, zero, one, con; Prog *p1, *p2; if(debug['M']) print("gmove %lN -> %lN\n", f, t); ft = simsimtype(f->type); tt = simsimtype(t->type); cvt = t->type; if(iscomplex[ft] || iscomplex[tt]) { complexmove(f, t); return; } // cannot have two memory operands if(ismem(f) && ismem(t)) goto hard; // convert constant to desired type if(f->op == OLITERAL) { convconst(&con, t->type, &f->val); f = &con; ft = tt; // so big switch will choose a simple mov // some constants can't move directly to memory. if(ismem(t)) { // float constants come from memory. if(isfloat[tt]) goto hard; // 64-bit immediates are really 32-bit sign-extended // unless moving into a register. if(isint[tt]) { if(mpcmpfixfix(con.val.u.xval, minintval[TINT32]) < 0) goto hard; if(mpcmpfixfix(con.val.u.xval, maxintval[TINT32]) > 0) goto hard; } } } // value -> value copy, only one memory operand. // figure out the instruction to use. // break out of switch for one-instruction gins. // goto rdst for "destination must be register". // goto hard for "convert to cvt type first". // otherwise handle and return. switch(CASE(ft, tt)) { default: fatal("gmove %lT -> %lT", f->type, t->type); /* * integer copy and truncate */ case CASE(TINT8, TINT8): // same size case CASE(TINT8, TUINT8): case CASE(TUINT8, TINT8): case CASE(TUINT8, TUINT8): case CASE(TINT16, TINT8): // truncate case CASE(TUINT16, TINT8): case CASE(TINT32, TINT8): case CASE(TUINT32, TINT8): case CASE(TINT64, TINT8): case CASE(TUINT64, TINT8): case CASE(TINT16, TUINT8): case CASE(TUINT16, TUINT8): case CASE(TINT32, TUINT8): case CASE(TUINT32, TUINT8): case CASE(TINT64, TUINT8): case CASE(TUINT64, TUINT8): a = AMOVB; break; case CASE(TINT16, TINT16): // same size case CASE(TINT16, TUINT16): case CASE(TUINT16, TINT16): case CASE(TUINT16, TUINT16): case CASE(TINT32, TINT16): // truncate case CASE(TUINT32, TINT16): case CASE(TINT64, TINT16): case CASE(TUINT64, TINT16): case CASE(TINT32, TUINT16): case CASE(TUINT32, TUINT16): case CASE(TINT64, TUINT16): case CASE(TUINT64, TUINT16): a = AMOVW; break; case CASE(TINT32, TINT32): // same size case CASE(TINT32, TUINT32): case CASE(TUINT32, TINT32): case CASE(TUINT32, TUINT32): a = AMOVL; break; case CASE(TINT64, TINT32): // truncate case CASE(TUINT64, TINT32): case CASE(TINT64, TUINT32): case CASE(TUINT64, TUINT32): a = AMOVQL; break; case CASE(TINT64, TINT64): // same size case CASE(TINT64, TUINT64): case CASE(TUINT64, TINT64): case CASE(TUINT64, TUINT64): a = AMOVQ; break; /* * integer up-conversions */ case CASE(TINT8, TINT16): // sign extend int8 case CASE(TINT8, TUINT16): a = AMOVBWSX; goto rdst; case CASE(TINT8, TINT32): case CASE(TINT8, TUINT32): a = AMOVBLSX; goto rdst; case CASE(TINT8, TINT64): case CASE(TINT8, TUINT64): a = AMOVBQSX; goto rdst; case CASE(TUINT8, TINT16): // zero extend uint8 case CASE(TUINT8, TUINT16): a = AMOVBWZX; goto rdst; case CASE(TUINT8, TINT32): case CASE(TUINT8, TUINT32): a = AMOVBLZX; goto rdst; case CASE(TUINT8, TINT64): case CASE(TUINT8, TUINT64): a = AMOVBQZX; goto rdst; case CASE(TINT16, TINT32): // sign extend int16 case CASE(TINT16, TUINT32): a = AMOVWLSX; goto rdst; case CASE(TINT16, TINT64): case CASE(TINT16, TUINT64): a = AMOVWQSX; goto rdst; case CASE(TUINT16, TINT32): // zero extend uint16 case CASE(TUINT16, TUINT32): a = AMOVWLZX; goto rdst; case CASE(TUINT16, TINT64): case CASE(TUINT16, TUINT64): a = AMOVWQZX; goto rdst; case CASE(TINT32, TINT64): // sign extend int32 case CASE(TINT32, TUINT64): a = AMOVLQSX; goto rdst; case CASE(TUINT32, TINT64): // zero extend uint32 case CASE(TUINT32, TUINT64): // AMOVL into a register zeros the top of the register, // so this is not always necessary, but if we rely on AMOVL // the optimizer is almost certain to screw with us. a = AMOVLQZX; goto rdst; /* * float to integer */ case CASE(TFLOAT32, TINT32): a = ACVTTSS2SL; goto rdst; case CASE(TFLOAT64, TINT32): a = ACVTTSD2SL; goto rdst; case CASE(TFLOAT32, TINT64): a = ACVTTSS2SQ; goto rdst; case CASE(TFLOAT64, TINT64): a = ACVTTSD2SQ; goto rdst; case CASE(TFLOAT32, TINT16): case CASE(TFLOAT32, TINT8): case CASE(TFLOAT32, TUINT16): case CASE(TFLOAT32, TUINT8): case CASE(TFLOAT64, TINT16): case CASE(TFLOAT64, TINT8): case CASE(TFLOAT64, TUINT16): case CASE(TFLOAT64, TUINT8): // convert via int32. cvt = types[TINT32]; goto hard; case CASE(TFLOAT32, TUINT32): case CASE(TFLOAT64, TUINT32): // convert via int64. cvt = types[TINT64]; goto hard; case CASE(TFLOAT32, TUINT64): case CASE(TFLOAT64, TUINT64): // algorithm is: // if small enough, use native float64 -> int64 conversion. // otherwise, subtract 2^63, convert, and add it back. a = ACVTTSS2SQ; if(ft == TFLOAT64) a = ACVTTSD2SQ; bignodes(); regalloc(&r1, types[ft], N); regalloc(&r2, types[tt], t); regalloc(&r3, types[ft], N); regalloc(&r4, types[tt], N); gins(optoas(OAS, f->type), f, &r1); gins(optoas(OCMP, f->type), &bigf, &r1); p1 = gbranch(optoas(OLE, f->type), T, +1); gins(a, &r1, &r2); p2 = gbranch(AJMP, T, 0); patch(p1, pc); gins(optoas(OAS, f->type), &bigf, &r3); gins(optoas(OSUB, f->type), &r3, &r1); gins(a, &r1, &r2); gins(AMOVQ, &bigi, &r4); gins(AXORQ, &r4, &r2); patch(p2, pc); gmove(&r2, t); regfree(&r4); regfree(&r3); regfree(&r2); regfree(&r1); return; /* * integer to float */ case CASE(TINT32, TFLOAT32): a = ACVTSL2SS; goto rdst; case CASE(TINT32, TFLOAT64): a = ACVTSL2SD; goto rdst; case CASE(TINT64, TFLOAT32): a = ACVTSQ2SS; goto rdst; case CASE(TINT64, TFLOAT64): a = ACVTSQ2SD; goto rdst; case CASE(TINT16, TFLOAT32): case CASE(TINT16, TFLOAT64): case CASE(TINT8, TFLOAT32): case CASE(TINT8, TFLOAT64): case CASE(TUINT16, TFLOAT32): case CASE(TUINT16, TFLOAT64): case CASE(TUINT8, TFLOAT32): case CASE(TUINT8, TFLOAT64): // convert via int32 cvt = types[TINT32]; goto hard; case CASE(TUINT32, TFLOAT32): case CASE(TUINT32, TFLOAT64): // convert via int64. cvt = types[TINT64]; goto hard; case CASE(TUINT64, TFLOAT32): case CASE(TUINT64, TFLOAT64): // algorithm is: // if small enough, use native int64 -> uint64 conversion. // otherwise, halve (rounding to odd?), convert, and double. a = ACVTSQ2SS; if(tt == TFLOAT64) a = ACVTSQ2SD; nodconst(&zero, types[TUINT64], 0); nodconst(&one, types[TUINT64], 1); regalloc(&r1, f->type, f); regalloc(&r2, t->type, t); regalloc(&r3, f->type, N); regalloc(&r4, f->type, N); gmove(f, &r1); gins(ACMPQ, &r1, &zero); p1 = gbranch(AJLT, T, +1); gins(a, &r1, &r2); p2 = gbranch(AJMP, T, 0); patch(p1, pc); gmove(&r1, &r3); gins(ASHRQ, &one, &r3); gmove(&r1, &r4); gins(AANDL, &one, &r4); gins(AORQ, &r4, &r3); gins(a, &r3, &r2); gins(optoas(OADD, t->type), &r2, &r2); patch(p2, pc); gmove(&r2, t); regfree(&r4); regfree(&r3); regfree(&r2); regfree(&r1); return; /* * float to float */ case CASE(TFLOAT32, TFLOAT32): a = AMOVSS; break; case CASE(TFLOAT64, TFLOAT64): a = AMOVSD; break; case CASE(TFLOAT32, TFLOAT64): a = ACVTSS2SD; goto rdst; case CASE(TFLOAT64, TFLOAT32): a = ACVTSD2SS; goto rdst; } gins(a, f, t); return; rdst: // requires register destination regalloc(&r1, t->type, t); gins(a, f, &r1); gmove(&r1, t); regfree(&r1); return; hard: // requires register intermediate regalloc(&r1, cvt, t); gmove(f, &r1); gmove(&r1, t); regfree(&r1); return; } int samaddr(Node *f, Node *t) { if(f->op != t->op) return 0; switch(f->op) { case OREGISTER: if(f->val.u.reg != t->val.u.reg) break; return 1; } return 0; } /* * generate one instruction: * as f, t */ Prog* gins(int as, Node *f, Node *t) { // Node nod; int32 w; Prog *p; Addr af, at; // if(f != N && f->op == OINDEX) { // regalloc(&nod, ®node, Z); // v = constnode.vconst; // cgen(f->right, &nod); // constnode.vconst = v; // idx.reg = nod.reg; // regfree(&nod); // } // if(t != N && t->op == OINDEX) { // regalloc(&nod, ®node, Z); // v = constnode.vconst; // cgen(t->right, &nod); // constnode.vconst = v; // idx.reg = nod.reg; // regfree(&nod); // } switch(as) { case AMOVB: case AMOVW: case AMOVL: case AMOVQ: case AMOVSS: case AMOVSD: if(f != N && t != N && samaddr(f, t)) return nil; break; case ALEAQ: if(f != N && isconst(f, CTNIL)) { fatal("gins LEAQ nil %T", f->type); } break; } memset(&af, 0, sizeof af); memset(&at, 0, sizeof at); if(f != N) naddr(f, &af, 1); if(t != N) naddr(t, &at, 1); p = prog(as); if(f != N) p->from = af; if(t != N) p->to = at; if(debug['g']) print("%P\n", p); w = 0; switch(as) { case AMOVB: w = 1; break; case AMOVW: w = 2; break; case AMOVL: w = 4; break; case AMOVQ: w = 8; break; } if(w != 0 && ((f != N && af.width < w) || (t != N && at.width > w))) { dump("f", f); dump("t", t); fatal("bad width: %P (%d, %d)\n", p, af.width, at.width); } return p; } void fixlargeoffset(Node *n) { Node a; if(n == N) return; if(n->op != OINDREG) return; if(n->val.u.reg == D_SP) // stack offset cannot be large return; if(n->xoffset != (int32)n->xoffset) { // offset too large, add to register instead. a = *n; a.op = OREGISTER; a.type = types[tptr]; a.xoffset = 0; cgen_checknil(&a); ginscon(optoas(OADD, types[tptr]), n->xoffset, &a); n->xoffset = 0; } } /* * generate code to compute n; * make a refer to result. */ void naddr(Node *n, Addr *a, int canemitcode) { Sym *s; a->scale = 0; a->index = D_NONE; a->type = D_NONE; a->gotype = nil; a->node = N; a->width = 0; if(n == N) return; if(n->type != T && n->type->etype != TIDEAL) { dowidth(n->type); a->width = n->type->width; } switch(n->op) { default: fatal("naddr: bad %O %D", n->op, a); break; case OREGISTER: a->type = n->val.u.reg; a->sym = nil; break; // case OINDEX: // case OIND: // naddr(n->left, a); // if(a->type >= D_AX && a->type <= D_DI) // a->type += D_INDIR; // else // if(a->type == D_CONST) // a->type = D_NONE+D_INDIR; // else // if(a->type == D_ADDR) { // a->type = a->index; // a->index = D_NONE; // } else // goto bad; // if(n->op == OINDEX) { // a->index = idx.reg; // a->scale = n->scale; // } // break; case OINDREG: a->type = n->val.u.reg+D_INDIR; a->sym = linksym(n->sym); a->offset = n->xoffset; if(a->offset != (int32)a->offset) yyerror("offset %lld too large for OINDREG", a->offset); break; case OPARAM: // n->left is PHEAP ONAME for stack parameter. // compute address of actual parameter on stack. a->etype = simtype[n->left->type->etype]; a->width = n->left->type->width; a->offset = n->xoffset; a->sym = linksym(n->left->sym); a->type = D_PARAM; a->node = n->left->orig; break; case OCLOSUREVAR: if(!curfn->needctxt) fatal("closurevar without needctxt"); a->type = D_DX+D_INDIR; a->sym = nil; a->offset = n->xoffset; break; case OCFUNC: naddr(n->left, a, canemitcode); a->sym = linksym(n->left->sym); break; case ONAME: a->etype = 0; if(n->type != T) a->etype = simtype[n->type->etype]; a->offset = n->xoffset; s = n->sym; a->node = n->orig; //if(a->node >= (Node*)&n) // fatal("stack node"); if(s == S) s = lookup(".noname"); if(n->method) { if(n->type != T) if(n->type->sym != S) if(n->type->sym->pkg != nil) s = pkglookup(s->name, n->type->sym->pkg); } switch(n->class) { default: fatal("naddr: ONAME class %S %d\n", n->sym, n->class); case PEXTERN: a->type = D_EXTERN; break; case PAUTO: a->type = D_AUTO; break; case PPARAM: case PPARAMOUT: a->type = D_PARAM; break; case PFUNC: a->index = D_EXTERN; a->type = D_ADDR; a->width = widthptr; s = funcsym(s); break; } a->sym = linksym(s); break; case OLITERAL: switch(n->val.ctype) { default: fatal("naddr: const %lT", n->type); break; case CTFLT: a->type = D_FCONST; a->u.dval = mpgetflt(n->val.u.fval); break; case CTINT: case CTRUNE: a->sym = nil; a->type = D_CONST; a->offset = mpgetfix(n->val.u.xval); break; case CTSTR: datagostring(n->val.u.sval, a); break; case CTBOOL: a->sym = nil; a->type = D_CONST; a->offset = n->val.u.bval; break; case CTNIL: a->sym = nil; a->type = D_CONST; a->offset = 0; break; } break; case OADDR: naddr(n->left, a, canemitcode); a->width = widthptr; if(a->type >= D_INDIR) { a->type -= D_INDIR; break; } if(a->type == D_EXTERN || a->type == D_STATIC || a->type == D_AUTO || a->type == D_PARAM) if(a->index == D_NONE) { a->index = a->type; a->type = D_ADDR; break; } fatal("naddr: OADDR\n"); case OITAB: // itable of interface value naddr(n->left, a, canemitcode); if(a->type == D_CONST && a->offset == 0) break; // itab(nil) a->etype = tptr; a->width = widthptr; break; case OSPTR: // pointer in a string or slice naddr(n->left, a, canemitcode); if(a->type == D_CONST && a->offset == 0) break; // ptr(nil) a->etype = simtype[tptr]; a->offset += Array_array; a->width = widthptr; break; case OLEN: // len of string or slice naddr(n->left, a, canemitcode); if(a->type == D_CONST && a->offset == 0) break; // len(nil) a->etype = simtype[TUINT]; a->offset += Array_nel; a->width = widthint; break; case OCAP: // cap of string or slice naddr(n->left, a, canemitcode); if(a->type == D_CONST && a->offset == 0) break; // cap(nil) a->etype = simtype[TUINT]; a->offset += Array_cap; a->width = widthint; break; // case OADD: // if(n->right->op == OLITERAL) { // v = n->right->vconst; // naddr(n->left, a, canemitcode); // } else // if(n->left->op == OLITERAL) { // v = n->left->vconst; // naddr(n->right, a, canemitcode); // } else // goto bad; // a->offset += v; // break; } } /* * return Axxx for Oxxx on type t. */ int optoas(int op, Type *t) { int a; if(t == T) fatal("optoas: t is nil"); a = AGOK; switch(CASE(op, simtype[t->etype])) { default: fatal("optoas: no entry %O-%T", op, t); break; case CASE(OADDR, TPTR32): a = ALEAL; break; case CASE(OADDR, TPTR64): a = ALEAQ; break; case CASE(OEQ, TBOOL): case CASE(OEQ, TINT8): case CASE(OEQ, TUINT8): case CASE(OEQ, TINT16): case CASE(OEQ, TUINT16): case CASE(OEQ, TINT32): case CASE(OEQ, TUINT32): case CASE(OEQ, TINT64): case CASE(OEQ, TUINT64): case CASE(OEQ, TPTR32): case CASE(OEQ, TPTR64): case CASE(OEQ, TFLOAT32): case CASE(OEQ, TFLOAT64): a = AJEQ; break; case CASE(ONE, TBOOL): case CASE(ONE, TINT8): case CASE(ONE, TUINT8): case CASE(ONE, TINT16): case CASE(ONE, TUINT16): case CASE(ONE, TINT32): case CASE(ONE, TUINT32): case CASE(ONE, TINT64): case CASE(ONE, TUINT64): case CASE(ONE, TPTR32): case CASE(ONE, TPTR64): case CASE(ONE, TFLOAT32): case CASE(ONE, TFLOAT64): a = AJNE; break; case CASE(OLT, TINT8): case CASE(OLT, TINT16): case CASE(OLT, TINT32): case CASE(OLT, TINT64): a = AJLT; break; case CASE(OLT, TUINT8): case CASE(OLT, TUINT16): case CASE(OLT, TUINT32): case CASE(OLT, TUINT64): a = AJCS; break; case CASE(OLE, TINT8): case CASE(OLE, TINT16): case CASE(OLE, TINT32): case CASE(OLE, TINT64): a = AJLE; break; case CASE(OLE, TUINT8): case CASE(OLE, TUINT16): case CASE(OLE, TUINT32): case CASE(OLE, TUINT64): a = AJLS; break; case CASE(OGT, TINT8): case CASE(OGT, TINT16): case CASE(OGT, TINT32): case CASE(OGT, TINT64): a = AJGT; break; case CASE(OGT, TUINT8): case CASE(OGT, TUINT16): case CASE(OGT, TUINT32): case CASE(OGT, TUINT64): case CASE(OLT, TFLOAT32): case CASE(OLT, TFLOAT64): a = AJHI; break; case CASE(OGE, TINT8): case CASE(OGE, TINT16): case CASE(OGE, TINT32): case CASE(OGE, TINT64): a = AJGE; break; case CASE(OGE, TUINT8): case CASE(OGE, TUINT16): case CASE(OGE, TUINT32): case CASE(OGE, TUINT64): case CASE(OLE, TFLOAT32): case CASE(OLE, TFLOAT64): a = AJCC; break; case CASE(OCMP, TBOOL): case CASE(OCMP, TINT8): case CASE(OCMP, TUINT8): a = ACMPB; break; case CASE(OCMP, TINT16): case CASE(OCMP, TUINT16): a = ACMPW; break; case CASE(OCMP, TINT32): case CASE(OCMP, TUINT32): case CASE(OCMP, TPTR32): a = ACMPL; break; case CASE(OCMP, TINT64): case CASE(OCMP, TUINT64): case CASE(OCMP, TPTR64): a = ACMPQ; break; case CASE(OCMP, TFLOAT32): a = AUCOMISS; break; case CASE(OCMP, TFLOAT64): a = AUCOMISD; break; case CASE(OAS, TBOOL): case CASE(OAS, TINT8): case CASE(OAS, TUINT8): a = AMOVB; break; case CASE(OAS, TINT16): case CASE(OAS, TUINT16): a = AMOVW; break; case CASE(OAS, TINT32): case CASE(OAS, TUINT32): case CASE(OAS, TPTR32): a = AMOVL; break; case CASE(OAS, TINT64): case CASE(OAS, TUINT64): case CASE(OAS, TPTR64): a = AMOVQ; break; case CASE(OAS, TFLOAT32): a = AMOVSS; break; case CASE(OAS, TFLOAT64): a = AMOVSD; break; case CASE(OADD, TINT8): case CASE(OADD, TUINT8): a = AADDB; break; case CASE(OADD, TINT16): case CASE(OADD, TUINT16): a = AADDW; break; case CASE(OADD, TINT32): case CASE(OADD, TUINT32): case CASE(OADD, TPTR32): case CASE(OADDPTR, TPTR32): a = AADDL; break; case CASE(OADD, TINT64): case CASE(OADD, TUINT64): case CASE(OADD, TPTR64): case CASE(OADDPTR, TPTR64): a = AADDQ; break; case CASE(OADD, TFLOAT32): a = AADDSS; break; case CASE(OADD, TFLOAT64): a = AADDSD; break; case CASE(OSUB, TINT8): case CASE(OSUB, TUINT8): a = ASUBB; break; case CASE(OSUB, TINT16): case CASE(OSUB, TUINT16): a = ASUBW; break; case CASE(OSUB, TINT32): case CASE(OSUB, TUINT32): case CASE(OSUB, TPTR32): a = ASUBL; break; case CASE(OSUB, TINT64): case CASE(OSUB, TUINT64): case CASE(OSUB, TPTR64): a = ASUBQ; break; case CASE(OSUB, TFLOAT32): a = ASUBSS; break; case CASE(OSUB, TFLOAT64): a = ASUBSD; break; case CASE(OINC, TINT8): case CASE(OINC, TUINT8): a = AINCB; break; case CASE(OINC, TINT16): case CASE(OINC, TUINT16): a = AINCW; break; case CASE(OINC, TINT32): case CASE(OINC, TUINT32): case CASE(OINC, TPTR32): a = AINCL; break; case CASE(OINC, TINT64): case CASE(OINC, TUINT64): case CASE(OINC, TPTR64): a = AINCQ; break; case CASE(ODEC, TINT8): case CASE(ODEC, TUINT8): a = ADECB; break; case CASE(ODEC, TINT16): case CASE(ODEC, TUINT16): a = ADECW; break; case CASE(ODEC, TINT32): case CASE(ODEC, TUINT32): case CASE(ODEC, TPTR32): a = ADECL; break; case CASE(ODEC, TINT64): case CASE(ODEC, TUINT64): case CASE(ODEC, TPTR64): a = ADECQ; break; case CASE(OMINUS, TINT8): case CASE(OMINUS, TUINT8): a = ANEGB; break; case CASE(OMINUS, TINT16): case CASE(OMINUS, TUINT16): a = ANEGW; break; case CASE(OMINUS, TINT32): case CASE(OMINUS, TUINT32): case CASE(OMINUS, TPTR32): a = ANEGL; break; case CASE(OMINUS, TINT64): case CASE(OMINUS, TUINT64): case CASE(OMINUS, TPTR64): a = ANEGQ; break; case CASE(OAND, TINT8): case CASE(OAND, TUINT8): a = AANDB; break; case CASE(OAND, TINT16): case CASE(OAND, TUINT16): a = AANDW; break; case CASE(OAND, TINT32): case CASE(OAND, TUINT32): case CASE(OAND, TPTR32): a = AANDL; break; case CASE(OAND, TINT64): case CASE(OAND, TUINT64): case CASE(OAND, TPTR64): a = AANDQ; break; case CASE(OOR, TINT8): case CASE(OOR, TUINT8): a = AORB; break; case CASE(OOR, TINT16): case CASE(OOR, TUINT16): a = AORW; break; case CASE(OOR, TINT32): case CASE(OOR, TUINT32): case CASE(OOR, TPTR32): a = AORL; break; case CASE(OOR, TINT64): case CASE(OOR, TUINT64): case CASE(OOR, TPTR64): a = AORQ; break; case CASE(OXOR, TINT8): case CASE(OXOR, TUINT8): a = AXORB; break; case CASE(OXOR, TINT16): case CASE(OXOR, TUINT16): a = AXORW; break; case CASE(OXOR, TINT32): case CASE(OXOR, TUINT32): case CASE(OXOR, TPTR32): a = AXORL; break; case CASE(OXOR, TINT64): case CASE(OXOR, TUINT64): case CASE(OXOR, TPTR64): a = AXORQ; break; case CASE(OLROT, TINT8): case CASE(OLROT, TUINT8): a = AROLB; break; case CASE(OLROT, TINT16): case CASE(OLROT, TUINT16): a = AROLW; break; case CASE(OLROT, TINT32): case CASE(OLROT, TUINT32): case CASE(OLROT, TPTR32): a = AROLL; break; case CASE(OLROT, TINT64): case CASE(OLROT, TUINT64): case CASE(OLROT, TPTR64): a = AROLQ; break; case CASE(OLSH, TINT8): case CASE(OLSH, TUINT8): a = ASHLB; break; case CASE(OLSH, TINT16): case CASE(OLSH, TUINT16): a = ASHLW; break; case CASE(OLSH, TINT32): case CASE(OLSH, TUINT32): case CASE(OLSH, TPTR32): a = ASHLL; break; case CASE(OLSH, TINT64): case CASE(OLSH, TUINT64): case CASE(OLSH, TPTR64): a = ASHLQ; break; case CASE(ORSH, TUINT8): a = ASHRB; break; case CASE(ORSH, TUINT16): a = ASHRW; break; case CASE(ORSH, TUINT32): case CASE(ORSH, TPTR32): a = ASHRL; break; case CASE(ORSH, TUINT64): case CASE(ORSH, TPTR64): a = ASHRQ; break; case CASE(ORSH, TINT8): a = ASARB; break; case CASE(ORSH, TINT16): a = ASARW; break; case CASE(ORSH, TINT32): a = ASARL; break; case CASE(ORSH, TINT64): a = ASARQ; break; case CASE(ORROTC, TINT8): case CASE(ORROTC, TUINT8): a = ARCRB; break; case CASE(ORROTC, TINT16): case CASE(ORROTC, TUINT16): a = ARCRW; break; case CASE(ORROTC, TINT32): case CASE(ORROTC, TUINT32): a = ARCRL; break; case CASE(ORROTC, TINT64): case CASE(ORROTC, TUINT64): a = ARCRQ; break; case CASE(OHMUL, TINT8): case CASE(OMUL, TINT8): case CASE(OMUL, TUINT8): a = AIMULB; break; case CASE(OHMUL, TINT16): case CASE(OMUL, TINT16): case CASE(OMUL, TUINT16): a = AIMULW; break; case CASE(OHMUL, TINT32): case CASE(OMUL, TINT32): case CASE(OMUL, TUINT32): case CASE(OMUL, TPTR32): a = AIMULL; break; case CASE(OHMUL, TINT64): case CASE(OMUL, TINT64): case CASE(OMUL, TUINT64): case CASE(OMUL, TPTR64): a = AIMULQ; break; case CASE(OHMUL, TUINT8): a = AMULB; break; case CASE(OHMUL, TUINT16): a = AMULW; break; case CASE(OHMUL, TUINT32): case CASE(OHMUL, TPTR32): a = AMULL; break; case CASE(OHMUL, TUINT64): case CASE(OHMUL, TPTR64): a = AMULQ; break; case CASE(OMUL, TFLOAT32): a = AMULSS; break; case CASE(OMUL, TFLOAT64): a = AMULSD; break; case CASE(ODIV, TINT8): case CASE(OMOD, TINT8): a = AIDIVB; break; case CASE(ODIV, TUINT8): case CASE(OMOD, TUINT8): a = ADIVB; break; case CASE(ODIV, TINT16): case CASE(OMOD, TINT16): a = AIDIVW; break; case CASE(ODIV, TUINT16): case CASE(OMOD, TUINT16): a = ADIVW; break; case CASE(ODIV, TINT32): case CASE(OMOD, TINT32): a = AIDIVL; break; case CASE(ODIV, TUINT32): case CASE(ODIV, TPTR32): case CASE(OMOD, TUINT32): case CASE(OMOD, TPTR32): a = ADIVL; break; case CASE(ODIV, TINT64): case CASE(OMOD, TINT64): a = AIDIVQ; break; case CASE(ODIV, TUINT64): case CASE(ODIV, TPTR64): case CASE(OMOD, TUINT64): case CASE(OMOD, TPTR64): a = ADIVQ; break; case CASE(OEXTEND, TINT16): a = ACWD; break; case CASE(OEXTEND, TINT32): a = ACDQ; break; case CASE(OEXTEND, TINT64): a = ACQO; break; case CASE(ODIV, TFLOAT32): a = ADIVSS; break; case CASE(ODIV, TFLOAT64): a = ADIVSD; break; } return a; } enum { ODynam = 1<<0, OAddable = 1<<1, }; static Node clean[20]; static int cleani = 0; int xgen(Node *n, Node *a, int o) { regalloc(a, types[tptr], N); if(o & ODynam) if(n->addable) if(n->op != OINDREG) if(n->op != OREGISTER) return 1; agen(n, a); return 0; } void sudoclean(void) { if(clean[cleani-1].op != OEMPTY) regfree(&clean[cleani-1]); if(clean[cleani-2].op != OEMPTY) regfree(&clean[cleani-2]); cleani -= 2; } /* * generate code to compute address of n, * a reference to a (perhaps nested) field inside * an array or struct. * return 0 on failure, 1 on success. * on success, leaves usable address in a. * * caller is responsible for calling sudoclean * after successful sudoaddable, * to release the register used for a. */ int sudoaddable(int as, Node *n, Addr *a) { int o, i; int64 oary[10]; int64 v, w; Node n1, n2, n3, n4, *nn, *l, *r; Node *reg, *reg1; Prog *p1; Type *t; if(n->type == T) return 0; switch(n->op) { case OLITERAL: if(!isconst(n, CTINT)) break; v = mpgetfix(n->val.u.xval); if(v >= 32000 || v <= -32000) break; goto lit; case ODOT: case ODOTPTR: cleani += 2; reg = &clean[cleani-1]; reg1 = &clean[cleani-2]; reg->op = OEMPTY; reg1->op = OEMPTY; goto odot; case OINDEX: return 0; // disabled: OINDEX case is now covered by agenr // for a more suitable register allocation pattern. if(n->left->type->etype == TSTRING) return 0; goto oindex; } return 0; lit: switch(as) { default: return 0; case AADDB: case AADDW: case AADDL: case AADDQ: case ASUBB: case ASUBW: case ASUBL: case ASUBQ: case AANDB: case AANDW: case AANDL: case AANDQ: case AORB: case AORW: case AORL: case AORQ: case AXORB: case AXORW: case AXORL: case AXORQ: case AINCB: case AINCW: case AINCL: case AINCQ: case ADECB: case ADECW: case ADECL: case ADECQ: case AMOVB: case AMOVW: case AMOVL: case AMOVQ: break; } cleani += 2; reg = &clean[cleani-1]; reg1 = &clean[cleani-2]; reg->op = OEMPTY; reg1->op = OEMPTY; naddr(n, a, 1); goto yes; odot: o = dotoffset(n, oary, &nn); if(nn == N) goto no; if(nn->addable && o == 1 && oary[0] >= 0) { // directly addressable set of DOTs n1 = *nn; n1.type = n->type; n1.xoffset += oary[0]; naddr(&n1, a, 1); goto yes; } regalloc(reg, types[tptr], N); n1 = *reg; n1.op = OINDREG; if(oary[0] >= 0) { agen(nn, reg); n1.xoffset = oary[0]; } else { cgen(nn, reg); cgen_checknil(reg); n1.xoffset = -(oary[0]+1); } for(i=1; i= 0) fatal("can't happen"); gins(movptr, &n1, reg); cgen_checknil(reg); n1.xoffset = -(oary[i]+1); } a->type = D_NONE; a->index = D_NONE; fixlargeoffset(&n1); naddr(&n1, a, 1); goto yes; oindex: l = n->left; r = n->right; if(l->ullman >= UINF && r->ullman >= UINF) return 0; // set o to type of array o = 0; if(isptr[l->type->etype]) fatal("ptr ary"); if(l->type->etype != TARRAY) fatal("not ary"); if(l->type->bound < 0) o |= ODynam; w = n->type->width; if(isconst(r, CTINT)) goto oindex_const; switch(w) { default: return 0; case 1: case 2: case 4: case 8: break; } cleani += 2; reg = &clean[cleani-1]; reg1 = &clean[cleani-2]; reg->op = OEMPTY; reg1->op = OEMPTY; // load the array (reg) if(l->ullman > r->ullman) { if(xgen(l, reg, o)) o |= OAddable; } // load the index (reg1) t = types[TUINT64]; if(issigned[r->type->etype]) t = types[TINT64]; regalloc(reg1, t, N); regalloc(&n3, r->type, reg1); cgen(r, &n3); gmove(&n3, reg1); regfree(&n3); // load the array (reg) if(l->ullman <= r->ullman) { if(xgen(l, reg, o)) o |= OAddable; } // check bounds if(!debug['B'] && !n->bounded) { // check bounds n4.op = OXXX; t = types[simtype[TUINT]]; if(o & ODynam) { if(o & OAddable) { n2 = *l; n2.xoffset += Array_nel; n2.type = types[simtype[TUINT]]; } else { n2 = *reg; n2.xoffset = Array_nel; n2.op = OINDREG; n2.type = types[simtype[TUINT]]; } } else { if(is64(r->type)) t = types[TUINT64]; nodconst(&n2, types[TUINT64], l->type->bound); } gins(optoas(OCMP, t), reg1, &n2); p1 = gbranch(optoas(OLT, t), T, +1); if(n4.op != OXXX) regfree(&n4); ginscall(panicindex, -1); patch(p1, pc); } if(o & ODynam) { if(o & OAddable) { n2 = *l; n2.xoffset += Array_array; n2.type = types[tptr]; gmove(&n2, reg); } else { n2 = *reg; n2.op = OINDREG; n2.xoffset = Array_array; n2.type = types[tptr]; gmove(&n2, reg); } } if(o & OAddable) { naddr(reg1, a, 1); a->offset = 0; a->scale = w; a->index = a->type; a->type = reg->val.u.reg + D_INDIR; } else { naddr(reg1, a, 1); a->offset = 0; a->scale = w; a->index = a->type; a->type = reg->val.u.reg + D_INDIR; } goto yes; oindex_const: // index is constant // can check statically and // can multiply by width statically v = mpgetfix(r->val.u.xval); if(sudoaddable(as, l, a)) goto oindex_const_sudo; cleani += 2; reg = &clean[cleani-1]; reg1 = &clean[cleani-2]; reg->op = OEMPTY; reg1->op = OEMPTY; if(o & ODynam) { regalloc(reg, types[tptr], N); agen(l, reg); if(!debug['B'] && !n->bounded) { n1 = *reg; n1.op = OINDREG; n1.type = types[tptr]; n1.xoffset = Array_nel; nodconst(&n2, types[TUINT64], v); gins(optoas(OCMP, types[simtype[TUINT]]), &n1, &n2); p1 = gbranch(optoas(OGT, types[simtype[TUINT]]), T, +1); ginscall(panicindex, -1); patch(p1, pc); } n1 = *reg; n1.op = OINDREG; n1.type = types[tptr]; n1.xoffset = Array_array; gmove(&n1, reg); n2 = *reg; n2.op = OINDREG; n2.xoffset = v*w; fixlargeoffset(&n2); a->type = D_NONE; a->index = D_NONE; naddr(&n2, a, 1); goto yes; } igen(l, &n1, N); if(n1.op == OINDREG) { *reg = n1; reg->op = OREGISTER; } n1.xoffset += v*w; fixlargeoffset(&n1); a->type = D_NONE; a->index= D_NONE; naddr(&n1, a, 1); goto yes; oindex_const_sudo: if((o & ODynam) == 0) { // array indexed by a constant a->offset += v*w; goto yes; } // slice indexed by a constant if(!debug['B'] && !n->bounded) { a->offset += Array_nel; nodconst(&n2, types[TUINT64], v); p1 = gins(optoas(OCMP, types[simtype[TUINT]]), N, &n2); p1->from = *a; p1 = gbranch(optoas(OGT, types[simtype[TUINT]]), T, +1); ginscall(panicindex, -1); patch(p1, pc); a->offset -= Array_nel; } a->offset += Array_array; reg = &clean[cleani-1]; if(reg->op == OEMPTY) regalloc(reg, types[tptr], N); p1 = gins(movptr, N, reg); p1->from = *a; n2 = *reg; n2.op = OINDREG; n2.xoffset = v*w; fixlargeoffset(&n2); a->type = D_NONE; a->index = D_NONE; naddr(&n2, a, 1); goto yes; yes: return 1; no: sudoclean(); return 0; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6g/opt.h���������������������������������������������������������������������������������0100644�0000000�0000000�00000012240�12412656737�014317� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Derived from Inferno utils/6c/gc.h // http://code.google.com/p/inferno-os/source/browse/utils/6c/gc.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "../gc/popt.h" #define Z N #define Adr Addr #define D_HI D_NONE #define D_LO D_NONE #define BLOAD(r) band(bnot(r->refbehind), r->refahead) #define BSTORE(r) band(bnot(r->calbehind), r->calahead) #define LOAD(r) (~r->refbehind.b[z] & r->refahead.b[z]) #define STORE(r) (~r->calbehind.b[z] & r->calahead.b[z]) #define CLOAD 5 #define CREF 5 #define CINF 1000 #define LOOP 3 typedef struct Reg Reg; typedef struct Rgn Rgn; // A Reg is a wrapper around a single Prog (one instruction) that holds // register optimization information while the optimizer runs. // r->prog is the instruction. // r->prog->opt points back to r. struct Reg { Flow f; Bits set; // variables written by this instruction. Bits use1; // variables read by prog->from. Bits use2; // variables read by prog->to. Bits refbehind; Bits refahead; Bits calbehind; Bits calahead; Bits regdiff; Bits act; int32 regu; // register used bitmap }; #define R ((Reg*)0) #define NRGN 600 struct Rgn { Reg* enter; short cost; short varno; short regno; }; EXTERN int32 exregoffset; // not set EXTERN int32 exfregoffset; // not set EXTERN Reg zreg; EXTERN Rgn region[NRGN]; EXTERN Rgn* rgp; EXTERN int nregion; EXTERN int nvar; EXTERN int32 regbits; EXTERN int32 exregbits; EXTERN Bits externs; EXTERN Bits params; EXTERN Bits consts; EXTERN Bits addrs; EXTERN Bits ivar; EXTERN Bits ovar; EXTERN int change; EXTERN int32 maxnr; EXTERN struct { int32 ncvtreg; int32 nspill; int32 nreload; int32 ndelmov; int32 nvar; int32 naddr; } ostats; /* * reg.c */ int rcmp(const void*, const void*); void regopt(Prog*); void addmove(Reg*, int, int, int); Bits mkvar(Reg*, Adr*); void prop(Reg*, Bits, Bits); void synch(Reg*, Bits); uint32 allreg(uint32, Rgn*); void paint1(Reg*, int); uint32 paint2(Reg*, int); void paint3(Reg*, int, int32, int); void addreg(Adr*, int); void dumpone(Flow*, int); void dumpit(char*, Flow*, int); /* * peep.c */ void peep(Prog*); void excise(Flow*); int copyu(Prog*, Adr*, Adr*); int32 RtoB(int); int32 FtoB(int); int BtoR(int32); int BtoF(int32); /* * prog.c */ typedef struct ProgInfo ProgInfo; struct ProgInfo { uint32 flags; // the bits below uint32 reguse; // required registers used by this instruction uint32 regset; // required registers set by this instruction uint32 regindex; // registers used by addressing mode }; enum { // Pseudo-op, like TEXT, GLOBL, TYPE, PCDATA, FUNCDATA. Pseudo = 1<<1, // There's nothing to say about the instruction, // but it's still okay to see. OK = 1<<2, // Size of right-side write, or right-side read if no write. SizeB = 1<<3, SizeW = 1<<4, SizeL = 1<<5, SizeQ = 1<<6, SizeF = 1<<7, // float aka float32 SizeD = 1<<8, // double aka float64 // Left side: address taken, read, write. LeftAddr = 1<<9, LeftRead = 1<<10, LeftWrite = 1<<11, // Right side: address taken, read, write. RightAddr = 1<<12, RightRead = 1<<13, RightWrite = 1<<14, // Set, use, or kill of carry bit. // Kill means we never look at the carry bit after this kind of instruction. SetCarry = 1<<15, UseCarry = 1<<16, KillCarry = 1<<17, // Instruction kinds Move = 1<<18, // straight move Conv = 1<<19, // size conversion Cjmp = 1<<20, // conditional jump Break = 1<<21, // breaks control flow (no fallthrough) Call = 1<<22, // function call Jump = 1<<23, // jump Skip = 1<<24, // data instruction // Special cases for register use. ShiftCX = 1<<25, // possible shift by CX ImulAXDX = 1<<26, // possible multiply into DX:AX }; void proginfo(ProgInfo*, Prog*); ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6g/peep.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000045061�12412656734�014445� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Derived from Inferno utils/6c/peep.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/peep.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "gg.h" #include "opt.h" static void conprop(Flow *r); static void elimshortmov(Graph *g); static int prevl(Flow *r, int reg); static void pushback(Flow *r); static int regconsttyp(Adr*); static int subprop(Flow*); static int copyprop(Graph*, Flow*); static int copy1(Adr*, Adr*, Flow*, int); static int copyas(Adr*, Adr*); static int copyau(Adr*, Adr*); static int copysub(Adr*, Adr*, Adr*, int); static uint32 gactive; // do we need the carry bit static int needc(Prog *p) { ProgInfo info; while(p != P) { proginfo(&info, p); if(info.flags & UseCarry) return 1; if(info.flags & (SetCarry|KillCarry)) return 0; p = p->link; } return 0; } static Flow* rnops(Flow *r) { Prog *p; Flow *r1; if(r != nil) for(;;) { p = r->prog; if(p->as != ANOP || p->from.type != D_NONE || p->to.type != D_NONE) break; r1 = uniqs(r); if(r1 == nil) break; r = r1; } return r; } void peep(Prog *firstp) { Flow *r, *r1; Graph *g; Prog *p, *p1; int t; g = flowstart(firstp, sizeof(Flow)); if(g == nil) return; gactive = 0; // byte, word arithmetic elimination. elimshortmov(g); // constant propagation // find MOV $con,R followed by // another MOV $con,R without // setting R in the interim for(r=g->start; r!=nil; r=r->link) { p = r->prog; switch(p->as) { case ALEAL: case ALEAQ: if(regtyp(&p->to)) if(p->from.sym != nil) if(p->from.index == D_NONE || p->from.index == D_CONST) conprop(r); break; case AMOVB: case AMOVW: case AMOVL: case AMOVQ: case AMOVSS: case AMOVSD: if(regtyp(&p->to)) if(p->from.type == D_CONST) conprop(r); break; } } loop1: if(debug['P'] && debug['v']) dumpit("loop1", g->start, 0); t = 0; for(r=g->start; r!=nil; r=r->link) { p = r->prog; switch(p->as) { case AMOVL: case AMOVQ: case AMOVSS: case AMOVSD: if(regtyp(&p->to)) if(regtyp(&p->from)) { if(copyprop(g, r)) { excise(r); t++; } else if(subprop(r) && copyprop(g, r)) { excise(r); t++; } } break; case AMOVBLZX: case AMOVWLZX: case AMOVBLSX: case AMOVWLSX: if(regtyp(&p->to)) { r1 = rnops(uniqs(r)); if(r1 != nil) { p1 = r1->prog; if(p->as == p1->as && p->to.type == p1->from.type){ p1->as = AMOVL; t++; } } } break; case AMOVBQSX: case AMOVBQZX: case AMOVWQSX: case AMOVWQZX: case AMOVLQSX: case AMOVLQZX: case AMOVQL: if(regtyp(&p->to)) { r1 = rnops(uniqs(r)); if(r1 != nil) { p1 = r1->prog; if(p->as == p1->as && p->to.type == p1->from.type){ p1->as = AMOVQ; t++; } } } break; case AADDL: case AADDQ: case AADDW: if(p->from.type != D_CONST || needc(p->link)) break; if(p->from.offset == -1){ if(p->as == AADDQ) p->as = ADECQ; else if(p->as == AADDL) p->as = ADECL; else p->as = ADECW; p->from = zprog.from; break; } if(p->from.offset == 1){ if(p->as == AADDQ) p->as = AINCQ; else if(p->as == AADDL) p->as = AINCL; else p->as = AINCW; p->from = zprog.from; break; } break; case ASUBL: case ASUBQ: case ASUBW: if(p->from.type != D_CONST || needc(p->link)) break; if(p->from.offset == -1) { if(p->as == ASUBQ) p->as = AINCQ; else if(p->as == ASUBL) p->as = AINCL; else p->as = AINCW; p->from = zprog.from; break; } if(p->from.offset == 1){ if(p->as == ASUBQ) p->as = ADECQ; else if(p->as == ASUBL) p->as = ADECL; else p->as = ADECW; p->from = zprog.from; break; } break; } } if(t) goto loop1; // MOVLQZX removal. // The MOVLQZX exists to avoid being confused for a // MOVL that is just copying 32-bit data around during // copyprop. Now that copyprop is done, remov MOVLQZX R1, R2 // if it is dominated by an earlier ADDL/MOVL/etc into R1 that // will have already cleared the high bits. // // MOVSD removal. // We never use packed registers, so a MOVSD between registers // can be replaced by MOVAPD, which moves the pair of float64s // instead of just the lower one. We only use the lower one, but // the processor can do better if we do moves using both. for(r=g->start; r!=nil; r=r->link) { p = r->prog; if(p->as == AMOVLQZX) if(regtyp(&p->from)) if(p->from.type == p->to.type) if(prevl(r, p->from.type)) excise(r); if(p->as == AMOVSD) if(regtyp(&p->from)) if(regtyp(&p->to)) p->as = AMOVAPD; } // load pipelining // push any load from memory as early as possible // to give it time to complete before use. for(r=g->start; r!=nil; r=r->link) { p = r->prog; switch(p->as) { case AMOVB: case AMOVW: case AMOVL: case AMOVQ: case AMOVLQZX: if(regtyp(&p->to) && !regconsttyp(&p->from)) pushback(r); } } flowend(g); } static void pushback(Flow *r0) { Flow *r, *b; Prog *p0, *p, t; b = nil; p0 = r0->prog; for(r=uniqp(r0); r!=nil && uniqs(r)!=nil; r=uniqp(r)) { p = r->prog; if(p->as != ANOP) { if(!regconsttyp(&p->from) || !regtyp(&p->to)) break; if(copyu(p, &p0->to, nil) || copyu(p0, &p->to, nil)) break; } if(p->as == ACALL) break; b = r; } if(b == nil) { if(debug['v']) { print("no pushback: %P\n", r0->prog); if(r) print("\t%P [%d]\n", r->prog, uniqs(r)!=nil); } return; } if(debug['v']) { print("pushback\n"); for(r=b;; r=r->link) { print("\t%P\n", r->prog); if(r == r0) break; } } t = *r0->prog; for(r=uniqp(r0);; r=uniqp(r)) { p0 = r->link->prog; p = r->prog; p0->as = p->as; p0->lineno = p->lineno; p0->from = p->from; p0->to = p->to; if(r == b) break; } p0 = r->prog; p0->as = t.as; p0->lineno = t.lineno; p0->from = t.from; p0->to = t.to; if(debug['v']) { print("\tafter\n"); for(r=b;; r=r->link) { print("\t%P\n", r->prog); if(r == r0) break; } } } void excise(Flow *r) { Prog *p; p = r->prog; if(debug['P'] && debug['v']) print("%P ===delete===\n", p); p->as = ANOP; p->from = zprog.from; p->to = zprog.to; ostats.ndelmov++; } int regtyp(Adr *a) { int t; t = a->type; if(t >= D_AX && t <= D_R15) return 1; if(t >= D_X0 && t <= D_X0+15) return 1; return 0; } // movb elimination. // movb is simulated by the linker // when a register other than ax, bx, cx, dx // is used, so rewrite to other instructions // when possible. a movb into a register // can smash the entire 32-bit register without // causing any trouble. // // TODO: Using the Q forms here instead of the L forms // seems unnecessary, and it makes the instructions longer. static void elimshortmov(Graph *g) { Prog *p; Flow *r; for(r=g->start; r!=nil; r=r->link) { p = r->prog; if(regtyp(&p->to)) { switch(p->as) { case AINCB: case AINCW: p->as = AINCQ; break; case ADECB: case ADECW: p->as = ADECQ; break; case ANEGB: case ANEGW: p->as = ANEGQ; break; case ANOTB: case ANOTW: p->as = ANOTQ; break; } if(regtyp(&p->from) || p->from.type == D_CONST) { // move or artihmetic into partial register. // from another register or constant can be movl. // we don't switch to 64-bit arithmetic if it can // change how the carry bit is set (and the carry bit is needed). switch(p->as) { case AMOVB: case AMOVW: p->as = AMOVQ; break; case AADDB: case AADDW: if(!needc(p->link)) p->as = AADDQ; break; case ASUBB: case ASUBW: if(!needc(p->link)) p->as = ASUBQ; break; case AMULB: case AMULW: p->as = AMULQ; break; case AIMULB: case AIMULW: p->as = AIMULQ; break; case AANDB: case AANDW: p->as = AANDQ; break; case AORB: case AORW: p->as = AORQ; break; case AXORB: case AXORW: p->as = AXORQ; break; case ASHLB: case ASHLW: p->as = ASHLQ; break; } } else if(p->from.type >= D_NONE) { // explicit zero extension, but don't // do that if source is a byte register // (only AH can occur and it's forbidden). switch(p->as) { case AMOVB: p->as = AMOVBQZX; break; case AMOVW: p->as = AMOVWQZX; break; } } } } } // is 'a' a register or constant? static int regconsttyp(Adr *a) { if(regtyp(a)) return 1; switch(a->type) { case D_CONST: case D_FCONST: case D_SCONST: case D_ADDR: return 1; } return 0; } // is reg guaranteed to be truncated by a previous L instruction? static int prevl(Flow *r0, int reg) { Prog *p; Flow *r; ProgInfo info; for(r=uniqp(r0); r!=nil; r=uniqp(r)) { p = r->prog; if(p->to.type == reg) { proginfo(&info, p); if(info.flags & RightWrite) { if(info.flags & SizeL) return 1; return 0; } } } return 0; } /* * the idea is to substitute * one register for another * from one MOV to another * MOV a, R0 * ADD b, R0 / no use of R1 * MOV R0, R1 * would be converted to * MOV a, R1 * ADD b, R1 * MOV R1, R0 * hopefully, then the former or latter MOV * will be eliminated by copy propagation. */ static int subprop(Flow *r0) { Prog *p; ProgInfo info; Adr *v1, *v2; Flow *r; int t; if(debug['P'] && debug['v']) print("subprop %P\n", r0->prog); p = r0->prog; v1 = &p->from; if(!regtyp(v1)) { if(debug['P'] && debug['v']) print("\tnot regtype %D; return 0\n", v1); return 0; } v2 = &p->to; if(!regtyp(v2)) { if(debug['P'] && debug['v']) print("\tnot regtype %D; return 0\n", v2); return 0; } for(r=uniqp(r0); r!=nil; r=uniqp(r)) { if(debug['P'] && debug['v']) print("\t? %P\n", r->prog); if(uniqs(r) == nil) { if(debug['P'] && debug['v']) print("\tno unique successor\n"); break; } p = r->prog; if(p->as == AVARDEF || p->as == AVARKILL) continue; proginfo(&info, p); if(info.flags & Call) { if(debug['P'] && debug['v']) print("\tfound %P; return 0\n", p); return 0; } if(info.reguse | info.regset) { if(debug['P'] && debug['v']) print("\tfound %P; return 0\n", p); return 0; } if((info.flags & Move) && (info.flags & (SizeL|SizeQ|SizeF|SizeD)) && p->to.type == v1->type) goto gotit; if(copyau(&p->from, v2) || copyau(&p->to, v2)) { if(debug['P'] && debug['v']) print("\tcopyau %D failed\n", v2); break; } if(copysub(&p->from, v1, v2, 0) || copysub(&p->to, v1, v2, 0)) { if(debug['P'] && debug['v']) print("\tcopysub failed\n"); break; } } if(debug['P'] && debug['v']) print("\tran off end; return 0\n"); return 0; gotit: copysub(&p->to, v1, v2, 1); if(debug['P']) { print("gotit: %D->%D\n%P", v1, v2, r->prog); if(p->from.type == v2->type) print(" excise"); print("\n"); } for(r=uniqs(r); r!=r0; r=uniqs(r)) { p = r->prog; copysub(&p->from, v1, v2, 1); copysub(&p->to, v1, v2, 1); if(debug['P']) print("%P\n", r->prog); } t = v1->type; v1->type = v2->type; v2->type = t; if(debug['P']) print("%P last\n", r->prog); return 1; } /* * The idea is to remove redundant copies. * v1->v2 F=0 * (use v2 s/v2/v1/)* * set v1 F=1 * use v2 return fail * ----------------- * v1->v2 F=0 * (use v2 s/v2/v1/)* * set v1 F=1 * set v2 return success */ static int copyprop(Graph *g, Flow *r0) { Prog *p; Adr *v1, *v2; USED(g); if(debug['P'] && debug['v']) print("copyprop %P\n", r0->prog); p = r0->prog; v1 = &p->from; v2 = &p->to; if(copyas(v1, v2)) return 1; gactive++; return copy1(v1, v2, r0->s1, 0); } static int copy1(Adr *v1, Adr *v2, Flow *r, int f) { int t; Prog *p; if(r->active == gactive) { if(debug['P']) print("act set; return 1\n"); return 1; } r->active = gactive; if(debug['P']) print("copy %D->%D f=%d\n", v1, v2, f); for(; r != nil; r = r->s1) { p = r->prog; if(debug['P']) print("%P", p); if(!f && uniqp(r) == nil) { f = 1; if(debug['P']) print("; merge; f=%d", f); } t = copyu(p, v2, nil); switch(t) { case 2: /* rar, can't split */ if(debug['P']) print("; %D rar; return 0\n", v2); return 0; case 3: /* set */ if(debug['P']) print("; %D set; return 1\n", v2); return 1; case 1: /* used, substitute */ case 4: /* use and set */ if(f) { if(!debug['P']) return 0; if(t == 4) print("; %D used+set and f=%d; return 0\n", v2, f); else print("; %D used and f=%d; return 0\n", v2, f); return 0; } if(copyu(p, v2, v1)) { if(debug['P']) print("; sub fail; return 0\n"); return 0; } if(debug['P']) print("; sub %D/%D", v2, v1); if(t == 4) { if(debug['P']) print("; %D used+set; return 1\n", v2); return 1; } break; } if(!f) { t = copyu(p, v1, nil); if(!f && (t == 2 || t == 3 || t == 4)) { f = 1; if(debug['P']) print("; %D set and !f; f=%d", v1, f); } } if(debug['P']) print("\n"); if(r->s2) if(!copy1(v1, v2, r->s2, f)) return 0; } return 1; } /* * return * 1 if v only used (and substitute), * 2 if read-alter-rewrite * 3 if set * 4 if set and used * 0 otherwise (not touched) */ int copyu(Prog *p, Adr *v, Adr *s) { ProgInfo info; switch(p->as) { case AJMP: if(s != nil) { if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyau(&p->to, v)) return 1; return 0; case ARET: if(s != nil) return 1; return 3; case ACALL: if(REGEXT && v->type <= REGEXT && v->type > exregoffset) return 2; if(REGARG >= 0 && v->type == (uchar)REGARG) return 2; if(v->type == p->from.type) return 2; if(s != nil) { if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyau(&p->to, v)) return 4; return 3; case ATEXT: if(REGARG >= 0 && v->type == (uchar)REGARG) return 3; return 0; } if(p->as == AVARDEF || p->as == AVARKILL) return 0; proginfo(&info, p); if((info.reguse|info.regset) & RtoB(v->type)) return 2; if(info.flags & LeftAddr) if(copyas(&p->from, v)) return 2; if((info.flags & (RightRead|RightWrite)) == (RightRead|RightWrite)) if(copyas(&p->to, v)) return 2; if(info.flags & RightWrite) { if(copyas(&p->to, v)) { if(s != nil) return copysub(&p->from, v, s, 1); if(copyau(&p->from, v)) return 4; return 3; } } if(info.flags & (LeftAddr|LeftRead|LeftWrite|RightAddr|RightRead|RightWrite)) { if(s != nil) { if(copysub(&p->from, v, s, 1)) return 1; return copysub(&p->to, v, s, 1); } if(copyau(&p->from, v)) return 1; if(copyau(&p->to, v)) return 1; } return 0; } /* * direct reference, * could be set/use depending on * semantics */ static int copyas(Adr *a, Adr *v) { if(D_AL <= a->type && a->type <= D_R15B) fatal("use of byte register"); if(D_AL <= v->type && v->type <= D_R15B) fatal("use of byte register"); if(a->type != v->type) return 0; if(regtyp(v)) return 1; if(v->type == D_AUTO || v->type == D_PARAM) if(v->offset == a->offset) return 1; return 0; } int sameaddr(Addr *a, Addr *v) { if(a->type != v->type) return 0; if(regtyp(v)) return 1; if(v->type == D_AUTO || v->type == D_PARAM) if(v->offset == a->offset) return 1; return 0; } /* * either direct or indirect */ static int copyau(Adr *a, Adr *v) { if(copyas(a, v)) { if(debug['P'] && debug['v']) print("\tcopyau: copyas returned 1\n"); return 1; } if(regtyp(v)) { if(a->type-D_INDIR == v->type) { if(debug['P'] && debug['v']) print("\tcopyau: found indir use - return 1\n"); return 1; } if(a->index == v->type) { if(debug['P'] && debug['v']) print("\tcopyau: found index use - return 1\n"); return 1; } } return 0; } /* * substitute s for v in a * return failure to substitute */ static int copysub(Adr *a, Adr *v, Adr *s, int f) { int t; if(copyas(a, v)) { t = s->type; if(t >= D_AX && t <= D_R15 || t >= D_X0 && t <= D_X0+15) { if(f) a->type = t; } return 0; } if(regtyp(v)) { t = v->type; if(a->type == t+D_INDIR) { if((s->type == D_BP || s->type == D_R13) && a->index != D_NONE) return 1; /* can't use BP-base with index */ if(f) a->type = s->type+D_INDIR; // return 0; } if(a->index == t) { if(f) a->index = s->type; return 0; } return 0; } return 0; } static void conprop(Flow *r0) { Flow *r; Prog *p, *p0; int t; Adr *v0; p0 = r0->prog; v0 = &p0->to; r = r0; loop: r = uniqs(r); if(r == nil || r == r0) return; if(uniqp(r) == nil) return; p = r->prog; t = copyu(p, v0, nil); switch(t) { case 0: // miss case 1: // use goto loop; case 2: // rar case 4: // use and set break; case 3: // set if(p->as == p0->as) if(p->from.type == p0->from.type) if(p->from.node == p0->from.node) if(p->from.offset == p0->from.offset) if(p->from.scale == p0->from.scale) if(p->from.type == D_FCONST && p->from.u.dval == p0->from.u.dval) if(p->from.index == p0->from.index) { excise(r); goto loop; } break; } } int smallindir(Addr *a, Addr *reg) { return regtyp(reg) && a->type == D_INDIR + reg->type && a->index == D_NONE && 0 <= a->offset && a->offset < 4096; } int stackaddr(Addr *a) { return regtyp(a) && a->type == D_SP; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6g/prog.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000025743�12412656734�014470� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2013 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. #include #include #include "gg.h" #include "opt.h" // Matches real RtoB but can be used in global initializer. #define RtoB(r) (1<<((r)-D_AX)) enum { AX = RtoB(D_AX), BX = RtoB(D_BX), CX = RtoB(D_CX), DX = RtoB(D_DX), DI = RtoB(D_DI), SI = RtoB(D_SI), LeftRdwr = LeftRead | LeftWrite, RightRdwr = RightRead | RightWrite, }; #undef RtoB // This table gives the basic information about instruction // generated by the compiler and processed in the optimizer. // See opt.h for bit definitions. // // Instructions not generated need not be listed. // As an exception to that rule, we typically write down all the // size variants of an operation even if we just use a subset. // // The table is formatted for 8-space tabs. static ProgInfo progtable[ALAST] = { [ATYPE]= {Pseudo | Skip}, [ATEXT]= {Pseudo}, [AFUNCDATA]= {Pseudo}, [APCDATA]= {Pseudo}, [AUNDEF]= {Break}, [AUSEFIELD]= {OK}, [ACHECKNIL]= {LeftRead}, [AVARDEF]= {Pseudo | RightWrite}, [AVARKILL]= {Pseudo | RightWrite}, // NOP is an internal no-op that also stands // for USED and SET annotations, not the Intel opcode. [ANOP]= {LeftRead | RightWrite}, [AADCL]= {SizeL | LeftRead | RightRdwr | SetCarry | UseCarry}, [AADCQ]= {SizeQ | LeftRead | RightRdwr | SetCarry | UseCarry}, [AADCW]= {SizeW | LeftRead | RightRdwr | SetCarry | UseCarry}, [AADDB]= {SizeB | LeftRead | RightRdwr | SetCarry}, [AADDL]= {SizeL | LeftRead | RightRdwr | SetCarry}, [AADDW]= {SizeW | LeftRead | RightRdwr | SetCarry}, [AADDQ]= {SizeQ | LeftRead | RightRdwr | SetCarry}, [AADDSD]= {SizeD | LeftRead | RightRdwr}, [AADDSS]= {SizeF | LeftRead | RightRdwr}, [AANDB]= {SizeB | LeftRead | RightRdwr | SetCarry}, [AANDL]= {SizeL | LeftRead | RightRdwr | SetCarry}, [AANDQ]= {SizeQ | LeftRead | RightRdwr | SetCarry}, [AANDW]= {SizeW | LeftRead | RightRdwr | SetCarry}, [ACALL]= {RightAddr | Call | KillCarry}, [ACDQ]= {OK, AX, AX | DX}, [ACQO]= {OK, AX, AX | DX}, [ACWD]= {OK, AX, AX | DX}, [ACLD]= {OK}, [ASTD]= {OK}, [ACMPB]= {SizeB | LeftRead | RightRead | SetCarry}, [ACMPL]= {SizeL | LeftRead | RightRead | SetCarry}, [ACMPQ]= {SizeQ | LeftRead | RightRead | SetCarry}, [ACMPW]= {SizeW | LeftRead | RightRead | SetCarry}, [ACOMISD]= {SizeD | LeftRead | RightRead | SetCarry}, [ACOMISS]= {SizeF | LeftRead | RightRead | SetCarry}, [ACVTSD2SL]= {SizeL | LeftRead | RightWrite | Conv}, [ACVTSD2SQ]= {SizeQ | LeftRead | RightWrite | Conv}, [ACVTSD2SS]= {SizeF | LeftRead | RightWrite | Conv}, [ACVTSL2SD]= {SizeD | LeftRead | RightWrite | Conv}, [ACVTSL2SS]= {SizeF | LeftRead | RightWrite | Conv}, [ACVTSQ2SD]= {SizeD | LeftRead | RightWrite | Conv}, [ACVTSQ2SS]= {SizeF | LeftRead | RightWrite | Conv}, [ACVTSS2SD]= {SizeD | LeftRead | RightWrite | Conv}, [ACVTSS2SL]= {SizeL | LeftRead | RightWrite | Conv}, [ACVTSS2SQ]= {SizeQ | LeftRead | RightWrite | Conv}, [ACVTTSD2SL]= {SizeL | LeftRead | RightWrite | Conv}, [ACVTTSD2SQ]= {SizeQ | LeftRead | RightWrite | Conv}, [ACVTTSS2SL]= {SizeL | LeftRead | RightWrite | Conv}, [ACVTTSS2SQ]= {SizeQ | LeftRead | RightWrite | Conv}, [ADECB]= {SizeB | RightRdwr}, [ADECL]= {SizeL | RightRdwr}, [ADECQ]= {SizeQ | RightRdwr}, [ADECW]= {SizeW | RightRdwr}, [ADIVB]= {SizeB | LeftRead | SetCarry, AX, AX}, [ADIVL]= {SizeL | LeftRead | SetCarry, AX|DX, AX|DX}, [ADIVQ]= {SizeQ | LeftRead | SetCarry, AX|DX, AX|DX}, [ADIVW]= {SizeW | LeftRead | SetCarry, AX|DX, AX|DX}, [ADIVSD]= {SizeD | LeftRead | RightRdwr}, [ADIVSS]= {SizeF | LeftRead | RightRdwr}, [AIDIVB]= {SizeB | LeftRead | SetCarry, AX, AX}, [AIDIVL]= {SizeL | LeftRead | SetCarry, AX|DX, AX|DX}, [AIDIVQ]= {SizeQ | LeftRead | SetCarry, AX|DX, AX|DX}, [AIDIVW]= {SizeW | LeftRead | SetCarry, AX|DX, AX|DX}, [AIMULB]= {SizeB | LeftRead | SetCarry, AX, AX}, [AIMULL]= {SizeL | LeftRead | ImulAXDX | SetCarry}, [AIMULQ]= {SizeQ | LeftRead | ImulAXDX | SetCarry}, [AIMULW]= {SizeW | LeftRead | ImulAXDX | SetCarry}, [AINCB]= {SizeB | RightRdwr}, [AINCL]= {SizeL | RightRdwr}, [AINCQ]= {SizeQ | RightRdwr}, [AINCW]= {SizeW | RightRdwr}, [AJCC]= {Cjmp | UseCarry}, [AJCS]= {Cjmp | UseCarry}, [AJEQ]= {Cjmp | UseCarry}, [AJGE]= {Cjmp | UseCarry}, [AJGT]= {Cjmp | UseCarry}, [AJHI]= {Cjmp | UseCarry}, [AJLE]= {Cjmp | UseCarry}, [AJLS]= {Cjmp | UseCarry}, [AJLT]= {Cjmp | UseCarry}, [AJMI]= {Cjmp | UseCarry}, [AJNE]= {Cjmp | UseCarry}, [AJOC]= {Cjmp | UseCarry}, [AJOS]= {Cjmp | UseCarry}, [AJPC]= {Cjmp | UseCarry}, [AJPL]= {Cjmp | UseCarry}, [AJPS]= {Cjmp | UseCarry}, [AJMP]= {Jump | Break | KillCarry}, [ALEAL]= {LeftAddr | RightWrite}, [ALEAQ]= {LeftAddr | RightWrite}, [AMOVBLSX]= {SizeL | LeftRead | RightWrite | Conv}, [AMOVBLZX]= {SizeL | LeftRead | RightWrite | Conv}, [AMOVBQSX]= {SizeQ | LeftRead | RightWrite | Conv}, [AMOVBQZX]= {SizeQ | LeftRead | RightWrite | Conv}, [AMOVBWSX]= {SizeW | LeftRead | RightWrite | Conv}, [AMOVBWZX]= {SizeW | LeftRead | RightWrite | Conv}, [AMOVLQSX]= {SizeQ | LeftRead | RightWrite | Conv}, [AMOVLQZX]= {SizeQ | LeftRead | RightWrite | Conv}, [AMOVWLSX]= {SizeL | LeftRead | RightWrite | Conv}, [AMOVWLZX]= {SizeL | LeftRead | RightWrite | Conv}, [AMOVWQSX]= {SizeQ | LeftRead | RightWrite | Conv}, [AMOVWQZX]= {SizeQ | LeftRead | RightWrite | Conv}, [AMOVQL]= {SizeL | LeftRead | RightWrite | Conv}, [AMOVB]= {SizeB | LeftRead | RightWrite | Move}, [AMOVL]= {SizeL | LeftRead | RightWrite | Move}, [AMOVQ]= {SizeQ | LeftRead | RightWrite | Move}, [AMOVW]= {SizeW | LeftRead | RightWrite | Move}, [AMOVSB]= {OK, DI|SI, DI|SI}, [AMOVSL]= {OK, DI|SI, DI|SI}, [AMOVSQ]= {OK, DI|SI, DI|SI}, [AMOVSW]= {OK, DI|SI, DI|SI}, [ADUFFCOPY]= {OK, DI|SI, DI|SI|CX}, [AMOVSD]= {SizeD | LeftRead | RightWrite | Move}, [AMOVSS]= {SizeF | LeftRead | RightWrite | Move}, // We use MOVAPD as a faster synonym for MOVSD. [AMOVAPD]= {SizeD | LeftRead | RightWrite | Move}, [AMULB]= {SizeB | LeftRead | SetCarry, AX, AX}, [AMULL]= {SizeL | LeftRead | SetCarry, AX, AX|DX}, [AMULQ]= {SizeQ | LeftRead | SetCarry, AX, AX|DX}, [AMULW]= {SizeW | LeftRead | SetCarry, AX, AX|DX}, [AMULSD]= {SizeD | LeftRead | RightRdwr}, [AMULSS]= {SizeF | LeftRead | RightRdwr}, [ANEGB]= {SizeB | RightRdwr | SetCarry}, [ANEGL]= {SizeL | RightRdwr | SetCarry}, [ANEGQ]= {SizeQ | RightRdwr | SetCarry}, [ANEGW]= {SizeW | RightRdwr | SetCarry}, [ANOTB]= {SizeB | RightRdwr}, [ANOTL]= {SizeL | RightRdwr}, [ANOTQ]= {SizeQ | RightRdwr}, [ANOTW]= {SizeW | RightRdwr}, [AORB]= {SizeB | LeftRead | RightRdwr | SetCarry}, [AORL]= {SizeL | LeftRead | RightRdwr | SetCarry}, [AORQ]= {SizeQ | LeftRead | RightRdwr | SetCarry}, [AORW]= {SizeW | LeftRead | RightRdwr | SetCarry}, [APOPQ]= {SizeQ | RightWrite}, [APUSHQ]= {SizeQ | LeftRead}, [ARCLB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry | UseCarry}, [ARCLL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry | UseCarry}, [ARCLQ]= {SizeQ | LeftRead | RightRdwr | ShiftCX | SetCarry | UseCarry}, [ARCLW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry | UseCarry}, [ARCRB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry | UseCarry}, [ARCRL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry | UseCarry}, [ARCRQ]= {SizeQ | LeftRead | RightRdwr | ShiftCX | SetCarry | UseCarry}, [ARCRW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry | UseCarry}, [AREP]= {OK, CX, CX}, [AREPN]= {OK, CX, CX}, [ARET]= {Break | KillCarry}, [AROLB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry}, [AROLL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry}, [AROLQ]= {SizeQ | LeftRead | RightRdwr | ShiftCX | SetCarry}, [AROLW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ARORB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ARORL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ARORQ]= {SizeQ | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ARORW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASALB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASALL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASALQ]= {SizeQ | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASALW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASARB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASARL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASARQ]= {SizeQ | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASARW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASBBB]= {SizeB | LeftRead | RightRdwr | SetCarry | UseCarry}, [ASBBL]= {SizeL | LeftRead | RightRdwr | SetCarry | UseCarry}, [ASBBQ]= {SizeQ | LeftRead | RightRdwr | SetCarry | UseCarry}, [ASBBW]= {SizeW | LeftRead | RightRdwr | SetCarry | UseCarry}, [ASHLB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASHLL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASHLQ]= {SizeQ | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASHLW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASHRB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASHRL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASHRQ]= {SizeQ | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASHRW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASTOSB]= {OK, AX|DI, DI}, [ASTOSL]= {OK, AX|DI, DI}, [ASTOSQ]= {OK, AX|DI, DI}, [ASTOSW]= {OK, AX|DI, DI}, [ADUFFZERO]= {OK, AX|DI, DI}, [ASUBB]= {SizeB | LeftRead | RightRdwr | SetCarry}, [ASUBL]= {SizeL | LeftRead | RightRdwr | SetCarry}, [ASUBQ]= {SizeQ | LeftRead | RightRdwr | SetCarry}, [ASUBW]= {SizeW | LeftRead | RightRdwr | SetCarry}, [ASUBSD]= {SizeD | LeftRead | RightRdwr}, [ASUBSS]= {SizeF | LeftRead | RightRdwr}, [ATESTB]= {SizeB | LeftRead | RightRead | SetCarry}, [ATESTL]= {SizeL | LeftRead | RightRead | SetCarry}, [ATESTQ]= {SizeQ | LeftRead | RightRead | SetCarry}, [ATESTW]= {SizeW | LeftRead | RightRead | SetCarry}, [AUCOMISD]= {SizeD | LeftRead | RightRead}, [AUCOMISS]= {SizeF | LeftRead | RightRead}, [AXCHGB]= {SizeB | LeftRdwr | RightRdwr}, [AXCHGL]= {SizeL | LeftRdwr | RightRdwr}, [AXCHGQ]= {SizeQ | LeftRdwr | RightRdwr}, [AXCHGW]= {SizeW | LeftRdwr | RightRdwr}, [AXORB]= {SizeB | LeftRead | RightRdwr | SetCarry}, [AXORL]= {SizeL | LeftRead | RightRdwr | SetCarry}, [AXORQ]= {SizeQ | LeftRead | RightRdwr | SetCarry}, [AXORW]= {SizeW | LeftRead | RightRdwr | SetCarry}, }; void proginfo(ProgInfo *info, Prog *p) { *info = progtable[p->as]; if(info->flags == 0) fatal("unknown instruction %P", p); if((info->flags & ShiftCX) && p->from.type != D_CONST) info->reguse |= CX; if(info->flags & ImulAXDX) { if(p->to.type == D_NONE) { info->reguse |= AX; info->regset |= AX | DX; } else { info->flags |= RightRdwr; } } // Addressing makes some registers used. if(p->from.type >= D_INDIR) info->regindex |= RtoB(p->from.type-D_INDIR); if(p->from.index != D_NONE) info->regindex |= RtoB(p->from.index); if(p->to.type >= D_INDIR) info->regindex |= RtoB(p->to.type-D_INDIR); if(p->to.index != D_NONE) info->regindex |= RtoB(p->to.index); } �����������������������������go/src/cmd/6g/reg.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000065243�12412656737�014300� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Derived from Inferno utils/6c/reg.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/reg.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "gg.h" #include "opt.h" #define NREGVAR 32 /* 16 general + 16 floating */ #define REGBITS ((uint32)0xffffffff) static Reg* firstr; static int first = 1; int rcmp(const void *a1, const void *a2) { Rgn *p1, *p2; int c1, c2; p1 = (Rgn*)a1; p2 = (Rgn*)a2; c1 = p2->cost; c2 = p1->cost; if(c1 -= c2) return c1; return p2->varno - p1->varno; } static void setaddrs(Bits bit) { int i, n; Var *v; Node *node; while(bany(&bit)) { // convert each bit to a variable i = bnum(bit); node = var[i].node; n = var[i].name; bit.b[i/32] &= ~(1L<<(i%32)); // disable all pieces of that variable for(i=0; inode == node && v->name == n) v->addr = 2; } } } static char* regname[] = { ".AX", ".CX", ".DX", ".BX", ".SP", ".BP", ".SI", ".DI", ".R8", ".R9", ".R10", ".R11", ".R12", ".R13", ".R14", ".R15", ".X0", ".X1", ".X2", ".X3", ".X4", ".X5", ".X6", ".X7", ".X8", ".X9", ".X10", ".X11", ".X12", ".X13", ".X14", ".X15", }; static Node* regnodes[NREGVAR]; static void walkvardef(Node *n, Reg *r, int active); void regopt(Prog *firstp) { Reg *r, *r1; Prog *p; Graph *g; ProgInfo info; int i, z, active; uint32 vreg; Bits bit; if(first) { fmtinstall('Q', Qconv); exregoffset = D_R15; first = 0; } mergetemp(firstp); /* * control flow is more complicated in generated go code * than in generated c code. define pseudo-variables for * registers, so we have complete register usage information. */ nvar = NREGVAR; memset(var, 0, NREGVAR*sizeof var[0]); for(i=0; iopt = nil; return; } firstr = (Reg*)g->start; for(r = firstr; r != R; r = (Reg*)r->f.link) { p = r->f.prog; if(p->as == AVARDEF || p->as == AVARKILL) continue; proginfo(&info, p); // Avoid making variables for direct-called functions. if(p->as == ACALL && p->to.type == D_EXTERN) continue; r->use1.b[0] |= info.reguse | info.regindex; r->set.b[0] |= info.regset; bit = mkvar(r, &p->from); if(bany(&bit)) { if(info.flags & LeftAddr) setaddrs(bit); if(info.flags & LeftRead) for(z=0; zuse1.b[z] |= bit.b[z]; if(info.flags & LeftWrite) for(z=0; zset.b[z] |= bit.b[z]; } bit = mkvar(r, &p->to); if(bany(&bit)) { if(info.flags & RightAddr) setaddrs(bit); if(info.flags & RightRead) for(z=0; zuse2.b[z] |= bit.b[z]; if(info.flags & RightWrite) for(z=0; zset.b[z] |= bit.b[z]; } } for(i=0; iaddr) { bit = blsh(i); for(z=0; zaddr, v->etype, v->width, v->node, v->offset); } if(debug['R'] && debug['v']) dumpit("pass1", &firstr->f, 1); /* * pass 2 * find looping structure */ flowrpo(g); if(debug['R'] && debug['v']) dumpit("pass2", &firstr->f, 1); /* * pass 2.5 * iterate propagating fat vardef covering forward * r->act records vars with a VARDEF since the last CALL. * (r->act will be reused in pass 5 for something else, * but we'll be done with it by then.) */ active = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) { r->f.active = 0; r->act = zbits; } for(r = firstr; r != R; r = (Reg*)r->f.link) { p = r->f.prog; if(p->as == AVARDEF && isfat(p->to.node->type) && p->to.node->opt != nil) { active++; walkvardef(p->to.node, r, active); } } /* * pass 3 * iterate propagating usage * back until flow graph is complete */ loop1: change = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) r->f.active = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) if(r->f.prog->as == ARET) prop(r, zbits, zbits); loop11: /* pick up unreachable code */ i = 0; for(r = firstr; r != R; r = r1) { r1 = (Reg*)r->f.link; if(r1 && r1->f.active && !r->f.active) { prop(r, zbits, zbits); i = 1; } } if(i) goto loop11; if(change) goto loop1; if(debug['R'] && debug['v']) dumpit("pass3", &firstr->f, 1); /* * pass 4 * iterate propagating register/variable synchrony * forward until graph is complete */ loop2: change = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) r->f.active = 0; synch(firstr, zbits); if(change) goto loop2; if(debug['R'] && debug['v']) dumpit("pass4", &firstr->f, 1); /* * pass 4.5 * move register pseudo-variables into regu. */ for(r = firstr; r != R; r = (Reg*)r->f.link) { r->regu = (r->refbehind.b[0] | r->set.b[0]) & REGBITS; r->set.b[0] &= ~REGBITS; r->use1.b[0] &= ~REGBITS; r->use2.b[0] &= ~REGBITS; r->refbehind.b[0] &= ~REGBITS; r->refahead.b[0] &= ~REGBITS; r->calbehind.b[0] &= ~REGBITS; r->calahead.b[0] &= ~REGBITS; r->regdiff.b[0] &= ~REGBITS; r->act.b[0] &= ~REGBITS; } /* * pass 5 * isolate regions * calculate costs (paint1) */ r = firstr; if(r) { for(z=0; zrefahead.b[z] | r->calahead.b[z]) & ~(externs.b[z] | params.b[z] | addrs.b[z] | consts.b[z]); if(bany(&bit) && !r->f.refset) { // should never happen - all variables are preset if(debug['w']) print("%L: used and not set: %Q\n", r->f.prog->lineno, bit); r->f.refset = 1; } } for(r = firstr; r != R; r = (Reg*)r->f.link) r->act = zbits; rgp = region; nregion = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) { for(z=0; zset.b[z] & ~(r->refahead.b[z] | r->calahead.b[z] | addrs.b[z]); if(bany(&bit) && !r->f.refset) { if(debug['w']) print("%L: set and not used: %Q\n", r->f.prog->lineno, bit); r->f.refset = 1; excise(&r->f); } for(z=0; zact.b[z] | addrs.b[z]); while(bany(&bit)) { i = bnum(bit); rgp->enter = r; rgp->varno = i; change = 0; paint1(r, i); bit.b[i/32] &= ~(1L<<(i%32)); if(change <= 0) continue; rgp->cost = change; nregion++; if(nregion >= NRGN) { if(debug['R'] && debug['v']) print("too many regions\n"); goto brk; } rgp++; } } brk: qsort(region, nregion, sizeof(region[0]), rcmp); if(debug['R'] && debug['v']) dumpit("pass5", &firstr->f, 1); /* * pass 6 * determine used registers (paint2) * replace code (paint3) */ rgp = region; for(i=0; ivarno); vreg = paint2(rgp->enter, rgp->varno); vreg = allreg(vreg, rgp); if(rgp->regno != 0) { if(debug['R'] && debug['v']) { Var *v; v = var + rgp->varno; print("registerize %N+%lld (bit=%2d et=%2E) in %R\n", v->node, v->offset, rgp->varno, v->etype, rgp->regno); } paint3(rgp->enter, rgp->varno, vreg, rgp->regno); } rgp++; } if(debug['R'] && debug['v']) dumpit("pass6", &firstr->f, 1); /* * free aux structures. peep allocates new ones. */ for(i=0; iopt = nil; flowend(g); firstr = R; /* * pass 7 * peep-hole on basic block */ if(!debug['R'] || debug['P']) peep(firstp); /* * eliminate nops */ for(p=firstp; p!=P; p=p->link) { while(p->link != P && p->link->as == ANOP) p->link = p->link->link; if(p->to.type == D_BRANCH) while(p->to.u.branch != P && p->to.u.branch->as == ANOP) p->to.u.branch = p->to.u.branch->link; } if(debug['R']) { if(ostats.ncvtreg || ostats.nspill || ostats.nreload || ostats.ndelmov || ostats.nvar || ostats.naddr || 0) print("\nstats\n"); if(ostats.ncvtreg) print(" %4d cvtreg\n", ostats.ncvtreg); if(ostats.nspill) print(" %4d spill\n", ostats.nspill); if(ostats.nreload) print(" %4d reload\n", ostats.nreload); if(ostats.ndelmov) print(" %4d delmov\n", ostats.ndelmov); if(ostats.nvar) print(" %4d var\n", ostats.nvar); if(ostats.naddr) print(" %4d addr\n", ostats.naddr); memset(&ostats, 0, sizeof(ostats)); } } static void walkvardef(Node *n, Reg *r, int active) { Reg *r1, *r2; int bn; Var *v; for(r1=r; r1!=R; r1=(Reg*)r1->f.s1) { if(r1->f.active == active) break; r1->f.active = active; if(r1->f.prog->as == AVARKILL && r1->f.prog->to.node == n) break; for(v=n->opt; v!=nil; v=v->nextinnode) { bn = v - var; r1->act.b[bn/32] |= 1L << (bn%32); } if(r1->f.prog->as == ACALL) break; } for(r2=r; r2!=r1; r2=(Reg*)r2->f.s1) if(r2->f.s2 != nil) walkvardef(n, (Reg*)r2->f.s2, active); } /* * add mov b,rn * just after r */ void addmove(Reg *r, int bn, int rn, int f) { Prog *p, *p1; Adr *a; Var *v; p1 = mal(sizeof(*p1)); clearp(p1); p1->pc = 9999; p = r->f.prog; p1->link = p->link; p->link = p1; p1->lineno = p->lineno; v = var + bn; a = &p1->to; a->offset = v->offset; a->etype = v->etype; a->type = v->name; a->node = v->node; a->sym = linksym(v->node->sym); // need to clean this up with wptr and // some of the defaults p1->as = AMOVL; switch(simtype[(uchar)v->etype]) { default: fatal("unknown type %E", v->etype); case TINT8: case TUINT8: case TBOOL: p1->as = AMOVB; break; case TINT16: case TUINT16: p1->as = AMOVW; break; case TINT64: case TUINT64: case TPTR64: p1->as = AMOVQ; break; case TFLOAT32: p1->as = AMOVSS; break; case TFLOAT64: p1->as = AMOVSD; break; case TINT32: case TUINT32: case TPTR32: break; } p1->from.type = rn; if(!f) { p1->from = *a; *a = zprog.from; a->type = rn; if(v->etype == TUINT8) p1->as = AMOVB; if(v->etype == TUINT16) p1->as = AMOVW; } if(debug['R'] && debug['v']) print("%P ===add=== %P\n", p, p1); ostats.nspill++; } uint32 doregbits(int r) { uint32 b; b = 0; if(r >= D_INDIR) r -= D_INDIR; if(r >= D_AX && r <= D_R15) b |= RtoB(r); else if(r >= D_AL && r <= D_R15B) b |= RtoB(r-D_AL+D_AX); else if(r >= D_AH && r <= D_BH) b |= RtoB(r-D_AH+D_AX); else if(r >= D_X0 && r <= D_X0+15) b |= FtoB(r); return b; } static int overlap(int64 o1, int w1, int64 o2, int w2) { int64 t1, t2; t1 = o1+w1; t2 = o2+w2; if(!(t1 > o2 && t2 > o1)) return 0; return 1; } Bits mkvar(Reg *r, Adr *a) { Var *v; int i, t, n, et, z, flag; int64 w; uint32 regu; int64 o; Bits bit; Node *node; /* * mark registers used */ t = a->type; if(t == D_NONE) goto none; if(r != R) r->use1.b[0] |= doregbits(a->index); switch(t) { default: regu = doregbits(t); if(regu == 0) goto none; bit = zbits; bit.b[0] = regu; return bit; case D_ADDR: a->type = a->index; bit = mkvar(r, a); setaddrs(bit); a->type = t; ostats.naddr++; goto none; case D_EXTERN: case D_STATIC: case D_PARAM: case D_AUTO: n = t; break; } node = a->node; if(node == N || node->op != ONAME || node->orig == N) goto none; node = node->orig; if(node->orig != node) fatal("%D: bad node", a); if(node->sym == S || node->sym->name[0] == '.') goto none; et = a->etype; o = a->offset; w = a->width; if(w < 0) fatal("bad width %lld for %D", w, a); flag = 0; for(i=0; inode == node && v->name == n) { if(v->offset == o) if(v->etype == et) if(v->width == w) return blsh(i); // if they overlaps, disable both if(overlap(v->offset, v->width, o, w)) { // print("disable overlap %s %d %d %d %d, %E != %E\n", s->name, v->offset, v->width, o, w, v->etype, et); v->addr = 1; flag = 1; } } } switch(et) { case 0: case TFUNC: goto none; } if(nvar >= NVAR) { if(debug['w'] > 1 && node != N) fatal("variable not optimized: %#N", node); // If we're not tracking a word in a variable, mark the rest as // having its address taken, so that we keep the whole thing // live at all calls. otherwise we might optimize away part of // a variable but not all of it. for(i=0; inode == node) v->addr = 1; } goto none; } i = nvar; nvar++; v = var+i; v->offset = o; v->name = n; v->etype = et; v->width = w; v->addr = flag; // funny punning v->node = node; // node->opt is the head of a linked list // of Vars within the given Node, so that // we can start at a Var and find all the other // Vars in the same Go variable. v->nextinnode = node->opt; node->opt = v; bit = blsh(i); if(n == D_EXTERN || n == D_STATIC) for(z=0; zclass == PPARAM) for(z=0; zclass == PPARAMOUT) for(z=0; zaddrtaken) v->addr = 1; // Disable registerization for globals, because: // (1) we might panic at any time and we want the recovery code // to see the latest values (issue 1304). // (2) we don't know what pointers might point at them and we want // loads via those pointers to see updated values and vice versa (issue 7995). // // Disable registerization for results if using defer, because the deferred func // might recover and return, causing the current values to be used. if(node->class == PEXTERN || (hasdefer && node->class == PPARAMOUT)) v->addr = 1; if(debug['R']) print("bit=%2d et=%2E w=%lld+%lld %#N %D flag=%d\n", i, et, o, w, node, a, v->addr); ostats.nvar++; return bit; none: return zbits; } void prop(Reg *r, Bits ref, Bits cal) { Reg *r1, *r2; int z, i, j; Var *v, *v1; for(r1 = r; r1 != R; r1 = (Reg*)r1->f.p1) { for(z=0; zrefahead.b[z]; if(ref.b[z] != r1->refahead.b[z]) { r1->refahead.b[z] = ref.b[z]; change++; } cal.b[z] |= r1->calahead.b[z]; if(cal.b[z] != r1->calahead.b[z]) { r1->calahead.b[z] = cal.b[z]; change++; } } switch(r1->f.prog->as) { case ACALL: if(noreturn(r1->f.prog)) break; // Mark all input variables (ivar) as used, because that's what the // liveness bitmaps say. The liveness bitmaps say that so that a // panic will not show stale values in the parameter dump. // Mark variables with a recent VARDEF (r1->act) as used, // so that the optimizer flushes initializations to memory, // so that if a garbage collection happens during this CALL, // the collector will see initialized memory. Again this is to // match what the liveness bitmaps say. for(z=0; zact.b[z]; ref.b[z] = 0; } // cal.b is the current approximation of what's live across the call. // Every bit in cal.b is a single stack word. For each such word, // find all the other tracked stack words in the same Go variable // (struct/slice/string/interface) and mark them live too. // This is necessary because the liveness analysis for the garbage // collector works at variable granularity, not at word granularity. // It is fundamental for slice/string/interface: the garbage collector // needs the whole value, not just some of the words, in order to // interpret the other bits correctly. Specifically, slice needs a consistent // ptr and cap, string needs a consistent ptr and len, and interface // needs a consistent type word and data word. for(z=0; z= nvar || ((cal.b[z]>>i)&1) == 0) continue; v = var+z*32+i; if(v->node->opt == nil) // v represents fixed register, not Go variable continue; // v->node->opt is the head of a linked list of Vars // corresponding to tracked words from the Go variable v->node. // Walk the list and set all the bits. // For a large struct this could end up being quadratic: // after the first setting, the outer loop (for z, i) would see a 1 bit // for all of the remaining words in the struct, and for each such // word would go through and turn on all the bits again. // To avoid the quadratic behavior, we only turn on the bits if // v is the head of the list or if the head's bit is not yet turned on. // This will set the bits at most twice, keeping the overall loop linear. v1 = v->node->opt; j = v1 - var; if(v == v1 || ((cal.b[j/32]>>(j&31))&1) == 0) { for(; v1 != nil; v1 = v1->nextinnode) { j = v1 - var; cal.b[j/32] |= 1<<(j&31); } } } } break; case ATEXT: for(z=0; zset.b[z]) | r1->use1.b[z] | r1->use2.b[z]; cal.b[z] &= ~(r1->set.b[z] | r1->use1.b[z] | r1->use2.b[z]); r1->refbehind.b[z] = ref.b[z]; r1->calbehind.b[z] = cal.b[z]; } if(r1->f.active) break; r1->f.active = 1; } for(; r != r1; r = (Reg*)r->f.p1) for(r2 = (Reg*)r->f.p2; r2 != R; r2 = (Reg*)r2->f.p2link) prop(r2, r->refbehind, r->calbehind); } void synch(Reg *r, Bits dif) { Reg *r1; int z; for(r1 = r; r1 != R; r1 = (Reg*)r1->f.s1) { for(z=0; zrefbehind.b[z] & r1->refahead.b[z])) | r1->set.b[z] | r1->regdiff.b[z]; if(dif.b[z] != r1->regdiff.b[z]) { r1->regdiff.b[z] = dif.b[z]; change++; } } if(r1->f.active) break; r1->f.active = 1; for(z=0; zcalbehind.b[z] & r1->calahead.b[z]); if(r1->f.s2 != nil) synch((Reg*)r1->f.s2, dif); } } uint32 allreg(uint32 b, Rgn *r) { Var *v; int i; v = var + r->varno; r->regno = 0; switch(v->etype) { default: fatal("unknown etype %d/%E", bitno(b), v->etype); break; case TINT8: case TUINT8: case TINT16: case TUINT16: case TINT32: case TUINT32: case TINT64: case TUINT64: case TINT: case TUINT: case TUINTPTR: case TBOOL: case TPTR32: case TPTR64: i = BtoR(~b); if(i && r->cost > 0) { r->regno = i; return RtoB(i); } break; case TFLOAT32: case TFLOAT64: i = BtoF(~b); if(i && r->cost > 0) { r->regno = i; return FtoB(i); } break; } return 0; } void paint1(Reg *r, int bn) { Reg *r1; int z; uint32 bb; z = bn/32; bb = 1L<<(bn%32); if(r->act.b[z] & bb) return; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = (Reg*)r->f.p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(r1->act.b[z] & bb) break; r = r1; } if(LOAD(r) & ~(r->set.b[z]&~(r->use1.b[z]|r->use2.b[z])) & bb) { change -= CLOAD * r->f.loop; } for(;;) { r->act.b[z] |= bb; if(r->f.prog->as != ANOP) { // don't give credit for NOPs if(r->use1.b[z] & bb) change += CREF * r->f.loop; if((r->use2.b[z]|r->set.b[z]) & bb) change += CREF * r->f.loop; } if(STORE(r) & r->regdiff.b[z] & bb) { change -= CLOAD * r->f.loop; } if(r->refbehind.b[z] & bb) for(r1 = (Reg*)r->f.p2; r1 != R; r1 = (Reg*)r1->f.p2link) if(r1->refahead.b[z] & bb) paint1(r1, bn); if(!(r->refahead.b[z] & bb)) break; r1 = (Reg*)r->f.s2; if(r1 != R) if(r1->refbehind.b[z] & bb) paint1(r1, bn); r = (Reg*)r->f.s1; if(r == R) break; if(r->act.b[z] & bb) break; if(!(r->refbehind.b[z] & bb)) break; } } uint32 regset(Reg *r, uint32 bb) { uint32 b, set; Adr v; int c; set = 0; v = zprog.from; while(b = bb & ~(bb-1)) { v.type = b & 0xFFFF? BtoR(b): BtoF(b); if(v.type == 0) fatal("zero v.type for %#ux", b); c = copyu(r->f.prog, &v, nil); if(c == 3) set |= b; bb &= ~b; } return set; } uint32 reguse(Reg *r, uint32 bb) { uint32 b, set; Adr v; int c; set = 0; v = zprog.from; while(b = bb & ~(bb-1)) { v.type = b & 0xFFFF? BtoR(b): BtoF(b); c = copyu(r->f.prog, &v, nil); if(c == 1 || c == 2 || c == 4) set |= b; bb &= ~b; } return set; } uint32 paint2(Reg *r, int bn) { Reg *r1; int z; uint32 bb, vreg, x; z = bn/32; bb = 1L << (bn%32); vreg = regbits; if(!(r->act.b[z] & bb)) return vreg; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = (Reg*)r->f.p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(!(r1->act.b[z] & bb)) break; r = r1; } for(;;) { r->act.b[z] &= ~bb; vreg |= r->regu; if(r->refbehind.b[z] & bb) for(r1 = (Reg*)r->f.p2; r1 != R; r1 = (Reg*)r1->f.p2link) if(r1->refahead.b[z] & bb) vreg |= paint2(r1, bn); if(!(r->refahead.b[z] & bb)) break; r1 = (Reg*)r->f.s2; if(r1 != R) if(r1->refbehind.b[z] & bb) vreg |= paint2(r1, bn); r = (Reg*)r->f.s1; if(r == R) break; if(!(r->act.b[z] & bb)) break; if(!(r->refbehind.b[z] & bb)) break; } bb = vreg; for(; r; r=(Reg*)r->f.s1) { x = r->regu & ~bb; if(x) { vreg |= reguse(r, x); bb |= regset(r, x); } } return vreg; } void paint3(Reg *r, int bn, int32 rb, int rn) { Reg *r1; Prog *p; int z; uint32 bb; z = bn/32; bb = 1L << (bn%32); if(r->act.b[z] & bb) return; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = (Reg*)r->f.p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(r1->act.b[z] & bb) break; r = r1; } if(LOAD(r) & ~(r->set.b[z] & ~(r->use1.b[z]|r->use2.b[z])) & bb) addmove(r, bn, rn, 0); for(;;) { r->act.b[z] |= bb; p = r->f.prog; if(r->use1.b[z] & bb) { if(debug['R'] && debug['v']) print("%P", p); addreg(&p->from, rn); if(debug['R'] && debug['v']) print(" ===change== %P\n", p); } if((r->use2.b[z]|r->set.b[z]) & bb) { if(debug['R'] && debug['v']) print("%P", p); addreg(&p->to, rn); if(debug['R'] && debug['v']) print(" ===change== %P\n", p); } if(STORE(r) & r->regdiff.b[z] & bb) addmove(r, bn, rn, 1); r->regu |= rb; if(r->refbehind.b[z] & bb) for(r1 = (Reg*)r->f.p2; r1 != R; r1 = (Reg*)r1->f.p2link) if(r1->refahead.b[z] & bb) paint3(r1, bn, rb, rn); if(!(r->refahead.b[z] & bb)) break; r1 = (Reg*)r->f.s2; if(r1 != R) if(r1->refbehind.b[z] & bb) paint3(r1, bn, rb, rn); r = (Reg*)r->f.s1; if(r == R) break; if(r->act.b[z] & bb) break; if(!(r->refbehind.b[z] & bb)) break; } } void addreg(Adr *a, int rn) { a->sym = nil; a->offset = 0; a->type = rn; ostats.ncvtreg++; } int32 RtoB(int r) { if(r < D_AX || r > D_R15) return 0; return 1L << (r-D_AX); } int BtoR(int32 b) { b &= 0xffffL; if(nacl) b &= ~((1<<(D_BP-D_AX)) | (1<<(D_R15-D_AX))); if(b == 0) return 0; return bitno(b) + D_AX; } /* * bit reg * 16 X0 * ... * 31 X15 */ int32 FtoB(int f) { if(f < D_X0 || f > D_X15) return 0; return 1L << (f - D_X0 + 16); } int BtoF(int32 b) { b &= 0xFFFF0000L; if(b == 0) return 0; return bitno(b) - 16 + D_X0; } void dumpone(Flow *f, int isreg) { int z; Bits bit; Reg *r; print("%d:%P", f->loop, f->prog); if(isreg) { r = (Reg*)f; for(z=0; zset.b[z] | r->use1.b[z] | r->use2.b[z] | r->refbehind.b[z] | r->refahead.b[z] | r->calbehind.b[z] | r->calahead.b[z] | r->regdiff.b[z] | r->act.b[z] | 0; if(bany(&bit)) { print("\t"); if(bany(&r->set)) print(" s:%Q", r->set); if(bany(&r->use1)) print(" u1:%Q", r->use1); if(bany(&r->use2)) print(" u2:%Q", r->use2); if(bany(&r->refbehind)) print(" rb:%Q ", r->refbehind); if(bany(&r->refahead)) print(" ra:%Q ", r->refahead); if(bany(&r->calbehind)) print(" cb:%Q ", r->calbehind); if(bany(&r->calahead)) print(" ca:%Q ", r->calahead); if(bany(&r->regdiff)) print(" d:%Q ", r->regdiff); if(bany(&r->act)) print(" a:%Q ", r->act); } } print("\n"); } void dumpit(char *str, Flow *r0, int isreg) { Flow *r, *r1; print("\n%s\n", str); for(r = r0; r != nil; r = r->link) { dumpone(r, isreg); r1 = r->p2; if(r1 != nil) { print(" pred:"); for(; r1 != nil; r1 = r1->p2link) print(" %.4ud", (int)r1->prog->pc); print("\n"); } // r1 = r->s1; // if(r1 != R) { // print(" succ:"); // for(; r1 != R; r1 = r1->s1) // print(" %.4ud", (int)r1->prog->pc); // print("\n"); // } } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6l���������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013276� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6l/6.out.h�������������������������������������������������������������������������������0100644�0000000�0000000�00000023336�12412656737�014505� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6c/6.out.h // http://code.google.com/p/inferno-os/source/browse/utils/6c/6.out.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #define NSYM 50 #define NSNAME 8 #include "../ld/textflag.h" /* * amd64 */ enum as { AXXX, AAAA, AAAD, AAAM, AAAS, AADCB, AADCL, AADCW, AADDB, AADDL, AADDW, AADJSP, AANDB, AANDL, AANDW, AARPL, ABOUNDL, ABOUNDW, ABSFL, ABSFW, ABSRL, ABSRW, ABTL, ABTW, ABTCL, ABTCW, ABTRL, ABTRW, ABTSL, ABTSW, ABYTE, ACALL, ACLC, ACLD, ACLI, ACLTS, ACMC, ACMPB, ACMPL, ACMPW, ACMPSB, ACMPSL, ACMPSW, ADAA, ADAS, ADATA, ADECB, ADECL, ADECQ, ADECW, ADIVB, ADIVL, ADIVW, AENTER, AGLOBL, AGOK, AHISTORY, AHLT, AIDIVB, AIDIVL, AIDIVW, AIMULB, AIMULL, AIMULW, AINB, AINL, AINW, AINCB, AINCL, AINCQ, AINCW, AINSB, AINSL, AINSW, AINT, AINTO, AIRETL, AIRETW, AJCC, AJCS, AJCXZL, AJEQ, AJGE, AJGT, AJHI, AJLE, AJLS, AJLT, AJMI, AJMP, AJNE, AJOC, AJOS, AJPC, AJPL, AJPS, ALAHF, ALARL, ALARW, ALEAL, ALEAW, ALEAVEL, ALEAVEW, ALOCK, ALODSB, ALODSL, ALODSW, ALONG, ALOOP, ALOOPEQ, ALOOPNE, ALSLL, ALSLW, AMOVB, AMOVL, AMOVW, AMOVBLSX, AMOVBLZX, AMOVBQSX, AMOVBQZX, AMOVBWSX, AMOVBWZX, AMOVWLSX, AMOVWLZX, AMOVWQSX, AMOVWQZX, AMOVSB, AMOVSL, AMOVSW, AMULB, AMULL, AMULW, ANAME, ANEGB, ANEGL, ANEGW, ANOP, ANOTB, ANOTL, ANOTW, AORB, AORL, AORW, AOUTB, AOUTL, AOUTW, AOUTSB, AOUTSL, AOUTSW, APAUSE, APOPAL, APOPAW, APOPFL, APOPFW, APOPL, APOPW, APUSHAL, APUSHAW, APUSHFL, APUSHFW, APUSHL, APUSHW, ARCLB, ARCLL, ARCLW, ARCRB, ARCRL, ARCRW, AREP, AREPN, ARET, AROLB, AROLL, AROLW, ARORB, ARORL, ARORW, ASAHF, ASALB, ASALL, ASALW, ASARB, ASARL, ASARW, ASBBB, ASBBL, ASBBW, ASCASB, ASCASL, ASCASW, ASETCC, ASETCS, ASETEQ, ASETGE, ASETGT, ASETHI, ASETLE, ASETLS, ASETLT, ASETMI, ASETNE, ASETOC, ASETOS, ASETPC, ASETPL, ASETPS, ACDQ, ACWD, ASHLB, ASHLL, ASHLW, ASHRB, ASHRL, ASHRW, ASTC, ASTD, ASTI, ASTOSB, ASTOSL, ASTOSW, ASUBB, ASUBL, ASUBW, ASYSCALL, ATESTB, ATESTL, ATESTW, ATEXT, AVERR, AVERW, AWAIT, AWORD, AXCHGB, AXCHGL, AXCHGW, AXLAT, AXORB, AXORL, AXORW, AFMOVB, AFMOVBP, AFMOVD, AFMOVDP, AFMOVF, AFMOVFP, AFMOVL, AFMOVLP, AFMOVV, AFMOVVP, AFMOVW, AFMOVWP, AFMOVX, AFMOVXP, AFCOMB, AFCOMBP, AFCOMD, AFCOMDP, AFCOMDPP, AFCOMF, AFCOMFP, AFCOML, AFCOMLP, AFCOMW, AFCOMWP, AFUCOM, AFUCOMP, AFUCOMPP, AFADDDP, AFADDW, AFADDL, AFADDF, AFADDD, AFMULDP, AFMULW, AFMULL, AFMULF, AFMULD, AFSUBDP, AFSUBW, AFSUBL, AFSUBF, AFSUBD, AFSUBRDP, AFSUBRW, AFSUBRL, AFSUBRF, AFSUBRD, AFDIVDP, AFDIVW, AFDIVL, AFDIVF, AFDIVD, AFDIVRDP, AFDIVRW, AFDIVRL, AFDIVRF, AFDIVRD, AFXCHD, AFFREE, AFLDCW, AFLDENV, AFRSTOR, AFSAVE, AFSTCW, AFSTENV, AFSTSW, AF2XM1, AFABS, AFCHS, AFCLEX, AFCOS, AFDECSTP, AFINCSTP, AFINIT, AFLD1, AFLDL2E, AFLDL2T, AFLDLG2, AFLDLN2, AFLDPI, AFLDZ, AFNOP, AFPATAN, AFPREM, AFPREM1, AFPTAN, AFRNDINT, AFSCALE, AFSIN, AFSINCOS, AFSQRT, AFTST, AFXAM, AFXTRACT, AFYL2X, AFYL2XP1, AEND, ADYNT_, AINIT_, ASIGNAME, /* extra 32-bit operations */ ACMPXCHGB, ACMPXCHGL, ACMPXCHGW, ACMPXCHG8B, ACPUID, AINVD, AINVLPG, ALFENCE, AMFENCE, AMOVNTIL, ARDMSR, ARDPMC, ARDTSC, ARSM, ASFENCE, ASYSRET, AWBINVD, AWRMSR, AXADDB, AXADDL, AXADDW, /* conditional move */ ACMOVLCC, ACMOVLCS, ACMOVLEQ, ACMOVLGE, ACMOVLGT, ACMOVLHI, ACMOVLLE, ACMOVLLS, ACMOVLLT, ACMOVLMI, ACMOVLNE, ACMOVLOC, ACMOVLOS, ACMOVLPC, ACMOVLPL, ACMOVLPS, ACMOVQCC, ACMOVQCS, ACMOVQEQ, ACMOVQGE, ACMOVQGT, ACMOVQHI, ACMOVQLE, ACMOVQLS, ACMOVQLT, ACMOVQMI, ACMOVQNE, ACMOVQOC, ACMOVQOS, ACMOVQPC, ACMOVQPL, ACMOVQPS, ACMOVWCC, ACMOVWCS, ACMOVWEQ, ACMOVWGE, ACMOVWGT, ACMOVWHI, ACMOVWLE, ACMOVWLS, ACMOVWLT, ACMOVWMI, ACMOVWNE, ACMOVWOC, ACMOVWOS, ACMOVWPC, ACMOVWPL, ACMOVWPS, /* 64-bit */ AADCQ, AADDQ, AANDQ, ABSFQ, ABSRQ, ABTCQ, ABTQ, ABTRQ, ABTSQ, ACMPQ, ACMPSQ, ACMPXCHGQ, ACQO, ADIVQ, AIDIVQ, AIMULQ, AIRETQ, AJCXZQ, ALEAQ, ALEAVEQ, ALODSQ, AMOVQ, AMOVLQSX, AMOVLQZX, AMOVNTIQ, AMOVSQ, AMULQ, ANEGQ, ANOTQ, AORQ, APOPFQ, APOPQ, APUSHFQ, APUSHQ, ARCLQ, ARCRQ, AROLQ, ARORQ, AQUAD, ASALQ, ASARQ, ASBBQ, ASCASQ, ASHLQ, ASHRQ, ASTOSQ, ASUBQ, ATESTQ, AXADDQ, AXCHGQ, AXORQ, /* media */ AADDPD, AADDPS, AADDSD, AADDSS, AANDNPD, AANDNPS, AANDPD, AANDPS, ACMPPD, ACMPPS, ACMPSD, ACMPSS, ACOMISD, ACOMISS, ACVTPD2PL, ACVTPD2PS, ACVTPL2PD, ACVTPL2PS, ACVTPS2PD, ACVTPS2PL, ACVTSD2SL, ACVTSD2SQ, ACVTSD2SS, ACVTSL2SD, ACVTSL2SS, ACVTSQ2SD, ACVTSQ2SS, ACVTSS2SD, ACVTSS2SL, ACVTSS2SQ, ACVTTPD2PL, ACVTTPS2PL, ACVTTSD2SL, ACVTTSD2SQ, ACVTTSS2SL, ACVTTSS2SQ, ADIVPD, ADIVPS, ADIVSD, ADIVSS, AEMMS, AFXRSTOR, AFXRSTOR64, AFXSAVE, AFXSAVE64, ALDMXCSR, AMASKMOVOU, AMASKMOVQ, AMAXPD, AMAXPS, AMAXSD, AMAXSS, AMINPD, AMINPS, AMINSD, AMINSS, AMOVAPD, AMOVAPS, AMOVOU, AMOVHLPS, AMOVHPD, AMOVHPS, AMOVLHPS, AMOVLPD, AMOVLPS, AMOVMSKPD, AMOVMSKPS, AMOVNTO, AMOVNTPD, AMOVNTPS, AMOVNTQ, AMOVO, AMOVQOZX, AMOVSD, AMOVSS, AMOVUPD, AMOVUPS, AMULPD, AMULPS, AMULSD, AMULSS, AORPD, AORPS, APACKSSLW, APACKSSWB, APACKUSWB, APADDB, APADDL, APADDQ, APADDSB, APADDSW, APADDUSB, APADDUSW, APADDW, APANDB, APANDL, APANDSB, APANDSW, APANDUSB, APANDUSW, APANDW, APAND, APANDN, APAVGB, APAVGW, APCMPEQB, APCMPEQL, APCMPEQW, APCMPGTB, APCMPGTL, APCMPGTW, APEXTRW, APFACC, APFADD, APFCMPEQ, APFCMPGE, APFCMPGT, APFMAX, APFMIN, APFMUL, APFNACC, APFPNACC, APFRCP, APFRCPIT1, APFRCPI2T, APFRSQIT1, APFRSQRT, APFSUB, APFSUBR, APINSRW, APINSRD, APINSRQ, APMADDWL, APMAXSW, APMAXUB, APMINSW, APMINUB, APMOVMSKB, APMULHRW, APMULHUW, APMULHW, APMULLW, APMULULQ, APOR, APSADBW, APSHUFHW, APSHUFL, APSHUFLW, APSHUFW, APSHUFB, APSLLO, APSLLL, APSLLQ, APSLLW, APSRAL, APSRAW, APSRLO, APSRLL, APSRLQ, APSRLW, APSUBB, APSUBL, APSUBQ, APSUBSB, APSUBSW, APSUBUSB, APSUBUSW, APSUBW, APSWAPL, APUNPCKHBW, APUNPCKHLQ, APUNPCKHQDQ, APUNPCKHWL, APUNPCKLBW, APUNPCKLLQ, APUNPCKLQDQ, APUNPCKLWL, APXOR, ARCPPS, ARCPSS, ARSQRTPS, ARSQRTSS, ASHUFPD, ASHUFPS, ASQRTPD, ASQRTPS, ASQRTSD, ASQRTSS, ASTMXCSR, ASUBPD, ASUBPS, ASUBSD, ASUBSS, AUCOMISD, AUCOMISS, AUNPCKHPD, AUNPCKHPS, AUNPCKLPD, AUNPCKLPS, AXORPD, AXORPS, APF2IW, APF2IL, API2FW, API2FL, ARETFW, ARETFL, ARETFQ, ASWAPGS, AMODE, ACRC32B, ACRC32Q, AIMUL3Q, APREFETCHT0, APREFETCHT1, APREFETCHT2, APREFETCHNTA, AMOVQL, ABSWAPL, ABSWAPQ, AUNDEF, AAESENC, AAESENCLAST, AAESDEC, AAESDECLAST, AAESIMC, AAESKEYGENASSIST, APSHUFD, APCLMULQDQ, AUSEFIELD, ATYPE, AFUNCDATA, APCDATA, ACHECKNIL, AVARDEF, AVARKILL, ADUFFCOPY, ADUFFZERO, ALAST }; enum { D_AL = 0, D_CL, D_DL, D_BL, D_SPB, D_BPB, D_SIB, D_DIB, D_R8B, D_R9B, D_R10B, D_R11B, D_R12B, D_R13B, D_R14B, D_R15B, D_AX = 16, D_CX, D_DX, D_BX, D_SP, D_BP, D_SI, D_DI, D_R8, D_R9, D_R10, D_R11, D_R12, D_R13, D_R14, D_R15, D_AH = 32, D_CH, D_DH, D_BH, D_F0 = 36, D_M0 = 44, D_X0 = 52, D_X1, D_X2, D_X3, D_X4, D_X5, D_X6, D_X7, D_X8, D_X9, D_X10, D_X11, D_X12, D_X13, D_X14, D_X15, D_CS = 68, D_SS, D_DS, D_ES, D_FS, D_GS, D_GDTR, /* global descriptor table register */ D_IDTR, /* interrupt descriptor table register */ D_LDTR, /* local descriptor table register */ D_MSW, /* machine status word */ D_TASK, /* task register */ D_CR = 79, D_DR = 95, D_TR = 103, D_TLS = 111, D_NONE = 112, D_BRANCH = 113, D_EXTERN = 114, D_STATIC = 115, D_AUTO = 116, D_PARAM = 117, D_CONST = 118, D_FCONST = 119, D_SCONST = 120, D_ADDR = 121, D_INDIR, /* additive */ T_TYPE = 1<<0, T_INDEX = 1<<1, T_OFFSET = 1<<2, T_FCONST = 1<<3, T_SYM = 1<<4, T_SCONST = 1<<5, T_64 = 1<<6, T_GOTYPE = 1<<7, REGARG = -1, REGRET = D_AX, FREGRET = D_X0, REGSP = D_SP, REGTMP = D_DI, REGEXT = D_R15, /* compiler allocates external registers R15 down */ FREGMIN = D_X0+5, /* first register variable */ FREGEXT = D_X0+15 /* first external register */ }; /* * this is the ranlib header */ #define SYMDEF "__.GOSYMDEF" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6l/Makefile������������������������������������������������������������������������������0100644�0000000�0000000�00000000265�12412656734�015012� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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. include ../../Make.dist �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6l/asm.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000043446�12412656737�014311� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6l/asm.c // http://code.google.com/p/inferno-os/source/browse/utils/6l/asm.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Writing object files. #include "l.h" #include "../ld/lib.h" #include "../ld/elf.h" #include "../ld/dwarf.h" #include "../ld/macho.h" #include "../ld/pe.h" #define PADDR(a) ((uint32)(a) & ~0x80000000) char linuxdynld[] = "/lib64/ld-linux-x86-64.so.2"; char freebsddynld[] = "/libexec/ld-elf.so.1"; char openbsddynld[] = "/usr/libexec/ld.so"; char netbsddynld[] = "/libexec/ld.elf_so"; char dragonflydynld[] = "/usr/libexec/ld-elf.so.2"; char solarisdynld[] = "/lib/amd64/ld.so.1"; char zeroes[32]; static int needlib(char *name) { char *p; LSym *s; if(*name == '\0') return 0; /* reuse hash code in symbol table */ p = smprint(".elfload.%s", name); s = linklookup(ctxt, p, 0); free(p); if(s->type == 0) { s->type = 100; // avoid SDATA, etc. return 1; } return 0; } int nelfsym = 1; static void addpltsym(LSym*); static void addgotsym(LSym*); void adddynrela(LSym *rela, LSym *s, Reloc *r) { addaddrplus(ctxt, rela, s, r->off); adduint64(ctxt, rela, R_X86_64_RELATIVE); addaddrplus(ctxt, rela, r->sym, r->add); // Addend } void adddynrel(LSym *s, Reloc *r) { LSym *targ, *rela, *got; targ = r->sym; ctxt->cursym = s; switch(r->type) { default: if(r->type >= 256) { diag("unexpected relocation type %d", r->type); return; } break; // Handle relocations found in ELF object files. case 256 + R_X86_64_PC32: if(targ->type == SDYNIMPORT) diag("unexpected R_X86_64_PC32 relocation for dynamic symbol %s", targ->name); if(targ->type == 0 || targ->type == SXREF) diag("unknown symbol %s in pcrel", targ->name); r->type = R_PCREL; r->add += 4; return; case 256 + R_X86_64_PLT32: r->type = R_PCREL; r->add += 4; if(targ->type == SDYNIMPORT) { addpltsym(targ); r->sym = linklookup(ctxt, ".plt", 0); r->add += targ->plt; } return; case 256 + R_X86_64_GOTPCREL: if(targ->type != SDYNIMPORT) { // have symbol if(r->off >= 2 && s->p[r->off-2] == 0x8b) { // turn MOVQ of GOT entry into LEAQ of symbol itself s->p[r->off-2] = 0x8d; r->type = R_PCREL; r->add += 4; return; } // fall back to using GOT and hope for the best (CMOV*) // TODO: just needs relocation, no need to put in .dynsym } addgotsym(targ); r->type = R_PCREL; r->sym = linklookup(ctxt, ".got", 0); r->add += 4; r->add += targ->got; return; case 256 + R_X86_64_64: if(targ->type == SDYNIMPORT) diag("unexpected R_X86_64_64 relocation for dynamic symbol %s", targ->name); r->type = R_ADDR; return; // Handle relocations found in Mach-O object files. case 512 + MACHO_X86_64_RELOC_UNSIGNED*2 + 0: case 512 + MACHO_X86_64_RELOC_SIGNED*2 + 0: case 512 + MACHO_X86_64_RELOC_BRANCH*2 + 0: // TODO: What is the difference between all these? r->type = R_ADDR; if(targ->type == SDYNIMPORT) diag("unexpected reloc for dynamic symbol %s", targ->name); return; case 512 + MACHO_X86_64_RELOC_BRANCH*2 + 1: if(targ->type == SDYNIMPORT) { addpltsym(targ); r->sym = linklookup(ctxt, ".plt", 0); r->add = targ->plt; r->type = R_PCREL; return; } // fall through case 512 + MACHO_X86_64_RELOC_UNSIGNED*2 + 1: case 512 + MACHO_X86_64_RELOC_SIGNED*2 + 1: case 512 + MACHO_X86_64_RELOC_SIGNED_1*2 + 1: case 512 + MACHO_X86_64_RELOC_SIGNED_2*2 + 1: case 512 + MACHO_X86_64_RELOC_SIGNED_4*2 + 1: r->type = R_PCREL; if(targ->type == SDYNIMPORT) diag("unexpected pc-relative reloc for dynamic symbol %s", targ->name); return; case 512 + MACHO_X86_64_RELOC_GOT_LOAD*2 + 1: if(targ->type != SDYNIMPORT) { // have symbol // turn MOVQ of GOT entry into LEAQ of symbol itself if(r->off < 2 || s->p[r->off-2] != 0x8b) { diag("unexpected GOT_LOAD reloc for non-dynamic symbol %s", targ->name); return; } s->p[r->off-2] = 0x8d; r->type = R_PCREL; return; } // fall through case 512 + MACHO_X86_64_RELOC_GOT*2 + 1: if(targ->type != SDYNIMPORT) diag("unexpected GOT reloc for non-dynamic symbol %s", targ->name); addgotsym(targ); r->type = R_PCREL; r->sym = linklookup(ctxt, ".got", 0); r->add += targ->got; return; } // Handle references to ELF symbols from our own object files. if(targ->type != SDYNIMPORT) return; switch(r->type) { case R_CALL: case R_PCREL: addpltsym(targ); r->sym = linklookup(ctxt, ".plt", 0); r->add = targ->plt; return; case R_ADDR: if(s->type == STEXT && iself) { // The code is asking for the address of an external // function. We provide it with the address of the // correspondent GOT symbol. addgotsym(targ); r->sym = linklookup(ctxt, ".got", 0); r->add += targ->got; return; } if(s->type != SDATA) break; if(iself) { adddynsym(ctxt, targ); rela = linklookup(ctxt, ".rela", 0); addaddrplus(ctxt, rela, s, r->off); if(r->siz == 8) adduint64(ctxt, rela, ELF64_R_INFO(targ->dynid, R_X86_64_64)); else adduint64(ctxt, rela, ELF64_R_INFO(targ->dynid, R_X86_64_32)); adduint64(ctxt, rela, r->add); r->type = 256; // ignore during relocsym return; } if(HEADTYPE == Hdarwin && s->size == PtrSize && r->off == 0) { // Mach-O relocations are a royal pain to lay out. // They use a compact stateful bytecode representation // that is too much bother to deal with. // Instead, interpret the C declaration // void *_Cvar_stderr = &stderr; // as making _Cvar_stderr the name of a GOT entry // for stderr. This is separate from the usual GOT entry, // just in case the C code assigns to the variable, // and of course it only works for single pointers, // but we only need to support cgo and that's all it needs. adddynsym(ctxt, targ); got = linklookup(ctxt, ".got", 0); s->type = got->type | SSUB; s->outer = got; s->sub = got->sub; got->sub = s; s->value = got->size; adduint64(ctxt, got, 0); adduint32(ctxt, linklookup(ctxt, ".linkedit.got", 0), targ->dynid); r->type = 256; // ignore during relocsym return; } break; } ctxt->cursym = s; diag("unsupported relocation for dynamic symbol %s (type=%d stype=%d)", targ->name, r->type, targ->type); } int elfreloc1(Reloc *r, vlong sectoff) { int32 elfsym; VPUT(sectoff); elfsym = r->xsym->elfsym; switch(r->type) { default: return -1; case R_ADDR: if(r->siz == 4) VPUT(R_X86_64_32 | (uint64)elfsym<<32); else if(r->siz == 8) VPUT(R_X86_64_64 | (uint64)elfsym<<32); else return -1; break; case R_TLS_LE: if(r->siz == 4) VPUT(R_X86_64_TPOFF32 | (uint64)elfsym<<32); else return -1; break; case R_CALL: case R_PCREL: if(r->siz == 4) { if(r->xsym->type == SDYNIMPORT) VPUT(R_X86_64_GOTPCREL | (uint64)elfsym<<32); else VPUT(R_X86_64_PC32 | (uint64)elfsym<<32); } else return -1; break; case R_TLS: if(r->siz == 4) { if(flag_shared) VPUT(R_X86_64_GOTTPOFF | (uint64)elfsym<<32); else VPUT(R_X86_64_TPOFF32 | (uint64)elfsym<<32); } else return -1; break; } VPUT(r->xadd); return 0; } int machoreloc1(Reloc *r, vlong sectoff) { uint32 v; LSym *rs; rs = r->xsym; if(rs->type == SHOSTOBJ) { if(rs->dynid < 0) { diag("reloc %d to non-macho symbol %s type=%d", r->type, rs->name, rs->type); return -1; } v = rs->dynid; v |= 1<<27; // external relocation } else { v = rs->sect->extnum; if(v == 0) { diag("reloc %d to symbol %s in non-macho section %s type=%d", r->type, rs->name, rs->sect->name, rs->type); return -1; } } switch(r->type) { default: return -1; case R_ADDR: v |= MACHO_X86_64_RELOC_UNSIGNED<<28; break; case R_CALL: case R_PCREL: v |= 1<<24; // pc-relative bit v |= MACHO_X86_64_RELOC_BRANCH<<28; break; } switch(r->siz) { default: return -1; case 1: v |= 0<<25; break; case 2: v |= 1<<25; break; case 4: v |= 2<<25; break; case 8: v |= 3<<25; break; } LPUT(sectoff); LPUT(v); return 0; } int archreloc(Reloc *r, LSym *s, vlong *val) { USED(r); USED(s); USED(val); return -1; } void elfsetupplt(void) { LSym *plt, *got; plt = linklookup(ctxt, ".plt", 0); got = linklookup(ctxt, ".got.plt", 0); if(plt->size == 0) { // pushq got+8(IP) adduint8(ctxt, plt, 0xff); adduint8(ctxt, plt, 0x35); addpcrelplus(ctxt, plt, got, 8); // jmpq got+16(IP) adduint8(ctxt, plt, 0xff); adduint8(ctxt, plt, 0x25); addpcrelplus(ctxt, plt, got, 16); // nopl 0(AX) adduint32(ctxt, plt, 0x00401f0f); // assume got->size == 0 too addaddrplus(ctxt, got, linklookup(ctxt, ".dynamic", 0), 0); adduint64(ctxt, got, 0); adduint64(ctxt, got, 0); } } static void addpltsym(LSym *s) { if(s->plt >= 0) return; adddynsym(ctxt, s); if(iself) { LSym *plt, *got, *rela; plt = linklookup(ctxt, ".plt", 0); got = linklookup(ctxt, ".got.plt", 0); rela = linklookup(ctxt, ".rela.plt", 0); if(plt->size == 0) elfsetupplt(); // jmpq *got+size(IP) adduint8(ctxt, plt, 0xff); adduint8(ctxt, plt, 0x25); addpcrelplus(ctxt, plt, got, got->size); // add to got: pointer to current pos in plt addaddrplus(ctxt, got, plt, plt->size); // pushq $x adduint8(ctxt, plt, 0x68); adduint32(ctxt, plt, (got->size-24-8)/8); // jmpq .plt adduint8(ctxt, plt, 0xe9); adduint32(ctxt, plt, -(plt->size+4)); // rela addaddrplus(ctxt, rela, got, got->size-8); adduint64(ctxt, rela, ELF64_R_INFO(s->dynid, R_X86_64_JMP_SLOT)); adduint64(ctxt, rela, 0); s->plt = plt->size - 16; } else if(HEADTYPE == Hdarwin) { // To do lazy symbol lookup right, we're supposed // to tell the dynamic loader which library each // symbol comes from and format the link info // section just so. I'm too lazy (ha!) to do that // so for now we'll just use non-lazy pointers, // which don't need to be told which library to use. // // http://networkpx.blogspot.com/2009/09/about-lcdyldinfoonly-command.html // has details about what we're avoiding. LSym *plt; addgotsym(s); plt = linklookup(ctxt, ".plt", 0); adduint32(ctxt, linklookup(ctxt, ".linkedit.plt", 0), s->dynid); // jmpq *got+size(IP) s->plt = plt->size; adduint8(ctxt, plt, 0xff); adduint8(ctxt, plt, 0x25); addpcrelplus(ctxt, plt, linklookup(ctxt, ".got", 0), s->got); } else { diag("addpltsym: unsupported binary format"); } } static void addgotsym(LSym *s) { LSym *got, *rela; if(s->got >= 0) return; adddynsym(ctxt, s); got = linklookup(ctxt, ".got", 0); s->got = got->size; adduint64(ctxt, got, 0); if(iself) { rela = linklookup(ctxt, ".rela", 0); addaddrplus(ctxt, rela, got, s->got); adduint64(ctxt, rela, ELF64_R_INFO(s->dynid, R_X86_64_GLOB_DAT)); adduint64(ctxt, rela, 0); } else if(HEADTYPE == Hdarwin) { adduint32(ctxt, linklookup(ctxt, ".linkedit.got", 0), s->dynid); } else { diag("addgotsym: unsupported binary format"); } } void adddynsym(Link *ctxt, LSym *s) { LSym *d; int t; char *name; if(s->dynid >= 0) return; if(iself) { s->dynid = nelfsym++; d = linklookup(ctxt, ".dynsym", 0); name = s->extname; adduint32(ctxt, d, addstring(linklookup(ctxt, ".dynstr", 0), name)); /* type */ t = STB_GLOBAL << 4; if(s->cgoexport && (s->type&SMASK) == STEXT) t |= STT_FUNC; else t |= STT_OBJECT; adduint8(ctxt, d, t); /* reserved */ adduint8(ctxt, d, 0); /* section where symbol is defined */ if(s->type == SDYNIMPORT) adduint16(ctxt, d, SHN_UNDEF); else { switch(s->type) { default: case STEXT: t = 11; break; case SRODATA: t = 12; break; case SDATA: t = 13; break; case SBSS: t = 14; break; } adduint16(ctxt, d, t); } /* value */ if(s->type == SDYNIMPORT) adduint64(ctxt, d, 0); else addaddr(ctxt, d, s); /* size of object */ adduint64(ctxt, d, s->size); if(!(s->cgoexport & CgoExportDynamic) && s->dynimplib && needlib(s->dynimplib)) { elfwritedynent(linklookup(ctxt, ".dynamic", 0), DT_NEEDED, addstring(linklookup(ctxt, ".dynstr", 0), s->dynimplib)); } } else if(HEADTYPE == Hdarwin) { diag("adddynsym: missed symbol %s (%s)", s->name, s->extname); } else if(HEADTYPE == Hwindows) { // already taken care of } else { diag("adddynsym: unsupported binary format"); } } void adddynlib(char *lib) { LSym *s; if(!needlib(lib)) return; if(iself) { s = linklookup(ctxt, ".dynstr", 0); if(s->size == 0) addstring(s, ""); elfwritedynent(linklookup(ctxt, ".dynamic", 0), DT_NEEDED, addstring(s, lib)); } else if(HEADTYPE == Hdarwin) { machoadddynlib(lib); } else { diag("adddynlib: unsupported binary format"); } } void asmb(void) { int32 magic; int i; vlong vl, symo, dwarfoff, machlink; Section *sect; LSym *sym; if(debug['v']) Bprint(&bso, "%5.2f asmb\n", cputime()); Bflush(&bso); if(debug['v']) Bprint(&bso, "%5.2f codeblk\n", cputime()); Bflush(&bso); if(iself) asmbelfsetup(); sect = segtext.sect; cseek(sect->vaddr - segtext.vaddr + segtext.fileoff); codeblk(sect->vaddr, sect->len); for(sect = sect->next; sect != nil; sect = sect->next) { cseek(sect->vaddr - segtext.vaddr + segtext.fileoff); datblk(sect->vaddr, sect->len); } if(segrodata.filelen > 0) { if(debug['v']) Bprint(&bso, "%5.2f rodatblk\n", cputime()); Bflush(&bso); cseek(segrodata.fileoff); datblk(segrodata.vaddr, segrodata.filelen); } if(debug['v']) Bprint(&bso, "%5.2f datblk\n", cputime()); Bflush(&bso); cseek(segdata.fileoff); datblk(segdata.vaddr, segdata.filelen); machlink = 0; if(HEADTYPE == Hdarwin) { if(debug['v']) Bprint(&bso, "%5.2f dwarf\n", cputime()); dwarfoff = rnd(HEADR+segtext.len, INITRND) + rnd(segdata.filelen, INITRND); cseek(dwarfoff); segdwarf.fileoff = cpos(); dwarfemitdebugsections(); segdwarf.filelen = cpos() - segdwarf.fileoff; machlink = domacholink(); } switch(HEADTYPE) { default: diag("unknown header type %d", HEADTYPE); case Hplan9: case Helf: break; case Hdarwin: debug['8'] = 1; /* 64-bit addresses */ break; case Hlinux: case Hfreebsd: case Hnetbsd: case Hopenbsd: case Hdragonfly: case Hsolaris: debug['8'] = 1; /* 64-bit addresses */ break; case Hnacl: case Hwindows: break; } symsize = 0; spsize = 0; lcsize = 0; symo = 0; if(!debug['s']) { if(debug['v']) Bprint(&bso, "%5.2f sym\n", cputime()); Bflush(&bso); switch(HEADTYPE) { default: case Hplan9: case Helf: debug['s'] = 1; symo = segdata.fileoff+segdata.filelen; break; case Hdarwin: symo = segdata.fileoff+rnd(segdata.filelen, INITRND)+machlink; break; case Hlinux: case Hfreebsd: case Hnetbsd: case Hopenbsd: case Hdragonfly: case Hsolaris: case Hnacl: symo = segdata.fileoff+segdata.filelen; symo = rnd(symo, INITRND); break; case Hwindows: symo = segdata.fileoff+segdata.filelen; symo = rnd(symo, PEFILEALIGN); break; } cseek(symo); switch(HEADTYPE) { default: if(iself) { cseek(symo); asmelfsym(); cflush(); cwrite(elfstrdat, elfstrsize); if(debug['v']) Bprint(&bso, "%5.2f dwarf\n", cputime()); dwarfemitdebugsections(); if(linkmode == LinkExternal) elfemitreloc(); } break; case Hplan9: asmplan9sym(); cflush(); sym = linklookup(ctxt, "pclntab", 0); if(sym != nil) { lcsize = sym->np; for(i=0; i < lcsize; i++) cput(sym->p[i]); cflush(); } break; case Hwindows: if(debug['v']) Bprint(&bso, "%5.2f dwarf\n", cputime()); dwarfemitdebugsections(); break; case Hdarwin: if(linkmode == LinkExternal) machoemitreloc(); break; } } if(debug['v']) Bprint(&bso, "%5.2f headr\n", cputime()); Bflush(&bso); cseek(0L); switch(HEADTYPE) { default: case Hplan9: /* plan9 */ magic = 4*26*26+7; magic |= 0x00008000; /* fat header */ lputb(magic); /* magic */ lputb(segtext.filelen); /* sizes */ lputb(segdata.filelen); lputb(segdata.len - segdata.filelen); lputb(symsize); /* nsyms */ vl = entryvalue(); lputb(PADDR(vl)); /* va of entry */ lputb(spsize); /* sp offsets */ lputb(lcsize); /* line offsets */ vputb(vl); /* va of entry */ break; case Hdarwin: asmbmacho(); break; case Hlinux: case Hfreebsd: case Hnetbsd: case Hopenbsd: case Hdragonfly: case Hsolaris: case Hnacl: asmbelf(symo); break; case Hwindows: asmbpe(); break; } cflush(); } vlong rnd(vlong v, vlong r) { vlong c; if(r <= 0) return v; v += r - 1; c = v % r; if(c < 0) c += r; v -= c; return v; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6l/doc.go��������������������������������������������������������������������������������0100644�0000000�0000000�00000000471�12412656734�014445� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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 ignore /* 6l is the linker for the x86-64. The $GOARCH for these tools is amd64. The flags are documented in ../ld/doc.go. */ package main �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6l/l.h�����������������������������������������������������������������������������������0100644�0000000�0000000�00000007175�12412656737�013770� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6l/l.h // http://code.google.com/p/inferno-os/source/browse/utils/6l/l.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include #include #include "6.out.h" #ifndef EXTERN #define EXTERN extern #endif enum { thechar = '6', MaxAlign = 32, // max data alignment // Loop alignment constants: // want to align loop entry to LoopAlign-byte boundary, // and willing to insert at most MaxLoopPad bytes of NOP to do so. // We define a loop entry as the target of a backward jump. // // gcc uses MaxLoopPad = 10 for its 'generic x86-64' config, // and it aligns all jump targets, not just backward jump targets. // // As of 6/1/2012, the effect of setting MaxLoopPad = 10 here // is very slight but negative, so the alignment is disabled by // setting MaxLoopPad = 0. The code is here for reference and // for future experiments. // LoopAlign = 16, MaxLoopPad = 0, FuncAlign = 16 }; EXTERN int PtrSize; EXTERN int IntSize; EXTERN int RegSize; #define P ((Prog*)0) #define S ((LSym*)0) #define TNAME (ctxt->cursym?ctxt->cursym->name:noname) enum { MINSIZ = 8, STRINGSZ = 200, MINLC = 1, MAXIO = 8192, MAXHIST = 40, /* limit of path elements for history symbols */ }; #pragma varargck type "I" uchar* EXTERN LSym* datap; EXTERN int debug[128]; EXTERN char literal[32]; EXTERN int32 lcsize; EXTERN char* rpath; EXTERN int32 spsize; EXTERN LSym* symlist; EXTERN int32 symsize; EXTERN vlong textstksiz; EXTERN vlong textarg; int Iconv(Fmt *fp); void adddynlib(char *lib); void adddynrel(LSym *s, Reloc *r); void adddynrela(LSym *rela, LSym *s, Reloc *r); void adddynsym(Link *ctxt, LSym *s); int archreloc(Reloc *r, LSym *s, vlong *val); void asmb(void); int elfreloc1(Reloc *r, vlong sectoff); void elfsetupplt(void); void listinit(void); int machoreloc1(Reloc *r, vlong sectoff); void main(int argc, char *argv[]); void parsetextconst(vlong arg); vlong rnd(vlong v, vlong r); /* Native is little-endian */ #define LPUT(a) lputl(a) #define WPUT(a) wputl(a) #define VPUT(a) vputl(a) /* Used by ../ld/dwarf.c */ enum { DWARFREGSP = 7 }; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6l/list.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000004325�12412656734�014472� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6l/list.c // http://code.google.com/p/inferno-os/source/browse/utils/6l/list.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Printing. #include "l.h" #include "../ld/lib.h" void listinit(void) { listinit6(); fmtinstall('I', Iconv); } int Iconv(Fmt *fp) { int i, n; uchar *p; char *s; Fmt fmt; n = fp->prec; fp->prec = 0; if(!(fp->flags&FmtPrec) || n < 0) return fmtstrcpy(fp, "%I"); fp->flags &= ~FmtPrec; p = va_arg(fp->args, uchar*); // format into temporary buffer and // call fmtstrcpy to handle padding. fmtstrinit(&fmt); for(i=0; ienam.c �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/6l/obj.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000010515�12412656734�014267� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6l/obj.c // http://code.google.com/p/inferno-os/source/browse/utils/6l/obj.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Reading object files. #include "l.h" #include "../ld/lib.h" #include "../ld/elf.h" #include "../ld/macho.h" #include "../ld/dwarf.h" #include "../ld/pe.h" #include char* thestring = "amd64"; LinkArch* thelinkarch = &linkamd64; void linkarchinit(void) { if(strcmp(getgoarch(), "amd64p32") == 0) thelinkarch = &linkamd64p32; PtrSize = thelinkarch->ptrsize; IntSize = PtrSize; RegSize = thelinkarch->regsize; } void archinit(void) { // getgoextlinkenabled is based on GO_EXTLINK_ENABLED when // Go was built; see ../../make.bash. if(linkmode == LinkAuto && strcmp(getgoextlinkenabled(), "0") == 0) linkmode = LinkInternal; if(flag_shared) linkmode = LinkExternal; switch(HEADTYPE) { default: if(linkmode == LinkAuto) linkmode = LinkInternal; if(linkmode == LinkExternal && strcmp(getgoextlinkenabled(), "1") != 0) sysfatal("cannot use -linkmode=external with -H %s", headstr(HEADTYPE)); break; case Hdarwin: case Hdragonfly: case Hfreebsd: case Hlinux: case Hnacl: case Hnetbsd: case Hopenbsd: case Hsolaris: break; } switch(HEADTYPE) { default: diag("unknown -H option"); errorexit(); case Hplan9: /* plan 9 */ HEADR = 32L + 8L; if(INITTEXT == -1) INITTEXT = 0x200000+HEADR; if(INITDAT == -1) INITDAT = 0; if(INITRND == -1) INITRND = 0x200000; break; case Helf: /* elf32 executable */ HEADR = rnd(52L+3*32L, 16); if(INITTEXT == -1) INITTEXT = 0x80110000L; if(INITDAT == -1) INITDAT = 0; if(INITRND == -1) INITRND = 4096; break; case Hdarwin: /* apple MACH */ machoinit(); HEADR = INITIAL_MACHO_HEADR; if(INITRND == -1) INITRND = 4096; if(INITTEXT == -1) INITTEXT = 4096+HEADR; if(INITDAT == -1) INITDAT = 0; break; case Hlinux: /* elf64 executable */ case Hfreebsd: /* freebsd */ case Hnetbsd: /* netbsd */ case Hopenbsd: /* openbsd */ case Hdragonfly: /* dragonfly */ case Hsolaris: /* solaris */ elfinit(); HEADR = ELFRESERVE; if(INITTEXT == -1) INITTEXT = (1<<22)+HEADR; if(INITDAT == -1) INITDAT = 0; if(INITRND == -1) INITRND = 4096; break; case Hnacl: elfinit(); debug['w']++; // disable dwarf, which gets confused and is useless anyway HEADR = 0x10000; funcalign = 32; if(INITTEXT == -1) INITTEXT = 0x20000; if(INITDAT == -1) INITDAT = 0; if(INITRND == -1) INITRND = 0x10000; break; case Hwindows: /* PE executable */ peinit(); HEADR = PEFILEHEADR; if(INITTEXT == -1) INITTEXT = PEBASE+PESECTHEADR; if(INITDAT == -1) INITDAT = 0; if(INITRND == -1) INITRND = PESECTALIGN; break; } if(INITDAT != 0 && INITRND != 0) print("warning: -D0x%llux is ignored because of -R0x%ux\n", INITDAT, INITRND); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8a���������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013265� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8a/Makefile������������������������������������������������������������������������������0100644�0000000�0000000�00000000405�12412656734�014775� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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. include ../../Make.dist install: y.tab.h y.tab.h: a.y LANG=C LANGUAGE=en_US.UTF8 bison -d -v -y a.y �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8a/a.h�����������������������������������������������������������������������������������0100644�0000000�0000000�00000007770�12412656734�013742� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8a/a.h // http://code.google.com/p/inferno-os/source/browse/utils/8a/a.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "../8l/8.out.h" #ifndef EXTERN #define EXTERN extern #endif #undef getc #undef ungetc #undef BUFSIZ #define getc ccgetc #define ungetc ccungetc typedef struct Sym Sym; typedef struct Ref Ref; typedef struct Io Io; typedef struct Addr2 Addr2; #define MAXALIGN 7 #define FPCHIP 1 #define NSYMB 500 #define BUFSIZ 8192 #define HISTSZ 20 #ifndef EOF #define EOF (-1) #endif #define IGN (-2) #define GETC() ((--fi.c < 0)? filbuf(): *fi.p++ & 0xff) #define NHASH 503 #define STRINGSZ 200 #define NMACRO 10 struct Sym { Sym* link; Ref* ref; char* macro; int32 value; ushort type; char *name; char sym; }; #define S ((Sym*)0) struct Ref { int class; }; EXTERN struct { char* p; int c; } fi; struct Io { Io* link; char b[BUFSIZ]; char* p; short c; short f; }; #define I ((Io*)0) struct Addr2 { Addr from; Addr to; }; enum { CLAST, CMACARG, CMACRO, CPREPROC, }; EXTERN int debug[256]; EXTERN Sym* hash[NHASH]; EXTERN char** Dlist; EXTERN int nDlist; EXTERN int newflag; EXTERN char* hunk; EXTERN char** include; EXTERN Io* iofree; EXTERN Io* ionext; EXTERN Io* iostack; EXTERN int32 lineno; EXTERN int nerrors; EXTERN int32 nhunk; EXTERN int ninclude; EXTERN int32 nsymb; EXTERN Addr nullgen; EXTERN char* outfile; EXTERN int pass; EXTERN int32 pc; EXTERN int peekc; EXTERN int32 stmtline; EXTERN int sym; EXTERN char* symb; EXTERN int thechar; EXTERN char* thestring; EXTERN int32 thunk; EXTERN Biobuf obuf; EXTERN Link* ctxt; EXTERN Biobuf bstdout; void* alloc(int32); void* allocn(void*, int32, int32); void ensuresymb(int32); void errorexit(void); void pushio(void); void newio(void); void newfile(char*, int); Sym* slookup(char*); Sym* lookup(void); void syminit(Sym*); int32 yylex(void); int getc(void); int getnsc(void); void unget(int); int escchar(int); void cinit(void); void checkscale(int); void pinit(char*); void cclean(void); int isreg(Addr*); void outcode(int, Addr2*); void outhist(void); int filbuf(void); Sym* getsym(void); void domacro(void); void macund(void); void macdef(void); void macexpand(Sym*, char*); void macinc(void); void macprag(void); void maclin(void); void macif(int); void macend(void); void dodefine(char*); void prfile(int32); void linehist(char*, int); void gethunk(void); void yyerror(char*, ...); int yyparse(void); void setinclude(char*); int assemble(char*); ��������go/src/cmd/8a/a.y�����������������������������������������������������������������������������������0100644�0000000�0000000�00000024251�12412656737�013757� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8a/a.y // http://code.google.com/p/inferno-os/source/browse/utils/8a/a.y // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. %{ #include #include /* if we don't, bison will, and a.h re-#defines getc */ #include #include "a.h" #include "../../pkg/runtime/funcdata.h" %} %union { Sym *sym; int32 lval; struct { int32 v1; int32 v2; } con2; double dval; char sval[8]; Addr addr; Addr2 addr2; } %left '|' %left '^' %left '&' %left '<' '>' %left '+' '-' %left '*' '/' '%' %token LTYPE0 LTYPE1 LTYPE2 LTYPE3 LTYPE4 %token LTYPEC LTYPED LTYPEN LTYPER LTYPET LTYPES LTYPEM LTYPEI LTYPEG LTYPEXC %token LTYPEX LTYPEPC LTYPEF LCONST LFP LPC LSB %token LBREG LLREG LSREG LFREG LXREG %token LFCONST %token LSCONST LSP %token LNAME LLAB LVAR %type con expr pointer offset %type con2 %type mem imm imm2 reg nam rel rem rim rom omem nmem %type nonnon nonrel nonrem rimnon rimrem remrim %type spec1 spec2 spec3 spec4 spec5 spec6 spec7 spec8 spec9 spec10 spec11 spec12 %% prog: | prog { stmtline = lineno; } line line: LLAB ':' { if($1->value != pc) yyerror("redeclaration of %s", $1->name); $1->value = pc; } line | LNAME ':' { $1->type = LLAB; $1->value = pc; } line | ';' | inst ';' | error ';' inst: LNAME '=' expr { $1->type = LVAR; $1->value = $3; } | LVAR '=' expr { if($1->value != $3) yyerror("redeclaration of %s", $1->name); $1->value = $3; } | LTYPE0 nonnon { outcode($1, &$2); } | LTYPE1 nonrem { outcode($1, &$2); } | LTYPE2 rimnon { outcode($1, &$2); } | LTYPE3 rimrem { outcode($1, &$2); } | LTYPE4 remrim { outcode($1, &$2); } | LTYPER nonrel { outcode($1, &$2); } | LTYPED spec1 { outcode($1, &$2); } | LTYPET spec2 { outcode($1, &$2); } | LTYPEC spec3 { outcode($1, &$2); } | LTYPEN spec4 { outcode($1, &$2); } | LTYPES spec5 { outcode($1, &$2); } | LTYPEM spec6 { outcode($1, &$2); } | LTYPEI spec7 { outcode($1, &$2); } | LTYPEG spec8 { outcode($1, &$2); } | LTYPEXC spec9 { outcode($1, &$2); } | LTYPEX spec10 { outcode($1, &$2); } | LTYPEPC spec11 { outcode($1, &$2); } | LTYPEF spec12 { outcode($1, &$2); } nonnon: { $$.from = nullgen; $$.to = nullgen; } | ',' { $$.from = nullgen; $$.to = nullgen; } rimrem: rim ',' rem { $$.from = $1; $$.to = $3; } remrim: rem ',' rim { $$.from = $1; $$.to = $3; } rimnon: rim ',' { $$.from = $1; $$.to = nullgen; } | rim { $$.from = $1; $$.to = nullgen; } nonrem: ',' rem { $$.from = nullgen; $$.to = $2; } | rem { $$.from = nullgen; $$.to = $1; } nonrel: ',' rel { $$.from = nullgen; $$.to = $2; } | rel { $$.from = nullgen; $$.to = $1; } | imm ',' rel { $$.from = $1; $$.to = $3; } spec1: /* DATA */ nam '/' con ',' imm { $$.from = $1; $$.from.scale = $3; $$.to = $5; } spec2: /* TEXT */ mem ',' imm2 { $$.from = $1; $$.to = $3; } | mem ',' con ',' imm2 { $$.from = $1; $$.from.scale = $3; $$.to = $5; } spec3: /* JMP/CALL */ ',' rom { $$.from = nullgen; $$.to = $2; } | rom { $$.from = nullgen; $$.to = $1; } | '*' nam { $$.from = nullgen; $$.to = $2; $$.to.index = $2.type; $$.to.type = D_INDIR+D_ADDR; } spec4: /* NOP */ nonnon | nonrem spec5: /* SHL/SHR */ rim ',' rem { $$.from = $1; $$.to = $3; } | rim ',' rem ':' LLREG { $$.from = $1; $$.to = $3; if($$.from.index != D_NONE) yyerror("dp shift with lhs index"); $$.from.index = $5; } spec6: /* MOVW/MOVL */ rim ',' rem { $$.from = $1; $$.to = $3; } | rim ',' rem ':' LSREG { $$.from = $1; $$.to = $3; if($$.to.index != D_NONE) yyerror("dp move with lhs index"); $$.to.index = $5; } spec7: rim ',' { $$.from = $1; $$.to = nullgen; } | rim { $$.from = $1; $$.to = nullgen; } | rim ',' rem { $$.from = $1; $$.to = $3; } spec8: /* GLOBL */ mem ',' imm { $$.from = $1; $$.to = $3; } | mem ',' con ',' imm { $$.from = $1; $$.from.scale = $3; $$.to = $5; } spec9: /* CMPPS/CMPPD */ reg ',' rem ',' con { $$.from = $1; $$.to = $3; $$.to.offset = $5; } spec10: /* PINSRD */ imm ',' rem ',' reg { $$.from = $3; $$.to = $5; if($1.type != D_CONST) yyerror("illegal constant"); $$.to.offset = $1.offset; } spec11: /* PCDATA */ rim ',' rim { if($1.type != D_CONST || $3.type != D_CONST) yyerror("arguments to PCDATA must be integer constants"); $$.from = $1; $$.to = $3; } spec12: /* FUNCDATA */ rim ',' rim { if($1.type != D_CONST) yyerror("index for FUNCDATA must be integer constant"); if($3.type != D_EXTERN && $3.type != D_STATIC) yyerror("value for FUNCDATA must be symbol reference"); $$.from = $1; $$.to = $3; } rem: reg | mem rom: rel | nmem | '*' reg { $$ = $2; } | '*' omem { $$ = $2; } | reg | omem | imm rim: rem | imm rel: con '(' LPC ')' { $$ = nullgen; $$.type = D_BRANCH; $$.offset = $1 + pc; } | LNAME offset { $$ = nullgen; if(pass == 2) yyerror("undefined label: %s", $1->name); $$.type = D_BRANCH; $$.offset = $2; } | LLAB offset { $$ = nullgen; $$.type = D_BRANCH; $$.offset = $1->value + $2; } reg: LBREG { $$ = nullgen; $$.type = $1; } | LFREG { $$ = nullgen; $$.type = $1; } | LLREG { $$ = nullgen; $$.type = $1; } | LXREG { $$ = nullgen; $$.type = $1; } | LSP { $$ = nullgen; $$.type = D_SP; } | LSREG { $$ = nullgen; $$.type = $1; } imm: '$' con { $$ = nullgen; $$.type = D_CONST; $$.offset = $2; } | '$' nam { $$ = $2; $$.index = $2.type; $$.type = D_ADDR; /* if($2.type == D_AUTO || $2.type == D_PARAM) yyerror("constant cannot be automatic: %s", $2.sym->name); */ } | '$' LSCONST { $$ = nullgen; $$.type = D_SCONST; memcpy($$.u.sval, $2, sizeof($$.u.sval)); } | '$' LFCONST { $$ = nullgen; $$.type = D_FCONST; $$.u.dval = $2; } | '$' '(' LFCONST ')' { $$ = nullgen; $$.type = D_FCONST; $$.u.dval = $3; } | '$' '(' '-' LFCONST ')' { $$ = nullgen; $$.type = D_FCONST; $$.u.dval = -$4; } | '$' '-' LFCONST { $$ = nullgen; $$.type = D_FCONST; $$.u.dval = -$3; } imm2: '$' con2 { $$ = nullgen; $$.type = D_CONST2; $$.offset = $2.v1; $$.offset2 = $2.v2; } con2: LCONST { $$.v1 = $1; $$.v2 = ArgsSizeUnknown; } | '-' LCONST { $$.v1 = -$2; $$.v2 = ArgsSizeUnknown; } | LCONST '-' LCONST { $$.v1 = $1; $$.v2 = $3; } | '-' LCONST '-' LCONST { $$.v1 = -$2; $$.v2 = $4; } mem: omem | nmem omem: con { $$ = nullgen; $$.type = D_INDIR+D_NONE; $$.offset = $1; } | con '(' LLREG ')' { $$ = nullgen; $$.type = D_INDIR+$3; $$.offset = $1; } | con '(' LSP ')' { $$ = nullgen; $$.type = D_INDIR+D_SP; $$.offset = $1; } | con '(' LLREG '*' con ')' { $$ = nullgen; $$.type = D_INDIR+D_NONE; $$.offset = $1; $$.index = $3; $$.scale = $5; checkscale($$.scale); } | con '(' LLREG ')' '(' LLREG '*' con ')' { $$ = nullgen; $$.type = D_INDIR+$3; $$.offset = $1; $$.index = $6; $$.scale = $8; checkscale($$.scale); } | con '(' LLREG ')' '(' LSREG '*' con ')' { $$ = nullgen; $$.type = D_INDIR+$3; $$.offset = $1; $$.index = $6; $$.scale = $8; checkscale($$.scale); } | '(' LLREG ')' { $$ = nullgen; $$.type = D_INDIR+$2; } | '(' LSP ')' { $$ = nullgen; $$.type = D_INDIR+D_SP; } | con '(' LSREG ')' { $$ = nullgen; $$.type = D_INDIR+$3; $$.offset = $1; } | '(' LLREG '*' con ')' { $$ = nullgen; $$.type = D_INDIR+D_NONE; $$.index = $2; $$.scale = $4; checkscale($$.scale); } | '(' LLREG ')' '(' LLREG '*' con ')' { $$ = nullgen; $$.type = D_INDIR+$2; $$.index = $5; $$.scale = $7; checkscale($$.scale); } nmem: nam { $$ = $1; } | nam '(' LLREG '*' con ')' { $$ = $1; $$.index = $3; $$.scale = $5; checkscale($$.scale); } nam: LNAME offset '(' pointer ')' { $$ = nullgen; $$.type = $4; $$.sym = linklookup(ctxt, $1->name, 0); $$.offset = $2; } | LNAME '<' '>' offset '(' LSB ')' { $$ = nullgen; $$.type = D_STATIC; $$.sym = linklookup(ctxt, $1->name, 1); $$.offset = $4; } offset: { $$ = 0; } | '+' con { $$ = $2; } | '-' con { $$ = -$2; } pointer: LSB | LSP { $$ = D_AUTO; } | LFP con: LCONST | LVAR { $$ = $1->value; } | '-' con { $$ = -$2; } | '+' con { $$ = $2; } | '~' con { $$ = ~$2; } | '(' expr ')' { $$ = $2; } expr: con | expr '+' expr { $$ = $1 + $3; } | expr '-' expr { $$ = $1 - $3; } | expr '*' expr { $$ = $1 * $3; } | expr '/' expr { $$ = $1 / $3; } | expr '%' expr { $$ = $1 % $3; } | expr '<' '<' expr { $$ = $1 << $4; } | expr '>' '>' expr { $$ = $1 >> $4; } | expr '&' expr { $$ = $1 & $3; } | expr '^' expr { $$ = $1 ^ $3; } | expr '|' expr { $$ = $1 | $3; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8a/doc.go��������������������������������������������������������������������������������0100644�0000000�0000000�00000000753�12412656734�014437� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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 ignore /* 8a is a version of the Plan 9 assembler. The original is documented at http://plan9.bell-labs.com/magic/man2html/1/8a Go-specific considerations are documented at http://golang.org/doc/asm I Its target architecture is the x86, referred to by these tools for historical reasons as 386. */ package main ���������������������go/src/cmd/8a/lex.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000053110�12412656737�014275� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8a/lex.c // http://code.google.com/p/inferno-os/source/browse/utils/8a/lex.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #define EXTERN #include #include #include "a.h" #include "y.tab.h" enum { Plan9 = 1<<0, Unix = 1<<1, Windows = 1<<2, }; int systemtype(int sys) { #ifdef _WIN32 return sys&Windows; #else return sys&Plan9; #endif } int pathchar(void) { return '/'; } int Lconv(Fmt *fp) { return linklinefmt(ctxt, fp); } void dodef(char *p) { if(nDlist%8 == 0) Dlist = allocn(Dlist, nDlist*sizeof(char *), 8*sizeof(char *)); Dlist[nDlist++] = p; } void usage(void) { print("usage: %ca [options] file.c...\n", thechar); flagprint(1); errorexit(); } void main(int argc, char *argv[]) { char *p; thechar = '8'; thestring = "386"; ctxt = linknew(&link386); ctxt->diag = yyerror; ctxt->bso = &bstdout; Binit(&bstdout, 1, OWRITE); listinit8(); fmtinstall('L', Lconv); // Allow GOARCH=thestring or GOARCH=thestringsuffix, // but not other values. p = getgoarch(); if(strncmp(p, thestring, strlen(thestring)) != 0) sysfatal("cannot use %cc with GOARCH=%s", thechar, p); ensuresymb(NSYMB); memset(debug, 0, sizeof(debug)); cinit(); outfile = 0; setinclude("."); flagfn1("D", "name[=value]: add #define", dodef); flagfn1("I", "dir: add dir to include path", setinclude); flagcount("S", "print assembly and machine code", &debug['S']); flagcount("m", "debug preprocessor macros", &debug['m']); flagstr("o", "file: set output file", &outfile); flagstr("trimpath", "prefix: remove prefix from recorded source file paths", &ctxt->trimpath); flagparse(&argc, &argv, usage); ctxt->debugasm = debug['S']; if(argc < 1) usage(); if(argc > 1){ print("can't assemble multiple files\n"); errorexit(); } if(assemble(argv[0])) errorexit(); Bflush(&bstdout); exits(0); } int assemble(char *file) { char *ofile, *p; int i, of; ofile = alloc(strlen(file)+3); // +3 for .x\0 (x=thechar) strcpy(ofile, file); p = utfrrune(ofile, pathchar()); if(p) { include[0] = ofile; *p++ = 0; } else p = ofile; if(outfile == 0) { outfile = p; if(outfile){ p = utfrrune(outfile, '.'); if(p) if(p[1] == 's' && p[2] == 0) p[0] = 0; p = utfrune(outfile, 0); p[0] = '.'; p[1] = thechar; p[2] = 0; } else outfile = "/dev/null"; } of = create(outfile, OWRITE, 0664); if(of < 0) { yyerror("%ca: cannot create %s", thechar, outfile); errorexit(); } Binit(&obuf, of, OWRITE); Bprint(&obuf, "go object %s %s %s\n", getgoos(), getgoarch(), getgoversion()); Bprint(&obuf, "!\n"); for(pass = 1; pass <= 2; pass++) { pinit(file); for(i=0; itype != LNAME) yyerror("double initialization %s", itab[i].name); s->type = itab[i].type; s->value = itab[i].value; } } void checkscale(int scale) { switch(scale) { case 1: case 2: case 4: case 8: return; } yyerror("scale must be 1248: %d", scale); } void syminit(Sym *s) { s->type = LNAME; s->value = 0; } void cclean(void) { Addr2 g2; g2.from = nullgen; g2.to = nullgen; outcode(AEND, &g2); } static Prog *lastpc; void outcode(int a, Addr2 *g2) { Prog *p; Plist *pl; if(pass == 1) goto out; p = malloc(sizeof *p); memset(p, 0, sizeof *p); p->as = a; p->lineno = stmtline; p->from = g2->from; p->to = g2->to; p->pc = pc; if(lastpc == nil) { pl = linknewplist(ctxt); pl->firstpc = p; } else lastpc->link = p; lastpc = p; out: if(a != AGLOBL && a != ADATA) pc++; } #include "../cc/lexbody" #include "../cc/macbody" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8a/y.tab.c�������������������������������������������������������������������������������0100644�0000000�0000000�00000235142�12412656737�014531� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Using locations. */ #define YYLSP_NEEDED 0 /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { LTYPE0 = 258, LTYPE1 = 259, LTYPE2 = 260, LTYPE3 = 261, LTYPE4 = 262, LTYPEC = 263, LTYPED = 264, LTYPEN = 265, LTYPER = 266, LTYPET = 267, LTYPES = 268, LTYPEM = 269, LTYPEI = 270, LTYPEG = 271, LTYPEXC = 272, LTYPEX = 273, LTYPEPC = 274, LTYPEF = 275, LCONST = 276, LFP = 277, LPC = 278, LSB = 279, LBREG = 280, LLREG = 281, LSREG = 282, LFREG = 283, LXREG = 284, LFCONST = 285, LSCONST = 286, LSP = 287, LNAME = 288, LLAB = 289, LVAR = 290 }; #endif /* Tokens. */ #define LTYPE0 258 #define LTYPE1 259 #define LTYPE2 260 #define LTYPE3 261 #define LTYPE4 262 #define LTYPEC 263 #define LTYPED 264 #define LTYPEN 265 #define LTYPER 266 #define LTYPET 267 #define LTYPES 268 #define LTYPEM 269 #define LTYPEI 270 #define LTYPEG 271 #define LTYPEXC 272 #define LTYPEX 273 #define LTYPEPC 274 #define LTYPEF 275 #define LCONST 276 #define LFP 277 #define LPC 278 #define LSB 279 #define LBREG 280 #define LLREG 281 #define LSREG 282 #define LFREG 283 #define LXREG 284 #define LFCONST 285 #define LSCONST 286 #define LSP 287 #define LNAME 288 #define LLAB 289 #define LVAR 290 /* Copy the first part of user declarations. */ #line 31 "a.y" #include #include /* if we don't, bison will, and a.h re-#defines getc */ #include #include "a.h" #include "../../pkg/runtime/funcdata.h" /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 0 #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 38 "a.y" { Sym *sym; int32 lval; struct { int32 v1; int32 v2; } con2; double dval; char sval[8]; Addr addr; Addr2 addr2; } /* Line 193 of yacc.c. */ #line 187 "y.tab.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif /* Copy the second part of user declarations. */ /* Line 216 of yacc.c. */ #line 200 "y.tab.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int i) #else static int YYID (i) int i; #endif { return i; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss; YYSTYPE yyvs; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack, Stack, yysize); \ Stack = &yyptr->Stack; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 546 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 54 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 41 /* YYNRULES -- Number of rules. */ #define YYNRULES 135 /* YYNRULES -- Number of states. */ #define YYNSTATES 276 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 290 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 52, 12, 5, 2, 50, 51, 10, 8, 49, 9, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 46, 47, 6, 48, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 53, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 4, 5, 9, 10, 15, 16, 21, 23, 26, 29, 33, 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 82, 85, 88, 91, 92, 94, 98, 102, 105, 107, 110, 112, 115, 117, 121, 127, 131, 137, 140, 142, 145, 147, 149, 153, 159, 163, 169, 172, 174, 178, 182, 188, 194, 200, 204, 208, 210, 212, 214, 216, 219, 222, 224, 226, 228, 230, 232, 237, 240, 243, 245, 247, 249, 251, 253, 255, 258, 261, 264, 267, 272, 278, 282, 285, 287, 290, 294, 299, 301, 303, 305, 310, 315, 322, 332, 342, 346, 350, 355, 361, 370, 372, 379, 385, 393, 394, 397, 400, 402, 404, 406, 408, 410, 413, 416, 419, 423, 425, 429, 433, 437, 441, 445, 450, 455, 459, 463 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { 55, 0, -1, -1, -1, 55, 56, 57, -1, -1, 44, 46, 58, 57, -1, -1, 43, 46, 59, 57, -1, 47, -1, 60, 47, -1, 1, 47, -1, 43, 48, 94, -1, 45, 48, 94, -1, 13, 61, -1, 14, 65, -1, 15, 64, -1, 16, 62, -1, 17, 63, -1, 21, 66, -1, 19, 67, -1, 22, 68, -1, 18, 69, -1, 20, 70, -1, 23, 71, -1, 24, 72, -1, 25, 73, -1, 26, 74, -1, 27, 75, -1, 28, 76, -1, 29, 77, -1, 30, 78, -1, -1, 49, -1, 81, 49, 79, -1, 79, 49, 81, -1, 81, 49, -1, 81, -1, 49, 79, -1, 79, -1, 49, 82, -1, 82, -1, 84, 49, 82, -1, 90, 11, 93, 49, 84, -1, 87, 49, 85, -1, 87, 49, 93, 49, 85, -1, 49, 80, -1, 80, -1, 10, 90, -1, 61, -1, 65, -1, 81, 49, 79, -1, 81, 49, 79, 46, 36, -1, 81, 49, 79, -1, 81, 49, 79, 46, 37, -1, 81, 49, -1, 81, -1, 81, 49, 79, -1, 87, 49, 84, -1, 87, 49, 93, 49, 84, -1, 83, 49, 79, 49, 93, -1, 84, 49, 79, 49, 83, -1, 81, 49, 81, -1, 81, 49, 81, -1, 83, -1, 87, -1, 82, -1, 89, -1, 10, 83, -1, 10, 88, -1, 83, -1, 88, -1, 84, -1, 79, -1, 84, -1, 93, 50, 33, 51, -1, 43, 91, -1, 44, 91, -1, 35, -1, 38, -1, 36, -1, 39, -1, 42, -1, 37, -1, 52, 93, -1, 52, 90, -1, 52, 41, -1, 52, 40, -1, 52, 50, 40, 51, -1, 52, 50, 9, 40, 51, -1, 52, 9, 40, -1, 52, 86, -1, 31, -1, 9, 31, -1, 31, 9, 31, -1, 9, 31, 9, 31, -1, 88, -1, 89, -1, 93, -1, 93, 50, 36, 51, -1, 93, 50, 42, 51, -1, 93, 50, 36, 10, 93, 51, -1, 93, 50, 36, 51, 50, 36, 10, 93, 51, -1, 93, 50, 36, 51, 50, 37, 10, 93, 51, -1, 50, 36, 51, -1, 50, 42, 51, -1, 93, 50, 37, 51, -1, 50, 36, 10, 93, 51, -1, 50, 36, 51, 50, 36, 10, 93, 51, -1, 90, -1, 90, 50, 36, 10, 93, 51, -1, 43, 91, 50, 92, 51, -1, 43, 6, 7, 91, 50, 34, 51, -1, -1, 8, 93, -1, 9, 93, -1, 34, -1, 42, -1, 32, -1, 31, -1, 45, -1, 9, 93, -1, 8, 93, -1, 53, 93, -1, 50, 94, 51, -1, 93, -1, 94, 8, 94, -1, 94, 9, 94, -1, 94, 10, 94, -1, 94, 11, 94, -1, 94, 12, 94, -1, 94, 6, 6, 94, -1, 94, 7, 7, 94, -1, 94, 5, 94, -1, 94, 4, 94, -1, 94, 3, 94, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 69, 69, 71, 70, 78, 77, 85, 84, 90, 91, 92, 95, 100, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 126, 130, 137, 144, 151, 156, 163, 168, 175, 180, 185, 192, 200, 205, 213, 218, 223, 232, 233, 236, 241, 251, 256, 266, 271, 276, 283, 288, 296, 304, 314, 323, 334, 335, 338, 339, 340, 344, 348, 349, 350, 353, 354, 357, 363, 371, 379, 384, 389, 394, 399, 404, 411, 417, 428, 434, 440, 446, 452, 460, 469, 474, 479, 484, 491, 492, 495, 501, 507, 513, 522, 531, 540, 545, 550, 556, 564, 574, 578, 587, 594, 603, 606, 610, 616, 617, 621, 624, 625, 629, 633, 637, 641, 647, 648, 652, 656, 660, 664, 668, 672, 676, 680, 684 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "'|'", "'^'", "'&'", "'<'", "'>'", "'+'", "'-'", "'*'", "'/'", "'%'", "LTYPE0", "LTYPE1", "LTYPE2", "LTYPE3", "LTYPE4", "LTYPEC", "LTYPED", "LTYPEN", "LTYPER", "LTYPET", "LTYPES", "LTYPEM", "LTYPEI", "LTYPEG", "LTYPEXC", "LTYPEX", "LTYPEPC", "LTYPEF", "LCONST", "LFP", "LPC", "LSB", "LBREG", "LLREG", "LSREG", "LFREG", "LXREG", "LFCONST", "LSCONST", "LSP", "LNAME", "LLAB", "LVAR", "':'", "';'", "'='", "','", "'('", "')'", "'$'", "'~'", "$accept", "prog", "@1", "line", "@2", "@3", "inst", "nonnon", "rimrem", "remrim", "rimnon", "nonrem", "nonrel", "spec1", "spec2", "spec3", "spec4", "spec5", "spec6", "spec7", "spec8", "spec9", "spec10", "spec11", "spec12", "rem", "rom", "rim", "rel", "reg", "imm", "imm2", "con2", "mem", "omem", "nmem", "nam", "offset", "pointer", "con", "expr", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 124, 94, 38, 60, 62, 43, 45, 42, 47, 37, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 58, 59, 61, 44, 40, 41, 36, 126 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 54, 55, 56, 55, 58, 57, 59, 57, 57, 57, 57, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 62, 63, 64, 64, 65, 65, 66, 66, 66, 67, 68, 68, 69, 69, 69, 70, 70, 71, 71, 72, 72, 73, 73, 73, 74, 74, 75, 76, 77, 78, 79, 79, 80, 80, 80, 80, 80, 80, 80, 81, 81, 82, 82, 82, 83, 83, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 85, 86, 86, 86, 86, 87, 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 89, 89, 90, 90, 91, 91, 91, 92, 92, 92, 93, 93, 93, 93, 93, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 0, 3, 0, 4, 0, 4, 1, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 3, 3, 2, 1, 2, 1, 2, 1, 3, 5, 3, 5, 2, 1, 2, 1, 1, 3, 5, 3, 5, 2, 1, 3, 3, 5, 5, 5, 3, 3, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 4, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 5, 3, 2, 1, 2, 3, 4, 1, 1, 1, 4, 4, 6, 9, 9, 3, 3, 4, 5, 8, 1, 6, 5, 7, 0, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 3, 1, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 2, 3, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 0, 11, 33, 14, 0, 0, 119, 78, 80, 83, 79, 81, 82, 113, 120, 0, 0, 0, 15, 39, 64, 65, 96, 97, 109, 98, 0, 16, 73, 37, 74, 17, 0, 18, 0, 0, 113, 113, 0, 22, 47, 66, 70, 72, 71, 67, 98, 20, 0, 33, 49, 50, 23, 113, 0, 0, 19, 41, 0, 0, 21, 0, 24, 0, 25, 0, 26, 56, 27, 0, 28, 0, 29, 0, 30, 0, 31, 0, 7, 0, 5, 0, 10, 122, 121, 0, 0, 0, 0, 38, 0, 0, 125, 0, 123, 0, 0, 0, 87, 86, 0, 85, 84, 36, 0, 0, 68, 69, 48, 76, 77, 0, 46, 0, 0, 76, 40, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 12, 0, 13, 113, 114, 115, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 90, 0, 0, 34, 35, 0, 0, 42, 0, 44, 0, 51, 53, 57, 58, 0, 0, 0, 62, 63, 8, 6, 0, 118, 116, 117, 0, 0, 0, 135, 134, 133, 0, 0, 126, 127, 128, 129, 130, 0, 0, 99, 106, 100, 0, 88, 75, 0, 0, 92, 91, 0, 0, 0, 0, 0, 0, 0, 111, 107, 0, 131, 132, 0, 0, 0, 89, 43, 93, 0, 45, 52, 54, 59, 60, 61, 0, 0, 110, 101, 0, 0, 0, 94, 112, 0, 0, 0, 95, 108, 0, 0, 102, 103 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 3, 27, 158, 156, 28, 31, 59, 61, 55, 46, 84, 75, 88, 67, 80, 90, 92, 94, 96, 98, 100, 102, 104, 56, 68, 57, 69, 48, 58, 191, 232, 49, 50, 51, 52, 116, 208, 53, 121 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -104 static const yytype_int16 yypact[] = { -104, 4, -104, 173, -26, -25, 277, 297, 297, 349, 225, -14, 329, 396, 18, 297, 297, 297, 18, 171, -20, 297, 297, 2, -4, 26, -104, -104, 43, -104, -104, -104, 478, 478, -104, -104, -104, -104, -104, -104, -104, 111, -104, 349, 402, 478, -104, -104, -104, -104, -104, -104, -12, -5, 83, -104, -104, 44, -104, -104, 46, -104, 49, 349, 111, 113, 245, -104, -104, -104, -104, -104, -104, -104, 50, -104, 100, 349, -104, -104, -104, 113, 420, 478, -104, -104, 64, 66, -104, 78, -104, 80, -104, 85, -104, 89, -104, 93, -104, 98, -104, 101, -104, 112, -104, 121, -104, 478, -104, 478, -104, -104, -104, 153, 478, 478, 135, -104, 8, 163, -104, 74, -104, 179, 52, 427, -104, -104, 445, -104, -104, -104, 349, 297, -104, -104, -104, 135, -104, 381, -104, 33, 478, -104, -104, 420, 186, 451, 349, 349, 349, 460, 349, 349, 297, 297, 173, 172, 173, 172, 113, -104, -104, 5, 478, 180, -104, 478, 478, 478, 226, 224, 478, 478, 478, 478, 478, -104, 235, 36, 195, 196, -104, 466, 197, -104, -104, 199, 202, -104, 21, -104, 203, 211, 219, -104, -104, 217, 222, 223, -104, -104, -104, -104, 229, -104, -104, -104, 240, 241, 237, 232, 527, 534, 478, 478, 134, 134, -104, -104, -104, 478, 478, 243, -104, -104, 248, -104, -104, -20, 263, 287, -104, 249, 264, 265, -20, 478, 171, 269, -104, -104, 294, 214, 214, 256, 258, 119, -104, -104, 301, 280, -104, -104, -104, -104, -104, -104, 266, 478, -104, -104, 308, 311, 292, -104, -104, 273, 478, 478, -104, -104, 274, 278, -104, -104 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -104, -104, -104, -103, -104, -104, -104, 319, -104, -104, -104, 331, -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, 19, 275, -2, -6, -9, -8, 115, -104, 22, 1, -1, -3, -48, -104, -10, -66 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -1 static const yytype_uint16 yytable[] = { 74, 70, 71, 87, 2, 86, 60, 85, 76, 73, 99, 72, 101, 91, 93, 95, 137, 138, 164, 103, 105, 29, 111, 112, 30, 47, 32, 33, 62, 41, 230, 47, 54, 143, 120, 122, 89, 205, 123, 206, 97, 157, 108, 159, 130, 124, 222, 207, 106, 34, 107, 129, 231, 202, 134, 203, 74, 70, 71, 165, 136, 41, 117, 42, 135, 73, 187, 72, 44, 179, 180, 45, 87, 120, 109, 181, 144, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 223, 179, 180, 110, 32, 125, 131, 181, 132, 117, 120, 133, 120, 141, 211, 212, 213, 161, 162, 216, 217, 218, 219, 220, 142, 204, 145, 34, 112, 146, 113, 120, 114, 115, 114, 115, 126, 127, 177, 41, 147, 42, 148, 134, 186, 188, 128, 149, 87, 45, 192, 150, 189, 135, 197, 151, 196, 174, 175, 176, 152, 243, 244, 153, 185, 200, 201, 209, 262, 263, 120, 120, 120, 160, 154, 120, 120, 120, 120, 120, 193, 194, 195, 155, 198, 199, 112, 4, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 163, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 120, 120, 35, 36, 37, 38, 39, 245, 246, 40, 166, 178, 23, 24, 25, 187, 26, 249, 172, 173, 174, 175, 176, 256, 255, 257, 210, 215, 214, 32, 33, 63, 168, 169, 170, 171, 172, 173, 174, 175, 176, 221, 224, 225, 227, 267, 228, 229, 233, 32, 33, 139, 34, 234, 272, 273, 35, 36, 37, 38, 39, 235, 236, 40, 64, 65, 42, 237, 238, 242, 66, 44, 34, 54, 45, 239, 35, 36, 37, 38, 39, 32, 33, 40, 64, 65, 42, 240, 241, 247, 250, 44, 251, 54, 45, 248, 253, 190, 254, 258, 259, 32, 33, 260, 34, 261, 264, 265, 35, 36, 37, 38, 39, 266, 268, 40, 41, 269, 42, 270, 271, 274, 43, 44, 34, 275, 45, 78, 35, 36, 37, 38, 39, 32, 33, 40, 41, 140, 42, 79, 0, 0, 0, 44, 252, 54, 45, 0, 0, 0, 0, 0, 0, 32, 33, 0, 34, 0, 0, 0, 35, 36, 37, 38, 39, 0, 0, 40, 41, 0, 42, 0, 0, 0, 77, 44, 34, 0, 45, 0, 35, 36, 37, 38, 39, 32, 33, 40, 41, 0, 42, 0, 0, 0, 0, 44, 0, 0, 45, 0, 32, 33, 0, 0, 0, 0, 32, 33, 34, 0, 0, 0, 35, 36, 37, 38, 39, 0, 0, 40, 0, 0, 42, 34, 32, 33, 0, 44, 0, 34, 45, 32, 33, 0, 118, 81, 65, 42, 0, 0, 119, 82, 83, 42, 54, 45, 0, 34, 83, 32, 183, 45, 0, 0, 34, 32, 33, 0, 0, 81, 65, 42, 0, 182, 32, 33, 83, 0, 42, 45, 32, 33, 34, 83, 0, 0, 45, 0, 34, 0, 0, 184, 32, 33, 0, 0, 42, 34, 0, 0, 0, 83, 42, 34, 45, 0, 0, 83, 0, 190, 45, 42, 226, 0, 0, 34, 83, 42, 54, 45, 0, 0, 83, 0, 0, 45, 0, 0, 0, 42, 0, 0, 0, 0, 83, 0, 0, 45, 169, 170, 171, 172, 173, 174, 175, 176, 170, 171, 172, 173, 174, 175, 176 }; static const yytype_int16 yycheck[] = { 10, 10, 10, 13, 0, 13, 8, 13, 11, 10, 19, 10, 20, 15, 16, 17, 64, 65, 10, 21, 22, 47, 32, 33, 49, 6, 8, 9, 9, 43, 9, 12, 52, 81, 44, 45, 14, 32, 50, 34, 18, 107, 46, 109, 54, 50, 10, 42, 46, 31, 48, 54, 31, 156, 63, 158, 66, 66, 66, 51, 63, 43, 43, 45, 63, 66, 33, 66, 50, 36, 37, 53, 82, 83, 48, 42, 82, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 51, 36, 37, 47, 8, 9, 49, 42, 49, 77, 107, 49, 109, 50, 167, 168, 169, 114, 115, 172, 173, 174, 175, 176, 11, 160, 49, 31, 125, 50, 6, 128, 8, 9, 8, 9, 40, 41, 51, 43, 49, 45, 49, 139, 133, 142, 50, 49, 145, 53, 147, 49, 145, 139, 151, 49, 151, 10, 11, 12, 49, 214, 215, 49, 132, 154, 155, 164, 36, 37, 167, 168, 169, 7, 49, 172, 173, 174, 175, 176, 148, 149, 150, 49, 152, 153, 183, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 50, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 214, 215, 35, 36, 37, 38, 39, 221, 222, 42, 51, 36, 43, 44, 45, 33, 47, 229, 8, 9, 10, 11, 12, 237, 236, 238, 50, 7, 6, 8, 9, 10, 4, 5, 6, 7, 8, 9, 10, 11, 12, 10, 51, 51, 51, 259, 51, 49, 49, 8, 9, 10, 31, 46, 268, 269, 35, 36, 37, 38, 39, 46, 49, 42, 43, 44, 45, 49, 49, 36, 49, 50, 31, 52, 53, 50, 35, 36, 37, 38, 39, 8, 9, 42, 43, 44, 45, 51, 51, 50, 31, 50, 9, 52, 53, 51, 36, 52, 37, 34, 10, 8, 9, 51, 31, 51, 9, 31, 35, 36, 37, 38, 39, 51, 10, 42, 43, 10, 45, 31, 51, 51, 49, 50, 31, 51, 53, 12, 35, 36, 37, 38, 39, 8, 9, 42, 43, 66, 45, 12, -1, -1, -1, 50, 233, 52, 53, -1, -1, -1, -1, -1, -1, 8, 9, -1, 31, -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, 42, 43, -1, 45, -1, -1, -1, 49, 50, 31, -1, 53, -1, 35, 36, 37, 38, 39, 8, 9, 42, 43, -1, 45, -1, -1, -1, -1, 50, -1, -1, 53, -1, 8, 9, -1, -1, -1, -1, 8, 9, 31, -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, 42, -1, -1, 45, 31, 8, 9, -1, 50, -1, 31, 53, 8, 9, -1, 36, 43, 44, 45, -1, -1, 42, 49, 50, 45, 52, 53, -1, 31, 50, 8, 9, 53, -1, -1, 31, 8, 9, -1, -1, 43, 44, 45, -1, 40, 8, 9, 50, -1, 45, 53, 8, 9, 31, 50, -1, -1, 53, -1, 31, -1, -1, 40, 8, 9, -1, -1, 45, 31, -1, -1, -1, 50, 45, 31, 53, -1, -1, 50, -1, 52, 53, 45, 40, -1, -1, 31, 50, 45, 52, 53, -1, -1, 50, -1, -1, 53, -1, -1, -1, 45, -1, -1, -1, -1, 50, -1, -1, 53, 5, 6, 7, 8, 9, 10, 11, 12, 6, 7, 8, 9, 10, 11, 12 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 55, 0, 56, 1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 43, 44, 45, 47, 57, 60, 47, 49, 61, 8, 9, 31, 35, 36, 37, 38, 39, 42, 43, 45, 49, 50, 53, 65, 79, 83, 87, 88, 89, 90, 93, 52, 64, 79, 81, 84, 62, 81, 63, 79, 10, 43, 44, 49, 69, 80, 82, 83, 84, 88, 89, 93, 67, 90, 49, 61, 65, 70, 43, 49, 50, 66, 82, 84, 93, 68, 87, 71, 81, 72, 81, 73, 81, 74, 87, 75, 83, 76, 84, 77, 81, 78, 81, 46, 48, 46, 48, 47, 93, 93, 6, 8, 9, 91, 79, 36, 42, 93, 94, 93, 50, 50, 9, 40, 41, 50, 90, 93, 49, 49, 49, 83, 88, 90, 91, 91, 10, 80, 50, 11, 91, 82, 49, 50, 49, 49, 49, 49, 49, 49, 49, 49, 49, 59, 94, 58, 94, 7, 93, 93, 50, 10, 51, 51, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 51, 36, 36, 37, 42, 40, 9, 40, 79, 81, 33, 93, 82, 52, 85, 93, 79, 79, 79, 84, 93, 79, 79, 81, 81, 57, 57, 91, 32, 34, 42, 92, 93, 50, 94, 94, 94, 6, 7, 94, 94, 94, 94, 94, 10, 10, 51, 51, 51, 40, 51, 51, 49, 9, 31, 86, 49, 46, 46, 49, 49, 49, 50, 51, 51, 36, 94, 94, 93, 93, 50, 51, 84, 31, 9, 85, 36, 37, 84, 93, 83, 34, 10, 51, 51, 36, 37, 9, 31, 51, 93, 10, 10, 31, 51, 93, 93, 51, 51 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (YYLEX_PARAM) #else # define YYLEX yylex () #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) #else static void yy_stack_print (bottom, top) yytype_int16 *bottom; yytype_int16 *top; #endif { YYFPRINTF (stderr, "Stack now"); for (; bottom <= top; ++bottom) YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule) #else static void yy_reduce_print (yyvsp, yyrule) YYSTYPE *yyvsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { fprintf (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); fprintf (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into YYRESULT an error message about the unexpected token YYCHAR while in state YYSTATE. Return the number of bytes copied, including the terminating null byte. If YYRESULT is null, do not copy anything; just return the number of bytes that would be copied. As a special case, return 0 if an ordinary "syntax error" message will do. Return YYSIZE_MAXIMUM if overflow occurs during size calculation. */ static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar) { int yyn = yypact[yystate]; if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) return 0; else { int yytype = YYTRANSLATE (yychar); YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; int yysize_overflow = 0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; int yyx; # if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ YY_("syntax error, unexpected %s"); YY_("syntax error, unexpected %s, expecting %s"); YY_("syntax error, unexpected %s, expecting %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); # endif char *yyfmt; char const *yyf; static char const yyunexpected[] = "syntax error, unexpected %s"; static char const yyexpecting[] = ", expecting %s"; static char const yyor[] = " or %s"; char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) * (sizeof yyor - 1))]; char const *yyprefix = yyexpecting; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 1; yyarg[0] = yytname[yytype]; yyfmt = yystpcpy (yyformat, yyunexpected); for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; yyformat[sizeof yyunexpected - 1] = '\0'; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); yyprefix = yyor; } yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; if (yysize_overflow) return YYSIZE_MAXIMUM; if (yyresult) { /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ char *yyp = yyresult; int yyi = 0; while ((*yyp = *yyf) != '\0') { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else { yyp++; yyf++; } } } return yysize; } } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void yydestruct (yymsg, yytype, yyvaluep) const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /* The look-ahead symbol. */ int yychar; /* The semantic value of the look-ahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { int yystate; int yyn; int yyresult; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* Look-ahead token as an internal (translated) token number. */ int yytoken = 0; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif /* Three stacks and their tools: `yyss': related to states, `yyvs': related to semantic values, `yyls': related to locations. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss = yyssa; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) YYSIZE_T yystacksize = YYINITDEPTH; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss); YYSTACK_RELOCATE (yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a look-ahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a look-ahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } if (yyn == YYFINAL) YYACCEPT; /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the look-ahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 3: #line 71 "a.y" { stmtline = lineno; } break; case 5: #line 78 "a.y" { if((yyvsp[(1) - (2)].sym)->value != pc) yyerror("redeclaration of %s", (yyvsp[(1) - (2)].sym)->name); (yyvsp[(1) - (2)].sym)->value = pc; } break; case 7: #line 85 "a.y" { (yyvsp[(1) - (2)].sym)->type = LLAB; (yyvsp[(1) - (2)].sym)->value = pc; } break; case 12: #line 96 "a.y" { (yyvsp[(1) - (3)].sym)->type = LVAR; (yyvsp[(1) - (3)].sym)->value = (yyvsp[(3) - (3)].lval); } break; case 13: #line 101 "a.y" { if((yyvsp[(1) - (3)].sym)->value != (yyvsp[(3) - (3)].lval)) yyerror("redeclaration of %s", (yyvsp[(1) - (3)].sym)->name); (yyvsp[(1) - (3)].sym)->value = (yyvsp[(3) - (3)].lval); } break; case 14: #line 106 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 15: #line 107 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 16: #line 108 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 17: #line 109 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 18: #line 110 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 19: #line 111 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 20: #line 112 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 21: #line 113 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 22: #line 114 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 23: #line 115 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 24: #line 116 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 25: #line 117 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 26: #line 118 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 27: #line 119 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 28: #line 120 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 29: #line 121 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 30: #line 122 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 31: #line 123 "a.y" { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); } break; case 32: #line 126 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = nullgen; } break; case 33: #line 131 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = nullgen; } break; case 34: #line 138 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 35: #line 145 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 36: #line 152 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (2)].addr); (yyval.addr2).to = nullgen; } break; case 37: #line 157 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (1)].addr); (yyval.addr2).to = nullgen; } break; case 38: #line 164 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(2) - (2)].addr); } break; case 39: #line 169 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(1) - (1)].addr); } break; case 40: #line 176 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(2) - (2)].addr); } break; case 41: #line 181 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(1) - (1)].addr); } break; case 42: #line 186 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 43: #line 193 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).from.scale = (yyvsp[(3) - (5)].lval); (yyval.addr2).to = (yyvsp[(5) - (5)].addr); } break; case 44: #line 201 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 45: #line 206 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).from.scale = (yyvsp[(3) - (5)].lval); (yyval.addr2).to = (yyvsp[(5) - (5)].addr); } break; case 46: #line 214 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(2) - (2)].addr); } break; case 47: #line 219 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(1) - (1)].addr); } break; case 48: #line 224 "a.y" { (yyval.addr2).from = nullgen; (yyval.addr2).to = (yyvsp[(2) - (2)].addr); (yyval.addr2).to.index = (yyvsp[(2) - (2)].addr).type; (yyval.addr2).to.type = D_INDIR+D_ADDR; } break; case 51: #line 237 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 52: #line 242 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).to = (yyvsp[(3) - (5)].addr); if((yyval.addr2).from.index != D_NONE) yyerror("dp shift with lhs index"); (yyval.addr2).from.index = (yyvsp[(5) - (5)].lval); } break; case 53: #line 252 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 54: #line 257 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).to = (yyvsp[(3) - (5)].addr); if((yyval.addr2).to.index != D_NONE) yyerror("dp move with lhs index"); (yyval.addr2).to.index = (yyvsp[(5) - (5)].lval); } break; case 55: #line 267 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (2)].addr); (yyval.addr2).to = nullgen; } break; case 56: #line 272 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (1)].addr); (yyval.addr2).to = nullgen; } break; case 57: #line 277 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 58: #line 284 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 59: #line 289 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).from.scale = (yyvsp[(3) - (5)].lval); (yyval.addr2).to = (yyvsp[(5) - (5)].addr); } break; case 60: #line 297 "a.y" { (yyval.addr2).from = (yyvsp[(1) - (5)].addr); (yyval.addr2).to = (yyvsp[(3) - (5)].addr); (yyval.addr2).to.offset = (yyvsp[(5) - (5)].lval); } break; case 61: #line 305 "a.y" { (yyval.addr2).from = (yyvsp[(3) - (5)].addr); (yyval.addr2).to = (yyvsp[(5) - (5)].addr); if((yyvsp[(1) - (5)].addr).type != D_CONST) yyerror("illegal constant"); (yyval.addr2).to.offset = (yyvsp[(1) - (5)].addr).offset; } break; case 62: #line 315 "a.y" { if((yyvsp[(1) - (3)].addr).type != D_CONST || (yyvsp[(3) - (3)].addr).type != D_CONST) yyerror("arguments to PCDATA must be integer constants"); (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 63: #line 324 "a.y" { if((yyvsp[(1) - (3)].addr).type != D_CONST) yyerror("index for FUNCDATA must be integer constant"); if((yyvsp[(3) - (3)].addr).type != D_EXTERN && (yyvsp[(3) - (3)].addr).type != D_STATIC) yyerror("value for FUNCDATA must be symbol reference"); (yyval.addr2).from = (yyvsp[(1) - (3)].addr); (yyval.addr2).to = (yyvsp[(3) - (3)].addr); } break; case 68: #line 341 "a.y" { (yyval.addr) = (yyvsp[(2) - (2)].addr); } break; case 69: #line 345 "a.y" { (yyval.addr) = (yyvsp[(2) - (2)].addr); } break; case 75: #line 358 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_BRANCH; (yyval.addr).offset = (yyvsp[(1) - (4)].lval) + pc; } break; case 76: #line 364 "a.y" { (yyval.addr) = nullgen; if(pass == 2) yyerror("undefined label: %s", (yyvsp[(1) - (2)].sym)->name); (yyval.addr).type = D_BRANCH; (yyval.addr).offset = (yyvsp[(2) - (2)].lval); } break; case 77: #line 372 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_BRANCH; (yyval.addr).offset = (yyvsp[(1) - (2)].sym)->value + (yyvsp[(2) - (2)].lval); } break; case 78: #line 380 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = (yyvsp[(1) - (1)].lval); } break; case 79: #line 385 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = (yyvsp[(1) - (1)].lval); } break; case 80: #line 390 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = (yyvsp[(1) - (1)].lval); } break; case 81: #line 395 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = (yyvsp[(1) - (1)].lval); } break; case 82: #line 400 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_SP; } break; case 83: #line 405 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = (yyvsp[(1) - (1)].lval); } break; case 84: #line 412 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_CONST; (yyval.addr).offset = (yyvsp[(2) - (2)].lval); } break; case 85: #line 418 "a.y" { (yyval.addr) = (yyvsp[(2) - (2)].addr); (yyval.addr).index = (yyvsp[(2) - (2)].addr).type; (yyval.addr).type = D_ADDR; /* if($2.type == D_AUTO || $2.type == D_PARAM) yyerror("constant cannot be automatic: %s", $2.sym->name); */ } break; case 86: #line 429 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_SCONST; memcpy((yyval.addr).u.sval, (yyvsp[(2) - (2)].sval), sizeof((yyval.addr).u.sval)); } break; case 87: #line 435 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_FCONST; (yyval.addr).u.dval = (yyvsp[(2) - (2)].dval); } break; case 88: #line 441 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_FCONST; (yyval.addr).u.dval = (yyvsp[(3) - (4)].dval); } break; case 89: #line 447 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_FCONST; (yyval.addr).u.dval = -(yyvsp[(4) - (5)].dval); } break; case 90: #line 453 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_FCONST; (yyval.addr).u.dval = -(yyvsp[(3) - (3)].dval); } break; case 91: #line 461 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_CONST2; (yyval.addr).offset = (yyvsp[(2) - (2)].con2).v1; (yyval.addr).offset2 = (yyvsp[(2) - (2)].con2).v2; } break; case 92: #line 470 "a.y" { (yyval.con2).v1 = (yyvsp[(1) - (1)].lval); (yyval.con2).v2 = ArgsSizeUnknown; } break; case 93: #line 475 "a.y" { (yyval.con2).v1 = -(yyvsp[(2) - (2)].lval); (yyval.con2).v2 = ArgsSizeUnknown; } break; case 94: #line 480 "a.y" { (yyval.con2).v1 = (yyvsp[(1) - (3)].lval); (yyval.con2).v2 = (yyvsp[(3) - (3)].lval); } break; case 95: #line 485 "a.y" { (yyval.con2).v1 = -(yyvsp[(2) - (4)].lval); (yyval.con2).v2 = (yyvsp[(4) - (4)].lval); } break; case 98: #line 496 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+D_NONE; (yyval.addr).offset = (yyvsp[(1) - (1)].lval); } break; case 99: #line 502 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+(yyvsp[(3) - (4)].lval); (yyval.addr).offset = (yyvsp[(1) - (4)].lval); } break; case 100: #line 508 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+D_SP; (yyval.addr).offset = (yyvsp[(1) - (4)].lval); } break; case 101: #line 514 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+D_NONE; (yyval.addr).offset = (yyvsp[(1) - (6)].lval); (yyval.addr).index = (yyvsp[(3) - (6)].lval); (yyval.addr).scale = (yyvsp[(5) - (6)].lval); checkscale((yyval.addr).scale); } break; case 102: #line 523 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+(yyvsp[(3) - (9)].lval); (yyval.addr).offset = (yyvsp[(1) - (9)].lval); (yyval.addr).index = (yyvsp[(6) - (9)].lval); (yyval.addr).scale = (yyvsp[(8) - (9)].lval); checkscale((yyval.addr).scale); } break; case 103: #line 532 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+(yyvsp[(3) - (9)].lval); (yyval.addr).offset = (yyvsp[(1) - (9)].lval); (yyval.addr).index = (yyvsp[(6) - (9)].lval); (yyval.addr).scale = (yyvsp[(8) - (9)].lval); checkscale((yyval.addr).scale); } break; case 104: #line 541 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+(yyvsp[(2) - (3)].lval); } break; case 105: #line 546 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+D_SP; } break; case 106: #line 551 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+(yyvsp[(3) - (4)].lval); (yyval.addr).offset = (yyvsp[(1) - (4)].lval); } break; case 107: #line 557 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+D_NONE; (yyval.addr).index = (yyvsp[(2) - (5)].lval); (yyval.addr).scale = (yyvsp[(4) - (5)].lval); checkscale((yyval.addr).scale); } break; case 108: #line 565 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_INDIR+(yyvsp[(2) - (8)].lval); (yyval.addr).index = (yyvsp[(5) - (8)].lval); (yyval.addr).scale = (yyvsp[(7) - (8)].lval); checkscale((yyval.addr).scale); } break; case 109: #line 575 "a.y" { (yyval.addr) = (yyvsp[(1) - (1)].addr); } break; case 110: #line 579 "a.y" { (yyval.addr) = (yyvsp[(1) - (6)].addr); (yyval.addr).index = (yyvsp[(3) - (6)].lval); (yyval.addr).scale = (yyvsp[(5) - (6)].lval); checkscale((yyval.addr).scale); } break; case 111: #line 588 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = (yyvsp[(4) - (5)].lval); (yyval.addr).sym = linklookup(ctxt, (yyvsp[(1) - (5)].sym)->name, 0); (yyval.addr).offset = (yyvsp[(2) - (5)].lval); } break; case 112: #line 595 "a.y" { (yyval.addr) = nullgen; (yyval.addr).type = D_STATIC; (yyval.addr).sym = linklookup(ctxt, (yyvsp[(1) - (7)].sym)->name, 1); (yyval.addr).offset = (yyvsp[(4) - (7)].lval); } break; case 113: #line 603 "a.y" { (yyval.lval) = 0; } break; case 114: #line 607 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; case 115: #line 611 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; case 117: #line 618 "a.y" { (yyval.lval) = D_AUTO; } break; case 120: #line 626 "a.y" { (yyval.lval) = (yyvsp[(1) - (1)].sym)->value; } break; case 121: #line 630 "a.y" { (yyval.lval) = -(yyvsp[(2) - (2)].lval); } break; case 122: #line 634 "a.y" { (yyval.lval) = (yyvsp[(2) - (2)].lval); } break; case 123: #line 638 "a.y" { (yyval.lval) = ~(yyvsp[(2) - (2)].lval); } break; case 124: #line 642 "a.y" { (yyval.lval) = (yyvsp[(2) - (3)].lval); } break; case 126: #line 649 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval); } break; case 127: #line 653 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval); } break; case 128: #line 657 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval); } break; case 129: #line 661 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval); } break; case 130: #line 665 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval); } break; case 131: #line 669 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval); } break; case 132: #line 673 "a.y" { (yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval); } break; case 133: #line 677 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval); } break; case 134: #line 681 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval); } break; case 135: #line 685 "a.y" { (yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval); } break; /* Line 1267 of yacc.c. */ #line 2566 "y.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) { YYSIZE_T yyalloc = 2 * yysize; if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) yyalloc = YYSTACK_ALLOC_MAXIMUM; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yyalloc); if (yymsg) yymsg_alloc = yyalloc; else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; } } if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); yyerror (yymsg); } else { yyerror (YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } } #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse look-ahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse look-ahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } if (yyn == YYFINAL) YYACCEPT; *++yyvsp = yylval; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #ifndef yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEOF && yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8a/y.tab.h�������������������������������������������������������������������������������0100644�0000000�0000000�00000006627�12412656734�014537� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { LTYPE0 = 258, LTYPE1 = 259, LTYPE2 = 260, LTYPE3 = 261, LTYPE4 = 262, LTYPEC = 263, LTYPED = 264, LTYPEN = 265, LTYPER = 266, LTYPET = 267, LTYPES = 268, LTYPEM = 269, LTYPEI = 270, LTYPEG = 271, LTYPEXC = 272, LTYPEX = 273, LTYPEPC = 274, LTYPEF = 275, LCONST = 276, LFP = 277, LPC = 278, LSB = 279, LBREG = 280, LLREG = 281, LSREG = 282, LFREG = 283, LXREG = 284, LFCONST = 285, LSCONST = 286, LSP = 287, LNAME = 288, LLAB = 289, LVAR = 290 }; #endif /* Tokens. */ #define LTYPE0 258 #define LTYPE1 259 #define LTYPE2 260 #define LTYPE3 261 #define LTYPE4 262 #define LTYPEC 263 #define LTYPED 264 #define LTYPEN 265 #define LTYPER 266 #define LTYPET 267 #define LTYPES 268 #define LTYPEM 269 #define LTYPEI 270 #define LTYPEG 271 #define LTYPEXC 272 #define LTYPEX 273 #define LTYPEPC 274 #define LTYPEF 275 #define LCONST 276 #define LFP 277 #define LPC 278 #define LSB 279 #define LBREG 280 #define LLREG 281 #define LSREG 282 #define LFREG 283 #define LXREG 284 #define LFCONST 285 #define LSCONST 286 #define LSP 287 #define LNAME 288 #define LLAB 289 #define LVAR 290 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 38 "a.y" { Sym *sym; int32 lval; struct { int32 v1; int32 v2; } con2; double dval; char sval[8]; Addr addr; Addr2 addr2; } /* Line 1529 of yacc.c. */ #line 132 "y.tab.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif extern YYSTYPE yylval; ���������������������������������������������������������������������������������������������������������go/src/cmd/8c���������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013267� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8c/Makefile������������������������������������������������������������������������������0100644�0000000�0000000�00000000265�12412656734�015003� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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. include ../../Make.dist �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8c/cgen.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000104653�12412656737�014434� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8c/cgen.c // http://code.google.com/p/inferno-os/source/browse/utils/8c/cgen.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" #include "../../pkg/runtime/funcdata.h" /* ,x/^(print|prtree)\(/i/\/\/ */ void cgen(Node *n, Node *nn) { Node *l, *r, *t; Prog *p1; Node nod, nod1, nod2, nod3, nod4; int o, hardleft; int32 v, curs; vlong c; if(debug['g']) { prtree(nn, "cgen lhs"); prtree(n, "cgen"); } if(n == Z || n->type == T) return; if(typesuv[n->type->etype]) { sugen(n, nn, n->type->width); return; } l = n->left; r = n->right; o = n->op; if(n->op == OEXREG || (nn != Z && nn->op == OEXREG)) { gmove(n, nn); return; } if(n->addable >= INDEXED) { if(nn == Z) { switch(o) { default: nullwarn(Z, Z); break; case OINDEX: nullwarn(l, r); break; } return; } gmove(n, nn); return; } curs = cursafe; if(l->complex >= FNX) if(r != Z && r->complex >= FNX) switch(o) { default: if(cond(o) && typesuv[l->type->etype]) break; regret(&nod, r); cgen(r, &nod); regsalloc(&nod1, r); gmove(&nod, &nod1); regfree(&nod); nod = *n; nod.right = &nod1; cgen(&nod, nn); return; case OFUNC: case OCOMMA: case OANDAND: case OOROR: case OCOND: case ODOT: break; } hardleft = l->addable < INDEXED || l->complex >= FNX; switch(o) { default: diag(n, "unknown op in cgen: %O", o); break; case ONEG: case OCOM: if(nn == Z) { nullwarn(l, Z); break; } regalloc(&nod, l, nn); cgen(l, &nod); gopcode(o, n->type, Z, &nod); gmove(&nod, nn); regfree(&nod); break; case OAS: if(typefd[n->type->etype]) { cgen(r, &fregnode0); if(nn != Z) gins(AFMOVD, &fregnode0, &fregnode0); if(l->addable < INDEXED) { reglcgen(&nod, l, Z); gmove(&fregnode0, &nod); regfree(&nod); } else gmove(&fregnode0, l); if(nn != Z) gmove(&fregnode0, nn); return; } if(l->op == OBIT) goto bitas; if(!hardleft) { if(nn != Z || r->addable < INDEXED) { if(r->complex >= FNX && nn == Z) regret(&nod, r); else regalloc(&nod, r, nn); cgen(r, &nod); gmove(&nod, l); if(nn != Z) gmove(&nod, nn); regfree(&nod); } else gmove(r, l); break; } if(l->complex >= r->complex) { if(l->op == OINDEX && r->op == OCONST) { gmove(r, l); break; } reglcgen(&nod1, l, Z); if(r->addable >= INDEXED) { gmove(r, &nod1); if(nn != Z) gmove(r, nn); regfree(&nod1); break; } regalloc(&nod, r, nn); cgen(r, &nod); } else { regalloc(&nod, r, nn); cgen(r, &nod); reglcgen(&nod1, l, Z); } gmove(&nod, &nod1); regfree(&nod); regfree(&nod1); break; bitas: n = l->left; regalloc(&nod, r, nn); if(l->complex >= r->complex) { reglcgen(&nod1, n, Z); cgen(r, &nod); } else { cgen(r, &nod); reglcgen(&nod1, n, Z); } regalloc(&nod2, n, Z); gmove(&nod1, &nod2); bitstore(l, &nod, &nod1, &nod2, nn); break; case OBIT: if(nn == Z) { nullwarn(l, Z); break; } bitload(n, &nod, Z, Z, nn); gmove(&nod, nn); regfree(&nod); break; case OLSHR: case OASHL: case OASHR: if(nn == Z) { nullwarn(l, r); break; } if(r->op == OCONST) { if(r->vconst == 0) { cgen(l, nn); break; } regalloc(&nod, l, nn); cgen(l, &nod); if(o == OASHL && r->vconst == 1) gopcode(OADD, n->type, &nod, &nod); else gopcode(o, n->type, r, &nod); gmove(&nod, nn); regfree(&nod); break; } /* * get nod to be D_CX */ if(nodreg(&nod, nn, D_CX)) { regsalloc(&nod1, n); gmove(&nod, &nod1); cgen(n, &nod); /* probably a bug */ gmove(&nod, nn); gmove(&nod1, &nod); break; } reg[D_CX]++; if(nn->op == OREGISTER && nn->reg == D_CX) regalloc(&nod1, l, Z); else regalloc(&nod1, l, nn); if(r->complex >= l->complex) { cgen(r, &nod); cgen(l, &nod1); } else { cgen(l, &nod1); cgen(r, &nod); } gopcode(o, n->type, &nod, &nod1); gmove(&nod1, nn); regfree(&nod); regfree(&nod1); break; case OADD: case OSUB: case OOR: case OXOR: case OAND: if(nn == Z) { nullwarn(l, r); break; } if(typefd[n->type->etype]) goto fop; if(r->op == OCONST) { if(r->vconst == 0 && o != OAND) { cgen(l, nn); break; } } if(n->op == OOR && l->op == OASHL && r->op == OLSHR && l->right->op == OCONST && r->right->op == OCONST && l->left->op == ONAME && r->left->op == ONAME && l->left->sym == r->left->sym && l->right->vconst + r->right->vconst == 8 * l->left->type->width) { regalloc(&nod, l->left, nn); cgen(l->left, &nod); gopcode(OROTL, n->type, l->right, &nod); gmove(&nod, nn); regfree(&nod); break; } if(n->op == OADD && l->op == OASHL && l->right->op == OCONST && (r->op != OCONST || r->vconst < -128 || r->vconst > 127)) { c = l->right->vconst; if(c > 0 && c <= 3) { if(l->left->complex >= r->complex) { regalloc(&nod, l->left, nn); cgen(l->left, &nod); if(r->addable < INDEXED) { regalloc(&nod1, r, Z); cgen(r, &nod1); genmuladd(&nod, &nod, 1 << c, &nod1); regfree(&nod1); } else genmuladd(&nod, &nod, 1 << c, r); } else { regalloc(&nod, r, nn); cgen(r, &nod); regalloc(&nod1, l->left, Z); cgen(l->left, &nod1); genmuladd(&nod, &nod1, 1 << c, &nod); regfree(&nod1); } gmove(&nod, nn); regfree(&nod); break; } } if(r->addable >= INDEXED) { regalloc(&nod, l, nn); cgen(l, &nod); gopcode(o, n->type, r, &nod); gmove(&nod, nn); regfree(&nod); break; } if(l->complex >= r->complex) { regalloc(&nod, l, nn); cgen(l, &nod); regalloc(&nod1, r, Z); cgen(r, &nod1); gopcode(o, n->type, &nod1, &nod); } else { regalloc(&nod1, r, nn); cgen(r, &nod1); regalloc(&nod, l, Z); cgen(l, &nod); gopcode(o, n->type, &nod1, &nod); } gmove(&nod, nn); regfree(&nod); regfree(&nod1); break; case OLMOD: case OMOD: case OLMUL: case OLDIV: case OMUL: case ODIV: if(nn == Z) { nullwarn(l, r); break; } if(typefd[n->type->etype]) goto fop; if(r->op == OCONST) { SET(v); switch(o) { case ODIV: case OMOD: c = r->vconst; if(c < 0) c = -c; v = xlog2(c); if(v < 0) break; /* fall thru */ case OMUL: case OLMUL: regalloc(&nod, l, nn); cgen(l, &nod); switch(o) { case OMUL: case OLMUL: mulgen(n->type, r, &nod); break; case ODIV: sdiv2(r->vconst, v, l, &nod); break; case OMOD: smod2(r->vconst, v, l, &nod); break; } gmove(&nod, nn); regfree(&nod); goto done; case OLDIV: c = r->vconst; if((c & 0x80000000) == 0) break; regalloc(&nod1, l, Z); cgen(l, &nod1); regalloc(&nod, l, nn); zeroregm(&nod); gins(ACMPL, &nod1, nodconst(c)); gins(ASBBL, nodconst(-1), &nod); regfree(&nod1); gmove(&nod, nn); regfree(&nod); goto done; } } if(o == OMUL || o == OLMUL) { if(l->addable >= INDEXED) { t = l; l = r; r = t; } reg[D_DX]++; // for gopcode case OMUL regalloc(&nod, l, nn); cgen(l, &nod); if(r->addable < INDEXED) { regalloc(&nod1, r, Z); cgen(r, &nod1); gopcode(OMUL, n->type, &nod1, &nod); regfree(&nod1); }else gopcode(OMUL, n->type, r, &nod); /* addressible */ gmove(&nod, nn); regfree(&nod); reg[D_DX]--; break; } /* * get nod to be D_AX * get nod1 to be D_DX */ if(nodreg(&nod, nn, D_AX)) { regsalloc(&nod2, n); gmove(&nod, &nod2); v = reg[D_AX]; reg[D_AX] = 0; if(isreg(l, D_AX)) { nod3 = *n; nod3.left = &nod2; cgen(&nod3, nn); } else if(isreg(r, D_AX)) { nod3 = *n; nod3.right = &nod2; cgen(&nod3, nn); } else cgen(n, nn); gmove(&nod2, &nod); reg[D_AX] = v; break; } if(nodreg(&nod1, nn, D_DX)) { regsalloc(&nod2, n); gmove(&nod1, &nod2); v = reg[D_DX]; reg[D_DX] = 0; if(isreg(l, D_DX)) { nod3 = *n; nod3.left = &nod2; cgen(&nod3, nn); } else if(isreg(r, D_DX)) { nod3 = *n; nod3.right = &nod2; cgen(&nod3, nn); } else cgen(n, nn); gmove(&nod2, &nod1); reg[D_DX] = v; break; } reg[D_AX]++; if(r->op == OCONST && (o == ODIV || o == OLDIV)) { reg[D_DX]++; if(l->addable < INDEXED) { regalloc(&nod2, l, Z); cgen(l, &nod2); l = &nod2; } if(o == ODIV) sdivgen(l, r, &nod, &nod1); else udivgen(l, r, &nod, &nod1); gmove(&nod1, nn); if(l == &nod2) regfree(l); goto freeaxdx; } if(l->complex >= r->complex) { cgen(l, &nod); reg[D_DX]++; if(o == ODIV || o == OMOD) gins(ACDQ, Z, Z); if(o == OLDIV || o == OLMOD) zeroregm(&nod1); if(r->addable < INDEXED || r->op == OCONST) { regsalloc(&nod3, r); cgen(r, &nod3); gopcode(o, n->type, &nod3, Z); } else gopcode(o, n->type, r, Z); } else { regsalloc(&nod3, r); cgen(r, &nod3); cgen(l, &nod); reg[D_DX]++; if(o == ODIV || o == OMOD) gins(ACDQ, Z, Z); if(o == OLDIV || o == OLMOD) zeroregm(&nod1); gopcode(o, n->type, &nod3, Z); } if(o == OMOD || o == OLMOD) gmove(&nod1, nn); else gmove(&nod, nn); freeaxdx: regfree(&nod); regfree(&nod1); break; case OASLSHR: case OASASHL: case OASASHR: if(r->op == OCONST) goto asand; if(l->op == OBIT) goto asbitop; if(typefd[n->type->etype]) goto asfop; /* * get nod to be D_CX */ if(nodreg(&nod, nn, D_CX)) { regsalloc(&nod1, n); gmove(&nod, &nod1); cgen(n, &nod); if(nn != Z) gmove(&nod, nn); gmove(&nod1, &nod); break; } reg[D_CX]++; if(r->complex >= l->complex) { cgen(r, &nod); if(hardleft) reglcgen(&nod1, l, Z); else nod1 = *l; } else { if(hardleft) reglcgen(&nod1, l, Z); else nod1 = *l; cgen(r, &nod); } gopcode(o, l->type, &nod, &nod1); regfree(&nod); if(nn != Z) gmove(&nod1, nn); if(hardleft) regfree(&nod1); break; case OASAND: case OASADD: case OASSUB: case OASXOR: case OASOR: asand: if(l->op == OBIT) goto asbitop; if(typefd[n->type->etype]||typefd[r->type->etype]) goto asfop; if(l->complex >= r->complex) { if(hardleft) reglcgen(&nod, l, Z); else nod = *l; if(r->op != OCONST) { regalloc(&nod1, r, nn); cgen(r, &nod1); gopcode(o, l->type, &nod1, &nod); regfree(&nod1); } else gopcode(o, l->type, r, &nod); } else { regalloc(&nod1, r, nn); cgen(r, &nod1); if(hardleft) reglcgen(&nod, l, Z); else nod = *l; gopcode(o, l->type, &nod1, &nod); regfree(&nod1); } if(nn != Z) gmove(&nod, nn); if(hardleft) regfree(&nod); break; case OASLMUL: case OASLDIV: case OASLMOD: case OASMUL: case OASDIV: case OASMOD: if(l->op == OBIT) goto asbitop; if(typefd[n->type->etype]||typefd[r->type->etype]) goto asfop; if(r->op == OCONST) { SET(v); switch(o) { case OASDIV: case OASMOD: c = r->vconst; if(c < 0) c = -c; v = xlog2(c); if(v < 0) break; /* fall thru */ case OASMUL: case OASLMUL: if(hardleft) reglcgen(&nod2, l, Z); else nod2 = *l; regalloc(&nod, l, nn); cgen(&nod2, &nod); switch(o) { case OASMUL: case OASLMUL: mulgen(n->type, r, &nod); break; case OASDIV: sdiv2(r->vconst, v, l, &nod); break; case OASMOD: smod2(r->vconst, v, l, &nod); break; } havev: gmove(&nod, &nod2); if(nn != Z) gmove(&nod, nn); if(hardleft) regfree(&nod2); regfree(&nod); goto done; case OASLDIV: c = r->vconst; if((c & 0x80000000) == 0) break; if(hardleft) reglcgen(&nod2, l, Z); else nod2 = *l; regalloc(&nod1, l, nn); cgen(&nod2, &nod1); regalloc(&nod, l, nn); zeroregm(&nod); gins(ACMPL, &nod1, nodconst(c)); gins(ASBBL, nodconst(-1), &nod); regfree(&nod1); goto havev; } } if(o == OASMUL) { /* should favour AX */ regalloc(&nod, l, nn); if(r->complex >= FNX) { regalloc(&nod1, r, Z); cgen(r, &nod1); r = &nod1; } if(hardleft) reglcgen(&nod2, l, Z); else nod2 = *l; cgen(&nod2, &nod); if(r->addable < INDEXED) { if(r->complex < FNX) { regalloc(&nod1, r, Z); cgen(r, &nod1); } gopcode(OASMUL, n->type, &nod1, &nod); regfree(&nod1); } else gopcode(OASMUL, n->type, r, &nod); if(r == &nod1) regfree(r); gmove(&nod, &nod2); if(nn != Z) gmove(&nod, nn); regfree(&nod); if(hardleft) regfree(&nod2); break; } /* * get nod to be D_AX * get nod1 to be D_DX */ if(nodreg(&nod, nn, D_AX)) { regsalloc(&nod2, n); gmove(&nod, &nod2); v = reg[D_AX]; reg[D_AX] = 0; if(isreg(l, D_AX)) { nod3 = *n; nod3.left = &nod2; cgen(&nod3, nn); } else if(isreg(r, D_AX)) { nod3 = *n; nod3.right = &nod2; cgen(&nod3, nn); } else cgen(n, nn); gmove(&nod2, &nod); reg[D_AX] = v; break; } if(nodreg(&nod1, nn, D_DX)) { regsalloc(&nod2, n); gmove(&nod1, &nod2); v = reg[D_DX]; reg[D_DX] = 0; if(isreg(l, D_DX)) { nod3 = *n; nod3.left = &nod2; cgen(&nod3, nn); } else if(isreg(r, D_DX)) { nod3 = *n; nod3.right = &nod2; cgen(&nod3, nn); } else cgen(n, nn); gmove(&nod2, &nod1); reg[D_DX] = v; break; } reg[D_AX]++; reg[D_DX]++; if(l->complex >= r->complex) { if(hardleft) reglcgen(&nod2, l, Z); else nod2 = *l; cgen(&nod2, &nod); if(r->op == OCONST) { switch(o) { case OASDIV: sdivgen(&nod2, r, &nod, &nod1); goto divdone; case OASLDIV: udivgen(&nod2, r, &nod, &nod1); divdone: gmove(&nod1, &nod2); if(nn != Z) gmove(&nod1, nn); goto freelxaxdx; } } if(o == OASDIV || o == OASMOD) gins(ACDQ, Z, Z); if(o == OASLDIV || o == OASLMOD) zeroregm(&nod1); if(r->addable < INDEXED || r->op == OCONST || !typeil[r->type->etype]) { regalloc(&nod3, r, Z); cgen(r, &nod3); gopcode(o, l->type, &nod3, Z); regfree(&nod3); } else gopcode(o, n->type, r, Z); } else { regalloc(&nod3, r, Z); cgen(r, &nod3); if(hardleft) reglcgen(&nod2, l, Z); else nod2 = *l; cgen(&nod2, &nod); if(o == OASDIV || o == OASMOD) gins(ACDQ, Z, Z); if(o == OASLDIV || o == OASLMOD) zeroregm(&nod1); gopcode(o, l->type, &nod3, Z); regfree(&nod3); } if(o == OASMOD || o == OASLMOD) { gmove(&nod1, &nod2); if(nn != Z) gmove(&nod1, nn); } else { gmove(&nod, &nod2); if(nn != Z) gmove(&nod, nn); } freelxaxdx: if(hardleft) regfree(&nod2); regfree(&nod); regfree(&nod1); break; fop: if(l->complex >= r->complex) { cgen(l, &fregnode0); if(r->addable < INDEXED) { cgen(r, &fregnode0); fgopcode(o, &fregnode0, &fregnode1, 1, 0); } else fgopcode(o, r, &fregnode0, 0, 0); } else { cgen(r, &fregnode0); if(l->addable < INDEXED) { cgen(l, &fregnode0); fgopcode(o, &fregnode0, &fregnode1, 1, 1); } else fgopcode(o, l, &fregnode0, 0, 1); } gmove(&fregnode0, nn); break; asfop: if(l->complex >= r->complex) { if(hardleft) reglcgen(&nod, l, Z); else nod = *l; cgen(r, &fregnode0); } else { cgen(r, &fregnode0); if(hardleft) reglcgen(&nod, l, Z); else nod = *l; } if(!typefd[l->type->etype]) { gmove(&nod, &fregnode0); fgopcode(o, &fregnode0, &fregnode1, 1, 1); } else fgopcode(o, &nod, &fregnode0, 0, 1); if(nn != Z) gins(AFMOVD, &fregnode0, &fregnode0); gmove(&fregnode0, &nod); if(nn != Z) gmove(&fregnode0, nn); if(hardleft) regfree(&nod); break; asbitop: regalloc(&nod4, n, nn); if(l->complex >= r->complex) { bitload(l, &nod, &nod1, &nod2, &nod4); regalloc(&nod3, r, Z); cgen(r, &nod3); } else { regalloc(&nod3, r, Z); cgen(r, &nod3); bitload(l, &nod, &nod1, &nod2, &nod4); } gmove(&nod, &nod4); if(typefd[nod3.type->etype]) fgopcode(o, &fregnode0, &fregnode1, 1, 1); else { Node onod; /* incredible grot ... */ onod = nod3; onod.op = o; onod.complex = 2; onod.addable = 0; onod.type = tfield; onod.left = &nod4; onod.right = &nod3; cgen(&onod, Z); } regfree(&nod3); gmove(&nod4, &nod); regfree(&nod4); bitstore(l, &nod, &nod1, &nod2, nn); break; case OADDR: if(nn == Z) { nullwarn(l, Z); break; } lcgen(l, nn); break; case OFUNC: if(l->complex >= FNX) { if(l->op != OIND) diag(n, "bad function call"); regret(&nod, l->left); cgen(l->left, &nod); regsalloc(&nod1, l->left); gmove(&nod, &nod1); regfree(&nod); nod = *n; nod.left = &nod2; nod2 = *l; nod2.left = &nod1; nod2.complex = 1; cgen(&nod, nn); return; } gargs(r, &nod, &nod1); gpcdata(PCDATA_ArgSize, curarg); if(l->addable < INDEXED) { reglcgen(&nod, l, nn); nod.op = OREGISTER; gopcode(OFUNC, n->type, Z, &nod); regfree(&nod); } else gopcode(OFUNC, n->type, Z, l); gpcdata(PCDATA_ArgSize, -1); if(REGARG >= 0 && reg[REGARG]) reg[REGARG]--; if(nn != Z) { regret(&nod, n); gmove(&nod, nn); regfree(&nod); } else if(typefd[n->type->etype]) gins(AFMOVDP, &fregnode0, &fregnode0); break; case OIND: if(nn == Z) { nullwarn(l, Z); break; } regialloc(&nod, n, nn); r = l; while(r->op == OADD) r = r->right; if(sconst(r)) { v = r->vconst; r->vconst = 0; cgen(l, &nod); nod.xoffset += v; r->vconst = v; } else cgen(l, &nod); regind(&nod, n); gmove(&nod, nn); regfree(&nod); break; case OEQ: case ONE: case OLE: case OLT: case OGE: case OGT: case OLO: case OLS: case OHI: case OHS: if(nn == Z) { nullwarn(l, r); break; } boolgen(n, 1, nn); break; case OANDAND: case OOROR: boolgen(n, 1, nn); if(nn == Z) patch(p, pc); break; case ONOT: if(nn == Z) { nullwarn(l, Z); break; } boolgen(n, 1, nn); break; case OCOMMA: cgen(l, Z); cgen(r, nn); break; case OCAST: if(nn == Z) { nullwarn(l, Z); break; } /* * convert from types l->n->nn */ if(nocast(l->type, n->type) && nocast(n->type, nn->type)) { /* both null, gen l->nn */ cgen(l, nn); break; } if(typev[l->type->etype]) { cgen64(n, nn); break; } regalloc(&nod, l, nn); cgen(l, &nod); regalloc(&nod1, n, &nod); gmove(&nod, &nod1); gmove(&nod1, nn); regfree(&nod1); regfree(&nod); break; case ODOT: sugen(l, nodrat, l->type->width); if(nn == Z) break; warn(n, "non-interruptable temporary"); nod = *nodrat; if(!r || r->op != OCONST) { diag(n, "DOT and no offset"); break; } nod.xoffset += (int32)r->vconst; nod.type = n->type; cgen(&nod, nn); break; case OCOND: bcgen(l, 1); p1 = p; cgen(r->left, nn); gbranch(OGOTO); patch(p1, pc); p1 = p; cgen(r->right, nn); patch(p1, pc); break; case OPOSTINC: case OPOSTDEC: v = 1; if(l->type->etype == TIND) v = l->type->link->width; if(o == OPOSTDEC) v = -v; if(l->op == OBIT) goto bitinc; if(nn == Z) goto pre; if(hardleft) reglcgen(&nod, l, Z); else nod = *l; if(typefd[n->type->etype]) goto fltinc; gmove(&nod, nn); gopcode(OADD, n->type, nodconst(v), &nod); if(hardleft) regfree(&nod); break; case OPREINC: case OPREDEC: v = 1; if(l->type->etype == TIND) v = l->type->link->width; if(o == OPREDEC) v = -v; if(l->op == OBIT) goto bitinc; pre: if(hardleft) reglcgen(&nod, l, Z); else nod = *l; if(typefd[n->type->etype]) goto fltinc; gopcode(OADD, n->type, nodconst(v), &nod); if(nn != Z) gmove(&nod, nn); if(hardleft) regfree(&nod); break; fltinc: gmove(&nod, &fregnode0); if(nn != Z && (o == OPOSTINC || o == OPOSTDEC)) gins(AFMOVD, &fregnode0, &fregnode0); gins(AFLD1, Z, Z); if(v < 0) fgopcode(OSUB, &fregnode0, &fregnode1, 1, 0); else fgopcode(OADD, &fregnode0, &fregnode1, 1, 0); if(nn != Z && (o == OPREINC || o == OPREDEC)) gins(AFMOVD, &fregnode0, &fregnode0); gmove(&fregnode0, &nod); if(hardleft) regfree(&nod); break; bitinc: if(nn != Z && (o == OPOSTINC || o == OPOSTDEC)) { bitload(l, &nod, &nod1, &nod2, Z); gmove(&nod, nn); gopcode(OADD, tfield, nodconst(v), &nod); bitstore(l, &nod, &nod1, &nod2, Z); break; } bitload(l, &nod, &nod1, &nod2, nn); gopcode(OADD, tfield, nodconst(v), &nod); bitstore(l, &nod, &nod1, &nod2, nn); break; } done: cursafe = curs; } void reglcgen(Node *t, Node *n, Node *nn) { Node *r; int32 v; regialloc(t, n, nn); if(n->op == OIND) { r = n->left; while(r->op == OADD) r = r->right; if(sconst(r)) { v = r->vconst; r->vconst = 0; lcgen(n, t); t->xoffset += v; r->vconst = v; regind(t, n); return; } } lcgen(n, t); regind(t, n); } void lcgen(Node *n, Node *nn) { Prog *p1; Node nod; if(debug['g']) { prtree(nn, "lcgen lhs"); prtree(n, "lcgen"); } if(n == Z || n->type == T) return; if(nn == Z) { nn = &nod; regalloc(&nod, n, Z); } switch(n->op) { default: if(n->addable < INDEXED) { diag(n, "unknown op in lcgen: %O", n->op); break; } gopcode(OADDR, n->type, n, nn); break; case OCOMMA: cgen(n->left, n->left); lcgen(n->right, nn); break; case OIND: cgen(n->left, nn); break; case OCOND: bcgen(n->left, 1); p1 = p; lcgen(n->right->left, nn); gbranch(OGOTO); patch(p1, pc); p1 = p; lcgen(n->right->right, nn); patch(p1, pc); break; } } void bcgen(Node *n, int true) { if(n->type == T) gbranch(OGOTO); else boolgen(n, true, Z); } void boolgen(Node *n, int true, Node *nn) { int o; Prog *p1, *p2, *p3; Node *l, *r, nod, nod1; int32 curs; if(debug['g']) { prtree(nn, "boolgen lhs"); prtree(n, "boolgen"); } curs = cursafe; l = n->left; r = n->right; switch(n->op) { default: if(typev[n->type->etype]) { testv(n, true); goto com; } o = ONE; if(true) o = OEQ; if(typefd[n->type->etype]) { if(n->addable < INDEXED) { cgen(n, &fregnode0); gins(AFLDZ, Z, Z); fgopcode(o, &fregnode0, &fregnode1, 1, 1); } else { gins(AFLDZ, Z, Z); fgopcode(o, n, &fregnode0, 0, 1); } goto com; } /* bad, 13 is address of external that becomes constant */ if(n->addable >= INDEXED && n->addable != 13) { gopcode(o, n->type, n, nodconst(0)); goto com; } regalloc(&nod, n, nn); cgen(n, &nod); gopcode(o, n->type, &nod, nodconst(0)); regfree(&nod); goto com; case OCONST: o = vconst(n); if(!true) o = !o; gbranch(OGOTO); if(o) { p1 = p; gbranch(OGOTO); patch(p1, pc); } goto com; case OCOMMA: cgen(l, Z); boolgen(r, true, nn); break; case ONOT: boolgen(l, !true, nn); break; case OCOND: bcgen(l, 1); p1 = p; bcgen(r->left, true); p2 = p; gbranch(OGOTO); patch(p1, pc); p1 = p; bcgen(r->right, !true); patch(p2, pc); p2 = p; gbranch(OGOTO); patch(p1, pc); patch(p2, pc); goto com; case OANDAND: if(!true) goto caseor; caseand: bcgen(l, true); p1 = p; bcgen(r, !true); p2 = p; patch(p1, pc); gbranch(OGOTO); patch(p2, pc); goto com; case OOROR: if(!true) goto caseand; caseor: bcgen(l, !true); p1 = p; bcgen(r, !true); p2 = p; gbranch(OGOTO); patch(p1, pc); patch(p2, pc); goto com; case OEQ: case ONE: case OLE: case OLT: case OGE: case OGT: case OHI: case OHS: case OLO: case OLS: o = n->op; if(typev[l->type->etype]) { if(!true) n->op = comrel[relindex(o)]; cgen64(n, Z); goto com; } if(true && typefd[l->type->etype] && (o == OEQ || o == ONE)) { // Cannot rewrite !(l == r) into l != r with float64; it breaks NaNs. // Jump around instead. boolgen(n, 0, Z); p1 = p; gbranch(OGOTO); patch(p1, pc); goto com; } if(true) o = comrel[relindex(o)]; if(l->complex >= FNX && r->complex >= FNX) { regret(&nod, r); cgen(r, &nod); regsalloc(&nod1, r); gmove(&nod, &nod1); regfree(&nod); nod = *n; nod.right = &nod1; boolgen(&nod, true, nn); break; } if(typefd[l->type->etype]) { if(l->complex >= r->complex) { cgen(l, &fregnode0); if(r->addable < INDEXED) { cgen(r, &fregnode0); o = invrel[relindex(o)]; fgopcode(o, &fregnode0, &fregnode1, 1, 1); } else fgopcode(o, r, &fregnode0, 0, 1); } else { o = invrel[relindex(o)]; cgen(r, &fregnode0); if(l->addable < INDEXED) { cgen(l, &fregnode0); o = invrel[relindex(o)]; fgopcode(o, &fregnode0, &fregnode1, 1, 1); } else fgopcode(o, l, &fregnode0, 0, 1); } switch(o) { case OEQ: // Already emitted AJEQ; want AJEQ and AJPC. p1 = p; gbranch(OGOTO); p2 = p; patch(p1, pc); gins(AJPC, Z, Z); patch(p2, pc); break; case ONE: // Already emitted AJNE; want AJNE or AJPS. p1 = p; gins(AJPS, Z, Z); p2 = p; gbranch(OGOTO); p3 = p; patch(p1, pc); patch(p2, pc); gbranch(OGOTO); patch(p3, pc); break; } goto com; } if(l->op == OCONST) { o = invrel[relindex(o)]; /* bad, 13 is address of external that becomes constant */ if(r->addable < INDEXED || r->addable == 13) { regalloc(&nod, r, nn); cgen(r, &nod); gopcode(o, l->type, &nod, l); regfree(&nod); } else gopcode(o, l->type, r, l); goto com; } if(l->complex >= r->complex) { regalloc(&nod, l, nn); cgen(l, &nod); if(r->addable < INDEXED) { regalloc(&nod1, r, Z); cgen(r, &nod1); gopcode(o, l->type, &nod, &nod1); regfree(&nod1); } else gopcode(o, l->type, &nod, r); regfree(&nod); goto com; } regalloc(&nod, r, nn); cgen(r, &nod); if(l->addable < INDEXED || l->addable == 13) { regalloc(&nod1, l, Z); cgen(l, &nod1); if(typechlp[l->type->etype]) gopcode(o, types[TINT], &nod1, &nod); else gopcode(o, l->type, &nod1, &nod); regfree(&nod1); } else gopcode(o, l->type, l, &nod); regfree(&nod); com: if(nn != Z) { p1 = p; gmove(nodconst(1L), nn); gbranch(OGOTO); p2 = p; patch(p1, pc); gmove(nodconst(0L), nn); patch(p2, pc); } break; } cursafe = curs; } void sugen(Node *n, Node *nn, int32 w) { Prog *p1; Node nod0, nod1, nod2, nod3, nod4, *h, *l, *r; Type *t; int c, v, x; if(n == Z || n->type == T) return; if(debug['g']) { prtree(nn, "sugen lhs"); prtree(n, "sugen"); } if(nn == nodrat) if(w > nrathole) nrathole = w; switch(n->op) { case OIND: if(nn == Z) { nullwarn(n->left, Z); break; } default: goto copy; case OCONST: if(n->type && typev[n->type->etype]) { if(nn == Z) { nullwarn(n->left, Z); break; } if(nn->op == OREGPAIR) { loadpair(n, nn); break; } else if(!vaddr(nn, 0)) { t = nn->type; nn->type = types[TLONG]; reglcgen(&nod1, nn, Z); nn->type = t; gmove(lo64(n), &nod1); nod1.xoffset += SZ_LONG; gmove(hi64(n), &nod1); regfree(&nod1); } else { gins(AMOVL, lo64(n), nn); nn->xoffset += SZ_LONG; gins(AMOVL, hi64(n), nn); nn->xoffset -= SZ_LONG; break; } break; } goto copy; case ODOT: l = n->left; sugen(l, nodrat, l->type->width); if(nn == Z) break; warn(n, "non-interruptable temporary"); nod1 = *nodrat; r = n->right; if(!r || r->op != OCONST) { diag(n, "DOT and no offset"); break; } nod1.xoffset += (int32)r->vconst; nod1.type = n->type; sugen(&nod1, nn, w); break; case OSTRUCT: /* * rewrite so lhs has no fn call */ if(nn != Z && side(nn)) { nod1 = *n; nod1.type = typ(TIND, n->type); regret(&nod2, &nod1); lcgen(nn, &nod2); regsalloc(&nod0, &nod1); cgen(&nod2, &nod0); regfree(&nod2); nod1 = *n; nod1.op = OIND; nod1.left = &nod0; nod1.right = Z; nod1.complex = 1; sugen(n, &nod1, w); return; } r = n->left; for(t = n->type->link; t != T; t = t->down) { l = r; if(r->op == OLIST) { l = r->left; r = r->right; } if(nn == Z) { cgen(l, nn); continue; } /* * hand craft *(&nn + o) = l */ nod0 = znode; nod0.op = OAS; nod0.type = t; nod0.left = &nod1; nod0.right = nil; nod1 = znode; nod1.op = OIND; nod1.type = t; nod1.left = &nod2; nod2 = znode; nod2.op = OADD; nod2.type = typ(TIND, t); nod2.left = &nod3; nod2.right = &nod4; nod3 = znode; nod3.op = OADDR; nod3.type = nod2.type; nod3.left = nn; nod4 = znode; nod4.op = OCONST; nod4.type = nod2.type; nod4.vconst = t->offset; ccom(&nod0); acom(&nod0); xcom(&nod0); nod0.addable = 0; nod0.right = l; // prtree(&nod0, "hand craft"); cgen(&nod0, Z); } break; case OAS: if(nn == Z) { if(n->addable < INDEXED) sugen(n->right, n->left, w); break; } sugen(n->right, nodrat, w); warn(n, "non-interruptable temporary"); sugen(nodrat, n->left, w); sugen(nodrat, nn, w); break; case OFUNC: if(nn == Z) { sugen(n, nodrat, w); break; } h = nn; if(nn->op == OREGPAIR) { regsalloc(&nod1, nn); nn = &nod1; } if(nn->op != OIND) { nn = new1(OADDR, nn, Z); nn->type = types[TIND]; nn->addable = 0; } else nn = nn->left; n = new(OFUNC, n->left, new(OLIST, nn, n->right)); n->type = types[TVOID]; n->left->type = types[TVOID]; cgen(n, Z); if(h->op == OREGPAIR) loadpair(nn->left, h); break; case OCOND: bcgen(n->left, 1); p1 = p; sugen(n->right->left, nn, w); gbranch(OGOTO); patch(p1, pc); p1 = p; sugen(n->right->right, nn, w); patch(p1, pc); break; case OCOMMA: cgen(n->left, Z); sugen(n->right, nn, w); break; } return; copy: if(nn == Z) { switch(n->op) { case OASADD: case OASSUB: case OASAND: case OASOR: case OASXOR: case OASMUL: case OASLMUL: case OASASHL: case OASASHR: case OASLSHR: break; case OPOSTINC: case OPOSTDEC: case OPREINC: case OPREDEC: break; default: return; } } v = w == 8; if(n->complex >= FNX && nn != nil && nn->complex >= FNX) { t = nn->type; nn->type = types[TLONG]; regialloc(&nod1, nn, Z); lcgen(nn, &nod1); regsalloc(&nod2, nn); nn->type = t; gins(AMOVL, &nod1, &nod2); regfree(&nod1); nod2.type = typ(TIND, t); nod1 = nod2; nod1.op = OIND; nod1.left = &nod2; nod1.right = Z; nod1.complex = 1; nod1.type = t; sugen(n, &nod1, w); return; } x = 0; if(v) { if(nn != nil && nn->complex >= FNX) { t = nn->type; nn->type = types[TLONG]; regialloc(&nod2, nn, Z); lcgen(nn, &nod2); nn->type = t; nod2.type = typ(TIND, t); nod1 = nod2; nod1.op = OIND; nod1.left = &nod2; nod1.right = Z; nod1.complex = 1; nod1.type = t; sugen(n, &nod1, w); regfree(&nod2); return; } c = cursafe; if(n->left != Z && n->left->complex >= FNX && n->right != Z && n->right->complex >= FNX) { // warn(n, "toughie"); regsalloc(&nod1, n->right); cgen(n->right, &nod1); nod2 = *n; nod2.right = &nod1; cgen(&nod2, nn); cursafe = c; return; } if(cgen64(n, nn)) { cursafe = c; return; } if(n->op == OCOM) { n = n->left; x = 1; } } /* botch, need to save in .safe */ c = 0; if(n->complex > nn->complex) { t = n->type; n->type = types[TLONG]; if(v) { regalloc(&nod0, n, Z); if(!vaddr(n, 0)) { reglcgen(&nod1, n, Z); n->type = t; n = &nod1; } else n->type = t; } else { nodreg(&nod1, n, D_SI); if(reg[D_SI]) { gins(APUSHL, &nod1, Z); c |= 1; reg[D_SI]++; } lcgen(n, &nod1); n->type = t; } t = nn->type; nn->type = types[TLONG]; if(v) { if(!vaddr(nn, 0)) { reglcgen(&nod2, nn, Z); nn->type = t; nn = &nod2; } else nn->type = t; } else { nodreg(&nod2, nn, D_DI); if(reg[D_DI]) { gins(APUSHL, &nod2, Z); c |= 2; reg[D_DI]++; } lcgen(nn, &nod2); nn->type = t; } } else { t = nn->type; nn->type = types[TLONG]; if(v) { regalloc(&nod0, nn, Z); if(!vaddr(nn, 0)) { reglcgen(&nod2, nn, Z); nn->type = t; nn = &nod2; } else nn->type = t; } else { nodreg(&nod2, nn, D_DI); if(reg[D_DI]) { gins(APUSHL, &nod2, Z); c |= 2; reg[D_DI]++; } lcgen(nn, &nod2); nn->type = t; } t = n->type; n->type = types[TLONG]; if(v) { if(!vaddr(n, 0)) { reglcgen(&nod1, n, Z); n->type = t; n = &nod1; } else n->type = t; } else { nodreg(&nod1, n, D_SI); if(reg[D_SI]) { gins(APUSHL, &nod1, Z); c |= 1; reg[D_SI]++; } lcgen(n, &nod1); n->type = t; } } if(v) { gins(AMOVL, n, &nod0); if(x) gins(ANOTL, Z, &nod0); gins(AMOVL, &nod0, nn); n->xoffset += SZ_LONG; nn->xoffset += SZ_LONG; gins(AMOVL, n, &nod0); if(x) gins(ANOTL, Z, &nod0); gins(AMOVL, &nod0, nn); n->xoffset -= SZ_LONG; nn->xoffset -= SZ_LONG; if(nn == &nod2) regfree(&nod2); if(n == &nod1) regfree(&nod1); regfree(&nod0); return; } nodreg(&nod3, n, D_CX); if(reg[D_CX]) { gins(APUSHL, &nod3, Z); c |= 4; reg[D_CX]++; } gins(AMOVL, nodconst(w/SZ_LONG), &nod3); gins(ACLD, Z, Z); gins(AREP, Z, Z); gins(AMOVSL, Z, Z); if(c & 4) { gins(APOPL, Z, &nod3); reg[D_CX]--; } if(c & 2) { gins(APOPL, Z, &nod2); reg[nod2.reg]--; } if(c & 1) { gins(APOPL, Z, &nod1); reg[nod1.reg]--; } } �������������������������������������������������������������������������������������go/src/cmd/8c/cgen64.c������������������������������������������������������������������������������0100644�0000000�0000000�00000132672�12412656734�014605� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8c/cgen64.c // http://code.google.com/p/inferno-os/source/browse/utils/8c/cgen64.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" void zeroregm(Node *n) { gins(AMOVL, nodconst(0), n); } /* do we need to load the address of a vlong? */ int vaddr(Node *n, int a) { switch(n->op) { case ONAME: if(a) return 1; return !(n->class == CEXTERN || n->class == CGLOBL || n->class == CSTATIC); case OCONST: case OREGISTER: case OINDREG: return 1; } return 0; } int32 hi64v(Node *n) { if(align(0, types[TCHAR], Aarg1, nil)) /* isbigendian */ return (int32)(n->vconst) & ~0L; else return (int32)((uvlong)n->vconst>>32) & ~0L; } int32 lo64v(Node *n) { if(align(0, types[TCHAR], Aarg1, nil)) /* isbigendian */ return (int32)((uvlong)n->vconst>>32) & ~0L; else return (int32)(n->vconst) & ~0L; } Node * hi64(Node *n) { return nodconst(hi64v(n)); } Node * lo64(Node *n) { return nodconst(lo64v(n)); } static Node * anonreg(void) { Node *n; n = new(OREGISTER, Z, Z); n->reg = D_NONE; n->type = types[TLONG]; return n; } static Node * regpair(Node *n, Node *t) { Node *r; if(n != Z && n->op == OREGPAIR) return n; r = new(OREGPAIR, anonreg(), anonreg()); if(n != Z) r->type = n->type; else r->type = t->type; return r; } static void evacaxdx(Node *r) { Node nod1, nod2; if(r->reg == D_AX || r->reg == D_DX) { reg[D_AX]++; reg[D_DX]++; /* * this is just an optim that should * check for spill */ r->type = types[TULONG]; regalloc(&nod1, r, Z); nodreg(&nod2, Z, r->reg); gins(AMOVL, &nod2, &nod1); regfree(r); r->reg = nod1.reg; reg[D_AX]--; reg[D_DX]--; } } /* lazy instantiation of register pair */ static int instpair(Node *n, Node *l) { int r; r = 0; if(n->left->reg == D_NONE) { if(l != Z) { n->left->reg = l->reg; r = 1; } else regalloc(n->left, n->left, Z); } if(n->right->reg == D_NONE) regalloc(n->right, n->right, Z); return r; } static void zapreg(Node *n) { if(n->reg != D_NONE) { regfree(n); n->reg = D_NONE; } } static void freepair(Node *n) { regfree(n->left); regfree(n->right); } /* n is not OREGPAIR, nn is */ void loadpair(Node *n, Node *nn) { Node nod; instpair(nn, Z); if(n->op == OCONST) { gins(AMOVL, lo64(n), nn->left); n->xoffset += SZ_LONG; gins(AMOVL, hi64(n), nn->right); n->xoffset -= SZ_LONG; return; } if(!vaddr(n, 0)) { /* steal the right register for the laddr */ nod = regnode; nod.reg = nn->right->reg; lcgen(n, &nod); n = &nod; regind(n, n); n->xoffset = 0; } gins(AMOVL, n, nn->left); n->xoffset += SZ_LONG; gins(AMOVL, n, nn->right); n->xoffset -= SZ_LONG; } /* n is OREGPAIR, nn is not */ static void storepair(Node *n, Node *nn, int f) { Node nod; if(!vaddr(nn, 0)) { reglcgen(&nod, nn, Z); nn = &nod; } gins(AMOVL, n->left, nn); nn->xoffset += SZ_LONG; gins(AMOVL, n->right, nn); nn->xoffset -= SZ_LONG; if(nn == &nod) regfree(&nod); if(f) freepair(n); } enum { /* 4 only, see WW */ WNONE = 0, WCONST, WADDR, WHARD, }; static int whatof(Node *n, int a) { if(n->op == OCONST) return WCONST; return !vaddr(n, a) ? WHARD : WADDR; } /* can upgrade an extern to addr for AND */ static int reduxv(Node *n) { return lo64v(n) == 0 || hi64v(n) == 0; } int cond(int op) { switch(op) { case OANDAND: case OOROR: case ONOT: return 1; case OEQ: case ONE: case OLE: case OLT: case OGE: case OGT: case OHI: case OHS: case OLO: case OLS: return 1; } return 0; } /* * for a func operand call it and then return * the safe node */ static Node * vfunc(Node *n, Node *nn) { Node *t; if(n->op != OFUNC) return n; t = new(0, Z, Z); if(nn == Z || nn == nodret) nn = n; regsalloc(t, nn); sugen(n, t, 8); return t; } /* try to steal a reg */ static int getreg(Node **np, Node *t, int r) { Node *n, *p; n = *np; if(n->reg == r) { p = new(0, Z, Z); regalloc(p, n, Z); gins(AMOVL, n, p); *t = *n; *np = p; return 1; } return 0; } static Node * snarfreg(Node *n, Node *t, int r, Node *d, Node *c) { if(n == Z || n->op != OREGPAIR || (!getreg(&n->left, t, r) && !getreg(&n->right, t, r))) { if(nodreg(t, Z, r)) { regalloc(c, d, Z); gins(AMOVL, t, c); reg[r]++; return c; } reg[r]++; } return Z; } enum { Vstart = OEND, Vgo, Vamv, Vmv, Vzero, Vop, Vopx, Vins, Vins0, Vinsl, Vinsr, Vinsla, Vinsra, Vinsx, Vmul, Vshll, VT, VF, V_l_lo_f, V_l_hi_f, V_l_lo_t, V_l_hi_t, V_l_lo_u, V_l_hi_u, V_r_lo_f, V_r_hi_f, V_r_lo_t, V_r_hi_t, V_r_lo_u, V_r_hi_u, Vspazz, Vend, V_T0, V_T1, V_F0, V_F1, V_a0, V_a1, V_f0, V_f1, V_p0, V_p1, V_p2, V_p3, V_p4, V_s0, V_s1, V_s2, V_s3, V_s4, C00, C01, C31, C32, O_l_lo, O_l_hi, O_r_lo, O_r_hi, O_t_lo, O_t_hi, O_l, O_r, O_l_rp, O_r_rp, O_t_rp, O_r0, O_r1, O_Zop, O_a0, O_a1, V_C0, V_C1, V_S0, V_S1, VOPS = 5, VLEN = 5, VARGS = 2, S00 = 0, Sc0, Sc1, Sc2, Sac3, Sac4, S10, SAgen = 0, SAclo, SAc32, SAchi, SAdgen, SAdclo, SAdc32, SAdchi, B0c = 0, Bca, Bac, T0i = 0, Tii, Bop0 = 0, Bop1, }; /* * _testv: * CMPL lo,$0 * JNE true * CMPL hi,$0 * JNE true * GOTO false * false: * GOTO code * true: * GOTO patchme * code: */ static uchar testi[][VLEN] = { {Vop, ONE, O_l_lo, C00}, {V_s0, Vop, ONE, O_l_hi, C00}, {V_s1, Vgo, V_s2, Vgo, V_s3}, {VF, V_p0, V_p1, VT, V_p2}, {Vgo, V_p3}, {VT, V_p0, V_p1, VF, V_p2}, {Vend}, }; /* shift left general case */ static uchar shll00[][VLEN] = { {Vop, OGE, O_r, C32}, {V_s0, Vinsl, ASHLL, O_r, O_l_rp}, {Vins, ASHLL, O_r, O_l_lo, Vgo}, {V_p0, V_s0}, {Vins, ASHLL, O_r, O_l_lo}, {Vins, AMOVL, O_l_lo, O_l_hi}, {Vzero, O_l_lo, V_p0, Vend}, }; /* shift left rp, const < 32 */ static uchar shllc0[][VLEN] = { {Vinsl, ASHLL, O_r, O_l_rp}, {Vshll, O_r, O_l_lo, Vend}, }; /* shift left rp, const == 32 */ static uchar shllc1[][VLEN] = { {Vins, AMOVL, O_l_lo, O_l_hi}, {Vzero, O_l_lo, Vend}, }; /* shift left rp, const > 32 */ static uchar shllc2[][VLEN] = { {Vshll, O_r, O_l_lo}, {Vins, AMOVL, O_l_lo, O_l_hi}, {Vzero, O_l_lo, Vend}, }; /* shift left addr, const == 32 */ static uchar shllac3[][VLEN] = { {Vins, AMOVL, O_l_lo, O_t_hi}, {Vzero, O_t_lo, Vend}, }; /* shift left addr, const > 32 */ static uchar shllac4[][VLEN] = { {Vins, AMOVL, O_l_lo, O_t_hi}, {Vshll, O_r, O_t_hi}, {Vzero, O_t_lo, Vend}, }; /* shift left of constant */ static uchar shll10[][VLEN] = { {Vop, OGE, O_r, C32}, {V_s0, Vins, AMOVL, O_l_lo, O_t_lo}, {Vins, AMOVL, O_l_hi, O_t_hi}, {Vinsl, ASHLL, O_r, O_t_rp}, {Vins, ASHLL, O_r, O_t_lo, Vgo}, {V_p0, V_s0}, {Vins, AMOVL, O_l_lo, O_t_hi}, {V_l_lo_t, Vins, ASHLL, O_r, O_t_hi}, {Vzero, O_t_lo, V_p0, Vend}, }; static uchar (*shlltab[])[VLEN] = { shll00, shllc0, shllc1, shllc2, shllac3, shllac4, shll10, }; /* shift right general case */ static uchar shrl00[][VLEN] = { {Vop, OGE, O_r, C32}, {V_s0, Vinsr, ASHRL, O_r, O_l_rp}, {Vins, O_a0, O_r, O_l_hi, Vgo}, {V_p0, V_s0}, {Vins, O_a0, O_r, O_l_hi}, {Vins, AMOVL, O_l_hi, O_l_lo}, {V_T1, Vzero, O_l_hi}, {V_F1, Vins, ASARL, C31, O_l_hi}, {V_p0, Vend}, }; /* shift right rp, const < 32 */ static uchar shrlc0[][VLEN] = { {Vinsr, ASHRL, O_r, O_l_rp}, {Vins, O_a0, O_r, O_l_hi, Vend}, }; /* shift right rp, const == 32 */ static uchar shrlc1[][VLEN] = { {Vins, AMOVL, O_l_hi, O_l_lo}, {V_T1, Vzero, O_l_hi}, {V_F1, Vins, ASARL, C31, O_l_hi}, {Vend}, }; /* shift right rp, const > 32 */ static uchar shrlc2[][VLEN] = { {Vins, O_a0, O_r, O_l_hi}, {Vins, AMOVL, O_l_hi, O_l_lo}, {V_T1, Vzero, O_l_hi}, {V_F1, Vins, ASARL, C31, O_l_hi}, {Vend}, }; /* shift right addr, const == 32 */ static uchar shrlac3[][VLEN] = { {Vins, AMOVL, O_l_hi, O_t_lo}, {V_T1, Vzero, O_t_hi}, {V_F1, Vins, AMOVL, O_t_lo, O_t_hi}, {V_F1, Vins, ASARL, C31, O_t_hi}, {Vend}, }; /* shift right addr, const > 32 */ static uchar shrlac4[][VLEN] = { {Vins, AMOVL, O_l_hi, O_t_lo}, {Vins, O_a0, O_r, O_t_lo}, {V_T1, Vzero, O_t_hi}, {V_F1, Vins, AMOVL, O_t_lo, O_t_hi}, {V_F1, Vins, ASARL, C31, O_t_hi}, {Vend}, }; /* shift right of constant */ static uchar shrl10[][VLEN] = { {Vop, OGE, O_r, C32}, {V_s0, Vins, AMOVL, O_l_lo, O_t_lo}, {Vins, AMOVL, O_l_hi, O_t_hi}, {Vinsr, ASHRL, O_r, O_t_rp}, {Vins, O_a0, O_r, O_t_hi, Vgo}, {V_p0, V_s0}, {Vins, AMOVL, O_l_hi, O_t_lo}, {V_l_hi_t, Vins, O_a0, O_r, O_t_lo}, {V_l_hi_u, V_S1}, {V_T1, Vzero, O_t_hi, V_p0}, {V_F1, Vins, AMOVL, O_t_lo, O_t_hi}, {V_F1, Vins, ASARL, C31, O_t_hi}, {Vend}, }; static uchar (*shrltab[])[VLEN] = { shrl00, shrlc0, shrlc1, shrlc2, shrlac3, shrlac4, shrl10, }; /* shift asop left general case */ static uchar asshllgen[][VLEN] = { {V_a0, V_a1}, {Vop, OGE, O_r, C32}, {V_s0, Vins, AMOVL, O_l_lo, O_r0}, {Vins, AMOVL, O_l_hi, O_r1}, {Vinsla, ASHLL, O_r, O_r0}, {Vins, ASHLL, O_r, O_r0}, {Vins, AMOVL, O_r1, O_l_hi}, {Vins, AMOVL, O_r0, O_l_lo, Vgo}, {V_p0, V_s0}, {Vins, AMOVL, O_l_lo, O_r0}, {Vzero, O_l_lo}, {Vins, ASHLL, O_r, O_r0}, {Vins, AMOVL, O_r0, O_l_hi, V_p0}, {V_f0, V_f1, Vend}, }; /* shift asop left, const < 32 */ static uchar asshllclo[][VLEN] = { {V_a0, V_a1}, {Vins, AMOVL, O_l_lo, O_r0}, {Vins, AMOVL, O_l_hi, O_r1}, {Vinsla, ASHLL, O_r, O_r0}, {Vshll, O_r, O_r0}, {Vins, AMOVL, O_r1, O_l_hi}, {Vins, AMOVL, O_r0, O_l_lo}, {V_f0, V_f1, Vend}, }; /* shift asop left, const == 32 */ static uchar asshllc32[][VLEN] = { {V_a0}, {Vins, AMOVL, O_l_lo, O_r0}, {Vzero, O_l_lo}, {Vins, AMOVL, O_r0, O_l_hi}, {V_f0, Vend}, }; /* shift asop left, const > 32 */ static uchar asshllchi[][VLEN] = { {V_a0}, {Vins, AMOVL, O_l_lo, O_r0}, {Vzero, O_l_lo}, {Vshll, O_r, O_r0}, {Vins, AMOVL, O_r0, O_l_hi}, {V_f0, Vend}, }; /* shift asop dest left general case */ static uchar asdshllgen[][VLEN] = { {Vop, OGE, O_r, C32}, {V_s0, Vins, AMOVL, O_l_lo, O_t_lo}, {Vins, AMOVL, O_l_hi, O_t_hi}, {Vinsl, ASHLL, O_r, O_t_rp}, {Vins, ASHLL, O_r, O_t_lo}, {Vins, AMOVL, O_t_hi, O_l_hi}, {Vins, AMOVL, O_t_lo, O_l_lo, Vgo}, {V_p0, V_s0}, {Vins, AMOVL, O_l_lo, O_t_hi}, {Vzero, O_l_lo}, {Vins, ASHLL, O_r, O_t_hi}, {Vzero, O_t_lo}, {Vins, AMOVL, O_t_hi, O_l_hi, V_p0}, {Vend}, }; /* shift asop dest left, const < 32 */ static uchar asdshllclo[][VLEN] = { {Vins, AMOVL, O_l_lo, O_t_lo}, {Vins, AMOVL, O_l_hi, O_t_hi}, {Vinsl, ASHLL, O_r, O_t_rp}, {Vshll, O_r, O_t_lo}, {Vins, AMOVL, O_t_hi, O_l_hi}, {Vins, AMOVL, O_t_lo, O_l_lo}, {Vend}, }; /* shift asop dest left, const == 32 */ static uchar asdshllc32[][VLEN] = { {Vins, AMOVL, O_l_lo, O_t_hi}, {Vzero, O_t_lo}, {Vins, AMOVL, O_t_hi, O_l_hi}, {Vins, AMOVL, O_t_lo, O_l_lo}, {Vend}, }; /* shift asop dest, const > 32 */ static uchar asdshllchi[][VLEN] = { {Vins, AMOVL, O_l_lo, O_t_hi}, {Vzero, O_t_lo}, {Vshll, O_r, O_t_hi}, {Vins, AMOVL, O_t_lo, O_l_lo}, {Vins, AMOVL, O_t_hi, O_l_hi}, {Vend}, }; static uchar (*asshlltab[])[VLEN] = { asshllgen, asshllclo, asshllc32, asshllchi, asdshllgen, asdshllclo, asdshllc32, asdshllchi, }; /* shift asop right general case */ static uchar asshrlgen[][VLEN] = { {V_a0, V_a1}, {Vop, OGE, O_r, C32}, {V_s0, Vins, AMOVL, O_l_lo, O_r0}, {Vins, AMOVL, O_l_hi, O_r1}, {Vinsra, ASHRL, O_r, O_r0}, {Vinsx, Bop0, O_r, O_r1}, {Vins, AMOVL, O_r0, O_l_lo}, {Vins, AMOVL, O_r1, O_l_hi, Vgo}, {V_p0, V_s0}, {Vins, AMOVL, O_l_hi, O_r0}, {Vinsx, Bop0, O_r, O_r0}, {V_T1, Vzero, O_l_hi}, {Vins, AMOVL, O_r0, O_l_lo}, {V_F1, Vins, ASARL, C31, O_r0}, {V_F1, Vins, AMOVL, O_r0, O_l_hi}, {V_p0, V_f0, V_f1, Vend}, }; /* shift asop right, const < 32 */ static uchar asshrlclo[][VLEN] = { {V_a0, V_a1}, {Vins, AMOVL, O_l_lo, O_r0}, {Vins, AMOVL, O_l_hi, O_r1}, {Vinsra, ASHRL, O_r, O_r0}, {Vinsx, Bop0, O_r, O_r1}, {Vins, AMOVL, O_r0, O_l_lo}, {Vins, AMOVL, O_r1, O_l_hi}, {V_f0, V_f1, Vend}, }; /* shift asop right, const == 32 */ static uchar asshrlc32[][VLEN] = { {V_a0}, {Vins, AMOVL, O_l_hi, O_r0}, {V_T1, Vzero, O_l_hi}, {Vins, AMOVL, O_r0, O_l_lo}, {V_F1, Vins, ASARL, C31, O_r0}, {V_F1, Vins, AMOVL, O_r0, O_l_hi}, {V_f0, Vend}, }; /* shift asop right, const > 32 */ static uchar asshrlchi[][VLEN] = { {V_a0}, {Vins, AMOVL, O_l_hi, O_r0}, {V_T1, Vzero, O_l_hi}, {Vinsx, Bop0, O_r, O_r0}, {Vins, AMOVL, O_r0, O_l_lo}, {V_F1, Vins, ASARL, C31, O_r0}, {V_F1, Vins, AMOVL, O_r0, O_l_hi}, {V_f0, Vend}, }; /* shift asop dest right general case */ static uchar asdshrlgen[][VLEN] = { {Vop, OGE, O_r, C32}, {V_s0, Vins, AMOVL, O_l_lo, O_t_lo}, {Vins, AMOVL, O_l_hi, O_t_hi}, {Vinsr, ASHRL, O_r, O_t_rp}, {Vinsx, Bop0, O_r, O_t_hi}, {Vins, AMOVL, O_t_lo, O_l_lo}, {Vins, AMOVL, O_t_hi, O_l_hi, Vgo}, {V_p0, V_s0}, {Vins, AMOVL, O_l_hi, O_t_lo}, {V_T1, Vzero, O_t_hi}, {Vinsx, Bop0, O_r, O_t_lo}, {V_F1, Vins, AMOVL, O_t_lo, O_t_hi}, {V_F1, Vins, ASARL, C31, O_t_hi}, {Vins, AMOVL, O_t_hi, O_l_hi, V_p0}, {Vend}, }; /* shift asop dest right, const < 32 */ static uchar asdshrlclo[][VLEN] = { {Vins, AMOVL, O_l_lo, O_t_lo}, {Vins, AMOVL, O_l_hi, O_t_hi}, {Vinsr, ASHRL, O_r, O_t_rp}, {Vinsx, Bop0, O_r, O_t_hi}, {Vins, AMOVL, O_t_lo, O_l_lo}, {Vins, AMOVL, O_t_hi, O_l_hi}, {Vend}, }; /* shift asop dest right, const == 32 */ static uchar asdshrlc32[][VLEN] = { {Vins, AMOVL, O_l_hi, O_t_lo}, {V_T1, Vzero, O_t_hi}, {V_F1, Vins, AMOVL, O_t_lo, O_t_hi}, {V_F1, Vins, ASARL, C31, O_t_hi}, {Vins, AMOVL, O_t_lo, O_l_lo}, {Vins, AMOVL, O_t_hi, O_l_hi}, {Vend}, }; /* shift asop dest, const > 32 */ static uchar asdshrlchi[][VLEN] = { {Vins, AMOVL, O_l_hi, O_t_lo}, {V_T1, Vzero, O_t_hi}, {Vinsx, Bop0, O_r, O_t_lo}, {V_T1, Vins, AMOVL, O_t_hi, O_l_hi}, {V_T1, Vins, AMOVL, O_t_lo, O_l_lo}, {V_F1, Vins, AMOVL, O_t_lo, O_t_hi}, {V_F1, Vins, ASARL, C31, O_t_hi}, {V_F1, Vins, AMOVL, O_t_lo, O_l_lo}, {V_F1, Vins, AMOVL, O_t_hi, O_l_hi}, {Vend}, }; static uchar (*asshrltab[])[VLEN] = { asshrlgen, asshrlclo, asshrlc32, asshrlchi, asdshrlgen, asdshrlclo, asdshrlc32, asdshrlchi, }; static uchar shrlargs[] = { ASHRL, 1 }; static uchar sarlargs[] = { ASARL, 0 }; /* ++ -- */ static uchar incdec[][VLEN] = { {Vinsx, Bop0, C01, O_l_lo}, {Vinsx, Bop1, C00, O_l_hi, Vend}, }; /* ++ -- *p */ static uchar incdecpre[][VLEN] = { {Vins, AMOVL, O_l_lo, O_t_lo}, {Vins, AMOVL, O_l_hi, O_t_hi}, {Vinsx, Bop0, C01, O_t_lo}, {Vinsx, Bop1, C00, O_t_hi}, {Vins, AMOVL, O_t_lo, O_l_lo}, {Vins, AMOVL, O_t_hi, O_l_hi, Vend}, }; /* *p ++ -- */ static uchar incdecpost[][VLEN] = { {Vins, AMOVL, O_l_lo, O_t_lo}, {Vins, AMOVL, O_l_hi, O_t_hi}, {Vinsx, Bop0, C01, O_l_lo}, {Vinsx, Bop1, C00, O_l_hi, Vend}, }; /* binop rp, rp */ static uchar binop00[][VLEN] = { {Vinsx, Bop0, O_r_lo, O_l_lo}, {Vinsx, Bop1, O_r_hi, O_l_hi, Vend}, {Vend}, }; /* binop rp, addr */ static uchar binoptmp[][VLEN] = { {V_a0, Vins, AMOVL, O_r_lo, O_r0}, {Vinsx, Bop0, O_r0, O_l_lo}, {Vins, AMOVL, O_r_hi, O_r0}, {Vinsx, Bop1, O_r0, O_l_hi}, {V_f0, Vend}, }; /* binop t = *a op *b */ static uchar binop11[][VLEN] = { {Vins, AMOVL, O_l_lo, O_t_lo}, {Vinsx, Bop0, O_r_lo, O_t_lo}, {Vins, AMOVL, O_l_hi, O_t_hi}, {Vinsx, Bop1, O_r_hi, O_t_hi, Vend}, }; /* binop t = rp +- c */ static uchar add0c[][VLEN] = { {V_r_lo_t, Vinsx, Bop0, O_r_lo, O_l_lo}, {V_r_lo_f, Vamv, Bop0, Bop1}, {Vinsx, Bop1, O_r_hi, O_l_hi}, {Vend}, }; /* binop t = rp & c */ static uchar and0c[][VLEN] = { {V_r_lo_t, Vinsx, Bop0, O_r_lo, O_l_lo}, {V_r_lo_f, Vins, AMOVL, C00, O_l_lo}, {V_r_hi_t, Vinsx, Bop1, O_r_hi, O_l_hi}, {V_r_hi_f, Vins, AMOVL, C00, O_l_hi}, {Vend}, }; /* binop t = rp | c */ static uchar or0c[][VLEN] = { {V_r_lo_t, Vinsx, Bop0, O_r_lo, O_l_lo}, {V_r_hi_t, Vinsx, Bop1, O_r_hi, O_l_hi}, {Vend}, }; /* binop t = c - rp */ static uchar sub10[][VLEN] = { {V_a0, Vins, AMOVL, O_l_lo, O_r0}, {Vinsx, Bop0, O_r_lo, O_r0}, {Vins, AMOVL, O_l_hi, O_r_lo}, {Vinsx, Bop1, O_r_hi, O_r_lo}, {Vspazz, V_f0, Vend}, }; /* binop t = c + *b */ static uchar addca[][VLEN] = { {Vins, AMOVL, O_r_lo, O_t_lo}, {V_l_lo_t, Vinsx, Bop0, O_l_lo, O_t_lo}, {V_l_lo_f, Vamv, Bop0, Bop1}, {Vins, AMOVL, O_r_hi, O_t_hi}, {Vinsx, Bop1, O_l_hi, O_t_hi}, {Vend}, }; /* binop t = c & *b */ static uchar andca[][VLEN] = { {V_l_lo_t, Vins, AMOVL, O_r_lo, O_t_lo}, {V_l_lo_t, Vinsx, Bop0, O_l_lo, O_t_lo}, {V_l_lo_f, Vzero, O_t_lo}, {V_l_hi_t, Vins, AMOVL, O_r_hi, O_t_hi}, {V_l_hi_t, Vinsx, Bop1, O_l_hi, O_t_hi}, {V_l_hi_f, Vzero, O_t_hi}, {Vend}, }; /* binop t = c | *b */ static uchar orca[][VLEN] = { {Vins, AMOVL, O_r_lo, O_t_lo}, {V_l_lo_t, Vinsx, Bop0, O_l_lo, O_t_lo}, {Vins, AMOVL, O_r_hi, O_t_hi}, {V_l_hi_t, Vinsx, Bop1, O_l_hi, O_t_hi}, {Vend}, }; /* binop t = c - *b */ static uchar subca[][VLEN] = { {Vins, AMOVL, O_l_lo, O_t_lo}, {Vins, AMOVL, O_l_hi, O_t_hi}, {Vinsx, Bop0, O_r_lo, O_t_lo}, {Vinsx, Bop1, O_r_hi, O_t_hi}, {Vend}, }; /* binop t = *a +- c */ static uchar addac[][VLEN] = { {Vins, AMOVL, O_l_lo, O_t_lo}, {V_r_lo_t, Vinsx, Bop0, O_r_lo, O_t_lo}, {V_r_lo_f, Vamv, Bop0, Bop1}, {Vins, AMOVL, O_l_hi, O_t_hi}, {Vinsx, Bop1, O_r_hi, O_t_hi}, {Vend}, }; /* binop t = *a | c */ static uchar orac[][VLEN] = { {Vins, AMOVL, O_l_lo, O_t_lo}, {V_r_lo_t, Vinsx, Bop0, O_r_lo, O_t_lo}, {Vins, AMOVL, O_l_hi, O_t_hi}, {V_r_hi_t, Vinsx, Bop1, O_r_hi, O_t_hi}, {Vend}, }; /* binop t = *a & c */ static uchar andac[][VLEN] = { {V_r_lo_t, Vins, AMOVL, O_l_lo, O_t_lo}, {V_r_lo_t, Vinsx, Bop0, O_r_lo, O_t_lo}, {V_r_lo_f, Vzero, O_t_lo}, {V_r_hi_t, Vins, AMOVL, O_l_hi, O_t_hi}, {V_r_hi_t, Vinsx, Bop0, O_r_hi, O_t_hi}, {V_r_hi_f, Vzero, O_t_hi}, {Vend}, }; static uchar ADDargs[] = { AADDL, AADCL }; static uchar ANDargs[] = { AANDL, AANDL }; static uchar ORargs[] = { AORL, AORL }; static uchar SUBargs[] = { ASUBL, ASBBL }; static uchar XORargs[] = { AXORL, AXORL }; static uchar (*ADDtab[])[VLEN] = { add0c, addca, addac, }; static uchar (*ANDtab[])[VLEN] = { and0c, andca, andac, }; static uchar (*ORtab[])[VLEN] = { or0c, orca, orac, }; static uchar (*SUBtab[])[VLEN] = { add0c, subca, addac, }; /* mul of const32 */ static uchar mulc32[][VLEN] = { {V_a0, Vop, ONE, O_l_hi, C00}, {V_s0, Vins, AMOVL, O_r_lo, O_r0}, {Vins, AMULL, O_r0, O_Zop}, {Vgo, V_p0, V_s0}, {Vins, AMOVL, O_l_hi, O_r0}, {Vmul, O_r_lo, O_r0}, {Vins, AMOVL, O_r_lo, O_l_hi}, {Vins, AMULL, O_l_hi, O_Zop}, {Vins, AADDL, O_r0, O_l_hi}, {V_f0, V_p0, Vend}, }; /* mul of const64 */ static uchar mulc64[][VLEN] = { {V_a0, Vins, AMOVL, O_r_hi, O_r0}, {Vop, OOR, O_l_hi, O_r0}, {Vop, ONE, O_r0, C00}, {V_s0, Vins, AMOVL, O_r_lo, O_r0}, {Vins, AMULL, O_r0, O_Zop}, {Vgo, V_p0, V_s0}, {Vmul, O_r_lo, O_l_hi}, {Vins, AMOVL, O_l_lo, O_r0}, {Vmul, O_r_hi, O_r0}, {Vins, AADDL, O_l_hi, O_r0}, {Vins, AMOVL, O_r_lo, O_l_hi}, {Vins, AMULL, O_l_hi, O_Zop}, {Vins, AADDL, O_r0, O_l_hi}, {V_f0, V_p0, Vend}, }; /* mul general */ static uchar mull[][VLEN] = { {V_a0, Vins, AMOVL, O_r_hi, O_r0}, {Vop, OOR, O_l_hi, O_r0}, {Vop, ONE, O_r0, C00}, {V_s0, Vins, AMOVL, O_r_lo, O_r0}, {Vins, AMULL, O_r0, O_Zop}, {Vgo, V_p0, V_s0}, {Vins, AIMULL, O_r_lo, O_l_hi}, {Vins, AMOVL, O_l_lo, O_r0}, {Vins, AIMULL, O_r_hi, O_r0}, {Vins, AADDL, O_l_hi, O_r0}, {Vins, AMOVL, O_r_lo, O_l_hi}, {Vins, AMULL, O_l_hi, O_Zop}, {Vins, AADDL, O_r0, O_l_hi}, {V_f0, V_p0, Vend}, }; /* cast rp l to rp t */ static uchar castrp[][VLEN] = { {Vmv, O_l, O_t_lo}, {VT, Vins, AMOVL, O_t_lo, O_t_hi}, {VT, Vins, ASARL, C31, O_t_hi}, {VF, Vzero, O_t_hi}, {Vend}, }; /* cast rp l to addr t */ static uchar castrpa[][VLEN] = { {VT, V_a0, Vmv, O_l, O_r0}, {VT, Vins, AMOVL, O_r0, O_t_lo}, {VT, Vins, ASARL, C31, O_r0}, {VT, Vins, AMOVL, O_r0, O_t_hi}, {VT, V_f0}, {VF, Vmv, O_l, O_t_lo}, {VF, Vzero, O_t_hi}, {Vend}, }; static uchar netab0i[][VLEN] = { {Vop, ONE, O_l_lo, O_r_lo}, {V_s0, Vop, ONE, O_l_hi, O_r_hi}, {V_s1, Vgo, V_s2, Vgo, V_s3}, {VF, V_p0, V_p1, VT, V_p2}, {Vgo, V_p3}, {VT, V_p0, V_p1, VF, V_p2}, {Vend}, }; static uchar netabii[][VLEN] = { {V_a0, Vins, AMOVL, O_l_lo, O_r0}, {Vop, ONE, O_r0, O_r_lo}, {V_s0, Vins, AMOVL, O_l_hi, O_r0}, {Vop, ONE, O_r0, O_r_hi}, {V_s1, Vgo, V_s2, Vgo, V_s3}, {VF, V_p0, V_p1, VT, V_p2}, {Vgo, V_p3}, {VT, V_p0, V_p1, VF, V_p2}, {V_f0, Vend}, }; static uchar cmptab0i[][VLEN] = { {Vopx, Bop0, O_l_hi, O_r_hi}, {V_s0, Vins0, AJNE}, {V_s1, Vopx, Bop1, O_l_lo, O_r_lo}, {V_s2, Vgo, V_s3, Vgo, V_s4}, {VT, V_p1, V_p3}, {VF, V_p0, V_p2}, {Vgo, V_p4}, {VT, V_p0, V_p2}, {VF, V_p1, V_p3}, {Vend}, }; static uchar cmptabii[][VLEN] = { {V_a0, Vins, AMOVL, O_l_hi, O_r0}, {Vopx, Bop0, O_r0, O_r_hi}, {V_s0, Vins0, AJNE}, {V_s1, Vins, AMOVL, O_l_lo, O_r0}, {Vopx, Bop1, O_r0, O_r_lo}, {V_s2, Vgo, V_s3, Vgo, V_s4}, {VT, V_p1, V_p3}, {VF, V_p0, V_p2}, {Vgo, V_p4}, {VT, V_p0, V_p2}, {VF, V_p1, V_p3}, {V_f0, Vend}, }; static uchar (*NEtab[])[VLEN] = { netab0i, netabii, }; static uchar (*cmptab[])[VLEN] = { cmptab0i, cmptabii, }; static uchar GEargs[] = { OGT, OHS }; static uchar GTargs[] = { OGT, OHI }; static uchar HIargs[] = { OHI, OHI }; static uchar HSargs[] = { OHI, OHS }; /* Big Generator */ static void biggen(Node *l, Node *r, Node *t, int true, uchar code[][VLEN], uchar *a) { int i, j, g, oc, op, lo, ro, to, xo, *xp; Type *lt; Prog *pr[VOPS]; Node *ot, *tl, *tr, tmps[2]; uchar *c, (*cp)[VLEN], args[VARGS]; if(a != nil) memmove(args, a, VARGS); //print("biggen %d %d %d\n", args[0], args[1], args[2]); //if(l) prtree(l, "l"); //if(r) prtree(r, "r"); //if(t) prtree(t, "t"); lo = ro = to = 0; cp = code; for (;;) { c = *cp++; g = 1; i = 0; //print("code %d %d %d %d %d\n", c[0], c[1], c[2], c[3], c[4]); for(;;) { switch(op = c[i]) { case Vgo: if(g) gbranch(OGOTO); i++; break; case Vamv: i += 3; if(i > VLEN) { diag(l, "bad Vop"); return; } if(g) args[c[i - 1]] = args[c[i - 2]]; break; case Vzero: i += 2; if(i > VLEN) { diag(l, "bad Vop"); return; } j = i - 1; goto op; case Vspazz: // nasty hack to save a reg in SUB //print("spazz\n"); if(g) { //print("hi %R lo %R t %R\n", r->right->reg, r->left->reg, tmps[0].reg); ot = r->right; r->right = r->left; tl = new(0, Z, Z); *tl = tmps[0]; r->left = tl; tmps[0] = *ot; //print("hi %R lo %R t %R\n", r->right->reg, r->left->reg, tmps[0].reg); } i++; break; case Vmv: case Vmul: case Vshll: i += 3; if(i > VLEN) { diag(l, "bad Vop"); return; } j = i - 2; goto op; case Vins0: i += 2; if(i > VLEN) { diag(l, "bad Vop"); return; } gins(c[i - 1], Z, Z); break; case Vop: case Vopx: case Vins: case Vinsl: case Vinsr: case Vinsla: case Vinsra: case Vinsx: i += 4; if(i > VLEN) { diag(l, "bad Vop"); return; } j = i - 2; goto op; op: if(!g) break; tl = Z; tr = Z; for(; j < i; j++) { switch(c[j]) { case C00: ot = nodconst(0); break; case C01: ot = nodconst(1); break; case C31: ot = nodconst(31); break; case C32: ot = nodconst(32); break; case O_l: case O_l_lo: ot = l; xp = &lo; xo = 0; goto op0; case O_l_hi: ot = l; xp = &lo; xo = SZ_LONG; goto op0; case O_r: case O_r_lo: ot = r; xp = &ro; xo = 0; goto op0; case O_r_hi: ot = r; xp = &ro; xo = SZ_LONG; goto op0; case O_t_lo: ot = t; xp = &to; xo = 0; goto op0; case O_t_hi: ot = t; xp = &to; xo = SZ_LONG; goto op0; case O_l_rp: ot = l; break; case O_r_rp: ot = r; break; case O_t_rp: ot = t; break; case O_r0: case O_r1: ot = &tmps[c[j] - O_r0]; break; case O_Zop: ot = Z; break; op0: switch(ot->op) { case OCONST: if(xo) ot = hi64(ot); else ot = lo64(ot); break; case OREGPAIR: if(xo) ot = ot->right; else ot = ot->left; break; case OREGISTER: break; default: if(xo != *xp) { ot->xoffset += xo - *xp; *xp = xo; } } break; default: diag(l, "bad V_lop"); return; } if(tl == nil) tl = ot; else tr = ot; } if(op == Vzero) { zeroregm(tl); break; } oc = c[i - 3]; if(op == Vinsx || op == Vopx) { //print("%d -> %d\n", oc, args[oc]); oc = args[oc]; } else { switch(oc) { case O_a0: case O_a1: oc = args[oc - O_a0]; break; } } switch(op) { case Vmul: mulgen(tr->type, tl, tr); break; case Vmv: gmove(tl, tr); break; case Vshll: shiftit(tr->type, tl, tr); break; case Vop: case Vopx: gopcode(oc, types[TULONG], tl, tr); break; case Vins: case Vinsx: gins(oc, tl, tr); break; case Vinsl: gins(oc, tl, tr->right); p->from.index = tr->left->reg; break; case Vinsr: gins(oc, tl, tr->left); p->from.index = tr->right->reg; break; case Vinsla: gins(oc, tl, tr + 1); p->from.index = tr->reg; break; case Vinsra: gins(oc, tl, tr); p->from.index = (tr + 1)->reg; break; } break; case VT: g = true; i++; break; case VF: g = !true; i++; break; case V_T0: case V_T1: g = args[op - V_T0]; i++; break; case V_F0: case V_F1: g = !args[op - V_F0]; i++; break; case V_C0: case V_C1: if(g) args[op - V_C0] = 0; i++; break; case V_S0: case V_S1: if(g) args[op - V_S0] = 1; i++; break; case V_l_lo_f: g = lo64v(l) == 0; i++; break; case V_l_hi_f: g = hi64v(l) == 0; i++; break; case V_l_lo_t: g = lo64v(l) != 0; i++; break; case V_l_hi_t: g = hi64v(l) != 0; i++; break; case V_l_lo_u: g = lo64v(l) >= 0; i++; break; case V_l_hi_u: g = hi64v(l) >= 0; i++; break; case V_r_lo_f: g = lo64v(r) == 0; i++; break; case V_r_hi_f: g = hi64v(r) == 0; i++; break; case V_r_lo_t: g = lo64v(r) != 0; i++; break; case V_r_hi_t: g = hi64v(r) != 0; i++; break; case V_r_lo_u: g = lo64v(r) >= 0; i++; break; case V_r_hi_u: g = hi64v(r) >= 0; i++; break; case Vend: goto out; case V_a0: case V_a1: if(g) { lt = l->type; l->type = types[TULONG]; regalloc(&tmps[op - V_a0], l, Z); l->type = lt; } i++; break; case V_f0: case V_f1: if(g) regfree(&tmps[op - V_f0]); i++; break; case V_p0: case V_p1: case V_p2: case V_p3: case V_p4: if(g) patch(pr[op - V_p0], pc); i++; break; case V_s0: case V_s1: case V_s2: case V_s3: case V_s4: if(g) pr[op - V_s0] = p; i++; break; default: diag(l, "bad biggen: %d", op); return; } if(i == VLEN || c[i] == 0) break; } } out: if(lo) l->xoffset -= lo; if(ro) r->xoffset -= ro; if(to) t->xoffset -= to; } int cgen64(Node *n, Node *nn) { Type *dt; uchar *args, (*cp)[VLEN], (**optab)[VLEN]; int li, ri, lri, dr, si, m, op, sh, cmp, true; Node *c, *d, *l, *r, *t, *s, nod1, nod2, nod3, nod4, nod5; if(debug['g']) { prtree(nn, "cgen64 lhs"); prtree(n, "cgen64"); print("AX = %d\n", reg[D_AX]); } cmp = 0; sh = 0; switch(n->op) { case ONEG: d = regpair(nn, n); sugen(n->left, d, 8); gins(ANOTL, Z, d->right); gins(ANEGL, Z, d->left); gins(ASBBL, nodconst(-1), d->right); break; case OCOM: if(!vaddr(n->left, 0) || !vaddr(nn, 0)) d = regpair(nn, n); else return 0; sugen(n->left, d, 8); gins(ANOTL, Z, d->left); gins(ANOTL, Z, d->right); break; case OADD: optab = ADDtab; args = ADDargs; goto twoop; case OAND: optab = ANDtab; args = ANDargs; goto twoop; case OOR: optab = ORtab; args = ORargs; goto twoop; case OSUB: optab = SUBtab; args = SUBargs; goto twoop; case OXOR: optab = ORtab; args = XORargs; goto twoop; case OASHL: sh = 1; args = nil; optab = shlltab; goto twoop; case OLSHR: sh = 1; args = shrlargs; optab = shrltab; goto twoop; case OASHR: sh = 1; args = sarlargs; optab = shrltab; goto twoop; case OEQ: cmp = 1; args = nil; optab = nil; goto twoop; case ONE: cmp = 1; args = nil; optab = nil; goto twoop; case OLE: cmp = 1; args = nil; optab = nil; goto twoop; case OLT: cmp = 1; args = nil; optab = nil; goto twoop; case OGE: cmp = 1; args = nil; optab = nil; goto twoop; case OGT: cmp = 1; args = nil; optab = nil; goto twoop; case OHI: cmp = 1; args = nil; optab = nil; goto twoop; case OHS: cmp = 1; args = nil; optab = nil; goto twoop; case OLO: cmp = 1; args = nil; optab = nil; goto twoop; case OLS: cmp = 1; args = nil; optab = nil; goto twoop; twoop: dr = nn != Z && nn->op == OREGPAIR; l = vfunc(n->left, nn); if(sh) r = n->right; else r = vfunc(n->right, nn); li = l->op == ONAME || l->op == OINDREG || l->op == OCONST; ri = r->op == ONAME || r->op == OINDREG || r->op == OCONST; #define IMM(l, r) ((l) | ((r) << 1)) lri = IMM(li, ri); /* find out what is so easy about some operands */ if(li) li = whatof(l, sh | cmp); if(ri) ri = whatof(r, cmp); if(sh) goto shift; if(cmp) goto cmp; /* evaluate hard subexps, stealing nn if possible. */ switch(lri) { case IMM(0, 0): bin00: if(l->complex > r->complex) { if(dr) t = nn; else t = regpair(Z, n); sugen(l, t, 8); l = t; t = regpair(Z, n); sugen(r, t, 8); r = t; } else { t = regpair(Z, n); sugen(r, t, 8); r = t; if(dr) t = nn; else t = regpair(Z, n); sugen(l, t, 8); l = t; } break; case IMM(0, 1): if(dr) t = nn; else t = regpair(Z, n); sugen(l, t, 8); l = t; break; case IMM(1, 0): if(n->op == OSUB && l->op == OCONST && hi64v(l) == 0) { lri = IMM(0, 0); goto bin00; } if(dr) t = nn; else t = regpair(Z, n); sugen(r, t, 8); r = t; break; case IMM(1, 1): break; } #define WW(l, r) ((l) | ((r) << 2)) d = Z; dt = nn->type; nn->type = types[TLONG]; switch(lri) { case IMM(0, 0): biggen(l, r, Z, 0, binop00, args); break; case IMM(0, 1): switch(ri) { case WNONE: diag(r, "bad whatof\n"); break; case WCONST: biggen(l, r, Z, 0, optab[B0c], args); break; case WHARD: reglcgen(&nod2, r, Z); r = &nod2; /* fall thru */ case WADDR: biggen(l, r, Z, 0, binoptmp, args); if(ri == WHARD) regfree(r); break; } break; case IMM(1, 0): if(n->op == OSUB) { switch(li) { case WNONE: diag(l, "bad whatof\n"); break; case WHARD: reglcgen(&nod2, l, Z); l = &nod2; /* fall thru */ case WADDR: case WCONST: biggen(l, r, Z, 0, sub10, args); break; } if(li == WHARD) regfree(l); } else { switch(li) { case WNONE: diag(l, "bad whatof\n"); break; case WCONST: biggen(r, l, Z, 0, optab[B0c], args); break; case WHARD: reglcgen(&nod2, l, Z); l = &nod2; /* fall thru */ case WADDR: biggen(r, l, Z, 0, binoptmp, args); if(li == WHARD) regfree(l); break; } } break; case IMM(1, 1): switch(WW(li, ri)) { case WW(WCONST, WHARD): if(r->op == ONAME && n->op == OAND && reduxv(l)) ri = WADDR; break; case WW(WHARD, WCONST): if(l->op == ONAME && n->op == OAND && reduxv(r)) li = WADDR; break; } if(li == WHARD) { reglcgen(&nod3, l, Z); l = &nod3; } if(ri == WHARD) { reglcgen(&nod2, r, Z); r = &nod2; } d = regpair(nn, n); instpair(d, Z); switch(WW(li, ri)) { case WW(WCONST, WADDR): case WW(WCONST, WHARD): biggen(l, r, d, 0, optab[Bca], args); break; case WW(WADDR, WCONST): case WW(WHARD, WCONST): biggen(l, r, d, 0, optab[Bac], args); break; case WW(WADDR, WADDR): case WW(WADDR, WHARD): case WW(WHARD, WADDR): case WW(WHARD, WHARD): biggen(l, r, d, 0, binop11, args); break; default: diag(r, "bad whatof pair %d %d\n", li, ri); break; } if(li == WHARD) regfree(l); if(ri == WHARD) regfree(r); break; } nn->type = dt; if(d != Z) goto finished; switch(lri) { case IMM(0, 0): freepair(r); /* fall thru */; case IMM(0, 1): if(!dr) storepair(l, nn, 1); break; case IMM(1, 0): if(!dr) storepair(r, nn, 1); break; case IMM(1, 1): break; } return 1; shift: c = Z; /* evaluate hard subexps, stealing nn if possible. */ /* must also secure CX. not as many optims as binop. */ switch(lri) { case IMM(0, 0): imm00: if(l->complex + 1 > r->complex) { if(dr) t = nn; else t = regpair(Z, l); sugen(l, t, 8); l = t; t = &nod1; c = snarfreg(l, t, D_CX, r, &nod2); cgen(r, t); r = t; } else { t = &nod1; c = snarfreg(nn, t, D_CX, r, &nod2); cgen(r, t); r = t; if(dr) t = nn; else t = regpair(Z, l); sugen(l, t, 8); l = t; } break; case IMM(0, 1): imm01: if(ri != WCONST) { lri = IMM(0, 0); goto imm00; } if(dr) t = nn; else t = regpair(Z, n); sugen(l, t, 8); l = t; break; case IMM(1, 0): imm10: if(li != WCONST) { lri = IMM(0, 0); goto imm00; } t = &nod1; c = snarfreg(nn, t, D_CX, r, &nod2); cgen(r, t); r = t; break; case IMM(1, 1): if(ri != WCONST) { lri = IMM(1, 0); goto imm10; } if(li == WHARD) { lri = IMM(0, 1); goto imm01; } break; } d = Z; switch(lri) { case IMM(0, 0): biggen(l, r, Z, 0, optab[S00], args); break; case IMM(0, 1): switch(ri) { case WNONE: case WADDR: case WHARD: diag(r, "bad whatof\n"); break; case WCONST: m = r->vconst & 63; s = nodconst(m); if(m < 32) cp = optab[Sc0]; else if(m == 32) cp = optab[Sc1]; else cp = optab[Sc2]; biggen(l, s, Z, 0, cp, args); break; } break; case IMM(1, 0): /* left is const */ d = regpair(nn, n); instpair(d, Z); biggen(l, r, d, 0, optab[S10], args); regfree(r); break; case IMM(1, 1): d = regpair(nn, n); instpair(d, Z); switch(WW(li, ri)) { case WW(WADDR, WCONST): m = r->vconst & 63; s = nodconst(m); if(m < 32) { loadpair(l, d); l = d; cp = optab[Sc0]; } else if(m == 32) cp = optab[Sac3]; else cp = optab[Sac4]; biggen(l, s, d, 0, cp, args); break; default: diag(r, "bad whatof pair %d %d\n", li, ri); break; } break; } if(c != Z) { gins(AMOVL, c, r); regfree(c); } if(d != Z) goto finished; switch(lri) { case IMM(0, 0): regfree(r); /* fall thru */ case IMM(0, 1): if(!dr) storepair(l, nn, 1); break; case IMM(1, 0): regfree(r); break; case IMM(1, 1): break; } return 1; cmp: op = n->op; /* evaluate hard subexps */ switch(lri) { case IMM(0, 0): if(l->complex > r->complex) { t = regpair(Z, l); sugen(l, t, 8); l = t; t = regpair(Z, r); sugen(r, t, 8); r = t; } else { t = regpair(Z, r); sugen(r, t, 8); r = t; t = regpair(Z, l); sugen(l, t, 8); l = t; } break; case IMM(1, 0): t = r; r = l; l = t; ri = li; op = invrel[relindex(op)]; /* fall thru */ case IMM(0, 1): t = regpair(Z, l); sugen(l, t, 8); l = t; break; case IMM(1, 1): break; } true = 1; optab = cmptab; switch(op) { case OEQ: optab = NEtab; true = 0; break; case ONE: optab = NEtab; break; case OLE: args = GTargs; true = 0; break; case OGT: args = GTargs; break; case OLS: args = HIargs; true = 0; break; case OHI: args = HIargs; break; case OLT: args = GEargs; true = 0; break; case OGE: args = GEargs; break; case OLO: args = HSargs; true = 0; break; case OHS: args = HSargs; break; default: diag(n, "bad cmp\n"); SET(optab); } switch(lri) { case IMM(0, 0): biggen(l, r, Z, true, optab[T0i], args); break; case IMM(0, 1): case IMM(1, 0): switch(ri) { case WNONE: diag(l, "bad whatof\n"); break; case WCONST: biggen(l, r, Z, true, optab[T0i], args); break; case WHARD: reglcgen(&nod2, r, Z); r = &nod2; /* fall thru */ case WADDR: biggen(l, r, Z, true, optab[T0i], args); if(ri == WHARD) regfree(r); break; } break; case IMM(1, 1): if(li == WHARD) { reglcgen(&nod3, l, Z); l = &nod3; } if(ri == WHARD) { reglcgen(&nod2, r, Z); r = &nod2; } biggen(l, r, Z, true, optab[Tii], args); if(li == WHARD) regfree(l); if(ri == WHARD) regfree(r); break; } switch(lri) { case IMM(0, 0): freepair(r); /* fall thru */; case IMM(0, 1): case IMM(1, 0): freepair(l); break; case IMM(1, 1): break; } return 1; case OASMUL: case OASLMUL: m = 0; goto mulop; case OMUL: case OLMUL: m = 1; goto mulop; mulop: dr = nn != Z && nn->op == OREGPAIR; l = vfunc(n->left, nn); r = vfunc(n->right, nn); if(r->op != OCONST) { if(l->complex > r->complex) { if(m) { t = l; l = r; r = t; } else if(!vaddr(l, 1)) { reglcgen(&nod5, l, Z); l = &nod5; evacaxdx(l); } } t = regpair(Z, n); sugen(r, t, 8); r = t; evacaxdx(r->left); evacaxdx(r->right); if(l->complex <= r->complex && !m && !vaddr(l, 1)) { reglcgen(&nod5, l, Z); l = &nod5; evacaxdx(l); } } if(dr) t = nn; else t = regpair(Z, n); c = Z; d = Z; if(!nodreg(&nod1, t->left, D_AX)) { if(t->left->reg != D_AX){ t->left->reg = D_AX; reg[D_AX]++; }else if(reg[D_AX] == 0) fatal(Z, "vlong mul AX botch"); } if(!nodreg(&nod2, t->right, D_DX)) { if(t->right->reg != D_DX){ t->right->reg = D_DX; reg[D_DX]++; }else if(reg[D_DX] == 0) fatal(Z, "vlong mul DX botch"); } if(m) sugen(l, t, 8); else loadpair(l, t); if(t->left->reg != D_AX) { c = &nod3; regsalloc(c, t->left); gmove(&nod1, c); gmove(t->left, &nod1); zapreg(t->left); } if(t->right->reg != D_DX) { d = &nod4; regsalloc(d, t->right); gmove(&nod2, d); gmove(t->right, &nod2); zapreg(t->right); } if(c != Z || d != Z) { s = regpair(Z, n); s->left = &nod1; s->right = &nod2; } else s = t; if(r->op == OCONST) { if(hi64v(r) == 0) biggen(s, r, Z, 0, mulc32, nil); else biggen(s, r, Z, 0, mulc64, nil); } else biggen(s, r, Z, 0, mull, nil); instpair(t, Z); if(c != Z) { gmove(&nod1, t->left); gmove(&nod3, &nod1); } if(d != Z) { gmove(&nod2, t->right); gmove(&nod4, &nod2); } if(r->op == OREGPAIR) freepair(r); if(!m) storepair(t, l, 0); if(l == &nod5) regfree(l); if(!dr) { if(nn != Z) storepair(t, nn, 1); else freepair(t); } return 1; case OASADD: args = ADDargs; goto vasop; case OASAND: args = ANDargs; goto vasop; case OASOR: args = ORargs; goto vasop; case OASSUB: args = SUBargs; goto vasop; case OASXOR: args = XORargs; goto vasop; vasop: l = n->left; r = n->right; dr = nn != Z && nn->op == OREGPAIR; m = 0; if(l->complex > r->complex) { if(!vaddr(l, 1)) { reglcgen(&nod1, l, Z); l = &nod1; } if(!vaddr(r, 1) || nn != Z || r->op == OCONST) { if(dr) t = nn; else t = regpair(Z, r); sugen(r, t, 8); r = t; m = 1; } } else { if(!vaddr(r, 1) || nn != Z || r->op == OCONST) { if(dr) t = nn; else t = regpair(Z, r); sugen(r, t, 8); r = t; m = 1; } if(!vaddr(l, 1)) { reglcgen(&nod1, l, Z); l = &nod1; } } if(nn != Z) { if(n->op == OASSUB) biggen(l, r, Z, 0, sub10, args); else biggen(r, l, Z, 0, binoptmp, args); storepair(r, l, 0); } else { if(m) biggen(l, r, Z, 0, binop00, args); else biggen(l, r, Z, 0, binoptmp, args); } if(l == &nod1) regfree(&nod1); if(m) { if(nn == Z) freepair(r); else if(!dr) storepair(r, nn, 1); } return 1; case OASASHL: args = nil; optab = asshlltab; goto assh; case OASLSHR: args = shrlargs; optab = asshrltab; goto assh; case OASASHR: args = sarlargs; optab = asshrltab; goto assh; assh: c = Z; l = n->left; r = n->right; if(r->op == OCONST) { m = r->vconst & 63; if(m < 32) m = SAclo; else if(m == 32) m = SAc32; else m = SAchi; } else m = SAgen; if(l->complex > r->complex) { if(!vaddr(l, 0)) { reglcgen(&nod1, l, Z); l = &nod1; } if(m == SAgen) { t = &nod2; if(l->reg == D_CX) { regalloc(t, r, Z); gmove(l, t); l->reg = t->reg; t->reg = D_CX; } else c = snarfreg(nn, t, D_CX, r, &nod3); cgen(r, t); r = t; } } else { if(m == SAgen) { t = &nod2; c = snarfreg(nn, t, D_CX, r, &nod3); cgen(r, t); r = t; } if(!vaddr(l, 0)) { reglcgen(&nod1, l, Z); l = &nod1; } } if(nn != Z) { m += SAdgen - SAgen; d = regpair(nn, n); instpair(d, Z); biggen(l, r, d, 0, optab[m], args); if(l == &nod1) { regfree(&nod1); l = Z; } if(r == &nod2 && c == Z) { regfree(&nod2); r = Z; } if(d != nn) storepair(d, nn, 1); } else biggen(l, r, Z, 0, optab[m], args); if(c != Z) { gins(AMOVL, c, r); regfree(c); } if(l == &nod1) regfree(&nod1); if(r == &nod2) regfree(&nod2); return 1; case OPOSTINC: args = ADDargs; cp = incdecpost; goto vinc; case OPOSTDEC: args = SUBargs; cp = incdecpost; goto vinc; case OPREINC: args = ADDargs; cp = incdecpre; goto vinc; case OPREDEC: args = SUBargs; cp = incdecpre; goto vinc; vinc: l = n->left; if(!vaddr(l, 1)) { reglcgen(&nod1, l, Z); l = &nod1; } if(nn != Z) { d = regpair(nn, n); instpair(d, Z); biggen(l, Z, d, 0, cp, args); if(l == &nod1) { regfree(&nod1); l = Z; } if(d != nn) storepair(d, nn, 1); } else biggen(l, Z, Z, 0, incdec, args); if(l == &nod1) regfree(&nod1); return 1; case OCAST: l = n->left; if(typev[l->type->etype]) { if(!vaddr(l, 1)) { if(l->complex + 1 > nn->complex) { d = regpair(Z, l); sugen(l, d, 8); if(!vaddr(nn, 1)) { reglcgen(&nod1, nn, Z); r = &nod1; } else r = nn; } else { if(!vaddr(nn, 1)) { reglcgen(&nod1, nn, Z); r = &nod1; } else r = nn; d = regpair(Z, l); sugen(l, d, 8); } // d->left->type = r->type; d->left->type = types[TLONG]; gmove(d->left, r); freepair(d); } else { if(nn->op != OREGISTER && !vaddr(nn, 1)) { reglcgen(&nod1, nn, Z); r = &nod1; } else r = nn; // l->type = r->type; l->type = types[TLONG]; gmove(l, r); } if(r != nn) regfree(r); } else { if(typeu[l->type->etype] || cond(l->op)) si = TUNSIGNED; else si = TSIGNED; regalloc(&nod1, l, Z); cgen(l, &nod1); if(nn->op == OREGPAIR) { m = instpair(nn, &nod1); biggen(&nod1, Z, nn, si == TSIGNED, castrp, nil); } else { m = 0; if(!vaddr(nn, si != TSIGNED)) { dt = nn->type; nn->type = types[TLONG]; reglcgen(&nod2, nn, Z); nn->type = dt; nn = &nod2; } dt = nn->type; nn->type = types[TLONG]; biggen(&nod1, Z, nn, si == TSIGNED, castrpa, nil); nn->type = dt; if(nn == &nod2) regfree(&nod2); } if(!m) regfree(&nod1); } return 1; default: if(n->op == OREGPAIR) { storepair(n, nn, 1); return 1; } if(nn->op == OREGPAIR) { loadpair(n, nn); return 1; } return 0; } finished: if(d != nn) storepair(d, nn, 1); return 1; } void testv(Node *n, int true) { Type *t; Node *nn, nod; switch(n->op) { case OINDREG: case ONAME: biggen(n, Z, Z, true, testi, nil); break; default: n = vfunc(n, n); if(n->addable >= INDEXED) { t = n->type; n->type = types[TLONG]; reglcgen(&nod, n, Z); n->type = t; n = &nod; biggen(n, Z, Z, true, testi, nil); if(n == &nod) regfree(n); } else { nn = regpair(Z, n); sugen(n, nn, 8); biggen(nn, Z, Z, true, testi, nil); freepair(nn); } } } ����������������������������������������������������������������������go/src/cmd/8c/div.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000011646�12412656734�014276� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8c/div.c // http://code.google.com/p/inferno-os/source/browse/utils/8c/div.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" /* * Based on: Granlund, T.; Montgomery, P.L. * "Division by Invariant Integers using Multiplication". * SIGPLAN Notices, Vol. 29, June 1994, page 61. */ #define TN(n) ((uvlong)1 << (n)) #define T31 TN(31) #define T32 TN(32) int multiplier(uint32 d, int p, uvlong *mp) { int l; uvlong mlo, mhi, tlo, thi; l = topbit(d - 1) + 1; mlo = (((TN(l) - d) << 32) / d) + T32; if(l + p == 64) mhi = (((TN(l) + 1 - d) << 32) / d) + T32; else mhi = (TN(32 + l) + TN(32 + l - p)) / d; /*assert(mlo < mhi);*/ while(l > 0) { tlo = mlo >> 1; thi = mhi >> 1; if(tlo == thi) break; mlo = tlo; mhi = thi; l--; } *mp = mhi; return l; } int sdiv(uint32 d, uint32 *mp, int *sp) { int s; uvlong m; s = multiplier(d, 32 - 1, &m); *mp = m; *sp = s; if(m >= T31) return 1; else return 0; } int udiv(uint32 d, uint32 *mp, int *sp, int *pp) { int p, s; uvlong m; s = multiplier(d, 32, &m); p = 0; if(m >= T32) { while((d & 1) == 0) { d >>= 1; p++; } s = multiplier(d, 32 - p, &m); } *mp = m; *pp = p; if(m >= T32) { /*assert(p == 0);*/ *sp = s - 1; return 1; } else { *sp = s; return 0; } } void sdivgen(Node *l, Node *r, Node *ax, Node *dx) { int a, s; uint32 m; vlong c; c = r->vconst; if(c < 0) c = -c; a = sdiv(c, &m, &s); //print("a=%d i=%d s=%d m=%ux\n", a, (int32)r->vconst, s, m); gins(AMOVL, nodconst(m), ax); gins(AIMULL, l, Z); gins(AMOVL, l, ax); if(a) gins(AADDL, ax, dx); gins(ASHRL, nodconst(31), ax); gins(ASARL, nodconst(s), dx); gins(AADDL, ax, dx); if(r->vconst < 0) gins(ANEGL, Z, dx); } void udivgen(Node *l, Node *r, Node *ax, Node *dx) { int a, s, t; uint32 m; Node nod; a = udiv(r->vconst, &m, &s, &t); //print("a=%ud i=%d p=%d s=%d m=%ux\n", a, (int32)r->vconst, t, s, m); if(t != 0) { gins(AMOVL, l, ax); gins(ASHRL, nodconst(t), ax); gins(AMOVL, nodconst(m), dx); gins(AMULL, dx, Z); } else if(a) { if(l->op != OREGISTER) { regalloc(&nod, l, Z); gins(AMOVL, l, &nod); l = &nod; } gins(AMOVL, nodconst(m), ax); gins(AMULL, l, Z); gins(AADDL, l, dx); gins(ARCRL, nodconst(1), dx); if(l == &nod) regfree(l); } else { gins(AMOVL, nodconst(m), ax); gins(AMULL, l, Z); } if(s != 0) gins(ASHRL, nodconst(s), dx); } void sext(Node *d, Node *s, Node *l) { if(s->reg == D_AX && !nodreg(d, Z, D_DX)) { reg[D_DX]++; gins(ACDQ, Z, Z); } else { regalloc(d, l, Z); gins(AMOVL, s, d); gins(ASARL, nodconst(31), d); } } void sdiv2(int32 c, int v, Node *l, Node *n) { Node nod; if(v > 0) { if(v > 1) { sext(&nod, n, l); gins(AANDL, nodconst((1 << v) - 1), &nod); gins(AADDL, &nod, n); regfree(&nod); } else { gins(ACMPL, n, nodconst(0x80000000)); gins(ASBBL, nodconst(-1), n); } gins(ASARL, nodconst(v), n); } if(c < 0) gins(ANEGL, Z, n); } void smod2(int32 c, int v, Node *l, Node *n) { Node nod; if(c == 1) { zeroregm(n); return; } sext(&nod, n, l); if(v == 0) { zeroregm(n); gins(AXORL, &nod, n); gins(ASUBL, &nod, n); } else if(v > 1) { gins(AANDL, nodconst((1 << v) - 1), &nod); gins(AADDL, &nod, n); gins(AANDL, nodconst((1 << v) - 1), n); gins(ASUBL, &nod, n); } else { gins(AANDL, nodconst(1), n); gins(AXORL, &nod, n); gins(ASUBL, &nod, n); } regfree(&nod); } ������������������������������������������������������������������������������������������go/src/cmd/8c/doc.go��������������������������������������������������������������������������������0100644�0000000�0000000�00000000640�12412656734�014434� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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 ignore /* 8c is a version of the Plan 9 C compiler. The original is documented at http://plan9.bell-labs.com/magic/man2html/1/8c Its target architecture is the x86, referred to by these tools for historical reasons as 386. */ package main ������������������������������������������������������������������������������������������������go/src/cmd/8c/gc.h����������������������������������������������������������������������������������0100644�0000000�0000000�00000016700�12412656737�014111� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8c/gc.h // http://code.google.com/p/inferno-os/source/browse/utils/8c/gc.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "../cc/cc.h" #include "../8l/8.out.h" /* * 8c/386 * Intel 386 */ #define SZ_CHAR 1 #define SZ_SHORT 2 #define SZ_INT 4 #define SZ_LONG 4 #define SZ_IND 4 #define SZ_FLOAT 4 #define SZ_VLONG 8 #define SZ_DOUBLE 8 #define FNX 100 typedef struct Case Case; typedef struct C1 C1; typedef struct Reg Reg; typedef struct Rgn Rgn; typedef struct Renv Renv; EXTERN struct { Node* regtree; Node* basetree; short scale; short reg; short ptr; } idx; #define A ((Addr*)0) #define INDEXED 9 #define P ((Prog*)0) struct Case { Case* link; int32 val; int32 label; char def; char isv; }; #define C ((Case*)0) struct C1 { int32 val; int32 label; }; struct Reg { int32 pc; int32 rpo; /* reverse post ordering */ Bits set; Bits use1; Bits use2; Bits refbehind; Bits refahead; Bits calbehind; Bits calahead; Bits regdiff; Bits act; int32 regu; int32 loop; /* could be shorter */ Reg* log5; int32 active; Reg* p1; Reg* p2; Reg* p2link; Reg* s1; Reg* s2; Reg* link; Prog* prog; }; #define R ((Reg*)0) struct Renv { int safe; Node base; Node* saved; Node* scope; }; #define NRGN 600 struct Rgn { Reg* enter; short cost; short varno; short regno; }; EXTERN int32 breakpc; EXTERN int32 nbreak; EXTERN Case* cases; EXTERN Node constnode; EXTERN Node fconstnode; EXTERN int32 continpc; EXTERN int32 curarg; EXTERN int32 cursafe; EXTERN Prog* lastp; EXTERN int32 maxargsafe; EXTERN int mnstring; EXTERN int retok; EXTERN Node* nodrat; EXTERN Node* nodret; EXTERN Node* nodsafe; EXTERN int32 nrathole; EXTERN int32 nstring; EXTERN Prog* p; EXTERN int32 pc; EXTERN Node regnode; EXTERN Node fregnode0; EXTERN Node fregnode1; EXTERN char string[NSNAME]; EXTERN Sym* symrathole; EXTERN Node znode; EXTERN Prog zprog; EXTERN int reg[D_NONE]; EXTERN int32 exregoffset; EXTERN int32 exfregoffset; #define BLOAD(r) band(bnot(r->refbehind), r->refahead) #define BSTORE(r) band(bnot(r->calbehind), r->calahead) #define LOAD(r) (~r->refbehind.b[z] & r->refahead.b[z]) #define STORE(r) (~r->calbehind.b[z] & r->calahead.b[z]) #define bset(a,n) ((a).b[(n)/32]&(1L<<(n)%32)) #define CLOAD 5 #define CREF 5 #define CINF 1000 #define LOOP 3 EXTERN Rgn region[NRGN]; EXTERN Rgn* rgp; EXTERN int nregion; EXTERN int nvar; EXTERN Bits externs; EXTERN Bits params; EXTERN Bits consts; EXTERN Bits addrs; EXTERN int32 regbits; EXTERN int32 exregbits; EXTERN int change; EXTERN int suppress; EXTERN Reg* firstr; EXTERN Reg* lastr; EXTERN Reg zreg; EXTERN Reg* freer; EXTERN int32* idom; EXTERN Reg** rpo2r; EXTERN int32 maxnr; extern char* anames[]; /* * sgen.c */ void codgen(Node*, Node*); void gen(Node*); void noretval(int); void usedset(Node*, int); void xcom(Node*); void indx(Node*); int bcomplex(Node*, Node*); Prog* gtext(Sym*, int32); vlong argsize(void); /* * cgen.c */ void zeroregm(Node*); void cgen(Node*, Node*); void reglcgen(Node*, Node*, Node*); void lcgen(Node*, Node*); void bcgen(Node*, int); void boolgen(Node*, int, Node*); void sugen(Node*, Node*, int32); int needreg(Node*, int); /* * cgen64.c */ int vaddr(Node*, int); void loadpair(Node*, Node*); int cgen64(Node*, Node*); void testv(Node*, int); /* * txt.c */ void ginit(void); void gclean(void); void nextpc(void); void gargs(Node*, Node*, Node*); void garg1(Node*, Node*, Node*, int, Node**); Node* nodconst(int32); Node* nodfconst(double); int nodreg(Node*, Node*, int); int isreg(Node*, int); void regret(Node*, Node*); void regalloc(Node*, Node*, Node*); void regfree(Node*); void regialloc(Node*, Node*, Node*); void regsalloc(Node*, Node*); void regaalloc1(Node*, Node*); void regaalloc(Node*, Node*); void regind(Node*, Node*); void gprep(Node*, Node*); void naddr(Node*, Addr*); void gmove(Node*, Node*); void gins(int a, Node*, Node*); void fgopcode(int, Node*, Node*, int, int); void gopcode(int, Type*, Node*, Node*); int samaddr(Node*, Node*); void gbranch(int); void patch(Prog*, int32); int sconst(Node*); void gpseudo(int, Sym*, Node*); void gprefetch(Node*); void gpcdata(int, int); /* * swt.c */ int swcmp(const void*, const void*); void doswit(Node*); void swit1(C1*, int, int32, Node*); void swit2(C1*, int, int32, Node*); void newcase(void); void bitload(Node*, Node*, Node*, Node*, Node*); void bitstore(Node*, Node*, Node*, Node*, Node*); int32 outstring(char*, int32); void nullwarn(Node*, Node*); void sextern(Sym*, Node*, int32, int32); void gextern(Sym*, Node*, int32, int32); void outcode(void); /* * list */ void listinit(void); /* * reg.c */ Reg* rega(void); int rcmp(const void*, const void*); void regopt(Prog*); void addmove(Reg*, int, int, int); Bits mkvar(Reg*, Addr*); void prop(Reg*, Bits, Bits); void loopit(Reg*, int32); void synch(Reg*, Bits); uint32 allreg(uint32, Rgn*); void paint1(Reg*, int); uint32 paint2(Reg*, int); void paint3(Reg*, int, int32, int); void addreg(Addr*, int); /* * peep.c */ void peep(void); void excise(Reg*); Reg* uniqp(Reg*); Reg* uniqs(Reg*); int regtyp(Addr*); int anyvar(Addr*); int subprop(Reg*); int copyprop(Reg*); int copy1(Addr*, Addr*, Reg*, int); int copyu(Prog*, Addr*, Addr*); int copyas(Addr*, Addr*); int copyau(Addr*, Addr*); int copysub(Addr*, Addr*, Addr*, int); int copysub1(Prog*, Addr*, Addr*, int); int32 RtoB(int); int32 FtoB(int); int BtoR(int32); int BtoF(int32); #define D_HI D_NONE #define D_LO D_NONE /* * bound */ void comtarg(void); /* * com64 */ int cond(int); int com64(Node*); void com64init(void); void bool64(Node*); int32 lo64v(Node*); int32 hi64v(Node*); Node* lo64(Node*); Node* hi64(Node*); /* * div/mul */ void sdivgen(Node*, Node*, Node*, Node*); void udivgen(Node*, Node*, Node*, Node*); void sdiv2(int32, int, Node*, Node*); void smod2(int32, int, Node*, Node*); void mulgen(Type*, Node*, Node*); void genmuladd(Node*, Node*, int, Node*); void shiftit(Type*, Node*, Node*); /* wrecklessly steal a field */ #define rplink label ����������������������������������������������������������������go/src/cmd/8c/list.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000003371�12412656734�014463� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8c/list.c // http://code.google.com/p/inferno-os/source/browse/utils/8c/list.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #define EXTERN #include "gc.h" void listinit(void) { listinit8(); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8c/machcap.c�����������������������������������������������������������������������������0100644�0000000�0000000�00000005355�12412656734�015110� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8c/machcap.c // http://code.google.com/p/inferno-os/source/browse/utils/8c/machcap.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" int machcap(Node *n) { if(n == Z) return 1; /* test */ switch(n->op) { case OMUL: case OLMUL: case OASMUL: case OASLMUL: if(typechl[n->type->etype]) return 1; if(typev[n->type->etype]) { return 1; } break; case OCOM: case ONEG: case OADD: case OAND: case OOR: case OSUB: case OXOR: case OASHL: case OLSHR: case OASHR: if(typechlv[n->left->type->etype]) return 1; break; case OCAST: if(typev[n->type->etype]) { if(typechlp[n->left->type->etype]) return 1; } else if(!typefd[n->type->etype]) { if(typev[n->left->type->etype]) return 1; } break; case OCOND: case OCOMMA: case OLIST: case OANDAND: case OOROR: case ONOT: return 1; case OASADD: case OASSUB: case OASAND: case OASOR: case OASXOR: return 1; case OASASHL: case OASASHR: case OASLSHR: return 1; case OPOSTINC: case OPOSTDEC: case OPREINC: case OPREDEC: return 1; case OEQ: case ONE: case OLE: case OGT: case OLT: case OGE: case OHI: case OHS: case OLO: case OLS: return 1; } return 0; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8c/mul.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000016135�12412656734�014307� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8c/mul.c // http://code.google.com/p/inferno-os/source/browse/utils/8c/mul.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" typedef struct Malg Malg; typedef struct Mparam Mparam; struct Malg { schar vals[10]; }; struct Mparam { uint32 value; schar alg; char neg; char shift; char arg; schar off; }; static Mparam multab[32]; static int mulptr; static Malg malgs[] = { {0, 100}, {-1, 1, 100}, {-9, -5, -3, 3, 5, 9, 100}, {6, 10, 12, 18, 20, 24, 36, 40, 72, 100}, {-8, -4, -2, 2, 4, 8, 100}, }; /* * return position of lowest 1 */ int lowbit(uint32 v) { int s, i; uint32 m; s = 0; m = 0xFFFFFFFFUL; for(i = 16; i > 0; i >>= 1) { m >>= i; if((v & m) == 0) { v >>= i; s += i; } } return s; } void genmuladd(Node *d, Node *s, int m, Node *a) { Node nod; nod.op = OINDEX; nod.left = a; nod.right = s; nod.scale = m; nod.type = types[TIND]; nod.xoffset = 0; xcom(&nod); gopcode(OADDR, d->type, &nod, d); } void mulparam(uint32 m, Mparam *mp) { int c, i, j, n, o, q, s; int bc, bi, bn, bo, bq, bs, bt; schar *p; int32 u; uint32 t; bc = bq = 10; bi = bn = bo = bs = bt = 0; for(i = 0; i < nelem(malgs); i++) { for(p = malgs[i].vals, j = 0; (o = p[j]) < 100; j++) for(s = 0; s < 2; s++) { c = 10; q = 10; u = m - o; if(u == 0) continue; if(s) { o = -o; if(o > 0) continue; u = -u; } n = lowbit(u); t = (uint32)u >> n; switch(i) { case 0: if(t == 1) { c = s + 1; q = 0; break; } switch(t) { case 3: case 5: case 9: c = s + 1; if(n) c++; q = 0; break; } if(s) break; switch(t) { case 15: case 25: case 27: case 45: case 81: c = 2; if(n) c++; q = 1; break; } break; case 1: if(t == 1) { c = 3; q = 3; break; } switch(t) { case 3: case 5: case 9: c = 3; q = 2; break; } break; case 2: if(t == 1) { c = 3; q = 2; break; } break; case 3: if(s) break; if(t == 1) { c = 3; q = 1; break; } break; case 4: if(t == 1) { c = 3; q = 0; break; } break; } if(c < bc || (c == bc && q > bq)) { bc = c; bi = i; bn = n; bo = o; bq = q; bs = s; bt = t; } } } mp->value = m; if(bc <= 3) { mp->alg = bi; mp->shift = bn; mp->off = bo; mp->neg = bs; mp->arg = bt; } else mp->alg = -1; } int m0(int a) { switch(a) { case -2: case 2: return 2; case -3: case 3: return 2; case -4: case 4: return 4; case -5: case 5: return 4; case 6: return 2; case -8: case 8: return 8; case -9: case 9: return 8; case 10: return 4; case 12: return 2; case 15: return 2; case 18: return 8; case 20: return 4; case 24: return 2; case 25: return 4; case 27: return 2; case 36: return 8; case 40: return 4; case 45: return 4; case 72: return 8; case 81: return 8; } diag(Z, "bad m0"); return 0; } int m1(int a) { switch(a) { case 15: return 4; case 25: return 4; case 27: return 8; case 45: return 8; case 81: return 8; } diag(Z, "bad m1"); return 0; } int m2(int a) { switch(a) { case 6: return 2; case 10: return 2; case 12: return 4; case 18: return 2; case 20: return 4; case 24: return 8; case 36: return 4; case 40: return 8; case 72: return 8; } diag(Z, "bad m2"); return 0; } void shiftit(Type *t, Node *s, Node *d) { int32 c; c = (int32)s->vconst & 31; switch(c) { case 0: break; case 1: gopcode(OADD, t, d, d); break; default: gopcode(OASHL, t, s, d); } } static int mulgen1(uint32 v, Node *n) { int i, o; Mparam *p; Node nod, nods; for(i = 0; i < nelem(multab); i++) { p = &multab[i]; if(p->value == v) goto found; } p = &multab[mulptr]; if(++mulptr == nelem(multab)) mulptr = 0; mulparam(v, p); found: // print("v=%.x a=%d n=%d s=%d g=%d o=%d \n", p->value, p->alg, p->neg, p->shift, p->arg, p->off); if(p->alg < 0) return 0; nods = *nodconst(p->shift); o = OADD; if(p->alg > 0) { regalloc(&nod, n, Z); if(p->off < 0) o = OSUB; } switch(p->alg) { case 0: switch(p->arg) { case 1: shiftit(n->type, &nods, n); break; case 15: case 25: case 27: case 45: case 81: genmuladd(n, n, m1(p->arg), n); /* fall thru */ case 3: case 5: case 9: genmuladd(n, n, m0(p->arg), n); shiftit(n->type, &nods, n); break; default: goto bad; } if(p->neg == 1) gins(ANEGL, Z, n); break; case 1: switch(p->arg) { case 1: gmove(n, &nod); shiftit(n->type, &nods, &nod); break; case 3: case 5: case 9: genmuladd(&nod, n, m0(p->arg), n); shiftit(n->type, &nods, &nod); break; default: goto bad; } if(p->neg) gopcode(o, n->type, &nod, n); else { gopcode(o, n->type, n, &nod); gmove(&nod, n); } break; case 2: genmuladd(&nod, n, m0(p->off), n); shiftit(n->type, &nods, n); goto comop; case 3: genmuladd(&nod, n, m0(p->off), n); shiftit(n->type, &nods, n); genmuladd(n, &nod, m2(p->off), n); break; case 4: genmuladd(&nod, n, m0(p->off), nodconst(0)); shiftit(n->type, &nods, n); goto comop; default: diag(Z, "bad mul alg"); break; comop: if(p->neg) { gopcode(o, n->type, n, &nod); gmove(&nod, n); } else gopcode(o, n->type, &nod, n); } if(p->alg > 0) regfree(&nod); return 1; bad: diag(Z, "mulgen botch"); return 1; } void mulgen(Type *t, Node *r, Node *n) { if(!mulgen1(r->vconst, n)) gopcode(OMUL, t, r, n); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8c/peep.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000031560�12412656734�014442� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8c/peep.c // http://code.google.com/p/inferno-os/source/browse/utils/8c/peep.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" static int needc(Prog *p) { while(p != P) { switch(p->as) { case AADCL: case ASBBL: case ARCRL: return 1; case AADDL: case ASUBL: case AJMP: case ARET: case ACALL: return 0; default: if(p->to.type == D_BRANCH) return 0; } p = p->link; } return 0; } void peep(void) { Reg *r, *r1, *r2; Prog *p, *p1; int t; /* * complete R structure */ t = 0; for(r=firstr; r!=R; r=r1) { r1 = r->link; if(r1 == R) break; p = r->prog->link; while(p != r1->prog) switch(p->as) { default: r2 = rega(); r->link = r2; r2->link = r1; r2->prog = p; r2->p1 = r; r->s1 = r2; r2->s1 = r1; r1->p1 = r2; r = r2; t++; case ADATA: case AGLOBL: case ANAME: case ASIGNAME: p = p->link; } } pc = 0; /* speculating it won't kill */ loop1: t = 0; for(r=firstr; r!=R; r=r->link) { p = r->prog; switch(p->as) { case AMOVL: if(regtyp(&p->to)) if(regtyp(&p->from)) { if(copyprop(r)) { excise(r); t++; } if(subprop(r) && copyprop(r)) { excise(r); t++; } } break; case AMOVBLSX: case AMOVBLZX: case AMOVWLSX: case AMOVWLZX: if(regtyp(&p->to)) { r1 = uniqs(r); if(r1 != R) { p1 = r1->prog; if(p->as == p1->as && p->to.type == p1->from.type) p1->as = AMOVL; } } break; case AADDL: case AADDW: if(p->from.type != D_CONST || needc(p->link)) break; if(p->from.offset == -1){ if(p->as == AADDL) p->as = ADECL; else p->as = ADECW; p->from = zprog.from; } else if(p->from.offset == 1){ if(p->as == AADDL) p->as = AINCL; else p->as = AINCW; p->from = zprog.from; } break; case ASUBL: case ASUBW: if(p->from.type != D_CONST || needc(p->link)) break; if(p->from.offset == -1) { if(p->as == ASUBL) p->as = AINCL; else p->as = AINCW; p->from = zprog.from; } else if(p->from.offset == 1){ if(p->as == ASUBL) p->as = ADECL; else p->as = ADECW; p->from = zprog.from; } break; } } if(t) goto loop1; } void excise(Reg *r) { Prog *p; p = r->prog; p->as = ANOP; p->from = zprog.from; p->to = zprog.to; } Reg* uniqp(Reg *r) { Reg *r1; r1 = r->p1; if(r1 == R) { r1 = r->p2; if(r1 == R || r1->p2link != R) return R; } else if(r->p2 != R) return R; return r1; } Reg* uniqs(Reg *r) { Reg *r1; r1 = r->s1; if(r1 == R) { r1 = r->s2; if(r1 == R) return R; } else if(r->s2 != R) return R; return r1; } int regtyp(Addr *a) { int t; t = a->type; if(t >= D_AX && t <= D_DI) return 1; return 0; } /* * the idea is to substitute * one register for another * from one MOV to another * MOV a, R0 * ADD b, R0 / no use of R1 * MOV R0, R1 * would be converted to * MOV a, R1 * ADD b, R1 * MOV R1, R0 * hopefully, then the former or latter MOV * will be eliminated by copy propagation. */ int subprop(Reg *r0) { Prog *p; Addr *v1, *v2; Reg *r; int t; p = r0->prog; v1 = &p->from; if(!regtyp(v1)) return 0; v2 = &p->to; if(!regtyp(v2)) return 0; for(r=uniqp(r0); r!=R; r=uniqp(r)) { if(uniqs(r) == R) break; p = r->prog; switch(p->as) { case ACALL: return 0; case AIMULL: case AIMULW: if(p->to.type != D_NONE) break; case ADIVB: case ADIVL: case ADIVW: case AIDIVB: case AIDIVL: case AIDIVW: case AIMULB: case AMULB: case AMULL: case AMULW: case AROLB: case AROLL: case AROLW: case ARORB: case ARORL: case ARORW: case ASALB: case ASALL: case ASALW: case ASARB: case ASARL: case ASARW: case ASHLB: case ASHLL: case ASHLW: case ASHRB: case ASHRL: case ASHRW: case AREP: case AREPN: case ACWD: case ACDQ: case ASTOSB: case ASTOSL: case AMOVSB: case AMOVSL: case AFSTSW: return 0; case AMOVL: if(p->to.type == v1->type) goto gotit; break; } if(copyau(&p->from, v2) || copyau(&p->to, v2)) break; if(copysub(&p->from, v1, v2, 0) || copysub(&p->to, v1, v2, 0)) break; } return 0; gotit: copysub(&p->to, v1, v2, 1); if(debug['P']) { print("gotit: %D->%D\n%P", v1, v2, r->prog); if(p->from.type == v2->type) print(" excise"); print("\n"); } for(r=uniqs(r); r!=r0; r=uniqs(r)) { p = r->prog; copysub(&p->from, v1, v2, 1); copysub(&p->to, v1, v2, 1); if(debug['P']) print("%P\n", r->prog); } t = v1->type; v1->type = v2->type; v2->type = t; if(debug['P']) print("%P last\n", r->prog); return 1; } /* * The idea is to remove redundant copies. * v1->v2 F=0 * (use v2 s/v2/v1/)* * set v1 F=1 * use v2 return fail * ----------------- * v1->v2 F=0 * (use v2 s/v2/v1/)* * set v1 F=1 * set v2 return success */ int copyprop(Reg *r0) { Prog *p; Addr *v1, *v2; Reg *r; p = r0->prog; v1 = &p->from; v2 = &p->to; if(copyas(v1, v2)) return 1; for(r=firstr; r!=R; r=r->link) r->active = 0; return copy1(v1, v2, r0->s1, 0); } int copy1(Addr *v1, Addr *v2, Reg *r, int f) { int t; Prog *p; if(r->active) { if(debug['P']) print("act set; return 1\n"); return 1; } r->active = 1; if(debug['P']) print("copy %D->%D f=%d\n", v1, v2, f); for(; r != R; r = r->s1) { p = r->prog; if(debug['P']) print("%P", p); if(!f && uniqp(r) == R) { f = 1; if(debug['P']) print("; merge; f=%d", f); } t = copyu(p, v2, A); switch(t) { case 2: /* rar, can't split */ if(debug['P']) print("; %D rar; return 0\n", v2); return 0; case 3: /* set */ if(debug['P']) print("; %D set; return 1\n", v2); return 1; case 1: /* used, substitute */ case 4: /* use and set */ if(f) { if(!debug['P']) return 0; if(t == 4) print("; %D used+set and f=%d; return 0\n", v2, f); else print("; %D used and f=%d; return 0\n", v2, f); return 0; } if(copyu(p, v2, v1)) { if(debug['P']) print("; sub fail; return 0\n"); return 0; } if(debug['P']) print("; sub %D/%D", v2, v1); if(t == 4) { if(debug['P']) print("; %D used+set; return 1\n", v2); return 1; } break; } if(!f) { t = copyu(p, v1, A); if(!f && (t == 2 || t == 3 || t == 4)) { f = 1; if(debug['P']) print("; %D set and !f; f=%d", v1, f); } } if(debug['P']) print("\n"); if(r->s2) if(!copy1(v1, v2, r->s2, f)) return 0; } return 1; } /* * return * 1 if v only used (and substitute), * 2 if read-alter-rewrite * 3 if set * 4 if set and used * 0 otherwise (not touched) */ int copyu(Prog *p, Addr *v, Addr *s) { switch(p->as) { default: if(debug['P']) print("unknown op %A\n", p->as); return 2; case ANEGB: case ANEGW: case ANEGL: case ANOTB: case ANOTW: case ANOTL: if(copyas(&p->to, v)) return 2; break; case ALEAL: /* lhs addr, rhs store */ if(copyas(&p->from, v)) return 2; case ANOP: /* rhs store */ case AMOVL: case AMOVBLSX: case AMOVBLZX: case AMOVWLSX: case AMOVWLZX: if(copyas(&p->to, v)) { if(s != A) return copysub(&p->from, v, s, 1); if(copyau(&p->from, v)) return 4; return 3; } goto caseread; case AROLB: case AROLL: case AROLW: case ARORB: case ARORL: case ARORW: case ASALB: case ASALL: case ASALW: case ASARB: case ASARL: case ASARW: case ASHLB: case ASHLL: case ASHLW: case ASHRB: case ASHRL: case ASHRW: if(copyas(&p->to, v)) return 2; if(copyas(&p->from, v)) if(p->from.type == D_CX) return 2; goto caseread; case AADDB: /* rhs rar */ case AADDL: case AADDW: case AANDB: case AANDL: case AANDW: case ADECL: case ADECW: case AINCL: case AINCW: case ASUBB: case ASUBL: case ASUBW: case AORB: case AORL: case AORW: case AXORB: case AXORL: case AXORW: case AMOVB: case AMOVW: case AFMOVB: case AFMOVBP: case AFMOVD: case AFMOVDP: case AFMOVF: case AFMOVFP: case AFMOVL: case AFMOVLP: case AFMOVV: case AFMOVVP: case AFMOVW: case AFMOVWP: case AFMOVX: case AFMOVXP: case AFADDDP: case AFADDW: case AFADDL: case AFADDF: case AFADDD: case AFMULDP: case AFMULW: case AFMULL: case AFMULF: case AFMULD: case AFSUBDP: case AFSUBW: case AFSUBL: case AFSUBF: case AFSUBD: case AFSUBRDP: case AFSUBRW: case AFSUBRL: case AFSUBRF: case AFSUBRD: case AFDIVDP: case AFDIVW: case AFDIVL: case AFDIVF: case AFDIVD: case AFDIVRDP: case AFDIVRW: case AFDIVRL: case AFDIVRF: case AFDIVRD: if(copyas(&p->to, v)) return 2; goto caseread; case ACMPL: /* read only */ case ACMPW: case ACMPB: case APREFETCHT0: case APREFETCHT1: case APREFETCHT2: case APREFETCHNTA: case AFCOMB: case AFCOMBP: case AFCOMD: case AFCOMDP: case AFCOMDPP: case AFCOMF: case AFCOMFP: case AFCOML: case AFCOMLP: case AFCOMW: case AFCOMWP: case AFUCOM: case AFUCOMP: case AFUCOMPP: caseread: if(s != A) { if(copysub(&p->from, v, s, 1)) return 1; return copysub(&p->to, v, s, 1); } if(copyau(&p->from, v)) return 1; if(copyau(&p->to, v)) return 1; break; case AJGE: /* no reference */ case AJNE: case AJLE: case AJEQ: case AJHI: case AJLS: case AJMI: case AJPL: case AJGT: case AJLT: case AJCC: case AJCS: case AADJSP: case AFLDZ: case AWAIT: break; case AIMULL: case AIMULW: if(p->to.type != D_NONE) { if(copyas(&p->to, v)) return 2; goto caseread; } case ADIVB: case ADIVL: case ADIVW: case AIDIVB: case AIDIVL: case AIDIVW: case AIMULB: case AMULB: case AMULL: case AMULW: case ACWD: case ACDQ: if(v->type == D_AX || v->type == D_DX) return 2; goto caseread; case AREP: case AREPN: if(v->type == D_CX) return 2; goto caseread; case AMOVSB: case AMOVSL: if(v->type == D_DI || v->type == D_SI) return 2; goto caseread; case ASTOSB: case ASTOSL: if(v->type == D_AX || v->type == D_DI) return 2; goto caseread; case AFSTSW: if(v->type == D_AX) return 2; goto caseread; case AJMP: /* funny */ if(s != A) { if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyau(&p->to, v)) return 1; return 0; case ARET: /* funny */ if(v->type == REGRET) return 2; if(s != A) return 1; return 3; case ACALL: /* funny */ if(REGARG >= 0 && v->type == (uchar)REGARG) return 2; if(s != A) { if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyau(&p->to, v)) return 4; return 3; } return 0; } /* * direct reference, * could be set/use depending on * semantics */ int copyas(Addr *a, Addr *v) { if(a->type != v->type) return 0; if(regtyp(v)) return 1; if(v->type == D_AUTO || v->type == D_PARAM) if(v->offset == a->offset) return 1; return 0; } /* * either direct or indirect */ int copyau(Addr *a, Addr *v) { if(copyas(a, v)) return 1; if(regtyp(v)) { if(a->type-D_INDIR == v->type) return 1; if(a->index == v->type) return 1; } return 0; } /* * substitute s for v in a * return failure to substitute */ int copysub(Addr *a, Addr *v, Addr *s, int f) { int t; if(copyas(a, v)) { t = s->type; if(t >= D_AX && t <= D_DI) { if(f) a->type = t; } return 0; } if(regtyp(v)) { t = v->type; if(a->type == t+D_INDIR) { if(s->type == D_BP && a->index != D_NONE) return 1; /* can't use BP-base with index */ if(f) a->type = s->type+D_INDIR; // return 0; } if(a->index == t) { if(f) a->index = s->type; return 0; } return 0; } return 0; } ������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8c/reg.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000061644�12412656734�014274� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8c/reg.c // http://code.google.com/p/inferno-os/source/browse/utils/8c/reg.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" static void fixjmp(Reg*); Reg* rega(void) { Reg *r; r = freer; if(r == R) { r = alloc(sizeof(*r)); } else freer = r->link; *r = zreg; return r; } int rcmp(const void *a1, const void *a2) { Rgn *p1, *p2; int c1, c2; p1 = (Rgn*)a1; p2 = (Rgn*)a2; c1 = p2->cost; c2 = p1->cost; if(c1 -= c2) return c1; return p2->varno - p1->varno; } void regopt(Prog *p) { Reg *r, *r1, *r2; Prog *p1; int i, z; int32 initpc, val, npc; uint32 vreg; Bits bit; struct { int32 m; int32 c; Reg* p; } log5[6], *lp; firstr = R; lastr = R; nvar = 0; regbits = RtoB(D_SP) | RtoB(D_AX); for(z=0; zm = val; lp->c = 0; lp->p = R; val /= 5L; lp++; } val = 0; for(; p != P; p = p->link) { switch(p->as) { case ADATA: case AGLOBL: case ANAME: case ASIGNAME: case AFUNCDATA: continue; } r = rega(); if(firstr == R) { firstr = r; lastr = r; } else { lastr->link = r; r->p1 = lastr; lastr->s1 = r; lastr = r; } r->prog = p; r->pc = val; val++; lp = log5; for(i=0; i<5; i++) { lp->c--; if(lp->c <= 0) { lp->c = lp->m; if(lp->p != R) lp->p->log5 = r; lp->p = r; (lp+1)->c = 0; break; } lp++; } r1 = r->p1; if(r1 != R) switch(r1->prog->as) { case ARET: case AJMP: case AIRETL: r->p1 = R; r1->s1 = R; } bit = mkvar(r, &p->from); if(bany(&bit)) switch(p->as) { /* * funny */ case ALEAL: for(z=0; zuse1.b[z] |= bit.b[z]; break; } bit = mkvar(r, &p->to); if(bany(&bit)) switch(p->as) { default: diag(Z, "reg: unknown op: %A", p->as); break; /* * right side read */ case ACMPB: case ACMPL: case ACMPW: case APREFETCHT0: case APREFETCHT1: case APREFETCHT2: case APREFETCHNTA: for(z=0; zuse2.b[z] |= bit.b[z]; break; /* * right side write */ case ANOP: case AMOVL: case AMOVB: case AMOVW: case AMOVBLSX: case AMOVBLZX: case AMOVWLSX: case AMOVWLZX: for(z=0; zset.b[z] |= bit.b[z]; break; /* * right side read+write */ case AADDB: case AADDL: case AADDW: case AANDB: case AANDL: case AANDW: case ASUBB: case ASUBL: case ASUBW: case AORB: case AORL: case AORW: case AXORB: case AXORL: case AXORW: case ASALB: case ASALL: case ASALW: case ASARB: case ASARL: case ASARW: case AROLB: case AROLL: case AROLW: case ARORB: case ARORL: case ARORW: case ASHLB: case ASHLL: case ASHLW: case ASHRB: case ASHRL: case ASHRW: case AIMULL: case AIMULW: case ANEGL: case ANOTL: case AADCL: case ASBBL: for(z=0; zset.b[z] |= bit.b[z]; r->use2.b[z] |= bit.b[z]; } break; /* * funny */ case AFMOVDP: case AFMOVFP: case AFMOVLP: case AFMOVVP: case AFMOVWP: case ACALL: for(z=0; zas) { case AIMULL: case AIMULW: if(p->to.type != D_NONE) break; case AIDIVB: case AIDIVL: case AIDIVW: case AIMULB: case ADIVB: case ADIVL: case ADIVW: case AMULB: case AMULL: case AMULW: case ACWD: case ACDQ: r->regu |= RtoB(D_AX) | RtoB(D_DX); break; case AREP: case AREPN: case ALOOP: case ALOOPEQ: case ALOOPNE: r->regu |= RtoB(D_CX); break; case AMOVSB: case AMOVSL: case AMOVSW: case ACMPSB: case ACMPSL: case ACMPSW: r->regu |= RtoB(D_SI) | RtoB(D_DI); break; case ASTOSB: case ASTOSL: case ASTOSW: case ASCASB: case ASCASL: case ASCASW: r->regu |= RtoB(D_AX) | RtoB(D_DI); break; case AINSB: case AINSL: case AINSW: case AOUTSB: case AOUTSL: case AOUTSW: r->regu |= RtoB(D_DI) | RtoB(D_DX); break; case AFSTSW: case ASAHF: r->regu |= RtoB(D_AX); break; } } if(firstr == R) return; initpc = pc - val; npc = val; /* * pass 2 * turn branch references to pointers * build back pointers */ for(r = firstr; r != R; r = r->link) { p = r->prog; if(p->to.type == D_BRANCH) { val = p->to.offset - initpc; r1 = firstr; while(r1 != R) { r2 = r1->log5; if(r2 != R && val >= r2->pc) { r1 = r2; continue; } if(r1->pc == val) break; r1 = r1->link; } if(r1 == R) { nearln = p->lineno; diag(Z, "ref not found\n%P", p); continue; } if(r1 == r) { nearln = p->lineno; diag(Z, "ref to self\n%P", p); continue; } r->s2 = r1; r->p2link = r1->p2; r1->p2 = r; } } if(debug['R']) { p = firstr->prog; print("\n%L %D\n", p->lineno, &p->from); } /* * pass 2.1 * fix jumps */ fixjmp(firstr); /* * pass 2.5 * find looping structure */ for(r = firstr; r != R; r = r->link) r->active = 0; change = 0; loopit(firstr, npc); if(debug['R'] && debug['v']) { print("\nlooping structure:\n"); for(r = firstr; r != R; r = r->link) { print("%d:%P", r->loop, r->prog); for(z=0; zuse1.b[z] | r->use2.b[z] | r->set.b[z]; if(bany(&bit)) { print("\t"); if(bany(&r->use1)) print(" u1=%B", r->use1); if(bany(&r->use2)) print(" u2=%B", r->use2); if(bany(&r->set)) print(" st=%B", r->set); } print("\n"); } } /* * pass 3 * iterate propagating usage * back until flow graph is complete */ loop1: change = 0; for(r = firstr; r != R; r = r->link) r->active = 0; for(r = firstr; r != R; r = r->link) if(r->prog->as == ARET) prop(r, zbits, zbits); loop11: /* pick up unreachable code */ i = 0; for(r = firstr; r != R; r = r1) { r1 = r->link; if(r1 && r1->active && !r->active) { prop(r, zbits, zbits); i = 1; } } if(i) goto loop11; if(change) goto loop1; /* * pass 4 * iterate propagating register/variable synchrony * forward until graph is complete */ loop2: change = 0; for(r = firstr; r != R; r = r->link) r->active = 0; synch(firstr, zbits); if(change) goto loop2; /* * pass 5 * isolate regions * calculate costs (paint1) */ r = firstr; if(r) { for(z=0; zrefahead.b[z] | r->calahead.b[z]) & ~(externs.b[z] | params.b[z] | addrs.b[z] | consts.b[z]); if(bany(&bit)) { nearln = r->prog->lineno; warn(Z, "used and not set: %B", bit); if(debug['R'] && !debug['w']) print("used and not set: %B\n", bit); } } if(debug['R'] && debug['v']) print("\nprop structure:\n"); for(r = firstr; r != R; r = r->link) r->act = zbits; rgp = region; nregion = 0; for(r = firstr; r != R; r = r->link) { if(debug['R'] && debug['v']) { print("%P\t", r->prog); if(bany(&r->set)) print("s:%B ", r->set); if(bany(&r->refahead)) print("ra:%B ", r->refahead); if(bany(&r->calahead)) print("ca:%B ", r->calahead); print("\n"); } for(z=0; zset.b[z] & ~(r->refahead.b[z] | r->calahead.b[z] | addrs.b[z]); if(bany(&bit)) { nearln = r->prog->lineno; warn(Z, "set and not used: %B", bit); if(debug['R']) print("set and not used: %B\n", bit); excise(r); } for(z=0; zact.b[z] | addrs.b[z]); while(bany(&bit)) { i = bnum(bit); rgp->enter = r; rgp->varno = i; change = 0; if(debug['R'] && debug['v']) print("\n"); paint1(r, i); bit.b[i/32] &= ~(1L<<(i%32)); if(change <= 0) { if(debug['R']) print("%L$%d: %B\n", r->prog->lineno, change, blsh(i)); continue; } rgp->cost = change; nregion++; if(nregion >= NRGN) { warn(Z, "too many regions"); goto brk; } rgp++; } } brk: qsort(region, nregion, sizeof(region[0]), rcmp); /* * pass 6 * determine used registers (paint2) * replace code (paint3) */ rgp = region; for(i=0; ivarno); vreg = paint2(rgp->enter, rgp->varno); vreg = allreg(vreg, rgp); if(debug['R']) { print("%L$%d %R: %B\n", rgp->enter->prog->lineno, rgp->cost, rgp->regno, bit); } if(rgp->regno != 0) paint3(rgp->enter, rgp->varno, vreg, rgp->regno); rgp++; } /* * pass 7 * peep-hole on basic block */ if(!debug['R'] || debug['P']) peep(); if(debug['R'] && debug['v']) { print("after pass 7 (peep)\n"); for(r=firstr; r; r=r->link) print("%04d %P\n", (int)r->pc, r->prog); print("\n"); } /* * pass 8 * recalculate pc */ val = initpc; for(r = firstr; r != R; r = r1) { r->pc = val; p = r->prog; p1 = P; r1 = r->link; if(r1 != R) p1 = r1->prog; for(; p != p1; p = p->link) { switch(p->as) { default: val++; break; case ANOP: case ADATA: case AGLOBL: case ANAME: case ASIGNAME: case AFUNCDATA: break; } } } pc = val; /* * fix up branches */ if(debug['R']) if(bany(&addrs)) print("addrs: %B\n", addrs); r1 = 0; /* set */ for(r = firstr; r != R; r = r->link) { p = r->prog; if(p->to.type == D_BRANCH) { p->to.offset = r->s2->pc; p->to.u.branch = r->s2->prog; } r1 = r; } /* * last pass * eliminate nops * free aux structures */ for(p = firstr->prog; p != P; p = p->link){ while(p->link && p->link->as == ANOP) p->link = p->link->link; } if(debug['R'] && debug['v']) { print("after pass 8 (fixup pc)\n"); for(p1=firstr->prog; p1!=P; p1=p1->link) print("%P\n", p1); print("\n"); } if(r1 != R) { r1->link = freer; freer = firstr; } } /* * add mov b,rn * just after r */ void addmove(Reg *r, int bn, int rn, int f) { Prog *p, *p1; Addr *a; Var *v; p1 = alloc(sizeof(*p1)); *p1 = zprog; p = r->prog; p1->link = p->link; p->link = p1; p1->lineno = p->lineno; v = var + bn; a = &p1->to; a->sym = v->sym; a->offset = v->offset; a->etype = v->etype; a->type = v->name; p1->as = AMOVL; if(v->etype == TCHAR || v->etype == TUCHAR) p1->as = AMOVB; if(v->etype == TSHORT || v->etype == TUSHORT) p1->as = AMOVW; p1->from.type = rn; if(!f) { p1->from = *a; *a = zprog.from; a->type = rn; if(v->etype == TUCHAR) p1->as = AMOVB; if(v->etype == TUSHORT) p1->as = AMOVW; } if(debug['R']) print("%P\t.a%P\n", p, p1); } uint32 doregbits(int r) { uint32 b; b = 0; if(r >= D_INDIR) r -= D_INDIR; if(r >= D_AX && r <= D_DI) b |= RtoB(r); else if(r >= D_AL && r <= D_BL) b |= RtoB(r-D_AL+D_AX); else if(r >= D_AH && r <= D_BH) b |= RtoB(r-D_AH+D_AX); return b; } Bits mkvar(Reg *r, Addr *a) { Var *v; int i, t, n, et, z; int32 o; Bits bit; LSym *s; /* * mark registers used */ t = a->type; r->regu |= doregbits(t); r->regu |= doregbits(a->index); switch(t) { default: goto none; case D_ADDR: a->type = a->index; bit = mkvar(r, a); for(z=0; ztype = t; goto none; case D_EXTERN: case D_STATIC: case D_PARAM: case D_AUTO: n = t; break; } s = a->sym; if(s == nil) goto none; if(s->name[0] == '.') goto none; et = a->etype; o = a->offset; v = var; for(i=0; isym) if(n == v->name) if(o == v->offset) goto out; v++; } if(nvar >= NVAR) { if(debug['w'] > 1 && s) warn(Z, "variable not optimized: %s", s->name); goto none; } i = nvar; nvar++; v = &var[i]; v->sym = s; v->offset = o; v->name = n; v->etype = et; if(debug['R']) print("bit=%2d et=%2d %D\n", i, et, a); out: bit = blsh(i); if(n == D_EXTERN || n == D_STATIC) for(z=0; zetype != et || !typechlpfd[et]) /* funny punning */ for(z=0; zp1) { for(z=0; zrefahead.b[z]; if(ref.b[z] != r1->refahead.b[z]) { r1->refahead.b[z] = ref.b[z]; change++; } cal.b[z] |= r1->calahead.b[z]; if(cal.b[z] != r1->calahead.b[z]) { r1->calahead.b[z] = cal.b[z]; change++; } } switch(r1->prog->as) { case ACALL: for(z=0; zset.b[z]) | r1->use1.b[z] | r1->use2.b[z]; cal.b[z] &= ~(r1->set.b[z] | r1->use1.b[z] | r1->use2.b[z]); r1->refbehind.b[z] = ref.b[z]; r1->calbehind.b[z] = cal.b[z]; } if(r1->active) break; r1->active = 1; } for(; r != r1; r = r->p1) for(r2 = r->p2; r2 != R; r2 = r2->p2link) prop(r2, r->refbehind, r->calbehind); } /* * find looping structure * * 1) find reverse postordering * 2) find approximate dominators, * the actual dominators if the flow graph is reducible * otherwise, dominators plus some other non-dominators. * See Matthew S. Hecht and Jeffrey D. Ullman, * "Analysis of a Simple Algorithm for Global Data Flow Problems", * Conf. Record of ACM Symp. on Principles of Prog. Langs, Boston, Massachusetts, * Oct. 1-3, 1973, pp. 207-217. * 3) find all nodes with a predecessor dominated by the current node. * such a node is a loop head. * recursively, all preds with a greater rpo number are in the loop */ int32 postorder(Reg *r, Reg **rpo2r, int32 n) { Reg *r1; r->rpo = 1; r1 = r->s1; if(r1 && !r1->rpo) n = postorder(r1, rpo2r, n); r1 = r->s2; if(r1 && !r1->rpo) n = postorder(r1, rpo2r, n); rpo2r[n] = r; n++; return n; } int32 rpolca(int32 *idom, int32 rpo1, int32 rpo2) { int32 t; if(rpo1 == -1) return rpo2; while(rpo1 != rpo2){ if(rpo1 > rpo2){ t = rpo2; rpo2 = rpo1; rpo1 = t; } while(rpo1 < rpo2){ t = idom[rpo2]; if(t >= rpo2) fatal(Z, "bad idom"); rpo2 = t; } } return rpo1; } int doms(int32 *idom, int32 r, int32 s) { while(s > r) s = idom[s]; return s == r; } int loophead(int32 *idom, Reg *r) { int32 src; src = r->rpo; if(r->p1 != R && doms(idom, src, r->p1->rpo)) return 1; for(r = r->p2; r != R; r = r->p2link) if(doms(idom, src, r->rpo)) return 1; return 0; } void loopmark(Reg **rpo2r, int32 head, Reg *r) { if(r->rpo < head || r->active == head) return; r->active = head; r->loop += LOOP; if(r->p1 != R) loopmark(rpo2r, head, r->p1); for(r = r->p2; r != R; r = r->p2link) loopmark(rpo2r, head, r); } void loopit(Reg *r, int32 nr) { Reg *r1; int32 i, d, me; if(nr > maxnr) { rpo2r = alloc(nr * sizeof(Reg*)); idom = alloc(nr * sizeof(int32)); maxnr = nr; } d = postorder(r, rpo2r, 0); if(d > nr) fatal(Z, "too many reg nodes"); nr = d; for(i = 0; i < nr / 2; i++){ r1 = rpo2r[i]; rpo2r[i] = rpo2r[nr - 1 - i]; rpo2r[nr - 1 - i] = r1; } for(i = 0; i < nr; i++) rpo2r[i]->rpo = i; idom[0] = 0; for(i = 0; i < nr; i++){ r1 = rpo2r[i]; me = r1->rpo; d = -1; if(r1->p1 != R && r1->p1->rpo < me) d = r1->p1->rpo; for(r1 = r1->p2; r1 != nil; r1 = r1->p2link) if(r1->rpo < me) d = rpolca(idom, d, r1->rpo); idom[i] = d; } for(i = 0; i < nr; i++){ r1 = rpo2r[i]; r1->loop++; if(r1->p2 != R && loophead(idom, r1)) loopmark(rpo2r, i, r1); } } void synch(Reg *r, Bits dif) { Reg *r1; int z; for(r1 = r; r1 != R; r1 = r1->s1) { for(z=0; zrefbehind.b[z] & r1->refahead.b[z])) | r1->set.b[z] | r1->regdiff.b[z]; if(dif.b[z] != r1->regdiff.b[z]) { r1->regdiff.b[z] = dif.b[z]; change++; } } if(r1->active) break; r1->active = 1; for(z=0; zcalbehind.b[z] & r1->calahead.b[z]); if(r1->s2 != R) synch(r1->s2, dif); } } uint32 allreg(uint32 b, Rgn *r) { Var *v; int i; v = var + r->varno; r->regno = 0; switch(v->etype) { default: diag(Z, "unknown etype %d/%d", bitno(b), v->etype); break; case TCHAR: case TUCHAR: case TSHORT: case TUSHORT: case TINT: case TUINT: case TLONG: case TULONG: case TIND: case TARRAY: i = BtoR(~b); if(i && r->cost > 0) { r->regno = i; return RtoB(i); } break; case TDOUBLE: case TFLOAT: break; } return 0; } void paint1(Reg *r, int bn) { Reg *r1; Prog *p; int z; uint32 bb; z = bn/32; bb = 1L<<(bn%32); if(r->act.b[z] & bb) return; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = r->p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(r1->act.b[z] & bb) break; r = r1; } if(LOAD(r) & ~(r->set.b[z]&~(r->use1.b[z]|r->use2.b[z])) & bb) { change -= CLOAD * r->loop; if(debug['R'] && debug['v']) print("%d%P\td %B $%d\n", r->loop, r->prog, blsh(bn), change); } for(;;) { r->act.b[z] |= bb; p = r->prog; if(r->use1.b[z] & bb) { change += CREF * r->loop; if(p->as == AFMOVL) if(BtoR(bb) != D_F0) change = -CINF; if(debug['R'] && debug['v']) print("%d%P\tu1 %B $%d\n", r->loop, p, blsh(bn), change); } if((r->use2.b[z]|r->set.b[z]) & bb) { change += CREF * r->loop; if(p->as == AFMOVL) if(BtoR(bb) != D_F0) change = -CINF; if(debug['R'] && debug['v']) print("%d%P\tu2 %B $%d\n", r->loop, p, blsh(bn), change); } if(STORE(r) & r->regdiff.b[z] & bb) { change -= CLOAD * r->loop; if(p->as == AFMOVL) if(BtoR(bb) != D_F0) change = -CINF; if(debug['R'] && debug['v']) print("%d%P\tst %B $%d\n", r->loop, p, blsh(bn), change); } if(r->refbehind.b[z] & bb) for(r1 = r->p2; r1 != R; r1 = r1->p2link) if(r1->refahead.b[z] & bb) paint1(r1, bn); if(!(r->refahead.b[z] & bb)) break; r1 = r->s2; if(r1 != R) if(r1->refbehind.b[z] & bb) paint1(r1, bn); r = r->s1; if(r == R) break; if(r->act.b[z] & bb) break; if(!(r->refbehind.b[z] & bb)) break; } } uint32 regset(Reg *r, uint32 bb) { uint32 b, set; Addr v; int c; set = 0; v = zprog.from; while(b = bb & ~(bb-1)) { v.type = BtoR(b); c = copyu(r->prog, &v, A); if(c == 3) set |= b; bb &= ~b; } return set; } uint32 reguse(Reg *r, uint32 bb) { uint32 b, set; Addr v; int c; set = 0; v = zprog.from; while(b = bb & ~(bb-1)) { v.type = BtoR(b); c = copyu(r->prog, &v, A); if(c == 1 || c == 2 || c == 4) set |= b; bb &= ~b; } return set; } uint32 paint2(Reg *r, int bn) { Reg *r1; int z; uint32 bb, vreg, x; z = bn/32; bb = 1L << (bn%32); vreg = regbits; if(!(r->act.b[z] & bb)) return vreg; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = r->p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(!(r1->act.b[z] & bb)) break; r = r1; } for(;;) { r->act.b[z] &= ~bb; vreg |= r->regu; if(r->refbehind.b[z] & bb) for(r1 = r->p2; r1 != R; r1 = r1->p2link) if(r1->refahead.b[z] & bb) vreg |= paint2(r1, bn); if(!(r->refahead.b[z] & bb)) break; r1 = r->s2; if(r1 != R) if(r1->refbehind.b[z] & bb) vreg |= paint2(r1, bn); r = r->s1; if(r == R) break; if(!(r->act.b[z] & bb)) break; if(!(r->refbehind.b[z] & bb)) break; } bb = vreg; for(; r; r=r->s1) { x = r->regu & ~bb; if(x) { vreg |= reguse(r, x); bb |= regset(r, x); } } return vreg; } void paint3(Reg *r, int bn, int32 rb, int rn) { Reg *r1; Prog *p; int z; uint32 bb; z = bn/32; bb = 1L << (bn%32); if(r->act.b[z] & bb) return; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = r->p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(r1->act.b[z] & bb) break; r = r1; } if(LOAD(r) & ~(r->set.b[z] & ~(r->use1.b[z]|r->use2.b[z])) & bb) addmove(r, bn, rn, 0); for(;;) { r->act.b[z] |= bb; p = r->prog; if(r->use1.b[z] & bb) { if(debug['R']) print("%P", p); addreg(&p->from, rn); if(debug['R']) print("\t.c%P\n", p); } if((r->use2.b[z]|r->set.b[z]) & bb) { if(debug['R']) print("%P", p); addreg(&p->to, rn); if(debug['R']) print("\t.c%P\n", p); } if(STORE(r) & r->regdiff.b[z] & bb) addmove(r, bn, rn, 1); r->regu |= rb; if(r->refbehind.b[z] & bb) for(r1 = r->p2; r1 != R; r1 = r1->p2link) if(r1->refahead.b[z] & bb) paint3(r1, bn, rb, rn); if(!(r->refahead.b[z] & bb)) break; r1 = r->s2; if(r1 != R) if(r1->refbehind.b[z] & bb) paint3(r1, bn, rb, rn); r = r->s1; if(r == R) break; if(r->act.b[z] & bb) break; if(!(r->refbehind.b[z] & bb)) break; } } void addreg(Addr *a, int rn) { a->sym = 0; a->offset = 0; a->type = rn; } int32 RtoB(int r) { if(r < D_AX || r > D_DI) return 0; return 1L << (r-D_AX); } int BtoR(int32 b) { b &= 0xffL; if(b == 0) return 0; return bitno(b) + D_AX; } /* what instruction does a JMP to p eventually land on? */ static Reg* chasejmp(Reg *r, int *jmploop) { int n; n = 0; for(; r; r=r->s2) { if(r->prog->as != AJMP || r->prog->to.type != D_BRANCH) break; if(++n > 10) { *jmploop = 1; break; } } return r; } /* mark all code reachable from firstp as alive */ static void mark(Reg *firstr) { Reg *r; Prog *p; for(r=firstr; r; r=r->link) { if(r->active) break; r->active = 1; p = r->prog; if(p->as != ACALL && p->to.type == D_BRANCH) mark(r->s2); if(p->as == AJMP || p->as == ARET || p->as == AUNDEF) break; } } /* * the code generator depends on being able to write out JMP * instructions that it can jump to now but fill in later. * the linker will resolve them nicely, but they make the code * longer and more difficult to follow during debugging. * remove them. */ static void fixjmp(Reg *firstr) { int jmploop; Reg *r; Prog *p; if(debug['R'] && debug['v']) print("\nfixjmp\n"); // pass 1: resolve jump to AJMP, mark all code as dead. jmploop = 0; for(r=firstr; r; r=r->link) { p = r->prog; if(debug['R'] && debug['v']) print("%04d %P\n", (int)r->pc, p); if(p->as != ACALL && p->to.type == D_BRANCH && r->s2 && r->s2->prog->as == AJMP) { r->s2 = chasejmp(r->s2, &jmploop); p->to.offset = r->s2->pc; p->to.u.branch = r->s2->prog; if(debug['R'] && debug['v']) print("->%P\n", p); } r->active = 0; } if(debug['R'] && debug['v']) print("\n"); // pass 2: mark all reachable code alive mark(firstr); // pass 3: delete dead code (mostly JMPs). for(r=firstr; r; r=r->link) { if(!r->active) { p = r->prog; if(p->link == P && p->as == ARET && r->p1 && r->p1->prog->as != ARET) { // This is the final ARET, and the code so far doesn't have one. // Let it stay. } else { if(debug['R'] && debug['v']) print("del %04d %P\n", (int)r->pc, p); p->as = ANOP; } } } // pass 4: elide JMP to next instruction. // only safe if there are no jumps to JMPs anymore. if(!jmploop) { for(r=firstr; r; r=r->link) { p = r->prog; if(p->as == AJMP && p->to.type == D_BRANCH && r->s2 == r->link) { if(debug['R'] && debug['v']) print("del %04d %P\n", (int)r->pc, p); p->as = ANOP; } } } // fix back pointers. for(r=firstr; r; r=r->link) { r->p2 = R; r->p2link = R; } for(r=firstr; r; r=r->link) { if(r->s2) { r->p2link = r->s2->p2; r->s2->p2 = r; } } if(debug['R'] && debug['v']) { print("\n"); for(r=firstr; r; r=r->link) print("%04d %P\n", (int)r->pc, r->prog); print("\n"); } } ��������������������������������������������������������������������������������������������go/src/cmd/8c/sgen.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000020427�12412656737�014450� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8c/sgen.c // http://code.google.com/p/inferno-os/source/browse/utils/8c/sgen.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" Prog* gtext(Sym *s, int32 stkoff) { int32 a; a = argsize(); if((textflag & NOSPLIT) != 0 && stkoff >= 128) yyerror("stack frame too large for NOSPLIT function"); gpseudo(ATEXT, s, nodconst(stkoff)); p->to.type = D_CONST2; p->to.offset2 = a; return p; } void noretval(int n) { if(n & 1) { gins(ANOP, Z, Z); p->to.type = REGRET; } if(n & 2) { gins(ANOP, Z, Z); p->to.type = FREGRET; } } /* welcome to commute */ static void commute(Node *n) { Node *l, *r; l = n->left; r = n->right; if(r->complex > l->complex) { n->left = r; n->right = l; } } void indexshift(Node *n) { int g; if(!typechlp[n->type->etype]) return; simplifyshift(n); if(n->op == OASHL && n->right->op == OCONST){ g = vconst(n->right); if(g >= 0 && g < 4) n->addable = 7; } } /* * calculate addressability as follows * NAME ==> 10/11 name+value(SB/SP) * REGISTER ==> 12 register * CONST ==> 20 $value * *(20) ==> 21 value * &(10) ==> 13 $name+value(SB) * &(11) ==> 1 $name+value(SP) * (13) + (20) ==> 13 fold constants * (1) + (20) ==> 1 fold constants * *(13) ==> 10 back to name * *(1) ==> 11 back to name * * (20) * (X) ==> 7 multiplier in indexing * (X,7) + (13,1) ==> 8 adder in indexing (addresses) * (8) ==> &9(OINDEX) index, almost addressable * 100 extern register * * calculate complexity (number of registers) */ void xcom(Node *n) { Node *l, *r; int g; if(n == Z) return; l = n->left; r = n->right; n->complex = 0; n->addable = 0; switch(n->op) { case OCONST: n->addable = 20; break; case ONAME: n->addable = 10; if(n->class == CPARAM || n->class == CAUTO) n->addable = 11; break; case OEXREG: n->addable = 0; break; case OREGISTER: n->addable = 12; break; case OINDREG: n->addable = 12; break; case OADDR: xcom(l); if(l->addable == 10) n->addable = 13; else if(l->addable == 11) n->addable = 1; break; case OADD: xcom(l); xcom(r); if(n->type->etype != TIND) break; switch(r->addable) { case 20: switch(l->addable) { case 1: case 13: commadd: l->type = n->type; *n = *l; l = new(0, Z, Z); *l = *(n->left); l->xoffset += r->vconst; n->left = l; r = n->right; goto brk; } break; case 1: case 13: case 10: case 11: /* l is the base, r is the index */ if(l->addable != 20) n->addable = 8; break; } switch(l->addable) { case 20: switch(r->addable) { case 13: case 1: r = n->left; l = n->right; n->left = l; n->right = r; goto commadd; } break; case 13: case 1: case 10: case 11: /* r is the base, l is the index */ if(r->addable != 20) n->addable = 8; break; } if(n->addable == 8 && !side(n)) { indx(n); l = new1(OINDEX, idx.basetree, idx.regtree); l->scale = idx.scale; l->addable = 9; l->complex = l->right->complex; l->type = l->left->type; n->op = OADDR; n->left = l; n->right = Z; n->addable = 8; break; } break; case OINDEX: xcom(l); xcom(r); n->addable = 9; break; case OIND: xcom(l); if(l->op == OADDR) { l = l->left; l->type = n->type; *n = *l; return; } switch(l->addable) { case 20: n->addable = 21; break; case 1: n->addable = 11; break; case 13: n->addable = 10; break; } break; case OASHL: xcom(l); xcom(r); indexshift(n); break; case OMUL: case OLMUL: xcom(l); xcom(r); g = vlog(l); if(g >= 0) { n->left = r; n->right = l; l = r; r = n->right; } g = vlog(r); if(g >= 0) { n->op = OASHL; r->vconst = g; r->type = types[TINT]; indexshift(n); break; } commute(n); break; case OASLDIV: xcom(l); xcom(r); g = vlog(r); if(g >= 0) { n->op = OASLSHR; r->vconst = g; r->type = types[TINT]; } break; case OLDIV: xcom(l); xcom(r); g = vlog(r); if(g >= 0) { n->op = OLSHR; r->vconst = g; r->type = types[TINT]; indexshift(n); break; } break; case OASLMOD: xcom(l); xcom(r); g = vlog(r); if(g >= 0) { n->op = OASAND; r->vconst--; } break; case OLMOD: xcom(l); xcom(r); g = vlog(r); if(g >= 0) { n->op = OAND; r->vconst--; } break; case OASMUL: case OASLMUL: xcom(l); xcom(r); g = vlog(r); if(g >= 0) { n->op = OASASHL; r->vconst = g; } break; case OLSHR: case OASHR: xcom(l); xcom(r); indexshift(n); break; default: if(l != Z) xcom(l); if(r != Z) xcom(r); break; } brk: if(n->addable >= 10) return; if(l != Z) n->complex = l->complex; if(r != Z) { if(r->complex == n->complex) n->complex = r->complex+1; else if(r->complex > n->complex) n->complex = r->complex; } if(n->complex == 0) n->complex++; if(com64(n)) return; switch(n->op) { case OFUNC: n->complex = FNX; break; case OLMOD: case OMOD: case OLMUL: case OLDIV: case OMUL: case ODIV: case OASLMUL: case OASLDIV: case OASLMOD: case OASMUL: case OASDIV: case OASMOD: if(r->complex >= l->complex) { n->complex = l->complex + 3; if(r->complex > n->complex) n->complex = r->complex; } else { n->complex = r->complex + 3; if(l->complex > n->complex) n->complex = l->complex; } break; case OLSHR: case OASHL: case OASHR: case OASLSHR: case OASASHL: case OASASHR: if(r->complex >= l->complex) { n->complex = l->complex + 2; if(r->complex > n->complex) n->complex = r->complex; } else { n->complex = r->complex + 2; if(l->complex > n->complex) n->complex = l->complex; } break; case OADD: case OXOR: case OAND: case OOR: /* * immediate operators, make const on right */ if(l->op == OCONST) { n->left = r; n->right = l; } break; case OEQ: case ONE: case OLE: case OLT: case OGE: case OGT: case OHI: case OHS: case OLO: case OLS: /* * compare operators, make const on left */ if(r->op == OCONST) { n->left = r; n->right = l; n->op = invrel[relindex(n->op)]; } break; } } void indx(Node *n) { Node *l, *r; if(debug['x']) prtree(n, "indx"); l = n->left; r = n->right; if(l->addable == 1 || l->addable == 13 || r->complex > l->complex) { n->right = l; n->left = r; l = r; r = n->right; } if(l->addable != 7) { idx.regtree = l; idx.scale = 1; } else if(l->right->addable == 20) { idx.regtree = l->left; idx.scale = 1 << l->right->vconst; } else if(l->left->addable == 20) { idx.regtree = l->right; idx.scale = 1 << l->left->vconst; } else diag(n, "bad index"); idx.basetree = r; if(debug['x']) { print("scale = %d\n", idx.scale); prtree(idx.regtree, "index"); prtree(idx.basetree, "base"); } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8c/swt.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000016117�12412656737�014332� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8c/swt.c // http://code.google.com/p/inferno-os/source/browse/utils/8c/swt.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" void swit1(C1 *q, int nc, int32 def, Node *n) { Node nreg; if(typev[n->type->etype]) { regsalloc(&nreg, n); nreg.type = types[TVLONG]; cgen(n, &nreg); swit2(q, nc, def, &nreg); return; } regalloc(&nreg, n, Z); nreg.type = types[TLONG]; cgen(n, &nreg); swit2(q, nc, def, &nreg); regfree(&nreg); } void swit2(C1 *q, int nc, int32 def, Node *n) { C1 *r; int i; Prog *sp; if(nc < 5) { for(i=0; ival); gopcode(OEQ, n->type, n, nodconst(q->val)); patch(p, q->label); q++; } gbranch(OGOTO); patch(p, def); return; } i = nc / 2; r = q+i; if(debug['W']) print("case > %.8ux\n", r->val); gopcode(OGT, n->type, n, nodconst(r->val)); sp = p; gbranch(OGOTO); p->as = AJEQ; patch(p, r->label); swit2(q, i, def, n); if(debug['W']) print("case < %.8ux\n", r->val); patch(sp, pc); swit2(r+1, nc-i-1, def, n); } void bitload(Node *b, Node *n1, Node *n2, Node *n3, Node *nn) { int sh; int32 v; Node *l; /* * n1 gets adjusted/masked value * n2 gets address of cell * n3 gets contents of cell */ l = b->left; if(n2 != Z) { regalloc(n1, l, nn); reglcgen(n2, l, Z); regalloc(n3, l, Z); gmove(n2, n3); gmove(n3, n1); } else { regalloc(n1, l, nn); cgen(l, n1); } if(b->type->shift == 0 && typeu[b->type->etype]) { v = ~0 + (1L << b->type->nbits); gopcode(OAND, types[TLONG], nodconst(v), n1); } else { sh = 32 - b->type->shift - b->type->nbits; if(sh > 0) gopcode(OASHL, types[TLONG], nodconst(sh), n1); sh += b->type->shift; if(sh > 0) if(typeu[b->type->etype]) gopcode(OLSHR, types[TLONG], nodconst(sh), n1); else gopcode(OASHR, types[TLONG], nodconst(sh), n1); } } void bitstore(Node *b, Node *n1, Node *n2, Node *n3, Node *nn) { int32 v; Node nod; int sh; regalloc(&nod, b->left, Z); v = ~0 + (1L << b->type->nbits); gopcode(OAND, types[TLONG], nodconst(v), n1); gmove(n1, &nod); if(nn != Z) gmove(n1, nn); sh = b->type->shift; if(sh > 0) gopcode(OASHL, types[TLONG], nodconst(sh), &nod); v <<= sh; gopcode(OAND, types[TLONG], nodconst(~v), n3); gopcode(OOR, types[TLONG], n3, &nod); gmove(&nod, n2); regfree(&nod); regfree(n1); regfree(n2); regfree(n3); } int32 outstring(char *s, int32 n) { int32 r; if(suppress) return nstring; r = nstring; while(n) { string[mnstring] = *s++; mnstring++; nstring++; if(mnstring >= NSNAME) { gpseudo(ADATA, symstring, nodconst(0L)); p->from.offset += nstring - NSNAME; p->from.scale = NSNAME; p->to.type = D_SCONST; memmove(p->to.u.sval, string, NSNAME); mnstring = 0; } n--; } return r; } void sextern(Sym *s, Node *a, int32 o, int32 w) { int32 e, lw; for(e=0; efrom.offset += o+e; p->from.scale = lw; p->to.type = D_SCONST; memmove(p->to.u.sval, a->cstring+e, lw); } } void gextern(Sym *s, Node *a, int32 o, int32 w) { if(a->op == OCONST && typev[a->type->etype]) { gpseudo(ADATA, s, lo64(a)); p->from.offset += o; p->from.scale = 4; gpseudo(ADATA, s, hi64(a)); p->from.offset += o + 4; p->from.scale = 4; return; } gpseudo(ADATA, s, a); p->from.offset += o; p->from.scale = w; switch(p->to.type) { default: p->to.index = p->to.type; p->to.type = D_ADDR; case D_CONST: case D_FCONST: case D_ADDR: break; } } void outcode(void) { int f; Biobuf b; f = open(outfile, OWRITE); if(f < 0) { diag(Z, "cannot open %s", outfile); return; } Binit(&b, f, OWRITE); Bprint(&b, "go object %s %s %s\n", getgoos(), getgoarch(), getgoversion()); if(pragcgobuf.to > pragcgobuf.start) { Bprint(&b, "\n"); Bprint(&b, "$$ // exports\n\n"); Bprint(&b, "$$ // local types\n\n"); Bprint(&b, "$$ // cgo\n"); Bprint(&b, "%s", fmtstrflush(&pragcgobuf)); Bprint(&b, "\n$$\n\n"); } Bprint(&b, "!\n"); writeobj(ctxt, &b); Bterm(&b); close(f); lastp = P; } int32 align(int32 i, Type *t, int op, int32 *maxalign) { int32 o; Type *v; int w; o = i; w = 1; switch(op) { default: diag(Z, "unknown align opcode %d", op); break; case Asu2: /* padding at end of a struct */ w = *maxalign; if(w < 1) w = 1; if(packflg) w = packflg; break; case Ael1: /* initial align of struct element */ for(v=t; v->etype==TARRAY; v=v->link) ; if(v->etype == TSTRUCT || v->etype == TUNION) w = v->align; else { w = ewidth[v->etype]; if(w == 8) w = 4; } if(w < 1 || w > SZ_LONG) fatal(Z, "align"); if(packflg) w = packflg; break; case Ael2: /* width of a struct element */ o += t->width; break; case Aarg0: /* initial passbyptr argument in arg list */ if(typesuv[t->etype]) { o = align(o, types[TIND], Aarg1, nil); o = align(o, types[TIND], Aarg2, nil); } break; case Aarg1: /* initial align of parameter */ w = ewidth[t->etype]; if(w <= 0 || w >= SZ_LONG) { w = SZ_LONG; break; } w = 1; /* little endian no adjustment */ break; case Aarg2: /* width of a parameter */ o += t->width; w = t->width; if(w > SZ_LONG) w = SZ_LONG; break; case Aaut3: /* total align of automatic */ o = align(o, t, Ael1, nil); o = align(o, t, Ael2, nil); break; } o = xround(o, w); if(maxalign && *maxalign < w) *maxalign = w; if(debug['A']) print("align %s %d %T = %d\n", bnames[op], i, t, o); return o; } int32 maxround(int32 max, int32 v) { v = xround(v, SZ_LONG); if(v > max) return v; return max; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8c/txt.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000064351�12412656737�014337� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8c/txt.c // http://code.google.com/p/inferno-os/source/browse/utils/8c/txt.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" int thechar = '8'; char *thestring = "386"; LinkArch *thelinkarch = &link386; void linkarchinit(void) { } void ginit(void) { int i; Type *t; exregoffset = 0; exfregoffset = 0; listinit(); nstring = 0; mnstring = 0; nrathole = 0; pc = 0; breakpc = -1; continpc = -1; cases = C; lastp = P; tfield = types[TLONG]; zprog.link = P; zprog.as = AGOK; zprog.from.type = D_NONE; zprog.from.index = D_NONE; zprog.from.scale = 0; zprog.to = zprog.from; regnode.op = OREGISTER; regnode.class = CEXREG; regnode.reg = REGTMP; regnode.complex = 0; regnode.addable = 11; regnode.type = types[TLONG]; fregnode0 = regnode; fregnode0.reg = D_F0; fregnode0.type = types[TDOUBLE]; fregnode1 = fregnode0; fregnode1.reg = D_F0+1; constnode.op = OCONST; constnode.class = CXXX; constnode.complex = 0; constnode.addable = 20; constnode.type = types[TLONG]; fconstnode.op = OCONST; fconstnode.class = CXXX; fconstnode.complex = 0; fconstnode.addable = 20; fconstnode.type = types[TDOUBLE]; nodsafe = new(ONAME, Z, Z); nodsafe->sym = slookup(".safe"); nodsafe->type = types[TINT]; nodsafe->etype = types[TINT]->etype; nodsafe->class = CAUTO; complex(nodsafe); t = typ(TARRAY, types[TCHAR]); symrathole = slookup(".rathole"); symrathole->class = CGLOBL; symrathole->type = t; nodrat = new(ONAME, Z, Z); nodrat->sym = symrathole; nodrat->type = types[TIND]; nodrat->etype = TVOID; nodrat->class = CGLOBL; complex(nodrat); nodrat->type = t; nodret = new(ONAME, Z, Z); nodret->sym = slookup(".ret"); nodret->type = types[TIND]; nodret->etype = TIND; nodret->class = CPARAM; nodret = new(OIND, nodret, Z); complex(nodret); com64init(); for(i=0; i= D_AX && i <= D_DI && i != D_SP) reg[i] = 0; } } void gclean(void) { int i; Sym *s; reg[D_SP]--; for(i=D_AX; i<=D_DI; i++) if(reg[i]) diag(Z, "reg %R left allocated", i); while(mnstring) outstring("", 1L); symstring->type->width = nstring; symrathole->type->width = nrathole; for(i=0; ilink) { if(s->type == T) continue; if(s->type->width == 0) continue; if(s->class != CGLOBL && s->class != CSTATIC) continue; if(s->type == types[TENUM]) continue; gpseudo(AGLOBL, s, nodconst(s->type->width)); } nextpc(); p->as = AEND; outcode(); } void nextpc(void) { Plist *pl; p = alloc(sizeof(*p)); *p = zprog; p->lineno = nearln; p->pc = pc; pc++; if(lastp == nil) { pl = linknewplist(ctxt); pl->firstpc = p; } else lastp->link = p; lastp = p; } void gargs(Node *n, Node *tn1, Node *tn2) { int32 regs; Node fnxargs[20], *fnxp; regs = cursafe; fnxp = fnxargs; garg1(n, tn1, tn2, 0, &fnxp); /* compile fns to temps */ curarg = 0; fnxp = fnxargs; garg1(n, tn1, tn2, 1, &fnxp); /* compile normal args and temps */ cursafe = regs; } int nareg(void) { int i, n; n = 0; for(i=D_AX; i<=D_DI; i++) if(reg[i] == 0) n++; return n; } void garg1(Node *n, Node *tn1, Node *tn2, int f, Node **fnxp) { Node nod; if(n == Z) return; if(n->op == OLIST) { garg1(n->left, tn1, tn2, f, fnxp); garg1(n->right, tn1, tn2, f, fnxp); return; } if(f == 0) { if(n->complex >= FNX) { regsalloc(*fnxp, n); nod = znode; nod.op = OAS; nod.left = *fnxp; nod.right = n; nod.type = n->type; cgen(&nod, Z); (*fnxp)++; } return; } if(typesu[n->type->etype] || typev[n->type->etype]) { regaalloc(tn2, n); if(n->complex >= FNX) { sugen(*fnxp, tn2, n->type->width); (*fnxp)++; } else sugen(n, tn2, n->type->width); return; } if(REGARG >= 0 && curarg == 0 && typeilp[n->type->etype]) { regaalloc1(tn1, n); if(n->complex >= FNX) { cgen(*fnxp, tn1); (*fnxp)++; } else cgen(n, tn1); return; } if(vconst(n) == 0) { regaalloc(tn2, n); gmove(n, tn2); return; } regalloc(tn1, n, Z); if(n->complex >= FNX) { cgen(*fnxp, tn1); (*fnxp)++; } else cgen(n, tn1); regaalloc(tn2, n); gmove(tn1, tn2); regfree(tn1); } Node* nodconst(int32 v) { constnode.vconst = v; return &constnode; } Node* nodfconst(double d) { fconstnode.fconst = d; return &fconstnode; } int isreg(Node *n, int r) { if(n->op == OREGISTER) if(n->reg == r) return 1; return 0; } int nodreg(Node *n, Node *nn, int r) { *n = regnode; n->reg = r; if(reg[r] == 0) return 0; if(nn != Z) { n->type = nn->type; n->lineno = nn->lineno; if(nn->op == OREGISTER) if(nn->reg == r) return 0; } return 1; } void regret(Node *n, Node *nn) { int r; r = REGRET; if(typefd[nn->type->etype]) r = FREGRET; nodreg(n, nn, r); reg[r]++; } void regalloc(Node *n, Node *tn, Node *o) { int i; switch(tn->type->etype) { case TCHAR: case TUCHAR: case TSHORT: case TUSHORT: case TINT: case TUINT: case TLONG: case TULONG: case TIND: if(o != Z && o->op == OREGISTER) { i = o->reg; if(i >= D_AX && i <= D_DI) goto out; } for(i=D_AX; i<=D_DI; i++) if(reg[i] == 0) goto out; diag(tn, "out of fixed registers"); goto err; case TFLOAT: case TDOUBLE: case TVLONG: i = D_F0; goto out; } diag(tn, "unknown type in regalloc: %T", tn->type); err: i = 0; out: if(i) reg[i]++; nodreg(n, tn, i); } void regialloc(Node *n, Node *tn, Node *o) { Node nod; nod = *tn; nod.type = types[TIND]; regalloc(n, &nod, o); } void regfree(Node *n) { int i; i = 0; if(n->op != OREGISTER && n->op != OINDREG) goto err; i = n->reg; if(i < 0 || i >= nelem(reg)) goto err; if(reg[i] <= 0) goto err; reg[i]--; return; err: diag(n, "error in regfree: %R", i); } void regsalloc(Node *n, Node *nn) { cursafe = align(cursafe, nn->type, Aaut3, nil); maxargsafe = maxround(maxargsafe, cursafe+curarg); *n = *nodsafe; n->xoffset = -(stkoff + cursafe); n->type = nn->type; n->etype = nn->type->etype; n->lineno = nn->lineno; } void regaalloc1(Node *n, Node *nn) { if(REGARG < 0) { fatal(n, "regaalloc1 and REGARG<0"); return; } nodreg(n, nn, REGARG); reg[REGARG]++; curarg = align(curarg, nn->type, Aarg1, nil); curarg = align(curarg, nn->type, Aarg2, nil); maxargsafe = maxround(maxargsafe, cursafe+curarg); } void regaalloc(Node *n, Node *nn) { curarg = align(curarg, nn->type, Aarg1, nil); *n = *nn; n->op = OINDREG; n->reg = REGSP; n->xoffset = curarg; n->complex = 0; n->addable = 20; curarg = align(curarg, nn->type, Aarg2, nil); maxargsafe = maxround(maxargsafe, cursafe+curarg); } void regind(Node *n, Node *nn) { if(n->op != OREGISTER) { diag(n, "regind not OREGISTER"); return; } n->op = OINDREG; n->type = nn->type; } void naddr(Node *n, Addr *a) { int32 v; a->type = D_NONE; if(n == Z) return; switch(n->op) { default: bad: diag(n, "bad in naddr: %O %D", n->op, a); break; case OREGISTER: a->type = n->reg; a->sym = nil; break; case OEXREG: a->type = D_INDIR + D_TLS; a->offset = n->reg - 1; break; case OIND: naddr(n->left, a); if(a->type >= D_AX && a->type <= D_DI) a->type += D_INDIR; else if(a->type == D_CONST) a->type = D_NONE+D_INDIR; else if(a->type == D_ADDR) { a->type = a->index; a->index = D_NONE; } else goto bad; break; case OINDEX: a->type = idx.ptr; if(n->left->op == OADDR || n->left->op == OCONST) naddr(n->left, a); if(a->type >= D_AX && a->type <= D_DI) a->type += D_INDIR; else if(a->type == D_CONST) a->type = D_NONE+D_INDIR; else if(a->type == D_ADDR) { a->type = a->index; a->index = D_NONE; } else goto bad; a->index = idx.reg; a->scale = n->scale; a->offset += n->xoffset; break; case OINDREG: a->type = n->reg+D_INDIR; a->sym = nil; a->offset = n->xoffset; break; case ONAME: a->etype = n->etype; a->type = D_STATIC; a->sym = linksym(n->sym); a->offset = n->xoffset; if(n->class == CSTATIC) break; if(n->class == CEXTERN || n->class == CGLOBL) { a->type = D_EXTERN; break; } if(n->class == CAUTO) { a->type = D_AUTO; break; } if(n->class == CPARAM) { a->type = D_PARAM; break; } goto bad; case OCONST: if(typefd[n->type->etype]) { a->type = D_FCONST; a->u.dval = n->fconst; break; } a->sym = nil; a->type = D_CONST; a->offset = n->vconst; break; case OADDR: naddr(n->left, a); if(a->type >= D_INDIR) { a->type -= D_INDIR; break; } if(a->type == D_EXTERN || a->type == D_STATIC || a->type == D_AUTO || a->type == D_PARAM) if(a->index == D_NONE) { a->index = a->type; a->type = D_ADDR; break; } goto bad; case OADD: if(n->right->op == OCONST) { v = n->right->vconst; naddr(n->left, a); } else if(n->left->op == OCONST) { v = n->left->vconst; naddr(n->right, a); } else goto bad; a->offset += v; break; } } #define CASE(a,b) ((a<<8)|(b<<0)) void gmove(Node *f, Node *t) { int ft, tt, a; Node nod, nod1; Prog *p1; ft = f->type->etype; tt = t->type->etype; if(debug['M']) print("gop: %O %O[%s],%O[%s]\n", OAS, f->op, tnames[ft], t->op, tnames[tt]); if(typefd[ft] && f->op == OCONST) { if(f->fconst == 0) gins(AFLDZ, Z, Z); else if(f->fconst == 1) gins(AFLD1, Z, Z); else gins(AFMOVD, f, &fregnode0); gmove(&fregnode0, t); return; } /* * load */ if(f->op == ONAME || f->op == OINDREG || f->op == OIND || f->op == OINDEX) switch(ft) { case TCHAR: a = AMOVBLSX; goto ld; case TUCHAR: a = AMOVBLZX; goto ld; case TSHORT: if(typefd[tt]) { gins(AFMOVW, f, &fregnode0); gmove(&fregnode0, t); return; } a = AMOVWLSX; goto ld; case TUSHORT: a = AMOVWLZX; goto ld; case TINT: case TUINT: case TLONG: case TULONG: case TIND: if(typefd[tt]) { gins(AFMOVL, f, &fregnode0); gmove(&fregnode0, t); return; } a = AMOVL; ld: regalloc(&nod, f, t); nod.type = types[TLONG]; gins(a, f, &nod); gmove(&nod, t); regfree(&nod); return; case TFLOAT: gins(AFMOVF, f, t); return; case TDOUBLE: gins(AFMOVD, f, t); return; case TVLONG: gins(AFMOVV, f, t); return; } /* * store */ if(t->op == ONAME || t->op == OINDREG || t->op == OIND || t->op == OINDEX) switch(tt) { case TCHAR: case TUCHAR: a = AMOVB; goto st; case TSHORT: case TUSHORT: a = AMOVW; goto st; case TINT: case TUINT: case TLONG: case TULONG: case TIND: a = AMOVL; goto st; st: if(f->op == OCONST) { gins(a, f, t); return; } regalloc(&nod, t, f); gmove(f, &nod); gins(a, &nod, t); regfree(&nod); return; case TFLOAT: gins(AFMOVFP, f, t); return; case TDOUBLE: gins(AFMOVDP, f, t); return; case TVLONG: gins(AFMOVVP, f, t); return; } /* * convert */ switch(CASE(ft,tt)) { default: /* * integer to integer ******** a = AGOK; break; case CASE( TCHAR, TCHAR): case CASE( TUCHAR, TCHAR): case CASE( TSHORT, TCHAR): case CASE( TUSHORT,TCHAR): case CASE( TINT, TCHAR): case CASE( TUINT, TCHAR): case CASE( TLONG, TCHAR): case CASE( TULONG, TCHAR): case CASE( TIND, TCHAR): case CASE( TCHAR, TUCHAR): case CASE( TUCHAR, TUCHAR): case CASE( TSHORT, TUCHAR): case CASE( TUSHORT,TUCHAR): case CASE( TINT, TUCHAR): case CASE( TUINT, TUCHAR): case CASE( TLONG, TUCHAR): case CASE( TULONG, TUCHAR): case CASE( TIND, TUCHAR): case CASE( TSHORT, TSHORT): case CASE( TUSHORT,TSHORT): case CASE( TINT, TSHORT): case CASE( TUINT, TSHORT): case CASE( TLONG, TSHORT): case CASE( TULONG, TSHORT): case CASE( TIND, TSHORT): case CASE( TSHORT, TUSHORT): case CASE( TUSHORT,TUSHORT): case CASE( TINT, TUSHORT): case CASE( TUINT, TUSHORT): case CASE( TLONG, TUSHORT): case CASE( TULONG, TUSHORT): case CASE( TIND, TUSHORT): case CASE( TINT, TINT): case CASE( TUINT, TINT): case CASE( TLONG, TINT): case CASE( TULONG, TINT): case CASE( TIND, TINT): case CASE( TINT, TUINT): case CASE( TUINT, TUINT): case CASE( TLONG, TUINT): case CASE( TULONG, TUINT): case CASE( TIND, TUINT): case CASE( TINT, TLONG): case CASE( TUINT, TLONG): case CASE( TLONG, TLONG): case CASE( TULONG, TLONG): case CASE( TIND, TLONG): case CASE( TINT, TULONG): case CASE( TUINT, TULONG): case CASE( TLONG, TULONG): case CASE( TULONG, TULONG): case CASE( TIND, TULONG): case CASE( TINT, TIND): case CASE( TUINT, TIND): case CASE( TLONG, TIND): case CASE( TULONG, TIND): case CASE( TIND, TIND): *****/ a = AMOVL; break; case CASE( TSHORT, TINT): case CASE( TSHORT, TUINT): case CASE( TSHORT, TLONG): case CASE( TSHORT, TULONG): case CASE( TSHORT, TIND): a = AMOVWLSX; if(f->op == OCONST) { f->vconst &= 0xffff; if(f->vconst & 0x8000) f->vconst |= 0xffff0000; a = AMOVL; } break; case CASE( TUSHORT,TINT): case CASE( TUSHORT,TUINT): case CASE( TUSHORT,TLONG): case CASE( TUSHORT,TULONG): case CASE( TUSHORT,TIND): a = AMOVWLZX; if(f->op == OCONST) { f->vconst &= 0xffff; a = AMOVL; } break; case CASE( TCHAR, TSHORT): case CASE( TCHAR, TUSHORT): case CASE( TCHAR, TINT): case CASE( TCHAR, TUINT): case CASE( TCHAR, TLONG): case CASE( TCHAR, TULONG): case CASE( TCHAR, TIND): a = AMOVBLSX; if(f->op == OCONST) { f->vconst &= 0xff; if(f->vconst & 0x80) f->vconst |= 0xffffff00; a = AMOVL; } break; case CASE( TUCHAR, TSHORT): case CASE( TUCHAR, TUSHORT): case CASE( TUCHAR, TINT): case CASE( TUCHAR, TUINT): case CASE( TUCHAR, TLONG): case CASE( TUCHAR, TULONG): case CASE( TUCHAR, TIND): a = AMOVBLZX; if(f->op == OCONST) { f->vconst &= 0xff; a = AMOVL; } break; /* * float to fix */ case CASE( TFLOAT, TCHAR): case CASE( TFLOAT, TUCHAR): case CASE( TFLOAT, TSHORT): case CASE( TFLOAT, TUSHORT): case CASE( TFLOAT, TINT): case CASE( TFLOAT, TUINT): case CASE( TFLOAT, TLONG): case CASE( TFLOAT, TULONG): case CASE( TFLOAT, TIND): case CASE( TDOUBLE,TCHAR): case CASE( TDOUBLE,TUCHAR): case CASE( TDOUBLE,TSHORT): case CASE( TDOUBLE,TUSHORT): case CASE( TDOUBLE,TINT): case CASE( TDOUBLE,TUINT): case CASE( TDOUBLE,TLONG): case CASE( TDOUBLE,TULONG): case CASE( TDOUBLE,TIND): case CASE( TVLONG, TCHAR): case CASE( TVLONG, TUCHAR): case CASE( TVLONG, TSHORT): case CASE( TVLONG, TUSHORT): case CASE( TVLONG, TINT): case CASE( TVLONG, TUINT): case CASE( TVLONG, TLONG): case CASE( TVLONG, TULONG): case CASE( TVLONG, TIND): if(fproundflg) { regsalloc(&nod, ®node); gins(AFMOVLP, f, &nod); gmove(&nod, t); return; } regsalloc(&nod, ®node); regsalloc(&nod1, ®node); gins(AFSTCW, Z, &nod1); nod1.xoffset += 2; gins(AMOVW, nodconst(0xf7f), &nod1); gins(AFLDCW, &nod1, Z); gins(AFMOVLP, f, &nod); nod1.xoffset -= 2; gins(AFLDCW, &nod1, Z); gmove(&nod, t); return; /* * ulong to float */ case CASE( TULONG, TDOUBLE): case CASE( TULONG, TVLONG): case CASE( TULONG, TFLOAT): case CASE( TUINT, TDOUBLE): case CASE( TUINT, TVLONG): case CASE( TUINT, TFLOAT): regalloc(&nod, f, f); gmove(f, &nod); regsalloc(&nod1, ®node); gmove(&nod, &nod1); gins(AFMOVL, &nod1, &fregnode0); gins(ACMPL, &nod, nodconst(0)); gins(AJGE, Z, Z); p1 = p; gins(AFADDD, nodfconst(4294967296.), &fregnode0); patch(p1, pc); regfree(&nod); return; /* * fix to float */ case CASE( TCHAR, TFLOAT): case CASE( TUCHAR, TFLOAT): case CASE( TSHORT, TFLOAT): case CASE( TUSHORT,TFLOAT): case CASE( TINT, TFLOAT): case CASE( TLONG, TFLOAT): case CASE( TIND, TFLOAT): case CASE( TCHAR, TDOUBLE): case CASE( TUCHAR, TDOUBLE): case CASE( TSHORT, TDOUBLE): case CASE( TUSHORT,TDOUBLE): case CASE( TINT, TDOUBLE): case CASE( TLONG, TDOUBLE): case CASE( TIND, TDOUBLE): case CASE( TCHAR, TVLONG): case CASE( TUCHAR, TVLONG): case CASE( TSHORT, TVLONG): case CASE( TUSHORT,TVLONG): case CASE( TINT, TVLONG): case CASE( TLONG, TVLONG): case CASE( TIND, TVLONG): regsalloc(&nod, ®node); gmove(f, &nod); gins(AFMOVL, &nod, &fregnode0); return; /* * float to float */ case CASE( TFLOAT, TFLOAT): case CASE( TDOUBLE,TFLOAT): case CASE( TVLONG, TFLOAT): case CASE( TFLOAT, TDOUBLE): case CASE( TDOUBLE,TDOUBLE): case CASE( TVLONG, TDOUBLE): case CASE( TFLOAT, TVLONG): case CASE( TDOUBLE,TVLONG): case CASE( TVLONG, TVLONG): a = AFMOVD; break; } if(a == AMOVL || a == AFMOVD) if(samaddr(f, t)) return; gins(a, f, t); } void doindex(Node *n) { Node nod, nod1; int32 v; if(debug['Y']) prtree(n, "index"); if(n->left->complex >= FNX) print("botch in doindex\n"); regalloc(&nod, ®node, Z); v = constnode.vconst; cgen(n->right, &nod); idx.ptr = D_NONE; if(n->left->op == OCONST) idx.ptr = D_CONST; else if(n->left->op == OREGISTER) idx.ptr = n->left->reg; else if(n->left->op != OADDR) { reg[D_BP]++; // can't be used as a base regalloc(&nod1, ®node, Z); cgen(n->left, &nod1); idx.ptr = nod1.reg; regfree(&nod1); reg[D_BP]--; } idx.reg = nod.reg; regfree(&nod); constnode.vconst = v; } void gins(int a, Node *f, Node *t) { if(f != Z && f->op == OINDEX) doindex(f); if(t != Z && t->op == OINDEX) doindex(t); nextpc(); p->as = a; if(f != Z) naddr(f, &p->from); if(t != Z) naddr(t, &p->to); if(debug['g']) print("%P\n", p); } void fgopcode(int o, Node *f, Node *t, int pop, int rev) { int a, et; Node nod; et = TLONG; if(f != Z && f->type != T) et = f->type->etype; if(!typefd[et]) { diag(f, "fop: integer %O", o); return; } if(debug['M']) { if(t != Z && t->type != T) print("gop: %O %O-%s Z\n", o, f->op, tnames[et]); else print("gop: %O %O-%s %O-%s\n", o, f->op, tnames[et], t->op, tnames[t->type->etype]); } a = AGOK; switch(o) { case OASADD: case OADD: if(et == TFLOAT) a = AFADDF; else if(et == TDOUBLE || et == TVLONG) { a = AFADDD; if(pop) a = AFADDDP; } break; case OASSUB: case OSUB: if(et == TFLOAT) { a = AFSUBF; if(rev) a = AFSUBRF; } else if(et == TDOUBLE || et == TVLONG) { a = AFSUBD; if(pop) a = AFSUBDP; if(rev) { a = AFSUBRD; if(pop) a = AFSUBRDP; } } break; case OASMUL: case OMUL: if(et == TFLOAT) a = AFMULF; else if(et == TDOUBLE || et == TVLONG) { a = AFMULD; if(pop) a = AFMULDP; } break; case OASMOD: case OMOD: case OASDIV: case ODIV: if(et == TFLOAT) { a = AFDIVF; if(rev) a = AFDIVRF; } else if(et == TDOUBLE || et == TVLONG) { a = AFDIVD; if(pop) a = AFDIVDP; if(rev) { a = AFDIVRD; if(pop) a = AFDIVRDP; } } break; case OEQ: case ONE: case OLT: case OLE: case OGE: case OGT: pop += rev; if(et == TFLOAT) { a = AFCOMF; if(pop) { a = AFCOMFP; if(pop > 1) a = AGOK; } } else if(et == TDOUBLE || et == TVLONG) { a = AFCOMF; if(pop) { a = AFCOMDP; if(pop > 1) a = AFCOMDPP; } } gins(a, f, t); regalloc(&nod, ®node, Z); if(nod.reg != D_AX) { regfree(&nod); nod.reg = D_AX; gins(APUSHL, &nod, Z); gins(AWAIT, Z, Z); gins(AFSTSW, Z, &nod); gins(ASAHF, Z, Z); gins(APOPL, Z, &nod); } else { gins(AWAIT, Z, Z); gins(AFSTSW, Z, &nod); gins(ASAHF, Z, Z); regfree(&nod); } switch(o) { case OEQ: a = AJEQ; break; case ONE: a = AJNE; break; case OLT: a = AJCS; break; case OLE: a = AJLS; break; case OGE: a = AJCC; break; case OGT: a = AJHI; break; } gins(a, Z, Z); return; } if(a == AGOK) diag(Z, "bad in gopcode %O", o); gins(a, f, t); } void gopcode(int o, Type *ty, Node *f, Node *t) { int a, et; et = TLONG; if(ty != T) et = ty->etype; if(typefd[et] && o != OADDR && o != OFUNC) { diag(f, "gop: float %O", o); return; } if(debug['M']) { if(f != Z && f->type != T) print("gop: %O %O[%s],", o, f->op, tnames[et]); else print("gop: %O Z,", o); if(t != Z && t->type != T) print("%O[%s]\n", t->op, tnames[t->type->etype]); else print("Z\n"); } a = AGOK; switch(o) { case OCOM: a = ANOTL; if(et == TCHAR || et == TUCHAR) a = ANOTB; if(et == TSHORT || et == TUSHORT) a = ANOTW; break; case ONEG: a = ANEGL; if(et == TCHAR || et == TUCHAR) a = ANEGB; if(et == TSHORT || et == TUSHORT) a = ANEGW; break; case OADDR: a = ALEAL; break; case OASADD: case OADD: a = AADDL; if(et == TCHAR || et == TUCHAR) a = AADDB; if(et == TSHORT || et == TUSHORT) a = AADDW; break; case OASSUB: case OSUB: a = ASUBL; if(et == TCHAR || et == TUCHAR) a = ASUBB; if(et == TSHORT || et == TUSHORT) a = ASUBW; break; case OASOR: case OOR: a = AORL; if(et == TCHAR || et == TUCHAR) a = AORB; if(et == TSHORT || et == TUSHORT) a = AORW; break; case OASAND: case OAND: a = AANDL; if(et == TCHAR || et == TUCHAR) a = AANDB; if(et == TSHORT || et == TUSHORT) a = AANDW; break; case OASXOR: case OXOR: a = AXORL; if(et == TCHAR || et == TUCHAR) a = AXORB; if(et == TSHORT || et == TUSHORT) a = AXORW; break; case OASLSHR: case OLSHR: a = ASHRL; if(et == TCHAR || et == TUCHAR) a = ASHRB; if(et == TSHORT || et == TUSHORT) a = ASHRW; break; case OASASHR: case OASHR: a = ASARL; if(et == TCHAR || et == TUCHAR) a = ASARB; if(et == TSHORT || et == TUSHORT) a = ASARW; break; case OASASHL: case OASHL: a = ASALL; if(et == TCHAR || et == TUCHAR) a = ASALB; if(et == TSHORT || et == TUSHORT) a = ASALW; break; case OROTL: a = AROLL; if(et == TCHAR || et == TUCHAR) a = AROLB; if(et == TSHORT || et == TUSHORT) a = AROLW; break; case OFUNC: a = ACALL; break; case OASMUL: case OMUL: if(f->op == OREGISTER && t != Z && isreg(t, D_AX) && reg[D_DX] == 0) t = Z; a = AIMULL; break; case OASMOD: case OMOD: case OASDIV: case ODIV: a = AIDIVL; break; case OASLMUL: case OLMUL: a = AMULL; break; case OASLMOD: case OLMOD: case OASLDIV: case OLDIV: a = ADIVL; break; case OEQ: case ONE: case OLT: case OLE: case OGE: case OGT: case OLO: case OLS: case OHS: case OHI: a = ACMPL; if(et == TCHAR || et == TUCHAR) a = ACMPB; if(et == TSHORT || et == TUSHORT) a = ACMPW; gins(a, f, t); switch(o) { case OEQ: a = AJEQ; break; case ONE: a = AJNE; break; case OLT: a = AJLT; break; case OLE: a = AJLE; break; case OGE: a = AJGE; break; case OGT: a = AJGT; break; case OLO: a = AJCS; break; case OLS: a = AJLS; break; case OHS: a = AJCC; break; case OHI: a = AJHI; break; } gins(a, Z, Z); return; } if(a == AGOK) diag(Z, "bad in gopcode %O", o); gins(a, f, t); } int samaddr(Node *f, Node *t) { if(f->op != t->op) return 0; switch(f->op) { case OREGISTER: if(f->reg != t->reg) break; return 1; } return 0; } void gbranch(int o) { int a; a = AGOK; switch(o) { case ORETURN: a = ARET; break; case OGOTO: a = AJMP; break; } nextpc(); if(a == AGOK) { diag(Z, "bad in gbranch %O", o); nextpc(); } p->as = a; } void patch(Prog *op, int32 pc) { op->to.offset = pc; op->to.type = D_BRANCH; op->to.u.branch = nil; op->pcond = nil; } void gpseudo(int a, Sym *s, Node *n) { nextpc(); p->as = a; p->from.type = D_EXTERN; p->from.sym = linksym(s); switch(a) { case ATEXT: p->from.scale = textflag; textflag = 0; break; case AGLOBL: p->from.scale = s->dataflag; break; } if(s->class == CSTATIC) p->from.type = D_STATIC; naddr(n, &p->to); if(a == ADATA || a == AGLOBL) pc--; } void gpcdata(int index, int value) { Node n1; n1 = *nodconst(index); gins(APCDATA, &n1, nodconst(value)); } void gprefetch(Node *n) { Node n1; if(strcmp(getgo386(), "sse2") != 0) // assume no prefetch on old machines return; regalloc(&n1, n, Z); gmove(n, &n1); n1.op = OINDREG; gins(APREFETCHNTA, &n1, Z); regfree(&n1); } int sconst(Node *n) { int32 v; if(n->op == OCONST && !typefd[n->type->etype]) { v = n->vconst; if(v >= -32766L && v < 32766L) return 1; } return 0; } int32 exreg(Type *t) { int32 o; if(typechlp[t->etype]){ if(exregoffset >= 32) return 0; o = exregoffset; exregoffset += 4; return o+1; // +1 to avoid 0 == failure; naddr case OEXREG will -1. } return 0; } schar ewidth[NTYPE] = { -1, /*[TXXX]*/ SZ_CHAR, /*[TCHAR]*/ SZ_CHAR, /*[TUCHAR]*/ SZ_SHORT, /*[TSHORT]*/ SZ_SHORT, /*[TUSHORT]*/ SZ_INT, /*[TINT]*/ SZ_INT, /*[TUINT]*/ SZ_LONG, /*[TLONG]*/ SZ_LONG, /*[TULONG]*/ SZ_VLONG, /*[TVLONG]*/ SZ_VLONG, /*[TUVLONG]*/ SZ_FLOAT, /*[TFLOAT]*/ SZ_DOUBLE, /*[TDOUBLE]*/ SZ_IND, /*[TIND]*/ 0, /*[TFUNC]*/ -1, /*[TARRAY]*/ 0, /*[TVOID]*/ -1, /*[TSTRUCT]*/ -1, /*[TUNION]*/ SZ_INT, /*[TENUM]*/ }; int32 ncast[NTYPE] = { 0, /*[TXXX]*/ BCHAR|BUCHAR, /*[TCHAR]*/ BCHAR|BUCHAR, /*[TUCHAR]*/ BSHORT|BUSHORT, /*[TSHORT]*/ BSHORT|BUSHORT, /*[TUSHORT]*/ BINT|BUINT|BLONG|BULONG|BIND, /*[TINT]*/ BINT|BUINT|BLONG|BULONG|BIND, /*[TUINT]*/ BINT|BUINT|BLONG|BULONG|BIND, /*[TLONG]*/ BINT|BUINT|BLONG|BULONG|BIND, /*[TULONG]*/ BVLONG|BUVLONG, /*[TVLONG]*/ BVLONG|BUVLONG, /*[TUVLONG]*/ BFLOAT, /*[TFLOAT]*/ BDOUBLE, /*[TDOUBLE]*/ BLONG|BULONG|BIND, /*[TIND]*/ 0, /*[TFUNC]*/ 0, /*[TARRAY]*/ 0, /*[TVOID]*/ BSTRUCT, /*[TSTRUCT]*/ BUNION, /*[TUNION]*/ 0, /*[TENUM]*/ }; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8g���������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013273� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8g/Makefile������������������������������������������������������������������������������0100644�0000000�0000000�00000000265�12412656734�015007� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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. include ../../Make.dist �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8g/cgen.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000071344�12412656737�014440� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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. // TODO(rsc): // assume CLD? #include #include #include "gg.h" void mgen(Node *n, Node *n1, Node *rg) { Node n2; n1->op = OEMPTY; if(n->addable) { *n1 = *n; if(n1->op == OREGISTER || n1->op == OINDREG) reg[n->val.u.reg]++; return; } tempname(n1, n->type); cgen(n, n1); if(n->type->width <= widthptr || isfloat[n->type->etype]) { n2 = *n1; regalloc(n1, n->type, rg); gmove(&n2, n1); } } void mfree(Node *n) { if(n->op == OREGISTER) regfree(n); } /* * generate: * res = n; * simplifies and calls gmove. * * TODO: * sudoaddable */ void cgen(Node *n, Node *res) { Node *nl, *nr, *r, n1, n2, nt; Prog *p1, *p2, *p3; int a; if(debug['g']) { dump("\ncgen-n", n); dump("cgen-res", res); } if(n == N || n->type == T) fatal("cgen: n nil"); if(res == N || res->type == T) fatal("cgen: res nil"); switch(n->op) { case OSLICE: case OSLICEARR: case OSLICESTR: case OSLICE3: case OSLICE3ARR: if (res->op != ONAME || !res->addable) { tempname(&n1, n->type); cgen_slice(n, &n1); cgen(&n1, res); } else cgen_slice(n, res); return; case OEFACE: if (res->op != ONAME || !res->addable) { tempname(&n1, n->type); cgen_eface(n, &n1); cgen(&n1, res); } else cgen_eface(n, res); return; } while(n->op == OCONVNOP) n = n->left; // function calls on both sides? introduce temporary if(n->ullman >= UINF && res->ullman >= UINF) { tempname(&n1, n->type); cgen(n, &n1); cgen(&n1, res); return; } // structs etc get handled specially if(isfat(n->type)) { if(n->type->width < 0) fatal("forgot to compute width for %T", n->type); sgen(n, res, n->type->width); return; } // update addressability for string, slice // can't do in walk because n->left->addable // changes if n->left is an escaping local variable. switch(n->op) { case OSPTR: case OLEN: if(isslice(n->left->type) || istype(n->left->type, TSTRING)) n->addable = n->left->addable; break; case OCAP: if(isslice(n->left->type)) n->addable = n->left->addable; break; case OITAB: n->addable = n->left->addable; break; } // if both are addressable, move if(n->addable && res->addable) { gmove(n, res); return; } // if both are not addressable, use a temporary. if(!n->addable && !res->addable) { // could use regalloc here sometimes, // but have to check for ullman >= UINF. tempname(&n1, n->type); cgen(n, &n1); cgen(&n1, res); return; } // if result is not addressable directly but n is, // compute its address and then store via the address. if(!res->addable) { igen(res, &n1, N); cgen(n, &n1); regfree(&n1); return; } // complex types if(complexop(n, res)) { complexgen(n, res); return; } // otherwise, the result is addressable but n is not. // let's do some computation. // use ullman to pick operand to eval first. nl = n->left; nr = n->right; if(nl != N && nl->ullman >= UINF) if(nr != N && nr->ullman >= UINF) { // both are hard tempname(&n1, nl->type); cgen(nl, &n1); n2 = *n; n2.left = &n1; cgen(&n2, res); return; } // 64-bit ops are hard on 32-bit machine. if(is64(n->type) || is64(res->type) || n->left != N && is64(n->left->type)) { switch(n->op) { // math goes to cgen64. case OMINUS: case OCOM: case OADD: case OSUB: case OMUL: case OLROT: case OLSH: case ORSH: case OAND: case OOR: case OXOR: cgen64(n, res); return; } } if(nl != N && isfloat[n->type->etype] && isfloat[nl->type->etype]) { cgen_float(n, res); return; } switch(n->op) { default: dump("cgen", n); fatal("cgen %O", n->op); break; case OREAL: case OIMAG: case OCOMPLEX: fatal("unexpected complex"); return; // these call bgen to get a bool value case OOROR: case OANDAND: case OEQ: case ONE: case OLT: case OLE: case OGE: case OGT: case ONOT: p1 = gbranch(AJMP, T, 0); p2 = pc; gmove(nodbool(1), res); p3 = gbranch(AJMP, T, 0); patch(p1, pc); bgen(n, 1, 0, p2); gmove(nodbool(0), res); patch(p3, pc); return; case OPLUS: cgen(nl, res); return; case OMINUS: case OCOM: a = optoas(n->op, nl->type); goto uop; // symmetric binary case OAND: case OOR: case OXOR: case OADD: case OADDPTR: case OMUL: a = optoas(n->op, nl->type); if(a == AIMULB) { cgen_bmul(n->op, nl, nr, res); break; } goto sbop; // asymmetric binary case OSUB: a = optoas(n->op, nl->type); goto abop; case OHMUL: cgen_hmul(nl, nr, res); break; case OCONV: if(eqtype(n->type, nl->type) || noconv(n->type, nl->type)) { cgen(nl, res); break; } tempname(&n2, n->type); mgen(nl, &n1, res); gmove(&n1, &n2); gmove(&n2, res); mfree(&n1); break; case ODOT: case ODOTPTR: case OINDEX: case OIND: case ONAME: // PHEAP or PPARAMREF var igen(n, &n1, res); gmove(&n1, res); regfree(&n1); break; case OITAB: igen(nl, &n1, res); n1.type = ptrto(types[TUINTPTR]); gmove(&n1, res); regfree(&n1); break; case OSPTR: // pointer is the first word of string or slice. if(isconst(nl, CTSTR)) { regalloc(&n1, types[tptr], res); p1 = gins(ALEAL, N, &n1); datastring(nl->val.u.sval->s, nl->val.u.sval->len, &p1->from); gmove(&n1, res); regfree(&n1); break; } igen(nl, &n1, res); n1.type = n->type; gmove(&n1, res); regfree(&n1); break; case OLEN: if(istype(nl->type, TMAP) || istype(nl->type, TCHAN)) { // map has len in the first 32-bit word. // a zero pointer means zero length tempname(&n1, types[tptr]); cgen(nl, &n1); regalloc(&n2, types[tptr], N); gmove(&n1, &n2); n1 = n2; nodconst(&n2, types[tptr], 0); gins(optoas(OCMP, types[tptr]), &n1, &n2); p1 = gbranch(optoas(OEQ, types[tptr]), T, -1); n2 = n1; n2.op = OINDREG; n2.type = types[TINT32]; gmove(&n2, &n1); patch(p1, pc); gmove(&n1, res); regfree(&n1); break; } if(istype(nl->type, TSTRING) || isslice(nl->type)) { // both slice and string have len one pointer into the struct. igen(nl, &n1, res); n1.type = types[TUINT32]; n1.xoffset += Array_nel; gmove(&n1, res); regfree(&n1); break; } fatal("cgen: OLEN: unknown type %lT", nl->type); break; case OCAP: if(istype(nl->type, TCHAN)) { // chan has cap in the second 32-bit word. // a zero pointer means zero length regalloc(&n1, types[tptr], res); cgen(nl, &n1); nodconst(&n2, types[tptr], 0); gins(optoas(OCMP, types[tptr]), &n1, &n2); p1 = gbranch(optoas(OEQ, types[tptr]), T, -1); n2 = n1; n2.op = OINDREG; n2.xoffset = 4; n2.type = types[TINT32]; gmove(&n2, &n1); patch(p1, pc); gmove(&n1, res); regfree(&n1); break; } if(isslice(nl->type)) { igen(nl, &n1, res); n1.type = types[TUINT32]; n1.xoffset += Array_cap; gmove(&n1, res); regfree(&n1); break; } fatal("cgen: OCAP: unknown type %lT", nl->type); break; case OADDR: agen(nl, res); break; case OCALLMETH: cgen_callmeth(n, 0); cgen_callret(n, res); break; case OCALLINTER: cgen_callinter(n, res, 0); cgen_callret(n, res); break; case OCALLFUNC: cgen_call(n, 0); cgen_callret(n, res); break; case OMOD: case ODIV: cgen_div(n->op, nl, nr, res); break; case OLSH: case ORSH: case OLROT: cgen_shift(n->op, n->bounded, nl, nr, res); break; } return; sbop: // symmetric binary if(nl->ullman < nr->ullman || nl->op == OLITERAL) { r = nl; nl = nr; nr = r; } abop: // asymmetric binary if(smallintconst(nr)) { mgen(nl, &n1, res); regalloc(&n2, nl->type, &n1); gmove(&n1, &n2); gins(a, nr, &n2); gmove(&n2, res); regfree(&n2); mfree(&n1); } else if(nl->ullman >= nr->ullman) { tempname(&nt, nl->type); cgen(nl, &nt); mgen(nr, &n2, N); regalloc(&n1, nl->type, res); gmove(&nt, &n1); gins(a, &n2, &n1); gmove(&n1, res); regfree(&n1); mfree(&n2); } else { regalloc(&n2, nr->type, res); cgen(nr, &n2); regalloc(&n1, nl->type, N); cgen(nl, &n1); gins(a, &n2, &n1); regfree(&n2); gmove(&n1, res); regfree(&n1); } return; uop: // unary tempname(&n1, nl->type); cgen(nl, &n1); gins(a, N, &n1); gmove(&n1, res); return; } /* * generate an addressable node in res, containing the value of n. * n is an array index, and might be any size; res width is <= 32-bit. * returns Prog* to patch to panic call. */ static Prog* igenindex(Node *n, Node *res, int bounded) { Node tmp, lo, hi, zero; if(!is64(n->type)) { if(n->addable) { // nothing to do. *res = *n; } else { tempname(res, types[TUINT32]); cgen(n, res); } return nil; } tempname(&tmp, types[TINT64]); cgen(n, &tmp); split64(&tmp, &lo, &hi); tempname(res, types[TUINT32]); gmove(&lo, res); if(bounded) { splitclean(); return nil; } nodconst(&zero, types[TINT32], 0); gins(ACMPL, &hi, &zero); splitclean(); return gbranch(AJNE, T, +1); } /* * address gen * res = &n; * The generated code checks that the result is not nil. */ void agen(Node *n, Node *res) { Node *nl, *nr; Node n1, n2, n3, tmp, nlen; Type *t; uint32 w; uint64 v; Prog *p1, *p2; int bounded; if(debug['g']) { dump("\nagen-res", res); dump("agen-r", n); } if(n == N || n->type == T || res == N || res->type == T) fatal("agen"); while(n->op == OCONVNOP) n = n->left; if(isconst(n, CTNIL) && n->type->width > widthptr) { // Use of a nil interface or nil slice. // Create a temporary we can take the address of and read. // The generated code is just going to panic, so it need not // be terribly efficient. See issue 3670. tempname(&n1, n->type); gvardef(&n1); clearfat(&n1); regalloc(&n2, types[tptr], res); gins(ALEAL, &n1, &n2); gmove(&n2, res); regfree(&n2); return; } // addressable var is easy if(n->addable) { if(n->op == OREGISTER) fatal("agen OREGISTER"); regalloc(&n1, types[tptr], res); gins(ALEAL, n, &n1); gmove(&n1, res); regfree(&n1); return; } // let's compute nl = n->left; nr = n->right; switch(n->op) { default: fatal("agen %O", n->op); case OCALLMETH: cgen_callmeth(n, 0); cgen_aret(n, res); break; case OCALLINTER: cgen_callinter(n, res, 0); cgen_aret(n, res); break; case OCALLFUNC: cgen_call(n, 0); cgen_aret(n, res); break; case OSLICE: case OSLICEARR: case OSLICESTR: case OSLICE3: case OSLICE3ARR: tempname(&n1, n->type); cgen_slice(n, &n1); agen(&n1, res); break; case OEFACE: tempname(&n1, n->type); cgen_eface(n, &n1); agen(&n1, res); break; case OINDEX: p2 = nil; // to be patched to panicindex. w = n->type->width; bounded = debug['B'] || n->bounded; if(nr->addable) { // Generate &nl first, and move nr into register. if(!isconst(nl, CTSTR)) igen(nl, &n3, res); if(!isconst(nr, CTINT)) { p2 = igenindex(nr, &tmp, bounded); regalloc(&n1, tmp.type, N); gmove(&tmp, &n1); } } else if(nl->addable) { // Generate nr first, and move &nl into register. if(!isconst(nr, CTINT)) { p2 = igenindex(nr, &tmp, bounded); regalloc(&n1, tmp.type, N); gmove(&tmp, &n1); } if(!isconst(nl, CTSTR)) igen(nl, &n3, res); } else { p2 = igenindex(nr, &tmp, bounded); nr = &tmp; if(!isconst(nl, CTSTR)) igen(nl, &n3, res); regalloc(&n1, tmp.type, N); gins(optoas(OAS, tmp.type), &tmp, &n1); } // For fixed array we really want the pointer in n3. if(isfixedarray(nl->type)) { regalloc(&n2, types[tptr], &n3); agen(&n3, &n2); regfree(&n3); n3 = n2; } // &a[0] is in n3 (allocated in res) // i is in n1 (if not constant) // len(a) is in nlen (if needed) // w is width // constant index if(isconst(nr, CTINT)) { if(isconst(nl, CTSTR)) fatal("constant string constant index"); // front end should handle v = mpgetfix(nr->val.u.xval); if(isslice(nl->type) || nl->type->etype == TSTRING) { if(!debug['B'] && !n->bounded) { nlen = n3; nlen.type = types[TUINT32]; nlen.xoffset += Array_nel; nodconst(&n2, types[TUINT32], v); gins(optoas(OCMP, types[TUINT32]), &nlen, &n2); p1 = gbranch(optoas(OGT, types[TUINT32]), T, +1); ginscall(panicindex, -1); patch(p1, pc); } } // Load base pointer in n2 = n3. regalloc(&n2, types[tptr], &n3); n3.type = types[tptr]; n3.xoffset += Array_array; gmove(&n3, &n2); regfree(&n3); if (v*w != 0) { nodconst(&n1, types[tptr], v*w); gins(optoas(OADD, types[tptr]), &n1, &n2); } gmove(&n2, res); regfree(&n2); break; } // i is in register n1, extend to 32 bits. t = types[TUINT32]; if(issigned[n1.type->etype]) t = types[TINT32]; regalloc(&n2, t, &n1); // i gmove(&n1, &n2); regfree(&n1); if(!debug['B'] && !n->bounded) { // check bounds t = types[TUINT32]; if(isconst(nl, CTSTR)) { nodconst(&nlen, t, nl->val.u.sval->len); } else if(isslice(nl->type) || nl->type->etype == TSTRING) { nlen = n3; nlen.type = t; nlen.xoffset += Array_nel; } else { nodconst(&nlen, t, nl->type->bound); } gins(optoas(OCMP, t), &n2, &nlen); p1 = gbranch(optoas(OLT, t), T, +1); if(p2) patch(p2, pc); ginscall(panicindex, -1); patch(p1, pc); } if(isconst(nl, CTSTR)) { regalloc(&n3, types[tptr], res); p1 = gins(ALEAL, N, &n3); datastring(nl->val.u.sval->s, nl->val.u.sval->len, &p1->from); p1->from.scale = 1; p1->from.index = n2.val.u.reg; goto indexdone; } // Load base pointer in n3. regalloc(&tmp, types[tptr], &n3); if(isslice(nl->type) || nl->type->etype == TSTRING) { n3.type = types[tptr]; n3.xoffset += Array_array; gmove(&n3, &tmp); } regfree(&n3); n3 = tmp; if(w == 0) { // nothing to do } else if(w == 1 || w == 2 || w == 4 || w == 8) { // LEAL (n3)(n2*w), n3 p1 = gins(ALEAL, &n2, &n3); p1->from.scale = w; p1->from.index = p1->from.type; p1->from.type = p1->to.type + D_INDIR; } else { nodconst(&tmp, types[TUINT32], w); gins(optoas(OMUL, types[TUINT32]), &tmp, &n2); gins(optoas(OADD, types[tptr]), &n2, &n3); } indexdone: gmove(&n3, res); regfree(&n2); regfree(&n3); break; case ONAME: // should only get here with names in this func. if(n->funcdepth > 0 && n->funcdepth != funcdepth) { dump("bad agen", n); fatal("agen: bad ONAME funcdepth %d != %d", n->funcdepth, funcdepth); } // should only get here for heap vars or paramref if(!(n->class & PHEAP) && n->class != PPARAMREF) { dump("bad agen", n); fatal("agen: bad ONAME class %#x", n->class); } cgen(n->heapaddr, res); if(n->xoffset != 0) { nodconst(&n1, types[tptr], n->xoffset); gins(optoas(OADD, types[tptr]), &n1, res); } break; case OIND: cgen(nl, res); cgen_checknil(res); break; case ODOT: agen(nl, res); if(n->xoffset != 0) { nodconst(&n1, types[tptr], n->xoffset); gins(optoas(OADD, types[tptr]), &n1, res); } break; case ODOTPTR: t = nl->type; if(!isptr[t->etype]) fatal("agen: not ptr %N", n); cgen(nl, res); cgen_checknil(res); if(n->xoffset != 0) { nodconst(&n1, types[tptr], n->xoffset); gins(optoas(OADD, types[tptr]), &n1, res); } break; } } /* * generate: * newreg = &n; * res = newreg * * on exit, a has been changed to be *newreg. * caller must regfree(a). * The generated code checks that the result is not *nil. */ void igen(Node *n, Node *a, Node *res) { Type *fp; Iter flist; Node n1; if(debug['g']) { dump("\nigen-n", n); } switch(n->op) { case ONAME: if((n->class&PHEAP) || n->class == PPARAMREF) break; *a = *n; return; case OINDREG: // Increase the refcount of the register so that igen's caller // has to call regfree. if(n->val.u.reg != D_SP) reg[n->val.u.reg]++; *a = *n; return; case ODOT: igen(n->left, a, res); a->xoffset += n->xoffset; a->type = n->type; return; case ODOTPTR: switch(n->left->op) { case ODOT: case ODOTPTR: case OCALLFUNC: case OCALLMETH: case OCALLINTER: // igen-able nodes. igen(n->left, &n1, res); regalloc(a, types[tptr], &n1); gmove(&n1, a); regfree(&n1); break; default: regalloc(a, types[tptr], res); cgen(n->left, a); } cgen_checknil(a); a->op = OINDREG; a->xoffset += n->xoffset; a->type = n->type; return; case OCALLFUNC: case OCALLMETH: case OCALLINTER: switch(n->op) { case OCALLFUNC: cgen_call(n, 0); break; case OCALLMETH: cgen_callmeth(n, 0); break; case OCALLINTER: cgen_callinter(n, N, 0); break; } fp = structfirst(&flist, getoutarg(n->left->type)); memset(a, 0, sizeof *a); a->op = OINDREG; a->val.u.reg = D_SP; a->addable = 1; a->xoffset = fp->width; a->type = n->type; return; case OINDEX: // Index of fixed-size array by constant can // put the offset in the addressing. // Could do the same for slice except that we need // to use the real index for the bounds checking. if(isfixedarray(n->left->type) || (isptr[n->left->type->etype] && isfixedarray(n->left->left->type))) if(isconst(n->right, CTINT)) { // Compute &a. if(!isptr[n->left->type->etype]) igen(n->left, a, res); else { igen(n->left, &n1, res); cgen_checknil(&n1); regalloc(a, types[tptr], res); gmove(&n1, a); regfree(&n1); a->op = OINDREG; } // Compute &a[i] as &a + i*width. a->type = n->type; a->xoffset += mpgetfix(n->right->val.u.xval)*n->type->width; return; } break; } // release register for now, to avoid // confusing tempname. if(res != N && res->op == OREGISTER) reg[res->val.u.reg]--; tempname(&n1, types[tptr]); agen(n, &n1); if(res != N && res->op == OREGISTER) reg[res->val.u.reg]++; regalloc(a, types[tptr], res); gmove(&n1, a); a->op = OINDREG; a->type = n->type; } /* * branch gen * if(n == true) goto to; */ void bgen(Node *n, int true, int likely, Prog *to) { int et, a; Node *nl, *nr, *r; Node n1, n2, tmp; Prog *p1, *p2; if(debug['g']) { dump("\nbgen", n); } if(n == N) n = nodbool(1); if(n->ninit != nil) genlist(n->ninit); if(n->type == T) { convlit(&n, types[TBOOL]); if(n->type == T) return; } et = n->type->etype; if(et != TBOOL) { yyerror("cgen: bad type %T for %O", n->type, n->op); patch(gins(AEND, N, N), to); return; } while(n->op == OCONVNOP) { n = n->left; if(n->ninit != nil) genlist(n->ninit); } nl = n->left; nr = N; if(nl != N && isfloat[nl->type->etype]) { bgen_float(n, true, likely, to); return; } switch(n->op) { default: def: regalloc(&n1, n->type, N); cgen(n, &n1); nodconst(&n2, n->type, 0); gins(optoas(OCMP, n->type), &n1, &n2); a = AJNE; if(!true) a = AJEQ; patch(gbranch(a, n->type, likely), to); regfree(&n1); return; case OLITERAL: // need to ask if it is bool? if(!true == !n->val.u.bval) patch(gbranch(AJMP, T, 0), to); return; case ONAME: if(!n->addable) goto def; nodconst(&n1, n->type, 0); gins(optoas(OCMP, n->type), n, &n1); a = AJNE; if(!true) a = AJEQ; patch(gbranch(a, n->type, likely), to); return; case OANDAND: if(!true) goto caseor; caseand: p1 = gbranch(AJMP, T, 0); p2 = gbranch(AJMP, T, 0); patch(p1, pc); bgen(n->left, !true, -likely, p2); bgen(n->right, !true, -likely, p2); p1 = gbranch(AJMP, T, 0); patch(p1, to); patch(p2, pc); return; case OOROR: if(!true) goto caseand; caseor: bgen(n->left, true, likely, to); bgen(n->right, true, likely, to); return; case OEQ: case ONE: case OLT: case OGT: case OLE: case OGE: nr = n->right; if(nr == N || nr->type == T) return; case ONOT: // unary nl = n->left; if(nl == N || nl->type == T) return; } switch(n->op) { case ONOT: bgen(nl, !true, likely, to); break; case OEQ: case ONE: case OLT: case OGT: case OLE: case OGE: a = n->op; if(!true) { a = brcom(a); true = !true; } // make simplest on right if(nl->op == OLITERAL || (nl->ullman < nr->ullman && nl->ullman < UINF)) { a = brrev(a); r = nl; nl = nr; nr = r; } if(isslice(nl->type)) { // front end should only leave cmp to literal nil if((a != OEQ && a != ONE) || nr->op != OLITERAL) { yyerror("illegal slice comparison"); break; } a = optoas(a, types[tptr]); igen(nl, &n1, N); n1.xoffset += Array_array; n1.type = types[tptr]; nodconst(&tmp, types[tptr], 0); gins(optoas(OCMP, types[tptr]), &n1, &tmp); patch(gbranch(a, types[tptr], likely), to); regfree(&n1); break; } if(isinter(nl->type)) { // front end should only leave cmp to literal nil if((a != OEQ && a != ONE) || nr->op != OLITERAL) { yyerror("illegal interface comparison"); break; } a = optoas(a, types[tptr]); igen(nl, &n1, N); n1.type = types[tptr]; nodconst(&tmp, types[tptr], 0); gins(optoas(OCMP, types[tptr]), &n1, &tmp); patch(gbranch(a, types[tptr], likely), to); regfree(&n1); break; } if(iscomplex[nl->type->etype]) { complexbool(a, nl, nr, true, likely, to); break; } if(is64(nr->type)) { if(!nl->addable || isconst(nl, CTINT)) { tempname(&n1, nl->type); cgen(nl, &n1); nl = &n1; } if(!nr->addable) { tempname(&n2, nr->type); cgen(nr, &n2); nr = &n2; } cmp64(nl, nr, a, likely, to); break; } if(nr->ullman >= UINF) { if(!nl->addable) { tempname(&n1, nl->type); cgen(nl, &n1); nl = &n1; } if(!nr->addable) { tempname(&tmp, nr->type); cgen(nr, &tmp); nr = &tmp; } regalloc(&n2, nr->type, N); cgen(nr, &n2); nr = &n2; goto cmp; } if(!nl->addable) { tempname(&n1, nl->type); cgen(nl, &n1); nl = &n1; } if(smallintconst(nr)) { gins(optoas(OCMP, nr->type), nl, nr); patch(gbranch(optoas(a, nr->type), nr->type, likely), to); break; } if(!nr->addable) { tempname(&tmp, nr->type); cgen(nr, &tmp); nr = &tmp; } regalloc(&n2, nr->type, N); gmove(nr, &n2); nr = &n2; cmp: gins(optoas(OCMP, nr->type), nl, nr); patch(gbranch(optoas(a, nr->type), nr->type, likely), to); if(nl->op == OREGISTER) regfree(nl); regfree(nr); break; } } /* * n is on stack, either local variable * or return value from function call. * return n's offset from SP. */ int32 stkof(Node *n) { Type *t; Iter flist; int32 off; switch(n->op) { case OINDREG: return n->xoffset; case ODOT: t = n->left->type; if(isptr[t->etype]) break; off = stkof(n->left); if(off == -1000 || off == 1000) return off; return off + n->xoffset; case OINDEX: t = n->left->type; if(!isfixedarray(t)) break; off = stkof(n->left); if(off == -1000 || off == 1000) return off; if(isconst(n->right, CTINT)) return off + t->type->width * mpgetfix(n->right->val.u.xval); return 1000; case OCALLMETH: case OCALLINTER: case OCALLFUNC: t = n->left->type; if(isptr[t->etype]) t = t->type; t = structfirst(&flist, getoutarg(t)); if(t != T) return t->width; break; } // botch - probably failing to recognize address // arithmetic on the above. eg INDEX and DOT return -1000; } /* * struct gen * memmove(&res, &n, w); */ void sgen(Node *n, Node *res, int64 w) { Node dst, src, tdst, tsrc; int32 c, q, odst, osrc; NodeList *l; Prog *p; if(debug['g']) { print("\nsgen w=%lld\n", w); dump("r", n); dump("res", res); } if(n->ullman >= UINF && res->ullman >= UINF) fatal("sgen UINF"); if(w < 0 || (int32)w != w) fatal("sgen copy %lld", w); if(w == 0) { // evaluate side effects only. tempname(&tdst, types[tptr]); agen(res, &tdst); agen(n, &tdst); return; } // If copying .args, that's all the results, so record definition sites // for them for the liveness analysis. if(res->op == ONAME && strcmp(res->sym->name, ".args") == 0) for(l = curfn->dcl; l != nil; l = l->next) if(l->n->class == PPARAMOUT) gvardef(l->n); // Avoid taking the address for simple enough types. if(componentgen(n, res)) return; // offset on the stack osrc = stkof(n); odst = stkof(res); if(osrc != -1000 && odst != -1000 && (osrc == 1000 || odst == 1000)) { // osrc and odst both on stack, and at least one is in // an unknown position. Could generate code to test // for forward/backward copy, but instead just copy // to a temporary location first. tempname(&tsrc, n->type); sgen(n, &tsrc, w); sgen(&tsrc, res, w); return; } nodreg(&dst, types[tptr], D_DI); nodreg(&src, types[tptr], D_SI); tempname(&tsrc, types[tptr]); tempname(&tdst, types[tptr]); if(!n->addable) agen(n, &tsrc); if(!res->addable) agen(res, &tdst); if(n->addable) agen(n, &src); else gmove(&tsrc, &src); if(res->op == ONAME) gvardef(res); if(res->addable) agen(res, &dst); else gmove(&tdst, &dst); c = w % 4; // bytes q = w / 4; // doublewords // if we are copying forward on the stack and // the src and dst overlap, then reverse direction if(osrc < odst && odst < osrc+w) { // reverse direction gins(ASTD, N, N); // set direction flag if(c > 0) { gconreg(AADDL, w-1, D_SI); gconreg(AADDL, w-1, D_DI); gconreg(AMOVL, c, D_CX); gins(AREP, N, N); // repeat gins(AMOVSB, N, N); // MOVB *(SI)-,*(DI)- } if(q > 0) { if(c > 0) { gconreg(AADDL, -3, D_SI); gconreg(AADDL, -3, D_DI); } else { gconreg(AADDL, w-4, D_SI); gconreg(AADDL, w-4, D_DI); } gconreg(AMOVL, q, D_CX); gins(AREP, N, N); // repeat gins(AMOVSL, N, N); // MOVL *(SI)-,*(DI)- } // we leave with the flag clear gins(ACLD, N, N); } else { gins(ACLD, N, N); // paranoia. TODO(rsc): remove? // normal direction if(q > 128 || (q >= 4 && nacl)) { gconreg(AMOVL, q, D_CX); gins(AREP, N, N); // repeat gins(AMOVSL, N, N); // MOVL *(SI)+,*(DI)+ } else if(q >= 4) { p = gins(ADUFFCOPY, N, N); p->to.type = D_ADDR; p->to.sym = linksym(pkglookup("duffcopy", runtimepkg)); // 10 and 128 = magic constants: see ../../pkg/runtime/asm_386.s p->to.offset = 10*(128-q); } else while(q > 0) { gins(AMOVSL, N, N); // MOVL *(SI)+,*(DI)+ q--; } while(c > 0) { gins(AMOVSB, N, N); // MOVB *(SI)+,*(DI)+ c--; } } } static int cadable(Node *n) { if(!n->addable) { // dont know how it happens, // but it does return 0; } switch(n->op) { case ONAME: return 1; } return 0; } /* * copy a composite value by moving its individual components. * Slices, strings and interfaces are supported. * nr is N when assigning a zero value. * return 1 if can do, 0 if can't. */ int componentgen(Node *nr, Node *nl) { Node nodl, nodr; int freel, freer; freel = 0; freer = 0; switch(nl->type->etype) { default: goto no; case TARRAY: if(!isslice(nl->type)) goto no; case TSTRING: case TINTER: break; } nodl = *nl; if(!cadable(nl)) { if(nr == N || !cadable(nr)) goto no; igen(nl, &nodl, N); freel = 1; } if(nr != N) { nodr = *nr; if(!cadable(nr)) { igen(nr, &nodr, N); freer = 1; } } // nl and nr are 'cadable' which basically means they are names (variables) now. // If they are the same variable, don't generate any code, because the // VARDEF we generate will mark the old value as dead incorrectly. // (And also the assignments are useless.) if(nr != N && nl->op == ONAME && nr->op == ONAME && nl == nr) goto yes; switch(nl->type->etype) { case TARRAY: if(nl->op == ONAME) gvardef(nl); nodl.xoffset += Array_array; nodl.type = ptrto(nl->type->type); if(nr != N) { nodr.xoffset += Array_array; nodr.type = nodl.type; } else nodconst(&nodr, nodl.type, 0); gmove(&nodr, &nodl); nodl.xoffset += Array_nel-Array_array; nodl.type = types[TUINT32]; if(nr != N) { nodr.xoffset += Array_nel-Array_array; nodr.type = nodl.type; } else nodconst(&nodr, nodl.type, 0); gmove(&nodr, &nodl); nodl.xoffset += Array_cap-Array_nel; nodl.type = types[TUINT32]; if(nr != N) { nodr.xoffset += Array_cap-Array_nel; nodr.type = nodl.type; } else nodconst(&nodr, nodl.type, 0); gmove(&nodr, &nodl); goto yes; case TSTRING: if(nl->op == ONAME) gvardef(nl); nodl.xoffset += Array_array; nodl.type = ptrto(types[TUINT8]); if(nr != N) { nodr.xoffset += Array_array; nodr.type = nodl.type; } else nodconst(&nodr, nodl.type, 0); gmove(&nodr, &nodl); nodl.xoffset += Array_nel-Array_array; nodl.type = types[TUINT32]; if(nr != N) { nodr.xoffset += Array_nel-Array_array; nodr.type = nodl.type; } else nodconst(&nodr, nodl.type, 0); gmove(&nodr, &nodl); goto yes; case TINTER: if(nl->op == ONAME) gvardef(nl); nodl.xoffset += Array_array; nodl.type = ptrto(types[TUINT8]); if(nr != N) { nodr.xoffset += Array_array; nodr.type = nodl.type; } else nodconst(&nodr, nodl.type, 0); gmove(&nodr, &nodl); nodl.xoffset += Array_nel-Array_array; nodl.type = ptrto(types[TUINT8]); if(nr != N) { nodr.xoffset += Array_nel-Array_array; nodr.type = nodl.type; } else nodconst(&nodr, nodl.type, 0); gmove(&nodr, &nodl); goto yes; } no: if(freer) regfree(&nodr); if(freel) regfree(&nodl); return 0; yes: if(freer) regfree(&nodr); if(freel) regfree(&nodl); return 1; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8g/cgen64.c������������������������������������������������������������������������������0100644�0000000�0000000�00000025624�12412656734�014607� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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. #include #include #include "gg.h" /* * attempt to generate 64-bit * res = n * return 1 on success, 0 if op not handled. */ void cgen64(Node *n, Node *res) { Node t1, t2, ax, dx, cx, ex, fx, *l, *r; Node lo1, lo2, hi1, hi2; Prog *p1, *p2; uint64 v; uint32 lv, hv; if(res->op != OINDREG && res->op != ONAME) { dump("n", n); dump("res", res); fatal("cgen64 %O of %O", n->op, res->op); } switch(n->op) { default: fatal("cgen64 %O", n->op); case OMINUS: cgen(n->left, res); split64(res, &lo1, &hi1); gins(ANEGL, N, &lo1); gins(AADCL, ncon(0), &hi1); gins(ANEGL, N, &hi1); splitclean(); return; case OCOM: cgen(n->left, res); split64(res, &lo1, &hi1); gins(ANOTL, N, &lo1); gins(ANOTL, N, &hi1); splitclean(); return; case OADD: case OSUB: case OMUL: case OLROT: case OLSH: case ORSH: case OAND: case OOR: case OXOR: // binary operators. // common setup below. break; } l = n->left; r = n->right; if(!l->addable) { tempname(&t1, l->type); cgen(l, &t1); l = &t1; } if(r != N && !r->addable) { tempname(&t2, r->type); cgen(r, &t2); r = &t2; } nodreg(&ax, types[TINT32], D_AX); nodreg(&cx, types[TINT32], D_CX); nodreg(&dx, types[TINT32], D_DX); // Setup for binary operation. split64(l, &lo1, &hi1); if(is64(r->type)) split64(r, &lo2, &hi2); // Do op. Leave result in DX:AX. switch(n->op) { case OADD: // TODO: Constants gins(AMOVL, &lo1, &ax); gins(AMOVL, &hi1, &dx); gins(AADDL, &lo2, &ax); gins(AADCL, &hi2, &dx); break; case OSUB: // TODO: Constants. gins(AMOVL, &lo1, &ax); gins(AMOVL, &hi1, &dx); gins(ASUBL, &lo2, &ax); gins(ASBBL, &hi2, &dx); break; case OMUL: // let's call the next two EX and FX. regalloc(&ex, types[TPTR32], N); regalloc(&fx, types[TPTR32], N); // load args into DX:AX and EX:CX. gins(AMOVL, &lo1, &ax); gins(AMOVL, &hi1, &dx); gins(AMOVL, &lo2, &cx); gins(AMOVL, &hi2, &ex); // if DX and EX are zero, use 32 x 32 -> 64 unsigned multiply. gins(AMOVL, &dx, &fx); gins(AORL, &ex, &fx); p1 = gbranch(AJNE, T, 0); gins(AMULL, &cx, N); // implicit &ax p2 = gbranch(AJMP, T, 0); patch(p1, pc); // full 64x64 -> 64, from 32x32 -> 64. gins(AIMULL, &cx, &dx); gins(AMOVL, &ax, &fx); gins(AIMULL, &ex, &fx); gins(AADDL, &dx, &fx); gins(AMOVL, &cx, &dx); gins(AMULL, &dx, N); // implicit &ax gins(AADDL, &fx, &dx); patch(p2, pc); regfree(&ex); regfree(&fx); break; case OLROT: // We only rotate by a constant c in [0,64). // if c >= 32: // lo, hi = hi, lo // c -= 32 // if c == 0: // no-op // else: // t = hi // shld hi:lo, c // shld lo:t, c v = mpgetfix(r->val.u.xval); if(v >= 32) { // reverse during load to do the first 32 bits of rotate v -= 32; gins(AMOVL, &lo1, &dx); gins(AMOVL, &hi1, &ax); } else { gins(AMOVL, &lo1, &ax); gins(AMOVL, &hi1, &dx); } if(v == 0) { // done } else { gins(AMOVL, &dx, &cx); p1 = gins(ASHLL, ncon(v), &dx); p1->from.index = D_AX; // double-width shift p1->from.scale = 0; p1 = gins(ASHLL, ncon(v), &ax); p1->from.index = D_CX; // double-width shift p1->from.scale = 0; } break; case OLSH: if(r->op == OLITERAL) { v = mpgetfix(r->val.u.xval); if(v >= 64) { if(is64(r->type)) splitclean(); splitclean(); split64(res, &lo2, &hi2); gins(AMOVL, ncon(0), &lo2); gins(AMOVL, ncon(0), &hi2); splitclean(); goto out; } if(v >= 32) { if(is64(r->type)) splitclean(); split64(res, &lo2, &hi2); gmove(&lo1, &hi2); if(v > 32) { gins(ASHLL, ncon(v - 32), &hi2); } gins(AMOVL, ncon(0), &lo2); splitclean(); splitclean(); goto out; } // general shift gins(AMOVL, &lo1, &ax); gins(AMOVL, &hi1, &dx); p1 = gins(ASHLL, ncon(v), &dx); p1->from.index = D_AX; // double-width shift p1->from.scale = 0; gins(ASHLL, ncon(v), &ax); break; } // load value into DX:AX. gins(AMOVL, &lo1, &ax); gins(AMOVL, &hi1, &dx); // load shift value into register. // if high bits are set, zero value. p1 = P; if(is64(r->type)) { gins(ACMPL, &hi2, ncon(0)); p1 = gbranch(AJNE, T, +1); gins(AMOVL, &lo2, &cx); } else { cx.type = types[TUINT32]; gmove(r, &cx); } // if shift count is >=64, zero value gins(ACMPL, &cx, ncon(64)); p2 = gbranch(optoas(OLT, types[TUINT32]), T, +1); if(p1 != P) patch(p1, pc); gins(AXORL, &dx, &dx); gins(AXORL, &ax, &ax); patch(p2, pc); // if shift count is >= 32, zero low. gins(ACMPL, &cx, ncon(32)); p1 = gbranch(optoas(OLT, types[TUINT32]), T, +1); gins(AMOVL, &ax, &dx); gins(ASHLL, &cx, &dx); // SHLL only uses bottom 5 bits of count gins(AXORL, &ax, &ax); p2 = gbranch(AJMP, T, 0); patch(p1, pc); // general shift p1 = gins(ASHLL, &cx, &dx); p1->from.index = D_AX; // double-width shift p1->from.scale = 0; gins(ASHLL, &cx, &ax); patch(p2, pc); break; case ORSH: if(r->op == OLITERAL) { v = mpgetfix(r->val.u.xval); if(v >= 64) { if(is64(r->type)) splitclean(); splitclean(); split64(res, &lo2, &hi2); if(hi1.type->etype == TINT32) { gmove(&hi1, &lo2); gins(ASARL, ncon(31), &lo2); gmove(&hi1, &hi2); gins(ASARL, ncon(31), &hi2); } else { gins(AMOVL, ncon(0), &lo2); gins(AMOVL, ncon(0), &hi2); } splitclean(); goto out; } if(v >= 32) { if(is64(r->type)) splitclean(); split64(res, &lo2, &hi2); gmove(&hi1, &lo2); if(v > 32) gins(optoas(ORSH, hi1.type), ncon(v-32), &lo2); if(hi1.type->etype == TINT32) { gmove(&hi1, &hi2); gins(ASARL, ncon(31), &hi2); } else gins(AMOVL, ncon(0), &hi2); splitclean(); splitclean(); goto out; } // general shift gins(AMOVL, &lo1, &ax); gins(AMOVL, &hi1, &dx); p1 = gins(ASHRL, ncon(v), &ax); p1->from.index = D_DX; // double-width shift p1->from.scale = 0; gins(optoas(ORSH, hi1.type), ncon(v), &dx); break; } // load value into DX:AX. gins(AMOVL, &lo1, &ax); gins(AMOVL, &hi1, &dx); // load shift value into register. // if high bits are set, zero value. p1 = P; if(is64(r->type)) { gins(ACMPL, &hi2, ncon(0)); p1 = gbranch(AJNE, T, +1); gins(AMOVL, &lo2, &cx); } else { cx.type = types[TUINT32]; gmove(r, &cx); } // if shift count is >=64, zero or sign-extend value gins(ACMPL, &cx, ncon(64)); p2 = gbranch(optoas(OLT, types[TUINT32]), T, +1); if(p1 != P) patch(p1, pc); if(hi1.type->etype == TINT32) { gins(ASARL, ncon(31), &dx); gins(AMOVL, &dx, &ax); } else { gins(AXORL, &dx, &dx); gins(AXORL, &ax, &ax); } patch(p2, pc); // if shift count is >= 32, sign-extend hi. gins(ACMPL, &cx, ncon(32)); p1 = gbranch(optoas(OLT, types[TUINT32]), T, +1); gins(AMOVL, &dx, &ax); if(hi1.type->etype == TINT32) { gins(ASARL, &cx, &ax); // SARL only uses bottom 5 bits of count gins(ASARL, ncon(31), &dx); } else { gins(ASHRL, &cx, &ax); gins(AXORL, &dx, &dx); } p2 = gbranch(AJMP, T, 0); patch(p1, pc); // general shift p1 = gins(ASHRL, &cx, &ax); p1->from.index = D_DX; // double-width shift p1->from.scale = 0; gins(optoas(ORSH, hi1.type), &cx, &dx); patch(p2, pc); break; case OXOR: case OAND: case OOR: // make constant the right side (it usually is anyway). if(lo1.op == OLITERAL) { nswap(&lo1, &lo2); nswap(&hi1, &hi2); } if(lo2.op == OLITERAL) { // special cases for constants. lv = mpgetfix(lo2.val.u.xval); hv = mpgetfix(hi2.val.u.xval); splitclean(); // right side split64(res, &lo2, &hi2); switch(n->op) { case OXOR: gmove(&lo1, &lo2); gmove(&hi1, &hi2); switch(lv) { case 0: break; case 0xffffffffu: gins(ANOTL, N, &lo2); break; default: gins(AXORL, ncon(lv), &lo2); break; } switch(hv) { case 0: break; case 0xffffffffu: gins(ANOTL, N, &hi2); break; default: gins(AXORL, ncon(hv), &hi2); break; } break; case OAND: switch(lv) { case 0: gins(AMOVL, ncon(0), &lo2); break; default: gmove(&lo1, &lo2); if(lv != 0xffffffffu) gins(AANDL, ncon(lv), &lo2); break; } switch(hv) { case 0: gins(AMOVL, ncon(0), &hi2); break; default: gmove(&hi1, &hi2); if(hv != 0xffffffffu) gins(AANDL, ncon(hv), &hi2); break; } break; case OOR: switch(lv) { case 0: gmove(&lo1, &lo2); break; case 0xffffffffu: gins(AMOVL, ncon(0xffffffffu), &lo2); break; default: gmove(&lo1, &lo2); gins(AORL, ncon(lv), &lo2); break; } switch(hv) { case 0: gmove(&hi1, &hi2); break; case 0xffffffffu: gins(AMOVL, ncon(0xffffffffu), &hi2); break; default: gmove(&hi1, &hi2); gins(AORL, ncon(hv), &hi2); break; } break; } splitclean(); splitclean(); goto out; } gins(AMOVL, &lo1, &ax); gins(AMOVL, &hi1, &dx); gins(optoas(n->op, lo1.type), &lo2, &ax); gins(optoas(n->op, lo1.type), &hi2, &dx); break; } if(is64(r->type)) splitclean(); splitclean(); split64(res, &lo1, &hi1); gins(AMOVL, &ax, &lo1); gins(AMOVL, &dx, &hi1); splitclean(); out:; } /* * generate comparison of nl, nr, both 64-bit. * nl is memory; nr is constant or memory. */ void cmp64(Node *nl, Node *nr, int op, int likely, Prog *to) { Node lo1, hi1, lo2, hi2, rr; Prog *br; Type *t; split64(nl, &lo1, &hi1); split64(nr, &lo2, &hi2); // compare most significant word; // if they differ, we're done. t = hi1.type; if(nl->op == OLITERAL || nr->op == OLITERAL) gins(ACMPL, &hi1, &hi2); else { regalloc(&rr, types[TINT32], N); gins(AMOVL, &hi1, &rr); gins(ACMPL, &rr, &hi2); regfree(&rr); } br = P; switch(op) { default: fatal("cmp64 %O %T", op, t); case OEQ: // cmp hi // jne L // cmp lo // jeq to // L: br = gbranch(AJNE, T, -likely); break; case ONE: // cmp hi // jne to // cmp lo // jne to patch(gbranch(AJNE, T, likely), to); break; case OGE: case OGT: // cmp hi // jgt to // jlt L // cmp lo // jge to (or jgt to) // L: patch(gbranch(optoas(OGT, t), T, likely), to); br = gbranch(optoas(OLT, t), T, -likely); break; case OLE: case OLT: // cmp hi // jlt to // jgt L // cmp lo // jle to (or jlt to) // L: patch(gbranch(optoas(OLT, t), T, likely), to); br = gbranch(optoas(OGT, t), T, -likely); break; } // compare least significant word t = lo1.type; if(nl->op == OLITERAL || nr->op == OLITERAL) gins(ACMPL, &lo1, &lo2); else { regalloc(&rr, types[TINT32], N); gins(AMOVL, &lo1, &rr); gins(ACMPL, &rr, &lo2); regfree(&rr); } // jump again patch(gbranch(optoas(op, t), T, likely), to); // point first branch down here if appropriate if(br != P) patch(br, pc); splitclean(); splitclean(); } ������������������������������������������������������������������������������������������������������������go/src/cmd/8g/doc.go��������������������������������������������������������������������������������0100644�0000000�0000000�00000000561�12412656734�014442� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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 ignore /* 8g is the version of the gc compiler for the x86. The $GOARCH for these tools is 386. It reads .go files and outputs .8 files. The flags are documented in ../gc/doc.go. */ package main �����������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8g/galign.c������������������������������������������������������������������������������0100644�0000000�0000000�00000001416�12412656737�014756� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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. #include #include #include "gg.h" int thechar = '8'; char* thestring = "386"; LinkArch* thelinkarch = &link386; void linkarchinit(void) { } vlong MAXWIDTH = (1LL<<32) - 1; /* * go declares several platform-specific type aliases: * int, uint, float, and uintptr */ Typedef typedefs[] = { "int", TINT, TINT32, "uint", TUINT, TUINT32, "uintptr", TUINTPTR, TUINT32, 0 }; void betypeinit(void) { widthptr = 4; widthint = 4; widthreg = 4; zprog.link = P; zprog.as = AGOK; zprog.from.type = D_NONE; zprog.from.index = D_NONE; zprog.from.scale = 0; zprog.to = zprog.from; listinit8(); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8g/gg.h����������������������������������������������������������������������������������0100644�0000000�0000000�00000005602�12412656737�014120� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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. #ifndef EXTERN #define EXTERN extern #endif #include "../gc/go.h" #include "../8l/8.out.h" #define TEXTFLAG from.scale // foptoas flags enum { Frev = 1<<0, Fpop = 1<<1, Fpop2 = 1<<2, }; EXTERN int32 dynloc; EXTERN uchar reg[D_NONE]; EXTERN int32 pcloc; // instruction counter EXTERN Strlit emptystring; EXTERN Prog zprog; EXTERN Node* newproc; EXTERN Node* deferproc; EXTERN Node* deferreturn; EXTERN Node* panicindex; EXTERN Node* panicslice; EXTERN Node* panicdiv; EXTERN Node* throwreturn; extern uint32 unmappedzero; /* * ggen.c */ void compile(Node*); void gen(Node*); Node* lookdot(Node*, Node*, int); void cgen_as(Node*, Node*); void cgen_callmeth(Node*, int); void cgen_callinter(Node*, Node*, int); void cgen_proc(Node*, int); void cgen_callret(Node*, Node*); void cgen_div(int, Node*, Node*, Node*); void cgen_bmul(int, Node*, Node*, Node*); void cgen_hmul(Node*, Node*, Node*); void cgen_shift(int, int, Node*, Node*, Node*); void cgen_float(Node*, Node*); void bgen_float(Node *n, int true, int likely, Prog *to); void cgen_dcl(Node*); int needconvert(Type*, Type*); void genconv(Type*, Type*); void allocparams(void); void checklabels(void); void ginscall(Node*, int); /* * cgen.c */ void agen(Node*, Node*); void igen(Node*, Node*, Node*); vlong fieldoffset(Type*, Node*); void sgen(Node*, Node*, int64); void gmove(Node*, Node*); Prog* gins(int, Node*, Node*); int samaddr(Node*, Node*); void naddr(Node*, Addr*, int); void cgen_aret(Node*, Node*); Node* ncon(uint32); void mgen(Node*, Node*, Node*); void mfree(Node*); int componentgen(Node*, Node*); /* * cgen64.c */ void cmp64(Node*, Node*, int, int, Prog*); void cgen64(Node*, Node*); /* * gsubr.c */ void clearp(Prog*); Prog* gbranch(int, Type*, int); Prog* prog(int); void gconv(int, int); int conv2pt(Type*); vlong convvtox(vlong, int); void fnparam(Type*, int, int); Prog* gop(int, Node*, Node*, Node*); int optoas(int, Type*); int foptoas(int, Type*, int); void ginit(void); void gclean(void); void regalloc(Node*, Type*, Node*); void regfree(Node*); Node* nodarg(Type*, int); void nodreg(Node*, Type*, int); void nodindreg(Node*, Type*, int); void nodconst(Node*, Type*, int64); void gconreg(int, vlong, int); void buildtxt(void); Plist* newplist(void); int isfat(Type*); void sudoclean(void); int sudoaddable(int, Node*, Addr*); int dotaddable(Node*, Node*); void afunclit(Addr*, Node*); void split64(Node*, Node*, Node*); void splitclean(void); void nswap(Node*, Node*); void gtrack(Sym*); void gargsize(int32); /* * cplx.c */ int complexop(Node*, Node*); void complexmove(Node*, Node*); void complexgen(Node*, Node*); /* * gobj.c */ void datastring(char*, int, Addr*); void datagostring(Strlit*, Addr*); /* * list.c */ void listinit(void); void zaddr(Biobuf*, Addr*, int, int); ������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8g/ggen.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000064250�12412656737�014442� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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. #undef EXTERN #define EXTERN #include #include #include "gg.h" #include "opt.h" static Prog *appendpp(Prog*, int, int, vlong, int, vlong); static Prog *zerorange(Prog *p, vlong frame, vlong lo, vlong hi, uint32 *ax); void defframe(Prog *ptxt) { uint32 frame, ax; Prog *p; vlong lo, hi; NodeList *l; Node *n; // fill in argument size ptxt->to.offset2 = rnd(curfn->type->argwid, widthptr); // fill in final stack size frame = rnd(stksize+maxarg, widthptr); ptxt->to.offset = frame; // insert code to zero ambiguously live variables // so that the garbage collector only sees initialized values // when it looks for pointers. p = ptxt; hi = 0; lo = hi; ax = 0; for(l=curfn->dcl; l != nil; l = l->next) { n = l->n; if(!n->needzero) continue; if(n->class != PAUTO) fatal("needzero class %d", n->class); if(n->type->width % widthptr != 0 || n->xoffset % widthptr != 0 || n->type->width == 0) fatal("var %lN has size %d offset %d", n, (int)n->type->width, (int)n->xoffset); if(lo != hi && n->xoffset + n->type->width == lo - 2*widthptr) { // merge with range we already have lo = n->xoffset; continue; } // zero old range p = zerorange(p, frame, lo, hi, &ax); // set new range hi = n->xoffset + n->type->width; lo = n->xoffset; } // zero final range zerorange(p, frame, lo, hi, &ax); } static Prog* zerorange(Prog *p, vlong frame, vlong lo, vlong hi, uint32 *ax) { vlong cnt, i; cnt = hi - lo; if(cnt == 0) return p; if(*ax == 0) { p = appendpp(p, AMOVL, D_CONST, 0, D_AX, 0); *ax = 1; } if(cnt <= 4*widthreg) { for(i = 0; i < cnt; i += widthreg) { p = appendpp(p, AMOVL, D_AX, 0, D_SP+D_INDIR, frame+lo+i); } } else if(!nacl && cnt <= 128*widthreg) { p = appendpp(p, ALEAL, D_SP+D_INDIR, frame+lo, D_DI, 0); p = appendpp(p, ADUFFZERO, D_NONE, 0, D_ADDR, 1*(128-cnt/widthreg)); p->to.sym = linksym(pkglookup("duffzero", runtimepkg)); } else { p = appendpp(p, AMOVL, D_CONST, cnt/widthreg, D_CX, 0); p = appendpp(p, ALEAL, D_SP+D_INDIR, frame+lo, D_DI, 0); p = appendpp(p, AREP, D_NONE, 0, D_NONE, 0); p = appendpp(p, ASTOSL, D_NONE, 0, D_NONE, 0); } return p; } static Prog* appendpp(Prog *p, int as, int ftype, vlong foffset, int ttype, vlong toffset) { Prog *q; q = mal(sizeof(*q)); clearp(q); q->as = as; q->lineno = p->lineno; q->from.type = ftype; q->from.offset = foffset; q->to.type = ttype; q->to.offset = toffset; q->link = p->link; p->link = q; return q; } // Sweep the prog list to mark any used nodes. void markautoused(Prog* p) { for (; p; p = p->link) { if (p->as == ATYPE || p->as == AVARDEF || p->as == AVARKILL) continue; if (p->from.node) p->from.node->used = 1; if (p->to.node) p->to.node->used = 1; } } // Fixup instructions after allocauto (formerly compactframe) has moved all autos around. void fixautoused(Prog* p) { Prog **lp; for (lp=&p; (p=*lp) != P; ) { if (p->as == ATYPE && p->from.node && p->from.type == D_AUTO && !p->from.node->used) { *lp = p->link; continue; } if ((p->as == AVARDEF || p->as == AVARKILL) && p->to.node && !p->to.node->used) { // Cannot remove VARDEF instruction, because - unlike TYPE handled above - // VARDEFs are interspersed with other code, and a jump might be using the // VARDEF as a target. Replace with a no-op instead. A later pass will remove // the no-ops. p->to.type = D_NONE; p->to.node = N; p->as = ANOP; continue; } if (p->from.type == D_AUTO && p->from.node) p->from.offset += p->from.node->stkdelta; if (p->to.type == D_AUTO && p->to.node) p->to.offset += p->to.node->stkdelta; lp = &p->link; } } void clearfat(Node *nl) { uint32 w, c, q; Node n1; Prog *p; /* clear a fat object */ if(debug['g']) dump("\nclearfat", nl); w = nl->type->width; // Avoid taking the address for simple enough types. if(componentgen(N, nl)) return; c = w % 4; // bytes q = w / 4; // quads nodreg(&n1, types[tptr], D_DI); agen(nl, &n1); gconreg(AMOVL, 0, D_AX); if(q > 128 || (q >= 4 && nacl)) { gconreg(AMOVL, q, D_CX); gins(AREP, N, N); // repeat gins(ASTOSL, N, N); // STOL AL,*(DI)+ } else if(q >= 4) { p = gins(ADUFFZERO, N, N); p->to.type = D_ADDR; p->to.sym = linksym(pkglookup("duffzero", runtimepkg)); // 1 and 128 = magic constants: see ../../pkg/runtime/asm_386.s p->to.offset = 1*(128-q); } else while(q > 0) { gins(ASTOSL, N, N); // STOL AL,*(DI)+ q--; } while(c > 0) { gins(ASTOSB, N, N); // STOB AL,*(DI)+ c--; } } /* * generate: * call f * proc=-1 normal call but no return * proc=0 normal call * proc=1 goroutine run in new proc * proc=2 defer call save away stack * proc=3 normal call to C pointer (not Go func value) */ void ginscall(Node *f, int proc) { int32 arg; Prog *p; Node reg, r1, con; if(f->type != T) setmaxarg(f->type); arg = -1; // Most functions have a fixed-size argument block, so traceback uses that during unwind. // Not all, though: there are some variadic functions in package runtime, // and for those we emit call-specific metadata recorded by caller. // Reflect generates functions with variable argsize (see reflect.methodValueCall/makeFuncStub), // so we do this for all indirect calls as well. if(f->type != T && (f->sym == S || (f->sym != S && f->sym->pkg == runtimepkg) || proc == 1 || proc == 2)) { arg = f->type->argwid; if(proc == 1 || proc == 2) arg += 2*widthptr; } if(arg != -1) gargsize(arg); switch(proc) { default: fatal("ginscall: bad proc %d", proc); break; case 0: // normal call case -1: // normal call but no return if(f->op == ONAME && f->class == PFUNC) { if(f == deferreturn) { // Deferred calls will appear to be returning to // the CALL deferreturn(SB) that we are about to emit. // However, the stack trace code will show the line // of the instruction byte before the return PC. // To avoid that being an unrelated instruction, // insert an x86 NOP that we will have the right line number. // x86 NOP 0x90 is really XCHG AX, AX; use that description // because the NOP pseudo-instruction will be removed by // the linker. nodreg(®, types[TINT], D_AX); gins(AXCHGL, ®, ®); } p = gins(ACALL, N, f); afunclit(&p->to, f); if(proc == -1 || noreturn(p)) gins(AUNDEF, N, N); break; } nodreg(®, types[tptr], D_DX); nodreg(&r1, types[tptr], D_BX); gmove(f, ®); reg.op = OINDREG; gmove(®, &r1); reg.op = OREGISTER; gins(ACALL, ®, &r1); break; case 3: // normal call of c function pointer gins(ACALL, N, f); break; case 1: // call in new proc (go) case 2: // deferred call (defer) nodreg(®, types[TINT32], D_CX); gins(APUSHL, f, N); nodconst(&con, types[TINT32], argsize(f->type)); gins(APUSHL, &con, N); if(proc == 1) ginscall(newproc, 0); else ginscall(deferproc, 0); gins(APOPL, N, ®); gins(APOPL, N, ®); if(proc == 2) { nodreg(®, types[TINT64], D_AX); gins(ATESTL, ®, ®); p = gbranch(AJEQ, T, +1); cgen_ret(N); patch(p, pc); } break; } if(arg != -1) gargsize(-1); } /* * n is call to interface method. * generate res = n. */ void cgen_callinter(Node *n, Node *res, int proc) { Node *i, *f; Node tmpi, nodi, nodo, nodr, nodsp; i = n->left; if(i->op != ODOTINTER) fatal("cgen_callinter: not ODOTINTER %O", i->op); f = i->right; // field if(f->op != ONAME) fatal("cgen_callinter: not ONAME %O", f->op); i = i->left; // interface if(!i->addable) { tempname(&tmpi, i->type); cgen(i, &tmpi); i = &tmpi; } genlist(n->list); // assign the args // i is now addable, prepare an indirected // register to hold its address. igen(i, &nodi, res); // REG = &inter nodindreg(&nodsp, types[tptr], D_SP); nodi.type = types[tptr]; nodi.xoffset += widthptr; cgen(&nodi, &nodsp); // 0(SP) = 4(REG) -- i.data regalloc(&nodo, types[tptr], res); nodi.type = types[tptr]; nodi.xoffset -= widthptr; cgen(&nodi, &nodo); // REG = 0(REG) -- i.tab regfree(&nodi); regalloc(&nodr, types[tptr], &nodo); if(n->left->xoffset == BADWIDTH) fatal("cgen_callinter: badwidth"); cgen_checknil(&nodo); nodo.op = OINDREG; nodo.xoffset = n->left->xoffset + 3*widthptr + 8; if(proc == 0) { // plain call: use direct c function pointer - more efficient cgen(&nodo, &nodr); // REG = 20+offset(REG) -- i.tab->fun[f] proc = 3; } else { // go/defer. generate go func value. gins(ALEAL, &nodo, &nodr); // REG = &(20+offset(REG)) -- i.tab->fun[f] } nodr.type = n->left->type; ginscall(&nodr, proc); regfree(&nodr); regfree(&nodo); } /* * generate function call; * proc=0 normal call * proc=1 goroutine run in new proc * proc=2 defer call save away stack */ void cgen_call(Node *n, int proc) { Type *t; Node nod, afun; if(n == N) return; if(n->left->ullman >= UINF) { // if name involves a fn call // precompute the address of the fn tempname(&afun, types[tptr]); cgen(n->left, &afun); } genlist(n->list); // assign the args t = n->left->type; // call tempname pointer if(n->left->ullman >= UINF) { regalloc(&nod, types[tptr], N); cgen_as(&nod, &afun); nod.type = t; ginscall(&nod, proc); regfree(&nod); return; } // call pointer if(n->left->op != ONAME || n->left->class != PFUNC) { regalloc(&nod, types[tptr], N); cgen_as(&nod, n->left); nod.type = t; ginscall(&nod, proc); regfree(&nod); return; } // call direct n->left->method = 1; ginscall(n->left, proc); } /* * call to n has already been generated. * generate: * res = return value from call. */ void cgen_callret(Node *n, Node *res) { Node nod; Type *fp, *t; Iter flist; t = n->left->type; if(t->etype == TPTR32 || t->etype == TPTR64) t = t->type; fp = structfirst(&flist, getoutarg(t)); if(fp == T) fatal("cgen_callret: nil"); memset(&nod, 0, sizeof(nod)); nod.op = OINDREG; nod.val.u.reg = D_SP; nod.addable = 1; nod.xoffset = fp->width; nod.type = fp->type; cgen_as(res, &nod); } /* * call to n has already been generated. * generate: * res = &return value from call. */ void cgen_aret(Node *n, Node *res) { Node nod1, nod2; Type *fp, *t; Iter flist; t = n->left->type; if(isptr[t->etype]) t = t->type; fp = structfirst(&flist, getoutarg(t)); if(fp == T) fatal("cgen_aret: nil"); memset(&nod1, 0, sizeof(nod1)); nod1.op = OINDREG; nod1.val.u.reg = D_SP; nod1.addable = 1; nod1.xoffset = fp->width; nod1.type = fp->type; if(res->op != OREGISTER) { regalloc(&nod2, types[tptr], res); gins(ALEAL, &nod1, &nod2); gins(AMOVL, &nod2, res); regfree(&nod2); } else gins(ALEAL, &nod1, res); } /* * generate return. * n->left is assignments to return values. */ void cgen_ret(Node *n) { Prog *p; if(n != N) genlist(n->list); // copy out args if(hasdefer) ginscall(deferreturn, 0); genlist(curfn->exit); p = gins(ARET, N, N); if(n != N && n->op == ORETJMP) { p->to.type = D_EXTERN; p->to.sym = linksym(n->left->sym); } } /* * generate += *= etc. */ void cgen_asop(Node *n) { Node n1, n2, n3, n4; Node *nl, *nr; Prog *p1; Addr addr; int a; nl = n->left; nr = n->right; if(nr->ullman >= UINF && nl->ullman >= UINF) { tempname(&n1, nr->type); cgen(nr, &n1); n2 = *n; n2.right = &n1; cgen_asop(&n2); goto ret; } if(!isint[nl->type->etype]) goto hard; if(!isint[nr->type->etype]) goto hard; if(is64(nl->type) || is64(nr->type)) goto hard; switch(n->etype) { case OADD: if(smallintconst(nr)) if(mpgetfix(nr->val.u.xval) == 1) { a = optoas(OINC, nl->type); if(nl->addable) { gins(a, N, nl); goto ret; } if(sudoaddable(a, nl, &addr)) { p1 = gins(a, N, N); p1->to = addr; sudoclean(); goto ret; } } break; case OSUB: if(smallintconst(nr)) if(mpgetfix(nr->val.u.xval) == 1) { a = optoas(ODEC, nl->type); if(nl->addable) { gins(a, N, nl); goto ret; } if(sudoaddable(a, nl, &addr)) { p1 = gins(a, N, N); p1->to = addr; sudoclean(); goto ret; } } break; } switch(n->etype) { case OADD: case OSUB: case OXOR: case OAND: case OOR: a = optoas(n->etype, nl->type); if(nl->addable) { if(smallintconst(nr)) { gins(a, nr, nl); goto ret; } regalloc(&n2, nr->type, N); cgen(nr, &n2); gins(a, &n2, nl); regfree(&n2); goto ret; } if(nr->ullman < UINF) if(sudoaddable(a, nl, &addr)) { if(smallintconst(nr)) { p1 = gins(a, nr, N); p1->to = addr; sudoclean(); goto ret; } regalloc(&n2, nr->type, N); cgen(nr, &n2); p1 = gins(a, &n2, N); p1->to = addr; regfree(&n2); sudoclean(); goto ret; } } hard: n2.op = 0; n1.op = 0; if(nr->ullman >= nl->ullman || nl->addable) { mgen(nr, &n2, N); nr = &n2; } else { tempname(&n2, nr->type); cgen(nr, &n2); nr = &n2; } if(!nl->addable) { igen(nl, &n1, N); nl = &n1; } n3 = *n; n3.left = nl; n3.right = nr; n3.op = n->etype; mgen(&n3, &n4, N); gmove(&n4, nl); if(n1.op) regfree(&n1); mfree(&n2); mfree(&n4); ret: ; } int samereg(Node *a, Node *b) { if(a->op != OREGISTER) return 0; if(b->op != OREGISTER) return 0; if(a->val.u.reg != b->val.u.reg) return 0; return 1; } /* * generate division. * caller must set: * ax = allocated AX register * dx = allocated DX register * generates one of: * res = nl / nr * res = nl % nr * according to op. */ void dodiv(int op, Node *nl, Node *nr, Node *res, Node *ax, Node *dx) { int check; Node n1, t1, t2, t3, t4, n4, nz; Type *t, *t0; Prog *p1, *p2; // Have to be careful about handling // most negative int divided by -1 correctly. // The hardware will trap. // Also the byte divide instruction needs AH, // which we otherwise don't have to deal with. // Easiest way to avoid for int8, int16: use int32. // For int32 and int64, use explicit test. // Could use int64 hw for int32. t = nl->type; t0 = t; check = 0; if(issigned[t->etype]) { check = 1; if(isconst(nl, CTINT) && mpgetfix(nl->val.u.xval) != -1LL<<(t->width*8-1)) check = 0; else if(isconst(nr, CTINT) && mpgetfix(nr->val.u.xval) != -1) check = 0; } if(t->width < 4) { if(issigned[t->etype]) t = types[TINT32]; else t = types[TUINT32]; check = 0; } tempname(&t1, t); tempname(&t2, t); if(t0 != t) { tempname(&t3, t0); tempname(&t4, t0); cgen(nl, &t3); cgen(nr, &t4); // Convert. gmove(&t3, &t1); gmove(&t4, &t2); } else { cgen(nl, &t1); cgen(nr, &t2); } if(!samereg(ax, res) && !samereg(dx, res)) regalloc(&n1, t, res); else regalloc(&n1, t, N); gmove(&t2, &n1); gmove(&t1, ax); p2 = P; if(nacl) { // Native Client does not relay the divide-by-zero trap // to the executing program, so we must insert a check // for ourselves. nodconst(&n4, t, 0); gins(optoas(OCMP, t), &n1, &n4); p1 = gbranch(optoas(ONE, t), T, +1); if(panicdiv == N) panicdiv = sysfunc("panicdivide"); ginscall(panicdiv, -1); patch(p1, pc); } if(check) { nodconst(&n4, t, -1); gins(optoas(OCMP, t), &n1, &n4); p1 = gbranch(optoas(ONE, t), T, +1); if(op == ODIV) { // a / (-1) is -a. gins(optoas(OMINUS, t), N, ax); gmove(ax, res); } else { // a % (-1) is 0. nodconst(&n4, t, 0); gmove(&n4, res); } p2 = gbranch(AJMP, T, 0); patch(p1, pc); } if(!issigned[t->etype]) { nodconst(&nz, t, 0); gmove(&nz, dx); } else gins(optoas(OEXTEND, t), N, N); gins(optoas(op, t), &n1, N); regfree(&n1); if(op == ODIV) gmove(ax, res); else gmove(dx, res); if(check) patch(p2, pc); } static void savex(int dr, Node *x, Node *oldx, Node *res, Type *t) { int r; r = reg[dr]; nodreg(x, types[TINT32], dr); // save current ax and dx if they are live // and not the destination memset(oldx, 0, sizeof *oldx); if(r > 0 && !samereg(x, res)) { tempname(oldx, types[TINT32]); gmove(x, oldx); } regalloc(x, t, x); } static void restx(Node *x, Node *oldx) { regfree(x); if(oldx->op != 0) { x->type = types[TINT32]; gmove(oldx, x); } } /* * generate division according to op, one of: * res = nl / nr * res = nl % nr */ void cgen_div(int op, Node *nl, Node *nr, Node *res) { Node ax, dx, oldax, olddx; Type *t; if(is64(nl->type)) fatal("cgen_div %T", nl->type); if(issigned[nl->type->etype]) t = types[TINT32]; else t = types[TUINT32]; savex(D_AX, &ax, &oldax, res, t); savex(D_DX, &dx, &olddx, res, t); dodiv(op, nl, nr, res, &ax, &dx); restx(&dx, &olddx); restx(&ax, &oldax); } /* * generate shift according to op, one of: * res = nl << nr * res = nl >> nr */ void cgen_shift(int op, int bounded, Node *nl, Node *nr, Node *res) { Node n1, n2, nt, cx, oldcx, hi, lo; int a, w; Prog *p1, *p2; uvlong sc; if(nl->type->width > 4) fatal("cgen_shift %T", nl->type); w = nl->type->width * 8; a = optoas(op, nl->type); if(nr->op == OLITERAL) { tempname(&n2, nl->type); cgen(nl, &n2); regalloc(&n1, nl->type, res); gmove(&n2, &n1); sc = mpgetfix(nr->val.u.xval); if(sc >= nl->type->width*8) { // large shift gets 2 shifts by width-1 gins(a, ncon(w-1), &n1); gins(a, ncon(w-1), &n1); } else gins(a, nr, &n1); gmove(&n1, res); regfree(&n1); return; } memset(&oldcx, 0, sizeof oldcx); nodreg(&cx, types[TUINT32], D_CX); if(reg[D_CX] > 1 && !samereg(&cx, res)) { tempname(&oldcx, types[TUINT32]); gmove(&cx, &oldcx); } if(nr->type->width > 4) { tempname(&nt, nr->type); n1 = nt; } else { nodreg(&n1, types[TUINT32], D_CX); regalloc(&n1, nr->type, &n1); // to hold the shift type in CX } if(samereg(&cx, res)) regalloc(&n2, nl->type, N); else regalloc(&n2, nl->type, res); if(nl->ullman >= nr->ullman) { cgen(nl, &n2); cgen(nr, &n1); } else { cgen(nr, &n1); cgen(nl, &n2); } // test and fix up large shifts if(bounded) { if(nr->type->width > 4) { // delayed reg alloc nodreg(&n1, types[TUINT32], D_CX); regalloc(&n1, types[TUINT32], &n1); // to hold the shift type in CX split64(&nt, &lo, &hi); gmove(&lo, &n1); splitclean(); } } else { if(nr->type->width > 4) { // delayed reg alloc nodreg(&n1, types[TUINT32], D_CX); regalloc(&n1, types[TUINT32], &n1); // to hold the shift type in CX split64(&nt, &lo, &hi); gmove(&lo, &n1); gins(optoas(OCMP, types[TUINT32]), &hi, ncon(0)); p2 = gbranch(optoas(ONE, types[TUINT32]), T, +1); gins(optoas(OCMP, types[TUINT32]), &n1, ncon(w)); p1 = gbranch(optoas(OLT, types[TUINT32]), T, +1); splitclean(); patch(p2, pc); } else { gins(optoas(OCMP, nr->type), &n1, ncon(w)); p1 = gbranch(optoas(OLT, types[TUINT32]), T, +1); } if(op == ORSH && issigned[nl->type->etype]) { gins(a, ncon(w-1), &n2); } else { gmove(ncon(0), &n2); } patch(p1, pc); } gins(a, &n1, &n2); if(oldcx.op != 0) gmove(&oldcx, &cx); gmove(&n2, res); regfree(&n1); regfree(&n2); } /* * generate byte multiply: * res = nl * nr * there is no 2-operand byte multiply instruction so * we do a full-width multiplication and truncate afterwards. */ void cgen_bmul(int op, Node *nl, Node *nr, Node *res) { Node n1, n2, nt, *tmp; Type *t; int a; // copy from byte to full registers t = types[TUINT32]; if(issigned[nl->type->etype]) t = types[TINT32]; // largest ullman on left. if(nl->ullman < nr->ullman) { tmp = nl; nl = nr; nr = tmp; } tempname(&nt, nl->type); cgen(nl, &nt); regalloc(&n1, t, res); cgen(nr, &n1); regalloc(&n2, t, N); gmove(&nt, &n2); a = optoas(op, t); gins(a, &n2, &n1); regfree(&n2); gmove(&n1, res); regfree(&n1); } /* * generate high multiply: * res = (nl*nr) >> width */ void cgen_hmul(Node *nl, Node *nr, Node *res) { Type *t; int a; Node n1, n2, ax, dx; t = nl->type; a = optoas(OHMUL, t); // gen nl in n1. tempname(&n1, t); cgen(nl, &n1); // gen nr in n2. regalloc(&n2, t, res); cgen(nr, &n2); // multiply. nodreg(&ax, t, D_AX); gmove(&n2, &ax); gins(a, &n1, N); regfree(&n2); if(t->width == 1) { // byte multiply behaves differently. nodreg(&ax, t, D_AH); nodreg(&dx, t, D_DX); gmove(&ax, &dx); } nodreg(&dx, t, D_DX); gmove(&dx, res); } static void cgen_float387(Node *n, Node *res); static void cgen_floatsse(Node *n, Node *res); /* * generate floating-point operation. */ void cgen_float(Node *n, Node *res) { Node *nl; Node n1, n2; Prog *p1, *p2, *p3; nl = n->left; switch(n->op) { case OEQ: case ONE: case OLT: case OLE: case OGE: p1 = gbranch(AJMP, T, 0); p2 = pc; gmove(nodbool(1), res); p3 = gbranch(AJMP, T, 0); patch(p1, pc); bgen(n, 1, 0, p2); gmove(nodbool(0), res); patch(p3, pc); return; case OPLUS: cgen(nl, res); return; case OCONV: if(eqtype(n->type, nl->type) || noconv(n->type, nl->type)) { cgen(nl, res); return; } tempname(&n2, n->type); mgen(nl, &n1, res); gmove(&n1, &n2); gmove(&n2, res); mfree(&n1); return; } if(use_sse) cgen_floatsse(n, res); else cgen_float387(n, res); } // floating-point. 387 (not SSE2) static void cgen_float387(Node *n, Node *res) { Node f0, f1; Node *nl, *nr; nl = n->left; nr = n->right; nodreg(&f0, nl->type, D_F0); nodreg(&f1, n->type, D_F0+1); if(nr != N) goto flt2; // unary cgen(nl, &f0); if(n->op != OCONV && n->op != OPLUS) gins(foptoas(n->op, n->type, 0), N, N); gmove(&f0, res); return; flt2: // binary if(nl->ullman >= nr->ullman) { cgen(nl, &f0); if(nr->addable) gins(foptoas(n->op, n->type, 0), nr, &f0); else { cgen(nr, &f0); gins(foptoas(n->op, n->type, Fpop), &f0, &f1); } } else { cgen(nr, &f0); if(nl->addable) gins(foptoas(n->op, n->type, Frev), nl, &f0); else { cgen(nl, &f0); gins(foptoas(n->op, n->type, Frev|Fpop), &f0, &f1); } } gmove(&f0, res); return; } static void cgen_floatsse(Node *n, Node *res) { Node *nl, *nr, *r; Node n1, n2, nt; int a; nl = n->left; nr = n->right; switch(n->op) { default: dump("cgen_floatsse", n); fatal("cgen_floatsse %O", n->op); return; case OMINUS: case OCOM: nr = nodintconst(-1); convlit(&nr, n->type); a = foptoas(OMUL, nl->type, 0); goto sbop; // symmetric binary case OADD: case OMUL: a = foptoas(n->op, nl->type, 0); goto sbop; // asymmetric binary case OSUB: case OMOD: case ODIV: a = foptoas(n->op, nl->type, 0); goto abop; } sbop: // symmetric binary if(nl->ullman < nr->ullman || nl->op == OLITERAL) { r = nl; nl = nr; nr = r; } abop: // asymmetric binary if(nl->ullman >= nr->ullman) { tempname(&nt, nl->type); cgen(nl, &nt); mgen(nr, &n2, N); regalloc(&n1, nl->type, res); gmove(&nt, &n1); gins(a, &n2, &n1); gmove(&n1, res); regfree(&n1); mfree(&n2); } else { regalloc(&n2, nr->type, res); cgen(nr, &n2); regalloc(&n1, nl->type, N); cgen(nl, &n1); gins(a, &n2, &n1); regfree(&n2); gmove(&n1, res); regfree(&n1); } return; } void bgen_float(Node *n, int true, int likely, Prog *to) { int et, a; Node *nl, *nr, *r; Node n1, n2, n3, tmp, t1, t2, ax; Prog *p1, *p2; nl = n->left; nr = n->right; a = n->op; if(!true) { // brcom is not valid on floats when NaN is involved. p1 = gbranch(AJMP, T, 0); p2 = gbranch(AJMP, T, 0); patch(p1, pc); // No need to avoid re-genning ninit. bgen_float(n, 1, -likely, p2); patch(gbranch(AJMP, T, 0), to); patch(p2, pc); return; } if(use_sse) goto sse; else goto x87; x87: a = brrev(a); // because the args are stacked if(a == OGE || a == OGT) { // only < and <= work right with NaN; reverse if needed r = nr; nr = nl; nl = r; a = brrev(a); } nodreg(&tmp, nr->type, D_F0); nodreg(&n2, nr->type, D_F0 + 1); nodreg(&ax, types[TUINT16], D_AX); et = simsimtype(nr->type); if(et == TFLOAT64) { if(nl->ullman > nr->ullman) { cgen(nl, &tmp); cgen(nr, &tmp); gins(AFXCHD, &tmp, &n2); } else { cgen(nr, &tmp); cgen(nl, &tmp); } gins(AFUCOMIP, &tmp, &n2); gins(AFMOVDP, &tmp, &tmp); // annoying pop but still better than STSW+SAHF } else { // TODO(rsc): The moves back and forth to memory // here are for truncating the value to 32 bits. // This handles 32-bit comparison but presumably // all the other ops have the same problem. // We need to figure out what the right general // solution is, besides telling people to use float64. tempname(&t1, types[TFLOAT32]); tempname(&t2, types[TFLOAT32]); cgen(nr, &t1); cgen(nl, &t2); gmove(&t2, &tmp); gins(AFCOMFP, &t1, &tmp); gins(AFSTSW, N, &ax); gins(ASAHF, N, N); } goto ret; sse: if(!nl->addable) { tempname(&n1, nl->type); cgen(nl, &n1); nl = &n1; } if(!nr->addable) { tempname(&tmp, nr->type); cgen(nr, &tmp); nr = &tmp; } regalloc(&n2, nr->type, N); gmove(nr, &n2); nr = &n2; if(nl->op != OREGISTER) { regalloc(&n3, nl->type, N); gmove(nl, &n3); nl = &n3; } if(a == OGE || a == OGT) { // only < and <= work right with NaN; reverse if needed r = nr; nr = nl; nl = r; a = brrev(a); } gins(foptoas(OCMP, nr->type, 0), nl, nr); if(nl->op == OREGISTER) regfree(nl); regfree(nr); ret: if(a == OEQ) { // neither NE nor P p1 = gbranch(AJNE, T, -likely); p2 = gbranch(AJPS, T, -likely); patch(gbranch(AJMP, T, 0), to); patch(p1, pc); patch(p2, pc); } else if(a == ONE) { // either NE or P patch(gbranch(AJNE, T, likely), to); patch(gbranch(AJPS, T, likely), to); } else patch(gbranch(optoas(a, nr->type), T, likely), to); } // Called after regopt and peep have run. // Expand CHECKNIL pseudo-op into actual nil pointer check. void expandchecks(Prog *firstp) { Prog *p, *p1, *p2; for(p = firstp; p != P; p = p->link) { if(p->as != ACHECKNIL) continue; if(debug_checknil && p->lineno > 1) // p->lineno==1 in generated wrappers warnl(p->lineno, "generated nil check"); // check is // CMP arg, $0 // JNE 2(PC) (likely) // MOV AX, 0 p1 = mal(sizeof *p1); p2 = mal(sizeof *p2); clearp(p1); clearp(p2); p1->link = p2; p2->link = p->link; p->link = p1; p1->lineno = p->lineno; p2->lineno = p->lineno; p1->pc = 9999; p2->pc = 9999; p->as = ACMPL; p->to.type = D_CONST; p->to.offset = 0; p1->as = AJNE; p1->from.type = D_CONST; p1->from.offset = 1; // likely p1->to.type = D_BRANCH; p1->to.u.branch = p2->link; // crash by write to memory address 0. // if possible, since we know arg is 0, use 0(arg), // which will be shorter to encode than plain 0. p2->as = AMOVL; p2->from.type = D_AX; if(regtyp(&p->from)) p2->to.type = p->from.type + D_INDIR; else p2->to.type = D_INDIR+D_NONE; p2->to.offset = 0; } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8g/gobj.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000012417�12412656734�014436� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Derived from Inferno utils/8c/swt.c // http://code.google.com/p/inferno-os/source/browse/utils/8c/swt.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "gg.h" int dsname(Sym *s, int off, char *t, int n) { Prog *p; p = gins(ADATA, N, N); p->from.type = D_EXTERN; p->from.index = D_NONE; p->from.offset = off; p->from.scale = n; p->from.sym = linksym(s); p->to.type = D_SCONST; p->to.index = D_NONE; memmove(p->to.u.sval, t, n); return off + n; } /* * make a refer to the data s, s+len * emitting DATA if needed. */ void datastring(char *s, int len, Addr *a) { Sym *sym; sym = stringsym(s, len); a->type = D_EXTERN; a->sym = linksym(sym); a->node = sym->def; a->offset = widthptr+4; // skip header a->etype = TINT32; } /* * make a refer to the string sval, * emitting DATA if needed. */ void datagostring(Strlit *sval, Addr *a) { Sym *sym; sym = stringsym(sval->s, sval->len); a->type = D_EXTERN; a->sym = linksym(sym); a->node = sym->def; a->offset = 0; // header a->etype = TINT32; } void gdata(Node *nam, Node *nr, int wid) { Prog *p; vlong v; if(nr->op == OLITERAL) { switch(nr->val.ctype) { case CTCPLX: gdatacomplex(nam, nr->val.u.cval); return; case CTSTR: gdatastring(nam, nr->val.u.sval); return; } } if(wid == 8 && is64(nr->type)) { v = mpgetfix(nr->val.u.xval); p = gins(ADATA, nam, nodintconst(v)); p->from.scale = 4; p = gins(ADATA, nam, nodintconst(v>>32)); p->from.scale = 4; p->from.offset += 4; return; } p = gins(ADATA, nam, nr); p->from.scale = wid; } void gdatacomplex(Node *nam, Mpcplx *cval) { Prog *p; int w; w = cplxsubtype(nam->type->etype); w = types[w]->width; p = gins(ADATA, nam, N); p->from.scale = w; p->to.type = D_FCONST; p->to.u.dval = mpgetflt(&cval->real); p = gins(ADATA, nam, N); p->from.scale = w; p->from.offset += w; p->to.type = D_FCONST; p->to.u.dval = mpgetflt(&cval->imag); } void gdatastring(Node *nam, Strlit *sval) { Prog *p; Node nod1; p = gins(ADATA, nam, N); datastring(sval->s, sval->len, &p->to); p->from.scale = types[tptr]->width; p->to.index = p->to.type; p->to.type = D_ADDR; //print("%P\n", p); nodconst(&nod1, types[TINT32], sval->len); p = gins(ADATA, nam, &nod1); p->from.scale = types[TINT32]->width; p->from.offset += types[tptr]->width; } int dstringptr(Sym *s, int off, char *str) { Prog *p; off = rnd(off, widthptr); p = gins(ADATA, N, N); p->from.type = D_EXTERN; p->from.index = D_NONE; p->from.sym = linksym(s); p->from.offset = off; p->from.scale = widthptr; datastring(str, strlen(str)+1, &p->to); p->to.index = p->to.type; p->to.type = D_ADDR; p->to.etype = TINT32; off += widthptr; return off; } int dgostrlitptr(Sym *s, int off, Strlit *lit) { Prog *p; if(lit == nil) return duintptr(s, off, 0); off = rnd(off, widthptr); p = gins(ADATA, N, N); p->from.type = D_EXTERN; p->from.index = D_NONE; p->from.sym = linksym(s); p->from.offset = off; p->from.scale = widthptr; datagostring(lit, &p->to); p->to.index = p->to.type; p->to.type = D_ADDR; p->to.etype = TINT32; off += widthptr; return off; } int dgostringptr(Sym *s, int off, char *str) { int n; Strlit *lit; if(str == nil) return duintptr(s, off, 0); n = strlen(str); lit = mal(sizeof *lit + n); strcpy(lit->s, str); lit->len = n; return dgostrlitptr(s, off, lit); } int dsymptr(Sym *s, int off, Sym *x, int xoff) { Prog *p; off = rnd(off, widthptr); p = gins(ADATA, N, N); p->from.type = D_EXTERN; p->from.index = D_NONE; p->from.sym = linksym(s); p->from.offset = off; p->from.scale = widthptr; p->to.type = D_ADDR; p->to.index = D_EXTERN; p->to.sym = linksym(x); p->to.offset = xoff; off += widthptr; return off; } void nopout(Prog *p) { p->as = ANOP; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8g/gsubr.c�������������������������������������������������������������������������������0100644�0000000�0000000�00000127660�12412656737�014651� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Derived from Inferno utils/8c/txt.c // http://code.google.com/p/inferno-os/source/browse/utils/8c/txt.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "gg.h" #include "../../pkg/runtime/funcdata.h" // TODO(rsc): Can make this bigger if we move // the text segment up higher in 8l for all GOOS. // At the same time, can raise StackBig in ../../pkg/runtime/stack.h. uint32 unmappedzero = 4096; #define CASE(a,b) (((a)<<16)|((b)<<0)) void clearp(Prog *p) { p->as = AEND; p->from.type = D_NONE; p->from.index = D_NONE; p->to.type = D_NONE; p->to.index = D_NONE; p->pc = pcloc; pcloc++; } static int ddumped; static Prog *dfirst; static Prog *dpc; /* * generate and return proc with p->as = as, * linked into program. pc is next instruction. */ Prog* prog(int as) { Prog *p; if(as == ADATA || as == AGLOBL) { if(ddumped) fatal("already dumped data"); if(dpc == nil) { dpc = mal(sizeof(*dpc)); dfirst = dpc; } p = dpc; dpc = mal(sizeof(*dpc)); p->link = dpc; } else { p = pc; pc = mal(sizeof(*pc)); clearp(pc); p->link = pc; } if(lineno == 0) { if(debug['K']) warn("prog: line 0"); } p->as = as; p->lineno = lineno; return p; } void dumpdata(void) { ddumped = 1; if(dfirst == nil) return; newplist(); *pc = *dfirst; pc = dpc; clearp(pc); } /* * generate a branch. * t is ignored. * likely values are for branch prediction: * -1 unlikely * 0 no opinion * +1 likely */ Prog* gbranch(int as, Type *t, int likely) { Prog *p; USED(t); p = prog(as); p->to.type = D_BRANCH; p->to.u.branch = P; if(likely != 0) { p->from.type = D_CONST; p->from.offset = likely > 0; } return p; } /* * patch previous branch to jump to to. */ void patch(Prog *p, Prog *to) { if(p->to.type != D_BRANCH) fatal("patch: not a branch"); p->to.u.branch = to; p->to.offset = to->pc; } Prog* unpatch(Prog *p) { Prog *q; if(p->to.type != D_BRANCH) fatal("unpatch: not a branch"); q = p->to.u.branch; p->to.u.branch = P; p->to.offset = 0; return q; } /* * start a new Prog list. */ Plist* newplist(void) { Plist *pl; pl = linknewplist(ctxt); pc = mal(sizeof(*pc)); clearp(pc); pl->firstpc = pc; return pl; } void gused(Node *n) { gins(ANOP, n, N); // used } Prog* gjmp(Prog *to) { Prog *p; p = gbranch(AJMP, T, 0); if(to != P) patch(p, to); return p; } void ggloblnod(Node *nam) { Prog *p; p = gins(AGLOBL, nam, N); p->lineno = nam->lineno; p->from.sym->gotype = linksym(ngotype(nam)); p->to.sym = nil; p->to.type = D_CONST; p->to.offset = nam->type->width; if(nam->readonly) p->from.scale = RODATA; if(nam->type != T && !haspointers(nam->type)) p->from.scale |= NOPTR; } void gargsize(int32 size) { Node n1, n2; nodconst(&n1, types[TINT32], PCDATA_ArgSize); nodconst(&n2, types[TINT32], size); gins(APCDATA, &n1, &n2); } void ggloblsym(Sym *s, int32 width, int dupok, int rodata) { Prog *p; p = gins(AGLOBL, N, N); p->from.type = D_EXTERN; p->from.index = D_NONE; p->from.sym = linksym(s); p->to.type = D_CONST; p->to.index = D_NONE; p->to.offset = width; if(dupok) p->from.scale |= DUPOK; if(rodata) p->from.scale |= RODATA; } void gtrack(Sym *s) { Prog *p; p = gins(AUSEFIELD, N, N); p->from.type = D_EXTERN; p->from.index = D_NONE; p->from.sym = linksym(s); } int isfat(Type *t) { if(t != T) switch(t->etype) { case TSTRUCT: case TARRAY: case TSTRING: case TINTER: // maybe remove later return 1; } return 0; } /* * naddr of func generates code for address of func. * if using opcode that can take address implicitly, * call afunclit to fix up the argument. */ void afunclit(Addr *a, Node *n) { if(a->type == D_ADDR && a->index == D_EXTERN) { a->type = D_EXTERN; a->index = D_NONE; a->sym = linksym(n->sym); } } /* * return Axxx for Oxxx on type t. */ int optoas(int op, Type *t) { int a; if(t == T) fatal("optoas: t is nil"); a = AGOK; switch(CASE(op, simtype[t->etype])) { default: fatal("optoas: no entry %O-%T", op, t); break; case CASE(OADDR, TPTR32): a = ALEAL; break; case CASE(OEQ, TBOOL): case CASE(OEQ, TINT8): case CASE(OEQ, TUINT8): case CASE(OEQ, TINT16): case CASE(OEQ, TUINT16): case CASE(OEQ, TINT32): case CASE(OEQ, TUINT32): case CASE(OEQ, TINT64): case CASE(OEQ, TUINT64): case CASE(OEQ, TPTR32): case CASE(OEQ, TPTR64): case CASE(OEQ, TFLOAT32): case CASE(OEQ, TFLOAT64): a = AJEQ; break; case CASE(ONE, TBOOL): case CASE(ONE, TINT8): case CASE(ONE, TUINT8): case CASE(ONE, TINT16): case CASE(ONE, TUINT16): case CASE(ONE, TINT32): case CASE(ONE, TUINT32): case CASE(ONE, TINT64): case CASE(ONE, TUINT64): case CASE(ONE, TPTR32): case CASE(ONE, TPTR64): case CASE(ONE, TFLOAT32): case CASE(ONE, TFLOAT64): a = AJNE; break; case CASE(OLT, TINT8): case CASE(OLT, TINT16): case CASE(OLT, TINT32): case CASE(OLT, TINT64): a = AJLT; break; case CASE(OLT, TUINT8): case CASE(OLT, TUINT16): case CASE(OLT, TUINT32): case CASE(OLT, TUINT64): a = AJCS; break; case CASE(OLE, TINT8): case CASE(OLE, TINT16): case CASE(OLE, TINT32): case CASE(OLE, TINT64): a = AJLE; break; case CASE(OLE, TUINT8): case CASE(OLE, TUINT16): case CASE(OLE, TUINT32): case CASE(OLE, TUINT64): a = AJLS; break; case CASE(OGT, TINT8): case CASE(OGT, TINT16): case CASE(OGT, TINT32): case CASE(OGT, TINT64): a = AJGT; break; case CASE(OGT, TUINT8): case CASE(OGT, TUINT16): case CASE(OGT, TUINT32): case CASE(OGT, TUINT64): case CASE(OLT, TFLOAT32): case CASE(OLT, TFLOAT64): a = AJHI; break; case CASE(OGE, TINT8): case CASE(OGE, TINT16): case CASE(OGE, TINT32): case CASE(OGE, TINT64): a = AJGE; break; case CASE(OGE, TUINT8): case CASE(OGE, TUINT16): case CASE(OGE, TUINT32): case CASE(OGE, TUINT64): case CASE(OLE, TFLOAT32): case CASE(OLE, TFLOAT64): a = AJCC; break; case CASE(OCMP, TBOOL): case CASE(OCMP, TINT8): case CASE(OCMP, TUINT8): a = ACMPB; break; case CASE(OCMP, TINT16): case CASE(OCMP, TUINT16): a = ACMPW; break; case CASE(OCMP, TINT32): case CASE(OCMP, TUINT32): case CASE(OCMP, TPTR32): a = ACMPL; break; case CASE(OAS, TBOOL): case CASE(OAS, TINT8): case CASE(OAS, TUINT8): a = AMOVB; break; case CASE(OAS, TINT16): case CASE(OAS, TUINT16): a = AMOVW; break; case CASE(OAS, TINT32): case CASE(OAS, TUINT32): case CASE(OAS, TPTR32): a = AMOVL; break; case CASE(OADD, TINT8): case CASE(OADD, TUINT8): a = AADDB; break; case CASE(OADD, TINT16): case CASE(OADD, TUINT16): a = AADDW; break; case CASE(OADD, TINT32): case CASE(OADD, TUINT32): case CASE(OADD, TPTR32): case CASE(OADDPTR, TPTR32): a = AADDL; break; case CASE(OSUB, TINT8): case CASE(OSUB, TUINT8): a = ASUBB; break; case CASE(OSUB, TINT16): case CASE(OSUB, TUINT16): a = ASUBW; break; case CASE(OSUB, TINT32): case CASE(OSUB, TUINT32): case CASE(OSUB, TPTR32): a = ASUBL; break; case CASE(OINC, TINT8): case CASE(OINC, TUINT8): a = AINCB; break; case CASE(OINC, TINT16): case CASE(OINC, TUINT16): a = AINCW; break; case CASE(OINC, TINT32): case CASE(OINC, TUINT32): case CASE(OINC, TPTR32): a = AINCL; break; case CASE(ODEC, TINT8): case CASE(ODEC, TUINT8): a = ADECB; break; case CASE(ODEC, TINT16): case CASE(ODEC, TUINT16): a = ADECW; break; case CASE(ODEC, TINT32): case CASE(ODEC, TUINT32): case CASE(ODEC, TPTR32): a = ADECL; break; case CASE(OCOM, TINT8): case CASE(OCOM, TUINT8): a = ANOTB; break; case CASE(OCOM, TINT16): case CASE(OCOM, TUINT16): a = ANOTW; break; case CASE(OCOM, TINT32): case CASE(OCOM, TUINT32): case CASE(OCOM, TPTR32): a = ANOTL; break; case CASE(OMINUS, TINT8): case CASE(OMINUS, TUINT8): a = ANEGB; break; case CASE(OMINUS, TINT16): case CASE(OMINUS, TUINT16): a = ANEGW; break; case CASE(OMINUS, TINT32): case CASE(OMINUS, TUINT32): case CASE(OMINUS, TPTR32): a = ANEGL; break; case CASE(OAND, TINT8): case CASE(OAND, TUINT8): a = AANDB; break; case CASE(OAND, TINT16): case CASE(OAND, TUINT16): a = AANDW; break; case CASE(OAND, TINT32): case CASE(OAND, TUINT32): case CASE(OAND, TPTR32): a = AANDL; break; case CASE(OOR, TINT8): case CASE(OOR, TUINT8): a = AORB; break; case CASE(OOR, TINT16): case CASE(OOR, TUINT16): a = AORW; break; case CASE(OOR, TINT32): case CASE(OOR, TUINT32): case CASE(OOR, TPTR32): a = AORL; break; case CASE(OXOR, TINT8): case CASE(OXOR, TUINT8): a = AXORB; break; case CASE(OXOR, TINT16): case CASE(OXOR, TUINT16): a = AXORW; break; case CASE(OXOR, TINT32): case CASE(OXOR, TUINT32): case CASE(OXOR, TPTR32): a = AXORL; break; case CASE(OLROT, TINT8): case CASE(OLROT, TUINT8): a = AROLB; break; case CASE(OLROT, TINT16): case CASE(OLROT, TUINT16): a = AROLW; break; case CASE(OLROT, TINT32): case CASE(OLROT, TUINT32): case CASE(OLROT, TPTR32): a = AROLL; break; case CASE(OLSH, TINT8): case CASE(OLSH, TUINT8): a = ASHLB; break; case CASE(OLSH, TINT16): case CASE(OLSH, TUINT16): a = ASHLW; break; case CASE(OLSH, TINT32): case CASE(OLSH, TUINT32): case CASE(OLSH, TPTR32): a = ASHLL; break; case CASE(ORSH, TUINT8): a = ASHRB; break; case CASE(ORSH, TUINT16): a = ASHRW; break; case CASE(ORSH, TUINT32): case CASE(ORSH, TPTR32): a = ASHRL; break; case CASE(ORSH, TINT8): a = ASARB; break; case CASE(ORSH, TINT16): a = ASARW; break; case CASE(ORSH, TINT32): a = ASARL; break; case CASE(OHMUL, TINT8): case CASE(OMUL, TINT8): case CASE(OMUL, TUINT8): a = AIMULB; break; case CASE(OHMUL, TINT16): case CASE(OMUL, TINT16): case CASE(OMUL, TUINT16): a = AIMULW; break; case CASE(OHMUL, TINT32): case CASE(OMUL, TINT32): case CASE(OMUL, TUINT32): case CASE(OMUL, TPTR32): a = AIMULL; break; case CASE(OHMUL, TUINT8): a = AMULB; break; case CASE(OHMUL, TUINT16): a = AMULW; break; case CASE(OHMUL, TUINT32): case CASE(OHMUL, TPTR32): a = AMULL; break; case CASE(ODIV, TINT8): case CASE(OMOD, TINT8): a = AIDIVB; break; case CASE(ODIV, TUINT8): case CASE(OMOD, TUINT8): a = ADIVB; break; case CASE(ODIV, TINT16): case CASE(OMOD, TINT16): a = AIDIVW; break; case CASE(ODIV, TUINT16): case CASE(OMOD, TUINT16): a = ADIVW; break; case CASE(ODIV, TINT32): case CASE(OMOD, TINT32): a = AIDIVL; break; case CASE(ODIV, TUINT32): case CASE(ODIV, TPTR32): case CASE(OMOD, TUINT32): case CASE(OMOD, TPTR32): a = ADIVL; break; case CASE(OEXTEND, TINT16): a = ACWD; break; case CASE(OEXTEND, TINT32): a = ACDQ; break; } return a; } #define FCASE(a, b, c) (((a)<<16)|((b)<<8)|(c)) int foptoas(int op, Type *t, int flg) { int et, a; a = AGOK; et = simtype[t->etype]; if(use_sse) goto sse; // If we need Fpop, it means we're working on // two different floating-point registers, not memory. // There the instruction only has a float64 form. if(flg & Fpop) et = TFLOAT64; // clear Frev if unneeded switch(op) { case OADD: case OMUL: flg &= ~Frev; break; } switch(FCASE(op, et, flg)) { case FCASE(OADD, TFLOAT32, 0): return AFADDF; case FCASE(OADD, TFLOAT64, 0): return AFADDD; case FCASE(OADD, TFLOAT64, Fpop): return AFADDDP; case FCASE(OSUB, TFLOAT32, 0): return AFSUBF; case FCASE(OSUB, TFLOAT32, Frev): return AFSUBRF; case FCASE(OSUB, TFLOAT64, 0): return AFSUBD; case FCASE(OSUB, TFLOAT64, Frev): return AFSUBRD; case FCASE(OSUB, TFLOAT64, Fpop): return AFSUBDP; case FCASE(OSUB, TFLOAT64, Fpop|Frev): return AFSUBRDP; case FCASE(OMUL, TFLOAT32, 0): return AFMULF; case FCASE(OMUL, TFLOAT64, 0): return AFMULD; case FCASE(OMUL, TFLOAT64, Fpop): return AFMULDP; case FCASE(ODIV, TFLOAT32, 0): return AFDIVF; case FCASE(ODIV, TFLOAT32, Frev): return AFDIVRF; case FCASE(ODIV, TFLOAT64, 0): return AFDIVD; case FCASE(ODIV, TFLOAT64, Frev): return AFDIVRD; case FCASE(ODIV, TFLOAT64, Fpop): return AFDIVDP; case FCASE(ODIV, TFLOAT64, Fpop|Frev): return AFDIVRDP; case FCASE(OCMP, TFLOAT32, 0): return AFCOMF; case FCASE(OCMP, TFLOAT32, Fpop): return AFCOMFP; case FCASE(OCMP, TFLOAT64, 0): return AFCOMD; case FCASE(OCMP, TFLOAT64, Fpop): return AFCOMDP; case FCASE(OCMP, TFLOAT64, Fpop2): return AFCOMDPP; case FCASE(OMINUS, TFLOAT32, 0): return AFCHS; case FCASE(OMINUS, TFLOAT64, 0): return AFCHS; } fatal("foptoas %O %T %#x", op, t, flg); return 0; sse: switch(CASE(op, et)) { default: fatal("foptoas-sse: no entry %O-%T", op, t); break; case CASE(OCMP, TFLOAT32): a = AUCOMISS; break; case CASE(OCMP, TFLOAT64): a = AUCOMISD; break; case CASE(OAS, TFLOAT32): a = AMOVSS; break; case CASE(OAS, TFLOAT64): a = AMOVSD; break; case CASE(OADD, TFLOAT32): a = AADDSS; break; case CASE(OADD, TFLOAT64): a = AADDSD; break; case CASE(OSUB, TFLOAT32): a = ASUBSS; break; case CASE(OSUB, TFLOAT64): a = ASUBSD; break; case CASE(OMUL, TFLOAT32): a = AMULSS; break; case CASE(OMUL, TFLOAT64): a = AMULSD; break; case CASE(ODIV, TFLOAT32): a = ADIVSS; break; case CASE(ODIV, TFLOAT64): a = ADIVSD; break; } return a; } static int resvd[] = { // D_DI, // for movstring // D_SI, // for movstring D_AX, // for divide D_CX, // for shift D_DX, // for divide D_SP, // for stack D_BL, // because D_BX can be allocated D_BH, }; void ginit(void) { int i; for(i=0; ietype]; switch(et) { case TINT64: case TUINT64: fatal("regalloc64"); case TINT8: case TUINT8: case TINT16: case TUINT16: case TINT32: case TUINT32: case TPTR32: case TPTR64: case TBOOL: if(o != N && o->op == OREGISTER) { i = o->val.u.reg; if(i >= D_AX && i <= D_DI) goto out; } for(i=D_AX; i<=D_DI; i++) if(reg[i] == 0) goto out; fprint(2, "registers allocated at\n"); for(i=D_AX; i<=D_DI; i++) fprint(2, "\t%R\t%#lux\n", i, regpc[i]); yyerror("out of fixed registers"); goto err; case TFLOAT32: case TFLOAT64: if(!use_sse) { i = D_F0; goto out; } if(o != N && o->op == OREGISTER) { i = o->val.u.reg; if(i >= D_X0 && i <= D_X7) goto out; } for(i=D_X0; i<=D_X7; i++) if(reg[i] == 0) goto out; fprint(2, "registers allocated at\n"); for(i=D_X0; i<=D_X7; i++) fprint(2, "\t%R\t%#lux\n", i, regpc[i]); fatal("out of floating registers"); } yyerror("regalloc: unknown type %T", t); err: nodreg(n, t, 0); return; out: if (i == D_SP) print("alloc SP\n"); if(reg[i] == 0) { regpc[i] = (uintptr)getcallerpc(&n); if(i == D_AX || i == D_CX || i == D_DX || i == D_SP) { dump("regalloc-o", o); fatal("regalloc %R", i); } } reg[i]++; nodreg(n, t, i); } void regfree(Node *n) { int i; if(n->op == ONAME) return; if(n->op != OREGISTER && n->op != OINDREG) fatal("regfree: not a register"); i = n->val.u.reg; if(i == D_SP) return; if(i < 0 || i >= nelem(reg)) fatal("regfree: reg out of range"); if(reg[i] <= 0) fatal("regfree: reg not allocated"); reg[i]--; if(reg[i] == 0 && (i == D_AX || i == D_CX || i == D_DX || i == D_SP)) fatal("regfree %R", i); } /* * initialize n to be register r of type t. */ void nodreg(Node *n, Type *t, int r) { if(t == T) fatal("nodreg: t nil"); memset(n, 0, sizeof(*n)); n->op = OREGISTER; n->addable = 1; ullmancalc(n); n->val.u.reg = r; n->type = t; } /* * initialize n to be indirect of register r; n is type t. */ void nodindreg(Node *n, Type *t, int r) { nodreg(n, t, r); n->op = OINDREG; } Node* nodarg(Type *t, int fp) { Node *n; NodeList *l; Type *first; Iter savet; // entire argument struct, not just one arg switch(t->etype) { default: fatal("nodarg %T", t); case TSTRUCT: if(!t->funarg) fatal("nodarg: TSTRUCT but not funarg"); n = nod(ONAME, N, N); n->sym = lookup(".args"); n->type = t; first = structfirst(&savet, &t); if(first == nil) fatal("nodarg: bad struct"); if(first->width == BADWIDTH) fatal("nodarg: offset not computed for %T", t); n->xoffset = first->width; n->addable = 1; break; case TFIELD: if(fp == 1 && t->sym != S && !isblanksym(t->sym)) { for(l=curfn->dcl; l; l=l->next) { n = l->n; if((n->class == PPARAM || n->class == PPARAMOUT) && n->sym == t->sym) return n; } } n = nod(ONAME, N, N); n->type = t->type; n->sym = t->sym; if(t->width == BADWIDTH) fatal("nodarg: offset not computed for %T", t); n->xoffset = t->width; n->addable = 1; n->orig = t->nname; break; } // Rewrite argument named _ to __, // or else the assignment to _ will be // discarded during code generation. if(isblank(n)) n->sym = lookup("__"); switch(fp) { default: fatal("nodarg %T %d", t, fp); case 0: // output arg n->op = OINDREG; n->val.u.reg = D_SP; break; case 1: // input arg n->class = PPARAM; break; } n->typecheck = 1; return n; } /* * generate * as $c, reg */ void gconreg(int as, vlong c, int reg) { Node n1, n2; nodconst(&n1, types[TINT64], c); nodreg(&n2, types[TINT64], reg); gins(as, &n1, &n2); } /* * swap node contents */ void nswap(Node *a, Node *b) { Node t; t = *a; *a = *b; *b = t; } /* * return constant i node. * overwritten by next call, but useful in calls to gins. */ Node* ncon(uint32 i) { static Node n; if(n.type == T) nodconst(&n, types[TUINT32], 0); mpmovecfix(n.val.u.xval, i); return &n; } /* * Is this node a memory operand? */ int ismem(Node *n) { switch(n->op) { case OITAB: case OSPTR: case OLEN: case OCAP: case OINDREG: case ONAME: case OPARAM: case OCLOSUREVAR: return 1; } return 0; } Node sclean[10]; int nsclean; /* * n is a 64-bit value. fill in lo and hi to refer to its 32-bit halves. */ void split64(Node *n, Node *lo, Node *hi) { Node n1; int64 i; if(!is64(n->type)) fatal("split64 %T", n->type); if(nsclean >= nelem(sclean)) fatal("split64 clean"); sclean[nsclean].op = OEMPTY; nsclean++; switch(n->op) { default: if(!dotaddable(n, &n1)) { igen(n, &n1, N); sclean[nsclean-1] = n1; } n = &n1; goto common; case ONAME: if(n->class == PPARAMREF) { cgen(n->heapaddr, &n1); sclean[nsclean-1] = n1; // fall through. n = &n1; } goto common; case OINDREG: common: *lo = *n; *hi = *n; lo->type = types[TUINT32]; if(n->type->etype == TINT64) hi->type = types[TINT32]; else hi->type = types[TUINT32]; hi->xoffset += 4; break; case OLITERAL: convconst(&n1, n->type, &n->val); i = mpgetfix(n1.val.u.xval); nodconst(lo, types[TUINT32], (uint32)i); i >>= 32; if(n->type->etype == TINT64) nodconst(hi, types[TINT32], (int32)i); else nodconst(hi, types[TUINT32], (uint32)i); break; } } void splitclean(void) { if(nsclean <= 0) fatal("splitclean"); nsclean--; if(sclean[nsclean].op != OEMPTY) regfree(&sclean[nsclean]); } /* * set up nodes representing fp constants */ Node zerof; Node two64f; Node two63f; void bignodes(void) { static int did; if(did) return; did = 1; two64f = *ncon(0); two64f.type = types[TFLOAT64]; two64f.val.ctype = CTFLT; two64f.val.u.fval = mal(sizeof *two64f.val.u.fval); mpmovecflt(two64f.val.u.fval, 18446744073709551616.); two63f = two64f; two63f.val.u.fval = mal(sizeof *two63f.val.u.fval); mpmovecflt(two63f.val.u.fval, 9223372036854775808.); zerof = two64f; zerof.val.u.fval = mal(sizeof *zerof.val.u.fval); mpmovecflt(zerof.val.u.fval, 0); } void memname(Node *n, Type *t) { tempname(n, t); strcpy(namebuf, n->sym->name); namebuf[0] = '.'; // keep optimizer from registerizing n->sym = lookup(namebuf); n->orig->sym = n->sym; } static void floatmove(Node *f, Node *t); static void floatmove_387(Node *f, Node *t); static void floatmove_sse(Node *f, Node *t); void gmove(Node *f, Node *t) { int a, ft, tt; Type *cvt; Node r1, r2, flo, fhi, tlo, thi, con; if(debug['M']) print("gmove %N -> %N\n", f, t); ft = simsimtype(f->type); tt = simsimtype(t->type); cvt = t->type; if(iscomplex[ft] || iscomplex[tt]) { complexmove(f, t); return; } if(isfloat[ft] || isfloat[tt]) { floatmove(f, t); return; } // cannot have two integer memory operands; // except 64-bit, which always copies via registers anyway. if(isint[ft] && isint[tt] && !is64(f->type) && !is64(t->type) && ismem(f) && ismem(t)) goto hard; // convert constant to desired type if(f->op == OLITERAL) { convconst(&con, t->type, &f->val); f = &con; ft = simsimtype(con.type); } // value -> value copy, only one memory operand. // figure out the instruction to use. // break out of switch for one-instruction gins. // goto rdst for "destination must be register". // goto hard for "convert to cvt type first". // otherwise handle and return. switch(CASE(ft, tt)) { default: goto fatal; /* * integer copy and truncate */ case CASE(TINT8, TINT8): // same size case CASE(TINT8, TUINT8): case CASE(TUINT8, TINT8): case CASE(TUINT8, TUINT8): a = AMOVB; break; case CASE(TINT16, TINT8): // truncate case CASE(TUINT16, TINT8): case CASE(TINT32, TINT8): case CASE(TUINT32, TINT8): case CASE(TINT16, TUINT8): case CASE(TUINT16, TUINT8): case CASE(TINT32, TUINT8): case CASE(TUINT32, TUINT8): a = AMOVB; goto rsrc; case CASE(TINT64, TINT8): // truncate low word case CASE(TUINT64, TINT8): case CASE(TINT64, TUINT8): case CASE(TUINT64, TUINT8): split64(f, &flo, &fhi); nodreg(&r1, t->type, D_AX); gmove(&flo, &r1); gins(AMOVB, &r1, t); splitclean(); return; case CASE(TINT16, TINT16): // same size case CASE(TINT16, TUINT16): case CASE(TUINT16, TINT16): case CASE(TUINT16, TUINT16): a = AMOVW; break; case CASE(TINT32, TINT16): // truncate case CASE(TUINT32, TINT16): case CASE(TINT32, TUINT16): case CASE(TUINT32, TUINT16): a = AMOVW; goto rsrc; case CASE(TINT64, TINT16): // truncate low word case CASE(TUINT64, TINT16): case CASE(TINT64, TUINT16): case CASE(TUINT64, TUINT16): split64(f, &flo, &fhi); nodreg(&r1, t->type, D_AX); gmove(&flo, &r1); gins(AMOVW, &r1, t); splitclean(); return; case CASE(TINT32, TINT32): // same size case CASE(TINT32, TUINT32): case CASE(TUINT32, TINT32): case CASE(TUINT32, TUINT32): a = AMOVL; break; case CASE(TINT64, TINT32): // truncate case CASE(TUINT64, TINT32): case CASE(TINT64, TUINT32): case CASE(TUINT64, TUINT32): split64(f, &flo, &fhi); nodreg(&r1, t->type, D_AX); gmove(&flo, &r1); gins(AMOVL, &r1, t); splitclean(); return; case CASE(TINT64, TINT64): // same size case CASE(TINT64, TUINT64): case CASE(TUINT64, TINT64): case CASE(TUINT64, TUINT64): split64(f, &flo, &fhi); split64(t, &tlo, &thi); if(f->op == OLITERAL) { gins(AMOVL, &flo, &tlo); gins(AMOVL, &fhi, &thi); } else { nodreg(&r1, t->type, D_AX); nodreg(&r2, t->type, D_DX); gins(AMOVL, &flo, &r1); gins(AMOVL, &fhi, &r2); gins(AMOVL, &r1, &tlo); gins(AMOVL, &r2, &thi); } splitclean(); splitclean(); return; /* * integer up-conversions */ case CASE(TINT8, TINT16): // sign extend int8 case CASE(TINT8, TUINT16): a = AMOVBWSX; goto rdst; case CASE(TINT8, TINT32): case CASE(TINT8, TUINT32): a = AMOVBLSX; goto rdst; case CASE(TINT8, TINT64): // convert via int32 case CASE(TINT8, TUINT64): cvt = types[TINT32]; goto hard; case CASE(TUINT8, TINT16): // zero extend uint8 case CASE(TUINT8, TUINT16): a = AMOVBWZX; goto rdst; case CASE(TUINT8, TINT32): case CASE(TUINT8, TUINT32): a = AMOVBLZX; goto rdst; case CASE(TUINT8, TINT64): // convert via uint32 case CASE(TUINT8, TUINT64): cvt = types[TUINT32]; goto hard; case CASE(TINT16, TINT32): // sign extend int16 case CASE(TINT16, TUINT32): a = AMOVWLSX; goto rdst; case CASE(TINT16, TINT64): // convert via int32 case CASE(TINT16, TUINT64): cvt = types[TINT32]; goto hard; case CASE(TUINT16, TINT32): // zero extend uint16 case CASE(TUINT16, TUINT32): a = AMOVWLZX; goto rdst; case CASE(TUINT16, TINT64): // convert via uint32 case CASE(TUINT16, TUINT64): cvt = types[TUINT32]; goto hard; case CASE(TINT32, TINT64): // sign extend int32 case CASE(TINT32, TUINT64): split64(t, &tlo, &thi); nodreg(&flo, tlo.type, D_AX); nodreg(&fhi, thi.type, D_DX); gmove(f, &flo); gins(ACDQ, N, N); gins(AMOVL, &flo, &tlo); gins(AMOVL, &fhi, &thi); splitclean(); return; case CASE(TUINT32, TINT64): // zero extend uint32 case CASE(TUINT32, TUINT64): split64(t, &tlo, &thi); gmove(f, &tlo); gins(AMOVL, ncon(0), &thi); splitclean(); return; } gins(a, f, t); return; rsrc: // requires register source regalloc(&r1, f->type, t); gmove(f, &r1); gins(a, &r1, t); regfree(&r1); return; rdst: // requires register destination regalloc(&r1, t->type, t); gins(a, f, &r1); gmove(&r1, t); regfree(&r1); return; hard: // requires register intermediate regalloc(&r1, cvt, t); gmove(f, &r1); gmove(&r1, t); regfree(&r1); return; fatal: // should not happen fatal("gmove %N -> %N", f, t); } static void floatmove(Node *f, Node *t) { Node r1, r2, t1, t2, tlo, thi, con, f0, f1, ax, dx, cx; Type *cvt; int ft, tt; Prog *p1, *p2, *p3; ft = simsimtype(f->type); tt = simsimtype(t->type); cvt = t->type; // cannot have two floating point memory operands. if(isfloat[ft] && isfloat[tt] && ismem(f) && ismem(t)) goto hard; // convert constant to desired type if(f->op == OLITERAL) { convconst(&con, t->type, &f->val); f = &con; ft = simsimtype(con.type); // some constants can't move directly to memory. if(ismem(t)) { // float constants come from memory. if(isfloat[tt]) goto hard; } } // value -> value copy, only one memory operand. // figure out the instruction to use. // break out of switch for one-instruction gins. // goto rdst for "destination must be register". // goto hard for "convert to cvt type first". // otherwise handle and return. switch(CASE(ft, tt)) { default: if(use_sse) floatmove_sse(f, t); else floatmove_387(f, t); return; // float to very long integer. case CASE(TFLOAT32, TINT64): case CASE(TFLOAT64, TINT64): if(f->op == OREGISTER) { cvt = f->type; goto hardmem; } nodreg(&r1, types[ft], D_F0); if(ft == TFLOAT32) gins(AFMOVF, f, &r1); else gins(AFMOVD, f, &r1); // set round to zero mode during conversion memname(&t1, types[TUINT16]); memname(&t2, types[TUINT16]); gins(AFSTCW, N, &t1); gins(AMOVW, ncon(0xf7f), &t2); gins(AFLDCW, &t2, N); if(tt == TINT16) gins(AFMOVWP, &r1, t); else if(tt == TINT32) gins(AFMOVLP, &r1, t); else gins(AFMOVVP, &r1, t); gins(AFLDCW, &t1, N); return; case CASE(TFLOAT32, TUINT64): case CASE(TFLOAT64, TUINT64): if(!ismem(f)) { cvt = f->type; goto hardmem; } bignodes(); nodreg(&f0, types[ft], D_F0); nodreg(&f1, types[ft], D_F0 + 1); nodreg(&ax, types[TUINT16], D_AX); if(ft == TFLOAT32) gins(AFMOVF, f, &f0); else gins(AFMOVD, f, &f0); // if 0 > v { answer = 0 } gins(AFMOVD, &zerof, &f0); gins(AFUCOMIP, &f0, &f1); p1 = gbranch(optoas(OGT, types[tt]), T, 0); // if 1<<64 <= v { answer = 0 too } gins(AFMOVD, &two64f, &f0); gins(AFUCOMIP, &f0, &f1); p2 = gbranch(optoas(OGT, types[tt]), T, 0); patch(p1, pc); gins(AFMOVVP, &f0, t); // don't care about t, but will pop the stack split64(t, &tlo, &thi); gins(AMOVL, ncon(0), &tlo); gins(AMOVL, ncon(0), &thi); splitclean(); p1 = gbranch(AJMP, T, 0); patch(p2, pc); // in range; algorithm is: // if small enough, use native float64 -> int64 conversion. // otherwise, subtract 2^63, convert, and add it back. // set round to zero mode during conversion memname(&t1, types[TUINT16]); memname(&t2, types[TUINT16]); gins(AFSTCW, N, &t1); gins(AMOVW, ncon(0xf7f), &t2); gins(AFLDCW, &t2, N); // actual work gins(AFMOVD, &two63f, &f0); gins(AFUCOMIP, &f0, &f1); p2 = gbranch(optoas(OLE, types[tt]), T, 0); gins(AFMOVVP, &f0, t); p3 = gbranch(AJMP, T, 0); patch(p2, pc); gins(AFMOVD, &two63f, &f0); gins(AFSUBDP, &f0, &f1); gins(AFMOVVP, &f0, t); split64(t, &tlo, &thi); gins(AXORL, ncon(0x80000000), &thi); // + 2^63 patch(p3, pc); splitclean(); // restore rounding mode gins(AFLDCW, &t1, N); patch(p1, pc); return; /* * integer to float */ case CASE(TINT64, TFLOAT32): case CASE(TINT64, TFLOAT64): if(t->op == OREGISTER) goto hardmem; nodreg(&f0, t->type, D_F0); gins(AFMOVV, f, &f0); if(tt == TFLOAT32) gins(AFMOVFP, &f0, t); else gins(AFMOVDP, &f0, t); return; case CASE(TUINT64, TFLOAT32): case CASE(TUINT64, TFLOAT64): // algorithm is: // if small enough, use native int64 -> float64 conversion. // otherwise, halve (rounding to odd?), convert, and double. nodreg(&ax, types[TUINT32], D_AX); nodreg(&dx, types[TUINT32], D_DX); nodreg(&cx, types[TUINT32], D_CX); tempname(&t1, f->type); split64(&t1, &tlo, &thi); gmove(f, &t1); gins(ACMPL, &thi, ncon(0)); p1 = gbranch(AJLT, T, 0); // native nodreg(&r1, types[tt], D_F0); gins(AFMOVV, &t1, &r1); if(tt == TFLOAT32) gins(AFMOVFP, &r1, t); else gins(AFMOVDP, &r1, t); p2 = gbranch(AJMP, T, 0); // simulated patch(p1, pc); gmove(&tlo, &ax); gmove(&thi, &dx); p1 = gins(ASHRL, ncon(1), &ax); p1->from.index = D_DX; // double-width shift DX -> AX p1->from.scale = 0; gins(AMOVL, ncon(0), &cx); gins(ASETCC, N, &cx); gins(AORL, &cx, &ax); gins(ASHRL, ncon(1), &dx); gmove(&dx, &thi); gmove(&ax, &tlo); nodreg(&r1, types[tt], D_F0); nodreg(&r2, types[tt], D_F0 + 1); gins(AFMOVV, &t1, &r1); gins(AFMOVD, &r1, &r1); gins(AFADDDP, &r1, &r2); if(tt == TFLOAT32) gins(AFMOVFP, &r1, t); else gins(AFMOVDP, &r1, t); patch(p2, pc); splitclean(); return; } hard: // requires register intermediate regalloc(&r1, cvt, t); gmove(f, &r1); gmove(&r1, t); regfree(&r1); return; hardmem: // requires memory intermediate tempname(&r1, cvt); gmove(f, &r1); gmove(&r1, t); return; } static void floatmove_387(Node *f, Node *t) { Node r1, t1, t2; Type *cvt; Prog *p1, *p2, *p3; int a, ft, tt; ft = simsimtype(f->type); tt = simsimtype(t->type); cvt = t->type; switch(CASE(ft, tt)) { default: goto fatal; /* * float to integer */ case CASE(TFLOAT32, TINT16): case CASE(TFLOAT32, TINT32): case CASE(TFLOAT32, TINT64): case CASE(TFLOAT64, TINT16): case CASE(TFLOAT64, TINT32): case CASE(TFLOAT64, TINT64): if(t->op == OREGISTER) goto hardmem; nodreg(&r1, types[ft], D_F0); if(f->op != OREGISTER) { if(ft == TFLOAT32) gins(AFMOVF, f, &r1); else gins(AFMOVD, f, &r1); } // set round to zero mode during conversion memname(&t1, types[TUINT16]); memname(&t2, types[TUINT16]); gins(AFSTCW, N, &t1); gins(AMOVW, ncon(0xf7f), &t2); gins(AFLDCW, &t2, N); if(tt == TINT16) gins(AFMOVWP, &r1, t); else if(tt == TINT32) gins(AFMOVLP, &r1, t); else gins(AFMOVVP, &r1, t); gins(AFLDCW, &t1, N); return; case CASE(TFLOAT32, TINT8): case CASE(TFLOAT32, TUINT16): case CASE(TFLOAT32, TUINT8): case CASE(TFLOAT64, TINT8): case CASE(TFLOAT64, TUINT16): case CASE(TFLOAT64, TUINT8): // convert via int32. tempname(&t1, types[TINT32]); gmove(f, &t1); switch(tt) { default: fatal("gmove %T", t); case TINT8: gins(ACMPL, &t1, ncon(-0x80)); p1 = gbranch(optoas(OLT, types[TINT32]), T, -1); gins(ACMPL, &t1, ncon(0x7f)); p2 = gbranch(optoas(OGT, types[TINT32]), T, -1); p3 = gbranch(AJMP, T, 0); patch(p1, pc); patch(p2, pc); gmove(ncon(-0x80), &t1); patch(p3, pc); gmove(&t1, t); break; case TUINT8: gins(ATESTL, ncon(0xffffff00), &t1); p1 = gbranch(AJEQ, T, +1); gins(AMOVL, ncon(0), &t1); patch(p1, pc); gmove(&t1, t); break; case TUINT16: gins(ATESTL, ncon(0xffff0000), &t1); p1 = gbranch(AJEQ, T, +1); gins(AMOVL, ncon(0), &t1); patch(p1, pc); gmove(&t1, t); break; } return; case CASE(TFLOAT32, TUINT32): case CASE(TFLOAT64, TUINT32): // convert via int64. cvt = types[TINT64]; goto hardmem; /* * integer to float */ case CASE(TINT16, TFLOAT32): case CASE(TINT16, TFLOAT64): case CASE(TINT32, TFLOAT32): case CASE(TINT32, TFLOAT64): case CASE(TINT64, TFLOAT32): case CASE(TINT64, TFLOAT64): if(t->op != OREGISTER) goto hard; if(f->op == OREGISTER) { cvt = f->type; goto hardmem; } switch(ft) { case TINT16: a = AFMOVW; break; case TINT32: a = AFMOVL; break; default: a = AFMOVV; break; } break; case CASE(TINT8, TFLOAT32): case CASE(TINT8, TFLOAT64): case CASE(TUINT16, TFLOAT32): case CASE(TUINT16, TFLOAT64): case CASE(TUINT8, TFLOAT32): case CASE(TUINT8, TFLOAT64): // convert via int32 memory cvt = types[TINT32]; goto hardmem; case CASE(TUINT32, TFLOAT32): case CASE(TUINT32, TFLOAT64): // convert via int64 memory cvt = types[TINT64]; goto hardmem; /* * float to float */ case CASE(TFLOAT32, TFLOAT32): case CASE(TFLOAT64, TFLOAT64): // The way the code generator uses floating-point // registers, a move from F0 to F0 is intended as a no-op. // On the x86, it's not: it pushes a second copy of F0 // on the floating point stack. So toss it away here. // Also, F0 is the *only* register we ever evaluate // into, so we should only see register/register as F0/F0. if(ismem(f) && ismem(t)) goto hard; if(f->op == OREGISTER && t->op == OREGISTER) { if(f->val.u.reg != D_F0 || t->val.u.reg != D_F0) goto fatal; return; } a = AFMOVF; if(ft == TFLOAT64) a = AFMOVD; if(ismem(t)) { if(f->op != OREGISTER || f->val.u.reg != D_F0) fatal("gmove %N", f); a = AFMOVFP; if(ft == TFLOAT64) a = AFMOVDP; } break; case CASE(TFLOAT32, TFLOAT64): if(ismem(f) && ismem(t)) goto hard; if(f->op == OREGISTER && t->op == OREGISTER) { if(f->val.u.reg != D_F0 || t->val.u.reg != D_F0) goto fatal; return; } if(f->op == OREGISTER) gins(AFMOVDP, f, t); else gins(AFMOVF, f, t); return; case CASE(TFLOAT64, TFLOAT32): if(ismem(f) && ismem(t)) goto hard; if(f->op == OREGISTER && t->op == OREGISTER) { tempname(&r1, types[TFLOAT32]); gins(AFMOVFP, f, &r1); gins(AFMOVF, &r1, t); return; } if(f->op == OREGISTER) gins(AFMOVFP, f, t); else gins(AFMOVD, f, t); return; } gins(a, f, t); return; hard: // requires register intermediate regalloc(&r1, cvt, t); gmove(f, &r1); gmove(&r1, t); regfree(&r1); return; hardmem: // requires memory intermediate tempname(&r1, cvt); gmove(f, &r1); gmove(&r1, t); return; fatal: // should not happen fatal("gmove %lN -> %lN", f, t); return; } static void floatmove_sse(Node *f, Node *t) { Node r1; Type *cvt; int a, ft, tt; ft = simsimtype(f->type); tt = simsimtype(t->type); switch(CASE(ft, tt)) { default: // should not happen fatal("gmove %N -> %N", f, t); return; /* * float to integer */ case CASE(TFLOAT32, TINT16): case CASE(TFLOAT32, TINT8): case CASE(TFLOAT32, TUINT16): case CASE(TFLOAT32, TUINT8): case CASE(TFLOAT64, TINT16): case CASE(TFLOAT64, TINT8): case CASE(TFLOAT64, TUINT16): case CASE(TFLOAT64, TUINT8): // convert via int32. cvt = types[TINT32]; goto hard; case CASE(TFLOAT32, TUINT32): case CASE(TFLOAT64, TUINT32): // convert via int64. cvt = types[TINT64]; goto hardmem; case CASE(TFLOAT32, TINT32): a = ACVTTSS2SL; goto rdst; case CASE(TFLOAT64, TINT32): a = ACVTTSD2SL; goto rdst; /* * integer to float */ case CASE(TINT8, TFLOAT32): case CASE(TINT8, TFLOAT64): case CASE(TINT16, TFLOAT32): case CASE(TINT16, TFLOAT64): case CASE(TUINT16, TFLOAT32): case CASE(TUINT16, TFLOAT64): case CASE(TUINT8, TFLOAT32): case CASE(TUINT8, TFLOAT64): // convert via int32 memory cvt = types[TINT32]; goto hard; case CASE(TUINT32, TFLOAT32): case CASE(TUINT32, TFLOAT64): // convert via int64 memory cvt = types[TINT64]; goto hardmem; case CASE(TINT32, TFLOAT32): a = ACVTSL2SS; goto rdst; case CASE(TINT32, TFLOAT64): a = ACVTSL2SD; goto rdst; /* * float to float */ case CASE(TFLOAT32, TFLOAT32): a = AMOVSS; break; case CASE(TFLOAT64, TFLOAT64): a = AMOVSD; break; case CASE(TFLOAT32, TFLOAT64): a = ACVTSS2SD; goto rdst; case CASE(TFLOAT64, TFLOAT32): a = ACVTSD2SS; goto rdst; } gins(a, f, t); return; hard: // requires register intermediate regalloc(&r1, cvt, t); gmove(f, &r1); gmove(&r1, t); regfree(&r1); return; hardmem: // requires memory intermediate tempname(&r1, cvt); gmove(f, &r1); gmove(&r1, t); return; rdst: // requires register destination regalloc(&r1, t->type, t); gins(a, f, &r1); gmove(&r1, t); regfree(&r1); return; } int samaddr(Node *f, Node *t) { if(f->op != t->op) return 0; switch(f->op) { case OREGISTER: if(f->val.u.reg != t->val.u.reg) break; return 1; } return 0; } /* * generate one instruction: * as f, t */ Prog* gins(int as, Node *f, Node *t) { Prog *p; Addr af, at; int w; if(as == AFMOVF && f && f->op == OREGISTER && t && t->op == OREGISTER) fatal("gins MOVF reg, reg"); if(as == ACVTSD2SS && f && f->op == OLITERAL) fatal("gins CVTSD2SS const"); if(as == AMOVSD && t && t->op == OREGISTER && t->val.u.reg == D_F0) fatal("gins MOVSD into F0"); switch(as) { case AMOVB: case AMOVW: case AMOVL: if(f != N && t != N && samaddr(f, t)) return nil; break; case ALEAL: if(f != N && isconst(f, CTNIL)) fatal("gins LEAL nil %T", f->type); break; } memset(&af, 0, sizeof af); memset(&at, 0, sizeof at); if(f != N) naddr(f, &af, 1); if(t != N) naddr(t, &at, 1); p = prog(as); if(f != N) p->from = af; if(t != N) p->to = at; if(debug['g']) print("%P\n", p); w = 0; switch(as) { case AMOVB: w = 1; break; case AMOVW: w = 2; break; case AMOVL: w = 4; break; } if(1 && w != 0 && f != N && (af.width > w || at.width > w)) { dump("bad width from:", f); dump("bad width to:", t); fatal("bad width: %P (%d, %d)\n", p, af.width, at.width); } return p; } /* * generate code to compute n; * make a refer to result. */ void naddr(Node *n, Addr *a, int canemitcode) { Sym *s; a->scale = 0; a->index = D_NONE; a->type = D_NONE; a->gotype = nil; a->node = N; if(n == N) return; switch(n->op) { default: fatal("naddr: bad %O %D", n->op, a); break; case OREGISTER: a->type = n->val.u.reg; a->sym = nil; break; case OINDREG: a->type = n->val.u.reg+D_INDIR; a->sym = linksym(n->sym); a->offset = n->xoffset; break; case OPARAM: // n->left is PHEAP ONAME for stack parameter. // compute address of actual parameter on stack. a->etype = n->left->type->etype; a->width = n->left->type->width; a->offset = n->xoffset; a->sym = linksym(n->left->sym); a->type = D_PARAM; a->node = n->left->orig; break; case OCLOSUREVAR: if(!curfn->needctxt) fatal("closurevar without needctxt"); a->type = D_DX+D_INDIR; a->offset = n->xoffset; a->sym = nil; break; case OCFUNC: naddr(n->left, a, canemitcode); a->sym = linksym(n->left->sym); break; case ONAME: a->etype = 0; a->width = 0; if(n->type != T) { a->etype = simtype[n->type->etype]; dowidth(n->type); a->width = n->type->width; } a->offset = n->xoffset; s = n->sym; a->node = n->orig; //if(a->node >= (Node*)&n) // fatal("stack node"); if(s == S) s = lookup(".noname"); if(n->method) { if(n->type != T) if(n->type->sym != S) if(n->type->sym->pkg != nil) s = pkglookup(s->name, n->type->sym->pkg); } switch(n->class) { default: fatal("naddr: ONAME class %S %d\n", n->sym, n->class); case PEXTERN: a->type = D_EXTERN; break; case PAUTO: a->type = D_AUTO; break; case PPARAM: case PPARAMOUT: a->type = D_PARAM; break; case PFUNC: a->index = D_EXTERN; a->type = D_ADDR; s = funcsym(s); break; } a->sym = linksym(s); break; case OLITERAL: switch(n->val.ctype) { default: fatal("naddr: const %lT", n->type); break; case CTFLT: a->type = D_FCONST; a->u.dval = mpgetflt(n->val.u.fval); break; case CTINT: case CTRUNE: a->sym = nil; a->type = D_CONST; a->offset = mpgetfix(n->val.u.xval); break; case CTSTR: datagostring(n->val.u.sval, a); break; case CTBOOL: a->sym = nil; a->type = D_CONST; a->offset = n->val.u.bval; break; case CTNIL: a->sym = nil; a->type = D_CONST; a->offset = 0; break; } break; case OADDR: naddr(n->left, a, canemitcode); if(a->type >= D_INDIR) { a->type -= D_INDIR; break; } if(a->type == D_EXTERN || a->type == D_STATIC || a->type == D_AUTO || a->type == D_PARAM) if(a->index == D_NONE) { a->index = a->type; a->type = D_ADDR; break; } fatal("naddr: OADDR\n"); case OITAB: // itable of interface value naddr(n->left, a, canemitcode); if(a->type == D_CONST && a->offset == 0) break; // len(nil) a->etype = tptr; a->width = widthptr; break; case OSPTR: // pointer in a string or slice naddr(n->left, a, canemitcode); if(a->type == D_CONST && a->offset == 0) break; // ptr(nil) a->etype = simtype[tptr]; a->offset += Array_array; a->width = widthptr; break; case OLEN: // len of string or slice naddr(n->left, a, canemitcode); if(a->type == D_CONST && a->offset == 0) break; // len(nil) a->etype = TUINT32; a->offset += Array_nel; a->width = 4; break; case OCAP: // cap of string or slice naddr(n->left, a, canemitcode); if(a->type == D_CONST && a->offset == 0) break; // cap(nil) a->etype = TUINT32; a->offset += Array_cap; a->width = 4; break; // case OADD: // if(n->right->op == OLITERAL) { // v = n->right->vconst; // naddr(n->left, a, canemitcode); // } else // if(n->left->op == OLITERAL) { // v = n->left->vconst; // naddr(n->right, a, canemitcode); // } else // goto bad; // a->offset += v; // break; } } int dotaddable(Node *n, Node *n1) { int o; int64 oary[10]; Node *nn; if(n->op != ODOT) return 0; o = dotoffset(n, oary, &nn); if(nn != N && nn->addable && o == 1 && oary[0] >= 0) { *n1 = *nn; n1->type = n->type; n1->xoffset += oary[0]; return 1; } return 0; } void sudoclean(void) { } int sudoaddable(int as, Node *n, Addr *a) { USED(as); USED(n); USED(a); return 0; } ��������������������������������������������������������������������������������go/src/cmd/8g/opt.h���������������������������������������������������������������������������������0100644�0000000�0000000�00000013262�12412656737�014326� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Derived from Inferno utils/6c/gc.h // http://code.google.com/p/inferno-os/source/browse/utils/6c/gc.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "../gc/popt.h" #define Z N #define Adr Addr #define D_HI D_NONE #define D_LO D_NONE #define BLOAD(r) band(bnot(r->refbehind), r->refahead) #define BSTORE(r) band(bnot(r->calbehind), r->calahead) #define LOAD(r) (~r->refbehind.b[z] & r->refahead.b[z]) #define STORE(r) (~r->calbehind.b[z] & r->calahead.b[z]) #define CLOAD 5 #define CREF 5 #define CINF 1000 #define LOOP 3 typedef struct Reg Reg; typedef struct Rgn Rgn; // A Reg is a wrapper around a single Prog (one instruction) that holds // register optimization information while the optimizer runs. // r->prog is the instruction. // r->prog->opt points back to r. struct Reg { Flow f; Bits set; // variables written by this instruction. Bits use1; // variables read by prog->from. Bits use2; // variables read by prog->to. Bits refbehind; Bits refahead; Bits calbehind; Bits calahead; Bits regdiff; Bits act; int32 regu; // register used bitmap int32 rpo; // reverse post ordering int32 active; uint16 loop; // x5 for every loop uchar refset; // diagnostic generated Reg* p1; // predecessors of this instruction: p1, Reg* p2; // and then p2 linked though p2link. Reg* p2link; Reg* s1; // successors of this instruction (at most two: s1 and s2). Reg* s2; Reg* link; // next instruction in function code Prog* prog; // actual instruction }; #define R ((Reg*)0) #define NRGN 600 struct Rgn { Reg* enter; short cost; short varno; short regno; }; EXTERN int32 exregoffset; // not set EXTERN int32 exfregoffset; // not set EXTERN Reg zreg; EXTERN Reg* freer; EXTERN Reg** rpo2r; EXTERN Rgn region[NRGN]; EXTERN Rgn* rgp; EXTERN int nregion; EXTERN int nvar; EXTERN int32 regbits; EXTERN int32 exregbits; EXTERN Bits externs; EXTERN Bits params; EXTERN Bits consts; EXTERN Bits addrs; EXTERN Bits ivar; EXTERN Bits ovar; EXTERN int change; EXTERN int32 maxnr; EXTERN int32* idom; EXTERN struct { int32 ncvtreg; int32 nspill; int32 nreload; int32 ndelmov; int32 nvar; int32 naddr; } ostats; /* * reg.c */ Reg* rega(void); int rcmp(const void*, const void*); void regopt(Prog*); void addmove(Reg*, int, int, int); Bits mkvar(Reg*, Adr*); void prop(Reg*, Bits, Bits); void loopit(Reg*, int32); void synch(Reg*, Bits); uint32 allreg(uint32, Rgn*); void paint1(Reg*, int); uint32 paint2(Reg*, int); void paint3(Reg*, int, int32, int); void addreg(Adr*, int); void dumpone(Flow*, int); void dumpit(char*, Flow*, int); /* * peep.c */ void peep(Prog*); void excise(Flow*); int copyu(Prog*, Adr*, Adr*); int32 RtoB(int); int32 FtoB(int); int BtoR(int32); int BtoF(int32); /* * prog.c */ typedef struct ProgInfo ProgInfo; struct ProgInfo { uint32 flags; // the bits below uint32 reguse; // required registers used by this instruction uint32 regset; // required registers set by this instruction uint32 regindex; // registers used by addressing mode }; enum { // Pseudo-op, like TEXT, GLOBL, TYPE, PCDATA, FUNCDATA. Pseudo = 1<<1, // There's nothing to say about the instruction, // but it's still okay to see. OK = 1<<2, // Size of right-side write, or right-side read if no write. SizeB = 1<<3, SizeW = 1<<4, SizeL = 1<<5, SizeQ = 1<<6, SizeF = 1<<7, // float aka float32 SizeD = 1<<8, // double aka float64 // Left side: address taken, read, write. LeftAddr = 1<<9, LeftRead = 1<<10, LeftWrite = 1<<11, // Right side: address taken, read, write. RightAddr = 1<<12, RightRead = 1<<13, RightWrite = 1<<14, // Set, use, or kill of carry bit. // Kill means we never look at the carry bit after this kind of instruction. SetCarry = 1<<15, UseCarry = 1<<16, KillCarry = 1<<17, // Instruction kinds Move = 1<<18, // straight move Conv = 1<<19, // size conversion Cjmp = 1<<20, // conditional jump Break = 1<<21, // breaks control flow (no fallthrough) Call = 1<<22, // function call Jump = 1<<23, // jump Skip = 1<<24, // data instruction // Special cases for register use. ShiftCX = 1<<25, // possible shift by CX ImulAXDX = 1<<26, // possible multiply into DX:AX }; void proginfo(ProgInfo*, Prog*); ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8g/peep.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000034430�12412656737�014450� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Derived from Inferno utils/6c/peep.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/peep.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "gg.h" #include "opt.h" #define REGEXT 0 static void conprop(Flow *r); static void elimshortmov(Graph*); static int subprop(Flow*); static int copyprop(Graph*, Flow*); static int copy1(Adr*, Adr*, Flow*, int); static int copyas(Adr*, Adr*); static int copyau(Adr*, Adr*); static int copysub(Adr*, Adr*, Adr*, int); static uint32 gactive; // do we need the carry bit static int needc(Prog *p) { ProgInfo info; while(p != P) { proginfo(&info, p); if(info.flags & UseCarry) return 1; if(info.flags & (SetCarry|KillCarry)) return 0; p = p->link; } return 0; } static Flow* rnops(Flow *r) { Prog *p; Flow *r1; if(r != nil) for(;;) { p = r->prog; if(p->as != ANOP || p->from.type != D_NONE || p->to.type != D_NONE) break; r1 = uniqs(r); if(r1 == nil) break; r = r1; } return r; } void peep(Prog *firstp) { Flow *r, *r1; Graph *g; Prog *p, *p1; int t; g = flowstart(firstp, sizeof(Flow)); if(g == nil) return; gactive = 0; // byte, word arithmetic elimination. elimshortmov(g); // constant propagation // find MOV $con,R followed by // another MOV $con,R without // setting R in the interim for(r=g->start; r!=nil; r=r->link) { p = r->prog; switch(p->as) { case ALEAL: if(regtyp(&p->to)) if(p->from.sym != nil) if(p->from.index == D_NONE || p->from.index == D_CONST) conprop(r); break; case AMOVB: case AMOVW: case AMOVL: case AMOVSS: case AMOVSD: if(regtyp(&p->to)) if(p->from.type == D_CONST) conprop(r); break; } } loop1: if(debug['P'] && debug['v']) dumpit("loop1", g->start, 0); t = 0; for(r=g->start; r!=nil; r=r->link) { p = r->prog; switch(p->as) { case AMOVL: case AMOVSS: case AMOVSD: if(regtyp(&p->to)) if(regtyp(&p->from)) { if(copyprop(g, r)) { excise(r); t++; } else if(subprop(r) && copyprop(g, r)) { excise(r); t++; } } break; case AMOVBLZX: case AMOVWLZX: case AMOVBLSX: case AMOVWLSX: if(regtyp(&p->to)) { r1 = rnops(uniqs(r)); if(r1 != nil) { p1 = r1->prog; if(p->as == p1->as && p->to.type == p1->from.type){ p1->as = AMOVL; t++; } } } break; case AADDL: case AADDW: if(p->from.type != D_CONST || needc(p->link)) break; if(p->from.offset == -1){ if(p->as == AADDL) p->as = ADECL; else p->as = ADECW; p->from = zprog.from; break; } if(p->from.offset == 1){ if(p->as == AADDL) p->as = AINCL; else p->as = AINCW; p->from = zprog.from; break; } break; case ASUBL: case ASUBW: if(p->from.type != D_CONST || needc(p->link)) break; if(p->from.offset == -1) { if(p->as == ASUBL) p->as = AINCL; else p->as = AINCW; p->from = zprog.from; break; } if(p->from.offset == 1){ if(p->as == ASUBL) p->as = ADECL; else p->as = ADECW; p->from = zprog.from; break; } break; } } if(t) goto loop1; // MOVSD removal. // We never use packed registers, so a MOVSD between registers // can be replaced by MOVAPD, which moves the pair of float64s // instead of just the lower one. We only use the lower one, but // the processor can do better if we do moves using both. for(r=g->start; r!=nil; r=r->link) { p = r->prog; if(p->as == AMOVSD) if(regtyp(&p->from)) if(regtyp(&p->to)) p->as = AMOVAPD; } flowend(g); } void excise(Flow *r) { Prog *p; p = r->prog; if(debug['P'] && debug['v']) print("%P ===delete===\n", p); p->as = ANOP; p->from = zprog.from; p->to = zprog.to; ostats.ndelmov++; } int regtyp(Adr *a) { int t; t = a->type; if(t >= D_AX && t <= D_DI) return 1; if(t >= D_X0 && t <= D_X7) return 1; return 0; } // movb elimination. // movb is simulated by the linker // when a register other than ax, bx, cx, dx // is used, so rewrite to other instructions // when possible. a movb into a register // can smash the entire 64-bit register without // causing any trouble. static void elimshortmov(Graph *g) { Prog *p; Flow *r; for(r=g->start; r!=nil; r=r->link) { p = r->prog; if(regtyp(&p->to)) { switch(p->as) { case AINCB: case AINCW: p->as = AINCL; break; case ADECB: case ADECW: p->as = ADECL; break; case ANEGB: case ANEGW: p->as = ANEGL; break; case ANOTB: case ANOTW: p->as = ANOTL; break; } if(regtyp(&p->from) || p->from.type == D_CONST) { // move or artihmetic into partial register. // from another register or constant can be movl. // we don't switch to 32-bit arithmetic if it can // change how the carry bit is set (and the carry bit is needed). switch(p->as) { case AMOVB: case AMOVW: p->as = AMOVL; break; case AADDB: case AADDW: if(!needc(p->link)) p->as = AADDL; break; case ASUBB: case ASUBW: if(!needc(p->link)) p->as = ASUBL; break; case AMULB: case AMULW: p->as = AMULL; break; case AIMULB: case AIMULW: p->as = AIMULL; break; case AANDB: case AANDW: p->as = AANDL; break; case AORB: case AORW: p->as = AORL; break; case AXORB: case AXORW: p->as = AXORL; break; case ASHLB: case ASHLW: p->as = ASHLL; break; } } else { // explicit zero extension switch(p->as) { case AMOVB: p->as = AMOVBLZX; break; case AMOVW: p->as = AMOVWLZX; break; } } } } } /* * the idea is to substitute * one register for another * from one MOV to another * MOV a, R0 * ADD b, R0 / no use of R1 * MOV R0, R1 * would be converted to * MOV a, R1 * ADD b, R1 * MOV R1, R0 * hopefully, then the former or latter MOV * will be eliminated by copy propagation. */ static int subprop(Flow *r0) { Prog *p; Adr *v1, *v2; Flow *r; int t; ProgInfo info; p = r0->prog; v1 = &p->from; if(!regtyp(v1)) return 0; v2 = &p->to; if(!regtyp(v2)) return 0; for(r=uniqp(r0); r!=nil; r=uniqp(r)) { if(debug['P'] && debug['v']) print("\t? %P\n", r->prog); if(uniqs(r) == nil) break; p = r->prog; if(p->as == AVARDEF || p->as == AVARKILL) continue; proginfo(&info, p); if(info.flags & Call) return 0; if(info.reguse | info.regset) return 0; if((info.flags & Move) && (info.flags & (SizeL|SizeQ|SizeF|SizeD)) && p->to.type == v1->type) goto gotit; if(copyau(&p->from, v2) || copyau(&p->to, v2)) break; if(copysub(&p->from, v1, v2, 0) || copysub(&p->to, v1, v2, 0)) break; } return 0; gotit: copysub(&p->to, v1, v2, 1); if(debug['P']) { print("gotit: %D->%D\n%P", v1, v2, r->prog); if(p->from.type == v2->type) print(" excise"); print("\n"); } for(r=uniqs(r); r!=r0; r=uniqs(r)) { p = r->prog; copysub(&p->from, v1, v2, 1); copysub(&p->to, v1, v2, 1); if(debug['P']) print("%P\n", r->prog); } t = v1->type; v1->type = v2->type; v2->type = t; if(debug['P']) print("%P last\n", r->prog); return 1; } /* * The idea is to remove redundant copies. * v1->v2 F=0 * (use v2 s/v2/v1/)* * set v1 F=1 * use v2 return fail * ----------------- * v1->v2 F=0 * (use v2 s/v2/v1/)* * set v1 F=1 * set v2 return success */ static int copyprop(Graph *g, Flow *r0) { Prog *p; Adr *v1, *v2; USED(g); p = r0->prog; v1 = &p->from; v2 = &p->to; if(copyas(v1, v2)) return 1; gactive++; return copy1(v1, v2, r0->s1, 0); } static int copy1(Adr *v1, Adr *v2, Flow *r, int f) { int t; Prog *p; if(r->active == gactive) { if(debug['P']) print("act set; return 1\n"); return 1; } r->active = gactive; if(debug['P']) print("copy %D->%D f=%d\n", v1, v2, f); for(; r != nil; r = r->s1) { p = r->prog; if(debug['P']) print("%P", p); if(!f && uniqp(r) == nil) { f = 1; if(debug['P']) print("; merge; f=%d", f); } t = copyu(p, v2, nil); switch(t) { case 2: /* rar, can't split */ if(debug['P']) print("; %D rar; return 0\n", v2); return 0; case 3: /* set */ if(debug['P']) print("; %D set; return 1\n", v2); return 1; case 1: /* used, substitute */ case 4: /* use and set */ if(f) { if(!debug['P']) return 0; if(t == 4) print("; %D used+set and f=%d; return 0\n", v2, f); else print("; %D used and f=%d; return 0\n", v2, f); return 0; } if(copyu(p, v2, v1)) { if(debug['P']) print("; sub fail; return 0\n"); return 0; } if(debug['P']) print("; sub %D/%D", v2, v1); if(t == 4) { if(debug['P']) print("; %D used+set; return 1\n", v2); return 1; } break; } if(!f) { t = copyu(p, v1, nil); if(!f && (t == 2 || t == 3 || t == 4)) { f = 1; if(debug['P']) print("; %D set and !f; f=%d", v1, f); } } if(debug['P']) print("\n"); if(r->s2) if(!copy1(v1, v2, r->s2, f)) return 0; } return 1; } /* * return * 1 if v only used (and substitute), * 2 if read-alter-rewrite * 3 if set * 4 if set and used * 0 otherwise (not touched) */ int copyu(Prog *p, Adr *v, Adr *s) { ProgInfo info; switch(p->as) { case AJMP: if(s != nil) { if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyau(&p->to, v)) return 1; return 0; case ARET: if(s != nil) return 1; return 3; case ACALL: if(REGEXT && v->type <= REGEXT && v->type > exregoffset) return 2; if(REGARG >= 0 && v->type == (uchar)REGARG) return 2; if(v->type == p->from.type) return 2; if(s != nil) { if(copysub(&p->to, v, s, 1)) return 1; return 0; } if(copyau(&p->to, v)) return 4; return 3; case ATEXT: if(REGARG >= 0 && v->type == (uchar)REGARG) return 3; return 0; } if(p->as == AVARDEF || p->as == AVARKILL) return 0; proginfo(&info, p); if((info.reguse|info.regset) & RtoB(v->type)) return 2; if(info.flags & LeftAddr) if(copyas(&p->from, v)) return 2; if((info.flags & (RightRead|RightWrite)) == (RightRead|RightWrite)) if(copyas(&p->to, v)) return 2; if(info.flags & RightWrite) { if(copyas(&p->to, v)) { if(s != nil) return copysub(&p->from, v, s, 1); if(copyau(&p->from, v)) return 4; return 3; } } if(info.flags & (LeftAddr|LeftRead|LeftWrite|RightAddr|RightRead|RightWrite)) { if(s != nil) { if(copysub(&p->from, v, s, 1)) return 1; return copysub(&p->to, v, s, 1); } if(copyau(&p->from, v)) return 1; if(copyau(&p->to, v)) return 1; } return 0; } /* * direct reference, * could be set/use depending on * semantics */ static int copyas(Adr *a, Adr *v) { if(D_AL <= a->type && a->type <= D_BL) fatal("use of byte register"); if(D_AL <= v->type && v->type <= D_BL) fatal("use of byte register"); if(a->type != v->type) return 0; if(regtyp(v)) return 1; if(v->type == D_AUTO || v->type == D_PARAM) if(v->offset == a->offset) return 1; return 0; } int sameaddr(Addr *a, Addr *v) { if(a->type != v->type) return 0; if(regtyp(v)) return 1; if(v->type == D_AUTO || v->type == D_PARAM) if(v->offset == a->offset) return 1; return 0; } /* * either direct or indirect */ static int copyau(Adr *a, Adr *v) { if(copyas(a, v)) return 1; if(regtyp(v)) { if(a->type-D_INDIR == v->type) return 1; if(a->index == v->type) return 1; } return 0; } /* * substitute s for v in a * return failure to substitute */ static int copysub(Adr *a, Adr *v, Adr *s, int f) { int t; if(copyas(a, v)) { t = s->type; if(t >= D_AX && t <= D_DI || t >= D_X0 && t <= D_X7) { if(f) a->type = t; } return 0; } if(regtyp(v)) { t = v->type; if(a->type == t+D_INDIR) { if((s->type == D_BP) && a->index != D_NONE) return 1; /* can't use BP-base with index */ if(f) a->type = s->type+D_INDIR; // return 0; } if(a->index == t) { if(f) a->index = s->type; return 0; } return 0; } return 0; } static void conprop(Flow *r0) { Flow *r; Prog *p, *p0; int t; Adr *v0; p0 = r0->prog; v0 = &p0->to; r = r0; loop: r = uniqs(r); if(r == nil || r == r0) return; if(uniqp(r) == nil) return; p = r->prog; t = copyu(p, v0, nil); switch(t) { case 0: // miss case 1: // use goto loop; case 2: // rar case 4: // use and set break; case 3: // set if(p->as == p0->as) if(p->from.type == p0->from.type) if(p->from.node == p0->from.node) if(p->from.offset == p0->from.offset) if(p->from.scale == p0->from.scale) if(p->from.type == D_FCONST && p->from.u.dval == p0->from.u.dval) if(p->from.index == p0->from.index) { excise(r); goto loop; } break; } } int smallindir(Addr *a, Addr *reg) { return regtyp(reg) && a->type == D_INDIR + reg->type && a->index == D_NONE && 0 <= a->offset && a->offset < 4096; } int stackaddr(Addr *a) { return regtyp(a) && a->type == D_SP; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8g/prog.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000026647�12412656734�014476� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2013 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. #include #include #include "gg.h" #include "opt.h" // Matches real RtoB but can be used in global initializer. #define RtoB(r) (1<<((r)-D_AX)) enum { AX = RtoB(D_AX), BX = RtoB(D_BX), CX = RtoB(D_CX), DX = RtoB(D_DX), DI = RtoB(D_DI), SI = RtoB(D_SI), LeftRdwr = LeftRead | LeftWrite, RightRdwr = RightRead | RightWrite, }; #undef RtoB // This table gives the basic information about instruction // generated by the compiler and processed in the optimizer. // See opt.h for bit definitions. // // Instructions not generated need not be listed. // As an exception to that rule, we typically write down all the // size variants of an operation even if we just use a subset. // // The table is formatted for 8-space tabs. static ProgInfo progtable[ALAST] = { [ATYPE]= {Pseudo | Skip}, [ATEXT]= {Pseudo}, [AFUNCDATA]= {Pseudo}, [APCDATA]= {Pseudo}, [AUNDEF]= {Break}, [AUSEFIELD]= {OK}, [ACHECKNIL]= {LeftRead}, [AVARDEF]= {Pseudo | RightWrite}, [AVARKILL]= {Pseudo | RightWrite}, // NOP is an internal no-op that also stands // for USED and SET annotations, not the Intel opcode. [ANOP]= {LeftRead | RightWrite}, [AADCL]= {SizeL | LeftRead | RightRdwr | SetCarry | UseCarry}, [AADCW]= {SizeW | LeftRead | RightRdwr | SetCarry | UseCarry}, [AADDB]= {SizeB | LeftRead | RightRdwr | SetCarry}, [AADDL]= {SizeL | LeftRead | RightRdwr | SetCarry}, [AADDW]= {SizeW | LeftRead | RightRdwr | SetCarry}, [AADDSD]= {SizeD | LeftRead | RightRdwr}, [AADDSS]= {SizeF | LeftRead | RightRdwr}, [AANDB]= {SizeB | LeftRead | RightRdwr | SetCarry}, [AANDL]= {SizeL | LeftRead | RightRdwr | SetCarry}, [AANDW]= {SizeW | LeftRead | RightRdwr | SetCarry}, [ACALL]= {RightAddr | Call | KillCarry}, [ACDQ]= {OK, AX, AX | DX}, [ACWD]= {OK, AX, AX | DX}, [ACLD]= {OK}, [ASTD]= {OK}, [ACMPB]= {SizeB | LeftRead | RightRead | SetCarry}, [ACMPL]= {SizeL | LeftRead | RightRead | SetCarry}, [ACMPW]= {SizeW | LeftRead | RightRead | SetCarry}, [ACOMISD]= {SizeD | LeftRead | RightRead | SetCarry}, [ACOMISS]= {SizeF | LeftRead | RightRead | SetCarry}, [ACVTSD2SL]= {SizeL | LeftRead | RightWrite | Conv}, [ACVTSD2SS]= {SizeF | LeftRead | RightWrite | Conv}, [ACVTSL2SD]= {SizeD | LeftRead | RightWrite | Conv}, [ACVTSL2SS]= {SizeF | LeftRead | RightWrite | Conv}, [ACVTSS2SD]= {SizeD | LeftRead | RightWrite | Conv}, [ACVTSS2SL]= {SizeL | LeftRead | RightWrite | Conv}, [ACVTTSD2SL]= {SizeL | LeftRead | RightWrite | Conv}, [ACVTTSS2SL]= {SizeL | LeftRead | RightWrite | Conv}, [ADECB]= {SizeB | RightRdwr}, [ADECL]= {SizeL | RightRdwr}, [ADECW]= {SizeW | RightRdwr}, [ADIVB]= {SizeB | LeftRead | SetCarry, AX, AX}, [ADIVL]= {SizeL | LeftRead | SetCarry, AX|DX, AX|DX}, [ADIVW]= {SizeW | LeftRead | SetCarry, AX|DX, AX|DX}, [ADIVSD]= {SizeD | LeftRead | RightRdwr}, [ADIVSS]= {SizeF | LeftRead | RightRdwr}, [AFLDCW]= {SizeW | LeftAddr}, [AFSTCW]= {SizeW | RightAddr}, [AFSTSW]= {SizeW | RightAddr | RightWrite}, [AFADDD]= {SizeD | LeftAddr | RightRdwr}, [AFADDDP]= {SizeD | LeftAddr | RightRdwr}, [AFADDF]= {SizeF | LeftAddr | RightRdwr}, [AFCOMD]= {SizeD | LeftAddr | RightRead}, [AFCOMDP]= {SizeD | LeftAddr | RightRead}, [AFCOMDPP]= {SizeD | LeftAddr | RightRead}, [AFCOMF]= {SizeF | LeftAddr | RightRead}, [AFCOMFP]= {SizeF | LeftAddr | RightRead}, [AFUCOMIP]= {SizeF | LeftAddr | RightRead}, [AFCHS]= {SizeD | RightRdwr}, // also SizeF [AFDIVDP]= {SizeD | LeftAddr | RightRdwr}, [AFDIVF]= {SizeF | LeftAddr | RightRdwr}, [AFDIVD]= {SizeD | LeftAddr | RightRdwr}, [AFDIVRDP]= {SizeD | LeftAddr | RightRdwr}, [AFDIVRF]= {SizeF | LeftAddr | RightRdwr}, [AFDIVRD]= {SizeD | LeftAddr | RightRdwr}, [AFXCHD]= {SizeD | LeftRdwr | RightRdwr}, [AFSUBD]= {SizeD | LeftAddr | RightRdwr}, [AFSUBDP]= {SizeD | LeftAddr | RightRdwr}, [AFSUBF]= {SizeF | LeftAddr | RightRdwr}, [AFSUBRD]= {SizeD | LeftAddr | RightRdwr}, [AFSUBRDP]= {SizeD | LeftAddr | RightRdwr}, [AFSUBRF]= {SizeF | LeftAddr | RightRdwr}, [AFMOVD]= {SizeD | LeftAddr | RightWrite}, [AFMOVF]= {SizeF | LeftAddr | RightWrite}, [AFMOVL]= {SizeL | LeftAddr | RightWrite}, [AFMOVW]= {SizeW | LeftAddr | RightWrite}, [AFMOVV]= {SizeQ | LeftAddr | RightWrite}, // These instructions are marked as RightAddr // so that the register optimizer does not try to replace the // memory references with integer register references. // But they do not use the previous value at the address, so // we also mark them RightWrite. [AFMOVDP]= {SizeD | LeftRead | RightWrite | RightAddr}, [AFMOVFP]= {SizeF | LeftRead | RightWrite | RightAddr}, [AFMOVLP]= {SizeL | LeftRead | RightWrite | RightAddr}, [AFMOVWP]= {SizeW | LeftRead | RightWrite | RightAddr}, [AFMOVVP]= {SizeQ | LeftRead | RightWrite | RightAddr}, [AFMULD]= {SizeD | LeftAddr | RightRdwr}, [AFMULDP]= {SizeD | LeftAddr | RightRdwr}, [AFMULF]= {SizeF | LeftAddr | RightRdwr}, [AIDIVB]= {SizeB | LeftRead | SetCarry, AX, AX}, [AIDIVL]= {SizeL | LeftRead | SetCarry, AX|DX, AX|DX}, [AIDIVW]= {SizeW | LeftRead | SetCarry, AX|DX, AX|DX}, [AIMULB]= {SizeB | LeftRead | SetCarry, AX, AX}, [AIMULL]= {SizeL | LeftRead | ImulAXDX | SetCarry}, [AIMULW]= {SizeW | LeftRead | ImulAXDX | SetCarry}, [AINCB]= {SizeB | RightRdwr}, [AINCL]= {SizeL | RightRdwr}, [AINCW]= {SizeW | RightRdwr}, [AJCC]= {Cjmp | UseCarry}, [AJCS]= {Cjmp | UseCarry}, [AJEQ]= {Cjmp | UseCarry}, [AJGE]= {Cjmp | UseCarry}, [AJGT]= {Cjmp | UseCarry}, [AJHI]= {Cjmp | UseCarry}, [AJLE]= {Cjmp | UseCarry}, [AJLS]= {Cjmp | UseCarry}, [AJLT]= {Cjmp | UseCarry}, [AJMI]= {Cjmp | UseCarry}, [AJNE]= {Cjmp | UseCarry}, [AJOC]= {Cjmp | UseCarry}, [AJOS]= {Cjmp | UseCarry}, [AJPC]= {Cjmp | UseCarry}, [AJPL]= {Cjmp | UseCarry}, [AJPS]= {Cjmp | UseCarry}, [AJMP]= {Jump | Break | KillCarry}, [ALEAL]= {LeftAddr | RightWrite}, [AMOVBLSX]= {SizeL | LeftRead | RightWrite | Conv}, [AMOVBLZX]= {SizeL | LeftRead | RightWrite | Conv}, [AMOVBWSX]= {SizeW | LeftRead | RightWrite | Conv}, [AMOVBWZX]= {SizeW | LeftRead | RightWrite | Conv}, [AMOVWLSX]= {SizeL | LeftRead | RightWrite | Conv}, [AMOVWLZX]= {SizeL | LeftRead | RightWrite | Conv}, [AMOVB]= {SizeB | LeftRead | RightWrite | Move}, [AMOVL]= {SizeL | LeftRead | RightWrite | Move}, [AMOVW]= {SizeW | LeftRead | RightWrite | Move}, [AMOVSB]= {OK, DI|SI, DI|SI}, [AMOVSL]= {OK, DI|SI, DI|SI}, [AMOVSW]= {OK, DI|SI, DI|SI}, [ADUFFCOPY]= {OK, DI|SI, DI|SI|CX}, [AMOVSD]= {SizeD | LeftRead | RightWrite | Move}, [AMOVSS]= {SizeF | LeftRead | RightWrite | Move}, // We use MOVAPD as a faster synonym for MOVSD. [AMOVAPD]= {SizeD | LeftRead | RightWrite | Move}, [AMULB]= {SizeB | LeftRead | SetCarry, AX, AX}, [AMULL]= {SizeL | LeftRead | SetCarry, AX, AX|DX}, [AMULW]= {SizeW | LeftRead | SetCarry, AX, AX|DX}, [AMULSD]= {SizeD | LeftRead | RightRdwr}, [AMULSS]= {SizeF | LeftRead | RightRdwr}, [ANEGB]= {SizeB | RightRdwr | SetCarry}, [ANEGL]= {SizeL | RightRdwr | SetCarry}, [ANEGW]= {SizeW | RightRdwr | SetCarry}, [ANOTB]= {SizeB | RightRdwr}, [ANOTL]= {SizeL | RightRdwr}, [ANOTW]= {SizeW | RightRdwr}, [AORB]= {SizeB | LeftRead | RightRdwr | SetCarry}, [AORL]= {SizeL | LeftRead | RightRdwr | SetCarry}, [AORW]= {SizeW | LeftRead | RightRdwr | SetCarry}, [APOPL]= {SizeL | RightWrite}, [APUSHL]= {SizeL | LeftRead}, [ARCLB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry | UseCarry}, [ARCLL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry | UseCarry}, [ARCLW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry | UseCarry}, [ARCRB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry | UseCarry}, [ARCRL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry | UseCarry}, [ARCRW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry | UseCarry}, [AREP]= {OK, CX, CX}, [AREPN]= {OK, CX, CX}, [ARET]= {Break | KillCarry}, [AROLB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry}, [AROLL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry}, [AROLW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ARORB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ARORL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ARORW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASAHF]= {OK, AX, AX}, [ASALB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASALL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASALW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASARB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASARL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASARW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASBBB]= {SizeB | LeftRead | RightRdwr | SetCarry | UseCarry}, [ASBBL]= {SizeL | LeftRead | RightRdwr | SetCarry | UseCarry}, [ASBBW]= {SizeW | LeftRead | RightRdwr | SetCarry | UseCarry}, [ASETCC]= {SizeB | RightRdwr | UseCarry}, [ASETCS]= {SizeB | RightRdwr | UseCarry}, [ASETEQ]= {SizeB | RightRdwr | UseCarry}, [ASETGE]= {SizeB | RightRdwr | UseCarry}, [ASETGT]= {SizeB | RightRdwr | UseCarry}, [ASETHI]= {SizeB | RightRdwr | UseCarry}, [ASETLE]= {SizeB | RightRdwr | UseCarry}, [ASETLS]= {SizeB | RightRdwr | UseCarry}, [ASETLT]= {SizeB | RightRdwr | UseCarry}, [ASETMI]= {SizeB | RightRdwr | UseCarry}, [ASETNE]= {SizeB | RightRdwr | UseCarry}, [ASETOC]= {SizeB | RightRdwr | UseCarry}, [ASETOS]= {SizeB | RightRdwr | UseCarry}, [ASETPC]= {SizeB | RightRdwr | UseCarry}, [ASETPL]= {SizeB | RightRdwr | UseCarry}, [ASETPS]= {SizeB | RightRdwr | UseCarry}, [ASHLB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASHLL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASHLW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASHRB]= {SizeB | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASHRL]= {SizeL | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASHRW]= {SizeW | LeftRead | RightRdwr | ShiftCX | SetCarry}, [ASTOSB]= {OK, AX|DI, DI}, [ASTOSL]= {OK, AX|DI, DI}, [ASTOSW]= {OK, AX|DI, DI}, [ADUFFZERO]= {OK, AX|DI, DI}, [ASUBB]= {SizeB | LeftRead | RightRdwr | SetCarry}, [ASUBL]= {SizeL | LeftRead | RightRdwr | SetCarry}, [ASUBW]= {SizeW | LeftRead | RightRdwr | SetCarry}, [ASUBSD]= {SizeD | LeftRead | RightRdwr}, [ASUBSS]= {SizeF | LeftRead | RightRdwr}, [ATESTB]= {SizeB | LeftRead | RightRead | SetCarry}, [ATESTL]= {SizeL | LeftRead | RightRead | SetCarry}, [ATESTW]= {SizeW | LeftRead | RightRead | SetCarry}, [AUCOMISD]= {SizeD | LeftRead | RightRead}, [AUCOMISS]= {SizeF | LeftRead | RightRead}, [AXCHGB]= {SizeB | LeftRdwr | RightRdwr}, [AXCHGL]= {SizeL | LeftRdwr | RightRdwr}, [AXCHGW]= {SizeW | LeftRdwr | RightRdwr}, [AXORB]= {SizeB | LeftRead | RightRdwr | SetCarry}, [AXORL]= {SizeL | LeftRead | RightRdwr | SetCarry}, [AXORW]= {SizeW | LeftRead | RightRdwr | SetCarry}, }; void proginfo(ProgInfo *info, Prog *p) { *info = progtable[p->as]; if(info->flags == 0) fatal("unknown instruction %P", p); if((info->flags & ShiftCX) && p->from.type != D_CONST) info->reguse |= CX; if(info->flags & ImulAXDX) { if(p->to.type == D_NONE) { info->reguse |= AX; info->regset |= AX | DX; } else { info->flags |= RightRdwr; } } // Addressing makes some registers used. if(p->from.type >= D_INDIR) info->regindex |= RtoB(p->from.type-D_INDIR); if(p->from.index != D_NONE) info->regindex |= RtoB(p->from.index); if(p->to.type >= D_INDIR) info->regindex |= RtoB(p->to.type-D_INDIR); if(p->to.index != D_NONE) info->regindex |= RtoB(p->to.index); } �����������������������������������������������������������������������������������������go/src/cmd/8g/reg.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000065104�12412656737�014276� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Derived from Inferno utils/6c/reg.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/reg.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include "gg.h" #include "opt.h" #define NREGVAR 16 /* 8 integer + 8 floating */ #define REGBITS ((uint32)0xffff) static Reg* firstr; static int first = 1; int rcmp(const void *a1, const void *a2) { Rgn *p1, *p2; int c1, c2; p1 = (Rgn*)a1; p2 = (Rgn*)a2; c1 = p2->cost; c2 = p1->cost; if(c1 -= c2) return c1; return p2->varno - p1->varno; } static void setaddrs(Bits bit) { int i, n; Var *v; Node *node; while(bany(&bit)) { // convert each bit to a variable i = bnum(bit); node = var[i].node; n = var[i].name; bit.b[i/32] &= ~(1L<<(i%32)); // disable all pieces of that variable for(i=0; inode == node && v->name == n) v->addr = 2; } } } static char* regname[] = { ".ax", ".cx", ".dx", ".bx", ".sp", ".bp", ".si", ".di", ".x0", ".x1", ".x2", ".x3", ".x4", ".x5", ".x6", ".x7", }; static Node* regnodes[NREGVAR]; static void walkvardef(Node *n, Reg *r, int active); void regopt(Prog *firstp) { Reg *r, *r1; Prog *p; Graph *g; ProgInfo info; int i, z, active; uint32 vreg; Bits bit; if(first) { fmtinstall('Q', Qconv); exregoffset = D_DI; // no externals first = 0; } mergetemp(firstp); /* * control flow is more complicated in generated go code * than in generated c code. define pseudo-variables for * registers, so we have complete register usage information. */ nvar = NREGVAR; memset(var, 0, NREGVAR*sizeof var[0]); for(i=0; iopt = nil; return; } firstr = (Reg*)g->start; for(r = firstr; r != R; r = (Reg*)r->f.link) { p = r->f.prog; if(p->as == AVARDEF || p->as == AVARKILL) continue; proginfo(&info, p); // Avoid making variables for direct-called functions. if(p->as == ACALL && p->to.type == D_EXTERN) continue; r->use1.b[0] |= info.reguse | info.regindex; r->set.b[0] |= info.regset; bit = mkvar(r, &p->from); if(bany(&bit)) { if(info.flags & LeftAddr) setaddrs(bit); if(info.flags & LeftRead) for(z=0; zuse1.b[z] |= bit.b[z]; if(info.flags & LeftWrite) for(z=0; zset.b[z] |= bit.b[z]; } bit = mkvar(r, &p->to); if(bany(&bit)) { if(info.flags & RightAddr) setaddrs(bit); if(info.flags & RightRead) for(z=0; zuse2.b[z] |= bit.b[z]; if(info.flags & RightWrite) for(z=0; zset.b[z] |= bit.b[z]; } } if(firstr == R) return; for(i=0; iaddr) { bit = blsh(i); for(z=0; zaddr, v->etype, v->width, v->node, v->offset); } if(debug['R'] && debug['v']) dumpit("pass1", &firstr->f, 1); /* * pass 2 * find looping structure */ flowrpo(g); if(debug['R'] && debug['v']) dumpit("pass2", &firstr->f, 1); /* * pass 2.5 * iterate propagating fat vardef covering forward * r->act records vars with a VARDEF since the last CALL. * (r->act will be reused in pass 5 for something else, * but we'll be done with it by then.) */ active = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) { r->f.active = 0; r->act = zbits; } for(r = firstr; r != R; r = (Reg*)r->f.link) { p = r->f.prog; if(p->as == AVARDEF && isfat(p->to.node->type) && p->to.node->opt != nil) { active++; walkvardef(p->to.node, r, active); } } /* * pass 3 * iterate propagating usage * back until flow graph is complete */ loop1: change = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) r->f.active = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) if(r->f.prog->as == ARET) prop(r, zbits, zbits); loop11: /* pick up unreachable code */ i = 0; for(r = firstr; r != R; r = r1) { r1 = (Reg*)r->f.link; if(r1 && r1->f.active && !r->f.active) { prop(r, zbits, zbits); i = 1; } } if(i) goto loop11; if(change) goto loop1; if(debug['R'] && debug['v']) dumpit("pass3", &firstr->f, 1); /* * pass 4 * iterate propagating register/variable synchrony * forward until graph is complete */ loop2: change = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) r->f.active = 0; synch(firstr, zbits); if(change) goto loop2; if(debug['R'] && debug['v']) dumpit("pass4", &firstr->f, 1); /* * pass 4.5 * move register pseudo-variables into regu. */ for(r = firstr; r != R; r = (Reg*)r->f.link) { r->regu = (r->refbehind.b[0] | r->set.b[0]) & REGBITS; r->set.b[0] &= ~REGBITS; r->use1.b[0] &= ~REGBITS; r->use2.b[0] &= ~REGBITS; r->refbehind.b[0] &= ~REGBITS; r->refahead.b[0] &= ~REGBITS; r->calbehind.b[0] &= ~REGBITS; r->calahead.b[0] &= ~REGBITS; r->regdiff.b[0] &= ~REGBITS; r->act.b[0] &= ~REGBITS; } /* * pass 5 * isolate regions * calculate costs (paint1) */ r = firstr; if(r) { for(z=0; zrefahead.b[z] | r->calahead.b[z]) & ~(externs.b[z] | params.b[z] | addrs.b[z] | consts.b[z]); if(bany(&bit) && !r->f.refset) { // should never happen - all variables are preset if(debug['w']) print("%L: used and not set: %Q\n", r->f.prog->lineno, bit); r->f.refset = 1; } } for(r = firstr; r != R; r = (Reg*)r->f.link) r->act = zbits; rgp = region; nregion = 0; for(r = firstr; r != R; r = (Reg*)r->f.link) { for(z=0; zset.b[z] & ~(r->refahead.b[z] | r->calahead.b[z] | addrs.b[z]); if(bany(&bit) && !r->f.refset) { if(debug['w']) print("%L: set and not used: %Q\n", r->f.prog->lineno, bit); r->f.refset = 1; excise(&r->f); } for(z=0; zact.b[z] | addrs.b[z]); while(bany(&bit)) { i = bnum(bit); rgp->enter = r; rgp->varno = i; change = 0; paint1(r, i); bit.b[i/32] &= ~(1L<<(i%32)); if(change <= 0) continue; rgp->cost = change; nregion++; if(nregion >= NRGN) { if(debug['R'] && debug['v']) print("too many regions\n"); goto brk; } rgp++; } } brk: qsort(region, nregion, sizeof(region[0]), rcmp); /* * pass 6 * determine used registers (paint2) * replace code (paint3) */ rgp = region; for(i=0; ivarno); vreg = paint2(rgp->enter, rgp->varno); vreg = allreg(vreg, rgp); if(rgp->regno != 0) paint3(rgp->enter, rgp->varno, vreg, rgp->regno); rgp++; } if(debug['R'] && debug['v']) dumpit("pass6", &firstr->f, 1); /* * free aux structures. peep allocates new ones. */ for(i=0; iopt = nil; flowend(g); firstr = R; /* * pass 7 * peep-hole on basic block */ if(!debug['R'] || debug['P']) peep(firstp); /* * eliminate nops */ for(p=firstp; p!=P; p=p->link) { while(p->link != P && p->link->as == ANOP) p->link = p->link->link; if(p->to.type == D_BRANCH) while(p->to.u.branch != P && p->to.u.branch->as == ANOP) p->to.u.branch = p->to.u.branch->link; } if(!use_sse) for(p=firstp; p!=P; p=p->link) { if(p->from.type >= D_X0 && p->from.type <= D_X7) fatal("invalid use of %R with GO386=387: %P", p->from.type, p); if(p->to.type >= D_X0 && p->to.type <= D_X7) fatal("invalid use of %R with GO386=387: %P", p->to.type, p); } if(debug['R']) { if(ostats.ncvtreg || ostats.nspill || ostats.nreload || ostats.ndelmov || ostats.nvar || ostats.naddr || 0) print("\nstats\n"); if(ostats.ncvtreg) print(" %4d cvtreg\n", ostats.ncvtreg); if(ostats.nspill) print(" %4d spill\n", ostats.nspill); if(ostats.nreload) print(" %4d reload\n", ostats.nreload); if(ostats.ndelmov) print(" %4d delmov\n", ostats.ndelmov); if(ostats.nvar) print(" %4d var\n", ostats.nvar); if(ostats.naddr) print(" %4d addr\n", ostats.naddr); memset(&ostats, 0, sizeof(ostats)); } } static void walkvardef(Node *n, Reg *r, int active) { Reg *r1, *r2; int bn; Var *v; for(r1=r; r1!=R; r1=(Reg*)r1->f.s1) { if(r1->f.active == active) break; r1->f.active = active; if(r1->f.prog->as == AVARKILL && r1->f.prog->to.node == n) break; for(v=n->opt; v!=nil; v=v->nextinnode) { bn = v - var; r1->act.b[bn/32] |= 1L << (bn%32); } if(r1->f.prog->as == ACALL) break; } for(r2=r; r2!=r1; r2=(Reg*)r2->f.s1) if(r2->f.s2 != nil) walkvardef(n, (Reg*)r2->f.s2, active); } /* * add mov b,rn * just after r */ void addmove(Reg *r, int bn, int rn, int f) { Prog *p, *p1; Adr *a; Var *v; p1 = mal(sizeof(*p1)); clearp(p1); p1->pc = 9999; p = r->f.prog; p1->link = p->link; p->link = p1; p1->lineno = p->lineno; v = var + bn; a = &p1->to; a->offset = v->offset; a->etype = v->etype; a->type = v->name; a->node = v->node; a->sym = linksym(v->node->sym); // need to clean this up with wptr and // some of the defaults p1->as = AMOVL; switch(v->etype) { default: fatal("unknown type %E", v->etype); case TINT8: case TUINT8: case TBOOL: p1->as = AMOVB; break; case TINT16: case TUINT16: p1->as = AMOVW; break; case TFLOAT32: p1->as = AMOVSS; break; case TFLOAT64: p1->as = AMOVSD; break; case TINT: case TUINT: case TINT32: case TUINT32: case TPTR32: break; } p1->from.type = rn; if(!f) { p1->from = *a; *a = zprog.from; a->type = rn; if(v->etype == TUINT8) p1->as = AMOVB; if(v->etype == TUINT16) p1->as = AMOVW; } if(debug['R'] && debug['v']) print("%P ===add=== %P\n", p, p1); ostats.nspill++; } uint32 doregbits(int r) { uint32 b; b = 0; if(r >= D_INDIR) r -= D_INDIR; if(r >= D_AX && r <= D_DI) b |= RtoB(r); else if(r >= D_AL && r <= D_BL) b |= RtoB(r-D_AL+D_AX); else if(r >= D_AH && r <= D_BH) b |= RtoB(r-D_AH+D_AX); else if(r >= D_X0 && r <= D_X0+7) b |= FtoB(r); return b; } static int overlap(int32 o1, int w1, int32 o2, int w2) { int32 t1, t2; t1 = o1+w1; t2 = o2+w2; if(!(t1 > o2 && t2 > o1)) return 0; return 1; } Bits mkvar(Reg *r, Adr *a) { Var *v; int i, t, n, et, z, w, flag, regu; int32 o; Bits bit; Node *node; /* * mark registers used */ t = a->type; if(t == D_NONE) goto none; if(r != R) r->use1.b[0] |= doregbits(a->index); switch(t) { default: regu = doregbits(t); if(regu == 0) goto none; bit = zbits; bit.b[0] = regu; return bit; case D_ADDR: a->type = a->index; bit = mkvar(r, a); setaddrs(bit); a->type = t; ostats.naddr++; goto none; case D_EXTERN: case D_STATIC: case D_PARAM: case D_AUTO: n = t; break; } node = a->node; if(node == N || node->op != ONAME || node->orig == N) goto none; node = node->orig; if(node->orig != node) fatal("%D: bad node", a); if(node->sym == S || node->sym->name[0] == '.') goto none; et = a->etype; o = a->offset; w = a->width; if(w < 0) fatal("bad width %d for %D", w, a); flag = 0; for(i=0; inode == node && v->name == n) { if(v->offset == o) if(v->etype == et) if(v->width == w) return blsh(i); // if they overlap, disable both if(overlap(v->offset, v->width, o, w)) { if(debug['R']) print("disable %s\n", node->sym->name); v->addr = 1; flag = 1; } } } switch(et) { case 0: case TFUNC: goto none; } if(nvar >= NVAR) { if(debug['w'] > 1 && node != N) fatal("variable not optimized: %D", a); // If we're not tracking a word in a variable, mark the rest as // having its address taken, so that we keep the whole thing // live at all calls. otherwise we might optimize away part of // a variable but not all of it. for(i=0; inode == node) v->addr = 1; } goto none; } i = nvar; nvar++; v = var+i; v->offset = o; v->name = n; v->etype = et; v->width = w; v->addr = flag; // funny punning v->node = node; // node->opt is the head of a linked list // of Vars within the given Node, so that // we can start at a Var and find all the other // Vars in the same Go variable. v->nextinnode = node->opt; node->opt = v; bit = blsh(i); if(n == D_EXTERN || n == D_STATIC) for(z=0; zclass == PPARAM) for(z=0; zclass == PPARAMOUT) for(z=0; zaddrtaken) v->addr = 1; // Disable registerization for globals, because: // (1) we might panic at any time and we want the recovery code // to see the latest values (issue 1304). // (2) we don't know what pointers might point at them and we want // loads via those pointers to see updated values and vice versa (issue 7995). // // Disable registerization for results if using defer, because the deferred func // might recover and return, causing the current values to be used. if(node->class == PEXTERN || (hasdefer && node->class == PPARAMOUT)) v->addr = 1; if(debug['R']) print("bit=%2d et=%2E w=%d+%d %#N %D flag=%d\n", i, et, o, w, node, a, v->addr); ostats.nvar++; return bit; none: return zbits; } void prop(Reg *r, Bits ref, Bits cal) { Reg *r1, *r2; int z, i, j; Var *v, *v1; for(r1 = r; r1 != R; r1 = (Reg*)r1->f.p1) { for(z=0; zrefahead.b[z]; if(ref.b[z] != r1->refahead.b[z]) { r1->refahead.b[z] = ref.b[z]; change++; } cal.b[z] |= r1->calahead.b[z]; if(cal.b[z] != r1->calahead.b[z]) { r1->calahead.b[z] = cal.b[z]; change++; } } switch(r1->f.prog->as) { case ACALL: if(noreturn(r1->f.prog)) break; // Mark all input variables (ivar) as used, because that's what the // liveness bitmaps say. The liveness bitmaps say that so that a // panic will not show stale values in the parameter dump. // Mark variables with a recent VARDEF (r1->act) as used, // so that the optimizer flushes initializations to memory, // so that if a garbage collection happens during this CALL, // the collector will see initialized memory. Again this is to // match what the liveness bitmaps say. for(z=0; zact.b[z]; ref.b[z] = 0; } // cal.b is the current approximation of what's live across the call. // Every bit in cal.b is a single stack word. For each such word, // find all the other tracked stack words in the same Go variable // (struct/slice/string/interface) and mark them live too. // This is necessary because the liveness analysis for the garbage // collector works at variable granularity, not at word granularity. // It is fundamental for slice/string/interface: the garbage collector // needs the whole value, not just some of the words, in order to // interpret the other bits correctly. Specifically, slice needs a consistent // ptr and cap, string needs a consistent ptr and len, and interface // needs a consistent type word and data word. for(z=0; z= nvar || ((cal.b[z]>>i)&1) == 0) continue; v = var+z*32+i; if(v->node->opt == nil) // v represents fixed register, not Go variable continue; // v->node->opt is the head of a linked list of Vars // corresponding to tracked words from the Go variable v->node. // Walk the list and set all the bits. // For a large struct this could end up being quadratic: // after the first setting, the outer loop (for z, i) would see a 1 bit // for all of the remaining words in the struct, and for each such // word would go through and turn on all the bits again. // To avoid the quadratic behavior, we only turn on the bits if // v is the head of the list or if the head's bit is not yet turned on. // This will set the bits at most twice, keeping the overall loop linear. v1 = v->node->opt; j = v1 - var; if(v == v1 || ((cal.b[j/32]>>(j&31))&1) == 0) { for(; v1 != nil; v1 = v1->nextinnode) { j = v1 - var; cal.b[j/32] |= 1<<(j&31); } } } } break; case ATEXT: for(z=0; zset.b[z]) | r1->use1.b[z] | r1->use2.b[z]; cal.b[z] &= ~(r1->set.b[z] | r1->use1.b[z] | r1->use2.b[z]); r1->refbehind.b[z] = ref.b[z]; r1->calbehind.b[z] = cal.b[z]; } if(r1->f.active) break; r1->f.active = 1; } for(; r != r1; r = (Reg*)r->f.p1) for(r2 = (Reg*)r->f.p2; r2 != R; r2 = (Reg*)r2->f.p2link) prop(r2, r->refbehind, r->calbehind); } void synch(Reg *r, Bits dif) { Reg *r1; int z; for(r1 = r; r1 != R; r1 = (Reg*)r1->f.s1) { for(z=0; zrefbehind.b[z] & r1->refahead.b[z])) | r1->set.b[z] | r1->regdiff.b[z]; if(dif.b[z] != r1->regdiff.b[z]) { r1->regdiff.b[z] = dif.b[z]; change++; } } if(r1->f.active) break; r1->f.active = 1; for(z=0; zcalbehind.b[z] & r1->calahead.b[z]); if((Reg*)r1->f.s2 != R) synch((Reg*)r1->f.s2, dif); } } uint32 allreg(uint32 b, Rgn *r) { Var *v; int i; v = var + r->varno; r->regno = 0; switch(v->etype) { default: fatal("unknown etype %d/%E", bitno(b), v->etype); break; case TINT8: case TUINT8: case TINT16: case TUINT16: case TINT32: case TUINT32: case TINT64: case TINT: case TUINT: case TUINTPTR: case TBOOL: case TPTR32: i = BtoR(~b); if(i && r->cost > 0) { r->regno = i; return RtoB(i); } break; case TFLOAT32: case TFLOAT64: if(!use_sse) break; i = BtoF(~b); if(i && r->cost > 0) { r->regno = i; return FtoB(i); } break; } return 0; } void paint1(Reg *r, int bn) { Reg *r1; Prog *p; int z; uint32 bb; z = bn/32; bb = 1L<<(bn%32); if(r->act.b[z] & bb) return; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = (Reg*)r->f.p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(r1->act.b[z] & bb) break; r = r1; } if(LOAD(r) & ~(r->set.b[z]&~(r->use1.b[z]|r->use2.b[z])) & bb) { change -= CLOAD * r->f.loop; } for(;;) { r->act.b[z] |= bb; p = r->f.prog; if(r->f.prog->as != ANOP) { // don't give credit for NOPs if(r->use1.b[z] & bb) { change += CREF * r->f.loop; if(p->as == AFMOVL || p->as == AFMOVW) if(BtoR(bb) != D_F0) change = -CINF; } if((r->use2.b[z]|r->set.b[z]) & bb) { change += CREF * r->f.loop; if(p->as == AFMOVL || p->as == AFMOVW) if(BtoR(bb) != D_F0) change = -CINF; } } if(STORE(r) & r->regdiff.b[z] & bb) { change -= CLOAD * r->f.loop; if(p->as == AFMOVL || p->as == AFMOVW) if(BtoR(bb) != D_F0) change = -CINF; } if(r->refbehind.b[z] & bb) for(r1 = (Reg*)r->f.p2; r1 != R; r1 = (Reg*)r1->f.p2link) if(r1->refahead.b[z] & bb) paint1(r1, bn); if(!(r->refahead.b[z] & bb)) break; r1 = (Reg*)r->f.s2; if(r1 != R) if(r1->refbehind.b[z] & bb) paint1(r1, bn); r = (Reg*)r->f.s1; if(r == R) break; if(r->act.b[z] & bb) break; if(!(r->refbehind.b[z] & bb)) break; } } uint32 regset(Reg *r, uint32 bb) { uint32 b, set; Adr v; int c; set = 0; v = zprog.from; while(b = bb & ~(bb-1)) { v.type = b & 0xFF ? BtoR(b): BtoF(b); c = copyu(r->f.prog, &v, nil); if(c == 3) set |= b; bb &= ~b; } return set; } uint32 reguse(Reg *r, uint32 bb) { uint32 b, set; Adr v; int c; set = 0; v = zprog.from; while(b = bb & ~(bb-1)) { v.type = b & 0xFF ? BtoR(b): BtoF(b); c = copyu(r->f.prog, &v, nil); if(c == 1 || c == 2 || c == 4) set |= b; bb &= ~b; } return set; } uint32 paint2(Reg *r, int bn) { Reg *r1; int z; uint32 bb, vreg, x; z = bn/32; bb = 1L << (bn%32); vreg = regbits; if(!(r->act.b[z] & bb)) return vreg; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = (Reg*)r->f.p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(!(r1->act.b[z] & bb)) break; r = r1; } for(;;) { r->act.b[z] &= ~bb; vreg |= r->regu; if(r->refbehind.b[z] & bb) for(r1 = (Reg*)r->f.p2; r1 != R; r1 = (Reg*)r1->f.p2link) if(r1->refahead.b[z] & bb) vreg |= paint2(r1, bn); if(!(r->refahead.b[z] & bb)) break; r1 = (Reg*)r->f.s2; if(r1 != R) if(r1->refbehind.b[z] & bb) vreg |= paint2(r1, bn); r = (Reg*)r->f.s1; if(r == R) break; if(!(r->act.b[z] & bb)) break; if(!(r->refbehind.b[z] & bb)) break; } bb = vreg; for(; r; r=(Reg*)r->f.s1) { x = r->regu & ~bb; if(x) { vreg |= reguse(r, x); bb |= regset(r, x); } } return vreg; } void paint3(Reg *r, int bn, int32 rb, int rn) { Reg *r1; Prog *p; int z; uint32 bb; z = bn/32; bb = 1L << (bn%32); if(r->act.b[z] & bb) return; for(;;) { if(!(r->refbehind.b[z] & bb)) break; r1 = (Reg*)r->f.p1; if(r1 == R) break; if(!(r1->refahead.b[z] & bb)) break; if(r1->act.b[z] & bb) break; r = r1; } if(LOAD(r) & ~(r->set.b[z] & ~(r->use1.b[z]|r->use2.b[z])) & bb) addmove(r, bn, rn, 0); for(;;) { r->act.b[z] |= bb; p = r->f.prog; if(r->use1.b[z] & bb) { if(debug['R'] && debug['v']) print("%P", p); addreg(&p->from, rn); if(debug['R'] && debug['v']) print(" ===change== %P\n", p); } if((r->use2.b[z]|r->set.b[z]) & bb) { if(debug['R'] && debug['v']) print("%P", p); addreg(&p->to, rn); if(debug['R'] && debug['v']) print(" ===change== %P\n", p); } if(STORE(r) & r->regdiff.b[z] & bb) addmove(r, bn, rn, 1); r->regu |= rb; if(r->refbehind.b[z] & bb) for(r1 = (Reg*)r->f.p2; r1 != R; r1 = (Reg*)r1->f.p2link) if(r1->refahead.b[z] & bb) paint3(r1, bn, rb, rn); if(!(r->refahead.b[z] & bb)) break; r1 = (Reg*)r->f.s2; if(r1 != R) if(r1->refbehind.b[z] & bb) paint3(r1, bn, rb, rn); r = (Reg*)r->f.s1; if(r == R) break; if(r->act.b[z] & bb) break; if(!(r->refbehind.b[z] & bb)) break; } } void addreg(Adr *a, int rn) { a->sym = nil; a->offset = 0; a->type = rn; ostats.ncvtreg++; } int32 RtoB(int r) { if(r < D_AX || r > D_DI) return 0; return 1L << (r-D_AX); } int BtoR(int32 b) { b &= 0xffL; if(b == 0) return 0; return bitno(b) + D_AX; } int32 FtoB(int f) { if(f < D_X0 || f > D_X7) return 0; return 1L << (f - D_X0 + 8); } int BtoF(int32 b) { b &= 0xFF00L; if(b == 0) return 0; return bitno(b) - 8 + D_X0; } void dumpone(Flow *f, int isreg) { int z; Bits bit; Reg *r; print("%d:%P", f->loop, f->prog); if(isreg) { r = (Reg*)f; for(z=0; zset.b[z] | r->use1.b[z] | r->use2.b[z] | r->refbehind.b[z] | r->refahead.b[z] | r->calbehind.b[z] | r->calahead.b[z] | r->regdiff.b[z] | r->act.b[z] | 0; if(bany(&bit)) { print("\t"); if(bany(&r->set)) print(" s:%Q", r->set); if(bany(&r->use1)) print(" u1:%Q", r->use1); if(bany(&r->use2)) print(" u2:%Q", r->use2); if(bany(&r->refbehind)) print(" rb:%Q ", r->refbehind); if(bany(&r->refahead)) print(" ra:%Q ", r->refahead); if(bany(&r->calbehind)) print(" cb:%Q ", r->calbehind); if(bany(&r->calahead)) print(" ca:%Q ", r->calahead); if(bany(&r->regdiff)) print(" d:%Q ", r->regdiff); if(bany(&r->act)) print(" a:%Q ", r->act); } } print("\n"); } void dumpit(char *str, Flow *r0, int isreg) { Flow *r, *r1; print("\n%s\n", str); for(r = r0; r != nil; r = r->link) { dumpone(r, isreg); r1 = r->p2; if(r1 != nil) { print(" pred:"); for(; r1 != nil; r1 = r1->p2link) print(" %.4ud", (int)r1->prog->pc); print("\n"); } // r1 = r->s1; // if(r1 != nil) { // print(" succ:"); // for(; r1 != R; r1 = r1->s1) // print(" %.4ud", (int)r1->prog->pc); // print("\n"); // } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8l���������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013300� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8l/8.out.h�������������������������������������������������������������������������������0100644�0000000�0000000�00000017106�12412656737�014507� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8c/8.out.h // http://code.google.com/p/inferno-os/source/browse/utils/8c/8.out.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #define NSYM 50 #define NSNAME 8 #include "../ld/textflag.h" enum as { AXXX, AAAA, AAAD, AAAM, AAAS, AADCB, AADCL, AADCW, AADDB, AADDL, AADDW, AADJSP, AANDB, AANDL, AANDW, AARPL, ABOUNDL, ABOUNDW, ABSFL, ABSFW, ABSRL, ABSRW, ABTL, ABTW, ABTCL, ABTCW, ABTRL, ABTRW, ABTSL, ABTSW, ABYTE, ACALL, ACLC, ACLD, ACLI, ACLTS, ACMC, ACMPB, ACMPL, ACMPW, ACMPSB, ACMPSL, ACMPSW, ADAA, ADAS, ADATA, ADECB, ADECL, ADECW, ADIVB, ADIVL, ADIVW, AENTER, AGLOBL, AGOK, AHISTORY, AHLT, AIDIVB, AIDIVL, AIDIVW, AIMULB, AIMULL, AIMULW, AINB, AINL, AINW, AINCB, AINCL, AINCW, AINSB, AINSL, AINSW, AINT, AINTO, AIRETL, AIRETW, AJCC, AJCS, AJCXZL, AJCXZW, AJEQ, AJGE, AJGT, AJHI, AJLE, AJLS, AJLT, AJMI, AJMP, AJNE, AJOC, AJOS, AJPC, AJPL, AJPS, ALAHF, ALARL, ALARW, ALEAL, ALEAW, ALEAVEL, ALEAVEW, ALOCK, ALODSB, ALODSL, ALODSW, ALONG, ALOOP, ALOOPEQ, ALOOPNE, ALSLL, ALSLW, AMOVB, AMOVL, AMOVW, AMOVQ, AMOVBLSX, AMOVBLZX, AMOVBWSX, AMOVBWZX, AMOVWLSX, AMOVWLZX, AMOVSB, AMOVSL, AMOVSW, AMULB, AMULL, AMULW, ANAME, ANEGB, ANEGL, ANEGW, ANOP, ANOTB, ANOTL, ANOTW, AORB, AORL, AORW, AOUTB, AOUTL, AOUTW, AOUTSB, AOUTSL, AOUTSW, APAUSE, APOPAL, APOPAW, APOPFL, APOPFW, APOPL, APOPW, APUSHAL, APUSHAW, APUSHFL, APUSHFW, APUSHL, APUSHW, ARCLB, ARCLL, ARCLW, ARCRB, ARCRL, ARCRW, AREP, AREPN, ARET, AROLB, AROLL, AROLW, ARORB, ARORL, ARORW, ASAHF, ASALB, ASALL, ASALW, ASARB, ASARL, ASARW, ASBBB, ASBBL, ASBBW, ASCASB, ASCASL, ASCASW, ASETCC, ASETCS, ASETEQ, ASETGE, ASETGT, ASETHI, ASETLE, ASETLS, ASETLT, ASETMI, ASETNE, ASETOC, ASETOS, ASETPC, ASETPL, ASETPS, ACDQ, ACWD, ASHLB, ASHLL, ASHLW, ASHRB, ASHRL, ASHRW, ASTC, ASTD, ASTI, ASTOSB, ASTOSL, ASTOSW, ASUBB, ASUBL, ASUBW, ASYSCALL, ATESTB, ATESTL, ATESTW, ATEXT, AVERR, AVERW, AWAIT, AWORD, AXCHGB, AXCHGL, AXCHGW, AXLAT, AXORB, AXORL, AXORW, AFMOVB, AFMOVBP, AFMOVD, AFMOVDP, AFMOVF, AFMOVFP, AFMOVL, AFMOVLP, AFMOVV, AFMOVVP, AFMOVW, AFMOVWP, AFMOVX, AFMOVXP, AFCOMB, AFCOMBP, AFCOMD, AFCOMDP, AFCOMDPP, AFCOMF, AFCOMFP, AFCOMI, AFCOMIP, AFCOML, AFCOMLP, AFCOMW, AFCOMWP, AFUCOM, AFUCOMI, AFUCOMIP, AFUCOMP, AFUCOMPP, AFADDDP, AFADDW, AFADDL, AFADDF, AFADDD, AFMULDP, AFMULW, AFMULL, AFMULF, AFMULD, AFSUBDP, AFSUBW, AFSUBL, AFSUBF, AFSUBD, AFSUBRDP, AFSUBRW, AFSUBRL, AFSUBRF, AFSUBRD, AFDIVDP, AFDIVW, AFDIVL, AFDIVF, AFDIVD, AFDIVRDP, AFDIVRW, AFDIVRL, AFDIVRF, AFDIVRD, AFXCHD, AFFREE, AFLDCW, AFLDENV, AFRSTOR, AFSAVE, AFSTCW, AFSTENV, AFSTSW, AF2XM1, AFABS, AFCHS, AFCLEX, AFCOS, AFDECSTP, AFINCSTP, AFINIT, AFLD1, AFLDL2E, AFLDL2T, AFLDLG2, AFLDLN2, AFLDPI, AFLDZ, AFNOP, AFPATAN, AFPREM, AFPREM1, AFPTAN, AFRNDINT, AFSCALE, AFSIN, AFSINCOS, AFSQRT, AFTST, AFXAM, AFXTRACT, AFYL2X, AFYL2XP1, AEND, ADYNT_, AINIT_, ASIGNAME, ACMPXCHGB, ACMPXCHGL, ACMPXCHGW, ACMPXCHG8B, ACPUID, ARDTSC, AXADDB, AXADDL, AXADDW, /* conditional move */ ACMOVLCC, ACMOVLCS, ACMOVLEQ, ACMOVLGE, ACMOVLGT, ACMOVLHI, ACMOVLLE, ACMOVLLS, ACMOVLLT, ACMOVLMI, ACMOVLNE, ACMOVLOC, ACMOVLOS, ACMOVLPC, ACMOVLPL, ACMOVLPS, ACMOVWCC, ACMOVWCS, ACMOVWEQ, ACMOVWGE, ACMOVWGT, ACMOVWHI, ACMOVWLE, ACMOVWLS, ACMOVWLT, ACMOVWMI, ACMOVWNE, ACMOVWOC, ACMOVWOS, ACMOVWPC, ACMOVWPL, ACMOVWPS, AFCMOVCC, AFCMOVCS, AFCMOVEQ, AFCMOVHI, AFCMOVLS, AFCMOVNE, AFCMOVNU, AFCMOVUN, ALFENCE, AMFENCE, ASFENCE, AEMMS, APREFETCHT0, APREFETCHT1, APREFETCHT2, APREFETCHNTA, ABSWAPL, AUNDEF, // SSE2 AADDPD, AADDPS, AADDSD, AADDSS, AANDNPD, AANDNPS, AANDPD, AANDPS, ACMPPD, ACMPPS, ACMPSD, ACMPSS, ACOMISD, ACOMISS, ACVTPL2PD, ACVTPL2PS, ACVTPD2PL, ACVTPD2PS, ACVTPS2PL, ACVTPS2PD, ACVTSD2SL, ACVTSD2SS, ACVTSL2SD, ACVTSL2SS, ACVTSS2SD, ACVTSS2SL, ACVTTPD2PL, ACVTTPS2PL, ACVTTSD2SL, ACVTTSS2SL, ADIVPD, ADIVPS, ADIVSD, ADIVSS, AMASKMOVOU, AMAXPD, AMAXPS, AMAXSD, AMAXSS, AMINPD, AMINPS, AMINSD, AMINSS, AMOVAPD, AMOVAPS, AMOVO, AMOVOU, AMOVHLPS, AMOVHPD, AMOVHPS, AMOVLHPS, AMOVLPD, AMOVLPS, AMOVMSKPD, AMOVMSKPS, AMOVNTO, AMOVNTPD, AMOVNTPS, AMOVSD, AMOVSS, AMOVUPD, AMOVUPS, AMULPD, AMULPS, AMULSD, AMULSS, AORPD, AORPS, APADDQ, APAND, APCMPEQB, APMAXSW, APMAXUB, APMINSW, APMINUB, APMOVMSKB, APSADBW, APSUBB, APSUBL, APSUBQ, APSUBSB, APSUBSW, APSUBUSB, APSUBUSW, APSUBW, APUNPCKHQDQ, APUNPCKLQDQ, APXOR, ARCPPS, ARCPSS, ARSQRTPS, ARSQRTSS, ASQRTPD, ASQRTPS, ASQRTSD, ASQRTSS, ASUBPD, ASUBPS, ASUBSD, ASUBSS, AUCOMISD, AUCOMISS, AUNPCKHPD, AUNPCKHPS, AUNPCKLPD, AUNPCKLPS, AXORPD, AXORPS, /* SSE 3+ */ AAESENC, APINSRD, APSHUFB, AUSEFIELD, ATYPE, AFUNCDATA, APCDATA, ACHECKNIL, AVARDEF, AVARKILL, ADUFFCOPY, ADUFFZERO, ALAST }; enum { D_AL = 0, D_CL, D_DL, D_BL, D_AH = 4, D_CH, D_DH, D_BH, D_AX = 8, D_CX, D_DX, D_BX, D_SP, D_BP, D_SI, D_DI, D_F0 = 16, D_F7 = D_F0 + 7, D_CS = 24, D_SS, D_DS, D_ES, D_FS, D_GS, D_GDTR, /* global descriptor table register */ D_IDTR, /* interrupt descriptor table register */ D_LDTR, /* local descriptor table register */ D_MSW, /* machine status word */ D_TASK, /* task register */ D_CR = 35, D_DR = 43, D_TR = 51, D_X0 = 59, D_X1, D_X2, D_X3, D_X4, D_X5, D_X6, D_X7, D_TLS = 67, D_NONE = 68, D_BRANCH = 69, D_EXTERN = 70, D_STATIC = 71, D_AUTO = 72, D_PARAM = 73, D_CONST = 74, D_FCONST = 75, D_SCONST = 76, D_ADDR = 77, D_INDIR, /* additive */ D_CONST2 = D_INDIR+D_INDIR, T_TYPE = 1<<0, T_INDEX = 1<<1, T_OFFSET = 1<<2, T_FCONST = 1<<3, T_SYM = 1<<4, T_SCONST = 1<<5, T_OFFSET2 = 1<<6, T_GOTYPE = 1<<7, REGARG = -1, REGRET = D_AX, FREGRET = D_F0, REGSP = D_SP, REGTMP = D_DI, }; /* * this is the ranlib header */ #define SYMDEF "__.GOSYMDEF" ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8l/Makefile������������������������������������������������������������������������������0100644�0000000�0000000�00000000265�12412656734�015014� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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. include ../../Make.dist �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8l/asm.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000036517�12412656734�014311� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8l/asm.c // http://code.google.com/p/inferno-os/source/browse/utils/8l/asm.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Writing object files. #include "l.h" #include "../ld/lib.h" #include "../ld/elf.h" #include "../ld/dwarf.h" #include "../ld/macho.h" #include "../ld/pe.h" char linuxdynld[] = "/lib/ld-linux.so.2"; char freebsddynld[] = "/usr/libexec/ld-elf.so.1"; char openbsddynld[] = "/usr/libexec/ld.so"; char netbsddynld[] = "/usr/libexec/ld.elf_so"; char dragonflydynld[] = "/usr/libexec/ld-elf.so.2"; char solarisdynld[] = "/lib/ld.so.1"; static int needlib(char *name) { char *p; LSym *s; if(*name == '\0') return 0; /* reuse hash code in symbol table */ p = smprint(".dynlib.%s", name); s = linklookup(ctxt, p, 0); free(p); if(s->type == 0) { s->type = 100; // avoid SDATA, etc. return 1; } return 0; } int nelfsym = 1; static void addpltsym(Link*, LSym*); static void addgotsym(Link*, LSym*); void adddynrela(LSym *rela, LSym *s, Reloc *r) { USED(rela); USED(s); USED(r); sysfatal("adddynrela not implemented"); } void adddynrel(LSym *s, Reloc *r) { LSym *targ, *rel, *got; targ = r->sym; ctxt->cursym = s; switch(r->type) { default: if(r->type >= 256) { diag("unexpected relocation type %d", r->type); return; } break; // Handle relocations found in ELF object files. case 256 + R_386_PC32: if(targ->type == SDYNIMPORT) diag("unexpected R_386_PC32 relocation for dynamic symbol %s", targ->name); if(targ->type == 0 || targ->type == SXREF) diag("unknown symbol %s in pcrel", targ->name); r->type = R_PCREL; r->add += 4; return; case 256 + R_386_PLT32: r->type = R_PCREL; r->add += 4; if(targ->type == SDYNIMPORT) { addpltsym(ctxt, targ); r->sym = linklookup(ctxt, ".plt", 0); r->add += targ->plt; } return; case 256 + R_386_GOT32: if(targ->type != SDYNIMPORT) { // have symbol // turn MOVL of GOT entry into LEAL of symbol itself if(r->off < 2 || s->p[r->off-2] != 0x8b) { diag("unexpected GOT reloc for non-dynamic symbol %s", targ->name); return; } s->p[r->off-2] = 0x8d; r->type = R_GOTOFF; return; } addgotsym(ctxt, targ); r->type = R_CONST; // write r->add during relocsym r->sym = S; r->add += targ->got; return; case 256 + R_386_GOTOFF: r->type = R_GOTOFF; return; case 256 + R_386_GOTPC: r->type = R_PCREL; r->sym = linklookup(ctxt, ".got", 0); r->add += 4; return; case 256 + R_386_32: if(targ->type == SDYNIMPORT) diag("unexpected R_386_32 relocation for dynamic symbol %s", targ->name); r->type = R_ADDR; return; case 512 + MACHO_GENERIC_RELOC_VANILLA*2 + 0: r->type = R_ADDR; if(targ->type == SDYNIMPORT) diag("unexpected reloc for dynamic symbol %s", targ->name); return; case 512 + MACHO_GENERIC_RELOC_VANILLA*2 + 1: if(targ->type == SDYNIMPORT) { addpltsym(ctxt, targ); r->sym = linklookup(ctxt, ".plt", 0); r->add = targ->plt; r->type = R_PCREL; return; } r->type = R_PCREL; return; case 512 + MACHO_FAKE_GOTPCREL: if(targ->type != SDYNIMPORT) { // have symbol // turn MOVL of GOT entry into LEAL of symbol itself if(r->off < 2 || s->p[r->off-2] != 0x8b) { diag("unexpected GOT reloc for non-dynamic symbol %s", targ->name); return; } s->p[r->off-2] = 0x8d; r->type = R_PCREL; return; } addgotsym(ctxt, targ); r->sym = linklookup(ctxt, ".got", 0); r->add += targ->got; r->type = R_PCREL; return; } // Handle references to ELF symbols from our own object files. if(targ->type != SDYNIMPORT) return; switch(r->type) { case R_CALL: case R_PCREL: addpltsym(ctxt, targ); r->sym = linklookup(ctxt, ".plt", 0); r->add = targ->plt; return; case R_ADDR: if(s->type != SDATA) break; if(iself) { adddynsym(ctxt, targ); rel = linklookup(ctxt, ".rel", 0); addaddrplus(ctxt, rel, s, r->off); adduint32(ctxt, rel, ELF32_R_INFO(targ->dynid, R_386_32)); r->type = R_CONST; // write r->add during relocsym r->sym = S; return; } if(HEADTYPE == Hdarwin && s->size == PtrSize && r->off == 0) { // Mach-O relocations are a royal pain to lay out. // They use a compact stateful bytecode representation // that is too much bother to deal with. // Instead, interpret the C declaration // void *_Cvar_stderr = &stderr; // as making _Cvar_stderr the name of a GOT entry // for stderr. This is separate from the usual GOT entry, // just in case the C code assigns to the variable, // and of course it only works for single pointers, // but we only need to support cgo and that's all it needs. adddynsym(ctxt, targ); got = linklookup(ctxt, ".got", 0); s->type = got->type | SSUB; s->outer = got; s->sub = got->sub; got->sub = s; s->value = got->size; adduint32(ctxt, got, 0); adduint32(ctxt, linklookup(ctxt, ".linkedit.got", 0), targ->dynid); r->type = 256; // ignore during relocsym return; } break; } ctxt->cursym = s; diag("unsupported relocation for dynamic symbol %s (type=%d stype=%d)", targ->name, r->type, targ->type); } int elfreloc1(Reloc *r, vlong sectoff) { int32 elfsym; LPUT(sectoff); elfsym = r->xsym->elfsym; switch(r->type) { default: return -1; case R_ADDR: if(r->siz == 4) LPUT(R_386_32 | elfsym<<8); else return -1; break; case R_CALL: case R_PCREL: if(r->siz == 4) LPUT(R_386_PC32 | elfsym<<8); else return -1; break; case R_TLS_LE: case R_TLS_IE: if(r->siz == 4) LPUT(R_386_TLS_LE | elfsym<<8); else return -1; } return 0; } int machoreloc1(Reloc *r, vlong sectoff) { uint32 v; LSym *rs; rs = r->xsym; if(rs->type == SHOSTOBJ) { if(rs->dynid < 0) { diag("reloc %d to non-macho symbol %s type=%d", r->type, rs->name, rs->type); return -1; } v = rs->dynid; v |= 1<<27; // external relocation } else { v = rs->sect->extnum; if(v == 0) { diag("reloc %d to symbol %s in non-macho section %s type=%d", r->type, rs->name, rs->sect->name, rs->type); return -1; } } switch(r->type) { default: return -1; case R_ADDR: v |= MACHO_GENERIC_RELOC_VANILLA<<28; break; case R_CALL: case R_PCREL: v |= 1<<24; // pc-relative bit v |= MACHO_GENERIC_RELOC_VANILLA<<28; break; } switch(r->siz) { default: return -1; case 1: v |= 0<<25; break; case 2: v |= 1<<25; break; case 4: v |= 2<<25; break; case 8: v |= 3<<25; break; } LPUT(sectoff); LPUT(v); return 0; } int archreloc(Reloc *r, LSym *s, vlong *val) { USED(s); if(linkmode == LinkExternal) return -1; switch(r->type) { case R_CONST: *val = r->add; return 0; case R_GOTOFF: *val = symaddr(r->sym) + r->add - symaddr(linklookup(ctxt, ".got", 0)); return 0; } return -1; } void elfsetupplt(void) { LSym *plt, *got; plt = linklookup(ctxt, ".plt", 0); got = linklookup(ctxt, ".got.plt", 0); if(plt->size == 0) { // pushl got+4 adduint8(ctxt, plt, 0xff); adduint8(ctxt, plt, 0x35); addaddrplus(ctxt, plt, got, 4); // jmp *got+8 adduint8(ctxt, plt, 0xff); adduint8(ctxt, plt, 0x25); addaddrplus(ctxt, plt, got, 8); // zero pad adduint32(ctxt, plt, 0); // assume got->size == 0 too addaddrplus(ctxt, got, linklookup(ctxt, ".dynamic", 0), 0); adduint32(ctxt, got, 0); adduint32(ctxt, got, 0); } } static void addpltsym(Link *ctxt, LSym *s) { LSym *plt, *got, *rel; if(s->plt >= 0) return; adddynsym(ctxt, s); if(iself) { plt = linklookup(ctxt, ".plt", 0); got = linklookup(ctxt, ".got.plt", 0); rel = linklookup(ctxt, ".rel.plt", 0); if(plt->size == 0) elfsetupplt(); // jmpq *got+size adduint8(ctxt, plt, 0xff); adduint8(ctxt, plt, 0x25); addaddrplus(ctxt, plt, got, got->size); // add to got: pointer to current pos in plt addaddrplus(ctxt, got, plt, plt->size); // pushl $x adduint8(ctxt, plt, 0x68); adduint32(ctxt, plt, rel->size); // jmp .plt adduint8(ctxt, plt, 0xe9); adduint32(ctxt, plt, -(plt->size+4)); // rel addaddrplus(ctxt, rel, got, got->size-4); adduint32(ctxt, rel, ELF32_R_INFO(s->dynid, R_386_JMP_SLOT)); s->plt = plt->size - 16; } else if(HEADTYPE == Hdarwin) { // Same laziness as in 6l. LSym *plt; plt = linklookup(ctxt, ".plt", 0); addgotsym(ctxt, s); adduint32(ctxt, linklookup(ctxt, ".linkedit.plt", 0), s->dynid); // jmpq *got+size(IP) s->plt = plt->size; adduint8(ctxt, plt, 0xff); adduint8(ctxt, plt, 0x25); addaddrplus(ctxt, plt, linklookup(ctxt, ".got", 0), s->got); } else { diag("addpltsym: unsupported binary format"); } } static void addgotsym(Link *ctxt, LSym *s) { LSym *got, *rel; if(s->got >= 0) return; adddynsym(ctxt, s); got = linklookup(ctxt, ".got", 0); s->got = got->size; adduint32(ctxt, got, 0); if(iself) { rel = linklookup(ctxt, ".rel", 0); addaddrplus(ctxt, rel, got, s->got); adduint32(ctxt, rel, ELF32_R_INFO(s->dynid, R_386_GLOB_DAT)); } else if(HEADTYPE == Hdarwin) { adduint32(ctxt, linklookup(ctxt, ".linkedit.got", 0), s->dynid); } else { diag("addgotsym: unsupported binary format"); } } void adddynsym(Link *ctxt, LSym *s) { LSym *d; int t; char *name; if(s->dynid >= 0) return; if(iself) { s->dynid = nelfsym++; d = linklookup(ctxt, ".dynsym", 0); /* name */ name = s->extname; adduint32(ctxt, d, addstring(linklookup(ctxt, ".dynstr", 0), name)); /* value */ if(s->type == SDYNIMPORT) adduint32(ctxt, d, 0); else addaddr(ctxt, d, s); /* size */ adduint32(ctxt, d, 0); /* type */ t = STB_GLOBAL << 4; if(s->cgoexport && (s->type&SMASK) == STEXT) t |= STT_FUNC; else t |= STT_OBJECT; adduint8(ctxt, d, t); adduint8(ctxt, d, 0); /* shndx */ if(s->type == SDYNIMPORT) adduint16(ctxt, d, SHN_UNDEF); else { switch(s->type) { default: case STEXT: t = 11; break; case SRODATA: t = 12; break; case SDATA: t = 13; break; case SBSS: t = 14; break; } adduint16(ctxt, d, t); } } else if(HEADTYPE == Hdarwin) { diag("adddynsym: missed symbol %s (%s)", s->name, s->extname); } else if(HEADTYPE == Hwindows) { // already taken care of } else { diag("adddynsym: unsupported binary format"); } } void adddynlib(char *lib) { LSym *s; if(!needlib(lib)) return; if(iself) { s = linklookup(ctxt, ".dynstr", 0); if(s->size == 0) addstring(s, ""); elfwritedynent(linklookup(ctxt, ".dynamic", 0), DT_NEEDED, addstring(s, lib)); } else if(HEADTYPE == Hdarwin) { machoadddynlib(lib); } else if(HEADTYPE != Hwindows) { diag("adddynlib: unsupported binary format"); } } void asmb(void) { int32 magic; uint32 symo, dwarfoff, machlink; Section *sect; LSym *sym; int i; if(debug['v']) Bprint(&bso, "%5.2f asmb\n", cputime()); Bflush(&bso); if(iself) asmbelfsetup(); sect = segtext.sect; cseek(sect->vaddr - segtext.vaddr + segtext.fileoff); codeblk(sect->vaddr, sect->len); for(sect = sect->next; sect != nil; sect = sect->next) { cseek(sect->vaddr - segtext.vaddr + segtext.fileoff); datblk(sect->vaddr, sect->len); } if(segrodata.filelen > 0) { if(debug['v']) Bprint(&bso, "%5.2f rodatblk\n", cputime()); Bflush(&bso); cseek(segrodata.fileoff); datblk(segrodata.vaddr, segrodata.filelen); } if(debug['v']) Bprint(&bso, "%5.2f datblk\n", cputime()); Bflush(&bso); cseek(segdata.fileoff); datblk(segdata.vaddr, segdata.filelen); machlink = 0; if(HEADTYPE == Hdarwin) { if(debug['v']) Bprint(&bso, "%5.2f dwarf\n", cputime()); dwarfoff = rnd(HEADR+segtext.len, INITRND) + rnd(segdata.filelen, INITRND); cseek(dwarfoff); segdwarf.fileoff = cpos(); dwarfemitdebugsections(); segdwarf.filelen = cpos() - segdwarf.fileoff; machlink = domacholink(); } symsize = 0; spsize = 0; lcsize = 0; symo = 0; if(!debug['s']) { // TODO: rationalize if(debug['v']) Bprint(&bso, "%5.2f sym\n", cputime()); Bflush(&bso); switch(HEADTYPE) { default: if(iself) goto Elfsym; case Hplan9: symo = segdata.fileoff+segdata.filelen; break; case Hdarwin: symo = segdata.fileoff+rnd(segdata.filelen, INITRND)+machlink; break; Elfsym: symo = segdata.fileoff+segdata.filelen; symo = rnd(symo, INITRND); break; case Hwindows: symo = segdata.fileoff+segdata.filelen; symo = rnd(symo, PEFILEALIGN); break; } cseek(symo); switch(HEADTYPE) { default: if(iself) { if(debug['v']) Bprint(&bso, "%5.2f elfsym\n", cputime()); asmelfsym(); cflush(); cwrite(elfstrdat, elfstrsize); if(debug['v']) Bprint(&bso, "%5.2f dwarf\n", cputime()); dwarfemitdebugsections(); if(linkmode == LinkExternal) elfemitreloc(); } break; case Hplan9: asmplan9sym(); cflush(); sym = linklookup(ctxt, "pclntab", 0); if(sym != nil) { lcsize = sym->np; for(i=0; i < lcsize; i++) cput(sym->p[i]); cflush(); } break; case Hwindows: if(debug['v']) Bprint(&bso, "%5.2f dwarf\n", cputime()); dwarfemitdebugsections(); break; case Hdarwin: if(linkmode == LinkExternal) machoemitreloc(); break; } } if(debug['v']) Bprint(&bso, "%5.2f headr\n", cputime()); Bflush(&bso); cseek(0L); switch(HEADTYPE) { default: case Hplan9: /* plan9 */ magic = 4*11*11+7; lputb(magic); /* magic */ lputb(segtext.filelen); /* sizes */ lputb(segdata.filelen); lputb(segdata.len - segdata.filelen); lputb(symsize); /* nsyms */ lputb(entryvalue()); /* va of entry */ lputb(spsize); /* sp offsets */ lputb(lcsize); /* line offsets */ break; case Hdarwin: asmbmacho(); break; case Hlinux: case Hfreebsd: case Hnetbsd: case Hopenbsd: case Hdragonfly: case Hnacl: asmbelf(symo); break; case Hwindows: asmbpe(); break; } cflush(); } void s8put(char *n) { char name[8]; int i; strncpy(name, n, sizeof(name)); for(i=0; i #include #include #include #include "8.out.h" #ifndef EXTERN #define EXTERN extern #endif enum { thechar = '8', PtrSize = 4, IntSize = 4, RegSize = 4, MaxAlign = 32, // max data alignment FuncAlign = 16 }; #define P ((Prog*)0) #define S ((LSym*)0) #define TNAME (ctxt->cursym?ctxt->cursym->name:noname) enum { MINSIZ = 4, STRINGSZ = 200, MINLC = 1, MAXIO = 8192, MAXHIST = 40, /* limit of path elements for history symbols */ }; #pragma varargck type "I" uchar* EXTERN LSym* datap; EXTERN int debug[128]; EXTERN char literal[32]; EXTERN Prog* firstp; EXTERN int32 lcsize; EXTERN char* rpath; EXTERN int32 spsize; EXTERN LSym* symlist; EXTERN int32 symsize; EXTERN int32 textsize; int Iconv(Fmt *fp); void adddynlib(char *lib); void adddynrel(LSym *s, Reloc *r); void adddynrela(LSym *rela, LSym *s, Reloc *r); void adddynsym(Link *ctxt, LSym *s); int archreloc(Reloc *r, LSym *s, vlong *val); void asmb(void); int elfreloc1(Reloc *r, vlong sectoff); void elfsetupplt(void); void listinit(void); int machoreloc1(Reloc *r, vlong sectoff); void main(int argc, char *argv[]); int32 rnd(int32 v, int32 r); void s8put(char *n); char* xsymname(LSym *s); /* Native is little-endian */ #define LPUT(a) lputl(a) #define WPUT(a) wputl(a) #define VPUT(a) vputl(a) /* Used by ../ld/dwarf.c */ enum { DWARFREGSP = 4 }; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8l/list.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000004325�12412656734�014474� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8l/list.c // http://code.google.com/p/inferno-os/source/browse/utils/8l/list.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Printing. #include "l.h" #include "../ld/lib.h" void listinit(void) { listinit8(); fmtinstall('I', Iconv); } int Iconv(Fmt *fp) { int i, n; uchar *p; char *s; Fmt fmt; n = fp->prec; fp->prec = 0; if(!(fp->flags&FmtPrec) || n < 0) return fmtstrcpy(fp, "%I"); fp->flags &= ~FmtPrec; p = va_arg(fp->args, uchar*); // format into temporary buffer and // call fmtstrcpy to handle padding. fmtstrinit(&fmt); for(i=0; ienam.c �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/8l/obj.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000007346�12412656734�014301� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/8l/obj.c // http://code.google.com/p/inferno-os/source/browse/utils/8l/obj.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Reading object files. #include "l.h" #include "../ld/lib.h" #include "../ld/elf.h" #include "../ld/macho.h" #include "../ld/dwarf.h" #include "../ld/pe.h" #include char* thestring = "386"; LinkArch* thelinkarch = &link386; void linkarchinit(void) { } void archinit(void) { // getgoextlinkenabled is based on GO_EXTLINK_ENABLED when // Go was built; see ../../make.bash. if(linkmode == LinkAuto && strcmp(getgoextlinkenabled(), "0") == 0) linkmode = LinkInternal; switch(HEADTYPE) { default: if(linkmode == LinkAuto) linkmode = LinkInternal; if(linkmode == LinkExternal && strcmp(getgoextlinkenabled(), "1") != 0) sysfatal("cannot use -linkmode=external with -H %s", headstr(HEADTYPE)); break; case Hdarwin: case Hdragonfly: case Hfreebsd: case Hlinux: case Hnetbsd: case Hopenbsd: break; } switch(HEADTYPE) { default: diag("unknown -H option"); errorexit(); case Hplan9: /* plan 9 */ HEADR = 32L; if(INITTEXT == -1) INITTEXT = 4096+32; if(INITDAT == -1) INITDAT = 0; if(INITRND == -1) INITRND = 4096; break; case Hdarwin: /* apple MACH */ machoinit(); HEADR = INITIAL_MACHO_HEADR; if(INITTEXT == -1) INITTEXT = 4096+HEADR; if(INITDAT == -1) INITDAT = 0; if(INITRND == -1) INITRND = 4096; break; case Hlinux: /* elf32 executable */ case Hfreebsd: case Hnetbsd: case Hopenbsd: case Hdragonfly: elfinit(); HEADR = ELFRESERVE; if(INITTEXT == -1) INITTEXT = 0x08048000+HEADR; if(INITDAT == -1) INITDAT = 0; if(INITRND == -1) INITRND = 4096; break; case Hnacl: elfinit(); HEADR = 0x10000; funcalign = 32; if(INITTEXT == -1) INITTEXT = 0x20000; if(INITDAT == -1) INITDAT = 0; if(INITRND == -1) INITRND = 0x10000; break; case Hwindows: /* PE executable */ peinit(); HEADR = PEFILEHEADR; if(INITTEXT == -1) INITTEXT = PEBASE+PESECTHEADR; if(INITDAT == -1) INITDAT = 0; if(INITRND == -1) INITRND = PESECTALIGN; break; } if(INITDAT != 0 && INITRND != 0) print("warning: -D0x%llux is ignored because of -R0x%ux\n", INITDAT, INITRND); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/addr2line��������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�014621� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/addr2line/addr2line_test.go��������������������������������������������������������������0100644�0000000�0000000�00000005515�12412656737�020135� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// 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. package main import ( "bufio" "bytes" "io/ioutil" "os" "os/exec" "path/filepath" "runtime" "strings" "testing" ) func loadSyms(t *testing.T) map[string]string { cmd := exec.Command("go", "tool", "nm", os.Args[0]) out, err := cmd.CombinedOutput() if err != nil { t.Fatalf("go tool nm %v: %v\n%s", os.Args[0], err, string(out)) } syms := make(map[string]string) scanner := bufio.NewScanner(bytes.NewReader(out)) for scanner.Scan() { f := strings.Fields(scanner.Text()) if len(f) < 3 { continue } syms[f[2]] = f[0] } if err := scanner.Err(); err != nil { t.Fatalf("error reading symbols: %v", err) } return syms } func runAddr2Line(t *testing.T, exepath, addr string) (funcname, path, lineno string) { cmd := exec.Command(exepath, os.Args[0]) cmd.Stdin = strings.NewReader(addr) out, err := cmd.CombinedOutput() if err != nil { t.Fatalf("go tool addr2line %v: %v\n%s", os.Args[0], err, string(out)) } f := strings.Split(string(out), "\n") if len(f) < 3 && f[2] == "" { t.Fatal("addr2line output must have 2 lines") } funcname = f[0] pathAndLineNo := f[1] f = strings.Split(pathAndLineNo, ":") if runtime.GOOS == "windows" { switch len(f) { case 2: return funcname, f[0], f[1] case 3: return funcname, f[0] + ":" + f[1], f[2] default: t.Fatalf("no line number found in %q", pathAndLineNo) } } if len(f) != 2 { t.Fatalf("no line number found in %q", pathAndLineNo) } return funcname, f[0], f[1] } const symName = "cmd/addr2line.TestAddr2Line" func testAddr2Line(t *testing.T, exepath, addr string) { funcName, srcPath, srcLineNo := runAddr2Line(t, exepath, addr) if symName != funcName { t.Fatalf("expected function name %v; got %v", symName, funcName) } fi1, err := os.Stat("addr2line_test.go") if err != nil { t.Fatalf("Stat failed: %v", err) } fi2, err := os.Stat(srcPath) if err != nil { t.Fatalf("Stat failed: %v", err) } if !os.SameFile(fi1, fi2) { t.Fatalf("addr2line_test.go and %s are not same file", srcPath) } if srcLineNo != "94" { t.Fatalf("line number = %v; want 94", srcLineNo) } } // This is line 93. The test depends on that. func TestAddr2Line(t *testing.T) { if runtime.GOOS == "nacl" { t.Skip("skipping on nacl") } syms := loadSyms(t) tmpDir, err := ioutil.TempDir("", "TestAddr2Line") if err != nil { t.Fatal("TempDir failed: ", err) } defer os.RemoveAll(tmpDir) exepath := filepath.Join(tmpDir, "testaddr2line.exe") out, err := exec.Command("go", "build", "-o", exepath, "cmd/addr2line").CombinedOutput() if err != nil { t.Fatalf("go build -o %v cmd/addr2line: %v\n%s", exepath, err, string(out)) } testAddr2Line(t, exepath, syms[symName]) testAddr2Line(t, exepath, "0x"+syms[symName]) } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/addr2line/main.go������������������������������������������������������������������������0100644�0000000�0000000�00000014475�12412656737�016163� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// 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. // Addr2line is a minimal simulation of the GNU addr2line tool, // just enough to support pprof. // // Usage: // go tool addr2line binary // // Addr2line reads hexadecimal addresses, one per line and with optional 0x prefix, // from standard input. For each input address, addr2line prints two output lines, // first the name of the function containing the address and second the file:line // of the source code corresponding to that address. // // This tool is intended for use only by pprof; its interface may change or // it may be deleted entirely in future releases. package main import ( "bufio" "debug/elf" "debug/gosym" "debug/macho" "debug/pe" "debug/plan9obj" "flag" "fmt" "log" "os" "strconv" "strings" ) func printUsage(w *os.File) { fmt.Fprintf(w, "usage: addr2line binary\n") fmt.Fprintf(w, "reads addresses from standard input and writes two lines for each:\n") fmt.Fprintf(w, "\tfunction name\n") fmt.Fprintf(w, "\tfile:line\n") } func usage() { printUsage(os.Stderr) os.Exit(2) } func main() { log.SetFlags(0) log.SetPrefix("addr2line: ") // pprof expects this behavior when checking for addr2line if len(os.Args) > 1 && os.Args[1] == "--help" { printUsage(os.Stdout) os.Exit(0) } flag.Usage = usage flag.Parse() if flag.NArg() != 1 { usage() } f, err := os.Open(flag.Arg(0)) if err != nil { log.Fatal(err) } textStart, symtab, pclntab, err := loadTables(f) if err != nil { log.Fatalf("reading %s: %v", flag.Arg(0), err) } pcln := gosym.NewLineTable(pclntab, textStart) tab, err := gosym.NewTable(symtab, pcln) if err != nil { log.Fatalf("reading %s: %v", flag.Arg(0), err) } stdin := bufio.NewScanner(os.Stdin) stdout := bufio.NewWriter(os.Stdout) for stdin.Scan() { p := stdin.Text() if strings.Contains(p, ":") { // Reverse translate file:line to pc. // This was an extension in the old C version of 'go tool addr2line' // and is probably not used by anyone, but recognize the syntax. // We don't have an implementation. fmt.Fprintf(stdout, "!reverse translation not implemented\n") continue } pc, _ := strconv.ParseUint(strings.TrimPrefix(p, "0x"), 16, 64) file, line, fn := tab.PCToLine(pc) name := "?" if fn != nil { name = fn.Name } else { file = "?" line = 0 } fmt.Fprintf(stdout, "%s\n%s:%d\n", name, file, line) } stdout.Flush() } func loadTables(f *os.File) (textStart uint64, symtab, pclntab []byte, err error) { if obj, err := elf.NewFile(f); err == nil { if sect := obj.Section(".text"); sect != nil { textStart = sect.Addr } if sect := obj.Section(".gosymtab"); sect != nil { if symtab, err = sect.Data(); err != nil { return 0, nil, nil, err } } if sect := obj.Section(".gopclntab"); sect != nil { if pclntab, err = sect.Data(); err != nil { return 0, nil, nil, err } } return textStart, symtab, pclntab, nil } if obj, err := macho.NewFile(f); err == nil { if sect := obj.Section("__text"); sect != nil { textStart = sect.Addr } if sect := obj.Section("__gosymtab"); sect != nil { if symtab, err = sect.Data(); err != nil { return 0, nil, nil, err } } if sect := obj.Section("__gopclntab"); sect != nil { if pclntab, err = sect.Data(); err != nil { return 0, nil, nil, err } } return textStart, symtab, pclntab, nil } if obj, err := pe.NewFile(f); err == nil { var imageBase uint64 switch oh := obj.OptionalHeader.(type) { case *pe.OptionalHeader32: imageBase = uint64(oh.ImageBase) case *pe.OptionalHeader64: imageBase = oh.ImageBase default: return 0, nil, nil, fmt.Errorf("pe file format not recognized") } if sect := obj.Section(".text"); sect != nil { textStart = imageBase + uint64(sect.VirtualAddress) } if pclntab, err = loadPETable(obj, "pclntab", "epclntab"); err != nil { return 0, nil, nil, err } if symtab, err = loadPETable(obj, "symtab", "esymtab"); err != nil { return 0, nil, nil, err } return textStart, symtab, pclntab, nil } if obj, err := plan9obj.NewFile(f); err == nil { sym, err := findPlan9Symbol(obj, "text") if err != nil { return 0, nil, nil, err } textStart = sym.Value if pclntab, err = loadPlan9Table(obj, "pclntab", "epclntab"); err != nil { return 0, nil, nil, err } if symtab, err = loadPlan9Table(obj, "symtab", "esymtab"); err != nil { return 0, nil, nil, err } return textStart, symtab, pclntab, nil } return 0, nil, nil, fmt.Errorf("unrecognized binary format") } func findPESymbol(f *pe.File, name string) (*pe.Symbol, error) { for _, s := range f.Symbols { if s.Name != name { continue } if s.SectionNumber <= 0 { return nil, fmt.Errorf("symbol %s: invalid section number %d", name, s.SectionNumber) } if len(f.Sections) < int(s.SectionNumber) { return nil, fmt.Errorf("symbol %s: section number %d is larger than max %d", name, s.SectionNumber, len(f.Sections)) } return s, nil } return nil, fmt.Errorf("no %s symbol found", name) } func loadPETable(f *pe.File, sname, ename string) ([]byte, error) { ssym, err := findPESymbol(f, sname) if err != nil { return nil, err } esym, err := findPESymbol(f, ename) if err != nil { return nil, err } if ssym.SectionNumber != esym.SectionNumber { return nil, fmt.Errorf("%s and %s symbols must be in the same section", sname, ename) } sect := f.Sections[ssym.SectionNumber-1] data, err := sect.Data() if err != nil { return nil, err } return data[ssym.Value:esym.Value], nil } func findPlan9Symbol(f *plan9obj.File, name string) (*plan9obj.Sym, error) { syms, err := f.Symbols() if err != nil { return nil, err } for _, s := range syms { if s.Name != name { continue } return &s, nil } return nil, fmt.Errorf("no %s symbol found", name) } func loadPlan9Table(f *plan9obj.File, sname, ename string) ([]byte, error) { ssym, err := findPlan9Symbol(f, sname) if err != nil { return nil, err } esym, err := findPlan9Symbol(f, ename) if err != nil { return nil, err } text, err := findPlan9Symbol(f, "text") if err != nil { return nil, err } sect := f.Section("text") if sect == nil { return nil, err } data, err := sect.Data() if err != nil { return nil, err } return data[ssym.Value-text.Value : esym.Value-text.Value], nil } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api��������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013526� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api/goapi.go�����������������������������������������������������������������������������0100644�0000000�0000000�00000051246�12412656737�015240� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2011 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 api_tool // Binary api computes the exported API of a set of Go packages. package main import ( "bufio" "bytes" "flag" "fmt" "go/ast" "go/build" "go/parser" "go/token" "io" "io/ioutil" "log" "os" "os/exec" "path/filepath" "regexp" "runtime" "sort" "strings" "code.google.com/p/go.tools/go/types" ) // Flags var ( checkFile = flag.String("c", "", "optional comma-separated filename(s) to check API against") allowNew = flag.Bool("allow_new", true, "allow API additions") exceptFile = flag.String("except", "", "optional filename of packages that are allowed to change without triggering a failure in the tool") nextFile = flag.String("next", "", "optional filename of tentative upcoming API features for the next release. This file can be lazily maintained. It only affects the delta warnings from the -c file printed on success.") verbose = flag.Bool("v", false, "verbose debugging") forceCtx = flag.String("contexts", "", "optional comma-separated list of -[-cgo] to override default contexts.") ) // contexts are the default contexts which are scanned, unless // overridden by the -contexts flag. var contexts = []*build.Context{ {GOOS: "linux", GOARCH: "386", CgoEnabled: true}, {GOOS: "linux", GOARCH: "386"}, {GOOS: "linux", GOARCH: "amd64", CgoEnabled: true}, {GOOS: "linux", GOARCH: "amd64"}, {GOOS: "linux", GOARCH: "arm", CgoEnabled: true}, {GOOS: "linux", GOARCH: "arm"}, {GOOS: "darwin", GOARCH: "386", CgoEnabled: true}, {GOOS: "darwin", GOARCH: "386"}, {GOOS: "darwin", GOARCH: "amd64", CgoEnabled: true}, {GOOS: "darwin", GOARCH: "amd64"}, {GOOS: "windows", GOARCH: "amd64"}, {GOOS: "windows", GOARCH: "386"}, {GOOS: "freebsd", GOARCH: "386", CgoEnabled: true}, {GOOS: "freebsd", GOARCH: "386"}, {GOOS: "freebsd", GOARCH: "amd64", CgoEnabled: true}, {GOOS: "freebsd", GOARCH: "amd64"}, {GOOS: "freebsd", GOARCH: "arm", CgoEnabled: true}, {GOOS: "freebsd", GOARCH: "arm"}, {GOOS: "netbsd", GOARCH: "386", CgoEnabled: true}, {GOOS: "netbsd", GOARCH: "386"}, {GOOS: "netbsd", GOARCH: "amd64", CgoEnabled: true}, {GOOS: "netbsd", GOARCH: "amd64"}, {GOOS: "netbsd", GOARCH: "arm", CgoEnabled: true}, {GOOS: "netbsd", GOARCH: "arm"}, {GOOS: "openbsd", GOARCH: "386", CgoEnabled: true}, {GOOS: "openbsd", GOARCH: "386"}, {GOOS: "openbsd", GOARCH: "amd64", CgoEnabled: true}, {GOOS: "openbsd", GOARCH: "amd64"}, } func contextName(c *build.Context) string { s := c.GOOS + "-" + c.GOARCH if c.CgoEnabled { return s + "-cgo" } return s } func parseContext(c string) *build.Context { parts := strings.Split(c, "-") if len(parts) < 2 { log.Fatalf("bad context: %q", c) } bc := &build.Context{ GOOS: parts[0], GOARCH: parts[1], } if len(parts) == 3 { if parts[2] == "cgo" { bc.CgoEnabled = true } else { log.Fatalf("bad context: %q", c) } } return bc } func setContexts() { contexts = []*build.Context{} for _, c := range strings.Split(*forceCtx, ",") { contexts = append(contexts, parseContext(c)) } } func main() { flag.Parse() if !strings.Contains(runtime.Version(), "weekly") && !strings.Contains(runtime.Version(), "devel") { if *nextFile != "" { fmt.Printf("Go version is %q, ignoring -next %s\n", runtime.Version(), *nextFile) *nextFile = "" } } if *forceCtx != "" { setContexts() } for _, c := range contexts { c.Compiler = build.Default.Compiler } var pkgNames []string if flag.NArg() > 0 { pkgNames = flag.Args() } else { stds, err := exec.Command("go", "list", "std").Output() if err != nil { log.Fatal(err) } pkgNames = strings.Fields(string(stds)) } var featureCtx = make(map[string]map[string]bool) // feature -> context name -> true for _, context := range contexts { w := NewWalker(context, filepath.Join(build.Default.GOROOT, "src/pkg")) for _, name := range pkgNames { // - Package "unsafe" contains special signatures requiring // extra care when printing them - ignore since it is not // going to change w/o a language change. // - We don't care about the API of commands. if name != "unsafe" && !strings.HasPrefix(name, "cmd/") { if name == "runtime/cgo" && !context.CgoEnabled { // w.Import(name) will return nil continue } w.export(w.Import(name)) } } ctxName := contextName(context) for _, f := range w.Features() { if featureCtx[f] == nil { featureCtx[f] = make(map[string]bool) } featureCtx[f][ctxName] = true } } var features []string for f, cmap := range featureCtx { if len(cmap) == len(contexts) { features = append(features, f) continue } comma := strings.Index(f, ",") for cname := range cmap { f2 := fmt.Sprintf("%s (%s)%s", f[:comma], cname, f[comma:]) features = append(features, f2) } } fail := false defer func() { if fail { os.Exit(1) } }() bw := bufio.NewWriter(os.Stdout) defer bw.Flush() if *checkFile == "" { sort.Strings(features) for _, f := range features { fmt.Fprintln(bw, f) } return } var required []string for _, file := range strings.Split(*checkFile, ",") { required = append(required, fileFeatures(file)...) } optional := fileFeatures(*nextFile) exception := fileFeatures(*exceptFile) fail = !compareAPI(bw, features, required, optional, exception) } // export emits the exported package features. func (w *Walker) export(pkg *types.Package) { if *verbose { log.Println(pkg) } pop := w.pushScope("pkg " + pkg.Path()) w.current = pkg scope := pkg.Scope() for _, name := range scope.Names() { if ast.IsExported(name) { w.emitObj(scope.Lookup(name)) } } pop() } func set(items []string) map[string]bool { s := make(map[string]bool) for _, v := range items { s[v] = true } return s } var spaceParensRx = regexp.MustCompile(` \(\S+?\)`) func featureWithoutContext(f string) string { if !strings.Contains(f, "(") { return f } return spaceParensRx.ReplaceAllString(f, "") } func compareAPI(w io.Writer, features, required, optional, exception []string) (ok bool) { ok = true optionalSet := set(optional) exceptionSet := set(exception) featureSet := set(features) sort.Strings(features) sort.Strings(required) take := func(sl *[]string) string { s := (*sl)[0] *sl = (*sl)[1:] return s } for len(required) > 0 || len(features) > 0 { switch { case len(features) == 0 || (len(required) > 0 && required[0] < features[0]): feature := take(&required) if exceptionSet[feature] { // An "unfortunate" case: the feature was once // included in the API (e.g. go1.txt), but was // subsequently removed. These are already // acknowledged by being in the file // "api/except.txt". No need to print them out // here. } else if featureSet[featureWithoutContext(feature)] { // okay. } else { fmt.Fprintf(w, "-%s\n", feature) ok = false // broke compatibility } case len(required) == 0 || (len(features) > 0 && required[0] > features[0]): newFeature := take(&features) if optionalSet[newFeature] { // Known added feature to the upcoming release. // Delete it from the map so we can detect any upcoming features // which were never seen. (so we can clean up the nextFile) delete(optionalSet, newFeature) } else { fmt.Fprintf(w, "+%s\n", newFeature) if !*allowNew { ok = false // we're in lock-down mode for next release } } default: take(&required) take(&features) } } // In next file, but not in API. var missing []string for feature := range optionalSet { missing = append(missing, feature) } sort.Strings(missing) for _, feature := range missing { fmt.Fprintf(w, "±%s\n", feature) } return } func fileFeatures(filename string) []string { if filename == "" { return nil } bs, err := ioutil.ReadFile(filename) if err != nil { log.Fatalf("Error reading file %s: %v", filename, err) } text := strings.TrimSpace(string(bs)) if text == "" { return nil } return strings.Split(text, "\n") } var fset = token.NewFileSet() type Walker struct { context *build.Context root string scope []string current *types.Package features map[string]bool // set imported map[string]*types.Package // packages already imported } func NewWalker(context *build.Context, root string) *Walker { return &Walker{ context: context, root: root, features: map[string]bool{}, imported: map[string]*types.Package{"unsafe": types.Unsafe}, } } func (w *Walker) Features() (fs []string) { for f := range w.features { fs = append(fs, f) } sort.Strings(fs) return } var parsedFileCache = make(map[string]*ast.File) func (w *Walker) parseFile(dir, file string) (*ast.File, error) { filename := filepath.Join(dir, file) f, _ := parsedFileCache[filename] if f != nil { return f, nil } var err error // generate missing context-dependent files. if w.context != nil && file == fmt.Sprintf("zgoos_%s.go", w.context.GOOS) { src := fmt.Sprintf("package runtime; const theGoos = `%s`", w.context.GOOS) f, err = parser.ParseFile(fset, filename, src, 0) if err != nil { log.Fatalf("incorrect generated file: %s", err) } } if w.context != nil && file == fmt.Sprintf("zgoarch_%s.go", w.context.GOARCH) { src := fmt.Sprintf("package runtime; const theGoarch = `%s`", w.context.GOARCH) f, err = parser.ParseFile(fset, filename, src, 0) if err != nil { log.Fatalf("incorrect generated file: %s", err) } } if f == nil { f, err = parser.ParseFile(fset, filename, nil, 0) if err != nil { return nil, err } } parsedFileCache[filename] = f return f, nil } func contains(list []string, s string) bool { for _, t := range list { if t == s { return true } } return false } var ( pkgCache = map[string]*types.Package{} // map tagKey to package pkgTags = map[string][]string{} // map import dir to list of relevant tags ) // tagKey returns the tag-based key to use in the pkgCache. // It is a comma-separated string; the first part is dir, the rest tags. // The satisfied tags are derived from context but only those that // matter (the ones listed in the tags argument) are used. // The tags list, which came from go/build's Package.AllTags, // is known to be sorted. func tagKey(dir string, context *build.Context, tags []string) string { ctags := map[string]bool{ context.GOOS: true, context.GOARCH: true, } if context.CgoEnabled { ctags["cgo"] = true } for _, tag := range context.BuildTags { ctags[tag] = true } // TODO: ReleaseTags (need to load default) key := dir for _, tag := range tags { if ctags[tag] { key += "," + tag } } return key } // Importing is a sentinel taking the place in Walker.imported // for a package that is in the process of being imported. var importing types.Package func (w *Walker) Import(name string) (pkg *types.Package) { pkg = w.imported[name] if pkg != nil { if pkg == &importing { log.Fatalf("cycle importing package %q", name) } return pkg } w.imported[name] = &importing // Determine package files. dir := filepath.Join(w.root, filepath.FromSlash(name)) if fi, err := os.Stat(dir); err != nil || !fi.IsDir() { log.Fatalf("no source in tree for package %q", pkg) } context := w.context if context == nil { context = &build.Default } // Look in cache. // If we've already done an import with the same set // of relevant tags, reuse the result. var key string if tags, ok := pkgTags[dir]; ok { key = tagKey(dir, context, tags) if pkg := pkgCache[key]; pkg != nil { w.imported[name] = pkg return pkg } } info, err := context.ImportDir(dir, 0) if err != nil { if _, nogo := err.(*build.NoGoError); nogo { return } log.Fatalf("pkg %q, dir %q: ScanDir: %v", name, dir, err) } // Save tags list first time we see a directory. if _, ok := pkgTags[dir]; !ok { pkgTags[dir] = info.AllTags key = tagKey(dir, context, info.AllTags) } filenames := append(append([]string{}, info.GoFiles...), info.CgoFiles...) // Certain files only exist when building for the specified context. // Add them manually. if name == "runtime" { n := fmt.Sprintf("zgoos_%s.go", w.context.GOOS) if !contains(filenames, n) { filenames = append(filenames, n) } n = fmt.Sprintf("zgoarch_%s.go", w.context.GOARCH) if !contains(filenames, n) { filenames = append(filenames, n) } } // Parse package files. var files []*ast.File for _, file := range filenames { f, err := w.parseFile(dir, file) if err != nil { log.Fatalf("error parsing package %s: %s", name, err) } files = append(files, f) } // Type-check package files. conf := types.Config{ IgnoreFuncBodies: true, FakeImportC: true, Import: func(imports map[string]*types.Package, name string) (*types.Package, error) { pkg := w.Import(name) imports[name] = pkg return pkg, nil }, } pkg, err = conf.Check(name, fset, files, nil) if err != nil { ctxt := "" if w.context != nil { ctxt = fmt.Sprintf("%s-%s", w.context.GOOS, w.context.GOARCH) } log.Fatalf("error typechecking package %s: %s (%s)", name, err, ctxt) } pkgCache[key] = pkg w.imported[name] = pkg return } // pushScope enters a new scope (walking a package, type, node, etc) // and returns a function that will leave the scope (with sanity checking // for mismatched pushes & pops) func (w *Walker) pushScope(name string) (popFunc func()) { w.scope = append(w.scope, name) return func() { if len(w.scope) == 0 { log.Fatalf("attempt to leave scope %q with empty scope list", name) } if w.scope[len(w.scope)-1] != name { log.Fatalf("attempt to leave scope %q, but scope is currently %#v", name, w.scope) } w.scope = w.scope[:len(w.scope)-1] } } func sortedMethodNames(typ *types.Interface) []string { n := typ.NumMethods() list := make([]string, n) for i := range list { list[i] = typ.Method(i).Name() } sort.Strings(list) return list } func (w *Walker) writeType(buf *bytes.Buffer, typ types.Type) { switch typ := typ.(type) { case *types.Basic: s := typ.Name() switch typ.Kind() { case types.UnsafePointer: s = "unsafe.Pointer" case types.UntypedBool: s = "ideal-bool" case types.UntypedInt: s = "ideal-int" case types.UntypedRune: // "ideal-char" for compatibility with old tool // TODO(gri) change to "ideal-rune" s = "ideal-char" case types.UntypedFloat: s = "ideal-float" case types.UntypedComplex: s = "ideal-complex" case types.UntypedString: s = "ideal-string" case types.UntypedNil: panic("should never see untyped nil type") default: switch s { case "byte": s = "uint8" case "rune": s = "int32" } } buf.WriteString(s) case *types.Array: fmt.Fprintf(buf, "[%d]", typ.Len()) w.writeType(buf, typ.Elem()) case *types.Slice: buf.WriteString("[]") w.writeType(buf, typ.Elem()) case *types.Struct: buf.WriteString("struct") case *types.Pointer: buf.WriteByte('*') w.writeType(buf, typ.Elem()) case *types.Tuple: panic("should never see a tuple type") case *types.Signature: buf.WriteString("func") w.writeSignature(buf, typ) case *types.Interface: buf.WriteString("interface{") if typ.NumMethods() > 0 { buf.WriteByte(' ') buf.WriteString(strings.Join(sortedMethodNames(typ), ", ")) buf.WriteByte(' ') } buf.WriteString("}") case *types.Map: buf.WriteString("map[") w.writeType(buf, typ.Key()) buf.WriteByte(']') w.writeType(buf, typ.Elem()) case *types.Chan: var s string switch typ.Dir() { case ast.SEND: s = "chan<- " case ast.RECV: s = "<-chan " default: s = "chan " } buf.WriteString(s) w.writeType(buf, typ.Elem()) case *types.Named: obj := typ.Obj() pkg := obj.Pkg() if pkg != nil && pkg != w.current { buf.WriteString(pkg.Name()) buf.WriteByte('.') } buf.WriteString(typ.Obj().Name()) default: panic(fmt.Sprintf("unknown type %T", typ)) } } func (w *Walker) writeSignature(buf *bytes.Buffer, sig *types.Signature) { w.writeParams(buf, sig.Params(), sig.IsVariadic()) switch res := sig.Results(); res.Len() { case 0: // nothing to do case 1: buf.WriteByte(' ') w.writeType(buf, res.At(0).Type()) default: buf.WriteByte(' ') w.writeParams(buf, res, false) } } func (w *Walker) writeParams(buf *bytes.Buffer, t *types.Tuple, variadic bool) { buf.WriteByte('(') for i, n := 0, t.Len(); i < n; i++ { if i > 0 { buf.WriteString(", ") } typ := t.At(i).Type() if variadic && i+1 == n { buf.WriteString("...") typ = typ.(*types.Slice).Elem() } w.writeType(buf, typ) } buf.WriteByte(')') } func (w *Walker) typeString(typ types.Type) string { var buf bytes.Buffer w.writeType(&buf, typ) return buf.String() } func (w *Walker) signatureString(sig *types.Signature) string { var buf bytes.Buffer w.writeSignature(&buf, sig) return buf.String() } func (w *Walker) emitObj(obj types.Object) { switch obj := obj.(type) { case *types.Const: w.emitf("const %s %s", obj.Name(), w.typeString(obj.Type())) w.emitf("const %s = %s", obj.Name(), obj.Val()) case *types.Var: w.emitf("var %s %s", obj.Name(), w.typeString(obj.Type())) case *types.TypeName: w.emitType(obj) case *types.Func: w.emitFunc(obj) default: panic("unknown object: " + obj.String()) } } func (w *Walker) emitType(obj *types.TypeName) { name := obj.Name() typ := obj.Type() switch typ := typ.Underlying().(type) { case *types.Struct: w.emitStructType(name, typ) case *types.Interface: w.emitIfaceType(name, typ) return // methods are handled by emitIfaceType default: w.emitf("type %s %s", name, w.typeString(typ.Underlying())) } // emit methods with value receiver var methodNames map[string]bool vset := typ.MethodSet() for i, n := 0, vset.Len(); i < n; i++ { m := vset.At(i) if m.Obj().IsExported() { w.emitMethod(m) if methodNames == nil { methodNames = make(map[string]bool) } methodNames[m.Obj().Name()] = true } } // emit methods with pointer receiver; exclude // methods that we have emitted already // (the method set of *T includes the methods of T) pset := types.NewPointer(typ).MethodSet() for i, n := 0, pset.Len(); i < n; i++ { m := pset.At(i) if m.Obj().IsExported() && !methodNames[m.Obj().Name()] { w.emitMethod(m) } } } func (w *Walker) emitStructType(name string, typ *types.Struct) { typeStruct := fmt.Sprintf("type %s struct", name) w.emitf(typeStruct) defer w.pushScope(typeStruct)() for i := 0; i < typ.NumFields(); i++ { f := typ.Field(i) if !f.IsExported() { continue } typ := f.Type() if f.Anonymous() { w.emitf("embedded %s", w.typeString(typ)) continue } w.emitf("%s %s", f.Name(), w.typeString(typ)) } } func (w *Walker) emitIfaceType(name string, typ *types.Interface) { pop := w.pushScope("type " + name + " interface") var methodNames []string complete := true mset := typ.MethodSet() for i, n := 0, mset.Len(); i < n; i++ { m := mset.At(i).Obj().(*types.Func) if !m.IsExported() { complete = false continue } methodNames = append(methodNames, m.Name()) w.emitf("%s%s", m.Name(), w.signatureString(m.Type().(*types.Signature))) } if !complete { // The method set has unexported methods, so all the // implementations are provided by the same package, // so the method set can be extended. Instead of recording // the full set of names (below), record only that there were // unexported methods. (If the interface shrinks, we will notice // because a method signature emitted during the last loop // will disappear.) w.emitf("unexported methods") } pop() if !complete { return } if len(methodNames) == 0 { w.emitf("type %s interface {}", name) return } sort.Strings(methodNames) w.emitf("type %s interface { %s }", name, strings.Join(methodNames, ", ")) } func (w *Walker) emitFunc(f *types.Func) { sig := f.Type().(*types.Signature) if sig.Recv() != nil { panic("method considered a regular function: " + f.String()) } w.emitf("func %s%s", f.Name(), w.signatureString(sig)) } func (w *Walker) emitMethod(m *types.Selection) { sig := m.Type().(*types.Signature) recv := sig.Recv().Type() // report exported methods with unexported receiver base type if true { base := recv if p, _ := recv.(*types.Pointer); p != nil { base = p.Elem() } if obj := base.(*types.Named).Obj(); !obj.IsExported() { log.Fatalf("exported method with unexported receiver base type: %s", m) } } w.emitf("method (%s) %s%s", w.typeString(recv), m.Obj().Name(), w.signatureString(sig)) } func (w *Walker) emitf(format string, args ...interface{}) { f := strings.Join(w.scope, ", ") + ", " + fmt.Sprintf(format, args...) if strings.Contains(f, "\n") { panic("feature contains newlines: " + f) } if _, dup := w.features[f]; dup { panic("duplicate feature inserted: " + f) } w.features[f] = true if *verbose { log.Printf("feature: %s", f) } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api/goapi_test.go������������������������������������������������������������������������0100644�0000000�0000000�00000007415�12412656737�016276� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// +build api_tool // Copyright 2011 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 ( "bytes" "flag" "fmt" "go/build" "io/ioutil" "os" "os/exec" "path/filepath" "sort" "strings" "testing" ) var ( updateGolden = flag.Bool("updategolden", false, "update golden files") ) func TestGolden(t *testing.T) { td, err := os.Open("testdata/src/pkg") if err != nil { t.Fatal(err) } fis, err := td.Readdir(0) if err != nil { t.Fatal(err) } for _, fi := range fis { if !fi.IsDir() { continue } goldenFile := filepath.Join("testdata", "src", "pkg", fi.Name(), "golden.txt") w := NewWalker(nil, "testdata/src/pkg") w.export(w.Import(fi.Name())) if *updateGolden { os.Remove(goldenFile) f, err := os.Create(goldenFile) if err != nil { t.Fatal(err) } for _, feat := range w.Features() { fmt.Fprintf(f, "%s\n", feat) } f.Close() } bs, err := ioutil.ReadFile(goldenFile) if err != nil { t.Fatalf("opening golden.txt for package %q: %v", fi.Name(), err) } wanted := strings.Split(string(bs), "\n") sort.Strings(wanted) for _, feature := range wanted { if feature == "" { continue } _, ok := w.features[feature] if !ok { t.Errorf("package %s: missing feature %q", fi.Name(), feature) } delete(w.features, feature) } for _, feature := range w.Features() { t.Errorf("package %s: extra feature not in golden file: %q", fi.Name(), feature) } } } func TestCompareAPI(t *testing.T) { tests := []struct { name string features, required, optional, exception []string ok bool // want out string // want }{ { name: "feature added", features: []string{"A", "B", "C", "D", "E", "F"}, required: []string{"B", "D"}, ok: true, out: "+A\n+C\n+E\n+F\n", }, { name: "feature removed", features: []string{"C", "A"}, required: []string{"A", "B", "C"}, ok: false, out: "-B\n", }, { name: "feature added then removed", features: []string{"A", "C"}, optional: []string{"B"}, required: []string{"A", "C"}, ok: true, out: "±B\n", }, { name: "exception removal", required: []string{"A", "B", "C"}, features: []string{"A", "C"}, exception: []string{"B"}, ok: true, out: "", }, { // http://golang.org/issue/4303 name: "contexts reconverging", required: []string{ "A", "pkg syscall (darwin-386), type RawSockaddrInet6 struct", "pkg syscall (darwin-amd64), type RawSockaddrInet6 struct", }, features: []string{ "A", "pkg syscall, type RawSockaddrInet6 struct", }, ok: true, out: "+pkg syscall, type RawSockaddrInet6 struct\n", }, } for _, tt := range tests { buf := new(bytes.Buffer) gotok := compareAPI(buf, tt.features, tt.required, tt.optional, tt.exception) if gotok != tt.ok { t.Errorf("%s: ok = %v; want %v", tt.name, gotok, tt.ok) } if got := buf.String(); got != tt.out { t.Errorf("%s: output differs\nGOT:\n%s\nWANT:\n%s", tt.name, got, tt.out) } } } func BenchmarkAll(b *testing.B) { stds, err := exec.Command("go", "list", "std").Output() if err != nil { b.Fatal(err) } b.ResetTimer() pkgNames := strings.Fields(string(stds)) for _, c := range contexts { c.Compiler = build.Default.Compiler } for i := 0; i < b.N; i++ { for _, context := range contexts { w := NewWalker(context, filepath.Join(build.Default.GOROOT, "src/pkg")) for _, name := range pkgNames { if name != "unsafe" && !strings.HasPrefix(name, "cmd/") { w.export(w.Import(name)) } } w.Features() } } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api/run.go�������������������������������������������������������������������������������0100644�0000000�0000000�00000011326�12412656737�014740� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2013 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 ignore // The run program is invoked via "go run" from src/run.bash or // src/run.bat conditionally builds and runs the cmd/api tool. // // TODO(bradfitz): the "conditional" condition is always true. // We should only do this if the user has the hg codereview extension // enabled and verifies that the go.tools subrepo is checked out with // a suitably recently version. In prep for the cmd/api rewrite. package main import ( "fmt" "log" "net/http" "os" "os/exec" "os/user" "path/filepath" "strings" ) // goToolsVersion is the hg revision of the go.tools subrepo we need // to build cmd/api. This only needs to be updated whenever a go/types // bug fix is needed by the cmd/api tool. const goToolsVersion = "6698ca2900e2" var goroot string func main() { log.SetFlags(0) goroot = os.Getenv("GOROOT") // should be set by run.{bash,bat} if goroot == "" { log.Fatal("No $GOROOT set.") } _, err := exec.LookPath("hg") if err != nil { fmt.Println("Skipping cmd/api checks; hg not available") return } gopath := prepGoPath() cmd := exec.Command("go", "install", "--tags=api_tool", "cmd/api") cmd.Env = append(filterOut(os.Environ(), "GOARCH", "GOPATH"), "GOPATH="+gopath) out, err := cmd.CombinedOutput() if err != nil { log.Fatalf("Error installing cmd/api: %v\n%s", err, out) } out, err = exec.Command("go", "tool", "api", "-c", file("go1", "go1.1", "go1.2", "go1.3"), "-next", file("next"), "-except", file("except")).CombinedOutput() if err != nil { log.Fatalf("Error running API checker: %v\n%s", err, out) } fmt.Print(string(out)) } // filterOut returns a copy of the src environment without environment // variables from remove. // TODO: delete when issue 6201 is fixed. func filterOut(src []string, remove ...string) (out []string) { S: for _, s := range src { for _, r := range remove { if strings.HasPrefix(s, r) && strings.HasPrefix(s, r+"=") { continue S } } out = append(out, s) } return } // file expands s to $GOROOT/api/s.txt. // If there are more than 1, they're comma-separated. func file(s ...string) string { if len(s) > 1 { return file(s[0]) + "," + file(s[1:]...) } return filepath.Join(goroot, "api", s[0]+".txt") } // prepGoPath returns a GOPATH for the "go" tool to compile the API tool with. // It tries to re-use a go.tools checkout from a previous run if possible, // else it hg clones it. func prepGoPath() string { const tempBase = "go.tools.TMP" username := "" u, err := user.Current() if err == nil { username = u.Username } else { // Only need to handle Unix here, as Windows's os/user uses // native syscall and should work fine without cgo. username = os.Getenv("USER") if username == "" { log.Fatalf("Error getting current user: %v", err) } } // The GOPATH we'll return gopath := filepath.Join(os.TempDir(), "gopath-api-"+cleanUsername(username), goToolsVersion) // cloneDir is where we run "hg clone". cloneDir := filepath.Join(gopath, "src", "code.google.com", "p") // The dir we clone into. We only atomically rename it to finalDir on // clone success. tmpDir := filepath.Join(cloneDir, tempBase) // finalDir is where the checkout will live once it's complete. finalDir := filepath.Join(cloneDir, "go.tools") if goToolsCheckoutGood(finalDir) { return gopath } os.RemoveAll(finalDir) // in case it's there but corrupt os.RemoveAll(tmpDir) // in case of aborted hg clone before if err := os.MkdirAll(cloneDir, 0700); err != nil { log.Fatal(err) } cmd := exec.Command("hg", "clone", "--rev="+goToolsVersion, "https://code.google.com/p/go.tools", tempBase) cmd.Dir = cloneDir out, err := cmd.CombinedOutput() if err != nil { if _, err := http.Head("http://ip.appspot.com/"); err != nil { log.Printf("# Skipping API check; network appears to be unavailable") os.Exit(0) } log.Fatalf("Error running hg clone on go.tools: %v\n%s", err, out) } if err := os.Rename(tmpDir, finalDir); err != nil { log.Fatal(err) } return gopath } func cleanUsername(n string) string { b := make([]rune, len(n)) for i, r := range n { if r == '\\' || r == '/' || r == ':' { b[i] = '_' } else { b[i] = r } } return string(b) } func goToolsCheckoutGood(dir string) bool { if _, err := os.Stat(dir); err != nil { return false } cmd := exec.Command("hg", "id", "--id") cmd.Dir = dir out, err := cmd.Output() if err != nil { return false } id := strings.TrimSpace(string(out)) if id != goToolsVersion { return false } cmd = exec.Command("hg", "status") cmd.Dir = dir out, err = cmd.Output() if err != nil || len(out) > 0 { return false } return true } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api/testdata�����������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656734�015334� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api/testdata/src�������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656734�016123� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api/testdata/src/pkg���������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656734�016704� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api/testdata/src/pkg/p1������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656734�017224� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api/testdata/src/pkg/p1/golden.txt�������������������������������������������������������0100644�0000000�0000000�00000006400�12412656734�021311� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkg p1, const A = 1 pkg p1, const A ideal-int pkg p1, const A64 = 1 pkg p1, const A64 int64 pkg p1, const AIsLowerA = 11 pkg p1, const AIsLowerA ideal-int pkg p1, const B0 = 2 pkg p1, const B0 ideal-int pkg p1, const ConstChase2 = 11 pkg p1, const ConstChase2 ideal-int pkg p1, const ConversionConst = 5 pkg p1, const ConversionConst MyInt pkg p1, const FloatConst = 3/2 pkg p1, const FloatConst ideal-float pkg p1, const StrConst = "foo" pkg p1, const StrConst ideal-string pkg p1, func Bar(int8, int16, int64) pkg p1, func Bar1(int8, int16, int64) uint64 pkg p1, func Bar2(int8, int16, int64) (uint8, uint64) pkg p1, func BarE() Error pkg p1, func Now() Time pkg p1, func PlainFunc(int, int, string) (*B, error) pkg p1, func TakesFunc(func(int) int) pkg p1, method (*B) JustOnB() pkg p1, method (*B) OnBothTandBPtr() pkg p1, method (*Embedded) OnEmbedded() pkg p1, method (*S2) SMethod(int8, int16, int64) pkg p1, method (*T) JustOnT() pkg p1, method (*T) OnBothTandBPtr() pkg p1, method (B) OnBothTandBVal() pkg p1, method (S) StructValueMethod() pkg p1, method (S) StructValueMethodNamedRecv() pkg p1, method (S2) StructValueMethod() pkg p1, method (S2) StructValueMethodNamedRecv() pkg p1, method (T) OnBothTandBVal() pkg p1, method (TPtrExported) OnEmbedded() pkg p1, method (TPtrUnexported) OnBothTandBPtr() pkg p1, method (TPtrUnexported) OnBothTandBVal() pkg p1, type B struct pkg p1, type ByteStruct struct pkg p1, type ByteStruct struct, B uint8 pkg p1, type ByteStruct struct, R int32 pkg p1, type Codec struct pkg p1, type Codec struct, Func func(int, int) int pkg p1, type EmbedSelector struct pkg p1, type EmbedSelector struct, embedded Time pkg p1, type EmbedURLPtr struct pkg p1, type EmbedURLPtr struct, embedded *URL pkg p1, type Embedded struct pkg p1, type Error interface { Error, Temporary } pkg p1, type Error interface, Error() string pkg p1, type Error interface, Temporary() bool pkg p1, type FuncType func(int, int, string) (*B, error) pkg p1, type I interface, Get(string) int64 pkg p1, type I interface, GetNamed(string) int64 pkg p1, type I interface, Name() string pkg p1, type I interface, PackageTwoMeth() pkg p1, type I interface, Set(string, int64) pkg p1, type I interface, unexported methods pkg p1, type MyInt int pkg p1, type Namer interface { Name } pkg p1, type Namer interface, Name() string pkg p1, type Private interface, X() pkg p1, type Private interface, unexported methods pkg p1, type Public interface { X, Y } pkg p1, type Public interface, X() pkg p1, type Public interface, Y() pkg p1, type S struct pkg p1, type S struct, Public *int pkg p1, type S struct, PublicTime Time pkg p1, type S2 struct pkg p1, type S2 struct, Extra bool pkg p1, type S2 struct, embedded S pkg p1, type SI struct pkg p1, type SI struct, I int pkg p1, type T struct pkg p1, type TPtrExported struct pkg p1, type TPtrExported struct, embedded *Embedded pkg p1, type TPtrUnexported struct pkg p1, type Time struct pkg p1, type URL struct pkg p1, var Byte uint8 pkg p1, var ByteConv []uint8 pkg p1, var ByteFunc func(uint8) int32 pkg p1, var ChecksumError error pkg p1, var SIPtr *SI pkg p1, var SIPtr2 *SI pkg p1, var SIVal SI pkg p1, var StrConv string pkg p1, var V string pkg p1, var V1 uint64 pkg p1, var V2 p2.Twoer pkg p1, var VError Error pkg p1, var X I pkg p1, var X0 int64 pkg p1, var Y int ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api/testdata/src/pkg/p1/p1.go������������������������������������������������������������0100644�0000000�0000000�00000005666�12412656734�020164� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������package p1 import ( ptwo "p2" ) const ( ConstChase2 = constChase // forward declaration to unexported ident constChase = AIsLowerA // forward declaration to exported ident A = 1 a = 11 A64 int64 = 1 AIsLowerA = a // previously declared ) const ( ConversionConst = MyInt(5) ) // Variables from function calls. var ( V = ptwo.F() VError = BarE() V1 = Bar1(1, 2, 3) V2 = ptwo.G() ) // Variables with conversions: var ( StrConv = string("foo") ByteConv = []byte("foo") ) var ChecksumError = ptwo.NewError("gzip checksum error") const B0 = 2 const StrConst = "foo" const FloatConst = 1.5 type myInt int type MyInt int type Time struct{} type S struct { Public *int private *int PublicTime Time } type URL struct{} type EmbedURLPtr struct { *URL } type S2 struct { S Extra bool } var X0 int64 var ( Y int X I ) type Namer interface { Name() string } type I interface { Namer ptwo.Twoer Set(name string, balance int64) Get(string) int64 GetNamed(string) (balance int64) private() } type Public interface { X() Y() } type Private interface { X() y() } type Error interface { error Temporary() bool } func (myInt) privateTypeMethod() {} func (myInt) CapitalMethodUnexportedType() {} func (s *S2) SMethod(x int8, y int16, z int64) {} type s struct{} func (s) method() func (s) Method() func (S) StructValueMethod() func (ignored S) StructValueMethodNamedRecv() func (s *S2) unexported(x int8, y int16, z int64) {} func Bar(x int8, y int16, z int64) {} func Bar1(x int8, y int16, z int64) uint64 {} func Bar2(x int8, y int16, z int64) (uint8, uint64) {} func BarE() Error {} func unexported(x int8, y int16, z int64) {} func TakesFunc(f func(dontWantName int) int) type Codec struct { Func func(x int, y int) (z int) } type SI struct { I int } var SIVal = SI{} var SIPtr = &SI{} var SIPtr2 *SI type T struct { common } type B struct { common } type common struct { i int } type TPtrUnexported struct { *common } type TPtrExported struct { *Embedded } type FuncType func(x, y int, s string) (b *B, err error) type Embedded struct{} func PlainFunc(x, y int, s string) (b *B, err error) func (*Embedded) OnEmbedded() {} func (*T) JustOnT() {} func (*B) JustOnB() {} func (*common) OnBothTandBPtr() {} func (common) OnBothTandBVal() {} type EmbedSelector struct { Time } const ( foo = "foo" foo2 string = "foo2" truth = foo == "foo" || foo2 == "foo2" ) func ellipsis(...string) {} func Now() Time { var now Time return now } var x = &S{ Public: nil, private: nil, PublicTime: Now(), } var parenExpr = (1 + 5) var funcLit = func() {} var m map[string]int var chanVar chan int var ifaceVar interface{} = 5 var assertVar = ifaceVar.(int) var indexVar = m["foo"] var Byte byte var ByteFunc func(byte) rune type ByteStruct struct { B byte R rune } ��������������������������������������������������������������������������go/src/cmd/api/testdata/src/pkg/p2������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656734�017225� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api/testdata/src/pkg/p2/golden.txt�������������������������������������������������������0100644�0000000�0000000�00000000262�12412656734�021312� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkg p2, func F() string pkg p2, func G() Twoer pkg p2, func NewError(string) error pkg p2, type Twoer interface { PackageTwoMeth } pkg p2, type Twoer interface, PackageTwoMeth() ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api/testdata/src/pkg/p2/p2.go������������������������������������������������������������0100644�0000000�0000000�00000000233�12412656734�020147� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������package p2 type Twoer interface { PackageTwoMeth() } func F() string {} func G() Twoer {} func NewError(s string) error {} ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api/testdata/src/pkg/p3������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656734�017226� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api/testdata/src/pkg/p3/golden.txt�������������������������������������������������������0100644�0000000�0000000�00000000246�12412656734�021315� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkg p3, func BadHop(int, int, int) (bool, bool, *ThirdBase, *ThirdBase, error) pkg p3, method (*ThirdBase) GoodPlayer() (int, int, int) pkg p3, type ThirdBase struct ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/api/testdata/src/pkg/p3/p3.go������������������������������������������������������������0100644�0000000�0000000�00000000226�12412656734�020153� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������package p3 type ThirdBase struct{} func (tb *ThirdBase) GoodPlayer() (i, j, k int) func BadHop(i, j, k int) (l, m bool, n, o *ThirdBase, err error) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc���������������������������������������������������������������������������������������0040755�0000000�0000000�00000000000�12412656737�013342� 5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/Makefile������������������������������������������������������������������������������0100644�0000000�0000000�00000000406�12412656734�015053� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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. include ../../Make.dist install: y.tab.h y.tab.h: cc.y LANG=C LANGUAGE=en_US.UTF8 bison -d -v -y cc.y ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/acid.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000016534�12412656734�014470� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/acid.c // http://code.google.com/p/inferno-os/source/browse/utils/cc/acid.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "cc.h" static char *kwd[] = { "$adt", "$aggr", "$append", "$complex", "$defn", "$delete", "$do", "$else", "$eval", "$head", "$if", "$local", "$loop", "$return", "$tail", "$then", "$union", "$whatis", "$while", }; char* amap(char *s) { int i, bot, top, new; bot = 0; top = bot + nelem(kwd) - 1; while(bot <= top){ new = bot + (top - bot)/2; i = strcmp(kwd[new]+1, s); if(i == 0) return kwd[new]; if(i < 0) bot = new + 1; else top = new - 1; } return s; } Sym* acidsue(Type *t) { int h; Sym *s; if(t != T) for(h=0; hlink) if(s->suetag && s->suetag->link == t) return s; return 0; } Sym* acidfun(Type *t) { int h; Sym *s; for(h=0; hlink) if(s->type == t) return s; return 0; } char acidchar[NTYPE]; Init acidcinit[] = { TCHAR, 'C', 0, TUCHAR, 'b', 0, TSHORT, 'd', 0, TUSHORT, 'u', 0, TLONG, 'D', 0, TULONG, 'U', 0, TVLONG, 'V', 0, TUVLONG, 'W', 0, TFLOAT, 'f', 0, TDOUBLE, 'F', 0, TARRAY, 'a', 0, TIND, 'X', 0, -1, 0, 0, }; static void acidinit(void) { Init *p; for(p=acidcinit; p->code >= 0; p++) acidchar[p->code] = p->value; acidchar[TINT] = acidchar[TLONG]; acidchar[TUINT] = acidchar[TULONG]; if(types[TINT]->width != types[TLONG]->width) { acidchar[TINT] = acidchar[TSHORT]; acidchar[TUINT] = acidchar[TUSHORT]; if(types[TINT]->width != types[TSHORT]->width) warn(Z, "acidmember int not long or short"); } if(types[TIND]->width == types[TUVLONG]->width) acidchar[TIND] = 'Y'; } void acidmember(Type *t, int32 off, int flag) { Sym *s, *s1; Type *l; static int acidcharinit = 0; if(acidcharinit == 0) { acidinit(); acidcharinit = 1; } s = t->sym; switch(t->etype) { default: Bprint(&outbuf, " T%d\n", t->etype); break; case TIND: if(s == S) break; l = t->link; if(flag) { if(typesu[l->etype]) { s1 = acidsue(l->link); if(s1 != S) { Bprint(&outbuf, " 'A' %s %d %s;\n", amap(s1->name), t->offset+off, amap(s->name)); break; } } } else { l = t->link; s1 = S; if(typesu[l->etype]) s1 = acidsue(l->link); if(s1 != S) { Bprint(&outbuf, "\tprint(indent, \"%s\t(%s)\", addr.%s\\X, \"\\n\");\n", amap(s->name), amap(s1->name), amap(s->name)); } else { Bprint(&outbuf, "\tprint(indent, \"%s\t\", addr.%s\\X, \"\\n\");\n", amap(s->name), amap(s->name)); } break; } case TINT: case TUINT: case TCHAR: case TUCHAR: case TSHORT: case TUSHORT: case TLONG: case TULONG: case TVLONG: case TUVLONG: case TFLOAT: case TDOUBLE: case TARRAY: if(s == S) break; if(flag) { Bprint(&outbuf, " '%c' %d %s;\n", acidchar[t->etype], t->offset+off, amap(s->name)); } else { Bprint(&outbuf, "\tprint(indent, \"%s\t\", addr.%s, \"\\n\");\n", amap(s->name), amap(s->name)); } break; case TSTRUCT: case TUNION: s1 = acidsue(t->link); if(s1 == S) break; if(flag) { if(s == S) { Bprint(&outbuf, " {\n"); for(l = t->link; l != T; l = l->down) acidmember(l, t->offset+off, flag); Bprint(&outbuf, " };\n"); } else { Bprint(&outbuf, " %s %d %s;\n", amap(s1->name), t->offset+off, amap(s->name)); } } else { if(s != S) { Bprint(&outbuf, "\tprint(indent, \"%s %s {\\n\");\n", amap(s1->name), amap(s->name)); Bprint(&outbuf, "\tindent_%s(addr.%s, indent+\"\\t\");\n", amap(s1->name), amap(s->name)); Bprint(&outbuf, "\tprint(indent, \"}\\n\");\n"); } else { Bprint(&outbuf, "\tprint(indent, \"%s {\\n\");\n", amap(s1->name)); Bprint(&outbuf, "\tindent_%s(addr+%d, indent+\"\\t\");\n", amap(s1->name), t->offset+off); Bprint(&outbuf, "\tprint(indent, \"}\\n\");\n"); } } break; } } void acidtype(Type *t) { Sym *s; Type *l; Io *i; int n; char *an; if(!debug['a']) return; if(debug['a'] > 1) { n = 0; for(i=iostack; i; i=i->link) n++; if(n > 1) return; } s = acidsue(t->link); if(s == S) return; switch(t->etype) { default: Bprint(&outbuf, "T%d\n", t->etype); return; case TUNION: case TSTRUCT: if(debug['s']) goto asmstr; an = amap(s->name); Bprint(&outbuf, "sizeof%s = %d;\n", an, t->width); Bprint(&outbuf, "aggr %s\n{\n", an); for(l = t->link; l != T; l = l->down) acidmember(l, 0, 1); Bprint(&outbuf, "};\n\n"); Bprint(&outbuf, "defn\n%s(addr) {\n\tindent_%s(addr, \"\\t\");\n}\n", an, an); Bprint(&outbuf, "defn\nindent_%s(addr, indent) {\n\tcomplex %s addr;\n", an, an); for(l = t->link; l != T; l = l->down) acidmember(l, 0, 0); Bprint(&outbuf, "};\n\n"); break; asmstr: if(s == S) break; for(l = t->link; l != T; l = l->down) if(l->sym != S) Bprint(&outbuf, "#define\t%s.%s\t%d\n", s->name, l->sym->name, l->offset); break; } } void acidvar(Sym *s) { int n; Io *i; Type *t; Sym *s1, *s2; if(!debug['a'] || debug['s']) return; if(debug['a'] > 1) { n = 0; for(i=iostack; i; i=i->link) n++; if(n > 1) return; } t = s->type; while(t && t->etype == TIND) t = t->link; if(t == T) return; if(t->etype == TENUM) { Bprint(&outbuf, "%s = ", amap(s->name)); if(!typefd[t->etype]) Bprint(&outbuf, "%lld;\n", s->vconst); else Bprint(&outbuf, "%f\n;", s->fconst); return; } if(!typesu[t->etype]) return; s1 = acidsue(t->link); if(s1 == S) return; switch(s->class) { case CAUTO: case CPARAM: s2 = acidfun(thisfn); if(s2) Bprint(&outbuf, "complex %s %s:%s;\n", amap(s1->name), amap(s2->name), amap(s->name)); break; case CSTATIC: case CEXTERN: case CGLOBL: case CLOCAL: Bprint(&outbuf, "complex %s %s;\n", amap(s1->name), amap(s->name)); break; } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/bits.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000005025�12412656734�014522� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/bits.c // http://code.google.com/p/inferno-os/source/browse/utils/cc/bits.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "cc.h" Bits bor(Bits a, Bits b) { Bits c; int i; for(i=0; ib[i]) return 1; return 0; } int beq(Bits a, Bits b) { int i; for(i=0; i #include "cc.h" enum { WORDSIZE = sizeof(uint32), WORDBITS = 32, }; uintptr bvsize(uintptr n) { return ((n + WORDBITS - 1) / WORDBITS) * WORDSIZE; } Bvec* bvalloc(int32 n) { Bvec *bv; uintptr nbytes; if(n < 0) fatal(Z, "bvalloc: initial size is negative\n"); nbytes = sizeof(Bvec) + bvsize(n); bv = malloc(nbytes); if(bv == nil) fatal(Z, "bvalloc: malloc failed\n"); memset(bv, 0, nbytes); bv->n = n; return bv; } void bvset(Bvec *bv, int32 i) { uint32 mask; if(i < 0 || i >= bv->n) fatal(Z, "bvset: index %d is out of bounds with length %d\n", i, bv->n); mask = 1 << (i % WORDBITS); bv->b[i / WORDBITS] |= mask; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/cc.h����������������������������������������������������������������������������������0100644�0000000�0000000�00000034657�12412656737�014173� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/cc.h // http://code.google.com/p/inferno-os/source/browse/utils/cc/cc.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include #include #ifndef EXTERN #define EXTERN extern #endif #undef getc #undef ungetc #undef BUFSIZ #define getc ccgetc #define ungetc ccungetc typedef struct Node Node; typedef struct Sym Sym; typedef struct Type Type; typedef struct Funct Funct; typedef struct Decl Decl; typedef struct Io Io; typedef struct Term Term; typedef struct Init Init; typedef struct Bits Bits; typedef struct Bvec Bvec; typedef struct Dynimp Dynimp; typedef struct Dynexp Dynexp; typedef struct Var Var; typedef Rune TRune; /* target system type */ #define BUFSIZ 8192 #define NSYMB 500 #define NHASH 1024 #define STRINGSZ 200 #define HISTSZ 20 #define YYMAXDEPTH 500 #define NTERM 10 #define MAXALIGN 7 #define SIGN(n) ((uvlong)1<<(n-1)) #define MASK(n) (SIGN(n)|(SIGN(n)-1)) #define BITS 5 #define NVAR (BITS*sizeof(uint32)*8) struct Bits { uint32 b[BITS]; }; struct Bvec { int32 n; // number of bits uint32 b[]; }; struct Var { vlong offset; LSym* sym; char name; char etype; }; struct Node { Node* left; Node* right; void* label; int32 pc; int reg; int32 xoffset; double fconst; /* fp constant */ vlong vconst; /* non fp const */ char* cstring; /* character string */ TRune* rstring; /* rune string */ Sym* sym; Type* type; int32 lineno; uchar op; uchar oldop; uchar xcast; uchar class; uchar etype; uchar complex; uchar addable; uchar scale; uchar garb; }; #define Z ((Node*)0) struct Sym { Sym* link; LSym* lsym; Type* type; Type* suetag; Type* tenum; char* macro; int32 varlineno; int32 offset; vlong vconst; double fconst; Node* label; ushort lexical; char *name; ushort block; ushort sueblock; uchar class; uchar sym; uchar aused; uchar sig; uchar dataflag; }; #define S ((Sym*)0) enum{ SIGNONE = 0, SIGDONE = 1, SIGINTERN = 2, SIGNINTERN = 1729*325*1729, }; struct Decl { Decl* link; Sym* sym; Type* type; int32 varlineno; int32 offset; short val; ushort block; uchar class; uchar aused; }; #define D ((Decl*)0) struct Type { Sym* sym; Sym* tag; Funct* funct; Type* link; Type* down; int32 width; int32 offset; int32 lineno; uchar shift; uchar nbits; uchar etype; uchar garb; uchar align; }; #define T ((Type*)0) #define NODECL ((void(*)(int, Type*, Sym*))0) struct Init /* general purpose initialization */ { int code; uint32 value; char* s; }; EXTERN struct { char* p; int c; } fi; struct Io { Io* link; char* p; char b[BUFSIZ]; short c; short f; }; #define I ((Io*)0) struct Term { vlong mult; Node *node; }; enum { Axxx, Ael1, Ael2, Asu2, Aarg0, Aarg1, Aarg2, Aaut3, NALIGN, }; enum { DMARK, DAUTO, DSUE, DLABEL, }; enum { OXXX, OADD, OADDR, OAND, OANDAND, OARRAY, OAS, OASI, OASADD, OASAND, OASASHL, OASASHR, OASDIV, OASHL, OASHR, OASLDIV, OASLMOD, OASLMUL, OASLSHR, OASMOD, OASMUL, OASOR, OASSUB, OASXOR, OBIT, OBREAK, OCASE, OCAST, OCOMMA, OCOND, OCONST, OCONTINUE, ODIV, ODOT, ODOTDOT, ODWHILE, OENUM, OEQ, OEXREG, OFOR, OFUNC, OGE, OGOTO, OGT, OHI, OHS, OIF, OIND, OINDREG, OINIT, OLABEL, OLDIV, OLE, OLIST, OLMOD, OLMUL, OLO, OLS, OLSHR, OLT, OMOD, OMUL, ONAME, ONE, ONOT, OOR, OOROR, OPOSTDEC, OPOSTINC, OPREDEC, OPREINC, OPREFETCH, OPROTO, OREGISTER, ORETURN, OSET, OSIGN, OSIZE, OSTRING, OLSTRING, OSTRUCT, OSUB, OSWITCH, OUNION, OUSED, OWHILE, OXOR, ONEG, OCOM, OPOS, OELEM, OTST, /* used in some compilers */ OINDEX, OFAS, OREGPAIR, OROTL, OEND }; enum { TXXX, TCHAR, TUCHAR, TSHORT, TUSHORT, TINT, TUINT, TLONG, TULONG, TVLONG, TUVLONG, TFLOAT, TDOUBLE, TIND, TFUNC, TARRAY, TVOID, TSTRUCT, TUNION, TENUM, NTYPE, TAUTO = NTYPE, TEXTERN, TSTATIC, TTYPEDEF, TTYPESTR, TREGISTER, TCONSTNT, TVOLATILE, TUNSIGNED, TSIGNED, TDOT, TFILE, TOLD, NALLTYPES, /* adapt size of Rune to target system's size */ TRUNE = sizeof(TRune)==4? TUINT: TUSHORT, }; enum { CXXX, CAUTO, CEXTERN, CGLOBL, CSTATIC, CLOCAL, CTYPEDEF, CTYPESTR, CPARAM, CSELEM, CLABEL, CEXREG, NCTYPES, }; enum { GXXX = 0, GCONSTNT = 1<<0, GVOLATILE = 1<<1, NGTYPES = 1<<2, GINCOMPLETE = 1<<2, }; enum { BCHAR = 1L< #include /* if we don't, bison will, and cc.h re-#defines getc */ #include "cc.h" %} %union { Node* node; Sym* sym; Type* type; struct { Type* t; uchar c; } tycl; struct { Type* t1; Type* t2; Type* t3; uchar c; } tyty; struct { char* s; int32 l; } sval; int32 lval; double dval; vlong vval; } %type ltag %type gctname gcname cname gname tname %type gctnlist gcnlist zgnlist %type tlist sbody complex %type types %type zarglist arglist zcexpr %type name block stmnt cexpr expr xuexpr pexpr %type zelist elist adecl slist uexpr string lstring %type xdecor xdecor2 labels label ulstmnt %type adlist edecor tag qual qlist %type abdecor abdecor1 abdecor2 abdecor3 %type zexpr lexpr init ilist forexpr %left ';' %left ',' %right '=' LPE LME LMLE LDVE LMDE LRSHE LLSHE LANDE LXORE LORE %right '?' ':' %left LOROR %left LANDAND %left '|' %left '^' %left '&' %left LEQ LNE %left '<' '>' LLE LGE %left LLSH LRSH %left '+' '-' %left '*' '/' '%' %right LMM LPP LMG '.' '[' '(' %token LNAME LTYPE %token LFCONST LDCONST %token LCONST LLCONST LUCONST LULCONST LVLCONST LUVLCONST %token LSTRING LLSTRING %token LAUTO LBREAK LCASE LCHAR LCONTINUE LDEFAULT LDO %token LDOUBLE LELSE LEXTERN LFLOAT LFOR LGOTO %token LIF LINT LLONG LPREFETCH LREGISTER LRETURN LSHORT LSIZEOF LUSED %token LSTATIC LSTRUCT LSWITCH LTYPEDEF LTYPESTR LUNION LUNSIGNED %token LWHILE LVOID LENUM LSIGNED LCONSTNT LVOLATILE LSET LSIGNOF %token LRESTRICT LINLINE %% prog: | prog xdecl /* * external declarator */ xdecl: zctlist ';' { dodecl(xdecl, lastclass, lasttype, Z); } | zctlist xdlist ';' | zctlist xdecor { lastdcl = T; firstarg = S; dodecl(xdecl, lastclass, lasttype, $2); if(lastdcl == T || lastdcl->etype != TFUNC) { diag($2, "not a function"); lastdcl = types[TFUNC]; } thisfn = lastdcl; markdcl(); firstdcl = dclstack; argmark($2, 0); } pdecl { argmark($2, 1); } block { Node *n; n = revertdcl(); if(n) $6 = new(OLIST, n, $6); if(!debug['a'] && !debug['Z']) codgen($6, $2); } xdlist: xdecor { dodecl(xdecl, lastclass, lasttype, $1); } | xdecor { $1 = dodecl(xdecl, lastclass, lasttype, $1); } '=' init { doinit($1->sym, $1->type, 0L, $4); } | xdlist ',' xdlist xdecor: xdecor2 | '*' zgnlist xdecor { $$ = new(OIND, $3, Z); $$->garb = simpleg($2); } xdecor2: tag | '(' xdecor ')' { $$ = $2; } | xdecor2 '(' zarglist ')' { $$ = new(OFUNC, $1, $3); } | xdecor2 '[' zexpr ']' { $$ = new(OARRAY, $1, $3); } /* * automatic declarator */ adecl: ctlist ';' { $$ = dodecl(adecl, lastclass, lasttype, Z); } | ctlist adlist ';' { $$ = $2; } adlist: xdecor { dodecl(adecl, lastclass, lasttype, $1); $$ = Z; } | xdecor { $1 = dodecl(adecl, lastclass, lasttype, $1); } '=' init { int32 w; w = $1->sym->type->width; $$ = doinit($1->sym, $1->type, 0L, $4); $$ = contig($1->sym, $$, w); } | adlist ',' adlist { $$ = $1; if($3 != Z) { $$ = $3; if($1 != Z) $$ = new(OLIST, $1, $3); } } /* * parameter declarator */ pdecl: | pdecl ctlist pdlist ';' pdlist: xdecor { dodecl(pdecl, lastclass, lasttype, $1); } | pdlist ',' pdlist /* * structure element declarator */ edecl: tlist { lasttype = $1; } zedlist ';' | edecl tlist { lasttype = $2; } zedlist ';' zedlist: /* extension */ { lastfield = 0; edecl(CXXX, lasttype, S); } | edlist edlist: edecor { dodecl(edecl, CXXX, lasttype, $1); } | edlist ',' edlist edecor: xdecor { lastbit = 0; firstbit = 1; } | tag ':' lexpr { $$ = new(OBIT, $1, $3); } | ':' lexpr { $$ = new(OBIT, Z, $2); } /* * abstract declarator */ abdecor: { $$ = (Z); } | abdecor1 abdecor1: '*' zgnlist { $$ = new(OIND, (Z), Z); $$->garb = simpleg($2); } | '*' zgnlist abdecor1 { $$ = new(OIND, $3, Z); $$->garb = simpleg($2); } | abdecor2 abdecor2: abdecor3 | abdecor2 '(' zarglist ')' { $$ = new(OFUNC, $1, $3); } | abdecor2 '[' zexpr ']' { $$ = new(OARRAY, $1, $3); } abdecor3: '(' ')' { $$ = new(OFUNC, (Z), Z); } | '[' zexpr ']' { $$ = new(OARRAY, (Z), $2); } | '(' abdecor1 ')' { $$ = $2; } init: expr | '{' ilist '}' { $$ = new(OINIT, invert($2), Z); } qual: '[' lexpr ']' { $$ = new(OARRAY, $2, Z); } | '.' ltag { $$ = new(OELEM, Z, Z); $$->sym = $2; } | qual '=' qlist: init ',' | qlist init ',' { $$ = new(OLIST, $1, $2); } | qual | qlist qual { $$ = new(OLIST, $1, $2); } ilist: qlist | init | qlist init { $$ = new(OLIST, $1, $2); } zarglist: { $$ = Z; } | arglist { $$ = invert($1); } arglist: name | tlist abdecor { $$ = new(OPROTO, $2, Z); $$->type = $1; } | tlist xdecor { $$ = new(OPROTO, $2, Z); $$->type = $1; } | '.' '.' '.' { $$ = new(ODOTDOT, Z, Z); } | arglist ',' arglist { $$ = new(OLIST, $1, $3); } block: '{' slist '}' { $$ = invert($2); // if($2 != Z) // $$ = new(OLIST, $2, $$); if($$ == Z) $$ = new(OLIST, Z, Z); } slist: { $$ = Z; } | slist adecl { $$ = new(OLIST, $1, $2); } | slist stmnt { $$ = new(OLIST, $1, $2); } labels: label | labels label { $$ = new(OLIST, $1, $2); } label: LCASE expr ':' { $$ = new(OCASE, $2, Z); } | LDEFAULT ':' { $$ = new(OCASE, Z, Z); } | LNAME ':' { $$ = new(OLABEL, dcllabel($1, 1), Z); } stmnt: error ';' { $$ = Z; } | ulstmnt | labels ulstmnt { $$ = new(OLIST, $1, $2); } forexpr: zcexpr | ctlist adlist { $$ = $2; } ulstmnt: zcexpr ';' | { markdcl(); } block { $$ = revertdcl(); if($$) $$ = new(OLIST, $$, $2); else $$ = $2; } | LIF '(' cexpr ')' stmnt { $$ = new(OIF, $3, new(OLIST, $5, Z)); if($5 == Z) warn($3, "empty if body"); } | LIF '(' cexpr ')' stmnt LELSE stmnt { $$ = new(OIF, $3, new(OLIST, $5, $7)); if($5 == Z) warn($3, "empty if body"); if($7 == Z) warn($3, "empty else body"); } | { markdcl(); } LFOR '(' forexpr ';' zcexpr ';' zcexpr ')' stmnt { $$ = revertdcl(); if($$){ if($4) $4 = new(OLIST, $$, $4); else $4 = $$; } $$ = new(OFOR, new(OLIST, $6, new(OLIST, $4, $8)), $10); } | LWHILE '(' cexpr ')' stmnt { $$ = new(OWHILE, $3, $5); } | LDO stmnt LWHILE '(' cexpr ')' ';' { $$ = new(ODWHILE, $5, $2); } | LRETURN zcexpr ';' { $$ = new(ORETURN, $2, Z); $$->type = thisfn->link; } | LSWITCH '(' cexpr ')' stmnt { $$ = new(OCONST, Z, Z); $$->vconst = 0; $$->type = types[TINT]; $3 = new(OSUB, $$, $3); $$ = new(OCONST, Z, Z); $$->vconst = 0; $$->type = types[TINT]; $3 = new(OSUB, $$, $3); $$ = new(OSWITCH, $3, $5); } | LBREAK ';' { $$ = new(OBREAK, Z, Z); } | LCONTINUE ';' { $$ = new(OCONTINUE, Z, Z); } | LGOTO ltag ';' { $$ = new(OGOTO, dcllabel($2, 0), Z); } | LUSED '(' zelist ')' ';' { $$ = new(OUSED, $3, Z); } | LPREFETCH '(' zelist ')' ';' { $$ = new(OPREFETCH, $3, Z); } | LSET '(' zelist ')' ';' { $$ = new(OSET, $3, Z); } zcexpr: { $$ = Z; } | cexpr zexpr: { $$ = Z; } | lexpr lexpr: expr { $$ = new(OCAST, $1, Z); $$->type = types[TLONG]; } cexpr: expr | cexpr ',' cexpr { $$ = new(OCOMMA, $1, $3); } expr: xuexpr | expr '*' expr { $$ = new(OMUL, $1, $3); } | expr '/' expr { $$ = new(ODIV, $1, $3); } | expr '%' expr { $$ = new(OMOD, $1, $3); } | expr '+' expr { $$ = new(OADD, $1, $3); } | expr '-' expr { $$ = new(OSUB, $1, $3); } | expr LRSH expr { $$ = new(OASHR, $1, $3); } | expr LLSH expr { $$ = new(OASHL, $1, $3); } | expr '<' expr { $$ = new(OLT, $1, $3); } | expr '>' expr { $$ = new(OGT, $1, $3); } | expr LLE expr { $$ = new(OLE, $1, $3); } | expr LGE expr { $$ = new(OGE, $1, $3); } | expr LEQ expr { $$ = new(OEQ, $1, $3); } | expr LNE expr { $$ = new(ONE, $1, $3); } | expr '&' expr { $$ = new(OAND, $1, $3); } | expr '^' expr { $$ = new(OXOR, $1, $3); } | expr '|' expr { $$ = new(OOR, $1, $3); } | expr LANDAND expr { $$ = new(OANDAND, $1, $3); } | expr LOROR expr { $$ = new(OOROR, $1, $3); } | expr '?' cexpr ':' expr { $$ = new(OCOND, $1, new(OLIST, $3, $5)); } | expr '=' expr { $$ = new(OAS, $1, $3); } | expr LPE expr { $$ = new(OASADD, $1, $3); } | expr LME expr { $$ = new(OASSUB, $1, $3); } | expr LMLE expr { $$ = new(OASMUL, $1, $3); } | expr LDVE expr { $$ = new(OASDIV, $1, $3); } | expr LMDE expr { $$ = new(OASMOD, $1, $3); } | expr LLSHE expr { $$ = new(OASASHL, $1, $3); } | expr LRSHE expr { $$ = new(OASASHR, $1, $3); } | expr LANDE expr { $$ = new(OASAND, $1, $3); } | expr LXORE expr { $$ = new(OASXOR, $1, $3); } | expr LORE expr { $$ = new(OASOR, $1, $3); } xuexpr: uexpr | '(' tlist abdecor ')' xuexpr { $$ = new(OCAST, $5, Z); dodecl(NODECL, CXXX, $2, $3); $$->type = lastdcl; $$->xcast = 1; } | '(' tlist abdecor ')' '{' ilist '}' /* extension */ { $$ = new(OSTRUCT, $6, Z); dodecl(NODECL, CXXX, $2, $3); $$->type = lastdcl; } uexpr: pexpr | '*' xuexpr { $$ = new(OIND, $2, Z); } | '&' xuexpr { $$ = new(OADDR, $2, Z); } | '+' xuexpr { $$ = new(OPOS, $2, Z); } | '-' xuexpr { $$ = new(ONEG, $2, Z); } | '!' xuexpr { $$ = new(ONOT, $2, Z); } | '~' xuexpr { $$ = new(OCOM, $2, Z); } | LPP xuexpr { $$ = new(OPREINC, $2, Z); } | LMM xuexpr { $$ = new(OPREDEC, $2, Z); } | LSIZEOF uexpr { $$ = new(OSIZE, $2, Z); } | LSIGNOF uexpr { $$ = new(OSIGN, $2, Z); } pexpr: '(' cexpr ')' { $$ = $2; } | LSIZEOF '(' tlist abdecor ')' { $$ = new(OSIZE, Z, Z); dodecl(NODECL, CXXX, $3, $4); $$->type = lastdcl; } | LSIGNOF '(' tlist abdecor ')' { $$ = new(OSIGN, Z, Z); dodecl(NODECL, CXXX, $3, $4); $$->type = lastdcl; } | pexpr '(' zelist ')' { $$ = new(OFUNC, $1, Z); if($1->op == ONAME) if($1->type == T) dodecl(xdecl, CXXX, types[TINT], $$); $$->right = invert($3); } | pexpr '[' cexpr ']' { $$ = new(OIND, new(OADD, $1, $3), Z); } | pexpr LMG ltag { $$ = new(ODOT, new(OIND, $1, Z), Z); $$->sym = $3; } | pexpr '.' ltag { $$ = new(ODOT, $1, Z); $$->sym = $3; } | pexpr LPP { $$ = new(OPOSTINC, $1, Z); } | pexpr LMM { $$ = new(OPOSTDEC, $1, Z); } | name | LCONST { $$ = new(OCONST, Z, Z); $$->type = types[TINT]; $$->vconst = $1; $$->cstring = strdup(symb); } | LLCONST { $$ = new(OCONST, Z, Z); $$->type = types[TLONG]; $$->vconst = $1; $$->cstring = strdup(symb); } | LUCONST { $$ = new(OCONST, Z, Z); $$->type = types[TUINT]; $$->vconst = $1; $$->cstring = strdup(symb); } | LULCONST { $$ = new(OCONST, Z, Z); $$->type = types[TULONG]; $$->vconst = $1; $$->cstring = strdup(symb); } | LDCONST { $$ = new(OCONST, Z, Z); $$->type = types[TDOUBLE]; $$->fconst = $1; $$->cstring = strdup(symb); } | LFCONST { $$ = new(OCONST, Z, Z); $$->type = types[TFLOAT]; $$->fconst = $1; $$->cstring = strdup(symb); } | LVLCONST { $$ = new(OCONST, Z, Z); $$->type = types[TVLONG]; $$->vconst = $1; $$->cstring = strdup(symb); } | LUVLCONST { $$ = new(OCONST, Z, Z); $$->type = types[TUVLONG]; $$->vconst = $1; $$->cstring = strdup(symb); } | string | lstring string: LSTRING { $$ = new(OSTRING, Z, Z); $$->type = typ(TARRAY, types[TCHAR]); $$->type->width = $1.l + 1; $$->cstring = $1.s; $$->sym = symstring; $$->etype = TARRAY; $$->class = CSTATIC; } | string LSTRING { char *s; int n; n = $1->type->width - 1; s = alloc(n+$2.l+MAXALIGN); memcpy(s, $1->cstring, n); memcpy(s+n, $2.s, $2.l); s[n+$2.l] = 0; $$ = $1; $$->type->width += $2.l; $$->cstring = s; } lstring: LLSTRING { $$ = new(OLSTRING, Z, Z); $$->type = typ(TARRAY, types[TRUNE]); $$->type->width = $1.l + sizeof(TRune); $$->rstring = (TRune*)$1.s; $$->sym = symstring; $$->etype = TARRAY; $$->class = CSTATIC; } | lstring LLSTRING { char *s; int n; n = $1->type->width - sizeof(TRune); s = alloc(n+$2.l+MAXALIGN); memcpy(s, $1->rstring, n); memcpy(s+n, $2.s, $2.l); *(TRune*)(s+n+$2.l) = 0; $$ = $1; $$->type->width += $2.l; $$->rstring = (TRune*)s; } zelist: { $$ = Z; } | elist elist: expr | elist ',' elist { $$ = new(OLIST, $1, $3); } sbody: '{' { $$.t1 = strf; $$.t2 = strl; $$.t3 = lasttype; $$.c = lastclass; strf = T; strl = T; lastbit = 0; firstbit = 1; lastclass = CXXX; lasttype = T; } edecl '}' { $$ = strf; strf = $2.t1; strl = $2.t2; lasttype = $2.t3; lastclass = $2.c; } zctlist: { lastclass = CXXX; lasttype = types[TINT]; } | ctlist types: complex { $$.t = $1; $$.c = CXXX; } | tname { $$.t = simplet($1); $$.c = CXXX; } | gcnlist { $$.t = simplet($1); $$.c = simplec($1); $$.t = garbt($$.t, $1); } | complex gctnlist { $$.t = $1; $$.c = simplec($2); $$.t = garbt($$.t, $2); if($2 & ~BCLASS & ~BGARB) diag(Z, "duplicate types given: %T and %Q", $1, $2); } | tname gctnlist { $$.t = simplet(typebitor($1, $2)); $$.c = simplec($2); $$.t = garbt($$.t, $2); } | gcnlist complex zgnlist { $$.t = $2; $$.c = simplec($1); $$.t = garbt($$.t, $1|$3); } | gcnlist tname { $$.t = simplet($2); $$.c = simplec($1); $$.t = garbt($$.t, $1); } | gcnlist tname gctnlist { $$.t = simplet(typebitor($2, $3)); $$.c = simplec($1|$3); $$.t = garbt($$.t, $1|$3); } tlist: types { $$ = $1.t; if($1.c != CXXX) diag(Z, "illegal combination of class 4: %s", cnames[$1.c]); } ctlist: types { lasttype = $1.t; lastclass = $1.c; } complex: LSTRUCT ltag { dotag($2, TSTRUCT, 0); $$ = $2->suetag; } | LSTRUCT ltag { dotag($2, TSTRUCT, autobn); } sbody { $$ = $2->suetag; if($$->link != T) diag(Z, "redeclare tag: %s", $2->name); $$->link = $4; sualign($$); } | LSTRUCT sbody { taggen++; sprint(symb, "_%d_", taggen); $$ = dotag(lookup(), TSTRUCT, autobn); $$->link = $2; sualign($$); } | LUNION ltag { dotag($2, TUNION, 0); $$ = $2->suetag; } | LUNION ltag { dotag($2, TUNION, autobn); } sbody { $$ = $2->suetag; if($$->link != T) diag(Z, "redeclare tag: %s", $2->name); $$->link = $4; sualign($$); } | LUNION sbody { taggen++; sprint(symb, "_%d_", taggen); $$ = dotag(lookup(), TUNION, autobn); $$->link = $2; sualign($$); } | LENUM ltag { dotag($2, TENUM, 0); $$ = $2->suetag; if($$->link == T) $$->link = types[TINT]; $$ = $$->link; } | LENUM ltag { dotag($2, TENUM, autobn); } '{' { en.tenum = T; en.cenum = T; } enum '}' { $$ = $2->suetag; if($$->link != T) diag(Z, "redeclare tag: %s", $2->name); if(en.tenum == T) { diag(Z, "enum type ambiguous: %s", $2->name); en.tenum = types[TINT]; } $$->link = en.tenum; $$ = en.tenum; } | LENUM '{' { en.tenum = T; en.cenum = T; } enum '}' { $$ = en.tenum; } | LTYPE { $$ = tcopy($1->type); } gctnlist: gctname | gctnlist gctname { $$ = typebitor($1, $2); } zgnlist: { $$ = 0; } | zgnlist gname { $$ = typebitor($1, $2); } gctname: tname | gname | cname gcnlist: gcname | gcnlist gcname { $$ = typebitor($1, $2); } gcname: gname | cname enum: LNAME { doenum($1, Z); } | LNAME '=' expr { doenum($1, $3); } | enum ',' | enum ',' enum tname: /* type words */ LCHAR { $$ = BCHAR; } | LSHORT { $$ = BSHORT; } | LINT { $$ = BINT; } | LLONG { $$ = BLONG; } | LSIGNED { $$ = BSIGNED; } | LUNSIGNED { $$ = BUNSIGNED; } | LFLOAT { $$ = BFLOAT; } | LDOUBLE { $$ = BDOUBLE; } | LVOID { $$ = BVOID; } cname: /* class words */ LAUTO { $$ = BAUTO; } | LSTATIC { $$ = BSTATIC; } | LEXTERN { $$ = BEXTERN; } | LTYPEDEF { $$ = BTYPEDEF; } | LTYPESTR { $$ = BTYPESTR; } | LREGISTER { $$ = BREGISTER; } | LINLINE { $$ = 0; } gname: /* garbage words */ LCONSTNT { $$ = BCONSTNT; } | LVOLATILE { $$ = BVOLATILE; } | LRESTRICT { $$ = 0; } name: LNAME { $$ = new(ONAME, Z, Z); if($1->class == CLOCAL) $1 = mkstatic($1); $$->sym = $1; $$->type = $1->type; $$->etype = TVOID; if($$->type != T) $$->etype = $$->type->etype; $$->xoffset = $1->offset; $$->class = $1->class; $1->aused = 1; } tag: ltag { $$ = new(ONAME, Z, Z); $$->sym = $1; $$->type = $1->type; $$->etype = TVOID; if($$->type != T) $$->etype = $$->type->etype; $$->xoffset = $1->offset; $$->class = $1->class; } ltag: LNAME | LTYPE %% ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/com.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000057170�12412656734�014347� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/com.c // http://code.google.com/p/inferno-os/source/browse/utils/cc/com.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "cc.h" int compar(Node*, int); void complex(Node *n) { if(n == Z) return; nearln = n->lineno; if(debug['t']) if(n->op != OCONST) prtree(n, "pre complex"); if(tcom(n)) return; if(debug['t']) if(n->op != OCONST) prtree(n, "t complex"); ccom(n); if(debug['t']) if(n->op != OCONST) prtree(n, "c complex"); acom(n); if(debug['t']) if(n->op != OCONST) prtree(n, "a complex"); xcom(n); if(debug['t']) if(n->op != OCONST) prtree(n, "x complex"); } /* * evaluate types * evaluate lvalues (addable == 1) */ enum { ADDROF = 1<<0, CASTOF = 1<<1, ADDROP = 1<<2, }; int tcom(Node *n) { return tcomo(n, ADDROF); } int tcomo(Node *n, int f) { Node *l, *r; Type *t; int o; static TRune zer; if(n == Z) { diag(Z, "Z in tcom"); errorexit(); } n->addable = 0; l = n->left; r = n->right; switch(n->op) { default: diag(n, "unknown op in type complex: %O", n->op); goto bad; case ODOTDOT: /* * tcom has already been called on this subtree */ *n = *n->left; if(n->type == T) goto bad; break; case OCAST: if(n->type == T) break; if(n->type->width == types[TLONG]->width) { if(tcomo(l, ADDROF|CASTOF)) goto bad; } else if(tcom(l)) goto bad; if(isfunct(n)) break; if(tcompat(n, l->type, n->type, tcast)) goto bad; break; case ORETURN: if(l == Z) { if(n->type->etype != TVOID) diag(n, "null return of a typed function"); break; } if(tcom(l)) goto bad; typeext(n->type, l); if(tcompat(n, n->type, l->type, tasign)) break; constas(n, n->type, l->type); if(!sametype(n->type, l->type)) { l = new1(OCAST, l, Z); l->type = n->type; n->left = l; } break; case OASI: /* same as as, but no test for const */ n->op = OAS; o = tcom(l); if(o | tcom(r)) goto bad; typeext(l->type, r); if(tlvalue(l) || tcompat(n, l->type, r->type, tasign)) goto bad; if(!sametype(l->type, r->type)) { r = new1(OCAST, r, Z); r->type = l->type; n->right = r; } n->type = l->type; break; case OAS: o = tcom(l); if(o | tcom(r)) goto bad; if(tlvalue(l)) goto bad; if(isfunct(n)) break; typeext(l->type, r); if(tcompat(n, l->type, r->type, tasign)) goto bad; constas(n, l->type, r->type); if(!sametype(l->type, r->type)) { r = new1(OCAST, r, Z); r->type = l->type; n->right = r; } n->type = l->type; break; case OASADD: case OASSUB: o = tcom(l); if(o | tcom(r)) goto bad; if(tlvalue(l)) goto bad; if(isfunct(n)) break; typeext1(l->type, r); if(tcompat(n, l->type, r->type, tasadd)) goto bad; constas(n, l->type, r->type); t = l->type; arith(n, 0); while(n->left->op == OCAST) n->left = n->left->left; if(!sametype(t, n->type) && !mixedasop(t, n->type)) { r = new1(OCAST, n->right, Z); r->type = t; n->right = r; n->type = t; } break; case OASMUL: case OASLMUL: case OASDIV: case OASLDIV: o = tcom(l); if(o | tcom(r)) goto bad; if(tlvalue(l)) goto bad; if(isfunct(n)) break; typeext1(l->type, r); if(tcompat(n, l->type, r->type, tmul)) goto bad; constas(n, l->type, r->type); t = l->type; arith(n, 0); while(n->left->op == OCAST) n->left = n->left->left; if(!sametype(t, n->type) && !mixedasop(t, n->type)) { r = new1(OCAST, n->right, Z); r->type = t; n->right = r; n->type = t; } if(typeu[n->type->etype]) { if(n->op == OASDIV) n->op = OASLDIV; if(n->op == OASMUL) n->op = OASLMUL; } break; case OASLSHR: case OASASHR: case OASASHL: o = tcom(l); if(o | tcom(r)) goto bad; if(tlvalue(l)) goto bad; if(isfunct(n)) break; if(tcompat(n, l->type, r->type, tand)) goto bad; n->type = l->type; if(typeu[n->type->etype]) { if(n->op == OASASHR) n->op = OASLSHR; } break; case OASMOD: case OASLMOD: case OASOR: case OASAND: case OASXOR: o = tcom(l); if(o | tcom(r)) goto bad; if(tlvalue(l)) goto bad; if(isfunct(n)) break; if(tcompat(n, l->type, r->type, tand)) goto bad; t = l->type; arith(n, 0); while(n->left->op == OCAST) n->left = n->left->left; if(!sametype(t, n->type) && !mixedasop(t, n->type)) { r = new1(OCAST, n->right, Z); r->type = t; n->right = r; n->type = t; } if(typeu[n->type->etype]) { if(n->op == OASMOD) n->op = OASLMOD; } break; case OPREINC: case OPREDEC: case OPOSTINC: case OPOSTDEC: if(tcom(l)) goto bad; if(tlvalue(l)) goto bad; if(isfunct(n)) break; if(tcompat(n, l->type, types[TINT], tadd)) goto bad; n->type = l->type; if(n->type->etype == TIND) if(n->type->link->width < 1) diag(n, "inc/dec of a void pointer"); break; case OEQ: case ONE: o = tcom(l); if(o | tcom(r)) goto bad; if(isfunct(n)) break; typeext(l->type, r); typeext(r->type, l); if(tcompat(n, l->type, r->type, trel)) goto bad; arith(n, 0); n->type = types[TINT]; break; case OLT: case OGE: case OGT: case OLE: o = tcom(l); if(o | tcom(r)) goto bad; if(isfunct(n)) break; typeext1(l->type, r); typeext1(r->type, l); if(tcompat(n, l->type, r->type, trel)) goto bad; arith(n, 0); if(typeu[n->type->etype]) n->op = logrel[relindex(n->op)]; n->type = types[TINT]; break; case OCOND: o = tcom(l); o |= tcom(r->left); if(o | tcom(r->right)) goto bad; if(r->right->type->etype == TIND && vconst(r->left) == 0) { r->left->type = r->right->type; r->left->vconst = 0; } if(r->left->type->etype == TIND && vconst(r->right) == 0) { r->right->type = r->left->type; r->right->vconst = 0; } if(sametype(r->right->type, r->left->type)) { r->type = r->right->type; n->type = r->type; break; } if(tcompat(r, r->left->type, r->right->type, trel)) goto bad; arith(r, 0); n->type = r->type; break; case OADD: o = tcom(l); if(o | tcom(r)) goto bad; if(isfunct(n)) break; if(tcompat(n, l->type, r->type, tadd)) goto bad; arith(n, 1); break; case OSUB: o = tcom(l); if(o | tcom(r)) goto bad; if(isfunct(n)) break; if(tcompat(n, l->type, r->type, tsub)) goto bad; arith(n, 1); break; case OMUL: case OLMUL: case ODIV: case OLDIV: o = tcom(l); if(o | tcom(r)) goto bad; if(isfunct(n)) break; if(tcompat(n, l->type, r->type, tmul)) goto bad; arith(n, 1); if(typeu[n->type->etype]) { if(n->op == ODIV) n->op = OLDIV; if(n->op == OMUL) n->op = OLMUL; } break; case OLSHR: case OASHL: case OASHR: o = tcom(l); if(o | tcom(r)) goto bad; if(isfunct(n)) break; if(tcompat(n, l->type, r->type, tand)) goto bad; n->right = Z; arith(n, 1); n->right = new1(OCAST, r, Z); n->right->type = types[TINT]; if(typeu[n->type->etype]) if(n->op == OASHR) n->op = OLSHR; break; case OAND: case OOR: case OXOR: o = tcom(l); if(o | tcom(r)) goto bad; if(isfunct(n)) break; if(tcompat(n, l->type, r->type, tand)) goto bad; arith(n, 1); break; case OMOD: case OLMOD: o = tcom(l); if(o | tcom(r)) goto bad; if(isfunct(n)) break; if(tcompat(n, l->type, r->type, tand)) goto bad; arith(n, 1); if(typeu[n->type->etype]) n->op = OLMOD; break; case OPOS: if(tcom(l)) goto bad; if(isfunct(n)) break; r = l; l = new(OCONST, Z, Z); l->vconst = 0; l->type = types[TINT]; n->op = OADD; n->right = r; n->left = l; if(tcom(l)) goto bad; if(tcompat(n, l->type, r->type, tsub)) goto bad; arith(n, 1); break; case ONEG: if(tcom(l)) goto bad; if(isfunct(n)) break; if(!machcap(n)) { r = l; l = new(OCONST, Z, Z); l->vconst = 0; l->type = types[TINT]; n->op = OSUB; n->right = r; n->left = l; if(tcom(l)) goto bad; if(tcompat(n, l->type, r->type, tsub)) goto bad; } arith(n, 1); break; case OCOM: if(tcom(l)) goto bad; if(isfunct(n)) break; if(!machcap(n)) { r = l; l = new(OCONST, Z, Z); l->vconst = -1; l->type = types[TINT]; n->op = OXOR; n->right = r; n->left = l; if(tcom(l)) goto bad; if(tcompat(n, l->type, r->type, tand)) goto bad; } arith(n, 1); break; case ONOT: if(tcom(l)) goto bad; if(isfunct(n)) break; if(tcompat(n, T, l->type, tnot)) goto bad; n->type = types[TINT]; break; case OANDAND: case OOROR: o = tcom(l); if(o | tcom(r)) goto bad; if(tcompat(n, T, l->type, tnot) | tcompat(n, T, r->type, tnot)) goto bad; n->type = types[TINT]; break; case OCOMMA: o = tcom(l); if(o | tcom(r)) goto bad; n->type = r->type; break; case OSIGN: /* extension signof(type) returns a hash */ if(l != Z) { if(l->op != OSTRING && l->op != OLSTRING) if(tcomo(l, 0)) goto bad; if(l->op == OBIT) { diag(n, "signof bitfield"); goto bad; } n->type = l->type; } if(n->type == T) goto bad; if(n->type->width < 0) { diag(n, "signof undefined type"); goto bad; } n->op = OCONST; n->left = Z; n->right = Z; n->vconst = convvtox(signature(n->type), TULONG); n->type = types[TULONG]; break; case OSIZE: if(l != Z) { if(l->op != OSTRING && l->op != OLSTRING) if(tcomo(l, 0)) goto bad; if(l->op == OBIT) { diag(n, "sizeof bitfield"); goto bad; } n->type = l->type; } if(n->type == T) goto bad; if(n->type->width <= 0) { diag(n, "sizeof undefined type"); goto bad; } if(n->type->etype == TFUNC) { diag(n, "sizeof function"); goto bad; } n->op = OCONST; n->left = Z; n->right = Z; n->vconst = convvtox(n->type->width, TINT); n->type = types[TINT]; break; case OFUNC: o = tcomo(l, 0); if(o) goto bad; if(l->type->etype == TIND && l->type->link->etype == TFUNC) { l = new1(OIND, l, Z); l->type = l->left->type->link; n->left = l; } if(tcompat(n, T, l->type, tfunct)) goto bad; if(o | tcoma(l, r, l->type->down, 1)) goto bad; n->type = l->type->link; if(!debug['B']) if(l->type->down == T || l->type->down->etype == TOLD) { nerrors--; diag(n, "function args not checked: %F", l); } dpcheck(n); break; case ONAME: if(n->type == T) { diag(n, "name not declared: %F", n); goto bad; } if(n->type->etype == TENUM) { n->op = OCONST; n->type = n->sym->tenum; if(!typefd[n->type->etype]) n->vconst = n->sym->vconst; else n->fconst = n->sym->fconst; break; } n->addable = 1; if(n->class == CEXREG) { n->op = OREGISTER; // on 386 or amd64, "extern register" generates // memory references relative to the // gs or fs segment. if(thechar == '8' || thechar == '6') // [sic] n->op = OEXREG; n->reg = n->sym->offset; n->xoffset = 0; break; } break; case OLSTRING: if(n->type->link != types[TRUNE]) { o = outstring(0, 0); while(o & 3) { outlstring(&zer, sizeof(TRune)); o = outlstring(0, 0); } } n->op = ONAME; n->xoffset = outlstring(n->rstring, n->type->width); n->addable = 1; break; case OSTRING: if(n->type->link != types[TCHAR]) { o = outstring(0, 0); while(o & 3) { outstring("", 1); o = outstring(0, 0); } } n->op = ONAME; n->xoffset = outstring(n->cstring, n->type->width); n->addable = 1; break; case OCONST: break; case ODOT: if(tcom(l)) goto bad; if(tcompat(n, T, l->type, tdot)) goto bad; if(tcomd(n)) goto bad; break; case OADDR: if(tcomo(l, ADDROP)) goto bad; if(tlvalue(l)) goto bad; if(l->type->nbits) { diag(n, "address of a bit field"); goto bad; } if(l->op == OREGISTER) { diag(n, "address of a register"); goto bad; } n->type = typ(TIND, l->type); n->type->width = types[TIND]->width; break; case OIND: if(tcom(l)) goto bad; if(tcompat(n, T, l->type, tindir)) goto bad; n->type = l->type->link; n->addable = 1; break; case OSTRUCT: if(tcomx(n)) goto bad; break; } t = n->type; if(t == T) goto bad; if(t->width < 0) { snap(t); if(t->width < 0) { if(typesu[t->etype] && t->tag) diag(n, "structure not fully declared %s", t->tag->name); else diag(n, "structure not fully declared"); goto bad; } } if(typeaf[t->etype]) { if(f & ADDROF) goto addaddr; if(f & ADDROP) warn(n, "address of array/func ignored"); } return 0; addaddr: if(tlvalue(n)) goto bad; l = new1(OXXX, Z, Z); *l = *n; n->op = OADDR; if(l->type->etype == TARRAY) l->type = l->type->link; n->left = l; n->right = Z; n->addable = 0; n->type = typ(TIND, l->type); n->type->width = types[TIND]->width; return 0; bad: n->type = T; return 1; } int tcoma(Node *l, Node *n, Type *t, int f) { Node *n1; int o; if(t != T) if(t->etype == TOLD || t->etype == TDOT) /* .../old in prototype */ t = T; if(n == Z) { if(t != T && !sametype(t, types[TVOID])) { diag(n, "not enough function arguments: %F", l); return 1; } return 0; } if(n->op == OLIST) { o = tcoma(l, n->left, t, 0); if(t != T) { t = t->down; if(t == T) t = types[TVOID]; } return o | tcoma(l, n->right, t, 1); } if(f && t != T) tcoma(l, Z, t->down, 0); if(tcom(n) || tcompat(n, T, n->type, targ)) return 1; if(sametype(t, types[TVOID])) { diag(n, "too many function arguments: %F", l); return 1; } if(t != T) { typeext(t, n); if(stcompat(nodproto, t, n->type, tasign)) { diag(l, "argument prototype mismatch \"%T\" for \"%T\": %F", n->type, t, l); return 1; } // switch(t->etype) { // case TCHAR: // case TSHORT: // t = types[TINT]; // break; // // case TUCHAR: // case TUSHORT: // t = types[TUINT]; // break; // } } else { switch(n->type->etype) { case TCHAR: case TSHORT: t = types[TINT]; break; case TUCHAR: case TUSHORT: t = types[TUINT]; break; case TFLOAT: t = types[TDOUBLE]; } } if(t != T && !sametype(t, n->type)) { n1 = new1(OXXX, Z, Z); *n1 = *n; n->op = OCAST; n->left = n1; n->right = Z; n->type = t; n->addable = 0; } return 0; } int tcomd(Node *n) { Type *t; int32 o; o = 0; t = dotsearch(n->sym, n->left->type->link, n, &o); if(t == T) { diag(n, "not a member of struct/union: %F", n); return 1; } makedot(n, t, o); return 0; } int tcomx(Node *n) { Type *t; Node *l, *r, **ar, **al; int e; e = 0; if(n->type->etype != TSTRUCT) { diag(n, "constructor must be a structure"); return 1; } l = invert(n->left); n->left = l; al = &n->left; for(t = n->type->link; t != T; t = t->down) { if(l == Z) { diag(n, "constructor list too short"); return 1; } if(l->op == OLIST) { r = l->left; ar = &l->left; al = &l->right; l = l->right; } else { r = l; ar = al; l = Z; } if(tcom(r)) e++; typeext(t, r); if(tcompat(n, t, r->type, tasign)) e++; constas(n, t, r->type); if(!e && !sametype(t, r->type)) { r = new1(OCAST, r, Z); r->type = t; *ar = r; } } if(l != Z) { diag(n, "constructor list too long"); return 1; } return e; } int tlvalue(Node *n) { if(!n->addable) { diag(n, "not an l-value"); return 1; } return 0; } /* * general rewrite * (IND(ADDR x)) ==> x * (ADDR(IND x)) ==> x * remove some zero operands * remove no op casts * evaluate constants */ void ccom(Node *n) { Node *l, *r; int t; loop: if(n == Z) return; l = n->left; r = n->right; switch(n->op) { case OAS: case OASXOR: case OASAND: case OASOR: case OASMOD: case OASLMOD: case OASLSHR: case OASASHR: case OASASHL: case OASDIV: case OASLDIV: case OASMUL: case OASLMUL: case OASSUB: case OASADD: ccom(l); ccom(r); if(n->op == OASLSHR || n->op == OASASHR || n->op == OASASHL) if(r->op == OCONST) { t = n->type->width * 8; /* bits per byte */ if(r->vconst >= t || r->vconst < 0) warn(n, "stupid shift: %lld", r->vconst); } break; case OCAST: ccom(l); if(l->op == OCONST) { evconst(n); if(n->op == OCONST) break; } if(nocast(l->type, n->type)) { l->type = n->type; *n = *l; } break; case OCOND: ccom(l); ccom(r); if(l->op == OCONST) if(vconst(l) == 0) *n = *r->right; else *n = *r->left; break; case OREGISTER: case OINDREG: case OCONST: case ONAME: break; case OADDR: ccom(l); l->etype = TVOID; if(l->op == OIND) { l->left->type = n->type; *n = *l->left; break; } goto common; case OIND: ccom(l); if(l->op == OADDR) { l->left->type = n->type; *n = *l->left; break; } goto common; case OEQ: case ONE: case OLE: case OGE: case OLT: case OGT: case OLS: case OHS: case OLO: case OHI: ccom(l); ccom(r); if(compar(n, 0) || compar(n, 1)) break; relcon(l, r); relcon(r, l); goto common; case OASHR: case OASHL: case OLSHR: ccom(l); if(vconst(l) == 0 && !side(r)) { *n = *l; break; } ccom(r); if(vconst(r) == 0) { *n = *l; break; } if(r->op == OCONST) { t = n->type->width * 8; /* bits per byte */ if(r->vconst >= t || r->vconst <= -t) warn(n, "stupid shift: %lld", r->vconst); } goto common; case OMUL: case OLMUL: ccom(l); t = vconst(l); if(t == 0 && !side(r)) { *n = *l; break; } if(t == 1) { *n = *r; goto loop; } ccom(r); t = vconst(r); if(t == 0 && !side(l)) { *n = *r; break; } if(t == 1) { *n = *l; break; } goto common; case ODIV: case OLDIV: ccom(l); if(vconst(l) == 0 && !side(r)) { *n = *l; break; } ccom(r); t = vconst(r); if(t == 0) { diag(n, "divide check"); *n = *r; break; } if(t == 1) { *n = *l; break; } goto common; case OSUB: ccom(r); if(r->op == OCONST) { if(typefd[r->type->etype]) { n->op = OADD; r->fconst = -r->fconst; goto loop; } else { n->op = OADD; r->vconst = -r->vconst; goto loop; } } ccom(l); goto common; case OXOR: case OOR: case OADD: ccom(l); if(vconst(l) == 0) { *n = *r; goto loop; } ccom(r); if(vconst(r) == 0) { *n = *l; break; } goto commute; case OAND: ccom(l); ccom(r); if(vconst(l) == 0 && !side(r)) { *n = *l; break; } if(vconst(r) == 0 && !side(l)) { *n = *r; break; } commute: /* look for commutative constant */ if(r->op == OCONST) { if(l->op == n->op) { if(l->left->op == OCONST) { n->right = l->right; l->right = r; goto loop; } if(l->right->op == OCONST) { n->right = l->left; l->left = r; goto loop; } } } if(l->op == OCONST) { if(r->op == n->op) { if(r->left->op == OCONST) { n->left = r->right; r->right = l; goto loop; } if(r->right->op == OCONST) { n->left = r->left; r->left = l; goto loop; } } } goto common; case OANDAND: ccom(l); if(vconst(l) == 0) { *n = *l; break; } ccom(r); goto common; case OOROR: ccom(l); if(l->op == OCONST && l->vconst != 0) { *n = *l; n->vconst = 1; break; } ccom(r); goto common; default: if(l != Z) ccom(l); if(r != Z) ccom(r); common: if(l != Z) if(l->op != OCONST) break; if(r != Z) if(r->op != OCONST) break; evconst(n); } } /* OEQ, ONE, OLE, OLS, OLT, OLO, OGE, OHS, OGT, OHI */ static char *cmps[12] = { "==", "!=", "<=", "<=", "<", "<", ">=", ">=", ">", ">", }; /* 128-bit numbers */ typedef struct Big Big; struct Big { vlong a; uvlong b; }; static int cmp(Big x, Big y) { if(x.a != y.a){ if(x.a < y.a) return -1; return 1; } if(x.b != y.b){ if(x.b < y.b) return -1; return 1; } return 0; } static Big add(Big x, int y) { uvlong ob; ob = x.b; x.b += y; if(y > 0 && x.b < ob) x.a++; if(y < 0 && x.b > ob) x.a--; return x; } Big big(vlong a, uvlong b) { Big x; x.a = a; x.b = b; return x; } int compar(Node *n, int reverse) { Big lo, hi, x; int op; char xbuf[40], cmpbuf[50]; Node *l, *r; Type *lt, *rt; /* * The point of this function is to diagnose comparisons * that can never be true or that look misleading because * of the `usual arithmetic conversions'. As an example * of the latter, if x is a ulong, then if(x <= -1) really means * if(x <= 0xFFFFFFFF), while if(x <= -1LL) really means * what it says (but 8c compiles it wrong anyway). */ if(reverse){ r = n->left; l = n->right; op = comrel[relindex(n->op)]; }else{ l = n->left; r = n->right; op = n->op; } /* * Skip over left casts to find out the original expression range. */ while(l->op == OCAST) l = l->left; if(l->op == OCONST) return 0; lt = l->type; if(l->op == ONAME && l->sym->type){ lt = l->sym->type; if(lt->etype == TARRAY) lt = lt->link; } if(lt == T) return 0; if(lt->etype == TXXX || lt->etype > TUVLONG) return 0; /* * Skip over the right casts to find the on-screen value. */ if(r->op != OCONST) return 0; while(r->oldop == OCAST && !r->xcast) r = r->left; rt = r->type; if(rt == T) return 0; x.b = r->vconst; x.a = 0; if((rt->etype&1) && r->vconst < 0) /* signed negative */ x.a = ~0ULL; if((lt->etype&1)==0){ /* unsigned */ lo = big(0, 0); if(lt->width == 8) hi = big(0, ~0ULL); else hi = big(0, (1ULL<<(l->type->width*8))-1); }else{ lo = big(~0ULL, -(1ULL<<(l->type->width*8-1))); hi = big(0, (1ULL<<(l->type->width*8-1))-1); } switch(op){ case OLT: case OLO: case OGE: case OHS: if(cmp(x, lo) <= 0) goto useless; if(cmp(x, add(hi, 1)) >= 0) goto useless; break; case OLE: case OLS: case OGT: case OHI: if(cmp(x, add(lo, -1)) <= 0) goto useless; if(cmp(x, hi) >= 0) goto useless; break; case OEQ: case ONE: /* * Don't warn about comparisons if the expression * is as wide as the value: the compiler-supplied casts * will make both outcomes possible. */ if(lt->width >= rt->width && debug['w'] < 2) return 0; if(cmp(x, lo) < 0 || cmp(x, hi) > 0) goto useless; break; } return 0; useless: if((x.a==0 && x.b<=9) || (x.a==~0LL && x.b >= -9ULL)) snprint(xbuf, sizeof xbuf, "%lld", x.b); else if(x.a == 0) snprint(xbuf, sizeof xbuf, "%#llux", x.b); else snprint(xbuf, sizeof xbuf, "%#llx", x.b); if(reverse) snprint(cmpbuf, sizeof cmpbuf, "%s %s %T", xbuf, cmps[relindex(n->op)], lt); else snprint(cmpbuf, sizeof cmpbuf, "%T %s %s", lt, cmps[relindex(n->op)], xbuf); warn(n, "useless or misleading comparison: %s", cmpbuf); return 0; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/com64.c�������������������������������������������������������������������������������0100644�0000000�0000000�00000026731�12412656734�014520� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/com64.c // http://code.google.com/p/inferno-os/source/browse/utils/cc/com64.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "cc.h" /* * this is machine depend, but it is totally * common on all of the 64-bit symulating machines. */ #define FNX 100 /* botch -- redefinition */ Node* nodaddv; Node* nodsubv; Node* nodmulv; Node* noddivv; Node* noddivvu; Node* nodmodv; Node* nodmodvu; Node* nodlshv; Node* nodrshav; Node* nodrshlv; Node* nodandv; Node* nodorv; Node* nodxorv; Node* nodnegv; Node* nodcomv; Node* nodtestv; Node* nodeqv; Node* nodnev; Node* nodlev; Node* nodltv; Node* nodgev; Node* nodgtv; Node* nodhiv; Node* nodhsv; Node* nodlov; Node* nodlsv; Node* nodf2v; Node* nodd2v; Node* nodp2v; Node* nodsi2v; Node* nodui2v; Node* nodsl2v; Node* nodul2v; Node* nodsh2v; Node* noduh2v; Node* nodsc2v; Node* noduc2v; Node* nodv2f; Node* nodv2d; Node* nodv2ui; Node* nodv2si; Node* nodv2ul; Node* nodv2sl; Node* nodv2uh; Node* nodv2sh; Node* nodv2uc; Node* nodv2sc; Node* nodvpp; Node* nodppv; Node* nodvmm; Node* nodmmv; Node* nodvasop; char etconv[NALLTYPES]; /* for _vasop */ Init initetconv[] = { TCHAR, 1, 0, TUCHAR, 2, 0, TSHORT, 3, 0, TUSHORT, 4, 0, TLONG, 5, 0, TULONG, 6, 0, TVLONG, 7, 0, TUVLONG, 8, 0, TINT, 9, 0, TUINT, 10, 0, -1, 0, 0, }; Node* fvn(char *name, int type) { Node *n; n = new(ONAME, Z, Z); n->sym = slookup(name); n->sym->sig = SIGINTERN; if(fntypes[type] == 0) fntypes[type] = typ(TFUNC, types[type]); n->type = fntypes[type]; n->etype = type; n->class = CGLOBL; n->addable = 10; n->complex = 0; return n; } void com64init(void) { Init *p; nodaddv = fvn("_addv", TVLONG); nodsubv = fvn("_subv", TVLONG); nodmulv = fvn("_mulv", TVLONG); noddivv = fvn("_divv", TVLONG); noddivvu = fvn("_divvu", TVLONG); nodmodv = fvn("_modv", TVLONG); nodmodvu = fvn("_modvu", TVLONG); nodlshv = fvn("_lshv", TVLONG); nodrshav = fvn("_rshav", TVLONG); nodrshlv = fvn("_rshlv", TVLONG); nodandv = fvn("_andv", TVLONG); nodorv = fvn("_orv", TVLONG); nodxorv = fvn("_xorv", TVLONG); nodnegv = fvn("_negv", TVLONG); nodcomv = fvn("_comv", TVLONG); nodtestv = fvn("_testv", TLONG); nodeqv = fvn("_eqv", TLONG); nodnev = fvn("_nev", TLONG); nodlev = fvn("_lev", TLONG); nodltv = fvn("_ltv", TLONG); nodgev = fvn("_gev", TLONG); nodgtv = fvn("_gtv", TLONG); nodhiv = fvn("_hiv", TLONG); nodhsv = fvn("_hsv", TLONG); nodlov = fvn("_lov", TLONG); nodlsv = fvn("_lsv", TLONG); nodf2v = fvn("_f2v", TVLONG); nodd2v = fvn("_d2v", TVLONG); nodp2v = fvn("_p2v", TVLONG); nodsi2v = fvn("_si2v", TVLONG); nodui2v = fvn("_ui2v", TVLONG); nodsl2v = fvn("_sl2v", TVLONG); nodul2v = fvn("_ul2v", TVLONG); nodsh2v = fvn("_sh2v", TVLONG); noduh2v = fvn("_uh2v", TVLONG); nodsc2v = fvn("_sc2v", TVLONG); noduc2v = fvn("_uc2v", TVLONG); nodv2f = fvn("_v2f", TFLOAT); nodv2d = fvn("_v2d", TDOUBLE); nodv2sl = fvn("_v2sl", TLONG); nodv2ul = fvn("_v2ul", TULONG); nodv2si = fvn("_v2si", TINT); nodv2ui = fvn("_v2ui", TUINT); nodv2sh = fvn("_v2sh", TSHORT); nodv2uh = fvn("_v2ul", TUSHORT); nodv2sc = fvn("_v2sc", TCHAR); nodv2uc = fvn("_v2uc", TUCHAR); nodvpp = fvn("_vpp", TVLONG); nodppv = fvn("_ppv", TVLONG); nodvmm = fvn("_vmm", TVLONG); nodmmv = fvn("_mmv", TVLONG); nodvasop = fvn("_vasop", TVLONG); for(p = initetconv; p->code >= 0; p++) etconv[p->code] = p->value; } int com64(Node *n) { Node *l, *r, *a, *t; int lv, rv; if(n->type == 0) return 0; l = n->left; r = n->right; lv = 0; if(l && l->type && typev[l->type->etype]) lv = 1; rv = 0; if(r && r->type && typev[r->type->etype]) rv = 1; if(lv) { switch(n->op) { case OEQ: a = nodeqv; goto setbool; case ONE: a = nodnev; goto setbool; case OLE: a = nodlev; goto setbool; case OLT: a = nodltv; goto setbool; case OGE: a = nodgev; goto setbool; case OGT: a = nodgtv; goto setbool; case OHI: a = nodhiv; goto setbool; case OHS: a = nodhsv; goto setbool; case OLO: a = nodlov; goto setbool; case OLS: a = nodlsv; goto setbool; case OANDAND: case OOROR: if(machcap(n)) return 1; if(rv) { r = new(OFUNC, nodtestv, r); n->right = r; r->complex = FNX; r->op = OFUNC; r->type = types[TLONG]; } case OCOND: case ONOT: if(machcap(n)) return 1; l = new(OFUNC, nodtestv, l); n->left = l; l->complex = FNX; l->op = OFUNC; l->type = types[TLONG]; n->complex = FNX; return 1; } } if(rv) { if(machcap(n)) return 1; switch(n->op) { case OANDAND: case OOROR: r = new(OFUNC, nodtestv, r); n->right = r; r->complex = FNX; r->op = OFUNC; r->type = types[TLONG]; return 1; } } if(typev[n->type->etype]) { if(machcap(n)) return 1; switch(n->op) { default: diag(n, "unknown vlong %O", n->op); case OFUNC: n->complex = FNX; case ORETURN: case OAS: case OIND: return 1; case OADD: a = nodaddv; goto setbop; case OSUB: a = nodsubv; goto setbop; case OMUL: case OLMUL: a = nodmulv; goto setbop; case ODIV: a = noddivv; goto setbop; case OLDIV: a = noddivvu; goto setbop; case OMOD: a = nodmodv; goto setbop; case OLMOD: a = nodmodvu; goto setbop; case OASHL: a = nodlshv; goto setbop; case OASHR: a = nodrshav; goto setbop; case OLSHR: a = nodrshlv; goto setbop; case OAND: a = nodandv; goto setbop; case OOR: a = nodorv; goto setbop; case OXOR: a = nodxorv; goto setbop; case OPOSTINC: a = nodvpp; goto setvinc; case OPOSTDEC: a = nodvmm; goto setvinc; case OPREINC: a = nodppv; goto setvinc; case OPREDEC: a = nodmmv; goto setvinc; case ONEG: a = nodnegv; goto setfnx; case OCOM: a = nodcomv; goto setfnx; case OCAST: switch(l->type->etype) { case TCHAR: a = nodsc2v; goto setfnxl; case TUCHAR: a = noduc2v; goto setfnxl; case TSHORT: a = nodsh2v; goto setfnxl; case TUSHORT: a = noduh2v; goto setfnxl; case TINT: a = nodsi2v; goto setfnx; case TUINT: a = nodui2v; goto setfnx; case TLONG: a = nodsl2v; goto setfnx; case TULONG: a = nodul2v; goto setfnx; case TFLOAT: a = nodf2v; goto setfnx; case TDOUBLE: a = nodd2v; goto setfnx; case TIND: a = nodp2v; goto setfnx; } diag(n, "unknown %T->vlong cast", l->type); return 1; case OASADD: a = nodaddv; goto setasop; case OASSUB: a = nodsubv; goto setasop; case OASMUL: case OASLMUL: a = nodmulv; goto setasop; case OASDIV: a = noddivv; goto setasop; case OASLDIV: a = noddivvu; goto setasop; case OASMOD: a = nodmodv; goto setasop; case OASLMOD: a = nodmodvu; goto setasop; case OASASHL: a = nodlshv; goto setasop; case OASASHR: a = nodrshav; goto setasop; case OASLSHR: a = nodrshlv; goto setasop; case OASAND: a = nodandv; goto setasop; case OASOR: a = nodorv; goto setasop; case OASXOR: a = nodxorv; goto setasop; } } if(typefd[n->type->etype] && l && l->op == OFUNC) { switch(n->op) { case OASADD: case OASSUB: case OASMUL: case OASLMUL: case OASDIV: case OASLDIV: case OASMOD: case OASLMOD: case OASASHL: case OASASHR: case OASLSHR: case OASAND: case OASOR: case OASXOR: if(l->right && typev[l->right->etype]) { diag(n, "sorry float vlong not implemented\n"); } } } if(n->op == OCAST) { if(l->type && typev[l->type->etype]) { if(machcap(n)) return 1; switch(n->type->etype) { case TDOUBLE: a = nodv2d; goto setfnx; case TFLOAT: a = nodv2f; goto setfnx; case TLONG: a = nodv2sl; goto setfnx; case TULONG: a = nodv2ul; goto setfnx; case TINT: a = nodv2si; goto setfnx; case TUINT: a = nodv2ui; goto setfnx; case TSHORT: a = nodv2sh; goto setfnx; case TUSHORT: a = nodv2uh; goto setfnx; case TCHAR: a = nodv2sc; goto setfnx; case TUCHAR: a = nodv2uc; goto setfnx; case TIND: // small pun here a = nodv2ul; goto setfnx; } diag(n, "unknown vlong->%T cast", n->type); return 1; } } return 0; setbop: n->left = a; n->right = new(OLIST, l, r); n->complex = FNX; n->op = OFUNC; return 1; setfnxl: l = new(OCAST, l, 0); l->type = types[TLONG]; l->complex = l->left->complex; setfnx: n->left = a; n->right = l; n->complex = FNX; n->op = OFUNC; return 1; setvinc: n->left = a; l = new(OADDR, l, Z); l->type = typ(TIND, l->left->type); n->right = new(OLIST, l, r); n->complex = FNX; n->op = OFUNC; return 1; setbool: if(machcap(n)) return 1; n->left = a; n->right = new(OLIST, l, r); n->complex = FNX; n->op = OFUNC; n->type = types[TLONG]; return 1; setasop: if(l->op == OFUNC) { l = l->right; goto setasop; } t = new(OCONST, 0, 0); t->vconst = etconv[l->type->etype]; t->type = types[TLONG]; t->addable = 20; r = new(OLIST, t, r); t = new(OADDR, a, 0); t->type = typ(TIND, a->type); r = new(OLIST, t, r); t = new(OADDR, l, 0); t->type = typ(TIND, l->type); r = new(OLIST, t, r); n->left = nodvasop; n->right = r; n->complex = FNX; n->op = OFUNC; return 1; } void bool64(Node *n) { Node *n1; if(machcap(Z)) return; if(typev[n->type->etype]) { n1 = new(OXXX, 0, 0); *n1 = *n; n->right = n1; n->left = nodtestv; n->complex = FNX; n->addable = 0; n->op = OFUNC; n->type = types[TLONG]; } } /* * more machine depend stuff. * this is common for 8,16,32,64 bit machines. * this is common for ieee machines. */ double convvtof(vlong v) { double d; d = v; /* BOTCH */ return d; } vlong convftov(double d) { vlong v; v = d; /* BOTCH */ return v; } double convftox(double d, int et) { if(!typefd[et]) diag(Z, "bad type in castftox %s", tnames[et]); return d; } vlong convvtox(vlong c, int et) { int n; n = 8 * ewidth[et]; c &= MASK(n); if(!typeu[et]) if(c & SIGN(n)) c |= ~MASK(n); return c; } ���������������������������������������go/src/cmd/cc/dcl.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000071376�12412656737�014342� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/dcl.c // http://code.google.com/p/inferno-os/source/browse/utils/cc/dcl.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "cc.h" Node* dodecl(void (*f)(int,Type*,Sym*), int c, Type *t, Node *n) { Sym *s; Node *n1; int32 v; nearln = lineno; lastfield = 0; loop: if(n != Z) switch(n->op) { default: diag(n, "unknown declarator: %O", n->op); break; case OARRAY: t = typ(TARRAY, t); t->width = 0; n1 = n->right; n = n->left; if(n1 != Z) { complex(n1); v = -1; if(n1->op == OCONST) v = n1->vconst; if(v <= 0) { diag(n, "array size must be a positive constant"); v = 1; } t->width = v * t->link->width; } goto loop; case OIND: t = typ(TIND, t); t->garb = n->garb; n = n->left; goto loop; case OFUNC: t = typ(TFUNC, t); t->down = fnproto(n); n = n->left; goto loop; case OBIT: n1 = n->right; complex(n1); lastfield = -1; if(n1->op == OCONST) lastfield = n1->vconst; if(lastfield < 0) { diag(n, "field width must be non-negative constant"); lastfield = 1; } if(lastfield == 0) { lastbit = 0; firstbit = 1; if(n->left != Z) { diag(n, "zero width named field"); lastfield = 1; } } if(!typei[t->etype]) { diag(n, "field type must be int-like"); t = types[TINT]; lastfield = 1; } if(lastfield > tfield->width*8) { diag(n, "field width larger than field unit"); lastfield = 1; } lastbit += lastfield; if(lastbit > tfield->width*8) { lastbit = lastfield; firstbit = 1; } n = n->left; goto loop; case ONAME: if(f == NODECL) break; s = n->sym; (*f)(c, t, s); if(s->class == CLOCAL) s = mkstatic(s); if(dataflag) { s->dataflag = dataflag; dataflag = 0; } firstbit = 0; n->sym = s; n->type = s->type; n->xoffset = s->offset; n->class = s->class; n->etype = TVOID; if(n->type != T) n->etype = n->type->etype; if(debug['d']) dbgdecl(s); acidvar(s); godefvar(s); s->varlineno = lineno; break; } lastdcl = t; return n; } Sym* mkstatic(Sym *s) { Sym *s1; if(s->class != CLOCAL) return s; snprint(symb, NSYMB, "%s$%d", s->name, s->block); s1 = lookup(); if(s1->class != CSTATIC) { s1->type = s->type; s1->offset = s->offset; s1->block = s->block; s1->class = CSTATIC; } return s1; } /* * make a copy of a typedef * the problem is to split out incomplete * arrays so that it is in the variable * rather than the typedef. */ Type* tcopy(Type *t) { Type *tl, *tx; int et; if(t == T) return t; et = t->etype; if(typesu[et]) return t; tl = tcopy(t->link); if(tl != t->link || (et == TARRAY && t->width == 0)) { tx = copytyp(t); tx->link = tl; return tx; } return t; } Node* doinit(Sym *s, Type *t, int32 o, Node *a) { Node *n; if(t == T) return Z; if(s->class == CEXTERN) { s->class = CGLOBL; if(debug['d']) dbgdecl(s); } if(debug['i']) { print("t = %T; o = %d; n = %s\n", t, o, s->name); prtree(a, "doinit value"); } n = initlist; if(a->op == OINIT) a = a->left; initlist = a; a = init1(s, t, o, 0); if(initlist != Z) diag(initlist, "more initializers than structure: %s", s->name); initlist = n; return a; } /* * get next major operator, * dont advance initlist. */ Node* peekinit(void) { Node *a; a = initlist; loop: if(a == Z) return a; if(a->op == OLIST) { a = a->left; goto loop; } return a; } /* * consume and return next element on * initlist. expand strings. */ Node* nextinit(void) { Node *a, *b, *n; a = initlist; n = Z; if(a == Z) return a; if(a->op == OLIST) { n = a->right; a = a->left; } if(a->op == OUSED) { a = a->left; b = new(OCONST, Z, Z); b->type = a->type->link; if(a->op == OSTRING) { b->vconst = convvtox(*a->cstring, TCHAR); a->cstring++; } if(a->op == OLSTRING) { b->vconst = convvtox(*a->rstring, TRUNE); a->rstring++; } a->type->width -= b->type->width; if(a->type->width <= 0) initlist = n; return b; } initlist = n; return a; } int isstruct(Node *a, Type *t) { Node *n; switch(a->op) { case ODOTDOT: n = a->left; if(n && n->type && sametype(n->type, t)) return 1; case OSTRING: case OLSTRING: case OCONST: case OINIT: case OELEM: return 0; } n = new(ODOTDOT, Z, Z); *n = *a; /* * ODOTDOT is a flag for tcom * a second tcom will not be performed */ a->op = ODOTDOT; a->left = n; a->right = Z; if(tcom(n)) return 0; if(sametype(n->type, t)) return 1; return 0; } Node* init1(Sym *s, Type *t, int32 o, int exflag) { Node *a, *l, *r, nod; Type *t1; int32 e, w, so, mw; a = peekinit(); if(a == Z) return Z; if(debug['i']) { print("t = %T; o = %d; n = %s\n", t, o, s->name); prtree(a, "init1 value"); } if(exflag && a->op == OINIT) return doinit(s, t, o, nextinit()); switch(t->etype) { default: diag(Z, "unknown type in initialization: %T to: %s", t, s->name); return Z; case TCHAR: case TUCHAR: case TINT: case TUINT: case TSHORT: case TUSHORT: case TLONG: case TULONG: case TVLONG: case TUVLONG: case TFLOAT: case TDOUBLE: case TIND: single: if(a->op == OARRAY || a->op == OELEM) return Z; a = nextinit(); if(a == Z) return Z; if(t->nbits) diag(Z, "cannot initialize bitfields"); if(s->class == CAUTO) { l = new(ONAME, Z, Z); l->sym = s; l->type = t; l->etype = TVOID; if(s->type) l->etype = s->type->etype; l->xoffset = s->offset + o; l->class = s->class; l = new(OASI, l, a); return l; } complex(a); if(a->type == T) return Z; if(a->op == OCONST) { if(vconst(a) && t->etype == TIND && a->type && a->type->etype != TIND){ diag(a, "initialize pointer to an integer: %s", s->name); return Z; } if(!sametype(a->type, t)) { /* hoop jumping to save malloc */ if(nodcast == Z) nodcast = new(OCAST, Z, Z); nod = *nodcast; nod.left = a; nod.type = t; nod.lineno = a->lineno; complex(&nod); if(nod.type) *a = nod; } if(a->op != OCONST) { diag(a, "initializer is not a constant: %s", s->name); return Z; } if(vconst(a) == 0) return Z; goto gext; } if(t->etype == TIND) { while(a->op == OCAST) { warn(a, "CAST in initialization ignored"); a = a->left; } if(!sametype(t, a->type)) { diag(a, "initialization of incompatible pointers: %s\n%T and %T", s->name, t, a->type); } if(a->op == OADDR) a = a->left; goto gext; } while(a->op == OCAST) a = a->left; if(a->op == OADDR) { warn(a, "initialize pointer to an integer: %s", s->name); a = a->left; goto gext; } diag(a, "initializer is not a constant: %s", s->name); return Z; gext: gextern(s, a, o, t->width); return Z; case TARRAY: w = t->link->width; if(a->op == OSTRING || a->op == OLSTRING) if(typei[t->link->etype]) { /* * get rid of null if sizes match exactly */ a = nextinit(); mw = t->width/w; so = a->type->width/a->type->link->width; if(mw && so > mw) { if(so != mw+1) diag(a, "string initialization larger than array"); a->type->width -= a->type->link->width; } /* * arrange strings to be expanded * inside OINIT braces. */ a = new(OUSED, a, Z); return doinit(s, t, o, a); } mw = -w; l = Z; for(e=0;;) { /* * peek ahead for element initializer */ a = peekinit(); if(a == Z) break; if(a->op == OELEM && t->link->etype != TSTRUCT) break; if(a->op == OARRAY) { if(e && exflag) break; a = nextinit(); r = a->left; complex(r); if(r->op != OCONST) { diag(r, "initializer subscript must be constant"); return Z; } e = r->vconst; if(t->width != 0) if(e < 0 || e*w >= t->width) { diag(a, "initialization index out of range: %d", e); continue; } } so = e*w; if(so > mw) mw = so; if(t->width != 0) if(mw >= t->width) break; r = init1(s, t->link, o+so, 1); l = newlist(l, r); e++; } if(t->width == 0) t->width = mw+w; return l; case TUNION: case TSTRUCT: /* * peek ahead to find type of rhs. * if its a structure, then treat * this element as a variable * rather than an aggregate. */ if(isstruct(a, t)) goto single; if(t->width <= 0) { diag(Z, "incomplete structure: %s", s->name); return Z; } l = Z; again: for(t1 = t->link; t1 != T; t1 = t1->down) { if(a->op == OARRAY && t1->etype != TARRAY) break; if(a->op == OELEM) { if(t1->sym != a->sym) continue; nextinit(); } r = init1(s, t1, o+t1->offset, 1); l = newlist(l, r); a = peekinit(); if(a == Z) break; if(a->op == OELEM) goto again; } if(a && a->op == OELEM) diag(a, "structure element not found %F", a); return l; } } Node* newlist(Node *l, Node *r) { if(r == Z) return l; if(l == Z) return r; return new(OLIST, l, r); } static int haspointers(Type *t) { Type *fld; switch(t->etype) { case TSTRUCT: for(fld = t->link; fld != T; fld = fld->down) { if(haspointers(fld)) return 1; } return 0; case TARRAY: return haspointers(t->link); case TFUNC: case TIND: return 1; default: return 0; } } void sualign(Type *t) { Type *l; int32 o, w, maxal; o = 0; maxal = 0; switch(t->etype) { case TSTRUCT: t->offset = 0; w = 0; for(l = t->link; l != T; l = l->down) { if(l->nbits) { if(l->shift <= 0) { l->shift = -l->shift; w = xround(w, tfield->width); o = w; w += tfield->width; } l->offset = o; } else { if(l->width <= 0) if(l->down != T) if(l->sym) diag(Z, "incomplete structure element: %s", l->sym->name); else diag(Z, "incomplete structure element"); w = align(w, l, Ael1, &maxal); l->offset = w; w = align(w, l, Ael2, &maxal); } } w = align(w, t, Asu2, &maxal); t->width = w; t->align = maxal; acidtype(t); godeftype(t); return; case TUNION: t->offset = 0; w = 0; for(l = t->link; l != T; l = l->down) { if(l->width <= 0) if(l->sym) diag(Z, "incomplete union element: %s", l->sym->name); else diag(Z, "incomplete union element"); l->offset = 0; l->shift = 0; if((debug['q'] || debug['Q']) && haspointers(l)) diag(Z, "precise garbage collector cannot handle unions with pointers"); o = align(align(0, l, Ael1, &maxal), l, Ael2, &maxal); if(o > w) w = o; } w = align(w, t, Asu2, &maxal); t->width = w; t->align = maxal; acidtype(t); godeftype(t); return; default: diag(Z, "unknown type in sualign: %T", t); break; } } int32 xround(int32 v, int w) { int r; if(w <= 0 || w > 8) { diag(Z, "rounding by %d", w); w = 1; } r = v%w; if(r) v += w-r; return v; } Type* ofnproto(Node *n) { Type *tl, *tr, *t; if(n == Z) return T; switch(n->op) { case OLIST: tl = ofnproto(n->left); tr = ofnproto(n->right); if(tl == T) return tr; tl->down = tr; return tl; case ONAME: t = copytyp(n->sym->type); t->down = T; return t; } return T; } #define ANSIPROTO 1 #define OLDPROTO 2 void argmark(Node *n, int pass) { Type *t; autoffset = align(0, thisfn->link, Aarg0, nil); stkoff = 0; for(; n->left != Z; n = n->left) { if(n->op != OFUNC || n->left->op != ONAME) continue; walkparam(n->right, pass); if(pass != 0 && anyproto(n->right) == OLDPROTO) { t = typ(TFUNC, n->left->sym->type->link); t->down = typ(TOLD, T); t->down->down = ofnproto(n->right); tmerge(t, n->left->sym); n->left->sym->type = t; } break; } autoffset = 0; stkoff = 0; } void walkparam(Node *n, int pass) { Sym *s; Node *n1; if(n != Z && n->op == OPROTO && n->left == Z && n->type == types[TVOID]) return; loop: if(n == Z) return; switch(n->op) { default: diag(n, "argument not a name/prototype: %O", n->op); break; case OLIST: walkparam(n->left, pass); n = n->right; goto loop; case OPROTO: for(n1 = n; n1 != Z; n1=n1->left) if(n1->op == ONAME) { if(pass == 0) { s = n1->sym; push1(s); s->offset = -1; break; } dodecl(pdecl, CPARAM, n->type, n->left); break; } if(n1) break; if(pass == 0) { /* * extension: * allow no name in argument declaration diag(Z, "no name in argument declaration"); */ break; } dodecl(NODECL, CPARAM, n->type, n->left); pdecl(CPARAM, lastdcl, S); break; case ODOTDOT: break; case ONAME: s = n->sym; if(pass == 0) { push1(s); s->offset = -1; break; } if(s->offset != -1) { if(autoffset == 0) { firstarg = s; firstargtype = s->type; } autoffset = align(autoffset, s->type, Aarg1, nil); s->offset = autoffset; autoffset = align(autoffset, s->type, Aarg2, nil); } else dodecl(pdecl, CXXX, types[TINT], n); break; } } void markdcl(void) { Decl *d; blockno++; d = push(); d->val = DMARK; d->offset = autoffset; d->block = autobn; autobn = blockno; } Node* revertdcl(void) { Decl *d; Sym *s; Node *n, *n1; n = Z; for(;;) { d = dclstack; if(d == D) { diag(Z, "pop off dcl stack"); break; } dclstack = d->link; s = d->sym; switch(d->val) { case DMARK: autoffset = d->offset; autobn = d->block; return n; case DAUTO: if(debug['d']) print("revert1 \"%s\"\n", s->name); if(s->aused == 0) { nearln = s->varlineno; if(s->class == CAUTO) warn(Z, "auto declared and not used: %s", s->name); if(s->class == CPARAM) warn(Z, "param declared and not used: %s", s->name); } if(s->type && (s->type->garb & GVOLATILE)) { n1 = new(ONAME, Z, Z); n1->sym = s; n1->type = s->type; n1->etype = TVOID; if(n1->type != T) n1->etype = n1->type->etype; n1->xoffset = s->offset; n1->class = s->class; n1 = new(OADDR, n1, Z); n1 = new(OUSED, n1, Z); if(n == Z) n = n1; else n = new(OLIST, n1, n); } s->type = d->type; s->class = d->class; s->offset = d->offset; s->block = d->block; s->varlineno = d->varlineno; s->aused = d->aused; break; case DSUE: if(debug['d']) print("revert2 \"%s\"\n", s->name); s->suetag = d->type; s->sueblock = d->block; break; case DLABEL: if(debug['d']) print("revert3 \"%s\"\n", s->name); if(s->label && s->label->addable == 0) warn(s->label, "label declared and not used \"%s\"", s->name); s->label = Z; break; } } return n; } Type* fnproto(Node *n) { int r; r = anyproto(n->right); if(r == 0 || (r & OLDPROTO)) { if(r & ANSIPROTO) diag(n, "mixed ansi/old function declaration: %F", n->left); return T; } return fnproto1(n->right); } int anyproto(Node *n) { int r; r = 0; loop: if(n == Z) return r; switch(n->op) { case OLIST: r |= anyproto(n->left); n = n->right; goto loop; case ODOTDOT: case OPROTO: return r | ANSIPROTO; } return r | OLDPROTO; } Type* fnproto1(Node *n) { Type *t; if(n == Z) return T; switch(n->op) { case OLIST: t = fnproto1(n->left); if(t != T) t->down = fnproto1(n->right); return t; case OPROTO: lastdcl = T; dodecl(NODECL, CXXX, n->type, n->left); t = typ(TXXX, T); if(lastdcl != T) *t = *paramconv(lastdcl, 1); return t; case ONAME: diag(n, "incomplete argument prototype"); return typ(TINT, T); case ODOTDOT: return typ(TDOT, T); } diag(n, "unknown op in fnproto"); return T; } void dbgdecl(Sym *s) { print("decl \"%s\": C=%s [B=%d:O=%d] T=%T\n", s->name, cnames[s->class], s->block, s->offset, s->type); } Decl* push(void) { Decl *d; d = alloc(sizeof(*d)); d->link = dclstack; dclstack = d; return d; } Decl* push1(Sym *s) { Decl *d; d = push(); d->sym = s; d->val = DAUTO; d->type = s->type; d->class = s->class; d->offset = s->offset; d->block = s->block; d->varlineno = s->varlineno; d->aused = s->aused; return d; } int sametype(Type *t1, Type *t2) { if(t1 == t2) return 1; return rsametype(t1, t2, 5, 1); } int rsametype(Type *t1, Type *t2, int n, int f) { int et; n--; for(;;) { if(t1 == t2) return 1; if(t1 == T || t2 == T) return 0; if(n <= 0) return 1; et = t1->etype; if(et != t2->etype) return 0; if(et == TFUNC) { if(!rsametype(t1->link, t2->link, n, 0)) return 0; t1 = t1->down; t2 = t2->down; while(t1 != T && t2 != T) { if(t1->etype == TOLD) { t1 = t1->down; continue; } if(t2->etype == TOLD) { t2 = t2->down; continue; } while(t1 != T || t2 != T) { if(!rsametype(t1, t2, n, 0)) return 0; t1 = t1->down; t2 = t2->down; } break; } return 1; } if(et == TARRAY) if(t1->width != t2->width && t1->width != 0 && t2->width != 0) return 0; if(typesu[et]) { if(t1->link == T) snap(t1); if(t2->link == T) snap(t2); t1 = t1->link; t2 = t2->link; for(;;) { if(t1 == t2) return 1; if(!rsametype(t1, t2, n, 0)) return 0; t1 = t1->down; t2 = t2->down; } } t1 = t1->link; t2 = t2->link; if((f || !debug['V']) && et == TIND) { if(t1 != T && t1->etype == TVOID) return 1; if(t2 != T && t2->etype == TVOID) return 1; } } } typedef struct Typetab Typetab; struct Typetab{ int n; Type **a; }; static int sigind(Type *t, Typetab *tt) { int n; Type **a, **na, **p, **e; n = tt->n; a = tt->a; e = a+n; /* linear search seems ok */ for(p = a ; p < e; p++) if(sametype(*p, t)) return p-a; if((n&15) == 0){ na = malloc((n+16)*sizeof(Type*)); if(na == nil) { print("%s: out of memory", argv0); errorexit(); } memmove(na, a, n*sizeof(Type*)); free(a); a = tt->a = na; } a[tt->n++] = t; return -1; } static uint32 signat(Type *t, Typetab *tt) { int i; Type *t1; int32 s; s = 0; for(; t; t=t->link) { s = s*thash1 + thash[t->etype]; if(t->garb&GINCOMPLETE) return s; switch(t->etype) { default: return s; case TARRAY: s = s*thash2 + 0; /* was t->width */ break; case TFUNC: for(t1=t->down; t1; t1=t1->down) s = s*thash3 + signat(t1, tt); break; case TSTRUCT: case TUNION: if((i = sigind(t, tt)) >= 0){ s = s*thash2 + i; return s; } for(t1=t->link; t1; t1=t1->down) s = s*thash3 + signat(t1, tt); return s; case TIND: break; } } return s; } uint32 signature(Type *t) { uint32 s; Typetab tt; tt.n = 0; tt.a = nil; s = signat(t, &tt); free(tt.a); return s; } uint32 sign(Sym *s) { uint32 v; Type *t; if(s->sig == SIGINTERN) return SIGNINTERN; if((t = s->type) == T) return 0; v = signature(t); if(v == 0) v = SIGNINTERN; return v; } void snap(Type *t) { if(typesu[t->etype]) if(t->link == T && t->tag && t->tag->suetag) { t->link = t->tag->suetag->link; t->width = t->tag->suetag->width; } } Type* dotag(Sym *s, int et, int bn) { Decl *d; if(bn != 0 && bn != s->sueblock) { d = push(); d->sym = s; d->val = DSUE; d->type = s->suetag; d->block = s->sueblock; s->suetag = T; } if(s->suetag == T) { s->suetag = typ(et, T); s->sueblock = autobn; } if(s->suetag->etype != et) diag(Z, "tag used for more than one type: %s", s->name); if(s->suetag->tag == S) s->suetag->tag = s; return s->suetag; } Node* dcllabel(Sym *s, int f) { Decl *d, d1; Node *n; n = s->label; if(n != Z) { if(f) { if(n->complex) diag(Z, "label reused: %s", s->name); n->complex = 1; // declared } else n->addable = 1; // used return n; } d = push(); d->sym = s; d->val = DLABEL; dclstack = d->link; d1 = *firstdcl; *firstdcl = *d; *d = d1; firstdcl->link = d; firstdcl = d; n = new(OXXX, Z, Z); n->sym = s; n->complex = f; n->addable = !f; s->label = n; if(debug['d']) dbgdecl(s); return n; } Type* paramconv(Type *t, int f) { switch(t->etype) { case TUNION: case TSTRUCT: if(t->width <= 0) diag(Z, "incomplete structure: %s", t->tag->name); break; case TARRAY: t = typ(TIND, t->link); t->width = types[TIND]->width; break; case TFUNC: t = typ(TIND, t); t->width = types[TIND]->width; break; case TFLOAT: if(!f) t = types[TDOUBLE]; break; case TCHAR: case TSHORT: if(!f) t = types[TINT]; break; case TUCHAR: case TUSHORT: if(!f) t = types[TUINT]; break; } return t; } void adecl(int c, Type *t, Sym *s) { if(c == CSTATIC) c = CLOCAL; if(t->etype == TFUNC) { if(c == CXXX) c = CEXTERN; if(c == CLOCAL) c = CSTATIC; if(c == CAUTO || c == CEXREG) diag(Z, "function cannot be %s %s", cnames[c], s->name); } if(c == CXXX) c = CAUTO; if(s) { if(s->class == CSTATIC) if(c == CEXTERN || c == CGLOBL) { warn(Z, "just say static: %s", s->name); c = CSTATIC; } if(s->class == CAUTO || s->class == CPARAM || s->class == CLOCAL) if(s->block == autobn) diag(Z, "auto redeclaration of: %s", s->name); if(c != CPARAM) push1(s); s->block = autobn; s->offset = 0; s->type = t; s->class = c; s->aused = 0; } switch(c) { case CAUTO: autoffset = align(autoffset, t, Aaut3, nil); stkoff = maxround(stkoff, autoffset); s->offset = -autoffset; break; case CPARAM: if(autoffset == 0) { firstarg = s; firstargtype = t; } autoffset = align(autoffset, t, Aarg1, nil); if(s) s->offset = autoffset; autoffset = align(autoffset, t, Aarg2, nil); break; } } void pdecl(int c, Type *t, Sym *s) { if(s && s->offset != -1) { diag(Z, "not a parameter: %s", s->name); return; } t = paramconv(t, c==CPARAM); if(c == CXXX) c = CPARAM; if(c != CPARAM) { diag(Z, "parameter cannot have class: %s", s->name); c = CPARAM; } adecl(c, t, s); } void xdecl(int c, Type *t, Sym *s) { int32 o; o = 0; switch(c) { case CEXREG: o = exreg(t); if(o == 0) c = CEXTERN; if(s->class == CGLOBL) c = CGLOBL; break; case CEXTERN: if(s->class == CGLOBL) c = CGLOBL; break; case CXXX: c = CGLOBL; if(s->class == CEXTERN) s->class = CGLOBL; break; case CAUTO: diag(Z, "overspecified class: %s %s %s", s->name, cnames[c], cnames[s->class]); c = CEXTERN; break; case CTYPESTR: if(!typesuv[t->etype]) { diag(Z, "typestr must be struct/union: %s", s->name); break; } dclfunct(t, s); break; } if(s->class == CSTATIC) if(c == CEXTERN || c == CGLOBL) { warn(Z, "overspecified class: %s %s %s", s->name, cnames[c], cnames[s->class]); c = CSTATIC; } if(s->type != T) if(s->class != c || !sametype(t, s->type) || t->etype == TENUM) { diag(Z, "external redeclaration of: %s", s->name); Bprint(&diagbuf, " %s %T %L\n", cnames[c], t, nearln); Bprint(&diagbuf, " %s %T %L\n", cnames[s->class], s->type, s->varlineno); } tmerge(t, s); s->type = t; s->class = c; s->block = 0; s->offset = o; } void tmerge(Type *t1, Sym *s) { Type *ta, *tb, *t2; t2 = s->type; for(;;) { if(t1 == T || t2 == T || t1 == t2) break; if(t1->etype != t2->etype) break; switch(t1->etype) { case TFUNC: ta = t1->down; tb = t2->down; if(ta == T) { t1->down = tb; break; } if(tb == T) break; while(ta != T && tb != T) { if(ta == tb) break; /* ignore old-style flag */ if(ta->etype == TOLD) { ta = ta->down; continue; } if(tb->etype == TOLD) { tb = tb->down; continue; } /* checking terminated by ... */ if(ta->etype == TDOT && tb->etype == TDOT) { ta = T; tb = T; break; } if(!sametype(ta, tb)) break; ta = ta->down; tb = tb->down; } if(ta != tb) diag(Z, "function inconsistently declared: %s", s->name); /* take new-style over old-style */ ta = t1->down; tb = t2->down; if(ta != T && ta->etype == TOLD) if(tb != T && tb->etype != TOLD) t1->down = tb; break; case TARRAY: /* should we check array size change? */ if(t2->width > t1->width) t1->width = t2->width; break; case TUNION: case TSTRUCT: return; } t1 = t1->link; t2 = t2->link; } } void edecl(int c, Type *t, Sym *s) { Type *t1; if(s == S) { if(!typesu[t->etype]) diag(Z, "unnamed structure element must be struct/union"); if(c != CXXX) diag(Z, "unnamed structure element cannot have class"); } else if(c != CXXX) diag(Z, "structure element cannot have class: %s", s->name); t1 = t; t = copytyp(t1); t->sym = s; t->down = T; if(lastfield) { t->shift = lastbit - lastfield; t->nbits = lastfield; if(firstbit) t->shift = -t->shift; if(typeu[t->etype]) t->etype = tufield->etype; else t->etype = tfield->etype; } if(strf == T) strf = t; else strl->down = t; strl = t; } /* * this routine is very suspect. * ansi requires the enum type to * be represented as an 'int' * this means that 0x81234567 * would be illegal. this routine * makes signed and unsigned go * to unsigned. */ Type* maxtype(Type *t1, Type *t2) { if(t1 == T) return t2; if(t2 == T) return t1; if(t1->etype > t2->etype) return t1; return t2; } void doenum(Sym *s, Node *n) { if(n) { complex(n); if(n->op != OCONST) { diag(n, "enum not a constant: %s", s->name); return; } en.cenum = n->type; en.tenum = maxtype(en.cenum, en.tenum); if(!typefd[en.cenum->etype]) en.lastenum = n->vconst; else en.floatenum = n->fconst; } if(dclstack) push1(s); xdecl(CXXX, types[TENUM], s); if(en.cenum == T) { en.tenum = types[TINT]; en.cenum = types[TINT]; en.lastenum = 0; } s->tenum = en.cenum; if(!typefd[s->tenum->etype]) { s->vconst = convvtox(en.lastenum, s->tenum->etype); en.lastenum++; } else { s->fconst = en.floatenum; en.floatenum++; } if(debug['d']) dbgdecl(s); acidvar(s); godefvar(s); } void symadjust(Sym *s, Node *n, int32 del) { switch(n->op) { default: if(n->left) symadjust(s, n->left, del); if(n->right) symadjust(s, n->right, del); return; case ONAME: if(n->sym == s) n->xoffset -= del; return; case OCONST: case OSTRING: case OLSTRING: case OINDREG: case OREGISTER: return; } } Node* contig(Sym *s, Node *n, int32 v) { Node *p, *r, *q, *m; int32 w; Type *zt; if(debug['i']) { print("contig v = %d; s = %s\n", v, s->name); prtree(n, "doinit value"); } if(n == Z) goto no; w = s->type->width; /* * nightmare: an automatic array whose size * increases when it is initialized */ if(v != w) { if(v != 0) diag(n, "automatic adjustable array: %s", s->name); v = s->offset; autoffset = align(autoffset, s->type, Aaut3, nil); s->offset = -autoffset; stkoff = maxround(stkoff, autoffset); symadjust(s, n, v - s->offset); } if(w <= ewidth[TIND]) goto no; if(n->op == OAS) diag(Z, "oops in contig"); /*ZZZ this appears incorrect need to check if the list completely covers the data. if not, bail */ if(n->op == OLIST) goto no; if(n->op == OASI) if(n->left->type) if(n->left->type->width == w) goto no; while(w & (ewidth[TIND]-1)) w++; /* * insert the following code, where long becomes vlong if pointers are fat * *(long**)&X = (long*)((char*)X + sizeof(X)); do { *(long**)&X -= 1; **(long**)&X = 0; } while(*(long**)&X); */ for(q=n; q->op != ONAME; q=q->left) ; zt = ewidth[TIND] > ewidth[TLONG]? types[TVLONG]: types[TLONG]; p = new(ONAME, Z, Z); *p = *q; p->type = typ(TIND, zt); p->xoffset = s->offset; r = new(ONAME, Z, Z); *r = *p; r = new(OPOSTDEC, r, Z); q = new(ONAME, Z, Z); *q = *p; q = new(OIND, q, Z); m = new(OCONST, Z, Z); m->vconst = 0; m->type = zt; q = new(OAS, q, m); r = new(OLIST, r, q); q = new(ONAME, Z, Z); *q = *p; r = new(ODWHILE, q, r); q = new(ONAME, Z, Z); *q = *p; q->type = q->type->link; q->xoffset += w; q = new(OADDR, q, 0); q = new(OASI, p, q); r = new(OLIST, q, r); n = new(OLIST, r, n); no: return n; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/doc.go��������������������������������������������������������������������������������0100644�0000000�0000000�00000000501�12412656734�014503� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Copyright 2009 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 ignore /* This directory contains the portable section of the Plan 9 C compilers. See ../6c, ../8c, and ../5c for more information. */ package main �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/dpchk.c�������������������������������������������������������������������������������0100644�0000000�0000000�00000033763�12412656734�014664� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/dpchk.c // http://code.google.com/p/inferno-os/source/browse/utils/cc/dpchk.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "cc.h" #include "y.tab.h" enum { Fnone = 0, Fl, Fvl, Fignor, Fstar, Fadj, Fverb = 10, }; typedef struct Tprot Tprot; struct Tprot { Type* type; Bits flag; Tprot* link; }; typedef struct Tname Tname; struct Tname { char* name; int param; int count; Tname* link; Tprot* prot; }; static Type* indchar; static uchar flagbits[512]; static char* lastfmt; static int lastadj; static int lastverb; static int nstar; static Tprot* tprot; static Tname* tname; void argflag(int c, int v) { switch(v) { case Fignor: case Fstar: case Fl: case Fvl: flagbits[c] = v; break; case Fverb: flagbits[c] = lastverb; /*print("flag-v %c %d\n", c, lastadj);*/ lastverb++; break; case Fadj: flagbits[c] = lastadj; /*print("flag-l %c %d\n", c, lastadj);*/ lastadj++; break; } } Bits getflag(char *s) { Bits flag; int f; Fmt fmt; Rune c; flag = zbits; nstar = 0; fmtstrinit(&fmt); for(;;) { s += chartorune(&c, s); if(c == 0 || c >= nelem(flagbits)) break; fmtrune(&fmt, c); f = flagbits[c]; switch(f) { case Fnone: argflag(c, Fverb); f = flagbits[c]; break; case Fstar: nstar++; case Fignor: continue; case Fl: if(bset(flag, Fl)) flag = bor(flag, blsh(Fvl)); } flag = bor(flag, blsh(f)); if(f >= Fverb) break; } free(lastfmt); lastfmt = fmtstrflush(&fmt); return flag; } static void newprot(Sym *m, Type *t, char *s, Tprot **prot) { Bits flag; Tprot *l; if(t == T) { warn(Z, "%s: newprot: type not defined", m->name); return; } flag = getflag(s); for(l=*prot; l; l=l->link) if(beq(flag, l->flag) && sametype(t, l->type)) return; l = alloc(sizeof(*l)); l->type = t; l->flag = flag; l->link = *prot; *prot = l; } static Tname* newname(char *s, int p, int count) { Tname *l; for(l=tname; l; l=l->link) if(strcmp(l->name, s) == 0) { if(p >= 0 && l->param != p) yyerror("vargck %s already defined\n", s); return l; } if(p < 0) return nil; l = alloc(sizeof(*l)); l->name = s; l->param = p; l->link = tname; l->count = count; tname = l; return l; } void arginit(void) { int i; /* debug['F'] = 1;*/ /* debug['w'] = 1;*/ lastadj = Fadj; lastverb = Fverb; indchar = typ(TIND, types[TCHAR]); memset(flagbits, Fnone, sizeof(flagbits)); for(i='0'; i<='9'; i++) argflag(i, Fignor); argflag('.', Fignor); argflag('#', Fignor); argflag('u', Fignor); argflag('h', Fignor); argflag('+', Fignor); argflag('-', Fignor); argflag('*', Fstar); argflag('l', Fl); argflag('o', Fverb); flagbits['x'] = flagbits['o']; flagbits['X'] = flagbits['o']; } static char* getquoted(void) { int c; Rune r; Fmt fmt; c = getnsc(); if(c != '"') return nil; fmtstrinit(&fmt); for(;;) { r = getr(); if(r == '\n') { free(fmtstrflush(&fmt)); return nil; } if(r == '"') break; fmtrune(&fmt, r); } free(lastfmt); lastfmt = fmtstrflush(&fmt); return strdup(lastfmt); } void pragvararg(void) { Sym *s; int n, c; char *t; Type *ty; Tname *l; if(!debug['F']) goto out; s = getsym(); if(s && strcmp(s->name, "argpos") == 0) goto ckpos; if(s && strcmp(s->name, "type") == 0) goto cktype; if(s && strcmp(s->name, "flag") == 0) goto ckflag; if(s && strcmp(s->name, "countpos") == 0) goto ckcount; yyerror("syntax in #pragma varargck"); goto out; ckpos: /*#pragma varargck argpos warn 2*/ s = getsym(); if(s == S) goto bad; n = getnsn(); if(n < 0) goto bad; newname(s->name, n, 0); goto out; ckcount: /*#pragma varargck countpos name 2*/ s = getsym(); if(s == S) goto bad; n = getnsn(); if(n < 0) goto bad; newname(s->name, 0, n); goto out; ckflag: /*#pragma varargck flag 'c'*/ c = getnsc(); if(c != '\'') goto bad; c = getr(); if(c == '\\') c = getr(); else if(c == '\'') goto bad; if(c == '\n') goto bad; if(getc() != '\'') goto bad; argflag(c, Fignor); goto out; cktype: c = getnsc(); unget(c); if(c != '"') { /*#pragma varargck type name int*/ s = getsym(); if(s == S) goto bad; l = newname(s->name, -1, -1); s = getsym(); if(s == S) goto bad; ty = s->type; while((c = getnsc()) == '*') ty = typ(TIND, ty); unget(c); newprot(s, ty, "a", &l->prot); goto out; } /*#pragma varargck type O int*/ t = getquoted(); if(t == nil) goto bad; s = getsym(); if(s == S) goto bad; ty = s->type; while((c = getnsc()) == '*') ty = typ(TIND, ty); unget(c); newprot(s, ty, t, &tprot); goto out; bad: yyerror("syntax in #pragma varargck"); out: while(getnsc() != '\n') ; } Node* nextarg(Node *n, Node **a) { if(n == Z) { *a = Z; return Z; } if(n->op == OLIST) { *a = n->left; return n->right; } *a = n; return Z; } void checkargs(Node *nn, char *s, int pos) { Node *a, *n; Bits flag; Tprot *l; if(!debug['F']) return; n = nn; for(;;) { s = strchr(s, '%'); if(s == 0) { nextarg(n, &a); if(a != Z) warn(nn, "more arguments than format %T", a->type); return; } s++; flag = getflag(s); while(nstar > 0) { n = nextarg(n, &a); pos++; nstar--; if(a == Z) { warn(nn, "more format than arguments %s", lastfmt); return; } if(a->type == T) continue; if(!sametype(types[TINT], a->type) && !sametype(types[TUINT], a->type)) warn(nn, "format mismatch '*' in %s %T, arg %d", lastfmt, a->type, pos); } for(l=tprot; l; l=l->link) if(sametype(types[TVOID], l->type)) { if(beq(flag, l->flag)) { s++; goto loop; } } n = nextarg(n, &a); pos++; if(a == Z) { warn(nn, "more format than arguments %s", lastfmt); return; } if(a->type == 0) continue; for(l=tprot; l; l=l->link) if(sametype(a->type, l->type)) { /*print("checking %T/%ux %T/%ux\n", a->type, flag.b[0], l->type, l->flag.b[0]);*/ if(beq(flag, l->flag)) goto loop; } warn(nn, "format mismatch %s %T, arg %d", lastfmt, a->type, pos); loop:; } } void dpcheck(Node *n) { char *s; Node *a, *b; Tname *l; Tprot *tl; int i, j; if(n == Z) return; b = n->left; if(b == Z || b->op != ONAME) return; s = b->sym->name; for(l=tname; l; l=l->link) if(strcmp(s, l->name) == 0) break; if(l == 0) return; if(l->count > 0) { // fetch count, then check remaining length i = l->count; a = nil; b = n->right; while(i > 0) { b = nextarg(b, &a); i--; } if(a == Z) { diag(n, "can't find count arg"); return; } if(a->op != OCONST || !typechl[a->type->etype]) { diag(n, "count is invalid constant"); return; } j = a->vconst; i = 0; while(b != Z) { b = nextarg(b, &a); i++; } if(i != j) diag(n, "found %d argument%s after count %d", i, i == 1 ? "" : "s", j); } if(l->prot != nil) { // check that all arguments after param or count // are listed in type list. i = l->count; if(i == 0) i = l->param; if(i == 0) return; a = nil; b = n->right; while(i > 0) { b = nextarg(b, &a); i--; } if(a == Z) { diag(n, "can't find count/param arg"); return; } while(b != Z) { b = nextarg(b, &a); for(tl=l->prot; tl; tl=tl->link) if(sametype(a->type, tl->type)) break; if(tl == nil) diag(a, "invalid type %T in call to %s", a->type, s); } } if(l->param <= 0) return; i = l->param; a = nil; b = n->right; while(i > 0) { b = nextarg(b, &a); i--; } if(a == Z) { diag(n, "can't find format arg"); return; } if(!sametype(indchar, a->type)) { diag(n, "format arg type %T", a->type); return; } if(a->op != OADDR || a->left->op != ONAME || a->left->sym != symstring) { /* warn(n, "format arg not constant string");*/ return; } s = a->left->cstring; checkargs(b, s, l->param); } void pragpack(void) { Sym *s; packflg = 0; s = getsym(); if(s) { packflg = atoi(s->name+1); if(strcmp(s->name, "on") == 0 || strcmp(s->name, "yes") == 0) packflg = 1; } while(getnsc() != '\n') ; if(debug['f']) if(packflg) print("%4d: pack %d\n", lineno, packflg); else print("%4d: pack off\n", lineno); } void pragfpround(void) { Sym *s; fproundflg = 0; s = getsym(); if(s) { fproundflg = atoi(s->name+1); if(strcmp(s->name, "on") == 0 || strcmp(s->name, "yes") == 0) fproundflg = 1; } while(getnsc() != '\n') ; if(debug['f']) if(fproundflg) print("%4d: fproundflg %d\n", lineno, fproundflg); else print("%4d: fproundflg off\n", lineno); } void pragtextflag(void) { Sym *s; s = getsym(); if(s == S) { textflag = getnsn(); } else { if(s->macro) { macexpand(s, symb); } if(symb[0] < '0' || symb[0] > '9') yyerror("pragma textflag not an integer"); textflag = atoi(symb); } while(getnsc() != '\n') ; if(debug['f']) print("%4d: textflag %d\n", lineno, textflag); } void pragdataflag(void) { Sym *s; s = getsym(); if(s == S) { dataflag = getnsn(); } else { if(s->macro) { macexpand(s, symb); } if(symb[0] < '0' || symb[0] > '9') yyerror("pragma dataflag not an integer"); dataflag = atoi(symb); } while(getnsc() != '\n') ; if(debug['f']) print("%4d: dataflag %d\n", lineno, dataflag); } void pragincomplete(void) { Sym *s; Type *t; int istag, w, et; istag = 0; s = getsym(); if(s == nil) goto out; et = 0; w = s->lexical; if(w == LSTRUCT) et = TSTRUCT; else if(w == LUNION) et = TUNION; if(et != 0){ s = getsym(); if(s == nil){ yyerror("missing struct/union tag in pragma incomplete"); goto out; } if(s->lexical != LNAME && s->lexical != LTYPE){ yyerror("invalid struct/union tag: %s", s->name); goto out; } dotag(s, et, 0); istag = 1; }else if(strcmp(s->name, "_off_") == 0){ debug['T'] = 0; goto out; }else if(strcmp(s->name, "_on_") == 0){ debug['T'] = 1; goto out; } t = s->type; if(istag) t = s->suetag; if(t == T) yyerror("unknown type %s in pragma incomplete", s->name); else if(!typesu[t->etype]) yyerror("not struct/union type in pragma incomplete: %s", s->name); else t->garb |= GINCOMPLETE; out: while(getnsc() != '\n') ; if(debug['f']) print("%s incomplete\n", s->name); } Sym* getimpsym(void) { int c; char *cp; c = getnsc(); if(isspace(c) || c == '"') { unget(c); return S; } for(cp = symb;;) { if(cp <= symb+NSYMB-4) *cp++ = c; c = getc(); if(c > 0 && !isspace(c) && c != '"') continue; unget(c); break; } *cp = 0; if(cp > symb+NSYMB-4) yyerror("symbol too large: %s", symb); return lookup(); } static int more(void) { int c; do c = getnsc(); while(c == ' ' || c == '\t'); unget(c); return c != '\n'; } void pragcgo(char *verb) { Sym *local, *remote; char *p; if(strcmp(verb, "cgo_dynamic_linker") == 0 || strcmp(verb, "dynlinker") == 0) { p = getquoted(); if(p == nil) goto err1; fmtprint(&pragcgobuf, "cgo_dynamic_linker %q\n", p); goto out; err1: yyerror("usage: #pragma cgo_dynamic_linker \"path\""); goto out; } if(strcmp(verb, "dynexport") == 0) verb = "cgo_export_dynamic"; if(strcmp(verb, "cgo_export_static") == 0 || strcmp(verb, "cgo_export_dynamic") == 0) { local = getimpsym(); if(local == nil) goto err2; if(!more()) { fmtprint(&pragcgobuf, "%s %q\n", verb, local->name); goto out; } remote = getimpsym(); if(remote == nil) goto err2; fmtprint(&pragcgobuf, "%s %q %q\n", verb, local->name, remote->name); goto out; err2: yyerror("usage: #pragma %s local [remote]", verb); goto out; } if(strcmp(verb, "cgo_import_dynamic") == 0 || strcmp(verb, "dynimport") == 0) { local = getimpsym(); if(local == nil) goto err3; if(!more()) { fmtprint(&pragcgobuf, "cgo_import_dynamic %q\n", local->name); goto out; } remote = getimpsym(); if(remote == nil) goto err3; if(!more()) { fmtprint(&pragcgobuf, "cgo_import_dynamic %q %q\n", local->name, remote->name); goto out; } p = getquoted(); if(p == nil) goto err3; fmtprint(&pragcgobuf, "cgo_import_dynamic %q %q %q\n", local->name, remote->name, p); goto out; err3: yyerror("usage: #pragma cgo_import_dynamic local [remote [\"library\"]]"); goto out; } if(strcmp(verb, "cgo_import_static") == 0) { local = getimpsym(); if(local == nil) goto err4; fmtprint(&pragcgobuf, "cgo_import_static %q\n", local->name); goto out; err4: yyerror("usage: #pragma cgo_import_static local [remote]"); goto out; } if(strcmp(verb, "cgo_ldflag") == 0) { p = getquoted(); if(p == nil) goto err5; fmtprint(&pragcgobuf, "cgo_ldflag %q\n", p); goto out; err5: yyerror("usage: #pragma cgo_ldflag \"arg\""); goto out; } out: while(getnsc() != '\n') ; } �������������go/src/cmd/cc/funct.c�������������������������������������������������������������������������������0100644�0000000�0000000�00000017343�12412656734�014706� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/funct.c // http://code.google.com/p/inferno-os/source/browse/utils/cc/funct.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "cc.h" typedef struct Ftab Ftab; struct Ftab { char op; char* name; char typ; }; typedef struct Gtab Gtab; struct Gtab { char etype; char* name; }; Ftab ftabinit[OEND]; Gtab gtabinit[NALLTYPES]; int isfunct(Node *n) { Type *t, *t1; Funct *f; Node *l; Sym *s; int o; o = n->op; if(n->left == Z) goto no; t = n->left->type; if(t == T) goto no; f = t->funct; switch(o) { case OAS: // put cast on rhs case OASI: case OASADD: case OASAND: case OASASHL: case OASASHR: case OASDIV: case OASLDIV: case OASLMOD: case OASLMUL: case OASLSHR: case OASMOD: case OASMUL: case OASOR: case OASSUB: case OASXOR: if(n->right == Z) goto no; t1 = n->right->type; if(t1 == T) goto no; if(t1->funct == f) break; l = new(OXXX, Z, Z); *l = *n->right; n->right->left = l; n->right->right = Z; n->right->type = t; n->right->op = OCAST; if(!isfunct(n->right)) prtree(n, "isfunc !"); break; case OCAST: // t f(T) or T f(t) t1 = n->type; if(t1 == T) goto no; if(f != nil) { s = f->castfr[t1->etype]; if(s == S) goto no; n->right = n->left; goto build; } f = t1->funct; if(f != nil) { s = f->castto[t->etype]; if(s == S) goto no; n->right = n->left; goto build; } goto no; } if(f == nil) goto no; s = f->sym[o]; if(s == S) goto no; /* * the answer is yes, * now we rewrite the node * and give diagnostics */ switch(o) { default: diag(n, "isfunct op missing %O\n", o); goto bad; case OADD: // T f(T, T) case OAND: case OASHL: case OASHR: case ODIV: case OLDIV: case OLMOD: case OLMUL: case OLSHR: case OMOD: case OMUL: case OOR: case OSUB: case OXOR: case OEQ: // int f(T, T) case OGE: case OGT: case OHI: case OHS: case OLE: case OLO: case OLS: case OLT: case ONE: if(n->right == Z) goto bad; t1 = n->right->type; if(t1 == T) goto bad; if(t1->funct != f) goto bad; n->right = new(OLIST, n->left, n->right); break; case OAS: // structure copies done by the compiler case OASI: goto no; case OASADD: // T f(T*, T) case OASAND: case OASASHL: case OASASHR: case OASDIV: case OASLDIV: case OASLMOD: case OASLMUL: case OASLSHR: case OASMOD: case OASMUL: case OASOR: case OASSUB: case OASXOR: if(n->right == Z) goto bad; t1 = n->right->type; if(t1 == T) goto bad; if(t1->funct != f) goto bad; n->right = new(OLIST, new(OADDR, n->left, Z), n->right); break; case OPOS: // T f(T) case ONEG: case ONOT: case OCOM: n->right = n->left; break; } build: l = new(ONAME, Z, Z); l->sym = s; l->type = s->type; l->etype = s->type->etype; l->xoffset = s->offset; l->class = s->class; tcomo(l, 0); n->op = OFUNC; n->left = l; n->type = l->type->link; if(tcompat(n, T, l->type, tfunct)) goto bad; if(tcoma(n->left, n->right, l->type->down, 1)) goto bad; return 1; no: return 0; bad: diag(n, "can't rewrite typestr for op %O\n", o); prtree(n, "isfunct"); n->type = T; return 1; } void dclfunct(Type *t, Sym *s) { Funct *f; Node *n; Type *f1, *f2, *f3, *f4; int o, i, c; char str[100]; if(t->funct) return; // recognize generated tag of dorm _%d_ if(t->tag == S) goto bad; for(i=0; c = t->tag->name[i]; i++) { if(c == '_') { if(i == 0 || t->tag->name[i+1] == 0) continue; break; } if(c < '0' || c > '9') break; } if(c == 0) goto bad; f = alloc(sizeof(*f)); for(o=0; osym); o++) f->sym[o] = S; t->funct = f; f1 = typ(TFUNC, t); f1->down = copytyp(t); f1->down->down = t; f2 = typ(TFUNC, types[TINT]); f2->down = copytyp(t); f2->down->down = t; f3 = typ(TFUNC, t); f3->down = typ(TIND, t); f3->down->down = t; f4 = typ(TFUNC, t); f4->down = t; for(i=0;; i++) { o = ftabinit[i].op; if(o == OXXX) break; sprint(str, "%s_%s_", t->tag->name, ftabinit[i].name); n = new(ONAME, Z, Z); n->sym = slookup(str); f->sym[o] = n->sym; switch(ftabinit[i].typ) { default: diag(Z, "dclfunct op missing %d\n", ftabinit[i].typ); break; case 1: // T f(T,T) + dodecl(xdecl, CEXTERN, f1, n); break; case 2: // int f(T,T) == dodecl(xdecl, CEXTERN, f2, n); break; case 3: // void f(T*,T) += dodecl(xdecl, CEXTERN, f3, n); break; case 4: // T f(T) ~ dodecl(xdecl, CEXTERN, f4, n); break; } } for(i=0;; i++) { o = gtabinit[i].etype; if(o == TXXX) break; /* * OCAST types T1 _T2_T1_(T2) */ sprint(str, "_%s%s_", gtabinit[i].name, t->tag->name); n = new(ONAME, Z, Z); n->sym = slookup(str); f->castto[o] = n->sym; f1 = typ(TFUNC, t); f1->down = types[o]; dodecl(xdecl, CEXTERN, f1, n); sprint(str, "%s_%s_", t->tag->name, gtabinit[i].name); n = new(ONAME, Z, Z); n->sym = slookup(str); f->castfr[o] = n->sym; f1 = typ(TFUNC, types[o]); f1->down = t; dodecl(xdecl, CEXTERN, f1, n); } return; bad: diag(Z, "dclfunct bad %T %s\n", t, s->name); } Gtab gtabinit[NALLTYPES] = { TCHAR, "c", TUCHAR, "uc", TSHORT, "h", TUSHORT, "uh", TINT, "i", TUINT, "ui", TLONG, "l", TULONG, "ul", TVLONG, "v", TUVLONG, "uv", TFLOAT, "f", TDOUBLE, "d", TXXX }; Ftab ftabinit[OEND] = { OADD, "add", 1, OAND, "and", 1, OASHL, "ashl", 1, OASHR, "ashr", 1, ODIV, "div", 1, OLDIV, "ldiv", 1, OLMOD, "lmod", 1, OLMUL, "lmul", 1, OLSHR, "lshr", 1, OMOD, "mod", 1, OMUL, "mul", 1, OOR, "or", 1, OSUB, "sub", 1, OXOR, "xor", 1, OEQ, "eq", 2, OGE, "ge", 2, OGT, "gt", 2, OHI, "hi", 2, OHS, "hs", 2, OLE, "le", 2, OLO, "lo", 2, OLS, "ls", 2, OLT, "lt", 2, ONE, "ne", 2, OASADD, "asadd", 3, OASAND, "asand", 3, OASASHL, "asashl", 3, OASASHR, "asashr", 3, OASDIV, "asdiv", 3, OASLDIV, "asldiv", 3, OASLMOD, "aslmod", 3, OASLMUL, "aslmul", 3, OASLSHR, "aslshr", 3, OASMOD, "asmod", 3, OASMUL, "asmul", 3, OASOR, "asor", 3, OASSUB, "assub", 3, OASXOR, "asxor", 3, OPOS, "pos", 4, ONEG, "neg", 4, OCOM, "com", 4, ONOT, "not", 4, // OPOSTDEC, // OPOSTINC, // OPREDEC, // OPREINC, OXXX, }; // Node* nodtestv; // Node* nodvpp; // Node* nodppv; // Node* nodvmm; // Node* nodmmv; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/godefs.c������������������������������������������������������������������������������0100644�0000000�0000000�00000016334�12412656737�015040� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// cmd/cc/godefs.cc // // derived from pickle.cc which itself was derived from acid.cc. // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009-2011 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "cc.h" static int upper; static char *kwd[] = { "_bool", "_break", "_byte", "_case", "_chan", "_complex128", "_complex64", "_const", "_continue", "_default", "_defer", "_else", "_fallthrough", "_false", "_float32", "_float64", "_for", "_func", "_go", "_goto", "_if", "_import", "_int", "_int16", "_int32", "_int64", "_int8", "_interface", "_intptr", "_map", "_package", "_panic", "_range", "_return", "_select", "_string", "_struct", "_switch", "_true", "_type", "_uint", "_uint16", "_uint32", "_uint64", "_uint8", "_uintptr", "_var", }; static char* pmap(char *s) { int i, bot, top, mid; bot = -1; top = nelem(kwd); while(top - bot > 1){ mid = (bot + top) / 2; i = strcmp(kwd[mid]+1, s); if(i == 0) return kwd[mid]; if(i < 0) bot = mid; else top = mid; } return s; } int Uconv(Fmt *fp) { char str[STRINGSZ+1]; char *s, *n; int i; str[0] = 0; s = va_arg(fp->args, char*); // strip package name n = strrchr(s, '.'); if(n != nil) s = n + 1; if(s && *s) { if(upper) str[0] = toupper((uchar)*s); else str[0] = tolower((uchar)*s); for(i = 1; i < STRINGSZ && s[i] != 0; i++) str[i] = tolower((uchar)s[i]); str[i] = 0; } return fmtstrcpy(fp, pmap(str)); } static Sym* findsue(Type *t) { int h; Sym *s; if(t != T) for(h=0; hlink) if(s->suetag && s->suetag->link == t) return s; return 0; } static void printtypename(Type *t) { Sym *s; Type *t1; int w; char *n; for( ; t != nil; t = t->link) { switch(t->etype) { case TIND: // Special handling of *void. if(t->link != nil && t->link->etype==TVOID) { Bprint(&outbuf, "unsafe.Pointer"); return; } // *func == func if(t->link != nil && t->link->etype==TFUNC) continue; Bprint(&outbuf, "*"); continue; case TARRAY: w = t->width; if(t->link && t->link->width) w /= t->link->width; Bprint(&outbuf, "[%d]", w); continue; } break; } if(t == nil) { Bprint(&outbuf, "bad // should not happen"); return; } switch(t->etype) { case TINT: Bprint(&outbuf, "int32"); break; case TUINT: Bprint(&outbuf, "uint32"); break; case TCHAR: Bprint(&outbuf, "int8"); break; case TUCHAR: Bprint(&outbuf, "uint8"); break; case TSHORT: Bprint(&outbuf, "int16"); break; case TUSHORT: Bprint(&outbuf, "uint16"); break; case TLONG: Bprint(&outbuf, "int32"); break; case TULONG: Bprint(&outbuf, "uint32"); break; case TVLONG: Bprint(&outbuf, "int64"); break; case TUVLONG: Bprint(&outbuf, "uint64"); break; case TFLOAT: Bprint(&outbuf, "float32"); break; case TDOUBLE: Bprint(&outbuf, "float64"); break; case TUNION: case TSTRUCT: s = findsue(t->link); n = "bad"; if(s != S) n = s->name; else if(t->tag) n = t->tag->name; if(strcmp(n, "String") == 0){ Bprint(&outbuf, "string"); } else if(strcmp(n, "Slice") == 0){ Bprint(&outbuf, "[]byte"); } else Bprint(&outbuf, "%U", n); break; case TFUNC: Bprint(&outbuf, "func("); for(t1 = t->down; t1 != T; t1 = t1->down) { if(t1->etype == TVOID) break; if(t1 != t->down) Bprint(&outbuf, ", "); printtypename(t1); } Bprint(&outbuf, ")"); if(t->link && t->link->etype != TVOID) { Bprint(&outbuf, " "); printtypename(t->link); } break; case TDOT: Bprint(&outbuf, "...interface{}"); break; default: Bprint(&outbuf, " weird<%T>", t); } } static int dontrun(void) { Io *i; int n; if(!debug['q'] && !debug['Q']) return 1; if(debug['q'] + debug['Q'] > 1) { n = 0; for(i=iostack; i; i=i->link) n++; if(n > 1) return 1; } upper = debug['Q']; return 0; } void godeftype(Type *t) { Sym *s; Type *l; int gotone; if(dontrun()) return; switch(t->etype) { case TUNION: case TSTRUCT: s = findsue(t->link); if(s == S) { Bprint(&outbuf, "/* can't find %T */\n\n", t); return; } gotone = 0; // for unions, take first member of size equal to union Bprint(&outbuf, "type %U struct {\n", s->name); for(l = t->link; l != T; l = l->down) { Bprint(&outbuf, "\t"); if(t->etype == TUNION) { if(!gotone && l->width == t->width) gotone = 1; else Bprint(&outbuf, "// (union)\t"); } if(l->sym != nil) // not anonymous field Bprint(&outbuf, "%U\t", l->sym->name); printtypename(l); Bprint(&outbuf, "\n"); } Bprint(&outbuf, "}\n\n"); break; default: Bprint(&outbuf, "/* %T */\n\n", t); break; } } void godefvar(Sym *s) { Type *t, *t1; char n; if(dontrun()) return; t = s->type; if(t == nil) return; switch(t->etype) { case TENUM: if(!typefd[t->etype]) Bprint(&outbuf, "const %U = %lld\n", s->name, s->vconst); else Bprint(&outbuf, "const %U = %f\n;", s->name, s->fconst); break; case TFUNC: Bprint(&outbuf, "func %U(", s->name); n = 'a'; for(t1 = t->down; t1 != T; t1 = t1->down) { if(t1->etype == TVOID) break; if(t1 != t->down) Bprint(&outbuf, ", "); Bprint(&outbuf, "%c ", n++); printtypename(t1); } Bprint(&outbuf, ")"); if(t->link && t->link->etype != TVOID) { Bprint(&outbuf, " "); printtypename(t->link); } Bprint(&outbuf, "\n"); break; default: switch(s->class) { case CTYPEDEF: if(!typesu[t->etype]) { Bprint(&outbuf, "// type %U\t", s->name); printtypename(t); Bprint(&outbuf, "\n"); } break; case CSTATIC: case CEXTERN: case CGLOBL: if(strchr(s->name, '$') != nil) // TODO(lvd) break; Bprint(&outbuf, "var %U\t", s->name); printtypename(t); Bprint(&outbuf, "\n"); break; } break; } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/lex.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000066734�12412656737�014372� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/lex.c // http://code.google.com/p/inferno-os/source/browse/utils/cc/lex.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "cc.h" #include "y.tab.h" #ifndef CPP #define CPP "cpp" #endif int systemtype(int sys) { #ifdef _WIN32 return sys&Windows; #else return sys&Plan9; #endif } int pathchar(void) { return '/'; } /* * known debug flags * -a acid declaration output * -A !B * -B non ANSI * -d print declarations * -D name define * -F format specification check * -G print pgen stuff * -g print cgen trees * -i print initialization * -I path include * -l generate little-endian code * -L print every NAME symbol * -M constant multiplication * -m print add/sub/mul trees * -n print acid or godefs to file (%.c=%.acid) (with -a or -aa) * -o file output file * -p use standard cpp ANSI preprocessor (not on windows) * -p something with peepholes * -q print equivalent Go code for variables and types (lower-case identifiers) * -Q print equivalent Go code for variables and types (upper-case identifiers) * -r print registerization * -s print structure offsets (with -a or -aa) * -S print assembly * -t print type trees * -V enable void* conversion warnings * -v verbose printing * -w print warnings * -X abort on error * -. Inhibit search for includes in source directory */ void usage(void) { print("usage: %cc [options] file.c...\n", thechar); flagprint(1); errorexit(); } void dospim(void) { thechar = '0'; thestring = "spim"; } char **defs; int ndef; void dodef(char *p) { if(ndef%8 == 0) defs = allocn(defs, ndef*sizeof(char *), 8*sizeof(char *)); defs[ndef++] = p; dodefine(p); } void main(int argc, char *argv[]) { int c; char *p; // Allow GOARCH=thestring or GOARCH=thestringsuffix, // but not other values. p = getgoarch(); if(strncmp(p, thestring, strlen(thestring)) != 0) sysfatal("cannot use %cc with GOARCH=%s", thechar, p); if(strcmp(p, "amd64p32") == 0) // must be before cinit ewidth[TIND] = 4; nacl = strcmp(getgoos(), "nacl") == 0; if(nacl) flag_largemodel = 1; quotefmtinstall(); // before cinit, which overrides %Q linkarchinit(); ctxt = linknew(thelinkarch); ctxt->diag = yyerror; ctxt->bso = &bstdout; Binit(&bstdout, 1, OWRITE); ensuresymb(NSYMB); memset(debug, 0, sizeof(debug)); tinit(); cinit(); ginit(); arginit(); fmtstrinit(&pragcgobuf); tufield = simplet((1L<etype) | BUNSIGNED); ndef = 0; defs = nil; outfile = 0; setinclude("."); flagcount("+", "pass -+ to preprocessor", &debug['+']); flagcount(".", "pass -. to preprocessor", &debug['.']); flagcount("<", "debug shift", &debug['<']); flagcount("A", "debug alignment", &debug['A']); flagcount("B", "allow pre-ANSI code", &debug['B']); if(thechar == '5') flagcount("C", "debug constant propagation", &debug['C']); flagfn1("D", "name[=value]: add #define", dodef); flagcount("F", "enable print format checks", &debug['F']); if(thechar == '5') flagcount("H", "debug shift propagation", &debug['H']); flagfn1("I", "dir: add dir to include path", setinclude); flagcount("L", "debug lexer", &debug['L']); flagcount("M", "debug move generation", &debug['M']); flagcount("N", "disable optimizations", &debug['N']); flagcount("P", "debug peephole optimizer", &debug['P']); flagcount("Q", "print exported Go definitions", &debug['Q']); flagcount("R", "debug register optimizer", &debug['R']); flagcount("S", "print assembly", &debug['S']); flagcount("T", "enable type signatures", &debug['T']); flagcount("V", "enable pointer type checks", &debug['V']); flagcount("W", "debug switch generation", &debug['W']); flagcount("X", "abort on error", &debug['X']); flagcount("Y", "debug index generation", &debug['Y']); flagcount("Z", "skip code generation", &debug['Z']); flagcount("a", "print acid definitions", &debug['a']); flagcount("c", "debug constant evaluation", &debug['c']); flagcount("d", "debug declarations", &debug['d']); flagcount("e", "debug macro expansion", &debug['e']); flagcount("f", "debug pragmas", &debug['f']); flagcount("g", "debug code generation", &debug['g']); flagcount("i", "debug initialization", &debug['i']); if(thechar == 'v') flagfn0("l", "little-endian mips mode", dospim); flagcount("m", "debug multiplication", &debug['m']); flagcount("n", "print acid/Go to file, not stdout", &debug['n']); flagstr("o", "file: set output file", &outfile); flagcount("p", "invoke C preprocessor", &debug['p']); flagcount("q", "print Go definitions", &debug['q']); flagcount("s", "print #define assembly offsets", &debug['s']); flagcount("t", "debug code generation", &debug['t']); flagstr("trimpath", "prefix: remove prefix from recorded source file paths", &ctxt->trimpath); flagcount("w", "enable warnings", &debug['w']); flagcount("v", "increase debug verbosity", &debug['v']); if(thechar == '6') flagcount("largemodel", "generate code that assumes a large memory model", &flag_largemodel); flagparse(&argc, &argv, usage); ctxt->debugasm = debug['S']; if(argc < 1 && outfile == 0) usage(); if(argc > 1){ print("can't compile multiple files\n"); errorexit(); } if(argc == 0) c = compile("stdin", defs, ndef); else c = compile(argv[0], defs, ndef); Bflush(&bstdout); if(c) errorexit(); exits(0); } int compile(char *file, char **defs, int ndef) { char *ofile; char *p, **av, opt[256]; int i, c, fd[2]; static int first = 1; ofile = alloc(strlen(file)+10); strcpy(ofile, file); p = utfrrune(ofile, pathchar()); if(p) { *p++ = 0; if(!debug['.']) include[0] = strdup(ofile); } else p = ofile; if(outfile == 0) { outfile = p; if(outfile) { if(p = utfrrune(outfile, '.')) if(p[1] == 'c' && p[2] == 0) p[0] = 0; p = utfrune(outfile, 0); if(debug['a'] && debug['n']) strcat(p, ".acid"); else if((debug['q'] || debug['Q']) && debug['n']) strcat(p, ".go"); else { p[0] = '.'; p[1] = thechar; p[2] = 0; } } else outfile = "/dev/null"; } if (first) Binit(&diagbuf, 1, OWRITE); /* * if we're writing acid to standard output, don't keep scratching * outbuf. */ if((debug['a'] || debug['q'] || debug['Q']) && !debug['n']) { if (first) { outfile = 0; Binit(&outbuf, dup(1, -1), OWRITE); dup(2, 1); } } else { c = create(outfile, OWRITE, 0664); if(c < 0) { diag(Z, "cannot open %s - %r", outfile); outfile = 0; errorexit(); } Binit(&outbuf, c, OWRITE); outfile = strdup(outfile); } newio(); first = 0; /* Use an ANSI preprocessor */ if(debug['p']) { if(systemtype(Windows)) { diag(Z, "-p option not supported on windows"); errorexit(); } if(access(file, AREAD) < 0) { diag(Z, "%s does not exist", file); errorexit(); } if(pipe(fd) < 0) { diag(Z, "pipe failed"); errorexit(); } switch(fork()) { case -1: diag(Z, "fork failed"); errorexit(); case 0: close(fd[0]); dup(fd[1], 1); close(fd[1]); av = alloc((ndef+ninclude+5)*sizeof(char *)); av[0] = CPP; i = 1; if(debug['.']){ sprint(opt, "-."); av[i++] = strdup(opt); } if(debug['+']) { sprint(opt, "-+"); av[i++] = strdup(opt); } for(c = 0; c < ndef; c++) av[i++] = smprint("-D%s", defs[c]); for(c = 0; c < ninclude; c++) av[i++] = smprint("-I%s", include[c]); if(strcmp(file, "stdin") != 0) av[i++] = file; av[i] = 0; if(debug['p'] > 1) { for(c = 0; c < i; c++) fprint(2, "%s ", av[c]); fprint(2, "\n"); } exec(av[0], av); fprint(2, "can't exec C preprocessor %s: %r\n", CPP); errorexit(); default: close(fd[1]); newfile(file, fd[0]); break; } } else { if(strcmp(file, "stdin") == 0) newfile(file, 0); else newfile(file, -1); } yyparse(); if(!debug['a'] && !debug['q'] && !debug['Q']) gclean(); return nerrors; } void errorexit(void) { Bflush(&bstdout); if(outfile) remove(outfile); exits("error"); } void pushio(void) { Io *i; i = iostack; if(i == I) { yyerror("botch in pushio"); errorexit(); } i->p = fi.p; i->c = fi.c; } void newio(void) { Io *i; static int pushdepth = 0; i = iofree; if(i == I) { pushdepth++; if(pushdepth > 1000) { yyerror("macro/io expansion too deep"); errorexit(); } i = alloc(sizeof(*i)); } else iofree = i->link; i->c = 0; i->f = -1; ionext = i; } void newfile(char *s, int f) { Io *i; if(debug['e']) print("%L: %s\n", lineno, s); i = ionext; i->link = iostack; iostack = i; i->f = f; if(f < 0) i->f = open(s, 0); if(i->f < 0) { yyerror("%cc: %r: %s", thechar, s); errorexit(); } fi.c = 0; linklinehist(ctxt, lineno, s, 0); } Sym* slookup(char *s) { ensuresymb(strlen(s)); strcpy(symb, s); return lookup(); } Sym* lookup(void) { Sym *s; uint32 h; char *p; int c, n; char *r, *w; if((uchar)symb[0] == 0xc2 && (uchar)symb[1] == 0xb7) { // turn leading · into ""· h = strlen(symb); ensuresymb(h+2); memmove(symb+2, symb, h+1); symb[0] = '"'; symb[1] = '"'; } for(r=w=symb; *r; r++) { // turn · (U+00B7) into . // turn ∕ (U+2215) into / if((uchar)*r == 0xc2 && (uchar)*(r+1) == 0xb7) { *w++ = '.'; r++; }else if((uchar)*r == 0xe2 && (uchar)*(r+1) == 0x88 && (uchar)*(r+2) == 0x95) { *w++ = '/'; r++; r++; }else *w++ = *r; } *w = '\0'; h = 0; for(p=symb; *p;) { h = h * 3; h += *p++; } n = (p - symb) + 1; h &= 0xffffff; h %= NHASH; c = symb[0]; for(s = hash[h]; s != S; s = s->link) { if(s->name[0] != c) continue; if(strcmp(s->name, symb) == 0) return s; } s = alloc(sizeof(*s)); s->name = alloc(n); memmove(s->name, symb, n); s->link = hash[h]; hash[h] = s; syminit(s); return s; } void syminit(Sym *s) { s->lexical = LNAME; s->block = 0; s->offset = 0; s->type = T; s->suetag = T; s->class = CXXX; s->aused = 0; s->sig = SIGNONE; } #define EOF (-1) #define IGN (-2) #define ESC (1<<20) #define GETC() ((--fi.c < 0)? filbuf(): (*fi.p++ & 0xff)) enum { Numdec = 1<<0, Numlong = 1<<1, Numuns = 1<<2, Numvlong = 1<<3, Numflt = 1<<4, }; int32 yylex(void) { vlong vv; int32 c, c1, t; char *cp; Rune rune; Sym *s; if(peekc != IGN) { c = peekc; peekc = IGN; goto l1; } l0: c = GETC(); l1: if(c >= Runeself) { /* * extension -- * all multibyte runes are alpha */ cp = symb; goto talph; } if(isspace(c)) { if(c == '\n') lineno++; goto l0; } if(isalpha(c)) { cp = symb; if(c != 'L') goto talph; *cp++ = c; c = GETC(); if(c == '\'') { /* L'x' */ c = escchar('\'', 1, 0); if(c == EOF) c = '\''; c1 = escchar('\'', 1, 0); if(c1 != EOF) { yyerror("missing '"); peekc = c1; } yylval.vval = convvtox(c, TRUNE); return LUCONST; } if(c == '"') { goto caselq; } goto talph; } if(isdigit(c)) goto tnum; switch(c) { case EOF: peekc = EOF; return -1; case '_': cp = symb; goto talph; case '#': domacro(); goto l0; case '.': c1 = GETC(); if(isdigit(c1)) { cp = symb; *cp++ = c; c = c1; c1 = 0; goto casedot; } break; case '"': strcpy(symb, "\"\""); cp = alloc(0); c1 = 0; /* "..." */ for(;;) { c = escchar('"', 0, 1); if(c == EOF) break; if(c & ESC) { cp = allocn(cp, c1, 1); cp[c1++] = c; } else { rune = c; c = runelen(rune); cp = allocn(cp, c1, c); runetochar(cp+c1, &rune); c1 += c; } } yylval.sval.l = c1; do { cp = allocn(cp, c1, 1); cp[c1++] = 0; } while(c1 & MAXALIGN); yylval.sval.s = cp; return LSTRING; caselq: /* L"..." */ strcpy(symb, "\"L\""); cp = alloc(0); c1 = 0; for(;;) { c = escchar('"', 1, 0); if(c == EOF) break; cp = allocn(cp, c1, sizeof(TRune)); *(TRune*)(cp + c1) = c; c1 += sizeof(TRune); } yylval.sval.l = c1; do { cp = allocn(cp, c1, sizeof(TRune)); *(TRune*)(cp + c1) = 0; c1 += sizeof(TRune); } while(c1 & MAXALIGN); yylval.sval.s = cp; return LLSTRING; case '\'': /* '.' */ c = escchar('\'', 0, 0); if(c == EOF) c = '\''; c1 = escchar('\'', 0, 0); if(c1 != EOF) { yyerror("missing '"); peekc = c1; } vv = c; yylval.vval = convvtox(vv, TUCHAR); if(yylval.vval != vv) yyerror("overflow in character constant: 0x%x", c); else if(c & 0x80){ nearln = lineno; warn(Z, "sign-extended character constant"); } yylval.vval = convvtox(vv, TCHAR); return LCONST; case '/': c1 = GETC(); if(c1 == '*') { for(;;) { c = getr(); while(c == '*') { c = getr(); if(c == '/') goto l0; } if(c == EOF) { yyerror("eof in comment"); errorexit(); } } } if(c1 == '/') { for(;;) { c = getr(); if(c == '\n') goto l0; if(c == EOF) { yyerror("eof in comment"); errorexit(); } } } if(c1 == '=') return LDVE; break; case '*': c1 = GETC(); if(c1 == '=') return LMLE; break; case '%': c1 = GETC(); if(c1 == '=') return LMDE; break; case '+': c1 = GETC(); if(c1 == '+') return LPP; if(c1 == '=') return LPE; break; case '-': c1 = GETC(); if(c1 == '-') return LMM; if(c1 == '=') return LME; if(c1 == '>') return LMG; break; case '>': c1 = GETC(); if(c1 == '>') { c = LRSH; c1 = GETC(); if(c1 == '=') return LRSHE; break; } if(c1 == '=') return LGE; break; case '<': c1 = GETC(); if(c1 == '<') { c = LLSH; c1 = GETC(); if(c1 == '=') return LLSHE; break; } if(c1 == '=') return LLE; break; case '=': c1 = GETC(); if(c1 == '=') return LEQ; break; case '!': c1 = GETC(); if(c1 == '=') return LNE; break; case '&': c1 = GETC(); if(c1 == '&') return LANDAND; if(c1 == '=') return LANDE; break; case '|': c1 = GETC(); if(c1 == '|') return LOROR; if(c1 == '=') return LORE; break; case '^': c1 = GETC(); if(c1 == '=') return LXORE; break; default: return c; } peekc = c1; return c; talph: /* * cp is set to symb and some * prefix has been stored */ for(;;) { if(c >= Runeself) { for(c1=0;;) { cp[c1++] = c; if(fullrune(cp, c1)) break; c = GETC(); } cp += c1; c = GETC(); continue; } if(!isalnum(c) && c != '_') break; *cp++ = c; c = GETC(); } *cp = 0; if(debug['L']) print("%L: %s\n", lineno, symb); peekc = c; s = lookup(); if(s->macro) { newio(); cp = ionext->b; macexpand(s, cp); pushio(); ionext->link = iostack; iostack = ionext; fi.p = cp; fi.c = strlen(cp); if(peekc != IGN) { cp[fi.c++] = peekc; cp[fi.c] = 0; peekc = IGN; } goto l0; } yylval.sym = s; if(s->class == CTYPEDEF || s->class == CTYPESTR) return LTYPE; return s->lexical; tnum: c1 = 0; cp = symb; if(c != '0') { c1 |= Numdec; for(;;) { *cp++ = c; c = GETC(); if(isdigit(c)) continue; goto dc; } } *cp++ = c; c = GETC(); if(c == 'x' || c == 'X') for(;;) { *cp++ = c; c = GETC(); if(isdigit(c)) continue; if(c >= 'a' && c <= 'f') continue; if(c >= 'A' && c <= 'F') continue; if(cp == symb+2) yyerror("malformed hex constant"); goto ncu; } if(c < '0' || c > '7') goto dc; for(;;) { if(c >= '0' && c <= '7') { *cp++ = c; c = GETC(); continue; } goto ncu; } dc: if(c == '.') goto casedot; if(c == 'e' || c == 'E') goto casee; ncu: if((c == 'U' || c == 'u') && !(c1 & Numuns)) { c = GETC(); c1 |= Numuns; goto ncu; } if((c == 'L' || c == 'l') && !(c1 & Numvlong)) { c = GETC(); if(c1 & Numlong) c1 |= Numvlong; c1 |= Numlong; goto ncu; } *cp = 0; peekc = c; if(mpatov(symb, &yylval.vval)) yyerror("overflow in constant"); vv = yylval.vval; if(c1 & Numvlong) { if((c1 & Numuns) || convvtox(vv, TVLONG) < 0) { c = LUVLCONST; t = TUVLONG; goto nret; } c = LVLCONST; t = TVLONG; goto nret; } if(c1 & Numlong) { if((c1 & Numuns) || convvtox(vv, TLONG) < 0) { c = LULCONST; t = TULONG; goto nret; } c = LLCONST; t = TLONG; goto nret; } if((c1 & Numuns) || convvtox(vv, TINT) < 0) { c = LUCONST; t = TUINT; goto nret; } c = LCONST; t = TINT; goto nret; nret: yylval.vval = convvtox(vv, t); if(yylval.vval != vv){ nearln = lineno; warn(Z, "truncated constant: %T %s", types[t], symb); } return c; casedot: for(;;) { *cp++ = c; c = GETC(); if(!isdigit(c)) break; } if(c != 'e' && c != 'E') goto caseout; casee: *cp++ = 'e'; c = GETC(); if(c == '+' || c == '-') { *cp++ = c; c = GETC(); } if(!isdigit(c)) yyerror("malformed fp constant exponent"); while(isdigit(c)) { *cp++ = c; c = GETC(); } caseout: if(c == 'L' || c == 'l') { c = GETC(); c1 |= Numlong; } else if(c == 'F' || c == 'f') { c = GETC(); c1 |= Numflt; } *cp = 0; peekc = c; yylval.dval = strtod(symb, nil); if(isInf(yylval.dval, 1) || isInf(yylval.dval, -1)) { yyerror("overflow in float constant"); yylval.dval = 0; } if(c1 & Numflt) return LFCONST; return LDCONST; } /* * convert a string, s, to vlong in *v * return conversion overflow. * required syntax is [0[x]]d* */ int mpatov(char *s, vlong *v) { vlong n, nn; int c; n = 0; c = *s; if(c == '0') goto oct; while(c = *s++) { if(c >= '0' && c <= '9') nn = n*10 + c-'0'; else goto bad; if(n < 0 && nn >= 0) goto bad; n = nn; } goto out; oct: s++; c = *s; if(c == 'x' || c == 'X') goto hex; while(c = *s++) { if(c >= '0' || c <= '7') nn = n*8 + c-'0'; else goto bad; if(n < 0 && nn >= 0) goto bad; n = nn; } goto out; hex: s++; while(c = *s++) { if(c >= '0' && c <= '9') c += 0-'0'; else if(c >= 'a' && c <= 'f') c += 10-'a'; else if(c >= 'A' && c <= 'F') c += 10-'A'; else goto bad; nn = (uvlong)n*16 + c; if(n < 0 && nn >= 0) goto bad; n = nn; } out: *v = n; return 0; bad: *v = ~0; return 1; } int getc(void) { int c; if(peekc != IGN) { c = peekc; peekc = IGN; } else c = GETC(); if(c == '\n') lineno++; if(c == EOF) { yyerror("End of file"); errorexit(); } return c; } int32 getr(void) { int c, i; char str[UTFmax+1]; Rune rune; c = getc(); if(c < Runeself) return c; i = 0; str[i++] = c; loop: c = getc(); str[i++] = c; if(!fullrune(str, i)) goto loop; c = chartorune(&rune, str); if(rune == Runeerror && c == 1) { nearln = lineno; diag(Z, "illegal rune in string"); for(c=0; c= Runeself || !isspace(c)) return c; if(c == '\n') { lineno++; return c; } c = GETC(); } } void unget(int c) { peekc = c; if(c == '\n') lineno--; } int32 escchar(int32 e, int longflg, int escflg) { int32 c, l; int i; loop: c = getr(); if(c == '\n') { yyerror("newline in string"); return EOF; } if(c != '\\') { if(c == e) c = EOF; return c; } c = getr(); if(c == 'x') { /* * note this is not ansi, * supposed to only accept 2 hex */ i = 2; if(longflg) i = 6; l = 0; for(; i>0; i--) { c = getc(); if(c >= '0' && c <= '9') { l = l*16 + c-'0'; continue; } if(c >= 'a' && c <= 'f') { l = l*16 + c-'a' + 10; continue; } if(c >= 'A' && c <= 'F') { l = l*16 + c-'A' + 10; continue; } unget(c); break; } if(escflg) l |= ESC; return l; } if(c >= '0' && c <= '7') { /* * note this is not ansi, * supposed to only accept 3 oct */ i = 2; if(longflg) i = 8; l = c - '0'; for(; i>0; i--) { c = getc(); if(c >= '0' && c <= '7') { l = l*8 + c-'0'; continue; } unget(c); } if(escflg) l |= ESC; return l; } switch(c) { case '\n': goto loop; case 'n': return '\n'; case 't': return '\t'; case 'b': return '\b'; case 'r': return '\r'; case 'f': return '\f'; case 'a': return '\a'; case 'v': return '\v'; } return c; } struct { char *name; ushort lexical; ushort type; } itab[] = { "auto", LAUTO, 0, "break", LBREAK, 0, "case", LCASE, 0, "char", LCHAR, TCHAR, "const", LCONSTNT, 0, "continue", LCONTINUE, 0, "default", LDEFAULT, 0, "do", LDO, 0, "double", LDOUBLE, TDOUBLE, "else", LELSE, 0, "enum", LENUM, 0, "extern", LEXTERN, 0, "float", LFLOAT, TFLOAT, "for", LFOR, 0, "goto", LGOTO, 0, "if", LIF, 0, "inline", LINLINE, 0, "int", LINT, TINT, "long", LLONG, TLONG, "PREFETCH", LPREFETCH, 0, "register", LREGISTER, 0, "restrict", LRESTRICT, 0, "return", LRETURN, 0, "SET", LSET, 0, "short", LSHORT, TSHORT, "signed", LSIGNED, 0, "signof", LSIGNOF, 0, "sizeof", LSIZEOF, 0, "static", LSTATIC, 0, "struct", LSTRUCT, 0, "switch", LSWITCH, 0, "typedef", LTYPEDEF, 0, "typestr", LTYPESTR, 0, "union", LUNION, 0, "unsigned", LUNSIGNED, 0, "USED", LUSED, 0, "void", LVOID, TVOID, "volatile", LVOLATILE, 0, "while", LWHILE, 0, 0 }; void cinit(void) { Sym *s; int i; Type *t; nerrors = 0; lineno = 1; iostack = I; iofree = I; peekc = IGN; nhunk = 0; types[TXXX] = T; types[TCHAR] = typ(TCHAR, T); types[TUCHAR] = typ(TUCHAR, T); types[TSHORT] = typ(TSHORT, T); types[TUSHORT] = typ(TUSHORT, T); types[TINT] = typ(TINT, T); types[TUINT] = typ(TUINT, T); types[TLONG] = typ(TLONG, T); types[TULONG] = typ(TULONG, T); types[TVLONG] = typ(TVLONG, T); types[TUVLONG] = typ(TUVLONG, T); types[TFLOAT] = typ(TFLOAT, T); types[TDOUBLE] = typ(TDOUBLE, T); types[TVOID] = typ(TVOID, T); types[TENUM] = typ(TENUM, T); types[TFUNC] = typ(TFUNC, types[TINT]); types[TIND] = typ(TIND, types[TVOID]); for(i=0; ilexical = itab[i].lexical; if(itab[i].type != 0) s->type = types[itab[i].type]; } blockno = 0; autobn = 0; autoffset = 0; t = typ(TARRAY, types[TCHAR]); t->width = 0; symstring = slookup(".string"); symstring->class = CSTATIC; symstring->type = t; t = typ(TARRAY, types[TCHAR]); t->width = 0; nodproto = new(OPROTO, Z, Z); dclstack = D; fmtinstall('O', Oconv); fmtinstall('T', Tconv); fmtinstall('F', FNconv); fmtinstall('L', Lconv); fmtinstall('Q', Qconv); fmtinstall('|', VBconv); fmtinstall('U', Uconv); fmtinstall('B', Bconv); } int filbuf(void) { Io *i; loop: i = iostack; if(i == I) return EOF; if(i->f < 0) goto pop; fi.c = read(i->f, i->b, BUFSIZ) - 1; if(fi.c < 0) { close(i->f); linklinehist(ctxt, lineno, nil, 0); goto pop; } fi.p = i->b + 1; return i->b[0] & 0xff; pop: iostack = i->link; i->link = iofree; iofree = i; i = iostack; if(i == I) return EOF; fi.p = i->p; fi.c = i->c; if(--fi.c < 0) goto loop; return *fi.p++ & 0xff; } int Oconv(Fmt *fp) { int a; a = va_arg(fp->args, int); if(a < OXXX || a > OEND) return fmtprint(fp, "***badO %d***", a); return fmtstrcpy(fp, onames[a]); } int Lconv(Fmt *fp) { return linklinefmt(ctxt, fp); } int Tconv(Fmt *fp) { char str[STRINGSZ+20], s[STRINGSZ+20]; Type *t, *t1; int et; int32 n; str[0] = 0; for(t = va_arg(fp->args, Type*); t != T; t = t->link) { et = t->etype; if(str[0]) strcat(str, " "); if(t->garb&~GINCOMPLETE) { sprint(s, "%s ", gnames[t->garb&~GINCOMPLETE]); if(strlen(str) + strlen(s) < STRINGSZ) strcat(str, s); } sprint(s, "%s", tnames[et]); if(strlen(str) + strlen(s) < STRINGSZ) strcat(str, s); if(et == TFUNC && (t1 = t->down)) { sprint(s, "(%T", t1); if(strlen(str) + strlen(s) < STRINGSZ) strcat(str, s); while(t1 = t1->down) { sprint(s, ", %T", t1); if(strlen(str) + strlen(s) < STRINGSZ) strcat(str, s); } if(strlen(str) + strlen(s) < STRINGSZ) strcat(str, ")"); } if(et == TARRAY) { n = t->width; if(t->link && t->link->width) n /= t->link->width; sprint(s, "[%d]", n); if(strlen(str) + strlen(s) < STRINGSZ) strcat(str, s); } if(t->nbits) { sprint(s, " %d:%d", t->shift, t->nbits); if(strlen(str) + strlen(s) < STRINGSZ) strcat(str, s); } if(typesu[et]) { if(t->tag) { strcat(str, " "); if(strlen(str) + strlen(t->tag->name) < STRINGSZ) strcat(str, t->tag->name); } else strcat(str, " {}"); break; } } return fmtstrcpy(fp, str); } int FNconv(Fmt *fp) { char *str; Node *n; n = va_arg(fp->args, Node*); str = ""; if(n != Z && (n->op == ONAME || n->op == ODOT || n->op == OELEM)) str = n->sym->name; return fmtstrcpy(fp, str); } int Qconv(Fmt *fp) { char str[STRINGSZ+20], *s; int32 b; int i; str[0] = 0; for(b = va_arg(fp->args, int32); b;) { i = bitno(b); if(str[0]) strcat(str, " "); s = qnames[i]; if(strlen(str) + strlen(s) >= STRINGSZ) break; strcat(str, s); b &= ~(1L << i); } return fmtstrcpy(fp, str); } int VBconv(Fmt *fp) { char str[STRINGSZ]; int i, n, t, pc; n = va_arg(fp->args, int); pc = 0; /* BUG: was printcol */ i = 0; while(pc < n) { t = (pc+4) & ~3; if(t <= n) { str[i++] = '\t'; pc = t; continue; } str[i++] = ' '; pc++; } str[i] = 0; return fmtstrcpy(fp, str); } int Bconv(Fmt *fp) { char str[STRINGSZ], ss[STRINGSZ], *s; Bits bits; int i; str[0] = 0; bits = va_arg(fp->args, Bits); while(bany(&bits)) { i = bnum(bits); if(str[0]) strcat(str, " "); if(var[i].sym == nil) { sprint(ss, "$%lld", var[i].offset); s = ss; } else s = var[i].sym->name; if(strlen(str) + strlen(s) + 1 >= STRINGSZ) break; strcat(str, s); bits.b[i/32] &= ~(1L << (i%32)); } return fmtstrcpy(fp, str); } void setinclude(char *p) { int i; if(*p != 0) { for(i=1; i < ninclude; i++) if(strcmp(p, include[i]) == 0) return; if(ninclude%8 == 0) include = allocn(include, ninclude*sizeof(char *), 8*sizeof(char *)); include[ninclude++] = p; } } void* alloc(int32 n) { void *p; p = malloc(n); if(p == nil) { print("alloc out of mem\n"); exits("alloc: out of mem"); } memset(p, 0, n); return p; } void* allocn(void *p, int32 n, int32 d) { if(p == nil) return alloc(n+d); p = realloc(p, n+d); if(p == nil) { print("allocn out of mem\n"); exits("allocn: out of mem"); } if(d > 0) memset((char*)p+n, 0, d); return p; } void ensuresymb(int32 n) { if(symb == nil) { symb = alloc(NSYMB+1); nsymb = NSYMB; } if(n > nsymb) { symb = allocn(symb, nsymb, n+1-nsymb); nsymb = n; } } ������������������������������������go/src/cmd/cc/lexbody�������������������������������������������������������������������������������0100644�0000000�0000000�00000025075�12412656734�015015� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/lexbody // http://code.google.com/p/inferno-os/source/browse/utils/cc/lexbody // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. /* * common code for all the assemblers */ void pragpack(void) { while(getnsc() != '\n') ; } void pragvararg(void) { while(getnsc() != '\n') ; } void pragcgo(char *name) { USED(name); while(getnsc() != '\n') ; } void pragfpround(void) { while(getnsc() != '\n') ; } void pragtextflag(void) { while(getnsc() != '\n') ; } void pragdataflag(void) { while(getnsc() != '\n') ; } void pragprofile(void) { while(getnsc() != '\n') ; } void pragincomplete(void) { while(getnsc() != '\n') ; } void* alloc(int32 n) { void *p; p = malloc(n); if(p == nil) { print("alloc out of mem\n"); exits("alloc: out of mem"); } memset(p, 0, n); return p; } void* allocn(void *p, int32 n, int32 d) { if(p == nil) return alloc(n+d); p = realloc(p, n+d); if(p == nil) { print("allocn out of mem\n"); exits("allocn: out of mem"); } if(d > 0) memset((char*)p+n, 0, d); return p; } void ensuresymb(int32 n) { if(symb == nil) { symb = alloc(NSYMB+1); nsymb = NSYMB; } if(n > nsymb) { symb = allocn(symb, nsymb, n+1-nsymb); nsymb = n; } } void setinclude(char *p) { int i; if(p == 0) return; for(i=1; i < ninclude; i++) if(strcmp(p, include[i]) == 0) return; if(ninclude%8 == 0) include = allocn(include, ninclude*sizeof(char *), 8*sizeof(char *)); include[ninclude++] = p; } void errorexit(void) { Bflush(&bstdout); if(outfile) remove(outfile); exits("error"); } void pushio(void) { Io *i; i = iostack; if(i == I) { yyerror("botch in pushio"); errorexit(); } i->p = fi.p; i->c = fi.c; } void newio(void) { Io *i; static int pushdepth = 0; i = iofree; if(i == I) { pushdepth++; if(pushdepth > 1000) { yyerror("macro/io expansion too deep"); errorexit(); } i = alloc(sizeof(*i)); } else iofree = i->link; i->c = 0; i->f = -1; ionext = i; } void newfile(char *s, int f) { Io *i; i = ionext; i->link = iostack; iostack = i; i->f = f; if(f < 0) i->f = open(s, 0); if(i->f < 0) { yyerror("%ca: %r: %s", thechar, s); errorexit(); } fi.c = 0; linklinehist(ctxt, lineno, s, 0); } Sym* slookup(char *s) { ensuresymb(strlen(s)); strcpy(symb, s); return lookup(); } Sym* lookup(void) { Sym *s; uint32 h; char *p; int c, l; char *r, *w; if((uchar)symb[0] == 0xc2 && (uchar)symb[1] == 0xb7) { // turn leading · into ""· h = strlen(symb); ensuresymb(h+2); memmove(symb+2, symb, h+1); symb[0] = '"'; symb[1] = '"'; } for(r=w=symb; *r; r++) { // turn · (U+00B7) into . // turn ∕ (U+2215) into / if((uchar)*r == 0xc2 && (uchar)*(r+1) == 0xb7) { *w++ = '.'; r++; }else if((uchar)*r == 0xe2 && (uchar)*(r+1) == 0x88 && (uchar)*(r+2) == 0x95) { *w++ = '/'; r++; r++; }else *w++ = *r; } *w = '\0'; h = 0; for(p=symb; c = *p; p++) h = h+h+h + c; l = (p - symb) + 1; h &= 0xffffff; h %= NHASH; c = symb[0]; for(s = hash[h]; s != S; s = s->link) { if(s->name[0] != c) continue; if(strcmp(s->name, symb) == 0) return s; } s = alloc(sizeof(*s)); s->name = alloc(l); memmove(s->name, symb, l); s->link = hash[h]; hash[h] = s; syminit(s); return s; } int ISALPHA(int c) { if(isalpha(c)) return 1; if(c >= Runeself) return 1; return 0; } int32 yylex(void) { int c, c1; char *cp; Sym *s; c = peekc; if(c != IGN) { peekc = IGN; goto l1; } l0: c = GETC(); l1: if(c == EOF) { peekc = EOF; return -1; } if(isspace(c)) { if(c == '\n') { lineno++; return ';'; } goto l0; } if(ISALPHA(c)) goto talph; if(isdigit(c)) goto tnum; switch(c) { case '\n': lineno++; return ';'; case '#': domacro(); goto l0; case '.': c = GETC(); if(ISALPHA(c)) { cp = symb; *cp++ = '.'; goto aloop; } if(isdigit(c)) { cp = symb; *cp++ = '.'; goto casedot; } peekc = c; return '.'; talph: case '_': case '@': cp = symb; aloop: *cp++ = c; c = GETC(); if(ISALPHA(c) || isdigit(c) || c == '_' || c == '$') goto aloop; *cp = 0; peekc = c; s = lookup(); if(s->macro) { newio(); cp = ionext->b; macexpand(s, cp); pushio(); ionext->link = iostack; iostack = ionext; fi.p = cp; fi.c = strlen(cp); if(peekc != IGN) { cp[fi.c++] = peekc; cp[fi.c] = 0; peekc = IGN; } goto l0; } if(s->type == 0) s->type = LNAME; if(s->type == LNAME || s->type == LVAR || s->type == LLAB) { yylval.sym = s; return s->type; } yylval.lval = s->value; return s->type; tnum: cp = symb; if(c != '0') goto dc; *cp++ = c; c = GETC(); c1 = 3; if(c == 'x' || c == 'X') { c1 = 4; c = GETC(); } else if(c < '0' || c > '7') goto dc; yylval.lval = 0; for(;;) { if(c >= '0' && c <= '9') { if(c > '7' && c1 == 3) break; yylval.lval = (uvlong)yylval.lval << c1; yylval.lval += c - '0'; c = GETC(); continue; } if(c1 == 3) break; if(c >= 'A' && c <= 'F') c += 'a' - 'A'; if(c >= 'a' && c <= 'f') { yylval.lval = (uvlong)yylval.lval << c1; yylval.lval += c - 'a' + 10; c = GETC(); continue; } break; } goto ncu; dc: for(;;) { if(!isdigit(c)) break; *cp++ = c; c = GETC(); } if(c == '.') goto casedot; if(c == 'e' || c == 'E') goto casee; *cp = 0; if(sizeof(yylval.lval) == sizeof(vlong)) yylval.lval = strtoll(symb, nil, 10); else yylval.lval = strtol(symb, nil, 10); ncu: while(c == 'U' || c == 'u' || c == 'l' || c == 'L') c = GETC(); peekc = c; return LCONST; casedot: for(;;) { *cp++ = c; c = GETC(); if(!isdigit(c)) break; } if(c == 'e' || c == 'E') goto casee; goto caseout; casee: *cp++ = 'e'; c = GETC(); if(c == '+' || c == '-') { *cp++ = c; c = GETC(); } while(isdigit(c)) { *cp++ = c; c = GETC(); } caseout: *cp = 0; peekc = c; if(FPCHIP) { yylval.dval = atof(symb); return LFCONST; } yyerror("assembler cannot interpret fp constants"); yylval.lval = 1L; return LCONST; case '"': memcpy(yylval.sval, nullgen.u.sval, sizeof(yylval.sval)); cp = yylval.sval; c1 = 0; for(;;) { c = escchar('"'); if(c == EOF) break; if(c1 < sizeof(yylval.sval)) *cp++ = c; c1++; } if(c1 > sizeof(yylval.sval)) yyerror("string constant too long"); return LSCONST; case '\'': c = escchar('\''); if(c == EOF) c = '\''; if(escchar('\'') != EOF) yyerror("missing '"); yylval.lval = c; return LCONST; case '/': c1 = GETC(); if(c1 == '/') { for(;;) { c = GETC(); if(c == '\n') goto l1; if(c == EOF) { yyerror("eof in comment"); errorexit(); } } } if(c1 == '*') { for(;;) { c = GETC(); while(c == '*') { c = GETC(); if(c == '/') goto l0; } if(c == EOF) { yyerror("eof in comment"); errorexit(); } if(c == '\n') lineno++; } } break; default: return c; } peekc = c1; return c; } int getc(void) { int c; c = peekc; if(c != IGN) { peekc = IGN; return c; } c = GETC(); if(c == '\n') lineno++; if(c == EOF) { yyerror("End of file"); errorexit(); } return c; } int getnsc(void) { int c; for(;;) { c = getc(); if(!isspace(c) || c == '\n') return c; } } void unget(int c) { peekc = c; if(c == '\n') lineno--; } int escchar(int e) { int c, l; loop: c = getc(); if(c == '\n') { yyerror("newline in string"); return EOF; } if(c != '\\') { if(c == e) return EOF; return c; } c = getc(); if(c >= '0' && c <= '7') { l = c - '0'; c = getc(); if(c >= '0' && c <= '7') { l = l*8 + c-'0'; c = getc(); if(c >= '0' && c <= '7') { l = l*8 + c-'0'; return l; } } peekc = c; return l; } switch(c) { case '\n': goto loop; case 'n': return '\n'; case 't': return '\t'; case 'b': return '\b'; case 'r': return '\r'; case 'f': return '\f'; case 'a': return 0x07; case 'v': return 0x0b; case 'z': return 0x00; } return c; } void pinit(char *f) { int i; Sym *s; lineno = 1; newio(); newfile(f, -1); pc = 0; peekc = IGN; sym = 1; for(i=0; ilink) s->macro = 0; } int filbuf(void) { Io *i; loop: i = iostack; if(i == I) return EOF; if(i->f < 0) goto pop; fi.c = read(i->f, i->b, BUFSIZ) - 1; if(fi.c < 0) { close(i->f); linklinehist(ctxt, lineno, 0, 0); goto pop; } fi.p = i->b + 1; return i->b[0] & 0xff; pop: iostack = i->link; i->link = iofree; iofree = i; i = iostack; if(i == I) return EOF; fi.p = i->p; fi.c = i->c; if(--fi.c < 0) goto loop; return *fi.p++ & 0xff; } void yyerror(char *a, ...) { char buf[200]; va_list arg; /* * hack to intercept message from yaccpar */ if(strcmp(a, "syntax error") == 0) { yyerror("syntax error, last name: %s", symb); return; } prfile(lineno); va_start(arg, a); vseprint(buf, buf+sizeof(buf), a, arg); va_end(arg); print("%s\n", buf); nerrors++; if(nerrors > 10) { print("too many errors\n"); errorexit(); } } void prfile(int32 l) { linkprfile(ctxt, l); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/mac.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000003344�12412656734�014323� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/mac.c // http://code.google.com/p/inferno-os/source/browse/utils/cc/mac.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "cc.h" #include "macbody" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/macbody�������������������������������������������������������������������������������0100644�0000000�0000000�00000031031�12412656734�014752� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/macbody // http://code.google.com/p/inferno-os/source/browse/utils/cc/macbody // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #define VARMAC 0x80 int32 getnsn(void) { int32 n; int c; c = getnsc(); if(c < '0' || c > '9') return -1; n = 0; while(c >= '0' && c <= '9') { n = n*10 + c-'0'; c = getc(); } unget(c); return n; } Sym* getsym(void) { int c; char *cp; c = getnsc(); if(!isalpha(c) && c != '_' && c < 0x80) { unget(c); return S; } for(cp = symb;;) { if(cp <= symb+NSYMB-4) *cp++ = c; c = getc(); if(isalnum(c) || c == '_' || c >= 0x80) continue; unget(c); break; } *cp = 0; if(cp > symb+NSYMB-4) yyerror("symbol too large: %s", symb); return lookup(); } Sym* getsymdots(int *dots) { int c; Sym *s; s = getsym(); if(s != S) return s; c = getnsc(); if(c != '.'){ unget(c); return S; } if(getc() != '.' || getc() != '.') yyerror("bad dots in macro"); *dots = 1; return slookup("__VA_ARGS__"); } int getcom(void) { int c; for(;;) { c = getnsc(); if(c != '/') break; c = getc(); if(c == '/') { while(c != '\n') c = getc(); break; } if(c != '*') break; c = getc(); for(;;) { if(c == '*') { c = getc(); if(c != '/') continue; c = getc(); break; } if(c == '\n') { yyerror("comment across newline"); break; } c = getc(); } if(c == '\n') break; } return c; } void dodefine(char *cp) { Sym *s; char *p; int32 l; ensuresymb(strlen(cp)); strcpy(symb, cp); p = strchr(symb, '='); if(p) { *p++ = 0; s = lookup(); l = strlen(p) + 2; /* +1 null, +1 nargs */ s->macro = alloc(l); strcpy(s->macro+1, p); } else { s = lookup(); s->macro = "\0001"; /* \000 is nargs */ } if(debug['m']) print("#define (-D) %s %s\n", s->name, s->macro+1); } struct { char *macname; void (*macf)(void); } mactab[] = { "ifdef", 0, /* macif(0) */ "ifndef", 0, /* macif(1) */ "else", 0, /* macif(2) */ "line", maclin, "define", macdef, "include", macinc, "undef", macund, "pragma", macprag, "endif", macend, 0 }; void domacro(void) { int i; Sym *s; s = getsym(); if(s == S) s = slookup("endif"); for(i=0; mactab[i].macname; i++) if(strcmp(s->name, mactab[i].macname) == 0) { if(mactab[i].macf) (*mactab[i].macf)(); else macif(i); return; } yyerror("unknown #: %s", s->name); macend(); } void macund(void) { Sym *s; s = getsym(); macend(); if(s == S) { yyerror("syntax in #undef"); return; } s->macro = 0; } #define NARG 25 void macdef(void) { Sym *s, *a; char *args[NARG], *np, *base; int n, i, c, len, dots; int ischr; s = getsym(); if(s == S) goto bad; if(s->macro) yyerror("macro redefined: %s", s->name); c = getc(); n = -1; dots = 0; if(c == '(') { n++; c = getnsc(); if(c != ')') { unget(c); for(;;) { a = getsymdots(&dots); if(a == S) goto bad; if(n >= NARG) { yyerror("too many arguments in #define: %s", s->name); goto bad; } args[n++] = a->name; c = getnsc(); if(c == ')') break; if(c != ',' || dots) goto bad; } } c = getc(); } if(isspace(c)) if(c != '\n') c = getnsc(); base = hunk; len = 1; ischr = 0; for(;;) { if(isalpha(c) || c == '_') { np = symb; *np++ = c; c = getc(); while(isalnum(c) || c == '_') { *np++ = c; c = getc(); } *np = 0; for(i=0; i= n) { i = strlen(symb); base = allocn(base, len, i); memcpy(base+len, symb, i); len += i; continue; } base = allocn(base, len, 2); base[len++] = '#'; base[len++] = 'a' + i; continue; } if(ischr){ if(c == '\\'){ base = allocn(base, len, 1); base[len++] = c; c = getc(); }else if(c == ischr) ischr = 0; }else{ if(c == '"' || c == '\''){ base = allocn(base, len, 1); base[len++] = c; ischr = c; c = getc(); continue; } if(c == '/') { c = getc(); if(c == '/'){ c = getc(); for(;;) { if(c == '\n') break; c = getc(); } continue; } if(c == '*'){ c = getc(); for(;;) { if(c == '*') { c = getc(); if(c != '/') continue; c = getc(); break; } if(c == '\n') { yyerror("comment and newline in define: %s", s->name); break; } c = getc(); } continue; } base = allocn(base, len, 1); base[len++] = '/'; continue; } } if(c == '\\') { c = getc(); if(c == '\n') { c = getc(); continue; } else if(c == '\r') { c = getc(); if(c == '\n') { c = getc(); continue; } } base = allocn(base, len, 1); base[len++] = '\\'; continue; } if(c == '\n') break; if(c == '#') if(n > 0) { base = allocn(base, len, 1); base[len++] = c; } base = allocn(base, len, 1); base[len++] = c; c = ((--fi.c < 0)? filbuf(): (*fi.p++ & 0xff)); if(c == '\n') lineno++; if(c == -1) { yyerror("eof in a macro: %s", s->name); break; } } do { base = allocn(base, len, 1); base[len++] = 0; } while(len & 3); *base = n+1; if(dots) *base |= VARMAC; s->macro = base; if(debug['m']) print("#define %s %s\n", s->name, s->macro+1); return; bad: if(s == S) yyerror("syntax in #define"); else yyerror("syntax in #define: %s", s->name); macend(); } void macexpand(Sym *s, char *b) { char buf[2000]; int n, l, c, nargs; char *arg[NARG], *cp, *ob, *ecp, dots; ob = b; if(*s->macro == 0) { strcpy(b, s->macro+1); if(debug['m']) print("#expand %s %s\n", s->name, ob); return; } nargs = (char)(*s->macro & ~VARMAC) - 1; dots = *s->macro & VARMAC; c = getnsc(); if(c != '(') goto bad; n = 0; c = getc(); if(c != ')') { unget(c); l = 0; cp = buf; ecp = cp + sizeof(buf)-4; arg[n++] = cp; for(;;) { if(cp >= ecp) goto toobig; c = getc(); if(c == '"') for(;;) { if(cp >= ecp) goto toobig; *cp++ = c; c = getc(); if(c == '\\') { *cp++ = c; c = getc(); continue; } if(c == '\n') goto bad; if(c == '"') break; } if(c == '\'') for(;;) { if(cp >= ecp) goto toobig; *cp++ = c; c = getc(); if(c == '\\') { *cp++ = c; c = getc(); continue; } if(c == '\n') goto bad; if(c == '\'') break; } if(c == '/') { c = getc(); switch(c) { case '*': for(;;) { c = getc(); if(c == '*') { c = getc(); if(c == '/') break; } } *cp++ = ' '; continue; case '/': while((c = getc()) != '\n') ; break; default: unget(c); c = '/'; } } if(l == 0) { if(c == ',') { if(n == nargs && dots) { *cp++ = ','; continue; } *cp++ = 0; arg[n++] = cp; if(n > nargs) break; continue; } if(c == ')') break; } if(c == '\n') c = ' '; *cp++ = c; if(c == '(') l++; if(c == ')') l--; } *cp = 0; } if(n != nargs) { yyerror("argument mismatch expanding: %s", s->name); *b = 0; return; } cp = s->macro+1; for(;;) { c = *cp++; if(c == '\n') c = ' '; if(c != '#') { *b++ = c; if(c == 0) break; continue; } c = *cp++; if(c == 0) goto bad; if(c == '#') { *b++ = c; continue; } c -= 'a'; if(c < 0 || c >= n) continue; strcpy(b, arg[c]); b += strlen(arg[c]); } *b = 0; if(debug['m']) print("#expand %s %s\n", s->name, ob); return; bad: yyerror("syntax in macro expansion: %s", s->name); *b = 0; return; toobig: yyerror("too much text in macro expansion: %s", s->name); *b = 0; } void macinc(void) { int c0, c, i, f; char str[STRINGSZ], *hp; c0 = getnsc(); if(c0 != '"') { c = c0; if(c0 != '<') goto bad; c0 = '>'; } for(hp = str;;) { c = getc(); if(c == c0) break; if(c == '\n') goto bad; *hp++ = c; } *hp = 0; c = getcom(); if(c != '\n') goto bad; f = -1; for(i=0; i') continue; ensuresymb(strlen(include[i])+strlen(str)+2); strcpy(symb, include[i]); strcat(symb, "/"); if(strcmp(symb, "./") == 0) symb[0] = 0; strcat(symb, str); f = open(symb, OREAD); if(f >= 0) break; } if(f < 0) strcpy(symb, str); c = strlen(symb) + 1; hp = alloc(c); memcpy(hp, symb, c); newio(); pushio(); newfile(hp, f); return; bad: unget(c); yyerror("syntax in #include"); macend(); } void maclin(void) { char *cp; int c; int32 n; n = getnsn(); c = getc(); if(n < 0) goto bad; for(;;) { if(c == ' ' || c == '\t') { c = getc(); continue; } if(c == '"') break; if(c == '\n') { strcpy(symb, ""); goto nn; } goto bad; } cp = symb; for(;;) { c = getc(); if(c == '"') break; *cp++ = c; } *cp = 0; c = getcom(); if(c != '\n') goto bad; nn: c = strlen(symb) + 1; cp = alloc(c); memcpy(cp, symb, c); linklinehist(ctxt, lineno, cp, n); return; bad: unget(c); yyerror("syntax in #line"); macend(); } void macif(int f) { int c, l, bol; Sym *s; if(f == 2) goto skip; s = getsym(); if(s == S) goto bad; if(getcom() != '\n') goto bad; if((s->macro != 0) ^ f) return; skip: bol = 1; l = 0; for(;;) { c = getc(); if(c != '#') { if(!isspace(c)) bol = 0; if(c == '\n') bol = 1; continue; } if(!bol) continue; s = getsym(); if(s == S) continue; if(strcmp(s->name, "endif") == 0) { if(l) { l--; continue; } macend(); return; } if(strcmp(s->name, "ifdef") == 0 || strcmp(s->name, "ifndef") == 0) { l++; continue; } if(l == 0 && f != 2 && strcmp(s->name, "else") == 0) { macend(); return; } } bad: yyerror("syntax in #if(n)def"); macend(); } void macprag(void) { Sym *s; int c0, c; char *hp; s = getsym(); if(s && strcmp(s->name, "lib") == 0) goto praglib; if(s && strcmp(s->name, "pack") == 0) { pragpack(); return; } if(s && strcmp(s->name, "fpround") == 0) { pragfpround(); return; } if(s && strcmp(s->name, "textflag") == 0) { pragtextflag(); return; } if(s && strcmp(s->name, "dataflag") == 0) { pragdataflag(); return; } if(s && strcmp(s->name, "varargck") == 0) { pragvararg(); return; } if(s && strcmp(s->name, "incomplete") == 0) { pragincomplete(); return; } if(s && (strncmp(s->name, "cgo_", 4) == 0 || strncmp(s->name, "dyn", 3) == 0)) { pragcgo(s->name); return; } while(getnsc() != '\n') ; return; praglib: c0 = getnsc(); if(c0 != '"') { c = c0; if(c0 != '<') goto bad; c0 = '>'; } for(hp = symb;;) { c = getc(); if(c == c0) break; if(c == '\n') goto bad; *hp++ = c; } *hp = 0; c = getcom(); if(c != '\n') goto bad; /* * put pragma-line in as a funny history */ c = strlen(symb) + 1; hp = alloc(c); memcpy(hp, symb, c); linklinehist(ctxt, lineno, hp, -1); return; bad: unget(c); yyerror("syntax in #pragma lib"); macend(); } void macend(void) { int c; for(;;) { c = getnsc(); if(c < 0 || c == '\n') return; } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/omachcap.c����������������������������������������������������������������������������0100644�0000000�0000000�00000003442�12412656734�015335� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/machcap.c // http://code.google.com/p/inferno-os/source/browse/utils/cc/machcap.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "cc.h" /* default, like old cc */ int machcap(Node *n) { USED(n); return 0; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/pgen.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000036476�12412656737�014533� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6c/sgen.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/sgen.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" #include "../../pkg/runtime/funcdata.h" enum { BitsPerPointer = 2 }; static void dumpgcargs(Type *fn, Sym *sym); static Sym* makefuncdatasym(char *namefmt, int64 funcdatakind) { Node nod; Sym *sym; static int32 nsym; static char namebuf[40]; snprint(namebuf, sizeof(namebuf), namefmt, nsym++); sym = slookup(namebuf); sym->class = CSTATIC; memset(&nod, 0, sizeof nod); nod.op = ONAME; nod.sym = sym; nod.class = CSTATIC; gins(AFUNCDATA, nodconst(funcdatakind), &nod); linksym(sym)->type = SRODATA; return sym; } int hasdotdotdot(void) { Type *t; for(t=thisfn->down; t!=T; t=t->down) if(t->etype == TDOT) return 1; return 0; } vlong argsize(void) { Type *t; int32 s; //print("t=%T\n", thisfn); s = align(0, thisfn->link, Aarg0, nil); for(t=thisfn->down; t!=T; t=t->down) { switch(t->etype) { case TVOID: break; case TDOT: if((textflag & NOSPLIT) == 0) yyerror("function takes ... without textflag NOSPLIT"); return ArgsSizeUnknown; default: s = align(s, t, Aarg1, nil); s = align(s, t, Aarg2, nil); break; } //print(" %d %T\n", s, t); } if(thechar == '6') s = (s+7) & ~7; else s = (s+3) & ~3; return s; } void codgen(Node *n, Node *nn) { Prog *sp; Node *n1, nod, nod1; Sym *gcargs; Sym *gclocals; int isvarargs; cursafe = 0; curarg = 0; maxargsafe = 0; /* * isolate name */ for(n1 = nn;; n1 = n1->left) { if(n1 == Z) { diag(nn, "can't find function name"); return; } if(n1->op == ONAME) break; } nearln = nn->lineno; p = gtext(n1->sym, stkoff); sp = p; /* * generate funcdata symbol for this function. * data is filled in at the end of codgen(). */ isvarargs = hasdotdotdot(); gcargs = nil; if(!isvarargs) gcargs = makefuncdatasym("gcargs·%d", FUNCDATA_ArgsPointerMaps); gclocals = makefuncdatasym("gclocals·%d", FUNCDATA_LocalsPointerMaps); /* * isolate first argument */ if(REGARG >= 0) { if(typesuv[thisfn->link->etype]) { nod1 = *nodret->left; nodreg(&nod, &nod1, REGARG); gmove(&nod, &nod1); } else if(firstarg && typechlp[firstargtype->etype]) { nod1 = *nodret->left; nod1.sym = firstarg; nod1.type = firstargtype; nod1.xoffset = align(0, firstargtype, Aarg1, nil); nod1.etype = firstargtype->etype; nodreg(&nod, &nod1, REGARG); gmove(&nod, &nod1); } } retok = 0; canreach = 1; warnreach = 1; gen(n); if(canreach && thisfn->link->etype != TVOID) diag(Z, "no return at end of function: %s", n1->sym->name); noretval(3); gbranch(ORETURN); if(!debug['N'] || debug['R'] || debug['P']) regopt(sp); if(thechar=='6' || thechar=='7') /* [sic] */ maxargsafe = xround(maxargsafe, 8); sp->to.offset += maxargsafe; if(!isvarargs) dumpgcargs(thisfn, gcargs); // TODO(rsc): "stkoff" is not right. It does not account for // the possibility of data stored in .safe variables. // Unfortunately those move up and down just like // the argument frame (and in fact dovetail with it) // so the number we need is not available or even // well-defined. Probably we need to make the safe // area its own section. // That said, we've been using stkoff for months // and nothing too terrible has happened. gextern(gclocals, nodconst(-stkoff), 0, 4); // locals gclocals->type = typ(0, T); gclocals->type->width = 4; } void supgen(Node *n) { int owarn; long spc; Prog *sp; if(n == Z) return; suppress++; owarn = warnreach; warnreach = 0; spc = pc; sp = lastp; gen(n); lastp = sp; pc = spc; sp->link = nil; suppress--; warnreach = owarn; } void gen(Node *n) { Node *l, nod; Prog *sp, *spc, *spb; Case *cn; long sbc, scc; int snbreak, sncontin; int f, o, oldreach; loop: if(n == Z) return; nearln = n->lineno; o = n->op; if(debug['G']) if(o != OLIST) print("%L %O\n", nearln, o); if(!canreach) { switch(o) { case OLABEL: case OCASE: case OLIST: case OBREAK: case OFOR: case OWHILE: case ODWHILE: /* all handled specially - see switch body below */ break; default: if(warnreach) { warn(n, "unreachable code %O", o); warnreach = 0; } } } switch(o) { default: complex(n); cgen(n, Z); break; case OLIST: gen(n->left); rloop: n = n->right; goto loop; case ORETURN: canreach = 0; warnreach = !suppress; complex(n); if(n->type == T) break; l = n->left; if(l == Z) { noretval(3); gbranch(ORETURN); break; } if(typecmplx[n->type->etype]) { sugen(l, nodret, n->type->width); noretval(3); gbranch(ORETURN); break; } regret(&nod, n); cgen(l, &nod); regfree(&nod); if(typefd[n->type->etype]) noretval(1); else noretval(2); gbranch(ORETURN); break; case OLABEL: canreach = 1; l = n->left; if(l) { l->pc = pc; if(l->label) patch(l->label, pc); } gbranch(OGOTO); /* prevent self reference in reg */ patch(p, pc); goto rloop; case OGOTO: canreach = 0; warnreach = !suppress; n = n->left; if(n == Z) return; if(n->complex == 0) { diag(Z, "label undefined: %s", n->sym->name); return; } if(suppress) return; gbranch(OGOTO); if(n->pc) { patch(p, n->pc); return; } if(n->label) patch(n->label, pc-1); n->label = p; return; case OCASE: canreach = 1; l = n->left; if(cases == C) diag(n, "case/default outside a switch"); if(l == Z) { newcase(); cases->val = 0; cases->def = 1; cases->label = pc; cases->isv = 0; goto rloop; } complex(l); if(l->type == T) goto rloop; if(l->op == OCONST) if(typeword[l->type->etype] && l->type->etype != TIND) { newcase(); cases->val = l->vconst; cases->def = 0; cases->label = pc; cases->isv = typev[l->type->etype]; goto rloop; } diag(n, "case expression must be integer constant"); goto rloop; case OSWITCH: l = n->left; complex(l); if(l->type == T) break; if(!typechlvp[l->type->etype] || l->type->etype == TIND) { diag(n, "switch expression must be integer"); break; } gbranch(OGOTO); /* entry */ sp = p; cn = cases; cases = C; newcase(); sbc = breakpc; breakpc = pc; snbreak = nbreak; nbreak = 0; gbranch(OGOTO); spb = p; gen(n->right); /* body */ if(canreach){ gbranch(OGOTO); patch(p, breakpc); nbreak++; } patch(sp, pc); doswit(l); patch(spb, pc); cases = cn; breakpc = sbc; canreach = nbreak!=0; if(canreach == 0) warnreach = !suppress; nbreak = snbreak; break; case OWHILE: case ODWHILE: l = n->left; gbranch(OGOTO); /* entry */ sp = p; scc = continpc; continpc = pc; gbranch(OGOTO); spc = p; sbc = breakpc; breakpc = pc; snbreak = nbreak; nbreak = 0; gbranch(OGOTO); spb = p; patch(spc, pc); if(n->op == OWHILE) patch(sp, pc); bcomplex(l, Z); /* test */ patch(p, breakpc); if(l->op != OCONST || vconst(l) == 0) nbreak++; if(n->op == ODWHILE) patch(sp, pc); gen(n->right); /* body */ gbranch(OGOTO); patch(p, continpc); patch(spb, pc); continpc = scc; breakpc = sbc; canreach = nbreak!=0; if(canreach == 0) warnreach = !suppress; nbreak = snbreak; break; case OFOR: l = n->left; if(!canreach && l->right->left && warnreach) { warn(n, "unreachable code FOR"); warnreach = 0; } gen(l->right->left); /* init */ gbranch(OGOTO); /* entry */ sp = p; /* * if there are no incoming labels in the * body and the top's not reachable, warn */ if(!canreach && warnreach && deadheads(n)) { warn(n, "unreachable code %O", o); warnreach = 0; } scc = continpc; continpc = pc; gbranch(OGOTO); spc = p; sbc = breakpc; breakpc = pc; snbreak = nbreak; nbreak = 0; sncontin = ncontin; ncontin = 0; gbranch(OGOTO); spb = p; patch(spc, pc); gen(l->right->right); /* inc */ patch(sp, pc); if(l->left != Z) { /* test */ bcomplex(l->left, Z); patch(p, breakpc); if(l->left->op != OCONST || vconst(l->left) == 0) nbreak++; } canreach = 1; gen(n->right); /* body */ if(canreach){ gbranch(OGOTO); patch(p, continpc); ncontin++; } if(!ncontin && l->right->right && warnreach) { warn(l->right->right, "unreachable FOR inc"); warnreach = 0; } patch(spb, pc); continpc = scc; breakpc = sbc; canreach = nbreak!=0; if(canreach == 0) warnreach = !suppress; nbreak = snbreak; ncontin = sncontin; break; case OCONTINUE: if(continpc < 0) { diag(n, "continue not in a loop"); break; } gbranch(OGOTO); patch(p, continpc); ncontin++; canreach = 0; warnreach = !suppress; break; case OBREAK: if(breakpc < 0) { diag(n, "break not in a loop"); break; } /* * Don't complain about unreachable break statements. * There are breaks hidden in yacc's output and some people * write return; break; in their switch statements out of habit. * However, don't confuse the analysis by inserting an * unreachable reference to breakpc either. */ if(!canreach) break; gbranch(OGOTO); patch(p, breakpc); nbreak++; canreach = 0; warnreach = !suppress; break; case OIF: l = n->left; if(bcomplex(l, n->right)) { if(typefd[l->type->etype]) f = !l->fconst; else f = !l->vconst; if(debug['c']) print("%L const if %s\n", nearln, f ? "false" : "true"); if(f) { canreach = 1; supgen(n->right->left); oldreach = canreach; canreach = 1; gen(n->right->right); /* * treat constant ifs as regular ifs for * reachability warnings. */ if(!canreach && oldreach && debug['w'] < 2) warnreach = 0; } else { canreach = 1; gen(n->right->left); oldreach = canreach; canreach = 1; supgen(n->right->right); /* * treat constant ifs as regular ifs for * reachability warnings. */ if(!oldreach && canreach && debug['w'] < 2) warnreach = 0; canreach = oldreach; } } else { sp = p; canreach = 1; if(n->right->left != Z) gen(n->right->left); oldreach = canreach; canreach = 1; if(n->right->right != Z) { gbranch(OGOTO); patch(sp, pc); sp = p; gen(n->right->right); } patch(sp, pc); canreach = canreach || oldreach; if(canreach == 0) warnreach = !suppress; } break; case OSET: case OUSED: case OPREFETCH: usedset(n->left, o); break; } } void usedset(Node *n, int o) { if(n->op == OLIST) { usedset(n->left, o); usedset(n->right, o); return; } complex(n); if(o == OPREFETCH) { gprefetch(n); return; } switch(n->op) { case OADDR: /* volatile */ gins(ANOP, n, Z); break; case ONAME: if(o == OSET) gins(ANOP, Z, n); else gins(ANOP, n, Z); break; } } int bcomplex(Node *n, Node *c) { Node *b, nod; complex(n); if(n->type != T) if(tcompat(n, T, n->type, tnot)) n->type = T; if(n->type == T) { gbranch(OGOTO); return 0; } if(c != Z && n->op == OCONST && deadheads(c)) return 1; if(typev[n->type->etype] && machcap(Z)) { b = &nod; b->op = ONE; b->left = n; b->right = new(0, Z, Z); *b->right = *nodconst(0); b->right->type = n->type; b->type = types[TLONG]; n = b; } bool64(n); boolgen(n, 1, Z); return 0; } // Updates the bitvector with a set bit for each pointer containing // value in the type description starting at offset. static void walktype1(Type *t, int32 offset, Bvec *bv, int param) { Type *t1; int32 o; int32 widthptr; widthptr = ewidth[TIND]; switch(t->etype) { case TCHAR: case TUCHAR: case TSHORT: case TUSHORT: case TINT: case TUINT: case TLONG: case TULONG: case TVLONG: case TUVLONG: case TFLOAT: case TDOUBLE: // non-pointer types for(o = 0; o < t->width; o++) bvset(bv, ((offset + t->offset + o) / widthptr) * BitsPerPointer); // 1 = live scalar break; case TIND: pointer: // pointer types if((offset + t->offset) % widthptr != 0) yyerror("unaligned pointer"); bvset(bv, ((offset + t->offset) / widthptr)*BitsPerPointer + 1); // 2 = live ptr break; case TARRAY: if(param) // unlike Go, C passes arrays by reference goto pointer; // array in struct or union is an actual array for(o = 0; o < t->width; o += t->link->width) walktype1(t->link, offset+o, bv, 0); break; case TSTRUCT: // build map recursively for(t1 = t->link; t1 != T; t1 = t1->down) walktype1(t1, offset, bv, 0); break; case TUNION: walktype1(t->link, offset, bv, 0); break; default: yyerror("can't handle arg type %s\n", tnames[t->etype]); } } // Compute a bit vector to describe the pointer containing locations // in the argument list. Adds the data to gcsym and returns the offset // of end of the bit vector. static void dumpgcargs(Type *fn, Sym *sym) { Bvec *bv; Type *t; int32 i; int32 argbytes; int32 symoffset, argoffset; // Dump the length of the bitmap array. This value is always one for // functions written in C. symoffset = 0; gextern(sym, nodconst(1), symoffset, 4); symoffset += 4; argbytes = (argsize() + ewidth[TIND] - 1); bv = bvalloc((argbytes / ewidth[TIND]) * BitsPerPointer); argoffset = align(0, fn->link, Aarg0, nil); if(argoffset > 0) { // The C calling convention returns structs by copying them to a // location pointed to by a hidden first argument. This first // argument is a pointer. if(argoffset != ewidth[TIND]) yyerror("passbyptr arg not the right size"); bvset(bv, 1); // 2 = live ptr } for(t = fn->down; t != T; t = t->down) { if(t->etype == TVOID) continue; argoffset = align(argoffset, t, Aarg1, nil); walktype1(t, argoffset, bv, 1); argoffset = align(argoffset, t, Aarg2, nil); } // Dump the length of the bitmap. gextern(sym, nodconst(bv->n), symoffset, 4); symoffset += 4; // Dump the words of the bitmap. for(i = 0; i < bv->n; i += 32) { gextern(sym, nodconst(bv->b[i/32]), symoffset, 4); symoffset += 4; } free(bv); // Finalize the gc symbol. sym->type = typ(0, T); sym->type->width = symoffset; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/pswt.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000006777�12412656734�014575� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/6c/swt.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/swt.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "gc.h" int swcmp(const void *a1, const void *a2) { C1 *p1, *p2; p1 = (C1*)a1; p2 = (C1*)a2; if(p1->val < p2->val) return -1; return p1->val > p2->val; } void doswit(Node *n) { Case *c; C1 *q, *iq; int32 def, nc, i, isv; def = 0; nc = 0; isv = 0; for(c = cases; c->link != C; c = c->link) { if(c->def) { if(def) diag(n, "more than one default in switch"); def = c->label; continue; } isv |= c->isv; nc++; } if(isv && !typev[n->type->etype]) warn(n, "32-bit switch expression with 64-bit case constant"); iq = alloc(nc*sizeof(C1)); q = iq; for(c = cases; c->link != C; c = c->link) { if(c->def) continue; q->label = c->label; if(isv) q->val = c->val; else q->val = (int32)c->val; /* cast ensures correct value for 32-bit switch on 64-bit architecture */ q++; } qsort(iq, nc, sizeof(C1), swcmp); if(debug['W']) for(i=0; ilink = cases; cases = c; } int32 outlstring(TRune *s, int32 n) { char buf[sizeof(TRune)]; uint c; int i; int32 r; if(suppress) return nstring; while(nstring & (sizeof(TRune)-1)) outstring("", 1); r = nstring; while(n > 0) { c = *s++; if(align(0, types[TCHAR], Aarg1, nil)) { for(i = 0; i < sizeof(TRune); i++) buf[i] = c>>(8*(sizeof(TRune) - i - 1)); } else { for(i = 0; i < sizeof(TRune); i++) buf[i] = c>>(8*i); } outstring(buf, sizeof(TRune)); n -= sizeof(TRune); } return r; } void nullwarn(Node *l, Node *r) { warn(Z, "result of operation not used"); if(l != Z) cgen(l, Z); if(r != Z) cgen(r, Z); } �go/src/cmd/cc/scon.c��������������������������������������������������������������������������������0100644�0000000�0000000�00000024606�12412656734�014531� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/scon.c // http://code.google.com/p/inferno-os/source/browse/utils/cc/scon.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "cc.h" static Node* acast(Type *t, Node *n) { if(n->type->etype != t->etype || n->op == OBIT) { n = new1(OCAST, n, Z); if(nocast(n->left->type, t)) *n = *n->left; n->type = t; } return n; } void evconst(Node *n) { Node *l, *r; int et, isf; vlong v; double d; if(n == Z || n->type == T) return; et = n->type->etype; isf = typefd[et]; l = n->left; r = n->right; d = 0; v = 0; switch(n->op) { default: return; case ONEG: if(isf) d = -l->fconst; else v = -l->vconst; break; case OCOM: v = ~l->vconst; break; case OCAST: if(et == TVOID) return; et = l->type->etype; if(isf) { if(typefd[et]) d = l->fconst; else d = l->vconst; } else { if(typefd[et]) v = l->fconst; else v = convvtox(l->vconst, n->type->etype); } break; case OCONST: break; case OADD: if(isf) d = l->fconst + r->fconst; else { v = l->vconst + r->vconst; } break; case OSUB: if(isf) d = l->fconst - r->fconst; else v = l->vconst - r->vconst; break; case OMUL: if(isf) d = l->fconst * r->fconst; else { v = l->vconst * r->vconst; } break; case OLMUL: v = (uvlong)l->vconst * (uvlong)r->vconst; break; case ODIV: if(vconst(r) == 0) { warn(n, "divide by zero"); return; } if(isf) d = l->fconst / r->fconst; else v = l->vconst / r->vconst; break; case OLDIV: if(vconst(r) == 0) { warn(n, "divide by zero"); return; } v = (uvlong)l->vconst / (uvlong)r->vconst; break; case OMOD: if(vconst(r) == 0) { warn(n, "modulo by zero"); return; } v = l->vconst % r->vconst; break; case OLMOD: if(vconst(r) == 0) { warn(n, "modulo by zero"); return; } v = (uvlong)l->vconst % (uvlong)r->vconst; break; case OAND: v = l->vconst & r->vconst; break; case OOR: v = l->vconst | r->vconst; break; case OXOR: v = l->vconst ^ r->vconst; break; case OLSHR: if(l->type->width != sizeof(uvlong)) v = ((uvlong)l->vconst & 0xffffffffULL) >> r->vconst; else v = (uvlong)l->vconst >> r->vconst; break; case OASHR: v = l->vconst >> r->vconst; break; case OASHL: v = (uvlong)l->vconst << r->vconst; break; case OLO: v = (uvlong)l->vconst < (uvlong)r->vconst; break; case OLT: if(typefd[l->type->etype]) v = l->fconst < r->fconst; else v = l->vconst < r->vconst; break; case OHI: v = (uvlong)l->vconst > (uvlong)r->vconst; break; case OGT: if(typefd[l->type->etype]) v = l->fconst > r->fconst; else v = l->vconst > r->vconst; break; case OLS: v = (uvlong)l->vconst <= (uvlong)r->vconst; break; case OLE: if(typefd[l->type->etype]) v = l->fconst <= r->fconst; else v = l->vconst <= r->vconst; break; case OHS: v = (uvlong)l->vconst >= (uvlong)r->vconst; break; case OGE: if(typefd[l->type->etype]) v = l->fconst >= r->fconst; else v = l->vconst >= r->vconst; break; case OEQ: if(typefd[l->type->etype]) v = l->fconst == r->fconst; else v = l->vconst == r->vconst; break; case ONE: if(typefd[l->type->etype]) v = l->fconst != r->fconst; else v = l->vconst != r->vconst; break; case ONOT: if(typefd[l->type->etype]) v = !l->fconst; else v = !l->vconst; break; case OANDAND: if(typefd[l->type->etype]) v = l->fconst && r->fconst; else v = l->vconst && r->vconst; break; case OOROR: if(typefd[l->type->etype]) v = l->fconst || r->fconst; else v = l->vconst || r->vconst; break; } if(isf) { n->fconst = d; } else { n->vconst = convvtox(v, n->type->etype); } n->oldop = n->op; n->op = OCONST; } void acom(Node *n) { Type *t; Node *l, *r; int i; switch(n->op) { case ONAME: case OCONST: case OSTRING: case OINDREG: case OREGISTER: return; case ONEG: l = n->left; if(addo(n) && addo(l)) break; acom(l); return; case OADD: case OSUB: case OMUL: l = n->left; r = n->right; if(addo(n)) { if(addo(r)) break; if(addo(l)) break; } acom(l); acom(r); return; default: l = n->left; r = n->right; if(l != Z) acom(l); if(r != Z) acom(r); return; } /* bust terms out */ t = n->type; term[0].mult = 0; term[0].node = Z; nterm = 1; acom1(1, n); if(debug['m']) for(i=0; itype = t; } int acomcmp1(const void *a1, const void *a2) { vlong c1, c2; Term *t1, *t2; t1 = (Term*)a1; t2 = (Term*)a2; c1 = t1->mult; if(c1 < 0) c1 = -c1; c2 = t2->mult; if(c2 < 0) c2 = -c2; if(c1 > c2) return 1; if(c1 < c2) return -1; c1 = 1; if(t1->mult < 0) c1 = 0; c2 = 1; if(t2->mult < 0) c2 = 0; if(c2 -= c1) return c2; if(t2 > t1) return 1; return -1; } int acomcmp2(const void *a1, const void *a2) { vlong c1, c2; Term *t1, *t2; t1 = (Term*)a1; t2 = (Term*)a2; c1 = t1->mult; c2 = t2->mult; if(c1 > c2) return 1; if(c1 < c2) return -1; if(t2 > t1) return 1; return -1; } void acom2(Node *n, Type *t) { Node *l, *r; Term trm[NTERM]; int et, nt, i, j; vlong c1, c2; /* * copy into automatic */ c2 = 0; nt = nterm; for(i=0; ioldop = n->op; n->op = OCONST; n->vconst = c1; return; } et = t->etype; /* * prepare constant term, * combine it with an addressing term */ if(c1 != 0) { l = new1(OCONST, Z, Z); l->type = t; l->vconst = c1; trm[0].mult = 1; for(i=1; iop != OADDR) continue; r->type = t; l = new1(OADD, r, l); l->type = t; trm[i].mult = 0; break; } trm[0].node = l; } /* * look for factorable terms * c1*i + c1*c2*j -> c1*(i + c2*j) */ qsort(trm+1, nt-1, sizeof(trm[0]), acomcmp1); for(i=nt-1; i>=0; i--) { c1 = trm[i].mult; if(c1 < 0) c1 = -c1; if(c1 <= 1) continue; for(j=i+1; jtype->etype != et) r = acast(t, r); c2 = trm[j].mult/trm[i].mult; if(c2 != 1 && c2 != -1) { r = new1(OMUL, r, new(OCONST, Z, Z)); r->type = t; r->right->type = t; r->right->vconst = c2; } l = trm[i].node; if(l->type->etype != et) l = acast(t, l); r = new1(OADD, l, r); r->type = t; if(c2 == -1) r->op = OSUB; trm[i].node = r; trm[j].mult = 0; } } if(debug['m']) { print("\n"); for(i=0; i=0; i--) { c1 = trm[i].mult; if(c1 == 0) continue; r = trm[i].node; if(r->type->etype != et || r->op == OBIT) r = acast(t, r); if(c1 != 1 && c1 != -1) { r = new1(OMUL, r, new(OCONST, Z, Z)); r->type = t; r->right->type = t; if(c1 < 0) { r->right->vconst = -c1; c1 = -1; } else { r->right->vconst = c1; c1 = 1; } } if(l == Z) { l = r; c2 = c1; continue; } if(c1 < 0) if(c2 < 0) l = new1(OADD, l, r); else l = new1(OSUB, l, r); else if(c2 < 0) { l = new1(OSUB, r, l); c2 = 1; } else l = new1(OADD, l, r); l->type = t; } if(c2 < 0) { r = new1(OCONST, 0, 0); r->vconst = 0; r->type = t; l = new1(OSUB, r, l); l->type = t; } *n = *l; } void acom1(vlong v, Node *n) { Node *l, *r; if(v == 0 || nterm >= NTERM) return; if(!addo(n)) { if(n->op == OCONST) if(!typefd[n->type->etype]) { term[0].mult += v*n->vconst; return; } term[nterm].mult = v; term[nterm].node = n; nterm++; return; } switch(n->op) { case OCAST: acom1(v, n->left); break; case ONEG: acom1(-v, n->left); break; case OADD: acom1(v, n->left); acom1(v, n->right); break; case OSUB: acom1(v, n->left); acom1(-v, n->right); break; case OMUL: l = n->left; r = n->right; if(l->op == OCONST) if(!typefd[n->type->etype]) { acom1(v*l->vconst, r); break; } if(r->op == OCONST) if(!typefd[n->type->etype]) { acom1(v*r->vconst, l); break; } break; default: diag(n, "not addo"); } } int addo(Node *n) { if(n != Z) if(!typefd[n->type->etype]) if(!typev[n->type->etype] || ewidth[TVLONG] == ewidth[TIND]) switch(n->op) { case OCAST: if(nilcast(n->left->type, n->type)) return 1; break; case ONEG: case OADD: case OSUB: return 1; case OMUL: if(n->left->op == OCONST) return 1; if(n->right->op == OCONST) return 1; } return 0; } ��������������������������������������������������������������������������������������������������������������������������go/src/cmd/cc/sub.c���������������������������������������������������������������������������������0100644�0000000�0000000�00000107075�12412656734�014362� 0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Inferno utils/cc/sub.c // http://code.google.com/p/inferno-os/source/browse/utils/cc/sub.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include #include "cc.h" Node* new(int t, Node *l, Node *r) { Node *n; n = alloc(sizeof(*n)); n->op = t; n->left = l; n->right = r; if(l && t != OGOTO) n->lineno = l->lineno; else if(r) n->lineno = r->lineno; else n->lineno = lineno; newflag = 1; return n; } Node* new1(int o, Node *l, Node *r) { Node *n; n = new(o, l, r); n->lineno = nearln; return n; } void prtree(Node *n, char *s) { print(" == %s ==\n", s); prtree1(n, 0, 0); print("\n"); } void prtree1(Node *n, int d, int f) { int i; if(f) for(i=0; iop == OLIST) { prtree1(n->left, d, 0); prtree1(n->right, d, 1); return; } d++; print("%O", n->op); i = 3; switch(n->op) { case ONAME: print(" \"%F\"", n); print(" %d", n->xoffset); i = 0; break; case OINDREG: print(" %d(R%d)", n->xoffset, n->reg); i = 0; break; case OREGISTER: if(n->xoffset) print(" %d+R%d", n->xoffset, n->reg); else print(" R%d", n->reg); i = 0; break; case OSTRING: print(" \"%s\"", n->cstring); i = 0; break; case OLSTRING: if(sizeof(TRune) == sizeof(Rune)) print(" \"%S\"", (Rune*)n->rstring); else print(" \"...\""); i = 0; break; case ODOT: case OELEM: print(" \"%F\"", n); break; case OCONST: if(typefd[n->type->etype]) print(" \"%.8e\"", n->fconst); else print(" \"%lld\"", n->vconst); i = 0; break; } if(n->addable != 0) print(" <%d>", n->addable); if(n->type != T) print(" %T", n->type); if(n->complex != 0) print(" (%d)", n->complex); print(" %L\n", n->lineno); if(i & 2) prtree1(n->left, d, 1); if(i & 1) prtree1(n->right, d, 1); } Type* typ(int et, Type *d) { Type *t; t = alloc(sizeof(*t)); t->etype = et; t->link = d; t->down = T; t->sym = S; if(et < NTYPE) t->width = ewidth[et]; else t->width = -1; // for TDOT or TOLD in prototype t->offset = 0; t->shift = 0; t->nbits = 0; t->garb = 0; return t; } Type* copytyp(Type *t) { Type *nt; nt = typ(TXXX, T); *nt = *t; return nt; } Type* garbt(Type *t, int32 b) { Type *t1; if(b & BGARB) { t1 = copytyp(t); t1->garb = simpleg(b); return t1; } return t; } int simpleg(int32 b) { b &= BGARB; switch(b) { case BCONSTNT: return GCONSTNT; case BVOLATILE: return GVOLATILE; case BVOLATILE|BCONSTNT: return GCONSTNT|GVOLATILE; } return GXXX; } int simplec(int32 b) { b &= BCLASS; switch(b) { case 0: case BREGISTER: return CXXX; case BAUTO: case BAUTO|BREGISTER: return CAUTO; case BEXTERN: return CEXTERN; case BEXTERN|BREGISTER: return CEXREG; case BSTATIC: return CSTATIC; case BTYPEDEF: return CTYPEDEF; case BTYPESTR: return CTYPESTR; } diag(Z, "illegal combination of classes %Q", b); return CXXX; } Type* simplet(int32 b) { b &= ~BCLASS & ~BGARB; switch(b) { case BCHAR: case BCHAR|BSIGNED: return types[TCHAR]; case BCHAR|BUNSIGNED: return types[TUCHAR]; case BSHORT: case BSHORT|BINT: case BSHORT|BSIGNED: case BSHORT|BINT|BSIGNED: return types[TSHORT]; case BUNSIGNED|BSHORT: case BUNSIGNED|BSHORT|BINT: return types[TUSHORT]; case 0: case BINT: case BINT|BSIGNED: case BSIGNED: return types[TINT]; case BUNSIGNED: case BUNSIGNED|BINT: return types[TUINT]; case BLONG: case BLONG|BINT: case BLONG|BSIGNED: case BLONG|BINT|BSIGNED: return types[TLONG]; case BUNSIGNED|BLONG: case BUNSIGNED|BLONG|BINT: return types[TULONG]; case BVLONG|BLONG: case BVLONG|BLONG|BINT: case BVLONG|BLONG|BSIGNED: case BVLONG|BLONG|BINT|BSIGNED: return types[TVLONG]; case BVLONG|BLONG|BUNSIGNED: case BVLONG|BLONG|BINT|BUNSIGNED: return types[TUVLONG]; case BFLOAT: return types[TFLOAT]; case BDOUBLE: case BDOUBLE|BLONG: case BFLOAT|BLONG: return types[TDOUBLE]; case BVOID: return types[TVOID]; } diag(Z, "illegal combination of types %Q", b); return types[TINT]; } int stcompat(Node *n, Type *t1, Type *t2, int32 ttab[]) { int i; uint32 b; i = 0; if(t2 != T) i = t2->etype; b = 1L << i; i = 0; if(t1 != T) i = t1->etype; if(b & ttab[i]) { if(ttab == tasign) if(b == BSTRUCT || b == BUNION) if(!sametype(t1, t2)) return 1; if(n->op != OCAST) if(b == BIND && i == TIND) if(!sametype(t1, t2)) return 1; return 0; } return 1; } int tcompat(Node *n, Type *t1, Type *t2, int32 ttab[]) { if(stcompat(n, t1, t2, ttab)) { if(t1 == T) diag(n, "incompatible type: \"%T\" for op \"%O\"", t2, n->op); else diag(n, "incompatible types: \"%T\" and \"%T\" for op \"%O\"", t1, t2, n->op); return 1; } return 0; } void makedot(Node *n, Type *t, int32 o) { Node *n1, *n2; if(t->nbits) { n1 = new(OXXX, Z, Z); *n1 = *n; n->op = OBIT; n->left = n1; n->right = Z; n->type = t; n->addable = n1->left->addable; n = n1; } n->addable = n->left->addable; if(n->addable == 0) { n1 = new1(OCONST, Z, Z); n1->vconst = o; n1->type = types[TLONG]; n->right = n1; n->type = t; return; } n->left->type = t; if(o == 0) { *n = *n->left; return; } n->type = t; n1 = new1(OCONST, Z, Z); n1->vconst = o; t = typ(TIND, t); t->width = types[TIND]->width; n1->type = t; n2 = new1(OADDR, n->left, Z); n2->type = t; n1 = new1(OADD, n1, n2); n1->type = t; n->op = OIND; n->left = n1; n->right = Z; } Type* dotsearch(Sym *s, Type *t, Node *n, int32 *off) { Type *t1, *xt, *rt; xt = T; /* * look it up by name */ for(t1 = t; t1 != T; t1 = t1->down) if(t1->sym == s) { if(xt != T) goto ambig; xt = t1; } /* * look it up by type */ if(s->class == CTYPEDEF || s->class == CTYPESTR) for(t1 = t; t1 != T; t1 = t1->down) if(t1->sym == S && typesu[t1->etype]) if(sametype(s->type, t1)) { if(xt != T) goto ambig; xt = t1; } if(xt != T) { *off = xt->offset; return xt; } /* * look it up in unnamed substructures */ for(t1 = t; t1 != T; t1 = t1->down) if(t1->sym == S && typesu[t1->etype]){ rt = dotsearch(s, t1->link, n, off); if(rt != T) { if(xt != T) goto ambig; xt = rt; *off += t1->offset; } } return xt; ambig: diag(n, "ambiguous structure element: %s", s->name); return xt; } int32 dotoffset(Type *st, Type *lt, Node *n) { Type *t; Sym *g; int32 o, o1; o = -1; /* * first try matching at the top level * for matching tag names */ g = st->tag; if(g != S) for(t=lt->link; t!=T; t=t->down) if(t->sym == S) if(g == t->tag) { if(o >= 0) goto ambig; o = t->offset; } if(o >= 0) return o; /* * second try matching at the top level * for similar types */ for(t=lt->link; t!=T; t=t->down) if(t->sym == S) if(sametype(st, t)) { if(o >= 0) goto ambig; o = t->offset; } if(o >= 0) return o; /* * last try matching sub-levels */ for(t=lt->link; t!=T; t=t->down) if(t->sym == S) if(typesu[t->etype]) { o1 = dotoffset(st, t, n); if(o1 >= 0) { if(o >= 0) goto ambig; o = o1 + t->offset; } } return o; ambig: diag(n, "ambiguous unnamed structure element"); return o; } /* * look into tree for floating point constant expressions */ int allfloat(Node *n, int flag) { if(n != Z) { if(n->type->etype != TDOUBLE) return 1; switch(n->op) { case OCONST: if(flag) n->type = types[TFLOAT]; return 1; case OADD: /* no need to get more exotic than this */ case OSUB: case OMUL: case ODIV: if(!allfloat(n->right, flag)) break; case OCAST: if(!allfloat(n->left, flag)) break; if(flag) n->type = types[TFLOAT]; return 1; } } return 0; } void constas(Node *n, Type *il, Type *ir) { Type *l, *r; l = il; r = ir; if(l == T) return; if(l->garb & GCONSTNT) { warn(n, "assignment to a constant type (%T)", il); return; } if(r == T) return; for(;;) { if(l->etype != TIND || r->etype != TIND) break; l = l->link; r = r->link; if(l == T || r == T) break; if(r->garb & GCONSTNT) if(!(l->garb & GCONSTNT)) { warn(n, "assignment of a constant pointer type (%T)", ir); break; } } } void typeext1(Type *st, Node *l) { if(st->etype == TFLOAT && allfloat(l, 0)) allfloat(l, 1); } void typeext(Type *st, Node *l) { Type *lt; Node *n1, *n2; int32 o; lt = l->type; if(lt == T) return; if(st->etype == TIND && vconst(l) == 0) { l->type = st; l->vconst = 0; return; } typeext1(st, l); /* * extension of C * if assign of struct containing unnamed sub-struct * to type of sub-struct, insert the DOT. * if assign of *struct containing unnamed substruct * to type of *sub-struct, insert the add-offset */ if(typesu[st->etype] && typesu[lt->etype]) { o = dotoffset(st, lt, l); if(o >= 0) { n1 = new1(OXXX, Z, Z); *n1 = *l; l->op = ODOT; l->left = n1; l->right = Z; makedot(l, st, o); } return; } if(st->etype == TIND && typesu[st->link->etype]) if(lt->etype == TIND && typesu[lt->link->etype]) { o = dotoffset(st->link, lt->link, l); if(o >= 0) { l->type = st; if(o == 0) return; n1 = new1(OXXX, Z, Z); *n1 = *l; n2 = new1(OCONST, Z, Z); n2->vconst = o; n2->type = st; l->op = OADD; l->left = n1; l->right = n2; } return; } } /* * a cast that generates no code * (same size move) */ int nocast(Type *t1, Type *t2) { int i, b; if(t1->nbits) return 0; i = 0; if(t2 != T) i = t2->etype; b = 1<etype; if(b & ncast[i]) return 1; return 0; } /* * a cast that has a noop semantic * (small to large, convert) */ int nilcast(Type *t1, Type *t2) { int et1, et2; if(t1 == T) return 0; if(t1->nbits) return 0; if(t2 == T) return 0; et1 = t1->etype; et2 = t2->etype; if(et1 == et2) return 1; if(typefd[et1] && typefd[et2]) { if(ewidth[et1] < ewidth[et2]) return 1; return 0; } if(typechlp[et1] && typechlp[et2]) { if(ewidth[et1] < ewidth[et2]) return 1; return 0; } return 0; } /* * "the usual arithmetic conversions are performed" */ void arith(Node *n, int f) { Type *t1, *t2; int i, j, k; Node *n1; int32 w; t1 = n->left->type; if(n->right == Z) t2 = t1; else t2 = n->right->type; i = TXXX; if(t1 != T) i = t1->etype; j = TXXX; if(t2 != T) j = t2->etype; k = tab[i][j]; if(k == TIND) { if(i == TIND) n->type = t1; else if(j == TIND) n->type = t2; } else { /* convert up to at least int */ if(f == 1) while(k < TINT) k += 2; n->type = types[k]; } if(n->op == OSUB) if(i == TIND && j == TIND) { w = n->right->type->link->width; if(w < 1 || n->left->type->link == T || n->left->type->link->width < 1) goto bad; n->type = types[ewidth[TIND] <= ewidth[TLONG]? TLONG: TVLONG]; if(0 && ewidth[TIND] > ewidth[TLONG]){ n1 = new1(OXXX, Z, Z); *n1 = *n; n->op = OCAST; n->left = n1; n->right = Z; n->type = types[TLONG]; } if(w > 1) { n1 = new1(OXXX, Z, Z); *n1 = *n; n->op = ODIV; n->left = n1; n1 = new1(OCONST, Z, Z); n1->vconst = w; n1->type = n->type; n->right = n1; w = vlog(n1); if(w >= 0) { n->op = OASHR; n1->vconst = w; } } return; } if(!sametype(n->type, n->left->type)) { n->left = new1(OCAST, n->left, Z); n->left->type = n->type; if(n->type->etype == TIND) { w = n->type->link->width; if(w < 1) { snap(n->type->link); w = n->type->link->width; if(w < 1) goto bad; } if(w > 1) { n1 = new1(OCONST, Z, Z); n1->vconst = w; n1->type = n->type; n->left = new1(OMUL, n->left, n1); n->left->type = n->type; } } } if(n->right != Z) if(!sametype(n->type, n->right->type)) { n->right = new1(OCAST, n->right, Z); n->right->type = n->type; if(n->type->etype == TIND) { w = n->type->link->width; if(w < 1) { snap(n->type->link); w = n->type->link->width; if(w < 1) goto bad; } if(w != 1) { n1 = new1(OCONST, Z, Z); n1->vconst = w; n1->type = n->type; n->right = new1(OMUL, n->right, n1); n->right->type = n->type; } } } return; bad: diag(n, "pointer addition not fully declared: %T", n->type->link); } /* * try to rewrite shift & mask */ void simplifyshift(Node *n) { uint32 c3; int o, s1, s2, c1, c2; if(!typechlp[n->type->etype]) return; switch(n->op) { default: return; case OASHL: s1 = 0; break; case OLSHR: s1 = 1; break; case OASHR: s1 = 2; break; } if(n->right->op != OCONST) return; if(n->left->op != OAND) return; if(n->left->right->op != OCONST) return; switch(n->left->left->op) { default: return; case OASHL: s2 = 0; break; case OLSHR: s2 = 1; break; case OASHR: s2 = 2; break; } if(n->left->left->right->op != OCONST) return; c1 = n->right->vconst; c2 = n->left->left->right->vconst; c3 = n->left->right->vconst; o = n->op; switch((s1<<3)|s2) { case 000: /* (((e <>= c2; c1 += c2; if(c1 >= 32) break; goto rewrite1; case 002: /* (((e >>s c2) & c3) <= (32-c2)) break; case 001: /* (((e >>u c2) & c3) < c2) { c3 <<= c2; c1 -= c2; o = OASHL; goto rewrite1; } c3 <<= c1; if(c1 == c2) goto rewrite0; c1 = c2-c1; o = OLSHR; goto rewrite2; case 022: /* (((e >>s c2) & c3) >>s c1) */ if(c2 <= 0) break; case 012: /* (((e >>s c2) & c3) >>u c1) */ if(topbit(c3) >= (32-c2)) break; goto s11; case 021: /* (((e >>u c2) & c3) >>s c1) */ if(topbit(c3) >= 31 && c2 <= 0) break; goto s11; case 011: /* (((e >>u c2) & c3) >>u c1) */ s11: c3 <<= c2; c1 += c2; if(c1 >= 32) break; o = OLSHR; goto rewrite1; case 020: /* (((e <>s c1) */ if(topbit(c3) >= 31) break; case 010: /* (((e <>u c1) */ c3 >>= c1; if(c1 == c2) goto rewrite0; if(c1 > c2) { c1 -= c2; goto rewrite2; } c1 = c2 - c1; o = OASHL; goto rewrite2; } return; rewrite0: /* get rid of both shifts */ if(debug['<'])prtree(n, "rewrite0"); *n = *n->left; n->left = n->left->left; n->right->vconst = c3; return; rewrite1: /* get rid of lower shift */ if(debug['<'])prtree(n, "rewrite1"); n->left->left = n->left->left->left; n->left->right->vconst = c3; n->right->vconst = c1; n->op = o; return; rewrite2: /* get rid of upper shift */ if(debug['<'])prtree(n, "rewrite2"); *n = *n->left; n->right->vconst = c3; n->left->right->vconst = c1; n->left->op = o; } int side(Node *n) { loop: if(n != Z) switch(n->op) { case OCAST: case ONOT: case OADDR: case OIND: n = n->left; goto loop; case OCOND: if(side(n->left)) break; n = n->right; case OEQ: case ONE: case OLT: case OGE: case OGT: case OLE: case OADD: case OSUB: case OMUL: case OLMUL: case ODIV: case OLDIV: case OLSHR: case OASHL: case OASHR: case OAND: case OOR: case OXOR: case OMOD: case OLMOD: case OANDAND: case OOROR: case OCOMMA: case ODOT: if(side(n->left)) break; n = n->right; goto loop; case OSIGN: case OSIZE: case OCONST: case OSTRING: case OLSTRING: case ONAME: return 0; } return 1; } int vconst(Node *n) { int i; if(n == Z) goto no; if(n->op != OCONST) goto no; if(n->type == T) goto no; switch(n->type->etype) { case TFLOAT: case TDOUBLE: i = 100; if(n->fconst > i || n->fconst < -i) goto no; i = n->fconst; if(i != n->fconst) goto no; return i; case TVLONG: case TUVLONG: i = n->vconst; if(i != n->vconst) goto no; return i; case TCHAR: case TUCHAR: case TSHORT: case TUSHORT: case TINT: case TUINT: case TLONG: case TULONG: case TIND: i = n->vconst; if(i != n->vconst) goto no; return i; } no: return -159; /* first uninteresting constant */ } /* * return log(n) if n is a power of 2 constant */ int xlog2(uvlong v) { int s, i; uvlong m; s = 0; m = MASK(8*sizeof(uvlong)); for(i=32; i; i>>=1) { m >>= i; if(!(v & m)) { v >>= i; s += i; } } if(v == 1) return s; return -1; } int vlog(Node *n) { if(n->op != OCONST) goto bad; if(typefd[n->type->etype]) goto bad; return xlog2(n->vconst); bad: return -1; } int topbit(uint32 v) { int i; for(i = -1; v; i++) v >>= 1; return i; } /* * try to cast a constant down * rather than cast a variable up * example: * if(c == 'a') */ void relcon(Node *l, Node *r) { vlong v; if(l->op != OCONST) return; if(r->op != OCAST) return; if(!nilcast(r->left->type, r->type)) return; switch(r->type->etype) { default: return; case TCHAR: case TUCHAR: case TSHORT: case TUSHORT: v = convvtox(l->vconst, r->type->etype); if(v != l->vconst) return; break; } l->type = r->left->type; *r = *r->left; } int relindex(int o) { switch(o) { default: diag(Z, "bad in relindex: %O", o); case OEQ: return 0; case ONE: return 1; case OLE: return 2; case OLS: return 3; case OLT: return 4; case OLO: return 5; case OGE: return 6; case OHS: return 7; case OGT: return 8; case OHI: return 9; } } Node* invert(Node *n) { Node *i; if(n == Z || n->op != OLIST) return n; i = n; for(n = n->left; n != Z; n = n->left) { if(n->op != OLIST) break; i->left = n->right; n->right = i; i = n; } i->left = n; return i; } int bitno(int32 b) { int i; for(i=0; i<32; i++) if(b & (1L< vlong */ else warn(Z, "once is enough: %Q", a & b); return c; } void diag(Node *n, char *fmt, ...) { char buf[STRINGSZ]; va_list arg; va_start(arg, fmt); vseprint(buf, buf+sizeof(buf), fmt, arg); va_end(arg); Bprint(&diagbuf, "%L %s\n", (n==Z)? nearln: n->lineno, buf); if(debug['X']){ Bflush(&diagbuf); abort(); } if(n != Z) if(debug['v']) prtree(n, "diagnostic"); nerrors++; if(nerrors > 10) { Bprint(&diagbuf, "too many errors\n"); errorexit(); } } void warn(Node *n, char *fmt, ...) { char buf[STRINGSZ]; va_list arg; if(debug['w']) { Bprint(&diagbuf, "warning: "); va_start(arg, fmt); vseprint(buf, buf+sizeof(buf), fmt, arg); va_end(arg); Bprint(&diagbuf, "%L %s\n", (n==Z)? nearln: n->lineno, buf); if(n != Z) if(debug['v']) prtree(n, "warning"); } } void yyerror(char *fmt, ...) { char buf[STRINGSZ]; va_list arg; /* * hack to intercept message from yaccpar */ if(strcmp(fmt, "syntax error") == 0) { yyerror("syntax error, last name: %s", symb); return; } va_start(arg, fmt); vseprint(buf, buf+sizeof(buf), fmt, arg); va_end(arg); Bprint(&diagbuf, "%L %s\n", lineno, buf); nerrors++; if(nerrors > 10) { Bprint(&diagbuf, "too many errors\n"); errorexit(); } } void fatal(Node *n, char *fmt, ...) { char buf[STRINGSZ]; va_list arg; va_start(arg, fmt); vseprint(buf, buf+sizeof(buf), fmt, arg); va_end(arg); Bprint(&diagbuf, "%L %s\n", (n==Z)? nearln: n->lineno, buf); if(debug['X']){ Bflush(&diagbuf); abort(); } if(n != Z) if(debug['v']) prtree(n, "diagnostic"); nerrors++; errorexit(); } uint32 thash1 = 0x2edab8c9; uint32 thash2 = 0x1dc74fb8; uint32 thash3 = 0x1f241331; uint32 thash[NALLTYPES]; Init thashinit[] = { TXXX, 0x17527bbd, 0, TCHAR, 0x5cedd32b, 0, TUCHAR, 0x552c4454, 0, TSHORT, 0x63040b4b, 0, TUSHORT, 0x32a45878, 0, TINT, 0x4151d5bd, 0, TUINT, 0x5ae707d6, 0, TLONG, 0x5ef20f47, 0, TULONG, 0x36d8eb8f, 0, TVLONG, 0x6e5e9590, 0, TUVLONG, 0x75910105, 0, TFLOAT, 0x25fd7af1, 0, TDOUBLE, 0x7c40a1b2, 0, TIND, 0x1b832357, 0, TFUNC, 0x6babc9cb, 0, TARRAY, 0x7c50986d, 0, TVOID, 0x44112eff, 0, TSTRUCT, 0x7c2da3bf, 0, TUNION, 0x3eb25e98, 0, TENUM, 0x44b54f61, 0, TFILE, 0x19242ac3, 0, TOLD, 0x22b15988, 0, TDOT, 0x0204f6b3, 0, -1, 0, 0, }; char* bnames[NALIGN]; Init bnamesinit[] = { Axxx, 0, "Axxx", Ael1, 0, "el1", Ael2, 0, "el2", Asu2, 0, "su2", Aarg0, 0, "arg0", Aarg1, 0, "arg1", Aarg2, 0, "arg2", Aaut3, 0, "aut3", -1, 0, 0, }; char* tnames[NALLTYPES]; Init tnamesinit[] = { TXXX, 0, "TXXX", TCHAR, 0, "CHAR", TUCHAR, 0, "UCHAR", TSHORT, 0, "SHORT", TUSHORT, 0, "USHORT", TINT, 0, "INT", TUINT, 0, "UINT", TLONG, 0, "LONG", TULONG, 0, "ULONG", TVLONG, 0, "VLONG", TUVLONG, 0, "UVLONG", TFLOAT, 0, "FLOAT", TDOUBLE, 0, "DOUBLE", TIND, 0, "IND", TFUNC, 0, "FUNC", TARRAY, 0, "ARRAY", TVOID, 0, "VOID", TSTRUCT, 0, "STRUCT", TUNION, 0, "UNION", TENUM, 0, "ENUM", TFILE, 0, "FILE", TOLD, 0, "OLD", TDOT, 0, "DOT", -1, 0, 0, }; char* gnames[NGTYPES]; Init gnamesinit[] = { GXXX, 0, "GXXX", GCONSTNT, 0, "CONST", GVOLATILE, 0, "VOLATILE", GVOLATILE|GCONSTNT, 0, "CONST-VOLATILE", -1, 0, 0, }; char* qnames[NALLTYPES]; Init qnamesinit[] = { TXXX, 0, "TXXX", TCHAR, 0, "CHAR", TUCHAR, 0, "UCHAR", TSHORT, 0, "SHORT", TUSHORT, 0, "USHORT", TINT, 0, "INT", TUINT, 0, "UINT", TLONG, 0, "LONG", TULONG, 0, "ULONG", TVLONG, 0, "VLONG", TUVLONG, 0, "UVLONG", TFLOAT, 0, "FLOAT", TDOUBLE, 0, "DOUBLE", TIND, 0, "IND", TFUNC, 0, "FUNC", TARRAY, 0, "ARRAY", TVOID, 0, "VOID", TSTRUCT, 0, "STRUCT", TUNION, 0, "UNION", TENUM, 0, "ENUM", TAUTO, 0, "AUTO", TEXTERN, 0, "EXTERN", TSTATIC, 0, "STATIC", TTYPEDEF, 0, "TYPEDEF", TTYPESTR, 0, "TYPESTR", TREGISTER, 0, "REGISTER", TCONSTNT, 0, "CONSTNT", TVOLATILE, 0, "VOLATILE", TUNSIGNED, 0, "UNSIGNED", TSIGNED, 0, "SIGNED", TDOT, 0, "DOT", TFILE, 0, "FILE", TOLD, 0, "OLD", -1, 0, 0, }; char* cnames[NCTYPES]; Init cnamesinit[] = { CXXX, 0, "CXXX", CAUTO, 0, "AUTO", CEXTERN, 0, "EXTERN", CGLOBL, 0, "GLOBL", CSTATIC, 0, "STATIC", CLOCAL, 0, "LOCAL", CTYPEDEF, 0, "TYPEDEF", CTYPESTR, 0, "TYPESTR", CPARAM, 0, "PARAM", CSELEM, 0, "SELEM", CLABEL, 0, "LABEL", CEXREG, 0, "EXREG", -1, 0, 0, }; char* onames[OEND+1]; Init onamesinit[] = { OXXX, 0, "OXXX", OADD, 0, "ADD", OADDR, 0, "ADDR", OAND, 0, "AND", OANDAND, 0, "ANDAND", OARRAY, 0, "ARRAY", OAS, 0, "AS", OASI, 0, "ASI", OASADD, 0, "ASADD", OASAND, 0, "ASAND", OASASHL, 0, "ASASHL", OASASHR, 0, "ASASHR", OASDIV, 0, "ASDIV", OASHL, 0, "ASHL", OASHR, 0, "ASHR", OASLDIV, 0, "ASLDIV", OASLMOD, 0, "ASLMOD", OASLMUL, 0, "ASLMUL", OASLSHR, 0, "ASLSHR", OASMOD, 0, "ASMOD", OASMUL, 0, "ASMUL", OASOR, 0, "ASOR", OASSUB, 0, "ASSUB", OASXOR, 0, "ASXOR", OBIT, 0, "BIT", OBREAK, 0, "BREAK", OCASE, 0, "CASE", OCAST, 0, "CAST", OCOMMA, 0, "COMMA", OCOND, 0, "COND", OCONST, 0, "CONST", OCONTINUE, 0, "CONTINUE", ODIV, 0, "DIV", ODOT, 0, "DOT", ODOTDOT, 0, "DOTDOT", ODWHILE, 0, "DWHILE", OENUM, 0, "ENUM", OEQ, 0, "EQ", OEXREG, 0, "EXREG", OFOR, 0, "FOR", OFUNC, 0, "FUNC", OGE, 0, "GE", OGOTO, 0, "GOTO", OGT, 0, "GT", OHI, 0, "HI", OHS, 0, "HS", OIF, 0, "IF", OIND, 0, "IND", OINDREG, 0, "INDREG", OINIT, 0, "INIT", OLABEL, 0, "LABEL", OLDIV, 0, "LDIV", OLE, 0, "LE", OLIST, 0, "LIST", OLMOD, 0, "LMOD", OLMUL, 0, "LMUL", OLO, 0, "LO", OLS, 0, "LS", OLSHR, 0, "LSHR", OLT, 0, "LT", OMOD, 0, "MOD", OMUL, 0, "MUL", ONAME, 0, "NAME", ONE, 0, "NE", ONOT, 0, "NOT", OOR, 0, "OR", OOROR, 0, "OROR", OPOSTDEC, 0, "POSTDEC", OPOSTINC, 0, "POSTINC", OPREDEC, 0, "PREDEC", OPREINC, 0, "PREINC", OPREFETCH, 0, "PREFETCH", OPROTO, 0, "PROTO", OREGISTER, 0, "REGISTER", ORETURN, 0, "RETURN", OSET, 0, "SET", OSIGN, 0, "SIGN", OSIZE, 0, "SIZE", OSTRING, 0, "STRING", OLSTRING, 0, "LSTRING", OSTRUCT, 0, "STRUCT", OSUB, 0, "SUB", OSWITCH, 0, "SWITCH", OUNION, 0, "UNION", OUSED, 0, "USED", OWHILE, 0, "WHILE", OXOR, 0, "XOR", OPOS, 0, "POS", ONEG, 0, "NEG", OCOM, 0, "COM", OELEM, 0, "ELEM", OTST, 0, "TST", OINDEX, 0, "INDEX", OFAS, 0, "FAS", OREGPAIR, 0, "REGPAIR", OROTL, 0, "ROTL", OEND, 0, "END", -1, 0, 0, }; /* OEQ, ONE, OLE, OLS, OLT, OLO, OGE, OHS, OGT, OHI */ uchar comrel[12] = { ONE, OEQ, OGT, OHI, OGE, OHS, OLT, OLO, OLE, OLS, }; uchar invrel[12] = { OEQ, ONE, OGE, OHS, OGT, OHI, OLE, OLS, OLT, OLO, }; uchar logrel[12] = { OEQ, ONE, OLS, OLS, OLO, OLO, OHS, OHS, OHI, OHI, }; uchar typei[NALLTYPES]; int typeiinit[] = { TCHAR, TUCHAR, TSHORT, TUSHORT, TINT, TUINT, TLONG, TULONG, TVLONG, TUVLONG, -1, }; uchar typeu[NALLTYPES]; int typeuinit[] = { TUCHAR, TUSHORT, TUINT, TULONG, TUVLONG, TIND, -1, }; uchar typesuv[NALLTYPES]; int typesuvinit[] = { TVLONG, TUVLONG, TSTRUCT, TUNION, -1, }; uchar typeilp[NALLTYPES]; int typeilpinit[] = { TINT, TUINT, TLONG, TULONG, TIND, -1 }; uchar typechl[NALLTYPES]; uchar typechlv[NALLTYPES]; uchar typechlvp[NALLTYPES]; int typechlinit[] = { TCHAR, TUCHAR, TSHORT, TUSHORT, TINT, TUINT, TLONG, TULONG, -1, }; uchar typechlp[NALLTYPES]; int typechlpinit[] = { TCHAR, TUCHAR, TSHORT, TUSHORT, TINT, TUINT, TLONG, TULONG, TIND, -1, }; uchar typechlpfd[NALLTYPES]; int typechlpfdinit[] = { TCHAR, TUCHAR, TSHORT, TUSHORT, TINT, TUINT, TLONG, TULONG, TFLOAT, TDOUBLE, TIND, -1, }; uchar typec[NALLTYPES]; int typecinit[] = { TCHAR, TUCHAR, -1 }; uchar typeh[NALLTYPES]; int typehinit[] = { TSHORT, TUSHORT, -1, }; uchar typeil[NALLTYPES]; int typeilinit[] = { TINT, TUINT, TLONG, TULONG, -1, }; uchar typev[NALLTYPES]; int typevinit[] = { TVLONG, TUVLONG, -1, }; uchar typefd[NALLTYPES]; int typefdinit[] = { TFLOAT, TDOUBLE, -1, }; uchar typeaf[NALLTYPES]; int typeafinit[] = { TFUNC, TARRAY, -1, }; uchar typesu[NALLTYPES]; int typesuinit[] = { TSTRUCT, TUNION, -1, }; int32 tasign[NALLTYPES]; Init tasigninit[] = { TCHAR, BNUMBER, 0, TUCHAR, BNUMBER, 0, TSHORT, BNUMBER, 0, TUSHORT, BNUMBER, 0, TINT, BNUMBER, 0, TUINT, BNUMBER, 0, TLONG, BNUMBER, 0, TULONG, BNUMBER, 0, TVLONG, BNUMBER, 0, TUVLONG, BNUMBER, 0, TFLOAT, BNUMBER, 0, TDOUBLE, BNUMBER, 0, TIND, BIND, 0, TSTRUCT, BSTRUCT, 0, TUNION, BUNION, 0, -1, 0, 0, }; int32 tasadd[NALLTYPES]; Init tasaddinit[] = { TCHAR, BNUMBER, 0, TUCHAR, BNUMBER, 0, TSHORT, BNUMBER, 0, TUSHORT, BNUMBER, 0, TINT, BNUMBER, 0, TUINT, BNUMBER, 0, TLONG, BNUMBER, 0, TULONG, BNUMBER, 0, TVLONG, BNUMBER, 0, TUVLONG, BNUMBER, 0, TFLOAT, BNUMBER, 0, TDOUBLE, BNUMBER, 0, TIND, BINTEGER, 0, -1, 0, 0, }; int32 tcast[NALLTYPES]; Init tcastinit[] = { TCHAR, BNUMBER|BIND|BVOID, 0, TUCHAR, BNUMBER|BIND|BVOID, 0, TSHORT, BNUMBER|BIND|BVOID, 0, TUSHORT, BNUMBER|BIND|BVOID, 0, TINT, BNUMBER|BIND|BVOID, 0, TUINT, BNUMBER|BIND|BVOID, 0, TLONG, BNUMBER|BIND|BVOID, 0, TULONG, BNUMBER|BIND|BVOID, 0, TVLONG, BNUMBER|BIND|BVOID, 0, TUVLONG, BNUMBER|BIND|BVOID, 0, TFLOAT, BNUMBER|BVOID, 0, TDOUBLE, BNUMBER|BVOID, 0, TIND, BINTEGER|BIND|BVOID, 0, TVOID, BVOID, 0, TSTRUCT, BSTRUCT|BVOID, 0, TUNION, BUNION|BVOID, 0, -1, 0, 0, }; int32 tadd[NALLTYPES]; Init taddinit[] = { TCHAR, BNUMBER|BIND, 0, TUCHAR, BNUMBER|BIND, 0, TSHORT, BNUMBER|BIND, 0, TUSHORT, BNUMBER|BIND, 0, TINT, BNUMBER|BIND, 0, TUINT, BNUMBER|BIND, 0, TLONG, BNUMBER|BIND, 0, TULONG, BNUMBER|BIND, 0, TVLONG, BNUMBER|BIND, 0, TUVLONG, BNUMBER|BIND, 0, TFLOAT, BNUMBER, 0, TDOUBLE, BNUMBER, 0, TIND, BINTEGER, 0, -1, 0, 0, }; int32 tsub[NALLTYPES]; Init tsubinit[] = { TCHAR, BNUMBER, 0, TUCHAR, BNUMBER, 0, TSHORT, BNUMBER, 0, TUSHORT, BNUMBER, 0, TINT, BNUMBER, 0, TUINT, BNUMBER, 0, TLONG, BNUMBER, 0, TULONG, BNUMBER, 0, TVLONG, BNUMBER, 0, TUVLONG, BNUMBER, 0, TFLOAT, BNUMBER, 0, TDOUBLE, BNUMBER, 0, TIND, BINTEGER|BIND, 0, -1, 0, 0, }; int32 tmul[NALLTYPES]; Init tmulinit[] = { TCHAR, BNUMBER, 0, TUCHAR, BNUMBER, 0, TSHORT, BNUMBER, 0, TUSHORT, BNUMBER, 0, TINT, BNUMBER, 0, TUINT, BNUMBER, 0, TLONG, BNUMBER, 0, TULONG, BNUMBER, 0, TVLONG, BNUMBER, 0, TUVLONG, BNUMBER, 0, TFLOAT, BNUMBER, 0, TDOUBLE, BNUMBER, 0, -1, 0, 0, }; int32 tand[NALLTYPES]; Init tandinit[] = { TCHAR, BINTEGER, 0, TUCHAR, BINTEGER, 0, TSHORT, BINTEGER, 0, TUSHORT, BINTEGER, 0, TINT, BNUMBER, 0, TUINT, BNUMBER, 0, TLONG, BINTEGER, 0, TULONG, BINTEGER, 0, TVLONG, BINTEGER, 0, TUVLONG, BINTEGER, 0, -1, 0, 0, }; int32 trel[NALLTYPES]; Init trelinit[] = { TCHAR, BNUMBER, 0, TUCHAR, BNUMBER, 0, TSHORT, BNUMBER, 0, TUSHORT, BNUMBER, 0, TINT, BNUMBER, 0, TUINT, BNUMBER, 0, TLONG, BNUMBER, 0, TULONG, BNUMBER, 0, TVLONG, BNUMBER, 0, TUVLONG, BNUMBER, 0, TFLOAT, BNUMBER, 0, TDOUBLE, BNUMBER, 0, TIND, BIND, 0, -1, 0, 0, }; int32 tfunct[1] = { BFUNC, }; int32 tindir[1] = { BIND, }; int32 tdot[1] = { BSTRUCT|BUNION, }; int32 tnot[1] = { BNUMBER|BIND, }; int32 targ[1] = { BNUMBER|BIND|BSTRUCT|BUNION, }; uchar tab[NTYPE][NTYPE] = { /*TXXX*/ { 0, }, /*TCHAR*/ { 0, TCHAR, TUCHAR, TSHORT, TUSHORT, TINT, TUINT, TLONG, TULONG, TVLONG, TUVLONG, TFLOAT, TDOUBLE, TIND, }, /*TUCHAR*/ { 0, TUCHAR, TUCHAR, TUSHORT, TUSHORT, TUINT, TUINT, TULONG, TULONG, TUVLONG, TUVLONG, TFLOAT, TDOUBLE, TIND, }, /*TSHORT*/ { 0, TSHORT, TUSHORT, TSHORT, TUSHORT, TINT, TUINT, TLONG, TULONG, TVLONG, TUVLONG, TFLOAT, TDOUBLE, TIND, }, /*TUSHORT*/ { 0, TUSHORT, TUSHORT, TUSHORT, TUSHORT, TUINT, TUINT, TULONG, TULONG, TUVLONG, TUVLONG, TFLOAT, TDOUBLE, TIND, }, /*TINT*/ { 0, TINT, TUINT, TINT, TUINT, TINT, TUINT, TLONG, TULONG, TVLONG, TUVLONG, TFLOAT, TDOUBLE, TIND, }, /*TUINT*/ { 0, TUINT, TUINT, TUINT, TUINT, TUINT, TUINT, TULONG, TULONG, TUVLONG, TUVLONG, TFLOAT, TDOUBLE, TIND, }, /*TLONG*/ { 0, TLONG, TULONG, TLONG, TULONG, TLONG, TULONG, TLONG, TULONG, TVLONG, TUVLONG, TFLOAT, TDOUBLE, TIND, }, /*TULONG*/ { 0, TULONG, TULONG, TULONG, TULONG, TULONG, TULONG, TULONG, TULONG, TUVLONG, TUVLONG, TFLOAT, TDOUBLE, TIND, }, /*TVLONG*/ { 0, TVLONG, TUVLONG, TVLONG, TUVLONG, TVLONG, TUVLONG, TVLONG, TUVLONG, TVLONG, TUVLONG, TFLOAT, TDOUBLE, TIND, }, /*TUVLONG*/ { 0, TUVLONG, TUVLONG, TUVLONG, TUVLONG, TUVLONG, TUVLONG, TUVLONG, TUVLONG, TUVLONG, TUVLONG, TFLOAT, TDOUBLE, TIND, }, /*TFLOAT*/ { 0, TFLOAT, TFLOAT, TFLOAT, TFLOAT, TFLOAT, TFLOAT, TFLOAT, TFLOAT, TFLOAT, TFLOAT, TFLOAT, TDOUBLE, TIND, }, /*TDOUBLE*/ { 0, TDOUBLE, TDOUBLE, TDOUBLE, TDOUBLE, TDOUBLE, TDOUBLE, TDOUBLE, TDOUBLE, TDOUBLE, TDOUBLE, TFLOAT, TDOUBLE, TIND, }, /*TIND*/ { 0, TIND, TIND, TIND, TIND, TIND, TIND, TIND, TIND, TIND, TIND, TIND, TIND, TIND, }, }; void urk(char *name, int max, int i) { if(i >= max) { fprint(2, "bad tinit: %s %d>=%d\n", name, i, max); exits("init"); } } void tinit(void) { int *ip; Init *p; for(p=thashinit; p->code >= 0; p++) { urk("thash", nelem(thash), p->code); thash[p->code] = p->value; } for(p=bnamesinit; p->code >= 0; p++) { urk("bnames", nelem(bnames), p->code); bnames[p->code] = p->s; } for(p=tnamesinit; p->code >= 0; p++) { urk("tnames", nelem(tnames), p->code); tnames[p->code] = p->s; } for(p=gnamesinit; p->code >= 0; p++) { urk("gnames", nelem(gnames), p->code); gnames[p->code] = p->s; } for(p=qnamesinit; p->code >= 0; p++) { urk("qnames", nelem(qnames), p->code); qnames[p->code] = p->s; } for(p=cnamesinit; p->code >= 0; p++) { urk("cnames", nelem(cnames), p->code); cnames[p->code] = p->s; } for(p=onamesinit; p->code >= 0; p++) { urk("onames", nelem(onames), p->code); onames[p->code] = p->s; } for(ip=typeiinit; *ip>=0; ip++) { urk("typei", nelem(typei), *ip); typei[*ip] = 1; } for(ip=typeuinit; *ip>=0; ip++) { urk("typeu", nelem(typeu), *ip); typeu[*ip] = 1; } for(ip=typesuvinit; *ip>=0; ip++) { urk("typesuv", nelem(typesuv), *ip); typesuv[*ip] = 1; } for(ip=typeilpinit; *ip>=0; ip++) { urk("typeilp", nelem(typeilp), *ip); typeilp[*ip] = 1; } for(ip=typechlinit; *ip>=0; ip++) { urk("typechl", nelem(typechl), *ip); typechl[*ip] = 1; typechlv[*ip] = 1; typechlvp[*ip] = 1; } for(ip=typechlpinit; *ip>=0; ip++) { urk("typechlp", nelem(typechlp), *ip); typechlp[*ip] = 1; typechlvp[*ip] = 1; } for(ip=typechlpfdinit; *ip>=0; ip++) { urk("typechlpfd", nelem(typechlpfd), *ip); typechlpfd[*ip] = 1; } for(ip=typecinit; *ip>=0; ip++) { urk("typec", nelem(typec), *ip); typec[*ip] = 1; } for(ip=typehinit; *ip>=0; ip++) { urk("typeh", nelem(typeh), *ip); typeh[*ip] = 1; } for(ip=typeilinit; *ip>=0; ip++) { urk("typeil", nelem(typeil), *ip); typeil[*ip] = 1; } for(ip=typevinit; *ip>=0; ip++) { urk("typev", nelem(typev), *ip); typev[*ip] = 1; typechlv[*ip] = 1; typechlvp[*ip] = 1; } for(ip=typefdinit; *ip>=0; ip++) { urk("typefd", nelem(typefd), *ip); typefd[*ip] = 1; } for(ip=typeafinit; *ip>=0; ip++) { urk("typeaf", nelem(typeaf), *ip); typeaf[*ip] = 1; } for(ip=typesuinit; *ip >= 0; ip++) { urk("typesu", nelem(typesu), *ip); typesu[*ip] = 1; } for(p=tasigninit; p->code >= 0; p++) { urk("tasign", nelem(tasign), p->code); tasign[p->code] = p->value; } for(p=tasaddinit; p->code >= 0; p++) { urk("tasadd", nelem(tasadd), p->code); tasadd[p->code] = p->value; } for(p=tcastinit; p->code >= 0; p++) { urk("tcast", nelem(tcast), p->code); tcast[p->code] = p->value; } for(p=taddinit; p->code >= 0; p++) { urk("tadd", nelem(tadd), p->code); tadd[p->code] = p->value; } for(p=tsubinit; p->code >= 0; p++) { urk("tsub", nelem(tsub), p->code); tsub[p->code] = p->value; } for(p=tmulinit; p->code >= 0; p++) { urk("tmul", nelem(tmul), p->code); tmul[p->code] = p->value; } for(p=tandinit; p->code >= 0; p++) { urk("tand", nelem(tand), p->code); tand[p->code] = p->value; } for(p=trelinit; p->code >= 0; p++) { urk("trel", nelem(trel), p->code); trel[p->code] = p->value; } /* 32-bit defaults */ typeword = typechlp; typecmplx = typesuv; } /* * return 1 if it is impossible to jump into the middle of n. */ static int deadhead(Node *n, int caseok) { loop: if(n == Z) return 1; switch(n->op) { case OLIST: if(!deadhead(n->left, caseok)) return 0; rloop: n = n->right; goto loop; case ORETURN: break; case OLABEL: return 0; case OGOTO: break; case OCASE: if(!caseok) return 0; goto rloop; case OSWITCH: return deadhead(n->right, 1); case OWHILE: case ODWHILE: goto rloop; case OFOR: goto rloop; case OCONTINUE: break; case OBREAK: break; case OIF: return deadhead(n->right->left, caseok) && deadhead(n->right->right, caseok); case OSET: case OUSED: break; } return 1; } int deadheads(Node *c) { return deadhead(c->left, 0) && deadhead(c->right, 0); } int mixedasop(Type *l, Type *r) { return !typefd[l->etype] && typefd[r->etype]; } LSym* linksym(Sym *s) { if(s == nil) return nil; if(s->lsym != nil) return s->lsym; return linklookup(ctxt, s->name, s->class == CSTATIC); } go/src/cmd/cc/y.tab.c0100644000000000000000000036276212412656734014614 0ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 2.7.12-4996. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.7.12-4996" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Copy the first part of user declarations. */ /* Line 371 of yacc.c */ #line 31 "cc.y" #include #include /* if we don't, bison will, and cc.h re-#defines getc */ #include "cc.h" /* Line 371 of yacc.c */ #line 74 "y.tab.c" # ifndef YY_NULL # if defined __cplusplus && 201103L <= __cplusplus # define YY_NULL nullptr # else # define YY_NULL 0 # endif # endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* In a future release of Bison, this section will be replaced by #include "y.tab.h". */ #ifndef YY_YY_Y_TAB_H_INCLUDED # define YY_YY_Y_TAB_H_INCLUDED /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int yydebug; #endif /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { LORE = 258, LXORE = 259, LANDE = 260, LLSHE = 261, LRSHE = 262, LMDE = 263, LDVE = 264, LMLE = 265, LME = 266, LPE = 267, LOROR = 268, LANDAND = 269, LNE = 270, LEQ = 271, LGE = 272, LLE = 273, LRSH = 274, LLSH = 275, LMG = 276, LPP = 277, LMM = 278, LNAME = 279, LTYPE = 280, LFCONST = 281, LDCONST = 282, LCONST = 283, LLCONST = 284, LUCONST = 285, LULCONST = 286, LVLCONST = 287, LUVLCONST = 288, LSTRING = 289, LLSTRING = 290, LAUTO = 291, LBREAK = 292, LCASE = 293, LCHAR = 294, LCONTINUE = 295, LDEFAULT = 296, LDO = 297, LDOUBLE = 298, LELSE = 299, LEXTERN = 300, LFLOAT = 301, LFOR = 302, LGOTO = 303, LIF = 304, LINT = 305, LLONG = 306, LPREFETCH = 307, LREGISTER = 308, LRETURN = 309, LSHORT = 310, LSIZEOF = 311, LUSED = 312, LSTATIC = 313, LSTRUCT = 314, LSWITCH = 315, LTYPEDEF = 316, LTYPESTR = 317, LUNION = 318, LUNSIGNED = 319, LWHILE = 320, LVOID = 321, LENUM = 322, LSIGNED = 323, LCONSTNT = 324, LVOLATILE = 325, LSET = 326, LSIGNOF = 327, LRESTRICT = 328, LINLINE = 329 }; #endif /* Tokens. */ #define LORE 258 #define LXORE 259 #define LANDE 260 #define LLSHE 261 #define LRSHE 262 #define LMDE 263 #define LDVE 264 #define LMLE 265 #define LME 266 #define LPE 267 #define LOROR 268 #define LANDAND 269 #define LNE 270 #define LEQ 271 #define LGE 272 #define LLE 273 #define LRSH 274 #define LLSH 275 #define LMG 276 #define LPP 277 #define LMM 278 #define LNAME 279 #define LTYPE 280 #define LFCONST 281 #define LDCONST 282 #define LCONST 283 #define LLCONST 284 #define LUCONST 285 #define LULCONST 286 #define LVLCONST 287 #define LUVLCONST 288 #define LSTRING 289 #define LLSTRING 290 #define LAUTO 291 #define LBREAK 292 #define LCASE 293 #define LCHAR 294 #define LCONTINUE 295 #define LDEFAULT 296 #define LDO 297 #define LDOUBLE 298 #define LELSE 299 #define LEXTERN 300 #define LFLOAT 301 #define LFOR 302 #define LGOTO 303 #define LIF 304 #define LINT 305 #define LLONG 306 #define LPREFETCH 307 #define LREGISTER 308 #define LRETURN 309 #define LSHORT 310 #define LSIZEOF 311 #define LUSED 312 #define LSTATIC 313 #define LSTRUCT 314 #define LSWITCH 315 #define LTYPEDEF 316 #define LTYPESTR 317 #define LUNION 318 #define LUNSIGNED 319 #define LWHILE 320 #define LVOID 321 #define LENUM 322 #define LSIGNED 323 #define LCONSTNT 324 #define LVOLATILE 325 #define LSET 326 #define LSIGNOF 327 #define LRESTRICT 328 #define LINLINE 329 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { /* Line 387 of yacc.c */ #line 36 "cc.y" Node* node; Sym* sym; Type* type; struct { Type* t; uchar c; } tycl; struct { Type* t1; Type* t2; Type* t3; uchar c; } tyty; struct { char* s; int32 l; } sval; int32 lval; double dval; vlong vval; /* Line 387 of yacc.c */ #line 292 "y.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE yylval; #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ #endif /* !YY_YY_Y_TAB_H_INCLUDED */ /* Copy the second part of user declarations. */ /* Line 390 of yacc.c */ #line 320 "y.tab.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ # define YY_(Msgid) Msgid # endif #endif #ifndef __attribute__ /* This feature is available in gcc versions 2.5 and later. */ # if (! defined __GNUC__ || __GNUC__ < 2 \ || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) # define __attribute__(Spec) /* empty */ # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) #else # define YYUSE(E) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(N) (N) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int yyi) #else static int YYID (yyi) int yyi; #endif { return yyi; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ while (YYID (0)) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 1188 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 99 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 75 /* YYNRULES -- Number of rules. */ #define YYNRULES 247 /* YYNRULES -- Number of states. */ #define YYNSTATES 417 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 329 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 97, 2, 2, 2, 35, 22, 2, 38, 93, 33, 31, 4, 32, 36, 34, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 17, 3, 25, 5, 26, 16, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 37, 2, 94, 21, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 95, 20, 96, 98, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 23, 24, 27, 28, 29, 30, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 4, 7, 10, 14, 15, 16, 23, 25, 26, 31, 35, 37, 41, 43, 47, 52, 57, 60, 64, 66, 67, 72, 76, 77, 82, 84, 88, 89, 94, 95, 101, 102, 104, 106, 110, 112, 116, 119, 120, 122, 125, 129, 131, 133, 138, 143, 146, 150, 154, 156, 160, 164, 167, 170, 173, 177, 179, 182, 184, 186, 189, 190, 192, 194, 197, 200, 204, 208, 212, 213, 216, 219, 221, 224, 228, 231, 234, 237, 239, 242, 244, 247, 250, 251, 254, 260, 268, 269, 280, 286, 294, 298, 304, 307, 310, 314, 320, 326, 332, 333, 335, 336, 338, 340, 342, 346, 348, 352, 356, 360, 364, 368, 372, 376, 380, 384, 388, 392, 396, 400, 404, 408, 412, 416, 420, 426, 430, 434, 438, 442, 446, 450, 454, 458, 462, 466, 470, 472, 478, 486, 488, 491, 494, 497, 500, 503, 506, 509, 512, 515, 518, 522, 528, 534, 539, 544, 548, 552, 555, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 585, 587, 590, 591, 593, 595, 599, 600, 605, 606, 608, 610, 612, 614, 617, 620, 624, 627, 631, 633, 635, 638, 639, 644, 647, 650, 651, 656, 659, 662, 663, 664, 672, 673, 679, 681, 683, 686, 687, 690, 692, 694, 696, 698, 701, 703, 705, 707, 711, 714, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 760, 762 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { 100, 0, -1, -1, 100, 101, -1, 152, 3, -1, 152, 104, 3, -1, -1, -1, 152, 106, 102, 111, 103, 129, -1, 106, -1, -1, 106, 105, 5, 123, -1, 104, 4, 104, -1, 107, -1, 33, 163, 106, -1, 172, -1, 38, 106, 93, -1, 107, 38, 127, 93, -1, 107, 37, 139, 94, -1, 155, 3, -1, 155, 109, 3, -1, 106, -1, -1, 106, 110, 5, 123, -1, 109, 4, 109, -1, -1, 111, 155, 112, 3, -1, 106, -1, 112, 4, 112, -1, -1, 154, 114, 116, 3, -1, -1, 113, 154, 115, 116, 3, -1, -1, 117, -1, 118, -1, 117, 4, 117, -1, 106, -1, 172, 17, 140, -1, 17, 140, -1, -1, 120, -1, 33, 163, -1, 33, 163, 120, -1, 121, -1, 122, -1, 121, 38, 127, 93, -1, 121, 37, 139, 94, -1, 38, 93, -1, 37, 139, 94, -1, 38, 120, 93, -1, 142, -1, 95, 126, 96, -1, 37, 140, 94, -1, 36, 173, -1, 124, 5, -1, 123, 4, -1, 125, 123, 4, -1, 124, -1, 125, 124, -1, 125, -1, 123, -1, 125, 123, -1, -1, 128, -1, 171, -1, 154, 119, -1, 154, 106, -1, 36, 36, 36, -1, 128, 4, 128, -1, 95, 130, 96, -1, -1, 130, 108, -1, 130, 133, -1, 132, -1, 131, 132, -1, 56, 142, 17, -1, 59, 17, -1, 42, 17, -1, 1, 3, -1, 135, -1, 131, 135, -1, 138, -1, 155, 109, -1, 138, 3, -1, -1, 136, 129, -1, 67, 38, 141, 93, 133, -1, 67, 38, 141, 93, 133, 62, 133, -1, -1, 137, 65, 38, 134, 3, 138, 3, 138, 93, 133, -1, 83, 38, 141, 93, 133, -1, 60, 133, 83, 38, 141, 93, 3, -1, 72, 138, 3, -1, 78, 38, 141, 93, 133, -1, 55, 3, -1, 58, 3, -1, 66, 173, 3, -1, 75, 38, 148, 93, 3, -1, 70, 38, 148, 93, 3, -1, 89, 38, 148, 93, 3, -1, -1, 141, -1, -1, 140, -1, 142, -1, 142, -1, 141, 4, 141, -1, 143, -1, 142, 33, 142, -1, 142, 34, 142, -1, 142, 35, 142, -1, 142, 31, 142, -1, 142, 32, 142, -1, 142, 29, 142, -1, 142, 30, 142, -1, 142, 25, 142, -1, 142, 26, 142, -1, 142, 28, 142, -1, 142, 27, 142, -1, 142, 24, 142, -1, 142, 23, 142, -1, 142, 22, 142, -1, 142, 21, 142, -1, 142, 20, 142, -1, 142, 19, 142, -1, 142, 18, 142, -1, 142, 16, 141, 17, 142, -1, 142, 5, 142, -1, 142, 15, 142, -1, 142, 14, 142, -1, 142, 13, 142, -1, 142, 12, 142, -1, 142, 11, 142, -1, 142, 9, 142, -1, 142, 10, 142, -1, 142, 8, 142, -1, 142, 7, 142, -1, 142, 6, 142, -1, 144, -1, 38, 154, 119, 93, 143, -1, 38, 154, 119, 93, 95, 126, 96, -1, 145, -1, 33, 143, -1, 22, 143, -1, 31, 143, -1, 32, 143, -1, 97, 143, -1, 98, 143, -1, 40, 143, -1, 41, 143, -1, 74, 144, -1, 90, 144, -1, 38, 141, 93, -1, 74, 38, 154, 119, 93, -1, 90, 38, 154, 119, 93, -1, 145, 38, 148, 93, -1, 145, 37, 141, 94, -1, 145, 39, 173, -1, 145, 36, 173, -1, 145, 40, -1, 145, 41, -1, 171, -1, 46, -1, 47, -1, 48, -1, 49, -1, 45, -1, 44, -1, 50, -1, 51, -1, 146, -1, 147, -1, 52, -1, 146, 52, -1, 53, -1, 147, 53, -1, -1, 149, -1, 142, -1, 149, 4, 149, -1, -1, 95, 151, 113, 96, -1, -1, 155, -1, 156, -1, 168, -1, 165, -1, 156, 162, -1, 168, 162, -1, 165, 156, 163, -1, 165, 168, -1, 165, 168, 162, -1, 153, -1, 153, -1, 77, 173, -1, -1, 77, 173, 157, 150, -1, 77, 150, -1, 81, 173, -1, -1, 81, 173, 158, 150, -1, 81, 150, -1, 85, 173, -1, -1, -1, 85, 173, 159, 95, 160, 167, 96, -1, -1, 85, 95, 161, 167, 96, -1, 43, -1, 164, -1, 162, 164, -1, -1, 163, 170, -1, 168, -1, 170, -1, 169, -1, 166, -1, 165, 166, -1, 170, -1, 169, -1, 42, -1, 42, 5, 142, -1, 167, 4, -1, 167, 4, 167, -1, 57, -1, 73, -1, 68, -1, 69, -1, 86, -1, 82, -1, 64, -1, 61, -1, 84, -1, 54, -1, 76, -1, 63, -1, 79, -1, 80, -1, 71, -1, 92, -1, 87, -1, 88, -1, 91, -1, 42, -1, 173, -1, 42, -1, 43, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 101, 101, 102, 108, 112, 114, 128, 113, 143, 148, 147, 155, 158, 159, 166, 167, 171, 175, 184, 188, 194, 200, 199, 211, 224, 225, 228, 232, 239, 238, 244, 243, 250, 254, 257, 261, 264, 269, 273, 282, 285, 288, 293, 298, 301, 302, 306, 312, 316, 320, 326, 327, 333, 337, 342, 345, 346, 350, 351, 357, 358, 359, 365, 368, 375, 376, 381, 386, 390, 396, 406, 409, 413, 419, 420, 426, 430, 434, 440, 444, 445, 451, 452, 458, 459, 459, 470, 476, 484, 484, 495, 499, 503, 508, 522, 526, 530, 534, 538, 542, 548, 551, 554, 557, 560, 567, 568, 574, 575, 579, 583, 587, 591, 595, 599, 603, 607, 611, 615, 619, 623, 627, 631, 635, 639, 643, 647, 651, 655, 659, 663, 667, 671, 675, 679, 683, 687, 691, 697, 698, 705, 713, 714, 718, 722, 726, 730, 734, 738, 742, 746, 750, 756, 760, 766, 772, 780, 784, 789, 794, 798, 802, 803, 810, 817, 824, 831, 838, 845, 852, 859, 860, 863, 873, 891, 901, 919, 922, 925, 926, 933, 932, 955, 959, 962, 967, 972, 978, 986, 992, 998, 1004, 1012, 1020, 1027, 1033, 1032, 1044, 1052, 1058, 1057, 1069, 1077, 1086, 1090, 1085, 1107, 1106, 1115, 1121, 1122, 1128, 1131, 1137, 1138, 1139, 1142, 1143, 1149, 1150, 1153, 1157, 1161, 1162, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1185, 1186, 1187, 1190, 1205, 1217, 1218 }; #endif #if YYDEBUG || YYERROR_VERBOSE || 0 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "';'", "','", "'='", "LORE", "LXORE", "LANDE", "LLSHE", "LRSHE", "LMDE", "LDVE", "LMLE", "LME", "LPE", "'?'", "':'", "LOROR", "LANDAND", "'|'", "'^'", "'&'", "LNE", "LEQ", "'<'", "'>'", "LGE", "LLE", "LRSH", "LLSH", "'+'", "'-'", "'*'", "'/'", "'%'", "'.'", "'['", "'('", "LMG", "LPP", "LMM", "LNAME", "LTYPE", "LFCONST", "LDCONST", "LCONST", "LLCONST", "LUCONST", "LULCONST", "LVLCONST", "LUVLCONST", "LSTRING", "LLSTRING", "LAUTO", "LBREAK", "LCASE", "LCHAR", "LCONTINUE", "LDEFAULT", "LDO", "LDOUBLE", "LELSE", "LEXTERN", "LFLOAT", "LFOR", "LGOTO", "LIF", "LINT", "LLONG", "LPREFETCH", "LREGISTER", "LRETURN", "LSHORT", "LSIZEOF", "LUSED", "LSTATIC", "LSTRUCT", "LSWITCH", "LTYPEDEF", "LTYPESTR", "LUNION", "LUNSIGNED", "LWHILE", "LVOID", "LENUM", "LSIGNED", "LCONSTNT", "LVOLATILE", "LSET", "LSIGNOF", "LRESTRICT", "LINLINE", "')'", "']'", "'{'", "'}'", "'!'", "'~'", "$accept", "prog", "xdecl", "$@1", "$@2", "xdlist", "$@3", "xdecor", "xdecor2", "adecl", "adlist", "$@4", "pdecl", "pdlist", "edecl", "$@5", "$@6", "zedlist", "edlist", "edecor", "abdecor", "abdecor1", "abdecor2", "abdecor3", "init", "qual", "qlist", "ilist", "zarglist", "arglist", "block", "slist", "labels", "label", "stmnt", "forexpr", "ulstmnt", "$@7", "$@8", "zcexpr", "zexpr", "lexpr", "cexpr", "expr", "xuexpr", "uexpr", "pexpr", "string", "lstring", "zelist", "elist", "sbody", "@9", "zctlist", "types", "tlist", "ctlist", "complex", "$@10", "$@11", "$@12", "$@13", "$@14", "gctnlist", "zgnlist", "gctname", "gcnlist", "gcname", "enum", "tname", "cname", "gname", "name", "tag", "ltag", YY_NULL }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 59, 44, 61, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 63, 58, 268, 269, 124, 94, 38, 270, 271, 60, 62, 272, 273, 274, 275, 43, 45, 42, 47, 37, 46, 91, 40, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 41, 93, 123, 125, 33, 126 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 99, 100, 100, 101, 101, 102, 103, 101, 104, 105, 104, 104, 106, 106, 107, 107, 107, 107, 108, 108, 109, 110, 109, 109, 111, 111, 112, 112, 114, 113, 115, 113, 116, 116, 117, 117, 118, 118, 118, 119, 119, 120, 120, 120, 121, 121, 121, 122, 122, 122, 123, 123, 124, 124, 124, 125, 125, 125, 125, 126, 126, 126, 127, 127, 128, 128, 128, 128, 128, 129, 130, 130, 130, 131, 131, 132, 132, 132, 133, 133, 133, 134, 134, 135, 136, 135, 135, 135, 137, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 138, 138, 139, 139, 140, 141, 141, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 143, 143, 143, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 146, 146, 147, 147, 148, 148, 149, 149, 151, 150, 152, 152, 153, 153, 153, 153, 153, 153, 153, 153, 154, 155, 156, 157, 156, 156, 156, 158, 156, 156, 156, 159, 160, 156, 161, 156, 156, 162, 162, 163, 163, 164, 164, 164, 165, 165, 166, 166, 167, 167, 167, 167, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 169, 169, 169, 169, 169, 169, 170, 170, 170, 171, 172, 173, 173 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 2, 3, 0, 0, 6, 1, 0, 4, 3, 1, 3, 1, 3, 4, 4, 2, 3, 1, 0, 4, 3, 0, 4, 1, 3, 0, 4, 0, 5, 0, 1, 1, 3, 1, 3, 2, 0, 1, 2, 3, 1, 1, 4, 4, 2, 3, 3, 1, 3, 3, 2, 2, 2, 3, 1, 2, 1, 1, 2, 0, 1, 1, 2, 2, 3, 3, 3, 0, 2, 2, 1, 2, 3, 2, 2, 2, 1, 2, 1, 2, 2, 0, 2, 5, 7, 0, 10, 5, 7, 3, 5, 2, 2, 3, 5, 5, 5, 0, 1, 0, 1, 1, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 7, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 0, 1, 1, 3, 0, 4, 0, 1, 1, 1, 1, 2, 2, 3, 2, 3, 1, 1, 2, 0, 4, 2, 2, 0, 4, 2, 2, 0, 0, 7, 0, 5, 1, 1, 2, 0, 2, 1, 1, 1, 1, 2, 1, 1, 1, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. Performed when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 2, 183, 1, 209, 234, 225, 232, 236, 231, 227, 228, 239, 226, 235, 0, 237, 238, 0, 230, 233, 0, 229, 241, 242, 243, 240, 3, 0, 194, 184, 185, 187, 217, 186, 220, 219, 246, 247, 181, 198, 195, 202, 199, 207, 203, 4, 212, 0, 0, 6, 13, 15, 245, 188, 210, 214, 216, 215, 212, 218, 191, 189, 0, 0, 0, 0, 0, 0, 0, 5, 0, 25, 0, 103, 63, 211, 190, 192, 0, 193, 29, 197, 201, 221, 0, 205, 14, 213, 16, 12, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 244, 168, 167, 163, 164, 165, 166, 169, 170, 173, 175, 0, 0, 0, 0, 0, 104, 105, 108, 139, 142, 171, 172, 162, 0, 0, 64, 40, 65, 182, 31, 33, 0, 223, 208, 0, 0, 0, 0, 11, 51, 144, 145, 146, 143, 0, 106, 40, 149, 150, 0, 151, 0, 152, 147, 148, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 160, 161, 174, 176, 0, 17, 0, 212, 103, 0, 67, 66, 41, 44, 45, 33, 0, 37, 0, 34, 35, 15, 222, 224, 0, 71, 8, 27, 0, 0, 0, 61, 58, 60, 0, 0, 153, 212, 0, 0, 40, 40, 128, 138, 137, 136, 134, 135, 133, 132, 131, 130, 129, 0, 126, 125, 124, 123, 122, 121, 120, 116, 117, 119, 118, 114, 115, 112, 113, 109, 110, 111, 159, 0, 179, 0, 178, 158, 68, 69, 42, 0, 48, 0, 103, 63, 0, 39, 30, 0, 0, 206, 0, 26, 0, 54, 0, 56, 55, 62, 59, 52, 107, 42, 0, 0, 0, 0, 157, 156, 0, 43, 49, 50, 0, 0, 32, 36, 38, 0, 244, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 70, 72, 85, 74, 73, 80, 0, 0, 0, 102, 0, 28, 53, 57, 0, 140, 154, 155, 127, 180, 47, 46, 79, 78, 95, 0, 96, 77, 0, 0, 0, 177, 0, 177, 0, 0, 177, 75, 81, 86, 0, 84, 19, 21, 0, 0, 76, 0, 97, 0, 0, 93, 0, 0, 0, 0, 101, 0, 20, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 24, 0, 87, 99, 98, 94, 91, 100, 101, 83, 23, 0, 0, 0, 92, 88, 101, 0, 0, 90 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 26, 71, 136, 48, 72, 208, 50, 326, 369, 382, 91, 219, 78, 131, 206, 209, 210, 211, 202, 203, 204, 205, 222, 223, 224, 225, 125, 126, 217, 283, 327, 328, 329, 393, 330, 331, 332, 333, 115, 116, 334, 146, 118, 119, 120, 121, 122, 266, 267, 39, 62, 27, 79, 127, 29, 30, 63, 64, 66, 135, 65, 53, 67, 54, 31, 32, 84, 33, 34, 35, 123, 51, 52 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -331 static const yytype_int16 yypact[] = { -331, 548, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -3, -331, -331, -3, -331, -331, 149, -331, -331, -331, -331, -331, -331, 264, -331, -331, 965, 929, -331, 965, -331, -331, -331, -331, -331, -331, -75, -331, -72, -331, -60, -331, -331, 307, 60, 270, 156, -331, -331, 965, -331, -331, -331, -331, -331, -331, 965, 965, 929, -44, -44, 29, -15, 199, -10, -331, 307, -331, 83, 756, 849, -331, 140, 965, 889, -331, -331, -331, -331, 86, 12, -331, -331, -331, -331, -331, 90, 929, 686, 756, 756, 756, 756, 615, 756, 756, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, 791, 826, 756, 756, 9, -331, 1084, -331, -331, 708, 54, 57, -331, 110, 56, 152, 310, -331, -331, -331, 279, 756, 29, -331, 29, 63, 307, 165, -331, 1084, -331, -331, -331, -331, 30, 1084, 44, -331, -331, 615, -331, 615, -331, -331, -331, -331, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 157, 756, 756, 157, -331, -331, -331, -331, 115, -331, 849, -331, 756, 128, -331, -331, -331, 182, -331, 279, 756, -331, 164, 200, -331, 208, 1084, -331, 13, -331, -331, -331, 262, 157, 756, 225, 228, 165, 73, 756, -331, -331, -7, 150, 44, 44, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 28, 304, 1100, 1115, 1129, 1142, 1153, 1153, 433, 433, 433, 433, 333, 333, 265, 265, -331, -331, -331, -331, 8, 1084, 153, 236, -331, -331, -331, 147, 158, -331, 161, 756, 849, 247, -331, -331, 279, 756, -331, 341, -331, 307, -331, 175, -331, -331, 254, 228, -331, -331, 135, 721, 188, 190, 756, -331, -331, 756, -331, -331, -331, 191, 211, -331, -331, -331, 298, 301, 338, 756, 343, 339, 439, 157, 319, 321, 756, 322, 323, 324, 332, -331, -331, 509, -331, -331, -331, 63, 306, 372, 373, 277, -331, -331, -331, 165, -331, -331, -331, 425, -331, -331, -331, -331, -331, -331, 1053, -331, -331, 293, 375, 756, 756, 400, 756, 756, 756, 756, -331, -331, -331, 396, -331, -331, 430, 285, 377, -331, 431, -331, 55, 381, -331, 382, 62, 64, 383, 615, 473, -331, 307, -331, 756, 439, 479, 490, 439, 439, 493, 497, -331, 307, 686, -331, 66, 440, -331, -331, -331, -331, -331, 756, 499, -331, 498, 439, 504, -331, -331, 756, 415, 439, -331 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -331, -331, -331, -331, -331, 445, -331, -26, -331, -331, -330, -331, -331, 233, -331, -331, -331, 313, 230, -331, -132, -187, -331, -331, -82, 292, -331, 181, 245, 326, 193, -331, -331, 198, -227, -331, 203, -331, -331, -309, -181, -183, -83, -45, -38, 243, -331, -331, -331, -175, 226, 10, -331, -331, -1, 0, -88, 495, -331, -331, -331, -331, -331, -14, -51, -28, -331, 501, -85, 218, 231, -24, -52, -127, -12 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -205 static const yytype_int16 yytable[] = { 28, 49, 40, 137, 212, 42, 57, 76, 44, 57, 139, 357, 226, 274, 145, 230, 133, 133, 272, 61, -196, 68, 128, -200, 278, 75, 228, 41, 117, 57, 199, 229, 226, 75, 226, -204, 57, 57, 287, 36, 37, 86, 274, 87, 90, 298, 77, 140, 214, 75, 215, 38, 87, 57, 397, 141, 142, 143, 144, 226, 148, 149, 80, 69, 70, 406, 226, 145, 226, 145, 226, 83, 394, 81, 82, 154, 155, 228, 130, 212, 85, 199, 229, 88, 302, 244, 273, 213, 92, 353, 28, 132, 38, 140, 305, -10, 410, 147, 309, 296, 297, 201, 299, 156, 414, 264, 193, 302, 134, 282, 194, 218, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 227, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 290, 293, 265, 128, 195, 271, 387, 196, 231, 269, 232, 212, 117, 390, 197, 391, 216, 408, 399, 198, 117, 402, 403, 199, 200, 279, 228, 292, 36, 37, 199, 229, 68, 263, 117, 294, 268, 140, 198, 375, 412, 377, 199, 200, 380, 93, 416, 36, 37, 36, 37, 73, 74, 335, 94, 95, 96, 36, 37, 220, 221, 97, 280, 98, 99, 100, 286, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 275, 276, 273, 22, 23, 128, 281, 24, 22, 23, 288, 117, 24, 46, 289, 22, 23, 117, 47, 24, 111, 301, 36, 37, 295, 43, 86, 300, 87, 55, 60, 307, 55, 303, 343, 304, 112, 265, 340, 338, 218, 138, 56, 113, 114, 56, 284, 285, 45, 350, 337, 87, 55, 374, -9, -9, -10, 378, 379, 55, 55, 367, 341, 28, 342, 56, 345, 22, 23, 383, 384, 24, 56, 56, 395, 140, 55, 207, 46, 184, 185, 186, 347, 47, 398, 346, 354, 36, 37, 56, 368, 46, 265, 46, 265, 407, 47, 265, 47, 348, 36, 37, 36, 37, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 46, 349, 310, 198, -101, 47, 351, 199, 200, 36, 37, 140, 36, 37, 151, 153, 352, 355, 368, 356, 358, 359, 360, 93, 182, 183, 184, 185, 186, 368, 361, 365, 94, 95, 96, 366, 372, 226, 373, 97, 28, 98, 99, 311, 3, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 4, 312, 313, 5, 314, 315, 316, 6, 376, 7, 8, -89, 317, 318, 9, 10, 319, 11, 320, 12, 111, 321, 13, 14, 322, 15, 16, 17, 18, 323, 19, 20, 21, 22, 23, 324, 112, 24, 25, 381, -22, -85, 325, 113, 114, 310, 168, -101, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 93, 180, 181, 182, 183, 184, 185, 186, 386, 94, 95, 96, 385, 388, 389, 392, 97, 396, 98, 99, 311, 400, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 401, 312, 313, 404, 314, 315, 316, 405, 411, 409, 384, -89, 317, 318, 413, 415, 319, 308, 320, -101, 111, 321, 89, 291, 322, 336, 277, 370, 306, 323, 270, 364, 362, 58, 344, 324, 112, 363, 93, 59, 0, -85, 0, 113, 114, 0, 0, 94, 95, 96, 0, 0, 0, 0, 97, 2, 98, 99, 311, 0, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, 312, 313, 0, 314, 315, 316, 0, 0, 0, 0, -89, 317, 318, 0, 0, 319, 0, 320, 0, 111, 321, 0, 0, 322, 0, 0, 0, 3, 323, 0, 0, 0, 0, 0, 324, 112, 0, 0, 4, 0, 0, 5, 113, 114, 0, 6, 0, 7, 8, 0, 0, 0, 9, 10, 0, 11, 0, 12, 0, 0, 13, 14, 0, 15, 16, 17, 18, 0, 19, 20, 21, 22, 23, 93, 0, 24, 25, 0, 0, 0, 0, 0, 94, 95, 96, 0, 0, 0, 0, 97, 0, 98, 99, 100, 3, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 4, 0, 0, 5, 0, 0, 0, 6, 0, 7, 8, 0, 0, 0, 9, 10, 0, 11, 0, 12, 111, 0, 13, 14, 0, 15, 16, 17, 18, 0, 19, 20, 21, 22, 23, 0, 112, 24, 25, 93, 0, 0, 0, 113, 114, 0, 0, 0, 94, 95, 96, 0, 0, 0, 0, 97, 0, 98, 99, 100, 0, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, 0, 0, 93, 187, 188, 189, 190, 191, 192, 0, 0, 94, 95, 96, 0, 0, 0, 0, 97, 111, 98, 99, 100, 0, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, 112, 0, 93, 0, 0, 138, 0, 113, 114, 0, 0, 94, 95, 96, 0, 0, 0, 0, 97, 111, 98, 99, 100, 0, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, 112, 0, 93, 0, 0, 339, 0, 113, 114, 0, 0, 94, 95, 96, 0, 0, 0, 0, 150, 111, 98, 99, 100, 0, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, 112, 0, 93, 0, 0, 0, 0, 113, 114, 0, 0, 94, 95, 96, 0, 0, 0, 0, 152, 111, 98, 99, 100, 0, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, 112, 0, 0, 0, 124, 0, 0, 113, 114, 0, 100, 3, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 4, 0, 0, 5, 0, 0, 0, 6, 0, 7, 8, 0, 0, 112, 9, 10, 0, 11, 0, 12, 113, 114, 13, 14, 0, 15, 16, 17, 18, 3, 19, 20, 21, 22, 23, 0, 0, 24, 25, 0, 4, 0, 0, 5, 0, 0, 0, 6, 0, 7, 8, 0, 0, 0, 9, 10, 0, 11, 0, 12, 0, 0, 13, 14, 0, 15, 16, 17, 18, 3, 19, 20, 21, 22, 23, 0, 0, 24, 25, 0, 4, 0, 129, 5, 0, 0, 0, 6, 0, 7, 8, 0, 0, 0, 9, 10, 0, 11, 0, 12, 0, 0, 13, 14, 0, 15, 16, 17, 18, 0, 19, 20, 21, 22, 23, 0, 4, 24, 25, 5, 0, 0, 0, 6, 0, 7, 8, 0, 0, 0, 9, 10, 0, 11, 0, 12, 0, 0, 13, 0, 0, 15, 16, 0, 18, 0, 19, 0, 21, 22, 23, 0, 0, 24, 25, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 371, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 0, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186 }; #define yypact_value_is_default(Yystate) \ (!!((Yystate) == (-331))) #define yytable_value_is_error(Yytable_value) \ YYID (0) static const yytype_int16 yycheck[] = { 1, 27, 14, 91, 131, 17, 30, 58, 20, 33, 92, 320, 4, 200, 97, 147, 4, 4, 199, 33, 95, 47, 74, 95, 207, 53, 33, 17, 73, 53, 37, 38, 4, 61, 4, 95, 60, 61, 221, 42, 43, 67, 229, 67, 70, 17, 60, 92, 133, 77, 135, 95, 76, 77, 384, 93, 94, 95, 96, 4, 98, 99, 62, 3, 4, 395, 4, 150, 4, 152, 4, 42, 381, 63, 64, 113, 114, 33, 78, 206, 95, 37, 38, 93, 271, 168, 93, 132, 5, 316, 91, 5, 95, 138, 275, 5, 405, 97, 281, 231, 232, 127, 94, 94, 413, 188, 52, 294, 96, 96, 53, 137, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 93, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 224, 226, 189, 197, 36, 198, 93, 93, 150, 36, 152, 280, 199, 93, 4, 93, 95, 93, 387, 33, 207, 390, 391, 37, 38, 3, 33, 96, 42, 43, 37, 38, 200, 187, 221, 228, 190, 224, 33, 356, 409, 358, 37, 38, 361, 22, 415, 42, 43, 42, 43, 37, 38, 283, 31, 32, 33, 42, 43, 36, 37, 38, 4, 40, 41, 42, 220, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 37, 38, 93, 87, 88, 276, 17, 91, 87, 88, 4, 275, 91, 33, 5, 87, 88, 281, 38, 91, 74, 4, 42, 43, 93, 95, 271, 93, 271, 30, 31, 3, 33, 94, 298, 93, 90, 301, 295, 4, 285, 95, 30, 97, 98, 33, 3, 4, 3, 313, 94, 294, 53, 355, 3, 4, 5, 359, 360, 60, 61, 3, 93, 283, 93, 53, 94, 87, 88, 3, 4, 91, 60, 61, 381, 339, 77, 17, 33, 33, 34, 35, 3, 38, 386, 93, 317, 42, 43, 77, 335, 33, 356, 33, 358, 396, 38, 361, 38, 17, 42, 43, 42, 43, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 33, 3, 1, 33, 3, 38, 3, 37, 38, 42, 43, 396, 42, 43, 111, 112, 17, 38, 384, 38, 38, 38, 38, 22, 31, 32, 33, 34, 35, 395, 38, 65, 31, 32, 33, 3, 83, 4, 3, 38, 381, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 3, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 38, 5, 95, 96, 97, 98, 1, 16, 3, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 22, 29, 30, 31, 32, 33, 34, 35, 38, 31, 32, 33, 96, 93, 93, 93, 38, 5, 40, 41, 42, 3, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 3, 55, 56, 3, 58, 59, 60, 3, 3, 62, 4, 65, 66, 67, 3, 93, 70, 280, 72, 3, 74, 75, 70, 224, 78, 285, 206, 339, 276, 83, 197, 331, 327, 31, 301, 89, 90, 327, 22, 31, -1, 95, -1, 97, 98, -1, -1, 31, 32, 33, -1, -1, -1, -1, 38, 0, 40, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, -1, 58, 59, 60, -1, -1, -1, -1, 65, 66, 67, -1, -1, 70, -1, 72, -1, 74, 75, -1, -1, 78, -1, -1, -1, 43, 83, -1, -1, -1, -1, -1, 89, 90, -1, -1, 54, -1, -1, 57, 97, 98, -1, 61, -1, 63, 64, -1, -1, -1, 68, 69, -1, 71, -1, 73, -1, -1, 76, 77, -1, 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, 22, -1, 91, 92, -1, -1, -1, -1, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, -1, -1, 57, -1, -1, -1, 61, -1, 63, 64, -1, -1, -1, 68, 69, -1, 71, -1, 73, 74, -1, 76, 77, -1, 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, -1, 90, 91, 92, 22, -1, -1, -1, 97, 98, -1, -1, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, 40, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, -1, -1, 22, 36, 37, 38, 39, 40, 41, -1, -1, 31, 32, 33, -1, -1, -1, -1, 38, 74, 40, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, 90, -1, 22, -1, -1, 95, -1, 97, 98, -1, -1, 31, 32, 33, -1, -1, -1, -1, 38, 74, 40, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, 90, -1, 22, -1, -1, 95, -1, 97, 98, -1, -1, 31, 32, 33, -1, -1, -1, -1, 38, 74, 40, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, 90, -1, 22, -1, -1, -1, -1, 97, 98, -1, -1, 31, 32, 33, -1, -1, -1, -1, 38, 74, 40, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, 90, -1, -1, -1, 36, -1, -1, 97, 98, -1, 42, 43, -1, -1, -1, -1, -1, -1, -1, 74, -1, -1, 54, -1, -1, 57, -1, -1, -1, 61, -1, 63, 64, -1, -1, 90, 68, 69, -1, 71, -1, 73, 97, 98, 76, 77, -1, 79, 80, 81, 82, 43, 84, 85, 86, 87, 88, -1, -1, 91, 92, -1, 54, -1, -1, 57, -1, -1, -1, 61, -1, 63, 64, -1, -1, -1, 68, 69, -1, 71, -1, 73, -1, -1, 76, 77, -1, 79, 80, 81, 82, 43, 84, 85, 86, 87, 88, -1, -1, 91, 92, -1, 54, -1, 96, 57, -1, -1, -1, 61, -1, 63, 64, -1, -1, -1, 68, 69, -1, 71, -1, 73, -1, -1, 76, 77, -1, 79, 80, 81, 82, -1, 84, 85, 86, 87, 88, -1, 54, 91, 92, 57, -1, -1, -1, 61, -1, 63, 64, -1, -1, -1, 68, 69, -1, 71, -1, 73, -1, -1, 76, -1, -1, 79, 80, -1, 82, -1, 84, -1, 86, 87, 88, -1, -1, 91, 92, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 100, 0, 43, 54, 57, 61, 63, 64, 68, 69, 71, 73, 76, 77, 79, 80, 81, 82, 84, 85, 86, 87, 88, 91, 92, 101, 152, 153, 155, 156, 165, 166, 168, 169, 170, 42, 43, 95, 150, 173, 150, 173, 95, 173, 3, 33, 38, 104, 106, 107, 172, 173, 162, 164, 168, 169, 170, 156, 166, 168, 162, 151, 157, 158, 161, 159, 163, 106, 3, 4, 102, 105, 37, 38, 164, 163, 162, 113, 153, 154, 150, 150, 42, 167, 95, 106, 170, 93, 104, 106, 111, 5, 22, 31, 32, 33, 38, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 74, 90, 97, 98, 139, 140, 142, 143, 144, 145, 146, 147, 171, 36, 127, 128, 154, 171, 96, 154, 114, 5, 4, 96, 160, 103, 155, 95, 123, 142, 143, 143, 143, 143, 141, 142, 154, 143, 143, 38, 144, 38, 144, 143, 143, 94, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 52, 53, 36, 93, 4, 33, 37, 38, 106, 119, 120, 121, 122, 115, 17, 106, 116, 117, 118, 172, 142, 167, 167, 95, 129, 106, 112, 36, 37, 123, 124, 125, 126, 4, 93, 33, 38, 119, 154, 154, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 141, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 173, 141, 142, 148, 149, 173, 36, 128, 163, 139, 93, 120, 37, 38, 116, 140, 3, 4, 17, 96, 130, 3, 4, 173, 140, 4, 5, 123, 124, 96, 141, 163, 93, 119, 119, 17, 94, 93, 4, 120, 94, 93, 139, 127, 3, 117, 140, 1, 42, 55, 56, 58, 59, 60, 66, 67, 70, 72, 75, 78, 83, 89, 96, 108, 131, 132, 133, 135, 136, 137, 138, 141, 155, 112, 94, 4, 95, 143, 93, 93, 142, 149, 94, 93, 3, 17, 3, 142, 3, 17, 133, 173, 38, 38, 138, 38, 38, 38, 38, 132, 135, 129, 65, 3, 3, 106, 109, 126, 17, 83, 3, 141, 148, 3, 148, 141, 141, 148, 38, 110, 3, 4, 96, 38, 93, 93, 93, 93, 93, 93, 134, 138, 155, 5, 109, 141, 133, 3, 3, 133, 133, 3, 3, 109, 123, 93, 62, 138, 3, 133, 3, 138, 93, 133 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. However, YYFAIL appears to be in use. Nevertheless, it is formally deprecated in Bison 2.4.2's NEWS entry, where a plan to phase it out is discussed. */ #define YYFAIL goto yyerrlab #if defined YYFAIL /* This is here to suppress warnings from the GCC cpp's -Wunused-macros. Normally we don't worry about that warning, but some users do, and we want to make it easy for users to remove YYFAIL uses, which will produce warnings from Bison 2.5. */ #endif #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (yylen); \ yystate = *yyssp; \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) /* Error token number */ #define YYTERROR 1 #define YYERRCODE 256 /* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (YYLEX_PARAM) #else # define YYLEX yylex () #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { FILE *yyo = yyoutput; YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif YYUSE (yytype); } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void yy_stack_print (yybottom, yytop) yytype_int16 *yybottom; yytype_int16 *yytop; #endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule) #else static void yy_reduce_print (yyvsp, yyrule) YYSTYPE *yyvsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULL; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per "expected"). */ int yycount = 0; /* There are many possibilities here to consider: - Assume YYFAIL is not used. It's too flawed to consider. See for details. YYERROR is fine as it does not invoke this function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yytoken != YYEMPTY) { int yyn = yypact[*yyssp]; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR && !yytable_value_is_error (yytable[yyx + yyn])) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; break; } yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } } } } switch (yycount) { # define YYCASE_(N, S) \ case N: \ yyformat = S; \ break YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); # undef YYCASE_ } { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return 1; } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ { char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyformat += 2; } else { yyp++; yyformat++; } } return 0; } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void yydestruct (yymsg, yytype, yyvaluep) const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); YYUSE (yytype); } /* The lookahead symbol. */ int yychar; #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif /* The semantic value of the lookahead symbol. */ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); /* Number of syntax errors so far. */ int yynerrs; /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: `yyss': related to states. `yyvs': related to semantic values. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken = 0; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yyssp = yyss = yyssa; yyvsp = yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 4: /* Line 1787 of yacc.c */ #line 109 "cc.y" { dodecl(xdecl, lastclass, lasttype, Z); } break; case 6: /* Line 1787 of yacc.c */ #line 114 "cc.y" { lastdcl = T; firstarg = S; dodecl(xdecl, lastclass, lasttype, (yyvsp[(2) - (2)].node)); if(lastdcl == T || lastdcl->etype != TFUNC) { diag((yyvsp[(2) - (2)].node), "not a function"); lastdcl = types[TFUNC]; } thisfn = lastdcl; markdcl(); firstdcl = dclstack; argmark((yyvsp[(2) - (2)].node), 0); } break; case 7: /* Line 1787 of yacc.c */ #line 128 "cc.y" { argmark((yyvsp[(2) - (4)].node), 1); } break; case 8: /* Line 1787 of yacc.c */ #line 132 "cc.y" { Node *n; n = revertdcl(); if(n) (yyvsp[(6) - (6)].node) = new(OLIST, n, (yyvsp[(6) - (6)].node)); if(!debug['a'] && !debug['Z']) codgen((yyvsp[(6) - (6)].node), (yyvsp[(2) - (6)].node)); } break; case 9: /* Line 1787 of yacc.c */ #line 144 "cc.y" { dodecl(xdecl, lastclass, lasttype, (yyvsp[(1) - (1)].node)); } break; case 10: /* Line 1787 of yacc.c */ #line 148 "cc.y" { (yyvsp[(1) - (1)].node) = dodecl(xdecl, lastclass, lasttype, (yyvsp[(1) - (1)].node)); } break; case 11: /* Line 1787 of yacc.c */ #line 152 "cc.y" { doinit((yyvsp[(1) - (4)].node)->sym, (yyvsp[(1) - (4)].node)->type, 0L, (yyvsp[(4) - (4)].node)); } break; case 14: /* Line 1787 of yacc.c */ #line 160 "cc.y" { (yyval.node) = new(OIND, (yyvsp[(3) - (3)].node), Z); (yyval.node)->garb = simpleg((yyvsp[(2) - (3)].lval)); } break; case 16: /* Line 1787 of yacc.c */ #line 168 "cc.y" { (yyval.node) = (yyvsp[(2) - (3)].node); } break; case 17: /* Line 1787 of yacc.c */ #line 172 "cc.y" { (yyval.node) = new(OFUNC, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node)); } break; case 18: /* Line 1787 of yacc.c */ #line 176 "cc.y" { (yyval.node) = new(OARRAY, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node)); } break; case 19: /* Line 1787 of yacc.c */ #line 185 "cc.y" { (yyval.node) = dodecl(adecl, lastclass, lasttype, Z); } break; case 20: /* Line 1787 of yacc.c */ #line 189 "cc.y" { (yyval.node) = (yyvsp[(2) - (3)].node); } break; case 21: /* Line 1787 of yacc.c */ #line 195 "cc.y" { dodecl(adecl, lastclass, lasttype, (yyvsp[(1) - (1)].node)); (yyval.node) = Z; } break; case 22: /* Line 1787 of yacc.c */ #line 200 "cc.y" { (yyvsp[(1) - (1)].node) = dodecl(adecl, lastclass, lasttype, (yyvsp[(1) - (1)].node)); } break; case 23: /* Line 1787 of yacc.c */ #line 204 "cc.y" { int32 w; w = (yyvsp[(1) - (4)].node)->sym->type->width; (yyval.node) = doinit((yyvsp[(1) - (4)].node)->sym, (yyvsp[(1) - (4)].node)->type, 0L, (yyvsp[(4) - (4)].node)); (yyval.node) = contig((yyvsp[(1) - (4)].node)->sym, (yyval.node), w); } break; case 24: /* Line 1787 of yacc.c */ #line 212 "cc.y" { (yyval.node) = (yyvsp[(1) - (3)].node); if((yyvsp[(3) - (3)].node) != Z) { (yyval.node) = (yyvsp[(3) - (3)].node); if((yyvsp[(1) - (3)].node) != Z) (yyval.node) = new(OLIST, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } } break; case 27: /* Line 1787 of yacc.c */ #line 229 "cc.y" { dodecl(pdecl, lastclass, lasttype, (yyvsp[(1) - (1)].node)); } break; case 29: /* Line 1787 of yacc.c */ #line 239 "cc.y" { lasttype = (yyvsp[(1) - (1)].type); } break; case 31: /* Line 1787 of yacc.c */ #line 244 "cc.y" { lasttype = (yyvsp[(2) - (2)].type); } break; case 33: /* Line 1787 of yacc.c */ #line 250 "cc.y" { lastfield = 0; edecl(CXXX, lasttype, S); } break; case 35: /* Line 1787 of yacc.c */ #line 258 "cc.y" { dodecl(edecl, CXXX, lasttype, (yyvsp[(1) - (1)].node)); } break; case 37: /* Line 1787 of yacc.c */ #line 265 "cc.y" { lastbit = 0; firstbit = 1; } break; case 38: /* Line 1787 of yacc.c */ #line 270 "cc.y" { (yyval.node) = new(OBIT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 39: /* Line 1787 of yacc.c */ #line 274 "cc.y" { (yyval.node) = new(OBIT, Z, (yyvsp[(2) - (2)].node)); } break; case 40: /* Line 1787 of yacc.c */ #line 282 "cc.y" { (yyval.node) = (Z); } break; case 42: /* Line 1787 of yacc.c */ #line 289 "cc.y" { (yyval.node) = new(OIND, (Z), Z); (yyval.node)->garb = simpleg((yyvsp[(2) - (2)].lval)); } break; case 43: /* Line 1787 of yacc.c */ #line 294 "cc.y" { (yyval.node) = new(OIND, (yyvsp[(3) - (3)].node), Z); (yyval.node)->garb = simpleg((yyvsp[(2) - (3)].lval)); } break; case 46: /* Line 1787 of yacc.c */ #line 303 "cc.y" { (yyval.node) = new(OFUNC, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node)); } break; case 47: /* Line 1787 of yacc.c */ #line 307 "cc.y" { (yyval.node) = new(OARRAY, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node)); } break; case 48: /* Line 1787 of yacc.c */ #line 313 "cc.y" { (yyval.node) = new(OFUNC, (Z), Z); } break; case 49: /* Line 1787 of yacc.c */ #line 317 "cc.y" { (yyval.node) = new(OARRAY, (Z), (yyvsp[(2) - (3)].node)); } break; case 50: /* Line 1787 of yacc.c */ #line 321 "cc.y" { (yyval.node) = (yyvsp[(2) - (3)].node); } break; case 52: /* Line 1787 of yacc.c */ #line 328 "cc.y" { (yyval.node) = new(OINIT, invert((yyvsp[(2) - (3)].node)), Z); } break; case 53: /* Line 1787 of yacc.c */ #line 334 "cc.y" { (yyval.node) = new(OARRAY, (yyvsp[(2) - (3)].node), Z); } break; case 54: /* Line 1787 of yacc.c */ #line 338 "cc.y" { (yyval.node) = new(OELEM, Z, Z); (yyval.node)->sym = (yyvsp[(2) - (2)].sym); } break; case 57: /* Line 1787 of yacc.c */ #line 347 "cc.y" { (yyval.node) = new(OLIST, (yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node)); } break; case 59: /* Line 1787 of yacc.c */ #line 352 "cc.y" { (yyval.node) = new(OLIST, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); } break; case 62: /* Line 1787 of yacc.c */ #line 360 "cc.y" { (yyval.node) = new(OLIST, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); } break; case 63: /* Line 1787 of yacc.c */ #line 365 "cc.y" { (yyval.node) = Z; } break; case 64: /* Line 1787 of yacc.c */ #line 369 "cc.y" { (yyval.node) = invert((yyvsp[(1) - (1)].node)); } break; case 66: /* Line 1787 of yacc.c */ #line 377 "cc.y" { (yyval.node) = new(OPROTO, (yyvsp[(2) - (2)].node), Z); (yyval.node)->type = (yyvsp[(1) - (2)].type); } break; case 67: /* Line 1787 of yacc.c */ #line 382 "cc.y" { (yyval.node) = new(OPROTO, (yyvsp[(2) - (2)].node), Z); (yyval.node)->type = (yyvsp[(1) - (2)].type); } break; case 68: /* Line 1787 of yacc.c */ #line 387 "cc.y" { (yyval.node) = new(ODOTDOT, Z, Z); } break; case 69: /* Line 1787 of yacc.c */ #line 391 "cc.y" { (yyval.node) = new(OLIST, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 70: /* Line 1787 of yacc.c */ #line 397 "cc.y" { (yyval.node) = invert((yyvsp[(2) - (3)].node)); // if($2 != Z) // $$ = new(OLIST, $2, $$); if((yyval.node) == Z) (yyval.node) = new(OLIST, Z, Z); } break; case 71: /* Line 1787 of yacc.c */ #line 406 "cc.y" { (yyval.node) = Z; } break; case 72: /* Line 1787 of yacc.c */ #line 410 "cc.y" { (yyval.node) = new(OLIST, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); } break; case 73: /* Line 1787 of yacc.c */ #line 414 "cc.y" { (yyval.node) = new(OLIST, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); } break; case 75: /* Line 1787 of yacc.c */ #line 421 "cc.y" { (yyval.node) = new(OLIST, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); } break; case 76: /* Line 1787 of yacc.c */ #line 427 "cc.y" { (yyval.node) = new(OCASE, (yyvsp[(2) - (3)].node), Z); } break; case 77: /* Line 1787 of yacc.c */ #line 431 "cc.y" { (yyval.node) = new(OCASE, Z, Z); } break; case 78: /* Line 1787 of yacc.c */ #line 435 "cc.y" { (yyval.node) = new(OLABEL, dcllabel((yyvsp[(1) - (2)].sym), 1), Z); } break; case 79: /* Line 1787 of yacc.c */ #line 441 "cc.y" { (yyval.node) = Z; } break; case 81: /* Line 1787 of yacc.c */ #line 446 "cc.y" { (yyval.node) = new(OLIST, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); } break; case 83: /* Line 1787 of yacc.c */ #line 453 "cc.y" { (yyval.node) = (yyvsp[(2) - (2)].node); } break; case 85: /* Line 1787 of yacc.c */ #line 459 "cc.y" { markdcl(); } break; case 86: /* Line 1787 of yacc.c */ #line 463 "cc.y" { (yyval.node) = revertdcl(); if((yyval.node)) (yyval.node) = new(OLIST, (yyval.node), (yyvsp[(2) - (2)].node)); else (yyval.node) = (yyvsp[(2) - (2)].node); } break; case 87: /* Line 1787 of yacc.c */ #line 471 "cc.y" { (yyval.node) = new(OIF, (yyvsp[(3) - (5)].node), new(OLIST, (yyvsp[(5) - (5)].node), Z)); if((yyvsp[(5) - (5)].node) == Z) warn((yyvsp[(3) - (5)].node), "empty if body"); } break; case 88: /* Line 1787 of yacc.c */ #line 477 "cc.y" { (yyval.node) = new(OIF, (yyvsp[(3) - (7)].node), new(OLIST, (yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node))); if((yyvsp[(5) - (7)].node) == Z) warn((yyvsp[(3) - (7)].node), "empty if body"); if((yyvsp[(7) - (7)].node) == Z) warn((yyvsp[(3) - (7)].node), "empty else body"); } break; case 89: /* Line 1787 of yacc.c */ #line 484 "cc.y" { markdcl(); } break; case 90: /* Line 1787 of yacc.c */ #line 485 "cc.y" { (yyval.node) = revertdcl(); if((yyval.node)){ if((yyvsp[(4) - (10)].node)) (yyvsp[(4) - (10)].node) = new(OLIST, (yyval.node), (yyvsp[(4) - (10)].node)); else (yyvsp[(4) - (10)].node) = (yyval.node); } (yyval.node) = new(OFOR, new(OLIST, (yyvsp[(6) - (10)].node), new(OLIST, (yyvsp[(4) - (10)].node), (yyvsp[(8) - (10)].node))), (yyvsp[(10) - (10)].node)); } break; case 91: /* Line 1787 of yacc.c */ #line 496 "cc.y" { (yyval.node) = new(OWHILE, (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)); } break; case 92: /* Line 1787 of yacc.c */ #line 500 "cc.y" { (yyval.node) = new(ODWHILE, (yyvsp[(5) - (7)].node), (yyvsp[(2) - (7)].node)); } break; case 93: /* Line 1787 of yacc.c */ #line 504 "cc.y" { (yyval.node) = new(ORETURN, (yyvsp[(2) - (3)].node), Z); (yyval.node)->type = thisfn->link; } break; case 94: /* Line 1787 of yacc.c */ #line 509 "cc.y" { (yyval.node) = new(OCONST, Z, Z); (yyval.node)->vconst = 0; (yyval.node)->type = types[TINT]; (yyvsp[(3) - (5)].node) = new(OSUB, (yyval.node), (yyvsp[(3) - (5)].node)); (yyval.node) = new(OCONST, Z, Z); (yyval.node)->vconst = 0; (yyval.node)->type = types[TINT]; (yyvsp[(3) - (5)].node) = new(OSUB, (yyval.node), (yyvsp[(3) - (5)].node)); (yyval.node) = new(OSWITCH, (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)); } break; case 95: /* Line 1787 of yacc.c */ #line 523 "cc.y" { (yyval.node) = new(OBREAK, Z, Z); } break; case 96: /* Line 1787 of yacc.c */ #line 527 "cc.y" { (yyval.node) = new(OCONTINUE, Z, Z); } break; case 97: /* Line 1787 of yacc.c */ #line 531 "cc.y" { (yyval.node) = new(OGOTO, dcllabel((yyvsp[(2) - (3)].sym), 0), Z); } break; case 98: /* Line 1787 of yacc.c */ #line 535 "cc.y" { (yyval.node) = new(OUSED, (yyvsp[(3) - (5)].node), Z); } break; case 99: /* Line 1787 of yacc.c */ #line 539 "cc.y" { (yyval.node) = new(OPREFETCH, (yyvsp[(3) - (5)].node), Z); } break; case 100: /* Line 1787 of yacc.c */ #line 543 "cc.y" { (yyval.node) = new(OSET, (yyvsp[(3) - (5)].node), Z); } break; case 101: /* Line 1787 of yacc.c */ #line 548 "cc.y" { (yyval.node) = Z; } break; case 103: /* Line 1787 of yacc.c */ #line 554 "cc.y" { (yyval.node) = Z; } break; case 105: /* Line 1787 of yacc.c */ #line 561 "cc.y" { (yyval.node) = new(OCAST, (yyvsp[(1) - (1)].node), Z); (yyval.node)->type = types[TLONG]; } break; case 107: /* Line 1787 of yacc.c */ #line 569 "cc.y" { (yyval.node) = new(OCOMMA, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 109: /* Line 1787 of yacc.c */ #line 576 "cc.y" { (yyval.node) = new(OMUL, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 110: /* Line 1787 of yacc.c */ #line 580 "cc.y" { (yyval.node) = new(ODIV, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 111: /* Line 1787 of yacc.c */ #line 584 "cc.y" { (yyval.node) = new(OMOD, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 112: /* Line 1787 of yacc.c */ #line 588 "cc.y" { (yyval.node) = new(OADD, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 113: /* Line 1787 of yacc.c */ #line 592 "cc.y" { (yyval.node) = new(OSUB, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 114: /* Line 1787 of yacc.c */ #line 596 "cc.y" { (yyval.node) = new(OASHR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 115: /* Line 1787 of yacc.c */ #line 600 "cc.y" { (yyval.node) = new(OASHL, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 116: /* Line 1787 of yacc.c */ #line 604 "cc.y" { (yyval.node) = new(OLT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 117: /* Line 1787 of yacc.c */ #line 608 "cc.y" { (yyval.node) = new(OGT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 118: /* Line 1787 of yacc.c */ #line 612 "cc.y" { (yyval.node) = new(OLE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 119: /* Line 1787 of yacc.c */ #line 616 "cc.y" { (yyval.node) = new(OGE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 120: /* Line 1787 of yacc.c */ #line 620 "cc.y" { (yyval.node) = new(OEQ, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 121: /* Line 1787 of yacc.c */ #line 624 "cc.y" { (yyval.node) = new(ONE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 122: /* Line 1787 of yacc.c */ #line 628 "cc.y" { (yyval.node) = new(OAND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 123: /* Line 1787 of yacc.c */ #line 632 "cc.y" { (yyval.node) = new(OXOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 124: /* Line 1787 of yacc.c */ #line 636 "cc.y" { (yyval.node) = new(OOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 125: /* Line 1787 of yacc.c */ #line 640 "cc.y" { (yyval.node) = new(OANDAND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 126: /* Line 1787 of yacc.c */ #line 644 "cc.y" { (yyval.node) = new(OOROR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 127: /* Line 1787 of yacc.c */ #line 648 "cc.y" { (yyval.node) = new(OCOND, (yyvsp[(1) - (5)].node), new(OLIST, (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node))); } break; case 128: /* Line 1787 of yacc.c */ #line 652 "cc.y" { (yyval.node) = new(OAS, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 129: /* Line 1787 of yacc.c */ #line 656 "cc.y" { (yyval.node) = new(OASADD, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 130: /* Line 1787 of yacc.c */ #line 660 "cc.y" { (yyval.node) = new(OASSUB, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 131: /* Line 1787 of yacc.c */ #line 664 "cc.y" { (yyval.node) = new(OASMUL, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 132: /* Line 1787 of yacc.c */ #line 668 "cc.y" { (yyval.node) = new(OASDIV, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 133: /* Line 1787 of yacc.c */ #line 672 "cc.y" { (yyval.node) = new(OASMOD, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 134: /* Line 1787 of yacc.c */ #line 676 "cc.y" { (yyval.node) = new(OASASHL, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 135: /* Line 1787 of yacc.c */ #line 680 "cc.y" { (yyval.node) = new(OASASHR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 136: /* Line 1787 of yacc.c */ #line 684 "cc.y" { (yyval.node) = new(OASAND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 137: /* Line 1787 of yacc.c */ #line 688 "cc.y" { (yyval.node) = new(OASXOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 138: /* Line 1787 of yacc.c */ #line 692 "cc.y" { (yyval.node) = new(OASOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 140: /* Line 1787 of yacc.c */ #line 699 "cc.y" { (yyval.node) = new(OCAST, (yyvsp[(5) - (5)].node), Z); dodecl(NODECL, CXXX, (yyvsp[(2) - (5)].type), (yyvsp[(3) - (5)].node)); (yyval.node)->type = lastdcl; (yyval.node)->xcast = 1; } break; case 141: /* Line 1787 of yacc.c */ #line 706 "cc.y" { (yyval.node) = new(OSTRUCT, (yyvsp[(6) - (7)].node), Z); dodecl(NODECL, CXXX, (yyvsp[(2) - (7)].type), (yyvsp[(3) - (7)].node)); (yyval.node)->type = lastdcl; } break; case 143: /* Line 1787 of yacc.c */ #line 715 "cc.y" { (yyval.node) = new(OIND, (yyvsp[(2) - (2)].node), Z); } break; case 144: /* Line 1787 of yacc.c */ #line 719 "cc.y" { (yyval.node) = new(OADDR, (yyvsp[(2) - (2)].node), Z); } break; case 145: /* Line 1787 of yacc.c */ #line 723 "cc.y" { (yyval.node) = new(OPOS, (yyvsp[(2) - (2)].node), Z); } break; case 146: /* Line 1787 of yacc.c */ #line 727 "cc.y" { (yyval.node) = new(ONEG, (yyvsp[(2) - (2)].node), Z); } break; case 147: /* Line 1787 of yacc.c */ #line 731 "cc.y" { (yyval.node) = new(ONOT, (yyvsp[(2) - (2)].node), Z); } break; case 148: /* Line 1787 of yacc.c */ #line 735 "cc.y" { (yyval.node) = new(OCOM, (yyvsp[(2) - (2)].node), Z); } break; case 149: /* Line 1787 of yacc.c */ #line 739 "cc.y" { (yyval.node) = new(OPREINC, (yyvsp[(2) - (2)].node), Z); } break; case 150: /* Line 1787 of yacc.c */ #line 743 "cc.y" { (yyval.node) = new(OPREDEC, (yyvsp[(2) - (2)].node), Z); } break; case 151: /* Line 1787 of yacc.c */ #line 747 "cc.y" { (yyval.node) = new(OSIZE, (yyvsp[(2) - (2)].node), Z); } break; case 152: /* Line 1787 of yacc.c */ #line 751 "cc.y" { (yyval.node) = new(OSIGN, (yyvsp[(2) - (2)].node), Z); } break; case 153: /* Line 1787 of yacc.c */ #line 757 "cc.y" { (yyval.node) = (yyvsp[(2) - (3)].node); } break; case 154: /* Line 1787 of yacc.c */ #line 761 "cc.y" { (yyval.node) = new(OSIZE, Z, Z); dodecl(NODECL, CXXX, (yyvsp[(3) - (5)].type), (yyvsp[(4) - (5)].node)); (yyval.node)->type = lastdcl; } break; case 155: /* Line 1787 of yacc.c */ #line 767 "cc.y" { (yyval.node) = new(OSIGN, Z, Z); dodecl(NODECL, CXXX, (yyvsp[(3) - (5)].type), (yyvsp[(4) - (5)].node)); (yyval.node)->type = lastdcl; } break; case 156: /* Line 1787 of yacc.c */ #line 773 "cc.y" { (yyval.node) = new(OFUNC, (yyvsp[(1) - (4)].node), Z); if((yyvsp[(1) - (4)].node)->op == ONAME) if((yyvsp[(1) - (4)].node)->type == T) dodecl(xdecl, CXXX, types[TINT], (yyval.node)); (yyval.node)->right = invert((yyvsp[(3) - (4)].node)); } break; case 157: /* Line 1787 of yacc.c */ #line 781 "cc.y" { (yyval.node) = new(OIND, new(OADD, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node)), Z); } break; case 158: /* Line 1787 of yacc.c */ #line 785 "cc.y" { (yyval.node) = new(ODOT, new(OIND, (yyvsp[(1) - (3)].node), Z), Z); (yyval.node)->sym = (yyvsp[(3) - (3)].sym); } break; case 159: /* Line 1787 of yacc.c */ #line 790 "cc.y" { (yyval.node) = new(ODOT, (yyvsp[(1) - (3)].node), Z); (yyval.node)->sym = (yyvsp[(3) - (3)].sym); } break; case 160: /* Line 1787 of yacc.c */ #line 795 "cc.y" { (yyval.node) = new(OPOSTINC, (yyvsp[(1) - (2)].node), Z); } break; case 161: /* Line 1787 of yacc.c */ #line 799 "cc.y" { (yyval.node) = new(OPOSTDEC, (yyvsp[(1) - (2)].node), Z); } break; case 163: /* Line 1787 of yacc.c */ #line 804 "cc.y" { (yyval.node) = new(OCONST, Z, Z); (yyval.node)->type = types[TINT]; (yyval.node)->vconst = (yyvsp[(1) - (1)].vval); (yyval.node)->cstring = strdup(symb); } break; case 164: /* Line 1787 of yacc.c */ #line 811 "cc.y" { (yyval.node) = new(OCONST, Z, Z); (yyval.node)->type = types[TLONG]; (yyval.node)->vconst = (yyvsp[(1) - (1)].vval); (yyval.node)->cstring = strdup(symb); } break; case 165: /* Line 1787 of yacc.c */ #line 818 "cc.y" { (yyval.node) = new(OCONST, Z, Z); (yyval.node)->type = types[TUINT]; (yyval.node)->vconst = (yyvsp[(1) - (1)].vval); (yyval.node)->cstring = strdup(symb); } break; case 166: /* Line 1787 of yacc.c */ #line 825 "cc.y" { (yyval.node) = new(OCONST, Z, Z); (yyval.node)->type = types[TULONG]; (yyval.node)->vconst = (yyvsp[(1) - (1)].vval); (yyval.node)->cstring = strdup(symb); } break; case 167: /* Line 1787 of yacc.c */ #line 832 "cc.y" { (yyval.node) = new(OCONST, Z, Z); (yyval.node)->type = types[TDOUBLE]; (yyval.node)->fconst = (yyvsp[(1) - (1)].dval); (yyval.node)->cstring = strdup(symb); } break; case 168: /* Line 1787 of yacc.c */ #line 839 "cc.y" { (yyval.node) = new(OCONST, Z, Z); (yyval.node)->type = types[TFLOAT]; (yyval.node)->fconst = (yyvsp[(1) - (1)].dval); (yyval.node)->cstring = strdup(symb); } break; case 169: /* Line 1787 of yacc.c */ #line 846 "cc.y" { (yyval.node) = new(OCONST, Z, Z); (yyval.node)->type = types[TVLONG]; (yyval.node)->vconst = (yyvsp[(1) - (1)].vval); (yyval.node)->cstring = strdup(symb); } break; case 170: /* Line 1787 of yacc.c */ #line 853 "cc.y" { (yyval.node) = new(OCONST, Z, Z); (yyval.node)->type = types[TUVLONG]; (yyval.node)->vconst = (yyvsp[(1) - (1)].vval); (yyval.node)->cstring = strdup(symb); } break; case 173: /* Line 1787 of yacc.c */ #line 864 "cc.y" { (yyval.node) = new(OSTRING, Z, Z); (yyval.node)->type = typ(TARRAY, types[TCHAR]); (yyval.node)->type->width = (yyvsp[(1) - (1)].sval).l + 1; (yyval.node)->cstring = (yyvsp[(1) - (1)].sval).s; (yyval.node)->sym = symstring; (yyval.node)->etype = TARRAY; (yyval.node)->class = CSTATIC; } break; case 174: /* Line 1787 of yacc.c */ #line 874 "cc.y" { char *s; int n; n = (yyvsp[(1) - (2)].node)->type->width - 1; s = alloc(n+(yyvsp[(2) - (2)].sval).l+MAXALIGN); memcpy(s, (yyvsp[(1) - (2)].node)->cstring, n); memcpy(s+n, (yyvsp[(2) - (2)].sval).s, (yyvsp[(2) - (2)].sval).l); s[n+(yyvsp[(2) - (2)].sval).l] = 0; (yyval.node) = (yyvsp[(1) - (2)].node); (yyval.node)->type->width += (yyvsp[(2) - (2)].sval).l; (yyval.node)->cstring = s; } break; case 175: /* Line 1787 of yacc.c */ #line 892 "cc.y" { (yyval.node) = new(OLSTRING, Z, Z); (yyval.node)->type = typ(TARRAY, types[TRUNE]); (yyval.node)->type->width = (yyvsp[(1) - (1)].sval).l + sizeof(TRune); (yyval.node)->rstring = (TRune*)(yyvsp[(1) - (1)].sval).s; (yyval.node)->sym = symstring; (yyval.node)->etype = TARRAY; (yyval.node)->class = CSTATIC; } break; case 176: /* Line 1787 of yacc.c */ #line 902 "cc.y" { char *s; int n; n = (yyvsp[(1) - (2)].node)->type->width - sizeof(TRune); s = alloc(n+(yyvsp[(2) - (2)].sval).l+MAXALIGN); memcpy(s, (yyvsp[(1) - (2)].node)->rstring, n); memcpy(s+n, (yyvsp[(2) - (2)].sval).s, (yyvsp[(2) - (2)].sval).l); *(TRune*)(s+n+(yyvsp[(2) - (2)].sval).l) = 0; (yyval.node) = (yyvsp[(1) - (2)].node); (yyval.node)->type->width += (yyvsp[(2) - (2)].sval).l; (yyval.node)->rstring = (TRune*)s; } break; case 177: /* Line 1787 of yacc.c */ #line 919 "cc.y" { (yyval.node) = Z; } break; case 180: /* Line 1787 of yacc.c */ #line 927 "cc.y" { (yyval.node) = new(OLIST, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 181: /* Line 1787 of yacc.c */ #line 933 "cc.y" { (yyval.tyty).t1 = strf; (yyval.tyty).t2 = strl; (yyval.tyty).t3 = lasttype; (yyval.tyty).c = lastclass; strf = T; strl = T; lastbit = 0; firstbit = 1; lastclass = CXXX; lasttype = T; } break; case 182: /* Line 1787 of yacc.c */ #line 946 "cc.y" { (yyval.type) = strf; strf = (yyvsp[(2) - (4)].tyty).t1; strl = (yyvsp[(2) - (4)].tyty).t2; lasttype = (yyvsp[(2) - (4)].tyty).t3; lastclass = (yyvsp[(2) - (4)].tyty).c; } break; case 183: /* Line 1787 of yacc.c */ #line 955 "cc.y" { lastclass = CXXX; lasttype = types[TINT]; } break; case 185: /* Line 1787 of yacc.c */ #line 963 "cc.y" { (yyval.tycl).t = (yyvsp[(1) - (1)].type); (yyval.tycl).c = CXXX; } break; case 186: /* Line 1787 of yacc.c */ #line 968 "cc.y" { (yyval.tycl).t = simplet((yyvsp[(1) - (1)].lval)); (yyval.tycl).c = CXXX; } break; case 187: /* Line 1787 of yacc.c */ #line 973 "cc.y" { (yyval.tycl).t = simplet((yyvsp[(1) - (1)].lval)); (yyval.tycl).c = simplec((yyvsp[(1) - (1)].lval)); (yyval.tycl).t = garbt((yyval.tycl).t, (yyvsp[(1) - (1)].lval)); } break; case 188: /* Line 1787 of yacc.c */ #line 979 "cc.y" { (yyval.tycl).t = (yyvsp[(1) - (2)].type); (yyval.tycl).c = simplec((yyvsp[(2) - (2)].lval)); (yyval.tycl).t = garbt((yyval.tycl).t, (yyvsp[(2) - (2)].lval)); if((yyvsp[(2) - (2)].lval) & ~BCLASS & ~BGARB) diag(Z, "duplicate types given: %T and %Q", (yyvsp[(1) - (2)].type), (yyvsp[(2) - (2)].lval)); } break; case 189: /* Line 1787 of yacc.c */ #line 987 "cc.y" { (yyval.tycl).t = simplet(typebitor((yyvsp[(1) - (2)].lval), (yyvsp[(2) - (2)].lval))); (yyval.tycl).c = simplec((yyvsp[(2) - (2)].lval)); (yyval.tycl).t = garbt((yyval.tycl).t, (yyvsp[(2) - (2)].lval)); } break; case 190: /* Line 1787 of yacc.c */ #line 993 "cc.y" { (yyval.tycl).t = (yyvsp[(2) - (3)].type); (yyval.tycl).c = simplec((yyvsp[(1) - (3)].lval)); (yyval.tycl).t = garbt((yyval.tycl).t, (yyvsp[(1) - (3)].lval)|(yyvsp[(3) - (3)].lval)); } break; case 191: /* Line 1787 of yacc.c */ #line 999 "cc.y" { (yyval.tycl).t = simplet((yyvsp[(2) - (2)].lval)); (yyval.tycl).c = simplec((yyvsp[(1) - (2)].lval)); (yyval.tycl).t = garbt((yyval.tycl).t, (yyvsp[(1) - (2)].lval)); } break; case 192: /* Line 1787 of yacc.c */ #line 1005 "cc.y" { (yyval.tycl).t = simplet(typebitor((yyvsp[(2) - (3)].lval), (yyvsp[(3) - (3)].lval))); (yyval.tycl).c = simplec((yyvsp[(1) - (3)].lval)|(yyvsp[(3) - (3)].lval)); (yyval.tycl).t = garbt((yyval.tycl).t, (yyvsp[(1) - (3)].lval)|(yyvsp[(3) - (3)].lval)); } break; case 193: /* Line 1787 of yacc.c */ #line 1013 "cc.y" { (yyval.type) = (yyvsp[(1) - (1)].tycl).t; if((yyvsp[(1) - (1)].tycl).c != CXXX) diag(Z, "illegal combination of class 4: %s", cnames[(yyvsp[(1) - (1)].tycl).c]); } break; case 194: /* Line 1787 of yacc.c */ #line 1021 "cc.y" { lasttype = (yyvsp[(1) - (1)].tycl).t; lastclass = (yyvsp[(1) - (1)].tycl).c; } break; case 195: /* Line 1787 of yacc.c */ #line 1028 "cc.y" { dotag((yyvsp[(2) - (2)].sym), TSTRUCT, 0); (yyval.type) = (yyvsp[(2) - (2)].sym)->suetag; } break; case 196: /* Line 1787 of yacc.c */ #line 1033 "cc.y" { dotag((yyvsp[(2) - (2)].sym), TSTRUCT, autobn); } break; case 197: /* Line 1787 of yacc.c */ #line 1037 "cc.y" { (yyval.type) = (yyvsp[(2) - (4)].sym)->suetag; if((yyval.type)->link != T) diag(Z, "redeclare tag: %s", (yyvsp[(2) - (4)].sym)->name); (yyval.type)->link = (yyvsp[(4) - (4)].type); sualign((yyval.type)); } break; case 198: /* Line 1787 of yacc.c */ #line 1045 "cc.y" { taggen++; sprint(symb, "_%d_", taggen); (yyval.type) = dotag(lookup(), TSTRUCT, autobn); (yyval.type)->link = (yyvsp[(2) - (2)].type); sualign((yyval.type)); } break; case 199: /* Line 1787 of yacc.c */ #line 1053 "cc.y" { dotag((yyvsp[(2) - (2)].sym), TUNION, 0); (yyval.type) = (yyvsp[(2) - (2)].sym)->suetag; } break; case 200: /* Line 1787 of yacc.c */ #line 1058 "cc.y" { dotag((yyvsp[(2) - (2)].sym), TUNION, autobn); } break; case 201: /* Line 1787 of yacc.c */ #line 1062 "cc.y" { (yyval.type) = (yyvsp[(2) - (4)].sym)->suetag; if((yyval.type)->link != T) diag(Z, "redeclare tag: %s", (yyvsp[(2) - (4)].sym)->name); (yyval.type)->link = (yyvsp[(4) - (4)].type); sualign((yyval.type)); } break; case 202: /* Line 1787 of yacc.c */ #line 1070 "cc.y" { taggen++; sprint(symb, "_%d_", taggen); (yyval.type) = dotag(lookup(), TUNION, autobn); (yyval.type)->link = (yyvsp[(2) - (2)].type); sualign((yyval.type)); } break; case 203: /* Line 1787 of yacc.c */ #line 1078 "cc.y" { dotag((yyvsp[(2) - (2)].sym), TENUM, 0); (yyval.type) = (yyvsp[(2) - (2)].sym)->suetag; if((yyval.type)->link == T) (yyval.type)->link = types[TINT]; (yyval.type) = (yyval.type)->link; } break; case 204: /* Line 1787 of yacc.c */ #line 1086 "cc.y" { dotag((yyvsp[(2) - (2)].sym), TENUM, autobn); } break; case 205: /* Line 1787 of yacc.c */ #line 1090 "cc.y" { en.tenum = T; en.cenum = T; } break; case 206: /* Line 1787 of yacc.c */ #line 1095 "cc.y" { (yyval.type) = (yyvsp[(2) - (7)].sym)->suetag; if((yyval.type)->link != T) diag(Z, "redeclare tag: %s", (yyvsp[(2) - (7)].sym)->name); if(en.tenum == T) { diag(Z, "enum type ambiguous: %s", (yyvsp[(2) - (7)].sym)->name); en.tenum = types[TINT]; } (yyval.type)->link = en.tenum; (yyval.type) = en.tenum; } break; case 207: /* Line 1787 of yacc.c */ #line 1107 "cc.y" { en.tenum = T; en.cenum = T; } break; case 208: /* Line 1787 of yacc.c */ #line 1112 "cc.y" { (yyval.type) = en.tenum; } break; case 209: /* Line 1787 of yacc.c */ #line 1116 "cc.y" { (yyval.type) = tcopy((yyvsp[(1) - (1)].sym)->type); } break; case 211: /* Line 1787 of yacc.c */ #line 1123 "cc.y" { (yyval.lval) = typebitor((yyvsp[(1) - (2)].lval), (yyvsp[(2) - (2)].lval)); } break; case 212: /* Line 1787 of yacc.c */ #line 1128 "cc.y" { (yyval.lval) = 0; } break; case 213: /* Line 1787 of yacc.c */ #line 1132 "cc.y" { (yyval.lval) = typebitor((yyvsp[(1) - (2)].lval), (yyvsp[(2) - (2)].lval)); } break; case 218: /* Line 1787 of yacc.c */ #line 1144 "cc.y" { (yyval.lval) = typebitor((yyvsp[(1) - (2)].lval), (yyvsp[(2) - (2)].lval)); } break; case 221: /* Line 1787 of yacc.c */ #line 1154 "cc.y" { doenum((yyvsp[(1) - (1)].sym), Z); } break; case 222: /* Line 1787 of yacc.c */ #line 1158 "cc.y" { doenum((yyvsp[(1) - (3)].sym), (yyvsp[(3) - (3)].node)); } break; case 225: /* Line 1787 of yacc.c */ #line 1165 "cc.y" { (yyval.lval) = BCHAR; } break; case 226: /* Line 1787 of yacc.c */ #line 1166 "cc.y" { (yyval.lval) = BSHORT; } break; case 227: /* Line 1787 of yacc.c */ #line 1167 "cc.y" { (yyval.lval) = BINT; } break; case 228: /* Line 1787 of yacc.c */ #line 1168 "cc.y" { (yyval.lval) = BLONG; } break; case 229: /* Line 1787 of yacc.c */ #line 1169 "cc.y" { (yyval.lval) = BSIGNED; } break; case 230: /* Line 1787 of yacc.c */ #line 1170 "cc.y" { (yyval.lval) = BUNSIGNED; } break; case 231: /* Line 1787 of yacc.c */ #line 1171 "cc.y" { (yyval.lval) = BFLOAT; } break; case 232: /* Line 1787 of yacc.c */ #line 1172 "cc.y" { (yyval.lval) = BDOUBLE; } break; case 233: /* Line 1787 of yacc.c */ #line 1173 "cc.y" { (yyval.lval) = BVOID; } break; case 234: /* Line 1787 of yacc.c */ #line 1176 "cc.y" { (yyval.lval) = BAUTO; } break; case 235: /* Line 1787 of yacc.c */ #line 1177 "cc.y" { (yyval.lval) = BSTATIC; } break; case 236: /* Line 1787 of yacc.c */ #line 1178 "cc.y" { (yyval.lval) = BEXTERN; } break; case 237: /* Line 1787 of yacc.c */ #line 1179 "cc.y" { (yyval.lval) = BTYPEDEF; } break; case 238: /* Line 1787 of yacc.c */ #line 1180 "cc.y" { (yyval.lval) = BTYPESTR; } break; case 239: /* Line 1787 of yacc.c */ #line 1181 "cc.y" { (yyval.lval) = BREGISTER; } break; case 240: /* Line 1787 of yacc.c */ #line 1182 "cc.y" { (yyval.lval) = 0; } break; case 241: /* Line 1787 of yacc.c */ #line 1185 "cc.y" { (yyval.lval) = BCONSTNT; } break; case 242: /* Line 1787 of yacc.c */ #line 1186 "cc.y" { (yyval.lval) = BVOLATILE; } break; case 243: /* Line 1787 of yacc.c */ #line 1187 "cc.y" { (yyval.lval) = 0; } break; case 244: /* Line 1787 of yacc.c */ #line 1191 "cc.y" { (yyval.node) = new(ONAME, Z, Z); if((yyvsp[(1) - (1)].sym)->class == CLOCAL) (yyvsp[(1) - (1)].sym) = mkstatic((yyvsp[(1) - (1)].sym)); (yyval.node)->sym = (yyvsp[(1) - (1)].sym); (yyval.node)->type = (yyvsp[(1) - (1)].sym)->type; (yyval.node)->etype = TVOID; if((yyval.node)->type != T) (yyval.node)->etype = (yyval.node)->type->etype; (yyval.node)->xoffset = (yyvsp[(1) - (1)].sym)->offset; (yyval.node)->class = (yyvsp[(1) - (1)].sym)->class; (yyvsp[(1) - (1)].sym)->aused = 1; } break; case 245: /* Line 1787 of yacc.c */ #line 1206 "cc.y" { (yyval.node) = new(ONAME, Z, Z); (yyval.node)->sym = (yyvsp[(1) - (1)].sym); (yyval.node)->type = (yyvsp[(1) - (1)].sym)->type; (yyval.node)->etype = TVOID; if((yyval.node)->type != T) (yyval.node)->etype = (yyval.node)->type->etype; (yyval.node)->xoffset = (yyvsp[(1) - (1)].sym)->offset; (yyval.node)->class = (yyvsp[(1) - (1)].sym)->class; } break; /* Line 1787 of yacc.c */ #line 3829 "y.tab.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) { char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = YYSYNTAX_ERROR; if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == 1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = 2; } else { yysyntax_error_status = YYSYNTAX_ERROR; yymsgp = yymsg; } } yyerror (yymsgp); if (yysyntax_error_status == 2) goto yyexhaustedlab; } # undef YYSYNTAX_ERROR #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); } /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } /* Line 2050 of yacc.c */ #line 1219 "cc.y" go/src/cmd/cc/y.tab.h0100644000000000000000000001260212412656734014602 0ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 2.7.12-4996. */ /* Bison interface for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ #ifndef YY_YY_Y_TAB_H_INCLUDED # define YY_YY_Y_TAB_H_INCLUDED /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int yydebug; #endif /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { LORE = 258, LXORE = 259, LANDE = 260, LLSHE = 261, LRSHE = 262, LMDE = 263, LDVE = 264, LMLE = 265, LME = 266, LPE = 267, LOROR = 268, LANDAND = 269, LNE = 270, LEQ = 271, LGE = 272, LLE = 273, LRSH = 274, LLSH = 275, LMG = 276, LPP = 277, LMM = 278, LNAME = 279, LTYPE = 280, LFCONST = 281, LDCONST = 282, LCONST = 283, LLCONST = 284, LUCONST = 285, LULCONST = 286, LVLCONST = 287, LUVLCONST = 288, LSTRING = 289, LLSTRING = 290, LAUTO = 291, LBREAK = 292, LCASE = 293, LCHAR = 294, LCONTINUE = 295, LDEFAULT = 296, LDO = 297, LDOUBLE = 298, LELSE = 299, LEXTERN = 300, LFLOAT = 301, LFOR = 302, LGOTO = 303, LIF = 304, LINT = 305, LLONG = 306, LPREFETCH = 307, LREGISTER = 308, LRETURN = 309, LSHORT = 310, LSIZEOF = 311, LUSED = 312, LSTATIC = 313, LSTRUCT = 314, LSWITCH = 315, LTYPEDEF = 316, LTYPESTR = 317, LUNION = 318, LUNSIGNED = 319, LWHILE = 320, LVOID = 321, LENUM = 322, LSIGNED = 323, LCONSTNT = 324, LVOLATILE = 325, LSET = 326, LSIGNOF = 327, LRESTRICT = 328, LINLINE = 329 }; #endif /* Tokens. */ #define LORE 258 #define LXORE 259 #define LANDE 260 #define LLSHE 261 #define LRSHE 262 #define LMDE 263 #define LDVE 264 #define LMLE 265 #define LME 266 #define LPE 267 #define LOROR 268 #define LANDAND 269 #define LNE 270 #define LEQ 271 #define LGE 272 #define LLE 273 #define LRSH 274 #define LLSH 275 #define LMG 276 #define LPP 277 #define LMM 278 #define LNAME 279 #define LTYPE 280 #define LFCONST 281 #define LDCONST 282 #define LCONST 283 #define LLCONST 284 #define LUCONST 285 #define LULCONST 286 #define LVLCONST 287 #define LUVLCONST 288 #define LSTRING 289 #define LLSTRING 290 #define LAUTO 291 #define LBREAK 292 #define LCASE 293 #define LCHAR 294 #define LCONTINUE 295 #define LDEFAULT 296 #define LDO 297 #define LDOUBLE 298 #define LELSE 299 #define LEXTERN 300 #define LFLOAT 301 #define LFOR 302 #define LGOTO 303 #define LIF 304 #define LINT 305 #define LLONG 306 #define LPREFETCH 307 #define LREGISTER 308 #define LRETURN 309 #define LSHORT 310 #define LSIZEOF 311 #define LUSED 312 #define LSTATIC 313 #define LSTRUCT 314 #define LSWITCH 315 #define LTYPEDEF 316 #define LTYPESTR 317 #define LUNION 318 #define LUNSIGNED 319 #define LWHILE 320 #define LVOID 321 #define LENUM 322 #define LSIGNED 323 #define LCONSTNT 324 #define LVOLATILE 325 #define LSET 326 #define LSIGNOF 327 #define LRESTRICT 328 #define LINLINE 329 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { /* Line 2053 of yacc.c */ #line 36 "cc.y" Node* node; Sym* sym; Type* type; struct { Type* t; uchar c; } tycl; struct { Type* t1; Type* t2; Type* t3; uchar c; } tyty; struct { char* s; int32 l; } sval; int32 lval; double dval; vlong vval; /* Line 2053 of yacc.c */ #line 232 "y.tab.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE yylval; #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ #endif /* !YY_YY_Y_TAB_H_INCLUDED */ go/src/cmd/cgo0040755000000000000000000000000012412656737013525 5ustar00rootroot00000000000000go/src/cmd/cgo/ast.go0100644000000000000000000002573412412656737014732 0ustar00rootroot00000000000000// Copyright 2009 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. // Parse input AST and prepare Prog structure. package main import ( "fmt" "go/ast" "go/parser" "go/scanner" "go/token" "os" "path/filepath" "strings" ) func parse(name string, flags parser.Mode) *ast.File { ast1, err := parser.ParseFile(fset, name, nil, flags) if err != nil { if list, ok := err.(scanner.ErrorList); ok { // If err is a scanner.ErrorList, its String will print just // the first error and then (+n more errors). // Instead, turn it into a new Error that will return // details for all the errors. for _, e := range list { fmt.Fprintln(os.Stderr, e) } os.Exit(2) } fatalf("parsing %s: %s", name, err) } return ast1 } func sourceLine(n ast.Node) int { return fset.Position(n.Pos()).Line } // ReadGo populates f with information learned from reading the // Go source file with the given file name. It gathers the C preamble // attached to the import "C" comment, a list of references to C.xxx, // a list of exported functions, and the actual AST, to be rewritten and // printed. func (f *File) ReadGo(name string) { // Create absolute path for file, so that it will be used in error // messages and recorded in debug line number information. // This matches the rest of the toolchain. See golang.org/issue/5122. if aname, err := filepath.Abs(name); err == nil { name = aname } // Two different parses: once with comments, once without. // The printer is not good enough at printing comments in the // right place when we start editing the AST behind its back, // so we use ast1 to look for the doc comments on import "C" // and on exported functions, and we use ast2 for translating // and reprinting. ast1 := parse(name, parser.ParseComments) ast2 := parse(name, 0) f.Package = ast1.Name.Name f.Name = make(map[string]*Name) // In ast1, find the import "C" line and get any extra C preamble. sawC := false for _, decl := range ast1.Decls { d, ok := decl.(*ast.GenDecl) if !ok { continue } for _, spec := range d.Specs { s, ok := spec.(*ast.ImportSpec) if !ok || string(s.Path.Value) != `"C"` { continue } sawC = true if s.Name != nil { error_(s.Path.Pos(), `cannot rename import "C"`) } cg := s.Doc if cg == nil && len(d.Specs) == 1 { cg = d.Doc } if cg != nil { f.Preamble += fmt.Sprintf("#line %d %q\n", sourceLine(cg), name) f.Preamble += commentText(cg) + "\n" } } } if !sawC { error_(token.NoPos, `cannot find import "C"`) } // In ast2, strip the import "C" line. w := 0 for _, decl := range ast2.Decls { d, ok := decl.(*ast.GenDecl) if !ok { ast2.Decls[w] = decl w++ continue } ws := 0 for _, spec := range d.Specs { s, ok := spec.(*ast.ImportSpec) if !ok || string(s.Path.Value) != `"C"` { d.Specs[ws] = spec ws++ } } if ws == 0 { continue } d.Specs = d.Specs[0:ws] ast2.Decls[w] = d w++ } ast2.Decls = ast2.Decls[0:w] // Accumulate pointers to uses of C.x. if f.Ref == nil { f.Ref = make([]*Ref, 0, 8) } f.walk(ast2, "prog", (*File).saveRef) // Accumulate exported functions. // The comments are only on ast1 but we need to // save the function bodies from ast2. // The first walk fills in ExpFunc, and the // second walk changes the entries to // refer to ast2 instead. f.walk(ast1, "prog", (*File).saveExport) f.walk(ast2, "prog", (*File).saveExport2) f.Comments = ast1.Comments f.AST = ast2 } // Like ast.CommentGroup's Text method but preserves // leading blank lines, so that line numbers line up. func commentText(g *ast.CommentGroup) string { if g == nil { return "" } var pieces []string for _, com := range g.List { c := string(com.Text) // Remove comment markers. // The parser has given us exactly the comment text. switch c[1] { case '/': //-style comment (no newline at the end) c = c[2:] + "\n" case '*': /*-style comment */ c = c[2 : len(c)-2] } pieces = append(pieces, c) } return strings.Join(pieces, "") } // Save references to C.xxx for later processing. func (f *File) saveRef(x interface{}, context string) { n, ok := x.(*ast.Expr) if !ok { return } if sel, ok := (*n).(*ast.SelectorExpr); ok { // For now, assume that the only instance of capital C is // when used as the imported package identifier. // The parser should take care of scoping in the future, // so that we will be able to distinguish a "top-level C" // from a local C. if l, ok := sel.X.(*ast.Ident); ok && l.Name == "C" { if context == "as2" { context = "expr" } if context == "embed-type" { error_(sel.Pos(), "cannot embed C type") } goname := sel.Sel.Name if goname == "errno" { error_(sel.Pos(), "cannot refer to errno directly; see documentation") return } if goname == "_CMalloc" { error_(sel.Pos(), "cannot refer to C._CMalloc; use C.malloc") return } if goname == "malloc" { goname = "_CMalloc" } name := f.Name[goname] if name == nil { name = &Name{ Go: goname, } f.Name[goname] = name } f.Ref = append(f.Ref, &Ref{ Name: name, Expr: n, Context: context, }) return } } } // If a function should be exported add it to ExpFunc. func (f *File) saveExport(x interface{}, context string) { n, ok := x.(*ast.FuncDecl) if !ok { return } if n.Doc == nil { return } for _, c := range n.Doc.List { if !strings.HasPrefix(string(c.Text), "//export ") { continue } name := strings.TrimSpace(string(c.Text[9:])) if name == "" { error_(c.Pos(), "export missing name") } if name != n.Name.Name { error_(c.Pos(), "export comment has wrong name %q, want %q", name, n.Name.Name) } f.ExpFunc = append(f.ExpFunc, &ExpFunc{ Func: n, ExpName: name, }) break } } // Make f.ExpFunc[i] point at the Func from this AST instead of the other one. func (f *File) saveExport2(x interface{}, context string) { n, ok := x.(*ast.FuncDecl) if !ok { return } for _, exp := range f.ExpFunc { if exp.Func.Name.Name == n.Name.Name { exp.Func = n break } } } // walk walks the AST x, calling visit(f, x, context) for each node. func (f *File) walk(x interface{}, context string, visit func(*File, interface{}, string)) { visit(f, x, context) switch n := x.(type) { case *ast.Expr: f.walk(*n, context, visit) // everything else just recurs default: error_(token.NoPos, "unexpected type %T in walk", x, visit) panic("unexpected type") case nil: // These are ordered and grouped to match ../../pkg/go/ast/ast.go case *ast.Field: if len(n.Names) == 0 && context == "field" { f.walk(&n.Type, "embed-type", visit) } else { f.walk(&n.Type, "type", visit) } case *ast.FieldList: for _, field := range n.List { f.walk(field, context, visit) } case *ast.BadExpr: case *ast.Ident: case *ast.Ellipsis: case *ast.BasicLit: case *ast.FuncLit: f.walk(n.Type, "type", visit) f.walk(n.Body, "stmt", visit) case *ast.CompositeLit: f.walk(&n.Type, "type", visit) f.walk(n.Elts, "expr", visit) case *ast.ParenExpr: f.walk(&n.X, context, visit) case *ast.SelectorExpr: f.walk(&n.X, "selector", visit) case *ast.IndexExpr: f.walk(&n.X, "expr", visit) f.walk(&n.Index, "expr", visit) case *ast.SliceExpr: f.walk(&n.X, "expr", visit) if n.Low != nil { f.walk(&n.Low, "expr", visit) } if n.High != nil { f.walk(&n.High, "expr", visit) } case *ast.TypeAssertExpr: f.walk(&n.X, "expr", visit) f.walk(&n.Type, "type", visit) case *ast.CallExpr: if context == "as2" { f.walk(&n.Fun, "call2", visit) } else { f.walk(&n.Fun, "call", visit) } f.walk(n.Args, "expr", visit) case *ast.StarExpr: f.walk(&n.X, context, visit) case *ast.UnaryExpr: f.walk(&n.X, "expr", visit) case *ast.BinaryExpr: f.walk(&n.X, "expr", visit) f.walk(&n.Y, "expr", visit) case *ast.KeyValueExpr: f.walk(&n.Key, "expr", visit) f.walk(&n.Value, "expr", visit) case *ast.ArrayType: f.walk(&n.Len, "expr", visit) f.walk(&n.Elt, "type", visit) case *ast.StructType: f.walk(n.Fields, "field", visit) case *ast.FuncType: f.walk(n.Params, "param", visit) if n.Results != nil { f.walk(n.Results, "param", visit) } case *ast.InterfaceType: f.walk(n.Methods, "field", visit) case *ast.MapType: f.walk(&n.Key, "type", visit) f.walk(&n.Value, "type", visit) case *ast.ChanType: f.walk(&n.Value, "type", visit) case *ast.BadStmt: case *ast.DeclStmt: f.walk(n.Decl, "decl", visit) case *ast.EmptyStmt: case *ast.LabeledStmt: f.walk(n.Stmt, "stmt", visit) case *ast.ExprStmt: f.walk(&n.X, "expr", visit) case *ast.SendStmt: f.walk(&n.Chan, "expr", visit) f.walk(&n.Value, "expr", visit) case *ast.IncDecStmt: f.walk(&n.X, "expr", visit) case *ast.AssignStmt: f.walk(n.Lhs, "expr", visit) if len(n.Lhs) == 2 && len(n.Rhs) == 1 { f.walk(n.Rhs, "as2", visit) } else { f.walk(n.Rhs, "expr", visit) } case *ast.GoStmt: f.walk(n.Call, "expr", visit) case *ast.DeferStmt: f.walk(n.Call, "expr", visit) case *ast.ReturnStmt: f.walk(n.Results, "expr", visit) case *ast.BranchStmt: case *ast.BlockStmt: f.walk(n.List, context, visit) case *ast.IfStmt: f.walk(n.Init, "stmt", visit) f.walk(&n.Cond, "expr", visit) f.walk(n.Body, "stmt", visit) f.walk(n.Else, "stmt", visit) case *ast.CaseClause: if context == "typeswitch" { context = "type" } else { context = "expr" } f.walk(n.List, context, visit) f.walk(n.Body, "stmt", visit) case *ast.SwitchStmt: f.walk(n.Init, "stmt", visit) f.walk(&n.Tag, "expr", visit) f.walk(n.Body, "switch", visit) case *ast.TypeSwitchStmt: f.walk(n.Init, "stmt", visit) f.walk(n.Assign, "stmt", visit) f.walk(n.Body, "typeswitch", visit) case *ast.CommClause: f.walk(n.Comm, "stmt", visit) f.walk(n.Body, "stmt", visit) case *ast.SelectStmt: f.walk(n.Body, "stmt", visit) case *ast.ForStmt: f.walk(n.Init, "stmt", visit) f.walk(&n.Cond, "expr", visit) f.walk(n.Post, "stmt", visit) f.walk(n.Body, "stmt", visit) case *ast.RangeStmt: f.walk(&n.Key, "expr", visit) f.walk(&n.Value, "expr", visit) f.walk(&n.X, "expr", visit) f.walk(n.Body, "stmt", visit) case *ast.ImportSpec: case *ast.ValueSpec: f.walk(&n.Type, "type", visit) f.walk(n.Values, "expr", visit) case *ast.TypeSpec: f.walk(&n.Type, "type", visit) case *ast.BadDecl: case *ast.GenDecl: f.walk(n.Specs, "spec", visit) case *ast.FuncDecl: if n.Recv != nil { f.walk(n.Recv, "param", visit) } f.walk(n.Type, "type", visit) if n.Body != nil { f.walk(n.Body, "stmt", visit) } case *ast.File: f.walk(n.Decls, "decl", visit) case *ast.Package: for _, file := range n.Files { f.walk(file, "file", visit) } case []ast.Decl: for _, d := range n { f.walk(d, context, visit) } case []ast.Expr: for i := range n { f.walk(&n[i], context, visit) } case []ast.Stmt: for _, s := range n { f.walk(s, context, visit) } case []ast.Spec: for _, s := range n { f.walk(s, context, visit) } } } go/src/cmd/cgo/doc.go0100644000000000000000000007010112412656734014671 0ustar00rootroot00000000000000// Copyright 2009 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. /* Cgo enables the creation of Go packages that call C code. Using cgo with the go command To use cgo write normal Go code that imports a pseudo-package "C". The Go code can then refer to types such as C.size_t, variables such as C.stdout, or functions such as C.putchar. If the import of "C" is immediately preceded by a comment, that comment, called the preamble, is used as a header when compiling the C parts of the package. For example: // #include // #include import "C" 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. 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). For example: // #cgo CFLAGS: -DPNG_DEBUG=1 // #cgo amd64 386 CFLAGS: -DX86=1 // #cgo LDFLAGS: -lpng // #include import "C" Alternatively, CPPFLAGS and LDFLAGS may be obtained via the pkg-config tool using a '#cgo pkg-config:' directive followed by the package names. For example: // #cgo pkg-config: png cairo // #include import "C" When building, the CGO_CFLAGS, CGO_CPPFLAGS, CGO_CXXFLAGS and CGO_LDFLAGS environment variables are added to the flags derived from these directives. Package-specific flags should be set using the directives, not the environment variables, so that builds work in unmodified environments. All the cgo CPPFLAGS and CFLAGS directives in a package are concatenated and used to compile C files in that package. All the CPPFLAGS and CXXFLAGS directives in a package are concatenated and used to compile C++ files in that package. All the LDFLAGS directives in any package in the program are concatenated and used at link time. All the pkg-config directives are concatenated and sent to pkg-config simultaneously to add to each appropriate set of command-line flags. When the Go tool sees that one or more Go files use the special import "C", it will look for other non-Go files in the directory and compile them as part of the Go package. Any .c, .s, or .S files will be compiled with the C compiler. Any .cc, .cpp, or .cxx files will be compiled with the C++ compiler. Any .h, .hh, .hpp, or .hxx files will not be compiled separately, but, if these header files are changed, the C and C++ files will be recompiled. The default C and C++ 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. 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. Go references to C Within the Go file, C's struct field names that are keywords in Go can be accessed by prefixing them with an underscore: if x points at a C struct with a field named "type", x._type accesses the field. C struct fields that cannot be expressed in Go, such as bit fields or misaligned data, are omitted in the Go struct, replaced by appropriate padding to reach the next field or the end of the struct. The standard C numeric types are available under the names C.char, C.schar (signed char), C.uchar (unsigned char), C.short, C.ushort (unsigned short), C.int, C.uint (unsigned int), C.long, C.ulong (unsigned long), C.longlong (long long), C.ulonglong (unsigned long long), C.float, C.double. The C type void* is represented by Go's unsafe.Pointer. To access a struct, union, or enum type directly, prefix it with struct_, union_, or enum_, as in C.struct_stat. As Go doesn't have support for C's union type in the general case, C's union types are represented as a Go byte array with the same length. Go structs cannot embed fields with C types. Cgo translates C types into equivalent unexported Go types. Because the translations are unexported, a Go package should not expose C types in its exported API: a C type used in one Go package is different from the same C type used in another. Any C function (even void functions) may be called in a multiple assignment context to retrieve both the return value (if any) and the C errno variable as an error (use _ to skip the result value if the function returns void). For example: n, err := C.sqrt(-1) _, err := C.voidFunc() Calling C function pointers is currently not supported, however you can declare Go variables which hold C function pointers and pass them back and forth between Go and C. C code may call function pointers received from Go. For example: package main // typedef int (*intFunc) (); // // int // bridge_int_func(intFunc f) // { // return f(); // } // // int fortytwo() // { // return 42; // } import "C" import "fmt" func main() { f := C.intFunc(C.fortytwo) fmt.Println(int(C.bridge_int_func(f))) // Output: 42 } In C, a function argument written as a fixed size array actually requires a pointer to the first element of the array. C compilers are aware of this calling convention and adjust the call accordingly, but Go cannot. In Go, you must pass the pointer to the first element explicitly: C.f(&x[0]). A few special functions convert between Go and C types by making copies of the data. In pseudo-Go definitions: // Go string to C string // The C string is allocated in the C heap using malloc. // It is the caller's responsibility to arrange for it to be // freed, such as by calling C.free (be sure to include stdlib.h // if C.free is needed). func C.CString(string) *C.char // C string to Go string func C.GoString(*C.char) string // C string, length to Go string func C.GoStringN(*C.char, C.int) string // C pointer, length to Go []byte func C.GoBytes(unsafe.Pointer, C.int) []byte C references to Go Go functions can be exported for use by C code in the following way: //export MyFunction func MyFunction(arg1, arg2 int, arg3 string) int64 {...} //export MyFunction2 func MyFunction2(arg1, arg2 int, arg3 string) (int64, *C.char) {...} They will be available in the C code as: extern int64 MyFunction(int arg1, int arg2, GoString arg3); extern struct MyFunction2_return MyFunction2(int arg1, int arg2, GoString arg3); found in the _cgo_export.h generated header, after any preambles copied from the cgo input files. Functions with multiple return values are mapped to functions returning a struct. Not all Go types can be mapped to C types in a useful way. Using //export in a file places a restriction on the preamble: since it is copied into two different C output files, it must not contain any definitions, only declarations. Definitions must be placed in preambles in other files, or in C source files. Using cgo directly Usage: go tool cgo [cgo options] [-- compiler options] file.go Cgo transforms the input file.go into four output files: two Go source files, a C file for 6c (or 8c or 5c), and a C file for gcc. The compiler options are passed through uninterpreted when invoking the C compiler to compile the C parts of the package. The following options are available when running cgo directly: -dynimport file Write list of symbols imported by file. Write to -dynout argument or to standard output. Used by go build when building a cgo package. -dynout file Write -dynimport output to file. -dynlinker Write dynamic linker as part of -dynimport output. -godefs Write out input file in Go syntax replacing C package names with real values. Used to generate files in the syscall package when bootstrapping a new target. -cdefs Like -godefs, but write file in C syntax. Used to generate files in the runtime package when bootstrapping a new target. -objdir directory Put all generated files in directory. -gccgo Generate output for the gccgo compiler rather than the gc compiler. -gccgoprefix prefix The -fgo-prefix option to be used with gccgo. -gccgopkgpath path The -fgo-pkgpath option to be used with gccgo. -import_runtime_cgo If set (which it is by default) import runtime/cgo in generated output. -import_syscall If set (which it is by default) import syscall in generated output. -debug-define Debugging option. Print #defines. -debug-gcc Debugging option. Trace C compiler execution and output. */ package main /* Implementation details. Cgo provides a way for Go programs to call C code linked into the same address space. This comment explains the operation of cgo. Cgo reads a set of Go source files and looks for statements saying import "C". If the import has a doc comment, that comment is taken as literal C code to be used as a preamble to any C code generated by cgo. A typical preamble #includes necessary definitions: // #include import "C" For more details about the usage of cgo, see the documentation comment at the top of this file. Understanding C Cgo scans the Go source files that import "C" for uses of that package, such as C.puts. It collects all such identifiers. The next step is to determine each kind of name. In C.xxx the xxx might refer to a type, a function, a constant, or a global variable. Cgo must decide which. The obvious thing for cgo to do is to process the preamble, expanding #includes and processing the corresponding C code. That would require a full C parser and type checker that was also aware of any extensions known to the system compiler (for example, all the GNU C extensions) as well as the system-specific header locations and system-specific pre-#defined macros. This is certainly possible to do, but it is an enormous amount of work. Cgo takes a different approach. It determines the meaning of C identifiers not by parsing C code but by feeding carefully constructed programs into the system C compiler and interpreting the generated error messages, debug information, and object files. In practice, parsing these is significantly less work and more robust than parsing C source. Cgo first invokes gcc -E -dM on the preamble, in order to find out about simple #defines for constants and the like. These are recorded for later use. Next, cgo needs to identify the kinds for each identifier. For the identifiers C.foo and C.bar, cgo generates this C program: #line 1 "not-declared" void __cgo_f_xxx_1(void) { __typeof__(foo) *__cgo_undefined__; } #line 1 "not-type" void __cgo_f_xxx_2(void) { foo *__cgo_undefined__; } #line 1 "not-const" void __cgo_f_xxx_3(void) { enum { __cgo_undefined__ = (foo)*1 }; } #line 2 "not-declared" void __cgo_f_xxx_1(void) { __typeof__(bar) *__cgo_undefined__; } #line 2 "not-type" void __cgo_f_xxx_2(void) { bar *__cgo_undefined__; } #line 2 "not-const" void __cgo_f_xxx_3(void) { enum { __cgo_undefined__ = (bar)*1 }; } This program will not compile, but cgo can use the presence or absence of an error message on a given line to deduce the information it needs. The program is syntactically valid regardless of whether each name is a type or an ordinary identifier, so there will be no syntax errors that might stop parsing early. An error on not-declared:1 indicates that foo is undeclared. An error on not-type:1 indicates that foo is not a type (if declared at all, it is an identifier). An error on not-const:1 indicates that foo is not an integer constant. The line number specifies the name involved. In the example, 1 is foo and 2 is bar. Next, cgo must learn the details of each type, variable, function, or constant. It can do this by reading object files. If cgo has decided that t1 is a type, v2 and v3 are variables or functions, and c4, c5, and c6 are constants, it generates: __typeof__(t1) *__cgo__1; __typeof__(v2) *__cgo__2; __typeof__(v3) *__cgo__3; __typeof__(c4) *__cgo__4; enum { __cgo_enum__4 = c4 }; __typeof__(c5) *__cgo__5; enum { __cgo_enum__5 = c5 }; __typeof__(c6) *__cgo__6; enum { __cgo_enum__6 = c6 }; long long __cgo_debug_data[] = { 0, // t1 0, // v2 0, // v3 c4, c5, c6, 1 }; and again invokes the system C compiler, to produce an object file containing debug information. Cgo parses the DWARF debug information for __cgo__N to learn the type of each identifier. (The types also distinguish functions from global variables.) If using a standard gcc, cgo can parse the DWARF debug information for the __cgo_enum__N to learn the identifier's value. The LLVM-based gcc on OS X emits incomplete DWARF information for enums; in that case cgo reads the constant values from the __cgo_debug_data from the object file's data segment. At this point cgo knows the meaning of each C.xxx well enough to start the translation process. Translating Go [The rest of this comment refers to 6g and 6c, the Go and C compilers that are part of the amd64 port of the gc Go toolchain. Everything here applies to another architecture's compilers as well.] Given the input Go files x.go and y.go, cgo generates these source files: x.cgo1.go # for 6g y.cgo1.go # for 6g _cgo_gotypes.go # for 6g _cgo_defun.c # for 6c x.cgo2.c # for gcc y.cgo2.c # for gcc _cgo_export.c # for gcc _cgo_main.c # for gcc The file x.cgo1.go is a copy of x.go with the import "C" removed and references to C.xxx replaced with names like _Cfunc_xxx or _Ctype_xxx. The definitions of those identifiers, written as Go functions, types, or variables, are provided in _cgo_gotypes.go. Here is a _cgo_gotypes.go containing definitions for C.flush (provided in the preamble) and C.puts (from stdio): type _Ctype_char int8 type _Ctype_int int32 type _Ctype_void [0]byte func _Cfunc_CString(string) *_Ctype_char func _Cfunc_flush() _Ctype_void func _Cfunc_puts(*_Ctype_char) _Ctype_int For functions, cgo only writes an external declaration in the Go output. The implementation is in a combination of C for 6c (meaning any gc-toolchain compiler) and C for gcc. The 6c file contains the definitions of the functions. They all have similar bodies that invoke runtime·cgocall to make a switch from the Go runtime world to the system C (GCC-based) world. For example, here is the definition of _Cfunc_puts: void _cgo_be59f0f25121_Cfunc_puts(void*); void ·_Cfunc_puts(struct{uint8 x[1];}p) { runtime·cgocall(_cgo_be59f0f25121_Cfunc_puts, &p); } The hexadecimal number is a hash of cgo's input, chosen to be deterministic yet unlikely to collide with other uses. The actual function _cgo_be59f0f25121_Cfunc_puts is implemented in a C source file compiled by gcc, the file x.cgo2.c: void _cgo_be59f0f25121_Cfunc_puts(void *v) { struct { char* p0; int r; char __pad12[4]; } __attribute__((__packed__, __gcc_struct__)) *a = v; a->r = puts((void*)a->p0); } It extracts the arguments from the pointer to _Cfunc_puts's argument frame, invokes the system C function (in this case, puts), stores the result in the frame, and returns. Linking Once the _cgo_export.c and *.cgo2.c files have been compiled with gcc, they need to be linked into the final binary, along with the libraries they might depend on (in the case of puts, stdio). 6l has been extended to understand basic ELF files, but it does not understand ELF in the full complexity that modern C libraries embrace, so it cannot in general generate direct references to the system libraries. Instead, the build process generates an object file using dynamic linkage to the desired libraries. The main function is provided by _cgo_main.c: int main() { return 0; } void crosscall2(void(*fn)(void*, int), void *a, int c) { } void _cgo_allocate(void *a, int c) { } void _cgo_panic(void *a, int c) { } The extra functions here are stubs to satisfy the references in the C code generated for gcc. The build process links this stub, along with _cgo_export.c and *.cgo2.c, into a dynamic executable and then lets cgo examine the executable. Cgo records the list of shared library references and resolved names and writes them into a new file _cgo_import.c, which looks like: #pragma cgo_dynamic_linker "/lib64/ld-linux-x86-64.so.2" #pragma cgo_import_dynamic puts puts#GLIBC_2.2.5 "libc.so.6" #pragma cgo_import_dynamic __libc_start_main __libc_start_main#GLIBC_2.2.5 "libc.so.6" #pragma cgo_import_dynamic stdout stdout#GLIBC_2.2.5 "libc.so.6" #pragma cgo_import_dynamic fflush fflush#GLIBC_2.2.5 "libc.so.6" #pragma cgo_import_dynamic _ _ "libpthread.so.0" #pragma cgo_import_dynamic _ _ "libc.so.6" In the end, the compiled Go package, which will eventually be presented to 6l as part of a larger program, contains: _go_.6 # 6g-compiled object for _cgo_gotypes.go *.cgo1.go _cgo_defun.6 # 6c-compiled object for _cgo_defun.c _all.o # gcc-compiled object for _cgo_export.c, *.cgo2.c _cgo_import.6 # 6c-compiled object for _cgo_import.c The final program will be a dynamic executable, so that 6l can avoid needing to process arbitrary .o files. It only needs to process the .o files generated from C files that cgo writes, and those are much more limited in the ELF or other features that they use. In essence, the _cgo_import.6 file includes the extra linking directives that 6l is not sophisticated enough to derive from _all.o on its own. Similarly, the _all.o uses dynamic references to real system object code because 6l is not sophisticated enough to process the real code. The main benefits of this system are that 6l remains relatively simple (it does not need to implement a complete ELF and Mach-O linker) and that gcc is not needed after the package is compiled. For example, package net uses cgo for access to name resolution functions provided by libc. Although gcc is needed to compile package net, gcc is not needed to link programs that import package net. Runtime When using cgo, Go must not assume that it owns all details of the process. In particular it needs to coordinate with C in the use of threads and thread-local storage. The runtime package, in its own (6c-compiled) C code, declares a few uninitialized (default bss) variables: bool runtime·iscgo; void (*libcgo_thread_start)(void*); void (*initcgo)(G*); Any package using cgo imports "runtime/cgo", which provides initializations for these variables. It sets iscgo to 1, initcgo to a gcc-compiled function that can be called early during program startup, and libcgo_thread_start to a gcc-compiled function that can be used to create a new thread, in place of the runtime's usual direct system calls. Internal and External Linking The text above describes "internal" linking, in which 6l parses and links host object files (ELF, Mach-O, PE, and so on) into the final executable itself. Keeping 6l simple means we cannot possibly implement the full semantics of the host linker, so the kinds of objects that can be linked directly into the binary is limited (other code can only be used as a dynamic library). On the other hand, when using internal linking, 6l can generate Go binaries by itself. In order to allow linking arbitrary object files without requiring dynamic libraries, cgo will soon support an "external" linking mode too. In external linking mode, 6l does not process any host object files. Instead, it collects all the Go code and writes a single go.o object file containing it. Then it invokes the host linker (usually gcc) to combine the go.o object file and any supporting non-Go code into a final executable. External linking avoids the dynamic library requirement but introduces a requirement that the host linker be present to create such a binary. Most builds both compile source code and invoke the linker to create a binary. When cgo is involved, the compile step already requires gcc, so it is not problematic for the link step to require gcc too. An important exception is builds using a pre-compiled copy of the standard library. In particular, package net uses cgo on most systems, and we want to preserve the ability to compile pure Go code that imports net without requiring gcc to be present at link time. (In this case, the dynamic library requirement is less significant, because the only library involved is libc.so, which can usually be assumed present.) This conflict between functionality and the gcc requirement means we must support both internal and external linking, depending on the circumstances: if net is the only cgo-using package, then internal linking is probably fine, but if other packages are involved, so that there are dependencies on libraries beyond libc, external linking is likely to work better. The compilation of a package records the relevant information to support both linking modes, leaving the decision to be made when linking the final binary. Linking Directives In either linking mode, package-specific directives must be passed through to 6l. These are communicated by writing #pragma directives in a C source file compiled by 6c. The directives are copied into the .6 object file and then processed by the linker. The directives are: #pragma cgo_import_dynamic [ [""]] In internal linking mode, allow an unresolved reference to , assuming it will be resolved by a dynamic library symbol. The optional specifies the symbol's name and possibly version in the dynamic library, and the optional "" names the specific library where the symbol should be found. In the , # or @ can be used to introduce a symbol version. Examples: #pragma cgo_import_dynamic puts #pragma cgo_import_dynamic puts puts#GLIBC_2.2.5 #pragma cgo_import_dynamic puts puts#GLIBC_2.2.5 "libc.so.6" A side effect of the cgo_import_dynamic directive with a library is to make the final binary depend on that dynamic library. To get the dependency without importing any specific symbols, use _ for local and remote. Example: #pragma cgo_import_dynamic _ _ "libc.so.6" For compatibility with current versions of SWIG, #pragma dynimport is an alias for #pragma cgo_import_dynamic. #pragma cgo_dynamic_linker "" In internal linking mode, use "" as the dynamic linker in the final binary. This directive is only needed from one package when constructing a binary; by convention it is supplied by runtime/cgo. Example: #pragma cgo_dynamic_linker "/lib/ld-linux.so.2" #pragma cgo_export_dynamic In internal linking mode, put the Go symbol named into the program's exported symbol table as , so that C code can refer to it by that name. This mechanism makes it possible for C code to call back into Go or to share Go's data. For compatibility with current versions of SWIG, #pragma dynexport is an alias for #pragma cgo_export_dynamic. #pragma cgo_import_static In external linking mode, allow unresolved references to in the go.o object file prepared for the host linker, under the assumption that will be supplied by the other object files that will be linked with go.o. Example: #pragma cgo_import_static puts_wrapper #pragma cgo_export_static In external linking mode, put the Go symbol named into the program's exported symbol table as , so that C code can refer to it by that name. This mechanism makes it possible for C code to call back into Go or to share Go's data. #pragma cgo_ldflag "" In external linking mode, invoke the host linker (usually gcc) with "" as a command-line argument following the .o files. Note that the arguments are for "gcc", not "ld". Example: #pragma cgo_ldflag "-lpthread" #pragma cgo_ldflag "-L/usr/local/sqlite3/lib" A package compiled with cgo will include directives for both internal and external linking; the linker will select the appropriate subset for the chosen linking mode. Example As a simple example, consider a package that uses cgo to call C.sin. The following code will be generated by cgo: // compiled by 6g type _Ctype_double float64 func _Cfunc_sin(_Ctype_double) _Ctype_double // compiled by 6c #pragma cgo_import_dynamic sin sin#GLIBC_2.2.5 "libm.so.6" #pragma cgo_import_static _cgo_gcc_Cfunc_sin #pragma cgo_ldflag "-lm" void _cgo_gcc_Cfunc_sin(void*); void ·_Cfunc_sin(struct{uint8 x[16];}p) { runtime·cgocall(_cgo_gcc_Cfunc_sin, &p); } // compiled by gcc, into foo.cgo2.o void _cgo_gcc_Cfunc_sin(void *v) { struct { double p0; double r; } __attribute__((__packed__)) *a = v; a->r = sin(a->p0); } What happens at link time depends on whether the final binary is linked using the internal or external mode. If other packages are compiled in "external only" mode, then the final link will be an external one. Otherwise the link will be an internal one. The directives in the 6c-compiled file are used according to the kind of final link used. In internal mode, 6l itself processes all the host object files, in particular foo.cgo2.o. To do so, it uses the cgo_import_dynamic and cgo_dynamic_linker directives to learn that the otherwise undefined reference to sin in foo.cgo2.o should be rewritten to refer to the symbol sin with version GLIBC_2.2.5 from the dynamic library "libm.so.6", and the binary should request "/lib/ld-linux.so.2" as its runtime dynamic linker. In external mode, 6l does not process any host object files, in particular foo.cgo2.o. It links together the 6g- and 6c-generated object files, along with any other Go code, into a go.o file. While doing that, 6l will discover that there is no definition for _cgo_gcc_Cfunc_sin, referred to by the 6c-compiled source file. This is okay, because 6l also processes the cgo_import_static directive and knows that _cgo_gcc_Cfunc_sin is expected to be supplied by a host object file, so 6l does not treat the missing symbol as an error when creating go.o. Indeed, the definition for _cgo_gcc_Cfunc_sin will be provided to the host linker by foo2.cgo.o, which in turn will need the symbol 'sin'. 6l also processes the cgo_ldflag directives, so that it knows that the eventual host link command must include the -lm argument, so that the host linker will be able to find 'sin' in the math library. 6l Command Line Interface The go command and any other Go-aware build systems invoke 6l to link a collection of packages into a single binary. By default, 6l will present the same interface it does today: 6l main.a produces a file named 6.out, even if 6l does so by invoking the host linker in external linking mode. By default, 6l will decide the linking mode as follows: if the only packages using cgo are those on a whitelist of standard library packages (net, os/user, runtime/cgo), 6l will use internal linking mode. Otherwise, there are non-standard cgo packages involved, and 6l will use external linking mode. The first rule means that a build of the godoc binary, which uses net but no other cgo, can run without needing gcc available. The second rule means that a build of a cgo-wrapped library like sqlite3 can generate a standalone executable instead of needing to refer to a dynamic library. The specific choice can be overridden using a command line flag: 6l -linkmode=internal or 6l -linkmode=external. In an external link, 6l will create a temporary directory, write any host object files found in package archives to that directory (renamed to avoid conflicts), write the go.o file to that directory, and invoke the host linker. The default value for the host linker is $CC, split into fields, or else "gcc". The specific host linker command line can be overridden using command line flags: 6l -extld=clang -extldflags='-ggdb -O3'. If any package in a build includes a .cc or other file compiled by the C++ compiler, the go tool will use the -extld option to set the host linker to the C++ compiler. These defaults mean that Go-aware build systems can ignore the linking changes and keep running plain '6l' and get reasonable results, but they can also control the linking details if desired. */ go/src/cmd/cgo/gcc.go0100644000000000000000000013540112412656737014670 0ustar00rootroot00000000000000// Copyright 2009 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. // Annotate Ref in Prog with C types by parsing gcc debug output. // Conversion of debug output to Go types. package main import ( "bytes" "debug/dwarf" "debug/elf" "debug/macho" "debug/pe" "encoding/binary" "errors" "flag" "fmt" "go/ast" "go/parser" "go/token" "os" "strconv" "strings" "unicode" "unicode/utf8" ) var debugDefine = flag.Bool("debug-define", false, "print relevant #defines") var debugGcc = flag.Bool("debug-gcc", false, "print gcc invocations") var nameToC = map[string]string{ "schar": "signed char", "uchar": "unsigned char", "ushort": "unsigned short", "uint": "unsigned int", "ulong": "unsigned long", "longlong": "long long", "ulonglong": "unsigned long long", "complexfloat": "float complex", "complexdouble": "double complex", } // cname returns the C name to use for C.s. // The expansions are listed in nameToC and also // struct_foo becomes "struct foo", and similarly for // union and enum. func cname(s string) string { if t, ok := nameToC[s]; ok { return t } if strings.HasPrefix(s, "struct_") { return "struct " + s[len("struct_"):] } if strings.HasPrefix(s, "union_") { return "union " + s[len("union_"):] } if strings.HasPrefix(s, "enum_") { return "enum " + s[len("enum_"):] } if strings.HasPrefix(s, "sizeof_") { return "sizeof(" + cname(s[len("sizeof_"):]) + ")" } return s } // DiscardCgoDirectives processes the import C preamble, and discards // all #cgo CFLAGS and LDFLAGS directives, so they don't make their // way into _cgo_export.h. func (f *File) DiscardCgoDirectives() { linesIn := strings.Split(f.Preamble, "\n") linesOut := make([]string, 0, len(linesIn)) for _, line := range linesIn { l := strings.TrimSpace(line) if len(l) < 5 || l[:4] != "#cgo" || !unicode.IsSpace(rune(l[4])) { linesOut = append(linesOut, line) } else { linesOut = append(linesOut, "") } } f.Preamble = strings.Join(linesOut, "\n") } // addToFlag appends args to flag. All flags are later written out onto the // _cgo_flags file for the build system to use. func (p *Package) addToFlag(flag string, args []string) { p.CgoFlags[flag] = append(p.CgoFlags[flag], args...) if flag == "CFLAGS" { // We'll also need these when preprocessing for dwarf information. p.GccOptions = append(p.GccOptions, args...) } } // splitQuoted splits the string s around each instance of one or more consecutive // white space characters while taking into account quotes and escaping, and // returns an array of substrings of s or an empty list if s contains only white space. // Single quotes and double quotes are recognized to prevent splitting within the // quoted region, and are removed from the resulting substrings. If a quote in s // isn't closed err will be set and r will have the unclosed argument as the // last element. The backslash is used for escaping. // // For example, the following string: // // `a b:"c d" 'e''f' "g\""` // // Would be parsed as: // // []string{"a", "b:c d", "ef", `g"`} // func splitQuoted(s string) (r []string, err error) { var args []string arg := make([]rune, len(s)) escaped := false quoted := false quote := '\x00' i := 0 for _, r := range s { switch { case escaped: escaped = false case r == '\\': escaped = true continue case quote != 0: if r == quote { quote = 0 continue } case r == '"' || r == '\'': quoted = true quote = r continue case unicode.IsSpace(r): if quoted || i > 0 { quoted = false args = append(args, string(arg[:i])) i = 0 } continue } arg[i] = r i++ } if quoted || i > 0 { args = append(args, string(arg[:i])) } if quote != 0 { err = errors.New("unclosed quote") } else if escaped { err = errors.New("unfinished escaping") } return args, err } var safeBytes = []byte(`+-.,/0123456789:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\_abcdefghijklmnopqrstuvwxyz`) func safeName(s string) bool { if s == "" { return false } for i := 0; i < len(s); i++ { if c := s[i]; c < 0x80 && bytes.IndexByte(safeBytes, c) < 0 { return false } } return true } // Translate rewrites f.AST, the original Go input, to remove // references to the imported package C, replacing them with // references to the equivalent Go types, functions, and variables. func (p *Package) Translate(f *File) { for _, cref := range f.Ref { // Convert C.ulong to C.unsigned long, etc. cref.Name.C = cname(cref.Name.Go) } p.loadDefines(f) needType := p.guessKinds(f) if len(needType) > 0 { p.loadDWARF(f, needType) } p.rewriteRef(f) } // loadDefines coerces gcc into spitting out the #defines in use // in the file f and saves relevant renamings in f.Name[name].Define. func (p *Package) loadDefines(f *File) { var b bytes.Buffer b.WriteString(f.Preamble) b.WriteString(builtinProlog) stdout := p.gccDefines(b.Bytes()) for _, line := range strings.Split(stdout, "\n") { if len(line) < 9 || line[0:7] != "#define" { continue } line = strings.TrimSpace(line[8:]) var key, val string spaceIndex := strings.Index(line, " ") tabIndex := strings.Index(line, "\t") if spaceIndex == -1 && tabIndex == -1 { continue } else if tabIndex == -1 || (spaceIndex != -1 && spaceIndex < tabIndex) { key = line[0:spaceIndex] val = strings.TrimSpace(line[spaceIndex:]) } else { key = line[0:tabIndex] val = strings.TrimSpace(line[tabIndex:]) } if n := f.Name[key]; n != nil { if *debugDefine { fmt.Fprintf(os.Stderr, "#define %s %s\n", key, val) } n.Define = val } } } // guessKinds tricks gcc into revealing the kind of each // name xxx for the references C.xxx in the Go input. // The kind is either a constant, type, or variable. func (p *Package) guessKinds(f *File) []*Name { // Determine kinds for names we already know about, // like #defines or 'struct foo', before bothering with gcc. var names, needType []*Name for _, n := range f.Name { // If we've already found this name as a #define // and we can translate it as a constant value, do so. if n.Define != "" { isConst := false if _, err := strconv.Atoi(n.Define); err == nil { isConst = true } else if n.Define[0] == '"' || n.Define[0] == '\'' { if _, err := parser.ParseExpr(n.Define); err == nil { isConst = true } } if isConst { n.Kind = "const" // Turn decimal into hex, just for consistency // with enum-derived constants. Otherwise // in the cgo -godefs output half the constants // are in hex and half are in whatever the #define used. i, err := strconv.ParseInt(n.Define, 0, 64) if err == nil { n.Const = fmt.Sprintf("%#x", i) } else { n.Const = n.Define } continue } if isName(n.Define) { n.C = n.Define } } needType = append(needType, n) // If this is a struct, union, or enum type name, no need to guess the kind. if strings.HasPrefix(n.C, "struct ") || strings.HasPrefix(n.C, "union ") || strings.HasPrefix(n.C, "enum ") { n.Kind = "type" continue } // Otherwise, we'll need to find out from gcc. names = append(names, n) } // Bypass gcc if there's nothing left to find out. if len(names) == 0 { return needType } // Coerce gcc into telling us whether each name is a type, a value, or undeclared. // For names, find out whether they are integer constants. // We used to look at specific warning or error messages here, but that tied the // behavior too closely to specific versions of the compilers. // Instead, arrange that we can infer what we need from only the presence or absence // of an error on a specific line. // // For each name, we generate these lines, where xxx is the index in toSniff plus one. // // #line xxx "not-declared" // void __cgo_f_xxx_1(void) { __typeof__(name) *__cgo_undefined__; } // #line xxx "not-type" // void __cgo_f_xxx_2(void) { name *__cgo_undefined__; } // #line xxx "not-const" // void __cgo_f_xxx_3(void) { enum { __cgo_undefined__ = (name)*1 }; } // // If we see an error at not-declared:xxx, the corresponding name is not declared. // If we see an error at not-type:xxx, the corresponding name is a type. // If we see an error at not-const:xxx, the corresponding name is not an integer constant. // If we see no errors, we assume the name is an expression but not a constant // (so a variable or a function). // // The specific input forms are chosen so that they are valid C syntax regardless of // whether name denotes a type or an expression. var b bytes.Buffer b.WriteString(f.Preamble) b.WriteString(builtinProlog) for i, n := range names { fmt.Fprintf(&b, "#line %d \"not-declared\"\n"+ "void __cgo_f_%d_1(void) { __typeof__(%s) *__cgo_undefined__; }\n"+ "#line %d \"not-type\"\n"+ "void __cgo_f_%d_2(void) { %s *__cgo_undefined__; }\n"+ "#line %d \"not-const\"\n"+ "void __cgo_f_%d_3(void) { enum { __cgo__undefined__ = (%s)*1 }; }\n", i+1, i+1, n.C, i+1, i+1, n.C, i+1, i+1, n.C) } fmt.Fprintf(&b, "#line 1 \"completed\"\n"+ "int __cgo__1 = __cgo__2;\n") stderr := p.gccErrors(b.Bytes()) if stderr == "" { fatalf("%s produced no output\non input:\n%s", p.gccBaseCmd()[0], b.Bytes()) } completed := false sniff := make([]int, len(names)) const ( notType = 1 << iota notConst ) for _, line := range strings.Split(stderr, "\n") { if !strings.Contains(line, ": error:") { // we only care about errors. // we tried to turn off warnings on the command line, but one never knows. continue } c1 := strings.Index(line, ":") if c1 < 0 { continue } c2 := strings.Index(line[c1+1:], ":") if c2 < 0 { continue } c2 += c1 + 1 filename := line[:c1] i, _ := strconv.Atoi(line[c1+1 : c2]) i-- if i < 0 || i >= len(names) { continue } switch filename { case "completed": // Strictly speaking, there is no guarantee that seeing the error at completed:1 // (at the end of the file) means we've seen all the errors from earlier in the file, // but usually it does. Certainly if we don't see the completed:1 error, we did // not get all the errors we expected. completed = true case "not-declared": error_(token.NoPos, "%s", strings.TrimSpace(line[c2+1:])) case "not-type": sniff[i] |= notType case "not-const": sniff[i] |= notConst } } if !completed { fatalf("%s did not produce error at completed:1\non input:\n%s", p.gccBaseCmd()[0], b.Bytes()) } for i, n := range names { switch sniff[i] { case 0: error_(token.NoPos, "could not determine kind of name for C.%s", fixGo(n.Go)) case notType: n.Kind = "const" case notConst: n.Kind = "type" case notConst | notType: n.Kind = "not-type" } } if nerrors > 0 { fatalf("unresolved names") } needType = append(needType, names...) return needType } // loadDWARF parses the DWARF debug information generated // by gcc to learn the details of the constants, variables, and types // being referred to as C.xxx. func (p *Package) loadDWARF(f *File, names []*Name) { // Extract the types from the DWARF section of an object // from a well-formed C program. Gcc only generates DWARF info // for symbols in the object file, so it is not enough to print the // preamble and hope the symbols we care about will be there. // Instead, emit // __typeof__(names[i]) *__cgo__i; // for each entry in names and then dereference the type we // learn for __cgo__i. var b bytes.Buffer b.WriteString(f.Preamble) b.WriteString(builtinProlog) for i, n := range names { fmt.Fprintf(&b, "__typeof__(%s) *__cgo__%d;\n", n.C, i) if n.Kind == "const" { fmt.Fprintf(&b, "enum { __cgo_enum__%d = %s };\n", i, n.C) } } // Apple's LLVM-based gcc does not include the enumeration // names and values in its DWARF debug output. In case we're // using such a gcc, create a data block initialized with the values. // We can read them out of the object file. fmt.Fprintf(&b, "long long __cgodebug_data[] = {\n") for _, n := range names { if n.Kind == "const" { fmt.Fprintf(&b, "\t%s,\n", n.C) } else { fmt.Fprintf(&b, "\t0,\n") } } // for the last entry, we can not use 0, otherwise // in case all __cgodebug_data is zero initialized, // LLVM-based gcc will place the it in the __DATA.__common // zero-filled section (our debug/macho doesn't support // this) fmt.Fprintf(&b, "\t1\n") fmt.Fprintf(&b, "};\n") d, bo, debugData := p.gccDebug(b.Bytes()) enumVal := make([]int64, len(debugData)/8) for i := range enumVal { enumVal[i] = int64(bo.Uint64(debugData[i*8:])) } // Scan DWARF info for top-level TagVariable entries with AttrName __cgo__i. types := make([]dwarf.Type, len(names)) enums := make([]dwarf.Offset, len(names)) nameToIndex := make(map[*Name]int) for i, n := range names { nameToIndex[n] = i } nameToRef := make(map[*Name]*Ref) for _, ref := range f.Ref { nameToRef[ref.Name] = ref } r := d.Reader() for { e, err := r.Next() if err != nil { fatalf("reading DWARF entry: %s", err) } if e == nil { break } switch e.Tag { case dwarf.TagEnumerationType: offset := e.Offset for { e, err := r.Next() if err != nil { fatalf("reading DWARF entry: %s", err) } if e.Tag == 0 { break } if e.Tag == dwarf.TagEnumerator { entryName := e.Val(dwarf.AttrName).(string) if strings.HasPrefix(entryName, "__cgo_enum__") { n, _ := strconv.Atoi(entryName[len("__cgo_enum__"):]) if 0 <= n && n < len(names) { enums[n] = offset } } } } case dwarf.TagVariable: name, _ := e.Val(dwarf.AttrName).(string) typOff, _ := e.Val(dwarf.AttrType).(dwarf.Offset) if name == "" || typOff == 0 { fatalf("malformed DWARF TagVariable entry") } if !strings.HasPrefix(name, "__cgo__") { break } typ, err := d.Type(typOff) if err != nil { fatalf("loading DWARF type: %s", err) } t, ok := typ.(*dwarf.PtrType) if !ok || t == nil { fatalf("internal error: %s has non-pointer type", name) } i, err := strconv.Atoi(name[7:]) if err != nil { fatalf("malformed __cgo__ name: %s", name) } if enums[i] != 0 { t, err := d.Type(enums[i]) if err != nil { fatalf("loading DWARF type: %s", err) } types[i] = t } else { types[i] = t.Type } } if e.Tag != dwarf.TagCompileUnit { r.SkipChildren() } } // Record types and typedef information. var conv typeConv conv.Init(p.PtrSize, p.IntSize) for i, n := range names { if types[i] == nil { continue } pos := token.NoPos if ref, ok := nameToRef[n]; ok { pos = ref.Pos() } f, fok := types[i].(*dwarf.FuncType) if n.Kind != "type" && fok { n.Kind = "func" n.FuncType = conv.FuncType(f, pos) } else { n.Type = conv.Type(types[i], pos) if enums[i] != 0 && n.Type.EnumValues != nil { k := fmt.Sprintf("__cgo_enum__%d", i) n.Kind = "const" n.Const = fmt.Sprintf("%#x", n.Type.EnumValues[k]) // Remove injected enum to ensure the value will deep-compare // equally in future loads of the same constant. delete(n.Type.EnumValues, k) } // Prefer debug data over DWARF debug output, if we have it. if n.Kind == "const" && i < len(enumVal) { n.Const = fmt.Sprintf("%#x", enumVal[i]) } } conv.FinishType(pos) } } // mangleName does name mangling to translate names // from the original Go source files to the names // used in the final Go files generated by cgo. func (p *Package) mangleName(n *Name) { // When using gccgo variables have to be // exported so that they become global symbols // that the C code can refer to. prefix := "_C" if *gccgo && n.IsVar() { prefix = "C" } n.Mangle = prefix + n.Kind + "_" + n.Go } // rewriteRef rewrites all the C.xxx references in f.AST to refer to the // Go equivalents, now that we have figured out the meaning of all // the xxx. In *godefs or *cdefs mode, rewriteRef replaces the names // with full definitions instead of mangled names. func (p *Package) rewriteRef(f *File) { // Keep a list of all the functions, to remove the ones // only used as expressions and avoid generating bridge // code for them. functions := make(map[string]bool) // Assign mangled names. for _, n := range f.Name { if n.Kind == "not-type" { n.Kind = "var" } if n.Mangle == "" { p.mangleName(n) } if n.Kind == "func" { functions[n.Go] = false } } // Now that we have all the name types filled in, // scan through the Refs to identify the ones that // are trying to do a ,err call. Also check that // functions are only used in calls. for _, r := range f.Ref { if r.Name.Kind == "const" && r.Name.Const == "" { error_(r.Pos(), "unable to find value of constant C.%s", fixGo(r.Name.Go)) } var expr ast.Expr = ast.NewIdent(r.Name.Mangle) // default switch r.Context { case "call", "call2": if r.Name.Kind != "func" { if r.Name.Kind == "type" { r.Context = "type" expr = r.Name.Type.Go break } error_(r.Pos(), "call of non-function C.%s", fixGo(r.Name.Go)) break } functions[r.Name.Go] = true if r.Context == "call2" { if r.Name.Go == "_CMalloc" { error_(r.Pos(), "no two-result form for C.malloc") break } // Invent new Name for the two-result function. n := f.Name["2"+r.Name.Go] if n == nil { n = new(Name) *n = *r.Name n.AddError = true n.Mangle = "_C2func_" + n.Go f.Name["2"+r.Name.Go] = n } expr = ast.NewIdent(n.Mangle) r.Name = n break } case "expr": if r.Name.Kind == "func" { // Function is being used in an expression, to e.g. pass around a C function pointer. // Create a new Name for this Ref which causes the variable to be declared in Go land. fpName := "fp_" + r.Name.Go name := f.Name[fpName] if name == nil { name = &Name{ Go: fpName, C: r.Name.C, Kind: "fpvar", Type: &Type{Size: p.PtrSize, Align: p.PtrSize, C: c("void*"), Go: ast.NewIdent("unsafe.Pointer")}, } p.mangleName(name) f.Name[fpName] = name } r.Name = name expr = ast.NewIdent(name.Mangle) } else if r.Name.Kind == "type" { // Okay - might be new(T) expr = r.Name.Type.Go } else if r.Name.Kind == "var" { expr = &ast.StarExpr{Star: (*r.Expr).Pos(), X: expr} } case "type": if r.Name.Kind != "type" { error_(r.Pos(), "expression C.%s used as type", fixGo(r.Name.Go)) } else if r.Name.Type == nil { // Use of C.enum_x, C.struct_x or C.union_x without C definition. // GCC won't raise an error when using pointers to such unknown types. error_(r.Pos(), "type C.%s: undefined C type '%s'", fixGo(r.Name.Go), r.Name.C) } else { expr = r.Name.Type.Go } default: if r.Name.Kind == "func" { error_(r.Pos(), "must call C.%s", fixGo(r.Name.Go)) } } if *godefs || *cdefs { // Substitute definition for mangled type name. if id, ok := expr.(*ast.Ident); ok { if t := typedef[id.Name]; t != nil { expr = t.Go } if id.Name == r.Name.Mangle && r.Name.Const != "" { expr = ast.NewIdent(r.Name.Const) } } } // Copy position information from old expr into new expr, // in case expression being replaced is first on line. // See golang.org/issue/6563. pos := (*r.Expr).Pos() switch x := expr.(type) { case *ast.Ident: expr = &ast.Ident{NamePos: pos, Name: x.Name} } *r.Expr = expr } // Remove functions only used as expressions, so their respective // bridge functions are not generated. for name, used := range functions { if !used { delete(f.Name, name) } } } // gccBaseCmd returns the start of the compiler command line. // It uses $CC if set, or else $GCC, or else the compiler recorded // during the initial build as defaultCC. // defaultCC is defined in zdefaultcc.go, written by cmd/dist. func (p *Package) gccBaseCmd() []string { // Use $CC if set, since that's what the build uses. if ret := strings.Fields(os.Getenv("CC")); len(ret) > 0 { return ret } // Try $GCC if set, since that's what we used to use. if ret := strings.Fields(os.Getenv("GCC")); len(ret) > 0 { return ret } return strings.Fields(defaultCC) } // gccMachine returns the gcc -m flag to use, either "-m32", "-m64" or "-marm". func (p *Package) gccMachine() []string { switch goarch { case "amd64": return []string{"-m64"} case "386": return []string{"-m32"} case "arm": return []string{"-marm"} // not thumb } return nil } func gccTmp() string { return *objDir + "_cgo_.o" } // gccCmd returns the gcc command line to use for compiling // the input. func (p *Package) gccCmd() []string { c := append(p.gccBaseCmd(), "-w", // no warnings "-Wno-error", // warnings are not errors "-o"+gccTmp(), // write object to tmp "-gdwarf-2", // generate DWARF v2 debugging symbols "-c", // do not link "-xc", // input language is C ) if strings.Contains(c[0], "clang") { c = append(c, "-ferror-limit=0", // Apple clang version 1.7 (tags/Apple/clang-77) (based on LLVM 2.9svn) // doesn't have -Wno-unneeded-internal-declaration, so we need yet another // flag to disable the warning. Yes, really good diagnostics, clang. "-Wno-unknown-warning-option", "-Wno-unneeded-internal-declaration", "-Wno-unused-function", "-Qunused-arguments", // Clang embeds prototypes for some builtin functions, // like malloc and calloc, but all size_t parameters are // 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. "-fno-builtin", ) } c = append(c, p.GccOptions...) c = append(c, p.gccMachine()...) c = append(c, "-") //read input from standard input return c } // gccDebug runs gcc -gdwarf-2 over the C program stdin and // returns the corresponding DWARF data and, if present, debug data block. func (p *Package) gccDebug(stdin []byte) (*dwarf.Data, binary.ByteOrder, []byte) { runGcc(stdin, p.gccCmd()) isDebugData := func(s string) bool { // Some systems use leading _ to denote non-assembly symbols. return s == "__cgodebug_data" || s == "___cgodebug_data" } if f, err := macho.Open(gccTmp()); err == nil { defer f.Close() d, err := f.DWARF() if err != nil { fatalf("cannot load DWARF output from %s: %v", gccTmp(), err) } var data []byte if f.Symtab != nil { for i := range f.Symtab.Syms { s := &f.Symtab.Syms[i] if isDebugData(s.Name) { // Found it. Now find data section. if i := int(s.Sect) - 1; 0 <= i && i < len(f.Sections) { sect := f.Sections[i] if sect.Addr <= s.Value && s.Value < sect.Addr+sect.Size { if sdat, err := sect.Data(); err == nil { data = sdat[s.Value-sect.Addr:] } } } } } } return d, f.ByteOrder, data } if f, err := elf.Open(gccTmp()); err == nil { defer f.Close() d, err := f.DWARF() if err != nil { fatalf("cannot load DWARF output from %s: %v", gccTmp(), err) } var data []byte symtab, err := f.Symbols() if err == nil { for i := range symtab { s := &symtab[i] if isDebugData(s.Name) { // Found it. Now find data section. if i := int(s.Section); 0 <= i && i < len(f.Sections) { sect := f.Sections[i] if sect.Addr <= s.Value && s.Value < sect.Addr+sect.Size { if sdat, err := sect.Data(); err == nil { data = sdat[s.Value-sect.Addr:] } } } } } } return d, f.ByteOrder, data } if f, err := pe.Open(gccTmp()); err == nil { defer f.Close() d, err := f.DWARF() if err != nil { fatalf("cannot load DWARF output from %s: %v", gccTmp(), err) } var data []byte for _, s := range f.Symbols { if isDebugData(s.Name) { if i := int(s.SectionNumber) - 1; 0 <= i && i < len(f.Sections) { sect := f.Sections[i] if s.Value < sect.Size { if sdat, err := sect.Data(); err == nil { data = sdat[s.Value:] } } } } } return d, binary.LittleEndian, data } fatalf("cannot parse gcc output %s as ELF, Mach-O, PE object", gccTmp()) panic("not reached") } // gccDefines runs gcc -E -dM -xc - over the C program stdin // and returns the corresponding standard output, which is the // #defines that gcc encountered while processing the input // and its included files. func (p *Package) gccDefines(stdin []byte) string { base := append(p.gccBaseCmd(), "-E", "-dM", "-xc") base = append(base, p.gccMachine()...) stdout, _ := runGcc(stdin, append(append(base, p.GccOptions...), "-")) return stdout } // gccErrors runs gcc over the C program stdin and returns // the errors that gcc prints. That is, this function expects // gcc to fail. func (p *Package) gccErrors(stdin []byte) string { // TODO(rsc): require failure args := p.gccCmd() if *debugGcc { fmt.Fprintf(os.Stderr, "$ %s < 0 { for dtype := range c.ptrs { // Note Type might invalidate c.ptrs[dtype]. t := c.Type(dtype, pos) for _, ptr := range c.ptrs[dtype] { ptr.Go.(*ast.StarExpr).X = t.Go ptr.C.Set("%s*", t.C) } delete(c.ptrs, dtype) } } // Now that pointer types are completed, we can invoke godefsFields // to rewrite struct definitions. for _, fld := range c.todoFlds { godefsFields(fld) } c.todoFlds = nil } // Type returns a *Type with the same memory layout as // dtype when used as the type of a variable or a struct field. func (c *typeConv) Type(dtype dwarf.Type, pos token.Pos) *Type { if t, ok := c.m[dtype]; ok { if t.Go == nil { fatalf("%s: type conversion loop at %s", lineno(pos), dtype) } return t } // clang won't generate DW_AT_byte_size for pointer types, // so we have to fix it here. if dt, ok := base(dtype).(*dwarf.PtrType); ok && dt.ByteSize == -1 { dt.ByteSize = c.ptrSize } t := new(Type) t.Size = dtype.Size() // note: wrong for array of pointers, corrected below t.Align = -1 t.C = &TypeRepr{Repr: dtype.Common().Name} c.m[dtype] = t switch dt := dtype.(type) { default: fatalf("%s: unexpected type: %s", lineno(pos), dtype) case *dwarf.AddrType: if t.Size != c.ptrSize { fatalf("%s: unexpected: %d-byte address type - %s", lineno(pos), t.Size, dtype) } t.Go = c.uintptr t.Align = t.Size case *dwarf.ArrayType: if dt.StrideBitSize > 0 { // Cannot represent bit-sized elements in Go. t.Go = c.Opaque(t.Size) break } sub := c.Type(dt.Type, pos) t.Align = sub.Align t.Go = &ast.ArrayType{ Len: c.intExpr(dt.Count), Elt: sub.Go, } t.C.Set("__typeof__(%s[%d])", sub.C, dt.Count) case *dwarf.BoolType: t.Go = c.bool t.Align = 1 case *dwarf.CharType: if t.Size != 1 { fatalf("%s: unexpected: %d-byte char type - %s", lineno(pos), t.Size, dtype) } t.Go = c.int8 t.Align = 1 case *dwarf.EnumType: if t.Align = t.Size; t.Align >= c.ptrSize { t.Align = c.ptrSize } t.C.Set("enum " + dt.EnumName) signed := 0 t.EnumValues = make(map[string]int64) for _, ev := range dt.Val { t.EnumValues[ev.Name] = ev.Val if ev.Val < 0 { signed = signedDelta } } switch t.Size + int64(signed) { default: fatalf("%s: unexpected: %d-byte enum type - %s", lineno(pos), t.Size, dtype) case 1: t.Go = c.uint8 case 2: t.Go = c.uint16 case 4: t.Go = c.uint32 case 8: t.Go = c.uint64 case 1 + signedDelta: t.Go = c.int8 case 2 + signedDelta: t.Go = c.int16 case 4 + signedDelta: t.Go = c.int32 case 8 + signedDelta: t.Go = c.int64 } case *dwarf.FloatType: switch t.Size { default: fatalf("%s: unexpected: %d-byte float type - %s", lineno(pos), t.Size, dtype) case 4: t.Go = c.float32 case 8: t.Go = c.float64 } if t.Align = t.Size; t.Align >= c.ptrSize { t.Align = c.ptrSize } case *dwarf.ComplexType: switch t.Size { default: fatalf("%s: unexpected: %d-byte complex type - %s", lineno(pos), t.Size, dtype) case 8: t.Go = c.complex64 case 16: t.Go = c.complex128 } if t.Align = t.Size; t.Align >= c.ptrSize { t.Align = c.ptrSize } case *dwarf.FuncType: // No attempt at translation: would enable calls // directly between worlds, but we need to moderate those. t.Go = c.uintptr t.Align = c.ptrSize case *dwarf.IntType: if dt.BitSize > 0 { fatalf("%s: unexpected: %d-bit int type - %s", lineno(pos), dt.BitSize, dtype) } switch t.Size { default: fatalf("%s: unexpected: %d-byte int type - %s", lineno(pos), t.Size, dtype) case 1: t.Go = c.int8 case 2: t.Go = c.int16 case 4: t.Go = c.int32 case 8: t.Go = c.int64 } if t.Align = t.Size; t.Align >= c.ptrSize { t.Align = c.ptrSize } case *dwarf.PtrType: t.Align = c.ptrSize // Translate void* as unsafe.Pointer if _, ok := base(dt.Type).(*dwarf.VoidType); ok { t.Go = c.unsafePointer t.C.Set("void*") break } // Placeholder initialization; completed in FinishType. t.Go = &ast.StarExpr{} t.C.Set("*") c.ptrs[dt.Type] = append(c.ptrs[dt.Type], t) case *dwarf.QualType: // Ignore qualifier. t = c.Type(dt.Type, pos) c.m[dtype] = t return t case *dwarf.StructType: // Convert to Go struct, being careful about alignment. // Have to give it a name to simulate C "struct foo" references. tag := dt.StructName if dt.ByteSize < 0 && tag == "" { // opaque unnamed struct - should not be possible break } if tag == "" { tag = "__" + strconv.Itoa(tagGen) tagGen++ } else if t.C.Empty() { t.C.Set(dt.Kind + " " + tag) } name := c.Ident("_Ctype_" + dt.Kind + "_" + tag) t.Go = name // publish before recursive calls goIdent[name.Name] = name if dt.ByteSize < 0 { // Size calculation in c.Struct/c.Opaque will die with size=-1 (unknown), // so execute the basic things that the struct case would do // other than try to determine a Go representation. tt := *t tt.C = &TypeRepr{"%s %s", []interface{}{dt.Kind, tag}} tt.Go = c.Ident("struct{}") typedef[name.Name] = &tt break } switch dt.Kind { case "class", "union": t.Go = c.Opaque(t.Size) if t.C.Empty() { t.C.Set("__typeof__(unsigned char[%d])", t.Size) } t.Align = 1 // TODO: should probably base this on field alignment. typedef[name.Name] = t case "struct": g, csyntax, align := c.Struct(dt, pos) if t.C.Empty() { t.C.Set(csyntax) } t.Align = align tt := *t if tag != "" { tt.C = &TypeRepr{"struct %s", []interface{}{tag}} } tt.Go = g typedef[name.Name] = &tt } case *dwarf.TypedefType: // Record typedef for printing. if dt.Name == "_GoString_" { // Special C name for Go string type. // Knows string layout used by compilers: pointer plus length, // which rounds up to 2 pointers after alignment. t.Go = c.string t.Size = c.ptrSize * 2 t.Align = c.ptrSize break } if dt.Name == "_GoBytes_" { // Special C name for Go []byte type. // Knows slice layout used by compilers: pointer, length, cap. t.Go = c.Ident("[]byte") t.Size = c.ptrSize + 4 + 4 t.Align = c.ptrSize break } name := c.Ident("_Ctype_" + dt.Name) goIdent[name.Name] = name sub := c.Type(dt.Type, pos) t.Go = name t.Size = sub.Size t.Align = sub.Align oldType := typedef[name.Name] if oldType == nil { tt := *t tt.Go = sub.Go typedef[name.Name] = &tt } // If sub.Go.Name is "_Ctype_struct_foo" or "_Ctype_union_foo" or "_Ctype_class_foo", // use that as the Go form for this typedef too, so that the typedef will be interchangeable // with the base type. // In -godefs and -cdefs mode, do this for all typedefs. if isStructUnionClass(sub.Go) || *godefs || *cdefs { t.Go = sub.Go if isStructUnionClass(sub.Go) { // Use the typedef name for C code. typedef[sub.Go.(*ast.Ident).Name].C = t.C } // If we've seen this typedef before, and it // was an anonymous struct/union/class before // too, use the old definition. // TODO: it would be safer to only do this if // we verify that the types are the same. if oldType != nil && isStructUnionClass(oldType.Go) { t.Go = oldType.Go } } case *dwarf.UcharType: if t.Size != 1 { fatalf("%s: unexpected: %d-byte uchar type - %s", lineno(pos), t.Size, dtype) } t.Go = c.uint8 t.Align = 1 case *dwarf.UintType: if dt.BitSize > 0 { fatalf("%s: unexpected: %d-bit uint type - %s", lineno(pos), dt.BitSize, dtype) } switch t.Size { default: fatalf("%s: unexpected: %d-byte uint type - %s", lineno(pos), t.Size, dtype) case 1: t.Go = c.uint8 case 2: t.Go = c.uint16 case 4: t.Go = c.uint32 case 8: t.Go = c.uint64 } if t.Align = t.Size; t.Align >= c.ptrSize { t.Align = c.ptrSize } case *dwarf.VoidType: t.Go = c.goVoid t.C.Set("void") t.Align = 1 } switch dtype.(type) { case *dwarf.AddrType, *dwarf.BoolType, *dwarf.CharType, *dwarf.IntType, *dwarf.FloatType, *dwarf.UcharType, *dwarf.UintType: s := dtype.Common().Name if s != "" { if ss, ok := dwarfToName[s]; ok { s = ss } s = strings.Join(strings.Split(s, " "), "") // strip spaces name := c.Ident("_Ctype_" + s) tt := *t typedef[name.Name] = &tt if !*godefs && !*cdefs { t.Go = name } } } if t.Size <= 0 { // Clang does not record the size of a pointer in its DWARF entry, // so if dtype is an array, the call to dtype.Size at the top of the function // computed the size as the array length * 0 = 0. // The type switch called Type (this function) recursively on the pointer // entry, and the code near the top of the function updated the size to // be correct, so calling dtype.Size again will produce the correct value. t.Size = dtype.Size() if t.Size < 0 { // Unsized types are [0]byte, unless they're typedefs of other types // or structs with tags. // if so, use the name we've already defined. t.Size = 0 switch dt := dtype.(type) { case *dwarf.TypedefType: // ok case *dwarf.StructType: if dt.StructName != "" { break } t.Go = c.Opaque(0) default: t.Go = c.Opaque(0) } if t.C.Empty() { t.C.Set("void") } return t } } if t.C.Empty() { fatalf("%s: internal error: did not create C name for %s", lineno(pos), dtype) } return t } // isStructUnionClass reports whether the type described by the Go syntax x // is a struct, union, or class with a tag. func isStructUnionClass(x ast.Expr) bool { id, ok := x.(*ast.Ident) if !ok { return false } name := id.Name return strings.HasPrefix(name, "_Ctype_struct_") || strings.HasPrefix(name, "_Ctype_union_") || strings.HasPrefix(name, "_Ctype_class_") } // FuncArg returns a Go type with the same memory layout as // dtype when used as the type of a C function argument. func (c *typeConv) FuncArg(dtype dwarf.Type, pos token.Pos) *Type { t := c.Type(dtype, pos) switch dt := dtype.(type) { case *dwarf.ArrayType: // Arrays are passed implicitly as pointers in C. // In Go, we must be explicit. tr := &TypeRepr{} tr.Set("%s*", t.C) return &Type{ Size: c.ptrSize, Align: c.ptrSize, Go: &ast.StarExpr{X: t.Go}, C: tr, } case *dwarf.TypedefType: // C has much more relaxed rules than Go for // implicit type conversions. When the parameter // is type T defined as *X, simulate a little of the // laxness of C by making the argument *X instead of T. if ptr, ok := base(dt.Type).(*dwarf.PtrType); ok { // Unless the typedef happens to point to void* since // Go has special rules around using unsafe.Pointer. if _, void := base(ptr.Type).(*dwarf.VoidType); void { break } t = c.Type(ptr, pos) if t == nil { return nil } // Remember the C spelling, in case the struct // has __attribute__((unavailable)) on it. See issue 2888. t.Typedef = dt.Name } } return t } // FuncType returns the Go type analogous to dtype. // There is no guarantee about matching memory layout. func (c *typeConv) FuncType(dtype *dwarf.FuncType, pos token.Pos) *FuncType { p := make([]*Type, len(dtype.ParamType)) gp := make([]*ast.Field, len(dtype.ParamType)) for i, f := range dtype.ParamType { // gcc's DWARF generator outputs a single DotDotDotType parameter for // function pointers that specify no parameters (e.g. void // (*__cgo_0)()). Treat this special case as void. This case is // invalid according to ISO C anyway (i.e. void (*__cgo_1)(...) is not // legal). if _, ok := f.(*dwarf.DotDotDotType); ok && i == 0 { p, gp = nil, nil break } p[i] = c.FuncArg(f, pos) gp[i] = &ast.Field{Type: p[i].Go} } var r *Type var gr []*ast.Field if _, ok := dtype.ReturnType.(*dwarf.VoidType); ok { gr = []*ast.Field{{Type: c.goVoid}} } else if dtype.ReturnType != nil { r = c.Type(dtype.ReturnType, pos) gr = []*ast.Field{{Type: r.Go}} } return &FuncType{ Params: p, Result: r, Go: &ast.FuncType{ Params: &ast.FieldList{List: gp}, Results: &ast.FieldList{List: gr}, }, } } // Identifier func (c *typeConv) Ident(s string) *ast.Ident { return ast.NewIdent(s) } // Opaque type of n bytes. func (c *typeConv) Opaque(n int64) ast.Expr { return &ast.ArrayType{ Len: c.intExpr(n), Elt: c.byte, } } // Expr for integer n. func (c *typeConv) intExpr(n int64) ast.Expr { return &ast.BasicLit{ Kind: token.INT, Value: strconv.FormatInt(n, 10), } } // Add padding of given size to fld. func (c *typeConv) pad(fld []*ast.Field, size int64) []*ast.Field { n := len(fld) fld = fld[0 : n+1] fld[n] = &ast.Field{Names: []*ast.Ident{c.Ident("_")}, Type: c.Opaque(size)} return fld } // Struct conversion: return Go and (6g) C syntax for type. func (c *typeConv) Struct(dt *dwarf.StructType, pos token.Pos) (expr *ast.StructType, csyntax string, align int64) { var buf bytes.Buffer buf.WriteString("struct {") fld := make([]*ast.Field, 0, 2*len(dt.Field)+1) // enough for padding around every field off := int64(0) // Rename struct fields that happen to be named Go keywords into // _{keyword}. Create a map from C ident -> Go ident. The Go ident will // be mangled. Any existing identifier that already has the same name on // the C-side will cause the Go-mangled version to be prefixed with _. // (e.g. in a struct with fields '_type' and 'type', the latter would be // rendered as '__type' in Go). ident := make(map[string]string) used := make(map[string]bool) for _, f := range dt.Field { ident[f.Name] = f.Name used[f.Name] = true } if !*godefs && !*cdefs { for cid, goid := range ident { if token.Lookup(goid).IsKeyword() { // Avoid keyword goid = "_" + goid // Also avoid existing fields for _, exist := used[goid]; exist; _, exist = used[goid] { goid = "_" + goid } used[goid] = true ident[cid] = goid } } } anon := 0 for _, f := range dt.Field { if f.ByteOffset > off { fld = c.pad(fld, f.ByteOffset-off) off = f.ByteOffset } t := c.Type(f.Type, pos) tgo := t.Go size := t.Size talign := t.Align if f.BitSize > 0 { if f.BitSize%8 != 0 { continue } size = f.BitSize / 8 name := tgo.(*ast.Ident).String() if strings.HasPrefix(name, "int") { name = "int" } else { name = "uint" } tgo = ast.NewIdent(name + fmt.Sprint(f.BitSize)) talign = size } if talign > 0 && f.ByteOffset%talign != 0 { // Drop misaligned fields, the same way we drop integer bit fields. // The goal is to make available what can be made available. // Otherwise one bad and unneeded field in an otherwise okay struct // makes the whole program not compile. Much of the time these // structs are in system headers that cannot be corrected. continue } n := len(fld) fld = fld[0 : n+1] name := f.Name if name == "" { name = fmt.Sprintf("anon%d", anon) anon++ ident[name] = name } fld[n] = &ast.Field{Names: []*ast.Ident{c.Ident(ident[name])}, Type: tgo} off += size buf.WriteString(t.C.String()) buf.WriteString(" ") buf.WriteString(name) buf.WriteString("; ") if talign > align { align = talign } } if off < dt.ByteSize { fld = c.pad(fld, dt.ByteSize-off) off = dt.ByteSize } if off != dt.ByteSize { fatalf("%s: struct size calculation error off=%d bytesize=%d", lineno(pos), off, dt.ByteSize) } buf.WriteString("}") csyntax = buf.String() if *godefs || *cdefs { c.todoFlds = append(c.todoFlds, fld) } expr = &ast.StructType{Fields: &ast.FieldList{List: fld}} return } func upper(s string) string { if s == "" { return "" } r, size := utf8.DecodeRuneInString(s) if r == '_' { return "X" + s } return string(unicode.ToUpper(r)) + s[size:] } // godefsFields rewrites field names for use in Go or C definitions. // It strips leading common prefixes (like tv_ in tv_sec, tv_usec) // converts names to upper case, and rewrites _ into Pad_godefs_n, // so that all fields are exported. func godefsFields(fld []*ast.Field) { prefix := fieldPrefix(fld) npad := 0 for _, f := range fld { for _, n := range f.Names { if n.Name != prefix { n.Name = strings.TrimPrefix(n.Name, prefix) } if n.Name == "_" { // Use exported name instead. n.Name = "Pad_cgo_" + strconv.Itoa(npad) npad++ } if !*cdefs { n.Name = upper(n.Name) } } p := &f.Type t := *p if star, ok := t.(*ast.StarExpr); ok { star = &ast.StarExpr{X: star.X} *p = star p = &star.X t = *p } if id, ok := t.(*ast.Ident); ok { if id.Name == "unsafe.Pointer" { *p = ast.NewIdent("*byte") } } } } // fieldPrefix returns the prefix that should be removed from all the // field names when generating the C or Go code. For generated // C, we leave the names as is (tv_sec, tv_usec), since that's what // people are used to seeing in C. For generated Go code, such as // package syscall's data structures, we drop a common prefix // (so sec, usec, which will get turned into Sec, Usec for exporting). func fieldPrefix(fld []*ast.Field) string { if *cdefs { return "" } prefix := "" for _, f := range fld { for _, n := range f.Names { // Ignore field names that don't have the prefix we're // looking for. It is common in C headers to have fields // named, say, _pad in an otherwise prefixed header. // If the struct has 3 fields tv_sec, tv_usec, _pad1, then we // still want to remove the tv_ prefix. // The check for "orig_" here handles orig_eax in the // x86 ptrace register sets, which otherwise have all fields // with reg_ prefixes. if strings.HasPrefix(n.Name, "orig_") || strings.HasPrefix(n.Name, "_") { continue } i := strings.Index(n.Name, "_") if i < 0 { continue } if prefix == "" { prefix = n.Name[:i+1] } else if prefix != n.Name[:i+1] { return "" } } } return prefix } go/src/cmd/cgo/godefs.go0100644000000000000000000001535212412656734015402 0ustar00rootroot00000000000000// Copyright 2011 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 ( "bytes" "fmt" "go/ast" "go/printer" "go/token" "os" "strings" ) // godefs returns the output for -godefs mode. func (p *Package) godefs(f *File, srcfile string) string { var buf bytes.Buffer fmt.Fprintf(&buf, "// Created by cgo -godefs - DO NOT EDIT\n") fmt.Fprintf(&buf, "// %s\n", strings.Join(os.Args, " ")) fmt.Fprintf(&buf, "\n") override := make(map[string]string) // Allow source file to specify override mappings. // For example, the socket data structures refer // to in_addr and in_addr6 structs but we want to be // able to treat them as byte arrays, so the godefs // inputs in package syscall say // // // +godefs map struct_in_addr [4]byte // // +godefs map struct_in_addr6 [16]byte // for _, g := range f.Comments { for _, c := range g.List { i := strings.Index(c.Text, "+godefs map") if i < 0 { continue } s := strings.TrimSpace(c.Text[i+len("+godefs map"):]) i = strings.Index(s, " ") if i < 0 { fmt.Fprintf(os.Stderr, "invalid +godefs map comment: %s\n", c.Text) continue } override["_Ctype_"+strings.TrimSpace(s[:i])] = strings.TrimSpace(s[i:]) } } for _, n := range f.Name { if s := override[n.Go]; s != "" { override[n.Mangle] = s } } // Otherwise, if the source file says type T C.whatever, // use "T" as the mangling of C.whatever, // except in the definition (handled at end of function). refName := make(map[*ast.Expr]*Name) for _, r := range f.Ref { refName[r.Expr] = r.Name } for _, d := range f.AST.Decls { d, ok := d.(*ast.GenDecl) if !ok || d.Tok != token.TYPE { continue } for _, s := range d.Specs { s := s.(*ast.TypeSpec) n := refName[&s.Type] if n != nil && n.Mangle != "" { override[n.Mangle] = s.Name.Name } } } // Extend overrides using typedefs: // If we know that C.xxx should format as T // and xxx is a typedef for yyy, make C.yyy format as T. for typ, def := range typedef { if new := override[typ]; new != "" { if id, ok := def.Go.(*ast.Ident); ok { override[id.Name] = new } } } // Apply overrides. for old, new := range override { if id := goIdent[old]; id != nil { id.Name = new } } // Any names still using the _C syntax are not going to compile, // although in general we don't know whether they all made it // into the file, so we can't warn here. // // The most common case is union types, which begin with // _Ctype_union and for which typedef[name] is a Go byte // array of the appropriate size (such as [4]byte). // Substitute those union types with byte arrays. for name, id := range goIdent { if id.Name == name && strings.Contains(name, "_Ctype_union") { if def := typedef[name]; def != nil { id.Name = gofmt(def) } } } conf.Fprint(&buf, fset, f.AST) return buf.String() } // cdefs returns the output for -cdefs mode. // The easiest way to do this is to translate the godefs Go to C. func (p *Package) cdefs(f *File, srcfile string) string { godefsOutput := p.godefs(f, srcfile) lines := strings.Split(godefsOutput, "\n") lines[0] = "// Created by cgo -cdefs - DO NOT EDIT" for i, line := range lines { lines[i] = strings.TrimSpace(line) } var out bytes.Buffer printf := func(format string, args ...interface{}) { fmt.Fprintf(&out, format, args...) } didTypedef := false for i := 0; i < len(lines); i++ { line := lines[i] // Delete // package x if strings.HasPrefix(line, "package ") { continue } // Convert // const ( // A = 1 // B = 2 // ) // // to // // enum { // A = 1, // B = 2, // }; if line == "const (" { printf("enum {\n") for i++; i < len(lines) && lines[i] != ")"; i++ { line = lines[i] if line != "" { printf("\t%s,", line) } printf("\n") } printf("};\n") continue } // Convert // const A = 1 // to // enum { A = 1 }; if strings.HasPrefix(line, "const ") { printf("enum { %s };\n", line[len("const "):]) continue } // On first type definition, typedef all the structs // in case there are dependencies between them. if !didTypedef && strings.HasPrefix(line, "type ") { didTypedef = true for _, line := range lines { line = strings.TrimSpace(line) if strings.HasPrefix(line, "type ") && strings.HasSuffix(line, " struct {") { s := strings.TrimSuffix(strings.TrimPrefix(line, "type "), " struct {") printf("typedef struct %s %s;\n", s, s) } } printf("\n") printf("#pragma pack on\n") printf("\n") } // Convert // type T struct { // X int64 // Y *int32 // Z [4]byte // } // // to // // struct T { // int64 X; // int32 *Y; // byte Z[4]; // } if strings.HasPrefix(line, "type ") && strings.HasSuffix(line, " struct {") { if len(lines) > i+1 && lines[i+1] == "}" { // do not output empty struct i++ continue } s := line[len("type ") : len(line)-len(" struct {")] printf("struct %s {\n", s) for i++; i < len(lines) && lines[i] != "}"; i++ { line := lines[i] if line != "" { f := strings.Fields(line) if len(f) != 2 { fmt.Fprintf(os.Stderr, "cgo: cannot parse struct field: %s\n", line) nerrors++ continue } printf("\t%s;", cdecl(f[0], f[1])) } printf("\n") } printf("};\n") continue } // Convert // type T int // to // typedef int T; if strings.HasPrefix(line, "type ") { f := strings.Fields(line[len("type "):]) if len(f) != 2 { fmt.Fprintf(os.Stderr, "cgo: cannot parse type definition: %s\n", line) nerrors++ continue } printf("typedef\t%s;\n", cdecl(f[0], f[1])) continue } printf("%s\n", line) } if didTypedef { printf("\n") printf("#pragma pack off\n") } return out.String() } // cdecl returns the C declaration for the given Go name and type. // It only handles the specific cases necessary for converting godefs output. func cdecl(name, typ string) string { // X *[0]byte -> X *void if strings.HasPrefix(typ, "*[0]") { typ = "*void" } // X [4]byte -> X[4] byte for strings.HasPrefix(typ, "[") { i := strings.Index(typ, "]") + 1 name = name + typ[:i] typ = typ[i:] } // X *byte -> *X byte for strings.HasPrefix(typ, "*") { name = "*" + name typ = typ[1:] } // X T -> T X // Handle the special case: 'unsafe.Pointer' is 'void *' if typ == "unsafe.Pointer" { typ = "void" name = "*" + name } return typ + "\t" + name } var gofmtBuf bytes.Buffer // gofmt returns the gofmt-formatted string for an AST node. func gofmt(n interface{}) string { gofmtBuf.Reset() err := printer.Fprint(&gofmtBuf, fset, n) if err != nil { return "<" + err.Error() + ">" } return gofmtBuf.String() } go/src/cmd/cgo/main.go0100644000000000000000000002212012412656734015046 0ustar00rootroot00000000000000// Copyright 2009 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. // Cgo; see gmp.go for an overview. // TODO(rsc): // Emit correct line number annotations. // Make 6g understand the annotations. package main import ( "crypto/md5" "flag" "fmt" "go/ast" "go/printer" "go/token" "io" "os" "path/filepath" "reflect" "runtime" "sort" "strings" ) // A Package collects information about the package we're going to write. type Package struct { PackageName string // name of package PackagePath string PtrSize int64 IntSize int64 GccOptions []string CgoFlags map[string][]string // #cgo flags (CFLAGS, LDFLAGS) Written map[string]bool Name map[string]*Name // accumulated Name from Files ExpFunc []*ExpFunc // accumulated ExpFunc from Files Decl []ast.Decl GoFiles []string // list of Go files GccFiles []string // list of gcc output files Preamble string // collected preamble for _cgo_export.h } // A File collects information about a single Go input file. type File struct { AST *ast.File // parsed AST Comments []*ast.CommentGroup // comments from file Package string // Package name Preamble string // C preamble (doc comment on import "C") Ref []*Ref // all references to C.xxx in AST ExpFunc []*ExpFunc // exported functions for this file Name map[string]*Name // map from Go name to Name } func nameKeys(m map[string]*Name) []string { var ks []string for k := range m { ks = append(ks, k) } sort.Strings(ks) return ks } // A Ref refers to an expression of the form C.xxx in the AST. type Ref struct { Name *Name Expr *ast.Expr Context string // "type", "expr", "call", or "call2" } func (r *Ref) Pos() token.Pos { return (*r.Expr).Pos() } // A Name collects information about C.xxx. type Name struct { Go string // name used in Go referring to package C Mangle string // name used in generated Go C string // name used in C Define string // #define expansion Kind string // "const", "type", "var", "fpvar", "func", "not-type" Type *Type // the type of xxx FuncType *FuncType AddError bool Const string // constant definition } // IsVar returns true if Kind is either "var" or "fpvar" func (n *Name) IsVar() bool { return n.Kind == "var" || n.Kind == "fpvar" } // A ExpFunc is an exported function, callable from C. // Such functions are identified in the Go input file // by doc comments containing the line //export ExpName type ExpFunc struct { Func *ast.FuncDecl ExpName string // name to use from C } // A TypeRepr contains the string representation of a type. type TypeRepr struct { Repr string FormatArgs []interface{} } // A Type collects information about a type in both the C and Go worlds. type Type struct { Size int64 Align int64 C *TypeRepr Go ast.Expr EnumValues map[string]int64 Typedef string } // A FuncType collects information about a function type in both the C and Go worlds. type FuncType struct { Params []*Type Result *Type Go *ast.FuncType } func usage() { fmt.Fprint(os.Stderr, "usage: cgo -- [compiler options] file.go ...\n") flag.PrintDefaults() os.Exit(2) } var ptrSizeMap = map[string]int64{ "386": 4, "amd64": 8, "arm": 4, } var intSizeMap = map[string]int64{ "386": 4, "amd64": 8, "arm": 4, } var cPrefix string var fset = token.NewFileSet() var dynobj = flag.String("dynimport", "", "if non-empty, print dynamic import data for that file") var dynout = flag.String("dynout", "", "write -dynobj output to this file") var dynlinker = flag.Bool("dynlinker", false, "record dynamic linker information in dynimport mode") // These flags are for bootstrapping a new Go implementation, // to generate Go and C headers that match the data layout and // constant values used in the host's C libraries and system calls. var godefs = flag.Bool("godefs", false, "for bootstrap: write Go definitions for C file to standard output") var cdefs = flag.Bool("cdefs", false, "for bootstrap: write C definitions for C file to standard output") var objDir = flag.String("objdir", "", "object directory") var gccgo = flag.Bool("gccgo", false, "generate files for use with gccgo") var gccgoprefix = flag.String("gccgoprefix", "", "-fgo-prefix option used with gccgo") var gccgopkgpath = flag.String("gccgopkgpath", "", "-fgo-pkgpath option used with gccgo") var importRuntimeCgo = flag.Bool("import_runtime_cgo", true, "import runtime/cgo in generated code") var importSyscall = flag.Bool("import_syscall", true, "import syscall in generated code") var goarch, goos string func main() { flag.Usage = usage flag.Parse() if *dynobj != "" { // cgo -dynimport is essentially a separate helper command // built into the cgo binary. It scans a gcc-produced executable // and dumps information about the imported symbols and the // imported libraries. The 'go build' rules for cgo prepare an // appropriate executable and then use its import information // instead of needing to make the linkers duplicate all the // specialized knowledge gcc has about where to look for imported // symbols and which ones to use. dynimport(*dynobj) return } if *godefs && *cdefs { fmt.Fprintf(os.Stderr, "cgo: cannot use -cdefs and -godefs together\n") os.Exit(2) } if *godefs || *cdefs { // Generating definitions pulled from header files, // to be checked into Go repositories. // Line numbers are just noise. conf.Mode &^= printer.SourcePos } args := flag.Args() if len(args) < 1 { usage() } // Find first arg that looks like a go file and assume everything before // that are options to pass to gcc. var i int for i = len(args); i > 0; i-- { if !strings.HasSuffix(args[i-1], ".go") { break } } if i == len(args) { usage() } goFiles := args[i:] p := newPackage(args[:i]) // Record CGO_LDFLAGS from the environment for external linking. if ldflags := os.Getenv("CGO_LDFLAGS"); ldflags != "" { args, err := splitQuoted(ldflags) if err != nil { fatalf("bad CGO_LDFLAGS: %q (%s)", ldflags, err) } p.addToFlag("LDFLAGS", args) } // Need a unique prefix for the global C symbols that // we use to coordinate between gcc and ourselves. // We already put _cgo_ at the beginning, so the main // concern is other cgo wrappers for the same functions. // Use the beginning of the md5 of the input to disambiguate. h := md5.New() for _, input := range goFiles { f, err := os.Open(input) if err != nil { fatalf("%s", err) } io.Copy(h, f) f.Close() } cPrefix = fmt.Sprintf("_%x", h.Sum(nil)[0:6]) fs := make([]*File, len(goFiles)) for i, input := range goFiles { f := new(File) f.ReadGo(input) f.DiscardCgoDirectives() fs[i] = f } if *objDir == "" { // make sure that _obj directory exists, so that we can write // all the output files there. os.Mkdir("_obj", 0777) *objDir = "_obj" } *objDir += string(filepath.Separator) for i, input := range goFiles { f := fs[i] p.Translate(f) for _, cref := range f.Ref { switch cref.Context { case "call", "call2": if cref.Name.Kind != "type" { break } *cref.Expr = cref.Name.Type.Go } } if nerrors > 0 { os.Exit(2) } pkg := f.Package if dir := os.Getenv("CGOPKGPATH"); dir != "" { pkg = filepath.Join(dir, pkg) } p.PackagePath = pkg p.Record(f) if *godefs { os.Stdout.WriteString(p.godefs(f, input)) } else if *cdefs { os.Stdout.WriteString(p.cdefs(f, input)) } else { p.writeOutput(f, input) } } if !*godefs && !*cdefs { p.writeDefs() } if nerrors > 0 { os.Exit(2) } } // newPackage returns a new Package that will invoke // gcc with the additional arguments specified in args. func newPackage(args []string) *Package { goarch = runtime.GOARCH if s := os.Getenv("GOARCH"); s != "" { goarch = s } goos = runtime.GOOS if s := os.Getenv("GOOS"); s != "" { goos = s } ptrSize := ptrSizeMap[goarch] if ptrSize == 0 { fatalf("unknown ptrSize for $GOARCH %q", goarch) } intSize := intSizeMap[goarch] if intSize == 0 { fatalf("unknown intSize for $GOARCH %q", goarch) } // Reset locale variables so gcc emits English errors [sic]. os.Setenv("LANG", "en_US.UTF-8") os.Setenv("LC_ALL", "C") p := &Package{ PtrSize: ptrSize, IntSize: intSize, CgoFlags: make(map[string][]string), Written: make(map[string]bool), } p.addToFlag("CFLAGS", args) return p } // Record what needs to be recorded about f. func (p *Package) Record(f *File) { if p.PackageName == "" { p.PackageName = f.Package } else if p.PackageName != f.Package { error_(token.NoPos, "inconsistent package names: %s, %s", p.PackageName, f.Package) } if p.Name == nil { p.Name = f.Name } else { for k, v := range f.Name { if p.Name[k] == nil { p.Name[k] = v } else if !reflect.DeepEqual(p.Name[k], v) { error_(token.NoPos, "inconsistent definitions for C.%s", fixGo(k)) } } } if f.ExpFunc != nil { p.ExpFunc = append(p.ExpFunc, f.ExpFunc...) p.Preamble += "\n" + f.Preamble } p.Decl = append(p.Decl, f.AST.Decls...) } go/src/cmd/cgo/out.go0100644000000000000000000010616012412656737014743 0ustar00rootroot00000000000000// Copyright 2009 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 ( "bytes" "debug/elf" "debug/macho" "debug/pe" "fmt" "go/ast" "go/printer" "go/token" "os" "sort" "strings" ) var conf = printer.Config{Mode: printer.SourcePos, Tabwidth: 8} // writeDefs creates output files to be compiled by 6g, 6c, and gcc. // (The comments here say 6g and 6c but the code applies to the 8 and 5 tools too.) func (p *Package) writeDefs() { fgo2 := creat(*objDir + "_cgo_gotypes.go") fc := creat(*objDir + "_cgo_defun.c") fm := creat(*objDir + "_cgo_main.c") var gccgoInit bytes.Buffer fflg := creat(*objDir + "_cgo_flags") for k, v := range p.CgoFlags { fmt.Fprintf(fflg, "_CGO_%s=%s\n", k, strings.Join(v, " ")) if k == "LDFLAGS" && !*gccgo { for _, arg := range v { fmt.Fprintf(fc, "#pragma cgo_ldflag %q\n", arg) } } } fflg.Close() // Write C main file for using gcc to resolve imports. fmt.Fprintf(fm, "int main() { return 0; }\n") if *importRuntimeCgo { fmt.Fprintf(fm, "void crosscall2(void(*fn)(void*, int), void *a, int c) { }\n") } else { // If we're not importing runtime/cgo, we *are* runtime/cgo, // which provides crosscall2. We just need a prototype. fmt.Fprintf(fm, "void crosscall2(void(*fn)(void*, int), void *a, int c);\n") } fmt.Fprintf(fm, "void _cgo_allocate(void *a, int c) { }\n") fmt.Fprintf(fm, "void _cgo_panic(void *a, int c) { }\n") // Write second Go output: definitions of _C_xxx. // In a separate file so that the import of "unsafe" does not // pollute the original file. fmt.Fprintf(fgo2, "// Created by cgo - DO NOT EDIT\n\n") fmt.Fprintf(fgo2, "package %s\n\n", p.PackageName) fmt.Fprintf(fgo2, "import \"unsafe\"\n\n") if *importSyscall { fmt.Fprintf(fgo2, "import \"syscall\"\n\n") } if !*gccgo && *importRuntimeCgo { fmt.Fprintf(fgo2, "import _ \"runtime/cgo\"\n\n") } fmt.Fprintf(fgo2, "type _ unsafe.Pointer\n\n") if *importSyscall { fmt.Fprintf(fgo2, "func _Cerrno(dst *error, x int32) { *dst = syscall.Errno(x) }\n") } typedefNames := make([]string, 0, len(typedef)) for name := range typedef { typedefNames = append(typedefNames, name) } sort.Strings(typedefNames) for _, name := range typedefNames { def := typedef[name] fmt.Fprintf(fgo2, "type %s ", name) conf.Fprint(fgo2, fset, def.Go) fmt.Fprintf(fgo2, "\n\n") } if *gccgo { fmt.Fprintf(fgo2, "type _Ctype_void byte\n") } else { fmt.Fprintf(fgo2, "type _Ctype_void [0]byte\n") } if *gccgo { fmt.Fprintf(fc, p.cPrologGccgo()) } else { fmt.Fprintf(fc, cProlog) } gccgoSymbolPrefix := p.gccgoSymbolPrefix() cVars := make(map[string]bool) for _, key := range nameKeys(p.Name) { n := p.Name[key] if !n.IsVar() { continue } if !cVars[n.C] { fmt.Fprintf(fm, "extern char %s[];\n", n.C) fmt.Fprintf(fm, "void *_cgohack_%s = %s;\n\n", n.C, n.C) if !*gccgo { fmt.Fprintf(fc, "#pragma cgo_import_static %s\n", n.C) } fmt.Fprintf(fc, "extern byte *%s;\n", n.C) cVars[n.C] = true } var amp string var node ast.Node if n.Kind == "var" { amp = "&" node = &ast.StarExpr{X: n.Type.Go} } else if n.Kind == "fpvar" { node = n.Type.Go if *gccgo { amp = "&" } } else { panic(fmt.Errorf("invalid var kind %q", n.Kind)) } if *gccgo { fmt.Fprintf(fc, `extern void *%s __asm__("%s.%s");`, n.Mangle, gccgoSymbolPrefix, n.Mangle) fmt.Fprintf(&gccgoInit, "\t%s = %s%s;\n", n.Mangle, amp, n.C) } else { fmt.Fprintf(fc, "void *·%s = %s%s;\n", n.Mangle, amp, n.C) } fmt.Fprintf(fc, "\n") fmt.Fprintf(fgo2, "var %s ", n.Mangle) conf.Fprint(fgo2, fset, node) fmt.Fprintf(fgo2, "\n") } fmt.Fprintf(fc, "\n") for _, key := range nameKeys(p.Name) { n := p.Name[key] if n.Const != "" { fmt.Fprintf(fgo2, "const _Cconst_%s = %s\n", n.Go, n.Const) } } fmt.Fprintf(fgo2, "\n") for _, key := range nameKeys(p.Name) { n := p.Name[key] if n.FuncType != nil { p.writeDefsFunc(fc, fgo2, n) } } if *gccgo { p.writeGccgoExports(fgo2, fc, fm) } else { p.writeExports(fgo2, fc, fm) } init := gccgoInit.String() if init != "" { fmt.Fprintln(fc, "static void init(void) __attribute__ ((constructor));") fmt.Fprintln(fc, "static void init(void) {") fmt.Fprint(fc, init) fmt.Fprintln(fc, "}") } fgo2.Close() fc.Close() } func dynimport(obj string) { stdout := os.Stdout if *dynout != "" { f, err := os.Create(*dynout) if err != nil { fatalf("%s", err) } stdout = f } if f, err := elf.Open(obj); err == nil { if *dynlinker { // Emit the cgo_dynamic_linker line. if sec := f.Section(".interp"); sec != nil { if data, err := sec.Data(); err == nil && len(data) > 1 { // skip trailing \0 in data fmt.Fprintf(stdout, "#pragma cgo_dynamic_linker %q\n", string(data[:len(data)-1])) } } } sym, err := f.ImportedSymbols() if err != nil { fatalf("cannot load imported symbols from ELF file %s: %v", obj, err) } for _, s := range sym { targ := s.Name if s.Version != "" { targ += "#" + s.Version } fmt.Fprintf(stdout, "#pragma cgo_import_dynamic %s %s %q\n", s.Name, targ, s.Library) } lib, err := f.ImportedLibraries() if err != nil { fatalf("cannot load imported libraries from ELF file %s: %v", obj, err) } for _, l := range lib { fmt.Fprintf(stdout, "#pragma cgo_import_dynamic _ _ %q\n", l) } return } if f, err := macho.Open(obj); err == nil { sym, err := f.ImportedSymbols() if err != nil { fatalf("cannot load imported symbols from Mach-O file %s: %v", obj, err) } for _, s := range sym { if len(s) > 0 && s[0] == '_' { s = s[1:] } fmt.Fprintf(stdout, "#pragma cgo_import_dynamic %s %s %q\n", s, s, "") } lib, err := f.ImportedLibraries() if err != nil { fatalf("cannot load imported libraries from Mach-O file %s: %v", obj, err) } for _, l := range lib { fmt.Fprintf(stdout, "#pragma cgo_import_dynamic _ _ %q\n", l) } return } if f, err := pe.Open(obj); err == nil { sym, err := f.ImportedSymbols() if err != nil { fatalf("cannot load imported symbols from PE file %s: %v", obj, err) } for _, s := range sym { ss := strings.Split(s, ":") name := strings.Split(ss[0], "@")[0] fmt.Fprintf(stdout, "#pragma cgo_import_dynamic %s %s %q\n", name, ss[0], strings.ToLower(ss[1])) } return } fatalf("cannot parse %s as ELF, Mach-O or PE", obj) } // Construct a gcc struct matching the 6c argument frame. // Assumes that in gcc, char is 1 byte, short 2 bytes, int 4 bytes, long long 8 bytes. // These assumptions are checked by the gccProlog. // Also assumes that 6c convention is to word-align the // input and output parameters. func (p *Package) structType(n *Name) (string, int64) { var buf bytes.Buffer fmt.Fprint(&buf, "struct {\n") off := int64(0) for i, t := range n.FuncType.Params { if off%t.Align != 0 { pad := t.Align - off%t.Align fmt.Fprintf(&buf, "\t\tchar __pad%d[%d];\n", off, pad) off += pad } c := t.Typedef if c == "" { c = t.C.String() } fmt.Fprintf(&buf, "\t\t%s p%d;\n", c, i) off += t.Size } if off%p.PtrSize != 0 { pad := p.PtrSize - off%p.PtrSize fmt.Fprintf(&buf, "\t\tchar __pad%d[%d];\n", off, pad) off += pad } if t := n.FuncType.Result; t != nil { if off%t.Align != 0 { pad := t.Align - off%t.Align fmt.Fprintf(&buf, "\t\tchar __pad%d[%d];\n", off, pad) off += pad } qual := "" if c := t.C.String(); c[len(c)-1] == '*' { qual = "const " } fmt.Fprintf(&buf, "\t\t%s%s r;\n", qual, t.C) off += t.Size } if off%p.PtrSize != 0 { pad := p.PtrSize - off%p.PtrSize fmt.Fprintf(&buf, "\t\tchar __pad%d[%d];\n", off, pad) off += pad } if n.AddError { fmt.Fprint(&buf, "\t\tint e[2*sizeof(void *)/sizeof(int)]; /* error */\n") off += 2 * p.PtrSize } if off == 0 { fmt.Fprintf(&buf, "\t\tchar unused;\n") // avoid empty struct } fmt.Fprintf(&buf, "\t}") return buf.String(), off } func (p *Package) writeDefsFunc(fc, fgo2 *os.File, n *Name) { name := n.Go gtype := n.FuncType.Go void := gtype.Results == nil || len(gtype.Results.List) == 0 if n.AddError { // Add "error" to return type list. // Type list is known to be 0 or 1 element - it's a C function. err := &ast.Field{Type: ast.NewIdent("error")} l := gtype.Results.List if len(l) == 0 { l = []*ast.Field{err} } else { l = []*ast.Field{l[0], err} } t := new(ast.FuncType) *t = *gtype t.Results = &ast.FieldList{List: l} gtype = t } // Go func declaration. d := &ast.FuncDecl{ Name: ast.NewIdent(n.Mangle), Type: gtype, } // Builtins defined in the C prolog. inProlog := name == "CString" || name == "GoString" || name == "GoStringN" || name == "GoBytes" || name == "_CMalloc" if *gccgo { // Gccgo style hooks. fmt.Fprint(fgo2, "\n") cname := fmt.Sprintf("_cgo%s%s", cPrefix, n.Mangle) paramnames := []string(nil) for i, param := range d.Type.Params.List { paramName := fmt.Sprintf("p%d", i) param.Names = []*ast.Ident{ast.NewIdent(paramName)} paramnames = append(paramnames, paramName) } conf.Fprint(fgo2, fset, d) fmt.Fprint(fgo2, " {\n") if !inProlog { fmt.Fprint(fgo2, "\tdefer syscall.CgocallDone()\n") fmt.Fprint(fgo2, "\tsyscall.Cgocall()\n") } if n.AddError { fmt.Fprint(fgo2, "\tsyscall.SetErrno(0)\n") } fmt.Fprint(fgo2, "\t") if !void { fmt.Fprint(fgo2, "r := ") } fmt.Fprintf(fgo2, "%s(%s)\n", cname, strings.Join(paramnames, ", ")) if n.AddError { fmt.Fprint(fgo2, "\te := syscall.GetErrno()\n") fmt.Fprint(fgo2, "\tif e != 0 {\n") fmt.Fprint(fgo2, "\t\treturn ") if !void { fmt.Fprint(fgo2, "r, ") } fmt.Fprint(fgo2, "e\n") fmt.Fprint(fgo2, "\t}\n") fmt.Fprint(fgo2, "\treturn ") if !void { fmt.Fprint(fgo2, "r, ") } fmt.Fprint(fgo2, "nil\n") } else if !void { fmt.Fprint(fgo2, "\treturn r\n") } fmt.Fprint(fgo2, "}\n") // declare the C function. fmt.Fprintf(fgo2, "//extern _cgo%s%s\n", cPrefix, n.Mangle) d.Name = ast.NewIdent(cname) if n.AddError { l := d.Type.Results.List d.Type.Results.List = l[:len(l)-1] } conf.Fprint(fgo2, fset, d) fmt.Fprint(fgo2, "\n") return } conf.Fprint(fgo2, fset, d) fmt.Fprint(fgo2, "\n") if inProlog { return } var argSize int64 _, argSize = p.structType(n) // C wrapper calls into gcc, passing a pointer to the argument frame. fmt.Fprintf(fc, "#pragma cgo_import_static _cgo%s%s\n", cPrefix, n.Mangle) fmt.Fprintf(fc, "void _cgo%s%s(void*);\n", cPrefix, n.Mangle) fmt.Fprintf(fc, "\n") fmt.Fprintf(fc, "void\n") if argSize == 0 { argSize++ } // TODO(rsc): The struct here should declare pointers only where // there are pointers in the actual argument frame. // This is a workaround for golang.org/issue/6397. fmt.Fprintf(fc, "·%s(struct{", n.Mangle) if n := argSize / p.PtrSize; n > 0 { fmt.Fprintf(fc, "void *y[%d];", n) } if n := argSize % p.PtrSize; n > 0 { fmt.Fprintf(fc, "uint8 x[%d];", n) } fmt.Fprintf(fc, "}p)\n") fmt.Fprintf(fc, "{\n") fmt.Fprintf(fc, "\truntime·cgocall(_cgo%s%s, &p);\n", cPrefix, n.Mangle) if n.AddError { // gcc leaves errno in first word of interface at end of p. // check whether it is zero; if so, turn interface into nil. // if not, turn interface into errno. // Go init function initializes ·_Cerrno with an os.Errno // for us to copy. fmt.Fprintln(fc, ` { int32 e; void **v; v = (void**)(&p+1) - 2; /* v = final two void* of p */ e = *(int32*)v; v[0] = (void*)0xdeadbeef; v[1] = (void*)0xdeadbeef; if(e == 0) { /* nil interface */ v[0] = 0; v[1] = 0; } else { ·_Cerrno(v, e); /* fill in v as error for errno e */ } }`) } fmt.Fprintf(fc, "}\n") fmt.Fprintf(fc, "\n") } // writeOutput creates stubs for a specific source file to be compiled by 6g // (The comments here say 6g and 6c but the code applies to the 8 and 5 tools too.) func (p *Package) writeOutput(f *File, srcfile string) { base := srcfile if strings.HasSuffix(base, ".go") { base = base[0 : len(base)-3] } base = strings.Map(slashToUnderscore, base) fgo1 := creat(*objDir + base + ".cgo1.go") fgcc := creat(*objDir + base + ".cgo2.c") p.GoFiles = append(p.GoFiles, base+".cgo1.go") p.GccFiles = append(p.GccFiles, base+".cgo2.c") // Write Go output: Go input with rewrites of C.xxx to _C_xxx. fmt.Fprintf(fgo1, "// Created by cgo - DO NOT EDIT\n\n") conf.Fprint(fgo1, fset, f.AST) // While we process the vars and funcs, also write 6c and gcc output. // Gcc output starts with the preamble. fmt.Fprintf(fgcc, "%s\n", f.Preamble) fmt.Fprintf(fgcc, "%s\n", gccProlog) for _, key := range nameKeys(f.Name) { n := f.Name[key] if n.FuncType != nil { p.writeOutputFunc(fgcc, n) } } fgo1.Close() fgcc.Close() } // fixGo converts the internal Name.Go field into the name we should show // to users in error messages. There's only one for now: on input we rewrite // C.malloc into C._CMalloc, so change it back here. func fixGo(name string) string { if name == "_CMalloc" { return "malloc" } return name } var isBuiltin = map[string]bool{ "_Cfunc_CString": true, "_Cfunc_GoString": true, "_Cfunc_GoStringN": true, "_Cfunc_GoBytes": true, "_Cfunc__CMalloc": true, } func (p *Package) writeOutputFunc(fgcc *os.File, n *Name) { name := n.Mangle if isBuiltin[name] || p.Written[name] { // The builtins are already defined in the C prolog, and we don't // want to duplicate function definitions we've already done. return } p.Written[name] = true if *gccgo { p.writeGccgoOutputFunc(fgcc, n) return } ctype, _ := p.structType(n) // Gcc wrapper unpacks the C argument struct // and calls the actual C function. fmt.Fprintf(fgcc, "void\n") fmt.Fprintf(fgcc, "_cgo%s%s(void *v)\n", cPrefix, n.Mangle) fmt.Fprintf(fgcc, "{\n") if n.AddError { fmt.Fprintf(fgcc, "\terrno = 0;\n") } // We're trying to write a gcc struct that matches 6c/8c/5c's layout. // Use packed attribute to force no padding in this struct in case // gcc has different packing requirements. fmt.Fprintf(fgcc, "\t%s %v *a = v;\n", ctype, p.packedAttribute()) fmt.Fprintf(fgcc, "\t") if t := n.FuncType.Result; t != nil { fmt.Fprintf(fgcc, "a->r = ") if c := t.C.String(); c[len(c)-1] == '*' { fmt.Fprint(fgcc, "(__typeof__(a->r)) ") } } fmt.Fprintf(fgcc, "%s(", n.C) for i, t := range n.FuncType.Params { if i > 0 { fmt.Fprintf(fgcc, ", ") } // We know the type params are correct, because // the Go equivalents had good type params. // However, our version of the type omits the magic // words const and volatile, which can provoke // C compiler warnings. Silence them by casting // all pointers to void*. (Eventually that will produce // other warnings.) if c := t.C.String(); c[len(c)-1] == '*' { fmt.Fprintf(fgcc, "(void*)") } fmt.Fprintf(fgcc, "a->p%d", i) } fmt.Fprintf(fgcc, ");\n") if n.AddError { fmt.Fprintf(fgcc, "\t*(int*)(a->e) = errno;\n") } fmt.Fprintf(fgcc, "}\n") fmt.Fprintf(fgcc, "\n") } // Write out a wrapper for a function when using gccgo. This is a // simple wrapper that just calls the real function. We only need a // wrapper to support static functions in the prologue--without a // wrapper, we can't refer to the function, since the reference is in // a different file. func (p *Package) writeGccgoOutputFunc(fgcc *os.File, n *Name) { if t := n.FuncType.Result; t != nil { fmt.Fprintf(fgcc, "%s\n", t.C.String()) } else { fmt.Fprintf(fgcc, "void\n") } fmt.Fprintf(fgcc, "_cgo%s%s(", cPrefix, n.Mangle) for i, t := range n.FuncType.Params { if i > 0 { fmt.Fprintf(fgcc, ", ") } c := t.Typedef if c == "" { c = t.C.String() } fmt.Fprintf(fgcc, "%s p%d", c, i) } fmt.Fprintf(fgcc, ")\n") fmt.Fprintf(fgcc, "{\n") fmt.Fprintf(fgcc, "\t") if t := n.FuncType.Result; t != nil { fmt.Fprintf(fgcc, "return ") // Cast to void* to avoid warnings due to omitted qualifiers. if c := t.C.String(); c[len(c)-1] == '*' { fmt.Fprintf(fgcc, "(void*)") } } fmt.Fprintf(fgcc, "%s(", n.C) for i, t := range n.FuncType.Params { if i > 0 { fmt.Fprintf(fgcc, ", ") } // Cast to void* to avoid warnings due to omitted qualifiers. if c := t.C.String(); c[len(c)-1] == '*' { fmt.Fprintf(fgcc, "(void*)") } fmt.Fprintf(fgcc, "p%d", i) } fmt.Fprintf(fgcc, ");\n") fmt.Fprintf(fgcc, "}\n") fmt.Fprintf(fgcc, "\n") } // packedAttribute returns host compiler struct attribute that will be // used to match 6c/8c/5c's struct layout. For example, on 386 Windows, // gcc wants to 8-align int64s, but 8c does not. // Use __gcc_struct__ to work around http://gcc.gnu.org/PR52991 on x86, // and http://golang.org/issue/5603. func (p *Package) packedAttribute() string { s := "__attribute__((__packed__" if !strings.Contains(p.gccBaseCmd()[0], "clang") && (goarch == "amd64" || goarch == "386") { s += ", __gcc_struct__" } return s + "))" } // Write out the various stubs we need to support functions exported // from Go so that they are callable from C. func (p *Package) writeExports(fgo2, fc, fm *os.File) { fgcc := creat(*objDir + "_cgo_export.c") fgcch := creat(*objDir + "_cgo_export.h") fmt.Fprintf(fgcch, "/* Created by cgo - DO NOT EDIT. */\n") fmt.Fprintf(fgcch, "%s\n", p.Preamble) fmt.Fprintf(fgcch, "%s\n", p.gccExportHeaderProlog()) fmt.Fprintf(fgcc, "/* Created by cgo - DO NOT EDIT. */\n") fmt.Fprintf(fgcc, "#include \"_cgo_export.h\"\n") fmt.Fprintf(fgcc, "\nextern void crosscall2(void (*fn)(void *, int), void *, int);\n\n") for _, exp := range p.ExpFunc { fn := exp.Func // Construct a gcc struct matching the 6c argument and // result frame. The gcc struct will be compiled with // __attribute__((packed)) so all padding must be accounted // for explicitly. ctype := "struct {\n" off := int64(0) npad := 0 if fn.Recv != nil { t := p.cgoType(fn.Recv.List[0].Type) ctype += fmt.Sprintf("\t\t%s recv;\n", t.C) off += t.Size } fntype := fn.Type forFieldList(fntype.Params, func(i int, atype ast.Expr) { t := p.cgoType(atype) if off%t.Align != 0 { pad := t.Align - off%t.Align ctype += fmt.Sprintf("\t\tchar __pad%d[%d];\n", npad, pad) off += pad npad++ } ctype += fmt.Sprintf("\t\t%s p%d;\n", t.C, i) off += t.Size }) if off%p.PtrSize != 0 { pad := p.PtrSize - off%p.PtrSize ctype += fmt.Sprintf("\t\tchar __pad%d[%d];\n", npad, pad) off += pad npad++ } forFieldList(fntype.Results, func(i int, atype ast.Expr) { t := p.cgoType(atype) if off%t.Align != 0 { pad := t.Align - off%t.Align ctype += fmt.Sprintf("\t\tchar __pad%d[%d];\n", npad, pad) off += pad npad++ } ctype += fmt.Sprintf("\t\t%s r%d;\n", t.C, i) off += t.Size }) if off%p.PtrSize != 0 { pad := p.PtrSize - off%p.PtrSize ctype += fmt.Sprintf("\t\tchar __pad%d[%d];\n", npad, pad) off += pad npad++ } if ctype == "struct {\n" { ctype += "\t\tchar unused;\n" // avoid empty struct } ctype += "\t}" // Get the return type of the wrapper function // compiled by gcc. gccResult := "" if fntype.Results == nil || len(fntype.Results.List) == 0 { gccResult = "void" } else if len(fntype.Results.List) == 1 && len(fntype.Results.List[0].Names) <= 1 { gccResult = p.cgoType(fntype.Results.List[0].Type).C.String() } else { fmt.Fprintf(fgcch, "\n/* Return type for %s */\n", exp.ExpName) fmt.Fprintf(fgcch, "struct %s_return {\n", exp.ExpName) forFieldList(fntype.Results, func(i int, atype ast.Expr) { fmt.Fprintf(fgcch, "\t%s r%d;\n", p.cgoType(atype).C, i) }) fmt.Fprintf(fgcch, "};\n") gccResult = "struct " + exp.ExpName + "_return" } // Build the wrapper function compiled by gcc. s := fmt.Sprintf("%s %s(", gccResult, exp.ExpName) if fn.Recv != nil { s += p.cgoType(fn.Recv.List[0].Type).C.String() s += " recv" } forFieldList(fntype.Params, func(i int, atype ast.Expr) { if i > 0 || fn.Recv != nil { s += ", " } s += fmt.Sprintf("%s p%d", p.cgoType(atype).C, i) }) s += ")" fmt.Fprintf(fgcch, "\nextern %s;\n", s) fmt.Fprintf(fgcc, "extern void _cgoexp%s_%s(void *, int);\n", cPrefix, exp.ExpName) fmt.Fprintf(fgcc, "\n%s\n", s) fmt.Fprintf(fgcc, "{\n") fmt.Fprintf(fgcc, "\t%s %v a;\n", ctype, p.packedAttribute()) if gccResult != "void" && (len(fntype.Results.List) > 1 || len(fntype.Results.List[0].Names) > 1) { fmt.Fprintf(fgcc, "\t%s r;\n", gccResult) } if fn.Recv != nil { fmt.Fprintf(fgcc, "\ta.recv = recv;\n") } forFieldList(fntype.Params, func(i int, atype ast.Expr) { fmt.Fprintf(fgcc, "\ta.p%d = p%d;\n", i, i) }) fmt.Fprintf(fgcc, "\tcrosscall2(_cgoexp%s_%s, &a, %d);\n", cPrefix, exp.ExpName, off) if gccResult != "void" { if len(fntype.Results.List) == 1 && len(fntype.Results.List[0].Names) <= 1 { fmt.Fprintf(fgcc, "\treturn a.r0;\n") } else { forFieldList(fntype.Results, func(i int, atype ast.Expr) { fmt.Fprintf(fgcc, "\tr.r%d = a.r%d;\n", i, i) }) fmt.Fprintf(fgcc, "\treturn r;\n") } } fmt.Fprintf(fgcc, "}\n") // Build the wrapper function compiled by 6c/8c goname := exp.Func.Name.Name if fn.Recv != nil { goname = "_cgoexpwrap" + cPrefix + "_" + fn.Recv.List[0].Names[0].Name + "_" + goname } fmt.Fprintf(fc, "#pragma cgo_export_dynamic %s\n", goname) fmt.Fprintf(fc, "extern void ·%s();\n\n", goname) fmt.Fprintf(fc, "#pragma cgo_export_static _cgoexp%s_%s\n", cPrefix, exp.ExpName) fmt.Fprintf(fc, "#pragma textflag 7\n") // no split stack, so no use of m or g fmt.Fprintf(fc, "void\n") fmt.Fprintf(fc, "_cgoexp%s_%s(void *a, int32 n)\n", cPrefix, exp.ExpName) fmt.Fprintf(fc, "{\n") fmt.Fprintf(fc, "\truntime·cgocallback(·%s, a, n);\n", goname) fmt.Fprintf(fc, "}\n") fmt.Fprintf(fm, "int _cgoexp%s_%s;\n", cPrefix, exp.ExpName) // Calling a function with a receiver from C requires // a Go wrapper function. if fn.Recv != nil { fmt.Fprintf(fgo2, "func %s(recv ", goname) conf.Fprint(fgo2, fset, fn.Recv.List[0].Type) forFieldList(fntype.Params, func(i int, atype ast.Expr) { fmt.Fprintf(fgo2, ", p%d ", i) conf.Fprint(fgo2, fset, atype) }) fmt.Fprintf(fgo2, ")") if gccResult != "void" { fmt.Fprint(fgo2, " (") forFieldList(fntype.Results, func(i int, atype ast.Expr) { if i > 0 { fmt.Fprint(fgo2, ", ") } conf.Fprint(fgo2, fset, atype) }) fmt.Fprint(fgo2, ")") } fmt.Fprint(fgo2, " {\n") fmt.Fprint(fgo2, "\t") if gccResult != "void" { fmt.Fprint(fgo2, "return ") } fmt.Fprintf(fgo2, "recv.%s(", exp.Func.Name) forFieldList(fntype.Params, func(i int, atype ast.Expr) { if i > 0 { fmt.Fprint(fgo2, ", ") } fmt.Fprintf(fgo2, "p%d", i) }) fmt.Fprint(fgo2, ")\n") fmt.Fprint(fgo2, "}\n") } } } // Write out the C header allowing C code to call exported gccgo functions. func (p *Package) writeGccgoExports(fgo2, fc, fm *os.File) { fgcc := creat(*objDir + "_cgo_export.c") fgcch := creat(*objDir + "_cgo_export.h") gccgoSymbolPrefix := p.gccgoSymbolPrefix() fmt.Fprintf(fgcch, "/* Created by cgo - DO NOT EDIT. */\n") fmt.Fprintf(fgcch, "%s\n", p.Preamble) fmt.Fprintf(fgcch, "%s\n", p.gccExportHeaderProlog()) fmt.Fprintf(fgcc, "/* Created by cgo - DO NOT EDIT. */\n") fmt.Fprintf(fgcc, "#include \"_cgo_export.h\"\n") fmt.Fprintf(fm, "#include \"_cgo_export.h\"\n") for _, exp := range p.ExpFunc { fn := exp.Func fntype := fn.Type cdeclBuf := new(bytes.Buffer) resultCount := 0 forFieldList(fntype.Results, func(i int, atype ast.Expr) { resultCount++ }) switch resultCount { case 0: fmt.Fprintf(cdeclBuf, "void") case 1: forFieldList(fntype.Results, func(i int, atype ast.Expr) { t := p.cgoType(atype) fmt.Fprintf(cdeclBuf, "%s", t.C) }) default: // Declare a result struct. fmt.Fprintf(fgcch, "struct %s_result {\n", exp.ExpName) forFieldList(fntype.Results, func(i int, atype ast.Expr) { t := p.cgoType(atype) fmt.Fprintf(fgcch, "\t%s r%d;\n", t.C, i) }) fmt.Fprintf(fgcch, "};\n") fmt.Fprintf(cdeclBuf, "struct %s_result", exp.ExpName) } cRet := cdeclBuf.String() cdeclBuf = new(bytes.Buffer) fmt.Fprintf(cdeclBuf, "(") if fn.Recv != nil { fmt.Fprintf(cdeclBuf, "%s recv", p.cgoType(fn.Recv.List[0].Type).C.String()) } // Function parameters. forFieldList(fntype.Params, func(i int, atype ast.Expr) { if i > 0 || fn.Recv != nil { fmt.Fprintf(cdeclBuf, ", ") } t := p.cgoType(atype) fmt.Fprintf(cdeclBuf, "%s p%d", t.C, i) }) fmt.Fprintf(cdeclBuf, ")") cParams := cdeclBuf.String() // We need to use a name that will be exported by the // Go code; otherwise gccgo will make it static and we // will not be able to link against it from the C // code. goName := "Cgoexp_" + exp.ExpName fmt.Fprintf(fgcch, `extern %s %s %s __asm__("%s.%s");`, cRet, goName, cParams, gccgoSymbolPrefix, goName) fmt.Fprint(fgcch, "\n") // Use a #define so that the C code that includes // cgo_export.h will be able to refer to the Go // function using the expected name. fmt.Fprintf(fgcch, "#define %s %s\n", exp.ExpName, goName) // Use a #undef in _cgo_export.c so that we ignore the // #define from cgo_export.h, since here we are // defining the real function. fmt.Fprintf(fgcc, "#undef %s\n", exp.ExpName) fmt.Fprint(fgcc, "\n") fmt.Fprintf(fgcc, "%s %s %s {\n", cRet, exp.ExpName, cParams) fmt.Fprint(fgcc, "\t") if resultCount > 0 { fmt.Fprint(fgcc, "return ") } fmt.Fprintf(fgcc, "%s(", goName) if fn.Recv != nil { fmt.Fprint(fgcc, "recv") } forFieldList(fntype.Params, func(i int, atype ast.Expr) { if i > 0 || fn.Recv != nil { fmt.Fprintf(fgcc, ", ") } fmt.Fprintf(fgcc, "p%d", i) }) fmt.Fprint(fgcc, ");\n") fmt.Fprint(fgcc, "}\n") // Dummy declaration for _cgo_main.c fmt.Fprintf(fm, "%s %s %s {}\n", cRet, goName, cParams) // For gccgo we use a wrapper function in Go, in order // to call CgocallBack and CgocallBackDone. // This code uses printer.Fprint, not conf.Fprint, // because we don't want //line comments in the middle // of the function types. fmt.Fprint(fgo2, "\n") fmt.Fprintf(fgo2, "func %s(", goName) if fn.Recv != nil { fmt.Fprint(fgo2, "recv ") printer.Fprint(fgo2, fset, fn.Recv.List[0].Type) } forFieldList(fntype.Params, func(i int, atype ast.Expr) { if i > 0 || fn.Recv != nil { fmt.Fprintf(fgo2, ", ") } fmt.Fprintf(fgo2, "p%d ", i) printer.Fprint(fgo2, fset, atype) }) fmt.Fprintf(fgo2, ")") if resultCount > 0 { fmt.Fprintf(fgo2, " (") forFieldList(fntype.Results, func(i int, atype ast.Expr) { if i > 0 { fmt.Fprint(fgo2, ", ") } printer.Fprint(fgo2, fset, atype) }) fmt.Fprint(fgo2, ")") } fmt.Fprint(fgo2, " {\n") fmt.Fprint(fgo2, "\tsyscall.CgocallBack()\n") fmt.Fprint(fgo2, "\tdefer syscall.CgocallBackDone()\n") fmt.Fprint(fgo2, "\t") if resultCount > 0 { fmt.Fprint(fgo2, "return ") } if fn.Recv != nil { fmt.Fprint(fgo2, "recv.") } fmt.Fprintf(fgo2, "%s(", exp.Func.Name) forFieldList(fntype.Params, func(i int, atype ast.Expr) { if i > 0 { fmt.Fprint(fgo2, ", ") } fmt.Fprintf(fgo2, "p%d", i) }) fmt.Fprint(fgo2, ")\n") fmt.Fprint(fgo2, "}\n") } } // Return the package prefix when using gccgo. func (p *Package) gccgoSymbolPrefix() string { if !*gccgo { return "" } clean := func(r rune) rune { switch { case 'A' <= r && r <= 'Z', 'a' <= r && r <= 'z', '0' <= r && r <= '9': return r } return '_' } if *gccgopkgpath != "" { return strings.Map(clean, *gccgopkgpath) } if *gccgoprefix == "" && p.PackageName == "main" { return "main" } prefix := strings.Map(clean, *gccgoprefix) if prefix == "" { prefix = "go" } return prefix + "." + p.PackageName } // Call a function for each entry in an ast.FieldList, passing the // index into the list and the type. func forFieldList(fl *ast.FieldList, fn func(int, ast.Expr)) { if fl == nil { return } i := 0 for _, r := range fl.List { if r.Names == nil { fn(i, r.Type) i++ } else { for _ = range r.Names { fn(i, r.Type) i++ } } } } func c(repr string, args ...interface{}) *TypeRepr { return &TypeRepr{repr, args} } // Map predeclared Go types to Type. var goTypes = map[string]*Type{ "bool": {Size: 1, Align: 1, C: c("GoUint8")}, "byte": {Size: 1, Align: 1, C: c("GoUint8")}, "int": {Size: 0, Align: 0, C: c("GoInt")}, "uint": {Size: 0, Align: 0, C: c("GoUint")}, "rune": {Size: 4, Align: 4, C: c("GoInt32")}, "int8": {Size: 1, Align: 1, C: c("GoInt8")}, "uint8": {Size: 1, Align: 1, C: c("GoUint8")}, "int16": {Size: 2, Align: 2, C: c("GoInt16")}, "uint16": {Size: 2, Align: 2, C: c("GoUint16")}, "int32": {Size: 4, Align: 4, C: c("GoInt32")}, "uint32": {Size: 4, Align: 4, C: c("GoUint32")}, "int64": {Size: 8, Align: 8, C: c("GoInt64")}, "uint64": {Size: 8, Align: 8, C: c("GoUint64")}, "float32": {Size: 4, Align: 4, C: c("GoFloat32")}, "float64": {Size: 8, Align: 8, C: c("GoFloat64")}, "complex64": {Size: 8, Align: 8, C: c("GoComplex64")}, "complex128": {Size: 16, Align: 16, C: c("GoComplex128")}, } // Map an ast type to a Type. func (p *Package) cgoType(e ast.Expr) *Type { switch t := e.(type) { case *ast.StarExpr: x := p.cgoType(t.X) return &Type{Size: p.PtrSize, Align: p.PtrSize, C: c("%s*", x.C)} case *ast.ArrayType: if t.Len == nil { // Slice: pointer, len, cap. return &Type{Size: p.PtrSize * 3, Align: p.PtrSize, C: c("GoSlice")} } case *ast.StructType: // TODO case *ast.FuncType: return &Type{Size: p.PtrSize, Align: p.PtrSize, C: c("void*")} case *ast.InterfaceType: return &Type{Size: 2 * p.PtrSize, Align: p.PtrSize, C: c("GoInterface")} case *ast.MapType: return &Type{Size: p.PtrSize, Align: p.PtrSize, C: c("GoMap")} case *ast.ChanType: return &Type{Size: p.PtrSize, Align: p.PtrSize, C: c("GoChan")} case *ast.Ident: // Look up the type in the top level declarations. // TODO: Handle types defined within a function. for _, d := range p.Decl { gd, ok := d.(*ast.GenDecl) if !ok || gd.Tok != token.TYPE { continue } for _, spec := range gd.Specs { ts, ok := spec.(*ast.TypeSpec) if !ok { continue } if ts.Name.Name == t.Name { return p.cgoType(ts.Type) } } } if def := typedef[t.Name]; def != nil { return def } if t.Name == "uintptr" { return &Type{Size: p.PtrSize, Align: p.PtrSize, C: c("GoUintptr")} } if t.Name == "string" { // The string data is 1 pointer + 1 (pointer-sized) int. return &Type{Size: 2 * p.PtrSize, Align: p.PtrSize, C: c("GoString")} } if t.Name == "error" { return &Type{Size: 2 * p.PtrSize, Align: p.PtrSize, C: c("GoInterface")} } if r, ok := goTypes[t.Name]; ok { if r.Size == 0 { // int or uint rr := new(Type) *rr = *r rr.Size = p.IntSize rr.Align = p.IntSize r = rr } if r.Align > p.PtrSize { r.Align = p.PtrSize } return r } error_(e.Pos(), "unrecognized Go type %s", t.Name) return &Type{Size: 4, Align: 4, C: c("int")} case *ast.SelectorExpr: id, ok := t.X.(*ast.Ident) if ok && id.Name == "unsafe" && t.Sel.Name == "Pointer" { return &Type{Size: p.PtrSize, Align: p.PtrSize, C: c("void*")} } } error_(e.Pos(), "Go type not supported in export: %s", gofmt(e)) return &Type{Size: 4, Align: 4, C: c("int")} } const gccProlog = ` // Usual nonsense: if x and y are not equal, the type will be invalid // (have a negative array count) and an inscrutable error will come // out of the compiler and hopefully mention "name". #define __cgo_compile_assert_eq(x, y, name) typedef char name[(x-y)*(x-y)*-2+1]; // Check at compile time that the sizes we use match our expectations. #define __cgo_size_assert(t, n) __cgo_compile_assert_eq(sizeof(t), n, _cgo_sizeof_##t##_is_not_##n) __cgo_size_assert(char, 1) __cgo_size_assert(short, 2) __cgo_size_assert(int, 4) typedef long long __cgo_long_long; __cgo_size_assert(__cgo_long_long, 8) __cgo_size_assert(float, 4) __cgo_size_assert(double, 8) #include #include ` const builtinProlog = ` #include /* for size_t below */ /* Define intgo when compiling with GCC. */ #ifdef __PTRDIFF_TYPE__ typedef __PTRDIFF_TYPE__ intgo; #elif defined(_LP64) typedef long long intgo; #else typedef int intgo; #endif typedef struct { char *p; intgo n; } _GoString_; typedef struct { char *p; intgo n; intgo c; } _GoBytes_; _GoString_ GoString(char *p); _GoString_ GoStringN(char *p, int l); _GoBytes_ GoBytes(void *p, int n); char *CString(_GoString_); void *_CMalloc(size_t); ` const cProlog = ` #include "runtime.h" #include "cgocall.h" void ·_Cerrno(void*, int32); void ·_Cfunc_GoString(int8 *p, String s) { s = runtime·gostring((byte*)p); FLUSH(&s); } void ·_Cfunc_GoStringN(int8 *p, int32 l, String s) { s = runtime·gostringn((byte*)p, l); FLUSH(&s); } void ·_Cfunc_GoBytes(int8 *p, int32 l, Slice s) { s = runtime·gobytes((byte*)p, l); FLUSH(&s); } void ·_Cfunc_CString(String s, int8 *p) { p = runtime·cmalloc(s.len+1); runtime·memmove((byte*)p, s.str, s.len); p[s.len] = 0; FLUSH(&p); } void ·_Cfunc__CMalloc(uintptr n, int8 *p) { p = runtime·cmalloc(n); FLUSH(&p); } ` func (p *Package) cPrologGccgo() string { return strings.Replace(cPrologGccgo, "PREFIX", cPrefix, -1) } const cPrologGccgo = ` #include #include #include typedef unsigned char byte; typedef intptr_t intgo; struct __go_string { const unsigned char *__data; intgo __length; }; typedef struct __go_open_array { void* __values; intgo __count; intgo __capacity; } Slice; struct __go_string __go_byte_array_to_string(const void* p, intgo len); struct __go_open_array __go_string_to_byte_array (struct __go_string str); const char *_cgoPREFIX_Cfunc_CString(struct __go_string s) { char *p = malloc(s.__length+1); memmove(p, s.__data, s.__length); p[s.__length] = 0; return p; } struct __go_string _cgoPREFIX_Cfunc_GoString(char *p) { intgo len = (p != NULL) ? strlen(p) : 0; return __go_byte_array_to_string(p, len); } struct __go_string _cgoPREFIX_Cfunc_GoStringN(char *p, int32_t n) { return __go_byte_array_to_string(p, n); } Slice _cgoPREFIX_Cfunc_GoBytes(char *p, int32_t n) { struct __go_string s = { (const unsigned char *)p, n }; return __go_string_to_byte_array(s); } extern void runtime_throw(const char *); void *_cgoPREFIX_Cfunc__CMalloc(size_t n) { void *p = malloc(n); if(p == NULL && n == 0) p = malloc(1); if(p == NULL) runtime_throw("runtime: C malloc failed"); return p; } ` func (p *Package) gccExportHeaderProlog() string { return strings.Replace(gccExportHeaderProlog, "GOINTBITS", fmt.Sprint(8*p.IntSize), -1) } const gccExportHeaderProlog = ` typedef signed char GoInt8; typedef unsigned char GoUint8; typedef short GoInt16; typedef unsigned short GoUint16; typedef int GoInt32; typedef unsigned int GoUint32; typedef long long GoInt64; typedef unsigned long long GoUint64; typedef GoIntGOINTBITS GoInt; typedef GoUintGOINTBITS GoUint; typedef __SIZE_TYPE__ GoUintptr; typedef float GoFloat32; typedef double GoFloat64; typedef __complex float GoComplex64; typedef __complex double GoComplex128; typedef struct { char *p; GoInt n; } GoString; typedef void *GoMap; typedef void *GoChan; typedef struct { void *t; void *v; } GoInterface; typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; ` go/src/cmd/cgo/util.go0100644000000000000000000000357612412656734015115 0ustar00rootroot00000000000000// Copyright 2009 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 ( "bytes" "fmt" "go/token" "os" "os/exec" ) // run runs the command argv, feeding in stdin on standard input. // It returns the output to standard output and standard error. // ok indicates whether the command exited successfully. func run(stdin []byte, argv []string) (stdout, stderr []byte, ok bool) { p := exec.Command(argv[0], argv[1:]...) p.Stdin = bytes.NewReader(stdin) var bout, berr bytes.Buffer p.Stdout = &bout p.Stderr = &berr err := p.Run() if _, ok := err.(*exec.ExitError); err != nil && !ok { fatalf("%s", err) } ok = p.ProcessState.Success() stdout, stderr = bout.Bytes(), berr.Bytes() return } func lineno(pos token.Pos) string { return fset.Position(pos).String() } // Die with an error message. func fatalf(msg string, args ...interface{}) { // If we've already printed other errors, they might have // caused the fatal condition. Assume they're enough. if nerrors == 0 { fmt.Fprintf(os.Stderr, msg+"\n", args...) } os.Exit(2) } var nerrors int func error_(pos token.Pos, msg string, args ...interface{}) { nerrors++ if pos.IsValid() { fmt.Fprintf(os.Stderr, "%s: ", fset.Position(pos).String()) } fmt.Fprintf(os.Stderr, msg, args...) fmt.Fprintf(os.Stderr, "\n") } // isName returns true if s is a valid C identifier func isName(s string) bool { for i, v := range s { if v != '_' && (v < 'A' || v > 'Z') && (v < 'a' || v > 'z') && (v < '0' || v > '9') { return false } if i == 0 && '0' <= v && v <= '9' { return false } } return s != "" } func creat(name string) *os.File { f, err := os.Create(name) if err != nil { fatalf("%s", err) } return f } func slashToUnderscore(c rune) rune { if c == '/' || c == '\\' || c == ':' { c = '_' } return c } go/src/cmd/dist0040755000000000000000000000000012412656741013713 5ustar00rootroot00000000000000go/src/cmd/dist/README0100644000000000000000000000324212412656734014652 0ustar00rootroot00000000000000This program, dist, is the bootstrapping tool for the Go distribution. It takes care of building the C programs (like the Go compiler) and the initial bootstrap copy of the go tool. It also serves as a catch-all to replace odd jobs previously done with shell scripts. Dist is itself written in very simple C. All interaction with C libraries, even standard C libraries, is confined to a single system-specific file (plan9.c, unix.c, windows.c), to aid portability. Functionality needed by other files should be exposed via the portability layer. Functions in the portability layer begin with an x prefix when they would otherwise use the same name as or be confused for an existing function. For example, xprintf is the portable printf. By far the most common data types in dist are strings and arrays of strings. Instead of using char* and char**, though, dist uses two named data structures, Buf and Vec, which own all the data they point at. The Buf operations are functions beginning with b; the Vec operations are functions beginning with v. The basic form of any function declaring Bufs or Vecs on the stack should be void myfunc(void) { Buf b1, b2; Vec v1; binit(&b1); binit(&b2); vinit(&v1); ... main code ... bprintf(&b1, "hello, world"); vadd(&v1, bstr(&b1)); // v1 takes a copy of its argument bprintf(&b2, "another string"); vadd(&v1, bstr(&b2)); // v1 now has two strings bfree(&b1); bfree(&b2); vfree(&v1); } The binit/vinit calls prepare a buffer or vector for use, initializing the data structures, and the bfree/vfree calls free any memory they are still holding onto. Use of this idiom gives us lexically scoped allocations. go/src/cmd/dist/a.h0100644000000000000000000000757412412656737014402 0ustar00rootroot00000000000000// 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. typedef int bool; // The Time unit is unspecified; we just need to // be able to compare whether t1 is older than t2 with t1 < t2. typedef long long Time; #define nil ((void*)0) #define nelem(x) (sizeof(x)/sizeof((x)[0])) #ifndef PLAN9 #define USED(x) ((void)(x)) #endif // A Buf is a byte buffer, like Go's []byte. typedef struct Buf Buf; struct Buf { char *p; int len; int cap; }; // A Vec is a string vector, like Go's []string. typedef struct Vec Vec; struct Vec { char **p; int len; int cap; }; // Modes for run. enum { CheckExit = 1, }; // buf.c bool bequal(Buf *s, Buf *t); void bsubst(Buf *b, char *x, char *y); void bfree(Buf *b); void bgrow(Buf *b, int n); void binit(Buf *b); char* bpathf(Buf *b, char *fmt, ...); char* bprintf(Buf *b, char *fmt, ...); void bwritef(Buf *b, char *fmt, ...); void breset(Buf *b); char* bstr(Buf *b); char* btake(Buf *b); void bwrite(Buf *b, void *v, int n); void bwriteb(Buf *dst, Buf *src); void bwritestr(Buf *b, char *p); void bswap(Buf *b, Buf *b1); void vadd(Vec *v, char *p); void vcopy(Vec *dst, char **src, int n); void vfree(Vec *v); void vgrow(Vec *v, int n); void vinit(Vec *v); void vreset(Vec *v); void vuniq(Vec *v); void splitlines(Vec*, char*); void splitfields(Vec*, char*); // build.c extern char *goarch; extern char *gobin; extern char *gochar; extern char *gohostarch; extern char *gohostos; extern char *goos; extern char *goroot; extern char *goroot_final; extern char *goextlinkenabled; extern char *goversion; extern char *defaultcc; extern char *defaultcxxtarget; extern char *defaultcctarget; extern char *workdir; extern char *tooldir; extern char *slash; extern bool rebuildall; extern bool defaultclang; int find(char*, char**, int); void init(void); void cmdbanner(int, char**); void cmdbootstrap(int, char**); void cmdclean(int, char**); void cmdenv(int, char**); void cmdinstall(int, char**); void cmdversion(int, char**); // buildgc.c void gcopnames(char*, char*); void mkanames(char*, char*); // buildruntime.c void mkzasm(char*, char*); void mkzsys(char*, char*); void mkzgoarch(char*, char*); void mkzgoos(char*, char*); void mkzruntimedefs(char*, char*); void mkzversion(char*, char*); void mkzexperiment(char*, char*); // buildgo.c void mkzdefaultcc(char*, char*); // goc2c.c void goc2c(char*, char*); // main.c extern int vflag; extern int sflag; void usage(void); void xmain(int argc, char **argv); // portability layer (plan9.c, unix.c, windows.c) bool contains(char *p, char *sep); void errprintf(char*, ...); void fatal(char *msg, ...); bool hasprefix(char *p, char *prefix); bool hassuffix(char *p, char *suffix); bool isabs(char*); bool isdir(char *p); bool isfile(char *p); char* lastelem(char*); Time mtime(char*); void readfile(Buf*, char*); void run(Buf *b, char *dir, int mode, char *cmd, ...); void runv(Buf *b, char *dir, int mode, Vec *argv); void bgrunv(char *dir, int mode, Vec *argv); void bgwait(void); bool streq(char*, char*); bool cansse2(void); void writefile(Buf*, char*, int); void xatexit(void (*f)(void)); void xexit(int); void xfree(void*); void xgetenv(Buf *b, char *name); void xgetwd(Buf *b); void* xmalloc(int n); void* xmalloc(int); int xmemcmp(void*, void*, int); void xmemmove(void*, void*, int); void xmkdir(char *p); void xmkdirall(char*); Time xmtime(char *p); void xprintf(char*, ...); void xqsort(void*, int, int, int(*)(const void*, const void*)); void xreaddir(Vec *dst, char *dir); void* xrealloc(void*, int); void xrealwd(Buf *b, char *path); void xremove(char *p); void xremoveall(char *p); void xsetenv(char*, char*); int xstrcmp(char*, char*); char* xstrdup(char *p); int xstrlen(char*); char* xstrrchr(char*, int); char* xstrstr(char*, char*); char* xworkdir(void); int xsamefile(char*, char*); char* xgetgoarm(void); int xtryexecfunc(void (*)(void)); go/src/cmd/dist/arg.h0100644000000000000000000000404112412656734014712 0ustar00rootroot00000000000000/* Derived from Inferno include/kern.h. http://code.google.com/p/inferno-os/source/browse/include/kern.h Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. Revisions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com). All rights reserved. Portions Copyright © 2009 The Go Authors. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* command line */ extern char *argv0; #define ARGBEGIN for((argv0=(argv0?argv0:*argv)),argv++,argc--;\ argv[0] && argv[0][0]=='-' && argv[0][1];\ argc--, argv++) {\ char *_args, *_argt;\ char _argc;\ _args = &argv[0][1];\ if(_args[0]=='-' && _args[1]==0){\ argc--; argv++; break;\ }\ while((_argc = *_args++) != 0)\ switch(_argc) #define ARGEND _argt=0;USED(_argt);USED(_argc);USED(_args);}USED(argv);USED(argc); #define ARGF() (_argt=_args, _args="",\ (*_argt? _argt: argv[1]? (argc--, *++argv): 0)) #define EARGF(x) (_argt=_args, _args="",\ (*_argt? _argt: argv[1]? (argc--, *++argv): ((x), fatal("usage"), (char*)0))) #define ARGC() _argc go/src/cmd/dist/arm.c0100644000000000000000000000352712412656737014726 0ustar00rootroot00000000000000// 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. #include "a.h" #ifndef __ARMEL__ char * xgetgoarm(void) { return "6"; } #else static void useVFPv3(void); static void useVFPv1(void); char * xgetgoarm(void) { #if defined(__FreeBSD__) // FreeBSD has broken VFP support return "5"; #endif if(xtryexecfunc(useVFPv3)) return "7"; else if(xtryexecfunc(useVFPv1)) return "6"; return "5"; } static void useVFPv3(void) { // try to run VFPv3-only "vmov.f64 d0, #112" instruction // we can't use that instruction directly, because we // might be compiling with a soft-float only toolchain. // // some newer toolchains are configured to use thumb // by default, so we need to do some mode changing magic // here. // We can use "bx pc; nop" here, but GNU as(1) insists // on warning us // "use of r15 in bx in ARM mode is not really useful" // so we workaround that by using "bx r0" __asm__ __volatile__ ("mov r0, pc"); __asm__ __volatile__ ("bx r0"); __asm__ __volatile__ (".word 0xeeb70b00"); // vmov.f64 d0, #112 __asm__ __volatile__ (".word 0xe12fff1e"); // bx lr } static void useVFPv1(void) { // try to run "vmov.f64 d0, d0" instruction // we can't use that instruction directly, because we // might be compiling with a soft-float only toolchain // // some newer toolchains are configured to use thumb // by default, so we need to do some mode changing magic // here. // We can use "bx pc; nop" here, but GNU as(1) insists // on warning us // "use of r15 in bx in ARM mode is not really useful" // so we workaround that by using "bx r0" __asm__ __volatile__ ("mov r0, pc"); __asm__ __volatile__ ("bx r0"); __asm__ __volatile__ (".word 0xeeb00b40"); // vomv.f64 d0, d0 __asm__ __volatile__ (".word 0xe12fff1e"); // bx lr } #endif go/src/cmd/dist/buf.c0100644000000000000000000001123312412656737014714 0ustar00rootroot00000000000000// 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. // Byte buffers and string vectors. #include "a.h" // binit prepares an uninitialized buffer for use. void binit(Buf *b) { b->p = nil; b->len = 0; b->cap = 0; } // breset truncates the buffer back to zero length. void breset(Buf *b) { b->len = 0; } // bfree frees the storage associated with a buffer. void bfree(Buf *b) { xfree(b->p); binit(b); } // bgrow ensures that the buffer has at least n more bytes // between its len and cap. void bgrow(Buf *b, int n) { int want; want = b->len+n; if(want > b->cap) { b->cap = 2*want; if(b->cap < 64) b->cap = 64; b->p = xrealloc(b->p, b->cap); } } // bwrite appends the n bytes at v to the buffer. void bwrite(Buf *b, void *v, int n) { bgrow(b, n); xmemmove(b->p+b->len, v, n); b->len += n; } // bwritestr appends the string p to the buffer. void bwritestr(Buf *b, char *p) { bwrite(b, p, xstrlen(p)); } // bstr returns a pointer to a NUL-terminated string of the // buffer contents. The pointer points into the buffer. char* bstr(Buf *b) { bgrow(b, 1); b->p[b->len] = '\0'; return b->p; } // btake takes ownership of the string form of the buffer. // After this call, the buffer has zero length and does not // refer to the memory that btake returned. char* btake(Buf *b) { char *p; p = bstr(b); binit(b); return p; } // bwriteb appends the src buffer to the dst buffer. void bwriteb(Buf *dst, Buf *src) { bwrite(dst, src->p, src->len); } // bequal reports whether the buffers have the same content. bool bequal(Buf *s, Buf *t) { return s->len == t->len && xmemcmp(s->p, t->p, s->len) == 0; } // bsubst rewites b to replace all occurrences of x with y. void bsubst(Buf *b, char *x, char *y) { char *p; int nx, ny, pos; nx = xstrlen(x); ny = xstrlen(y); pos = 0; for(;;) { p = xstrstr(bstr(b)+pos, x); if(p == nil) break; if(nx != ny) { if(nx < ny) { pos = p - b->p; bgrow(b, ny-nx); p = b->p + pos; } xmemmove(p+ny, p+nx, (b->p+b->len)-(p+nx)); } xmemmove(p, y, ny); pos = p+ny - b->p; b->len += ny - nx; } } // The invariant with the vectors is that v->p[0:v->len] is allocated // strings that are owned by the vector. The data beyond v->len may // be garbage. // vinit prepares an uninitialized vector for use. void vinit(Vec *v) { v->p = nil; v->len = 0; v->cap = 0; } // vreset truncates the vector back to zero length. void vreset(Vec *v) { int i; for(i=0; ilen; i++) { xfree(v->p[i]); v->p[i] = nil; } v->len = 0; } // vfree frees the storage associated with the vector. void vfree(Vec *v) { vreset(v); xfree(v->p); vinit(v); } // vgrow ensures that the vector has room for at least // n more entries between len and cap. void vgrow(Vec *v, int n) { int want; want = v->len+n; if(want > v->cap) { v->cap = 2*want; if(v->cap < 64) v->cap = 64; v->p = xrealloc(v->p, v->cap*sizeof v->p[0]); } } // vcopy copies the srclen strings at src into the vector. void vcopy(Vec *dst, char **src, int srclen) { int i; // use vadd, to make copies of strings for(i=0; ip[v->len++] = p; } // vaddn adds a string consisting of the n bytes at p to the vector. void vaddn(Vec *v, char *p, int n) { char *q; vgrow(v, 1); q = xmalloc(n+1); xmemmove(q, p, n); q[n] = '\0'; v->p[v->len++] = q; } static int strpcmp(const void *a, const void *b) { return xstrcmp(*(char**)a, *(char**)b); } // vuniq sorts the vector and then discards duplicates, // in the manner of sort | uniq. void vuniq(Vec *v) { int i, n; xqsort(v->p, v->len, sizeof(v->p[0]), strpcmp); n = 0; for(i=0; ilen; i++) { if(n>0 && streq(v->p[i], v->p[n-1])) xfree(v->p[i]); else v->p[n++] = v->p[i]; } v->len = n; } // splitlines replaces the vector v with the result of splitting // the input p after each \n. void splitlines(Vec *v, char *p) { int i; char *start; vreset(v); start = p; for(i=0; p[i]; i++) { if(p[i] == '\n') { vaddn(v, start, (p+i+1)-start); start = p+i+1; } } if(*start != '\0') vadd(v, start); } // splitfields replaces the vector v with the result of splitting // the input p into non-empty fields containing no spaces. void splitfields(Vec *v, char *p) { char *start; vreset(v); for(;;) { while(*p == ' ' || *p == '\t' || *p == '\r' || *p == '\n') p++; if(*p == '\0') break; start = p; while(*p != ' ' && *p != '\t' && *p != '\r' && *p != '\n' && *p != '\0') p++; vaddn(v, start, p-start); } } go/src/cmd/dist/build.c0100644000000000000000000012023712412656737015244 0ustar00rootroot00000000000000// 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. #include "a.h" #include "arg.h" /* * Initialization for any invocation. */ // The usual variables. char *goarch; char *gobin; char *gohostarch; char *gohostchar; char *gohostos; char *goos; char *goarm; char *go386; char *goroot = GOROOT_FINAL; char *goroot_final = GOROOT_FINAL; char *goextlinkenabled = ""; char *workdir; char *tooldir; char *gochar; char *goversion; char *slash; // / for unix, \ for windows char *defaultcc; char *defaultcflags; char *defaultldflags; char *defaultcxxtarget; char *defaultcctarget; bool rebuildall; bool defaultclang; static bool shouldbuild(char*, char*); static void copy(char*, char*, int); static void dopack(char*, char*, char**, int); static char *findgoversion(void); // The known architecture letters. static char *gochars = "5668"; // The known architectures. static char *okgoarch[] = { // same order as gochars "arm", "amd64", "amd64p32", "386", }; // The known operating systems. static char *okgoos[] = { "darwin", "dragonfly", "linux", "solaris", "freebsd", "nacl", "netbsd", "openbsd", "plan9", "windows", }; static void rmworkdir(void); // find reports the first index of p in l[0:n], or else -1. int find(char *p, char **l, int n) { int i; for(i=0; i 0) { // if not "/", then strip trailing path separator if(b.len >= 2 && b.p[b.len - 1] == slash[0]) b.len--; goroot = btake(&b); } xgetenv(&b, "GOBIN"); if(b.len == 0) bprintf(&b, "%s%sbin", goroot, slash); gobin = btake(&b); xgetenv(&b, "GOOS"); if(b.len == 0) bwritestr(&b, gohostos); goos = btake(&b); if(find(goos, okgoos, nelem(okgoos)) < 0) fatal("unknown $GOOS %s", goos); xgetenv(&b, "GOARM"); if(b.len == 0) bwritestr(&b, xgetgoarm()); goarm = btake(&b); xgetenv(&b, "GO386"); if(b.len == 0) { if(cansse2()) bwritestr(&b, "sse2"); else bwritestr(&b, "387"); } go386 = btake(&b); p = bpathf(&b, "%s/include/u.h", goroot); if(!isfile(p)) { fatal("$GOROOT is not set correctly or not exported\n" "\tGOROOT=%s\n" "\t%s does not exist", goroot, p); } xgetenv(&b, "GOHOSTARCH"); if(b.len > 0) gohostarch = btake(&b); i = find(gohostarch, okgoarch, nelem(okgoarch)); if(i < 0) fatal("unknown $GOHOSTARCH %s", gohostarch); bprintf(&b, "%c", gochars[i]); gohostchar = btake(&b); xgetenv(&b, "GOARCH"); if(b.len == 0) bwritestr(&b, gohostarch); goarch = btake(&b); i = find(goarch, okgoarch, nelem(okgoarch)); if(i < 0) fatal("unknown $GOARCH %s", goarch); bprintf(&b, "%c", gochars[i]); gochar = btake(&b); xgetenv(&b, "GO_EXTLINK_ENABLED"); if(b.len > 0) { goextlinkenabled = btake(&b); if(!streq(goextlinkenabled, "0") && !streq(goextlinkenabled, "1")) fatal("unknown $GO_EXTLINK_ENABLED %s", goextlinkenabled); } xgetenv(&b, "CC"); if(b.len == 0) { // Use clang on OS X, because gcc is deprecated there. // Xcode for OS X 10.9 Mavericks will ship a fake "gcc" binary that // actually runs clang. We prepare different command // lines for the two binaries, so it matters what we call it. // See golang.org/issue/5822. if(defaultclang) bprintf(&b, "clang"); else bprintf(&b, "gcc"); } defaultcc = btake(&b); xgetenv(&b, "CFLAGS"); defaultcflags = btake(&b); xgetenv(&b, "LDFLAGS"); defaultldflags = btake(&b); xgetenv(&b, "CC_FOR_TARGET"); if(b.len == 0) { bprintf(&b, defaultcc); } defaultcctarget = btake(&b); xgetenv(&b, "CXX_FOR_TARGET"); if(b.len == 0) { xgetenv(&b, "CXX"); if(b.len == 0) { if(defaultclang) bprintf(&b, "clang++"); else bprintf(&b, "g++"); } } defaultcxxtarget = btake(&b); xsetenv("GOROOT", goroot); xsetenv("GOARCH", goarch); xsetenv("GOOS", goos); xsetenv("GOARM", goarm); xsetenv("GO386", go386); // Make the environment more predictable. xsetenv("LANG", "C"); xsetenv("LANGUAGE", "en_US.UTF8"); goversion = findgoversion(); workdir = xworkdir(); xatexit(rmworkdir); bpathf(&b, "%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch); tooldir = btake(&b); bfree(&b); } // rmworkdir deletes the work directory. static void rmworkdir(void) { if(vflag > 1) errprintf("rm -rf %s\n", workdir); xremoveall(workdir); } // Remove trailing spaces. static void chomp(Buf *b) { int c; while(b->len > 0 && ((c=b->p[b->len-1]) == ' ' || c == '\t' || c == '\r' || c == '\n')) b->len--; } // findgoversion determines the Go version to use in the version string. static char* findgoversion(void) { char *tag, *rev, *p; int i, nrev; Buf b, path, bmore, branch; Vec tags; binit(&b); binit(&path); binit(&bmore); binit(&branch); vinit(&tags); // The $GOROOT/VERSION file takes priority, for distributions // without the Mercurial repo. bpathf(&path, "%s/VERSION", goroot); if(isfile(bstr(&path))) { readfile(&b, bstr(&path)); chomp(&b); // Commands such as "dist version > VERSION" will cause // the shell to create an empty VERSION file and set dist's // stdout to its fd. dist in turn looks at VERSION and uses // its content if available, which is empty at this point. if(b.len > 0) goto done; } // The $GOROOT/VERSION.cache file is a cache to avoid invoking // hg every time we run this command. Unlike VERSION, it gets // deleted by the clean command. bpathf(&path, "%s/VERSION.cache", goroot); if(isfile(bstr(&path))) { readfile(&b, bstr(&path)); chomp(&b); goto done; } // Otherwise, use Mercurial. // What is the current branch? run(&branch, goroot, CheckExit, "hg", "identify", "-b", nil); chomp(&branch); // What are the tags along the current branch? tag = "devel"; rev = "."; run(&b, goroot, CheckExit, "hg", "log", "-b", bstr(&branch), "-r", ".:0", "--template", "{tags} + ", nil); splitfields(&tags, bstr(&b)); nrev = 0; for(i=0; i 0) bwriteb(&b, &bmore); // Cache version. writefile(&b, bstr(&path), 0); done: p = btake(&b); bfree(&b); bfree(&path); bfree(&bmore); bfree(&branch); vfree(&tags); return p; } /* * Initial tree setup. */ // The old tools that no longer live in $GOBIN or $GOROOT/bin. static char *oldtool[] = { "5a", "5c", "5g", "5l", "6a", "6c", "6g", "6l", "8a", "8c", "8g", "8l", "6cov", "6nm", "6prof", "cgo", "ebnflint", "goapi", "gofix", "goinstall", "gomake", "gopack", "gopprof", "gotest", "gotype", "govet", "goyacc", "quietgcc", }; // Unreleased directories (relative to $GOROOT) that should // not be in release branches. static char *unreleased[] = { "src/cmd/link", "src/pkg/debug/goobj", "src/pkg/old", }; // setup sets up the tree for the initial build. static void setup(void) { int i; Buf b; char *p; binit(&b); // Create bin directory. p = bpathf(&b, "%s/bin", goroot); if(!isdir(p)) xmkdir(p); // Create package directory. p = bpathf(&b, "%s/pkg", goroot); if(!isdir(p)) xmkdir(p); p = bpathf(&b, "%s/pkg/%s_%s", goroot, gohostos, gohostarch); if(rebuildall) xremoveall(p); xmkdirall(p); if(!streq(goos, gohostos) || !streq(goarch, gohostarch)) { p = bpathf(&b, "%s/pkg/%s_%s", goroot, goos, goarch); if(rebuildall) xremoveall(p); xmkdirall(p); } // Create object directory. // We keep it in pkg/ so that all the generated binaries // are in one tree. If pkg/obj/libgc.a exists, it is a dreg from // before we used subdirectories of obj. Delete all of obj // to clean up. bpathf(&b, "%s/pkg/obj/libgc.a", goroot); if(isfile(bstr(&b))) xremoveall(bpathf(&b, "%s/pkg/obj", goroot)); p = bpathf(&b, "%s/pkg/obj/%s_%s", goroot, gohostos, gohostarch); if(rebuildall) xremoveall(p); xmkdirall(p); // Create tool directory. // We keep it in pkg/, just like the object directory above. if(rebuildall) xremoveall(tooldir); xmkdirall(tooldir); // Remove tool binaries from before the tool/gohostos_gohostarch xremoveall(bpathf(&b, "%s/bin/tool", goroot)); // Remove old pre-tool binaries. for(i=0; i ttarg) stale = 1; if(t == 0) { vadd(&missing, p); files.p[n++] = files.p[i]; continue; } files.p[n++] = files.p[i]; } files.len = n; // If there are no files to compile, we're done. if(files.len == 0) goto out; for(i=0; i ttarg) stale = 1; if(!stale) goto out; // For package runtime, copy some files into the work space. if(streq(dir, "pkg/runtime")) { copy(bpathf(&b, "%s/arch_GOARCH.h", workdir), bpathf(&b1, "%s/arch_%s.h", bstr(&path), goarch), 0); copy(bpathf(&b, "%s/defs_GOOS_GOARCH.h", workdir), bpathf(&b1, "%s/defs_%s_%s.h", bstr(&path), goos, goarch), 0); p = bpathf(&b1, "%s/signal_%s_%s.h", bstr(&path), goos, goarch); if(isfile(p)) copy(bpathf(&b, "%s/signal_GOOS_GOARCH.h", workdir), p, 0); copy(bpathf(&b, "%s/os_GOOS.h", workdir), bpathf(&b1, "%s/os_%s.h", bstr(&path), goos), 0); copy(bpathf(&b, "%s/signals_GOOS.h", workdir), bpathf(&b1, "%s/signals_%s.h", bstr(&path), goos), 0); } // Generate any missing files; regenerate existing ones. for(i=0; i 1) errprintf("generate %s\n", p); gentab[j].gen(bstr(&path), p); // Do not add generated file to clean list. // In pkg/runtime, we want to be able to // build the package with the go tool, // and it assumes these generated files already // exist (it does not know how to build them). // The 'clean' command can remove // the generated files. goto built; } } // Did not rebuild p. if(find(p, missing.p, missing.len) >= 0) fatal("missing file %s", p); built:; } // One more copy for package runtime. // The last batch was required for the generators. // This one is generated. if(streq(dir, "pkg/runtime")) { copy(bpathf(&b, "%s/zasm_GOOS_GOARCH.h", workdir), bpathf(&b1, "%s/zasm_%s_%s.h", bstr(&path), goos, goarch), 0); } // Generate .c files from .goc files. if(streq(dir, "pkg/runtime")) { for(i=0; i 1) errprintf("skip build for cross-compile %s\n", dir); goto nobuild; } // Compile the files. for(i=0; i 1) errprintf("cp %s %s\n", src, dst); binit(&b); readfile(&b, src); writefile(&b, dst, exec); bfree(&b); } // dopack copies the package src to dst, // appending the files listed in extra. // The archive format is the traditional Unix ar format. static void dopack(char *dst, char *src, char **extra, int nextra) { int i; char c, *p, *q; Buf b, bdst; binit(&b); binit(&bdst); readfile(&bdst, src); for(i=0; i p) p = q; } if(p == nil) p = extra[i]; bwritef(&bdst, "%-16.16s%-12d%-6d%-6d%-8o%-10d`\n", p, 0, 0, 0, 0644, b.len); bwriteb(&bdst, &b); if(b.len&1) { c = 0; bwrite(&bdst, &c, 1); } } writefile(&bdst, dst, 0); bfree(&b); bfree(&bdst); } // buildorder records the order of builds for the 'go bootstrap' command. static char *buildorder[] = { "lib9", "libbio", "liblink", "misc/pprof", "cmd/cc", // must be before c "cmd/gc", // must be before g "cmd/%sl", // must be before a, c, g "cmd/%sa", "cmd/%sc", "cmd/%sg", // The dependency order here was copied from a buildscript // back when there were build scripts. Will have to // be maintained by hand, but shouldn't change very // often. "pkg/runtime", "pkg/errors", "pkg/sync/atomic", "pkg/sync", "pkg/io", "pkg/unicode", "pkg/unicode/utf8", "pkg/unicode/utf16", "pkg/bytes", "pkg/math", "pkg/strings", "pkg/strconv", "pkg/bufio", "pkg/sort", "pkg/container/heap", "pkg/encoding/base64", "pkg/syscall", "pkg/time", "pkg/os", "pkg/reflect", "pkg/fmt", "pkg/encoding", "pkg/encoding/json", "pkg/flag", "pkg/path/filepath", "pkg/path", "pkg/io/ioutil", "pkg/log", "pkg/regexp/syntax", "pkg/regexp", "pkg/go/token", "pkg/go/scanner", "pkg/go/ast", "pkg/go/parser", "pkg/os/exec", "pkg/os/signal", "pkg/net/url", "pkg/text/template/parse", "pkg/text/template", "pkg/go/doc", "pkg/go/build", "cmd/go", }; // cleantab records the directories to clean in 'go clean'. // It is bigger than the buildorder because we clean all the // compilers but build only the $GOARCH ones. static char *cleantab[] = { "cmd/5a", "cmd/5c", "cmd/5g", "cmd/5l", "cmd/6a", "cmd/6c", "cmd/6g", "cmd/6l", "cmd/8a", "cmd/8c", "cmd/8g", "cmd/8l", "cmd/cc", "cmd/gc", "cmd/go", "lib9", "libbio", "liblink", "pkg/bufio", "pkg/bytes", "pkg/container/heap", "pkg/encoding", "pkg/encoding/base64", "pkg/encoding/json", "pkg/errors", "pkg/flag", "pkg/fmt", "pkg/go/ast", "pkg/go/build", "pkg/go/doc", "pkg/go/parser", "pkg/go/scanner", "pkg/go/token", "pkg/io", "pkg/io/ioutil", "pkg/log", "pkg/math", "pkg/net/url", "pkg/os", "pkg/os/exec", "pkg/path", "pkg/path/filepath", "pkg/reflect", "pkg/regexp", "pkg/regexp/syntax", "pkg/runtime", "pkg/sort", "pkg/strconv", "pkg/strings", "pkg/sync", "pkg/sync/atomic", "pkg/syscall", "pkg/text/template", "pkg/text/template/parse", "pkg/time", "pkg/unicode", "pkg/unicode/utf16", "pkg/unicode/utf8", }; static void clean(void) { int i, j, k; Buf b, path; Vec dir; binit(&b); binit(&path); vinit(&dir); for(i=0; i 0) usage(); xprintf(format, "CC", defaultcc); xprintf(format, "CC_FOR_TARGET", defaultcctarget); xprintf(format, "GOROOT", goroot); xprintf(format, "GOBIN", gobin); xprintf(format, "GOARCH", goarch); xprintf(format, "GOOS", goos); xprintf(format, "GOHOSTARCH", gohostarch); xprintf(format, "GOHOSTOS", gohostos); xprintf(format, "GOTOOLDIR", tooldir); xprintf(format, "GOCHAR", gochar); if(streq(goarch, "arm")) xprintf(format, "GOARM", goarm); if(streq(goarch, "386")) xprintf(format, "GO386", go386); if(pflag) { sep = ":"; if(streq(gohostos, "windows")) sep = ";"; xgetenv(&b, "PATH"); bprintf(&b1, "%s%s%s", gobin, sep, bstr(&b)); xprintf(format, "PATH", bstr(&b1)); } bfree(&b); bfree(&b1); } // The bootstrap command runs a build from scratch, // stopping at having installed the go_bootstrap command. void cmdbootstrap(int argc, char **argv) { int i; Buf b; char *oldgoos, *oldgoarch, *oldgochar; binit(&b); ARGBEGIN{ case 'a': rebuildall = 1; break; case 's': sflag++; break; case 'v': vflag++; break; default: usage(); }ARGEND if(argc > 0) usage(); if(rebuildall) clean(); goversion = findgoversion(); setup(); xsetenv("GOROOT", goroot); xsetenv("GOROOT_FINAL", goroot_final); // For the main bootstrap, building for host os/arch. oldgoos = goos; oldgoarch = goarch; oldgochar = gochar; goos = gohostos; goarch = gohostarch; gochar = gohostchar; xsetenv("GOARCH", goarch); xsetenv("GOOS", goos); for(i=0; i 0) usage(); clean(); } // Banner prints the 'now you've installed Go' banner. void cmdbanner(int argc, char **argv) { char *pathsep, *pid, *ns; Buf b, b1, search, path; ARGBEGIN{ case 'v': vflag++; break; default: usage(); }ARGEND if(argc > 0) usage(); binit(&b); binit(&b1); binit(&search); binit(&path); xprintf("\n"); xprintf("---\n"); xprintf("Installed Go for %s/%s in %s\n", goos, goarch, goroot); xprintf("Installed commands in %s\n", gobin); if(!xsamefile(goroot_final, goroot)) { // If the files are to be moved, don't check that gobin // is on PATH; assume they know what they are doing. } else if(streq(gohostos, "plan9")) { // Check that gobin is bound before /bin. readfile(&b, "#c/pid"); bsubst(&b, " ", ""); pid = btake(&b); bprintf(&b, "/proc/%s/ns", pid); ns = btake(&b); readfile(&b, ns); bprintf(&search, "bind -b %s /bin\n", gobin); if(xstrstr(bstr(&b), bstr(&search)) == nil) xprintf("*** You need to bind %s before /bin.\n", gobin); } else { // Check that gobin appears in $PATH. xgetenv(&b, "PATH"); pathsep = ":"; if(streq(gohostos, "windows")) pathsep = ";"; bprintf(&b1, "%s%s%s", pathsep, bstr(&b), pathsep); bprintf(&search, "%s%s%s", pathsep, gobin, pathsep); if(xstrstr(bstr(&b1), bstr(&search)) == nil) xprintf("*** You need to add %s to your PATH.\n", gobin); } if(streq(gohostos, "darwin")) { if(isfile(bpathf(&path, "%s/cov", tooldir))) xprintf("\n" "On OS X the debuggers must be installed setgid procmod.\n" "Read and run ./sudo.bash to install the debuggers.\n"); } if(!xsamefile(goroot_final, goroot)) { xprintf("\n" "The binaries expect %s to be copied or moved to %s\n", goroot, goroot_final); } bfree(&b); bfree(&b1); bfree(&search); bfree(&path); } // Version prints the Go version. void cmdversion(int argc, char **argv) { ARGBEGIN{ case 'v': vflag++; break; default: usage(); }ARGEND if(argc > 0) usage(); xprintf("%s\n", goversion); } go/src/cmd/dist/buildgc.c0100644000000000000000000000421312412656737015551 0ustar00rootroot00000000000000// 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. #include "a.h" /* * Helpers for building cmd/gc. */ // gcopnames creates opnames.h from go.h. // It finds the OXXX enum, pulls out all the constants // from OXXX to OEND, and writes a table mapping // op to string. void gcopnames(char *dir, char *file) { char *p, *q; int i, j, end; Buf in, b, out; Vec lines, fields; binit(&in); binit(&b); binit(&out); vinit(&lines); vinit(&fields); bwritestr(&out, bprintf(&b, "// auto generated by go tool dist\n")); bwritestr(&out, bprintf(&b, "static char *opnames[] = {\n")); readfile(&in, bprintf(&b, "%s/go.h", dir)); splitlines(&lines, bstr(&in)); i = 0; while(i // const defaultCXX = // // It is invoked to write cmd/go/zdefaultcc.go // but we also write cmd/cgo/zdefaultcc.go. void mkzdefaultcc(char *dir, char *file) { Buf b, out; USED(dir); binit(&out); bprintf(&out, "// auto generated by go tool dist\n" "\n" "package main\n" "\n" "const defaultCC = `%s`\n" "const defaultCXX = `%s`\n", defaultcctarget, defaultcxxtarget); writefile(&out, file, 0); // Convert file name to replace. binit(&b); bwritestr(&b, file); if(slash[0] == '/') bsubst(&b, "/go/zdefaultcc.go", "/cgo/zdefaultcc.go"); else bsubst(&b, "\\go\\zdefaultcc.go", "\\cgo\\zdefaultcc.go"); writefile(&out, bstr(&b), 0); bfree(&b); bfree(&out); } go/src/cmd/dist/buildruntime.c0100644000000000000000000002211712412656737016646 0ustar00rootroot00000000000000// 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. #include "a.h" /* * Helpers for building pkg/runtime. */ // mkzversion writes zversion.go: // // package runtime // const defaultGoroot = // const theVersion = // void mkzversion(char *dir, char *file) { Buf b, out; USED(dir); binit(&b); binit(&out); bwritestr(&out, bprintf(&b, "// auto generated by go tool dist\n" "\n" "package runtime\n" "\n" "const defaultGoroot = `%s`\n" "const theVersion = `%s`\n", goroot_final, goversion)); writefile(&out, file, 0); bfree(&b); bfree(&out); } // mkzexperiment writes zaexperiment.h (sic): // // #define GOEXPERIMENT "experiment string" // void mkzexperiment(char *dir, char *file) { Buf b, out, exp; USED(dir); binit(&b); binit(&out); binit(&exp); xgetenv(&exp, "GOEXPERIMENT"); bwritestr(&out, bprintf(&b, "// auto generated by go tool dist\n" "\n" "#define GOEXPERIMENT \"%s\"\n", bstr(&exp))); writefile(&out, file, 0); bfree(&b); bfree(&out); bfree(&exp); } // mkzgoarch writes zgoarch_$GOARCH.go: // // package runtime // const theGoarch = // void mkzgoarch(char *dir, char *file) { Buf b, out; USED(dir); binit(&b); binit(&out); bwritestr(&out, bprintf(&b, "// auto generated by go tool dist\n" "\n" "package runtime\n" "\n" "const theGoarch = `%s`\n", goarch)); writefile(&out, file, 0); bfree(&b); bfree(&out); } // mkzgoos writes zgoos_$GOOS.go: // // package runtime // const theGoos = // void mkzgoos(char *dir, char *file) { Buf b, out; USED(dir); binit(&b); binit(&out); bwritestr(&out, bprintf(&b, "// auto generated by go tool dist\n" "\n" "package runtime\n" "\n" "const theGoos = `%s`\n", goos)); writefile(&out, file, 0); bfree(&b); bfree(&out); } static struct { char *goarch; char *goos; char *hdr; } zasmhdr[] = { {"386", "", "#define get_tls(r) MOVL TLS, r\n" "#define g(r) 0(r)(TLS*1)\n" "#define m(r) 4(r)(TLS*1)\n" }, {"amd64p32", "", "#define get_tls(r) MOVL TLS, r\n" "#define g(r) 0(r)(TLS*1)\n" "#define m(r) 4(r)(TLS*1)\n" }, {"amd64", "", "#define get_tls(r) MOVQ TLS, r\n" "#define g(r) 0(r)(TLS*1)\n" "#define m(r) 8(r)(TLS*1)\n" }, {"arm", "", "#define LR R14\n" }, }; #define MAXWINCB 2000 /* maximum number of windows callbacks allowed */ // mkzasm writes zasm_$GOOS_$GOARCH.h, // which contains struct offsets for use by // assembly files. It also writes a copy to the work space // under the name zasm_GOOS_GOARCH.h (no expansion). // void mkzasm(char *dir, char *file) { int i, n; char *aggr, *p; Buf in, b, out, exp; Vec argv, lines, fields; binit(&in); binit(&b); binit(&out); binit(&exp); vinit(&argv); vinit(&lines); vinit(&fields); bwritestr(&out, "// auto generated by go tool dist\n\n"); for(i=0; i= 2) { n = fields.len; p = fields.p[n-1]; if(p[xstrlen(p)-1] == ';') p[xstrlen(p)-1] = '\0'; bwritestr(&out, bprintf(&b, "#define %s_%s %s\n", aggr, fields.p[n-1], fields.p[n-2])); } if(fields.len == 3 && streq(fields.p[1], "=")) { // generated from enumerated constants p = fields.p[2]; if(p[xstrlen(p)-1] == ';') p[xstrlen(p)-1] = '\0'; bwritestr(&out, bprintf(&b, "#define const_%s %s\n", fields.p[0], p)); } } // Some #defines that are used for .c files. if(streq(goos, "windows")) { bwritestr(&out, bprintf(&b, "#define cb_max %d\n", MAXWINCB)); } xgetenv(&exp, "GOEXPERIMENT"); bwritestr(&out, bprintf(&b, "#define GOEXPERIMENT \"%s\"\n", bstr(&exp))); // Write both to file and to workdir/zasm_GOOS_GOARCH.h. writefile(&out, file, 0); writefile(&out, bprintf(&b, "%s/zasm_GOOS_GOARCH.h", workdir), 0); bfree(&in); bfree(&b); bfree(&out); bfree(&exp); vfree(&argv); vfree(&lines); vfree(&fields); } // mkzsys writes zsys_$GOOS_$GOARCH.s, // which contains arch or os specific asm code. // void mkzsys(char *dir, char *file) { int i; Buf out; USED(dir); binit(&out); bwritestr(&out, "// auto generated by go tool dist\n\n"); if(streq(goos, "windows")) { bwritef(&out, "// runtime·callbackasm is called by external code to\n" "// execute Go implemented callback function. It is not\n" "// called from the start, instead runtime·compilecallback\n" "// always returns address into runtime·callbackasm offset\n" "// appropriately so different callbacks start with different\n" "// CALL instruction in runtime·callbackasm. This determines\n" "// which Go callback function is executed later on.\n" "TEXT runtime·callbackasm(SB),7,$0\n"); for(i=0; i= 0) { if(streq(fields.p[fields.len-1], "{")) skip = 1; // skip until } continue; } vadd(&seen, fields.p[1]); } if(skip) { if(hasprefix(p, "}")) skip = 0; continue; } bwritestr(&out, p); } writefile(&out, file, 0); bfree(&in); bfree(&b); bfree(&b1); bfree(&out); vfree(&argv); vfree(&lines); vfree(&fields); vfree(&seen); } go/src/cmd/dist/goc2c.c0100644000000000000000000003761212412656737015146 0ustar00rootroot00000000000000// Copyright 2009 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. #include "a.h" /* * Translate a .goc file into a .c file. A .goc file is a combination * of a limited form of Go with C. */ /* package PACKAGENAME {# line} func NAME([NAME TYPE { , NAME TYPE }]) [(NAME TYPE { , NAME TYPE })] \{ C code with proper brace nesting \} */ /* * We generate C code which implements the function such that it can * be called from Go and executes the C code. */ static char *input; static Buf *output; #define EOF -1 enum { use64bitint = 1, }; static int xgetchar(void) { int c; c = *input; if(c == 0) return EOF; input++; return c; } static void xungetc(void) { input--; } static void xputchar(char c) { bwrite(output, &c, 1); } static int xisspace(int c) { return c == ' ' || c == '\t' || c == '\r' || c == '\n'; } /* Whether we're emitting for gcc */ static int gcc; /* File and line number */ static const char *file; static unsigned int lineno; /* List of names and types. */ struct params { struct params *next; char *name; char *type; }; /* index into type_table */ enum { Bool, Float, Int, Uint, Uintptr, String, Slice, Eface, Complex128, Float32, Float64, }; static struct { char *name; int size; int rnd; // alignment } type_table[] = { /* * variable sized first, for easy replacement. * order matches enum above. * default is 32-bit architecture sizes. * spelling as in package runtime, so intgo/uintgo not int/uint. */ {"bool", 1}, {"float", 4}, {"intgo", 4}, {"uintgo", 4}, {"uintptr", 4}, {"String", 8}, {"Slice", 12}, {"Eface", 8}, {"Complex128", 16}, /* fixed size */ {"float32", 4}, {"float64", 8}, {"byte", 1}, {"int8", 1}, {"uint8", 1}, {"int16", 2}, {"uint16", 2}, {"int32", 4}, {"rune", 4}, {"uint32", 4}, {"int64", 8}, {"uint64", 8}, {nil, 0}, }; /* Fixed structure alignment (non-gcc only) */ int structround = 4; /* Unexpected EOF. */ static void bad_eof(void) { fatal("%s:%d: unexpected EOF\n", file, lineno); } /* Free a list of parameters. */ static void free_params(struct params *p) { while (p != nil) { struct params *next; next = p->next; xfree(p->name); xfree(p->type); xfree(p); p = next; } } /* Read a character, tracking lineno. */ static int getchar_update_lineno(void) { int c; c = xgetchar(); if (c == '\n') ++lineno; return c; } /* Read a character, giving an error on EOF, tracking lineno. */ static int getchar_no_eof(void) { int c; c = getchar_update_lineno(); if (c == EOF) bad_eof(); return c; } /* Read a character, skipping comments. */ static int getchar_skipping_comments(void) { int c; while (1) { c = getchar_update_lineno(); if (c != '/') return c; c = xgetchar(); if (c == '/') { do { c = getchar_update_lineno(); } while (c != EOF && c != '\n'); return c; } else if (c == '*') { while (1) { c = getchar_update_lineno(); if (c == EOF) return EOF; if (c == '*') { do { c = getchar_update_lineno(); } while (c == '*'); if (c == '/') break; } } } else { xungetc(); return '/'; } } } /* * Read and return a token. Tokens are string or character literals * or else delimited by whitespace or by [(),{}]. * The latter are all returned as single characters. */ static char * read_token(void) { int c, q; char *buf; unsigned int alc, off; char* delims = "(),{}"; while (1) { c = getchar_skipping_comments(); if (c == EOF) return nil; if (!xisspace(c)) break; } alc = 16; buf = xmalloc(alc + 1); off = 0; if(c == '"' || c == '\'') { q = c; buf[off] = c; ++off; while (1) { if (off+2 >= alc) { // room for c and maybe next char alc *= 2; buf = xrealloc(buf, alc + 1); } c = getchar_no_eof(); buf[off] = c; ++off; if(c == q) break; if(c == '\\') { buf[off] = getchar_no_eof(); ++off; } } } else if (xstrrchr(delims, c) != nil) { buf[off] = c; ++off; } else { while (1) { if (off >= alc) { alc *= 2; buf = xrealloc(buf, alc + 1); } buf[off] = c; ++off; c = getchar_skipping_comments(); if (c == EOF) break; if (xisspace(c) || xstrrchr(delims, c) != nil) { if (c == '\n') lineno--; xungetc(); break; } } } buf[off] = '\0'; return buf; } /* Read a token, giving an error on EOF. */ static char * read_token_no_eof(void) { char *token = read_token(); if (token == nil) bad_eof(); return token; } /* Read the package clause, and return the package name. */ static char * read_package(void) { char *token; token = read_token_no_eof(); if (token == nil) fatal("%s:%d: no token\n", file, lineno); if (!streq(token, "package")) { fatal("%s:%d: expected \"package\", got \"%s\"\n", file, lineno, token); } return read_token_no_eof(); } /* Read and copy preprocessor lines. */ static void read_preprocessor_lines(void) { int first; first = 1; while (1) { int c; do { c = getchar_skipping_comments(); } while (xisspace(c)); if (c != '#') { xungetc(); break; } if(first) { first = 0; xputchar('\n'); } xputchar(c); do { c = getchar_update_lineno(); xputchar(c); } while (c != '\n'); } } /* * Read a type in Go syntax and return a type in C syntax. We only * permit basic types and pointers. */ static char * read_type(void) { char *p, *op, *q; int pointer_count; unsigned int len; p = read_token_no_eof(); if (*p != '*' && !streq(p, "int") && !streq(p, "uint")) return p; op = p; pointer_count = 0; while (*p == '*') { ++pointer_count; ++p; } len = xstrlen(p); q = xmalloc(len + 2 + pointer_count + 1); xmemmove(q, p, len); // Turn int/uint into intgo/uintgo. if((len == 3 && xmemcmp(q, "int", 3) == 0) || (len == 4 && xmemcmp(q, "uint", 4) == 0)) { q[len++] = 'g'; q[len++] = 'o'; } while (pointer_count-- > 0) q[len++] = '*'; q[len] = '\0'; xfree(op); return q; } /* Return the size of the given type. */ static int type_size(char *p, int *rnd) { int i; if(p[xstrlen(p)-1] == '*') { *rnd = type_table[Uintptr].rnd; return type_table[Uintptr].size; } if(streq(p, "Iface")) p = "Eface"; for(i=0; type_table[i].name; i++) if(streq(type_table[i].name, p)) { *rnd = type_table[i].rnd; return type_table[i].size; } fatal("%s:%d: unknown type %s\n", file, lineno, p); return 0; } /* * Read a list of parameters. Each parameter is a name and a type. * The list ends with a ')'. We have already read the '('. */ static struct params * read_params(int *poffset) { char *token; struct params *ret, **pp, *p; int offset, size, rnd; ret = nil; pp = &ret; token = read_token_no_eof(); offset = 0; if (!streq(token, ")")) { while (1) { p = xmalloc(sizeof(struct params)); p->name = token; p->next = nil; *pp = p; pp = &p->next; if(streq(token, "...")) { p->type = xstrdup(""); } else { p->type = read_type(); rnd = 0; size = type_size(p->type, &rnd); if(rnd > structround) rnd = structround; if(offset%rnd) offset += rnd - offset%rnd; offset += size; } token = read_token_no_eof(); if (!streq(token, ",")) break; token = read_token_no_eof(); } } if (!streq(token, ")")) { fatal("%s:%d: expected '('\n", file, lineno); } if (poffset != nil) *poffset = offset; return ret; } /* * Read a function header. This reads up to and including the initial * '{' character. Returns 1 if it read a header, 0 at EOF. */ static int read_func_header(char **name, struct params **params, int *paramwid, struct params **rets) { int lastline; char *token; lastline = -1; while (1) { read_preprocessor_lines(); token = read_token(); if (token == nil) return 0; if (streq(token, "func")) { if(lastline != -1) bwritef(output, "\n"); break; } if (lastline != lineno) { if (lastline == lineno-1) bwritef(output, "\n"); else bwritef(output, "\n#line %d \"%s\"\n", lineno, file); lastline = lineno; } bwritef(output, "%s ", token); } *name = read_token_no_eof(); token = read_token(); if (token == nil || !streq(token, "(")) { fatal("%s:%d: expected \"(\"\n", file, lineno); } *params = read_params(paramwid); token = read_token(); if (token == nil || !streq(token, "(")) *rets = nil; else { *rets = read_params(nil); token = read_token(); } if (token == nil || !streq(token, "{")) { fatal("%s:%d: expected \"{\"\n", file, lineno); } return 1; } /* Write out parameters. */ static void write_params(struct params *params, int *first) { struct params *p; for (p = params; p != nil; p = p->next) { if (*first) *first = 0; else bwritef(output, ", "); bwritef(output, "%s %s", p->type, p->name); } } /* Write a 6g function header. */ static void write_6g_func_header(char *package, char *name, struct params *params, int paramwid, struct params *rets) { int first, n; struct params *p; bwritef(output, "void\n"); if(!contains(name, "·")) bwritef(output, "%s·", package); bwritef(output, "%s(", name); first = 1; write_params(params, &first); /* insert padding to align output struct */ if(rets != nil && paramwid%structround != 0) { n = structround - paramwid%structround; if(n & 1) bwritef(output, ", uint8"); if(n & 2) bwritef(output, ", uint16"); if(n & 4) bwritef(output, ", uint32"); } write_params(rets, &first); bwritef(output, ")\n{\n"); for (p = rets; p != nil; p = p->next) { if(streq(p->name, "...")) continue; if(streq(p->type, "Slice")) bwritef(output, "\t%s.array = 0;\n\t%s.len = 0;\n\t%s.cap = 0;\n", p->name, p->name, p->name); else if(streq(p->type, "String")) bwritef(output, "\t%s.str = 0;\n\t%s.len = 0;\n", p->name, p->name); else if(streq(p->type, "Eface")) bwritef(output, "\t%s.type = 0;\n\t%s.data = 0;\n", p->name, p->name); else if(streq(p->type, "Iface")) bwritef(output, "\t%s.tab = 0;\n\t%s.data = 0;\n", p->name, p->name); else if(streq(p->type, "Complex128")) bwritef(output, "\t%s.real = 0;\n\t%s.imag = 0;\n", p->name, p->name); else bwritef(output, "\t%s = 0;\n", p->name); bwritef(output, "\tFLUSH(&%s);\n", p->name); } } /* Write a 6g function trailer. */ static void write_6g_func_trailer(struct params *rets) { struct params *p; for (p = rets; p != nil; p = p->next) if(!streq(p->name, "...")) bwritef(output, "\tFLUSH(&%s);\n", p->name); bwritef(output, "}\n"); } /* Define the gcc function return type if necessary. */ static void define_gcc_return_type(char *package, char *name, struct params *rets) { struct params *p; if (rets == nil || rets->next == nil) return; bwritef(output, "struct %s_%s_ret {\n", package, name); for (p = rets; p != nil; p = p->next) bwritef(output, " %s %s;\n", p->type, p->name); bwritef(output, "};\n"); } /* Write out the gcc function return type. */ static void write_gcc_return_type(char *package, char *name, struct params *rets) { if (rets == nil) bwritef(output, "void"); else if (rets->next == nil) bwritef(output, "%s", rets->type); else bwritef(output, "struct %s_%s_ret", package, name); } /* Write out a gcc function header. */ static void write_gcc_func_header(char *package, char *name, struct params *params, struct params *rets) { int first; struct params *p; define_gcc_return_type(package, name, rets); write_gcc_return_type(package, name, rets); bwritef(output, " %s_%s(", package, name); first = 1; write_params(params, &first); bwritef(output, ") asm (\"%s.%s\");\n", package, name); write_gcc_return_type(package, name, rets); bwritef(output, " %s_%s(", package, name); first = 1; write_params(params, &first); bwritef(output, ")\n{\n"); for (p = rets; p != nil; p = p->next) bwritef(output, " %s %s;\n", p->type, p->name); } /* Write out a gcc function trailer. */ static void write_gcc_func_trailer(char *package, char *name, struct params *rets) { if (rets == nil) { // nothing to do } else if (rets->next == nil) bwritef(output, "return %s;\n", rets->name); else { struct params *p; bwritef(output, " {\n struct %s_%s_ret __ret;\n", package, name); for (p = rets; p != nil; p = p->next) bwritef(output, " __ret.%s = %s;\n", p->name, p->name); bwritef(output, " return __ret;\n }\n"); } bwritef(output, "}\n"); } /* Write out a function header. */ static void write_func_header(char *package, char *name, struct params *params, int paramwid, struct params *rets) { if (gcc) write_gcc_func_header(package, name, params, rets); else write_6g_func_header(package, name, params, paramwid, rets); bwritef(output, "#line %d \"%s\"\n", lineno, file); } /* Write out a function trailer. */ static void write_func_trailer(char *package, char *name, struct params *rets) { if (gcc) write_gcc_func_trailer(package, name, rets); else write_6g_func_trailer(rets); } /* * Read and write the body of the function, ending in an unnested } * (which is read but not written). */ static void copy_body(void) { int nesting = 0; while (1) { int c; c = getchar_no_eof(); if (c == '}' && nesting == 0) return; xputchar(c); switch (c) { default: break; case '{': ++nesting; break; case '}': --nesting; break; case '/': c = getchar_update_lineno(); xputchar(c); if (c == '/') { do { c = getchar_no_eof(); xputchar(c); } while (c != '\n'); } else if (c == '*') { while (1) { c = getchar_no_eof(); xputchar(c); if (c == '*') { do { c = getchar_no_eof(); xputchar(c); } while (c == '*'); if (c == '/') break; } } } break; case '"': case '\'': { int delim = c; do { c = getchar_no_eof(); xputchar(c); if (c == '\\') { c = getchar_no_eof(); xputchar(c); c = '\0'; } } while (c != delim); } break; } } } /* Process the entire file. */ static void process_file(void) { char *package, *name, *p, *n; struct params *params, *rets; int paramwid; package = read_package(); read_preprocessor_lines(); while (read_func_header(&name, ¶ms, ¶mwid, &rets)) { // name may have a package override already n = xstrstr(name, "·"); if(n != nil) { p = xmalloc(n - name + 1); xmemmove(p, name, n - name); p[n - name] = 0; n += xstrlen("·"); } else { p = package; n = name; } write_func_header(p, n, params, paramwid, rets); copy_body(); write_func_trailer(p, n, rets); xfree(name); if(p != package) xfree(p); free_params(params); free_params(rets); } xfree(package); } void goc2c(char *goc, char *c) { int i; Buf in, out; binit(&in); binit(&out); file = goc; readfile(&in, goc); // TODO: set gcc=1 when using gcc if(!gcc) { if(streq(goarch, "amd64")) { type_table[Uintptr].size = 8; if(use64bitint) { type_table[Int].size = 8; } else { type_table[Int].size = 4; } structround = 8; } else if(streq(goarch, "amd64p32")) { type_table[Uintptr].size = 4; type_table[Int].size = 4; structround = 8; } else { // NOTE: These are set in the initializer, // but they might have been changed by a // previous invocation of goc2c, so we have // to restore them. type_table[Uintptr].size = 4; type_table[Int].size = 4; structround = 4; } type_table[Uint].size = type_table[Int].size; type_table[Slice].size = type_table[Uintptr].size+2*type_table[Int].size; type_table[Eface].size = 2*type_table[Uintptr].size; type_table[String].size = 2*type_table[Uintptr].size; for(i=0; i #include #include #undef nil #undef nelem #include "a.h" // bprintf replaces the buffer with the result of the printf formatting // and returns a pointer to the NUL-terminated buffer contents. char* bprintf(Buf *b, char *fmt, ...) { va_list arg; char buf[4096]; breset(b); va_start(arg, fmt); vsnprintf(buf, sizeof buf, fmt, arg); va_end(arg); bwritestr(b, buf); return bstr(b); } // bpathf is the same as bprintf (on windows it turns / into \ after the printf). // It returns a pointer to the NUL-terminated buffer contents. char* bpathf(Buf *b, char *fmt, ...) { va_list arg; char buf[4096]; breset(b); va_start(arg, fmt); vsnprintf(buf, sizeof buf, fmt, arg); va_end(arg); bwritestr(b, buf); return bstr(b); } // bwritef is like bprintf but does not reset the buffer // and does not return the NUL-terminated string. void bwritef(Buf *b, char *fmt, ...) { va_list arg; char buf[4096]; va_start(arg, fmt); vsnprintf(buf, sizeof buf, fmt, arg); va_end(arg); bwritestr(b, buf); } // breadfrom appends to b all the data that can be read from fd. static void breadfrom(Buf *b, int fd) { int n; for(;;) { bgrow(b, 4096); n = read(fd, b->p+b->len, 4096); if(n < 0) fatal("read"); if(n == 0) break; b->len += n; } } // xgetenv replaces b with the value of the named environment variable. void xgetenv(Buf *b, char *name) { char *p; breset(b); p = getenv(name); if(p != nil) bwritestr(b, p); } static void genrun(Buf *b, char *dir, int mode, Vec *argv, int bg); // run runs the command named by cmd. // If b is not nil, run replaces b with the output of the command. // If dir is not nil, run runs the command in that directory. // If mode is CheckExit, run calls fatal if the command is not successful. void run(Buf *b, char *dir, int mode, char *cmd, ...) { va_list arg; Vec argv; char *p; vinit(&argv); vadd(&argv, cmd); va_start(arg, cmd); while((p = va_arg(arg, char*)) != nil) vadd(&argv, p); va_end(arg); runv(b, dir, mode, &argv); vfree(&argv); } // runv is like run but takes a vector. void runv(Buf *b, char *dir, int mode, Vec *argv) { genrun(b, dir, mode, argv, 1); } // bgrunv is like run but runs the command in the background. // bgwait waits for pending bgrunv to finish. void bgrunv(char *dir, int mode, Vec *argv) { genrun(nil, dir, mode, argv, 0); } #define MAXBG 4 /* maximum number of jobs to run at once */ static struct { int pid; int mode; char *cmd; Buf *b; } bg[MAXBG]; static int nbg; static int maxnbg = nelem(bg); static void bgwait1(void); // genrun is the generic run implementation. static void genrun(Buf *b, char *dir, int mode, Vec *argv, int wait) { int i, p[2], pid; Buf b1, cmd; char *q; while(nbg >= maxnbg) bgwait1(); binit(&b1); binit(&cmd); if(!isabs(argv->p[0])) { bpathf(&b1, "/bin/%s", argv->p[0]); free(argv->p[0]); argv->p[0] = xstrdup(bstr(&b1)); } // Generate a copy of the command to show in a log. // Substitute $WORK for the work directory. for(i=0; ilen; i++) { if(i > 0) bwritestr(&cmd, " "); q = argv->p[i]; if(workdir != nil && hasprefix(q, workdir)) { bwritestr(&cmd, "$WORK"); q += strlen(workdir); } bwritestr(&cmd, q); } if(vflag > 1) errprintf("%s\n", bstr(&cmd)); if(b != nil) { breset(b); if(pipe(p) < 0) fatal("pipe"); } switch(pid = fork()) { case -1: fatal("fork"); case 0: if(b != nil) { close(0); close(p[0]); dup(p[1], 1); dup(p[1], 2); if(p[1] > 2) close(p[1]); } if(dir != nil) { if(chdir(dir) < 0) { fprint(2, "chdir: %r\n"); _exits("chdir"); } } vadd(argv, nil); exec(argv->p[0], argv->p); fprint(2, "%s\n", bstr(&cmd)); fprint(2, "exec: %r\n"); _exits("exec"); } if(b != nil) { close(p[1]); breadfrom(b, p[0]); close(p[0]); } if(nbg < 0) fatal("bad bookkeeping"); bg[nbg].pid = pid; bg[nbg].mode = mode; bg[nbg].cmd = btake(&cmd); bg[nbg].b = b; nbg++; if(wait) bgwait(); bfree(&cmd); bfree(&b1); } // bgwait1 waits for a single background job. static void bgwait1(void) { Waitmsg *w; int i, mode; char *cmd; Buf *b; w = wait(); if(w == nil) fatal("wait"); for(i=0; ipid) goto ok; fatal("wait: unexpected pid"); ok: cmd = bg[i].cmd; mode = bg[i].mode; bg[i].pid = 0; b = bg[i].b; bg[i].b = nil; bg[i] = bg[--nbg]; if(mode == CheckExit && w->msg[0]) { if(b != nil) xprintf("%s\n", bstr(b)); fatal("FAILED: %s", cmd); } xfree(cmd); } // bgwait waits for all the background jobs. void bgwait(void) { while(nbg > 0) bgwait1(); } // xgetwd replaces b with the current directory. void xgetwd(Buf *b) { char buf[4096]; breset(b); if(getwd(buf, sizeof buf) == nil) fatal("getwd"); bwritestr(b, buf); } // xrealwd replaces b with the 'real' name for the given path. // real is defined as what getcwd returns in that directory. void xrealwd(Buf *b, char *path) { char buf[4096]; int fd; fd = open(path, OREAD); if(fd2path(fd, buf, sizeof buf) < 0) fatal("fd2path"); close(fd); breset(b); bwritestr(b, buf); } // isdir reports whether p names an existing directory. bool isdir(char *p) { Dir *d; ulong mode; d = dirstat(p); if(d == nil) return 0; mode = d->mode; free(d); return (mode & DMDIR) == DMDIR; } // isfile reports whether p names an existing file. bool isfile(char *p) { Dir *d; ulong mode; d = dirstat(p); if(d == nil) return 0; mode = d->mode; free(d); return (mode & DMDIR) == 0; } // mtime returns the modification time of the file p. Time mtime(char *p) { Dir *d; ulong t; d = dirstat(p); if(d == nil) return 0; t = d->mtime; free(d); return (Time)t; } // isabs reports whether p is an absolute path. bool isabs(char *p) { return hasprefix(p, "/"); } // readfile replaces b with the content of the named file. void readfile(Buf *b, char *file) { int fd; breset(b); fd = open(file, OREAD); if(fd < 0) fatal("open %s", file); breadfrom(b, fd); close(fd); } // writefile writes b to the named file, creating it if needed. void writefile(Buf *b, char *file, int exec) { int fd; Dir d; fd = create(file, ORDWR, 0666); if(fd < 0) fatal("create %s", file); if(write(fd, b->p, b->len) != b->len) fatal("short write"); if(exec) { nulldir(&d); d.mode = 0755; dirfwstat(fd, &d); } close(fd); } // xmkdir creates the directory p. void xmkdir(char *p) { int fd; if(isdir(p)) return; fd = create(p, OREAD, 0777|DMDIR); close(fd); if(fd < 0) fatal("mkdir %s", p); } // xmkdirall creates the directory p and its parents, as needed. void xmkdirall(char *p) { char *q; if(isdir(p)) return; q = strrchr(p, '/'); if(q != nil) { *q = '\0'; xmkdirall(p); *q = '/'; } xmkdir(p); } // xremove removes the file p. void xremove(char *p) { if(vflag > 2) errprintf("rm %s\n", p); remove(p); } // xremoveall removes the file or directory tree rooted at p. void xremoveall(char *p) { int i; Buf b; Vec dir; binit(&b); vinit(&dir); if(isdir(p)) { xreaddir(&dir, p); for(i=0; i 2) errprintf("rm %s\n", p); remove(p); bfree(&b); vfree(&dir); } // xreaddir replaces dst with a list of the names of the files in dir. // The names are relative to dir; they are not full paths. void xreaddir(Vec *dst, char *dir) { Dir *d; int fd, i, n; vreset(dst); fd = open(dir, OREAD); if(fd < 0) fatal("open %s", dir); n = dirreadall(fd, &d); for(i=0; i= 0) goto done; } fatal("xworkdir create"); done: close(fd); p = btake(&b); bfree(&b); return p; } // fatal prints an error message to standard error and exits. void fatal(char *msg, ...) { char buf[ERRMAX]; va_list arg; rerrstr(buf, sizeof buf); fflush(stdout); fprintf(stderr, "go tool dist: "); va_start(arg, msg); vfprintf(stderr, msg, arg); va_end(arg); if(buf[0]) fprintf(stderr, ": %s", buf); fprintf(stderr, "\n"); bgwait(); exits(msg); } // xmalloc returns a newly allocated zeroed block of n bytes of memory. // It calls fatal if it runs out of memory. void* xmalloc(int n) { void *p; p = malloc(n); if(p == nil) fatal("out of memory"); memset(p, 0, n); return p; } // xstrdup returns a newly allocated copy of p. // It calls fatal if it runs out of memory. char* xstrdup(char *p) { p = strdup(p); if(p == nil) fatal("out of memory"); return p; } // xrealloc grows the allocation p to n bytes and // returns the new (possibly moved) pointer. // It calls fatal if it runs out of memory. void* xrealloc(void *p, int n) { p = realloc(p, n); if(p == nil) fatal("out of memory"); return p; } // xfree frees the result returned by xmalloc, xstrdup, or xrealloc. void xfree(void *p) { free(p); } // hassuffix reports whether p ends with suffix. bool hassuffix(char *p, char *suffix) { int np, ns; np = strlen(p); ns = strlen(suffix); return np >= ns && strcmp(p+np-ns, suffix) == 0; } // hasprefix reports whether p begins with prefix. bool hasprefix(char *p, char *prefix) { return strncmp(p, prefix, strlen(prefix)) == 0; } // contains reports whether sep appears in p. bool contains(char *p, char *sep) { return strstr(p, sep) != nil; } // streq reports whether p and q are the same string. bool streq(char *p, char *q) { return strcmp(p, q) == 0; } // lastelem returns the final path element in p. char* lastelem(char *p) { char *out; out = p; for(; *p; p++) if(*p == '/') out = p+1; return out; } // xmemmove copies n bytes from src to dst. void xmemmove(void *dst, void *src, int n) { memmove(dst, src, n); } // xmemcmp compares the n-byte regions starting at a and at b. int xmemcmp(void *a, void *b, int n) { return memcmp(a, b, n); } // xstrlen returns the length of the NUL-terminated string at p. int xstrlen(char *p) { return strlen(p); } // xexit exits the process with return code n. void xexit(int n) { char buf[32]; snprintf(buf, sizeof buf, "%d", n); exits(buf); } // xatexit schedules the exit-handler f to be run when the program exits. void xatexit(void (*f)(void)) { atexit(f); } // xprintf prints a message to standard output. void xprintf(char *fmt, ...) { va_list arg; va_start(arg, fmt); vprintf(fmt, arg); va_end(arg); } // errprintf prints a message to standard output. void errprintf(char *fmt, ...) { va_list arg; va_start(arg, fmt); vfprintf(stderr, fmt, arg); va_end(arg); } // xsetenv sets the environment variable $name to the given value. void xsetenv(char *name, char *value) { putenv(name, value); } // main takes care of OS-specific startup and dispatches to xmain. void main(int argc, char **argv) { Buf b; setvbuf(stdout, nil, _IOLBF, BUFSIZ); setvbuf(stderr, nil, _IOLBF, BUFSIZ); binit(&b); rfork(RFENVG); slash = "/"; gohostos = "plan9"; xgetenv(&b, "objtype"); if(b.len == 0) fatal("$objtype is unset"); gohostarch = btake(&b); srand(time(0)+getpid()); init(); xmain(argc, argv); bfree(&b); exits(nil); } // xqsort is a wrapper for the C standard qsort. void xqsort(void *data, int n, int elemsize, int (*cmp)(const void*, const void*)) { qsort(data, n, elemsize, cmp); } // xstrcmp compares the NUL-terminated strings a and b. int xstrcmp(char *a, char *b) { return strcmp(a, b); } // xstrstr returns a pointer to the first occurrence of b in a. char* xstrstr(char *a, char *b) { return strstr(a, b); } // xstrrchr returns a pointer to the final occurrence of c in p. char* xstrrchr(char *p, int c) { return strrchr(p, c); } // xsamefile reports whether f1 and f2 are the same file (or dir) int xsamefile(char *f1, char *f2) { return streq(f1, f2); // suffice for now } // xtryexecfunc tries to execute function f, if any illegal instruction // signal received in the course of executing that function, it will // return 0, otherwise it will return 1. int xtryexecfunc(void (*f)(void)) { USED(f); return 0; // suffice for now } bool cansse2(void) { // if we had access to cpuid, could answer this question // less conservatively. return 0; } #endif // PLAN9 go/src/cmd/dist/unix.c0100644000000000000000000003744412412656737015137 0ustar00rootroot00000000000000// 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. // These #ifdefs are being used as a substitute for // build configuration, so that on any system, this // tool can be built with the local equivalent of // cc *.c // #ifndef WIN32 #ifndef PLAN9 #include "a.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include // bprintf replaces the buffer with the result of the printf formatting // and returns a pointer to the NUL-terminated buffer contents. char* bprintf(Buf *b, char *fmt, ...) { va_list arg; char buf[4096]; breset(b); va_start(arg, fmt); vsnprintf(buf, sizeof buf, fmt, arg); va_end(arg); bwritestr(b, buf); return bstr(b); } // bpathf is the same as bprintf (on windows it turns / into \ after the printf). // It returns a pointer to the NUL-terminated buffer contents. char* bpathf(Buf *b, char *fmt, ...) { va_list arg; char buf[4096]; breset(b); va_start(arg, fmt); vsnprintf(buf, sizeof buf, fmt, arg); va_end(arg); bwritestr(b, buf); return bstr(b); } // bwritef is like bprintf but does not reset the buffer // and does not return the NUL-terminated string. void bwritef(Buf *b, char *fmt, ...) { va_list arg; char buf[4096]; va_start(arg, fmt); vsnprintf(buf, sizeof buf, fmt, arg); va_end(arg); bwritestr(b, buf); } // breadfrom appends to b all the data that can be read from fd. static void breadfrom(Buf *b, int fd) { int n; for(;;) { bgrow(b, 4096); n = read(fd, b->p+b->len, 4096); if(n < 0) fatal("read: %s", strerror(errno)); if(n == 0) break; b->len += n; } } // xgetenv replaces b with the value of the named environment variable. void xgetenv(Buf *b, char *name) { char *p; breset(b); p = getenv(name); if(p != NULL) bwritestr(b, p); } static void genrun(Buf *b, char *dir, int mode, Vec *argv, int bg); // run runs the command named by cmd. // If b is not nil, run replaces b with the output of the command. // If dir is not nil, run runs the command in that directory. // If mode is CheckExit, run calls fatal if the command is not successful. void run(Buf *b, char *dir, int mode, char *cmd, ...) { va_list arg; Vec argv; char *p; vinit(&argv); vadd(&argv, cmd); va_start(arg, cmd); while((p = va_arg(arg, char*)) != nil) vadd(&argv, p); va_end(arg); runv(b, dir, mode, &argv); vfree(&argv); } // runv is like run but takes a vector. void runv(Buf *b, char *dir, int mode, Vec *argv) { genrun(b, dir, mode, argv, 1); } // bgrunv is like run but runs the command in the background. // bgwait waits for pending bgrunv to finish. void bgrunv(char *dir, int mode, Vec *argv) { genrun(nil, dir, mode, argv, 0); } #define MAXBG 4 /* maximum number of jobs to run at once */ static struct { int pid; int mode; char *cmd; Buf *b; } bg[MAXBG]; static int nbg; static int maxnbg = nelem(bg); static void bgwait1(void); // genrun is the generic run implementation. static void genrun(Buf *b, char *dir, int mode, Vec *argv, int wait) { int i, p[2], pid; Buf cmd; char *q; while(nbg >= maxnbg) bgwait1(); // Generate a copy of the command to show in a log. // Substitute $WORK for the work directory. binit(&cmd); for(i=0; ilen; i++) { if(i > 0) bwritestr(&cmd, " "); q = argv->p[i]; if(workdir != nil && hasprefix(q, workdir)) { bwritestr(&cmd, "$WORK"); q += strlen(workdir); } bwritestr(&cmd, q); } if(vflag > 1) errprintf("%s\n", bstr(&cmd)); if(b != nil) { breset(b); if(pipe(p) < 0) fatal("pipe: %s", strerror(errno)); } switch(pid = fork()) { case -1: fatal("fork: %s", strerror(errno)); case 0: if(b != nil) { close(0); close(p[0]); dup2(p[1], 1); dup2(p[1], 2); if(p[1] > 2) close(p[1]); } if(dir != nil) { if(chdir(dir) < 0) { fprintf(stderr, "chdir %s: %s\n", dir, strerror(errno)); _exit(1); } } vadd(argv, nil); execvp(argv->p[0], argv->p); fprintf(stderr, "%s\n", bstr(&cmd)); fprintf(stderr, "exec %s: %s\n", argv->p[0], strerror(errno)); _exit(1); } if(b != nil) { close(p[1]); breadfrom(b, p[0]); close(p[0]); } if(nbg < 0) fatal("bad bookkeeping"); bg[nbg].pid = pid; bg[nbg].mode = mode; bg[nbg].cmd = btake(&cmd); bg[nbg].b = b; nbg++; if(wait) bgwait(); bfree(&cmd); } // bgwait1 waits for a single background job. static void bgwait1(void) { int i, pid, status, mode; char *cmd; Buf *b; errno = 0; while((pid = wait(&status)) < 0) { if(errno != EINTR) fatal("waitpid: %s", strerror(errno)); } for(i=0; i 0) bgwait1(); } // xgetwd replaces b with the current directory. void xgetwd(Buf *b) { char buf[MAXPATHLEN]; breset(b); if(getcwd(buf, MAXPATHLEN) == nil) fatal("getcwd: %s", strerror(errno)); bwritestr(b, buf); } // xrealwd replaces b with the 'real' name for the given path. // real is defined as what getcwd returns in that directory. void xrealwd(Buf *b, char *path) { int fd; fd = open(".", 0); if(fd < 0) fatal("open .: %s", strerror(errno)); if(chdir(path) < 0) fatal("chdir %s: %s", path, strerror(errno)); xgetwd(b); if(fchdir(fd) < 0) fatal("fchdir: %s", strerror(errno)); close(fd); } // isdir reports whether p names an existing directory. bool isdir(char *p) { struct stat st; return stat(p, &st) >= 0 && S_ISDIR(st.st_mode); } // isfile reports whether p names an existing file. bool isfile(char *p) { struct stat st; return stat(p, &st) >= 0 && S_ISREG(st.st_mode); } // mtime returns the modification time of the file p. Time mtime(char *p) { struct stat st; if(stat(p, &st) < 0) return 0; return (Time)st.st_mtime*1000000000LL; } // isabs reports whether p is an absolute path. bool isabs(char *p) { return hasprefix(p, "/"); } // readfile replaces b with the content of the named file. void readfile(Buf *b, char *file) { int fd; breset(b); fd = open(file, 0); if(fd < 0) fatal("open %s: %s", file, strerror(errno)); breadfrom(b, fd); close(fd); } // writefile writes b to the named file, creating it if needed. if // exec is non-zero, marks the file as executable. void writefile(Buf *b, char *file, int exec) { int fd; fd = creat(file, 0666); if(fd < 0) fatal("create %s: %s", file, strerror(errno)); if(write(fd, b->p, b->len) != b->len) fatal("short write: %s", strerror(errno)); if(exec) fchmod(fd, 0755); close(fd); } // xmkdir creates the directory p. void xmkdir(char *p) { if(mkdir(p, 0777) < 0) fatal("mkdir %s: %s", p, strerror(errno)); } // xmkdirall creates the directory p and its parents, as needed. void xmkdirall(char *p) { char *q; if(isdir(p)) return; q = strrchr(p, '/'); if(q != nil) { *q = '\0'; xmkdirall(p); *q = '/'; } xmkdir(p); } // xremove removes the file p. void xremove(char *p) { if(vflag > 2) errprintf("rm %s\n", p); unlink(p); } // xremoveall removes the file or directory tree rooted at p. void xremoveall(char *p) { int i; Buf b; Vec dir; binit(&b); vinit(&dir); if(isdir(p)) { xreaddir(&dir, p); for(i=0; i 2) errprintf("rm %s\n", p); rmdir(p); } else { if(vflag > 2) errprintf("rm %s\n", p); unlink(p); } bfree(&b); vfree(&dir); } // xreaddir replaces dst with a list of the names of the files in dir. // The names are relative to dir; they are not full paths. void xreaddir(Vec *dst, char *dir) { DIR *d; struct dirent *dp; vreset(dst); d = opendir(dir); if(d == nil) fatal("opendir %s: %s", dir, strerror(errno)); while((dp = readdir(d)) != nil) { if(strcmp(dp->d_name, ".") == 0 || strcmp(dp->d_name, "..") == 0) continue; vadd(dst, dp->d_name); } closedir(d); } // xworkdir creates a new temporary directory to hold object files // and returns the name of that directory. char* xworkdir(void) { Buf b; char *p; binit(&b); xgetenv(&b, "TMPDIR"); if(b.len == 0) bwritestr(&b, "/var/tmp"); if(b.p[b.len-1] != '/') bwrite(&b, "/", 1); bwritestr(&b, "go-cbuild-XXXXXX"); p = bstr(&b); if(mkdtemp(p) == nil) fatal("mkdtemp(%s): %s", p, strerror(errno)); p = btake(&b); bfree(&b); return p; } // fatal prints an error message to standard error and exits. void fatal(char *msg, ...) { va_list arg; fflush(stdout); fprintf(stderr, "go tool dist: "); va_start(arg, msg); vfprintf(stderr, msg, arg); va_end(arg); fprintf(stderr, "\n"); bgwait(); exit(1); } // xmalloc returns a newly allocated zeroed block of n bytes of memory. // It calls fatal if it runs out of memory. void* xmalloc(int n) { void *p; p = malloc(n); if(p == nil) fatal("out of memory"); memset(p, 0, n); return p; } // xstrdup returns a newly allocated copy of p. // It calls fatal if it runs out of memory. char* xstrdup(char *p) { p = strdup(p); if(p == nil) fatal("out of memory"); return p; } // xrealloc grows the allocation p to n bytes and // returns the new (possibly moved) pointer. // It calls fatal if it runs out of memory. void* xrealloc(void *p, int n) { p = realloc(p, n); if(p == nil) fatal("out of memory"); return p; } // xfree frees the result returned by xmalloc, xstrdup, or xrealloc. void xfree(void *p) { free(p); } // hassuffix reports whether p ends with suffix. bool hassuffix(char *p, char *suffix) { int np, ns; np = strlen(p); ns = strlen(suffix); return np >= ns && strcmp(p+np-ns, suffix) == 0; } // hasprefix reports whether p begins with prefix. bool hasprefix(char *p, char *prefix) { return strncmp(p, prefix, strlen(prefix)) == 0; } // contains reports whether sep appears in p. bool contains(char *p, char *sep) { return strstr(p, sep) != nil; } // streq reports whether p and q are the same string. bool streq(char *p, char *q) { return strcmp(p, q) == 0; } // lastelem returns the final path element in p. char* lastelem(char *p) { char *out; out = p; for(; *p; p++) if(*p == '/') out = p+1; return out; } // xmemmove copies n bytes from src to dst. void xmemmove(void *dst, void *src, int n) { memmove(dst, src, n); } // xmemcmp compares the n-byte regions starting at a and at b. int xmemcmp(void *a, void *b, int n) { return memcmp(a, b, n); } // xstrlen returns the length of the NUL-terminated string at p. int xstrlen(char *p) { return strlen(p); } // xexit exits the process with return code n. void xexit(int n) { exit(n); } // xatexit schedules the exit-handler f to be run when the program exits. void xatexit(void (*f)(void)) { atexit(f); } // xprintf prints a message to standard output. void xprintf(char *fmt, ...) { va_list arg; va_start(arg, fmt); vprintf(fmt, arg); va_end(arg); } // errprintf prints a message to standard output. void errprintf(char *fmt, ...) { va_list arg; va_start(arg, fmt); vfprintf(stderr, fmt, arg); va_end(arg); } // xsetenv sets the environment variable $name to the given value. void xsetenv(char *name, char *value) { setenv(name, value, 1); } // main takes care of OS-specific startup and dispatches to xmain. int main(int argc, char **argv) { Buf b; int osx; struct utsname u; setvbuf(stdout, nil, _IOLBF, 0); setvbuf(stderr, nil, _IOLBF, 0); setenv("TERM", "dumb", 1); // disable escape codes in clang errors binit(&b); slash = "/"; #if defined(__APPLE__) gohostos = "darwin"; // Even on 64-bit platform, darwin uname -m prints i386. run(&b, nil, 0, "sysctl", "machdep.cpu.extfeatures", nil); if(contains(bstr(&b), "EM64T")) gohostarch = "amd64"; #elif defined(__linux__) gohostos = "linux"; #elif defined(__DragonFly__) gohostos = "dragonfly"; #elif defined(__FreeBSD__) gohostos = "freebsd"; #elif defined(__FreeBSD_kernel__) // detect debian/kFreeBSD. // http://wiki.debian.org/Debian_GNU/kFreeBSD_FAQ#Q._How_do_I_detect_kfreebsd_with_preprocessor_directives_in_a_C_program.3F gohostos = "freebsd"; #elif defined(__OpenBSD__) gohostos = "openbsd"; #elif defined(__NetBSD__) gohostos = "netbsd"; #elif defined(__sun) && defined(__SVR4) gohostos = "solaris"; // Even on 64-bit platform, solaris uname -m prints i86pc. run(&b, nil, 0, "isainfo", "-n", nil); if(contains(bstr(&b), "amd64")) gohostarch = "amd64"; if(contains(bstr(&b), "i386")) gohostarch = "386"; #else fatal("unknown operating system"); #endif if(gohostarch == nil) { if(uname(&u) < 0) fatal("uname: %s", strerror(errno)); if(contains(u.machine, "x86_64") || contains(u.machine, "amd64")) gohostarch = "amd64"; else if(hassuffix(u.machine, "86")) gohostarch = "386"; else if(contains(u.machine, "arm")) gohostarch = "arm"; else fatal("unknown architecture: %s", u.machine); } if(strcmp(gohostarch, "arm") == 0) maxnbg = 1; // The OS X 10.6 linker does not support external linking mode. // See golang.org/issue/5130. // // OS X 10.6 does not work with clang either, but OS X 10.9 requires it. // It seems to work with OS X 10.8, so we default to clang for 10.8 and later. // See golang.org/issue/5822. // // Roughly, OS X 10.N shows up as uname release (N+4), // so OS X 10.6 is uname version 10 and OS X 10.8 is uname version 12. if(strcmp(gohostos, "darwin") == 0) { if(uname(&u) < 0) fatal("uname: %s", strerror(errno)); osx = atoi(u.release) - 4; if(osx <= 6) goextlinkenabled = "0"; if(osx >= 8) defaultclang = 1; } init(); xmain(argc, argv); bfree(&b); return 0; } // xqsort is a wrapper for the C standard qsort. void xqsort(void *data, int n, int elemsize, int (*cmp)(const void*, const void*)) { qsort(data, n, elemsize, cmp); } // xstrcmp compares the NUL-terminated strings a and b. int xstrcmp(char *a, char *b) { return strcmp(a, b); } // xstrstr returns a pointer to the first occurrence of b in a. char* xstrstr(char *a, char *b) { return strstr(a, b); } // xstrrchr returns a pointer to the final occurrence of c in p. char* xstrrchr(char *p, int c) { return strrchr(p, c); } // xsamefile reports whether f1 and f2 are the same file (or dir) int xsamefile(char *f1, char *f2) { return streq(f1, f2); // suffice for now } sigjmp_buf sigill_jmpbuf; static void sigillhand(int); // xtryexecfunc tries to execute function f, if any illegal instruction // signal received in the course of executing that function, it will // return 0, otherwise it will return 1. // Some systems (notably NetBSD) will spin and spin when executing VFPv3 // instructions on VFPv2 system (e.g. Raspberry Pi) without ever triggering // SIGILL, so we set a 1-second alarm to catch that case. int xtryexecfunc(void (*f)(void)) { int r; r = 0; signal(SIGILL, sigillhand); signal(SIGALRM, sigillhand); alarm(1); if(sigsetjmp(sigill_jmpbuf, 1) == 0) { f(); r = 1; } signal(SIGILL, SIG_DFL); alarm(0); signal(SIGALRM, SIG_DFL); return r; } // SIGILL handler helper static void sigillhand(int signum) { USED(signum); siglongjmp(sigill_jmpbuf, 1); } static void __cpuid(int dst[4], int ax) { #ifdef __i386__ // we need to avoid ebx on i386 (esp. when -fPIC). asm volatile( "mov %%ebx, %%edi\n\t" "cpuid\n\t" "xchgl %%ebx, %%edi" : "=a" (dst[0]), "=D" (dst[1]), "=c" (dst[2]), "=d" (dst[3]) : "0" (ax)); #elif defined(__x86_64__) asm volatile("cpuid" : "=a" (dst[0]), "=b" (dst[1]), "=c" (dst[2]), "=d" (dst[3]) : "0" (ax)); #else dst[0] = dst[1] = dst[2] = dst[3] = 0; #endif } bool cansse2(void) { int info[4]; __cpuid(info, 1); return (info[3] & (1<<26)) != 0; // SSE2 } #endif // PLAN9 #endif // __WINDOWS__ go/src/cmd/dist/windows.c0100644000000000000000000004033012412656737015632 0ustar00rootroot00000000000000// 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. // These #ifdefs are being used as a substitute for // build configuration, so that on any system, this // tool can be built with the local equivalent of // cc *.c // #ifdef WIN32 // Portability layer implemented for Windows. // See unix.c for doc comments about exported functions. #include "a.h" #include #include #include #include /* * Windows uses 16-bit rune strings in the APIs. * Define conversions between Rune* and UTF-8 char*. */ typedef unsigned char uchar; typedef unsigned short Rune; // same as Windows // encoderune encodes the rune r into buf and returns // the number of bytes used. static int encoderune(char *buf, Rune r) { if(r < 0x80) { // 7 bits buf[0] = r; return 1; } if(r < 0x800) { // 5+6 bits buf[0] = 0xc0 | (r>>6); buf[1] = 0x80 | (r&0x3f); return 2; } buf[0] = 0xe0 | (r>>12); buf[1] = 0x80 | ((r>>6)&0x3f); buf[2] = 0x80 | (r&0x3f); return 3; } // decoderune decodes the rune encoding at sbuf into r // and returns the number of bytes used. static int decoderune(Rune *r, char *sbuf) { uchar *buf; buf = (uchar*)sbuf; if(buf[0] < 0x80) { *r = buf[0]; return 1; } if((buf[0]&0xe0) == 0xc0 && (buf[1]&0xc0) == 0x80) { *r = (buf[0]&~0xc0)<<6 | (buf[1]&~0x80); if(*r < 0x80) goto err; return 2; } if((buf[0]&0xf0) == 0xe0 && (buf[1]&0xc0) == 0x80 && (buf[2]&0xc0) == 0x80) { *r = (buf[0]&~0xc0)<<12 | (buf[1]&~0x80)<<6 | (buf[2]&~0x80); if(*r < 0x800) goto err; return 3; } err: *r = 0xfffd; return 1; } // toutf replaces b with the UTF-8 encoding of the rune string r. static void toutf(Buf *b, Rune *r) { int i, n; char buf[4]; breset(b); for(i=0; r[i]; i++) { n = encoderune(buf, r[i]); bwrite(b, buf, n); } } // torune replaces *rp with a pointer to a newly allocated // rune string equivalent of the UTF-8 string p. static void torune(Rune **rp, char *p) { Rune *r, *w; r = xmalloc((strlen(p)+1) * sizeof r[0]); w = r; while(*p) p += decoderune(w++, p); *w = 0; *rp = r; } // errstr returns the most recent Windows error, in string form. static char* errstr(void) { DWORD code; Rune *r; Buf b; binit(&b); code = GetLastError(); r = nil; FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS, nil, code, 0, (Rune*)&r, 0, nil); toutf(&b, r); return bstr(&b); // leak but we're dying anyway } void xgetenv(Buf *b, char *name) { Rune *buf; int n; Rune *r; breset(b); torune(&r, name); n = GetEnvironmentVariableW(r, NULL, 0); if(n > 0) { buf = xmalloc((n+1)*sizeof buf[0]); GetEnvironmentVariableW(r, buf, n+1); buf[n] = '\0'; toutf(b, buf); xfree(buf); } xfree(r); } void xsetenv(char *name, char *value) { Rune *rname, *rvalue; torune(&rname, name); torune(&rvalue, value); SetEnvironmentVariableW(rname, rvalue); xfree(rname); xfree(rvalue); } char* bprintf(Buf *b, char *fmt, ...) { va_list arg; char buf[4096]; breset(b); va_start(arg, fmt); vsnprintf(buf, sizeof buf, fmt, arg); va_end(arg); bwritestr(b, buf); return bstr(b); } void bwritef(Buf *b, char *fmt, ...) { va_list arg; char buf[4096]; // no reset va_start(arg, fmt); vsnprintf(buf, sizeof buf, fmt, arg); va_end(arg); bwritestr(b, buf); } // bpathf is like bprintf but replaces / with \ in the result, // to make it a canonical windows file path. char* bpathf(Buf *b, char *fmt, ...) { int i; va_list arg; char buf[4096]; breset(b); va_start(arg, fmt); vsnprintf(buf, sizeof buf, fmt, arg); va_end(arg); bwritestr(b, buf); for(i=0; ilen; i++) if(b->p[i] == '/') b->p[i] = '\\'; return bstr(b); } static void breadfrom(Buf *b, HANDLE h) { DWORD n; for(;;) { if(b->len > 1<<22) fatal("unlikely file size in readfrom"); bgrow(b, 4096); n = 0; if(!ReadFile(h, b->p+b->len, 4096, &n, nil)) { // Happens for pipe reads. break; } if(n == 0) break; b->len += n; } } void run(Buf *b, char *dir, int mode, char *cmd, ...) { va_list arg; Vec argv; char *p; vinit(&argv); vadd(&argv, cmd); va_start(arg, cmd); while((p = va_arg(arg, char*)) != nil) vadd(&argv, p); va_end(arg); runv(b, dir, mode, &argv); vfree(&argv); } static void genrun(Buf*, char*, int, Vec*, int); void runv(Buf *b, char *dir, int mode, Vec *argv) { genrun(b, dir, mode, argv, 1); } void bgrunv(char *dir, int mode, Vec *argv) { genrun(nil, dir, mode, argv, 0); } #define MAXBG 4 /* maximum number of jobs to run at once */ static struct { PROCESS_INFORMATION pi; int mode; char *cmd; } bg[MAXBG]; static int nbg; static void bgwait1(void); static void genrun(Buf *b, char *dir, int mode, Vec *argv, int wait) { // Another copy of this logic is in ../../lib9/run_windows.c. // If there's a bug here, fix the logic there too. int i, j, nslash; Buf cmd; char *q; Rune *rcmd, *rexe, *rdir; STARTUPINFOW si; PROCESS_INFORMATION pi; HANDLE p[2]; while(nbg >= nelem(bg)) bgwait1(); binit(&cmd); for(i=0; ilen; i++) { q = argv->p[i]; if(i == 0 && streq(q, "hg")) bwritestr(&cmd, "cmd.exe /c "); if(i > 0) bwritestr(&cmd, " "); if(contains(q, " ") || contains(q, "\t") || contains(q, "\"") || contains(q, "\\\\") || hassuffix(q, "\\")) { bwritestr(&cmd, "\""); nslash = 0; for(; *q; q++) { if(*q == '\\') { nslash++; continue; } if(*q == '"') { for(j=0; j<2*nslash+1; j++) bwritestr(&cmd, "\\"); nslash = 0; } for(j=0; j 1) errprintf("%s\n", bstr(&cmd)); torune(&rcmd, bstr(&cmd)); rexe = nil; rdir = nil; if(dir != nil) torune(&rdir, dir); memset(&si, 0, sizeof si); si.cb = sizeof si; si.dwFlags = STARTF_USESTDHANDLES; si.hStdInput = INVALID_HANDLE_VALUE; if(b == nil) { si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE); si.hStdError = GetStdHandle(STD_ERROR_HANDLE); } else { SECURITY_ATTRIBUTES seci; memset(&seci, 0, sizeof seci); seci.nLength = sizeof seci; seci.bInheritHandle = 1; breset(b); if(!CreatePipe(&p[0], &p[1], &seci, 0)) fatal("CreatePipe: %s", errstr()); si.hStdOutput = p[1]; si.hStdError = p[1]; } if(!CreateProcessW(rexe, rcmd, nil, nil, TRUE, 0, nil, rdir, &si, &pi)) { if(mode!=CheckExit) return; fatal("%s: %s", argv->p[0], errstr()); } if(rexe != nil) xfree(rexe); xfree(rcmd); if(rdir != nil) xfree(rdir); if(b != nil) { CloseHandle(p[1]); breadfrom(b, p[0]); CloseHandle(p[0]); } if(nbg < 0) fatal("bad bookkeeping"); bg[nbg].pi = pi; bg[nbg].mode = mode; bg[nbg].cmd = btake(&cmd); nbg++; if(wait) bgwait(); bfree(&cmd); } // closes the background job for bgwait1 static void bgwaitclose(int i) { if(i < 0 || i >= nbg) return; CloseHandle(bg[i].pi.hProcess); CloseHandle(bg[i].pi.hThread); bg[i] = bg[--nbg]; } // bgwait1 waits for a single background job static void bgwait1(void) { int i, mode; char *cmd; HANDLE bgh[MAXBG]; DWORD code; if(nbg == 0) fatal("bgwait1: nothing left"); for(i=0; i= nbg) fatal("WaitForMultipleObjects: %s", errstr()); cmd = bg[i].cmd; mode = bg[i].mode; if(!GetExitCodeProcess(bg[i].pi.hProcess, &code)) { bgwaitclose(i); fatal("GetExitCodeProcess: %s", errstr()); return; } if(mode==CheckExit && code != 0) { bgwaitclose(i); fatal("FAILED: %s", cmd); return; } bgwaitclose(i); } void bgwait(void) { while(nbg > 0) bgwait1(); } // rgetwd returns a rune string form of the current directory's path. static Rune* rgetwd(void) { int n; Rune *r; n = GetCurrentDirectoryW(0, nil); r = xmalloc((n+1)*sizeof r[0]); GetCurrentDirectoryW(n+1, r); r[n] = '\0'; return r; } void xgetwd(Buf *b) { Rune *r; r = rgetwd(); breset(b); toutf(b, r); xfree(r); } void xrealwd(Buf *b, char *path) { Rune *old; Rune *rnew; old = rgetwd(); torune(&rnew, path); if(!SetCurrentDirectoryW(rnew)) fatal("chdir %s: %s", path, errstr()); xfree(rnew); xgetwd(b); if(!SetCurrentDirectoryW(old)) { breset(b); toutf(b, old); fatal("chdir %s: %s", bstr(b), errstr()); } } bool isdir(char *p) { DWORD attr; Rune *r; torune(&r, p); attr = GetFileAttributesW(r); xfree(r); return attr != INVALID_FILE_ATTRIBUTES && (attr & FILE_ATTRIBUTE_DIRECTORY); } bool isfile(char *p) { DWORD attr; Rune *r; torune(&r, p); attr = GetFileAttributesW(r); xfree(r); return attr != INVALID_FILE_ATTRIBUTES && !(attr & FILE_ATTRIBUTE_DIRECTORY); } Time mtime(char *p) { HANDLE h; WIN32_FIND_DATAW data; Rune *r; FILETIME *ft; torune(&r, p); h = FindFirstFileW(r, &data); xfree(r); if(h == INVALID_HANDLE_VALUE) return 0; FindClose(h); ft = &data.ftLastWriteTime; return (Time)ft->dwLowDateTime + ((Time)ft->dwHighDateTime<<32); } bool isabs(char *p) { // c:/ or c:\ at beginning if(('A' <= p[0] && p[0] <= 'Z') || ('a' <= p[0] && p[0] <= 'z')) return p[1] == ':' && (p[2] == '/' || p[2] == '\\'); // / or \ at beginning return p[0] == '/' || p[0] == '\\'; } void readfile(Buf *b, char *file) { HANDLE h; Rune *r; breset(b); if(vflag > 2) errprintf("read %s\n", file); torune(&r, file); h = CreateFileW(r, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0); if(h == INVALID_HANDLE_VALUE) fatal("open %s: %s", file, errstr()); breadfrom(b, h); CloseHandle(h); } void writefile(Buf *b, char *file, int exec) { HANDLE h; Rune *r; DWORD n; USED(exec); if(vflag > 2) errprintf("write %s\n", file); torune(&r, file); h = CreateFileW(r, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, nil, CREATE_ALWAYS, 0, 0); if(h == INVALID_HANDLE_VALUE) fatal("create %s: %s", file, errstr()); n = 0; if(!WriteFile(h, b->p, b->len, &n, 0)) fatal("write %s: %s", file, errstr()); CloseHandle(h); } void xmkdir(char *p) { Rune *r; torune(&r, p); if(!CreateDirectoryW(r, nil)) fatal("mkdir %s: %s", p, errstr()); xfree(r); } void xmkdirall(char *p) { int c; char *q, *q2; if(isdir(p)) return; q = strrchr(p, '/'); q2 = strrchr(p, '\\'); if(q2 != nil && (q == nil || q < q2)) q = q2; if(q != nil) { c = *q; *q = '\0'; xmkdirall(p); *q = c; } xmkdir(p); } void xremove(char *p) { int attr; Rune *r; torune(&r, p); attr = GetFileAttributesW(r); if(attr >= 0) { if(attr & FILE_ATTRIBUTE_DIRECTORY) RemoveDirectoryW(r); else DeleteFileW(r); } xfree(r); } void xreaddir(Vec *dst, char *dir) { Rune *r; Buf b; HANDLE h; WIN32_FIND_DATAW data; char *p, *q; binit(&b); vreset(dst); bwritestr(&b, dir); bwritestr(&b, "\\*"); torune(&r, bstr(&b)); h = FindFirstFileW(r, &data); xfree(r); if(h == INVALID_HANDLE_VALUE) goto out; do{ toutf(&b, data.cFileName); p = bstr(&b); q = xstrrchr(p, '\\'); if(q != nil) p = q+1; if(!streq(p, ".") && !streq(p, "..")) vadd(dst, p); }while(FindNextFileW(h, &data)); FindClose(h); out: bfree(&b); } char* xworkdir(void) { Rune buf[1024]; Rune tmp[MAX_PATH]; Rune go[3] = {'g', 'o', '\0'}; int n; Buf b; n = GetTempPathW(nelem(buf), buf); if(n <= 0) fatal("GetTempPath: %s", errstr()); buf[n] = '\0'; if(GetTempFileNameW(buf, go, 0, tmp) == 0) fatal("GetTempFileName: %s", errstr()); DeleteFileW(tmp); if(!CreateDirectoryW(tmp, nil)) fatal("create tempdir: %s", errstr()); binit(&b); toutf(&b, tmp); return btake(&b); } void xremoveall(char *p) { int i; Buf b; Vec dir; Rune *r; binit(&b); vinit(&dir); torune(&r, p); if(isdir(p)) { xreaddir(&dir, p); for(i=0; i= ns && strcmp(p+np-ns, suffix) == 0; } bool hasprefix(char *p, char *prefix) { return strncmp(p, prefix, strlen(prefix)) == 0; } bool contains(char *p, char *sep) { return strstr(p, sep) != nil; } bool streq(char *p, char *q) { return strcmp(p, q) == 0; } char* lastelem(char *p) { char *out; out = p; for(; *p; p++) if(*p == '/' || *p == '\\') out = p+1; return out; } void xmemmove(void *dst, void *src, int n) { memmove(dst, src, n); } int xmemcmp(void *a, void *b, int n) { return memcmp(a, b, n); } int xstrlen(char *p) { return strlen(p); } void xexit(int n) { ExitProcess(n); } void xatexit(void (*f)(void)) { atexit(f); } void xprintf(char *fmt, ...) { va_list arg; va_start(arg, fmt); vprintf(fmt, arg); va_end(arg); } void errprintf(char *fmt, ...) { va_list arg; va_start(arg, fmt); vfprintf(stderr, fmt, arg); va_end(arg); } int main(int argc, char **argv) { SYSTEM_INFO si; setvbuf(stdout, nil, _IOLBF, 0); setvbuf(stderr, nil, _IOLBF, 0); slash = "\\"; gohostos = "windows"; GetSystemInfo(&si); switch(si.wProcessorArchitecture) { case PROCESSOR_ARCHITECTURE_AMD64: gohostarch = "amd64"; break; case PROCESSOR_ARCHITECTURE_INTEL: gohostarch = "386"; break; default: fatal("unknown processor architecture"); } init(); xmain(argc, argv); return 0; } void xqsort(void *data, int n, int elemsize, int (*cmp)(const void*, const void*)) { qsort(data, n, elemsize, cmp); } int xstrcmp(char *a, char *b) { return strcmp(a, b); } char* xstrstr(char *a, char *b) { return strstr(a, b); } char* xstrrchr(char *p, int c) { char *ep; ep = p+strlen(p); for(ep=p+strlen(p); ep >= p; ep--) if(*ep == c) return ep; return nil; } // xsamefile reports whether f1 and f2 are the same file (or dir) int xsamefile(char *f1, char *f2) { Rune *ru; HANDLE fd1, fd2; BY_HANDLE_FILE_INFORMATION fi1, fi2; int r; // trivial case if(streq(f1, f2)) return 1; torune(&ru, f1); // refer to ../../pkg/os/stat_windows.go:/sameFile fd1 = CreateFileW(ru, 0, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0); xfree(ru); if(fd1 == INVALID_HANDLE_VALUE) return 0; torune(&ru, f2); fd2 = CreateFileW(ru, 0, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0); xfree(ru); if(fd2 == INVALID_HANDLE_VALUE) { CloseHandle(fd1); return 0; } r = GetFileInformationByHandle(fd1, &fi1) != 0 && GetFileInformationByHandle(fd2, &fi2) != 0; CloseHandle(fd2); CloseHandle(fd1); if(r != 0 && fi1.dwVolumeSerialNumber == fi2.dwVolumeSerialNumber && fi1.nFileIndexHigh == fi2.nFileIndexHigh && fi1.nFileIndexLow == fi2.nFileIndexLow) return 1; return 0; } // xtryexecfunc tries to execute function f, if any illegal instruction // signal received in the course of executing that function, it will // return 0, otherwise it will return 1. int xtryexecfunc(void (*f)(void)) { return 0; // suffice for now } static void cpuid(int dst[4], int ax) { // NOTE: This asm statement is for mingw. // If we ever support MSVC, use __cpuid(dst, ax) // to use the built-in. #if defined(__i386__) || defined(__x86_64__) asm volatile("cpuid" : "=a" (dst[0]), "=b" (dst[1]), "=c" (dst[2]), "=d" (dst[3]) : "0" (ax)); #else dst[0] = dst[1] = dst[2] = dst[3] = 0; #endif } bool cansse2(void) { int info[4]; cpuid(info, 1); return (info[3] & (1<<26)) != 0; // SSE2 } #endif // __WINDOWS__ go/src/cmd/fix0040755000000000000000000000000012412656737013543 5ustar00rootroot00000000000000go/src/cmd/fix/doc.go0100644000000000000000000000261412412656737014716 0ustar00rootroot00000000000000// Copyright 2011 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. /* Fix finds Go programs that use old APIs and rewrites them to use newer ones. After you update to a new Go release, fix helps make the necessary changes to your programs. Usage: go tool fix [-r name,...] [path ...] Without an explicit path, fix reads standard input and writes the result to standard output. If the named path is a file, fix rewrites the named files in place. If the named path is a directory, fix rewrites all .go files in that directory tree. When fix rewrites a file, it prints a line to standard error giving the name of the file and the rewrite applied. If the -diff flag is set, no files are rewritten. Instead fix prints the differences a rewrite would introduce. The -r flag restricts the set of rewrites considered to those in the named list. By default fix considers all known rewrites. Fix's rewrites are idempotent, so that it is safe to apply fix to updated or partially updated code even without using the -r flag. Fix prints the full list of fixes it can apply in its help output; to see them, run go tool fix -?. Fix does not make backup copies of the files that it edits. Instead, use a version control system's ``diff'' functionality to inspect the changes that fix makes before committing them. */ package main go/src/cmd/fix/fix.go0100644000000000000000000005110412412656737014735 0ustar00rootroot00000000000000// Copyright 2011 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 ( "fmt" "go/ast" "go/parser" "go/token" "os" "path" "reflect" "strconv" "strings" ) type fix struct { name string date string // date that fix was introduced, in YYYY-MM-DD format f func(*ast.File) bool desc string } // main runs sort.Sort(byName(fixes)) before printing list of fixes. type byName []fix func (f byName) Len() int { return len(f) } func (f byName) Swap(i, j int) { f[i], f[j] = f[j], f[i] } func (f byName) Less(i, j int) bool { return f[i].name < f[j].name } // main runs sort.Sort(byDate(fixes)) before applying fixes. type byDate []fix func (f byDate) Len() int { return len(f) } func (f byDate) Swap(i, j int) { f[i], f[j] = f[j], f[i] } func (f byDate) Less(i, j int) bool { return f[i].date < f[j].date } var fixes []fix func register(f fix) { fixes = append(fixes, f) } // walk traverses the AST x, calling visit(y) for each node y in the tree but // also with a pointer to each ast.Expr, ast.Stmt, and *ast.BlockStmt, // in a bottom-up traversal. func walk(x interface{}, visit func(interface{})) { walkBeforeAfter(x, nop, visit) } func nop(interface{}) {} // walkBeforeAfter is like walk but calls before(x) before traversing // x's children and after(x) afterward. func walkBeforeAfter(x interface{}, before, after func(interface{})) { before(x) switch n := x.(type) { default: panic(fmt.Errorf("unexpected type %T in walkBeforeAfter", x)) case nil: // pointers to interfaces case *ast.Decl: walkBeforeAfter(*n, before, after) case *ast.Expr: walkBeforeAfter(*n, before, after) case *ast.Spec: walkBeforeAfter(*n, before, after) case *ast.Stmt: walkBeforeAfter(*n, before, after) // pointers to struct pointers case **ast.BlockStmt: walkBeforeAfter(*n, before, after) case **ast.CallExpr: walkBeforeAfter(*n, before, after) case **ast.FieldList: walkBeforeAfter(*n, before, after) case **ast.FuncType: walkBeforeAfter(*n, before, after) case **ast.Ident: walkBeforeAfter(*n, before, after) case **ast.BasicLit: walkBeforeAfter(*n, before, after) // pointers to slices case *[]ast.Decl: walkBeforeAfter(*n, before, after) case *[]ast.Expr: walkBeforeAfter(*n, before, after) case *[]*ast.File: walkBeforeAfter(*n, before, after) case *[]*ast.Ident: walkBeforeAfter(*n, before, after) case *[]ast.Spec: walkBeforeAfter(*n, before, after) case *[]ast.Stmt: walkBeforeAfter(*n, before, after) // These are ordered and grouped to match ../../pkg/go/ast/ast.go case *ast.Field: walkBeforeAfter(&n.Names, before, after) walkBeforeAfter(&n.Type, before, after) walkBeforeAfter(&n.Tag, before, after) case *ast.FieldList: for _, field := range n.List { walkBeforeAfter(field, before, after) } case *ast.BadExpr: case *ast.Ident: case *ast.Ellipsis: walkBeforeAfter(&n.Elt, before, after) case *ast.BasicLit: case *ast.FuncLit: walkBeforeAfter(&n.Type, before, after) walkBeforeAfter(&n.Body, before, after) case *ast.CompositeLit: walkBeforeAfter(&n.Type, before, after) walkBeforeAfter(&n.Elts, before, after) case *ast.ParenExpr: walkBeforeAfter(&n.X, before, after) case *ast.SelectorExpr: walkBeforeAfter(&n.X, before, after) case *ast.IndexExpr: walkBeforeAfter(&n.X, before, after) walkBeforeAfter(&n.Index, before, after) case *ast.SliceExpr: walkBeforeAfter(&n.X, before, after) if n.Low != nil { walkBeforeAfter(&n.Low, before, after) } if n.High != nil { walkBeforeAfter(&n.High, before, after) } case *ast.TypeAssertExpr: walkBeforeAfter(&n.X, before, after) walkBeforeAfter(&n.Type, before, after) case *ast.CallExpr: walkBeforeAfter(&n.Fun, before, after) walkBeforeAfter(&n.Args, before, after) case *ast.StarExpr: walkBeforeAfter(&n.X, before, after) case *ast.UnaryExpr: walkBeforeAfter(&n.X, before, after) case *ast.BinaryExpr: walkBeforeAfter(&n.X, before, after) walkBeforeAfter(&n.Y, before, after) case *ast.KeyValueExpr: walkBeforeAfter(&n.Key, before, after) walkBeforeAfter(&n.Value, before, after) case *ast.ArrayType: walkBeforeAfter(&n.Len, before, after) walkBeforeAfter(&n.Elt, before, after) case *ast.StructType: walkBeforeAfter(&n.Fields, before, after) case *ast.FuncType: walkBeforeAfter(&n.Params, before, after) if n.Results != nil { walkBeforeAfter(&n.Results, before, after) } case *ast.InterfaceType: walkBeforeAfter(&n.Methods, before, after) case *ast.MapType: walkBeforeAfter(&n.Key, before, after) walkBeforeAfter(&n.Value, before, after) case *ast.ChanType: walkBeforeAfter(&n.Value, before, after) case *ast.BadStmt: case *ast.DeclStmt: walkBeforeAfter(&n.Decl, before, after) case *ast.EmptyStmt: case *ast.LabeledStmt: walkBeforeAfter(&n.Stmt, before, after) case *ast.ExprStmt: walkBeforeAfter(&n.X, before, after) case *ast.SendStmt: walkBeforeAfter(&n.Chan, before, after) walkBeforeAfter(&n.Value, before, after) case *ast.IncDecStmt: walkBeforeAfter(&n.X, before, after) case *ast.AssignStmt: walkBeforeAfter(&n.Lhs, before, after) walkBeforeAfter(&n.Rhs, before, after) case *ast.GoStmt: walkBeforeAfter(&n.Call, before, after) case *ast.DeferStmt: walkBeforeAfter(&n.Call, before, after) case *ast.ReturnStmt: walkBeforeAfter(&n.Results, before, after) case *ast.BranchStmt: case *ast.BlockStmt: walkBeforeAfter(&n.List, before, after) case *ast.IfStmt: walkBeforeAfter(&n.Init, before, after) walkBeforeAfter(&n.Cond, before, after) walkBeforeAfter(&n.Body, before, after) walkBeforeAfter(&n.Else, before, after) case *ast.CaseClause: walkBeforeAfter(&n.List, before, after) walkBeforeAfter(&n.Body, before, after) case *ast.SwitchStmt: walkBeforeAfter(&n.Init, before, after) walkBeforeAfter(&n.Tag, before, after) walkBeforeAfter(&n.Body, before, after) case *ast.TypeSwitchStmt: walkBeforeAfter(&n.Init, before, after) walkBeforeAfter(&n.Assign, before, after) walkBeforeAfter(&n.Body, before, after) case *ast.CommClause: walkBeforeAfter(&n.Comm, before, after) walkBeforeAfter(&n.Body, before, after) case *ast.SelectStmt: walkBeforeAfter(&n.Body, before, after) case *ast.ForStmt: walkBeforeAfter(&n.Init, before, after) walkBeforeAfter(&n.Cond, before, after) walkBeforeAfter(&n.Post, before, after) walkBeforeAfter(&n.Body, before, after) case *ast.RangeStmt: walkBeforeAfter(&n.Key, before, after) walkBeforeAfter(&n.Value, before, after) walkBeforeAfter(&n.X, before, after) walkBeforeAfter(&n.Body, before, after) case *ast.ImportSpec: case *ast.ValueSpec: walkBeforeAfter(&n.Type, before, after) walkBeforeAfter(&n.Values, before, after) walkBeforeAfter(&n.Names, before, after) case *ast.TypeSpec: walkBeforeAfter(&n.Type, before, after) case *ast.BadDecl: case *ast.GenDecl: walkBeforeAfter(&n.Specs, before, after) case *ast.FuncDecl: if n.Recv != nil { walkBeforeAfter(&n.Recv, before, after) } walkBeforeAfter(&n.Type, before, after) if n.Body != nil { walkBeforeAfter(&n.Body, before, after) } case *ast.File: walkBeforeAfter(&n.Decls, before, after) case *ast.Package: walkBeforeAfter(&n.Files, before, after) case []*ast.File: for i := range n { walkBeforeAfter(&n[i], before, after) } case []ast.Decl: for i := range n { walkBeforeAfter(&n[i], before, after) } case []ast.Expr: for i := range n { walkBeforeAfter(&n[i], before, after) } case []*ast.Ident: for i := range n { walkBeforeAfter(&n[i], before, after) } case []ast.Stmt: for i := range n { walkBeforeAfter(&n[i], before, after) } case []ast.Spec: for i := range n { walkBeforeAfter(&n[i], before, after) } } after(x) } // imports returns true if f imports path. func imports(f *ast.File, path string) bool { return importSpec(f, path) != nil } // importSpec returns the import spec if f imports path, // or nil otherwise. func importSpec(f *ast.File, path string) *ast.ImportSpec { for _, s := range f.Imports { if importPath(s) == path { return s } } return nil } // importPath returns the unquoted import path of s, // or "" if the path is not properly quoted. func importPath(s *ast.ImportSpec) string { t, err := strconv.Unquote(s.Path.Value) if err == nil { return t } return "" } // declImports reports whether gen contains an import of path. func declImports(gen *ast.GenDecl, path string) bool { if gen.Tok != token.IMPORT { return false } for _, spec := range gen.Specs { impspec := spec.(*ast.ImportSpec) if importPath(impspec) == path { return true } } return false } // isPkgDot returns true if t is the expression "pkg.name" // where pkg is an imported identifier. func isPkgDot(t ast.Expr, pkg, name string) bool { sel, ok := t.(*ast.SelectorExpr) return ok && isTopName(sel.X, pkg) && sel.Sel.String() == name } // isPtrPkgDot returns true if f is the expression "*pkg.name" // where pkg is an imported identifier. func isPtrPkgDot(t ast.Expr, pkg, name string) bool { ptr, ok := t.(*ast.StarExpr) return ok && isPkgDot(ptr.X, pkg, name) } // isTopName returns true if n is a top-level unresolved identifier with the given name. func isTopName(n ast.Expr, name string) bool { id, ok := n.(*ast.Ident) return ok && id.Name == name && id.Obj == nil } // isName returns true if n is an identifier with the given name. func isName(n ast.Expr, name string) bool { id, ok := n.(*ast.Ident) return ok && id.String() == name } // isCall returns true if t is a call to pkg.name. func isCall(t ast.Expr, pkg, name string) bool { call, ok := t.(*ast.CallExpr) return ok && isPkgDot(call.Fun, pkg, name) } // If n is an *ast.Ident, isIdent returns it; otherwise isIdent returns nil. func isIdent(n interface{}) *ast.Ident { id, _ := n.(*ast.Ident) return id } // refersTo returns true if n is a reference to the same object as x. func refersTo(n ast.Node, x *ast.Ident) bool { id, ok := n.(*ast.Ident) // The test of id.Name == x.Name handles top-level unresolved // identifiers, which all have Obj == nil. return ok && id.Obj == x.Obj && id.Name == x.Name } // isBlank returns true if n is the blank identifier. func isBlank(n ast.Expr) bool { return isName(n, "_") } // isEmptyString returns true if n is an empty string literal. func isEmptyString(n ast.Expr) bool { lit, ok := n.(*ast.BasicLit) return ok && lit.Kind == token.STRING && len(lit.Value) == 2 } func warn(pos token.Pos, msg string, args ...interface{}) { if pos.IsValid() { msg = "%s: " + msg arg1 := []interface{}{fset.Position(pos).String()} args = append(arg1, args...) } fmt.Fprintf(os.Stderr, msg+"\n", args...) } // countUses returns the number of uses of the identifier x in scope. func countUses(x *ast.Ident, scope []ast.Stmt) int { count := 0 ff := func(n interface{}) { if n, ok := n.(ast.Node); ok && refersTo(n, x) { count++ } } for _, n := range scope { walk(n, ff) } return count } // rewriteUses replaces all uses of the identifier x and !x in scope // with f(x.Pos()) and fnot(x.Pos()). func rewriteUses(x *ast.Ident, f, fnot func(token.Pos) ast.Expr, scope []ast.Stmt) { var lastF ast.Expr ff := func(n interface{}) { ptr, ok := n.(*ast.Expr) if !ok { return } nn := *ptr // The child node was just walked and possibly replaced. // If it was replaced and this is a negation, replace with fnot(p). not, ok := nn.(*ast.UnaryExpr) if ok && not.Op == token.NOT && not.X == lastF { *ptr = fnot(nn.Pos()) return } if refersTo(nn, x) { lastF = f(nn.Pos()) *ptr = lastF } } for _, n := range scope { walk(n, ff) } } // assignsTo returns true if any of the code in scope assigns to or takes the address of x. func assignsTo(x *ast.Ident, scope []ast.Stmt) bool { assigned := false ff := func(n interface{}) { if assigned { return } switch n := n.(type) { case *ast.UnaryExpr: // use of &x if n.Op == token.AND && refersTo(n.X, x) { assigned = true return } case *ast.AssignStmt: for _, l := range n.Lhs { if refersTo(l, x) { assigned = true return } } } } for _, n := range scope { if assigned { break } walk(n, ff) } return assigned } // newPkgDot returns an ast.Expr referring to "pkg.name" at position pos. func newPkgDot(pos token.Pos, pkg, name string) ast.Expr { return &ast.SelectorExpr{ X: &ast.Ident{ NamePos: pos, Name: pkg, }, Sel: &ast.Ident{ NamePos: pos, Name: name, }, } } // renameTop renames all references to the top-level name old. // It returns true if it makes any changes. func renameTop(f *ast.File, old, new string) bool { var fixed bool // Rename any conflicting imports // (assuming package name is last element of path). for _, s := range f.Imports { if s.Name != nil { if s.Name.Name == old { s.Name.Name = new fixed = true } } else { _, thisName := path.Split(importPath(s)) if thisName == old { s.Name = ast.NewIdent(new) fixed = true } } } // Rename any top-level declarations. for _, d := range f.Decls { switch d := d.(type) { case *ast.FuncDecl: if d.Recv == nil && d.Name.Name == old { d.Name.Name = new d.Name.Obj.Name = new fixed = true } case *ast.GenDecl: for _, s := range d.Specs { switch s := s.(type) { case *ast.TypeSpec: if s.Name.Name == old { s.Name.Name = new s.Name.Obj.Name = new fixed = true } case *ast.ValueSpec: for _, n := range s.Names { if n.Name == old { n.Name = new n.Obj.Name = new fixed = true } } } } } } // Rename top-level old to new, both unresolved names // (probably defined in another file) and names that resolve // to a declaration we renamed. walk(f, func(n interface{}) { id, ok := n.(*ast.Ident) if ok && isTopName(id, old) { id.Name = new fixed = true } if ok && id.Obj != nil && id.Name == old && id.Obj.Name == new { id.Name = id.Obj.Name fixed = true } }) return fixed } // matchLen returns the length of the longest prefix shared by x and y. func matchLen(x, y string) int { i := 0 for i < len(x) && i < len(y) && x[i] == y[i] { i++ } return i } // addImport adds the import path to the file f, if absent. func addImport(f *ast.File, ipath string) (added bool) { if imports(f, ipath) { return false } // Determine name of import. // Assume added imports follow convention of using last element. _, name := path.Split(ipath) // Rename any conflicting top-level references from name to name_. renameTop(f, name, name+"_") newImport := &ast.ImportSpec{ Path: &ast.BasicLit{ Kind: token.STRING, Value: strconv.Quote(ipath), }, } // Find an import decl to add to. var ( bestMatch = -1 lastImport = -1 impDecl *ast.GenDecl impIndex = -1 ) for i, decl := range f.Decls { gen, ok := decl.(*ast.GenDecl) if ok && gen.Tok == token.IMPORT { lastImport = i // Do not add to import "C", to avoid disrupting the // association with its doc comment, breaking cgo. if declImports(gen, "C") { continue } // Compute longest shared prefix with imports in this block. for j, spec := range gen.Specs { impspec := spec.(*ast.ImportSpec) n := matchLen(importPath(impspec), ipath) if n > bestMatch { bestMatch = n impDecl = gen impIndex = j } } } } // If no import decl found, add one after the last import. if impDecl == nil { impDecl = &ast.GenDecl{ Tok: token.IMPORT, } f.Decls = append(f.Decls, nil) copy(f.Decls[lastImport+2:], f.Decls[lastImport+1:]) f.Decls[lastImport+1] = impDecl } // Ensure the import decl has parentheses, if needed. if len(impDecl.Specs) > 0 && !impDecl.Lparen.IsValid() { impDecl.Lparen = impDecl.Pos() } insertAt := impIndex + 1 if insertAt == 0 { insertAt = len(impDecl.Specs) } impDecl.Specs = append(impDecl.Specs, nil) copy(impDecl.Specs[insertAt+1:], impDecl.Specs[insertAt:]) impDecl.Specs[insertAt] = newImport if insertAt > 0 { // Assign same position as the previous import, // so that the sorter sees it as being in the same block. prev := impDecl.Specs[insertAt-1] newImport.Path.ValuePos = prev.Pos() newImport.EndPos = prev.Pos() } f.Imports = append(f.Imports, newImport) return true } // deleteImport deletes the import path from the file f, if present. func deleteImport(f *ast.File, path string) (deleted bool) { oldImport := importSpec(f, path) // Find the import node that imports path, if any. for i, decl := range f.Decls { gen, ok := decl.(*ast.GenDecl) if !ok || gen.Tok != token.IMPORT { continue } for j, spec := range gen.Specs { impspec := spec.(*ast.ImportSpec) if oldImport != impspec { continue } // We found an import spec that imports path. // Delete it. deleted = true copy(gen.Specs[j:], gen.Specs[j+1:]) gen.Specs = gen.Specs[:len(gen.Specs)-1] // If this was the last import spec in this decl, // delete the decl, too. if len(gen.Specs) == 0 { copy(f.Decls[i:], f.Decls[i+1:]) f.Decls = f.Decls[:len(f.Decls)-1] } else if len(gen.Specs) == 1 { gen.Lparen = token.NoPos // drop parens } if j > 0 { // We deleted an entry but now there will be // a blank line-sized hole where the import was. // Close the hole by making the previous // import appear to "end" where this one did. gen.Specs[j-1].(*ast.ImportSpec).EndPos = impspec.End() } break } } // Delete it from f.Imports. for i, imp := range f.Imports { if imp == oldImport { copy(f.Imports[i:], f.Imports[i+1:]) f.Imports = f.Imports[:len(f.Imports)-1] break } } return } // rewriteImport rewrites any import of path oldPath to path newPath. func rewriteImport(f *ast.File, oldPath, newPath string) (rewrote bool) { for _, imp := range f.Imports { if importPath(imp) == oldPath { rewrote = true // record old End, because the default is to compute // it using the length of imp.Path.Value. imp.EndPos = imp.End() imp.Path.Value = strconv.Quote(newPath) } } return } func usesImport(f *ast.File, path string) (used bool) { spec := importSpec(f, path) if spec == nil { return } name := spec.Name.String() switch name { case "": // If the package name is not explicitly specified, // make an educated guess. This is not guaranteed to be correct. lastSlash := strings.LastIndex(path, "/") if lastSlash == -1 { name = path } else { name = path[lastSlash+1:] } case "_", ".": // Not sure if this import is used - err on the side of caution. return true } walk(f, func(n interface{}) { sel, ok := n.(*ast.SelectorExpr) if ok && isTopName(sel.X, name) { used = true } }) return } func expr(s string) ast.Expr { x, err := parser.ParseExpr(s) if err != nil { panic("parsing " + s + ": " + err.Error()) } // Remove position information to avoid spurious newlines. killPos(reflect.ValueOf(x)) return x } var posType = reflect.TypeOf(token.Pos(0)) func killPos(v reflect.Value) { switch v.Kind() { case reflect.Ptr, reflect.Interface: if !v.IsNil() { killPos(v.Elem()) } case reflect.Slice: n := v.Len() for i := 0; i < n; i++ { killPos(v.Index(i)) } case reflect.Struct: n := v.NumField() for i := 0; i < n; i++ { f := v.Field(i) if f.Type() == posType { f.SetInt(0) continue } killPos(f) } } } // A Rename describes a single renaming. type rename struct { OldImport string // only apply rename if this import is present NewImport string // add this import during rewrite Old string // old name: p.T or *p.T New string // new name: p.T or *p.T } func renameFix(tab []rename) func(*ast.File) bool { return func(f *ast.File) bool { return renameFixTab(f, tab) } } func parseName(s string) (ptr bool, pkg, nam string) { i := strings.Index(s, ".") if i < 0 { panic("parseName: invalid name " + s) } if strings.HasPrefix(s, "*") { ptr = true s = s[1:] i-- } pkg = s[:i] nam = s[i+1:] return } func renameFixTab(f *ast.File, tab []rename) bool { fixed := false added := map[string]bool{} check := map[string]bool{} for _, t := range tab { if !imports(f, t.OldImport) { continue } optr, opkg, onam := parseName(t.Old) walk(f, func(n interface{}) { np, ok := n.(*ast.Expr) if !ok { return } x := *np if optr { p, ok := x.(*ast.StarExpr) if !ok { return } x = p.X } if !isPkgDot(x, opkg, onam) { return } if t.NewImport != "" && !added[t.NewImport] { addImport(f, t.NewImport) added[t.NewImport] = true } *np = expr(t.New) check[t.OldImport] = true fixed = true }) } for ipath := range check { if !usesImport(f, ipath) { deleteImport(f, ipath) } } return fixed } go/src/cmd/fix/import_test.go0100644000000000000000000001176012412656734016521 0ustar00rootroot00000000000000// Copyright 2011 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" func init() { addTestCases(importTests, nil) } var importTests = []testCase{ { Name: "import.0", Fn: addImportFn("os"), In: `package main import ( "os" ) `, Out: `package main import ( "os" ) `, }, { Name: "import.1", Fn: addImportFn("os"), In: `package main `, Out: `package main import "os" `, }, { Name: "import.2", Fn: addImportFn("os"), In: `package main // Comment import "C" `, Out: `package main // Comment import "C" import "os" `, }, { Name: "import.3", Fn: addImportFn("os"), In: `package main // Comment import "C" import ( "io" "utf8" ) `, Out: `package main // Comment import "C" import ( "io" "os" "utf8" ) `, }, { Name: "import.4", Fn: deleteImportFn("os"), In: `package main import ( "os" ) `, Out: `package main `, }, { Name: "import.5", Fn: deleteImportFn("os"), In: `package main // Comment import "C" import "os" `, Out: `package main // Comment import "C" `, }, { Name: "import.6", Fn: deleteImportFn("os"), In: `package main // Comment import "C" import ( "io" "os" "utf8" ) `, Out: `package main // Comment import "C" import ( "io" "utf8" ) `, }, { Name: "import.7", Fn: deleteImportFn("io"), In: `package main import ( "io" // a "os" // b "utf8" // c ) `, Out: `package main import ( // a "os" // b "utf8" // c ) `, }, { Name: "import.8", Fn: deleteImportFn("os"), In: `package main import ( "io" // a "os" // b "utf8" // c ) `, Out: `package main import ( "io" // a // b "utf8" // c ) `, }, { Name: "import.9", Fn: deleteImportFn("utf8"), In: `package main import ( "io" // a "os" // b "utf8" // c ) `, Out: `package main import ( "io" // a "os" // b // c ) `, }, { Name: "import.10", Fn: deleteImportFn("io"), In: `package main import ( "io" "os" "utf8" ) `, Out: `package main import ( "os" "utf8" ) `, }, { Name: "import.11", Fn: deleteImportFn("os"), In: `package main import ( "io" "os" "utf8" ) `, Out: `package main import ( "io" "utf8" ) `, }, { Name: "import.12", Fn: deleteImportFn("utf8"), In: `package main import ( "io" "os" "utf8" ) `, Out: `package main import ( "io" "os" ) `, }, { Name: "import.13", Fn: rewriteImportFn("utf8", "encoding/utf8"), In: `package main import ( "io" "os" "utf8" // thanks ken ) `, Out: `package main import ( "encoding/utf8" // thanks ken "io" "os" ) `, }, { Name: "import.14", Fn: rewriteImportFn("asn1", "encoding/asn1"), In: `package main import ( "asn1" "crypto" "crypto/rsa" _ "crypto/sha1" "crypto/x509" "crypto/x509/pkix" "time" ) var x = 1 `, Out: `package main import ( "crypto" "crypto/rsa" _ "crypto/sha1" "crypto/x509" "crypto/x509/pkix" "encoding/asn1" "time" ) var x = 1 `, }, { Name: "import.15", Fn: rewriteImportFn("url", "net/url"), In: `package main import ( "bufio" "net" "path" "url" ) var x = 1 // comment on x, not on url `, Out: `package main import ( "bufio" "net" "net/url" "path" ) var x = 1 // comment on x, not on url `, }, { Name: "import.16", Fn: rewriteImportFn("http", "net/http", "template", "text/template"), In: `package main import ( "flag" "http" "log" "template" ) var addr = flag.String("addr", ":1718", "http service address") // Q=17, R=18 `, Out: `package main import ( "flag" "log" "net/http" "text/template" ) var addr = flag.String("addr", ":1718", "http service address") // Q=17, R=18 `, }, { Name: "import.17", Fn: addImportFn("x/y/z", "x/a/c"), In: `package main // Comment import "C" import ( "a" "b" "x/w" "d/f" ) `, Out: `package main // Comment import "C" import ( "a" "b" "x/a/c" "x/w" "x/y/z" "d/f" ) `, }, { Name: "import.18", Fn: addDelImportFn("e", "o"), In: `package main import ( "f" "o" "z" ) `, Out: `package main import ( "e" "f" "z" ) `, }, } func addImportFn(path ...string) func(*ast.File) bool { return func(f *ast.File) bool { fixed := false for _, p := range path { if !imports(f, p) { addImport(f, p) fixed = true } } return fixed } } func deleteImportFn(path string) func(*ast.File) bool { return func(f *ast.File) bool { if imports(f, path) { deleteImport(f, path) return true } return false } } func addDelImportFn(p1 string, p2 string) func(*ast.File) bool { return func(f *ast.File) bool { fixed := false if !imports(f, p1) { addImport(f, p1) fixed = true } if imports(f, p2) { deleteImport(f, p2) fixed = true } return fixed } } func rewriteImportFn(oldnew ...string) func(*ast.File) bool { return func(f *ast.File) bool { fixed := false for i := 0; i < len(oldnew); i += 2 { if imports(f, oldnew[i]) { rewriteImport(f, oldnew[i], oldnew[i+1]) fixed = true } } return fixed } } go/src/cmd/fix/main.go0100644000000000000000000001250512412656734015072 0ustar00rootroot00000000000000// Copyright 2011 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 ( "bytes" "flag" "fmt" "go/ast" "go/format" "go/parser" "go/scanner" "go/token" "io/ioutil" "os" "os/exec" "path/filepath" "sort" "strings" ) var ( fset = token.NewFileSet() exitCode = 0 ) var allowedRewrites = flag.String("r", "", "restrict the rewrites to this comma-separated list") var forceRewrites = flag.String("force", "", "force these fixes to run even if the code looks updated") var allowed, force map[string]bool var doDiff = flag.Bool("diff", false, "display diffs instead of rewriting files") // enable for debugging fix failures const debug = false // display incorrectly reformatted source and exit func usage() { fmt.Fprintf(os.Stderr, "usage: go tool fix [-diff] [-r fixname,...] [-force fixname,...] [path ...]\n") flag.PrintDefaults() fmt.Fprintf(os.Stderr, "\nAvailable rewrites are:\n") sort.Sort(byName(fixes)) for _, f := range fixes { fmt.Fprintf(os.Stderr, "\n%s\n", f.name) desc := strings.TrimSpace(f.desc) desc = strings.Replace(desc, "\n", "\n\t", -1) fmt.Fprintf(os.Stderr, "\t%s\n", desc) } os.Exit(2) } func main() { flag.Usage = usage flag.Parse() sort.Sort(byDate(fixes)) if *allowedRewrites != "" { allowed = make(map[string]bool) for _, f := range strings.Split(*allowedRewrites, ",") { allowed[f] = true } } if *forceRewrites != "" { force = make(map[string]bool) for _, f := range strings.Split(*forceRewrites, ",") { force[f] = true } } if flag.NArg() == 0 { if err := processFile("standard input", true); err != nil { report(err) } os.Exit(exitCode) } for i := 0; i < flag.NArg(); i++ { path := flag.Arg(i) switch dir, err := os.Stat(path); { case err != nil: report(err) case dir.IsDir(): walkDir(path) default: if err := processFile(path, false); err != nil { report(err) } } } os.Exit(exitCode) } const parserMode = parser.ParseComments func gofmtFile(f *ast.File) ([]byte, error) { var buf bytes.Buffer if err := format.Node(&buf, fset, f); err != nil { return nil, err } return buf.Bytes(), nil } func processFile(filename string, useStdin bool) error { var f *os.File var err error var fixlog bytes.Buffer if useStdin { f = os.Stdin } else { f, err = os.Open(filename) if err != nil { return err } defer f.Close() } src, err := ioutil.ReadAll(f) if err != nil { return err } file, err := parser.ParseFile(fset, filename, src, parserMode) if err != nil { return err } // Apply all fixes to file. newFile := file fixed := false for _, fix := range fixes { if allowed != nil && !allowed[fix.name] { continue } if fix.f(newFile) { fixed = true fmt.Fprintf(&fixlog, " %s", fix.name) // AST changed. // Print and parse, to update any missing scoping // or position information for subsequent fixers. newSrc, err := gofmtFile(newFile) if err != nil { return err } newFile, err = parser.ParseFile(fset, filename, newSrc, parserMode) if err != nil { if debug { fmt.Printf("%s", newSrc) report(err) os.Exit(exitCode) } return err } } } if !fixed { return nil } fmt.Fprintf(os.Stderr, "%s: fixed %s\n", filename, fixlog.String()[1:]) // Print AST. We did that after each fix, so this appears // redundant, but it is necessary to generate gofmt-compatible // source code in a few cases. The official gofmt style is the // output of the printer run on a standard AST generated by the parser, // but the source we generated inside the loop above is the // output of the printer run on a mangled AST generated by a fixer. newSrc, err := gofmtFile(newFile) if err != nil { return err } if *doDiff { data, err := diff(src, newSrc) if err != nil { return fmt.Errorf("computing diff: %s", err) } fmt.Printf("diff %s fixed/%s\n", filename, filename) os.Stdout.Write(data) return nil } if useStdin { os.Stdout.Write(newSrc) return nil } return ioutil.WriteFile(f.Name(), newSrc, 0) } var gofmtBuf bytes.Buffer func gofmt(n interface{}) string { gofmtBuf.Reset() if err := format.Node(&gofmtBuf, fset, n); err != nil { return "<" + err.Error() + ">" } return gofmtBuf.String() } func report(err error) { scanner.PrintError(os.Stderr, err) exitCode = 2 } func walkDir(path string) { filepath.Walk(path, visitFile) } func visitFile(path string, f os.FileInfo, err error) error { if err == nil && isGoFile(f) { err = processFile(path, false) } if err != nil { report(err) } return nil } func isGoFile(f os.FileInfo) bool { // ignore non-Go files name := f.Name() return !f.IsDir() && !strings.HasPrefix(name, ".") && strings.HasSuffix(name, ".go") } func diff(b1, b2 []byte) (data []byte, err error) { f1, err := ioutil.TempFile("", "go-fix") if err != nil { return nil, err } defer os.Remove(f1.Name()) defer f1.Close() f2, err := ioutil.TempFile("", "go-fix") if err != nil { return nil, err } defer os.Remove(f2.Name()) defer f2.Close() f1.Write(b1) f2.Write(b2) data, err = exec.Command("diff", "-u", f1.Name(), f2.Name()).CombinedOutput() if len(data) > 0 { // diff exits with a non-zero status when the files don't match. // Ignore that failure as long as we get output. err = nil } return } go/src/cmd/fix/main_test.go0100644000000000000000000000520412412656734016127 0ustar00rootroot00000000000000// Copyright 2011 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" "go/parser" "strings" "testing" ) type testCase struct { Name string Fn func(*ast.File) bool In string Out string } var testCases []testCase func addTestCases(t []testCase, fn func(*ast.File) bool) { // Fill in fn to avoid repetition in definitions. if fn != nil { for i := range t { if t[i].Fn == nil { t[i].Fn = fn } } } testCases = append(testCases, t...) } func fnop(*ast.File) bool { return false } func parseFixPrint(t *testing.T, fn func(*ast.File) bool, desc, in string, mustBeGofmt bool) (out string, fixed, ok bool) { file, err := parser.ParseFile(fset, desc, in, parserMode) if err != nil { t.Errorf("%s: parsing: %v", desc, err) return } outb, err := gofmtFile(file) if err != nil { t.Errorf("%s: printing: %v", desc, err) return } if s := string(outb); in != s && mustBeGofmt { t.Errorf("%s: not gofmt-formatted.\n--- %s\n%s\n--- %s | gofmt\n%s", desc, desc, in, desc, s) tdiff(t, in, s) return } if fn == nil { for _, fix := range fixes { if fix.f(file) { fixed = true } } } else { fixed = fn(file) } outb, err = gofmtFile(file) if err != nil { t.Errorf("%s: printing: %v", desc, err) return } return string(outb), fixed, true } func TestRewrite(t *testing.T) { for _, tt := range testCases { // Apply fix: should get tt.Out. out, fixed, ok := parseFixPrint(t, tt.Fn, tt.Name, tt.In, true) if !ok { continue } // reformat to get printing right out, _, ok = parseFixPrint(t, fnop, tt.Name, out, false) if !ok { continue } if out != tt.Out { t.Errorf("%s: incorrect output.\n", tt.Name) if !strings.HasPrefix(tt.Name, "testdata/") { t.Errorf("--- have\n%s\n--- want\n%s", out, tt.Out) } tdiff(t, out, tt.Out) continue } if changed := out != tt.In; changed != fixed { t.Errorf("%s: changed=%v != fixed=%v", tt.Name, changed, fixed) continue } // Should not change if run again. out2, fixed2, ok := parseFixPrint(t, tt.Fn, tt.Name+" output", out, true) if !ok { continue } if fixed2 { t.Errorf("%s: applied fixes during second round", tt.Name) continue } if out2 != out { t.Errorf("%s: changed output after second round of fixes.\n--- output after first round\n%s\n--- output after second round\n%s", tt.Name, out, out2) tdiff(t, out, out2) } } } func tdiff(t *testing.T, a, b string) { data, err := diff([]byte(a), []byte(b)) if err != nil { t.Error(err) return } t.Error(string(data)) } go/src/cmd/fix/netipv6zone.go0100644000000000000000000000246012412656734016434 0ustar00rootroot00000000000000// 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 import "go/ast" func init() { register(netipv6zoneFix) } var netipv6zoneFix = fix{ "netipv6zone", "2012-11-26", netipv6zone, `Adapt element key to IPAddr, UDPAddr or TCPAddr composite literals. https://codereview.appspot.com/6849045/ `, } func netipv6zone(f *ast.File) bool { if !imports(f, "net") { return false } fixed := false walk(f, func(n interface{}) { cl, ok := n.(*ast.CompositeLit) if !ok { return } se, ok := cl.Type.(*ast.SelectorExpr) if !ok { return } if !isTopName(se.X, "net") || se.Sel == nil { return } switch ss := se.Sel.String(); ss { case "IPAddr", "UDPAddr", "TCPAddr": for i, e := range cl.Elts { if _, ok := e.(*ast.KeyValueExpr); ok { break } switch i { case 0: cl.Elts[i] = &ast.KeyValueExpr{ Key: ast.NewIdent("IP"), Value: e, } case 1: if elit, ok := e.(*ast.BasicLit); ok && elit.Value == "0" { cl.Elts = append(cl.Elts[:i], cl.Elts[i+1:]...) } else { cl.Elts[i] = &ast.KeyValueExpr{ Key: ast.NewIdent("Port"), Value: e, } } } fixed = true } } }) return fixed } go/src/cmd/fix/netipv6zone_test.go0100644000000000000000000000150612412656734017473 0ustar00rootroot00000000000000// 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(netipv6zoneTests, netipv6zone) } var netipv6zoneTests = []testCase{ { Name: "netipv6zone.0", In: `package main import "net" func f() net.Addr { a := &net.IPAddr{ip1} sub(&net.UDPAddr{ip2, 12345}) c := &net.TCPAddr{IP: ip3, Port: 54321} d := &net.TCPAddr{ip4, 0} p := 1234 e := &net.TCPAddr{ip4, p} return &net.TCPAddr{ip5}, nil } `, Out: `package main import "net" func f() net.Addr { a := &net.IPAddr{IP: ip1} sub(&net.UDPAddr{IP: ip2, Port: 12345}) c := &net.TCPAddr{IP: ip3, Port: 54321} d := &net.TCPAddr{IP: ip4} p := 1234 e := &net.TCPAddr{IP: ip4, Port: p} return &net.TCPAddr{IP: ip5}, nil } `, }, } go/src/cmd/fix/printerconfig.go0100644000000000000000000000213612412656734017016 0ustar00rootroot00000000000000// 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 import "go/ast" func init() { register(printerconfigFix) } var printerconfigFix = fix{ "printerconfig", "2012-12-11", printerconfig, `Add element keys to Config composite literals.`, } func printerconfig(f *ast.File) bool { if !imports(f, "go/printer") { return false } fixed := false walk(f, func(n interface{}) { cl, ok := n.(*ast.CompositeLit) if !ok { return } se, ok := cl.Type.(*ast.SelectorExpr) if !ok { return } if !isTopName(se.X, "printer") || se.Sel == nil { return } if ss := se.Sel.String(); ss == "Config" { for i, e := range cl.Elts { if _, ok := e.(*ast.KeyValueExpr); ok { break } switch i { case 0: cl.Elts[i] = &ast.KeyValueExpr{ Key: ast.NewIdent("Mode"), Value: e, } case 1: cl.Elts[i] = &ast.KeyValueExpr{ Key: ast.NewIdent("Tabwidth"), Value: e, } } fixed = true } } }) return fixed } go/src/cmd/fix/printerconfig_test.go0100644000000000000000000000135512412656734020057 0ustar00rootroot00000000000000// 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(printerconfigTests, printerconfig) } var printerconfigTests = []testCase{ { Name: "printerconfig.0", In: `package main import "go/printer" func f() printer.Config { b := printer.Config{0, 8} c := &printer.Config{0} d := &printer.Config{Tabwidth: 8, Mode: 0} return printer.Config{0, 8} } `, Out: `package main import "go/printer" func f() printer.Config { b := printer.Config{Mode: 0, Tabwidth: 8} c := &printer.Config{Mode: 0} d := &printer.Config{Tabwidth: 8, Mode: 0} return printer.Config{Mode: 0, Tabwidth: 8} } `, }, } go/src/cmd/fix/typecheck.go0100644000000000000000000004032212412656734016123 0ustar00rootroot00000000000000// Copyright 2011 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 ( "fmt" "go/ast" "go/token" "os" "reflect" "strings" ) // Partial type checker. // // The fact that it is partial is very important: the input is // an AST and a description of some type information to // assume about one or more packages, but not all the // packages that the program imports. The checker is // expected to do as much as it can with what it has been // given. There is not enough information supplied to do // a full type check, but the type checker is expected to // apply information that can be derived from variable // declarations, function and method returns, and type switches // as far as it can, so that the caller can still tell the types // of expression relevant to a particular fix. // // TODO(rsc,gri): Replace with go/typechecker. // Doing that could be an interesting test case for go/typechecker: // the constraints about working with partial information will // likely exercise it in interesting ways. The ideal interface would // be to pass typecheck a map from importpath to package API text // (Go source code), but for now we use data structures (TypeConfig, Type). // // The strings mostly use gofmt form. // // A Field or FieldList has as its type a comma-separated list // of the types of the fields. For example, the field list // x, y, z int // has type "int, int, int". // The prefix "type " is the type of a type. // For example, given // var x int // type T int // x's type is "int" but T's type is "type int". // mkType inserts the "type " prefix. // getType removes it. // isType tests for it. func mkType(t string) string { return "type " + t } func getType(t string) string { if !isType(t) { return "" } return t[len("type "):] } func isType(t string) bool { return strings.HasPrefix(t, "type ") } // TypeConfig describes the universe of relevant types. // For ease of creation, the types are all referred to by string // name (e.g., "reflect.Value"). TypeByName is the only place // where the strings are resolved. type TypeConfig struct { Type map[string]*Type Var map[string]string Func map[string]string } // typeof returns the type of the given name, which may be of // the form "x" or "p.X". func (cfg *TypeConfig) typeof(name string) string { if cfg.Var != nil { if t := cfg.Var[name]; t != "" { return t } } if cfg.Func != nil { if t := cfg.Func[name]; t != "" { return "func()" + t } } return "" } // Type describes the Fields and Methods of a type. // If the field or method cannot be found there, it is next // looked for in the Embed list. type Type struct { Field map[string]string // map field name to type Method map[string]string // map method name to comma-separated return types (should start with "func ") Embed []string // list of types this type embeds (for extra methods) Def string // definition of named type } // dot returns the type of "typ.name", making its decision // using the type information in cfg. func (typ *Type) dot(cfg *TypeConfig, name string) string { if typ.Field != nil { if t := typ.Field[name]; t != "" { return t } } if typ.Method != nil { if t := typ.Method[name]; t != "" { return t } } for _, e := range typ.Embed { etyp := cfg.Type[e] if etyp != nil { if t := etyp.dot(cfg, name); t != "" { return t } } } return "" } // typecheck type checks the AST f assuming the information in cfg. // It returns two maps with type information: // typeof maps AST nodes to type information in gofmt string form. // assign maps type strings to lists of expressions that were assigned // to values of another type that were assigned to that type. func typecheck(cfg *TypeConfig, f *ast.File) (typeof map[interface{}]string, assign map[string][]interface{}) { typeof = make(map[interface{}]string) assign = make(map[string][]interface{}) cfg1 := &TypeConfig{} *cfg1 = *cfg // make copy so we can add locally copied := false // gather function declarations for _, decl := range f.Decls { fn, ok := decl.(*ast.FuncDecl) if !ok { continue } typecheck1(cfg, fn.Type, typeof, assign) t := typeof[fn.Type] if fn.Recv != nil { // The receiver must be a type. rcvr := typeof[fn.Recv] if !isType(rcvr) { if len(fn.Recv.List) != 1 { continue } rcvr = mkType(gofmt(fn.Recv.List[0].Type)) typeof[fn.Recv.List[0].Type] = rcvr } rcvr = getType(rcvr) if rcvr != "" && rcvr[0] == '*' { rcvr = rcvr[1:] } typeof[rcvr+"."+fn.Name.Name] = t } else { if isType(t) { t = getType(t) } else { t = gofmt(fn.Type) } typeof[fn.Name] = t // Record typeof[fn.Name.Obj] for future references to fn.Name. typeof[fn.Name.Obj] = t } } // gather struct declarations for _, decl := range f.Decls { d, ok := decl.(*ast.GenDecl) if ok { for _, s := range d.Specs { switch s := s.(type) { case *ast.TypeSpec: if cfg1.Type[s.Name.Name] != nil { break } if !copied { copied = true // Copy map lazily: it's time. cfg1.Type = make(map[string]*Type) for k, v := range cfg.Type { cfg1.Type[k] = v } } t := &Type{Field: map[string]string{}} cfg1.Type[s.Name.Name] = t switch st := s.Type.(type) { case *ast.StructType: for _, f := range st.Fields.List { for _, n := range f.Names { t.Field[n.Name] = gofmt(f.Type) } } case *ast.ArrayType, *ast.StarExpr, *ast.MapType: t.Def = gofmt(st) } } } } } typecheck1(cfg1, f, typeof, assign) return typeof, assign } func makeExprList(a []*ast.Ident) []ast.Expr { var b []ast.Expr for _, x := range a { b = append(b, x) } return b } // Typecheck1 is the recursive form of typecheck. // It is like typecheck but adds to the information in typeof // instead of allocating a new map. func typecheck1(cfg *TypeConfig, f interface{}, typeof map[interface{}]string, assign map[string][]interface{}) { // set sets the type of n to typ. // If isDecl is true, n is being declared. set := func(n ast.Expr, typ string, isDecl bool) { if typeof[n] != "" || typ == "" { if typeof[n] != typ { assign[typ] = append(assign[typ], n) } return } typeof[n] = typ // If we obtained typ from the declaration of x // propagate the type to all the uses. // The !isDecl case is a cheat here, but it makes // up in some cases for not paying attention to // struct fields. The real type checker will be // more accurate so we won't need the cheat. if id, ok := n.(*ast.Ident); ok && id.Obj != nil && (isDecl || typeof[id.Obj] == "") { typeof[id.Obj] = typ } } // Type-check an assignment lhs = rhs. // If isDecl is true, this is := so we can update // the types of the objects that lhs refers to. typecheckAssign := func(lhs, rhs []ast.Expr, isDecl bool) { if len(lhs) > 1 && len(rhs) == 1 { if _, ok := rhs[0].(*ast.CallExpr); ok { t := split(typeof[rhs[0]]) // Lists should have same length but may not; pair what can be paired. for i := 0; i < len(lhs) && i < len(t); i++ { set(lhs[i], t[i], isDecl) } return } } if len(lhs) == 1 && len(rhs) == 2 { // x = y, ok rhs = rhs[:1] } else if len(lhs) == 2 && len(rhs) == 1 { // x, ok = y lhs = lhs[:1] } // Match as much as we can. for i := 0; i < len(lhs) && i < len(rhs); i++ { x, y := lhs[i], rhs[i] if typeof[y] != "" { set(x, typeof[y], isDecl) } else { set(y, typeof[x], false) } } } expand := func(s string) string { typ := cfg.Type[s] if typ != nil && typ.Def != "" { return typ.Def } return s } // The main type check is a recursive algorithm implemented // by walkBeforeAfter(n, before, after). // Most of it is bottom-up, but in a few places we need // to know the type of the function we are checking. // The before function records that information on // the curfn stack. var curfn []*ast.FuncType before := func(n interface{}) { // push function type on stack switch n := n.(type) { case *ast.FuncDecl: curfn = append(curfn, n.Type) case *ast.FuncLit: curfn = append(curfn, n.Type) } } // After is the real type checker. after := func(n interface{}) { if n == nil { return } if false && reflect.TypeOf(n).Kind() == reflect.Ptr { // debugging trace defer func() { if t := typeof[n]; t != "" { pos := fset.Position(n.(ast.Node).Pos()) fmt.Fprintf(os.Stderr, "%s: typeof[%s] = %s\n", pos, gofmt(n), t) } }() } switch n := n.(type) { case *ast.FuncDecl, *ast.FuncLit: // pop function type off stack curfn = curfn[:len(curfn)-1] case *ast.FuncType: typeof[n] = mkType(joinFunc(split(typeof[n.Params]), split(typeof[n.Results]))) case *ast.FieldList: // Field list is concatenation of sub-lists. t := "" for _, field := range n.List { if t != "" { t += ", " } t += typeof[field] } typeof[n] = t case *ast.Field: // Field is one instance of the type per name. all := "" t := typeof[n.Type] if !isType(t) { // Create a type, because it is typically *T or *p.T // and we might care about that type. t = mkType(gofmt(n.Type)) typeof[n.Type] = t } t = getType(t) if len(n.Names) == 0 { all = t } else { for _, id := range n.Names { if all != "" { all += ", " } all += t typeof[id.Obj] = t typeof[id] = t } } typeof[n] = all case *ast.ValueSpec: // var declaration. Use type if present. if n.Type != nil { t := typeof[n.Type] if !isType(t) { t = mkType(gofmt(n.Type)) typeof[n.Type] = t } t = getType(t) for _, id := range n.Names { set(id, t, true) } } // Now treat same as assignment. typecheckAssign(makeExprList(n.Names), n.Values, true) case *ast.AssignStmt: typecheckAssign(n.Lhs, n.Rhs, n.Tok == token.DEFINE) case *ast.Ident: // Identifier can take its type from underlying object. if t := typeof[n.Obj]; t != "" { typeof[n] = t } case *ast.SelectorExpr: // Field or method. name := n.Sel.Name if t := typeof[n.X]; t != "" { t = strings.TrimPrefix(t, "*") // implicit * if typ := cfg.Type[t]; typ != nil { if t := typ.dot(cfg, name); t != "" { typeof[n] = t return } } tt := typeof[t+"."+name] if isType(tt) { typeof[n] = getType(tt) return } } // Package selector. if x, ok := n.X.(*ast.Ident); ok && x.Obj == nil { str := x.Name + "." + name if cfg.Type[str] != nil { typeof[n] = mkType(str) return } if t := cfg.typeof(x.Name + "." + name); t != "" { typeof[n] = t return } } case *ast.CallExpr: // make(T) has type T. if isTopName(n.Fun, "make") && len(n.Args) >= 1 { typeof[n] = gofmt(n.Args[0]) return } // new(T) has type *T if isTopName(n.Fun, "new") && len(n.Args) == 1 { typeof[n] = "*" + gofmt(n.Args[0]) return } // Otherwise, use type of function to determine arguments. t := typeof[n.Fun] in, out := splitFunc(t) if in == nil && out == nil { return } typeof[n] = join(out) for i, arg := range n.Args { if i >= len(in) { break } if typeof[arg] == "" { typeof[arg] = in[i] } } case *ast.TypeAssertExpr: // x.(type) has type of x. if n.Type == nil { typeof[n] = typeof[n.X] return } // x.(T) has type T. if t := typeof[n.Type]; isType(t) { typeof[n] = getType(t) } else { typeof[n] = gofmt(n.Type) } case *ast.SliceExpr: // x[i:j] has type of x. typeof[n] = typeof[n.X] case *ast.IndexExpr: // x[i] has key type of x's type. t := expand(typeof[n.X]) if strings.HasPrefix(t, "[") || strings.HasPrefix(t, "map[") { // Lazy: assume there are no nested [] in the array // length or map key type. if i := strings.Index(t, "]"); i >= 0 { typeof[n] = t[i+1:] } } case *ast.StarExpr: // *x for x of type *T has type T when x is an expr. // We don't use the result when *x is a type, but // compute it anyway. t := expand(typeof[n.X]) if isType(t) { typeof[n] = "type *" + getType(t) } else if strings.HasPrefix(t, "*") { typeof[n] = t[len("*"):] } case *ast.UnaryExpr: // &x for x of type T has type *T. t := typeof[n.X] if t != "" && n.Op == token.AND { typeof[n] = "*" + t } case *ast.CompositeLit: // T{...} has type T. typeof[n] = gofmt(n.Type) case *ast.ParenExpr: // (x) has type of x. typeof[n] = typeof[n.X] case *ast.RangeStmt: t := expand(typeof[n.X]) if t == "" { return } var key, value string if t == "string" { key, value = "int", "rune" } else if strings.HasPrefix(t, "[") { key = "int" if i := strings.Index(t, "]"); i >= 0 { value = t[i+1:] } } else if strings.HasPrefix(t, "map[") { if i := strings.Index(t, "]"); i >= 0 { key, value = t[4:i], t[i+1:] } } changed := false if n.Key != nil && key != "" { changed = true set(n.Key, key, n.Tok == token.DEFINE) } if n.Value != nil && value != "" { changed = true set(n.Value, value, n.Tok == token.DEFINE) } // Ugly failure of vision: already type-checked body. // Do it again now that we have that type info. if changed { typecheck1(cfg, n.Body, typeof, assign) } case *ast.TypeSwitchStmt: // Type of variable changes for each case in type switch, // but go/parser generates just one variable. // Repeat type check for each case with more precise // type information. as, ok := n.Assign.(*ast.AssignStmt) if !ok { return } varx, ok := as.Lhs[0].(*ast.Ident) if !ok { return } t := typeof[varx] for _, cas := range n.Body.List { cas := cas.(*ast.CaseClause) if len(cas.List) == 1 { // Variable has specific type only when there is // exactly one type in the case list. if tt := typeof[cas.List[0]]; isType(tt) { tt = getType(tt) typeof[varx] = tt typeof[varx.Obj] = tt typecheck1(cfg, cas.Body, typeof, assign) } } } // Restore t. typeof[varx] = t typeof[varx.Obj] = t case *ast.ReturnStmt: if len(curfn) == 0 { // Probably can't happen. return } f := curfn[len(curfn)-1] res := n.Results if f.Results != nil { t := split(typeof[f.Results]) for i := 0; i < len(res) && i < len(t); i++ { set(res[i], t[i], false) } } } } walkBeforeAfter(f, before, after) } // Convert between function type strings and lists of types. // Using strings makes this a little harder, but it makes // a lot of the rest of the code easier. This will all go away // when we can use go/typechecker directly. // splitFunc splits "func(x,y,z) (a,b,c)" into ["x", "y", "z"] and ["a", "b", "c"]. func splitFunc(s string) (in, out []string) { if !strings.HasPrefix(s, "func(") { return nil, nil } i := len("func(") // index of beginning of 'in' arguments nparen := 0 for j := i; j < len(s); j++ { switch s[j] { case '(': nparen++ case ')': nparen-- if nparen < 0 { // found end of parameter list out := strings.TrimSpace(s[j+1:]) if len(out) >= 2 && out[0] == '(' && out[len(out)-1] == ')' { out = out[1 : len(out)-1] } return split(s[i:j]), split(out) } } } return nil, nil } // joinFunc is the inverse of splitFunc. func joinFunc(in, out []string) string { outs := "" if len(out) == 1 { outs = " " + out[0] } else if len(out) > 1 { outs = " (" + join(out) + ")" } return "func(" + join(in) + ")" + outs } // split splits "int, float" into ["int", "float"] and splits "" into []. func split(s string) []string { out := []string{} i := 0 // current type being scanned is s[i:j]. nparen := 0 for j := 0; j < len(s); j++ { switch s[j] { case ' ': if i == j { i++ } case '(': nparen++ case ')': nparen-- if nparen < 0 { // probably can't happen return nil } case ',': if nparen == 0 { if i < j { out = append(out, s[i:j]) } i = j + 1 } } } if nparen != 0 { // probably can't happen return nil } if i < len(s) { out = append(out, s[i:]) } return out } // join is the inverse of split. func join(x []string) string { return strings.Join(x, ", ") } go/src/cmd/gc0040755000000000000000000000000012412656737013346 5ustar00rootroot00000000000000go/src/cmd/gc/Makefile0100644000000000000000000000113112412656734015053 0ustar00rootroot00000000000000# 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. include ../../Make.dist install: y.tab.h builtin.c y.tab.h: go.y go.errors bisonerrors bison -v -y -d go.y # make yystate global, yytname mutable cat y.tab.c | sed '/ int yystate;/d; s/int yychar;/int yychar, yystate;/; s/static const char \*const yytname/const char *yytname/; s/char const \*yymsgp/char *yymsgp/' >y1.tab.c mv y1.tab.c y.tab.c awk -f bisonerrors y.output go.errors >yerr.h builtin.c: runtime.go unsafe.go ./mkbuiltin go/src/cmd/gc/align.c0100644000000000000000000003273112412656737014666 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" /* * machine size and rounding * alignment is dictated around * the size of a pointer, set in betypeinit * (see ../6g/galign.c). */ static int defercalc; vlong rnd(vlong o, vlong r) { if(r < 1 || r > 8 || (r&(r-1)) != 0) fatal("rnd"); return (o+r-1)&~(r-1); } static void offmod(Type *t) { Type *f; int32 o; o = 0; for(f=t->type; f!=T; f=f->down) { if(f->etype != TFIELD) fatal("offmod: not TFIELD: %lT", f); f->width = o; o += widthptr; if(o >= MAXWIDTH) { yyerror("interface too large"); o = widthptr; } } } static vlong widstruct(Type *errtype, Type *t, vlong o, int flag) { Type *f; int64 w; int32 maxalign; maxalign = flag; if(maxalign < 1) maxalign = 1; for(f=t->type; f!=T; f=f->down) { if(f->etype != TFIELD) fatal("widstruct: not TFIELD: %lT", f); if(f->type == T) { // broken field, just skip it so that other valid fields // get a width. continue; } dowidth(f->type); if(f->type->align > maxalign) maxalign = f->type->align; if(f->type->width < 0) fatal("invalid width %lld", f->type->width); w = f->type->width; if(f->type->align > 0) o = rnd(o, f->type->align); f->width = o; // really offset for TFIELD if(f->nname != N) { // this same stackparam logic is in addrescapes // in typecheck.c. usually addrescapes runs after // widstruct, in which case we could drop this, // but function closure functions are the exception. if(f->nname->stackparam) { f->nname->stackparam->xoffset = o; f->nname->xoffset = 0; } else f->nname->xoffset = o; } o += w; if(o >= MAXWIDTH) { yyerror("type %lT too large", errtype); o = 8; // small but nonzero } } // final width is rounded if(flag) o = rnd(o, maxalign); t->align = maxalign; // type width only includes back to first field's offset if(t->type == T) t->width = 0; else t->width = o - t->type->width; return o; } void dowidth(Type *t) { int32 et; int64 w; int lno; Type *t1; if(widthptr == 0) fatal("dowidth without betypeinit"); if(t == T) return; if(t->width > 0) return; if(t->width == -2) { lno = lineno; lineno = t->lineno; if(!t->broke) yyerror("invalid recursive type %T", t); t->width = 0; lineno = lno; return; } // defer checkwidth calls until after we're done defercalc++; lno = lineno; lineno = t->lineno; t->width = -2; t->align = 0; et = t->etype; switch(et) { case TFUNC: case TCHAN: case TMAP: case TSTRING: break; default: /* simtype == 0 during bootstrap */ if(simtype[t->etype] != 0) et = simtype[t->etype]; break; } w = 0; switch(et) { default: fatal("dowidth: unknown type: %T", t); break; /* compiler-specific stuff */ case TINT8: case TUINT8: case TBOOL: // bool is int8 w = 1; break; case TINT16: case TUINT16: w = 2; break; case TINT32: case TUINT32: case TFLOAT32: w = 4; break; case TINT64: case TUINT64: case TFLOAT64: case TCOMPLEX64: w = 8; t->align = widthreg; break; case TCOMPLEX128: w = 16; t->align = widthreg; break; case TPTR32: w = 4; checkwidth(t->type); break; case TPTR64: w = 8; checkwidth(t->type); break; case TUNSAFEPTR: w = widthptr; break; case TINTER: // implemented as 2 pointers w = 2*widthptr; t->align = widthptr; offmod(t); break; case TCHAN: // implemented as pointer w = widthptr; checkwidth(t->type); // make fake type to check later to // trigger channel argument check. t1 = typ(TCHANARGS); t1->type = t; checkwidth(t1); break; case TCHANARGS: t1 = t->type; dowidth(t->type); // just in case if(t1->type->width >= (1<<16)) yyerror("channel element type too large (>64kB)"); t->width = 1; break; case TMAP: // implemented as pointer w = widthptr; checkwidth(t->type); checkwidth(t->down); break; case TFORW: // should have been filled in if(!t->broke) yyerror("invalid recursive type %T", t); w = 1; // anything will do break; case TANY: // dummy type; should be replaced before use. if(!debug['A']) fatal("dowidth any"); w = 1; // anything will do break; case TSTRING: if(sizeof_String == 0) fatal("early dowidth string"); w = sizeof_String; t->align = widthptr; break; case TARRAY: if(t->type == T) break; if(t->bound >= 0) { uint64 cap; dowidth(t->type); if(t->type->width != 0) { cap = (MAXWIDTH-1) / t->type->width; if(t->bound > cap) yyerror("type %lT larger than address space", t); } w = t->bound * t->type->width; t->align = t->type->align; } else if(t->bound == -1) { w = sizeof_Array; checkwidth(t->type); t->align = widthptr; } else if(t->bound == -100) { if(!t->broke) { yyerror("use of [...] array outside of array literal"); t->broke = 1; } } else fatal("dowidth %T", t); // probably [...]T break; case TSTRUCT: if(t->funarg) fatal("dowidth fn struct %T", t); w = widstruct(t, t, 0, 1); break; case TFUNC: // make fake type to check later to // trigger function argument computation. t1 = typ(TFUNCARGS); t1->type = t; checkwidth(t1); // width of func type is pointer w = widthptr; break; case TFUNCARGS: // function is 3 cated structures; // compute their widths as side-effect. t1 = t->type; w = widstruct(t->type, *getthis(t1), 0, 0); w = widstruct(t->type, *getinarg(t1), w, widthreg); w = widstruct(t->type, *getoutarg(t1), w, widthreg); t1->argwid = w; if(w%widthreg) warn("bad type %T %d\n", t1, w); t->align = 1; break; } if(widthptr == 4 && w != (int32)w) yyerror("type %T too large", t); t->width = w; if(t->align == 0) { if(w > 8 || (w&(w-1)) != 0) fatal("invalid alignment for %T", t); t->align = w; } lineno = lno; if(defercalc == 1) resumecheckwidth(); else --defercalc; } /* * when a type's width should be known, we call checkwidth * to compute it. during a declaration like * * type T *struct { next T } * * it is necessary to defer the calculation of the struct width * until after T has been initialized to be a pointer to that struct. * similarly, during import processing structs may be used * before their definition. in those situations, calling * defercheckwidth() stops width calculations until * resumecheckwidth() is called, at which point all the * checkwidths that were deferred are executed. * dowidth should only be called when the type's size * is needed immediately. checkwidth makes sure the * size is evaluated eventually. */ typedef struct TypeList TypeList; struct TypeList { Type *t; TypeList *next; }; static TypeList *tlfree; static TypeList *tlq; void checkwidth(Type *t) { TypeList *l; if(t == T) return; // function arg structs should not be checked // outside of the enclosing function. if(t->funarg) fatal("checkwidth %T", t); if(!defercalc) { dowidth(t); return; } if(t->deferwidth) return; t->deferwidth = 1; l = tlfree; if(l != nil) tlfree = l->next; else l = mal(sizeof *l); l->t = t; l->next = tlq; tlq = l; } void defercheckwidth(void) { // we get out of sync on syntax errors, so don't be pedantic. if(defercalc && nerrors == 0) fatal("defercheckwidth"); defercalc = 1; } void resumecheckwidth(void) { TypeList *l; if(!defercalc) fatal("resumecheckwidth"); for(l = tlq; l != nil; l = tlq) { l->t->deferwidth = 0; tlq = l->next; dowidth(l->t); l->next = tlfree; tlfree = l; } defercalc = 0; } void typeinit(void) { int i, etype, sameas; Type *t; Sym *s, *s1; if(widthptr == 0) fatal("typeinit before betypeinit"); for(i=0; isym = pkglookup("Pointer", unsafepkg); t->sym->def = typenod(t); dowidth(types[TUNSAFEPTR]); tptr = TPTR32; if(widthptr == 8) tptr = TPTR64; for(i=TINT8; i<=TUINT64; i++) isint[i] = 1; isint[TINT] = 1; isint[TUINT] = 1; isint[TUINTPTR] = 1; isfloat[TFLOAT32] = 1; isfloat[TFLOAT64] = 1; iscomplex[TCOMPLEX64] = 1; iscomplex[TCOMPLEX128] = 1; isptr[TPTR32] = 1; isptr[TPTR64] = 1; isforw[TFORW] = 1; issigned[TINT] = 1; issigned[TINT8] = 1; issigned[TINT16] = 1; issigned[TINT32] = 1; issigned[TINT64] = 1; /* * initialize okfor */ for(i=0; i= nelem(types)) fatal("typeinit: %s bad etype", s->name); sameas = typedefs[i].sameas; if(sameas < 0 || sameas >= nelem(types)) fatal("typeinit: %s bad sameas", s->name); simtype[etype] = sameas; minfltval[etype] = minfltval[sameas]; maxfltval[etype] = maxfltval[sameas]; minintval[etype] = minintval[sameas]; maxintval[etype] = maxintval[sameas]; t = types[etype]; if(t != T) fatal("typeinit: %s already defined", s->name); t = typ(etype); t->sym = s1; dowidth(t); types[etype] = t; s1->def = typenod(t); } Array_array = rnd(0, widthptr); Array_nel = rnd(Array_array+widthptr, widthint); Array_cap = rnd(Array_nel+widthint, widthint); sizeof_Array = rnd(Array_cap+widthint, widthptr); // string is same as slice wo the cap sizeof_String = rnd(Array_nel+widthint, widthptr); dowidth(types[TSTRING]); dowidth(idealstring); } /* * compute total size of f's in/out arguments. */ int argsize(Type *t) { Iter save; Type *fp; int64 w, x; w = 0; fp = structfirst(&save, getoutarg(t)); while(fp != T) { x = fp->width + fp->type->width; if(x > w) w = x; fp = structnext(&save); } fp = funcfirst(&save, t); while(fp != T) { x = fp->width + fp->type->width; if(x > w) w = x; fp = funcnext(&save); } w = (w+widthptr-1) & ~(widthptr-1); if((int)w != w) fatal("argsize too big"); return w; } go/src/cmd/gc/array.c0100644000000000000000000000514412412656734014705 0ustar00rootroot00000000000000// Copyright 2013 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. #include #include #include "go.h" enum { DEFAULTCAPACITY = 16, }; struct Array { int32 length; // number of elements int32 size; // element size int32 capacity; // size of data in elements char *data; // element storage }; Array* arraynew(int32 capacity, int32 size) { Array *result; if(capacity < 0) fatal("arraynew: capacity %d is not positive", capacity); if(size < 0) fatal("arraynew: size %d is not positive\n", size); result = malloc(sizeof(*result)); if(result == nil) fatal("arraynew: malloc failed\n"); result->length = 0; result->size = size; result->capacity = capacity == 0 ? DEFAULTCAPACITY : capacity; result->data = malloc(result->capacity * result->size); if(result->data == nil) fatal("arraynew: malloc failed\n"); return result; } void arrayfree(Array *array) { if(array == nil) return; free(array->data); free(array); } int32 arraylength(Array *array) { return array->length; } void* arrayget(Array *array, int32 index) { if(array == nil) fatal("arrayget: array is nil\n"); if(index < 0 || index >= array->length) fatal("arrayget: index %d is out of bounds for length %d\n", index, array->length); return array->data + index * array->size; } void arrayset(Array *array, int32 index, void *element) { if(array == nil) fatal("arrayset: array is nil\n"); if(element == nil) fatal("arrayset: element is nil\n"); if(index < 0 || index >= array->length) fatal("arrayget: index %d is out of bounds for length %d\n", index, array->length); memmove(array->data + index * array->size, element, array->size); } static void ensurecapacity(Array *array, int32 capacity) { int32 newcapacity; char *newdata; if(array == nil) fatal("ensurecapacity: array is nil\n"); if(capacity < 0) fatal("ensurecapacity: capacity %d is not positive", capacity); if(capacity >= array->capacity) { newcapacity = capacity + (capacity >> 1); newdata = realloc(array->data, newcapacity * array->size); if(newdata == nil) fatal("ensurecapacity: realloc failed\n"); array->capacity = newcapacity; array->data = newdata; } } void arrayadd(Array *array, void *element) { if(array == nil) fatal("arrayset: array is nil\n"); if(element == nil) fatal("arrayset: element is nil\n"); ensurecapacity(array, array->length + 1); array->length++; arrayset(array, array->length - 1, element); } void arraysort(Array *array, int (*cmp)(const void*, const void*)) { qsort(array->data, array->length, array->size, cmp); } go/src/cmd/gc/bisonerrors0100755000000000000000000000651112412656737015722 0ustar00rootroot00000000000000#!/usr/bin/awk -f # 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. # This program implements the core idea from # # Clinton L. Jeffery, Generating LR syntax error messages from examples, # ACM TOPLAS 25(5) (September 2003). http://doi.acm.org/10.1145/937563.937566 # # It reads Bison's summary of a grammar followed by a file # like go.errors, replacing lines beginning with % by the # yystate and yychar that will be active when an error happens # while parsing that line. # # Unlike the system described in the paper, the lines in go.errors # give grammar symbol name lists, not actual program fragments. # This is a little less programmer-friendly but doesn't require being # able to run the text through lex.c. BEGIN{ bison = 1 grammar = 0 states = 0 } # In Grammar section of y.output, # record lhs and length of rhs for each rule. bison && /^Grammar/ { grammar = 1 } bison && /^(Terminals|state 0)/ { grammar = 0 } grammar && NF>0 { if($2 != "|") { r = $2 sub(/:$/, "", r) } rulelhs[$1] = r rulesize[$1] = NF-2 if(rulesize[$1] == 1 && $3 == "%empty") { rulesize[$1] = 0 } if(rulesize[$1] == 3 && $3 $4 $5 == "/*empty*/") { rulesize[$1] = 0 } } # In state dumps, record shift/reduce actions. bison && /^[Ss]tate 0/ { grammar = 0; states = 1 } states && /^[Ss]tate / { state = $2 } states { statetext[state] = statetext[state] $0 "\n" } states && / shift/ { n = nshift[state]++ if($0 ~ /and go to/) shift[state,n] = $7 # GNU Bison else shift[state,n] = $3 # Plan 9 Yacc shifttoken[state,n] = $1 next } states && / (go to|goto)/ { n = nshift[state]++ if($0 ~ /go to/) shift[state,n] = $5 # GNU Bison else shift[state,n] = $3 # Plan 9 Yacc shifttoken[state,n] = $1 next } states && / reduce/ { n = nreduce[state]++ if($0 ~ /reduce using rule/) reduce[state,n] = $5 # GNU Bison else reduce[state,n] = $3 # Plan 9 yacc reducetoken[state,n] = $1 next } # Skip over the summary information printed by Plan 9 yacc. /nonterminals$/,/^maximum spread/ { next } # First // comment marks the beginning of the pattern file. /^\/\// { bison = 0; grammar = 0; state = 0 } bison { next } # Treat % as first field on line as introducing a pattern (token sequence). # Run it through the LR machine and print the induced "yystate, yychar," # at the point where the error happens. $1 == "%" { nstack = 0 state = 0 f = 2 tok = "" for(;;) { if(tok == "" && f <= NF) { tok = $f f++ } found = 0 for(j=0; j " shift[state,j] stack[nstack++] = state state = shift[state,j] found = 1 tok = "" break } } if(found) continue for(j=0; j #include #include "go.h" /* Bits bor(Bits a, Bits b) { Bits c; int i; for(i=0; ib[i]) return 1; return 0; } /* int beq(Bits a, Bits b) { int i; for(i=0; iargs, Bits); while(bany(&bits)) { i = bnum(bits); if(first) first = 0; else fmtprint(fp, " "); if(var[i].node == N || var[i].node->sym == S) fmtprint(fp, "$%d", i); else { fmtprint(fp, "%s(%d)", var[i].node->sym->name, i); if(var[i].offset != 0) fmtprint(fp, "%+lld", (vlong)var[i].offset); } bits.b[i/32] &= ~(1L << (i%32)); } return 0; } go/src/cmd/gc/builtin.c0100644000000000000000000002173512412656737015244 0ustar00rootroot00000000000000// AUTO-GENERATED by mkbuiltin; DO NOT EDIT char *runtimeimport = "package runtime\n" "import runtime \"runtime\"\n" "func @\"\".new (@\"\".typ·2 *byte) (? *any)\n" "func @\"\".panicindex ()\n" "func @\"\".panicslice ()\n" "func @\"\".panicdivide ()\n" "func @\"\".throwreturn ()\n" "func @\"\".throwinit ()\n" "func @\"\".panicwrap (? string, ? string, ? string)\n" "func @\"\".panic (? interface {})\n" "func @\"\".recover (? *int32) (? interface {})\n" "func @\"\".printbool (? bool)\n" "func @\"\".printfloat (? float64)\n" "func @\"\".printint (? int64)\n" "func @\"\".printuint (? uint64)\n" "func @\"\".printcomplex (? complex128)\n" "func @\"\".printstring (? string)\n" "func @\"\".printpointer (? any)\n" "func @\"\".printiface (? any)\n" "func @\"\".printeface (? any)\n" "func @\"\".printslice (? any)\n" "func @\"\".printnl ()\n" "func @\"\".printsp ()\n" "func @\"\".goprintf ()\n" "func @\"\".concatstring2 (? string, ? string) (? string)\n" "func @\"\".concatstring3 (? string, ? string, ? string) (? string)\n" "func @\"\".concatstring4 (? string, ? string, ? string, ? string) (? string)\n" "func @\"\".concatstring5 (? string, ? string, ? string, ? string, ? string) (? string)\n" "func @\"\".concatstrings (? []string) (? string)\n" "func @\"\".cmpstring (? string, ? string) (? int)\n" "func @\"\".eqstring (? string, ? string) (? bool)\n" "func @\"\".intstring (? int64) (? string)\n" "func @\"\".slicebytetostring (? []byte) (? string)\n" "func @\"\".slicebytetostringtmp (? []byte) (? string)\n" "func @\"\".slicerunetostring (? []rune) (? string)\n" "func @\"\".stringtoslicebyte (? string) (? []byte)\n" "func @\"\".stringtoslicerune (? string) (? []rune)\n" "func @\"\".stringiter (? string, ? int) (? int)\n" "func @\"\".stringiter2 (? string, ? int) (@\"\".retk·1 int, @\"\".retv·2 rune)\n" "func @\"\".copy (@\"\".to·2 any, @\"\".fr·3 any, @\"\".wid·4 uintptr) (? int)\n" "func @\"\".slicestringcopy (@\"\".to·2 any, @\"\".fr·3 any) (? int)\n" "func @\"\".typ2Itab (@\"\".typ·2 *byte, @\"\".typ2·3 *byte, @\"\".cache·4 **byte) (@\"\".ret·1 *byte)\n" "func @\"\".convI2E (@\"\".elem·2 any) (@\"\".ret·1 any)\n" "func @\"\".convI2I (@\"\".typ·2 *byte, @\"\".elem·3 any) (@\"\".ret·1 any)\n" "func @\"\".convT2E (@\"\".typ·2 *byte, @\"\".elem·3 *any) (@\"\".ret·1 any)\n" "func @\"\".convT2I (@\"\".typ·2 *byte, @\"\".typ2·3 *byte, @\"\".cache·4 **byte, @\"\".elem·5 *any) (@\"\".ret·1 any)\n" "func @\"\".assertE2E (@\"\".typ·2 *byte, @\"\".iface·3 any) (@\"\".ret·1 any)\n" "func @\"\".assertE2E2 (@\"\".typ·3 *byte, @\"\".iface·4 any) (@\"\".ret·1 any, @\"\".ok·2 bool)\n" "func @\"\".assertE2I (@\"\".typ·2 *byte, @\"\".iface·3 any) (@\"\".ret·1 any)\n" "func @\"\".assertE2I2 (@\"\".typ·3 *byte, @\"\".iface·4 any) (@\"\".ret·1 any, @\"\".ok·2 bool)\n" "func @\"\".assertE2T (@\"\".typ·2 *byte, @\"\".iface·3 any) (@\"\".ret·1 any)\n" "func @\"\".assertE2T2 (@\"\".typ·3 *byte, @\"\".iface·4 any) (@\"\".ret·1 any, @\"\".ok·2 bool)\n" "func @\"\".assertI2E (@\"\".typ·2 *byte, @\"\".iface·3 any) (@\"\".ret·1 any)\n" "func @\"\".assertI2E2 (@\"\".typ·3 *byte, @\"\".iface·4 any) (@\"\".ret·1 any, @\"\".ok·2 bool)\n" "func @\"\".assertI2I (@\"\".typ·2 *byte, @\"\".iface·3 any) (@\"\".ret·1 any)\n" "func @\"\".assertI2I2 (@\"\".typ·3 *byte, @\"\".iface·4 any) (@\"\".ret·1 any, @\"\".ok·2 bool)\n" "func @\"\".assertI2T (@\"\".typ·2 *byte, @\"\".iface·3 any) (@\"\".ret·1 any)\n" "func @\"\".assertI2T2 (@\"\".typ·3 *byte, @\"\".iface·4 any) (@\"\".ret·1 any, @\"\".ok·2 bool)\n" "func @\"\".assertI2TOK (@\"\".typ·2 *byte, @\"\".iface·3 any) (@\"\".ok·1 bool)\n" "func @\"\".assertE2TOK (@\"\".typ·2 *byte, @\"\".iface·3 any) (@\"\".ok·1 bool)\n" "func @\"\".ifaceeq (@\"\".i1·2 any, @\"\".i2·3 any) (@\"\".ret·1 bool)\n" "func @\"\".efaceeq (@\"\".i1·2 any, @\"\".i2·3 any) (@\"\".ret·1 bool)\n" "func @\"\".ifacethash (@\"\".i1·2 any) (@\"\".ret·1 uint32)\n" "func @\"\".efacethash (@\"\".i1·2 any) (@\"\".ret·1 uint32)\n" "func @\"\".equal (@\"\".typ·2 *byte, @\"\".x1·3 any, @\"\".x2·4 any) (@\"\".ret·1 bool)\n" "func @\"\".makemap (@\"\".mapType·2 *byte, @\"\".hint·3 int64) (@\"\".hmap·1 map[any]any)\n" "func @\"\".mapaccess1 (@\"\".mapType·2 *byte, @\"\".hmap·3 map[any]any, @\"\".key·4 *any) (@\"\".val·1 *any)\n" "func @\"\".mapaccess1_fast32 (@\"\".mapType·2 *byte, @\"\".hmap·3 map[any]any, @\"\".key·4 any) (@\"\".val·1 *any)\n" "func @\"\".mapaccess1_fast64 (@\"\".mapType·2 *byte, @\"\".hmap·3 map[any]any, @\"\".key·4 any) (@\"\".val·1 *any)\n" "func @\"\".mapaccess1_faststr (@\"\".mapType·2 *byte, @\"\".hmap·3 map[any]any, @\"\".key·4 any) (@\"\".val·1 *any)\n" "func @\"\".mapaccess2 (@\"\".mapType·3 *byte, @\"\".hmap·4 map[any]any, @\"\".key·5 *any) (@\"\".val·1 *any, @\"\".pres·2 bool)\n" "func @\"\".mapaccess2_fast32 (@\"\".mapType·3 *byte, @\"\".hmap·4 map[any]any, @\"\".key·5 any) (@\"\".val·1 *any, @\"\".pres·2 bool)\n" "func @\"\".mapaccess2_fast64 (@\"\".mapType·3 *byte, @\"\".hmap·4 map[any]any, @\"\".key·5 any) (@\"\".val·1 *any, @\"\".pres·2 bool)\n" "func @\"\".mapaccess2_faststr (@\"\".mapType·3 *byte, @\"\".hmap·4 map[any]any, @\"\".key·5 any) (@\"\".val·1 *any, @\"\".pres·2 bool)\n" "func @\"\".mapassign1 (@\"\".mapType·1 *byte, @\"\".hmap·2 map[any]any, @\"\".key·3 *any, @\"\".val·4 *any)\n" "func @\"\".mapiterinit (@\"\".mapType·1 *byte, @\"\".hmap·2 map[any]any, @\"\".hiter·3 *any)\n" "func @\"\".mapdelete (@\"\".mapType·1 *byte, @\"\".hmap·2 map[any]any, @\"\".key·3 *any)\n" "func @\"\".mapiternext (@\"\".hiter·1 *any)\n" "func @\"\".makechan (@\"\".chanType·2 *byte, @\"\".hint·3 int64) (@\"\".hchan·1 chan any)\n" "func @\"\".chanrecv1 (@\"\".chanType·1 *byte, @\"\".hchan·2 <-chan any, @\"\".elem·3 *any)\n" "func @\"\".chanrecv2 (@\"\".chanType·2 *byte, @\"\".hchan·3 <-chan any, @\"\".elem·4 *any) (? bool)\n" "func @\"\".chansend1 (@\"\".chanType·1 *byte, @\"\".hchan·2 chan<- any, @\"\".elem·3 *any)\n" "func @\"\".closechan (@\"\".hchan·1 any)\n" "func @\"\".selectnbsend (@\"\".chanType·2 *byte, @\"\".hchan·3 chan<- any, @\"\".elem·4 *any) (? bool)\n" "func @\"\".selectnbrecv (@\"\".chanType·2 *byte, @\"\".elem·3 *any, @\"\".hchan·4 <-chan any) (? bool)\n" "func @\"\".selectnbrecv2 (@\"\".chanType·2 *byte, @\"\".elem·3 *any, @\"\".received·4 *bool, @\"\".hchan·5 <-chan any) (? bool)\n" "func @\"\".newselect (@\"\".size·2 int32) (@\"\".sel·1 *byte)\n" "func @\"\".selectsend (@\"\".sel·2 *byte, @\"\".hchan·3 chan<- any, @\"\".elem·4 *any) (@\"\".selected·1 bool)\n" "func @\"\".selectrecv (@\"\".sel·2 *byte, @\"\".hchan·3 <-chan any, @\"\".elem·4 *any) (@\"\".selected·1 bool)\n" "func @\"\".selectrecv2 (@\"\".sel·2 *byte, @\"\".hchan·3 <-chan any, @\"\".elem·4 *any, @\"\".received·5 *bool) (@\"\".selected·1 bool)\n" "func @\"\".selectdefault (@\"\".sel·2 *byte) (@\"\".selected·1 bool)\n" "func @\"\".selectgo (@\"\".sel·1 *byte)\n" "func @\"\".block ()\n" "func @\"\".makeslice (@\"\".typ·2 *byte, @\"\".nel·3 int64, @\"\".cap·4 int64) (@\"\".ary·1 []any)\n" "func @\"\".growslice (@\"\".typ·2 *byte, @\"\".old·3 []any, @\"\".n·4 int64) (@\"\".ary·1 []any)\n" "func @\"\".memmove (@\"\".to·1 *any, @\"\".frm·2 *any, @\"\".length·3 uintptr)\n" "func @\"\".memequal (@\"\".eq·1 *bool, @\"\".size·2 uintptr, @\"\".x·3 *any, @\"\".y·4 *any)\n" "func @\"\".memequal8 (@\"\".eq·1 *bool, @\"\".size·2 uintptr, @\"\".x·3 *any, @\"\".y·4 *any)\n" "func @\"\".memequal16 (@\"\".eq·1 *bool, @\"\".size·2 uintptr, @\"\".x·3 *any, @\"\".y·4 *any)\n" "func @\"\".memequal32 (@\"\".eq·1 *bool, @\"\".size·2 uintptr, @\"\".x·3 *any, @\"\".y·4 *any)\n" "func @\"\".memequal64 (@\"\".eq·1 *bool, @\"\".size·2 uintptr, @\"\".x·3 *any, @\"\".y·4 *any)\n" "func @\"\".memequal128 (@\"\".eq·1 *bool, @\"\".size·2 uintptr, @\"\".x·3 *any, @\"\".y·4 *any)\n" "func @\"\".int64div (? int64, ? int64) (? int64)\n" "func @\"\".uint64div (? uint64, ? uint64) (? uint64)\n" "func @\"\".int64mod (? int64, ? int64) (? int64)\n" "func @\"\".uint64mod (? uint64, ? uint64) (? uint64)\n" "func @\"\".float64toint64 (? float64) (? int64)\n" "func @\"\".float64touint64 (? float64) (? uint64)\n" "func @\"\".int64tofloat64 (? int64) (? float64)\n" "func @\"\".uint64tofloat64 (? uint64) (? float64)\n" "func @\"\".complex128div (@\"\".num·2 complex128, @\"\".den·3 complex128) (@\"\".quo·1 complex128)\n" "func @\"\".racefuncenter (? uintptr)\n" "func @\"\".racefuncexit ()\n" "func @\"\".raceread (? uintptr)\n" "func @\"\".racewrite (? uintptr)\n" "func @\"\".racereadrange (@\"\".addr·1 uintptr, @\"\".size·2 uintptr)\n" "func @\"\".racewriterange (@\"\".addr·1 uintptr, @\"\".size·2 uintptr)\n" "\n" "$$\n"; char *unsafeimport = "package unsafe\n" "import runtime \"runtime\"\n" "type @\"\".Pointer uintptr\n" "func @\"\".Offsetof (? any) (? uintptr)\n" "func @\"\".Sizeof (? any) (? uintptr)\n" "func @\"\".Alignof (? any) (? uintptr)\n" "\n" "$$\n"; go/src/cmd/gc/bv.c0100644000000000000000000000725512412656737014206 0ustar00rootroot00000000000000// Copyright 2013 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. #include #include #include "go.h" enum { WORDSIZE = sizeof(uint32), WORDBITS = 32, WORDMASK = WORDBITS - 1, WORDSHIFT = 5, }; static uintptr bvsize(uintptr n) { return ((n + WORDBITS - 1) / WORDBITS) * WORDSIZE; } int32 bvbits(Bvec *bv) { return bv->n; } int32 bvwords(Bvec *bv) { return (bv->n + WORDBITS - 1) / WORDBITS; } Bvec* bvalloc(int32 n) { Bvec *bv; uintptr nbytes; if(n < 0) fatal("bvalloc: initial size is negative\n"); nbytes = sizeof(Bvec) + bvsize(n); bv = malloc(nbytes); if(bv == nil) fatal("bvalloc: malloc failed\n"); memset(bv, 0, nbytes); bv->n = n; return bv; } /* difference */ void bvandnot(Bvec *dst, Bvec *src1, Bvec *src2) { int32 i, w; if(dst->n != src1->n || dst->n != src2->n) fatal("bvand: lengths %d, %d, and %d are not equal", dst->n, src1->n, src2->n); for(i = 0, w = 0; i < dst->n; i += WORDBITS, w++) dst->b[w] = src1->b[w] & ~src2->b[w]; } int bvcmp(Bvec *bv1, Bvec *bv2) { uintptr nbytes; if(bv1->n != bv2->n) fatal("bvequal: lengths %d and %d are not equal", bv1->n, bv2->n); nbytes = bvsize(bv1->n); return memcmp(bv1->b, bv2->b, nbytes); } void bvcopy(Bvec *dst, Bvec *src) { memmove(dst->b, src->b, bvsize(dst->n)); } Bvec* bvconcat(Bvec *src1, Bvec *src2) { Bvec *dst; int32 i; dst = bvalloc(src1->n + src2->n); for(i = 0; i < src1->n; i++) if(bvget(src1, i)) bvset(dst, i); for(i = 0; i < src2->n; i++) if(bvget(src2, i)) bvset(dst, i + src1->n); return dst; } int bvget(Bvec *bv, int32 i) { if(i < 0 || i >= bv->n) fatal("bvget: index %d is out of bounds with length %d\n", i, bv->n); return (bv->b[i>>WORDSHIFT] >> (i&WORDMASK)) & 1; } // bvnext returns the smallest index >= i for which bvget(bv, i) == 1. // If there is no such index, bvnext returns -1. int bvnext(Bvec *bv, int32 i) { uint32 w; // Jump i ahead to next word with bits. if((bv->b[i>>WORDSHIFT]>>(i&WORDMASK)) == 0) { i &= ~WORDMASK; i += WORDBITS; while(i < bv->n && bv->b[i>>WORDSHIFT] == 0) i += WORDBITS; } if(i >= bv->n) return -1; // Find 1 bit. w = bv->b[i>>WORDSHIFT]>>(i&WORDMASK); while((w&1) == 0) { w>>=1; i++; } return i; } int bvisempty(Bvec *bv) { int32 i; for(i = 0; i < bv->n; i += WORDBITS) if(bv->b[i>>WORDSHIFT] != 0) return 0; return 1; } void bvnot(Bvec *bv) { int32 i, w; for(i = 0, w = 0; i < bv->n; i += WORDBITS, w++) bv->b[w] = ~bv->b[w]; } /* union */ void bvor(Bvec *dst, Bvec *src1, Bvec *src2) { int32 i, w; if(dst->n != src1->n || dst->n != src2->n) fatal("bvor: lengths %d, %d, and %d are not equal", dst->n, src1->n, src2->n); for(i = 0, w = 0; i < dst->n; i += WORDBITS, w++) dst->b[w] = src1->b[w] | src2->b[w]; } /* intersection */ void bvand(Bvec *dst, Bvec *src1, Bvec *src2) { int32 i, w; if(dst->n != src1->n || dst->n != src2->n) fatal("bvor: lengths %d, %d, and %d are not equal", dst->n, src1->n, src2->n); for(i = 0, w = 0; i < dst->n; i += WORDBITS, w++) dst->b[w] = src1->b[w] & src2->b[w]; } void bvprint(Bvec *bv) { int32 i; print("#*"); for(i = 0; i < bv->n; i++) print("%d", bvget(bv, i)); } void bvreset(Bvec *bv, int32 i) { uint32 mask; if(i < 0 || i >= bv->n) fatal("bvreset: index %d is out of bounds with length %d\n", i, bv->n); mask = ~(1 << (i % WORDBITS)); bv->b[i / WORDBITS] &= mask; } void bvresetall(Bvec *bv) { memset(bv->b, 0x00, bvsize(bv->n)); } void bvset(Bvec *bv, int32 i) { uint32 mask; if(i < 0 || i >= bv->n) fatal("bvset: index %d is out of bounds with length %d\n", i, bv->n); mask = 1U << (i % WORDBITS); bv->b[i / WORDBITS] |= mask; } go/src/cmd/gc/closure.c0100644000000000000000000002676412412656734015256 0ustar00rootroot00000000000000// Copyright 2009 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. /* * function literals aka closures */ #include #include #include "go.h" void closurehdr(Node *ntype) { Node *n, *name, *a; NodeList *l; n = nod(OCLOSURE, N, N); n->ntype = ntype; n->funcdepth = funcdepth; funchdr(n); // steal ntype's argument names and // leave a fresh copy in their place. // references to these variables need to // refer to the variables in the external // function declared below; see walkclosure. n->list = ntype->list; n->rlist = ntype->rlist; ntype->list = nil; ntype->rlist = nil; for(l=n->list; l; l=l->next) { name = l->n->left; if(name) name = newname(name->sym); a = nod(ODCLFIELD, name, l->n->right); a->isddd = l->n->isddd; if(name) name->isddd = a->isddd; ntype->list = list(ntype->list, a); } for(l=n->rlist; l; l=l->next) { name = l->n->left; if(name) name = newname(name->sym); ntype->rlist = list(ntype->rlist, nod(ODCLFIELD, name, l->n->right)); } } Node* closurebody(NodeList *body) { Node *func, *v; NodeList *l; if(body == nil) body = list1(nod(OEMPTY, N, N)); func = curfn; func->nbody = body; func->endlineno = lineno; funcbody(func); // closure-specific variables are hanging off the // ordinary ones in the symbol table; see oldname. // unhook them. // make the list of pointers for the closure call. for(l=func->cvars; l; l=l->next) { v = l->n; v->closure->closure = v->outer; v->heapaddr = nod(OADDR, oldname(v->sym), N); } return func; } static Node* makeclosure(Node *func); void typecheckclosure(Node *func, int top) { Node *oldfn; NodeList *l; Node *v; oldfn = curfn; typecheck(&func->ntype, Etype); func->type = func->ntype->type; // Type check the body now, but only if we're inside a function. // At top level (in a variable initialization: curfn==nil) we're not // ready to type check code yet; we'll check it later, because the // underlying closure function we create is added to xtop. if(curfn && func->type != T) { curfn = func; typechecklist(func->nbody, Etop); curfn = oldfn; } // type check the & of closed variables outside the closure, // so that the outer frame also grabs them and knows they // escape. func->enter = nil; for(l=func->cvars; l; l=l->next) { v = l->n; if(v->type == T) { // if v->type is nil, it means v looked like it was // going to be used in the closure but wasn't. // this happens because when parsing a, b, c := f() // the a, b, c gets parsed as references to older // a, b, c before the parser figures out this is a // declaration. v->op = 0; continue; } // For a closure that is called in place, but not // inside a go statement, avoid moving variables to the heap. if ((top & (Ecall|Eproc)) == Ecall) v->heapaddr->etype = 1; typecheck(&v->heapaddr, Erv); func->enter = list(func->enter, v->heapaddr); v->heapaddr = N; } // Create top-level function xtop = list(xtop, makeclosure(func)); } static Node* makeclosure(Node *func) { Node *xtype, *v, *addr, *xfunc, *cv; NodeList *l, *body; static int closgen; char *p; vlong offset; /* * wrap body in external function * that begins by reading closure parameters. */ xtype = nod(OTFUNC, N, N); xtype->list = func->list; xtype->rlist = func->rlist; // create the function xfunc = nod(ODCLFUNC, N, N); snprint(namebuf, sizeof namebuf, "func·%.3d", ++closgen); xfunc->nname = newname(lookup(namebuf)); xfunc->nname->sym->flags |= SymExported; // disable export xfunc->nname->ntype = xtype; xfunc->nname->defn = xfunc; declare(xfunc->nname, PFUNC); xfunc->nname->funcdepth = func->funcdepth; xfunc->funcdepth = func->funcdepth; xfunc->endlineno = func->endlineno; // declare variables holding addresses taken from closure // and initialize in entry prologue. body = nil; offset = widthptr; xfunc->needctxt = func->cvars != nil; for(l=func->cvars; l; l=l->next) { v = l->n; if(v->op == 0) continue; addr = nod(ONAME, N, N); p = smprint("&%s", v->sym->name); addr->sym = lookup(p); free(p); addr->ntype = nod(OIND, typenod(v->type), N); addr->class = PAUTO; addr->addable = 1; addr->ullman = 1; addr->used = 1; addr->curfn = xfunc; xfunc->dcl = list(xfunc->dcl, addr); v->heapaddr = addr; cv = nod(OCLOSUREVAR, N, N); cv->type = ptrto(v->type); cv->xoffset = offset; body = list(body, nod(OAS, addr, cv)); offset += widthptr; } typechecklist(body, Etop); walkstmtlist(body); xfunc->enter = body; xfunc->nbody = func->nbody; xfunc->dcl = concat(func->dcl, xfunc->dcl); if(xfunc->nbody == nil) fatal("empty body - won't generate any code"); typecheck(&xfunc, Etop); xfunc->closure = func; func->closure = xfunc; func->nbody = nil; func->list = nil; func->rlist = nil; return xfunc; } Node* walkclosure(Node *func, NodeList **init) { Node *clos, *typ; NodeList *l; char buf[20]; int narg; // If no closure vars, don't bother wrapping. if(func->cvars == nil) return func->closure->nname; // Create closure in the form of a composite literal. // supposing the closure captures an int i and a string s // and has one float64 argument and no results, // the generated code looks like: // // clos = &struct{F uintptr; A0 *int; A1 *string}{func·001, &i, &s} // // The use of the struct provides type information to the garbage // collector so that it can walk the closure. We could use (in this case) // [3]unsafe.Pointer instead, but that would leave the gc in the dark. // The information appears in the binary in the form of type descriptors; // the struct is unnamed so that closures in multiple packages with the // same struct type can share the descriptor. narg = 0; typ = nod(OTSTRUCT, N, N); typ->list = list1(nod(ODCLFIELD, newname(lookup("F")), typenod(types[TUINTPTR]))); for(l=func->cvars; l; l=l->next) { if(l->n->op == 0) continue; snprint(buf, sizeof buf, "A%d", narg++); typ->list = list(typ->list, nod(ODCLFIELD, newname(lookup(buf)), l->n->heapaddr->ntype)); } clos = nod(OCOMPLIT, N, nod(OIND, typ, N)); clos->esc = func->esc; clos->right->implicit = 1; clos->list = concat(list1(nod(OCFUNC, func->closure->nname, N)), func->enter); // Force type conversion from *struct to the func type. clos = nod(OCONVNOP, clos, N); clos->type = func->type; typecheck(&clos, Erv); // typecheck will insert a PTRLIT node under CONVNOP, // tag it with escape analysis result. clos->left->esc = func->esc; // non-escaping temp to use, if any. // orderexpr did not compute the type; fill it in now. if(func->alloc != N) { func->alloc->type = clos->left->left->type; func->alloc->orig->type = func->alloc->type; clos->left->right = func->alloc; func->alloc = N; } walkexpr(&clos, init); return clos; } static Node *makepartialcall(Node*, Type*, Node*); void typecheckpartialcall(Node *fn, Node *sym) { switch(fn->op) { case ODOTINTER: case ODOTMETH: break; default: fatal("invalid typecheckpartialcall"); } // Create top-level function. fn->nname = makepartialcall(fn, fn->type, sym); fn->right = sym; fn->op = OCALLPART; fn->type = fn->nname->type; } static Node* makepartialcall(Node *fn, Type *t0, Node *meth) { Node *ptr, *n, *fld, *call, *xtype, *xfunc, *cv, *savecurfn; Type *rcvrtype, *basetype, *t; NodeList *body, *l, *callargs, *retargs; char *p; Sym *sym; Pkg *spkg; static Pkg* gopkg; int i, ddd; // TODO: names are not right rcvrtype = fn->left->type; if(exportname(meth->sym->name)) p = smprint("%-hT.%s·fm", rcvrtype, meth->sym->name); else p = smprint("%-hT.(%-S)·fm", rcvrtype, meth->sym); basetype = rcvrtype; if(isptr[rcvrtype->etype]) basetype = basetype->type; if(basetype->etype != TINTER && basetype->sym == S) fatal("missing base type for %T", rcvrtype); spkg = nil; if(basetype->sym != S) spkg = basetype->sym->pkg; if(spkg == nil) { if(gopkg == nil) gopkg = mkpkg(strlit("go")); spkg = gopkg; } sym = pkglookup(p, spkg); free(p); if(sym->flags & SymUniq) return sym->def; sym->flags |= SymUniq; savecurfn = curfn; curfn = N; xtype = nod(OTFUNC, N, N); i = 0; l = nil; callargs = nil; ddd = 0; xfunc = nod(ODCLFUNC, N, N); curfn = xfunc; for(t = getinargx(t0)->type; t; t = t->down) { snprint(namebuf, sizeof namebuf, "a%d", i++); n = newname(lookup(namebuf)); n->class = PPARAM; xfunc->dcl = list(xfunc->dcl, n); callargs = list(callargs, n); fld = nod(ODCLFIELD, n, typenod(t->type)); if(t->isddd) { fld->isddd = 1; ddd = 1; } l = list(l, fld); } xtype->list = l; i = 0; l = nil; retargs = nil; for(t = getoutargx(t0)->type; t; t = t->down) { snprint(namebuf, sizeof namebuf, "r%d", i++); n = newname(lookup(namebuf)); n->class = PPARAMOUT; xfunc->dcl = list(xfunc->dcl, n); retargs = list(retargs, n); l = list(l, nod(ODCLFIELD, n, typenod(t->type))); } xtype->rlist = l; xfunc->dupok = 1; xfunc->nname = newname(sym); xfunc->nname->sym->flags |= SymExported; // disable export xfunc->nname->ntype = xtype; xfunc->nname->defn = xfunc; declare(xfunc->nname, PFUNC); // Declare and initialize variable holding receiver. body = nil; xfunc->needctxt = 1; cv = nod(OCLOSUREVAR, N, N); cv->xoffset = widthptr; cv->type = rcvrtype; if(cv->type->align > widthptr) cv->xoffset = cv->type->align; ptr = nod(ONAME, N, N); ptr->sym = lookup("rcvr"); ptr->class = PAUTO; ptr->addable = 1; ptr->ullman = 1; ptr->used = 1; ptr->curfn = xfunc; xfunc->dcl = list(xfunc->dcl, ptr); if(isptr[rcvrtype->etype] || isinter(rcvrtype)) { ptr->ntype = typenod(rcvrtype); body = list(body, nod(OAS, ptr, cv)); } else { ptr->ntype = typenod(ptrto(rcvrtype)); body = list(body, nod(OAS, ptr, nod(OADDR, cv, N))); } call = nod(OCALL, nod(OXDOT, ptr, meth), N); call->list = callargs; call->isddd = ddd; if(t0->outtuple == 0) { body = list(body, call); } else { n = nod(OAS2, N, N); n->list = retargs; n->rlist = list1(call); body = list(body, n); n = nod(ORETURN, N, N); body = list(body, n); } xfunc->nbody = body; typecheck(&xfunc, Etop); sym->def = xfunc; xtop = list(xtop, xfunc); curfn = savecurfn; return xfunc; } Node* walkpartialcall(Node *n, NodeList **init) { Node *clos, *typ; // Create closure in the form of a composite literal. // For x.M with receiver (x) type T, the generated code looks like: // // clos = &struct{F uintptr; R T}{M.T·f, x} // // Like walkclosure above. if(isinter(n->left->type)) { // Trigger panic for method on nil interface now. // Otherwise it happens in the wrapper and is confusing. n->left = cheapexpr(n->left, init); checknil(n->left, init); } typ = nod(OTSTRUCT, N, N); typ->list = list1(nod(ODCLFIELD, newname(lookup("F")), typenod(types[TUINTPTR]))); typ->list = list(typ->list, nod(ODCLFIELD, newname(lookup("R")), typenod(n->left->type))); clos = nod(OCOMPLIT, N, nod(OIND, typ, N)); clos->esc = n->esc; clos->right->implicit = 1; clos->list = list1(nod(OCFUNC, n->nname->nname, N)); clos->list = list(clos->list, n->left); // Force type conversion from *struct to the func type. clos = nod(OCONVNOP, clos, N); clos->type = n->type; typecheck(&clos, Erv); // typecheck will insert a PTRLIT node under CONVNOP, // tag it with escape analysis result. clos->left->esc = n->esc; // non-escaping temp to use, if any. // orderexpr did not compute the type; fill it in now. if(n->alloc != N) { n->alloc->type = clos->left->left->type; n->alloc->orig->type = n->alloc->type; clos->left->right = n->alloc; n->alloc = N; } walkexpr(&clos, init); return clos; } go/src/cmd/gc/const.c0100644000000000000000000007512312412656737014724 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" #define TUP(x,y) (((x)<<16)|(y)) static Val tocplx(Val); static Val toflt(Val); static Val tostr(Val); static Val copyval(Val); static void cmplxmpy(Mpcplx*, Mpcplx*); static void cmplxdiv(Mpcplx*, Mpcplx*); /* * truncate float literal fv to 32-bit or 64-bit precision * according to type; return truncated value. */ Mpflt* truncfltlit(Mpflt *oldv, Type *t) { double d; Mpflt *fv; Val v; if(t == T) return oldv; memset(&v, 0, sizeof v); v.ctype = CTFLT; v.u.fval = oldv; overflow(v, t); fv = mal(sizeof *fv); *fv = *oldv; // convert large precision literal floating // into limited precision (float64 or float32) switch(t->etype) { case TFLOAT64: d = mpgetflt(fv); mpmovecflt(fv, d); break; case TFLOAT32: d = mpgetflt32(fv); mpmovecflt(fv, d); break; } return fv; } /* * convert n, if literal, to type t. * implicit conversion. */ void convlit(Node **np, Type *t) { convlit1(np, t, 0); } /* * convert n, if literal, to type t. * return a new node if necessary * (if n is a named constant, can't edit n->type directly). */ void convlit1(Node **np, Type *t, int explicit) { int ct, et; Node *n, *nn; n = *np; if(n == N || t == T || n->type == T || isideal(t) || n->type == t) return; if(!explicit && !isideal(n->type)) return; if(n->op == OLITERAL) { nn = nod(OXXX, N, N); *nn = *n; n = nn; *np = n; } switch(n->op) { default: if(n->type == idealbool) { if(t->etype == TBOOL) n->type = t; else n->type = types[TBOOL]; } if(n->type->etype == TIDEAL) { convlit(&n->left, t); convlit(&n->right, t); n->type = t; } return; case OLITERAL: // target is invalid type for a constant? leave alone. if(!okforconst[t->etype] && n->type->etype != TNIL) { defaultlit(&n, T); *np = n; return; } break; case OLSH: case ORSH: convlit1(&n->left, t, explicit && isideal(n->left->type)); t = n->left->type; if(t != T && t->etype == TIDEAL && n->val.ctype != CTINT) n->val = toint(n->val); if(t != T && !isint[t->etype]) { yyerror("invalid operation: %N (shift of type %T)", n, t); t = T; } n->type = t; return; case OCOMPLEX: if(n->type->etype == TIDEAL) { switch(t->etype) { default: // If trying to convert to non-complex type, // leave as complex128 and let typechecker complain. t = types[TCOMPLEX128]; //fallthrough case TCOMPLEX128: n->type = t; convlit(&n->left, types[TFLOAT64]); convlit(&n->right, types[TFLOAT64]); break; case TCOMPLEX64: n->type = t; convlit(&n->left, types[TFLOAT32]); convlit(&n->right, types[TFLOAT32]); break; } } return; } // avoided repeated calculations, errors if(eqtype(n->type, t)) return; ct = consttype(n); if(ct < 0) goto bad; et = t->etype; if(et == TINTER) { if(ct == CTNIL && n->type == types[TNIL]) { n->type = t; return; } defaultlit(np, T); return; } switch(ct) { default: goto bad; case CTNIL: switch(et) { default: n->type = T; goto bad; case TSTRING: // let normal conversion code handle it return; case TARRAY: if(!isslice(t)) goto bad; break; case TPTR32: case TPTR64: case TINTER: case TMAP: case TCHAN: case TFUNC: case TUNSAFEPTR: break; case TUINTPTR: // A nil literal may be converted to uintptr // if it is an unsafe.Pointer if(n->type->etype == TUNSAFEPTR) { n->val.u.xval = mal(sizeof(*n->val.u.xval)); mpmovecfix(n->val.u.xval, 0); n->val.ctype = CTINT; } else goto bad; } break; case CTSTR: case CTBOOL: if(et != n->type->etype) goto bad; break; case CTINT: case CTRUNE: case CTFLT: case CTCPLX: ct = n->val.ctype; if(isint[et]) { switch(ct) { default: goto bad; case CTCPLX: case CTFLT: case CTRUNE: n->val = toint(n->val); // flowthrough case CTINT: overflow(n->val, t); break; } } else if(isfloat[et]) { switch(ct) { default: goto bad; case CTCPLX: case CTINT: case CTRUNE: n->val = toflt(n->val); // flowthrough case CTFLT: n->val.u.fval = truncfltlit(n->val.u.fval, t); break; } } else if(iscomplex[et]) { switch(ct) { default: goto bad; case CTFLT: case CTINT: case CTRUNE: n->val = tocplx(n->val); break; case CTCPLX: overflow(n->val, t); break; } } else if(et == TSTRING && (ct == CTINT || ct == CTRUNE) && explicit) n->val = tostr(n->val); else goto bad; break; } n->type = t; return; bad: if(!n->diag) { if(!t->broke) yyerror("cannot convert %N to type %T", n, t); n->diag = 1; } if(isideal(n->type)) { defaultlit(&n, T); *np = n; } return; } static Val copyval(Val v) { Mpint *i; Mpflt *f; Mpcplx *c; switch(v.ctype) { case CTINT: case CTRUNE: i = mal(sizeof(*i)); mpmovefixfix(i, v.u.xval); v.u.xval = i; break; case CTFLT: f = mal(sizeof(*f)); mpmovefltflt(f, v.u.fval); v.u.fval = f; break; case CTCPLX: c = mal(sizeof(*c)); mpmovefltflt(&c->real, &v.u.cval->real); mpmovefltflt(&c->imag, &v.u.cval->imag); v.u.cval = c; break; } return v; } static Val tocplx(Val v) { Mpcplx *c; switch(v.ctype) { case CTINT: case CTRUNE: c = mal(sizeof(*c)); mpmovefixflt(&c->real, v.u.xval); mpmovecflt(&c->imag, 0.0); v.ctype = CTCPLX; v.u.cval = c; break; case CTFLT: c = mal(sizeof(*c)); mpmovefltflt(&c->real, v.u.fval); mpmovecflt(&c->imag, 0.0); v.ctype = CTCPLX; v.u.cval = c; break; } return v; } static Val toflt(Val v) { Mpflt *f; switch(v.ctype) { case CTINT: case CTRUNE: f = mal(sizeof(*f)); mpmovefixflt(f, v.u.xval); v.ctype = CTFLT; v.u.fval = f; break; case CTCPLX: f = mal(sizeof(*f)); mpmovefltflt(f, &v.u.cval->real); if(mpcmpfltc(&v.u.cval->imag, 0) != 0) yyerror("constant %#F%+#Fi truncated to real", &v.u.cval->real, &v.u.cval->imag); v.ctype = CTFLT; v.u.fval = f; break; } return v; } Val toint(Val v) { Mpint *i; switch(v.ctype) { case CTRUNE: v.ctype = CTINT; break; case CTFLT: i = mal(sizeof(*i)); if(mpmovefltfix(i, v.u.fval) < 0) yyerror("constant %#F truncated to integer", v.u.fval); v.ctype = CTINT; v.u.xval = i; break; case CTCPLX: i = mal(sizeof(*i)); if(mpmovefltfix(i, &v.u.cval->real) < 0) yyerror("constant %#F%+#Fi truncated to integer", &v.u.cval->real, &v.u.cval->imag); if(mpcmpfltc(&v.u.cval->imag, 0) != 0) yyerror("constant %#F%+#Fi truncated to real", &v.u.cval->real, &v.u.cval->imag); v.ctype = CTINT; v.u.xval = i; break; } return v; } int doesoverflow(Val v, Type *t) { switch(v.ctype) { case CTINT: case CTRUNE: if(!isint[t->etype]) fatal("overflow: %T integer constant", t); if(mpcmpfixfix(v.u.xval, minintval[t->etype]) < 0 || mpcmpfixfix(v.u.xval, maxintval[t->etype]) > 0) return 1; break; case CTFLT: if(!isfloat[t->etype]) fatal("overflow: %T floating-point constant", t); if(mpcmpfltflt(v.u.fval, minfltval[t->etype]) <= 0 || mpcmpfltflt(v.u.fval, maxfltval[t->etype]) >= 0) return 1; break; case CTCPLX: if(!iscomplex[t->etype]) fatal("overflow: %T complex constant", t); if(mpcmpfltflt(&v.u.cval->real, minfltval[t->etype]) <= 0 || mpcmpfltflt(&v.u.cval->real, maxfltval[t->etype]) >= 0 || mpcmpfltflt(&v.u.cval->imag, minfltval[t->etype]) <= 0 || mpcmpfltflt(&v.u.cval->imag, maxfltval[t->etype]) >= 0) return 1; break; } return 0; } void overflow(Val v, Type *t) { // v has already been converted // to appropriate form for t. if(t == T || t->etype == TIDEAL) return; if(!doesoverflow(v, t)) return; switch(v.ctype) { case CTINT: case CTRUNE: yyerror("constant %B overflows %T", v.u.xval, t); break; case CTFLT: yyerror("constant %#F overflows %T", v.u.fval, t); break; case CTCPLX: yyerror("constant %#F overflows %T", v.u.fval, t); break; } } static Val tostr(Val v) { Rune rune; int l; Strlit *s; switch(v.ctype) { case CTINT: case CTRUNE: if(mpcmpfixfix(v.u.xval, minintval[TINT]) < 0 || mpcmpfixfix(v.u.xval, maxintval[TINT]) > 0) yyerror("overflow in int -> string"); rune = mpgetfix(v.u.xval); l = runelen(rune); s = mal(sizeof(*s)+l); s->len = l; runetochar((char*)s->s, &rune); memset(&v, 0, sizeof v); v.ctype = CTSTR; v.u.sval = s; break; case CTFLT: yyerror("no float -> string"); case CTNIL: memset(&v, 0, sizeof v); v.ctype = CTSTR; v.u.sval = mal(sizeof *s); break; } return v; } int consttype(Node *n) { if(n == N || n->op != OLITERAL) return -1; return n->val.ctype; } int isconst(Node *n, int ct) { int t; t = consttype(n); // If the caller is asking for CTINT, allow CTRUNE too. // Makes life easier for back ends. return t == ct || (ct == CTINT && t == CTRUNE); } static Node* saveorig(Node *n) { Node *n1; if(n == n->orig) { // duplicate node for n->orig. n1 = nod(OLITERAL, N, N); n->orig = n1; *n1 = *n; } return n->orig; } /* * if n is constant, rewrite as OLITERAL node. */ void evconst(Node *n) { Node *nl, *nr, *norig; int32 len; Strlit *str; int wl, wr, lno, et; Val v, rv; Mpint b; NodeList *l1, *l2; // pick off just the opcodes that can be // constant evaluated. switch(n->op) { default: return; case OADD: case OAND: case OANDAND: case OANDNOT: case OARRAYBYTESTR: case OCOM: case ODIV: case OEQ: case OGE: case OGT: case OLE: case OLSH: case OLT: case OMINUS: case OMOD: case OMUL: case ONE: case ONOT: case OOR: case OOROR: case OPLUS: case ORSH: case OSUB: case OXOR: break; case OCONV: if(n->type == T) return; if(!okforconst[n->type->etype] && n->type->etype != TNIL) return; break; case OADDSTR: // merge adjacent constants in the argument list. for(l1=n->list; l1 != nil; l1= l1->next) { if(isconst(l1->n, CTSTR) && l1->next != nil && isconst(l1->next->n, CTSTR)) { l2 = l1; len = 0; while(l2 != nil && isconst(l2->n, CTSTR)) { nr = l2->n; len += nr->val.u.sval->len; l2 = l2->next; } // merge from l1 up to but not including l2 str = mal(sizeof(*str) + len); str->len = len; len = 0; l2 = l1; while(l2 != nil && isconst(l2->n, CTSTR)) { nr = l2->n; memmove(str->s+len, nr->val.u.sval->s, nr->val.u.sval->len); len += nr->val.u.sval->len; l2 = l2->next; } nl = nod(OXXX, N, N); *nl = *l1->n; nl->orig = nl; nl->val.ctype = CTSTR; nl->val.u.sval = str; l1->n = nl; l1->next = l2; } } // fix list end pointer. for(l2=n->list; l2 != nil; l2=l2->next) n->list->end = l2; // collapse single-constant list to single constant. if(count(n->list) == 1 && isconst(n->list->n, CTSTR)) { n->op = OLITERAL; n->val = n->list->n->val; } return; } nl = n->left; if(nl == N || nl->type == T) return; if(consttype(nl) < 0) return; wl = nl->type->etype; if(isint[wl] || isfloat[wl] || iscomplex[wl]) wl = TIDEAL; nr = n->right; if(nr == N) goto unary; if(nr->type == T) return; if(consttype(nr) < 0) return; wr = nr->type->etype; if(isint[wr] || isfloat[wr] || iscomplex[wr]) wr = TIDEAL; // check for compatible general types (numeric, string, etc) if(wl != wr) goto illegal; // check for compatible types. switch(n->op) { default: // ideal const mixes with anything but otherwise must match. if(nl->type->etype != TIDEAL) { defaultlit(&nr, nl->type); n->right = nr; } if(nr->type->etype != TIDEAL) { defaultlit(&nl, nr->type); n->left = nl; } if(nl->type->etype != nr->type->etype) goto illegal; break; case OLSH: case ORSH: // right must be unsigned. // left can be ideal. defaultlit(&nr, types[TUINT]); n->right = nr; if(nr->type && (issigned[nr->type->etype] || !isint[nr->type->etype])) goto illegal; if(nl->val.ctype != CTRUNE) nl->val = toint(nl->val); nr->val = toint(nr->val); break; } // copy numeric value to avoid modifying // n->left, in case someone still refers to it (e.g. iota). v = nl->val; if(wl == TIDEAL) v = copyval(v); rv = nr->val; // convert to common ideal if(v.ctype == CTCPLX || rv.ctype == CTCPLX) { v = tocplx(v); rv = tocplx(rv); } if(v.ctype == CTFLT || rv.ctype == CTFLT) { v = toflt(v); rv = toflt(rv); } // Rune and int turns into rune. if(v.ctype == CTRUNE && rv.ctype == CTINT) rv.ctype = CTRUNE; if(v.ctype == CTINT && rv.ctype == CTRUNE) { if(n->op == OLSH || n->op == ORSH) rv.ctype = CTINT; else v.ctype = CTRUNE; } if(v.ctype != rv.ctype) { // Use of undefined name as constant? if((v.ctype == 0 || rv.ctype == 0) && nerrors > 0) return; fatal("constant type mismatch %T(%d) %T(%d)", nl->type, v.ctype, nr->type, rv.ctype); } // run op switch(TUP(n->op, v.ctype)) { default: illegal: if(!n->diag) { yyerror("illegal constant expression: %T %O %T", nl->type, n->op, nr->type); n->diag = 1; } return; case TUP(OADD, CTINT): case TUP(OADD, CTRUNE): mpaddfixfix(v.u.xval, rv.u.xval, 0); break; case TUP(OSUB, CTINT): case TUP(OSUB, CTRUNE): mpsubfixfix(v.u.xval, rv.u.xval); break; case TUP(OMUL, CTINT): case TUP(OMUL, CTRUNE): mpmulfixfix(v.u.xval, rv.u.xval); break; case TUP(ODIV, CTINT): case TUP(ODIV, CTRUNE): if(mpcmpfixc(rv.u.xval, 0) == 0) { yyerror("division by zero"); mpmovecfix(v.u.xval, 1); break; } mpdivfixfix(v.u.xval, rv.u.xval); break; case TUP(OMOD, CTINT): case TUP(OMOD, CTRUNE): if(mpcmpfixc(rv.u.xval, 0) == 0) { yyerror("division by zero"); mpmovecfix(v.u.xval, 1); break; } mpmodfixfix(v.u.xval, rv.u.xval); break; case TUP(OLSH, CTINT): case TUP(OLSH, CTRUNE): mplshfixfix(v.u.xval, rv.u.xval); break; case TUP(ORSH, CTINT): case TUP(ORSH, CTRUNE): mprshfixfix(v.u.xval, rv.u.xval); break; case TUP(OOR, CTINT): case TUP(OOR, CTRUNE): mporfixfix(v.u.xval, rv.u.xval); break; case TUP(OAND, CTINT): case TUP(OAND, CTRUNE): mpandfixfix(v.u.xval, rv.u.xval); break; case TUP(OANDNOT, CTINT): case TUP(OANDNOT, CTRUNE): mpandnotfixfix(v.u.xval, rv.u.xval); break; case TUP(OXOR, CTINT): case TUP(OXOR, CTRUNE): mpxorfixfix(v.u.xval, rv.u.xval); break; case TUP(OADD, CTFLT): mpaddfltflt(v.u.fval, rv.u.fval); break; case TUP(OSUB, CTFLT): mpsubfltflt(v.u.fval, rv.u.fval); break; case TUP(OMUL, CTFLT): mpmulfltflt(v.u.fval, rv.u.fval); break; case TUP(ODIV, CTFLT): if(mpcmpfltc(rv.u.fval, 0) == 0) { yyerror("division by zero"); mpmovecflt(v.u.fval, 1.0); break; } mpdivfltflt(v.u.fval, rv.u.fval); break; case TUP(OMOD, CTFLT): // The default case above would print 'ideal % ideal', // which is not quite an ideal error. if(!n->diag) { yyerror("illegal constant expression: floating-point %% operation"); n->diag = 1; } return; case TUP(OADD, CTCPLX): mpaddfltflt(&v.u.cval->real, &rv.u.cval->real); mpaddfltflt(&v.u.cval->imag, &rv.u.cval->imag); break; case TUP(OSUB, CTCPLX): mpsubfltflt(&v.u.cval->real, &rv.u.cval->real); mpsubfltflt(&v.u.cval->imag, &rv.u.cval->imag); break; case TUP(OMUL, CTCPLX): cmplxmpy(v.u.cval, rv.u.cval); break; case TUP(ODIV, CTCPLX): if(mpcmpfltc(&rv.u.cval->real, 0) == 0 && mpcmpfltc(&rv.u.cval->imag, 0) == 0) { yyerror("complex division by zero"); mpmovecflt(&rv.u.cval->real, 1.0); mpmovecflt(&rv.u.cval->imag, 0.0); break; } cmplxdiv(v.u.cval, rv.u.cval); break; case TUP(OEQ, CTNIL): goto settrue; case TUP(ONE, CTNIL): goto setfalse; case TUP(OEQ, CTINT): case TUP(OEQ, CTRUNE): if(mpcmpfixfix(v.u.xval, rv.u.xval) == 0) goto settrue; goto setfalse; case TUP(ONE, CTINT): case TUP(ONE, CTRUNE): if(mpcmpfixfix(v.u.xval, rv.u.xval) != 0) goto settrue; goto setfalse; case TUP(OLT, CTINT): case TUP(OLT, CTRUNE): if(mpcmpfixfix(v.u.xval, rv.u.xval) < 0) goto settrue; goto setfalse; case TUP(OLE, CTINT): case TUP(OLE, CTRUNE): if(mpcmpfixfix(v.u.xval, rv.u.xval) <= 0) goto settrue; goto setfalse; case TUP(OGE, CTINT): case TUP(OGE, CTRUNE): if(mpcmpfixfix(v.u.xval, rv.u.xval) >= 0) goto settrue; goto setfalse; case TUP(OGT, CTINT): case TUP(OGT, CTRUNE): if(mpcmpfixfix(v.u.xval, rv.u.xval) > 0) goto settrue; goto setfalse; case TUP(OEQ, CTFLT): if(mpcmpfltflt(v.u.fval, rv.u.fval) == 0) goto settrue; goto setfalse; case TUP(ONE, CTFLT): if(mpcmpfltflt(v.u.fval, rv.u.fval) != 0) goto settrue; goto setfalse; case TUP(OLT, CTFLT): if(mpcmpfltflt(v.u.fval, rv.u.fval) < 0) goto settrue; goto setfalse; case TUP(OLE, CTFLT): if(mpcmpfltflt(v.u.fval, rv.u.fval) <= 0) goto settrue; goto setfalse; case TUP(OGE, CTFLT): if(mpcmpfltflt(v.u.fval, rv.u.fval) >= 0) goto settrue; goto setfalse; case TUP(OGT, CTFLT): if(mpcmpfltflt(v.u.fval, rv.u.fval) > 0) goto settrue; goto setfalse; case TUP(OEQ, CTCPLX): if(mpcmpfltflt(&v.u.cval->real, &rv.u.cval->real) == 0 && mpcmpfltflt(&v.u.cval->imag, &rv.u.cval->imag) == 0) goto settrue; goto setfalse; case TUP(ONE, CTCPLX): if(mpcmpfltflt(&v.u.cval->real, &rv.u.cval->real) != 0 || mpcmpfltflt(&v.u.cval->imag, &rv.u.cval->imag) != 0) goto settrue; goto setfalse; case TUP(OEQ, CTSTR): if(cmpslit(nl, nr) == 0) goto settrue; goto setfalse; case TUP(ONE, CTSTR): if(cmpslit(nl, nr) != 0) goto settrue; goto setfalse; case TUP(OLT, CTSTR): if(cmpslit(nl, nr) < 0) goto settrue; goto setfalse; case TUP(OLE, CTSTR): if(cmpslit(nl, nr) <= 0) goto settrue; goto setfalse; case TUP(OGE, CTSTR): if(cmpslit(nl, nr) >= 0l) goto settrue; goto setfalse; case TUP(OGT, CTSTR): if(cmpslit(nl, nr) > 0) goto settrue; goto setfalse; case TUP(OOROR, CTBOOL): if(v.u.bval || rv.u.bval) goto settrue; goto setfalse; case TUP(OANDAND, CTBOOL): if(v.u.bval && rv.u.bval) goto settrue; goto setfalse; case TUP(OEQ, CTBOOL): if(v.u.bval == rv.u.bval) goto settrue; goto setfalse; case TUP(ONE, CTBOOL): if(v.u.bval != rv.u.bval) goto settrue; goto setfalse; } goto ret; unary: // copy numeric value to avoid modifying // nl, in case someone still refers to it (e.g. iota). v = nl->val; if(wl == TIDEAL) v = copyval(v); switch(TUP(n->op, v.ctype)) { default: if(!n->diag) { yyerror("illegal constant expression %O %T", n->op, nl->type); n->diag = 1; } return; case TUP(OCONV, CTNIL): case TUP(OARRAYBYTESTR, CTNIL): if(n->type->etype == TSTRING) { v = tostr(v); nl->type = n->type; break; } // fall through case TUP(OCONV, CTINT): case TUP(OCONV, CTRUNE): case TUP(OCONV, CTFLT): case TUP(OCONV, CTSTR): convlit1(&nl, n->type, 1); v = nl->val; break; case TUP(OPLUS, CTINT): case TUP(OPLUS, CTRUNE): break; case TUP(OMINUS, CTINT): case TUP(OMINUS, CTRUNE): mpnegfix(v.u.xval); break; case TUP(OCOM, CTINT): case TUP(OCOM, CTRUNE): et = Txxx; if(nl->type != T) et = nl->type->etype; // calculate the mask in b // result will be (a ^ mask) switch(et) { default: // signed guys change sign mpmovecfix(&b, -1); break; case TUINT8: case TUINT16: case TUINT32: case TUINT64: case TUINT: case TUINTPTR: // unsigned guys invert their bits mpmovefixfix(&b, maxintval[et]); break; } mpxorfixfix(v.u.xval, &b); break; case TUP(OPLUS, CTFLT): break; case TUP(OMINUS, CTFLT): mpnegflt(v.u.fval); break; case TUP(OPLUS, CTCPLX): break; case TUP(OMINUS, CTCPLX): mpnegflt(&v.u.cval->real); mpnegflt(&v.u.cval->imag); break; case TUP(ONOT, CTBOOL): if(!v.u.bval) goto settrue; goto setfalse; } ret: norig = saveorig(n); *n = *nl; // restore value of n->orig. n->orig = norig; n->val = v; // check range. lno = setlineno(n); overflow(v, n->type); lineno = lno; // truncate precision for non-ideal float. if(v.ctype == CTFLT && n->type->etype != TIDEAL) n->val.u.fval = truncfltlit(v.u.fval, n->type); return; settrue: norig = saveorig(n); *n = *nodbool(1); n->orig = norig; return; setfalse: norig = saveorig(n); *n = *nodbool(0); n->orig = norig; return; } Node* nodlit(Val v) { Node *n; n = nod(OLITERAL, N, N); n->val = v; switch(v.ctype) { default: fatal("nodlit ctype %d", v.ctype); case CTSTR: n->type = idealstring; break; case CTBOOL: n->type = idealbool; break; case CTINT: case CTRUNE: case CTFLT: case CTCPLX: n->type = types[TIDEAL]; break; case CTNIL: n->type = types[TNIL]; break; } return n; } Node* nodcplxlit(Val r, Val i) { Node *n; Mpcplx *c; r = toflt(r); i = toflt(i); c = mal(sizeof(*c)); n = nod(OLITERAL, N, N); n->type = types[TIDEAL]; n->val.u.cval = c; n->val.ctype = CTCPLX; if(r.ctype != CTFLT || i.ctype != CTFLT) fatal("nodcplxlit ctype %d/%d", r.ctype, i.ctype); mpmovefltflt(&c->real, r.u.fval); mpmovefltflt(&c->imag, i.u.fval); return n; } // idealkind returns a constant kind like consttype // but for an arbitrary "ideal" (untyped constant) expression. static int idealkind(Node *n) { int k1, k2; if(n == N || !isideal(n->type)) return CTxxx; switch(n->op) { default: return CTxxx; case OLITERAL: return n->val.ctype; case OADD: case OAND: case OANDNOT: case OCOM: case ODIV: case OMINUS: case OMOD: case OMUL: case OSUB: case OXOR: case OOR: case OPLUS: // numeric kinds. k1 = idealkind(n->left); k2 = idealkind(n->right); if(k1 > k2) return k1; else return k2; case OREAL: case OIMAG: return CTFLT; case OCOMPLEX: return CTCPLX; case OADDSTR: return CTSTR; case OANDAND: case OEQ: case OGE: case OGT: case OLE: case OLT: case ONE: case ONOT: case OOROR: case OCMPSTR: case OCMPIFACE: return CTBOOL; case OLSH: case ORSH: // shifts (beware!). return idealkind(n->left); } } void defaultlit(Node **np, Type *t) { int lno; int ctype; Node *n, *nn; Type *t1; n = *np; if(n == N || !isideal(n->type)) return; if(n->op == OLITERAL) { nn = nod(OXXX, N, N); *nn = *n; n = nn; *np = n; } lno = setlineno(n); ctype = idealkind(n); switch(ctype) { default: if(t != T) { convlit(np, t); return; } if(n->val.ctype == CTNIL) { lineno = lno; if(!n->diag) { yyerror("use of untyped nil"); n->diag = 1; } n->type = T; break; } if(n->val.ctype == CTSTR) { t1 = types[TSTRING]; convlit(np, t1); break; } yyerror("defaultlit: unknown literal: %N", n); break; case CTxxx: fatal("defaultlit: idealkind is CTxxx: %+N", n); break; case CTBOOL: t1 = types[TBOOL]; if(t != T && t->etype == TBOOL) t1 = t; convlit(np, t1); break; case CTINT: t1 = types[TINT]; goto num; case CTRUNE: t1 = runetype; goto num; case CTFLT: t1 = types[TFLOAT64]; goto num; case CTCPLX: t1 = types[TCOMPLEX128]; goto num; num: if(t != T) { if(isint[t->etype]) { t1 = t; n->val = toint(n->val); } else if(isfloat[t->etype]) { t1 = t; n->val = toflt(n->val); } else if(iscomplex[t->etype]) { t1 = t; n->val = tocplx(n->val); } } overflow(n->val, t1); convlit(np, t1); break; } lineno = lno; } /* * defaultlit on both nodes simultaneously; * if they're both ideal going in they better * get the same type going out. * force means must assign concrete (non-ideal) type. */ void defaultlit2(Node **lp, Node **rp, int force) { Node *l, *r; int lkind, rkind; l = *lp; r = *rp; if(l->type == T || r->type == T) return; if(!isideal(l->type)) { convlit(rp, l->type); return; } if(!isideal(r->type)) { convlit(lp, r->type); return; } if(!force) return; if(l->type->etype == TBOOL) { convlit(lp, types[TBOOL]); convlit(rp, types[TBOOL]); } lkind = idealkind(l); rkind = idealkind(r); if(lkind == CTCPLX || rkind == CTCPLX) { convlit(lp, types[TCOMPLEX128]); convlit(rp, types[TCOMPLEX128]); return; } if(lkind == CTFLT || rkind == CTFLT) { convlit(lp, types[TFLOAT64]); convlit(rp, types[TFLOAT64]); return; } if(lkind == CTRUNE || rkind == CTRUNE) { convlit(lp, runetype); convlit(rp, runetype); return; } convlit(lp, types[TINT]); convlit(rp, types[TINT]); } int cmpslit(Node *l, Node *r) { int32 l1, l2, i, m; uchar *s1, *s2; l1 = l->val.u.sval->len; l2 = r->val.u.sval->len; s1 = (uchar*)l->val.u.sval->s; s2 = (uchar*)r->val.u.sval->s; m = l1; if(l2 < m) m = l2; for(i=0; i s2[i]) return +1; return -1; } if(l1 == l2) return 0; if(l1 > l2) return +1; return -1; } int smallintconst(Node *n) { if(n->op == OLITERAL && isconst(n, CTINT) && n->type != T) switch(simtype[n->type->etype]) { case TINT8: case TUINT8: case TINT16: case TUINT16: case TINT32: case TUINT32: case TBOOL: case TPTR32: return 1; case TIDEAL: case TINT64: case TUINT64: case TPTR64: if(mpcmpfixfix(n->val.u.xval, minintval[TINT32]) < 0 || mpcmpfixfix(n->val.u.xval, maxintval[TINT32]) > 0) break; return 1; } return 0; } long nonnegconst(Node *n) { if(n->op == OLITERAL && n->type != T) switch(simtype[n->type->etype]) { case TINT8: case TUINT8: case TINT16: case TUINT16: case TINT32: case TUINT32: case TINT64: case TUINT64: case TIDEAL: // check negative and 2^31 if(mpcmpfixfix(n->val.u.xval, minintval[TUINT32]) < 0 || mpcmpfixfix(n->val.u.xval, maxintval[TINT32]) > 0) break; return mpgetfix(n->val.u.xval); } return -1; } /* * convert x to type et and back to int64 * for sign extension and truncation. */ static int64 iconv(int64 x, int et) { switch(et) { case TINT8: x = (int8)x; break; case TUINT8: x = (uint8)x; break; case TINT16: x = (int16)x; break; case TUINT16: x = (uint64)x; break; case TINT32: x = (int32)x; break; case TUINT32: x = (uint32)x; break; case TINT64: case TUINT64: break; } return x; } /* * convert constant val to type t; leave in con. * for back end. */ void convconst(Node *con, Type *t, Val *val) { int64 i; int tt; tt = simsimtype(t); // copy the constant for conversion nodconst(con, types[TINT8], 0); con->type = t; con->val = *val; if(isint[tt]) { con->val.ctype = CTINT; con->val.u.xval = mal(sizeof *con->val.u.xval); switch(val->ctype) { default: fatal("convconst ctype=%d %lT", val->ctype, t); case CTINT: case CTRUNE: i = mpgetfix(val->u.xval); break; case CTBOOL: i = val->u.bval; break; case CTNIL: i = 0; break; } i = iconv(i, tt); mpmovecfix(con->val.u.xval, i); return; } if(isfloat[tt]) { con->val = toflt(con->val); if(con->val.ctype != CTFLT) fatal("convconst ctype=%d %T", con->val.ctype, t); if(tt == TFLOAT32) con->val.u.fval = truncfltlit(con->val.u.fval, t); return; } if(iscomplex[tt]) { con->val = tocplx(con->val); if(tt == TCOMPLEX64) { con->val.u.cval->real = *truncfltlit(&con->val.u.cval->real, types[TFLOAT32]); con->val.u.cval->imag = *truncfltlit(&con->val.u.cval->imag, types[TFLOAT32]); } return; } fatal("convconst %lT constant", t); } // complex multiply v *= rv // (a, b) * (c, d) = (a*c - b*d, b*c + a*d) static void cmplxmpy(Mpcplx *v, Mpcplx *rv) { Mpflt ac, bd, bc, ad; mpmovefltflt(&ac, &v->real); mpmulfltflt(&ac, &rv->real); // ac mpmovefltflt(&bd, &v->imag); mpmulfltflt(&bd, &rv->imag); // bd mpmovefltflt(&bc, &v->imag); mpmulfltflt(&bc, &rv->real); // bc mpmovefltflt(&ad, &v->real); mpmulfltflt(&ad, &rv->imag); // ad mpmovefltflt(&v->real, &ac); mpsubfltflt(&v->real, &bd); // ac-bd mpmovefltflt(&v->imag, &bc); mpaddfltflt(&v->imag, &ad); // bc+ad } // complex divide v /= rv // (a, b) / (c, d) = ((a*c + b*d), (b*c - a*d))/(c*c + d*d) static void cmplxdiv(Mpcplx *v, Mpcplx *rv) { Mpflt ac, bd, bc, ad, cc_plus_dd; mpmovefltflt(&cc_plus_dd, &rv->real); mpmulfltflt(&cc_plus_dd, &rv->real); // cc mpmovefltflt(&ac, &rv->imag); mpmulfltflt(&ac, &rv->imag); // dd mpaddfltflt(&cc_plus_dd, &ac); // cc+dd mpmovefltflt(&ac, &v->real); mpmulfltflt(&ac, &rv->real); // ac mpmovefltflt(&bd, &v->imag); mpmulfltflt(&bd, &rv->imag); // bd mpmovefltflt(&bc, &v->imag); mpmulfltflt(&bc, &rv->real); // bc mpmovefltflt(&ad, &v->real); mpmulfltflt(&ad, &rv->imag); // ad mpmovefltflt(&v->real, &ac); mpaddfltflt(&v->real, &bd); // ac+bd mpdivfltflt(&v->real, &cc_plus_dd); // (ac+bd)/(cc+dd) mpmovefltflt(&v->imag, &bc); mpsubfltflt(&v->imag, &ad); // bc-ad mpdivfltflt(&v->imag, &cc_plus_dd); // (bc+ad)/(cc+dd) } static int hascallchan(Node*); // Is n a Go language constant (as opposed to a compile-time constant)? // Expressions derived from nil, like string([]byte(nil)), while they // may be known at compile time, are not Go language constants. // Only called for expressions known to evaluated to compile-time // constants. int isgoconst(Node *n) { Node *l; Type *t; if(n->orig != N) n = n->orig; switch(n->op) { case OADD: case OADDSTR: case OAND: case OANDAND: case OANDNOT: case OCOM: case ODIV: case OEQ: case OGE: case OGT: case OLE: case OLSH: case OLT: case OMINUS: case OMOD: case OMUL: case ONE: case ONOT: case OOR: case OOROR: case OPLUS: case ORSH: case OSUB: case OXOR: case OCONV: case OIOTA: case OCOMPLEX: case OREAL: case OIMAG: if(isgoconst(n->left) && (n->right == N || isgoconst(n->right))) return 1; break; case OLEN: case OCAP: l = n->left; if(isgoconst(l)) return 1; // Special case: len/cap is constant when applied to array or // pointer to array when the expression does not contain // function calls or channel receive operations. t = l->type; if(t != T && isptr[t->etype]) t = t->type; if(isfixedarray(t) && !hascallchan(l)) return 1; break; case OLITERAL: if(n->val.ctype != CTNIL) return 1; break; case ONAME: l = n->sym->def; if(l && l->op == OLITERAL && n->val.ctype != CTNIL) return 1; break; case ONONAME: if(n->sym->def != N && n->sym->def->op == OIOTA) return 1; break; case OCALL: // Only constant calls are unsafe.Alignof, Offsetof, and Sizeof. l = n->left; while(l->op == OPAREN) l = l->left; if(l->op != ONAME || l->sym->pkg != unsafepkg) break; if(strcmp(l->sym->name, "Alignof") == 0 || strcmp(l->sym->name, "Offsetof") == 0 || strcmp(l->sym->name, "Sizeof") == 0) return 1; break; } //dump("nonconst", n); return 0; } static int hascallchan(Node *n) { NodeList *l; if(n == N) return 0; switch(n->op) { case OAPPEND: case OCALL: case OCALLFUNC: case OCALLINTER: case OCALLMETH: case OCAP: case OCLOSE: case OCOMPLEX: case OCOPY: case ODELETE: case OIMAG: case OLEN: case OMAKE: case ONEW: case OPANIC: case OPRINT: case OPRINTN: case OREAL: case ORECOVER: case ORECV: return 1; } if(hascallchan(n->left) || hascallchan(n->right)) return 1; for(l=n->list; l; l=l->next) if(hascallchan(l->n)) return 1; for(l=n->rlist; l; l=l->next) if(hascallchan(l->n)) return 1; return 0; } go/src/cmd/gc/cplx.c0100644000000000000000000002023412412656734014532 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "gg.h" static void subnode(Node *nr, Node *ni, Node *nc); static void minus(Node *nl, Node *res); void complexminus(Node*, Node*); void complexadd(int op, Node*, Node*, Node*); void complexmul(Node*, Node*, Node*); #define CASE(a,b) (((a)<<16)|((b)<<0)) static int overlap(Node *f, Node *t) { // check whether f and t could be overlapping stack references. // not exact, because it's hard to check for the stack register // in portable code. close enough: worst case we will allocate // an extra temporary and the registerizer will clean it up. return f->op == OINDREG && t->op == OINDREG && f->xoffset+f->type->width >= t->xoffset && t->xoffset+t->type->width >= f->xoffset; } /* * generate: * res = n; * simplifies and calls gmove. */ void complexmove(Node *f, Node *t) { int ft, tt; Node n1, n2, n3, n4, tmp; if(debug['g']) { dump("\ncomplexmove-f", f); dump("complexmove-t", t); } if(!t->addable) fatal("complexmove: to not addable"); ft = simsimtype(f->type); tt = simsimtype(t->type); switch(CASE(ft,tt)) { default: fatal("complexmove: unknown conversion: %T -> %T\n", f->type, t->type); case CASE(TCOMPLEX64,TCOMPLEX64): case CASE(TCOMPLEX64,TCOMPLEX128): case CASE(TCOMPLEX128,TCOMPLEX64): case CASE(TCOMPLEX128,TCOMPLEX128): // complex to complex move/convert. // make f addable. // also use temporary if possible stack overlap. if(!f->addable || overlap(f, t)) { tempname(&tmp, f->type); complexmove(f, &tmp); f = &tmp; } subnode(&n1, &n2, f); subnode(&n3, &n4, t); cgen(&n1, &n3); cgen(&n2, &n4); break; } } int complexop(Node *n, Node *res) { if(n != N && n->type != T) if(iscomplex[n->type->etype]) { goto maybe; } if(res != N && res->type != T) if(iscomplex[res->type->etype]) { goto maybe; } if(n->op == OREAL || n->op == OIMAG) goto yes; goto no; maybe: switch(n->op) { case OCONV: // implemented ops case OADD: case OSUB: case OMUL: case OMINUS: case OCOMPLEX: case OREAL: case OIMAG: goto yes; case ODOT: case ODOTPTR: case OINDEX: case OIND: case ONAME: goto yes; } no: //dump("\ncomplex-no", n); return 0; yes: //dump("\ncomplex-yes", n); return 1; } void complexgen(Node *n, Node *res) { Node *nl, *nr; Node tnl, tnr; Node n1, n2, tmp; int tl, tr; if(debug['g']) { dump("\ncomplexgen-n", n); dump("complexgen-res", res); } while(n->op == OCONVNOP) n = n->left; // pick off float/complex opcodes switch(n->op) { case OCOMPLEX: if(res->addable) { subnode(&n1, &n2, res); tempname(&tmp, n1.type); cgen(n->left, &tmp); cgen(n->right, &n2); cgen(&tmp, &n1); return; } break; case OREAL: case OIMAG: nl = n->left; if(!nl->addable) { tempname(&tmp, nl->type); complexgen(nl, &tmp); nl = &tmp; } subnode(&n1, &n2, nl); if(n->op == OREAL) { cgen(&n1, res); return; } cgen(&n2, res); return; } // perform conversion from n to res tl = simsimtype(res->type); tl = cplxsubtype(tl); tr = simsimtype(n->type); tr = cplxsubtype(tr); if(tl != tr) { if(!n->addable) { tempname(&n1, n->type); complexmove(n, &n1); n = &n1; } complexmove(n, res); return; } if(!res->addable) { igen(res, &n1, N); cgen(n, &n1); regfree(&n1); return; } if(n->addable) { complexmove(n, res); return; } switch(n->op) { default: dump("complexgen: unknown op", n); fatal("complexgen: unknown op %O", n->op); case ODOT: case ODOTPTR: case OINDEX: case OIND: case ONAME: // PHEAP or PPARAMREF var case OCALLFUNC: case OCALLMETH: case OCALLINTER: igen(n, &n1, res); complexmove(&n1, res); regfree(&n1); return; case OCONV: case OADD: case OSUB: case OMUL: case OMINUS: case OCOMPLEX: case OREAL: case OIMAG: break; } nl = n->left; if(nl == N) return; nr = n->right; // make both sides addable in ullman order if(nr != N) { if(nl->ullman > nr->ullman && !nl->addable) { tempname(&tnl, nl->type); cgen(nl, &tnl); nl = &tnl; } if(!nr->addable) { tempname(&tnr, nr->type); cgen(nr, &tnr); nr = &tnr; } } if(!nl->addable) { tempname(&tnl, nl->type); cgen(nl, &tnl); nl = &tnl; } switch(n->op) { default: fatal("complexgen: unknown op %O", n->op); break; case OCONV: complexmove(nl, res); break; case OMINUS: complexminus(nl, res); break; case OADD: case OSUB: complexadd(n->op, nl, nr, res); break; case OMUL: complexmul(nl, nr, res); break; } } void complexbool(int op, Node *nl, Node *nr, int true, int likely, Prog *to) { Node tnl, tnr; Node n1, n2, n3, n4; Node na, nb, nc; // make both sides addable in ullman order if(nr != N) { if(nl->ullman > nr->ullman && !nl->addable) { tempname(&tnl, nl->type); cgen(nl, &tnl); nl = &tnl; } if(!nr->addable) { tempname(&tnr, nr->type); cgen(nr, &tnr); nr = &tnr; } } if(!nl->addable) { tempname(&tnl, nl->type); cgen(nl, &tnl); nl = &tnl; } // build tree // real(l) == real(r) && imag(l) == imag(r) subnode(&n1, &n2, nl); subnode(&n3, &n4, nr); memset(&na, 0, sizeof(na)); na.op = OANDAND; na.left = &nb; na.right = &nc; na.type = types[TBOOL]; memset(&nb, 0, sizeof(na)); nb.op = OEQ; nb.left = &n1; nb.right = &n3; nb.type = types[TBOOL]; memset(&nc, 0, sizeof(na)); nc.op = OEQ; nc.left = &n2; nc.right = &n4; nc.type = types[TBOOL]; if(op == ONE) true = !true; bgen(&na, true, likely, to); } void nodfconst(Node *n, Type *t, Mpflt* fval) { memset(n, 0, sizeof(*n)); n->op = OLITERAL; n->addable = 1; ullmancalc(n); n->val.u.fval = fval; n->val.ctype = CTFLT; n->type = t; if(!isfloat[t->etype]) fatal("nodfconst: bad type %T", t); } // break addable nc-complex into nr-real and ni-imaginary static void subnode(Node *nr, Node *ni, Node *nc) { int tc; Type *t; if(!nc->addable) fatal("subnode not addable"); tc = simsimtype(nc->type); tc = cplxsubtype(tc); t = types[tc]; if(nc->op == OLITERAL) { nodfconst(nr, t, &nc->val.u.cval->real); nodfconst(ni, t, &nc->val.u.cval->imag); return; } *nr = *nc; nr->type = t; *ni = *nc; ni->type = t; ni->xoffset += t->width; } // generate code res = -nl static void minus(Node *nl, Node *res) { Node ra; memset(&ra, 0, sizeof(ra)); ra.op = OMINUS; ra.left = nl; ra.type = nl->type; cgen(&ra, res); } // build and execute tree // real(res) = -real(nl) // imag(res) = -imag(nl) void complexminus(Node *nl, Node *res) { Node n1, n2, n5, n6; subnode(&n1, &n2, nl); subnode(&n5, &n6, res); minus(&n1, &n5); minus(&n2, &n6); } // build and execute tree // real(res) = real(nl) op real(nr) // imag(res) = imag(nl) op imag(nr) void complexadd(int op, Node *nl, Node *nr, Node *res) { Node n1, n2, n3, n4, n5, n6; Node ra; subnode(&n1, &n2, nl); subnode(&n3, &n4, nr); subnode(&n5, &n6, res); memset(&ra, 0, sizeof(ra)); ra.op = op; ra.left = &n1; ra.right = &n3; ra.type = n1.type; cgen(&ra, &n5); memset(&ra, 0, sizeof(ra)); ra.op = op; ra.left = &n2; ra.right = &n4; ra.type = n2.type; cgen(&ra, &n6); } // build and execute tree // tmp = real(nl)*real(nr) - imag(nl)*imag(nr) // imag(res) = real(nl)*imag(nr) + imag(nl)*real(nr) // real(res) = tmp void complexmul(Node *nl, Node *nr, Node *res) { Node n1, n2, n3, n4, n5, n6; Node rm1, rm2, ra, tmp; subnode(&n1, &n2, nl); subnode(&n3, &n4, nr); subnode(&n5, &n6, res); tempname(&tmp, n5.type); // real part -> tmp memset(&rm1, 0, sizeof(ra)); rm1.op = OMUL; rm1.left = &n1; rm1.right = &n3; rm1.type = n1.type; memset(&rm2, 0, sizeof(ra)); rm2.op = OMUL; rm2.left = &n2; rm2.right = &n4; rm2.type = n2.type; memset(&ra, 0, sizeof(ra)); ra.op = OSUB; ra.left = &rm1; ra.right = &rm2; ra.type = rm1.type; cgen(&ra, &tmp); // imag part memset(&rm1, 0, sizeof(ra)); rm1.op = OMUL; rm1.left = &n1; rm1.right = &n4; rm1.type = n1.type; memset(&rm2, 0, sizeof(ra)); rm2.op = OMUL; rm2.left = &n2; rm2.right = &n3; rm2.type = n2.type; memset(&ra, 0, sizeof(ra)); ra.op = OADD; ra.left = &rm1; ra.right = &rm2; ra.type = rm1.type; cgen(&ra, &n6); // tmp ->real part cgen(&tmp, &n5); } go/src/cmd/gc/dcl.c0100644000000000000000000006654712412656734014347 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" #include "y.tab.h" static void funcargs(Node*); static void funcargs2(Type*); static int dflag(void) { if(!debug['d']) return 0; if(debug['y']) return 1; if(incannedimport) return 0; return 1; } /* * declaration stack & operations */ static void dcopy(Sym *a, Sym *b) { a->pkg = b->pkg; a->name = b->name; a->def = b->def; a->block = b->block; a->lastlineno = b->lastlineno; } static Sym* push(void) { Sym *d; d = mal(sizeof(*d)); d->lastlineno = lineno; d->link = dclstack; dclstack = d; return d; } static Sym* pushdcl(Sym *s) { Sym *d; d = push(); dcopy(d, s); if(dflag()) print("\t%L push %S %p\n", lineno, s, s->def); return d; } void popdcl(void) { Sym *d, *s; int lno; // if(dflag()) // print("revert\n"); for(d=dclstack; d!=S; d=d->link) { if(d->name == nil) break; s = pkglookup(d->name, d->pkg); lno = s->lastlineno; dcopy(s, d); d->lastlineno = lno; if(dflag()) print("\t%L pop %S %p\n", lineno, s, s->def); } if(d == S) fatal("popdcl: no mark"); dclstack = d->link; block = d->block; } void poptodcl(void) { // pop the old marker and push a new one // (cannot reuse the existing one) // because we use the markers to identify blocks // for the goto restriction checks. popdcl(); markdcl(); } void markdcl(void) { Sym *d; d = push(); d->name = nil; // used as a mark in fifo d->block = block; blockgen++; block = blockgen; // if(dflag()) // print("markdcl\n"); } void dumpdcl(char *st) { Sym *s, *d; int i; USED(st); i = 0; for(d=dclstack; d!=S; d=d->link) { i++; print(" %.2d %p", i, d); if(d->name == nil) { print("\n"); continue; } print(" '%s'", d->name); s = pkglookup(d->name, d->pkg); print(" %S\n", s); } } void testdclstack(void) { Sym *d; for(d=dclstack; d!=S; d=d->link) { if(d->name == nil) { if(nerrors != 0) errorexit(); yyerror("mark left on the stack"); continue; } } } void redeclare(Sym *s, char *where) { Strlit *pkgstr; int line1, line2; if(s->lastlineno == 0) { pkgstr = s->origpkg ? s->origpkg->path : s->pkg->path; yyerror("%S redeclared %s\n" "\tprevious declaration during import \"%Z\"", s, where, pkgstr); } else { line1 = parserline(); line2 = s->lastlineno; // When an import and a declaration collide in separate files, // present the import as the "redeclared", because the declaration // is visible where the import is, but not vice versa. // See issue 4510. if(s->def == N) { line2 = line1; line1 = s->lastlineno; } yyerrorl(line1, "%S redeclared %s\n" "\tprevious declaration at %L", s, where, line2); } } static int vargen; /* * declare individual names - var, typ, const */ void declare(Node *n, int ctxt) { Sym *s; int gen; static int typegen; if(ctxt == PDISCARD) return; if(isblank(n)) return; n->lineno = parserline(); s = n->sym; // kludgy: typecheckok means we're past parsing. Eg genwrapper may declare out of package names later. if(importpkg == nil && !typecheckok && s->pkg != localpkg) yyerror("cannot declare name %S", s); if(ctxt == PEXTERN && strcmp(s->name, "init") == 0) yyerror("cannot declare init - must be func", s); gen = 0; if(ctxt == PEXTERN) { externdcl = list(externdcl, n); if(dflag()) print("\t%L global decl %S %p\n", lineno, s, n); } else { if(curfn == nil && ctxt == PAUTO) fatal("automatic outside function"); if(curfn != nil) curfn->dcl = list(curfn->dcl, n); if(n->op == OTYPE) gen = ++typegen; else if(n->op == ONAME && ctxt == PAUTO && strstr(s->name, "·") == nil) gen = ++vargen; pushdcl(s); n->curfn = curfn; } if(ctxt == PAUTO) n->xoffset = 0; if(s->block == block) { // functype will print errors about duplicate function arguments. // Don't repeat the error here. if(ctxt != PPARAM && ctxt != PPARAMOUT) redeclare(s, "in this block"); } s->block = block; s->lastlineno = parserline(); s->def = n; n->vargen = gen; n->funcdepth = funcdepth; n->class = ctxt; autoexport(n, ctxt); } void addvar(Node *n, Type *t, int ctxt) { if(n==N || n->sym == S || (n->op != ONAME && n->op != ONONAME) || t == T) fatal("addvar: n=%N t=%T nil", n, t); n->op = ONAME; declare(n, ctxt); n->type = t; } /* * declare variables from grammar * new_name_list (type | [type] = expr_list) */ NodeList* variter(NodeList *vl, Node *t, NodeList *el) { int doexpr; Node *v, *e, *as2; NodeList *init; init = nil; doexpr = el != nil; if(count(el) == 1 && count(vl) > 1) { e = el->n; as2 = nod(OAS2, N, N); as2->list = vl; as2->rlist = list1(e); for(; vl; vl=vl->next) { v = vl->n; v->op = ONAME; declare(v, dclcontext); v->ntype = t; v->defn = as2; if(funcdepth > 0) init = list(init, nod(ODCL, v, N)); } return list(init, as2); } for(; vl; vl=vl->next) { if(doexpr) { if(el == nil) { yyerror("missing expression in var declaration"); break; } e = el->n; el = el->next; } else e = N; v = vl->n; v->op = ONAME; declare(v, dclcontext); v->ntype = t; if(e != N || funcdepth > 0 || isblank(v)) { if(funcdepth > 0) init = list(init, nod(ODCL, v, N)); e = nod(OAS, v, e); init = list(init, e); if(e->right != N) v->defn = e; } } if(el != nil) yyerror("extra expression in var declaration"); return init; } /* * declare constants from grammar * new_name_list [[type] = expr_list] */ NodeList* constiter(NodeList *vl, Node *t, NodeList *cl) { Node *v, *c; NodeList *vv; vv = nil; if(cl == nil) { if(t != N) yyerror("const declaration cannot have type without expression"); cl = lastconst; t = lasttype; } else { lastconst = cl; lasttype = t; } cl = listtreecopy(cl); for(; vl; vl=vl->next) { if(cl == nil) { yyerror("missing value in const declaration"); break; } c = cl->n; cl = cl->next; v = vl->n; v->op = OLITERAL; declare(v, dclcontext); v->ntype = t; v->defn = c; vv = list(vv, nod(ODCLCONST, v, N)); } if(cl != nil) yyerror("extra expression in const declaration"); iota += 1; return vv; } /* * this generates a new name node, * typically for labels or other one-off names. */ Node* newname(Sym *s) { Node *n; if(s == S) fatal("newname nil"); n = nod(ONAME, N, N); n->sym = s; n->type = T; n->addable = 1; n->ullman = 1; n->xoffset = 0; return n; } /* * this generates a new name node for a name * being declared. */ Node* dclname(Sym *s) { Node *n; n = newname(s); n->op = ONONAME; // caller will correct it return n; } Node* typenod(Type *t) { // if we copied another type with *t = *u // then t->nod might be out of date, so // check t->nod->type too if(t->nod == N || t->nod->type != t) { t->nod = nod(OTYPE, N, N); t->nod->type = t; t->nod->sym = t->sym; } return t->nod; } /* * this will return an old name * that has already been pushed on the * declaration list. a diagnostic is * generated if no name has been defined. */ Node* oldname(Sym *s) { Node *n; Node *c; n = s->def; if(n == N) { // maybe a top-level name will come along // to give this a definition later. // walkdef will check s->def again once // all the input source has been processed. n = newname(s); n->op = ONONAME; n->iota = iota; // save current iota value in const declarations } if(curfn != nil && n->funcdepth > 0 && n->funcdepth != funcdepth && n->op == ONAME) { // inner func is referring to var in outer func. // // TODO(rsc): If there is an outer variable x and we // are parsing x := 5 inside the closure, until we get to // the := it looks like a reference to the outer x so we'll // make x a closure variable unnecessarily. if(n->closure == N || n->closure->funcdepth != funcdepth) { // create new closure var. c = nod(ONAME, N, N); c->sym = s; c->class = PPARAMREF; c->isddd = n->isddd; c->defn = n; c->addable = 0; c->ullman = 2; c->funcdepth = funcdepth; c->outer = n->closure; n->closure = c; n->addrtaken = 1; c->closure = n; c->xoffset = 0; curfn->cvars = list(curfn->cvars, c); } // return ref to closure var, not original return n->closure; } return n; } /* * := declarations */ static int colasname(Node *n) { switch(n->op) { case ONAME: case ONONAME: case OPACK: case OTYPE: case OLITERAL: return n->sym != S; } return 0; } void colasdefn(NodeList *left, Node *defn) { int nnew, nerr; NodeList *l; Node *n; nnew = 0; nerr = 0; for(l=left; l; l=l->next) { n = l->n; if(isblank(n)) continue; if(!colasname(n)) { yyerrorl(defn->lineno, "non-name %N on left side of :=", n); nerr++; continue; } if(n->sym->block == block) continue; nnew++; n = newname(n->sym); declare(n, dclcontext); n->defn = defn; defn->ninit = list(defn->ninit, nod(ODCL, n, N)); l->n = n; } if(nnew == 0 && nerr == 0) yyerrorl(defn->lineno, "no new variables on left side of :="); } Node* colas(NodeList *left, NodeList *right, int32 lno) { Node *as; as = nod(OAS2, N, N); as->list = left; as->rlist = right; as->colas = 1; as->lineno = lno; colasdefn(left, as); // make the tree prettier; not necessary if(count(left) == 1 && count(right) == 1) { as->left = as->list->n; as->right = as->rlist->n; as->list = nil; as->rlist = nil; as->op = OAS; } return as; } /* * declare the arguments in an * interface field declaration. */ void ifacedcl(Node *n) { if(n->op != ODCLFIELD || n->right == N) fatal("ifacedcl"); dclcontext = PPARAM; markdcl(); funcdepth++; n->outer = curfn; curfn = n; funcargs(n->right); // funcbody is normally called after the parser has // seen the body of a function but since an interface // field declaration does not have a body, we must // call it now to pop the current declaration context. dclcontext = PAUTO; funcbody(n); } /* * declare the function proper * and declare the arguments. * called in extern-declaration context * returns in auto-declaration context. */ void funchdr(Node *n) { // change the declaration context from extern to auto if(funcdepth == 0 && dclcontext != PEXTERN) fatal("funchdr: dclcontext"); dclcontext = PAUTO; markdcl(); funcdepth++; n->outer = curfn; curfn = n; if(n->nname) funcargs(n->nname->ntype); else if (n->ntype) funcargs(n->ntype); else funcargs2(n->type); } static void funcargs(Node *nt) { Node *n, *nn; NodeList *l; int gen; if(nt->op != OTFUNC) fatal("funcargs %O", nt->op); // re-start the variable generation number // we want to use small numbers for the return variables, // so let them have the chunk starting at 1. vargen = count(nt->rlist); // declare the receiver and in arguments. // no n->defn because type checking of func header // will not fill in the types until later if(nt->left != N) { n = nt->left; if(n->op != ODCLFIELD) fatal("funcargs receiver %O", n->op); if(n->left != N) { n->left->op = ONAME; n->left->ntype = n->right; declare(n->left, PPARAM); if(dclcontext == PAUTO) n->left->vargen = ++vargen; } } for(l=nt->list; l; l=l->next) { n = l->n; if(n->op != ODCLFIELD) fatal("funcargs in %O", n->op); if(n->left != N) { n->left->op = ONAME; n->left->ntype = n->right; declare(n->left, PPARAM); if(dclcontext == PAUTO) n->left->vargen = ++vargen; } } // declare the out arguments. gen = count(nt->list); int i = 0; for(l=nt->rlist; l; l=l->next) { n = l->n; if(n->op != ODCLFIELD) fatal("funcargs out %O", n->op); if(n->left == N) { // Name so that escape analysis can track it. ~r stands for 'result'. snprint(namebuf, sizeof(namebuf), "~r%d", gen++); n->left = newname(lookup(namebuf)); // TODO: n->left->missing = 1; } n->left->op = ONAME; if(isblank(n->left)) { // Give it a name so we can assign to it during return. ~b stands for 'blank'. // The name must be different from ~r above because if you have // func f() (_ int) // func g() int // f is allowed to use a plain 'return' with no arguments, while g is not. // So the two cases must be distinguished. // We do not record a pointer to the original node (n->orig). // Having multiple names causes too much confusion in later passes. nn = nod(OXXX, N, N); *nn = *n->left; nn->orig = nn; snprint(namebuf, sizeof(namebuf), "~b%d", gen++); nn->sym = lookup(namebuf); n->left = nn; } n->left->ntype = n->right; declare(n->left, PPARAMOUT); if(dclcontext == PAUTO) n->left->vargen = ++i; } } /* * Same as funcargs, except run over an already constructed TFUNC. * This happens during import, where the hidden_fndcl rule has * used functype directly to parse the function's type. */ static void funcargs2(Type *t) { Type *ft; Node *n; if(t->etype != TFUNC) fatal("funcargs2 %T", t); if(t->thistuple) for(ft=getthisx(t)->type; ft; ft=ft->down) { if(!ft->nname || !ft->nname->sym) continue; n = ft->nname; // no need for newname(ft->nname->sym) n->type = ft->type; declare(n, PPARAM); } if(t->intuple) for(ft=getinargx(t)->type; ft; ft=ft->down) { if(!ft->nname || !ft->nname->sym) continue; n = ft->nname; n->type = ft->type; declare(n, PPARAM); } if(t->outtuple) for(ft=getoutargx(t)->type; ft; ft=ft->down) { if(!ft->nname || !ft->nname->sym) continue; n = ft->nname; n->type = ft->type; declare(n, PPARAMOUT); } } /* * finish the body. * called in auto-declaration context. * returns in extern-declaration context. */ void funcbody(Node *n) { // change the declaration context from auto to extern if(dclcontext != PAUTO) fatal("funcbody: dclcontext"); popdcl(); funcdepth--; curfn = n->outer; n->outer = N; if(funcdepth == 0) dclcontext = PEXTERN; } /* * new type being defined with name s. */ Node* typedcl0(Sym *s) { Node *n; n = newname(s); n->op = OTYPE; declare(n, dclcontext); return n; } /* * node n, which was returned by typedcl0 * is being declared to have uncompiled type t. * return the ODCLTYPE node to use. */ Node* typedcl1(Node *n, Node *t, int local) { n->ntype = t; n->local = local; return nod(ODCLTYPE, n, N); } /* * structs, functions, and methods. * they don't belong here, but where do they belong? */ static void checkembeddedtype(Type *t) { if (t == T) return; if(t->sym == S && isptr[t->etype]) { t = t->type; if(t->etype == TINTER) yyerror("embedded type cannot be a pointer to interface"); } if(isptr[t->etype]) yyerror("embedded type cannot be a pointer"); else if(t->etype == TFORW && t->embedlineno == 0) t->embedlineno = lineno; } static Type* structfield(Node *n) { Type *f; int lno; lno = lineno; lineno = n->lineno; if(n->op != ODCLFIELD) fatal("structfield: oops %N\n", n); f = typ(TFIELD); f->isddd = n->isddd; if(n->right != N) { typecheck(&n->right, Etype); n->type = n->right->type; if(n->left != N) n->left->type = n->type; if(n->embedded) checkembeddedtype(n->type); } n->right = N; f->type = n->type; if(f->type == T) f->broke = 1; switch(n->val.ctype) { case CTSTR: f->note = n->val.u.sval; break; default: yyerror("field annotation must be string"); // fallthrough case CTxxx: f->note = nil; break; } if(n->left && n->left->op == ONAME) { f->nname = n->left; f->embedded = n->embedded; f->sym = f->nname->sym; } lineno = lno; return f; } static uint32 uniqgen; static void checkdupfields(Type *t, char* what) { int lno; lno = lineno; for( ; t; t=t->down) { if(t->sym && t->nname && !isblank(t->nname)) { if(t->sym->uniqgen == uniqgen) { lineno = t->nname->lineno; yyerror("duplicate %s %s", what, t->sym->name); } else t->sym->uniqgen = uniqgen; } } lineno = lno; } /* * convert a parsed id/type list into * a type for struct/interface/arglist */ Type* tostruct(NodeList *l) { Type *t, *f, **tp; t = typ(TSTRUCT); for(tp = &t->type; l; l=l->next) { f = structfield(l->n); *tp = f; tp = &f->down; } for(f=t->type; f && !t->broke; f=f->down) if(f->broke) t->broke = 1; uniqgen++; checkdupfields(t->type, "field"); if (!t->broke) checkwidth(t); return t; } static Type* tofunargs(NodeList *l) { Type *t, *f, **tp; t = typ(TSTRUCT); t->funarg = 1; for(tp = &t->type; l; l=l->next) { f = structfield(l->n); f->funarg = 1; // esc.c needs to find f given a PPARAM to add the tag. if(l->n->left && l->n->left->class == PPARAM) l->n->left->paramfld = f; *tp = f; tp = &f->down; } for(f=t->type; f && !t->broke; f=f->down) if(f->broke) t->broke = 1; return t; } static Type* interfacefield(Node *n) { Type *f; int lno; lno = lineno; lineno = n->lineno; if(n->op != ODCLFIELD) fatal("interfacefield: oops %N\n", n); if (n->val.ctype != CTxxx) yyerror("interface method cannot have annotation"); f = typ(TFIELD); f->isddd = n->isddd; if(n->right != N) { if(n->left != N) { // queue resolution of method type for later. // right now all we need is the name list. // avoids cycles for recursive interface types. n->type = typ(TINTERMETH); n->type->nname = n->right; n->left->type = n->type; queuemethod(n); if(n->left->op == ONAME) { f->nname = n->left; f->embedded = n->embedded; f->sym = f->nname->sym; } } else { typecheck(&n->right, Etype); n->type = n->right->type; if(n->embedded) checkembeddedtype(n->type); if(n->type) switch(n->type->etype) { case TINTER: break; case TFORW: yyerror("interface type loop involving %T", n->type); f->broke = 1; break; default: yyerror("interface contains embedded non-interface %T", n->type); f->broke = 1; break; } } } n->right = N; f->type = n->type; if(f->type == T) f->broke = 1; lineno = lno; return f; } Type* tointerface(NodeList *l) { Type *t, *f, **tp, *t1; t = typ(TINTER); tp = &t->type; for(; l; l=l->next) { f = interfacefield(l->n); if (l->n->left == N && f->type->etype == TINTER) { // embedded interface, inline methods for(t1=f->type->type; t1; t1=t1->down) { f = typ(TFIELD); f->type = t1->type; f->broke = t1->broke; f->sym = t1->sym; if(f->sym) f->nname = newname(f->sym); *tp = f; tp = &f->down; } } else { *tp = f; tp = &f->down; } } for(f=t->type; f && !t->broke; f=f->down) if(f->broke) t->broke = 1; uniqgen++; checkdupfields(t->type, "method"); t = sortinter(t); checkwidth(t); return t; } Node* embedded(Sym *s, Pkg *pkg) { Node *n; char *name; // Names sometimes have disambiguation junk // appended after a center dot. Discard it when // making the name for the embedded struct field. enum { CenterDot = 0xB7 }; name = s->name; if(utfrune(s->name, CenterDot)) { name = strdup(s->name); *utfrune(name, CenterDot) = 0; } if(exportname(name)) n = newname(lookup(name)); else if(s->pkg == builtinpkg) // The name of embedded builtins belongs to pkg. n = newname(pkglookup(name, pkg)); else n = newname(pkglookup(name, s->pkg)); n = nod(ODCLFIELD, n, oldname(s)); n->embedded = 1; return n; } /* * check that the list of declarations is either all anonymous or all named */ static Node* findtype(NodeList *l) { for(; l; l=l->next) if(l->n->op == OKEY) return l->n->right; return N; } NodeList* checkarglist(NodeList *all, int input) { int named; Node *n, *t, *nextt; NodeList *l; named = 0; for(l=all; l; l=l->next) { if(l->n->op == OKEY) { named = 1; break; } } if(named) { n = N; for(l=all; l; l=l->next) { n = l->n; if(n->op != OKEY && n->sym == S) { yyerror("mixed named and unnamed function parameters"); break; } } if(l == nil && n != N && n->op != OKEY) yyerror("final function parameter must have type"); } nextt = nil; for(l=all; l; l=l->next) { // can cache result from findtype to avoid // quadratic behavior here, but unlikely to matter. n = l->n; if(named) { if(n->op == OKEY) { t = n->right; n = n->left; nextt = nil; } else { if(nextt == nil) nextt = findtype(l); t = nextt; } } else { t = n; n = N; } // during import l->n->op is OKEY, but l->n->left->sym == S // means it was a '?', not that it was // a lone type This doesn't matter for the exported // declarations, which are parsed by rules that don't // use checkargs, but can happen for func literals in // the inline bodies. // TODO(rsc) this can go when typefmt case TFIELD in exportmode fmt.c prints _ instead of ? if(importpkg && n->sym == S) n = N; if(n != N && n->sym == S) { t = n; n = N; } if(n != N) n = newname(n->sym); n = nod(ODCLFIELD, n, t); if(n->right != N && n->right->op == ODDD) { if(!input) yyerror("cannot use ... in output argument list"); else if(l->next != nil) yyerror("can only use ... as final argument in list"); n->right->op = OTARRAY; n->right->right = n->right->left; n->right->left = N; n->isddd = 1; if(n->left != N) n->left->isddd = 1; } l->n = n; } return all; } Node* fakethis(void) { Node *n; n = nod(ODCLFIELD, N, typenod(ptrto(typ(TSTRUCT)))); return n; } /* * Is this field a method on an interface? * Those methods have an anonymous * *struct{} as the receiver. * (See fakethis above.) */ int isifacemethod(Type *f) { Type *rcvr; Type *t; rcvr = getthisx(f)->type; if(rcvr->sym != S) return 0; t = rcvr->type; if(!isptr[t->etype]) return 0; t = t->type; if(t->sym != S || t->etype != TSTRUCT || t->type != T) return 0; return 1; } /* * turn a parsed function declaration * into a type */ Type* functype(Node *this, NodeList *in, NodeList *out) { Type *t; NodeList *rcvr; Sym *s; t = typ(TFUNC); rcvr = nil; if(this) rcvr = list1(this); t->type = tofunargs(rcvr); t->type->down = tofunargs(out); t->type->down->down = tofunargs(in); uniqgen++; checkdupfields(t->type->type, "argument"); checkdupfields(t->type->down->type, "argument"); checkdupfields(t->type->down->down->type, "argument"); if (t->type->broke || t->type->down->broke || t->type->down->down->broke) t->broke = 1; if(this) t->thistuple = 1; t->outtuple = count(out); t->intuple = count(in); t->outnamed = 0; if(t->outtuple > 0 && out->n->left != N && out->n->left->orig != N) { s = out->n->left->orig->sym; if(s != S && (s->name[0] != '~' || s->name[1] != 'r')) // ~r%d is the name invented for an unnamed result t->outnamed = 1; } return t; } Sym* methodsym(Sym *nsym, Type *t0, int iface) { Sym *s; char *p; Type *t; char *suffix; Pkg *spkg; static Pkg *toppkg; t = t0; if(t == T) goto bad; s = t->sym; if(s == S && isptr[t->etype]) { t = t->type; if(t == T) goto bad; s = t->sym; } spkg = nil; if(s != S) spkg = s->pkg; // if t0 == *t and t0 has a sym, // we want to see *t, not t0, in the method name. if(t != t0 && t0->sym) t0 = ptrto(t); suffix = ""; if(iface) { dowidth(t0); if(t0->width < types[tptr]->width) suffix = "·i"; } if((spkg == nil || nsym->pkg != spkg) && !exportname(nsym->name)) { if(t0->sym == S && isptr[t0->etype]) p = smprint("(%-hT).%s.%s%s", t0, nsym->pkg->prefix, nsym->name, suffix); else p = smprint("%-hT.%s.%s%s", t0, nsym->pkg->prefix, nsym->name, suffix); } else { if(t0->sym == S && isptr[t0->etype]) p = smprint("(%-hT).%s%s", t0, nsym->name, suffix); else p = smprint("%-hT.%s%s", t0, nsym->name, suffix); } if(spkg == nil) { if(toppkg == nil) toppkg = mkpkg(strlit("go")); spkg = toppkg; } s = pkglookup(p, spkg); free(p); return s; bad: yyerror("illegal receiver type: %T", t0); return S; } Node* methodname(Node *n, Type *t) { Sym *s; s = methodsym(n->sym, t, 0); if(s == S) return n; return newname(s); } Node* methodname1(Node *n, Node *t) { char *star; char *p; star = nil; if(t->op == OIND) { star = "*"; t = t->left; } if(t->sym == S || isblank(n)) return newname(n->sym); if(star) p = smprint("(%s%S).%S", star, t->sym, n->sym); else p = smprint("%S.%S", t->sym, n->sym); if(exportname(t->sym->name)) n = newname(lookup(p)); else n = newname(pkglookup(p, t->sym->pkg)); free(p); return n; } /* * add a method, declared as a function, * n is fieldname, pa is base type, t is function type */ void addmethod(Sym *sf, Type *t, int local, int nointerface) { Type *f, *d, *pa; Node *n; // get field sym if(sf == S) fatal("no method symbol"); // get parent type sym pa = getthisx(t)->type; // ptr to this structure if(pa == T) { yyerror("missing receiver"); return; } pa = pa->type; f = methtype(pa, 1); if(f == T) { t = pa; if(t == T) // rely on typecheck having complained before return; if(t != T) { if(isptr[t->etype]) { if(t->sym != S) { yyerror("invalid receiver type %T (%T is a pointer type)", pa, t); return; } t = t->type; } if(t->broke) // rely on typecheck having complained before return; if(t->sym == S) { yyerror("invalid receiver type %T (%T is an unnamed type)", pa, t); return; } if(isptr[t->etype]) { yyerror("invalid receiver type %T (%T is a pointer type)", pa, t); return; } if(t->etype == TINTER) { yyerror("invalid receiver type %T (%T is an interface type)", pa, t); return; } } // Should have picked off all the reasons above, // but just in case, fall back to generic error. yyerror("invalid receiver type %T (%lT / %lT)", pa, pa, t); return; } pa = f; if(pa->etype == TSTRUCT) { for(f=pa->type; f; f=f->down) { if(f->sym == sf) { yyerror("type %T has both field and method named %S", pa, sf); return; } } } if(local && !pa->local) { // defining method on non-local type. yyerror("cannot define new methods on non-local type %T", pa); return; } n = nod(ODCLFIELD, newname(sf), N); n->type = t; d = T; // last found for(f=pa->method; f!=T; f=f->down) { d = f; if(f->etype != TFIELD) fatal("addmethod: not TFIELD: %N", f); if(strcmp(sf->name, f->sym->name) != 0) continue; if(!eqtype(t, f->type)) yyerror("method redeclared: %T.%S\n\t%T\n\t%T", pa, sf, f->type, t); return; } f = structfield(n); f->nointerface = nointerface; // during import unexported method names should be in the type's package if(importpkg && f->sym && !exportname(f->sym->name) && f->sym->pkg != structpkg) fatal("imported method name %+S in wrong package %s\n", f->sym, structpkg->name); if(d == T) pa->method = f; else d->down = f; return; } void funccompile(Node *n, int isclosure) { stksize = BADWIDTH; maxarg = 0; if(n->type == T) { if(nerrors == 0) fatal("funccompile missing type"); return; } // assign parameter offsets checkwidth(n->type); // record offset to actual frame pointer. // for closure, have to skip over leading pointers and PC slot. // TODO(rsc): this is the old jit closure handling code. // with the new closures, isclosure is always 0; delete this block. nodfp->xoffset = 0; if(isclosure) { NodeList *l; for(l=n->nname->ntype->list; l; l=l->next) { nodfp->xoffset += widthptr; if(l->n->left == N) // found slot for PC break; } } if(curfn) fatal("funccompile %S inside %S", n->nname->sym, curfn->nname->sym); stksize = 0; dclcontext = PAUTO; funcdepth = n->funcdepth + 1; compile(n); curfn = nil; funcdepth = 0; dclcontext = PEXTERN; } Sym* funcsym(Sym *s) { char *p; Sym *s1; p = smprint("%s·f", s->name); s1 = pkglookup(p, s->pkg); free(p); if(s1->def == N) { s1->def = newname(s1); s1->def->shortname = newname(s); funcsyms = list(funcsyms, s1->def); } return s1; } go/src/cmd/gc/doc.go0100644000000000000000000000704112412656734014515 0ustar00rootroot00000000000000// Copyright 2009 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 ignore /* Gc is the generic label for the family of Go compilers that function as part of the (modified) Plan 9 tool chain. The C compiler documentation at http://plan9.bell-labs.com/sys/doc/comp.pdf (Tools overview) http://plan9.bell-labs.com/sys/doc/compiler.pdf (C compiler architecture) gives the overall design of the tool chain. Aside from a few adapted pieces, such as the optimizer, the Go compilers are wholly new programs. The compiler reads in a set of Go files, typically suffixed ".go". They must all be part of one package. The output is a single intermediate file representing the "binary assembly" of the compiled package, ready as input for the linker (6l, etc.). The generated files contain type information about the symbols exported by the package and about types used by symbols imported by the package from other packages. It is therefore not necessary when compiling client C of package P to read the files of P's dependencies, only the compiled output of P. Command Line Usage: go tool 6g [flags] file... The specified files must be Go source files and all part of the same package. Substitute 6g with 8g or 5g where appropriate. Flags: -o file output file, default file.6 for 6g, etc. -pack write an archive file rather than an object file -e normally the compiler quits after 10 errors; -e prints all errors -p path assume that path is the eventual import path for this code, and diagnose any attempt to import a package that depends on it. -D path treat a relative import as relative to path -L show entire file path when printing line numbers in errors -I dir1 -I dir2 add dir1 and dir2 to the list of paths to check for imported packages -N disable optimizations -nolocalimports disallow local (relative) imports -S write assembly language text to standard output (code only) -S -S write assembly language text to standard output (code and data) -u disallow importing packages not marked as safe; implies -nolocalimports -V print the compiler version -race compile with race detection enabled There are also a number of debugging flags; run the command with no arguments to get a usage message. Compiler Directives The compiler accepts two compiler directives in the form of // comments at the beginning of a line. To distinguish them from non-directive comments, the directives require no space between the slashes and the name of the directive. However, since they are comments, tools unaware of the directive convention or of a particular directive can skip over a directive like any other comment. //line path/to/file:linenumber The //line directive specifies that the source line that follows should be recorded as having come from the given file path and line number. Successive lines are recorded using increasing line numbers, until the next directive. This directive typically appears in machine-generated code, so that compilers and debuggers will show lines in the original input to the generator. //go:noescape The //go:noescape directive specifies that the next declaration in the file, which must be a func without a body (meaning that it has an implementation not written in Go) does not allow any of the pointers passed as arguments to escape into the heap or into the values returned from the function. This information can be used as during the compiler's escape analysis of Go code calling the function. */ package main go/src/cmd/gc/esc.c0100644000000000000000000010140412412656737014340 0ustar00rootroot00000000000000// Copyright 2011 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. // Escape analysis. #include #include #include "go.h" // Run analysis on minimal sets of mutually recursive functions // or single non-recursive functions, bottom up. // // Finding these sets is finding strongly connected components // in the static call graph. The algorithm for doing that is taken // from Sedgewick, Algorithms, Second Edition, p. 482, with two // adaptations. // // First, a hidden closure function (n->curfn != N) cannot be the // root of a connected component. Refusing to use it as a root // forces it into the component of the function in which it appears. // The analysis assumes that closures and the functions in which they // appear are analyzed together, so that the aliasing between their // variables can be modeled more precisely. // // Second, each function becomes two virtual nodes in the graph, // with numbers n and n+1. We record the function's node number as n // but search from node n+1. If the search tells us that the component // number (min) is n+1, we know that this is a trivial component: one function // plus its closures. If the search tells us that the component number is // n, then there was a path from node n+1 back to node n, meaning that // the function set is mutually recursive. The escape analysis can be // more precise when analyzing a single non-recursive function than // when analyzing a set of mutually recursive functions. static NodeList *stack; static uint32 visitgen; static uint32 visit(Node*); static uint32 visitcode(Node*, uint32); static uint32 visitcodelist(NodeList*, uint32); static void analyze(NodeList*, int); enum { EscFuncUnknown = 0, EscFuncPlanned, EscFuncStarted, EscFuncTagged, }; void escapes(NodeList *all) { NodeList *l; for(l=all; l; l=l->next) l->n->walkgen = 0; visitgen = 0; for(l=all; l; l=l->next) if(l->n->op == ODCLFUNC && l->n->curfn == N) visit(l->n); for(l=all; l; l=l->next) l->n->walkgen = 0; } static uint32 visit(Node *n) { uint32 min, recursive; NodeList *l, *block; if(n->walkgen > 0) { // already visited return n->walkgen; } visitgen++; n->walkgen = visitgen; visitgen++; min = visitgen; l = mal(sizeof *l); l->next = stack; l->n = n; stack = l; min = visitcodelist(n->nbody, min); if((min == n->walkgen || min == n->walkgen+1) && n->curfn == N) { // This node is the root of a strongly connected component. // The original min passed to visitcodelist was n->walkgen+1. // If visitcodelist found its way back to n->walkgen, then this // block is a set of mutually recursive functions. // Otherwise it's just a lone function that does not recurse. recursive = min == n->walkgen; // Remove connected component from stack. // Mark walkgen so that future visits return a large number // so as not to affect the caller's min. block = stack; for(l=stack; l->n != n; l=l->next) l->n->walkgen = (uint32)~0U; n->walkgen = (uint32)~0U; stack = l->next; l->next = nil; // Run escape analysis on this set of functions. analyze(block, recursive); } return min; } static uint32 visitcodelist(NodeList *l, uint32 min) { for(; l; l=l->next) min = visitcode(l->n, min); return min; } static uint32 visitcode(Node *n, uint32 min) { Node *fn; uint32 m; if(n == N) return min; min = visitcodelist(n->ninit, min); min = visitcode(n->left, min); min = visitcode(n->right, min); min = visitcodelist(n->list, min); min = visitcode(n->ntest, min); min = visitcode(n->nincr, min); min = visitcodelist(n->nbody, min); min = visitcodelist(n->nelse, min); min = visitcodelist(n->rlist, min); if(n->op == OCALLFUNC || n->op == OCALLMETH) { fn = n->left; if(n->op == OCALLMETH) fn = n->left->right->sym->def; if(fn && fn->op == ONAME && fn->class == PFUNC && fn->defn) if((m = visit(fn->defn)) < min) min = m; } if(n->op == OCLOSURE) if((m = visit(n->closure)) < min) min = m; return min; } // An escape analysis pass for a set of functions. // // First escfunc, esc and escassign recurse over the ast of each // function to dig out flow(dst,src) edges between any // pointer-containing nodes and store them in dst->escflowsrc. For // variables assigned to a variable in an outer scope or used as a // return value, they store a flow(theSink, src) edge to a fake node // 'the Sink'. For variables referenced in closures, an edge // flow(closure, &var) is recorded and the flow of a closure itself to // an outer scope is tracked the same way as other variables. // // Then escflood walks the graph starting at theSink and tags all // variables of it can reach an & node as escaping and all function // parameters it can reach as leaking. // // If a value's address is taken but the address does not escape, // then the value can stay on the stack. If the value new(T) does // not escape, then new(T) can be rewritten into a stack allocation. // The same is true of slice literals. // // If optimizations are disabled (-N), this code is not used. // Instead, the compiler assumes that any value whose address // is taken without being immediately dereferenced // needs to be moved to the heap, and new(T) and slice // literals are always real allocations. typedef struct EscState EscState; static void escfunc(EscState*, Node *func); static void esclist(EscState*, NodeList *l, Node *up); static void esc(EscState*, Node *n, Node *up); static void escloopdepthlist(EscState*, NodeList *l); static void escloopdepth(EscState*, Node *n); static void escassign(EscState*, Node *dst, Node *src); static void esccall(EscState*, Node*, Node *up); static void escflows(EscState*, Node *dst, Node *src); static void escflood(EscState*, Node *dst); static void escwalk(EscState*, int level, Node *dst, Node *src); static void esctag(EscState*, Node *func); struct EscState { // Fake node that all // - return values and output variables // - parameters on imported functions not marked 'safe' // - assignments to global variables // flow to. Node theSink; // If an analyzed function is recorded to return // pieces obtained via indirection from a parameter, // and later there is a call f(x) to that function, // we create a link funcParam <- x to record that fact. // The funcParam node is handled specially in escflood. Node funcParam; NodeList* dsts; // all dst nodes int loopdepth; // for detecting nested loop scopes int pdepth; // for debug printing in recursions. int dstcount, edgecount; // diagnostic NodeList* noesc; // list of possible non-escaping nodes, for printing int recursive; // recursive function or group of mutually recursive functions. }; static Strlit *tags[16]; static Strlit* mktag(int mask) { Strlit *s; char buf[40]; switch(mask&EscMask) { case EscNone: case EscReturn: break; default: fatal("escape mktag"); } mask >>= EscBits; if(mask < nelem(tags) && tags[mask] != nil) return tags[mask]; snprint(buf, sizeof buf, "esc:0x%x", mask); s = strlit(buf); if(mask < nelem(tags)) tags[mask] = s; return s; } static int parsetag(Strlit *note) { int em; if(note == nil) return EscUnknown; if(strncmp(note->s, "esc:", 4) != 0) return EscUnknown; em = atoi(note->s + 4); if (em == 0) return EscNone; return EscReturn | (em << EscBits); } static void analyze(NodeList *all, int recursive) { NodeList *l; EscState es, *e; memset(&es, 0, sizeof es); e = &es; e->theSink.op = ONAME; e->theSink.orig = &e->theSink; e->theSink.class = PEXTERN; e->theSink.sym = lookup(".sink"); e->theSink.escloopdepth = -1; e->recursive = recursive; e->funcParam.op = ONAME; e->funcParam.orig = &e->funcParam; e->funcParam.class = PAUTO; e->funcParam.sym = lookup(".param"); e->funcParam.escloopdepth = 10000000; for(l=all; l; l=l->next) if(l->n->op == ODCLFUNC) l->n->esc = EscFuncPlanned; // flow-analyze functions for(l=all; l; l=l->next) if(l->n->op == ODCLFUNC) escfunc(e, l->n); // print("escapes: %d e->dsts, %d edges\n", e->dstcount, e->edgecount); // visit the upstream of each dst, mark address nodes with // addrescapes, mark parameters unsafe for(l = e->dsts; l; l=l->next) escflood(e, l->n); // for all top level functions, tag the typenodes corresponding to the param nodes for(l=all; l; l=l->next) if(l->n->op == ODCLFUNC) esctag(e, l->n); if(debug['m']) { for(l=e->noesc; l; l=l->next) if(l->n->esc == EscNone) warnl(l->n->lineno, "%S %hN does not escape", (l->n->curfn && l->n->curfn->nname) ? l->n->curfn->nname->sym : S, l->n); } } static void escfunc(EscState *e, Node *func) { Node *savefn; NodeList *ll; int saveld; // print("escfunc %N %s\n", func->nname, e->recursive?"(recursive)":""); if(func->esc != 1) fatal("repeat escfunc %N", func->nname); func->esc = EscFuncStarted; saveld = e->loopdepth; e->loopdepth = 1; savefn = curfn; curfn = func; for(ll=curfn->dcl; ll; ll=ll->next) { if(ll->n->op != ONAME) continue; switch (ll->n->class) { case PPARAMOUT: // out params are in a loopdepth between the sink and all local variables ll->n->escloopdepth = 0; break; case PPARAM: ll->n->escloopdepth = 1; if(ll->n->type && !haspointers(ll->n->type)) break; if(curfn->nbody == nil && !curfn->noescape) ll->n->esc = EscHeap; else ll->n->esc = EscNone; // prime for escflood later e->noesc = list(e->noesc, ll->n); break; } } // in a mutually recursive group we lose track of the return values if(e->recursive) for(ll=curfn->dcl; ll; ll=ll->next) if(ll->n->op == ONAME && ll->n->class == PPARAMOUT) escflows(e, &e->theSink, ll->n); escloopdepthlist(e, curfn->nbody); esclist(e, curfn->nbody, curfn); curfn = savefn; e->loopdepth = saveld; } // Mark labels that have no backjumps to them as not increasing e->loopdepth. // Walk hasn't generated (goto|label)->left->sym->label yet, so we'll cheat // and set it to one of the following two. Then in esc we'll clear it again. static Label looping; static Label nonlooping; static void escloopdepthlist(EscState *e, NodeList *l) { for(; l; l=l->next) escloopdepth(e, l->n); } static void escloopdepth(EscState *e, Node *n) { if(n == N) return; escloopdepthlist(e, n->ninit); switch(n->op) { case OLABEL: if(!n->left || !n->left->sym) fatal("esc:label without label: %+N", n); // Walk will complain about this label being already defined, but that's not until // after escape analysis. in the future, maybe pull label & goto analysis out of walk and put before esc // if(n->left->sym->label != nil) // fatal("escape analysis messed up analyzing label: %+N", n); n->left->sym->label = &nonlooping; break; case OGOTO: if(!n->left || !n->left->sym) fatal("esc:goto without label: %+N", n); // If we come past one that's uninitialized, this must be a (harmless) forward jump // but if it's set to nonlooping the label must have preceded this goto. if(n->left->sym->label == &nonlooping) n->left->sym->label = &looping; break; } escloopdepth(e, n->left); escloopdepth(e, n->right); escloopdepthlist(e, n->list); escloopdepth(e, n->ntest); escloopdepth(e, n->nincr); escloopdepthlist(e, n->nbody); escloopdepthlist(e, n->nelse); escloopdepthlist(e, n->rlist); } static void esclist(EscState *e, NodeList *l, Node *up) { for(; l; l=l->next) esc(e, l->n, up); } static void esc(EscState *e, Node *n, Node *up) { int lno; NodeList *ll, *lr; Node *a; if(n == N) return; lno = setlineno(n); // ninit logically runs at a different loopdepth than the rest of the for loop. esclist(e, n->ninit, n); if(n->op == OFOR || n->op == ORANGE) e->loopdepth++; // type switch variables have no ODCL. // process type switch as declaration. // must happen before processing of switch body, // so before recursion. if(n->op == OSWITCH && n->ntest && n->ntest->op == OTYPESW) { for(ll=n->list; ll; ll=ll->next) { // cases // ll->n->nname is the variable per case if(ll->n->nname) ll->n->nname->escloopdepth = e->loopdepth; } } esc(e, n->left, n); esc(e, n->right, n); esc(e, n->ntest, n); esc(e, n->nincr, n); esclist(e, n->nbody, n); esclist(e, n->nelse, n); esclist(e, n->list, n); esclist(e, n->rlist, n); if(n->op == OFOR || n->op == ORANGE) e->loopdepth--; if(debug['m'] > 1) print("%L:[%d] %S esc: %N\n", lineno, e->loopdepth, (curfn && curfn->nname) ? curfn->nname->sym : S, n); switch(n->op) { case ODCL: // Record loop depth at declaration. if(n->left) n->left->escloopdepth = e->loopdepth; break; case OLABEL: if(n->left->sym->label == &nonlooping) { if(debug['m'] > 1) print("%L:%N non-looping label\n", lineno, n); } else if(n->left->sym->label == &looping) { if(debug['m'] > 1) print("%L: %N looping label\n", lineno, n); e->loopdepth++; } // See case OLABEL in escloopdepth above // else if(n->left->sym->label == nil) // fatal("escape analysis missed or messed up a label: %+N", n); n->left->sym->label = nil; break; case ORANGE: // Everything but fixed array is a dereference. if(isfixedarray(n->type) && n->list->next) escassign(e, n->list->next->n, n->right); break; case OSWITCH: if(n->ntest && n->ntest->op == OTYPESW) { for(ll=n->list; ll; ll=ll->next) { // cases // ntest->right is the argument of the .(type), // ll->n->nname is the variable per case escassign(e, ll->n->nname, n->ntest->right); } } break; case OAS: case OASOP: escassign(e, n->left, n->right); break; case OAS2: // x,y = a,b if(count(n->list) == count(n->rlist)) for(ll=n->list, lr=n->rlist; ll; ll=ll->next, lr=lr->next) escassign(e, ll->n, lr->n); break; case OAS2RECV: // v, ok = <-ch case OAS2MAPR: // v, ok = m[k] case OAS2DOTTYPE: // v, ok = x.(type) escassign(e, n->list->n, n->rlist->n); break; case OSEND: // ch <- x escassign(e, &e->theSink, n->right); break; case ODEFER: if(e->loopdepth == 1) // top level break; // arguments leak out of scope // TODO: leak to a dummy node instead // fallthrough case OPROC: // go f(x) - f and x escape escassign(e, &e->theSink, n->left->left); escassign(e, &e->theSink, n->left->right); // ODDDARG for call for(ll=n->left->list; ll; ll=ll->next) escassign(e, &e->theSink, ll->n); break; case OCALLMETH: case OCALLFUNC: case OCALLINTER: esccall(e, n, up); break; case OAS2FUNC: // x,y = f() // esccall already done on n->rlist->n. tie it's escretval to n->list lr=n->rlist->n->escretval; for(ll=n->list; lr && ll; lr=lr->next, ll=ll->next) escassign(e, ll->n, lr->n); if(lr || ll) fatal("esc oas2func"); break; case ORETURN: ll=n->list; if(count(n->list) == 1 && curfn->type->outtuple > 1) { // OAS2FUNC in disguise // esccall already done on n->list->n // tie n->list->n->escretval to curfn->dcl PPARAMOUT's ll = n->list->n->escretval; } for(lr = curfn->dcl; lr && ll; lr=lr->next) { if (lr->n->op != ONAME || lr->n->class != PPARAMOUT) continue; escassign(e, lr->n, ll->n); ll = ll->next; } if (ll != nil) fatal("esc return list"); break; case OPANIC: // Argument could leak through recover. escassign(e, &e->theSink, n->left); break; case OAPPEND: if(!n->isddd) for(ll=n->list->next; ll; ll=ll->next) escassign(e, &e->theSink, ll->n); // lose track of assign to dereference break; case OCONV: case OCONVNOP: case OCONVIFACE: escassign(e, n, n->left); break; case OARRAYLIT: if(isslice(n->type)) { n->esc = EscNone; // until proven otherwise e->noesc = list(e->noesc, n); n->escloopdepth = e->loopdepth; // Values make it to memory, lose track. for(ll=n->list; ll; ll=ll->next) escassign(e, &e->theSink, ll->n->right); } else { // Link values to array. for(ll=n->list; ll; ll=ll->next) escassign(e, n, ll->n->right); } break; case OSTRUCTLIT: // Link values to struct. for(ll=n->list; ll; ll=ll->next) escassign(e, n, ll->n->right); break; case OPTRLIT: n->esc = EscNone; // until proven otherwise e->noesc = list(e->noesc, n); n->escloopdepth = e->loopdepth; // Contents make it to memory, lose track. escassign(e, &e->theSink, n->left); break; case OCALLPART: n->esc = EscNone; // until proven otherwise e->noesc = list(e->noesc, n); n->escloopdepth = e->loopdepth; // Contents make it to memory, lose track. escassign(e, &e->theSink, n->left); break; case OMAPLIT: n->esc = EscNone; // until proven otherwise e->noesc = list(e->noesc, n); n->escloopdepth = e->loopdepth; // Keys and values make it to memory, lose track. for(ll=n->list; ll; ll=ll->next) { escassign(e, &e->theSink, ll->n->left); escassign(e, &e->theSink, ll->n->right); } break; case OCLOSURE: // Link addresses of captured variables to closure. for(ll=n->cvars; ll; ll=ll->next) { if(ll->n->op == OXXX) // unnamed out argument; see dcl.c:/^funcargs continue; a = nod(OADDR, ll->n->closure, N); a->lineno = ll->n->lineno; a->escloopdepth = e->loopdepth; typecheck(&a, Erv); escassign(e, n, a); } // fallthrough case OMAKECHAN: case OMAKEMAP: case OMAKESLICE: case ONEW: n->escloopdepth = e->loopdepth; n->esc = EscNone; // until proven otherwise e->noesc = list(e->noesc, n); break; case OADDR: n->esc = EscNone; // until proven otherwise e->noesc = list(e->noesc, n); // current loop depth is an upper bound on actual loop depth // of addressed value. n->escloopdepth = e->loopdepth; // for &x, use loop depth of x if known. // it should always be known, but if not, be conservative // and keep the current loop depth. if(n->left->op == ONAME) { switch(n->left->class) { case PAUTO: if(n->left->escloopdepth != 0) n->escloopdepth = n->left->escloopdepth; break; case PPARAM: case PPARAMOUT: // PPARAM is loop depth 1 always. // PPARAMOUT is loop depth 0 for writes // but considered loop depth 1 for address-of, // so that writing the address of one result // to another (or the same) result makes the // first result move to the heap. n->escloopdepth = 1; break; } } break; } lineno = lno; } // Assert that expr somehow gets assigned to dst, if non nil. for // dst==nil, any name node expr still must be marked as being // evaluated in curfn. For expr==nil, dst must still be examined for // evaluations inside it (e.g *f(x) = y) static void escassign(EscState *e, Node *dst, Node *src) { int lno; NodeList *ll; if(isblank(dst) || dst == N || src == N || src->op == ONONAME || src->op == OXXX) return; if(debug['m'] > 1) print("%L:[%d] %S escassign: %hN(%hJ) = %hN(%hJ)\n", lineno, e->loopdepth, (curfn && curfn->nname) ? curfn->nname->sym : S, dst, dst, src, src); setlineno(dst); // Analyze lhs of assignment. // Replace dst with e->theSink if we can't track it. switch(dst->op) { default: dump("dst", dst); fatal("escassign: unexpected dst"); case OARRAYLIT: case OCLOSURE: case OCONV: case OCONVIFACE: case OCONVNOP: case OMAPLIT: case OSTRUCTLIT: case OCALLPART: break; case ONAME: if(dst->class == PEXTERN) dst = &e->theSink; break; case ODOT: // treat "dst.x = src" as "dst = src" escassign(e, dst->left, src); return; case OINDEX: if(isfixedarray(dst->left->type)) { escassign(e, dst->left, src); return; } dst = &e->theSink; // lose track of dereference break; case OIND: case ODOTPTR: dst = &e->theSink; // lose track of dereference break; case OINDEXMAP: // lose track of key and value escassign(e, &e->theSink, dst->right); dst = &e->theSink; break; } lno = setlineno(src); e->pdepth++; switch(src->op) { case OADDR: // dst = &x case OIND: // dst = *x case ODOTPTR: // dst = (*x).f case ONAME: case OPARAM: case ODDDARG: case OPTRLIT: case OARRAYLIT: case OMAPLIT: case OSTRUCTLIT: case OMAKECHAN: case OMAKEMAP: case OMAKESLICE: case ONEW: case OCLOSURE: case OCALLPART: escflows(e, dst, src); break; case OCALLMETH: case OCALLFUNC: case OCALLINTER: // Flowing multiple returns to a single dst happens when // analyzing "go f(g())": here g() flows to sink (issue 4529). for(ll=src->escretval; ll; ll=ll->next) escflows(e, dst, ll->n); break; case ODOT: // A non-pointer escaping from a struct does not concern us. if(src->type && !haspointers(src->type)) break; // fallthrough case OCONV: case OCONVIFACE: case OCONVNOP: case ODOTMETH: // treat recv.meth as a value with recv in it, only happens in ODEFER and OPROC // iface.method already leaks iface in esccall, no need to put in extra ODOTINTER edge here case ODOTTYPE: case ODOTTYPE2: case OSLICE: case OSLICE3: case OSLICEARR: case OSLICE3ARR: // Conversions, field access, slice all preserve the input value. escassign(e, dst, src->left); break; case OAPPEND: // Append returns first argument. escassign(e, dst, src->list->n); break; case OINDEX: // Index of array preserves input value. if(isfixedarray(src->left->type)) escassign(e, dst, src->left); break; case OADD: case OSUB: case OOR: case OXOR: case OMUL: case ODIV: case OMOD: case OLSH: case ORSH: case OAND: case OANDNOT: case OPLUS: case OMINUS: case OCOM: // Might be pointer arithmetic, in which case // the operands flow into the result. // TODO(rsc): Decide what the story is here. This is unsettling. escassign(e, dst, src->left); escassign(e, dst, src->right); break; } e->pdepth--; lineno = lno; } static int escassignfromtag(EscState *e, Strlit *note, NodeList *dsts, Node *src) { int em, em0; em = parsetag(note); if(em == EscUnknown) { escassign(e, &e->theSink, src); return em; } if(em == EscNone) return em; // If content inside parameter (reached via indirection) // escapes back to results, mark as such. if(em & EscContentEscapes) escassign(e, &e->funcParam, src); em0 = em; for(em >>= EscReturnBits; em && dsts; em >>= 1, dsts=dsts->next) if(em & 1) escassign(e, dsts->n, src); if (em != 0 && dsts == nil) fatal("corrupt esc tag %Z or messed up escretval list\n", note); return em0; } // This is a bit messier than fortunate, pulled out of esc's big // switch for clarity. We either have the paramnodes, which may be // connected to other things through flows or we have the parameter type // nodes, which may be marked "noescape". Navigating the ast is slightly // different for methods vs plain functions and for imported vs // this-package static void esccall(EscState *e, Node *n, Node *up) { NodeList *ll, *lr; Node *a, *fn, *src; Type *t, *fntype; char buf[40]; int i; fn = N; switch(n->op) { default: fatal("esccall"); case OCALLFUNC: fn = n->left; fntype = fn->type; break; case OCALLMETH: fn = n->left->right->sym->def; if(fn) fntype = fn->type; else fntype = n->left->type; break; case OCALLINTER: fntype = n->left->type; break; } ll = n->list; if(n->list != nil && n->list->next == nil) { a = n->list->n; if(a->type->etype == TSTRUCT && a->type->funarg) // f(g()). ll = a->escretval; } if(fn && fn->op == ONAME && fn->class == PFUNC && fn->defn && fn->defn->nbody && fn->ntype && fn->defn->esc < EscFuncTagged) { // function in same mutually recursive group. Incorporate into flow graph. // print("esc local fn: %N\n", fn->ntype); if(fn->defn->esc == EscFuncUnknown || n->escretval != nil) fatal("graph inconsistency"); // set up out list on this call node for(lr=fn->ntype->rlist; lr; lr=lr->next) n->escretval = list(n->escretval, lr->n->left); // type.rlist -> dclfield -> ONAME (PPARAMOUT) // Receiver. if(n->op != OCALLFUNC) escassign(e, fn->ntype->left->left, n->left->left); for(lr=fn->ntype->list; ll && lr; ll=ll->next, lr=lr->next) { src = ll->n; if(lr->n->isddd && !n->isddd) { // Introduce ODDDARG node to represent ... allocation. src = nod(ODDDARG, N, N); src->type = typ(TARRAY); src->type->type = lr->n->type->type; src->type->bound = count(ll); src->type = ptrto(src->type); // make pointer so it will be tracked src->escloopdepth = e->loopdepth; src->lineno = n->lineno; src->esc = EscNone; // until we find otherwise e->noesc = list(e->noesc, src); n->right = src; } if(lr->n->left != N) escassign(e, lr->n->left, src); if(src != ll->n) break; } // "..." arguments are untracked for(; ll; ll=ll->next) escassign(e, &e->theSink, ll->n); return; } // Imported or completely analyzed function. Use the escape tags. if(n->escretval != nil) fatal("esc already decorated call %+N\n", n); // set up out list on this call node with dummy auto ONAMES in the current (calling) function. i = 0; for(t=getoutargx(fntype)->type; t; t=t->down) { src = nod(ONAME, N, N); snprint(buf, sizeof buf, ".dum%d", i++); src->sym = lookup(buf); src->type = t->type; src->class = PAUTO; src->curfn = curfn; src->escloopdepth = e->loopdepth; src->used = 1; src->lineno = n->lineno; n->escretval = list(n->escretval, src); } // print("esc analyzed fn: %#N (%+T) returning (%+H)\n", fn, fntype, n->escretval); // Receiver. if(n->op != OCALLFUNC) { t = getthisx(fntype)->type; src = n->left->left; if(haspointers(t->type)) escassignfromtag(e, t->note, n->escretval, src); } for(t=getinargx(fntype)->type; ll; ll=ll->next) { src = ll->n; if(t->isddd && !n->isddd) { // Introduce ODDDARG node to represent ... allocation. src = nod(ODDDARG, N, N); src->escloopdepth = e->loopdepth; src->lineno = n->lineno; src->type = typ(TARRAY); src->type->type = t->type->type; src->type->bound = count(ll); src->type = ptrto(src->type); // make pointer so it will be tracked src->esc = EscNone; // until we find otherwise e->noesc = list(e->noesc, src); n->right = src; } if(haspointers(t->type)) { if(escassignfromtag(e, t->note, n->escretval, src) == EscNone && up->op != ODEFER && up->op != OPROC) { a = src; while(a->op == OCONVNOP) a = a->left; switch(a->op) { case OCALLPART: case OCLOSURE: case ODDDARG: case OARRAYLIT: case OPTRLIT: case OSTRUCTLIT: // The callee has already been analyzed, so its arguments have esc tags. // The argument is marked as not escaping at all. // Record that fact so that any temporary used for // synthesizing this expression can be reclaimed when // the function returns. // This 'noescape' is even stronger than the usual esc == EscNone. // src->esc == EscNone means that src does not escape the current function. // src->noescape = 1 here means that src does not escape this statement // in the current function. a->noescape = 1; break; } } } if(src != ll->n) break; t = t->down; } // "..." arguments are untracked for(; ll; ll=ll->next) escassign(e, &e->theSink, ll->n); } // Store the link src->dst in dst, throwing out some quick wins. static void escflows(EscState *e, Node *dst, Node *src) { if(dst == nil || src == nil || dst == src) return; // Don't bother building a graph for scalars. if(src->type && !haspointers(src->type)) return; if(debug['m']>2) print("%L::flows:: %hN <- %hN\n", lineno, dst, src); if(dst->escflowsrc == nil) { e->dsts = list(e->dsts, dst); e->dstcount++; } e->edgecount++; dst->escflowsrc = list(dst->escflowsrc, src); } // Whenever we hit a reference node, the level goes up by one, and whenever // we hit an OADDR, the level goes down by one. as long as we're on a level > 0 // finding an OADDR just means we're following the upstream of a dereference, // so this address doesn't leak (yet). // If level == 0, it means the /value/ of this node can reach the root of this flood. // so if this node is an OADDR, it's argument should be marked as escaping iff // it's currfn/e->loopdepth are different from the flood's root. // Once an object has been moved to the heap, all of it's upstream should be considered // escaping to the global scope. static void escflood(EscState *e, Node *dst) { NodeList *l; switch(dst->op) { case ONAME: case OCLOSURE: break; default: return; } if(debug['m']>1) print("\nescflood:%d: dst %hN scope:%S[%d]\n", walkgen, dst, (dst->curfn && dst->curfn->nname) ? dst->curfn->nname->sym : S, dst->escloopdepth); for(l = dst->escflowsrc; l; l=l->next) { walkgen++; escwalk(e, 0, dst, l->n); } } // There appear to be some loops in the escape graph, causing // arbitrary recursion into deeper and deeper levels. // Cut this off safely by making minLevel sticky: once you // get that deep, you cannot go down any further but you also // cannot go up any further. This is a conservative fix. // Making minLevel smaller (more negative) would handle more // complex chains of indirections followed by address-of operations, // at the cost of repeating the traversal once for each additional // allowed level when a loop is encountered. Using -2 suffices to // pass all the tests we have written so far, which we assume matches // the level of complexity we want the escape analysis code to handle. #define MinLevel (-2) static void escwalk(EscState *e, int level, Node *dst, Node *src) { NodeList *ll; int leaks, newlevel; if(src->walkgen == walkgen && src->esclevel <= level) return; src->walkgen = walkgen; src->esclevel = level; if(debug['m']>1) print("escwalk: level:%d depth:%d %.*s %hN(%hJ) scope:%S[%d]\n", level, e->pdepth, e->pdepth, "\t\t\t\t\t\t\t\t\t\t", src, src, (src->curfn && src->curfn->nname) ? src->curfn->nname->sym : S, src->escloopdepth); e->pdepth++; // Input parameter flowing to output parameter? if(dst->op == ONAME && dst->class == PPARAMOUT && dst->vargen <= 20) { if(src->op == ONAME && src->class == PPARAM && src->curfn == dst->curfn && src->esc != EscScope && src->esc != EscHeap) { if(level == 0) { if(debug['m']) warnl(src->lineno, "leaking param: %hN to result %S", src, dst->sym); if((src->esc&EscMask) != EscReturn) src->esc = EscReturn; src->esc |= 1<<((dst->vargen-1) + EscReturnBits); goto recurse; } else if(level > 0) { if(debug['m']) warnl(src->lineno, "%N leaking param %hN content to result %S", src->curfn->nname, src, dst->sym); if((src->esc&EscMask) != EscReturn) src->esc = EscReturn; src->esc |= EscContentEscapes; goto recurse; } } } // The second clause is for values pointed at by an object passed to a call // that returns something reached via indirect from the object. // We don't know which result it is or how many indirects, so we treat it as leaking. leaks = level <= 0 && dst->escloopdepth < src->escloopdepth || level < 0 && dst == &e->funcParam && haspointers(src->type); switch(src->op) { case ONAME: if(src->class == PPARAM && (leaks || dst->escloopdepth < 0) && src->esc != EscHeap) { src->esc = EscScope; if(debug['m']) warnl(src->lineno, "leaking param: %hN", src); } // Treat a PPARAMREF closure variable as equivalent to the // original variable. if(src->class == PPARAMREF) { if(leaks && debug['m']) warnl(src->lineno, "leaking closure reference %hN", src); escwalk(e, level, dst, src->closure); } break; case OPTRLIT: case OADDR: if(leaks) { src->esc = EscHeap; addrescapes(src->left); if(debug['m']) warnl(src->lineno, "%hN escapes to heap", src); } newlevel = level; if(level > MinLevel) newlevel--; escwalk(e, newlevel, dst, src->left); break; case OARRAYLIT: if(isfixedarray(src->type)) break; // fall through case ODDDARG: case OMAKECHAN: case OMAKEMAP: case OMAKESLICE: case OMAPLIT: case ONEW: case OCLOSURE: case OCALLPART: if(leaks) { src->esc = EscHeap; if(debug['m']) warnl(src->lineno, "%hN escapes to heap", src); } break; case ODOT: case OSLICE: case OSLICEARR: case OSLICE3: case OSLICE3ARR: escwalk(e, level, dst, src->left); break; case OINDEX: if(isfixedarray(src->left->type)) { escwalk(e, level, dst, src->left); break; } // fall through case ODOTPTR: case OINDEXMAP: case OIND: newlevel = level; if(level > MinLevel) newlevel++; escwalk(e, newlevel, dst, src->left); } recurse: for(ll=src->escflowsrc; ll; ll=ll->next) escwalk(e, level, dst, ll->n); e->pdepth--; } static void esctag(EscState *e, Node *func) { Node *savefn; NodeList *ll; Type *t; USED(e); func->esc = EscFuncTagged; // External functions are assumed unsafe, // unless //go:noescape is given before the declaration. if(func->nbody == nil) { if(func->noescape) { for(t=getinargx(func->type)->type; t; t=t->down) if(haspointers(t->type)) t->note = mktag(EscNone); } return; } savefn = curfn; curfn = func; for(ll=curfn->dcl; ll; ll=ll->next) { if(ll->n->op != ONAME || ll->n->class != PPARAM) continue; switch (ll->n->esc&EscMask) { case EscNone: // not touched by escflood case EscReturn: if(haspointers(ll->n->type)) // don't bother tagging for scalars ll->n->paramfld->note = mktag(ll->n->esc); break; case EscHeap: // touched by escflood, moved to heap case EscScope: // touched by escflood, value leaves scope break; } } curfn = savefn; } go/src/cmd/gc/export.c0100644000000000000000000002537012412656734015113 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" #include "y.tab.h" static void dumpexporttype(Type *t); // Mark n's symbol as exported void exportsym(Node *n) { if(n == N || n->sym == S) return; if(n->sym->flags & (SymExport|SymPackage)) { if(n->sym->flags & SymPackage) yyerror("export/package mismatch: %S", n->sym); return; } n->sym->flags |= SymExport; if(debug['E']) print("export symbol %S\n", n->sym); exportlist = list(exportlist, n); } int exportname(char *s) { Rune r; if((uchar)s[0] < Runeself) return 'A' <= s[0] && s[0] <= 'Z'; chartorune(&r, s); return isupperrune(r); } static int initname(char *s) { return strcmp(s, "init") == 0; } // exportedsym reports whether a symbol will be visible // to files that import our package. static int exportedsym(Sym *sym) { // Builtins are visible everywhere. if(sym->pkg == builtinpkg || sym->origpkg == builtinpkg) return 1; return sym->pkg == localpkg && exportname(sym->name); } void autoexport(Node *n, int ctxt) { if(n == N || n->sym == S) return; if((ctxt != PEXTERN && ctxt != PFUNC) || dclcontext != PEXTERN) return; if(n->ntype && n->ntype->op == OTFUNC && n->ntype->left) // method return; // -A is for cmd/gc/mkbuiltin script, so export everything if(debug['A'] || exportname(n->sym->name) || initname(n->sym->name)) exportsym(n); } static void dumppkg(Pkg *p) { char *suffix; if(p == nil || p == localpkg || p->exported || p == builtinpkg) return; p->exported = 1; suffix = ""; if(!p->direct) suffix = " // indirect"; Bprint(bout, "\timport %s \"%Z\"%s\n", p->name, p->path, suffix); } // Look for anything we need for the inline body static void reexportdep(Node *n); static void reexportdeplist(NodeList *ll) { for(; ll ;ll=ll->next) reexportdep(ll->n); } static void reexportdep(Node *n) { Type *t; if(!n) return; //print("reexportdep %+hN\n", n); switch(n->op) { case ONAME: switch(n->class&~PHEAP) { case PFUNC: // methods will be printed along with their type // nodes for T.Method expressions if(n->left && n->left->op == OTYPE) break; // nodes for method calls. if(!n->type || n->type->thistuple > 0) break; // fallthrough case PEXTERN: if(n->sym && !exportedsym(n->sym)) { if(debug['E']) print("reexport name %S\n", n->sym); exportlist = list(exportlist, n); } } break; case ODCL: // Local variables in the bodies need their type. t = n->left->type; if(t != types[t->etype] && t != idealbool && t != idealstring) { if(isptr[t->etype]) t = t->type; if(t && t->sym && t->sym->def && !exportedsym(t->sym)) { if(debug['E']) print("reexport type %S from declaration\n", t->sym); exportlist = list(exportlist, t->sym->def); } } break; case OLITERAL: t = n->type; if(t != types[n->type->etype] && t != idealbool && t != idealstring) { if(isptr[t->etype]) t = t->type; if(t && t->sym && t->sym->def && !exportedsym(t->sym)) { if(debug['E']) print("reexport literal type %S\n", t->sym); exportlist = list(exportlist, t->sym->def); } } // fallthrough case OTYPE: if(n->sym && !exportedsym(n->sym)) { if(debug['E']) print("reexport literal/type %S\n", n->sym); exportlist = list(exportlist, n); } break; // for operations that need a type when rendered, put the type on the export list. case OCONV: case OCONVIFACE: case OCONVNOP: case ORUNESTR: case OARRAYBYTESTR: case OARRAYRUNESTR: case OSTRARRAYBYTE: case OSTRARRAYRUNE: case ODOTTYPE: case ODOTTYPE2: case OSTRUCTLIT: case OARRAYLIT: case OPTRLIT: case OMAKEMAP: case OMAKESLICE: case OMAKECHAN: t = n->type; if(!t->sym && t->type) t = t->type; if(t && t->sym && t->sym->def && !exportedsym(t->sym)) { if(debug['E']) print("reexport type for expression %S\n", t->sym); exportlist = list(exportlist, t->sym->def); } break; } reexportdep(n->left); reexportdep(n->right); reexportdeplist(n->list); reexportdeplist(n->rlist); reexportdeplist(n->ninit); reexportdep(n->ntest); reexportdep(n->nincr); reexportdeplist(n->nbody); reexportdeplist(n->nelse); } static void dumpexportconst(Sym *s) { Node *n; Type *t; n = s->def; typecheck(&n, Erv); if(n == N || n->op != OLITERAL) fatal("dumpexportconst: oconst nil: %S", s); t = n->type; // may or may not be specified dumpexporttype(t); if(t != T && !isideal(t)) Bprint(bout, "\tconst %#S %#T = %#V\n", s, t, &n->val); else Bprint(bout, "\tconst %#S = %#V\n", s, &n->val); } static void dumpexportvar(Sym *s) { Node *n; Type *t; n = s->def; typecheck(&n, Erv|Ecall); if(n == N || n->type == T) { yyerror("variable exported but not defined: %S", s); return; } t = n->type; dumpexporttype(t); if(t->etype == TFUNC && n->class == PFUNC) { if (n->inl) { // when lazily typechecking inlined bodies, some re-exported ones may not have been typechecked yet. // currently that can leave unresolved ONONAMEs in import-dot-ed packages in the wrong package if(debug['l'] < 2) typecheckinl(n); // NOTE: The space after %#S here is necessary for ld's export data parser. Bprint(bout, "\tfunc %#S %#hT { %#H }\n", s, t, n->inl); reexportdeplist(n->inl); } else Bprint(bout, "\tfunc %#S %#hT\n", s, t); } else Bprint(bout, "\tvar %#S %#T\n", s, t); } static int methcmp(const void *va, const void *vb) { Type *a, *b; a = *(Type**)va; b = *(Type**)vb; return strcmp(a->sym->name, b->sym->name); } static void dumpexporttype(Type *t) { Type *f; Type **m; int i, n; if(t == T) return; if(t->printed || t == types[t->etype] || t == bytetype || t == runetype || t == errortype) return; t->printed = 1; if(t->sym != S && t->etype != TFIELD) dumppkg(t->sym->pkg); dumpexporttype(t->type); dumpexporttype(t->down); if (t->sym == S || t->etype == TFIELD) return; n = 0; for(f=t->method; f!=T; f=f->down) { dumpexporttype(f); n++; } m = mal(n*sizeof m[0]); i = 0; for(f=t->method; f!=T; f=f->down) m[i++] = f; qsort(m, n, sizeof m[0], methcmp); Bprint(bout, "\ttype %#S %#lT\n", t->sym, t); for(i=0; inointerface) Bprint(bout, "\t//go:nointerface\n"); if (f->type->nname && f->type->nname->inl) { // nname was set by caninl // when lazily typechecking inlined bodies, some re-exported ones may not have been typechecked yet. // currently that can leave unresolved ONONAMEs in import-dot-ed packages in the wrong package if(debug['l'] < 2) typecheckinl(f->type->nname); Bprint(bout, "\tfunc (%#T) %#hhS %#hT { %#H }\n", getthisx(f->type)->type, f->sym, f->type, f->type->nname->inl); reexportdeplist(f->type->nname->inl); } else Bprint(bout, "\tfunc (%#T) %#hhS %#hT\n", getthisx(f->type)->type, f->sym, f->type); } } static void dumpsym(Sym *s) { if(s->flags & SymExported) return; s->flags |= SymExported; if(s->def == N) { yyerror("unknown export symbol: %S", s); return; } // print("dumpsym %O %+S\n", s->def->op, s); dumppkg(s->pkg); switch(s->def->op) { default: yyerror("unexpected export symbol: %O %S", s->def->op, s); break; case OLITERAL: dumpexportconst(s); break; case OTYPE: if(s->def->type->etype == TFORW) yyerror("export of incomplete type %S", s); else dumpexporttype(s->def->type); break; case ONAME: dumpexportvar(s); break; } } void dumpexport(void) { NodeList *l; int32 i, lno; Pkg *p; lno = lineno; Bprint(bout, "\n$$\npackage %s", localpkg->name); if(safemode) Bprint(bout, " safe"); Bprint(bout, "\n"); for(i=0; ilink) if(p->direct) dumppkg(p); for(l=exportlist; l; l=l->next) { lineno = l->n->lineno; dumpsym(l->n->sym); } Bprint(bout, "\n$$\n"); lineno = lno; } /* * import */ /* * return the sym for ss, which should match lexical */ Sym* importsym(Sym *s, int op) { char *pkgstr; if(s->def != N && s->def->op != op) { pkgstr = smprint("during import \"%Z\"", importpkg->path); redeclare(s, pkgstr); } // mark the symbol so it is not reexported if(s->def == N) { if(exportname(s->name) || initname(s->name)) s->flags |= SymExport; else s->flags |= SymPackage; // package scope } return s; } /* * return the type pkg.name, forward declaring if needed */ Type* pkgtype(Sym *s) { Type *t; importsym(s, OTYPE); if(s->def == N || s->def->op != OTYPE) { t = typ(TFORW); t->sym = s; s->def = typenod(t); } if(s->def->type == T) yyerror("pkgtype %S", s); return s->def->type; } void importimport(Sym *s, Strlit *z) { // Informational: record package name // associated with import path, for use in // human-readable messages. Pkg *p; if(isbadimport(z)) errorexit(); p = mkpkg(z); if(p->name == nil) { p->name = s->name; pkglookup(s->name, nil)->npkg++; } else if(strcmp(p->name, s->name) != 0) yyerror("conflicting names %s and %s for package \"%Z\"", p->name, s->name, p->path); if(!incannedimport && myimportpath != nil && strcmp(z->s, myimportpath) == 0) { yyerror("import \"%Z\": package depends on \"%Z\" (import cycle)", importpkg->path, z); errorexit(); } } void importconst(Sym *s, Type *t, Node *n) { Node *n1; importsym(s, OLITERAL); convlit(&n, t); if(s->def != N) // TODO: check if already the same. return; if(n->op != OLITERAL) { yyerror("expression must be a constant"); return; } if(n->sym != S) { n1 = nod(OXXX, N, N); *n1 = *n; n = n1; } n->orig = newname(s); n->sym = s; declare(n, PEXTERN); if(debug['E']) print("import const %S\n", s); } void importvar(Sym *s, Type *t) { Node *n; importsym(s, ONAME); if(s->def != N && s->def->op == ONAME) { if(eqtype(t, s->def->type)) return; yyerror("inconsistent definition for var %S during import\n\t%T (in \"%Z\")\n\t%T (in \"%Z\")", s, s->def->type, s->importdef->path, t, importpkg->path); } n = newname(s); s->importdef = importpkg; n->type = t; declare(n, PEXTERN); if(debug['E']) print("import var %S %lT\n", s, t); } void importtype(Type *pt, Type *t) { Node *n; // override declaration in unsafe.go for Pointer. // there is no way in Go code to define unsafe.Pointer // so we have to supply it. if(incannedimport && strcmp(importpkg->name, "unsafe") == 0 && strcmp(pt->nod->sym->name, "Pointer") == 0) { t = types[TUNSAFEPTR]; } if(pt->etype == TFORW) { n = pt->nod; copytype(pt->nod, t); pt->nod = n; // unzero nod pt->sym->importdef = importpkg; pt->sym->lastlineno = parserline(); declare(n, PEXTERN); checkwidth(pt); } else if(!eqtype(pt->orig, t)) yyerror("inconsistent definition for type %S during import\n\t%lT (in \"%Z\")\n\t%lT (in \"%Z\")", pt->sym, pt, pt->sym->importdef->path, t, importpkg->path); if(debug['E']) print("import type %T %lT\n", pt, t); } go/src/cmd/gc/fmt.c0100644000000000000000000010757712412656737014375 0ustar00rootroot00000000000000// Copyright 2011 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. #include #include #include "go.h" #include "opnames.h" // // Format conversions // %L int Line numbers // // %E int etype values (aka 'Kind') // // %O int Node Opcodes // Flags: "%#O": print go syntax. (automatic unless fmtmode == FDbg) // // %J Node* Node details // Flags: "%hJ" suppresses things not relevant until walk. // // %V Val* Constant values // // %S Sym* Symbols // Flags: +,- #: mode (see below) // "%hS" unqualified identifier in any mode // "%hhS" in export mode: unqualified identifier if exported, qualified if not // // %T Type* Types // Flags: +,- #: mode (see below) // 'l' definition instead of name. // 'h' omit "func" and receiver in function types // 'u' (only in -/Sym mode) print type identifiers wit package name instead of prefix. // // %N Node* Nodes // Flags: +,- #: mode (see below) // 'h' (only in +/debug mode) suppress recursion // 'l' (only in Error mode) print "foo (type Bar)" // // %H NodeList* NodeLists // Flags: those of %N // ',' separate items with ',' instead of ';' // // %Z Strlit* String literals // // In mparith1.c: // %B Mpint* Big integers // %F Mpflt* Big floats // // %S, %T and %N obey use the following flags to set the format mode: enum { FErr, // error mode (default) FDbg, // "%+N" debug mode FExp, // "%#N" export mode FTypeId, // "%-N" turning-types-into-symbols-mode: identical types give identical strings }; static int fmtmode; static int fmtpkgpfx; // %uT stickyness // // E.g. for %S: %+S %#S %-S print an identifier properly qualified for debug/export/internal mode. // // The mode flags +, - and # are sticky, meaning they persist through // recursions of %N, %T and %S, but not the h and l flags. The u flag is // sticky only on %T recursions and only used in %-/Sym mode. // // Useful format combinations: // // %+N %+H multiline recursive debug dump of node/nodelist // %+hN %+hH non recursive debug dump // // %#N %#T export format // %#lT type definition instead of name // %#hT omit"func" and receiver in function signature // // %lN "foo (type Bar)" for error messages // // %-T type identifiers // %-hT type identifiers without "func" and arg names in type signatures (methodsym) // %-uT type identifiers with package name instead of prefix (typesym, dcommontype, typehash) // static int setfmode(unsigned long *flags) { int fm; fm = fmtmode; if(*flags & FmtSign) fmtmode = FDbg; else if(*flags & FmtSharp) fmtmode = FExp; else if(*flags & FmtLeft) fmtmode = FTypeId; *flags &= ~(FmtSharp|FmtLeft|FmtSign); return fm; } // Fmt "%L": Linenumbers static int Lconv(Fmt *fp) { return linklinefmt(ctxt, fp); } static char* goopnames[] = { [OADDR] = "&", [OADD] = "+", [OADDSTR] = "+", [OANDAND] = "&&", [OANDNOT] = "&^", [OAND] = "&", [OAPPEND] = "append", [OAS] = "=", [OAS2] = "=", [OBREAK] = "break", [OCALL] = "function call", // not actual syntax [OCAP] = "cap", [OCASE] = "case", [OCLOSE] = "close", [OCOMPLEX] = "complex", [OCOM] = "^", [OCONTINUE] = "continue", [OCOPY] = "copy", [ODEC] = "--", [ODELETE] = "delete", [ODEFER] = "defer", [ODIV] = "/", [OEQ] = "==", [OFALL] = "fallthrough", [OFOR] = "for", [OGE] = ">=", [OGOTO] = "goto", [OGT] = ">", [OIF] = "if", [OIMAG] = "imag", [OINC] = "++", [OIND] = "*", [OLEN] = "len", [OLE] = "<=", [OLSH] = "<<", [OLT] = "<", [OMAKE] = "make", [OMINUS] = "-", [OMOD] = "%", [OMUL] = "*", [ONEW] = "new", [ONE] = "!=", [ONOT] = "!", [OOROR] = "||", [OOR] = "|", [OPANIC] = "panic", [OPLUS] = "+", [OPRINTN] = "println", [OPRINT] = "print", [ORANGE] = "range", [OREAL] = "real", [ORECV] = "<-", [ORECOVER] = "recover", [ORETURN] = "return", [ORSH] = ">>", [OSELECT] = "select", [OSEND] = "<-", [OSUB] = "-", [OSWITCH] = "switch", [OXOR] = "^", }; // Fmt "%O": Node opcodes static int Oconv(Fmt *fp) { int o; o = va_arg(fp->args, int); if((fp->flags & FmtSharp) || fmtmode != FDbg) if(o >= 0 && o < nelem(goopnames) && goopnames[o] != nil) return fmtstrcpy(fp, goopnames[o]); if(o >= 0 && o < nelem(opnames) && opnames[o] != nil) return fmtstrcpy(fp, opnames[o]); return fmtprint(fp, "O-%d", o); } static const char* classnames[] = { "Pxxx", "PEXTERN", "PAUTO", "PPARAM", "PPARAMOUT", "PPARAMREF", "PFUNC", }; // Fmt "%J": Node details. static int Jconv(Fmt *fp) { Node *n; char *s; int c; n = va_arg(fp->args, Node*); c = fp->flags&FmtShort; if(!c && n->ullman != 0) fmtprint(fp, " u(%d)", n->ullman); if(!c && n->addable != 0) fmtprint(fp, " a(%d)", n->addable); if(!c && n->vargen != 0) fmtprint(fp, " g(%d)", n->vargen); if(n->lineno != 0) fmtprint(fp, " l(%d)", n->lineno); if(!c && n->xoffset != BADWIDTH) fmtprint(fp, " x(%lld%+lld)", n->xoffset, n->stkdelta); if(n->class != 0) { s = ""; if(n->class & PHEAP) s = ",heap"; if((n->class & ~PHEAP) < nelem(classnames)) fmtprint(fp, " class(%s%s)", classnames[n->class&~PHEAP], s); else fmtprint(fp, " class(%d?%s)", n->class&~PHEAP, s); } if(n->colas != 0) fmtprint(fp, " colas(%d)", n->colas); if(n->funcdepth != 0) fmtprint(fp, " f(%d)", n->funcdepth); switch(n->esc) { case EscUnknown: break; case EscHeap: fmtprint(fp, " esc(h)"); break; case EscScope: fmtprint(fp, " esc(s)"); break; case EscNone: fmtprint(fp, " esc(no)"); break; case EscNever: if(!c) fmtprint(fp, " esc(N)"); break; default: fmtprint(fp, " esc(%d)", n->esc); break; } if(n->escloopdepth) fmtprint(fp, " ld(%d)", n->escloopdepth); if(!c && n->typecheck != 0) fmtprint(fp, " tc(%d)", n->typecheck); if(!c && n->dodata != 0) fmtprint(fp, " dd(%d)", n->dodata); if(n->isddd != 0) fmtprint(fp, " isddd(%d)", n->isddd); if(n->implicit != 0) fmtprint(fp, " implicit(%d)", n->implicit); if(n->embedded != 0) fmtprint(fp, " embedded(%d)", n->embedded); if(!c && n->used != 0) fmtprint(fp, " used(%d)", n->used); return 0; } // Fmt "%V": Values static int Vconv(Fmt *fp) { Val *v; vlong x; v = va_arg(fp->args, Val*); switch(v->ctype) { case CTINT: if((fp->flags & FmtSharp) || fmtmode == FExp) return fmtprint(fp, "%#B", v->u.xval); return fmtprint(fp, "%B", v->u.xval); case CTRUNE: x = mpgetfix(v->u.xval); if(' ' <= x && x < 0x80 && x != '\\' && x != '\'') return fmtprint(fp, "'%c'", (int)x); if(0 <= x && x < (1<<16)) return fmtprint(fp, "'\\u%04ux'", (int)x); if(0 <= x && x <= Runemax) return fmtprint(fp, "'\\U%08llux'", x); return fmtprint(fp, "('\\x00' + %B)", v->u.xval); case CTFLT: if((fp->flags & FmtSharp) || fmtmode == FExp) return fmtprint(fp, "%F", v->u.fval); return fmtprint(fp, "%#F", v->u.fval); case CTCPLX: if((fp->flags & FmtSharp) || fmtmode == FExp) return fmtprint(fp, "(%F+%Fi)", &v->u.cval->real, &v->u.cval->imag); if(mpcmpfltc(&v->u.cval->real, 0) == 0) return fmtprint(fp, "%#Fi", &v->u.cval->imag); if(mpcmpfltc(&v->u.cval->imag, 0) == 0) return fmtprint(fp, "%#F", &v->u.cval->real); if(mpcmpfltc(&v->u.cval->imag, 0) < 0) return fmtprint(fp, "(%#F%#Fi)", &v->u.cval->real, &v->u.cval->imag); return fmtprint(fp, "(%#F+%#Fi)", &v->u.cval->real, &v->u.cval->imag); case CTSTR: return fmtprint(fp, "\"%Z\"", v->u.sval); case CTBOOL: if( v->u.bval) return fmtstrcpy(fp, "true"); return fmtstrcpy(fp, "false"); case CTNIL: return fmtstrcpy(fp, "nil"); } return fmtprint(fp, "", v->ctype); } // Fmt "%Z": escaped string literals static int Zconv(Fmt *fp) { Rune r; Strlit *sp; char *s, *se; int n; sp = va_arg(fp->args, Strlit*); if(sp == nil) return fmtstrcpy(fp, ""); s = sp->s; se = s + sp->len; // NOTE: Keep in sync with ../ld/go.c:/^Zconv. while(s < se) { n = chartorune(&r, s); s += n; switch(r) { case Runeerror: if(n == 1) { fmtprint(fp, "\\x%02x", (uchar)*(s-1)); break; } // fall through default: if(r < ' ') { fmtprint(fp, "\\x%02x", r); break; } fmtrune(fp, r); break; case '\t': fmtstrcpy(fp, "\\t"); break; case '\n': fmtstrcpy(fp, "\\n"); break; case '\"': case '\\': fmtrune(fp, '\\'); fmtrune(fp, r); break; case 0xFEFF: // BOM, basically disallowed in source code fmtstrcpy(fp, "\\uFEFF"); break; } } return 0; } /* s%,%,\n%g s%\n+%\n%g s%^[ ]*T%%g s%,.*%%g s%.+% [T&] = "&",%g s%^ ........*\]%&~%g s%~ %%g */ static char* etnames[] = { [TINT] = "INT", [TUINT] = "UINT", [TINT8] = "INT8", [TUINT8] = "UINT8", [TINT16] = "INT16", [TUINT16] = "UINT16", [TINT32] = "INT32", [TUINT32] = "UINT32", [TINT64] = "INT64", [TUINT64] = "UINT64", [TUINTPTR] = "UINTPTR", [TFLOAT32] = "FLOAT32", [TFLOAT64] = "FLOAT64", [TCOMPLEX64] = "COMPLEX64", [TCOMPLEX128] = "COMPLEX128", [TBOOL] = "BOOL", [TPTR32] = "PTR32", [TPTR64] = "PTR64", [TFUNC] = "FUNC", [TARRAY] = "ARRAY", [TSTRUCT] = "STRUCT", [TCHAN] = "CHAN", [TMAP] = "MAP", [TINTER] = "INTER", [TFORW] = "FORW", [TFIELD] = "FIELD", [TSTRING] = "STRING", [TANY] = "ANY", }; // Fmt "%E": etype static int Econv(Fmt *fp) { int et; et = va_arg(fp->args, int); if(et >= 0 && et < nelem(etnames) && etnames[et] != nil) return fmtstrcpy(fp, etnames[et]); return fmtprint(fp, "E-%d", et); } // Fmt "%S": syms static int symfmt(Fmt *fp, Sym *s) { char *p; if(s->pkg && !(fp->flags&FmtShort)) { switch(fmtmode) { case FErr: // This is for the user if(s->pkg == localpkg) return fmtstrcpy(fp, s->name); // If the name was used by multiple packages, display the full path, if(s->pkg->name && pkglookup(s->pkg->name, nil)->npkg > 1) return fmtprint(fp, "\"%Z\".%s", s->pkg->path, s->name); return fmtprint(fp, "%s.%s", s->pkg->name, s->name); case FDbg: return fmtprint(fp, "%s.%s", s->pkg->name, s->name); case FTypeId: if(fp->flags&FmtUnsigned) return fmtprint(fp, "%s.%s", s->pkg->name, s->name); // dcommontype, typehash return fmtprint(fp, "%s.%s", s->pkg->prefix, s->name); // (methodsym), typesym, weaksym case FExp: if(s->name && s->name[0] == '.') fatal("exporting synthetic symbol %s", s->name); if(s->pkg != builtinpkg) return fmtprint(fp, "@\"%Z\".%s", s->pkg->path, s->name); } } if(fp->flags&FmtByte) { // FmtByte (hh) implies FmtShort (h) // skip leading "type." in method name p = utfrrune(s->name, '.'); if(p) p++; else p = s->name; // exportname needs to see the name without the prefix too. if((fmtmode == FExp && !exportname(p)) || fmtmode == FDbg) return fmtprint(fp, "@\"%Z\".%s", s->pkg->path, p); return fmtstrcpy(fp, p); } return fmtstrcpy(fp, s->name); } static char* basicnames[] = { [TINT] = "int", [TUINT] = "uint", [TINT8] = "int8", [TUINT8] = "uint8", [TINT16] = "int16", [TUINT16] = "uint16", [TINT32] = "int32", [TUINT32] = "uint32", [TINT64] = "int64", [TUINT64] = "uint64", [TUINTPTR] = "uintptr", [TFLOAT32] = "float32", [TFLOAT64] = "float64", [TCOMPLEX64] = "complex64", [TCOMPLEX128] = "complex128", [TBOOL] = "bool", [TANY] = "any", [TSTRING] = "string", [TNIL] = "nil", [TIDEAL] = "untyped number", [TBLANK] = "blank", }; static int typefmt(Fmt *fp, Type *t) { Type *t1; Sym *s; if(t == T) return fmtstrcpy(fp, ""); if (t == bytetype || t == runetype) { // in %-T mode collapse rune and byte with their originals. if(fmtmode != FTypeId) return fmtprint(fp, "%hS", t->sym); t = types[t->etype]; } if(t == errortype) return fmtstrcpy(fp, "error"); // Unless the 'l' flag was specified, if the type has a name, just print that name. if(!(fp->flags&FmtLong) && t->sym && t->etype != TFIELD && t != types[t->etype]) { switch(fmtmode) { case FTypeId: if(fp->flags&FmtShort) { if(t->vargen) return fmtprint(fp, "%hS·%d", t->sym, t->vargen); return fmtprint(fp, "%hS", t->sym); } if(fp->flags&FmtUnsigned) return fmtprint(fp, "%uS", t->sym); // fallthrough case FExp: if(t->sym->pkg == localpkg && t->vargen) return fmtprint(fp, "%S·%d", t->sym, t->vargen); break; } return fmtprint(fp, "%S", t->sym); } if(t->etype < nelem(basicnames) && basicnames[t->etype] != nil) { if(fmtmode == FErr && (t == idealbool || t == idealstring)) fmtstrcpy(fp, "untyped "); return fmtstrcpy(fp, basicnames[t->etype]); } if(fmtmode == FDbg) fmtprint(fp, "%E-", t->etype); switch(t->etype) { case TPTR32: case TPTR64: if(fmtmode == FTypeId && (fp->flags&FmtShort)) return fmtprint(fp, "*%hT", t->type); return fmtprint(fp, "*%T", t->type); case TARRAY: if(t->bound >= 0) return fmtprint(fp, "[%lld]%T", t->bound, t->type); if(t->bound == -100) return fmtprint(fp, "[...]%T", t->type); return fmtprint(fp, "[]%T", t->type); case TCHAN: switch(t->chan) { case Crecv: return fmtprint(fp, "<-chan %T", t->type); case Csend: return fmtprint(fp, "chan<- %T", t->type); } if(t->type != T && t->type->etype == TCHAN && t->type->sym == S && t->type->chan == Crecv) return fmtprint(fp, "chan (%T)", t->type); return fmtprint(fp, "chan %T", t->type); case TMAP: return fmtprint(fp, "map[%T]%T", t->down, t->type); case TINTER: fmtstrcpy(fp, "interface {"); for(t1=t->type; t1!=T; t1=t1->down) if(exportname(t1->sym->name)) { if(t1->down) fmtprint(fp, " %hS%hT;", t1->sym, t1->type); else fmtprint(fp, " %hS%hT ", t1->sym, t1->type); } else { // non-exported method names must be qualified if(t1->down) fmtprint(fp, " %uS%hT;", t1->sym, t1->type); else fmtprint(fp, " %uS%hT ", t1->sym, t1->type); } fmtstrcpy(fp, "}"); return 0; case TFUNC: if(fp->flags & FmtShort) { fmtprint(fp, "%T", getinargx(t)); } else { if(t->thistuple) fmtprint(fp, "method%T func%T", getthisx(t), getinargx(t)); else fmtprint(fp, "func%T", getinargx(t)); } switch(t->outtuple) { case 0: break; case 1: if(fmtmode != FExp) { fmtprint(fp, " %T", getoutargx(t)->type->type); // struct->field->field's type break; } default: fmtprint(fp, " %T", getoutargx(t)); break; } return 0; case TSTRUCT: // Format the bucket struct for map[x]y as map.bucket[x]y. // This avoids a recursive print that generates very long names. if(t->map != T) { if(t->map->bucket == t) { return fmtprint(fp, "map.bucket[%T]%T", t->map->down, t->map->type); } if(t->map->hmap == t) { return fmtprint(fp, "map.hdr[%T]%T", t->map->down, t->map->type); } if(t->map->hiter == t) { return fmtprint(fp, "map.iter[%T]%T", t->map->down, t->map->type); } yyerror("unknown internal map type"); } if(t->funarg) { fmtstrcpy(fp, "("); if(fmtmode == FTypeId || fmtmode == FErr) { // no argument names on function signature, and no "noescape" tags for(t1=t->type; t1!=T; t1=t1->down) if(t1->down) fmtprint(fp, "%hT, ", t1); else fmtprint(fp, "%hT", t1); } else { for(t1=t->type; t1!=T; t1=t1->down) if(t1->down) fmtprint(fp, "%T, ", t1); else fmtprint(fp, "%T", t1); } fmtstrcpy(fp, ")"); } else { fmtstrcpy(fp, "struct {"); for(t1=t->type; t1!=T; t1=t1->down) if(t1->down) fmtprint(fp, " %lT;", t1); else fmtprint(fp, " %lT ", t1); fmtstrcpy(fp, "}"); } return 0; case TFIELD: if(!(fp->flags&FmtShort)) { s = t->sym; // Take the name from the original, lest we substituted it with ~r%d or ~b%d. // ~r%d is a (formerly) unnamed result. if ((fmtmode == FErr || fmtmode == FExp) && t->nname != N) { if(t->nname->orig != N) { s = t->nname->orig->sym; if(s != S && s->name[0] == '~') { if(s->name[1] == 'r') // originally an unnamed result s = S; else if(s->name[1] == 'b') // originally the blank identifier _ s = lookup("_"); } } else s = S; } if(s != S && !t->embedded) { if(t->funarg) fmtprint(fp, "%N ", t->nname); else if(fp->flags&FmtLong) fmtprint(fp, "%hhS ", s); // qualify non-exported names (used on structs, not on funarg) else fmtprint(fp, "%S ", s); } else if(fmtmode == FExp) { // TODO(rsc) this breaks on the eliding of unused arguments in the backend // when this is fixed, the special case in dcl.c checkarglist can go. //if(t->funarg) // fmtstrcpy(fp, "_ "); //else if(t->embedded && s->pkg != nil && s->pkg->path->len > 0) fmtprint(fp, "@\"%Z\".? ", s->pkg->path); else fmtstrcpy(fp, "? "); } } if(t->isddd) fmtprint(fp, "...%T", t->type->type); else fmtprint(fp, "%T", t->type); if(!(fp->flags&FmtShort) && t->note) fmtprint(fp, " \"%Z\"", t->note); return 0; case TFORW: if(t->sym) return fmtprint(fp, "undefined %S", t->sym); return fmtstrcpy(fp, "undefined"); case TUNSAFEPTR: if(fmtmode == FExp) return fmtprint(fp, "@\"unsafe\".Pointer"); return fmtprint(fp, "unsafe.Pointer"); } if(fmtmode == FExp) fatal("missing %E case during export", t->etype); // Don't know how to handle - fall back to detailed prints. return fmtprint(fp, "%E <%S> %T", t->etype, t->sym, t->type); } // Statements which may be rendered with a simplestmt as init. static int stmtwithinit(int op) { switch(op) { case OIF: case OFOR: case OSWITCH: return 1; } return 0; } static int stmtfmt(Fmt *f, Node *n) { int complexinit, simpleinit, extrablock; // some statements allow for an init, but at most one, // but we may have an arbitrary number added, eg by typecheck // and inlining. If it doesn't fit the syntax, emit an enclosing // block starting with the init statements. // if we can just say "for" n->ninit; ... then do so simpleinit = n->ninit && !n->ninit->next && !n->ninit->n->ninit && stmtwithinit(n->op); // otherwise, print the inits as separate statements complexinit = n->ninit && !simpleinit && (fmtmode != FErr); // but if it was for if/for/switch, put in an extra surrounding block to limit the scope extrablock = complexinit && stmtwithinit(n->op); if(extrablock) fmtstrcpy(f, "{"); if(complexinit) fmtprint(f, " %H; ", n->ninit); switch(n->op){ case ODCL: if(fmtmode == FExp) { switch(n->left->class&~PHEAP) { case PPARAM: case PPARAMOUT: case PAUTO: fmtprint(f, "var %N %T", n->left, n->left->type); goto ret; } } fmtprint(f, "var %S %T", n->left->sym, n->left->type); break; case ODCLFIELD: if(n->left) fmtprint(f, "%N %N", n->left, n->right); else fmtprint(f, "%N", n->right); break; case OAS: // Don't export "v = " initializing statements, hope they're always // preceded by the DCL which will be re-parsed and typecheck to reproduce // the "v = " again. if(fmtmode == FExp && n->right == N) break; if(n->colas && !complexinit) fmtprint(f, "%N := %N", n->left, n->right); else fmtprint(f, "%N = %N", n->left, n->right); break; case OASOP: fmtprint(f, "%N %#O= %N", n->left, n->etype, n->right); break; case OAS2: if(n->colas && !complexinit) { fmtprint(f, "%,H := %,H", n->list, n->rlist); break; } // fallthrough case OAS2DOTTYPE: case OAS2FUNC: case OAS2MAPR: case OAS2RECV: fmtprint(f, "%,H = %,H", n->list, n->rlist); break; case ORETURN: fmtprint(f, "return %,H", n->list); break; case ORETJMP: fmtprint(f, "retjmp %S", n->sym); break; case OPROC: fmtprint(f, "go %N", n->left); break; case ODEFER: fmtprint(f, "defer %N", n->left); break; case OIF: if(simpleinit) fmtprint(f, "if %N; %N { %H }", n->ninit->n, n->ntest, n->nbody); else fmtprint(f, "if %N { %H }", n->ntest, n->nbody); if(n->nelse) fmtprint(f, " else { %H }", n->nelse); break; case OFOR: if(fmtmode == FErr) { // TODO maybe only if FmtShort, same below fmtstrcpy(f, "for loop"); break; } fmtstrcpy(f, "for"); if(simpleinit) fmtprint(f, " %N;", n->ninit->n); else if(n->nincr) fmtstrcpy(f, " ;"); if(n->ntest) fmtprint(f, " %N", n->ntest); if(n->nincr) fmtprint(f, "; %N", n->nincr); else if(simpleinit) fmtstrcpy(f, ";"); fmtprint(f, " { %H }", n->nbody); break; case ORANGE: if(fmtmode == FErr) { fmtstrcpy(f, "for loop"); break; } fmtprint(f, "for %,H = range %N { %H }", n->list, n->right, n->nbody); break; case OSELECT: case OSWITCH: if(fmtmode == FErr) { fmtprint(f, "%O statement", n->op); break; } fmtprint(f, "%#O", n->op); if(simpleinit) fmtprint(f, " %N;", n->ninit->n); if(n->ntest) fmtprint(f, "%N", n->ntest); fmtprint(f, " { %H }", n->list); break; case OCASE: case OXCASE: if(n->list) fmtprint(f, "case %,H: %H", n->list, n->nbody); else fmtprint(f, "default: %H", n->nbody); break; case OBREAK: case OCONTINUE: case OGOTO: case OFALL: case OXFALL: if(n->left) fmtprint(f, "%#O %N", n->op, n->left); else fmtprint(f, "%#O", n->op); break; case OEMPTY: break; case OLABEL: fmtprint(f, "%N: ", n->left); break; } ret: if(extrablock) fmtstrcpy(f, "}"); return 0; } static int opprec[] = { [OAPPEND] = 8, [OARRAYBYTESTR] = 8, [OARRAYLIT] = 8, [OARRAYRUNESTR] = 8, [OCALLFUNC] = 8, [OCALLINTER] = 8, [OCALLMETH] = 8, [OCALL] = 8, [OCAP] = 8, [OCLOSE] = 8, [OCONVIFACE] = 8, [OCONVNOP] = 8, [OCONV] = 8, [OCOPY] = 8, [ODELETE] = 8, [OLEN] = 8, [OLITERAL] = 8, [OMAKESLICE] = 8, [OMAKE] = 8, [OMAPLIT] = 8, [ONAME] = 8, [ONEW] = 8, [ONONAME] = 8, [OPACK] = 8, [OPANIC] = 8, [OPAREN] = 8, [OPRINTN] = 8, [OPRINT] = 8, [ORUNESTR] = 8, [OSTRARRAYBYTE] = 8, [OSTRARRAYRUNE] = 8, [OSTRUCTLIT] = 8, [OTARRAY] = 8, [OTCHAN] = 8, [OTFUNC] = 8, [OTINTER] = 8, [OTMAP] = 8, [OTPAREN] = 8, [OTSTRUCT] = 8, [OINDEXMAP] = 8, [OINDEX] = 8, [OSLICE] = 8, [OSLICESTR] = 8, [OSLICEARR] = 8, [OSLICE3] = 8, [OSLICE3ARR] = 8, [ODOTINTER] = 8, [ODOTMETH] = 8, [ODOTPTR] = 8, [ODOTTYPE2] = 8, [ODOTTYPE] = 8, [ODOT] = 8, [OXDOT] = 8, [OCALLPART] = 8, [OPLUS] = 7, [ONOT] = 7, [OCOM] = 7, [OMINUS] = 7, [OADDR] = 7, [OIND] = 7, [ORECV] = 7, [OMUL] = 6, [ODIV] = 6, [OMOD] = 6, [OLSH] = 6, [ORSH] = 6, [OAND] = 6, [OANDNOT] = 6, [OADD] = 5, [OSUB] = 5, [OOR] = 5, [OXOR] = 5, [OEQ] = 4, [OLT] = 4, [OLE] = 4, [OGE] = 4, [OGT] = 4, [ONE] = 4, [OCMPSTR] = 4, [OCMPIFACE] = 4, [OSEND] = 3, [OANDAND] = 2, [OOROR] = 1, // Statements handled by stmtfmt [OAS] = -1, [OAS2] = -1, [OAS2DOTTYPE] = -1, [OAS2FUNC] = -1, [OAS2MAPR] = -1, [OAS2RECV] = -1, [OASOP] = -1, [OBREAK] = -1, [OCASE] = -1, [OCONTINUE] = -1, [ODCL] = -1, [ODCLFIELD] = -1, [ODEFER] = -1, [OEMPTY] = -1, [OFALL] = -1, [OFOR] = -1, [OGOTO] = -1, [OIF] = -1, [OLABEL] = -1, [OPROC] = -1, [ORANGE] = -1, [ORETURN] = -1, [OSELECT] = -1, [OSWITCH] = -1, [OXCASE] = -1, [OXFALL] = -1, [OEND] = 0 }; static int exprfmt(Fmt *f, Node *n, int prec) { int nprec; int ptrlit; NodeList *l; while(n && n->implicit && (n->op == OIND || n->op == OADDR)) n = n->left; if(n == N) return fmtstrcpy(f, ""); nprec = opprec[n->op]; if(n->op == OTYPE && n->sym != S) nprec = 8; if(prec > nprec) return fmtprint(f, "(%N)", n); switch(n->op) { case OPAREN: return fmtprint(f, "(%N)", n->left); case ODDDARG: return fmtprint(f, "... argument"); case OREGISTER: return fmtprint(f, "%R", n->val.u.reg); case OLITERAL: // this is a bit of a mess if(fmtmode == FErr && n->sym != S) return fmtprint(f, "%S", n->sym); if(n->val.ctype == CTNIL && n->orig != N && n->orig != n) return exprfmt(f, n->orig, prec); if(n->type != T && n->type != types[n->type->etype] && n->type != idealbool && n->type != idealstring) { // Need parens when type begins with what might // be misinterpreted as a unary operator: * or <-. if(isptr[n->type->etype] || (n->type->etype == TCHAN && n->type->chan == Crecv)) return fmtprint(f, "(%T)(%V)", n->type, &n->val); else return fmtprint(f, "%T(%V)", n->type, &n->val); } return fmtprint(f, "%V", &n->val); case ONAME: // Special case: name used as local variable in export. switch(n->class&~PHEAP){ case PAUTO: case PPARAM: case PPARAMOUT: // _ becomes ~b%d internally; print as _ for export if(fmtmode == FExp && n->sym && n->sym->name[0] == '~' && n->sym->name[1] == 'b') return fmtprint(f, "_"); if(fmtmode == FExp && n->sym && !isblank(n) && n->vargen > 0) return fmtprint(f, "%S·%d", n->sym, n->vargen); } // Special case: explicit name of func (*T) method(...) is turned into pkg.(*T).method, // but for export, this should be rendered as (*pkg.T).meth. // These nodes have the special property that they are names with a left OTYPE and a right ONAME. if(fmtmode == FExp && n->left && n->left->op == OTYPE && n->right && n->right->op == ONAME) { if(isptr[n->left->type->etype]) return fmtprint(f, "(%T).%hhS", n->left->type, n->right->sym); else return fmtprint(f, "%T.%hhS", n->left->type, n->right->sym); } //fallthrough case OPACK: case ONONAME: return fmtprint(f, "%S", n->sym); case OTYPE: if(n->type == T && n->sym != S) return fmtprint(f, "%S", n->sym); return fmtprint(f, "%T", n->type); case OTARRAY: if(n->left) return fmtprint(f, "[]%N", n->left); return fmtprint(f, "[]%N", n->right); // happens before typecheck case OTPAREN: return fmtprint(f, "(%N)", n->left); case OTMAP: return fmtprint(f, "map[%N]%N", n->left, n->right); case OTCHAN: switch(n->etype) { case Crecv: return fmtprint(f, "<-chan %N", n->left); case Csend: return fmtprint(f, "chan<- %N", n->left); default: if(n->left != N && n->left->op == TCHAN && n->left->sym == S && n->left->etype == Crecv) return fmtprint(f, "chan (%N)", n->left); else return fmtprint(f, "chan %N", n->left); } case OTSTRUCT: return fmtprint(f, ""); case OTINTER: return fmtprint(f, ""); case OTFUNC: return fmtprint(f, ""); case OCLOSURE: if(fmtmode == FErr) return fmtstrcpy(f, "func literal"); if(n->nbody) return fmtprint(f, "%T { %H }", n->type, n->nbody); return fmtprint(f, "%T { %H }", n->type, n->closure->nbody); case OCOMPLIT: ptrlit = n->right != N && n->right->implicit && n->right->type && isptr[n->right->type->etype]; if(fmtmode == FErr) { if(n->right != N && n->right->type != T && !n->implicit) { if(ptrlit) return fmtprint(f, "&%T literal", n->right->type->type); else return fmtprint(f, "%T literal", n->right->type); } return fmtstrcpy(f, "composite literal"); } if(fmtmode == FExp && ptrlit) // typecheck has overwritten OIND by OTYPE with pointer type. return fmtprint(f, "(&%T{ %,H })", n->right->type->type, n->list); return fmtprint(f, "(%N{ %,H })", n->right, n->list); case OPTRLIT: if(fmtmode == FExp && n->left->implicit) return fmtprint(f, "%N", n->left); return fmtprint(f, "&%N", n->left); case OSTRUCTLIT: if(fmtmode == FExp) { // requires special handling of field names if(n->implicit) fmtstrcpy(f, "{"); else fmtprint(f, "(%T{", n->type); for(l=n->list; l; l=l->next) { fmtprint(f, " %hhS:%N", l->n->left->sym, l->n->right); if(l->next) fmtstrcpy(f, ","); else fmtstrcpy(f, " "); } if(!n->implicit) return fmtstrcpy(f, "})"); return fmtstrcpy(f, "}"); } // fallthrough case OARRAYLIT: case OMAPLIT: if(fmtmode == FErr) return fmtprint(f, "%T literal", n->type); if(fmtmode == FExp && n->implicit) return fmtprint(f, "{ %,H }", n->list); return fmtprint(f, "(%T{ %,H })", n->type, n->list); case OKEY: if(n->left && n->right) { if(fmtmode == FExp && n->left->type && n->left->type->etype == TFIELD) { // requires special handling of field names return fmtprint(f, "%hhS:%N", n->left->sym, n->right); } else return fmtprint(f, "%N:%N", n->left, n->right); } if(!n->left && n->right) return fmtprint(f, ":%N", n->right); if(n->left && !n->right) return fmtprint(f, "%N:", n->left); return fmtstrcpy(f, ":"); case OXDOT: case ODOT: case ODOTPTR: case ODOTINTER: case ODOTMETH: case OCALLPART: exprfmt(f, n->left, nprec); if(n->right == N || n->right->sym == S) return fmtstrcpy(f, "."); return fmtprint(f, ".%hhS", n->right->sym); case ODOTTYPE: case ODOTTYPE2: exprfmt(f, n->left, nprec); if(n->right != N) return fmtprint(f, ".(%N)", n->right); return fmtprint(f, ".(%T)", n->type); case OINDEX: case OINDEXMAP: case OSLICE: case OSLICESTR: case OSLICEARR: case OSLICE3: case OSLICE3ARR: exprfmt(f, n->left, nprec); return fmtprint(f, "[%N]", n->right); case OCOPY: case OCOMPLEX: return fmtprint(f, "%#O(%N, %N)", n->op, n->left, n->right); case OCONV: case OCONVIFACE: case OCONVNOP: case OARRAYBYTESTR: case OARRAYRUNESTR: case OSTRARRAYBYTE: case OSTRARRAYRUNE: case ORUNESTR: if(n->type == T || n->type->sym == S) return fmtprint(f, "(%T)(%N)", n->type, n->left); if(n->left) return fmtprint(f, "%T(%N)", n->type, n->left); return fmtprint(f, "%T(%,H)", n->type, n->list); case OREAL: case OIMAG: case OAPPEND: case OCAP: case OCLOSE: case ODELETE: case OLEN: case OMAKE: case ONEW: case OPANIC: case ORECOVER: case OPRINT: case OPRINTN: if(n->left) return fmtprint(f, "%#O(%N)", n->op, n->left); if(n->isddd) return fmtprint(f, "%#O(%,H...)", n->op, n->list); return fmtprint(f, "%#O(%,H)", n->op, n->list); case OCALL: case OCALLFUNC: case OCALLINTER: case OCALLMETH: exprfmt(f, n->left, nprec); if(n->isddd) return fmtprint(f, "(%,H...)", n->list); return fmtprint(f, "(%,H)", n->list); case OMAKEMAP: case OMAKECHAN: case OMAKESLICE: if(n->list) // pre-typecheck return fmtprint(f, "make(%T, %,H)", n->type, n->list); if(n->right) return fmtprint(f, "make(%T, %N, %N)", n->type, n->left, n->right); if(n->left) return fmtprint(f, "make(%T, %N)", n->type, n->left); return fmtprint(f, "make(%T)", n->type); // Unary case OPLUS: case OMINUS: case OADDR: case OCOM: case OIND: case ONOT: case ORECV: if(n->left->op == n->op) fmtprint(f, "%#O ", n->op); else fmtprint(f, "%#O", n->op); return exprfmt(f, n->left, nprec+1); // Binary case OADD: case OAND: case OANDAND: case OANDNOT: case ODIV: case OEQ: case OGE: case OGT: case OLE: case OLT: case OLSH: case OMOD: case OMUL: case ONE: case OOR: case OOROR: case ORSH: case OSEND: case OSUB: case OXOR: exprfmt(f, n->left, nprec); fmtprint(f, " %#O ", n->op); exprfmt(f, n->right, nprec+1); return 0; case OADDSTR: for(l=n->list; l; l=l->next) { if(l != n->list) fmtprint(f, " + "); exprfmt(f, l->n, nprec); } return 0; case OCMPSTR: case OCMPIFACE: exprfmt(f, n->left, nprec); fmtprint(f, " %#O ", n->etype); exprfmt(f, n->right, nprec+1); return 0; } return fmtprint(f, "", n->op); } static int nodefmt(Fmt *f, Node *n) { Type *t; t = n->type; // we almost always want the original, except in export mode for literals // this saves the importer some work, and avoids us having to redo some // special casing for package unsafe if((fmtmode != FExp || n->op != OLITERAL) && n->orig != N) n = n->orig; if(f->flags&FmtLong && t != T) { if(t->etype == TNIL) return fmtprint(f, "nil"); else return fmtprint(f, "%N (type %T)", n, t); } // TODO inlining produces expressions with ninits. we can't print these yet. if(opprec[n->op] < 0) return stmtfmt(f, n); return exprfmt(f, n, 0); } static int dumpdepth; static void indent(Fmt *fp) { int i; fmtstrcpy(fp, "\n"); for(i = 0; i < dumpdepth; ++i) fmtstrcpy(fp, ". "); } static int nodedump(Fmt *fp, Node *n) { int recur; if(n == N) return 0; recur = !(fp->flags&FmtShort); if(recur) { indent(fp); if(dumpdepth > 10) return fmtstrcpy(fp, "..."); if(n->ninit != nil) { fmtprint(fp, "%O-init%H", n->op, n->ninit); indent(fp); } } // fmtprint(fp, "[%p]", n); switch(n->op) { default: fmtprint(fp, "%O%J", n->op, n); break; case OREGISTER: case OINDREG: fmtprint(fp, "%O-%R%J", n->op, n->val.u.reg, n); break; case OLITERAL: fmtprint(fp, "%O-%V%J", n->op, &n->val, n); break; case ONAME: case ONONAME: if(n->sym != S) fmtprint(fp, "%O-%S%J", n->op, n->sym, n); else fmtprint(fp, "%O%J", n->op, n); if(recur && n->type == T && n->ntype) { indent(fp); fmtprint(fp, "%O-ntype%N", n->op, n->ntype); } break; case OASOP: fmtprint(fp, "%O-%O%J", n->op, n->etype, n); break; case OTYPE: fmtprint(fp, "%O %S%J type=%T", n->op, n->sym, n, n->type); if(recur && n->type == T && n->ntype) { indent(fp); fmtprint(fp, "%O-ntype%N", n->op, n->ntype); } break; } if(n->sym != S && n->op != ONAME) fmtprint(fp, " %S G%d", n->sym, n->vargen); if(n->type != T) fmtprint(fp, " %T", n->type); if(recur) { if(n->left) fmtprint(fp, "%N", n->left); if(n->right) fmtprint(fp, "%N", n->right); if(n->list) { indent(fp); fmtprint(fp, "%O-list%H", n->op, n->list); } if(n->rlist) { indent(fp); fmtprint(fp, "%O-rlist%H", n->op, n->rlist); } if(n->ntest) { indent(fp); fmtprint(fp, "%O-test%N", n->op, n->ntest); } if(n->nbody) { indent(fp); fmtprint(fp, "%O-body%H", n->op, n->nbody); } if(n->nelse) { indent(fp); fmtprint(fp, "%O-else%H", n->op, n->nelse); } if(n->nincr) { indent(fp); fmtprint(fp, "%O-incr%N", n->op, n->nincr); } } return 0; } // Fmt "%S": syms // Flags: "%hS" suppresses qualifying with package static int Sconv(Fmt *fp) { Sym *s; int r, sm; unsigned long sf; if(fp->flags&FmtLong) return linksymfmt(fp); s = va_arg(fp->args, Sym*); if(s == S) return fmtstrcpy(fp, ""); if(s->name && s->name[0] == '_' && s->name[1] == '\0') return fmtstrcpy(fp, "_"); sf = fp->flags; sm = setfmode(&fp->flags); r = symfmt(fp, s); fp->flags = sf; fmtmode = sm; return r; } // Fmt "%T": types. // Flags: 'l' print definition, not name // 'h' omit 'func' and receiver from function types, short type names // 'u' package name, not prefix (FTypeId mode, sticky) static int Tconv(Fmt *fp) { Type *t; int r, sm; unsigned long sf; t = va_arg(fp->args, Type*); if(t == T) return fmtstrcpy(fp, ""); if(t->trecur > 4) return fmtstrcpy(fp, "<...>"); t->trecur++; sf = fp->flags; sm = setfmode(&fp->flags); if(fmtmode == FTypeId && (sf&FmtUnsigned)) fmtpkgpfx++; if(fmtpkgpfx) fp->flags |= FmtUnsigned; r = typefmt(fp, t); if(fmtmode == FTypeId && (sf&FmtUnsigned)) fmtpkgpfx--; fp->flags = sf; fmtmode = sm; t->trecur--; return r; } // Fmt '%N': Nodes. // Flags: 'l' suffix with "(type %T)" where possible // '+h' in debug mode, don't recurse, no multiline output static int Nconv(Fmt *fp) { Node *n; int r, sm; unsigned long sf; n = va_arg(fp->args, Node*); if(n == N) return fmtstrcpy(fp, ""); sf = fp->flags; sm = setfmode(&fp->flags); r = -1; switch(fmtmode) { case FErr: case FExp: r = nodefmt(fp, n); break; case FDbg: dumpdepth++; r = nodedump(fp, n); dumpdepth--; break; default: fatal("unhandled %%N mode"); } fp->flags = sf; fmtmode = sm; return r; } // Fmt '%H': NodeList. // Flags: all those of %N plus ',': separate with comma's instead of semicolons. static int Hconv(Fmt *fp) { NodeList *l; int r, sm; unsigned long sf; char *sep; l = va_arg(fp->args, NodeList*); if(l == nil && fmtmode == FDbg) return fmtstrcpy(fp, ""); sf = fp->flags; sm = setfmode(&fp->flags); r = 0; sep = "; "; if(fmtmode == FDbg) sep = "\n"; else if(fp->flags & FmtComma) sep = ", "; for(;l; l=l->next) { r += fmtprint(fp, "%N", l->n); if(l->next) r += fmtstrcpy(fp, sep); } fp->flags = sf; fmtmode = sm; return r; } void fmtinstallgo(void) { fmtmode = FErr; fmtinstall('E', Econv); // etype opcodes fmtinstall('J', Jconv); // all the node flags fmtinstall('H', Hconv); // node lists fmtinstall('L', Lconv); // line number fmtinstall('N', Nconv); // node pointer fmtinstall('O', Oconv); // node opcodes fmtinstall('S', Sconv); // sym pointer fmtinstall('T', Tconv); // type pointer fmtinstall('V', Vconv); // val pointer fmtinstall('Z', Zconv); // escaped string // These are in mparith1.c fmtinstall('B', Bconv); // big numbers fmtinstall('F', Fconv); // big float numbers } void dumplist(char *s, NodeList *l) { print("%s%+H\n", s, l); } void dump(char *s, Node *n) { print("%s [%p]%+N\n", s, n, n); } go/src/cmd/gc/gen.c0100644000000000000000000004205012412656737014340 0ustar00rootroot00000000000000// Copyright 2009 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. /* * portable half of code generator. * mainly statements and control flow. */ #include #include #include "go.h" static void cgen_dcl(Node *n); static void cgen_proc(Node *n, int proc); static void checkgoto(Node*, Node*); static Label *labellist; static Label *lastlabel; Node* sysfunc(char *name) { Node *n; n = newname(pkglookup(name, runtimepkg)); n->class = PFUNC; return n; } /* * the address of n has been taken and might be used after * the current function returns. mark any local vars * as needing to move to the heap. */ void addrescapes(Node *n) { char buf[100]; Node *oldfn; switch(n->op) { default: // probably a type error already. // dump("addrescapes", n); break; case ONAME: if(n == nodfp) break; // if this is a tmpname (PAUTO), it was tagged by tmpname as not escaping. // on PPARAM it means something different. if(n->class == PAUTO && n->esc == EscNever) break; if(debug['N'] && n->esc != EscUnknown) fatal("without escape analysis, only PAUTO's should have esc: %N", n); switch(n->class) { case PPARAMREF: addrescapes(n->defn); break; case PPARAM: case PPARAMOUT: // if func param, need separate temporary // to hold heap pointer. // the function type has already been checked // (we're in the function body) // so the param already has a valid xoffset. // expression to refer to stack copy n->stackparam = nod(OPARAM, n, N); n->stackparam->type = n->type; n->stackparam->addable = 1; if(n->xoffset == BADWIDTH) fatal("addrescapes before param assignment"); n->stackparam->xoffset = n->xoffset; // fallthrough case PAUTO: n->class |= PHEAP; n->addable = 0; n->ullman = 2; n->xoffset = 0; // create stack variable to hold pointer to heap oldfn = curfn; curfn = n->curfn; n->heapaddr = temp(ptrto(n->type)); snprint(buf, sizeof buf, "&%S", n->sym); n->heapaddr->sym = lookup(buf); n->heapaddr->orig->sym = n->heapaddr->sym; if(!debug['N']) n->esc = EscHeap; if(debug['m']) print("%L: moved to heap: %N\n", n->lineno, n); curfn = oldfn; break; } break; case OIND: case ODOTPTR: break; case ODOT: case OINDEX: // ODOTPTR has already been introduced, // so these are the non-pointer ODOT and OINDEX. // In &x[0], if x is a slice, then x does not // escape--the pointer inside x does, but that // is always a heap pointer anyway. if(!isslice(n->left->type)) addrescapes(n->left); break; } } void clearlabels(void) { Label *l; for(l=labellist; l!=L; l=l->link) l->sym->label = L; labellist = L; lastlabel = L; } static Label* newlab(Node *n) { Sym *s; Label *lab; s = n->left->sym; if((lab = s->label) == L) { lab = mal(sizeof(*lab)); if(lastlabel == nil) labellist = lab; else lastlabel->link = lab; lastlabel = lab; lab->sym = s; s->label = lab; } if(n->op == OLABEL) { if(lab->def != N) yyerror("label %S already defined at %L", s, lab->def->lineno); else lab->def = n; } else lab->use = list(lab->use, n); return lab; } void checklabels(void) { Label *lab; NodeList *l; for(lab=labellist; lab!=L; lab=lab->link) { if(lab->def == N) { for(l=lab->use; l; l=l->next) yyerrorl(l->n->lineno, "label %S not defined", lab->sym); continue; } if(lab->use == nil && !lab->used) { yyerrorl(lab->def->lineno, "label %S defined and not used", lab->sym); continue; } if(lab->gotopc != P) fatal("label %S never resolved", lab->sym); for(l=lab->use; l; l=l->next) checkgoto(l->n, lab->def); } } static void checkgoto(Node *from, Node *to) { int nf, nt; Sym *block, *dcl, *fs, *ts; int lno; if(from->sym == to->sym) return; nf = 0; for(fs=from->sym; fs; fs=fs->link) nf++; nt = 0; for(fs=to->sym; fs; fs=fs->link) nt++; fs = from->sym; for(; nf > nt; nf--) fs = fs->link; if(fs != to->sym) { lno = lineno; setlineno(from); // decide what to complain about. // prefer to complain about 'into block' over declarations, // so scan backward to find most recent block or else dcl. block = S; dcl = S; ts = to->sym; for(; nt > nf; nt--) { if(ts->pkg == nil) block = ts; else dcl = ts; ts = ts->link; } while(ts != fs) { if(ts->pkg == nil) block = ts; else dcl = ts; ts = ts->link; fs = fs->link; } if(block) yyerror("goto %S jumps into block starting at %L", from->left->sym, block->lastlineno); else yyerror("goto %S jumps over declaration of %S at %L", from->left->sym, dcl, dcl->lastlineno); lineno = lno; } } static Label* stmtlabel(Node *n) { Label *lab; if(n->sym != S) if((lab = n->sym->label) != L) if(lab->def != N) if(lab->def->defn == n) return lab; return L; } /* * compile statements */ void genlist(NodeList *l) { for(; l; l=l->next) gen(l->n); } void gen(Node *n) { int32 lno; Prog *scontin, *sbreak; Prog *p1, *p2, *p3; Label *lab; int32 wasregalloc; //dump("gen", n); lno = setlineno(n); wasregalloc = anyregalloc(); if(n == N) goto ret; if(n->ninit) genlist(n->ninit); setlineno(n); switch(n->op) { default: fatal("gen: unknown op %+hN", n); break; case OCASE: case OFALL: case OXCASE: case OXFALL: case ODCLCONST: case ODCLFUNC: case ODCLTYPE: break; case OEMPTY: break; case OBLOCK: genlist(n->list); break; case OLABEL: if(isblanksym(n->left->sym)) break; lab = newlab(n); // if there are pending gotos, resolve them all to the current pc. for(p1=lab->gotopc; p1; p1=p2) { p2 = unpatch(p1); patch(p1, pc); } lab->gotopc = P; if(lab->labelpc == P) lab->labelpc = pc; if(n->defn) { switch(n->defn->op) { case OFOR: case OSWITCH: case OSELECT: // so stmtlabel can find the label n->defn->sym = lab->sym; } } break; case OGOTO: // if label is defined, emit jump to it. // otherwise save list of pending gotos in lab->gotopc. // the list is linked through the normal jump target field // to avoid a second list. (the jumps are actually still // valid code, since they're just going to another goto // to the same label. we'll unwind it when we learn the pc // of the label in the OLABEL case above.) lab = newlab(n); if(lab->labelpc != P) gjmp(lab->labelpc); else lab->gotopc = gjmp(lab->gotopc); break; case OBREAK: if(n->left != N) { lab = n->left->sym->label; if(lab == L) { yyerror("break label not defined: %S", n->left->sym); break; } lab->used = 1; if(lab->breakpc == P) { yyerror("invalid break label %S", n->left->sym); break; } gjmp(lab->breakpc); break; } if(breakpc == P) { yyerror("break is not in a loop"); break; } gjmp(breakpc); break; case OCONTINUE: if(n->left != N) { lab = n->left->sym->label; if(lab == L) { yyerror("continue label not defined: %S", n->left->sym); break; } lab->used = 1; if(lab->continpc == P) { yyerror("invalid continue label %S", n->left->sym); break; } gjmp(lab->continpc); break; } if(continpc == P) { yyerror("continue is not in a loop"); break; } gjmp(continpc); break; case OFOR: sbreak = breakpc; p1 = gjmp(P); // goto test breakpc = gjmp(P); // break: goto done scontin = continpc; continpc = pc; // define break and continue labels if((lab = stmtlabel(n)) != L) { lab->breakpc = breakpc; lab->continpc = continpc; } gen(n->nincr); // contin: incr patch(p1, pc); // test: bgen(n->ntest, 0, -1, breakpc); // if(!test) goto break genlist(n->nbody); // body gjmp(continpc); patch(breakpc, pc); // done: continpc = scontin; breakpc = sbreak; if(lab) { lab->breakpc = P; lab->continpc = P; } break; case OIF: p1 = gjmp(P); // goto test p2 = gjmp(P); // p2: goto else patch(p1, pc); // test: bgen(n->ntest, 0, -n->likely, p2); // if(!test) goto p2 genlist(n->nbody); // then p3 = gjmp(P); // goto done patch(p2, pc); // else: genlist(n->nelse); // else patch(p3, pc); // done: break; case OSWITCH: sbreak = breakpc; p1 = gjmp(P); // goto test breakpc = gjmp(P); // break: goto done // define break label if((lab = stmtlabel(n)) != L) lab->breakpc = breakpc; patch(p1, pc); // test: genlist(n->nbody); // switch(test) body patch(breakpc, pc); // done: breakpc = sbreak; if(lab != L) lab->breakpc = P; break; case OSELECT: sbreak = breakpc; p1 = gjmp(P); // goto test breakpc = gjmp(P); // break: goto done // define break label if((lab = stmtlabel(n)) != L) lab->breakpc = breakpc; patch(p1, pc); // test: genlist(n->nbody); // select() body patch(breakpc, pc); // done: breakpc = sbreak; if(lab != L) lab->breakpc = P; break; case OASOP: cgen_asop(n); break; case ODCL: cgen_dcl(n->left); break; case OAS: if(gen_as_init(n)) break; cgen_as(n->left, n->right); break; case OCALLMETH: cgen_callmeth(n, 0); break; case OCALLINTER: cgen_callinter(n, N, 0); break; case OCALLFUNC: cgen_call(n, 0); break; case OPROC: cgen_proc(n, 1); break; case ODEFER: cgen_proc(n, 2); break; case ORETURN: case ORETJMP: cgen_ret(n); break; case OCHECKNIL: cgen_checknil(n->left); break; case OVARKILL: gvarkill(n->left); break; } ret: if(anyregalloc() != wasregalloc) { dump("node", n); fatal("registers left allocated"); } lineno = lno; } /* * generate call to non-interface method * proc=0 normal call * proc=1 goroutine run in new proc * proc=2 defer call save away stack */ void cgen_callmeth(Node *n, int proc) { Node n2; Node *l; // generate a rewrite in n2 for the method call // (p.f)(...) goes to (f)(p,...) l = n->left; if(l->op != ODOTMETH) fatal("cgen_callmeth: not dotmethod: %N"); n2 = *n; n2.op = OCALLFUNC; n2.left = l->right; n2.left->type = l->type; if(n2.left->op == ONAME) n2.left->class = PFUNC; cgen_call(&n2, proc); } /* * generate code to start new proc running call n. */ static void cgen_proc(Node *n, int proc) { switch(n->left->op) { default: fatal("cgen_proc: unknown call %O", n->left->op); case OCALLMETH: cgen_callmeth(n->left, proc); break; case OCALLINTER: cgen_callinter(n->left, N, proc); break; case OCALLFUNC: cgen_call(n->left, proc); break; } } /* * generate declaration. * have to allocate heap copy * for escaped variables. */ static void cgen_dcl(Node *n) { if(debug['g']) dump("\ncgen-dcl", n); if(n->op != ONAME) { dump("cgen_dcl", n); fatal("cgen_dcl"); } if(!(n->class & PHEAP)) return; if(n->alloc == nil) n->alloc = callnew(n->type); cgen_as(n->heapaddr, n->alloc); } /* * generate discard of value */ static void cgen_discard(Node *nr) { Node tmp; if(nr == N) return; switch(nr->op) { case ONAME: if(!(nr->class & PHEAP) && nr->class != PEXTERN && nr->class != PFUNC && nr->class != PPARAMREF) gused(nr); break; // unary case OADD: case OAND: case ODIV: case OEQ: case OGE: case OGT: case OLE: case OLSH: case OLT: case OMOD: case OMUL: case ONE: case OOR: case ORSH: case OSUB: case OXOR: cgen_discard(nr->left); cgen_discard(nr->right); break; // binary case OCAP: case OCOM: case OLEN: case OMINUS: case ONOT: case OPLUS: cgen_discard(nr->left); break; case OIND: cgen_checknil(nr->left); break; // special enough to just evaluate default: tempname(&tmp, nr->type); cgen_as(&tmp, nr); gused(&tmp); } } /* * clearslim generates code to zero a slim node. */ void clearslim(Node *n) { Node z; Mpflt zero; memset(&z, 0, sizeof(z)); z.op = OLITERAL; z.type = n->type; z.addable = 1; switch(simtype[n->type->etype]) { case TCOMPLEX64: case TCOMPLEX128: z.val.u.cval = mal(sizeof(*z.val.u.cval)); mpmovecflt(&z.val.u.cval->real, 0.0); mpmovecflt(&z.val.u.cval->imag, 0.0); break; case TFLOAT32: case TFLOAT64: mpmovecflt(&zero, 0.0); z.val.ctype = CTFLT; z.val.u.fval = &zero; break; case TPTR32: case TPTR64: case TCHAN: case TMAP: z.val.ctype = CTNIL; break; case TBOOL: z.val.ctype = CTBOOL; break; case TINT8: case TINT16: case TINT32: case TINT64: case TUINT8: case TUINT16: case TUINT32: case TUINT64: z.val.ctype = CTINT; z.val.u.xval = mal(sizeof(*z.val.u.xval)); mpmovecfix(z.val.u.xval, 0); break; default: fatal("clearslim called on type %T", n->type); } ullmancalc(&z); cgen(&z, n); } /* * generate assignment: * nl = nr * nr == N means zero nl. */ void cgen_as(Node *nl, Node *nr) { Type *tl; if(debug['g']) { dump("cgen_as", nl); dump("cgen_as = ", nr); } while(nr != N && nr->op == OCONVNOP) nr = nr->left; if(nl == N || isblank(nl)) { cgen_discard(nr); return; } if(nr == N || isnil(nr)) { // externals and heaps should already be clear if(nr == N) { if(nl->class == PEXTERN) return; if(nl->class & PHEAP) return; } tl = nl->type; if(tl == T) return; if(isfat(tl)) { if(nl->op == ONAME) gvardef(nl); clearfat(nl); return; } clearslim(nl); return; } tl = nl->type; if(tl == T) return; cgen(nr, nl); } /* * generate: * res = iface{typ, data} * n->left is typ * n->right is data */ void cgen_eface(Node *n, Node *res) { /* * the right node of an eface may contain function calls that uses res as an argument, * so it's important that it is done first */ Node dst; Node *tmp; tmp = temp(types[tptr]); cgen(n->right, tmp); gvardef(res); dst = *res; dst.type = types[tptr]; dst.xoffset += widthptr; cgen(tmp, &dst); dst.xoffset -= widthptr; cgen(n->left, &dst); } /* * generate: * res = s[lo, hi]; * n->left is s * n->list is (cap(s)-lo(TUINT), hi-lo(TUINT)[, lo*width(TUINTPTR)]) * caller (cgen) guarantees res is an addable ONAME. * * called for OSLICE, OSLICE3, OSLICEARR, OSLICE3ARR, OSLICESTR. */ void cgen_slice(Node *n, Node *res) { Node src, dst, *cap, *len, *offs, *add, *base; cap = n->list->n; len = n->list->next->n; offs = N; if(n->list->next->next) offs = n->list->next->next->n; // evaluate base pointer first, because it is the only // possibly complex expression. once that is evaluated // and stored, updating the len and cap can be done // without making any calls, so without doing anything that // might cause preemption or garbage collection. // this makes the whole slice update atomic as far as the // garbage collector can see. base = temp(types[TUINTPTR]); if(isnil(n->left)) { tempname(&src, n->left->type); cgen(n->left, &src); } else src = *n->left; if(n->op == OSLICE || n->op == OSLICE3 || n->op == OSLICESTR) src.xoffset += Array_array; if(n->op == OSLICEARR || n->op == OSLICE3ARR) { if(!isptr[n->left->type->etype]) fatal("slicearr is supposed to work on pointer: %+N\n", n); cgen(&src, base); cgen_checknil(base); if(offs != N) { add = nod(OADD, base, offs); typecheck(&add, Erv); cgen(add, base); } } else if(offs == N) { src.type = types[tptr]; cgen(&src, base); } else { src.type = types[tptr]; add = nod(OADDPTR, &src, offs); typecheck(&add, Erv); cgen(add, base); } // committed to the update gvardef(res); // dst.array = src.array [ + lo *width ] dst = *res; dst.xoffset += Array_array; dst.type = types[tptr]; cgen(base, &dst); // dst.len = hi [ - lo ] dst = *res; dst.xoffset += Array_nel; dst.type = types[simtype[TUINT]]; cgen(len, &dst); if(n->op != OSLICESTR) { // dst.cap = cap [ - lo ] dst = *res; dst.xoffset += Array_cap; dst.type = types[simtype[TUINT]]; cgen(cap, &dst); } } /* * gather series of offsets * >=0 is direct addressed field * <0 is pointer to next field (+1) */ int dotoffset(Node *n, int64 *oary, Node **nn) { int i; switch(n->op) { case ODOT: if(n->xoffset == BADWIDTH) { dump("bad width in dotoffset", n); fatal("bad width in dotoffset"); } i = dotoffset(n->left, oary, nn); if(i > 0) { if(oary[i-1] >= 0) oary[i-1] += n->xoffset; else oary[i-1] -= n->xoffset; break; } if(i < 10) oary[i++] = n->xoffset; break; case ODOTPTR: if(n->xoffset == BADWIDTH) { dump("bad width in dotoffset", n); fatal("bad width in dotoffset"); } i = dotoffset(n->left, oary, nn); if(i < 10) oary[i++] = -(n->xoffset+1); break; default: *nn = n; return 0; } if(i >= 10) *nn = N; return i; } /* * make a new off the books */ void tempname(Node *nn, Type *t) { Node *n; Sym *s; if(curfn == N) fatal("no curfn for tempname"); if(t == T) { yyerror("tempname called with nil type"); t = types[TINT32]; } // give each tmp a different name so that there // a chance to registerizer them snprint(namebuf, sizeof(namebuf), "autotmp_%.4d", statuniqgen); statuniqgen++; s = lookup(namebuf); n = nod(ONAME, N, N); n->sym = s; s->def = n; n->type = t; n->class = PAUTO; n->addable = 1; n->ullman = 1; n->esc = EscNever; n->curfn = curfn; curfn->dcl = list(curfn->dcl, n); dowidth(t); n->xoffset = 0; *nn = *n; } Node* temp(Type *t) { Node *n; n = nod(OXXX, N, N); tempname(n, t); n->sym->def->used = 1; return n->orig; } go/src/cmd/gc/go.errors0100644000000000000000000000511712412656734015266 0ustar00rootroot00000000000000// 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. // Example-based syntax error messages. // See bisonerrors, Makefile, go.y. static struct { int yystate; int yychar; char *msg; } yymsg[] = { // Each line of the form % token list // is converted by bisonerrors into the yystate and yychar caused // by that token list. % loadsys package LIMPORT '(' LLITERAL import_package import_there ',' "unexpected comma during import block", % loadsys package LIMPORT LNAME ';' "missing import path; require quoted string", % loadsys package imports LFUNC LNAME '(' ')' '{' LIF if_header ';' "missing { after if clause", % loadsys package imports LFUNC LNAME '(' ')' '{' LSWITCH if_header ';' "missing { after switch clause", % loadsys package imports LFUNC LNAME '(' ')' '{' LFOR for_header ';' "missing { after for clause", % loadsys package imports LFUNC LNAME '(' ')' '{' LFOR ';' LBODY "missing { after for clause", % loadsys package imports LFUNC LNAME '(' ')' ';' '{' "unexpected semicolon or newline before {", % loadsys package imports LTYPE LNAME ';' "unexpected semicolon or newline in type declaration", % loadsys package imports LCHAN '}' "unexpected } in channel type", % loadsys package imports LCHAN ')' "unexpected ) in channel type", % loadsys package imports LCHAN ',' "unexpected comma in channel type", % loadsys package imports LFUNC LNAME '(' ')' '{' if_stmt ';' LELSE "unexpected semicolon or newline before else", % loadsys package imports LTYPE LNAME LINTERFACE '{' LNAME ',' LNAME "name list not allowed in interface type", % loadsys package imports LFUNC LNAME '(' ')' '{' LFOR LVAR LNAME '=' LNAME "var declaration not allowed in for initializer", % loadsys package imports LVAR LNAME '[' ']' LNAME '{' "unexpected { at end of statement", % loadsys package imports LFUNC LNAME '(' ')' '{' LVAR LNAME '[' ']' LNAME '{' "unexpected { at end of statement", % loadsys package imports LFUNC LNAME '(' ')' '{' LDEFER LNAME ';' "argument to go/defer must be function call", % loadsys package imports LVAR LNAME '=' LNAME '{' LNAME ';' "need trailing comma before newline in composite literal", % loadsys package imports LVAR LNAME '=' comptype '{' LNAME ';' "need trailing comma before newline in composite literal", % loadsys package imports LFUNC LNAME '(' ')' '{' LFUNC LNAME "nested func not allowed", % loadsys package imports LFUNC LNAME '(' ')' '{' LIF if_header loop_body LELSE ';' "else must be followed by if or statement block" }; go/src/cmd/gc/go.h0100644000000000000000000010753712412656737014215 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #undef OAPPEND // avoid #undef isblank #define isblank goisblank #ifndef EXTERN #define EXTERN extern #endif #undef BUFSIZ // The parser's maximum stack size. // We have to use a #define macro here since yacc // or bison will check for its definition and use // a potentially smaller value if it is undefined. #define YYMAXDEPTH 500 enum { NHUNK = 50000, BUFSIZ = 8192, NSYMB = 500, NHASH = 1024, STRINGSZ = 200, MAXALIGN = 7, UINF = 100, PRIME1 = 3, AUNK = 100, // These values are known by runtime. // The MEMx and NOEQx values must run in parallel. See algtype. AMEM = 0, AMEM0, AMEM8, AMEM16, AMEM32, AMEM64, AMEM128, ANOEQ, ANOEQ0, ANOEQ8, ANOEQ16, ANOEQ32, ANOEQ64, ANOEQ128, ASTRING, AINTER, ANILINTER, ASLICE, AFLOAT32, AFLOAT64, ACPLX64, ACPLX128, BADWIDTH = -1000000000, MaxStackVarSize = 10*1024*1024, }; extern vlong MAXWIDTH; /* * note this is the representation * of the compilers string literals, * it is not the runtime representation */ typedef struct Strlit Strlit; struct Strlit { int32 len; char s[1]; // variable }; enum { Mpscale = 29, // safely smaller than bits in a long Mpprec = 16, // Mpscale*Mpprec is max number of bits Mpnorm = Mpprec - 1, // significant words in a normalized float Mpbase = 1L << Mpscale, Mpsign = Mpbase >> 1, Mpmask = Mpbase - 1, Mpdebug = 0, }; typedef struct Mpint Mpint; struct Mpint { long a[Mpprec]; uchar neg; uchar ovf; }; typedef struct Mpflt Mpflt; struct Mpflt { Mpint val; short exp; }; typedef struct Mpcplx Mpcplx; struct Mpcplx { Mpflt real; Mpflt imag; }; typedef struct Val Val; struct Val { short ctype; union { short reg; // OREGISTER short bval; // bool value CTBOOL Mpint* xval; // int CTINT, rune CTRUNE Mpflt* fval; // float CTFLT Mpcplx* cval; // float CTCPLX Strlit* sval; // string CTSTR } u; }; // prevent incompatible type signatures between libgc and 8g on Plan 9 #pragma incomplete struct Array typedef struct Array Array; typedef struct Bvec Bvec; typedef struct Pkg Pkg; typedef struct Sym Sym; typedef struct Node Node; typedef struct NodeList NodeList; typedef struct Type Type; typedef struct Label Label; struct Type { uchar etype; uchar nointerface; uchar noalg; uchar chan; uchar trecur; // to detect loops uchar printed; uchar embedded; // TFIELD embedded type uchar siggen; uchar funarg; // on TSTRUCT and TFIELD uchar copyany; uchar local; // created in this file uchar deferwidth; uchar broke; // broken type definition. uchar isddd; // TFIELD is ... argument uchar align; uchar haspointers; // 0 unknown, 1 no, 2 yes Node* nod; // canonical OTYPE node Type* orig; // original type (type literal or predefined type) int lineno; // TFUNC int thistuple; int outtuple; int intuple; uchar outnamed; Type* method; Type* xmethod; Sym* sym; int32 vargen; // unique name for OTYPE/ONAME Node* nname; vlong argwid; // most nodes Type* type; // actual type for TFIELD, element type for TARRAY, TCHAN, TMAP, TPTRxx vlong width; // offset in TFIELD, width in all others // TFIELD Type* down; // next struct field, also key type in TMAP Type* outer; // outer struct Strlit* note; // literal string annotation // TARRAY vlong bound; // negative is dynamic array // TMAP Type* bucket; // internal type representing a hash bucket Type* hmap; // internal type representing a Hmap (map header object) Type* hiter; // internal type representing hash iterator state Type* map; // link from the above 3 internal types back to the map type. int32 maplineno; // first use of TFORW as map key int32 embedlineno; // first use of TFORW as embedded type // for TFORW, where to copy the eventual value to NodeList *copyto; Node *lastfn; // for usefield }; #define T ((Type*)0) typedef struct InitEntry InitEntry; typedef struct InitPlan InitPlan; struct InitEntry { vlong xoffset; // struct, array only Node *key; // map only Node *expr; }; struct InitPlan { vlong lit; // bytes of initialized non-zero literals vlong zero; // bytes of zeros vlong expr; // bytes of run-time computed expressions InitEntry *e; int len; int cap; }; enum { EscUnknown, EscHeap, EscScope, EscNone, EscReturn, EscNever, EscBits = 3, EscMask = (1< ONAME/PPARAMREF // ONAME substitute while inlining Node* inlvar; // OPACK Pkg* pkg; // OARRAYLIT, OMAPLIT, OSTRUCTLIT. InitPlan* initplan; // Escape analysis. NodeList* escflowsrc; // flow(this, src) NodeList* escretval; // on OCALLxxx, list of dummy return values int escloopdepth; // -1: global, 0: return variables, 1:function top level, increased inside function for every loop or label to mark scopes Sym* sym; // various int32 vargen; // unique name for OTYPE/ONAME int32 lineno; int32 endlineno; vlong xoffset; vlong stkdelta; // offset added by stack frame compaction phase. int32 ostk; int32 iota; uint32 walkgen; int32 esclevel; void* opt; // for optimization passes }; #define N ((Node*)0) /* * Every node has a walkgen field. * If you want to do a traversal of a node graph that * might contain duplicates and want to avoid * visiting the same nodes twice, increment walkgen * before starting. Then before processing a node, do * * if(n->walkgen == walkgen) * return; * n->walkgen = walkgen; * * Such a walk cannot call another such walk recursively, * because of the use of the global walkgen. */ EXTERN uint32 walkgen; struct NodeList { Node* n; NodeList* next; NodeList* end; }; enum { SymExport = 1<<0, // to be exported SymPackage = 1<<1, SymExported = 1<<2, // already written out by export SymUniq = 1<<3, SymSiggen = 1<<4, SymGcgen = 1<<5, }; struct Sym { ushort lexical; uchar flags; uchar sym; // huffman encoding in object file Sym* link; int32 npkg; // number of imported packages with this name uint32 uniqgen; Pkg* importdef; // where imported definition was found // saved and restored by dcopy Pkg* pkg; char* name; // variable name Node* def; // definition: ONAME OTYPE OPACK or OLITERAL Label* label; // corresponding label (ephemeral) int32 block; // blocknumber to catch redeclaration int32 lastlineno; // last declaration for diagnostic Pkg* origpkg; // original package for . import LSym* lsym; }; #define S ((Sym*)0) EXTERN Sym* dclstack; struct Pkg { char* name; // package name Strlit* path; // string literal used in import statement Sym* pathsym; char* prefix; // escaped path for use in symbol table Pkg* link; uchar imported; // export data of this package was parsed char exported; // import line written in export data char direct; // imported directly char safe; // whether the package is marked as safe }; typedef struct Iter Iter; struct Iter { int done; Type* tfunc; Type* t; Node** an; Node* n; }; // Node ops. enum { OXXX, // names ONAME, // var, const or func name ONONAME, // unnamed arg or return value: f(int, string) (int, error) { etc } OTYPE, // type name OPACK, // import OLITERAL, // literal // expressions OADD, // x + y OSUB, // x - y OOR, // x | y OXOR, // x ^ y OADDPTR, // ptr + uintptr, inserted by compiler only, used to avoid unsafe type changes during codegen OADDSTR, // s + "foo" OADDR, // &x OANDAND, // b0 && b1 OAPPEND, // append OARRAYBYTESTR, // string(bytes) OARRAYBYTESTRTMP, // string(bytes) ephemeral OARRAYRUNESTR, // string(runes) OSTRARRAYBYTE, // []byte(s) OSTRARRAYRUNE, // []rune(s) OAS, // x = y or x := y OAS2, // x, y, z = xx, yy, zz OAS2FUNC, // x, y = f() OAS2RECV, // x, ok = <-c OAS2MAPR, // x, ok = m["foo"] OAS2DOTTYPE, // x, ok = I.(int) OASOP, // x += y OCALL, // function call, method call or type conversion, possibly preceded by defer or go. OCALLFUNC, // f() OCALLMETH, // t.Method() OCALLINTER, // err.Error() OCALLPART, // t.Method (without ()) OCAP, // cap OCLOSE, // close OCLOSURE, // f = func() { etc } OCMPIFACE, // err1 == err2 OCMPSTR, // s1 == s2 OCOMPLIT, // composite literal, typechecking may convert to a more specific OXXXLIT. OMAPLIT, // M{"foo":3, "bar":4} OSTRUCTLIT, // T{x:3, y:4} OARRAYLIT, // [2]int{3, 4} OPTRLIT, // &T{x:3, y:4} OCONV, // var i int; var u uint; i = int(u) OCONVIFACE, // I(t) OCONVNOP, // type Int int; var i int; var j Int; i = int(j) OCOPY, // copy ODCL, // var x int ODCLFUNC, // func f() or func (r) f() ODCLFIELD, // struct field, interface field, or func/method argument/return value. ODCLCONST, // const pi = 3.14 ODCLTYPE, // type Int int ODELETE, // delete ODOT, // t.x ODOTPTR, // p.x that is implicitly (*p).x ODOTMETH, // t.Method ODOTINTER, // err.Error OXDOT, // t.x, typechecking may convert to a more specific ODOTXXX. ODOTTYPE, // e = err.(MyErr) ODOTTYPE2, // e, ok = err.(MyErr) OEQ, // x == y ONE, // x != y OLT, // x < y OLE, // x <= y OGE, // x >= y OGT, // x > y OIND, // *p OINDEX, // a[i] OINDEXMAP, // m[s] OKEY, // The x:3 in t{x:3, y:4}, the 1:2 in a[1:2], the 2:20 in [3]int{2:20}, etc. OPARAM, // The on-stack copy of a parameter or return value that escapes. OLEN, // len OMAKE, // make, typechecking may convert to a more specific OMAKEXXX. OMAKECHAN, // make(chan int) OMAKEMAP, // make(map[string]int) OMAKESLICE, // make([]int, 0) OMUL, // x * y ODIV, // x / y OMOD, // x % y OLSH, // x << u ORSH, // x >> u OAND, // x & y OANDNOT, // x &^ y ONEW, // new ONOT, // !b OCOM, // ^x OPLUS, // +x OMINUS, // -y OOROR, // b1 || b2 OPANIC, // panic OPRINT, // print OPRINTN, // println OPAREN, // (x) OSEND, // c <- x OSLICE, // v[1:2], typechecking may convert to a more specific OSLICEXXX. OSLICEARR, // a[1:2] OSLICESTR, // s[1:2] OSLICE3, // v[1:2:3], typechecking may convert to OSLICE3ARR. OSLICE3ARR, // a[1:2:3] ORECOVER, // recover ORECV, // <-c ORUNESTR, // string(i) OSELRECV, // case x = <-c: OSELRECV2, // case x, ok = <-c: OIOTA, // iota OREAL, // real OIMAG, // imag OCOMPLEX, // complex // statements OBLOCK, // block of code OBREAK, // break OCASE, // case, after being verified by swt.c's casebody. OXCASE, // case, before verification. OCONTINUE, // continue ODEFER, // defer OEMPTY, // no-op OFALL, // fallthrough, after being verified by swt.c's casebody. OXFALL, // fallthrough, before verification. OFOR, // for OGOTO, // goto OIF, // if OLABEL, // label: OPROC, // go ORANGE, // range ORETURN, // return OSELECT, // select OSWITCH, // switch x OTYPESW, // switch err.(type) // types OTCHAN, // chan int OTMAP, // map[string]int OTSTRUCT, // struct{} OTINTER, // interface{} OTFUNC, // func() OTARRAY, // []int, [8]int, [N]int or [...]int OTPAREN, // (T) // misc ODDD, // func f(args ...int) or f(l...) or var a = [...]int{0, 1, 2}. ODDDARG, // func f(args ...int), introduced by escape analysis. OINLCALL, // intermediary representation of an inlined call. OEFACE, // itable and data words of an empty-interface value. OITAB, // itable word of an interface value. OSPTR, // base pointer of a slice or string. OCLOSUREVAR, // variable reference at beginning of closure function OCFUNC, // reference to c function pointer (not go func value) OCHECKNIL, // emit code to ensure pointer/interface not nil OVARKILL, // variable is dead // arch-specific registers OREGISTER, // a register, such as AX. OINDREG, // offset plus indirect of a register, such as 8(SP). // 386/amd64-specific opcodes OCMP, // compare: ACMP. ODEC, // decrement: ADEC. OINC, // increment: AINC. OEXTEND, // extend: ACWD/ACDQ/ACQO. OHMUL, // high mul: AMUL/AIMUL for unsigned/signed (OMUL uses AIMUL for both). OLROT, // left rotate: AROL. ORROTC, // right rotate-carry: ARCR. ORETJMP, // return to other function OEND, }; enum { Txxx, // 0 TINT8, TUINT8, // 1 TINT16, TUINT16, TINT32, TUINT32, TINT64, TUINT64, TINT, TUINT, TUINTPTR, TCOMPLEX64, // 12 TCOMPLEX128, TFLOAT32, // 14 TFLOAT64, TBOOL, // 16 TPTR32, TPTR64, // 17 TFUNC, // 19 TARRAY, T_old_DARRAY, TSTRUCT, // 22 TCHAN, TMAP, TINTER, // 25 TFORW, TFIELD, TANY, TSTRING, TUNSAFEPTR, // pseudo-types for literals TIDEAL, // 31 TNIL, TBLANK, // pseudo-type for frame layout TFUNCARGS, TCHANARGS, TINTERMETH, NTYPE, }; enum { CTxxx, CTINT, CTRUNE, CTFLT, CTCPLX, CTSTR, CTBOOL, CTNIL, }; enum { /* types of channel */ /* must match ../../pkg/nreflect/type.go:/Chandir */ Cxxx, Crecv = 1<<0, Csend = 1<<1, Cboth = Crecv | Csend, }; // declaration context enum { Pxxx, PEXTERN, // global variable PAUTO, // local variables PPARAM, // input arguments PPARAMOUT, // output results PPARAMREF, // closure variable reference PFUNC, // global function PDISCARD, // discard during parse of duplicate import PHEAP = 1<<7, // an extra bit to identify an escaped variable }; enum { Etop = 1<<1, // evaluated at statement level Erv = 1<<2, // evaluated in value context Etype = 1<<3, Ecall = 1<<4, // call-only expressions are ok Efnstruct = 1<<5, // multivalue function returns are ok Eiota = 1<<6, // iota is ok Easgn = 1<<7, // assigning to expression Eindir = 1<<8, // indirecting through expression Eaddr = 1<<9, // taking address of expression Eproc = 1<<10, // inside a go statement Ecomplit = 1<<11, // type in composite literal }; #define BITS 5 #define NVAR (BITS*sizeof(uint32)*8) typedef struct Bits Bits; struct Bits { uint32 b[BITS]; }; EXTERN Bits zbits; struct Bvec { int32 n; // number of bits uint32 b[]; }; typedef struct Var Var; struct Var { vlong offset; Node* node; Var* nextinnode; int width; char name; char etype; char addr; }; EXTERN Var var[NVAR]; typedef struct Typedef Typedef; struct Typedef { char* name; int etype; int sameas; }; extern Typedef typedefs[]; typedef struct Sig Sig; struct Sig { char* name; Pkg* pkg; Sym* isym; Sym* tsym; Type* type; Type* mtype; int32 offset; Sig* link; }; typedef struct Io Io; struct Io { char* infile; Biobuf* bin; int32 ilineno; int nlsemi; int eofnl; int last; int peekc; int peekc1; // second peekc for ... char* cp; // used for content when bin==nil int importsafe; }; typedef struct Dlist Dlist; struct Dlist { Type* field; }; typedef struct Idir Idir; struct Idir { Idir* link; char* dir; }; /* * argument passing to/from * smagic and umagic */ typedef struct Magic Magic; struct Magic { int w; // input for both - width int s; // output for both - shift int bad; // output for both - unexpected failure // magic multiplier for signed literal divisors int64 sd; // input - literal divisor int64 sm; // output - multiplier // magic multiplier for unsigned literal divisors uint64 ud; // input - literal divisor uint64 um; // output - multiplier int ua; // output - adder }; struct Label { uchar used; Sym* sym; Node* def; NodeList* use; Label* link; // for use during gen Prog* gotopc; // pointer to unresolved gotos Prog* labelpc; // pointer to code Prog* breakpc; // pointer to code Prog* continpc; // pointer to code }; #define L ((Label*)0) /* * note this is the runtime representation * of the compilers arrays. * * typedef struct * { // must not move anything * uchar array[8]; // pointer to data * uchar nel[4]; // number of elements * uchar cap[4]; // allocated number of elements * } Array; */ EXTERN int Array_array; // runtime offsetof(Array,array) - same for String EXTERN int Array_nel; // runtime offsetof(Array,nel) - same for String EXTERN int Array_cap; // runtime offsetof(Array,cap) EXTERN int sizeof_Array; // runtime sizeof(Array) /* * note this is the runtime representation * of the compilers strings. * * typedef struct * { // must not move anything * uchar array[8]; // pointer to data * uchar nel[4]; // number of elements * } String; */ EXTERN int sizeof_String; // runtime sizeof(String) EXTERN Dlist dotlist[10]; // size is max depth of embeddeds EXTERN Io curio; EXTERN Io pushedio; EXTERN int32 lexlineno; EXTERN int32 lineno; EXTERN int32 prevlineno; EXTERN char* infile; EXTERN char* outfile; EXTERN Biobuf* bout; EXTERN int nerrors; EXTERN int nsavederrors; EXTERN int nsyntaxerrors; EXTERN int safemode; EXTERN int nolocalimports; EXTERN char namebuf[NSYMB]; EXTERN char lexbuf[NSYMB]; EXTERN char litbuf[NSYMB]; EXTERN int debug[256]; EXTERN char* debugstr; EXTERN int debug_checknil; EXTERN Sym* hash[NHASH]; EXTERN Sym* importmyname; // my name for package EXTERN Pkg* localpkg; // package being compiled EXTERN Pkg* importpkg; // package being imported EXTERN Pkg* structpkg; // package that declared struct, during import EXTERN Pkg* builtinpkg; // fake package for builtins EXTERN Pkg* gostringpkg; // fake pkg for Go strings EXTERN Pkg* itabpkg; // fake pkg for itab cache EXTERN Pkg* runtimepkg; // package runtime EXTERN Pkg* racepkg; // package runtime/race EXTERN Pkg* stringpkg; // fake package for C strings EXTERN Pkg* typepkg; // fake package for runtime type info (headers) EXTERN Pkg* typelinkpkg; // fake package for runtime type info (data) EXTERN Pkg* weaktypepkg; // weak references to runtime type info EXTERN Pkg* unsafepkg; // package unsafe EXTERN Pkg* trackpkg; // fake package for field tracking EXTERN Pkg* phash[128]; EXTERN int tptr; // either TPTR32 or TPTR64 extern char* runtimeimport; extern char* unsafeimport; EXTERN char* myimportpath; EXTERN Idir* idirs; EXTERN char* localimport; EXTERN Type* types[NTYPE]; EXTERN Type* idealstring; EXTERN Type* idealbool; EXTERN Type* bytetype; EXTERN Type* runetype; EXTERN Type* errortype; EXTERN uchar simtype[NTYPE]; EXTERN uchar isptr[NTYPE]; EXTERN uchar isforw[NTYPE]; EXTERN uchar isint[NTYPE]; EXTERN uchar isfloat[NTYPE]; EXTERN uchar iscomplex[NTYPE]; EXTERN uchar issigned[NTYPE]; EXTERN uchar issimple[NTYPE]; EXTERN uchar okforeq[NTYPE]; EXTERN uchar okforadd[NTYPE]; EXTERN uchar okforand[NTYPE]; EXTERN uchar okfornone[NTYPE]; EXTERN uchar okforcmp[NTYPE]; EXTERN uchar okforbool[NTYPE]; EXTERN uchar okforcap[NTYPE]; EXTERN uchar okforlen[NTYPE]; EXTERN uchar okforarith[NTYPE]; EXTERN uchar okforconst[NTYPE]; EXTERN uchar* okfor[OEND]; EXTERN uchar iscmp[OEND]; EXTERN Mpint* minintval[NTYPE]; EXTERN Mpint* maxintval[NTYPE]; EXTERN Mpflt* minfltval[NTYPE]; EXTERN Mpflt* maxfltval[NTYPE]; EXTERN NodeList* xtop; EXTERN NodeList* externdcl; EXTERN NodeList* closures; EXTERN NodeList* exportlist; EXTERN NodeList* importlist; // imported functions and methods with inlinable bodies EXTERN NodeList* funcsyms; EXTERN int dclcontext; // PEXTERN/PAUTO EXTERN int incannedimport; EXTERN int statuniqgen; // name generator for static temps EXTERN int loophack; EXTERN int32 iota; EXTERN NodeList* lastconst; EXTERN Node* lasttype; EXTERN vlong maxarg; EXTERN vlong stksize; // stack size for current frame EXTERN vlong stkptrsize; // prefix of stack containing pointers EXTERN int32 blockgen; // max block number EXTERN int32 block; // current block number EXTERN int hasdefer; // flag that curfn has defer statetment EXTERN Node* curfn; EXTERN int widthptr; EXTERN int widthint; EXTERN int widthreg; EXTERN Node* typesw; EXTERN Node* nblank; extern int thechar; extern char* thestring; extern LinkArch* thelinkarch; EXTERN int use_sse; EXTERN char* hunk; EXTERN int32 nhunk; EXTERN int32 thunk; EXTERN int funcdepth; EXTERN int typecheckok; EXTERN int compiling_runtime; EXTERN int compiling_wrappers; EXTERN int pure_go; EXTERN char* flag_installsuffix; EXTERN int flag_race; EXTERN int flag_largemodel; EXTERN int noescape; EXTERN int debuglive; EXTERN Link* ctxt; EXTERN int nointerface; EXTERN int fieldtrack_enabled; EXTERN int precisestack_enabled; EXTERN int writearchive; EXTERN Biobuf bstdout; EXTERN int nacl; /* * y.tab.c */ int yyparse(void); /* * align.c */ int argsize(Type *t); void checkwidth(Type *t); void defercheckwidth(void); void dowidth(Type *t); void resumecheckwidth(void); vlong rnd(vlong o, vlong r); void typeinit(void); /* * array.c */ Array* arraynew(int32 capacity, int32 size); void arrayfree(Array *array); int32 arraylength(Array *array); void* arrayget(Array *array, int32 index); void arrayset(Array *array, int32 index, void *element); void arrayadd(Array *array, void *element); void arraysort(Array* array, int (*cmp)(const void*, const void*)); /* * bits.c */ int Qconv(Fmt *fp); Bits band(Bits a, Bits b); int bany(Bits *a); int beq(Bits a, Bits b); int bitno(int32 b); Bits blsh(uint n); Bits bnot(Bits a); int bnum(Bits a); Bits bor(Bits a, Bits b); int bset(Bits a, uint n); /* * bv.c */ Bvec* bvalloc(int32 n); void bvandnot(Bvec *dst, Bvec *src1, Bvec *src2); int bvcmp(Bvec *bv1, Bvec *bv2); void bvcopy(Bvec *dst, Bvec *src); Bvec* bvconcat(Bvec *src1, Bvec *src2); int bvget(Bvec *bv, int32 i); int32 bvnext(Bvec *bv, int32 i); int bvisempty(Bvec *bv); void bvnot(Bvec *bv); void bvor(Bvec *dst, Bvec *src1, Bvec *src2); void bvand(Bvec *dst, Bvec *src1, Bvec *src2); void bvprint(Bvec *bv); void bvreset(Bvec *bv, int32 i); void bvresetall(Bvec *bv); void bvset(Bvec *bv, int32 i); /* * closure.c */ Node* closurebody(NodeList *body); void closurehdr(Node *ntype); void typecheckclosure(Node *func, int top); Node* walkclosure(Node *func, NodeList **init); void typecheckpartialcall(Node*, Node*); Node* walkpartialcall(Node*, NodeList**); /* * const.c */ int cmpslit(Node *l, Node *r); int consttype(Node *n); void convconst(Node *con, Type *t, Val *val); void convlit(Node **np, Type *t); void convlit1(Node **np, Type *t, int explicit); void defaultlit(Node **np, Type *t); void defaultlit2(Node **lp, Node **rp, int force); void evconst(Node *n); int isconst(Node *n, int ct); int isgoconst(Node *n); Node* nodcplxlit(Val r, Val i); Node* nodlit(Val v); long nonnegconst(Node *n); int doesoverflow(Val v, Type *t); void overflow(Val v, Type *t); int smallintconst(Node *n); Val toint(Val v); Mpflt* truncfltlit(Mpflt *oldv, Type *t); /* * cplx.c */ void complexadd(int op, Node *nl, Node *nr, Node *res); void complexbool(int op, Node *nl, Node *nr, int true, int likely, Prog *to); void complexgen(Node *n, Node *res); void complexminus(Node *nl, Node *res); void complexmove(Node *f, Node *t); void complexmul(Node *nl, Node *nr, Node *res); int complexop(Node *n, Node *res); void nodfconst(Node *n, Type *t, Mpflt* fval); /* * dcl.c */ void addmethod(Sym *sf, Type *t, int local, int nointerface); void addvar(Node *n, Type *t, int ctxt); NodeList* checkarglist(NodeList *all, int input); Node* colas(NodeList *left, NodeList *right, int32 lno); void colasdefn(NodeList *left, Node *defn); NodeList* constiter(NodeList *vl, Node *t, NodeList *cl); Node* dclname(Sym *s); void declare(Node *n, int ctxt); void dumpdcl(char *st); Node* embedded(Sym *s, Pkg *pkg); Node* fakethis(void); void funcbody(Node *n); void funccompile(Node *n, int isclosure); void funchdr(Node *n); Type* functype(Node *this, NodeList *in, NodeList *out); void ifacedcl(Node *n); int isifacemethod(Type *f); void markdcl(void); Node* methodname(Node *n, Type *t); Node* methodname1(Node *n, Node *t); Sym* methodsym(Sym *nsym, Type *t0, int iface); Node* newname(Sym *s); Node* oldname(Sym *s); void popdcl(void); void poptodcl(void); void redeclare(Sym *s, char *where); void testdclstack(void); Type* tointerface(NodeList *l); Type* tostruct(NodeList *l); Node* typedcl0(Sym *s); Node* typedcl1(Node *n, Node *t, int local); Node* typenod(Type *t); NodeList* variter(NodeList *vl, Node *t, NodeList *el); Sym* funcsym(Sym*); /* * esc.c */ void escapes(NodeList*); /* * export.c */ void autoexport(Node *n, int ctxt); void dumpexport(void); int exportname(char *s); void exportsym(Node *n); void importconst(Sym *s, Type *t, Node *n); void importimport(Sym *s, Strlit *z); Sym* importsym(Sym *s, int op); void importtype(Type *pt, Type *t); void importvar(Sym *s, Type *t); Type* pkgtype(Sym *s); /* * fmt.c */ void fmtinstallgo(void); void dump(char *s, Node *n); void dumplist(char *s, NodeList *l); /* * gen.c */ void addrescapes(Node *n); void cgen_as(Node *nl, Node *nr); void cgen_callmeth(Node *n, int proc); void cgen_eface(Node* n, Node* res); void cgen_slice(Node* n, Node* res); void clearlabels(void); void checklabels(void); int dotoffset(Node *n, int64 *oary, Node **nn); void gen(Node *n); void genlist(NodeList *l); Node* sysfunc(char *name); void tempname(Node *n, Type *t); Node* temp(Type*); /* * init.c */ void fninit(NodeList *n); Sym* renameinit(void); /* * inl.c */ void caninl(Node *fn); void inlcalls(Node *fn); void typecheckinl(Node *fn); /* * lex.c */ void cannedimports(char *file, char *cp); void importfile(Val *f, int line); char* lexname(int lex); char* expstring(void); void mkpackage(char* pkgname); void unimportfile(void); int32 yylex(void); extern int yylast; extern int yyprev; /* * mparith1.c */ int Bconv(Fmt *fp); int Fconv(Fmt *fp); void mpaddcfix(Mpint *a, vlong c); void mpaddcflt(Mpflt *a, double c); void mpatofix(Mpint *a, char *as); void mpatoflt(Mpflt *a, char *as); int mpcmpfixc(Mpint *b, vlong c); int mpcmpfixfix(Mpint *a, Mpint *b); int mpcmpfixflt(Mpint *a, Mpflt *b); int mpcmpfltc(Mpflt *b, double c); int mpcmpfltfix(Mpflt *a, Mpint *b); int mpcmpfltflt(Mpflt *a, Mpflt *b); void mpcomfix(Mpint *a); void mpdivfixfix(Mpint *a, Mpint *b); void mpmodfixfix(Mpint *a, Mpint *b); void mpmovefixfix(Mpint *a, Mpint *b); void mpmovefixflt(Mpflt *a, Mpint *b); int mpmovefltfix(Mpint *a, Mpflt *b); void mpmovefltflt(Mpflt *a, Mpflt *b); void mpmulcfix(Mpint *a, vlong c); void mpmulcflt(Mpflt *a, double c); void mpsubfixfix(Mpint *a, Mpint *b); void mpsubfltflt(Mpflt *a, Mpflt *b); /* * mparith2.c */ void mpaddfixfix(Mpint *a, Mpint *b, int); void mpandfixfix(Mpint *a, Mpint *b); void mpandnotfixfix(Mpint *a, Mpint *b); void mpdivfract(Mpint *a, Mpint *b); void mpdivmodfixfix(Mpint *q, Mpint *r, Mpint *n, Mpint *d); vlong mpgetfix(Mpint *a); void mplshfixfix(Mpint *a, Mpint *b); void mpmovecfix(Mpint *a, vlong c); void mpmulfixfix(Mpint *a, Mpint *b); void mpmulfract(Mpint *a, Mpint *b); void mpnegfix(Mpint *a); void mporfixfix(Mpint *a, Mpint *b); void mprshfixfix(Mpint *a, Mpint *b); void mpshiftfix(Mpint *a, int s); int mptestfix(Mpint *a); void mpxorfixfix(Mpint *a, Mpint *b); /* * mparith3.c */ void mpaddfltflt(Mpflt *a, Mpflt *b); void mpdivfltflt(Mpflt *a, Mpflt *b); double mpgetflt(Mpflt *a); double mpgetflt32(Mpflt *a); void mpmovecflt(Mpflt *a, double c); void mpmulfltflt(Mpflt *a, Mpflt *b); void mpnegflt(Mpflt *a); void mpnorm(Mpflt *a); void mpsetexp(Mpflt *a, int exp); int mptestflt(Mpflt *a); int sigfig(Mpflt *a); /* * obj.c */ void Bputname(Biobuf *b, LSym *s); int duint16(Sym *s, int off, uint16 v); int duint32(Sym *s, int off, uint32 v); int duint64(Sym *s, int off, uint64 v); int duint8(Sym *s, int off, uint8 v); int duintptr(Sym *s, int off, uint64 v); int dsname(Sym *s, int off, char *dat, int ndat); void dumpobj(void); Sym* stringsym(char*, int); void slicebytes(Node*, char*, int); LSym* linksym(Sym*); /* * order.c */ void order(Node *fn); /* * range.c */ void typecheckrange(Node *n); void walkrange(Node *n); /* * reflect.c */ void dumptypestructs(void); Type* methodfunc(Type *f, Type*); Node* typename(Type *t); Sym* typesym(Type *t); Sym* typenamesym(Type *t); Sym* tracksym(Type *t); Sym* typesymprefix(char *prefix, Type *t); int haspointers(Type *t); void usefield(Node*); Type* hiter(Type* t); /* * select.c */ void typecheckselect(Node *sel); void walkselect(Node *sel); /* * sinit.c */ void anylit(int, Node *n, Node *var, NodeList **init); int gen_as_init(Node *n); NodeList* initfix(NodeList *l); int oaslit(Node *n, NodeList **init); int stataddr(Node *nam, Node *n); /* * subr.c */ Node* adddot(Node *n); int adddot1(Sym *s, Type *t, int d, Type **save, int ignorecase); void addinit(Node**, NodeList*); Type* aindex(Node *b, Type *t); int algtype(Type *t); int algtype1(Type *t, Type **bad); void argtype(Node *on, Type *t); Node* assignconv(Node *n, Type *t, char *context); int assignop(Type *src, Type *dst, char **why); void badtype(int o, Type *tl, Type *tr); int brcom(int a); int brrev(int a); NodeList* concat(NodeList *a, NodeList *b); int convertop(Type *src, Type *dst, char **why); Node* copyexpr(Node*, Type*, NodeList**); int count(NodeList *l); int cplxsubtype(int et); int eqtype(Type *t1, Type *t2); int eqtypenoname(Type *t1, Type *t2); void errorexit(void); void expandmeth(Type *t); void fatal(char *fmt, ...); void flusherrors(void); void frame(int context); Type* funcfirst(Iter *s, Type *t); Type* funcnext(Iter *s); void genwrapper(Type *rcvr, Type *method, Sym *newnam, int iface); void genhash(Sym *sym, Type *t); void geneq(Sym *sym, Type *t); Type** getinarg(Type *t); Type* getinargx(Type *t); Type** getoutarg(Type *t); Type* getoutargx(Type *t); Type** getthis(Type *t); Type* getthisx(Type *t); int implements(Type *t, Type *iface, Type **missing, Type **have, int *ptr); void importdot(Pkg *opkg, Node *pack); int is64(Type *t); int isbadimport(Strlit *s); int isblank(Node *n); int isblanksym(Sym *s); int isfixedarray(Type *t); int isideal(Type *t); int isinter(Type *t); int isnil(Node *n); int isnilinter(Type *t); int isptrto(Type *t, int et); int isslice(Type *t); int istype(Type *t, int et); void linehist(char *file, int32 off, int relative); NodeList* list(NodeList *l, Node *n); NodeList* list1(Node *n); void listsort(NodeList**, int(*f)(Node*, Node*)); Node* liststmt(NodeList *l); NodeList* listtreecopy(NodeList *l); Sym* lookup(char *name); void* mal(int32 n); Type* maptype(Type *key, Type *val); Type* methtype(Type *t, int mustname); Pkg* mkpkg(Strlit *path); Sym* ngotype(Node *n); int noconv(Type *t1, Type *t2); Node* nod(int op, Node *nleft, Node *nright); Node* nodbool(int b); void nodconst(Node *n, Type *t, int64 v); Node* nodintconst(int64 v); Node* nodfltconst(Mpflt *v); Node* nodnil(void); int parserline(void); Sym* pkglookup(char *name, Pkg *pkg); int powtwo(Node *n); Type* ptrto(Type *t); void* remal(void *p, int32 on, int32 n); Sym* restrictlookup(char *name, Pkg *pkg); Node* safeexpr(Node *n, NodeList **init); void saveerrors(void); Node* cheapexpr(Node *n, NodeList **init); Node* localexpr(Node *n, Type *t, NodeList **init); void saveorignode(Node *n); int32 setlineno(Node *n); void setmaxarg(Type *t); Type* shallow(Type *t); int simsimtype(Type *t); void smagic(Magic *m); Type* sortinter(Type *t); uint32 stringhash(char *p); Strlit* strlit(char *s); int structcount(Type *t); Type* structfirst(Iter *s, Type **nn); Type* structnext(Iter *s); Node* syslook(char *name, int copy); Type* tounsigned(Type *t); Node* treecopy(Node *n); Type* typ(int et); uint32 typehash(Type *t); void ullmancalc(Node *n); void umagic(Magic *m); void warn(char *fmt, ...); void warnl(int line, char *fmt, ...); void yyerror(char *fmt, ...); void yyerrorl(int line, char *fmt, ...); /* * swt.c */ void typecheckswitch(Node *n); void walkswitch(Node *sw); /* * typecheck.c */ int islvalue(Node *n); Node* typecheck(Node **np, int top); void typechecklist(NodeList *l, int top); Node* typecheckdef(Node *n); void copytype(Node *n, Type *t); void checkreturn(Node*); void queuemethod(Node *n); /* * unsafe.c */ int isunsafebuiltin(Node *n); Node* unsafenmagic(Node *n); /* * walk.c */ Node* callnew(Type *t); Node* chanfn(char *name, int n, Type *t); Node* mkcall(char *name, Type *t, NodeList **init, ...); Node* mkcall1(Node *fn, Type *t, NodeList **init, ...); int vmatch1(Node *l, Node *r); void walk(Node *fn); void walkexpr(Node **np, NodeList **init); void walkexprlist(NodeList *l, NodeList **init); void walkexprlistsafe(NodeList *l, NodeList **init); void walkstmt(Node **np); void walkstmtlist(NodeList *l); Node* conv(Node*, Type*); int candiscard(Node*); Node* outervalue(Node*); /* * arch-specific ggen.c/gsubr.c/gobj.c/pgen.c/plive.c */ #define P ((Prog*)0) EXTERN Prog* continpc; EXTERN Prog* breakpc; EXTERN Prog* pc; EXTERN Prog* firstpc; EXTERN Node* nodfp; EXTERN int disable_checknil; EXTERN vlong zerosize; int anyregalloc(void); void betypeinit(void); void bgen(Node *n, int true, int likely, Prog *to); void checknil(Node*, NodeList**); void expandchecks(Prog*); void cgen(Node*, Node*); void cgen_asop(Node *n); void cgen_call(Node *n, int proc); void cgen_callinter(Node *n, Node *res, int proc); void cgen_checknil(Node*); void cgen_ret(Node *n); void clearfat(Node *n); void compile(Node*); void defframe(Prog*); int dgostringptr(Sym*, int off, char *str); int dgostrlitptr(Sym*, int off, Strlit*); int dstringptr(Sym *s, int off, char *str); int dsymptr(Sym *s, int off, Sym *x, int xoff); int duintxx(Sym *s, int off, uint64 v, int wid); void dumpdata(void); void fixautoused(Prog*); void gdata(Node*, Node*, int); void gdatacomplex(Node*, Mpcplx*); void gdatastring(Node*, Strlit*); void ggloblnod(Node *nam); void ggloblsym(Sym *s, int32 width, int dupok, int rodata); void gvardef(Node*); void gvarkill(Node*); Prog* gjmp(Prog*); void gused(Node*); void movelarge(NodeList*); int isfat(Type*); void linkarchinit(void); void liveness(Node*, Prog*, Sym*, Sym*); void markautoused(Prog*); Plist* newplist(void); Node* nodarg(Type*, int); void nopout(Prog*); void patch(Prog*, Prog*); Prog* unpatch(Prog*); #pragma varargck type "B" Mpint* #pragma varargck type "E" int #pragma varargck type "E" uint #pragma varargck type "F" Mpflt* #pragma varargck type "H" NodeList* #pragma varargck type "J" Node* #pragma varargck type "lL" int32 #pragma varargck type "L" int32 #pragma varargck type "N" Node* #pragma varargck type "lN" Node* #pragma varargck type "O" int #pragma varargck type "O" uint #pragma varargck type "Q" Bits #pragma varargck type "S" Sym* #pragma varargck type "lS" LSym* #pragma varargck type "T" Type* #pragma varargck type "lT" Type* #pragma varargck type "V" Val* #pragma varargck type "Z" Strlit* /* * racewalk.c */ void racewalk(Node *fn); go/src/cmd/gc/go.y0100644000000000000000000010674612412656737014237 0ustar00rootroot00000000000000// Copyright 2009 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. /* * Go language grammar. * * The Go semicolon rules are: * * 1. all statements and declarations are terminated by semicolons. * 2. semicolons can be omitted before a closing ) or }. * 3. semicolons are inserted by the lexer before a newline * following a specific list of tokens. * * Rules #1 and #2 are accomplished by writing the lists as * semicolon-separated lists with an optional trailing semicolon. * Rule #3 is implemented in yylex. */ %{ #include #include /* if we don't, bison will, and go.h re-#defines getc */ #include #include "go.h" static void fixlbrace(int); %} %union { Node* node; NodeList* list; Type* type; Sym* sym; struct Val val; int i; } // |sed 's/.* //' |9 fmt -l1 |sort |9 fmt -l50 | sed 's/^/%xxx /' %token LLITERAL %token LASOP LCOLAS %token LBREAK LCASE LCHAN LCONST LCONTINUE LDDD %token LDEFAULT LDEFER LELSE LFALL LFOR LFUNC LGO LGOTO %token LIF LIMPORT LINTERFACE LMAP LNAME %token LPACKAGE LRANGE LRETURN LSELECT LSTRUCT LSWITCH %token LTYPE LVAR %token LANDAND LANDNOT LBODY LCOMM LDEC LEQ LGE LGT %token LIGNORE LINC LLE LLSH LLT LNE LOROR LRSH %type lbrace import_here %type sym packname %type oliteral %type stmt ntype %type arg_type %type case caseblock %type compound_stmt dotname embed expr complitexpr bare_complitexpr %type expr_or_type %type fndcl hidden_fndcl fnliteral %type for_body for_header for_stmt if_header if_stmt non_dcl_stmt %type interfacedcl keyval labelname name %type name_or_type non_expr_type %type new_name dcl_name oexpr typedclname %type onew_name %type osimple_stmt pexpr pexpr_no_paren %type pseudocall range_stmt select_stmt %type simple_stmt %type switch_stmt uexpr %type xfndcl typedcl start_complit %type xdcl fnbody fnres loop_body dcl_name_list %type new_name_list expr_list keyval_list braced_keyval_list expr_or_type_list xdcl_list %type oexpr_list caseblock_list elseif elseif_list else stmt_list oarg_type_list_ocomma arg_type_list %type interfacedcl_list vardcl vardcl_list structdcl structdcl_list %type common_dcl constdcl constdcl1 constdcl_list typedcl_list %type convtype comptype dotdotdot %type indcl interfacetype structtype ptrtype %type recvchantype non_recvchantype othertype fnret_type fntype %type hidden_importsym hidden_pkg_importsym %type hidden_constant hidden_literal hidden_funarg %type hidden_interfacedcl hidden_structdcl %type hidden_funres %type ohidden_funres %type hidden_funarg_list ohidden_funarg_list %type hidden_interfacedcl_list ohidden_interfacedcl_list %type hidden_structdcl_list ohidden_structdcl_list %type hidden_type hidden_type_misc hidden_pkgtype %type hidden_type_func %type hidden_type_recv_chan hidden_type_non_recv_chan %left LCOMM /* outside the usual hierarchy; here for good error messages */ %left LOROR %left LANDAND %left LEQ LNE LLE LGE LLT LGT %left '+' '-' '|' '^' %left '*' '/' '%' '&' LLSH LRSH LANDNOT /* * manual override of shift/reduce conflicts. * the general form is that we assign a precedence * to the token being shifted and then introduce * NotToken with lower precedence or PreferToToken with higher * and annotate the reducing rule accordingly. */ %left NotPackage %left LPACKAGE %left NotParen %left '(' %left ')' %left PreferToRightParen %error-verbose %% file: loadsys package imports xdcl_list { xtop = concat(xtop, $4); } package: %prec NotPackage { prevlineno = lineno; yyerror("package statement must be first"); errorexit(); } | LPACKAGE sym ';' { mkpackage($2->name); } /* * this loads the definitions for the low-level runtime functions, * so that the compiler can generate calls to them, * but does not make the name "runtime" visible as a package. */ loadsys: { importpkg = runtimepkg; if(debug['A']) cannedimports("runtime.builtin", "package runtime\n\n$$\n\n"); else cannedimports("runtime.builtin", runtimeimport); curio.importsafe = 1; } import_package import_there { importpkg = nil; } imports: | imports import ';' import: LIMPORT import_stmt | LIMPORT '(' import_stmt_list osemi ')' | LIMPORT '(' ')' import_stmt: import_here import_package import_there { Pkg *ipkg; Sym *my; Node *pack; ipkg = importpkg; my = importmyname; importpkg = nil; importmyname = S; if(my == nil) my = lookup(ipkg->name); pack = nod(OPACK, N, N); pack->sym = my; pack->pkg = ipkg; pack->lineno = $1; if(my->name[0] == '.') { importdot(ipkg, pack); break; } if(strcmp(my->name, "init") == 0) { yyerror("cannot import package as init - init must be a func"); break; } if(my->name[0] == '_' && my->name[1] == '\0') break; if(my->def) { lineno = $1; redeclare(my, "as imported package name"); } my->def = pack; my->lastlineno = $1; my->block = 1; // at top level } | import_here import_there { // When an invalid import path is passed to importfile, // it calls yyerror and then sets up a fake import with // no package statement. This allows us to test more // than one invalid import statement in a single file. if(nerrors == 0) fatal("phase error in import"); } import_stmt_list: import_stmt | import_stmt_list ';' import_stmt import_here: LLITERAL { // import with original name $$ = parserline(); importmyname = S; importfile(&$1, $$); } | sym LLITERAL { // import with given name $$ = parserline(); importmyname = $1; importfile(&$2, $$); } | '.' LLITERAL { // import into my name space $$ = parserline(); importmyname = lookup("."); importfile(&$2, $$); } import_package: LPACKAGE LNAME import_safety ';' { if(importpkg->name == nil) { importpkg->name = $2->name; pkglookup($2->name, nil)->npkg++; } else if(strcmp(importpkg->name, $2->name) != 0) yyerror("conflicting names %s and %s for package \"%Z\"", importpkg->name, $2->name, importpkg->path); importpkg->direct = 1; importpkg->safe = curio.importsafe; if(safemode && !curio.importsafe) yyerror("cannot import unsafe package \"%Z\"", importpkg->path); } import_safety: | LNAME { if(strcmp($1->name, "safe") == 0) curio.importsafe = 1; } import_there: { defercheckwidth(); } hidden_import_list '$' '$' { resumecheckwidth(); unimportfile(); } /* * declarations */ xdcl: { yyerror("empty top-level declaration"); $$ = nil; } | common_dcl | xfndcl { $$ = list1($1); } | non_dcl_stmt { yyerror("non-declaration statement outside function body"); $$ = nil; } | error { $$ = nil; } common_dcl: LVAR vardcl { $$ = $2; } | LVAR '(' vardcl_list osemi ')' { $$ = $3; } | LVAR '(' ')' { $$ = nil; } | lconst constdcl { $$ = $2; iota = -100000; lastconst = nil; } | lconst '(' constdcl osemi ')' { $$ = $3; iota = -100000; lastconst = nil; } | lconst '(' constdcl ';' constdcl_list osemi ')' { $$ = concat($3, $5); iota = -100000; lastconst = nil; } | lconst '(' ')' { $$ = nil; iota = -100000; } | LTYPE typedcl { $$ = list1($2); } | LTYPE '(' typedcl_list osemi ')' { $$ = $3; } | LTYPE '(' ')' { $$ = nil; } lconst: LCONST { iota = 0; } vardcl: dcl_name_list ntype { $$ = variter($1, $2, nil); } | dcl_name_list ntype '=' expr_list { $$ = variter($1, $2, $4); } | dcl_name_list '=' expr_list { $$ = variter($1, nil, $3); } constdcl: dcl_name_list ntype '=' expr_list { $$ = constiter($1, $2, $4); } | dcl_name_list '=' expr_list { $$ = constiter($1, N, $3); } constdcl1: constdcl | dcl_name_list ntype { $$ = constiter($1, $2, nil); } | dcl_name_list { $$ = constiter($1, N, nil); } typedclname: sym { // different from dclname because the name // becomes visible right here, not at the end // of the declaration. $$ = typedcl0($1); } typedcl: typedclname ntype { $$ = typedcl1($1, $2, 1); } simple_stmt: expr { $$ = $1; // These nodes do not carry line numbers. // Since a bare name used as an expression is an error, // introduce a wrapper node to give the correct line. switch($$->op) { case ONAME: case ONONAME: case OTYPE: case OPACK: case OLITERAL: $$ = nod(OPAREN, $$, N); $$->implicit = 1; break; } } | expr LASOP expr { $$ = nod(OASOP, $1, $3); $$->etype = $2; // rathole to pass opcode } | expr_list '=' expr_list { if($1->next == nil && $3->next == nil) { // simple $$ = nod(OAS, $1->n, $3->n); break; } // multiple $$ = nod(OAS2, N, N); $$->list = $1; $$->rlist = $3; } | expr_list LCOLAS expr_list { if($3->n->op == OTYPESW) { $$ = nod(OTYPESW, N, $3->n->right); if($3->next != nil) yyerror("expr.(type) must be alone in list"); if($1->next != nil) yyerror("argument count mismatch: %d = %d", count($1), 1); else if(($1->n->op != ONAME && $1->n->op != OTYPE && $1->n->op != ONONAME) || isblank($1->n)) yyerror("invalid variable name %N in type switch", $1->n); else $$->left = dclname($1->n->sym); // it's a colas, so must not re-use an oldname. break; } $$ = colas($1, $3, $2); } | expr LINC { $$ = nod(OASOP, $1, nodintconst(1)); $$->etype = OADD; } | expr LDEC { $$ = nod(OASOP, $1, nodintconst(1)); $$->etype = OSUB; } case: LCASE expr_or_type_list ':' { Node *n, *nn; // will be converted to OCASE // right will point to next case // done in casebody() markdcl(); $$ = nod(OXCASE, N, N); $$->list = $2; if(typesw != N && typesw->right != N && (n=typesw->right->left) != N) { // type switch - declare variable nn = newname(n->sym); declare(nn, dclcontext); $$->nname = nn; // keep track of the instances for reporting unused nn->defn = typesw->right; } } | LCASE expr_or_type_list '=' expr ':' { Node *n; // will be converted to OCASE // right will point to next case // done in casebody() markdcl(); $$ = nod(OXCASE, N, N); if($2->next == nil) n = nod(OAS, $2->n, $4); else { n = nod(OAS2, N, N); n->list = $2; n->rlist = list1($4); } $$->list = list1(n); } | LCASE expr_or_type_list LCOLAS expr ':' { // will be converted to OCASE // right will point to next case // done in casebody() markdcl(); $$ = nod(OXCASE, N, N); $$->list = list1(colas($2, list1($4), $3)); } | LDEFAULT ':' { Node *n, *nn; markdcl(); $$ = nod(OXCASE, N, N); if(typesw != N && typesw->right != N && (n=typesw->right->left) != N) { // type switch - declare variable nn = newname(n->sym); declare(nn, dclcontext); $$->nname = nn; // keep track of the instances for reporting unused nn->defn = typesw->right; } } compound_stmt: '{' { markdcl(); } stmt_list '}' { if($3 == nil) $$ = nod(OEMPTY, N, N); else $$ = liststmt($3); popdcl(); } caseblock: case { // If the last token read by the lexer was consumed // as part of the case, clear it (parser has cleared yychar). // If the last token read by the lexer was the lookahead // leave it alone (parser has it cached in yychar). // This is so that the stmt_list action doesn't look at // the case tokens if the stmt_list is empty. yylast = yychar; $1->xoffset = block; } stmt_list { int last; // This is the only place in the language where a statement // list is not allowed to drop the final semicolon, because // it's the only place where a statement list is not followed // by a closing brace. Handle the error for pedantry. // Find the final token of the statement list. // yylast is lookahead; yyprev is last of stmt_list last = yyprev; if(last > 0 && last != ';' && yychar != '}') yyerror("missing statement after label"); $$ = $1; $$->nbody = $3; popdcl(); } caseblock_list: { $$ = nil; } | caseblock_list caseblock { $$ = list($1, $2); } loop_body: LBODY { markdcl(); } stmt_list '}' { $$ = $3; popdcl(); } range_stmt: expr_list '=' LRANGE expr { $$ = nod(ORANGE, N, $4); $$->list = $1; $$->etype = 0; // := flag } | expr_list LCOLAS LRANGE expr { $$ = nod(ORANGE, N, $4); $$->list = $1; $$->colas = 1; colasdefn($1, $$); } for_header: osimple_stmt ';' osimple_stmt ';' osimple_stmt { // init ; test ; incr if($5 != N && $5->colas != 0) yyerror("cannot declare in the for-increment"); $$ = nod(OFOR, N, N); if($1 != N) $$->ninit = list1($1); $$->ntest = $3; $$->nincr = $5; } | osimple_stmt { // normal test $$ = nod(OFOR, N, N); $$->ntest = $1; } | range_stmt for_body: for_header loop_body { $$ = $1; $$->nbody = concat($$->nbody, $2); } for_stmt: LFOR { markdcl(); } for_body { $$ = $3; popdcl(); } if_header: osimple_stmt { // test $$ = nod(OIF, N, N); $$->ntest = $1; } | osimple_stmt ';' osimple_stmt { // init ; test $$ = nod(OIF, N, N); if($1 != N) $$->ninit = list1($1); $$->ntest = $3; } /* IF cond body (ELSE IF cond body)* (ELSE block)? */ if_stmt: LIF { markdcl(); } if_header { if($3->ntest == N) yyerror("missing condition in if statement"); } loop_body { $3->nbody = $5; } elseif_list else { Node *n; NodeList *nn; $$ = $3; n = $3; popdcl(); for(nn = concat($7, $8); nn; nn = nn->next) { if(nn->n->op == OIF) popdcl(); n->nelse = list1(nn->n); n = nn->n; } } elseif: LELSE LIF { markdcl(); } if_header loop_body { if($4->ntest == N) yyerror("missing condition in if statement"); $4->nbody = $5; $$ = list1($4); } elseif_list: { $$ = nil; } | elseif_list elseif { $$ = concat($1, $2); } else: { $$ = nil; } | LELSE compound_stmt { NodeList *node; node = mal(sizeof *node); node->n = $2; node->end = node; $$ = node; } switch_stmt: LSWITCH { markdcl(); } if_header { Node *n; n = $3->ntest; if(n != N && n->op != OTYPESW) n = N; typesw = nod(OXXX, typesw, n); } LBODY caseblock_list '}' { $$ = $3; $$->op = OSWITCH; $$->list = $6; typesw = typesw->left; popdcl(); } select_stmt: LSELECT { typesw = nod(OXXX, typesw, N); } LBODY caseblock_list '}' { $$ = nod(OSELECT, N, N); $$->lineno = typesw->lineno; $$->list = $4; typesw = typesw->left; } /* * expressions */ expr: uexpr | expr LOROR expr { $$ = nod(OOROR, $1, $3); } | expr LANDAND expr { $$ = nod(OANDAND, $1, $3); } | expr LEQ expr { $$ = nod(OEQ, $1, $3); } | expr LNE expr { $$ = nod(ONE, $1, $3); } | expr LLT expr { $$ = nod(OLT, $1, $3); } | expr LLE expr { $$ = nod(OLE, $1, $3); } | expr LGE expr { $$ = nod(OGE, $1, $3); } | expr LGT expr { $$ = nod(OGT, $1, $3); } | expr '+' expr { $$ = nod(OADD, $1, $3); } | expr '-' expr { $$ = nod(OSUB, $1, $3); } | expr '|' expr { $$ = nod(OOR, $1, $3); } | expr '^' expr { $$ = nod(OXOR, $1, $3); } | expr '*' expr { $$ = nod(OMUL, $1, $3); } | expr '/' expr { $$ = nod(ODIV, $1, $3); } | expr '%' expr { $$ = nod(OMOD, $1, $3); } | expr '&' expr { $$ = nod(OAND, $1, $3); } | expr LANDNOT expr { $$ = nod(OANDNOT, $1, $3); } | expr LLSH expr { $$ = nod(OLSH, $1, $3); } | expr LRSH expr { $$ = nod(ORSH, $1, $3); } /* not an expression anymore, but left in so we can give a good error */ | expr LCOMM expr { $$ = nod(OSEND, $1, $3); } uexpr: pexpr | '*' uexpr { $$ = nod(OIND, $2, N); } | '&' uexpr { if($2->op == OCOMPLIT) { // Special case for &T{...}: turn into (*T){...}. $$ = $2; $$->right = nod(OIND, $$->right, N); $$->right->implicit = 1; } else { $$ = nod(OADDR, $2, N); } } | '+' uexpr { $$ = nod(OPLUS, $2, N); } | '-' uexpr { $$ = nod(OMINUS, $2, N); } | '!' uexpr { $$ = nod(ONOT, $2, N); } | '~' uexpr { yyerror("the bitwise complement operator is ^"); $$ = nod(OCOM, $2, N); } | '^' uexpr { $$ = nod(OCOM, $2, N); } | LCOMM uexpr { $$ = nod(ORECV, $2, N); } /* * call-like statements that * can be preceded by 'defer' and 'go' */ pseudocall: pexpr '(' ')' { $$ = nod(OCALL, $1, N); } | pexpr '(' expr_or_type_list ocomma ')' { $$ = nod(OCALL, $1, N); $$->list = $3; } | pexpr '(' expr_or_type_list LDDD ocomma ')' { $$ = nod(OCALL, $1, N); $$->list = $3; $$->isddd = 1; } pexpr_no_paren: LLITERAL { $$ = nodlit($1); } | name | pexpr '.' sym { if($1->op == OPACK) { Sym *s; s = restrictlookup($3->name, $1->pkg); $1->used = 1; $$ = oldname(s); break; } $$ = nod(OXDOT, $1, newname($3)); } | pexpr '.' '(' expr_or_type ')' { $$ = nod(ODOTTYPE, $1, $4); } | pexpr '.' '(' LTYPE ')' { $$ = nod(OTYPESW, N, $1); } | pexpr '[' expr ']' { $$ = nod(OINDEX, $1, $3); } | pexpr '[' oexpr ':' oexpr ']' { $$ = nod(OSLICE, $1, nod(OKEY, $3, $5)); } | pexpr '[' oexpr ':' oexpr ':' oexpr ']' { if($5 == N) yyerror("middle index required in 3-index slice"); if($7 == N) yyerror("final index required in 3-index slice"); $$ = nod(OSLICE3, $1, nod(OKEY, $3, nod(OKEY, $5, $7))); } | pseudocall | convtype '(' expr ocomma ')' { // conversion $$ = nod(OCALL, $1, N); $$->list = list1($3); } | comptype lbrace start_complit braced_keyval_list '}' { $$ = $3; $$->right = $1; $$->list = $4; fixlbrace($2); } | pexpr_no_paren '{' start_complit braced_keyval_list '}' { $$ = $3; $$->right = $1; $$->list = $4; } | '(' expr_or_type ')' '{' start_complit braced_keyval_list '}' { yyerror("cannot parenthesize type in composite literal"); $$ = $5; $$->right = $2; $$->list = $6; } | fnliteral start_complit: { // composite expression. // make node early so we get the right line number. $$ = nod(OCOMPLIT, N, N); } keyval: expr ':' complitexpr { $$ = nod(OKEY, $1, $3); } bare_complitexpr: expr { // These nodes do not carry line numbers. // Since a composite literal commonly spans several lines, // the line number on errors may be misleading. // Introduce a wrapper node to give the correct line. $$ = $1; switch($$->op) { case ONAME: case ONONAME: case OTYPE: case OPACK: case OLITERAL: $$ = nod(OPAREN, $$, N); $$->implicit = 1; } } | '{' start_complit braced_keyval_list '}' { $$ = $2; $$->list = $3; } complitexpr: expr | '{' start_complit braced_keyval_list '}' { $$ = $2; $$->list = $3; } pexpr: pexpr_no_paren | '(' expr_or_type ')' { $$ = $2; // Need to know on lhs of := whether there are ( ). // Don't bother with the OPAREN in other cases: // it's just a waste of memory and time. switch($$->op) { case ONAME: case ONONAME: case OPACK: case OTYPE: case OLITERAL: case OTYPESW: $$ = nod(OPAREN, $$, N); } } expr_or_type: expr | non_expr_type %prec PreferToRightParen name_or_type: ntype lbrace: LBODY { $$ = LBODY; } | '{' { $$ = '{'; } /* * names and types * newname is used before declared * oldname is used after declared */ new_name: sym { if($1 == S) $$ = N; else $$ = newname($1); } dcl_name: sym { $$ = dclname($1); } onew_name: { $$ = N; } | new_name sym: LNAME { $$ = $1; // during imports, unqualified non-exported identifiers are from builtinpkg if(importpkg != nil && !exportname($1->name)) $$ = pkglookup($1->name, builtinpkg); } | hidden_importsym | '?' { $$ = S; } hidden_importsym: '@' LLITERAL '.' LNAME { Pkg *p; if($2.u.sval->len == 0) p = importpkg; else { if(isbadimport($2.u.sval)) errorexit(); p = mkpkg($2.u.sval); } $$ = pkglookup($4->name, p); } | '@' LLITERAL '.' '?' { Pkg *p; if($2.u.sval->len == 0) p = importpkg; else { if(isbadimport($2.u.sval)) errorexit(); p = mkpkg($2.u.sval); } $$ = pkglookup("?", p); } name: sym %prec NotParen { $$ = oldname($1); if($$->pack != N) $$->pack->used = 1; } labelname: new_name /* * to avoid parsing conflicts, type is split into * channel types * function types * parenthesized types * any other type * the type system makes additional restrictions, * but those are not implemented in the grammar. */ dotdotdot: LDDD { yyerror("final argument in variadic function missing type"); $$ = nod(ODDD, typenod(typ(TINTER)), N); } | LDDD ntype { $$ = nod(ODDD, $2, N); } ntype: recvchantype | fntype | othertype | ptrtype | dotname | '(' ntype ')' { $$ = nod(OTPAREN, $2, N); } non_expr_type: recvchantype | fntype | othertype | '*' non_expr_type { $$ = nod(OIND, $2, N); } non_recvchantype: fntype | othertype | ptrtype | dotname | '(' ntype ')' { $$ = nod(OTPAREN, $2, N); } convtype: fntype | othertype comptype: othertype fnret_type: recvchantype | fntype | othertype | ptrtype | dotname dotname: name | name '.' sym { if($1->op == OPACK) { Sym *s; s = restrictlookup($3->name, $1->pkg); $1->used = 1; $$ = oldname(s); break; } $$ = nod(OXDOT, $1, newname($3)); } othertype: '[' oexpr ']' ntype { $$ = nod(OTARRAY, $2, $4); } | '[' LDDD ']' ntype { // array literal of nelem $$ = nod(OTARRAY, nod(ODDD, N, N), $4); } | LCHAN non_recvchantype { $$ = nod(OTCHAN, $2, N); $$->etype = Cboth; } | LCHAN LCOMM ntype { $$ = nod(OTCHAN, $3, N); $$->etype = Csend; } | LMAP '[' ntype ']' ntype { $$ = nod(OTMAP, $3, $5); } | structtype | interfacetype ptrtype: '*' ntype { $$ = nod(OIND, $2, N); } recvchantype: LCOMM LCHAN ntype { $$ = nod(OTCHAN, $3, N); $$->etype = Crecv; } structtype: LSTRUCT lbrace structdcl_list osemi '}' { $$ = nod(OTSTRUCT, N, N); $$->list = $3; fixlbrace($2); } | LSTRUCT lbrace '}' { $$ = nod(OTSTRUCT, N, N); fixlbrace($2); } interfacetype: LINTERFACE lbrace interfacedcl_list osemi '}' { $$ = nod(OTINTER, N, N); $$->list = $3; fixlbrace($2); } | LINTERFACE lbrace '}' { $$ = nod(OTINTER, N, N); fixlbrace($2); } /* * function stuff * all in one place to show how crappy it all is */ xfndcl: LFUNC fndcl fnbody { $$ = $2; if($$ == N) break; if(noescape && $3 != nil) yyerror("can only use //go:noescape with external func implementations"); $$->nbody = $3; $$->endlineno = lineno; $$->noescape = noescape; funcbody($$); } fndcl: sym '(' oarg_type_list_ocomma ')' fnres { Node *t; $$ = N; $3 = checkarglist($3, 1); if(strcmp($1->name, "init") == 0) { $1 = renameinit(); if($3 != nil || $5 != nil) yyerror("func init must have no arguments and no return values"); } if(strcmp(localpkg->name, "main") == 0 && strcmp($1->name, "main") == 0) { if($3 != nil || $5 != nil) yyerror("func main must have no arguments and no return values"); } t = nod(OTFUNC, N, N); t->list = $3; t->rlist = $5; $$ = nod(ODCLFUNC, N, N); $$->nname = newname($1); $$->nname->defn = $$; $$->nname->ntype = t; // TODO: check if nname already has an ntype declare($$->nname, PFUNC); funchdr($$); } | '(' oarg_type_list_ocomma ')' sym '(' oarg_type_list_ocomma ')' fnres { Node *rcvr, *t; $$ = N; $2 = checkarglist($2, 0); $6 = checkarglist($6, 1); if($2 == nil) { yyerror("method has no receiver"); break; } if($2->next != nil) { yyerror("method has multiple receivers"); break; } rcvr = $2->n; if(rcvr->op != ODCLFIELD) { yyerror("bad receiver in method"); break; } if(rcvr->right->op == OTPAREN || (rcvr->right->op == OIND && rcvr->right->left->op == OTPAREN)) yyerror("cannot parenthesize receiver type"); t = nod(OTFUNC, rcvr, N); t->list = $6; t->rlist = $8; $$ = nod(ODCLFUNC, N, N); $$->shortname = newname($4); $$->nname = methodname1($$->shortname, rcvr->right); $$->nname->defn = $$; $$->nname->ntype = t; $$->nname->nointerface = nointerface; declare($$->nname, PFUNC); funchdr($$); } hidden_fndcl: hidden_pkg_importsym '(' ohidden_funarg_list ')' ohidden_funres { Sym *s; Type *t; $$ = N; s = $1; t = functype(N, $3, $5); importsym(s, ONAME); if(s->def != N && s->def->op == ONAME) { if(eqtype(t, s->def->type)) { dclcontext = PDISCARD; // since we skip funchdr below break; } yyerror("inconsistent definition for func %S during import\n\t%T\n\t%T", s, s->def->type, t); } $$ = newname(s); $$->type = t; declare($$, PFUNC); funchdr($$); } | '(' hidden_funarg_list ')' sym '(' ohidden_funarg_list ')' ohidden_funres { $$ = methodname1(newname($4), $2->n->right); $$->type = functype($2->n, $6, $8); checkwidth($$->type); addmethod($4, $$->type, 0, nointerface); nointerface = 0; funchdr($$); // inl.c's inlnode in on a dotmeth node expects to find the inlineable body as // (dotmeth's type)->nname->inl, and dotmeth's type has been pulled // out by typecheck's lookdot as this $$->ttype. So by providing // this back link here we avoid special casing there. $$->type->nname = $$; } fntype: LFUNC '(' oarg_type_list_ocomma ')' fnres { $3 = checkarglist($3, 1); $$ = nod(OTFUNC, N, N); $$->list = $3; $$->rlist = $5; } fnbody: { $$ = nil; } | '{' stmt_list '}' { $$ = $2; if($$ == nil) $$ = list1(nod(OEMPTY, N, N)); } fnres: %prec NotParen { $$ = nil; } | fnret_type { $$ = list1(nod(ODCLFIELD, N, $1)); } | '(' oarg_type_list_ocomma ')' { $2 = checkarglist($2, 0); $$ = $2; } fnlitdcl: fntype { closurehdr($1); } fnliteral: fnlitdcl lbrace stmt_list '}' { $$ = closurebody($3); fixlbrace($2); } | fnlitdcl error { $$ = closurebody(nil); } /* * lists of things * note that they are left recursive * to conserve yacc stack. they need to * be reversed to interpret correctly */ xdcl_list: { $$ = nil; } | xdcl_list xdcl ';' { $$ = concat($1, $2); if(nsyntaxerrors == 0) testdclstack(); nointerface = 0; noescape = 0; } vardcl_list: vardcl | vardcl_list ';' vardcl { $$ = concat($1, $3); } constdcl_list: constdcl1 | constdcl_list ';' constdcl1 { $$ = concat($1, $3); } typedcl_list: typedcl { $$ = list1($1); } | typedcl_list ';' typedcl { $$ = list($1, $3); } structdcl_list: structdcl | structdcl_list ';' structdcl { $$ = concat($1, $3); } interfacedcl_list: interfacedcl { $$ = list1($1); } | interfacedcl_list ';' interfacedcl { $$ = list($1, $3); } structdcl: new_name_list ntype oliteral { NodeList *l; Node *n; l = $1; if(l == nil) { // ? symbol, during import (list1(N) == nil) n = $2; if(n->op == OIND) n = n->left; n = embedded(n->sym, importpkg); n->right = $2; n->val = $3; $$ = list1(n); break; } for(l=$1; l; l=l->next) { l->n = nod(ODCLFIELD, l->n, $2); l->n->val = $3; } } | embed oliteral { $1->val = $2; $$ = list1($1); } | '(' embed ')' oliteral { $2->val = $4; $$ = list1($2); yyerror("cannot parenthesize embedded type"); } | '*' embed oliteral { $2->right = nod(OIND, $2->right, N); $2->val = $3; $$ = list1($2); } | '(' '*' embed ')' oliteral { $3->right = nod(OIND, $3->right, N); $3->val = $5; $$ = list1($3); yyerror("cannot parenthesize embedded type"); } | '*' '(' embed ')' oliteral { $3->right = nod(OIND, $3->right, N); $3->val = $5; $$ = list1($3); yyerror("cannot parenthesize embedded type"); } packname: LNAME { Node *n; $$ = $1; n = oldname($1); if(n->pack != N) n->pack->used = 1; } | LNAME '.' sym { Pkg *pkg; if($1->def == N || $1->def->op != OPACK) { yyerror("%S is not a package", $1); pkg = localpkg; } else { $1->def->used = 1; pkg = $1->def->pkg; } $$ = restrictlookup($3->name, pkg); } embed: packname { $$ = embedded($1, localpkg); } interfacedcl: new_name indcl { $$ = nod(ODCLFIELD, $1, $2); ifacedcl($$); } | packname { $$ = nod(ODCLFIELD, N, oldname($1)); } | '(' packname ')' { $$ = nod(ODCLFIELD, N, oldname($2)); yyerror("cannot parenthesize embedded type"); } indcl: '(' oarg_type_list_ocomma ')' fnres { // without func keyword $2 = checkarglist($2, 1); $$ = nod(OTFUNC, fakethis(), N); $$->list = $2; $$->rlist = $4; } /* * function arguments. */ arg_type: name_or_type | sym name_or_type { $$ = nod(ONONAME, N, N); $$->sym = $1; $$ = nod(OKEY, $$, $2); } | sym dotdotdot { $$ = nod(ONONAME, N, N); $$->sym = $1; $$ = nod(OKEY, $$, $2); } | dotdotdot arg_type_list: arg_type { $$ = list1($1); } | arg_type_list ',' arg_type { $$ = list($1, $3); } oarg_type_list_ocomma: { $$ = nil; } | arg_type_list ocomma { $$ = $1; } /* * statement */ stmt: { $$ = N; } | compound_stmt | common_dcl { $$ = liststmt($1); } | non_dcl_stmt | error { $$ = N; } non_dcl_stmt: simple_stmt | for_stmt | switch_stmt | select_stmt | if_stmt | labelname ':' { $1 = nod(OLABEL, $1, N); $1->sym = dclstack; // context, for goto restrictions } stmt { NodeList *l; $1->defn = $4; l = list1($1); if($4) l = list(l, $4); $$ = liststmt(l); } | LFALL { // will be converted to OFALL $$ = nod(OXFALL, N, N); $$->xoffset = block; } | LBREAK onew_name { $$ = nod(OBREAK, $2, N); } | LCONTINUE onew_name { $$ = nod(OCONTINUE, $2, N); } | LGO pseudocall { $$ = nod(OPROC, $2, N); } | LDEFER pseudocall { $$ = nod(ODEFER, $2, N); } | LGOTO new_name { $$ = nod(OGOTO, $2, N); $$->sym = dclstack; // context, for goto restrictions } | LRETURN oexpr_list { $$ = nod(ORETURN, N, N); $$->list = $2; if($$->list == nil && curfn != N) { NodeList *l; for(l=curfn->dcl; l; l=l->next) { if(l->n->class == PPARAM) continue; if(l->n->class != PPARAMOUT) break; if(l->n->sym->def != l->n) yyerror("%s is shadowed during return", l->n->sym->name); } } } stmt_list: stmt { $$ = nil; if($1 != N) $$ = list1($1); } | stmt_list ';' stmt { $$ = $1; if($3 != N) $$ = list($$, $3); } new_name_list: new_name { $$ = list1($1); } | new_name_list ',' new_name { $$ = list($1, $3); } dcl_name_list: dcl_name { $$ = list1($1); } | dcl_name_list ',' dcl_name { $$ = list($1, $3); } expr_list: expr { $$ = list1($1); } | expr_list ',' expr { $$ = list($1, $3); } expr_or_type_list: expr_or_type { $$ = list1($1); } | expr_or_type_list ',' expr_or_type { $$ = list($1, $3); } /* * list of combo of keyval and val */ keyval_list: keyval { $$ = list1($1); } | bare_complitexpr { $$ = list1($1); } | keyval_list ',' keyval { $$ = list($1, $3); } | keyval_list ',' bare_complitexpr { $$ = list($1, $3); } braced_keyval_list: { $$ = nil; } | keyval_list ocomma { $$ = $1; } /* * optional things */ osemi: | ';' ocomma: | ',' oexpr: { $$ = N; } | expr oexpr_list: { $$ = nil; } | expr_list osimple_stmt: { $$ = N; } | simple_stmt ohidden_funarg_list: { $$ = nil; } | hidden_funarg_list ohidden_structdcl_list: { $$ = nil; } | hidden_structdcl_list ohidden_interfacedcl_list: { $$ = nil; } | hidden_interfacedcl_list oliteral: { $$.ctype = CTxxx; } | LLITERAL /* * import syntax from package header */ hidden_import: LIMPORT LNAME LLITERAL ';' { importimport($2, $3.u.sval); } | LVAR hidden_pkg_importsym hidden_type ';' { importvar($2, $3); } | LCONST hidden_pkg_importsym '=' hidden_constant ';' { importconst($2, types[TIDEAL], $4); } | LCONST hidden_pkg_importsym hidden_type '=' hidden_constant ';' { importconst($2, $3, $5); } | LTYPE hidden_pkgtype hidden_type ';' { importtype($2, $3); } | LFUNC hidden_fndcl fnbody ';' { if($2 == N) { dclcontext = PEXTERN; // since we skip the funcbody below break; } $2->inl = $3; funcbody($2); importlist = list(importlist, $2); if(debug['E']) { print("import [%Z] func %lN \n", importpkg->path, $2); if(debug['m'] > 2 && $2->inl) print("inl body:%+H\n", $2->inl); } } hidden_pkg_importsym: hidden_importsym { $$ = $1; structpkg = $$->pkg; } hidden_pkgtype: hidden_pkg_importsym { $$ = pkgtype($1); importsym($1, OTYPE); } /* * importing types */ hidden_type: hidden_type_misc | hidden_type_recv_chan | hidden_type_func hidden_type_non_recv_chan: hidden_type_misc | hidden_type_func hidden_type_misc: hidden_importsym { $$ = pkgtype($1); } | LNAME { // predefined name like uint8 $1 = pkglookup($1->name, builtinpkg); if($1->def == N || $1->def->op != OTYPE) { yyerror("%s is not a type", $1->name); $$ = T; } else $$ = $1->def->type; } | '[' ']' hidden_type { $$ = aindex(N, $3); } | '[' LLITERAL ']' hidden_type { $$ = aindex(nodlit($2), $4); } | LMAP '[' hidden_type ']' hidden_type { $$ = maptype($3, $5); } | LSTRUCT '{' ohidden_structdcl_list '}' { $$ = tostruct($3); } | LINTERFACE '{' ohidden_interfacedcl_list '}' { $$ = tointerface($3); } | '*' hidden_type { $$ = ptrto($2); } | LCHAN hidden_type_non_recv_chan { $$ = typ(TCHAN); $$->type = $2; $$->chan = Cboth; } | LCHAN '(' hidden_type_recv_chan ')' { $$ = typ(TCHAN); $$->type = $3; $$->chan = Cboth; } | LCHAN LCOMM hidden_type { $$ = typ(TCHAN); $$->type = $3; $$->chan = Csend; } hidden_type_recv_chan: LCOMM LCHAN hidden_type { $$ = typ(TCHAN); $$->type = $3; $$->chan = Crecv; } hidden_type_func: LFUNC '(' ohidden_funarg_list ')' ohidden_funres { $$ = functype(nil, $3, $5); } hidden_funarg: sym hidden_type oliteral { $$ = nod(ODCLFIELD, N, typenod($2)); if($1) $$->left = newname($1); $$->val = $3; } | sym LDDD hidden_type oliteral { Type *t; t = typ(TARRAY); t->bound = -1; t->type = $3; $$ = nod(ODCLFIELD, N, typenod(t)); if($1) $$->left = newname($1); $$->isddd = 1; $$->val = $4; } hidden_structdcl: sym hidden_type oliteral { Sym *s; Pkg *p; if($1 != S && strcmp($1->name, "?") != 0) { $$ = nod(ODCLFIELD, newname($1), typenod($2)); $$->val = $3; } else { s = $2->sym; if(s == S && isptr[$2->etype]) s = $2->type->sym; p = importpkg; if($1 != S) p = $1->pkg; $$ = embedded(s, p); $$->right = typenod($2); $$->val = $3; } } hidden_interfacedcl: sym '(' ohidden_funarg_list ')' ohidden_funres { $$ = nod(ODCLFIELD, newname($1), typenod(functype(fakethis(), $3, $5))); } | hidden_type { $$ = nod(ODCLFIELD, N, typenod($1)); } ohidden_funres: { $$ = nil; } | hidden_funres hidden_funres: '(' ohidden_funarg_list ')' { $$ = $2; } | hidden_type { $$ = list1(nod(ODCLFIELD, N, typenod($1))); } /* * importing constants */ hidden_literal: LLITERAL { $$ = nodlit($1); } | '-' LLITERAL { $$ = nodlit($2); switch($$->val.ctype){ case CTINT: case CTRUNE: mpnegfix($$->val.u.xval); break; case CTFLT: mpnegflt($$->val.u.fval); break; case CTCPLX: mpnegflt(&$$->val.u.cval->real); mpnegflt(&$$->val.u.cval->imag); break; default: yyerror("bad negated constant"); } } | sym { $$ = oldname(pkglookup($1->name, builtinpkg)); if($$->op != OLITERAL) yyerror("bad constant %S", $$->sym); } hidden_constant: hidden_literal | '(' hidden_literal '+' hidden_literal ')' { if($2->val.ctype == CTRUNE && $4->val.ctype == CTINT) { $$ = $2; mpaddfixfix($2->val.u.xval, $4->val.u.xval, 0); break; } $4->val.u.cval->real = $4->val.u.cval->imag; mpmovecflt(&$4->val.u.cval->imag, 0.0); $$ = nodcplxlit($2->val, $4->val); } hidden_import_list: | hidden_import_list hidden_import hidden_funarg_list: hidden_funarg { $$ = list1($1); } | hidden_funarg_list ',' hidden_funarg { $$ = list($1, $3); } hidden_structdcl_list: hidden_structdcl { $$ = list1($1); } | hidden_structdcl_list ';' hidden_structdcl { $$ = list($1, $3); } hidden_interfacedcl_list: hidden_interfacedcl { $$ = list1($1); } | hidden_interfacedcl_list ';' hidden_interfacedcl { $$ = list($1, $3); } %% static void fixlbrace(int lbr) { // If the opening brace was an LBODY, // set up for another one now that we're done. // See comment in lex.c about loophack. if(lbr == LBODY) loophack = 1; } go/src/cmd/gc/init.c0100644000000000000000000000715212412656734014533 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" /* * a function named init is a special case. * it is called by the initialization before * main is run. to make it unique within a * package and also uncallable, the name, * normally "pkg.init", is altered to "pkg.init·1". */ Sym* renameinit(void) { static int initgen; snprint(namebuf, sizeof(namebuf), "init·%d", ++initgen); return lookup(namebuf); } /* * hand-craft the following initialization code * var initdone· uint8 (1) * func init() (2) * if initdone· != 0 { (3) * if initdone· == 2 (4) * return * throw(); (5) * } * initdone· = 1; (6) * // over all matching imported symbols * .init() (7) * { } (8) * init·() // if any (9) * initdone· = 2; (10) * return (11) * } */ static int anyinit(NodeList *n) { uint32 h; Sym *s; NodeList *l; // are there any interesting init statements for(l=n; l; l=l->next) { switch(l->n->op) { case ODCLFUNC: case ODCLCONST: case ODCLTYPE: case OEMPTY: break; case OAS: if(isblank(l->n->left) && candiscard(l->n->right)) break; // fall through default: return 1; } } // is this main if(strcmp(localpkg->name, "main") == 0) return 1; // is there an explicit init function snprint(namebuf, sizeof(namebuf), "init·1"); s = lookup(namebuf); if(s->def != N) return 1; // are there any imported init functions for(h=0; hlink) { if(s->name[0] != 'i' || strcmp(s->name, "init") != 0) continue; if(s->def == N) continue; return 1; } // then none return 0; } void fninit(NodeList *n) { int i; Node *gatevar; Node *a, *b, *fn; NodeList *r; uint32 h; Sym *s, *initsym; if(debug['A']) { // sys.go or unsafe.go during compiler build return; } n = initfix(n); if(!anyinit(n)) return; r = nil; // (1) snprint(namebuf, sizeof(namebuf), "initdone·"); gatevar = newname(lookup(namebuf)); addvar(gatevar, types[TUINT8], PEXTERN); // (2) maxarg = 0; snprint(namebuf, sizeof(namebuf), "init"); fn = nod(ODCLFUNC, N, N); initsym = lookup(namebuf); fn->nname = newname(initsym); fn->nname->defn = fn; fn->nname->ntype = nod(OTFUNC, N, N); declare(fn->nname, PFUNC); funchdr(fn); // (3) a = nod(OIF, N, N); a->ntest = nod(ONE, gatevar, nodintconst(0)); r = list(r, a); // (4) b = nod(OIF, N, N); b->ntest = nod(OEQ, gatevar, nodintconst(2)); b->nbody = list1(nod(ORETURN, N, N)); a->nbody = list1(b); // (5) b = syslook("throwinit", 0); b = nod(OCALL, b, N); a->nbody = list(a->nbody, b); // (6) a = nod(OAS, gatevar, nodintconst(1)); r = list(r, a); // (7) for(h=0; hlink) { if(s->name[0] != 'i' || strcmp(s->name, "init") != 0) continue; if(s->def == N) continue; if(s == initsym) continue; // could check that it is fn of no args/returns a = nod(OCALL, s->def, N); r = list(r, a); } // (8) r = concat(r, n); // (9) // could check that it is fn of no args/returns for(i=1;; i++) { snprint(namebuf, sizeof(namebuf), "init·%d", i); s = lookup(namebuf); if(s->def == N) break; a = nod(OCALL, s->def, N); r = list(r, a); } // (10) a = nod(OAS, gatevar, nodintconst(2)); r = list(r, a); // (11) a = nod(ORETURN, N, N); r = list(r, a); exportsym(fn->nname); fn->nbody = r; funcbody(fn); curfn = fn; typecheck(&fn, Etop); typechecklist(r, Etop); curfn = nil; funccompile(fn, 0); } go/src/cmd/gc/inl.c0100644000000000000000000005665712412656734014370 0ustar00rootroot00000000000000// Copyright 2011 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. // // The inlining facility makes 2 passes: first caninl determines which // functions are suitable for inlining, and for those that are it // saves a copy of the body. Then inlcalls walks each function body to // expand calls to inlinable functions. // // The debug['l'] flag controls the agressiveness. Note that main() swaps level 0 and 1, // making 1 the default and -l disable. -ll and more is useful to flush out bugs. // These additional levels (beyond -l) may be buggy and are not supported. // 0: disabled // 1: 40-nodes leaf functions, oneliners, lazy typechecking (default) // 2: early typechecking of all imported bodies // 3: allow variadic functions // 4: allow non-leaf functions , (breaks runtime.Caller) // 5: transitive inlining // // At some point this may get another default and become switch-offable with -N. // // The debug['m'] flag enables diagnostic output. a single -m is useful for verifying // which calls get inlined or not, more is for debugging, and may go away at any point. // // TODO: // - inline functions with ... args // - handle T.meth(f()) with func f() (t T, arg, arg, ) #include #include #include "go.h" // Used by caninl. static Node* inlcopy(Node *n); static NodeList* inlcopylist(NodeList *ll); static int ishairy(Node *n, int *budget); static int ishairylist(NodeList *ll, int *budget); // Used by inlcalls static void inlnodelist(NodeList *l); static void inlnode(Node **np); static void mkinlcall(Node **np, Node *fn, int isddd); static Node* inlvar(Node *n); static Node* retvar(Type *n, int i); static Node* argvar(Type *n, int i); static Node* newlabel(void); static Node* inlsubst(Node *n); static NodeList* inlsubstlist(NodeList *l); static void setlno(Node*, int); // Used during inlsubst[list] static Node *inlfn; // function currently being inlined static Node *inlretlabel; // target of the goto substituted in place of a return static NodeList *inlretvars; // temp out variables // Get the function's package. For ordinary functions it's on the ->sym, but for imported methods // the ->sym can be re-used in the local package, so peel it off the receiver's type. static Pkg* fnpkg(Node *fn) { Type *rcvr; if(fn->type->thistuple) { // method rcvr = getthisx(fn->type)->type->type; if(isptr[rcvr->etype]) rcvr = rcvr->type; if(!rcvr->sym) fatal("receiver with no sym: [%S] %lN (%T)", fn->sym, fn, rcvr); return rcvr->sym->pkg; } // non-method return fn->sym->pkg; } // Lazy typechecking of imported bodies. For local functions, caninl will set ->typecheck // because they're a copy of an already checked body. void typecheckinl(Node *fn) { Node *savefn; Pkg *pkg; int save_safemode, lno; lno = setlineno(fn); // typecheckinl is only for imported functions; // their bodies may refer to unsafe as long as the package // was marked safe during import (which was checked then). // the ->inl of a local function has been typechecked before caninl copied it. pkg = fnpkg(fn); if (pkg == localpkg || pkg == nil) return; // typecheckinl on local function if (debug['m']>2) print("typecheck import [%S] %lN { %#H }\n", fn->sym, fn, fn->inl); save_safemode = safemode; safemode = 0; savefn = curfn; curfn = fn; typechecklist(fn->inl, Etop); curfn = savefn; safemode = save_safemode; lineno = lno; } // Caninl determines whether fn is inlineable. // If so, caninl saves fn->nbody in fn->inl and substitutes it with a copy. // fn and ->nbody will already have been typechecked. void caninl(Node *fn) { Node *savefn; Type *t; int budget; if(fn->op != ODCLFUNC) fatal("caninl %N", fn); if(!fn->nname) fatal("caninl no nname %+N", fn); // If fn has no body (is defined outside of Go), cannot inline it. if(fn->nbody == nil) return; if(fn->typecheck == 0) fatal("caninl on non-typechecked function %N", fn); // can't handle ... args yet if(debug['l'] < 3) for(t=fn->type->type->down->down->type; t; t=t->down) if(t->isddd) return; budget = 40; // allowed hairyness if(ishairylist(fn->nbody, &budget)) return; savefn = curfn; curfn = fn; fn->nname->inl = fn->nbody; fn->nbody = inlcopylist(fn->nname->inl); fn->nname->inldcl = inlcopylist(fn->nname->defn->dcl); // hack, TODO, check for better way to link method nodes back to the thing with the ->inl // this is so export can find the body of a method fn->type->nname = fn->nname; if(debug['m'] > 1) print("%L: can inline %#N as: %#T { %#H }\n", fn->lineno, fn->nname, fn->type, fn->nname->inl); else if(debug['m']) print("%L: can inline %N\n", fn->lineno, fn->nname); curfn = savefn; } // Look for anything we want to punt on. static int ishairylist(NodeList *ll, int* budget) { for(;ll;ll=ll->next) if(ishairy(ll->n, budget)) return 1; return 0; } static int ishairy(Node *n, int *budget) { if(!n) return 0; // Things that are too hairy, irrespective of the budget switch(n->op) { case OCALL: case OCALLFUNC: case OCALLINTER: case OCALLMETH: case OPANIC: case ORECOVER: if(debug['l'] < 4) return 1; break; case OCLOSURE: case OCALLPART: case ORANGE: case OFOR: case OSELECT: case OSWITCH: case OPROC: case ODEFER: case ODCLTYPE: // can't print yet case ODCLCONST: // can't print yet case ORETJMP: return 1; break; } (*budget)--; return *budget < 0 || ishairy(n->left, budget) || ishairy(n->right, budget) || ishairylist(n->list, budget) || ishairylist(n->rlist, budget) || ishairylist(n->ninit, budget) || ishairy(n->ntest, budget) || ishairy(n->nincr, budget) || ishairylist(n->nbody, budget) || ishairylist(n->nelse, budget); } // Inlcopy and inlcopylist recursively copy the body of a function. // Any name-like node of non-local class is marked for re-export by adding it to // the exportlist. static NodeList* inlcopylist(NodeList *ll) { NodeList *l; l = nil; for(; ll; ll=ll->next) l = list(l, inlcopy(ll->n)); return l; } static Node* inlcopy(Node *n) { Node *m; if(n == N) return N; switch(n->op) { case ONAME: case OTYPE: case OLITERAL: return n; } m = nod(OXXX, N, N); *m = *n; m->inl = nil; m->left = inlcopy(n->left); m->right = inlcopy(n->right); m->list = inlcopylist(n->list); m->rlist = inlcopylist(n->rlist); m->ninit = inlcopylist(n->ninit); m->ntest = inlcopy(n->ntest); m->nincr = inlcopy(n->nincr); m->nbody = inlcopylist(n->nbody); m->nelse = inlcopylist(n->nelse); return m; } // Inlcalls/nodelist/node walks fn's statements and expressions and substitutes any // calls made to inlineable functions. This is the external entry point. void inlcalls(Node *fn) { Node *savefn; savefn = curfn; curfn = fn; inlnode(&fn); if(fn != curfn) fatal("inlnode replaced curfn"); curfn = savefn; } // Turn an OINLCALL into a statement. static void inlconv2stmt(Node *n) { n->op = OBLOCK; // n->ninit stays n->list = n->nbody; n->nbody = nil; n->rlist = nil; } // Turn an OINLCALL into a single valued expression. static void inlconv2expr(Node **np) { Node *n, *r; n = *np; r = n->rlist->n; addinit(&r, concat(n->ninit, n->nbody)); *np = r; } // Turn the rlist (with the return values) of the OINLCALL in // n into an expression list lumping the ninit and body // containing the inlined statements on the first list element so // order will be preserved Used in return, oas2func and call // statements. static NodeList* inlconv2list(Node *n) { NodeList *l; if(n->op != OINLCALL || n->rlist == nil) fatal("inlconv2list %+N\n", n); l = n->rlist; addinit(&l->n, concat(n->ninit, n->nbody)); return l; } static void inlnodelist(NodeList *l) { for(; l; l=l->next) inlnode(&l->n); } // inlnode recurses over the tree to find inlineable calls, which will // be turned into OINLCALLs by mkinlcall. When the recursion comes // back up will examine left, right, list, rlist, ninit, ntest, nincr, // nbody and nelse and use one of the 4 inlconv/glue functions above // to turn the OINLCALL into an expression, a statement, or patch it // in to this nodes list or rlist as appropriate. // NOTE it makes no sense to pass the glue functions down the // recursion to the level where the OINLCALL gets created because they // have to edit /this/ n, so you'd have to push that one down as well, // but then you may as well do it here. so this is cleaner and // shorter and less complicated. static void inlnode(Node **np) { Node *n; NodeList *l; int lno; if(*np == nil) return; n = *np; switch(n->op) { case ODEFER: case OPROC: // inhibit inlining of their argument switch(n->left->op) { case OCALLFUNC: case OCALLMETH: n->left->etype = n->op; } case OCLOSURE: // TODO do them here (or earlier), // so escape analysis can avoid more heapmoves. return; } lno = setlineno(n); inlnodelist(n->ninit); for(l=n->ninit; l; l=l->next) if(l->n->op == OINLCALL) inlconv2stmt(l->n); inlnode(&n->left); if(n->left && n->left->op == OINLCALL) inlconv2expr(&n->left); inlnode(&n->right); if(n->right && n->right->op == OINLCALL) inlconv2expr(&n->right); inlnodelist(n->list); switch(n->op) { case OBLOCK: for(l=n->list; l; l=l->next) if(l->n->op == OINLCALL) inlconv2stmt(l->n); break; case ORETURN: case OCALLFUNC: case OCALLMETH: case OCALLINTER: case OAPPEND: case OCOMPLEX: // if we just replaced arg in f(arg()) or return arg with an inlined call // and arg returns multiple values, glue as list if(count(n->list) == 1 && n->list->n->op == OINLCALL && count(n->list->n->rlist) > 1) { n->list = inlconv2list(n->list->n); break; } // fallthrough default: for(l=n->list; l; l=l->next) if(l->n->op == OINLCALL) inlconv2expr(&l->n); } inlnodelist(n->rlist); switch(n->op) { case OAS2FUNC: if(n->rlist->n->op == OINLCALL) { n->rlist = inlconv2list(n->rlist->n); n->op = OAS2; n->typecheck = 0; typecheck(np, Etop); break; } // fallthrough default: for(l=n->rlist; l; l=l->next) if(l->n->op == OINLCALL) inlconv2expr(&l->n); } inlnode(&n->ntest); if(n->ntest && n->ntest->op == OINLCALL) inlconv2expr(&n->ntest); inlnode(&n->nincr); if(n->nincr && n->nincr->op == OINLCALL) inlconv2stmt(n->nincr); inlnodelist(n->nbody); for(l=n->nbody; l; l=l->next) if(l->n->op == OINLCALL) inlconv2stmt(l->n); inlnodelist(n->nelse); for(l=n->nelse; l; l=l->next) if(l->n->op == OINLCALL) inlconv2stmt(l->n); // with all the branches out of the way, it is now time to // transmogrify this node itself unless inhibited by the // switch at the top of this function. switch(n->op) { case OCALLFUNC: case OCALLMETH: if (n->etype == OPROC || n->etype == ODEFER) return; } switch(n->op) { case OCALLFUNC: if(debug['m']>3) print("%L:call to func %+N\n", n->lineno, n->left); if(n->left->inl) // normal case mkinlcall(np, n->left, n->isddd); else if(n->left->op == ONAME && n->left->left && n->left->left->op == OTYPE && n->left->right && n->left->right->op == ONAME) // methods called as functions if(n->left->sym->def) mkinlcall(np, n->left->sym->def, n->isddd); break; case OCALLMETH: if(debug['m']>3) print("%L:call to meth %lN\n", n->lineno, n->left->right); // typecheck should have resolved ODOTMETH->type, whose nname points to the actual function. if(n->left->type == T) fatal("no function type for [%p] %+N\n", n->left, n->left); if(n->left->type->nname == N) fatal("no function definition for [%p] %+T\n", n->left->type, n->left->type); mkinlcall(np, n->left->type->nname, n->isddd); break; } lineno = lno; } static void mkinlcall1(Node **np, Node *fn, int isddd); static void mkinlcall(Node **np, Node *fn, int isddd) { int save_safemode; Pkg *pkg; save_safemode = safemode; // imported functions may refer to unsafe as long as the // package was marked safe during import (already checked). pkg = fnpkg(fn); if(pkg != localpkg && pkg != nil) safemode = 0; mkinlcall1(np, fn, isddd); safemode = save_safemode; } static Node* tinlvar(Type *t) { if(t->nname && !isblank(t->nname)) { if(!t->nname->inlvar) fatal("missing inlvar for %N\n", t->nname); return t->nname->inlvar; } typecheck(&nblank, Erv | Easgn); return nblank; } static int inlgen; // if *np is a call, and fn is a function with an inlinable body, substitute *np with an OINLCALL. // On return ninit has the parameter assignments, the nbody is the // inlined function body and list, rlist contain the input, output // parameters. static void mkinlcall1(Node **np, Node *fn, int isddd) { int i; int chkargcount; Node *n, *call, *saveinlfn, *as, *m; NodeList *dcl, *ll, *ninit, *body; Type *t; // For variadic fn. int variadic, varargcount, multiret; Node *vararg; NodeList *varargs; Type *varargtype, *vararrtype; if (fn->inl == nil) return; if (fn == curfn || fn->defn == curfn) return; if(debug['l']<2) typecheckinl(fn); n = *np; // Bingo, we have a function node, and it has an inlineable body if(debug['m']>1) print("%L: inlining call to %S %#T { %#H }\n", n->lineno, fn->sym, fn->type, fn->inl); else if(debug['m']) print("%L: inlining call to %N\n", n->lineno, fn); if(debug['m']>2) print("%L: Before inlining: %+N\n", n->lineno, n); saveinlfn = inlfn; inlfn = fn; ninit = n->ninit; //dumplist("ninit pre", ninit); if(fn->defn) // local function dcl = fn->inldcl; else // imported function dcl = fn->dcl; inlretvars = nil; i = 0; // Make temp names to use instead of the originals for(ll = dcl; ll; ll=ll->next) { if(ll->n->class == PPARAMOUT) // return values handled below. continue; if(ll->n->op == ONAME) { ll->n->inlvar = inlvar(ll->n); // Typecheck because inlvar is not necessarily a function parameter. typecheck(&ll->n->inlvar, Erv); if ((ll->n->class&~PHEAP) != PAUTO) ninit = list(ninit, nod(ODCL, ll->n->inlvar, N)); // otherwise gen won't emit the allocations for heapallocs } } // temporaries for return values. for(t = getoutargx(fn->type)->type; t; t = t->down) { if(t != T && t->nname != N && !isblank(t->nname)) { m = inlvar(t->nname); typecheck(&m, Erv); t->nname->inlvar = m; } else { // anonymous return values, synthesize names for use in assignment that replaces return m = retvar(t, i++); } ninit = list(ninit, nod(ODCL, m, N)); inlretvars = list(inlretvars, m); } // assign receiver. if(fn->type->thistuple && n->left->op == ODOTMETH) { // method call with a receiver. t = getthisx(fn->type)->type; if(t != T && t->nname != N && !isblank(t->nname) && !t->nname->inlvar) fatal("missing inlvar for %N\n", t->nname); if(!n->left->left) fatal("method call without receiver: %+N", n); if(t == T) fatal("method call unknown receiver type: %+N", n); as = nod(OAS, tinlvar(t), n->left->left); if(as != N) { typecheck(&as, Etop); ninit = list(ninit, as); } } // check if inlined function is variadic. variadic = 0; varargtype = T; varargcount = 0; for(t=fn->type->type->down->down->type; t; t=t->down) { if(t->isddd) { variadic = 1; varargtype = t->type; } } // but if argument is dotted too forget about variadicity. if(variadic && isddd) variadic = 0; // check if argument is actually a returned tuple from call. multiret = 0; if(n->list && !n->list->next) { switch(n->list->n->op) { case OCALL: case OCALLFUNC: case OCALLINTER: case OCALLMETH: if(n->list->n->left->type->outtuple > 1) multiret = n->list->n->left->type->outtuple-1; } } if(variadic) { varargcount = count(n->list) + multiret; if(n->left->op != ODOTMETH) varargcount -= fn->type->thistuple; varargcount -= fn->type->intuple - 1; } // assign arguments to the parameters' temp names as = nod(OAS2, N, N); as->rlist = n->list; ll = n->list; // TODO: if len(nlist) == 1 but multiple args, check that n->list->n is a call? if(fn->type->thistuple && n->left->op != ODOTMETH) { // non-method call to method if(!n->list) fatal("non-method call to method without first arg: %+N", n); // append receiver inlvar to LHS. t = getthisx(fn->type)->type; if(t != T && t->nname != N && !isblank(t->nname) && !t->nname->inlvar) fatal("missing inlvar for %N\n", t->nname); if(t == T) fatal("method call unknown receiver type: %+N", n); as->list = list(as->list, tinlvar(t)); ll = ll->next; // track argument count. } // append ordinary arguments to LHS. chkargcount = n->list && n->list->next; vararg = N; // the slice argument to a variadic call varargs = nil; // the list of LHS names to put in vararg. if(!chkargcount) { // 0 or 1 expression on RHS. for(t = getinargx(fn->type)->type; t; t=t->down) { if(variadic && t->isddd) { vararg = tinlvar(t); for(i=0; ilist = list(as->list, m); } break; } as->list = list(as->list, tinlvar(t)); } } else { // match arguments except final variadic (unless the call is dotted itself) for(t = getinargx(fn->type)->type; t;) { if(!ll) break; if(variadic && t->isddd) break; as->list = list(as->list, tinlvar(t)); t=t->down; ll=ll->next; } // match varargcount arguments with variadic parameters. if(variadic && t && t->isddd) { vararg = tinlvar(t); for(i=0; ilist = list(as->list, m); ll=ll->next; } if(i==varargcount) t=t->down; } if(ll || t) fatal("arg count mismatch: %#T vs %,H\n", getinargx(fn->type), n->list); } if (as->rlist) { typecheck(&as, Etop); ninit = list(ninit, as); } // turn the variadic args into a slice. if(variadic) { as = nod(OAS, vararg, N); if(!varargcount) { as->right = nodnil(); as->right->type = varargtype; } else { vararrtype = typ(TARRAY); vararrtype->type = varargtype->type; vararrtype->bound = varargcount; as->right = nod(OCOMPLIT, N, typenod(varargtype)); as->right->list = varargs; as->right = nod(OSLICE, as->right, nod(OKEY, N, N)); } typecheck(&as, Etop); ninit = list(ninit, as); } // zero the outparams for(ll = inlretvars; ll; ll=ll->next) { as = nod(OAS, ll->n, N); typecheck(&as, Etop); ninit = list(ninit, as); } inlretlabel = newlabel(); inlgen++; body = inlsubstlist(fn->inl); body = list(body, nod(OGOTO, inlretlabel, N)); // avoid 'not used' when function doesnt have return body = list(body, nod(OLABEL, inlretlabel, N)); typechecklist(body, Etop); //dumplist("ninit post", ninit); call = nod(OINLCALL, N, N); call->ninit = ninit; call->nbody = body; call->rlist = inlretvars; call->type = n->type; call->typecheck = 1; setlno(call, n->lineno); //dumplist("call body", body); *np = call; inlfn = saveinlfn; // transitive inlining // TODO do this pre-expansion on fn->inl directly. requires // either supporting exporting statemetns with complex ninits // or saving inl and making inlinl if(debug['l'] >= 5) { body = fn->inl; fn->inl = nil; // prevent infinite recursion inlnodelist(call->nbody); for(ll=call->nbody; ll; ll=ll->next) if(ll->n->op == OINLCALL) inlconv2stmt(ll->n); fn->inl = body; } if(debug['m']>2) print("%L: After inlining %+N\n\n", n->lineno, *np); } // Every time we expand a function we generate a new set of tmpnames, // PAUTO's in the calling functions, and link them off of the // PPARAM's, PAUTOS and PPARAMOUTs of the called function. static Node* inlvar(Node *var) { Node *n; if(debug['m']>3) print("inlvar %+N\n", var); n = newname(var->sym); n->type = var->type; n->class = PAUTO; n->used = 1; n->curfn = curfn; // the calling function, not the called one n->addrtaken = var->addrtaken; // esc pass wont run if we're inlining into a iface wrapper // luckily, we can steal the results from the target func if(var->esc == EscHeap) addrescapes(n); curfn->dcl = list(curfn->dcl, n); return n; } // Synthesize a variable to store the inlined function's results in. static Node* retvar(Type *t, int i) { Node *n; snprint(namebuf, sizeof(namebuf), "~r%d", i); n = newname(lookup(namebuf)); n->type = t->type; n->class = PAUTO; n->used = 1; n->curfn = curfn; // the calling function, not the called one curfn->dcl = list(curfn->dcl, n); return n; } // Synthesize a variable to store the inlined function's arguments // when they come from a multiple return call. static Node* argvar(Type *t, int i) { Node *n; snprint(namebuf, sizeof(namebuf), "~arg%d", i); n = newname(lookup(namebuf)); n->type = t->type; n->class = PAUTO; n->used = 1; n->curfn = curfn; // the calling function, not the called one curfn->dcl = list(curfn->dcl, n); return n; } static Node* newlabel(void) { Node *n; static int label; label++; snprint(namebuf, sizeof(namebuf), ".inlret%.6d", label); n = newname(lookup(namebuf)); n->etype = 1; // flag 'safe' for escape analysis (no backjumps) return n; } // inlsubst and inlsubstlist recursively copy the body of the saved // pristine ->inl body of the function while substituting references // to input/output parameters with ones to the tmpnames, and // substituting returns with assignments to the output. static NodeList* inlsubstlist(NodeList *ll) { NodeList *l; l = nil; for(; ll; ll=ll->next) l = list(l, inlsubst(ll->n)); return l; } static Node* inlsubst(Node *n) { char *p; Node *m, *as; NodeList *ll; if(n == N) return N; switch(n->op) { case ONAME: if(n->inlvar) { // These will be set during inlnode if (debug['m']>2) print ("substituting name %+N -> %+N\n", n, n->inlvar); return n->inlvar; } if (debug['m']>2) print ("not substituting name %+N\n", n); return n; case OLITERAL: case OTYPE: return n; case ORETURN: // Since we don't handle bodies with closures, this return is guaranteed to belong to the current inlined function. // dump("Return before substitution", n); m = nod(OGOTO, inlretlabel, N); m->ninit = inlsubstlist(n->ninit); if(inlretvars && n->list) { as = nod(OAS2, N, N); // shallow copy or OINLCALL->rlist will be the same list, and later walk and typecheck may clobber that. for(ll=inlretvars; ll; ll=ll->next) as->list = list(as->list, ll->n); as->rlist = inlsubstlist(n->list); typecheck(&as, Etop); m->ninit = list(m->ninit, as); } typechecklist(m->ninit, Etop); typecheck(&m, Etop); // dump("Return after substitution", m); return m; case OGOTO: case OLABEL: m = nod(OXXX, N, N); *m = *n; m->ninit = nil; p = smprint("%s·%d", n->left->sym->name, inlgen); m->left = newname(lookup(p)); free(p); return m; } m = nod(OXXX, N, N); *m = *n; m->ninit = nil; if(n->op == OCLOSURE) fatal("cannot inline function containing closure: %+N", n); m->left = inlsubst(n->left); m->right = inlsubst(n->right); m->list = inlsubstlist(n->list); m->rlist = inlsubstlist(n->rlist); m->ninit = concat(m->ninit, inlsubstlist(n->ninit)); m->ntest = inlsubst(n->ntest); m->nincr = inlsubst(n->nincr); m->nbody = inlsubstlist(n->nbody); m->nelse = inlsubstlist(n->nelse); return m; } // Plaster over linenumbers static void setlnolist(NodeList *ll, int lno) { for(;ll;ll=ll->next) setlno(ll->n, lno); } static void setlno(Node *n, int lno) { if(!n) return; // don't clobber names, unless they're freshly synthesized if(n->op != ONAME || n->lineno == 0) n->lineno = lno; setlno(n->left, lno); setlno(n->right, lno); setlnolist(n->list, lno); setlnolist(n->rlist, lno); setlnolist(n->ninit, lno); setlno(n->ntest, lno); setlno(n->nincr, lno); setlnolist(n->nbody, lno); setlnolist(n->nelse, lno); } go/src/cmd/gc/lex.c0100644000000000000000000013405012412656737014361 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" #include "y.tab.h" #include #undef getc #undef ungetc #define getc ccgetc #define ungetc ccungetc extern int yychar; int yyprev; int yylast; static void lexinit(void); static void lexinit1(void); static void lexfini(void); static void yytinit(void); static int getc(void); static void ungetc(int); static int32 getr(void); static int escchar(int, int*, vlong*); static void addidir(char*); static int getlinepragma(void); static char *goos, *goarch, *goroot; #define BOM 0xFEFF // Compiler experiments. // These are controlled by the GOEXPERIMENT environment // variable recorded when the compiler is built. static struct { char *name; int *val; } exper[] = { // {"rune32", &rune32}, {"fieldtrack", &fieldtrack_enabled}, {"precisestack", &precisestack_enabled}, {nil, nil}, }; // Debug arguments. // These can be specified with the -d flag, as in "-d checknil" // to set the debug_checknil variable. In general the list passed // to -d can be comma-separated. static struct { char *name; int *val; } debugtab[] = { {"nil", &debug_checknil}, {nil, nil}, }; static void addexp(char *s) { int i; for(i=0; exper[i].name != nil; i++) { if(strcmp(exper[i].name, s) == 0) { *exper[i].val = 1; return; } } print("unknown experiment %s\n", s); exits("unknown experiment"); } static void setexp(void) { char *f[20]; int i, nf; precisestack_enabled = 1; // on by default // cmd/dist #defines GOEXPERIMENT for us. nf = getfields(GOEXPERIMENT, f, nelem(f), 1, ","); for(i=0; i= 0 && c <= 0xFF && isdigit(c); } static int yy_isspace(int c) { return c == ' ' || c == '\t' || c == '\n' || c == '\r'; } static int yy_isalpha(int c) { return c >= 0 && c <= 0xFF && isalpha(c); } static int yy_isalnum(int c) { return c >= 0 && c <= 0xFF && isalnum(c); } // Disallow use of isdigit etc. #undef isdigit #undef isspace #undef isalpha #undef isalnum #define isdigit use_yy_isdigit_instead_of_isdigit #define isspace use_yy_isspace_instead_of_isspace #define isalpha use_yy_isalpha_instead_of_isalpha #define isalnum use_yy_isalnum_instead_of_isalnum #define DBG if(!debug['x']){}else print enum { EOF = -1, }; void usage(void) { print("usage: %cg [options] file.go...\n", thechar); flagprint(1); exits("usage"); } void fault(int s) { USED(s); // If we've already complained about things // in the program, don't bother complaining // about the seg fault too; let the user clean up // the code and try again. if(nsavederrors + nerrors > 0) errorexit(); fatal("fault"); } #ifdef PLAN9 void catcher(void *v, char *s) { USED(v); if(strncmp(s, "sys: trap: fault read", 21) == 0) { if(nsavederrors + nerrors > 0) errorexit(); fatal("fault"); } noted(NDFLT); } #endif void doversion(void) { char *p; p = expstring(); if(strcmp(p, "X:none") == 0) p = ""; print("%cg version %s%s%s\n", thechar, getgoversion(), *p ? " " : "", p); exits(0); } int main(int argc, char *argv[]) { int i; NodeList *l; char *p; #ifdef SIGBUS signal(SIGBUS, fault); signal(SIGSEGV, fault); #endif #ifdef PLAN9 notify(catcher); // Tell the FPU to handle all exceptions. setfcr(FPPDBL|FPRNR); #endif // Allow GOARCH=thestring or GOARCH=thestringsuffix, // but not other values. p = getgoarch(); if(strncmp(p, thestring, strlen(thestring)) != 0) sysfatal("cannot use %cg with GOARCH=%s", thechar, p); goarch = p; linkarchinit(); ctxt = linknew(thelinkarch); ctxt->diag = yyerror; ctxt->bso = &bstdout; Binit(&bstdout, 1, OWRITE); localpkg = mkpkg(strlit("")); localpkg->prefix = "\"\""; // pseudo-package, for scoping builtinpkg = mkpkg(strlit("go.builtin")); // pseudo-package, accessed by import "unsafe" unsafepkg = mkpkg(strlit("unsafe")); unsafepkg->name = "unsafe"; // real package, referred to by generated runtime calls runtimepkg = mkpkg(strlit("runtime")); runtimepkg->name = "runtime"; // pseudo-packages used in symbol tables gostringpkg = mkpkg(strlit("go.string")); gostringpkg->name = "go.string"; gostringpkg->prefix = "go.string"; // not go%2estring itabpkg = mkpkg(strlit("go.itab")); itabpkg->name = "go.itab"; itabpkg->prefix = "go.itab"; // not go%2eitab weaktypepkg = mkpkg(strlit("go.weak.type")); weaktypepkg->name = "go.weak.type"; weaktypepkg->prefix = "go.weak.type"; // not go%2eweak%2etype typelinkpkg = mkpkg(strlit("go.typelink")); typelinkpkg->name = "go.typelink"; typelinkpkg->prefix = "go.typelink"; // not go%2etypelink trackpkg = mkpkg(strlit("go.track")); trackpkg->name = "go.track"; trackpkg->prefix = "go.track"; // not go%2etrack typepkg = mkpkg(strlit("type")); typepkg->name = "type"; goroot = getgoroot(); goos = getgoos(); nacl = strcmp(goos, "nacl") == 0; if(nacl) flag_largemodel = 1; setexp(); outfile = nil; flagcount("+", "compiling runtime", &compiling_runtime); flagcount("%", "debug non-static initializers", &debug['%']); flagcount("A", "for bootstrapping, allow 'any' type", &debug['A']); flagcount("B", "disable bounds checking", &debug['B']); flagstr("D", "path: set relative path for local imports", &localimport); flagcount("E", "debug symbol export", &debug['E']); flagfn1("I", "dir: add dir to import search path", addidir); flagcount("K", "debug missing line numbers", &debug['K']); flagcount("L", "use full (long) path in error messages", &debug['L']); flagcount("M", "debug move generation", &debug['M']); flagcount("N", "disable optimizations", &debug['N']); flagcount("P", "debug peephole optimizer", &debug['P']); flagcount("R", "debug register optimizer", &debug['R']); flagcount("S", "print assembly listing", &debug['S']); flagfn0("V", "print compiler version", doversion); flagcount("W", "debug parse tree after type checking", &debug['W']); flagcount("complete", "compiling complete package (no C or assembly)", &pure_go); flagstr("d", "list: print debug information about items in list", &debugstr); flagcount("e", "no limit on number of errors reported", &debug['e']); flagcount("f", "debug stack frames", &debug['f']); flagcount("g", "debug code generation", &debug['g']); flagcount("h", "halt on error", &debug['h']); flagcount("i", "debug line number stack", &debug['i']); flagstr("installsuffix", "pkg directory suffix", &flag_installsuffix); flagcount("j", "debug runtime-initialized variables", &debug['j']); flagcount("l", "disable inlining", &debug['l']); flagcount("live", "debug liveness analysis", &debuglive); flagcount("m", "print optimization decisions", &debug['m']); flagcount("nolocalimports", "reject local (relative) imports", &nolocalimports); flagstr("o", "obj: set output file", &outfile); flagstr("p", "path: set expected package import path", &myimportpath); flagcount("pack", "write package file instead of object file", &writearchive); flagcount("r", "debug generated wrappers", &debug['r']); flagcount("race", "enable race detector", &flag_race); flagcount("s", "warn about composite literals that can be simplified", &debug['s']); flagstr("trimpath", "prefix: remove prefix from recorded source file paths", &ctxt->trimpath); flagcount("u", "reject unsafe code", &safemode); flagcount("v", "increase debug verbosity", &debug['v']); flagcount("w", "debug type checking", &debug['w']); flagcount("x", "debug lexer", &debug['x']); flagcount("y", "debug declarations in canned imports (with -d)", &debug['y']); if(thechar == '6') flagcount("largemodel", "generate code that assumes a large memory model", &flag_largemodel); flagparse(&argc, &argv, usage); ctxt->debugasm = debug['S']; if(argc < 1) usage(); if(flag_race) { racepkg = mkpkg(strlit("runtime/race")); racepkg->name = "race"; } // parse -d argument if(debugstr) { char *f[100]; int i, j, nf; nf = getfields(debugstr, f, nelem(f), 1, ","); for(i=0; i 1) if(debug['l'] <= 1) debug['l'] = 1 - debug['l']; if(thechar == '8') { p = getgo386(); if(strcmp(p, "387") == 0) use_sse = 0; else if(strcmp(p, "sse2") == 0) use_sse = 1; else sysfatal("unsupported setting GO386=%s", p); } fmtinstallgo(); betypeinit(); if(widthptr == 0) fatal("betypeinit failed"); lexinit(); typeinit(); lexinit1(); yytinit(); blockgen = 1; dclcontext = PEXTERN; nerrors = 0; lexlineno = 1; for(i=0; iname); // final import not used checks lexfini(); typecheckok = 1; if(debug['f']) frame(1); // Process top-level declarations in phases. // Phase 1: const, type, and names and types of funcs. // This will gather all the information about types // and methods but doesn't depend on any of it. defercheckwidth(); for(l=xtop; l; l=l->next) if(l->n->op != ODCL && l->n->op != OAS) typecheck(&l->n, Etop); // Phase 2: Variable assignments. // To check interface assignments, depends on phase 1. for(l=xtop; l; l=l->next) if(l->n->op == ODCL || l->n->op == OAS) typecheck(&l->n, Etop); resumecheckwidth(); // Phase 3: Type check function bodies. for(l=xtop; l; l=l->next) { if(l->n->op == ODCLFUNC || l->n->op == OCLOSURE) { curfn = l->n; saveerrors(); typechecklist(l->n->nbody, Etop); checkreturn(l->n); if(nerrors != 0) l->n->nbody = nil; // type errors; do not compile } } curfn = nil; if(nsavederrors+nerrors) errorexit(); // Phase 4: Inlining if(debug['l'] > 1) { // Typecheck imported function bodies if debug['l'] > 1, // otherwise lazily when used or re-exported. for(l=importlist; l; l=l->next) if (l->n->inl) { saveerrors(); typecheckinl(l->n); } if(nsavederrors+nerrors) errorexit(); } if(debug['l']) { // Find functions that can be inlined and clone them before walk expands them. for(l=xtop; l; l=l->next) if(l->n->op == ODCLFUNC) caninl(l->n); // Expand inlineable calls in all functions for(l=xtop; l; l=l->next) if(l->n->op == ODCLFUNC) inlcalls(l->n); } // Phase 5: Escape analysis. if(!debug['N']) escapes(xtop); // Escape analysis moved escaped values off stack. // Move large values off stack too. movelarge(xtop); // Phase 6: Compile top level functions. for(l=xtop; l; l=l->next) if(l->n->op == ODCLFUNC) funccompile(l->n, 0); if(nsavederrors+nerrors == 0) fninit(xtop); // Phase 7: Check external declarations. for(l=externdcl; l; l=l->next) if(l->n->op == ONAME) typecheck(&l->n, Erv); if(nerrors+nsavederrors) errorexit(); dumpobj(); if(nerrors+nsavederrors) errorexit(); flusherrors(); exits(0); return 0; } void saveerrors(void) { nsavederrors += nerrors; nerrors = 0; } /* * macro to portably read/write archive header. * 'cmd' is read/write/Bread/Bwrite, etc. */ #define HEADER_IO(cmd, f, h) cmd(f, h.name, sizeof(h.name)) != sizeof(h.name)\ || cmd(f, h.date, sizeof(h.date)) != sizeof(h.date)\ || cmd(f, h.uid, sizeof(h.uid)) != sizeof(h.uid)\ || cmd(f, h.gid, sizeof(h.gid)) != sizeof(h.gid)\ || cmd(f, h.mode, sizeof(h.mode)) != sizeof(h.mode)\ || cmd(f, h.size, sizeof(h.size)) != sizeof(h.size)\ || cmd(f, h.fmag, sizeof(h.fmag)) != sizeof(h.fmag) static int arsize(Biobuf *b, char *name) { struct ar_hdr a; if (HEADER_IO(Bread, b, a)) return -1; if(strncmp(a.name, name, strlen(name)) != 0) return -1; return atoi(a.size); } static int skiptopkgdef(Biobuf *b) { char *p; int sz; /* archive header */ if((p = Brdline(b, '\n')) == nil) return 0; if(Blinelen(b) != 8) return 0; if(memcmp(p, "!\n", 8) != 0) return 0; /* symbol table may be first; skip it */ sz = arsize(b, "__.GOSYMDEF"); if(sz >= 0) Bseek(b, sz, 1); else Bseek(b, 8, 0); /* package export block is next */ sz = arsize(b, "__.PKGDEF"); if(sz <= 0) return 0; return 1; } static void addidir(char* dir) { Idir** pp; if(dir == nil) return; for(pp = &idirs; *pp != nil; pp = &(*pp)->link) ; *pp = mal(sizeof(Idir)); (*pp)->link = nil; (*pp)->dir = dir; } // is this path a local name? begins with ./ or ../ or / static int islocalname(Strlit *name) { if(name->len >= 1 && name->s[0] == '/') return 1; if(ctxt->windows && name->len >= 3 && yy_isalpha(name->s[0]) && name->s[1] == ':' && name->s[2] == '/') return 1; if(name->len >= 2 && strncmp(name->s, "./", 2) == 0) return 1; if(name->len == 1 && strncmp(name->s, ".", 1) == 0) return 1; if(name->len >= 3 && strncmp(name->s, "../", 3) == 0) return 1; if(name->len == 2 && strncmp(name->s, "..", 2) == 0) return 1; return 0; } static int findpkg(Strlit *name) { Idir *p; char *q, *suffix, *suffixsep; if(islocalname(name)) { if(safemode || nolocalimports) return 0; // try .a before .6. important for building libraries: // if there is an array.6 in the array.a library, // want to find all of array.a, not just array.6. snprint(namebuf, sizeof(namebuf), "%Z.a", name); if(access(namebuf, 0) >= 0) return 1; snprint(namebuf, sizeof(namebuf), "%Z.%c", name, thechar); if(access(namebuf, 0) >= 0) return 1; return 0; } // local imports should be canonicalized already. // don't want to see "encoding/../encoding/base64" // as different from "encoding/base64". q = mal(name->len+1); memmove(q, name->s, name->len); q[name->len] = '\0'; cleanname(q); if(strlen(q) != name->len || memcmp(q, name->s, name->len) != 0) { yyerror("non-canonical import path %Z (should be %s)", name, q); return 0; } for(p = idirs; p != nil; p = p->link) { snprint(namebuf, sizeof(namebuf), "%s/%Z.a", p->dir, name); if(access(namebuf, 0) >= 0) return 1; snprint(namebuf, sizeof(namebuf), "%s/%Z.%c", p->dir, name, thechar); if(access(namebuf, 0) >= 0) return 1; } if(goroot != nil) { suffix = ""; suffixsep = ""; if(flag_installsuffix != nil) { suffixsep = "_"; suffix = flag_installsuffix; } else if(flag_race) { suffixsep = "_"; suffix = "race"; } snprint(namebuf, sizeof(namebuf), "%s/pkg/%s_%s%s%s/%Z.a", goroot, goos, goarch, suffixsep, suffix, name); if(access(namebuf, 0) >= 0) return 1; snprint(namebuf, sizeof(namebuf), "%s/pkg/%s_%s%s%s/%Z.%c", goroot, goos, goarch, suffixsep, suffix, name, thechar); if(access(namebuf, 0) >= 0) return 1; } return 0; } static void fakeimport(void) { importpkg = mkpkg(strlit("fake")); cannedimports("fake.6", "$$\n"); } void importfile(Val *f, int line) { Biobuf *imp; char *file, *p, *q, *tag; int32 c; int len; Strlit *path; char *cleanbuf, *prefix; USED(line); if(f->ctype != CTSTR) { yyerror("import statement not a string"); fakeimport(); return; } if(f->u.sval->len == 0) { yyerror("import path is empty"); fakeimport(); return; } if(isbadimport(f->u.sval)) { fakeimport(); return; } // The package name main is no longer reserved, // but we reserve the import path "main" to identify // the main package, just as we reserve the import // path "math" to identify the standard math package. if(strcmp(f->u.sval->s, "main") == 0) { yyerror("cannot import \"main\""); errorexit(); } if(myimportpath != nil && strcmp(f->u.sval->s, myimportpath) == 0) { yyerror("import \"%Z\" while compiling that package (import cycle)", f->u.sval); errorexit(); } if(strcmp(f->u.sval->s, "unsafe") == 0) { if(safemode) { yyerror("cannot import package unsafe"); errorexit(); } importpkg = mkpkg(f->u.sval); cannedimports("unsafe.6", unsafeimport); return; } path = f->u.sval; if(islocalname(path)) { if(path->s[0] == '/') { yyerror("import path cannot be absolute path"); fakeimport(); return; } prefix = ctxt->pathname; if(localimport != nil) prefix = localimport; cleanbuf = mal(strlen(prefix) + strlen(path->s) + 2); strcpy(cleanbuf, prefix); strcat(cleanbuf, "/"); strcat(cleanbuf, path->s); cleanname(cleanbuf); path = strlit(cleanbuf); if(isbadimport(path)) { fakeimport(); return; } } if(!findpkg(path)) { yyerror("can't find import: \"%Z\"", f->u.sval); errorexit(); } importpkg = mkpkg(path); // If we already saw that package, feed a dummy statement // to the lexer to avoid parsing export data twice. if(importpkg->imported) { file = strdup(namebuf); tag = ""; if(importpkg->safe) { tag = "safe"; } p = smprint("package %s %s\n$$\n", importpkg->name, tag); cannedimports(file, p); return; } importpkg->imported = 1; imp = Bopen(namebuf, OREAD); if(imp == nil) { yyerror("can't open import: \"%Z\": %r", f->u.sval); errorexit(); } file = strdup(namebuf); len = strlen(namebuf); if(len > 2 && namebuf[len-2] == '.' && namebuf[len-1] == 'a') { if(!skiptopkgdef(imp)) { yyerror("import %s: not a package file", file); errorexit(); } } // check object header p = Brdstr(imp, '\n', 1); if(strcmp(p, "empty archive") != 0) { if(strncmp(p, "go object ", 10) != 0) { yyerror("import %s: not a go object file", file); errorexit(); } q = smprint("%s %s %s %s", getgoos(), getgoarch(), getgoversion(), expstring()); if(strcmp(p+10, q) != 0) { yyerror("import %s: object is [%s] expected [%s]", file, p+10, q); errorexit(); } free(q); } // assume files move (get installed) // so don't record the full path. linehist(file + len - path->len - 2, -1, 1); // acts as #pragma lib /* * position the input right * after $$ and return */ pushedio = curio; curio.bin = imp; curio.peekc = 0; curio.peekc1 = 0; curio.infile = file; curio.nlsemi = 0; typecheckok = 1; for(;;) { c = getc(); if(c == EOF) break; if(c != '$') continue; c = getc(); if(c == EOF) break; if(c != '$') continue; return; } yyerror("no import in \"%Z\"", f->u.sval); unimportfile(); } void unimportfile(void) { if(curio.bin != nil) { Bterm(curio.bin); curio.bin = nil; } else lexlineno--; // re correct sys.6 line number curio = pushedio; pushedio.bin = nil; incannedimport = 0; typecheckok = 0; } void cannedimports(char *file, char *cp) { lexlineno++; // if sys.6 is included on line 1, pushedio = curio; curio.bin = nil; curio.peekc = 0; curio.peekc1 = 0; curio.infile = file; curio.cp = cp; curio.nlsemi = 0; curio.importsafe = 0; typecheckok = 1; incannedimport = 1; } static int isfrog(int c) { // complain about possibly invisible control characters if(c < ' ') { return !yy_isspace(c); // exclude good white space } if(0x7f <= c && c <= 0xa0) // DEL, unicode block including unbreakable space. return 1; return 0; } typedef struct Loophack Loophack; struct Loophack { int v; Loophack *next; }; static int32 _yylex(void) { int c, c1, clen, escflag, ncp; vlong v; char *cp, *ep; Rune rune; Sym *s; static Loophack *lstk; Loophack *h; prevlineno = lineno; l0: c = getc(); if(yy_isspace(c)) { if(c == '\n' && curio.nlsemi) { ungetc(c); DBG("lex: implicit semi\n"); return ';'; } goto l0; } lineno = lexlineno; /* start of token */ if(c >= Runeself) { /* all multibyte runes are alpha */ cp = lexbuf; ep = lexbuf+sizeof lexbuf; goto talph; } if(yy_isalpha(c)) { cp = lexbuf; ep = lexbuf+sizeof lexbuf; goto talph; } if(yy_isdigit(c)) goto tnum; switch(c) { case EOF: lineno = prevlineno; ungetc(EOF); return -1; case '_': cp = lexbuf; ep = lexbuf+sizeof lexbuf; goto talph; case '.': c1 = getc(); if(yy_isdigit(c1)) { cp = lexbuf; ep = lexbuf+sizeof lexbuf; *cp++ = c; c = c1; goto casedot; } if(c1 == '.') { c1 = getc(); if(c1 == '.') { c = LDDD; goto lx; } ungetc(c1); c1 = '.'; } break; case '"': /* "..." */ strcpy(lexbuf, "\"\""); cp = mal(8); clen = sizeof(int32); ncp = 8; for(;;) { if(clen+UTFmax > ncp) { cp = remal(cp, ncp, ncp); ncp += ncp; } if(escchar('"', &escflag, &v)) break; if(v < Runeself || escflag) { cp[clen++] = v; } else { rune = v; c = runelen(rune); runetochar(cp+clen, &rune); clen += c; } } goto strlit; case '`': /* `...` */ strcpy(lexbuf, "``"); cp = mal(8); clen = sizeof(int32); ncp = 8; for(;;) { if(clen+UTFmax > ncp) { cp = remal(cp, ncp, ncp); ncp += ncp; } c = getr(); if(c == '\r') continue; if(c == EOF) { yyerror("eof in string"); break; } if(c == '`') break; rune = c; clen += runetochar(cp+clen, &rune); } strlit: *(int32*)cp = clen-sizeof(int32); // length do { cp[clen++] = 0; } while(clen & MAXALIGN); yylval.val.u.sval = (Strlit*)cp; yylval.val.ctype = CTSTR; DBG("lex: string literal\n"); strcpy(litbuf, "string literal"); return LLITERAL; case '\'': /* '.' */ if(escchar('\'', &escflag, &v)) { yyerror("empty character literal or unescaped ' in character literal"); v = '\''; } if(!escchar('\'', &escflag, &v)) { yyerror("missing '"); ungetc(v); } yylval.val.u.xval = mal(sizeof(*yylval.val.u.xval)); mpmovecfix(yylval.val.u.xval, v); yylval.val.ctype = CTRUNE; DBG("lex: codepoint literal\n"); strcpy(litbuf, "string literal"); return LLITERAL; case '/': c1 = getc(); if(c1 == '*') { int nl; nl = 0; for(;;) { c = getr(); if(c == '\n') nl = 1; while(c == '*') { c = getr(); if(c == '/') { if(nl) ungetc('\n'); goto l0; } if(c == '\n') nl = 1; } if(c == EOF) { yyerror("eof in comment"); errorexit(); } } } if(c1 == '/') { c = getlinepragma(); for(;;) { if(c == '\n' || c == EOF) { ungetc(c); goto l0; } c = getr(); } } if(c1 == '=') { c = ODIV; goto asop; } break; case ':': c1 = getc(); if(c1 == '=') { c = LCOLAS; yylval.i = lexlineno; goto lx; } break; case '*': c1 = getc(); if(c1 == '=') { c = OMUL; goto asop; } break; case '%': c1 = getc(); if(c1 == '=') { c = OMOD; goto asop; } break; case '+': c1 = getc(); if(c1 == '+') { c = LINC; goto lx; } if(c1 == '=') { c = OADD; goto asop; } break; case '-': c1 = getc(); if(c1 == '-') { c = LDEC; goto lx; } if(c1 == '=') { c = OSUB; goto asop; } break; case '>': c1 = getc(); if(c1 == '>') { c = LRSH; c1 = getc(); if(c1 == '=') { c = ORSH; goto asop; } break; } if(c1 == '=') { c = LGE; goto lx; } c = LGT; break; case '<': c1 = getc(); if(c1 == '<') { c = LLSH; c1 = getc(); if(c1 == '=') { c = OLSH; goto asop; } break; } if(c1 == '=') { c = LLE; goto lx; } if(c1 == '-') { c = LCOMM; goto lx; } c = LLT; break; case '=': c1 = getc(); if(c1 == '=') { c = LEQ; goto lx; } break; case '!': c1 = getc(); if(c1 == '=') { c = LNE; goto lx; } break; case '&': c1 = getc(); if(c1 == '&') { c = LANDAND; goto lx; } if(c1 == '^') { c = LANDNOT; c1 = getc(); if(c1 == '=') { c = OANDNOT; goto asop; } break; } if(c1 == '=') { c = OAND; goto asop; } break; case '|': c1 = getc(); if(c1 == '|') { c = LOROR; goto lx; } if(c1 == '=') { c = OOR; goto asop; } break; case '^': c1 = getc(); if(c1 == '=') { c = OXOR; goto asop; } break; /* * clumsy dance: * to implement rule that disallows * if T{1}[0] { ... } * but allows * if (T{1}[0]) { ... } * the block bodies for if/for/switch/select * begin with an LBODY token, not '{'. * * when we see the keyword, the next * non-parenthesized '{' becomes an LBODY. * loophack is normally 0. * a keyword makes it go up to 1. * parens push loophack onto a stack and go back to 0. * a '{' with loophack == 1 becomes LBODY and disables loophack. * * i said it was clumsy. */ case '(': case '[': if(loophack || lstk != nil) { h = malloc(sizeof *h); if(h == nil) { flusherrors(); yyerror("out of memory"); errorexit(); } h->v = loophack; h->next = lstk; lstk = h; loophack = 0; } goto lx; case ')': case ']': if(lstk != nil) { h = lstk; loophack = h->v; lstk = h->next; free(h); } goto lx; case '{': if(loophack == 1) { DBG("%L lex: LBODY\n", lexlineno); loophack = 0; return LBODY; } goto lx; default: goto lx; } ungetc(c1); lx: if(c > 0xff) DBG("%L lex: TOKEN %s\n", lexlineno, lexname(c)); else DBG("%L lex: TOKEN '%c'\n", lexlineno, c); if(isfrog(c)) { yyerror("illegal character 0x%ux", c); goto l0; } if(importpkg == nil && (c == '#' || c == '$' || c == '?' || c == '@' || c == '\\')) { yyerror("%s: unexpected %c", "syntax error", c); goto l0; } return c; asop: yylval.i = c; // rathole to hold which asop DBG("lex: TOKEN ASOP %c\n", c); return LASOP; talph: /* * cp is set to lexbuf and some * prefix has been stored */ for(;;) { if(cp+10 >= ep) { yyerror("identifier too long"); errorexit(); } if(c >= Runeself) { ungetc(c); rune = getr(); // 0xb7 · is used for internal names if(!isalpharune(rune) && !isdigitrune(rune) && (importpkg == nil || rune != 0xb7)) yyerror("invalid identifier character U+%04x", rune); cp += runetochar(cp, &rune); } else if(!yy_isalnum(c) && c != '_') break; else *cp++ = c; c = getc(); } *cp = 0; ungetc(c); s = lookup(lexbuf); switch(s->lexical) { case LIGNORE: goto l0; case LFOR: case LIF: case LSWITCH: case LSELECT: loophack = 1; // see comment about loophack above break; } DBG("lex: %S %s\n", s, lexname(s->lexical)); yylval.sym = s; return s->lexical; tnum: cp = lexbuf; ep = lexbuf+sizeof lexbuf; if(c != '0') { for(;;) { if(cp+10 >= ep) { yyerror("identifier too long"); errorexit(); } *cp++ = c; c = getc(); if(yy_isdigit(c)) continue; goto dc; } } *cp++ = c; c = getc(); if(c == 'x' || c == 'X') { for(;;) { if(cp+10 >= ep) { yyerror("identifier too long"); errorexit(); } *cp++ = c; c = getc(); if(yy_isdigit(c)) continue; if(c >= 'a' && c <= 'f') continue; if(c >= 'A' && c <= 'F') continue; if(cp == lexbuf+2) yyerror("malformed hex constant"); if(c == 'p') goto caseep; goto ncu; } } if(c == 'p') // 0p begins floating point zero goto caseep; c1 = 0; for(;;) { if(cp+10 >= ep) { yyerror("identifier too long"); errorexit(); } if(!yy_isdigit(c)) break; if(c < '0' || c > '7') c1 = 1; // not octal *cp++ = c; c = getc(); } if(c == '.') goto casedot; if(c == 'e' || c == 'E') goto caseep; if(c == 'i') goto casei; if(c1) yyerror("malformed octal constant"); goto ncu; dc: if(c == '.') goto casedot; if(c == 'e' || c == 'E' || c == 'p' || c == 'P') goto caseep; if(c == 'i') goto casei; ncu: *cp = 0; ungetc(c); yylval.val.u.xval = mal(sizeof(*yylval.val.u.xval)); mpatofix(yylval.val.u.xval, lexbuf); if(yylval.val.u.xval->ovf) { yyerror("overflow in constant"); mpmovecfix(yylval.val.u.xval, 0); } yylval.val.ctype = CTINT; DBG("lex: integer literal\n"); strcpy(litbuf, "literal "); strcat(litbuf, lexbuf); return LLITERAL; casedot: for(;;) { if(cp+10 >= ep) { yyerror("identifier too long"); errorexit(); } *cp++ = c; c = getc(); if(!yy_isdigit(c)) break; } if(c == 'i') goto casei; if(c != 'e' && c != 'E') goto caseout; caseep: *cp++ = c; c = getc(); if(c == '+' || c == '-') { *cp++ = c; c = getc(); } if(!yy_isdigit(c)) yyerror("malformed fp constant exponent"); while(yy_isdigit(c)) { if(cp+10 >= ep) { yyerror("identifier too long"); errorexit(); } *cp++ = c; c = getc(); } if(c == 'i') goto casei; goto caseout; casei: // imaginary constant *cp = 0; yylval.val.u.cval = mal(sizeof(*yylval.val.u.cval)); mpmovecflt(&yylval.val.u.cval->real, 0.0); mpatoflt(&yylval.val.u.cval->imag, lexbuf); if(yylval.val.u.cval->imag.val.ovf) { yyerror("overflow in imaginary constant"); mpmovecflt(&yylval.val.u.cval->real, 0.0); } yylval.val.ctype = CTCPLX; DBG("lex: imaginary literal\n"); strcpy(litbuf, "literal "); strcat(litbuf, lexbuf); return LLITERAL; caseout: *cp = 0; ungetc(c); yylval.val.u.fval = mal(sizeof(*yylval.val.u.fval)); mpatoflt(yylval.val.u.fval, lexbuf); if(yylval.val.u.fval->val.ovf) { yyerror("overflow in float constant"); mpmovecflt(yylval.val.u.fval, 0.0); } yylval.val.ctype = CTFLT; DBG("lex: floating literal\n"); strcpy(litbuf, "literal "); strcat(litbuf, lexbuf); return LLITERAL; } /* * read and interpret syntax that looks like * //line parse.y:15 * as a discontinuity in sequential line numbers. * the next line of input comes from parse.y:15 */ static int getlinepragma(void) { int i, c, n; char *cp, *ep, *linep; Hist *h; c = getr(); if(c == 'g') goto go; if(c != 'l') goto out; for(i=1; i<5; i++) { c = getr(); if(c != "line "[i]) goto out; } cp = lexbuf; ep = lexbuf+sizeof(lexbuf)-5; linep = nil; for(;;) { c = getr(); if(c == EOF) goto out; if(c == '\n') break; if(c == ' ') continue; if(c == ':') linep = cp; if(cp < ep) *cp++ = c; } *cp = 0; if(linep == nil || linep >= ep) goto out; *linep++ = '\0'; n = 0; for(cp=linep; *cp; cp++) { if(*cp < '0' || *cp > '9') goto out; n = n*10 + *cp - '0'; if(n > 1e8) { yyerror("line number out of range"); errorexit(); } } if(n <= 0) goto out; // try to avoid allocating file name over and over for(h=ctxt->hist; h!=nil; h=h->link) { if(h->name != nil && strcmp(h->name, lexbuf) == 0) { linehist(h->name, n, 0); goto out; } } linehist(strdup(lexbuf), n, 0); goto out; go: cp = lexbuf; ep = lexbuf+sizeof(lexbuf)-5; *cp++ = 'g'; // already read for(;;) { c = getr(); if(c == EOF || c >= Runeself) goto out; if(c == '\n') break; if(cp < ep) *cp++ = c; } *cp = 0; ep = strchr(lexbuf, ' '); if(ep != nil) *ep = 0; if(strcmp(lexbuf, "go:nointerface") == 0 && fieldtrack_enabled) { nointerface = 1; goto out; } if(strcmp(lexbuf, "go:noescape") == 0) { noescape = 1; goto out; } out: return c; } int32 yylex(void) { int lx; lx = _yylex(); if(curio.nlsemi && lx == EOF) { // Treat EOF as "end of line" for the purposes // of inserting a semicolon. lx = ';'; } switch(lx) { case LNAME: case LLITERAL: case LBREAK: case LCONTINUE: case LFALL: case LRETURN: case LINC: case LDEC: case ')': case '}': case ']': curio.nlsemi = 1; break; default: curio.nlsemi = 0; break; } // Track last two tokens returned by yylex. yyprev = yylast; yylast = lx; return lx; } static int getc(void) { int c, c1, c2; c = curio.peekc; if(c != 0) { curio.peekc = curio.peekc1; curio.peekc1 = 0; goto check; } if(curio.bin == nil) { c = *curio.cp & 0xff; if(c != 0) curio.cp++; } else { loop: c = BGETC(curio.bin); if(c == 0xef) { c1 = BGETC(curio.bin); c2 = BGETC(curio.bin); if(c1 == 0xbb && c2 == 0xbf) { yyerrorl(lexlineno, "Unicode (UTF-8) BOM in middle of file"); goto loop; } Bungetc(curio.bin); Bungetc(curio.bin); } } check: switch(c) { case 0: if(curio.bin != nil) { yyerror("illegal NUL byte"); break; } case EOF: // insert \n at EOF if(curio.eofnl || curio.last == '\n') return EOF; curio.eofnl = 1; c = '\n'; case '\n': if(pushedio.bin == nil) lexlineno++; break; } curio.last = c; return c; } static void ungetc(int c) { curio.peekc1 = curio.peekc; curio.peekc = c; if(c == '\n' && pushedio.bin == nil) lexlineno--; } static int32 getr(void) { int c, i; char str[UTFmax+1]; Rune rune; c = getc(); if(c < Runeself) return c; i = 0; str[i++] = c; loop: c = getc(); str[i++] = c; if(!fullrune(str, i)) goto loop; c = chartorune(&rune, str); if(rune == Runeerror && c == 1) { lineno = lexlineno; yyerror("illegal UTF-8 sequence"); flusherrors(); print("\t"); for(c=0; c 0 ? " " : "", *(uchar*)(str+c)); print("\n"); } return rune; } static int escchar(int e, int *escflg, vlong *val) { int i, u, c; vlong l; *escflg = 0; c = getr(); switch(c) { case EOF: yyerror("eof in string"); return 1; case '\n': yyerror("newline in string"); return 1; case '\\': break; default: if(c == e) return 1; *val = c; return 0; } u = 0; c = getr(); switch(c) { case 'x': *escflg = 1; // it's a byte i = 2; goto hex; case 'u': i = 4; u = 1; goto hex; case 'U': i = 8; u = 1; goto hex; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': *escflg = 1; // it's a byte goto oct; case 'a': c = '\a'; break; case 'b': c = '\b'; break; case 'f': c = '\f'; break; case 'n': c = '\n'; break; case 'r': c = '\r'; break; case 't': c = '\t'; break; case 'v': c = '\v'; break; case '\\': c = '\\'; break; default: if(c != e) yyerror("unknown escape sequence: %c", c); } *val = c; return 0; hex: l = 0; for(; i>0; i--) { c = getc(); if(c >= '0' && c <= '9') { l = l*16 + c-'0'; continue; } if(c >= 'a' && c <= 'f') { l = l*16 + c-'a' + 10; continue; } if(c >= 'A' && c <= 'F') { l = l*16 + c-'A' + 10; continue; } yyerror("non-hex character in escape sequence: %c", c); ungetc(c); break; } if(u && (l > Runemax || (0xd800 <= l && l < 0xe000))) { yyerror("invalid Unicode code point in escape sequence: %#llx", l); l = Runeerror; } *val = l; return 0; oct: l = c - '0'; for(i=2; i>0; i--) { c = getc(); if(c >= '0' && c <= '7') { l = l*8 + c-'0'; continue; } yyerror("non-octal character in escape sequence: %c", c); ungetc(c); } if(l > 255) yyerror("octal escape value > 255: %d", l); *val = l; return 0; } static struct { char* name; int lexical; int etype; int op; } syms[] = { /* name lexical etype op */ /* basic types */ "int8", LNAME, TINT8, OXXX, "int16", LNAME, TINT16, OXXX, "int32", LNAME, TINT32, OXXX, "int64", LNAME, TINT64, OXXX, "uint8", LNAME, TUINT8, OXXX, "uint16", LNAME, TUINT16, OXXX, "uint32", LNAME, TUINT32, OXXX, "uint64", LNAME, TUINT64, OXXX, "float32", LNAME, TFLOAT32, OXXX, "float64", LNAME, TFLOAT64, OXXX, "complex64", LNAME, TCOMPLEX64, OXXX, "complex128", LNAME, TCOMPLEX128, OXXX, "bool", LNAME, TBOOL, OXXX, "string", LNAME, TSTRING, OXXX, "any", LNAME, TANY, OXXX, "break", LBREAK, Txxx, OXXX, "case", LCASE, Txxx, OXXX, "chan", LCHAN, Txxx, OXXX, "const", LCONST, Txxx, OXXX, "continue", LCONTINUE, Txxx, OXXX, "default", LDEFAULT, Txxx, OXXX, "else", LELSE, Txxx, OXXX, "defer", LDEFER, Txxx, OXXX, "fallthrough", LFALL, Txxx, OXXX, "for", LFOR, Txxx, OXXX, "func", LFUNC, Txxx, OXXX, "go", LGO, Txxx, OXXX, "goto", LGOTO, Txxx, OXXX, "if", LIF, Txxx, OXXX, "import", LIMPORT, Txxx, OXXX, "interface", LINTERFACE, Txxx, OXXX, "map", LMAP, Txxx, OXXX, "package", LPACKAGE, Txxx, OXXX, "range", LRANGE, Txxx, OXXX, "return", LRETURN, Txxx, OXXX, "select", LSELECT, Txxx, OXXX, "struct", LSTRUCT, Txxx, OXXX, "switch", LSWITCH, Txxx, OXXX, "type", LTYPE, Txxx, OXXX, "var", LVAR, Txxx, OXXX, "append", LNAME, Txxx, OAPPEND, "cap", LNAME, Txxx, OCAP, "close", LNAME, Txxx, OCLOSE, "complex", LNAME, Txxx, OCOMPLEX, "copy", LNAME, Txxx, OCOPY, "delete", LNAME, Txxx, ODELETE, "imag", LNAME, Txxx, OIMAG, "len", LNAME, Txxx, OLEN, "make", LNAME, Txxx, OMAKE, "new", LNAME, Txxx, ONEW, "panic", LNAME, Txxx, OPANIC, "print", LNAME, Txxx, OPRINT, "println", LNAME, Txxx, OPRINTN, "real", LNAME, Txxx, OREAL, "recover", LNAME, Txxx, ORECOVER, "notwithstanding", LIGNORE, Txxx, OXXX, "thetruthofthematter", LIGNORE, Txxx, OXXX, "despiteallobjections", LIGNORE, Txxx, OXXX, "whereas", LIGNORE, Txxx, OXXX, "insofaras", LIGNORE, Txxx, OXXX, }; static void lexinit(void) { int i, lex; Sym *s, *s1; Type *t; int etype; Val v; /* * initialize basic types array * initialize known symbols */ for(i=0; ilexical = lex; etype = syms[i].etype; if(etype != Txxx) { if(etype < 0 || etype >= nelem(types)) fatal("lexinit: %s bad etype", s->name); s1 = pkglookup(syms[i].name, builtinpkg); t = types[etype]; if(t == T) { t = typ(etype); t->sym = s1; if(etype != TANY && etype != TSTRING) dowidth(t); types[etype] = t; } s1->lexical = LNAME; s1->def = typenod(t); continue; } etype = syms[i].op; if(etype != OXXX) { s1 = pkglookup(syms[i].name, builtinpkg); s1->lexical = LNAME; s1->def = nod(ONAME, N, N); s1->def->sym = s1; s1->def->etype = etype; s1->def->builtin = 1; } } // logically, the type of a string literal. // types[TSTRING] is the named type string // (the type of x in var x string or var x = "hello"). // this is the ideal form // (the type of x in const x = "hello"). idealstring = typ(TSTRING); idealbool = typ(TBOOL); s = pkglookup("true", builtinpkg); s->def = nodbool(1); s->def->sym = lookup("true"); s->def->type = idealbool; s = pkglookup("false", builtinpkg); s->def = nodbool(0); s->def->sym = lookup("false"); s->def->type = idealbool; s = lookup("_"); s->block = -100; s->def = nod(ONAME, N, N); s->def->sym = s; types[TBLANK] = typ(TBLANK); s->def->type = types[TBLANK]; nblank = s->def; s = pkglookup("_", builtinpkg); s->block = -100; s->def = nod(ONAME, N, N); s->def->sym = s; types[TBLANK] = typ(TBLANK); s->def->type = types[TBLANK]; types[TNIL] = typ(TNIL); s = pkglookup("nil", builtinpkg); v.ctype = CTNIL; s->def = nodlit(v); s->def->sym = s; } static void lexinit1(void) { Sym *s, *s1; Type *t, *f, *rcvr, *in, *out; // t = interface { Error() string } rcvr = typ(TSTRUCT); rcvr->type = typ(TFIELD); rcvr->type->type = ptrto(typ(TSTRUCT)); rcvr->funarg = 1; in = typ(TSTRUCT); in->funarg = 1; out = typ(TSTRUCT); out->type = typ(TFIELD); out->type->type = types[TSTRING]; out->funarg = 1; f = typ(TFUNC); *getthis(f) = rcvr; *getoutarg(f) = out; *getinarg(f) = in; f->thistuple = 1; f->intuple = 0; f->outnamed = 0; f->outtuple = 1; t = typ(TINTER); t->type = typ(TFIELD); t->type->sym = lookup("Error"); t->type->type = f; // error type s = lookup("error"); s->lexical = LNAME; s1 = pkglookup("error", builtinpkg); errortype = t; errortype->sym = s1; s1->lexical = LNAME; s1->def = typenod(errortype); // byte alias s = lookup("byte"); s->lexical = LNAME; s1 = pkglookup("byte", builtinpkg); bytetype = typ(TUINT8); bytetype->sym = s1; s1->lexical = LNAME; s1->def = typenod(bytetype); // rune alias s = lookup("rune"); s->lexical = LNAME; s1 = pkglookup("rune", builtinpkg); runetype = typ(TINT32); runetype->sym = s1; s1->lexical = LNAME; s1->def = typenod(runetype); } static void lexfini(void) { Sym *s; int lex, etype, i; Val v; for(i=0; ilexical = lex; etype = syms[i].etype; if(etype != Txxx && (etype != TANY || debug['A']) && s->def == N) { s->def = typenod(types[etype]); s->origpkg = builtinpkg; } etype = syms[i].op; if(etype != OXXX && s->def == N) { s->def = nod(ONAME, N, N); s->def->sym = s; s->def->etype = etype; s->def->builtin = 1; s->origpkg = builtinpkg; } } // backend-specific builtin types (e.g. int). for(i=0; typedefs[i].name; i++) { s = lookup(typedefs[i].name); if(s->def == N) { s->def = typenod(types[typedefs[i].etype]); s->origpkg = builtinpkg; } } // there's only so much table-driven we can handle. // these are special cases. s = lookup("byte"); if(s->def == N) { s->def = typenod(bytetype); s->origpkg = builtinpkg; } s = lookup("error"); if(s->def == N) { s->def = typenod(errortype); s->origpkg = builtinpkg; } s = lookup("rune"); if(s->def == N) { s->def = typenod(runetype); s->origpkg = builtinpkg; } s = lookup("nil"); if(s->def == N) { v.ctype = CTNIL; s->def = nodlit(v); s->def->sym = s; s->origpkg = builtinpkg; } s = lookup("iota"); if(s->def == N) { s->def = nod(OIOTA, N, N); s->def->sym = s; s->origpkg = builtinpkg; } s = lookup("true"); if(s->def == N) { s->def = nodbool(1); s->def->sym = s; s->origpkg = builtinpkg; } s = lookup("false"); if(s->def == N) { s->def = nodbool(0); s->def->sym = s; s->origpkg = builtinpkg; } nodfp = nod(ONAME, N, N); nodfp->type = types[TINT32]; nodfp->xoffset = 0; nodfp->class = PPARAM; nodfp->sym = lookup(".fp"); } struct { int lex; char* name; } lexn[] = { LANDAND, "ANDAND", LANDNOT, "ANDNOT", LASOP, "ASOP", LBREAK, "BREAK", LCASE, "CASE", LCHAN, "CHAN", LCOLAS, "COLAS", LCOMM, "<-", LCONST, "CONST", LCONTINUE, "CONTINUE", LDDD, "...", LDEC, "DEC", LDEFAULT, "DEFAULT", LDEFER, "DEFER", LELSE, "ELSE", LEQ, "EQ", LFALL, "FALL", LFOR, "FOR", LFUNC, "FUNC", LGE, "GE", LGO, "GO", LGOTO, "GOTO", LGT, "GT", LIF, "IF", LIMPORT, "IMPORT", LINC, "INC", LINTERFACE, "INTERFACE", LLE, "LE", LLITERAL, "LITERAL", LLSH, "LSH", LLT, "LT", LMAP, "MAP", LNAME, "NAME", LNE, "NE", LOROR, "OROR", LPACKAGE, "PACKAGE", LRANGE, "RANGE", LRETURN, "RETURN", LRSH, "RSH", LSELECT, "SELECT", LSTRUCT, "STRUCT", LSWITCH, "SWITCH", LTYPE, "TYPE", LVAR, "VAR", }; char* lexname(int lex) { int i; static char buf[100]; for(i=0; i=", "LGT", ">", "LLE", "<=", "LLT", "<", "LLSH", "<<", "LRSH", ">>", "LOROR", "||", "LNE", "!=", // spell out to avoid confusion with punctuation in error messages "';'", "semicolon or newline", "','", "comma", }; static void yytinit(void) { int i, j; extern char *yytname[]; char *s, *t; for(i=0; yytname[i] != nil; i++) { s = yytname[i]; if(strcmp(s, "LLITERAL") == 0) { strcpy(litbuf, "literal"); yytname[i] = litbuf; goto loop; } // apply yytfix if possible for(j=0; js, '/'); if(elem != nil) elem++; else elem = path->s; if(name == nil || strcmp(elem, name) == 0) yyerrorl(lineno, "imported and not used: \"%Z\"", path); else yyerrorl(lineno, "imported and not used: \"%Z\" as %s", path, name); } void mkpackage(char* pkgname) { Sym *s; int32 h; char *p, *q; if(localpkg->name == nil) { if(strcmp(pkgname, "_") == 0) yyerror("invalid package name _"); localpkg->name = pkgname; } else { if(strcmp(pkgname, localpkg->name) != 0) yyerror("package %s; expected %s", pkgname, localpkg->name); for(h=0; hlink) { if(s->def == N || s->pkg != localpkg) continue; if(s->def->op == OPACK) { // throw away top-level package name leftover // from previous file. // leave s->block set to cause redeclaration // errors if a conflicting top-level name is // introduced by a different file. if(!s->def->used && !nsyntaxerrors) pkgnotused(s->def->lineno, s->def->pkg->path, s->name); s->def = N; continue; } if(s->def->sym != s) { // throw away top-level name left over // from previous import . "x" if(s->def->pack != N && !s->def->pack->used && !nsyntaxerrors) { pkgnotused(s->def->pack->lineno, s->def->pack->pkg->path, nil); s->def->pack->used = 1; } s->def = N; continue; } } } } if(outfile == nil) { p = strrchr(infile, '/'); if(ctxt->windows) { q = strrchr(infile, '\\'); if(q > p) p = q; } if(p == nil) p = infile; else p = p+1; snprint(namebuf, sizeof(namebuf), "%s", p); p = strrchr(namebuf, '.'); if(p != nil) *p = 0; outfile = smprint("%s.%c", namebuf, thechar); } } go/src/cmd/gc/md5.c0100644000000000000000000001042512412656737014255 0ustar00rootroot00000000000000// Copyright 2009 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. // 64-bit MD5 (does full MD5 but returns 64 bits only). // Translation of ../../pkg/crypto/md5/md5*.go. #include #include #include "go.h" #include "md5.h" static int md5block(MD5 *dig, uchar *p, int nn); enum { _Chunk = 64 }; #define _Init0 0x67452301 #define _Init1 0xEFCDAB89 #define _Init2 0x98BADCFE #define _Init3 0x10325476 void md5reset(MD5 *d) { d->s[0] = _Init0; d->s[1] = _Init1; d->s[2] = _Init2; d->s[3] = _Init3; d->nx = 0; d->len = 0; } void md5write(MD5 *d, uchar *p, int nn) { int i, n; d->len += nn; if(d->nx > 0) { n = nn; if(n > _Chunk - d->nx) n = _Chunk - d->nx; for(i=0; ix[d->nx+i] = p[i]; d->nx += n; if(d->nx == _Chunk) { md5block(d, d->x, _Chunk); d->nx = 0; } p += n; nn -= n; } n = md5block(d, p, nn); p += n; nn -= n; if(nn > 0) { for(i=0; ix[i] = p[i]; d->nx = nn; } } uint64 md5sum(MD5 *d, uint64 *hi) { uchar tmp[64]; int i; uint64 len; // Padding. Add a 1 bit and 0 bits until 56 bytes mod 64. len = d->len; memset(tmp, 0, sizeof tmp); tmp[0] = 0x80; if(len%64 < 56) md5write(d, tmp, 56-len%64); else md5write(d, tmp, 64+56-len%64); // Length in bits. len <<= 3; for(i=0; i<8; i++) tmp[i] = len>>(8*i); md5write(d, tmp, 8); if(d->nx != 0) fatal("md5sum"); if(hi != nil) *hi = d->s[2] | ((uint64)d->s[3]<<32); return d->s[0] | ((uint64)d->s[1]<<32); } // MD5 block step. // In its own file so that a faster assembly or C version // can be substituted easily. // table[i] = int((1<<32) * abs(sin(i+1 radians))). static uint32 table[64] = { // round 1 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, // round 2 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x2441453, 0xd8a1e681, 0xe7d3fbc8, 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a, // round3 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x4881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665, // round 4 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391, }; static uint32 shift1[] = { 7, 12, 17, 22 }; static uint32 shift2[] = { 5, 9, 14, 20 }; static uint32 shift3[] = { 4, 11, 16, 23 }; static uint32 shift4[] = { 6, 10, 15, 21 }; static int md5block(MD5 *dig, uchar *p, int nn) { uint32 a, b, c, d, aa, bb, cc, dd; int i, j, n; uint32 X[16]; a = dig->s[0]; b = dig->s[1]; c = dig->s[2]; d = dig->s[3]; n = 0; while(nn >= _Chunk) { aa = a; bb = b; cc = c; dd = d; for(i=0; i<16; i++) { j = i*4; X[i] = p[j] | (p[j+1]<<8) | (p[j+2]<<16) | ((uint32)p[j+3]<<24); } // Round 1. for(i=0; i<16; i++) { uint32 x, t, s, f; x = i; t = i; s = shift1[i%4]; f = ((c ^ d) & b) ^ d; a += f + X[x] + table[t]; a = a<>(32-s); a += b; t = d; d = c; c = b; b = a; a = t; } // Round 2. for(i=0; i<16; i++) { uint32 x, t, s, g; x = (1+5*i)%16; t = 16+i; s = shift2[i%4]; g = ((b ^ c) & d) ^ c; a += g + X[x] + table[t]; a = a<>(32-s); a += b; t = d; d = c; c = b; b = a; a = t; } // Round 3. for(i=0; i<16; i++) { uint32 x, t, s, h; x = (5+3*i)%16; t = 32+i; s = shift3[i%4]; h = b ^ c ^ d; a += h + X[x] + table[t]; a = a<>(32-s); a += b; t = d; d = c; c = b; b = a; a = t; } // Round 4. for(i=0; i<16; i++) { uint32 x, s, t, ii; x = (7*i)%16; s = shift4[i%4]; t = 48+i; ii = c ^ (b | ~d); a += ii + X[x] + table[t]; a = a<>(32-s); a += b; t = d; d = c; c = b; b = a; a = t; } a += aa; b += bb; c += cc; d += dd; p += _Chunk; n += _Chunk; nn -= _Chunk; } dig->s[0] = a; dig->s[1] = b; dig->s[2] = c; dig->s[3] = d; return n; } go/src/cmd/gc/md5.h0100644000000000000000000000052112412656734014253 0ustar00rootroot00000000000000// Copyright 2009 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. typedef struct MD5 MD5; struct MD5 { uint32 s[4]; uchar x[64]; int nx; uint64 len; }; void md5reset(MD5*); void md5write(MD5*, uchar*, int); uint64 md5sum(MD5*, uint64*); go/src/cmd/gc/mkbuiltin0100755000000000000000000000164012412656734015344 0ustar00rootroot00000000000000#!/bin/sh # Copyright 2009 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. # Generate builtin.c from $* (runtime.go and unsafe.go). # Run this after changing runtime.go and unsafe.go # or after changing the export metadata format in the compiler. # Either way, you need to have a working compiler binary first. set -e eval $(go tool dist env) if [ -z "$GOCHAR" ]; then echo 'missing $GOCHAR - go tool dist failed?' 1>&2 exit 1 fi GC=${GOCHAR}g gcc -o mkbuiltin1 mkbuiltin1.c rm -f _builtin.c echo "// AUTO-GENERATED by mkbuiltin; DO NOT EDIT" >>_builtin.c for i in runtime unsafe do go tool $GC -A $i.go O=$GOCHAR ./mkbuiltin1 $i >>_builtin.c done # If _builtin.c has changed vs builtin.c, # check in the new change. cmp -s _builtin.c builtin.c || cp _builtin.c builtin.c rm _builtin.c mkbuiltin1 unsafe.$GOCHAR runtime.$GOCHAR go/src/cmd/gc/mkbuiltin1.c0100644000000000000000000000407312412656734015646 0ustar00rootroot00000000000000// Copyright 2009 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 ignore // Compile .go file, import data from .6 file, and generate C string version. #include #include #include #include #include #include void esc(char*); void fatal(char*, ...); int main(int argc, char **argv) { char *name; FILE *fin; char buf[1024], initfunc[1024], *p, *q; if(argc != 2) { fprintf(stderr, "usage: mkbuiltin1 sys\n"); fatal("in file $1.6 s/PACKAGE/$1/"); } name = argv[1]; snprintf(initfunc, sizeof(initfunc), "init_%s_function", name); snprintf(buf, sizeof(buf), "%s.%s", name, getenv("O")); if((fin = fopen(buf, "r")) == NULL) { fatal("open %s: %s", buf, strerror(errno)); } // look for $$ that introduces imports while(fgets(buf, sizeof buf, fin) != NULL) if(strstr(buf, "$$")) goto begin; fatal("did not find beginning of imports"); begin: printf("char *%simport =\n", name); // process imports, stopping at $$ that closes them while(fgets(buf, sizeof buf, fin) != NULL) { buf[strlen(buf)-1] = 0; // chop \n if(strstr(buf, "$$")) goto end; // chop leading white space for(p=buf; *p==' ' || *p == '\t'; p++) ; // cut out decl of init_$1_function - it doesn't exist if(strstr(buf, initfunc)) continue; // sys.go claims to be in package PACKAGE to avoid // conflicts during "6g sys.go". rename PACKAGE to $2. printf("\t\""); while((q = strstr(p, "PACKAGE")) != NULL) { *q = 0; esc(p); // up to the substitution printf("%s", name); // the sub name p = q+7; // continue with rest } esc(p); printf("\\n\"\n"); } fatal("did not find end of imports"); end: printf("\t\"$$\\n\";\n"); return 0; } void esc(char *p) { for(; *p; p++) { if(*p == '\\' || *p == '\"') printf("\\"); putchar(*p); } } void fatal(char *msg, ...) { va_list arg; va_start(arg, msg); fprintf(stderr, "fatal: "); vfprintf(stderr, msg, arg); fprintf(stderr, "\n"); exit(2); } go/src/cmd/gc/mkopnames0100755000000000000000000000104112412656734015333 0ustar00rootroot00000000000000#!/bin/sh # Copyright 2009 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. # Disable colored grep if user has it set to --color=always. # (Arguably user error.) export GREP_OPTIONS="" echo '// auto generated by mkopnames' echo 'static char*' echo 'opnames[] = ' echo '{' sed -n '/OXXX/,/OEND/p' go.h | cpp | sed 's!//.*!!; /^#/d' | tr ' ' '\012' | tr -d ' \011,' | grep . | sort | grep -v '^OEND$' | sed 's/O//; s/.*/ [O&] = "&",/' echo '};' go/src/cmd/gc/mparith1.c0100644000000000000000000002161512412656737015320 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" /// uses arithmetic int mpcmpfixflt(Mpint *a, Mpflt *b) { char buf[500]; Mpflt c; snprint(buf, sizeof(buf), "%B", a); mpatoflt(&c, buf); return mpcmpfltflt(&c, b); } int mpcmpfltfix(Mpflt *a, Mpint *b) { char buf[500]; Mpflt c; snprint(buf, sizeof(buf), "%B", b); mpatoflt(&c, buf); return mpcmpfltflt(a, &c); } int mpcmpfixfix(Mpint *a, Mpint *b) { Mpint c; mpmovefixfix(&c, a); mpsubfixfix(&c, b); return mptestfix(&c); } int mpcmpfixc(Mpint *b, vlong c) { Mpint c1; mpmovecfix(&c1, c); return mpcmpfixfix(b, &c1); } int mpcmpfltflt(Mpflt *a, Mpflt *b) { Mpflt c; mpmovefltflt(&c, a); mpsubfltflt(&c, b); return mptestflt(&c); } int mpcmpfltc(Mpflt *b, double c) { Mpflt a; mpmovecflt(&a, c); return mpcmpfltflt(b, &a); } void mpsubfixfix(Mpint *a, Mpint *b) { mpnegfix(a); mpaddfixfix(a, b, 0); mpnegfix(a); } void mpsubfltflt(Mpflt *a, Mpflt *b) { mpnegflt(a); mpaddfltflt(a, b); mpnegflt(a); } void mpaddcfix(Mpint *a, vlong c) { Mpint b; mpmovecfix(&b, c); mpaddfixfix(a, &b, 0); } void mpaddcflt(Mpflt *a, double c) { Mpflt b; mpmovecflt(&b, c); mpaddfltflt(a, &b); } void mpmulcfix(Mpint *a, vlong c) { Mpint b; mpmovecfix(&b, c); mpmulfixfix(a, &b); } void mpmulcflt(Mpflt *a, double c) { Mpflt b; mpmovecflt(&b, c); mpmulfltflt(a, &b); } void mpdivfixfix(Mpint *a, Mpint *b) { Mpint q, r; mpdivmodfixfix(&q, &r, a, b); mpmovefixfix(a, &q); } void mpmodfixfix(Mpint *a, Mpint *b) { Mpint q, r; mpdivmodfixfix(&q, &r, a, b); mpmovefixfix(a, &r); } void mpcomfix(Mpint *a) { Mpint b; mpmovecfix(&b, 1); mpnegfix(a); mpsubfixfix(a, &b); } void mpmovefixflt(Mpflt *a, Mpint *b) { a->val = *b; a->exp = 0; mpnorm(a); } // convert (truncate) b to a. // return -1 (but still convert) if b was non-integer. static int mpexactfltfix(Mpint *a, Mpflt *b) { Mpflt f; *a = b->val; mpshiftfix(a, b->exp); if(b->exp < 0) { f.val = *a; f.exp = 0; mpnorm(&f); if(mpcmpfltflt(b, &f) != 0) return -1; } return 0; } int mpmovefltfix(Mpint *a, Mpflt *b) { Mpflt f; int i; if(mpexactfltfix(a, b) == 0) return 0; // try rounding down a little f = *b; f.val.a[0] = 0; if(mpexactfltfix(a, &f) == 0) return 0; // try rounding up a little for(i=1; i>1); mpmulfltflt(a, a); if(p & 1) mpmulcflt(a, 10); } static void mphextofix(Mpint *a, char *s, int n) { char *hexdigitp, *end, c; long d; int bit; while(*s == '0') { s++; n--; } // overflow if(4*n > Mpscale*Mpprec) { a->ovf = 1; return; } end = s+n-1; for(hexdigitp=end; hexdigitp>=s; hexdigitp--) { c = *hexdigitp; if(c >= '0' && c <= '9') d = c-'0'; else if(c >= 'A' && c <= 'F') d = c-'A'+10; else d = c-'a'+10; bit = 4*(end - hexdigitp); while(d > 0) { if(d & 1) a->a[bit/Mpscale] |= (long)1 << (bit%Mpscale); bit++; d = d >> 1; } } } // // floating point input // required syntax is [+-]d*[.]d*[e[+-]d*] or [+-]0xH*[e[+-]d*] // void mpatoflt(Mpflt *a, char *as) { Mpflt b; int dp, c, f, ef, ex, eb, base; char *s, *start; while(*as == ' ' || *as == '\t') as++; /* determine base */ s = as; base = -1; while(base == -1) { switch(*s++) { case '-': case '+': break; case '0': if(*s == 'x') base = 16; else base = 10; break; default: base = 10; } } s = as; dp = 0; /* digits after decimal point */ f = 0; /* sign */ ex = 0; /* exponent */ eb = 0; /* binary point */ mpmovecflt(a, 0.0); if(base == 16) { start = nil; for(;;) { c = *s; if(c == '-') { f = 1; s++; } else if(c == '+') { s++; } else if(c == '0' && s[1] == 'x') { s += 2; start = s; } else if((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')) { s++; } else { break; } } if(start == nil) goto bad; mphextofix(&a->val, start, s-start); if(a->val.ovf) goto bad; a->exp = 0; mpnorm(a); } for(;;) { switch(c = *s++) { default: goto bad; case '-': f = 1; case ' ': case '\t': case '+': continue; case '.': if(base == 16) goto bad; dp = 1; continue; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '0': mpmulcflt(a, 10); mpaddcflt(a, c-'0'); if(dp) dp++; continue; case 'P': case 'p': eb = 1; case 'E': case 'e': ex = 0; ef = 0; for(;;) { c = *s++; if(c == '+' || c == ' ' || c == '\t') continue; if(c == '-') { ef = 1; continue; } if(c >= '0' && c <= '9') { ex = ex*10 + (c-'0'); if(ex > 1e8) { yyerror("constant exponent out of range: %s", as); errorexit(); } continue; } break; } if(ef) ex = -ex; case 0: break; } break; } if(eb) { if(dp) goto bad; mpsetexp(a, a->exp+ex); goto out; } if(dp) dp--; if(mpcmpfltc(a, 0.0) != 0) { if(ex >= dp) { mppow10flt(&b, ex-dp); mpmulfltflt(a, &b); } else { // 4 approximates least_upper_bound(log2(10)). if(dp-ex >= (1<<(8*sizeof(dp)-3)) || (short)(4*(dp-ex)) != 4*(dp-ex)) { mpmovecflt(a, 0.0); } else { mppow10flt(&b, dp-ex); mpdivfltflt(a, &b); } } } out: if(f) mpnegflt(a); return; bad: yyerror("constant too large: %s", as); mpmovecflt(a, 0.0); } // // fixed point input // required syntax is [+-][0[x]]d* // void mpatofix(Mpint *a, char *as) { int c, f; char *s, *s0; s = as; f = 0; mpmovecfix(a, 0); c = *s++; switch(c) { case '-': f = 1; case '+': c = *s++; if(c != '0') break; case '0': goto oct; } while(c) { if(c >= '0' && c <= '9') { mpmulcfix(a, 10); mpaddcfix(a, c-'0'); c = *s++; continue; } goto bad; } goto out; oct: c = *s++; if(c == 'x' || c == 'X') goto hex; while(c) { if(c >= '0' && c <= '7') { mpmulcfix(a, 8); mpaddcfix(a, c-'0'); c = *s++; continue; } goto bad; } goto out; hex: s0 = s; c = *s; while(c) { if((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')) { s++; c = *s; continue; } goto bad; } mphextofix(a, s0, s-s0); if(a->ovf) goto bad; out: if(f) mpnegfix(a); return; bad: yyerror("constant too large: %s", as); mpmovecfix(a, 0); } int Bconv(Fmt *fp) { char buf[500], *p; Mpint *xval, q, r, ten, sixteen; int f, digit; xval = va_arg(fp->args, Mpint*); mpmovefixfix(&q, xval); f = 0; if(mptestfix(&q) < 0) { f = 1; mpnegfix(&q); } p = &buf[sizeof(buf)]; *--p = 0; if(fp->flags & FmtSharp) { // Hexadecimal mpmovecfix(&sixteen, 16); for(;;) { mpdivmodfixfix(&q, &r, &q, &sixteen); digit = mpgetfix(&r); if(digit < 10) *--p = digit + '0'; else *--p = digit - 10 + 'A'; if(mptestfix(&q) <= 0) break; } *--p = 'x'; *--p = '0'; } else { // Decimal mpmovecfix(&ten, 10); for(;;) { mpdivmodfixfix(&q, &r, &q, &ten); *--p = mpgetfix(&r) + '0'; if(mptestfix(&q) <= 0) break; } } if(f) *--p = '-'; return fmtstrcpy(fp, p); } int Fconv(Fmt *fp) { char buf[500]; Mpflt *fvp, fv; double d, dexp; int exp; fvp = va_arg(fp->args, Mpflt*); if(fp->flags & FmtSharp) { // alternate form - decimal for error messages. // for well in range, convert to double and use print's %g exp = fvp->exp + sigfig(fvp)*Mpscale; if(-900 < exp && exp < 900) { d = mpgetflt(fvp); if(d >= 0 && (fp->flags & FmtSign)) fmtprint(fp, "+"); return fmtprint(fp, "%g", d, exp, fvp); } // very out of range. compute decimal approximation by hand. // decimal exponent dexp = fvp->exp * 0.301029995663981195; // log_10(2) exp = (int)dexp; // decimal mantissa fv = *fvp; fv.val.neg = 0; fv.exp = 0; d = mpgetflt(&fv); d *= pow(10, dexp-exp); while(d >= 9.99995) { d /= 10; exp++; } if(fvp->val.neg) fmtprint(fp, "-"); else if(fp->flags & FmtSign) fmtprint(fp, "+"); return fmtprint(fp, "%.5fe+%d", d, exp); } if(sigfig(fvp) == 0) { snprint(buf, sizeof(buf), "0p+0"); goto out; } fv = *fvp; while(fv.val.a[0] == 0) { mpshiftfix(&fv.val, -Mpscale); fv.exp += Mpscale; } while((fv.val.a[0]&1) == 0) { mpshiftfix(&fv.val, -1); fv.exp += 1; } if(fv.exp >= 0) { snprint(buf, sizeof(buf), "%#Bp+%d", &fv.val, fv.exp); goto out; } snprint(buf, sizeof(buf), "%#Bp-%d", &fv.val, -fv.exp); out: return fmtstrcpy(fp, buf); } go/src/cmd/gc/mparith2.c0100644000000000000000000002253712412656734015322 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" // // return the significant // words of the argument // static int mplen(Mpint *a) { int i, n; long *a1; n = -1; a1 = &a->a[0]; for(i=0; ia[0]; for(i=0; i= Mpbase) { x -= Mpbase; c = 1; } *a1++ = x; } a->ovf = c; if(a->ovf && !quiet) yyerror("constant shift overflow"); } // // left shift mpint by Mpscale // ignores sign // static void mplshw(Mpint *a, int quiet) { long *a1; int i; a1 = &a->a[Mpprec-1]; if(*a1) { a->ovf = 1; if(!quiet) yyerror("constant shift overflow"); } for(i=1; ia[0] & 1; a1 = &a->a[Mpprec]; for(i=0; i> 1; c = 0; if(x & 1) c = Mpbase; } if(a->neg && lo != 0) mpaddcfix(a, -1); } // // right shift mpint by Mpscale // ignores sign and overflow // static void mprshw(Mpint *a) { long *a1, lo; int i; lo = a->a[0]; a1 = &a->a[0]; for(i=1; ineg && lo != 0) mpaddcfix(a, -1); } // // return the sign of (abs(a)-abs(b)) // static int mpcmp(Mpint *a, Mpint *b) { long x, *a1, *b1; int i; if(a->ovf || b->ovf) { if(nsavederrors+nerrors == 0) yyerror("ovf in cmp"); return 0; } a1 = &a->a[0] + Mpprec; b1 = &b->a[0] + Mpprec; for(i=0; i 0) return +1; if(x < 0) return -1; } return 0; } // // negate a // ignore sign and ovf // static void mpneg(Mpint *a) { long x, *a1; int i, c; a1 = &a->a[0]; c = 0; for(i=0; i= 0) { while(s >= Mpscale) { mplshw(a, 0); s -= Mpscale; } while(s > 0) { mplsh(a, 0); s--; } } else { s = -s; while(s >= Mpscale) { mprshw(a); s -= Mpscale; } while(s > 0) { mprsh(a); s--; } } } /// implements fix arihmetic void mpaddfixfix(Mpint *a, Mpint *b, int quiet) { int i, c; long x, *a1, *b1; if(a->ovf || b->ovf) { if(nsavederrors+nerrors == 0) yyerror("ovf in mpaddxx"); a->ovf = 1; return; } c = 0; a1 = &a->a[0]; b1 = &b->a[0]; if(a->neg != b->neg) goto sub; // perform a+b for(i=0; i= Mpbase) { x -= Mpbase; c = 1; } *a1++ = x; } a->ovf = c; if(a->ovf && !quiet) yyerror("constant addition overflow"); return; sub: // perform a-b switch(mpcmp(a, b)) { case 0: mpmovecfix(a, 0); break; case 1: for(i=0; ineg ^= 1; for(i=0; iovf || b->ovf) { if(nsavederrors+nerrors == 0) yyerror("ovf in mpmulfixfix"); a->ovf = 1; return; } // pick the smaller // to test for bits na = mplen(a); nb = mplen(b); if(na > nb) { mpmovefixfix(&s, a); a1 = &b->a[0]; na = nb; } else { mpmovefixfix(&s, b); a1 = &a->a[0]; } s.neg = 0; mpmovecfix(&q, 0); for(i=0; i>= 1; } } out: q.neg = a->neg ^ b->neg; mpmovefixfix(a, &q); if(a->ovf) yyerror("constant multiplication overflow"); } void mpmulfract(Mpint *a, Mpint *b) { int i, j; long *a1, x; Mpint s, q; if(a->ovf || b->ovf) { if(nsavederrors+nerrors == 0) yyerror("ovf in mpmulflt"); a->ovf = 1; return; } mpmovefixfix(&s, b); a1 = &a->a[Mpprec]; s.neg = 0; mpmovecfix(&q, 0); x = *--a1; if(x != 0) yyerror("mpmulfract not normal"); for(i=0; ineg ^ b->neg; mpmovefixfix(a, &q); if(a->ovf) yyerror("constant multiplication overflow"); } void mporfixfix(Mpint *a, Mpint *b) { int i; long x, *a1, *b1; x = 0; if(a->ovf || b->ovf) { if(nsavederrors+nerrors == 0) yyerror("ovf in mporfixfix"); mpmovecfix(a, 0); a->ovf = 1; return; } if(a->neg) { a->neg = 0; mpneg(a); } if(b->neg) mpneg(b); a1 = &a->a[0]; b1 = &b->a[0]; for(i=0; ineg) mpneg(b); if(x & Mpsign) { a->neg = 1; mpneg(a); } } void mpandfixfix(Mpint *a, Mpint *b) { int i; long x, *a1, *b1; x = 0; if(a->ovf || b->ovf) { if(nsavederrors+nerrors == 0) yyerror("ovf in mpandfixfix"); mpmovecfix(a, 0); a->ovf = 1; return; } if(a->neg) { a->neg = 0; mpneg(a); } if(b->neg) mpneg(b); a1 = &a->a[0]; b1 = &b->a[0]; for(i=0; ineg) mpneg(b); if(x & Mpsign) { a->neg = 1; mpneg(a); } } void mpandnotfixfix(Mpint *a, Mpint *b) { int i; long x, *a1, *b1; x = 0; if(a->ovf || b->ovf) { if(nsavederrors+nerrors == 0) yyerror("ovf in mpandnotfixfix"); mpmovecfix(a, 0); a->ovf = 1; return; } if(a->neg) { a->neg = 0; mpneg(a); } if(b->neg) mpneg(b); a1 = &a->a[0]; b1 = &b->a[0]; for(i=0; ineg) mpneg(b); if(x & Mpsign) { a->neg = 1; mpneg(a); } } void mpxorfixfix(Mpint *a, Mpint *b) { int i; long x, *a1, *b1; x = 0; if(a->ovf || b->ovf) { if(nsavederrors+nerrors == 0) yyerror("ovf in mporfixfix"); mpmovecfix(a, 0); a->ovf = 1; return; } if(a->neg) { a->neg = 0; mpneg(a); } if(b->neg) mpneg(b); a1 = &a->a[0]; b1 = &b->a[0]; for(i=0; ineg) mpneg(b); if(x & Mpsign) { a->neg = 1; mpneg(a); } } void mplshfixfix(Mpint *a, Mpint *b) { vlong s; if(a->ovf || b->ovf) { if(nsavederrors+nerrors == 0) yyerror("ovf in mporfixfix"); mpmovecfix(a, 0); a->ovf = 1; return; } s = mpgetfix(b); if(s < 0 || s >= Mpprec*Mpscale) { yyerror("stupid shift: %lld", s); mpmovecfix(a, 0); return; } mpshiftfix(a, s); } void mprshfixfix(Mpint *a, Mpint *b) { vlong s; if(a->ovf || b->ovf) { if(nsavederrors+nerrors == 0) yyerror("ovf in mprshfixfix"); mpmovecfix(a, 0); a->ovf = 1; return; } s = mpgetfix(b); if(s < 0 || s >= Mpprec*Mpscale) { yyerror("stupid shift: %lld", s); if(a->neg) mpmovecfix(a, -1); else mpmovecfix(a, 0); return; } mpshiftfix(a, -s); } void mpnegfix(Mpint *a) { a->neg ^= 1; } vlong mpgetfix(Mpint *a) { vlong v; if(a->ovf) { if(nsavederrors+nerrors == 0) yyerror("constant overflow"); return 0; } v = (uvlong)a->a[0]; v |= (uvlong)a->a[1] << Mpscale; v |= (uvlong)a->a[2] << (Mpscale+Mpscale); if(a->neg) v = -(uvlong)v; return v; } void mpmovecfix(Mpint *a, vlong c) { int i; long *a1; vlong x; a->neg = 0; a->ovf = 0; x = c; if(x < 0) { a->neg = 1; x = -(uvlong)x; } a1 = &a->a[0]; for(i=0; i>= Mpscale; } } void mpdivmodfixfix(Mpint *q, Mpint *r, Mpint *n, Mpint *d) { int i, ns, ds; ns = n->neg; ds = d->neg; n->neg = 0; d->neg = 0; mpmovefixfix(r, n); mpmovecfix(q, 0); // shift denominator until it // is larger than numerator for(i=0; i 0) break; mplsh(d, 1); } // if it never happens // denominator is probably zero if(i >= Mpprec*Mpscale) { q->ovf = 1; r->ovf = 1; n->neg = ns; d->neg = ds; yyerror("constant division overflow"); return; } // shift denominator back creating // quotient a bit at a time // when done the remaining numerator // will be the remainder for(; i>0; i--) { mplsh(q, 1); mprsh(d); if(mpcmp(d, r) <= 0) { mpaddcfix(q, 1); mpsubfixfix(r, d); } } n->neg = ns; d->neg = ds; r->neg = ns; q->neg = ns^ds; } static int iszero(Mpint *a) { long *a1; int i; a1 = &a->a[0] + Mpprec; for(i=0; ia[Mpprec]; // quotient neg = n.neg ^ d.neg; n.neg = 0; d.neg = 0; for(i=0; ineg = neg; } int mptestfix(Mpint *a) { Mpint b; int r; mpmovecfix(&b, 0); r = mpcmp(a, &b); if(a->neg) { if(r > 0) return -1; if(r < 0) return +1; } return r; } go/src/cmd/gc/mparith3.c0100644000000000000000000001162712412656737015324 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" /* * returns the leading non-zero * word of the number */ int sigfig(Mpflt *a) { int i; for(i=Mpprec-1; i>=0; i--) if(a->val.a[i] != 0) break; //print("sigfig %d %d\n", i-z+1, z); return i+1; } /* * sets the exponent. * a too large exponent is an error. * a too small exponent rounds the number to zero. */ void mpsetexp(Mpflt *a, int exp) { if((short)exp != exp) { if(exp > 0) { yyerror("float constant is too large"); a->exp = 0x7fff; } else { mpmovecflt(a, 0); } } else { a->exp = exp; } } /* * shifts the leading non-zero * word of the number to Mpnorm */ void mpnorm(Mpflt *a) { int s, os; long x; os = sigfig(a); if(os == 0) { // zero a->exp = 0; a->val.neg = 0; return; } // this will normalize to the nearest word x = a->val.a[os-1]; s = (Mpnorm-os) * Mpscale; // further normalize to the nearest bit for(;;) { x <<= 1; if(x & Mpbase) break; s++; if(x == 0) { // this error comes from trying to // convert an Inf or something // where the initial x=0x80000000 s = (Mpnorm-os) * Mpscale; break; } } mpshiftfix(&a->val, s); mpsetexp(a, a->exp-s); } /// implements float arihmetic void mpaddfltflt(Mpflt *a, Mpflt *b) { int sa, sb, s; Mpflt c; if(Mpdebug) print("\n%F + %F", a, b); sa = sigfig(a); if(sa == 0) { mpmovefltflt(a, b); goto out; } sb = sigfig(b); if(sb == 0) goto out; s = a->exp - b->exp; if(s > 0) { // a is larger, shift b right mpmovefltflt(&c, b); mpshiftfix(&c.val, -s); mpaddfixfix(&a->val, &c.val, 0); goto out; } if(s < 0) { // b is larger, shift a right mpshiftfix(&a->val, s); mpsetexp(a, a->exp-s); mpaddfixfix(&a->val, &b->val, 0); goto out; } mpaddfixfix(&a->val, &b->val, 0); out: mpnorm(a); if(Mpdebug) print(" = %F\n\n", a); } void mpmulfltflt(Mpflt *a, Mpflt *b) { int sa, sb; if(Mpdebug) print("%F\n * %F\n", a, b); sa = sigfig(a); if(sa == 0) { // zero a->exp = 0; a->val.neg = 0; return; } sb = sigfig(b); if(sb == 0) { // zero mpmovefltflt(a, b); return; } mpmulfract(&a->val, &b->val); mpsetexp(a, (a->exp + b->exp) + Mpscale*Mpprec - Mpscale - 1); mpnorm(a); if(Mpdebug) print(" = %F\n\n", a); } void mpdivfltflt(Mpflt *a, Mpflt *b) { int sa, sb; Mpflt c; if(Mpdebug) print("%F\n / %F\n", a, b); sb = sigfig(b); if(sb == 0) { // zero and ovfl a->exp = 0; a->val.neg = 0; a->val.ovf = 1; yyerror("constant division by zero"); return; } sa = sigfig(a); if(sa == 0) { // zero a->exp = 0; a->val.neg = 0; return; } // adjust b to top mpmovefltflt(&c, b); mpshiftfix(&c.val, Mpscale); // divide mpdivfract(&a->val, &c.val); mpsetexp(a, (a->exp-c.exp) - Mpscale*(Mpprec-1) + 1); mpnorm(a); if(Mpdebug) print(" = %F\n\n", a); } static double mpgetfltN(Mpflt *a, int prec, int bias) { int s, i, e, minexp; uvlong v; double f; if(a->val.ovf && nsavederrors+nerrors == 0) yyerror("mpgetflt ovf"); s = sigfig(a); if(s == 0) return 0; if(s != Mpnorm) { yyerror("mpgetflt norm"); mpnorm(a); } while((a->val.a[Mpnorm-1] & Mpsign) == 0) { mpshiftfix(&a->val, 1); mpsetexp(a, a->exp-1); // can set 'a' to zero s = sigfig(a); if(s == 0) return 0; } // pick up the mantissa, a rounding bit, and a tie-breaking bit in a uvlong s = prec+2; v = 0; for(i=Mpnorm-1; s>=Mpscale; i--) { v = (v<val.a[i]; s -= Mpscale; } if(s > 0) { v = (v<val.a[i]>>(Mpscale-s)); if((a->val.a[i]&((1<<(Mpscale-s))-1)) != 0) v |= 1; i--; } for(; i >= 0; i--) { if(a->val.a[i] != 0) v |= 1; } // gradual underflow e = Mpnorm*Mpscale + a->exp - prec; minexp = bias+1-prec+1; if(e < minexp) { s = minexp - e; if(s > prec+1) s = prec+1; if((v & ((1<>= s; e = minexp; } // round to even v |= (v&4)>>2; v += v&1; v >>= 2; f = (double)(v); f = ldexp(f, e); if(a->val.neg) f = -f; return f; } double mpgetflt(Mpflt *a) { return mpgetfltN(a, 53, -1023); } double mpgetflt32(Mpflt *a) { return mpgetfltN(a, 24, -127); } void mpmovecflt(Mpflt *a, double c) { int i; double f; long l; if(Mpdebug) print("\nconst %g", c); mpmovecfix(&a->val, 0); a->exp = 0; if(c == 0) goto out; if(c < 0) { a->val.neg = 1; c = -c; } f = frexp(c, &i); a->exp = i; for(i=0; i<10; i++) { f = f*Mpbase; l = floor(f); f = f - l; a->exp -= Mpscale; a->val.a[0] = l; if(f == 0) break; mpshiftfix(&a->val, Mpscale); } out: mpnorm(a); if(Mpdebug) print(" = %F\n", a); } void mpnegflt(Mpflt *a) { a->val.neg ^= 1; } int mptestflt(Mpflt *a) { int s; if(Mpdebug) print("\n%F?", a); s = sigfig(a); if(s != 0) { s = +1; if(a->val.neg) s = -1; } if(Mpdebug) print(" = %d\n", s); return s; } go/src/cmd/gc/obj.c0100644000000000000000000001260612412656737014345 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" /* * architecture-independent object file output */ static void dumpglobls(void); enum { ArhdrSize = 60 }; static void formathdr(char *arhdr, char *name, vlong size) { snprint(arhdr, ArhdrSize, "%-16s%-12d%-6d%-6d%-8o%-10lld`", name, 0, 0, 0, 0644, size); arhdr[ArhdrSize-1] = '\n'; // overwrite \0 written by snprint } void dumpobj(void) { NodeList *externs, *tmp; char arhdr[ArhdrSize]; vlong startobj, size; Sym *zero; bout = Bopen(outfile, OWRITE); if(bout == nil) { flusherrors(); print("can't create %s: %r\n", outfile); errorexit(); } startobj = 0; if(writearchive) { Bwrite(bout, "!\n", 8); memset(arhdr, 0, sizeof arhdr); Bwrite(bout, arhdr, sizeof arhdr); startobj = Boffset(bout); } Bprint(bout, "go object %s %s %s %s\n", getgoos(), getgoarch(), getgoversion(), expstring()); dumpexport(); if(writearchive) { Bflush(bout); size = Boffset(bout) - startobj; if(size&1) Bputc(bout, 0); Bseek(bout, startobj - ArhdrSize, 0); formathdr(arhdr, "__.PKGDEF", size); Bwrite(bout, arhdr, ArhdrSize); Bflush(bout); Bseek(bout, startobj + size + (size&1), 0); memset(arhdr, 0, ArhdrSize); Bwrite(bout, arhdr, ArhdrSize); startobj = Boffset(bout); Bprint(bout, "go object %s %s %s %s\n", getgoos(), getgoarch(), getgoversion(), expstring()); } Bprint(bout, "\n!\n"); externs = nil; if(externdcl != nil) externs = externdcl->end; dumpglobls(); dumptypestructs(); // Dump extra globals. tmp = externdcl; if(externs != nil) externdcl = externs->next; dumpglobls(); externdcl = tmp; zero = pkglookup("zerovalue", runtimepkg); ggloblsym(zero, zerosize, 1, 1); dumpdata(); writeobj(ctxt, bout); if(writearchive) { Bflush(bout); size = Boffset(bout) - startobj; if(size&1) Bputc(bout, 0); Bseek(bout, startobj - ArhdrSize, 0); snprint(namebuf, sizeof namebuf, "_go_.%c", thechar); formathdr(arhdr, namebuf, size); Bwrite(bout, arhdr, ArhdrSize); } Bterm(bout); } static void dumpglobls(void) { Node *n; NodeList *l; // add globals for(l=externdcl; l; l=l->next) { n = l->n; if(n->op != ONAME) continue; if(n->type == T) fatal("external %N nil type\n", n); if(n->class == PFUNC) continue; if(n->sym->pkg != localpkg) continue; dowidth(n->type); ggloblnod(n); } for(l=funcsyms; l; l=l->next) { n = l->n; dsymptr(n->sym, 0, n->sym->def->shortname->sym, 0); ggloblsym(n->sym, widthptr, 1, 1); } // Do not reprocess funcsyms on next dumpglobls call. funcsyms = nil; } void Bputname(Biobuf *b, LSym *s) { Bwrite(b, s->name, strlen(s->name)+1); } LSym* linksym(Sym *s) { char *p; if(s == nil) return nil; if(s->lsym != nil) return s->lsym; if(isblanksym(s)) s->lsym = linklookup(ctxt, "_", 0); else { p = smprint("%s.%s", s->pkg->prefix, s->name); s->lsym = linklookup(ctxt, p, 0); free(p); } return s->lsym; } int duintxx(Sym *s, int off, uint64 v, int wid) { // Update symbol data directly instead of generating a // DATA instruction that liblink will have to interpret later. // This reduces compilation time and memory usage. off = rnd(off, wid); return setuintxx(ctxt, linksym(s), off, v, wid); } int duint8(Sym *s, int off, uint8 v) { return duintxx(s, off, v, 1); } int duint16(Sym *s, int off, uint16 v) { return duintxx(s, off, v, 2); } int duint32(Sym *s, int off, uint32 v) { return duintxx(s, off, v, 4); } int duint64(Sym *s, int off, uint64 v) { return duintxx(s, off, v, 8); } int duintptr(Sym *s, int off, uint64 v) { return duintxx(s, off, v, widthptr); } Sym* stringsym(char *s, int len) { static int gen; Sym *sym; int off, n, m; struct { Strlit lit; char buf[110]; } tmp; Pkg *pkg; if(len > 100) { // huge strings are made static to avoid long names snprint(namebuf, sizeof(namebuf), ".gostring.%d", ++gen); pkg = localpkg; } else { // small strings get named by their contents, // so that multiple modules using the same string // can share it. tmp.lit.len = len; memmove(tmp.lit.s, s, len); tmp.lit.s[len] = '\0'; snprint(namebuf, sizeof(namebuf), "\"%Z\"", &tmp.lit); pkg = gostringpkg; } sym = pkglookup(namebuf, pkg); // SymUniq flag indicates that data is generated already if(sym->flags & SymUniq) return sym; sym->flags |= SymUniq; sym->def = newname(sym); off = 0; // string header off = dsymptr(sym, off, sym, widthptr+widthint); off = duintxx(sym, off, len, widthint); // string data for(n=0; n len-n) m = len-n; off = dsname(sym, off, s+n, m); } off = duint8(sym, off, 0); // terminating NUL for runtime off = (off+widthptr-1)&~(widthptr-1); // round to pointer alignment ggloblsym(sym, off, 1, 1); return sym; } void slicebytes(Node *nam, char *s, int len) { int off, n, m; static int gen; Sym *sym; snprint(namebuf, sizeof(namebuf), ".gobytes.%d", ++gen); sym = pkglookup(namebuf, localpkg); sym->def = newname(sym); off = 0; for(n=0; n len-n) m = len-n; off = dsname(sym, off, s+n, m); } ggloblsym(sym, off, 0, 0); if(nam->op != ONAME) fatal("slicebytes %N", nam); off = nam->xoffset; off = dsymptr(nam->sym, off, sym, 0); off = duintxx(nam->sym, off, len, widthint); duintxx(nam->sym, off, len, widthint); } go/src/cmd/gc/order.c0100644000000000000000000006764312412656737014721 0ustar00rootroot00000000000000// 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. // Rewrite tree to use separate statements to enforce // order of evaluation. Makes walk easier, because it // can (after this runs) reorder at will within an expression. // // Rewrite x op= y into x = x op y. // // Introduce temporaries as needed by runtime routines. // For example, the map runtime routines take the map key // by reference, so make sure all map keys are addressable // by copying them to temporaries as needed. // The same is true for channel operations. // // Arrange that map index expressions only appear in direct // assignments x = m[k] or m[k] = x, never in larger expressions. // // Arrange that receive expressions only appear in direct assignments // x = <-c or as standalone statements <-c, never in larger expressions. // TODO(rsc): The temporary introduction during multiple assignments // should be moved into this file, so that the temporaries can be cleaned // and so that conversions implicit in the OAS2FUNC and OAS2RECV // nodes can be made explicit and then have their temporaries cleaned. // TODO(rsc): Goto and multilevel break/continue can jump over // inserted VARKILL annotations. Work out a way to handle these. // The current implementation is safe, in that it will execute correctly. // But it won't reuse temporaries as aggressively as it might, and // it can result in unnecessary zeroing of those variables in the function // prologue. #include #include #include "go.h" // Order holds state during the ordering process. typedef struct Order Order; struct Order { NodeList *out; // list of generated statements NodeList *temp; // head of stack of temporary variables NodeList *free; // free list of NodeList* structs (for use in temp) }; static void orderstmt(Node*, Order*); static void orderstmtlist(NodeList*, Order*); static void orderblock(NodeList **l); static void orderexpr(Node**, Order*); static void orderexprinplace(Node**, Order*); static void orderexprlist(NodeList*, Order*); static void orderexprlistinplace(NodeList*, Order*); // Order rewrites fn->nbody to apply the ordering constraints // described in the comment at the top of the file. void order(Node *fn) { orderblock(&fn->nbody); } // Ordertemp allocates a new temporary with the given type, // pushes it onto the temp stack, and returns it. // If clear is true, ordertemp emits code to zero the temporary. static Node* ordertemp(Type *t, Order *order, int clear) { Node *var, *a; NodeList *l; var = temp(t); if(clear) { a = nod(OAS, var, N); typecheck(&a, Etop); order->out = list(order->out, a); } if((l = order->free) == nil) l = mal(sizeof *l); order->free = l->next; l->next = order->temp; l->n = var; order->temp = l; return var; } // Ordercopyexpr behaves like ordertemp but also emits // code to initialize the temporary to the value n. // // The clear argument is provided for use when the evaluation // of tmp = n turns into a function call that is passed a pointer // to the temporary as the output space. If the call blocks before // tmp has been written, the garbage collector will still treat the // temporary as live, so we must zero it before entering that call. // Today, this only happens for channel receive operations. // (The other candidate would be map access, but map access // returns a pointer to the result data instead of taking a pointer // to be filled in.) static Node* ordercopyexpr(Node *n, Type *t, Order *order, int clear) { Node *a, *var; var = ordertemp(t, order, clear); a = nod(OAS, var, n); typecheck(&a, Etop); order->out = list(order->out, a); return var; } // Ordercheapexpr returns a cheap version of n. // The definition of cheap is that n is a variable or constant. // If not, ordercheapexpr allocates a new tmp, emits tmp = n, // and then returns tmp. static Node* ordercheapexpr(Node *n, Order *order) { switch(n->op) { case ONAME: case OLITERAL: return n; } return ordercopyexpr(n, n->type, order, 0); } // Ordersafeexpr returns a safe version of n. // The definition of safe is that n can appear multiple times // without violating the semantics of the original program, // and that assigning to the safe version has the same effect // as assigning to the original n. // // The intended use is to apply to x when rewriting x += y into x = x + y. static Node* ordersafeexpr(Node *n, Order *order) { Node *l, *r, *a; switch(n->op) { default: fatal("ordersafeexpr %O", n->op); case ONAME: case OLITERAL: return n; case ODOT: l = ordersafeexpr(n->left, order); if(l == n->left) return n; a = nod(OXXX, N, N); *a = *n; a->orig = a; a->left = l; typecheck(&a, Erv); return a; case ODOTPTR: case OIND: l = ordercheapexpr(n->left, order); if(l == n->left) return n; a = nod(OXXX, N, N); *a = *n; a->orig = a; a->left = l; typecheck(&a, Erv); return a; case OINDEX: case OINDEXMAP: if(isfixedarray(n->left->type)) l = ordersafeexpr(n->left, order); else l = ordercheapexpr(n->left, order); r = ordercheapexpr(n->right, order); if(l == n->left && r == n->right) return n; a = nod(OXXX, N, N); *a = *n; a->orig = a; a->left = l; a->right = r; typecheck(&a, Erv); return a; } } // Istemp reports whether n is a temporary variable. static int istemp(Node *n) { if(n->op != ONAME) return 0; return strncmp(n->sym->name, "autotmp_", 8) == 0; } // Isaddrokay reports whether it is okay to pass n's address to runtime routines. // Taking the address of a variable makes the liveness and optimization analyses // lose track of where the variable's lifetime ends. To avoid hurting the analyses // of ordinary stack variables, those are not 'isaddrokay'. Temporaries are okay, // because we emit explicit VARKILL instructions marking the end of those // temporaries' lifetimes. static int isaddrokay(Node *n) { return islvalue(n) && (n->op != ONAME || n->class == PEXTERN || istemp(n)); } // Orderaddrtemp ensures that *np is okay to pass by address to runtime routines. // If the original argument *np is not okay, orderaddrtemp creates a tmp, emits // tmp = *np, and then sets *np to the tmp variable. static void orderaddrtemp(Node **np, Order *order) { Node *n; n = *np; if(isaddrokay(n)) return; *np = ordercopyexpr(n, n->type, order, 0); } // Marktemp returns the top of the temporary variable stack. static NodeList* marktemp(Order *order) { return order->temp; } // Poptemp pops temporaries off the stack until reaching the mark, // which must have been returned by marktemp. static void poptemp(NodeList *mark, Order *order) { NodeList *l; while((l = order->temp) != mark) { order->temp = l->next; l->next = order->free; order->free = l; } } // Cleantempnopop emits to *out VARKILL instructions for each temporary // above the mark on the temporary stack, but it does not pop them // from the stack. static void cleantempnopop(NodeList *mark, Order *order, NodeList **out) { NodeList *l; Node *kill; for(l=order->temp; l != mark; l=l->next) { kill = nod(OVARKILL, l->n, N); typecheck(&kill, Etop); *out = list(*out, kill); } } // Cleantemp emits VARKILL instructions for each temporary above the // mark on the temporary stack and removes them from the stack. static void cleantemp(NodeList *top, Order *order) { cleantempnopop(top, order, &order->out); poptemp(top, order); } // Orderstmtlist orders each of the statements in the list. static void orderstmtlist(NodeList *l, Order *order) { for(; l; l=l->next) orderstmt(l->n, order); } // Orderblock orders the block of statements *l onto a new list, // and then replaces *l with that list. static void orderblock(NodeList **l) { Order order; NodeList *mark; memset(&order, 0, sizeof order); mark = marktemp(&order); orderstmtlist(*l, &order); cleantemp(mark, &order); *l = order.out; } // Orderexprinplace orders the side effects in *np and // leaves them as the init list of the final *np. static void orderexprinplace(Node **np, Order *outer) { Node *n; NodeList **lp; Order order; n = *np; memset(&order, 0, sizeof order); orderexpr(&n, &order); addinit(&n, order.out); // insert new temporaries from order // at head of outer list. lp = &order.temp; while(*lp != nil) lp = &(*lp)->next; *lp = outer->temp; outer->temp = order.temp; *np = n; } // Orderstmtinplace orders the side effects of the single statement *np // and replaces it with the resulting statement list. static void orderstmtinplace(Node **np) { Node *n; Order order; NodeList *mark; n = *np; memset(&order, 0, sizeof order); mark = marktemp(&order); orderstmt(n, &order); cleantemp(mark, &order); *np = liststmt(order.out); } // Orderinit moves n's init list to order->out. static void orderinit(Node *n, Order *order) { orderstmtlist(n->ninit, order); n->ninit = nil; } // Ismulticall reports whether the list l is f() for a multi-value function. // Such an f() could appear as the lone argument to a multi-arg function. static int ismulticall(NodeList *l) { Node *n; // one arg only if(l == nil || l->next != nil) return 0; n = l->n; // must be call switch(n->op) { default: return 0; case OCALLFUNC: case OCALLMETH: case OCALLINTER: break; } // call must return multiple values return n->left->type->outtuple > 1; } // Copyret emits t1, t2, ... = n, where n is a function call, // and then returns the list t1, t2, .... static NodeList* copyret(Node *n, Order *order) { Type *t; Node *tmp, *as; NodeList *l1, *l2; Iter tl; if(n->type->etype != TSTRUCT || !n->type->funarg) fatal("copyret %T %d", n->type, n->left->type->outtuple); l1 = nil; l2 = nil; for(t=structfirst(&tl, &n->type); t; t=structnext(&tl)) { tmp = temp(t->type); l1 = list(l1, tmp); l2 = list(l2, tmp); } as = nod(OAS2, N, N); as->list = l1; as->rlist = list1(n); typecheck(&as, Etop); orderstmt(as, order); return l2; } // Ordercallargs orders the list of call arguments *l. static void ordercallargs(NodeList **l, Order *order) { if(ismulticall(*l)) { // return f() where f() is multiple values. *l = copyret((*l)->n, order); } else { orderexprlist(*l, order); } } // Ordercall orders the call expression n. // n->op is OCALLMETH/OCALLFUNC/OCALLINTER or a builtin like OCOPY. static void ordercall(Node *n, Order *order) { orderexpr(&n->left, order); orderexpr(&n->right, order); // ODDDARG temp ordercallargs(&n->list, order); } // Ordermapassign appends n to order->out, introducing temporaries // to make sure that all map assignments have the form m[k] = x, // where x is adressable. // (Orderexpr has already been called on n, so we know k is addressable.) // // If n is m[k] = x where x is not addressable, the rewrite is: // tmp = x // m[k] = tmp // // If n is the multiple assignment form ..., m[k], ... = ..., the rewrite is // t1 = m // t2 = k // ...., t3, ... = x // t1[t2] = t3 // // The temporaries t1, t2 are needed in case the ... being assigned // contain m or k. They are usually unnecessary, but in the unnecessary // cases they are also typically registerizable, so not much harm done. // And this only applies to the multiple-assignment form. // We could do a more precise analysis if needed, like in walk.c. static void ordermapassign(Node *n, Order *order) { Node *m, *a; NodeList *l; NodeList *post; switch(n->op) { default: fatal("ordermapassign %O", n->op); case OAS: order->out = list(order->out, n); if(n->left->op == OINDEXMAP && !isaddrokay(n->right)) { m = n->left; n->left = ordertemp(m->type, order, 0); a = nod(OAS, m, n->left); typecheck(&a, Etop); order->out = list(order->out, a); } break; case OAS2: case OAS2DOTTYPE: case OAS2MAPR: case OAS2FUNC: post = nil; for(l=n->list; l != nil; l=l->next) { if(l->n->op == OINDEXMAP) { m = l->n; if(!istemp(m->left)) m->left = ordercopyexpr(m->left, m->left->type, order, 0); if(!istemp(m->right)) m->right = ordercopyexpr(m->right, m->right->type, order, 0); l->n = ordertemp(m->type, order, 0); a = nod(OAS, m, l->n); typecheck(&a, Etop); post = list(post, a); } } order->out = list(order->out, n); order->out = concat(order->out, post); break; } } // Orderstmt orders the statement n, appending to order->out. // Temporaries created during the statement are cleaned // up using VARKILL instructions as possible. static void orderstmt(Node *n, Order *order) { int lno; NodeList *l, *t, *t1; Node *r, *tmp1, *tmp2, **np; Type *ch; if(n == N) return; lno = setlineno(n); orderinit(n, order); switch(n->op) { default: fatal("orderstmt %O", n->op); case OVARKILL: order->out = list(order->out, n); break; case OAS: case OAS2: case OAS2DOTTYPE: case OCLOSE: case OCOPY: case OPRINT: case OPRINTN: case ORECOVER: case ORECV: t = marktemp(order); orderexpr(&n->left, order); orderexpr(&n->right, order); orderexprlist(n->list, order); orderexprlist(n->rlist, order); switch(n->op) { case OAS: case OAS2: case OAS2DOTTYPE: ordermapassign(n, order); break; default: order->out = list(order->out, n); break; } cleantemp(t, order); break; case OASOP: // Special: rewrite l op= r into l = l op r. // This simplies quite a few operations; // most important is that it lets us separate // out map read from map write when l is // a map index expression. t = marktemp(order); orderexpr(&n->left, order); n->left = ordersafeexpr(n->left, order); tmp1 = treecopy(n->left); if(tmp1->op == OINDEXMAP) tmp1->etype = 0; // now an rvalue not an lvalue tmp1 = ordercopyexpr(tmp1, n->left->type, order, 0); n->right = nod(n->etype, tmp1, n->right); typecheck(&n->right, Erv); orderexpr(&n->right, order); n->etype = 0; n->op = OAS; ordermapassign(n, order); cleantemp(t, order); break; case OAS2MAPR: // Special: make sure key is addressable, // and make sure OINDEXMAP is not copied out. t = marktemp(order); orderexprlist(n->list, order); r = n->rlist->n; orderexpr(&r->left, order); orderexpr(&r->right, order); // See case OINDEXMAP below. if(r->right->op == OARRAYBYTESTR) r->right->op = OARRAYBYTESTRTMP; orderaddrtemp(&r->right, order); ordermapassign(n, order); cleantemp(t, order); break; case OAS2FUNC: // Special: avoid copy of func call n->rlist->n. t = marktemp(order); orderexprlist(n->list, order); ordercall(n->rlist->n, order); ordermapassign(n, order); cleantemp(t, order); break; case OAS2RECV: // Special: avoid copy of receive. // Use temporary variables to hold result, // so that chanrecv can take address of temporary. t = marktemp(order); orderexprlist(n->list, order); orderexpr(&n->rlist->n->left, order); // arg to recv ch = n->rlist->n->left->type; tmp1 = ordertemp(ch->type, order, haspointers(ch->type)); tmp2 = ordertemp(types[TBOOL], order, 0); order->out = list(order->out, n); r = nod(OAS, n->list->n, tmp1); typecheck(&r, Etop); ordermapassign(r, order); r = nod(OAS, n->list->next->n, tmp2); typecheck(&r, Etop); ordermapassign(r, order); n->list = list(list1(tmp1), tmp2); cleantemp(t, order); break; case OBLOCK: case OEMPTY: // Special: does not save n onto out. orderstmtlist(n->list, order); break; case OBREAK: case OCONTINUE: case ODCL: case ODCLCONST: case ODCLTYPE: case OFALL: case OXFALL: case OGOTO: case OLABEL: case ORETJMP: // Special: n->left is not an expression; save as is. order->out = list(order->out, n); break; case OCALLFUNC: case OCALLINTER: case OCALLMETH: // Special: handle call arguments. t = marktemp(order); ordercall(n, order); order->out = list(order->out, n); cleantemp(t, order); break; case ODEFER: case OPROC: // Special: order arguments to inner call but not call itself. t = marktemp(order); switch(n->left->op) { case ODELETE: // Delete will take the address of the key. // Copy key into new temp and do not clean it // (it persists beyond the statement). orderexprlist(n->left->list, order); t1 = marktemp(order); np = &n->left->list->next->n; // map key *np = ordercopyexpr(*np, (*np)->type, order, 0); poptemp(t1, order); break; default: ordercall(n->left, order); break; } order->out = list(order->out, n); cleantemp(t, order); break; case ODELETE: t = marktemp(order); orderexpr(&n->list->n, order); orderexpr(&n->list->next->n, order); orderaddrtemp(&n->list->next->n, order); // map key order->out = list(order->out, n); cleantemp(t, order); break; case OFOR: // Clean temporaries from condition evaluation at // beginning of loop body and after for statement. t = marktemp(order); orderexprinplace(&n->ntest, order); l = nil; cleantempnopop(t, order, &l); n->nbody = concat(l, n->nbody); orderblock(&n->nbody); orderstmtinplace(&n->nincr); order->out = list(order->out, n); cleantemp(t, order); break; case OIF: // Clean temporaries from condition at // beginning of both branches. t = marktemp(order); orderexprinplace(&n->ntest, order); l = nil; cleantempnopop(t, order, &l); n->nbody = concat(l, n->nbody); l = nil; cleantempnopop(t, order, &l); n->nelse = concat(l, n->nelse); poptemp(t, order); orderblock(&n->nbody); orderblock(&n->nelse); order->out = list(order->out, n); break; case OPANIC: // Special: argument will be converted to interface using convT2E // so make sure it is an addressable temporary. t = marktemp(order); orderexpr(&n->left, order); if(!isinter(n->left->type)) orderaddrtemp(&n->left, order); order->out = list(order->out, n); cleantemp(t, order); break; case ORANGE: // n->right is the expression being ranged over. // order it, and then make a copy if we need one. // We almost always do, to ensure that we don't // see any value changes made during the loop. // Usually the copy is cheap (e.g., array pointer, chan, slice, string are all tiny). // The exception is ranging over an array value (not a slice, not a pointer to array), // which must make a copy to avoid seeing updates made during // the range body. Ranging over an array value is uncommon though. t = marktemp(order); orderexpr(&n->right, order); switch(n->type->etype) { default: fatal("orderstmt range %T", n->type); case TARRAY: if(count(n->list) < 2 || isblank(n->list->next->n)) { // for i := range x will only use x once, to compute len(x). // No need to copy it. break; } // fall through case TCHAN: case TSTRING: // chan, string, slice, array ranges use value multiple times. // make copy. r = n->right; if(r->type->etype == TSTRING && r->type != types[TSTRING]) { r = nod(OCONV, r, N); r->type = types[TSTRING]; typecheck(&r, Erv); } n->right = ordercopyexpr(r, r->type, order, 0); break; case TMAP: // copy the map value in case it is a map literal. // TODO(rsc): Make tmp = literal expressions reuse tmp. // For maps tmp is just one word so it hardly matters. r = n->right; n->right = ordercopyexpr(r, r->type, order, 0); // n->alloc is the temp for the iterator. n->alloc = ordertemp(types[TUINT8], order, 1); break; } for(l=n->list; l; l=l->next) orderexprinplace(&l->n, order); orderblock(&n->nbody); order->out = list(order->out, n); cleantemp(t, order); break; case ORETURN: ordercallargs(&n->list, order); order->out = list(order->out, n); break; case OSELECT: // Special: clean case temporaries in each block entry. // Select must enter one of its blocks, so there is no // need for a cleaning at the end. t = marktemp(order); for(l=n->list; l; l=l->next) { if(l->n->op != OXCASE) fatal("order select case %O", l->n->op); r = l->n->left; setlineno(l->n); // Append any new body prologue to ninit. // The next loop will insert ninit into nbody. if(l->n->ninit != nil) fatal("order select ninit"); if(r != nil) { switch(r->op) { default: yyerror("unknown op in select %O", r->op); dump("select case", r); break; case OSELRECV: case OSELRECV2: // If this is case x := <-ch or case x, y := <-ch, the case has // the ODCL nodes to declare x and y. We want to delay that // declaration (and possible allocation) until inside the case body. // Delete the ODCL nodes here and recreate them inside the body below. if(r->colas) { t = r->ninit; if(t != nil && t->n->op == ODCL && t->n->left == r->left) t = t->next; if(t != nil && t->n->op == ODCL && t->n->left == r->ntest) t = t->next; if(t == nil) r->ninit = nil; } if(r->ninit != nil) { yyerror("ninit on select recv"); dumplist("ninit", r->ninit); } // case x = <-c // case x, ok = <-c // r->left is x, r->ntest is ok, r->right is ORECV, r->right->left is c. // r->left == N means 'case <-c'. // c is always evaluated; x and ok are only evaluated when assigned. orderexpr(&r->right->left, order); // Introduce temporary for receive and move actual copy into case body. // avoids problems with target being addressed, as usual. // NOTE: If we wanted to be clever, we could arrange for just one // temporary per distinct type, sharing the temp among all receives // with that temp. Similarly one ok bool could be shared among all // the x,ok receives. Not worth doing until there's a clear need. if(r->left != N && isblank(r->left)) r->left = N; if(r->left != N) { // use channel element type for temporary to avoid conversions, // such as in case interfacevalue = <-intchan. // the conversion happens in the OAS instead. tmp1 = r->left; if(r->colas) { tmp2 = nod(ODCL, tmp1, N); typecheck(&tmp2, Etop); l->n->ninit = list(l->n->ninit, tmp2); } r->left = ordertemp(r->right->left->type->type, order, haspointers(r->right->left->type->type)); tmp2 = nod(OAS, tmp1, r->left); typecheck(&tmp2, Etop); l->n->ninit = list(l->n->ninit, tmp2); } if(r->ntest != N && isblank(r->ntest)) r->ntest = N; if(r->ntest != N) { tmp1 = r->ntest; if(r->colas) { tmp2 = nod(ODCL, tmp1, N); typecheck(&tmp2, Etop); l->n->ninit = list(l->n->ninit, tmp2); } r->ntest = ordertemp(tmp1->type, order, 0); tmp2 = nod(OAS, tmp1, r->ntest); typecheck(&tmp2, Etop); l->n->ninit = list(l->n->ninit, tmp2); } orderblock(&l->n->ninit); break; case OSEND: if(r->ninit != nil) { yyerror("ninit on select send"); dumplist("ninit", r->ninit); } // case c <- x // r->left is c, r->right is x, both are always evaluated. orderexpr(&r->left, order); if(!istemp(r->left)) r->left = ordercopyexpr(r->left, r->left->type, order, 0); orderexpr(&r->right, order); if(!istemp(r->right)) r->right = ordercopyexpr(r->right, r->right->type, order, 0); break; } } orderblock(&l->n->nbody); } // Now that we have accumulated all the temporaries, clean them. // Also insert any ninit queued during the previous loop. // (The temporary cleaning must follow that ninit work.) for(l=n->list; l; l=l->next) { cleantempnopop(t, order, &l->n->ninit); l->n->nbody = concat(l->n->ninit, l->n->nbody); l->n->ninit = nil; } order->out = list(order->out, n); poptemp(t, order); break; case OSEND: // Special: value being sent is passed as a pointer; make it addressable. t = marktemp(order); orderexpr(&n->left, order); orderexpr(&n->right, order); orderaddrtemp(&n->right, order); order->out = list(order->out, n); cleantemp(t, order); break; case OSWITCH: // TODO(rsc): Clean temporaries more aggressively. // Note that because walkswitch will rewrite some of the // switch into a binary search, this is not as easy as it looks. // (If we ran that code here we could invoke orderstmt on // the if-else chain instead.) // For now just clean all the temporaries at the end. // In practice that's fine. t = marktemp(order); orderexpr(&n->ntest, order); for(l=n->list; l; l=l->next) { if(l->n->op != OXCASE) fatal("order switch case %O", l->n->op); orderexprlistinplace(l->n->list, order); orderblock(&l->n->nbody); } order->out = list(order->out, n); cleantemp(t, order); break; } lineno = lno; } // Orderexprlist orders the expression list l into order. static void orderexprlist(NodeList *l, Order *order) { for(; l; l=l->next) orderexpr(&l->n, order); } // Orderexprlist orders the expression list l but saves // the side effects on the individual expression ninit lists. static void orderexprlistinplace(NodeList *l, Order *order) { for(; l; l=l->next) orderexprinplace(&l->n, order); } // Orderexpr orders a single expression, appending side // effects to order->out as needed. static void orderexpr(Node **np, Order *order) { Node *n; NodeList *mark, *l; Type *t; int lno; n = *np; if(n == N) return; lno = setlineno(n); orderinit(n, order); switch(n->op) { default: orderexpr(&n->left, order); orderexpr(&n->right, order); orderexprlist(n->list, order); orderexprlist(n->rlist, order); break; case OADDSTR: // Addition of strings turns into a function call. // Allocate a temporary to hold the strings. // Fewer than 5 strings use direct runtime helpers. orderexprlist(n->list, order); if(count(n->list) > 5) { t = typ(TARRAY); t->bound = count(n->list); t->type = types[TSTRING]; n->alloc = ordertemp(t, order, 0); } break; case OINDEXMAP: // key must be addressable orderexpr(&n->left, order); orderexpr(&n->right, order); // For x = m[string(k)] where k is []byte, the allocation of // backing bytes for the string can be avoided by reusing // the []byte backing array. This is a special case that it // would be nice to handle more generally, but because // there are no []byte-keyed maps, this specific case comes // up in important cases in practice. See issue 3512. // Nothing can change the []byte we are not copying before // the map index, because the map access is going to // be forced to happen immediately following this // conversion (by the ordercopyexpr a few lines below). if(n->etype == 0 && n->right->op == OARRAYBYTESTR) n->right->op = OARRAYBYTESTRTMP; orderaddrtemp(&n->right, order); if(n->etype == 0) { // use of value (not being assigned); // make copy in temporary. n = ordercopyexpr(n, n->type, order, 0); } break; case OCONVIFACE: // concrete type (not interface) argument must be addressable // temporary to pass to runtime. orderexpr(&n->left, order); if(!isinter(n->left->type)) orderaddrtemp(&n->left, order); break; case OANDAND: case OOROR: mark = marktemp(order); orderexpr(&n->left, order); // Clean temporaries from first branch at beginning of second. // Leave them on the stack so that they can be killed in the outer // context in case the short circuit is taken. l = nil; cleantempnopop(mark, order, &l); n->right->ninit = concat(l, n->right->ninit); orderexprinplace(&n->right, order); break; case OCALLFUNC: case OCALLMETH: case OCALLINTER: case OAPPEND: case OCOMPLEX: ordercall(n, order); n = ordercopyexpr(n, n->type, order, 0); break; case OCLOSURE: if(n->noescape && n->cvars != nil) n->alloc = ordertemp(types[TUINT8], order, 0); // walk will fill in correct type break; case OARRAYLIT: case OCALLPART: orderexpr(&n->left, order); orderexpr(&n->right, order); orderexprlist(n->list, order); orderexprlist(n->rlist, order); if(n->noescape) n->alloc = ordertemp(types[TUINT8], order, 0); // walk will fill in correct type break; case ODDDARG: if(n->noescape) { // The ddd argument does not live beyond the call it is created for. // Allocate a temporary that will be cleaned up when this statement // completes. We could be more aggressive and try to arrange for it // to be cleaned up when the call completes. n->alloc = ordertemp(n->type->type, order, 0); } break; case ORECV: orderexpr(&n->left, order); n = ordercopyexpr(n, n->type, order, 1); break; } lineno = lno; *np = n; } go/src/cmd/gc/pgen.c0100644000000000000000000002661112412656737014525 0ustar00rootroot00000000000000// Copyright 2011 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. // "Portable" code generation. // Compiled separately for 5g, 6g, and 8g, so allowed to use gg.h, opt.h. // Must code to the intersection of the three back ends. #include #include #include "md5.h" #include "gg.h" #include "opt.h" #include "../../pkg/runtime/funcdata.h" static void allocauto(Prog* p); static Sym* makefuncdatasym(char *namefmt, int64 funcdatakind) { Node nod; Node *pnod; Sym *sym; static int32 nsym; snprint(namebuf, sizeof(namebuf), namefmt, nsym++); sym = lookup(namebuf); pnod = newname(sym); pnod->class = PEXTERN; nodconst(&nod, types[TINT32], funcdatakind); gins(AFUNCDATA, &nod, pnod); return sym; } // gvardef inserts a VARDEF for n into the instruction stream. // VARDEF is an annotation for the liveness analysis, marking a place // where a complete initialization (definition) of a variable begins. // Since the liveness analysis can see initialization of single-word // variables quite easy, gvardef is usually only called for multi-word // or 'fat' variables, those satisfying isfat(n->type). // However, gvardef is also called when a non-fat variable is initialized // via a block move; the only time this happens is when you have // return f() // for a function with multiple return values exactly matching the return // types of the current function. // // A 'VARDEF x' annotation in the instruction stream tells the liveness // analysis to behave as though the variable x is being initialized at that // point in the instruction stream. The VARDEF must appear before the // actual (multi-instruction) initialization, and it must also appear after // any uses of the previous value, if any. For example, if compiling: // // x = x[1:] // // it is important to generate code like: // // base, len, cap = pieces of x[1:] // VARDEF x // x = {base, len, cap} // // If instead the generated code looked like: // // VARDEF x // base, len, cap = pieces of x[1:] // x = {base, len, cap} // // then the liveness analysis would decide the previous value of x was // unnecessary even though it is about to be used by the x[1:] computation. // Similarly, if the generated code looked like: // // base, len, cap = pieces of x[1:] // x = {base, len, cap} // VARDEF x // // then the liveness analysis will not preserve the new value of x, because // the VARDEF appears to have "overwritten" it. // // VARDEF is a bit of a kludge to work around the fact that the instruction // stream is working on single-word values but the liveness analysis // wants to work on individual variables, which might be multi-word // aggregates. It might make sense at some point to look into letting // the liveness analysis work on single-word values as well, although // there are complications around interface values, slices, and strings, // all of which cannot be treated as individual words. // // VARKILL is the opposite of VARDEF: it marks a value as no longer needed, // even if its address has been taken. That is, a VARKILL annotation asserts // that its argument is certainly dead, for use when the liveness analysis // would not otherwise be able to deduce that fact. static void gvardefx(Node *n, int as) { if(n == N) fatal("gvardef nil"); if(n->op != ONAME) { yyerror("gvardef %#O; %N", n->op, n); return; } switch(n->class) { case PAUTO: case PPARAM: case PPARAMOUT: gins(as, N, n); } } void gvardef(Node *n) { gvardefx(n, AVARDEF); } void gvarkill(Node *n) { gvardefx(n, AVARKILL); } static void removevardef(Prog *firstp) { Prog *p; for(p = firstp; p != P; p = p->link) { while(p->link != P && (p->link->as == AVARDEF || p->link->as == AVARKILL)) p->link = p->link->link; if(p->to.type == D_BRANCH) while(p->to.u.branch != P && (p->to.u.branch->as == AVARDEF || p->to.u.branch->as == AVARKILL)) p->to.u.branch = p->to.u.branch->link; } } static void gcsymdup(Sym *s) { LSym *ls; uint64 lo, hi; ls = linksym(s); if(ls->nr > 0) fatal("cannot rosymdup %s with relocations", ls->name); MD5 d; md5reset(&d); md5write(&d, ls->p, ls->np); lo = md5sum(&d, &hi); ls->name = smprint("gclocals·%016llux%016llux", lo, hi); ls->dupok = 1; } void compile(Node *fn) { Plist *pl; Node nod1, *n; Prog *ptxt, *p; int32 lno; Type *t; Iter save; vlong oldstksize; NodeList *l; Sym *gcargs; Sym *gclocals; if(newproc == N) { newproc = sysfunc("newproc"); deferproc = sysfunc("deferproc"); deferreturn = sysfunc("deferreturn"); panicindex = sysfunc("panicindex"); panicslice = sysfunc("panicslice"); throwreturn = sysfunc("throwreturn"); } lno = setlineno(fn); if(fn->nbody == nil) { if(pure_go || strncmp(fn->nname->sym->name, "init·", 6) == 0) yyerror("missing function body", fn); goto ret; } saveerrors(); // set up domain for labels clearlabels(); curfn = fn; dowidth(curfn->type); if(curfn->type->outnamed) { // add clearing of the output parameters t = structfirst(&save, getoutarg(curfn->type)); while(t != T) { if(t->nname != N) { n = nod(OAS, t->nname, N); typecheck(&n, Etop); curfn->nbody = concat(list1(n), curfn->nbody); } t = structnext(&save); } } order(curfn); if(nerrors != 0) goto ret; hasdefer = 0; walk(curfn); if(nerrors != 0) goto ret; if(flag_race) racewalk(curfn); if(nerrors != 0) goto ret; continpc = P; breakpc = P; pl = newplist(); pl->name = linksym(curfn->nname->sym); setlineno(curfn); nodconst(&nod1, types[TINT32], 0); ptxt = gins(ATEXT, isblank(curfn->nname) ? N : curfn->nname, &nod1); if(fn->dupok) ptxt->TEXTFLAG |= DUPOK; if(fn->wrapper) ptxt->TEXTFLAG |= WRAPPER; if(fn->needctxt) ptxt->TEXTFLAG |= NEEDCTXT; // Clumsy but important. // See test/recover.go for test cases and src/pkg/reflect/value.go // for the actual functions being considered. if(myimportpath != nil && strcmp(myimportpath, "reflect") == 0) { if(strcmp(curfn->nname->sym->name, "callReflect") == 0 || strcmp(curfn->nname->sym->name, "callMethod") == 0) ptxt->TEXTFLAG |= WRAPPER; } afunclit(&ptxt->from, curfn->nname); ginit(); gcargs = makefuncdatasym("gcargs·%d", FUNCDATA_ArgsPointerMaps); gclocals = makefuncdatasym("gclocals·%d", FUNCDATA_LocalsPointerMaps); for(t=curfn->paramfld; t; t=t->down) gtrack(tracksym(t->type)); for(l=fn->dcl; l; l=l->next) { n = l->n; if(n->op != ONAME) // might be OTYPE or OLITERAL continue; switch(n->class) { case PAUTO: case PPARAM: case PPARAMOUT: nodconst(&nod1, types[TUINTPTR], l->n->type->width); p = gins(ATYPE, l->n, &nod1); p->from.gotype = linksym(ngotype(l->n)); break; } } genlist(curfn->enter); genlist(curfn->nbody); gclean(); checklabels(); if(nerrors != 0) goto ret; if(curfn->endlineno) lineno = curfn->endlineno; if(curfn->type->outtuple != 0) ginscall(throwreturn, 0); ginit(); // TODO: Determine when the final cgen_ret can be omitted. Perhaps always? cgen_ret(nil); if(hasdefer) { // deferreturn pretends to have one uintptr argument. // Reserve space for it so stack scanner is happy. if(maxarg < widthptr) maxarg = widthptr; } gclean(); if(nerrors != 0) goto ret; pc->as = ARET; // overwrite AEND pc->lineno = lineno; fixjmp(ptxt); if(!debug['N'] || debug['R'] || debug['P']) { regopt(ptxt); nilopt(ptxt); } expandchecks(ptxt); oldstksize = stksize; allocauto(ptxt); if(0) print("allocauto: %lld to %lld\n", oldstksize, (vlong)stksize); USED(oldstksize); setlineno(curfn); if((int64)stksize+maxarg > (1ULL<<31)) { yyerror("stack frame too large (>2GB)"); goto ret; } // Emit garbage collection symbols. liveness(curfn, ptxt, gcargs, gclocals); gcsymdup(gcargs); gcsymdup(gclocals); defframe(ptxt); if(0) frame(0); // Remove leftover instrumentation from the instruction stream. removevardef(ptxt); ret: lineno = lno; } // Sort the list of stack variables. Autos after anything else, // within autos, unused after used, within used, things with // pointers first, zeroed things first, and then decreasing size. // Because autos are laid out in decreasing addresses // on the stack, pointers first, zeroed things first and decreasing size // really means, in memory, things with pointers needing zeroing at // the top of the stack and increasing in size. // Non-autos sort on offset. static int cmpstackvar(Node *a, Node *b) { int ap, bp; if (a->class != b->class) return (a->class == PAUTO) ? +1 : -1; if (a->class != PAUTO) { if (a->xoffset < b->xoffset) return -1; if (a->xoffset > b->xoffset) return +1; return 0; } if ((a->used == 0) != (b->used == 0)) return b->used - a->used; ap = haspointers(a->type); bp = haspointers(b->type); if(ap != bp) return bp - ap; ap = a->needzero; bp = b->needzero; if(ap != bp) return bp - ap; if(a->type->width < b->type->width) return +1; if(a->type->width > b->type->width) return -1; return strcmp(a->sym->name, b->sym->name); } // TODO(lvd) find out where the PAUTO/OLITERAL nodes come from. static void allocauto(Prog* ptxt) { NodeList *ll; Node* n; vlong w; stksize = 0; stkptrsize = 0; if(curfn->dcl == nil) return; // Mark the PAUTO's unused. for(ll=curfn->dcl; ll != nil; ll=ll->next) if (ll->n->class == PAUTO) ll->n->used = 0; markautoused(ptxt); listsort(&curfn->dcl, cmpstackvar); // Unused autos are at the end, chop 'em off. ll = curfn->dcl; n = ll->n; if (n->class == PAUTO && n->op == ONAME && !n->used) { // No locals used at all curfn->dcl = nil; fixautoused(ptxt); return; } for(ll = curfn->dcl; ll->next != nil; ll=ll->next) { n = ll->next->n; if (n->class == PAUTO && n->op == ONAME && !n->used) { ll->next = nil; curfn->dcl->end = ll; break; } } // Reassign stack offsets of the locals that are still there. for(ll = curfn->dcl; ll != nil; ll=ll->next) { n = ll->n; if (n->class != PAUTO || n->op != ONAME) continue; dowidth(n->type); w = n->type->width; if(w >= MAXWIDTH || w < 0) fatal("bad width"); stksize += w; stksize = rnd(stksize, n->type->align); if(haspointers(n->type)) stkptrsize = stksize; if(thechar == '5') stksize = rnd(stksize, widthptr); if(stksize >= (1ULL<<31)) { setlineno(curfn); yyerror("stack frame too large (>2GB)"); } n->stkdelta = -stksize - n->xoffset; } stksize = rnd(stksize, widthreg); stkptrsize = rnd(stkptrsize, widthreg); fixautoused(ptxt); // The debug information needs accurate offsets on the symbols. for(ll = curfn->dcl; ll != nil; ll=ll->next) { if (ll->n->class != PAUTO || ll->n->op != ONAME) continue; ll->n->xoffset += ll->n->stkdelta; ll->n->stkdelta = 0; } } static void movelargefn(Node*); void movelarge(NodeList *l) { for(; l; l=l->next) if(l->n->op == ODCLFUNC) movelargefn(l->n); } static void movelargefn(Node *fn) { NodeList *l; Node *n; for(l=fn->dcl; l != nil; l=l->next) { n = l->n; if(n->class == PAUTO && n->type != T && n->type->width > MaxStackVarSize) addrescapes(n); } } void cgen_checknil(Node *n) { Node reg; if(disable_checknil) return; // Ideally we wouldn't see any integer types here, but we do. if(n->type == T || (!isptr[n->type->etype] && !isint[n->type->etype] && n->type->etype != TUNSAFEPTR)) { dump("checknil", n); fatal("bad checknil"); } if((thechar == '5' && n->op != OREGISTER) || !n->addable || n->op == OLITERAL) { regalloc(®, types[tptr], n); cgen(n, ®); gins(ACHECKNIL, ®, N); regfree(®); return; } gins(ACHECKNIL, n, N); } go/src/cmd/gc/plive.c0100644000000000000000000015663412412656737014724 0ustar00rootroot00000000000000// Copyright 2013 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. // Garbage collector liveness bitmap generation. // The command line flag -live causes this code to print debug information. // The levels are: // // -live (aka -live=1): print liveness lists as code warnings at safe points // -live=2: print an assembly listing with liveness annotations // -live=3: print information during each computation phase (much chattier) // // Each level includes the earlier output as well. #include #include #include "gg.h" #include "opt.h" #include "../../pkg/runtime/funcdata.h" enum { BitsPerPointer = 2 }; enum { UNVISITED = 0, VISITED = 1, }; // An ordinary basic block. // // Instructions are threaded together in a doubly-linked list. To iterate in // program order follow the link pointer from the first node and stop after the // last node has been visited // // for(p = bb->first;; p = p->link) { // ... // if(p == bb->last) // break; // } // // To iterate in reverse program order by following the opt pointer from the // last node // // for(p = bb->last; p != nil; p = p->opt) { // ... // } typedef struct BasicBlock BasicBlock; struct BasicBlock { // An array of preceding blocks. If the length of this array is 0 the // block is probably the start block of the CFG. Array *pred; // An array out succeeding blocks. If the length of this array is zero, // the block probably ends in a return instruction. Array *succ; // First instruction in the block. When part of a fully initialized // control flow graph, the opt member will be nil. Prog *first; // Last instruction in the basic block. Prog *last; // The reverse post order number. This value is initialized to -1 and // will be replaced by a non-negative value when the CFG is constructed. // After CFG construction, if rpo is -1 this block is unreachable. int rpo; // State to denote whether the block has been visited during a // traversal. int mark; // For use during livenessepilogue. int lastbitmapindex; }; // A collection of global state used by liveness analysis. typedef struct Liveness Liveness; struct Liveness { // A pointer to the node corresponding to the function being analyzed. Node *fn; // A linked list of instructions for this function. Prog *ptxt; // A list of arguments and local variables in this function. Array *vars; // A list of basic blocks that are overlayed on the instruction list. // The blocks are roughly in the same order as the instructions // in the function (first block has TEXT instruction, and so on). Array *cfg; // Summary sets of block effects. // The Bvec** is indexed by bb->rpo to yield a single Bvec*. // That bit vector is indexed by variable number (same as lv->vars). // // Computed during livenessprologue using only the content of // individual blocks: // // uevar: upward exposed variables (used before set in block) // varkill: killed variables (set in block) // avarinit: addrtaken variables set or used (proof of initialization) // // Computed during livenesssolve using control flow information: // // livein: variables live at block entry // liveout: variables live at block exit // avarinitany: addrtaken variables possibly initialized at block exit // (initialized in block or at exit from any predecessor block) // avarinitall: addrtaken variables certainly initialized at block exit // (initialized in block or at exit from all predecessor blocks) Bvec **uevar; Bvec **varkill; Bvec **livein; Bvec **liveout; Bvec **avarinit; Bvec **avarinitany; Bvec **avarinitall; // An array with a bit vector for each safe point tracking live pointers // in the arguments and locals area, indexed by bb->rpo. Array *argslivepointers; Array *livepointers; }; static void* xmalloc(uintptr size) { void *result; result = malloc(size); if(result == nil) fatal("malloc failed"); return result; } // Constructs a new basic block containing a single instruction. static BasicBlock* newblock(Prog *prog) { BasicBlock *result; if(prog == nil) fatal("newblock: prog cannot be nil"); result = xmalloc(sizeof(*result)); result->rpo = -1; result->mark = UNVISITED; result->first = prog; result->last = prog; result->pred = arraynew(2, sizeof(BasicBlock*)); result->succ = arraynew(2, sizeof(BasicBlock*)); return result; } // Frees a basic block and all of its leaf data structures. static void freeblock(BasicBlock *bb) { if(bb == nil) fatal("freeblock: cannot free nil"); arrayfree(bb->pred); arrayfree(bb->succ); free(bb); } // Adds an edge between two basic blocks by making from a predecessor of to and // to a successor of from. static void addedge(BasicBlock *from, BasicBlock *to) { if(from == nil) fatal("addedge: from is nil"); if(to == nil) fatal("addedge: to is nil"); arrayadd(from->succ, &to); arrayadd(to->pred, &from); } // Inserts prev before curr in the instruction // stream. Any control flow, such as branches or fall throughs, that target the // existing instruction are adjusted to target the new instruction. static void splicebefore(Liveness *lv, BasicBlock *bb, Prog *prev, Prog *curr) { Prog *next, tmp; USED(lv); // There may be other instructions pointing at curr, // and we want them to now point at prev. Instead of // trying to find all such instructions, swap the contents // so that the problem becomes inserting next after curr. // The "opt" field is the backward link in the linked list. // Overwrite curr's data with prev, but keep the list links. tmp = *curr; *curr = *prev; curr->opt = tmp.opt; curr->link = tmp.link; // Overwrite prev (now next) with curr's old data. next = prev; *next = tmp; next->opt = nil; next->link = nil; // Now insert next after curr. next->link = curr->link; next->opt = curr; curr->link = next; if(next->link && next->link->opt == curr) next->link->opt = next; if(bb->last == curr) bb->last = next; } // A pretty printer for basic blocks. static void printblock(BasicBlock *bb) { BasicBlock *pred; BasicBlock *succ; Prog *prog; int i; print("basic block %d\n", bb->rpo); print("\tpred:"); for(i = 0; i < arraylength(bb->pred); i++) { pred = *(BasicBlock**)arrayget(bb->pred, i); print(" %d", pred->rpo); } print("\n"); print("\tsucc:"); for(i = 0; i < arraylength(bb->succ); i++) { succ = *(BasicBlock**)arrayget(bb->succ, i); print(" %d", succ->rpo); } print("\n"); print("\tprog:\n"); for(prog = bb->first;; prog=prog->link) { print("\t\t%P\n", prog); if(prog == bb->last) break; } } // Iterates over a basic block applying a callback to each instruction. There // are two criteria for termination. If the end of basic block is reached a // value of zero is returned. If the callback returns a non-zero value, the // iteration is stopped and the value of the callback is returned. static int blockany(BasicBlock *bb, int (*callback)(Prog*)) { Prog *p; int result; for(p = bb->last; p != nil; p = p->opt) { result = (*callback)(p); if(result != 0) return result; } return 0; } // Collects and returns and array of Node*s for functions arguments and local // variables. static Array* getvariables(Node *fn) { Array *result; NodeList *ll; result = arraynew(0, sizeof(Node*)); for(ll = fn->dcl; ll != nil; ll = ll->next) { if(ll->n->op == ONAME) { // In order for GODEBUG=gcdead=1 to work, each bitmap needs // to contain information about all variables covered by the bitmap. // For local variables, the bitmap only covers the stkptrsize // bytes in the frame where variables containing pointers live. // For arguments and results, the bitmap covers all variables, // so we must include all the variables, even the ones without // pointers. // // The Node.opt field is available for use by optimization passes. // We use it to hold the index of the node in the variables array, plus 1 // (so that 0 means the Node is not in the variables array). // Each pass should clear opt when done, but you never know, // so clear them all ourselves too. // The Node.curfn field is supposed to be set to the current function // already, but for some compiler-introduced names it seems not to be, // so fix that here. // Later, when we want to find the index of a node in the variables list, // we will check that n->curfn == curfn and n->opt > 0. Then n->opt - 1 // is the index in the variables list. ll->n->opt = nil; ll->n->curfn = curfn; switch(ll->n->class) { case PAUTO: if(haspointers(ll->n->type)) { ll->n->opt = (void*)(uintptr)(arraylength(result)+1); arrayadd(result, &ll->n); } break; case PPARAM: case PPARAMOUT: ll->n->opt = (void*)(uintptr)(arraylength(result)+1); arrayadd(result, &ll->n); break; } } } return result; } // A pretty printer for control flow graphs. Takes an array of BasicBlock*s. static void printcfg(Array *cfg) { BasicBlock *bb; int32 i; for(i = 0; i < arraylength(cfg); i++) { bb = *(BasicBlock**)arrayget(cfg, i); printblock(bb); } } // Assigns a reverse post order number to each connected basic block using the // standard algorithm. Unconnected blocks will not be affected. static void reversepostorder(BasicBlock *root, int32 *rpo) { BasicBlock *bb; int i; root->mark = VISITED; for(i = 0; i < arraylength(root->succ); i++) { bb = *(BasicBlock**)arrayget(root->succ, i); if(bb->mark == UNVISITED) reversepostorder(bb, rpo); } *rpo -= 1; root->rpo = *rpo; } // Comparison predicate used for sorting basic blocks by their rpo in ascending // order. static int blockrpocmp(const void *p1, const void *p2) { BasicBlock *bb1; BasicBlock *bb2; bb1 = *(BasicBlock**)p1; bb2 = *(BasicBlock**)p2; if(bb1->rpo < bb2->rpo) return -1; if(bb1->rpo > bb2->rpo) return 1; return 0; } // A pattern matcher for call instructions. Returns true when the instruction // is a call to a specific package qualified function name. static int iscall(Prog *prog, LSym *name) { if(prog == nil) fatal("iscall: prog is nil"); if(name == nil) fatal("iscall: function name is nil"); if(prog->as != ACALL) return 0; return name == prog->to.sym; } // Returns true for instructions that call a runtime function implementing a // select communication clause. static int isselectcommcasecall(Prog *prog) { static LSym* names[5]; int32 i; if(names[0] == nil) { names[0] = linksym(pkglookup("selectsend", runtimepkg)); names[1] = linksym(pkglookup("selectrecv", runtimepkg)); names[2] = linksym(pkglookup("selectrecv2", runtimepkg)); names[3] = linksym(pkglookup("selectdefault", runtimepkg)); } for(i = 0; names[i] != nil; i++) if(iscall(prog, names[i])) return 1; return 0; } // Returns true for call instructions that target runtime·newselect. static int isnewselect(Prog *prog) { static LSym *sym; if(sym == nil) sym = linksym(pkglookup("newselect", runtimepkg)); return iscall(prog, sym); } // Returns true for call instructions that target runtime·selectgo. static int isselectgocall(Prog *prog) { static LSym *sym; if(sym == nil) sym = linksym(pkglookup("selectgo", runtimepkg)); return iscall(prog, sym); } static int isdeferreturn(Prog *prog) { static LSym *sym; if(sym == nil) sym = linksym(pkglookup("deferreturn", runtimepkg)); return iscall(prog, sym); } // Walk backwards from a runtime·selectgo call up to its immediately dominating // runtime·newselect call. Any successor nodes of communication clause nodes // are implicit successors of the runtime·selectgo call node. The goal of this // analysis is to add these missing edges to complete the control flow graph. static void addselectgosucc(BasicBlock *selectgo) { BasicBlock *pred; BasicBlock *succ; pred = selectgo; for(;;) { if(arraylength(pred->pred) == 0) fatal("selectgo does not have a newselect"); pred = *(BasicBlock**)arrayget(pred->pred, 0); if(blockany(pred, isselectcommcasecall)) { // A select comm case block should have exactly one // successor. if(arraylength(pred->succ) != 1) fatal("select comm case has too many successors"); succ = *(BasicBlock**)arrayget(pred->succ, 0); // Its successor should have exactly two successors. // The drop through should flow to the selectgo block // and the branch should lead to the select case // statements block. if(arraylength(succ->succ) != 2) fatal("select comm case successor has too many successors"); // Add the block as a successor of the selectgo block. addedge(selectgo, succ); } if(blockany(pred, isnewselect)) { // Reached the matching newselect. break; } } } // The entry point for the missing selectgo control flow algorithm. Takes an // array of BasicBlock*s containing selectgo calls. static void fixselectgo(Array *selectgo) { BasicBlock *bb; int32 i; for(i = 0; i < arraylength(selectgo); i++) { bb = *(BasicBlock**)arrayget(selectgo, i); addselectgosucc(bb); } } // Constructs a control flow graph from a sequence of instructions. This // procedure is complicated by various sources of implicit control flow that are // not accounted for using the standard cfg construction algorithm. Returns an // array of BasicBlock*s in control flow graph form (basic blocks ordered by // their RPO number). static Array* newcfg(Prog *firstp) { Prog *p; Prog *prev; BasicBlock *bb; Array *cfg; Array *selectgo; int32 i; int32 rpo; // Reset the opt field of each prog to nil. In the first and second // passes, instructions that are labels temporarily use the opt field to // point to their basic block. In the third pass, the opt field reset // to point to the predecessor of an instruction in its basic block. for(p = firstp; p != P; p = p->link) p->opt = nil; // Allocate an array to remember where we have seen selectgo calls. // These blocks will be revisited to add successor control flow edges. selectgo = arraynew(0, sizeof(BasicBlock*)); // Loop through all instructions identifying branch targets // and fall-throughs and allocate basic blocks. cfg = arraynew(0, sizeof(BasicBlock*)); bb = newblock(firstp); arrayadd(cfg, &bb); for(p = firstp; p != P; p = p->link) { if(p->to.type == D_BRANCH) { if(p->to.u.branch == nil) fatal("prog branch to nil"); if(p->to.u.branch->opt == nil) { p->to.u.branch->opt = newblock(p->to.u.branch); arrayadd(cfg, &p->to.u.branch->opt); } if(p->as != AJMP && p->link != nil && p->link->opt == nil) { p->link->opt = newblock(p->link); arrayadd(cfg, &p->link->opt); } } else if(isselectcommcasecall(p) || isselectgocall(p)) { // Accommodate implicit selectgo control flow. if(p->link->opt == nil) { p->link->opt = newblock(p->link); arrayadd(cfg, &p->link->opt); } } } // Loop through all basic blocks maximally growing the list of // contained instructions until a label is reached. Add edges // for branches and fall-through instructions. for(i = 0; i < arraylength(cfg); i++) { bb = *(BasicBlock**)arrayget(cfg, i); for(p = bb->last; p != nil; p = p->link) { if(p->opt != nil && p != bb->last) break; bb->last = p; // Stop before an unreachable RET, to avoid creating // unreachable control flow nodes. if(p->link != nil && p->link->as == ARET && p->link->mode == 1) break; // Collect basic blocks with selectgo calls. if(isselectgocall(p)) arrayadd(selectgo, &bb); } if(bb->last->to.type == D_BRANCH) addedge(bb, bb->last->to.u.branch->opt); if(bb->last->link != nil) { // Add a fall-through when the instruction is // not an unconditional control transfer. switch(bb->last->as) { case AJMP: case ARET: case AUNDEF: break; default: addedge(bb, bb->last->link->opt); } } } // Add back links so the instructions in a basic block can be traversed // backward. This is the final state of the instruction opt field. for(i = 0; i < arraylength(cfg); i++) { bb = *(BasicBlock**)arrayget(cfg, i); p = bb->first; prev = nil; for(;;) { p->opt = prev; if(p == bb->last) break; prev = p; p = p->link; } } // Add missing successor edges to the selectgo blocks. if(arraylength(selectgo)) fixselectgo(selectgo); arrayfree(selectgo); // Find a depth-first order and assign a depth-first number to // all basic blocks. for(i = 0; i < arraylength(cfg); i++) { bb = *(BasicBlock**)arrayget(cfg, i); bb->mark = UNVISITED; } bb = *(BasicBlock**)arrayget(cfg, 0); rpo = arraylength(cfg); reversepostorder(bb, &rpo); // Sort the basic blocks by their depth first number. The // array is now a depth-first spanning tree with the first // node being the root. arraysort(cfg, blockrpocmp); bb = *(BasicBlock**)arrayget(cfg, 0); // Unreachable control flow nodes are indicated by a -1 in the rpo // field. If we see these nodes something must have gone wrong in an // upstream compilation phase. if(bb->rpo == -1) { print("newcfg: unreachable basic block for %P\n", bb->last); printcfg(cfg); fatal("newcfg: invalid control flow graph"); } return cfg; } // Frees a control flow graph (an array of BasicBlock*s) and all of its leaf // data structures. static void freecfg(Array *cfg) { BasicBlock *bb; BasicBlock *bb0; Prog *p; int32 i; int32 len; len = arraylength(cfg); if(len > 0) { bb0 = *(BasicBlock**)arrayget(cfg, 0); for(p = bb0->first; p != P; p = p->link) { p->opt = nil; } for(i = 0; i < len; i++) { bb = *(BasicBlock**)arrayget(cfg, i); freeblock(bb); } } arrayfree(cfg); } // Returns true if the node names a variable that is otherwise uninteresting to // the liveness computation. static int isfunny(Node *node) { char *names[] = { ".fp", ".args", nil }; int i; if(node->sym != nil && node->sym->name != nil) for(i = 0; names[i] != nil; i++) if(strcmp(node->sym->name, names[i]) == 0) return 1; return 0; } // Computes the effects of an instruction on a set of // variables. The vars argument is an array of Node*s. // // The output vectors give bits for variables: // uevar - used by this instruction // varkill - killed by this instruction // for variables without address taken, means variable was set // for variables with address taken, means variable was marked dead // avarinit - initialized or referred to by this instruction, // only for variables with address taken but not escaping to heap // // The avarinit output serves as a signal that the data has been // initialized, because any use of a variable must come after its // initialization. static void progeffects(Prog *prog, Array *vars, Bvec *uevar, Bvec *varkill, Bvec *avarinit) { ProgInfo info; Adr *from; Adr *to; Node *node; int32 i; int32 pos; bvresetall(uevar); bvresetall(varkill); bvresetall(avarinit); proginfo(&info, prog); if(prog->as == ARET) { // Return instructions implicitly read all the arguments. For // the sake of correctness, out arguments must be read. For the // sake of backtrace quality, we read in arguments as well. // // A return instruction with a p->to is a tail return, which brings // the stack pointer back up (if it ever went down) and then jumps // to a new function entirely. That form of instruction must read // all the parameters for correctness, and similarly it must not // read the out arguments - they won't be set until the new // function runs. for(i = 0; i < arraylength(vars); i++) { node = *(Node**)arrayget(vars, i); switch(node->class & ~PHEAP) { case PPARAM: bvset(uevar, i); break; case PPARAMOUT: // If the result had its address taken, it is being tracked // by the avarinit code, which does not use uevar. // If we added it to uevar too, we'd not see any kill // and decide that the varible was live entry, which it is not. // So only use uevar in the non-addrtaken case. // The p->to.type == D_NONE limits the bvset to // non-tail-call return instructions; see note above // the for loop for details. if(!node->addrtaken && prog->to.type == D_NONE) bvset(uevar, i); break; } } return; } if(prog->as == ATEXT) { // A text instruction marks the entry point to a function and // the definition point of all in arguments. for(i = 0; i < arraylength(vars); i++) { node = *(Node**)arrayget(vars, i); switch(node->class & ~PHEAP) { case PPARAM: if(node->addrtaken) bvset(avarinit, i); bvset(varkill, i); break; } } return; } if(info.flags & (LeftRead | LeftWrite | LeftAddr)) { from = &prog->from; if (from->node != nil && from->sym != nil && from->node->curfn == curfn) { switch(from->node->class & ~PHEAP) { case PAUTO: case PPARAM: case PPARAMOUT: pos = (int)(uintptr)from->node->opt - 1; // index in vars if(pos == -1) goto Next; if(pos >= arraylength(vars) || *(Node**)arrayget(vars, pos) != from->node) fatal("bad bookkeeping in liveness %N %d", from->node, pos); if(from->node->addrtaken) { bvset(avarinit, pos); } else { if(info.flags & (LeftRead | LeftAddr)) bvset(uevar, pos); if(info.flags & LeftWrite) if(from->node != nil && !isfat(from->node->type)) bvset(varkill, pos); } } } } Next: if(info.flags & (RightRead | RightWrite | RightAddr)) { to = &prog->to; if (to->node != nil && to->sym != nil && to->node->curfn == curfn) { switch(to->node->class & ~PHEAP) { case PAUTO: case PPARAM: case PPARAMOUT: pos = (int)(uintptr)to->node->opt - 1; // index in vars if(pos == -1) goto Next1; if(pos >= arraylength(vars) || *(Node**)arrayget(vars, pos) != to->node) fatal("bad bookkeeping in liveness %N %d", to->node, pos); if(to->node->addrtaken) { if(prog->as != AVARKILL) bvset(avarinit, pos); if(prog->as == AVARDEF || prog->as == AVARKILL) bvset(varkill, pos); } else { // RightRead is a read, obviously. // RightAddr by itself is also implicitly a read. // // RightAddr|RightWrite means that the address is being taken // but only so that the instruction can write to the value. // It is not a read. It is equivalent to RightWrite except that // having the RightAddr bit set keeps the registerizer from // trying to substitute a register for the memory location. if((info.flags & RightRead) || (info.flags & (RightAddr|RightWrite)) == RightAddr) bvset(uevar, pos); if(info.flags & RightWrite) if(to->node != nil && (!isfat(to->node->type) || prog->as == AVARDEF)) bvset(varkill, pos); } } } } Next1:; } // Constructs a new liveness structure used to hold the global state of the // liveness computation. The cfg argument is an array of BasicBlock*s and the // vars argument is an array of Node*s. static Liveness* newliveness(Node *fn, Prog *ptxt, Array *cfg, Array *vars) { Liveness *result; int32 i; int32 nblocks; int32 nvars; result = xmalloc(sizeof(*result)); result->fn = fn; result->ptxt = ptxt; result->cfg = cfg; result->vars = vars; nblocks = arraylength(cfg); result->uevar = xmalloc(sizeof(Bvec*) * nblocks); result->varkill = xmalloc(sizeof(Bvec*) * nblocks); result->livein = xmalloc(sizeof(Bvec*) * nblocks); result->liveout = xmalloc(sizeof(Bvec*) * nblocks); result->avarinit = xmalloc(sizeof(Bvec*) * nblocks); result->avarinitany = xmalloc(sizeof(Bvec*) * nblocks); result->avarinitall = xmalloc(sizeof(Bvec*) * nblocks); nvars = arraylength(vars); for(i = 0; i < nblocks; i++) { result->uevar[i] = bvalloc(nvars); result->varkill[i] = bvalloc(nvars); result->livein[i] = bvalloc(nvars); result->liveout[i] = bvalloc(nvars); result->avarinit[i] = bvalloc(nvars); result->avarinitany[i] = bvalloc(nvars); result->avarinitall[i] = bvalloc(nvars); } result->livepointers = arraynew(0, sizeof(Bvec*)); result->argslivepointers = arraynew(0, sizeof(Bvec*)); return result; } // Frees the liveness structure and all of its leaf data structures. static void freeliveness(Liveness *lv) { int32 i; if(lv == nil) fatal("freeliveness: cannot free nil"); for(i = 0; i < arraylength(lv->livepointers); i++) free(*(Bvec**)arrayget(lv->livepointers, i)); arrayfree(lv->livepointers); for(i = 0; i < arraylength(lv->argslivepointers); i++) free(*(Bvec**)arrayget(lv->argslivepointers, i)); arrayfree(lv->argslivepointers); for(i = 0; i < arraylength(lv->cfg); i++) { free(lv->uevar[i]); free(lv->varkill[i]); free(lv->livein[i]); free(lv->liveout[i]); free(lv->avarinit[i]); free(lv->avarinitany[i]); free(lv->avarinitall[i]); } free(lv->uevar); free(lv->varkill); free(lv->livein); free(lv->liveout); free(lv->avarinit); free(lv->avarinitany); free(lv->avarinitall); free(lv); } static void printeffects(Prog *p, Bvec *uevar, Bvec *varkill, Bvec *avarinit) { print("effects of %P", p); print("\nuevar: "); bvprint(uevar); print("\nvarkill: "); bvprint(varkill); print("\navarinit: "); bvprint(avarinit); print("\n"); } // Pretty print a variable node. Uses Pascal like conventions for pointers and // addresses to avoid confusing the C like conventions used in the node variable // names. static void printnode(Node *node) { char *p; char *a; p = haspointers(node->type) ? "^" : ""; a = node->addrtaken ? "@" : ""; print(" %N%s%s", node, p, a); } // Pretty print a list of variables. The vars argument is an array of Node*s. static void printvars(char *name, Bvec *bv, Array *vars) { int32 i; print("%s:", name); for(i = 0; i < arraylength(vars); i++) if(bvget(bv, i)) printnode(*(Node**)arrayget(vars, i)); print("\n"); } // Prints a basic block annotated with the information computed by liveness // analysis. static void livenessprintblock(Liveness *lv, BasicBlock *bb) { BasicBlock *pred; BasicBlock *succ; Prog *prog; Bvec *live; int i; int32 pos; print("basic block %d\n", bb->rpo); print("\tpred:"); for(i = 0; i < arraylength(bb->pred); i++) { pred = *(BasicBlock**)arrayget(bb->pred, i); print(" %d", pred->rpo); } print("\n"); print("\tsucc:"); for(i = 0; i < arraylength(bb->succ); i++) { succ = *(BasicBlock**)arrayget(bb->succ, i); print(" %d", succ->rpo); } print("\n"); printvars("\tuevar", lv->uevar[bb->rpo], lv->vars); printvars("\tvarkill", lv->varkill[bb->rpo], lv->vars); printvars("\tlivein", lv->livein[bb->rpo], lv->vars); printvars("\tliveout", lv->liveout[bb->rpo], lv->vars); printvars("\tavarinit", lv->avarinit[bb->rpo], lv->vars); printvars("\tavarinitany", lv->avarinitany[bb->rpo], lv->vars); printvars("\tavarinitall", lv->avarinitall[bb->rpo], lv->vars); print("\tprog:\n"); for(prog = bb->first;; prog = prog->link) { print("\t\t%P", prog); if(prog->as == APCDATA && prog->from.offset == PCDATA_StackMapIndex) { pos = prog->to.offset; live = *(Bvec**)arrayget(lv->livepointers, pos); print(" "); bvprint(live); } print("\n"); if(prog == bb->last) break; } } // Prints a control flow graph annotated with any information computed by // liveness analysis. static void livenessprintcfg(Liveness *lv) { BasicBlock *bb; int32 i; for(i = 0; i < arraylength(lv->cfg); i++) { bb = *(BasicBlock**)arrayget(lv->cfg, i); livenessprintblock(lv, bb); } } static void checkauto(Node *fn, Prog *p, Node *n) { NodeList *l; for(l = fn->dcl; l != nil; l = l->next) if(l->n->op == ONAME && l->n->class == PAUTO && l->n == n) return; print("checkauto %N: %N (%p; class=%d) not found in %P\n", curfn, n, n, n->class, p); for(l = fn->dcl; l != nil; l = l->next) print("\t%N (%p; class=%d)\n", l->n, l->n, l->n->class); yyerror("checkauto: invariant lost"); } static void checkparam(Node *fn, Prog *p, Node *n) { NodeList *l; Node *a; int class; if(isfunny(n)) return; for(l = fn->dcl; l != nil; l = l->next) { a = l->n; class = a->class & ~PHEAP; if(a->op == ONAME && (class == PPARAM || class == PPARAMOUT) && a == n) return; } print("checkparam %N: %N (%p; class=%d) not found in %P\n", curfn, n, n, n->class, p); for(l = fn->dcl; l != nil; l = l->next) print("\t%N (%p; class=%d)\n", l->n, l->n, l->n->class); yyerror("checkparam: invariant lost"); } static void checkprog(Node *fn, Prog *p) { if(p->from.type == D_AUTO) checkauto(fn, p, p->from.node); if(p->from.type == D_PARAM) checkparam(fn, p, p->from.node); if(p->to.type == D_AUTO) checkauto(fn, p, p->to.node); if(p->to.type == D_PARAM) checkparam(fn, p, p->to.node); } // Check instruction invariants. We assume that the nodes corresponding to the // sources and destinations of memory operations will be declared in the // function. This is not strictly true, as is the case for the so-called funny // nodes and there are special cases to skip over that stuff. The analysis will // fail if this invariant blindly changes. static void checkptxt(Node *fn, Prog *firstp) { Prog *p; if(debuglive == 0) return; for(p = firstp; p != P; p = p->link) { if(0) print("analyzing '%P'\n", p); switch(p->as) { case ADATA: case AGLOBL: case ANAME: case ASIGNAME: case ATYPE: continue; } checkprog(fn, p); } } // NOTE: The bitmap for a specific type t should be cached in t after the first run // and then simply copied into bv at the correct offset on future calls with // the same type t. On https://rsc.googlecode.com/hg/testdata/slow.go, twobitwalktype1 // accounts for 40% of the 6g execution time. static void twobitwalktype1(Type *t, vlong *xoffset, Bvec *bv) { vlong fieldoffset; vlong i; vlong o; Type *t1; if(t->align > 0 && (*xoffset & (t->align - 1)) != 0) fatal("twobitwalktype1: invalid initial alignment, %T", t); switch(t->etype) { case TINT8: case TUINT8: case TINT16: case TUINT16: case TINT32: case TUINT32: case TINT64: case TUINT64: case TINT: case TUINT: case TUINTPTR: case TBOOL: case TFLOAT32: case TFLOAT64: case TCOMPLEX64: case TCOMPLEX128: for(i = 0; i < t->width; i++) { bvset(bv, ((*xoffset + i) / widthptr) * BitsPerPointer); // 1 = live scalar } *xoffset += t->width; break; case TPTR32: case TPTR64: case TUNSAFEPTR: case TFUNC: case TCHAN: case TMAP: if((*xoffset & (widthptr-1)) != 0) fatal("twobitwalktype1: invalid alignment, %T", t); bvset(bv, (*xoffset / widthptr) * BitsPerPointer + 1); // 2 = live ptr *xoffset += t->width; break; case TSTRING: // struct { byte *str; intgo len; } if((*xoffset & (widthptr-1)) != 0) fatal("twobitwalktype1: invalid alignment, %T", t); bvset(bv, (*xoffset / widthptr) * BitsPerPointer + 0); bvset(bv, (*xoffset / widthptr) * BitsPerPointer + 1); // 3:0 = multiword:string *xoffset += t->width; break; case TINTER: // struct { Itab *tab; union { void *ptr, uintptr val } data; } // or, when isnilinter(t)==true: // struct { Type *type; union { void *ptr, uintptr val } data; } if((*xoffset & (widthptr-1)) != 0) fatal("twobitwalktype1: invalid alignment, %T", t); bvset(bv, ((*xoffset / widthptr) * BitsPerPointer) + 0); bvset(bv, ((*xoffset / widthptr) * BitsPerPointer) + 1); // 3 = multiword // next word contains 2 = Iface, 3 = Eface if(isnilinter(t)) { bvset(bv, ((*xoffset / widthptr) * BitsPerPointer) + 2); bvset(bv, ((*xoffset / widthptr) * BitsPerPointer) + 3); } else { bvset(bv, ((*xoffset / widthptr) * BitsPerPointer) + 3); } *xoffset += t->width; break; case TARRAY: // The value of t->bound is -1 for slices types and >0 for // for fixed array types. All other values are invalid. if(t->bound < -1) fatal("twobitwalktype1: invalid bound, %T", t); if(isslice(t)) { // struct { byte *array; uintgo len; uintgo cap; } if((*xoffset & (widthptr-1)) != 0) fatal("twobitwalktype1: invalid TARRAY alignment, %T", t); bvset(bv, (*xoffset / widthptr) * BitsPerPointer + 0); bvset(bv, (*xoffset / widthptr) * BitsPerPointer + 1); bvset(bv, (*xoffset / widthptr) * BitsPerPointer + 2); // 3:1 = multiword/slice *xoffset += t->width; } else for(i = 0; i < t->bound; i++) twobitwalktype1(t->type, xoffset, bv); break; case TSTRUCT: o = 0; for(t1 = t->type; t1 != T; t1 = t1->down) { fieldoffset = t1->width; *xoffset += fieldoffset - o; twobitwalktype1(t1->type, xoffset, bv); o = fieldoffset + t1->type->width; } *xoffset += t->width - o; break; default: fatal("twobitwalktype1: unexpected type, %T", t); } } // Returns the number of words of local variables. static int32 localswords(void) { return stkptrsize / widthptr; } // Returns the number of words of in and out arguments. static int32 argswords(void) { return curfn->type->argwid / widthptr; } // Generates live pointer value maps for arguments and local variables. The // this argument and the in arguments are always assumed live. The vars // argument is an array of Node*s. static void twobitlivepointermap(Liveness *lv, Bvec *liveout, Array *vars, Bvec *args, Bvec *locals) { Node *node; Type *thisargtype; Type *inargtype; vlong xoffset; int32 i; for(i = 0; (i = bvnext(liveout, i)) >= 0; i++) { node = *(Node**)arrayget(vars, i); switch(node->class) { case PAUTO: xoffset = node->xoffset + stkptrsize; twobitwalktype1(node->type, &xoffset, locals); break; case PPARAM: case PPARAMOUT: xoffset = node->xoffset; twobitwalktype1(node->type, &xoffset, args); break; } } // The node list only contains declared names. // If the receiver or arguments are unnamed, they will be omitted // from the list above. Preserve those values - even though they are unused - // in order to keep their addresses live for use in stack traces. thisargtype = getthisx(lv->fn->type); if(thisargtype != nil) { xoffset = 0; twobitwalktype1(thisargtype, &xoffset, args); } inargtype = getinargx(lv->fn->type); if(inargtype != nil) { xoffset = 0; twobitwalktype1(inargtype, &xoffset, args); } } // Construct a disembodied instruction. static Prog* unlinkedprog(int as) { Prog *p; p = mal(sizeof(*p)); clearp(p); p->as = as; return p; } // Construct a new PCDATA instruction associated with and for the purposes of // covering an existing instruction. static Prog* newpcdataprog(Prog *prog, int32 index) { Node from, to; Prog *pcdata; nodconst(&from, types[TINT32], PCDATA_StackMapIndex); nodconst(&to, types[TINT32], index); pcdata = unlinkedprog(APCDATA); pcdata->lineno = prog->lineno; naddr(&from, &pcdata->from, 0); naddr(&to, &pcdata->to, 0); return pcdata; } // Returns true for instructions that are safe points that must be annotated // with liveness information. static int issafepoint(Prog *prog) { return prog->as == ATEXT || prog->as == ACALL; } // Initializes the sets for solving the live variables. Visits all the // instructions in each basic block to summarizes the information at each basic // block static void livenessprologue(Liveness *lv) { BasicBlock *bb; Bvec *uevar, *varkill, *avarinit; Prog *p; int32 i; int32 nvars; nvars = arraylength(lv->vars); uevar = bvalloc(nvars); varkill = bvalloc(nvars); avarinit = bvalloc(nvars); for(i = 0; i < arraylength(lv->cfg); i++) { bb = *(BasicBlock**)arrayget(lv->cfg, i); // Walk the block instructions backward and update the block // effects with the each prog effects. for(p = bb->last; p != nil; p = p->opt) { progeffects(p, lv->vars, uevar, varkill, avarinit); if(debuglive >= 3) printeffects(p, uevar, varkill, avarinit); bvor(lv->varkill[i], lv->varkill[i], varkill); bvandnot(lv->uevar[i], lv->uevar[i], varkill); bvor(lv->uevar[i], lv->uevar[i], uevar); } // Walk the block instructions forward to update avarinit bits. // avarinit describes the effect at the end of the block, not the beginning. bvresetall(varkill); for(p = bb->first;; p = p->link) { progeffects(p, lv->vars, uevar, varkill, avarinit); if(debuglive >= 3) printeffects(p, uevar, varkill, avarinit); bvandnot(lv->avarinit[i], lv->avarinit[i], varkill); bvor(lv->avarinit[i], lv->avarinit[i], avarinit); if(p == bb->last) break; } } free(uevar); free(varkill); free(avarinit); } // Solve the liveness dataflow equations. static void livenesssolve(Liveness *lv) { BasicBlock *bb, *succ, *pred; Bvec *newlivein, *newliveout, *any, *all; int32 rpo, i, j, change; // These temporary bitvectors exist to avoid successive allocations and // frees within the loop. newlivein = bvalloc(arraylength(lv->vars)); newliveout = bvalloc(arraylength(lv->vars)); any = bvalloc(arraylength(lv->vars)); all = bvalloc(arraylength(lv->vars)); // Push avarinitall, avarinitany forward. // avarinitall says the addressed var is initialized along all paths reaching the block exit. // avarinitany says the addressed var is initialized along some path reaching the block exit. for(i = 0; i < arraylength(lv->cfg); i++) { bb = *(BasicBlock**)arrayget(lv->cfg, i); rpo = bb->rpo; if(i == 0) bvcopy(lv->avarinitall[rpo], lv->avarinit[rpo]); else { bvresetall(lv->avarinitall[rpo]); bvnot(lv->avarinitall[rpo]); } bvcopy(lv->avarinitany[rpo], lv->avarinit[rpo]); } change = 1; while(change != 0) { change = 0; for(i = 0; i < arraylength(lv->cfg); i++) { bb = *(BasicBlock**)arrayget(lv->cfg, i); rpo = bb->rpo; bvresetall(any); bvresetall(all); for(j = 0; j < arraylength(bb->pred); j++) { pred = *(BasicBlock**)arrayget(bb->pred, j); if(j == 0) { bvcopy(any, lv->avarinitany[pred->rpo]); bvcopy(all, lv->avarinitall[pred->rpo]); } else { bvor(any, any, lv->avarinitany[pred->rpo]); bvand(all, all, lv->avarinitall[pred->rpo]); } } bvandnot(any, any, lv->varkill[rpo]); bvandnot(all, all, lv->varkill[rpo]); bvor(any, any, lv->avarinit[rpo]); bvor(all, all, lv->avarinit[rpo]); if(bvcmp(any, lv->avarinitany[rpo])) { change = 1; bvcopy(lv->avarinitany[rpo], any); } if(bvcmp(all, lv->avarinitall[rpo])) { change = 1; bvcopy(lv->avarinitall[rpo], all); } } } // Iterate through the blocks in reverse round-robin fashion. A work // queue might be slightly faster. As is, the number of iterations is // so low that it hardly seems to be worth the complexity. change = 1; while(change != 0) { change = 0; // Walk blocks in the general direction of propagation. This // improves convergence. for(i = arraylength(lv->cfg) - 1; i >= 0; i--) { // A variable is live on output from this block // if it is live on input to some successor. // // out[b] = \bigcup_{s \in succ[b]} in[s] bb = *(BasicBlock**)arrayget(lv->cfg, i); rpo = bb->rpo; bvresetall(newliveout); for(j = 0; j < arraylength(bb->succ); j++) { succ = *(BasicBlock**)arrayget(bb->succ, j); bvor(newliveout, newliveout, lv->livein[succ->rpo]); } if(bvcmp(lv->liveout[rpo], newliveout)) { change = 1; bvcopy(lv->liveout[rpo], newliveout); } // A variable is live on input to this block // if it is live on output from this block and // not set by the code in this block. // // in[b] = uevar[b] \cup (out[b] \setminus varkill[b]) bvandnot(newlivein, lv->liveout[rpo], lv->varkill[rpo]); bvor(lv->livein[rpo], newlivein, lv->uevar[rpo]); } } free(newlivein); free(newliveout); free(any); free(all); } // This function is slow but it is only used for generating debug prints. // Check whether n is marked live in args/locals. static int islive(Node *n, Bvec *args, Bvec *locals) { int i; switch(n->class) { case PPARAM: case PPARAMOUT: for(i = 0; i < n->type->width/widthptr*BitsPerPointer; i++) if(bvget(args, n->xoffset/widthptr*BitsPerPointer + i)) return 1; break; case PAUTO: for(i = 0; i < n->type->width/widthptr*BitsPerPointer; i++) if(bvget(locals, (n->xoffset + stkptrsize)/widthptr*BitsPerPointer + i)) return 1; break; } return 0; } // Visits all instructions in a basic block and computes a bit vector of live // variables at each safe point locations. static void livenessepilogue(Liveness *lv) { BasicBlock *bb, *pred; Bvec *ambig, *livein, *liveout, *uevar, *varkill, *args, *locals, *avarinit, *any, *all; Node *n; Prog *p, *next; int32 i, j, numlive, startmsg, nmsg, nvars, pos; vlong xoffset; char **msg; Fmt fmt; nvars = arraylength(lv->vars); livein = bvalloc(nvars); liveout = bvalloc(nvars); uevar = bvalloc(nvars); varkill = bvalloc(nvars); avarinit = bvalloc(nvars); any = bvalloc(nvars); all = bvalloc(nvars); ambig = bvalloc(localswords() * BitsPerPointer); msg = nil; nmsg = 0; startmsg = 0; for(i = 0; i < arraylength(lv->cfg); i++) { bb = *(BasicBlock**)arrayget(lv->cfg, i); // Compute avarinitany and avarinitall for entry to block. // This duplicates information known during livenesssolve // but avoids storing two more vectors for each block. bvresetall(any); bvresetall(all); for(j = 0; j < arraylength(bb->pred); j++) { pred = *(BasicBlock**)arrayget(bb->pred, j); if(j == 0) { bvcopy(any, lv->avarinitany[pred->rpo]); bvcopy(all, lv->avarinitall[pred->rpo]); } else { bvor(any, any, lv->avarinitany[pred->rpo]); bvand(all, all, lv->avarinitall[pred->rpo]); } } // Walk forward through the basic block instructions and // allocate liveness maps for those instructions that need them. // Seed the maps with information about the addrtaken variables. for(p = bb->first;; p = p->link) { progeffects(p, lv->vars, uevar, varkill, avarinit); bvandnot(any, any, varkill); bvandnot(all, all, varkill); bvor(any, any, avarinit); bvor(all, all, avarinit); if(issafepoint(p)) { // Annotate ambiguously live variables so that they can // be zeroed at function entry. // livein and liveout are dead here and used as temporaries. // For now, only enabled when using GOEXPERIMENT=precisestack // during make.bash / all.bash. if(precisestack_enabled) { bvresetall(livein); bvandnot(liveout, any, all); if(!bvisempty(liveout)) { for(pos = 0; pos < liveout->n; pos++) { if(!bvget(liveout, pos)) continue; bvset(all, pos); // silence future warnings in this block n = *(Node**)arrayget(lv->vars, pos); if(!n->needzero) { n->needzero = 1; if(debuglive >= 1) warnl(p->lineno, "%N: %lN is ambiguously live", curfn->nname, n); // Record in 'ambiguous' bitmap. xoffset = n->xoffset + stkptrsize; twobitwalktype1(n->type, &xoffset, ambig); } } } } // Allocate a bit vector for each class and facet of // value we are tracking. // Live stuff first. args = bvalloc(argswords() * BitsPerPointer); arrayadd(lv->argslivepointers, &args); locals = bvalloc(localswords() * BitsPerPointer); arrayadd(lv->livepointers, &locals); if(debuglive >= 3) { print("%P\n", p); printvars("avarinitany", any, lv->vars); } // Record any values with an "address taken" reaching // this code position as live. Must do now instead of below // because the any/all calculation requires walking forward // over the block (as this loop does), while the liveout // requires walking backward (as the next loop does). twobitlivepointermap(lv, any, lv->vars, args, locals); } if(p == bb->last) break; } bb->lastbitmapindex = arraylength(lv->livepointers) - 1; } for(i = 0; i < arraylength(lv->cfg); i++) { bb = *(BasicBlock**)arrayget(lv->cfg, i); if(debuglive >= 1 && strcmp(curfn->nname->sym->name, "init") != 0 && curfn->nname->sym->name[0] != '.') { nmsg = arraylength(lv->livepointers); startmsg = nmsg; msg = xmalloc(nmsg*sizeof msg[0]); for(j=0; jlastbitmapindex; if(pos < 0) { // the first block we encounter should have the ATEXT so // at no point should pos ever be less than zero. fatal("livenessepilogue"); } bvcopy(livein, lv->liveout[bb->rpo]); for(p = bb->last; p != nil; p = next) { next = p->opt; // splicebefore modifies p->opt // Propagate liveness information progeffects(p, lv->vars, uevar, varkill, avarinit); bvcopy(liveout, livein); bvandnot(livein, liveout, varkill); bvor(livein, livein, uevar); if(debuglive >= 3 && issafepoint(p)){ print("%P\n", p); printvars("uevar", uevar, lv->vars); printvars("varkill", varkill, lv->vars); printvars("livein", livein, lv->vars); printvars("liveout", liveout, lv->vars); } if(issafepoint(p)) { // Found an interesting instruction, record the // corresponding liveness information. // Useful sanity check: on entry to the function, // the only things that can possibly be live are the // input parameters. if(p->as == ATEXT) { for(j = 0; j < liveout->n; j++) { if(!bvget(liveout, j)) continue; n = *(Node**)arrayget(lv->vars, j); if(n->class != PPARAM) yyerrorl(p->lineno, "internal error: %N %lN recorded as live on entry", curfn->nname, n); } } // Record live pointers. args = *(Bvec**)arrayget(lv->argslivepointers, pos); locals = *(Bvec**)arrayget(lv->livepointers, pos); twobitlivepointermap(lv, liveout, lv->vars, args, locals); // Ambiguously live variables are zeroed immediately after // function entry. Mark them live for all the non-entry bitmaps // so that GODEBUG=gcdead=1 mode does not poison them. if(p->as == ACALL) bvor(locals, locals, ambig); // Show live pointer bitmaps. // We're interpreting the args and locals bitmap instead of liveout so that we // include the bits added by the avarinit logic in the // previous loop. if(msg != nil) { fmtstrinit(&fmt); fmtprint(&fmt, "%L: live at ", p->lineno); if(p->as == ACALL && p->to.node) fmtprint(&fmt, "call to %s:", p->to.node->sym->name); else if(p->as == ACALL) fmtprint(&fmt, "indirect call:"); else fmtprint(&fmt, "entry to %s:", p->from.node->sym->name); numlive = 0; for(j = 0; j < arraylength(lv->vars); j++) { n = *(Node**)arrayget(lv->vars, j); if(islive(n, args, locals)) { fmtprint(&fmt, " %N", n); numlive++; } } fmtprint(&fmt, "\n"); if(numlive == 0) // squelch message free(fmtstrflush(&fmt)); else msg[--startmsg] = fmtstrflush(&fmt); } // Only CALL instructions need a PCDATA annotation. // The TEXT instruction annotation is implicit. if(p->as == ACALL) { if(isdeferreturn(p)) { // runtime.deferreturn modifies its return address to return // back to the CALL, not to the subsequent instruction. // Because the return comes back one instruction early, // the PCDATA must begin one instruction early too. // The instruction before a call to deferreturn is always a // no-op, to keep PC-specific data unambiguous. splicebefore(lv, bb, newpcdataprog(p->opt, pos), p->opt); } else { splicebefore(lv, bb, newpcdataprog(p, pos), p); } } pos--; } } if(msg != nil) { for(j=startmsg; jb; ep = p + 4*((bv->n+31)/32); while(p < ep) h = (h*Hp) ^ *p++; return h; } // Compact liveness information by coalescing identical per-call-site bitmaps. // The merging only happens for a single function, not across the entire binary. // // There are actually two lists of bitmaps, one list for the local variables and one // list for the function arguments. Both lists are indexed by the same PCDATA // index, so the corresponding pairs must be considered together when // merging duplicates. The argument bitmaps change much less often during // function execution than the local variable bitmaps, so it is possible that // we could introduce a separate PCDATA index for arguments vs locals and // then compact the set of argument bitmaps separately from the set of // local variable bitmaps. As of 2014-04-02, doing this to the godoc binary // is actually a net loss: we save about 50k of argument bitmaps but the new // PCDATA tables cost about 100k. So for now we keep using a single index for // both bitmap lists. static void livenesscompact(Liveness *lv) { int *table, *remap, i, j, n, tablesize, uniq; uint32 h; Bvec *local, *arg, *jlocal, *jarg; Prog *p; // Linear probing hash table of bitmaps seen so far. // The hash table has 4n entries to keep the linear // scan short. An entry of -1 indicates an empty slot. n = arraylength(lv->livepointers); tablesize = 4*n; table = xmalloc(tablesize*sizeof table[0]); memset(table, 0xff, tablesize*sizeof table[0]); // remap[i] = the new index of the old bit vector #i. remap = xmalloc(n*sizeof remap[0]); memset(remap, 0xff, n*sizeof remap[0]); uniq = 0; // unique tables found so far // Consider bit vectors in turn. // If new, assign next number using uniq, // record in remap, record in lv->livepointers and lv->argslivepointers // under the new index, and add entry to hash table. // If already seen, record earlier index in remap and free bitmaps. for(i=0; ilivepointers, i); arg = *(Bvec**)arrayget(lv->argslivepointers, i); h = hashbitmap(hashbitmap(H0, local), arg) % tablesize; for(;;) { j = table[h]; if(j < 0) break; jlocal = *(Bvec**)arrayget(lv->livepointers, j); jarg = *(Bvec**)arrayget(lv->argslivepointers, j); if(bvcmp(local, jlocal) == 0 && bvcmp(arg, jarg) == 0) { free(local); free(arg); remap[i] = j; goto Next; } if(++h == tablesize) h = 0; } table[h] = uniq; remap[i] = uniq; *(Bvec**)arrayget(lv->livepointers, uniq) = local; *(Bvec**)arrayget(lv->argslivepointers, uniq) = arg; uniq++; Next:; } // We've already reordered lv->livepointers[0:uniq] // and lv->argslivepointers[0:uniq] and freed the bitmaps // we don't need anymore. Clear the pointers later in the // array so that we can tell where the coalesced bitmaps stop // and so that we don't double-free when cleaning up. for(j=uniq; jlivepointers, j) = nil; *(Bvec**)arrayget(lv->argslivepointers, j) = nil; } // Rewrite PCDATA instructions to use new numbering. for(p=lv->ptxt; p != P; p=p->link) { if(p->as == APCDATA && p->from.offset == PCDATA_StackMapIndex) { i = p->to.offset; if(i >= 0) p->to.offset = remap[i]; } } free(table); free(remap); } static int printbitset(int printed, char *name, Array *vars, Bvec *bits) { int i, started; Node *n; started = 0; for(i=0; isym->name); } return printed; } // Prints the computed liveness information and inputs, for debugging. // This format synthesizes the information used during the multiple passes // into a single presentation. static void livenessprintdebug(Liveness *lv) { int i, j, pcdata, printed; BasicBlock *bb; Prog *p; Bvec *uevar, *varkill, *avarinit, *args, *locals; Node *n; print("liveness: %s\n", curfn->nname->sym->name); uevar = bvalloc(arraylength(lv->vars)); varkill = bvalloc(arraylength(lv->vars)); avarinit = bvalloc(arraylength(lv->vars)); pcdata = 0; for(i = 0; i < arraylength(lv->cfg); i++) { if(i > 0) print("\n"); bb = *(BasicBlock**)arrayget(lv->cfg, i); // bb#0 pred=1,2 succ=3,4 print("bb#%d pred=", i); for(j = 0; j < arraylength(bb->pred); j++) { if(j > 0) print(","); print("%d", (*(BasicBlock**)arrayget(bb->pred, j))->rpo); } print(" succ="); for(j = 0; j < arraylength(bb->succ); j++) { if(j > 0) print(","); print("%d", (*(BasicBlock**)arrayget(bb->succ, j))->rpo); } print("\n"); // initial settings printed = 0; printed = printbitset(printed, "uevar", lv->vars, lv->uevar[bb->rpo]); printed = printbitset(printed, "livein", lv->vars, lv->livein[bb->rpo]); if(printed) print("\n"); // program listing, with individual effects listed for(p = bb->first;; p = p->link) { print("%P\n", p); if(p->as == APCDATA && p->from.offset == PCDATA_StackMapIndex) pcdata = p->to.offset; progeffects(p, lv->vars, uevar, varkill, avarinit); printed = 0; printed = printbitset(printed, "uevar", lv->vars, uevar); printed = printbitset(printed, "varkill", lv->vars, varkill); printed = printbitset(printed, "avarinit", lv->vars, avarinit); if(printed) print("\n"); if(issafepoint(p)) { args = *(Bvec**)arrayget(lv->argslivepointers, pcdata); locals = *(Bvec**)arrayget(lv->livepointers, pcdata); print("\tlive="); printed = 0; for(j = 0; j < arraylength(lv->vars); j++) { n = *(Node**)arrayget(lv->vars, j); if(islive(n, args, locals)) { if(printed++) print(","); print("%N", n); } } print("\n"); } if(p == bb->last) break; } // bb bitsets print("end\n"); printed = printbitset(printed, "varkill", lv->vars, lv->varkill[bb->rpo]); printed = printbitset(printed, "liveout", lv->vars, lv->liveout[bb->rpo]); printed = printbitset(printed, "avarinit", lv->vars, lv->avarinit[bb->rpo]); printed = printbitset(printed, "avarinitany", lv->vars, lv->avarinitany[bb->rpo]); printed = printbitset(printed, "avarinitall", lv->vars, lv->avarinitall[bb->rpo]); if(printed) print("\n"); } print("\n"); free(uevar); free(varkill); free(avarinit); } // Dumps an array of bitmaps to a symbol as a sequence of uint32 values. The // first word dumped is the total number of bitmaps. The second word is the // length of the bitmaps. All bitmaps are assumed to be of equal length. The // words that are followed are the raw bitmap words. The arr argument is an // array of Node*s. static void twobitwritesymbol(Array *arr, Sym *sym) { Bvec *bv; int off, i, j, len; uint32 word; len = arraylength(arr); off = 0; off += 4; // number of bitmaps, to fill in later bv = *(Bvec**)arrayget(arr, 0); off = duint32(sym, off, bv->n); // number of bits in each bitmap for(i = 0; i < len; i++) { // bitmap words bv = *(Bvec**)arrayget(arr, i); if(bv == nil) break; for(j = 0; j < bv->n; j += 32) { word = bv->b[j/32]; off = duint32(sym, off, word); } } duint32(sym, 0, i); // number of bitmaps ggloblsym(sym, off, 0, 1); } static void printprog(Prog *p) { while(p != nil) { print("%P\n", p); p = p->link; } } // Entry pointer for liveness analysis. Constructs a complete CFG, solves for // the liveness of pointer variables in the function, and emits a runtime data // structure read by the garbage collector. void liveness(Node *fn, Prog *firstp, Sym *argssym, Sym *livesym) { Array *cfg, *vars; Liveness *lv; int debugdelta; NodeList *l; // Change name to dump debugging information only for a specific function. debugdelta = 0; if(strcmp(curfn->nname->sym->name, "!") == 0) debugdelta = 2; debuglive += debugdelta; if(debuglive >= 3) { print("liveness: %s\n", curfn->nname->sym->name); printprog(firstp); } checkptxt(fn, firstp); // Construct the global liveness state. cfg = newcfg(firstp); if(debuglive >= 3) printcfg(cfg); vars = getvariables(fn); lv = newliveness(fn, firstp, cfg, vars); // Run the dataflow framework. livenessprologue(lv); if(debuglive >= 3) livenessprintcfg(lv); livenesssolve(lv); if(debuglive >= 3) livenessprintcfg(lv); livenessepilogue(lv); if(debuglive >= 3) livenessprintcfg(lv); livenesscompact(lv); if(debuglive >= 2) livenessprintdebug(lv); // Emit the live pointer map data structures twobitwritesymbol(lv->livepointers, livesym); twobitwritesymbol(lv->argslivepointers, argssym); // Free everything. for(l=fn->dcl; l != nil; l = l->next) if(l->n != N) l->n->opt = nil; freeliveness(lv); arrayfree(vars); freecfg(cfg); debuglive -= debugdelta; } go/src/cmd/gc/popt.c0100644000000000000000000006061612412656737014561 0ustar00rootroot00000000000000// Derived from Inferno utils/6c/reg.c // http://code.google.com/p/inferno-os/source/browse/utils/6c/reg.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // "Portable" optimizations. // Compiled separately for 5g, 6g, and 8g, so allowed to use gg.h, opt.h. // Must code to the intersection of the three back ends. #include #include #include "gg.h" #include "opt.h" // p is a call instruction. Does the call fail to return? int noreturn(Prog *p) { Sym *s; int i; static Sym* symlist[10]; if(symlist[0] == S) { symlist[0] = pkglookup("panicindex", runtimepkg); symlist[1] = pkglookup("panicslice", runtimepkg); symlist[2] = pkglookup("throwinit", runtimepkg); symlist[3] = pkglookup("panic", runtimepkg); symlist[4] = pkglookup("panicwrap", runtimepkg); symlist[5] = pkglookup("throwreturn", runtimepkg); symlist[6] = pkglookup("selectgo", runtimepkg); symlist[7] = pkglookup("block", runtimepkg); } if(p->to.node == nil) return 0; s = p->to.node->sym; if(s == S) return 0; for(i=0; symlist[i]!=S; i++) if(s == symlist[i]) return 1; return 0; } // JMP chasing and removal. // // The code generator depends on being able to write out jump // instructions that it can jump to now but fill in later. // the linker will resolve them nicely, but they make the code // longer and more difficult to follow during debugging. // Remove them. /* what instruction does a JMP to p eventually land on? */ static Prog* chasejmp(Prog *p, int *jmploop) { int n; n = 0; while(p != P && p->as == AJMP && p->to.type == D_BRANCH) { if(++n > 10) { *jmploop = 1; break; } p = p->to.u.branch; } return p; } /* * reuse reg pointer for mark/sweep state. * leave reg==nil at end because alive==nil. */ #define alive ((void*)0) #define dead ((void*)1) /* mark all code reachable from firstp as alive */ static void mark(Prog *firstp) { Prog *p; for(p=firstp; p; p=p->link) { if(p->opt != dead) break; p->opt = alive; if(p->as != ACALL && p->to.type == D_BRANCH && p->to.u.branch) mark(p->to.u.branch); if(p->as == AJMP || p->as == ARET || p->as == AUNDEF) break; } } void fixjmp(Prog *firstp) { int jmploop; Prog *p, *last; if(debug['R'] && debug['v']) print("\nfixjmp\n"); // pass 1: resolve jump to jump, mark all code as dead. jmploop = 0; for(p=firstp; p; p=p->link) { if(debug['R'] && debug['v']) print("%P\n", p); if(p->as != ACALL && p->to.type == D_BRANCH && p->to.u.branch && p->to.u.branch->as == AJMP) { p->to.u.branch = chasejmp(p->to.u.branch, &jmploop); if(debug['R'] && debug['v']) print("->%P\n", p); } p->opt = dead; } if(debug['R'] && debug['v']) print("\n"); // pass 2: mark all reachable code alive mark(firstp); // pass 3: delete dead code (mostly JMPs). last = nil; for(p=firstp; p; p=p->link) { if(p->opt == dead) { if(p->link == P && p->as == ARET && last && last->as != ARET) { // This is the final ARET, and the code so far doesn't have one. // Let it stay. The register allocator assumes that all live code in // the function can be traversed by starting at all the RET instructions // and following predecessor links. If we remove the final RET, // this assumption will not hold in the case of an infinite loop // at the end of a function. // Keep the RET but mark it dead for the liveness analysis. p->mode = 1; } else { if(debug['R'] && debug['v']) print("del %P\n", p); continue; } } if(last) last->link = p; last = p; } last->link = P; // pass 4: elide JMP to next instruction. // only safe if there are no jumps to JMPs anymore. if(!jmploop) { last = nil; for(p=firstp; p; p=p->link) { if(p->as == AJMP && p->to.type == D_BRANCH && p->to.u.branch == p->link) { if(debug['R'] && debug['v']) print("del %P\n", p); continue; } if(last) last->link = p; last = p; } last->link = P; } if(debug['R'] && debug['v']) { print("\n"); for(p=firstp; p; p=p->link) print("%P\n", p); print("\n"); } } #undef alive #undef dead // Control flow analysis. The Flow structures hold predecessor and successor // information as well as basic loop analysis. // // graph = flowstart(firstp, sizeof(Flow)); // ... use flow graph ... // flowend(graph); // free graph // // Typical uses of the flow graph are to iterate over all the flow-relevant instructions: // // for(f = graph->start; f != nil; f = f->link) // // or, given an instruction f, to iterate over all the predecessors, which is // f->p1 and this list: // // for(f2 = f->p2; f2 != nil; f2 = f2->p2link) // // Often the Flow struct is embedded as the first field inside a larger struct S. // In that case casts are needed to convert Flow* to S* in many places but the // idea is the same. Pass sizeof(S) instead of sizeof(Flow) to flowstart. Graph* flowstart(Prog *firstp, int size) { int nf; Flow *f, *f1, *start, *last; Graph *graph; Prog *p; ProgInfo info; // Count and mark instructions to annotate. nf = 0; for(p = firstp; p != P; p = p->link) { p->opt = nil; // should be already, but just in case proginfo(&info, p); if(info.flags & Skip) continue; p->opt = (void*)1; nf++; } if(nf == 0) return nil; if(nf >= 20000) { // fatal("%S is too big (%d instructions)", curfn->nname->sym, nf); return nil; } // Allocate annotations and assign to instructions. graph = calloc(sizeof *graph + size*nf, 1); if(graph == nil) fatal("out of memory"); start = (Flow*)(graph+1); last = nil; f = start; for(p = firstp; p != P; p = p->link) { if(p->opt == nil) continue; p->opt = f; f->prog = p; if(last) last->link = f; last = f; f = (Flow*)((uchar*)f + size); } // Fill in pred/succ information. for(f = start; f != nil; f = f->link) { p = f->prog; proginfo(&info, p); if(!(info.flags & Break)) { f1 = f->link; f->s1 = f1; f1->p1 = f; } if(p->to.type == D_BRANCH) { if(p->to.u.branch == P) fatal("pnil %P", p); f1 = p->to.u.branch->opt; if(f1 == nil) fatal("fnil %P / %P", p, p->to.u.branch); if(f1 == f) { //fatal("self loop %P", p); continue; } f->s2 = f1; f->p2link = f1->p2; f1->p2 = f; } } graph->start = start; graph->num = nf; return graph; } void flowend(Graph *graph) { Flow *f; for(f = graph->start; f != nil; f = f->link) f->prog->opt = nil; free(graph); } /* * find looping structure * * 1) find reverse postordering * 2) find approximate dominators, * the actual dominators if the flow graph is reducible * otherwise, dominators plus some other non-dominators. * See Matthew S. Hecht and Jeffrey D. Ullman, * "Analysis of a Simple Algorithm for Global Data Flow Problems", * Conf. Record of ACM Symp. on Principles of Prog. Langs, Boston, Massachusetts, * Oct. 1-3, 1973, pp. 207-217. * 3) find all nodes with a predecessor dominated by the current node. * such a node is a loop head. * recursively, all preds with a greater rpo number are in the loop */ static int32 postorder(Flow *r, Flow **rpo2r, int32 n) { Flow *r1; r->rpo = 1; r1 = r->s1; if(r1 && !r1->rpo) n = postorder(r1, rpo2r, n); r1 = r->s2; if(r1 && !r1->rpo) n = postorder(r1, rpo2r, n); rpo2r[n] = r; n++; return n; } static int32 rpolca(int32 *idom, int32 rpo1, int32 rpo2) { int32 t; if(rpo1 == -1) return rpo2; while(rpo1 != rpo2){ if(rpo1 > rpo2){ t = rpo2; rpo2 = rpo1; rpo1 = t; } while(rpo1 < rpo2){ t = idom[rpo2]; if(t >= rpo2) fatal("bad idom"); rpo2 = t; } } return rpo1; } static int doms(int32 *idom, int32 r, int32 s) { while(s > r) s = idom[s]; return s == r; } static int loophead(int32 *idom, Flow *r) { int32 src; src = r->rpo; if(r->p1 != nil && doms(idom, src, r->p1->rpo)) return 1; for(r = r->p2; r != nil; r = r->p2link) if(doms(idom, src, r->rpo)) return 1; return 0; } static void loopmark(Flow **rpo2r, int32 head, Flow *r) { if(r->rpo < head || r->active == head) return; r->active = head; r->loop += LOOP; if(r->p1 != nil) loopmark(rpo2r, head, r->p1); for(r = r->p2; r != nil; r = r->p2link) loopmark(rpo2r, head, r); } void flowrpo(Graph *g) { Flow *r1; int32 i, d, me, nr, *idom; Flow **rpo2r; free(g->rpo); g->rpo = calloc(g->num*sizeof g->rpo[0], 1); idom = calloc(g->num*sizeof idom[0], 1); if(g->rpo == nil || idom == nil) fatal("out of memory"); for(r1 = g->start; r1 != nil; r1 = r1->link) r1->active = 0; rpo2r = g->rpo; d = postorder(g->start, rpo2r, 0); nr = g->num; if(d > nr) fatal("too many reg nodes %d %d", d, nr); nr = d; for(i = 0; i < nr / 2; i++) { r1 = rpo2r[i]; rpo2r[i] = rpo2r[nr - 1 - i]; rpo2r[nr - 1 - i] = r1; } for(i = 0; i < nr; i++) rpo2r[i]->rpo = i; idom[0] = 0; for(i = 0; i < nr; i++) { r1 = rpo2r[i]; me = r1->rpo; d = -1; // rpo2r[r->rpo] == r protects against considering dead code, // which has r->rpo == 0. if(r1->p1 != nil && rpo2r[r1->p1->rpo] == r1->p1 && r1->p1->rpo < me) d = r1->p1->rpo; for(r1 = r1->p2; r1 != nil; r1 = r1->p2link) if(rpo2r[r1->rpo] == r1 && r1->rpo < me) d = rpolca(idom, d, r1->rpo); idom[i] = d; } for(i = 0; i < nr; i++) { r1 = rpo2r[i]; r1->loop++; if(r1->p2 != nil && loophead(idom, r1)) loopmark(rpo2r, i, r1); } free(idom); for(r1 = g->start; r1 != nil; r1 = r1->link) r1->active = 0; } Flow* uniqp(Flow *r) { Flow *r1; r1 = r->p1; if(r1 == nil) { r1 = r->p2; if(r1 == nil || r1->p2link != nil) return nil; } else if(r->p2 != nil) return nil; return r1; } Flow* uniqs(Flow *r) { Flow *r1; r1 = r->s1; if(r1 == nil) { r1 = r->s2; if(r1 == nil) return nil; } else if(r->s2 != nil) return nil; return r1; } // The compilers assume they can generate temporary variables // as needed to preserve the right semantics or simplify code // generation and the back end will still generate good code. // This results in a large number of ephemeral temporary variables. // Merge temps with non-overlapping lifetimes and equal types using the // greedy algorithm in Poletto and Sarkar, "Linear Scan Register Allocation", // ACM TOPLAS 1999. typedef struct TempVar TempVar; typedef struct TempFlow TempFlow; struct TempVar { Node *node; TempFlow *def; // definition of temp var TempFlow *use; // use list, chained through TempFlow.uselink TempVar *freelink; // next free temp in Type.opt list TempVar *merge; // merge var with this one vlong start; // smallest Prog.pc in live range vlong end; // largest Prog.pc in live range uchar addr; // address taken - no accurate end uchar removed; // removed from program }; struct TempFlow { Flow f; TempFlow *uselink; }; static int startcmp(const void *va, const void *vb) { TempVar *a, *b; a = *(TempVar**)va; b = *(TempVar**)vb; if(a->start < b->start) return -1; if(a->start > b->start) return +1; return 0; } // Is n available for merging? static int canmerge(Node *n) { return n->class == PAUTO && strncmp(n->sym->name, "autotmp", 7) == 0; } static void mergewalk(TempVar*, TempFlow*, uint32); static void varkillwalk(TempVar*, TempFlow*, uint32); void mergetemp(Prog *firstp) { int i, j, nvar, ninuse, nfree, nkill; TempVar *var, *v, *v1, **bystart, **inuse; TempFlow *r; NodeList *l, **lp; Node *n; Prog *p, *p1; Type *t; ProgInfo info, info1; int32 gen; Graph *g; enum { Debug = 0 }; g = flowstart(firstp, sizeof(TempFlow)); if(g == nil) return; // Build list of all mergeable variables. nvar = 0; for(l = curfn->dcl; l != nil; l = l->next) if(canmerge(l->n)) nvar++; var = calloc(nvar*sizeof var[0], 1); nvar = 0; for(l = curfn->dcl; l != nil; l = l->next) { n = l->n; if(canmerge(n)) { v = &var[nvar++]; n->opt = v; v->node = n; } } // Build list of uses. // We assume that the earliest reference to a temporary is its definition. // This is not true of variables in general but our temporaries are all // single-use (that's why we have so many!). for(r = (TempFlow*)g->start; r != nil; r = (TempFlow*)r->f.link) { p = r->f.prog; proginfo(&info, p); if(p->from.node != N && p->from.node->opt && p->to.node != N && p->to.node->opt) fatal("double node %P", p); if((n = p->from.node) != N && (v = n->opt) != nil || (n = p->to.node) != N && (v = n->opt) != nil) { if(v->def == nil) v->def = r; r->uselink = v->use; v->use = r; if(n == p->from.node && (info.flags & LeftAddr)) v->addr = 1; } } if(Debug > 1) dumpit("before", g->start, 0); nkill = 0; // Special case. for(v = var; v < var+nvar; v++) { if(v->addr) continue; // Used in only one instruction, which had better be a write. if((r = v->use) != nil && r->uselink == nil) { p = r->f.prog; proginfo(&info, p); if(p->to.node == v->node && (info.flags & RightWrite) && !(info.flags & RightRead)) { p->as = ANOP; p->to = zprog.to; v->removed = 1; if(Debug) print("drop write-only %S\n", v->node->sym); } else fatal("temp used and not set: %P", p); nkill++; continue; } // Written in one instruction, read in the next, otherwise unused, // no jumps to the next instruction. Happens mainly in 386 compiler. if((r = v->use) != nil && r->f.link == &r->uselink->f && r->uselink->uselink == nil && uniqp(r->f.link) == &r->f) { p = r->f.prog; proginfo(&info, p); p1 = r->f.link->prog; proginfo(&info1, p1); enum { SizeAny = SizeB | SizeW | SizeL | SizeQ | SizeF | SizeD, }; if(p->from.node == v->node && p1->to.node == v->node && (info.flags & Move) && !((info.flags|info1.flags) & (LeftAddr|RightAddr)) && (info.flags & SizeAny) == (info1.flags & SizeAny)) { p1->from = p->from; excise(&r->f); v->removed = 1; if(Debug) print("drop immediate-use %S\n", v->node->sym); } nkill++; continue; } } // Traverse live range of each variable to set start, end. // Each flood uses a new value of gen so that we don't have // to clear all the r->f.active words after each variable. gen = 0; for(v = var; v < var+nvar; v++) { gen++; for(r = v->use; r != nil; r = r->uselink) mergewalk(v, r, gen); if(v->addr) { gen++; for(r = v->use; r != nil; r = r->uselink) varkillwalk(v, r, gen); } } // Sort variables by start. bystart = malloc(nvar*sizeof bystart[0]); for(i=0; iremoved) continue; // Expire no longer in use. while(ninuse > 0 && inuse[ninuse-1]->end < v->start) { v1 = inuse[--ninuse]; inuse[--nfree] = v1; } // Find old temp to reuse if possible. t = v->node->type; for(j=nfree; jnode->type) && v->node->addrtaken == v1->node->addrtaken) { inuse[j] = inuse[nfree++]; if(v1->merge) v->merge = v1->merge; else v->merge = v1; nkill++; break; } } // Sort v into inuse. j = ninuse++; while(j > 0 && inuse[j-1]->end < v->end) { inuse[j] = inuse[j-1]; j--; } inuse[j] = v; } if(Debug) { print("%S [%d - %d]\n", curfn->nname->sym, nvar, nkill); for(v=var; vnode, v->node->type, v->start, v->end); if(v->addr) print(" addr=1"); if(v->removed) print(" dead=1"); if(v->merge) print(" merge %#N", v->merge->node); if(v->start == v->end) print(" %P", v->def->f.prog); print("\n"); } if(Debug > 1) dumpit("after", g->start, 0); } // Update node references to use merged temporaries. for(r = (TempFlow*)g->start; r != nil; r = (TempFlow*)r->f.link) { p = r->f.prog; if((n = p->from.node) != N && (v = n->opt) != nil && v->merge != nil) p->from.node = v->merge->node; if((n = p->to.node) != N && (v = n->opt) != nil && v->merge != nil) p->to.node = v->merge->node; } // Delete merged nodes from declaration list. for(lp = &curfn->dcl; (l = *lp); ) { curfn->dcl->end = l; n = l->n; v = n->opt; if(v && (v->merge || v->removed)) { *lp = l->next; continue; } lp = &l->next; } // Clear aux structures. for(v=var; vnode->opt = nil; free(var); free(bystart); free(inuse); flowend(g); } static void mergewalk(TempVar *v, TempFlow *r0, uint32 gen) { Prog *p; TempFlow *r1, *r, *r2; for(r1 = r0; r1 != nil; r1 = (TempFlow*)r1->f.p1) { if(r1->f.active == gen) break; r1->f.active = gen; p = r1->f.prog; if(v->end < p->pc) v->end = p->pc; if(r1 == v->def) { v->start = p->pc; break; } } for(r = r0; r != r1; r = (TempFlow*)r->f.p1) for(r2 = (TempFlow*)r->f.p2; r2 != nil; r2 = (TempFlow*)r2->f.p2link) mergewalk(v, r2, gen); } static void varkillwalk(TempVar *v, TempFlow *r0, uint32 gen) { Prog *p; TempFlow *r1, *r; for(r1 = r0; r1 != nil; r1 = (TempFlow*)r1->f.s1) { if(r1->f.active == gen) break; r1->f.active = gen; p = r1->f.prog; if(v->end < p->pc) v->end = p->pc; if(v->start > p->pc) v->start = p->pc; if(p->as == ARET || (p->as == AVARKILL && p->to.node == v->node)) break; } for(r = r0; r != r1; r = (TempFlow*)r->f.s1) varkillwalk(v, (TempFlow*)r->f.s2, gen); } // Eliminate redundant nil pointer checks. // // The code generation pass emits a CHECKNIL for every possibly nil pointer. // This pass removes a CHECKNIL if every predecessor path has already // checked this value for nil. // // Simple backwards flood from check to definition. // Run prog loop backward from end of program to beginning to avoid quadratic // behavior removing a run of checks. // // Assume that stack variables with address not taken can be loaded multiple times // from memory without being rechecked. Other variables need to be checked on // each load. typedef struct NilVar NilVar; typedef struct NilFlow NilFlow; struct NilFlow { Flow f; int kill; }; static void nilwalkback(NilFlow *rcheck); static void nilwalkfwd(NilFlow *rcheck); void nilopt(Prog *firstp) { NilFlow *r; Prog *p; Graph *g; int ncheck, nkill; g = flowstart(firstp, sizeof(NilFlow)); if(g == nil) return; if(debug_checknil > 1 /* || strcmp(curfn->nname->sym->name, "f1") == 0 */) dumpit("nilopt", g->start, 0); ncheck = 0; nkill = 0; for(r = (NilFlow*)g->start; r != nil; r = (NilFlow*)r->f.link) { p = r->f.prog; if(p->as != ACHECKNIL || !regtyp(&p->from)) continue; ncheck++; if(stackaddr(&p->from)) { if(debug_checknil && p->lineno > 1) warnl(p->lineno, "removed nil check of SP address"); r->kill = 1; continue; } nilwalkfwd(r); if(r->kill) { if(debug_checknil && p->lineno > 1) warnl(p->lineno, "removed nil check before indirect"); continue; } nilwalkback(r); if(r->kill) { if(debug_checknil && p->lineno > 1) warnl(p->lineno, "removed repeated nil check"); continue; } } for(r = (NilFlow*)g->start; r != nil; r = (NilFlow*)r->f.link) { if(r->kill) { nkill++; excise(&r->f); } } flowend(g); if(debug_checknil > 1) print("%S: removed %d of %d nil checks\n", curfn->nname->sym, nkill, ncheck); } static void nilwalkback(NilFlow *rcheck) { Prog *p; ProgInfo info; NilFlow *r; for(r = rcheck; r != nil; r = (NilFlow*)uniqp(&r->f)) { p = r->f.prog; proginfo(&info, p); if((info.flags & RightWrite) && sameaddr(&p->to, &rcheck->f.prog->from)) { // Found initialization of value we're checking for nil. // without first finding the check, so this one is unchecked. return; } if(r != rcheck && p->as == ACHECKNIL && sameaddr(&p->from, &rcheck->f.prog->from)) { rcheck->kill = 1; return; } } // Here is a more complex version that scans backward across branches. // It assumes rcheck->kill = 1 has been set on entry, and its job is to find a reason // to keep the check (setting rcheck->kill = 0). // It doesn't handle copying of aggregates as well as I would like, // nor variables with their address taken, // and it's too subtle to turn on this late in Go 1.2. Perhaps for Go 1.3. /* for(r1 = r0; r1 != nil; r1 = (NilFlow*)r1->f.p1) { if(r1->f.active == gen) break; r1->f.active = gen; p = r1->f.prog; // If same check, stop this loop but still check // alternate predecessors up to this point. if(r1 != rcheck && p->as == ACHECKNIL && sameaddr(&p->from, &rcheck->f.prog->from)) break; proginfo(&info, p); if((info.flags & RightWrite) && sameaddr(&p->to, &rcheck->f.prog->from)) { // Found initialization of value we're checking for nil. // without first finding the check, so this one is unchecked. rcheck->kill = 0; return; } if(r1->f.p1 == nil && r1->f.p2 == nil) { print("lost pred for %P\n", rcheck->f.prog); for(r1=r0; r1!=nil; r1=(NilFlow*)r1->f.p1) { proginfo(&info, r1->f.prog); print("\t%P %d %d %D %D\n", r1->f.prog, info.flags&RightWrite, sameaddr(&r1->f.prog->to, &rcheck->f.prog->from), &r1->f.prog->to, &rcheck->f.prog->from); } fatal("lost pred trail"); } } for(r = r0; r != r1; r = (NilFlow*)r->f.p1) for(r2 = (NilFlow*)r->f.p2; r2 != nil; r2 = (NilFlow*)r2->f.p2link) nilwalkback(rcheck, r2, gen); */ } static void nilwalkfwd(NilFlow *rcheck) { NilFlow *r, *last; Prog *p; ProgInfo info; // If the path down from rcheck dereferences the address // (possibly with a small offset) before writing to memory // and before any subsequent checks, it's okay to wait for // that implicit check. Only consider this basic block to // avoid problems like: // _ = *x // should panic // for {} // no writes but infinite loop may be considered visible last = nil; for(r = (NilFlow*)uniqs(&rcheck->f); r != nil; r = (NilFlow*)uniqs(&r->f)) { p = r->f.prog; proginfo(&info, p); if((info.flags & LeftRead) && smallindir(&p->from, &rcheck->f.prog->from)) { rcheck->kill = 1; return; } if((info.flags & (RightRead|RightWrite)) && smallindir(&p->to, &rcheck->f.prog->from)) { rcheck->kill = 1; return; } // Stop if another nil check happens. if(p->as == ACHECKNIL) return; // Stop if value is lost. if((info.flags & RightWrite) && sameaddr(&p->to, &rcheck->f.prog->from)) return; // Stop if memory write. if((info.flags & RightWrite) && !regtyp(&p->to)) return; // Stop if we jump backward. // This test is valid because all the NilFlow* are pointers into // a single contiguous array. We will need to add an explicit // numbering when the code is converted to Go. if(last != nil && r <= last) return; last = r; } } go/src/cmd/gc/popt.h0100644000000000000000000000223112412656734014550 0ustar00rootroot00000000000000// Copyright 2013 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. typedef struct Flow Flow; typedef struct Graph Graph; struct Flow { Prog* prog; // actual instruction Flow* p1; // predecessors of this instruction: p1, Flow* p2; // and then p2 linked though p2link. Flow* p2link; Flow* s1; // successors of this instruction (at most two: s1 and s2). Flow* s2; Flow* link; // next instruction in function code int32 active; // usable by client int32 rpo; // reverse post ordering uint16 loop; // x5 for every loop uchar refset; // diagnostic generated }; struct Graph { Flow* start; int num; // After calling flowrpo, rpo lists the flow nodes in reverse postorder, // and each non-dead Flow node f has g->rpo[f->rpo] == f. Flow** rpo; }; void fixjmp(Prog*); Graph* flowstart(Prog*, int); void flowrpo(Graph*); void flowend(Graph*); void mergetemp(Prog*); void nilopt(Prog*); int noreturn(Prog*); int regtyp(Addr*); int sameaddr(Addr*, Addr*); int smallindir(Addr*, Addr*); int stackaddr(Addr*); Flow* uniqp(Flow*); Flow* uniqs(Flow*); go/src/cmd/gc/racewalk.c0100644000000000000000000003533712412656737015372 0ustar00rootroot00000000000000// 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. // The racewalk pass modifies the code tree for the function as follows: // // 1. It inserts a call to racefuncenter at the beginning of each function. // 2. It inserts a call to racefuncexit at the end of each function. // 3. It inserts a call to raceread before each memory read. // 4. It inserts a call to racewrite before each memory write. // // The rewriting is not yet complete. Certain nodes are not rewritten // but should be. #include #include #include "go.h" // TODO(dvyukov): do not instrument initialization as writes: // a := make([]int, 10) static void racewalklist(NodeList *l, NodeList **init); static void racewalknode(Node **np, NodeList **init, int wr, int skip); static int callinstr(Node **n, NodeList **init, int wr, int skip); static Node* uintptraddr(Node *n); static void makeaddable(Node *n); static Node* basenod(Node *n); static void foreach(Node *n, void(*f)(Node*, void*), void *c); static void hascallspred(Node *n, void *c); static void appendinit(Node **np, NodeList *init); static Node* detachexpr(Node *n, NodeList **init); // Do not instrument the following packages at all, // at best instrumentation would cause infinite recursion. static const char *omit_pkgs[] = {"runtime", "runtime/race"}; // Only insert racefuncenter/racefuncexit into the following packages. // Memory accesses in the packages are either uninteresting or will cause false positives. static const char *noinst_pkgs[] = {"sync", "sync/atomic"}; static int ispkgin(const char **pkgs, int n) { int i; if(myimportpath) { for(i=0; inname->sym->name, "forkAndExecInChild") == 0; } void racewalk(Node *fn) { Node *nd; Node *nodpc; char s[1024]; if(ispkgin(omit_pkgs, nelem(omit_pkgs)) || isforkfunc(fn)) return; if(!ispkgin(noinst_pkgs, nelem(noinst_pkgs))) { racewalklist(fn->nbody, nil); // nothing interesting for race detector in fn->enter racewalklist(fn->exit, nil); } // nodpc is the PC of the caller as extracted by // getcallerpc. We use -widthptr(FP) for x86. // BUG: this will not work on arm. nodpc = nod(OXXX, nil, nil); *nodpc = *nodfp; nodpc->type = types[TUINTPTR]; nodpc->xoffset = -widthptr; nd = mkcall("racefuncenter", T, nil, nodpc); fn->enter = concat(list1(nd), fn->enter); nd = mkcall("racefuncexit", T, nil); fn->exit = list(fn->exit, nd); if(debug['W']) { snprint(s, sizeof(s), "after racewalk %S", fn->nname->sym); dumplist(s, fn->nbody); snprint(s, sizeof(s), "enter %S", fn->nname->sym); dumplist(s, fn->enter); snprint(s, sizeof(s), "exit %S", fn->nname->sym); dumplist(s, fn->exit); } } static void racewalklist(NodeList *l, NodeList **init) { NodeList *instr; for(; l; l = l->next) { instr = nil; racewalknode(&l->n, &instr, 0, 0); if(init == nil) l->n->ninit = concat(l->n->ninit, instr); else *init = concat(*init, instr); } } // walkexpr and walkstmt combined // walks the tree and adds calls to the // instrumentation code to top-level (statement) nodes' init static void racewalknode(Node **np, NodeList **init, int wr, int skip) { Node *n, *n1; NodeList *l; NodeList *fini; n = *np; if(n == N) return; if(debug['w'] > 1) dump("racewalk-before", n); setlineno(n); if(init == nil) fatal("racewalk: bad init list"); if(init == &n->ninit) { // If init == &n->ninit and n->ninit is non-nil, // racewalknode might append it to itself. // nil it out and handle it separately before putting it back. l = n->ninit; n->ninit = nil; racewalklist(l, nil); racewalknode(&n, &l, wr, skip); // recurse with nil n->ninit appendinit(&n, l); *np = n; return; } racewalklist(n->ninit, nil); switch(n->op) { default: fatal("racewalk: unknown node type %O", n->op); case OASOP: case OAS: case OAS2: case OAS2RECV: case OAS2FUNC: case OAS2MAPR: racewalknode(&n->left, init, 1, 0); racewalknode(&n->right, init, 0, 0); goto ret; case OCFUNC: case OVARKILL: // can't matter goto ret; case OBLOCK: if(n->list == nil) goto ret; switch(n->list->n->op) { case OCALLFUNC: case OCALLMETH: case OCALLINTER: // Blocks are used for multiple return function calls. // x, y := f() becomes BLOCK{CALL f, AS x [SP+0], AS y [SP+n]} // We don't want to instrument between the statements because it will // smash the results. racewalknode(&n->list->n, &n->list->n->ninit, 0, 0); fini = nil; racewalklist(n->list->next, &fini); n->list = concat(n->list, fini); break; default: // Ordinary block, for loop initialization or inlined bodies. racewalklist(n->list, nil); break; } goto ret; case ODEFER: racewalknode(&n->left, init, 0, 0); goto ret; case OPROC: racewalknode(&n->left, init, 0, 0); goto ret; case OCALLINTER: racewalknode(&n->left, init, 0, 0); goto ret; case OCALLFUNC: racewalknode(&n->left, init, 0, 0); goto ret; case ONOT: case OMINUS: case OPLUS: case OREAL: case OIMAG: case OCOM: racewalknode(&n->left, init, wr, 0); goto ret; case ODOTINTER: racewalknode(&n->left, init, 0, 0); goto ret; case ODOT: racewalknode(&n->left, init, 0, 1); callinstr(&n, init, wr, skip); goto ret; case ODOTPTR: // dst = (*x).f with implicit *; otherwise it's ODOT+OIND racewalknode(&n->left, init, 0, 0); callinstr(&n, init, wr, skip); goto ret; case OIND: // *p racewalknode(&n->left, init, 0, 0); callinstr(&n, init, wr, skip); goto ret; case OSPTR: case OLEN: case OCAP: racewalknode(&n->left, init, 0, 0); if(istype(n->left->type, TMAP)) { n1 = nod(OCONVNOP, n->left, N); n1->type = ptrto(types[TUINT8]); n1 = nod(OIND, n1, N); typecheck(&n1, Erv); callinstr(&n1, init, 0, skip); } goto ret; case OLSH: case ORSH: case OLROT: case OAND: case OANDNOT: case OOR: case OXOR: case OSUB: case OMUL: case OHMUL: case OEQ: case ONE: case OLT: case OLE: case OGE: case OGT: case OADD: case OCOMPLEX: racewalknode(&n->left, init, wr, 0); racewalknode(&n->right, init, wr, 0); goto ret; case OANDAND: case OOROR: racewalknode(&n->left, init, wr, 0); // walk has ensured the node has moved to a location where // side effects are safe. // n->right may not be executed, // so instrumentation goes to n->right->ninit, not init. racewalknode(&n->right, &n->right->ninit, wr, 0); goto ret; case ONAME: callinstr(&n, init, wr, skip); goto ret; case OCONV: racewalknode(&n->left, init, wr, 0); goto ret; case OCONVNOP: racewalknode(&n->left, init, wr, 0); goto ret; case ODIV: case OMOD: racewalknode(&n->left, init, wr, 0); racewalknode(&n->right, init, wr, 0); goto ret; case OINDEX: if(!isfixedarray(n->left->type)) racewalknode(&n->left, init, 0, 0); else if(!islvalue(n->left)) { // index of unaddressable array, like Map[k][i]. racewalknode(&n->left, init, wr, 0); racewalknode(&n->right, init, 0, 0); goto ret; } racewalknode(&n->right, init, 0, 0); if(n->left->type->etype != TSTRING) callinstr(&n, init, wr, skip); goto ret; case OSLICE: case OSLICEARR: case OSLICE3: case OSLICE3ARR: // Seems to only lead to double instrumentation. //racewalknode(&n->left, init, 0, 0); goto ret; case OADDR: racewalknode(&n->left, init, 0, 1); goto ret; case OEFACE: racewalknode(&n->left, init, 0, 0); racewalknode(&n->right, init, 0, 0); goto ret; case OITAB: racewalknode(&n->left, init, 0, 0); goto ret; // should not appear in AST by now case OSEND: case ORECV: case OCLOSE: case ONEW: case OXCASE: case OXFALL: case OCASE: case OPANIC: case ORECOVER: case OCONVIFACE: case OCMPIFACE: case OMAKECHAN: case OMAKEMAP: case OMAKESLICE: case OCALL: case OCOPY: case OAPPEND: case ORUNESTR: case OARRAYBYTESTR: case OARRAYRUNESTR: case OSTRARRAYBYTE: case OSTRARRAYRUNE: case OINDEXMAP: // lowered to call case OCMPSTR: case OADDSTR: case ODOTTYPE: case ODOTTYPE2: case OAS2DOTTYPE: case OCALLPART: // lowered to PTRLIT case OCLOSURE: // lowered to PTRLIT case ORANGE: // lowered to ordinary for loop case OARRAYLIT: // lowered to assignments case OMAPLIT: case OSTRUCTLIT: yyerror("racewalk: %O must be lowered by now", n->op); goto ret; // impossible nodes: only appear in backend. case ORROTC: case OEXTEND: yyerror("racewalk: %O cannot exist now", n->op); goto ret; // just do generic traversal case OFOR: case OIF: case OCALLMETH: case ORETURN: case ORETJMP: case OSWITCH: case OSELECT: case OEMPTY: case OBREAK: case OCONTINUE: case OFALL: case OGOTO: case OLABEL: goto ret; // does not require instrumentation case OPRINT: // don't bother instrumenting it case OPRINTN: // don't bother instrumenting it case OCHECKNIL: // always followed by a read. case OPARAM: // it appears only in fn->exit to copy heap params back case OCLOSUREVAR:// immutable pointer to captured variable case ODOTMETH: // either part of CALLMETH or CALLPART (lowered to PTRLIT) case OINDREG: // at this stage, only n(SP) nodes from nodarg case ODCL: // declarations (without value) cannot be races case ODCLCONST: case ODCLTYPE: case OTYPE: case ONONAME: case OLITERAL: case OSLICESTR: // always preceded by bounds checking, avoid double instrumentation. case OTYPESW: // ignored by code generation, do not instrument. goto ret; } ret: if(n->op != OBLOCK) // OBLOCK is handled above in a special way. racewalklist(n->list, init); racewalknode(&n->ntest, &n->ntest->ninit, 0, 0); racewalknode(&n->nincr, &n->nincr->ninit, 0, 0); racewalklist(n->nbody, nil); racewalklist(n->nelse, nil); racewalklist(n->rlist, nil); *np = n; } static int isartificial(Node *n) { // compiler-emitted artificial things that we do not want to instrument, // cant' possibly participate in a data race. if(n->op == ONAME && n->sym != S && n->sym->name != nil) { if(strcmp(n->sym->name, "_") == 0) return 1; // autotmp's are always local if(strncmp(n->sym->name, "autotmp_", sizeof("autotmp_")-1) == 0) return 1; // statictmp's are read-only if(strncmp(n->sym->name, "statictmp_", sizeof("statictmp_")-1) == 0) return 1; // go.itab is accessed only by the compiler and runtime (assume safe) if(n->sym->pkg && n->sym->pkg->name && strcmp(n->sym->pkg->name, "go.itab") == 0) return 1; } return 0; } static int callinstr(Node **np, NodeList **init, int wr, int skip) { Node *f, *b, *n; Type *t; int class, hascalls; n = *np; //print("callinstr for %+N [ %O ] etype=%E class=%d\n", // n, n->op, n->type ? n->type->etype : -1, n->class); if(skip || n->type == T || n->type->etype >= TIDEAL) return 0; t = n->type; if(isartificial(n)) return 0; b = basenod(n); // it skips e.g. stores to ... parameter array if(isartificial(b)) return 0; class = b->class; // BUG: we _may_ want to instrument PAUTO sometimes // e.g. if we've got a local variable/method receiver // that has got a pointer inside. Whether it points to // the heap or not is impossible to know at compile time if((class&PHEAP) || class == PPARAMREF || class == PEXTERN || b->op == OINDEX || b->op == ODOTPTR || b->op == OIND || b->op == OXDOT) { hascalls = 0; foreach(n, hascallspred, &hascalls); if(hascalls) { n = detachexpr(n, init); *np = n; } n = treecopy(n); makeaddable(n); if(t->etype == TSTRUCT || isfixedarray(t)) { f = mkcall(wr ? "racewriterange" : "racereadrange", T, init, uintptraddr(n), nodintconst(t->width)); } else f = mkcall(wr ? "racewrite" : "raceread", T, init, uintptraddr(n)); *init = list(*init, f); return 1; } return 0; } // makeaddable returns a node whose memory location is the // same as n, but which is addressable in the Go language // sense. // This is different from functions like cheapexpr that may make // a copy of their argument. static void makeaddable(Node *n) { // The arguments to uintptraddr technically have an address but // may not be addressable in the Go sense: for example, in the case // of T(v).Field where T is a struct type and v is // an addressable value. switch(n->op) { case OINDEX: if(isfixedarray(n->left->type)) makeaddable(n->left); break; case ODOT: case OXDOT: // Turn T(v).Field into v.Field if(n->left->op == OCONVNOP) n->left = n->left->left; makeaddable(n->left); break; case ODOTPTR: default: // nothing to do break; } } static Node* uintptraddr(Node *n) { Node *r; r = nod(OADDR, n, N); r->bounded = 1; r = conv(r, types[TUNSAFEPTR]); r = conv(r, types[TUINTPTR]); return r; } // basenod returns the simplest child node of n pointing to the same // memory area. static Node* basenod(Node *n) { for(;;) { if(n->op == ODOT || n->op == OXDOT || n->op == OCONVNOP || n->op == OCONV || n->op == OPAREN) { n = n->left; continue; } if(n->op == OINDEX && isfixedarray(n->type)) { n = n->left; continue; } break; } return n; } static Node* detachexpr(Node *n, NodeList **init) { Node *addr, *as, *ind, *l; addr = nod(OADDR, n, N); l = temp(ptrto(n->type)); as = nod(OAS, l, addr); typecheck(&as, Etop); walkexpr(&as, init); *init = list(*init, as); ind = nod(OIND, l, N); typecheck(&ind, Erv); walkexpr(&ind, init); return ind; } static void foreachnode(Node *n, void(*f)(Node*, void*), void *c) { if(n) f(n, c); } static void foreachlist(NodeList *l, void(*f)(Node*, void*), void *c) { for(; l; l = l->next) foreachnode(l->n, f, c); } static void foreach(Node *n, void(*f)(Node*, void*), void *c) { foreachlist(n->ninit, f, c); foreachnode(n->left, f, c); foreachnode(n->right, f, c); foreachlist(n->list, f, c); foreachnode(n->ntest, f, c); foreachnode(n->nincr, f, c); foreachlist(n->nbody, f, c); foreachlist(n->nelse, f, c); foreachlist(n->rlist, f, c); } static void hascallspred(Node *n, void *c) { switch(n->op) { case OCALL: case OCALLFUNC: case OCALLMETH: case OCALLINTER: (*(int*)c)++; } } // appendinit is like addinit in subr.c // but appends rather than prepends. static void appendinit(Node **np, NodeList *init) { Node *n; if(init == nil) return; n = *np; switch(n->op) { case ONAME: case OLITERAL: // There may be multiple refs to this node; // introduce OCONVNOP to hold init list. n = nod(OCONVNOP, n, N); n->type = n->left->type; n->typecheck = 1; *np = n; break; } n->ninit = concat(n->ninit, init); n->ullman = UINF; } go/src/cmd/gc/range.c0100644000000000000000000001504112412656737014663 0ustar00rootroot00000000000000// Copyright 2009 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. /* * range */ #include #include #include "go.h" void typecheckrange(Node *n) { char *why; Type *t, *t1, *t2; Node *v1, *v2; NodeList *ll; // delicate little dance. see typecheckas2 for(ll=n->list; ll; ll=ll->next) if(ll->n->defn != n) typecheck(&ll->n, Erv | Easgn); typecheck(&n->right, Erv); if((t = n->right->type) == T) goto out; if(isptr[t->etype] && isfixedarray(t->type)) t = t->type; n->type = t; switch(t->etype) { default: yyerror("cannot range over %lN", n->right); goto out; case TARRAY: t1 = types[TINT]; t2 = t->type; break; case TMAP: t1 = t->down; t2 = t->type; break; case TCHAN: if(!(t->chan & Crecv)) { yyerror("invalid operation: range %N (receive from send-only type %T)", n->right, n->right->type); goto out; } t1 = t->type; t2 = nil; if(count(n->list) == 2) goto toomany; break; case TSTRING: t1 = types[TINT]; t2 = runetype; break; } if(count(n->list) > 2) { toomany: yyerror("too many variables in range"); } v1 = n->list->n; v2 = N; if(n->list->next) v2 = n->list->next->n; // this is not only a optimization but also a requirement in the spec. // "if the second iteration variable is the blank identifier, the range // clause is equivalent to the same clause with only the first variable // present." if(isblank(v2)) { n->list = list1(v1); v2 = N; } if(v1->defn == n) v1->type = t1; else if(v1->type != T && assignop(t1, v1->type, &why) == 0) yyerror("cannot assign type %T to %lN in range%s", t1, v1, why); if(v2) { if(v2->defn == n) v2->type = t2; else if(v2->type != T && assignop(t2, v2->type, &why) == 0) yyerror("cannot assign type %T to %lN in range%s", t2, v2, why); } out: typechecklist(n->nbody, Etop); // second half of dance n->typecheck = 1; for(ll=n->list; ll; ll=ll->next) if(ll->n->typecheck == 0) typecheck(&ll->n, Erv | Easgn); } void walkrange(Node *n) { Node *ohv1, *hv1, *hv2; // hidden (old) val 1, 2 Node *ha, *hit; // hidden aggregate, iterator Node *hn, *hp; // hidden len, pointer Node *hb; // hidden bool Node *a, *v1, *v2; // not hidden aggregate, val 1, 2 Node *fn, *tmp; Node *keyname, *valname; Node *key, *val; NodeList *body, *init; Type *th, *t; int lno; t = n->type; init = nil; a = n->right; lno = setlineno(a); v1 = n->list->n; v2 = N; if(n->list->next && !isblank(n->list->next->n)) v2 = n->list->next->n; // n->list has no meaning anymore, clear it // to avoid erroneous processing by racewalk. n->list = nil; hv2 = N; switch(t->etype) { default: fatal("walkrange"); case TARRAY: // orderstmt arranged for a copy of the array/slice variable if needed. ha = a; hv1 = temp(types[TINT]); hn = temp(types[TINT]); hp = nil; init = list(init, nod(OAS, hv1, N)); init = list(init, nod(OAS, hn, nod(OLEN, ha, N))); if(v2) { hp = temp(ptrto(n->type->type)); tmp = nod(OINDEX, ha, nodintconst(0)); tmp->bounded = 1; init = list(init, nod(OAS, hp, nod(OADDR, tmp, N))); } n->ntest = nod(OLT, hv1, hn); n->nincr = nod(OAS, hv1, nod(OADD, hv1, nodintconst(1))); if(v2 == N) body = list1(nod(OAS, v1, hv1)); else { a = nod(OAS2, N, N); a->list = list(list1(v1), v2); a->rlist = list(list1(hv1), nod(OIND, hp, N)); body = list1(a); // Advance pointer as part of increment. // We used to advance the pointer before executing the loop body, // but doing so would make the pointer point past the end of the // array during the final iteration, possibly causing another unrelated // piece of memory not to be garbage collected until the loop finished. // Advancing during the increment ensures that the pointer p only points // pass the end of the array during the final "p++; i++; if(i >= len(x)) break;", // after which p is dead, so it cannot confuse the collector. tmp = nod(OADD, hp, nodintconst(t->type->width)); tmp->type = hp->type; tmp->typecheck = 1; tmp->right->type = types[tptr]; tmp->right->typecheck = 1; a = nod(OAS, hp, tmp); typecheck(&a, Etop); n->nincr->ninit = list1(a); } break; case TMAP: // orderstmt allocated the iterator for us. // we only use a once, so no copy needed. ha = a; th = hiter(t); hit = n->alloc; hit->type = th; n->left = N; keyname = newname(th->type->sym); // depends on layout of iterator struct. See reflect.c:hiter valname = newname(th->type->down->sym); // ditto fn = syslook("mapiterinit", 1); argtype(fn, t->down); argtype(fn, t->type); argtype(fn, th); init = list(init, mkcall1(fn, T, nil, typename(t), ha, nod(OADDR, hit, N))); n->ntest = nod(ONE, nod(ODOT, hit, keyname), nodnil()); fn = syslook("mapiternext", 1); argtype(fn, th); n->nincr = mkcall1(fn, T, nil, nod(OADDR, hit, N)); key = nod(ODOT, hit, keyname); key = nod(OIND, key, N); if(v2 == N) { a = nod(OAS, v1, key); } else { val = nod(ODOT, hit, valname); val = nod(OIND, val, N); a = nod(OAS2, N, N); a->list = list(list1(v1), v2); a->rlist = list(list1(key), val); } body = list1(a); break; case TCHAN: // orderstmt arranged for a copy of the channel variable. ha = a; n->ntest = N; hv1 = temp(t->type); if(haspointers(t->type)) init = list(init, nod(OAS, hv1, N)); hb = temp(types[TBOOL]); n->ntest = nod(ONE, hb, nodbool(0)); a = nod(OAS2RECV, N, N); a->typecheck = 1; a->list = list(list1(hv1), hb); a->rlist = list1(nod(ORECV, ha, N)); n->ntest->ninit = list1(a); body = list1(nod(OAS, v1, hv1)); break; case TSTRING: // orderstmt arranged for a copy of the string variable. ha = a; ohv1 = temp(types[TINT]); hv1 = temp(types[TINT]); init = list(init, nod(OAS, hv1, N)); if(v2 == N) a = nod(OAS, hv1, mkcall("stringiter", types[TINT], nil, ha, hv1)); else { hv2 = temp(runetype); a = nod(OAS2, N, N); a->list = list(list1(hv1), hv2); fn = syslook("stringiter2", 0); a->rlist = list1(mkcall1(fn, getoutargx(fn->type), nil, ha, hv1)); } n->ntest = nod(ONE, hv1, nodintconst(0)); n->ntest->ninit = list(list1(nod(OAS, ohv1, hv1)), a); body = list1(nod(OAS, v1, ohv1)); if(v2 != N) body = list(body, nod(OAS, v2, hv2)); break; } n->op = OFOR; typechecklist(init, Etop); n->ninit = concat(n->ninit, init); typechecklist(n->ntest->ninit, Etop); typecheck(&n->ntest, Erv); typecheck(&n->nincr, Etop); typechecklist(body, Etop); n->nbody = concat(body, n->nbody); walkstmt(&n); lineno = lno; } go/src/cmd/gc/reflect.c0100644000000000000000000010134512412656737015216 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" #include "../../pkg/runtime/mgc0.h" /* * runtime interface and reflection data structures */ static NodeList* signatlist; static Sym* dtypesym(Type*); static Sym* weaktypesym(Type*); static Sym* dalgsym(Type*); static Sym* dgcsym(Type*); static int sigcmp(Sig *a, Sig *b) { int i; i = strcmp(a->name, b->name); if(i != 0) return i; if(a->pkg == b->pkg) return 0; if(a->pkg == nil) return -1; if(b->pkg == nil) return +1; return strcmp(a->pkg->path->s, b->pkg->path->s); } static Sig* lsort(Sig *l, int(*f)(Sig*, Sig*)) { Sig *l1, *l2, *le; if(l == 0 || l->link == 0) return l; l1 = l; l2 = l; for(;;) { l2 = l2->link; if(l2 == 0) break; l2 = l2->link; if(l2 == 0) break; l1 = l1->link; } l2 = l1->link; l1->link = 0; l1 = lsort(l, f); l2 = lsort(l2, f); /* set up lead element */ if((*f)(l1, l2) < 0) { l = l1; l1 = l1->link; } else { l = l2; l2 = l2->link; } le = l; for(;;) { if(l1 == 0) { while(l2) { le->link = l2; le = l2; l2 = l2->link; } le->link = 0; break; } if(l2 == 0) { while(l1) { le->link = l1; le = l1; l1 = l1->link; } break; } if((*f)(l1, l2) < 0) { le->link = l1; le = l1; l1 = l1->link; } else { le->link = l2; le = l2; l2 = l2->link; } } le->link = 0; return l; } // Builds a type respresenting a Bucket structure for // the given map type. This type is not visible to users - // we include only enough information to generate a correct GC // program for it. // Make sure this stays in sync with ../../pkg/runtime/hashmap.c! enum { BUCKETSIZE = 8, MAXKEYSIZE = 128, MAXVALSIZE = 128, }; static Type* mapbucket(Type *t) { Type *keytype, *valtype; Type *bucket; Type *overflowfield, *keysfield, *valuesfield; int32 offset; if(t->bucket != T) return t->bucket; keytype = t->down; valtype = t->type; dowidth(keytype); dowidth(valtype); if(keytype->width > MAXKEYSIZE) keytype = ptrto(keytype); if(valtype->width > MAXVALSIZE) valtype = ptrto(valtype); bucket = typ(TSTRUCT); bucket->noalg = 1; // The first field is: uint8 topbits[BUCKETSIZE]. // We don't need to encode it as GC doesn't care about it. offset = BUCKETSIZE * 1; overflowfield = typ(TFIELD); overflowfield->type = ptrto(bucket); overflowfield->width = offset; // "width" is offset in structure overflowfield->sym = mal(sizeof(Sym)); // not important but needs to be set to give this type a name overflowfield->sym->name = "overflow"; offset += widthptr; // The keys are padded to the native integer alignment. // This is usually the same as widthptr; the exception (as usual) is nacl/amd64. if(widthreg > widthptr) offset += widthreg - widthptr; keysfield = typ(TFIELD); keysfield->type = typ(TARRAY); keysfield->type->type = keytype; keysfield->type->bound = BUCKETSIZE; keysfield->type->width = BUCKETSIZE * keytype->width; keysfield->width = offset; keysfield->sym = mal(sizeof(Sym)); keysfield->sym->name = "keys"; offset += BUCKETSIZE * keytype->width; valuesfield = typ(TFIELD); valuesfield->type = typ(TARRAY); valuesfield->type->type = valtype; valuesfield->type->bound = BUCKETSIZE; valuesfield->type->width = BUCKETSIZE * valtype->width; valuesfield->width = offset; valuesfield->sym = mal(sizeof(Sym)); valuesfield->sym->name = "values"; offset += BUCKETSIZE * valtype->width; // link up fields bucket->type = overflowfield; overflowfield->down = keysfield; keysfield->down = valuesfield; valuesfield->down = T; bucket->width = offset; bucket->local = t->local; t->bucket = bucket; bucket->map = t; return bucket; } // Builds a type respresenting a Hmap structure for // the given map type. This type is not visible to users - // we include only enough information to generate a correct GC // program for it. // Make sure this stays in sync with ../../pkg/runtime/hashmap.c! static Type* hmap(Type *t) { Type *h, *bucket; Type *bucketsfield, *oldbucketsfield; int32 offset; if(t->hmap != T) return t->hmap; bucket = mapbucket(t); h = typ(TSTRUCT); h->noalg = 1; offset = widthint; // count offset += 4; // flags offset += 4; // hash0 offset += 1; // B offset += 1; // keysize offset += 1; // valuesize offset = (offset + 1) / 2 * 2; offset += 2; // bucketsize offset = (offset + widthptr - 1) / widthptr * widthptr; bucketsfield = typ(TFIELD); bucketsfield->type = ptrto(bucket); bucketsfield->width = offset; bucketsfield->sym = mal(sizeof(Sym)); bucketsfield->sym->name = "buckets"; offset += widthptr; oldbucketsfield = typ(TFIELD); oldbucketsfield->type = ptrto(bucket); oldbucketsfield->width = offset; oldbucketsfield->sym = mal(sizeof(Sym)); oldbucketsfield->sym->name = "oldbuckets"; offset += widthptr; offset += widthptr; // nevacuate (last field in Hmap) // link up fields h->type = bucketsfield; bucketsfield->down = oldbucketsfield; oldbucketsfield->down = T; h->width = offset; h->local = t->local; t->hmap = h; h->map = t; return h; } Type* hiter(Type *t) { int32 n, off; Type *field[7]; Type *i; if(t->hiter != T) return t->hiter; // build a struct: // hash_iter { // key *Key // val *Value // t *MapType // h *Hmap // buckets *Bucket // bptr *Bucket // other [4]uintptr // } // must match ../../pkg/runtime/hashmap.c:hash_iter. field[0] = typ(TFIELD); field[0]->type = ptrto(t->down); field[0]->sym = mal(sizeof(Sym)); field[0]->sym->name = "key"; field[1] = typ(TFIELD); field[1]->type = ptrto(t->type); field[1]->sym = mal(sizeof(Sym)); field[1]->sym->name = "val"; field[2] = typ(TFIELD); field[2]->type = ptrto(types[TUINT8]); // TODO: is there a Type type? field[2]->sym = mal(sizeof(Sym)); field[2]->sym->name = "t"; field[3] = typ(TFIELD); field[3]->type = ptrto(hmap(t)); field[3]->sym = mal(sizeof(Sym)); field[3]->sym->name = "h"; field[4] = typ(TFIELD); field[4]->type = ptrto(mapbucket(t)); field[4]->sym = mal(sizeof(Sym)); field[4]->sym->name = "buckets"; field[5] = typ(TFIELD); field[5]->type = ptrto(mapbucket(t)); field[5]->sym = mal(sizeof(Sym)); field[5]->sym->name = "bptr"; // all other non-pointer fields field[6] = typ(TFIELD); field[6]->type = typ(TARRAY); field[6]->type->type = types[TUINTPTR]; field[6]->type->bound = 4; field[6]->type->width = 4 * widthptr; field[6]->sym = mal(sizeof(Sym)); field[6]->sym->name = "other"; // build iterator struct holding the above fields i = typ(TSTRUCT); i->noalg = 1; i->type = field[0]; off = 0; for(n = 0; n < 6; n++) { field[n]->down = field[n+1]; field[n]->width = off; off += field[n]->type->width; } field[6]->down = T; off += field[6]->type->width; if(off != 10 * widthptr) yyerror("hash_iter size not correct %d %d", off, 10 * widthptr); t->hiter = i; i->map = t; return i; } /* * f is method type, with receiver. * return function type, receiver as first argument (or not). */ Type* methodfunc(Type *f, Type *receiver) { NodeList *in, *out; Node *d; Type *t; in = nil; if(receiver) { d = nod(ODCLFIELD, N, N); d->type = receiver; in = list(in, d); } for(t=getinargx(f)->type; t; t=t->down) { d = nod(ODCLFIELD, N, N); d->type = t->type; d->isddd = t->isddd; in = list(in, d); } out = nil; for(t=getoutargx(f)->type; t; t=t->down) { d = nod(ODCLFIELD, N, N); d->type = t->type; out = list(out, d); } t = functype(N, in, out); if(f->nname) { // Link to name of original method function. t->nname = f->nname; } return t; } /* * return methods of non-interface type t, sorted by name. * generates stub functions as needed. */ static Sig* methods(Type *t) { Type *f, *mt, *it, *this; Sig *a, *b; Sym *method; // method type mt = methtype(t, 0); if(mt == T) return nil; expandmeth(mt); // type stored in interface word it = t; if(it->width > widthptr) it = ptrto(t); // make list of methods for t, // generating code if necessary. a = nil; for(f=mt->xmethod; f; f=f->down) { if(f->etype != TFIELD) fatal("methods: not field %T", f); if (f->type->etype != TFUNC || f->type->thistuple == 0) fatal("non-method on %T method %S %T\n", mt, f->sym, f); if (!getthisx(f->type)->type) fatal("receiver with no type on %T method %S %T\n", mt, f->sym, f); if(f->nointerface) continue; method = f->sym; if(method == nil) continue; // get receiver type for this particular method. // if pointer receiver but non-pointer t and // this is not an embedded pointer inside a struct, // method does not apply. this = getthisx(f->type)->type->type; if(isptr[this->etype] && this->type == t) continue; if(isptr[this->etype] && !isptr[t->etype] && f->embedded != 2 && !isifacemethod(f->type)) continue; b = mal(sizeof(*b)); b->link = a; a = b; a->name = method->name; if(!exportname(method->name)) { if(method->pkg == nil) fatal("methods: missing package"); a->pkg = method->pkg; } a->isym = methodsym(method, it, 1); a->tsym = methodsym(method, t, 0); a->type = methodfunc(f->type, t); a->mtype = methodfunc(f->type, nil); if(!(a->isym->flags & SymSiggen)) { a->isym->flags |= SymSiggen; if(!eqtype(this, it) || this->width < types[tptr]->width) { compiling_wrappers = 1; genwrapper(it, f, a->isym, 1); compiling_wrappers = 0; } } if(!(a->tsym->flags & SymSiggen)) { a->tsym->flags |= SymSiggen; if(!eqtype(this, t)) { compiling_wrappers = 1; genwrapper(t, f, a->tsym, 0); compiling_wrappers = 0; } } } return lsort(a, sigcmp); } /* * return methods of interface type t, sorted by name. */ static Sig* imethods(Type *t) { Sig *a, *all, *last; Type *f; Sym *method, *isym; all = nil; last = nil; for(f=t->type; f; f=f->down) { if(f->etype != TFIELD) fatal("imethods: not field"); if(f->type->etype != TFUNC || f->sym == nil) continue; method = f->sym; a = mal(sizeof(*a)); a->name = method->name; if(!exportname(method->name)) { if(method->pkg == nil) fatal("imethods: missing package"); a->pkg = method->pkg; } a->mtype = f->type; a->offset = 0; a->type = methodfunc(f->type, nil); if(last && sigcmp(last, a) >= 0) fatal("sigcmp vs sortinter %s %s", last->name, a->name); if(last == nil) all = a; else last->link = a; last = a; // Compiler can only refer to wrappers for non-blank methods. if(isblanksym(method)) continue; // NOTE(rsc): Perhaps an oversight that // IfaceType.Method is not in the reflect data. // Generate the method body, so that compiled // code can refer to it. isym = methodsym(method, t, 0); if(!(isym->flags & SymSiggen)) { isym->flags |= SymSiggen; genwrapper(t, f, isym, 0); } } return all; } static void dimportpath(Pkg *p) { static Pkg *gopkg; char *nam; Node *n; if(p->pathsym != S) return; if(gopkg == nil) { gopkg = mkpkg(strlit("go")); gopkg->name = "go"; } nam = smprint("importpath.%s.", p->prefix); n = nod(ONAME, N, N); n->sym = pkglookup(nam, gopkg); free(nam); n->class = PEXTERN; n->xoffset = 0; p->pathsym = n->sym; gdatastring(n, p->path); ggloblsym(n->sym, types[TSTRING]->width, 1, 1); } static int dgopkgpath(Sym *s, int ot, Pkg *pkg) { if(pkg == nil) return dgostringptr(s, ot, nil); // Emit reference to go.importpath.""., which 6l will // rewrite using the correct import path. Every package // that imports this one directly defines the symbol. if(pkg == localpkg) { static Sym *ns; if(ns == nil) ns = pkglookup("importpath.\"\".", mkpkg(strlit("go"))); return dsymptr(s, ot, ns, 0); } dimportpath(pkg); return dsymptr(s, ot, pkg->pathsym, 0); } /* * uncommonType * ../../pkg/runtime/type.go:/uncommonType */ static int dextratype(Sym *sym, int off, Type *t, int ptroff) { int ot, n; Sym *s; Sig *a, *m; m = methods(t); if(t->sym == nil && m == nil) return off; // fill in *extraType pointer in header dsymptr(sym, ptroff, sym, off); n = 0; for(a=m; a; a=a->link) { dtypesym(a->type); n++; } ot = off; s = sym; if(t->sym) { ot = dgostringptr(s, ot, t->sym->name); if(t != types[t->etype] && t != errortype) ot = dgopkgpath(s, ot, t->sym->pkg); else ot = dgostringptr(s, ot, nil); } else { ot = dgostringptr(s, ot, nil); ot = dgostringptr(s, ot, nil); } // slice header ot = dsymptr(s, ot, s, ot + widthptr + 2*widthint); ot = duintxx(s, ot, n, widthint); ot = duintxx(s, ot, n, widthint); // methods for(a=m; a; a=a->link) { // method // ../../pkg/runtime/type.go:/method ot = dgostringptr(s, ot, a->name); ot = dgopkgpath(s, ot, a->pkg); ot = dsymptr(s, ot, dtypesym(a->mtype), 0); ot = dsymptr(s, ot, dtypesym(a->type), 0); if(a->isym) ot = dsymptr(s, ot, a->isym, 0); else ot = duintptr(s, ot, 0); if(a->tsym) ot = dsymptr(s, ot, a->tsym, 0); else ot = duintptr(s, ot, 0); } return ot; } enum { KindBool = 1, KindInt, KindInt8, KindInt16, KindInt32, KindInt64, KindUint, KindUint8, KindUint16, KindUint32, KindUint64, KindUintptr, KindFloat32, KindFloat64, KindComplex64, KindComplex128, KindArray, KindChan, KindFunc, KindInterface, KindMap, KindPtr, KindSlice, KindString, KindStruct, KindUnsafePointer, KindNoPointers = 1<<7, }; static int kinds[] = { [TINT] = KindInt, [TUINT] = KindUint, [TINT8] = KindInt8, [TUINT8] = KindUint8, [TINT16] = KindInt16, [TUINT16] = KindUint16, [TINT32] = KindInt32, [TUINT32] = KindUint32, [TINT64] = KindInt64, [TUINT64] = KindUint64, [TUINTPTR] = KindUintptr, [TFLOAT32] = KindFloat32, [TFLOAT64] = KindFloat64, [TBOOL] = KindBool, [TSTRING] = KindString, [TPTR32] = KindPtr, [TPTR64] = KindPtr, [TSTRUCT] = KindStruct, [TINTER] = KindInterface, [TCHAN] = KindChan, [TMAP] = KindMap, [TARRAY] = KindArray, [TFUNC] = KindFunc, [TCOMPLEX64] = KindComplex64, [TCOMPLEX128] = KindComplex128, [TUNSAFEPTR] = KindUnsafePointer, }; int haspointers(Type *t) { Type *t1; int ret; if(t->haspointers != 0) return t->haspointers - 1; switch(t->etype) { case TINT: case TUINT: case TINT8: case TUINT8: case TINT16: case TUINT16: case TINT32: case TUINT32: case TINT64: case TUINT64: case TUINTPTR: case TFLOAT32: case TFLOAT64: case TCOMPLEX64: case TCOMPLEX128: case TBOOL: ret = 0; break; case TARRAY: if(t->bound < 0) { // slice ret = 1; break; } if(t->bound == 0) { // empty array ret = 0; break; } ret = haspointers(t->type); break; case TSTRUCT: ret = 0; for(t1=t->type; t1!=T; t1=t1->down) { if(haspointers(t1->type)) { ret = 1; break; } } break; case TSTRING: case TPTR32: case TPTR64: case TUNSAFEPTR: case TINTER: case TCHAN: case TMAP: case TFUNC: default: ret = 1; break; } t->haspointers = 1+ret; return ret; } /* * commonType * ../../pkg/runtime/type.go:/commonType */ static int dcommontype(Sym *s, int ot, Type *t) { int i, alg, sizeofAlg; Sym *sptr, *algsym, *zero; static Sym *algarray; char *p; if(ot != 0) fatal("dcommontype %d", ot); sizeofAlg = 4*widthptr; if(algarray == nil) algarray = pkglookup("algarray", runtimepkg); alg = algtype(t); algsym = S; if(alg < 0) algsym = dalgsym(t); dowidth(t); if(t->sym != nil && !isptr[t->etype]) sptr = dtypesym(ptrto(t)); else sptr = weaktypesym(ptrto(t)); // All (non-reflect-allocated) Types share the same zero object. // Each place in the compiler where a pointer to the zero object // might be returned by a runtime call (map access return value, // 2-arg type cast) declares the size of the zerovalue it needs. // The linker magically takes the max of all the sizes. zero = pkglookup("zerovalue", runtimepkg); // We use size 0 here so we get the pointer to the zero value, // but don't allocate space for the zero value unless we need it. // TODO: how do we get this symbol into bss? We really want // a read-only bss, but I don't think such a thing exists. // ../../pkg/reflect/type.go:/^type.commonType // actual type structure // type commonType struct { // size uintptr // hash uint32 // _ uint8 // align uint8 // fieldAlign uint8 // kind uint8 // alg unsafe.Pointer // gc unsafe.Pointer // string *string // *extraType // ptrToThis *Type // zero unsafe.Pointer // } ot = duintptr(s, ot, t->width); ot = duint32(s, ot, typehash(t)); ot = duint8(s, ot, 0); // unused // runtime (and common sense) expects alignment to be a power of two. i = t->align; if(i == 0) i = 1; if((i&(i-1)) != 0) fatal("invalid alignment %d for %T", t->align, t); ot = duint8(s, ot, t->align); // align ot = duint8(s, ot, t->align); // fieldAlign i = kinds[t->etype]; if(t->etype == TARRAY && t->bound < 0) i = KindSlice; if(!haspointers(t)) i |= KindNoPointers; ot = duint8(s, ot, i); // kind if(alg >= 0) ot = dsymptr(s, ot, algarray, alg*sizeofAlg); else ot = dsymptr(s, ot, algsym, 0); ot = dsymptr(s, ot, dgcsym(t), 0); // gc p = smprint("%-uT", t); //print("dcommontype: %s\n", p); ot = dgostringptr(s, ot, p); // string free(p); // skip pointer to extraType, // which follows the rest of this type structure. // caller will fill in if needed. // otherwise linker will assume 0. ot += widthptr; ot = dsymptr(s, ot, sptr, 0); // ptrto type ot = dsymptr(s, ot, zero, 0); // ptr to zero value return ot; } Sym* typesym(Type *t) { char *p; Sym *s; p = smprint("%-T", t); s = pkglookup(p, typepkg); //print("typesym: %s -> %+S\n", p, s); free(p); return s; } Sym* tracksym(Type *t) { char *p; Sym *s; p = smprint("%-T.%s", t->outer, t->sym->name); s = pkglookup(p, trackpkg); free(p); return s; } Sym* typelinksym(Type *t) { char *p; Sym *s; // %-uT is what the generated Type's string field says. // It uses (ambiguous) package names instead of import paths. // %-T is the complete, unambiguous type name. // We want the types to end up sorted by string field, // so use that first in the name, and then add :%-T to // disambiguate. The names are a little long but they are // discarded by the linker and do not end up in the symbol // table of the final binary. p = smprint("%-uT/%-T", t, t); s = pkglookup(p, typelinkpkg); //print("typelinksym: %s -> %+S\n", p, s); free(p); return s; } Sym* typesymprefix(char *prefix, Type *t) { char *p; Sym *s; p = smprint("%s.%-T", prefix, t); s = pkglookup(p, typepkg); //print("algsym: %s -> %+S\n", p, s); free(p); return s; } Sym* typenamesym(Type *t) { Sym *s; Node *n; if(t == T || (isptr[t->etype] && t->type == T) || isideal(t)) fatal("typename %T", t); s = typesym(t); if(s->def == N) { n = nod(ONAME, N, N); n->sym = s; n->type = types[TUINT8]; n->addable = 1; n->ullman = 1; n->class = PEXTERN; n->xoffset = 0; n->typecheck = 1; s->def = n; signatlist = list(signatlist, typenod(t)); } return s->def->sym; } Node* typename(Type *t) { Sym *s; Node *n; s = typenamesym(t); n = nod(OADDR, s->def, N); n->type = ptrto(s->def->type); n->addable = 1; n->ullman = 2; n->typecheck = 1; return n; } static Sym* weaktypesym(Type *t) { char *p; Sym *s; p = smprint("%-T", t); s = pkglookup(p, weaktypepkg); //print("weaktypesym: %s -> %+S\n", p, s); free(p); return s; } static Sym* dtypesym(Type *t) { int ot, xt, n, isddd, dupok; Sym *s, *s1, *s2, *s3, *s4, *slink; Sig *a, *m; Type *t1, *tbase, *t2; // Replace byte, rune aliases with real type. // They've been separate internally to make error messages // better, but we have to merge them in the reflect tables. if(t == bytetype || t == runetype) t = types[t->etype]; if(isideal(t)) fatal("dtypesym %T", t); s = typesym(t); if(s->flags & SymSiggen) return s; s->flags |= SymSiggen; // special case (look for runtime below): // when compiling package runtime, // emit the type structures for int, float, etc. tbase = t; if(isptr[t->etype] && t->sym == S && t->type->sym != S) tbase = t->type; dupok = tbase->sym == S; if(compiling_runtime && (tbase == types[tbase->etype] || tbase == bytetype || tbase == runetype || tbase == errortype)) { // int, float, etc goto ok; } // named types from other files are defined only by those files if(tbase->sym && !tbase->local) return s; if(isforw[tbase->etype]) return s; ok: ot = 0; xt = 0; switch(t->etype) { default: ot = dcommontype(s, ot, t); xt = ot - 3*widthptr; break; case TARRAY: if(t->bound >= 0) { // ../../pkg/runtime/type.go:/ArrayType s1 = dtypesym(t->type); t2 = typ(TARRAY); t2->type = t->type; t2->bound = -1; // slice s2 = dtypesym(t2); ot = dcommontype(s, ot, t); xt = ot - 3*widthptr; ot = dsymptr(s, ot, s1, 0); ot = dsymptr(s, ot, s2, 0); ot = duintptr(s, ot, t->bound); } else { // ../../pkg/runtime/type.go:/SliceType s1 = dtypesym(t->type); ot = dcommontype(s, ot, t); xt = ot - 3*widthptr; ot = dsymptr(s, ot, s1, 0); } break; case TCHAN: // ../../pkg/runtime/type.go:/ChanType s1 = dtypesym(t->type); ot = dcommontype(s, ot, t); xt = ot - 3*widthptr; ot = dsymptr(s, ot, s1, 0); ot = duintptr(s, ot, t->chan); break; case TFUNC: for(t1=getthisx(t)->type; t1; t1=t1->down) dtypesym(t1->type); isddd = 0; for(t1=getinargx(t)->type; t1; t1=t1->down) { isddd = t1->isddd; dtypesym(t1->type); } for(t1=getoutargx(t)->type; t1; t1=t1->down) dtypesym(t1->type); ot = dcommontype(s, ot, t); xt = ot - 3*widthptr; ot = duint8(s, ot, isddd); // two slice headers: in and out. ot = rnd(ot, widthptr); ot = dsymptr(s, ot, s, ot+2*(widthptr+2*widthint)); n = t->thistuple + t->intuple; ot = duintxx(s, ot, n, widthint); ot = duintxx(s, ot, n, widthint); ot = dsymptr(s, ot, s, ot+1*(widthptr+2*widthint)+n*widthptr); ot = duintxx(s, ot, t->outtuple, widthint); ot = duintxx(s, ot, t->outtuple, widthint); // slice data for(t1=getthisx(t)->type; t1; t1=t1->down, n++) ot = dsymptr(s, ot, dtypesym(t1->type), 0); for(t1=getinargx(t)->type; t1; t1=t1->down, n++) ot = dsymptr(s, ot, dtypesym(t1->type), 0); for(t1=getoutargx(t)->type; t1; t1=t1->down, n++) ot = dsymptr(s, ot, dtypesym(t1->type), 0); break; case TINTER: m = imethods(t); n = 0; for(a=m; a; a=a->link) { dtypesym(a->type); n++; } // ../../pkg/runtime/type.go:/InterfaceType ot = dcommontype(s, ot, t); xt = ot - 3*widthptr; ot = dsymptr(s, ot, s, ot+widthptr+2*widthint); ot = duintxx(s, ot, n, widthint); ot = duintxx(s, ot, n, widthint); for(a=m; a; a=a->link) { // ../../pkg/runtime/type.go:/imethod ot = dgostringptr(s, ot, a->name); ot = dgopkgpath(s, ot, a->pkg); ot = dsymptr(s, ot, dtypesym(a->type), 0); } break; case TMAP: // ../../pkg/runtime/type.go:/MapType s1 = dtypesym(t->down); s2 = dtypesym(t->type); s3 = dtypesym(mapbucket(t)); s4 = dtypesym(hmap(t)); ot = dcommontype(s, ot, t); xt = ot - 3*widthptr; ot = dsymptr(s, ot, s1, 0); ot = dsymptr(s, ot, s2, 0); ot = dsymptr(s, ot, s3, 0); ot = dsymptr(s, ot, s4, 0); break; case TPTR32: case TPTR64: if(t->type->etype == TANY) { // ../../pkg/runtime/type.go:/UnsafePointerType ot = dcommontype(s, ot, t); break; } // ../../pkg/runtime/type.go:/PtrType s1 = dtypesym(t->type); ot = dcommontype(s, ot, t); xt = ot - 3*widthptr; ot = dsymptr(s, ot, s1, 0); break; case TSTRUCT: // ../../pkg/runtime/type.go:/StructType // for security, only the exported fields. n = 0; for(t1=t->type; t1!=T; t1=t1->down) { dtypesym(t1->type); n++; } ot = dcommontype(s, ot, t); xt = ot - 3*widthptr; ot = dsymptr(s, ot, s, ot+widthptr+2*widthint); ot = duintxx(s, ot, n, widthint); ot = duintxx(s, ot, n, widthint); for(t1=t->type; t1!=T; t1=t1->down) { // ../../pkg/runtime/type.go:/structField if(t1->sym && !t1->embedded) { ot = dgostringptr(s, ot, t1->sym->name); if(exportname(t1->sym->name)) ot = dgostringptr(s, ot, nil); else ot = dgopkgpath(s, ot, t1->sym->pkg); } else { ot = dgostringptr(s, ot, nil); if(t1->type->sym != S && t1->type->sym->pkg == builtinpkg) ot = dgopkgpath(s, ot, localpkg); else ot = dgostringptr(s, ot, nil); } ot = dsymptr(s, ot, dtypesym(t1->type), 0); ot = dgostrlitptr(s, ot, t1->note); ot = duintptr(s, ot, t1->width); // field offset } break; } ot = dextratype(s, ot, t, xt); ggloblsym(s, ot, dupok, 1); // generate typelink.foo pointing at s = type.foo. // The linker will leave a table of all the typelinks for // types in the binary, so reflect can find them. // We only need the link for unnamed composites that // we want be able to find. if(t->sym == S) { switch(t->etype) { case TARRAY: case TCHAN: case TMAP: slink = typelinksym(t); dsymptr(slink, 0, s, 0); ggloblsym(slink, widthptr, dupok, 1); } } return s; } void dumptypestructs(void) { int i; NodeList *l; Node *n; Type *t; Pkg *p; // copy types from externdcl list to signatlist for(l=externdcl; l; l=l->next) { n = l->n; if(n->op != OTYPE) continue; signatlist = list(signatlist, n); } // process signatlist for(l=signatlist; l; l=l->next) { n = l->n; if(n->op != OTYPE) continue; t = n->type; dtypesym(t); if(t->sym) dtypesym(ptrto(t)); } // generate import strings for imported packages for(i=0; ilink) if(p->direct) dimportpath(p); // do basic types if compiling package runtime. // they have to be in at least one package, // and runtime is always loaded implicitly, // so this is as good as any. // another possible choice would be package main, // but using runtime means fewer copies in .6 files. if(compiling_runtime) { for(i=1; i<=TBOOL; i++) dtypesym(ptrto(types[i])); dtypesym(ptrto(types[TSTRING])); dtypesym(ptrto(types[TUNSAFEPTR])); // emit type structs for error and func(error) string. // The latter is the type of an auto-generated wrapper. dtypesym(ptrto(errortype)); dtypesym(functype(nil, list1(nod(ODCLFIELD, N, typenod(errortype))), list1(nod(ODCLFIELD, N, typenod(types[TSTRING]))))); // add paths for runtime and main, which 6l imports implicitly. dimportpath(runtimepkg); if(flag_race) dimportpath(racepkg); dimportpath(mkpkg(strlit("main"))); } } static Sym* dalgsym(Type *t) { int ot; Sym *s, *hash, *eq; char buf[100]; // dalgsym is only called for a type that needs an algorithm table, // which implies that the type is comparable (or else it would use ANOEQ). s = typesymprefix(".alg", t); hash = typesymprefix(".hash", t); genhash(hash, t); eq = typesymprefix(".eq", t); geneq(eq, t); // ../../pkg/runtime/runtime.h:/Alg ot = 0; ot = dsymptr(s, ot, hash, 0); ot = dsymptr(s, ot, eq, 0); ot = dsymptr(s, ot, pkglookup("memprint", runtimepkg), 0); switch(t->width) { default: ot = dsymptr(s, ot, pkglookup("memcopy", runtimepkg), 0); break; case 1: case 2: case 4: case 8: case 16: snprint(buf, sizeof buf, "memcopy%d", (int)t->width*8); ot = dsymptr(s, ot, pkglookup(buf, runtimepkg), 0); break; } ggloblsym(s, ot, 1, 1); return s; } static int gcinline(Type *t) { switch(t->etype) { case TARRAY: if(t->bound == 1) return 1; if(t->width <= 4*widthptr) return 1; break; } return 0; } static int dgcsym1(Sym *s, int ot, Type *t, vlong *off, int stack_size) { Type *t1; vlong o, off2, fieldoffset, i; if(t->align > 0 && (*off % t->align) != 0) fatal("dgcsym1: invalid initial alignment, %T", t); if(t->width == BADWIDTH) dowidth(t); switch(t->etype) { case TINT8: case TUINT8: case TINT16: case TUINT16: case TINT32: case TUINT32: case TINT64: case TUINT64: case TINT: case TUINT: case TUINTPTR: case TBOOL: case TFLOAT32: case TFLOAT64: case TCOMPLEX64: case TCOMPLEX128: *off += t->width; break; case TPTR32: case TPTR64: // NOTE: Any changes here need to be made to reflect.PtrTo as well. if(*off % widthptr != 0) fatal("dgcsym1: invalid alignment, %T", t); // NOTE(rsc): Emitting GC_APTR here for *nonptrtype // (pointer to non-pointer-containing type) means that // we do not record 'nonptrtype' and instead tell the // garbage collector to look up the type of the memory in // type information stored in the heap. In effect we are telling // the collector "we don't trust our information - use yours". // It's not completely clear why we want to do this. // It does have the effect that if you have a *SliceHeader and a *[]int // pointing at the same actual slice header, *SliceHeader will not be // used as an authoritative type for the memory, which is good: // if the collector scanned the memory as type *SliceHeader, it would // see no pointers inside but mark the block as scanned, preventing // the seeing of pointers when we followed the *[]int pointer. // Perhaps that kind of situation is the rationale. if(!haspointers(t->type)) { ot = duintptr(s, ot, GC_APTR); ot = duintptr(s, ot, *off); } else { ot = duintptr(s, ot, GC_PTR); ot = duintptr(s, ot, *off); ot = dsymptr(s, ot, dgcsym(t->type), 0); } *off += t->width; break; case TUNSAFEPTR: case TFUNC: if(*off % widthptr != 0) fatal("dgcsym1: invalid alignment, %T", t); ot = duintptr(s, ot, GC_APTR); ot = duintptr(s, ot, *off); *off += t->width; break; // struct Hchan* case TCHAN: // NOTE: Any changes here need to be made to reflect.ChanOf as well. if(*off % widthptr != 0) fatal("dgcsym1: invalid alignment, %T", t); ot = duintptr(s, ot, GC_CHAN_PTR); ot = duintptr(s, ot, *off); ot = dsymptr(s, ot, dtypesym(t), 0); *off += t->width; break; // struct Hmap* case TMAP: // NOTE: Any changes here need to be made to reflect.MapOf as well. if(*off % widthptr != 0) fatal("dgcsym1: invalid alignment, %T", t); ot = duintptr(s, ot, GC_PTR); ot = duintptr(s, ot, *off); ot = dsymptr(s, ot, dgcsym(hmap(t)), 0); *off += t->width; break; // struct { byte *str; int32 len; } case TSTRING: if(*off % widthptr != 0) fatal("dgcsym1: invalid alignment, %T", t); ot = duintptr(s, ot, GC_STRING); ot = duintptr(s, ot, *off); *off += t->width; break; // struct { Itab* tab; void* data; } // struct { Type* type; void* data; } // When isnilinter(t)==true case TINTER: if(*off % widthptr != 0) fatal("dgcsym1: invalid alignment, %T", t); if(isnilinter(t)) { ot = duintptr(s, ot, GC_EFACE); ot = duintptr(s, ot, *off); } else { ot = duintptr(s, ot, GC_IFACE); ot = duintptr(s, ot, *off); } *off += t->width; break; case TARRAY: if(t->bound < -1) fatal("dgcsym1: invalid bound, %T", t); if(t->type->width == BADWIDTH) dowidth(t->type); if(isslice(t)) { // NOTE: Any changes here need to be made to reflect.SliceOf as well. // struct { byte* array; uint32 len; uint32 cap; } if(*off % widthptr != 0) fatal("dgcsym1: invalid alignment, %T", t); if(t->type->width != 0) { ot = duintptr(s, ot, GC_SLICE); ot = duintptr(s, ot, *off); ot = dsymptr(s, ot, dgcsym(t->type), 0); } else { ot = duintptr(s, ot, GC_APTR); ot = duintptr(s, ot, *off); } *off += t->width; } else { // NOTE: Any changes here need to be made to reflect.ArrayOf as well, // at least once ArrayOf's gc info is implemented and ArrayOf is exported. // struct { byte* array; uint32 len; uint32 cap; } if(t->bound < 1 || !haspointers(t->type)) { *off += t->width; } else if(gcinline(t)) { for(i=0; ibound; i++) ot = dgcsym1(s, ot, t->type, off, stack_size); // recursive call of dgcsym1 } else { if(stack_size < GC_STACK_CAPACITY) { ot = duintptr(s, ot, GC_ARRAY_START); // a stack push during GC ot = duintptr(s, ot, *off); ot = duintptr(s, ot, t->bound); ot = duintptr(s, ot, t->type->width); off2 = 0; ot = dgcsym1(s, ot, t->type, &off2, stack_size+1); // recursive call of dgcsym1 ot = duintptr(s, ot, GC_ARRAY_NEXT); // a stack pop during GC } else { ot = duintptr(s, ot, GC_REGION); ot = duintptr(s, ot, *off); ot = duintptr(s, ot, t->width); ot = dsymptr(s, ot, dgcsym(t), 0); } *off += t->width; } } break; case TSTRUCT: o = 0; for(t1=t->type; t1!=T; t1=t1->down) { fieldoffset = t1->width; *off += fieldoffset - o; ot = dgcsym1(s, ot, t1->type, off, stack_size); // recursive call of dgcsym1 o = fieldoffset + t1->type->width; } *off += t->width - o; break; default: fatal("dgcsym1: unexpected type %T", t); } return ot; } static Sym* dgcsym(Type *t) { int ot; vlong off; Sym *s; s = typesymprefix(".gc", t); if(s->flags & SymGcgen) return s; s->flags |= SymGcgen; if(t->width == BADWIDTH) dowidth(t); ot = 0; off = 0; ot = duintptr(s, ot, t->width); ot = dgcsym1(s, ot, t, &off, 0); ot = duintptr(s, ot, GC_END); ggloblsym(s, ot, 1, 1); if(t->align > 0) off = rnd(off, t->align); if(off != t->width) fatal("dgcsym: off=%lld, size=%lld, type %T", off, t->width, t); return s; } go/src/cmd/gc/runtime.go0100644000000000000000000001317512412656737015443 0ustar00rootroot00000000000000// Copyright 2009 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. // NOTE: If you change this file you must run "./mkbuiltin" // to update builtin.c. This is not done automatically // to avoid depending on having a working compiler binary. // +build ignore package PACKAGE // emitted by compiler, not referred to by go programs func new(typ *byte) *any func panicindex() func panicslice() func panicdivide() func throwreturn() func throwinit() func panicwrap(string, string, string) func panic(interface{}) func recover(*int32) interface{} func printbool(bool) func printfloat(float64) func printint(int64) func printuint(uint64) func printcomplex(complex128) func printstring(string) func printpointer(any) func printiface(any) func printeface(any) func printslice(any) func printnl() func printsp() func goprintf() func concatstring2(string, string) string func concatstring3(string, string, string) string func concatstring4(string, string, string, string) string func concatstring5(string, string, string, string, string) string func concatstrings([]string) string func cmpstring(string, string) int func eqstring(string, string) bool func intstring(int64) string func slicebytetostring([]byte) string func slicebytetostringtmp([]byte) string func slicerunetostring([]rune) string func stringtoslicebyte(string) []byte func stringtoslicerune(string) []rune func stringiter(string, int) int func stringiter2(string, int) (retk int, retv rune) func copy(to any, fr any, wid uintptr) int func slicestringcopy(to any, fr any) int // interface conversions func typ2Itab(typ *byte, typ2 *byte, cache **byte) (ret *byte) func convI2E(elem any) (ret any) func convI2I(typ *byte, elem any) (ret any) func convT2E(typ *byte, elem *any) (ret any) func convT2I(typ *byte, typ2 *byte, cache **byte, elem *any) (ret any) // interface type assertions x.(T) func assertE2E(typ *byte, iface any) (ret any) func assertE2E2(typ *byte, iface any) (ret any, ok bool) func assertE2I(typ *byte, iface any) (ret any) func assertE2I2(typ *byte, iface any) (ret any, ok bool) func assertE2T(typ *byte, iface any) (ret any) func assertE2T2(typ *byte, iface any) (ret any, ok bool) func assertI2E(typ *byte, iface any) (ret any) func assertI2E2(typ *byte, iface any) (ret any, ok bool) func assertI2I(typ *byte, iface any) (ret any) func assertI2I2(typ *byte, iface any) (ret any, ok bool) func assertI2T(typ *byte, iface any) (ret any) func assertI2T2(typ *byte, iface any) (ret any, ok bool) func assertI2TOK(typ *byte, iface any) (ok bool) func assertE2TOK(typ *byte, iface any) (ok bool) func ifaceeq(i1 any, i2 any) (ret bool) func efaceeq(i1 any, i2 any) (ret bool) func ifacethash(i1 any) (ret uint32) func efacethash(i1 any) (ret uint32) func equal(typ *byte, x1, x2 any) (ret bool) // *byte is really *runtime.Type func makemap(mapType *byte, hint int64) (hmap map[any]any) func mapaccess1(mapType *byte, hmap map[any]any, key *any) (val *any) func mapaccess1_fast32(mapType *byte, hmap map[any]any, key any) (val *any) func mapaccess1_fast64(mapType *byte, hmap map[any]any, key any) (val *any) func mapaccess1_faststr(mapType *byte, hmap map[any]any, key any) (val *any) func mapaccess2(mapType *byte, hmap map[any]any, key *any) (val *any, pres bool) func mapaccess2_fast32(mapType *byte, hmap map[any]any, key any) (val *any, pres bool) func mapaccess2_fast64(mapType *byte, hmap map[any]any, key any) (val *any, pres bool) func mapaccess2_faststr(mapType *byte, hmap map[any]any, key any) (val *any, pres bool) func mapassign1(mapType *byte, hmap map[any]any, key *any, val *any) func mapiterinit(mapType *byte, hmap map[any]any, hiter *any) func mapdelete(mapType *byte, hmap map[any]any, key *any) func mapiternext(hiter *any) // *byte is really *runtime.Type func makechan(chanType *byte, hint int64) (hchan chan any) func chanrecv1(chanType *byte, hchan <-chan any, elem *any) func chanrecv2(chanType *byte, hchan <-chan any, elem *any) bool func chansend1(chanType *byte, hchan chan<- any, elem *any) func closechan(hchan any) func selectnbsend(chanType *byte, hchan chan<- any, elem *any) bool func selectnbrecv(chanType *byte, elem *any, hchan <-chan any) bool func selectnbrecv2(chanType *byte, elem *any, received *bool, hchan <-chan any) bool func newselect(size int32) (sel *byte) func selectsend(sel *byte, hchan chan<- any, elem *any) (selected bool) func selectrecv(sel *byte, hchan <-chan any, elem *any) (selected bool) func selectrecv2(sel *byte, hchan <-chan any, elem *any, received *bool) (selected bool) func selectdefault(sel *byte) (selected bool) func selectgo(sel *byte) func block() func makeslice(typ *byte, nel int64, cap int64) (ary []any) func growslice(typ *byte, old []any, n int64) (ary []any) func memmove(to *any, frm *any, length uintptr) func memequal(eq *bool, size uintptr, x, y *any) func memequal8(eq *bool, size uintptr, x, y *any) func memequal16(eq *bool, size uintptr, x, y *any) func memequal32(eq *bool, size uintptr, x, y *any) func memequal64(eq *bool, size uintptr, x, y *any) func memequal128(eq *bool, size uintptr, x, y *any) // only used on 32-bit func int64div(int64, int64) int64 func uint64div(uint64, uint64) uint64 func int64mod(int64, int64) int64 func uint64mod(uint64, uint64) uint64 func float64toint64(float64) int64 func float64touint64(float64) uint64 func int64tofloat64(int64) float64 func uint64tofloat64(uint64) float64 func complex128div(num complex128, den complex128) (quo complex128) // race detection func racefuncenter(uintptr) func racefuncexit() func raceread(uintptr) func racewrite(uintptr) func racereadrange(addr, size uintptr) func racewriterange(addr, size uintptr) go/src/cmd/gc/select.c0100644000000000000000000001650712412656737015056 0ustar00rootroot00000000000000// Copyright 2009 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. /* * select */ #include #include #include "go.h" void typecheckselect(Node *sel) { Node *ncase, *n, *def; NodeList *l; int lno, count; def = nil; lno = setlineno(sel); count = 0; typechecklist(sel->ninit, Etop); for(l=sel->list; l; l=l->next) { count++; ncase = l->n; setlineno(ncase); if(ncase->op != OXCASE) fatal("typecheckselect %O", ncase->op); if(ncase->list == nil) { // default if(def != N) yyerror("multiple defaults in select (first at %L)", def->lineno); else def = ncase; } else if(ncase->list->next) { yyerror("select cases cannot be lists"); } else { n = typecheck(&ncase->list->n, Etop); ncase->left = n; ncase->list = nil; setlineno(n); switch(n->op) { default: yyerror("select case must be receive, send or assign recv"); break; case OAS: // convert x = <-c into OSELRECV(x, <-c). // remove implicit conversions; the eventual assignment // will reintroduce them. if((n->right->op == OCONVNOP || n->right->op == OCONVIFACE) && n->right->implicit) n->right = n->right->left; if(n->right->op != ORECV) { yyerror("select assignment must have receive on right hand side"); break; } n->op = OSELRECV; break; case OAS2RECV: // convert x, ok = <-c into OSELRECV2(x, <-c) with ntest=ok if(n->rlist->n->op != ORECV) { yyerror("select assignment must have receive on right hand side"); break; } n->op = OSELRECV2; n->left = n->list->n; n->ntest = n->list->next->n; n->list = nil; n->right = n->rlist->n; n->rlist = nil; break; case ORECV: // convert <-c into OSELRECV(N, <-c) n = nod(OSELRECV, N, n); n->typecheck = 1; ncase->left = n; break; case OSEND: break; } } typechecklist(ncase->nbody, Etop); } sel->xoffset = count; lineno = lno; } void walkselect(Node *sel) { int lno, i; Node *n, *r, *a, *var, *cas, *dflt, *ch; NodeList *l, *init; if(sel->list == nil && sel->xoffset != 0) fatal("double walkselect"); // already rewrote lno = setlineno(sel); i = count(sel->list); // optimization: zero-case select if(i == 0) { sel->nbody = list1(mkcall("block", nil, nil)); goto out; } // optimization: one-case select: single op. // TODO(rsc): Reenable optimization once order.c can handle it. // golang.org/issue/7672. if(i == 1) { cas = sel->list->n; setlineno(cas); l = cas->ninit; if(cas->left != N) { // not default: n = cas->left; l = concat(l, n->ninit); n->ninit = nil; switch(n->op) { default: fatal("select %O", n->op); case OSEND: // ok already ch = n->left; break; case OSELRECV: ch = n->right->left; Selrecv1: if(n->left == N) n = n->right; else n->op = OAS; break; case OSELRECV2: ch = n->right->left; if(n->ntest == N) goto Selrecv1; if(n->left == N) { typecheck(&nblank, Erv | Easgn); n->left = nblank; } n->op = OAS2; n->list = list(list1(n->left), n->ntest); n->rlist = list1(n->right); n->right = N; n->left = N; n->ntest = N; n->typecheck = 0; typecheck(&n, Etop); break; } // if ch == nil { block() }; n; a = nod(OIF, N, N); a->ntest = nod(OEQ, ch, nodnil()); a->nbody = list1(mkcall("block", nil, &l)); typecheck(&a, Etop); l = list(l, a); l = list(l, n); } l = concat(l, cas->nbody); sel->nbody = l; goto out; } // convert case value arguments to addresses. // this rewrite is used by both the general code and the next optimization. for(l=sel->list; l; l=l->next) { cas = l->n; setlineno(cas); n = cas->left; if(n == N) continue; switch(n->op) { case OSEND: n->right = nod(OADDR, n->right, N); typecheck(&n->right, Erv); break; case OSELRECV: case OSELRECV2: if(n->op == OSELRECV2 && n->ntest == N) n->op = OSELRECV; if(n->op == OSELRECV2) { n->ntest = nod(OADDR, n->ntest, N); typecheck(&n->ntest, Erv); } if(n->left == N) n->left = nodnil(); else { n->left = nod(OADDR, n->left, N); typecheck(&n->left, Erv); } break; } } // optimization: two-case select but one is default: single non-blocking op. if(i == 2 && (sel->list->n->left == nil || sel->list->next->n->left == nil)) { if(sel->list->n->left == nil) { cas = sel->list->next->n; dflt = sel->list->n; } else { dflt = sel->list->next->n; cas = sel->list->n; } n = cas->left; setlineno(n); r = nod(OIF, N, N); r->ninit = cas->ninit; switch(n->op) { default: fatal("select %O", n->op); case OSEND: // if selectnbsend(c, v) { body } else { default body } ch = n->left; r->ntest = mkcall1(chanfn("selectnbsend", 2, ch->type), types[TBOOL], &r->ninit, typename(ch->type), ch, n->right); break; case OSELRECV: // if c != nil && selectnbrecv(&v, c) { body } else { default body } r = nod(OIF, N, N); r->ninit = cas->ninit; ch = n->right->left; r->ntest = mkcall1(chanfn("selectnbrecv", 2, ch->type), types[TBOOL], &r->ninit, typename(ch->type), n->left, ch); break; case OSELRECV2: // if c != nil && selectnbrecv2(&v, c) { body } else { default body } r = nod(OIF, N, N); r->ninit = cas->ninit; ch = n->right->left; r->ntest = mkcall1(chanfn("selectnbrecv2", 2, ch->type), types[TBOOL], &r->ninit, typename(ch->type), n->left, n->ntest, ch); break; } typecheck(&r->ntest, Erv); r->nbody = cas->nbody; r->nelse = concat(dflt->ninit, dflt->nbody); sel->nbody = list1(r); goto out; } init = sel->ninit; sel->ninit = nil; // generate sel-struct setlineno(sel); var = temp(ptrto(types[TUINT8])); r = nod(OAS, var, mkcall("newselect", var->type, nil, nodintconst(sel->xoffset))); typecheck(&r, Etop); init = list(init, r); // register cases for(l=sel->list; l; l=l->next) { cas = l->n; setlineno(cas); n = cas->left; r = nod(OIF, N, N); r->ninit = cas->ninit; cas->ninit = nil; if(n != nil) { r->ninit = concat(r->ninit, n->ninit); n->ninit = nil; } if(n == nil) { // selectdefault(sel *byte); r->ntest = mkcall("selectdefault", types[TBOOL], &r->ninit, var); } else { switch(n->op) { default: fatal("select %O", n->op); case OSEND: // selectsend(sel *byte, hchan *chan any, elem *any) (selected bool); r->ntest = mkcall1(chanfn("selectsend", 2, n->left->type), types[TBOOL], &r->ninit, var, n->left, n->right); break; case OSELRECV: // selectrecv(sel *byte, hchan *chan any, elem *any) (selected bool); r->ntest = mkcall1(chanfn("selectrecv", 2, n->right->left->type), types[TBOOL], &r->ninit, var, n->right->left, n->left); break; case OSELRECV2: // selectrecv2(sel *byte, hchan *chan any, elem *any, received *bool) (selected bool); r->ntest = mkcall1(chanfn("selectrecv2", 2, n->right->left->type), types[TBOOL], &r->ninit, var, n->right->left, n->left, n->ntest); break; } } r->nbody = concat(r->nbody, cas->nbody); r->nbody = list(r->nbody, nod(OBREAK, N, N)); init = list(init, r); } // run the select setlineno(sel); init = list(init, mkcall("selectgo", T, nil, var)); sel->nbody = init; out: sel->list = nil; walkstmtlist(sel->nbody); lineno = lno; } go/src/cmd/gc/sinit.c0100644000000000000000000007135512412656737014727 0ustar00rootroot00000000000000// Copyright 2009 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. /* * static initialization */ #include #include #include "go.h" enum { InitNotStarted = 0, InitDone = 1, InitPending = 2, }; static int iszero(Node*); static void initplan(Node*); static NodeList *initlist; static void init2(Node*, NodeList**); static void init2list(NodeList*, NodeList**); static int staticinit(Node*, NodeList**); static Node *staticname(Type*, int); // init1 walks the AST starting at n, and accumulates in out // the list of definitions needing init code in dependency order. static void init1(Node *n, NodeList **out) { NodeList *l; Node *nv; if(n == N) return; init1(n->left, out); init1(n->right, out); for(l=n->list; l; l=l->next) init1(l->n, out); if(n->left && n->type && n->left->op == OTYPE && n->class == PFUNC) { // Methods called as Type.Method(receiver, ...). // Definitions for method expressions are stored in type->nname. init1(n->type->nname, out); } if(n->op != ONAME) return; switch(n->class) { case PEXTERN: case PFUNC: break; default: if(isblank(n) && n->curfn == N && n->defn != N && n->defn->initorder == InitNotStarted) { // blank names initialization is part of init() but not // when they are inside a function. break; } return; } if(n->initorder == InitDone) return; if(n->initorder == InitPending) { // Since mutually recursive sets of functions are allowed, // we don't necessarily raise an error if n depends on a node // which is already waiting for its dependencies to be visited. // // initlist contains a cycle of identifiers referring to each other. // If this cycle contains a variable, then this variable refers to itself. // Conversely, if there exists an initialization cycle involving // a variable in the program, the tree walk will reach a cycle // involving that variable. if(n->class != PFUNC) { nv = n; goto foundinitloop; } for(l=initlist; l->n!=n; l=l->next) { if(l->n->class != PFUNC) { nv = l->n; goto foundinitloop; } } // The loop involves only functions, ok. return; foundinitloop: // if there have already been errors printed, // those errors probably confused us and // there might not be a loop. let the user // fix those first. flusherrors(); if(nerrors > 0) errorexit(); // There is a loop involving nv. We know about // n and initlist = n1 <- ... <- nv <- ... <- n <- ... print("%L: initialization loop:\n", nv->lineno); // Build back pointers in initlist. for(l=initlist; l; l=l->next) if(l->next != nil) l->next->end = l; // Print nv -> ... -> n1 -> n. for(l=initlist; l->n!=nv; l=l->next); for(; l; l=l->end) print("\t%L %S refers to\n", l->n->lineno, l->n->sym); // Print n -> ... -> nv. for(l=initlist; l->n!=n; l=l->next); for(; l->n != nv; l=l->end) print("\t%L %S refers to\n", l->n->lineno, l->n->sym); print("\t%L %S\n", nv->lineno, nv->sym); errorexit(); } // reached a new unvisited node. n->initorder = InitPending; l = malloc(sizeof *l); if(l == nil) { flusherrors(); yyerror("out of memory"); errorexit(); } l->next = initlist; l->n = n; l->end = nil; initlist = l; // make sure that everything n depends on is initialized. // n->defn is an assignment to n if(n->defn != N) { switch(n->defn->op) { default: goto bad; case ODCLFUNC: init2list(n->defn->nbody, out); break; case OAS: if(n->defn->left != n) goto bad; if(isblank(n->defn->left) && candiscard(n->defn->right)) { n->defn->op = OEMPTY; n->defn->left = N; n->defn->right = N; break; } init2(n->defn->right, out); if(debug['j']) print("%S\n", n->sym); if(isblank(n) || !staticinit(n, out)) { if(debug['%']) dump("nonstatic", n->defn); *out = list(*out, n->defn); } break; case OAS2FUNC: case OAS2MAPR: case OAS2DOTTYPE: case OAS2RECV: if(n->defn->initorder != InitNotStarted) break; n->defn->initorder = InitDone; for(l=n->defn->rlist; l; l=l->next) init1(l->n, out); if(debug['%']) dump("nonstatic", n->defn); *out = list(*out, n->defn); break; } } l = initlist; initlist = l->next; if(l->n != n) fatal("bad initlist"); free(l); n->initorder = InitDone; return; bad: dump("defn", n->defn); fatal("init1: bad defn"); } // recurse over n, doing init1 everywhere. static void init2(Node *n, NodeList **out) { if(n == N || n->initorder == InitDone) return; if(n->op == ONAME && n->ninit) fatal("name %S with ninit: %+N\n", n->sym, n); init1(n, out); init2(n->left, out); init2(n->right, out); init2(n->ntest, out); init2list(n->ninit, out); init2list(n->list, out); init2list(n->rlist, out); init2list(n->nbody, out); init2list(n->nelse, out); if(n->op == OCLOSURE) init2list(n->closure->nbody, out); if(n->op == ODOTMETH) init2(n->type->nname, out); } static void init2list(NodeList *l, NodeList **out) { for(; l; l=l->next) init2(l->n, out); } static void initreorder(NodeList *l, NodeList **out) { Node *n; for(; l; l=l->next) { n = l->n; switch(n->op) { case ODCLFUNC: case ODCLCONST: case ODCLTYPE: continue; } initreorder(n->ninit, out); n->ninit = nil; init1(n, out); } } // initfix computes initialization order for a list l of top-level // declarations and outputs the corresponding list of statements // to include in the init() function body. NodeList* initfix(NodeList *l) { NodeList *lout; int lno; lout = nil; lno = lineno; initreorder(l, &lout); lineno = lno; return lout; } /* * compilation of top-level (static) assignments * into DATA statements if at all possible. */ static int staticassign(Node*, Node*, NodeList**); static int staticinit(Node *n, NodeList **out) { Node *l, *r; if(n->op != ONAME || n->class != PEXTERN || n->defn == N || n->defn->op != OAS) fatal("staticinit"); lineno = n->lineno; l = n->defn->left; r = n->defn->right; return staticassign(l, r, out); } // like staticassign but we are copying an already // initialized value r. static int staticcopy(Node *l, Node *r, NodeList **out) { int i; InitEntry *e; InitPlan *p; Node *a, *ll, *rr, *orig, n1; if(r->op != ONAME || r->class != PEXTERN || r->sym->pkg != localpkg) return 0; if(r->defn == N) // probably zeroed but perhaps supplied externally and of unknown value return 0; if(r->defn->op != OAS) return 0; orig = r; r = r->defn->right; switch(r->op) { case ONAME: if(staticcopy(l, r, out)) return 1; *out = list(*out, nod(OAS, l, r)); return 1; case OLITERAL: if(iszero(r)) return 1; gdata(l, r, l->type->width); return 1; case OADDR: switch(r->left->op) { case ONAME: gdata(l, r, l->type->width); return 1; } break; case OPTRLIT: switch(r->left->op) { default: //dump("not static addr", r); break; case OARRAYLIT: case OSTRUCTLIT: case OMAPLIT: // copy pointer gdata(l, nod(OADDR, r->nname, N), l->type->width); return 1; } break; case OARRAYLIT: if(isslice(r->type)) { // copy slice a = r->nname; n1 = *l; n1.xoffset = l->xoffset + Array_array; gdata(&n1, nod(OADDR, a, N), widthptr); n1.xoffset = l->xoffset + Array_nel; gdata(&n1, r->right, widthint); n1.xoffset = l->xoffset + Array_cap; gdata(&n1, r->right, widthint); return 1; } // fall through case OSTRUCTLIT: p = r->initplan; n1 = *l; for(i=0; ilen; i++) { e = &p->e[i]; n1.xoffset = l->xoffset + e->xoffset; n1.type = e->expr->type; if(e->expr->op == OLITERAL) gdata(&n1, e->expr, n1.type->width); else { ll = nod(OXXX, N, N); *ll = n1; ll->orig = ll; // completely separate copy if(!staticassign(ll, e->expr, out)) { // Requires computation, but we're // copying someone else's computation. rr = nod(OXXX, N, N); *rr = *orig; rr->orig = rr; // completely separate copy rr->type = ll->type; rr->xoffset += e->xoffset; *out = list(*out, nod(OAS, ll, rr)); } } } return 1; } return 0; } static int staticassign(Node *l, Node *r, NodeList **out) { Node *a, n1; Type *ta; InitPlan *p; InitEntry *e; int i; Strlit *sval; switch(r->op) { default: //dump("not static", r); break; case ONAME: if(r->class == PEXTERN && r->sym->pkg == localpkg) return staticcopy(l, r, out); break; case OLITERAL: if(iszero(r)) return 1; gdata(l, r, l->type->width); return 1; case OADDR: switch(r->left->op) { default: //dump("not static addr", r); break; case ONAME: gdata(l, r, l->type->width); return 1; } case OPTRLIT: switch(r->left->op) { default: //dump("not static ptrlit", r); break; case OARRAYLIT: case OMAPLIT: case OSTRUCTLIT: // Init pointer. a = staticname(r->left->type, 1); r->nname = a; gdata(l, nod(OADDR, a, N), l->type->width); // Init underlying literal. if(!staticassign(a, r->left, out)) *out = list(*out, nod(OAS, a, r->left)); return 1; } break; case OSTRARRAYBYTE: if(l->class == PEXTERN && r->left->op == OLITERAL) { sval = r->left->val.u.sval; slicebytes(l, sval->s, sval->len); return 1; } break; case OARRAYLIT: initplan(r); if(isslice(r->type)) { // Init slice. ta = typ(TARRAY); ta->type = r->type->type; ta->bound = mpgetfix(r->right->val.u.xval); a = staticname(ta, 1); r->nname = a; n1 = *l; n1.xoffset = l->xoffset + Array_array; gdata(&n1, nod(OADDR, a, N), widthptr); n1.xoffset = l->xoffset + Array_nel; gdata(&n1, r->right, widthint); n1.xoffset = l->xoffset + Array_cap; gdata(&n1, r->right, widthint); // Fall through to init underlying array. l = a; } // fall through case OSTRUCTLIT: initplan(r); p = r->initplan; n1 = *l; for(i=0; ilen; i++) { e = &p->e[i]; n1.xoffset = l->xoffset + e->xoffset; n1.type = e->expr->type; if(e->expr->op == OLITERAL) gdata(&n1, e->expr, n1.type->width); else { a = nod(OXXX, N, N); *a = n1; a->orig = a; // completely separate copy if(!staticassign(a, e->expr, out)) *out = list(*out, nod(OAS, a, e->expr)); } } return 1; case OMAPLIT: // TODO: Table-driven map insert. break; } return 0; } /* * from here down is the walk analysis * of composite literals. * most of the work is to generate * data statements for the constant * part of the composite literal. */ static void structlit(int ctxt, int pass, Node *n, Node *var, NodeList **init); static void arraylit(int ctxt, int pass, Node *n, Node *var, NodeList **init); static void slicelit(int ctxt, Node *n, Node *var, NodeList **init); static void maplit(int ctxt, Node *n, Node *var, NodeList **init); static Node* staticname(Type *t, int ctxt) { Node *n; snprint(namebuf, sizeof(namebuf), "statictmp_%.4d", statuniqgen); statuniqgen++; n = newname(lookup(namebuf)); if(!ctxt) n->readonly = 1; addvar(n, t, PEXTERN); return n; } static int isliteral(Node *n) { if(n->op == OLITERAL) if(n->val.ctype != CTNIL) return 1; return 0; } static int simplename(Node *n) { if(n->op != ONAME) goto no; if(!n->addable) goto no; if(n->class & PHEAP) goto no; if(n->class == PPARAMREF) goto no; return 1; no: return 0; } static void litas(Node *l, Node *r, NodeList **init) { Node *a; a = nod(OAS, l, r); typecheck(&a, Etop); walkexpr(&a, init); *init = list(*init, a); } enum { MODEDYNAM = 1, MODECONST = 2, }; static int getdyn(Node *n, int top) { NodeList *nl; Node *value; int mode; mode = 0; switch(n->op) { default: if(isliteral(n)) return MODECONST; return MODEDYNAM; case OARRAYLIT: if(!top && n->type->bound < 0) return MODEDYNAM; case OSTRUCTLIT: break; } for(nl=n->list; nl; nl=nl->next) { value = nl->n->right; mode |= getdyn(value, 0); if(mode == (MODEDYNAM|MODECONST)) break; } return mode; } static void structlit(int ctxt, int pass, Node *n, Node *var, NodeList **init) { Node *r, *a; NodeList *nl; Node *index, *value; for(nl=n->list; nl; nl=nl->next) { r = nl->n; if(r->op != OKEY) fatal("structlit: rhs not OKEY: %N", r); index = r->left; value = r->right; switch(value->op) { case OARRAYLIT: if(value->type->bound < 0) { if(pass == 1 && ctxt != 0) { a = nod(ODOT, var, newname(index->sym)); slicelit(ctxt, value, a, init); } else if(pass == 2 && ctxt == 0) { a = nod(ODOT, var, newname(index->sym)); slicelit(ctxt, value, a, init); } else if(pass == 3) break; continue; } a = nod(ODOT, var, newname(index->sym)); arraylit(ctxt, pass, value, a, init); continue; case OSTRUCTLIT: a = nod(ODOT, var, newname(index->sym)); structlit(ctxt, pass, value, a, init); continue; } if(isliteral(value)) { if(pass == 2) continue; } else if(pass == 1) continue; // build list of var.field = expr a = nod(ODOT, var, newname(index->sym)); a = nod(OAS, a, value); typecheck(&a, Etop); walkexpr(&a, init); if(pass == 1) { if(a->op != OAS) fatal("structlit: not as"); a->dodata = 2; } *init = list(*init, a); } } static void arraylit(int ctxt, int pass, Node *n, Node *var, NodeList **init) { Node *r, *a; NodeList *l; Node *index, *value; for(l=n->list; l; l=l->next) { r = l->n; if(r->op != OKEY) fatal("arraylit: rhs not OKEY: %N", r); index = r->left; value = r->right; switch(value->op) { case OARRAYLIT: if(value->type->bound < 0) { if(pass == 1 && ctxt != 0) { a = nod(OINDEX, var, index); slicelit(ctxt, value, a, init); } else if(pass == 2 && ctxt == 0) { a = nod(OINDEX, var, index); slicelit(ctxt, value, a, init); } else if(pass == 3) break; continue; } a = nod(OINDEX, var, index); arraylit(ctxt, pass, value, a, init); continue; case OSTRUCTLIT: a = nod(OINDEX, var, index); structlit(ctxt, pass, value, a, init); continue; } if(isliteral(index) && isliteral(value)) { if(pass == 2) continue; } else if(pass == 1) continue; // build list of var[index] = value a = nod(OINDEX, var, index); a = nod(OAS, a, value); typecheck(&a, Etop); walkexpr(&a, init); // add any assignments in r to top if(pass == 1) { if(a->op != OAS) fatal("structlit: not as"); a->dodata = 2; } *init = list(*init, a); } } static void slicelit(int ctxt, Node *n, Node *var, NodeList **init) { Node *r, *a; NodeList *l; Type *t; Node *vstat, *vauto; Node *index, *value; int mode; // make an array type t = shallow(n->type); t->bound = mpgetfix(n->right->val.u.xval); t->width = 0; t->sym = nil; t->haspointers = 0; dowidth(t); if(ctxt != 0) { // put everything into static array vstat = staticname(t, ctxt); arraylit(ctxt, 1, n, vstat, init); arraylit(ctxt, 2, n, vstat, init); // copy static to slice a = nod(OSLICE, vstat, nod(OKEY, N, N)); a = nod(OAS, var, a); typecheck(&a, Etop); a->dodata = 2; *init = list(*init, a); return; } // recipe for var = []t{...} // 1. make a static array // var vstat [...]t // 2. assign (data statements) the constant part // vstat = constpart{} // 3. make an auto pointer to array and allocate heap to it // var vauto *[...]t = new([...]t) // 4. copy the static array to the auto array // *vauto = vstat // 5. assign slice of allocated heap to var // var = [0:]*auto // 6. for each dynamic part assign to the slice // var[i] = dynamic part // // an optimization is done if there is no constant part // 3. var vauto *[...]t = new([...]t) // 5. var = [0:]*auto // 6. var[i] = dynamic part // if the literal contains constants, // make static initialized array (1),(2) vstat = N; mode = getdyn(n, 1); if(mode & MODECONST) { vstat = staticname(t, ctxt); arraylit(ctxt, 1, n, vstat, init); } // make new auto *array (3 declare) vauto = temp(ptrto(t)); // set auto to point at new temp or heap (3 assign) if(n->alloc != N) { // temp allocated during order.c for dddarg n->alloc->type = t; if(vstat == N) { a = nod(OAS, n->alloc, N); typecheck(&a, Etop); *init = list(*init, a); // zero new temp } a = nod(OADDR, n->alloc, N); } else if(n->esc == EscNone) { a = temp(t); if(vstat == N) { a = nod(OAS, temp(t), N); typecheck(&a, Etop); *init = list(*init, a); // zero new temp a = a->left; } a = nod(OADDR, a, N); } else { a = nod(ONEW, N, N); a->list = list1(typenod(t)); } a = nod(OAS, vauto, a); typecheck(&a, Etop); walkexpr(&a, init); *init = list(*init, a); if(vstat != N) { // copy static to heap (4) a = nod(OIND, vauto, N); a = nod(OAS, a, vstat); typecheck(&a, Etop); walkexpr(&a, init); *init = list(*init, a); } // make slice out of heap (5) a = nod(OAS, var, nod(OSLICE, vauto, nod(OKEY, N, N))); typecheck(&a, Etop); walkexpr(&a, init); *init = list(*init, a); // put dynamics into slice (6) for(l=n->list; l; l=l->next) { r = l->n; if(r->op != OKEY) fatal("slicelit: rhs not OKEY: %N", r); index = r->left; value = r->right; a = nod(OINDEX, var, index); a->bounded = 1; // TODO need to check bounds? switch(value->op) { case OARRAYLIT: if(value->type->bound < 0) break; arraylit(ctxt, 2, value, a, init); continue; case OSTRUCTLIT: structlit(ctxt, 2, value, a, init); continue; } if(isliteral(index) && isliteral(value)) continue; // build list of var[c] = expr a = nod(OAS, a, value); typecheck(&a, Etop); walkexpr(&a, init); *init = list(*init, a); } } static void maplit(int ctxt, Node *n, Node *var, NodeList **init) { Node *r, *a; NodeList *l; int nerr; int64 b; Type *t, *tk, *tv, *t1; Node *vstat, *index, *value, *key, *val; Sym *syma, *symb; USED(ctxt); ctxt = 0; // make the map var nerr = nerrors; a = nod(OMAKE, N, N); a->list = list1(typenod(n->type)); litas(var, a, init); // count the initializers b = 0; for(l=n->list; l; l=l->next) { r = l->n; if(r->op != OKEY) fatal("maplit: rhs not OKEY: %N", r); index = r->left; value = r->right; if(isliteral(index) && isliteral(value)) b++; } if(b != 0) { // build type [count]struct { a Tindex, b Tvalue } t = n->type; tk = t->down; tv = t->type; symb = lookup("b"); t = typ(TFIELD); t->type = tv; t->sym = symb; syma = lookup("a"); t1 = t; t = typ(TFIELD); t->type = tk; t->sym = syma; t->down = t1; t1 = t; t = typ(TSTRUCT); t->type = t1; t1 = t; t = typ(TARRAY); t->bound = b; t->type = t1; dowidth(t); // make and initialize static array vstat = staticname(t, ctxt); b = 0; for(l=n->list; l; l=l->next) { r = l->n; if(r->op != OKEY) fatal("maplit: rhs not OKEY: %N", r); index = r->left; value = r->right; if(isliteral(index) && isliteral(value)) { // build vstat[b].a = key; a = nodintconst(b); a = nod(OINDEX, vstat, a); a = nod(ODOT, a, newname(syma)); a = nod(OAS, a, index); typecheck(&a, Etop); walkexpr(&a, init); a->dodata = 2; *init = list(*init, a); // build vstat[b].b = value; a = nodintconst(b); a = nod(OINDEX, vstat, a); a = nod(ODOT, a, newname(symb)); a = nod(OAS, a, value); typecheck(&a, Etop); walkexpr(&a, init); a->dodata = 2; *init = list(*init, a); b++; } } // loop adding structure elements to map // for i = 0; i < len(vstat); i++ { // map[vstat[i].a] = vstat[i].b // } index = temp(types[TINT]); a = nod(OINDEX, vstat, index); a->bounded = 1; a = nod(ODOT, a, newname(symb)); r = nod(OINDEX, vstat, index); r->bounded = 1; r = nod(ODOT, r, newname(syma)); r = nod(OINDEX, var, r); r = nod(OAS, r, a); a = nod(OFOR, N, N); a->nbody = list1(r); a->ninit = list1(nod(OAS, index, nodintconst(0))); a->ntest = nod(OLT, index, nodintconst(t->bound)); a->nincr = nod(OAS, index, nod(OADD, index, nodintconst(1))); typecheck(&a, Etop); walkstmt(&a); *init = list(*init, a); } // put in dynamic entries one-at-a-time key = nil; val = nil; for(l=n->list; l; l=l->next) { r = l->n; if(r->op != OKEY) fatal("maplit: rhs not OKEY: %N", r); index = r->left; value = r->right; if(isliteral(index) && isliteral(value)) continue; // build list of var[c] = expr. // use temporary so that mapassign1 can have addressable key, val. if(key == nil) { key = temp(var->type->down); val = temp(var->type->type); } a = nod(OAS, key, r->left); typecheck(&a, Etop); walkstmt(&a); *init = list(*init, a); a = nod(OAS, val, r->right); typecheck(&a, Etop); walkstmt(&a); *init = list(*init, a); a = nod(OAS, nod(OINDEX, var, key), val); typecheck(&a, Etop); walkstmt(&a); *init = list(*init, a); if(nerr != nerrors) break; } if(key != nil) { a = nod(OVARKILL, key, N); typecheck(&a, Etop); *init = list(*init, a); a = nod(OVARKILL, val, N); typecheck(&a, Etop); *init = list(*init, a); } } void anylit(int ctxt, Node *n, Node *var, NodeList **init) { Type *t; Node *a, *vstat, *r; t = n->type; switch(n->op) { default: fatal("anylit: not lit"); case OPTRLIT: if(!isptr[t->etype]) fatal("anylit: not ptr"); if(n->right != N) { r = nod(OADDR, n->right, N); typecheck(&r, Erv); } else { r = nod(ONEW, N, N); r->typecheck = 1; r->type = t; r->esc = n->esc; } walkexpr(&r, init); a = nod(OAS, var, r); typecheck(&a, Etop); *init = list(*init, a); var = nod(OIND, var, N); typecheck(&var, Erv | Easgn); anylit(ctxt, n->left, var, init); break; case OSTRUCTLIT: if(t->etype != TSTRUCT) fatal("anylit: not struct"); if(simplename(var)) { if(ctxt == 0) { // lay out static data vstat = staticname(t, ctxt); structlit(ctxt, 1, n, vstat, init); // copy static to var a = nod(OAS, var, vstat); typecheck(&a, Etop); walkexpr(&a, init); *init = list(*init, a); // add expressions to automatic structlit(ctxt, 2, n, var, init); break; } structlit(ctxt, 1, n, var, init); structlit(ctxt, 2, n, var, init); break; } // initialize of not completely specified if(count(n->list) < structcount(t)) { a = nod(OAS, var, N); typecheck(&a, Etop); walkexpr(&a, init); *init = list(*init, a); } structlit(ctxt, 3, n, var, init); break; case OARRAYLIT: if(t->etype != TARRAY) fatal("anylit: not array"); if(t->bound < 0) { slicelit(ctxt, n, var, init); break; } if(simplename(var)) { if(ctxt == 0) { // lay out static data vstat = staticname(t, ctxt); arraylit(1, 1, n, vstat, init); // copy static to automatic a = nod(OAS, var, vstat); typecheck(&a, Etop); walkexpr(&a, init); *init = list(*init, a); // add expressions to automatic arraylit(ctxt, 2, n, var, init); break; } arraylit(ctxt, 1, n, var, init); arraylit(ctxt, 2, n, var, init); break; } // initialize of not completely specified if(count(n->list) < t->bound) { a = nod(OAS, var, N); typecheck(&a, Etop); walkexpr(&a, init); *init = list(*init, a); } arraylit(ctxt, 3, n, var, init); break; case OMAPLIT: if(t->etype != TMAP) fatal("anylit: not map"); maplit(ctxt, n, var, init); break; } } int oaslit(Node *n, NodeList **init) { int ctxt; if(n->left == N || n->right == N) goto no; if(n->left->type == T || n->right->type == T) goto no; if(!simplename(n->left)) goto no; if(!eqtype(n->left->type, n->right->type)) goto no; // context is init() function. // implies generated data executed // exactly once and not subject to races. ctxt = 0; // if(n->dodata == 1) // ctxt = 1; switch(n->right->op) { default: goto no; case OSTRUCTLIT: case OARRAYLIT: case OMAPLIT: if(vmatch1(n->left, n->right)) goto no; anylit(ctxt, n->right, n->left, init); break; } n->op = OEMPTY; return 1; no: // not a special composit literal assignment return 0; } static int getlit(Node *lit) { if(smallintconst(lit)) return mpgetfix(lit->val.u.xval); return -1; } int stataddr(Node *nam, Node *n) { int l; if(n == N) goto no; switch(n->op) { case ONAME: *nam = *n; return n->addable; case ODOT: if(!stataddr(nam, n->left)) break; nam->xoffset += n->xoffset; nam->type = n->type; return 1; case OINDEX: if(n->left->type->bound < 0) break; if(!stataddr(nam, n->left)) break; l = getlit(n->right); if(l < 0) break; // Check for overflow. if(n->type->width != 0 && MAXWIDTH/n->type->width <= l) break; nam->xoffset += l*n->type->width; nam->type = n->type; return 1; } no: return 0; } int gen_as_init(Node *n) { Node *nr, *nl; Node nam, nod1; if(n->dodata == 0) goto no; nr = n->right; nl = n->left; if(nr == N) { if(!stataddr(&nam, nl)) goto no; if(nam.class != PEXTERN) goto no; goto yes; } if(nr->type == T || !eqtype(nl->type, nr->type)) goto no; if(!stataddr(&nam, nl)) goto no; if(nam.class != PEXTERN) goto no; switch(nr->op) { default: goto no; case OCONVNOP: nr = nr->left; if(nr == N || nr->op != OSLICEARR) goto no; // fall through case OSLICEARR: if(nr->right->op == OKEY && nr->right->left == N && nr->right->right == N) { nr = nr->left; goto slice; } goto no; case OLITERAL: break; } switch(nr->type->etype) { default: goto no; case TBOOL: case TINT8: case TUINT8: case TINT16: case TUINT16: case TINT32: case TUINT32: case TINT64: case TUINT64: case TINT: case TUINT: case TUINTPTR: case TPTR32: case TPTR64: case TFLOAT32: case TFLOAT64: gdata(&nam, nr, nr->type->width); break; case TCOMPLEX64: case TCOMPLEX128: gdatacomplex(&nam, nr->val.u.cval); break; case TSTRING: gdatastring(&nam, nr->val.u.sval); break; } yes: return 1; slice: gused(N); // in case the data is the dest of a goto nl = nr; if(nr == N || nr->op != OADDR) goto no; nr = nr->left; if(nr == N || nr->op != ONAME) goto no; // nr is the array being converted to a slice if(nr->type == T || nr->type->etype != TARRAY || nr->type->bound < 0) goto no; nam.xoffset += Array_array; gdata(&nam, nl, types[tptr]->width); nam.xoffset += Array_nel-Array_array; nodconst(&nod1, types[TINT], nr->type->bound); gdata(&nam, &nod1, widthint); nam.xoffset += Array_cap-Array_nel; gdata(&nam, &nod1, widthint); goto yes; no: if(n->dodata == 2) { dump("\ngen_as_init", n); fatal("gen_as_init couldnt make data statement"); } return 0; } static int iszero(Node*); static int isvaluelit(Node*); static InitEntry* entry(InitPlan*); static void addvalue(InitPlan*, vlong, Node*, Node*); static void initplan(Node *n) { InitPlan *p; Node *a; NodeList *l; if(n->initplan != nil) return; p = mal(sizeof *p); n->initplan = p; switch(n->op) { default: fatal("initplan"); case OARRAYLIT: for(l=n->list; l; l=l->next) { a = l->n; if(a->op != OKEY || !smallintconst(a->left)) fatal("initplan arraylit"); addvalue(p, n->type->type->width*mpgetfix(a->left->val.u.xval), N, a->right); } break; case OSTRUCTLIT: for(l=n->list; l; l=l->next) { a = l->n; if(a->op != OKEY || a->left->type == T) fatal("initplan structlit"); addvalue(p, a->left->type->width, N, a->right); } break; case OMAPLIT: for(l=n->list; l; l=l->next) { a = l->n; if(a->op != OKEY) fatal("initplan maplit"); addvalue(p, -1, a->left, a->right); } break; } } static void addvalue(InitPlan *p, vlong xoffset, Node *key, Node *n) { int i; InitPlan *q; InitEntry *e; USED(key); // special case: zero can be dropped entirely if(iszero(n)) { p->zero += n->type->width; return; } // special case: inline struct and array (not slice) literals if(isvaluelit(n)) { initplan(n); q = n->initplan; for(i=0; ilen; i++) { e = entry(p); *e = q->e[i]; e->xoffset += xoffset; } return; } // add to plan if(n->op == OLITERAL) p->lit += n->type->width; else p->expr += n->type->width; e = entry(p); e->xoffset = xoffset; e->expr = n; } static int iszero(Node *n) { NodeList *l; switch(n->op) { case OLITERAL: switch(n->val.ctype) { default: dump("unexpected literal", n); fatal("iszero"); case CTNIL: return 1; case CTSTR: return n->val.u.sval == nil || n->val.u.sval->len == 0; case CTBOOL: return n->val.u.bval == 0; case CTINT: case CTRUNE: return mpcmpfixc(n->val.u.xval, 0) == 0; case CTFLT: return mpcmpfltc(n->val.u.fval, 0) == 0; case CTCPLX: return mpcmpfltc(&n->val.u.cval->real, 0) == 0 && mpcmpfltc(&n->val.u.cval->imag, 0) == 0; } break; case OARRAYLIT: if(isslice(n->type)) break; // fall through case OSTRUCTLIT: for(l=n->list; l; l=l->next) if(!iszero(l->n->right)) return 0; return 1; } return 0; } static int isvaluelit(Node *n) { return (n->op == OARRAYLIT && isfixedarray(n->type)) || n->op == OSTRUCTLIT; } static InitEntry* entry(InitPlan *p) { if(p->len >= p->cap) { if(p->cap == 0) p->cap = 4; else p->cap *= 2; p->e = realloc(p->e, p->cap*sizeof p->e[0]); if(p->e == nil) fatal("out of memory"); } return &p->e[p->len++]; } go/src/cmd/gc/subr.c0100644000000000000000000021207112412656737014544 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" #include "md5.h" #include "y.tab.h" #include "yerr.h" typedef struct Error Error; struct Error { int lineno; int seq; char *msg; }; static Error *err; static int nerr; static int merr; void errorexit(void) { flusherrors(); if(outfile) remove(outfile); exits("error"); } extern int yychar; int parserline(void) { if(yychar != 0 && yychar != -2) // parser has one symbol lookahead return prevlineno; return lineno; } static void adderr(int line, char *fmt, va_list arg) { Fmt f; Error *p; fmtstrinit(&f); fmtprint(&f, "%L: ", line); fmtvprint(&f, fmt, arg); fmtprint(&f, "\n"); if(nerr >= merr) { if(merr == 0) merr = 16; else merr *= 2; p = realloc(err, merr*sizeof err[0]); if(p == nil) { merr = nerr; flusherrors(); print("out of memory\n"); errorexit(); } err = p; } err[nerr].seq = nerr; err[nerr].lineno = line; err[nerr].msg = fmtstrflush(&f); nerr++; } static int errcmp(const void *va, const void *vb) { Error *a, *b; a = (Error*)va; b = (Error*)vb; if(a->lineno != b->lineno) return a->lineno - b->lineno; if(a->seq != b->seq) return a->seq - b->seq; return strcmp(a->msg, b->msg); } void flusherrors(void) { int i; Bflush(&bstdout); if(nerr == 0) return; qsort(err, nerr, sizeof err[0], errcmp); for(i=0; i= 10 && !debug['e']) { flusherrors(); print("%L: too many errors\n", line); errorexit(); } } extern int yystate, yychar; void yyerror(char *fmt, ...) { int i; static int lastsyntax; va_list arg; char buf[512], *p; if(strncmp(fmt, "syntax error", 12) == 0) { nsyntaxerrors++; if(debug['x']) print("yyerror: yystate=%d yychar=%d\n", yystate, yychar); // An unexpected EOF caused a syntax error. Use the previous // line number since getc generated a fake newline character. if(curio.eofnl) lexlineno = prevlineno; // only one syntax error per line if(lastsyntax == lexlineno) return; lastsyntax = lexlineno; if(strstr(fmt, "{ or {") || strstr(fmt, " or ?") || strstr(fmt, " or @")) { // The grammar has { and LBRACE but both show up as {. // Rewrite syntax error referring to "{ or {" to say just "{". strecpy(buf, buf+sizeof buf, fmt); p = strstr(buf, "{ or {"); if(p) memmove(p+1, p+6, strlen(p+6)+1); // The grammar has ? and @ but only for reading imports. // Silence them in ordinary errors. p = strstr(buf, " or ?"); if(p) memmove(p, p+5, strlen(p+5)+1); p = strstr(buf, " or @"); if(p) memmove(p, p+5, strlen(p+5)+1); fmt = buf; } // look for parse state-specific errors in list (see go.errors). for(i=0; i= 10 && !debug['e']) { flusherrors(); print("%L: too many errors\n", parserline()); errorexit(); } } void warn(char *fmt, ...) { va_list arg; va_start(arg, fmt); adderr(parserline(), fmt, arg); va_end(arg); hcrash(); } void warnl(int line, char *fmt, ...) { va_list arg; va_start(arg, fmt); adderr(line, fmt, arg); va_end(arg); if(debug['m']) flusherrors(); } void fatal(char *fmt, ...) { va_list arg; flusherrors(); print("%L: internal compiler error: ", lineno); va_start(arg, fmt); vfprint(1, fmt, arg); va_end(arg); print("\n"); // If this is a released compiler version, ask for a bug report. if(strncmp(getgoversion(), "release", 7) == 0) { print("\n"); print("Please file a bug report including a short program that triggers the error.\n"); print("http://code.google.com/p/go/issues/entry?template=compilerbug\n"); } hcrash(); errorexit(); } void linehist(char *file, int32 off, int relative) { if(debug['i']) { if(file != nil) { if(off < 0) print("pragma %s", file); else if(off > 0) print("line %s", file); else print("import %s", file); } else print("end of import"); print(" at line %L\n", lexlineno); } if(off < 0 && file[0] != '/' && !relative) file = smprint("%s/%s", ctxt->pathname, file); linklinehist(ctxt, lexlineno, file, off); } int32 setlineno(Node *n) { int32 lno; lno = lineno; if(n != N) switch(n->op) { case ONAME: case OTYPE: case OPACK: case OLITERAL: break; default: lineno = n->lineno; if(lineno == 0) { if(debug['K']) warn("setlineno: line 0"); lineno = lno; } } return lno; } uint32 stringhash(char *p) { uint32 h; int c; h = 0; for(;;) { c = *p++; if(c == 0) break; h = h*PRIME1 + c; } if((int32)h < 0) { h = -h; if((int32)h < 0) h = 0; } return h; } Sym* lookup(char *name) { return pkglookup(name, localpkg); } Sym* pkglookup(char *name, Pkg *pkg) { Sym *s; uint32 h; int c; h = stringhash(name) % NHASH; c = name[0]; for(s = hash[h]; s != S; s = s->link) { if(s->name[0] != c || s->pkg != pkg) continue; if(strcmp(s->name, name) == 0) return s; } s = mal(sizeof(*s)); s->name = mal(strlen(name)+1); strcpy(s->name, name); s->pkg = pkg; s->link = hash[h]; hash[h] = s; s->lexical = LNAME; return s; } Sym* restrictlookup(char *name, Pkg *pkg) { if(!exportname(name) && pkg != localpkg) yyerror("cannot refer to unexported name %s.%s", pkg->name, name); return pkglookup(name, pkg); } // find all the exported symbols in package opkg // and make them available in the current package void importdot(Pkg *opkg, Node *pack) { Sym *s, *s1; uint32 h; int n; char *pkgerror; n = 0; for(h=0; hlink) { if(s->pkg != opkg) continue; if(s->def == N) continue; if(!exportname(s->name) || utfrune(s->name, 0xb7)) // 0xb7 = center dot continue; s1 = lookup(s->name); if(s1->def != N) { pkgerror = smprint("during import \"%Z\"", opkg->path); redeclare(s1, pkgerror); continue; } s1->def = s->def; s1->block = s->block; s1->def->pack = pack; s1->origpkg = opkg; n++; } } if(n == 0) { // can't possibly be used - there were no symbols yyerrorl(pack->lineno, "imported and not used: \"%Z\"", opkg->path); } } static void gethunk(void) { char *h; int32 nh; nh = NHUNK; if(thunk >= 10L*NHUNK) nh = 10L*NHUNK; h = (char*)malloc(nh); if(h == nil) { flusherrors(); yyerror("out of memory"); errorexit(); } hunk = h; nhunk = nh; thunk += nh; } void* mal(int32 n) { void *p; if(n >= NHUNK) { p = malloc(n); if(p == nil) { flusherrors(); yyerror("out of memory"); errorexit(); } memset(p, 0, n); return p; } while((uintptr)hunk & MAXALIGN) { hunk++; nhunk--; } if(nhunk < n) gethunk(); p = hunk; nhunk -= n; hunk += n; memset(p, 0, n); return p; } void* remal(void *p, int32 on, int32 n) { void *q; q = (uchar*)p + on; if(q != hunk || nhunk < n) { if(on+n >= NHUNK) { q = mal(on+n); memmove(q, p, on); return q; } if(nhunk < on+n) gethunk(); memmove(hunk, p, on); p = hunk; hunk += on; nhunk -= on; } hunk += n; nhunk -= n; return p; } Node* nod(int op, Node *nleft, Node *nright) { Node *n; n = mal(sizeof(*n)); n->op = op; n->left = nleft; n->right = nright; n->lineno = parserline(); n->xoffset = BADWIDTH; n->orig = n; n->curfn = curfn; return n; } void saveorignode(Node *n) { Node *norig; if(n->orig != N) return; norig = nod(n->op, N, N); *norig = *n; n->orig = norig; } // ispaddedfield reports whether the given field // is followed by padding. For the case where t is // the last field, total gives the size of the enclosing struct. static int ispaddedfield(Type *t, vlong total) { if(t->etype != TFIELD) fatal("ispaddedfield called non-field %T", t); if(t->down == T) return t->width + t->type->width != total; return t->width + t->type->width != t->down->width; } int algtype1(Type *t, Type **bad) { int a, ret; Type *t1; if(bad) *bad = T; if(t->noalg) return ANOEQ; switch(t->etype) { case TANY: case TFORW: // will be defined later. *bad = t; return -1; case TINT8: case TUINT8: case TINT16: case TUINT16: case TINT32: case TUINT32: case TINT64: case TUINT64: case TINT: case TUINT: case TUINTPTR: case TBOOL: case TPTR32: case TPTR64: case TCHAN: case TUNSAFEPTR: return AMEM; case TFUNC: case TMAP: if(bad) *bad = t; return ANOEQ; case TFLOAT32: return AFLOAT32; case TFLOAT64: return AFLOAT64; case TCOMPLEX64: return ACPLX64; case TCOMPLEX128: return ACPLX128; case TSTRING: return ASTRING; case TINTER: if(isnilinter(t)) return ANILINTER; return AINTER; case TARRAY: if(isslice(t)) { if(bad) *bad = t; return ANOEQ; } a = algtype1(t->type, bad); if(a == ANOEQ || a == AMEM) { if(a == ANOEQ && bad) *bad = t; return a; } return -1; // needs special compare case TSTRUCT: if(t->type != T && t->type->down == T && !isblanksym(t->type->sym)) { // One-field struct is same as that one field alone. return algtype1(t->type->type, bad); } ret = AMEM; for(t1=t->type; t1!=T; t1=t1->down) { // All fields must be comparable. a = algtype1(t1->type, bad); if(a == ANOEQ) return ANOEQ; // Blank fields, padded fields, fields with non-memory // equality need special compare. if(a != AMEM || isblanksym(t1->sym) || ispaddedfield(t1, t->width)) { ret = -1; continue; } } return ret; } fatal("algtype1: unexpected type %T", t); return 0; } int algtype(Type *t) { int a; a = algtype1(t, nil); if(a == AMEM || a == ANOEQ) { if(isslice(t)) return ASLICE; switch(t->width) { case 0: return a + AMEM0 - AMEM; case 1: return a + AMEM8 - AMEM; case 2: return a + AMEM16 - AMEM; case 4: return a + AMEM32 - AMEM; case 8: return a + AMEM64 - AMEM; case 16: return a + AMEM128 - AMEM; } } return a; } Type* maptype(Type *key, Type *val) { Type *t; Type *bad; int atype; if(key != nil) { atype = algtype1(key, &bad); switch(bad == T ? key->etype : bad->etype) { default: if(atype == ANOEQ) yyerror("invalid map key type %T", key); break; case TANY: // will be resolved later. break; case TFORW: // map[key] used during definition of key. // postpone check until key is fully defined. // if there are multiple uses of map[key] // before key is fully defined, the error // will only be printed for the first one. // good enough. if(key->maplineno == 0) key->maplineno = lineno; break; } } t = typ(TMAP); t->down = key; t->type = val; return t; } Type* typ(int et) { Type *t; t = mal(sizeof(*t)); t->etype = et; t->width = BADWIDTH; t->lineno = lineno; t->orig = t; return t; } static int methcmp(const void *va, const void *vb) { Type *a, *b; int i; a = *(Type**)va; b = *(Type**)vb; if(a->sym == S && b->sym == S) return 0; if(a->sym == S) return -1; if(b->sym == S) return 1; i = strcmp(a->sym->name, b->sym->name); if(i != 0) return i; if(!exportname(a->sym->name)) { i = strcmp(a->sym->pkg->path->s, b->sym->pkg->path->s); if(i != 0) return i; } return 0; } Type* sortinter(Type *t) { Type *f; int i; Type **a; if(t->type == nil || t->type->down == nil) return t; i=0; for(f=t->type; f; f=f->down) i++; a = mal(i*sizeof f); i = 0; for(f=t->type; f; f=f->down) a[i++] = f; qsort(a, i, sizeof a[0], methcmp); while(i-- > 0) { a[i]->down = f; f = a[i]; } t->type = f; return t; } Node* nodintconst(int64 v) { Node *c; c = nod(OLITERAL, N, N); c->addable = 1; c->val.u.xval = mal(sizeof(*c->val.u.xval)); mpmovecfix(c->val.u.xval, v); c->val.ctype = CTINT; c->type = types[TIDEAL]; ullmancalc(c); return c; } Node* nodfltconst(Mpflt* v) { Node *c; c = nod(OLITERAL, N, N); c->addable = 1; c->val.u.fval = mal(sizeof(*c->val.u.fval)); mpmovefltflt(c->val.u.fval, v); c->val.ctype = CTFLT; c->type = types[TIDEAL]; ullmancalc(c); return c; } void nodconst(Node *n, Type *t, int64 v) { memset(n, 0, sizeof(*n)); n->op = OLITERAL; n->addable = 1; ullmancalc(n); n->val.u.xval = mal(sizeof(*n->val.u.xval)); mpmovecfix(n->val.u.xval, v); n->val.ctype = CTINT; n->type = t; if(isfloat[t->etype]) fatal("nodconst: bad type %T", t); } Node* nodnil(void) { Node *c; c = nodintconst(0); c->val.ctype = CTNIL; c->type = types[TNIL]; return c; } Node* nodbool(int b) { Node *c; c = nodintconst(0); c->val.ctype = CTBOOL; c->val.u.bval = b; c->type = idealbool; return c; } Type* aindex(Node *b, Type *t) { Type *r; int64 bound; bound = -1; // open bound typecheck(&b, Erv); if(b != nil) { switch(consttype(b)) { default: yyerror("array bound must be an integer expression"); break; case CTINT: case CTRUNE: bound = mpgetfix(b->val.u.xval); if(bound < 0) yyerror("array bound must be non negative"); break; } } // fixed array r = typ(TARRAY); r->type = t; r->bound = bound; return r; } Node* treecopy(Node *n) { Node *m; if(n == N) return N; switch(n->op) { default: m = nod(OXXX, N, N); *m = *n; m->orig = m; m->left = treecopy(n->left); m->right = treecopy(n->right); m->list = listtreecopy(n->list); if(m->defn) abort(); break; case ONONAME: if(n->sym == lookup("iota")) { // Not sure yet whether this is the real iota, // but make a copy of the Node* just in case, // so that all the copies of this const definition // don't have the same iota value. m = nod(OXXX, N, N); *m = *n; m->iota = iota; break; } // fall through case ONAME: case OLITERAL: case OTYPE: m = n; break; } return m; } int isnil(Node *n) { if(n == N) return 0; if(n->op != OLITERAL) return 0; if(n->val.ctype != CTNIL) return 0; return 1; } int isptrto(Type *t, int et) { if(t == T) return 0; if(!isptr[t->etype]) return 0; t = t->type; if(t == T) return 0; if(t->etype != et) return 0; return 1; } int istype(Type *t, int et) { return t != T && t->etype == et; } int isfixedarray(Type *t) { return t != T && t->etype == TARRAY && t->bound >= 0; } int isslice(Type *t) { return t != T && t->etype == TARRAY && t->bound < 0; } int isblank(Node *n) { if(n == N) return 0; return isblanksym(n->sym); } int isblanksym(Sym *s) { char *p; if(s == S) return 0; p = s->name; if(p == nil) return 0; return p[0] == '_' && p[1] == '\0'; } int isinter(Type *t) { return t != T && t->etype == TINTER; } int isnilinter(Type *t) { if(!isinter(t)) return 0; if(t->type != T) return 0; return 1; } int isideal(Type *t) { if(t == T) return 0; if(t == idealstring || t == idealbool) return 1; switch(t->etype) { case TNIL: case TIDEAL: return 1; } return 0; } /* * given receiver of type t (t == r or t == *r) * return type to hang methods off (r). */ Type* methtype(Type *t, int mustname) { if(t == T) return T; // strip away pointer if it's there if(isptr[t->etype]) { if(t->sym != S) return T; t = t->type; if(t == T) return T; } // need a type name if(t->sym == S && (mustname || t->etype != TSTRUCT)) return T; // check types if(!issimple[t->etype]) switch(t->etype) { default: return T; case TSTRUCT: case TARRAY: case TMAP: case TCHAN: case TSTRING: case TFUNC: break; } return t; } int cplxsubtype(int et) { switch(et) { case TCOMPLEX64: return TFLOAT32; case TCOMPLEX128: return TFLOAT64; } fatal("cplxsubtype: %E\n", et); return 0; } static int eqnote(Strlit *a, Strlit *b) { if(a == b) return 1; if(a == nil || b == nil) return 0; if(a->len != b->len) return 0; return memcmp(a->s, b->s, a->len) == 0; } typedef struct TypePairList TypePairList; struct TypePairList { Type *t1; Type *t2; TypePairList *next; }; static int onlist(TypePairList *l, Type *t1, Type *t2) { for(; l; l=l->next) if((l->t1 == t1 && l->t2 == t2) || (l->t1 == t2 && l->t2 == t1)) return 1; return 0; } static int eqtype1(Type*, Type*, TypePairList*); // Return 1 if t1 and t2 are identical, following the spec rules. // // Any cyclic type must go through a named type, and if one is // named, it is only identical to the other if they are the same // pointer (t1 == t2), so there's no chance of chasing cycles // ad infinitum, so no need for a depth counter. int eqtype(Type *t1, Type *t2) { return eqtype1(t1, t2, nil); } static int eqtype1(Type *t1, Type *t2, TypePairList *assumed_equal) { TypePairList l; if(t1 == t2) return 1; if(t1 == T || t2 == T || t1->etype != t2->etype) return 0; if(t1->sym || t2->sym) { // Special case: we keep byte and uint8 separate // for error messages. Treat them as equal. switch(t1->etype) { case TUINT8: if((t1 == types[TUINT8] || t1 == bytetype) && (t2 == types[TUINT8] || t2 == bytetype)) return 1; break; case TINT: case TINT32: if((t1 == types[runetype->etype] || t1 == runetype) && (t2 == types[runetype->etype] || t2 == runetype)) return 1; break; } return 0; } if(onlist(assumed_equal, t1, t2)) return 1; l.next = assumed_equal; l.t1 = t1; l.t2 = t2; switch(t1->etype) { case TINTER: case TSTRUCT: for(t1=t1->type, t2=t2->type; t1 && t2; t1=t1->down, t2=t2->down) { if(t1->etype != TFIELD || t2->etype != TFIELD) fatal("struct/interface missing field: %T %T", t1, t2); if(t1->sym != t2->sym || t1->embedded != t2->embedded || !eqtype1(t1->type, t2->type, &l) || !eqnote(t1->note, t2->note)) goto no; } if(t1 == T && t2 == T) goto yes; goto no; case TFUNC: // Loop over structs: receiver, in, out. for(t1=t1->type, t2=t2->type; t1 && t2; t1=t1->down, t2=t2->down) { Type *ta, *tb; if(t1->etype != TSTRUCT || t2->etype != TSTRUCT) fatal("func missing struct: %T %T", t1, t2); // Loop over fields in structs, ignoring argument names. for(ta=t1->type, tb=t2->type; ta && tb; ta=ta->down, tb=tb->down) { if(ta->etype != TFIELD || tb->etype != TFIELD) fatal("func struct missing field: %T %T", ta, tb); if(ta->isddd != tb->isddd || !eqtype1(ta->type, tb->type, &l)) goto no; } if(ta != T || tb != T) goto no; } if(t1 == T && t2 == T) goto yes; goto no; case TARRAY: if(t1->bound != t2->bound) goto no; break; case TCHAN: if(t1->chan != t2->chan) goto no; break; } if(eqtype1(t1->down, t2->down, &l) && eqtype1(t1->type, t2->type, &l)) goto yes; goto no; yes: return 1; no: return 0; } // Are t1 and t2 equal struct types when field names are ignored? // For deciding whether the result struct from g can be copied // directly when compiling f(g()). int eqtypenoname(Type *t1, Type *t2) { if(t1 == T || t2 == T || t1->etype != TSTRUCT || t2->etype != TSTRUCT) return 0; t1 = t1->type; t2 = t2->type; for(;;) { if(!eqtype(t1, t2)) return 0; if(t1 == T) return 1; t1 = t1->down; t2 = t2->down; } } // Is type src assignment compatible to type dst? // If so, return op code to use in conversion. // If not, return 0. int assignop(Type *src, Type *dst, char **why) { Type *missing, *have; int ptr; if(why != nil) *why = ""; // TODO(rsc,lvd): This behaves poorly in the presence of inlining. // https://code.google.com/p/go/issues/detail?id=2795 if(safemode && importpkg == nil && src != T && src->etype == TUNSAFEPTR) { yyerror("cannot use unsafe.Pointer"); errorexit(); } if(src == dst) return OCONVNOP; if(src == T || dst == T || src->etype == TFORW || dst->etype == TFORW || src->orig == T || dst->orig == T) return 0; // 1. src type is identical to dst. if(eqtype(src, dst)) return OCONVNOP; // 2. src and dst have identical underlying types // and either src or dst is not a named type or // both are empty interface types. // For assignable but different non-empty interface types, // we want to recompute the itab. if(eqtype(src->orig, dst->orig) && (src->sym == S || dst->sym == S || isnilinter(src))) return OCONVNOP; // 3. dst is an interface type and src implements dst. if(dst->etype == TINTER && src->etype != TNIL) { if(implements(src, dst, &missing, &have, &ptr)) return OCONVIFACE; // we'll have complained about this method anyway, suppress spurious messages. if(have && have->sym == missing->sym && (have->type->broke || missing->type->broke)) return OCONVIFACE; if(why != nil) { if(isptrto(src, TINTER)) *why = smprint(":\n\t%T is pointer to interface, not interface", src); else if(have && have->sym == missing->sym && have->nointerface) *why = smprint(":\n\t%T does not implement %T (%S method is marked 'nointerface')", src, dst, missing->sym); else if(have && have->sym == missing->sym) *why = smprint(":\n\t%T does not implement %T (wrong type for %S method)\n" "\t\thave %S%hhT\n\t\twant %S%hhT", src, dst, missing->sym, have->sym, have->type, missing->sym, missing->type); else if(ptr) *why = smprint(":\n\t%T does not implement %T (%S method has pointer receiver)", src, dst, missing->sym); else if(have) *why = smprint(":\n\t%T does not implement %T (missing %S method)\n" "\t\thave %S%hhT\n\t\twant %S%hhT", src, dst, missing->sym, have->sym, have->type, missing->sym, missing->type); else *why = smprint(":\n\t%T does not implement %T (missing %S method)", src, dst, missing->sym); } return 0; } if(isptrto(dst, TINTER)) { if(why != nil) *why = smprint(":\n\t%T is pointer to interface, not interface", dst); return 0; } if(src->etype == TINTER && dst->etype != TBLANK) { if(why != nil && implements(dst, src, &missing, &have, &ptr)) *why = ": need type assertion"; return 0; } // 4. src is a bidirectional channel value, dst is a channel type, // src and dst have identical element types, and // either src or dst is not a named type. if(src->etype == TCHAN && src->chan == Cboth && dst->etype == TCHAN) if(eqtype(src->type, dst->type) && (src->sym == S || dst->sym == S)) return OCONVNOP; // 5. src is the predeclared identifier nil and dst is a nillable type. if(src->etype == TNIL) { switch(dst->etype) { case TARRAY: if(dst->bound != -100) // not slice break; case TPTR32: case TPTR64: case TFUNC: case TMAP: case TCHAN: case TINTER: return OCONVNOP; } } // 6. rule about untyped constants - already converted by defaultlit. // 7. Any typed value can be assigned to the blank identifier. if(dst->etype == TBLANK) return OCONVNOP; return 0; } // Can we convert a value of type src to a value of type dst? // If so, return op code to use in conversion (maybe OCONVNOP). // If not, return 0. int convertop(Type *src, Type *dst, char **why) { int op; if(why != nil) *why = ""; if(src == dst) return OCONVNOP; if(src == T || dst == T) return 0; // 1. src can be assigned to dst. if((op = assignop(src, dst, why)) != 0) return op; // The rules for interfaces are no different in conversions // than assignments. If interfaces are involved, stop now // with the good message from assignop. // Otherwise clear the error. if(src->etype == TINTER || dst->etype == TINTER) return 0; if(why != nil) *why = ""; // 2. src and dst have identical underlying types. if(eqtype(src->orig, dst->orig)) return OCONVNOP; // 3. src and dst are unnamed pointer types // and their base types have identical underlying types. if(isptr[src->etype] && isptr[dst->etype] && src->sym == S && dst->sym == S) if(eqtype(src->type->orig, dst->type->orig)) return OCONVNOP; // 4. src and dst are both integer or floating point types. if((isint[src->etype] || isfloat[src->etype]) && (isint[dst->etype] || isfloat[dst->etype])) { if(simtype[src->etype] == simtype[dst->etype]) return OCONVNOP; return OCONV; } // 5. src and dst are both complex types. if(iscomplex[src->etype] && iscomplex[dst->etype]) { if(simtype[src->etype] == simtype[dst->etype]) return OCONVNOP; return OCONV; } // 6. src is an integer or has type []byte or []rune // and dst is a string type. if(isint[src->etype] && dst->etype == TSTRING) return ORUNESTR; if(isslice(src) && dst->etype == TSTRING) { if(src->type->etype == bytetype->etype) return OARRAYBYTESTR; if(src->type->etype == runetype->etype) return OARRAYRUNESTR; } // 7. src is a string and dst is []byte or []rune. // String to slice. if(src->etype == TSTRING && isslice(dst)) { if(dst->type->etype == bytetype->etype) return OSTRARRAYBYTE; if(dst->type->etype == runetype->etype) return OSTRARRAYRUNE; } // 8. src is a pointer or uintptr and dst is unsafe.Pointer. if((isptr[src->etype] || src->etype == TUINTPTR) && dst->etype == TUNSAFEPTR) return OCONVNOP; // 9. src is unsafe.Pointer and dst is a pointer or uintptr. if(src->etype == TUNSAFEPTR && (isptr[dst->etype] || dst->etype == TUINTPTR)) return OCONVNOP; return 0; } // Convert node n for assignment to type t. Node* assignconv(Node *n, Type *t, char *context) { int op; Node *r, *old; char *why; if(n == N || n->type == T || n->type->broke) return n; if(t->etype == TBLANK && n->type->etype == TNIL) yyerror("use of untyped nil"); old = n; old->diag++; // silence errors about n; we'll issue one below defaultlit(&n, t); old->diag--; if(t->etype == TBLANK) return n; // Convert ideal bool from comparison to plain bool // if the next step is non-bool (like interface{}). if(n->type == idealbool && t->etype != TBOOL) { if(n->op == ONAME || n->op == OLITERAL) { r = nod(OCONVNOP, n, N); r->type = types[TBOOL]; r->typecheck = 1; r->implicit = 1; n = r; } } if(eqtype(n->type, t)) return n; op = assignop(n->type, t, &why); if(op == 0) { yyerror("cannot use %lN as type %T in %s%s", n, t, context, why); op = OCONV; } r = nod(op, n, N); r->type = t; r->typecheck = 1; r->implicit = 1; r->orig = n->orig; return r; } static int subtype(Type **stp, Type *t, int d) { Type *st; loop: st = *stp; if(st == T) return 0; d++; if(d >= 10) return 0; switch(st->etype) { default: return 0; case TPTR32: case TPTR64: case TCHAN: case TARRAY: stp = &st->type; goto loop; case TANY: if(!st->copyany) return 0; *stp = t; break; case TMAP: if(subtype(&st->down, t, d)) break; stp = &st->type; goto loop; case TFUNC: for(;;) { if(subtype(&st->type, t, d)) break; if(subtype(&st->type->down->down, t, d)) break; if(subtype(&st->type->down, t, d)) break; return 0; } break; case TSTRUCT: for(st=st->type; st!=T; st=st->down) if(subtype(&st->type, t, d)) return 1; return 0; } return 1; } /* * Is this a 64-bit type? */ int is64(Type *t) { if(t == T) return 0; switch(simtype[t->etype]) { case TINT64: case TUINT64: case TPTR64: return 1; } return 0; } /* * Is a conversion between t1 and t2 a no-op? */ int noconv(Type *t1, Type *t2) { int e1, e2; e1 = simtype[t1->etype]; e2 = simtype[t2->etype]; switch(e1) { case TINT8: case TUINT8: return e2 == TINT8 || e2 == TUINT8; case TINT16: case TUINT16: return e2 == TINT16 || e2 == TUINT16; case TINT32: case TUINT32: case TPTR32: return e2 == TINT32 || e2 == TUINT32 || e2 == TPTR32; case TINT64: case TUINT64: case TPTR64: return e2 == TINT64 || e2 == TUINT64 || e2 == TPTR64; case TFLOAT32: return e2 == TFLOAT32; case TFLOAT64: return e2 == TFLOAT64; } return 0; } void argtype(Node *on, Type *t) { dowidth(t); if(!subtype(&on->type, t, 0)) fatal("argtype: failed %N %T\n", on, t); } Type* shallow(Type *t) { Type *nt; if(t == T) return T; nt = typ(0); *nt = *t; if(t->orig == t) nt->orig = nt; return nt; } static Type* deep(Type *t) { Type *nt, *xt; if(t == T) return T; switch(t->etype) { default: nt = t; // share from here down break; case TANY: nt = shallow(t); nt->copyany = 1; break; case TPTR32: case TPTR64: case TCHAN: case TARRAY: nt = shallow(t); nt->type = deep(t->type); break; case TMAP: nt = shallow(t); nt->down = deep(t->down); nt->type = deep(t->type); break; case TFUNC: nt = shallow(t); nt->type = deep(t->type); nt->type->down = deep(t->type->down); nt->type->down->down = deep(t->type->down->down); break; case TSTRUCT: nt = shallow(t); nt->type = shallow(t->type); xt = nt->type; for(t=t->type; t!=T; t=t->down) { xt->type = deep(t->type); xt->down = shallow(t->down); xt = xt->down; } break; } return nt; } Node* syslook(char *name, int copy) { Sym *s; Node *n; s = pkglookup(name, runtimepkg); if(s == S || s->def == N) fatal("syslook: can't find runtime.%s", name); if(!copy) return s->def; n = nod(0, N, N); *n = *s->def; n->type = deep(s->def->type); return n; } /* * compute a hash value for type t. * if t is a method type, ignore the receiver * so that the hash can be used in interface checks. * %T already contains * all the necessary logic to generate a representation * of the type that completely describes it. * using smprint here avoids duplicating that code. * using md5 here is overkill, but i got tired of * accidental collisions making the runtime think * two types are equal when they really aren't. */ uint32 typehash(Type *t) { char *p; MD5 d; if(t->thistuple) { // hide method receiver from Tpretty t->thistuple = 0; p = smprint("%-uT", t); t->thistuple = 1; } else p = smprint("%-uT", t); //print("typehash: %s\n", p); md5reset(&d); md5write(&d, (uchar*)p, strlen(p)); free(p); return md5sum(&d, nil); } Type* ptrto(Type *t) { Type *t1; if(tptr == 0) fatal("ptrto: no tptr"); t1 = typ(tptr); t1->type = t; t1->width = widthptr; t1->align = widthptr; return t1; } void frame(int context) { char *p; NodeList *l; Node *n; int flag; p = "stack"; l = nil; if(curfn) l = curfn->dcl; if(context) { p = "external"; l = externdcl; } flag = 1; for(; l; l=l->next) { n = l->n; switch(n->op) { case ONAME: if(flag) print("--- %s frame ---\n", p); print("%O %S G%d %T\n", n->op, n->sym, n->vargen, n->type); flag = 0; break; case OTYPE: if(flag) print("--- %s frame ---\n", p); print("%O %T\n", n->op, n->type); flag = 0; break; } } } /* * calculate sethi/ullman number * roughly how many registers needed to * compile a node. used to compile the * hardest side first to minimize registers. */ void ullmancalc(Node *n) { int ul, ur; if(n == N) return; if(n->ninit != nil) { ul = UINF; goto out; } switch(n->op) { case OREGISTER: case OLITERAL: case ONAME: ul = 1; if(n->class == PPARAMREF || (n->class & PHEAP)) ul++; goto out; case OCALL: case OCALLFUNC: case OCALLMETH: case OCALLINTER: ul = UINF; goto out; case OANDAND: case OOROR: // hard with race detector if(flag_race) { ul = UINF; goto out; } } ul = 1; if(n->left != N) ul = n->left->ullman; ur = 1; if(n->right != N) ur = n->right->ullman; if(ul == ur) ul += 1; if(ur > ul) ul = ur; out: if(ul > 200) ul = 200; // clamp to uchar with room to grow n->ullman = ul; } void badtype(int o, Type *tl, Type *tr) { Fmt fmt; char *s; fmtstrinit(&fmt); if(tl != T) fmtprint(&fmt, "\n %T", tl); if(tr != T) fmtprint(&fmt, "\n %T", tr); // common mistake: *struct and *interface. if(tl && tr && isptr[tl->etype] && isptr[tr->etype]) { if(tl->type->etype == TSTRUCT && tr->type->etype == TINTER) fmtprint(&fmt, "\n (*struct vs *interface)"); else if(tl->type->etype == TINTER && tr->type->etype == TSTRUCT) fmtprint(&fmt, "\n (*interface vs *struct)"); } s = fmtstrflush(&fmt); yyerror("illegal types for operand: %O%s", o, s); } /* * iterator to walk a structure declaration */ Type* structfirst(Iter *s, Type **nn) { Type *n, *t; n = *nn; if(n == T) goto bad; switch(n->etype) { default: goto bad; case TSTRUCT: case TINTER: case TFUNC: break; } t = n->type; if(t == T) goto rnil; if(t->etype != TFIELD) fatal("structfirst: not field %T", t); s->t = t; return t; bad: fatal("structfirst: not struct %T", n); rnil: return T; } Type* structnext(Iter *s) { Type *n, *t; n = s->t; t = n->down; if(t == T) goto rnil; if(t->etype != TFIELD) goto bad; s->t = t; return t; bad: fatal("structnext: not struct %T", n); rnil: return T; } /* * iterator to this and inargs in a function */ Type* funcfirst(Iter *s, Type *t) { Type *fp; if(t == T) goto bad; if(t->etype != TFUNC) goto bad; s->tfunc = t; s->done = 0; fp = structfirst(s, getthis(t)); if(fp == T) { s->done = 1; fp = structfirst(s, getinarg(t)); } return fp; bad: fatal("funcfirst: not func %T", t); return T; } Type* funcnext(Iter *s) { Type *fp; fp = structnext(s); if(fp == T && !s->done) { s->done = 1; fp = structfirst(s, getinarg(s->tfunc)); } return fp; } Type** getthis(Type *t) { if(t->etype != TFUNC) fatal("getthis: not a func %T", t); return &t->type; } Type** getoutarg(Type *t) { if(t->etype != TFUNC) fatal("getoutarg: not a func %T", t); return &t->type->down; } Type** getinarg(Type *t) { if(t->etype != TFUNC) fatal("getinarg: not a func %T", t); return &t->type->down->down; } Type* getthisx(Type *t) { return *getthis(t); } Type* getoutargx(Type *t) { return *getoutarg(t); } Type* getinargx(Type *t) { return *getinarg(t); } /* * return !(op) * eg == <=> != */ int brcom(int a) { switch(a) { case OEQ: return ONE; case ONE: return OEQ; case OLT: return OGE; case OGT: return OLE; case OLE: return OGT; case OGE: return OLT; } fatal("brcom: no com for %A\n", a); return a; } /* * return reverse(op) * eg a op b <=> b r(op) a */ int brrev(int a) { switch(a) { case OEQ: return OEQ; case ONE: return ONE; case OLT: return OGT; case OGT: return OLT; case OLE: return OGE; case OGE: return OLE; } fatal("brcom: no rev for %A\n", a); return a; } /* * return side effect-free n, appending side effects to init. * result is assignable if n is. */ Node* safeexpr(Node *n, NodeList **init) { Node *l; Node *r; Node *a; if(n == N) return N; if(n->ninit) { walkstmtlist(n->ninit); *init = concat(*init, n->ninit); n->ninit = nil; } switch(n->op) { case ONAME: case OLITERAL: return n; case ODOT: l = safeexpr(n->left, init); if(l == n->left) return n; r = nod(OXXX, N, N); *r = *n; r->left = l; typecheck(&r, Erv); walkexpr(&r, init); return r; case ODOTPTR: case OIND: l = safeexpr(n->left, init); if(l == n->left) return n; a = nod(OXXX, N, N); *a = *n; a->left = l; walkexpr(&a, init); return a; case OINDEX: case OINDEXMAP: l = safeexpr(n->left, init); r = safeexpr(n->right, init); if(l == n->left && r == n->right) return n; a = nod(OXXX, N, N); *a = *n; a->left = l; a->right = r; walkexpr(&a, init); return a; } // make a copy; must not be used as an lvalue if(islvalue(n)) fatal("missing lvalue case in safeexpr: %N", n); return cheapexpr(n, init); } Node* copyexpr(Node *n, Type *t, NodeList **init) { Node *a, *l; l = temp(t); a = nod(OAS, l, n); typecheck(&a, Etop); walkexpr(&a, init); *init = list(*init, a); return l; } /* * return side-effect free and cheap n, appending side effects to init. * result may not be assignable. */ Node* cheapexpr(Node *n, NodeList **init) { switch(n->op) { case ONAME: case OLITERAL: return n; } return copyexpr(n, n->type, init); } /* * return n in a local variable of type t if it is not already. * the value is guaranteed not to change except by direct * assignment to it. */ Node* localexpr(Node *n, Type *t, NodeList **init) { if(n->op == ONAME && (!n->addrtaken || strncmp(n->sym->name, "autotmp_", 8) == 0) && (n->class == PAUTO || n->class == PPARAM || n->class == PPARAMOUT) && convertop(n->type, t, nil) == OCONVNOP) return n; return copyexpr(n, t, init); } void setmaxarg(Type *t) { int64 w; dowidth(t); w = t->argwid; if(t->argwid >= MAXWIDTH) fatal("bad argwid %T", t); if(w > maxarg) maxarg = w; } /* * unicode-aware case-insensitive strcmp */ static int ucistrcmp(char *p, char *q) { Rune rp, rq; while(*p || *q) { if(*p == 0) return +1; if(*q == 0) return -1; p += chartorune(&rp, p); q += chartorune(&rq, q); rp = tolowerrune(rp); rq = tolowerrune(rq); if(rp < rq) return -1; if(rp > rq) return +1; } return 0; } /* * code to resolve elided DOTs * in embedded types */ // search depth 0 -- // return count of fields+methods // found with a given name static int lookdot0(Sym *s, Type *t, Type **save, int ignorecase) { Type *f, *u; int c; u = t; if(isptr[u->etype]) u = u->type; c = 0; if(u->etype == TSTRUCT || u->etype == TINTER) { for(f=u->type; f!=T; f=f->down) if(f->sym == s || (ignorecase && f->type->etype == TFUNC && f->type->thistuple > 0 && ucistrcmp(f->sym->name, s->name) == 0)) { if(save) *save = f; c++; } } u = methtype(t, 0); if(u != T) { for(f=u->method; f!=T; f=f->down) if(f->embedded == 0 && (f->sym == s || (ignorecase && ucistrcmp(f->sym->name, s->name) == 0))) { if(save) *save = f; c++; } } return c; } // search depth d for field/method s -- // return count of fields+methods // found at search depth. // answer is in dotlist array and // count of number of ways is returned. int adddot1(Sym *s, Type *t, int d, Type **save, int ignorecase) { Type *f, *u; int c, a; if(t->trecur) return 0; t->trecur = 1; if(d == 0) { c = lookdot0(s, t, save, ignorecase); goto out; } c = 0; u = t; if(isptr[u->etype]) u = u->type; if(u->etype != TSTRUCT && u->etype != TINTER) goto out; d--; for(f=u->type; f!=T; f=f->down) { if(!f->embedded) continue; if(f->sym == S) continue; a = adddot1(s, f->type, d, save, ignorecase); if(a != 0 && c == 0) dotlist[d].field = f; c += a; } out: t->trecur = 0; return c; } // in T.field // find missing fields that // will give shortest unique addressing. // modify the tree with missing type names. Node* adddot(Node *n) { Type *t; Sym *s; int c, d; typecheck(&n->left, Etype|Erv); n->diag |= n->left->diag; t = n->left->type; if(t == T) goto ret; if(n->left->op == OTYPE) goto ret; if(n->right->op != ONAME) goto ret; s = n->right->sym; if(s == S) goto ret; for(d=0; d 0) goto out; } goto ret; out: if(c > 1) { yyerror("ambiguous selector %N", n); n->left = N; return n; } // rebuild elided dots for(c=d-1; c>=0; c--) n->left = nod(ODOT, n->left, newname(dotlist[c].field->sym)); ret: return n; } /* * code to help generate trampoline * functions for methods on embedded * subtypes. * these are approx the same as * the corresponding adddot routines * except that they expect to be called * with unique tasks and they return * the actual methods. */ typedef struct Symlink Symlink; struct Symlink { Type* field; uchar good; uchar followptr; Symlink* link; }; static Symlink* slist; static void expand0(Type *t, int followptr) { Type *f, *u; Symlink *sl; u = t; if(isptr[u->etype]) { followptr = 1; u = u->type; } if(u->etype == TINTER) { for(f=u->type; f!=T; f=f->down) { if(f->sym->flags & SymUniq) continue; f->sym->flags |= SymUniq; sl = mal(sizeof(*sl)); sl->field = f; sl->link = slist; sl->followptr = followptr; slist = sl; } return; } u = methtype(t, 0); if(u != T) { for(f=u->method; f!=T; f=f->down) { if(f->sym->flags & SymUniq) continue; f->sym->flags |= SymUniq; sl = mal(sizeof(*sl)); sl->field = f; sl->link = slist; sl->followptr = followptr; slist = sl; } } } static void expand1(Type *t, int d, int followptr) { Type *f, *u; if(t->trecur) return; if(d == 0) return; t->trecur = 1; if(d != nelem(dotlist)-1) expand0(t, followptr); u = t; if(isptr[u->etype]) { followptr = 1; u = u->type; } if(u->etype != TSTRUCT && u->etype != TINTER) goto out; for(f=u->type; f!=T; f=f->down) { if(!f->embedded) continue; if(f->sym == S) continue; expand1(f->type, d-1, followptr); } out: t->trecur = 0; } void expandmeth(Type *t) { Symlink *sl; Type *f; int c, d; if(t == T || t->xmethod != nil) return; // mark top-level method symbols // so that expand1 doesn't consider them. for(f=t->method; f != nil; f=f->down) f->sym->flags |= SymUniq; // generate all reachable methods slist = nil; expand1(t, nelem(dotlist)-1, 0); // check each method to be uniquely reachable for(sl=slist; sl!=nil; sl=sl->link) { sl->field->sym->flags &= ~SymUniq; for(d=0; dfield->sym, t, d, &f, 0); if(c == 0) continue; if(c == 1) { // addot1 may have dug out arbitrary fields, we only want methods. if(f->type->etype == TFUNC && f->type->thistuple > 0) { sl->good = 1; sl->field = f; } } break; } } for(f=t->method; f != nil; f=f->down) f->sym->flags &= ~SymUniq; t->xmethod = t->method; for(sl=slist; sl!=nil; sl=sl->link) { if(sl->good) { // add it to the base type method list f = typ(TFIELD); *f = *sl->field; f->embedded = 1; // needs a trampoline if(sl->followptr) f->embedded = 2; f->down = t->xmethod; t->xmethod = f; } } } /* * Given funarg struct list, return list of ODCLFIELD Node fn args. */ static NodeList* structargs(Type **tl, int mustname) { Iter savet; Node *a, *n; NodeList *args; Type *t; char buf[100]; int gen; args = nil; gen = 0; for(t = structfirst(&savet, tl); t != T; t = structnext(&savet)) { n = N; if(mustname && (t->sym == nil || strcmp(t->sym->name, "_") == 0)) { // invent a name so that we can refer to it in the trampoline snprint(buf, sizeof buf, ".anon%d", gen++); n = newname(lookup(buf)); } else if(t->sym) n = newname(t->sym); a = nod(ODCLFIELD, n, typenod(t->type)); a->isddd = t->isddd; if(n != N) n->isddd = t->isddd; args = list(args, a); } return args; } /* * Generate a wrapper function to convert from * a receiver of type T to a receiver of type U. * That is, * * func (t T) M() { * ... * } * * already exists; this function generates * * func (u U) M() { * u.M() * } * * where the types T and U are such that u.M() is valid * and calls the T.M method. * The resulting function is for use in method tables. * * rcvr - U * method - M func (t T)(), a TFIELD type struct * newnam - the eventual mangled name of this function */ void genwrapper(Type *rcvr, Type *method, Sym *newnam, int iface) { Node *this, *fn, *call, *n, *t, *pad, *dot, *as; NodeList *l, *args, *in, *out; Type *tpad, *methodrcvr; int isddd; Val v; static int linehistdone = 0; if(0 && debug['r']) print("genwrapper rcvrtype=%T method=%T newnam=%S\n", rcvr, method, newnam); lexlineno++; lineno = lexlineno; if (linehistdone == 0) { // All the wrappers can share the same linehist entry. linehist("", 0, 0); linehistdone = 1; } dclcontext = PEXTERN; markdcl(); this = nod(ODCLFIELD, newname(lookup(".this")), typenod(rcvr)); this->left->ntype = this->right; in = structargs(getinarg(method->type), 1); out = structargs(getoutarg(method->type), 0); t = nod(OTFUNC, N, N); l = list1(this); if(iface && rcvr->width < types[tptr]->width) { // Building method for interface table and receiver // is smaller than the single pointer-sized word // that the interface call will pass in. // Add a dummy padding argument after the // receiver to make up the difference. tpad = typ(TARRAY); tpad->type = types[TUINT8]; tpad->bound = types[tptr]->width - rcvr->width; pad = nod(ODCLFIELD, newname(lookup(".pad")), typenod(tpad)); l = list(l, pad); } t->list = concat(l, in); t->rlist = out; fn = nod(ODCLFUNC, N, N); fn->nname = newname(newnam); fn->nname->defn = fn; fn->nname->ntype = t; declare(fn->nname, PFUNC); funchdr(fn); // arg list args = nil; isddd = 0; for(l=in; l; l=l->next) { args = list(args, l->n->left); isddd = l->n->left->isddd; } methodrcvr = getthisx(method->type)->type->type; // generate nil pointer check for better error if(isptr[rcvr->etype] && rcvr->type == methodrcvr) { // generating wrapper from *T to T. n = nod(OIF, N, N); n->ntest = nod(OEQ, this->left, nodnil()); // these strings are already in the reflect tables, // so no space cost to use them here. l = nil; v.ctype = CTSTR; v.u.sval = strlit(rcvr->type->sym->pkg->name); // package name l = list(l, nodlit(v)); v.u.sval = strlit(rcvr->type->sym->name); // type name l = list(l, nodlit(v)); v.u.sval = strlit(method->sym->name); l = list(l, nodlit(v)); // method name call = nod(OCALL, syslook("panicwrap", 0), N); call->list = l; n->nbody = list1(call); fn->nbody = list(fn->nbody, n); } dot = adddot(nod(OXDOT, this->left, newname(method->sym))); // generate call if(!flag_race && isptr[rcvr->etype] && isptr[methodrcvr->etype] && method->embedded && !isifacemethod(method->type)) { // generate tail call: adjust pointer receiver and jump to embedded method. dot = dot->left; // skip final .M if(!isptr[dotlist[0].field->type->etype]) dot = nod(OADDR, dot, N); as = nod(OAS, this->left, nod(OCONVNOP, dot, N)); as->right->type = rcvr; fn->nbody = list(fn->nbody, as); n = nod(ORETJMP, N, N); n->left = newname(methodsym(method->sym, methodrcvr, 0)); fn->nbody = list(fn->nbody, n); } else { fn->wrapper = 1; // ignore frame for panic+recover matching call = nod(OCALL, dot, N); call->list = args; call->isddd = isddd; if(method->type->outtuple > 0) { n = nod(ORETURN, N, N); n->list = list1(call); call = n; } fn->nbody = list(fn->nbody, call); } if(0 && debug['r']) dumplist("genwrapper body", fn->nbody); funcbody(fn); curfn = fn; // wrappers where T is anonymous (struct or interface) can be duplicated. if(rcvr->etype == TSTRUCT || rcvr->etype == TINTER || isptr[rcvr->etype] && rcvr->type->etype == TSTRUCT) fn->dupok = 1; typecheck(&fn, Etop); typechecklist(fn->nbody, Etop); inlcalls(fn); curfn = nil; funccompile(fn, 0); } static Node* hashmem(Type *t) { Node *tfn, *n; Sym *sym; sym = pkglookup("memhash", runtimepkg); n = newname(sym); n->class = PFUNC; tfn = nod(OTFUNC, N, N); tfn->list = list(tfn->list, nod(ODCLFIELD, N, typenod(ptrto(types[TUINTPTR])))); tfn->list = list(tfn->list, nod(ODCLFIELD, N, typenod(types[TUINTPTR]))); tfn->list = list(tfn->list, nod(ODCLFIELD, N, typenod(ptrto(t)))); typecheck(&tfn, Etype); n->type = tfn->type; return n; } static Node* hashfor(Type *t) { int a; Sym *sym; Node *tfn, *n; a = algtype1(t, nil); switch(a) { case AMEM: return hashmem(t); case AINTER: sym = pkglookup("interhash", runtimepkg); break; case ANILINTER: sym = pkglookup("nilinterhash", runtimepkg); break; case ASTRING: sym = pkglookup("strhash", runtimepkg); break; case AFLOAT32: sym = pkglookup("f32hash", runtimepkg); break; case AFLOAT64: sym = pkglookup("f64hash", runtimepkg); break; case ACPLX64: sym = pkglookup("c64hash", runtimepkg); break; case ACPLX128: sym = pkglookup("c128hash", runtimepkg); break; default: sym = typesymprefix(".hash", t); break; } n = newname(sym); n->class = PFUNC; tfn = nod(OTFUNC, N, N); tfn->list = list(tfn->list, nod(ODCLFIELD, N, typenod(ptrto(types[TUINTPTR])))); tfn->list = list(tfn->list, nod(ODCLFIELD, N, typenod(types[TUINTPTR]))); tfn->list = list(tfn->list, nod(ODCLFIELD, N, typenod(ptrto(t)))); typecheck(&tfn, Etype); n->type = tfn->type; return n; } /* * Generate a helper function to compute the hash of a value of type t. */ void genhash(Sym *sym, Type *t) { Node *n, *fn, *np, *nh, *ni, *call, *nx, *na, *tfn; Node *hashel; Type *first, *t1; int old_safemode; int64 size, mul, offend; if(debug['r']) print("genhash %S %T\n", sym, t); lineno = 1; // less confusing than end of input dclcontext = PEXTERN; markdcl(); // func sym(h *uintptr, s uintptr, p *T) fn = nod(ODCLFUNC, N, N); fn->nname = newname(sym); fn->nname->class = PFUNC; tfn = nod(OTFUNC, N, N); fn->nname->ntype = tfn; n = nod(ODCLFIELD, newname(lookup("h")), typenod(ptrto(types[TUINTPTR]))); tfn->list = list(tfn->list, n); nh = n->left; n = nod(ODCLFIELD, newname(lookup("s")), typenod(types[TUINTPTR])); tfn->list = list(tfn->list, n); n = nod(ODCLFIELD, newname(lookup("p")), typenod(ptrto(t))); tfn->list = list(tfn->list, n); np = n->left; funchdr(fn); typecheck(&fn->nname->ntype, Etype); // genhash is only called for types that have equality but // cannot be handled by the standard algorithms, // so t must be either an array or a struct. switch(t->etype) { default: fatal("genhash %T", t); case TARRAY: if(isslice(t)) fatal("genhash %T", t); // An array of pure memory would be handled by the // standard algorithm, so the element type must not be // pure memory. hashel = hashfor(t->type); n = nod(ORANGE, N, nod(OIND, np, N)); ni = newname(lookup("i")); ni->type = types[TINT]; n->list = list1(ni); n->colas = 1; colasdefn(n->list, n); ni = n->list->n; // *h = *h<<3 | *h>>61 n->nbody = list(n->nbody, nod(OAS, nod(OIND, nh, N), nod(OOR, nod(OLSH, nod(OIND, nh, N), nodintconst(3)), nod(ORSH, nod(OIND, nh, N), nodintconst(widthptr*8-3))))); // *h *= mul // Same multipliers as in runtime.memhash. if(widthptr == 4) mul = 3267000013LL; else mul = 23344194077549503LL; n->nbody = list(n->nbody, nod(OAS, nod(OIND, nh, N), nod(OMUL, nod(OIND, nh, N), nodintconst(mul)))); // hashel(h, sizeof(p[i]), &p[i]) call = nod(OCALL, hashel, N); call->list = list(call->list, nh); call->list = list(call->list, nodintconst(t->type->width)); nx = nod(OINDEX, np, ni); nx->bounded = 1; na = nod(OADDR, nx, N); na->etype = 1; // no escape to heap call->list = list(call->list, na); n->nbody = list(n->nbody, call); fn->nbody = list(fn->nbody, n); break; case TSTRUCT: // Walk the struct using memhash for runs of AMEM // and calling specific hash functions for the others. first = T; offend = 0; for(t1=t->type;; t1=t1->down) { if(t1 != T && algtype1(t1->type, nil) == AMEM && !isblanksym(t1->sym)) { offend = t1->width + t1->type->width; if(first == T) first = t1; // If it's a memory field but it's padded, stop here. if(ispaddedfield(t1, t->width)) t1 = t1->down; else continue; } // Run memhash for fields up to this one. if(first != T) { size = offend - first->width; // first->width is offset hashel = hashmem(first->type); // hashel(h, size, &p.first) call = nod(OCALL, hashel, N); call->list = list(call->list, nh); call->list = list(call->list, nodintconst(size)); nx = nod(OXDOT, np, newname(first->sym)); // TODO: fields from other packages? na = nod(OADDR, nx, N); na->etype = 1; // no escape to heap call->list = list(call->list, na); fn->nbody = list(fn->nbody, call); first = T; } if(t1 == T) break; if(isblanksym(t1->sym)) continue; // Run hash for this field. hashel = hashfor(t1->type); // hashel(h, size, &p.t1) call = nod(OCALL, hashel, N); call->list = list(call->list, nh); call->list = list(call->list, nodintconst(t1->type->width)); nx = nod(OXDOT, np, newname(t1->sym)); // TODO: fields from other packages? na = nod(OADDR, nx, N); na->etype = 1; // no escape to heap call->list = list(call->list, na); fn->nbody = list(fn->nbody, call); } // make sure body is not empty. fn->nbody = list(fn->nbody, nod(ORETURN, N, N)); break; } if(debug['r']) dumplist("genhash body", fn->nbody); funcbody(fn); curfn = fn; fn->dupok = 1; typecheck(&fn, Etop); typechecklist(fn->nbody, Etop); curfn = nil; // Disable safemode while compiling this code: the code we // generate internally can refer to unsafe.Pointer. // In this case it can happen if we need to generate an == // for a struct containing a reflect.Value, which itself has // an unexported field of type unsafe.Pointer. old_safemode = safemode; safemode = 0; funccompile(fn, 0); safemode = old_safemode; } // Return node for // if p.field != q.field { *eq = false; return } static Node* eqfield(Node *p, Node *q, Node *field, Node *eq) { Node *nif, *nx, *ny; nx = nod(OXDOT, p, field); ny = nod(OXDOT, q, field); nif = nod(OIF, N, N); nif->ntest = nod(ONE, nx, ny); nif->nbody = list(nif->nbody, nod(OAS, nod(OIND, eq, N), nodbool(0))); nif->nbody = list(nif->nbody, nod(ORETURN, N, N)); return nif; } static Node* eqmemfunc(vlong size, Type *type) { char buf[30]; Node *fn; switch(size) { default: fn = syslook("memequal", 1); break; case 1: case 2: case 4: case 8: case 16: snprint(buf, sizeof buf, "memequal%d", (int)size*8); fn = syslook(buf, 1); break; } argtype(fn, type); argtype(fn, type); return fn; } // Return node for // if memequal(size, &p.field, &q.field, eq); !*eq { return } static Node* eqmem(Node *p, Node *q, Node *field, vlong size, Node *eq) { Node *nif, *nx, *ny, *call; nx = nod(OADDR, nod(OXDOT, p, field), N); nx->etype = 1; // does not escape ny = nod(OADDR, nod(OXDOT, q, field), N); ny->etype = 1; // does not escape typecheck(&nx, Erv); typecheck(&ny, Erv); call = nod(OCALL, eqmemfunc(size, nx->type->type), N); call->list = list(call->list, eq); call->list = list(call->list, nodintconst(size)); call->list = list(call->list, nx); call->list = list(call->list, ny); nif = nod(OIF, N, N); nif->ninit = list(nif->ninit, call); nif->ntest = nod(ONOT, nod(OIND, eq, N), N); nif->nbody = list(nif->nbody, nod(ORETURN, N, N)); return nif; } /* * Generate a helper function to check equality of two values of type t. */ void geneq(Sym *sym, Type *t) { Node *n, *fn, *np, *neq, *nq, *tfn, *nif, *ni, *nx, *ny, *nrange; Type *t1, *first; int old_safemode; int64 size; int64 offend; if(debug['r']) print("geneq %S %T\n", sym, t); lineno = 1; // less confusing than end of input dclcontext = PEXTERN; markdcl(); // func sym(eq *bool, s uintptr, p, q *T) fn = nod(ODCLFUNC, N, N); fn->nname = newname(sym); fn->nname->class = PFUNC; tfn = nod(OTFUNC, N, N); fn->nname->ntype = tfn; n = nod(ODCLFIELD, newname(lookup("eq")), typenod(ptrto(types[TBOOL]))); tfn->list = list(tfn->list, n); neq = n->left; n = nod(ODCLFIELD, newname(lookup("s")), typenod(types[TUINTPTR])); tfn->list = list(tfn->list, n); n = nod(ODCLFIELD, newname(lookup("p")), typenod(ptrto(t))); tfn->list = list(tfn->list, n); np = n->left; n = nod(ODCLFIELD, newname(lookup("q")), typenod(ptrto(t))); tfn->list = list(tfn->list, n); nq = n->left; funchdr(fn); // geneq is only called for types that have equality but // cannot be handled by the standard algorithms, // so t must be either an array or a struct. switch(t->etype) { default: fatal("geneq %T", t); case TARRAY: if(isslice(t)) fatal("geneq %T", t); // An array of pure memory would be handled by the // standard memequal, so the element type must not be // pure memory. Even if we unrolled the range loop, // each iteration would be a function call, so don't bother // unrolling. nrange = nod(ORANGE, N, nod(OIND, np, N)); ni = newname(lookup("i")); ni->type = types[TINT]; nrange->list = list1(ni); nrange->colas = 1; colasdefn(nrange->list, nrange); ni = nrange->list->n; // if p[i] != q[i] { *eq = false; return } nx = nod(OINDEX, np, ni); nx->bounded = 1; ny = nod(OINDEX, nq, ni); ny->bounded = 1; nif = nod(OIF, N, N); nif->ntest = nod(ONE, nx, ny); nif->nbody = list(nif->nbody, nod(OAS, nod(OIND, neq, N), nodbool(0))); nif->nbody = list(nif->nbody, nod(ORETURN, N, N)); nrange->nbody = list(nrange->nbody, nif); fn->nbody = list(fn->nbody, nrange); // *eq = true; fn->nbody = list(fn->nbody, nod(OAS, nod(OIND, neq, N), nodbool(1))); break; case TSTRUCT: // Walk the struct using memequal for runs of AMEM // and calling specific equality tests for the others. // Skip blank-named fields. first = T; offend = 0; for(t1=t->type;; t1=t1->down) { if(t1 != T && algtype1(t1->type, nil) == AMEM && !isblanksym(t1->sym)) { offend = t1->width + t1->type->width; if(first == T) first = t1; // If it's a memory field but it's padded, stop here. if(ispaddedfield(t1, t->width)) t1 = t1->down; else continue; } // Run memequal for fields up to this one. // TODO(rsc): All the calls to newname are wrong for // cross-package unexported fields. if(first != T) { if(first->down == t1) { fn->nbody = list(fn->nbody, eqfield(np, nq, newname(first->sym), neq)); } else if(first->down->down == t1) { fn->nbody = list(fn->nbody, eqfield(np, nq, newname(first->sym), neq)); first = first->down; if(!isblanksym(first->sym)) fn->nbody = list(fn->nbody, eqfield(np, nq, newname(first->sym), neq)); } else { // More than two fields: use memequal. size = offend - first->width; // first->width is offset fn->nbody = list(fn->nbody, eqmem(np, nq, newname(first->sym), size, neq)); } first = T; } if(t1 == T) break; if(isblanksym(t1->sym)) continue; // Check this field, which is not just memory. fn->nbody = list(fn->nbody, eqfield(np, nq, newname(t1->sym), neq)); } // *eq = true; fn->nbody = list(fn->nbody, nod(OAS, nod(OIND, neq, N), nodbool(1))); break; } if(debug['r']) dumplist("geneq body", fn->nbody); funcbody(fn); curfn = fn; fn->dupok = 1; typecheck(&fn, Etop); typechecklist(fn->nbody, Etop); curfn = nil; // Disable safemode while compiling this code: the code we // generate internally can refer to unsafe.Pointer. // In this case it can happen if we need to generate an == // for a struct containing a reflect.Value, which itself has // an unexported field of type unsafe.Pointer. old_safemode = safemode; safemode = 0; funccompile(fn, 0); safemode = old_safemode; } static Type* ifacelookdot(Sym *s, Type *t, int *followptr, int ignorecase) { int i, c, d; Type *m; *followptr = 0; if(t == T) return T; for(d=0; d 1) { yyerror("%T.%S is ambiguous", t, s); return T; } if(c == 1) { for(i=0; itype->etype]) { *followptr = 1; break; } } if(m->type->etype != TFUNC || m->type->thistuple == 0) { yyerror("%T.%S is a field, not a method", t, s); return T; } return m; } } return T; } int implements(Type *t, Type *iface, Type **m, Type **samename, int *ptr) { Type *t0, *im, *tm, *rcvr, *imtype; int followptr; t0 = t; if(t == T) return 0; // if this is too slow, // could sort these first // and then do one loop. if(t->etype == TINTER) { for(im=iface->type; im; im=im->down) { for(tm=t->type; tm; tm=tm->down) { if(tm->sym == im->sym) { if(eqtype(tm->type, im->type)) goto found; *m = im; *samename = tm; *ptr = 0; return 0; } } *m = im; *samename = nil; *ptr = 0; return 0; found:; } return 1; } t = methtype(t, 0); if(t != T) expandmeth(t); for(im=iface->type; im; im=im->down) { imtype = methodfunc(im->type, 0); tm = ifacelookdot(im->sym, t, &followptr, 0); if(tm == T || tm->nointerface || !eqtype(methodfunc(tm->type, 0), imtype)) { if(tm == T) tm = ifacelookdot(im->sym, t, &followptr, 1); *m = im; *samename = tm; *ptr = 0; return 0; } // if pointer receiver in method, // the method does not exist for value types. rcvr = getthisx(tm->type)->type->type; if(isptr[rcvr->etype] && !isptr[t0->etype] && !followptr && !isifacemethod(tm->type)) { if(0 && debug['r']) yyerror("interface pointer mismatch"); *m = im; *samename = nil; *ptr = 1; return 0; } } return 1; } /* * even simpler simtype; get rid of ptr, bool. * assuming that the front end has rejected * all the invalid conversions (like ptr -> bool) */ int simsimtype(Type *t) { int et; if(t == 0) return 0; et = simtype[t->etype]; switch(et) { case TPTR32: et = TUINT32; break; case TPTR64: et = TUINT64; break; case TBOOL: et = TUINT8; break; } return et; } NodeList* concat(NodeList *a, NodeList *b) { if(a == nil) return b; if(b == nil) return a; a->end->next = b; a->end = b->end; b->end = nil; return a; } NodeList* list1(Node *n) { NodeList *l; if(n == nil) return nil; if(n->op == OBLOCK && n->ninit == nil) { // Flatten list and steal storage. // Poison pointer to catch errant uses. l = n->list; n->list = (NodeList*)1; return l; } l = mal(sizeof *l); l->n = n; l->end = l; return l; } NodeList* list(NodeList *l, Node *n) { return concat(l, list1(n)); } void listsort(NodeList** l, int(*f)(Node*, Node*)) { NodeList *l1, *l2, *le; if(*l == nil || (*l)->next == nil) return; l1 = *l; l2 = *l; for(;;) { l2 = l2->next; if(l2 == nil) break; l2 = l2->next; if(l2 == nil) break; l1 = l1->next; } l2 = l1->next; l1->next = nil; l2->end = (*l)->end; (*l)->end = l1; l1 = *l; listsort(&l1, f); listsort(&l2, f); if((*f)(l1->n, l2->n) < 0) { *l = l1; } else { *l = l2; l2 = l1; l1 = *l; } // now l1 == *l; and l1 < l2 while ((l1 != nil) && (l2 != nil)) { while ((l1->next != nil) && (*f)(l1->next->n, l2->n) < 0) l1 = l1->next; // l1 is last one from l1 that is < l2 le = l1->next; // le is the rest of l1, first one that is >= l2 if(le != nil) le->end = (*l)->end; (*l)->end = l1; // cut *l at l1 *l = concat(*l, l2); // glue l2 to *l's tail l1 = l2; // l1 is the first element of *l that is < the new l2 l2 = le; // ... because l2 now is the old tail of l1 } *l = concat(*l, l2); // any remainder } NodeList* listtreecopy(NodeList *l) { NodeList *out; out = nil; for(; l; l=l->next) out = list(out, treecopy(l->n)); return out; } Node* liststmt(NodeList *l) { Node *n; n = nod(OBLOCK, N, N); n->list = l; if(l) n->lineno = l->n->lineno; return n; } /* * return nelem of list */ int count(NodeList *l) { vlong n; n = 0; for(; l; l=l->next) n++; if((int)n != n) { // Overflow. yyerror("too many elements in list"); } return n; } /* * return nelem of list */ int structcount(Type *t) { int v; Iter s; v = 0; for(t = structfirst(&s, &t); t != T; t = structnext(&s)) v++; return v; } /* * return power of 2 of the constant * operand. -1 if it is not a power of 2. * 1000+ if it is a -(power of 2) */ int powtwo(Node *n) { uvlong v, b; int i; if(n == N || n->op != OLITERAL || n->type == T) goto no; if(!isint[n->type->etype]) goto no; v = mpgetfix(n->val.u.xval); b = 1ULL; for(i=0; i<64; i++) { if(b == v) return i; b = b<<1; } if(!issigned[n->type->etype]) goto no; v = -v; b = 1ULL; for(i=0; i<64; i++) { if(b == v) return i+1000; b = b<<1; } no: return -1; } /* * return the unsigned type for * a signed integer type. * returns T if input is not a * signed integer type. */ Type* tounsigned(Type *t) { // this is types[et+1], but not sure // that this relation is immutable switch(t->etype) { default: print("tounsigned: unknown type %T\n", t); t = T; break; case TINT: t = types[TUINT]; break; case TINT8: t = types[TUINT8]; break; case TINT16: t = types[TUINT16]; break; case TINT32: t = types[TUINT32]; break; case TINT64: t = types[TUINT64]; break; } return t; } /* * magic number for signed division * see hacker's delight chapter 10 */ void smagic(Magic *m) { int p; uint64 ad, anc, delta, q1, r1, q2, r2, t; uint64 mask, two31; m->bad = 0; switch(m->w) { default: m->bad = 1; return; case 8: mask = 0xffLL; break; case 16: mask = 0xffffLL; break; case 32: mask = 0xffffffffLL; break; case 64: mask = 0xffffffffffffffffLL; break; } two31 = mask ^ (mask>>1); p = m->w-1; ad = m->sd; if(m->sd < 0) ad = -m->sd; // bad denominators if(ad == 0 || ad == 1 || ad == two31) { m->bad = 1; return; } t = two31; ad &= mask; anc = t - 1 - t%ad; anc &= mask; q1 = two31/anc; r1 = two31 - q1*anc; q1 &= mask; r1 &= mask; q2 = two31/ad; r2 = two31 - q2*ad; q2 &= mask; r2 &= mask; for(;;) { p++; q1 <<= 1; r1 <<= 1; q1 &= mask; r1 &= mask; if(r1 >= anc) { q1++; r1 -= anc; q1 &= mask; r1 &= mask; } q2 <<= 1; r2 <<= 1; q2 &= mask; r2 &= mask; if(r2 >= ad) { q2++; r2 -= ad; q2 &= mask; r2 &= mask; } delta = ad - r2; delta &= mask; if(q1 < delta || (q1 == delta && r1 == 0)) { continue; } break; } m->sm = q2+1; if(m->sm & two31) m->sm |= ~mask; m->s = p-m->w; } /* * magic number for unsigned division * see hacker's delight chapter 10 */ void umagic(Magic *m) { int p; uint64 nc, delta, q1, r1, q2, r2; uint64 mask, two31; m->bad = 0; m->ua = 0; switch(m->w) { default: m->bad = 1; return; case 8: mask = 0xffLL; break; case 16: mask = 0xffffLL; break; case 32: mask = 0xffffffffLL; break; case 64: mask = 0xffffffffffffffffLL; break; } two31 = mask ^ (mask>>1); m->ud &= mask; if(m->ud == 0 || m->ud == two31) { m->bad = 1; return; } nc = mask - (-m->ud&mask)%m->ud; p = m->w-1; q1 = two31/nc; r1 = two31 - q1*nc; q1 &= mask; r1 &= mask; q2 = (two31-1) / m->ud; r2 = (two31-1) - q2*m->ud; q2 &= mask; r2 &= mask; for(;;) { p++; if(r1 >= nc-r1) { q1 <<= 1; q1++; r1 <<= 1; r1 -= nc; } else { q1 <<= 1; r1 <<= 1; } q1 &= mask; r1 &= mask; if(r2+1 >= m->ud-r2) { if(q2 >= two31-1) { m->ua = 1; } q2 <<= 1; q2++; r2 <<= 1; r2++; r2 -= m->ud; } else { if(q2 >= two31) { m->ua = 1; } q2 <<= 1; r2 <<= 1; r2++; } q2 &= mask; r2 &= mask; delta = m->ud - 1 - r2; delta &= mask; if(p < m->w+m->w) if(q1 < delta || (q1 == delta && r1 == 0)) { continue; } break; } m->um = q2+1; m->s = p-m->w; } Sym* ngotype(Node *n) { if(n->type != T) return typenamesym(n->type); return S; } /* * Convert raw string to the prefix that will be used in the symbol * table. All control characters, space, '%' and '"', as well as * non-7-bit clean bytes turn into %xx. The period needs escaping * only in the last segment of the path, and it makes for happier * users if we escape that as little as possible. * * If you edit this, edit ../ld/lib.c:/^pathtoprefix too. * If you edit this, edit ../../pkg/debug/goobj/read.go:/importPathToPrefix too. */ static char* pathtoprefix(char *s) { static char hex[] = "0123456789abcdef"; char *p, *r, *w, *l; int n; // find first character past the last slash, if any. l = s; for(r=s; *r; r++) if(*r == '/') l = r+1; // check for chars that need escaping n = 0; for(r=s; *r; r++) if(*r <= ' ' || (*r == '.' && r >= l) || *r == '%' || *r == '"' || *r >= 0x7f) n++; // quick exit if(n == 0) return s; // escape p = mal((r-s)+1+2*n); for(r=s, w=p; *r; r++) { if(*r <= ' ' || (*r == '.' && r >= l) || *r == '%' || *r == '"' || *r >= 0x7f) { *w++ = '%'; *w++ = hex[(*r>>4)&0xF]; *w++ = hex[*r&0xF]; } else *w++ = *r; } *w = '\0'; return p; } Pkg* mkpkg(Strlit *path) { Pkg *p; int h; h = stringhash(path->s) & (nelem(phash)-1); for(p=phash[h]; p; p=p->link) if(p->path->len == path->len && memcmp(path->s, p->path->s, path->len) == 0) return p; p = mal(sizeof *p); p->path = path; p->prefix = pathtoprefix(path->s); p->link = phash[h]; phash[h] = p; return p; } Strlit* strlit(char *s) { Strlit *t; t = mal(sizeof *t + strlen(s)); strcpy(t->s, s); t->len = strlen(s); return t; } void addinit(Node **np, NodeList *init) { Node *n; if(init == nil) return; n = *np; switch(n->op) { case ONAME: case OLITERAL: // There may be multiple refs to this node; // introduce OCONVNOP to hold init list. n = nod(OCONVNOP, n, N); n->type = n->left->type; n->typecheck = 1; *np = n; break; } n->ninit = concat(init, n->ninit); n->ullman = UINF; } static char* reservedimports[] = { "go", "type", }; int isbadimport(Strlit *path) { int i; char *s; Rune r; if(strlen(path->s) != path->len) { yyerror("import path contains NUL"); return 1; } for(i=0; is, reservedimports[i]) == 0) { yyerror("import path \"%s\" is reserved and cannot be used", path->s); return 1; } } s = path->s; while(*s) { s += chartorune(&r, s); if(r == Runeerror) { yyerror("import path contains invalid UTF-8 sequence: \"%Z\"", path); return 1; } if(r < 0x20 || r == 0x7f) { yyerror("import path contains control character: \"%Z\"", path); return 1; } if(r == '\\') { yyerror("import path contains backslash; use slash: \"%Z\"", path); return 1; } if(isspacerune(r)) { yyerror("import path contains space character: \"%Z\"", path); return 1; } if(utfrune("!\"#$%&'()*,:;<=>?[]^`{|}", r)) { yyerror("import path contains invalid character '%C': \"%Z\"", r, path); return 1; } } return 0; } void checknil(Node *x, NodeList **init) { Node *n; if(isinter(x->type)) { x = nod(OITAB, x, N); typecheck(&x, Erv); } n = nod(OCHECKNIL, x, N); n->typecheck = 1; *init = list(*init, n); } go/src/cmd/gc/swt.c0100644000000000000000000004537512412656737014421 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" enum { Snorm = 0, Strue, Sfalse, Stype, Tdefault, // default case Texprconst, // normal constant case Texprvar, // normal variable case Ttypenil, // case nil Ttypeconst, // type hashes Ttypevar, // interface type Ncase = 4, // count needed to split }; typedef struct Case Case; struct Case { Node* node; // points at case statement uint32 hash; // hash of a type switch uint8 type; // type of case uint8 diag; // suppress multiple diagnostics uint16 ordinal; // position in switch Case* link; // linked list to link }; #define C ((Case*)nil) void dumpcase(Case *c0) { Case *c; for(c=c0; c!=C; c=c->link) { switch(c->type) { case Tdefault: print("case-default\n"); print(" ord=%d\n", c->ordinal); break; case Texprconst: print("case-exprconst\n"); print(" ord=%d\n", c->ordinal); break; case Texprvar: print("case-exprvar\n"); print(" ord=%d\n", c->ordinal); print(" op=%O\n", c->node->left->op); break; case Ttypenil: print("case-typenil\n"); print(" ord=%d\n", c->ordinal); break; case Ttypeconst: print("case-typeconst\n"); print(" ord=%d\n", c->ordinal); print(" hash=%ux\n", c->hash); break; case Ttypevar: print("case-typevar\n"); print(" ord=%d\n", c->ordinal); break; default: print("case-???\n"); print(" ord=%d\n", c->ordinal); print(" op=%O\n", c->node->left->op); print(" hash=%ux\n", c->hash); break; } } print("\n"); } static int ordlcmp(Case *c1, Case *c2) { // sort default first if(c1->type == Tdefault) return -1; if(c2->type == Tdefault) return +1; // sort nil second if(c1->type == Ttypenil) return -1; if(c2->type == Ttypenil) return +1; // sort by ordinal if(c1->ordinal > c2->ordinal) return +1; if(c1->ordinal < c2->ordinal) return -1; return 0; } static int exprcmp(Case *c1, Case *c2) { int ct, n; Node *n1, *n2; // sort non-constants last if(c1->type != Texprconst) return +1; if(c2->type != Texprconst) return -1; n1 = c1->node->left; n2 = c2->node->left; // sort by type (for switches on interface) ct = n1->val.ctype; if(ct != n2->val.ctype) return ct - n2->val.ctype; if(!eqtype(n1->type, n2->type)) { if(n1->type->vargen > n2->type->vargen) return +1; else return -1; } // sort by constant value n = 0; switch(ct) { case CTFLT: n = mpcmpfltflt(n1->val.u.fval, n2->val.u.fval); break; case CTINT: case CTRUNE: n = mpcmpfixfix(n1->val.u.xval, n2->val.u.xval); break; case CTSTR: n = cmpslit(n1, n2); break; } return n; } static int typecmp(Case *c1, Case *c2) { // sort non-constants last if(c1->type != Ttypeconst) return +1; if(c2->type != Ttypeconst) return -1; // sort by hash code if(c1->hash > c2->hash) return +1; if(c1->hash < c2->hash) return -1; // sort by ordinal so duplicate error // happens on later case. if(c1->ordinal > c2->ordinal) return +1; if(c1->ordinal < c2->ordinal) return -1; return 0; } static Case* csort(Case *l, int(*f)(Case*, Case*)) { Case *l1, *l2, *le; if(l == C || l->link == C) return l; l1 = l; l2 = l; for(;;) { l2 = l2->link; if(l2 == C) break; l2 = l2->link; if(l2 == C) break; l1 = l1->link; } l2 = l1->link; l1->link = C; l1 = csort(l, f); l2 = csort(l2, f); /* set up lead element */ if((*f)(l1, l2) < 0) { l = l1; l1 = l1->link; } else { l = l2; l2 = l2->link; } le = l; for(;;) { if(l1 == C) { while(l2) { le->link = l2; le = l2; l2 = l2->link; } le->link = C; break; } if(l2 == C) { while(l1) { le->link = l1; le = l1; l1 = l1->link; } break; } if((*f)(l1, l2) < 0) { le->link = l1; le = l1; l1 = l1->link; } else { le->link = l2; le = l2; l2 = l2->link; } } le->link = C; return l; } static Node* newlabel(void) { static int label; label++; snprint(namebuf, sizeof(namebuf), "%.6d", label); return newname(lookup(namebuf)); } /* * build separate list of statements and cases * make labels between cases and statements * deal with fallthrough, break, unreachable statements */ static void casebody(Node *sw, Node *typeswvar) { Node *n, *c, *last; Node *def; NodeList *cas, *stat, *l, *lc; Node *go, *br; int32 lno, needvar; if(sw->list == nil) return; lno = setlineno(sw); cas = nil; // cases stat = nil; // statements def = N; // defaults br = nod(OBREAK, N, N); for(l=sw->list; l; l=l->next) { n = l->n; setlineno(n); if(n->op != OXCASE) fatal("casebody %O", n->op); n->op = OCASE; needvar = count(n->list) != 1 || n->list->n->op == OLITERAL; go = nod(OGOTO, newlabel(), N); if(n->list == nil) { if(def != N) yyerror("more than one default case"); // reuse original default case n->right = go; def = n; } if(n->list != nil && n->list->next == nil) { // one case - reuse OCASE node. c = n->list->n; n->left = c; n->right = go; n->list = nil; cas = list(cas, n); } else { // expand multi-valued cases for(lc=n->list; lc; lc=lc->next) { c = lc->n; cas = list(cas, nod(OCASE, c, go)); } } stat = list(stat, nod(OLABEL, go->left, N)); if(typeswvar && needvar && n->nname != N) { NodeList *l; l = list1(nod(ODCL, n->nname, N)); l = list(l, nod(OAS, n->nname, typeswvar)); typechecklist(l, Etop); stat = concat(stat, l); } stat = concat(stat, n->nbody); // botch - shouldn't fall thru declaration last = stat->end->n; if(last->xoffset == n->xoffset && last->op == OXFALL) { if(typeswvar) { setlineno(last); yyerror("cannot fallthrough in type switch"); } if(l->next == nil) { setlineno(last); yyerror("cannot fallthrough final case in switch"); } last->op = OFALL; } else stat = list(stat, br); } stat = list(stat, br); if(def) cas = list(cas, def); sw->list = cas; sw->nbody = stat; lineno = lno; } static Case* mkcaselist(Node *sw, int arg) { Node *n; Case *c, *c1, *c2; NodeList *l; int ord; c = C; ord = 0; for(l=sw->list; l; l=l->next) { n = l->n; c1 = mal(sizeof(*c1)); c1->link = c; c = c1; ord++; if((uint16)ord != ord) fatal("too many cases in switch"); c->ordinal = ord; c->node = n; if(n->left == N) { c->type = Tdefault; continue; } switch(arg) { case Stype: c->hash = 0; if(n->left->op == OLITERAL) { c->type = Ttypenil; continue; } if(istype(n->left->type, TINTER)) { c->type = Ttypevar; continue; } c->hash = typehash(n->left->type); c->type = Ttypeconst; continue; case Snorm: case Strue: case Sfalse: c->type = Texprvar; c->hash = typehash(n->left->type); switch(consttype(n->left)) { case CTFLT: case CTINT: case CTRUNE: case CTSTR: c->type = Texprconst; } continue; } } if(c == C) return C; // sort by value and diagnose duplicate cases switch(arg) { case Stype: c = csort(c, typecmp); for(c1=c; c1!=C; c1=c1->link) { for(c2=c1->link; c2!=C && c2->hash==c1->hash; c2=c2->link) { if(c1->type == Ttypenil || c1->type == Tdefault) break; if(c2->type == Ttypenil || c2->type == Tdefault) break; if(!eqtype(c1->node->left->type, c2->node->left->type)) continue; yyerrorl(c2->node->lineno, "duplicate case %T in type switch\n\tprevious case at %L", c2->node->left->type, c1->node->lineno); } } break; case Snorm: case Strue: case Sfalse: c = csort(c, exprcmp); for(c1=c; c1->link!=C; c1=c1->link) { if(exprcmp(c1, c1->link) != 0) continue; setlineno(c1->link->node); yyerror("duplicate case %N in switch\n\tprevious case at %L", c1->node->left, c1->node->lineno); } break; } // put list back in processing order c = csort(c, ordlcmp); return c; } static Node* exprname; static Node* exprbsw(Case *c0, int ncase, int arg) { NodeList *cas; Node *a, *n; Case *c; int i, half, lno; cas = nil; if(ncase < Ncase) { for(i=0; inode; lno = setlineno(n); if(assignop(n->left->type, exprname->type, nil) == OCONVIFACE || assignop(exprname->type, n->left->type, nil) == OCONVIFACE) goto snorm; switch(arg) { case Strue: a = nod(OIF, N, N); a->ntest = n->left; // if val a->nbody = list1(n->right); // then goto l break; case Sfalse: a = nod(OIF, N, N); a->ntest = nod(ONOT, n->left, N); // if !val typecheck(&a->ntest, Erv); a->nbody = list1(n->right); // then goto l break; default: snorm: a = nod(OIF, N, N); a->ntest = nod(OEQ, exprname, n->left); // if name == val typecheck(&a->ntest, Erv); a->nbody = list1(n->right); // then goto l break; } cas = list(cas, a); c0 = c0->link; lineno = lno; } return liststmt(cas); } // find the middle and recur c = c0; half = ncase>>1; for(i=1; ilink; a = nod(OIF, N, N); a->ntest = nod(OLE, exprname, c->node->left); typecheck(&a->ntest, Erv); a->nbody = list1(exprbsw(c0, half, arg)); a->nelse = list1(exprbsw(c->link, ncase-half, arg)); return a; } /* * normal (expression) switch. * rebulid case statements into if .. goto */ static void exprswitch(Node *sw) { Node *def; NodeList *cas; Node *a; Case *c0, *c, *c1; Type *t; int arg, ncase; casebody(sw, N); arg = Snorm; if(isconst(sw->ntest, CTBOOL)) { arg = Strue; if(sw->ntest->val.u.bval == 0) arg = Sfalse; } walkexpr(&sw->ntest, &sw->ninit); t = sw->type; if(t == T) return; /* * convert the switch into OIF statements */ exprname = N; cas = nil; if(arg != Strue && arg != Sfalse) { exprname = temp(sw->ntest->type); cas = list1(nod(OAS, exprname, sw->ntest)); typechecklist(cas, Etop); } else { exprname = nodbool(arg == Strue); } c0 = mkcaselist(sw, arg); if(c0 != C && c0->type == Tdefault) { def = c0->node->right; c0 = c0->link; } else { def = nod(OBREAK, N, N); } loop: if(c0 == C) { cas = list(cas, def); sw->nbody = concat(cas, sw->nbody); sw->list = nil; walkstmtlist(sw->nbody); return; } // deal with the variables one-at-a-time if(!okforcmp[t->etype] || c0->type != Texprconst) { a = exprbsw(c0, 1, arg); cas = list(cas, a); c0 = c0->link; goto loop; } // do binary search on run of constants ncase = 1; for(c=c0; c->link!=C; c=c->link) { if(c->link->type != Texprconst) break; ncase++; } // break the chain at the count c1 = c->link; c->link = C; // sort and compile constants c0 = csort(c0, exprcmp); a = exprbsw(c0, ncase, arg); cas = list(cas, a); c0 = c1; goto loop; } static Node* hashname; static Node* facename; static Node* boolname; static Node* typeone(Node *t) { NodeList *init; Node *a, *b, *var; var = t->nname; init = nil; if(var == N) { typecheck(&nblank, Erv | Easgn); var = nblank; } else init = list1(nod(ODCL, var, N)); a = nod(OAS2, N, N); a->list = list(list1(var), boolname); // var,bool = b = nod(ODOTTYPE, facename, N); b->type = t->left->type; // interface.(type) a->rlist = list1(b); typecheck(&a, Etop); init = list(init, a); b = nod(OIF, N, N); b->ntest = boolname; b->nbody = list1(t->right); // if bool { goto l } a = liststmt(list(init, b)); return a; } static Node* typebsw(Case *c0, int ncase) { NodeList *cas; Node *a, *n; Case *c; int i, half; cas = nil; if(ncase < Ncase) { for(i=0; inode; if(c0->type != Ttypeconst) fatal("typebsw"); a = nod(OIF, N, N); a->ntest = nod(OEQ, hashname, nodintconst(c0->hash)); typecheck(&a->ntest, Erv); a->nbody = list1(n->right); cas = list(cas, a); c0 = c0->link; } return liststmt(cas); } // find the middle and recur c = c0; half = ncase>>1; for(i=1; ilink; a = nod(OIF, N, N); a->ntest = nod(OLE, hashname, nodintconst(c->hash)); typecheck(&a->ntest, Erv); a->nbody = list1(typebsw(c0, half)); a->nelse = list1(typebsw(c->link, ncase-half)); return a; } /* * convert switch of the form * switch v := i.(type) { case t1: ..; case t2: ..; } * into if statements */ static void typeswitch(Node *sw) { Node *def; NodeList *cas, *hash; Node *a, *n; Case *c, *c0, *c1; int ncase; Type *t; Val v; if(sw->ntest == nil) return; if(sw->ntest->right == nil) { setlineno(sw); yyerror("type switch must have an assignment"); return; } walkexpr(&sw->ntest->right, &sw->ninit); if(!istype(sw->ntest->right->type, TINTER)) { yyerror("type switch must be on an interface"); return; } cas = nil; /* * predeclare temporary variables * and the boolean var */ facename = temp(sw->ntest->right->type); a = nod(OAS, facename, sw->ntest->right); typecheck(&a, Etop); cas = list(cas, a); casebody(sw, facename); boolname = temp(types[TBOOL]); typecheck(&boolname, Erv); hashname = temp(types[TUINT32]); typecheck(&hashname, Erv); t = sw->ntest->right->type; if(isnilinter(t)) a = syslook("efacethash", 1); else a = syslook("ifacethash", 1); argtype(a, t); a = nod(OCALL, a, N); a->list = list1(facename); a = nod(OAS, hashname, a); typecheck(&a, Etop); cas = list(cas, a); c0 = mkcaselist(sw, Stype); if(c0 != C && c0->type == Tdefault) { def = c0->node->right; c0 = c0->link; } else { def = nod(OBREAK, N, N); } /* * insert if statement into each case block */ for(c=c0; c!=C; c=c->link) { n = c->node; switch(c->type) { case Ttypenil: v.ctype = CTNIL; a = nod(OIF, N, N); a->ntest = nod(OEQ, facename, nodlit(v)); typecheck(&a->ntest, Erv); a->nbody = list1(n->right); // if i==nil { goto l } n->right = a; break; case Ttypevar: case Ttypeconst: n->right = typeone(n); break; } } /* * generate list of if statements, binary search for constant sequences */ while(c0 != C) { if(c0->type != Ttypeconst) { n = c0->node; cas = list(cas, n->right); c0=c0->link; continue; } // identify run of constants c1 = c = c0; while(c->link!=C && c->link->type==Ttypeconst) c = c->link; c0 = c->link; c->link = nil; // sort by hash c1 = csort(c1, typecmp); // for debugging: linear search if(0) { for(c=c1; c!=C; c=c->link) { n = c->node; cas = list(cas, n->right); } continue; } // combine adjacent cases with the same hash ncase = 0; for(c=c1; c!=C; c=c->link) { ncase++; hash = list1(c->node->right); while(c->link != C && c->link->hash == c->hash) { hash = list(hash, c->link->node->right); c->link = c->link->link; } c->node->right = liststmt(hash); } // binary search among cases to narrow by hash cas = list(cas, typebsw(c1, ncase)); } if(nerrors == 0) { cas = list(cas, def); sw->nbody = concat(cas, sw->nbody); sw->list = nil; walkstmtlist(sw->nbody); } } void walkswitch(Node *sw) { /* * reorder the body into (OLIST, cases, statements) * cases have OGOTO into statements. * both have inserted OBREAK statements */ if(sw->ntest == N) { sw->ntest = nodbool(1); typecheck(&sw->ntest, Erv); } if(sw->ntest->op == OTYPESW) { typeswitch(sw); //dump("sw", sw); return; } exprswitch(sw); // Discard old AST elements after a walk. They can confuse racewealk. sw->ntest = nil; sw->list = nil; } /* * type check switch statement */ void typecheckswitch(Node *n) { int top, lno, ptr; char *nilonly; Type *t, *badtype, *missing, *have; NodeList *l, *ll; Node *ncase, *nvar; Node *def; lno = lineno; typechecklist(n->ninit, Etop); nilonly = nil; if(n->ntest != N && n->ntest->op == OTYPESW) { // type switch top = Etype; typecheck(&n->ntest->right, Erv); t = n->ntest->right->type; if(t != T && t->etype != TINTER) yyerror("cannot type switch on non-interface value %lN", n->ntest->right); } else { // value switch top = Erv; if(n->ntest) { typecheck(&n->ntest, Erv); defaultlit(&n->ntest, T); t = n->ntest->type; } else t = types[TBOOL]; if(t) { if(!okforeq[t->etype]) yyerror("cannot switch on %lN", n->ntest); else if(t->etype == TARRAY && !isfixedarray(t)) nilonly = "slice"; else if(t->etype == TARRAY && isfixedarray(t) && algtype1(t, nil) == ANOEQ) yyerror("cannot switch on %lN", n->ntest); else if(t->etype == TSTRUCT && algtype1(t, &badtype) == ANOEQ) yyerror("cannot switch on %lN (struct containing %T cannot be compared)", n->ntest, badtype); else if(t->etype == TFUNC) nilonly = "func"; else if(t->etype == TMAP) nilonly = "map"; } } n->type = t; def = N; for(l=n->list; l; l=l->next) { ncase = l->n; setlineno(n); if(ncase->list == nil) { // default if(def != N) yyerror("multiple defaults in switch (first at %L)", def->lineno); else def = ncase; } else { for(ll=ncase->list; ll; ll=ll->next) { setlineno(ll->n); typecheck(&ll->n, Erv | Etype); if(ll->n->type == T || t == T) continue; setlineno(ncase); switch(top) { case Erv: // expression switch defaultlit(&ll->n, t); if(ll->n->op == OTYPE) yyerror("type %T is not an expression", ll->n->type); else if(ll->n->type != T && !assignop(ll->n->type, t, nil) && !assignop(t, ll->n->type, nil)) { if(n->ntest) yyerror("invalid case %N in switch on %N (mismatched types %T and %T)", ll->n, n->ntest, ll->n->type, t); else yyerror("invalid case %N in switch (mismatched types %T and bool)", ll->n, ll->n->type); } else if(nilonly && !isconst(ll->n, CTNIL)) { yyerror("invalid case %N in switch (can only compare %s %N to nil)", ll->n, nilonly, n->ntest); } break; case Etype: // type switch if(ll->n->op == OLITERAL && istype(ll->n->type, TNIL)) { ; } else if(ll->n->op != OTYPE && ll->n->type != T) { // should this be ||? yyerror("%lN is not a type", ll->n); // reset to original type ll->n = n->ntest->right; } else if(ll->n->type->etype != TINTER && t->etype == TINTER && !implements(ll->n->type, t, &missing, &have, &ptr)) { if(have && !missing->broke && !have->broke) yyerror("impossible type switch case: %lN cannot have dynamic type %T" " (wrong type for %S method)\n\thave %S%hT\n\twant %S%hT", n->ntest->right, ll->n->type, missing->sym, have->sym, have->type, missing->sym, missing->type); else if(!missing->broke) yyerror("impossible type switch case: %lN cannot have dynamic type %T" " (missing %S method)", n->ntest->right, ll->n->type, missing->sym); } break; } } } if(top == Etype && n->type != T) { ll = ncase->list; nvar = ncase->nname; if(nvar != N) { if(ll && ll->next == nil && ll->n->type != T && !istype(ll->n->type, TNIL)) { // single entry type switch nvar->ntype = typenod(ll->n->type); } else { // multiple entry type switch or default nvar->ntype = typenod(n->type); } } } typechecklist(ncase->nbody, Etop); } lineno = lno; } go/src/cmd/gc/typecheck.c0100644000000000000000000022250712412656737015555 0ustar00rootroot00000000000000// Copyright 2009 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. /* * type check the whole tree of an expression. * calculates expression types. * evaluates compile time constants. * marks variables that escape the local frame. * rewrites n->op to be more specific in some cases. */ #include #include #include "go.h" static void implicitstar(Node**); static int onearg(Node*, char*, ...); static int twoarg(Node*); static int lookdot(Node*, Type*, int); static int looktypedot(Node*, Type*, int); static void typecheckaste(int, Node*, int, Type*, NodeList*, char*); static Type* lookdot1(Node*, Sym *s, Type *t, Type *f, int); static int nokeys(NodeList*); static void typecheckcomplit(Node**); static void typecheckas2(Node*); static void typecheckas(Node*); static void typecheckfunc(Node*); static void checklvalue(Node*, char*); static void checkassign(Node*); static void checkassignlist(NodeList*); static void stringtoarraylit(Node**); static Node* resolve(Node*); static void checkdefergo(Node*); static int checkmake(Type*, char*, Node*); static int checksliceindex(Node*, Type*); static int checksliceconst(Node*, Node*); static NodeList* typecheckdefstack; /* * resolve ONONAME to definition, if any. */ static Node* resolve(Node *n) { Node *r; if(n != N && n->op == ONONAME && n->sym != S && (r = n->sym->def) != N) { if(r->op != OIOTA) n = r; else if(n->iota >= 0) n = nodintconst(n->iota); } return n; } void typechecklist(NodeList *l, int top) { for(; l; l=l->next) typecheck(&l->n, top); } static char* _typekind[] = { [TINT] = "int", [TUINT] = "uint", [TINT8] = "int8", [TUINT8] = "uint8", [TINT16] = "int16", [TUINT16] = "uint16", [TINT32] = "int32", [TUINT32] = "uint32", [TINT64] = "int64", [TUINT64] = "uint64", [TUINTPTR] = "uintptr", [TCOMPLEX64] = "complex64", [TCOMPLEX128] = "complex128", [TFLOAT32] = "float32", [TFLOAT64] = "float64", [TBOOL] = "bool", [TSTRING] = "string", [TPTR32] = "pointer", [TPTR64] = "pointer", [TUNSAFEPTR] = "unsafe.Pointer", [TSTRUCT] = "struct", [TINTER] = "interface", [TCHAN] = "chan", [TMAP] = "map", [TARRAY] = "array", [TFUNC] = "func", [TNIL] = "nil", [TIDEAL] = "untyped number", }; static char* typekind(Type *t) { int et; static char buf[50]; char *s; if(isslice(t)) return "slice"; et = t->etype; if(0 <= et && et < nelem(_typekind) && (s=_typekind[et]) != nil) return s; snprint(buf, sizeof buf, "etype=%d", et); return buf; } /* * sprint_depchain prints a dependency chain * of nodes into fmt. * It is used by typecheck in the case of OLITERAL nodes * to print constant definition loops. */ static void sprint_depchain(Fmt *fmt, NodeList *stack, Node *cur, Node *first) { NodeList *l; for(l = stack; l; l=l->next) { if(l->n->op == cur->op) { if(l->n != first) sprint_depchain(fmt, l->next, l->n, first); fmtprint(fmt, "\n\t%L: %N uses %N", l->n->lineno, l->n, cur); return; } } } /* * type check node *np. * replaces *np with a new pointer in some cases. * returns the final value of *np as a convenience. */ static void typecheck1(Node **, int); Node* typecheck(Node **np, int top) { Node *n; int lno; Fmt fmt; NodeList *l; static NodeList *tcstack, *tcfree; // cannot type check until all the source has been parsed if(!typecheckok) fatal("early typecheck"); n = *np; if(n == N) return N; lno = setlineno(n); // Skip over parens. while(n->op == OPAREN) n = n->left; // Resolve definition of name and value of iota lazily. n = resolve(n); *np = n; // Skip typecheck if already done. // But re-typecheck ONAME/OTYPE/OLITERAL/OPACK node in case context has changed. if(n->typecheck == 1) { switch(n->op) { case ONAME: case OTYPE: case OLITERAL: case OPACK: break; default: lineno = lno; return n; } } if(n->typecheck == 2) { // Typechecking loop. Trying printing a meaningful message, // otherwise a stack trace of typechecking. switch(n->op) { case ONAME: // We can already diagnose variables used as types. if((top & (Erv|Etype)) == Etype) yyerror("%N is not a type", n); break; case OLITERAL: if((top & (Erv|Etype)) == Etype) { yyerror("%N is not a type", n); break; } fmtstrinit(&fmt); sprint_depchain(&fmt, tcstack, n, n); yyerrorl(n->lineno, "constant definition loop%s", fmtstrflush(&fmt)); break; } if(nsavederrors+nerrors == 0) { fmtstrinit(&fmt); for(l=tcstack; l; l=l->next) fmtprint(&fmt, "\n\t%L %N", l->n->lineno, l->n); yyerror("typechecking loop involving %N%s", n, fmtstrflush(&fmt)); } lineno = lno; return n; } n->typecheck = 2; if(tcfree != nil) { l = tcfree; tcfree = l->next; } else l = mal(sizeof *l); l->next = tcstack; l->n = n; tcstack = l; typecheck1(&n, top); *np = n; n->typecheck = 1; if(tcstack != l) fatal("typecheck stack out of sync"); tcstack = l->next; l->next = tcfree; tcfree = l; lineno = lno; return n; } /* * does n contain a call or receive operation? */ static int callrecvlist(NodeList*); static int callrecv(Node *n) { if(n == nil) return 0; switch(n->op) { case OCALL: case OCALLMETH: case OCALLINTER: case OCALLFUNC: case ORECV: case OCAP: case OLEN: case OCOPY: case ONEW: case OAPPEND: case ODELETE: return 1; } return callrecv(n->left) || callrecv(n->right) || callrecv(n->ntest) || callrecv(n->nincr) || callrecvlist(n->ninit) || callrecvlist(n->nbody) || callrecvlist(n->nelse) || callrecvlist(n->list) || callrecvlist(n->rlist); } static int callrecvlist(NodeList *l) { for(; l; l=l->next) if(callrecv(l->n)) return 1; return 0; } // indexlit implements typechecking of untyped values as // array/slice indexes. It is equivalent to defaultlit // except for constants of numerical kind, which are acceptable // whenever they can be represented by a value of type int. static void indexlit(Node **np) { Node *n; n = *np; if(n == N || !isideal(n->type)) return; switch(consttype(n)) { case CTINT: case CTRUNE: case CTFLT: case CTCPLX: defaultlit(np, types[TINT]); break; } defaultlit(np, T); } static void typecheck1(Node **np, int top) { int et, aop, op, ptr; Node *n, *l, *r, *lo, *mid, *hi; NodeList *args; int ok, ntop; Type *t, *tp, *missing, *have, *badtype; Val v; char *why, *desc, descbuf[64]; n = *np; if(n->sym) { if(n->op == ONAME && n->etype != 0 && !(top & Ecall)) { yyerror("use of builtin %S not in function call", n->sym); goto error; } typecheckdef(n); if(n->op == ONONAME) goto error; } *np = n; reswitch: ok = 0; switch(n->op) { default: // until typecheck is complete, do nothing. dump("typecheck", n); fatal("typecheck %O", n->op); /* * names */ case OLITERAL: ok |= Erv; if(n->type == T && n->val.ctype == CTSTR) n->type = idealstring; goto ret; case ONONAME: ok |= Erv; goto ret; case ONAME: if(n->etype != 0) { ok |= Ecall; goto ret; } if(!(top & Easgn)) { // not a write to the variable if(isblank(n)) { yyerror("cannot use _ as value"); goto error; } n->used = 1; } if(!(top &Ecall) && isunsafebuiltin(n)) { yyerror("%N is not an expression, must be called", n); goto error; } ok |= Erv; goto ret; case OPACK: yyerror("use of package %S without selector", n->sym); goto error; case ODDD: break; /* * types (OIND is with exprs) */ case OTYPE: ok |= Etype; if(n->type == T) goto error; break; case OTPAREN: ok |= Etype; l = typecheck(&n->left, Etype); if(l->type == T) goto error; n->op = OTYPE; n->type = l->type; n->left = N; break; case OTARRAY: ok |= Etype; t = typ(TARRAY); l = n->left; r = n->right; if(l == nil) { t->bound = -1; // slice } else if(l->op == ODDD) { t->bound = -100; // to be filled in if(!(top&Ecomplit) && !n->diag) { t->broke = 1; n->diag = 1; yyerror("use of [...] array outside of array literal"); } } else { l = typecheck(&n->left, Erv); switch(consttype(l)) { case CTINT: case CTRUNE: v = l->val; break; case CTFLT: v = toint(l->val); break; default: yyerror("invalid array bound %N", l); goto error; } t->bound = mpgetfix(v.u.xval); if(doesoverflow(v, types[TINT])) { yyerror("array bound is too large"); goto error; } else if(t->bound < 0) { yyerror("array bound must be non-negative"); goto error; } } typecheck(&r, Etype); if(r->type == T) goto error; t->type = r->type; n->op = OTYPE; n->type = t; n->left = N; n->right = N; if(t->bound != -100) checkwidth(t); break; case OTMAP: ok |= Etype; l = typecheck(&n->left, Etype); r = typecheck(&n->right, Etype); if(l->type == T || r->type == T) goto error; n->op = OTYPE; n->type = maptype(l->type, r->type); n->left = N; n->right = N; break; case OTCHAN: ok |= Etype; l = typecheck(&n->left, Etype); if(l->type == T) goto error; t = typ(TCHAN); t->type = l->type; t->chan = n->etype; n->op = OTYPE; n->type = t; n->left = N; n->etype = 0; break; case OTSTRUCT: ok |= Etype; n->op = OTYPE; n->type = tostruct(n->list); if(n->type == T || n->type->broke) goto error; n->list = nil; break; case OTINTER: ok |= Etype; n->op = OTYPE; n->type = tointerface(n->list); if(n->type == T) goto error; break; case OTFUNC: ok |= Etype; n->op = OTYPE; n->type = functype(n->left, n->list, n->rlist); if(n->type == T) goto error; break; /* * type or expr */ case OIND: ntop = Erv | Etype; if(!(top & Eaddr)) // The *x in &*x is not an indirect. ntop |= Eindir; ntop |= top & Ecomplit; l = typecheck(&n->left, ntop); if((t = l->type) == T) goto error; if(l->op == OTYPE) { ok |= Etype; n->op = OTYPE; n->type = ptrto(l->type); n->left = N; goto ret; } if(!isptr[t->etype]) { if(top & (Erv | Etop)) { yyerror("invalid indirect of %lN", n->left); goto error; } goto ret; } ok |= Erv; n->type = t->type; goto ret; /* * arithmetic exprs */ case OASOP: ok |= Etop; l = typecheck(&n->left, Erv); checkassign(n->left); r = typecheck(&n->right, Erv); if(l->type == T || r->type == T) goto error; op = n->etype; goto arith; case OADDPTR: ok |= Erv; l = typecheck(&n->left, Erv); r = typecheck(&n->right, Erv); if(l->type == T || r->type == T) goto error; if(l->type->etype != tptr) fatal("bad OADDPTR left type %E for %N", l->type->etype, n->left); if(r->type->etype != TUINTPTR) fatal("bad OADDPTR right type %E for %N", r->type->etype, n->right); n->type = types[tptr]; goto ret; case OADD: case OAND: case OANDAND: case OANDNOT: case ODIV: case OEQ: case OGE: case OGT: case OLE: case OLT: case OLSH: case ORSH: case OMOD: case OMUL: case ONE: case OOR: case OOROR: case OSUB: case OXOR: ok |= Erv; l = typecheck(&n->left, Erv | (top & Eiota)); r = typecheck(&n->right, Erv | (top & Eiota)); if(l->type == T || r->type == T) goto error; op = n->op; arith: if(op == OLSH || op == ORSH) goto shift; // ideal mixed with non-ideal defaultlit2(&l, &r, 0); n->left = l; n->right = r; if(l->type == T || r->type == T) goto error; t = l->type; if(t->etype == TIDEAL) t = r->type; et = t->etype; if(et == TIDEAL) et = TINT; if(iscmp[n->op] && t->etype != TIDEAL && !eqtype(l->type, r->type)) { // comparison is okay as long as one side is // assignable to the other. convert so they have // the same type. // // the only conversion that isn't a no-op is concrete == interface. // in that case, check comparability of the concrete type. if(r->type->etype != TBLANK && (aop = assignop(l->type, r->type, nil)) != 0) { if(isinter(r->type) && !isinter(l->type) && algtype1(l->type, nil) == ANOEQ) { yyerror("invalid operation: %N (operator %O not defined on %s)", n, op, typekind(l->type)); goto error; } l = nod(aop, l, N); l->type = r->type; l->typecheck = 1; n->left = l; t = l->type; } else if(l->type->etype != TBLANK && (aop = assignop(r->type, l->type, nil)) != 0) { if(isinter(l->type) && !isinter(r->type) && algtype1(r->type, nil) == ANOEQ) { yyerror("invalid operation: %N (operator %O not defined on %s)", n, op, typekind(r->type)); goto error; } r = nod(aop, r, N); r->type = l->type; r->typecheck = 1; n->right = r; t = r->type; } et = t->etype; } if(t->etype != TIDEAL && !eqtype(l->type, r->type)) { defaultlit2(&l, &r, 1); yyerror("invalid operation: %N (mismatched types %T and %T)", n, l->type, r->type); goto error; } if(!okfor[op][et]) { yyerror("invalid operation: %N (operator %O not defined on %s)", n, op, typekind(t)); goto error; } // okfor allows any array == array, map == map, func == func. // restrict to slice/map/func == nil and nil == slice/map/func. if(isfixedarray(l->type) && algtype1(l->type, nil) == ANOEQ) { yyerror("invalid operation: %N (%T cannot be compared)", n, l->type); goto error; } if(isslice(l->type) && !isnil(l) && !isnil(r)) { yyerror("invalid operation: %N (slice can only be compared to nil)", n); goto error; } if(l->type->etype == TMAP && !isnil(l) && !isnil(r)) { yyerror("invalid operation: %N (map can only be compared to nil)", n); goto error; } if(l->type->etype == TFUNC && !isnil(l) && !isnil(r)) { yyerror("invalid operation: %N (func can only be compared to nil)", n); goto error; } if(l->type->etype == TSTRUCT && algtype1(l->type, &badtype) == ANOEQ) { yyerror("invalid operation: %N (struct containing %T cannot be compared)", n, badtype); goto error; } t = l->type; if(iscmp[n->op]) { evconst(n); t = idealbool; if(n->op != OLITERAL) { defaultlit2(&l, &r, 1); n->left = l; n->right = r; } // non-comparison operators on ideal bools should make them lose their ideal-ness } else if(t == idealbool) t = types[TBOOL]; if(et == TSTRING) { if(iscmp[n->op]) { n->etype = n->op; n->op = OCMPSTR; } else if(n->op == OADD) { // create OADDSTR node with list of strings in x + y + z + (w + v) + ... n->op = OADDSTR; if(l->op == OADDSTR) n->list = l->list; else n->list = list1(l); if(r->op == OADDSTR) n->list = concat(n->list, r->list); else n->list = list(n->list, r); n->left = N; n->right = N; } } if(et == TINTER) { if(l->op == OLITERAL && l->val.ctype == CTNIL) { // swap for back end n->left = r; n->right = l; } else if(r->op == OLITERAL && r->val.ctype == CTNIL) { // leave alone for back end } else { n->etype = n->op; n->op = OCMPIFACE; } } if((op == ODIV || op == OMOD) && isconst(r, CTINT)) if(mpcmpfixc(r->val.u.xval, 0) == 0) { yyerror("division by zero"); goto error; } n->type = t; goto ret; shift: defaultlit(&r, types[TUINT]); n->right = r; t = r->type; if(!isint[t->etype] || issigned[t->etype]) { yyerror("invalid operation: %N (shift count type %T, must be unsigned integer)", n, r->type); goto error; } t = l->type; if(t != T && t->etype != TIDEAL && !isint[t->etype]) { yyerror("invalid operation: %N (shift of type %T)", n, t); goto error; } // no defaultlit for left // the outer context gives the type n->type = l->type; goto ret; case OCOM: case OMINUS: case ONOT: case OPLUS: ok |= Erv; l = typecheck(&n->left, Erv | (top & Eiota)); if((t = l->type) == T) goto error; if(!okfor[n->op][t->etype]) { yyerror("invalid operation: %O %T", n->op, t); goto error; } n->type = t; goto ret; /* * exprs */ case OADDR: ok |= Erv; typecheck(&n->left, Erv | Eaddr); if(n->left->type == T) goto error; checklvalue(n->left, "take the address of"); r = outervalue(n->left); for(l = n->left; l != r; l = l->left) l->addrtaken = 1; if(l->orig != l && l->op == ONAME) fatal("found non-orig name node %N", l); l->addrtaken = 1; defaultlit(&n->left, T); l = n->left; if((t = l->type) == T) goto error; // top&Eindir means this is &x in *&x. (or the arg to built-in print) // n->etype means code generator flagged it as non-escaping. if(debug['N'] && !(top & Eindir) && !n->etype) addrescapes(n->left); n->type = ptrto(t); goto ret; case OCOMPLIT: ok |= Erv; typecheckcomplit(&n); if(n->type == T) goto error; goto ret; case OXDOT: n = adddot(n); n->op = ODOT; if(n->left == N) goto error; // fall through case ODOT: typecheck(&n->left, Erv|Etype); defaultlit(&n->left, T); if((t = n->left->type) == T) goto error; if(n->right->op != ONAME) { yyerror("rhs of . must be a name"); // impossible goto error; } r = n->right; if(n->left->op == OTYPE) { if(!looktypedot(n, t, 0)) { if(looktypedot(n, t, 1)) yyerror("%N undefined (cannot refer to unexported method %S)", n, n->right->sym); else yyerror("%N undefined (type %T has no method %S)", n, t, n->right->sym); goto error; } if(n->type->etype != TFUNC || n->type->thistuple != 1) { yyerror("type %T has no method %hS", n->left->type, n->right->sym); n->type = T; goto error; } n->op = ONAME; n->sym = n->right->sym; n->type = methodfunc(n->type, n->left->type); n->xoffset = 0; n->class = PFUNC; ok = Erv; goto ret; } if(isptr[t->etype] && t->type->etype != TINTER) { t = t->type; if(t == T) goto error; n->op = ODOTPTR; checkwidth(t); } if(isblank(n->right)) { yyerror("cannot refer to blank field or method"); goto error; } if(!lookdot(n, t, 0)) { if(lookdot(n, t, 1)) yyerror("%N undefined (cannot refer to unexported field or method %S)", n, n->right->sym); else yyerror("%N undefined (type %T has no field or method %S)", n, n->left->type, n->right->sym); goto error; } switch(n->op) { case ODOTINTER: case ODOTMETH: if(top&Ecall) ok |= Ecall; else { typecheckpartialcall(n, r); ok |= Erv; } break; default: ok |= Erv; break; } goto ret; case ODOTTYPE: ok |= Erv; typecheck(&n->left, Erv); defaultlit(&n->left, T); l = n->left; if((t = l->type) == T) goto error; if(!isinter(t)) { yyerror("invalid type assertion: %N (non-interface type %T on left)", n, t); goto error; } if(n->right != N) { typecheck(&n->right, Etype); n->type = n->right->type; n->right = N; if(n->type == T) goto error; } if(n->type != T && n->type->etype != TINTER) if(!implements(n->type, t, &missing, &have, &ptr)) { if(have && have->sym == missing->sym) yyerror("impossible type assertion:\n\t%T does not implement %T (wrong type for %S method)\n" "\t\thave %S%hhT\n\t\twant %S%hhT", n->type, t, missing->sym, have->sym, have->type, missing->sym, missing->type); else if(ptr) yyerror("impossible type assertion:\n\t%T does not implement %T (%S method has pointer receiver)", n->type, t, missing->sym); else if(have) yyerror("impossible type assertion:\n\t%T does not implement %T (missing %S method)\n" "\t\thave %S%hhT\n\t\twant %S%hhT", n->type, t, missing->sym, have->sym, have->type, missing->sym, missing->type); else yyerror("impossible type assertion:\n\t%T does not implement %T (missing %S method)", n->type, t, missing->sym); goto error; } goto ret; case OINDEX: ok |= Erv; typecheck(&n->left, Erv); defaultlit(&n->left, T); implicitstar(&n->left); l = n->left; typecheck(&n->right, Erv); r = n->right; if((t = l->type) == T || r->type == T) goto error; switch(t->etype) { default: yyerror("invalid operation: %N (type %T does not support indexing)", n, t); goto error; case TSTRING: case TARRAY: indexlit(&n->right); if(t->etype == TSTRING) n->type = types[TUINT8]; else n->type = t->type; why = "string"; if(t->etype == TARRAY) { if(isfixedarray(t)) why = "array"; else why = "slice"; } if(n->right->type != T && !isint[n->right->type->etype]) { yyerror("non-integer %s index %N", why, n->right); break; } if(isconst(n->right, CTINT)) { if(mpgetfix(n->right->val.u.xval) < 0) yyerror("invalid %s index %N (index must be non-negative)", why, n->right); else if(isfixedarray(t) && t->bound > 0 && mpgetfix(n->right->val.u.xval) >= t->bound) yyerror("invalid array index %N (out of bounds for %d-element array)", n->right, t->bound); else if(isconst(n->left, CTSTR) && mpgetfix(n->right->val.u.xval) >= n->left->val.u.sval->len) yyerror("invalid string index %N (out of bounds for %d-byte string)", n->right, n->left->val.u.sval->len); else if(mpcmpfixfix(n->right->val.u.xval, maxintval[TINT]) > 0) yyerror("invalid %s index %N (index too large)", why, n->right); } break; case TMAP: n->etype = 0; defaultlit(&n->right, t->down); if(n->right->type != T) n->right = assignconv(n->right, t->down, "map index"); n->type = t->type; n->op = OINDEXMAP; break; } goto ret; case ORECV: ok |= Etop | Erv; typecheck(&n->left, Erv); defaultlit(&n->left, T); l = n->left; if((t = l->type) == T) goto error; if(t->etype != TCHAN) { yyerror("invalid operation: %N (receive from non-chan type %T)", n, t); goto error; } if(!(t->chan & Crecv)) { yyerror("invalid operation: %N (receive from send-only type %T)", n, t); goto error; } n->type = t->type; goto ret; case OSEND: ok |= Etop; l = typecheck(&n->left, Erv); typecheck(&n->right, Erv); defaultlit(&n->left, T); l = n->left; if((t = l->type) == T) goto error; if(t->etype != TCHAN) { yyerror("invalid operation: %N (send to non-chan type %T)", n, t); goto error; } if(!(t->chan & Csend)) { yyerror("invalid operation: %N (send to receive-only type %T)", n, t); goto error; } defaultlit(&n->right, t->type); r = n->right; if(r->type == T) goto error; n->right = assignconv(r, l->type->type, "send"); // TODO: more aggressive n->etype = 0; n->type = T; goto ret; case OSLICE: ok |= Erv; typecheck(&n->left, top); typecheck(&n->right->left, Erv); typecheck(&n->right->right, Erv); defaultlit(&n->left, T); indexlit(&n->right->left); indexlit(&n->right->right); l = n->left; if(isfixedarray(l->type)) { if(!islvalue(n->left)) { yyerror("invalid operation %N (slice of unaddressable value)", n); goto error; } n->left = nod(OADDR, n->left, N); n->left->implicit = 1; typecheck(&n->left, Erv); l = n->left; } if((t = l->type) == T) goto error; tp = nil; if(istype(t, TSTRING)) { n->type = t; n->op = OSLICESTR; } else if(isptr[t->etype] && isfixedarray(t->type)) { tp = t->type; n->type = typ(TARRAY); n->type->type = tp->type; n->type->bound = -1; dowidth(n->type); n->op = OSLICEARR; } else if(isslice(t)) { n->type = t; } else { yyerror("cannot slice %N (type %T)", l, t); goto error; } if((lo = n->right->left) != N && checksliceindex(lo, tp) < 0) goto error; if((hi = n->right->right) != N && checksliceindex(hi, tp) < 0) goto error; if(checksliceconst(lo, hi) < 0) goto error; goto ret; case OSLICE3: ok |= Erv; typecheck(&n->left, top); typecheck(&n->right->left, Erv); typecheck(&n->right->right->left, Erv); typecheck(&n->right->right->right, Erv); defaultlit(&n->left, T); indexlit(&n->right->left); indexlit(&n->right->right->left); indexlit(&n->right->right->right); l = n->left; if(isfixedarray(l->type)) { if(!islvalue(n->left)) { yyerror("invalid operation %N (slice of unaddressable value)", n); goto error; } n->left = nod(OADDR, n->left, N); n->left->implicit = 1; typecheck(&n->left, Erv); l = n->left; } if((t = l->type) == T) goto error; tp = nil; if(istype(t, TSTRING)) { yyerror("invalid operation %N (3-index slice of string)", n); goto error; } if(isptr[t->etype] && isfixedarray(t->type)) { tp = t->type; n->type = typ(TARRAY); n->type->type = tp->type; n->type->bound = -1; dowidth(n->type); n->op = OSLICE3ARR; } else if(isslice(t)) { n->type = t; } else { yyerror("cannot slice %N (type %T)", l, t); goto error; } if((lo = n->right->left) != N && checksliceindex(lo, tp) < 0) goto error; if((mid = n->right->right->left) != N && checksliceindex(mid, tp) < 0) goto error; if((hi = n->right->right->right) != N && checksliceindex(hi, tp) < 0) goto error; if(checksliceconst(lo, hi) < 0 || checksliceconst(lo, mid) < 0 || checksliceconst(mid, hi) < 0) goto error; goto ret; /* * call and call like */ case OCALL: l = n->left; if(l->op == ONAME && (r = unsafenmagic(n)) != N) { if(n->isddd) yyerror("invalid use of ... with builtin %N", l); n = r; goto reswitch; } typecheck(&n->left, Erv | Etype | Ecall |(top&Eproc)); n->diag |= n->left->diag; l = n->left; if(l->op == ONAME && l->etype != 0) { if(n->isddd && l->etype != OAPPEND) yyerror("invalid use of ... with builtin %N", l); // builtin: OLEN, OCAP, etc. n->op = l->etype; n->left = n->right; n->right = N; goto reswitch; } defaultlit(&n->left, T); l = n->left; if(l->op == OTYPE) { if(n->isddd || l->type->bound == -100) { if(!l->type->broke) yyerror("invalid use of ... in type conversion", l); n->diag = 1; } // pick off before type-checking arguments ok |= Erv; // turn CALL(type, arg) into CONV(arg) w/ type n->left = N; n->op = OCONV; n->type = l->type; if(onearg(n, "conversion to %T", l->type) < 0) goto error; goto doconv; } if(count(n->list) == 1 && !n->isddd) typecheck(&n->list->n, Erv | Efnstruct); else typechecklist(n->list, Erv); if((t = l->type) == T) goto error; checkwidth(t); switch(l->op) { case ODOTINTER: n->op = OCALLINTER; break; case ODOTMETH: n->op = OCALLMETH; // typecheckaste was used here but there wasn't enough // information further down the call chain to know if we // were testing a method receiver for unexported fields. // It isn't necessary, so just do a sanity check. tp = getthisx(t)->type->type; if(l->left == N || !eqtype(l->left->type, tp)) fatal("method receiver"); break; default: n->op = OCALLFUNC; if(t->etype != TFUNC) { yyerror("cannot call non-function %N (type %T)", l, t); goto error; } break; } if(snprint(descbuf, sizeof descbuf, "argument to %N", n->left) < sizeof descbuf) desc = descbuf; else desc = "function argument"; typecheckaste(OCALL, n->left, n->isddd, getinargx(t), n->list, desc); ok |= Etop; if(t->outtuple == 0) goto ret; ok |= Erv; if(t->outtuple == 1) { t = getoutargx(l->type)->type; if(t == T) goto error; if(t->etype == TFIELD) t = t->type; n->type = t; goto ret; } // multiple return if(!(top & (Efnstruct | Etop))) { yyerror("multiple-value %N() in single-value context", l); goto ret; } n->type = getoutargx(l->type); goto ret; case OCAP: case OLEN: case OREAL: case OIMAG: ok |= Erv; if(onearg(n, "%O", n->op) < 0) goto error; typecheck(&n->left, Erv); defaultlit(&n->left, T); implicitstar(&n->left); l = n->left; t = l->type; if(t == T) goto error; switch(n->op) { case OCAP: if(!okforcap[t->etype]) goto badcall1; break; case OLEN: if(!okforlen[t->etype]) goto badcall1; break; case OREAL: case OIMAG: if(!iscomplex[t->etype]) goto badcall1; if(isconst(l, CTCPLX)){ r = n; if(n->op == OREAL) n = nodfltconst(&l->val.u.cval->real); else n = nodfltconst(&l->val.u.cval->imag); n->orig = r; } n->type = types[cplxsubtype(t->etype)]; goto ret; } // might be constant switch(t->etype) { case TSTRING: if(isconst(l, CTSTR)) { r = nod(OXXX, N, N); nodconst(r, types[TINT], l->val.u.sval->len); r->orig = n; n = r; } break; case TARRAY: if(t->bound < 0) // slice break; if(callrecv(l)) // has call or receive break; r = nod(OXXX, N, N); nodconst(r, types[TINT], t->bound); r->orig = n; n = r; break; } n->type = types[TINT]; goto ret; case OCOMPLEX: ok |= Erv; if(count(n->list) == 1) { typechecklist(n->list, Efnstruct); t = n->list->n->left->type; if(t->outtuple != 2) { yyerror("invalid operation: complex expects two arguments, %N returns %d results", n->list->n, t->outtuple); goto error; } t = n->list->n->type->type; l = t->nname; r = t->down->nname; } else { if(twoarg(n) < 0) goto error; l = typecheck(&n->left, Erv | (top & Eiota)); r = typecheck(&n->right, Erv | (top & Eiota)); if(l->type == T || r->type == T) goto error; defaultlit2(&l, &r, 0); if(l->type == T || r->type == T) goto error; n->left = l; n->right = r; } if(!eqtype(l->type, r->type)) { yyerror("invalid operation: %N (mismatched types %T and %T)", n, l->type, r->type); goto error; } switch(l->type->etype) { default: yyerror("invalid operation: %N (arguments have type %T, expected floating-point)", n, l->type, r->type); goto error; case TIDEAL: t = types[TIDEAL]; break; case TFLOAT32: t = types[TCOMPLEX64]; break; case TFLOAT64: t = types[TCOMPLEX128]; break; } if(l->op == OLITERAL && r->op == OLITERAL) { // make it a complex literal r = nodcplxlit(l->val, r->val); r->orig = n; n = r; } n->type = t; goto ret; case OCLOSE: if(onearg(n, "%O", n->op) < 0) goto error; typecheck(&n->left, Erv); defaultlit(&n->left, T); l = n->left; if((t = l->type) == T) goto error; if(t->etype != TCHAN) { yyerror("invalid operation: %N (non-chan type %T)", n, t); goto error; } if(!(t->chan & Csend)) { yyerror("invalid operation: %N (cannot close receive-only channel)", n); goto error; } ok |= Etop; goto ret; case ODELETE: args = n->list; if(args == nil) { yyerror("missing arguments to delete"); goto error; } if(args->next == nil) { yyerror("missing second (key) argument to delete"); goto error; } if(args->next->next != nil) { yyerror("too many arguments to delete"); goto error; } ok |= Etop; typechecklist(args, Erv); l = args->n; r = args->next->n; if(l->type != T && l->type->etype != TMAP) { yyerror("first argument to delete must be map; have %lT", l->type); goto error; } args->next->n = assignconv(r, l->type->down, "delete"); goto ret; case OAPPEND: ok |= Erv; args = n->list; if(args == nil) { yyerror("missing arguments to append"); goto error; } if(count(args) == 1 && !n->isddd) typecheck(&args->n, Erv | Efnstruct); else typechecklist(args, Erv); if((t = args->n->type) == T) goto error; // Unpack multiple-return result before type-checking. if(istype(t, TSTRUCT)) { t = t->type; if(istype(t, TFIELD)) t = t->type; } n->type = t; if(!isslice(t)) { if(isconst(args->n, CTNIL)) { yyerror("first argument to append must be typed slice; have untyped nil", t); goto error; } yyerror("first argument to append must be slice; have %lT", t); goto error; } if(n->isddd) { if(args->next == nil) { yyerror("cannot use ... on first argument to append"); goto error; } if(args->next->next != nil) { yyerror("too many arguments to append"); goto error; } if(istype(t->type, TUINT8) && istype(args->next->n->type, TSTRING)) { defaultlit(&args->next->n, types[TSTRING]); goto ret; } args->next->n = assignconv(args->next->n, t->orig, "append"); goto ret; } for(args=args->next; args != nil; args=args->next) { if(args->n->type == T) continue; args->n = assignconv(args->n, t->type, "append"); } goto ret; case OCOPY: ok |= Etop|Erv; args = n->list; if(args == nil || args->next == nil) { yyerror("missing arguments to copy"); goto error; } if(args->next->next != nil) { yyerror("too many arguments to copy"); goto error; } n->left = args->n; n->right = args->next->n; n->list = nil; n->type = types[TINT]; typecheck(&n->left, Erv); typecheck(&n->right, Erv); if(n->left->type == T || n->right->type == T) goto error; defaultlit(&n->left, T); defaultlit(&n->right, T); if(n->left->type == T || n->right->type == T) goto error; // copy([]byte, string) if(isslice(n->left->type) && n->right->type->etype == TSTRING) { if(eqtype(n->left->type->type, bytetype)) goto ret; yyerror("arguments to copy have different element types: %lT and string", n->left->type); goto error; } if(!isslice(n->left->type) || !isslice(n->right->type)) { if(!isslice(n->left->type) && !isslice(n->right->type)) yyerror("arguments to copy must be slices; have %lT, %lT", n->left->type, n->right->type); else if(!isslice(n->left->type)) yyerror("first argument to copy should be slice; have %lT", n->left->type); else yyerror("second argument to copy should be slice or string; have %lT", n->right->type); goto error; } if(!eqtype(n->left->type->type, n->right->type->type)) { yyerror("arguments to copy have different element types: %lT and %lT", n->left->type, n->right->type); goto error; } goto ret; case OCONV: doconv: ok |= Erv; saveorignode(n); typecheck(&n->left, Erv | (top & (Eindir | Eiota))); convlit1(&n->left, n->type, 1); if((t = n->left->type) == T || n->type == T) goto error; if((n->op = convertop(t, n->type, &why)) == 0) { if(!n->diag && !n->type->broke) { yyerror("cannot convert %lN to type %T%s", n->left, n->type, why); n->diag = 1; } n->op = OCONV; } switch(n->op) { case OCONVNOP: if(n->left->op == OLITERAL) { r = nod(OXXX, N, N); n->op = OCONV; n->orig = r; *r = *n; n->op = OLITERAL; n->val = n->left->val; } break; case OSTRARRAYBYTE: // do not use stringtoarraylit. // generated code and compiler memory footprint is better without it. break; case OSTRARRAYRUNE: if(n->left->op == OLITERAL) stringtoarraylit(&n); break; } goto ret; case OMAKE: ok |= Erv; args = n->list; if(args == nil) { yyerror("missing argument to make"); goto error; } n->list = nil; l = args->n; args = args->next; typecheck(&l, Etype); if((t = l->type) == T) goto error; switch(t->etype) { default: badmake: yyerror("cannot make type %T", t); goto error; case TARRAY: if(!isslice(t)) goto badmake; if(args == nil) { yyerror("missing len argument to make(%T)", t); goto error; } l = args->n; args = args->next; typecheck(&l, Erv); r = N; if(args != nil) { r = args->n; args = args->next; typecheck(&r, Erv); } if(l->type == T || (r && r->type == T)) goto error; et = checkmake(t, "len", l) < 0; et |= r && checkmake(t, "cap", r) < 0; if(et) goto error; if(isconst(l, CTINT) && r && isconst(r, CTINT) && mpcmpfixfix(l->val.u.xval, r->val.u.xval) > 0) { yyerror("len larger than cap in make(%T)", t); goto error; } n->left = l; n->right = r; n->op = OMAKESLICE; break; case TMAP: if(args != nil) { l = args->n; args = args->next; typecheck(&l, Erv); defaultlit(&l, types[TINT]); if(l->type == T) goto error; if(checkmake(t, "size", l) < 0) goto error; n->left = l; } else n->left = nodintconst(0); n->op = OMAKEMAP; break; case TCHAN: l = N; if(args != nil) { l = args->n; args = args->next; typecheck(&l, Erv); defaultlit(&l, types[TINT]); if(l->type == T) goto error; if(checkmake(t, "buffer", l) < 0) goto error; n->left = l; } else n->left = nodintconst(0); n->op = OMAKECHAN; break; } if(args != nil) { yyerror("too many arguments to make(%T)", t); n->op = OMAKE; goto error; } n->type = t; goto ret; case ONEW: ok |= Erv; args = n->list; if(args == nil) { yyerror("missing argument to new"); goto error; } l = args->n; typecheck(&l, Etype); if((t = l->type) == T) goto error; if(args->next != nil) { yyerror("too many arguments to new(%T)", t); goto error; } n->left = l; n->type = ptrto(t); goto ret; case OPRINT: case OPRINTN: ok |= Etop; typechecklist(n->list, Erv | Eindir); // Eindir: address does not escape for(args=n->list; args; args=args->next) { // Special case for print: int constant is int64, not int. if(isconst(args->n, CTINT)) defaultlit(&args->n, types[TINT64]); else defaultlit(&args->n, T); } goto ret; case OPANIC: ok |= Etop; if(onearg(n, "panic") < 0) goto error; typecheck(&n->left, Erv); defaultlit(&n->left, types[TINTER]); if(n->left->type == T) goto error; goto ret; case ORECOVER: ok |= Erv|Etop; if(n->list != nil) { yyerror("too many arguments to recover"); goto error; } n->type = types[TINTER]; goto ret; case OCLOSURE: ok |= Erv; typecheckclosure(n, top); if(n->type == T) goto error; goto ret; case OITAB: ok |= Erv; typecheck(&n->left, Erv); if((t = n->left->type) == T) goto error; if(t->etype != TINTER) fatal("OITAB of %T", t); n->type = ptrto(types[TUINTPTR]); goto ret; case OSPTR: ok |= Erv; typecheck(&n->left, Erv); if((t = n->left->type) == T) goto error; if(!isslice(t) && t->etype != TSTRING) fatal("OSPTR of %T", t); if(t->etype == TSTRING) n->type = ptrto(types[TUINT8]); else n->type = ptrto(t->type); goto ret; case OCLOSUREVAR: ok |= Erv; goto ret; case OCFUNC: ok |= Erv; typecheck(&n->left, Erv); n->type = types[TUINTPTR]; goto ret; case OCONVNOP: ok |= Erv; typecheck(&n->left, Erv); goto ret; /* * statements */ case OAS: ok |= Etop; typecheckas(n); goto ret; case OAS2: ok |= Etop; typecheckas2(n); goto ret; case OBREAK: case OCONTINUE: case ODCL: case OEMPTY: case OGOTO: case OLABEL: case OXFALL: case OVARKILL: ok |= Etop; goto ret; case ODEFER: ok |= Etop; typecheck(&n->left, Etop|Erv); if(!n->left->diag) checkdefergo(n); goto ret; case OPROC: ok |= Etop; typecheck(&n->left, Etop|Eproc|Erv); checkdefergo(n); goto ret; case OFOR: ok |= Etop; typechecklist(n->ninit, Etop); typecheck(&n->ntest, Erv); if(n->ntest != N && (t = n->ntest->type) != T && t->etype != TBOOL) yyerror("non-bool %lN used as for condition", n->ntest); typecheck(&n->nincr, Etop); typechecklist(n->nbody, Etop); goto ret; case OIF: ok |= Etop; typechecklist(n->ninit, Etop); typecheck(&n->ntest, Erv); if(n->ntest != N && (t = n->ntest->type) != T && t->etype != TBOOL) yyerror("non-bool %lN used as if condition", n->ntest); typechecklist(n->nbody, Etop); typechecklist(n->nelse, Etop); goto ret; case ORETURN: ok |= Etop; if(count(n->list) == 1) typechecklist(n->list, Erv | Efnstruct); else typechecklist(n->list, Erv); if(curfn == N) { yyerror("return outside function"); goto error; } if(curfn->type->outnamed && n->list == nil) goto ret; typecheckaste(ORETURN, nil, 0, getoutargx(curfn->type), n->list, "return argument"); goto ret; case ORETJMP: ok |= Etop; goto ret; case OSELECT: ok |= Etop; typecheckselect(n); goto ret; case OSWITCH: ok |= Etop; typecheckswitch(n); goto ret; case ORANGE: ok |= Etop; typecheckrange(n); goto ret; case OTYPESW: yyerror("use of .(type) outside type switch"); goto error; case OXCASE: ok |= Etop; typechecklist(n->list, Erv); typechecklist(n->nbody, Etop); goto ret; case ODCLFUNC: ok |= Etop; typecheckfunc(n); goto ret; case ODCLCONST: ok |= Etop; typecheck(&n->left, Erv); goto ret; case ODCLTYPE: ok |= Etop; typecheck(&n->left, Etype); if(!incannedimport) checkwidth(n->left->type); goto ret; } ret: t = n->type; if(t && !t->funarg && n->op != OTYPE) { switch(t->etype) { case TFUNC: // might have TANY; wait until its called case TANY: case TFORW: case TIDEAL: case TNIL: case TBLANK: break; default: checkwidth(t); } } if(safemode && !incannedimport && !importpkg && !compiling_wrappers && t && t->etype == TUNSAFEPTR) yyerror("cannot use unsafe.Pointer"); evconst(n); if(n->op == OTYPE && !(top & Etype)) { yyerror("type %T is not an expression", n->type); goto error; } if((top & (Erv|Etype)) == Etype && n->op != OTYPE) { yyerror("%N is not a type", n); goto error; } // TODO(rsc): simplify if((top & (Ecall|Erv|Etype)) && !(top & Etop) && !(ok & (Erv|Etype|Ecall))) { yyerror("%N used as value", n); goto error; } if((top & Etop) && !(top & (Ecall|Erv|Etype)) && !(ok & Etop)) { if(n->diag == 0) { yyerror("%N evaluated but not used", n); n->diag = 1; } goto error; } /* TODO if(n->type == T) fatal("typecheck nil type"); */ goto out; badcall1: yyerror("invalid argument %lN for %O", n->left, n->op); goto error; error: n->type = T; out: *np = n; } static int checksliceindex(Node *r, Type *tp) { Type *t; if((t = r->type) == T) return -1; if(!isint[t->etype]) { yyerror("invalid slice index %N (type %T)", r, t); return -1; } if(r->op == OLITERAL) { if(mpgetfix(r->val.u.xval) < 0) { yyerror("invalid slice index %N (index must be non-negative)", r); return -1; } else if(tp != nil && tp->bound > 0 && mpgetfix(r->val.u.xval) > tp->bound) { yyerror("invalid slice index %N (out of bounds for %d-element array)", r, tp->bound); return -1; } else if(mpcmpfixfix(r->val.u.xval, maxintval[TINT]) > 0) { yyerror("invalid slice index %N (index too large)", r); return -1; } } return 0; } static int checksliceconst(Node *lo, Node *hi) { if(lo != N && hi != N && lo->op == OLITERAL && hi->op == OLITERAL && mpcmpfixfix(lo->val.u.xval, hi->val.u.xval) > 0) { yyerror("invalid slice index: %N > %N", lo, hi); return -1; } return 0; } static void checkdefergo(Node *n) { char *what; what = "defer"; if(n->op == OPROC) what = "go"; switch(n->left->op) { case OCALLINTER: case OCALLMETH: case OCALLFUNC: case OCLOSE: case OCOPY: case ODELETE: case OPANIC: case OPRINT: case OPRINTN: case ORECOVER: // ok break; case OAPPEND: case OCAP: case OCOMPLEX: case OIMAG: case OLEN: case OMAKE: case OMAKESLICE: case OMAKECHAN: case OMAKEMAP: case ONEW: case OREAL: case OLITERAL: // conversion or unsafe.Alignof, Offsetof, Sizeof if(n->left->orig != N && n->left->orig->op == OCONV) goto conv; yyerror("%s discards result of %N", what, n->left); break; default: conv: // type is broken or missing, most likely a method call on a broken type // we will warn about the broken type elsewhere. no need to emit a potentially confusing error if(n->left->type == T || n->left->type->broke) break; if(!n->diag) { // The syntax made sure it was a call, so this must be // a conversion. n->diag = 1; yyerror("%s requires function call, not conversion", what); } break; } } static void implicitstar(Node **nn) { Type *t; Node *n; // insert implicit * if needed for fixed array n = *nn; t = n->type; if(t == T || !isptr[t->etype]) return; t = t->type; if(t == T) return; if(!isfixedarray(t)) return; n = nod(OIND, n, N); n->implicit = 1; typecheck(&n, Erv); *nn = n; } static int onearg(Node *n, char *f, ...) { va_list arg; char *p; if(n->left != N) return 0; if(n->list == nil) { va_start(arg, f); p = vsmprint(f, arg); va_end(arg); yyerror("missing argument to %s: %N", p, n); return -1; } if(n->list->next != nil) { va_start(arg, f); p = vsmprint(f, arg); va_end(arg); yyerror("too many arguments to %s: %N", p, n); n->left = n->list->n; n->list = nil; return -1; } n->left = n->list->n; n->list = nil; return 0; } static int twoarg(Node *n) { if(n->left != N) return 0; if(n->list == nil) { yyerror("missing argument to %O - %N", n->op, n); return -1; } n->left = n->list->n; if(n->list->next == nil) { yyerror("missing argument to %O - %N", n->op, n); n->list = nil; return -1; } if(n->list->next->next != nil) { yyerror("too many arguments to %O - %N", n->op, n); n->list = nil; return -1; } n->right = n->list->next->n; n->list = nil; return 0; } static Type* lookdot1(Node *errnode, Sym *s, Type *t, Type *f, int dostrcmp) { Type *r; r = T; for(; f!=T; f=f->down) { if(dostrcmp && strcmp(f->sym->name, s->name) == 0) return f; if(f->sym != s) continue; if(r != T) { if(errnode) yyerror("ambiguous selector %N", errnode); else if(isptr[t->etype]) yyerror("ambiguous selector (%T).%S", t, s); else yyerror("ambiguous selector %T.%S", t, s); break; } r = f; } return r; } static int looktypedot(Node *n, Type *t, int dostrcmp) { Type *f1, *f2; Sym *s; s = n->right->sym; if(t->etype == TINTER) { f1 = lookdot1(n, s, t, t->type, dostrcmp); if(f1 == T) return 0; n->right = methodname(n->right, t); n->xoffset = f1->width; n->type = f1->type; n->op = ODOTINTER; return 1; } // Find the base type: methtype will fail if t // is not of the form T or *T. f2 = methtype(t, 0); if(f2 == T) return 0; expandmeth(f2); f2 = lookdot1(n, s, f2, f2->xmethod, dostrcmp); if(f2 == T) return 0; // disallow T.m if m requires *T receiver if(isptr[getthisx(f2->type)->type->type->etype] && !isptr[t->etype] && f2->embedded != 2 && !isifacemethod(f2->type)) { yyerror("invalid method expression %N (needs pointer receiver: (*%T).%hS)", n, t, f2->sym); return 0; } n->right = methodname(n->right, t); n->xoffset = f2->width; n->type = f2->type; n->op = ODOTMETH; return 1; } static Type* derefall(Type* t) { while(t && t->etype == tptr) t = t->type; return t; } static int lookdot(Node *n, Type *t, int dostrcmp) { Type *f1, *f2, *tt, *rcvr; Sym *s; s = n->right->sym; dowidth(t); f1 = T; if(t->etype == TSTRUCT || t->etype == TINTER) f1 = lookdot1(n, s, t, t->type, dostrcmp); f2 = T; if(n->left->type == t || n->left->type->sym == S) { f2 = methtype(t, 0); if(f2 != T) { // Use f2->method, not f2->xmethod: adddot has // already inserted all the necessary embedded dots. f2 = lookdot1(n, s, f2, f2->method, dostrcmp); } } if(f1 != T) { if(f2 != T) yyerror("%S is both field and method", n->right->sym); if(f1->width == BADWIDTH) fatal("lookdot badwidth %T %p", f1, f1); n->xoffset = f1->width; n->type = f1->type; n->paramfld = f1; if(t->etype == TINTER) { if(isptr[n->left->type->etype]) { n->left = nod(OIND, n->left, N); // implicitstar n->left->implicit = 1; typecheck(&n->left, Erv); } n->op = ODOTINTER; } return 1; } if(f2 != T) { tt = n->left->type; dowidth(tt); rcvr = getthisx(f2->type)->type->type; if(!eqtype(rcvr, tt)) { if(rcvr->etype == tptr && eqtype(rcvr->type, tt)) { checklvalue(n->left, "call pointer method on"); if(debug['N']) addrescapes(n->left); n->left = nod(OADDR, n->left, N); n->left->implicit = 1; typecheck(&n->left, Etype|Erv); } else if(tt->etype == tptr && eqtype(tt->type, rcvr)) { n->left = nod(OIND, n->left, N); n->left->implicit = 1; typecheck(&n->left, Etype|Erv); } else if(tt->etype == tptr && tt->type->etype == tptr && eqtype(derefall(tt), rcvr)) { yyerror("calling method %N with receiver %lN requires explicit dereference", n->right, n->left); while(tt->etype == tptr) { n->left = nod(OIND, n->left, N); n->left->implicit = 1; typecheck(&n->left, Etype|Erv); tt = tt->type; } } else { fatal("method mismatch: %T for %T", rcvr, tt); } } n->right = methodname(n->right, n->left->type); n->xoffset = f2->width; n->type = f2->type; // print("lookdot found [%p] %T\n", f2->type, f2->type); n->op = ODOTMETH; return 1; } return 0; } static int nokeys(NodeList *l) { for(; l; l=l->next) if(l->n->op == OKEY) return 0; return 1; } static int hasddd(Type *t) { Type *tl; for(tl=t->type; tl; tl=tl->down) { if(tl->isddd) return 1; } return 0; } static int downcount(Type *t) { Type *tl; int n; n = 0; for(tl=t->type; tl; tl=tl->down) { n++; } return n; } /* * typecheck assignment: type list = expression list */ static void typecheckaste(int op, Node *call, int isddd, Type *tstruct, NodeList *nl, char *desc) { Type *t, *tl, *tn; Node *n; int lno; char *why; int n1, n2; lno = lineno; if(tstruct->broke) goto out; n = N; if(nl != nil && nl->next == nil && (n = nl->n)->type != T) if(n->type->etype == TSTRUCT && n->type->funarg) { if(!hasddd(tstruct)) { n1 = downcount(tstruct); n2 = downcount(n->type); if(n2 > n1) goto toomany; if(n2 < n1) goto notenough; } tn = n->type->type; for(tl=tstruct->type; tl; tl=tl->down) { if(tl->isddd) { for(; tn; tn=tn->down) { if(assignop(tn->type, tl->type->type, &why) == 0) { if(call != N) yyerror("cannot use %T as type %T in argument to %N%s", tn->type, tl->type->type, call, why); else yyerror("cannot use %T as type %T in %s%s", tn->type, tl->type->type, desc, why); } } goto out; } if(tn == T) goto notenough; if(assignop(tn->type, tl->type, &why) == 0) { if(call != N) yyerror("cannot use %T as type %T in argument to %N%s", tn->type, tl->type, call, why); else yyerror("cannot use %T as type %T in %s%s", tn->type, tl->type, desc, why); } tn = tn->down; } if(tn != T) goto toomany; goto out; } n1 = downcount(tstruct); n2 = count(nl); if(!hasddd(tstruct)) { if(n2 > n1) goto toomany; if(n2 < n1) goto notenough; } else { if(!isddd) { if(n2 < n1-1) goto notenough; } else { if(n2 > n1) goto toomany; if(n2 < n1) goto notenough; } } for(tl=tstruct->type; tl; tl=tl->down) { t = tl->type; if(tl->isddd) { if(isddd) { if(nl == nil) goto notenough; if(nl->next != nil) goto toomany; n = nl->n; setlineno(n); if(n->type != T) nl->n = assignconv(n, t, desc); goto out; } for(; nl; nl=nl->next) { n = nl->n; setlineno(nl->n); if(n->type != T) nl->n = assignconv(n, t->type, desc); } goto out; } if(nl == nil) goto notenough; n = nl->n; setlineno(n); if(n->type != T) nl->n = assignconv(n, t, desc); nl = nl->next; } if(nl != nil) goto toomany; if(isddd) { if(call != N) yyerror("invalid use of ... in call to %N", call); else yyerror("invalid use of ... in %O", op); } out: lineno = lno; return; notenough: if(n == N || !n->diag) { if(call != N) yyerror("not enough arguments in call to %N", call); else yyerror("not enough arguments to %O", op); if(n != N) n->diag = 1; } goto out; toomany: if(call != N) yyerror("too many arguments in call to %N", call); else yyerror("too many arguments to %O", op); goto out; } /* * type check composite */ static void fielddup(Node *n, Node *hash[], ulong nhash) { uint h; char *s; Node *a; if(n->op != ONAME) fatal("fielddup: not ONAME"); s = n->sym->name; h = stringhash(s)%nhash; for(a=hash[h]; a!=N; a=a->ntest) { if(strcmp(a->sym->name, s) == 0) { yyerror("duplicate field name in struct literal: %s", s); return; } } n->ntest = hash[h]; hash[h] = n; } static void keydup(Node *n, Node *hash[], ulong nhash) { uint h; ulong b; double d; int i; Node *a, *orign; Node cmp; char *s; orign = n; if(n->op == OCONVIFACE) n = n->left; evconst(n); if(n->op != OLITERAL) return; // we dont check variables switch(n->val.ctype) { default: // unknown, bool, nil b = 23; break; case CTINT: case CTRUNE: b = mpgetfix(n->val.u.xval); break; case CTFLT: d = mpgetflt(n->val.u.fval); s = (char*)&d; b = 0; for(i=sizeof(d); i>0; i--) b = b*PRIME1 + *s++; break; case CTSTR: b = 0; s = n->val.u.sval->s; for(i=n->val.u.sval->len; i>0; i--) b = b*PRIME1 + *s++; break; } h = b%nhash; memset(&cmp, 0, sizeof(cmp)); for(a=hash[h]; a!=N; a=a->ntest) { cmp.op = OEQ; cmp.left = n; b = 0; if(a->op == OCONVIFACE && orign->op == OCONVIFACE) { if(eqtype(a->left->type, n->type)) { cmp.right = a->left; evconst(&cmp); b = cmp.val.u.bval; } } else if(eqtype(a->type, n->type)) { cmp.right = a; evconst(&cmp); b = cmp.val.u.bval; } if(b) { yyerror("duplicate key %N in map literal", n); return; } } orign->ntest = hash[h]; hash[h] = orign; } static void indexdup(Node *n, Node *hash[], ulong nhash) { uint h; Node *a; ulong b, c; if(n->op != OLITERAL) fatal("indexdup: not OLITERAL"); b = mpgetfix(n->val.u.xval); h = b%nhash; for(a=hash[h]; a!=N; a=a->ntest) { c = mpgetfix(a->val.u.xval); if(b == c) { yyerror("duplicate index in array literal: %ld", b); return; } } n->ntest = hash[h]; hash[h] = n; } static int prime(ulong h, ulong sr) { ulong n; for(n=3; n<=sr; n+=2) if(h%n == 0) return 0; return 1; } static ulong inithash(Node *n, Node ***hash, Node **autohash, ulong nautohash) { ulong h, sr; NodeList *ll; int i; // count the number of entries h = 0; for(ll=n->list; ll; ll=ll->next) h++; // if the auto hash table is // large enough use it. if(h <= nautohash) { *hash = autohash; memset(*hash, 0, nautohash * sizeof(**hash)); return nautohash; } // make hash size odd and 12% larger than entries h += h/8; h |= 1; // calculate sqrt of h sr = h/2; for(i=0; i<5; i++) sr = (sr + h/sr)/2; // check for primeality while(!prime(h, sr)) h += 2; // build and return a throw-away hash table *hash = mal(h * sizeof(**hash)); memset(*hash, 0, h * sizeof(**hash)); return h; } static int iscomptype(Type *t) { switch(t->etype) { case TARRAY: case TSTRUCT: case TMAP: return 1; case TPTR32: case TPTR64: switch(t->type->etype) { case TARRAY: case TSTRUCT: case TMAP: return 1; } break; } return 0; } static void pushtype(Node *n, Type *t) { if(n == N || n->op != OCOMPLIT || !iscomptype(t)) return; if(n->right == N) { n->right = typenod(t); n->implicit = 1; // don't print n->right->implicit = 1; // * is okay } else if(debug['s']) { typecheck(&n->right, Etype); if(n->right->type != T && eqtype(n->right->type, t)) print("%lL: redundant type: %T\n", n->lineno, t); } } static void typecheckcomplit(Node **np) { int bad, i, nerr; int64 len; Node *l, *n, *norig, *r, **hash; NodeList *ll; Type *t, *f; Sym *s, *s1; int32 lno; ulong nhash; Node *autohash[101]; n = *np; lno = lineno; if(n->right == N) { if(n->list != nil) setlineno(n->list->n); yyerror("missing type in composite literal"); goto error; } // Save original node (including n->right) norig = nod(n->op, N, N); *norig = *n; setlineno(n->right); l = typecheck(&n->right /* sic */, Etype|Ecomplit); if((t = l->type) == T) goto error; nerr = nerrors; n->type = t; if(isptr[t->etype]) { // For better or worse, we don't allow pointers as the composite literal type, // except when using the &T syntax, which sets implicit on the OIND. if(!n->right->implicit) { yyerror("invalid pointer type %T for composite literal (use &%T instead)", t, t->type); goto error; } // Also, the underlying type must be a struct, map, slice, or array. if(!iscomptype(t)) { yyerror("invalid pointer type %T for composite literal", t); goto error; } t = t->type; } switch(t->etype) { default: yyerror("invalid type for composite literal: %T", t); n->type = T; break; case TARRAY: nhash = inithash(n, &hash, autohash, nelem(autohash)); len = 0; i = 0; for(ll=n->list; ll; ll=ll->next) { l = ll->n; setlineno(l); if(l->op != OKEY) { l = nod(OKEY, nodintconst(i), l); l->left->type = types[TINT]; l->left->typecheck = 1; ll->n = l; } typecheck(&l->left, Erv); evconst(l->left); i = nonnegconst(l->left); if(i < 0 && !l->left->diag) { yyerror("array index must be non-negative integer constant"); l->left->diag = 1; i = -(1<<30); // stay negative for a while } if(i >= 0) indexdup(l->left, hash, nhash); i++; if(i > len) { len = i; if(t->bound >= 0 && len > t->bound) { setlineno(l); yyerror("array index %lld out of bounds [0:%lld]", len-1, t->bound); t->bound = -1; // no more errors } } r = l->right; pushtype(r, t->type); typecheck(&r, Erv); defaultlit(&r, t->type); l->right = assignconv(r, t->type, "array element"); } if(t->bound == -100) t->bound = len; if(t->bound < 0) n->right = nodintconst(len); n->op = OARRAYLIT; break; case TMAP: nhash = inithash(n, &hash, autohash, nelem(autohash)); for(ll=n->list; ll; ll=ll->next) { l = ll->n; setlineno(l); if(l->op != OKEY) { typecheck(&ll->n, Erv); yyerror("missing key in map literal"); continue; } typecheck(&l->left, Erv); defaultlit(&l->left, t->down); l->left = assignconv(l->left, t->down, "map key"); if (l->left->op != OCONV) keydup(l->left, hash, nhash); r = l->right; pushtype(r, t->type); typecheck(&r, Erv); defaultlit(&r, t->type); l->right = assignconv(r, t->type, "map value"); } n->op = OMAPLIT; break; case TSTRUCT: bad = 0; if(n->list != nil && nokeys(n->list)) { // simple list of variables f = t->type; for(ll=n->list; ll; ll=ll->next) { setlineno(ll->n); typecheck(&ll->n, Erv); if(f == nil) { if(!bad++) yyerror("too many values in struct initializer"); continue; } s = f->sym; if(s != nil && !exportname(s->name) && s->pkg != localpkg) yyerror("implicit assignment of unexported field '%s' in %T literal", s->name, t); // No pushtype allowed here. Must name fields for that. ll->n = assignconv(ll->n, f->type, "field value"); ll->n = nod(OKEY, newname(f->sym), ll->n); ll->n->left->type = f; ll->n->left->typecheck = 1; f = f->down; } if(f != nil) yyerror("too few values in struct initializer"); } else { nhash = inithash(n, &hash, autohash, nelem(autohash)); // keyed list for(ll=n->list; ll; ll=ll->next) { l = ll->n; setlineno(l); if(l->op != OKEY) { if(!bad++) yyerror("mixture of field:value and value initializers"); typecheck(&ll->n, Erv); continue; } s = l->left->sym; if(s == S) { yyerror("invalid field name %N in struct initializer", l->left); typecheck(&l->right, Erv); continue; } // Sym might have resolved to name in other top-level // package, because of import dot. Redirect to correct sym // before we do the lookup. if(s->pkg != localpkg && exportname(s->name)) { s1 = lookup(s->name); if(s1->origpkg == s->pkg) s = s1; } f = lookdot1(nil, s, t, t->type, 0); if(f == nil) { yyerror("unknown %T field '%S' in struct literal", t, s); continue; } l->left = newname(s); l->left->typecheck = 1; l->left->type = f; s = f->sym; fielddup(newname(s), hash, nhash); r = l->right; // No pushtype allowed here. Tried and rejected. typecheck(&r, Erv); l->right = assignconv(r, f->type, "field value"); } } n->op = OSTRUCTLIT; break; } if(nerr != nerrors) goto error; n->orig = norig; if(isptr[n->type->etype]) { n = nod(OPTRLIT, n, N); n->typecheck = 1; n->type = n->left->type; n->left->type = t; n->left->typecheck = 1; } n->orig = norig; *np = n; lineno = lno; return; error: n->type = T; *np = n; lineno = lno; } /* * lvalue etc */ int islvalue(Node *n) { switch(n->op) { case OINDEX: if(isfixedarray(n->left->type)) return islvalue(n->left); if(n->left->type != T && n->left->type->etype == TSTRING) return 0; // fall through case OIND: case ODOTPTR: case OCLOSUREVAR: return 1; case ODOT: return islvalue(n->left); case ONAME: if(n->class == PFUNC) return 0; return 1; } return 0; } static void checklvalue(Node *n, char *verb) { if(!islvalue(n)) yyerror("cannot %s %N", verb, n); } static void checkassign(Node *n) { if(islvalue(n)) return; if(n->op == OINDEXMAP) { n->etype = 1; return; } // have already complained about n being undefined if(n->op == ONONAME) return; yyerror("cannot assign to %N", n); } static void checkassignlist(NodeList *l) { for(; l; l=l->next) checkassign(l->n); } /* * type check assignment. * if this assignment is the definition of a var on the left side, * fill in the var's type. */ static void typecheckas(Node *n) { // delicate little dance. // the definition of n may refer to this assignment // as its definition, in which case it will call typecheckas. // in that case, do not call typecheck back, or it will cycle. // if the variable has a type (ntype) then typechecking // will not look at defn, so it is okay (and desirable, // so that the conversion below happens). n->left = resolve(n->left); if(n->left->defn != n || n->left->ntype) typecheck(&n->left, Erv | Easgn); checkassign(n->left); typecheck(&n->right, Erv); if(n->right && n->right->type != T) { if(n->left->type != T) n->right = assignconv(n->right, n->left->type, "assignment"); } if(n->left->defn == n && n->left->ntype == N) { defaultlit(&n->right, T); n->left->type = n->right->type; } // second half of dance. // now that right is done, typecheck the left // just to get it over with. see dance above. n->typecheck = 1; if(n->left->typecheck == 0) typecheck(&n->left, Erv | Easgn); } static void checkassignto(Type *src, Node *dst) { char *why; if(assignop(src, dst->type, &why) == 0) { yyerror("cannot assign %T to %lN in multiple assignment%s", src, dst, why); return; } } static void typecheckas2(Node *n) { int cl, cr; NodeList *ll, *lr; Node *l, *r; Iter s; Type *t; for(ll=n->list; ll; ll=ll->next) { // delicate little dance. ll->n = resolve(ll->n); if(ll->n->defn != n || ll->n->ntype) typecheck(&ll->n, Erv | Easgn); } cl = count(n->list); cr = count(n->rlist); checkassignlist(n->list); if(cl > 1 && cr == 1) typecheck(&n->rlist->n, Erv | Efnstruct); else typechecklist(n->rlist, Erv); if(cl == cr) { // easy for(ll=n->list, lr=n->rlist; ll; ll=ll->next, lr=lr->next) { if(ll->n->type != T && lr->n->type != T) lr->n = assignconv(lr->n, ll->n->type, "assignment"); if(ll->n->defn == n && ll->n->ntype == N) { defaultlit(&lr->n, T); ll->n->type = lr->n->type; } } goto out; } l = n->list->n; r = n->rlist->n; // m[i] = x, ok if(cl == 1 && cr == 2 && l->op == OINDEXMAP) { if(l->type == T) goto out; yyerror("assignment count mismatch: %d = %d (use delete)", cl, cr); goto out; } // x,y,z = f() if(cr == 1) { if(r->type == T) goto out; switch(r->op) { case OCALLMETH: case OCALLINTER: case OCALLFUNC: if(r->type->etype != TSTRUCT || r->type->funarg == 0) break; cr = structcount(r->type); if(cr != cl) goto mismatch; n->op = OAS2FUNC; t = structfirst(&s, &r->type); for(ll=n->list; ll; ll=ll->next) { if(t->type != T && ll->n->type != T) checkassignto(t->type, ll->n); if(ll->n->defn == n && ll->n->ntype == N) ll->n->type = t->type; t = structnext(&s); } goto out; } } // x, ok = y if(cl == 2 && cr == 1) { if(r->type == T) goto out; switch(r->op) { case OINDEXMAP: n->op = OAS2MAPR; goto common; case ORECV: n->op = OAS2RECV; goto common; case ODOTTYPE: n->op = OAS2DOTTYPE; r->op = ODOTTYPE2; common: if(l->type != T) checkassignto(r->type, l); if(l->defn == n) l->type = r->type; l = n->list->next->n; if(l->type != T) checkassignto(types[TBOOL], l); if(l->defn == n && l->ntype == N) l->type = types[TBOOL]; goto out; } } mismatch: yyerror("assignment count mismatch: %d = %d", cl, cr); out: // second half of dance n->typecheck = 1; for(ll=n->list; ll; ll=ll->next) if(ll->n->typecheck == 0) typecheck(&ll->n, Erv | Easgn); } /* * type check function definition */ static void typecheckfunc(Node *n) { Type *t, *rcvr; typecheck(&n->nname, Erv | Easgn); if((t = n->nname->type) == T) return; n->type = t; t->nname = n->nname; rcvr = getthisx(t)->type; if(rcvr != nil && n->shortname != N && !isblank(n->shortname)) addmethod(n->shortname->sym, t, 1, n->nname->nointerface); } static void stringtoarraylit(Node **np) { int32 i; NodeList *l; Strlit *s; char *p, *ep; Rune r; Node *nn, *n; n = *np; if(n->left->op != OLITERAL || n->left->val.ctype != CTSTR) fatal("stringtoarraylit %N", n); s = n->left->val.u.sval; l = nil; p = s->s; ep = s->s + s->len; i = 0; if(n->type->type->etype == TUINT8) { // raw []byte while(p < ep) l = list(l, nod(OKEY, nodintconst(i++), nodintconst((uchar)*p++))); } else { // utf-8 []rune while(p < ep) { p += chartorune(&r, p); l = list(l, nod(OKEY, nodintconst(i++), nodintconst(r))); } } nn = nod(OCOMPLIT, N, typenod(n->type)); nn->list = l; typecheck(&nn, Erv); *np = nn; } static int ntypecheckdeftype; static NodeList *methodqueue; static void domethod(Node *n) { Node *nt; Type *t; nt = n->type->nname; typecheck(&nt, Etype); if(nt->type == T) { // type check failed; leave empty func n->type->etype = TFUNC; n->type->nod = N; return; } // If we have // type I interface { // M(_ int) // } // then even though I.M looks like it doesn't care about the // value of its argument, a specific implementation of I may // care. The _ would suppress the assignment to that argument // while generating a call, so remove it. for(t=getinargx(nt->type)->type; t; t=t->down) { if(t->sym != nil && strcmp(t->sym->name, "_") == 0) t->sym = nil; } *n->type = *nt->type; n->type->nod = N; checkwidth(n->type); } static NodeList *mapqueue; void copytype(Node *n, Type *t) { int maplineno, embedlineno, lno; NodeList *l; if(t->etype == TFORW) { // This type isn't computed yet; when it is, update n. t->copyto = list(t->copyto, n); return; } maplineno = n->type->maplineno; embedlineno = n->type->embedlineno; l = n->type->copyto; *n->type = *t; t = n->type; t->sym = n->sym; t->local = n->local; t->vargen = n->vargen; t->siggen = 0; t->method = nil; t->xmethod = nil; t->nod = N; t->printed = 0; t->deferwidth = 0; t->copyto = nil; // Update nodes waiting on this type. for(; l; l=l->next) copytype(l->n, t); // Double-check use of type as embedded type. lno = lineno; if(embedlineno) { lineno = embedlineno; if(isptr[t->etype]) yyerror("embedded type cannot be a pointer"); } lineno = lno; // Queue check for map until all the types are done settling. if(maplineno) { t->maplineno = maplineno; mapqueue = list(mapqueue, n); } } static void typecheckdeftype(Node *n) { int lno; Type *t; NodeList *l; ntypecheckdeftype++; lno = lineno; setlineno(n); n->type->sym = n->sym; n->typecheck = 1; typecheck(&n->ntype, Etype); if((t = n->ntype->type) == T) { n->diag = 1; n->type = T; goto ret; } if(n->type == T) { n->diag = 1; goto ret; } // copy new type and clear fields // that don't come along. // anything zeroed here must be zeroed in // typedcl2 too. copytype(n, t); ret: lineno = lno; // if there are no type definitions going on, it's safe to // try to resolve the method types for the interfaces // we just read. if(ntypecheckdeftype == 1) { while((l = methodqueue) != nil) { methodqueue = nil; for(; l; l=l->next) domethod(l->n); } for(l=mapqueue; l; l=l->next) { lineno = l->n->type->maplineno; maptype(l->n->type, types[TBOOL]); } lineno = lno; } ntypecheckdeftype--; } void queuemethod(Node *n) { if(ntypecheckdeftype == 0) { domethod(n); return; } methodqueue = list(methodqueue, n); } Node* typecheckdef(Node *n) { int lno, nerrors0; Node *e; Type *t; NodeList *l; lno = lineno; setlineno(n); if(n->op == ONONAME) { if(!n->diag) { n->diag = 1; if(n->lineno != 0) lineno = n->lineno; yyerror("undefined: %S", n->sym); } return n; } if(n->walkdef == 1) return n; l = mal(sizeof *l); l->n = n; l->next = typecheckdefstack; typecheckdefstack = l; if(n->walkdef == 2) { flusherrors(); print("typecheckdef loop:"); for(l=typecheckdefstack; l; l=l->next) print(" %S", l->n->sym); print("\n"); fatal("typecheckdef loop"); } n->walkdef = 2; if(n->type != T || n->sym == S) // builtin or no name goto ret; switch(n->op) { default: fatal("typecheckdef %O", n->op); case OGOTO: case OLABEL: // not really syms break; case OLITERAL: if(n->ntype != N) { typecheck(&n->ntype, Etype); n->type = n->ntype->type; n->ntype = N; if(n->type == T) { n->diag = 1; goto ret; } } e = n->defn; n->defn = N; if(e == N) { lineno = n->lineno; dump("typecheckdef nil defn", n); yyerror("xxx"); } typecheck(&e, Erv | Eiota); if(isconst(e, CTNIL)) { yyerror("const initializer cannot be nil"); goto ret; } if(e->type != T && e->op != OLITERAL || !isgoconst(e)) { if(!e->diag) { yyerror("const initializer %N is not a constant", e); e->diag = 1; } goto ret; } t = n->type; if(t != T) { if(!okforconst[t->etype]) { yyerror("invalid constant type %T", t); goto ret; } if(!isideal(e->type) && !eqtype(t, e->type)) { yyerror("cannot use %lN as type %T in const initializer", e, t); goto ret; } convlit(&e, t); } n->val = e->val; n->type = e->type; break; case ONAME: if(n->ntype != N) { typecheck(&n->ntype, Etype); n->type = n->ntype->type; if(n->type == T) { n->diag = 1; goto ret; } } if(n->type != T) break; if(n->defn == N) { if(n->etype != 0) // like OPRINTN break; if(nsavederrors+nerrors > 0) { // Can have undefined variables in x := foo // that make x have an n->ndefn == nil. // If there are other errors anyway, don't // bother adding to the noise. break; } fatal("var without type, init: %S", n->sym); } if(n->defn->op == ONAME) { typecheck(&n->defn, Erv); n->type = n->defn->type; break; } typecheck(&n->defn, Etop); // fills in n->type break; case OTYPE: if(curfn) defercheckwidth(); n->walkdef = 1; n->type = typ(TFORW); n->type->sym = n->sym; nerrors0 = nerrors; typecheckdeftype(n); if(n->type->etype == TFORW && nerrors > nerrors0) { // Something went wrong during type-checking, // but it was reported. Silence future errors. n->type->broke = 1; } if(curfn) resumecheckwidth(); break; case OPACK: // nothing to see here break; } ret: if(n->op != OLITERAL && n->type != T && isideal(n->type)) fatal("got %T for %N", n->type, n); if(typecheckdefstack->n != n) fatal("typecheckdefstack mismatch"); l = typecheckdefstack; typecheckdefstack = l->next; lineno = lno; n->walkdef = 1; return n; } static int checkmake(Type *t, char *arg, Node *n) { if(n->op == OLITERAL) { switch(n->val.ctype) { case CTINT: case CTRUNE: case CTFLT: case CTCPLX: n->val = toint(n->val); if(mpcmpfixc(n->val.u.xval, 0) < 0) { yyerror("negative %s argument in make(%T)", arg, t); return -1; } if(mpcmpfixfix(n->val.u.xval, maxintval[TINT]) > 0) { yyerror("%s argument too large in make(%T)", arg, t); return -1; } // Delay defaultlit until after we've checked range, to avoid // a redundant "constant NNN overflows int" error. defaultlit(&n, types[TINT]); return 0; default: break; } } if(!isint[n->type->etype] && n->type->etype != TIDEAL) { yyerror("non-integer %s argument in make(%T) - %T", arg, t, n->type); return -1; } // Defaultlit still necessary for non-constant: n might be 1<op) { case OBREAK: if(n->left == N) { if(implicit) implicit->hasbreak = 1; } else { lab = n->left->sym->label; if(lab != L) lab->def->hasbreak = 1; } break; case OFOR: case OSWITCH: case OTYPESW: case OSELECT: case ORANGE: implicit = n; // fall through default: markbreak(n->left, implicit); markbreak(n->right, implicit); markbreak(n->ntest, implicit); markbreak(n->nincr, implicit); markbreaklist(n->ninit, implicit); markbreaklist(n->nbody, implicit); markbreaklist(n->nelse, implicit); markbreaklist(n->list, implicit); markbreaklist(n->rlist, implicit); break; } } static void markbreaklist(NodeList *l, Node *implicit) { Node *n; Label *lab; for(; l; l=l->next) { n = l->n; if(n->op == OLABEL && l->next && n->defn == l->next->n) { switch(n->defn->op) { case OFOR: case OSWITCH: case OTYPESW: case OSELECT: case ORANGE: lab = mal(sizeof *lab); lab->def = n->defn; n->left->sym->label = lab; markbreak(n->defn, n->defn); n->left->sym->label = L; l = l->next; continue; } } markbreak(n, implicit); } } static int isterminating(NodeList *l, int top) { int def; Node *n; if(l == nil) return 0; if(top) { while(l->next && l->n->op != OLABEL) l = l->next; markbreaklist(l, nil); } while(l->next) l = l->next; n = l->n; if(n == N) return 0; switch(n->op) { // NOTE: OLABEL is treated as a separate statement, // not a separate prefix, so skipping to the last statement // in the block handles the labeled statement case by // skipping over the label. No case OLABEL here. case OBLOCK: return isterminating(n->list, 0); case OGOTO: case ORETURN: case ORETJMP: case OPANIC: case OXFALL: return 1; case OFOR: if(n->ntest != N) return 0; if(n->hasbreak) return 0; return 1; case OIF: return isterminating(n->nbody, 0) && isterminating(n->nelse, 0); case OSWITCH: case OTYPESW: case OSELECT: if(n->hasbreak) return 0; def = 0; for(l=n->list; l; l=l->next) { if(!isterminating(l->n->nbody, 0)) return 0; if(l->n->list == nil) // default def = 1; } if(n->op != OSELECT && !def) return 0; return 1; } return 0; } void checkreturn(Node *fn) { if(fn->type->outtuple && fn->nbody != nil) if(!isterminating(fn->nbody, 1)) yyerrorl(fn->endlineno, "missing return at end of function"); } go/src/cmd/gc/unsafe.c0100644000000000000000000000562012412656734015047 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" /* * look for * unsafe.Sizeof * unsafe.Offsetof * unsafe.Alignof * rewrite with a constant */ Node* unsafenmagic(Node *nn) { Node *r, *n, *base, *r1; Sym *s; Type *t, *tr; vlong v; Val val; Node *fn; NodeList *args; fn = nn->left; args = nn->list; if(safemode || fn == N || fn->op != ONAME || (s = fn->sym) == S) goto no; if(s->pkg != unsafepkg) goto no; if(args == nil) { yyerror("missing argument for %S", s); goto no; } r = args->n; if(strcmp(s->name, "Sizeof") == 0) { typecheck(&r, Erv); defaultlit(&r, T); tr = r->type; if(tr == T) goto bad; dowidth(tr); v = tr->width; goto yes; } if(strcmp(s->name, "Offsetof") == 0) { // must be a selector. if(r->op != OXDOT) goto bad; // Remember base of selector to find it back after dot insertion. // Since r->left may be mutated by typechecking, check it explicitly // first to track it correctly. typecheck(&r->left, Erv); base = r->left; typecheck(&r, Erv); switch(r->op) { case ODOT: case ODOTPTR: break; case OCALLPART: yyerror("invalid expression %N: argument is a method value", nn); v = 0; goto ret; default: goto bad; } v = 0; // add offsets for inserted dots. for(r1=r; r1->left!=base; r1=r1->left) { switch(r1->op) { case ODOT: v += r1->xoffset; break; case ODOTPTR: yyerror("invalid expression %N: selector implies indirection of embedded %N", nn, r1->left); goto ret; default: dump("unsafenmagic", r); fatal("impossible %#O node after dot insertion", r1->op); goto bad; } } v += r1->xoffset; goto yes; } if(strcmp(s->name, "Alignof") == 0) { typecheck(&r, Erv); defaultlit(&r, T); tr = r->type; if(tr == T) goto bad; // make struct { byte; T; } t = typ(TSTRUCT); t->type = typ(TFIELD); t->type->type = types[TUINT8]; t->type->down = typ(TFIELD); t->type->down->type = tr; // compute struct widths dowidth(t); // the offset of T is its required alignment v = t->type->down->width; goto yes; } no: return N; bad: yyerror("invalid expression %N", nn); v = 0; goto ret; yes: if(args->next != nil) yyerror("extra arguments for %S", s); ret: // any side effects disappear; ignore init val.ctype = CTINT; val.u.xval = mal(sizeof(*n->val.u.xval)); mpmovecfix(val.u.xval, v); n = nod(OLITERAL, N, N); n->orig = nn; n->val = val; n->type = types[TUINTPTR]; nn->type = types[TUINTPTR]; return n; } int isunsafebuiltin(Node *n) { if(n == N || n->op != ONAME || n->sym == S || n->sym->pkg != unsafepkg) return 0; if(strcmp(n->sym->name, "Sizeof") == 0) return 1; if(strcmp(n->sym->name, "Offsetof") == 0) return 1; if(strcmp(n->sym->name, "Alignof") == 0) return 1; return 0; } go/src/cmd/gc/unsafe.go0100644000000000000000000000106012412656734015224 0ustar00rootroot00000000000000// Copyright 2009 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. // NOTE: If you change this file you must run "./mkbuiltin" // to update builtin.c.boot. This is not done automatically // to avoid depending on having a working compiler binary. // +build ignore package PACKAGE type Pointer uintptr // not really; filled in by compiler // return types here are ignored; see unsafe.c func Offsetof(any) uintptr func Sizeof(any) uintptr func Alignof(any) uintptr go/src/cmd/gc/walk.c0100644000000000000000000024163012412656737014532 0ustar00rootroot00000000000000// Copyright 2009 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. #include #include #include "go.h" static Node* walkprint(Node*, NodeList**, int); static Node* mapfn(char*, Type*); static Node* mapfndel(char*, Type*); static Node* ascompatee1(int, Node*, Node*, NodeList**); static NodeList* ascompatee(int, NodeList*, NodeList*, NodeList**); static NodeList* ascompatet(int, NodeList*, Type**, int, NodeList**); static NodeList* ascompatte(int, Node*, int, Type**, NodeList*, int, NodeList**); static Node* convas(Node*, NodeList**); static void heapmoves(void); static NodeList* paramstoheap(Type **argin, int out); static NodeList* reorder1(NodeList*); static NodeList* reorder3(NodeList*); static Node* addstr(Node*, NodeList**); static Node* appendslice(Node*, NodeList**); static Node* append(Node*, NodeList**); static Node* copyany(Node*, NodeList**, int); static Node* sliceany(Node*, NodeList**); static void walkcompare(Node**, NodeList**); static void walkrotate(Node**); static void walkmul(Node**, NodeList**); static void walkdiv(Node**, NodeList**); static int bounded(Node*, int64); static Mpint mpzero; void walk(Node *fn) { char s[50]; NodeList *l; int lno; curfn = fn; if(debug['W']) { snprint(s, sizeof(s), "\nbefore %S", curfn->nname->sym); dumplist(s, curfn->nbody); } lno = lineno; // Final typecheck for any unused variables. // It's hard to be on the heap when not-used, but best to be consistent about &~PHEAP here and below. for(l=fn->dcl; l; l=l->next) if(l->n->op == ONAME && (l->n->class&~PHEAP) == PAUTO) typecheck(&l->n, Erv | Easgn); // Propagate the used flag for typeswitch variables up to the NONAME in it's definition. for(l=fn->dcl; l; l=l->next) if(l->n->op == ONAME && (l->n->class&~PHEAP) == PAUTO && l->n->defn && l->n->defn->op == OTYPESW && l->n->used) l->n->defn->left->used++; for(l=fn->dcl; l; l=l->next) { if(l->n->op != ONAME || (l->n->class&~PHEAP) != PAUTO || l->n->sym->name[0] == '&' || l->n->used) continue; if(l->n->defn && l->n->defn->op == OTYPESW) { if(l->n->defn->left->used) continue; lineno = l->n->defn->left->lineno; yyerror("%S declared and not used", l->n->sym); l->n->defn->left->used = 1; // suppress repeats } else { lineno = l->n->lineno; yyerror("%S declared and not used", l->n->sym); } } lineno = lno; if(nerrors != 0) return; walkstmtlist(curfn->nbody); if(debug['W']) { snprint(s, sizeof(s), "after walk %S", curfn->nname->sym); dumplist(s, curfn->nbody); } heapmoves(); if(debug['W'] && curfn->enter != nil) { snprint(s, sizeof(s), "enter %S", curfn->nname->sym); dumplist(s, curfn->enter); } } void walkstmtlist(NodeList *l) { for(; l; l=l->next) walkstmt(&l->n); } static int samelist(NodeList *a, NodeList *b) { for(; a && b; a=a->next, b=b->next) if(a->n != b->n) return 0; return a == b; } static int paramoutheap(Node *fn) { NodeList *l; for(l=fn->dcl; l; l=l->next) { switch(l->n->class) { case PPARAMOUT: case PPARAMOUT|PHEAP: return l->n->addrtaken; case PAUTO: case PAUTO|PHEAP: // stop early - parameters are over return 0; } } return 0; } void walkstmt(Node **np) { NodeList *init; NodeList *ll, *rl; int cl; Node *n, *f; n = *np; if(n == N) return; setlineno(n); walkstmtlist(n->ninit); switch(n->op) { default: if(n->op == ONAME) yyerror("%S is not a top level statement", n->sym); else yyerror("%O is not a top level statement", n->op); dump("nottop", n); break; case OAS: case OASOP: case OAS2: case OAS2DOTTYPE: case OAS2RECV: case OAS2FUNC: case OAS2MAPR: case OCLOSE: case OCOPY: case OCALLMETH: case OCALLINTER: case OCALL: case OCALLFUNC: case ODELETE: case OSEND: case OPRINT: case OPRINTN: case OPANIC: case OEMPTY: case ORECOVER: if(n->typecheck == 0) fatal("missing typecheck: %+N", n); init = n->ninit; n->ninit = nil; walkexpr(&n, &init); addinit(&n, init); if((*np)->op == OCOPY && n->op == OCONVNOP) n->op = OEMPTY; // don't leave plain values as statements. break; case ORECV: // special case for a receive where we throw away // the value received. if(n->typecheck == 0) fatal("missing typecheck: %+N", n); init = n->ninit; n->ninit = nil; walkexpr(&n->left, &init); n = mkcall1(chanfn("chanrecv1", 2, n->left->type), T, &init, typename(n->left->type), n->left, nodnil()); walkexpr(&n, &init); addinit(&n, init); break; case OBREAK: case ODCL: case OCONTINUE: case OFALL: case OGOTO: case OLABEL: case ODCLCONST: case ODCLTYPE: case OCHECKNIL: case OVARKILL: break; case OBLOCK: walkstmtlist(n->list); break; case OXCASE: yyerror("case statement out of place"); n->op = OCASE; case OCASE: walkstmt(&n->right); break; case ODEFER: hasdefer = 1; switch(n->left->op) { case OPRINT: case OPRINTN: walkexprlist(n->left->list, &n->ninit); n->left = walkprint(n->left, &n->ninit, 1); break; case OCOPY: n->left = copyany(n->left, &n->ninit, 1); break; default: walkexpr(&n->left, &n->ninit); break; } break; case OFOR: if(n->ntest != N) { walkstmtlist(n->ntest->ninit); init = n->ntest->ninit; n->ntest->ninit = nil; walkexpr(&n->ntest, &init); addinit(&n->ntest, init); } walkstmt(&n->nincr); walkstmtlist(n->nbody); break; case OIF: walkexpr(&n->ntest, &n->ninit); walkstmtlist(n->nbody); walkstmtlist(n->nelse); break; case OPROC: switch(n->left->op) { case OPRINT: case OPRINTN: walkexprlist(n->left->list, &n->ninit); n->left = walkprint(n->left, &n->ninit, 1); break; case OCOPY: n->left = copyany(n->left, &n->ninit, 1); break; default: walkexpr(&n->left, &n->ninit); break; } break; case ORETURN: walkexprlist(n->list, &n->ninit); if(n->list == nil) break; if((curfn->type->outnamed && count(n->list) > 1) || paramoutheap(curfn)) { // assign to the function out parameters, // so that reorder3 can fix up conflicts rl = nil; for(ll=curfn->dcl; ll != nil; ll=ll->next) { cl = ll->n->class & ~PHEAP; if(cl == PAUTO) break; if(cl == PPARAMOUT) rl = list(rl, ll->n); } if(samelist(rl, n->list)) { // special return in disguise n->list = nil; break; } if(count(n->list) == 1 && count(rl) > 1) { // OAS2FUNC in disguise f = n->list->n; if(f->op != OCALLFUNC && f->op != OCALLMETH && f->op != OCALLINTER) fatal("expected return of call, have %N", f); n->list = concat(list1(f), ascompatet(n->op, rl, &f->type, 0, &n->ninit)); break; } // move function calls out, to make reorder3's job easier. walkexprlistsafe(n->list, &n->ninit); ll = ascompatee(n->op, rl, n->list, &n->ninit); n->list = reorder3(ll); break; } ll = ascompatte(n->op, nil, 0, getoutarg(curfn->type), n->list, 1, &n->ninit); n->list = ll; break; case ORETJMP: break; case OSELECT: walkselect(n); break; case OSWITCH: walkswitch(n); break; case ORANGE: walkrange(n); break; case OXFALL: yyerror("fallthrough statement out of place"); n->op = OFALL; break; } if(n->op == ONAME) fatal("walkstmt ended up with name: %+N", n); *np = n; } /* * walk the whole tree of the body of an * expression or simple statement. * the types expressions are calculated. * compile-time constants are evaluated. * complex side effects like statements are appended to init */ void walkexprlist(NodeList *l, NodeList **init) { for(; l; l=l->next) walkexpr(&l->n, init); } void walkexprlistsafe(NodeList *l, NodeList **init) { for(; l; l=l->next) { l->n = safeexpr(l->n, init); walkexpr(&l->n, init); } } void walkexpr(Node **np, NodeList **init) { Node *r, *l, *var, *a; Node *map, *key; NodeList *ll, *lr; Type *t; int et, old_safemode; int64 v; int32 lno; Node *n, *fn, *n1, *n2; Sym *sym; char buf[100], *p; n = *np; if(n == N) return; if(init == &n->ninit) { // not okay to use n->ninit when walking n, // because we might replace n with some other node // and would lose the init list. fatal("walkexpr init == &n->ninit"); } if(n->ninit != nil) { walkstmtlist(n->ninit); *init = concat(*init, n->ninit); n->ninit = nil; } // annoying case - not typechecked if(n->op == OKEY) { walkexpr(&n->left, init); walkexpr(&n->right, init); return; } lno = setlineno(n); if(debug['w'] > 1) dump("walk-before", n); if(n->typecheck != 1) fatal("missed typecheck: %+N\n", n); switch(n->op) { default: dump("walk", n); fatal("walkexpr: switch 1 unknown op %+hN", n); break; case OTYPE: case ONONAME: case OINDREG: case OEMPTY: goto ret; case ONOT: case OMINUS: case OPLUS: case OCOM: case OREAL: case OIMAG: case ODOTMETH: case ODOTINTER: walkexpr(&n->left, init); goto ret; case OIND: walkexpr(&n->left, init); goto ret; case ODOT: usefield(n); walkexpr(&n->left, init); goto ret; case ODOTPTR: usefield(n); if(n->op == ODOTPTR && n->left->type->type->width == 0) { // No actual copy will be generated, so emit an explicit nil check. n->left = cheapexpr(n->left, init); checknil(n->left, init); } walkexpr(&n->left, init); goto ret; case OEFACE: walkexpr(&n->left, init); walkexpr(&n->right, init); goto ret; case OSPTR: case OITAB: walkexpr(&n->left, init); goto ret; case OLEN: case OCAP: walkexpr(&n->left, init); // replace len(*[10]int) with 10. // delayed until now to preserve side effects. t = n->left->type; if(isptr[t->etype]) t = t->type; if(isfixedarray(t)) { safeexpr(n->left, init); nodconst(n, n->type, t->bound); n->typecheck = 1; } goto ret; case OLSH: case ORSH: walkexpr(&n->left, init); walkexpr(&n->right, init); t = n->left->type; n->bounded = bounded(n->right, 8*t->width); if(debug['m'] && n->etype && !isconst(n->right, CTINT)) warn("shift bounds check elided"); goto ret; case OAND: case OSUB: case OHMUL: case OLT: case OLE: case OGE: case OGT: case OADD: case OCOMPLEX: case OLROT: // Use results from call expression as arguments for complex. if(n->op == OCOMPLEX && n->left == N && n->right == N) { n->left = n->list->n; n->right = n->list->next->n; } walkexpr(&n->left, init); walkexpr(&n->right, init); goto ret; case OOR: case OXOR: walkexpr(&n->left, init); walkexpr(&n->right, init); walkrotate(&n); goto ret; case OEQ: case ONE: walkexpr(&n->left, init); walkexpr(&n->right, init); // Disable safemode while compiling this code: the code we // generate internally can refer to unsafe.Pointer. // In this case it can happen if we need to generate an == // for a struct containing a reflect.Value, which itself has // an unexported field of type unsafe.Pointer. old_safemode = safemode; safemode = 0; walkcompare(&n, init); safemode = old_safemode; goto ret; case OANDAND: case OOROR: walkexpr(&n->left, init); // cannot put side effects from n->right on init, // because they cannot run before n->left is checked. // save elsewhere and store on the eventual n->right. ll = nil; walkexpr(&n->right, &ll); addinit(&n->right, ll); goto ret; case OPRINT: case OPRINTN: walkexprlist(n->list, init); n = walkprint(n, init, 0); goto ret; case OPANIC: n = mkcall("panic", T, init, n->left); goto ret; case ORECOVER: n = mkcall("recover", n->type, init, nod(OADDR, nodfp, N)); goto ret; case OLITERAL: n->addable = 1; goto ret; case OCLOSUREVAR: case OCFUNC: n->addable = 1; goto ret; case ONAME: if(!(n->class & PHEAP) && n->class != PPARAMREF) n->addable = 1; goto ret; case OCALLINTER: t = n->left->type; if(n->list && n->list->n->op == OAS) goto ret; walkexpr(&n->left, init); walkexprlist(n->list, init); ll = ascompatte(n->op, n, n->isddd, getinarg(t), n->list, 0, init); n->list = reorder1(ll); goto ret; case OCALLFUNC: t = n->left->type; if(n->list && n->list->n->op == OAS) goto ret; walkexpr(&n->left, init); walkexprlist(n->list, init); ll = ascompatte(n->op, n, n->isddd, getinarg(t), n->list, 0, init); n->list = reorder1(ll); goto ret; case OCALLMETH: t = n->left->type; if(n->list && n->list->n->op == OAS) goto ret; walkexpr(&n->left, init); walkexprlist(n->list, init); ll = ascompatte(n->op, n, 0, getthis(t), list1(n->left->left), 0, init); lr = ascompatte(n->op, n, n->isddd, getinarg(t), n->list, 0, init); ll = concat(ll, lr); n->left->left = N; ullmancalc(n->left); n->list = reorder1(ll); goto ret; case OAS: *init = concat(*init, n->ninit); n->ninit = nil; walkexpr(&n->left, init); n->left = safeexpr(n->left, init); if(oaslit(n, init)) goto ret; if(n->right == N) goto ret; switch(n->right->op) { default: walkexpr(&n->right, init); break; case ORECV: // x = <-c; n->left is x, n->right->left is c. // orderstmt made sure x is addressable. walkexpr(&n->right->left, init); n1 = nod(OADDR, n->left, N); r = n->right->left; // the channel n = mkcall1(chanfn("chanrecv1", 2, r->type), T, init, typename(r->type), r, n1); walkexpr(&n, init); goto ret; } if(n->left != N && n->right != N) { r = convas(nod(OAS, n->left, n->right), init); r->dodata = n->dodata; n = r; } goto ret; case OAS2: *init = concat(*init, n->ninit); n->ninit = nil; walkexprlistsafe(n->list, init); walkexprlistsafe(n->rlist, init); ll = ascompatee(OAS, n->list, n->rlist, init); ll = reorder3(ll); n = liststmt(ll); goto ret; case OAS2FUNC: // a,b,... = fn() *init = concat(*init, n->ninit); n->ninit = nil; r = n->rlist->n; walkexprlistsafe(n->list, init); walkexpr(&r, init); ll = ascompatet(n->op, n->list, &r->type, 0, init); n = liststmt(concat(list1(r), ll)); goto ret; case OAS2RECV: // x, y = <-c // orderstmt made sure x is addressable. *init = concat(*init, n->ninit); n->ninit = nil; r = n->rlist->n; walkexprlistsafe(n->list, init); walkexpr(&r->left, init); if(isblank(n->list->n)) n1 = nodnil(); else n1 = nod(OADDR, n->list->n, N); n1->etype = 1; // addr does not escape fn = chanfn("chanrecv2", 2, r->left->type); r = mkcall1(fn, types[TBOOL], init, typename(r->left->type), r->left, n1); n = nod(OAS, n->list->next->n, r); typecheck(&n, Etop); goto ret; case OAS2MAPR: // a,b = m[i]; *init = concat(*init, n->ninit); n->ninit = nil; r = n->rlist->n; walkexprlistsafe(n->list, init); walkexpr(&r->left, init); walkexpr(&r->right, init); t = r->left->type; p = nil; if(t->type->width <= 128) { // Check ../../pkg/runtime/hashmap.c:MAXVALUESIZE before changing. switch(simsimtype(t->down)) { case TINT32: case TUINT32: p = "mapaccess2_fast32"; break; case TINT64: case TUINT64: p = "mapaccess2_fast64"; break; case TSTRING: p = "mapaccess2_faststr"; break; } } if(p != nil) { // fast versions take key by value key = r->right; } else { // standard version takes key by reference // orderexpr made sure key is addressable. key = nod(OADDR, r->right, N); p = "mapaccess2"; } // from: // a,b = m[i] // to: // var,b = mapaccess2*(t, m, i) // a = *var a = n->list->n; var = temp(ptrto(t->type)); var->typecheck = 1; fn = mapfn(p, t); r = mkcall1(fn, getoutargx(fn->type), init, typename(t), r->left, key); n->rlist = list1(r); n->op = OAS2FUNC; n->list->n = var; walkexpr(&n, init); *init = list(*init, n); n = nod(OAS, a, nod(OIND, var, N)); typecheck(&n, Etop); walkexpr(&n, init); // mapaccess needs a zero value to be at least this big. if(zerosize < t->type->width) zerosize = t->type->width; // TODO: ptr is always non-nil, so disable nil check for this OIND op. goto ret; case ODELETE: *init = concat(*init, n->ninit); n->ninit = nil; map = n->list->n; key = n->list->next->n; walkexpr(&map, init); walkexpr(&key, init); // orderstmt made sure key is addressable. key = nod(OADDR, key, N); t = map->type; n = mkcall1(mapfndel("mapdelete", t), T, init, typename(t), map, key); goto ret; case OAS2DOTTYPE: // a,b = i.(T) *init = concat(*init, n->ninit); n->ninit = nil; r = n->rlist->n; walkexprlistsafe(n->list, init); if(isblank(n->list->n) && !isinter(r->type)) { strcpy(buf, "assert"); p = buf+strlen(buf); if(isnilinter(r->left->type)) *p++ = 'E'; else *p++ = 'I'; *p++ = '2'; *p++ = 'T'; *p++ = 'O'; *p++ = 'K'; *p = '\0'; fn = syslook(buf, 1); ll = list1(typename(r->type)); ll = list(ll, r->left); argtype(fn, r->left->type); n1 = nod(OCALL, fn, N); n1->list = ll; n = nod(OAS, n->list->next->n, n1); typecheck(&n, Etop); walkexpr(&n, init); goto ret; } r->op = ODOTTYPE2; walkexpr(&r, init); ll = ascompatet(n->op, n->list, &r->type, 0, init); n = liststmt(concat(list1(r), ll)); goto ret; case ODOTTYPE: case ODOTTYPE2: // Build name of function: assertI2E2 etc. strcpy(buf, "assert"); p = buf+strlen(buf); if(isnilinter(n->left->type)) *p++ = 'E'; else *p++ = 'I'; *p++ = '2'; if(isnilinter(n->type)) *p++ = 'E'; else if(isinter(n->type)) *p++ = 'I'; else *p++ = 'T'; if(n->op == ODOTTYPE2) *p++ = '2'; *p = '\0'; fn = syslook(buf, 1); ll = list1(typename(n->type)); ll = list(ll, n->left); argtype(fn, n->left->type); argtype(fn, n->type); n = nod(OCALL, fn, N); n->list = ll; typecheck(&n, Erv | Efnstruct); walkexpr(&n, init); goto ret; case OCONVIFACE: walkexpr(&n->left, init); // Optimize convT2E as a two-word copy when T is uintptr-shaped. if(!isinter(n->left->type) && isnilinter(n->type) && (n->left->type->width == widthptr) && isint[simsimtype(n->left->type)]) { l = nod(OEFACE, typename(n->left->type), n->left); l->type = n->type; l->typecheck = n->typecheck; n = l; goto ret; } // Build name of function: convI2E etc. // Not all names are possible // (e.g., we'll never generate convE2E or convE2I). strcpy(buf, "conv"); p = buf+strlen(buf); if(isnilinter(n->left->type)) *p++ = 'E'; else if(isinter(n->left->type)) *p++ = 'I'; else *p++ = 'T'; *p++ = '2'; if(isnilinter(n->type)) *p++ = 'E'; else *p++ = 'I'; *p = '\0'; fn = syslook(buf, 1); ll = nil; if(!isinter(n->left->type)) ll = list(ll, typename(n->left->type)); if(!isnilinter(n->type)) ll = list(ll, typename(n->type)); if(!isinter(n->left->type) && !isnilinter(n->type)){ sym = pkglookup(smprint("%-T.%-T", n->left->type, n->type), itabpkg); if(sym->def == N) { l = nod(ONAME, N, N); l->sym = sym; l->type = ptrto(types[TUINT8]); l->addable = 1; l->class = PEXTERN; l->xoffset = 0; sym->def = l; ggloblsym(sym, widthptr, 1, 0); } l = nod(OADDR, sym->def, N); l->addable = 1; ll = list(ll, l); if(n->left->type->width == widthptr && isint[simsimtype(n->left->type)]) { /* For pointer types, we can make a special form of optimization * * These statements are put onto the expression init list: * Itab *tab = atomicloadtype(&cache); * if(tab == nil) * tab = typ2Itab(type, itype, &cache); * * The CONVIFACE expression is replaced with this: * OEFACE{tab, ptr}; */ l = temp(ptrto(types[TUINT8])); n1 = nod(OAS, l, sym->def); typecheck(&n1, Etop); *init = list(*init, n1); fn = syslook("typ2Itab", 1); n1 = nod(OCALL, fn, N); n1->list = ll; typecheck(&n1, Erv); walkexpr(&n1, init); n2 = nod(OIF, N, N); n2->ntest = nod(OEQ, l, nodnil()); n2->nbody = list1(nod(OAS, l, n1)); n2->likely = -1; typecheck(&n2, Etop); *init = list(*init, n2); l = nod(OEFACE, l, n->left); l->typecheck = n->typecheck; l->type = n->type; n = l; goto ret; } } if(isinter(n->left->type)) { ll = list(ll, n->left); } else { // regular types are passed by reference to avoid C vararg calls // orderexpr arranged for n->left to be a temporary for all // the conversions it could see. comparison of an interface // with a non-interface, especially in a switch on interface value // with non-interface cases, is not visible to orderstmt, so we // have to fall back on allocating a temp here. if(islvalue(n->left)) ll = list(ll, nod(OADDR, n->left, N)); else ll = list(ll, nod(OADDR, copyexpr(n->left, n->left->type, init), N)); } argtype(fn, n->left->type); argtype(fn, n->type); dowidth(fn->type); n = nod(OCALL, fn, N); n->list = ll; typecheck(&n, Erv); walkexpr(&n, init); goto ret; case OCONV: case OCONVNOP: if(thechar == '5') { if(isfloat[n->left->type->etype]) { if(n->type->etype == TINT64) { n = mkcall("float64toint64", n->type, init, conv(n->left, types[TFLOAT64])); goto ret; } if(n->type->etype == TUINT64) { n = mkcall("float64touint64", n->type, init, conv(n->left, types[TFLOAT64])); goto ret; } } if(isfloat[n->type->etype]) { if(n->left->type->etype == TINT64) { n = mkcall("int64tofloat64", n->type, init, conv(n->left, types[TINT64])); goto ret; } if(n->left->type->etype == TUINT64) { n = mkcall("uint64tofloat64", n->type, init, conv(n->left, types[TUINT64])); goto ret; } } } walkexpr(&n->left, init); goto ret; case OANDNOT: walkexpr(&n->left, init); n->op = OAND; n->right = nod(OCOM, n->right, N); typecheck(&n->right, Erv); walkexpr(&n->right, init); goto ret; case OMUL: walkexpr(&n->left, init); walkexpr(&n->right, init); walkmul(&n, init); goto ret; case ODIV: case OMOD: walkexpr(&n->left, init); walkexpr(&n->right, init); /* * rewrite complex div into function call. */ et = n->left->type->etype; if(iscomplex[et] && n->op == ODIV) { t = n->type; n = mkcall("complex128div", types[TCOMPLEX128], init, conv(n->left, types[TCOMPLEX128]), conv(n->right, types[TCOMPLEX128])); n = conv(n, t); goto ret; } // Nothing to do for float divisions. if(isfloat[et]) goto ret; // Try rewriting as shifts or magic multiplies. walkdiv(&n, init); /* * rewrite 64-bit div and mod into function calls * on 32-bit architectures. */ switch(n->op) { case OMOD: case ODIV: if(widthreg >= 8 || (et != TUINT64 && et != TINT64)) goto ret; if(et == TINT64) strcpy(namebuf, "int64"); else strcpy(namebuf, "uint64"); if(n->op == ODIV) strcat(namebuf, "div"); else strcat(namebuf, "mod"); n = mkcall(namebuf, n->type, init, conv(n->left, types[et]), conv(n->right, types[et])); break; default: break; } goto ret; case OINDEX: walkexpr(&n->left, init); // save the original node for bounds checking elision. // If it was a ODIV/OMOD walk might rewrite it. r = n->right; walkexpr(&n->right, init); // if range of type cannot exceed static array bound, // disable bounds check. if(n->bounded) goto ret; t = n->left->type; if(t != T && isptr[t->etype]) t = t->type; if(isfixedarray(t)) { n->bounded = bounded(r, t->bound); if(debug['m'] && n->bounded && !isconst(n->right, CTINT)) warn("index bounds check elided"); if(smallintconst(n->right) && !n->bounded) yyerror("index out of bounds"); } else if(isconst(n->left, CTSTR)) { n->bounded = bounded(r, n->left->val.u.sval->len); if(debug['m'] && n->bounded && !isconst(n->right, CTINT)) warn("index bounds check elided"); if(smallintconst(n->right)) { if(!n->bounded) yyerror("index out of bounds"); else { // replace "abc"[1] with 'b'. // delayed until now because "abc"[1] is not // an ideal constant. v = mpgetfix(n->right->val.u.xval); nodconst(n, n->type, n->left->val.u.sval->s[v]); n->typecheck = 1; } } } if(isconst(n->right, CTINT)) if(mpcmpfixfix(n->right->val.u.xval, &mpzero) < 0 || mpcmpfixfix(n->right->val.u.xval, maxintval[TINT]) > 0) yyerror("index out of bounds"); goto ret; case OINDEXMAP: if(n->etype == 1) goto ret; walkexpr(&n->left, init); walkexpr(&n->right, init); t = n->left->type; p = nil; if(t->type->width <= 128) { // Check ../../pkg/runtime/hashmap.c:MAXVALUESIZE before changing. switch(simsimtype(t->down)) { case TINT32: case TUINT32: p = "mapaccess1_fast32"; break; case TINT64: case TUINT64: p = "mapaccess1_fast64"; break; case TSTRING: p = "mapaccess1_faststr"; break; } } if(p != nil) { // fast versions take key by value key = n->right; } else { // standard version takes key by reference. // orderexpr made sure key is addressable. key = nod(OADDR, n->right, N); p = "mapaccess1"; } n = mkcall1(mapfn(p, t), ptrto(t->type), init, typename(t), n->left, key); n = nod(OIND, n, N); n->type = t->type; n->typecheck = 1; // mapaccess needs a zero value to be at least this big. if(zerosize < t->type->width) zerosize = t->type->width; goto ret; case ORECV: fatal("walkexpr ORECV"); // should see inside OAS only case OSLICE: if(n->right != N && n->right->left == N && n->right->right == N) { // noop walkexpr(&n->left, init); n = n->left; goto ret; } // fallthrough case OSLICEARR: case OSLICESTR: if(n->right == N) // already processed goto ret; walkexpr(&n->left, init); // cgen_slice can't handle string literals as source // TODO the OINDEX case is a bug elsewhere that needs to be traced. it causes a crash on ([2][]int{ ... })[1][lo:hi] if((n->op == OSLICESTR && n->left->op == OLITERAL) || (n->left->op == OINDEX)) n->left = copyexpr(n->left, n->left->type, init); else n->left = safeexpr(n->left, init); walkexpr(&n->right->left, init); n->right->left = safeexpr(n->right->left, init); walkexpr(&n->right->right, init); n->right->right = safeexpr(n->right->right, init); n = sliceany(n, init); // chops n->right, sets n->list goto ret; case OSLICE3: case OSLICE3ARR: if(n->right == N) // already processed goto ret; walkexpr(&n->left, init); // TODO the OINDEX case is a bug elsewhere that needs to be traced. it causes a crash on ([2][]int{ ... })[1][lo:hi] // TODO the comment on the previous line was copied from case OSLICE. it might not even be true. if(n->left->op == OINDEX) n->left = copyexpr(n->left, n->left->type, init); else n->left = safeexpr(n->left, init); walkexpr(&n->right->left, init); n->right->left = safeexpr(n->right->left, init); walkexpr(&n->right->right->left, init); n->right->right->left = safeexpr(n->right->right->left, init); walkexpr(&n->right->right->right, init); n->right->right->right = safeexpr(n->right->right->right, init); n = sliceany(n, init); // chops n->right, sets n->list goto ret; case OADDR: walkexpr(&n->left, init); goto ret; case ONEW: if(n->esc == EscNone && n->type->type->width < (1<<16)) { r = temp(n->type->type); r = nod(OAS, r, N); // zero temp typecheck(&r, Etop); *init = list(*init, r); r = nod(OADDR, r->left, N); typecheck(&r, Erv); n = r; } else { n = callnew(n->type->type); } goto ret; case OCMPSTR: // If one argument to the comparison is an empty string, // comparing the lengths instead will yield the same result // without the function call. if((isconst(n->left, CTSTR) && n->left->val.u.sval->len == 0) || (isconst(n->right, CTSTR) && n->right->val.u.sval->len == 0)) { r = nod(n->etype, nod(OLEN, n->left, N), nod(OLEN, n->right, N)); typecheck(&r, Erv); walkexpr(&r, init); r->type = n->type; n = r; goto ret; } // s + "badgerbadgerbadger" == "badgerbadgerbadger" if((n->etype == OEQ || n->etype == ONE) && isconst(n->right, CTSTR) && n->left->op == OADDSTR && count(n->left->list) == 2 && isconst(n->left->list->next->n, CTSTR) && cmpslit(n->right, n->left->list->next->n) == 0) { r = nod(n->etype, nod(OLEN, n->left->list->n, N), nodintconst(0)); typecheck(&r, Erv); walkexpr(&r, init); r->type = n->type; n = r; goto ret; } if(n->etype == OEQ || n->etype == ONE) { // prepare for rewrite below n->left = cheapexpr(n->left, init); n->right = cheapexpr(n->right, init); r = mkcall("eqstring", types[TBOOL], init, conv(n->left, types[TSTRING]), conv(n->right, types[TSTRING])); // quick check of len before full compare for == or != if(n->etype == OEQ) { // len(left) == len(right) && eqstring(left, right) r = nod(OANDAND, nod(OEQ, nod(OLEN, n->left, N), nod(OLEN, n->right, N)), r); } else { // len(left) != len(right) || !eqstring(left, right) r = nod(ONOT, r, N); r = nod(OOROR, nod(ONE, nod(OLEN, n->left, N), nod(OLEN, n->right, N)), r); } typecheck(&r, Erv); walkexpr(&r, nil); } else { // sys_cmpstring(s1, s2) :: 0 r = mkcall("cmpstring", types[TINT], init, conv(n->left, types[TSTRING]), conv(n->right, types[TSTRING])); r = nod(n->etype, r, nodintconst(0)); } typecheck(&r, Erv); if(n->type->etype != TBOOL) fatal("cmp %T", n->type); r->type = n->type; n = r; goto ret; case OADDSTR: n = addstr(n, init); goto ret; case OAPPEND: if(n->isddd) n = appendslice(n, init); // also works for append(slice, string). else n = append(n, init); goto ret; case OCOPY: n = copyany(n, init, flag_race); goto ret; case OCLOSE: // cannot use chanfn - closechan takes any, not chan any fn = syslook("closechan", 1); argtype(fn, n->left->type); n = mkcall1(fn, T, init, n->left); goto ret; case OMAKECHAN: n = mkcall1(chanfn("makechan", 1, n->type), n->type, init, typename(n->type), conv(n->left, types[TINT64])); goto ret; case OMAKEMAP: t = n->type; fn = syslook("makemap", 1); argtype(fn, t->down); // any-1 argtype(fn, t->type); // any-2 n = mkcall1(fn, n->type, init, typename(n->type), conv(n->left, types[TINT64])); goto ret; case OMAKESLICE: l = n->left; r = n->right; if(r == nil) l = r = safeexpr(l, init); t = n->type; if(n->esc == EscNone && smallintconst(l) && smallintconst(r) && (t->type->width == 0 || mpgetfix(r->val.u.xval) < (1ULL<<16) / t->type->width)) { // var arr [r]T // n = arr[:l] t = aindex(r, t->type); // [r]T var = temp(t); a = nod(OAS, var, N); // zero temp typecheck(&a, Etop); *init = list(*init, a); r = nod(OSLICE, var, nod(OKEY, N, l)); // arr[:l] r = conv(r, n->type); // in case n->type is named. typecheck(&r, Erv); walkexpr(&r, init); n = r; } else { // makeslice(t *Type, nel int64, max int64) (ary []any) fn = syslook("makeslice", 1); argtype(fn, t->type); // any-1 n = mkcall1(fn, n->type, init, typename(n->type), conv(l, types[TINT64]), conv(r, types[TINT64])); } goto ret; case ORUNESTR: // sys_intstring(v) n = mkcall("intstring", n->type, init, conv(n->left, types[TINT64])); goto ret; case OARRAYBYTESTR: // slicebytetostring([]byte) string; n = mkcall("slicebytetostring", n->type, init, n->left); goto ret; case OARRAYBYTESTRTMP: // slicebytetostringtmp([]byte) string; n = mkcall("slicebytetostringtmp", n->type, init, n->left); goto ret; case OARRAYRUNESTR: // slicerunetostring([]rune) string; n = mkcall("slicerunetostring", n->type, init, n->left); goto ret; case OSTRARRAYBYTE: // stringtoslicebyte(string) []byte; n = mkcall("stringtoslicebyte", n->type, init, conv(n->left, types[TSTRING])); goto ret; case OSTRARRAYRUNE: // stringtoslicerune(string) []rune n = mkcall("stringtoslicerune", n->type, init, n->left); goto ret; case OCMPIFACE: // ifaceeq(i1 any-1, i2 any-2) (ret bool); if(!eqtype(n->left->type, n->right->type)) fatal("ifaceeq %O %T %T", n->op, n->left->type, n->right->type); if(isnilinter(n->left->type)) fn = syslook("efaceeq", 1); else fn = syslook("ifaceeq", 1); n->right = cheapexpr(n->right, init); n->left = cheapexpr(n->left, init); argtype(fn, n->right->type); argtype(fn, n->left->type); r = mkcall1(fn, n->type, init, n->left, n->right); if(n->etype == ONE) r = nod(ONOT, r, N); // check itable/type before full compare. if(n->etype == OEQ) r = nod(OANDAND, nod(OEQ, nod(OITAB, n->left, N), nod(OITAB, n->right, N)), r); else r = nod(OOROR, nod(ONE, nod(OITAB, n->left, N), nod(OITAB, n->right, N)), r); typecheck(&r, Erv); walkexpr(&r, init); r->type = n->type; n = r; goto ret; case OARRAYLIT: case OMAPLIT: case OSTRUCTLIT: case OPTRLIT: // XXX TODO do we need to clear var? var = temp(n->type); anylit(0, n, var, init); n = var; goto ret; case OSEND: n1 = n->right; n1 = assignconv(n1, n->left->type->type, "chan send"); walkexpr(&n1, init); n1 = nod(OADDR, n1, N); n = mkcall1(chanfn("chansend1", 2, n->left->type), T, init, typename(n->left->type), n->left, n1); goto ret; case OCLOSURE: n = walkclosure(n, init); goto ret; case OCALLPART: n = walkpartialcall(n, init); goto ret; } fatal("missing switch %O", n->op); ret: // Expressions that are constant at run time but not // considered const by the language spec are not turned into // constants until walk. For example, if n is y%1 == 0, the // walk of y%1 may have replaced it by 0. // Check whether n with its updated args is itself now a constant. t = n->type; evconst(n); n->type = t; if(n->op == OLITERAL) typecheck(&n, Erv); ullmancalc(n); if(debug['w'] && n != N) dump("walk", n); lineno = lno; *np = n; } static Node* ascompatee1(int op, Node *l, Node *r, NodeList **init) { Node *n; USED(op); // convas will turn map assigns into function calls, // making it impossible for reorder3 to work. n = nod(OAS, l, r); if(l->op == OINDEXMAP) return n; return convas(n, init); } static NodeList* ascompatee(int op, NodeList *nl, NodeList *nr, NodeList **init) { NodeList *ll, *lr, *nn; /* * check assign expression list to * a expression list. called in * expr-list = expr-list */ // ensure order of evaluation for function calls for(ll=nl; ll; ll=ll->next) ll->n = safeexpr(ll->n, init); for(lr=nr; lr; lr=lr->next) lr->n = safeexpr(lr->n, init); nn = nil; for(ll=nl, lr=nr; ll && lr; ll=ll->next, lr=lr->next) { // Do not generate 'x = x' during return. See issue 4014. if(op == ORETURN && ll->n == lr->n) continue; nn = list(nn, ascompatee1(op, ll->n, lr->n, init)); } // cannot happen: caller checked that lists had same length if(ll || lr) yyerror("error in shape across %+H %O %+H / %d %d [%s]", nl, op, nr, count(nl), count(nr), curfn->nname->sym->name); return nn; } /* * l is an lv and rt is the type of an rv * return 1 if this implies a function call * evaluating the lv or a function call * in the conversion of the types */ static int fncall(Node *l, Type *rt) { if(l->ullman >= UINF || l->op == OINDEXMAP) return 1; if(eqtype(l->type, rt)) return 0; return 1; } static NodeList* ascompatet(int op, NodeList *nl, Type **nr, int fp, NodeList **init) { Node *l, *tmp, *a; NodeList *ll; Type *r; Iter saver; int ucount; NodeList *nn, *mm; USED(op); /* * check assign type list to * a expression list. called in * expr-list = func() */ r = structfirst(&saver, nr); nn = nil; mm = nil; ucount = 0; for(ll=nl; ll; ll=ll->next) { if(r == T) break; l = ll->n; if(isblank(l)) { r = structnext(&saver); continue; } // any lv that causes a fn call must be // deferred until all the return arguments // have been pulled from the output arguments if(fncall(l, r->type)) { tmp = temp(r->type); typecheck(&tmp, Erv); a = nod(OAS, l, tmp); a = convas(a, init); mm = list(mm, a); l = tmp; } a = nod(OAS, l, nodarg(r, fp)); a = convas(a, init); ullmancalc(a); if(a->ullman >= UINF) ucount++; nn = list(nn, a); r = structnext(&saver); } if(ll != nil || r != T) yyerror("ascompatet: assignment count mismatch: %d = %d", count(nl), structcount(*nr)); if(ucount) fatal("ascompatet: too many function calls evaluating parameters"); return concat(nn, mm); } /* * package all the arguments that match a ... T parameter into a []T. */ static NodeList* mkdotargslice(NodeList *lr0, NodeList *nn, Type *l, int fp, NodeList **init, Node *ddd) { Node *a, *n; Type *tslice; int esc; esc = EscUnknown; if(ddd != nil) esc = ddd->esc; tslice = typ(TARRAY); tslice->type = l->type->type; tslice->bound = -1; if(count(lr0) == 0) { n = nodnil(); n->type = tslice; } else { n = nod(OCOMPLIT, N, typenod(tslice)); if(ddd != nil) n->alloc = ddd->alloc; // temporary to use n->list = lr0; n->esc = esc; typecheck(&n, Erv); if(n->type == T) fatal("mkdotargslice: typecheck failed"); walkexpr(&n, init); } a = nod(OAS, nodarg(l, fp), n); nn = list(nn, convas(a, init)); return nn; } /* * helpers for shape errors */ static char* dumptypes(Type **nl, char *what) { int first; Type *l; Iter savel; Fmt fmt; fmtstrinit(&fmt); fmtprint(&fmt, "\t"); first = 1; for(l = structfirst(&savel, nl); l != T; l = structnext(&savel)) { if(first) first = 0; else fmtprint(&fmt, ", "); fmtprint(&fmt, "%T", l); } if(first) fmtprint(&fmt, "[no arguments %s]", what); return fmtstrflush(&fmt); } static char* dumpnodetypes(NodeList *l, char *what) { int first; Node *r; Fmt fmt; fmtstrinit(&fmt); fmtprint(&fmt, "\t"); first = 1; for(; l; l=l->next) { r = l->n; if(first) first = 0; else fmtprint(&fmt, ", "); fmtprint(&fmt, "%T", r->type); } if(first) fmtprint(&fmt, "[no arguments %s]", what); return fmtstrflush(&fmt); } /* * check assign expression list to * a type list. called in * return expr-list * func(expr-list) */ static NodeList* ascompatte(int op, Node *call, int isddd, Type **nl, NodeList *lr, int fp, NodeList **init) { Type *l, *ll; Node *r, *a; NodeList *nn, *lr0, *alist; Iter savel; char *l1, *l2; lr0 = lr; l = structfirst(&savel, nl); r = N; if(lr) r = lr->n; nn = nil; // f(g()) where g has multiple return values if(r != N && lr->next == nil && r->type->etype == TSTRUCT && r->type->funarg) { // optimization - can do block copy if(eqtypenoname(r->type, *nl)) { a = nodarg(*nl, fp); r = nod(OCONVNOP, r, N); r->type = a->type; nn = list1(convas(nod(OAS, a, r), init)); goto ret; } // conversions involved. // copy into temporaries. alist = nil; for(l=structfirst(&savel, &r->type); l; l=structnext(&savel)) { a = temp(l->type); alist = list(alist, a); } a = nod(OAS2, N, N); a->list = alist; a->rlist = lr; typecheck(&a, Etop); walkstmt(&a); *init = list(*init, a); lr = alist; r = lr->n; l = structfirst(&savel, nl); } loop: if(l != T && l->isddd) { // the ddd parameter must be last ll = structnext(&savel); if(ll != T) yyerror("... must be last argument"); // special case -- // only if we are assigning a single ddd // argument to a ddd parameter then it is // passed thru unencapsulated if(r != N && lr->next == nil && isddd && eqtype(l->type, r->type)) { a = nod(OAS, nodarg(l, fp), r); a = convas(a, init); nn = list(nn, a); goto ret; } // normal case -- make a slice of all // remaining arguments and pass it to // the ddd parameter. nn = mkdotargslice(lr, nn, l, fp, init, call->right); goto ret; } if(l == T || r == N) { if(l != T || r != N) { l1 = dumptypes(nl, "expected"); l2 = dumpnodetypes(lr0, "given"); if(l != T) yyerror("not enough arguments to %O\n%s\n%s", op, l1, l2); else yyerror("too many arguments to %O\n%s\n%s", op, l1, l2); } goto ret; } a = nod(OAS, nodarg(l, fp), r); a = convas(a, init); nn = list(nn, a); l = structnext(&savel); r = N; lr = lr->next; if(lr != nil) r = lr->n; goto loop; ret: for(lr=nn; lr; lr=lr->next) lr->n->typecheck = 1; return nn; } // generate code for print static Node* walkprint(Node *nn, NodeList **init, int defer) { Node *r; Node *n; NodeList *l, *all; Node *on; Type *t; int notfirst, et, op; NodeList *calls, *intypes, *args; Fmt fmt; on = nil; op = nn->op; all = nn->list; calls = nil; notfirst = 0; intypes = nil; args = nil; memset(&fmt, 0, sizeof fmt); if(defer) { // defer print turns into defer printf with format string fmtstrinit(&fmt); intypes = list(intypes, nod(ODCLFIELD, N, typenod(types[TSTRING]))); args = list1(nod(OXXX, N, N)); } for(l=all; l; l=l->next) { if(notfirst) { if(defer) fmtprint(&fmt, " "); else calls = list(calls, mkcall("printsp", T, init)); } notfirst = op == OPRINTN; n = l->n; if(n->op == OLITERAL) { switch(n->val.ctype) { case CTRUNE: defaultlit(&n, runetype); break; case CTINT: defaultlit(&n, types[TINT64]); break; case CTFLT: defaultlit(&n, types[TFLOAT64]); break; } } if(n->op != OLITERAL && n->type && n->type->etype == TIDEAL) defaultlit(&n, types[TINT64]); defaultlit(&n, nil); l->n = n; if(n->type == T || n->type->etype == TFORW) continue; t = n->type; et = n->type->etype; if(isinter(n->type)) { if(defer) { if(isnilinter(n->type)) fmtprint(&fmt, "%%e"); else fmtprint(&fmt, "%%i"); } else { if(isnilinter(n->type)) on = syslook("printeface", 1); else on = syslook("printiface", 1); argtype(on, n->type); // any-1 } } else if(isptr[et] || et == TCHAN || et == TMAP || et == TFUNC || et == TUNSAFEPTR) { if(defer) { fmtprint(&fmt, "%%p"); } else { on = syslook("printpointer", 1); argtype(on, n->type); // any-1 } } else if(isslice(n->type)) { if(defer) { fmtprint(&fmt, "%%a"); } else { on = syslook("printslice", 1); argtype(on, n->type); // any-1 } } else if(isint[et]) { if(defer) { if(et == TUINT64) fmtprint(&fmt, "%%U"); else { fmtprint(&fmt, "%%D"); t = types[TINT64]; } } else { if(et == TUINT64) on = syslook("printuint", 0); else on = syslook("printint", 0); } } else if(isfloat[et]) { if(defer) { fmtprint(&fmt, "%%f"); t = types[TFLOAT64]; } else on = syslook("printfloat", 0); } else if(iscomplex[et]) { if(defer) { fmtprint(&fmt, "%%C"); t = types[TCOMPLEX128]; } else on = syslook("printcomplex", 0); } else if(et == TBOOL) { if(defer) fmtprint(&fmt, "%%t"); else on = syslook("printbool", 0); } else if(et == TSTRING) { if(defer) fmtprint(&fmt, "%%S"); else on = syslook("printstring", 0); } else { badtype(OPRINT, n->type, T); continue; } if(!defer) { t = *getinarg(on->type); if(t != nil) t = t->type; if(t != nil) t = t->type; } if(!eqtype(t, n->type)) { n = nod(OCONV, n, N); n->type = t; } if(defer) { intypes = list(intypes, nod(ODCLFIELD, N, typenod(t))); args = list(args, n); } else { r = nod(OCALL, on, N); r->list = list1(n); calls = list(calls, r); } } if(defer) { if(op == OPRINTN) fmtprint(&fmt, "\n"); on = syslook("goprintf", 1); on->type = functype(nil, intypes, nil); args->n = nod(OLITERAL, N, N); args->n->val.ctype = CTSTR; args->n->val.u.sval = strlit(fmtstrflush(&fmt)); r = nod(OCALL, on, N); r->list = args; typecheck(&r, Etop); walkexpr(&r, init); } else { if(op == OPRINTN) calls = list(calls, mkcall("printnl", T, nil)); typechecklist(calls, Etop); walkexprlist(calls, init); r = nod(OEMPTY, N, N); typecheck(&r, Etop); walkexpr(&r, init); r->ninit = calls; } return r; } Node* callnew(Type *t) { Node *fn; dowidth(t); fn = syslook("new", 1); argtype(fn, t); return mkcall1(fn, ptrto(t), nil, typename(t)); } static Node* convas(Node *n, NodeList **init) { Type *lt, *rt; Node *map, *key, *val; if(n->op != OAS) fatal("convas: not OAS %O", n->op); n->typecheck = 1; if(n->left == N || n->right == N) goto out; lt = n->left->type; rt = n->right->type; if(lt == T || rt == T) goto out; if(isblank(n->left)) { defaultlit(&n->right, T); goto out; } if(n->left->op == OINDEXMAP) { map = n->left->left; key = n->left->right; val = n->right; walkexpr(&map, init); walkexpr(&key, init); walkexpr(&val, init); // orderexpr made sure key and val are addressable. key = nod(OADDR, key, N); val = nod(OADDR, val, N); n = mkcall1(mapfn("mapassign1", map->type), T, init, typename(map->type), map, key, val); goto out; } if(eqtype(lt, rt)) goto out; n->right = assignconv(n->right, lt, "assignment"); walkexpr(&n->right, init); out: ullmancalc(n); return n; } /* * from ascompat[te] * evaluating actual function arguments. * f(a,b) * if there is exactly one function expr, * then it is done first. otherwise must * make temp variables */ static NodeList* reorder1(NodeList *all) { Node *f, *a, *n; NodeList *l, *r, *g; int c, d, t; c = 0; // function calls t = 0; // total parameters for(l=all; l; l=l->next) { n = l->n; t++; ullmancalc(n); if(n->ullman >= UINF) c++; } if(c == 0 || t == 1) return all; g = nil; // fncalls assigned to tempnames f = N; // last fncall assigned to stack r = nil; // non fncalls and tempnames assigned to stack d = 0; for(l=all; l; l=l->next) { n = l->n; if(n->ullman < UINF) { r = list(r, n); continue; } d++; if(d == c) { f = n; continue; } // make assignment of fncall to tempname a = temp(n->right->type); a = nod(OAS, a, n->right); g = list(g, a); // put normal arg assignment on list // with fncall replaced by tempname n->right = a->left; r = list(r, n); } if(f != N) g = list(g, f); return concat(g, r); } static void reorder3save(Node**, NodeList*, NodeList*, NodeList**); static int aliased(Node*, NodeList*, NodeList*); /* * from ascompat[ee] * a,b = c,d * simultaneous assignment. there cannot * be later use of an earlier lvalue. * * function calls have been removed. */ static NodeList* reorder3(NodeList *all) { NodeList *list, *early, *mapinit; Node *l; // If a needed expression may be affected by an // earlier assignment, make an early copy of that // expression and use the copy instead. early = nil; mapinit = nil; for(list=all; list; list=list->next) { l = list->n->left; // Save subexpressions needed on left side. // Drill through non-dereferences. for(;;) { if(l->op == ODOT || l->op == OPAREN) { l = l->left; continue; } if(l->op == OINDEX && isfixedarray(l->left->type)) { reorder3save(&l->right, all, list, &early); l = l->left; continue; } break; } switch(l->op) { default: fatal("reorder3 unexpected lvalue %#O", l->op); case ONAME: break; case OINDEX: case OINDEXMAP: reorder3save(&l->left, all, list, &early); reorder3save(&l->right, all, list, &early); if(l->op == OINDEXMAP) list->n = convas(list->n, &mapinit); break; case OIND: case ODOTPTR: reorder3save(&l->left, all, list, &early); } // Save expression on right side. reorder3save(&list->n->right, all, list, &early); } early = concat(mapinit, early); return concat(early, all); } static int vmatch2(Node*, Node*); static int varexpr(Node*); /* * if the evaluation of *np would be affected by the * assignments in all up to but not including stop, * copy into a temporary during *early and * replace *np with that temp. */ static void reorder3save(Node **np, NodeList *all, NodeList *stop, NodeList **early) { Node *n, *q; n = *np; if(!aliased(n, all, stop)) return; q = temp(n->type); q = nod(OAS, q, n); typecheck(&q, Etop); *early = list(*early, q); *np = q->left; } /* * what's the outer value that a write to n affects? * outer value means containing struct or array. */ Node* outervalue(Node *n) { for(;;) { if(n->op == ODOT || n->op == OPAREN) { n = n->left; continue; } if(n->op == OINDEX && isfixedarray(n->left->type)) { n = n->left; continue; } break; } return n; } /* * Is it possible that the computation of n might be * affected by writes in as up to but not including stop? */ static int aliased(Node *n, NodeList *all, NodeList *stop) { int memwrite, varwrite; Node *a; NodeList *l; if(n == N) return 0; // Look for obvious aliasing: a variable being assigned // during the all list and appearing in n. // Also record whether there are any writes to main memory. // Also record whether there are any writes to variables // whose addresses have been taken. memwrite = 0; varwrite = 0; for(l=all; l!=stop; l=l->next) { a = outervalue(l->n->left); if(a->op != ONAME) { memwrite = 1; continue; } switch(n->class) { default: varwrite = 1; continue; case PAUTO: case PPARAM: case PPARAMOUT: if(n->addrtaken) { varwrite = 1; continue; } if(vmatch2(a, n)) { // Direct hit. return 1; } } } // The variables being written do not appear in n. // However, n might refer to computed addresses // that are being written. // If no computed addresses are affected by the writes, no aliasing. if(!memwrite && !varwrite) return 0; // If n does not refer to computed addresses // (that is, if n only refers to variables whose addresses // have not been taken), no aliasing. if(varexpr(n)) return 0; // Otherwise, both the writes and n refer to computed memory addresses. // Assume that they might conflict. return 1; } /* * does the evaluation of n only refer to variables * whose addresses have not been taken? * (and no other memory) */ static int varexpr(Node *n) { if(n == N) return 1; switch(n->op) { case OLITERAL: return 1; case ONAME: switch(n->class) { case PAUTO: case PPARAM: case PPARAMOUT: if(!n->addrtaken) return 1; } return 0; case OADD: case OSUB: case OOR: case OXOR: case OMUL: case ODIV: case OMOD: case OLSH: case ORSH: case OAND: case OANDNOT: case OPLUS: case OMINUS: case OCOM: case OPAREN: case OANDAND: case OOROR: case ODOT: // but not ODOTPTR case OCONV: case OCONVNOP: case OCONVIFACE: case ODOTTYPE: return varexpr(n->left) && varexpr(n->right); } // Be conservative. return 0; } /* * is the name l mentioned in r? */ static int vmatch2(Node *l, Node *r) { NodeList *ll; if(r == N) return 0; switch(r->op) { case ONAME: // match each right given left return l == r; case OLITERAL: return 0; } if(vmatch2(l, r->left)) return 1; if(vmatch2(l, r->right)) return 1; for(ll=r->list; ll; ll=ll->next) if(vmatch2(l, ll->n)) return 1; return 0; } /* * is any name mentioned in l also mentioned in r? * called by sinit.c */ int vmatch1(Node *l, Node *r) { NodeList *ll; /* * isolate all left sides */ if(l == N || r == N) return 0; switch(l->op) { case ONAME: switch(l->class) { case PPARAM: case PPARAMREF: case PAUTO: break; default: // assignment to non-stack variable // must be delayed if right has function calls. if(r->ullman >= UINF) return 1; break; } return vmatch2(l, r); case OLITERAL: return 0; } if(vmatch1(l->left, r)) return 1; if(vmatch1(l->right, r)) return 1; for(ll=l->list; ll; ll=ll->next) if(vmatch1(ll->n, r)) return 1; return 0; } /* * walk through argin parameters. * generate and return code to allocate * copies of escaped parameters to the heap. */ static NodeList* paramstoheap(Type **argin, int out) { Type *t; Iter savet; Node *v; NodeList *nn; nn = nil; for(t = structfirst(&savet, argin); t != T; t = structnext(&savet)) { v = t->nname; if(v && v->sym && v->sym->name[0] == '~' && v->sym->name[1] == 'r') // unnamed result v = N; // In precisestack mode, the garbage collector assumes results // are always live, so zero them always. if(out && (precisestack_enabled || (v == N && hasdefer))) { // Defer might stop a panic and show the // return values as they exist at the time of panic. // Make sure to zero them on entry to the function. nn = list(nn, nod(OAS, nodarg(t, 1), N)); } if(v == N || !(v->class & PHEAP)) continue; // generate allocation & copying code if(v->alloc == nil) v->alloc = callnew(v->type); nn = list(nn, nod(OAS, v->heapaddr, v->alloc)); if((v->class & ~PHEAP) != PPARAMOUT) nn = list(nn, nod(OAS, v, v->stackparam)); } return nn; } /* * walk through argout parameters copying back to stack */ static NodeList* returnsfromheap(Type **argin) { Type *t; Iter savet; Node *v; NodeList *nn; nn = nil; for(t = structfirst(&savet, argin); t != T; t = structnext(&savet)) { v = t->nname; if(v == N || v->class != (PHEAP|PPARAMOUT)) continue; nn = list(nn, nod(OAS, v->stackparam, v)); } return nn; } /* * take care of migrating any function in/out args * between the stack and the heap. adds code to * curfn's before and after lists. */ static void heapmoves(void) { NodeList *nn; int32 lno; lno = lineno; lineno = curfn->lineno; nn = paramstoheap(getthis(curfn->type), 0); nn = concat(nn, paramstoheap(getinarg(curfn->type), 0)); nn = concat(nn, paramstoheap(getoutarg(curfn->type), 1)); curfn->enter = concat(curfn->enter, nn); lineno = curfn->endlineno; curfn->exit = returnsfromheap(getoutarg(curfn->type)); lineno = lno; } static Node* vmkcall(Node *fn, Type *t, NodeList **init, va_list va) { int i, n; Node *r; NodeList *args; if(fn->type == T || fn->type->etype != TFUNC) fatal("mkcall %N %T", fn, fn->type); args = nil; n = fn->type->intuple; for(i=0; ilist = args; if(fn->type->outtuple > 0) typecheck(&r, Erv | Efnstruct); else typecheck(&r, Etop); walkexpr(&r, init); r->type = t; return r; } Node* mkcall(char *name, Type *t, NodeList **init, ...) { Node *r; va_list va; va_start(va, init); r = vmkcall(syslook(name, 0), t, init, va); va_end(va); return r; } Node* mkcall1(Node *fn, Type *t, NodeList **init, ...) { Node *r; va_list va; va_start(va, init); r = vmkcall(fn, t, init, va); va_end(va); return r; } Node* conv(Node *n, Type *t) { if(eqtype(n->type, t)) return n; n = nod(OCONV, n, N); n->type = t; typecheck(&n, Erv); return n; } Node* chanfn(char *name, int n, Type *t) { Node *fn; int i; if(t->etype != TCHAN) fatal("chanfn %T", t); fn = syslook(name, 1); for(i=0; itype); return fn; } static Node* mapfn(char *name, Type *t) { Node *fn; if(t->etype != TMAP) fatal("mapfn %T", t); fn = syslook(name, 1); argtype(fn, t->down); argtype(fn, t->type); argtype(fn, t->down); argtype(fn, t->type); return fn; } static Node* mapfndel(char *name, Type *t) { Node *fn; if(t->etype != TMAP) fatal("mapfn %T", t); fn = syslook(name, 1); argtype(fn, t->down); argtype(fn, t->type); argtype(fn, t->down); return fn; } static Node* addstr(Node *n, NodeList **init) { Node *r, *cat, *slice; NodeList *args, *l; int c; Type *t; // orderexpr rewrote OADDSTR to have a list of strings. c = count(n->list); if(c < 2) yyerror("addstr count %d too small", c); // build list of string arguments args = nil; for(l=n->list; l != nil; l=l->next) args = list(args, conv(l->n, types[TSTRING])); if(c <= 5) { // small numbers of strings use direct runtime helpers. // note: orderexpr knows this cutoff too. snprint(namebuf, sizeof(namebuf), "concatstring%d", c); } else { // large numbers of strings are passed to the runtime as a slice. strcpy(namebuf, "concatstrings"); t = typ(TARRAY); t->type = types[TSTRING]; t->bound = -1; slice = nod(OCOMPLIT, N, typenod(t)); slice->alloc = n->alloc; slice->list = args; slice->esc = EscNone; args = list1(slice); } cat = syslook(namebuf, 1); r = nod(OCALL, cat, N); r->list = args; typecheck(&r, Erv); walkexpr(&r, init); r->type = n->type; return r; } // expand append(l1, l2...) to // init { // s := l1 // if n := len(l1) + len(l2) - cap(s); n > 0 { // s = growslice(s, n) // } // s = s[:len(l1)+len(l2)] // memmove(&s[len(l1)], &l2[0], len(l2)*sizeof(T)) // } // s // // l2 is allowed to be a string. static Node* appendslice(Node *n, NodeList **init) { NodeList *l; Node *l1, *l2, *nt, *nif, *fn; Node *nptr1, *nptr2, *nwid; Node *s; walkexprlistsafe(n->list, init); // walkexprlistsafe will leave OINDEX (s[n]) alone if both s // and n are name or literal, but those may index the slice we're // modifying here. Fix explicitly. for(l=n->list; l; l=l->next) l->n = cheapexpr(l->n, init); l1 = n->list->n; l2 = n->list->next->n; s = temp(l1->type); // var s []T l = nil; l = list(l, nod(OAS, s, l1)); // s = l1 nt = temp(types[TINT]); nif = nod(OIF, N, N); // n := len(s) + len(l2) - cap(s) nif->ninit = list1(nod(OAS, nt, nod(OSUB, nod(OADD, nod(OLEN, s, N), nod(OLEN, l2, N)), nod(OCAP, s, N)))); nif->ntest = nod(OGT, nt, nodintconst(0)); // instantiate growslice(Type*, []any, int64) []any fn = syslook("growslice", 1); argtype(fn, s->type->type); argtype(fn, s->type->type); // s = growslice(T, s, n) nif->nbody = list1(nod(OAS, s, mkcall1(fn, s->type, &nif->ninit, typename(s->type), s, conv(nt, types[TINT64])))); l = list(l, nif); if(flag_race) { // rely on runtime to instrument copy. // copy(s[len(l1):len(l1)+len(l2)], l2) nptr1 = nod(OSLICE, s, nod(OKEY, nod(OLEN, l1, N), nod(OADD, nod(OLEN, l1, N), nod(OLEN, l2, N)))); nptr1->etype = 1; nptr2 = l2; if(l2->type->etype == TSTRING) fn = syslook("slicestringcopy", 1); else fn = syslook("copy", 1); argtype(fn, l1->type); argtype(fn, l2->type); nt = mkcall1(fn, types[TINT], &l, nptr1, nptr2, nodintconst(s->type->type->width)); l = list(l, nt); } else { // memmove(&s[len(l1)], &l2[0], len(l2)*sizeof(T)) nptr1 = nod(OINDEX, s, nod(OLEN, l1, N)); nptr1->bounded = 1; nptr1 = nod(OADDR, nptr1, N); nptr2 = nod(OSPTR, l2, N); fn = syslook("memmove", 1); argtype(fn, s->type->type); // 1 old []any argtype(fn, s->type->type); // 2 ret []any nwid = cheapexpr(conv(nod(OLEN, l2, N), types[TUINTPTR]), &l); nwid = nod(OMUL, nwid, nodintconst(s->type->type->width)); nt = mkcall1(fn, T, &l, nptr1, nptr2, nwid); l = list(l, nt); } // s = s[:len(l1)+len(l2)] nt = nod(OADD, nod(OLEN, l1, N), nod(OLEN, l2, N)); nt = nod(OSLICE, s, nod(OKEY, N, nt)); nt->etype = 1; l = list(l, nod(OAS, s, nt)); typechecklist(l, Etop); walkstmtlist(l); *init = concat(*init, l); return s; } // expand append(src, a [, b]* ) to // // init { // s := src // const argc = len(args) - 1 // if cap(s) - len(s) < argc { // s = growslice(s, argc) // } // n := len(s) // s = s[:n+argc] // s[n] = a // s[n+1] = b // ... // } // s static Node* append(Node *n, NodeList **init) { NodeList *l, *a; Node *nsrc, *ns, *nn, *na, *nx, *fn; int argc; walkexprlistsafe(n->list, init); // walkexprlistsafe will leave OINDEX (s[n]) alone if both s // and n are name or literal, but those may index the slice we're // modifying here. Fix explicitly. for(l=n->list; l; l=l->next) l->n = cheapexpr(l->n, init); nsrc = n->list->n; // Resolve slice type of multi-valued return. if(istype(nsrc->type, TSTRUCT)) nsrc->type = nsrc->type->type->type; argc = count(n->list) - 1; if (argc < 1) { return nsrc; } l = nil; ns = temp(nsrc->type); l = list(l, nod(OAS, ns, nsrc)); // s = src na = nodintconst(argc); // const argc nx = nod(OIF, N, N); // if cap(s) - len(s) < argc nx->ntest = nod(OLT, nod(OSUB, nod(OCAP, ns, N), nod(OLEN, ns, N)), na); fn = syslook("growslice", 1); // growslice(, old []T, n int64) (ret []T) argtype(fn, ns->type->type); // 1 old []any argtype(fn, ns->type->type); // 2 ret []any nx->nbody = list1(nod(OAS, ns, mkcall1(fn, ns->type, &nx->ninit, typename(ns->type), ns, conv(na, types[TINT64])))); l = list(l, nx); nn = temp(types[TINT]); l = list(l, nod(OAS, nn, nod(OLEN, ns, N))); // n = len(s) nx = nod(OSLICE, ns, nod(OKEY, N, nod(OADD, nn, na))); // ...s[:n+argc] nx->etype = 1; l = list(l, nod(OAS, ns, nx)); // s = s[:n+argc] for (a = n->list->next; a != nil; a = a->next) { nx = nod(OINDEX, ns, nn); // s[n] ... nx->bounded = 1; l = list(l, nod(OAS, nx, a->n)); // s[n] = arg if (a->next != nil) l = list(l, nod(OAS, nn, nod(OADD, nn, nodintconst(1)))); // n = n + 1 } typechecklist(l, Etop); walkstmtlist(l); *init = concat(*init, l); return ns; } // Lower copy(a, b) to a memmove call or a runtime call. // // init { // n := len(a) // if n > len(b) { n = len(b) } // memmove(a.ptr, b.ptr, n*sizeof(elem(a))) // } // n; // // Also works if b is a string. // static Node* copyany(Node *n, NodeList **init, int runtimecall) { Node *nl, *nr, *nfrm, *nto, *nif, *nlen, *nwid, *fn; NodeList *l; if(runtimecall) { if(n->right->type->etype == TSTRING) fn = syslook("slicestringcopy", 1); else fn = syslook("copy", 1); argtype(fn, n->left->type); argtype(fn, n->right->type); return mkcall1(fn, n->type, init, n->left, n->right, nodintconst(n->left->type->type->width)); } walkexpr(&n->left, init); walkexpr(&n->right, init); nl = temp(n->left->type); nr = temp(n->right->type); l = nil; l = list(l, nod(OAS, nl, n->left)); l = list(l, nod(OAS, nr, n->right)); nfrm = nod(OSPTR, nr, N); nto = nod(OSPTR, nl, N); nlen = temp(types[TINT]); // n = len(to) l = list(l, nod(OAS, nlen, nod(OLEN, nl, N))); // if n > len(frm) { n = len(frm) } nif = nod(OIF, N, N); nif->ntest = nod(OGT, nlen, nod(OLEN, nr, N)); nif->nbody = list(nif->nbody, nod(OAS, nlen, nod(OLEN, nr, N))); l = list(l, nif); // Call memmove. fn = syslook("memmove", 1); argtype(fn, nl->type->type); argtype(fn, nl->type->type); nwid = temp(types[TUINTPTR]); l = list(l, nod(OAS, nwid, conv(nlen, types[TUINTPTR]))); nwid = nod(OMUL, nwid, nodintconst(nl->type->type->width)); l = list(l, mkcall1(fn, T, init, nto, nfrm, nwid)); typechecklist(l, Etop); walkstmtlist(l); *init = concat(*init, l); return nlen; } // Generate frontend part for OSLICE[3][ARR|STR] // static Node* sliceany(Node* n, NodeList **init) { int bounded, slice3; Node *src, *lb, *hb, *cb, *bound, *chk, *chk0, *chk1, *chk2; int64 lbv, hbv, cbv, bv, w; Type *bt; // print("before sliceany: %+N\n", n); src = n->left; lb = n->right->left; slice3 = n->op == OSLICE3 || n->op == OSLICE3ARR; if(slice3) { hb = n->right->right->left; cb = n->right->right->right; } else { hb = n->right->right; cb = N; } bounded = n->etype; if(n->op == OSLICESTR) bound = nod(OLEN, src, N); else bound = nod(OCAP, src, N); typecheck(&bound, Erv); walkexpr(&bound, init); // if src is an array, bound will be a const now. // static checks if possible bv = 1LL<<50; if(isconst(bound, CTINT)) { if(!smallintconst(bound)) yyerror("array len too large"); else bv = mpgetfix(bound->val.u.xval); } if(isconst(cb, CTINT)) { cbv = mpgetfix(cb->val.u.xval); if(cbv < 0 || cbv > bv) yyerror("slice index out of bounds"); } if(isconst(hb, CTINT)) { hbv = mpgetfix(hb->val.u.xval); if(hbv < 0 || hbv > bv) yyerror("slice index out of bounds"); } if(isconst(lb, CTINT)) { lbv = mpgetfix(lb->val.u.xval); if(lbv < 0 || lbv > bv) { yyerror("slice index out of bounds"); lbv = -1; } if(lbv == 0) lb = N; } // dynamic checks convert all bounds to unsigned to save us the bound < 0 comparison // generate // if hb > bound || lb > hb { panicslice() } chk = N; chk0 = N; chk1 = N; chk2 = N; bt = types[simtype[TUINT]]; if(cb != N && cb->type->width > 4) bt = types[TUINT64]; if(hb != N && hb->type->width > 4) bt = types[TUINT64]; if(lb != N && lb->type->width > 4) bt = types[TUINT64]; bound = cheapexpr(conv(bound, bt), init); if(cb != N) { cb = cheapexpr(conv(cb, bt), init); if(!bounded) chk0 = nod(OLT, bound, cb); } else if(slice3) { // When we figure out what this means, implement it. fatal("slice3 with cb == N"); // rejected by parser } if(hb != N) { hb = cheapexpr(conv(hb, bt), init); if(!bounded) { if(cb != N) chk1 = nod(OLT, cb, hb); else chk1 = nod(OLT, bound, hb); } } else if(slice3) { // When we figure out what this means, implement it. fatal("slice3 with hb == N"); // rejected by parser } else if(n->op == OSLICEARR) { hb = bound; } else { hb = nod(OLEN, src, N); typecheck(&hb, Erv); walkexpr(&hb, init); hb = cheapexpr(conv(hb, bt), init); } if(lb != N) { lb = cheapexpr(conv(lb, bt), init); if(!bounded) chk2 = nod(OLT, hb, lb); } if(chk0 != N || chk1 != N || chk2 != N) { chk = nod(OIF, N, N); chk->nbody = list1(mkcall("panicslice", T, init)); chk->likely = -1; if(chk0 != N) chk->ntest = chk0; if(chk1 != N) { if(chk->ntest == N) chk->ntest = chk1; else chk->ntest = nod(OOROR, chk->ntest, chk1); } if(chk2 != N) { if(chk->ntest == N) chk->ntest = chk2; else chk->ntest = nod(OOROR, chk->ntest, chk2); } typecheck(&chk, Etop); walkstmt(&chk); *init = concat(*init, chk->ninit); chk->ninit = nil; *init = list(*init, chk); } // prepare new cap, len and offs for backend cgen_slice // cap = bound [ - lo ] n->right = N; n->list = nil; if(!slice3) cb = bound; if(lb == N) bound = conv(cb, types[simtype[TUINT]]); else bound = nod(OSUB, conv(cb, types[simtype[TUINT]]), conv(lb, types[simtype[TUINT]])); typecheck(&bound, Erv); walkexpr(&bound, init); n->list = list(n->list, bound); // len = hi [ - lo] if(lb == N) hb = conv(hb, types[simtype[TUINT]]); else hb = nod(OSUB, conv(hb, types[simtype[TUINT]]), conv(lb, types[simtype[TUINT]])); typecheck(&hb, Erv); walkexpr(&hb, init); n->list = list(n->list, hb); // offs = [width *] lo, but omit if zero if(lb != N) { if(n->op == OSLICESTR) w = 1; else w = n->type->type->width; lb = conv(lb, types[TUINTPTR]); if(w > 1) lb = nod(OMUL, nodintconst(w), lb); typecheck(&lb, Erv); walkexpr(&lb, init); n->list = list(n->list, lb); } // print("after sliceany: %+N\n", n); return n; } static Node* eqfor(Type *t) { int a; Node *n; Node *ntype; Sym *sym; // Should only arrive here with large memory or // a struct/array containing a non-memory field/element. // Small memory is handled inline, and single non-memory // is handled during type check (OCMPSTR etc). a = algtype1(t, nil); if(a != AMEM && a != -1) fatal("eqfor %T", t); if(a == AMEM) { n = syslook("memequal", 1); argtype(n, t); argtype(n, t); return n; } sym = typesymprefix(".eq", t); n = newname(sym); n->class = PFUNC; ntype = nod(OTFUNC, N, N); ntype->list = list(ntype->list, nod(ODCLFIELD, N, typenod(ptrto(types[TBOOL])))); ntype->list = list(ntype->list, nod(ODCLFIELD, N, typenod(types[TUINTPTR]))); ntype->list = list(ntype->list, nod(ODCLFIELD, N, typenod(ptrto(t)))); ntype->list = list(ntype->list, nod(ODCLFIELD, N, typenod(ptrto(t)))); typecheck(&ntype, Etype); n->type = ntype->type; return n; } static int countfield(Type *t) { Type *t1; int n; n = 0; for(t1=t->type; t1!=T; t1=t1->down) n++; return n; } static void walkcompare(Node **np, NodeList **init) { Node *n, *l, *r, *fn, *call, *a, *li, *ri, *expr; int andor, i; Type *t, *t1; static Node *tempbool; n = *np; // Must be comparison of array or struct. // Otherwise back end handles it. t = n->left->type; switch(t->etype) { default: return; case TARRAY: if(isslice(t)) return; break; case TSTRUCT: break; } if(!islvalue(n->left) || !islvalue(n->right)) goto hard; l = temp(ptrto(t)); a = nod(OAS, l, nod(OADDR, n->left, N)); a->right->etype = 1; // addr does not escape typecheck(&a, Etop); *init = list(*init, a); r = temp(ptrto(t)); a = nod(OAS, r, nod(OADDR, n->right, N)); a->right->etype = 1; // addr does not escape typecheck(&a, Etop); *init = list(*init, a); expr = N; andor = OANDAND; if(n->op == ONE) andor = OOROR; if(t->etype == TARRAY && t->bound <= 4 && issimple[t->type->etype]) { // Four or fewer elements of a basic type. // Unroll comparisons. for(i=0; ibound; i++) { li = nod(OINDEX, l, nodintconst(i)); ri = nod(OINDEX, r, nodintconst(i)); a = nod(n->op, li, ri); if(expr == N) expr = a; else expr = nod(andor, expr, a); } if(expr == N) expr = nodbool(n->op == OEQ); r = expr; goto ret; } if(t->etype == TSTRUCT && countfield(t) <= 4) { // Struct of four or fewer fields. // Inline comparisons. for(t1=t->type; t1; t1=t1->down) { if(isblanksym(t1->sym)) continue; li = nod(OXDOT, l, newname(t1->sym)); ri = nod(OXDOT, r, newname(t1->sym)); a = nod(n->op, li, ri); if(expr == N) expr = a; else expr = nod(andor, expr, a); } if(expr == N) expr = nodbool(n->op == OEQ); r = expr; goto ret; } // Chose not to inline, but still have addresses. // Call equality function directly. // The equality function requires a bool pointer for // storing its address, because it has to be callable // from C, and C can't access an ordinary Go return value. // To avoid creating many temporaries, cache one per function. if(tempbool == N || tempbool->curfn != curfn) tempbool = temp(types[TBOOL]); call = nod(OCALL, eqfor(t), N); a = nod(OADDR, tempbool, N); a->etype = 1; // does not escape call->list = list(call->list, a); call->list = list(call->list, nodintconst(t->width)); call->list = list(call->list, l); call->list = list(call->list, r); typecheck(&call, Etop); walkstmt(&call); *init = list(*init, call); // tempbool cannot be used directly as multiple comparison // expressions may exist in the same statement. Create another // temporary to hold the value (its address is not taken so it can // be optimized away). r = temp(types[TBOOL]); a = nod(OAS, r, tempbool); typecheck(&a, Etop); walkstmt(&a); *init = list(*init, a); if(n->op != OEQ) r = nod(ONOT, r, N); goto ret; hard: // Cannot take address of one or both of the operands. // Instead, pass directly to runtime helper function. // Easier on the stack than passing the address // of temporary variables, because we are better at reusing // the argument space than temporary variable space. fn = syslook("equal", 1); l = n->left; r = n->right; argtype(fn, n->left->type); argtype(fn, n->left->type); r = mkcall1(fn, n->type, init, typename(n->left->type), l, r); if(n->op == ONE) { r = nod(ONOT, r, N); } goto ret; ret: typecheck(&r, Erv); walkexpr(&r, init); if(r->type != n->type) { r = nod(OCONVNOP, r, N); r->type = n->type; r->typecheck = 1; } *np = r; return; } static int samecheap(Node *a, Node *b) { Node *ar, *br; while(a != N && b != N && a->op == b->op) { switch(a->op) { default: return 0; case ONAME: return a == b; case ODOT: case ODOTPTR: ar = a->right; br = b->right; if(ar->op != ONAME || br->op != ONAME || ar->sym != br->sym) return 0; break; case OINDEX: ar = a->right; br = b->right; if(!isconst(ar, CTINT) || !isconst(br, CTINT) || mpcmpfixfix(ar->val.u.xval, br->val.u.xval) != 0) return 0; break; } a = a->left; b = b->left; } return 0; } static void walkrotate(Node **np) { int w, sl, sr, s; Node *l, *r; Node *n; n = *np; // Want << | >> or >> | << or << ^ >> or >> ^ << on unsigned value. l = n->left; r = n->right; if((n->op != OOR && n->op != OXOR) || (l->op != OLSH && l->op != ORSH) || (r->op != OLSH && r->op != ORSH) || n->type == T || issigned[n->type->etype] || l->op == r->op) { return; } // Want same, side effect-free expression on lhs of both shifts. if(!samecheap(l->left, r->left)) return; // Constants adding to width? w = l->type->width * 8; if(smallintconst(l->right) && smallintconst(r->right)) { if((sl=mpgetfix(l->right->val.u.xval)) >= 0 && (sr=mpgetfix(r->right->val.u.xval)) >= 0 && sl+sr == w) goto yes; return; } // TODO: Could allow s and 32-s if s is bounded (maybe s&31 and 32-s&31). return; yes: // Rewrite left shift half to left rotate. if(l->op == OLSH) n = l; else n = r; n->op = OLROT; // Remove rotate 0 and rotate w. s = mpgetfix(n->right->val.u.xval); if(s == 0 || s == w) n = n->left; *np = n; return; } /* * walkmul rewrites integer multiplication by powers of two as shifts. */ static void walkmul(Node **np, NodeList **init) { Node *n, *nl, *nr; int pow, neg, w; n = *np; if(!isint[n->type->etype]) return; if(n->right->op == OLITERAL) { nl = n->left; nr = n->right; } else if(n->left->op == OLITERAL) { nl = n->right; nr = n->left; } else return; neg = 0; // x*0 is 0 (and side effects of x). if(mpgetfix(nr->val.u.xval) == 0) { cheapexpr(nl, init); nodconst(n, n->type, 0); goto ret; } // nr is a constant. pow = powtwo(nr); if(pow < 0) return; if(pow >= 1000) { // negative power of 2, like -16 neg = 1; pow -= 1000; } w = nl->type->width*8; if(pow+1 >= w)// too big, shouldn't happen return; nl = cheapexpr(nl, init); if(pow == 0) { // x*1 is x n = nl; goto ret; } n = nod(OLSH, nl, nodintconst(pow)); ret: if(neg) n = nod(OMINUS, n, N); typecheck(&n, Erv); walkexpr(&n, init); *np = n; } /* * walkdiv rewrites division by a constant as less expensive * operations. */ static void walkdiv(Node **np, NodeList **init) { Node *n, *nl, *nr, *nc; Node *n1, *n2, *n3, *n4; int pow; // if >= 0, nr is 1<right->op != OLITERAL) return; // nr is a constant. nl = cheapexpr(n->left, init); nr = n->right; // special cases of mod/div // by a constant w = nl->type->width*8; s = 0; pow = powtwo(nr); if(pow >= 1000) { // negative power of 2 s = 1; pow -= 1000; } if(pow+1 >= w) { // divisor too large. return; } if(pow < 0) { goto divbymul; } switch(pow) { case 0: if(n->op == OMOD) { // nl % 1 is zero. nodconst(n, n->type, 0); } else if(s) { // divide by -1 n->op = OMINUS; n->right = N; } else { // divide by 1 n = nl; } break; default: if(issigned[n->type->etype]) { if(n->op == OMOD) { // signed modulo 2^pow is like ANDing // with the last pow bits, but if nl < 0, // nl & (2^pow-1) is (nl+1)%2^pow - 1. nc = nod(OXXX, N, N); nodconst(nc, types[simtype[TUINT]], w-1); n1 = nod(ORSH, nl, nc); // n1 = -1 iff nl < 0. if(pow == 1) { typecheck(&n1, Erv); n1 = cheapexpr(n1, init); // n = (nl+ε)&1 -ε where ε=1 iff nl<0. n2 = nod(OSUB, nl, n1); nc = nod(OXXX, N, N); nodconst(nc, nl->type, 1); n3 = nod(OAND, n2, nc); n = nod(OADD, n3, n1); } else { // n = (nl+ε)&(nr-1) - ε where ε=2^pow-1 iff nl<0. nc = nod(OXXX, N, N); nodconst(nc, nl->type, (1LL<= 0, nl >> n == nl / nr // if nl < 0, we want to add 2^n-1 first. nc = nod(OXXX, N, N); nodconst(nc, types[simtype[TUINT]], w-1); n1 = nod(ORSH, nl, nc); // n1 = -1 iff nl < 0. if(pow == 1) { // nl+1 is nl-(-1) n->left = nod(OSUB, nl, n1); } else { // Do a logical right right on -1 to keep pow bits. nc = nod(OXXX, N, N); nodconst(nc, types[simtype[TUINT]], w-pow); n2 = nod(ORSH, conv(n1, tounsigned(nl->type)), nc); n->left = nod(OADD, nl, conv(n2, nl->type)); } // n = (nl + 2^pow-1) >> pow n->op = ORSH; nc = nod(OXXX, N, N); nodconst(nc, types[simtype[TUINT]], pow); n->right = nc; n->typecheck = 0; } if(s) n = nod(OMINUS, n, N); break; } nc = nod(OXXX, N, N); if(n->op == OMOD) { // n = nl & (nr-1) n->op = OAND; nodconst(nc, nl->type, mpgetfix(nr->val.u.xval)-1); } else { // n = nl >> pow n->op = ORSH; nodconst(nc, types[simtype[TUINT]], pow); } n->typecheck = 0; n->right = nc; break; } goto ret; divbymul: // try to do division by multiply by (2^w)/d // see hacker's delight chapter 10 // TODO: support 64-bit magic multiply here. m.w = w; if(issigned[nl->type->etype]) { m.sd = mpgetfix(nr->val.u.xval); smagic(&m); } else { m.ud = mpgetfix(nr->val.u.xval); umagic(&m); } if(m.bad) return; // We have a quick division method so use it // for modulo too. if(n->op == OMOD) goto longmod; switch(simtype[nl->type->etype]) { default: return; case TUINT8: case TUINT16: case TUINT32: // n1 = nl * magic >> w (HMUL) nc = nod(OXXX, N, N); nodconst(nc, nl->type, m.um); n1 = nod(OMUL, nl, nc); typecheck(&n1, Erv); n1->op = OHMUL; if(m.ua) { // Select a Go type with (at least) twice the width. switch(simtype[nl->type->etype]) { default: return; case TUINT8: case TUINT16: twide = types[TUINT32]; break; case TUINT32: twide = types[TUINT64]; break; case TINT8: case TINT16: twide = types[TINT32]; break; case TINT32: twide = types[TINT64]; break; } // add numerator (might overflow). // n2 = (n1 + nl) n2 = nod(OADD, conv(n1, twide), conv(nl, twide)); // shift by m.s nc = nod(OXXX, N, N); nodconst(nc, types[TUINT], m.s); n = conv(nod(ORSH, n2, nc), nl->type); } else { // n = n1 >> m.s nc = nod(OXXX, N, N); nodconst(nc, types[TUINT], m.s); n = nod(ORSH, n1, nc); } break; case TINT8: case TINT16: case TINT32: // n1 = nl * magic >> w nc = nod(OXXX, N, N); nodconst(nc, nl->type, m.sm); n1 = nod(OMUL, nl, nc); typecheck(&n1, Erv); n1->op = OHMUL; if(m.sm < 0) { // add the numerator. n1 = nod(OADD, n1, nl); } // shift by m.s nc = nod(OXXX, N, N); nodconst(nc, types[TUINT], m.s); n2 = conv(nod(ORSH, n1, nc), nl->type); // add 1 iff n1 is negative. nc = nod(OXXX, N, N); nodconst(nc, types[TUINT], w-1); n3 = nod(ORSH, nl, nc); // n4 = -1 iff n1 is negative. n = nod(OSUB, n2, n3); // apply sign. if(m.sd < 0) n = nod(OMINUS, n, N); break; } goto ret; longmod: // rewrite as A%B = A - (A/B*B). n1 = nod(ODIV, nl, nr); n2 = nod(OMUL, n1, nr); n = nod(OSUB, nl, n2); goto ret; ret: typecheck(&n, Erv); walkexpr(&n, init); *np = n; } // return 1 if integer n must be in range [0, max), 0 otherwise static int bounded(Node *n, int64 max) { int64 v; int32 bits; int sign; if(n->type == T || !isint[n->type->etype]) return 0; sign = issigned[n->type->etype]; bits = 8*n->type->width; if(smallintconst(n)) { v = mpgetfix(n->val.u.xval); return 0 <= v && v < max; } switch(n->op) { case OAND: v = -1; if(smallintconst(n->left)) { v = mpgetfix(n->left->val.u.xval); } else if(smallintconst(n->right)) { v = mpgetfix(n->right->val.u.xval); } if(0 <= v && v < max) return 1; break; case OMOD: if(!sign && smallintconst(n->right)) { v = mpgetfix(n->right->val.u.xval); if(0 <= v && v <= max) return 1; } break; case ODIV: if(!sign && smallintconst(n->right)) { v = mpgetfix(n->right->val.u.xval); while(bits > 0 && v >= 2) { bits--; v >>= 1; } } break; case ORSH: if(!sign && smallintconst(n->right)) { v = mpgetfix(n->right->val.u.xval); if(v > bits) return 1; bits -= v; } break; } if(!sign && bits <= 62 && (1LL<op) { default: fatal("usefield %O", n->op); case ODOT: case ODOTPTR: break; } field = n->paramfld; if(field == T) fatal("usefield %T %S without paramfld", n->left->type, n->right->sym); if(field->note == nil || strstr(field->note->s, "go:\"track\"") == nil) return; // dedup on list if(field->lastfn == curfn) return; field->lastfn = curfn; field->outer = n->left->type; if(isptr[field->outer->etype]) field->outer = field->outer->type; if(field->outer->sym == S) yyerror("tracked field must be in named struct type"); if(!exportname(field->sym->name)) yyerror("tracked field must be exported (upper case)"); l = typ(0); l->type = field; l->down = curfn->paramfld; curfn->paramfld = l; } static int candiscardlist(NodeList *l) { for(; l; l=l->next) if(!candiscard(l->n)) return 0; return 1; } int candiscard(Node *n) { if(n == N) return 1; switch(n->op) { default: return 0; case ONAME: case ONONAME: case OTYPE: case OPACK: case OLITERAL: case OADD: case OSUB: case OOR: case OXOR: case OADDSTR: case OADDR: case OANDAND: case OARRAYBYTESTR: case OARRAYRUNESTR: case OSTRARRAYBYTE: case OSTRARRAYRUNE: case OCAP: case OCMPIFACE: case OCMPSTR: case OCOMPLIT: case OMAPLIT: case OSTRUCTLIT: case OARRAYLIT: case OPTRLIT: case OCONV: case OCONVIFACE: case OCONVNOP: case ODOT: case OEQ: case ONE: case OLT: case OLE: case OGT: case OGE: case OKEY: case OLEN: case OMUL: case OLSH: case ORSH: case OAND: case OANDNOT: case ONEW: case ONOT: case OCOM: case OPLUS: case OMINUS: case OOROR: case OPAREN: case ORUNESTR: case OREAL: case OIMAG: case OCOMPLEX: // Discardable as long as the subpieces are. break; case ODIV: case OMOD: // Discardable as long as we know it's not division by zero. if(isconst(n->right, CTINT) && mpcmpfixc(n->right->val.u.xval, 0) != 0) break; if(isconst(n->right, CTFLT) && mpcmpfltc(n->right->val.u.fval, 0) != 0) break; return 0; case OMAKECHAN: case OMAKEMAP: // Discardable as long as we know it won't fail because of a bad size. if(isconst(n->left, CTINT) && mpcmpfixc(n->left->val.u.xval, 0) == 0) break; return 0; case OMAKESLICE: // Difficult to tell what sizes are okay. return 0; } if(!candiscard(n->left) || !candiscard(n->right) || !candiscard(n->ntest) || !candiscard(n->nincr) || !candiscardlist(n->ninit) || !candiscardlist(n->nbody) || !candiscardlist(n->nelse) || !candiscardlist(n->list) || !candiscardlist(n->rlist)) { return 0; } return 1; } go/src/cmd/gc/y.tab.c0100644000000000000000000047500712412656737014620 0ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Using locations. */ #define YYLSP_NEEDED 0 /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { LLITERAL = 258, LASOP = 259, LCOLAS = 260, LBREAK = 261, LCASE = 262, LCHAN = 263, LCONST = 264, LCONTINUE = 265, LDDD = 266, LDEFAULT = 267, LDEFER = 268, LELSE = 269, LFALL = 270, LFOR = 271, LFUNC = 272, LGO = 273, LGOTO = 274, LIF = 275, LIMPORT = 276, LINTERFACE = 277, LMAP = 278, LNAME = 279, LPACKAGE = 280, LRANGE = 281, LRETURN = 282, LSELECT = 283, LSTRUCT = 284, LSWITCH = 285, LTYPE = 286, LVAR = 287, LANDAND = 288, LANDNOT = 289, LBODY = 290, LCOMM = 291, LDEC = 292, LEQ = 293, LGE = 294, LGT = 295, LIGNORE = 296, LINC = 297, LLE = 298, LLSH = 299, LLT = 300, LNE = 301, LOROR = 302, LRSH = 303, NotPackage = 304, NotParen = 305, PreferToRightParen = 306 }; #endif /* Tokens. */ #define LLITERAL 258 #define LASOP 259 #define LCOLAS 260 #define LBREAK 261 #define LCASE 262 #define LCHAN 263 #define LCONST 264 #define LCONTINUE 265 #define LDDD 266 #define LDEFAULT 267 #define LDEFER 268 #define LELSE 269 #define LFALL 270 #define LFOR 271 #define LFUNC 272 #define LGO 273 #define LGOTO 274 #define LIF 275 #define LIMPORT 276 #define LINTERFACE 277 #define LMAP 278 #define LNAME 279 #define LPACKAGE 280 #define LRANGE 281 #define LRETURN 282 #define LSELECT 283 #define LSTRUCT 284 #define LSWITCH 285 #define LTYPE 286 #define LVAR 287 #define LANDAND 288 #define LANDNOT 289 #define LBODY 290 #define LCOMM 291 #define LDEC 292 #define LEQ 293 #define LGE 294 #define LGT 295 #define LIGNORE 296 #define LINC 297 #define LLE 298 #define LLSH 299 #define LLT 300 #define LNE 301 #define LOROR 302 #define LRSH 303 #define NotPackage 304 #define NotParen 305 #define PreferToRightParen 306 /* Copy the first part of user declarations. */ #line 20 "go.y" #include #include /* if we don't, bison will, and go.h re-#defines getc */ #include #include "go.h" static void fixlbrace(int); /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 1 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 0 #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 28 "go.y" { Node* node; NodeList* list; Type* type; Sym* sym; struct Val val; int i; } /* Line 193 of yacc.c. */ #line 216 "y.tab.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif /* Copy the second part of user declarations. */ /* Line 216 of yacc.c. */ #line 229 "y.tab.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int i) #else static int YYID (i) int i; #endif { return i; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss; YYSTYPE yyvs; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack, Stack, yysize); \ Stack = &yyptr->Stack; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 4 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 2270 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 76 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 142 /* YYNRULES -- Number of rules. */ #define YYNRULES 351 /* YYNRULES -- Number of states. */ #define YYNSTATES 667 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 306 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 69, 2, 2, 64, 55, 56, 2, 59, 60, 53, 49, 75, 50, 63, 54, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 66, 62, 2, 65, 2, 73, 74, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 71, 2, 72, 52, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 67, 51, 68, 70, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 57, 58, 61 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 8, 9, 13, 14, 18, 19, 23, 26, 32, 36, 40, 43, 45, 49, 51, 54, 57, 62, 63, 65, 66, 71, 72, 74, 76, 78, 80, 83, 89, 93, 96, 102, 110, 114, 117, 123, 127, 129, 132, 137, 141, 146, 150, 152, 155, 157, 159, 162, 164, 168, 172, 176, 179, 182, 186, 192, 198, 201, 202, 207, 208, 212, 213, 216, 217, 222, 227, 232, 238, 240, 242, 245, 246, 250, 252, 256, 257, 258, 259, 268, 269, 275, 276, 279, 280, 283, 284, 285, 293, 294, 300, 302, 306, 310, 314, 318, 322, 326, 330, 334, 338, 342, 346, 350, 354, 358, 362, 366, 370, 374, 378, 382, 384, 387, 390, 393, 396, 399, 402, 405, 408, 412, 418, 425, 427, 429, 433, 439, 445, 450, 457, 466, 468, 474, 480, 486, 494, 496, 497, 501, 503, 508, 510, 515, 517, 521, 523, 525, 527, 529, 531, 533, 535, 536, 538, 540, 542, 544, 549, 554, 556, 558, 560, 563, 565, 567, 569, 571, 573, 577, 579, 581, 583, 586, 588, 590, 592, 594, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 620, 625, 630, 633, 637, 643, 645, 647, 650, 654, 660, 664, 670, 674, 678, 684, 693, 699, 708, 714, 715, 719, 720, 722, 726, 728, 733, 736, 737, 741, 743, 747, 749, 753, 755, 759, 761, 765, 767, 771, 775, 778, 783, 787, 793, 799, 801, 805, 807, 810, 812, 816, 821, 823, 826, 829, 831, 833, 837, 838, 841, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 861, 866, 868, 871, 874, 877, 880, 883, 886, 888, 892, 894, 898, 900, 904, 906, 910, 912, 916, 918, 920, 924, 928, 929, 932, 933, 935, 936, 938, 939, 941, 942, 944, 945, 947, 948, 950, 951, 953, 954, 956, 957, 959, 964, 969, 975, 982, 987, 992, 994, 996, 998, 1000, 1002, 1004, 1006, 1008, 1010, 1014, 1019, 1025, 1030, 1035, 1038, 1041, 1046, 1050, 1054, 1060, 1064, 1069, 1073, 1079, 1081, 1082, 1084, 1088, 1090, 1092, 1095, 1097, 1099, 1105, 1106, 1109, 1111, 1115, 1117, 1121, 1123 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { 77, 0, -1, 79, 78, 81, 166, -1, -1, 25, 141, 62, -1, -1, 80, 86, 88, -1, -1, 81, 82, 62, -1, 21, 83, -1, 21, 59, 84, 190, 60, -1, 21, 59, 60, -1, 85, 86, 88, -1, 85, 88, -1, 83, -1, 84, 62, 83, -1, 3, -1, 141, 3, -1, 63, 3, -1, 25, 24, 87, 62, -1, -1, 24, -1, -1, 89, 214, 64, 64, -1, -1, 91, -1, 158, -1, 181, -1, 1, -1, 32, 93, -1, 32, 59, 167, 190, 60, -1, 32, 59, 60, -1, 92, 94, -1, 92, 59, 94, 190, 60, -1, 92, 59, 94, 62, 168, 190, 60, -1, 92, 59, 60, -1, 31, 97, -1, 31, 59, 169, 190, 60, -1, 31, 59, 60, -1, 9, -1, 185, 146, -1, 185, 146, 65, 186, -1, 185, 65, 186, -1, 185, 146, 65, 186, -1, 185, 65, 186, -1, 94, -1, 185, 146, -1, 185, -1, 141, -1, 96, 146, -1, 126, -1, 126, 4, 126, -1, 186, 65, 186, -1, 186, 5, 186, -1, 126, 42, -1, 126, 37, -1, 7, 187, 66, -1, 7, 187, 65, 126, 66, -1, 7, 187, 5, 126, 66, -1, 12, 66, -1, -1, 67, 101, 183, 68, -1, -1, 99, 103, 183, -1, -1, 104, 102, -1, -1, 35, 106, 183, 68, -1, 186, 65, 26, 126, -1, 186, 5, 26, 126, -1, 194, 62, 194, 62, 194, -1, 194, -1, 107, -1, 108, 105, -1, -1, 16, 111, 109, -1, 194, -1, 194, 62, 194, -1, -1, -1, -1, 20, 114, 112, 115, 105, 116, 119, 120, -1, -1, 14, 20, 118, 112, 105, -1, -1, 119, 117, -1, -1, 14, 100, -1, -1, -1, 30, 122, 112, 123, 35, 104, 68, -1, -1, 28, 125, 35, 104, 68, -1, 127, -1, 126, 47, 126, -1, 126, 33, 126, -1, 126, 38, 126, -1, 126, 46, 126, -1, 126, 45, 126, -1, 126, 43, 126, -1, 126, 39, 126, -1, 126, 40, 126, -1, 126, 49, 126, -1, 126, 50, 126, -1, 126, 51, 126, -1, 126, 52, 126, -1, 126, 53, 126, -1, 126, 54, 126, -1, 126, 55, 126, -1, 126, 56, 126, -1, 126, 34, 126, -1, 126, 44, 126, -1, 126, 48, 126, -1, 126, 36, 126, -1, 134, -1, 53, 127, -1, 56, 127, -1, 49, 127, -1, 50, 127, -1, 69, 127, -1, 70, 127, -1, 52, 127, -1, 36, 127, -1, 134, 59, 60, -1, 134, 59, 187, 191, 60, -1, 134, 59, 187, 11, 191, 60, -1, 3, -1, 143, -1, 134, 63, 141, -1, 134, 63, 59, 135, 60, -1, 134, 63, 59, 31, 60, -1, 134, 71, 126, 72, -1, 134, 71, 192, 66, 192, 72, -1, 134, 71, 192, 66, 192, 66, 192, 72, -1, 128, -1, 149, 59, 126, 191, 60, -1, 150, 137, 130, 189, 68, -1, 129, 67, 130, 189, 68, -1, 59, 135, 60, 67, 130, 189, 68, -1, 165, -1, -1, 126, 66, 133, -1, 126, -1, 67, 130, 189, 68, -1, 126, -1, 67, 130, 189, 68, -1, 129, -1, 59, 135, 60, -1, 126, -1, 147, -1, 146, -1, 35, -1, 67, -1, 141, -1, 141, -1, -1, 138, -1, 24, -1, 142, -1, 73, -1, 74, 3, 63, 24, -1, 74, 3, 63, 73, -1, 141, -1, 138, -1, 11, -1, 11, 146, -1, 155, -1, 161, -1, 153, -1, 154, -1, 152, -1, 59, 146, 60, -1, 155, -1, 161, -1, 153, -1, 53, 147, -1, 161, -1, 153, -1, 154, -1, 152, -1, 59, 146, 60, -1, 161, -1, 153, -1, 153, -1, 155, -1, 161, -1, 153, -1, 154, -1, 152, -1, 143, -1, 143, 63, 141, -1, 71, 192, 72, 146, -1, 71, 11, 72, 146, -1, 8, 148, -1, 8, 36, 146, -1, 23, 71, 146, 72, 146, -1, 156, -1, 157, -1, 53, 146, -1, 36, 8, 146, -1, 29, 137, 170, 190, 68, -1, 29, 137, 68, -1, 22, 137, 171, 190, 68, -1, 22, 137, 68, -1, 17, 159, 162, -1, 141, 59, 179, 60, 163, -1, 59, 179, 60, 141, 59, 179, 60, 163, -1, 200, 59, 195, 60, 210, -1, 59, 215, 60, 141, 59, 195, 60, 210, -1, 17, 59, 179, 60, 163, -1, -1, 67, 183, 68, -1, -1, 151, -1, 59, 179, 60, -1, 161, -1, 164, 137, 183, 68, -1, 164, 1, -1, -1, 166, 90, 62, -1, 93, -1, 167, 62, 93, -1, 95, -1, 168, 62, 95, -1, 97, -1, 169, 62, 97, -1, 172, -1, 170, 62, 172, -1, 175, -1, 171, 62, 175, -1, 184, 146, 198, -1, 174, 198, -1, 59, 174, 60, 198, -1, 53, 174, 198, -1, 59, 53, 174, 60, 198, -1, 53, 59, 174, 60, 198, -1, 24, -1, 24, 63, 141, -1, 173, -1, 138, 176, -1, 173, -1, 59, 173, 60, -1, 59, 179, 60, 163, -1, 136, -1, 141, 136, -1, 141, 145, -1, 145, -1, 177, -1, 178, 75, 177, -1, -1, 178, 191, -1, -1, 100, -1, 91, -1, 181, -1, 1, -1, 98, -1, 110, -1, 121, -1, 124, -1, 113, -1, -1, 144, 66, 182, 180, -1, 15, -1, 6, 140, -1, 10, 140, -1, 18, 128, -1, 13, 128, -1, 19, 138, -1, 27, 193, -1, 180, -1, 183, 62, 180, -1, 138, -1, 184, 75, 138, -1, 139, -1, 185, 75, 139, -1, 126, -1, 186, 75, 126, -1, 135, -1, 187, 75, 135, -1, 131, -1, 132, -1, 188, 75, 131, -1, 188, 75, 132, -1, -1, 188, 191, -1, -1, 62, -1, -1, 75, -1, -1, 126, -1, -1, 186, -1, -1, 98, -1, -1, 215, -1, -1, 216, -1, -1, 217, -1, -1, 3, -1, 21, 24, 3, 62, -1, 32, 200, 202, 62, -1, 9, 200, 65, 213, 62, -1, 9, 200, 202, 65, 213, 62, -1, 31, 201, 202, 62, -1, 17, 160, 162, 62, -1, 142, -1, 200, -1, 204, -1, 205, -1, 206, -1, 204, -1, 206, -1, 142, -1, 24, -1, 71, 72, 202, -1, 71, 3, 72, 202, -1, 23, 71, 202, 72, 202, -1, 29, 67, 196, 68, -1, 22, 67, 197, 68, -1, 53, 202, -1, 8, 203, -1, 8, 59, 205, 60, -1, 8, 36, 202, -1, 36, 8, 202, -1, 17, 59, 195, 60, 210, -1, 141, 202, 198, -1, 141, 11, 202, 198, -1, 141, 202, 198, -1, 141, 59, 195, 60, 210, -1, 202, -1, -1, 211, -1, 59, 195, 60, -1, 202, -1, 3, -1, 50, 3, -1, 141, -1, 212, -1, 59, 212, 49, 212, 60, -1, -1, 214, 199, -1, 207, -1, 215, 75, 207, -1, 208, -1, 216, 62, 208, -1, 209, -1, 217, 62, 209, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 124, 124, 133, 139, 150, 150, 165, 166, 169, 170, 171, 174, 211, 222, 223, 226, 233, 240, 249, 263, 264, 271, 271, 284, 288, 289, 293, 298, 304, 308, 312, 316, 322, 328, 334, 339, 343, 347, 353, 359, 363, 367, 373, 377, 383, 384, 388, 394, 403, 409, 427, 432, 444, 460, 465, 472, 492, 510, 519, 538, 537, 552, 551, 583, 586, 593, 592, 603, 609, 618, 629, 635, 638, 646, 645, 656, 662, 674, 678, 683, 673, 704, 703, 716, 719, 725, 728, 740, 744, 739, 762, 761, 777, 778, 782, 786, 790, 794, 798, 802, 806, 810, 814, 818, 822, 826, 830, 834, 838, 842, 846, 850, 855, 861, 862, 866, 877, 881, 885, 889, 894, 898, 908, 912, 917, 925, 929, 930, 941, 945, 949, 953, 957, 965, 966, 972, 979, 985, 992, 995, 1002, 1008, 1025, 1032, 1033, 1040, 1041, 1060, 1061, 1064, 1067, 1071, 1082, 1091, 1097, 1100, 1103, 1110, 1111, 1117, 1130, 1145, 1153, 1165, 1170, 1176, 1177, 1178, 1179, 1180, 1181, 1187, 1188, 1189, 1190, 1196, 1197, 1198, 1199, 1200, 1206, 1207, 1210, 1213, 1214, 1215, 1216, 1217, 1220, 1221, 1234, 1238, 1243, 1248, 1253, 1257, 1258, 1261, 1267, 1274, 1280, 1287, 1293, 1304, 1318, 1347, 1387, 1412, 1430, 1439, 1442, 1450, 1454, 1458, 1465, 1471, 1476, 1488, 1491, 1501, 1502, 1508, 1509, 1515, 1519, 1525, 1526, 1532, 1536, 1542, 1565, 1570, 1576, 1582, 1589, 1598, 1607, 1622, 1628, 1633, 1637, 1644, 1657, 1658, 1664, 1670, 1673, 1677, 1683, 1686, 1695, 1698, 1699, 1703, 1704, 1710, 1711, 1712, 1713, 1714, 1716, 1715, 1730, 1736, 1740, 1744, 1748, 1752, 1757, 1776, 1782, 1790, 1794, 1800, 1804, 1810, 1814, 1820, 1824, 1833, 1837, 1841, 1845, 1851, 1854, 1862, 1863, 1865, 1866, 1869, 1872, 1875, 1878, 1881, 1884, 1887, 1890, 1893, 1896, 1899, 1902, 1905, 1908, 1914, 1918, 1922, 1926, 1930, 1934, 1954, 1961, 1972, 1973, 1974, 1977, 1978, 1981, 1985, 1995, 1999, 2003, 2007, 2011, 2015, 2019, 2025, 2031, 2039, 2047, 2053, 2060, 2076, 2098, 2102, 2108, 2111, 2114, 2118, 2128, 2132, 2151, 2159, 2160, 2172, 2173, 2176, 2180, 2186, 2190, 2196, 2200 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ const char *yytname[] = { "$end", "error", "$undefined", "LLITERAL", "LASOP", "LCOLAS", "LBREAK", "LCASE", "LCHAN", "LCONST", "LCONTINUE", "LDDD", "LDEFAULT", "LDEFER", "LELSE", "LFALL", "LFOR", "LFUNC", "LGO", "LGOTO", "LIF", "LIMPORT", "LINTERFACE", "LMAP", "LNAME", "LPACKAGE", "LRANGE", "LRETURN", "LSELECT", "LSTRUCT", "LSWITCH", "LTYPE", "LVAR", "LANDAND", "LANDNOT", "LBODY", "LCOMM", "LDEC", "LEQ", "LGE", "LGT", "LIGNORE", "LINC", "LLE", "LLSH", "LLT", "LNE", "LOROR", "LRSH", "'+'", "'-'", "'|'", "'^'", "'*'", "'/'", "'%'", "'&'", "NotPackage", "NotParen", "'('", "')'", "PreferToRightParen", "';'", "'.'", "'$'", "'='", "':'", "'{'", "'}'", "'!'", "'~'", "'['", "']'", "'?'", "'@'", "','", "$accept", "file", "package", "loadsys", "@1", "imports", "import", "import_stmt", "import_stmt_list", "import_here", "import_package", "import_safety", "import_there", "@2", "xdcl", "common_dcl", "lconst", "vardcl", "constdcl", "constdcl1", "typedclname", "typedcl", "simple_stmt", "case", "compound_stmt", "@3", "caseblock", "@4", "caseblock_list", "loop_body", "@5", "range_stmt", "for_header", "for_body", "for_stmt", "@6", "if_header", "if_stmt", "@7", "@8", "@9", "elseif", "@10", "elseif_list", "else", "switch_stmt", "@11", "@12", "select_stmt", "@13", "expr", "uexpr", "pseudocall", "pexpr_no_paren", "start_complit", "keyval", "bare_complitexpr", "complitexpr", "pexpr", "expr_or_type", "name_or_type", "lbrace", "new_name", "dcl_name", "onew_name", "sym", "hidden_importsym", "name", "labelname", "dotdotdot", "ntype", "non_expr_type", "non_recvchantype", "convtype", "comptype", "fnret_type", "dotname", "othertype", "ptrtype", "recvchantype", "structtype", "interfacetype", "xfndcl", "fndcl", "hidden_fndcl", "fntype", "fnbody", "fnres", "fnlitdcl", "fnliteral", "xdcl_list", "vardcl_list", "constdcl_list", "typedcl_list", "structdcl_list", "interfacedcl_list", "structdcl", "packname", "embed", "interfacedcl", "indcl", "arg_type", "arg_type_list", "oarg_type_list_ocomma", "stmt", "non_dcl_stmt", "@14", "stmt_list", "new_name_list", "dcl_name_list", "expr_list", "expr_or_type_list", "keyval_list", "braced_keyval_list", "osemi", "ocomma", "oexpr", "oexpr_list", "osimple_stmt", "ohidden_funarg_list", "ohidden_structdcl_list", "ohidden_interfacedcl_list", "oliteral", "hidden_import", "hidden_pkg_importsym", "hidden_pkgtype", "hidden_type", "hidden_type_non_recv_chan", "hidden_type_misc", "hidden_type_recv_chan", "hidden_type_func", "hidden_funarg", "hidden_structdcl", "hidden_interfacedcl", "ohidden_funres", "hidden_funres", "hidden_literal", "hidden_constant", "hidden_import_list", "hidden_funarg_list", "hidden_structdcl_list", "hidden_interfacedcl_list", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 43, 45, 124, 94, 42, 47, 37, 38, 304, 305, 40, 41, 306, 59, 46, 36, 61, 58, 123, 125, 33, 126, 91, 93, 63, 64, 44 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 76, 77, 78, 78, 80, 79, 81, 81, 82, 82, 82, 83, 83, 84, 84, 85, 85, 85, 86, 87, 87, 89, 88, 90, 90, 90, 90, 90, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 92, 93, 93, 93, 94, 94, 95, 95, 95, 96, 97, 98, 98, 98, 98, 98, 98, 99, 99, 99, 99, 101, 100, 103, 102, 104, 104, 106, 105, 107, 107, 108, 108, 108, 109, 111, 110, 112, 112, 114, 115, 116, 113, 118, 117, 119, 119, 120, 120, 122, 123, 121, 125, 124, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127, 127, 127, 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 130, 131, 132, 132, 133, 133, 134, 134, 135, 135, 136, 137, 137, 138, 139, 140, 140, 141, 141, 141, 142, 142, 143, 144, 145, 145, 146, 146, 146, 146, 146, 146, 147, 147, 147, 147, 148, 148, 148, 148, 148, 149, 149, 150, 151, 151, 151, 151, 151, 152, 152, 153, 153, 153, 153, 153, 153, 153, 154, 155, 156, 156, 157, 157, 158, 159, 159, 160, 160, 161, 162, 162, 163, 163, 163, 164, 165, 165, 166, 166, 167, 167, 168, 168, 169, 169, 170, 170, 171, 171, 172, 172, 172, 172, 172, 172, 173, 173, 174, 175, 175, 175, 176, 177, 177, 177, 177, 178, 178, 179, 179, 180, 180, 180, 180, 180, 181, 181, 181, 181, 181, 182, 181, 181, 181, 181, 181, 181, 181, 181, 183, 183, 184, 184, 185, 185, 186, 186, 187, 187, 188, 188, 188, 188, 189, 189, 190, 190, 191, 191, 192, 192, 193, 193, 194, 194, 195, 195, 196, 196, 197, 197, 198, 198, 199, 199, 199, 199, 199, 199, 200, 201, 202, 202, 202, 203, 203, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 205, 206, 207, 207, 208, 209, 209, 210, 210, 211, 211, 212, 212, 212, 213, 213, 214, 214, 215, 215, 216, 216, 217, 217 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 4, 0, 3, 0, 3, 0, 3, 2, 5, 3, 3, 2, 1, 3, 1, 2, 2, 4, 0, 1, 0, 4, 0, 1, 1, 1, 1, 2, 5, 3, 2, 5, 7, 3, 2, 5, 3, 1, 2, 4, 3, 4, 3, 1, 2, 1, 1, 2, 1, 3, 3, 3, 2, 2, 3, 5, 5, 2, 0, 4, 0, 3, 0, 2, 0, 4, 4, 4, 5, 1, 1, 2, 0, 3, 1, 3, 0, 0, 0, 8, 0, 5, 0, 2, 0, 2, 0, 0, 7, 0, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 5, 6, 1, 1, 3, 5, 5, 4, 6, 8, 1, 5, 5, 5, 7, 1, 0, 3, 1, 4, 1, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 4, 4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 4, 2, 3, 5, 1, 1, 2, 3, 5, 3, 5, 3, 3, 5, 8, 5, 8, 5, 0, 3, 0, 1, 3, 1, 4, 2, 0, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 2, 4, 3, 5, 5, 1, 3, 1, 2, 1, 3, 4, 1, 2, 2, 1, 1, 3, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, 1, 2, 2, 2, 2, 2, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 1, 3, 3, 0, 2, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 4, 4, 5, 6, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 5, 4, 4, 2, 2, 4, 3, 3, 5, 3, 4, 3, 5, 1, 0, 1, 3, 1, 1, 2, 1, 1, 5, 0, 2, 1, 3, 1, 3, 1, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint16 yydefact[] = { 5, 0, 3, 0, 1, 0, 7, 0, 22, 157, 159, 0, 0, 158, 218, 20, 6, 344, 0, 4, 0, 0, 0, 21, 0, 0, 0, 16, 0, 0, 9, 22, 0, 8, 28, 126, 155, 0, 39, 155, 0, 263, 74, 0, 0, 0, 78, 0, 0, 292, 91, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 25, 0, 256, 257, 260, 258, 259, 50, 93, 134, 146, 114, 163, 162, 127, 0, 0, 0, 183, 196, 197, 26, 215, 0, 139, 27, 0, 19, 0, 0, 0, 0, 0, 0, 345, 160, 161, 11, 14, 286, 18, 22, 13, 17, 156, 264, 153, 0, 0, 0, 0, 162, 189, 193, 179, 177, 178, 176, 265, 134, 0, 294, 249, 0, 210, 134, 268, 294, 151, 152, 0, 0, 276, 293, 269, 0, 0, 294, 0, 0, 36, 48, 0, 29, 274, 154, 0, 122, 117, 118, 121, 115, 116, 0, 0, 148, 0, 149, 174, 172, 173, 119, 120, 0, 291, 0, 219, 0, 32, 0, 0, 0, 0, 0, 55, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 290, 261, 0, 140, 217, 0, 0, 0, 0, 310, 0, 0, 210, 0, 0, 311, 0, 0, 23, 287, 0, 12, 249, 0, 0, 194, 170, 168, 169, 166, 167, 198, 0, 0, 295, 72, 0, 75, 0, 71, 164, 243, 162, 246, 150, 247, 288, 0, 249, 0, 204, 79, 76, 157, 0, 203, 0, 286, 240, 228, 0, 64, 0, 0, 201, 272, 286, 226, 238, 302, 0, 89, 38, 224, 286, 49, 31, 220, 286, 0, 0, 40, 0, 175, 147, 0, 0, 35, 286, 0, 0, 51, 95, 110, 113, 96, 100, 101, 99, 111, 98, 97, 94, 112, 102, 103, 104, 105, 106, 107, 108, 109, 284, 123, 278, 288, 0, 128, 291, 0, 0, 288, 284, 255, 60, 253, 252, 270, 254, 0, 53, 52, 277, 0, 0, 0, 0, 318, 0, 0, 0, 0, 0, 317, 0, 312, 313, 314, 0, 346, 0, 0, 296, 0, 0, 0, 15, 10, 0, 0, 0, 180, 190, 66, 73, 0, 0, 294, 165, 244, 245, 289, 250, 212, 0, 0, 0, 294, 0, 236, 0, 249, 239, 287, 0, 0, 0, 0, 302, 0, 0, 287, 0, 303, 231, 0, 302, 0, 287, 0, 287, 0, 42, 275, 0, 0, 0, 199, 170, 168, 169, 167, 140, 192, 191, 287, 0, 44, 0, 140, 142, 280, 281, 288, 0, 288, 289, 0, 0, 0, 131, 290, 262, 289, 0, 0, 0, 0, 216, 0, 0, 325, 315, 316, 296, 300, 0, 298, 0, 324, 339, 0, 0, 341, 342, 0, 0, 0, 0, 0, 302, 0, 0, 309, 0, 297, 304, 308, 305, 212, 171, 0, 0, 0, 0, 248, 249, 162, 213, 188, 186, 187, 184, 185, 209, 212, 211, 80, 77, 237, 241, 0, 229, 202, 195, 0, 0, 92, 62, 65, 0, 233, 0, 302, 227, 200, 273, 230, 64, 225, 37, 221, 30, 41, 0, 284, 45, 222, 286, 47, 33, 43, 284, 0, 289, 285, 137, 0, 279, 124, 130, 129, 0, 135, 136, 0, 271, 327, 0, 0, 318, 0, 317, 0, 334, 350, 301, 0, 0, 0, 348, 299, 328, 340, 0, 306, 0, 319, 0, 302, 330, 0, 347, 335, 0, 69, 68, 294, 0, 249, 205, 84, 212, 0, 59, 0, 302, 302, 232, 0, 171, 0, 287, 0, 46, 0, 140, 144, 141, 282, 283, 125, 290, 132, 61, 326, 335, 296, 323, 0, 0, 302, 322, 0, 0, 320, 307, 331, 296, 296, 338, 207, 336, 67, 70, 214, 0, 86, 242, 0, 0, 56, 0, 63, 235, 234, 90, 138, 223, 34, 143, 284, 0, 329, 0, 351, 321, 332, 349, 0, 0, 0, 212, 0, 85, 81, 0, 0, 0, 133, 335, 343, 335, 337, 206, 82, 87, 58, 57, 145, 333, 208, 294, 0, 83 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 6, 2, 3, 14, 21, 30, 105, 31, 8, 24, 16, 17, 65, 327, 67, 149, 518, 519, 145, 146, 68, 500, 328, 438, 501, 577, 388, 366, 473, 237, 238, 239, 69, 127, 253, 70, 133, 378, 573, 646, 664, 619, 647, 71, 143, 399, 72, 141, 73, 74, 75, 76, 314, 423, 424, 590, 77, 316, 243, 136, 78, 150, 111, 117, 13, 80, 81, 245, 246, 163, 119, 82, 83, 480, 228, 84, 230, 231, 85, 86, 87, 130, 214, 88, 252, 486, 89, 90, 22, 280, 520, 276, 268, 259, 269, 270, 271, 261, 384, 247, 248, 249, 329, 330, 322, 331, 272, 152, 92, 317, 425, 426, 222, 374, 171, 140, 254, 466, 551, 545, 396, 100, 212, 218, 612, 443, 347, 348, 349, 351, 552, 547, 613, 614, 456, 457, 25, 467, 553, 548 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -474 static const yytype_int16 yypact[] = { -474, 48, 28, 35, -474, 258, -474, 37, -474, -474, -474, 61, 12, -474, 85, 107, -474, -474, 70, -474, 156, 82, 1059, -474, 122, 328, 22, -474, 56, 199, -474, 35, 211, -474, -474, -474, 258, 767, -474, 258, 459, -474, -474, 152, 459, 258, -474, 23, 145, 1650, -474, 23, -474, 294, 359, 1650, 1650, 1650, 1650, 1650, 1650, 1693, 1650, 1650, 1289, 159, -474, 412, -474, -474, -474, -474, -474, 939, -474, -474, 157, 302, -474, 168, -474, 175, 184, 23, 204, -474, -474, -474, 219, 54, -474, -474, 47, -474, 227, -12, 269, 227, 227, 239, -474, -474, -474, -474, -474, 240, -474, -474, -474, -474, -474, -474, -474, 250, 1813, 1813, 1813, -474, 259, -474, -474, -474, -474, -474, -474, 64, 302, 1650, 1805, 262, 260, 174, -474, 1650, -474, -474, 221, 1813, 2166, 255, -474, 290, 237, 1650, 304, 1813, -474, -474, 420, -474, -474, -474, 580, -474, -474, -474, -474, -474, -474, 1736, 1693, 2166, 280, -474, 253, -474, 50, -474, -474, 275, 2166, 285, -474, 430, -474, 612, 1650, 1650, 1650, 1650, -474, 1650, 1650, 1650, -474, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, -474, 1332, 428, 1650, -474, 1650, -474, -474, 1234, 1650, 1650, 1650, -474, 763, 258, 260, 293, 369, -474, 1992, 1992, -474, 51, 326, -474, 1805, 392, 1813, -474, -474, -474, -474, -474, -474, -474, 341, 258, -474, -474, 371, -474, 89, 342, 1813, -474, 1805, -474, -474, -474, 335, 360, 1805, 1234, -474, -474, 357, 99, 399, -474, 365, 380, -474, -474, 377, -474, 173, 151, -474, -474, 381, -474, -474, 456, 1779, -474, -474, -474, 401, -474, -474, -474, 404, 1650, 258, 366, 1838, -474, 405, 1813, 1813, -474, 407, 1650, 410, 2166, 650, -474, 2190, 877, 877, 877, 877, -474, 877, 877, 2214, -474, 461, 461, 461, 461, -474, -474, -474, -474, 1387, -474, -474, 52, 1442, -474, 2064, 411, 1160, 2031, 1387, -474, -474, -474, -474, -474, -474, 19, 255, 255, 2166, 1905, 447, 441, 439, -474, 444, 505, 1992, 225, 27, -474, 454, -474, -474, -474, 1931, -474, 125, 458, 258, 460, 465, 466, -474, -474, 463, 1813, 480, -474, -474, -474, -474, 1497, 1552, 1650, -474, -474, -474, 1805, -474, 1872, 484, 24, 371, 1650, 258, 485, 487, 1805, -474, 472, 481, 1813, 81, 399, 456, 399, 490, 289, 483, -474, -474, 258, 456, 519, 258, 495, 258, 496, 255, -474, 1650, 1897, 1813, -474, 321, 349, 350, 354, -474, -474, -474, 258, 497, 255, 1650, -474, 2094, -474, -474, 488, 491, 489, 1693, 498, 500, 502, -474, 1650, -474, -474, 506, 503, 1234, 1160, -474, 1992, 534, -474, -474, -474, 258, 1958, 1992, 258, 1992, -474, -474, 565, 149, -474, -474, 510, 504, 1992, 225, 1992, 456, 258, 258, -474, 514, 507, -474, -474, -474, 1872, -474, 1234, 1650, 1650, 515, -474, 1805, 520, -474, -474, -474, -474, -474, -474, -474, 1872, -474, -474, -474, -474, -474, 518, -474, -474, -474, 1693, 517, -474, -474, -474, 524, -474, 525, 456, -474, -474, -474, -474, -474, -474, -474, -474, -474, 255, 526, 1387, -474, -474, 527, 612, -474, 255, 1387, 1595, 1387, -474, -474, 530, -474, -474, -474, -474, 116, -474, -474, 141, -474, -474, 539, 540, 521, 542, 546, 538, -474, -474, 548, 543, 1992, 549, -474, 552, -474, -474, 562, -474, 1992, -474, 556, 456, -474, 560, -474, 1984, 238, 2166, 2166, 1650, 561, 1805, -474, -474, 1872, 32, -474, 1160, 456, 456, -474, 186, 370, 554, 258, 563, 410, 557, -474, 2166, -474, -474, -474, -474, 1650, -474, -474, -474, 1984, 258, -474, 1958, 1992, 456, -474, 258, 149, -474, -474, -474, 258, 258, -474, -474, -474, -474, -474, -474, 564, 613, -474, 1650, 1650, -474, 1693, 566, -474, -474, -474, -474, -474, -474, -474, 1387, 558, -474, 571, -474, -474, -474, -474, 577, 582, 583, 1872, 36, -474, -474, 2118, 2142, 572, -474, 1984, -474, 1984, -474, -474, -474, -474, -474, -474, -474, -474, -474, 1650, 371, -474 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -474, -474, -474, -474, -474, -474, -474, -15, -474, -474, 616, -474, -3, -474, -474, 622, -474, -125, -27, 66, -474, -124, -112, -474, 11, -474, -474, -474, 147, -368, -474, -474, -474, -474, -474, -474, -140, -474, -474, -474, -474, -474, -474, -474, -474, -474, -474, -474, -474, -474, 532, 10, 247, -474, -194, 132, 135, -474, 279, -59, 418, 67, 5, 384, 624, 425, 317, 20, -474, 424, 636, 509, -474, -474, -474, -474, -36, -37, -31, -49, -474, -474, -474, -474, -474, -32, 464, -473, -474, -474, -474, -474, -474, -474, -474, -474, 277, -119, -231, 287, -474, 300, -474, -205, -300, 652, -474, -242, -474, -63, 106, 182, -474, -316, -241, -285, -195, -474, -111, -420, -474, -474, -245, -474, 402, -474, -176, -474, 345, 249, 346, 218, 87, 96, -415, -474, -429, 252, -474, 522, -474, -474 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -277 static const yytype_int16 yytable[] = { 121, 120, 162, 273, 175, 123, 122, 321, 437, 377, 489, 324, 165, 104, 572, 236, 241, 260, 386, 360, 275, 236, 434, 279, 164, 556, 541, 394, 108, 166, 458, 236, 429, 390, 392, 401, 346, 621, 436, 403, 174, 110, 356, 357, 110, 376, 101, 213, 4, 418, 132, -215, 208, 5, 27, 206, 657, 118, 134, 27, 7, 15, 11, 427, 18, 153, 154, 155, 156, 157, 158, -267, 167, 168, 19, 9, -267, 229, 229, 229, 9, 439, 232, 232, 232, -215, 439, 440, 497, 134, 135, 229, 488, 498, 367, 102, 232, 622, 623, 459, 229, 620, -236, 326, 223, 232, 20, 624, 229, -181, 175, 165, 209, 232, 29, 229, 103, -215, 142, 29, 232, 135, 210, 164, 10, 11, -267, 428, 166, 10, 11, 23, -267, 26, 118, 118, 118, 382, 229, 538, 527, 258, 529, 232, 33, 503, 290, 267, 118, 499, 205, 165, 452, 509, 368, 139, 207, 118, 502, 27, 504, -236, 380, 164, 210, 118, 451, -236, 166, 153, 157, 656, 118, 9, 462, 381, 9, 641, 493, 636, 9, -266, 594, 635, 93, 463, -266, 229, 595, 229, 642, 643, 232, 497, 232, 118, 537, 381, 498, 453, 464, 583, 106, 439, 391, 229, 358, 229, 587, 596, 232, 128, 232, 229, 109, 28, 137, 562, 232, 29, 517, 172, 10, 11, 199, 10, 11, 524, 452, 10, 11, 566, 389, 240, -153, 229, -266, 662, 534, 663, 232, 203, -266, 204, 118, 255, 118, 411, 410, 9, 229, 229, 413, 412, 628, 232, 232, 236, 476, 431, 580, 255, 118, -182, 118, 539, 260, 236, 490, 165, 118, 546, 549, 570, 554, 453, 511, 513, -181, 585, 256, 164, 9, 559, 454, 561, 166, 125, -183, 257, 264, 131, 118, 216, 10, 11, 265, 666, 10, 11, 439, 11, 221, 220, 118, 266, 615, 118, 118, 224, 10, 11, -182, 255, 332, 333, 609, 650, 9, 126, -183, 250, 235, 126, 229, 263, 484, 251, 9, 232, 210, 10, 11, 626, 627, 625, 229, 94, 482, 481, 286, 232, 264, 485, 483, 95, 229, 287, 265, 96, 229, 232, 354, 144, 521, 232, -179, 288, 639, 97, 98, 200, 10, 11, 274, 201, 618, 10, 11, 530, 229, 229, 355, 202, 603, 232, 232, 10, 11, 165, -179, 118, 607, 9, -177, -178, 359, 404, -179, -176, 258, 164, 99, 118, 633, 118, 166, 419, 267, 634, 361, 363, 508, 118, 369, -180, 365, 118, -177, -178, 373, 211, 211, -176, 211, 211, -177, -178, 148, 379, 375, -176, 484, 381, 383, 546, 638, 118, 118, -180, 12, 406, 10, 11, 482, 481, 9, -180, 484, 485, 483, 229, 385, 393, 9, 32, 232, 79, 165, 387, 482, 481, 9, 32, 9, 485, 483, 236, 616, 395, 164, 112, 35, 400, 112, 166, 402, 37, 129, 417, 112, 173, 414, 332, 333, 420, 113, 433, 147, 151, 278, 47, 48, 9, 229, 10, 11, 318, 51, 232, 289, 118, 151, 10, 11, 178, 255, 215, 118, 217, 219, 10, 11, 10, 11, 186, 446, 118, 447, 190, 448, 449, 515, 450, 195, 196, 197, 198, 61, 460, 465, 521, 468, 471, 665, 484, 523, 469, 470, 345, 64, 256, 10, 11, 229, 345, 345, 482, 481, 232, 472, 118, 485, 483, 487, 10, 11, 492, 380, 495, 505, 507, 236, 244, 510, 512, 514, 522, 531, 528, 532, 112, 533, 526, 435, 530, 535, 112, 555, 147, 341, 536, 557, 151, 565, 165, 558, 569, 574, 571, -157, 138, 464, 576, 578, 579, 582, 164, 37, 584, 593, 118, 166, 161, 118, 484, 170, 113, 151, 597, 598, 599, 47, 48, 9, -158, 600, 482, 481, 51, 601, 606, 485, 483, 605, 602, 225, 604, 608, 610, 37, 617, 629, 631, 644, 632, 319, 645, 439, 113, 651, 652, 79, 115, 47, 48, 9, 653, 350, 226, 661, 51, 654, 655, 66, 281, 32, 107, 225, 244, 630, 64, 345, 10, 11, 282, 658, 581, 591, 345, 364, 592, 371, 124, 118, 115, 405, 345, 372, 285, 506, 226, 494, 477, 91, 244, 79, 291, 353, 575, 444, 445, 564, 64, 178, 10, 11, 282, 181, 182, 183, 540, 640, 185, 186, 187, 188, 637, 190, 191, 192, 193, 194, 195, 196, 197, 198, 151, 293, 294, 295, 296, 560, 297, 298, 299, 0, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 0, 161, 0, 320, 352, 323, 0, 0, 0, 138, 138, 334, 0, 0, 0, 0, 79, 0, 0, 227, 233, 234, 0, 0, 0, 0, 0, 345, 0, 0, 0, 0, 0, 544, 345, 0, 345, 455, 0, 0, 335, 0, 262, 0, 37, 345, 0, 345, 350, 336, 277, 0, 0, 113, 337, 338, 339, 283, 47, 48, 9, 340, 0, 0, 0, 51, 0, 244, 341, 479, 0, 0, 114, 0, 491, 0, 0, 244, 0, 112, 292, 0, 138, 0, 0, 342, 0, 112, 0, 115, 0, 112, 138, 0, 147, 116, 151, 343, 0, 0, 0, 0, 0, 344, 0, 0, 11, 64, 0, 10, 11, 151, 0, 0, 0, 422, 0, 0, 0, 161, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 362, 79, 79, 0, 0, 345, 0, 0, 0, 350, 543, 0, 550, 345, 0, 0, 370, 455, 0, 0, 345, 0, 0, 455, 0, 0, 563, 350, 0, 0, 0, 0, 0, 0, 0, 0, 79, 138, 138, 0, 0, 244, 0, 0, 0, 0, 398, 0, 0, 178, 0, 0, 0, 345, 0, 0, 544, 345, 409, 186, 0, 415, 416, 190, 191, 192, 193, 194, 195, 196, 197, 198, 0, 0, 0, 0, 138, 0, 0, 0, 0, 176, -276, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 170, 0, 0, 0, 345, 0, 345, 177, 178, 0, 179, 180, 181, 182, 183, 0, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 244, 409, 0, 0, 0, 0, 79, 0, -276, 0, 567, 568, 0, 151, 0, 0, 0, 0, -276, 0, 0, 0, 0, 0, 0, 0, 0, 496, 350, 0, 543, 0, 0, 161, 550, 455, 0, 0, 0, 350, 350, 0, 0, 0, 0, 0, 0, 227, 516, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 422, 589, 422, -2, 34, 0, 35, 0, 0, 36, 0, 37, 38, 39, 0, 0, 40, 0, 41, 42, 43, 44, 45, 46, 0, 47, 48, 9, 0, 0, 49, 50, 51, 52, 53, 54, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 58, 59, 0, 0, 60, 0, 0, 61, 0, 0, -24, 0, 0, 0, 0, 170, 0, 62, 63, 64, 0, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 648, 649, 0, 161, 586, 0, 0, 0, 325, 0, 35, 0, 422, 36, -251, 37, 38, 39, 0, -251, 40, 0, 41, 42, 113, 44, 45, 46, 0, 47, 48, 9, 0, 0, 49, 50, 51, 52, 53, 54, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 58, 59, 0, 0, 60, 0, 0, 61, 0, 0, -251, 0, 0, 0, 0, 326, -251, 62, 63, 64, 0, 10, 11, 325, 0, 35, 0, 0, 36, 0, 37, 38, 39, 0, 0, 40, 0, 41, 42, 113, 44, 45, 46, 0, 47, 48, 9, 0, 0, 49, 50, 51, 52, 53, 54, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 58, 59, 0, 0, 60, 0, 35, 61, 0, 0, -251, 37, 0, 0, 169, 326, -251, 62, 63, 64, 113, 10, 11, 0, 0, 47, 48, 9, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 56, 57, 37, 58, 59, 0, 0, 60, 0, 0, 61, 113, 0, 0, 0, 0, 47, 48, 9, 0, 62, 63, 64, 51, 10, 11, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 58, 160, 0, 0, 60, 0, 35, 61, 315, 0, 0, 37, 0, 0, 0, 0, 0, 62, 63, 64, 113, 10, 11, 0, 0, 47, 48, 9, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 58, 59, 0, 0, 60, 0, 35, 61, 0, 0, 0, 37, 0, 0, 0, 421, 0, 62, 63, 64, 113, 10, 11, 0, 0, 47, 48, 9, 0, 0, 0, 0, 51, 0, 430, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 58, 160, 0, 0, 60, 0, 35, 61, 0, 0, 0, 37, 0, 0, 0, 0, 0, 62, 63, 64, 113, 10, 11, 0, 0, 47, 48, 9, 0, 474, 0, 0, 51, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 58, 59, 0, 0, 60, 0, 35, 61, 0, 0, 0, 37, 0, 0, 0, 0, 0, 62, 63, 64, 113, 10, 11, 0, 0, 47, 48, 9, 0, 475, 0, 0, 51, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 56, 57, 37, 58, 59, 0, 0, 60, 0, 0, 61, 113, 0, 0, 0, 0, 47, 48, 9, 0, 62, 63, 64, 51, 10, 11, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 58, 59, 0, 0, 60, 0, 35, 61, 0, 0, 0, 37, 0, 0, 0, 588, 0, 62, 63, 64, 113, 10, 11, 0, 0, 47, 48, 9, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 56, 57, 37, 58, 59, 0, 0, 60, 0, 0, 61, 113, 0, 0, 0, 0, 47, 48, 9, 0, 62, 63, 64, 51, 10, 11, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 56, 57, 284, 58, 160, 0, 0, 60, 0, 0, 61, 113, 0, 0, 0, 0, 47, 48, 9, 0, 62, 63, 64, 51, 10, 11, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 37, 58, 59, 0, 0, 60, 0, 0, 61, 113, 0, 0, 0, 0, 47, 48, 9, 0, 62, 63, 64, 51, 10, 11, 0, 0, 37, 0, 225, 242, 0, 0, 0, 0, 37, 113, 0, 0, 0, 0, 47, 48, 9, 113, 0, 115, 0, 51, 47, 48, 9, 226, 0, 0, 225, 51, 0, 0, 0, 37, 0, 0, 225, 64, 0, 10, 11, 397, 113, 0, 0, 115, 0, 47, 48, 9, 0, 226, 0, 115, 51, 0, 0, 0, 0, 226, 0, 407, 0, 64, 0, 10, 11, 37, 0, 0, 0, 64, 0, 10, 11, 0, 113, 0, 115, 0, 0, 47, 48, 9, 408, 0, 0, 0, 51, 0, 0, 0, 284, 0, 0, 225, 64, 0, 10, 11, 335, 113, 0, 0, 0, 0, 47, 48, 9, 336, 0, 0, 115, 51, 337, 338, 339, 0, 478, 0, 225, 340, 0, 0, 0, 0, 335, 0, 441, 461, 64, 0, 10, 11, 0, 336, 0, 115, 0, 0, 337, 338, 339, 226, 0, 342, 0, 340, 0, 0, 0, 442, 0, 335, 341, 64, 0, 10, 11, 0, 0, 0, 336, 344, 0, 0, 11, 337, 338, 542, 0, 342, 0, 0, 340, 0, 0, 0, 0, 335, 0, 341, 0, 0, 0, 0, 0, 335, 336, 344, 0, 0, 11, 337, 338, 339, 336, 0, 342, 0, 340, 337, 338, 339, 0, 0, 0, 341, 340, 0, 0, 0, 0, 0, 0, 341, 344, 0, 10, 11, 0, 0, 0, 0, 342, 0, 0, 0, 0, 0, 611, 0, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 344, 0, 0, 11, 0, 0, 0, 0, 344, 177, 178, 11, 179, 0, 181, 182, 183, 0, 0, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 178, 0, 179, 0, 181, 182, 183, 0, 435, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 0, 0, 0, 0, 0, 0, 177, 178, 0, 179, 0, 181, 182, 183, 0, 432, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 177, 178, 0, 179, 0, 181, 182, 183, 0, 525, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 177, 178, 0, 179, 0, 181, 182, 183, 0, 659, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 177, 178, 0, 179, 0, 181, 182, 183, 0, 660, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 177, 178, 0, 0, 0, 181, 182, 183, 0, 0, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 177, 178, 0, 0, 0, 181, 182, 183, 0, 0, 185, 186, 187, 188, 0, 190, 191, 192, 193, 194, 195, 196, 197, 198 }; static const yytype_int16 yycheck[] = { 37, 37, 61, 143, 67, 37, 37, 202, 324, 251, 378, 205, 61, 28, 487, 127, 127, 136, 259, 224, 144, 133, 322, 148, 61, 454, 446, 268, 31, 61, 3, 143, 317, 264, 265, 276, 212, 5, 323, 280, 67, 36, 218, 219, 39, 250, 24, 59, 0, 290, 45, 1, 5, 25, 3, 1, 20, 37, 35, 3, 25, 24, 74, 11, 3, 55, 56, 57, 58, 59, 60, 7, 62, 63, 62, 24, 12, 114, 115, 116, 24, 62, 114, 115, 116, 35, 62, 68, 7, 35, 67, 128, 68, 12, 5, 73, 128, 65, 66, 72, 137, 574, 3, 67, 107, 137, 21, 75, 145, 59, 173, 160, 65, 145, 63, 152, 60, 67, 51, 63, 152, 67, 75, 160, 73, 74, 62, 75, 160, 73, 74, 24, 68, 63, 114, 115, 116, 256, 175, 439, 425, 136, 427, 175, 62, 390, 173, 142, 128, 68, 83, 200, 3, 398, 65, 49, 89, 137, 389, 3, 391, 62, 63, 200, 75, 145, 342, 68, 200, 159, 160, 644, 152, 24, 350, 24, 24, 606, 383, 599, 24, 7, 66, 598, 62, 60, 12, 224, 72, 226, 610, 611, 224, 7, 226, 175, 438, 24, 12, 50, 75, 517, 3, 62, 53, 242, 221, 244, 524, 68, 242, 59, 244, 250, 3, 59, 71, 462, 250, 63, 414, 62, 73, 74, 67, 73, 74, 421, 3, 73, 74, 473, 59, 127, 66, 272, 62, 652, 433, 654, 272, 66, 68, 59, 224, 24, 226, 284, 284, 24, 287, 288, 284, 284, 68, 287, 288, 369, 369, 318, 505, 24, 242, 59, 244, 441, 385, 379, 379, 318, 250, 447, 448, 478, 450, 50, 400, 402, 59, 520, 59, 318, 24, 459, 59, 461, 318, 40, 35, 68, 53, 44, 272, 24, 73, 74, 59, 665, 73, 74, 62, 74, 62, 64, 284, 68, 68, 287, 288, 59, 73, 74, 59, 24, 208, 209, 561, 633, 24, 40, 67, 59, 63, 44, 361, 35, 375, 67, 24, 361, 75, 73, 74, 578, 579, 577, 373, 9, 375, 375, 60, 373, 53, 375, 375, 17, 383, 72, 59, 21, 387, 383, 59, 59, 417, 387, 35, 72, 603, 31, 32, 59, 73, 74, 60, 63, 571, 73, 74, 428, 407, 408, 3, 71, 550, 407, 408, 73, 74, 428, 59, 361, 558, 24, 35, 35, 60, 281, 67, 35, 385, 428, 64, 373, 588, 375, 428, 291, 393, 594, 8, 60, 397, 383, 62, 35, 35, 387, 59, 59, 75, 94, 95, 59, 97, 98, 67, 67, 59, 62, 60, 67, 471, 24, 59, 601, 602, 407, 408, 59, 5, 65, 73, 74, 471, 471, 24, 67, 487, 471, 471, 478, 62, 62, 24, 20, 478, 22, 497, 72, 487, 487, 24, 28, 24, 487, 487, 569, 569, 3, 497, 36, 3, 62, 39, 497, 62, 8, 43, 62, 45, 59, 67, 367, 368, 65, 17, 66, 53, 54, 60, 22, 23, 24, 521, 73, 74, 59, 29, 521, 60, 471, 67, 73, 74, 34, 24, 95, 478, 97, 98, 73, 74, 73, 74, 44, 59, 487, 67, 48, 71, 67, 406, 8, 53, 54, 55, 56, 59, 65, 62, 584, 62, 60, 664, 574, 420, 62, 62, 212, 71, 59, 73, 74, 571, 218, 219, 574, 574, 571, 60, 521, 574, 574, 60, 73, 74, 60, 63, 68, 60, 68, 664, 128, 35, 60, 60, 60, 60, 68, 60, 136, 60, 75, 75, 624, 60, 142, 3, 144, 36, 68, 62, 148, 60, 624, 72, 62, 60, 59, 59, 49, 75, 66, 60, 60, 60, 624, 8, 62, 60, 571, 624, 61, 574, 644, 64, 17, 173, 60, 60, 59, 22, 23, 24, 59, 68, 644, 644, 29, 62, 49, 644, 644, 62, 72, 36, 68, 62, 59, 8, 60, 68, 60, 60, 68, 201, 14, 62, 17, 72, 60, 207, 53, 22, 23, 24, 60, 213, 59, 68, 29, 60, 60, 22, 65, 221, 31, 36, 224, 584, 71, 335, 73, 74, 75, 645, 510, 526, 342, 235, 526, 244, 39, 644, 53, 282, 350, 244, 160, 393, 59, 385, 373, 22, 250, 251, 65, 214, 497, 335, 335, 464, 71, 34, 73, 74, 75, 38, 39, 40, 442, 605, 43, 44, 45, 46, 601, 48, 49, 50, 51, 52, 53, 54, 55, 56, 282, 176, 177, 178, 179, 460, 181, 182, 183, -1, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, -1, 200, -1, 202, 213, 204, -1, -1, -1, 208, 209, 210, -1, -1, -1, -1, 322, -1, -1, 114, 115, 116, -1, -1, -1, -1, -1, 441, -1, -1, -1, -1, -1, 447, 448, -1, 450, 343, -1, -1, 8, -1, 137, -1, 8, 459, -1, 461, 354, 17, 145, -1, -1, 17, 22, 23, 24, 152, 22, 23, 24, 29, -1, -1, -1, 29, -1, 373, 36, 375, -1, -1, 36, -1, 380, -1, -1, 383, -1, 385, 175, -1, 281, -1, -1, 53, -1, 393, -1, 53, -1, 397, 291, -1, 400, 59, 402, 65, -1, -1, -1, -1, -1, 71, -1, -1, 74, 71, -1, 73, 74, 417, -1, -1, -1, 314, -1, -1, -1, 318, -1, -1, -1, -1, -1, 324, -1, -1, -1, -1, -1, 226, 438, 439, -1, -1, 550, -1, -1, -1, 446, 447, -1, 449, 558, -1, -1, 242, 454, -1, -1, 565, -1, -1, 460, -1, -1, 463, 464, -1, -1, -1, -1, -1, -1, -1, -1, 473, 367, 368, -1, -1, 478, -1, -1, -1, -1, 272, -1, -1, 34, -1, -1, -1, 598, -1, -1, 601, 602, 284, 44, -1, 287, 288, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, -1, -1, -1, 406, -1, -1, -1, -1, 4, 5, -1, -1, -1, -1, -1, -1, -1, 420, -1, -1, -1, -1, -1, -1, -1, 428, -1, -1, -1, -1, 433, -1, -1, -1, 652, -1, 654, 33, 34, -1, 36, 37, 38, 39, 40, -1, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 571, 361, -1, -1, -1, -1, 577, -1, 65, -1, 474, 475, -1, 584, -1, -1, -1, -1, 75, -1, -1, -1, -1, -1, -1, -1, -1, 387, 599, -1, 601, -1, -1, 497, 605, 606, -1, -1, -1, 610, 611, -1, -1, -1, -1, -1, -1, 407, 408, -1, -1, -1, -1, 517, -1, -1, -1, -1, -1, -1, 524, 525, 526, 0, 1, -1, 3, -1, -1, 6, -1, 8, 9, 10, -1, -1, 13, -1, 15, 16, 17, 18, 19, 20, -1, 22, 23, 24, -1, -1, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, -1, 52, 53, -1, -1, 56, -1, -1, 59, -1, -1, 62, -1, -1, -1, -1, 594, -1, 69, 70, 71, -1, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 621, 622, -1, 624, 521, -1, -1, -1, 1, -1, 3, -1, 633, 6, 7, 8, 9, 10, -1, 12, 13, -1, 15, 16, 17, 18, 19, 20, -1, 22, 23, 24, -1, -1, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, -1, 52, 53, -1, -1, 56, -1, -1, 59, -1, -1, 62, -1, -1, -1, -1, 67, 68, 69, 70, 71, -1, 73, 74, 1, -1, 3, -1, -1, 6, -1, 8, 9, 10, -1, -1, 13, -1, 15, 16, 17, 18, 19, 20, -1, 22, 23, 24, -1, -1, 27, 28, 29, 30, 31, 32, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, -1, 52, 53, -1, -1, 56, -1, 3, 59, -1, -1, 62, 8, -1, -1, 11, 67, 68, 69, 70, 71, 17, 73, 74, -1, -1, 22, 23, 24, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, 49, 50, 8, 52, 53, -1, -1, 56, -1, -1, 59, 17, -1, -1, -1, -1, 22, 23, 24, -1, 69, 70, 71, 29, 73, 74, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, -1, 52, 53, -1, -1, 56, -1, 3, 59, 60, -1, -1, 8, -1, -1, -1, -1, -1, 69, 70, 71, 17, 73, 74, -1, -1, 22, 23, 24, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, -1, 52, 53, -1, -1, 56, -1, 3, 59, -1, -1, -1, 8, -1, -1, -1, 67, -1, 69, 70, 71, 17, 73, 74, -1, -1, 22, 23, 24, -1, -1, -1, -1, 29, -1, 31, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, -1, 52, 53, -1, -1, 56, -1, 3, 59, -1, -1, -1, 8, -1, -1, -1, -1, -1, 69, 70, 71, 17, 73, 74, -1, -1, 22, 23, 24, -1, 26, -1, -1, 29, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, -1, 52, 53, -1, -1, 56, -1, 3, 59, -1, -1, -1, 8, -1, -1, -1, -1, -1, 69, 70, 71, 17, 73, 74, -1, -1, 22, 23, 24, -1, 26, -1, -1, 29, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, 49, 50, 8, 52, 53, -1, -1, 56, -1, -1, 59, 17, -1, -1, -1, -1, 22, 23, 24, -1, 69, 70, 71, 29, 73, 74, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, -1, 52, 53, -1, -1, 56, -1, 3, 59, -1, -1, -1, 8, -1, -1, -1, 67, -1, 69, 70, 71, 17, 73, 74, -1, -1, 22, 23, 24, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, 49, 50, 8, 52, 53, -1, -1, 56, -1, -1, 59, 17, -1, -1, -1, -1, 22, 23, 24, -1, 69, 70, 71, 29, 73, 74, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, 49, 50, 8, 52, 53, -1, -1, 56, -1, -1, 59, 17, -1, -1, -1, -1, 22, 23, 24, -1, 69, 70, 71, 29, 73, 74, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, 50, 8, 52, 53, -1, -1, 56, -1, -1, 59, 17, -1, -1, -1, -1, 22, 23, 24, -1, 69, 70, 71, 29, 73, 74, -1, -1, 8, -1, 36, 11, -1, -1, -1, -1, 8, 17, -1, -1, -1, -1, 22, 23, 24, 17, -1, 53, -1, 29, 22, 23, 24, 59, -1, -1, 36, 29, -1, -1, -1, 8, -1, -1, 36, 71, -1, 73, 74, 75, 17, -1, -1, 53, -1, 22, 23, 24, -1, 59, -1, 53, 29, -1, -1, -1, -1, 59, -1, 36, -1, 71, -1, 73, 74, 8, -1, -1, -1, 71, -1, 73, 74, -1, 17, -1, 53, -1, -1, 22, 23, 24, 59, -1, -1, -1, 29, -1, -1, -1, 8, -1, -1, 36, 71, -1, 73, 74, 8, 17, -1, -1, -1, -1, 22, 23, 24, 17, -1, -1, 53, 29, 22, 23, 24, -1, 59, -1, 36, 29, -1, -1, -1, -1, 8, -1, 36, 11, 71, -1, 73, 74, -1, 17, -1, 53, -1, -1, 22, 23, 24, 59, -1, 53, -1, 29, -1, -1, -1, 59, -1, 8, 36, 71, -1, 73, 74, -1, -1, -1, 17, 71, -1, -1, 74, 22, 23, 24, -1, 53, -1, -1, 29, -1, -1, -1, -1, 8, -1, 36, -1, -1, -1, -1, -1, 8, 17, 71, -1, -1, 74, 22, 23, 24, 17, -1, 53, -1, 29, 22, 23, 24, -1, -1, -1, 36, 29, -1, -1, -1, -1, -1, -1, 36, 71, -1, 73, 74, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, 59, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, 74, -1, -1, -1, -1, 71, 33, 34, 74, 36, -1, 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, 34, -1, 36, -1, 38, 39, 40, -1, 75, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, -1, -1, -1, -1, -1, 33, 34, -1, 36, -1, 38, 39, 40, -1, 72, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 33, 34, -1, 36, -1, 38, 39, 40, -1, 66, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 33, 34, -1, 36, -1, 38, 39, 40, -1, 66, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 33, 34, -1, 36, -1, 38, 39, 40, -1, 66, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 33, 34, -1, -1, -1, 38, 39, 40, -1, -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 33, 34, -1, -1, -1, 38, 39, 40, -1, -1, 43, 44, 45, 46, -1, 48, 49, 50, 51, 52, 53, 54, 55, 56 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 77, 79, 80, 0, 25, 78, 25, 86, 24, 73, 74, 141, 142, 81, 24, 88, 89, 3, 62, 21, 82, 166, 24, 87, 214, 63, 3, 59, 63, 83, 85, 141, 62, 1, 3, 6, 8, 9, 10, 13, 15, 16, 17, 18, 19, 20, 22, 23, 27, 28, 29, 30, 31, 32, 36, 49, 50, 52, 53, 56, 59, 69, 70, 71, 90, 91, 92, 98, 110, 113, 121, 124, 126, 127, 128, 129, 134, 138, 141, 143, 144, 149, 150, 153, 156, 157, 158, 161, 164, 165, 181, 186, 62, 9, 17, 21, 31, 32, 64, 199, 24, 73, 60, 83, 84, 3, 86, 88, 3, 138, 140, 141, 17, 36, 53, 59, 141, 143, 148, 152, 153, 154, 161, 140, 128, 134, 111, 59, 141, 159, 128, 138, 114, 35, 67, 137, 71, 126, 186, 193, 125, 137, 122, 59, 96, 97, 141, 59, 93, 139, 141, 185, 127, 127, 127, 127, 127, 127, 36, 53, 126, 135, 147, 153, 155, 161, 127, 127, 11, 126, 192, 62, 59, 94, 185, 4, 33, 34, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 67, 59, 63, 71, 66, 59, 137, 1, 137, 5, 65, 75, 142, 200, 59, 160, 200, 24, 200, 201, 200, 64, 62, 190, 88, 59, 36, 59, 146, 152, 153, 154, 155, 161, 146, 146, 63, 98, 107, 108, 109, 186, 194, 11, 136, 141, 145, 146, 177, 178, 179, 59, 67, 162, 112, 194, 24, 59, 68, 138, 171, 173, 175, 146, 35, 53, 59, 68, 138, 170, 172, 173, 174, 184, 112, 60, 97, 169, 146, 60, 93, 167, 65, 75, 146, 8, 147, 60, 72, 72, 60, 94, 65, 146, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 130, 60, 135, 187, 59, 141, 126, 192, 182, 126, 130, 1, 67, 91, 100, 180, 181, 183, 186, 186, 126, 8, 17, 22, 23, 24, 29, 36, 53, 65, 71, 142, 202, 204, 205, 206, 141, 207, 215, 162, 59, 3, 202, 202, 83, 60, 179, 8, 146, 60, 141, 35, 105, 5, 65, 62, 146, 136, 145, 75, 191, 60, 179, 183, 115, 62, 63, 24, 173, 59, 176, 62, 190, 72, 104, 59, 174, 53, 174, 62, 190, 3, 198, 75, 146, 123, 62, 190, 62, 190, 186, 139, 65, 36, 59, 146, 152, 153, 154, 161, 67, 146, 146, 62, 190, 186, 65, 67, 126, 131, 132, 188, 189, 11, 75, 191, 31, 135, 72, 66, 180, 75, 191, 189, 101, 62, 68, 36, 59, 203, 204, 206, 59, 67, 71, 67, 8, 202, 3, 50, 59, 141, 212, 213, 3, 72, 65, 11, 202, 60, 75, 62, 195, 215, 62, 62, 62, 60, 60, 106, 26, 26, 194, 177, 59, 141, 151, 152, 153, 154, 155, 161, 163, 60, 68, 105, 194, 141, 60, 179, 175, 68, 146, 7, 12, 68, 99, 102, 174, 198, 174, 60, 172, 68, 138, 198, 35, 97, 60, 93, 60, 186, 146, 130, 94, 95, 168, 185, 60, 186, 130, 66, 75, 191, 68, 191, 135, 60, 60, 60, 192, 60, 68, 183, 180, 202, 205, 195, 24, 141, 142, 197, 202, 209, 217, 202, 141, 196, 208, 216, 202, 3, 212, 62, 72, 202, 213, 202, 198, 141, 207, 60, 183, 126, 126, 62, 179, 59, 163, 116, 60, 187, 66, 103, 60, 60, 198, 104, 60, 189, 62, 190, 146, 189, 67, 126, 133, 131, 132, 60, 66, 72, 68, 60, 60, 59, 68, 62, 72, 202, 68, 62, 49, 202, 62, 198, 59, 59, 202, 210, 211, 68, 194, 60, 179, 119, 163, 5, 65, 66, 75, 183, 198, 198, 68, 68, 95, 60, 68, 130, 192, 210, 195, 209, 202, 198, 208, 212, 195, 195, 60, 14, 117, 120, 126, 126, 189, 72, 60, 60, 60, 60, 163, 20, 100, 66, 66, 68, 210, 210, 118, 112, 105 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (YYLEX_PARAM) #else # define YYLEX yylex () #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) #else static void yy_stack_print (bottom, top) yytype_int16 *bottom; yytype_int16 *top; #endif { YYFPRINTF (stderr, "Stack now"); for (; bottom <= top; ++bottom) YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule) #else static void yy_reduce_print (yyvsp, yyrule) YYSTYPE *yyvsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { fprintf (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); fprintf (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into YYRESULT an error message about the unexpected token YYCHAR while in state YYSTATE. Return the number of bytes copied, including the terminating null byte. If YYRESULT is null, do not copy anything; just return the number of bytes that would be copied. As a special case, return 0 if an ordinary "syntax error" message will do. Return YYSIZE_MAXIMUM if overflow occurs during size calculation. */ static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar) { int yyn = yypact[yystate]; if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) return 0; else { int yytype = YYTRANSLATE (yychar); YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; int yysize_overflow = 0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; int yyx; # if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ YY_("syntax error, unexpected %s"); YY_("syntax error, unexpected %s, expecting %s"); YY_("syntax error, unexpected %s, expecting %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); # endif char *yyfmt; char const *yyf; static char const yyunexpected[] = "syntax error, unexpected %s"; static char const yyexpecting[] = ", expecting %s"; static char const yyor[] = " or %s"; char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) * (sizeof yyor - 1))]; char const *yyprefix = yyexpecting; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 1; yyarg[0] = yytname[yytype]; yyfmt = yystpcpy (yyformat, yyunexpected); for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; yyformat[sizeof yyunexpected - 1] = '\0'; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); yyprefix = yyor; } yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; if (yysize_overflow) return YYSIZE_MAXIMUM; if (yyresult) { /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ char *yyp = yyresult; int yyi = 0; while ((*yyp = *yyf) != '\0') { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else { yyp++; yyf++; } } } return yysize; } } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void yydestruct (yymsg, yytype, yyvaluep) const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /* The look-ahead symbol. */ int yychar, yystate; /* The semantic value of the look-ahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { int yyn; int yyresult; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* Look-ahead token as an internal (translated) token number. */ int yytoken = 0; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif /* Three stacks and their tools: `yyss': related to states, `yyvs': related to semantic values, `yyls': related to locations. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss = yyssa; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) YYSIZE_T yystacksize = YYINITDEPTH; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss); YYSTACK_RELOCATE (yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a look-ahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a look-ahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } if (yyn == YYFINAL) YYACCEPT; /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the look-ahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: #line 128 "go.y" { xtop = concat(xtop, (yyvsp[(4) - (4)].list)); } break; case 3: #line 134 "go.y" { prevlineno = lineno; yyerror("package statement must be first"); errorexit(); } break; case 4: #line 140 "go.y" { mkpackage((yyvsp[(2) - (3)].sym)->name); } break; case 5: #line 150 "go.y" { importpkg = runtimepkg; if(debug['A']) cannedimports("runtime.builtin", "package runtime\n\n$$\n\n"); else cannedimports("runtime.builtin", runtimeimport); curio.importsafe = 1; } break; case 6: #line 161 "go.y" { importpkg = nil; } break; case 12: #line 175 "go.y" { Pkg *ipkg; Sym *my; Node *pack; ipkg = importpkg; my = importmyname; importpkg = nil; importmyname = S; if(my == nil) my = lookup(ipkg->name); pack = nod(OPACK, N, N); pack->sym = my; pack->pkg = ipkg; pack->lineno = (yyvsp[(1) - (3)].i); if(my->name[0] == '.') { importdot(ipkg, pack); break; } if(strcmp(my->name, "init") == 0) { yyerror("cannot import package as init - init must be a func"); break; } if(my->name[0] == '_' && my->name[1] == '\0') break; if(my->def) { lineno = (yyvsp[(1) - (3)].i); redeclare(my, "as imported package name"); } my->def = pack; my->lastlineno = (yyvsp[(1) - (3)].i); my->block = 1; // at top level } break; case 13: #line 212 "go.y" { // When an invalid import path is passed to importfile, // it calls yyerror and then sets up a fake import with // no package statement. This allows us to test more // than one invalid import statement in a single file. if(nerrors == 0) fatal("phase error in import"); } break; case 16: #line 227 "go.y" { // import with original name (yyval.i) = parserline(); importmyname = S; importfile(&(yyvsp[(1) - (1)].val), (yyval.i)); } break; case 17: #line 234 "go.y" { // import with given name (yyval.i) = parserline(); importmyname = (yyvsp[(1) - (2)].sym); importfile(&(yyvsp[(2) - (2)].val), (yyval.i)); } break; case 18: #line 241 "go.y" { // import into my name space (yyval.i) = parserline(); importmyname = lookup("."); importfile(&(yyvsp[(2) - (2)].val), (yyval.i)); } break; case 19: #line 250 "go.y" { if(importpkg->name == nil) { importpkg->name = (yyvsp[(2) - (4)].sym)->name; pkglookup((yyvsp[(2) - (4)].sym)->name, nil)->npkg++; } else if(strcmp(importpkg->name, (yyvsp[(2) - (4)].sym)->name) != 0) yyerror("conflicting names %s and %s for package \"%Z\"", importpkg->name, (yyvsp[(2) - (4)].sym)->name, importpkg->path); importpkg->direct = 1; importpkg->safe = curio.importsafe; if(safemode && !curio.importsafe) yyerror("cannot import unsafe package \"%Z\"", importpkg->path); } break; case 21: #line 265 "go.y" { if(strcmp((yyvsp[(1) - (1)].sym)->name, "safe") == 0) curio.importsafe = 1; } break; case 22: #line 271 "go.y" { defercheckwidth(); } break; case 23: #line 275 "go.y" { resumecheckwidth(); unimportfile(); } break; case 24: #line 284 "go.y" { yyerror("empty top-level declaration"); (yyval.list) = nil; } break; case 26: #line 290 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; case 27: #line 294 "go.y" { yyerror("non-declaration statement outside function body"); (yyval.list) = nil; } break; case 28: #line 299 "go.y" { (yyval.list) = nil; } break; case 29: #line 305 "go.y" { (yyval.list) = (yyvsp[(2) - (2)].list); } break; case 30: #line 309 "go.y" { (yyval.list) = (yyvsp[(3) - (5)].list); } break; case 31: #line 313 "go.y" { (yyval.list) = nil; } break; case 32: #line 317 "go.y" { (yyval.list) = (yyvsp[(2) - (2)].list); iota = -100000; lastconst = nil; } break; case 33: #line 323 "go.y" { (yyval.list) = (yyvsp[(3) - (5)].list); iota = -100000; lastconst = nil; } break; case 34: #line 329 "go.y" { (yyval.list) = concat((yyvsp[(3) - (7)].list), (yyvsp[(5) - (7)].list)); iota = -100000; lastconst = nil; } break; case 35: #line 335 "go.y" { (yyval.list) = nil; iota = -100000; } break; case 36: #line 340 "go.y" { (yyval.list) = list1((yyvsp[(2) - (2)].node)); } break; case 37: #line 344 "go.y" { (yyval.list) = (yyvsp[(3) - (5)].list); } break; case 38: #line 348 "go.y" { (yyval.list) = nil; } break; case 39: #line 354 "go.y" { iota = 0; } break; case 40: #line 360 "go.y" { (yyval.list) = variter((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node), nil); } break; case 41: #line 364 "go.y" { (yyval.list) = variter((yyvsp[(1) - (4)].list), (yyvsp[(2) - (4)].node), (yyvsp[(4) - (4)].list)); } break; case 42: #line 368 "go.y" { (yyval.list) = variter((yyvsp[(1) - (3)].list), nil, (yyvsp[(3) - (3)].list)); } break; case 43: #line 374 "go.y" { (yyval.list) = constiter((yyvsp[(1) - (4)].list), (yyvsp[(2) - (4)].node), (yyvsp[(4) - (4)].list)); } break; case 44: #line 378 "go.y" { (yyval.list) = constiter((yyvsp[(1) - (3)].list), N, (yyvsp[(3) - (3)].list)); } break; case 46: #line 385 "go.y" { (yyval.list) = constiter((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node), nil); } break; case 47: #line 389 "go.y" { (yyval.list) = constiter((yyvsp[(1) - (1)].list), N, nil); } break; case 48: #line 395 "go.y" { // different from dclname because the name // becomes visible right here, not at the end // of the declaration. (yyval.node) = typedcl0((yyvsp[(1) - (1)].sym)); } break; case 49: #line 404 "go.y" { (yyval.node) = typedcl1((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node), 1); } break; case 50: #line 410 "go.y" { (yyval.node) = (yyvsp[(1) - (1)].node); // These nodes do not carry line numbers. // Since a bare name used as an expression is an error, // introduce a wrapper node to give the correct line. switch((yyval.node)->op) { case ONAME: case ONONAME: case OTYPE: case OPACK: case OLITERAL: (yyval.node) = nod(OPAREN, (yyval.node), N); (yyval.node)->implicit = 1; break; } } break; case 51: #line 428 "go.y" { (yyval.node) = nod(OASOP, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); (yyval.node)->etype = (yyvsp[(2) - (3)].i); // rathole to pass opcode } break; case 52: #line 433 "go.y" { if((yyvsp[(1) - (3)].list)->next == nil && (yyvsp[(3) - (3)].list)->next == nil) { // simple (yyval.node) = nod(OAS, (yyvsp[(1) - (3)].list)->n, (yyvsp[(3) - (3)].list)->n); break; } // multiple (yyval.node) = nod(OAS2, N, N); (yyval.node)->list = (yyvsp[(1) - (3)].list); (yyval.node)->rlist = (yyvsp[(3) - (3)].list); } break; case 53: #line 445 "go.y" { if((yyvsp[(3) - (3)].list)->n->op == OTYPESW) { (yyval.node) = nod(OTYPESW, N, (yyvsp[(3) - (3)].list)->n->right); if((yyvsp[(3) - (3)].list)->next != nil) yyerror("expr.(type) must be alone in list"); if((yyvsp[(1) - (3)].list)->next != nil) yyerror("argument count mismatch: %d = %d", count((yyvsp[(1) - (3)].list)), 1); else if(((yyvsp[(1) - (3)].list)->n->op != ONAME && (yyvsp[(1) - (3)].list)->n->op != OTYPE && (yyvsp[(1) - (3)].list)->n->op != ONONAME) || isblank((yyvsp[(1) - (3)].list)->n)) yyerror("invalid variable name %N in type switch", (yyvsp[(1) - (3)].list)->n); else (yyval.node)->left = dclname((yyvsp[(1) - (3)].list)->n->sym); // it's a colas, so must not re-use an oldname. break; } (yyval.node) = colas((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list), (yyvsp[(2) - (3)].i)); } break; case 54: #line 461 "go.y" { (yyval.node) = nod(OASOP, (yyvsp[(1) - (2)].node), nodintconst(1)); (yyval.node)->etype = OADD; } break; case 55: #line 466 "go.y" { (yyval.node) = nod(OASOP, (yyvsp[(1) - (2)].node), nodintconst(1)); (yyval.node)->etype = OSUB; } break; case 56: #line 473 "go.y" { Node *n, *nn; // will be converted to OCASE // right will point to next case // done in casebody() markdcl(); (yyval.node) = nod(OXCASE, N, N); (yyval.node)->list = (yyvsp[(2) - (3)].list); if(typesw != N && typesw->right != N && (n=typesw->right->left) != N) { // type switch - declare variable nn = newname(n->sym); declare(nn, dclcontext); (yyval.node)->nname = nn; // keep track of the instances for reporting unused nn->defn = typesw->right; } } break; case 57: #line 493 "go.y" { Node *n; // will be converted to OCASE // right will point to next case // done in casebody() markdcl(); (yyval.node) = nod(OXCASE, N, N); if((yyvsp[(2) - (5)].list)->next == nil) n = nod(OAS, (yyvsp[(2) - (5)].list)->n, (yyvsp[(4) - (5)].node)); else { n = nod(OAS2, N, N); n->list = (yyvsp[(2) - (5)].list); n->rlist = list1((yyvsp[(4) - (5)].node)); } (yyval.node)->list = list1(n); } break; case 58: #line 511 "go.y" { // will be converted to OCASE // right will point to next case // done in casebody() markdcl(); (yyval.node) = nod(OXCASE, N, N); (yyval.node)->list = list1(colas((yyvsp[(2) - (5)].list), list1((yyvsp[(4) - (5)].node)), (yyvsp[(3) - (5)].i))); } break; case 59: #line 520 "go.y" { Node *n, *nn; markdcl(); (yyval.node) = nod(OXCASE, N, N); if(typesw != N && typesw->right != N && (n=typesw->right->left) != N) { // type switch - declare variable nn = newname(n->sym); declare(nn, dclcontext); (yyval.node)->nname = nn; // keep track of the instances for reporting unused nn->defn = typesw->right; } } break; case 60: #line 538 "go.y" { markdcl(); } break; case 61: #line 542 "go.y" { if((yyvsp[(3) - (4)].list) == nil) (yyval.node) = nod(OEMPTY, N, N); else (yyval.node) = liststmt((yyvsp[(3) - (4)].list)); popdcl(); } break; case 62: #line 552 "go.y" { // If the last token read by the lexer was consumed // as part of the case, clear it (parser has cleared yychar). // If the last token read by the lexer was the lookahead // leave it alone (parser has it cached in yychar). // This is so that the stmt_list action doesn't look at // the case tokens if the stmt_list is empty. yylast = yychar; (yyvsp[(1) - (1)].node)->xoffset = block; } break; case 63: #line 563 "go.y" { int last; // This is the only place in the language where a statement // list is not allowed to drop the final semicolon, because // it's the only place where a statement list is not followed // by a closing brace. Handle the error for pedantry. // Find the final token of the statement list. // yylast is lookahead; yyprev is last of stmt_list last = yyprev; if(last > 0 && last != ';' && yychar != '}') yyerror("missing statement after label"); (yyval.node) = (yyvsp[(1) - (3)].node); (yyval.node)->nbody = (yyvsp[(3) - (3)].list); popdcl(); } break; case 64: #line 583 "go.y" { (yyval.list) = nil; } break; case 65: #line 587 "go.y" { (yyval.list) = list((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); } break; case 66: #line 593 "go.y" { markdcl(); } break; case 67: #line 597 "go.y" { (yyval.list) = (yyvsp[(3) - (4)].list); popdcl(); } break; case 68: #line 604 "go.y" { (yyval.node) = nod(ORANGE, N, (yyvsp[(4) - (4)].node)); (yyval.node)->list = (yyvsp[(1) - (4)].list); (yyval.node)->etype = 0; // := flag } break; case 69: #line 610 "go.y" { (yyval.node) = nod(ORANGE, N, (yyvsp[(4) - (4)].node)); (yyval.node)->list = (yyvsp[(1) - (4)].list); (yyval.node)->colas = 1; colasdefn((yyvsp[(1) - (4)].list), (yyval.node)); } break; case 70: #line 619 "go.y" { // init ; test ; incr if((yyvsp[(5) - (5)].node) != N && (yyvsp[(5) - (5)].node)->colas != 0) yyerror("cannot declare in the for-increment"); (yyval.node) = nod(OFOR, N, N); if((yyvsp[(1) - (5)].node) != N) (yyval.node)->ninit = list1((yyvsp[(1) - (5)].node)); (yyval.node)->ntest = (yyvsp[(3) - (5)].node); (yyval.node)->nincr = (yyvsp[(5) - (5)].node); } break; case 71: #line 630 "go.y" { // normal test (yyval.node) = nod(OFOR, N, N); (yyval.node)->ntest = (yyvsp[(1) - (1)].node); } break; case 73: #line 639 "go.y" { (yyval.node) = (yyvsp[(1) - (2)].node); (yyval.node)->nbody = concat((yyval.node)->nbody, (yyvsp[(2) - (2)].list)); } break; case 74: #line 646 "go.y" { markdcl(); } break; case 75: #line 650 "go.y" { (yyval.node) = (yyvsp[(3) - (3)].node); popdcl(); } break; case 76: #line 657 "go.y" { // test (yyval.node) = nod(OIF, N, N); (yyval.node)->ntest = (yyvsp[(1) - (1)].node); } break; case 77: #line 663 "go.y" { // init ; test (yyval.node) = nod(OIF, N, N); if((yyvsp[(1) - (3)].node) != N) (yyval.node)->ninit = list1((yyvsp[(1) - (3)].node)); (yyval.node)->ntest = (yyvsp[(3) - (3)].node); } break; case 78: #line 674 "go.y" { markdcl(); } break; case 79: #line 678 "go.y" { if((yyvsp[(3) - (3)].node)->ntest == N) yyerror("missing condition in if statement"); } break; case 80: #line 683 "go.y" { (yyvsp[(3) - (5)].node)->nbody = (yyvsp[(5) - (5)].list); } break; case 81: #line 687 "go.y" { Node *n; NodeList *nn; (yyval.node) = (yyvsp[(3) - (8)].node); n = (yyvsp[(3) - (8)].node); popdcl(); for(nn = concat((yyvsp[(7) - (8)].list), (yyvsp[(8) - (8)].list)); nn; nn = nn->next) { if(nn->n->op == OIF) popdcl(); n->nelse = list1(nn->n); n = nn->n; } } break; case 82: #line 704 "go.y" { markdcl(); } break; case 83: #line 708 "go.y" { if((yyvsp[(4) - (5)].node)->ntest == N) yyerror("missing condition in if statement"); (yyvsp[(4) - (5)].node)->nbody = (yyvsp[(5) - (5)].list); (yyval.list) = list1((yyvsp[(4) - (5)].node)); } break; case 84: #line 716 "go.y" { (yyval.list) = nil; } break; case 85: #line 720 "go.y" { (yyval.list) = concat((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); } break; case 86: #line 725 "go.y" { (yyval.list) = nil; } break; case 87: #line 729 "go.y" { NodeList *node; node = mal(sizeof *node); node->n = (yyvsp[(2) - (2)].node); node->end = node; (yyval.list) = node; } break; case 88: #line 740 "go.y" { markdcl(); } break; case 89: #line 744 "go.y" { Node *n; n = (yyvsp[(3) - (3)].node)->ntest; if(n != N && n->op != OTYPESW) n = N; typesw = nod(OXXX, typesw, n); } break; case 90: #line 752 "go.y" { (yyval.node) = (yyvsp[(3) - (7)].node); (yyval.node)->op = OSWITCH; (yyval.node)->list = (yyvsp[(6) - (7)].list); typesw = typesw->left; popdcl(); } break; case 91: #line 762 "go.y" { typesw = nod(OXXX, typesw, N); } break; case 92: #line 766 "go.y" { (yyval.node) = nod(OSELECT, N, N); (yyval.node)->lineno = typesw->lineno; (yyval.node)->list = (yyvsp[(4) - (5)].list); typesw = typesw->left; } break; case 94: #line 779 "go.y" { (yyval.node) = nod(OOROR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 95: #line 783 "go.y" { (yyval.node) = nod(OANDAND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 96: #line 787 "go.y" { (yyval.node) = nod(OEQ, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 97: #line 791 "go.y" { (yyval.node) = nod(ONE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 98: #line 795 "go.y" { (yyval.node) = nod(OLT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 99: #line 799 "go.y" { (yyval.node) = nod(OLE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 100: #line 803 "go.y" { (yyval.node) = nod(OGE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 101: #line 807 "go.y" { (yyval.node) = nod(OGT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 102: #line 811 "go.y" { (yyval.node) = nod(OADD, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 103: #line 815 "go.y" { (yyval.node) = nod(OSUB, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 104: #line 819 "go.y" { (yyval.node) = nod(OOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 105: #line 823 "go.y" { (yyval.node) = nod(OXOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 106: #line 827 "go.y" { (yyval.node) = nod(OMUL, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 107: #line 831 "go.y" { (yyval.node) = nod(ODIV, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 108: #line 835 "go.y" { (yyval.node) = nod(OMOD, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 109: #line 839 "go.y" { (yyval.node) = nod(OAND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 110: #line 843 "go.y" { (yyval.node) = nod(OANDNOT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 111: #line 847 "go.y" { (yyval.node) = nod(OLSH, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 112: #line 851 "go.y" { (yyval.node) = nod(ORSH, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 113: #line 856 "go.y" { (yyval.node) = nod(OSEND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 115: #line 863 "go.y" { (yyval.node) = nod(OIND, (yyvsp[(2) - (2)].node), N); } break; case 116: #line 867 "go.y" { if((yyvsp[(2) - (2)].node)->op == OCOMPLIT) { // Special case for &T{...}: turn into (*T){...}. (yyval.node) = (yyvsp[(2) - (2)].node); (yyval.node)->right = nod(OIND, (yyval.node)->right, N); (yyval.node)->right->implicit = 1; } else { (yyval.node) = nod(OADDR, (yyvsp[(2) - (2)].node), N); } } break; case 117: #line 878 "go.y" { (yyval.node) = nod(OPLUS, (yyvsp[(2) - (2)].node), N); } break; case 118: #line 882 "go.y" { (yyval.node) = nod(OMINUS, (yyvsp[(2) - (2)].node), N); } break; case 119: #line 886 "go.y" { (yyval.node) = nod(ONOT, (yyvsp[(2) - (2)].node), N); } break; case 120: #line 890 "go.y" { yyerror("the bitwise complement operator is ^"); (yyval.node) = nod(OCOM, (yyvsp[(2) - (2)].node), N); } break; case 121: #line 895 "go.y" { (yyval.node) = nod(OCOM, (yyvsp[(2) - (2)].node), N); } break; case 122: #line 899 "go.y" { (yyval.node) = nod(ORECV, (yyvsp[(2) - (2)].node), N); } break; case 123: #line 909 "go.y" { (yyval.node) = nod(OCALL, (yyvsp[(1) - (3)].node), N); } break; case 124: #line 913 "go.y" { (yyval.node) = nod(OCALL, (yyvsp[(1) - (5)].node), N); (yyval.node)->list = (yyvsp[(3) - (5)].list); } break; case 125: #line 918 "go.y" { (yyval.node) = nod(OCALL, (yyvsp[(1) - (6)].node), N); (yyval.node)->list = (yyvsp[(3) - (6)].list); (yyval.node)->isddd = 1; } break; case 126: #line 926 "go.y" { (yyval.node) = nodlit((yyvsp[(1) - (1)].val)); } break; case 128: #line 931 "go.y" { if((yyvsp[(1) - (3)].node)->op == OPACK) { Sym *s; s = restrictlookup((yyvsp[(3) - (3)].sym)->name, (yyvsp[(1) - (3)].node)->pkg); (yyvsp[(1) - (3)].node)->used = 1; (yyval.node) = oldname(s); break; } (yyval.node) = nod(OXDOT, (yyvsp[(1) - (3)].node), newname((yyvsp[(3) - (3)].sym))); } break; case 129: #line 942 "go.y" { (yyval.node) = nod(ODOTTYPE, (yyvsp[(1) - (5)].node), (yyvsp[(4) - (5)].node)); } break; case 130: #line 946 "go.y" { (yyval.node) = nod(OTYPESW, N, (yyvsp[(1) - (5)].node)); } break; case 131: #line 950 "go.y" { (yyval.node) = nod(OINDEX, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node)); } break; case 132: #line 954 "go.y" { (yyval.node) = nod(OSLICE, (yyvsp[(1) - (6)].node), nod(OKEY, (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node))); } break; case 133: #line 958 "go.y" { if((yyvsp[(5) - (8)].node) == N) yyerror("middle index required in 3-index slice"); if((yyvsp[(7) - (8)].node) == N) yyerror("final index required in 3-index slice"); (yyval.node) = nod(OSLICE3, (yyvsp[(1) - (8)].node), nod(OKEY, (yyvsp[(3) - (8)].node), nod(OKEY, (yyvsp[(5) - (8)].node), (yyvsp[(7) - (8)].node)))); } break; case 135: #line 967 "go.y" { // conversion (yyval.node) = nod(OCALL, (yyvsp[(1) - (5)].node), N); (yyval.node)->list = list1((yyvsp[(3) - (5)].node)); } break; case 136: #line 973 "go.y" { (yyval.node) = (yyvsp[(3) - (5)].node); (yyval.node)->right = (yyvsp[(1) - (5)].node); (yyval.node)->list = (yyvsp[(4) - (5)].list); fixlbrace((yyvsp[(2) - (5)].i)); } break; case 137: #line 980 "go.y" { (yyval.node) = (yyvsp[(3) - (5)].node); (yyval.node)->right = (yyvsp[(1) - (5)].node); (yyval.node)->list = (yyvsp[(4) - (5)].list); } break; case 138: #line 986 "go.y" { yyerror("cannot parenthesize type in composite literal"); (yyval.node) = (yyvsp[(5) - (7)].node); (yyval.node)->right = (yyvsp[(2) - (7)].node); (yyval.node)->list = (yyvsp[(6) - (7)].list); } break; case 140: #line 995 "go.y" { // composite expression. // make node early so we get the right line number. (yyval.node) = nod(OCOMPLIT, N, N); } break; case 141: #line 1003 "go.y" { (yyval.node) = nod(OKEY, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } break; case 142: #line 1009 "go.y" { // These nodes do not carry line numbers. // Since a composite literal commonly spans several lines, // the line number on errors may be misleading. // Introduce a wrapper node to give the correct line. (yyval.node) = (yyvsp[(1) - (1)].node); switch((yyval.node)->op) { case ONAME: case ONONAME: case OTYPE: case OPACK: case OLITERAL: (yyval.node) = nod(OPAREN, (yyval.node), N); (yyval.node)->implicit = 1; } } break; case 143: #line 1026 "go.y" { (yyval.node) = (yyvsp[(2) - (4)].node); (yyval.node)->list = (yyvsp[(3) - (4)].list); } break; case 145: #line 1034 "go.y" { (yyval.node) = (yyvsp[(2) - (4)].node); (yyval.node)->list = (yyvsp[(3) - (4)].list); } break; case 147: #line 1042 "go.y" { (yyval.node) = (yyvsp[(2) - (3)].node); // Need to know on lhs of := whether there are ( ). // Don't bother with the OPAREN in other cases: // it's just a waste of memory and time. switch((yyval.node)->op) { case ONAME: case ONONAME: case OPACK: case OTYPE: case OLITERAL: case OTYPESW: (yyval.node) = nod(OPAREN, (yyval.node), N); } } break; case 151: #line 1068 "go.y" { (yyval.i) = LBODY; } break; case 152: #line 1072 "go.y" { (yyval.i) = '{'; } break; case 153: #line 1083 "go.y" { if((yyvsp[(1) - (1)].sym) == S) (yyval.node) = N; else (yyval.node) = newname((yyvsp[(1) - (1)].sym)); } break; case 154: #line 1092 "go.y" { (yyval.node) = dclname((yyvsp[(1) - (1)].sym)); } break; case 155: #line 1097 "go.y" { (yyval.node) = N; } break; case 157: #line 1104 "go.y" { (yyval.sym) = (yyvsp[(1) - (1)].sym); // during imports, unqualified non-exported identifiers are from builtinpkg if(importpkg != nil && !exportname((yyvsp[(1) - (1)].sym)->name)) (yyval.sym) = pkglookup((yyvsp[(1) - (1)].sym)->name, builtinpkg); } break; case 159: #line 1112 "go.y" { (yyval.sym) = S; } break; case 160: #line 1118 "go.y" { Pkg *p; if((yyvsp[(2) - (4)].val).u.sval->len == 0) p = importpkg; else { if(isbadimport((yyvsp[(2) - (4)].val).u.sval)) errorexit(); p = mkpkg((yyvsp[(2) - (4)].val).u.sval); } (yyval.sym) = pkglookup((yyvsp[(4) - (4)].sym)->name, p); } break; case 161: #line 1131 "go.y" { Pkg *p; if((yyvsp[(2) - (4)].val).u.sval->len == 0) p = importpkg; else { if(isbadimport((yyvsp[(2) - (4)].val).u.sval)) errorexit(); p = mkpkg((yyvsp[(2) - (4)].val).u.sval); } (yyval.sym) = pkglookup("?", p); } break; case 162: #line 1146 "go.y" { (yyval.node) = oldname((yyvsp[(1) - (1)].sym)); if((yyval.node)->pack != N) (yyval.node)->pack->used = 1; } break; case 164: #line 1166 "go.y" { yyerror("final argument in variadic function missing type"); (yyval.node) = nod(ODDD, typenod(typ(TINTER)), N); } break; case 165: #line 1171 "go.y" { (yyval.node) = nod(ODDD, (yyvsp[(2) - (2)].node), N); } break; case 171: #line 1182 "go.y" { (yyval.node) = nod(OTPAREN, (yyvsp[(2) - (3)].node), N); } break; case 175: #line 1191 "go.y" { (yyval.node) = nod(OIND, (yyvsp[(2) - (2)].node), N); } break; case 180: #line 1201 "go.y" { (yyval.node) = nod(OTPAREN, (yyvsp[(2) - (3)].node), N); } break; case 190: #line 1222 "go.y" { if((yyvsp[(1) - (3)].node)->op == OPACK) { Sym *s; s = restrictlookup((yyvsp[(3) - (3)].sym)->name, (yyvsp[(1) - (3)].node)->pkg); (yyvsp[(1) - (3)].node)->used = 1; (yyval.node) = oldname(s); break; } (yyval.node) = nod(OXDOT, (yyvsp[(1) - (3)].node), newname((yyvsp[(3) - (3)].sym))); } break; case 191: #line 1235 "go.y" { (yyval.node) = nod(OTARRAY, (yyvsp[(2) - (4)].node), (yyvsp[(4) - (4)].node)); } break; case 192: #line 1239 "go.y" { // array literal of nelem (yyval.node) = nod(OTARRAY, nod(ODDD, N, N), (yyvsp[(4) - (4)].node)); } break; case 193: #line 1244 "go.y" { (yyval.node) = nod(OTCHAN, (yyvsp[(2) - (2)].node), N); (yyval.node)->etype = Cboth; } break; case 194: #line 1249 "go.y" { (yyval.node) = nod(OTCHAN, (yyvsp[(3) - (3)].node), N); (yyval.node)->etype = Csend; } break; case 195: #line 1254 "go.y" { (yyval.node) = nod(OTMAP, (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)); } break; case 198: #line 1262 "go.y" { (yyval.node) = nod(OIND, (yyvsp[(2) - (2)].node), N); } break; case 199: #line 1268 "go.y" { (yyval.node) = nod(OTCHAN, (yyvsp[(3) - (3)].node), N); (yyval.node)->etype = Crecv; } break; case 200: #line 1275 "go.y" { (yyval.node) = nod(OTSTRUCT, N, N); (yyval.node)->list = (yyvsp[(3) - (5)].list); fixlbrace((yyvsp[(2) - (5)].i)); } break; case 201: #line 1281 "go.y" { (yyval.node) = nod(OTSTRUCT, N, N); fixlbrace((yyvsp[(2) - (3)].i)); } break; case 202: #line 1288 "go.y" { (yyval.node) = nod(OTINTER, N, N); (yyval.node)->list = (yyvsp[(3) - (5)].list); fixlbrace((yyvsp[(2) - (5)].i)); } break; case 203: #line 1294 "go.y" { (yyval.node) = nod(OTINTER, N, N); fixlbrace((yyvsp[(2) - (3)].i)); } break; case 204: #line 1305 "go.y" { (yyval.node) = (yyvsp[(2) - (3)].node); if((yyval.node) == N) break; if(noescape && (yyvsp[(3) - (3)].list) != nil) yyerror("can only use //go:noescape with external func implementations"); (yyval.node)->nbody = (yyvsp[(3) - (3)].list); (yyval.node)->endlineno = lineno; (yyval.node)->noescape = noescape; funcbody((yyval.node)); } break; case 205: #line 1319 "go.y" { Node *t; (yyval.node) = N; (yyvsp[(3) - (5)].list) = checkarglist((yyvsp[(3) - (5)].list), 1); if(strcmp((yyvsp[(1) - (5)].sym)->name, "init") == 0) { (yyvsp[(1) - (5)].sym) = renameinit(); if((yyvsp[(3) - (5)].list) != nil || (yyvsp[(5) - (5)].list) != nil) yyerror("func init must have no arguments and no return values"); } if(strcmp(localpkg->name, "main") == 0 && strcmp((yyvsp[(1) - (5)].sym)->name, "main") == 0) { if((yyvsp[(3) - (5)].list) != nil || (yyvsp[(5) - (5)].list) != nil) yyerror("func main must have no arguments and no return values"); } t = nod(OTFUNC, N, N); t->list = (yyvsp[(3) - (5)].list); t->rlist = (yyvsp[(5) - (5)].list); (yyval.node) = nod(ODCLFUNC, N, N); (yyval.node)->nname = newname((yyvsp[(1) - (5)].sym)); (yyval.node)->nname->defn = (yyval.node); (yyval.node)->nname->ntype = t; // TODO: check if nname already has an ntype declare((yyval.node)->nname, PFUNC); funchdr((yyval.node)); } break; case 206: #line 1348 "go.y" { Node *rcvr, *t; (yyval.node) = N; (yyvsp[(2) - (8)].list) = checkarglist((yyvsp[(2) - (8)].list), 0); (yyvsp[(6) - (8)].list) = checkarglist((yyvsp[(6) - (8)].list), 1); if((yyvsp[(2) - (8)].list) == nil) { yyerror("method has no receiver"); break; } if((yyvsp[(2) - (8)].list)->next != nil) { yyerror("method has multiple receivers"); break; } rcvr = (yyvsp[(2) - (8)].list)->n; if(rcvr->op != ODCLFIELD) { yyerror("bad receiver in method"); break; } if(rcvr->right->op == OTPAREN || (rcvr->right->op == OIND && rcvr->right->left->op == OTPAREN)) yyerror("cannot parenthesize receiver type"); t = nod(OTFUNC, rcvr, N); t->list = (yyvsp[(6) - (8)].list); t->rlist = (yyvsp[(8) - (8)].list); (yyval.node) = nod(ODCLFUNC, N, N); (yyval.node)->shortname = newname((yyvsp[(4) - (8)].sym)); (yyval.node)->nname = methodname1((yyval.node)->shortname, rcvr->right); (yyval.node)->nname->defn = (yyval.node); (yyval.node)->nname->ntype = t; (yyval.node)->nname->nointerface = nointerface; declare((yyval.node)->nname, PFUNC); funchdr((yyval.node)); } break; case 207: #line 1388 "go.y" { Sym *s; Type *t; (yyval.node) = N; s = (yyvsp[(1) - (5)].sym); t = functype(N, (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list)); importsym(s, ONAME); if(s->def != N && s->def->op == ONAME) { if(eqtype(t, s->def->type)) { dclcontext = PDISCARD; // since we skip funchdr below break; } yyerror("inconsistent definition for func %S during import\n\t%T\n\t%T", s, s->def->type, t); } (yyval.node) = newname(s); (yyval.node)->type = t; declare((yyval.node), PFUNC); funchdr((yyval.node)); } break; case 208: #line 1413 "go.y" { (yyval.node) = methodname1(newname((yyvsp[(4) - (8)].sym)), (yyvsp[(2) - (8)].list)->n->right); (yyval.node)->type = functype((yyvsp[(2) - (8)].list)->n, (yyvsp[(6) - (8)].list), (yyvsp[(8) - (8)].list)); checkwidth((yyval.node)->type); addmethod((yyvsp[(4) - (8)].sym), (yyval.node)->type, 0, nointerface); nointerface = 0; funchdr((yyval.node)); // inl.c's inlnode in on a dotmeth node expects to find the inlineable body as // (dotmeth's type)->nname->inl, and dotmeth's type has been pulled // out by typecheck's lookdot as this $$->ttype. So by providing // this back link here we avoid special casing there. (yyval.node)->type->nname = (yyval.node); } break; case 209: #line 1431 "go.y" { (yyvsp[(3) - (5)].list) = checkarglist((yyvsp[(3) - (5)].list), 1); (yyval.node) = nod(OTFUNC, N, N); (yyval.node)->list = (yyvsp[(3) - (5)].list); (yyval.node)->rlist = (yyvsp[(5) - (5)].list); } break; case 210: #line 1439 "go.y" { (yyval.list) = nil; } break; case 211: #line 1443 "go.y" { (yyval.list) = (yyvsp[(2) - (3)].list); if((yyval.list) == nil) (yyval.list) = list1(nod(OEMPTY, N, N)); } break; case 212: #line 1451 "go.y" { (yyval.list) = nil; } break; case 213: #line 1455 "go.y" { (yyval.list) = list1(nod(ODCLFIELD, N, (yyvsp[(1) - (1)].node))); } break; case 214: #line 1459 "go.y" { (yyvsp[(2) - (3)].list) = checkarglist((yyvsp[(2) - (3)].list), 0); (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 215: #line 1466 "go.y" { closurehdr((yyvsp[(1) - (1)].node)); } break; case 216: #line 1472 "go.y" { (yyval.node) = closurebody((yyvsp[(3) - (4)].list)); fixlbrace((yyvsp[(2) - (4)].i)); } break; case 217: #line 1477 "go.y" { (yyval.node) = closurebody(nil); } break; case 218: #line 1488 "go.y" { (yyval.list) = nil; } break; case 219: #line 1492 "go.y" { (yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].list)); if(nsyntaxerrors == 0) testdclstack(); nointerface = 0; noescape = 0; } break; case 221: #line 1503 "go.y" { (yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); } break; case 223: #line 1510 "go.y" { (yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); } break; case 224: #line 1516 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; case 225: #line 1520 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 227: #line 1527 "go.y" { (yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); } break; case 228: #line 1533 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; case 229: #line 1537 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 230: #line 1543 "go.y" { NodeList *l; Node *n; l = (yyvsp[(1) - (3)].list); if(l == nil) { // ? symbol, during import (list1(N) == nil) n = (yyvsp[(2) - (3)].node); if(n->op == OIND) n = n->left; n = embedded(n->sym, importpkg); n->right = (yyvsp[(2) - (3)].node); n->val = (yyvsp[(3) - (3)].val); (yyval.list) = list1(n); break; } for(l=(yyvsp[(1) - (3)].list); l; l=l->next) { l->n = nod(ODCLFIELD, l->n, (yyvsp[(2) - (3)].node)); l->n->val = (yyvsp[(3) - (3)].val); } } break; case 231: #line 1566 "go.y" { (yyvsp[(1) - (2)].node)->val = (yyvsp[(2) - (2)].val); (yyval.list) = list1((yyvsp[(1) - (2)].node)); } break; case 232: #line 1571 "go.y" { (yyvsp[(2) - (4)].node)->val = (yyvsp[(4) - (4)].val); (yyval.list) = list1((yyvsp[(2) - (4)].node)); yyerror("cannot parenthesize embedded type"); } break; case 233: #line 1577 "go.y" { (yyvsp[(2) - (3)].node)->right = nod(OIND, (yyvsp[(2) - (3)].node)->right, N); (yyvsp[(2) - (3)].node)->val = (yyvsp[(3) - (3)].val); (yyval.list) = list1((yyvsp[(2) - (3)].node)); } break; case 234: #line 1583 "go.y" { (yyvsp[(3) - (5)].node)->right = nod(OIND, (yyvsp[(3) - (5)].node)->right, N); (yyvsp[(3) - (5)].node)->val = (yyvsp[(5) - (5)].val); (yyval.list) = list1((yyvsp[(3) - (5)].node)); yyerror("cannot parenthesize embedded type"); } break; case 235: #line 1590 "go.y" { (yyvsp[(3) - (5)].node)->right = nod(OIND, (yyvsp[(3) - (5)].node)->right, N); (yyvsp[(3) - (5)].node)->val = (yyvsp[(5) - (5)].val); (yyval.list) = list1((yyvsp[(3) - (5)].node)); yyerror("cannot parenthesize embedded type"); } break; case 236: #line 1599 "go.y" { Node *n; (yyval.sym) = (yyvsp[(1) - (1)].sym); n = oldname((yyvsp[(1) - (1)].sym)); if(n->pack != N) n->pack->used = 1; } break; case 237: #line 1608 "go.y" { Pkg *pkg; if((yyvsp[(1) - (3)].sym)->def == N || (yyvsp[(1) - (3)].sym)->def->op != OPACK) { yyerror("%S is not a package", (yyvsp[(1) - (3)].sym)); pkg = localpkg; } else { (yyvsp[(1) - (3)].sym)->def->used = 1; pkg = (yyvsp[(1) - (3)].sym)->def->pkg; } (yyval.sym) = restrictlookup((yyvsp[(3) - (3)].sym)->name, pkg); } break; case 238: #line 1623 "go.y" { (yyval.node) = embedded((yyvsp[(1) - (1)].sym), localpkg); } break; case 239: #line 1629 "go.y" { (yyval.node) = nod(ODCLFIELD, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); ifacedcl((yyval.node)); } break; case 240: #line 1634 "go.y" { (yyval.node) = nod(ODCLFIELD, N, oldname((yyvsp[(1) - (1)].sym))); } break; case 241: #line 1638 "go.y" { (yyval.node) = nod(ODCLFIELD, N, oldname((yyvsp[(2) - (3)].sym))); yyerror("cannot parenthesize embedded type"); } break; case 242: #line 1645 "go.y" { // without func keyword (yyvsp[(2) - (4)].list) = checkarglist((yyvsp[(2) - (4)].list), 1); (yyval.node) = nod(OTFUNC, fakethis(), N); (yyval.node)->list = (yyvsp[(2) - (4)].list); (yyval.node)->rlist = (yyvsp[(4) - (4)].list); } break; case 244: #line 1659 "go.y" { (yyval.node) = nod(ONONAME, N, N); (yyval.node)->sym = (yyvsp[(1) - (2)].sym); (yyval.node) = nod(OKEY, (yyval.node), (yyvsp[(2) - (2)].node)); } break; case 245: #line 1665 "go.y" { (yyval.node) = nod(ONONAME, N, N); (yyval.node)->sym = (yyvsp[(1) - (2)].sym); (yyval.node) = nod(OKEY, (yyval.node), (yyvsp[(2) - (2)].node)); } break; case 247: #line 1674 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; case 248: #line 1678 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 249: #line 1683 "go.y" { (yyval.list) = nil; } break; case 250: #line 1687 "go.y" { (yyval.list) = (yyvsp[(1) - (2)].list); } break; case 251: #line 1695 "go.y" { (yyval.node) = N; } break; case 253: #line 1700 "go.y" { (yyval.node) = liststmt((yyvsp[(1) - (1)].list)); } break; case 255: #line 1705 "go.y" { (yyval.node) = N; } break; case 261: #line 1716 "go.y" { (yyvsp[(1) - (2)].node) = nod(OLABEL, (yyvsp[(1) - (2)].node), N); (yyvsp[(1) - (2)].node)->sym = dclstack; // context, for goto restrictions } break; case 262: #line 1721 "go.y" { NodeList *l; (yyvsp[(1) - (4)].node)->defn = (yyvsp[(4) - (4)].node); l = list1((yyvsp[(1) - (4)].node)); if((yyvsp[(4) - (4)].node)) l = list(l, (yyvsp[(4) - (4)].node)); (yyval.node) = liststmt(l); } break; case 263: #line 1731 "go.y" { // will be converted to OFALL (yyval.node) = nod(OXFALL, N, N); (yyval.node)->xoffset = block; } break; case 264: #line 1737 "go.y" { (yyval.node) = nod(OBREAK, (yyvsp[(2) - (2)].node), N); } break; case 265: #line 1741 "go.y" { (yyval.node) = nod(OCONTINUE, (yyvsp[(2) - (2)].node), N); } break; case 266: #line 1745 "go.y" { (yyval.node) = nod(OPROC, (yyvsp[(2) - (2)].node), N); } break; case 267: #line 1749 "go.y" { (yyval.node) = nod(ODEFER, (yyvsp[(2) - (2)].node), N); } break; case 268: #line 1753 "go.y" { (yyval.node) = nod(OGOTO, (yyvsp[(2) - (2)].node), N); (yyval.node)->sym = dclstack; // context, for goto restrictions } break; case 269: #line 1758 "go.y" { (yyval.node) = nod(ORETURN, N, N); (yyval.node)->list = (yyvsp[(2) - (2)].list); if((yyval.node)->list == nil && curfn != N) { NodeList *l; for(l=curfn->dcl; l; l=l->next) { if(l->n->class == PPARAM) continue; if(l->n->class != PPARAMOUT) break; if(l->n->sym->def != l->n) yyerror("%s is shadowed during return", l->n->sym->name); } } } break; case 270: #line 1777 "go.y" { (yyval.list) = nil; if((yyvsp[(1) - (1)].node) != N) (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; case 271: #line 1783 "go.y" { (yyval.list) = (yyvsp[(1) - (3)].list); if((yyvsp[(3) - (3)].node) != N) (yyval.list) = list((yyval.list), (yyvsp[(3) - (3)].node)); } break; case 272: #line 1791 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; case 273: #line 1795 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 274: #line 1801 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; case 275: #line 1805 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 276: #line 1811 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; case 277: #line 1815 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 278: #line 1821 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; case 279: #line 1825 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 280: #line 1834 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; case 281: #line 1838 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; case 282: #line 1842 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 283: #line 1846 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 284: #line 1851 "go.y" { (yyval.list) = nil; } break; case 285: #line 1855 "go.y" { (yyval.list) = (yyvsp[(1) - (2)].list); } break; case 290: #line 1869 "go.y" { (yyval.node) = N; } break; case 292: #line 1875 "go.y" { (yyval.list) = nil; } break; case 294: #line 1881 "go.y" { (yyval.node) = N; } break; case 296: #line 1887 "go.y" { (yyval.list) = nil; } break; case 298: #line 1893 "go.y" { (yyval.list) = nil; } break; case 300: #line 1899 "go.y" { (yyval.list) = nil; } break; case 302: #line 1905 "go.y" { (yyval.val).ctype = CTxxx; } break; case 304: #line 1915 "go.y" { importimport((yyvsp[(2) - (4)].sym), (yyvsp[(3) - (4)].val).u.sval); } break; case 305: #line 1919 "go.y" { importvar((yyvsp[(2) - (4)].sym), (yyvsp[(3) - (4)].type)); } break; case 306: #line 1923 "go.y" { importconst((yyvsp[(2) - (5)].sym), types[TIDEAL], (yyvsp[(4) - (5)].node)); } break; case 307: #line 1927 "go.y" { importconst((yyvsp[(2) - (6)].sym), (yyvsp[(3) - (6)].type), (yyvsp[(5) - (6)].node)); } break; case 308: #line 1931 "go.y" { importtype((yyvsp[(2) - (4)].type), (yyvsp[(3) - (4)].type)); } break; case 309: #line 1935 "go.y" { if((yyvsp[(2) - (4)].node) == N) { dclcontext = PEXTERN; // since we skip the funcbody below break; } (yyvsp[(2) - (4)].node)->inl = (yyvsp[(3) - (4)].list); funcbody((yyvsp[(2) - (4)].node)); importlist = list(importlist, (yyvsp[(2) - (4)].node)); if(debug['E']) { print("import [%Z] func %lN \n", importpkg->path, (yyvsp[(2) - (4)].node)); if(debug['m'] > 2 && (yyvsp[(2) - (4)].node)->inl) print("inl body:%+H\n", (yyvsp[(2) - (4)].node)->inl); } } break; case 310: #line 1955 "go.y" { (yyval.sym) = (yyvsp[(1) - (1)].sym); structpkg = (yyval.sym)->pkg; } break; case 311: #line 1962 "go.y" { (yyval.type) = pkgtype((yyvsp[(1) - (1)].sym)); importsym((yyvsp[(1) - (1)].sym), OTYPE); } break; case 317: #line 1982 "go.y" { (yyval.type) = pkgtype((yyvsp[(1) - (1)].sym)); } break; case 318: #line 1986 "go.y" { // predefined name like uint8 (yyvsp[(1) - (1)].sym) = pkglookup((yyvsp[(1) - (1)].sym)->name, builtinpkg); if((yyvsp[(1) - (1)].sym)->def == N || (yyvsp[(1) - (1)].sym)->def->op != OTYPE) { yyerror("%s is not a type", (yyvsp[(1) - (1)].sym)->name); (yyval.type) = T; } else (yyval.type) = (yyvsp[(1) - (1)].sym)->def->type; } break; case 319: #line 1996 "go.y" { (yyval.type) = aindex(N, (yyvsp[(3) - (3)].type)); } break; case 320: #line 2000 "go.y" { (yyval.type) = aindex(nodlit((yyvsp[(2) - (4)].val)), (yyvsp[(4) - (4)].type)); } break; case 321: #line 2004 "go.y" { (yyval.type) = maptype((yyvsp[(3) - (5)].type), (yyvsp[(5) - (5)].type)); } break; case 322: #line 2008 "go.y" { (yyval.type) = tostruct((yyvsp[(3) - (4)].list)); } break; case 323: #line 2012 "go.y" { (yyval.type) = tointerface((yyvsp[(3) - (4)].list)); } break; case 324: #line 2016 "go.y" { (yyval.type) = ptrto((yyvsp[(2) - (2)].type)); } break; case 325: #line 2020 "go.y" { (yyval.type) = typ(TCHAN); (yyval.type)->type = (yyvsp[(2) - (2)].type); (yyval.type)->chan = Cboth; } break; case 326: #line 2026 "go.y" { (yyval.type) = typ(TCHAN); (yyval.type)->type = (yyvsp[(3) - (4)].type); (yyval.type)->chan = Cboth; } break; case 327: #line 2032 "go.y" { (yyval.type) = typ(TCHAN); (yyval.type)->type = (yyvsp[(3) - (3)].type); (yyval.type)->chan = Csend; } break; case 328: #line 2040 "go.y" { (yyval.type) = typ(TCHAN); (yyval.type)->type = (yyvsp[(3) - (3)].type); (yyval.type)->chan = Crecv; } break; case 329: #line 2048 "go.y" { (yyval.type) = functype(nil, (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list)); } break; case 330: #line 2054 "go.y" { (yyval.node) = nod(ODCLFIELD, N, typenod((yyvsp[(2) - (3)].type))); if((yyvsp[(1) - (3)].sym)) (yyval.node)->left = newname((yyvsp[(1) - (3)].sym)); (yyval.node)->val = (yyvsp[(3) - (3)].val); } break; case 331: #line 2061 "go.y" { Type *t; t = typ(TARRAY); t->bound = -1; t->type = (yyvsp[(3) - (4)].type); (yyval.node) = nod(ODCLFIELD, N, typenod(t)); if((yyvsp[(1) - (4)].sym)) (yyval.node)->left = newname((yyvsp[(1) - (4)].sym)); (yyval.node)->isddd = 1; (yyval.node)->val = (yyvsp[(4) - (4)].val); } break; case 332: #line 2077 "go.y" { Sym *s; Pkg *p; if((yyvsp[(1) - (3)].sym) != S && strcmp((yyvsp[(1) - (3)].sym)->name, "?") != 0) { (yyval.node) = nod(ODCLFIELD, newname((yyvsp[(1) - (3)].sym)), typenod((yyvsp[(2) - (3)].type))); (yyval.node)->val = (yyvsp[(3) - (3)].val); } else { s = (yyvsp[(2) - (3)].type)->sym; if(s == S && isptr[(yyvsp[(2) - (3)].type)->etype]) s = (yyvsp[(2) - (3)].type)->type->sym; p = importpkg; if((yyvsp[(1) - (3)].sym) != S) p = (yyvsp[(1) - (3)].sym)->pkg; (yyval.node) = embedded(s, p); (yyval.node)->right = typenod((yyvsp[(2) - (3)].type)); (yyval.node)->val = (yyvsp[(3) - (3)].val); } } break; case 333: #line 2099 "go.y" { (yyval.node) = nod(ODCLFIELD, newname((yyvsp[(1) - (5)].sym)), typenod(functype(fakethis(), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list)))); } break; case 334: #line 2103 "go.y" { (yyval.node) = nod(ODCLFIELD, N, typenod((yyvsp[(1) - (1)].type))); } break; case 335: #line 2108 "go.y" { (yyval.list) = nil; } break; case 337: #line 2115 "go.y" { (yyval.list) = (yyvsp[(2) - (3)].list); } break; case 338: #line 2119 "go.y" { (yyval.list) = list1(nod(ODCLFIELD, N, typenod((yyvsp[(1) - (1)].type)))); } break; case 339: #line 2129 "go.y" { (yyval.node) = nodlit((yyvsp[(1) - (1)].val)); } break; case 340: #line 2133 "go.y" { (yyval.node) = nodlit((yyvsp[(2) - (2)].val)); switch((yyval.node)->val.ctype){ case CTINT: case CTRUNE: mpnegfix((yyval.node)->val.u.xval); break; case CTFLT: mpnegflt((yyval.node)->val.u.fval); break; case CTCPLX: mpnegflt(&(yyval.node)->val.u.cval->real); mpnegflt(&(yyval.node)->val.u.cval->imag); break; default: yyerror("bad negated constant"); } } break; case 341: #line 2152 "go.y" { (yyval.node) = oldname(pkglookup((yyvsp[(1) - (1)].sym)->name, builtinpkg)); if((yyval.node)->op != OLITERAL) yyerror("bad constant %S", (yyval.node)->sym); } break; case 343: #line 2161 "go.y" { if((yyvsp[(2) - (5)].node)->val.ctype == CTRUNE && (yyvsp[(4) - (5)].node)->val.ctype == CTINT) { (yyval.node) = (yyvsp[(2) - (5)].node); mpaddfixfix((yyvsp[(2) - (5)].node)->val.u.xval, (yyvsp[(4) - (5)].node)->val.u.xval, 0); break; } (yyvsp[(4) - (5)].node)->val.u.cval->real = (yyvsp[(4) - (5)].node)->val.u.cval->imag; mpmovecflt(&(yyvsp[(4) - (5)].node)->val.u.cval->imag, 0.0); (yyval.node) = nodcplxlit((yyvsp[(2) - (5)].node)->val, (yyvsp[(4) - (5)].node)->val); } break; case 346: #line 2177 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; case 347: #line 2181 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 348: #line 2187 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; case 349: #line 2191 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; case 350: #line 2197 "go.y" { (yyval.list) = list1((yyvsp[(1) - (1)].node)); } break; case 351: #line 2201 "go.y" { (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); } break; /* Line 1267 of yacc.c. */ #line 4911 "y.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) { YYSIZE_T yyalloc = 2 * yysize; if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) yyalloc = YYSTACK_ALLOC_MAXIMUM; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yyalloc); if (yymsg) yymsg_alloc = yyalloc; else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; } } if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); yyerror (yymsg); } else { yyerror (YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } } #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse look-ahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse look-ahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } if (yyn == YYFINAL) YYACCEPT; *++yyvsp = yylval; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #ifndef yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEOF && yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } #line 2205 "go.y" static void fixlbrace(int lbr) { // If the opening brace was an LBODY, // set up for another one now that we're done. // See comment in lex.c about loophack. if(lbr == LBODY) loophack = 1; } go/src/cmd/gc/y.tab.h0100644000000000000000000000773412412656734014620 0ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { LLITERAL = 258, LASOP = 259, LCOLAS = 260, LBREAK = 261, LCASE = 262, LCHAN = 263, LCONST = 264, LCONTINUE = 265, LDDD = 266, LDEFAULT = 267, LDEFER = 268, LELSE = 269, LFALL = 270, LFOR = 271, LFUNC = 272, LGO = 273, LGOTO = 274, LIF = 275, LIMPORT = 276, LINTERFACE = 277, LMAP = 278, LNAME = 279, LPACKAGE = 280, LRANGE = 281, LRETURN = 282, LSELECT = 283, LSTRUCT = 284, LSWITCH = 285, LTYPE = 286, LVAR = 287, LANDAND = 288, LANDNOT = 289, LBODY = 290, LCOMM = 291, LDEC = 292, LEQ = 293, LGE = 294, LGT = 295, LIGNORE = 296, LINC = 297, LLE = 298, LLSH = 299, LLT = 300, LNE = 301, LOROR = 302, LRSH = 303, NotPackage = 304, NotParen = 305, PreferToRightParen = 306 }; #endif /* Tokens. */ #define LLITERAL 258 #define LASOP 259 #define LCOLAS 260 #define LBREAK 261 #define LCASE 262 #define LCHAN 263 #define LCONST 264 #define LCONTINUE 265 #define LDDD 266 #define LDEFAULT 267 #define LDEFER 268 #define LELSE 269 #define LFALL 270 #define LFOR 271 #define LFUNC 272 #define LGO 273 #define LGOTO 274 #define LIF 275 #define LIMPORT 276 #define LINTERFACE 277 #define LMAP 278 #define LNAME 279 #define LPACKAGE 280 #define LRANGE 281 #define LRETURN 282 #define LSELECT 283 #define LSTRUCT 284 #define LSWITCH 285 #define LTYPE 286 #define LVAR 287 #define LANDAND 288 #define LANDNOT 289 #define LBODY 290 #define LCOMM 291 #define LDEC 292 #define LEQ 293 #define LGE 294 #define LGT 295 #define LIGNORE 296 #define LINC 297 #define LLE 298 #define LLSH 299 #define LLT 300 #define LNE 301 #define LOROR 302 #define LRSH 303 #define NotPackage 304 #define NotParen 305 #define PreferToRightParen 306 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 28 "go.y" { Node* node; NodeList* list; Type* type; Sym* sym; struct Val val; int i; } /* Line 1529 of yacc.c. */ #line 160 "y.tab.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif extern YYSTYPE yylval; go/src/cmd/gc/yerr.h0100644000000000000000000000305312412656737014555 0ustar00rootroot00000000000000// 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. // Example-based syntax error messages. // See bisonerrors, Makefile, go.y. static struct { int yystate; int yychar; char *msg; } yymsg[] = { // Each line of the form % token list // is converted by bisonerrors into the yystate and yychar caused // by that token list. 222, ',', "unexpected comma during import block", 32, ';', "missing import path; require quoted string", 378, ';', "missing { after if clause", 399, ';', "missing { after switch clause", 238, ';', "missing { after for clause", 476, LBODY, "missing { after for clause", 22, '{', "unexpected semicolon or newline before {", 145, ';', "unexpected semicolon or newline in type declaration", 37, '}', "unexpected } in channel type", 37, ')', "unexpected ) in channel type", 37, ',', "unexpected comma in channel type", 439, LELSE, "unexpected semicolon or newline before else", 258, ',', "name list not allowed in interface type", 238, LVAR, "var declaration not allowed in for initializer", 65, '{', "unexpected { at end of statement", 377, '{', "unexpected { at end of statement", 126, ';', "argument to go/defer must be function call", 426, ';', "need trailing comma before newline in composite literal", 437, ';', "need trailing comma before newline in composite literal", 113, LNAME, "nested func not allowed", 645, ';', "else must be followed by if or statement block" }; go/src/cmd/go0040755000000000000000000000000012412656737013362 5ustar00rootroot00000000000000go/src/cmd/go/bootstrap.go0100644000000000000000000000131212412656734015774 0ustar00rootroot00000000000000// 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. // +build cmd_go_bootstrap // This code is compiled only into the bootstrap 'go' binary. // These stubs avoid importing packages with large dependency // trees, like the use of "net/http" in vcs.go. package main import ( "errors" "io" ) var errHTTP = errors.New("no http in bootstrap go command") func httpGET(url string) ([]byte, error) { return nil, errHTTP } func httpsOrHTTP(importPath string) (string, io.ReadCloser, error) { return "", nil, errHTTP } func parseMetaGoImports(r io.Reader) ([]metaImport, error) { panic("unreachable") } go/src/cmd/go/build.go0100644000000000000000000022263012412656737015071 0ustar00rootroot00000000000000// Copyright 2011 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 ( "bufio" "bytes" "container/heap" "errors" "flag" "fmt" "go/build" "io" "io/ioutil" "log" "os" "os/exec" "path" "path/filepath" "regexp" "runtime" "strconv" "strings" "sync" "time" ) var cmdBuild = &Command{ UsageLine: "build [-o output] [-i] [build flags] [packages]", Short: "compile packages and dependencies", Long: ` 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. When the command line specifies a single main package, build writes the resulting executable to output. Otherwise build compiles the packages but discards the results, serving only as a check that the packages can be built. The -o flag specifies the output file name. If not specified, the output file name depends on the arguments and derives from the name of the package, such as p.a for package p, unless p is 'main'. If the package is main and file names are provided, the file name derives from the first file name mentioned, such as f1 for 'go build f1.go f2.go'; with no files provided ('go build'), the output file name is the base name of the containing directory. The -i flag installs the packages that are dependencies of the target. The build flags are shared by the build, clean, get, install, list, run, and test commands: -a force rebuilding of packages that are already up-to-date. -n print the commands but do not run them. -p n the number of builds that can be run in parallel. The default is the number of CPUs available. -race enable data race detection. Supported only on linux/amd64, darwin/amd64 and windows/amd64. -v print the names of packages as they are compiled. -work print the name of the temporary work directory and do not delete it when exiting. -x print the commands. -ccflags 'arg list' arguments to pass on each 5c, 6c, or 8c compiler invocation. -compiler name name of compiler to use, as in runtime.Compiler (gccgo or gc). -gccgoflags 'arg list' arguments to pass on each gccgo compiler/linker invocation. -gcflags 'arg list' arguments to pass on each 5g, 6g, or 8g compiler invocation. -installsuffix suffix a suffix to use in the name of the package installation directory, in order to keep output separate from default builds. If using the -race flag, the install suffix is automatically set to race or, if set explicitly, has _race appended to it. -ldflags 'flag list' arguments to pass on each 5l, 6l, or 8l linker invocation. -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. 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'. See also: go install, go get, go clean. `, } func init() { // break init cycle cmdBuild.Run = runBuild cmdInstall.Run = runInstall cmdBuild.Flag.BoolVar(&buildI, "i", false, "") addBuildFlags(cmdBuild) addBuildFlags(cmdInstall) } // Flags set by multiple commands. var buildA bool // -a flag var buildN bool // -n flag var buildP = runtime.NumCPU() // -p flag var buildV bool // -v flag var buildX bool // -x flag var buildI bool // -i flag var buildO = cmdBuild.Flag.String("o", "", "output file") var buildWork bool // -work flag var buildGcflags []string // -gcflags flag var buildCcflags []string // -ccflags flag var buildLdflags []string // -ldflags flag var buildGccgoflags []string // -gccgoflags flag var buildRace bool // -race flag var buildContext = build.Default var buildToolchain toolchain = noToolchain{} // buildCompiler implements flag.Var. // It implements Set by updating both // buildToolchain and buildContext.Compiler. type buildCompiler struct{} func (c buildCompiler) Set(value string) error { switch value { case "gc": buildToolchain = gcToolchain{} case "gccgo": buildToolchain = gccgoToolchain{} default: return fmt.Errorf("unknown compiler %q", value) } buildContext.Compiler = value return nil } func (c buildCompiler) String() string { return buildContext.Compiler } func init() { switch build.Default.Compiler { case "gc": buildToolchain = gcToolchain{} case "gccgo": buildToolchain = gccgoToolchain{} } } // 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)(&buildGcflags), "gcflags", "") cmd.Flag.Var((*stringsFlag)(&buildCcflags), "ccflags", "") 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, "") } func addBuildFlagsNX(cmd *Command) { cmd.Flag.BoolVar(&buildN, "n", false, "") cmd.Flag.BoolVar(&buildX, "x", false, "") } func isSpaceByte(c byte) bool { return c == ' ' || c == '\t' || c == '\n' || c == '\r' } // fileExtSplit expects a filename and returns the name // and ext (without the dot). If the file has no // extension, ext will be empty. func fileExtSplit(file string) (name, ext string) { dotExt := filepath.Ext(file) name = file[:len(file)-len(dotExt)] if dotExt != "" { ext = dotExt[1:] } return } type stringsFlag []string func (v *stringsFlag) Set(s string) error { var err error *v, err = splitQuotedFields(s) if *v == nil { *v = []string{} } return err } func splitQuotedFields(s string) ([]string, error) { // Split fields allowing '' or "" around elements. // Quotes further inside the string do not count. var f []string for len(s) > 0 { for len(s) > 0 && isSpaceByte(s[0]) { s = s[1:] } if len(s) == 0 { break } // Accepted quoted string. No unescaping inside. if s[0] == '"' || s[0] == '\'' { quote := s[0] s = s[1:] i := 0 for i < len(s) && s[i] != quote { i++ } if i >= len(s) { return nil, fmt.Errorf("unterminated %c string", quote) } f = append(f, s[:i]) s = s[i+1:] continue } i := 0 for i < len(s) && !isSpaceByte(s[i]) { i++ } f = append(f, s[:i]) s = s[i:] } return f, nil } func (v *stringsFlag) String() string { return "" } func runBuild(cmd *Command, args []string) { raceInit() var b builder b.init() pkgs := packagesForBuild(args) if len(pkgs) == 1 && pkgs[0].Name == "main" && *buildO == "" { _, *buildO = path.Split(pkgs[0].ImportPath) *buildO += exeSuffix } // sanity check some often mis-used options switch buildContext.Compiler { case "gccgo": if len(buildGcflags) != 0 { fmt.Println("go build: when using gccgo toolchain, please pass compiler flags using -gccgoflags, not -gcflags") } if len(buildLdflags) != 0 { fmt.Println("go build: when using gccgo toolchain, please pass linker flags using -gccgoflags, not -ldflags") } case "gc": if len(buildGccgoflags) != 0 { fmt.Println("go build: when using gc toolchain, please pass compile flags using -gcflags, and linker flags using -ldflags") } } if *buildO != "" { if len(pkgs) > 1 { fatalf("go build: cannot use -o with multiple packages") } p := pkgs[0] p.target = "" // must build - not up to date a := b.action(modeInstall, modeBuild, p) a.target = *buildO b.do(a) return } a := &action{} depMode := modeBuild if buildI { depMode = modeInstall } for _, p := range packages(args) { a.deps = append(a.deps, b.action(modeBuild, depMode, p)) } b.do(a) } var cmdInstall = &Command{ UsageLine: "install [build flags] [packages]", Short: "compile and install packages and dependencies", Long: ` Install compiles and installs the packages named by the import paths, along with their dependencies. For more about the build flags, see 'go help build'. For more about specifying packages, see 'go help packages'. See also: go build, go get, go clean. `, } func runInstall(cmd *Command, args []string) { raceInit() pkgs := packagesForBuild(args) for _, p := range pkgs { if p.Target == "" && (!p.Standard || p.ImportPath != "unsafe") { if p.cmdline { errorf("go install: no install location for .go files listed on command line (GOBIN not set)") } else if p.ConflictDir != "" { errorf("go install: no install location for %s: hidden by %s", p.Dir, p.ConflictDir) } else { errorf("go install: no install location for directory %s outside GOPATH", p.Dir) } } } exitIfErrors() var b builder b.init() a := &action{} for _, p := range pkgs { a.deps = append(a.deps, b.action(modeInstall, modeInstall, p)) } b.do(a) } // Global build parameters (used during package load) var ( goarch string goos string archChar string exeSuffix string ) func init() { goarch = buildContext.GOARCH goos = buildContext.GOOS if goos == "windows" { exeSuffix = ".exe" } var err error archChar, err = build.ArchChar(goarch) if err != nil { if _, isgc := buildToolchain.(gcToolchain); isgc { fatalf("%s", err) } // archChar is only required for gcToolchain, if we're using // another toolchain leave it blank. archChar = "" } } // A builder holds global state about a build. // It does not hold per-package state, because we // build packages in parallel, and the builder is shared. type builder struct { work string // the temporary work directory (ends in filepath.Separator) actionCache map[cacheKey]*action // a cache of already-constructed actions mkdirCache map[string]bool // a cache of created directories print func(args ...interface{}) (int, error) output sync.Mutex scriptDir string // current directory in printed script exec sync.Mutex readySema chan bool ready actionQueue } // An action represents a single action in the action graph. type action struct { p *Package // the package this action works on deps []*action // actions that must happen before this one triggers []*action // inverse of deps cgo *action // action for cgo binary if needed args []string // additional args for runProgram testOutput *bytes.Buffer // test output buffer f func(*builder, *action) error // the action itself (nil = no-op) ignoreFail bool // whether to run f even if dependencies fail // Generated files, directories. link bool // target is executable, not just package pkgdir string // the -I or -L argument to use when importing this package objdir string // directory for intermediate objects objpkg string // the intermediate package .a file created during the action target string // goal of the action: the created package or executable // Execution state. pending int // number of deps yet to complete priority int // relative execution priority failed bool // whether the action failed } // cacheKey is the key for the action cache. type cacheKey struct { mode buildMode p *Package } // buildMode specifies the build mode: // are we just building things or also installing the results? type buildMode int const ( modeBuild buildMode = iota modeInstall ) var ( goroot = filepath.Clean(runtime.GOROOT()) gobin = os.Getenv("GOBIN") gorootBin = filepath.Join(goroot, "bin") gorootSrcPkg = filepath.Join(goroot, "src/pkg") gorootPkg = filepath.Join(goroot, "pkg") gorootSrc = filepath.Join(goroot, "src") ) func (b *builder) init() { var err error b.print = func(a ...interface{}) (int, error) { return fmt.Fprint(os.Stderr, a...) } b.actionCache = make(map[cacheKey]*action) b.mkdirCache = make(map[string]bool) if buildN { b.work = "$WORK" } else { b.work, err = ioutil.TempDir("", "go-build") if err != nil { fatalf("%s", err) } if buildX || buildWork { fmt.Fprintf(os.Stderr, "WORK=%s\n", b.work) } if !buildWork { workdir := b.work atexit(func() { os.RemoveAll(workdir) }) } } } // goFilesPackage creates a package for building a collection of Go files // (typically named on the command line). The target is named p.a for // package p or named after the first Go file for package main. func goFilesPackage(gofiles []string) *Package { // TODO: Remove this restriction. for _, f := range gofiles { if !strings.HasSuffix(f, ".go") { fatalf("named files must be .go files") } } var stk importStack ctxt := buildContext ctxt.UseAllFiles = true // Synthesize fake "directory" that only shows the named files, // to make it look like this is a standard package or // command directory. So that local imports resolve // consistently, the files must all be in the same directory. var dirent []os.FileInfo var dir string for _, file := range gofiles { fi, err := os.Stat(file) if err != nil { fatalf("%s", err) } if fi.IsDir() { fatalf("%s is a directory, should be a Go file", file) } dir1, _ := filepath.Split(file) if dir == "" { dir = dir1 } else if dir != dir1 { fatalf("named files must all be in one directory; have %s and %s", dir, dir1) } dirent = append(dirent, fi) } ctxt.ReadDir = func(string) ([]os.FileInfo, error) { return dirent, nil } if !filepath.IsAbs(dir) { dir = filepath.Join(cwd, dir) } bp, err := ctxt.ImportDir(dir, 0) pkg := new(Package) pkg.local = true pkg.cmdline = true pkg.load(&stk, bp, err) pkg.localPrefix = dirToImportPath(dir) pkg.ImportPath = "command-line-arguments" pkg.target = "" if pkg.Name == "main" { _, elem := filepath.Split(gofiles[0]) exe := elem[:len(elem)-len(".go")] + exeSuffix if *buildO == "" { *buildO = exe } if gobin != "" { pkg.target = filepath.Join(gobin, exe) } } else { if *buildO == "" { *buildO = pkg.Name + ".a" } } pkg.Target = pkg.target pkg.Stale = true computeStale(pkg) return pkg } // action returns the action for applying the given operation (mode) to the package. // depMode is the action to use when building dependencies. func (b *builder) action(mode buildMode, depMode buildMode, p *Package) *action { key := cacheKey{mode, p} a := b.actionCache[key] if a != nil { return a } a = &action{p: p, pkgdir: p.build.PkgRoot} if p.pkgdir != "" { // overrides p.t a.pkgdir = p.pkgdir } b.actionCache[key] = a for _, p1 := range p.imports { a.deps = append(a.deps, b.action(depMode, depMode, p1)) } // If we are not doing a cross-build, then record the binary we'll // generate for cgo as a dependency of the build of any package // using cgo, to make sure we do not overwrite the binary while // a package is using it. If this is a cross-build, then the cgo we // are writing is not the cgo we need to use. if goos == runtime.GOOS && goarch == runtime.GOARCH && !buildRace { if len(p.CgoFiles) > 0 || p.Standard && p.ImportPath == "runtime/cgo" { var stk importStack p1 := loadPackage("cmd/cgo", &stk) if p1.Error != nil { fatalf("load cmd/cgo: %v", p1.Error) } a.cgo = b.action(depMode, depMode, p1) a.deps = append(a.deps, a.cgo) } } if p.Standard { switch p.ImportPath { case "builtin", "unsafe": // Fake packages - nothing to build. return a } // gccgo standard library is "fake" too. if _, ok := buildToolchain.(gccgoToolchain); ok { // the target name is needed for cgo. a.target = p.target return a } } if !p.Stale && p.target != "" { // p.Stale==false implies that p.target is up-to-date. // Record target name for use by actions depending on this one. a.target = p.target return a } if p.local && p.target == "" { // Imported via local path. No permanent target. mode = modeBuild } work := p.pkgdir if work == "" { work = b.work } a.objdir = filepath.Join(work, a.p.ImportPath, "_obj") + string(filepath.Separator) a.objpkg = buildToolchain.pkgpath(work, a.p) a.link = p.Name == "main" switch mode { case modeInstall: a.f = (*builder).install a.deps = []*action{b.action(modeBuild, depMode, p)} a.target = a.p.target case modeBuild: a.f = (*builder).build a.target = a.objpkg if a.link { // An executable file. (This is the name of a temporary file.) // Because we run the temporary file in 'go run' and 'go test', // the name will show up in ps listings. If the caller has specified // a name, use that instead of a.out. The binary is generated // in an otherwise empty subdirectory named exe to avoid // naming conflicts. The only possible conflict is if we were // to create a top-level package named exe. name := "a.out" if p.exeName != "" { name = p.exeName } a.target = a.objdir + filepath.Join("exe", name) + exeSuffix } } return a } // actionList returns the list of actions in the dag rooted at root // as visited in a depth-first post-order traversal. func actionList(root *action) []*action { seen := map[*action]bool{} all := []*action{} var walk func(*action) walk = func(a *action) { if seen[a] { return } seen[a] = true for _, a1 := range a.deps { walk(a1) } all = append(all, a) } walk(root) return all } // do runs the action graph rooted at root. func (b *builder) do(root *action) { // Build list of all actions, assigning depth-first post-order priority. // The original implementation here was a true queue // (using a channel) but it had the effect of getting // distracted by low-level leaf actions to the detriment // of completing higher-level actions. The order of // work does not matter much to overall execution time, // but when running "go test std" it is nice to see each test // results as soon as possible. The priorities assigned // ensure that, all else being equal, the execution prefers // to do what it would have done first in a simple depth-first // dependency order traversal. all := actionList(root) for i, a := range all { a.priority = i } b.readySema = make(chan bool, len(all)) // Initialize per-action execution state. for _, a := range all { for _, a1 := range a.deps { a1.triggers = append(a1.triggers, a) } a.pending = len(a.deps) if a.pending == 0 { b.ready.push(a) b.readySema <- true } } // Handle runs a single action and takes care of triggering // any actions that are runnable as a result. handle := func(a *action) { var err error if a.f != nil && (!a.failed || a.ignoreFail) { err = a.f(b, a) } // The actions run in parallel but all the updates to the // shared work state are serialized through b.exec. b.exec.Lock() defer b.exec.Unlock() if err != nil { if err == errPrintedOutput { setExitStatus(2) } else { errorf("%s", err) } a.failed = true } for _, a0 := range a.triggers { if a.failed { a0.failed = true } if a0.pending--; a0.pending == 0 { b.ready.push(a0) b.readySema <- true } } if a == root { close(b.readySema) } } var wg sync.WaitGroup // Kick off goroutines according to parallelism. // If we are using the -n flag (just printing commands) // drop the parallelism to 1, both to make the output // deterministic and because there is no real work anyway. par := buildP if buildN { par = 1 } for i := 0; i < par; i++ { wg.Add(1) go func() { defer wg.Done() for { select { case _, ok := <-b.readySema: if !ok { return } // Receiving a value from b.readySema entitles // us to take from the ready queue. b.exec.Lock() a := b.ready.pop() b.exec.Unlock() handle(a) case <-interrupted: setExitStatus(1) return } } }() } wg.Wait() } // hasString reports whether s appears in the list of strings. func hasString(strings []string, s string) bool { for _, t := range strings { if s == t { return true } } return false } // build is the action for building a single package or command. func (b *builder) build(a *action) (err error) { // Return an error if the package has CXX files but it's not using // cgo nor SWIG, since the CXX files can only be processed by cgo // and SWIG (it's possible to have packages with C files without // using cgo, they will get compiled with the plan9 C compiler and // linked with the rest of the package). if len(a.p.CXXFiles) > 0 && !a.p.usesCgo() && !a.p.usesSwig() { return fmt.Errorf("can't build package %s because it contains C++ files (%s) but it's not using cgo nor SWIG", a.p.ImportPath, strings.Join(a.p.CXXFiles, ",")) } // Same as above for Objective-C files if len(a.p.MFiles) > 0 && !a.p.usesCgo() && !a.p.usesSwig() { return fmt.Errorf("can't build package %s because it contains Objective-C files (%s) but it's not using cgo nor SWIG", a.p.ImportPath, strings.Join(a.p.MFiles, ",")) } defer func() { if err != nil && err != errPrintedOutput { err = fmt.Errorf("go build %s: %v", a.p.ImportPath, err) } }() if buildN { // In -n mode, print a banner between packages. // The banner is five lines so that when changes to // different sections of the bootstrap script have to // be merged, the banners give patch something // to use to find its context. fmt.Printf("\n#\n# %s\n#\n\n", a.p.ImportPath) } if buildV { fmt.Fprintf(os.Stderr, "%s\n", a.p.ImportPath) } if a.p.Standard && a.p.ImportPath == "runtime" && buildContext.Compiler == "gc" && !hasString(a.p.HFiles, "zasm_"+buildContext.GOOS+"_"+buildContext.GOARCH+".h") { return fmt.Errorf("%s/%s must be bootstrapped using make%v", buildContext.GOOS, buildContext.GOARCH, defaultSuffix()) } // Make build directory. obj := a.objdir if err := b.mkdir(obj); err != nil { return err } // make target directory dir, _ := filepath.Split(a.target) if dir != "" { if err := b.mkdir(dir); err != nil { return err } } var gofiles, cfiles, sfiles, objects, cgoObjects []string gofiles = append(gofiles, a.p.GoFiles...) cfiles = append(cfiles, a.p.CFiles...) sfiles = append(sfiles, a.p.SFiles...) // Run cgo. if a.p.usesCgo() { // In a package using cgo, cgo compiles the C, C++ and assembly files with gcc. // There is one exception: runtime/cgo's job is to bridge the // cgo and non-cgo worlds, so it necessarily has files in both. // In that case gcc only gets the gcc_* files. var gccfiles []string if a.p.Standard && a.p.ImportPath == "runtime/cgo" { filter := func(files, nongcc, gcc []string) ([]string, []string) { for _, f := range files { if strings.HasPrefix(f, "gcc_") { gcc = append(gcc, f) } else { nongcc = append(nongcc, f) } } return nongcc, gcc } cfiles, gccfiles = filter(cfiles, cfiles[:0], gccfiles) sfiles, gccfiles = filter(sfiles, sfiles[:0], gccfiles) } else { gccfiles = append(cfiles, sfiles...) cfiles = nil sfiles = nil } cgoExe := tool("cgo") if a.cgo != nil && a.cgo.target != "" { cgoExe = a.cgo.target } outGo, outObj, err := b.cgo(a.p, cgoExe, obj, gccfiles, a.p.CXXFiles, a.p.MFiles) if err != nil { return err } cgoObjects = append(cgoObjects, outObj...) gofiles = append(gofiles, outGo...) } // Run SWIG. if a.p.usesSwig() { // In a package using SWIG, any .c or .s files are // compiled with gcc. gccfiles := append(cfiles, sfiles...) cfiles = nil sfiles = nil outGo, outObj, err := b.swig(a.p, obj, gccfiles, a.p.CXXFiles, a.p.MFiles) if err != nil { return err } cgoObjects = append(cgoObjects, outObj...) gofiles = append(gofiles, outGo...) } if len(gofiles) == 0 { return &build.NoGoError{a.p.Dir} } // If we're doing coverage, preprocess the .go files and put them in the work directory if a.p.coverMode != "" { for i, file := range gofiles { var sourceFile string var coverFile string var key string if strings.HasSuffix(file, ".cgo1.go") { // cgo files have absolute paths base := filepath.Base(file) sourceFile = file coverFile = filepath.Join(obj, base) key = strings.TrimSuffix(base, ".cgo1.go") + ".go" } else { sourceFile = filepath.Join(a.p.Dir, file) coverFile = filepath.Join(obj, file) key = file } cover := a.p.coverVars[key] if cover == nil || isTestFile(file) { // Not covering this file. continue } if err := b.cover(a, coverFile, sourceFile, 0666, cover.Var); err != nil { return err } gofiles[i] = coverFile } } // Prepare Go import path list. inc := b.includeArgs("-I", a.deps) // Compile Go. ofile, out, err := buildToolchain.gc(b, a.p, a.objpkg, obj, inc, gofiles) if len(out) > 0 { b.showOutput(a.p.Dir, a.p.ImportPath, b.processOutput(out)) if err != nil { return errPrintedOutput } } if err != nil { return err } if ofile != a.objpkg { objects = append(objects, ofile) } // Copy .h files named for goos or goarch or goos_goarch // to names using GOOS and GOARCH. // For example, defs_linux_amd64.h becomes defs_GOOS_GOARCH.h. _goos_goarch := "_" + goos + "_" + goarch _goos := "_" + goos _goarch := "_" + goarch for _, file := range a.p.HFiles { name, ext := fileExtSplit(file) switch { case strings.HasSuffix(name, _goos_goarch): targ := file[:len(name)-len(_goos_goarch)] + "_GOOS_GOARCH." + ext if err := b.copyFile(a, obj+targ, filepath.Join(a.p.Dir, file), 0644); err != nil { return err } case strings.HasSuffix(name, _goarch): targ := file[:len(name)-len(_goarch)] + "_GOARCH." + ext if err := b.copyFile(a, obj+targ, filepath.Join(a.p.Dir, file), 0644); err != nil { return err } case strings.HasSuffix(name, _goos): targ := file[:len(name)-len(_goos)] + "_GOOS." + ext if err := b.copyFile(a, obj+targ, filepath.Join(a.p.Dir, file), 0644); err != nil { return err } } } objExt := archChar if _, ok := buildToolchain.(gccgoToolchain); ok { objExt = "o" } for _, file := range cfiles { out := file[:len(file)-len(".c")] + "." + objExt if err := buildToolchain.cc(b, a.p, obj, obj+out, file); err != nil { return err } objects = append(objects, out) } // Assemble .s files. for _, file := range sfiles { out := file[:len(file)-len(".s")] + "." + objExt if err := buildToolchain.asm(b, a.p, obj, obj+out, file); err != nil { return err } objects = append(objects, out) } // 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 objects = append(objects, cgoObjects...) // Add system object files. for _, syso := range a.p.SysoFiles { objects = append(objects, filepath.Join(a.p.Dir, syso)) } // Pack into archive in obj directory. // If the Go compiler wrote an archive, we only need to add the // object files for non-Go sources to the archive. // If the Go compiler wrote an archive and the package is entirely // Go sources, there is no pack to execute at all. if len(objects) > 0 { if err := buildToolchain.pack(b, a.p, obj, a.objpkg, objects); err != nil { return err } } // Link if needed. if a.link { // The compiler only cares about direct imports, but the // linker needs the whole dependency tree. all := actionList(a) all = all[:len(all)-1] // drop a if err := buildToolchain.ld(b, a.p, a.target, all, a.objpkg, objects); err != nil { return err } } return nil } // install is the action for installing a single package or executable. func (b *builder) install(a *action) (err error) { defer func() { if err != nil && err != errPrintedOutput { err = fmt.Errorf("go install %s: %v", a.p.ImportPath, err) } }() a1 := a.deps[0] perm := os.FileMode(0644) if a1.link { perm = 0755 } // make target directory dir, _ := filepath.Split(a.target) if dir != "" { if err := b.mkdir(dir); err != nil { return err } } // remove object dir to keep the amount of // garbage down in a large build. On an operating system // with aggressive buffering, cleaning incrementally like // this keeps the intermediate objects from hitting the disk. if !buildWork { defer os.RemoveAll(a1.objdir) defer os.Remove(a1.target) } return b.moveOrCopyFile(a, a.target, a1.target, perm) } // includeArgs returns the -I or -L directory list for access // to the results of the list of actions. func (b *builder) includeArgs(flag string, all []*action) []string { inc := []string{} incMap := map[string]bool{ b.work: true, // handled later gorootPkg: true, "": true, // ignore empty strings } // Look in the temporary space for results of test-specific actions. // This is the $WORK/my/package/_test directory for the // package being built, so there are few of these. for _, a1 := range all { if dir := a1.pkgdir; dir != a1.p.build.PkgRoot && !incMap[dir] { incMap[dir] = true inc = append(inc, flag, dir) } } // Also look in $WORK for any non-test packages that have // been built but not installed. inc = append(inc, flag, b.work) // Finally, look in the installed package directories for each action. for _, a1 := range all { if dir := a1.pkgdir; dir == a1.p.build.PkgRoot && !incMap[dir] { incMap[dir] = true if _, ok := buildToolchain.(gccgoToolchain); ok { dir = filepath.Join(dir, "gccgo_"+goos+"_"+goarch) } else { dir = filepath.Join(dir, goos+"_"+goarch) if buildContext.InstallSuffix != "" { dir += "_" + buildContext.InstallSuffix } } inc = append(inc, flag, dir) } } return inc } // moveOrCopyFile is like 'mv src dst' or 'cp src dst'. func (b *builder) moveOrCopyFile(a *action, dst, src string, perm os.FileMode) error { if buildN { b.showcmd("", "mv %s %s", src, dst) return nil } // If we can update the mode and rename to the dst, do it. // Otherwise fall back to standard copy. if err := os.Chmod(src, perm); err == nil { if err := os.Rename(src, dst); err == nil { if buildX { b.showcmd("", "mv %s %s", src, dst) } return nil } } return b.copyFile(a, dst, src, perm) } // copyFile is like 'cp src dst'. func (b *builder) copyFile(a *action, dst, src string, perm os.FileMode) error { if buildN || buildX { b.showcmd("", "cp %s %s", src, dst) if buildN { return nil } } sf, err := os.Open(src) if err != nil { return err } defer sf.Close() // Be careful about removing/overwriting dst. // Do not remove/overwrite if dst exists and is a directory // or a non-object file. if fi, err := os.Stat(dst); err == nil { if fi.IsDir() { return fmt.Errorf("build output %q already exists and is a directory", dst) } if !isObject(dst) { return fmt.Errorf("build output %q already exists and is not an object file", dst) } } // On Windows, remove lingering ~ file from last attempt. if toolIsWindows { if _, err := os.Stat(dst + "~"); err == nil { os.Remove(dst + "~") } } os.Remove(dst) df, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, perm) if err != nil && toolIsWindows { // Windows does not allow deletion of a binary file // while it is executing. Try to move it out of the way. // If the move fails, which is likely, we'll try again the // next time we do an install of this binary. if err := os.Rename(dst, dst+"~"); err == nil { os.Remove(dst + "~") } df, err = os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, perm) } if err != nil { return err } _, err = io.Copy(df, sf) df.Close() if err != nil { os.Remove(dst) return fmt.Errorf("copying %s to %s: %v", src, dst, err) } return nil } // cover runs, in effect, // go tool cover -mode=b.coverMode -var="varName" -o dst.go src.go func (b *builder) cover(a *action, dst, src string, perm os.FileMode, varName string) error { return b.run(a.objdir, "cover "+a.p.ImportPath, nil, tool("cover"), "-mode", a.p.coverMode, "-var", varName, "-o", dst, src) } var objectMagic = [][]byte{ {'!', '<', 'a', 'r', 'c', 'h', '>', '\n'}, // Package archive {'\x7F', 'E', 'L', 'F'}, // ELF {0xFE, 0xED, 0xFA, 0xCE}, // Mach-O big-endian 32-bit {0xFE, 0xED, 0xFA, 0xCF}, // Mach-O big-endian 64-bit {0xCE, 0xFA, 0xED, 0xFE}, // Mach-O little-endian 32-bit {0xCF, 0xFA, 0xED, 0xFE}, // Mach-O little-endian 64-bit {0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x04, 0x00}, // PE (Windows) as generated by 6l/8l {0x00, 0x00, 0x01, 0xEB}, // Plan 9 i386 {0x00, 0x00, 0x8a, 0x97}, // Plan 9 amd64 } func isObject(s string) bool { f, err := os.Open(s) if err != nil { return false } defer f.Close() buf := make([]byte, 64) io.ReadFull(f, buf) for _, magic := range objectMagic { if bytes.HasPrefix(buf, magic) { return true } } return false } // fmtcmd formats a command in the manner of fmt.Sprintf but also: // // If dir is non-empty and the script is not in dir right now, // fmtcmd inserts "cd dir\n" before the command. // // fmtcmd replaces the value of b.work with $WORK. // fmtcmd replaces the value of goroot with $GOROOT. // fmtcmd replaces the value of b.gobin with $GOBIN. // // fmtcmd replaces the name of the current directory with dot (.) // but only when it is at the beginning of a space-separated token. // func (b *builder) fmtcmd(dir string, format string, args ...interface{}) string { cmd := fmt.Sprintf(format, args...) if dir != "" && dir != "/" { cmd = strings.Replace(" "+cmd, " "+dir, " .", -1)[1:] if b.scriptDir != dir { b.scriptDir = dir cmd = "cd " + dir + "\n" + cmd } } if b.work != "" { cmd = strings.Replace(cmd, b.work, "$WORK", -1) } return cmd } // showcmd prints the given command to standard output // for the implementation of -n or -x. func (b *builder) showcmd(dir string, format string, args ...interface{}) { b.output.Lock() defer b.output.Unlock() b.print(b.fmtcmd(dir, format, args...) + "\n") } // showOutput prints "# desc" followed by the given output. // The output is expected to contain references to 'dir', usually // the source directory for the package that has failed to build. // showOutput rewrites mentions of dir with a relative path to dir // when the relative path is shorter. This is usually more pleasant. // For example, if fmt doesn't compile and we are in src/pkg/html, // the output is // // $ go build // # fmt // ../fmt/print.go:1090: undefined: asdf // $ // // instead of // // $ go build // # fmt // /usr/gopher/go/src/pkg/fmt/print.go:1090: undefined: asdf // $ // // showOutput also replaces references to the work directory with $WORK. // func (b *builder) showOutput(dir, desc, out string) { prefix := "# " + desc suffix := "\n" + out if reldir := shortPath(dir); reldir != dir { suffix = strings.Replace(suffix, " "+dir, " "+reldir, -1) suffix = strings.Replace(suffix, "\n"+dir, "\n"+reldir, -1) } suffix = strings.Replace(suffix, " "+b.work, " $WORK", -1) b.output.Lock() defer b.output.Unlock() b.print(prefix, suffix) } // shortPath returns an absolute or relative name for path, whatever is shorter. func shortPath(path string) string { if rel, err := filepath.Rel(cwd, path); err == nil && len(rel) < len(path) { return rel } return path } // relPaths returns a copy of paths with absolute paths // made relative to the current directory if they would be shorter. func relPaths(paths []string) []string { var out []string pwd, _ := os.Getwd() for _, p := range paths { rel, err := filepath.Rel(pwd, p) if err == nil && len(rel) < len(p) { p = rel } out = append(out, p) } return out } // errPrintedOutput is a special error indicating that a command failed // but that it generated output as well, and that output has already // been printed, so there's no point showing 'exit status 1' or whatever // the wait status was. The main executor, builder.do, knows not to // print this error. var errPrintedOutput = errors.New("already printed output - no need to show error") var cgoLine = regexp.MustCompile(`\[[^\[\]]+\.cgo1\.go:[0-9]+\]`) var cgoTypeSigRe = regexp.MustCompile(`\b_Ctype_\B`) // run runs the command given by cmdline in the directory dir. // If the command fails, run prints information about the failure // and returns a non-nil error. func (b *builder) run(dir string, desc string, env []string, cmdargs ...interface{}) error { out, err := b.runOut(dir, desc, env, cmdargs...) if len(out) > 0 { if desc == "" { desc = b.fmtcmd(dir, "%s", strings.Join(stringList(cmdargs...), " ")) } b.showOutput(dir, desc, b.processOutput(out)) if err != nil { err = errPrintedOutput } } return err } // processOutput prepares the output of runOut to be output to the console. func (b *builder) processOutput(out []byte) string { if out[len(out)-1] != '\n' { out = append(out, '\n') } messages := string(out) // Fix up output referring to cgo-generated code to be more readable. // Replace x.go:19[/tmp/.../x.cgo1.go:18] with x.go:19. // Replace *[100]_Ctype_foo with *[100]C.foo. // If we're using -x, assume we're debugging and want the full dump, so disable the rewrite. if !buildX && cgoLine.MatchString(messages) { messages = cgoLine.ReplaceAllString(messages, "") messages = cgoTypeSigRe.ReplaceAllString(messages, "C.") } return messages } // runOut runs the command given by cmdline in the directory dir. // It returns the command output and any errors that occurred. func (b *builder) runOut(dir string, desc string, env []string, cmdargs ...interface{}) ([]byte, error) { cmdline := stringList(cmdargs...) if buildN || buildX { var envcmdline string for i := range env { envcmdline += env[i] envcmdline += " " } envcmdline += joinUnambiguously(cmdline) b.showcmd(dir, "%s", envcmdline) if buildN { return nil, nil } } nbusy := 0 for { var buf bytes.Buffer cmd := exec.Command(cmdline[0], cmdline[1:]...) cmd.Stdout = &buf cmd.Stderr = &buf cmd.Dir = dir cmd.Env = mergeEnvLists(env, envForDir(cmd.Dir)) err := cmd.Run() // cmd.Run will fail on Unix if some other process has the binary // we want to run open for writing. This can happen here because // we build and install the cgo command and then run it. // If another command was kicked off while we were writing the // cgo binary, the child process for that command may be holding // a reference to the fd, keeping us from running exec. // // But, you might reasonably wonder, how can this happen? // The cgo fd, like all our fds, is close-on-exec, so that we need // not worry about other processes inheriting the fd accidentally. // The answer is that running a command is fork and exec. // A child forked while the cgo fd is open inherits that fd. // Until the child has called exec, it holds the fd open and the // kernel will not let us run cgo. Even if the child were to close // the fd explicitly, it would still be open from the time of the fork // until the time of the explicit close, and the race would remain. // // On Unix systems, this results in ETXTBSY, which formats // as "text file busy". Rather than hard-code specific error cases, // we just look for that string. If this happens, sleep a little // and try again. We let this happen three times, with increasing // sleep lengths: 100+200+400 ms = 0.7 seconds. // // An alternate solution might be to split the cmd.Run into // separate cmd.Start and cmd.Wait, and then use an RWLock // to make sure that copyFile only executes when no cmd.Start // call is in progress. However, cmd.Start (really syscall.forkExec) // only guarantees that when it returns, the exec is committed to // happen and succeed. It uses a close-on-exec file descriptor // itself to determine this, so we know that when cmd.Start returns, // at least one close-on-exec file descriptor has been closed. // However, we cannot be sure that all of them have been closed, // so the program might still encounter ETXTBSY even with such // an RWLock. The race window would be smaller, perhaps, but not // guaranteed to be gone. // // Sleeping when we observe the race seems to be the most reliable // option we have. // // http://golang.org/issue/3001 // if err != nil && nbusy < 3 && strings.Contains(err.Error(), "text file busy") { time.Sleep(100 * time.Millisecond << uint(nbusy)) nbusy++ continue } return buf.Bytes(), err } } // joinUnambiguously prints the slice, quoting where necessary to make the // output unambiguous. // TODO: See issue 5279. The printing of commands needs a complete redo. func joinUnambiguously(a []string) string { var buf bytes.Buffer for i, s := range a { if i > 0 { buf.WriteByte(' ') } q := strconv.Quote(s) if s == "" || strings.Contains(s, " ") || len(q) > len(s)+2 { buf.WriteString(q) } else { buf.WriteString(s) } } return buf.String() } // mkdir makes the named directory. func (b *builder) mkdir(dir string) error { b.exec.Lock() defer b.exec.Unlock() // We can be a little aggressive about being // sure directories exist. Skip repeated calls. if b.mkdirCache[dir] { return nil } b.mkdirCache[dir] = true if buildN || buildX { b.showcmd("", "mkdir -p %s", dir) if buildN { return nil } } if err := os.MkdirAll(dir, 0777); err != nil { return err } return nil } // mkAbs returns an absolute path corresponding to // evaluating f in the directory dir. // We always pass absolute paths of source files so that // the error messages will include the full path to a file // in need of attention. func mkAbs(dir, f string) string { // Leave absolute paths alone. // Also, during -n mode we use the pseudo-directory $WORK // instead of creating an actual work directory that won't be used. // Leave paths beginning with $WORK alone too. if filepath.IsAbs(f) || strings.HasPrefix(f, "$WORK") { return f } return filepath.Join(dir, f) } type toolchain interface { // gc runs the compiler in a specific directory on a set of files // and returns the name of the generated output file. // The compiler runs in the directory dir. gc(b *builder, p *Package, archive, obj string, importArgs []string, gofiles []string) (ofile string, out []byte, err error) // cc runs the toolchain's C compiler in a directory on a C file // to produce an output file. cc(b *builder, p *Package, objdir, ofile, cfile string) error // asm runs the assembler in a specific directory on a specific file // to generate the named output file. asm(b *builder, p *Package, obj, ofile, sfile string) error // pkgpath builds an appropriate path for a temporary package file. pkgpath(basedir string, p *Package) string // pack runs the archive packer in a specific directory to create // an archive from a set of object files. // typically it is run in the object directory. pack(b *builder, p *Package, objDir, afile string, ofiles []string) error // ld runs the linker to create a package starting at mainpkg. ld(b *builder, p *Package, out string, allactions []*action, mainpkg string, ofiles []string) error compiler() string linker() string } type noToolchain struct{} func noCompiler() error { log.Fatalf("unknown compiler %q", buildContext.Compiler) return nil } func (noToolchain) compiler() string { noCompiler() return "" } func (noToolchain) linker() string { noCompiler() return "" } func (noToolchain) gc(b *builder, p *Package, archive, obj string, importArgs []string, gofiles []string) (ofile string, out []byte, err error) { return "", nil, noCompiler() } func (noToolchain) asm(b *builder, p *Package, obj, ofile, sfile string) error { return noCompiler() } func (noToolchain) pkgpath(basedir string, p *Package) string { noCompiler() return "" } func (noToolchain) pack(b *builder, p *Package, objDir, afile string, ofiles []string) error { return noCompiler() } func (noToolchain) ld(b *builder, p *Package, out string, allactions []*action, mainpkg string, ofiles []string) error { return noCompiler() } func (noToolchain) cc(b *builder, p *Package, objdir, ofile, cfile string) error { return noCompiler() } // The Go toolchain. type gcToolchain struct{} func (gcToolchain) compiler() string { return tool(archChar + "g") } func (gcToolchain) linker() string { return tool(archChar + "l") } func (gcToolchain) gc(b *builder, p *Package, archive, obj string, importArgs []string, gofiles []string) (ofile string, output []byte, err error) { if archive != "" { ofile = archive } else { out := "_go_." + archChar ofile = obj + out } gcargs := []string{"-p", p.ImportPath} if p.Standard && p.ImportPath == "runtime" { // runtime compiles with a special 6g flag to emit // additional reflect type data. gcargs = append(gcargs, "-+") } // If we're giving the compiler the entire package (no C etc files), tell it that, // so that it can give good error messages about forward declarations. // Exceptions: a few standard packages have forward declarations for // pieces supplied behind-the-scenes by package runtime. extFiles := len(p.CgoFiles) + len(p.CFiles) + len(p.CXXFiles) + len(p.MFiles) + len(p.SFiles) + len(p.SysoFiles) + len(p.SwigFiles) + len(p.SwigCXXFiles) if p.Standard { switch p.ImportPath { case "os", "runtime/pprof", "sync", "time": extFiles++ } } if extFiles == 0 { gcargs = append(gcargs, "-complete") } if buildContext.InstallSuffix != "" { gcargs = append(gcargs, "-installsuffix", buildContext.InstallSuffix) } args := stringList(tool(archChar+"g"), "-o", ofile, "-trimpath", b.work, buildGcflags, gcargs, "-D", p.localPrefix, importArgs) if ofile == archive { args = append(args, "-pack") } for _, f := range gofiles { args = append(args, mkAbs(p.Dir, f)) } output, err = b.runOut(p.Dir, p.ImportPath, nil, args) return ofile, output, err } func (gcToolchain) asm(b *builder, p *Package, obj, ofile, sfile string) error { sfile = mkAbs(p.Dir, sfile) return b.run(p.Dir, p.ImportPath, nil, tool(archChar+"a"), "-trimpath", b.work, "-I", obj, "-o", ofile, "-D", "GOOS_"+goos, "-D", "GOARCH_"+goarch, sfile) } func (gcToolchain) pkgpath(basedir string, p *Package) string { end := filepath.FromSlash(p.ImportPath + ".a") return filepath.Join(basedir, end) } func (gcToolchain) pack(b *builder, p *Package, objDir, afile string, ofiles []string) error { var absOfiles []string for _, f := range ofiles { absOfiles = append(absOfiles, mkAbs(objDir, f)) } cmd := "c" absAfile := mkAbs(objDir, afile) appending := false if _, err := os.Stat(absAfile); err == nil { appending = true cmd = "r" } cmdline := stringList("pack", cmd, absAfile, absOfiles) if appending { if buildN || buildX { b.showcmd(p.Dir, "%s # internal", joinUnambiguously(cmdline)) } if buildN { return nil } if err := packInternal(b, absAfile, absOfiles); err != nil { b.showOutput(p.Dir, p.ImportPath, err.Error()+"\n") return errPrintedOutput } return nil } // Need actual pack. cmdline[0] = tool("pack") return b.run(p.Dir, p.ImportPath, nil, cmdline) } func packInternal(b *builder, afile string, ofiles []string) error { dst, err := os.OpenFile(afile, os.O_WRONLY|os.O_APPEND, 0) if err != nil { return err } defer dst.Close() // only for error returns or panics w := bufio.NewWriter(dst) for _, ofile := range ofiles { src, err := os.Open(ofile) if err != nil { return err } fi, err := src.Stat() if err != nil { src.Close() return err } // Note: Not using %-16.16s format because we care // about bytes, not runes. name := fi.Name() if len(name) > 16 { name = name[:16] } else { name += strings.Repeat(" ", 16-len(name)) } size := fi.Size() fmt.Fprintf(w, "%s%-12d%-6d%-6d%-8o%-10d`\n", name, 0, 0, 0, 0644, size) n, err := io.Copy(w, src) src.Close() if err == nil && n < size { err = io.ErrUnexpectedEOF } else if err == nil && n > size { err = fmt.Errorf("file larger than size reported by stat") } if err != nil { return fmt.Errorf("copying %s to %s: %v", ofile, afile, err) } if size&1 != 0 { w.WriteByte(0) } } if err := w.Flush(); err != nil { return err } return dst.Close() } func (gcToolchain) ld(b *builder, p *Package, out string, allactions []*action, mainpkg string, ofiles []string) error { importArgs := b.includeArgs("-L", allactions) cxx := false for _, a := range allactions { if a.p != nil && len(a.p.CXXFiles) > 0 { cxx = true } } ldflags := buildLdflags // Limit slice capacity so that concurrent appends do not race on the shared array. ldflags = ldflags[:len(ldflags):len(ldflags)] if buildContext.InstallSuffix != "" { ldflags = append(ldflags, "-installsuffix", buildContext.InstallSuffix) } if p.omitDWARF { ldflags = append(ldflags, "-w") } // If the user has not specified the -extld option, then specify the // appropriate linker. In case of C++ code, use the compiler named // by the CXX environment variable or defaultCXX if CXX is not set. // Else, use the CC environment variable and defaultCC as fallback. extld := false for _, f := range ldflags { if f == "-extld" || strings.HasPrefix(f, "-extld=") { extld = true break } } if !extld { var compiler []string if cxx { compiler = envList("CXX", defaultCXX) } else { compiler = envList("CC", defaultCC) } ldflags = append(ldflags, "-extld="+compiler[0]) if len(compiler) > 1 { extldflags := false add := strings.Join(compiler[1:], " ") for i, f := range ldflags { if f == "-extldflags" && i+1 < len(ldflags) { ldflags[i+1] = add + " " + ldflags[i+1] extldflags = true break } else if strings.HasPrefix(f, "-extldflags=") { ldflags[i] = "-extldflags=" + add + " " + ldflags[i][len("-extldflags="):] extldflags = true break } } if !extldflags { ldflags = append(ldflags, "-extldflags="+add) } } } return b.run(".", p.ImportPath, nil, tool(archChar+"l"), "-o", out, importArgs, ldflags, mainpkg) } func (gcToolchain) cc(b *builder, p *Package, objdir, ofile, cfile string) error { inc := filepath.Join(goroot, "pkg", fmt.Sprintf("%s_%s", goos, goarch)) cfile = mkAbs(p.Dir, cfile) args := stringList(tool(archChar+"c"), "-F", "-V", "-w", "-trimpath", b.work, "-I", objdir, "-I", inc, "-o", ofile, buildCcflags, "-D", "GOOS_"+goos, "-D", "GOARCH_"+goarch, cfile) return b.run(p.Dir, p.ImportPath, nil, args) } // The Gccgo toolchain. type gccgoToolchain struct{} var gccgoBin, _ = exec.LookPath("gccgo") func (gccgoToolchain) compiler() string { return gccgoBin } func (gccgoToolchain) linker() string { return gccgoBin } func (gccgoToolchain) gc(b *builder, p *Package, archive, obj string, importArgs []string, gofiles []string) (ofile string, output []byte, err error) { out := p.Name + ".o" ofile = obj + out gcargs := []string{"-g"} gcargs = append(gcargs, b.gccArchArgs()...) if pkgpath := gccgoPkgpath(p); pkgpath != "" { gcargs = append(gcargs, "-fgo-pkgpath="+pkgpath) } if p.localPrefix != "" { gcargs = append(gcargs, "-fgo-relative-import-path="+p.localPrefix) } args := stringList("gccgo", importArgs, "-c", gcargs, "-o", ofile, buildGccgoflags) for _, f := range gofiles { args = append(args, mkAbs(p.Dir, f)) } output, err = b.runOut(p.Dir, p.ImportPath, nil, args) return ofile, output, err } func (gccgoToolchain) asm(b *builder, p *Package, obj, ofile, sfile string) error { sfile = mkAbs(p.Dir, sfile) defs := []string{"-D", "GOOS_" + goos, "-D", "GOARCH_" + goarch} if pkgpath := gccgoCleanPkgpath(p); pkgpath != "" { defs = append(defs, `-D`, `GOPKGPATH="`+pkgpath+`"`) } defs = append(defs, b.gccArchArgs()...) return b.run(p.Dir, p.ImportPath, nil, "gccgo", "-I", obj, "-o", ofile, defs, sfile) } func (gccgoToolchain) pkgpath(basedir string, p *Package) string { end := filepath.FromSlash(p.ImportPath + ".a") afile := filepath.Join(basedir, end) // add "lib" to the final element return filepath.Join(filepath.Dir(afile), "lib"+filepath.Base(afile)) } func (gccgoToolchain) pack(b *builder, p *Package, objDir, afile string, ofiles []string) error { var absOfiles []string for _, f := range ofiles { absOfiles = append(absOfiles, mkAbs(objDir, f)) } return b.run(p.Dir, p.ImportPath, nil, "ar", "cru", mkAbs(objDir, afile), absOfiles) } func (tools gccgoToolchain) ld(b *builder, p *Package, out string, allactions []*action, mainpkg string, ofiles []string) error { // gccgo needs explicit linking with all package dependencies, // and all LDFLAGS from cgo dependencies. apackagesSeen := make(map[*Package]bool) afiles := []string{} ldflags := b.gccArchArgs() cgoldflags := []string{} usesCgo := false cxx := false objc := false // Prefer the output of an install action to the output of a build action, // because the install action will delete the output of the build action. // Iterate over the list backward (reverse dependency order) so that we // always see the install before the build. for i := len(allactions) - 1; i >= 0; i-- { a := allactions[i] if !a.p.Standard { if a.p != nil && !apackagesSeen[a.p] { apackagesSeen[a.p] = true if a.p.fake { // move _test files to the top of the link order afiles = append([]string{a.target}, afiles...) } else { afiles = append(afiles, a.target) } } } } for _, a := range allactions { if a.p != nil { cgoldflags = append(cgoldflags, a.p.CgoLDFLAGS...) if len(a.p.CgoFiles) > 0 { usesCgo = true } if a.p.usesSwig() { usesCgo = true } if len(a.p.CXXFiles) > 0 { cxx = true } if len(a.p.MFiles) > 0 { objc = true } } } ldflags = append(ldflags, afiles...) ldflags = append(ldflags, cgoldflags...) ldflags = append(ldflags, p.CgoLDFLAGS...) if usesCgo && goos == "linux" { ldflags = append(ldflags, "-Wl,-E") } if cxx { ldflags = append(ldflags, "-lstdc++") } if objc { ldflags = append(ldflags, "-lobjc") } return b.run(".", p.ImportPath, nil, "gccgo", "-o", out, ofiles, "-Wl,-(", ldflags, "-Wl,-)", buildGccgoflags) } func (gccgoToolchain) cc(b *builder, p *Package, objdir, ofile, cfile string) error { inc := filepath.Join(goroot, "pkg", fmt.Sprintf("%s_%s", goos, goarch)) cfile = mkAbs(p.Dir, cfile) defs := []string{"-D", "GOOS_" + goos, "-D", "GOARCH_" + goarch} defs = append(defs, b.gccArchArgs()...) if pkgpath := gccgoCleanPkgpath(p); pkgpath != "" { defs = append(defs, `-D`, `GOPKGPATH="`+pkgpath+`"`) } // TODO: Support using clang here (during gccgo build)? return b.run(p.Dir, p.ImportPath, nil, "gcc", "-Wall", "-g", "-I", objdir, "-I", inc, "-o", ofile, defs, "-c", cfile) } func gccgoPkgpath(p *Package) string { if p.build.IsCommand() && !p.forceLibrary { return "" } return p.ImportPath } func gccgoCleanPkgpath(p *Package) string { clean := func(r rune) rune { switch { case 'A' <= r && r <= 'Z', 'a' <= r && r <= 'z', '0' <= r && r <= '9': return r } return '_' } return strings.Map(clean, gccgoPkgpath(p)) } // libgcc returns the filename for libgcc, as determined by invoking gcc with // the -print-libgcc-file-name option. func (b *builder) libgcc(p *Package) (string, error) { var buf bytes.Buffer gccCmd := b.gccCmd(p.Dir) prev := b.print if buildN { // In -n mode we temporarily swap out the builder's // print function to capture the command-line. This // let's us assign it to $LIBGCC and produce a valid // buildscript for cgo packages. b.print = func(a ...interface{}) (int, error) { return fmt.Fprint(&buf, a...) } } f, err := b.runOut(p.Dir, p.ImportPath, nil, gccCmd, "-print-libgcc-file-name") if err != nil { return "", fmt.Errorf("gcc -print-libgcc-file-name: %v (%s)", err, f) } if buildN { s := fmt.Sprintf("LIBGCC=$(%s)\n", buf.Next(buf.Len()-1)) b.print = prev b.print(s) return "$LIBGCC", nil } // clang might not be able to find libgcc, and in that case, // it will simply return "libgcc.a", which is of no use to us. if strings.Contains(gccCmd[0], "clang") && !filepath.IsAbs(string(f)) { return "", nil } return strings.Trim(string(f), "\r\n"), nil } // gcc runs the gcc C compiler to create an object from a single C file. func (b *builder) gcc(p *Package, out string, flags []string, cfile string) error { return b.ccompile(p, out, flags, cfile, b.gccCmd(p.Dir)) } // gxx runs the g++ C++ compiler to create an object from a single C++ file. func (b *builder) gxx(p *Package, out string, flags []string, cxxfile string) error { return b.ccompile(p, out, flags, cxxfile, b.gxxCmd(p.Dir)) } // ccompile runs the given C or C++ compiler and creates an object from a single source file. func (b *builder) ccompile(p *Package, out string, flags []string, file string, compiler []string) error { file = mkAbs(p.Dir, file) return b.run(p.Dir, p.ImportPath, nil, compiler, flags, "-o", out, "-c", file) } // gccld runs the gcc linker to create an executable from a set of object files. func (b *builder) gccld(p *Package, out string, flags []string, obj []string) error { var cmd []string if len(p.CXXFiles) > 0 { cmd = b.gxxCmd(p.Dir) } else { cmd = b.gccCmd(p.Dir) } return b.run(p.Dir, p.ImportPath, nil, cmd, "-o", out, obj, flags) } // gccCmd returns a gcc command line prefix // defaultCC is defined in zdefaultcc.go, written by cmd/dist. func (b *builder) gccCmd(objdir string) []string { return b.ccompilerCmd("CC", defaultCC, objdir) } // gxxCmd returns a g++ command line prefix // defaultCXX is defined in zdefaultcc.go, written by cmd/dist. func (b *builder) gxxCmd(objdir string) []string { return b.ccompilerCmd("CXX", defaultCXX, objdir) } // ccompilerCmd returns a command line prefix for the given environment // variable and using the default command when the variable is empty. func (b *builder) ccompilerCmd(envvar, defcmd, objdir string) []string { // NOTE: env.go's mkEnv knows that the first three // strings returned are "gcc", "-I", objdir (and cuts them off). compiler := envList(envvar, defcmd) a := []string{compiler[0], "-I", objdir} a = append(a, compiler[1:]...) // Definitely want -fPIC but on Windows gcc complains // "-fPIC ignored for target (all code is position independent)" if goos != "windows" { a = append(a, "-fPIC") } a = append(a, b.gccArchArgs()...) // gcc-4.5 and beyond require explicit "-pthread" flag // for multithreading with pthread library. if buildContext.CgoEnabled { switch goos { case "windows": a = append(a, "-mthreads") default: a = append(a, "-pthread") } } if strings.Contains(a[0], "clang") { // disable ASCII art in clang errors, if possible a = append(a, "-fno-caret-diagnostics") // clang is too smart about command-line arguments a = append(a, "-Qunused-arguments") } // disable word wrapping in error messages a = append(a, "-fmessage-length=0") // 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. if goos == "darwin" { a = append(a, "-fno-common") } return a } // gccArchArgs returns arguments to pass to gcc based on the architecture. func (b *builder) gccArchArgs() []string { switch archChar { case "8": return []string{"-m32"} case "6": return []string{"-m64"} case "5": return []string{"-marm"} // not thumb } return nil } // envList returns the value of the given environment variable broken // into fields, using the default value when the variable is empty. func envList(key, def string) []string { v := os.Getenv(key) if v == "" { v = def } return strings.Fields(v) } // Return the flags to use when invoking the C or C++ compilers, or cgo. func (b *builder) cflags(p *Package, def bool) (cppflags, cflags, cxxflags, ldflags []string) { var defaults string if def { defaults = "-g -O2" } cppflags = stringList(envList("CGO_CPPFLAGS", ""), p.CgoCPPFLAGS) cflags = stringList(envList("CGO_CFLAGS", defaults), p.CgoCFLAGS) cxxflags = stringList(envList("CGO_CXXFLAGS", defaults), p.CgoCXXFLAGS) ldflags = stringList(envList("CGO_LDFLAGS", defaults), p.CgoLDFLAGS) return } var cgoRe = regexp.MustCompile(`[/\\:]`) var ( cgoLibGccFile string cgoLibGccErr error cgoLibGccFileOnce sync.Once ) func (b *builder) cgo(p *Package, cgoExe, obj string, gccfiles, gxxfiles, mfiles []string) (outGo, outObj []string, err error) { cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, cgoLDFLAGS := b.cflags(p, true) _, cgoexeCFLAGS, _, _ := b.cflags(p, false) // If we are compiling Objective-C code, then we need to link against libobjc if len(mfiles) > 0 { cgoLDFLAGS = append(cgoLDFLAGS, "-lobjc") } if pkgs := p.CgoPkgConfig; len(pkgs) > 0 { out, err := b.runOut(p.Dir, p.ImportPath, nil, "pkg-config", "--cflags", pkgs) if err != nil { b.showOutput(p.Dir, "pkg-config --cflags "+strings.Join(pkgs, " "), string(out)) b.print(err.Error() + "\n") return nil, nil, errPrintedOutput } if len(out) > 0 { cgoCPPFLAGS = append(cgoCPPFLAGS, strings.Fields(string(out))...) } out, err = b.runOut(p.Dir, p.ImportPath, nil, "pkg-config", "--libs", pkgs) if err != nil { b.showOutput(p.Dir, "pkg-config --libs "+strings.Join(pkgs, " "), string(out)) b.print(err.Error() + "\n") return nil, nil, errPrintedOutput } if len(out) > 0 { cgoLDFLAGS = append(cgoLDFLAGS, strings.Fields(string(out))...) } } // Allows including _cgo_export.h from .[ch] files in the package. cgoCPPFLAGS = append(cgoCPPFLAGS, "-I", obj) // cgo // TODO: CGOPKGPATH, CGO_FLAGS? gofiles := []string{obj + "_cgo_gotypes.go"} cfiles := []string{"_cgo_main.c", "_cgo_export.c"} for _, fn := range p.CgoFiles { f := cgoRe.ReplaceAllString(fn[:len(fn)-2], "_") gofiles = append(gofiles, obj+f+"cgo1.go") cfiles = append(cfiles, f+"cgo2.c") } defunC := obj + "_cgo_defun.c" cgoflags := []string{} // TODO: make cgo not depend on $GOARCH? objExt := archChar if p.Standard && p.ImportPath == "runtime/cgo" { cgoflags = append(cgoflags, "-import_runtime_cgo=false") } if p.Standard && (p.ImportPath == "runtime/race" || p.ImportPath == "runtime/cgo") { cgoflags = append(cgoflags, "-import_syscall=false") } // Update $CGO_LDFLAGS with p.CgoLDFLAGS. var cgoenv []string if len(cgoLDFLAGS) > 0 { flags := make([]string, len(cgoLDFLAGS)) for i, f := range cgoLDFLAGS { flags[i] = strconv.Quote(f) } cgoenv = []string{"CGO_LDFLAGS=" + strings.Join(flags, " ")} } if _, ok := buildToolchain.(gccgoToolchain); ok { cgoflags = append(cgoflags, "-gccgo") if pkgpath := gccgoPkgpath(p); pkgpath != "" { cgoflags = append(cgoflags, "-gccgopkgpath="+pkgpath) } objExt = "o" } if err := b.run(p.Dir, p.ImportPath, cgoenv, cgoExe, "-objdir", obj, cgoflags, "--", cgoCPPFLAGS, cgoexeCFLAGS, p.CgoFiles); err != nil { return nil, nil, err } outGo = append(outGo, gofiles...) // cc _cgo_defun.c defunObj := obj + "_cgo_defun." + objExt if err := buildToolchain.cc(b, p, obj, defunObj, defunC); err != nil { return nil, nil, err } outObj = append(outObj, defunObj) // gcc var linkobj []string var bareLDFLAGS []string // filter out -lsomelib, -l somelib, *.{so,dll,dylib}, and (on Darwin) -framework X for i := 0; i < len(cgoLDFLAGS); i++ { f := cgoLDFLAGS[i] switch { // skip "-lc" or "-l somelib" case strings.HasPrefix(f, "-l"): if f == "-l" { i++ } // skip "-framework X" on Darwin case goos == "darwin" && f == "-framework": i++ // skip "*.{dylib,so,dll}" case strings.HasSuffix(f, ".dylib"), strings.HasSuffix(f, ".so"), strings.HasSuffix(f, ".dll"): continue default: bareLDFLAGS = append(bareLDFLAGS, f) } } cgoLibGccFileOnce.Do(func() { cgoLibGccFile, cgoLibGccErr = b.libgcc(p) }) if cgoLibGccFile == "" && cgoLibGccErr != nil { return nil, nil, err } var staticLibs []string if goos == "windows" { // libmingw32 and libmingwex might also use libgcc, so libgcc must come last, // and they also have some inter-dependencies, so must use linker groups. staticLibs = []string{"-Wl,--start-group", "-lmingwex", "-lmingw32", "-Wl,--end-group"} } if cgoLibGccFile != "" { staticLibs = append(staticLibs, cgoLibGccFile) } cflags := stringList(cgoCPPFLAGS, cgoCFLAGS) for _, cfile := range cfiles { ofile := obj + cfile[:len(cfile)-1] + "o" if err := b.gcc(p, ofile, cflags, obj+cfile); err != nil { return nil, nil, err } linkobj = append(linkobj, ofile) if !strings.HasSuffix(ofile, "_cgo_main.o") { outObj = append(outObj, ofile) } } for _, file := range gccfiles { ofile := obj + cgoRe.ReplaceAllString(file[:len(file)-1], "_") + "o" if err := b.gcc(p, ofile, cflags, file); err != nil { return nil, nil, err } linkobj = append(linkobj, ofile) outObj = append(outObj, ofile) } cxxflags := stringList(cgoCPPFLAGS, cgoCXXFLAGS) for _, file := range gxxfiles { // Append .o to the file, just in case the pkg has file.c and file.cpp ofile := obj + cgoRe.ReplaceAllString(file, "_") + ".o" if err := b.gxx(p, ofile, cxxflags, file); err != nil { return nil, nil, err } linkobj = append(linkobj, ofile) outObj = append(outObj, ofile) } for _, file := range mfiles { // Append .o to the file, just in case the pkg has file.c and file.m ofile := obj + cgoRe.ReplaceAllString(file, "_") + ".o" if err := b.gcc(p, ofile, cflags, file); err != nil { return nil, nil, err } linkobj = append(linkobj, ofile) outObj = append(outObj, ofile) } linkobj = append(linkobj, p.SysoFiles...) dynobj := obj + "_cgo_.o" if goarch == "arm" && goos == "linux" { // we need to use -pie for Linux/ARM to get accurate imported sym cgoLDFLAGS = append(cgoLDFLAGS, "-pie") } if err := b.gccld(p, dynobj, cgoLDFLAGS, linkobj); err != nil { return nil, nil, err } if goarch == "arm" && goos == "linux" { // but we don't need -pie for normal cgo programs cgoLDFLAGS = cgoLDFLAGS[0 : len(cgoLDFLAGS)-1] } if _, ok := buildToolchain.(gccgoToolchain); ok { // we don't use dynimport when using gccgo. return outGo, outObj, nil } // cgo -dynimport importC := obj + "_cgo_import.c" cgoflags = []string{} if p.Standard && p.ImportPath == "runtime/cgo" { cgoflags = append(cgoflags, "-dynlinker") // record path to dynamic linker } if err := b.run(p.Dir, p.ImportPath, nil, cgoExe, "-objdir", obj, "-dynimport", dynobj, "-dynout", importC, cgoflags); err != nil { return nil, nil, err } // cc _cgo_import.ARCH importObj := obj + "_cgo_import." + objExt if err := buildToolchain.cc(b, p, obj, importObj, importC); err != nil { return nil, nil, err } ofile := obj + "_all.o" var gccObjs, nonGccObjs []string for _, f := range outObj { if strings.HasSuffix(f, ".o") { gccObjs = append(gccObjs, f) } else { nonGccObjs = append(nonGccObjs, f) } } if err := b.gccld(p, ofile, stringList(bareLDFLAGS, "-Wl,-r", "-nostdlib", staticLibs), gccObjs); err != nil { return nil, nil, err } // 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 outObj = stringList(importObj, nonGccObjs, ofile) return outGo, outObj, nil } // Run SWIG on all SWIG input files. // TODO: Don't build a shared library, once SWIG emits the necessary // pragmas for external linking. func (b *builder) swig(p *Package, obj string, gccfiles, gxxfiles, mfiles []string) (outGo, outObj []string, err error) { cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, _ := b.cflags(p, true) cflags := stringList(cgoCPPFLAGS, cgoCFLAGS) cxxflags := stringList(cgoCPPFLAGS, cgoCXXFLAGS) for _, file := range gccfiles { ofile := obj + cgoRe.ReplaceAllString(file[:len(file)-1], "_") + "o" if err := b.gcc(p, ofile, cflags, file); err != nil { return nil, nil, err } outObj = append(outObj, ofile) } for _, file := range gxxfiles { // Append .o to the file, just in case the pkg has file.c and file.cpp ofile := obj + cgoRe.ReplaceAllString(file, "_") + ".o" if err := b.gxx(p, ofile, cxxflags, file); err != nil { return nil, nil, err } outObj = append(outObj, ofile) } for _, file := range mfiles { // Append .o to the file, just in case the pkg has file.c and file.cpp ofile := obj + cgoRe.ReplaceAllString(file, "_") + ".o" if err := b.gcc(p, ofile, cflags, file); err != nil { return nil, nil, err } outObj = append(outObj, ofile) } if err := b.swigVersionCheck(); err != nil { return nil, nil, err } intgosize, err := b.swigIntSize(obj) if err != nil { return nil, nil, err } for _, f := range p.SwigFiles { goFile, objFile, gccObjFile, err := b.swigOne(p, f, obj, false, intgosize) if err != nil { return nil, nil, err } if goFile != "" { outGo = append(outGo, goFile) } if objFile != "" { outObj = append(outObj, objFile) } if gccObjFile != "" { outObj = append(outObj, gccObjFile) } } for _, f := range p.SwigCXXFiles { goFile, objFile, gccObjFile, err := b.swigOne(p, f, obj, true, intgosize) if err != nil { return nil, nil, err } if goFile != "" { outGo = append(outGo, goFile) } if objFile != "" { outObj = append(outObj, objFile) } if gccObjFile != "" { outObj = append(outObj, gccObjFile) } } return outGo, outObj, nil } // Make sure SWIG is new enough. var ( swigCheckOnce sync.Once swigCheck error ) func (b *builder) swigDoVersionCheck() error { out, err := b.runOut("", "", nil, "swig", "-version") if err != nil { return err } re := regexp.MustCompile(`[vV]ersion +([\d])`) matches := re.FindSubmatch(out) if matches == nil { // Can't find version number; hope for the best. return nil } major, err := strconv.Atoi(string(matches[1])) if err != nil { // Can't find version number; hope for the best. return nil } if major < 3 { return errors.New("must have SWIG version >= 3.0") } return nil } func (b *builder) swigVersionCheck() error { swigCheckOnce.Do(func() { swigCheck = b.swigDoVersionCheck() }) return swigCheck } // This code fails to build if sizeof(int) <= 32 const swigIntSizeCode = ` package main const i int = 1 << 32 ` // Determine the size of int on the target system for the -intgosize option // of swig >= 2.0.9 func (b *builder) swigIntSize(obj string) (intsize string, err error) { if buildN { return "$INTBITS", nil } src := filepath.Join(b.work, "swig_intsize.go") if err = ioutil.WriteFile(src, []byte(swigIntSizeCode), 0644); err != nil { return } srcs := []string{src} p := goFilesPackage(srcs) if _, _, e := buildToolchain.gc(b, p, "", obj, nil, srcs); e != nil { return "32", nil } return "64", nil } // Run SWIG on one SWIG input file. func (b *builder) swigOne(p *Package, file, obj string, cxx bool, intgosize string) (outGo, outObj, objGccObj string, err error) { cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, _ := b.cflags(p, true) var cflags []string if cxx { cflags = stringList(cgoCPPFLAGS, cgoCXXFLAGS) } else { cflags = stringList(cgoCPPFLAGS, cgoCFLAGS) } n := 5 // length of ".swig" if cxx { n = 8 // length of ".swigcxx" } base := file[:len(file)-n] goFile := base + ".go" cBase := base + "_gc." gccBase := base + "_wrap." gccExt := "c" if cxx { gccExt = "cxx" } _, gccgo := buildToolchain.(gccgoToolchain) // swig args := []string{ "-go", "-intgosize", intgosize, "-module", base, "-o", obj + gccBase + gccExt, "-outdir", obj, } if gccgo { args = append(args, "-gccgo") if pkgpath := gccgoPkgpath(p); pkgpath != "" { args = append(args, "-go-pkgpath", pkgpath) } } if cxx { args = append(args, "-c++") } if out, err := b.runOut(p.Dir, p.ImportPath, nil, "swig", args, file); err != nil { if len(out) > 0 { if bytes.Contains(out, []byte("Unrecognized option -intgosize")) { return "", "", "", errors.New("must have SWIG version >= 3.0") } b.showOutput(p.Dir, p.ImportPath, b.processOutput(out)) return "", "", "", errPrintedOutput } return "", "", "", err } var cObj string if !gccgo { // cc cObj = obj + cBase + archChar if err := buildToolchain.cc(b, p, obj, cObj, obj+cBase+"c"); err != nil { return "", "", "", err } } // gcc gccObj := obj + gccBase + "o" if !cxx { if err := b.gcc(p, gccObj, cflags, obj+gccBase+gccExt); err != nil { return "", "", "", err } } else { if err := b.gxx(p, gccObj, cflags, obj+gccBase+gccExt); err != nil { return "", "", "", err } } return obj + goFile, cObj, gccObj, nil } // An actionQueue is a priority queue of actions. type actionQueue []*action // Implement heap.Interface func (q *actionQueue) Len() int { return len(*q) } func (q *actionQueue) Swap(i, j int) { (*q)[i], (*q)[j] = (*q)[j], (*q)[i] } func (q *actionQueue) Less(i, j int) bool { return (*q)[i].priority < (*q)[j].priority } func (q *actionQueue) Push(x interface{}) { *q = append(*q, x.(*action)) } func (q *actionQueue) Pop() interface{} { n := len(*q) - 1 x := (*q)[n] *q = (*q)[:n] return x } func (q *actionQueue) push(a *action) { heap.Push(q, a) } func (q *actionQueue) pop() *action { return heap.Pop(q).(*action) } func raceInit() { if !buildRace { return } if goarch != "amd64" || goos != "linux" && goos != "darwin" && goos != "windows" { fmt.Fprintf(os.Stderr, "go %s: -race is only supported on linux/amd64, darwin/amd64 and windows/amd64\n", flag.Args()[0]) os.Exit(2) } buildGcflags = append(buildGcflags, "-race") buildLdflags = append(buildLdflags, "-race") buildCcflags = append(buildCcflags, "-D", "RACE") if buildContext.InstallSuffix != "" { buildContext.InstallSuffix += "_" } buildContext.InstallSuffix += "race" buildContext.BuildTags = append(buildContext.BuildTags, "race") } // defaultSuffix returns file extension used for command files in // current os environment. func defaultSuffix() string { switch runtime.GOOS { case "windows": return ".bat" case "plan9": return ".rc" default: return ".bash" } } go/src/cmd/go/clean.go0100644000000000000000000001336112412656734015050 0ustar00rootroot00000000000000// 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 import ( "fmt" "io/ioutil" "os" "path/filepath" "strings" ) var cmdClean = &Command{ UsageLine: "clean [-i] [-r] [-n] [-x] [build flags] [packages]", Short: "remove object files", Long: ` Clean removes object files from package source directories. The go command builds most objects in a temporary directory, so go clean is mainly concerned with object files left by other tools or by manual invocations of go build. Specifically, clean removes the following files from each of the source directories corresponding to the import paths: _obj/ old object directory, left from Makefiles _test/ old test directory, left from Makefiles _testmain.go old gotest file, left from Makefiles test.out old test log, left from Makefiles build.out old test log, left from Makefiles *.[568ao] object files, left from Makefiles DIR(.exe) from go build DIR.test(.exe) from go test -c MAINFILE(.exe) from go build MAINFILE.go *.so from SWIG In the list, DIR represents the final path element of the directory, and MAINFILE is the base name of any Go source file in the directory that is not included when building the package. The -i flag causes clean to remove the corresponding installed archive or binary (what 'go install' would create). The -n flag causes clean to print the remove commands it would execute, but not run them. The -r flag causes clean to be applied recursively to all the dependencies of the packages named by the import paths. The -x flag causes clean to print remove commands as it executes them. For more about build flags, see 'go help build'. For more about specifying packages, see 'go help packages'. `, } var cleanI bool // clean -i flag var cleanR bool // clean -r flag func init() { // break init cycle cmdClean.Run = runClean cmdClean.Flag.BoolVar(&cleanI, "i", false, "") cmdClean.Flag.BoolVar(&cleanR, "r", false, "") // -n and -x are important enough to be // mentioned explicitly in the docs but they // are part of the build flags. addBuildFlags(cmdClean) } func runClean(cmd *Command, args []string) { for _, pkg := range packagesAndErrors(args) { clean(pkg) } } var cleaned = map[*Package]bool{} // TODO: These are dregs left by Makefile-based builds. // Eventually, can stop deleting these. var cleanDir = map[string]bool{ "_test": true, "_obj": true, } var cleanFile = map[string]bool{ "_testmain.go": true, "test.out": true, "build.out": true, "a.out": true, } var cleanExt = map[string]bool{ ".5": true, ".6": true, ".8": true, ".a": true, ".o": true, ".so": true, } func clean(p *Package) { if cleaned[p] { return } cleaned[p] = true if p.Dir == "" { errorf("can't load package: %v", p.Error) return } dirs, err := ioutil.ReadDir(p.Dir) if err != nil { errorf("go clean %s: %v", p.Dir, err) return } var b builder b.print = fmt.Print packageFile := map[string]bool{} if p.Name != "main" { // Record which files are not in package main. // The others are. keep := func(list []string) { for _, f := range list { packageFile[f] = true } } keep(p.GoFiles) keep(p.CgoFiles) keep(p.TestGoFiles) keep(p.XTestGoFiles) } _, elem := filepath.Split(p.Dir) var allRemove []string // Remove dir-named executable only if this is package main. if p.Name == "main" { allRemove = append(allRemove, elem, elem+".exe", ) } // Remove package test executables. allRemove = append(allRemove, elem+".test", elem+".test.exe", ) // Remove a potential executable for each .go file in the directory that // is not part of the directory's package. for _, dir := range dirs { name := dir.Name() if packageFile[name] { continue } if !dir.IsDir() && strings.HasSuffix(name, ".go") { // TODO(adg,rsc): check that this .go file is actually // in "package main", and therefore capable of building // to an executable file. base := name[:len(name)-len(".go")] allRemove = append(allRemove, base, base+".exe") } } if buildN || buildX { b.showcmd(p.Dir, "rm -f %s", strings.Join(allRemove, " ")) } toRemove := map[string]bool{} for _, name := range allRemove { toRemove[name] = true } for _, dir := range dirs { name := dir.Name() if dir.IsDir() { // TODO: Remove once Makefiles are forgotten. if cleanDir[name] { if buildN || buildX { b.showcmd(p.Dir, "rm -r %s", name) if buildN { continue } } if err := os.RemoveAll(filepath.Join(p.Dir, name)); err != nil { errorf("go clean: %v", err) } } continue } if buildN { continue } if cleanFile[name] || cleanExt[filepath.Ext(name)] || toRemove[name] { removeFile(filepath.Join(p.Dir, name)) } } if cleanI && p.target != "" { if buildN || buildX { b.showcmd("", "rm -f %s", p.target) } if !buildN { removeFile(p.target) } } if cleanR { for _, p1 := range p.imports { clean(p1) } } } // removeFile tries to remove file f, if error other than file doesn't exist // occurs, it will report the error. func removeFile(f string) { err := os.Remove(f) if err == nil || os.IsNotExist(err) { return } // Windows does not allow deletion of a binary file while it is executing. if toolIsWindows { // Remove lingering ~ file from last attempt. if _, err2 := os.Stat(f + "~"); err2 == nil { os.Remove(f + "~") } // Try to move it out of the way. If the move fails, // which is likely, we'll try again the // next time we do an install of this binary. if err2 := os.Rename(f, f+"~"); err2 == nil { os.Remove(f + "~") return } } errorf("go clean: %v", err) } go/src/cmd/go/context.go0100644000000000000000000000250112412656734015444 0ustar00rootroot00000000000000// 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. package main import ( "go/build" ) type Context struct { GOARCH string `json:",omitempty"` // target architecture GOOS string `json:",omitempty"` // target operating system GOROOT string `json:",omitempty"` // Go root GOPATH string `json:",omitempty"` // Go path CgoEnabled bool `json:",omitempty"` // whether cgo can be used UseAllFiles bool `json:",omitempty"` // use files regardless of +build lines, file names Compiler string `json:",omitempty"` // compiler to assume when computing target paths BuildTags []string `json:",omitempty"` // build constraints to match in +build lines ReleaseTags []string `json:",omitempty"` // releases the current release is compatible with InstallSuffix string `json:",omitempty"` // suffix to use in the name of the install dir } func newContext(c *build.Context) *Context { return &Context{ GOARCH: c.GOARCH, GOOS: c.GOOS, GOROOT: c.GOROOT, CgoEnabled: c.CgoEnabled, UseAllFiles: c.UseAllFiles, Compiler: c.Compiler, BuildTags: c.BuildTags, ReleaseTags: c.ReleaseTags, InstallSuffix: c.InstallSuffix, } } go/src/cmd/go/discovery.go0100644000000000000000000000446712412656734016004 0ustar00rootroot00000000000000// 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. // +build !cmd_go_bootstrap // This code is compiled into the real 'go' binary, but it is not // compiled into the binary that is built during all.bash, so as // to avoid needing to build net (and thus use cgo) during the // bootstrap process. package main import ( "encoding/xml" "fmt" "io" "strings" ) // charsetReader returns a reader for the given charset. Currently // it only supports UTF-8 and ASCII. Otherwise, it returns a meaningful // error which is printed by go get, so the user can find why the package // wasn't downloaded if the encoding is not supported. Note that, in // order to reduce potential errors, ASCII is treated as UTF-8 (i.e. characters // greater than 0x7f are not rejected). func charsetReader(charset string, input io.Reader) (io.Reader, error) { switch strings.ToLower(charset) { case "ascii": return input, nil default: return nil, fmt.Errorf("can't decode XML document using charset %q", charset) } } // parseMetaGoImports returns meta imports from the HTML in r. // Parsing ends at the end of the section or the beginning of the . func parseMetaGoImports(r io.Reader) (imports []metaImport, err error) { d := xml.NewDecoder(r) d.CharsetReader = charsetReader d.Strict = false var t xml.Token for { t, err = d.Token() if err != nil { if err == io.EOF { err = nil } return } if e, ok := t.(xml.StartElement); ok && strings.EqualFold(e.Name.Local, "body") { return } if e, ok := t.(xml.EndElement); ok && strings.EqualFold(e.Name.Local, "head") { return } e, ok := t.(xml.StartElement) if !ok || !strings.EqualFold(e.Name.Local, "meta") { continue } if attrValue(e.Attr, "name") != "go-import" { continue } if f := strings.Fields(attrValue(e.Attr, "content")); len(f) == 3 { imports = append(imports, metaImport{ Prefix: f[0], VCS: f[1], RepoRoot: f[2], }) } } } // attrValue returns the attribute value for the case-insensitive key // `name', or the empty string if nothing is found. func attrValue(attrs []xml.Attr, name string) string { for _, a := range attrs { if strings.EqualFold(a.Name.Local, name) { return a.Value } } return "" } go/src/cmd/go/doc.go0100644000000000000000000010341612412656737014537 0ustar00rootroot00000000000000// Copyright 2011 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. // DO NOT EDIT THIS FILE. GENERATED BY mkdoc.sh. // Edit the documentation in other files and rerun mkdoc.sh to generate this one. /* Go is a tool for managing Go source code. Usage: go command [arguments] The commands are: build compile packages and dependencies clean remove object files env print Go environment information fix run go tool fix on packages fmt run gofmt on package sources get download and install packages and dependencies install compile and install packages and dependencies list list packages run compile and run Go program test test packages tool run specified go tool version print Go version vet run go tool vet on packages Use "go help [command]" for more information about a command. Additional help topics: c calling between Go and C filetype file types gopath GOPATH environment variable importpath import path syntax packages description of package lists testflag description of testing flags testfunc description of testing functions Use "go help [topic]" for more information about that topic. Compile packages and dependencies Usage: go build [-o output] [-i] [build flags] [packages] 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. When the command line specifies a single main package, build writes the resulting executable to output. Otherwise build compiles the packages but discards the results, serving only as a check that the packages can be built. The -o flag specifies the output file name. If not specified, the output file name depends on the arguments and derives from the name of the package, such as p.a for package p, unless p is 'main'. If the package is main and file names are provided, the file name derives from the first file name mentioned, such as f1 for 'go build f1.go f2.go'; with no files provided ('go build'), the output file name is the base name of the containing directory. The -i flag installs the packages that are dependencies of the target. The build flags are shared by the build, clean, get, install, list, run, and test commands: -a force rebuilding of packages that are already up-to-date. -n print the commands but do not run them. -p n the number of builds that can be run in parallel. The default is the number of CPUs available. -race enable data race detection. Supported only on linux/amd64, darwin/amd64 and windows/amd64. -v print the names of packages as they are compiled. -work print the name of the temporary work directory and do not delete it when exiting. -x print the commands. -ccflags 'arg list' arguments to pass on each 5c, 6c, or 8c compiler invocation. -compiler name name of compiler to use, as in runtime.Compiler (gccgo or gc). -gccgoflags 'arg list' arguments to pass on each gccgo compiler/linker invocation. -gcflags 'arg list' arguments to pass on each 5g, 6g, or 8g compiler invocation. -installsuffix suffix a suffix to use in the name of the package installation directory, in order to keep output separate from default builds. If using the -race flag, the install suffix is automatically set to race or, if set explicitly, has _race appended to it. -ldflags 'flag list' arguments to pass on each 5l, 6l, or 8l linker invocation. -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. 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'. See also: go install, go get, go clean. Remove object files Usage: go clean [-i] [-r] [-n] [-x] [build flags] [packages] Clean removes object files from package source directories. The go command builds most objects in a temporary directory, so go clean is mainly concerned with object files left by other tools or by manual invocations of go build. Specifically, clean removes the following files from each of the source directories corresponding to the import paths: _obj/ old object directory, left from Makefiles _test/ old test directory, left from Makefiles _testmain.go old gotest file, left from Makefiles test.out old test log, left from Makefiles build.out old test log, left from Makefiles *.[568ao] object files, left from Makefiles DIR(.exe) from go build DIR.test(.exe) from go test -c MAINFILE(.exe) from go build MAINFILE.go *.so from SWIG In the list, DIR represents the final path element of the directory, and MAINFILE is the base name of any Go source file in the directory that is not included when building the package. The -i flag causes clean to remove the corresponding installed archive or binary (what 'go install' would create). The -n flag causes clean to print the remove commands it would execute, but not run them. The -r flag causes clean to be applied recursively to all the dependencies of the packages named by the import paths. The -x flag causes clean to print remove commands as it executes them. For more about build flags, see 'go help build'. For more about specifying packages, see 'go help packages'. Print Go environment information Usage: go env [var ...] Env prints Go environment information. By default env prints information as a shell script (on Windows, a batch file). If one or more variable names is given as arguments, env prints the value of each named variable on its own line. Run go tool fix on packages Usage: go fix [packages] Fix runs the Go fix command on the packages named by the import paths. For more about fix, see 'godoc fix'. For more about specifying packages, see 'go help packages'. To run fix with specific options, run 'go tool fix'. See also: go fmt, go vet. Run gofmt on package sources Usage: go fmt [-n] [-x] [packages] Fmt runs the command 'gofmt -l -w' on the packages named by the import paths. It prints the names of the files that are modified. For more about gofmt, see 'godoc gofmt'. For more about specifying packages, see 'go help packages'. The -n flag prints commands that would be executed. The -x flag prints commands as they are executed. To run gofmt with specific options, run gofmt itself. See also: go fix, go vet. Download and install packages and dependencies Usage: go get [-d] [-fix] [-t] [-u] [build flags] [packages] Get downloads and installs the packages named by the import paths, along with their dependencies. The -d flag instructs get to stop after downloading the packages; that is, it instructs get not to install the packages. The -fix flag instructs get to run the fix tool on the downloaded packages before resolving dependencies or building the code. The -t flag instructs get to also download the packages required to build the tests for the specified packages. The -u flag instructs get to use the network to update the named packages and their dependencies. By default, get uses the network to check out missing packages but does not use it to look for updates to existing packages. Get also accepts build flags to control the installation. See 'go help build'. When checking out or updating a package, get looks for a branch or tag that matches the locally installed version of Go. The most important 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. For more about specifying packages, see 'go help packages'. For more about how 'go get' finds source code to download, see 'go help importpath'. See also: go build, go install, go clean. Compile and install packages and dependencies Usage: go install [build flags] [packages] Install compiles and installs the packages named by the import paths, along with their dependencies. For more about the build flags, see 'go help build'. For more about specifying packages, see 'go help packages'. See also: go build, go get, go clean. List packages Usage: go list [-e] [-f format] [-json] [build flags] [packages] List lists the packages named by the import paths, one per line. The default output shows the package import path: code.google.com/p/google-api-go-client/books/v1 code.google.com/p/goauth2/oauth code.google.com/p/sqlite The -f flag specifies an alternate format for the list, using the syntax of package template. The default output is equivalent to -f '{{.ImportPath}}'. The struct being passed to the template is: type Package struct { Dir string // directory containing package sources ImportPath string // import path of package in dir Name string // package name Doc string // package documentation string Target string // install path Goroot bool // is this package in the Go root? Standard bool // is this package part of the standard Go library? Stale bool // would 'go install' do anything for this package? Root string // Go root or Go path dir containing this package // Source files GoFiles []string // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles) CgoFiles []string // .go sources files that import "C" IgnoredGoFiles []string // .go sources ignored due to build constraints CFiles []string // .c source files CXXFiles []string // .cc, .cxx and .cpp source files MFiles []string // .m source files HFiles []string // .h, .hh, .hpp and .hxx source files SFiles []string // .s source files SwigFiles []string // .swig files SwigCXXFiles []string // .swigcxx files SysoFiles []string // .syso object files to add to archive // Cgo directives CgoCFLAGS []string // cgo: flags for C compiler CgoCPPFLAGS []string // cgo: flags for C preprocessor CgoCXXFLAGS []string // cgo: flags for C++ compiler CgoLDFLAGS []string // cgo: flags for linker CgoPkgConfig []string // cgo: pkg-config names // Dependency information Imports []string // import paths used by this package Deps []string // all (recursively) imported dependencies // Error information Incomplete bool // this package or a dependency has an error Error *PackageError // error loading package DepsErrors []*PackageError // errors loading dependencies TestGoFiles []string // _test.go files in package TestImports []string // imports from TestGoFiles XTestGoFiles []string // _test.go files outside package XTestImports []string // imports from XTestGoFiles } The template function "join" calls strings.Join. The template function "context" returns the build context, defined as: type Context struct { GOARCH string // target architecture GOOS string // target operating system GOROOT string // Go root GOPATH string // Go path CgoEnabled bool // whether cgo can be used UseAllFiles bool // use files regardless of +build lines, file names Compiler string // compiler to assume when computing target paths BuildTags []string // build constraints to match in +build lines ReleaseTags []string // releases the current release is compatible with InstallSuffix string // suffix to use in the name of the install dir } For more information about the meaning of these fields see the documentation for the go/build package's Context type. The -json flag causes the package data to be printed in JSON format instead of using the template format. The -e flag changes the handling of erroneous packages, those that cannot be found or are malformed. By default, the list command prints an error to standard error for each erroneous package and omits the packages from consideration during the usual printing. With the -e flag, the list command never prints errors to standard error and instead processes the erroneous packages with the usual printing. Erroneous packages will have a non-empty ImportPath and a non-nil Error field; other information may or may not be missing (zeroed). For more about build flags, see 'go help build'. For more about specifying packages, see 'go help packages'. Compile and run Go program Usage: go run [build flags] [-exec xprog] gofiles... [arguments...] 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 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, for example 'go_nacl_386_exec a.out arguments...'. This allows execution of cross-compiled programs when a simulator or other execution method is available. For more about build flags, see 'go help build'. See also: go build. Test packages Usage: go test [-c] [-i] [build and test flags] [packages] [flags for test binary] 'Go test' automates testing the packages named by the import paths. It prints a summary of the test results in the format: ok archive/tar 0.011s FAIL archive/zip 0.022s ok compress/gzip 0.033s ... followed by detailed output for each failed package. 'Go test' recompiles each package along with any files with names matching the file pattern "*_test.go". Files whose names begin with "_" (including "_test.go") or "." are ignored. These additional files can contain test functions, benchmark functions, and example functions. See 'go help testfunc' for more. Each listed package causes the execution of a separate test binary. Test files that declare a package with the suffix "_test" will be compiled as a separate package, and then linked and run with the main test binary. By default, go test needs no arguments. It compiles and tests the package with source in the current directory, including tests, and runs the tests. The package is built in a temporary directory so it does not interfere with the non-test installation. In addition to the build flags, the flags handled by 'go test' itself are: -c Compile the test binary to pkg.test but do not run it. (Where pkg is the last element of the package's import path.) -i Install packages that are dependencies of the test. Do not run the test. -exec xprog Run the test binary using xprog. The behavior is the same as in 'go run'. See 'go help run' for details. 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. 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 a minus sign that it does not recognize itself; that argument and all subsequent arguments are passed as arguments to the test binary. For more about build flags, see 'go help build'. For more about specifying packages, see 'go help packages'. See also: go build, go vet. Run specified go tool Usage: go tool [-n] command [args...] Tool runs the go tool command identified by the arguments. With no arguments it prints the list of known tools. The -n flag causes tool to print the command that would be executed but not execute it. For more about each tool command, see 'go tool command -h'. Print Go version Usage: go version Version prints the Go version, as reported by runtime.Version. Run go tool vet on packages Usage: go vet [-n] [-x] [packages] Vet runs the Go vet command on the packages named by the import paths. For more about vet, see 'godoc code.google.com/p/go.tools/cmd/vet'. For more about specifying packages, see 'go help packages'. To run the vet tool with specific options, run 'go tool vet'. The -n flag prints commands that would be executed. The -x flag prints commands as they are executed. See also: go fmt, go fix. Calling between Go and C There are two different ways to call between Go and C/C++ code. The first is the cgo tool, which is part of the Go distribution. For information on how to use it see the cgo documentation (godoc cmd/cgo). The second is the SWIG program, which is a general tool for interfacing between languages. For information on SWIG see http://swig.org/. When running go build, any file with a .swig extension will be passed to SWIG. Any file with a .swigcxx extension will be passed to SWIG with the -c++ option. When either cgo or SWIG is used, go build will pass any .c, .m, .s, or .S files to the C compiler, and any .cc, .cpp, .cxx files to the C++ compiler. The CC or CXX environment variables may be set to determine the C or C++ compiler, respectively, to use. File types The go command examines the contents of a restricted set of files in each directory. It identifies which files to examine based on the extension of the file name. These extensions are: .go 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. .cc, .cpp, .cxx, .hh, .hpp, .hxx C++ source files. Only useful with cgo or SWIG, and always compiled with the OS-native compiler. .m Objective-C source files. Only useful with cgo, and always compiled with the OS-native compiler. .s, .S Assembler source files. If the package uses cgo, 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. .swig, .swigcxx SWIG definition files. .syso System object files. Files of each of these types except .syso may contain build constraints, but the go command stops scanning for build constraints at the first item in the file that is not a blank line or //-style line comment. GOPATH environment variable The Go path is used to resolve import statements. It is implemented by and documented in the go/build package. The GOPATH environment variable lists places to look for Go code. On Unix, the value is a colon-separated string. On Windows, the value is a semicolon-separated string. On Plan 9, the value is a list. GOPATH must be set to get, build and install packages outside the standard Go tree. Each directory listed in GOPATH must have a prescribed structure: The src/ directory holds source code. The path below 'src' determines the import path or executable name. 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). 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. 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 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 of DIR/bin. Here's an example directory layout: GOPATH=/home/user/gocode /home/user/gocode/ src/ foo/ bar/ (go code in package bar) x.go quux/ (go code in package main) y.go bin/ quux (installed command) pkg/ linux_amd64/ foo/ bar.a (installed package object) Go searches each directory listed in GOPATH to find source code, but new packages are always downloaded into the first directory in the list. Import path syntax An import path (see 'go help packages') denotes a package stored in the local file system. In general, an import path denotes either a standard package (such as "unicode/utf8") or a package found in one of the work spaces (see 'go help gopath'). Relative import paths An import path beginning with ./ or ../ is called a relative path. The toolchain supports relative import paths as a shortcut in two ways. First, a relative path can be used as a shorthand on the command line. If you are working in the directory containing the code imported as "unicode" and want to run the tests for "unicode/utf8", you can type "go test ./utf8" instead of needing to specify the full path. Similarly, in the reverse situation, "go test .." will test "unicode" from the "unicode/utf8" directory. Relative patterns are also allowed, like "go test ./..." to test all subdirectories. See 'go help packages' for details on the pattern syntax. Second, if you are compiling a Go program not in a work space, you can use a relative path in an import statement in that program to refer to nearby code also not in a work space. This makes it easy to experiment with small multipackage programs outside of the usual work spaces, but such programs cannot be installed with "go install" (there is no work space in which to install them), so they are rebuilt from scratch each time they are built. To avoid ambiguity, Go programs cannot use relative import paths within a work space. Remote import paths Certain import paths also describe how to obtain the source code for the package using a revision control system. A few common code hosting sites have special syntax: Bitbucket (Git, Mercurial) import "bitbucket.org/user/project" import "bitbucket.org/user/project/sub/directory" GitHub (Git) import "github.com/user/project" import "github.com/user/project/sub/directory" Google Code Project Hosting (Git, Mercurial, Subversion) import "code.google.com/p/project" import "code.google.com/p/project/sub/directory" import "code.google.com/p/project.subrepository" import "code.google.com/p/project.subrepository/sub/directory" Launchpad (Bazaar) import "launchpad.net/project" import "launchpad.net/project/series" import "launchpad.net/project/series/sub/directory" import "launchpad.net/~user/project/branch" import "launchpad.net/~user/project/branch/sub/directory" For code hosted on other servers, import paths may either be qualified with the version control type, or the go tool can dynamically fetch the import path over https/http and discover where the code resides from a tag in the HTML. To declare the code location, an import path of the form repository.vcs/path specifies the given repository, with or without the .vcs suffix, using the named version control system, and then the path inside that repository. The supported version control systems are: Bazaar .bzr Git .git Mercurial .hg Subversion .svn For example, import "example.org/user/foo.hg" denotes the root directory of the Mercurial repository at example.org/user/foo or foo.hg, and import "example.org/repo.git/foo/bar" denotes the foo/bar directory of the Git repository at 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://. 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 over https/http and looks for a tag in the document's HTML . The meta tag has the form: The import-prefix is the import path corresponding to the repository 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 tags match. The vcs is one of "git", "hg", "svn", etc, The repo-root is the root of the version control system containing a scheme and not containing a .vcs qualifier. For example, import "example.org/pkg/foo" will result in the following request(s): https://example.org/pkg/foo?go-get=1 (preferred) http://example.org/pkg/foo?go-get=1 (fallback) If that page contains the meta tag the go tool will verify that https://example.org/?go-get=1 contains the same meta tag and then git clone https://code.org/r/p/exproj into GOPATH/src/example.org. New downloaded packages are written to the first directory listed in the GOPATH environment variable (see 'go help gopath'). The go command attempts to download the version of the package appropriate for the Go release being used. Run 'go help install' for more. Description of package lists Many commands apply to a set of packages: go action [packages] Usually, [packages] is a list of import paths. An import path that is a rooted path or that begins with a . or .. element is interpreted as a file system path and denotes the package in that directory. Otherwise, the import path P denotes the package found in the directory DIR/src/P for some DIR listed in the GOPATH environment variable (see 'go help gopath'). If no import paths are given, the action applies to the package in the current directory. There are three reserved names for paths that should not be used for packages to be built with the go tool: - "main" denotes the top-level package in a stand-alone executable. - "all" expands to all package directories found in all the GOPATH trees. For example, 'go list all' lists all the packages on the local system. - "std" is like all but expands to just the packages in the standard Go library. An import path is a pattern if it includes one or more "..." wildcards, each of which can match any string, including the empty string and strings containing slashes. Such a pattern expands to all package directories found in the GOPATH trees with names matching the patterns. As a special case, x/... matches x as well as x's subdirectories. For example, net/... expands to net and packages in its subdirectories. An import path can also name a package to be downloaded from a remote repository. Run 'go help importpath' for details. Every package in a program must have a unique import path. By convention, this is arranged by starting each path with a unique prefix that belongs to you. For example, paths used internally at Google all begin with 'google', and paths denoting remote repositories begin with the path to the code, such as 'code.google.com/p/project'. As a special case, if the package list is a list of .go files from a single directory, the command is applied to a single synthesized package made up of exactly those files, ignoring any build constraints in those files and ignoring any other files in the directory. File names that begin with "." or "_" are ignored by the go tool. Description of testing flags The 'go test' command takes both flags that apply to 'go test' itself and flags that apply to the resulting test binary. Several of the flags control profiling and write an execution profile suitable for "go tool pprof"; run "go tool pprof help" for more information. The --alloc_space, --alloc_objects, and --show_bytes options of pprof control how the information is presented. The following flags are recognized by the 'go test' command and control the execution of any test: -bench regexp Run benchmarks matching the regular expression. By default, no benchmarks run. To run all benchmarks, use '-bench .' or '-bench=.'. -benchmem Print memory allocation statistics for benchmarks. -benchtime t Run enough iterations of each benchmark to take t, specified as a time.Duration (for example, -benchtime 1h30s). The default is 1 second (1s). -blockprofile block.out Write a goroutine blocking profile to the specified file when all tests are complete. -blockprofilerate n Control the detail provided in goroutine blocking profiles by calling runtime.SetBlockProfileRate with n. See 'godoc runtime SetBlockProfileRate'. The profiler aims to sample, on average, one blocking event every n nanoseconds the program spends blocked. By default, if -test.blockprofile is set without this flag, all blocking events are recorded, equivalent to -test.blockprofilerate=1. -cover Enable coverage analysis. -covermode set,count,atomic Set the mode for coverage analysis for the package[s] being tested. The default is "set" unless -race is enabled, in which case it is "atomic". The values: set: bool: does this statement run? count: int: how many times does this statement run? atomic: int: count, but correct in multithreaded tests; significantly more expensive. Sets -cover. -coverpkg pkg1,pkg2,pkg3 Apply coverage analysis in each test to the given list of packages. The default is for each test to analyze only the package being tested. Packages are specified as import paths. Sets -cover. -coverprofile cover.out Write a coverage profile to the specified file after all tests have passed. Sets -cover. -cpu 1,2,4 Specify a list of GOMAXPROCS values for which the tests or benchmarks should be executed. The default is the current value of GOMAXPROCS. -cpuprofile cpu.out Write a CPU profile to the specified file before exiting. -memprofile mem.out Write a memory profile to the specified file after all tests have passed. -memprofilerate n Enable more precise (and expensive) memory profiles by setting runtime.MemProfileRate. See 'godoc runtime MemProfileRate'. To profile all memory allocations, use -test.memprofilerate=1 and pass --alloc_space flag to the pprof tool. -outputdir directory Place output files from profiling in the specified directory, by default the directory in which "go test" is running. -parallel n Allow parallel execution of test functions that call t.Parallel. The value of this flag is the maximum number of tests to run simultaneously; by default, it is set to the value of GOMAXPROCS. -run regexp Run only those tests and examples matching the regular expression. -short Tell long-running tests to shorten their run time. It is off by default but set during all.bash so that installing the Go tree can run a sanity check but not spend time running exhaustive tests. -timeout t If a test runs longer than t, panic. -v Verbose output: log all tests as they are run. Also print all text from Log and Logf calls even if the test succeeds. The test binary, called pkg.test where pkg is the name of the directory containing the package sources, can be invoked directly after building it with 'go test -c'. When invoking the test binary directly, each of the standard flag names must be prefixed with 'test.', as in -test.run=TestMyFunc or -test.v. When running 'go test', flags not listed above are passed through unaltered. For instance, the command go test -x -v -cpuprofile=prof.out -dir=testdata -update will compile the test binary and then run it as pkg.test -test.v -test.cpuprofile=prof.out -dir=testdata -update The test flags that generate profiles (other than for coverage) also leave the test binary in pkg.test for use when analyzing the profiles. Flags not recognized by 'go test' must be placed after any specified packages. Description of testing functions The 'go test' command expects to find test, benchmark, and example functions in the "*_test.go" files corresponding to the package under test. A test function is one named TestXXX (where XXX is any alphanumeric string not starting with a lower case letter) and should have the signature, func TestXXX(t *testing.T) { ... } A benchmark function is one named BenchmarkXXX and should have the signature, func BenchmarkXXX(b *testing.B) { ... } An example function is similar to a test function but, instead of using *testing.T to report success or failure, prints output to os.Stdout. That output is compared against the function's "Output:" comment, which must be the last comment in the function body (see example below). An example with no such comment, or with no text after "Output:" is compiled but not executed. Godoc displays the body of ExampleXXX to demonstrate the use of the function, constant, or variable XXX. An example of a method M with receiver type T or *T is named ExampleT_M. There may be multiple examples for a given function, constant, or variable, distinguished by a trailing _xxx, where xxx is a suffix not beginning with an upper case letter. Here is an example of an example: func ExamplePrintln() { Println("The output of\nthis example.") // Output: The output of // this example. } The entire test file is presented as the example when it contains a single example function, at least one other function, type, variable, or constant declaration, and no test or benchmark functions. See the documentation of the testing package for more information. */ package main go/src/cmd/go/env.go0100644000000000000000000000442612412656734014560 0ustar00rootroot00000000000000// 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 import ( "fmt" "os" "runtime" "strings" ) var cmdEnv = &Command{ Run: runEnv, UsageLine: "env [var ...]", Short: "print Go environment information", Long: ` Env prints Go environment information. By default env prints information as a shell script (on Windows, a batch file). If one or more variable names is given as arguments, env prints the value of each named variable on its own line. `, } type envVar struct { name, value string } func mkEnv() []envVar { var b builder b.init() env := []envVar{ {"GOARCH", goarch}, {"GOBIN", gobin}, {"GOCHAR", archChar}, {"GOEXE", exeSuffix}, {"GOHOSTARCH", runtime.GOARCH}, {"GOHOSTOS", runtime.GOOS}, {"GOOS", goos}, {"GOPATH", os.Getenv("GOPATH")}, {"GORACE", os.Getenv("GORACE")}, {"GOROOT", goroot}, {"GOTOOLDIR", toolDir}, // disable escape codes in clang errors {"TERM", "dumb"}, } if goos != "plan9" { cmd := b.gccCmd(".") env = append(env, envVar{"CC", cmd[0]}) env = append(env, envVar{"GOGCCFLAGS", strings.Join(cmd[3:], " ")}) cmd = b.gxxCmd(".") env = append(env, envVar{"CXX", cmd[0]}) } if buildContext.CgoEnabled { env = append(env, envVar{"CGO_ENABLED", "1"}) } else { env = append(env, envVar{"CGO_ENABLED", "0"}) } return env } func findEnv(env []envVar, name string) string { for _, e := range env { if e.name == name { return e.value } } return "" } func runEnv(cmd *Command, args []string) { env := mkEnv() if len(args) > 0 { for _, name := range args { fmt.Printf("%s\n", findEnv(env, name)) } return } for _, e := range env { if e.name != "TERM" { switch runtime.GOOS { default: fmt.Printf("%s=\"%s\"\n", e.name, e.value) case "plan9": if strings.IndexByte(e.value, '\x00') < 0 { fmt.Printf("%s='%s'\n", e.name, strings.Replace(e.value, "'", "''", -1)) } else { v := strings.Split(e.value, "\x00") fmt.Printf("%s=(", e.name) for x, s := range v { if x > 0 { fmt.Printf(" ") } fmt.Printf("%s", s) } fmt.Printf(")\n") } case "windows": fmt.Printf("set %s=%s\n", e.name, e.value) } } } } go/src/cmd/go/fix.go0100644000000000000000000000150312412656734014547 0ustar00rootroot00000000000000// Copyright 2011 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 var cmdFix = &Command{ Run: runFix, UsageLine: "fix [packages]", Short: "run go tool fix on packages", Long: ` Fix runs the Go fix command on the packages named by the import paths. For more about fix, see 'godoc fix'. For more about specifying packages, see 'go help packages'. To run fix with specific options, run 'go tool fix'. See also: go fmt, go vet. `, } func runFix(cmd *Command, args []string) { for _, pkg := range packages(args) { // Use pkg.gofiles instead of pkg.Dir so that // the command only applies to this package, // not to packages in subdirectories. run(stringList(tool("fix"), relPaths(pkg.allgofiles))) } } go/src/cmd/go/fmt.go0100644000000000000000000000205012412656734014545 0ustar00rootroot00000000000000// Copyright 2011 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() { addBuildFlagsNX(cmdFmt) } var cmdFmt = &Command{ Run: runFmt, UsageLine: "fmt [-n] [-x] [packages]", Short: "run gofmt on package sources", Long: ` Fmt runs the command 'gofmt -l -w' on the packages named by the import paths. It prints the names of the files that are modified. For more about gofmt, see 'godoc gofmt'. For more about specifying packages, see 'go help packages'. The -n flag prints commands that would be executed. The -x flag prints commands as they are executed. To run gofmt with specific options, run gofmt itself. See also: go fix, go vet. `, } func runFmt(cmd *Command, args []string) { for _, pkg := range packages(args) { // Use pkg.gofiles instead of pkg.Dir so that // the command only applies to this package, // not to packages in subdirectories. run(stringList("gofmt", "-l", "-w", relPaths(pkg.allgofiles))) } } go/src/cmd/go/get.go0100644000000000000000000002742612412656737014557 0ustar00rootroot00000000000000// Copyright 2011 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 ( "fmt" "go/build" "os" "path/filepath" "regexp" "runtime" "strconv" "strings" ) var cmdGet = &Command{ UsageLine: "get [-d] [-fix] [-t] [-u] [build flags] [packages]", Short: "download and install packages and dependencies", Long: ` Get downloads and installs the packages named by the import paths, along with their dependencies. The -d flag instructs get to stop after downloading the packages; that is, it instructs get not to install the packages. The -fix flag instructs get to run the fix tool on the downloaded packages before resolving dependencies or building the code. The -t flag instructs get to also download the packages required to build the tests for the specified packages. The -u flag instructs get to use the network to update the named packages and their dependencies. By default, get uses the network to check out missing packages but does not use it to look for updates to existing packages. Get also accepts build flags to control the installation. See 'go help build'. When checking out or updating a package, get looks for a branch or tag that matches the locally installed version of Go. The most important 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. For more about specifying packages, see 'go help packages'. For more about how 'go get' finds source code to download, see 'go help importpath'. See also: go build, go install, go clean. `, } var getD = cmdGet.Flag.Bool("d", false, "") var getT = cmdGet.Flag.Bool("t", false, "") var getU = cmdGet.Flag.Bool("u", false, "") var getFix = cmdGet.Flag.Bool("fix", false, "") func init() { addBuildFlags(cmdGet) cmdGet.Run = runGet // break init loop } func runGet(cmd *Command, args []string) { // Phase 1. Download/update. var stk importStack for _, arg := range downloadPaths(args) { download(arg, &stk, *getT) } exitIfErrors() // Phase 2. Rescan packages and re-evaluate args list. // Code we downloaded and all code that depends on it // needs to be evicted from the package cache so that // the information will be recomputed. Instead of keeping // track of the reverse dependency information, evict // everything. for name := range packageCache { delete(packageCache, name) } args = importPaths(args) // Phase 3. Install. if *getD { // Download only. // Check delayed until now so that importPaths // has a chance to print errors. return } runInstall(cmd, args) } // downloadPaths prepares the list of paths to pass to download. // It expands ... patterns that can be expanded. If there is no match // for a particular pattern, downloadPaths leaves it in the result list, // in the hope that we can figure out the repository from the // initial ...-free prefix. func downloadPaths(args []string) []string { args = importPathsNoDotExpansion(args) var out []string for _, a := range args { if strings.Contains(a, "...") { var expand []string // Use matchPackagesInFS to avoid printing // warnings. They will be printed by the // eventual call to importPaths instead. if build.IsLocalImport(a) { expand = matchPackagesInFS(a) } else { expand = matchPackages(a) } if len(expand) > 0 { out = append(out, expand...) continue } } out = append(out, a) } return out } // downloadCache records the import paths we have already // considered during the download, to avoid duplicate work when // there is more than one dependency sequence leading to // a particular package. var downloadCache = map[string]bool{} // downloadRootCache records the version control repository // root directories we have already considered during the download. // For example, all the packages in the code.google.com/p/codesearch repo // share the same root (the directory for that path), and we only need // to run the hg commands to consider each repository once. 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) if p.Error != nil && p.Error.hard { errorf("%s", p.Error) return } // There's nothing to do if this is a package in the standard library. if p.Standard { return } // Only process each package once. if downloadCache[arg] { return } downloadCache[arg] = true pkgs := []*Package{p} wildcardOkay := len(*stk) == 0 isWildcard := false // Download if the package is missing, or update if we're using -u. if p.Dir == "" || *getU { // The actual download. stk.push(p.ImportPath) err := downloadPackage(p) if err != nil { errorf("%s", &PackageError{ImportStack: stk.copy(), Err: err.Error()}) stk.pop() return } 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 // for p has been replaced in the package cache. if wildcardOkay && strings.Contains(arg, "...") { if build.IsLocalImport(arg) { args = matchPackagesInFS(arg) } else { args = matchPackages(arg) } isWildcard = true } // Clear all relevant package cache entries before // doing any new loads. for _, arg := range args { p := packageCache[arg] if p != nil { delete(packageCache, p.Dir) delete(packageCache, p.ImportPath) } } pkgs = pkgs[:0] for _, arg := range args { stk.push(arg) p := loadPackage(arg, stk) stk.pop() if p.Error != nil { errorf("%s", p.Error) continue } pkgs = append(pkgs, p) } } // Process package, which might now be multiple packages // due to wildcard expansion. for _, p := range pkgs { if *getFix { run(stringList(tool("fix"), relPaths(p.allgofiles))) // The imports might have changed, so reload again. p = reloadPackage(arg, stk) if p.Error != nil { errorf("%s", p.Error) return } } if isWildcard { // Report both the real package and the // wildcard in any error message. stk.push(p.ImportPath) } // Process dependencies, now that we know what they are. for _, dep := range p.deps { // Don't get test dependencies recursively. download(dep.ImportPath, stk, false) } if getTestDeps { // Process test dependencies when -t is specified. // (Don't get test dependencies for test dependencies.) for _, path := range p.TestImports { download(path, stk, false) } for _, path := range p.XTestImports { download(path, stk, false) } } if isWildcard { stk.pop() } } } // downloadPackage runs the create or download command // to make the first copy of or update a copy of the given package. func downloadPackage(p *Package) error { var ( vcs *vcsCmd repo, rootPath string err error ) if p.build.SrcRoot != "" { // Directory exists. Look for checkout along path to src. vcs, rootPath, err = vcsForDir(p) if err != nil { return err } repo = "" // should be unused; make distinctive } else { // Analyze the import path to determine the version control system, // repository, and the import path for the root of the repository. rr, err := repoRootForImportPath(p.ImportPath) if err != nil { return err } vcs, repo, rootPath = rr.vcs, rr.repo, rr.root } if p.build.SrcRoot == "" { // Package not found. Put in first directory of $GOPATH. list := filepath.SplitList(buildContext.GOPATH) if len(list) == 0 { return fmt.Errorf("cannot download, $GOPATH not set. For more details see: go help gopath") } // Guard against people setting GOPATH=$GOROOT. if list[0] == goroot { return fmt.Errorf("cannot download, $GOPATH must not be set to $GOROOT. For more details see: go help gopath") } p.build.SrcRoot = filepath.Join(list[0], "src") p.build.PkgRoot = filepath.Join(list[0], "pkg") } root := filepath.Join(p.build.SrcRoot, rootPath) // If we've considered this repository already, don't do it again. if downloadRootCache[root] { return nil } downloadRootCache[root] = true if buildV { fmt.Fprintf(os.Stderr, "%s (download)\n", rootPath) } // Check that this is an appropriate place for the repo to be checked out. // The target directory must either not exist or have a repo checked out already. meta := filepath.Join(root, "."+vcs.cmd) st, err := os.Stat(meta) if err == nil && !st.IsDir() { return fmt.Errorf("%s exists but is not a directory", meta) } if err != nil { // Metadata directory does not exist. Prepare to checkout new copy. // Some version control tools require the target directory not to exist. // We require that too, just to avoid stepping on existing work. if _, err := os.Stat(root); err == nil { return fmt.Errorf("%s exists but %s does not - stale checkout?", root, meta) } // Some version control tools require the parent of the target to exist. parent, _ := filepath.Split(root) if err = os.MkdirAll(parent, 0777); err != nil { return err } if err = vcs.create(root, repo); err != nil { return err } } else { // Metadata directory does exist; download incremental updates. if err = vcs.download(root); err != nil { return err } } if buildN { // Do not show tag sync in -n; it's noise more than anything, // and since we're not running commands, no tag will be found. // But avoid printing nothing. fmt.Fprintf(os.Stderr, "# cd %s; %s sync/update\n", root, vcs.cmd) return nil } // Select and sync to appropriate version of the repository. tags, err := vcs.tags(root) if err != nil { return err } vers := runtime.Version() if i := strings.Index(vers, " "); i >= 0 { vers = vers[:i] } if err := vcs.tagSync(root, selectTag(vers, tags)); err != nil { return err } return nil } // goTag matches go release tags such as go1 and go1.2.3. // The numbers involved must be small (at most 4 digits), // have no unnecessary leading zeros, and the version cannot // end in .0 - it is go1, not go1.0 or go1.0.0. var goTag = regexp.MustCompile( `^go((0|[1-9][0-9]{0,3})\.)*([1-9][0-9]{0,3})$`, ) // selectTag returns the closest matching tag for a given version. // Closest means the latest one that is not after the current release. // Version "goX" (or "goX.Y" or "goX.Y.Z") matches tags of the same form. // Version "release.rN" matches tags of the form "go.rN" (N being a floating-point number). // Version "weekly.YYYY-MM-DD" matches tags like "go.weekly.YYYY-MM-DD". // // NOTE(rsc): Eventually we will need to decide on some logic here. // For now, there is only "go1". This matches the docs in go help get. func selectTag(goVersion string, tags []string) (match string) { for _, t := range tags { if t == "go1" { return "go1" } } return "" /* if goTag.MatchString(goVersion) { v := goVersion for _, t := range tags { if !goTag.MatchString(t) { continue } if cmpGoVersion(match, t) < 0 && cmpGoVersion(t, v) <= 0 { match = t } } } return match */ } // cmpGoVersion returns -1, 0, +1 reporting whether // x < y, x == y, or x > y. func cmpGoVersion(x, y string) int { // Malformed strings compare less than well-formed strings. if !goTag.MatchString(x) { return -1 } if !goTag.MatchString(y) { return +1 } // Compare numbers in sequence. xx := strings.Split(x[len("go"):], ".") yy := strings.Split(y[len("go"):], ".") for i := 0; i < len(xx) && i < len(yy); i++ { // The Atoi are guaranteed to succeed // because the versions match goTag. xi, _ := strconv.Atoi(xx[i]) yi, _ := strconv.Atoi(yy[i]) if xi < yi { return -1 } else if xi > yi { return +1 } } if len(xx) < len(yy) { return -1 } if len(xx) > len(yy) { return +1 } return 0 } go/src/cmd/go/go11.go0100644000000000000000000000045412412656734014534 0ustar00rootroot00000000000000// Copyright 2013 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 go1.1 package main // Test that go1.1 tag above is included in builds. main.go refers to this definition. const go11tag = true go/src/cmd/go/help.go0100644000000000000000000002667212412656737014732 0ustar00rootroot00000000000000// Copyright 2011 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 var helpC = &Command{ UsageLine: "c", Short: "calling between Go and C", Long: ` There are two different ways to call between Go and C/C++ code. The first is the cgo tool, which is part of the Go distribution. For information on how to use it see the cgo documentation (godoc cmd/cgo). The second is the SWIG program, which is a general tool for interfacing between languages. For information on SWIG see http://swig.org/. When running go build, any file with a .swig extension will be passed to SWIG. Any file with a .swigcxx extension will be passed to SWIG with the -c++ option. When either cgo or SWIG is used, go build will pass any .c, .m, .s, or .S files to the C compiler, and any .cc, .cpp, .cxx files to the C++ compiler. The CC or CXX environment variables may be set to determine the C or C++ compiler, respectively, to use. `, } var helpPackages = &Command{ UsageLine: "packages", Short: "description of package lists", Long: ` Many commands apply to a set of packages: go action [packages] Usually, [packages] is a list of import paths. An import path that is a rooted path or that begins with a . or .. element is interpreted as a file system path and denotes the package in that directory. Otherwise, the import path P denotes the package found in the directory DIR/src/P for some DIR listed in the GOPATH environment variable (see 'go help gopath'). If no import paths are given, the action applies to the package in the current directory. There are three reserved names for paths that should not be used for packages to be built with the go tool: - "main" denotes the top-level package in a stand-alone executable. - "all" expands to all package directories found in all the GOPATH trees. For example, 'go list all' lists all the packages on the local system. - "std" is like all but expands to just the packages in the standard Go library. An import path is a pattern if it includes one or more "..." wildcards, each of which can match any string, including the empty string and strings containing slashes. Such a pattern expands to all package directories found in the GOPATH trees with names matching the patterns. As a special case, x/... matches x as well as x's subdirectories. For example, net/... expands to net and packages in its subdirectories. An import path can also name a package to be downloaded from a remote repository. Run 'go help importpath' for details. Every package in a program must have a unique import path. By convention, this is arranged by starting each path with a unique prefix that belongs to you. For example, paths used internally at Google all begin with 'google', and paths denoting remote repositories begin with the path to the code, such as 'code.google.com/p/project'. As a special case, if the package list is a list of .go files from a single directory, the command is applied to a single synthesized package made up of exactly those files, ignoring any build constraints in those files and ignoring any other files in the directory. File names that begin with "." or "_" are ignored by the go tool. `, } var helpImportPath = &Command{ UsageLine: "importpath", Short: "import path syntax", Long: ` An import path (see 'go help packages') denotes a package stored in the local file system. In general, an import path denotes either a standard package (such as "unicode/utf8") or a package found in one of the work spaces (see 'go help gopath'). Relative import paths An import path beginning with ./ or ../ is called a relative path. The toolchain supports relative import paths as a shortcut in two ways. First, a relative path can be used as a shorthand on the command line. If you are working in the directory containing the code imported as "unicode" and want to run the tests for "unicode/utf8", you can type "go test ./utf8" instead of needing to specify the full path. Similarly, in the reverse situation, "go test .." will test "unicode" from the "unicode/utf8" directory. Relative patterns are also allowed, like "go test ./..." to test all subdirectories. See 'go help packages' for details on the pattern syntax. Second, if you are compiling a Go program not in a work space, you can use a relative path in an import statement in that program to refer to nearby code also not in a work space. This makes it easy to experiment with small multipackage programs outside of the usual work spaces, but such programs cannot be installed with "go install" (there is no work space in which to install them), so they are rebuilt from scratch each time they are built. To avoid ambiguity, Go programs cannot use relative import paths within a work space. Remote import paths Certain import paths also describe how to obtain the source code for the package using a revision control system. A few common code hosting sites have special syntax: Bitbucket (Git, Mercurial) import "bitbucket.org/user/project" import "bitbucket.org/user/project/sub/directory" GitHub (Git) import "github.com/user/project" import "github.com/user/project/sub/directory" Google Code Project Hosting (Git, Mercurial, Subversion) import "code.google.com/p/project" import "code.google.com/p/project/sub/directory" import "code.google.com/p/project.subrepository" import "code.google.com/p/project.subrepository/sub/directory" Launchpad (Bazaar) import "launchpad.net/project" import "launchpad.net/project/series" import "launchpad.net/project/series/sub/directory" import "launchpad.net/~user/project/branch" import "launchpad.net/~user/project/branch/sub/directory" For code hosted on other servers, import paths may either be qualified with the version control type, or the go tool can dynamically fetch the import path over https/http and discover where the code resides from a tag in the HTML. To declare the code location, an import path of the form repository.vcs/path specifies the given repository, with or without the .vcs suffix, using the named version control system, and then the path inside that repository. The supported version control systems are: Bazaar .bzr Git .git Mercurial .hg Subversion .svn For example, import "example.org/user/foo.hg" denotes the root directory of the Mercurial repository at example.org/user/foo or foo.hg, and import "example.org/repo.git/foo/bar" denotes the foo/bar directory of the Git repository at 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://. 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 over https/http and looks for a tag in the document's HTML . The meta tag has the form: The import-prefix is the import path corresponding to the repository 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 tags match. The vcs is one of "git", "hg", "svn", etc, The repo-root is the root of the version control system containing a scheme and not containing a .vcs qualifier. For example, import "example.org/pkg/foo" will result in the following request(s): https://example.org/pkg/foo?go-get=1 (preferred) http://example.org/pkg/foo?go-get=1 (fallback) If that page contains the meta tag the go tool will verify that https://example.org/?go-get=1 contains the same meta tag and then git clone https://code.org/r/p/exproj into GOPATH/src/example.org. New downloaded packages are written to the first directory listed in the GOPATH environment variable (see 'go help gopath'). The go command attempts to download the version of the package appropriate for the Go release being used. Run 'go help install' for more. `, } var helpGopath = &Command{ UsageLine: "gopath", Short: "GOPATH environment variable", Long: ` The Go path is used to resolve import statements. It is implemented by and documented in the go/build package. The GOPATH environment variable lists places to look for Go code. On Unix, the value is a colon-separated string. On Windows, the value is a semicolon-separated string. On Plan 9, the value is a list. GOPATH must be set to get, build and install packages outside the standard Go tree. Each directory listed in GOPATH must have a prescribed structure: The src/ directory holds source code. The path below 'src' determines the import path or executable name. 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). 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. 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 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 of DIR/bin. Here's an example directory layout: GOPATH=/home/user/gocode /home/user/gocode/ src/ foo/ bar/ (go code in package bar) x.go quux/ (go code in package main) y.go bin/ quux (installed command) pkg/ linux_amd64/ foo/ bar.a (installed package object) Go searches each directory listed in GOPATH to find source code, but new packages are always downloaded into the first directory in the list. `, } var helpFileType = &Command{ UsageLine: "filetype", Short: "file types", Long: ` The go command examines the contents of a restricted set of files in each directory. It identifies which files to examine based on the extension of the file name. These extensions are: .go 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. .cc, .cpp, .cxx, .hh, .hpp, .hxx C++ source files. Only useful with cgo or SWIG, and always compiled with the OS-native compiler. .m Objective-C source files. Only useful with cgo, and always compiled with the OS-native compiler. .s, .S Assembler source files. If the package uses cgo, 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. .swig, .swigcxx SWIG definition files. .syso System object files. Files of each of these types except .syso may contain build constraints, but the go command stops scanning for build constraints at the first item in the file that is not a blank line or //-style line comment. `, } go/src/cmd/go/http.go0100644000000000000000000000434412412656734014746 0ustar00rootroot00000000000000// 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. // +build !cmd_go_bootstrap // This code is compiled into the real 'go' binary, but it is not // compiled into the binary that is built during all.bash, so as // to avoid needing to build net (and thus use cgo) during the // bootstrap process. package main import ( "fmt" "io" "io/ioutil" "log" "net/http" "net/url" ) // httpClient is the default HTTP client, but a variable so it can be // changed by tests, without modifying http.DefaultClient. var httpClient = http.DefaultClient // httpGET returns the data from an HTTP GET request for the given URL. func httpGET(url string) ([]byte, error) { resp, err := httpClient.Get(url) if err != nil { return nil, err } defer resp.Body.Close() if resp.StatusCode != 200 { return nil, fmt.Errorf("%s: %s", url, resp.Status) } b, err := ioutil.ReadAll(resp.Body) if err != nil { return nil, fmt.Errorf("%s: %v", url, err) } return b, nil } // httpsOrHTTP returns the body of either the importPath's // https resource or, if unavailable, the http resource. func httpsOrHTTP(importPath string) (urlStr string, body io.ReadCloser, err error) { fetch := func(scheme string) (urlStr string, res *http.Response, err error) { u, err := url.Parse(scheme + "://" + importPath) if err != nil { return "", nil, err } u.RawQuery = "go-get=1" urlStr = u.String() if buildV { log.Printf("Fetching %s", urlStr) } res, err = httpClient.Get(urlStr) return } closeBody := func(res *http.Response) { if res != nil { res.Body.Close() } } urlStr, res, err := fetch("https") if err != nil || res.StatusCode != 200 { if buildV { if err != nil { log.Printf("https fetch failed.") } else { log.Printf("ignoring https fetch with status code %d", res.StatusCode) } } closeBody(res) urlStr, res, err = fetch("http") } if err != nil { closeBody(res) return "", nil, err } // Note: accepting a non-200 OK here, so people can serve a // meta import in their http 404 page. if buildV { log.Printf("Parsing meta tags from %s (status code %d)", urlStr, res.StatusCode) } return urlStr, res.Body, nil } go/src/cmd/go/list.go0100644000000000000000000001462112412656734014741 0ustar00rootroot00000000000000// Copyright 2011 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 ( "bufio" "encoding/json" "io" "os" "strings" "text/template" ) var cmdList = &Command{ UsageLine: "list [-e] [-f format] [-json] [build flags] [packages]", Short: "list packages", Long: ` List lists the packages named by the import paths, one per line. The default output shows the package import path: code.google.com/p/google-api-go-client/books/v1 code.google.com/p/goauth2/oauth code.google.com/p/sqlite The -f flag specifies an alternate format for the list, using the syntax of package template. The default output is equivalent to -f '{{.ImportPath}}'. The struct being passed to the template is: type Package struct { Dir string // directory containing package sources ImportPath string // import path of package in dir Name string // package name Doc string // package documentation string Target string // install path Goroot bool // is this package in the Go root? Standard bool // is this package part of the standard Go library? Stale bool // would 'go install' do anything for this package? Root string // Go root or Go path dir containing this package // Source files GoFiles []string // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles) CgoFiles []string // .go sources files that import "C" IgnoredGoFiles []string // .go sources ignored due to build constraints CFiles []string // .c source files CXXFiles []string // .cc, .cxx and .cpp source files MFiles []string // .m source files HFiles []string // .h, .hh, .hpp and .hxx source files SFiles []string // .s source files SwigFiles []string // .swig files SwigCXXFiles []string // .swigcxx files SysoFiles []string // .syso object files to add to archive // Cgo directives CgoCFLAGS []string // cgo: flags for C compiler CgoCPPFLAGS []string // cgo: flags for C preprocessor CgoCXXFLAGS []string // cgo: flags for C++ compiler CgoLDFLAGS []string // cgo: flags for linker CgoPkgConfig []string // cgo: pkg-config names // Dependency information Imports []string // import paths used by this package Deps []string // all (recursively) imported dependencies // Error information Incomplete bool // this package or a dependency has an error Error *PackageError // error loading package DepsErrors []*PackageError // errors loading dependencies TestGoFiles []string // _test.go files in package TestImports []string // imports from TestGoFiles XTestGoFiles []string // _test.go files outside package XTestImports []string // imports from XTestGoFiles } The template function "join" calls strings.Join. The template function "context" returns the build context, defined as: type Context struct { GOARCH string // target architecture GOOS string // target operating system GOROOT string // Go root GOPATH string // Go path CgoEnabled bool // whether cgo can be used UseAllFiles bool // use files regardless of +build lines, file names Compiler string // compiler to assume when computing target paths BuildTags []string // build constraints to match in +build lines ReleaseTags []string // releases the current release is compatible with InstallSuffix string // suffix to use in the name of the install dir } For more information about the meaning of these fields see the documentation for the go/build package's Context type. The -json flag causes the package data to be printed in JSON format instead of using the template format. The -e flag changes the handling of erroneous packages, those that cannot be found or are malformed. By default, the list command prints an error to standard error for each erroneous package and omits the packages from consideration during the usual printing. With the -e flag, the list command never prints errors to standard error and instead processes the erroneous packages with the usual printing. Erroneous packages will have a non-empty ImportPath and a non-nil Error field; other information may or may not be missing (zeroed). For more about build flags, see 'go help build'. For more about specifying packages, see 'go help packages'. `, } func init() { cmdList.Run = runList // break init cycle addBuildFlags(cmdList) } var listE = cmdList.Flag.Bool("e", false, "") var listFmt = cmdList.Flag.String("f", "{{.ImportPath}}", "") var listJson = cmdList.Flag.Bool("json", false, "") var nl = []byte{'\n'} func runList(cmd *Command, args []string) { out := newTrackingWriter(os.Stdout) defer out.w.Flush() var do func(*Package) if *listJson { do = func(p *Package) { b, err := json.MarshalIndent(p, "", "\t") if err != nil { out.Flush() fatalf("%s", err) } out.Write(b) out.Write(nl) } } else { var cachedCtxt *Context context := func() *Context { if cachedCtxt == nil { cachedCtxt = newContext(&buildContext) } return cachedCtxt } fm := template.FuncMap{ "join": strings.Join, "context": context, } tmpl, err := template.New("main").Funcs(fm).Parse(*listFmt) if err != nil { fatalf("%s", err) } do = func(p *Package) { if err := tmpl.Execute(out, p); err != nil { out.Flush() fatalf("%s", err) } if out.NeedNL() { out.Write(nl) } } } load := packages if *listE { load = packagesAndErrors } for _, pkg := range load(args) { do(pkg) } } // TrackingWriter tracks the last byte written on every write so // we can avoid printing a newline if one was already written or // if there is no output at all. type TrackingWriter struct { w *bufio.Writer last byte } func newTrackingWriter(w io.Writer) *TrackingWriter { return &TrackingWriter{ w: bufio.NewWriter(w), last: '\n', } } func (t *TrackingWriter) Write(p []byte) (n int, err error) { n, err = t.w.Write(p) if n > 0 { t.last = p[n-1] } return } func (t *TrackingWriter) Flush() { t.w.Flush() } func (t *TrackingWriter) NeedNL() bool { return t.last != '\n' } go/src/cmd/go/main.go0100644000000000000000000004262612412656737014723 0ustar00rootroot00000000000000// Copyright 2011 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 ( "bytes" "flag" "fmt" "go/build" "io" "log" "os" "os/exec" "path" "path/filepath" "regexp" "runtime" "strings" "sync" "text/template" "unicode" "unicode/utf8" ) // A Command is an implementation of a go command // like go build or go fix. type Command struct { // Run runs the command. // The args are the arguments after the command name. Run func(cmd *Command, args []string) // UsageLine is the one-line usage message. // The first word in the line is taken to be the command name. UsageLine string // Short is the short description shown in the 'go help' output. Short string // Long is the long message shown in the 'go help ' output. Long string // Flag is a set of flags specific to this command. Flag flag.FlagSet // CustomFlags indicates that the command will do its own // flag parsing. CustomFlags bool } // Name returns the command's name: the first word in the usage line. func (c *Command) Name() string { name := c.UsageLine i := strings.Index(name, " ") if i >= 0 { name = name[:i] } return name } func (c *Command) Usage() { fmt.Fprintf(os.Stderr, "usage: %s\n\n", c.UsageLine) fmt.Fprintf(os.Stderr, "%s\n", strings.TrimSpace(c.Long)) os.Exit(2) } // Runnable reports whether the command can be run; otherwise // it is a documentation pseudo-command such as importpath. func (c *Command) Runnable() bool { return c.Run != nil } // Commands lists the available commands and help topics. // The order here is the order in which they are printed by 'go help'. var commands = []*Command{ cmdBuild, cmdClean, cmdEnv, cmdFix, cmdFmt, cmdGet, cmdInstall, cmdList, cmdRun, cmdTest, cmdTool, cmdVersion, cmdVet, helpC, helpFileType, helpGopath, helpImportPath, helpPackages, helpTestflag, helpTestfunc, } var exitStatus = 0 var exitMu sync.Mutex func setExitStatus(n int) { exitMu.Lock() if exitStatus < n { exitStatus = n } exitMu.Unlock() } func main() { _ = go11tag flag.Usage = usage flag.Parse() log.SetFlags(0) args := flag.Args() if len(args) < 1 { usage() } if args[0] == "help" { help(args[1:]) return } // Diagnose common mistake: GOPATH==GOROOT. // This setting is equivalent to not setting GOPATH at all, // which is not what most people want when they do it. if gopath := os.Getenv("GOPATH"); gopath == runtime.GOROOT() { fmt.Fprintf(os.Stderr, "warning: GOPATH set to GOROOT (%s) has no effect\n", gopath) } else { for _, p := range filepath.SplitList(gopath) { // Note: using HasPrefix instead of Contains because a ~ can appear // in the middle of directory elements, such as /tmp/git-1.8.2~rc3 // or C:\PROGRA~1. Only ~ as a path prefix has meaning to the shell. if strings.HasPrefix(p, "~") { fmt.Fprintf(os.Stderr, "go: GOPATH entry cannot start with shell metacharacter '~': %q\n", p) os.Exit(2) } if build.IsLocalImport(p) { fmt.Fprintf(os.Stderr, "go: GOPATH entry is relative; must be absolute path: %q.\nRun 'go help gopath' for usage.\n", p) os.Exit(2) } } } if fi, err := os.Stat(goroot); err != nil || !fi.IsDir() { fmt.Fprintf(os.Stderr, "go: cannot find GOROOT directory: %v\n", goroot) os.Exit(2) } for _, cmd := range commands { if cmd.Name() == args[0] && cmd.Run != nil { cmd.Flag.Usage = func() { cmd.Usage() } if cmd.CustomFlags { args = args[1:] } else { cmd.Flag.Parse(args[1:]) args = cmd.Flag.Args() } cmd.Run(cmd, args) exit() return } } fmt.Fprintf(os.Stderr, "go: unknown subcommand %q\nRun 'go help' for usage.\n", args[0]) setExitStatus(2) exit() } var usageTemplate = `Go is a tool for managing Go source code. Usage: go command [arguments] The commands are: {{range .}}{{if .Runnable}} {{.Name | printf "%-11s"}} {{.Short}}{{end}}{{end}} Use "go help [command]" for more information about a command. Additional help topics: {{range .}}{{if not .Runnable}} {{.Name | printf "%-11s"}} {{.Short}}{{end}}{{end}} Use "go help [topic]" for more information about that topic. ` var helpTemplate = `{{if .Runnable}}usage: go {{.UsageLine}} {{end}}{{.Long | trim}} ` var documentationTemplate = `// Copyright 2011 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. // DO NOT EDIT THIS FILE. GENERATED BY mkdoc.sh. // Edit the documentation in other files and rerun mkdoc.sh to generate this one. /* {{range .}}{{if .Short}}{{.Short | capitalize}} {{end}}{{if .Runnable}}Usage: go {{.UsageLine}} {{end}}{{.Long | trim}} {{end}}*/ package main ` // tmpl executes the given template text on data, writing the result to w. func tmpl(w io.Writer, text string, data interface{}) { t := template.New("top") t.Funcs(template.FuncMap{"trim": strings.TrimSpace, "capitalize": capitalize}) template.Must(t.Parse(text)) if err := t.Execute(w, data); err != nil { panic(err) } } func capitalize(s string) string { if s == "" { return s } r, n := utf8.DecodeRuneInString(s) return string(unicode.ToTitle(r)) + s[n:] } func printUsage(w io.Writer) { tmpl(w, usageTemplate, commands) } func usage() { // special case "go test -h" if len(os.Args) > 1 && os.Args[1] == "test" { help([]string{"testflag"}) os.Exit(2) } printUsage(os.Stderr) os.Exit(2) } // help implements the 'help' command. func help(args []string) { if len(args) == 0 { printUsage(os.Stdout) // not exit 2: succeeded at 'go help'. return } if len(args) != 1 { fmt.Fprintf(os.Stderr, "usage: go help command\n\nToo many arguments given.\n") os.Exit(2) // failed at 'go help' } arg := args[0] // 'go help documentation' generates doc.go. if arg == "documentation" { buf := new(bytes.Buffer) printUsage(buf) usage := &Command{Long: buf.String()} tmpl(os.Stdout, documentationTemplate, append([]*Command{usage}, commands...)) return } for _, cmd := range commands { if cmd.Name() == arg { tmpl(os.Stdout, helpTemplate, cmd) // not exit 2: succeeded at 'go help cmd'. return } } fmt.Fprintf(os.Stderr, "Unknown help topic %#q. Run 'go help'.\n", arg) os.Exit(2) // failed at 'go help cmd' } // importPathsNoDotExpansion returns the import paths to use for the given // command line, but it does no ... expansion. func importPathsNoDotExpansion(args []string) []string { if len(args) == 0 { return []string{"."} } var out []string for _, a := range args { // Arguments are supposed to be import paths, but // as a courtesy to Windows developers, rewrite \ to / // in command-line arguments. Handles .\... and so on. if filepath.Separator == '\\' { a = strings.Replace(a, `\`, `/`, -1) } // Put argument in canonical form, but preserve leading ./. if strings.HasPrefix(a, "./") { a = "./" + path.Clean(a) if a == "./." { a = "." } } else { a = path.Clean(a) } if a == "all" || a == "std" { out = append(out, allPackages(a)...) continue } out = append(out, a) } return out } // importPaths returns the import paths to use for the given command line. func importPaths(args []string) []string { args = importPathsNoDotExpansion(args) var out []string for _, a := range args { if strings.Contains(a, "...") { if build.IsLocalImport(a) { out = append(out, allPackagesInFS(a)...) } else { out = append(out, allPackages(a)...) } continue } out = append(out, a) } return out } var atexitFuncs []func() func atexit(f func()) { atexitFuncs = append(atexitFuncs, f) } func exit() { for _, f := range atexitFuncs { f() } os.Exit(exitStatus) } func fatalf(format string, args ...interface{}) { errorf(format, args...) exit() } func errorf(format string, args ...interface{}) { log.Printf(format, args...) setExitStatus(1) } var logf = log.Printf func exitIfErrors() { if exitStatus != 0 { exit() } } func run(cmdargs ...interface{}) { cmdline := stringList(cmdargs...) if buildN || buildX { fmt.Printf("%s\n", strings.Join(cmdline, " ")) if buildN { return } } cmd := exec.Command(cmdline[0], cmdline[1:]...) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil { errorf("%v", err) } } func runOut(dir string, cmdargs ...interface{}) []byte { cmdline := stringList(cmdargs...) cmd := exec.Command(cmdline[0], cmdline[1:]...) cmd.Dir = dir out, err := cmd.CombinedOutput() if err != nil { os.Stderr.Write(out) errorf("%v", err) out = nil } return out } // envForDir returns a copy of the environment // suitable for running in the given directory. // The environment is the current process's environment // but with an updated $PWD, so that an os.Getwd in the // child will be faster. func envForDir(dir string) []string { env := os.Environ() // Internally we only use rooted paths, so dir is rooted. // Even if dir is not rooted, no harm done. return mergeEnvLists([]string{"PWD=" + dir}, env) } // mergeEnvLists merges the two environment lists such that // variables with the same name in "in" replace those in "out". func mergeEnvLists(in, out []string) []string { NextVar: for _, inkv := range in { k := strings.SplitAfterN(inkv, "=", 2)[0] for i, outkv := range out { if strings.HasPrefix(outkv, k) { out[i] = inkv continue NextVar } } out = append(out, inkv) } return out } // matchPattern(pattern)(name) reports whether // name matches pattern. Pattern is a limited glob // pattern in which '...' means 'any string' and there // is no other special syntax. func matchPattern(pattern string) func(name string) bool { re := regexp.QuoteMeta(pattern) re = strings.Replace(re, `\.\.\.`, `.*`, -1) // Special case: foo/... matches foo too. if strings.HasSuffix(re, `/.*`) { re = re[:len(re)-len(`/.*`)] + `(/.*)?` } reg := regexp.MustCompile(`^` + re + `$`) return func(name string) bool { return reg.MatchString(name) } } // hasPathPrefix reports whether the path s begins with the // elements in prefix. func hasPathPrefix(s, prefix string) bool { switch { default: return false case len(s) == len(prefix): return s == prefix case len(s) > len(prefix): if prefix != "" && prefix[len(prefix)-1] == '/' { return strings.HasPrefix(s, prefix) } return s[len(prefix)] == '/' && s[:len(prefix)] == prefix } } // treeCanMatchPattern(pattern)(name) reports whether // name or children of name can possibly match pattern. // Pattern is the same limited glob accepted by matchPattern. func treeCanMatchPattern(pattern string) func(name string) bool { wildCard := false if i := strings.Index(pattern, "..."); i >= 0 { wildCard = true pattern = pattern[:i] } return func(name string) bool { return len(name) <= len(pattern) && hasPathPrefix(pattern, name) || wildCard && strings.HasPrefix(name, pattern) } } // allPackages returns all the packages that can be found // under the $GOPATH directories and $GOROOT matching pattern. // The pattern is either "all" (all packages), "std" (standard packages) // or a path including "...". func allPackages(pattern string) []string { pkgs := matchPackages(pattern) if len(pkgs) == 0 { fmt.Fprintf(os.Stderr, "warning: %q matched no packages\n", pattern) } return pkgs } func matchPackages(pattern string) []string { match := func(string) bool { return true } treeCanMatch := func(string) bool { return true } if pattern != "all" && pattern != "std" { match = matchPattern(pattern) treeCanMatch = treeCanMatchPattern(pattern) } have := map[string]bool{ "builtin": true, // ignore pseudo-package that exists only for documentation } if !buildContext.CgoEnabled { have["runtime/cgo"] = true // ignore during walk } var pkgs []string // Commands cmd := filepath.Join(goroot, "src/cmd") + string(filepath.Separator) filepath.Walk(cmd, func(path string, fi os.FileInfo, err error) error { if err != nil || !fi.IsDir() || path == cmd { return nil } name := path[len(cmd):] if !treeCanMatch(name) { return filepath.SkipDir } // Commands are all in cmd/, not in subdirectories. if strings.Contains(name, string(filepath.Separator)) { return filepath.SkipDir } // We use, e.g., cmd/gofmt as the pseudo import path for gofmt. name = "cmd/" + name if have[name] { return nil } have[name] = true if !match(name) { return nil } _, err = buildContext.ImportDir(path, 0) if err != nil { if _, noGo := err.(*build.NoGoError); !noGo { log.Print(err) } return nil } pkgs = append(pkgs, name) return nil }) for _, src := range buildContext.SrcDirs() { if pattern == "std" && src != gorootSrcPkg { continue } src = filepath.Clean(src) + string(filepath.Separator) filepath.Walk(src, func(path string, fi os.FileInfo, err error) error { if err != nil || !fi.IsDir() || path == src { return nil } // Avoid .foo, _foo, and testdata directory trees. _, elem := filepath.Split(path) if strings.HasPrefix(elem, ".") || strings.HasPrefix(elem, "_") || elem == "testdata" { return filepath.SkipDir } name := filepath.ToSlash(path[len(src):]) if pattern == "std" && strings.Contains(name, ".") { return filepath.SkipDir } if !treeCanMatch(name) { return filepath.SkipDir } if have[name] { return nil } have[name] = true if !match(name) { return nil } _, err = buildContext.ImportDir(path, 0) if err != nil { if _, noGo := err.(*build.NoGoError); noGo { return nil } } pkgs = append(pkgs, name) return nil }) } return pkgs } // allPackagesInFS is like allPackages but is passed a pattern // beginning ./ or ../, meaning it should scan the tree rooted // at the given directory. There are ... in the pattern too. func allPackagesInFS(pattern string) []string { pkgs := matchPackagesInFS(pattern) if len(pkgs) == 0 { fmt.Fprintf(os.Stderr, "warning: %q matched no packages\n", pattern) } return pkgs } func matchPackagesInFS(pattern string) []string { // Find directory to begin the scan. // Could be smarter but this one optimization // is enough for now, since ... is usually at the // end of a path. i := strings.Index(pattern, "...") dir, _ := path.Split(pattern[:i]) // pattern begins with ./ or ../. // path.Clean will discard the ./ but not the ../. // We need to preserve the ./ for pattern matching // and in the returned import paths. prefix := "" if strings.HasPrefix(pattern, "./") { prefix = "./" } match := matchPattern(pattern) var pkgs []string filepath.Walk(dir, func(path string, fi os.FileInfo, err error) error { if err != nil || !fi.IsDir() { return nil } if path == dir { // filepath.Walk starts at dir and recurses. For the recursive case, // the path is the result of filepath.Join, which calls filepath.Clean. // The initial case is not Cleaned, though, so we do this explicitly. // // This converts a path like "./io/" to "io". Without this step, running // "cd $GOROOT/src/pkg; go list ./io/..." would incorrectly skip the io // package, because prepending the prefix "./" to the unclean path would // result in "././io", and match("././io") returns false. path = filepath.Clean(path) } // Avoid .foo, _foo, and testdata directory trees, but do not avoid "." or "..". _, elem := filepath.Split(path) dot := strings.HasPrefix(elem, ".") && elem != "." && elem != ".." if dot || strings.HasPrefix(elem, "_") || elem == "testdata" { return filepath.SkipDir } name := prefix + filepath.ToSlash(path) if !match(name) { return nil } if _, err = build.ImportDir(path, 0); err != nil { if _, noGo := err.(*build.NoGoError); !noGo { log.Print(err) } return nil } pkgs = append(pkgs, name) return nil }) return pkgs } // stringList's arguments should be a sequence of string or []string values. // stringList flattens them into a single []string. func stringList(args ...interface{}) []string { var x []string for _, arg := range args { switch arg := arg.(type) { case []string: x = append(x, arg...) case string: x = append(x, arg) default: panic("stringList: invalid argument") } } return x } // toFold returns a string with the property that // strings.EqualFold(s, t) iff toFold(s) == toFold(t) // This lets us test a large set of strings for fold-equivalent // duplicates without making a quadratic number of calls // to EqualFold. Note that strings.ToUpper and strings.ToLower // have the desired property in some corner cases. func toFold(s string) string { // Fast path: all ASCII, no upper case. // Most paths look like this already. for i := 0; i < len(s); i++ { c := s[i] if c >= utf8.RuneSelf || 'A' <= c && c <= 'Z' { goto Slow } } return s Slow: var buf bytes.Buffer for _, r := range s { // SimpleFold(x) cycles to the next equivalent rune > x // or wraps around to smaller values. Iterate until it wraps, // and we've found the minimum value. for { r0 := r r = unicode.SimpleFold(r0) if r <= r0 { break } } // Exception to allow fast path above: A-Z => a-z if 'A' <= r && r <= 'Z' { r += 'a' - 'A' } buf.WriteRune(r) } return buf.String() } // foldDup reports a pair of strings from the list that are // equal according to strings.EqualFold. // It returns "", "" if there are no such strings. func foldDup(list []string) (string, string) { clash := map[string]string{} for _, s := range list { fold := toFold(s) if t := clash[fold]; t != "" { if s > t { s, t = t, s } return s, t } clash[fold] = s } return "", "" } go/src/cmd/go/match_test.go0100644000000000000000000000446612412656734016127 0ustar00rootroot00000000000000// 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 import "testing" var matchPatternTests = []stringPairTest{ {"...", "foo", true}, {"net", "net", true}, {"net", "net/http", false}, {"net/http", "net", false}, {"net/http", "net/http", true}, {"net...", "netchan", true}, {"net...", "net", true}, {"net...", "net/http", true}, {"net...", "not/http", false}, {"net/...", "netchan", false}, {"net/...", "net", true}, {"net/...", "net/http", true}, {"net/...", "not/http", false}, } func TestMatchPattern(t *testing.T) { testStringPairs(t, "matchPattern", matchPatternTests, func(pattern, name string) bool { return matchPattern(pattern)(name) }) } var treeCanMatchPatternTests = []stringPairTest{ {"...", "foo", true}, {"net", "net", true}, {"net", "net/http", false}, {"net/http", "net", true}, {"net/http", "net/http", true}, {"net...", "netchan", true}, {"net...", "net", true}, {"net...", "net/http", true}, {"net...", "not/http", false}, {"net/...", "netchan", false}, {"net/...", "net", true}, {"net/...", "net/http", true}, {"net/...", "not/http", false}, {"abc.../def", "abcxyz", true}, {"abc.../def", "xyxabc", false}, {"x/y/z/...", "x", true}, {"x/y/z/...", "x/y", true}, {"x/y/z/...", "x/y/z", true}, {"x/y/z/...", "x/y/z/w", true}, {"x/y/z", "x", true}, {"x/y/z", "x/y", true}, {"x/y/z", "x/y/z", true}, {"x/y/z", "x/y/z/w", false}, {"x/.../y/z", "x/a/b/c", true}, {"x/.../y/z", "y/x/a/b/c", false}, } func TestChildrenCanMatchPattern(t *testing.T) { testStringPairs(t, "treeCanMatchPattern", treeCanMatchPatternTests, func(pattern, name string) bool { return treeCanMatchPattern(pattern)(name) }) } var hasPathPrefixTests = []stringPairTest{ {"abc", "a", false}, {"a/bc", "a", true}, {"a", "a", true}, {"a/bc", "a/", true}, } func TestHasPathPrefix(t *testing.T) { testStringPairs(t, "hasPathPrefix", hasPathPrefixTests, hasPathPrefix) } type stringPairTest struct { in1 string in2 string out bool } func testStringPairs(t *testing.T, name string, tests []stringPairTest, f func(string, string) bool) { for _, tt := range tests { if out := f(tt.in1, tt.in2); out != tt.out { t.Errorf("%s(%q, %q) = %v, want %v", name, tt.in1, tt.in2, out, tt.out) } } } go/src/cmd/go/mkdoc.sh0100755000000000000000000000043212412656734015066 0ustar00rootroot00000000000000#!/bin/sh # 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. go install # So the next line will produce updated documentation. go help documentation > doc.go gofmt -w doc.go go/src/cmd/go/pkg.go0100644000000000000000000006510412412656737014554 0ustar00rootroot00000000000000// Copyright 2011 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 ( "bytes" "errors" "fmt" "go/build" "go/scanner" "go/token" "os" pathpkg "path" "path/filepath" "sort" "strings" "time" "unicode" ) // A Package describes a single package found in a directory. type Package struct { // Note: These fields are part of the go command's public API. // See list.go. It is okay to add fields, but not to change or // remove existing ones. Keep in sync with list.go Dir string `json:",omitempty"` // directory containing package sources ImportPath string `json:",omitempty"` // import path of package in dir Name string `json:",omitempty"` // package name Doc string `json:",omitempty"` // package documentation string Target string `json:",omitempty"` // install path Goroot bool `json:",omitempty"` // is this package found in the Go root? Standard bool `json:",omitempty"` // is this package part of the standard Go library? Stale bool `json:",omitempty"` // would 'go install' do anything for this package? Root string `json:",omitempty"` // Go root or Go path dir containing this package ConflictDir string `json:",omitempty"` // Dir is hidden by this other directory // Source files GoFiles []string `json:",omitempty"` // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles) CgoFiles []string `json:",omitempty"` // .go sources files that import "C" IgnoredGoFiles []string `json:",omitempty"` // .go sources ignored due to build constraints CFiles []string `json:",omitempty"` // .c source files CXXFiles []string `json:",omitempty"` // .cc, .cpp and .cxx source files MFiles []string `json:",omitempty"` // .m source files HFiles []string `json:",omitempty"` // .h, .hh, .hpp and .hxx source files SFiles []string `json:",omitempty"` // .s source files SwigFiles []string `json:",omitempty"` // .swig files SwigCXXFiles []string `json:",omitempty"` // .swigcxx files SysoFiles []string `json:",omitempty"` // .syso system object files added to package // Cgo directives CgoCFLAGS []string `json:",omitempty"` // cgo: flags for C compiler CgoCPPFLAGS []string `json:",omitempty"` // cgo: flags for C preprocessor CgoCXXFLAGS []string `json:",omitempty"` // cgo: flags for C++ compiler CgoLDFLAGS []string `json:",omitempty"` // cgo: flags for linker CgoPkgConfig []string `json:",omitempty"` // cgo: pkg-config names // Dependency information Imports []string `json:",omitempty"` // import paths used by this package Deps []string `json:",omitempty"` // all (recursively) imported dependencies // Error information Incomplete bool `json:",omitempty"` // was there an error loading this package or dependencies? Error *PackageError `json:",omitempty"` // error loading this package (not dependencies) DepsErrors []*PackageError `json:",omitempty"` // errors loading dependencies // Test information TestGoFiles []string `json:",omitempty"` // _test.go files in package TestImports []string `json:",omitempty"` // imports from TestGoFiles XTestGoFiles []string `json:",omitempty"` // _test.go files outside package XTestImports []string `json:",omitempty"` // imports from XTestGoFiles // Unexported fields are not part of the public API. build *build.Package pkgdir string // overrides build.PkgDir imports []*Package deps []*Package gofiles []string // GoFiles+CgoFiles+TestGoFiles+XTestGoFiles files, absolute paths sfiles []string allgofiles []string // gofiles + IgnoredGoFiles, absolute paths target string // installed file for this package (may be executable) fake bool // synthesized package forceBuild bool // this package must be rebuilt forceLibrary bool // this package is a library (even if named "main") cmdline bool // defined by files listed on command line local bool // imported via local path (./ or ../) localPrefix string // interpret ./ and ../ imports relative to this prefix exeName string // desired name for temporary executable coverMode string // preprocess Go source files with the coverage tool in this mode coverVars map[string]*CoverVar // variables created by coverage analysis omitDWARF bool // tell linker not to write DWARF information } // CoverVar holds the name of the generated coverage variables targeting the named file. type CoverVar struct { File string // local file name Var string // name of count struct } func (p *Package) copyBuild(pp *build.Package) { p.build = pp p.Dir = pp.Dir p.ImportPath = pp.ImportPath p.Name = pp.Name p.Doc = pp.Doc p.Root = pp.Root p.ConflictDir = pp.ConflictDir // TODO? Target p.Goroot = pp.Goroot p.Standard = p.Goroot && p.ImportPath != "" && !strings.Contains(p.ImportPath, ".") p.GoFiles = pp.GoFiles p.CgoFiles = pp.CgoFiles p.IgnoredGoFiles = pp.IgnoredGoFiles p.CFiles = pp.CFiles p.CXXFiles = pp.CXXFiles p.MFiles = pp.MFiles p.HFiles = pp.HFiles p.SFiles = pp.SFiles p.SwigFiles = pp.SwigFiles p.SwigCXXFiles = pp.SwigCXXFiles p.SysoFiles = pp.SysoFiles p.CgoCFLAGS = pp.CgoCFLAGS p.CgoCPPFLAGS = pp.CgoCPPFLAGS p.CgoCXXFLAGS = pp.CgoCXXFLAGS p.CgoLDFLAGS = pp.CgoLDFLAGS p.CgoPkgConfig = pp.CgoPkgConfig p.Imports = pp.Imports p.TestGoFiles = pp.TestGoFiles p.TestImports = pp.TestImports p.XTestGoFiles = pp.XTestGoFiles p.XTestImports = pp.XTestImports } // A PackageError describes an error loading information about a package. type PackageError struct { ImportStack []string // shortest path from package named on command line to this one Pos string // position of error Err string // the error itself isImportCycle bool // the error is an import cycle hard bool // whether the error is soft or hard; soft errors are ignored in some places } func (p *PackageError) Error() string { // Import cycles deserve special treatment. if p.isImportCycle { return fmt.Sprintf("%s\npackage %s\n", p.Err, strings.Join(p.ImportStack, "\n\timports ")) } if p.Pos != "" { // Omit import stack. The full path to the file where the error // is the most important thing. return p.Pos + ": " + p.Err } if len(p.ImportStack) == 0 { return p.Err } return "package " + strings.Join(p.ImportStack, "\n\timports ") + ": " + p.Err } // An importStack is a stack of import paths. type importStack []string func (s *importStack) push(p string) { *s = append(*s, p) } func (s *importStack) pop() { *s = (*s)[0 : len(*s)-1] } func (s *importStack) copy() []string { return append([]string{}, *s...) } // shorterThan returns true if sp is shorter than t. // We use this to record the shortest import sequence // that leads to a particular package. func (sp *importStack) shorterThan(t []string) bool { s := *sp if len(s) != len(t) { return len(s) < len(t) } // If they are the same length, settle ties using string ordering. for i := range s { if s[i] != t[i] { return s[i] < t[i] } } return false // they are equal } // packageCache is a lookup cache for loadPackage, // so that if we look up a package multiple times // we return the same pointer each time. var packageCache = map[string]*Package{} // reloadPackage is like loadPackage but makes sure // not to use the package cache. func reloadPackage(arg string, stk *importStack) *Package { p := packageCache[arg] if p != nil { delete(packageCache, p.Dir) delete(packageCache, p.ImportPath) } return loadPackage(arg, stk) } // dirToImportPath returns the pseudo-import path we use for a package // outside the Go path. It begins with _/ and then contains the full path // to the directory. If the package lives in c:\home\gopher\my\pkg then // the pseudo-import path is _/c_/home/gopher/my/pkg. // Using a pseudo-import path like this makes the ./ imports no longer // a special case, so that all the code to deal with ordinary imports works // automatically. func dirToImportPath(dir string) string { return pathpkg.Join("_", strings.Map(makeImportValid, filepath.ToSlash(dir))) } func makeImportValid(r rune) rune { // Should match Go spec, compilers, and ../../pkg/go/parser/parser.go:/isValidImport. const illegalChars = `!"#$%&'()*,:;<=>?[\]^{|}` + "`\uFFFD" if !unicode.IsGraphic(r) || unicode.IsSpace(r) || strings.ContainsRune(illegalChars, r) { return '_' } return r } // loadImport scans the directory named by path, which must be an import path, // but possibly a local import path (an absolute file system path or one beginning // with ./ or ../). A local relative path is interpreted relative to srcDir. // It returns a *Package describing the package found in that directory. func loadImport(path string, srcDir string, stk *importStack, importPos []token.Position) *Package { stk.push(path) defer stk.pop() // Determine canonical identifier for this package. // For a local import the identifier is the pseudo-import path // we create from the full directory to the package. // Otherwise it is the usual import path. importPath := path isLocal := build.IsLocalImport(path) if isLocal { importPath = dirToImportPath(filepath.Join(srcDir, path)) } if p := packageCache[importPath]; p != nil { return reusePackage(p, stk) } p := new(Package) p.local = isLocal p.ImportPath = importPath packageCache[importPath] = p // Load package. // Import always returns bp != nil, even if an error occurs, // in order to return partial information. // // TODO: After Go 1, decide when to pass build.AllowBinary here. // See issue 3268 for mistakes to avoid. bp, err := buildContext.Import(path, srcDir, 0) bp.ImportPath = importPath if gobin != "" { bp.BinDir = gobin } p.load(stk, bp, err) if p.Error != nil && len(importPos) > 0 { pos := importPos[0] pos.Filename = shortPath(pos.Filename) p.Error.Pos = pos.String() } return p } // reusePackage reuses package p to satisfy the import at the top // of the import stack stk. If this use causes an import loop, // reusePackage updates p's error information to record the loop. func reusePackage(p *Package, stk *importStack) *Package { // We use p.imports==nil to detect a package that // is in the midst of its own loadPackage call // (all the recursion below happens before p.imports gets set). if p.imports == nil { if p.Error == nil { p.Error = &PackageError{ ImportStack: stk.copy(), Err: "import cycle not allowed", isImportCycle: true, } } p.Incomplete = true } // Don't rewrite the import stack in the error if we have an import cycle. // If we do, we'll lose the path that describes the cycle. if p.Error != nil && !p.Error.isImportCycle && stk.shorterThan(p.Error.ImportStack) { p.Error.ImportStack = stk.copy() } return p } type targetDir int const ( toRoot targetDir = iota // to bin dir inside package root (default) toTool // GOROOT/pkg/tool toBin // GOROOT/bin ) // goTools is a map of Go program import path to install target directory. var goTools = map[string]targetDir{ "cmd/addr2line": toTool, "cmd/api": toTool, "cmd/cgo": toTool, "cmd/fix": toTool, "cmd/link": toTool, "cmd/nm": toTool, "cmd/objdump": toTool, "cmd/pack": toTool, "cmd/yacc": toTool, "code.google.com/p/go.tools/cmd/cover": toTool, "code.google.com/p/go.tools/cmd/godoc": toBin, "code.google.com/p/go.tools/cmd/vet": toTool, } // expandScanner expands a scanner.List error into all the errors in the list. // The default Error method only shows the first error. func expandScanner(err error) error { // Look for parser errors. if err, ok := err.(scanner.ErrorList); ok { // Prepare error with \n before each message. // When printed in something like context: %v // this will put the leading file positions each on // its own line. It will also show all the errors // instead of just the first, as err.Error does. var buf bytes.Buffer for _, e := range err { e.Pos.Filename = shortPath(e.Pos.Filename) buf.WriteString("\n") buf.WriteString(e.Error()) } return errors.New(buf.String()) } return err } var raceExclude = map[string]bool{ "runtime/race": true, "runtime/cgo": true, "cmd/cgo": true, "syscall": true, "errors": true, } var cgoExclude = map[string]bool{ "runtime/cgo": true, } var cgoSyscallExclude = map[string]bool{ "runtime/cgo": true, "runtime/race": true, } // load populates p using information from bp, err, which should // be the result of calling build.Context.Import. func (p *Package) load(stk *importStack, bp *build.Package, err error) *Package { p.copyBuild(bp) // The localPrefix is the path we interpret ./ imports relative to. // Synthesized main packages sometimes override this. p.localPrefix = dirToImportPath(p.Dir) if err != nil { p.Incomplete = true err = expandScanner(err) p.Error = &PackageError{ ImportStack: stk.copy(), Err: err.Error(), } return p } if p.Name == "main" { _, elem := filepath.Split(p.Dir) full := buildContext.GOOS + "_" + buildContext.GOARCH + "/" + elem if buildContext.GOOS != toolGOOS || buildContext.GOARCH != toolGOARCH { // Install cross-compiled binaries to subdirectories of bin. elem = full } if p.build.BinDir != gobin && goTools[p.ImportPath] == toBin { // Override BinDir. // This is from a subrepo but installs to $GOROOT/bin // by default anyway (like godoc). p.target = filepath.Join(gorootBin, elem) } else if p.build.BinDir != "" { // Install to GOBIN or bin of GOPATH entry. p.target = filepath.Join(p.build.BinDir, elem) } if goTools[p.ImportPath] == toTool { // This is for 'go tool'. // Override all the usual logic and force it into the tool directory. p.target = filepath.Join(gorootPkg, "tool", full) } if p.target != "" && buildContext.GOOS == "windows" { p.target += ".exe" } } else if p.local { // Local import turned into absolute path. // No permanent install target. p.target = "" } else { p.target = p.build.PkgObj } importPaths := p.Imports // Packages that use cgo import runtime/cgo implicitly. // Packages that use cgo also import syscall implicitly, // to wrap errno. // Exclude certain packages to avoid circular dependencies. if len(p.CgoFiles) > 0 && (!p.Standard || !cgoExclude[p.ImportPath]) { importPaths = append(importPaths, "runtime/cgo") } if len(p.CgoFiles) > 0 && (!p.Standard || !cgoSyscallExclude[p.ImportPath]) { importPaths = append(importPaths, "syscall") } // Everything depends on runtime, except runtime and unsafe. if !p.Standard || (p.ImportPath != "runtime" && p.ImportPath != "unsafe") { importPaths = append(importPaths, "runtime") // When race detection enabled everything depends on runtime/race. // Exclude certain packages to avoid circular dependencies. if buildRace && (!p.Standard || !raceExclude[p.ImportPath]) { importPaths = append(importPaths, "runtime/race") } } // Build list of full paths to all Go files in the package, // for use by commands like go fmt. p.gofiles = stringList(p.GoFiles, p.CgoFiles, p.TestGoFiles, p.XTestGoFiles) for i := range p.gofiles { p.gofiles[i] = filepath.Join(p.Dir, p.gofiles[i]) } sort.Strings(p.gofiles) p.sfiles = stringList(p.SFiles) for i := range p.sfiles { p.sfiles[i] = filepath.Join(p.Dir, p.sfiles[i]) } sort.Strings(p.sfiles) p.allgofiles = stringList(p.IgnoredGoFiles) for i := range p.allgofiles { p.allgofiles[i] = filepath.Join(p.Dir, p.allgofiles[i]) } p.allgofiles = append(p.allgofiles, p.gofiles...) sort.Strings(p.allgofiles) // Check for case-insensitive collision of input files. // To avoid problems on case-insensitive files, we reject any package // where two different input files have equal names under a case-insensitive // comparison. f1, f2 := foldDup(stringList( p.GoFiles, p.CgoFiles, p.IgnoredGoFiles, p.CFiles, p.CXXFiles, p.MFiles, p.HFiles, p.SFiles, p.SysoFiles, p.SwigFiles, p.SwigCXXFiles, p.TestGoFiles, p.XTestGoFiles, )) if f1 != "" { p.Error = &PackageError{ ImportStack: stk.copy(), Err: fmt.Sprintf("case-insensitive file name collision: %q and %q", f1, f2), } return p } // Build list of imported packages and full dependency list. imports := make([]*Package, 0, len(p.Imports)) deps := make(map[string]bool) for i, path := range importPaths { if path == "C" { continue } p1 := loadImport(path, p.Dir, stk, p.build.ImportPos[path]) if p1.local { if !p.local && p.Error == nil { p.Error = &PackageError{ ImportStack: stk.copy(), Err: fmt.Sprintf("local import %q in non-local package", path), } pos := p.build.ImportPos[path] if len(pos) > 0 { p.Error.Pos = pos[0].String() } } path = p1.ImportPath importPaths[i] = path } deps[path] = true imports = append(imports, p1) for _, dep := range p1.Deps { deps[dep] = true } if p1.Incomplete { p.Incomplete = true } } p.imports = imports p.Deps = make([]string, 0, len(deps)) for dep := range deps { p.Deps = append(p.Deps, dep) } sort.Strings(p.Deps) for _, dep := range p.Deps { p1 := packageCache[dep] if p1 == nil { panic("impossible: missing entry in package cache for " + dep + " imported by " + p.ImportPath) } p.deps = append(p.deps, p1) if p1.Error != nil { p.DepsErrors = append(p.DepsErrors, p1.Error) } } // unsafe is a fake package. if p.Standard && (p.ImportPath == "unsafe" || buildContext.Compiler == "gccgo") { p.target = "" } p.Target = p.target // In the absence of errors lower in the dependency tree, // check for case-insensitive collisions of import paths. if len(p.DepsErrors) == 0 { dep1, dep2 := foldDup(p.Deps) if dep1 != "" { p.Error = &PackageError{ ImportStack: stk.copy(), Err: fmt.Sprintf("case-insensitive import collision: %q and %q", dep1, dep2), } return p } } return p } // usesSwig reports whether the package needs to run SWIG. func (p *Package) usesSwig() bool { return len(p.SwigFiles) > 0 || len(p.SwigCXXFiles) > 0 } // usesCgo reports whether the package needs to run cgo func (p *Package) usesCgo() bool { return len(p.CgoFiles) > 0 } // packageList returns the list of packages in the dag rooted at roots // as visited in a depth-first post-order traversal. func packageList(roots []*Package) []*Package { seen := map[*Package]bool{} all := []*Package{} var walk func(*Package) walk = func(p *Package) { if seen[p] { return } seen[p] = true for _, p1 := range p.imports { walk(p1) } all = append(all, p) } for _, root := range roots { walk(root) } return all } // computeStale computes the Stale flag in the package dag that starts // at the named pkgs (command-line arguments). func computeStale(pkgs ...*Package) { topRoot := map[string]bool{} for _, p := range pkgs { topRoot[p.Root] = true } for _, p := range packageList(pkgs) { p.Stale = isStale(p, topRoot) } } // isStale reports whether package p needs to be rebuilt. func isStale(p *Package, topRoot map[string]bool) bool { if p.Standard && (p.ImportPath == "unsafe" || buildContext.Compiler == "gccgo") { // fake, builtin package return false } if p.Error != nil { return true } // A package without Go sources means we only found // the installed .a file. Since we don't know how to rebuild // it, it can't be stale, even if -a is set. This enables binary-only // distributions of Go packages, although such binaries are // only useful with the specific version of the toolchain that // created them. if len(p.gofiles) == 0 && !p.usesSwig() { return false } if buildA || p.target == "" || p.Stale { return true } // Package is stale if completely unbuilt. var built time.Time if fi, err := os.Stat(p.target); err == nil { built = fi.ModTime() } if built.IsZero() { return true } olderThan := func(file string) bool { fi, err := os.Stat(file) return err != nil || fi.ModTime().After(built) } // Package is stale if a dependency is, or if a dependency is newer. for _, p1 := range p.deps { if p1.Stale || p1.target != "" && olderThan(p1.target) { return true } } // As a courtesy to developers installing new versions of the compiler // frequently, define that packages are stale if they are // older than the compiler, and commands if they are older than // the linker. This heuristic will not work if the binaries are // back-dated, as some binary distributions may do, but it does handle // a very common case. // See issue 3036. // Assume code in $GOROOT is up to date, since it may not be writeable. // See issue 4106. if p.Root != goroot { if olderThan(buildToolchain.compiler()) { return true } if p.build.IsCommand() && olderThan(buildToolchain.linker()) { return true } } // Have installed copy, probably built using current compilers, // and built after its imported packages. The only reason now // that we'd have to rebuild it is if the sources were newer than // the package. If a package p is not in the same tree as any // package named on the command-line, assume it is up-to-date // no matter what the modification times on the source files indicate. // This avoids rebuilding $GOROOT packages when people are // working outside the Go root, and it effectively makes each tree // listed in $GOPATH a separate compilation world. // See issue 3149. if p.Root != "" && !topRoot[p.Root] { return false } srcs := stringList(p.GoFiles, p.CFiles, p.CXXFiles, p.MFiles, p.HFiles, p.SFiles, p.CgoFiles, p.SysoFiles, p.SwigFiles, p.SwigCXXFiles) for _, src := range srcs { if olderThan(filepath.Join(p.Dir, src)) { return true } } return false } var cwd, _ = os.Getwd() var cmdCache = map[string]*Package{} // loadPackage is like loadImport but is used for command-line arguments, // not for paths found in import statements. In addition to ordinary import paths, // loadPackage accepts pseudo-paths beginning with cmd/ to denote commands // in the Go command directory, as well as paths to those directories. func loadPackage(arg string, stk *importStack) *Package { if build.IsLocalImport(arg) { dir := arg if !filepath.IsAbs(dir) { if abs, err := filepath.Abs(dir); err == nil { // interpret relative to current directory dir = abs } } if sub, ok := hasSubdir(gorootSrc, dir); ok && strings.HasPrefix(sub, "cmd/") && !strings.Contains(sub[4:], "/") { arg = sub } } if strings.HasPrefix(arg, "cmd/") { if p := cmdCache[arg]; p != nil { return p } stk.push(arg) defer stk.pop() if strings.Contains(arg[4:], "/") { p := &Package{ Error: &PackageError{ ImportStack: stk.copy(), Err: fmt.Sprintf("invalid import path: cmd/... is reserved for Go commands"), hard: true, }, } return p } bp, err := buildContext.ImportDir(filepath.Join(gorootSrc, arg), 0) bp.ImportPath = arg bp.Goroot = true bp.BinDir = gorootBin if gobin != "" { bp.BinDir = gobin } bp.Root = goroot bp.SrcRoot = gorootSrc p := new(Package) cmdCache[arg] = p p.load(stk, bp, err) if p.Error == nil && p.Name != "main" { p.Error = &PackageError{ ImportStack: stk.copy(), Err: fmt.Sprintf("expected package main but found package %s in %s", p.Name, p.Dir), } } return p } // Wasn't a command; must be a package. // If it is a local import path but names a standard package, // we treat it as if the user specified the standard package. // This lets you run go test ./ioutil in package io and be // referring to io/ioutil rather than a hypothetical import of // "./ioutil". if build.IsLocalImport(arg) { bp, _ := buildContext.ImportDir(filepath.Join(cwd, arg), build.FindOnly) if bp.ImportPath != "" && bp.ImportPath != "." { arg = bp.ImportPath } } return loadImport(arg, cwd, stk, nil) } // packages returns the packages named by the // command line arguments 'args'. If a named package // cannot be loaded at all (for example, if the directory does not exist), // then packages prints an error and does not include that // package in the results. However, if errors occur trying // to load dependencies of a named package, the named // package is still returned, with p.Incomplete = true // and details in p.DepsErrors. func packages(args []string) []*Package { var pkgs []*Package for _, pkg := range packagesAndErrors(args) { if pkg.Error != nil { errorf("can't load package: %s", pkg.Error) continue } pkgs = append(pkgs, pkg) } return pkgs } // packagesAndErrors is like 'packages' but returns a // *Package for every argument, even the ones that // cannot be loaded at all. // The packages that fail to load will have p.Error != nil. func packagesAndErrors(args []string) []*Package { if len(args) > 0 && strings.HasSuffix(args[0], ".go") { return []*Package{goFilesPackage(args)} } args = importPaths(args) var pkgs []*Package var stk importStack var set = make(map[string]bool) for _, arg := range args { if !set[arg] { pkgs = append(pkgs, loadPackage(arg, &stk)) set[arg] = true } } computeStale(pkgs...) return pkgs } // packagesForBuild is like 'packages' but fails if any of // the packages or their dependencies have errors // (cannot be built). func packagesForBuild(args []string) []*Package { pkgs := packagesAndErrors(args) printed := map[*PackageError]bool{} for _, pkg := range pkgs { if pkg.Error != nil { errorf("can't load package: %s", pkg.Error) } for _, err := range pkg.DepsErrors { // Since these are errors in dependencies, // the same error might show up multiple times, // once in each package that depends on it. // Only print each once. if !printed[err] { printed[err] = true errorf("%s", err) } } } exitIfErrors() return pkgs } // hasSubdir reports whether dir is a subdirectory of // (possibly multiple levels below) root. // If so, it sets rel to the path fragment that must be // appended to root to reach dir. func hasSubdir(root, dir string) (rel string, ok bool) { if p, err := filepath.EvalSymlinks(root); err == nil { root = p } if p, err := filepath.EvalSymlinks(dir); err == nil { dir = p } const sep = string(filepath.Separator) root = filepath.Clean(root) if !strings.HasSuffix(root, sep) { root += sep } dir = filepath.Clean(dir) if !strings.HasPrefix(dir, root) { return "", false } return filepath.ToSlash(dir[len(root):]), true } go/src/cmd/go/pkg_test.go0100644000000000000000000000370412412656734015606 0ustar00rootroot00000000000000// 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. package main import ( "reflect" "strings" "testing" ) var foldDupTests = []struct { list []string f1, f2 string }{ {stringList("math/rand", "math/big"), "", ""}, {stringList("math", "strings"), "", ""}, {stringList("strings"), "", ""}, {stringList("strings", "strings"), "strings", "strings"}, {stringList("Rand", "rand", "math", "math/rand", "math/Rand"), "Rand", "rand"}, } func TestFoldDup(t *testing.T) { for _, tt := range foldDupTests { f1, f2 := foldDup(tt.list) if f1 != tt.f1 || f2 != tt.f2 { t.Errorf("foldDup(%q) = %q, %q, want %q, %q", tt.list, f1, f2, tt.f1, tt.f2) } } } var parseMetaGoImportsTests = []struct { in string out []metaImport }{ { ``, []metaImport{{"foo/bar", "git", "https://github.com/rsc/foo/bar"}}, }, { ` `, []metaImport{ {"foo/bar", "git", "https://github.com/rsc/foo/bar"}, {"baz/quux", "git", "http://github.com/rsc/baz/quux"}, }, }, { ` `, []metaImport{{"foo/bar", "git", "https://github.com/rsc/foo/bar"}}, }, { ` `, []metaImport{{"foo/bar", "git", "https://github.com/rsc/foo/bar"}}, }, } func TestParseMetaGoImports(t *testing.T) { for i, tt := range parseMetaGoImportsTests { out, err := parseMetaGoImports(strings.NewReader(tt.in)) if err != nil { t.Errorf("test#%d: %v", i, err) continue } if !reflect.DeepEqual(out, tt.out) { t.Errorf("test#%d:\n\thave %q\n\twant %q", i, out, tt.out) } } } go/src/cmd/go/run.go0100644000000000000000000000734512412656734014577 0ustar00rootroot00000000000000// Copyright 2011 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 ( "fmt" "os" "os/exec" "runtime" "strings" ) var execCmd []string // -exec flag, for run and test func findExecCmd() []string { if execCmd != nil { return execCmd } execCmd = []string{} // avoid work the second time if goos == runtime.GOOS && goarch == runtime.GOARCH { return execCmd } path, err := exec.LookPath(fmt.Sprintf("go_%s_%s_exec", goos, goarch)) if err == nil { execCmd = []string{path} } return execCmd } var cmdRun = &Command{ UsageLine: "run [build flags] [-exec xprog] gofiles... [arguments...]", Short: "compile and run Go program", Long: ` 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 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, for example 'go_nacl_386_exec a.out arguments...'. This allows execution of cross-compiled programs when a simulator or other execution method is available. For more about build flags, see 'go help build'. See also: go build. `, } func init() { cmdRun.Run = runRun // break init loop addBuildFlags(cmdRun) cmdRun.Flag.Var((*stringsFlag)(&execCmd), "exec", "") } func printStderr(args ...interface{}) (int, error) { return fmt.Fprint(os.Stderr, args...) } func runRun(cmd *Command, args []string) { raceInit() var b builder b.init() b.print = printStderr i := 0 for i < len(args) && strings.HasSuffix(args[i], ".go") { i++ } files, cmdArgs := args[:i], args[i:] if len(files) == 0 { fatalf("go run: no go files listed") } for _, file := range files { if strings.HasSuffix(file, "_test.go") { // goFilesPackage is going to assign this to TestGoFiles. // Reject since it won't be part of the build. fatalf("go run: cannot run *_test.go files (%s)", file) } } p := goFilesPackage(files) if p.Error != nil { fatalf("%s", p.Error) } p.omitDWARF = true for _, err := range p.DepsErrors { errorf("%s", err) } exitIfErrors() if p.Name != "main" { fatalf("go run: cannot run non-main package") } p.target = "" // must build - not up to date var src string if len(p.GoFiles) > 0 { src = p.GoFiles[0] } else if len(p.CgoFiles) > 0 { src = p.CgoFiles[0] } else { // this case could only happen if the provided source uses cgo // while cgo is disabled. hint := "" if !buildContext.CgoEnabled { hint = " (cgo is disabled)" } fatalf("go run: no suitable source files%s", hint) } p.exeName = src[:len(src)-len(".go")] // name temporary executable for first go file a1 := b.action(modeBuild, modeBuild, p) a := &action{f: (*builder).runProgram, args: cmdArgs, deps: []*action{a1}} b.do(a) } // runProgram is the action for running a binary that has already // been compiled. We ignore exit status. func (b *builder) runProgram(a *action) error { cmdline := stringList(findExecCmd(), a.deps[0].target, a.args) if buildN || buildX { b.showcmd("", "%s", strings.Join(cmdline, " ")) if buildN { return nil } } runStdin(cmdline) return nil } // runStdin is like run, but connects Stdin. func runStdin(cmdline []string) { cmd := exec.Command(cmdline[0], cmdline[1:]...) cmd.Stdin = os.Stdin cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr startSigHandlers() if err := cmd.Run(); err != nil { errorf("%v", err) } } go/src/cmd/go/script0100755000000000000000000000043112412656734014663 0ustar00rootroot00000000000000#!/bin/sh x() { echo '--- ' "$@" "$@" echo '---' echo } x go help x go help build x go help clean x go help install x go help fix x go help fmt x go help get x go help list x go help test x go help version x go help vet x go help gopath x go help importpath x go help remote go/src/cmd/go/script.txt0100644000000000000000000002442712412656734015511 0ustar00rootroot00000000000000--- go help usage: go command [arguments] go manages Go source code. The commands are: build compile and install packages and dependencies clean remove intermediate objects fix run gofix on packages fmt run gofmt -w on packages get download and install packages and dependencies install install packages and dependencies list list packages test test packages version print Go version vet run govet on packages Use "go help [command]" for more information about a command. Additional help topics: gopath GOPATH environment variable importpath description of import paths remote remote import path syntax Use "go help [topic]" for more information about that topic. --- --- go help build usage: go build [-n] [-v] [importpath...] Build compiles the packages named by the import paths, along with their dependencies, but it does not install the results. The -n flag prints the commands but does not run them. The -v flag prints the commands. For more about import paths, see 'go help importpath'. See also: go install, go get, go clean. --- --- go help clean usage: go clean [-nuke] [importpath...] Clean removes intermediate object files generated during the compilation of the packages named by the import paths, but by default it does not remove the installed package binaries. The -nuke flag causes clean to remove the installed package binaries too. TODO: Clean does not clean dependencies of the packages. For more about import paths, see 'go help importpath'. --- --- go help install usage: go install [-n] [-v] [importpath...] Install compiles and installs the packages named by the import paths, along with their dependencies. The -n flag prints the commands but does not run them. The -v flag prints the commands. For more about import paths, see 'go help importpath'. See also: go build, go get, go clean. --- --- go help fix usage: go fix [importpath...] Fix runs the gofix command on the packages named by the import paths. For more about gofix, see 'godoc gofix'. For more about import paths, see 'go help importpath'. To run gofix with specific options, run gofix itself. See also: go fmt, go vet. --- --- go help fmt usage: go fmt [importpath...] Fmt runs the command 'gofmt -w' on the packages named by the import paths. For more about gofmt, see 'godoc gofmt'. For more about import paths, see 'go help importpath'. To run gofmt with specific options, run gofmt itself. See also: go fix, go vet. --- --- go help get usage: go get [importpath...] Get downloads and installs the packages named by the import paths, along with their dependencies. After downloading the code, 'go get' looks for a tag beginning with "go." that corresponds to the local Go version. For Go "release.r58" it looks for a tag named "go.r58". For "weekly.2011-06-03" it looks for "go.weekly.2011-06-03". If the specific "go.X" tag is not found, it uses the latest earlier version it can find. Otherwise, it uses the default version for the version control system: HEAD for git, tip for Mercurial, and so on. TODO: Explain versions better. For more about import paths, see 'go help importpath'. For more about how 'go get' finds source code to download, see 'go help remote'. See also: go build, go install, go clean. --- --- go help list usage: go list [-f format] [-json] [importpath...] List lists the packages named by the import paths. The default output shows the package name and file system location: books /home/you/src/google-api-go-client.googlecode.com/hg/books/v1 oauth /home/you/src/goauth2.googlecode.com/hg/oauth sqlite /home/you/src/gosqlite.googlecode.com/hg/sqlite The -f flag specifies an alternate format for the list, using the syntax of package template. The default output is equivalent to -f '{{.Name}} {{.Dir}}' The struct being passed to the template is: type Package struct { Name string // package name Doc string // package documentation string GoFiles []string // names of Go source files in package ImportPath string // import path denoting package Imports []string // import paths used by this package Deps []string // all (recursively) imported dependencies Dir string // directory containing package sources Version string // version of installed package } The -json flag causes the package data to be printed in JSON format. For more about import paths, see 'go help importpath'. --- --- go help test usage: go test [importpath...] Test runs gotest to test the packages named by the import paths. It prints a summary of the test results in the format: test archive/tar FAIL archive/zip test compress/gzip ... followed by gotest output for each failed package. For more about import paths, see 'go help importpath'. See also: go build, go compile, go vet. --- --- go help version usage: go version Version prints the Go version, as reported by runtime.Version. --- --- go help vet usage: go vet [importpath...] Vet runs the govet command on the packages named by the import paths. For more about govet, see 'godoc govet'. For more about import paths, see 'go help importpath'. To run govet with specific options, run govet itself. See also: go fmt, go fix. --- --- go help gopath The GOPATH environment variable lists places to look for Go code. On Unix, the value is a colon-separated string. On Windows, the value is a semicolon-separated string. On Plan 9, the value is a list. GOPATH must be set to build and install packages outside the standard Go tree. Each directory listed in GOPATH must have a prescribed structure: The src/ directory holds source code. The path below 'src' determines the import path or executable name. 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). 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. 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 so that you can add DIR/bin to your PATH to get at the installed commands. Here's an example directory layout: GOPATH=/home/user/gocode /home/user/gocode/ src/ foo/ bar/ (go code in package bar) x.go quux/ (go code in package main) y.go bin/ quux (installed command) pkg/ linux_amd64/ foo/ bar.a (installed package object) Go searches each directory listed in GOPATH to find source code, but new packages are always downloaded into the first directory in the list. --- --- go help importpath Many commands apply to a set of packages named by import paths: go action [importpath...] An import path that is a rooted path or that begins with a . or .. element is interpreted as a file system path and denotes the package in that directory. Otherwise, the import path P denotes the package found in the directory DIR/src/P for some DIR listed in the GOPATH environment variable (see 'go help gopath'). If no import paths are given, the action applies to the package in the current directory. The special import path "all" expands to all package directories found in all the GOPATH trees. For example, 'go list all' lists all the packages on the local system. An import path can also name a package to be downloaded from a remote repository. Run 'go help remote' for details. Every package in a program must have a unique import path. By convention, this is arranged by starting each path with a unique prefix that belongs to you. For example, paths used internally at Google all begin with 'google', and paths denoting remote repositories begin with the path to the code, such as 'project.googlecode.com/'. --- --- go help remote An import path (see 'go help importpath') denotes a package stored in the local file system. Certain import paths also describe how to obtain the source code for the package using a revision control system. A few common code hosting sites have special syntax: BitBucket (Mercurial) import "bitbucket.org/user/project" import "bitbucket.org/user/project/sub/directory" GitHub (Git) import "github.com/user/project" import "github.com/user/project/sub/directory" Google Code Project Hosting (Git, Mercurial, Subversion) import "project.googlecode.com/git" import "project.googlecode.com/git/sub/directory" import "project.googlecode.com/hg" import "project.googlecode.com/hg/sub/directory" import "project.googlecode.com/svn/trunk" import "project.googlecode.com/svn/trunk/sub/directory" Launchpad (Bazaar) import "launchpad.net/project" import "launchpad.net/project/series" import "launchpad.net/project/series/sub/directory" import "launchpad.net/~user/project/branch" import "launchpad.net/~user/project/branch/sub/directory" For code hosted on other servers, an import path of the form repository.vcs/path specifies the given repository, with or without the .vcs suffix, using the named version control system, and then the path inside that repository. The supported version control systems are: Bazaar .bzr Git .git Mercurial .hg Subversion .svn For example, import "example.org/user/foo.hg" denotes the root directory of the Mercurial repository at example.org/user/foo or foo.hg, and import "example.org/repo.git/foo/bar" denotes the foo/bar directory of the Git repository at example.com/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://. New downloaded packages are written to the first directory listed in the GOPATH environment variable (see 'go help gopath'). The go command attempts to download the version of the package appropriate for the Go release being used. Run 'go help install' for more. --- go/src/cmd/go/signal.go0100644000000000000000000000117412412656734015242 0ustar00rootroot00000000000000// 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 import ( "os" "os/signal" "sync" ) // interrupted is closed, if go process is interrupted. var interrupted = make(chan struct{}) // processSignals setups signal handler. func processSignals() { sig := make(chan os.Signal) signal.Notify(sig, signalsToIgnore...) go func() { <-sig close(interrupted) }() } var onceProcessSignals sync.Once // startSigHandlers start signal handlers. func startSigHandlers() { onceProcessSignals.Do(processSignals) } go/src/cmd/go/signal_notunix.go0100644000000000000000000000060112412656734017020 0ustar00rootroot00000000000000// 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. // +build plan9 windows package main import ( "os" ) var signalsToIgnore = []os.Signal{os.Interrupt} // signalTrace is the signal to send to make a Go program // crash with a stack trace. var signalTrace os.Signal = nil go/src/cmd/go/signal_unix.go0100644000000000000000000000072612412656734016307 0ustar00rootroot00000000000000// 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. // +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris package main import ( "os" "syscall" ) var signalsToIgnore = []os.Signal{os.Interrupt, syscall.SIGQUIT} // signalTrace is the signal to send to make a Go program // crash with a stack trace. var signalTrace os.Signal = syscall.SIGQUIT go/src/cmd/go/tag_test.go0100644000000000000000000000426112412656734015577 0ustar00rootroot00000000000000// Copyright 2011 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 "testing" var selectTagTestTags = []string{ "go.r58", "go.r58.1", "go.r59", "go.r59.1", "go.r61", "go.r61.1", "go.weekly.2010-01-02", "go.weekly.2011-10-12", "go.weekly.2011-10-12.1", "go.weekly.2011-10-14", "go.weekly.2011-11-01", "go1", "go1.0.1", "go1.999", "go1.9.2", "go5", // these should be ignored: "release.r59", "release.r59.1", "release", "weekly.2011-10-12", "weekly.2011-10-12.1", "weekly", "foo", "bar", "go.f00", "go!r60", "go.1999-01-01", "go.2x", "go.20000000000000", "go.2.", "go.2.0", "go2x", "go20000000000000", "go2.", "go2.0", } var selectTagTests = []struct { version string selected string }{ /* {"release.r57", ""}, {"release.r58.2", "go.r58.1"}, {"release.r59", "go.r59"}, {"release.r59.1", "go.r59.1"}, {"release.r60", "go.r59.1"}, {"release.r60.1", "go.r59.1"}, {"release.r61", "go.r61"}, {"release.r66", "go.r61.1"}, {"weekly.2010-01-01", ""}, {"weekly.2010-01-02", "go.weekly.2010-01-02"}, {"weekly.2010-01-02.1", "go.weekly.2010-01-02"}, {"weekly.2010-01-03", "go.weekly.2010-01-02"}, {"weekly.2011-10-12", "go.weekly.2011-10-12"}, {"weekly.2011-10-12.1", "go.weekly.2011-10-12.1"}, {"weekly.2011-10-13", "go.weekly.2011-10-12.1"}, {"weekly.2011-10-14", "go.weekly.2011-10-14"}, {"weekly.2011-10-14.1", "go.weekly.2011-10-14"}, {"weekly.2011-11-01", "go.weekly.2011-11-01"}, {"weekly.2014-01-01", "go.weekly.2011-11-01"}, {"weekly.3000-01-01", "go.weekly.2011-11-01"}, {"go1", "go1"}, {"go1.1", "go1.0.1"}, {"go1.998", "go1.9.2"}, {"go1.1000", "go1.999"}, {"go6", "go5"}, // faulty versions: {"release.f00", ""}, {"weekly.1999-01-01", ""}, {"junk", ""}, {"", ""}, {"go2x", ""}, {"go200000000000", ""}, {"go2.", ""}, {"go2.0", ""}, */ {"anything", "go1"}, } func TestSelectTag(t *testing.T) { for _, c := range selectTagTests { selected := selectTag(c.version, selectTagTestTags) if selected != c.selected { t.Errorf("selectTag(%q) = %q, want %q", c.version, selected, c.selected) } } } go/src/cmd/go/test.bash0100755000000000000000000005557212412656737015275 0ustar00rootroot00000000000000#!/bin/bash # 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. set -e go build -o testgo go() { echo TEST ERROR: ran go, not testgo: go "$@" >&2 exit 2 } started=false TEST() { if $started; then stop fi echo TEST: "$@" started=true ok=true } stop() { if ! $started; then echo TEST ERROR: stop missing start >&2 exit 2 fi started=false if $ok; then echo PASS else echo FAIL allok=false fi } ok=true allok=true unset GOBIN unset GOPATH unset GOROOT TEST 'file:line in error messages' # Test that error messages have file:line information at beginning of # the line. Also test issue 4917: that the error is on stderr. d=$(TMPDIR=/var/tmp mktemp -d -t testgoXXX) fn=$d/err.go echo "package main" > $fn echo 'import "bar"' >> $fn ./testgo run $fn 2>$d/err.out || true if ! grep -q "^$fn:" $d/err.out; then echo "missing file:line in error message" cat $d/err.out ok=false fi rm -r $d # Test local (./) imports. testlocal() { local="$1" TEST local imports $2 '(easy)' ./testgo build -o hello "testdata/$local/easy.go" ./hello >hello.out if ! grep -q '^easysub\.Hello' hello.out; then echo "testdata/$local/easy.go did not generate expected output" cat hello.out ok=false fi TEST local imports $2 '(easysub)' ./testgo build -o hello "testdata/$local/easysub/main.go" ./hello >hello.out if ! grep -q '^easysub\.Hello' hello.out; then echo "testdata/$local/easysub/main.go did not generate expected output" cat hello.out ok=false fi TEST local imports $2 '(hard)' ./testgo build -o hello "testdata/$local/hard.go" ./hello >hello.out if ! grep -q '^sub\.Hello' hello.out || ! grep -q '^subsub\.Hello' hello.out ; then echo "testdata/$local/hard.go did not generate expected output" cat hello.out ok=false fi rm -f hello.out hello # Test that go install x.go fails. TEST local imports $2 '(go install should fail)' if ./testgo install "testdata/$local/easy.go" >/dev/null 2>&1; then echo "go install testdata/$local/easy.go succeeded" ok=false fi } # Test local imports testlocal local '' # Test local imports again, with bad characters in the directory name. bad='#$%:, &()*;<=>?\^{}' rm -rf "testdata/$bad" cp -R testdata/local "testdata/$bad" testlocal "$bad" 'with bad characters in path' rm -rf "testdata/$bad" TEST error message for syntax error in test go file says FAIL export GOPATH=$(pwd)/testdata if ./testgo test syntaxerror 2>testdata/err; then echo 'go test syntaxerror succeeded' ok=false elif ! grep FAIL testdata/err >/dev/null; then echo 'go test did not say FAIL:' cat testdata/err ok=false fi rm -f ./testdata/err unset GOPATH TEST wildcards do not look in useless directories export GOPATH=$(pwd)/testdata if ./testgo list ... >testdata/err 2>&1; then echo "go list ... succeeded" ok=false elif ! grep badpkg testdata/err >/dev/null; then echo "go list ... failure does not mention badpkg" cat testdata/err ok=false elif ! ./testgo list m... >testdata/err 2>&1; then echo "go list m... failed" ok=false fi rm -rf ./testdata/err unset GOPATH # Test tests with relative imports. TEST relative imports '(go test)' if ! ./testgo test ./testdata/testimport; then echo "go test ./testdata/testimport failed" ok=false fi # Test installation with relative imports. TEST relative imports '(go test -i)' if ! ./testgo test -i ./testdata/testimport; then echo "go test -i ./testdata/testimport failed" ok=false fi # Test tests with relative imports in packages synthesized # from Go files named on the command line. TEST relative imports in command-line package if ! ./testgo test ./testdata/testimport/*.go; then echo "go test ./testdata/testimport/*.go failed" ok=false fi TEST version control error message includes correct directory export GOPATH=$(pwd)/testdata/shadow/root1 if ./testgo get -u foo 2>testdata/err; then echo "go get -u foo succeeded unexpectedly" ok=false elif ! grep testdata/shadow/root1/src/foo testdata/err >/dev/null; then echo "go get -u error does not mention shadow/root1/src/foo:" cat testdata/err ok=false fi unset GOPATH TEST go install fails with no buildable files export GOPATH=$(pwd)/testdata export CGO_ENABLED=0 if ./testgo install cgotest 2>testdata/err; then echo "go install cgotest succeeded unexpectedly" elif ! grep 'no buildable Go source files' testdata/err >/dev/null; then echo "go install cgotest did not report 'no buildable Go source files'" cat testdata/err ok=false fi unset CGO_ENABLED unset GOPATH # Test that without $GOBIN set, binaries get installed # into the GOPATH bin directory. TEST install into GOPATH rm -rf testdata/bin if ! GOPATH=$(pwd)/testdata ./testgo install go-cmd-test; then echo "go install go-cmd-test failed" ok=false elif ! test -x testdata/bin/go-cmd-test; then echo "go install go-cmd-test did not write to testdata/bin/go-cmd-test" ok=false fi TEST package main_test imports archive not binary export GOBIN=$(pwd)/testdata/bin mkdir -p $GOBIN export GOPATH=$(pwd)/testdata touch ./testdata/src/main_test/m.go if ! ./testgo test main_test; then echo "go test main_test failed without install" ok=false elif ! ./testgo install main_test; then echo "go test main_test failed" ok=false elif [ "$(./testgo list -f '{{.Stale}}' main_test)" != false ]; then echo "after go install, main listed as stale" ok=false elif ! ./testgo test main_test; then echo "go test main_test failed after install" ok=false fi rm -rf $GOBIN unset GOBIN # And with $GOBIN set, binaries get installed to $GOBIN. TEST install into GOBIN if ! GOBIN=$(pwd)/testdata/bin1 GOPATH=$(pwd)/testdata ./testgo install go-cmd-test; then echo "go install go-cmd-test failed" ok=false elif ! test -x testdata/bin1/go-cmd-test; then echo "go install go-cmd-test did not write to testdata/bin1/go-cmd-test" ok=false fi # Without $GOBIN set, installing a program outside $GOPATH should fail # (there is nowhere to install it). TEST install without destination fails if ./testgo install testdata/src/go-cmd-test/helloworld.go 2>testdata/err; then echo "go install testdata/src/go-cmd-test/helloworld.go should have failed, did not" ok=false elif ! grep 'no install location for .go files listed on command line' testdata/err; then echo "wrong error:" cat testdata/err ok=false fi rm -f testdata/err # With $GOBIN set, should install there. TEST install to GOBIN '(command-line package)' if ! GOBIN=$(pwd)/testdata/bin1 ./testgo install testdata/src/go-cmd-test/helloworld.go; then echo "go install testdata/src/go-cmd-test/helloworld.go failed" ok=false elif ! test -x testdata/bin1/helloworld; then echo "go install testdata/src/go-cmd-test/helloworld.go did not write testdata/bin1/helloworld" ok=false fi TEST godoc installs into GOBIN d=$(mktemp -d -t testgoXXX) export GOPATH=$d mkdir $d/gobin GOBIN=$d/gobin ./testgo get code.google.com/p/go.tools/cmd/godoc if [ ! -x $d/gobin/godoc ]; then echo did not install godoc to '$GOBIN' GOBIN=$d/gobin ./testgo list -f 'Target: {{.Target}}' code.google.com/p/go.tools/cmd/godoc ok=false fi TEST godoc installs into GOROOT GOROOT=$(./testgo env GOROOT) rm -f $GOROOT/bin/godoc ./testgo install code.google.com/p/go.tools/cmd/godoc if [ ! -x $GOROOT/bin/godoc ]; then echo did not install godoc to '$GOROOT/bin' ./testgo list -f 'Target: {{.Target}}' code.google.com/p/go.tools/cmd/godoc ok=false fi TEST cmd/fix installs into tool GOOS=$(./testgo env GOOS) GOARCH=$(./testgo env GOARCH) rm -f $GOROOT/pkg/tool/${GOOS}_${GOARCH}/fix ./testgo install cmd/fix if [ ! -x $GOROOT/pkg/tool/${GOOS}_${GOARCH}/fix ]; then echo 'did not install cmd/fix to $GOROOT/pkg/tool' GOBIN=$d/gobin ./testgo list -f 'Target: {{.Target}}' cmd/fix ok=false fi rm -f $GOROOT/pkg/tool/${GOOS}_${GOARCH}/fix GOBIN=$d/gobin ./testgo install cmd/fix if [ ! -x $GOROOT/pkg/tool/${GOOS}_${GOARCH}/fix ]; then echo 'did not install cmd/fix to $GOROOT/pkg/tool with $GOBIN set' GOBIN=$d/gobin ./testgo list -f 'Target: {{.Target}}' cmd/fix ok=false fi TEST gopath program installs into GOBIN mkdir $d/src/progname echo 'package main; func main() {}' >$d/src/progname/p.go GOBIN=$d/gobin ./testgo install progname if [ ! -x $d/gobin/progname ]; then echo 'did not install progname to $GOBIN/progname' ./testgo list -f 'Target: {{.Target}}' cmd/api ok=false fi rm -f $d/gobin/progname $d/bin/progname TEST gopath program installs into GOPATH/bin ./testgo install progname if [ ! -x $d/bin/progname ]; then echo 'did not install progname to $GOPATH/bin/progname' ./testgo list -f 'Target: {{.Target}}' progname ok=false fi unset GOPATH rm -rf $d # Reject relative paths in GOPATH. TEST reject relative paths in GOPATH '(command-line package)' if GOPATH=. ./testgo build testdata/src/go-cmd-test/helloworld.go; then echo 'GOPATH="." go build should have failed, did not' ok=false fi TEST reject relative paths in GOPATH if GOPATH=:$(pwd)/testdata:. ./testgo build go-cmd-test; then echo 'GOPATH=":$(pwd)/testdata:." go build should have failed, did not' ok=false fi # issue 4104 TEST go test with package listed multiple times if [ $(./testgo test fmt fmt fmt fmt fmt | wc -l) -ne 1 ] ; then echo 'go test fmt fmt fmt fmt fmt tested the same package multiple times' ok=false fi # ensure that output of 'go list' is consistent between runs TEST go list is consistent ./testgo list std > test_std.list if ! ./testgo list std | cmp -s test_std.list - ; then echo "go list std ordering is inconsistent" ok=false fi rm -f test_std.list # issue 4096. Validate the output of unsuccessful go install foo/quxx TEST unsuccessful go install should mention missing package if [ $(./testgo install 'foo/quxx' 2>&1 | grep -c 'cannot find package "foo/quxx" in any of') -ne 1 ] ; then echo 'go install foo/quxx expected error: .*cannot find package "foo/quxx" in any of' ok=false fi # test GOROOT search failure is reported TEST GOROOT search failure reporting if [ $(./testgo install 'foo/quxx' 2>&1 | egrep -c 'foo/quxx \(from \$GOROOT\)$') -ne 1 ] ; then echo 'go install foo/quxx expected error: .*foo/quxx (from $GOROOT)' ok=false fi # test multiple GOPATH entries are reported separately TEST multiple GOPATH entries reported separately if [ $(GOPATH=$(pwd)/testdata/a:$(pwd)/testdata/b ./testgo install 'foo/quxx' 2>&1 | egrep -c 'testdata/./src/foo/quxx') -ne 2 ] ; then echo 'go install foo/quxx expected error: .*testdata/a/src/foo/quxx (from $GOPATH)\n.*testdata/b/src/foo/quxx' ok=false fi # test (from $GOPATH) annotation is reported for the first GOPATH entry TEST mention GOPATH in first GOPATH entry if [ $(GOPATH=$(pwd)/testdata/a:$(pwd)/testdata/b ./testgo install 'foo/quxx' 2>&1 | egrep -c 'testdata/a/src/foo/quxx \(from \$GOPATH\)$') -ne 1 ] ; then echo 'go install foo/quxx expected error: .*testdata/a/src/foo/quxx (from $GOPATH)' ok=false fi # but not on the second TEST but not the second entry if [ $(GOPATH=$(pwd)/testdata/a:$(pwd)/testdata/b ./testgo install 'foo/quxx' 2>&1 | egrep -c 'testdata/b/src/foo/quxx$') -ne 1 ] ; then echo 'go install foo/quxx expected error: .*testdata/b/src/foo/quxx' ok=false fi # test missing GOPATH is reported TEST missing GOPATH is reported if [ $(GOPATH= ./testgo install 'foo/quxx' 2>&1 | egrep -c '\(\$GOPATH not set\)$') -ne 1 ] ; then echo 'go install foo/quxx expected error: ($GOPATH not set)' ok=false fi # issue 4186. go get cannot be used to download packages to $GOROOT # Test that without GOPATH set, go get should fail TEST without GOPATH, go get fails d=$(mktemp -d -t testgoXXX) mkdir -p $d/src/pkg if GOPATH= GOROOT=$d ./testgo get -d code.google.com/p/go.codereview/cmd/hgpatch ; then echo 'go get code.google.com/p/go.codereview/cmd/hgpatch should not succeed with $GOPATH unset' ok=false fi rm -rf $d # Test that with GOPATH=$GOROOT, go get should fail TEST with GOPATH=GOROOT, go get fails d=$(mktemp -d -t testgoXXX) mkdir -p $d/src/pkg if GOPATH=$d GOROOT=$d ./testgo get -d code.google.com/p/go.codereview/cmd/hgpatch ; then echo 'go get code.google.com/p/go.codereview/cmd/hgpatch should not succeed with GOPATH=$GOROOT' ok=false fi rm -rf $d TEST ldflags arguments with spaces '(issue 3941)' d=$(mktemp -d -t testgoXXX) cat >$d/main.go<hello.out if ! grep -q '^hello world' hello.out; then echo "ldflags -X main.extern 'hello world' failed. Output:" cat hello.out ok=false fi rm -rf $d hello.out TEST go test -cpuprofile leaves binary behind ./testgo test -cpuprofile strings.prof strings || ok=false if [ ! -x strings.test ]; then echo "go test -cpuprofile did not create strings.test" ok=false fi rm -f strings.prof strings.test TEST symlinks do not confuse go list '(issue 4568)' old=$(pwd) tmp=$(cd /tmp && pwd -P) d=$(TMPDIR=$tmp mktemp -d -t testgoXXX) mkdir -p $d/src ( ln -s $d $d/src/dir1 cd $d/src echo package p >dir1/p.go export GOPATH=$d if [ "$($old/testgo list -f '{{.Root}}' dir1)" != "$d" ]; then echo Confused by symlinks. echo "Package in current directory $(pwd) should have Root $d" env|grep WD $old/testgo list -json . dir1 touch $d/failed fi ) if [ -f $d/failed ]; then ok=false fi rm -rf $d TEST 'install with tags (issue 4515)' d=$(TMPDIR=/var/tmp mktemp -d -t testgoXXX) mkdir -p $d/src/example/a $d/src/example/b $d/bin cat >$d/src/example/a/main.go <$d/src/example/b/main.go <$d/src/example/a/a.go <$d/src/example/a/pkg/pkg.go <$d/src/example/a/Pkg/pkg.go <$d/out; then echo go list example/a should have failed, did not. ok=false elif ! grep "case-insensitive import collision" $d/out >/dev/null; then echo go list example/a did not report import collision. ok=false fi cat >$d/src/example/b/file.go <$d/src/example/b/FILE.go <$d/out; then echo go list example/b should have failed, did not. ok=false elif ! grep "case-insensitive file name collision" $d/out >/dev/null; then echo go list example/b did not report file name collision. ok=false fi TEST go get cover ./testgo get code.google.com/p/go.tools/cmd/cover || ok=false unset GOPATH rm -rf $d TEST shadowing logic export GOPATH=$(pwd)/testdata/shadow/root1:$(pwd)/testdata/shadow/root2 # The math in root1 is not "math" because the standard math is. cdir=$(./testgo list -f '({{.ImportPath}}) ({{.ConflictDir}})' ./testdata/shadow/root1/src/math) if [ "$cdir" != "(_$(pwd)/testdata/shadow/root1/src/math) ($GOROOT/src/pkg/math)" ]; then echo shadowed math is not shadowed: "$cdir" ok=false fi # The foo in root1 is "foo". cdir=$(./testgo list -f '({{.ImportPath}}) ({{.ConflictDir}})' ./testdata/shadow/root1/src/foo) if [ "$cdir" != "(foo) ()" ]; then echo unshadowed foo is shadowed: "$cdir" ok=false fi # The foo in root2 is not "foo" because the foo in root1 got there first. cdir=$(./testgo list -f '({{.ImportPath}}) ({{.ConflictDir}})' ./testdata/shadow/root2/src/foo) if [ "$cdir" != "(_$(pwd)/testdata/shadow/root2/src/foo) ($(pwd)/testdata/shadow/root1/src/foo)" ]; then echo shadowed foo is not shadowed: "$cdir" ok=false fi # The error for go install should mention the conflicting directory. err=$(! ./testgo install ./testdata/shadow/root2/src/foo 2>&1) if [ "$err" != "go install: no install location for $(pwd)/testdata/shadow/root2/src/foo: hidden by $(pwd)/testdata/shadow/root1/src/foo" ]; then echo wrong shadowed install error: "$err" ok=false fi # Only succeeds if source order is preserved. TEST source file name order preserved ./testgo test testdata/example[12]_test.go || ok=false # Check that coverage analysis works at all. # Don't worry about the exact numbers but require not 0.0%. checkcoverage() { if grep '[^0-9]0\.0%' testdata/cover.txt >/dev/null; then echo 'some coverage results are 0.0%' ok=false fi cat testdata/cover.txt rm -f testdata/cover.txt } TEST coverage runs ./testgo test -short -coverpkg=strings strings regexp >testdata/cover.txt 2>&1 || ok=false ./testgo test -short -cover strings math regexp >>testdata/cover.txt 2>&1 || ok=false checkcoverage # Check that coverage analysis uses set mode. TEST coverage uses set mode if ./testgo test -short -cover encoding/binary -coverprofile=testdata/cover.out >testdata/cover.txt 2>&1; then if ! grep -q 'mode: set' testdata/cover.out; then ok=false fi checkcoverage else ok=false fi rm -f testdata/cover.out testdata/cover.txt TEST coverage uses atomic mode for -race. if ./testgo test -short -race -cover encoding/binary -coverprofile=testdata/cover.out >testdata/cover.txt 2>&1; then if ! grep -q 'mode: atomic' testdata/cover.out; then ok=false fi checkcoverage else ok=false fi rm -f testdata/cover.out TEST coverage uses actual setting to override even for -race. if ./testgo test -short -race -cover encoding/binary -covermode=count -coverprofile=testdata/cover.out >testdata/cover.txt 2>&1; then if ! grep -q 'mode: count' testdata/cover.out; then ok=false fi checkcoverage else ok=false fi rm -f testdata/cover.out TEST coverage with cgo d=$(TMPDIR=/var/tmp mktemp -d -t testgoXXX) ./testgo test -short -cover ./testdata/cgocover >testdata/cover.txt 2>&1 || ok=false checkcoverage TEST cgo depends on syscall rm -rf $GOROOT/pkg/*_race d=$(TMPDIR=/var/tmp mktemp -d -t testgoXXX) export GOPATH=$d mkdir -p $d/src/foo echo ' package foo //#include import "C" ' >$d/src/foo/foo.go ./testgo build -race foo || ok=false rm -rf $d unset GOPATH TEST cgo shows full path names d=$(TMPDIR=/var/tmp mktemp -d -t testgoXXX) export GOPATH=$d mkdir -p $d/src/x/y/dirname echo ' package foo import "C" func f() { ' >$d/src/x/y/dirname/foo.go if ./testgo build x/y/dirname >$d/err 2>&1; then echo build succeeded unexpectedly. ok=false elif ! grep x/y/dirname $d/err >/dev/null; then echo error did not use full path. cat $d/err ok=false fi rm -rf $d unset GOPATH TEST 'cgo handles -Wl,$ORIGIN' d=$(TMPDIR=/var/tmp mktemp -d -t testgoXXX) export GOPATH=$d mkdir -p $d/src/origin echo ' package origin // #cgo !darwin LDFLAGS: -Wl,-rpath -Wl,$ORIGIN // void f(void) {} import "C" func f() { C.f() } ' >$d/src/origin/origin.go if ! ./testgo build origin; then echo build failed ok=false fi rm -rf $d unset GOPATH TEST 'Issue 6480: "go test -c -test.bench=XXX fmt" should not hang' if ! ./testgo test -c -test.bench=XXX fmt; then echo build test failed ok=false fi rm -f fmt.test TEST 'Issue 7573: cmd/cgo: undefined reference when linking a C-library using gccgo' d=$(mktemp -d -t testgoXXX) export GOPATH=$d mkdir -p $d/src/cgoref ldflags="-L alibpath -lalib" echo " package main // #cgo LDFLAGS: $ldflags // void f(void) {} import \"C\" func main() { C.f() } " >$d/src/cgoref/cgoref.go go_cmds="$(./testgo build -n -compiler gccgo cgoref 2>&1 1>/dev/null)" ldflags_count="$(echo "$go_cmds" | egrep -c "^gccgo.*$(echo $ldflags | sed -e 's/-/\\-/g')" || true)" if [ "$ldflags_count" -lt 1 ]; then echo "No Go-inline "#cgo LDFLAGS:" (\"$ldflags\") passed to gccgo linking stage." ok=false fi rm -rf $d unset ldflags_count unset go_cmds unset ldflags unset GOPATH TEST list template can use context function if ! ./testgo list -f "GOARCH: {{context.GOARCH}}"; then echo unable to use context in list template ok=false fi TEST 'Issue 7108: cmd/go: "go test" should fail if package does not build' export GOPATH=$(pwd)/testdata if ./testgo test notest >/dev/null 2>&1; then echo 'go test notest succeeded, but should fail' ok=false fi unset GOPATH TEST 'Issue 6844: cmd/go: go test -a foo does not rebuild regexp' if ! ./testgo test -x -a -c testdata/dep_test.go 2>deplist; then echo "go test -x -a -c testdata/dep_test.go failed" ok=false elif ! grep -q regexp deplist; then echo "go test -x -a -c testdata/dep_test.go did not rebuild regexp" ok=false fi rm -f deplist rm -f deps.test TEST list template can use context function if ! ./testgo list -f "GOARCH: {{context.GOARCH}}"; then echo unable to use context in list template ok=false fi TEST build -i installs dependencies d=$(TMPDIR=/var/tmp mktemp -d -t testgoXXX) export GOPATH=$d mkdir -p $d/src/x/y/foo $d/src/x/y/bar echo ' package foo func F() {} ' >$d/src/x/y/foo/foo.go echo ' package bar import "x/y/foo" func F() { foo.F() } ' >$d/src/x/y/bar/bar.go if ! ./testgo build -v -i x/y/bar &> $d/err; then echo build -i failed cat $d/err ok=false elif ! grep x/y/foo $d/err >/dev/null; then echo first build -i did not build x/y/foo cat $d/err ok=false fi if ! ./testgo build -v -i x/y/bar &> $d/err; then echo second build -i failed cat $d/err ok=false elif grep x/y/foo $d/err >/dev/null; then echo second build -i built x/y/foo cat $d/err ok=false fi rm -rf $d unset GOPATH TEST 'go build in test-only directory fails with a good error' if ./testgo build ./testdata/testonly 2>testdata/err.out; then echo "go build ./testdata/testonly succeeded, should have failed" ok=false elif ! grep 'no buildable Go' testdata/err.out >/dev/null; then echo "go build ./testdata/testonly produced unexpected error:" cat testdata/err.out ok=false fi rm -f testdata/err.out TEST 'go test detects test-only import cycles' export GOPATH=$(pwd)/testdata if ./testgo test -c testcycle/p3 2>testdata/err.out; then echo "go test testcycle/p3 succeeded, should have failed" ok=false elif ! grep 'import cycle not allowed in test' testdata/err.out >/dev/null; then echo "go test testcycle/p3 produced unexpected error:" cat testdata/err.out ok=false fi rm -f testdata/err.out unset GOPATH TEST 'go test foo_test.go works' if ! ./testgo test testdata/standalone_test.go; then echo "go test testdata/standalone_test.go failed" ok=false fi TEST 'go test xtestonly works' export GOPATH=$(pwd)/testdata ./testgo clean -i xtestonly if ! ./testgo test xtestonly >/dev/null; then echo "go test xtestonly failed" ok=false fi unset GOPATH # clean up if $started; then stop; fi rm -rf testdata/bin testdata/bin1 rm -f testgo if $allok; then echo PASS else echo FAIL exit 1 fi go/src/cmd/go/test.go0100644000000000000000000010736212412656737014755 0ustar00rootroot00000000000000// Copyright 2011 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 ( "bytes" "fmt" "go/ast" "go/build" "go/doc" "go/parser" "go/token" "log" "os" "os/exec" "path" "path/filepath" "regexp" "runtime" "sort" "strings" "text/template" "time" "unicode" "unicode/utf8" ) // Break init loop. func init() { cmdTest.Run = runTest } var cmdTest = &Command{ CustomFlags: true, UsageLine: "test [-c] [-i] [build and test flags] [packages] [flags for test binary]", Short: "test packages", Long: ` 'Go test' automates testing the packages named by the import paths. It prints a summary of the test results in the format: ok archive/tar 0.011s FAIL archive/zip 0.022s ok compress/gzip 0.033s ... followed by detailed output for each failed package. 'Go test' recompiles each package along with any files with names matching the file pattern "*_test.go". Files whose names begin with "_" (including "_test.go") or "." are ignored. These additional files can contain test functions, benchmark functions, and example functions. See 'go help testfunc' for more. Each listed package causes the execution of a separate test binary. Test files that declare a package with the suffix "_test" will be compiled as a separate package, and then linked and run with the main test binary. By default, go test needs no arguments. It compiles and tests the package with source in the current directory, including tests, and runs the tests. The package is built in a temporary directory so it does not interfere with the non-test installation. In addition to the build flags, the flags handled by 'go test' itself are: -c Compile the test binary to pkg.test but do not run it. (Where pkg is the last element of the package's import path.) -i Install packages that are dependencies of the test. Do not run the test. -exec xprog Run the test binary using xprog. The behavior is the same as in 'go run'. See 'go help run' for details. 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. 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 a minus sign that it does not recognize itself; that argument and all subsequent arguments are passed as arguments to the test binary. For more about build flags, see 'go help build'. For more about specifying packages, see 'go help packages'. See also: go build, go vet. `, } var helpTestflag = &Command{ UsageLine: "testflag", Short: "description of testing flags", Long: ` The 'go test' command takes both flags that apply to 'go test' itself and flags that apply to the resulting test binary. Several of the flags control profiling and write an execution profile suitable for "go tool pprof"; run "go tool pprof help" for more information. The --alloc_space, --alloc_objects, and --show_bytes options of pprof control how the information is presented. The following flags are recognized by the 'go test' command and control the execution of any test: -bench regexp Run benchmarks matching the regular expression. By default, no benchmarks run. To run all benchmarks, use '-bench .' or '-bench=.'. -benchmem Print memory allocation statistics for benchmarks. -benchtime t Run enough iterations of each benchmark to take t, specified as a time.Duration (for example, -benchtime 1h30s). The default is 1 second (1s). -blockprofile block.out Write a goroutine blocking profile to the specified file when all tests are complete. -blockprofilerate n Control the detail provided in goroutine blocking profiles by calling runtime.SetBlockProfileRate with n. See 'godoc runtime SetBlockProfileRate'. The profiler aims to sample, on average, one blocking event every n nanoseconds the program spends blocked. By default, if -test.blockprofile is set without this flag, all blocking events are recorded, equivalent to -test.blockprofilerate=1. -cover Enable coverage analysis. -covermode set,count,atomic Set the mode for coverage analysis for the package[s] being tested. The default is "set" unless -race is enabled, in which case it is "atomic". The values: set: bool: does this statement run? count: int: how many times does this statement run? atomic: int: count, but correct in multithreaded tests; significantly more expensive. Sets -cover. -coverpkg pkg1,pkg2,pkg3 Apply coverage analysis in each test to the given list of packages. The default is for each test to analyze only the package being tested. Packages are specified as import paths. Sets -cover. -coverprofile cover.out Write a coverage profile to the specified file after all tests have passed. Sets -cover. -cpu 1,2,4 Specify a list of GOMAXPROCS values for which the tests or benchmarks should be executed. The default is the current value of GOMAXPROCS. -cpuprofile cpu.out Write a CPU profile to the specified file before exiting. -memprofile mem.out Write a memory profile to the specified file after all tests have passed. -memprofilerate n Enable more precise (and expensive) memory profiles by setting runtime.MemProfileRate. See 'godoc runtime MemProfileRate'. To profile all memory allocations, use -test.memprofilerate=1 and pass --alloc_space flag to the pprof tool. -outputdir directory Place output files from profiling in the specified directory, by default the directory in which "go test" is running. -parallel n Allow parallel execution of test functions that call t.Parallel. The value of this flag is the maximum number of tests to run simultaneously; by default, it is set to the value of GOMAXPROCS. -run regexp Run only those tests and examples matching the regular expression. -short Tell long-running tests to shorten their run time. It is off by default but set during all.bash so that installing the Go tree can run a sanity check but not spend time running exhaustive tests. -timeout t If a test runs longer than t, panic. -v Verbose output: log all tests as they are run. Also print all text from Log and Logf calls even if the test succeeds. The test binary, called pkg.test where pkg is the name of the directory containing the package sources, can be invoked directly after building it with 'go test -c'. When invoking the test binary directly, each of the standard flag names must be prefixed with 'test.', as in -test.run=TestMyFunc or -test.v. When running 'go test', flags not listed above are passed through unaltered. For instance, the command go test -x -v -cpuprofile=prof.out -dir=testdata -update will compile the test binary and then run it as pkg.test -test.v -test.cpuprofile=prof.out -dir=testdata -update The test flags that generate profiles (other than for coverage) also leave the test binary in pkg.test for use when analyzing the profiles. Flags not recognized by 'go test' must be placed after any specified packages. `, } var helpTestfunc = &Command{ UsageLine: "testfunc", Short: "description of testing functions", Long: ` The 'go test' command expects to find test, benchmark, and example functions in the "*_test.go" files corresponding to the package under test. A test function is one named TestXXX (where XXX is any alphanumeric string not starting with a lower case letter) and should have the signature, func TestXXX(t *testing.T) { ... } A benchmark function is one named BenchmarkXXX and should have the signature, func BenchmarkXXX(b *testing.B) { ... } An example function is similar to a test function but, instead of using *testing.T to report success or failure, prints output to os.Stdout. That output is compared against the function's "Output:" comment, which must be the last comment in the function body (see example below). An example with no such comment, or with no text after "Output:" is compiled but not executed. Godoc displays the body of ExampleXXX to demonstrate the use of the function, constant, or variable XXX. An example of a method M with receiver type T or *T is named ExampleT_M. There may be multiple examples for a given function, constant, or variable, distinguished by a trailing _xxx, where xxx is a suffix not beginning with an upper case letter. Here is an example of an example: func ExamplePrintln() { Println("The output of\nthis example.") // Output: The output of // this example. } The entire test file is presented as the example when it contains a single example function, at least one other function, type, variable, or constant declaration, and no test or benchmark functions. See the documentation of the testing package for more information. `, } var ( testC bool // -c flag testCover bool // -cover flag testCoverMode string // -covermode flag testCoverPaths []string // -coverpkg flag testCoverPkgs []*Package // -coverpkg flag testProfile bool // some profiling flag testNeedBinary bool // profile needs to keep binary around testV bool // -v flag testFiles []string // -file flag(s) TODO: not respected testTimeout string // -timeout flag testArgs []string testBench bool testStreamOutput bool // show output as it is generated testShowPass bool // show passing output testKillTimeout = 10 * time.Minute ) var testMainDeps = map[string]bool{ // Dependencies for testmain. "testing": true, "regexp": true, } func runTest(cmd *Command, args []string) { var pkgArgs []string pkgArgs, testArgs = testFlags(args) findExecCmd() // initialize cached result raceInit() pkgs := packagesForBuild(pkgArgs) if len(pkgs) == 0 { fatalf("no packages to test") } if testC && len(pkgs) != 1 { fatalf("cannot use -c flag with multiple packages") } if testProfile && len(pkgs) != 1 { fatalf("cannot use test profile flag with multiple packages") } // If a test timeout was given and is parseable, set our kill timeout // to that timeout plus one minute. This is a backup alarm in case // the test wedges with a goroutine spinning and its background // timer does not get a chance to fire. if dt, err := time.ParseDuration(testTimeout); err == nil && dt > 0 { testKillTimeout = dt + 1*time.Minute } // show passing test output (after buffering) with -v flag. // must buffer because tests are running in parallel, and // otherwise the output will get mixed. testShowPass = testV // stream test output (no buffering) when no package has // been given on the command line (implicit current directory) // or when benchmarking. // Also stream if we're showing output anyway with a // single package under test. In that case, streaming the // output produces the same result as not streaming, // just more immediately. testStreamOutput = len(pkgArgs) == 0 || testBench || (len(pkgs) <= 1 && testShowPass) var b builder b.init() if buildI { buildV = testV deps := make(map[string]bool) for dep := range testMainDeps { deps[dep] = true } for _, p := range pkgs { // Dependencies for each test. for _, path := range p.Imports { deps[path] = true } for _, path := range p.TestImports { deps[path] = true } for _, path := range p.XTestImports { deps[path] = true } } // translate C to runtime/cgo if deps["C"] { delete(deps, "C") deps["runtime/cgo"] = true if buildContext.GOOS == runtime.GOOS && buildContext.GOARCH == runtime.GOARCH { deps["cmd/cgo"] = true } } // Ignore pseudo-packages. delete(deps, "unsafe") all := []string{} for path := range deps { if !build.IsLocalImport(path) { all = append(all, path) } } sort.Strings(all) a := &action{} for _, p := range packagesForBuild(all) { a.deps = append(a.deps, b.action(modeInstall, modeInstall, p)) } b.do(a) if !testC || a.failed { return } b.init() } var builds, runs, prints []*action if testCoverPaths != nil { // Load packages that were asked about for coverage. // packagesForBuild exits if the packages cannot be loaded. testCoverPkgs = packagesForBuild(testCoverPaths) // Warn about -coverpkg arguments that are not actually used. used := make(map[string]bool) for _, p := range pkgs { used[p.ImportPath] = true for _, dep := range p.Deps { used[dep] = true } } for _, p := range testCoverPkgs { if !used[p.ImportPath] { log.Printf("warning: no packages being tested depend on %s", p.ImportPath) } } // Mark all the coverage packages for rebuilding with coverage. for _, p := range testCoverPkgs { p.Stale = true // rebuild p.fake = true // do not warn about rebuild p.coverMode = testCoverMode var coverFiles []string coverFiles = append(coverFiles, p.GoFiles...) coverFiles = append(coverFiles, p.CgoFiles...) coverFiles = append(coverFiles, p.TestGoFiles...) p.coverVars = declareCoverVars(p.ImportPath, coverFiles...) } } // Prepare build + run + print actions for all packages being tested. for _, p := range pkgs { buildTest, runTest, printTest, err := b.test(p) if err != nil { str := err.Error() if strings.HasPrefix(str, "\n") { str = str[1:] } failed := fmt.Sprintf("FAIL\t%s [setup failed]\n", p.ImportPath) if p.ImportPath != "" { errorf("# %s\n%s\n%s", p.ImportPath, str, failed) } else { errorf("%s\n%s", str, failed) } continue } builds = append(builds, buildTest) runs = append(runs, runTest) prints = append(prints, printTest) } // Ultimately the goal is to print the output. root := &action{deps: prints} // Force the printing of results to happen in order, // one at a time. for i, a := range prints { if i > 0 { a.deps = append(a.deps, prints[i-1]) } } // Force benchmarks to run in serial. if !testC && testBench { // The first run must wait for all builds. // Later runs must wait for the previous run's print. for i, run := range runs { if i == 0 { run.deps = append(run.deps, builds...) } else { run.deps = append(run.deps, prints[i-1]) } } } // If we are building any out-of-date packages other // than those under test, warn. okBuild := map[*Package]bool{} for _, p := range pkgs { okBuild[p] = true } warned := false for _, a := range actionList(root) { if a.p == nil || okBuild[a.p] { continue } okBuild[a.p] = true // warn at most once // Don't warn about packages being rebuilt because of // things like coverage analysis. for _, p1 := range a.p.imports { if p1.fake { a.p.fake = true } } if a.f != nil && !okBuild[a.p] && !a.p.fake && !a.p.local { if !warned { fmt.Fprintf(os.Stderr, "warning: building out-of-date packages:\n") warned = true } fmt.Fprintf(os.Stderr, "\t%s\n", a.p.ImportPath) } } if warned { args := strings.Join(pkgArgs, " ") if args != "" { args = " " + args } extraOpts := "" if buildRace { extraOpts = "-race " } fmt.Fprintf(os.Stderr, "installing these packages with 'go test %s-i%s' will speed future tests.\n\n", extraOpts, args) } b.do(root) } func contains(x []string, s string) bool { for _, t := range x { if t == s { return true } } return false } func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, err error) { if len(p.TestGoFiles)+len(p.XTestGoFiles) == 0 { build := b.action(modeBuild, modeBuild, p) run := &action{p: p, deps: []*action{build}} print := &action{f: (*builder).notest, p: p, deps: []*action{run}} return build, run, print, nil } // Build Package structs describing: // ptest - package + test files // pxtest - package of external test files // pmain - pkg.test binary var ptest, pxtest, pmain *Package var imports, ximports []*Package var stk importStack stk.push(p.ImportPath + " (test)") for _, path := range p.TestImports { p1 := loadImport(path, p.Dir, &stk, p.build.TestImportPos[path]) if p1.Error != nil { return nil, nil, nil, p1.Error } if contains(p1.Deps, p.ImportPath) { // Same error that loadPackage returns (via reusePackage) in pkg.go. // Can't change that code, because that code is only for loading the // non-test copy of a package. err := &PackageError{ ImportStack: testImportStack(stk[0], p1, p.ImportPath), Err: "import cycle not allowed in test", isImportCycle: true, } return nil, nil, nil, err } imports = append(imports, p1) } stk.pop() stk.push(p.ImportPath + "_test") pxtestNeedsPtest := false for _, path := range p.XTestImports { if path == p.ImportPath { pxtestNeedsPtest = true continue } p1 := loadImport(path, p.Dir, &stk, p.build.XTestImportPos[path]) if p1.Error != nil { return nil, nil, nil, p1.Error } ximports = append(ximports, p1) } stk.pop() // Use last element of import path, not package name. // They differ when package name is "main". // But if the import path is "command-line-arguments", // like it is during 'go run', use the package name. var elem string if p.ImportPath == "command-line-arguments" { elem = p.Name } else { _, elem = path.Split(p.ImportPath) } testBinary := elem + ".test" // The ptest package needs to be importable under the // same import path that p has, but we cannot put it in // the usual place in the temporary tree, because then // other tests will see it as the real package. // Instead we make a _test directory under the import path // and then repeat the import path there. We tell the // compiler and linker to look in that _test directory first. // // That is, if the package under test is unicode/utf8, // then the normal place to write the package archive is // $WORK/unicode/utf8.a, but we write the test package archive to // $WORK/unicode/utf8/_test/unicode/utf8.a. // We write the external test package archive to // $WORK/unicode/utf8/_test/unicode/utf8_test.a. testDir := filepath.Join(b.work, filepath.FromSlash(p.ImportPath+"/_test")) ptestObj := buildToolchain.pkgpath(testDir, p) // Create the directory for the .a files. ptestDir, _ := filepath.Split(ptestObj) if err := b.mkdir(ptestDir); err != nil { return nil, nil, nil, err } // Should we apply coverage analysis locally, // only for this package and only for this test? // Yes, if -cover is on but -coverpkg has not specified // a list of packages for global coverage. localCover := testCover && testCoverPaths == nil // Test package. if len(p.TestGoFiles) > 0 || localCover || p.Name == "main" { ptest = new(Package) *ptest = *p ptest.GoFiles = nil ptest.GoFiles = append(ptest.GoFiles, p.GoFiles...) ptest.GoFiles = append(ptest.GoFiles, p.TestGoFiles...) ptest.target = "" ptest.Imports = stringList(p.Imports, p.TestImports) ptest.imports = append(append([]*Package{}, p.imports...), imports...) ptest.pkgdir = testDir ptest.fake = true ptest.forceLibrary = true ptest.Stale = true ptest.build = new(build.Package) *ptest.build = *p.build m := map[string][]token.Position{} for k, v := range p.build.ImportPos { m[k] = append(m[k], v...) } for k, v := range p.build.TestImportPos { m[k] = append(m[k], v...) } ptest.build.ImportPos = m if localCover { ptest.coverMode = testCoverMode var coverFiles []string coverFiles = append(coverFiles, ptest.GoFiles...) coverFiles = append(coverFiles, ptest.CgoFiles...) ptest.coverVars = declareCoverVars(ptest.ImportPath, coverFiles...) } } else { ptest = p } // External test package. if len(p.XTestGoFiles) > 0 { pxtest = &Package{ Name: p.Name + "_test", ImportPath: p.ImportPath + "_test", localPrefix: p.localPrefix, Root: p.Root, Dir: p.Dir, GoFiles: p.XTestGoFiles, Imports: p.XTestImports, build: &build.Package{ ImportPos: p.build.XTestImportPos, }, imports: ximports, pkgdir: testDir, fake: true, Stale: true, } if pxtestNeedsPtest { pxtest.imports = append(pxtest.imports, ptest) } } // Action for building pkg.test. pmain = &Package{ Name: "main", Dir: testDir, GoFiles: []string{"_testmain.go"}, ImportPath: "testmain", Root: p.Root, build: &build.Package{Name: "main"}, pkgdir: testDir, fake: true, Stale: true, omitDWARF: !testC && !testNeedBinary, } // The generated main also imports testing and regexp. stk.push("testmain") for dep := range testMainDeps { if dep == ptest.ImportPath { pmain.imports = append(pmain.imports, ptest) } else { p1 := loadImport(dep, "", &stk, nil) if p1.Error != nil { return nil, nil, nil, p1.Error } pmain.imports = append(pmain.imports, p1) } } if testCoverPkgs != nil { // Add imports, but avoid duplicates. seen := map[*Package]bool{p: true, ptest: true} for _, p1 := range pmain.imports { seen[p1] = true } for _, p1 := range testCoverPkgs { if !seen[p1] { seen[p1] = true pmain.imports = append(pmain.imports, p1) } } } // Do initial scan for metadata needed for writing _testmain.go // Use that metadata to update the list of imports for package main. // The list of imports is used by recompileForTest and by the loop // afterward that gathers t.Cover information. t, err := loadTestFuncs(ptest) if err != nil { return nil, nil, nil, err } if t.NeedTest || ptest.coverMode != "" { pmain.imports = append(pmain.imports, ptest) } if t.NeedXtest { pmain.imports = append(pmain.imports, pxtest) } if ptest != p && localCover { // We have made modifications to the package p being tested // and are rebuilding p (as ptest), writing it to the testDir tree. // Arrange to rebuild, writing to that same tree, all packages q // such that the test depends on q, and q depends on p. // This makes sure that q sees the modifications to p. // Strictly speaking, the rebuild is only necessary if the // modifications to p change its export metadata, but // determining that is a bit tricky, so we rebuild always. // // This will cause extra compilation, so for now we only do it // when testCover is set. The conditions are more general, though, // and we may find that we need to do it always in the future. recompileForTest(pmain, p, ptest, testDir) } for _, cp := range pmain.imports { if len(cp.coverVars) > 0 { t.Cover = append(t.Cover, coverInfo{cp, cp.coverVars}) } } // writeTestmain writes _testmain.go. This must happen after recompileForTest, // because recompileForTest modifies XXX. if err := writeTestmain(filepath.Join(testDir, "_testmain.go"), t); err != nil { return nil, nil, nil, err } computeStale(pmain) if ptest != p { a := b.action(modeBuild, modeBuild, ptest) a.objdir = testDir + string(filepath.Separator) + "_obj_test" + string(filepath.Separator) a.objpkg = ptestObj a.target = ptestObj a.link = false } if pxtest != nil { a := b.action(modeBuild, modeBuild, pxtest) a.objdir = testDir + string(filepath.Separator) + "_obj_xtest" + string(filepath.Separator) a.objpkg = buildToolchain.pkgpath(testDir, pxtest) a.target = a.objpkg } a := b.action(modeBuild, modeBuild, pmain) a.objdir = testDir + string(filepath.Separator) a.objpkg = filepath.Join(testDir, "main.a") a.target = filepath.Join(testDir, testBinary) + exeSuffix pmainAction := a if testC || testNeedBinary { // -c or profiling flag: create action to copy binary to ./test.out. runAction = &action{ f: (*builder).install, deps: []*action{pmainAction}, p: pmain, target: filepath.Join(cwd, testBinary+exeSuffix), } pmainAction = runAction // in case we are running the test } if testC { printAction = &action{p: p, deps: []*action{runAction}} // nop } else { // run test runAction = &action{ f: (*builder).runTest, deps: []*action{pmainAction}, p: p, ignoreFail: true, } cleanAction := &action{ f: (*builder).cleanTest, deps: []*action{runAction}, p: p, } printAction = &action{ f: (*builder).printTest, deps: []*action{cleanAction}, p: p, } } return pmainAction, runAction, printAction, nil } func testImportStack(top string, p *Package, target string) []string { stk := []string{top, p.ImportPath} Search: for p.ImportPath != target { for _, p1 := range p.imports { if p1.ImportPath == target || contains(p1.Deps, target) { stk = append(stk, p1.ImportPath) p = p1 continue Search } } // Can't happen, but in case it does... stk = append(stk, "") break } return stk } func recompileForTest(pmain, preal, ptest *Package, testDir string) { // The "test copy" of preal is ptest. // For each package that depends on preal, make a "test copy" // that depends on ptest. And so on, up the dependency tree. testCopy := map[*Package]*Package{preal: ptest} for _, p := range packageList([]*Package{pmain}) { // Copy on write. didSplit := false split := func() { if didSplit { return } didSplit = true if p.pkgdir != testDir { p1 := new(Package) testCopy[p] = p1 *p1 = *p p1.imports = make([]*Package, len(p.imports)) copy(p1.imports, p.imports) p = p1 p.pkgdir = testDir p.target = "" p.fake = true p.Stale = true } } // Update p.deps and p.imports to use at test copies. for i, dep := range p.deps { if p1 := testCopy[dep]; p1 != nil && p1 != dep { split() p.deps[i] = p1 } } for i, imp := range p.imports { if p1 := testCopy[imp]; p1 != nil && p1 != imp { split() p.imports[i] = p1 } } } } var coverIndex = 0 // isTestFile reports whether the source file is a set of tests and should therefore // be excluded from coverage analysis. func isTestFile(file string) bool { // We don't cover tests, only the code they test. return strings.HasSuffix(file, "_test.go") } // declareCoverVars attaches the required cover variables names // to the files, to be used when annotating the files. func declareCoverVars(importPath string, files ...string) map[string]*CoverVar { coverVars := make(map[string]*CoverVar) for _, file := range files { if isTestFile(file) { continue } coverVars[file] = &CoverVar{ File: filepath.Join(importPath, file), Var: fmt.Sprintf("GoCover_%d", coverIndex), } coverIndex++ } return coverVars } // runTest is the action for running a test binary. func (b *builder) runTest(a *action) error { args := stringList(findExecCmd(), a.deps[0].target, testArgs) a.testOutput = new(bytes.Buffer) if buildN || buildX { b.showcmd("", "%s", strings.Join(args, " ")) if buildN { return nil } } if a.failed { // We were unable to build the binary. a.failed = false fmt.Fprintf(a.testOutput, "FAIL\t%s [build failed]\n", a.p.ImportPath) setExitStatus(1) return nil } cmd := exec.Command(args[0], args[1:]...) cmd.Dir = a.p.Dir cmd.Env = envForDir(cmd.Dir) var buf bytes.Buffer if testStreamOutput { cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr } else { cmd.Stdout = &buf cmd.Stderr = &buf } // If there are any local SWIG dependencies, we want to load // the shared library from the build directory. if a.p.usesSwig() { env := cmd.Env found := false prefix := "LD_LIBRARY_PATH=" for i, v := range env { if strings.HasPrefix(v, prefix) { env[i] = v + ":." found = true break } } if !found { env = append(env, "LD_LIBRARY_PATH=.") } cmd.Env = env } t0 := time.Now() err := cmd.Start() // This is a last-ditch deadline to detect and // stop wedged test binaries, to keep the builders // running. if err == nil { tick := time.NewTimer(testKillTimeout) startSigHandlers() done := make(chan error) go func() { done <- cmd.Wait() }() Outer: select { case err = <-done: // ok case <-tick.C: if signalTrace != nil { // Send a quit signal in the hope that the program will print // a stack trace and exit. Give it five seconds before resorting // to Kill. cmd.Process.Signal(signalTrace) select { case err = <-done: fmt.Fprintf(&buf, "*** Test killed with %v: ran too long (%v).\n", signalTrace, testKillTimeout) break Outer case <-time.After(5 * time.Second): } } cmd.Process.Kill() err = <-done fmt.Fprintf(&buf, "*** Test killed: ran too long (%v).\n", testKillTimeout) } tick.Stop() } out := buf.Bytes() t := fmt.Sprintf("%.3fs", time.Since(t0).Seconds()) if err == nil { if testShowPass { a.testOutput.Write(out) } fmt.Fprintf(a.testOutput, "ok \t%s\t%s%s\n", a.p.ImportPath, t, coveragePercentage(out)) return nil } setExitStatus(1) if len(out) > 0 { a.testOutput.Write(out) // assume printing the test binary's exit status is superfluous } else { fmt.Fprintf(a.testOutput, "%s\n", err) } fmt.Fprintf(a.testOutput, "FAIL\t%s\t%s\n", a.p.ImportPath, t) return nil } // coveragePercentage returns the coverage results (if enabled) for the // test. It uncovers the data by scanning the output from the test run. func coveragePercentage(out []byte) string { if !testCover { return "" } // The string looks like // test coverage for encoding/binary: 79.9% of statements // Extract the piece from the percentage to the end of the line. re := regexp.MustCompile(`coverage: (.*)\n`) matches := re.FindSubmatch(out) if matches == nil { // Probably running "go test -cover" not "go test -cover fmt". // The coverage output will appear in the output directly. return "" } return fmt.Sprintf("\tcoverage: %s", matches[1]) } // cleanTest is the action for cleaning up after a test. func (b *builder) cleanTest(a *action) error { if buildWork { return nil } run := a.deps[0] testDir := filepath.Join(b.work, filepath.FromSlash(run.p.ImportPath+"/_test")) os.RemoveAll(testDir) return nil } // printTest is the action for printing a test result. func (b *builder) printTest(a *action) error { clean := a.deps[0] run := clean.deps[0] os.Stdout.Write(run.testOutput.Bytes()) run.testOutput = nil return nil } // notest is the action for testing a package with no test files. func (b *builder) notest(a *action) error { fmt.Printf("? \t%s\t[no test files]\n", a.p.ImportPath) return nil } // isTest tells whether name looks like a test (or benchmark, according to prefix). // It is a Test (say) if there is a character after Test that is not a lower-case letter. // We don't want TesticularCancer. func isTest(name, prefix string) bool { if !strings.HasPrefix(name, prefix) { return false } if len(name) == len(prefix) { // "Test" is ok return true } rune, _ := utf8.DecodeRuneInString(name[len(prefix):]) return !unicode.IsLower(rune) } type coverInfo struct { Package *Package Vars map[string]*CoverVar } // loadTestFuncs returns the testFuncs describing the tests that will be run. func loadTestFuncs(ptest *Package) (*testFuncs, error) { t := &testFuncs{ Package: ptest, } for _, file := range ptest.TestGoFiles { if err := t.load(filepath.Join(ptest.Dir, file), "_test", &t.NeedTest); err != nil { return nil, err } } for _, file := range ptest.XTestGoFiles { if err := t.load(filepath.Join(ptest.Dir, file), "_xtest", &t.NeedXtest); err != nil { return nil, err } } return t, nil } // writeTestmain writes the _testmain.go file for t to the file named out. func writeTestmain(out string, t *testFuncs) error { f, err := os.Create(out) if err != nil { return err } defer f.Close() if err := testmainTmpl.Execute(f, t); err != nil { return err } return nil } type testFuncs struct { Tests []testFunc Benchmarks []testFunc Examples []testFunc Package *Package NeedTest bool NeedXtest bool Cover []coverInfo } func (t *testFuncs) CoverMode() string { return testCoverMode } func (t *testFuncs) CoverEnabled() bool { return testCover } // Covered returns a string describing which packages are being tested for coverage. // If the covered package is the same as the tested package, it returns the empty string. // Otherwise it is a comma-separated human-readable list of packages beginning with // " in", ready for use in the coverage message. func (t *testFuncs) Covered() string { if testCoverPaths == nil { return "" } return " in " + strings.Join(testCoverPaths, ", ") } // Tested returns the name of the package being tested. func (t *testFuncs) Tested() string { return t.Package.Name } type testFunc struct { Package string // imported package name (_test or _xtest) Name string // function name Output string // output, for examples } var testFileSet = token.NewFileSet() func (t *testFuncs) load(filename, pkg string, seen *bool) error { f, err := parser.ParseFile(testFileSet, filename, nil, parser.ParseComments) if err != nil { return expandScanner(err) } for _, d := range f.Decls { n, ok := d.(*ast.FuncDecl) if !ok { continue } if n.Recv != nil { continue } name := n.Name.String() switch { case isTest(name, "Test"): t.Tests = append(t.Tests, testFunc{pkg, name, ""}) *seen = true case isTest(name, "Benchmark"): t.Benchmarks = append(t.Benchmarks, testFunc{pkg, name, ""}) *seen = true } } ex := doc.Examples(f) sort.Sort(byOrder(ex)) for _, e := range ex { if e.Output == "" && !e.EmptyOutput { // Don't run examples with no output. continue } t.Examples = append(t.Examples, testFunc{pkg, "Example" + e.Name, e.Output}) *seen = true } return nil } type byOrder []*doc.Example func (x byOrder) Len() int { return len(x) } func (x byOrder) Swap(i, j int) { x[i], x[j] = x[j], x[i] } func (x byOrder) Less(i, j int) bool { return x[i].Order < x[j].Order } var testmainTmpl = template.Must(template.New("main").Parse(` package main import ( "regexp" "testing" {{if .NeedTest}} _test {{.Package.ImportPath | printf "%q"}} {{end}} {{if .NeedXtest}} _xtest {{.Package.ImportPath | printf "%s_test" | printf "%q"}} {{end}} {{range $i, $p := .Cover}} _cover{{$i}} {{$p.Package.ImportPath | printf "%q"}} {{end}} ) var tests = []testing.InternalTest{ {{range .Tests}} {"{{.Name}}", {{.Package}}.{{.Name}}}, {{end}} } var benchmarks = []testing.InternalBenchmark{ {{range .Benchmarks}} {"{{.Name}}", {{.Package}}.{{.Name}}}, {{end}} } var examples = []testing.InternalExample{ {{range .Examples}} {"{{.Name}}", {{.Package}}.{{.Name}}, {{.Output | printf "%q"}}}, {{end}} } var matchPat string var matchRe *regexp.Regexp func matchString(pat, str string) (result bool, err error) { if matchRe == nil || matchPat != pat { matchPat = pat matchRe, err = regexp.Compile(matchPat) if err != nil { return } } return matchRe.MatchString(str), nil } {{if .CoverEnabled}} // Only updated by init functions, so no need for atomicity. var ( coverCounters = make(map[string][]uint32) coverBlocks = make(map[string][]testing.CoverBlock) ) func init() { {{range $i, $p := .Cover}} {{range $file, $cover := $p.Vars}} coverRegisterFile({{printf "%q" $cover.File}}, _cover{{$i}}.{{$cover.Var}}.Count[:], _cover{{$i}}.{{$cover.Var}}.Pos[:], _cover{{$i}}.{{$cover.Var}}.NumStmt[:]) {{end}} {{end}} } func coverRegisterFile(fileName string, counter []uint32, pos []uint32, numStmts []uint16) { if 3*len(counter) != len(pos) || len(counter) != len(numStmts) { panic("coverage: mismatched sizes") } if coverCounters[fileName] != nil { // Already registered. return } coverCounters[fileName] = counter block := make([]testing.CoverBlock, len(counter)) for i := range counter { block[i] = testing.CoverBlock{ Line0: pos[3*i+0], Col0: uint16(pos[3*i+2]), Line1: pos[3*i+1], Col1: uint16(pos[3*i+2]>>16), Stmts: numStmts[i], } } coverBlocks[fileName] = block } {{end}} func main() { {{if .CoverEnabled}} testing.RegisterCover(testing.Cover{ Mode: {{printf "%q" .CoverMode}}, Counters: coverCounters, Blocks: coverBlocks, CoveredPackages: {{printf "%q" .Covered}}, }) {{end}} testing.Main(matchString, tests, benchmarks, examples) } `)) go/src/cmd/go/testdata0040755000000000000000000000000012412656737015173 5ustar00rootroot00000000000000go/src/cmd/go/testdata/cgocover0040755000000000000000000000000012412656734016777 5ustar00rootroot00000000000000go/src/cmd/go/testdata/cgocover/p.go0100644000000000000000000000014512412656734017641 0ustar00rootroot00000000000000package p /* void f(void) { } */ import "C" var b bool func F() { if b { for { } } C.f() } go/src/cmd/go/testdata/cgocover/p_test.go0100644000000000000000000000007712412656734020704 0ustar00rootroot00000000000000package p import "testing" func TestF(t *testing.T) { F() } go/src/cmd/go/testdata/dep_test.go0100644000000000000000000000030212412656734017375 0ustar00rootroot00000000000000// 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. package deps import _ "testing" go/src/cmd/go/testdata/example1_test.go0100644000000000000000000000061312412656734020346 0ustar00rootroot00000000000000// Copyright 2013 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. // Make sure that go test runs Example_Z before Example_A, preserving source order. package p import "fmt" var n int func Example_Z() { n++ fmt.Println(n) // Output: 1 } func Example_A() { n++ fmt.Println(n) // Output: 2 } go/src/cmd/go/testdata/example2_test.go0100644000000000000000000000060012412656734020343 0ustar00rootroot00000000000000// Copyright 2013 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. // Make sure that go test runs Example_Y before Example_B, preserving source order. package p import "fmt" func Example_Y() { n++ fmt.Println(n) // Output: 3 } func Example_B() { n++ fmt.Println(n) // Output: 4 } go/src/cmd/go/testdata/local0040755000000000000000000000000012412656734016262 5ustar00rootroot00000000000000go/src/cmd/go/testdata/local/easy.go0100644000000000000000000000010312412656734017620 0ustar00rootroot00000000000000package main import "./easysub" func main() { easysub.Hello() } go/src/cmd/go/testdata/local/easysub0040755000000000000000000000000012412656734017735 5ustar00rootroot00000000000000go/src/cmd/go/testdata/local/easysub/easysub.go0100644000000000000000000000011612412656734022011 0ustar00rootroot00000000000000package easysub import "fmt" func Hello() { fmt.Println("easysub.Hello") } go/src/cmd/go/testdata/local/easysub/main.go0100644000000000000000000000011512412656734021261 0ustar00rootroot00000000000000// +build ignore package main import "." func main() { easysub.Hello() } go/src/cmd/go/testdata/local/hard.go0100644000000000000000000000007312412656734017603 0ustar00rootroot00000000000000package main import "./sub" func main() { sub.Hello() } go/src/cmd/go/testdata/local/sub0040755000000000000000000000000012412656734017053 5ustar00rootroot00000000000000go/src/cmd/go/testdata/local/sub/sub0040755000000000000000000000000012412656734017644 5ustar00rootroot00000000000000go/src/cmd/go/testdata/local/sub/sub/subsub.go0100644000000000000000000000011412412656734021546 0ustar00rootroot00000000000000package subsub import "fmt" func Hello() { fmt.Println("subsub.Hello") } go/src/cmd/go/testdata/local/sub/sub.go0100644000000000000000000000015412412656734020247 0ustar00rootroot00000000000000package sub import ( "fmt" subsub "./sub" ) func Hello() { fmt.Println("sub.Hello") subsub.Hello() } go/src/cmd/go/testdata/shadow0040755000000000000000000000000012412656734016455 5ustar00rootroot00000000000000go/src/cmd/go/testdata/shadow/root10040755000000000000000000000000012412656734017521 5ustar00rootroot00000000000000go/src/cmd/go/testdata/shadow/root1/src0040755000000000000000000000000012412656734020310 5ustar00rootroot00000000000000go/src/cmd/go/testdata/shadow/root1/src/foo0040755000000000000000000000000012412656734021073 5ustar00rootroot00000000000000go/src/cmd/go/testdata/shadow/root1/src/foo/foo.go0100644000000000000000000000001412412656734022254 0ustar00rootroot00000000000000package foo go/src/cmd/go/testdata/shadow/root1/src/math0040755000000000000000000000000012412656734021241 5ustar00rootroot00000000000000go/src/cmd/go/testdata/shadow/root1/src/math/math.go0100644000000000000000000000001512412656734022571 0ustar00rootroot00000000000000package math go/src/cmd/go/testdata/shadow/root20040755000000000000000000000000012412656734017522 5ustar00rootroot00000000000000go/src/cmd/go/testdata/shadow/root2/src0040755000000000000000000000000012412656734020311 5ustar00rootroot00000000000000go/src/cmd/go/testdata/shadow/root2/src/foo0040755000000000000000000000000012412656734021074 5ustar00rootroot00000000000000go/src/cmd/go/testdata/shadow/root2/src/foo/foo.go0100644000000000000000000000001412412656734022255 0ustar00rootroot00000000000000package foo go/src/cmd/go/testdata/src0040755000000000000000000000000012412656737015762 5ustar00rootroot00000000000000go/src/cmd/go/testdata/src/badpkg0040755000000000000000000000000012412656734017207 5ustar00rootroot00000000000000go/src/cmd/go/testdata/src/badpkg/x.go0100644000000000000000000000001312412656734020053 0ustar00rootroot00000000000000pkg badpkg go/src/cmd/go/testdata/src/cgotest0040755000000000000000000000000012412656734017427 5ustar00rootroot00000000000000go/src/cmd/go/testdata/src/cgotest/m.go0100644000000000000000000000005112412656734020262 0ustar00rootroot00000000000000package cgotest import "C" var _ C.int go/src/cmd/go/testdata/src/go-cmd-test0040755000000000000000000000000012412656734020102 5ustar00rootroot00000000000000go/src/cmd/go/testdata/src/go-cmd-test/helloworld.go0100644000000000000000000000006612412656734022662 0ustar00rootroot00000000000000package main func main() { println("hello world") } go/src/cmd/go/testdata/src/main_test0040755000000000000000000000000012412656734017742 5ustar00rootroot00000000000000go/src/cmd/go/testdata/src/main_test/m.go0100644000000000000000000000005412412656734020600 0ustar00rootroot00000000000000package main func F() {} func main() {} go/src/cmd/go/testdata/src/main_test/m_test.go0100644000000000000000000000013312412656734021635 0ustar00rootroot00000000000000package main_test import ( . "main_test" "testing" ) func Test1(t *testing.T) { F() } go/src/cmd/go/testdata/src/notest0040755000000000000000000000000012412656734017273 5ustar00rootroot00000000000000go/src/cmd/go/testdata/src/notest/hello.go0100644000000000000000000000010512412656734020775 0ustar00rootroot00000000000000package notest func hello() { println("hello world") } Hello world go/src/cmd/go/testdata/src/syntaxerror0040755000000000000000000000000012412656734020357 5ustar00rootroot00000000000000go/src/cmd/go/testdata/src/syntaxerror/x.go0100644000000000000000000000001212412656734021222 0ustar00rootroot00000000000000package p go/src/cmd/go/testdata/src/syntaxerror/x_test.go0100644000000000000000000000004512412656734022267 0ustar00rootroot00000000000000package p func f() (x.y, z int) { } go/src/cmd/go/testdata/src/testcycle0040755000000000000000000000000012412656734017756 5ustar00rootroot00000000000000go/src/cmd/go/testdata/src/testcycle/p10040755000000000000000000000000012412656734020276 5ustar00rootroot00000000000000go/src/cmd/go/testdata/src/testcycle/p1/p1.go0100644000000000000000000000011112412656734021212 0ustar00rootroot00000000000000package p1 import _ "testcycle/p2" func init() { println("p1 init") } go/src/cmd/go/testdata/src/testcycle/p1/p1_test.go0100644000000000000000000000007212412656734022257 0ustar00rootroot00000000000000package p1 import "testing" func Test(t *testing.T) { } go/src/cmd/go/testdata/src/testcycle/p20040755000000000000000000000000012412656734020277 5ustar00rootroot00000000000000go/src/cmd/go/testdata/src/testcycle/p2/p2.go0100644000000000000000000000011112412656734021214 0ustar00rootroot00000000000000package p2 import _ "testcycle/p3" func init() { println("p2 init") } go/src/cmd/go/testdata/src/testcycle/p30040755000000000000000000000000012412656734020300 5ustar00rootroot00000000000000go/src/cmd/go/testdata/src/testcycle/p3/p3.go0100644000000000000000000000006012412656734021221 0ustar00rootroot00000000000000package p3 func init() { println("p3 init") } go/src/cmd/go/testdata/src/testcycle/p3/p3_test.go0100644000000000000000000000012212412656734022257 0ustar00rootroot00000000000000package p3 import ( "testing" _ "testcycle/p1" ) func Test(t *testing.T) { } go/src/cmd/go/testdata/src/xtestonly0040755000000000000000000000000012412656734020030 5ustar00rootroot00000000000000go/src/cmd/go/testdata/src/xtestonly/f.go0100644000000000000000000000005612412656734020661 0ustar00rootroot00000000000000package xtestonly func F() int { return 42 } go/src/cmd/go/testdata/src/xtestonly/f_test.go0100644000000000000000000000024312412656734021716 0ustar00rootroot00000000000000package xtestonly_test import ( "testing" "xtestonly" ) func TestF(t *testing.T) { if x := xtestonly.F(); x != 42 { t.Errorf("f.F() = %d, want 42", x) } } go/src/cmd/go/testdata/standalone_test.go0100644000000000000000000000010712412656734020760 0ustar00rootroot00000000000000package standalone_test import "testing" func Test(t *testing.T) { } go/src/cmd/go/testdata/testimport0040755000000000000000000000000012412656734017402 5ustar00rootroot00000000000000go/src/cmd/go/testdata/testimport/p.go0100644000000000000000000000004512412656734020243 0ustar00rootroot00000000000000package p func F() int { return 1 } go/src/cmd/go/testdata/testimport/p10040755000000000000000000000000012412656734017722 5ustar00rootroot00000000000000go/src/cmd/go/testdata/testimport/p1/p1.go0100644000000000000000000000004612412656734020645 0ustar00rootroot00000000000000package p1 func F() int { return 1 } go/src/cmd/go/testdata/testimport/p20040755000000000000000000000000012412656734017723 5ustar00rootroot00000000000000go/src/cmd/go/testdata/testimport/p2/p2.go0100644000000000000000000000004612412656734020647 0ustar00rootroot00000000000000package p2 func F() int { return 1 } go/src/cmd/go/testdata/testimport/p_test.go0100644000000000000000000000015612412656734021305 0ustar00rootroot00000000000000package p import ( "./p1" "testing" ) func TestF(t *testing.T) { if F() != p1.F() { t.Fatal(F()) } } go/src/cmd/go/testdata/testimport/x_test.go0100644000000000000000000000021012412656734021304 0ustar00rootroot00000000000000package p_test import ( . "../testimport" "./p2" "testing" ) func TestF1(t *testing.T) { if F() != p2.F() { t.Fatal(F()) } } go/src/cmd/go/testdata/testonly0040755000000000000000000000000012412656734017051 5ustar00rootroot00000000000000go/src/cmd/go/testdata/testonly/p_test.go0100644000000000000000000000001212412656734020743 0ustar00rootroot00000000000000package p go/src/cmd/go/testflag.go0100644000000000000000000002174612412656737015610 0ustar00rootroot00000000000000// Copyright 2011 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 ( "fmt" "os" "strconv" "strings" ) // The flag handling part of go test is large and distracting. // We can't use the flag package because some of the flags from // our command line are for us, and some are for 6.out, and // some are for both. var usageMessage = `Usage of go test: -c=false: compile but do not run the test binary -file=file_test.go: specify file to use for tests; use multiple times for multiple files -p=n: build and test up to n packages in parallel -x=false: print command lines as they are executed // These flags can be passed with or without a "test." prefix: -v or -test.v. -bench="": passes -test.bench to test -benchmem=false: print memory allocation statistics for benchmarks -benchtime=1s: passes -test.benchtime to test -cover=false: enable coverage analysis -covermode="set": specifies mode for coverage analysis -coverpkg="": comma-separated list of packages for coverage analysis -coverprofile="": passes -test.coverprofile to test if -cover -cpu="": passes -test.cpu to test -cpuprofile="": passes -test.cpuprofile to test -memprofile="": passes -test.memprofile to test -memprofilerate=0: passes -test.memprofilerate to test -blockprofile="": pases -test.blockprofile to test -blockprofilerate=0: passes -test.blockprofilerate to test -outputdir=$PWD: passes -test.outputdir to test -parallel=0: passes -test.parallel to test -run="": passes -test.run to test -short=false: passes -test.short to test -timeout=0: passes -test.timeout to test -v=false: passes -test.v to test ` // usage prints a usage message and exits. func testUsage() { fmt.Fprint(os.Stderr, usageMessage) setExitStatus(2) exit() } // testFlagSpec defines a flag we know about. type testFlagSpec struct { name string boolVar *bool passToTest bool // pass to Test multiOK bool // OK to have multiple instances present bool // flag has been seen } // testFlagDefn is the set of flags we process. var testFlagDefn = []*testFlagSpec{ // local. {name: "c", boolVar: &testC}, {name: "file", multiOK: true}, {name: "cover", boolVar: &testCover}, {name: "coverpkg"}, // build flags. {name: "a", boolVar: &buildA}, {name: "n", boolVar: &buildN}, {name: "p"}, {name: "x", boolVar: &buildX}, {name: "i", boolVar: &buildI}, {name: "work", boolVar: &buildWork}, {name: "ccflags"}, {name: "gcflags"}, {name: "exec"}, {name: "ldflags"}, {name: "gccgoflags"}, {name: "tags"}, {name: "compiler"}, {name: "race", boolVar: &buildRace}, {name: "installsuffix"}, // passed to 6.out, adding a "test." prefix to the name if necessary: -v becomes -test.v. {name: "bench", passToTest: true}, {name: "benchmem", boolVar: new(bool), passToTest: true}, {name: "benchtime", passToTest: true}, {name: "covermode"}, {name: "coverprofile", passToTest: true}, {name: "cpu", passToTest: true}, {name: "cpuprofile", passToTest: true}, {name: "memprofile", passToTest: true}, {name: "memprofilerate", passToTest: true}, {name: "blockprofile", passToTest: true}, {name: "blockprofilerate", passToTest: true}, {name: "outputdir", passToTest: true}, {name: "parallel", passToTest: true}, {name: "run", passToTest: true}, {name: "short", boolVar: new(bool), passToTest: true}, {name: "timeout", passToTest: true}, {name: "v", boolVar: &testV, passToTest: true}, } // testFlags processes the command line, grabbing -x and -c, rewriting known flags // to have "test" before them, and reading the command line for the 6.out. // Unfortunately for us, we need to do our own flag processing because go test // grabs some flags but otherwise its command line is just a holding place for // pkg.test's arguments. // We allow known flags both before and after the package name list, // to allow both // go test fmt -custom-flag-for-fmt-test // go test -x math func testFlags(args []string) (packageNames, passToTest []string) { inPkg := false outputDir := "" for i := 0; i < len(args); i++ { if !strings.HasPrefix(args[i], "-") { if !inPkg && packageNames == nil { // First package name we've seen. inPkg = true } if inPkg { packageNames = append(packageNames, args[i]) continue } } if inPkg { // Found an argument beginning with "-"; end of package list. inPkg = false } f, value, extraWord := testFlag(args, i) if f == nil { // This is a flag we do not know; we must assume // that any args we see after this might be flag // arguments, not package names. inPkg = false if packageNames == nil { // make non-nil: we have seen the empty package list packageNames = []string{} } passToTest = append(passToTest, args[i]) continue } var err error switch f.name { // bool flags. case "a", "c", "i", "n", "x", "v", "race", "cover", "work": setBoolFlag(f.boolVar, value) case "p": setIntFlag(&buildP, value) case "exec": execCmd, err = splitQuotedFields(value) if err != nil { fatalf("invalid flag argument for -%s: %v", f.name, err) } case "ccflags": buildCcflags, err = splitQuotedFields(value) if err != nil { fatalf("invalid flag argument for -%s: %v", f.name, err) } case "gcflags": buildGcflags, err = splitQuotedFields(value) if err != nil { fatalf("invalid flag argument for -%s: %v", f.name, err) } case "ldflags": buildLdflags, err = splitQuotedFields(value) if err != nil { fatalf("invalid flag argument for -%s: %v", f.name, err) } case "gccgoflags": buildGccgoflags, err = splitQuotedFields(value) if err != nil { fatalf("invalid flag argument for -%s: %v", f.name, err) } case "tags": buildContext.BuildTags = strings.Fields(value) case "compiler": buildCompiler{}.Set(value) case "file": testFiles = append(testFiles, value) case "bench": // record that we saw the flag; don't care about the value testBench = true case "timeout": testTimeout = value case "blockprofile", "cpuprofile", "memprofile": testProfile = true testNeedBinary = true case "coverpkg": testCover = true if value == "" { testCoverPaths = nil } else { testCoverPaths = strings.Split(value, ",") } case "coverprofile": testCover = true testProfile = true case "covermode": switch value { case "set", "count", "atomic": testCoverMode = value default: fatalf("invalid flag argument for -cover: %q", value) } testCover = true case "outputdir": outputDir = value } if extraWord { i++ } if f.passToTest { passToTest = append(passToTest, "-test."+f.name+"="+value) } } if testCoverMode == "" { testCoverMode = "set" if buildRace { // Default coverage mode is atomic when -race is set. testCoverMode = "atomic" } } // Tell the test what directory we're running in, so it can write the profiles there. if testProfile && outputDir == "" { dir, err := os.Getwd() if err != nil { fatalf("error from os.Getwd: %s", err) } passToTest = append(passToTest, "-test.outputdir", dir) } return } // testFlag sees if argument i is a known flag and returns its definition, value, and whether it consumed an extra word. func testFlag(args []string, i int) (f *testFlagSpec, value string, extra bool) { arg := args[i] if strings.HasPrefix(arg, "--") { // reduce two minuses to one arg = arg[1:] } switch arg { case "-?", "-h", "-help": usage() } if arg == "" || arg[0] != '-' { return } name := arg[1:] // If there's already "test.", drop it for now. name = strings.TrimPrefix(name, "test.") equals := strings.Index(name, "=") if equals >= 0 { value = name[equals+1:] name = name[:equals] } for _, f = range testFlagDefn { if name == f.name { // Booleans are special because they have modes -x, -x=true, -x=false. if f.boolVar != nil { if equals < 0 { // otherwise, it's been set and will be verified in setBoolFlag value = "true" } else { // verify it parses setBoolFlag(new(bool), value) } } else { // Non-booleans must have a value. extra = equals < 0 if extra { if i+1 >= len(args) { testSyntaxError("missing argument for flag " + f.name) } value = args[i+1] } } if f.present && !f.multiOK { testSyntaxError(f.name + " flag may be set only once") } f.present = true return } } f = nil return } // setBoolFlag sets the addressed boolean to the value. func setBoolFlag(flag *bool, value string) { x, err := strconv.ParseBool(value) if err != nil { testSyntaxError("illegal bool flag value " + value) } *flag = x } // setIntFlag sets the addressed integer to the value. func setIntFlag(flag *int, value string) { x, err := strconv.Atoi(value) if err != nil { testSyntaxError("illegal int flag value " + value) } *flag = x } func testSyntaxError(msg string) { fmt.Fprintf(os.Stderr, "go test: %s\n", msg) fmt.Fprintf(os.Stderr, `run "go help test" or "go help testflag" for more information`+"\n") os.Exit(2) } go/src/cmd/go/tool.go0100644000000000000000000000730212412656734014741 0ustar00rootroot00000000000000// Copyright 2011 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 ( "fmt" "go/build" "os" "os/exec" "path/filepath" "runtime" "sort" "strings" ) var cmdTool = &Command{ Run: runTool, UsageLine: "tool [-n] command [args...]", Short: "run specified go tool", Long: ` Tool runs the go tool command identified by the arguments. With no arguments it prints the list of known tools. The -n flag causes tool to print the command that would be executed but not execute it. For more about each tool command, see 'go tool command -h'. `, } var ( toolGOOS = runtime.GOOS toolGOARCH = runtime.GOARCH toolIsWindows = toolGOOS == "windows" toolDir = build.ToolDir toolN bool ) func init() { cmdTool.Flag.BoolVar(&toolN, "n", false, "") } const toolWindowsExtension = ".exe" func tool(toolName string) string { toolPath := filepath.Join(toolDir, toolName) if toolIsWindows && toolName != "pprof" { toolPath += toolWindowsExtension } // Give a nice message if there is no tool with that name. if _, err := os.Stat(toolPath); err != nil { if isInGoToolsRepo(toolName) { fmt.Fprintf(os.Stderr, "go tool: no such tool %q; to install:\n\tgo get code.google.com/p/go.tools/cmd/%s\n", toolName, toolName) } else { fmt.Fprintf(os.Stderr, "go tool: no such tool %q\n", toolName) } setExitStatus(3) exit() } return toolPath } func isInGoToolsRepo(toolName string) bool { switch toolName { case "cover", "vet": return true } return false } func runTool(cmd *Command, args []string) { if len(args) == 0 { listTools() return } toolName := args[0] // The tool name must be lower-case letters, numbers or underscores. for _, c := range toolName { switch { case 'a' <= c && c <= 'z', '0' <= c && c <= '9', c == '_': default: fmt.Fprintf(os.Stderr, "go tool: bad tool name %q\n", toolName) setExitStatus(2) return } } toolPath := tool(toolName) if toolPath == "" { return } if toolIsWindows && toolName == "pprof" { args = append([]string{"perl", toolPath}, args[1:]...) var err error toolPath, err = exec.LookPath("perl") if err != nil { fmt.Fprintf(os.Stderr, "go tool: perl not found\n") setExitStatus(3) return } } if toolN { fmt.Printf("%s %s\n", toolPath, strings.Join(args[1:], " ")) return } toolCmd := &exec.Cmd{ Path: toolPath, Args: args, Stdin: os.Stdin, Stdout: os.Stdout, Stderr: os.Stderr, } err := toolCmd.Run() if err != nil { // Only print about the exit status if the command // didn't even run (not an ExitError) or it didn't exit cleanly // or we're printing command lines too (-x mode). // Assume if command exited cleanly (even with non-zero status) // it printed any messages it wanted to print. if e, ok := err.(*exec.ExitError); !ok || !e.Exited() || buildX { fmt.Fprintf(os.Stderr, "go tool %s: %s\n", toolName, err) } setExitStatus(1) return } } // listTools prints a list of the available tools in the tools directory. func listTools() { f, err := os.Open(toolDir) if err != nil { fmt.Fprintf(os.Stderr, "go tool: no tool directory: %s\n", err) setExitStatus(2) return } defer f.Close() names, err := f.Readdirnames(-1) if err != nil { fmt.Fprintf(os.Stderr, "go tool: can't read directory: %s\n", err) setExitStatus(2) return } sort.Strings(names) for _, name := range names { // Unify presentation by going to lower case. name = strings.ToLower(name) // If it's windows, don't show the .exe suffix. if toolIsWindows && strings.HasSuffix(name, toolWindowsExtension) { name = name[:len(name)-len(toolWindowsExtension)] } fmt.Println(name) } } go/src/cmd/go/vcs.go0100644000000000000000000005210612412656737014564 0ustar00rootroot00000000000000// 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 import ( "bytes" "encoding/json" "errors" "fmt" "log" "os" "os/exec" "path/filepath" "regexp" "strings" ) // A vcsCmd describes how to use a version control system // like Mercurial, Git, or Subversion. type vcsCmd struct { name string cmd string // name of binary to invoke command createCmd string // command to download a fresh copy of a repository downloadCmd string // command to download updates into an existing repository tagCmd []tagCmd // commands to list tags tagLookupCmd []tagCmd // commands to lookup tags before running tagSyncCmd tagSyncCmd string // command to sync to specific tag tagSyncDefault string // command to sync to default tag scheme []string pingCmd string } // A tagCmd describes a command to list available tags // that can be passed to tagSyncCmd. type tagCmd struct { cmd string // command to list tags pattern string // regexp to extract tags from list } // vcsList lists the known version control systems var vcsList = []*vcsCmd{ vcsHg, vcsGit, vcsSvn, vcsBzr, } // vcsByCmd returns the version control system for the given // command name (hg, git, svn, bzr). func vcsByCmd(cmd string) *vcsCmd { for _, vcs := range vcsList { if vcs.cmd == cmd { return vcs } } return nil } // vcsHg describes how to use Mercurial. var vcsHg = &vcsCmd{ name: "Mercurial", cmd: "hg", createCmd: "clone -U {repo} {dir}", downloadCmd: "pull", // We allow both tag and branch names as 'tags' // for selecting a version. This lets people have // a go.release.r60 branch and a go1 branch // and make changes in both, without constantly // editing .hgtags. tagCmd: []tagCmd{ {"tags", `^(\S+)`}, {"branches", `^(\S+)`}, }, tagSyncCmd: "update -r {tag}", tagSyncDefault: "update default", scheme: []string{"https", "http", "ssh"}, pingCmd: "identify {scheme}://{repo}", } // vcsGit describes how to use Git. var vcsGit = &vcsCmd{ name: "Git", cmd: "git", createCmd: "clone {repo} {dir}", downloadCmd: "pull --ff-only", tagCmd: []tagCmd{ // tags/xxx matches a git tag named xxx // origin/xxx matches a git branch named xxx on the default remote repository {"show-ref", `(?:tags|origin)/(\S+)$`}, }, tagLookupCmd: []tagCmd{ {"show-ref tags/{tag} origin/{tag}", `((?:tags|origin)/\S+)$`}, }, tagSyncCmd: "checkout {tag}", tagSyncDefault: "checkout master", scheme: []string{"git", "https", "http", "git+ssh"}, pingCmd: "ls-remote {scheme}://{repo}", } // vcsBzr describes how to use Bazaar. var vcsBzr = &vcsCmd{ name: "Bazaar", cmd: "bzr", createCmd: "branch {repo} {dir}", // Without --overwrite bzr will not pull tags that changed. // Replace by --overwrite-tags after http://pad.lv/681792 goes in. downloadCmd: "pull --overwrite", tagCmd: []tagCmd{{"tags", `^(\S+)`}}, tagSyncCmd: "update -r {tag}", tagSyncDefault: "update -r revno:-1", scheme: []string{"https", "http", "bzr", "bzr+ssh"}, pingCmd: "info {scheme}://{repo}", } // vcsSvn describes how to use Subversion. var vcsSvn = &vcsCmd{ name: "Subversion", cmd: "svn", createCmd: "checkout {repo} {dir}", downloadCmd: "update", // There is no tag command in subversion. // The branch information is all in the path names. scheme: []string{"https", "http", "svn", "svn+ssh"}, pingCmd: "info {scheme}://{repo}", } func (v *vcsCmd) String() string { return v.name } // run runs the command line cmd in the given directory. // keyval is a list of key, value pairs. run expands // instances of {key} in cmd into value, but only after // splitting cmd into individual arguments. // If an error occurs, run prints the command line and the // command's combined stdout+stderr to standard error. // Otherwise run discards the command's output. func (v *vcsCmd) run(dir string, cmd string, keyval ...string) error { _, err := v.run1(dir, cmd, keyval, true) return err } // runVerboseOnly is like run but only generates error output to standard error in verbose mode. func (v *vcsCmd) runVerboseOnly(dir string, cmd string, keyval ...string) error { _, err := v.run1(dir, cmd, keyval, false) return err } // runOutput is like run but returns the output of the command. func (v *vcsCmd) runOutput(dir string, cmd string, keyval ...string) ([]byte, error) { return v.run1(dir, cmd, keyval, true) } // run1 is the generalized implementation of run and runOutput. func (v *vcsCmd) run1(dir string, cmdline string, keyval []string, verbose bool) ([]byte, error) { m := make(map[string]string) for i := 0; i < len(keyval); i += 2 { m[keyval[i]] = keyval[i+1] } args := strings.Fields(cmdline) for i, arg := range args { args[i] = expand(m, arg) } _, err := exec.LookPath(v.cmd) if err != nil { fmt.Fprintf(os.Stderr, "go: missing %s command. See http://golang.org/s/gogetcmd\n", v.name) return nil, err } cmd := exec.Command(v.cmd, args...) cmd.Dir = dir cmd.Env = envForDir(cmd.Dir) if buildX { fmt.Printf("cd %s\n", dir) fmt.Printf("%s %s\n", v.cmd, strings.Join(args, " ")) } var buf bytes.Buffer cmd.Stdout = &buf cmd.Stderr = &buf err = cmd.Run() out := buf.Bytes() if err != nil { if verbose || buildV { fmt.Fprintf(os.Stderr, "# cd %s; %s %s\n", dir, v.cmd, strings.Join(args, " ")) os.Stderr.Write(out) } return nil, err } return out, nil } // ping pings to determine scheme to use. func (v *vcsCmd) ping(scheme, repo string) error { return v.runVerboseOnly(".", v.pingCmd, "scheme", scheme, "repo", repo) } // create creates a new copy of repo in dir. // The parent of dir must exist; dir must not. func (v *vcsCmd) create(dir, repo string) error { return v.run(".", v.createCmd, "dir", dir, "repo", repo) } // download downloads any new changes for the repo in dir. func (v *vcsCmd) download(dir string) error { if err := v.fixDetachedHead(dir); err != nil { return err } return v.run(dir, v.downloadCmd) } // fixDetachedHead switches a Git repository in dir from a detached head to the master branch. // Go versions before 1.2 downloaded Git repositories in an unfortunate way // that resulted in the working tree state being on a detached head. // That meant the repository was not usable for normal Git operations. // Go 1.2 fixed that, but we can't pull into a detached head, so if this is // a Git repository we check for being on a detached head and switch to the // real branch, almost always called "master". // TODO(dsymonds): Consider removing this for Go 1.3. func (v *vcsCmd) fixDetachedHead(dir string) error { if v != vcsGit { return nil } // "git symbolic-ref HEAD" succeeds iff we are not on a detached head. if err := v.runVerboseOnly(dir, "symbolic-ref HEAD"); err == nil { // not on a detached head return nil } if buildV { log.Printf("%s on detached head; repairing", dir) } return v.run(dir, "checkout master") } // tags returns the list of available tags for the repo in dir. func (v *vcsCmd) tags(dir string) ([]string, error) { var tags []string for _, tc := range v.tagCmd { out, err := v.runOutput(dir, tc.cmd) if err != nil { return nil, err } re := regexp.MustCompile(`(?m-s)` + tc.pattern) for _, m := range re.FindAllStringSubmatch(string(out), -1) { tags = append(tags, m[1]) } } return tags, nil } // tagSync syncs the repo in dir to the named tag, // which either is a tag returned by tags or is v.tagDefault. func (v *vcsCmd) tagSync(dir, tag string) error { if v.tagSyncCmd == "" { return nil } if tag != "" { for _, tc := range v.tagLookupCmd { out, err := v.runOutput(dir, tc.cmd, "tag", tag) if err != nil { return err } re := regexp.MustCompile(`(?m-s)` + tc.pattern) m := re.FindStringSubmatch(string(out)) if len(m) > 1 { tag = m[1] break } } } if tag == "" && v.tagSyncDefault != "" { return v.run(dir, v.tagSyncDefault) } return v.run(dir, v.tagSyncCmd, "tag", tag) } // A vcsPath describes how to convert an import path into a // version control system and repository name. type vcsPath struct { prefix string // prefix this description applies to re string // pattern for import path repo string // repository to use (expand with match of re) vcs string // version control system to use (expand with match of re) check func(match map[string]string) error // additional checks ping bool // ping for scheme to use to download repo regexp *regexp.Regexp // cached compiled form of re } // vcsForDir inspects dir and its parents to determine the // version control system and code repository to use. // On return, root is the import path // corresponding to the root of the repository // (thus root is a prefix of importPath). func vcsForDir(p *Package) (vcs *vcsCmd, root string, err error) { // Clean and double-check that dir is in (a subdirectory of) srcRoot. dir := filepath.Clean(p.Dir) srcRoot := filepath.Clean(p.build.SrcRoot) if len(dir) <= len(srcRoot) || dir[len(srcRoot)] != filepath.Separator { return nil, "", fmt.Errorf("directory %q is outside source root %q", dir, srcRoot) } origDir := dir for len(dir) > len(srcRoot) { for _, vcs := range vcsList { if fi, err := os.Stat(filepath.Join(dir, "."+vcs.cmd)); err == nil && fi.IsDir() { return vcs, dir[len(srcRoot)+1:], nil } } // Move to parent. ndir := filepath.Dir(dir) if len(ndir) >= len(dir) { // Shouldn't happen, but just in case, stop. break } dir = ndir } return nil, "", fmt.Errorf("directory %q is not using a known version control system", origDir) } // repoRoot represents a version control system, a repo, and a root of // where to put it on disk. type repoRoot struct { vcs *vcsCmd // repo is the repository URL, including scheme repo string // root is the import path corresponding to the root of the // repository root string } var httpPrefixRE = regexp.MustCompile(`^https?:`) // repoRootForImportPath analyzes importPath to determine the // version control system, and code repository to use. func repoRootForImportPath(importPath string) (*repoRoot, error) { rr, err := repoRootForImportPathStatic(importPath, "") if err == errUnknownSite { rr, err = repoRootForImportDynamic(importPath) // repoRootForImportDynamic returns error detail // that is irrelevant if the user didn't intend to use a // dynamic import in the first place. // Squelch it. if err != nil { if buildV { log.Printf("import %q: %v", importPath, err) } err = fmt.Errorf("unrecognized import path %q", importPath) } } if err == nil && strings.Contains(importPath, "...") && strings.Contains(rr.root, "...") { // Do not allow wildcards in the repo root. rr = nil err = fmt.Errorf("cannot expand ... in %q", importPath) } return rr, err } var errUnknownSite = errors.New("dynamic lookup required to find mapping") // repoRootForImportPathStatic attempts to map importPath to a // repoRoot using the commonly-used VCS hosting sites in vcsPaths // (github.com/user/dir), or from a fully-qualified importPath already // containing its VCS type (foo.com/repo.git/dir) // // If scheme is non-empty, that scheme is forced. func repoRootForImportPathStatic(importPath, scheme string) (*repoRoot, error) { // A common error is to use https://packagepath because that's what // hg and git require. Diagnose this helpfully. if loc := httpPrefixRE.FindStringIndex(importPath); loc != nil { // The importPath has been cleaned, so has only one slash. The pattern // ignores the slashes; the error message puts them back on the RHS at least. return nil, fmt.Errorf("%q not allowed in import path", importPath[loc[0]:loc[1]]+"//") } for _, srv := range vcsPaths { if !strings.HasPrefix(importPath, srv.prefix) { continue } m := srv.regexp.FindStringSubmatch(importPath) if m == nil { if srv.prefix != "" { return nil, fmt.Errorf("invalid %s import path %q", srv.prefix, importPath) } continue } // Build map of named subexpression matches for expand. match := map[string]string{ "prefix": srv.prefix, "import": importPath, } for i, name := range srv.regexp.SubexpNames() { if name != "" && match[name] == "" { match[name] = m[i] } } if srv.vcs != "" { match["vcs"] = expand(match, srv.vcs) } if srv.repo != "" { match["repo"] = expand(match, srv.repo) } if srv.check != nil { if err := srv.check(match); err != nil { return nil, err } } vcs := vcsByCmd(match["vcs"]) if vcs == nil { return nil, fmt.Errorf("unknown version control system %q", match["vcs"]) } if srv.ping { if scheme != "" { match["repo"] = scheme + "://" + match["repo"] } else { for _, scheme := range vcs.scheme { if vcs.ping(scheme, match["repo"]) == nil { match["repo"] = scheme + "://" + match["repo"] break } } } } rr := &repoRoot{ vcs: vcs, repo: match["repo"], root: match["root"], } return rr, nil } return nil, errUnknownSite } // repoRootForImportDynamic finds a *repoRoot for a custom domain that's not // statically known by repoRootForImportPathStatic. // // This handles "vanity import paths" like "name.tld/pkg/foo". func repoRootForImportDynamic(importPath string) (*repoRoot, error) { slash := strings.Index(importPath, "/") if slash < 0 { return nil, errors.New("import path doesn't contain a slash") } host := importPath[:slash] if !strings.Contains(host, ".") { return nil, errors.New("import path doesn't contain a hostname") } urlStr, body, err := httpsOrHTTP(importPath) if err != nil { return nil, fmt.Errorf("http/https fetch: %v", err) } defer body.Close() imports, err := parseMetaGoImports(body) if err != nil { return nil, fmt.Errorf("parsing %s: %v", importPath, err) } metaImport, err := matchGoImport(imports, importPath) if err != nil { if err != errNoMatch { return nil, fmt.Errorf("parse %s: %v", urlStr, err) } return nil, fmt.Errorf("parse %s: no go-import meta tags", urlStr) } if buildV { log.Printf("get %q: found meta tag %#v at %s", importPath, metaImport, urlStr) } // If the import was "uni.edu/bob/project", which said the // prefix was "uni.edu" and the RepoRoot was "evilroot.com", // make sure we don't trust Bob and check out evilroot.com to // "uni.edu" yet (possibly overwriting/preempting another // non-evil student). Instead, first verify the root and see // if it matches Bob's claim. if metaImport.Prefix != importPath { if buildV { log.Printf("get %q: verifying non-authoritative meta tag", importPath) } urlStr0 := urlStr urlStr, body, err = httpsOrHTTP(metaImport.Prefix) if err != nil { return nil, fmt.Errorf("fetch %s: %v", urlStr, err) } imports, err := parseMetaGoImports(body) if err != nil { return nil, fmt.Errorf("parsing %s: %v", importPath, err) } if len(imports) == 0 { return nil, fmt.Errorf("fetch %s: no go-import meta tag", urlStr) } metaImport2, err := matchGoImport(imports, importPath) if err != nil || metaImport != metaImport2 { return nil, fmt.Errorf("%s and %s disagree about go-import for %s", urlStr0, urlStr, metaImport.Prefix) } } if !strings.Contains(metaImport.RepoRoot, "://") { return nil, fmt.Errorf("%s: invalid repo root %q; no scheme", urlStr, metaImport.RepoRoot) } rr := &repoRoot{ vcs: vcsByCmd(metaImport.VCS), repo: metaImport.RepoRoot, root: metaImport.Prefix, } if rr.vcs == nil { return nil, fmt.Errorf("%s: unknown vcs %q", urlStr, metaImport.VCS) } return rr, nil } // metaImport represents the parsed tags from HTML files. type metaImport struct { Prefix, VCS, RepoRoot string } // errNoMatch is returned from matchGoImport when there's no applicable match. var errNoMatch = errors.New("no import match") // matchGoImport returns the metaImport from imports matching importPath. // An error is returned if there are multiple matches. // errNoMatch is returned if none match. func matchGoImport(imports []metaImport, importPath string) (_ metaImport, err error) { match := -1 for i, im := range imports { if !strings.HasPrefix(importPath, im.Prefix) { continue } if match != -1 { err = fmt.Errorf("multiple meta tags match import path %q", importPath) return } match = i } if match == -1 { err = errNoMatch return } return imports[match], nil } // expand rewrites s to replace {k} with match[k] for each key k in match. func expand(match map[string]string, s string) string { for k, v := range match { s = strings.Replace(s, "{"+k+"}", v, -1) } return s } // vcsPaths lists the known vcs paths. var vcsPaths = []*vcsPath{ // Google Code - new syntax { prefix: "code.google.com/", re: `^(?Pcode\.google\.com/p/(?P[a-z0-9\-]+)(\.(?P[a-z0-9\-]+))?)(/[A-Za-z0-9_.\-]+)*$`, repo: "https://{root}", check: googleCodeVCS, }, // Google Code - old syntax { re: `^(?P[a-z0-9_\-.]+)\.googlecode\.com/(git|hg|svn)(?P/.*)?$`, check: oldGoogleCode, }, // Github { prefix: "github.com/", re: `^(?Pgithub\.com/[A-Za-z0-9_.\-]+/[A-Za-z0-9_.\-]+)(/[A-Za-z0-9_.\-]+)*$`, vcs: "git", repo: "https://{root}", check: noVCSSuffix, }, // Bitbucket { prefix: "bitbucket.org/", re: `^(?Pbitbucket\.org/(?P[A-Za-z0-9_.\-]+/[A-Za-z0-9_.\-]+))(/[A-Za-z0-9_.\-]+)*$`, repo: "https://{root}", check: bitbucketVCS, }, // Launchpad { prefix: "launchpad.net/", re: `^(?Plaunchpad\.net/((?P[A-Za-z0-9_.\-]+)(?P/[A-Za-z0-9_.\-]+)?|~[A-Za-z0-9_.\-]+/(\+junk|[A-Za-z0-9_.\-]+)/[A-Za-z0-9_.\-]+))(/[A-Za-z0-9_.\-]+)*$`, vcs: "bzr", repo: "https://{root}", check: launchpadVCS, }, // General syntax for any server. { re: `^(?P(?P([a-z0-9.\-]+\.)+[a-z0-9.\-]+(:[0-9]+)?/[A-Za-z0-9_.\-/]*?)\.(?Pbzr|git|hg|svn))(/[A-Za-z0-9_.\-]+)*$`, ping: true, }, } func init() { // fill in cached regexps. // Doing this eagerly discovers invalid regexp syntax // without having to run a command that needs that regexp. for _, srv := range vcsPaths { srv.regexp = regexp.MustCompile(srv.re) } } // noVCSSuffix checks that the repository name does not // end in .foo for any version control system foo. // The usual culprit is ".git". func noVCSSuffix(match map[string]string) error { repo := match["repo"] for _, vcs := range vcsList { if strings.HasSuffix(repo, "."+vcs.cmd) { return fmt.Errorf("invalid version control suffix in %s path", match["prefix"]) } } return nil } var googleCheckout = regexp.MustCompile(`id="checkoutcmd">(hg|git|svn)`) // googleCodeVCS determines the version control system for // a code.google.com repository, by scraping the project's // /source/checkout page. func googleCodeVCS(match map[string]string) error { if err := noVCSSuffix(match); err != nil { return err } data, err := httpGET(expand(match, "https://code.google.com/p/{project}/source/checkout?repo={subrepo}")) if err != nil { return err } if m := googleCheckout.FindSubmatch(data); m != nil { if vcs := vcsByCmd(string(m[1])); vcs != nil { // Subversion requires the old URLs. // TODO: Test. if vcs == vcsSvn { if match["subrepo"] != "" { return fmt.Errorf("sub-repositories not supported in Google Code Subversion projects") } match["repo"] = expand(match, "https://{project}.googlecode.com/svn") } match["vcs"] = vcs.cmd return nil } } return fmt.Errorf("unable to detect version control system for code.google.com/ path") } // oldGoogleCode is invoked for old-style foo.googlecode.com paths. // It prints an error giving the equivalent new path. func oldGoogleCode(match map[string]string) error { return fmt.Errorf("invalid Google Code import path: use %s instead", expand(match, "code.google.com/p/{project}{path}")) } // bitbucketVCS determines the version control system for a // Bitbucket repository, by using the Bitbucket API. func bitbucketVCS(match map[string]string) error { if err := noVCSSuffix(match); err != nil { return err } var resp struct { SCM string `json:"scm"` } url := expand(match, "https://api.bitbucket.org/1.0/repositories/{bitname}") data, err := httpGET(url) if err != nil { return err } if err := json.Unmarshal(data, &resp); err != nil { return fmt.Errorf("decoding %s: %v", url, err) } if vcsByCmd(resp.SCM) != nil { match["vcs"] = resp.SCM if resp.SCM == "git" { match["repo"] += ".git" } return nil } return fmt.Errorf("unable to detect version control system for bitbucket.org/ path") } // launchpadVCS solves the ambiguity for "lp.net/project/foo". In this case, // "foo" could be a series name registered in Launchpad with its own branch, // and it could also be the name of a directory within the main project // branch one level up. func launchpadVCS(match map[string]string) error { if match["project"] == "" || match["series"] == "" { return nil } _, err := httpGET(expand(match, "https://code.launchpad.net/{project}{series}/.bzr/branch-format")) if err != nil { match["root"] = expand(match, "launchpad.net/{project}") match["repo"] = expand(match, "https://{root}") } return nil } go/src/cmd/go/version.go0100644000000000000000000000106612412656734015452 0ustar00rootroot00000000000000// Copyright 2011 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 ( "fmt" "runtime" ) var cmdVersion = &Command{ Run: runVersion, UsageLine: "version", Short: "print Go version", Long: `Version prints the Go version, as reported by runtime.Version.`, } func runVersion(cmd *Command, args []string) { if len(args) != 0 { cmd.Usage() } fmt.Printf("go version %s %s/%s\n", runtime.Version(), runtime.GOOS, runtime.GOARCH) } go/src/cmd/go/vet.go0100644000000000000000000000201712412656734014560 0ustar00rootroot00000000000000// Copyright 2011 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() { addBuildFlagsNX(cmdVet) } var cmdVet = &Command{ Run: runVet, UsageLine: "vet [-n] [-x] [packages]", Short: "run go tool vet on packages", Long: ` Vet runs the Go vet command on the packages named by the import paths. For more about vet, see 'godoc code.google.com/p/go.tools/cmd/vet'. For more about specifying packages, see 'go help packages'. To run the vet tool with specific options, run 'go tool vet'. The -n flag prints commands that would be executed. The -x flag prints commands as they are executed. See also: go fmt, go fix. `, } func runVet(cmd *Command, args []string) { for _, pkg := range packages(args) { // Use pkg.gofiles instead of pkg.Dir so that // the command only applies to this package, // not to packages in subdirectories. run(tool("vet"), relPaths(stringList(pkg.gofiles, pkg.sfiles))) } } go/src/cmd/gofmt0040755000000000000000000000000012412656737014071 5ustar00rootroot00000000000000go/src/cmd/gofmt/doc.go0100644000000000000000000000540112412656737015241 0ustar00rootroot00000000000000// Copyright 2009 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. /* Gofmt formats Go programs. It uses tabs (width = 8) for indentation and blanks for alignment. Without an explicit path, it processes the standard input. Given a file, it operates on that file; given a directory, it operates on all .go files in that directory, recursively. (Files starting with a period are ignored.) By default, gofmt prints the reformatted sources to standard output. Usage: gofmt [flags] [path ...] The flags are: -d Do not print reformatted sources to standard output. If a file's formatting is different than gofmt's, print diffs to standard output. -e Print all (including spurious) errors. -l Do not print reformatted sources to standard output. If a file's formatting is different from gofmt's, print its name to standard output. -r rule Apply the rewrite rule to the source before reformatting. -s Try to simplify code (after applying the rewrite rule, if any). -w Do not print reformatted sources to standard output. If a file's formatting is different from gofmt's, overwrite it with gofmt's version. Debugging support: -cpuprofile filename Write cpu profile to the specified file. The rewrite rule specified with the -r flag must be a string of the form: pattern -> replacement Both pattern and replacement must be valid Go expressions. In the pattern, single-character lowercase identifiers serve as wildcards matching arbitrary sub-expressions; those expressions will be substituted for the same identifiers in the replacement. When gofmt reads from standard input, it accepts either a full Go program or a program fragment. A program fragment must be a syntactically valid declaration list, statement list, or expression. When formatting such a fragment, gofmt preserves leading indentation as well as leading and trailing spaces, so that individual sections of a Go program can be formatted by piping them through gofmt. Examples To check files for unnecessary parentheses: gofmt -r '(a) -> a' -l *.go To remove the parentheses: gofmt -r '(a) -> a' -w *.go To convert the package tree from explicit slice upper bounds to implicit ones: gofmt -r 'α[β:len(α)] -> α[β:]' -w $GOROOT/src/pkg The simplify command When invoked with -s gofmt will make the following source transformations where possible. An array, slice, or map composite literal of the form: []T{T{}, T{}} will be simplified to: []T{{}, {}} A slice expression of the form: s[a:len(s)] will be simplified to: s[a:] A range of the form: for x, _ = range v {...} will be simplified to: for x = range v {...} */ package main // BUG(rsc): The implementation of -r is a bit slow. go/src/cmd/gofmt/gofmt.go0100644000000000000000000002013112412656737015605 0ustar00rootroot00000000000000// Copyright 2009 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 ( "bytes" "flag" "fmt" "go/ast" "go/parser" "go/printer" "go/scanner" "go/token" "io" "io/ioutil" "os" "os/exec" "path/filepath" "runtime/pprof" "strings" ) var ( // main operation modes list = flag.Bool("l", false, "list files whose formatting differs from gofmt's") write = flag.Bool("w", false, "write result to (source) file instead of stdout") rewriteRule = flag.String("r", "", "rewrite rule (e.g., 'a[b:len(a)] -> a[b:]')") simplifyAST = flag.Bool("s", false, "simplify code") doDiff = flag.Bool("d", false, "display diffs instead of rewriting files") allErrors = flag.Bool("e", false, "report all errors (not just the first 10 on different lines)") // debugging cpuprofile = flag.String("cpuprofile", "", "write cpu profile to this file") ) const ( tabWidth = 8 printerMode = printer.UseSpaces | printer.TabIndent ) var ( fileSet = token.NewFileSet() // per process FileSet exitCode = 0 rewrite func(*ast.File) *ast.File parserMode parser.Mode ) func report(err error) { scanner.PrintError(os.Stderr, err) exitCode = 2 } func usage() { fmt.Fprintf(os.Stderr, "usage: gofmt [flags] [path ...]\n") flag.PrintDefaults() os.Exit(2) } func initParserMode() { parserMode = parser.ParseComments if *allErrors { parserMode |= parser.AllErrors } } func isGoFile(f os.FileInfo) bool { // ignore non-Go files name := f.Name() return !f.IsDir() && !strings.HasPrefix(name, ".") && strings.HasSuffix(name, ".go") } // If in == nil, the source is the contents of the file with the given filename. func processFile(filename string, in io.Reader, out io.Writer, stdin bool) error { if in == nil { f, err := os.Open(filename) if err != nil { return err } defer f.Close() in = f } src, err := ioutil.ReadAll(in) if err != nil { return err } file, adjust, err := parse(fileSet, filename, src, stdin) if err != nil { return err } if rewrite != nil { if adjust == nil { file = rewrite(file) } else { fmt.Fprintf(os.Stderr, "warning: rewrite ignored for incomplete programs\n") } } ast.SortImports(fileSet, file) if *simplifyAST { simplify(file) } var buf bytes.Buffer err = (&printer.Config{Mode: printerMode, Tabwidth: tabWidth}).Fprint(&buf, fileSet, file) if err != nil { return err } res := buf.Bytes() if adjust != nil { res = adjust(src, res) } if !bytes.Equal(src, res) { // formatting has changed if *list { fmt.Fprintln(out, filename) } if *write { err = ioutil.WriteFile(filename, res, 0) if err != nil { return err } } if *doDiff { data, err := diff(src, res) if err != nil { return fmt.Errorf("computing diff: %s", err) } fmt.Printf("diff %s gofmt/%s\n", filename, filename) out.Write(data) } } if !*list && !*write && !*doDiff { _, err = out.Write(res) } return err } func visitFile(path string, f os.FileInfo, err error) error { if err == nil && isGoFile(f) { err = processFile(path, nil, os.Stdout, false) } if err != nil { report(err) } return nil } func walkDir(path string) { filepath.Walk(path, visitFile) } func main() { // call gofmtMain in a separate function // so that it can use defer and have them // run before the exit. gofmtMain() os.Exit(exitCode) } func gofmtMain() { flag.Usage = usage flag.Parse() if *cpuprofile != "" { f, err := os.Create(*cpuprofile) if err != nil { fmt.Fprintf(os.Stderr, "creating cpu profile: %s\n", err) exitCode = 2 return } defer f.Close() pprof.StartCPUProfile(f) defer pprof.StopCPUProfile() } initParserMode() initRewrite() if flag.NArg() == 0 { if err := processFile("", os.Stdin, os.Stdout, true); err != nil { report(err) } return } for i := 0; i < flag.NArg(); i++ { path := flag.Arg(i) switch dir, err := os.Stat(path); { case err != nil: report(err) case dir.IsDir(): walkDir(path) default: if err := processFile(path, nil, os.Stdout, false); err != nil { report(err) } } } } func diff(b1, b2 []byte) (data []byte, err error) { f1, err := ioutil.TempFile("", "gofmt") if err != nil { return } defer os.Remove(f1.Name()) defer f1.Close() f2, err := ioutil.TempFile("", "gofmt") if err != nil { return } defer os.Remove(f2.Name()) defer f2.Close() f1.Write(b1) f2.Write(b2) data, err = exec.Command("diff", "-u", f1.Name(), f2.Name()).CombinedOutput() if len(data) > 0 { // diff exits with a non-zero status when the files don't match. // Ignore that failure as long as we get output. err = nil } return } // parse parses src, which was read from filename, // as a Go source file or statement list. func parse(fset *token.FileSet, filename string, src []byte, stdin bool) (*ast.File, func(orig, src []byte) []byte, error) { // Try as whole source file. file, err := parser.ParseFile(fset, filename, src, parserMode) if err == nil { return file, nil, nil } // If the error is that the source file didn't begin with a // package line and this is standard input, fall through to // try as a source fragment. Stop and return on any other error. if !stdin || !strings.Contains(err.Error(), "expected 'package'") { return nil, nil, err } // If this is a declaration list, make it a source file // by inserting a package clause. // Insert using a ;, not a newline, so that the line numbers // in psrc match the ones in src. psrc := append([]byte("package p;"), src...) file, err = parser.ParseFile(fset, filename, psrc, parserMode) if err == nil { adjust := func(orig, src []byte) []byte { // Remove the package clause. // Gofmt has turned the ; into a \n. src = src[len("package p\n"):] return matchSpace(orig, src) } return file, adjust, nil } // If the error is that the source file didn't begin with a // declaration, fall through to try as a statement list. // Stop and return on any other error. if !strings.Contains(err.Error(), "expected declaration") { return nil, nil, err } // If this is a statement list, make it a source file // by inserting a package clause and turning the list // into a function body. This handles expressions too. // Insert using a ;, not a newline, so that the line numbers // in fsrc match the ones in src. fsrc := append(append([]byte("package p; func _() {"), src...), '}') file, err = parser.ParseFile(fset, filename, fsrc, parserMode) if err == nil { adjust := func(orig, src []byte) []byte { // Remove the wrapping. // Gofmt has turned the ; into a \n\n. src = src[len("package p\n\nfunc _() {"):] src = src[:len(src)-len("}\n")] // Gofmt has also indented the function body one level. // Remove that indent. src = bytes.Replace(src, []byte("\n\t"), []byte("\n"), -1) return matchSpace(orig, src) } return file, adjust, nil } // Failed, and out of options. return nil, nil, err } func cutSpace(b []byte) (before, middle, after []byte) { i := 0 for i < len(b) && (b[i] == ' ' || b[i] == '\t' || b[i] == '\n') { i++ } j := len(b) for j > 0 && (b[j-1] == ' ' || b[j-1] == '\t' || b[j-1] == '\n') { j-- } if i <= j { return b[:i], b[i:j], b[j:] } return nil, nil, b[j:] } // matchSpace reformats src to use the same space context as orig. // 1) If orig begins with blank lines, matchSpace inserts them at the beginning of src. // 2) matchSpace copies the indentation of the first non-blank line in orig // to every non-blank line in src. // 3) matchSpace copies the trailing space from orig and uses it in place // of src's trailing space. func matchSpace(orig []byte, src []byte) []byte { before, _, after := cutSpace(orig) i := bytes.LastIndex(before, []byte{'\n'}) before, indent := before[:i+1], before[i+1:] _, src, _ = cutSpace(src) var b bytes.Buffer b.Write(before) for len(src) > 0 { line := src if i := bytes.IndexByte(line, '\n'); i >= 0 { line, src = line[:i+1], line[i+1:] } else { src = nil } if len(line) > 0 && line[0] != '\n' { // not blank b.Write(indent) } b.Write(line) } b.Write(after) return b.Bytes() } go/src/cmd/gofmt/gofmt_test.go0100644000000000000000000000577512412656737016665 0ustar00rootroot00000000000000// Copyright 2011 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 ( "bytes" "io/ioutil" "path/filepath" "strings" "testing" ) func runTest(t *testing.T, in, out, flags string) { // process flags *simplifyAST = false *rewriteRule = "" stdin := false for _, flag := range strings.Split(flags, " ") { elts := strings.SplitN(flag, "=", 2) name := elts[0] value := "" if len(elts) == 2 { value = elts[1] } switch name { case "": // no flags case "-r": *rewriteRule = value case "-s": *simplifyAST = true case "-stdin": // fake flag - pretend input is from stdin stdin = true default: t.Errorf("unrecognized flag name: %s", name) } } initParserMode() initRewrite() var buf bytes.Buffer err := processFile(in, nil, &buf, stdin) if err != nil { t.Error(err) return } expected, err := ioutil.ReadFile(out) if err != nil { t.Error(err) return } if got := buf.Bytes(); !bytes.Equal(got, expected) { t.Errorf("(gofmt %s) != %s (see %s.gofmt)", in, out, in) d, err := diff(expected, got) if err == nil { t.Errorf("%s", d) } if err := ioutil.WriteFile(in+".gofmt", got, 0666); err != nil { t.Error(err) } } } var tests = []struct { in, flags string }{ {"gofmt.go", ""}, {"gofmt_test.go", ""}, {"testdata/composites.input", "-s"}, {"testdata/slices1.input", "-s"}, {"testdata/slices2.input", "-s"}, {"testdata/old.input", ""}, {"testdata/rewrite1.input", "-r=Foo->Bar"}, {"testdata/rewrite2.input", "-r=int->bool"}, {"testdata/rewrite3.input", "-r=x->x"}, {"testdata/rewrite4.input", "-r=(x)->x"}, {"testdata/rewrite5.input", "-r=x+x->2*x"}, {"testdata/rewrite6.input", "-r=fun(x)->Fun(x)"}, {"testdata/rewrite7.input", "-r=fun(x...)->Fun(x)"}, {"testdata/rewrite8.input", "-r=interface{}->int"}, {"testdata/stdin*.input", "-stdin"}, {"testdata/comments.input", ""}, {"testdata/import.input", ""}, {"testdata/crlf.input", ""}, // test case for issue 3961; see also TestCRLF {"testdata/typeswitch.input", ""}, // test case for issue 4470 } func TestRewrite(t *testing.T) { for _, test := range tests { match, err := filepath.Glob(test.in) if err != nil { t.Error(err) continue } for _, in := range match { out := in if strings.HasSuffix(in, ".input") { out = in[:len(in)-len(".input")] + ".golden" } runTest(t, in, out, test.flags) if in != out { // Check idempotence. runTest(t, out, out, test.flags) } } } } func TestCRLF(t *testing.T) { const input = "testdata/crlf.input" // must contain CR/LF's const golden = "testdata/crlf.golden" // must not contain any CR's data, err := ioutil.ReadFile(input) if err != nil { t.Error(err) } if bytes.Index(data, []byte("\r\n")) < 0 { t.Errorf("%s contains no CR/LF's", input) } data, err = ioutil.ReadFile(golden) if err != nil { t.Error(err) } if bytes.Index(data, []byte("\r")) >= 0 { t.Errorf("%s contains CR's", golden) } } go/src/cmd/gofmt/long_test.go0100644000000000000000000000654012412656737016477 0ustar00rootroot00000000000000// Copyright 2011 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 test applies gofmt to all Go files under -root. // To test specific files provide a list of comma-separated // filenames via the -files flag: go test -files=gofmt.go . package main import ( "bytes" "flag" "fmt" "go/ast" "go/printer" "go/token" "io" "os" "path/filepath" "runtime" "strings" "testing" ) var ( root = flag.String("root", runtime.GOROOT(), "test root directory") files = flag.String("files", "", "comma-separated list of files to test") ngo = flag.Int("n", runtime.NumCPU(), "number of goroutines used") verbose = flag.Bool("verbose", false, "verbose mode") nfiles int // number of files processed ) func gofmt(fset *token.FileSet, filename string, src *bytes.Buffer) error { f, _, err := parse(fset, filename, src.Bytes(), false) if err != nil { return err } ast.SortImports(fset, f) src.Reset() return (&printer.Config{Mode: printerMode, Tabwidth: tabWidth}).Fprint(src, fset, f) } func testFile(t *testing.T, b1, b2 *bytes.Buffer, filename string) { // open file f, err := os.Open(filename) if err != nil { t.Error(err) return } // read file b1.Reset() _, err = io.Copy(b1, f) f.Close() if err != nil { t.Error(err) return } // exclude files w/ syntax errors (typically test cases) fset := token.NewFileSet() if _, _, err = parse(fset, filename, b1.Bytes(), false); err != nil { if *verbose { fmt.Fprintf(os.Stderr, "ignoring %s\n", err) } return } // gofmt file if err = gofmt(fset, filename, b1); err != nil { t.Errorf("1st gofmt failed: %v", err) return } // make a copy of the result b2.Reset() b2.Write(b1.Bytes()) // gofmt result again if err = gofmt(fset, filename, b2); err != nil { t.Errorf("2nd gofmt failed: %v", err) return } // the first and 2nd result should be identical if !bytes.Equal(b1.Bytes(), b2.Bytes()) { t.Errorf("gofmt %s not idempotent", filename) } } func testFiles(t *testing.T, filenames <-chan string, done chan<- int) { b1 := new(bytes.Buffer) b2 := new(bytes.Buffer) for filename := range filenames { testFile(t, b1, b2, filename) } done <- 0 } func genFilenames(t *testing.T, filenames chan<- string) { defer close(filenames) handleFile := func(filename string, fi os.FileInfo, err error) error { if err != nil { t.Error(err) return nil } if isGoFile(fi) { filenames <- filename nfiles++ } return nil } // test Go files provided via -files, if any if *files != "" { for _, filename := range strings.Split(*files, ",") { fi, err := os.Stat(filename) handleFile(filename, fi, err) } return // ignore files under -root } // otherwise, test all Go files under *root filepath.Walk(*root, handleFile) } func TestAll(t *testing.T) { if testing.Short() { return } if *ngo < 1 { *ngo = 1 // make sure test is run } if *verbose { fmt.Printf("running test using %d goroutines\n", *ngo) } // generate filenames filenames := make(chan string, 32) go genFilenames(t, filenames) // launch test goroutines done := make(chan int) for i := 0; i < *ngo; i++ { go testFiles(t, filenames, done) } // wait for all test goroutines to complete for i := 0; i < *ngo; i++ { <-done } if *verbose { fmt.Printf("processed %d files\n", nfiles) } } go/src/cmd/gofmt/rewrite.go0100644000000000000000000001774512412656737016173 0ustar00rootroot00000000000000// Copyright 2009 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 ( "fmt" "go/ast" "go/parser" "go/token" "os" "reflect" "strings" "unicode" "unicode/utf8" ) func initRewrite() { if *rewriteRule == "" { rewrite = nil // disable any previous rewrite return } f := strings.Split(*rewriteRule, "->") if len(f) != 2 { fmt.Fprintf(os.Stderr, "rewrite rule must be of the form 'pattern -> replacement'\n") os.Exit(2) } pattern := parseExpr(f[0], "pattern") replace := parseExpr(f[1], "replacement") rewrite = func(p *ast.File) *ast.File { return rewriteFile(pattern, replace, p) } } // parseExpr parses s as an expression. // It might make sense to expand this to allow statement patterns, // but there are problems with preserving formatting and also // with what a wildcard for a statement looks like. func parseExpr(s, what string) ast.Expr { x, err := parser.ParseExpr(s) if err != nil { fmt.Fprintf(os.Stderr, "parsing %s %s at %s\n", what, s, err) os.Exit(2) } return x } // Keep this function for debugging. /* func dump(msg string, val reflect.Value) { fmt.Printf("%s:\n", msg) ast.Print(fileSet, val.Interface()) fmt.Println() } */ // rewriteFile applies the rewrite rule 'pattern -> replace' to an entire file. func rewriteFile(pattern, replace ast.Expr, p *ast.File) *ast.File { cmap := ast.NewCommentMap(fileSet, p, p.Comments) m := make(map[string]reflect.Value) pat := reflect.ValueOf(pattern) repl := reflect.ValueOf(replace) var rewriteVal func(val reflect.Value) reflect.Value rewriteVal = func(val reflect.Value) reflect.Value { // don't bother if val is invalid to start with if !val.IsValid() { return reflect.Value{} } for k := range m { delete(m, k) } val = apply(rewriteVal, val) if match(m, pat, val) { val = subst(m, repl, reflect.ValueOf(val.Interface().(ast.Node).Pos())) } return val } r := apply(rewriteVal, reflect.ValueOf(p)).Interface().(*ast.File) r.Comments = cmap.Filter(r).Comments() // recreate comments list return r } // set is a wrapper for x.Set(y); it protects the caller from panics if x cannot be changed to y. func set(x, y reflect.Value) { // don't bother if x cannot be set or y is invalid if !x.CanSet() || !y.IsValid() { return } defer func() { if x := recover(); x != nil { if s, ok := x.(string); ok && (strings.Contains(s, "type mismatch") || strings.Contains(s, "not assignable")) { // x cannot be set to y - ignore this rewrite return } panic(x) } }() x.Set(y) } // Values/types for special cases. var ( objectPtrNil = reflect.ValueOf((*ast.Object)(nil)) scopePtrNil = reflect.ValueOf((*ast.Scope)(nil)) identType = reflect.TypeOf((*ast.Ident)(nil)) objectPtrType = reflect.TypeOf((*ast.Object)(nil)) positionType = reflect.TypeOf(token.NoPos) callExprType = reflect.TypeOf((*ast.CallExpr)(nil)) scopePtrType = reflect.TypeOf((*ast.Scope)(nil)) ) // apply replaces each AST field x in val with f(x), returning val. // To avoid extra conversions, f operates on the reflect.Value form. func apply(f func(reflect.Value) reflect.Value, val reflect.Value) reflect.Value { if !val.IsValid() { return reflect.Value{} } // *ast.Objects introduce cycles and are likely incorrect after // rewrite; don't follow them but replace with nil instead if val.Type() == objectPtrType { return objectPtrNil } // similarly for scopes: they are likely incorrect after a rewrite; // replace them with nil if val.Type() == scopePtrType { return scopePtrNil } switch v := reflect.Indirect(val); v.Kind() { case reflect.Slice: for i := 0; i < v.Len(); i++ { e := v.Index(i) set(e, f(e)) } case reflect.Struct: for i := 0; i < v.NumField(); i++ { e := v.Field(i) set(e, f(e)) } case reflect.Interface: e := v.Elem() set(v, f(e)) } return val } func isWildcard(s string) bool { rune, size := utf8.DecodeRuneInString(s) return size == len(s) && unicode.IsLower(rune) } // match returns true if pattern matches val, // recording wildcard submatches in m. // If m == nil, match checks whether pattern == val. func match(m map[string]reflect.Value, pattern, val reflect.Value) bool { // Wildcard matches any expression. If it appears multiple // times in the pattern, it must match the same expression // each time. if m != nil && pattern.IsValid() && pattern.Type() == identType { name := pattern.Interface().(*ast.Ident).Name if isWildcard(name) && val.IsValid() { // wildcards only match valid (non-nil) expressions. if _, ok := val.Interface().(ast.Expr); ok && !val.IsNil() { if old, ok := m[name]; ok { return match(nil, old, val) } m[name] = val return true } } } // Otherwise, pattern and val must match recursively. if !pattern.IsValid() || !val.IsValid() { return !pattern.IsValid() && !val.IsValid() } if pattern.Type() != val.Type() { return false } // Special cases. switch pattern.Type() { case identType: // For identifiers, only the names need to match // (and none of the other *ast.Object information). // This is a common case, handle it all here instead // of recursing down any further via reflection. p := pattern.Interface().(*ast.Ident) v := val.Interface().(*ast.Ident) return p == nil && v == nil || p != nil && v != nil && p.Name == v.Name case objectPtrType, positionType: // object pointers and token positions always match return true case callExprType: // For calls, the Ellipsis fields (token.Position) must // match since that is how f(x) and f(x...) are different. // Check them here but fall through for the remaining fields. p := pattern.Interface().(*ast.CallExpr) v := val.Interface().(*ast.CallExpr) if p.Ellipsis.IsValid() != v.Ellipsis.IsValid() { return false } } p := reflect.Indirect(pattern) v := reflect.Indirect(val) if !p.IsValid() || !v.IsValid() { return !p.IsValid() && !v.IsValid() } switch p.Kind() { case reflect.Slice: if p.Len() != v.Len() { return false } for i := 0; i < p.Len(); i++ { if !match(m, p.Index(i), v.Index(i)) { return false } } return true case reflect.Struct: if p.NumField() != v.NumField() { return false } for i := 0; i < p.NumField(); i++ { if !match(m, p.Field(i), v.Field(i)) { return false } } return true case reflect.Interface: return match(m, p.Elem(), v.Elem()) } // Handle token integers, etc. return p.Interface() == v.Interface() } // subst returns a copy of pattern with values from m substituted in place // of wildcards and pos used as the position of tokens from the pattern. // if m == nil, subst returns a copy of pattern and doesn't change the line // number information. func subst(m map[string]reflect.Value, pattern reflect.Value, pos reflect.Value) reflect.Value { if !pattern.IsValid() { return reflect.Value{} } // Wildcard gets replaced with map value. if m != nil && pattern.Type() == identType { name := pattern.Interface().(*ast.Ident).Name if isWildcard(name) { if old, ok := m[name]; ok { return subst(nil, old, reflect.Value{}) } } } if pos.IsValid() && pattern.Type() == positionType { // use new position only if old position was valid in the first place if old := pattern.Interface().(token.Pos); !old.IsValid() { return pattern } return pos } // Otherwise copy. switch p := pattern; p.Kind() { case reflect.Slice: v := reflect.MakeSlice(p.Type(), p.Len(), p.Len()) for i := 0; i < p.Len(); i++ { v.Index(i).Set(subst(m, p.Index(i), pos)) } return v case reflect.Struct: v := reflect.New(p.Type()).Elem() for i := 0; i < p.NumField(); i++ { v.Field(i).Set(subst(m, p.Field(i), pos)) } return v case reflect.Ptr: v := reflect.New(p.Type()).Elem() if elem := p.Elem(); elem.IsValid() { v.Set(subst(m, elem, pos).Addr()) } return v case reflect.Interface: v := reflect.New(p.Type()).Elem() if elem := p.Elem(); elem.IsValid() { v.Set(subst(m, elem, pos)) } return v } return pattern } go/src/cmd/gofmt/simplify.go0100644000000000000000000000716212412656737016336 0ustar00rootroot00000000000000// 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. package main import ( "go/ast" "go/token" "reflect" ) type simplifier struct { hasDotImport bool // package file contains: import . "some/import/path" } func (s *simplifier) Visit(node ast.Node) ast.Visitor { switch n := node.(type) { case *ast.CompositeLit: // array, slice, and map composite literals may be simplified outer := n var eltType ast.Expr switch typ := outer.Type.(type) { case *ast.ArrayType: eltType = typ.Elt case *ast.MapType: eltType = typ.Value } if eltType != nil { typ := reflect.ValueOf(eltType) for i, x := range outer.Elts { px := &outer.Elts[i] // look at value of indexed/named elements if t, ok := x.(*ast.KeyValueExpr); ok { x = t.Value px = &t.Value } ast.Walk(s, x) // simplify x // if the element is a composite literal and its literal type // matches the outer literal's element type exactly, the inner // literal type may be omitted if inner, ok := x.(*ast.CompositeLit); ok { if match(nil, typ, reflect.ValueOf(inner.Type)) { inner.Type = nil } } // if the outer literal's element type is a pointer type *T // and the element is & of a composite literal of type T, // the inner &T may be omitted. if ptr, ok := eltType.(*ast.StarExpr); ok { if addr, ok := x.(*ast.UnaryExpr); ok && addr.Op == token.AND { if inner, ok := addr.X.(*ast.CompositeLit); ok { if match(nil, reflect.ValueOf(ptr.X), reflect.ValueOf(inner.Type)) { inner.Type = nil // drop T *px = inner // drop & } } } } } // node was simplified - stop walk (there are no subnodes to simplify) return nil } case *ast.SliceExpr: // a slice expression of the form: s[a:len(s)] // can be simplified to: s[a:] // if s is "simple enough" (for now we only accept identifiers) if s.hasDotImport { // if dot imports are present, we cannot be certain that an // unresolved "len" identifier refers to the predefined len() break } if s, _ := n.X.(*ast.Ident); s != nil && s.Obj != nil { // the array/slice object is a single, resolved identifier if call, _ := n.High.(*ast.CallExpr); call != nil && len(call.Args) == 1 && !call.Ellipsis.IsValid() { // the high expression is a function call with a single argument if fun, _ := call.Fun.(*ast.Ident); fun != nil && fun.Name == "len" && fun.Obj == nil { // the function called is "len" and it is not locally defined; and // because we don't have dot imports, it must be the predefined len() if arg, _ := call.Args[0].(*ast.Ident); arg != nil && arg.Obj == s.Obj { // the len argument is the array/slice object n.High = nil } } } } // Note: We could also simplify slice expressions of the form s[0:b] to s[:b] // but we leave them as is since sometimes we want to be very explicit // about the lower bound. // An example where the 0 helps: // x, y, z := b[0:2], b[2:4], b[4:6] // An example where it does not: // x, y := b[:n], b[n:] case *ast.RangeStmt: // a range of the form: for x, _ = range v {...} // can be simplified to: for x = range v {...} if ident, _ := n.Value.(*ast.Ident); ident != nil && ident.Name == "_" { n.Value = nil } } return s } func simplify(f *ast.File) { var s simplifier // determine if f contains dot imports for _, imp := range f.Imports { if imp.Name != nil && imp.Name.Name == "." { s.hasDotImport = true break } } ast.Walk(&s, f) } go/src/cmd/gofmt/testdata0040755000000000000000000000000012412656737015702 5ustar00rootroot00000000000000go/src/cmd/gofmt/testdata/comments.golden0100644000000000000000000000011412412656734020766 0ustar00rootroot00000000000000package main func main() {} // comment here func f() {} //line foo.go:1 go/src/cmd/gofmt/testdata/comments.input0100644000000000000000000000011412412656734020655 0ustar00rootroot00000000000000package main func main() {} // comment here func f() {} //line foo.go:1 go/src/cmd/gofmt/testdata/composites.golden0100644000000000000000000000461212412656737021340 0ustar00rootroot00000000000000package P type T struct { x, y int } var _ = [42]T{ {}, {1, 2}, {3, 4}, } var _ = [...]T{ {}, {1, 2}, {3, 4}, } var _ = []T{ {}, {1, 2}, {3, 4}, } var _ = []T{ {}, 10: {1, 2}, 20: {3, 4}, } var _ = []struct { x, y int }{ {}, 10: {1, 2}, 20: {3, 4}, } var _ = []interface{}{ T{}, 10: T{1, 2}, 20: T{3, 4}, } var _ = [][]int{ {}, {1, 2}, {3, 4}, } var _ = [][]int{ ([]int{}), ([]int{1, 2}), {3, 4}, } var _ = [][][]int{ {}, { {}, {0, 1, 2, 3}, {4, 5}, }, } var _ = map[string]T{ "foo": {}, "bar": {1, 2}, "bal": {3, 4}, } var _ = map[string]struct { x, y int }{ "foo": {}, "bar": {1, 2}, "bal": {3, 4}, } var _ = map[string]interface{}{ "foo": T{}, "bar": T{1, 2}, "bal": T{3, 4}, } var _ = map[string][]int{ "foo": {}, "bar": {1, 2}, "bal": {3, 4}, } var _ = map[string][]int{ "foo": ([]int{}), "bar": ([]int{1, 2}), "bal": {3, 4}, } // from exp/4s/data.go var pieces4 = []Piece{ {0, 0, Point{4, 1}, []Point{{0, 0}, {1, 0}, {1, 0}, {1, 0}}, nil, nil}, {1, 0, Point{1, 4}, []Point{{0, 0}, {0, 1}, {0, 1}, {0, 1}}, nil, nil}, {2, 0, Point{4, 1}, []Point{{0, 0}, {1, 0}, {1, 0}, {1, 0}}, nil, nil}, {3, 0, Point{1, 4}, []Point{{0, 0}, {0, 1}, {0, 1}, {0, 1}}, nil, nil}, } var _ = [42]*T{ {}, {1, 2}, {3, 4}, } var _ = [...]*T{ {}, {1, 2}, {3, 4}, } var _ = []*T{ {}, {1, 2}, {3, 4}, } var _ = []*T{ {}, 10: {1, 2}, 20: {3, 4}, } var _ = []*struct { x, y int }{ {}, 10: {1, 2}, 20: {3, 4}, } var _ = []interface{}{ &T{}, 10: &T{1, 2}, 20: &T{3, 4}, } var _ = []*[]int{ {}, {1, 2}, {3, 4}, } var _ = []*[]int{ (&[]int{}), (&[]int{1, 2}), {3, 4}, } var _ = []*[]*[]int{ {}, { {}, {0, 1, 2, 3}, {4, 5}, }, } var _ = map[string]*T{ "foo": {}, "bar": {1, 2}, "bal": {3, 4}, } var _ = map[string]*struct { x, y int }{ "foo": {}, "bar": {1, 2}, "bal": {3, 4}, } var _ = map[string]interface{}{ "foo": &T{}, "bar": &T{1, 2}, "bal": &T{3, 4}, } var _ = map[string]*[]int{ "foo": {}, "bar": {1, 2}, "bal": {3, 4}, } var _ = map[string]*[]int{ "foo": (&[]int{}), "bar": (&[]int{1, 2}), "bal": {3, 4}, } var pieces4 = []*Piece{ {0, 0, Point{4, 1}, []Point{{0, 0}, {1, 0}, {1, 0}, {1, 0}}, nil, nil}, {1, 0, Point{1, 4}, []Point{{0, 0}, {0, 1}, {0, 1}, {0, 1}}, nil, nil}, {2, 0, Point{4, 1}, []Point{{0, 0}, {1, 0}, {1, 0}, {1, 0}}, nil, nil}, {3, 0, Point{1, 4}, []Point{{0, 0}, {0, 1}, {0, 1}, {0, 1}}, nil, nil}, } go/src/cmd/gofmt/testdata/composites.input0100644000000000000000000000577212412656737021237 0ustar00rootroot00000000000000package P type T struct { x, y int } var _ = [42]T{ T{}, T{1, 2}, T{3, 4}, } var _ = [...]T{ T{}, T{1, 2}, T{3, 4}, } var _ = []T{ T{}, T{1, 2}, T{3, 4}, } var _ = []T{ T{}, 10: T{1, 2}, 20: T{3, 4}, } var _ = []struct { x, y int }{ struct{ x, y int }{}, 10: struct{ x, y int }{1, 2}, 20: struct{ x, y int }{3, 4}, } var _ = []interface{}{ T{}, 10: T{1, 2}, 20: T{3, 4}, } var _ = [][]int{ []int{}, []int{1, 2}, []int{3, 4}, } var _ = [][]int{ ([]int{}), ([]int{1, 2}), []int{3, 4}, } var _ = [][][]int{ [][]int{}, [][]int{ []int{}, []int{0, 1, 2, 3}, []int{4, 5}, }, } var _ = map[string]T{ "foo": T{}, "bar": T{1, 2}, "bal": T{3, 4}, } var _ = map[string]struct { x, y int }{ "foo": struct{ x, y int }{}, "bar": struct{ x, y int }{1, 2}, "bal": struct{ x, y int }{3, 4}, } var _ = map[string]interface{}{ "foo": T{}, "bar": T{1, 2}, "bal": T{3, 4}, } var _ = map[string][]int{ "foo": []int{}, "bar": []int{1, 2}, "bal": []int{3, 4}, } var _ = map[string][]int{ "foo": ([]int{}), "bar": ([]int{1, 2}), "bal": []int{3, 4}, } // from exp/4s/data.go var pieces4 = []Piece{ Piece{0, 0, Point{4, 1}, []Point{Point{0, 0}, Point{1, 0}, Point{1, 0}, Point{1, 0}}, nil, nil}, Piece{1, 0, Point{1, 4}, []Point{Point{0, 0}, Point{0, 1}, Point{0, 1}, Point{0, 1}}, nil, nil}, Piece{2, 0, Point{4, 1}, []Point{Point{0, 0}, Point{1, 0}, Point{1, 0}, Point{1, 0}}, nil, nil}, Piece{3, 0, Point{1, 4}, []Point{Point{0, 0}, Point{0, 1}, Point{0, 1}, Point{0, 1}}, nil, nil}, } var _ = [42]*T{ &T{}, &T{1, 2}, &T{3, 4}, } var _ = [...]*T{ &T{}, &T{1, 2}, &T{3, 4}, } var _ = []*T{ &T{}, &T{1, 2}, &T{3, 4}, } var _ = []*T{ &T{}, 10: &T{1, 2}, 20: &T{3, 4}, } var _ = []*struct { x, y int }{ &struct{ x, y int }{}, 10: &struct{ x, y int }{1, 2}, 20: &struct{ x, y int }{3, 4}, } var _ = []interface{}{ &T{}, 10: &T{1, 2}, 20: &T{3, 4}, } var _ = []*[]int{ &[]int{}, &[]int{1, 2}, &[]int{3, 4}, } var _ = []*[]int{ (&[]int{}), (&[]int{1, 2}), &[]int{3, 4}, } var _ = []*[]*[]int{ &[]*[]int{}, &[]*[]int{ &[]int{}, &[]int{0, 1, 2, 3}, &[]int{4, 5}, }, } var _ = map[string]*T{ "foo": &T{}, "bar": &T{1, 2}, "bal": &T{3, 4}, } var _ = map[string]*struct { x, y int }{ "foo": &struct{ x, y int }{}, "bar": &struct{ x, y int }{1, 2}, "bal": &struct{ x, y int }{3, 4}, } var _ = map[string]interface{}{ "foo": &T{}, "bar": &T{1, 2}, "bal": &T{3, 4}, } var _ = map[string]*[]int{ "foo": &[]int{}, "bar": &[]int{1, 2}, "bal": &[]int{3, 4}, } var _ = map[string]*[]int{ "foo": (&[]int{}), "bar": (&[]int{1, 2}), "bal": &[]int{3, 4}, } var pieces4 = []*Piece{ &Piece{0, 0, Point{4, 1}, []Point{Point{0, 0}, Point{1, 0}, Point{1, 0}, Point{1, 0}}, nil, nil}, &Piece{1, 0, Point{1, 4}, []Point{Point{0, 0}, Point{0, 1}, Point{0, 1}, Point{0, 1}}, nil, nil}, &Piece{2, 0, Point{4, 1}, []Point{Point{0, 0}, Point{1, 0}, Point{1, 0}, Point{1, 0}}, nil, nil}, &Piece{3, 0, Point{1, 4}, []Point{Point{0, 0}, Point{0, 1}, Point{0, 1}, Point{0, 1}}, nil, nil}, } go/src/cmd/gofmt/testdata/crlf.golden0100644000000000000000000000031712412656737020077 0ustar00rootroot00000000000000/* Source containing CR/LF line endings. The gofmt'ed output must only have LF line endings. */ package main func main() { // line comment println("hello, world!") // another line comment println() } go/src/cmd/gofmt/testdata/crlf.input0100644000000000000000000000033312412656737017764 0ustar00rootroot00000000000000/* Source containing CR/LF line endings. The gofmt'ed output must only have LF line endings. */ package main func main() { // line comment println("hello, world!") // another line comment println() } go/src/cmd/gofmt/testdata/import.golden0100644000000000000000000000205312412656734020457 0ustar00rootroot00000000000000package main import ( "errors" "fmt" "io" "log" "math" ) import ( "fmt" "math" "log" "errors" "io" ) import ( "errors" "fmt" "io" "log" "math" "fmt" "math" "log" "errors" "io" ) import ( // a block with comments "errors" "fmt" // for Printf "io" // for Reader "log" // for Fatal "math" ) import ( "fmt" // for Printf "math" "log" // for Fatal "errors" "io" // for Reader ) import ( // for Printf "fmt" "math" // for Fatal "log" "errors" // for Reader "io" ) import ( "errors" "fmt" // for Printf "io" // for Reader "log" // for Fatal "math" "fmt" // for Printf "math" "log" // for Fatal "errors" "io" // for Reader ) import ( "fmt" // for Printf "errors" "io" // for Reader "log" // for Fatal "math" "errors" "fmt" // for Printf "io" // for Reader "log" // for Fatal "math" ) // Test deduping and extended sorting import ( a "A" // aA b "A" // bA1 b "A" // bA2 "B" // B . "B" // .B _ "B" // _b "C" a "D" // aD ) import ( "dedup_by_group" "dedup_by_group" ) go/src/cmd/gofmt/testdata/import.input0100644000000000000000000000211512412656734020345 0ustar00rootroot00000000000000package main import ( "fmt" "math" "log" "errors" "io" ) import ( "fmt" "math" "log" "errors" "io" ) import ( "fmt" "math" "log" "errors" "io" "fmt" "math" "log" "errors" "io" ) import ( // a block with comments "fmt" // for Printf "math" "log" // for Fatal "errors" "io" // for Reader ) import ( "fmt" // for Printf "math" "log" // for Fatal "errors" "io" // for Reader ) import ( // for Printf "fmt" "math" // for Fatal "log" "errors" // for Reader "io" ) import ( "fmt" // for Printf "math" "log" // for Fatal "errors" "io" // for Reader "fmt" // for Printf "math" "log" // for Fatal "errors" "io" // for Reader ) import ( "fmt" // for Printf "math" "log" // for Fatal "errors" "io" // for Reader "fmt" // for Printf "math" "log" // for Fatal "errors" "io" // for Reader ) // Test deduping and extended sorting import ( "B" // B a "A" // aA b "A" // bA2 b "A" // bA1 . "B" // .B . "B" "C" "C" "C" a "D" // aD "B" _ "B" // _b ) import ( "dedup_by_group" "dedup_by_group" "dedup_by_group" ) go/src/cmd/gofmt/testdata/old.golden0100644000000000000000000000006512412656734017724 0ustar00rootroot00000000000000package P func f() { if x { y } else { z } } go/src/cmd/gofmt/testdata/old.input0100644000000000000000000000006012412656734017606 0ustar00rootroot00000000000000package P func f() { if x { y } else z } go/src/cmd/gofmt/testdata/rewrite1.golden0100644000000000000000000000034312412656737020712 0ustar00rootroot00000000000000// Copyright 2011 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 type Bar int func main() { var a Bar println(a) } go/src/cmd/gofmt/testdata/rewrite1.input0100644000000000000000000000034312412656737020601 0ustar00rootroot00000000000000// Copyright 2011 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 type Foo int func main() { var a Foo println(a) } go/src/cmd/gofmt/testdata/rewrite2.golden0100644000000000000000000000060112412656737020710 0ustar00rootroot00000000000000// Copyright 2011 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 p // Slices have nil Len values in the corresponding ast.ArrayType // node and reflect.NewValue(slice.Len) is an invalid reflect.Value. // The rewriter must not crash in that case. Was issue 1696. func f() []bool {} go/src/cmd/gofmt/testdata/rewrite2.input0100644000000000000000000000060012412656737020576 0ustar00rootroot00000000000000// Copyright 2011 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 p // Slices have nil Len values in the corresponding ast.ArrayType // node and reflect.NewValue(slice.Len) is an invalid reflect.Value. // The rewriter must not crash in that case. Was issue 1696. func f() []int {} go/src/cmd/gofmt/testdata/rewrite3.golden0100644000000000000000000000062512412656737020717 0ustar00rootroot00000000000000// Copyright 2011 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 // Field tags are *ast.BasicLit nodes that are nil when the tag is // absent. These nil nodes must not be mistaken for expressions, // the rewriter should not try to dereference them. Was issue 2410. type Foo struct { Field int } go/src/cmd/gofmt/testdata/rewrite3.input0100644000000000000000000000062512412656737020606 0ustar00rootroot00000000000000// Copyright 2011 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 // Field tags are *ast.BasicLit nodes that are nil when the tag is // absent. These nil nodes must not be mistaken for expressions, // the rewriter should not try to dereference them. Was issue 2410. type Foo struct { Field int } go/src/cmd/gofmt/testdata/rewrite4.golden0100644000000000000000000000202412412656737020713 0ustar00rootroot00000000000000// 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. // Rewriting of parenthesized expressions (x) -> x // must not drop parentheses if that would lead to // wrong association of the operands. // Was issue 1847. package main // From example 1 of issue 1847. func _() { var t = (&T{1000}).Id() } // From example 2 of issue 1847. func _() { fmt.Println((*xpp).a) } // Some more test cases. func _() { _ = (-x).f _ = (*x).f _ = (&x).f _ = (!x).f _ = -x.f _ = *x.f _ = &x.f _ = !x.f (-x).f() (*x).f() (&x).f() (!x).f() _ = -x.f() _ = *x.f() _ = &x.f() _ = !x.f() _ = (-x).f _ = (*x).f _ = (&x).f _ = (!x).f _ = -x.f _ = *x.f _ = &x.f _ = !x.f (-x).f() (*x).f() (&x).f() (!x).f() _ = -x.f() _ = *x.f() _ = &x.f() _ = !x.f() _ = -x.f _ = *x.f _ = &x.f _ = !x.f _ = -x.f _ = *x.f _ = &x.f _ = !x.f _ = -x.f() _ = *x.f() _ = &x.f() _ = !x.f() _ = -x.f() _ = *x.f() _ = &x.f() _ = !x.f() } go/src/cmd/gofmt/testdata/rewrite4.input0100644000000000000000000000215212412656737020604 0ustar00rootroot00000000000000// 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. // Rewriting of parenthesized expressions (x) -> x // must not drop parentheses if that would lead to // wrong association of the operands. // Was issue 1847. package main // From example 1 of issue 1847. func _() { var t = (&T{1000}).Id() } // From example 2 of issue 1847. func _() { fmt.Println((*xpp).a) } // Some more test cases. func _() { _ = (-x).f _ = (*x).f _ = (&x).f _ = (!x).f _ = (-x.f) _ = (*x.f) _ = (&x.f) _ = (!x.f) (-x).f() (*x).f() (&x).f() (!x).f() _ = (-x.f()) _ = (*x.f()) _ = (&x.f()) _ = (!x.f()) _ = ((-x)).f _ = ((*x)).f _ = ((&x)).f _ = ((!x)).f _ = ((-x.f)) _ = ((*x.f)) _ = ((&x.f)) _ = ((!x.f)) ((-x)).f() ((*x)).f() ((&x)).f() ((!x)).f() _ = ((-x.f())) _ = ((*x.f())) _ = ((&x.f())) _ = ((!x.f())) _ = -(x).f _ = *(x).f _ = &(x).f _ = !(x).f _ = -x.f _ = *x.f _ = &x.f _ = !x.f _ = -(x).f() _ = *(x).f() _ = &(x).f() _ = !(x).f() _ = -x.f() _ = *x.f() _ = &x.f() _ = !x.f() } go/src/cmd/gofmt/testdata/rewrite5.golden0100644000000000000000000000065112412656737020720 0ustar00rootroot00000000000000// Copyright 2011 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. // Rewriting of expressions containing nodes with associated comments to // expressions without those nodes must also eliminate the associated // comments. package p func f(x int) int { _ = 2 * x // this comment remains in the rewrite _ = 2 * x return 2 * x } go/src/cmd/gofmt/testdata/rewrite5.input0100644000000000000000000000100512412656737020601 0ustar00rootroot00000000000000// Copyright 2011 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. // Rewriting of expressions containing nodes with associated comments to // expressions without those nodes must also eliminate the associated // comments. package p func f(x int) int { _ = x + x // this comment remains in the rewrite _ = x /* this comment must not be in the rewrite */ + x return x /* this comment must not be in the rewrite */ + x } go/src/cmd/gofmt/testdata/rewrite6.golden0100644000000000000000000000066412412656737020725 0ustar00rootroot00000000000000// Copyright 2013 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. // Rewriting of calls must take the ... (ellipsis) // attribute for the last argument into account. package p func fun(x []int) {} func g(x []int) { Fun(x) // -r='fun(x)->Fun(x)' should rewrite this to Fun(x) fun(x...) // -r='fun(x)->Fun(x)' should not rewrite this } go/src/cmd/gofmt/testdata/rewrite6.input0100644000000000000000000000066412412656737020614 0ustar00rootroot00000000000000// Copyright 2013 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. // Rewriting of calls must take the ... (ellipsis) // attribute for the last argument into account. package p func fun(x []int) {} func g(x []int) { fun(x) // -r='fun(x)->Fun(x)' should rewrite this to Fun(x) fun(x...) // -r='fun(x)->Fun(x)' should not rewrite this } go/src/cmd/gofmt/testdata/rewrite7.golden0100644000000000000000000000066412412656737020726 0ustar00rootroot00000000000000// Copyright 2013 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. // Rewriting of calls must take the ... (ellipsis) // attribute for the last argument into account. package p func fun(x []int) {} func g(x []int) { fun(x) // -r='fun(x...)->Fun(x)' should not rewrite this Fun(x) // -r='fun(x...)->Fun(x)' should rewrite this to Fun(x) } go/src/cmd/gofmt/testdata/rewrite7.input0100644000000000000000000000067212412656737020614 0ustar00rootroot00000000000000// Copyright 2013 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. // Rewriting of calls must take the ... (ellipsis) // attribute for the last argument into account. package p func fun(x []int) {} func g(x []int) { fun(x) // -r='fun(x...)->Fun(x)' should not rewrite this fun(x...) // -r='fun(x...)->Fun(x)' should rewrite this to Fun(x) } go/src/cmd/gofmt/testdata/rewrite8.golden0100644000000000000000000000040712412656737020722 0ustar00rootroot00000000000000// Copyright 2013 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. // Check that literal type expression rewrites are accepted. // Was issue 4406. package p type T int go/src/cmd/gofmt/testdata/rewrite8.input0100644000000000000000000000041712412656737020612 0ustar00rootroot00000000000000// Copyright 2013 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. // Check that literal type expression rewrites are accepted. // Was issue 4406. package p type T interface{} go/src/cmd/gofmt/testdata/slices1.golden0100644000000000000000000000137212412656737020516 0ustar00rootroot00000000000000// Test cases for slice expression simplification. package p var ( a [10]byte b [20]float32 s []int t struct { s []byte } _ = a[0:] _ = a[1:10] _ = a[2:] _ = a[3:(len(a))] _ = a[len(a) : len(a)-1] _ = a[0:len(b)] _ = a[:] _ = a[:10] _ = a[:] _ = a[:(len(a))] _ = a[:len(a)-1] _ = a[:len(b)] _ = s[0:] _ = s[1:10] _ = s[2:] _ = s[3:(len(s))] _ = s[len(a) : len(s)-1] _ = s[0:len(b)] _ = s[:] _ = s[:10] _ = s[:] _ = s[:(len(s))] _ = s[:len(s)-1] _ = s[:len(b)] _ = t.s[0:] _ = t.s[1:10] _ = t.s[2:len(t.s)] _ = t.s[3:(len(t.s))] _ = t.s[len(a) : len(t.s)-1] _ = t.s[0:len(b)] _ = t.s[:] _ = t.s[:10] _ = t.s[:len(t.s)] _ = t.s[:(len(t.s))] _ = t.s[:len(t.s)-1] _ = t.s[:len(b)] ) func _() { s := s[0:] _ = s } go/src/cmd/gofmt/testdata/slices1.input0100644000000000000000000000143012412656737020400 0ustar00rootroot00000000000000// Test cases for slice expression simplification. package p var ( a [10]byte b [20]float32 s []int t struct { s []byte } _ = a[0:] _ = a[1:10] _ = a[2:len(a)] _ = a[3:(len(a))] _ = a[len(a) : len(a)-1] _ = a[0:len(b)] _ = a[:] _ = a[:10] _ = a[:len(a)] _ = a[:(len(a))] _ = a[:len(a)-1] _ = a[:len(b)] _ = s[0:] _ = s[1:10] _ = s[2:len(s)] _ = s[3:(len(s))] _ = s[len(a) : len(s)-1] _ = s[0:len(b)] _ = s[:] _ = s[:10] _ = s[:len(s)] _ = s[:(len(s))] _ = s[:len(s)-1] _ = s[:len(b)] _ = t.s[0:] _ = t.s[1:10] _ = t.s[2:len(t.s)] _ = t.s[3:(len(t.s))] _ = t.s[len(a) : len(t.s)-1] _ = t.s[0:len(b)] _ = t.s[:] _ = t.s[:10] _ = t.s[:len(t.s)] _ = t.s[:(len(t.s))] _ = t.s[:len(t.s)-1] _ = t.s[:len(b)] ) func _() { s := s[0:len(s)] _ = s } go/src/cmd/gofmt/testdata/slices2.golden0100644000000000000000000000155112412656737020516 0ustar00rootroot00000000000000// Test cases for slice expression simplification. // Because of a dot import, these slices must remain untouched. package p import . "math" var ( a [10]byte b [20]float32 s []int t struct { s []byte } _ = a[0:] _ = a[1:10] _ = a[2:len(a)] _ = a[3:(len(a))] _ = a[len(a) : len(a)-1] _ = a[0:len(b)] _ = a[:] _ = a[:10] _ = a[:len(a)] _ = a[:(len(a))] _ = a[:len(a)-1] _ = a[:len(b)] _ = s[0:] _ = s[1:10] _ = s[2:len(s)] _ = s[3:(len(s))] _ = s[len(a) : len(s)-1] _ = s[0:len(b)] _ = s[:] _ = s[:10] _ = s[:len(s)] _ = s[:(len(s))] _ = s[:len(s)-1] _ = s[:len(b)] _ = t.s[0:] _ = t.s[1:10] _ = t.s[2:len(t.s)] _ = t.s[3:(len(t.s))] _ = t.s[len(a) : len(t.s)-1] _ = t.s[0:len(b)] _ = t.s[:] _ = t.s[:10] _ = t.s[:len(t.s)] _ = t.s[:(len(t.s))] _ = t.s[:len(t.s)-1] _ = t.s[:len(b)] ) func _() { s := s[0:len(s)] _ = s } go/src/cmd/gofmt/testdata/slices2.input0100644000000000000000000000155112412656737020405 0ustar00rootroot00000000000000// Test cases for slice expression simplification. // Because of a dot import, these slices must remain untouched. package p import . "math" var ( a [10]byte b [20]float32 s []int t struct { s []byte } _ = a[0:] _ = a[1:10] _ = a[2:len(a)] _ = a[3:(len(a))] _ = a[len(a) : len(a)-1] _ = a[0:len(b)] _ = a[:] _ = a[:10] _ = a[:len(a)] _ = a[:(len(a))] _ = a[:len(a)-1] _ = a[:len(b)] _ = s[0:] _ = s[1:10] _ = s[2:len(s)] _ = s[3:(len(s))] _ = s[len(a) : len(s)-1] _ = s[0:len(b)] _ = s[:] _ = s[:10] _ = s[:len(s)] _ = s[:(len(s))] _ = s[:len(s)-1] _ = s[:len(b)] _ = t.s[0:] _ = t.s[1:10] _ = t.s[2:len(t.s)] _ = t.s[3:(len(t.s))] _ = t.s[len(a) : len(t.s)-1] _ = t.s[0:len(b)] _ = t.s[:] _ = t.s[:10] _ = t.s[:len(t.s)] _ = t.s[:(len(t.s))] _ = t.s[:len(t.s)-1] _ = t.s[:len(b)] ) func _() { s := s[0:len(s)] _ = s } go/src/cmd/gofmt/testdata/stdin1.golden0100644000000000000000000000001712412656737020350 0ustar00rootroot00000000000000 if x { y } go/src/cmd/gofmt/testdata/stdin1.golden.gofmt0100644000000000000000000000001512412656737021461 0ustar00rootroot00000000000000 if x { y } go/src/cmd/gofmt/testdata/stdin1.input0100644000000000000000000000001712412656737020237 0ustar00rootroot00000000000000 if x { y } go/src/cmd/gofmt/testdata/stdin1.input.gofmt0100644000000000000000000000001512412656737021350 0ustar00rootroot00000000000000 if x { y } go/src/cmd/gofmt/testdata/stdin2.golden0100644000000000000000000000012712412656737020353 0ustar00rootroot00000000000000 var x int func f() { y := z /* this is a comment */ // this is a comment too } go/src/cmd/gofmt/testdata/stdin2.golden.gofmt0100644000000000000000000000004512412656737021465 0ustar00rootroot00000000000000 var x int func f() { y := z } go/src/cmd/gofmt/testdata/stdin2.input0100644000000000000000000000012712412656737020242 0ustar00rootroot00000000000000 var x int func f() { y := z /* this is a comment */ // this is a comment too } go/src/cmd/gofmt/testdata/stdin2.input.gofmt0100644000000000000000000000012712412656737021355 0ustar00rootroot00000000000000 var x int func f() { y := z /* this is a comment */ // this is a comment too } go/src/cmd/gofmt/testdata/stdin3.golden0100644000000000000000000000012412412656737020351 0ustar00rootroot00000000000000 /* note: no newline at end of file */ for i := 0; i < 10; i++ { s += i } go/src/cmd/gofmt/testdata/stdin3.golden.gofmt0100644000000000000000000000012512412656737021465 0ustar00rootroot00000000000000 /* note: no newline at end of file */ for i := 0; i < 10; i++ { s += i } go/src/cmd/gofmt/testdata/stdin3.input0100644000000000000000000000011712412656737020242 0ustar00rootroot00000000000000 /* note: no newline at end of file */ for i := 0; i < 10; i++ { s += i } go/src/cmd/gofmt/testdata/stdin3.input.gofmt0100644000000000000000000000012512412656737021354 0ustar00rootroot00000000000000 /* note: no newline at end of file */ for i := 0; i < 10; i++ { s += i } go/src/cmd/gofmt/testdata/stdin4.golden0100644000000000000000000000002512412656737020352 0ustar00rootroot00000000000000 // comment i := 0 go/src/cmd/gofmt/testdata/stdin4.golden.gofmt0100644000000000000000000000002512412656737021465 0ustar00rootroot00000000000000 // comment i := 0 go/src/cmd/gofmt/testdata/stdin4.input0100644000000000000000000000002612412656737020242 0ustar00rootroot00000000000000 // comment i := 0 go/src/cmd/gofmt/testdata/stdin4.input.gofmt0100644000000000000000000000002512412656737021354 0ustar00rootroot00000000000000 // comment i := 0 go/src/cmd/gofmt/testdata/typeswitch.golden0100644000000000000000000000270412412656734021353 0ustar00rootroot00000000000000/* Parenthesized type switch expressions originally accepted by gofmt must continue to be rewritten into the correct unparenthesized form. Only type-switches that didn't declare a variable in the type switch type assertion and which contained only "expression-like" (named) types in their cases were permitted to have their type assertion parenthesized by go/parser (due to a weak predicate in the parser). All others were rejected always, either with a syntax error in the type switch header or in the case. See also issue 4470. */ package p func f() { var x interface{} switch x.(type) { // should remain the same } switch x.(type) { // should become: switch x.(type) { } switch x.(type) { // should remain the same case int: } switch x.(type) { // should become: switch x.(type) { case int: } switch x.(type) { // should remain the same case []int: } // Parenthesized (x.(type)) in type switches containing cases // with unnamed (literal) types were never permitted by gofmt; // thus there won't be any code in the wild using this style if // the code was gofmt-ed. /* switch (x.(type)) { case []int: } */ switch t := x.(type) { // should remain the same default: _ = t } // Parenthesized (x.(type)) in type switches declaring a variable // were never permitted by gofmt; thus there won't be any code in // the wild using this style if the code was gofmt-ed. /* switch t := (x.(type)) { default: _ = t } */ } go/src/cmd/gofmt/testdata/typeswitch.input0100644000000000000000000000270112412656734021237 0ustar00rootroot00000000000000/* Parenthesized type switch expressions originally accepted by gofmt must continue to be rewritten into the correct unparenthesized form. Only type-switches that didn't declare a variable in the type switch type assertion and which contained only "expression-like" (named) types in their cases were permitted to have their type assertion parenthesized by go/parser (due to a weak predicate in the parser). All others were rejected always, either with a syntax error in the type switch header or in the case. See also issue 4470. */ package p func f() { var x interface{} switch x.(type) { // should remain the same } switch (x.(type)) { // should become: switch x.(type) { } switch x.(type) { // should remain the same case int: } switch (x.(type)) { // should become: switch x.(type) { case int: } switch x.(type) { // should remain the same case []int: } // Parenthesized (x.(type)) in type switches containing cases // with unnamed (literal) types were never permitted by gofmt; // thus there won't be any code in the wild using this style if // the code was gofmt-ed. /* switch (x.(type)) { case []int: } */ switch t := x.(type) { // should remain the same default: _ = t } // Parenthesized (x.(type)) in type switches declaring a variable // were never permitted by gofmt; thus there won't be any code in // the wild using this style if the code was gofmt-ed. /* switch t := (x.(type)) { default: _ = t } */ } go/src/cmd/ld0040755000000000000000000000000012412656737013354 5ustar00rootroot00000000000000go/src/cmd/ld/data.c0100644000000000000000000007542112412656737014516 0ustar00rootroot00000000000000// Inferno utils/8l/asm.c // http://code.google.com/p/inferno-os/source/browse/utils/8l/asm.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Data layout and relocation. #include "l.h" #include "../ld/lib.h" #include "../ld/elf.h" #include "../ld/macho.h" #include "../ld/pe.h" #include "../../pkg/runtime/mgc0.h" void dynreloc(void); /* * divide-and-conquer list-link * sort of LSym* structures. * Used for the data block. */ int datcmp(LSym *s1, LSym *s2) { if(s1->type != s2->type) return (int)s1->type - (int)s2->type; if(s1->size != s2->size) { if(s1->size < s2->size) return -1; return +1; } return strcmp(s1->name, s2->name); } LSym* listsort(LSym *l, int (*cmp)(LSym*, LSym*), int off) { LSym *l1, *l2, *le; #define NEXT(l) (*(LSym**)((char*)(l)+off)) if(l == 0 || NEXT(l) == 0) return l; l1 = l; l2 = l; for(;;) { l2 = NEXT(l2); if(l2 == 0) break; l2 = NEXT(l2); if(l2 == 0) break; l1 = NEXT(l1); } l2 = NEXT(l1); NEXT(l1) = 0; l1 = listsort(l, cmp, off); l2 = listsort(l2, cmp, off); /* set up lead element */ if(cmp(l1, l2) < 0) { l = l1; l1 = NEXT(l1); } else { l = l2; l2 = NEXT(l2); } le = l; for(;;) { if(l1 == 0) { while(l2) { NEXT(le) = l2; le = l2; l2 = NEXT(l2); } NEXT(le) = 0; break; } if(l2 == 0) { while(l1) { NEXT(le) = l1; le = l1; l1 = NEXT(l1); } break; } if(cmp(l1, l2) < 0) { NEXT(le) = l1; le = l1; l1 = NEXT(l1); } else { NEXT(le) = l2; le = l2; l2 = NEXT(l2); } } NEXT(le) = 0; return l; #undef NEXT } void relocsym(LSym *s) { Reloc *r; LSym *rs; int32 i, off, siz, fl; vlong o; uchar *cast; ctxt->cursym = s; for(r=s->r; rr+s->nr; r++) { r->done = 1; off = r->off; siz = r->siz; if(off < 0 || off+siz > s->np) { diag("%s: invalid relocation %d+%d not in [%d,%d)", s->name, off, siz, 0, s->np); continue; } if(r->sym != S && (r->sym->type & SMASK == 0 || r->sym->type & SMASK == SXREF)) { diag("%s: not defined", r->sym->name); continue; } if(r->type >= 256) continue; if(r->siz == 0) // informational relocation - no work to do continue; // Solaris needs the ability to reference dynimport symbols. if(HEADTYPE != Hsolaris && r->sym != S && r->sym->type == SDYNIMPORT) diag("unhandled relocation for %s (type %d rtype %d)", r->sym->name, r->sym->type, r->type); if(r->sym != S && r->sym->type != STLSBSS && !r->sym->reachable) diag("unreachable sym in relocation: %s %s", s->name, r->sym->name); switch(r->type) { default: o = 0; if(archreloc(r, s, &o) < 0) diag("unknown reloc %d", r->type); break; case R_TLS: if(linkmode == LinkInternal && iself && thechar == '5') { // On ELF ARM, the thread pointer is 8 bytes before // the start of the thread-local data block, so add 8 // to the actual TLS offset (r->sym->value). // This 8 seems to be a fundamental constant of // ELF on ARM (or maybe Glibc on ARM); it is not // related to the fact that our own TLS storage happens // to take up 8 bytes. o = 8 + r->sym->value; break; } r->done = 0; o = 0; if(thechar != '6') o = r->add; break; case R_TLS_LE: if(linkmode == LinkExternal && iself && HEADTYPE != Hopenbsd) { r->done = 0; r->sym = ctxt->gmsym; r->xsym = ctxt->gmsym; r->xadd = r->add; o = 0; if(thechar != '6') o = r->add; break; } o = ctxt->tlsoffset + r->add; break; case R_TLS_IE: if(linkmode == LinkExternal && iself && HEADTYPE != Hopenbsd) { r->done = 0; r->sym = ctxt->gmsym; r->xsym = ctxt->gmsym; r->xadd = r->add; o = 0; if(thechar != '6') o = r->add; break; } if(iself || ctxt->headtype == Hplan9) o = ctxt->tlsoffset + r->add; else if(ctxt->headtype == Hwindows) o = r->add; else sysfatal("unexpected R_TLS_IE relocation for %s", headstr(ctxt->headtype)); break; case R_ADDR: if(linkmode == LinkExternal && r->sym->type != SCONST) { r->done = 0; // set up addend for eventual relocation via outer symbol. rs = r->sym; r->xadd = r->add; while(rs->outer != nil) { r->xadd += symaddr(rs) - symaddr(rs->outer); rs = rs->outer; } if(rs->type != SHOSTOBJ && rs->type != SDYNIMPORT && rs->sect == nil) diag("missing section for %s", rs->name); r->xsym = rs; o = r->xadd; if(iself) { if(thechar == '6') o = 0; } else if(HEADTYPE == Hdarwin) { if(rs->type != SHOSTOBJ) o += symaddr(rs); } else { diag("unhandled pcrel relocation for %s", headstring); } break; } o = symaddr(r->sym) + r->add; // On amd64, 4-byte offsets will be sign-extended, so it is impossible to // access more than 2GB of static data; fail at link time is better than // fail at runtime. See http://golang.org/issue/7980. // Instead of special casing only amd64, we treat this as an error on all // 64-bit architectures so as to be future-proof. if((int32)o < 0 && PtrSize > 4 && siz == 4) { diag("non-pc-relative relocation address is too big: %#llux", o); errorexit(); } break; case R_CALL: case R_PCREL: // r->sym can be null when CALL $(constant) is transformed from absolute PC to relative PC call. if(linkmode == LinkExternal && r->sym && r->sym->type != SCONST && r->sym->sect != ctxt->cursym->sect) { r->done = 0; // set up addend for eventual relocation via outer symbol. rs = r->sym; r->xadd = r->add; while(rs->outer != nil) { r->xadd += symaddr(rs) - symaddr(rs->outer); rs = rs->outer; } r->xadd -= r->siz; // relative to address after the relocated chunk if(rs->type != SHOSTOBJ && rs->type != SDYNIMPORT && rs->sect == nil) diag("missing section for %s", rs->name); r->xsym = rs; o = r->xadd; if(iself) { if(thechar == '6') o = 0; } else if(HEADTYPE == Hdarwin) { if(rs->type != SHOSTOBJ) o += symaddr(rs) - rs->sect->vaddr; o -= r->off; // WTF? } else { diag("unhandled pcrel relocation for %s", headstring); } break; } o = 0; if(r->sym) o += symaddr(r->sym); // NOTE: The (int32) cast on the next line works around a bug in Plan 9's 8c // compiler. The expression s->value + r->off + r->siz is int32 + int32 + // uchar, and Plan 9 8c incorrectly treats the expression as type uint32 // instead of int32, causing incorrect values when sign extended for adding // to o. The bug only occurs on Plan 9, because this C program is compiled by // the standard host compiler (gcc on most other systems). o += r->add - (s->value + r->off + (int32)r->siz); break; case R_SIZE: o = r->sym->size + r->add; break; } //print("relocate %s %#llux (%#llux+%#llux, size %d) => %s %#llux +%#llx [%llx]\n", s->name, (uvlong)(s->value+off), (uvlong)s->value, (uvlong)r->off, r->siz, r->sym ? r->sym->name : "", (uvlong)symaddr(r->sym), (vlong)r->add, (vlong)o); switch(siz) { default: ctxt->cursym = s; diag("bad reloc size %#ux for %s", siz, r->sym->name); case 1: // TODO(rsc): Remove. s->p[off] = (int8)o; break; case 4: if(r->type == R_PCREL || r->type == R_CALL) { if(o != (int32)o) diag("pc-relative relocation address is too big: %#llx", o); } else { if(o != (int32)o && o != (uint32)o) diag("non-pc-relative relocation address is too big: %#llux", o); } fl = o; cast = (uchar*)&fl; for(i=0; i<4; i++) s->p[off+i] = cast[inuxi4[i]]; break; case 8: cast = (uchar*)&o; for(i=0; i<8; i++) s->p[off+i] = cast[inuxi8[i]]; break; } } } void reloc(void) { LSym *s; if(debug['v']) Bprint(&bso, "%5.2f reloc\n", cputime()); Bflush(&bso); for(s=ctxt->textp; s!=S; s=s->next) relocsym(s); for(s=datap; s!=S; s=s->next) relocsym(s); } void dynrelocsym(LSym *s) { Reloc *r; if(HEADTYPE == Hwindows) { LSym *rel, *targ; rel = linklookup(ctxt, ".rel", 0); if(s == rel) return; for(r=s->r; rr+s->nr; r++) { targ = r->sym; if(targ == nil) continue; if(!targ->reachable) diag("internal inconsistency: dynamic symbol %s is not reachable.", targ->name); if(r->sym->plt == -2 && r->sym->got != -2) { // make dynimport JMP table for PE object files. targ->plt = rel->size; r->sym = rel; r->add = targ->plt; // jmp *addr if(thechar == '8') { adduint8(ctxt, rel, 0xff); adduint8(ctxt, rel, 0x25); addaddr(ctxt, rel, targ); adduint8(ctxt, rel, 0x90); adduint8(ctxt, rel, 0x90); } else { adduint8(ctxt, rel, 0xff); adduint8(ctxt, rel, 0x24); adduint8(ctxt, rel, 0x25); addaddrplus4(ctxt, rel, targ, 0); adduint8(ctxt, rel, 0x90); } } else if(r->sym->plt >= 0) { r->sym = rel; r->add = targ->plt; } } return; } for(r=s->r; rr+s->nr; r++) { if(r->sym != S && r->sym->type == SDYNIMPORT || r->type >= 256) { if(r->sym != S && !r->sym->reachable) diag("internal inconsistency: dynamic symbol %s is not reachable.", r->sym->name); adddynrel(s, r); } } } void dynreloc(void) { LSym *s; // -d suppresses dynamic loader format, so we may as well not // compute these sections or mark their symbols as reachable. if(debug['d'] && HEADTYPE != Hwindows) return; if(debug['v']) Bprint(&bso, "%5.2f reloc\n", cputime()); Bflush(&bso); for(s=ctxt->textp; s!=S; s=s->next) dynrelocsym(s); for(s=datap; s!=S; s=s->next) dynrelocsym(s); if(iself) elfdynhash(); } static void blk(LSym *start, int32 addr, int32 size) { LSym *sym; int32 eaddr; uchar *p, *ep; for(sym = start; sym != nil; sym = sym->next) if(!(sym->type&SSUB) && sym->value >= addr) break; eaddr = addr+size; for(; sym != nil; sym = sym->next) { if(sym->type&SSUB) continue; if(sym->value >= eaddr) break; if(sym->value < addr) { diag("phase error: addr=%#llx but sym=%#llx type=%d", (vlong)addr, (vlong)sym->value, sym->type); errorexit(); } ctxt->cursym = sym; for(; addr < sym->value; addr++) cput(0); p = sym->p; ep = p + sym->np; while(p < ep) cput(*p++); addr += sym->np; for(; addr < sym->value+sym->size; addr++) cput(0); if(addr != sym->value+sym->size) { diag("phase error: addr=%#llx value+size=%#llx", (vlong)addr, (vlong)sym->value+sym->size); errorexit(); } } for(; addr < eaddr; addr++) cput(0); cflush(); } void codeblk(int32 addr, int32 size) { LSym *sym; int32 eaddr, n; uchar *q; if(debug['a']) Bprint(&bso, "codeblk [%#x,%#x) at offset %#llx\n", addr, addr+size, cpos()); blk(ctxt->textp, addr, size); /* again for printing */ if(!debug['a']) return; for(sym = ctxt->textp; sym != nil; sym = sym->next) { if(!sym->reachable) continue; if(sym->value >= addr) break; } eaddr = addr + size; for(; sym != nil; sym = sym->next) { if(!sym->reachable) continue; if(sym->value >= eaddr) break; if(addr < sym->value) { Bprint(&bso, "%-20s %.8llux|", "_", (vlong)addr); for(; addr < sym->value; addr++) Bprint(&bso, " %.2ux", 0); Bprint(&bso, "\n"); } Bprint(&bso, "%.6llux\t%-20s\n", (vlong)addr, sym->name); n = sym->size; q = sym->p; while(n >= 16) { Bprint(&bso, "%.6ux\t%-20.16I\n", addr, q); addr += 16; q += 16; n -= 16; } if(n > 0) Bprint(&bso, "%.6ux\t%-20.*I\n", addr, (int)n, q); addr += n; } if(addr < eaddr) { Bprint(&bso, "%-20s %.8llux|", "_", (vlong)addr); for(; addr < eaddr; addr++) Bprint(&bso, " %.2ux", 0); } Bflush(&bso); } void datblk(int32 addr, int32 size) { LSym *sym; int32 i, eaddr; uchar *p, *ep; char *typ, *rsname; Reloc *r; if(debug['a']) Bprint(&bso, "datblk [%#x,%#x) at offset %#llx\n", addr, addr+size, cpos()); blk(datap, addr, size); /* again for printing */ if(!debug['a']) return; for(sym = datap; sym != nil; sym = sym->next) if(sym->value >= addr) break; eaddr = addr + size; for(; sym != nil; sym = sym->next) { if(sym->value >= eaddr) break; if(addr < sym->value) { Bprint(&bso, "\t%.8ux| 00 ...\n", addr); addr = sym->value; } Bprint(&bso, "%s\n\t%.8ux|", sym->name, (uint)addr); p = sym->p; ep = p + sym->np; while(p < ep) { if(p > sym->p && (int)(p-sym->p)%16 == 0) Bprint(&bso, "\n\t%.8ux|", (uint)(addr+(p-sym->p))); Bprint(&bso, " %.2ux", *p++); } addr += sym->np; for(; addr < sym->value+sym->size; addr++) Bprint(&bso, " %.2ux", 0); Bprint(&bso, "\n"); if(linkmode == LinkExternal) { for(i=0; inr; i++) { r = &sym->r[i]; rsname = ""; if(r->sym) rsname = r->sym->name; typ = "?"; switch(r->type) { case R_ADDR: typ = "addr"; break; case R_PCREL: typ = "pcrel"; break; case R_CALL: typ = "call"; break; } Bprint(&bso, "\treloc %.8ux/%d %s %s+%#llx [%#llx]\n", (uint)(sym->value+r->off), r->siz, typ, rsname, (vlong)r->add, (vlong)(r->sym->value+r->add)); } } } if(addr < eaddr) Bprint(&bso, "\t%.8ux| 00 ...\n", (uint)addr); Bprint(&bso, "\t%.8ux|\n", (uint)eaddr); } void strnput(char *s, int n) { for(; n > 0 && *s; s++) { cput(*s); n--; } while(n > 0) { cput(0); n--; } } void addstrdata(char *name, char *value) { LSym *s, *sp; char *p; p = smprint("%s.str", name); sp = linklookup(ctxt, p, 0); free(p); addstring(sp, value); s = linklookup(ctxt, name, 0); s->size = 0; s->dupok = 1; addaddr(ctxt, s, sp); adduint32(ctxt, s, strlen(value)); if(PtrSize == 8) adduint32(ctxt, s, 0); // round struct to pointer width // in case reachability has already been computed sp->reachable = s->reachable; } vlong addstring(LSym *s, char *str) { int n; int32 r; if(s->type == 0) s->type = SNOPTRDATA; s->reachable = 1; r = s->size; n = strlen(str)+1; if(strcmp(s->name, ".shstrtab") == 0) elfsetstring(str, r); symgrow(ctxt, s, r+n); memmove(s->p+r, str, n); s->size += n; return r; } void dosymtype(void) { LSym *s; for(s = ctxt->allsym; s != nil; s = s->allsym) { if(s->np > 0) { if(s->type == SBSS) s->type = SDATA; if(s->type == SNOPTRBSS) s->type = SNOPTRDATA; } } } static int32 symalign(LSym *s) { int32 align; if(s->align != 0) return s->align; align = MaxAlign; while(align > s->size && align > 1) align >>= 1; if(align < s->align) align = s->align; return align; } static vlong aligndatsize(vlong datsize, LSym *s) { return rnd(datsize, symalign(s)); } // maxalign returns the maximum required alignment for // the list of symbols s; the list stops when s->type exceeds type. static int32 maxalign(LSym *s, int type) { int32 align, max; max = 0; for(; s != S && s->type <= type; s = s->next) { align = symalign(s); if(max < align) max = align; } return max; } static void gcaddsym(LSym *gc, LSym *s, vlong off) { vlong a; LSym *gotype; if(s->size < PtrSize) return; if(strcmp(s->name, ".string") == 0) return; gotype = s->gotype; if(gotype != nil) { //print("gcaddsym: %s %d %s\n", s->name, s->size, gotype->name); adduintxx(ctxt, gc, GC_CALL, PtrSize); adduintxx(ctxt, gc, off, PtrSize); addpcrelplus(ctxt, gc, decodetype_gc(gotype), 3*PtrSize+4); if(PtrSize == 8) adduintxx(ctxt, gc, 0, 4); } else { //print("gcaddsym: %s %d \n", s->name, s->size); for(a = -off&(PtrSize-1); a+PtrSize<=s->size; a+=PtrSize) { adduintxx(ctxt, gc, GC_APTR, PtrSize); adduintxx(ctxt, gc, off+a, PtrSize); } } } void growdatsize(vlong *datsizep, LSym *s) { vlong datsize; datsize = *datsizep; if(s->size < 0) diag("negative size (datsize = %lld, s->size = %lld)", datsize, s->size); if(datsize + s->size < datsize) diag("symbol too large (datsize = %lld, s->size = %lld)", datsize, s->size); *datsizep = datsize + s->size; } void dodata(void) { int32 n; vlong datsize; Section *sect; Segment *segro; LSym *s, *last, **l; LSym *gcdata1, *gcbss1; if(debug['v']) Bprint(&bso, "%5.2f dodata\n", cputime()); Bflush(&bso); gcdata1 = linklookup(ctxt, "gcdata", 0); gcbss1 = linklookup(ctxt, "gcbss", 0); // size of .data and .bss section. the zero value is later replaced by the actual size of the section. adduintxx(ctxt, gcdata1, 0, PtrSize); adduintxx(ctxt, gcbss1, 0, PtrSize); last = nil; datap = nil; for(s=ctxt->allsym; s!=S; s=s->allsym) { if(!s->reachable || s->special) continue; if(STEXT < s->type && s->type < SXREF) { if(s->onlist) sysfatal("symbol %s listed multiple times", s->name); s->onlist = 1; if(last == nil) datap = s; else last->next = s; s->next = nil; last = s; } } for(s = datap; s != nil; s = s->next) { if(s->np > s->size) diag("%s: initialize bounds (%lld < %d)", s->name, (vlong)s->size, s->np); } /* * now that we have the datap list, but before we start * to assign addresses, record all the necessary * dynamic relocations. these will grow the relocation * symbol, which is itself data. * * on darwin, we need the symbol table numbers for dynreloc. */ if(HEADTYPE == Hdarwin) machosymorder(); dynreloc(); /* some symbols may no longer belong in datap (Mach-O) */ for(l=&datap; (s=*l) != nil; ) { if(s->type <= STEXT || SXREF <= s->type) *l = s->next; else l = &s->next; } *l = nil; datap = listsort(datap, datcmp, offsetof(LSym, next)); /* * allocate sections. list is sorted by type, * so we can just walk it for each piece we want to emit. * segdata is processed before segtext, because we need * to see all symbols in the .data and .bss sections in order * to generate garbage collection information. */ /* begin segdata */ /* skip symbols belonging to segtext */ s = datap; for(; s != nil && s->type < SELFSECT; s = s->next) ; /* writable ELF sections */ datsize = 0; for(; s != nil && s->type < SNOPTRDATA; s = s->next) { sect = addsection(&segdata, s->name, 06); sect->align = symalign(s); datsize = rnd(datsize, sect->align); sect->vaddr = datsize; s->sect = sect; s->type = SDATA; s->value = datsize - sect->vaddr; growdatsize(&datsize, s); sect->len = datsize - sect->vaddr; } /* pointer-free data */ sect = addsection(&segdata, ".noptrdata", 06); sect->align = maxalign(s, SINITARR-1); datsize = rnd(datsize, sect->align); sect->vaddr = datsize; linklookup(ctxt, "noptrdata", 0)->sect = sect; linklookup(ctxt, "enoptrdata", 0)->sect = sect; for(; s != nil && s->type < SINITARR; s = s->next) { datsize = aligndatsize(datsize, s); s->sect = sect; s->type = SDATA; s->value = datsize - sect->vaddr; growdatsize(&datsize, s); } sect->len = datsize - sect->vaddr; /* shared library initializer */ if(flag_shared) { sect = addsection(&segdata, ".init_array", 06); sect->align = maxalign(s, SINITARR); datsize = rnd(datsize, sect->align); sect->vaddr = datsize; for(; s != nil && s->type == SINITARR; s = s->next) { datsize = aligndatsize(datsize, s); s->sect = sect; s->value = datsize - sect->vaddr; growdatsize(&datsize, s); } sect->len = datsize - sect->vaddr; } /* data */ sect = addsection(&segdata, ".data", 06); sect->align = maxalign(s, SBSS-1); datsize = rnd(datsize, sect->align); sect->vaddr = datsize; linklookup(ctxt, "data", 0)->sect = sect; linklookup(ctxt, "edata", 0)->sect = sect; for(; s != nil && s->type < SBSS; s = s->next) { if(s->type == SINITARR) { ctxt->cursym = s; diag("unexpected symbol type %d", s->type); } s->sect = sect; s->type = SDATA; datsize = aligndatsize(datsize, s); s->value = datsize - sect->vaddr; gcaddsym(gcdata1, s, datsize - sect->vaddr); // gc growdatsize(&datsize, s); } sect->len = datsize - sect->vaddr; adduintxx(ctxt, gcdata1, GC_END, PtrSize); setuintxx(ctxt, gcdata1, 0, sect->len, PtrSize); /* bss */ sect = addsection(&segdata, ".bss", 06); sect->align = maxalign(s, SNOPTRBSS-1); datsize = rnd(datsize, sect->align); sect->vaddr = datsize; linklookup(ctxt, "bss", 0)->sect = sect; linklookup(ctxt, "ebss", 0)->sect = sect; for(; s != nil && s->type < SNOPTRBSS; s = s->next) { s->sect = sect; datsize = aligndatsize(datsize, s); s->value = datsize - sect->vaddr; gcaddsym(gcbss1, s, datsize - sect->vaddr); // gc growdatsize(&datsize, s); } sect->len = datsize - sect->vaddr; adduintxx(ctxt, gcbss1, GC_END, PtrSize); setuintxx(ctxt, gcbss1, 0, sect->len, PtrSize); /* pointer-free bss */ sect = addsection(&segdata, ".noptrbss", 06); sect->align = maxalign(s, SNOPTRBSS); datsize = rnd(datsize, sect->align); sect->vaddr = datsize; linklookup(ctxt, "noptrbss", 0)->sect = sect; linklookup(ctxt, "enoptrbss", 0)->sect = sect; for(; s != nil && s->type == SNOPTRBSS; s = s->next) { datsize = aligndatsize(datsize, s); s->sect = sect; s->value = datsize - sect->vaddr; growdatsize(&datsize, s); } sect->len = datsize - sect->vaddr; linklookup(ctxt, "end", 0)->sect = sect; // 6g uses 4-byte relocation offsets, so the entire segment must fit in 32 bits. if(datsize != (uint32)datsize) { diag("data or bss segment too large"); } if(iself && linkmode == LinkExternal && s != nil && s->type == STLSBSS && HEADTYPE != Hopenbsd) { sect = addsection(&segdata, ".tbss", 06); sect->align = PtrSize; sect->vaddr = 0; datsize = 0; for(; s != nil && s->type == STLSBSS; s = s->next) { datsize = aligndatsize(datsize, s); s->sect = sect; s->value = datsize - sect->vaddr; growdatsize(&datsize, s); } sect->len = datsize; } else { // Might be internal linking but still using cgo. // In that case, the only possible STLSBSS symbol is tlsgm. // Give it offset 0, because it's the only thing here. if(s != nil && s->type == STLSBSS && strcmp(s->name, "runtime.tlsgm") == 0) { s->value = 0; s = s->next; } } if(s != nil) { ctxt->cursym = nil; diag("unexpected symbol type %d for %s", s->type, s->name); } /* * We finished data, begin read-only data. * Not all systems support a separate read-only non-executable data section. * ELF systems do. * OS X and Plan 9 do not. * Windows PE may, but if so we have not implemented it. * And if we're using external linking mode, the point is moot, * since it's not our decision; that code expects the sections in * segtext. */ if(iself && linkmode == LinkInternal) segro = &segrodata; else segro = &segtext; s = datap; datsize = 0; /* read-only executable ELF, Mach-O sections */ for(; s != nil && s->type < STYPE; s = s->next) { sect = addsection(&segtext, s->name, 04); sect->align = symalign(s); datsize = rnd(datsize, sect->align); sect->vaddr = datsize; s->sect = sect; s->type = SRODATA; s->value = datsize - sect->vaddr; growdatsize(&datsize, s); sect->len = datsize - sect->vaddr; } /* read-only data */ sect = addsection(segro, ".rodata", 04); sect->align = maxalign(s, STYPELINK-1); datsize = rnd(datsize, sect->align); sect->vaddr = 0; linklookup(ctxt, "rodata", 0)->sect = sect; linklookup(ctxt, "erodata", 0)->sect = sect; for(; s != nil && s->type < STYPELINK; s = s->next) { datsize = aligndatsize(datsize, s); s->sect = sect; s->type = SRODATA; s->value = datsize - sect->vaddr; growdatsize(&datsize, s); } sect->len = datsize - sect->vaddr; /* typelink */ sect = addsection(segro, ".typelink", 04); sect->align = maxalign(s, STYPELINK); datsize = rnd(datsize, sect->align); sect->vaddr = datsize; linklookup(ctxt, "typelink", 0)->sect = sect; linklookup(ctxt, "etypelink", 0)->sect = sect; for(; s != nil && s->type == STYPELINK; s = s->next) { datsize = aligndatsize(datsize, s); s->sect = sect; s->type = SRODATA; s->value = datsize - sect->vaddr; growdatsize(&datsize, s); } sect->len = datsize - sect->vaddr; /* gosymtab */ sect = addsection(segro, ".gosymtab", 04); sect->align = maxalign(s, SPCLNTAB-1); datsize = rnd(datsize, sect->align); sect->vaddr = datsize; linklookup(ctxt, "symtab", 0)->sect = sect; linklookup(ctxt, "esymtab", 0)->sect = sect; for(; s != nil && s->type < SPCLNTAB; s = s->next) { datsize = aligndatsize(datsize, s); s->sect = sect; s->type = SRODATA; s->value = datsize - sect->vaddr; growdatsize(&datsize, s); } sect->len = datsize - sect->vaddr; /* gopclntab */ sect = addsection(segro, ".gopclntab", 04); sect->align = maxalign(s, SELFROSECT-1); datsize = rnd(datsize, sect->align); sect->vaddr = datsize; linklookup(ctxt, "pclntab", 0)->sect = sect; linklookup(ctxt, "epclntab", 0)->sect = sect; for(; s != nil && s->type < SELFROSECT; s = s->next) { datsize = aligndatsize(datsize, s); s->sect = sect; s->type = SRODATA; s->value = datsize - sect->vaddr; growdatsize(&datsize, s); } sect->len = datsize - sect->vaddr; /* read-only ELF, Mach-O sections */ for(; s != nil && s->type < SELFSECT; s = s->next) { sect = addsection(segro, s->name, 04); sect->align = symalign(s); datsize = rnd(datsize, sect->align); sect->vaddr = datsize; s->sect = sect; s->type = SRODATA; s->value = datsize - sect->vaddr; growdatsize(&datsize, s); sect->len = datsize - sect->vaddr; } // 6g uses 4-byte relocation offsets, so the entire segment must fit in 32 bits. if(datsize != (uint32)datsize) { diag("read-only data segment too large"); } /* number the sections */ n = 1; for(sect = segtext.sect; sect != nil; sect = sect->next) sect->extnum = n++; for(sect = segrodata.sect; sect != nil; sect = sect->next) sect->extnum = n++; for(sect = segdata.sect; sect != nil; sect = sect->next) sect->extnum = n++; } // assign addresses to text void textaddress(void) { uvlong va; Section *sect; LSym *sym, *sub; addsection(&segtext, ".text", 05); // Assign PCs in text segment. // Could parallelize, by assigning to text // and then letting threads copy down, but probably not worth it. sect = segtext.sect; sect->align = funcalign; linklookup(ctxt, "text", 0)->sect = sect; linklookup(ctxt, "etext", 0)->sect = sect; va = INITTEXT; sect->vaddr = va; for(sym = ctxt->textp; sym != nil; sym = sym->next) { sym->sect = sect; if(sym->type & SSUB) continue; if(sym->align != 0) va = rnd(va, sym->align); else va = rnd(va, funcalign); sym->value = 0; for(sub = sym; sub != S; sub = sub->sub) sub->value += va; if(sym->size == 0 && sym->sub != S) ctxt->cursym = sym; va += sym->size; } sect->len = va - sect->vaddr; } // assign addresses void address(void) { Section *s, *text, *data, *rodata, *symtab, *pclntab, *noptr, *bss, *noptrbss; Section *typelink; LSym *sym, *sub; uvlong va; vlong vlen; va = INITTEXT; segtext.rwx = 05; segtext.vaddr = va; segtext.fileoff = HEADR; for(s=segtext.sect; s != nil; s=s->next) { va = rnd(va, s->align); s->vaddr = va; va += s->len; } segtext.len = va - INITTEXT; segtext.filelen = segtext.len; if(HEADTYPE == Hnacl) va += 32; // room for the "halt sled" if(segrodata.sect != nil) { // align to page boundary so as not to mix // rodata and executable text. va = rnd(va, INITRND); segrodata.rwx = 04; segrodata.vaddr = va; segrodata.fileoff = va - segtext.vaddr + segtext.fileoff; segrodata.filelen = 0; for(s=segrodata.sect; s != nil; s=s->next) { va = rnd(va, s->align); s->vaddr = va; va += s->len; } segrodata.len = va - segrodata.vaddr; segrodata.filelen = segrodata.len; } va = rnd(va, INITRND); segdata.rwx = 06; segdata.vaddr = va; segdata.fileoff = va - segtext.vaddr + segtext.fileoff; segdata.filelen = 0; if(HEADTYPE == Hwindows) segdata.fileoff = segtext.fileoff + rnd(segtext.len, PEFILEALIGN); if(HEADTYPE == Hplan9) segdata.fileoff = segtext.fileoff + segtext.filelen; data = nil; noptr = nil; bss = nil; noptrbss = nil; for(s=segdata.sect; s != nil; s=s->next) { vlen = s->len; if(s->next) vlen = s->next->vaddr - s->vaddr; s->vaddr = va; va += vlen; segdata.len = va - segdata.vaddr; if(strcmp(s->name, ".data") == 0) data = s; if(strcmp(s->name, ".noptrdata") == 0) noptr = s; if(strcmp(s->name, ".bss") == 0) bss = s; if(strcmp(s->name, ".noptrbss") == 0) noptrbss = s; } segdata.filelen = bss->vaddr - segdata.vaddr; text = segtext.sect; if(segrodata.sect) rodata = segrodata.sect; else rodata = text->next; typelink = rodata->next; symtab = typelink->next; pclntab = symtab->next; for(sym = datap; sym != nil; sym = sym->next) { ctxt->cursym = sym; if(sym->sect != nil) sym->value += sym->sect->vaddr; for(sub = sym->sub; sub != nil; sub = sub->sub) sub->value += sym->value; } xdefine("text", STEXT, text->vaddr); xdefine("etext", STEXT, text->vaddr + text->len); xdefine("rodata", SRODATA, rodata->vaddr); xdefine("erodata", SRODATA, rodata->vaddr + rodata->len); xdefine("typelink", SRODATA, typelink->vaddr); xdefine("etypelink", SRODATA, typelink->vaddr + typelink->len); sym = linklookup(ctxt, "gcdata", 0); xdefine("egcdata", SRODATA, symaddr(sym) + sym->size); linklookup(ctxt, "egcdata", 0)->sect = sym->sect; sym = linklookup(ctxt, "gcbss", 0); xdefine("egcbss", SRODATA, symaddr(sym) + sym->size); linklookup(ctxt, "egcbss", 0)->sect = sym->sect; xdefine("symtab", SRODATA, symtab->vaddr); xdefine("esymtab", SRODATA, symtab->vaddr + symtab->len); xdefine("pclntab", SRODATA, pclntab->vaddr); xdefine("epclntab", SRODATA, pclntab->vaddr + pclntab->len); xdefine("noptrdata", SNOPTRDATA, noptr->vaddr); xdefine("enoptrdata", SNOPTRDATA, noptr->vaddr + noptr->len); xdefine("bss", SBSS, bss->vaddr); xdefine("ebss", SBSS, bss->vaddr + bss->len); xdefine("data", SDATA, data->vaddr); xdefine("edata", SDATA, data->vaddr + data->len); xdefine("noptrbss", SNOPTRBSS, noptrbss->vaddr); xdefine("enoptrbss", SNOPTRBSS, noptrbss->vaddr + noptrbss->len); xdefine("end", SBSS, segdata.vaddr + segdata.len); } go/src/cmd/ld/decodesym.c0100644000000000000000000001007112412656737015547 0ustar00rootroot00000000000000// 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. #include "l.h" #include "lib.h" #include "../../pkg/runtime/typekind.h" // Decoding the type.* symbols. This has to be in sync with // ../../pkg/runtime/type.go, or more specificaly, with what // ../gc/reflect.c stuffs in these. static Reloc* decode_reloc(LSym *s, int32 off) { int i; for (i = 0; i < s->nr; i++) if (s->r[i].off == off) return s->r + i; return nil; } static LSym* decode_reloc_sym(LSym *s, int32 off) { Reloc *r; r = decode_reloc(s,off); if (r == nil) return nil; return r->sym; } static uvlong decode_inuxi(uchar* p, int sz) { uint64 v; uint32 l; uchar *cast, *inuxi; int i; v = l = 0; cast = nil; inuxi = nil; switch (sz) { case 2: cast = (uchar*)&l; inuxi = inuxi2; break; case 4: cast = (uchar*)&l; inuxi = inuxi4; break; case 8: cast = (uchar*)&v; inuxi = inuxi8; break; default: diag("dwarf: decode inuxi %d", sz); errorexit(); } for (i = 0; i < sz; i++) cast[inuxi[i]] = p[i]; if (sz == 8) return v; return l; } static int commonsize(void) { return 7*PtrSize + 8; } // Type.commonType.kind uint8 decodetype_kind(LSym *s) { return s->p[1*PtrSize + 7] & ~KindNoPointers; // 0x13 / 0x1f } // Type.commonType.size vlong decodetype_size(LSym *s) { return decode_inuxi(s->p, PtrSize); // 0x8 / 0x10 } // Type.commonType.gc LSym* decodetype_gc(LSym *s) { return decode_reloc_sym(s, 1*PtrSize + 8 + 1*PtrSize); } // Type.ArrayType.elem and Type.SliceType.Elem LSym* decodetype_arrayelem(LSym *s) { return decode_reloc_sym(s, commonsize()); // 0x1c / 0x30 } vlong decodetype_arraylen(LSym *s) { return decode_inuxi(s->p + commonsize()+PtrSize, PtrSize); } // Type.PtrType.elem LSym* decodetype_ptrelem(LSym *s) { return decode_reloc_sym(s, commonsize()); // 0x1c / 0x30 } // Type.MapType.key, elem LSym* decodetype_mapkey(LSym *s) { return decode_reloc_sym(s, commonsize()); // 0x1c / 0x30 } LSym* decodetype_mapvalue(LSym *s) { return decode_reloc_sym(s, commonsize()+PtrSize); // 0x20 / 0x38 } // Type.ChanType.elem LSym* decodetype_chanelem(LSym *s) { return decode_reloc_sym(s, commonsize()); // 0x1c / 0x30 } // Type.FuncType.dotdotdot int decodetype_funcdotdotdot(LSym *s) { return s->p[commonsize()]; } // Type.FuncType.in.len int decodetype_funcincount(LSym *s) { return decode_inuxi(s->p + commonsize()+2*PtrSize, IntSize); } int decodetype_funcoutcount(LSym *s) { return decode_inuxi(s->p + commonsize()+3*PtrSize + 2*IntSize, IntSize); } LSym* decodetype_funcintype(LSym *s, int i) { Reloc *r; r = decode_reloc(s, commonsize() + PtrSize); if (r == nil) return nil; return decode_reloc_sym(r->sym, r->add + i * PtrSize); } LSym* decodetype_funcouttype(LSym *s, int i) { Reloc *r; r = decode_reloc(s, commonsize() + 2*PtrSize + 2*IntSize); if (r == nil) return nil; return decode_reloc_sym(r->sym, r->add + i * PtrSize); } // Type.StructType.fields.Slice::len int decodetype_structfieldcount(LSym *s) { return decode_inuxi(s->p + commonsize() + PtrSize, IntSize); } static int structfieldsize(void) { return 5*PtrSize; } // Type.StructType.fields[]-> name, typ and offset. char* decodetype_structfieldname(LSym *s, int i) { Reloc *r; // go.string."foo" 0x28 / 0x40 s = decode_reloc_sym(s, commonsize() + PtrSize + 2*IntSize + i*structfieldsize()); if (s == nil) // embedded structs have a nil name. return nil; r = decode_reloc(s, 0); // s has a pointer to the string data at offset 0 if (r == nil) // shouldn't happen. return nil; return (char*) r->sym->p + r->add; // the c-string } LSym* decodetype_structfieldtype(LSym *s, int i) { return decode_reloc_sym(s, commonsize() + PtrSize + 2*IntSize + i*structfieldsize() + 2*PtrSize); } vlong decodetype_structfieldoffs(LSym *s, int i) { return decode_inuxi(s->p + commonsize() + PtrSize + 2*IntSize + i*structfieldsize() + 4*PtrSize, IntSize); } // InterfaceTYpe.methods.len vlong decodetype_ifacemethodcount(LSym *s) { return decode_inuxi(s->p + commonsize() + PtrSize, IntSize); } go/src/cmd/ld/doc.go0100644000000000000000000000723512412656737014533 0ustar00rootroot00000000000000// Copyright 2009 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 ignore /* Ld is the portable code for a modified version of the Plan 9 linker. The original is documented at http://plan9.bell-labs.com/magic/man2html/1/8l It reads object files (.5, .6, or .8 files) and writes a binary named for the architecture (5.out, 6.out, 8.out) by default (if $GOOS is windows, a .exe suffix will be appended). Major changes include: - support for ELF, Mach-O and PE binary files - support for segmented stacks (this feature is implemented here, not in the compilers). Original options are listed on the manual page linked above. Usage: go tool 6l [flags] mainObj Substitute 6l with 8l or 5l as appropriate. Options new in this version: -d Elide the dynamic linking header. With this option, the binary is statically linked and does not refer to a dynamic linker. Without this option (the default), the binary's contents are identical but it is loaded with a dynamic linker. This flag cannot be used when $GOOS is windows. -H darwin (only in 6l/8l) Write Apple Mach-O binaries (default when $GOOS is darwin) -H dragonfly (only in 6l/8l) Write DragonFly ELF binaries (default when $GOOS is dragonfly) -H linux Write Linux ELF binaries (default when $GOOS is linux) -H freebsd Write FreeBSD ELF binaries (default when $GOOS is freebsd) -H netbsd Write NetBSD ELF binaries (default when $GOOS is netbsd) -H openbsd (only in 6l/8l) Write OpenBSD ELF binaries (default when $GOOS is openbsd) -H solaris (only in 6l) Write Solaris ELF binaries (default when $GOOS is solaris) -H windows (only in 6l/8l) Write Windows PE32+ Console binaries (default when $GOOS is windows) -H windowsgui (only in 6l/8l) Write Windows PE32+ GUI binaries -I interpreter Set the ELF dynamic linker to use. -L dir1 -L dir2 Search for libraries (package files) in dir1, dir2, etc. The default is the single location $GOROOT/pkg/$GOOS_$GOARCH. -r dir1:dir2:... Set the dynamic linker search path when using ELF. -s Omit the symbol table and debug information. -V Print the linker version. -w Omit the DWARF symbol table. -X symbol value Set the value of an otherwise uninitialized string variable. The symbol name should be of the form importpath.name, as displayed in the symbol table printed by "go tool nm". -race Link with race detection libraries. -B value Add a NT_GNU_BUILD_ID note when using ELF. The value should start with 0x and be an even number of hex digits. -Z Zero stack on function entry. This is expensive but it might be useful in cases where you are suffering from false positives during garbage collection and are willing to trade the CPU time for getting rid of the false positives. NOTE: it only eliminates false positives caused by other function calls, not false positives caused by dead temporaries stored in the current function call. -linkmode argument Set the linkmode. The argument must be one of internal, external, or auto. The default is auto. This sets the linking mode as described in ../cgo/doc.go. -tmpdir dir Set the location to use for any temporary files. The default is a newly created directory that is removed after the linker completes. Temporary files are only used in external linking mode. -extld name Set the name of the external linker to use in external linking mode. The default is "gcc". -extldflags flags Set space-separated trailing flags to pass to the external linker in external linking mode. The default is to not pass any additional trailing flags. */ package main go/src/cmd/ld/dwarf.c0100644000000000000000000016050112412656737014702 0ustar00rootroot00000000000000// 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. // TODO/NICETOHAVE: // - eliminate DW_CLS_ if not used // - package info in compilation units // - assign global variables and types to their packages // - gdb uses c syntax, meaning clumsy quoting is needed for go identifiers. eg // ptype struct '[]uint8' and qualifiers need to be quoted away // - lexical scoping is lost, so gdb gets confused as to which 'main.i' you mean. // - file:line info for variables // - make strings a typedef so prettyprinters can see the underlying string type // #include "l.h" #include "lib.h" #include "../ld/dwarf.h" #include "../ld/dwarf_defs.h" #include "../ld/elf.h" #include "../ld/macho.h" #include "../ld/pe.h" #include "../../pkg/runtime/typekind.h" /* * Offsets and sizes of the debug_* sections in the cout file. */ static vlong abbrevo; static vlong abbrevsize; static LSym* abbrevsym; static vlong abbrevsympos; static vlong lineo; static vlong linesize; static LSym* linesym; static vlong linesympos; static vlong infoo; // also the base for DWDie->offs and reference attributes. static vlong infosize; static LSym* infosym; static vlong infosympos; static vlong frameo; static vlong framesize; static LSym* framesym; static vlong framesympos; static vlong pubnameso; static vlong pubnamessize; static vlong pubtypeso; static vlong pubtypessize; static vlong arangeso; static vlong arangessize; static vlong gdbscripto; static vlong gdbscriptsize; static LSym *infosec; static vlong inforeloco; static vlong inforelocsize; static LSym *arangessec; static vlong arangesreloco; static vlong arangesrelocsize; static LSym *linesec; static vlong linereloco; static vlong linerelocsize; static LSym *framesec; static vlong framereloco; static vlong framerelocsize; static char gdbscript[1024]; /* * Basic I/O */ static void addrput(vlong addr) { switch(PtrSize) { case 4: LPUT(addr); break; case 8: VPUT(addr); break; } } static int uleb128enc(uvlong v, char* dst) { uint8 c, len; len = 0; do { c = v & 0x7f; v >>= 7; if (v) c |= 0x80; if (dst) *dst++ = c; len++; } while (c & 0x80); return len; }; static int sleb128enc(vlong v, char *dst) { uint8 c, s, len; len = 0; do { c = v & 0x7f; s = v & 0x40; v >>= 7; if ((v != -1 || !s) && (v != 0 || s)) c |= 0x80; if (dst) *dst++ = c; len++; } while(c & 0x80); return len; } static void uleb128put(vlong v) { char buf[10]; strnput(buf, uleb128enc(v, buf)); } static void sleb128put(vlong v) { char buf[10]; strnput(buf, sleb128enc(v, buf)); } /* * Defining Abbrevs. This is hardcoded, and there will be * only a handful of them. The DWARF spec places no restriction on * the ordering of attributes in the Abbrevs and DIEs, and we will * always write them out in the order of declaration in the abbrev. * This implementation relies on tag, attr < 127, so they serialize as * a char. Higher numbered user-defined tags or attributes can be used * for storing internal data but won't be serialized. */ typedef struct DWAttrForm DWAttrForm; struct DWAttrForm { uint8 attr; uint8 form; }; // Index into the abbrevs table below. // Keep in sync with ispubname() and ispubtype() below. // ispubtype considers >= NULLTYPE public enum { DW_ABRV_NULL, DW_ABRV_COMPUNIT, DW_ABRV_FUNCTION, DW_ABRV_VARIABLE, DW_ABRV_AUTO, DW_ABRV_PARAM, DW_ABRV_STRUCTFIELD, DW_ABRV_FUNCTYPEPARAM, DW_ABRV_DOTDOTDOT, DW_ABRV_ARRAYRANGE, DW_ABRV_NULLTYPE, DW_ABRV_BASETYPE, DW_ABRV_ARRAYTYPE, DW_ABRV_CHANTYPE, DW_ABRV_FUNCTYPE, DW_ABRV_IFACETYPE, DW_ABRV_MAPTYPE, DW_ABRV_PTRTYPE, DW_ABRV_BARE_PTRTYPE, // only for void*, no DW_AT_type attr to please gdb 6. DW_ABRV_SLICETYPE, DW_ABRV_STRINGTYPE, DW_ABRV_STRUCTTYPE, DW_ABRV_TYPEDECL, DW_NABRV }; typedef struct DWAbbrev DWAbbrev; static struct DWAbbrev { uint8 tag; uint8 children; DWAttrForm attr[30]; } abbrevs[DW_NABRV] = { /* The mandatory DW_ABRV_NULL entry. */ { 0 }, /* COMPUNIT */ { DW_TAG_compile_unit, DW_CHILDREN_yes, DW_AT_name, DW_FORM_string, DW_AT_language, DW_FORM_data1, DW_AT_low_pc, DW_FORM_addr, DW_AT_high_pc, DW_FORM_addr, DW_AT_stmt_list, DW_FORM_data4, 0, 0 }, /* FUNCTION */ { DW_TAG_subprogram, DW_CHILDREN_yes, DW_AT_name, DW_FORM_string, DW_AT_low_pc, DW_FORM_addr, DW_AT_high_pc, DW_FORM_addr, DW_AT_external, DW_FORM_flag, 0, 0 }, /* VARIABLE */ { DW_TAG_variable, DW_CHILDREN_no, DW_AT_name, DW_FORM_string, DW_AT_location, DW_FORM_block1, DW_AT_type, DW_FORM_ref_addr, DW_AT_external, DW_FORM_flag, 0, 0 }, /* AUTO */ { DW_TAG_variable, DW_CHILDREN_no, DW_AT_name, DW_FORM_string, DW_AT_location, DW_FORM_block1, DW_AT_type, DW_FORM_ref_addr, 0, 0 }, /* PARAM */ { DW_TAG_formal_parameter, DW_CHILDREN_no, DW_AT_name, DW_FORM_string, DW_AT_location, DW_FORM_block1, DW_AT_type, DW_FORM_ref_addr, 0, 0 }, /* STRUCTFIELD */ { DW_TAG_member, DW_CHILDREN_no, DW_AT_name, DW_FORM_string, DW_AT_data_member_location, DW_FORM_block1, DW_AT_type, DW_FORM_ref_addr, 0, 0 }, /* FUNCTYPEPARAM */ { DW_TAG_formal_parameter, DW_CHILDREN_no, // No name! DW_AT_type, DW_FORM_ref_addr, 0, 0 }, /* DOTDOTDOT */ { DW_TAG_unspecified_parameters, DW_CHILDREN_no, 0, 0 }, /* ARRAYRANGE */ { DW_TAG_subrange_type, DW_CHILDREN_no, // No name! DW_AT_type, DW_FORM_ref_addr, DW_AT_upper_bound, DW_FORM_data1, 0, 0 }, // Below here are the types considered public by ispubtype /* NULLTYPE */ { DW_TAG_unspecified_type, DW_CHILDREN_no, DW_AT_name, DW_FORM_string, 0, 0 }, /* BASETYPE */ { DW_TAG_base_type, DW_CHILDREN_no, DW_AT_name, DW_FORM_string, DW_AT_encoding, DW_FORM_data1, DW_AT_byte_size, DW_FORM_data1, 0, 0 }, /* ARRAYTYPE */ // child is subrange with upper bound { DW_TAG_array_type, DW_CHILDREN_yes, DW_AT_name, DW_FORM_string, DW_AT_type, DW_FORM_ref_addr, DW_AT_byte_size, DW_FORM_udata, 0, 0 }, /* CHANTYPE */ { DW_TAG_typedef, DW_CHILDREN_no, DW_AT_name, DW_FORM_string, DW_AT_type, DW_FORM_ref_addr, 0, 0 }, /* FUNCTYPE */ { DW_TAG_subroutine_type, DW_CHILDREN_yes, DW_AT_name, DW_FORM_string, // DW_AT_type, DW_FORM_ref_addr, 0, 0 }, /* IFACETYPE */ { DW_TAG_typedef, DW_CHILDREN_yes, DW_AT_name, DW_FORM_string, DW_AT_type, DW_FORM_ref_addr, 0, 0 }, /* MAPTYPE */ { DW_TAG_typedef, DW_CHILDREN_no, DW_AT_name, DW_FORM_string, DW_AT_type, DW_FORM_ref_addr, 0, 0 }, /* PTRTYPE */ { DW_TAG_pointer_type, DW_CHILDREN_no, DW_AT_name, DW_FORM_string, DW_AT_type, DW_FORM_ref_addr, 0, 0 }, /* BARE_PTRTYPE */ { DW_TAG_pointer_type, DW_CHILDREN_no, DW_AT_name, DW_FORM_string, 0, 0 }, /* SLICETYPE */ { DW_TAG_structure_type, DW_CHILDREN_yes, DW_AT_name, DW_FORM_string, DW_AT_byte_size, DW_FORM_udata, 0, 0 }, /* STRINGTYPE */ { DW_TAG_structure_type, DW_CHILDREN_yes, DW_AT_name, DW_FORM_string, DW_AT_byte_size, DW_FORM_udata, 0, 0 }, /* STRUCTTYPE */ { DW_TAG_structure_type, DW_CHILDREN_yes, DW_AT_name, DW_FORM_string, DW_AT_byte_size, DW_FORM_udata, 0, 0 }, /* TYPEDECL */ { DW_TAG_typedef, DW_CHILDREN_no, DW_AT_name, DW_FORM_string, DW_AT_type, DW_FORM_ref_addr, 0, 0 }, }; static void writeabbrev(void) { int i, n; abbrevo = cpos(); for (i = 1; i < DW_NABRV; i++) { // See section 7.5.3 uleb128put(i); uleb128put(abbrevs[i].tag); cput(abbrevs[i].children); // 0 is not a valid attr or form, and DWAbbrev.attr is // 0-terminated, so we can treat it as a string n = strlen((char*)abbrevs[i].attr) / 2; strnput((char*)abbrevs[i].attr, (n+1) * sizeof(DWAttrForm)); } cput(0); abbrevsize = cpos() - abbrevo; } /* * Debugging Information Entries and their attributes. */ enum { HASHSIZE = 107 }; static uint32 hashstr(char* s) { uint32 h; h = 0; while (*s) h = h+h+h + *s++; return h % HASHSIZE; } // For DW_CLS_string and _block, value should contain the length, and // data the data, for _reference, value is 0 and data is a DWDie* to // the referenced instance, for all others, value is the whole thing // and data is null. typedef struct DWAttr DWAttr; struct DWAttr { DWAttr *link; uint8 atr; // DW_AT_ uint8 cls; // DW_CLS_ vlong value; char *data; }; typedef struct DWDie DWDie; struct DWDie { int abbrev; DWDie *link; DWDie *child; DWAttr *attr; // offset into .debug_info section, i.e relative to // infoo. only valid after call to putdie() vlong offs; DWDie **hash; // optional index of children by name, enabled by mkindex() DWDie *hlink; // bucket chain in parent's index }; /* * Root DIEs for compilation units, types and global variables. */ static DWDie dwroot; static DWDie dwtypes; static DWDie dwglobals; static DWAttr* newattr(DWDie *die, uint8 attr, int cls, vlong value, char *data) { DWAttr *a; a = mal(sizeof *a); a->link = die->attr; die->attr = a; a->atr = attr; a->cls = cls; a->value = value; a->data = data; return a; } // Each DIE (except the root ones) has at least 1 attribute: its // name. getattr moves the desired one to the front so // frequently searched ones are found faster. static DWAttr* getattr(DWDie *die, uint8 attr) { DWAttr *a, *b; if (die->attr->atr == attr) return die->attr; a = die->attr; b = a->link; while (b != nil) { if (b->atr == attr) { a->link = b->link; b->link = die->attr; die->attr = b; return b; } a = b; b = b->link; } return nil; } // Every DIE has at least a DW_AT_name attribute (but it will only be // written out if it is listed in the abbrev). If its parent is // keeping an index, the new DIE will be inserted there. static DWDie* newdie(DWDie *parent, int abbrev, char *name) { DWDie *die; int h; die = mal(sizeof *die); die->abbrev = abbrev; die->link = parent->child; parent->child = die; newattr(die, DW_AT_name, DW_CLS_STRING, strlen(name), name); if (parent->hash) { h = hashstr(name); die->hlink = parent->hash[h]; parent->hash[h] = die; } return die; } static void mkindex(DWDie *die) { die->hash = mal(HASHSIZE * sizeof(DWDie*)); } static DWDie* walktypedef(DWDie *die) { DWAttr *attr; // Resolve typedef if present. if (die->abbrev == DW_ABRV_TYPEDECL) { for (attr = die->attr; attr; attr = attr->link) { if (attr->atr == DW_AT_type && attr->cls == DW_CLS_REFERENCE && attr->data != nil) { return (DWDie*)attr->data; } } } return die; } // Find child by AT_name using hashtable if available or linear scan // if not. static DWDie* find(DWDie *die, char* name) { DWDie *a, *b, *die2; int h; top: if (die->hash == nil) { for (a = die->child; a != nil; a = a->link) if (strcmp(name, getattr(a, DW_AT_name)->data) == 0) return a; goto notfound; } h = hashstr(name); a = die->hash[h]; if (a == nil) goto notfound; if (strcmp(name, getattr(a, DW_AT_name)->data) == 0) return a; // Move found ones to head of the list. b = a->hlink; while (b != nil) { if (strcmp(name, getattr(b, DW_AT_name)->data) == 0) { a->hlink = b->hlink; b->hlink = die->hash[h]; die->hash[h] = b; return b; } a = b; b = b->hlink; } notfound: die2 = walktypedef(die); if(die2 != die) { die = die2; goto top; } return nil; } static DWDie* find_or_diag(DWDie *die, char* name) { DWDie *r; r = find(die, name); if (r == nil) { diag("dwarf find: %s %p has no %s", getattr(die, DW_AT_name)->data, die, name); errorexit(); } return r; } static void adddwarfrel(LSym* sec, LSym* sym, vlong offsetbase, int siz, vlong addend) { Reloc *r; r = addrel(sec); r->sym = sym; r->xsym = sym; r->off = cpos() - offsetbase; r->siz = siz; r->type = R_ADDR; r->add = addend; r->xadd = addend; if(iself && thechar == '6') addend = 0; switch(siz) { case 4: LPUT(addend); break; case 8: VPUT(addend); break; default: diag("bad size in adddwarfrel"); break; } } static DWAttr* newrefattr(DWDie *die, uint8 attr, DWDie* ref) { if (ref == nil) return nil; return newattr(die, attr, DW_CLS_REFERENCE, 0, (char*)ref); } static int fwdcount; static void putattr(int abbrev, int form, int cls, vlong value, char *data) { vlong off; switch(form) { case DW_FORM_addr: // address if(linkmode == LinkExternal) { value -= ((LSym*)data)->value; adddwarfrel(infosec, (LSym*)data, infoo, PtrSize, value); break; } addrput(value); break; case DW_FORM_block1: // block if(cls == DW_CLS_ADDRESS) { cput(1+PtrSize); cput(DW_OP_addr); if(linkmode == LinkExternal) { value -= ((LSym*)data)->value; adddwarfrel(infosec, (LSym*)data, infoo, PtrSize, value); break; } addrput(value); break; } value &= 0xff; cput(value); while(value--) cput(*data++); break; case DW_FORM_block2: // block value &= 0xffff; WPUT(value); while(value--) cput(*data++); break; case DW_FORM_block4: // block value &= 0xffffffff; LPUT(value); while(value--) cput(*data++); break; case DW_FORM_block: // block uleb128put(value); while(value--) cput(*data++); break; case DW_FORM_data1: // constant cput(value); break; case DW_FORM_data2: // constant WPUT(value); break; case DW_FORM_data4: // constant, {line,loclist,mac,rangelist}ptr if(linkmode == LinkExternal && cls == DW_CLS_PTR) { adddwarfrel(infosec, linesym, infoo, 4, value); break; } LPUT(value); break; case DW_FORM_data8: // constant, {line,loclist,mac,rangelist}ptr VPUT(value); break; case DW_FORM_sdata: // constant sleb128put(value); break; case DW_FORM_udata: // constant uleb128put(value); break; case DW_FORM_string: // string strnput(data, value+1); break; case DW_FORM_flag: // flag cput(value?1:0); break; case DW_FORM_ref_addr: // reference to a DIE in the .info section // In DWARF 2 (which is what we claim to generate), // the ref_addr is the same size as a normal address. // In DWARF 3 it is always 32 bits, unless emitting a large // (> 4 GB of debug info aka "64-bit") unit, which we don't implement. if (data == nil) { diag("dwarf: null reference in %d", abbrev); if(PtrSize == 8) VPUT(0); // invalid dwarf, gdb will complain. else LPUT(0); // invalid dwarf, gdb will complain. } else { off = ((DWDie*)data)->offs; if (off == 0) fwdcount++; if(linkmode == LinkExternal) { adddwarfrel(infosec, infosym, infoo, PtrSize, off); break; } addrput(off); } break; case DW_FORM_ref1: // reference within the compilation unit case DW_FORM_ref2: // reference case DW_FORM_ref4: // reference case DW_FORM_ref8: // reference case DW_FORM_ref_udata: // reference case DW_FORM_strp: // string case DW_FORM_indirect: // (see Section 7.5.3) default: diag("dwarf: unsupported attribute form %d / class %d", form, cls); errorexit(); } } // Note that we can (and do) add arbitrary attributes to a DIE, but // only the ones actually listed in the Abbrev will be written out. static void putattrs(int abbrev, DWAttr* attr) { DWAttr *attrs[DW_AT_recursive + 1]; DWAttrForm* af; memset(attrs, 0, sizeof attrs); for( ; attr; attr = attr->link) if (attr->atr < nelem(attrs)) attrs[attr->atr] = attr; for(af = abbrevs[abbrev].attr; af->attr; af++) if (attrs[af->attr]) putattr(abbrev, af->form, attrs[af->attr]->cls, attrs[af->attr]->value, attrs[af->attr]->data); else putattr(abbrev, af->form, 0, 0, nil); } static void putdie(DWDie* die); static void putdies(DWDie* die) { for(; die; die = die->link) putdie(die); } static void putdie(DWDie* die) { die->offs = cpos() - infoo; uleb128put(die->abbrev); putattrs(die->abbrev, die->attr); if (abbrevs[die->abbrev].children) { putdies(die->child); cput(0); } } static void reverselist(DWDie** list) { DWDie *curr, *prev; curr = *list; prev = nil; while(curr != nil) { DWDie* next = curr->link; curr->link = prev; prev = curr; curr = next; } *list = prev; } static void reversetree(DWDie** list) { DWDie *die; reverselist(list); for (die = *list; die != nil; die = die->link) if (abbrevs[die->abbrev].children) reversetree(&die->child); } static void newmemberoffsetattr(DWDie *die, int32 offs) { char block[10]; int i; i = 0; if (offs != 0) { block[i++] = DW_OP_consts; i += sleb128enc(offs, block+i); block[i++] = DW_OP_plus; } newattr(die, DW_AT_data_member_location, DW_CLS_BLOCK, i, mal(i)); memmove(die->attr->data, block, i); } // GDB doesn't like DW_FORM_addr for DW_AT_location, so emit a // location expression that evals to a const. static void newabslocexprattr(DWDie *die, vlong addr, LSym *sym) { newattr(die, DW_AT_location, DW_CLS_ADDRESS, addr, (char*)sym); } // Fake attributes for slices, maps and channel enum { DW_AT_internal_elem_type = 250, // channels and slices DW_AT_internal_key_type = 251, // maps DW_AT_internal_val_type = 252, // maps DW_AT_internal_location = 253, // params and locals }; static DWDie* defptrto(DWDie *dwtype); // below // Lookup predefined types static LSym* lookup_or_diag(char *n) { LSym *s; s = linkrlookup(ctxt, n, 0); if (s == nil || s->size == 0) { diag("dwarf: missing type: %s", n); errorexit(); } return s; } static void dotypedef(DWDie *parent, char *name, DWDie *def) { DWDie *die; // Only emit typedefs for real names. if(strncmp(name, "map[", 4) == 0) return; if(strncmp(name, "struct {", 8) == 0) return; if(strncmp(name, "chan ", 5) == 0) return; if(*name == '[' || *name == '*') return; if(def == nil) diag("dwarf: bad def in dotypedef"); // The typedef entry must be created after the def, // so that future lookups will find the typedef instead // of the real definition. This hooks the typedef into any // circular definition loops, so that gdb can understand them. die = newdie(parent, DW_ABRV_TYPEDECL, name); newrefattr(die, DW_AT_type, def); } // Define gotype, for composite ones recurse into constituents. static DWDie* defgotype(LSym *gotype) { DWDie *die, *fld; LSym *s; char *name, *f; uint8 kind; vlong bytesize; int i, nfields; if (gotype == nil) return find_or_diag(&dwtypes, ""); if (strncmp("type.", gotype->name, 5) != 0) { diag("dwarf: type name doesn't start with \".type\": %s", gotype->name); return find_or_diag(&dwtypes, ""); } name = gotype->name + 5; // could also decode from Type.string die = find(&dwtypes, name); if (die != nil) return die; if (0 && debug['v'] > 2) print("new type: %Y\n", gotype); kind = decodetype_kind(gotype); bytesize = decodetype_size(gotype); switch (kind) { case KindBool: die = newdie(&dwtypes, DW_ABRV_BASETYPE, name); newattr(die, DW_AT_encoding, DW_CLS_CONSTANT, DW_ATE_boolean, 0); newattr(die, DW_AT_byte_size, DW_CLS_CONSTANT, bytesize, 0); break; case KindInt: case KindInt8: case KindInt16: case KindInt32: case KindInt64: die = newdie(&dwtypes, DW_ABRV_BASETYPE, name); newattr(die, DW_AT_encoding, DW_CLS_CONSTANT, DW_ATE_signed, 0); newattr(die, DW_AT_byte_size, DW_CLS_CONSTANT, bytesize, 0); break; case KindUint: case KindUint8: case KindUint16: case KindUint32: case KindUint64: case KindUintptr: die = newdie(&dwtypes, DW_ABRV_BASETYPE, name); newattr(die, DW_AT_encoding, DW_CLS_CONSTANT, DW_ATE_unsigned, 0); newattr(die, DW_AT_byte_size, DW_CLS_CONSTANT, bytesize, 0); break; case KindFloat32: case KindFloat64: die = newdie(&dwtypes, DW_ABRV_BASETYPE, name); newattr(die, DW_AT_encoding, DW_CLS_CONSTANT, DW_ATE_float, 0); newattr(die, DW_AT_byte_size, DW_CLS_CONSTANT, bytesize, 0); break; case KindComplex64: case KindComplex128: die = newdie(&dwtypes, DW_ABRV_BASETYPE, name); newattr(die, DW_AT_encoding, DW_CLS_CONSTANT, DW_ATE_complex_float, 0); newattr(die, DW_AT_byte_size, DW_CLS_CONSTANT, bytesize, 0); break; case KindArray: die = newdie(&dwtypes, DW_ABRV_ARRAYTYPE, name); dotypedef(&dwtypes, name, die); newattr(die, DW_AT_byte_size, DW_CLS_CONSTANT, bytesize, 0); s = decodetype_arrayelem(gotype); newrefattr(die, DW_AT_type, defgotype(s)); fld = newdie(die, DW_ABRV_ARRAYRANGE, "range"); newattr(fld, DW_AT_upper_bound, DW_CLS_CONSTANT, decodetype_arraylen(gotype), 0); newrefattr(fld, DW_AT_type, find_or_diag(&dwtypes, "uintptr")); break; case KindChan: die = newdie(&dwtypes, DW_ABRV_CHANTYPE, name); newattr(die, DW_AT_byte_size, DW_CLS_CONSTANT, bytesize, 0); s = decodetype_chanelem(gotype); newrefattr(die, DW_AT_internal_elem_type, defgotype(s)); break; case KindFunc: die = newdie(&dwtypes, DW_ABRV_FUNCTYPE, name); dotypedef(&dwtypes, name, die); newrefattr(die, DW_AT_type, find_or_diag(&dwtypes, "void")); nfields = decodetype_funcincount(gotype); for (i = 0; i < nfields; i++) { s = decodetype_funcintype(gotype, i); fld = newdie(die, DW_ABRV_FUNCTYPEPARAM, s->name+5); newrefattr(fld, DW_AT_type, defgotype(s)); } if (decodetype_funcdotdotdot(gotype)) newdie(die, DW_ABRV_DOTDOTDOT, "..."); nfields = decodetype_funcoutcount(gotype); for (i = 0; i < nfields; i++) { s = decodetype_funcouttype(gotype, i); fld = newdie(die, DW_ABRV_FUNCTYPEPARAM, s->name+5); newrefattr(fld, DW_AT_type, defptrto(defgotype(s))); } break; case KindInterface: die = newdie(&dwtypes, DW_ABRV_IFACETYPE, name); dotypedef(&dwtypes, name, die); newattr(die, DW_AT_byte_size, DW_CLS_CONSTANT, bytesize, 0); nfields = decodetype_ifacemethodcount(gotype); if (nfields == 0) s = lookup_or_diag("type.runtime.eface"); else s = lookup_or_diag("type.runtime.iface"); newrefattr(die, DW_AT_type, defgotype(s)); break; case KindMap: die = newdie(&dwtypes, DW_ABRV_MAPTYPE, name); s = decodetype_mapkey(gotype); newrefattr(die, DW_AT_internal_key_type, defgotype(s)); s = decodetype_mapvalue(gotype); newrefattr(die, DW_AT_internal_val_type, defgotype(s)); break; case KindPtr: die = newdie(&dwtypes, DW_ABRV_PTRTYPE, name); dotypedef(&dwtypes, name, die); s = decodetype_ptrelem(gotype); newrefattr(die, DW_AT_type, defgotype(s)); break; case KindSlice: die = newdie(&dwtypes, DW_ABRV_SLICETYPE, name); dotypedef(&dwtypes, name, die); newattr(die, DW_AT_byte_size, DW_CLS_CONSTANT, bytesize, 0); s = decodetype_arrayelem(gotype); newrefattr(die, DW_AT_internal_elem_type, defgotype(s)); break; case KindString: die = newdie(&dwtypes, DW_ABRV_STRINGTYPE, name); newattr(die, DW_AT_byte_size, DW_CLS_CONSTANT, bytesize, 0); break; case KindStruct: die = newdie(&dwtypes, DW_ABRV_STRUCTTYPE, name); dotypedef(&dwtypes, name, die); newattr(die, DW_AT_byte_size, DW_CLS_CONSTANT, bytesize, 0); nfields = decodetype_structfieldcount(gotype); for (i = 0; i < nfields; i++) { f = decodetype_structfieldname(gotype, i); s = decodetype_structfieldtype(gotype, i); if (f == nil) f = s->name + 5; // skip "type." fld = newdie(die, DW_ABRV_STRUCTFIELD, f); newrefattr(fld, DW_AT_type, defgotype(s)); newmemberoffsetattr(fld, decodetype_structfieldoffs(gotype, i)); } break; case KindUnsafePointer: die = newdie(&dwtypes, DW_ABRV_BARE_PTRTYPE, name); break; default: diag("dwarf: definition of unknown kind %d: %s", kind, gotype->name); die = newdie(&dwtypes, DW_ABRV_TYPEDECL, name); newrefattr(die, DW_AT_type, find_or_diag(&dwtypes, "")); } return die; } // Find or construct *T given T. static DWDie* defptrto(DWDie *dwtype) { char ptrname[1024]; DWDie *die; snprint(ptrname, sizeof ptrname, "*%s", getattr(dwtype, DW_AT_name)->data); die = find(&dwtypes, ptrname); if (die == nil) { die = newdie(&dwtypes, DW_ABRV_PTRTYPE, strcpy(mal(strlen(ptrname)+1), ptrname)); newrefattr(die, DW_AT_type, dwtype); } return die; } // Copies src's children into dst. Copies attributes by value. // DWAttr.data is copied as pointer only. If except is one of // the top-level children, it will not be copied. static void copychildrenexcept(DWDie *dst, DWDie *src, DWDie *except) { DWDie *c; DWAttr *a; for (src = src->child; src != nil; src = src->link) { if(src == except) continue; c = newdie(dst, src->abbrev, getattr(src, DW_AT_name)->data); for (a = src->attr; a != nil; a = a->link) newattr(c, a->atr, a->cls, a->value, a->data); copychildrenexcept(c, src, nil); } reverselist(&dst->child); } static void copychildren(DWDie *dst, DWDie *src) { copychildrenexcept(dst, src, nil); } // Search children (assumed to have DW_TAG_member) for the one named // field and set its DW_AT_type to dwtype static void substitutetype(DWDie *structdie, char *field, DWDie* dwtype) { DWDie *child; DWAttr *a; child = find_or_diag(structdie, field); if (child == nil) return; a = getattr(child, DW_AT_type); if (a != nil) a->data = (char*) dwtype; else newrefattr(child, DW_AT_type, dwtype); } static void synthesizestringtypes(DWDie* die) { DWDie *prototype; prototype = walktypedef(defgotype(lookup_or_diag("type.runtime._string"))); if (prototype == nil) return; for (; die != nil; die = die->link) { if (die->abbrev != DW_ABRV_STRINGTYPE) continue; copychildren(die, prototype); } } static void synthesizeslicetypes(DWDie *die) { DWDie *prototype, *elem; prototype = walktypedef(defgotype(lookup_or_diag("type.runtime.slice"))); if (prototype == nil) return; for (; die != nil; die = die->link) { if (die->abbrev != DW_ABRV_SLICETYPE) continue; copychildren(die, prototype); elem = (DWDie*) getattr(die, DW_AT_internal_elem_type)->data; substitutetype(die, "array", defptrto(elem)); } } static char* mkinternaltypename(char *base, char *arg1, char *arg2) { char buf[1024]; char *n; if (arg2 == nil) snprint(buf, sizeof buf, "%s<%s>", base, arg1); else snprint(buf, sizeof buf, "%s<%s,%s>", base, arg1, arg2); n = mal(strlen(buf) + 1); memmove(n, buf, strlen(buf)); return n; } // synthesizemaptypes is way too closely married to runtime/hashmap.c enum { MaxKeySize = 128, MaxValSize = 128, BucketSize = 8, }; static void synthesizemaptypes(DWDie *die) { DWDie *hash, *bucket, *dwh, *dwhk, *dwhv, *dwhb, *keytype, *valtype, *fld; int indirect_key, indirect_val; int keysize, valsize; DWAttr *a; hash = walktypedef(defgotype(lookup_or_diag("type.runtime.hmap"))); bucket = walktypedef(defgotype(lookup_or_diag("type.runtime.bucket"))); if (hash == nil) return; for (; die != nil; die = die->link) { if (die->abbrev != DW_ABRV_MAPTYPE) continue; keytype = walktypedef((DWDie*) getattr(die, DW_AT_internal_key_type)->data); valtype = walktypedef((DWDie*) getattr(die, DW_AT_internal_val_type)->data); // compute size info like hashmap.c does. a = getattr(keytype, DW_AT_byte_size); keysize = a ? a->value : PtrSize; // We don't store size with Pointers a = getattr(valtype, DW_AT_byte_size); valsize = a ? a->value : PtrSize; indirect_key = 0; indirect_val = 0; if(keysize > MaxKeySize) { keysize = PtrSize; indirect_key = 1; } if(valsize > MaxValSize) { valsize = PtrSize; indirect_val = 1; } // Construct type to represent an array of BucketSize keys dwhk = newdie(&dwtypes, DW_ABRV_ARRAYTYPE, mkinternaltypename("[]key", getattr(keytype, DW_AT_name)->data, nil)); newattr(dwhk, DW_AT_byte_size, DW_CLS_CONSTANT, BucketSize * keysize, 0); newrefattr(dwhk, DW_AT_type, indirect_key ? defptrto(keytype) : keytype); fld = newdie(dwhk, DW_ABRV_ARRAYRANGE, "size"); newattr(fld, DW_AT_upper_bound, DW_CLS_CONSTANT, BucketSize, 0); newrefattr(fld, DW_AT_type, find_or_diag(&dwtypes, "uintptr")); // Construct type to represent an array of BucketSize values dwhv = newdie(&dwtypes, DW_ABRV_ARRAYTYPE, mkinternaltypename("[]val", getattr(valtype, DW_AT_name)->data, nil)); newattr(dwhv, DW_AT_byte_size, DW_CLS_CONSTANT, BucketSize * valsize, 0); newrefattr(dwhv, DW_AT_type, indirect_val ? defptrto(valtype) : valtype); fld = newdie(dwhv, DW_ABRV_ARRAYRANGE, "size"); newattr(fld, DW_AT_upper_bound, DW_CLS_CONSTANT, BucketSize, 0); newrefattr(fld, DW_AT_type, find_or_diag(&dwtypes, "uintptr")); // Construct bucket dwhb = newdie(&dwtypes, DW_ABRV_STRUCTTYPE, mkinternaltypename("bucket", getattr(keytype, DW_AT_name)->data, getattr(valtype, DW_AT_name)->data)); // Copy over all fields except the field "data" from the generic bucket. // "data" will be replaced with keys/values below. copychildrenexcept(dwhb, bucket, find(bucket, "data")); fld = newdie(dwhb, DW_ABRV_STRUCTFIELD, "keys"); newrefattr(fld, DW_AT_type, dwhk); newmemberoffsetattr(fld, BucketSize + PtrSize); fld = newdie(dwhb, DW_ABRV_STRUCTFIELD, "values"); newrefattr(fld, DW_AT_type, dwhv); newmemberoffsetattr(fld, BucketSize + PtrSize + BucketSize * keysize); newattr(dwhb, DW_AT_byte_size, DW_CLS_CONSTANT, BucketSize + PtrSize + BucketSize * keysize + BucketSize * valsize, 0); substitutetype(dwhb, "overflow", defptrto(dwhb)); // Construct hash dwh = newdie(&dwtypes, DW_ABRV_STRUCTTYPE, mkinternaltypename("hash", getattr(keytype, DW_AT_name)->data, getattr(valtype, DW_AT_name)->data)); copychildren(dwh, hash); substitutetype(dwh, "buckets", defptrto(dwhb)); substitutetype(dwh, "oldbuckets", defptrto(dwhb)); newattr(dwh, DW_AT_byte_size, DW_CLS_CONSTANT, getattr(hash, DW_AT_byte_size)->value, nil); // make map type a pointer to hash newrefattr(die, DW_AT_type, defptrto(dwh)); } } static void synthesizechantypes(DWDie *die) { DWDie *sudog, *waitq, *hchan, *dws, *dww, *dwh, *elemtype; DWAttr *a; int elemsize, sudogsize; sudog = walktypedef(defgotype(lookup_or_diag("type.runtime.sudog"))); waitq = walktypedef(defgotype(lookup_or_diag("type.runtime.waitq"))); hchan = walktypedef(defgotype(lookup_or_diag("type.runtime.hchan"))); if (sudog == nil || waitq == nil || hchan == nil) return; sudogsize = getattr(sudog, DW_AT_byte_size)->value; for (; die != nil; die = die->link) { if (die->abbrev != DW_ABRV_CHANTYPE) continue; elemtype = (DWDie*) getattr(die, DW_AT_internal_elem_type)->data; a = getattr(elemtype, DW_AT_byte_size); elemsize = a ? a->value : PtrSize; // sudog dws = newdie(&dwtypes, DW_ABRV_STRUCTTYPE, mkinternaltypename("sudog", getattr(elemtype, DW_AT_name)->data, nil)); copychildren(dws, sudog); substitutetype(dws, "elem", elemtype); newattr(dws, DW_AT_byte_size, DW_CLS_CONSTANT, sudogsize + (elemsize > 8 ? elemsize - 8 : 0), nil); // waitq dww = newdie(&dwtypes, DW_ABRV_STRUCTTYPE, mkinternaltypename("waitq", getattr(elemtype, DW_AT_name)->data, nil)); copychildren(dww, waitq); substitutetype(dww, "first", defptrto(dws)); substitutetype(dww, "last", defptrto(dws)); newattr(dww, DW_AT_byte_size, DW_CLS_CONSTANT, getattr(waitq, DW_AT_byte_size)->value, nil); // hchan dwh = newdie(&dwtypes, DW_ABRV_STRUCTTYPE, mkinternaltypename("hchan", getattr(elemtype, DW_AT_name)->data, nil)); copychildren(dwh, hchan); substitutetype(dwh, "recvq", dww); substitutetype(dwh, "sendq", dww); newattr(dwh, DW_AT_byte_size, DW_CLS_CONSTANT, getattr(hchan, DW_AT_byte_size)->value, nil); newrefattr(die, DW_AT_type, defptrto(dwh)); } } // For use with pass.c::genasmsym static void defdwsymb(LSym* sym, char *s, int t, vlong v, vlong size, int ver, LSym *gotype) { DWDie *dv, *dt; USED(size); if (strncmp(s, "go.string.", 10) == 0) return; if (strncmp(s, "type.", 5) == 0 && strcmp(s, "type.*") != 0 && strncmp(s, "type..", 6) != 0) { defgotype(sym); return; } dv = nil; switch (t) { default: return; case 'd': case 'b': case 'D': case 'B': dv = newdie(&dwglobals, DW_ABRV_VARIABLE, s); newabslocexprattr(dv, v, sym); if (ver == 0) newattr(dv, DW_AT_external, DW_CLS_FLAG, 1, 0); // fallthrough case 'a': case 'p': dt = defgotype(gotype); } if (dv != nil) newrefattr(dv, DW_AT_type, dt); } static void movetomodule(DWDie *parent) { DWDie *die; die = dwroot.child->child; while(die->link != nil) die = die->link; die->link = parent->child; } // If the pcln table contains runtime/string.goc, use that to set gdbscript path. static void finddebugruntimepath(LSym *s) { int i; char *p; LSym *f; if(gdbscript[0] != '\0') return; for(i=0; ipcln->nfile; i++) { f = s->pcln->file[i]; if((p = strstr(f->name, "runtime/string.goc")) != nil) { *p = '\0'; snprint(gdbscript, sizeof gdbscript, "%sruntime/runtime-gdb.py", f->name); *p = 'r'; break; } } } /* * Generate short opcodes when possible, long ones when necessary. * See section 6.2.5 */ enum { LINE_BASE = -1, LINE_RANGE = 4, OPCODE_BASE = 10 }; static void putpclcdelta(vlong delta_pc, vlong delta_lc) { if (LINE_BASE <= delta_lc && delta_lc < LINE_BASE+LINE_RANGE) { vlong opcode = OPCODE_BASE + (delta_lc - LINE_BASE) + (LINE_RANGE * delta_pc); if (OPCODE_BASE <= opcode && opcode < 256) { cput(opcode); return; } } if (delta_pc) { cput(DW_LNS_advance_pc); sleb128put(delta_pc); } cput(DW_LNS_advance_line); sleb128put(delta_lc); cput(DW_LNS_copy); } static void newcfaoffsetattr(DWDie *die, int32 offs) { char block[10]; int i; i = 0; block[i++] = DW_OP_call_frame_cfa; if (offs != 0) { block[i++] = DW_OP_consts; i += sleb128enc(offs, block+i); block[i++] = DW_OP_plus; } newattr(die, DW_AT_location, DW_CLS_BLOCK, i, mal(i)); memmove(die->attr->data, block, i); } static char* mkvarname(char* name, int da) { char buf[1024]; char *n; snprint(buf, sizeof buf, "%s#%d", name, da); n = mal(strlen(buf) + 1); memmove(n, buf, strlen(buf)); return n; } /* * Walk prog table, emit line program and build DIE tree. */ // flush previous compilation unit. static void flushunit(DWDie *dwinfo, vlong pc, LSym *pcsym, vlong unitstart, int32 header_length) { vlong here; if (dwinfo != nil && pc != 0) { newattr(dwinfo, DW_AT_high_pc, DW_CLS_ADDRESS, pc+1, (char*)pcsym); } if (unitstart >= 0) { cput(0); // start extended opcode uleb128put(1); cput(DW_LNE_end_sequence); here = cpos(); cseek(unitstart); LPUT(here - unitstart - sizeof(int32)); // unit_length WPUT(2); // dwarf version LPUT(header_length); // header length starting here cseek(here); } } static void writelines(void) { LSym *s, *epcs; Auto *a; vlong unitstart, headerend, offs; vlong pc, epc; int i, lang, da, dt, line, file; DWDie *dwinfo, *dwfunc, *dwvar, **dws; DWDie *varhash[HASHSIZE]; char *n, *nn; Pciter pcfile, pcline; LSym **files, *f; if(linesec == S) linesec = linklookup(ctxt, ".dwarfline", 0); linesec->nr = 0; unitstart = -1; headerend = -1; epc = 0; epcs = S; lineo = cpos(); dwinfo = nil; flushunit(dwinfo, epc, epcs, unitstart, headerend - unitstart - 10); unitstart = cpos(); lang = DW_LANG_Go; s = ctxt->textp; dwinfo = newdie(&dwroot, DW_ABRV_COMPUNIT, estrdup("go")); newattr(dwinfo, DW_AT_language, DW_CLS_CONSTANT,lang, 0); newattr(dwinfo, DW_AT_stmt_list, DW_CLS_PTR, unitstart - lineo, 0); newattr(dwinfo, DW_AT_low_pc, DW_CLS_ADDRESS, s->value, (char*)s); // Write .debug_line Line Number Program Header (sec 6.2.4) // Fields marked with (*) must be changed for 64-bit dwarf LPUT(0); // unit_length (*), will be filled in by flushunit. WPUT(2); // dwarf version (appendix F) LPUT(0); // header_length (*), filled in by flushunit. // cpos == unitstart + 4 + 2 + 4 cput(1); // minimum_instruction_length cput(1); // default_is_stmt cput(LINE_BASE); // line_base cput(LINE_RANGE); // line_range cput(OPCODE_BASE); // opcode_base cput(0); // standard_opcode_lengths[1] cput(1); // standard_opcode_lengths[2] cput(1); // standard_opcode_lengths[3] cput(1); // standard_opcode_lengths[4] cput(1); // standard_opcode_lengths[5] cput(0); // standard_opcode_lengths[6] cput(0); // standard_opcode_lengths[7] cput(0); // standard_opcode_lengths[8] cput(1); // standard_opcode_lengths[9] cput(0); // include_directories (empty) files = emallocz(ctxt->nhistfile*sizeof files[0]); for(f = ctxt->filesyms; f != nil; f = f->next) files[f->value-1] = f; for(i=0; inhistfile; i++) { strnput(files[i]->name, strlen(files[i]->name) + 4); // 4 zeros: the string termination + 3 fields. } cput(0); // terminate file_names. headerend = cpos(); cput(0); // start extended opcode uleb128put(1 + PtrSize); cput(DW_LNE_set_address); pc = s->value; line = 1; file = 1; if(linkmode == LinkExternal) adddwarfrel(linesec, s, lineo, PtrSize, 0); else addrput(pc); for(ctxt->cursym = ctxt->textp; ctxt->cursym != nil; ctxt->cursym = ctxt->cursym->next) { s = ctxt->cursym; dwfunc = newdie(dwinfo, DW_ABRV_FUNCTION, s->name); newattr(dwfunc, DW_AT_low_pc, DW_CLS_ADDRESS, s->value, (char*)s); epc = s->value + s->size; epcs = s; newattr(dwfunc, DW_AT_high_pc, DW_CLS_ADDRESS, epc, (char*)s); if (s->version == 0) newattr(dwfunc, DW_AT_external, DW_CLS_FLAG, 1, 0); if(s->pcln == nil) continue; finddebugruntimepath(s); pciterinit(ctxt, &pcfile, &s->pcln->pcfile); pciterinit(ctxt, &pcline, &s->pcln->pcline); epc = pc; while(!pcfile.done && !pcline.done) { if(epc - s->value >= pcfile.nextpc) { pciternext(&pcfile); continue; } if(epc - s->value >= pcline.nextpc) { pciternext(&pcline); continue; } if(file != pcfile.value) { cput(DW_LNS_set_file); uleb128put(pcfile.value); file = pcfile.value; } putpclcdelta(s->value + pcline.pc - pc, pcline.value - line); pc = s->value + pcline.pc; line = pcline.value; if(pcfile.nextpc < pcline.nextpc) epc = pcfile.nextpc; else epc = pcline.nextpc; epc += s->value; } da = 0; dwfunc->hash = varhash; // enable indexing of children by name memset(varhash, 0, sizeof varhash); for(a = s->autom; a; a = a->link) { switch (a->type) { case A_AUTO: dt = DW_ABRV_AUTO; offs = a->aoffset - PtrSize; break; case A_PARAM: dt = DW_ABRV_PARAM; offs = a->aoffset; break; default: continue; } if (strstr(a->asym->name, ".autotmp_")) continue; if (find(dwfunc, a->asym->name) != nil) n = mkvarname(a->asym->name, da); else n = a->asym->name; // Drop the package prefix from locals and arguments. nn = strrchr(n, '.'); if (nn) n = nn + 1; dwvar = newdie(dwfunc, dt, n); newcfaoffsetattr(dwvar, offs); newrefattr(dwvar, DW_AT_type, defgotype(a->gotype)); // push dwvar down dwfunc->child to preserve order newattr(dwvar, DW_AT_internal_location, DW_CLS_CONSTANT, offs, nil); dwfunc->child = dwvar->link; // take dwvar out from the top of the list for (dws = &dwfunc->child; *dws != nil; dws = &(*dws)->link) if (offs > getattr(*dws, DW_AT_internal_location)->value) break; dwvar->link = *dws; *dws = dwvar; da++; } dwfunc->hash = nil; } flushunit(dwinfo, epc, epcs, unitstart, headerend - unitstart - 10); linesize = cpos() - lineo; } /* * Emit .debug_frame */ enum { CIERESERVE = 16, DATAALIGNMENTFACTOR = -4, // TODO -PtrSize? FAKERETURNCOLUMN = 16 // TODO gdb6 doesn't like > 15? }; static void putpccfadelta(vlong deltapc, vlong cfa) { if (deltapc < 0x40) { cput(DW_CFA_advance_loc + deltapc); } else if (deltapc < 0x100) { cput(DW_CFA_advance_loc1); cput(deltapc); } else if (deltapc < 0x10000) { cput(DW_CFA_advance_loc2); WPUT(deltapc); } else { cput(DW_CFA_advance_loc4); LPUT(deltapc); } cput(DW_CFA_def_cfa_offset_sf); sleb128put(cfa / DATAALIGNMENTFACTOR); } static void writeframes(void) { LSym *s; vlong fdeo, fdesize, pad; Pciter pcsp; if(framesec == S) framesec = linklookup(ctxt, ".dwarfframe", 0); framesec->nr = 0; frameo = cpos(); // Emit the CIE, Section 6.4.1 LPUT(CIERESERVE); // initial length, must be multiple of PtrSize LPUT(0xffffffff); // cid. cput(3); // dwarf version (appendix F) cput(0); // augmentation "" uleb128put(1); // code_alignment_factor sleb128put(DATAALIGNMENTFACTOR); // guess uleb128put(FAKERETURNCOLUMN); // return_address_register cput(DW_CFA_def_cfa); uleb128put(DWARFREGSP); // register SP (**ABI-dependent, defined in l.h) uleb128put(PtrSize); // offset cput(DW_CFA_offset + FAKERETURNCOLUMN); // return address uleb128put(-PtrSize / DATAALIGNMENTFACTOR); // at cfa - x*4 // 4 is to exclude the length field. pad = CIERESERVE + frameo + 4 - cpos(); if (pad < 0) { diag("dwarf: CIERESERVE too small by %lld bytes.", -pad); errorexit(); } strnput("", pad); for(ctxt->cursym = ctxt->textp; ctxt->cursym != nil; ctxt->cursym = ctxt->cursym->next) { s = ctxt->cursym; if(s->pcln == nil) continue; fdeo = cpos(); // Emit a FDE, Section 6.4.1, starting wit a placeholder. LPUT(0); // length, must be multiple of PtrSize LPUT(0); // Pointer to the CIE above, at offset 0 addrput(0); // initial location addrput(0); // address range for(pciterinit(ctxt, &pcsp, &s->pcln->pcsp); !pcsp.done; pciternext(&pcsp)) putpccfadelta(pcsp.nextpc - pcsp.pc, PtrSize + pcsp.value); fdesize = cpos() - fdeo - 4; // exclude the length field. pad = rnd(fdesize, PtrSize) - fdesize; strnput("", pad); fdesize += pad; // Emit the FDE header for real, Section 6.4.1. cseek(fdeo); LPUT(fdesize); if(linkmode == LinkExternal) { adddwarfrel(framesec, framesym, frameo, 4, 0); adddwarfrel(framesec, s, frameo, PtrSize, 0); } else { LPUT(0); addrput(s->value); } addrput(s->size); cseek(fdeo + 4 + fdesize); } cflush(); framesize = cpos() - frameo; } /* * Walk DWarfDebugInfoEntries, and emit .debug_info */ enum { COMPUNITHEADERSIZE = 4+2+4+1 }; static void writeinfo(void) { DWDie *compunit; vlong unitstart, here; fwdcount = 0; if (infosec == S) infosec = linklookup(ctxt, ".dwarfinfo", 0); infosec->nr = 0; if(arangessec == S) arangessec = linklookup(ctxt, ".dwarfaranges", 0); arangessec->nr = 0; for (compunit = dwroot.child; compunit; compunit = compunit->link) { unitstart = cpos(); // Write .debug_info Compilation Unit Header (sec 7.5.1) // Fields marked with (*) must be changed for 64-bit dwarf // This must match COMPUNITHEADERSIZE above. LPUT(0); // unit_length (*), will be filled in later. WPUT(2); // dwarf version (appendix F) // debug_abbrev_offset (*) if(linkmode == LinkExternal) adddwarfrel(infosec, abbrevsym, infoo, 4, 0); else LPUT(0); cput(PtrSize); // address_size putdie(compunit); here = cpos(); cseek(unitstart); LPUT(here - unitstart - 4); // exclude the length field. cseek(here); } cflush(); } /* * Emit .debug_pubnames/_types. _info must have been written before, * because we need die->offs and infoo/infosize; */ static int ispubname(DWDie *die) { DWAttr *a; switch(die->abbrev) { case DW_ABRV_FUNCTION: case DW_ABRV_VARIABLE: a = getattr(die, DW_AT_external); return a && a->value; } return 0; } static int ispubtype(DWDie *die) { return die->abbrev >= DW_ABRV_NULLTYPE; } static vlong writepub(int (*ispub)(DWDie*)) { DWDie *compunit, *die; DWAttr *dwa; vlong unitstart, unitend, sectionstart, here; sectionstart = cpos(); for (compunit = dwroot.child; compunit != nil; compunit = compunit->link) { unitstart = compunit->offs - COMPUNITHEADERSIZE; if (compunit->link != nil) unitend = compunit->link->offs - COMPUNITHEADERSIZE; else unitend = infoo + infosize; // Write .debug_pubnames/types Header (sec 6.1.1) LPUT(0); // unit_length (*), will be filled in later. WPUT(2); // dwarf version (appendix F) LPUT(unitstart); // debug_info_offset (of the Comp unit Header) LPUT(unitend - unitstart); // debug_info_length for (die = compunit->child; die != nil; die = die->link) { if (!ispub(die)) continue; LPUT(die->offs - unitstart); dwa = getattr(die, DW_AT_name); strnput(dwa->data, dwa->value + 1); } LPUT(0); here = cpos(); cseek(sectionstart); LPUT(here - sectionstart - 4); // exclude the length field. cseek(here); } return sectionstart; } /* * emit .debug_aranges. _info must have been written before, * because we need die->offs of dw_globals. */ static vlong writearanges(void) { DWDie *compunit; DWAttr *b, *e; int headersize; vlong sectionstart; vlong value; sectionstart = cpos(); headersize = rnd(4+2+4+1+1, PtrSize); // don't count unit_length field itself for (compunit = dwroot.child; compunit != nil; compunit = compunit->link) { b = getattr(compunit, DW_AT_low_pc); if (b == nil) continue; e = getattr(compunit, DW_AT_high_pc); if (e == nil) continue; // Write .debug_aranges Header + entry (sec 6.1.2) LPUT(headersize + 4*PtrSize - 4); // unit_length (*) WPUT(2); // dwarf version (appendix F) value = compunit->offs - COMPUNITHEADERSIZE; // debug_info_offset if(linkmode == LinkExternal) adddwarfrel(arangessec, infosym, sectionstart, 4, value); else LPUT(value); cput(PtrSize); // address_size cput(0); // segment_size strnput("", headersize - (4+2+4+1+1)); // align to PtrSize if(linkmode == LinkExternal) adddwarfrel(arangessec, (LSym*)b->data, sectionstart, PtrSize, b->value-((LSym*)b->data)->value); else addrput(b->value); addrput(e->value - b->value); addrput(0); addrput(0); } cflush(); return sectionstart; } static vlong writegdbscript(void) { vlong sectionstart; sectionstart = cpos(); if (gdbscript[0]) { cput(1); // magic 1 byte? strnput(gdbscript, strlen(gdbscript)+1); cflush(); } return sectionstart; } static void align(vlong size) { if(HEADTYPE == Hwindows) // Only Windows PE need section align. strnput("", rnd(size, PEFILEALIGN) - size); } static vlong writedwarfreloc(LSym* s) { int i; vlong start; Reloc *r; start = cpos(); for(r = s->r; r < s->r+s->nr; r++) { if(iself) i = elfreloc1(r, r->off); else if(HEADTYPE == Hdarwin) i = machoreloc1(r, r->off); else i = -1; if(i < 0) diag("unsupported obj reloc %d/%d to %s", r->type, r->siz, r->sym->name); } return start; } /* * This is the main entry point for generating dwarf. After emitting * the mandatory debug_abbrev section, it calls writelines() to set up * the per-compilation unit part of the DIE tree, while simultaneously * emitting the debug_line section. When the final tree contains * forward references, it will write the debug_info section in 2 * passes. * */ void dwarfemitdebugsections(void) { vlong infoe; DWDie* die; if(debug['w']) // disable dwarf return; if(linkmode == LinkExternal && !iself) return; // For diagnostic messages. newattr(&dwtypes, DW_AT_name, DW_CLS_STRING, strlen("dwtypes"), "dwtypes"); mkindex(&dwroot); mkindex(&dwtypes); mkindex(&dwglobals); // Some types that must exist to define other ones. newdie(&dwtypes, DW_ABRV_NULLTYPE, ""); newdie(&dwtypes, DW_ABRV_NULLTYPE, "void"); newdie(&dwtypes, DW_ABRV_BARE_PTRTYPE, "unsafe.Pointer"); die = newdie(&dwtypes, DW_ABRV_BASETYPE, "uintptr"); // needed for array size newattr(die, DW_AT_encoding, DW_CLS_CONSTANT, DW_ATE_unsigned, 0); newattr(die, DW_AT_byte_size, DW_CLS_CONSTANT, PtrSize, 0); // Needed by the prettyprinter code for interface inspection. defgotype(lookup_or_diag("type.runtime.rtype")); defgotype(lookup_or_diag("type.runtime.interfaceType")); defgotype(lookup_or_diag("type.runtime.itab")); genasmsym(defdwsymb); writeabbrev(); align(abbrevsize); writelines(); align(linesize); writeframes(); align(framesize); synthesizestringtypes(dwtypes.child); synthesizeslicetypes(dwtypes.child); synthesizemaptypes(dwtypes.child); synthesizechantypes(dwtypes.child); reversetree(&dwroot.child); reversetree(&dwtypes.child); reversetree(&dwglobals.child); movetomodule(&dwtypes); movetomodule(&dwglobals); infoo = cpos(); writeinfo(); infoe = cpos(); pubnameso = infoe; pubtypeso = infoe; arangeso = infoe; gdbscripto = infoe; if (fwdcount > 0) { if (debug['v']) Bprint(&bso, "%5.2f dwarf pass 2.\n", cputime()); cseek(infoo); writeinfo(); if (fwdcount > 0) { diag("dwarf: unresolved references after first dwarf info pass"); errorexit(); } if (infoe != cpos()) { diag("dwarf: inconsistent second dwarf info pass"); errorexit(); } } infosize = infoe - infoo; align(infosize); pubnameso = writepub(ispubname); pubnamessize = cpos() - pubnameso; align(pubnamessize); pubtypeso = writepub(ispubtype); pubtypessize = cpos() - pubtypeso; align(pubtypessize); arangeso = writearanges(); arangessize = cpos() - arangeso; align(arangessize); gdbscripto = writegdbscript(); gdbscriptsize = cpos() - gdbscripto; align(gdbscriptsize); while(cpos()&7) cput(0); inforeloco = writedwarfreloc(infosec); inforelocsize = cpos() - inforeloco; align(inforelocsize); arangesreloco = writedwarfreloc(arangessec); arangesrelocsize = cpos() - arangesreloco; align(arangesrelocsize); linereloco = writedwarfreloc(linesec); linerelocsize = cpos() - linereloco; align(linerelocsize); framereloco = writedwarfreloc(framesec); framerelocsize = cpos() - framereloco; align(framerelocsize); } /* * Elf. */ enum { ElfStrDebugAbbrev, ElfStrDebugAranges, ElfStrDebugFrame, ElfStrDebugInfo, ElfStrDebugLine, ElfStrDebugLoc, ElfStrDebugMacinfo, ElfStrDebugPubNames, ElfStrDebugPubTypes, ElfStrDebugRanges, ElfStrDebugStr, ElfStrGDBScripts, ElfStrRelDebugInfo, ElfStrRelDebugAranges, ElfStrRelDebugLine, ElfStrRelDebugFrame, NElfStrDbg }; vlong elfstrdbg[NElfStrDbg]; void dwarfaddshstrings(LSym *shstrtab) { if(debug['w']) // disable dwarf return; elfstrdbg[ElfStrDebugAbbrev] = addstring(shstrtab, ".debug_abbrev"); elfstrdbg[ElfStrDebugAranges] = addstring(shstrtab, ".debug_aranges"); elfstrdbg[ElfStrDebugFrame] = addstring(shstrtab, ".debug_frame"); elfstrdbg[ElfStrDebugInfo] = addstring(shstrtab, ".debug_info"); elfstrdbg[ElfStrDebugLine] = addstring(shstrtab, ".debug_line"); elfstrdbg[ElfStrDebugLoc] = addstring(shstrtab, ".debug_loc"); elfstrdbg[ElfStrDebugMacinfo] = addstring(shstrtab, ".debug_macinfo"); elfstrdbg[ElfStrDebugPubNames] = addstring(shstrtab, ".debug_pubnames"); elfstrdbg[ElfStrDebugPubTypes] = addstring(shstrtab, ".debug_pubtypes"); elfstrdbg[ElfStrDebugRanges] = addstring(shstrtab, ".debug_ranges"); elfstrdbg[ElfStrDebugStr] = addstring(shstrtab, ".debug_str"); elfstrdbg[ElfStrGDBScripts] = addstring(shstrtab, ".debug_gdb_scripts"); if(linkmode == LinkExternal) { if(thechar == '6') { elfstrdbg[ElfStrRelDebugInfo] = addstring(shstrtab, ".rela.debug_info"); elfstrdbg[ElfStrRelDebugAranges] = addstring(shstrtab, ".rela.debug_aranges"); elfstrdbg[ElfStrRelDebugLine] = addstring(shstrtab, ".rela.debug_line"); elfstrdbg[ElfStrRelDebugFrame] = addstring(shstrtab, ".rela.debug_frame"); } else { elfstrdbg[ElfStrRelDebugInfo] = addstring(shstrtab, ".rel.debug_info"); elfstrdbg[ElfStrRelDebugAranges] = addstring(shstrtab, ".rel.debug_aranges"); elfstrdbg[ElfStrRelDebugLine] = addstring(shstrtab, ".rel.debug_line"); elfstrdbg[ElfStrRelDebugFrame] = addstring(shstrtab, ".rel.debug_frame"); } infosym = linklookup(ctxt, ".debug_info", 0); infosym->hide = 1; abbrevsym = linklookup(ctxt, ".debug_abbrev", 0); abbrevsym->hide = 1; linesym = linklookup(ctxt, ".debug_line", 0); linesym->hide = 1; framesym = linklookup(ctxt, ".debug_frame", 0); framesym->hide = 1; } } // Add section symbols for DWARF debug info. This is called before // dwarfaddelfheaders. void dwarfaddelfsectionsyms() { if(infosym != nil) { infosympos = cpos(); putelfsectionsym(infosym, 0); } if(abbrevsym != nil) { abbrevsympos = cpos(); putelfsectionsym(abbrevsym, 0); } if(linesym != nil) { linesympos = cpos(); putelfsectionsym(linesym, 0); } if(framesym != nil) { framesympos = cpos(); putelfsectionsym(framesym, 0); } } static void dwarfaddelfrelocheader(int elfstr, ElfShdr *shdata, vlong off, vlong size) { ElfShdr *sh; sh = newElfShdr(elfstrdbg[elfstr]); if(thechar == '6') { sh->type = SHT_RELA; } else { sh->type = SHT_REL; } sh->entsize = PtrSize*(2+(sh->type==SHT_RELA)); sh->link = elfshname(".symtab")->shnum; sh->info = shdata->shnum; sh->off = off; sh->size = size; sh->addralign = PtrSize; } void dwarfaddelfheaders(void) { ElfShdr *sh, *shinfo, *sharanges, *shline, *shframe; if(debug['w']) // disable dwarf return; sh = newElfShdr(elfstrdbg[ElfStrDebugAbbrev]); sh->type = SHT_PROGBITS; sh->off = abbrevo; sh->size = abbrevsize; sh->addralign = 1; if(abbrevsympos > 0) putelfsymshndx(abbrevsympos, sh->shnum); sh = newElfShdr(elfstrdbg[ElfStrDebugLine]); sh->type = SHT_PROGBITS; sh->off = lineo; sh->size = linesize; sh->addralign = 1; if(linesympos > 0) putelfsymshndx(linesympos, sh->shnum); shline = sh; sh = newElfShdr(elfstrdbg[ElfStrDebugFrame]); sh->type = SHT_PROGBITS; sh->off = frameo; sh->size = framesize; sh->addralign = 1; if(framesympos > 0) putelfsymshndx(framesympos, sh->shnum); shframe = sh; sh = newElfShdr(elfstrdbg[ElfStrDebugInfo]); sh->type = SHT_PROGBITS; sh->off = infoo; sh->size = infosize; sh->addralign = 1; if(infosympos > 0) putelfsymshndx(infosympos, sh->shnum); shinfo = sh; if (pubnamessize > 0) { sh = newElfShdr(elfstrdbg[ElfStrDebugPubNames]); sh->type = SHT_PROGBITS; sh->off = pubnameso; sh->size = pubnamessize; sh->addralign = 1; } if (pubtypessize > 0) { sh = newElfShdr(elfstrdbg[ElfStrDebugPubTypes]); sh->type = SHT_PROGBITS; sh->off = pubtypeso; sh->size = pubtypessize; sh->addralign = 1; } sharanges = nil; if (arangessize) { sh = newElfShdr(elfstrdbg[ElfStrDebugAranges]); sh->type = SHT_PROGBITS; sh->off = arangeso; sh->size = arangessize; sh->addralign = 1; sharanges = sh; } if (gdbscriptsize) { sh = newElfShdr(elfstrdbg[ElfStrGDBScripts]); sh->type = SHT_PROGBITS; sh->off = gdbscripto; sh->size = gdbscriptsize; sh->addralign = 1; } if(inforelocsize) dwarfaddelfrelocheader(ElfStrRelDebugInfo, shinfo, inforeloco, inforelocsize); if(arangesrelocsize) dwarfaddelfrelocheader(ElfStrRelDebugAranges, sharanges, arangesreloco, arangesrelocsize); if(linerelocsize) dwarfaddelfrelocheader(ElfStrRelDebugLine, shline, linereloco, linerelocsize); if(framerelocsize) dwarfaddelfrelocheader(ElfStrRelDebugFrame, shframe, framereloco, framerelocsize); } /* * Macho */ void dwarfaddmachoheaders(void) { MachoSect *msect; MachoSeg *ms; vlong fakestart; int nsect; if(debug['w']) // disable dwarf return; // Zero vsize segments won't be loaded in memory, even so they // have to be page aligned in the file. fakestart = abbrevo & ~0xfff; nsect = 4; if (pubnamessize > 0) nsect++; if (pubtypessize > 0) nsect++; if (arangessize > 0) nsect++; if (gdbscriptsize > 0) nsect++; ms = newMachoSeg("__DWARF", nsect); ms->fileoffset = fakestart; ms->filesize = abbrevo-fakestart; ms->vaddr = ms->fileoffset + segdata.vaddr - segdata.fileoff; msect = newMachoSect(ms, "__debug_abbrev", "__DWARF"); msect->off = abbrevo; msect->size = abbrevsize; msect->addr = msect->off + segdata.vaddr - segdata.fileoff; ms->filesize += msect->size; msect = newMachoSect(ms, "__debug_line", "__DWARF"); msect->off = lineo; msect->size = linesize; msect->addr = msect->off + segdata.vaddr - segdata.fileoff; ms->filesize += msect->size; msect = newMachoSect(ms, "__debug_frame", "__DWARF"); msect->off = frameo; msect->size = framesize; msect->addr = msect->off + segdata.vaddr - segdata.fileoff; ms->filesize += msect->size; msect = newMachoSect(ms, "__debug_info", "__DWARF"); msect->off = infoo; msect->size = infosize; msect->addr = msect->off + segdata.vaddr - segdata.fileoff; ms->filesize += msect->size; if (pubnamessize > 0) { msect = newMachoSect(ms, "__debug_pubnames", "__DWARF"); msect->off = pubnameso; msect->size = pubnamessize; msect->addr = msect->off + segdata.vaddr - segdata.fileoff; ms->filesize += msect->size; } if (pubtypessize > 0) { msect = newMachoSect(ms, "__debug_pubtypes", "__DWARF"); msect->off = pubtypeso; msect->size = pubtypessize; msect->addr = msect->off + segdata.vaddr - segdata.fileoff; ms->filesize += msect->size; } if (arangessize > 0) { msect = newMachoSect(ms, "__debug_aranges", "__DWARF"); msect->off = arangeso; msect->size = arangessize; msect->addr = msect->off + segdata.vaddr - segdata.fileoff; ms->filesize += msect->size; } // TODO(lvd) fix gdb/python to load MachO (16 char section name limit) if (gdbscriptsize > 0) { msect = newMachoSect(ms, "__debug_gdb_scripts", "__DWARF"); msect->off = gdbscripto; msect->size = gdbscriptsize; msect->addr = msect->off + segdata.vaddr - segdata.fileoff; ms->filesize += msect->size; } } /* * Windows PE */ void dwarfaddpeheaders(void) { if(debug['w']) // disable dwarf return; newPEDWARFSection(".debug_abbrev", abbrevsize); newPEDWARFSection(".debug_line", linesize); newPEDWARFSection(".debug_frame", framesize); newPEDWARFSection(".debug_info", infosize); newPEDWARFSection(".debug_pubnames", pubnamessize); newPEDWARFSection(".debug_pubtypes", pubtypessize); newPEDWARFSection(".debug_aranges", arangessize); newPEDWARFSection(".debug_gdb_scripts", gdbscriptsize); } go/src/cmd/ld/dwarf.h0100644000000000000000000000120412412656734014676 0ustar00rootroot00000000000000// 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. /* * Emit debug_abbrevs, debug_info and debug_line sections to current * offset in cout. */ void dwarfemitdebugsections(void); /* * Add the dwarf section names to the ELF * s[ection]h[eader]str[ing]tab. Prerequisite for * dwarfaddelfheaders(). */ void dwarfaddshstrings(LSym *shstrtab); /* * Add section headers pointing to the sections emitted in * dwarfemitdebugsections. */ void dwarfaddelfheaders(void); void dwarfaddmachoheaders(void); void dwarfaddpeheaders(void); go/src/cmd/ld/dwarf_defs.h0100644000000000000000000003260312412656734015706 0ustar00rootroot00000000000000// 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. // Cut, pasted, tr-and-awk'ed from tables in // http://dwarfstd.org/doc/Dwarf3.pdf // Table 18 enum { DW_TAG_array_type = 0x01, DW_TAG_class_type = 0x02, DW_TAG_entry_point = 0x03, DW_TAG_enumeration_type = 0x04, DW_TAG_formal_parameter = 0x05, DW_TAG_imported_declaration = 0x08, DW_TAG_label = 0x0a, DW_TAG_lexical_block = 0x0b, DW_TAG_member = 0x0d, DW_TAG_pointer_type = 0x0f, DW_TAG_reference_type = 0x10, DW_TAG_compile_unit = 0x11, DW_TAG_string_type = 0x12, DW_TAG_structure_type = 0x13, DW_TAG_subroutine_type = 0x15, DW_TAG_typedef = 0x16, DW_TAG_union_type = 0x17, DW_TAG_unspecified_parameters = 0x18, DW_TAG_variant = 0x19, DW_TAG_common_block = 0x1a, DW_TAG_common_inclusion = 0x1b, DW_TAG_inheritance = 0x1c, DW_TAG_inlined_subroutine = 0x1d, DW_TAG_module = 0x1e, DW_TAG_ptr_to_member_type = 0x1f, DW_TAG_set_type = 0x20, DW_TAG_subrange_type = 0x21, DW_TAG_with_stmt = 0x22, DW_TAG_access_declaration = 0x23, DW_TAG_base_type = 0x24, DW_TAG_catch_block = 0x25, DW_TAG_const_type = 0x26, DW_TAG_constant = 0x27, DW_TAG_enumerator = 0x28, DW_TAG_file_type = 0x29, DW_TAG_friend = 0x2a, DW_TAG_namelist = 0x2b, DW_TAG_namelist_item = 0x2c, DW_TAG_packed_type = 0x2d, DW_TAG_subprogram = 0x2e, DW_TAG_template_type_parameter = 0x2f, DW_TAG_template_value_parameter = 0x30, DW_TAG_thrown_type = 0x31, DW_TAG_try_block = 0x32, DW_TAG_variant_part = 0x33, DW_TAG_variable = 0x34, DW_TAG_volatile_type = 0x35, // Dwarf3 DW_TAG_dwarf_procedure = 0x36, DW_TAG_restrict_type = 0x37, DW_TAG_interface_type = 0x38, DW_TAG_namespace = 0x39, DW_TAG_imported_module = 0x3a, DW_TAG_unspecified_type = 0x3b, DW_TAG_partial_unit = 0x3c, DW_TAG_imported_unit = 0x3d, DW_TAG_condition = 0x3f, DW_TAG_shared_type = 0x40, // Dwarf4 DW_TAG_type_unit = 0x41, DW_TAG_rvalue_reference_type = 0x42, DW_TAG_template_alias = 0x43, // User defined DW_TAG_lo_user = 0x4080, DW_TAG_hi_user = 0xffff, }; // Table 19 enum { DW_CHILDREN_no = 0x00, DW_CHILDREN_yes = 0x01, }; // Not from the spec, but logicaly belongs here enum { DW_CLS_ADDRESS = 0x01, DW_CLS_BLOCK, DW_CLS_CONSTANT, DW_CLS_FLAG, DW_CLS_PTR, // lineptr, loclistptr, macptr, rangelistptr DW_CLS_REFERENCE, DW_CLS_ADDRLOC, DW_CLS_STRING }; // Table 20 enum { DW_AT_sibling = 0x01, // reference DW_AT_location = 0x02, // block, loclistptr DW_AT_name = 0x03, // string DW_AT_ordering = 0x09, // constant DW_AT_byte_size = 0x0b, // block, constant, reference DW_AT_bit_offset = 0x0c, // block, constant, reference DW_AT_bit_size = 0x0d, // block, constant, reference DW_AT_stmt_list = 0x10, // lineptr DW_AT_low_pc = 0x11, // address DW_AT_high_pc = 0x12, // address DW_AT_language = 0x13, // constant DW_AT_discr = 0x15, // reference DW_AT_discr_value = 0x16, // constant DW_AT_visibility = 0x17, // constant DW_AT_import = 0x18, // reference DW_AT_string_length = 0x19, // block, loclistptr DW_AT_common_reference = 0x1a, // reference DW_AT_comp_dir = 0x1b, // string DW_AT_const_value = 0x1c, // block, constant, string DW_AT_containing_type = 0x1d, // reference DW_AT_default_value = 0x1e, // reference DW_AT_inline = 0x20, // constant DW_AT_is_optional = 0x21, // flag DW_AT_lower_bound = 0x22, // block, constant, reference DW_AT_producer = 0x25, // string DW_AT_prototyped = 0x27, // flag DW_AT_return_addr = 0x2a, // block, loclistptr DW_AT_start_scope = 0x2c, // constant DW_AT_bit_stride = 0x2e, // constant DW_AT_upper_bound = 0x2f, // block, constant, reference DW_AT_abstract_origin = 0x31, // reference DW_AT_accessibility = 0x32, // constant DW_AT_address_class = 0x33, // constant DW_AT_artificial = 0x34, // flag DW_AT_base_types = 0x35, // reference DW_AT_calling_convention = 0x36, // constant DW_AT_count = 0x37, // block, constant, reference DW_AT_data_member_location = 0x38, // block, constant, loclistptr DW_AT_decl_column = 0x39, // constant DW_AT_decl_file = 0x3a, // constant DW_AT_decl_line = 0x3b, // constant DW_AT_declaration = 0x3c, // flag DW_AT_discr_list = 0x3d, // block DW_AT_encoding = 0x3e, // constant DW_AT_external = 0x3f, // flag DW_AT_frame_base = 0x40, // block, loclistptr DW_AT_friend = 0x41, // reference DW_AT_identifier_case = 0x42, // constant DW_AT_macro_info = 0x43, // macptr DW_AT_namelist_item = 0x44, // block DW_AT_priority = 0x45, // reference DW_AT_segment = 0x46, // block, loclistptr DW_AT_specification = 0x47, // reference DW_AT_static_link = 0x48, // block, loclistptr DW_AT_type = 0x49, // reference DW_AT_use_location = 0x4a, // block, loclistptr DW_AT_variable_parameter = 0x4b, // flag DW_AT_virtuality = 0x4c, // constant DW_AT_vtable_elem_location = 0x4d, // block, loclistptr // Dwarf3 DW_AT_allocated = 0x4e, // block, constant, reference DW_AT_associated = 0x4f, // block, constant, reference DW_AT_data_location = 0x50, // block DW_AT_byte_stride = 0x51, // block, constant, reference DW_AT_entry_pc = 0x52, // address DW_AT_use_UTF8 = 0x53, // flag DW_AT_extension = 0x54, // reference DW_AT_ranges = 0x55, // rangelistptr DW_AT_trampoline = 0x56, // address, flag, reference, string DW_AT_call_column = 0x57, // constant DW_AT_call_file = 0x58, // constant DW_AT_call_line = 0x59, // constant DW_AT_description = 0x5a, // string DW_AT_binary_scale = 0x5b, // constant DW_AT_decimal_scale = 0x5c, // constant DW_AT_small = 0x5d, // reference DW_AT_decimal_sign = 0x5e, // constant DW_AT_digit_count = 0x5f, // constant DW_AT_picture_string = 0x60, // string DW_AT_mutable = 0x61, // flag DW_AT_threads_scaled = 0x62, // flag DW_AT_explicit = 0x63, // flag DW_AT_object_pointer = 0x64, // reference DW_AT_endianity = 0x65, // constant DW_AT_elemental = 0x66, // flag DW_AT_pure = 0x67, // flag DW_AT_recursive = 0x68, // flag DW_AT_lo_user = 0x2000, // --- DW_AT_hi_user = 0x3fff, // --- }; // Table 21 enum { DW_FORM_addr = 0x01, // address DW_FORM_block2 = 0x03, // block DW_FORM_block4 = 0x04, // block DW_FORM_data2 = 0x05, // constant DW_FORM_data4 = 0x06, // constant, lineptr, loclistptr, macptr, rangelistptr DW_FORM_data8 = 0x07, // constant, lineptr, loclistptr, macptr, rangelistptr DW_FORM_string = 0x08, // string DW_FORM_block = 0x09, // block DW_FORM_block1 = 0x0a, // block DW_FORM_data1 = 0x0b, // constant DW_FORM_flag = 0x0c, // flag DW_FORM_sdata = 0x0d, // constant DW_FORM_strp = 0x0e, // string DW_FORM_udata = 0x0f, // constant DW_FORM_ref_addr = 0x10, // reference DW_FORM_ref1 = 0x11, // reference DW_FORM_ref2 = 0x12, // reference DW_FORM_ref4 = 0x13, // reference DW_FORM_ref8 = 0x14, // reference DW_FORM_ref_udata = 0x15, // reference DW_FORM_indirect = 0x16, // (see Section 7.5.3) }; // Table 24 (#operands, notes) enum { DW_OP_addr = 0x03, // 1 constant address (size target specific) DW_OP_deref = 0x06, // 0 DW_OP_const1u = 0x08, // 1 1-byte constant DW_OP_const1s = 0x09, // 1 1-byte constant DW_OP_const2u = 0x0a, // 1 2-byte constant DW_OP_const2s = 0x0b, // 1 2-byte constant DW_OP_const4u = 0x0c, // 1 4-byte constant DW_OP_const4s = 0x0d, // 1 4-byte constant DW_OP_const8u = 0x0e, // 1 8-byte constant DW_OP_const8s = 0x0f, // 1 8-byte constant DW_OP_constu = 0x10, // 1 ULEB128 constant DW_OP_consts = 0x11, // 1 SLEB128 constant DW_OP_dup = 0x12, // 0 DW_OP_drop = 0x13, // 0 DW_OP_over = 0x14, // 0 DW_OP_pick = 0x15, // 1 1-byte stack index DW_OP_swap = 0x16, // 0 DW_OP_rot = 0x17, // 0 DW_OP_xderef = 0x18, // 0 DW_OP_abs = 0x19, // 0 DW_OP_and = 0x1a, // 0 DW_OP_div = 0x1b, // 0 DW_OP_minus = 0x1c, // 0 DW_OP_mod = 0x1d, // 0 DW_OP_mul = 0x1e, // 0 DW_OP_neg = 0x1f, // 0 DW_OP_not = 0x20, // 0 DW_OP_or = 0x21, // 0 DW_OP_plus = 0x22, // 0 DW_OP_plus_uconst = 0x23, // 1 ULEB128 addend DW_OP_shl = 0x24, // 0 DW_OP_shr = 0x25, // 0 DW_OP_shra = 0x26, // 0 DW_OP_xor = 0x27, // 0 DW_OP_skip = 0x2f, // 1 signed 2-byte constant DW_OP_bra = 0x28, // 1 signed 2-byte constant DW_OP_eq = 0x29, // 0 DW_OP_ge = 0x2a, // 0 DW_OP_gt = 0x2b, // 0 DW_OP_le = 0x2c, // 0 DW_OP_lt = 0x2d, // 0 DW_OP_ne = 0x2e, // 0 DW_OP_lit0 = 0x30, // 0 ... DW_OP_lit31 = 0x4f, // 0 literals 0..31 = (DW_OP_lit0 + // literal) DW_OP_reg0 = 0x50, // 0 .. DW_OP_reg31 = 0x6f, // 0 reg 0..31 = (DW_OP_reg0 + regnum) DW_OP_breg0 = 0x70, // 1 ... DW_OP_breg31 = 0x8f, // 1 SLEB128 offset base register 0..31 = (DW_OP_breg0 + regnum) DW_OP_regx = 0x90, // 1 ULEB128 register DW_OP_fbreg = 0x91, // 1 SLEB128 offset DW_OP_bregx = 0x92, // 2 ULEB128 register followed by SLEB128 offset DW_OP_piece = 0x93, // 1 ULEB128 size of piece addressed DW_OP_deref_size = 0x94, // 1 1-byte size of data retrieved DW_OP_xderef_size = 0x95, // 1 1-byte size of data retrieved DW_OP_nop = 0x96, // 0 DW_OP_push_object_address = 0x97, // 0 DW_OP_call2 = 0x98, // 1 2-byte offset of DIE DW_OP_call4 = 0x99, // 1 4-byte offset of DIE DW_OP_call_ref = 0x9a, // 1 4- or 8-byte offset of DIE DW_OP_form_tls_address = 0x9b, // 0 DW_OP_call_frame_cfa = 0x9c, // 0 DW_OP_bit_piece = 0x9d, // 2 DW_OP_lo_user = 0xe0, DW_OP_hi_user = 0xff, }; // Table 25 enum { DW_ATE_address = 0x01, DW_ATE_boolean = 0x02, DW_ATE_complex_float = 0x03, DW_ATE_float = 0x04, DW_ATE_signed = 0x05, DW_ATE_signed_char = 0x06, DW_ATE_unsigned = 0x07, DW_ATE_unsigned_char = 0x08, DW_ATE_imaginary_float = 0x09, DW_ATE_packed_decimal = 0x0a, DW_ATE_numeric_string = 0x0b, DW_ATE_edited = 0x0c, DW_ATE_signed_fixed = 0x0d, DW_ATE_unsigned_fixed = 0x0e, DW_ATE_decimal_float = 0x0f, DW_ATE_lo_user = 0x80, DW_ATE_hi_user = 0xff, }; // Table 26 enum { DW_DS_unsigned = 0x01, DW_DS_leading_overpunch = 0x02, DW_DS_trailing_overpunch = 0x03, DW_DS_leading_separate = 0x04, DW_DS_trailing_separate = 0x05, }; // Table 27 enum { DW_END_default = 0x00, DW_END_big = 0x01, DW_END_little = 0x02, DW_END_lo_user = 0x40, DW_END_hi_user = 0xff, }; // Table 28 enum { DW_ACCESS_public = 0x01, DW_ACCESS_protected = 0x02, DW_ACCESS_private = 0x03, }; // Table 29 enum { DW_VIS_local = 0x01, DW_VIS_exported = 0x02, DW_VIS_qualified = 0x03, }; // Table 30 enum { DW_VIRTUALITY_none = 0x00, DW_VIRTUALITY_virtual = 0x01, DW_VIRTUALITY_pure_virtual = 0x02, }; // Table 31 enum { DW_LANG_C89 = 0x0001, DW_LANG_C = 0x0002, DW_LANG_Ada83 = 0x0003, DW_LANG_C_plus_plus = 0x0004, DW_LANG_Cobol74 = 0x0005, DW_LANG_Cobol85 = 0x0006, DW_LANG_Fortran77 = 0x0007, DW_LANG_Fortran90 = 0x0008, DW_LANG_Pascal83 = 0x0009, DW_LANG_Modula2 = 0x000a, // Dwarf3 DW_LANG_Java = 0x000b, DW_LANG_C99 = 0x000c, DW_LANG_Ada95 = 0x000d, DW_LANG_Fortran95 = 0x000e, DW_LANG_PLI = 0x000f, DW_LANG_ObjC = 0x0010, DW_LANG_ObjC_plus_plus = 0x0011, DW_LANG_UPC = 0x0012, DW_LANG_D = 0x0013, // Dwarf4 DW_LANG_Python = 0x0014, // Dwarf5 DW_LANG_Go = 0x0016, DW_LANG_lo_user = 0x8000, DW_LANG_hi_user = 0xffff, }; // Table 32 enum { DW_ID_case_sensitive = 0x00, DW_ID_up_case = 0x01, DW_ID_down_case = 0x02, DW_ID_case_insensitive = 0x03, }; // Table 33 enum { DW_CC_normal = 0x01, DW_CC_program = 0x02, DW_CC_nocall = 0x03, DW_CC_lo_user = 0x40, DW_CC_hi_user = 0xff, }; // Table 34 enum { DW_INL_not_inlined = 0x00, DW_INL_inlined = 0x01, DW_INL_declared_not_inlined = 0x02, DW_INL_declared_inlined = 0x03, }; // Table 35 enum { DW_ORD_row_major = 0x00, DW_ORD_col_major = 0x01, }; // Table 36 enum { DW_DSC_label = 0x00, DW_DSC_range = 0x01, }; // Table 37 enum { DW_LNS_copy = 0x01, DW_LNS_advance_pc = 0x02, DW_LNS_advance_line = 0x03, DW_LNS_set_file = 0x04, DW_LNS_set_column = 0x05, DW_LNS_negate_stmt = 0x06, DW_LNS_set_basic_block = 0x07, DW_LNS_const_add_pc = 0x08, DW_LNS_fixed_advance_pc = 0x09, // Dwarf3 DW_LNS_set_prologue_end = 0x0a, DW_LNS_set_epilogue_begin = 0x0b, DW_LNS_set_isa = 0x0c, }; // Table 38 enum { DW_LNE_end_sequence = 0x01, DW_LNE_set_address = 0x02, DW_LNE_define_file = 0x03, DW_LNE_lo_user = 0x80, DW_LNE_hi_user = 0xff, }; // Table 39 enum { DW_MACINFO_define = 0x01, DW_MACINFO_undef = 0x02, DW_MACINFO_start_file = 0x03, DW_MACINFO_end_file = 0x04, DW_MACINFO_vendor_ext = 0xff, }; // Table 40. enum { // operand,... DW_CFA_nop = 0x00, DW_CFA_set_loc = 0x01, // address DW_CFA_advance_loc1 = 0x02, // 1-byte delta DW_CFA_advance_loc2 = 0x03, // 2-byte delta DW_CFA_advance_loc4 = 0x04, // 4-byte delta DW_CFA_offset_extended = 0x05, // ULEB128 register, ULEB128 offset DW_CFA_restore_extended = 0x06, // ULEB128 register DW_CFA_undefined = 0x07, // ULEB128 register DW_CFA_same_value = 0x08, // ULEB128 register DW_CFA_register = 0x09, // ULEB128 register, ULEB128 register DW_CFA_remember_state = 0x0a, DW_CFA_restore_state = 0x0b, DW_CFA_def_cfa = 0x0c, // ULEB128 register, ULEB128 offset DW_CFA_def_cfa_register = 0x0d, // ULEB128 register DW_CFA_def_cfa_offset = 0x0e, // ULEB128 offset DW_CFA_def_cfa_expression = 0x0f, // BLOCK DW_CFA_expression = 0x10, // ULEB128 register, BLOCK DW_CFA_offset_extended_sf = 0x11, // ULEB128 register, SLEB128 offset DW_CFA_def_cfa_sf = 0x12, // ULEB128 register, SLEB128 offset DW_CFA_def_cfa_offset_sf = 0x13, // SLEB128 offset DW_CFA_val_offset = 0x14, // ULEB128, ULEB128 DW_CFA_val_offset_sf = 0x15, // ULEB128, SLEB128 DW_CFA_val_expression = 0x16, // ULEB128, BLOCK DW_CFA_lo_user = 0x1c, DW_CFA_hi_user = 0x3f, // Opcodes that take an addend operand. DW_CFA_advance_loc = 0x1<<6, // +delta DW_CFA_offset = 0x2<<6, // +register (ULEB128 offset) DW_CFA_restore = 0x3<<6, // +register }; go/src/cmd/ld/elf.c0100644000000000000000000010050612412656737014344 0ustar00rootroot00000000000000// Copyright 2009 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. #include "l.h" #include "lib.h" #include "../ld/elf.h" /* * We use the 64-bit data structures on both 32- and 64-bit machines * in order to write the code just once. The 64-bit data structure is * written in the 32-bit format on the 32-bit machines. */ #define NSECT 48 int iself; static int elf64; static ElfEhdr hdr; static ElfPhdr *phdr[NSECT]; static ElfShdr *shdr[NSECT]; static char *interp; typedef struct Elfstring Elfstring; struct Elfstring { char *s; int off; }; static Elfstring elfstr[100]; static int nelfstr; static char buildinfo[32]; /* Initialize the global variable that describes the ELF header. It will be updated as we write section and prog headers. */ void elfinit(void) { iself = 1; switch(thechar) { // 64-bit architectures case '6': elf64 = 1; hdr.phoff = ELF64HDRSIZE; /* Must be be ELF64HDRSIZE: first PHdr must follow ELF header */ hdr.shoff = ELF64HDRSIZE; /* Will move as we add PHeaders */ hdr.ehsize = ELF64HDRSIZE; /* Must be ELF64HDRSIZE */ hdr.phentsize = ELF64PHDRSIZE; /* Must be ELF64PHDRSIZE */ hdr.shentsize = ELF64SHDRSIZE; /* Must be ELF64SHDRSIZE */ break; // 32-bit architectures case '5': // we use EABI on both linux/arm and freebsd/arm. if(HEADTYPE == Hlinux || HEADTYPE == Hfreebsd) hdr.flags = 0x5000002; // has entry point, Version5 EABI // fallthrough default: hdr.phoff = ELF32HDRSIZE; /* Must be be ELF32HDRSIZE: first PHdr must follow ELF header */ hdr.shoff = ELF32HDRSIZE; /* Will move as we add PHeaders */ hdr.ehsize = ELF32HDRSIZE; /* Must be ELF32HDRSIZE */ hdr.phentsize = ELF32PHDRSIZE; /* Must be ELF32PHDRSIZE */ hdr.shentsize = ELF32SHDRSIZE; /* Must be ELF32SHDRSIZE */ } } void elf64phdr(ElfPhdr *e) { LPUT(e->type); LPUT(e->flags); VPUT(e->off); VPUT(e->vaddr); VPUT(e->paddr); VPUT(e->filesz); VPUT(e->memsz); VPUT(e->align); } void elf32phdr(ElfPhdr *e) { int frag; if(e->type == PT_LOAD) { // Correct ELF loaders will do this implicitly, // but buggy ELF loaders like the one in some // versions of QEMU won't. frag = e->vaddr&(e->align-1); e->off -= frag; e->vaddr -= frag; e->paddr -= frag; e->filesz += frag; e->memsz += frag; } LPUT(e->type); LPUT(e->off); LPUT(e->vaddr); LPUT(e->paddr); LPUT(e->filesz); LPUT(e->memsz); LPUT(e->flags); LPUT(e->align); } void elf64shdr(ElfShdr *e) { LPUT(e->name); LPUT(e->type); VPUT(e->flags); VPUT(e->addr); VPUT(e->off); VPUT(e->size); LPUT(e->link); LPUT(e->info); VPUT(e->addralign); VPUT(e->entsize); } void elf32shdr(ElfShdr *e) { LPUT(e->name); LPUT(e->type); LPUT(e->flags); LPUT(e->addr); LPUT(e->off); LPUT(e->size); LPUT(e->link); LPUT(e->info); LPUT(e->addralign); LPUT(e->entsize); } uint32 elfwriteshdrs(void) { int i; if (elf64) { for (i = 0; i < hdr.shnum; i++) elf64shdr(shdr[i]); return hdr.shnum * ELF64SHDRSIZE; } for (i = 0; i < hdr.shnum; i++) elf32shdr(shdr[i]); return hdr.shnum * ELF32SHDRSIZE; } void elfsetstring(char *s, int off) { if(nelfstr >= nelem(elfstr)) { diag("too many elf strings"); errorexit(); } elfstr[nelfstr].s = s; elfstr[nelfstr].off = off; nelfstr++; } uint32 elfwritephdrs(void) { int i; if (elf64) { for (i = 0; i < hdr.phnum; i++) elf64phdr(phdr[i]); return hdr.phnum * ELF64PHDRSIZE; } for (i = 0; i < hdr.phnum; i++) elf32phdr(phdr[i]); return hdr.phnum * ELF32PHDRSIZE; } ElfPhdr* newElfPhdr(void) { ElfPhdr *e; e = mal(sizeof *e); if (hdr.phnum >= NSECT) diag("too many phdrs"); else phdr[hdr.phnum++] = e; if (elf64) hdr.shoff += ELF64PHDRSIZE; else hdr.shoff += ELF32PHDRSIZE; return e; } ElfShdr* newElfShdr(vlong name) { ElfShdr *e; e = mal(sizeof *e); e->name = name; e->shnum = hdr.shnum; if (hdr.shnum >= NSECT) { diag("too many shdrs"); } else { shdr[hdr.shnum++] = e; } return e; } ElfEhdr* getElfEhdr(void) { return &hdr; } uint32 elf64writehdr(void) { int i; for (i = 0; i < EI_NIDENT; i++) cput(hdr.ident[i]); WPUT(hdr.type); WPUT(hdr.machine); LPUT(hdr.version); VPUT(hdr.entry); VPUT(hdr.phoff); VPUT(hdr.shoff); LPUT(hdr.flags); WPUT(hdr.ehsize); WPUT(hdr.phentsize); WPUT(hdr.phnum); WPUT(hdr.shentsize); WPUT(hdr.shnum); WPUT(hdr.shstrndx); return ELF64HDRSIZE; } uint32 elf32writehdr(void) { int i; for (i = 0; i < EI_NIDENT; i++) cput(hdr.ident[i]); WPUT(hdr.type); WPUT(hdr.machine); LPUT(hdr.version); LPUT(hdr.entry); LPUT(hdr.phoff); LPUT(hdr.shoff); LPUT(hdr.flags); WPUT(hdr.ehsize); WPUT(hdr.phentsize); WPUT(hdr.phnum); WPUT(hdr.shentsize); WPUT(hdr.shnum); WPUT(hdr.shstrndx); return ELF32HDRSIZE; } uint32 elfwritehdr(void) { if(elf64) return elf64writehdr(); return elf32writehdr(); } /* Taken directly from the definition document for ELF64 */ uint32 elfhash(uchar *name) { uint32 h = 0, g; while (*name) { h = (h << 4) + *name++; if (g = h & 0xf0000000) h ^= g >> 24; h &= 0x0fffffff; } return h; } void elfwritedynent(LSym *s, int tag, uint64 val) { if(elf64) { adduint64(ctxt, s, tag); adduint64(ctxt, s, val); } else { adduint32(ctxt, s, tag); adduint32(ctxt, s, val); } } void elfwritedynentsym(LSym *s, int tag, LSym *t) { if(elf64) adduint64(ctxt, s, tag); else adduint32(ctxt, s, tag); addaddr(ctxt, s, t); } void elfwritedynentsymsize(LSym *s, int tag, LSym *t) { if(elf64) adduint64(ctxt, s, tag); else adduint32(ctxt, s, tag); addsize(ctxt, s, t); } int elfinterp(ElfShdr *sh, uint64 startva, uint64 resoff, char *p) { int n; interp = p; n = strlen(interp)+1; sh->addr = startva + resoff - n; sh->off = resoff - n; sh->size = n; return n; } int elfwriteinterp(void) { ElfShdr *sh; sh = elfshname(".interp"); cseek(sh->off); cwrite(interp, sh->size); return sh->size; } int elfnote(ElfShdr *sh, uint64 startva, uint64 resoff, int sz) { uint64 n; n = sizeof(Elf_Note) + sz + resoff % 4; sh->type = SHT_NOTE; sh->flags = SHF_ALLOC; sh->addralign = 4; sh->addr = startva + resoff - n; sh->off = resoff - n; sh->size = n - resoff % 4; return n; } ElfShdr * elfwritenotehdr(char *str, uint32 namesz, uint32 descsz, uint32 tag) { ElfShdr *sh; sh = elfshname(str); // Write Elf_Note header. cseek(sh->off); LPUT(namesz); LPUT(descsz); LPUT(tag); return sh; } // NetBSD Signature (as per sys/exec_elf.h) #define ELF_NOTE_NETBSD_NAMESZ 7 #define ELF_NOTE_NETBSD_DESCSZ 4 #define ELF_NOTE_NETBSD_TAG 1 #define ELF_NOTE_NETBSD_NAME "NetBSD\0\0" #define ELF_NOTE_NETBSD_VERSION 599000000 /* NetBSD 5.99 */ int elfnetbsdsig(ElfShdr *sh, uint64 startva, uint64 resoff) { int n; n = rnd(ELF_NOTE_NETBSD_NAMESZ, 4) + rnd(ELF_NOTE_NETBSD_DESCSZ, 4); return elfnote(sh, startva, resoff, n); } int elfwritenetbsdsig(void) { ElfShdr *sh; // Write Elf_Note header. sh = elfwritenotehdr(".note.netbsd.ident", ELF_NOTE_NETBSD_NAMESZ, ELF_NOTE_NETBSD_DESCSZ, ELF_NOTE_NETBSD_TAG); if(sh == nil) return 0; // Followed by NetBSD string and version. cwrite(ELF_NOTE_NETBSD_NAME, ELF_NOTE_NETBSD_NAMESZ + 1); LPUT(ELF_NOTE_NETBSD_VERSION); return sh->size; } // OpenBSD Signature #define ELF_NOTE_OPENBSD_NAMESZ 8 #define ELF_NOTE_OPENBSD_DESCSZ 4 #define ELF_NOTE_OPENBSD_TAG 1 #define ELF_NOTE_OPENBSD_NAME "OpenBSD\0" #define ELF_NOTE_OPENBSD_VERSION 0 int elfopenbsdsig(ElfShdr *sh, uint64 startva, uint64 resoff) { int n; n = ELF_NOTE_OPENBSD_NAMESZ + ELF_NOTE_OPENBSD_DESCSZ; return elfnote(sh, startva, resoff, n); } int elfwriteopenbsdsig(void) { ElfShdr *sh; // Write Elf_Note header. sh = elfwritenotehdr(".note.openbsd.ident", ELF_NOTE_OPENBSD_NAMESZ, ELF_NOTE_OPENBSD_DESCSZ, ELF_NOTE_OPENBSD_TAG); if(sh == nil) return 0; // Followed by OpenBSD string and version. cwrite(ELF_NOTE_OPENBSD_NAME, ELF_NOTE_OPENBSD_NAMESZ); LPUT(ELF_NOTE_OPENBSD_VERSION); return sh->size; } void addbuildinfo(char *val) { char *ov; int i, b, j; if(val[0] != '0' || val[1] != 'x') { fprint(2, "%s: -B argument must start with 0x: %s\n", argv0, val); exits("usage"); } ov = val; val += 2; i = 0; while(*val != '\0') { if(val[1] == '\0') { fprint(2, "%s: -B argument must have even number of digits: %s\n", argv0, ov); exits("usage"); } b = 0; for(j = 0; j < 2; j++, val++) { b *= 16; if(*val >= '0' && *val <= '9') b += *val - '0'; else if(*val >= 'a' && *val <= 'f') b += *val - 'a' + 10; else if(*val >= 'A' && *val <= 'F') b += *val - 'A' + 10; else { fprint(2, "%s: -B argument contains invalid hex digit %c: %s\n", argv0, *val, ov); exits("usage"); } } if(i >= nelem(buildinfo)) { fprint(2, "%s: -B option too long (max %d digits): %s\n", argv0, (int)nelem(buildinfo), ov); exits("usage"); } buildinfo[i++] = b; } buildinfolen = i; } // Build info note #define ELF_NOTE_BUILDINFO_NAMESZ 4 #define ELF_NOTE_BUILDINFO_TAG 3 #define ELF_NOTE_BUILDINFO_NAME "GNU\0" int elfbuildinfo(ElfShdr *sh, uint64 startva, uint64 resoff) { int n; n = ELF_NOTE_BUILDINFO_NAMESZ + rnd(buildinfolen, 4); return elfnote(sh, startva, resoff, n); } int elfwritebuildinfo(void) { ElfShdr *sh; sh = elfwritenotehdr(".note.gnu.build-id", ELF_NOTE_BUILDINFO_NAMESZ, buildinfolen, ELF_NOTE_BUILDINFO_TAG); if(sh == nil) return 0; cwrite(ELF_NOTE_BUILDINFO_NAME, ELF_NOTE_BUILDINFO_NAMESZ); cwrite(buildinfo, buildinfolen); cwrite("\0\0\0", rnd(buildinfolen, 4) - buildinfolen); return sh->size; } extern int nelfsym; int elfverneed; typedef struct Elfaux Elfaux; typedef struct Elflib Elflib; struct Elflib { Elflib *next; Elfaux *aux; char *file; }; struct Elfaux { Elfaux *next; int num; char *vers; }; Elfaux* addelflib(Elflib **list, char *file, char *vers) { Elflib *lib; Elfaux *aux; for(lib=*list; lib; lib=lib->next) if(strcmp(lib->file, file) == 0) goto havelib; lib = mal(sizeof *lib); lib->next = *list; lib->file = file; *list = lib; havelib: for(aux=lib->aux; aux; aux=aux->next) if(strcmp(aux->vers, vers) == 0) goto haveaux; aux = mal(sizeof *aux); aux->next = lib->aux; aux->vers = vers; lib->aux = aux; haveaux: return aux; } void elfdynhash(void) { LSym *s, *sy, *dynstr; int i, j, nbucket, b, nfile; uint32 hc, *chain, *buckets; int nsym; char *name; Elfaux **need; Elflib *needlib; Elflib *l; Elfaux *x; if(!iself) return; nsym = nelfsym; s = linklookup(ctxt, ".hash", 0); s->type = SELFROSECT; s->reachable = 1; i = nsym; nbucket = 1; while(i > 0) { ++nbucket; i >>= 1; } needlib = nil; need = malloc(nsym * sizeof need[0]); chain = malloc(nsym * sizeof chain[0]); buckets = malloc(nbucket * sizeof buckets[0]); if(need == nil || chain == nil || buckets == nil) { ctxt->cursym = nil; diag("out of memory"); errorexit(); } memset(need, 0, nsym * sizeof need[0]); memset(chain, 0, nsym * sizeof chain[0]); memset(buckets, 0, nbucket * sizeof buckets[0]); for(sy=ctxt->allsym; sy!=S; sy=sy->allsym) { if (sy->dynid <= 0) continue; if(sy->dynimpvers) need[sy->dynid] = addelflib(&needlib, sy->dynimplib, sy->dynimpvers); name = sy->extname; hc = elfhash((uchar*)name); b = hc % nbucket; chain[sy->dynid] = buckets[b]; buckets[b] = sy->dynid; } adduint32(ctxt, s, nbucket); adduint32(ctxt, s, nsym); for(i = 0; inext) { nfile++; // header adduint16(ctxt, s, 1); // table version j = 0; for(x=l->aux; x; x=x->next) j++; adduint16(ctxt, s, j); // aux count adduint32(ctxt, s, addstring(dynstr, l->file)); // file string offset adduint32(ctxt, s, 16); // offset from header to first aux if(l->next) adduint32(ctxt, s, 16+j*16); // offset from this header to next else adduint32(ctxt, s, 0); for(x=l->aux; x; x=x->next) { x->num = i++; // aux struct adduint32(ctxt, s, elfhash((uchar*)x->vers)); // hash adduint16(ctxt, s, 0); // flags adduint16(ctxt, s, x->num); // other - index we refer to this by adduint32(ctxt, s, addstring(dynstr, x->vers)); // version string offset if(x->next) adduint32(ctxt, s, 16); // offset from this aux to next else adduint32(ctxt, s, 0); } } // version references s = linklookup(ctxt, ".gnu.version", 0); for(i=0; inum); } free(need); s = linklookup(ctxt, ".dynamic", 0); elfverneed = nfile; if(elfverneed) { elfwritedynentsym(s, DT_VERNEED, linklookup(ctxt, ".gnu.version_r", 0)); elfwritedynent(s, DT_VERNEEDNUM, nfile); elfwritedynentsym(s, DT_VERSYM, linklookup(ctxt, ".gnu.version", 0)); } if(thechar == '6') { sy = linklookup(ctxt, ".rela.plt", 0); if(sy->size > 0) { elfwritedynent(s, DT_PLTREL, DT_RELA); elfwritedynentsymsize(s, DT_PLTRELSZ, sy); elfwritedynentsym(s, DT_JMPREL, sy); } } else { sy = linklookup(ctxt, ".rel.plt", 0); if(sy->size > 0) { elfwritedynent(s, DT_PLTREL, DT_REL); elfwritedynentsymsize(s, DT_PLTRELSZ, sy); elfwritedynentsym(s, DT_JMPREL, sy); } } elfwritedynent(s, DT_NULL, 0); } ElfPhdr* elfphload(Segment *seg) { ElfPhdr *ph; ph = newElfPhdr(); ph->type = PT_LOAD; if(seg->rwx & 4) ph->flags |= PF_R; if(seg->rwx & 2) ph->flags |= PF_W; if(seg->rwx & 1) ph->flags |= PF_X; ph->vaddr = seg->vaddr; ph->paddr = seg->vaddr; ph->memsz = seg->len; ph->off = seg->fileoff; ph->filesz = seg->filelen; ph->align = INITRND; return ph; } ElfShdr* elfshname(char *name) { int i, off; ElfShdr *sh; for(i=0; iname == off) return sh; } sh = newElfShdr(off); return sh; } ElfShdr* elfshalloc(Section *sect) { ElfShdr *sh; sh = elfshname(sect->name); sect->elfsect = sh; return sh; } ElfShdr* elfshbits(Section *sect) { ElfShdr *sh; sh = elfshalloc(sect); if(sh->type > 0) return sh; if(sect->vaddr < sect->seg->vaddr + sect->seg->filelen) sh->type = SHT_PROGBITS; else sh->type = SHT_NOBITS; sh->flags = SHF_ALLOC; if(sect->rwx & 1) sh->flags |= SHF_EXECINSTR; if(sect->rwx & 2) sh->flags |= SHF_WRITE; if(strcmp(sect->name, ".tbss") == 0) { sh->flags |= SHF_TLS; sh->type = SHT_NOBITS; } if(linkmode != LinkExternal) sh->addr = sect->vaddr; sh->addralign = sect->align; sh->size = sect->len; sh->off = sect->seg->fileoff + sect->vaddr - sect->seg->vaddr; return sh; } ElfShdr* elfshreloc(Section *sect) { int typ; ElfShdr *sh; char *prefix; char buf[100]; // If main section is SHT_NOBITS, nothing to relocate. // Also nothing to relocate in .shstrtab. if(sect->vaddr >= sect->seg->vaddr + sect->seg->filelen) return nil; if(strcmp(sect->name, ".shstrtab") == 0 || strcmp(sect->name, ".tbss") == 0) return nil; if(thechar == '6') { prefix = ".rela"; typ = SHT_RELA; } else { prefix = ".rel"; typ = SHT_REL; } snprint(buf, sizeof buf, "%s%s", prefix, sect->name); sh = elfshname(buf); sh->type = typ; sh->entsize = RegSize*(2+(typ==SHT_RELA)); sh->link = elfshname(".symtab")->shnum; sh->info = sect->elfsect->shnum; sh->off = sect->reloff; sh->size = sect->rellen; sh->addralign = RegSize; return sh; } void elfrelocsect(Section *sect, LSym *first) { LSym *sym; int32 eaddr; Reloc *r; // If main section is SHT_NOBITS, nothing to relocate. // Also nothing to relocate in .shstrtab. if(sect->vaddr >= sect->seg->vaddr + sect->seg->filelen) return; if(strcmp(sect->name, ".shstrtab") == 0) return; sect->reloff = cpos(); for(sym = first; sym != nil; sym = sym->next) { if(!sym->reachable) continue; if(sym->value >= sect->vaddr) break; } eaddr = sect->vaddr + sect->len; for(; sym != nil; sym = sym->next) { if(!sym->reachable) continue; if(sym->value >= eaddr) break; ctxt->cursym = sym; for(r = sym->r; r < sym->r+sym->nr; r++) { if(r->done) continue; if(r->xsym == nil) { diag("missing xsym in relocation"); continue; } if(r->xsym->elfsym == 0) diag("reloc %d to non-elf symbol %s (outer=%s) %d", r->type, r->sym->name, r->xsym->name, r->sym->type); if(elfreloc1(r, sym->value+r->off - sect->vaddr) < 0) diag("unsupported obj reloc %d/%d to %s", r->type, r->siz, r->sym->name); } } sect->rellen = cpos() - sect->reloff; } void elfemitreloc(void) { Section *sect; while(cpos()&7) cput(0); elfrelocsect(segtext.sect, ctxt->textp); for(sect=segtext.sect->next; sect!=nil; sect=sect->next) elfrelocsect(sect, datap); for(sect=segrodata.sect; sect!=nil; sect=sect->next) elfrelocsect(sect, datap); for(sect=segdata.sect; sect!=nil; sect=sect->next) elfrelocsect(sect, datap); } void doelf(void) { LSym *s, *shstrtab, *dynstr; if(!iself) return; /* predefine strings we need for section headers */ shstrtab = linklookup(ctxt, ".shstrtab", 0); shstrtab->type = SELFROSECT; shstrtab->reachable = 1; addstring(shstrtab, ""); addstring(shstrtab, ".text"); addstring(shstrtab, ".noptrdata"); addstring(shstrtab, ".data"); addstring(shstrtab, ".bss"); addstring(shstrtab, ".noptrbss"); // generate .tbss section (except for OpenBSD where it's not supported) // for dynamic internal linker or external linking, so that various // binutils could correctly calculate PT_TLS size. // see http://golang.org/issue/5200. if(HEADTYPE != Hopenbsd) if(!debug['d'] || linkmode == LinkExternal) addstring(shstrtab, ".tbss"); if(HEADTYPE == Hnetbsd) addstring(shstrtab, ".note.netbsd.ident"); if(HEADTYPE == Hopenbsd) addstring(shstrtab, ".note.openbsd.ident"); if(buildinfolen > 0) addstring(shstrtab, ".note.gnu.build-id"); addstring(shstrtab, ".elfdata"); addstring(shstrtab, ".rodata"); addstring(shstrtab, ".typelink"); addstring(shstrtab, ".gosymtab"); addstring(shstrtab, ".gopclntab"); if(linkmode == LinkExternal) { debug_s = debug['s']; debug['s'] = 0; debug['d'] = 1; if(thechar == '6') { addstring(shstrtab, ".rela.text"); addstring(shstrtab, ".rela.rodata"); addstring(shstrtab, ".rela.typelink"); addstring(shstrtab, ".rela.gosymtab"); addstring(shstrtab, ".rela.gopclntab"); addstring(shstrtab, ".rela.noptrdata"); addstring(shstrtab, ".rela.data"); } else { addstring(shstrtab, ".rel.text"); addstring(shstrtab, ".rel.rodata"); addstring(shstrtab, ".rel.typelink"); addstring(shstrtab, ".rel.gosymtab"); addstring(shstrtab, ".rel.gopclntab"); addstring(shstrtab, ".rel.noptrdata"); addstring(shstrtab, ".rel.data"); } // add a .note.GNU-stack section to mark the stack as non-executable addstring(shstrtab, ".note.GNU-stack"); } if(flag_shared) { addstring(shstrtab, ".init_array"); if(thechar == '6') addstring(shstrtab, ".rela.init_array"); else addstring(shstrtab, ".rel.init_array"); } if(!debug['s']) { addstring(shstrtab, ".symtab"); addstring(shstrtab, ".strtab"); dwarfaddshstrings(shstrtab); } addstring(shstrtab, ".shstrtab"); if(!debug['d']) { /* -d suppresses dynamic loader format */ addstring(shstrtab, ".interp"); addstring(shstrtab, ".hash"); addstring(shstrtab, ".got"); addstring(shstrtab, ".got.plt"); addstring(shstrtab, ".dynamic"); addstring(shstrtab, ".dynsym"); addstring(shstrtab, ".dynstr"); if(thechar == '6') { addstring(shstrtab, ".rela"); addstring(shstrtab, ".rela.plt"); } else { addstring(shstrtab, ".rel"); addstring(shstrtab, ".rel.plt"); } addstring(shstrtab, ".plt"); addstring(shstrtab, ".gnu.version"); addstring(shstrtab, ".gnu.version_r"); /* dynamic symbol table - first entry all zeros */ s = linklookup(ctxt, ".dynsym", 0); s->type = SELFROSECT; s->reachable = 1; if(thechar == '6') s->size += ELF64SYMSIZE; else s->size += ELF32SYMSIZE; /* dynamic string table */ s = linklookup(ctxt, ".dynstr", 0); s->type = SELFROSECT; s->reachable = 1; if(s->size == 0) addstring(s, ""); dynstr = s; /* relocation table */ if(thechar == '6') s = linklookup(ctxt, ".rela", 0); else s = linklookup(ctxt, ".rel", 0); s->reachable = 1; s->type = SELFROSECT; /* global offset table */ s = linklookup(ctxt, ".got", 0); s->reachable = 1; s->type = SELFSECT; // writable /* hash */ s = linklookup(ctxt, ".hash", 0); s->reachable = 1; s->type = SELFROSECT; s = linklookup(ctxt, ".got.plt", 0); s->reachable = 1; s->type = SELFSECT; // writable s = linklookup(ctxt, ".plt", 0); s->reachable = 1; s->type = SELFRXSECT; elfsetupplt(); if(thechar == '6') s = linklookup(ctxt, ".rela.plt", 0); else s = linklookup(ctxt, ".rel.plt", 0); s->reachable = 1; s->type = SELFROSECT; s = linklookup(ctxt, ".gnu.version", 0); s->reachable = 1; s->type = SELFROSECT; s = linklookup(ctxt, ".gnu.version_r", 0); s->reachable = 1; s->type = SELFROSECT; /* define dynamic elf table */ s = linklookup(ctxt, ".dynamic", 0); s->reachable = 1; s->type = SELFSECT; // writable /* * .dynamic table */ elfwritedynentsym(s, DT_HASH, linklookup(ctxt, ".hash", 0)); elfwritedynentsym(s, DT_SYMTAB, linklookup(ctxt, ".dynsym", 0)); if(thechar == '6') elfwritedynent(s, DT_SYMENT, ELF64SYMSIZE); else elfwritedynent(s, DT_SYMENT, ELF32SYMSIZE); elfwritedynentsym(s, DT_STRTAB, linklookup(ctxt, ".dynstr", 0)); elfwritedynentsymsize(s, DT_STRSZ, linklookup(ctxt, ".dynstr", 0)); if(thechar == '6') { elfwritedynentsym(s, DT_RELA, linklookup(ctxt, ".rela", 0)); elfwritedynentsymsize(s, DT_RELASZ, linklookup(ctxt, ".rela", 0)); elfwritedynent(s, DT_RELAENT, ELF64RELASIZE); } else { elfwritedynentsym(s, DT_REL, linklookup(ctxt, ".rel", 0)); elfwritedynentsymsize(s, DT_RELSZ, linklookup(ctxt, ".rel", 0)); elfwritedynent(s, DT_RELENT, ELF32RELSIZE); } if(rpath) elfwritedynent(s, DT_RUNPATH, addstring(dynstr, rpath)); elfwritedynentsym(s, DT_PLTGOT, linklookup(ctxt, ".got.plt", 0)); // Solaris dynamic linker can't handle an empty .rela.plt if // DT_JMPREL is emitted so we have to defer generation of DT_PLTREL, // DT_PLTRELSZ, and DT_JMPREL dynamic entries until after we know the // size of .rel(a).plt section. elfwritedynent(s, DT_DEBUG, 0); // Do not write DT_NULL. elfdynhash will finish it. } } void shsym(ElfShdr *sh, LSym *s) { vlong addr; addr = symaddr(s); if(sh->flags&SHF_ALLOC) sh->addr = addr; sh->off = datoff(addr); sh->size = s->size; } void phsh(ElfPhdr *ph, ElfShdr *sh) { ph->vaddr = sh->addr; ph->paddr = ph->vaddr; ph->off = sh->off; ph->filesz = sh->size; ph->memsz = sh->size; ph->align = sh->addralign; } void asmbelfsetup(void) { Section *sect; /* This null SHdr must appear before all others */ elfshname(""); for(sect=segtext.sect; sect!=nil; sect=sect->next) elfshalloc(sect); for(sect=segrodata.sect; sect!=nil; sect=sect->next) elfshalloc(sect); for(sect=segdata.sect; sect!=nil; sect=sect->next) elfshalloc(sect); } void asmbelf(vlong symo) { vlong a, o; vlong startva, resoff; ElfEhdr *eh; ElfPhdr *ph, *pph, *pnote; ElfShdr *sh; Section *sect; eh = getElfEhdr(); switch(thechar) { default: diag("unknown architecture in asmbelf"); errorexit(); case '5': eh->machine = EM_ARM; break; case '6': eh->machine = EM_X86_64; break; case '8': eh->machine = EM_386; break; } startva = INITTEXT - HEADR; resoff = ELFRESERVE; pph = nil; if(linkmode == LinkExternal) { /* skip program headers */ eh->phoff = 0; eh->phentsize = 0; goto elfobj; } /* program header info */ pph = newElfPhdr(); pph->type = PT_PHDR; pph->flags = PF_R; pph->off = eh->ehsize; pph->vaddr = INITTEXT - HEADR + pph->off; pph->paddr = INITTEXT - HEADR + pph->off; pph->align = INITRND; /* * PHDR must be in a loaded segment. Adjust the text * segment boundaries downwards to include it. * Except on NaCl where it must not be loaded. */ if(HEADTYPE != Hnacl) { o = segtext.vaddr - pph->vaddr; segtext.vaddr -= o; segtext.len += o; o = segtext.fileoff - pph->off; segtext.fileoff -= o; segtext.filelen += o; } if(!debug['d']) { /* interpreter */ sh = elfshname(".interp"); sh->type = SHT_PROGBITS; sh->flags = SHF_ALLOC; sh->addralign = 1; if(interpreter == nil) { switch(HEADTYPE) { case Hlinux: interpreter = linuxdynld; break; case Hfreebsd: interpreter = freebsddynld; break; case Hnetbsd: interpreter = netbsddynld; break; case Hopenbsd: interpreter = openbsddynld; break; case Hdragonfly: interpreter = dragonflydynld; break; case Hsolaris: interpreter = solarisdynld; break; } } resoff -= elfinterp(sh, startva, resoff, interpreter); ph = newElfPhdr(); ph->type = PT_INTERP; ph->flags = PF_R; phsh(ph, sh); } pnote = nil; if(HEADTYPE == Hnetbsd || HEADTYPE == Hopenbsd) { sh = nil; switch(HEADTYPE) { case Hnetbsd: sh = elfshname(".note.netbsd.ident"); resoff -= elfnetbsdsig(sh, startva, resoff); break; case Hopenbsd: sh = elfshname(".note.openbsd.ident"); resoff -= elfopenbsdsig(sh, startva, resoff); break; } pnote = newElfPhdr(); pnote->type = PT_NOTE; pnote->flags = PF_R; phsh(pnote, sh); } if(buildinfolen > 0) { sh = elfshname(".note.gnu.build-id"); resoff -= elfbuildinfo(sh, startva, resoff); if(pnote == nil) { pnote = newElfPhdr(); pnote->type = PT_NOTE; pnote->flags = PF_R; } phsh(pnote, sh); } // Additions to the reserved area must be above this line. USED(resoff); elfphload(&segtext); if(segrodata.sect != nil) elfphload(&segrodata); elfphload(&segdata); /* Dynamic linking sections */ if(!debug['d']) { /* -d suppresses dynamic loader format */ sh = elfshname(".dynsym"); sh->type = SHT_DYNSYM; sh->flags = SHF_ALLOC; if(elf64) sh->entsize = ELF64SYMSIZE; else sh->entsize = ELF32SYMSIZE; sh->addralign = RegSize; sh->link = elfshname(".dynstr")->shnum; // sh->info = index of first non-local symbol (number of local symbols) shsym(sh, linklookup(ctxt, ".dynsym", 0)); sh = elfshname(".dynstr"); sh->type = SHT_STRTAB; sh->flags = SHF_ALLOC; sh->addralign = 1; shsym(sh, linklookup(ctxt, ".dynstr", 0)); if(elfverneed) { sh = elfshname(".gnu.version"); sh->type = SHT_GNU_VERSYM; sh->flags = SHF_ALLOC; sh->addralign = 2; sh->link = elfshname(".dynsym")->shnum; sh->entsize = 2; shsym(sh, linklookup(ctxt, ".gnu.version", 0)); sh = elfshname(".gnu.version_r"); sh->type = SHT_GNU_VERNEED; sh->flags = SHF_ALLOC; sh->addralign = RegSize; sh->info = elfverneed; sh->link = elfshname(".dynstr")->shnum; shsym(sh, linklookup(ctxt, ".gnu.version_r", 0)); } switch(eh->machine) { case EM_X86_64: sh = elfshname(".rela.plt"); sh->type = SHT_RELA; sh->flags = SHF_ALLOC; sh->entsize = ELF64RELASIZE; sh->addralign = RegSize; sh->link = elfshname(".dynsym")->shnum; sh->info = elfshname(".plt")->shnum; shsym(sh, linklookup(ctxt, ".rela.plt", 0)); sh = elfshname(".rela"); sh->type = SHT_RELA; sh->flags = SHF_ALLOC; sh->entsize = ELF64RELASIZE; sh->addralign = 8; sh->link = elfshname(".dynsym")->shnum; shsym(sh, linklookup(ctxt, ".rela", 0)); break; default: sh = elfshname(".rel.plt"); sh->type = SHT_REL; sh->flags = SHF_ALLOC; sh->entsize = ELF32RELSIZE; sh->link = elfshname(".dynsym")->shnum; shsym(sh, linklookup(ctxt, ".rel.plt", 0)); sh = elfshname(".rel"); sh->type = SHT_REL; sh->flags = SHF_ALLOC; sh->entsize = ELF32RELSIZE; sh->addralign = 4; sh->link = elfshname(".dynsym")->shnum; shsym(sh, linklookup(ctxt, ".rel", 0)); break; } sh = elfshname(".plt"); sh->type = SHT_PROGBITS; sh->flags = SHF_ALLOC+SHF_EXECINSTR; if(eh->machine == EM_X86_64) sh->entsize = 16; else sh->entsize = 4; sh->addralign = 4; shsym(sh, linklookup(ctxt, ".plt", 0)); sh = elfshname(".got"); sh->type = SHT_PROGBITS; sh->flags = SHF_ALLOC+SHF_WRITE; sh->entsize = RegSize; sh->addralign = RegSize; shsym(sh, linklookup(ctxt, ".got", 0)); sh = elfshname(".got.plt"); sh->type = SHT_PROGBITS; sh->flags = SHF_ALLOC+SHF_WRITE; sh->entsize = RegSize; sh->addralign = RegSize; shsym(sh, linklookup(ctxt, ".got.plt", 0)); sh = elfshname(".hash"); sh->type = SHT_HASH; sh->flags = SHF_ALLOC; sh->entsize = 4; sh->addralign = RegSize; sh->link = elfshname(".dynsym")->shnum; shsym(sh, linklookup(ctxt, ".hash", 0)); /* sh and PT_DYNAMIC for .dynamic section */ sh = elfshname(".dynamic"); sh->type = SHT_DYNAMIC; sh->flags = SHF_ALLOC+SHF_WRITE; sh->entsize = 2*RegSize; sh->addralign = RegSize; sh->link = elfshname(".dynstr")->shnum; shsym(sh, linklookup(ctxt, ".dynamic", 0)); ph = newElfPhdr(); ph->type = PT_DYNAMIC; ph->flags = PF_R + PF_W; phsh(ph, sh); /* * Thread-local storage segment (really just size). */ // Do not emit PT_TLS for OpenBSD since ld.so(1) does // not currently support it. This is handled // appropriately in runtime/cgo. if(ctxt->tlsoffset != 0 && HEADTYPE != Hopenbsd) { ph = newElfPhdr(); ph->type = PT_TLS; ph->flags = PF_R; ph->memsz = -ctxt->tlsoffset; ph->align = RegSize; } } if(HEADTYPE == Hlinux) { ph = newElfPhdr(); ph->type = PT_GNU_STACK; ph->flags = PF_W+PF_R; ph->align = RegSize; ph = newElfPhdr(); ph->type = PT_PAX_FLAGS; ph->flags = 0x2a00; // mprotect, randexec, emutramp disabled ph->align = RegSize; } elfobj: sh = elfshname(".shstrtab"); sh->type = SHT_STRTAB; sh->addralign = 1; shsym(sh, linklookup(ctxt, ".shstrtab", 0)); eh->shstrndx = sh->shnum; // put these sections early in the list if(!debug['s']) { elfshname(".symtab"); elfshname(".strtab"); } for(sect=segtext.sect; sect!=nil; sect=sect->next) elfshbits(sect); for(sect=segrodata.sect; sect!=nil; sect=sect->next) elfshbits(sect); for(sect=segdata.sect; sect!=nil; sect=sect->next) elfshbits(sect); if(linkmode == LinkExternal) { for(sect=segtext.sect; sect!=nil; sect=sect->next) elfshreloc(sect); for(sect=segrodata.sect; sect!=nil; sect=sect->next) elfshreloc(sect); for(sect=segdata.sect; sect!=nil; sect=sect->next) elfshreloc(sect); // add a .note.GNU-stack section to mark the stack as non-executable sh = elfshname(".note.GNU-stack"); sh->type = SHT_PROGBITS; sh->addralign = 1; sh->flags = 0; } // generate .tbss section for dynamic internal linking (except for OpenBSD) // external linking generates .tbss in data.c if(linkmode == LinkInternal && !debug['d'] && HEADTYPE != Hopenbsd) { sh = elfshname(".tbss"); sh->type = SHT_NOBITS; sh->addralign = RegSize; sh->size = -ctxt->tlsoffset; sh->flags = SHF_ALLOC | SHF_TLS | SHF_WRITE; } if(!debug['s']) { sh = elfshname(".symtab"); sh->type = SHT_SYMTAB; sh->off = symo; sh->size = symsize; sh->addralign = RegSize; sh->entsize = 8+2*RegSize; sh->link = elfshname(".strtab")->shnum; sh->info = elfglobalsymndx; sh = elfshname(".strtab"); sh->type = SHT_STRTAB; sh->off = symo+symsize; sh->size = elfstrsize; sh->addralign = 1; dwarfaddelfheaders(); } /* Main header */ eh->ident[EI_MAG0] = '\177'; eh->ident[EI_MAG1] = 'E'; eh->ident[EI_MAG2] = 'L'; eh->ident[EI_MAG3] = 'F'; if(HEADTYPE == Hfreebsd) eh->ident[EI_OSABI] = ELFOSABI_FREEBSD; else if(HEADTYPE == Hnetbsd) eh->ident[EI_OSABI] = ELFOSABI_NETBSD; else if(HEADTYPE == Hopenbsd) eh->ident[EI_OSABI] = ELFOSABI_OPENBSD; else if(HEADTYPE == Hdragonfly) eh->ident[EI_OSABI] = ELFOSABI_NONE; if(elf64) eh->ident[EI_CLASS] = ELFCLASS64; else eh->ident[EI_CLASS] = ELFCLASS32; eh->ident[EI_DATA] = ELFDATA2LSB; eh->ident[EI_VERSION] = EV_CURRENT; if(linkmode == LinkExternal) eh->type = ET_REL; else eh->type = ET_EXEC; if(linkmode != LinkExternal) eh->entry = entryvalue(); eh->version = EV_CURRENT; if(pph != nil) { pph->filesz = eh->phnum * eh->phentsize; pph->memsz = pph->filesz; } cseek(0); a = 0; a += elfwritehdr(); a += elfwritephdrs(); a += elfwriteshdrs(); if(!debug['d']) a += elfwriteinterp(); if(linkmode != LinkExternal) { if(HEADTYPE == Hnetbsd) a += elfwritenetbsdsig(); if(HEADTYPE == Hopenbsd) a += elfwriteopenbsdsig(); if(buildinfolen > 0) a += elfwritebuildinfo(); } if(a > ELFRESERVE) diag("ELFRESERVE too small: %lld > %d", a, ELFRESERVE); } go/src/cmd/ld/elf.h0100644000000000000000000011166212412656734014353 0ustar00rootroot00000000000000/* * Derived from: * $FreeBSD: src/sys/sys/elf32.h,v 1.8.14.1 2005/12/30 22:13:58 marcel Exp $ * $FreeBSD: src/sys/sys/elf64.h,v 1.10.14.1 2005/12/30 22:13:58 marcel Exp $ * $FreeBSD: src/sys/sys/elf_common.h,v 1.15.8.1 2005/12/30 22:13:58 marcel Exp $ * $FreeBSD: src/sys/alpha/include/elf.h,v 1.14 2003/09/25 01:10:22 peter Exp $ * $FreeBSD: src/sys/amd64/include/elf.h,v 1.18 2004/08/03 08:21:48 dfr Exp $ * $FreeBSD: src/sys/arm/include/elf.h,v 1.5.2.1 2006/06/30 21:42:52 cognet Exp $ * $FreeBSD: src/sys/i386/include/elf.h,v 1.16 2004/08/02 19:12:17 dfr Exp $ * $FreeBSD: src/sys/powerpc/include/elf.h,v 1.7 2004/11/02 09:47:01 ssouhlal Exp $ * $FreeBSD: src/sys/sparc64/include/elf.h,v 1.12 2003/09/25 01:10:26 peter Exp $ * * Copyright (c) 1996-1998 John D. Polstra. All rights reserved. * Copyright (c) 2001 David E. O'Brien * Portions Copyright 2009 The Go Authors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * */ /* * ELF definitions that are independent of architecture or word size. */ /* * Note header. The ".note" section contains an array of notes. Each * begins with this header, aligned to a word boundary. Immediately * following the note header is n_namesz bytes of name, padded to the * next word boundary. Then comes n_descsz bytes of descriptor, again * padded to a word boundary. The values of n_namesz and n_descsz do * not include the padding. */ typedef struct { uint32 n_namesz; /* Length of name. */ uint32 n_descsz; /* Length of descriptor. */ uint32 n_type; /* Type of this note. */ } Elf_Note; /* Indexes into the e_ident array. Keep synced with http://www.sco.com/developer/gabi/ch4.eheader.html */ #define EI_MAG0 0 /* Magic number, byte 0. */ #define EI_MAG1 1 /* Magic number, byte 1. */ #define EI_MAG2 2 /* Magic number, byte 2. */ #define EI_MAG3 3 /* Magic number, byte 3. */ #define EI_CLASS 4 /* Class of machine. */ #define EI_DATA 5 /* Data format. */ #define EI_VERSION 6 /* ELF format version. */ #define EI_OSABI 7 /* Operating system / ABI identification */ #define EI_ABIVERSION 8 /* ABI version */ #define OLD_EI_BRAND 8 /* Start of architecture identification. */ #define EI_PAD 9 /* Start of padding (per SVR4 ABI). */ #define EI_NIDENT 16 /* Size of e_ident array. */ /* Values for the magic number bytes. */ #define ELFMAG0 0x7f #define ELFMAG1 'E' #define ELFMAG2 'L' #define ELFMAG3 'F' #define ELFMAG "\177ELF" /* magic string */ #define SELFMAG 4 /* magic string size */ /* Values for e_ident[EI_VERSION] and e_version. */ #define EV_NONE 0 #define EV_CURRENT 1 /* Values for e_ident[EI_CLASS]. */ #define ELFCLASSNONE 0 /* Unknown class. */ #define ELFCLASS32 1 /* 32-bit architecture. */ #define ELFCLASS64 2 /* 64-bit architecture. */ /* Values for e_ident[EI_DATA]. */ #define ELFDATANONE 0 /* Unknown data format. */ #define ELFDATA2LSB 1 /* 2's complement little-endian. */ #define ELFDATA2MSB 2 /* 2's complement big-endian. */ /* Values for e_ident[EI_OSABI]. */ #define ELFOSABI_NONE 0 /* UNIX System V ABI */ #define ELFOSABI_HPUX 1 /* HP-UX operating system */ #define ELFOSABI_NETBSD 2 /* NetBSD */ #define ELFOSABI_LINUX 3 /* GNU/Linux */ #define ELFOSABI_HURD 4 /* GNU/Hurd */ #define ELFOSABI_86OPEN 5 /* 86Open common IA32 ABI */ #define ELFOSABI_SOLARIS 6 /* Solaris */ #define ELFOSABI_AIX 7 /* AIX */ #define ELFOSABI_IRIX 8 /* IRIX */ #define ELFOSABI_FREEBSD 9 /* FreeBSD */ #define ELFOSABI_TRU64 10 /* TRU64 UNIX */ #define ELFOSABI_MODESTO 11 /* Novell Modesto */ #define ELFOSABI_OPENBSD 12 /* OpenBSD */ #define ELFOSABI_OPENVMS 13 /* Open VMS */ #define ELFOSABI_NSK 14 /* HP Non-Stop Kernel */ #define ELFOSABI_ARM 97 /* ARM */ #define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */ #define ELFOSABI_SYSV ELFOSABI_NONE /* symbol used in old spec */ #define ELFOSABI_MONTEREY ELFOSABI_AIX /* Monterey */ /* e_ident */ #define IS_ELF(ehdr) ((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \ (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \ (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \ (ehdr).e_ident[EI_MAG3] == ELFMAG3) /* Values for e_type. */ #define ET_NONE 0 /* Unknown type. */ #define ET_REL 1 /* Relocatable. */ #define ET_EXEC 2 /* Executable. */ #define ET_DYN 3 /* Shared object. */ #define ET_CORE 4 /* Core file. */ #define ET_LOOS 0xfe00 /* First operating system specific. */ #define ET_HIOS 0xfeff /* Last operating system-specific. */ #define ET_LOPROC 0xff00 /* First processor-specific. */ #define ET_HIPROC 0xffff /* Last processor-specific. */ /* Values for e_machine. */ #define EM_NONE 0 /* Unknown machine. */ #define EM_M32 1 /* AT&T WE32100. */ #define EM_SPARC 2 /* Sun SPARC. */ #define EM_386 3 /* Intel i386. */ #define EM_68K 4 /* Motorola 68000. */ #define EM_88K 5 /* Motorola 88000. */ #define EM_860 7 /* Intel i860. */ #define EM_MIPS 8 /* MIPS R3000 Big-Endian only. */ #define EM_S370 9 /* IBM System/370. */ #define EM_MIPS_RS3_LE 10 /* MIPS R3000 Little-Endian. */ #define EM_PARISC 15 /* HP PA-RISC. */ #define EM_VPP500 17 /* Fujitsu VPP500. */ #define EM_SPARC32PLUS 18 /* SPARC v8plus. */ #define EM_960 19 /* Intel 80960. */ #define EM_PPC 20 /* PowerPC 32-bit. */ #define EM_PPC64 21 /* PowerPC 64-bit. */ #define EM_S390 22 /* IBM System/390. */ #define EM_V800 36 /* NEC V800. */ #define EM_FR20 37 /* Fujitsu FR20. */ #define EM_RH32 38 /* TRW RH-32. */ #define EM_RCE 39 /* Motorola RCE. */ #define EM_ARM 40 /* ARM. */ #define EM_SH 42 /* Hitachi SH. */ #define EM_SPARCV9 43 /* SPARC v9 64-bit. */ #define EM_TRICORE 44 /* Siemens TriCore embedded processor. */ #define EM_ARC 45 /* Argonaut RISC Core. */ #define EM_H8_300 46 /* Hitachi H8/300. */ #define EM_H8_300H 47 /* Hitachi H8/300H. */ #define EM_H8S 48 /* Hitachi H8S. */ #define EM_H8_500 49 /* Hitachi H8/500. */ #define EM_IA_64 50 /* Intel IA-64 Processor. */ #define EM_MIPS_X 51 /* Stanford MIPS-X. */ #define EM_COLDFIRE 52 /* Motorola ColdFire. */ #define EM_68HC12 53 /* Motorola M68HC12. */ #define EM_MMA 54 /* Fujitsu MMA. */ #define EM_PCP 55 /* Siemens PCP. */ #define EM_NCPU 56 /* Sony nCPU. */ #define EM_NDR1 57 /* Denso NDR1 microprocessor. */ #define EM_STARCORE 58 /* Motorola Star*Core processor. */ #define EM_ME16 59 /* Toyota ME16 processor. */ #define EM_ST100 60 /* STMicroelectronics ST100 processor. */ #define EM_TINYJ 61 /* Advanced Logic Corp. TinyJ processor. */ #define EM_X86_64 62 /* Advanced Micro Devices x86-64 */ /* Non-standard or deprecated. */ #define EM_486 6 /* Intel i486. */ #define EM_MIPS_RS4_BE 10 /* MIPS R4000 Big-Endian */ #define EM_ALPHA_STD 41 /* Digital Alpha (standard value). */ #define EM_ALPHA 0x9026 /* Alpha (written in the absence of an ABI) */ /* Special section indexes. */ #define SHN_UNDEF 0 /* Undefined, missing, irrelevant. */ #define SHN_LORESERVE 0xff00 /* First of reserved range. */ #define SHN_LOPROC 0xff00 /* First processor-specific. */ #define SHN_HIPROC 0xff1f /* Last processor-specific. */ #define SHN_LOOS 0xff20 /* First operating system-specific. */ #define SHN_HIOS 0xff3f /* Last operating system-specific. */ #define SHN_ABS 0xfff1 /* Absolute values. */ #define SHN_COMMON 0xfff2 /* Common data. */ #define SHN_XINDEX 0xffff /* Escape -- index stored elsewhere. */ #define SHN_HIRESERVE 0xffff /* Last of reserved range. */ /* sh_type */ #define SHT_NULL 0 /* inactive */ #define SHT_PROGBITS 1 /* program defined information */ #define SHT_SYMTAB 2 /* symbol table section */ #define SHT_STRTAB 3 /* string table section */ #define SHT_RELA 4 /* relocation section with addends */ #define SHT_HASH 5 /* symbol hash table section */ #define SHT_DYNAMIC 6 /* dynamic section */ #define SHT_NOTE 7 /* note section */ #define SHT_NOBITS 8 /* no space section */ #define SHT_REL 9 /* relocation section - no addends */ #define SHT_SHLIB 10 /* reserved - purpose unknown */ #define SHT_DYNSYM 11 /* dynamic symbol table section */ #define SHT_INIT_ARRAY 14 /* Initialization function pointers. */ #define SHT_FINI_ARRAY 15 /* Termination function pointers. */ #define SHT_PREINIT_ARRAY 16 /* Pre-initialization function ptrs. */ #define SHT_GROUP 17 /* Section group. */ #define SHT_SYMTAB_SHNDX 18 /* Section indexes (see SHN_XINDEX). */ #define SHT_LOOS 0x60000000 /* First of OS specific semantics */ #define SHT_HIOS 0x6fffffff /* Last of OS specific semantics */ #define SHT_GNU_VERDEF 0x6ffffffd #define SHT_GNU_VERNEED 0x6ffffffe #define SHT_GNU_VERSYM 0x6fffffff #define SHT_LOPROC 0x70000000 /* reserved range for processor */ #define SHT_HIPROC 0x7fffffff /* specific section header types */ #define SHT_LOUSER 0x80000000 /* reserved range for application */ #define SHT_HIUSER 0xffffffff /* specific indexes */ /* Flags for sh_flags. */ #define SHF_WRITE 0x1 /* Section contains writable data. */ #define SHF_ALLOC 0x2 /* Section occupies memory. */ #define SHF_EXECINSTR 0x4 /* Section contains instructions. */ #define SHF_MERGE 0x10 /* Section may be merged. */ #define SHF_STRINGS 0x20 /* Section contains strings. */ #define SHF_INFO_LINK 0x40 /* sh_info holds section index. */ #define SHF_LINK_ORDER 0x80 /* Special ordering requirements. */ #define SHF_OS_NONCONFORMING 0x100 /* OS-specific processing required. */ #define SHF_GROUP 0x200 /* Member of section group. */ #define SHF_TLS 0x400 /* Section contains TLS data. */ #define SHF_MASKOS 0x0ff00000 /* OS-specific semantics. */ #define SHF_MASKPROC 0xf0000000 /* Processor-specific semantics. */ /* Values for p_type. */ #define PT_NULL 0 /* Unused entry. */ #define PT_LOAD 1 /* Loadable segment. */ #define PT_DYNAMIC 2 /* Dynamic linking information segment. */ #define PT_INTERP 3 /* Pathname of interpreter. */ #define PT_NOTE 4 /* Auxiliary information. */ #define PT_SHLIB 5 /* Reserved (not used). */ #define PT_PHDR 6 /* Location of program header itself. */ #define PT_TLS 7 /* Thread local storage segment */ #define PT_LOOS 0x60000000 /* First OS-specific. */ #define PT_HIOS 0x6fffffff /* Last OS-specific. */ #define PT_LOPROC 0x70000000 /* First processor-specific type. */ #define PT_HIPROC 0x7fffffff /* Last processor-specific type. */ #define PT_GNU_STACK 0x6474e551 #define PT_PAX_FLAGS 0x65041580 /* Values for p_flags. */ #define PF_X 0x1 /* Executable. */ #define PF_W 0x2 /* Writable. */ #define PF_R 0x4 /* Readable. */ #define PF_MASKOS 0x0ff00000 /* Operating system-specific. */ #define PF_MASKPROC 0xf0000000 /* Processor-specific. */ /* Values for d_tag. */ #define DT_NULL 0 /* Terminating entry. */ /* String table offset of a needed shared library. */ #define DT_NEEDED 1 #define DT_PLTRELSZ 2 /* Total size in bytes of PLT relocations. */ #define DT_PLTGOT 3 /* Processor-dependent address. */ #define DT_HASH 4 /* Address of symbol hash table. */ #define DT_STRTAB 5 /* Address of string table. */ #define DT_SYMTAB 6 /* Address of symbol table. */ #define DT_RELA 7 /* Address of ElfNN_Rela relocations. */ #define DT_RELASZ 8 /* Total size of ElfNN_Rela relocations. */ #define DT_RELAENT 9 /* Size of each ElfNN_Rela relocation entry. */ #define DT_STRSZ 10 /* Size of string table. */ #define DT_SYMENT 11 /* Size of each symbol table entry. */ #define DT_INIT 12 /* Address of initialization function. */ #define DT_FINI 13 /* Address of finalization function. */ /* String table offset of shared object name. */ #define DT_SONAME 14 #define DT_RPATH 15 /* String table offset of library path. [sup] */ #define DT_SYMBOLIC 16 /* Indicates "symbolic" linking. [sup] */ #define DT_REL 17 /* Address of ElfNN_Rel relocations. */ #define DT_RELSZ 18 /* Total size of ElfNN_Rel relocations. */ #define DT_RELENT 19 /* Size of each ElfNN_Rel relocation. */ #define DT_PLTREL 20 /* Type of relocation used for PLT. */ #define DT_DEBUG 21 /* Reserved (not used). */ /* Indicates there may be relocations in non-writable segments. [sup] */ #define DT_TEXTREL 22 #define DT_JMPREL 23 /* Address of PLT relocations. */ #define DT_BIND_NOW 24 /* [sup] */ /* Address of the array of pointers to initialization functions */ #define DT_INIT_ARRAY 25 /* Address of the array of pointers to termination functions */ #define DT_FINI_ARRAY 26 /* Size in bytes of the array of initialization functions. */ #define DT_INIT_ARRAYSZ 27 /* Size in bytes of the array of terminationfunctions. */ #define DT_FINI_ARRAYSZ 28 /* String table offset of a null-terminated library search path string. */ #define DT_RUNPATH 29 #define DT_FLAGS 30 /* Object specific flag values. */ /* Values greater than or equal to DT_ENCODING and less than DT_LOOS follow the rules for the interpretation of the d_un union as follows: even == 'd_ptr', even == 'd_val' or none */ #define DT_ENCODING 32 /* Address of the array of pointers to pre-initialization functions. */ #define DT_PREINIT_ARRAY 32 /* Size in bytes of the array of pre-initialization functions. */ #define DT_PREINIT_ARRAYSZ 33 #define DT_LOOS 0x6000000d /* First OS-specific */ #define DT_HIOS 0x6ffff000 /* Last OS-specific */ #define DT_LOPROC 0x70000000 /* First processor-specific type. */ #define DT_HIPROC 0x7fffffff /* Last processor-specific type. */ #define DT_VERNEED 0x6ffffffe #define DT_VERNEEDNUM 0x6fffffff #define DT_VERSYM 0x6ffffff0 /* Values for DT_FLAGS */ /* Indicates that the object being loaded may make reference to the $ORIGIN substitution string */ #define DF_ORIGIN 0x0001 #define DF_SYMBOLIC 0x0002 /* Indicates "symbolic" linking. */ /* Indicates there may be relocations in non-writable segments. */ #define DF_TEXTREL 0x0004 /* Indicates that the dynamic linker should process all relocations for the object containing this entry before transferring control to the program. */ #define DF_BIND_NOW 0x0008 /* Indicates that the shared object or executable contains code using a static thread-local storage scheme. */ #define DF_STATIC_TLS 0x0010 /* Values for n_type. Used in core files. */ #define NT_PRSTATUS 1 /* Process status. */ #define NT_FPREGSET 2 /* Floating point registers. */ #define NT_PRPSINFO 3 /* Process state info. */ /* Symbol Binding - ELFNN_ST_BIND - st_info */ #define STB_LOCAL 0 /* Local symbol */ #define STB_GLOBAL 1 /* Global symbol */ #define STB_WEAK 2 /* like global - lower precedence */ #define STB_LOOS 10 /* Reserved range for operating system */ #define STB_HIOS 12 /* specific semantics. */ #define STB_LOPROC 13 /* reserved range for processor */ #define STB_HIPROC 15 /* specific semantics. */ /* Symbol type - ELFNN_ST_TYPE - st_info */ #define STT_NOTYPE 0 /* Unspecified type. */ #define STT_OBJECT 1 /* Data object. */ #define STT_FUNC 2 /* Function. */ #define STT_SECTION 3 /* Section. */ #define STT_FILE 4 /* Source file. */ #define STT_COMMON 5 /* Uninitialized common block. */ #define STT_TLS 6 /* TLS object. */ #define STT_LOOS 10 /* Reserved range for operating system */ #define STT_HIOS 12 /* specific semantics. */ #define STT_LOPROC 13 /* reserved range for processor */ #define STT_HIPROC 15 /* specific semantics. */ /* Symbol visibility - ELFNN_ST_VISIBILITY - st_other */ #define STV_DEFAULT 0x0 /* Default visibility (see binding). */ #define STV_INTERNAL 0x1 /* Special meaning in relocatable objects. */ #define STV_HIDDEN 0x2 /* Not visible. */ #define STV_PROTECTED 0x3 /* Visible but not preemptible. */ /* Special symbol table indexes. */ #define STN_UNDEF 0 /* Undefined symbol index. */ /* * ELF definitions common to all 32-bit architectures. */ typedef uint32 Elf32_Addr; typedef uint16 Elf32_Half; typedef uint32 Elf32_Off; typedef int32 Elf32_Sword; typedef uint32 Elf32_Word; typedef Elf32_Word Elf32_Hashelt; /* Non-standard class-dependent datatype used for abstraction. */ typedef Elf32_Word Elf32_Size; typedef Elf32_Sword Elf32_Ssize; /* * ELF header. */ typedef struct { unsigned char ident[EI_NIDENT]; /* File identification. */ Elf32_Half type; /* File type. */ Elf32_Half machine; /* Machine architecture. */ Elf32_Word version; /* ELF format version. */ Elf32_Addr entry; /* Entry point. */ Elf32_Off phoff; /* Program header file offset. */ Elf32_Off shoff; /* Section header file offset. */ Elf32_Word flags; /* Architecture-specific flags. */ Elf32_Half ehsize; /* Size of ELF header in bytes. */ Elf32_Half phentsize; /* Size of program header entry. */ Elf32_Half phnum; /* Number of program header entries. */ Elf32_Half shentsize; /* Size of section header entry. */ Elf32_Half shnum; /* Number of section header entries. */ Elf32_Half shstrndx; /* Section name strings section. */ } Elf32_Ehdr; /* * Section header. */ typedef struct { Elf32_Word name; /* Section name (index into the section header string table). */ Elf32_Word type; /* Section type. */ Elf32_Word flags; /* Section flags. */ Elf32_Addr vaddr; /* Address in memory image. */ Elf32_Off off; /* Offset in file. */ Elf32_Word size; /* Size in bytes. */ Elf32_Word link; /* Index of a related section. */ Elf32_Word info; /* Depends on section type. */ Elf32_Word addralign; /* Alignment in bytes. */ Elf32_Word entsize; /* Size of each entry in section. */ } Elf32_Shdr; /* * Program header. */ typedef struct { Elf32_Word type; /* Entry type. */ Elf32_Off off; /* File offset of contents. */ Elf32_Addr vaddr; /* Virtual address in memory image. */ Elf32_Addr paddr; /* Physical address (not used). */ Elf32_Word filesz; /* Size of contents in file. */ Elf32_Word memsz; /* Size of contents in memory. */ Elf32_Word flags; /* Access permission flags. */ Elf32_Word align; /* Alignment in memory and file. */ } Elf32_Phdr; /* * Dynamic structure. The ".dynamic" section contains an array of them. */ typedef struct { Elf32_Sword d_tag; /* Entry type. */ union { Elf32_Word d_val; /* Integer value. */ Elf32_Addr d_ptr; /* Address value. */ } d_un; } Elf32_Dyn; /* * Relocation entries. */ /* Relocations that don't need an addend field. */ typedef struct { Elf32_Addr off; /* Location to be relocated. */ Elf32_Word info; /* Relocation type and symbol index. */ } Elf32_Rel; /* Relocations that need an addend field. */ typedef struct { Elf32_Addr off; /* Location to be relocated. */ Elf32_Word info; /* Relocation type and symbol index. */ Elf32_Sword addend; /* Addend. */ } Elf32_Rela; /* Macros for accessing the fields of r_info. */ #define ELF32_R_SYM(info) ((info) >> 8) #define ELF32_R_TYPE(info) ((unsigned char)(info)) /* Macro for constructing r_info from field values. */ #define ELF32_R_INFO(sym, type) (((sym) << 8) + (unsigned char)(type)) /* * Relocation types. */ #define R_X86_64_NONE 0 /* No relocation. */ #define R_X86_64_64 1 /* Add 64 bit symbol value. */ #define R_X86_64_PC32 2 /* PC-relative 32 bit signed sym value. */ #define R_X86_64_GOT32 3 /* PC-relative 32 bit GOT offset. */ #define R_X86_64_PLT32 4 /* PC-relative 32 bit PLT offset. */ #define R_X86_64_COPY 5 /* Copy data from shared object. */ #define R_X86_64_GLOB_DAT 6 /* Set GOT entry to data address. */ #define R_X86_64_JMP_SLOT 7 /* Set GOT entry to code address. */ #define R_X86_64_RELATIVE 8 /* Add load address of shared object. */ #define R_X86_64_GOTPCREL 9 /* Add 32 bit signed pcrel offset to GOT. */ #define R_X86_64_32 10 /* Add 32 bit zero extended symbol value */ #define R_X86_64_32S 11 /* Add 32 bit sign extended symbol value */ #define R_X86_64_16 12 /* Add 16 bit zero extended symbol value */ #define R_X86_64_PC16 13 /* Add 16 bit signed extended pc relative symbol value */ #define R_X86_64_8 14 /* Add 8 bit zero extended symbol value */ #define R_X86_64_PC8 15 /* Add 8 bit signed extended pc relative symbol value */ #define R_X86_64_DTPMOD64 16 /* ID of module containing symbol */ #define R_X86_64_DTPOFF64 17 /* Offset in TLS block */ #define R_X86_64_TPOFF64 18 /* Offset in static TLS block */ #define R_X86_64_TLSGD 19 /* PC relative offset to GD GOT entry */ #define R_X86_64_TLSLD 20 /* PC relative offset to LD GOT entry */ #define R_X86_64_DTPOFF32 21 /* Offset in TLS block */ #define R_X86_64_GOTTPOFF 22 /* PC relative offset to IE GOT entry */ #define R_X86_64_TPOFF32 23 /* Offset in static TLS block */ #define R_X86_64_COUNT 24 /* Count of defined relocation types. */ #define R_ALPHA_NONE 0 /* No reloc */ #define R_ALPHA_REFLONG 1 /* Direct 32 bit */ #define R_ALPHA_REFQUAD 2 /* Direct 64 bit */ #define R_ALPHA_GPREL32 3 /* GP relative 32 bit */ #define R_ALPHA_LITERAL 4 /* GP relative 16 bit w/optimization */ #define R_ALPHA_LITUSE 5 /* Optimization hint for LITERAL */ #define R_ALPHA_GPDISP 6 /* Add displacement to GP */ #define R_ALPHA_BRADDR 7 /* PC+4 relative 23 bit shifted */ #define R_ALPHA_HINT 8 /* PC+4 relative 16 bit shifted */ #define R_ALPHA_SREL16 9 /* PC relative 16 bit */ #define R_ALPHA_SREL32 10 /* PC relative 32 bit */ #define R_ALPHA_SREL64 11 /* PC relative 64 bit */ #define R_ALPHA_OP_PUSH 12 /* OP stack push */ #define R_ALPHA_OP_STORE 13 /* OP stack pop and store */ #define R_ALPHA_OP_PSUB 14 /* OP stack subtract */ #define R_ALPHA_OP_PRSHIFT 15 /* OP stack right shift */ #define R_ALPHA_GPVALUE 16 #define R_ALPHA_GPRELHIGH 17 #define R_ALPHA_GPRELLOW 18 #define R_ALPHA_IMMED_GP_16 19 #define R_ALPHA_IMMED_GP_HI32 20 #define R_ALPHA_IMMED_SCN_HI32 21 #define R_ALPHA_IMMED_BR_HI32 22 #define R_ALPHA_IMMED_LO32 23 #define R_ALPHA_COPY 24 /* Copy symbol at runtime */ #define R_ALPHA_GLOB_DAT 25 /* Create GOT entry */ #define R_ALPHA_JMP_SLOT 26 /* Create PLT entry */ #define R_ALPHA_RELATIVE 27 /* Adjust by program base */ #define R_ALPHA_COUNT 28 #define R_ARM_NONE 0 /* No relocation. */ #define R_ARM_PC24 1 #define R_ARM_ABS32 2 #define R_ARM_REL32 3 #define R_ARM_PC13 4 #define R_ARM_ABS16 5 #define R_ARM_ABS12 6 #define R_ARM_THM_ABS5 7 #define R_ARM_ABS8 8 #define R_ARM_SBREL32 9 #define R_ARM_THM_PC22 10 #define R_ARM_THM_PC8 11 #define R_ARM_AMP_VCALL9 12 #define R_ARM_SWI24 13 #define R_ARM_THM_SWI8 14 #define R_ARM_XPC25 15 #define R_ARM_THM_XPC22 16 #define R_ARM_COPY 20 /* Copy data from shared object. */ #define R_ARM_GLOB_DAT 21 /* Set GOT entry to data address. */ #define R_ARM_JUMP_SLOT 22 /* Set GOT entry to code address. */ #define R_ARM_RELATIVE 23 /* Add load address of shared object. */ #define R_ARM_GOTOFF 24 /* Add GOT-relative symbol address. */ #define R_ARM_GOTPC 25 /* Add PC-relative GOT table address. */ #define R_ARM_GOT32 26 /* Add PC-relative GOT offset. */ #define R_ARM_PLT32 27 /* Add PC-relative PLT offset. */ #define R_ARM_CALL 28 #define R_ARM_JUMP24 29 #define R_ARM_V4BX 40 #define R_ARM_GOT_PREL 96 #define R_ARM_GNU_VTENTRY 100 #define R_ARM_GNU_VTINHERIT 101 #define R_ARM_TLS_IE32 107 #define R_ARM_TLS_LE32 108 #define R_ARM_RSBREL32 250 #define R_ARM_THM_RPC22 251 #define R_ARM_RREL32 252 #define R_ARM_RABS32 253 #define R_ARM_RPC24 254 #define R_ARM_RBASE 255 #define R_ARM_COUNT 38 /* Count of defined relocation types. */ #define R_386_NONE 0 /* No relocation. */ #define R_386_32 1 /* Add symbol value. */ #define R_386_PC32 2 /* Add PC-relative symbol value. */ #define R_386_GOT32 3 /* Add PC-relative GOT offset. */ #define R_386_PLT32 4 /* Add PC-relative PLT offset. */ #define R_386_COPY 5 /* Copy data from shared object. */ #define R_386_GLOB_DAT 6 /* Set GOT entry to data address. */ #define R_386_JMP_SLOT 7 /* Set GOT entry to code address. */ #define R_386_RELATIVE 8 /* Add load address of shared object. */ #define R_386_GOTOFF 9 /* Add GOT-relative symbol address. */ #define R_386_GOTPC 10 /* Add PC-relative GOT table address. */ #define R_386_TLS_TPOFF 14 /* Negative offset in static TLS block */ #define R_386_TLS_IE 15 /* Absolute address of GOT for -ve static TLS */ #define R_386_TLS_GOTIE 16 /* GOT entry for negative static TLS block */ #define R_386_TLS_LE 17 /* Negative offset relative to static TLS */ #define R_386_TLS_GD 18 /* 32 bit offset to GOT (index,off) pair */ #define R_386_TLS_LDM 19 /* 32 bit offset to GOT (index,zero) pair */ #define R_386_TLS_GD_32 24 /* 32 bit offset to GOT (index,off) pair */ #define R_386_TLS_GD_PUSH 25 /* pushl instruction for Sun ABI GD sequence */ #define R_386_TLS_GD_CALL 26 /* call instruction for Sun ABI GD sequence */ #define R_386_TLS_GD_POP 27 /* popl instruction for Sun ABI GD sequence */ #define R_386_TLS_LDM_32 28 /* 32 bit offset to GOT (index,zero) pair */ #define R_386_TLS_LDM_PUSH 29 /* pushl instruction for Sun ABI LD sequence */ #define R_386_TLS_LDM_CALL 30 /* call instruction for Sun ABI LD sequence */ #define R_386_TLS_LDM_POP 31 /* popl instruction for Sun ABI LD sequence */ #define R_386_TLS_LDO_32 32 /* 32 bit offset from start of TLS block */ #define R_386_TLS_IE_32 33 /* 32 bit offset to GOT static TLS offset entry */ #define R_386_TLS_LE_32 34 /* 32 bit offset within static TLS block */ #define R_386_TLS_DTPMOD32 35 /* GOT entry containing TLS index */ #define R_386_TLS_DTPOFF32 36 /* GOT entry containing TLS offset */ #define R_386_TLS_TPOFF32 37 /* GOT entry of -ve static TLS offset */ #define R_386_COUNT 38 /* Count of defined relocation types. */ #define R_PPC_NONE 0 /* No relocation. */ #define R_PPC_ADDR32 1 #define R_PPC_ADDR24 2 #define R_PPC_ADDR16 3 #define R_PPC_ADDR16_LO 4 #define R_PPC_ADDR16_HI 5 #define R_PPC_ADDR16_HA 6 #define R_PPC_ADDR14 7 #define R_PPC_ADDR14_BRTAKEN 8 #define R_PPC_ADDR14_BRNTAKEN 9 #define R_PPC_REL24 10 #define R_PPC_REL14 11 #define R_PPC_REL14_BRTAKEN 12 #define R_PPC_REL14_BRNTAKEN 13 #define R_PPC_GOT16 14 #define R_PPC_GOT16_LO 15 #define R_PPC_GOT16_HI 16 #define R_PPC_GOT16_HA 17 #define R_PPC_PLTREL24 18 #define R_PPC_COPY 19 #define R_PPC_GLOB_DAT 20 #define R_PPC_JMP_SLOT 21 #define R_PPC_RELATIVE 22 #define R_PPC_LOCAL24PC 23 #define R_PPC_UADDR32 24 #define R_PPC_UADDR16 25 #define R_PPC_REL32 26 #define R_PPC_PLT32 27 #define R_PPC_PLTREL32 28 #define R_PPC_PLT16_LO 29 #define R_PPC_PLT16_HI 30 #define R_PPC_PLT16_HA 31 #define R_PPC_SDAREL16 32 #define R_PPC_SECTOFF 33 #define R_PPC_SECTOFF_LO 34 #define R_PPC_SECTOFF_HI 35 #define R_PPC_SECTOFF_HA 36 #define R_PPC_COUNT 37 /* Count of defined relocation types. */ #define R_PPC_TLS 67 #define R_PPC_DTPMOD32 68 #define R_PPC_TPREL16 69 #define R_PPC_TPREL16_LO 70 #define R_PPC_TPREL16_HI 71 #define R_PPC_TPREL16_HA 72 #define R_PPC_TPREL32 73 #define R_PPC_DTPREL16 74 #define R_PPC_DTPREL16_LO 75 #define R_PPC_DTPREL16_HI 76 #define R_PPC_DTPREL16_HA 77 #define R_PPC_DTPREL32 78 #define R_PPC_GOT_TLSGD16 79 #define R_PPC_GOT_TLSGD16_LO 80 #define R_PPC_GOT_TLSGD16_HI 81 #define R_PPC_GOT_TLSGD16_HA 82 #define R_PPC_GOT_TLSLD16 83 #define R_PPC_GOT_TLSLD16_LO 84 #define R_PPC_GOT_TLSLD16_HI 85 #define R_PPC_GOT_TLSLD16_HA 86 #define R_PPC_GOT_TPREL16 87 #define R_PPC_GOT_TPREL16_LO 88 #define R_PPC_GOT_TPREL16_HI 89 #define R_PPC_GOT_TPREL16_HA 90 #define R_PPC_EMB_NADDR32 101 #define R_PPC_EMB_NADDR16 102 #define R_PPC_EMB_NADDR16_LO 103 #define R_PPC_EMB_NADDR16_HI 104 #define R_PPC_EMB_NADDR16_HA 105 #define R_PPC_EMB_SDAI16 106 #define R_PPC_EMB_SDA2I16 107 #define R_PPC_EMB_SDA2REL 108 #define R_PPC_EMB_SDA21 109 #define R_PPC_EMB_MRKREF 110 #define R_PPC_EMB_RELSEC16 111 #define R_PPC_EMB_RELST_LO 112 #define R_PPC_EMB_RELST_HI 113 #define R_PPC_EMB_RELST_HA 114 #define R_PPC_EMB_BIT_FLD 115 #define R_PPC_EMB_RELSDA 116 /* Count of defined relocation types. */ #define R_PPC_EMB_COUNT (R_PPC_EMB_RELSDA - R_PPC_EMB_NADDR32 + 1) #define R_SPARC_NONE 0 #define R_SPARC_8 1 #define R_SPARC_16 2 #define R_SPARC_32 3 #define R_SPARC_DISP8 4 #define R_SPARC_DISP16 5 #define R_SPARC_DISP32 6 #define R_SPARC_WDISP30 7 #define R_SPARC_WDISP22 8 #define R_SPARC_HI22 9 #define R_SPARC_22 10 #define R_SPARC_13 11 #define R_SPARC_LO10 12 #define R_SPARC_GOT10 13 #define R_SPARC_GOT13 14 #define R_SPARC_GOT22 15 #define R_SPARC_PC10 16 #define R_SPARC_PC22 17 #define R_SPARC_WPLT30 18 #define R_SPARC_COPY 19 #define R_SPARC_GLOB_DAT 20 #define R_SPARC_JMP_SLOT 21 #define R_SPARC_RELATIVE 22 #define R_SPARC_UA32 23 #define R_SPARC_PLT32 24 #define R_SPARC_HIPLT22 25 #define R_SPARC_LOPLT10 26 #define R_SPARC_PCPLT32 27 #define R_SPARC_PCPLT22 28 #define R_SPARC_PCPLT10 29 #define R_SPARC_10 30 #define R_SPARC_11 31 #define R_SPARC_64 32 #define R_SPARC_OLO10 33 #define R_SPARC_HH22 34 #define R_SPARC_HM10 35 #define R_SPARC_LM22 36 #define R_SPARC_PC_HH22 37 #define R_SPARC_PC_HM10 38 #define R_SPARC_PC_LM22 39 #define R_SPARC_WDISP16 40 #define R_SPARC_WDISP19 41 #define R_SPARC_GLOB_JMP 42 #define R_SPARC_7 43 #define R_SPARC_5 44 #define R_SPARC_6 45 #define R_SPARC_DISP64 46 #define R_SPARC_PLT64 47 #define R_SPARC_HIX22 48 #define R_SPARC_LOX10 49 #define R_SPARC_H44 50 #define R_SPARC_M44 51 #define R_SPARC_L44 52 #define R_SPARC_REGISTER 53 #define R_SPARC_UA64 54 #define R_SPARC_UA16 55 /* * Magic number for the elf trampoline, chosen wisely to be an immediate * value. */ #define ARM_MAGIC_TRAMP_NUMBER 0x5c000003 /* * Symbol table entries. */ typedef struct { Elf32_Word name; /* String table index of name. */ Elf32_Addr value; /* Symbol value. */ Elf32_Word size; /* Size of associated object. */ unsigned char info; /* Type and binding information. */ unsigned char other; /* Reserved (not used). */ Elf32_Half shndx; /* Section index of symbol. */ } Elf32_Sym; /* Macros for accessing the fields of st_info. */ #define ELF32_ST_BIND(info) ((info) >> 4) #define ELF32_ST_TYPE(info) ((info) & 0xf) /* Macro for constructing st_info from field values. */ #define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) /* Macro for accessing the fields of st_other. */ #define ELF32_ST_VISIBILITY(oth) ((oth) & 0x3) /* * ELF definitions common to all 64-bit architectures. */ typedef uint64 Elf64_Addr; typedef uint16 Elf64_Half; typedef uint64 Elf64_Off; typedef int32 Elf64_Sword; typedef int64 Elf64_Sxword; typedef uint32 Elf64_Word; typedef uint64 Elf64_Xword; /* * Types of dynamic symbol hash table bucket and chain elements. * * This is inconsistent among 64 bit architectures, so a machine dependent * typedef is required. */ #ifdef __alpha__ typedef Elf64_Off Elf64_Hashelt; #else typedef Elf64_Word Elf64_Hashelt; #endif /* Non-standard class-dependent datatype used for abstraction. */ typedef Elf64_Xword Elf64_Size; typedef Elf64_Sxword Elf64_Ssize; /* * ELF header. */ typedef struct { unsigned char ident[EI_NIDENT]; /* File identification. */ Elf64_Half type; /* File type. */ Elf64_Half machine; /* Machine architecture. */ Elf64_Word version; /* ELF format version. */ Elf64_Addr entry; /* Entry point. */ Elf64_Off phoff; /* Program header file offset. */ Elf64_Off shoff; /* Section header file offset. */ Elf64_Word flags; /* Architecture-specific flags. */ Elf64_Half ehsize; /* Size of ELF header in bytes. */ Elf64_Half phentsize; /* Size of program header entry. */ Elf64_Half phnum; /* Number of program header entries. */ Elf64_Half shentsize; /* Size of section header entry. */ Elf64_Half shnum; /* Number of section header entries. */ Elf64_Half shstrndx; /* Section name strings section. */ } Elf64_Ehdr; /* * Section header. */ typedef struct Elf64_Shdr Elf64_Shdr; struct Elf64_Shdr { Elf64_Word name; /* Section name (index into the section header string table). */ Elf64_Word type; /* Section type. */ Elf64_Xword flags; /* Section flags. */ Elf64_Addr addr; /* Address in memory image. */ Elf64_Off off; /* Offset in file. */ Elf64_Xword size; /* Size in bytes. */ Elf64_Word link; /* Index of a related section. */ Elf64_Word info; /* Depends on section type. */ Elf64_Xword addralign; /* Alignment in bytes. */ Elf64_Xword entsize; /* Size of each entry in section. */ int shnum; /* section number, not stored on disk */ LSym* secsym; /* section symbol, if needed; not on disk */ }; /* * Program header. */ typedef struct { Elf64_Word type; /* Entry type. */ Elf64_Word flags; /* Access permission flags. */ Elf64_Off off; /* File offset of contents. */ Elf64_Addr vaddr; /* Virtual address in memory image. */ Elf64_Addr paddr; /* Physical address (not used). */ Elf64_Xword filesz; /* Size of contents in file. */ Elf64_Xword memsz; /* Size of contents in memory. */ Elf64_Xword align; /* Alignment in memory and file. */ } Elf64_Phdr; /* * Dynamic structure. The ".dynamic" section contains an array of them. */ typedef struct { Elf64_Sxword d_tag; /* Entry type. */ union { Elf64_Xword d_val; /* Integer value. */ Elf64_Addr d_ptr; /* Address value. */ } d_un; } Elf64_Dyn; /* * Relocation entries. */ /* Relocations that don't need an addend field. */ typedef struct { Elf64_Addr off; /* Location to be relocated. */ Elf64_Xword info; /* Relocation type and symbol index. */ } Elf64_Rel; /* Relocations that need an addend field. */ typedef struct { Elf64_Addr off; /* Location to be relocated. */ Elf64_Xword info; /* Relocation type and symbol index. */ Elf64_Sxword addend; /* Addend. */ } Elf64_Rela; /* Macros for accessing the fields of r_info. */ #define ELF64_R_SYM(info) ((info) >> 32) #define ELF64_R_TYPE(info) ((info) & 0xffffffffL) /* Macro for constructing r_info from field values. */ #define ELF64_R_INFO(sym, type) ((((uint64)(sym)) << 32) + (((uint64)(type)) & 0xffffffffULL)) /* * Symbol table entries. */ typedef struct { Elf64_Word name; /* String table index of name. */ unsigned char info; /* Type and binding information. */ unsigned char other; /* Reserved (not used). */ Elf64_Half shndx; /* Section index of symbol. */ Elf64_Addr value; /* Symbol value. */ Elf64_Xword size; /* Size of associated object. */ } Elf64_Sym; /* Macros for accessing the fields of st_info. */ #define ELF64_ST_BIND(info) ((info) >> 4) #define ELF64_ST_TYPE(info) ((info) & 0xf) /* Macro for constructing st_info from field values. */ #define ELF64_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) /* Macro for accessing the fields of st_other. */ #define ELF64_ST_VISIBILITY(oth) ((oth) & 0x3) /* * Go linker interface */ #define ELF64HDRSIZE 64 #define ELF64PHDRSIZE 56 #define ELF64SHDRSIZE 64 #define ELF64RELSIZE 16 #define ELF64RELASIZE 24 #define ELF64SYMSIZE sizeof(Elf64_Sym) #define ELF32HDRSIZE sizeof(Elf32_Ehdr) #define ELF32PHDRSIZE sizeof(Elf32_Phdr) #define ELF32SHDRSIZE sizeof(Elf32_Shdr) #define ELF32SYMSIZE sizeof(Elf32_Sym) #define ELF32RELSIZE 8 /* * The interface uses the 64-bit structures always, * to avoid code duplication. The writers know how to * marshal a 32-bit representation from the 64-bit structure. */ typedef Elf64_Ehdr ElfEhdr; typedef Elf64_Shdr ElfShdr; typedef Elf64_Phdr ElfPhdr; void elfinit(void); ElfEhdr *getElfEhdr(void); ElfShdr *newElfShdr(vlong); ElfPhdr *newElfPhdr(void); uint32 elfwritehdr(void); uint32 elfwritephdrs(void); uint32 elfwriteshdrs(void); void elfwritedynent(LSym*, int, uint64); void elfwritedynentsym(LSym*, int, LSym*); void elfwritedynentsymsize(LSym*, int, LSym*); uint32 elfhash(uchar*); uint64 startelf(void); uint64 endelf(void); extern int numelfphdr; extern int numelfshdr; extern int iself; extern int elfverneed; int elfinterp(ElfShdr*, uint64, uint64, char*); int elfwriteinterp(void); int elfnetbsdsig(ElfShdr*, uint64, uint64); int elfwritenetbsdsig(void); int elfopenbsdsig(ElfShdr*, uint64, uint64); int elfwriteopenbsdsig(void); void addbuildinfo(char*); int elfbuildinfo(ElfShdr*, uint64, uint64); int elfwritebuildinfo(void); void elfdynhash(void); ElfPhdr* elfphload(Segment*); ElfShdr* elfshbits(Section*); ElfShdr* elfshalloc(Section*); ElfShdr* elfshname(char*); ElfShdr* elfshreloc(Section*); void elfsetstring(char*, int); void elfaddverneed(LSym*); void elfemitreloc(void); void shsym(ElfShdr*, LSym*); void phsh(ElfPhdr*, ElfShdr*); void doelf(void); void elfsetupplt(void); void dwarfaddshstrings(LSym*); void dwarfaddelfsectionsyms(void); void dwarfaddelfheaders(void); void asmbelf(vlong symo); void asmbelfsetup(void); extern char linuxdynld[]; extern char freebsddynld[]; extern char netbsddynld[]; extern char openbsddynld[]; extern char dragonflydynld[]; extern char solarisdynld[]; int elfreloc1(Reloc*, vlong sectoff); void putelfsectionsyms(void); EXTERN int elfstrsize; EXTERN char* elfstrdat; EXTERN int buildinfolen; /* * Total amount of space to reserve at the start of the file * for Header, PHeaders, SHeaders, and interp. * May waste some. * On FreeBSD, cannot be larger than a page. */ #define ELFRESERVE 3072 go/src/cmd/ld/go.c0100644000000000000000000004167212412656734014210 0ustar00rootroot00000000000000// Copyright 2009 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. // go-specific code shared across loaders (5l, 6l, 8l). #include "l.h" #include "../ld/lib.h" // accumulate all type information from .6 files. // check for inconsistencies. // TODO: // generate debugging section in binary. // once the dust settles, try to move some code to // libmach, so that other linkers and ar can share. /* * package import data */ typedef struct Import Import; struct Import { Import *hash; // next in hash table char *prefix; // "type", "var", "func", "const" char *name; char *def; char *file; }; enum { NIHASH = 1024 }; static Import *ihash[NIHASH]; static int nimport; static void imported(char *pkg, char *import); static int hashstr(char *name) { uint32 h; char *cp; h = 0; for(cp = name; *cp; h += *cp++) h *= 1119; h &= 0xffffff; return h; } static Import * ilookup(char *name) { int h; Import *x; h = hashstr(name) % NIHASH; for(x=ihash[h]; x; x=x->hash) if(x->name[0] == name[0] && strcmp(x->name, name) == 0) return x; x = mal(sizeof *x); x->name = estrdup(name); x->hash = ihash[h]; ihash[h] = x; nimport++; return x; } static void loadpkgdata(char*, char*, char*, int); static void loadcgo(char*, char*, char*, int); static int parsemethod(char**, char*, char**); static int parsepkgdata(char*, char*, char**, char*, char**, char**, char**); void ldpkg(Biobuf *f, char *pkg, int64 len, char *filename, int whence) { char *data, *p0, *p1, *name; if(debug['g']) return; if((int)len != len) { fprint(2, "%s: too much pkg data in %s\n", argv0, filename); if(debug['u']) errorexit(); return; } data = mal(len+1); if(Bread(f, data, len) != len) { fprint(2, "%s: short pkg read %s\n", argv0, filename); if(debug['u']) errorexit(); return; } data[len] = '\0'; // first \n$$ marks beginning of exports - skip rest of line p0 = strstr(data, "\n$$"); if(p0 == nil) { if(debug['u'] && whence != ArchiveObj) { fprint(2, "%s: cannot find export data in %s\n", argv0, filename); errorexit(); } return; } p0 += 3; while(*p0 != '\n' && *p0 != '\0') p0++; // second marks end of exports / beginning of local data p1 = strstr(p0, "\n$$"); if(p1 == nil) { fprint(2, "%s: cannot find end of exports in %s\n", argv0, filename); if(debug['u']) errorexit(); return; } while(p0 < p1 && (*p0 == ' ' || *p0 == '\t' || *p0 == '\n')) p0++; if(p0 < p1) { if(strncmp(p0, "package ", 8) != 0) { fprint(2, "%s: bad package section in %s - %s\n", argv0, filename, p0); if(debug['u']) errorexit(); return; } p0 += 8; while(p0 < p1 && (*p0 == ' ' || *p0 == '\t' || *p0 == '\n')) p0++; name = p0; while(p0 < p1 && *p0 != ' ' && *p0 != '\t' && *p0 != '\n') p0++; if(debug['u'] && whence != ArchiveObj && (p0+6 > p1 || memcmp(p0, " safe\n", 6) != 0)) { fprint(2, "%s: load of unsafe package %s\n", argv0, filename); nerrors++; errorexit(); } if(p0 < p1) { if(*p0 == '\n') *p0++ = '\0'; else { *p0++ = '\0'; while(p0 < p1 && *p0++ != '\n') ; } } if(strcmp(pkg, "main") == 0 && strcmp(name, "main") != 0) { fprint(2, "%s: %s: not package main (package %s)\n", argv0, filename, name); nerrors++; errorexit(); } loadpkgdata(filename, pkg, p0, p1 - p0); } // __.PKGDEF has no cgo section - those are in the C compiler-generated object files. if(whence == Pkgdef) return; // look for cgo section p0 = strstr(p1, "\n$$ // cgo"); if(p0 != nil) { p0 = strchr(p0+1, '\n'); if(p0 == nil) { fprint(2, "%s: found $$ // cgo but no newline in %s\n", argv0, filename); if(debug['u']) errorexit(); return; } p1 = strstr(p0, "\n$$"); if(p1 == nil) p1 = strstr(p0, "\n!\n"); if(p1 == nil) { fprint(2, "%s: cannot find end of // cgo section in %s\n", argv0, filename); if(debug['u']) errorexit(); return; } loadcgo(filename, pkg, p0 + 1, p1 - (p0+1)); } } static void loadpkgdata(char *file, char *pkg, char *data, int len) { char *p, *ep, *prefix, *name, *def; Import *x; file = estrdup(file); p = data; ep = data + len; while(parsepkgdata(file, pkg, &p, ep, &prefix, &name, &def) > 0) { x = ilookup(name); if(x->prefix == nil) { x->prefix = prefix; x->def = estrdup(def); x->file = file; } else if(strcmp(x->prefix, prefix) != 0) { fprint(2, "%s: conflicting definitions for %s\n", argv0, name); fprint(2, "%s:\t%s %s ...\n", x->file, x->prefix, name); fprint(2, "%s:\t%s %s ...\n", file, prefix, name); nerrors++; } else if(strcmp(x->def, def) != 0) { fprint(2, "%s: conflicting definitions for %s\n", argv0, name); fprint(2, "%s:\t%s %s %s\n", x->file, x->prefix, name, x->def); fprint(2, "%s:\t%s %s %s\n", file, prefix, name, def); nerrors++; } free(name); free(def); } free(file); } static int parsepkgdata(char *file, char *pkg, char **pp, char *ep, char **prefixp, char **namep, char **defp) { char *p, *prefix, *name, *def, *edef, *meth; int n, inquote; // skip white space p = *pp; loop: while(p < ep && (*p == ' ' || *p == '\t' || *p == '\n')) p++; if(p == ep || strncmp(p, "$$\n", 3) == 0) return 0; // prefix: (var|type|func|const) prefix = p; if(p + 7 > ep) return -1; if(strncmp(p, "var ", 4) == 0) p += 4; else if(strncmp(p, "type ", 5) == 0) p += 5; else if(strncmp(p, "func ", 5) == 0) p += 5; else if(strncmp(p, "const ", 6) == 0) p += 6; else if(strncmp(p, "import ", 7) == 0) { p += 7; while(p < ep && *p != ' ') p++; p++; name = p; while(p < ep && *p != '\n') p++; if(p >= ep) { fprint(2, "%s: %s: confused in import line\n", argv0, file); nerrors++; return -1; } *p++ = '\0'; imported(pkg, name); goto loop; } else { fprint(2, "%s: %s: confused in pkg data near <<%.40s>>\n", argv0, file, prefix); nerrors++; return -1; } p[-1] = '\0'; // name: a.b followed by space name = p; inquote = 0; while(p < ep) { if (*p == ' ' && !inquote) break; if(*p == '\\') p++; else if(*p == '"') inquote = !inquote; p++; } if(p >= ep) return -1; *p++ = '\0'; // def: free form to new line def = p; while(p < ep && *p != '\n') p++; if(p >= ep) return -1; edef = p; *p++ = '\0'; // include methods on successive lines in def of named type while(parsemethod(&p, ep, &meth) > 0) { *edef++ = '\n'; // overwrites '\0' if(edef+1 > meth) { // We want to indent methods with a single \t. // 6g puts at least one char of indent before all method defs, // so there will be room for the \t. If the method def wasn't // indented we could do something more complicated, // but for now just diagnose the problem and assume // 6g will keep indenting for us. fprint(2, "%s: %s: expected methods to be indented %p %p %.10s\n", argv0, file, edef, meth, meth); nerrors++; return -1; } *edef++ = '\t'; n = strlen(meth); memmove(edef, meth, n); edef += n; } name = expandpkg(name, pkg); def = expandpkg(def, pkg); // done *pp = p; *prefixp = prefix; *namep = name; *defp = def; return 1; } static int parsemethod(char **pp, char *ep, char **methp) { char *p; // skip white space p = *pp; while(p < ep && (*p == ' ' || *p == '\t')) p++; if(p == ep) return 0; // might be a comment about the method if(p + 2 < ep && strncmp(p, "//", 2) == 0) goto useline; // if it says "func (", it's a method if(p + 6 < ep && strncmp(p, "func (", 6) == 0) goto useline; return 0; useline: // definition to end of line *methp = p; while(p < ep && *p != '\n') p++; if(p >= ep) { fprint(2, "%s: lost end of line in method definition\n", argv0); *pp = ep; return -1; } *p++ = '\0'; *pp = p; return 1; } static void loadcgo(char *file, char *pkg, char *p, int n) { char *pend, *next, *p0, *q; char *f[10], *local, *remote, *lib; int nf; LSym *s; USED(file); pend = p + n; p0 = nil; for(; p 4) goto err; local = f[1]; remote = local; if(nf > 2) remote = f[2]; lib = ""; if(nf > 3) lib = f[3]; if(debug['d']) { fprint(2, "%s: %s: cannot use dynamic imports with -d flag\n", argv0, file); nerrors++; return; } if(strcmp(local, "_") == 0 && strcmp(remote, "_") == 0) { // allow #pragma dynimport _ _ "foo.so" // to force a link of foo.so. havedynamic = 1; adddynlib(lib); continue; } local = expandpkg(local, pkg); q = strchr(remote, '#'); if(q) *q++ = '\0'; s = linklookup(ctxt, local, 0); if(local != f[1]) free(local); if(s->type == 0 || s->type == SXREF || s->type == SHOSTOBJ) { s->dynimplib = lib; s->extname = remote; s->dynimpvers = q; if(s->type != SHOSTOBJ) s->type = SDYNIMPORT; havedynamic = 1; } continue; } if(strcmp(f[0], "cgo_import_static") == 0) { if(nf != 2) goto err; local = f[1]; s = linklookup(ctxt, local, 0); s->type = SHOSTOBJ; s->size = 0; continue; } if(strcmp(f[0], "cgo_export_static") == 0 || strcmp(f[0], "cgo_export_dynamic") == 0) { // TODO: Remove once we know Windows is okay. if(strcmp(f[0], "cgo_export_static") == 0 && HEADTYPE == Hwindows) continue; if(nf < 2 || nf > 3) goto err; local = f[1]; if(nf > 2) remote = f[2]; else remote = local; local = expandpkg(local, pkg); s = linklookup(ctxt, local, 0); if(flag_shared && s == linklookup(ctxt, "main", 0)) continue; // export overrides import, for openbsd/cgo. // see issue 4878. if(s->dynimplib != nil) { s->dynimplib = nil; s->extname = nil; s->dynimpvers = nil; s->type = 0; } if(s->cgoexport == 0) { s->extname = remote; if(ndynexp%32 == 0) dynexp = erealloc(dynexp, (ndynexp+32)*sizeof dynexp[0]); dynexp[ndynexp++] = s; } else if(strcmp(s->extname, remote) != 0) { fprint(2, "%s: conflicting cgo_export directives: %s as %s and %s\n", argv0, s->name, s->extname, remote); nerrors++; return; } if(strcmp(f[0], "cgo_export_static") == 0) s->cgoexport |= CgoExportStatic; else s->cgoexport |= CgoExportDynamic; if(local != f[1]) free(local); continue; } if(strcmp(f[0], "cgo_dynamic_linker") == 0) { if(nf != 2) goto err; if(!debug['I']) { // not overridden by command line if(interpreter != nil && strcmp(interpreter, f[1]) != 0) { fprint(2, "%s: conflict dynlinker: %s and %s\n", argv0, interpreter, f[1]); nerrors++; return; } free(interpreter); interpreter = estrdup(f[1]); } continue; } if(strcmp(f[0], "cgo_ldflag") == 0) { if(nf != 2) goto err; if(nldflag%32 == 0) ldflag = erealloc(ldflag, (nldflag+32)*sizeof ldflag[0]); ldflag[nldflag++] = estrdup(f[1]); continue; } } free(p0); return; err: fprint(2, "%s: %s: invalid dynimport line: %s\n", argv0, file, p0); nerrors++; } static LSym *markq; static LSym *emarkq; static void mark1(LSym *s, LSym *parent) { if(s == S || s->reachable) return; if(strncmp(s->name, "go.weak.", 8) == 0) return; s->reachable = 1; s->reachparent = parent; if(markq == nil) markq = s; else emarkq->queue = s; emarkq = s; } void mark(LSym *s) { mark1(s, nil); } static void markflood(void) { Auto *a; LSym *s; int i; for(s=markq; s!=S; s=s->queue) { if(s->type == STEXT) { if(debug['v'] > 1) Bprint(&bso, "marktext %s\n", s->name); for(a=s->autom; a; a=a->link) mark1(a->gotype, s); } for(i=0; inr; i++) mark1(s->r[i].sym, s); if(s->pcln) { for(i=0; ipcln->nfuncdata; i++) mark1(s->pcln->funcdata[i], s); } mark1(s->gotype, s); mark1(s->sub, s); mark1(s->outer, s); } } static char* markextra[] = { "runtime.morestack", "runtime.morestackx", "runtime.morestack00", "runtime.morestack10", "runtime.morestack01", "runtime.morestack11", "runtime.morestack8", "runtime.morestack16", "runtime.morestack24", "runtime.morestack32", "runtime.morestack40", "runtime.morestack48", // on arm, lock in the div/mod helpers too "_div", "_divu", "_mod", "_modu", }; void deadcode(void) { int i; LSym *s, *last, *p; Fmt fmt; if(debug['v']) Bprint(&bso, "%5.2f deadcode\n", cputime()); mark(linklookup(ctxt, INITENTRY, 0)); for(i=0; iallsym; s != S; s = s->allsym) { if(strncmp(s->name, "go.typelink.", 12) == 0) s->reachable = s->nr==1 && s->r[0].sym->reachable; } // remove dead text but keep file information (z symbols). last = nil; for(s = ctxt->textp; s != nil; s = s->next) { if(!s->reachable) continue; // NOTE: Removing s from old textp and adding to new, shorter textp. if(last == nil) ctxt->textp = s; else last->next = s; last = s; } if(last == nil) ctxt->textp = nil; else last->next = nil; for(s = ctxt->allsym; s != S; s = s->allsym) if(strncmp(s->name, "go.weak.", 8) == 0) { s->special = 1; // do not lay out in data segment s->reachable = 1; s->hide = 1; } // record field tracking references fmtstrinit(&fmt); for(s = ctxt->allsym; s != S; s = s->allsym) { if(strncmp(s->name, "go.track.", 9) == 0) { s->special = 1; // do not lay out in data segment s->hide = 1; if(s->reachable) { fmtprint(&fmt, "%s", s->name+9); for(p=s->reachparent; p; p=p->reachparent) fmtprint(&fmt, "\t%s", p->name); fmtprint(&fmt, "\n"); } s->type = SCONST; s->value = 0; } } if(tracksym == nil) return; s = linklookup(ctxt, tracksym, 0); if(!s->reachable) return; addstrdata(tracksym, fmtstrflush(&fmt)); } void doweak(void) { LSym *s, *t; // resolve weak references only if // target symbol will be in binary anyway. for(s = ctxt->allsym; s != S; s = s->allsym) { if(strncmp(s->name, "go.weak.", 8) == 0) { t = linkrlookup(ctxt, s->name+8, s->version); if(t && t->type != 0 && t->reachable) { s->value = t->value; s->type = t->type; s->outer = t; } else { s->type = SCONST; s->value = 0; } continue; } } } void addexport(void) { int i; if(HEADTYPE == Hdarwin) return; for(i=0; iargs, char*); if(s == nil) return fmtstrcpy(fp, ""); se = s + strlen(s); // NOTE: Keep in sync with ../gc/go.c:/^Zconv. while(s < se) { n = chartorune(&r, s); s += n; switch(r) { case Runeerror: if(n == 1) { fmtprint(fp, "\\x%02x", (uchar)*(s-1)); break; } // fall through default: if(r < ' ') { fmtprint(fp, "\\x%02x", r); break; } fmtrune(fp, r); break; case '\t': fmtstrcpy(fp, "\\t"); break; case '\n': fmtstrcpy(fp, "\\n"); break; case '\"': case '\\': fmtrune(fp, '\\'); fmtrune(fp, r); break; case 0xFEFF: // BOM, basically disallowed in source code fmtstrcpy(fp, "\\uFEFF"); break; } } return 0; } typedef struct Pkg Pkg; struct Pkg { uchar mark; uchar checked; Pkg *next; char *path; Pkg **impby; int nimpby; int mimpby; Pkg *all; }; static Pkg *phash[1024]; static Pkg *pkgall; static Pkg* getpkg(char *path) { Pkg *p; int h; h = hashstr(path) % nelem(phash); for(p=phash[h]; p; p=p->next) if(strcmp(p->path, path) == 0) return p; p = mal(sizeof *p); p->path = estrdup(path); p->next = phash[h]; phash[h] = p; p->all = pkgall; pkgall = p; return p; } static void imported(char *pkg, char *import) { Pkg *p, *i; // everyone imports runtime, even runtime. if(strcmp(import, "\"runtime\"") == 0) return; pkg = smprint("\"%Z\"", pkg); // turn pkg path into quoted form, freed below p = getpkg(pkg); i = getpkg(import); if(i->nimpby >= i->mimpby) { i->mimpby *= 2; if(i->mimpby == 0) i->mimpby = 16; i->impby = erealloc(i->impby, i->mimpby*sizeof i->impby[0]); } i->impby[i->nimpby++] = p; free(pkg); } static Pkg* cycle(Pkg *p) { int i; Pkg *bad; if(p->checked) return 0; if(p->mark) { nerrors++; print("import cycle:\n"); print("\t%s\n", p->path); return p; } p->mark = 1; for(i=0; inimpby; i++) { if((bad = cycle(p->impby[i])) != nil) { p->mark = 0; p->checked = 1; print("\timports %s\n", p->path); if(bad == p) return nil; return bad; } } p->checked = 1; p->mark = 0; return 0; } void importcycles(void) { Pkg *p; for(p=pkgall; p; p=p->all) cycle(p); } void setlinkmode(char *arg) { if(strcmp(arg, "internal") == 0) linkmode = LinkInternal; else if(strcmp(arg, "external") == 0) linkmode = LinkExternal; else if(strcmp(arg, "auto") == 0) linkmode = LinkAuto; else { fprint(2, "unknown link mode -linkmode %s\n", arg); errorexit(); } } go/src/cmd/ld/ldelf.c0100644000000000000000000005106412412656737014670 0ustar00rootroot00000000000000/* Derived from Plan 9 from User Space's src/libmach/elf.h, elf.c http://code.swtch.com/plan9port/src/tip/src/libmach/ Copyright © 2004 Russ Cox. Portions Copyright © 2008-2010 Google Inc. Portions Copyright © 2010 The Go Authors. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "l.h" #include "lib.h" #include "../ld/elf.h" enum { ElfClassNone = 0, ElfClass32, ElfClass64, ElfDataNone = 0, ElfDataLsb, ElfDataMsb, ElfTypeNone = 0, ElfTypeRelocatable, ElfTypeExecutable, ElfTypeSharedObject, ElfTypeCore, /* 0xFF00 - 0xFFFF reserved for processor-specific types */ ElfMachNone = 0, ElfMach32100, /* AT&T WE 32100 */ ElfMachSparc, /* SPARC */ ElfMach386, /* Intel 80386 */ ElfMach68000, /* Motorola 68000 */ ElfMach88000, /* Motorola 88000 */ ElfMach486, /* Intel 80486, no longer used */ ElfMach860, /* Intel 80860 */ ElfMachMips, /* MIPS RS3000 */ ElfMachS370, /* IBM System/370 */ ElfMachMipsLe, /* MIPS RS3000 LE */ ElfMachParisc = 15, /* HP PA RISC */ ElfMachVpp500 = 17, /* Fujitsu VPP500 */ ElfMachSparc32Plus, /* SPARC V8+ */ ElfMach960, /* Intel 80960 */ ElfMachPower, /* PowerPC */ ElfMachPower64, /* PowerPC 64 */ ElfMachS390, /* IBM System/390 */ ElfMachV800 = 36, /* NEC V800 */ ElfMachFr20, /* Fujitsu FR20 */ ElfMachRh32, /* TRW RH-32 */ ElfMachRce, /* Motorola RCE */ ElfMachArm, /* ARM */ ElfMachAlpha, /* Digital Alpha */ ElfMachSH, /* Hitachi SH */ ElfMachSparc9, /* SPARC V9 */ ElfMachAmd64 = 62, /* and the list goes on... */ ElfAbiNone = 0, ElfAbiSystemV = 0, /* [sic] */ ElfAbiHPUX, ElfAbiNetBSD, ElfAbiLinux, ElfAbiSolaris = 6, ElfAbiAix, ElfAbiIrix, ElfAbiFreeBSD, ElfAbiTru64, ElfAbiModesto, ElfAbiOpenBSD, ElfAbiARM = 97, ElfAbiEmbedded = 255, /* some of sections 0xFF00 - 0xFFFF reserved for various things */ ElfSectNone = 0, ElfSectProgbits, ElfSectSymtab, ElfSectStrtab, ElfSectRela, ElfSectHash, ElfSectDynamic, ElfSectNote, ElfSectNobits, ElfSectRel, ElfSectShlib, ElfSectDynsym, ElfSectFlagWrite = 0x1, ElfSectFlagAlloc = 0x2, ElfSectFlagExec = 0x4, /* 0xF0000000 are reserved for processor specific */ ElfSymBindLocal = 0, ElfSymBindGlobal, ElfSymBindWeak, /* 13-15 reserved */ ElfSymTypeNone = 0, ElfSymTypeObject, ElfSymTypeFunc, ElfSymTypeSection, ElfSymTypeFile, /* 13-15 reserved */ ElfSymShnNone = 0, ElfSymShnAbs = 0xFFF1, ElfSymShnCommon = 0xFFF2, /* 0xFF00-0xFF1F reserved for processors */ /* 0xFF20-0xFF3F reserved for operating systems */ ElfProgNone = 0, ElfProgLoad, ElfProgDynamic, ElfProgInterp, ElfProgNote, ElfProgShlib, ElfProgPhdr, ElfProgFlagExec = 0x1, ElfProgFlagWrite = 0x2, ElfProgFlagRead = 0x4, ElfNotePrStatus = 1, ElfNotePrFpreg = 2, ElfNotePrPsinfo = 3, ElfNotePrTaskstruct = 4, ElfNotePrAuxv = 6, ElfNotePrXfpreg = 0x46e62b7f /* for gdb/386 */ }; typedef struct ElfHdrBytes ElfHdrBytes; typedef struct ElfSectBytes ElfSectBytes; typedef struct ElfProgBytes ElfProgBytes; typedef struct ElfSymBytes ElfSymBytes; typedef struct ElfHdrBytes64 ElfHdrBytes64; typedef struct ElfSectBytes64 ElfSectBytes64; typedef struct ElfProgBytes64 ElfProgBytes64; typedef struct ElfSymBytes64 ElfSymBytes64; struct ElfHdrBytes { uchar ident[16]; uchar type[2]; uchar machine[2]; uchar version[4]; uchar entry[4]; uchar phoff[4]; uchar shoff[4]; uchar flags[4]; uchar ehsize[2]; uchar phentsize[2]; uchar phnum[2]; uchar shentsize[2]; uchar shnum[2]; uchar shstrndx[2]; }; struct ElfHdrBytes64 { uchar ident[16]; uchar type[2]; uchar machine[2]; uchar version[4]; uchar entry[8]; uchar phoff[8]; uchar shoff[8]; uchar flags[4]; uchar ehsize[2]; uchar phentsize[2]; uchar phnum[2]; uchar shentsize[2]; uchar shnum[2]; uchar shstrndx[2]; }; struct ElfSectBytes { uchar name[4]; uchar type[4]; uchar flags[4]; uchar addr[4]; uchar off[4]; uchar size[4]; uchar link[4]; uchar info[4]; uchar align[4]; uchar entsize[4]; }; struct ElfSectBytes64 { uchar name[4]; uchar type[4]; uchar flags[8]; uchar addr[8]; uchar off[8]; uchar size[8]; uchar link[4]; uchar info[4]; uchar align[8]; uchar entsize[8]; }; struct ElfSymBytes { uchar name[4]; uchar value[4]; uchar size[4]; uchar info; /* top4: bind, bottom4: type */ uchar other; uchar shndx[2]; }; struct ElfSymBytes64 { uchar name[4]; uchar info; /* top4: bind, bottom4: type */ uchar other; uchar shndx[2]; uchar value[8]; uchar size[8]; }; typedef struct ElfSect ElfSect; typedef struct ElfObj ElfObj; typedef struct ElfSym ElfSym; struct ElfSect { char *name; uint32 type; uint64 flags; uint64 addr; uint64 off; uint64 size; uint32 link; uint32 info; uint64 align; uint64 entsize; uchar *base; LSym *sym; }; struct ElfObj { Biobuf *f; int64 base; // offset in f where ELF begins int64 len; // length of ELF int is64; char *name; Endian *e; ElfSect *sect; uint nsect; char *shstrtab; int nsymtab; ElfSect *symtab; ElfSect *symstr; uint32 type; uint32 machine; uint32 version; uint64 entry; uint64 phoff; uint64 shoff; uint32 flags; uint32 ehsize; uint32 phentsize; uint32 phnum; uint32 shentsize; uint32 shnum; uint32 shstrndx; }; struct ElfSym { char* name; uint64 value; uint64 size; uchar bind; uchar type; uchar other; uint16 shndx; LSym* sym; }; uchar ElfMagic[4] = { 0x7F, 'E', 'L', 'F' }; static ElfSect* section(ElfObj*, char*); static int map(ElfObj*, ElfSect*); static int readsym(ElfObj*, int i, ElfSym*, int); static int reltype(char*, int, uchar*); int valuecmp(LSym *a, LSym *b) { if(a->value < b->value) return -1; if(a->value > b->value) return +1; return 0; } void ldelf(Biobuf *f, char *pkg, int64 len, char *pn) { int32 base; uint64 add, info; char *name; int i, j, rela, is64, n; uchar hdrbuf[64]; uchar *p; ElfHdrBytes *hdr; ElfObj *obj; ElfSect *sect, *rsect; ElfSym sym; Endian *e; Reloc *r, *rp; LSym *s; LSym **symbols; symbols = nil; if(debug['v']) Bprint(&bso, "%5.2f ldelf %s\n", cputime(), pn); ctxt->version++; base = Boffset(f); if(Bread(f, hdrbuf, sizeof hdrbuf) != sizeof hdrbuf) goto bad; hdr = (ElfHdrBytes*)hdrbuf; if(memcmp(hdr->ident, ElfMagic, 4) != 0) goto bad; switch(hdr->ident[5]) { case ElfDataLsb: e = ≤ break; case ElfDataMsb: e = &be; break; default: goto bad; } // read header obj = mal(sizeof *obj); obj->e = e; obj->f = f; obj->base = base; obj->len = len; obj->name = pn; is64 = 0; if(hdr->ident[4] == ElfClass64) { ElfHdrBytes64* hdr; is64 = 1; hdr = (ElfHdrBytes64*)hdrbuf; obj->type = e->e16(hdr->type); obj->machine = e->e16(hdr->machine); obj->version = e->e32(hdr->version); obj->phoff = e->e64(hdr->phoff); obj->shoff = e->e64(hdr->shoff); obj->flags = e->e32(hdr->flags); obj->ehsize = e->e16(hdr->ehsize); obj->phentsize = e->e16(hdr->phentsize); obj->phnum = e->e16(hdr->phnum); obj->shentsize = e->e16(hdr->shentsize); obj->shnum = e->e16(hdr->shnum); obj->shstrndx = e->e16(hdr->shstrndx); } else { obj->type = e->e16(hdr->type); obj->machine = e->e16(hdr->machine); obj->version = e->e32(hdr->version); obj->entry = e->e32(hdr->entry); obj->phoff = e->e32(hdr->phoff); obj->shoff = e->e32(hdr->shoff); obj->flags = e->e32(hdr->flags); obj->ehsize = e->e16(hdr->ehsize); obj->phentsize = e->e16(hdr->phentsize); obj->phnum = e->e16(hdr->phnum); obj->shentsize = e->e16(hdr->shentsize); obj->shnum = e->e16(hdr->shnum); obj->shstrndx = e->e16(hdr->shstrndx); } obj->is64 = is64; if(hdr->ident[6] != obj->version) goto bad; if(e->e16(hdr->type) != ElfTypeRelocatable) { diag("%s: elf but not elf relocatable object", pn); return; } switch(thechar) { default: diag("%s: elf %s unimplemented", pn, thestring); return; case '5': if(e != &le || obj->machine != ElfMachArm || hdr->ident[4] != ElfClass32) { diag("%s: elf object but not arm", pn); return; } break; case '6': if(e != &le || obj->machine != ElfMachAmd64 || hdr->ident[4] != ElfClass64) { diag("%s: elf object but not amd64", pn); return; } break; case '8': if(e != &le || obj->machine != ElfMach386 || hdr->ident[4] != ElfClass32) { diag("%s: elf object but not 386", pn); return; } break; } // load section list into memory. obj->sect = mal(obj->shnum*sizeof obj->sect[0]); obj->nsect = obj->shnum; for(i=0; insect; i++) { if(Bseek(f, base+obj->shoff+i*obj->shentsize, 0) < 0) goto bad; sect = &obj->sect[i]; if(is64) { ElfSectBytes64 b; werrstr("short read"); if(Bread(f, &b, sizeof b) != sizeof b) goto bad; sect->name = (char*)(uintptr)e->e32(b.name); sect->type = e->e32(b.type); sect->flags = e->e64(b.flags); sect->addr = e->e64(b.addr); sect->off = e->e64(b.off); sect->size = e->e64(b.size); sect->link = e->e32(b.link); sect->info = e->e32(b.info); sect->align = e->e64(b.align); sect->entsize = e->e64(b.entsize); } else { ElfSectBytes b; werrstr("short read"); if(Bread(f, &b, sizeof b) != sizeof b) goto bad; sect->name = (char*)(uintptr)e->e32(b.name); sect->type = e->e32(b.type); sect->flags = e->e32(b.flags); sect->addr = e->e32(b.addr); sect->off = e->e32(b.off); sect->size = e->e32(b.size); sect->link = e->e32(b.link); sect->info = e->e32(b.info); sect->align = e->e32(b.align); sect->entsize = e->e32(b.entsize); } } // read section string table and translate names if(obj->shstrndx >= obj->nsect) { werrstr("shstrndx out of range %d >= %d", obj->shstrndx, obj->nsect); goto bad; } sect = &obj->sect[obj->shstrndx]; if(map(obj, sect) < 0) goto bad; for(i=0; insect; i++) if(obj->sect[i].name != nil) obj->sect[i].name = (char*)sect->base + (uintptr)obj->sect[i].name; // load string table for symbols into memory. obj->symtab = section(obj, ".symtab"); if(obj->symtab == nil) { // our work is done here - no symbols means nothing can refer to this file return; } if(obj->symtab->link <= 0 || obj->symtab->link >= obj->nsect) { diag("%s: elf object has symbol table with invalid string table link", pn); return; } obj->symstr = &obj->sect[obj->symtab->link]; if(is64) obj->nsymtab = obj->symtab->size / sizeof(ElfSymBytes64); else obj->nsymtab = obj->symtab->size / sizeof(ElfSymBytes); if(map(obj, obj->symtab) < 0) goto bad; if(map(obj, obj->symstr) < 0) goto bad; // load text and data segments into memory. // they are not as small as the section lists, but we'll need // the memory anyway for the symbol images, so we might // as well use one large chunk. // create symbols for mapped sections for(i=0; insect; i++) { sect = &obj->sect[i]; if((sect->type != ElfSectProgbits && sect->type != ElfSectNobits) || !(sect->flags&ElfSectFlagAlloc)) continue; if(sect->type != ElfSectNobits && map(obj, sect) < 0) goto bad; name = smprint("%s(%s)", pkg, sect->name); s = linklookup(ctxt, name, ctxt->version); free(name); switch((int)sect->flags&(ElfSectFlagAlloc|ElfSectFlagWrite|ElfSectFlagExec)) { default: werrstr("unexpected flags for ELF section %s", sect->name); goto bad; case ElfSectFlagAlloc: s->type = SRODATA; break; case ElfSectFlagAlloc + ElfSectFlagWrite: s->type = SDATA; break; case ElfSectFlagAlloc + ElfSectFlagExec: s->type = STEXT; break; } if(sect->type == ElfSectProgbits) { s->p = sect->base; s->np = sect->size; } s->size = sect->size; s->align = sect->align; sect->sym = s; } // enter sub-symbols into symbol table. // symbol 0 is the null symbol. symbols = malloc(obj->nsymtab * sizeof(symbols[0])); if(symbols == nil) { diag("out of memory"); errorexit(); } for(i=1; insymtab; i++) { if(readsym(obj, i, &sym, 1) < 0) goto bad; symbols[i] = sym.sym; if(sym.type != ElfSymTypeFunc && sym.type != ElfSymTypeObject && sym.type != ElfSymTypeNone) continue; if(sym.shndx == ElfSymShnCommon) { s = sym.sym; if(s->size < sym.size) s->size = sym.size; if(s->type == 0 || s->type == SXREF) s->type = SBSS; continue; } if(sym.shndx >= obj->nsect || sym.shndx == 0) continue; // even when we pass needSym == 1 to readsym, it might still return nil to skip some unwanted symbols if(sym.sym == S) continue; sect = obj->sect+sym.shndx; if(sect->sym == nil) { diag("%s: sym#%d: ignoring %s in section %d (type %d)", pn, i, sym.name, sym.shndx, sym.type); continue; } s = sym.sym; if(s->outer != S) { if(s->dupok) continue; diag("%s: duplicate symbol reference: %s in both %s and %s", pn, s->name, s->outer->name, sect->sym->name); errorexit(); } s->sub = sect->sym->sub; sect->sym->sub = s; s->type = sect->sym->type | (s->type&~SMASK) | SSUB; if(!(s->cgoexport & CgoExportDynamic)) s->dynimplib = nil; // satisfy dynimport s->value = sym.value; s->size = sym.size; s->outer = sect->sym; if(sect->sym->type == STEXT) { if(s->external && !s->dupok) diag("%s: duplicate definition of %s", pn, s->name); s->external = 1; } } // Sort outer lists by address, adding to textp. // This keeps textp in increasing address order. for(i=0; insect; i++) { s = obj->sect[i].sym; if(s == S) continue; if(s->sub) s->sub = listsort(s->sub, valuecmp, offsetof(LSym, sub)); if(s->type == STEXT) { if(s->onlist) sysfatal("symbol %s listed multiple times", s->name); s->onlist = 1; if(ctxt->etextp) ctxt->etextp->next = s; else ctxt->textp = s; ctxt->etextp = s; for(s = s->sub; s != S; s = s->sub) { if(s->onlist) sysfatal("symbol %s listed multiple times", s->name); s->onlist = 1; ctxt->etextp->next = s; ctxt->etextp = s; } } } // load relocations for(i=0; insect; i++) { rsect = &obj->sect[i]; if(rsect->type != ElfSectRela && rsect->type != ElfSectRel) continue; if(rsect->info >= obj->nsect || obj->sect[rsect->info].base == nil) continue; sect = &obj->sect[rsect->info]; if(map(obj, rsect) < 0) goto bad; rela = rsect->type == ElfSectRela; n = rsect->size/(4+4*is64)/(2+rela); r = mal(n*sizeof r[0]); p = rsect->base; for(j=0; joff = e->e64(p); p += 8; info = e->e64(p); p += 8; if(rela) { add = e->e64(p); p += 8; } } else { // 32-bit rel/rela rp->off = e->e32(p); p += 4; info = e->e32(p); info = info>>8<<32 | (info&0xff); // convert to 64-bit info p += 4; if(rela) { add = e->e32(p); p += 4; } } if((info & 0xffffffff) == 0) { // skip R_*_NONE relocation j--; n--; continue; } if((info >> 32) == 0) { // absolute relocation, don't bother reading the null symbol rp->sym = S; } else { if(readsym(obj, info>>32, &sym, 0) < 0) goto bad; sym.sym = symbols[info>>32]; if(sym.sym == nil) { werrstr("%s#%d: reloc of invalid sym #%d %s shndx=%d type=%d", sect->sym->name, j, (int)(info>>32), sym.name, sym.shndx, sym.type); goto bad; } rp->sym = sym.sym; } rp->type = reltype(pn, (uint32)info, &rp->siz); if(rela) rp->add = add; else { // load addend from image if(rp->siz == 4) rp->add = e->e32(sect->base+rp->off); else if(rp->siz == 8) rp->add = e->e64(sect->base+rp->off); else diag("invalid rela size %d", rp->siz); } if(rp->siz == 4) rp->add = (int32)rp->add; //print("rel %s %d %d %s %#llx\n", sect->sym->name, rp->type, rp->siz, rp->sym->name, rp->add); } qsort(r, n, sizeof r[0], rbyoff); // just in case s = sect->sym; s->r = r; s->nr = n; } free(symbols); return; bad: diag("%s: malformed elf file: %r", pn); free(symbols); } static ElfSect* section(ElfObj *obj, char *name) { int i; for(i=0; insect; i++) if(obj->sect[i].name && name && strcmp(obj->sect[i].name, name) == 0) return &obj->sect[i]; return nil; } static int map(ElfObj *obj, ElfSect *sect) { if(sect->base != nil) return 0; if(sect->off+sect->size > obj->len) { werrstr("elf section past end of file"); return -1; } sect->base = mal(sect->size); werrstr("short read"); if(Bseek(obj->f, obj->base+sect->off, 0) < 0 || Bread(obj->f, sect->base, sect->size) != sect->size) return -1; return 0; } static int readsym(ElfObj *obj, int i, ElfSym *sym, int needSym) { LSym *s; if(i >= obj->nsymtab || i < 0) { werrstr("invalid elf symbol index"); return -1; } if(i == 0) { diag("readym: read null symbol!"); } if(obj->is64) { ElfSymBytes64 *b; b = (ElfSymBytes64*)(obj->symtab->base + i*sizeof *b); sym->name = (char*)obj->symstr->base + obj->e->e32(b->name); sym->value = obj->e->e64(b->value); sym->size = obj->e->e64(b->size); sym->shndx = obj->e->e16(b->shndx); sym->bind = b->info>>4; sym->type = b->info&0xf; sym->other = b->other; } else { ElfSymBytes *b; b = (ElfSymBytes*)(obj->symtab->base + i*sizeof *b); sym->name = (char*)obj->symstr->base + obj->e->e32(b->name); sym->value = obj->e->e32(b->value); sym->size = obj->e->e32(b->size); sym->shndx = obj->e->e16(b->shndx); sym->bind = b->info>>4; sym->type = b->info&0xf; sym->other = b->other; } s = nil; if(strcmp(sym->name, "_GLOBAL_OFFSET_TABLE_") == 0) sym->name = ".got"; switch(sym->type) { case ElfSymTypeSection: s = obj->sect[sym->shndx].sym; break; case ElfSymTypeObject: case ElfSymTypeFunc: case ElfSymTypeNone: switch(sym->bind) { case ElfSymBindGlobal: if(needSym) { s = linklookup(ctxt, sym->name, 0); // for global scoped hidden symbols we should insert it into // symbol hash table, but mark them as hidden. // __i686.get_pc_thunk.bx is allowed to be duplicated, to // workaround that we set dupok. // TODO(minux): correctly handle __i686.get_pc_thunk.bx without // set dupok generally. See http://codereview.appspot.com/5823055/ // comment #5 for details. if(s && sym->other == 2) { s->type |= SHIDDEN; s->dupok = 1; } } break; case ElfSymBindLocal: if(!(thechar == '5' && (strcmp(sym->name, "$a") == 0 || strcmp(sym->name, "$d") == 0))) // binutils for arm generate these mapping symbols, ignore these if(needSym) { // local names and hidden visiblity global names are unique // and should only reference by its index, not name, so we // don't bother to add them into hash table s = linknewsym(ctxt, sym->name, ctxt->version); s->type |= SHIDDEN; } break; case ElfSymBindWeak: if(needSym) { s = linknewsym(ctxt, sym->name, 0); if(sym->other == 2) s->type |= SHIDDEN; } break; default: werrstr("%s: invalid symbol binding %d", sym->name, sym->bind); return -1; } break; } if(s != nil && s->type == 0 && sym->type != ElfSymTypeSection) s->type = SXREF; sym->sym = s; return 0; } int rbyoff(const void *va, const void *vb) { Reloc *a, *b; a = (Reloc*)va; b = (Reloc*)vb; if(a->off < b->off) return -1; if(a->off > b->off) return +1; return 0; } #define R(x, y) ((x)|((y)<<24)) static int reltype(char *pn, int elftype, uchar *siz) { switch(R(thechar, elftype)) { default: diag("%s: unknown relocation type %d; compiled without -fpic?", pn, elftype); case R('5', R_ARM_ABS32): case R('5', R_ARM_GOT32): case R('5', R_ARM_PLT32): case R('5', R_ARM_GOTOFF): case R('5', R_ARM_GOTPC): case R('5', R_ARM_THM_PC22): case R('5', R_ARM_REL32): case R('5', R_ARM_CALL): case R('5', R_ARM_V4BX): case R('5', R_ARM_GOT_PREL): case R('5', R_ARM_PC24): case R('5', R_ARM_JUMP24): case R('6', R_X86_64_PC32): case R('6', R_X86_64_PLT32): case R('6', R_X86_64_GOTPCREL): case R('8', R_386_32): case R('8', R_386_PC32): case R('8', R_386_GOT32): case R('8', R_386_PLT32): case R('8', R_386_GOTOFF): case R('8', R_386_GOTPC): *siz = 4; break; case R('6', R_X86_64_64): *siz = 8; break; } return 256+elftype; } go/src/cmd/ld/ldmacho.c0100644000000000000000000005045712412656737015216 0ustar00rootroot00000000000000/* Derived from Plan 9 from User Space's src/libmach/elf.h, elf.c http://code.swtch.com/plan9port/src/tip/src/libmach/ Copyright © 2004 Russ Cox. Portions Copyright © 2008-2010 Google Inc. Portions Copyright © 2010 The Go Authors. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "l.h" #include "lib.h" enum { MACHO_FAKE_GOTPCREL = 100, // from macho.h N_EXT = 0x01, N_TYPE = 0x1e, N_STAB = 0xe0, }; typedef struct MachoObj MachoObj; typedef struct MachoCmd MachoCmd; typedef struct MachoSeg MachoSeg; typedef struct MachoSect MachoSect; typedef struct MachoRel MachoRel; typedef struct MachoSymtab MachoSymtab; typedef struct MachoSym MachoSym; typedef struct MachoDysymtab MachoDysymtab; enum { MachoCpuVax = 1, MachoCpu68000 = 6, MachoCpu386 = 7, MachoCpuAmd64 = 0x1000007, MachoCpuMips = 8, MachoCpu98000 = 10, MachoCpuHppa = 11, MachoCpuArm = 12, MachoCpu88000 = 13, MachoCpuSparc = 14, MachoCpu860 = 15, MachoCpuAlpha = 16, MachoCpuPower = 18, MachoCmdSegment = 1, MachoCmdSymtab = 2, MachoCmdSymseg = 3, MachoCmdThread = 4, MachoCmdDysymtab = 11, MachoCmdSegment64 = 25, MachoFileObject = 1, MachoFileExecutable = 2, MachoFileFvmlib = 3, MachoFileCore = 4, MachoFilePreload = 5, }; struct MachoSeg { char name[16+1]; uint64 vmaddr; uint64 vmsize; uint32 fileoff; uint32 filesz; uint32 maxprot; uint32 initprot; uint32 nsect; uint32 flags; MachoSect *sect; }; struct MachoSect { char name[16+1]; char segname[16+1]; uint64 addr; uint64 size; uint32 off; uint32 align; uint32 reloff; uint32 nreloc; uint32 flags; uint32 res1; uint32 res2; LSym *sym; MachoRel *rel; }; struct MachoRel { uint32 addr; uint32 symnum; uint8 pcrel; uint8 length; uint8 extrn; uint8 type; uint8 scattered; uint32 value; }; struct MachoSymtab { uint32 symoff; uint32 nsym; uint32 stroff; uint32 strsize; char *str; MachoSym *sym; }; struct MachoSym { char *name; uint8 type; uint8 sectnum; uint16 desc; char kind; uint64 value; LSym *sym; }; struct MachoDysymtab { uint32 ilocalsym; uint32 nlocalsym; uint32 iextdefsym; uint32 nextdefsym; uint32 iundefsym; uint32 nundefsym; uint32 tocoff; uint32 ntoc; uint32 modtaboff; uint32 nmodtab; uint32 extrefsymoff; uint32 nextrefsyms; uint32 indirectsymoff; uint32 nindirectsyms; uint32 extreloff; uint32 nextrel; uint32 locreloff; uint32 nlocrel; uint32 *indir; }; struct MachoCmd { int type; uint32 off; uint32 size; MachoSeg seg; MachoSymtab sym; MachoDysymtab dsym; }; struct MachoObj { Biobuf *f; int64 base; // off in f where Mach-O begins int64 len; // length of Mach-O int is64; char *name; Endian *e; uint cputype; uint subcputype; uint32 filetype; uint32 flags; MachoCmd *cmd; uint ncmd; }; static int unpackcmd(uchar *p, MachoObj *m, MachoCmd *c, uint type, uint sz) { uint32 (*e4)(uchar*); uint64 (*e8)(uchar*); MachoSect *s; int i; e4 = m->e->e32; e8 = m->e->e64; c->type = type; c->size = sz; switch(type){ default: return -1; case MachoCmdSegment: if(sz < 56) return -1; strecpy(c->seg.name, c->seg.name+sizeof c->seg.name, (char*)p+8); c->seg.vmaddr = e4(p+24); c->seg.vmsize = e4(p+28); c->seg.fileoff = e4(p+32); c->seg.filesz = e4(p+36); c->seg.maxprot = e4(p+40); c->seg.initprot = e4(p+44); c->seg.nsect = e4(p+48); c->seg.flags = e4(p+52); c->seg.sect = mal(c->seg.nsect * sizeof c->seg.sect[0]); if(sz < 56+c->seg.nsect*68) return -1; p += 56; for(i=0; iseg.nsect; i++) { s = &c->seg.sect[i]; strecpy(s->name, s->name+sizeof s->name, (char*)p+0); strecpy(s->segname, s->segname+sizeof s->segname, (char*)p+16); s->addr = e4(p+32); s->size = e4(p+36); s->off = e4(p+40); s->align = e4(p+44); s->reloff = e4(p+48); s->nreloc = e4(p+52); s->flags = e4(p+56); s->res1 = e4(p+60); s->res2 = e4(p+64); p += 68; } break; case MachoCmdSegment64: if(sz < 72) return -1; strecpy(c->seg.name, c->seg.name+sizeof c->seg.name, (char*)p+8); c->seg.vmaddr = e8(p+24); c->seg.vmsize = e8(p+32); c->seg.fileoff = e8(p+40); c->seg.filesz = e8(p+48); c->seg.maxprot = e4(p+56); c->seg.initprot = e4(p+60); c->seg.nsect = e4(p+64); c->seg.flags = e4(p+68); c->seg.sect = mal(c->seg.nsect * sizeof c->seg.sect[0]); if(sz < 72+c->seg.nsect*80) return -1; p += 72; for(i=0; iseg.nsect; i++) { s = &c->seg.sect[i]; strecpy(s->name, s->name+sizeof s->name, (char*)p+0); strecpy(s->segname, s->segname+sizeof s->segname, (char*)p+16); s->addr = e8(p+32); s->size = e8(p+40); s->off = e4(p+48); s->align = e4(p+52); s->reloff = e4(p+56); s->nreloc = e4(p+60); s->flags = e4(p+64); s->res1 = e4(p+68); s->res2 = e4(p+72); // p+76 is reserved p += 80; } break; case MachoCmdSymtab: if(sz < 24) return -1; c->sym.symoff = e4(p+8); c->sym.nsym = e4(p+12); c->sym.stroff = e4(p+16); c->sym.strsize = e4(p+20); break; case MachoCmdDysymtab: if(sz < 80) return -1; c->dsym.ilocalsym = e4(p+8); c->dsym.nlocalsym = e4(p+12); c->dsym.iextdefsym = e4(p+16); c->dsym.nextdefsym = e4(p+20); c->dsym.iundefsym = e4(p+24); c->dsym.nundefsym = e4(p+28); c->dsym.tocoff = e4(p+32); c->dsym.ntoc = e4(p+36); c->dsym.modtaboff = e4(p+40); c->dsym.nmodtab = e4(p+44); c->dsym.extrefsymoff = e4(p+48); c->dsym.nextrefsyms = e4(p+52); c->dsym.indirectsymoff = e4(p+56); c->dsym.nindirectsyms = e4(p+60); c->dsym.extreloff = e4(p+64); c->dsym.nextrel = e4(p+68); c->dsym.locreloff = e4(p+72); c->dsym.nlocrel = e4(p+76); break; } return 0; } static int macholoadrel(MachoObj *m, MachoSect *sect) { MachoRel *rel, *r; uchar *buf, *p; int i, n; uint32 v; if(sect->rel != nil || sect->nreloc == 0) return 0; rel = mal(sect->nreloc * sizeof r[0]); n = sect->nreloc * 8; buf = mal(n); if(Bseek(m->f, m->base + sect->reloff, 0) < 0 || Bread(m->f, buf, n) != n) return -1; for(i=0; inreloc; i++) { r = &rel[i]; p = buf+i*8; r->addr = m->e->e32(p); // TODO(rsc): Wrong interpretation for big-endian bitfields? if(r->addr & 0x80000000) { // scatterbrained relocation r->scattered = 1; v = r->addr >> 24; r->addr &= 0xFFFFFF; r->type = v & 0xF; v >>= 4; r->length = 1<<(v&3); v >>= 2; r->pcrel = v & 1; r->value = m->e->e32(p+4); } else { v = m->e->e32(p+4); r->symnum = v & 0xFFFFFF; v >>= 24; r->pcrel = v&1; v >>= 1; r->length = 1<<(v&3); v >>= 2; r->extrn = v&1; v >>= 1; r->type = v; } } sect->rel = rel; return 0; } static int macholoaddsym(MachoObj *m, MachoDysymtab *d) { uchar *p; int i, n; n = d->nindirectsyms; p = mal(n*4); if(Bseek(m->f, m->base + d->indirectsymoff, 0) < 0 || Bread(m->f, p, n*4) != n*4) return -1; d->indir = (uint32*)p; for(i=0; iindir[i] = m->e->e32(p+4*i); return 0; } static int macholoadsym(MachoObj *m, MachoSymtab *symtab) { char *strbuf; uchar *symbuf, *p; int i, n, symsize; MachoSym *sym, *s; uint32 v; if(symtab->sym != nil) return 0; strbuf = mal(symtab->strsize); if(Bseek(m->f, m->base + symtab->stroff, 0) < 0 || Bread(m->f, strbuf, symtab->strsize) != symtab->strsize) return -1; symsize = 12; if(m->is64) symsize = 16; n = symtab->nsym * symsize; symbuf = mal(n); if(Bseek(m->f, m->base + symtab->symoff, 0) < 0 || Bread(m->f, symbuf, n) != n) return -1; sym = mal(symtab->nsym * sizeof sym[0]); p = symbuf; for(i=0; insym; i++) { s = &sym[i]; v = m->e->e32(p); if(v >= symtab->strsize) return -1; s->name = strbuf + v; s->type = p[4]; s->sectnum = p[5]; s->desc = m->e->e16(p+6); if(m->is64) s->value = m->e->e64(p+8); else s->value = m->e->e32(p+8); p += symsize; } symtab->str = strbuf; symtab->sym = sym; return 0; } void ldmacho(Biobuf *f, char *pkg, int64 len, char *pn) { int i, j, is64; uint64 secaddr; uchar hdr[7*4], *cmdp; uchar tmp[4]; uchar *dat; ulong ncmd, cmdsz, ty, sz, off; MachoObj *m; Endian *e; int64 base; MachoSect *sect; MachoRel *rel; LSym *s, *s1, *outer; MachoCmd *c; MachoSymtab *symtab; MachoDysymtab *dsymtab; MachoSym *sym; Reloc *r, *rp; char *name; ctxt->version++; base = Boffset(f); if(Bread(f, hdr, sizeof hdr) != sizeof hdr) goto bad; if((be.e32(hdr)&~1) == 0xFEEDFACE){ e = &be; }else if((le.e32(hdr)&~1) == 0xFEEDFACE){ e = ≤ }else{ werrstr("bad magic - not mach-o file"); goto bad; } is64 = e->e32(hdr) == 0xFEEDFACF; ncmd = e->e32(hdr+4*4); cmdsz = e->e32(hdr+5*4); if(ncmd > 0x10000 || cmdsz >= 0x01000000){ werrstr("implausible mach-o header ncmd=%lud cmdsz=%lud", ncmd, cmdsz); goto bad; } if(is64) Bread(f, tmp, 4); // skip reserved word in header m = mal(sizeof(*m)+ncmd*sizeof(MachoCmd)+cmdsz); m->f = f; m->e = e; m->cputype = e->e32(hdr+1*4); m->subcputype = e->e32(hdr+2*4); m->filetype = e->e32(hdr+3*4); m->ncmd = ncmd; m->flags = e->e32(hdr+6*4); m->is64 = is64; m->base = base; m->len = len; m->name = pn; switch(thechar) { default: diag("%s: mach-o %s unimplemented", pn, thestring); return; case '6': if(e != &le || m->cputype != MachoCpuAmd64) { diag("%s: mach-o object but not amd64", pn); return; } break; case '8': if(e != &le || m->cputype != MachoCpu386) { diag("%s: mach-o object but not 386", pn); return; } break; } m->cmd = (MachoCmd*)(m+1); off = sizeof hdr; cmdp = (uchar*)(m->cmd+ncmd); if(Bread(f, cmdp, cmdsz) != cmdsz){ werrstr("reading cmds: %r"); goto bad; } // read and parse load commands c = nil; symtab = nil; dsymtab = nil; USED(dsymtab); for(i=0; ie32(cmdp); sz = e->e32(cmdp+4); m->cmd[i].off = off; unpackcmd(cmdp, m, &m->cmd[i], ty, sz); cmdp += sz; off += sz; if(ty == MachoCmdSymtab) { if(symtab != nil) { werrstr("multiple symbol tables"); goto bad; } symtab = &m->cmd[i].sym; macholoadsym(m, symtab); } if(ty == MachoCmdDysymtab) { dsymtab = &m->cmd[i].dsym; macholoaddsym(m, dsymtab); } if((is64 && ty == MachoCmdSegment64) || (!is64 && ty == MachoCmdSegment)) { if(c != nil) { werrstr("multiple load commands"); goto bad; } c = &m->cmd[i]; } } // load text and data segments into memory. // they are not as small as the load commands, but we'll need // the memory anyway for the symbol images, so we might // as well use one large chunk. if(c == nil) { werrstr("no load command"); goto bad; } if(symtab == nil) { // our work is done here - no symbols means nothing can refer to this file return; } if(c->seg.fileoff+c->seg.filesz >= len) { werrstr("load segment out of range"); goto bad; } dat = mal(c->seg.filesz); if(Bseek(f, m->base + c->seg.fileoff, 0) < 0 || Bread(f, dat, c->seg.filesz) != c->seg.filesz) { werrstr("cannot load object data: %r"); goto bad; } for(i=0; iseg.nsect; i++) { sect = &c->seg.sect[i]; if(strcmp(sect->segname, "__TEXT") != 0 && strcmp(sect->segname, "__DATA") != 0) continue; if(strcmp(sect->name, "__eh_frame") == 0) continue; name = smprint("%s(%s/%s)", pkg, sect->segname, sect->name); s = linklookup(ctxt, name, ctxt->version); if(s->type != 0) { werrstr("duplicate %s/%s", sect->segname, sect->name); goto bad; } free(name); s->np = sect->size; s->size = s->np; if((sect->flags & 0xff) == 1) // S_ZEROFILL s->p = mal(s->size); else { s->p = dat + sect->addr - c->seg.vmaddr; } if(strcmp(sect->segname, "__TEXT") == 0) { if(strcmp(sect->name, "__text") == 0) s->type = STEXT; else s->type = SRODATA; } else { if (strcmp(sect->name, "__bss") == 0) { s->type = SBSS; s->np = 0; } else s->type = SDATA; } sect->sym = s; } // enter sub-symbols into symbol table. // have to guess sizes from next symbol. for(i=0; insym; i++) { int v; sym = &symtab->sym[i]; if(sym->type&N_STAB) continue; // TODO: check sym->type against outer->type. name = sym->name; if(name[0] == '_' && name[1] != '\0') name++; v = 0; if(!(sym->type&N_EXT)) v = ctxt->version; s = linklookup(ctxt, name, v); if(!(sym->type&N_EXT)) s->dupok = 1; sym->sym = s; if(sym->sectnum == 0) // undefined continue; if(sym->sectnum > c->seg.nsect) { werrstr("reference to invalid section %d", sym->sectnum); goto bad; } sect = &c->seg.sect[sym->sectnum-1]; outer = sect->sym; if(outer == nil) { werrstr("reference to invalid section %s/%s", sect->segname, sect->name); continue; } if(s->outer != S) { if(s->dupok) continue; diag("%s: duplicate symbol reference: %s in both %s and %s", pn, s->name, s->outer->name, sect->sym->name); errorexit(); } s->type = outer->type | SSUB; s->sub = outer->sub; outer->sub = s; s->outer = outer; s->value = sym->value - sect->addr; if(!(s->cgoexport & CgoExportDynamic)) s->dynimplib = nil; // satisfy dynimport if(outer->type == STEXT) { if(s->external && !s->dupok) diag("%s: duplicate definition of %s", pn, s->name); s->external = 1; } sym->sym = s; } // Sort outer lists by address, adding to textp. // This keeps textp in increasing address order. for(i=0; iseg.nsect; i++) { sect = &c->seg.sect[i]; if((s = sect->sym) == S) continue; if(s->sub) { s->sub = listsort(s->sub, valuecmp, offsetof(LSym, sub)); // assign sizes, now that we know symbols in sorted order. for(s1 = s->sub; s1 != S; s1 = s1->sub) { if(s1->sub) s1->size = s1->sub->value - s1->value; else s1->size = s->value + s->size - s1->value; } } if(s->type == STEXT) { if(s->onlist) sysfatal("symbol %s listed multiple times", s->name); s->onlist = 1; if(ctxt->etextp) ctxt->etextp->next = s; else ctxt->textp = s; ctxt->etextp = s; for(s1 = s->sub; s1 != S; s1 = s1->sub) { if(s1->onlist) sysfatal("symbol %s listed multiple times", s1->name); s1->onlist = 1; ctxt->etextp->next = s1; ctxt->etextp = s1; } } } // load relocations for(i=0; iseg.nsect; i++) { sect = &c->seg.sect[i]; if((s = sect->sym) == S) continue; macholoadrel(m, sect); if(sect->rel == nil) continue; r = mal(sect->nreloc*sizeof r[0]); rp = r; rel = sect->rel; for(j=0; jnreloc; j++, rel++) { if(rel->scattered) { int k; MachoSect *ks; if(thechar != '8') { // mach-o only uses scattered relocation on 32-bit platforms diag("unexpected scattered relocation"); continue; } // on 386, rewrite scattered 4/1 relocation and some // scattered 2/1 relocation into the pseudo-pc-relative // reference that it is. // assume that the second in the pair is in this section // and use that as the pc-relative base. if(j+1 >= sect->nreloc) { werrstr("unsupported scattered relocation %d", (int)rel->type); goto bad; } if(!(rel+1)->scattered || (rel+1)->type != 1 || (rel->type != 4 && rel->type != 2) || (rel+1)->value < sect->addr || (rel+1)->value >= sect->addr+sect->size) { werrstr("unsupported scattered relocation %d/%d", (int)rel->type, (int)(rel+1)->type); goto bad; } rp->siz = rel->length; rp->off = rel->addr; // NOTE(rsc): I haven't worked out why (really when) // we should ignore the addend on a // scattered relocation, but it seems that the // common case is we ignore it. // It's likely that this is not strictly correct // and that the math should look something // like the non-scattered case below. rp->add = 0; // want to make it pc-relative aka relative to rp->off+4 // but the scatter asks for relative to off = (rel+1)->value - sect->addr. // adjust rp->add accordingly. rp->type = R_PCREL; rp->add += (rp->off+4) - ((rel+1)->value - sect->addr); // now consider the desired symbol. // find the section where it lives. for(k=0; kseg.nsect; k++) { ks = &c->seg.sect[k]; if(ks->addr <= rel->value && rel->value < ks->addr+ks->size) goto foundk; } werrstr("unsupported scattered relocation: invalid address %#ux", rel->addr); goto bad; foundk: if(ks->sym != S) { rp->sym = ks->sym; rp->add += rel->value - ks->addr; } else if(strcmp(ks->segname, "__IMPORT") == 0 && strcmp(ks->name, "__pointers") == 0) { // handle reference to __IMPORT/__pointers. // how much worse can this get? // why are we supporting 386 on the mac anyway? rp->type = 512 + MACHO_FAKE_GOTPCREL; // figure out which pointer this is a reference to. k = ks->res1 + (rel->value - ks->addr) / 4; // load indirect table for __pointers // fetch symbol number if(dsymtab == nil || k < 0 || k >= dsymtab->nindirectsyms || dsymtab->indir == nil) { werrstr("invalid scattered relocation: indirect symbol reference out of range"); goto bad; } k = dsymtab->indir[k]; if(k < 0 || k >= symtab->nsym) { werrstr("invalid scattered relocation: symbol reference out of range"); goto bad; } rp->sym = symtab->sym[k].sym; } else { werrstr("unsupported scattered relocation: reference to %s/%s", ks->segname, ks->name); goto bad; } rp++; // skip #1 of 2 rel; continue skips #2 of 2. rel++; j++; continue; } rp->siz = rel->length; rp->type = 512 + (rel->type<<1) + rel->pcrel; rp->off = rel->addr; // Handle X86_64_RELOC_SIGNED referencing a section (rel->extrn == 0). if (thechar == '6' && rel->extrn == 0 && rel->type == 1) { // Calculate the addend as the offset into the section. // // The rip-relative offset stored in the object file is encoded // as follows: // // movsd 0x00000360(%rip),%xmm0 // // To get the absolute address of the value this rip-relative address is pointing // to, we must add the address of the next instruction to it. This is done by // taking the address of the relocation and adding 4 to it (since the rip-relative // offset can at most be 32 bits long). To calculate the offset into the section the // relocation is referencing, we subtract the vaddr of the start of the referenced // section found in the original object file. // // [For future reference, see Darwin's /usr/include/mach-o/x86_64/reloc.h] secaddr = c->seg.sect[rel->symnum-1].addr; rp->add = (int32)e->e32(s->p+rp->off) + rp->off + 4 - secaddr; } else rp->add = (int32)e->e32(s->p+rp->off); // For i386 Mach-O PC-relative, the addend is written such that // it *is* the PC being subtracted. Use that to make // it match our version of PC-relative. if(rel->pcrel && thechar == '8') rp->add += rp->off+rp->siz; if(!rel->extrn) { if(rel->symnum < 1 || rel->symnum > c->seg.nsect) { werrstr("invalid relocation: section reference out of range %d vs %d", rel->symnum, c->seg.nsect); goto bad; } rp->sym = c->seg.sect[rel->symnum-1].sym; if(rp->sym == nil) { werrstr("invalid relocation: %s", c->seg.sect[rel->symnum-1].name); goto bad; } // References to symbols in other sections // include that information in the addend. // We only care about the delta from the // section base. if(thechar == '8') rp->add -= c->seg.sect[rel->symnum-1].addr; } else { if(rel->symnum >= symtab->nsym) { werrstr("invalid relocation: symbol reference out of range"); goto bad; } rp->sym = symtab->sym[rel->symnum].sym; } rp++; } qsort(r, rp - r, sizeof r[0], rbyoff); s->r = r; s->nr = rp - r; } return; bad: diag("%s: malformed mach-o file: %r", pn); } go/src/cmd/ld/ldpe.c0100644000000000000000000003202512412656737014522 0ustar00rootroot00000000000000// 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. #include "l.h" #include "lib.h" #include "../ld/pe.h" #define IMAGE_SCN_MEM_DISCARDABLE 0x2000000 #define IMAGE_SYM_UNDEFINED 0 #define IMAGE_SYM_ABSOLUTE (-1) #define IMAGE_SYM_DEBUG (-2) #define IMAGE_SYM_TYPE_NULL 0 #define IMAGE_SYM_TYPE_VOID 1 #define IMAGE_SYM_TYPE_CHAR 2 #define IMAGE_SYM_TYPE_SHORT 3 #define IMAGE_SYM_TYPE_INT 4 #define IMAGE_SYM_TYPE_LONG 5 #define IMAGE_SYM_TYPE_FLOAT 6 #define IMAGE_SYM_TYPE_DOUBLE 7 #define IMAGE_SYM_TYPE_STRUCT 8 #define IMAGE_SYM_TYPE_UNION 9 #define IMAGE_SYM_TYPE_ENUM 10 #define IMAGE_SYM_TYPE_MOE 11 #define IMAGE_SYM_TYPE_BYTE 12 #define IMAGE_SYM_TYPE_WORD 13 #define IMAGE_SYM_TYPE_UINT 14 #define IMAGE_SYM_TYPE_DWORD 15 #define IMAGE_SYM_TYPE_PCODE 32768 #define IMAGE_SYM_DTYPE_NULL 0 #define IMAGE_SYM_DTYPE_POINTER 0x10 #define IMAGE_SYM_DTYPE_FUNCTION 0x20 #define IMAGE_SYM_DTYPE_ARRAY 0x30 #define IMAGE_SYM_CLASS_END_OF_FUNCTION (-1) #define IMAGE_SYM_CLASS_NULL 0 #define IMAGE_SYM_CLASS_AUTOMATIC 1 #define IMAGE_SYM_CLASS_EXTERNAL 2 #define IMAGE_SYM_CLASS_STATIC 3 #define IMAGE_SYM_CLASS_REGISTER 4 #define IMAGE_SYM_CLASS_EXTERNAL_DEF 5 #define IMAGE_SYM_CLASS_LABEL 6 #define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7 #define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8 #define IMAGE_SYM_CLASS_ARGUMENT 9 #define IMAGE_SYM_CLASS_STRUCT_TAG 10 #define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11 #define IMAGE_SYM_CLASS_UNION_TAG 12 #define IMAGE_SYM_CLASS_TYPE_DEFINITION 13 #define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14 #define IMAGE_SYM_CLASS_ENUM_TAG 15 #define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16 #define IMAGE_SYM_CLASS_REGISTER_PARAM 17 #define IMAGE_SYM_CLASS_BIT_FIELD 18 #define IMAGE_SYM_CLASS_FAR_EXTERNAL 68 /* Not in PECOFF v8 spec */ #define IMAGE_SYM_CLASS_BLOCK 100 #define IMAGE_SYM_CLASS_FUNCTION 101 #define IMAGE_SYM_CLASS_END_OF_STRUCT 102 #define IMAGE_SYM_CLASS_FILE 103 #define IMAGE_SYM_CLASS_SECTION 104 #define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105 #define IMAGE_SYM_CLASS_CLR_TOKEN 107 #define IMAGE_REL_I386_ABSOLUTE 0x0000 #define IMAGE_REL_I386_DIR16 0x0001 #define IMAGE_REL_I386_REL16 0x0002 #define IMAGE_REL_I386_DIR32 0x0006 #define IMAGE_REL_I386_DIR32NB 0x0007 #define IMAGE_REL_I386_SEG12 0x0009 #define IMAGE_REL_I386_SECTION 0x000A #define IMAGE_REL_I386_SECREL 0x000B #define IMAGE_REL_I386_TOKEN 0x000C #define IMAGE_REL_I386_SECREL7 0x000D #define IMAGE_REL_I386_REL32 0x0014 #define IMAGE_REL_AMD64_ABSOLUTE 0x0000 #define IMAGE_REL_AMD64_ADDR64 0x0001 // R_X86_64_64 #define IMAGE_REL_AMD64_ADDR32 0x0002 // R_X86_64_PC32 #define IMAGE_REL_AMD64_ADDR32NB 0x0003 #define IMAGE_REL_AMD64_REL32 0x0004 #define IMAGE_REL_AMD64_REL32_1 0x0005 #define IMAGE_REL_AMD64_REL32_2 0x0006 #define IMAGE_REL_AMD64_REL32_3 0x0007 #define IMAGE_REL_AMD64_REL32_4 0x0008 #define IMAGE_REL_AMD64_REL32_5 0x0009 #define IMAGE_REL_AMD64_SECTION 0x000A #define IMAGE_REL_AMD64_SECREL 0x000B #define IMAGE_REL_AMD64_SECREL7 0x000C #define IMAGE_REL_AMD64_TOKEN 0x000D #define IMAGE_REL_AMD64_SREL32 0x000E #define IMAGE_REL_AMD64_PAIR 0x000F #define IMAGE_REL_AMD64_SSPAN32 0x0010 typedef struct PeSym PeSym; typedef struct PeSect PeSect; typedef struct PeObj PeObj; struct PeSym { char* name; uint32 value; uint16 sectnum; uint16 type; uint8 sclass; uint8 aux; LSym* sym; }; struct PeSect { char* name; uchar* base; uint64 size; LSym* sym; IMAGE_SECTION_HEADER sh; }; struct PeObj { Biobuf *f; char *name; uint32 base; PeSect *sect; uint nsect; PeSym *pesym; uint npesym; IMAGE_FILE_HEADER fh; char* snames; }; static int map(PeObj *obj, PeSect *sect); static int readsym(PeObj *obj, int i, PeSym **sym); void ldpe(Biobuf *f, char *pkg, int64 len, char *pn) { char *name; int32 base; uint32 l; int i, j, numaux; PeObj *obj; PeSect *sect, *rsect; IMAGE_SECTION_HEADER sh; uchar symbuf[18]; LSym *s; Reloc *r, *rp; PeSym *sym; USED(len); if(debug['v']) Bprint(&bso, "%5.2f ldpe %s\n", cputime(), pn); sect = nil; ctxt->version++; base = Boffset(f); obj = mal(sizeof *obj); obj->f = f; obj->base = base; obj->name = pn; // read header if(Bread(f, &obj->fh, sizeof obj->fh) != sizeof obj->fh) goto bad; // load section list obj->sect = mal(obj->fh.NumberOfSections*sizeof obj->sect[0]); obj->nsect = obj->fh.NumberOfSections; for(i=0; i < obj->fh.NumberOfSections; i++) { if(Bread(f, &obj->sect[i].sh, sizeof sh) != sizeof sh) goto bad; obj->sect[i].size = obj->sect[i].sh.SizeOfRawData; obj->sect[i].name = (char*)obj->sect[i].sh.Name; // TODO return error if found .cormeta } // load string table Bseek(f, base+obj->fh.PointerToSymbolTable+sizeof(symbuf)*obj->fh.NumberOfSymbols, 0); if(Bread(f, symbuf, 4) != 4) goto bad; l = le32(symbuf); obj->snames = mal(l); Bseek(f, base+obj->fh.PointerToSymbolTable+sizeof(symbuf)*obj->fh.NumberOfSymbols, 0); if(Bread(f, obj->snames, l) != l) goto bad; // read symbols obj->pesym = mal(obj->fh.NumberOfSymbols*sizeof obj->pesym[0]); obj->npesym = obj->fh.NumberOfSymbols; Bseek(f, base+obj->fh.PointerToSymbolTable, 0); for(i=0; ifh.NumberOfSymbols; i+=numaux+1) { Bseek(f, base+obj->fh.PointerToSymbolTable+sizeof(symbuf)*i, 0); if(Bread(f, symbuf, sizeof symbuf) != sizeof symbuf) goto bad; if((symbuf[0] == 0) && (symbuf[1] == 0) && (symbuf[2] == 0) && (symbuf[3] == 0)) { l = le32(&symbuf[4]); obj->pesym[i].name = (char*)&obj->snames[l]; } else { // sym name length <= 8 obj->pesym[i].name = mal(9); strncpy(obj->pesym[i].name, (char*)symbuf, 8); obj->pesym[i].name[8] = 0; } obj->pesym[i].value = le32(&symbuf[8]); obj->pesym[i].sectnum = le16(&symbuf[12]); obj->pesym[i].sclass = symbuf[16]; obj->pesym[i].aux = symbuf[17]; obj->pesym[i].type = le16(&symbuf[14]); numaux = obj->pesym[i].aux; if (numaux < 0) numaux = 0; } // create symbols for mapped sections for(i=0; insect; i++) { sect = &obj->sect[i]; if(sect->sh.Characteristics&IMAGE_SCN_MEM_DISCARDABLE) continue; if((sect->sh.Characteristics&(IMAGE_SCN_CNT_CODE|IMAGE_SCN_CNT_INITIALIZED_DATA|IMAGE_SCN_CNT_UNINITIALIZED_DATA)) == 0) { // This has been seen for .idata sections, which we // want to ignore. See issues 5106 and 5273. continue; } if(map(obj, sect) < 0) goto bad; name = smprint("%s(%s)", pkg, sect->name); s = linklookup(ctxt, name, ctxt->version); free(name); switch(sect->sh.Characteristics&(IMAGE_SCN_CNT_UNINITIALIZED_DATA|IMAGE_SCN_CNT_INITIALIZED_DATA| IMAGE_SCN_MEM_READ|IMAGE_SCN_MEM_WRITE|IMAGE_SCN_CNT_CODE|IMAGE_SCN_MEM_EXECUTE)) { case IMAGE_SCN_CNT_INITIALIZED_DATA|IMAGE_SCN_MEM_READ: //.rdata s->type = SRODATA; break; case IMAGE_SCN_CNT_UNINITIALIZED_DATA|IMAGE_SCN_MEM_READ|IMAGE_SCN_MEM_WRITE: //.bss s->type = SBSS; break; case IMAGE_SCN_CNT_INITIALIZED_DATA|IMAGE_SCN_MEM_READ|IMAGE_SCN_MEM_WRITE: //.data s->type = SDATA; break; case IMAGE_SCN_CNT_CODE|IMAGE_SCN_MEM_EXECUTE|IMAGE_SCN_MEM_READ: //.text s->type = STEXT; break; default: werrstr("unexpected flags %#08ux for PE section %s", sect->sh.Characteristics, sect->name); goto bad; } s->p = sect->base; s->np = sect->size; s->size = sect->size; sect->sym = s; if(strcmp(sect->name, ".rsrc") == 0) setpersrc(sect->sym); } // load relocations for(i=0; insect; i++) { rsect = &obj->sect[i]; if(rsect->sym == 0 || rsect->sh.NumberOfRelocations == 0) continue; if(rsect->sh.Characteristics&IMAGE_SCN_MEM_DISCARDABLE) continue; if((sect->sh.Characteristics&(IMAGE_SCN_CNT_CODE|IMAGE_SCN_CNT_INITIALIZED_DATA|IMAGE_SCN_CNT_UNINITIALIZED_DATA)) == 0) { // This has been seen for .idata sections, which we // want to ignore. See issues 5106 and 5273. continue; } r = mal(rsect->sh.NumberOfRelocations*sizeof r[0]); Bseek(f, obj->base+rsect->sh.PointerToRelocations, 0); for(j=0; jsh.NumberOfRelocations; j++) { rp = &r[j]; if(Bread(f, symbuf, 10) != 10) goto bad; uint32 rva, symindex; uint16 type; rva = le32(&symbuf[0]); symindex = le32(&symbuf[4]); type = le16(&symbuf[8]); if(readsym(obj, symindex, &sym) < 0) goto bad; if(sym->sym == nil) { werrstr("reloc of invalid sym %s idx=%d type=%d", sym->name, symindex, sym->type); goto bad; } rp->sym = sym->sym; rp->siz = 4; rp->off = rva; switch(type) { default: diag("%s: unknown relocation type %d;", pn, type); case IMAGE_REL_I386_REL32: case IMAGE_REL_AMD64_REL32: case IMAGE_REL_AMD64_ADDR32: // R_X86_64_PC32 case IMAGE_REL_AMD64_ADDR32NB: rp->type = R_PCREL; rp->add = (int32)le32(rsect->base+rp->off); break; case IMAGE_REL_I386_DIR32NB: case IMAGE_REL_I386_DIR32: rp->type = R_ADDR; // load addend from image rp->add = (int32)le32(rsect->base+rp->off); break; case IMAGE_REL_AMD64_ADDR64: // R_X86_64_64 rp->siz = 8; rp->type = R_ADDR; // load addend from image rp->add = le64(rsect->base+rp->off); break; } // ld -r could generate multiple section symbols for the // same section but with different values, we have to take // that into account if (obj->pesym[symindex].name[0] == '.') rp->add += obj->pesym[symindex].value; } qsort(r, rsect->sh.NumberOfRelocations, sizeof r[0], rbyoff); s = rsect->sym; s->r = r; s->nr = rsect->sh.NumberOfRelocations; } // enter sub-symbols into symbol table. for(i=0; inpesym; i++) { if(obj->pesym[i].name == 0) continue; if(obj->pesym[i].name[0] == '.') //skip section continue; if(obj->pesym[i].sectnum > 0) { sect = &obj->sect[obj->pesym[i].sectnum-1]; if(sect->sym == 0) continue; } if(readsym(obj, i, &sym) < 0) goto bad; s = sym->sym; if(sym->sectnum == 0) {// extern if(s->type == SDYNIMPORT) s->plt = -2; // flag for dynimport in PE object files. if (s->type == SXREF && sym->value > 0) {// global data s->type = SDATA; s->size = sym->value; } continue; } else if (sym->sectnum > 0) { sect = &obj->sect[sym->sectnum-1]; if(sect->sym == 0) diag("%s: %s sym == 0!", pn, s->name); } else { diag("%s: %s sectnum < 0!", pn, s->name); } if(sect == nil) return; if(s->outer != S) { if(s->dupok) continue; diag("%s: duplicate symbol reference: %s in both %s and %s", pn, s->name, s->outer->name, sect->sym->name); errorexit(); } s->sub = sect->sym->sub; sect->sym->sub = s; s->type = sect->sym->type | SSUB; s->value = sym->value; s->size = 4; s->outer = sect->sym; if(sect->sym->type == STEXT) { if(s->external && !s->dupok) diag("%s: duplicate definition of %s", pn, s->name); s->external = 1; } } // Sort outer lists by address, adding to textp. // This keeps textp in increasing address order. for(i=0; insect; i++) { s = obj->sect[i].sym; if(s == S) continue; if(s->sub) s->sub = listsort(s->sub, valuecmp, offsetof(LSym, sub)); if(s->type == STEXT) { if(s->onlist) sysfatal("symbol %s listed multiple times", s->name); s->onlist = 1; if(ctxt->etextp) ctxt->etextp->next = s; else ctxt->textp = s; ctxt->etextp = s; for(s = s->sub; s != S; s = s->sub) { if(s->onlist) sysfatal("symbol %s listed multiple times", s->name); s->onlist = 1; ctxt->etextp->next = s; ctxt->etextp = s; } } } return; bad: diag("%s: malformed pe file: %r", pn); } static int map(PeObj *obj, PeSect *sect) { if(sect->base != nil) return 0; sect->base = mal(sect->sh.SizeOfRawData); if(sect->sh.PointerToRawData == 0) // .bss doesn't have data in object file return 0; werrstr("short read"); if(Bseek(obj->f, obj->base+sect->sh.PointerToRawData, 0) < 0 || Bread(obj->f, sect->base, sect->sh.SizeOfRawData) != sect->sh.SizeOfRawData) return -1; return 0; } static int readsym(PeObj *obj, int i, PeSym **y) { LSym *s; PeSym *sym; char *name, *p; if(i >= obj->npesym || i < 0) { werrstr("invalid pe symbol index"); return -1; } sym = &obj->pesym[i]; *y = sym; if(sym->name[0] == '.') // .section name = obj->sect[sym->sectnum-1].sym->name; else { name = sym->name; if(strncmp(name, "__imp_", 6) == 0) name = &name[6]; // __imp_Name => Name if(thechar == '8' && name[0] == '_') name = &name[1]; // _Name => Name } // remove last @XXX p = strchr(name, '@'); if(p) *p = 0; switch(sym->type) { default: werrstr("%s: invalid symbol type %d", sym->name, sym->type); return -1; case IMAGE_SYM_DTYPE_FUNCTION: case IMAGE_SYM_DTYPE_NULL: switch(sym->sclass) { case IMAGE_SYM_CLASS_EXTERNAL: //global s = linklookup(ctxt, name, 0); break; case IMAGE_SYM_CLASS_NULL: case IMAGE_SYM_CLASS_STATIC: case IMAGE_SYM_CLASS_LABEL: s = linklookup(ctxt, name, ctxt->version); s->dupok = 1; break; default: werrstr("%s: invalid symbol binding %d", sym->name, sym->sclass); return -1; } break; } if(s != nil && s->type == 0 && !(sym->sclass == IMAGE_SYM_CLASS_STATIC && sym->value == 0)) s->type = SXREF; if(strncmp(sym->name, "__imp_", 6) == 0) s->got = -2; // flag for __imp_ sym->sym = s; return 0; } go/src/cmd/ld/lib.c0100644000000000000000000010030612412656737014342 0ustar00rootroot00000000000000// Derived from Inferno utils/6l/obj.c and utils/6l/span.c // http://code.google.com/p/inferno-os/source/browse/utils/6l/obj.c // http://code.google.com/p/inferno-os/source/browse/utils/6l/span.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #include "l.h" #include "lib.h" #include "../ld/elf.h" #include "../ld/dwarf.h" #include "../../pkg/runtime/stack.h" #include "../../pkg/runtime/funcdata.h" #include #if !(defined(_WIN32) || defined(PLAN9)) #include #endif enum { // Whether to assume that the external linker is "gold" // (http://sourceware.org/ml/binutils/2008-03/msg00162.html). AssumeGoldLinker = 0, }; int iconv(Fmt*); char symname[] = SYMDEF; char pkgname[] = "__.PKGDEF"; static int cout = -1; extern int version; // Set if we see an object compiled by the host compiler that is not // from a package that is known to support internal linking mode. static int externalobj = 0; static void hostlinksetup(void); char* goroot; char* goarch; char* goos; char* theline; void Lflag(char *arg) { char **p; if(ctxt->nlibdir >= ctxt->maxlibdir) { if (ctxt->maxlibdir == 0) ctxt->maxlibdir = 8; else ctxt->maxlibdir *= 2; p = erealloc(ctxt->libdir, ctxt->maxlibdir * sizeof(*p)); ctxt->libdir = p; } ctxt->libdir[ctxt->nlibdir++] = arg; } /* * Unix doesn't like it when we write to a running (or, sometimes, * recently run) binary, so remove the output file before writing it. * On Windows 7, remove() can force a subsequent create() to fail. * S_ISREG() does not exist on Plan 9. */ static void mayberemoveoutfile(void) { #if !(defined(_WIN32) || defined(PLAN9)) struct stat st; if(lstat(outfile, &st) == 0 && !S_ISREG(st.st_mode)) return; #endif remove(outfile); } void libinit(void) { char *suffix, *suffixsep; funcalign = FuncAlign; fmtinstall('i', iconv); fmtinstall('Y', Yconv); fmtinstall('Z', Zconv); mywhatsys(); // get goroot, goarch, goos // add goroot to the end of the libdir list. suffix = ""; suffixsep = ""; if(flag_installsuffix != nil) { suffixsep = "_"; suffix = flag_installsuffix; } else if(flag_race) { suffixsep = "_"; suffix = "race"; } Lflag(smprint("%s/pkg/%s_%s%s%s", goroot, goos, goarch, suffixsep, suffix)); mayberemoveoutfile(); cout = create(outfile, 1, 0775); if(cout < 0) { diag("cannot create %s: %r", outfile); errorexit(); } if(INITENTRY == nil) { INITENTRY = mal(strlen(goarch)+strlen(goos)+20); if(!flag_shared) { sprint(INITENTRY, "_rt0_%s_%s", goarch, goos); } else { sprint(INITENTRY, "_rt0_%s_%s_lib", goarch, goos); } } linklookup(ctxt, INITENTRY, 0)->type = SXREF; } void errorexit(void) { if(nerrors) { if(cout >= 0) mayberemoveoutfile(); exits("error"); } exits(0); } void loadinternal(char *name) { char pname[1024]; int i, found; found = 0; for(i=0; inlibdir; i++) { snprint(pname, sizeof pname, "%s/%s.a", ctxt->libdir[i], name); if(debug['v']) Bprint(&bso, "searching for %s.a in %s\n", name, pname); if(access(pname, AEXIST) >= 0) { addlibpath(ctxt, "internal", "internal", pname, name); found = 1; break; } } if(!found) Bprint(&bso, "warning: unable to find %s.a\n", name); } void loadlib(void) { int i, w, x; LSym *s, *gmsym; char* cgostrsym; if(flag_shared) { s = linklookup(ctxt, "runtime.islibrary", 0); s->dupok = 1; adduint8(ctxt, s, 1); } loadinternal("runtime"); if(thechar == '5') loadinternal("math"); if(flag_race) loadinternal("runtime/race"); for(i=0; ilibraryp; i++) { if(debug['v'] > 1) Bprint(&bso, "%5.2f autolib: %s (from %s)\n", cputime(), ctxt->library[i].file, ctxt->library[i].objref); iscgo |= strcmp(ctxt->library[i].pkg, "runtime/cgo") == 0; objfile(ctxt->library[i].file, ctxt->library[i].pkg); } if(linkmode == LinkExternal && !iscgo) { // This indicates a user requested -linkmode=external. // The startup code uses an import of runtime/cgo to decide // whether to initialize the TLS. So give it one. This could // be handled differently but it's an unusual case. loadinternal("runtime/cgo"); if(i < ctxt->libraryp) objfile(ctxt->library[i].file, ctxt->library[i].pkg); // Pretend that we really imported the package. s = linklookup(ctxt, "go.importpath.runtime/cgo.", 0); s->type = SDATA; s->dupok = 1; s->reachable = 1; // Provided by the code that imports the package. // Since we are simulating the import, we have to provide this string. cgostrsym = "go.string.\"runtime/cgo\""; if(linkrlookup(ctxt, cgostrsym, 0) == nil) addstrdata(cgostrsym, "runtime/cgo"); } if(linkmode == LinkAuto) { if(iscgo && externalobj) linkmode = LinkExternal; else linkmode = LinkInternal; } if(linkmode == LinkInternal) { // Drop all the cgo_import_static declarations. // Turns out we won't be needing them. for(s = ctxt->allsym; s != S; s = s->allsym) if(s->type == SHOSTOBJ) { // If a symbol was marked both // cgo_import_static and cgo_import_dynamic, // then we want to make it cgo_import_dynamic // now. if(s->extname != nil && s->dynimplib != nil && s->cgoexport == 0) { s->type = SDYNIMPORT; } else s->type = 0; } } gmsym = linklookup(ctxt, "runtime.tlsgm", 0); gmsym->type = STLSBSS; gmsym->size = 2*PtrSize; gmsym->hide = 1; gmsym->reachable = 1; ctxt->gmsym = gmsym; // Now that we know the link mode, trim the dynexp list. x = CgoExportDynamic; if(linkmode == LinkExternal) x = CgoExportStatic; w = 0; for(i=0; icgoexport & x) dynexp[w++] = dynexp[i]; ndynexp = w; // In internal link mode, read the host object files. if(linkmode == LinkInternal) hostobjs(); else hostlinksetup(); // We've loaded all the code now. // If there are no dynamic libraries needed, gcc disables dynamic linking. // Because of this, glibc's dynamic ELF loader occasionally (like in version 2.13) // assumes that a dynamic binary always refers to at least one dynamic library. // Rather than be a source of test cases for glibc, disable dynamic linking // the same way that gcc would. // // Exception: on OS X, programs such as Shark only work with dynamic // binaries, so leave it enabled on OS X (Mach-O) binaries. // Also leave it enabled on Solaris which doesn't support // statically linked binaries. if(!flag_shared && !havedynamic && HEADTYPE != Hdarwin && HEADTYPE != Hsolaris) debug['d'] = 1; importcycles(); } /* * look for the next file in an archive. * adapted from libmach. */ static vlong nextar(Biobuf *bp, vlong off, struct ar_hdr *a) { int r; int32 arsize; char *buf; if (off&01) off++; Bseek(bp, off, 0); buf = Brdline(bp, '\n'); r = Blinelen(bp); if(buf == nil) { if(r == 0) return 0; return -1; } if(r != SAR_HDR) return -1; memmove(a, buf, SAR_HDR); if(strncmp(a->fmag, ARFMAG, sizeof a->fmag)) return -1; arsize = strtol(a->size, 0, 0); if (arsize&1) arsize++; return arsize + r; } void objfile(char *file, char *pkg) { vlong off, l; Biobuf *f; char magbuf[SARMAG]; char pname[150]; struct ar_hdr arhdr; pkg = smprint("%i", pkg); if(debug['v'] > 1) Bprint(&bso, "%5.2f ldobj: %s (%s)\n", cputime(), file, pkg); Bflush(&bso); f = Bopen(file, 0); if(f == nil) { diag("cannot open file: %s", file); errorexit(); } l = Bread(f, magbuf, SARMAG); if(l != SARMAG || strncmp(magbuf, ARMAG, SARMAG)){ /* load it as a regular file */ l = Bseek(f, 0L, 2); Bseek(f, 0L, 0); ldobj(f, pkg, l, file, file, FileObj); Bterm(f); free(pkg); return; } /* skip over optional __.GOSYMDEF and process __.PKGDEF */ off = Boffset(f); l = nextar(f, off, &arhdr); if(l <= 0) { diag("%s: short read on archive file symbol header", file); goto out; } if(strncmp(arhdr.name, symname, strlen(symname)) == 0) { off += l; l = nextar(f, off, &arhdr); if(l <= 0) { diag("%s: short read on archive file symbol header", file); goto out; } } if(strncmp(arhdr.name, pkgname, strlen(pkgname))) { diag("%s: cannot find package header", file); goto out; } off += l; if(debug['u']) ldpkg(f, pkg, atolwhex(arhdr.size), file, Pkgdef); /* * load all the object files from the archive now. * this gives us sequential file access and keeps us * from needing to come back later to pick up more * objects. it breaks the usual C archive model, but * this is Go, not C. the common case in Go is that * we need to load all the objects, and then we throw away * the individual symbols that are unused. * * loading every object will also make it possible to * load foreign objects not referenced by __.GOSYMDEF. */ for(;;) { l = nextar(f, off, &arhdr); if(l == 0) break; if(l < 0) { diag("%s: malformed archive", file); goto out; } off += l; l = SARNAME; while(l > 0 && arhdr.name[l-1] == ' ') l--; snprint(pname, sizeof pname, "%s(%.*s)", file, utfnlen(arhdr.name, l), arhdr.name); l = atolwhex(arhdr.size); ldobj(f, pkg, l, pname, file, ArchiveObj); } out: Bterm(f); free(pkg); } static void dowrite(int fd, char *p, int n) { int m; while(n > 0) { m = write(fd, p, n); if(m <= 0) { ctxt->cursym = S; diag("write error: %r"); errorexit(); } n -= m; p += m; } } typedef struct Hostobj Hostobj; struct Hostobj { void (*ld)(Biobuf*, char*, int64, char*); char *pkg; char *pn; char *file; int64 off; int64 len; }; Hostobj *hostobj; int nhostobj; int mhostobj; // These packages can use internal linking mode. // Others trigger external mode. const char *internalpkg[] = { "crypto/x509", "net", "os/user", "runtime/cgo", "runtime/race" }; void ldhostobj(void (*ld)(Biobuf*, char*, int64, char*), Biobuf *f, char *pkg, int64 len, char *pn, char *file) { int i, isinternal; Hostobj *h; isinternal = 0; for(i=0; i= mhostobj) { if(mhostobj == 0) mhostobj = 16; else mhostobj *= 2; hostobj = erealloc(hostobj, mhostobj*sizeof hostobj[0]); } h = &hostobj[nhostobj++]; h->ld = ld; h->pkg = estrdup(pkg); h->pn = estrdup(pn); h->file = estrdup(file); h->off = Boffset(f); h->len = len; } void hostobjs(void) { int i; Biobuf *f; Hostobj *h; for(i=0; ifile, OREAD); if(f == nil) { ctxt->cursym = S; diag("cannot reopen %s: %r", h->pn); errorexit(); } Bseek(f, h->off, 0); h->ld(f, h->pkg, h->len, h->pn); Bterm(f); } } // provided by lib9 int runcmd(char**); char* mktempdir(void); void removeall(char*); static void rmtemp(void) { removeall(tmpdir); } static void hostlinksetup(void) { char *p; if(linkmode != LinkExternal) return; // create temporary directory and arrange cleanup if(tmpdir == nil) { tmpdir = mktempdir(); atexit(rmtemp); } // change our output to temporary object file close(cout); p = smprint("%s/go.o", tmpdir); cout = create(p, 1, 0775); if(cout < 0) { diag("cannot create %s: %r", p); errorexit(); } free(p); } void hostlink(void) { char *p, **argv; int c, i, w, n, argc, len; Hostobj *h; Biobuf *f; static char buf[64<<10]; if(linkmode != LinkExternal || nerrors > 0) return; c = 0; p = extldflags; while(p != nil) { while(*p == ' ') p++; if(*p == '\0') break; c++; p = strchr(p + 1, ' '); } argv = malloc((14+nhostobj+nldflag+c)*sizeof argv[0]); argc = 0; if(extld == nil) extld = "gcc"; argv[argc++] = extld; switch(thechar){ case '8': argv[argc++] = "-m32"; break; case '6': argv[argc++] = "-m64"; break; case '5': argv[argc++] = "-marm"; break; } if(!debug['s'] && !debug_s) { argv[argc++] = "-gdwarf-2"; } else { argv[argc++] = "-s"; } if(HEADTYPE == Hdarwin) argv[argc++] = "-Wl,-no_pie,-pagezero_size,4000000"; if(HEADTYPE == Hopenbsd) argv[argc++] = "-Wl,-nopie"; if(iself && AssumeGoldLinker) argv[argc++] = "-Wl,--rosegment"; if(flag_shared) { argv[argc++] = "-Wl,-Bsymbolic"; argv[argc++] = "-shared"; } argv[argc++] = "-o"; argv[argc++] = outfile; if(rpath) argv[argc++] = smprint("-Wl,-rpath,%s", rpath); // Force global symbols to be exported for dlopen, etc. if(iself) argv[argc++] = "-rdynamic"; if(strstr(argv[0], "clang") != nil) argv[argc++] = "-Qunused-arguments"; // already wrote main object file // copy host objects to temporary directory for(i=0; ifile, OREAD); if(f == nil) { ctxt->cursym = S; diag("cannot reopen %s: %r", h->pn); errorexit(); } Bseek(f, h->off, 0); p = smprint("%s/%06d.o", tmpdir, i); argv[argc++] = p; w = create(p, 1, 0775); if(w < 0) { ctxt->cursym = S; diag("cannot create %s: %r", p); errorexit(); } len = h->len; while(len > 0 && (n = Bread(f, buf, sizeof buf)) > 0){ if(n > len) n = len; dowrite(w, buf, n); len -= n; } if(close(w) < 0) { ctxt->cursym = S; diag("cannot write %s: %r", p); errorexit(); } Bterm(f); } argv[argc++] = smprint("%s/go.o", tmpdir); for(i=0; icursym = S; diag("%s: running %s failed: %r", argv0, argv[0]); errorexit(); } } void ldobj(Biobuf *f, char *pkg, int64 len, char *pn, char *file, int whence) { char *line; int n, c1, c2, c3, c4; uint32 magic; vlong import0, import1, eof; char *t; eof = Boffset(f) + len; pn = estrdup(pn); c1 = BGETC(f); c2 = BGETC(f); c3 = BGETC(f); c4 = BGETC(f); Bungetc(f); Bungetc(f); Bungetc(f); Bungetc(f); magic = c1<<24 | c2<<16 | c3<<8 | c4; if(magic == 0x7f454c46) { // \x7F E L F ldhostobj(ldelf, f, pkg, len, pn, file); return; } if((magic&~1) == 0xfeedface || (magic&~0x01000000) == 0xcefaedfe) { ldhostobj(ldmacho, f, pkg, len, pn, file); return; } if(c1 == 0x4c && c2 == 0x01 || c1 == 0x64 && c2 == 0x86) { ldhostobj(ldpe, f, pkg, len, pn, file); return; } /* check the header */ line = Brdline(f, '\n'); if(line == nil) { if(Blinelen(f) > 0) { diag("%s: not an object file", pn); return; } goto eof; } n = Blinelen(f) - 1; line[n] = '\0'; if(strncmp(line, "go object ", 10) != 0) { if(strlen(pn) > 3 && strcmp(pn+strlen(pn)-3, ".go") == 0) { print("%cl: input %s is not .%c file (use %cg to compile .go files)\n", thechar, pn, thechar, thechar); errorexit(); } if(strcmp(line, thestring) == 0) { // old header format: just $GOOS diag("%s: stale object file", pn); return; } diag("%s: not an object file", pn); free(pn); return; } // First, check that the basic goos, goarch, and version match. t = smprint("%s %s %s ", goos, getgoarch(), getgoversion()); line[n] = ' '; if(strncmp(line+10, t, strlen(t)) != 0 && !debug['f']) { line[n] = '\0'; diag("%s: object is [%s] expected [%s]", pn, line+10, t); free(t); free(pn); return; } // Second, check that longer lines match each other exactly, // so that the Go compiler and write additional information // that must be the same from run to run. line[n] = '\0'; if(n-10 > strlen(t)) { if(theline == nil) theline = estrdup(line+10); else if(strcmp(theline, line+10) != 0) { line[n] = '\0'; diag("%s: object is [%s] expected [%s]", pn, line+10, theline); free(t); free(pn); return; } } free(t); line[n] = '\n'; /* skip over exports and other info -- ends with \n!\n */ import0 = Boffset(f); c1 = '\n'; // the last line ended in \n c2 = BGETC(f); c3 = BGETC(f); while(c1 != '\n' || c2 != '!' || c3 != '\n') { c1 = c2; c2 = c3; c3 = BGETC(f); if(c3 == Beof) goto eof; } import1 = Boffset(f); Bseek(f, import0, 0); ldpkg(f, pkg, import1 - import0 - 2, pn, whence); // -2 for !\n Bseek(f, import1, 0); ldobjfile(ctxt, f, pkg, eof - Boffset(f), pn); free(pn); return; eof: diag("truncated object file: %s", pn); free(pn); } void zerosig(char *sp) { LSym *s; s = linklookup(ctxt, sp, 0); s->sig = 0; } void mywhatsys(void) { goroot = getgoroot(); goos = getgoos(); goarch = getgoarch(); if(strncmp(goarch, thestring, strlen(thestring)) != 0) sysfatal("cannot use %cc with GOARCH=%s", thechar, goarch); } int pathchar(void) { return '/'; } static uchar* hunk; static uint32 nhunk; #define NHUNK (10UL<<20) void* mal(uint32 n) { void *v; n = (n+7)&~7; if(n > NHUNK) { v = malloc(n); if(v == nil) { diag("out of memory"); errorexit(); } memset(v, 0, n); return v; } if(n > nhunk) { hunk = malloc(NHUNK); if(hunk == nil) { diag("out of memory"); errorexit(); } nhunk = NHUNK; } v = hunk; nhunk -= n; hunk += n; memset(v, 0, n); return v; } void unmal(void *v, uint32 n) { n = (n+7)&~7; if(hunk - n == v) { hunk -= n; nhunk += n; } } // Copied from ../gc/subr.c:/^pathtoprefix; must stay in sync. /* * Convert raw string to the prefix that will be used in the symbol table. * Invalid bytes turn into %xx. Right now the only bytes that need * escaping are %, ., and ", but we escape all control characters too. * * If you edit this, edit ../gc/subr.c:/^pathtoprefix too. * If you edit this, edit ../../pkg/debug/goobj/read.go:/importPathToPrefix too. */ static char* pathtoprefix(char *s) { static char hex[] = "0123456789abcdef"; char *p, *r, *w, *l; int n; // find first character past the last slash, if any. l = s; for(r=s; *r; r++) if(*r == '/') l = r+1; // check for chars that need escaping n = 0; for(r=s; *r; r++) if(*r <= ' ' || (*r == '.' && r >= l) || *r == '%' || *r == '"' || *r >= 0x7f) n++; // quick exit if(n == 0) return s; // escape p = mal((r-s)+1+2*n); for(r=s, w=p; *r; r++) { if(*r <= ' ' || (*r == '.' && r >= l) || *r == '%' || *r == '"' || *r >= 0x7f) { *w++ = '%'; *w++ = hex[(*r>>4)&0xF]; *w++ = hex[*r&0xF]; } else *w++ = *r; } *w = '\0'; return p; } int iconv(Fmt *fp) { char *p; p = va_arg(fp->args, char*); if(p == nil) { fmtstrcpy(fp, ""); return 0; } p = pathtoprefix(p); fmtstrcpy(fp, p); return 0; } Section* addsection(Segment *seg, char *name, int rwx) { Section **l; Section *sect; for(l=&seg->sect; *l; l=&(*l)->next) ; sect = mal(sizeof *sect); sect->rwx = rwx; sect->name = name; sect->seg = seg; sect->align = PtrSize; // everything is at least pointer-aligned *l = sect; return sect; } uint16 le16(uchar *b) { return b[0] | b[1]<<8; } uint32 le32(uchar *b) { return b[0] | b[1]<<8 | b[2]<<16 | (uint32)b[3]<<24; } uint64 le64(uchar *b) { return le32(b) | (uint64)le32(b+4)<<32; } uint16 be16(uchar *b) { return b[0]<<8 | b[1]; } uint32 be32(uchar *b) { return (uint32)b[0]<<24 | b[1]<<16 | b[2]<<8 | b[3]; } uint64 be64(uchar *b) { return (uvlong)be32(b)<<32 | be32(b+4); } Endian be = { be16, be32, be64 }; Endian le = { le16, le32, le64 }; typedef struct Chain Chain; struct Chain { LSym *sym; Chain *up; int limit; // limit on entry to sym }; static int stkcheck(Chain*, int); static void stkprint(Chain*, int); static void stkbroke(Chain*, int); static LSym *morestack; static LSym *newstack; enum { HasLinkRegister = (thechar == '5'), }; // TODO: Record enough information in new object files to // allow stack checks here. static int callsize(void) { if(thechar == '5') return 0; return RegSize; } void dostkcheck(void) { Chain ch; LSym *s; morestack = linklookup(ctxt, "runtime.morestack", 0); newstack = linklookup(ctxt, "runtime.newstack", 0); // Every splitting function ensures that there are at least StackLimit // bytes available below SP when the splitting prologue finishes. // If the splitting function calls F, then F begins execution with // at least StackLimit - callsize() bytes available. // Check that every function behaves correctly with this amount // of stack, following direct calls in order to piece together chains // of non-splitting functions. ch.up = nil; ch.limit = StackLimit - callsize(); // Check every function, but do the nosplit functions in a first pass, // to make the printed failure chains as short as possible. for(s = ctxt->textp; s != nil; s = s->next) { // runtime.racesymbolizethunk is called from gcc-compiled C // code running on the operating system thread stack. // It uses more than the usual amount of stack but that's okay. if(strcmp(s->name, "runtime.racesymbolizethunk") == 0) continue; if(s->nosplit) { ctxt->cursym = s; ch.sym = s; stkcheck(&ch, 0); } } for(s = ctxt->textp; s != nil; s = s->next) { if(!s->nosplit) { ctxt->cursym = s; ch.sym = s; stkcheck(&ch, 0); } } } static int stkcheck(Chain *up, int depth) { Chain ch, ch1; LSym *s; int limit; Reloc *r, *endr; Pciter pcsp; limit = up->limit; s = up->sym; // Don't duplicate work: only need to consider each // function at top of safe zone once. if(limit == StackLimit-callsize()) { if(s->stkcheck) return 0; s->stkcheck = 1; } if(depth > 100) { diag("nosplit stack check too deep"); stkbroke(up, 0); return -1; } if(s->external || s->pcln == nil) { // external function. // should never be called directly. // only diagnose the direct caller. if(depth == 1 && s->type != SXREF) diag("call to external function %s", s->name); return -1; } if(limit < 0) { stkbroke(up, limit); return -1; } // morestack looks like it calls functions, // but it switches the stack pointer first. if(s == morestack) return 0; ch.up = up; // Walk through sp adjustments in function, consuming relocs. r = s->r; endr = r + s->nr; for(pciterinit(ctxt, &pcsp, &s->pcln->pcsp); !pcsp.done; pciternext(&pcsp)) { // pcsp.value is in effect for [pcsp.pc, pcsp.nextpc). // Check stack size in effect for this span. if(limit - pcsp.value < 0) { stkbroke(up, limit - pcsp.value); return -1; } // Process calls in this span. for(; r < endr && r->off < pcsp.nextpc; r++) { switch(r->type) { case R_CALL: case R_CALLARM: // Direct call. ch.limit = limit - pcsp.value - callsize(); ch.sym = r->sym; if(stkcheck(&ch, depth+1) < 0) return -1; // If this is a call to morestack, we've just raised our limit back // to StackLimit beyond the frame size. if(strncmp(r->sym->name, "runtime.morestack", 17) == 0) { limit = StackLimit + s->locals; if(thechar == '5') limit += 4; // saved LR } break; case R_CALLIND: // Indirect call. Assume it is a call to a splitting function, // so we have to make sure it can call morestack. // Arrange the data structures to report both calls, so that // if there is an error, stkprint shows all the steps involved. ch.limit = limit - pcsp.value - callsize(); ch.sym = nil; ch1.limit = ch.limit - callsize(); // for morestack in called prologue ch1.up = &ch; ch1.sym = morestack; if(stkcheck(&ch1, depth+2) < 0) return -1; break; } } } return 0; } static void stkbroke(Chain *ch, int limit) { diag("nosplit stack overflow"); stkprint(ch, limit); } static void stkprint(Chain *ch, int limit) { char *name; if(ch->sym) name = ch->sym->name; else name = "function pointer"; if(ch->up == nil) { // top of chain. ch->sym != nil. if(ch->sym->nosplit) print("\t%d\tassumed on entry to %s\n", ch->limit, name); else print("\t%d\tguaranteed after split check in %s\n", ch->limit, name); } else { stkprint(ch->up, ch->limit + (!HasLinkRegister)*PtrSize); if(!HasLinkRegister) print("\t%d\ton entry to %s\n", ch->limit, name); } if(ch->limit != limit) print("\t%d\tafter %s uses %d\n", limit, name, ch->limit - limit); } int Yconv(Fmt *fp) { LSym *s; Fmt fmt; int i; char *str; s = va_arg(fp->args, LSym*); if (s == S) { fmtprint(fp, ""); } else { fmtstrinit(&fmt); fmtprint(&fmt, "%s @0x%08llx [%lld]", s->name, (vlong)s->value, (vlong)s->size); for (i = 0; i < s->size; i++) { if (!(i%8)) fmtprint(&fmt, "\n\t0x%04x ", i); fmtprint(&fmt, "%02x ", s->p[i]); } fmtprint(&fmt, "\n"); for (i = 0; i < s->nr; i++) { fmtprint(&fmt, "\t0x%04x[%x] %d %s[%llx]\n", s->r[i].off, s->r[i].siz, s->r[i].type, s->r[i].sym->name, (vlong)s->r[i].add); } str = fmtstrflush(&fmt); fmtstrcpy(fp, str); free(str); } return 0; } vlong coutpos; void cflush(void) { int n; if(cbpmax < cbp) cbpmax = cbp; n = cbpmax - buf.cbuf; dowrite(cout, buf.cbuf, n); coutpos += n; cbp = buf.cbuf; cbc = sizeof(buf.cbuf); cbpmax = cbp; } vlong cpos(void) { return coutpos + cbp - buf.cbuf; } void cseek(vlong p) { vlong start; int delta; if(cbpmax < cbp) cbpmax = cbp; start = coutpos; if(start <= p && p <= start+(cbpmax - buf.cbuf)) { //print("cseek %lld in [%lld,%lld] (%lld)\n", p, start, start+sizeof(buf.cbuf), cpos()); delta = p - (start + cbp - buf.cbuf); cbp += delta; cbc -= delta; //print("now at %lld\n", cpos()); return; } cflush(); seek(cout, p, 0); coutpos = p; } void cwrite(void *buf, int n) { cflush(); if(n <= 0) return; dowrite(cout, buf, n); coutpos += n; } void usage(void) { fprint(2, "usage: %cl [options] main.%c\n", thechar, thechar); flagprint(2); exits("usage"); } void setheadtype(char *s) { int h; h = headtype(s); if(h < 0) { fprint(2, "unknown header type -H %s\n", s); errorexit(); } headstring = s; HEADTYPE = headtype(s); } void setinterp(char *s) { debug['I'] = 1; // denote cmdline interpreter override interpreter = s; } void doversion(void) { print("%cl version %s\n", thechar, getgoversion()); errorexit(); } void genasmsym(void (*put)(LSym*, char*, int, vlong, vlong, int, LSym*)) { Auto *a; LSym *s; int32 off; // These symbols won't show up in the first loop below because we // skip STEXT symbols. Normal STEXT symbols are emitted by walking textp. s = linklookup(ctxt, "text", 0); if(s->type == STEXT) put(s, s->name, 'T', s->value, s->size, s->version, 0); s = linklookup(ctxt, "etext", 0); if(s->type == STEXT) put(s, s->name, 'T', s->value, s->size, s->version, 0); for(s=ctxt->allsym; s!=S; s=s->allsym) { if(s->hide || (s->name[0] == '.' && s->version == 0 && strcmp(s->name, ".rathole") != 0)) continue; switch(s->type&SMASK) { case SCONST: case SRODATA: case SSYMTAB: case SPCLNTAB: case SDATA: case SNOPTRDATA: case SELFROSECT: case SMACHOGOT: case STYPE: case SSTRING: case SGOSTRING: case SWINDOWS: if(!s->reachable) continue; put(s, s->name, 'D', symaddr(s), s->size, s->version, s->gotype); continue; case SBSS: case SNOPTRBSS: if(!s->reachable) continue; if(s->np > 0) diag("%s should not be bss (size=%d type=%d special=%d)", s->name, (int)s->np, s->type, s->special); put(s, s->name, 'B', symaddr(s), s->size, s->version, s->gotype); continue; case SFILE: put(nil, s->name, 'f', s->value, 0, s->version, 0); continue; } } for(s = ctxt->textp; s != nil; s = s->next) { put(s, s->name, 'T', s->value, s->size, s->version, s->gotype); // NOTE(ality): acid can't produce a stack trace without .frame symbols put(nil, ".frame", 'm', s->locals+PtrSize, 0, 0, 0); for(a=s->autom; a; a=a->link) { // Emit a or p according to actual offset, even if label is wrong. // This avoids negative offsets, which cannot be encoded. if(a->type != A_AUTO && a->type != A_PARAM) continue; // compute offset relative to FP if(a->type == A_PARAM) off = a->aoffset; else off = a->aoffset - PtrSize; // FP if(off >= 0) { put(nil, a->asym->name, 'p', off, 0, 0, a->gotype); continue; } // SP if(off <= -PtrSize) { put(nil, a->asym->name, 'a', -(off+PtrSize), 0, 0, a->gotype); continue; } // Otherwise, off is addressing the saved program counter. // Something underhanded is going on. Say nothing. } } if(debug['v'] || debug['n']) Bprint(&bso, "%5.2f symsize = %ud\n", cputime(), symsize); Bflush(&bso); } vlong symaddr(LSym *s) { if(!s->reachable) diag("unreachable symbol in symaddr - %s", s->name); return s->value; } void xdefine(char *p, int t, vlong v) { LSym *s; s = linklookup(ctxt, p, 0); s->type = t; s->value = v; s->reachable = 1; s->special = 1; } vlong datoff(vlong addr) { if(addr >= segdata.vaddr) return addr - segdata.vaddr + segdata.fileoff; if(addr >= segtext.vaddr) return addr - segtext.vaddr + segtext.fileoff; diag("datoff %#llx", addr); return 0; } vlong entryvalue(void) { char *a; LSym *s; a = INITENTRY; if(*a >= '0' && *a <= '9') return atolwhex(a); s = linklookup(ctxt, a, 0); if(s->type == 0) return INITTEXT; if(s->type != STEXT) diag("entry not text: %s", s->name); return s->value; } static void undefsym(LSym *s) { int i; Reloc *r; ctxt->cursym = s; for(i=0; inr; i++) { r = &s->r[i]; if(r->sym == nil) // happens for some external ARM relocs continue; if(r->sym->type == Sxxx || r->sym->type == SXREF) diag("undefined: %s", r->sym->name); if(!r->sym->reachable) diag("use of unreachable symbol: %s", r->sym->name); } } void undef(void) { LSym *s; for(s = ctxt->textp; s != nil; s = s->next) undefsym(s); for(s = datap; s != nil; s = s->next) undefsym(s); if(nerrors > 0) errorexit(); } void callgraph(void) { LSym *s; Reloc *r; int i; if(!debug['c']) return; for(s = ctxt->textp; s != nil; s = s->next) { for(i=0; inr; i++) { r = &s->r[i]; if(r->sym == nil) continue; if((r->type == R_CALL || r->type == R_CALLARM) && r->sym->type == STEXT) Bprint(&bso, "%s calls %s\n", s->name, r->sym->name); } } } void diag(char *fmt, ...) { char buf[1024], *tn, *sep; va_list arg; tn = ""; sep = ""; if(ctxt->cursym != S) { tn = ctxt->cursym->name; sep = ": "; } va_start(arg, fmt); vseprint(buf, buf+sizeof(buf), fmt, arg); va_end(arg); print("%s%s%s\n", tn, sep, buf); nerrors++; if(nerrors > 20) { print("too many errors\n"); errorexit(); } } go/src/cmd/ld/lib.h0100644000000000000000000001713212412656737014353 0ustar00rootroot00000000000000// Derived from Inferno utils/6l/l.h // http://code.google.com/p/inferno-os/source/browse/utils/6l/l.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Terrible but standard terminology. // A segment describes a block of file to load into memory. // A section further describes the pieces of that block for // use in debuggers and such. typedef struct Segment Segment; typedef struct Section Section; struct Segment { uchar rwx; // permission as usual unix bits (5 = r-x etc) uvlong vaddr; // virtual address uvlong len; // length in memory uvlong fileoff; // file offset uvlong filelen; // length on disk Section* sect; }; #pragma incomplete struct Elf64_Shdr struct Section { uchar rwx; int16 extnum; int32 align; char *name; uvlong vaddr; uvlong len; Section *next; // in segment list Segment *seg; struct Elf64_Shdr *elfsect; uvlong reloff; uvlong rellen; }; extern char symname[]; EXTERN char* INITENTRY; extern char* thestring; extern LinkArch* thelinkarch; EXTERN char* outfile; EXTERN int ndynexp; EXTERN LSym** dynexp; EXTERN int nldflag; EXTERN char** ldflag; EXTERN int havedynamic; EXTERN int funcalign; EXTERN int iscgo; EXTERN int elfglobalsymndx; EXTERN char* flag_installsuffix; EXTERN int flag_race; EXTERN int flag_shared; EXTERN char* tracksym; EXTERN char* interpreter; EXTERN char* tmpdir; EXTERN char* extld; EXTERN char* extldflags; EXTERN int debug_s; // backup old value of debug['s'] EXTERN Link* ctxt; EXTERN int32 HEADR; EXTERN int32 HEADTYPE; EXTERN int32 INITRND; EXTERN int64 INITTEXT; EXTERN int64 INITDAT; EXTERN char* INITENTRY; /* entry point */ EXTERN char* noname; EXTERN char* paramspace; EXTERN int nerrors; EXTERN int linkmode; EXTERN int64 liveness; // for dynexport field of LSym enum { CgoExportDynamic = 1<<0, CgoExportStatic = 1<<1, }; EXTERN Segment segtext; EXTERN Segment segrodata; EXTERN Segment segdata; EXTERN Segment segdwarf; typedef struct Endian Endian; struct Endian { uint16 (*e16)(uchar*); uint32 (*e32)(uchar*); uint64 (*e64)(uchar*); }; extern Endian be, le; /* set by call to mywhatsys() */ extern char* goroot; extern char* goarch; extern char* goos; /* whence for ldpkg */ enum { FileObj = 0, ArchiveObj, Pkgdef }; typedef struct Header Header; struct Header { char *name; int val; }; EXTERN char* headstring; extern Header headers[]; #pragma varargck type "Y" LSym* #pragma varargck type "Z" char* #pragma varargck type "i" char* // buffered output EXTERN Biobuf bso; EXTERN struct { char cbuf[MAXIO]; /* output buffer */ } buf; EXTERN int cbc; EXTERN char* cbp; EXTERN char* cbpmax; #define cput(c)\ { *cbp++ = c;\ if(--cbc <= 0)\ cflush(); } void Lflag(char *arg); int Yconv(Fmt *fp); int Zconv(Fmt *fp); void addexport(void); void address(void); Section*addsection(Segment *seg, char *name, int rwx); void addstrdata(char *name, char *value); vlong addstring(LSym *s, char *str); void asmelfsym(void); void asmplan9sym(void); uint16 be16(uchar *b); uint32 be32(uchar *b); uint64 be64(uchar *b); void callgraph(void); void cflush(void); void codeblk(int32 addr, int32 size); vlong cpos(void); void cseek(vlong p); void cwrite(void *buf, int n); void datblk(int32 addr, int32 size); int datcmp(LSym *s1, LSym *s2); vlong datoff(vlong addr); void deadcode(void); LSym* decodetype_arrayelem(LSym *s); vlong decodetype_arraylen(LSym *s); LSym* decodetype_chanelem(LSym *s); int decodetype_funcdotdotdot(LSym *s); int decodetype_funcincount(LSym *s); LSym* decodetype_funcintype(LSym *s, int i); int decodetype_funcoutcount(LSym *s); LSym* decodetype_funcouttype(LSym *s, int i); LSym* decodetype_gc(LSym *s); vlong decodetype_ifacemethodcount(LSym *s); uint8 decodetype_kind(LSym *s); LSym* decodetype_mapkey(LSym *s); LSym* decodetype_mapvalue(LSym *s); LSym* decodetype_ptrelem(LSym *s); vlong decodetype_size(LSym *s); int decodetype_structfieldcount(LSym *s); char* decodetype_structfieldname(LSym *s, int i); vlong decodetype_structfieldoffs(LSym *s, int i); LSym* decodetype_structfieldtype(LSym *s, int i); void dodata(void); void dostkcheck(void); void dostkoff(void); void dosymtype(void); void doversion(void); void doweak(void); void dynreloc(void); void dynrelocsym(LSym *s); vlong entryvalue(void); void errorexit(void); void follow(void); void genasmsym(void (*put)(LSym*, char*, int, vlong, vlong, int, LSym*)); void growdatsize(vlong *datsizep, LSym *s); char* headstr(int v); int headtype(char *name); void hostlink(void); void hostobjs(void); int iconv(Fmt *fp); void importcycles(void); void linkarchinit(void); void ldelf(Biobuf *f, char *pkg, int64 len, char *pn); void ldhostobj(void (*ld)(Biobuf*, char*, int64, char*), Biobuf *f, char *pkg, int64 len, char *pn, char *file); void ldmacho(Biobuf *f, char *pkg, int64 len, char *pn); void ldobj(Biobuf *f, char *pkg, int64 len, char *pn, char *file, int whence); void ldpe(Biobuf *f, char *pkg, int64 len, char *pn); void ldpkg(Biobuf *f, char *pkg, int64 len, char *filename, int whence); uint16 le16(uchar *b); uint32 le32(uchar *b); uint64 le64(uchar *b); void libinit(void); LSym* listsort(LSym *l, int (*cmp)(LSym*, LSym*), int off); void loadinternal(char *name); void loadlib(void); void lputb(int32 l); void lputl(int32 l); void* mal(uint32 n); void mark(LSym *s); void mywhatsys(void); struct ar_hdr; void objfile(char *file, char *pkg); void patch(void); int pathchar(void); void pcln(void); void pclntab(void); void putelfsectionsym(LSym* s, int shndx); void putelfsymshndx(vlong sympos, int shndx); void putsymb(LSym *s, char *name, int t, vlong v, vlong size, int ver, LSym *typ); int rbyoff(const void *va, const void *vb); void reloc(void); void relocsym(LSym *s); void setheadtype(char *s); void setinterp(char *s); void setlinkmode(char *arg); void span(void); void strnput(char *s, int n); vlong symaddr(LSym *s); void symtab(void); void textaddress(void); void undef(void); void unmal(void *v, uint32 n); void usage(void); void vputb(uint64 v); int valuecmp(LSym *a, LSym *b); void vputl(uint64 v); void wputb(ushort w); void wputl(ushort w); void xdefine(char *p, int t, vlong v); void zerosig(char *sp); void archinit(void); void diag(char *fmt, ...); #pragma varargck argpos diag 1 go/src/cmd/ld/macho.c0100644000000000000000000004103112412656734014657 0ustar00rootroot00000000000000// Copyright 2009 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. // Mach-O file writing // http://developer.apple.com/mac/library/DOCUMENTATION/DeveloperTools/Conceptual/MachORuntime/Reference/reference.html #include "l.h" #include "../ld/dwarf.h" #include "../ld/lib.h" #include "../ld/macho.h" static int macho64; static MachoHdr hdr; static MachoLoad *load; static MachoSeg seg[16]; static int nload, mload, nseg, ndebug, nsect; enum { SymKindLocal = 0, SymKindExtdef, SymKindUndef, NumSymKind }; static int nkind[NumSymKind]; static LSym** sortsym; static int nsortsym; // Amount of space left for adding load commands // that refer to dynamic libraries. Because these have // to go in the Mach-O header, we can't just pick a // "big enough" header size. The initial header is // one page, the non-dynamic library stuff takes // up about 1300 bytes; we overestimate that as 2k. static int load_budget = INITIAL_MACHO_HEADR - 2*1024; static void machodysymtab(void); void machoinit(void) { switch(thechar) { // 64-bit architectures case '6': macho64 = 1; break; // 32-bit architectures default: break; } } MachoHdr* getMachoHdr(void) { return &hdr; } MachoLoad* newMachoLoad(uint32 type, uint32 ndata) { MachoLoad *l; if(nload >= mload) { if(mload == 0) mload = 1; else mload *= 2; load = erealloc(load, mload*sizeof load[0]); } if(macho64 && (ndata & 1)) ndata++; l = &load[nload++]; l->type = type; l->ndata = ndata; l->data = mal(ndata*4); return l; } MachoSeg* newMachoSeg(char *name, int msect) { MachoSeg *s; if(nseg >= nelem(seg)) { diag("too many segs"); errorexit(); } s = &seg[nseg++]; s->name = name; s->msect = msect; s->sect = mal(msect*sizeof s->sect[0]); return s; } MachoSect* newMachoSect(MachoSeg *seg, char *name, char *segname) { MachoSect *s; if(seg->nsect >= seg->msect) { diag("too many sects in segment %s", seg->name); errorexit(); } s = &seg->sect[seg->nsect++]; s->name = name; s->segname = segname; nsect++; return s; } // Generic linking code. static char **dylib; static int ndylib; static vlong linkoff; int machowrite(void) { vlong o1; int loadsize; int i, j; MachoSeg *s; MachoSect *t; MachoLoad *l; o1 = cpos(); loadsize = 4*4*ndebug; for(i=0; insect); strnput(s->name, 16); VPUT(s->vaddr); VPUT(s->vsize); VPUT(s->fileoffset); VPUT(s->filesize); LPUT(s->prot1); LPUT(s->prot2); LPUT(s->nsect); LPUT(s->flag); } else { LPUT(1); /* segment 32 */ LPUT(56+68*s->nsect); strnput(s->name, 16); LPUT(s->vaddr); LPUT(s->vsize); LPUT(s->fileoffset); LPUT(s->filesize); LPUT(s->prot1); LPUT(s->prot2); LPUT(s->nsect); LPUT(s->flag); } for(j=0; jnsect; j++) { t = &s->sect[j]; if(macho64) { strnput(t->name, 16); strnput(t->segname, 16); VPUT(t->addr); VPUT(t->size); LPUT(t->off); LPUT(t->align); LPUT(t->reloc); LPUT(t->nreloc); LPUT(t->flag); LPUT(t->res1); /* reserved */ LPUT(t->res2); /* reserved */ LPUT(0); /* reserved */ } else { strnput(t->name, 16); strnput(t->segname, 16); LPUT(t->addr); LPUT(t->size); LPUT(t->off); LPUT(t->align); LPUT(t->reloc); LPUT(t->nreloc); LPUT(t->flag); LPUT(t->res1); /* reserved */ LPUT(t->res2); /* reserved */ } } } for(i=0; itype); LPUT(4*(l->ndata+2)); for(j=0; jndata; j++) LPUT(l->data[j]); } return cpos() - o1; } void domacho(void) { LSym *s; if(debug['d']) return; // empirically, string table must begin with " \x00". s = linklookup(ctxt, ".machosymstr", 0); s->type = SMACHOSYMSTR; s->reachable = 1; adduint8(ctxt, s, ' '); adduint8(ctxt, s, '\0'); s = linklookup(ctxt, ".machosymtab", 0); s->type = SMACHOSYMTAB; s->reachable = 1; if(linkmode != LinkExternal) { s = linklookup(ctxt, ".plt", 0); // will be __symbol_stub s->type = SMACHOPLT; s->reachable = 1; s = linklookup(ctxt, ".got", 0); // will be __nl_symbol_ptr s->type = SMACHOGOT; s->reachable = 1; s->align = 4; s = linklookup(ctxt, ".linkedit.plt", 0); // indirect table for .plt s->type = SMACHOINDIRECTPLT; s->reachable = 1; s = linklookup(ctxt, ".linkedit.got", 0); // indirect table for .got s->type = SMACHOINDIRECTGOT; s->reachable = 1; } } void machoadddynlib(char *lib) { // Will need to store the library name rounded up // and 24 bytes of header metadata. If not enough // space, grab another page of initial space at the // beginning of the output file. load_budget -= (strlen(lib)+7)/8*8 + 24; if(load_budget < 0) { HEADR += 4096; INITTEXT += 4096; load_budget += 4096; } if(ndylib%32 == 0) dylib = erealloc(dylib, (ndylib+32)*sizeof dylib[0]); dylib[ndylib++] = lib; } static void machoshbits(MachoSeg *mseg, Section *sect, char *segname) { MachoSect *msect; char buf[40]; char *p; snprint(buf, sizeof buf, "__%s", sect->name+1); for(p=buf; *p; p++) if(*p == '.') *p = '_'; msect = newMachoSect(mseg, estrdup(buf), segname); if(sect->rellen > 0) { msect->reloc = sect->reloff; msect->nreloc = sect->rellen / 8; } while(1<align < sect->align) msect->align++; msect->addr = sect->vaddr; msect->size = sect->len; if(sect->vaddr < sect->seg->vaddr + sect->seg->filelen) { // data in file if(sect->len > sect->seg->vaddr + sect->seg->filelen - sect->vaddr) diag("macho cannot represent section %s crossing data and bss", sect->name); msect->off = sect->seg->fileoff + sect->vaddr - sect->seg->vaddr; } else { // zero fill msect->off = 0; msect->flag |= 1; } if(sect->rwx & 1) msect->flag |= 0x400; /* has instructions */ if(strcmp(sect->name, ".plt") == 0) { msect->name = "__symbol_stub1"; msect->flag = 0x80000408; /* only instructions, code, symbol stubs */ msect->res1 = 0;//nkind[SymKindLocal]; msect->res2 = 6; } if(strcmp(sect->name, ".got") == 0) { msect->name = "__nl_symbol_ptr"; msect->flag = 6; /* section with nonlazy symbol pointers */ msect->res1 = linklookup(ctxt, ".linkedit.plt", 0)->size / 4; /* offset into indirect symbol table */ } } void asmbmacho(void) { vlong v, w; vlong va; int a, i; MachoHdr *mh; MachoSeg *ms; MachoLoad *ml; Section *sect; /* apple MACH */ va = INITTEXT - HEADR; mh = getMachoHdr(); switch(thechar){ default: diag("unknown mach architecture"); errorexit(); case '6': mh->cpu = MACHO_CPU_AMD64; mh->subcpu = MACHO_SUBCPU_X86; break; case '8': mh->cpu = MACHO_CPU_386; mh->subcpu = MACHO_SUBCPU_X86; break; } ms = nil; if(linkmode == LinkExternal) { /* segment for entire file */ ms = newMachoSeg("", 40); ms->fileoffset = segtext.fileoff; ms->filesize = segdata.fileoff + segdata.filelen - segtext.fileoff; } /* segment for zero page */ if(linkmode != LinkExternal) { ms = newMachoSeg("__PAGEZERO", 0); ms->vsize = va; } /* text */ v = rnd(HEADR+segtext.len, INITRND); if(linkmode != LinkExternal) { ms = newMachoSeg("__TEXT", 20); ms->vaddr = va; ms->vsize = v; ms->fileoffset = 0; ms->filesize = v; ms->prot1 = 7; ms->prot2 = 5; } for(sect=segtext.sect; sect!=nil; sect=sect->next) machoshbits(ms, sect, "__TEXT"); /* data */ if(linkmode != LinkExternal) { w = segdata.len; ms = newMachoSeg("__DATA", 20); ms->vaddr = va+v; ms->vsize = w; ms->fileoffset = v; ms->filesize = segdata.filelen; ms->prot1 = 3; ms->prot2 = 3; } for(sect=segdata.sect; sect!=nil; sect=sect->next) machoshbits(ms, sect, "__DATA"); if(linkmode != LinkExternal) { switch(thechar) { default: diag("unknown macho architecture"); errorexit(); case '6': ml = newMachoLoad(5, 42+2); /* unix thread */ ml->data[0] = 4; /* thread type */ ml->data[1] = 42; /* word count */ ml->data[2+32] = entryvalue(); /* start pc */ ml->data[2+32+1] = entryvalue()>>16>>16; // hide >>32 for 8l break; case '8': ml = newMachoLoad(5, 16+2); /* unix thread */ ml->data[0] = 1; /* thread type */ ml->data[1] = 16; /* word count */ ml->data[2+10] = entryvalue(); /* start pc */ break; } } if(!debug['d']) { LSym *s1, *s2, *s3, *s4; // must match domacholink below s1 = linklookup(ctxt, ".machosymtab", 0); s2 = linklookup(ctxt, ".linkedit.plt", 0); s3 = linklookup(ctxt, ".linkedit.got", 0); s4 = linklookup(ctxt, ".machosymstr", 0); if(linkmode != LinkExternal) { ms = newMachoSeg("__LINKEDIT", 0); ms->vaddr = va+v+rnd(segdata.len, INITRND); ms->vsize = s1->size + s2->size + s3->size + s4->size; ms->fileoffset = linkoff; ms->filesize = ms->vsize; ms->prot1 = 7; ms->prot2 = 3; } ml = newMachoLoad(2, 4); /* LC_SYMTAB */ ml->data[0] = linkoff; /* symoff */ ml->data[1] = nsortsym; /* nsyms */ ml->data[2] = linkoff + s1->size + s2->size + s3->size; /* stroff */ ml->data[3] = s4->size; /* strsize */ machodysymtab(); if(linkmode != LinkExternal) { ml = newMachoLoad(14, 6); /* LC_LOAD_DYLINKER */ ml->data[0] = 12; /* offset to string */ strcpy((char*)&ml->data[1], "/usr/lib/dyld"); for(i=0; idata[0] = 24; /* offset of string from beginning of load */ ml->data[1] = 0; /* time stamp */ ml->data[2] = 0; /* version */ ml->data[3] = 0; /* compatibility version */ strcpy((char*)&ml->data[4], dylib[i]); } } } // TODO: dwarf headers go in ms too if(!debug['s'] && linkmode != LinkExternal) dwarfaddmachoheaders(); a = machowrite(); if(a > HEADR) diag("HEADR too small: %d > %d", a, HEADR); } static int symkind(LSym *s) { if(s->type == SDYNIMPORT) return SymKindUndef; if(s->cgoexport) return SymKindExtdef; return SymKindLocal; } static void addsym(LSym *s, char *name, int type, vlong addr, vlong size, int ver, LSym *gotype) { USED(name); USED(addr); USED(size); USED(ver); USED(gotype); if(s == nil) return; switch(type) { default: return; case 'D': case 'B': case 'T': break; } if(sortsym) { sortsym[nsortsym] = s; nkind[symkind(s)]++; } nsortsym++; } static int scmp(const void *p1, const void *p2) { LSym *s1, *s2; int k1, k2; s1 = *(LSym**)p1; s2 = *(LSym**)p2; k1 = symkind(s1); k2 = symkind(s2); if(k1 != k2) return k1 - k2; return strcmp(s1->extname, s2->extname); } static void machogenasmsym(void (*put)(LSym*, char*, int, vlong, vlong, int, LSym*)) { LSym *s; genasmsym(put); for(s=ctxt->allsym; s; s=s->allsym) if(s->type == SDYNIMPORT || s->type == SHOSTOBJ) if(s->reachable) put(s, nil, 'D', 0, 0, 0, nil); } void machosymorder(void) { int i; // On Mac OS X Mountain Lion, we must sort exported symbols // So we sort them here and pre-allocate dynid for them // See http://golang.org/issue/4029 for(i=0; ireachable = 1; machogenasmsym(addsym); sortsym = mal(nsortsym * sizeof sortsym[0]); nsortsym = 0; machogenasmsym(addsym); qsort(sortsym, nsortsym, sizeof sortsym[0], scmp); for(i=0; idynid = i; } static void machosymtab(void) { int i; LSym *symtab, *symstr, *s, *o; char *p; symtab = linklookup(ctxt, ".machosymtab", 0); symstr = linklookup(ctxt, ".machosymstr", 0); for(i=0; isize); // Only add _ to C symbols. Go symbols have dot in the name. if(strstr(s->extname, ".") == nil) adduint8(ctxt, symstr, '_'); // replace "·" as ".", because DTrace cannot handle it. if(strstr(s->extname, "·") == nil) { addstring(symstr, s->extname); } else { p = s->extname; while (*p++ != '\0') { if((uchar)*p == 0xc2 && (uchar)*(p+1) == 0xb7) { adduint8(ctxt, symstr, '.'); p++; } else { adduint8(ctxt, symstr, *p); } } adduint8(ctxt, symstr, '\0'); } if(s->type == SDYNIMPORT || s->type == SHOSTOBJ) { adduint8(ctxt, symtab, 0x01); // type N_EXT, external symbol adduint8(ctxt, symtab, 0); // no section adduint16(ctxt, symtab, 0); // desc adduintxx(ctxt, symtab, 0, PtrSize); // no value } else { if(s->cgoexport) adduint8(ctxt, symtab, 0x0f); else adduint8(ctxt, symtab, 0x0e); o = s; while(o->outer != nil) o = o->outer; if(o->sect == nil) { diag("missing section for %s", s->name); adduint8(ctxt, symtab, 0); } else adduint8(ctxt, symtab, o->sect->extnum); adduint16(ctxt, symtab, 0); // desc adduintxx(ctxt, symtab, symaddr(s), PtrSize); } } } static void machodysymtab(void) { int n; MachoLoad *ml; LSym *s1, *s2, *s3; ml = newMachoLoad(11, 18); /* LC_DYSYMTAB */ n = 0; ml->data[0] = n; /* ilocalsym */ ml->data[1] = nkind[SymKindLocal]; /* nlocalsym */ n += nkind[SymKindLocal]; ml->data[2] = n; /* iextdefsym */ ml->data[3] = nkind[SymKindExtdef]; /* nextdefsym */ n += nkind[SymKindExtdef]; ml->data[4] = n; /* iundefsym */ ml->data[5] = nkind[SymKindUndef]; /* nundefsym */ ml->data[6] = 0; /* tocoffset */ ml->data[7] = 0; /* ntoc */ ml->data[8] = 0; /* modtaboff */ ml->data[9] = 0; /* nmodtab */ ml->data[10] = 0; /* extrefsymoff */ ml->data[11] = 0; /* nextrefsyms */ // must match domacholink below s1 = linklookup(ctxt, ".machosymtab", 0); s2 = linklookup(ctxt, ".linkedit.plt", 0); s3 = linklookup(ctxt, ".linkedit.got", 0); ml->data[12] = linkoff + s1->size; /* indirectsymoff */ ml->data[13] = (s2->size + s3->size) / 4; /* nindirectsyms */ ml->data[14] = 0; /* extreloff */ ml->data[15] = 0; /* nextrel */ ml->data[16] = 0; /* locreloff */ ml->data[17] = 0; /* nlocrel */ } vlong domacholink(void) { int size; LSym *s1, *s2, *s3, *s4; machosymtab(); // write data that will be linkedit section s1 = linklookup(ctxt, ".machosymtab", 0); s2 = linklookup(ctxt, ".linkedit.plt", 0); s3 = linklookup(ctxt, ".linkedit.got", 0); s4 = linklookup(ctxt, ".machosymstr", 0); // Force the linkedit section to end on a 16-byte // boundary. This allows pure (non-cgo) Go binaries // to be code signed correctly. // // Apple's codesign_allocate (a helper utility for // the codesign utility) can do this fine itself if // it is run on a dynamic Mach-O binary. However, // when it is run on a pure (non-cgo) Go binary, where // the linkedit section is mostly empty, it fails to // account for the extra padding that it itself adds // when adding the LC_CODE_SIGNATURE load command // (which must be aligned on a 16-byte boundary). // // By forcing the linkedit section to end on a 16-byte // boundary, codesign_allocate will not need to apply // any alignment padding itself, working around the // issue. while(s4->size%16) adduint8(ctxt, s4, 0); size = s1->size + s2->size + s3->size + s4->size; if(size > 0) { linkoff = rnd(HEADR+segtext.len, INITRND) + rnd(segdata.filelen, INITRND) + rnd(segdwarf.filelen, INITRND); cseek(linkoff); cwrite(s1->p, s1->size); cwrite(s2->p, s2->size); cwrite(s3->p, s3->size); cwrite(s4->p, s4->size); } return rnd(size, INITRND); } void machorelocsect(Section *sect, LSym *first) { LSym *sym; int32 eaddr; Reloc *r; // If main section has no bits, nothing to relocate. if(sect->vaddr >= sect->seg->vaddr + sect->seg->filelen) return; sect->reloff = cpos(); for(sym = first; sym != nil; sym = sym->next) { if(!sym->reachable) continue; if(sym->value >= sect->vaddr) break; } eaddr = sect->vaddr + sect->len; for(; sym != nil; sym = sym->next) { if(!sym->reachable) continue; if(sym->value >= eaddr) break; ctxt->cursym = sym; for(r = sym->r; r < sym->r+sym->nr; r++) { if(r->done) continue; if(machoreloc1(r, sym->value+r->off - sect->vaddr) < 0) diag("unsupported obj reloc %d/%d to %s", r->type, r->siz, r->sym->name); } } sect->rellen = cpos() - sect->reloff; } void machoemitreloc(void) { Section *sect; while(cpos()&7) cput(0); machorelocsect(segtext.sect, ctxt->textp); for(sect=segtext.sect->next; sect!=nil; sect=sect->next) machorelocsect(sect, datap); for(sect=segdata.sect; sect!=nil; sect=sect->next) machorelocsect(sect, datap); } go/src/cmd/ld/macho.h0100644000000000000000000000345012412656734014667 0ustar00rootroot00000000000000// Copyright 2009 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. typedef struct MachoHdr MachoHdr; struct MachoHdr { uint32 cpu; uint32 subcpu; }; typedef struct MachoSect MachoSect; struct MachoSect { char* name; char* segname; uint64 addr; uint64 size; uint32 off; uint32 align; uint32 reloc; uint32 nreloc; uint32 flag; uint32 res1; uint32 res2; }; typedef struct MachoSeg MachoSeg; struct MachoSeg { char* name; uint64 vsize; uint64 vaddr; uint64 fileoffset; uint64 filesize; uint32 prot1; uint32 prot2; uint32 nsect; uint32 msect; MachoSect *sect; uint32 flag; }; typedef struct MachoLoad MachoLoad; struct MachoLoad { uint32 type; uint32 ndata; uint32 *data; }; MachoHdr* getMachoHdr(void); MachoSeg* newMachoSeg(char*, int); MachoSect* newMachoSect(MachoSeg*, char*, char*); MachoLoad* newMachoLoad(uint32, uint32); int machowrite(void); void machoinit(void); void machosymorder(void); void machoemitreloc(void); int machoreloc1(Reloc*, vlong); /* * Total amount of space to reserve at the start of the file * for Header, PHeaders, and SHeaders. * May waste some. */ #define INITIAL_MACHO_HEADR 4*1024 enum { MACHO_CPU_AMD64 = (1<<24)|7, MACHO_CPU_386 = 7, MACHO_SUBCPU_X86 = 3, MACHO32SYMSIZE = 12, MACHO64SYMSIZE = 16, MACHO_X86_64_RELOC_UNSIGNED = 0, MACHO_X86_64_RELOC_SIGNED = 1, MACHO_X86_64_RELOC_BRANCH = 2, MACHO_X86_64_RELOC_GOT_LOAD = 3, MACHO_X86_64_RELOC_GOT = 4, MACHO_X86_64_RELOC_SUBTRACTOR = 5, MACHO_X86_64_RELOC_SIGNED_1 = 6, MACHO_X86_64_RELOC_SIGNED_2 = 7, MACHO_X86_64_RELOC_SIGNED_4 = 8, MACHO_GENERIC_RELOC_VANILLA = 0, MACHO_FAKE_GOTPCREL = 100, }; void domacho(void); vlong domacholink(void); void asmbmacho(void); void machoadddynlib(char*); go/src/cmd/ld/pass.c0100644000000000000000000000547112412656737014551 0ustar00rootroot00000000000000// Inferno utils/6l/pass.c // http://code.google.com/p/inferno-os/source/browse/utils/6l/pass.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Code and data passes. #include "l.h" #include "../ld/lib.h" #include "../../pkg/runtime/stack.h" void follow(void) { LSym *s; if(debug['v']) Bprint(&bso, "%5.2f follow\n", cputime()); Bflush(&bso); for(s = ctxt->textp; s != nil; s = s->next) ctxt->arch->follow(ctxt, s); } void patch(void) { LSym *s; if(debug['v']) Bprint(&bso, "%5.2f mkfwd\n", cputime()); Bflush(&bso); for(s = ctxt->textp; s != nil; s = s->next) mkfwd(s); if(debug['v']) Bprint(&bso, "%5.2f patch\n", cputime()); Bflush(&bso); if(flag_shared) { s = linklookup(ctxt, "init_array", 0); s->type = SINITARR; s->reachable = 1; s->hide = 1; addaddr(ctxt, s, linklookup(ctxt, INITENTRY, 0)); } for(s = ctxt->textp; s != nil; s = s->next) linkpatch(ctxt, s); } void dostkoff(void) { LSym *s; for(s = ctxt->textp; s != nil; s = s->next) ctxt->arch->addstacksplit(ctxt, s); } void span(void) { LSym *s; if(debug['v']) Bprint(&bso, "%5.2f span\n", cputime()); for(s = ctxt->textp; s != nil; s = s->next) ctxt->arch->assemble(ctxt, s); } void pcln(void) { LSym *s; for(s = ctxt->textp; s != nil; s = s->next) linkpcln(ctxt, s); } go/src/cmd/ld/pcln.c0100644000000000000000000001432312412656737014533 0ustar00rootroot00000000000000// Copyright 2013 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. #include "l.h" #include "lib.h" #include "../../pkg/runtime/funcdata.h" static void addvarint(Pcdata *d, uint32 val) { int32 n; uint32 v; uchar *p; n = 0; for(v = val; v >= 0x80; v >>= 7) n++; n++; if(d->n + n > d->m) { d->m = (d->n + n)*2; d->p = erealloc(d->p, d->m); } p = d->p + d->n; for(v = val; v >= 0x80; v >>= 7) *p++ = v | 0x80; *p = v; d->n += n; } static int32 addpctab(LSym *ftab, int32 off, Pcdata *d) { int32 start; start = ftab->np; symgrow(ctxt, ftab, start + d->n); memmove(ftab->p + start, d->p, d->n); return setuint32(ctxt, ftab, off, start); } static int32 ftabaddstring(LSym *ftab, char *s) { int32 n, start; n = strlen(s)+1; start = ftab->np; symgrow(ctxt, ftab, start+n+1); strcpy((char*)ftab->p + start, s); return start; } static void renumberfiles(Link *ctxt, LSym **files, int nfiles, Pcdata *d) { int i; LSym *f; Pcdata out; Pciter it; uint32 v; int32 oldval, newval, val, dv; // Give files numbers. for(i=0; itype != SFILEPATH) { f->value = ++ctxt->nhistfile; f->type = SFILEPATH; f->next = ctxt->filesyms; ctxt->filesyms = f; } } newval = -1; memset(&out, 0, sizeof out); for(pciterinit(ctxt, &it, d); !it.done; pciternext(&it)) { // value delta oldval = it.value; if(oldval == -1) val = -1; else { if(oldval < 0 || oldval >= nfiles) sysfatal("bad pcdata %d", oldval); val = files[oldval]->value; } dv = val - newval; newval = val; v = (uint32)(dv<<1) ^ (uint32)(int32)(dv>>31); addvarint(&out, v); // pc delta addvarint(&out, (it.nextpc - it.pc) / it.pcscale); } // terminating value delta addvarint(&out, 0); free(d->p); *d = out; } // pclntab initializes the pclntab symbol with // runtime function and file name information. void pclntab(void) { int32 i, nfunc, start, funcstart; LSym *ftab, *s; int32 off, end, frameptrsize; int64 funcdata_bytes; Pcln *pcln; Pciter it; static Pcln zpcln; funcdata_bytes = 0; ftab = linklookup(ctxt, "pclntab", 0); ftab->type = SPCLNTAB; ftab->reachable = 1; // See golang.org/s/go12symtab for the format. Briefly: // 8-byte header // nfunc [PtrSize bytes] // function table, alternating PC and offset to func struct [each entry PtrSize bytes] // end PC [PtrSize bytes] // offset to file table [4 bytes] nfunc = 0; for(ctxt->cursym = ctxt->textp; ctxt->cursym != nil; ctxt->cursym = ctxt->cursym->next) nfunc++; symgrow(ctxt, ftab, 8+PtrSize+nfunc*2*PtrSize+PtrSize+4); setuint32(ctxt, ftab, 0, 0xfffffffb); setuint8(ctxt, ftab, 6, MINLC); setuint8(ctxt, ftab, 7, PtrSize); setuintxx(ctxt, ftab, 8, nfunc, PtrSize); nfunc = 0; for(ctxt->cursym = ctxt->textp; ctxt->cursym != nil; ctxt->cursym = ctxt->cursym->next, nfunc++) { pcln = ctxt->cursym->pcln; if(pcln == nil) pcln = &zpcln; funcstart = ftab->np; funcstart += -ftab->np & (PtrSize-1); setaddr(ctxt, ftab, 8+PtrSize+nfunc*2*PtrSize, ctxt->cursym); setuintxx(ctxt, ftab, 8+PtrSize+nfunc*2*PtrSize+PtrSize, funcstart, PtrSize); // fixed size of struct, checked below off = funcstart; end = funcstart + PtrSize + 3*4 + 5*4 + pcln->npcdata*4 + pcln->nfuncdata*PtrSize; if(pcln->nfuncdata > 0 && (end&(PtrSize-1))) end += 4; symgrow(ctxt, ftab, end); // entry uintptr off = setaddr(ctxt, ftab, off, ctxt->cursym); // name int32 off = setuint32(ctxt, ftab, off, ftabaddstring(ftab, ctxt->cursym->name)); // args int32 // TODO: Move into funcinfo. off = setuint32(ctxt, ftab, off, ctxt->cursym->args); // frame int32 // TODO: Remove entirely. The pcsp table is more precise. // This is only used by a fallback case during stack walking // when a called function doesn't have argument information. // We need to make sure everything has argument information // and then remove this. frameptrsize = PtrSize; if(ctxt->cursym->leaf) frameptrsize = 0; off = setuint32(ctxt, ftab, off, ctxt->cursym->locals + frameptrsize); if(pcln != &zpcln) { renumberfiles(ctxt, pcln->file, pcln->nfile, &pcln->pcfile); if(0) { // Sanity check the new numbering for(pciterinit(ctxt, &it, &pcln->pcfile); !it.done; pciternext(&it)) { if(it.value < 1 || it.value > ctxt->nhistfile) { diag("bad file number in pcfile: %d not in range [1, %d]\n", it.value, ctxt->nhistfile); errorexit(); } } } } // pcdata off = addpctab(ftab, off, &pcln->pcsp); off = addpctab(ftab, off, &pcln->pcfile); off = addpctab(ftab, off, &pcln->pcline); off = setuint32(ctxt, ftab, off, pcln->npcdata); off = setuint32(ctxt, ftab, off, pcln->nfuncdata); for(i=0; inpcdata; i++) off = addpctab(ftab, off, &pcln->pcdata[i]); // funcdata, must be pointer-aligned and we're only int32-aligned. // Missing funcdata will be 0 (nil pointer). if(pcln->nfuncdata > 0) { if(off&(PtrSize-1)) off += 4; for(i=0; infuncdata; i++) { if(pcln->funcdata[i] == nil) setuintxx(ctxt, ftab, off+PtrSize*i, pcln->funcdataoff[i], PtrSize); else { // TODO: Dedup. funcdata_bytes += pcln->funcdata[i]->size; setaddrplus(ctxt, ftab, off+PtrSize*i, pcln->funcdata[i], pcln->funcdataoff[i]); } } off += pcln->nfuncdata*PtrSize; } if(off != end) { diag("bad math in functab: funcstart=%d off=%d but end=%d (npcdata=%d nfuncdata=%d ptrsize=%d)", funcstart, off, end, pcln->npcdata, pcln->nfuncdata, PtrSize); errorexit(); } // Final entry of table is just end pc. if(ctxt->cursym->next == nil) setaddrplus(ctxt, ftab, 8+PtrSize+(nfunc+1)*2*PtrSize, ctxt->cursym, ctxt->cursym->size); } // Start file table. start = ftab->np; start += -ftab->np & (PtrSize-1); setuint32(ctxt, ftab, 8+PtrSize+nfunc*2*PtrSize+PtrSize, start); symgrow(ctxt, ftab, start+(ctxt->nhistfile+1)*4); setuint32(ctxt, ftab, start, ctxt->nhistfile); for(s = ctxt->filesyms; s != S; s = s->next) setuint32(ctxt, ftab, start + s->value*4, ftabaddstring(ftab, s->name)); ftab->size = ftab->np; if(debug['v']) Bprint(&bso, "%5.2f pclntab=%lld bytes, funcdata total %lld bytes\n", cputime(), (vlong)ftab->size, (vlong)funcdata_bytes); } go/src/cmd/ld/pe.c0100644000000000000000000004017412412656734014203 0ustar00rootroot00000000000000// Copyright 2009 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. // PE (Portable Executable) file writing // http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx #include "l.h" #include "../ld/lib.h" #include "../ld/pe.h" #include "../ld/dwarf.h" // DOS stub that prints out // "This program cannot be run in DOS mode." static char dosstub[] = { 0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0e, 0x1f, 0xba, 0x0e, 0x00, 0xb4, 0x09, 0xcd, 0x21, 0xb8, 0x01, 0x4c, 0xcd, 0x21, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x63, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x44, 0x4f, 0x53, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x0d, 0x0d, 0x0a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static LSym *rsrcsym; static char* strtbl; static int strtblnextoff; static int strtblsize; int32 PESECTHEADR; int32 PEFILEHEADR; static int pe64; static int nsect; static int nextsectoff; static int nextfileoff; static int textsect; static int datasect; static IMAGE_FILE_HEADER fh; static IMAGE_OPTIONAL_HEADER oh; static PE64_IMAGE_OPTIONAL_HEADER oh64; static IMAGE_SECTION_HEADER sh[16]; static IMAGE_DATA_DIRECTORY* dd; #define set(n, v) (pe64 ? (oh64.n = v) : (oh.n = v)) #define put(v) (pe64 ? vputl(v) : lputl(v)) typedef struct Imp Imp; struct Imp { LSym* s; uvlong off; Imp* next; }; typedef struct Dll Dll; struct Dll { char* name; uvlong nameoff; uvlong thunkoff; Imp* ms; Dll* next; }; static Dll* dr; static LSym *dexport[1024]; static int nexport; typedef struct COFFSym COFFSym; struct COFFSym { LSym* sym; int strtbloff; int sect; vlong value; }; static COFFSym* coffsym; static int ncoffsym; static IMAGE_SECTION_HEADER* addpesection(char *name, int sectsize, int filesize) { IMAGE_SECTION_HEADER *h; if(nsect == 16) { diag("too many sections"); errorexit(); } h = &sh[nsect++]; strncpy((char*)h->Name, name, sizeof(h->Name)); h->VirtualSize = sectsize; h->VirtualAddress = nextsectoff; nextsectoff = rnd(nextsectoff+sectsize, PESECTALIGN); h->PointerToRawData = nextfileoff; if(filesize > 0) { h->SizeOfRawData = rnd(filesize, PEFILEALIGN); nextfileoff += h->SizeOfRawData; } return h; } static void chksectoff(IMAGE_SECTION_HEADER *h, vlong off) { if(off != h->PointerToRawData) { diag("%s.PointerToRawData = %#llux, want %#llux", (char *)h->Name, (vlong)h->PointerToRawData, off); errorexit(); } } static void chksectseg(IMAGE_SECTION_HEADER *h, Segment *s) { if(s->vaddr-PEBASE != h->VirtualAddress) { diag("%s.VirtualAddress = %#llux, want %#llux", (char *)h->Name, (vlong)h->VirtualAddress, (vlong)(s->vaddr-PEBASE)); errorexit(); } if(s->fileoff != h->PointerToRawData) { diag("%s.PointerToRawData = %#llux, want %#llux", (char *)h->Name, (vlong)h->PointerToRawData, (vlong)(s->fileoff)); errorexit(); } } void peinit(void) { int32 l; switch(thechar) { // 64-bit architectures case '6': pe64 = 1; l = sizeof(oh64); dd = oh64.DataDirectory; break; // 32-bit architectures default: l = sizeof(oh); dd = oh.DataDirectory; break; } PEFILEHEADR = rnd(sizeof(dosstub)+sizeof(fh)+l+sizeof(sh), PEFILEALIGN); PESECTHEADR = rnd(PEFILEHEADR, PESECTALIGN); nextsectoff = PESECTHEADR; nextfileoff = PEFILEHEADR; // some mingw libs depend on this symbol, for example, FindPESectionByName xdefine("__image_base__", SDATA, PEBASE); xdefine("_image_base__", SDATA, PEBASE); } static void pewrite(void) { cseek(0); cwrite(dosstub, sizeof dosstub); strnput("PE", 4); // TODO: This code should not assume that the // memory representation is little-endian or // that the structs are packed identically to // their file representation. cwrite(&fh, sizeof fh); if(pe64) cwrite(&oh64, sizeof oh64); else cwrite(&oh, sizeof oh); cwrite(sh, nsect * sizeof sh[0]); } static void strput(char *s) { int n; for(n=0; *s; n++) cput(*s++); cput('\0'); n++; // string must be padded to even size if(n%2) cput('\0'); } static Dll* initdynimport(void) { Imp *m; Dll *d; LSym *s, *dynamic; dr = nil; m = nil; for(s = ctxt->allsym; s != S; s = s->allsym) { if(!s->reachable || s->type != SDYNIMPORT) continue; for(d = dr; d != nil; d = d->next) { if(strcmp(d->name,s->dynimplib) == 0) { m = mal(sizeof *m); break; } } if(d == nil) { d = mal(sizeof *d); d->name = s->dynimplib; d->next = dr; dr = d; m = mal(sizeof *m); } m->s = s; m->next = d->ms; d->ms = m; } dynamic = linklookup(ctxt, ".windynamic", 0); dynamic->reachable = 1; dynamic->type = SWINDOWS; for(d = dr; d != nil; d = d->next) { for(m = d->ms; m != nil; m = m->next) { m->s->type = SWINDOWS | SSUB; m->s->sub = dynamic->sub; dynamic->sub = m->s; m->s->value = dynamic->size; dynamic->size += PtrSize; } dynamic->size += PtrSize; } return dr; } static void addimports(IMAGE_SECTION_HEADER *datsect) { IMAGE_SECTION_HEADER *isect; uvlong n, oftbase, ftbase; vlong startoff, endoff; Imp *m; Dll *d; LSym* dynamic; startoff = cpos(); dynamic = linklookup(ctxt, ".windynamic", 0); // skip import descriptor table (will write it later) n = 0; for(d = dr; d != nil; d = d->next) n++; cseek(startoff + sizeof(IMAGE_IMPORT_DESCRIPTOR) * (n + 1)); // write dll names for(d = dr; d != nil; d = d->next) { d->nameoff = cpos() - startoff; strput(d->name); } // write function names for(d = dr; d != nil; d = d->next) { for(m = d->ms; m != nil; m = m->next) { m->off = nextsectoff + cpos() - startoff; wputl(0); // hint strput(m->s->extname); } } // write OriginalFirstThunks oftbase = cpos() - startoff; n = cpos(); for(d = dr; d != nil; d = d->next) { d->thunkoff = cpos() - n; for(m = d->ms; m != nil; m = m->next) put(m->off); put(0); } // add pe section and pad it at the end n = cpos() - startoff; isect = addpesection(".idata", n, n); isect->Characteristics = IMAGE_SCN_CNT_INITIALIZED_DATA| IMAGE_SCN_MEM_READ|IMAGE_SCN_MEM_WRITE; chksectoff(isect, startoff); strnput("", isect->SizeOfRawData - n); endoff = cpos(); // write FirstThunks (allocated in .data section) ftbase = dynamic->value - datsect->VirtualAddress - PEBASE; cseek(datsect->PointerToRawData + ftbase); for(d = dr; d != nil; d = d->next) { for(m = d->ms; m != nil; m = m->next) put(m->off); put(0); } // finally write import descriptor table cseek(startoff); for(d = dr; d != nil; d = d->next) { lputl(isect->VirtualAddress + oftbase + d->thunkoff); lputl(0); lputl(0); lputl(isect->VirtualAddress + d->nameoff); lputl(datsect->VirtualAddress + ftbase + d->thunkoff); } lputl(0); //end lputl(0); lputl(0); lputl(0); lputl(0); // update data directory dd[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress = isect->VirtualAddress; dd[IMAGE_DIRECTORY_ENTRY_IMPORT].Size = isect->VirtualSize; dd[IMAGE_DIRECTORY_ENTRY_IAT].VirtualAddress = dynamic->value - PEBASE; dd[IMAGE_DIRECTORY_ENTRY_IAT].Size = dynamic->size; cseek(endoff); } static int scmp(const void *p1, const void *p2) { LSym *s1, *s2; s1 = *(LSym**)p1; s2 = *(LSym**)p2; return strcmp(s1->extname, s2->extname); } static void initdynexport(void) { LSym *s; nexport = 0; for(s = ctxt->allsym; s != S; s = s->allsym) { if(!s->reachable || !(s->cgoexport & CgoExportDynamic)) continue; if(nexport+1 > sizeof(dexport)/sizeof(dexport[0])) { diag("pe dynexport table is full"); errorexit(); } dexport[nexport] = s; nexport++; } qsort(dexport, nexport, sizeof dexport[0], scmp); } void addexports(void) { IMAGE_SECTION_HEADER *sect; IMAGE_EXPORT_DIRECTORY e; int size, i, va, va_name, va_addr, va_na, v; size = sizeof e + 10*nexport + strlen(outfile) + 1; for(i=0; iextname) + 1; if (nexport == 0) return; sect = addpesection(".edata", size, size); sect->Characteristics = IMAGE_SCN_CNT_INITIALIZED_DATA|IMAGE_SCN_MEM_READ; chksectoff(sect, cpos()); va = sect->VirtualAddress; dd[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress = va; dd[IMAGE_DIRECTORY_ENTRY_EXPORT].Size = sect->VirtualSize; va_name = va + sizeof e + nexport*4; va_addr = va + sizeof e; va_na = va + sizeof e + nexport*8; e.Characteristics = 0; e.MajorVersion = 0; e.MinorVersion = 0; e.NumberOfFunctions = nexport; e.NumberOfNames = nexport; e.Name = va + sizeof e + nexport*10; // Program names. e.Base = 1; e.AddressOfFunctions = va_addr; e.AddressOfNames = va_name; e.AddressOfNameOrdinals = va_na; // put IMAGE_EXPORT_DIRECTORY for (i=0; ivalue - PEBASE); // put EXPORT Name Pointer Table v = e.Name + strlen(outfile)+1; for(i=0; iextname)+1; } // put EXPORT Ordinal Table for(i=0; iextname, strlen(dexport[i]->extname)+1); strnput("", sect->SizeOfRawData - size); } void dope(void) { LSym *rel; /* relocation table */ rel = linklookup(ctxt, ".rel", 0); rel->reachable = 1; rel->type = SELFROSECT; initdynimport(); initdynexport(); } static int strtbladd(char *name) { int newsize, thisoff; newsize = strtblnextoff + strlen(name) + 1; if(newsize > strtblsize) { strtblsize = 2 * (newsize + (1<<18)); strtbl = realloc(strtbl, strtblsize); } thisoff = strtblnextoff+4; // first string starts at offset=4 strcpy(&strtbl[strtblnextoff], name); strtblnextoff += strlen(name); strtbl[strtblnextoff] = 0; strtblnextoff++; return thisoff; } /* * For more than 8 characters section names, name contains a slash (/) that is * followed by an ASCII representation of a decimal number that is an offset into * the string table. * reference: pecoff_v8.docx Page 24. * */ IMAGE_SECTION_HEADER* newPEDWARFSection(char *name, vlong size) { IMAGE_SECTION_HEADER *h; char s[8]; int off; if(size == 0) return nil; off = strtbladd(name); sprint(s, "/%d\0", off); h = addpesection(s, size, size); h->Characteristics = IMAGE_SCN_MEM_READ| IMAGE_SCN_MEM_DISCARDABLE; return h; } static void addsym(LSym *s, char *name, int type, vlong addr, vlong size, int ver, LSym *gotype) { COFFSym *cs; USED(name); USED(addr); USED(size); USED(ver); USED(gotype); if(s == nil) return; if(s->sect == nil) return; switch(type) { default: return; case 'D': case 'B': case 'T': break; } if(coffsym) { cs = &coffsym[ncoffsym]; cs->sym = s; if(strlen(s->name) > 8) cs->strtbloff = strtbladd(s->name); if(s->value >= segdata.vaddr) { cs->value = s->value - segdata.vaddr; cs->sect = datasect; } else if(s->value >= segtext.vaddr) { cs->value = s->value - segtext.vaddr; cs->sect = textsect; } else { cs->value = 0; cs->sect = 0; diag("addsym %#llx", addr); } } ncoffsym++; } static void addsymtable(void) { IMAGE_SECTION_HEADER *h; int i, size; COFFSym *s; if(!debug['s']) { genasmsym(addsym); coffsym = mal(ncoffsym * sizeof coffsym[0]); ncoffsym = 0; genasmsym(addsym); } size = strtblnextoff + 4 + 18*ncoffsym; h = addpesection(".symtab", size, size); h->Characteristics = IMAGE_SCN_MEM_READ| IMAGE_SCN_MEM_DISCARDABLE; chksectoff(h, cpos()); fh.PointerToSymbolTable = cpos(); fh.NumberOfSymbols = ncoffsym; // put COFF symbol table for (i=0; istrtbloff == 0) strnput(s->sym->name, 8); else { lputl(0); lputl(s->strtbloff); } lputl(s->value); wputl(s->sect); wputl(0x0308); // "array of structs" cput(2); // storage class: external cput(0); // no aux entries } // put COFF string table lputl(strtblnextoff + 4); for (i=0; iSizeOfRawData - size); } void setpersrc(LSym *sym) { if(rsrcsym != nil) diag("too many .rsrc sections"); rsrcsym = sym; } void addpersrc(void) { IMAGE_SECTION_HEADER *h; uchar *p; uint32 val; Reloc *r; if(rsrcsym == nil) return; h = addpesection(".rsrc", rsrcsym->size, rsrcsym->size); h->Characteristics = IMAGE_SCN_MEM_READ| IMAGE_SCN_MEM_WRITE | IMAGE_SCN_CNT_INITIALIZED_DATA; chksectoff(h, cpos()); // relocation for(r=rsrcsym->r; rr+rsrcsym->nr; r++) { p = rsrcsym->p + r->off; val = h->VirtualAddress + r->add; // 32-bit little-endian p[0] = val; p[1] = val>>8; p[2] = val>>16; p[3] = val>>24; } cwrite(rsrcsym->p, rsrcsym->size); strnput("", h->SizeOfRawData - rsrcsym->size); // update data directory dd[IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress = h->VirtualAddress; dd[IMAGE_DIRECTORY_ENTRY_RESOURCE].Size = h->VirtualSize; } void asmbpe(void) { IMAGE_SECTION_HEADER *t, *d; switch(thechar) { default: diag("unknown PE architecture"); errorexit(); case '6': fh.Machine = IMAGE_FILE_MACHINE_AMD64; break; case '8': fh.Machine = IMAGE_FILE_MACHINE_I386; break; } t = addpesection(".text", segtext.len, segtext.len); t->Characteristics = IMAGE_SCN_CNT_CODE| IMAGE_SCN_CNT_INITIALIZED_DATA| IMAGE_SCN_MEM_EXECUTE|IMAGE_SCN_MEM_READ; chksectseg(t, &segtext); textsect = nsect; d = addpesection(".data", segdata.len, segdata.filelen); d->Characteristics = IMAGE_SCN_CNT_INITIALIZED_DATA| IMAGE_SCN_MEM_READ|IMAGE_SCN_MEM_WRITE; chksectseg(d, &segdata); datasect = nsect; if(!debug['s']) dwarfaddpeheaders(); cseek(nextfileoff); addimports(d); addexports(); addsymtable(); addpersrc(); fh.NumberOfSections = nsect; fh.TimeDateStamp = time(0); fh.Characteristics = IMAGE_FILE_RELOCS_STRIPPED| IMAGE_FILE_EXECUTABLE_IMAGE|IMAGE_FILE_DEBUG_STRIPPED; if (pe64) { fh.SizeOfOptionalHeader = sizeof(oh64); fh.Characteristics |= IMAGE_FILE_LARGE_ADDRESS_AWARE; set(Magic, 0x20b); // PE32+ } else { fh.SizeOfOptionalHeader = sizeof(oh); fh.Characteristics |= IMAGE_FILE_32BIT_MACHINE; set(Magic, 0x10b); // PE32 oh.BaseOfData = d->VirtualAddress; } set(MajorLinkerVersion, 3); set(MinorLinkerVersion, 0); set(SizeOfCode, t->SizeOfRawData); set(SizeOfInitializedData, d->SizeOfRawData); set(SizeOfUninitializedData, 0); set(AddressOfEntryPoint, entryvalue()-PEBASE); set(BaseOfCode, t->VirtualAddress); set(ImageBase, PEBASE); set(SectionAlignment, PESECTALIGN); set(FileAlignment, PEFILEALIGN); set(MajorOperatingSystemVersion, 4); set(MinorOperatingSystemVersion, 0); set(MajorImageVersion, 1); set(MinorImageVersion, 0); set(MajorSubsystemVersion, 4); set(MinorSubsystemVersion, 0); set(SizeOfImage, nextsectoff); set(SizeOfHeaders, PEFILEHEADR); if(strcmp(headstring, "windowsgui") == 0) set(Subsystem, IMAGE_SUBSYSTEM_WINDOWS_GUI); else set(Subsystem, IMAGE_SUBSYSTEM_WINDOWS_CUI); // Disable stack growth as we don't want Windows to // fiddle with the thread stack limits, which we set // ourselves to circumvent the stack checks in the // Windows exception dispatcher. // Commit size must be strictly less than reserve // size otherwise reserve will be rounded up to a // larger size, as verified with VMMap. // Go code would be OK with 64k stacks, but we need larger stacks for cgo. // That default stack reserve size affects only the main thread, // for other threads we specify stack size in runtime explicitly // (runtime knows whether cgo is enabled or not). // If you change stack reserve sizes here, // change STACKSIZE in runtime/cgo/gcc_windows_{386,amd64}.c as well. if(!iscgo) { set(SizeOfStackReserve, 0x00010000); set(SizeOfStackCommit, 0x0000ffff); } else { set(SizeOfStackReserve, pe64 ? 0x00200000 : 0x00100000); // account for 2 guard pages set(SizeOfStackCommit, (pe64 ? 0x00200000 : 0x00100000) - 0x2000); } set(SizeOfHeapReserve, 0x00100000); set(SizeOfHeapCommit, 0x00001000); set(NumberOfRvaAndSizes, 16); pewrite(); } go/src/cmd/ld/pe.h0100644000000000000000000001125512412656734014206 0ustar00rootroot00000000000000// Copyright 2009 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. typedef struct { uint16 Machine; uint16 NumberOfSections; uint32 TimeDateStamp; uint32 PointerToSymbolTable; uint32 NumberOfSymbols; uint16 SizeOfOptionalHeader; uint16 Characteristics; } IMAGE_FILE_HEADER; typedef struct { uint32 VirtualAddress; uint32 Size; } IMAGE_DATA_DIRECTORY; typedef struct { uint16 Magic; uint8 MajorLinkerVersion; uint8 MinorLinkerVersion; uint32 SizeOfCode; uint32 SizeOfInitializedData; uint32 SizeOfUninitializedData; uint32 AddressOfEntryPoint; uint32 BaseOfCode; uint32 BaseOfData; uint32 ImageBase; uint32 SectionAlignment; uint32 FileAlignment; uint16 MajorOperatingSystemVersion; uint16 MinorOperatingSystemVersion; uint16 MajorImageVersion; uint16 MinorImageVersion; uint16 MajorSubsystemVersion; uint16 MinorSubsystemVersion; uint32 Win32VersionValue; uint32 SizeOfImage; uint32 SizeOfHeaders; uint32 CheckSum; uint16 Subsystem; uint16 DllCharacteristics; uint32 SizeOfStackReserve; uint32 SizeOfStackCommit; uint32 SizeOfHeapReserve; uint32 SizeOfHeapCommit; uint32 LoaderFlags; uint32 NumberOfRvaAndSizes; IMAGE_DATA_DIRECTORY DataDirectory[16]; } IMAGE_OPTIONAL_HEADER; typedef struct { uint8 Name[8]; uint32 VirtualSize; uint32 VirtualAddress; uint32 SizeOfRawData; uint32 PointerToRawData; uint32 PointerToRelocations; uint32 PointerToLineNumbers; uint16 NumberOfRelocations; uint16 NumberOfLineNumbers; uint32 Characteristics; } IMAGE_SECTION_HEADER; typedef struct { uint32 OriginalFirstThunk; uint32 TimeDateStamp; uint32 ForwarderChain; uint32 Name; uint32 FirstThunk; } IMAGE_IMPORT_DESCRIPTOR; typedef struct _IMAGE_EXPORT_DIRECTORY { uint32 Characteristics; uint32 TimeDateStamp; uint16 MajorVersion; uint16 MinorVersion; uint32 Name; uint32 Base; uint32 NumberOfFunctions; uint32 NumberOfNames; uint32 AddressOfFunctions; uint32 AddressOfNames; uint32 AddressOfNameOrdinals; } IMAGE_EXPORT_DIRECTORY; #define PEBASE 0x00400000 // SectionAlignment must be greater than or equal to FileAlignment. // The default is the page size for the architecture. #define PESECTALIGN 0x1000 // FileAlignment should be a power of 2 between 512 and 64 K, inclusive. // The default is 512. If the SectionAlignment is less than // the architecture's page size, then FileAlignment must match SectionAlignment. #define PEFILEALIGN (2<<8) extern int32 PESECTHEADR; extern int32 PEFILEHEADR; enum { IMAGE_FILE_MACHINE_I386 = 0x14c, IMAGE_FILE_MACHINE_AMD64 = 0x8664, IMAGE_FILE_RELOCS_STRIPPED = 0x0001, IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002, IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020, IMAGE_FILE_32BIT_MACHINE = 0x0100, IMAGE_FILE_DEBUG_STRIPPED = 0x0200, IMAGE_SCN_CNT_CODE = 0x00000020, IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040, IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080, IMAGE_SCN_MEM_EXECUTE = 0x20000000, IMAGE_SCN_MEM_READ = 0x40000000, IMAGE_SCN_MEM_WRITE = 0x80000000, IMAGE_SCN_MEM_DISCARDABLE = 0x2000000, IMAGE_DIRECTORY_ENTRY_EXPORT = 0, IMAGE_DIRECTORY_ENTRY_IMPORT = 1, IMAGE_DIRECTORY_ENTRY_RESOURCE = 2, IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3, IMAGE_DIRECTORY_ENTRY_SECURITY = 4, IMAGE_DIRECTORY_ENTRY_BASERELOC = 5, IMAGE_DIRECTORY_ENTRY_DEBUG = 6, IMAGE_DIRECTORY_ENTRY_COPYRIGHT = 7, IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7, IMAGE_DIRECTORY_ENTRY_GLOBALPTR = 8, IMAGE_DIRECTORY_ENTRY_TLS = 9, IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = 10, IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT = 11, IMAGE_DIRECTORY_ENTRY_IAT = 12, IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13, IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14, IMAGE_SUBSYSTEM_WINDOWS_GUI = 2, IMAGE_SUBSYSTEM_WINDOWS_CUI = 3, }; void peinit(void); void asmbpe(void); void dope(void); IMAGE_SECTION_HEADER* newPEDWARFSection(char *name, vlong size); // X64 typedef struct { uint16 Magic; uint8 MajorLinkerVersion; uint8 MinorLinkerVersion; uint32 SizeOfCode; uint32 SizeOfInitializedData; uint32 SizeOfUninitializedData; uint32 AddressOfEntryPoint; uint32 BaseOfCode; uint64 ImageBase; uint32 SectionAlignment; uint32 FileAlignment; uint16 MajorOperatingSystemVersion; uint16 MinorOperatingSystemVersion; uint16 MajorImageVersion; uint16 MinorImageVersion; uint16 MajorSubsystemVersion; uint16 MinorSubsystemVersion; uint32 Win32VersionValue; uint32 SizeOfImage; uint32 SizeOfHeaders; uint32 CheckSum; uint16 Subsystem; uint16 DllCharacteristics; uint64 SizeOfStackReserve; uint64 SizeOfStackCommit; uint64 SizeOfHeapReserve; uint64 SizeOfHeapCommit; uint32 LoaderFlags; uint32 NumberOfRvaAndSizes; IMAGE_DATA_DIRECTORY DataDirectory[16]; } PE64_IMAGE_OPTIONAL_HEADER; void setpersrc(LSym *sym); go/src/cmd/ld/pobj.c0100644000000000000000000001503212412656737014527 0ustar00rootroot00000000000000// Inferno utils/6l/obj.c // http://code.google.com/p/inferno-os/source/browse/utils/6l/obj.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Reading object files. #define EXTERN #include "l.h" #include "../ld/lib.h" #include "../ld/elf.h" #include "../ld/macho.h" #include "../ld/dwarf.h" #include "../ld/pe.h" #include char *noname = ""; char* paramspace = "FP"; void main(int argc, char *argv[]) { linkarchinit(); ctxt = linknew(thelinkarch); ctxt->thechar = thechar; ctxt->thestring = thestring; ctxt->diag = diag; ctxt->bso = &bso; Binit(&bso, 1, OWRITE); listinit(); memset(debug, 0, sizeof(debug)); nerrors = 0; outfile = nil; HEADTYPE = -1; INITTEXT = -1; INITDAT = -1; INITRND = -1; INITENTRY = 0; linkmode = LinkAuto; nuxiinit(); if(thechar == '5' && ctxt->goarm == 5) debug['F'] = 1; flagcount("1", "use alternate profiling code", &debug['1']); if(thechar == '6') flagcount("8", "assume 64-bit addresses", &debug['8']); flagfn1("B", "info: define ELF NT_GNU_BUILD_ID note", addbuildinfo); flagint64("D", "addr: data address", &INITDAT); flagstr("E", "sym: entry symbol", &INITENTRY); if(thechar == '5') flagcount("G", "debug pseudo-ops", &debug['G']); flagfn1("I", "interp: set ELF interp", setinterp); flagfn1("L", "dir: add dir to library path", Lflag); flagfn1("H", "head: header type", setheadtype); flagcount("K", "add stack underflow checks", &debug['K']); if(thechar == '5') flagcount("M", "disable software div/mod", &debug['M']); flagcount("O", "print pc-line tables", &debug['O']); flagcount("Q", "debug byte-register code gen", &debug['Q']); if(thechar == '5') flagcount("P", "debug code generation", &debug['P']); flagint32("R", "rnd: address rounding", &INITRND); flagcount("S", "check type signatures", &debug['S']); flagint64("T", "addr: text address", &INITTEXT); flagfn0("V", "print version and exit", doversion); flagcount("W", "disassemble input", &debug['W']); flagfn2("X", "name value: define string data", addstrdata); flagcount("Z", "clear stack frame on entry", &debug['Z']); flagcount("a", "disassemble output", &debug['a']); flagcount("c", "dump call graph", &debug['c']); flagcount("d", "disable dynamic executable", &debug['d']); flagstr("extld", "linker to run in external mode", &extld); flagstr("extldflags", "flags for external linker", &extldflags); flagcount("f", "ignore version mismatch", &debug['f']); flagcount("g", "disable go package data checks", &debug['g']); flagstr("installsuffix", "pkg directory suffix", &flag_installsuffix); flagstr("k", "sym: set field tracking symbol", &tracksym); flagfn1("linkmode", "mode: set link mode (internal, external, auto)", setlinkmode); flagcount("n", "dump symbol table", &debug['n']); flagstr("o", "outfile: set output file", &outfile); flagstr("r", "dir1:dir2:...: set ELF dynamic linker search path", &rpath); flagcount("race", "enable race detector", &flag_race); flagcount("s", "disable symbol table", &debug['s']); if(thechar == '5' || thechar == '6') flagcount("shared", "generate shared object (implies -linkmode external)", &flag_shared); flagstr("tmpdir", "leave temporary files in this directory", &tmpdir); flagcount("u", "reject unsafe packages", &debug['u']); flagcount("v", "print link trace", &debug['v']); flagcount("w", "disable DWARF generation", &debug['w']); flagparse(&argc, &argv, usage); ctxt->bso = &bso; ctxt->debugdivmod = debug['M']; ctxt->debugfloat = debug['F']; ctxt->debughist = debug['O']; ctxt->debugpcln = debug['O']; ctxt->debugread = debug['W']; ctxt->debugstack = debug['K']; ctxt->debugvlog = debug['v']; if(argc != 1) usage(); if(outfile == nil) { if(HEADTYPE == Hwindows) outfile = smprint("%c.out.exe", thechar); else outfile = smprint("%c.out", thechar); } libinit(); // creates outfile if(HEADTYPE == -1) HEADTYPE = headtype(goos); ctxt->headtype = HEADTYPE; if (headstring == nil) headstring = headstr(HEADTYPE); archinit(); ctxt->debugfloat = debug['F']; if(debug['v']) Bprint(&bso, "HEADER = -H%d -T0x%llux -D0x%llux -R0x%ux\n", HEADTYPE, INITTEXT, INITDAT, INITRND); Bflush(&bso); cbp = buf.cbuf; cbc = sizeof(buf.cbuf); addlibpath(ctxt, "command line", "command line", argv[0], "main"); loadlib(); if(thechar == '5') { // mark some functions that are only referenced after linker code editing if(debug['F']) mark(linkrlookup(ctxt, "_sfloat", 0)); mark(linklookup(ctxt, "runtime.read_tls_fallback", 0)); } deadcode(); callgraph(); paramspace = "SP"; /* (FP) now (SP) on output */ doelf(); if(HEADTYPE == Hdarwin) domacho(); dostkcheck(); if(HEADTYPE == Hwindows) dope(); addexport(); textaddress(); pclntab(); symtab(); dodata(); address(); doweak(); reloc(); asmb(); undef(); hostlink(); if(debug['v']) { Bprint(&bso, "%5.2f cpu time\n", cputime()); Bprint(&bso, "%d symbols\n", ctxt->nsymbol); Bprint(&bso, "%d sizeof adr\n", sizeof(Addr)); Bprint(&bso, "%d sizeof prog\n", sizeof(Prog)); Bprint(&bso, "%lld liveness data\n", liveness); } Bflush(&bso); errorexit(); } go/src/cmd/ld/symtab.c0100644000000000000000000002226612412656737015103 0ustar00rootroot00000000000000// Inferno utils/6l/span.c // http://code.google.com/p/inferno-os/source/browse/utils/6l/span.c // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // Symbol table. #include "l.h" #include "../ld/lib.h" #include "../ld/elf.h" static int maxelfstr; static int putelfstr(char *s) { int off, n; char *p, *q; if(elfstrsize == 0 && s[0] != 0) { // first entry must be empty string putelfstr(""); } n = strlen(s)+1; if(elfstrsize+n > maxelfstr) { maxelfstr = 2*(elfstrsize+n+(1<<20)); elfstrdat = realloc(elfstrdat, maxelfstr); } off = elfstrsize; elfstrsize += n; memmove(elfstrdat+off, s, n); // replace "·" as ".", because DTrace cannot handle it. p = strstr(s, "·"); if(p != nil) { p = q = elfstrdat+off; while (*q != '\0') { if((uchar)*q == 0xc2 && (uchar)*(q+1) == 0xb7) { q += 2; *p++ = '.'; elfstrsize--; } else { *p++ = *q++; } } *p = '\0'; } return off; } static void putelfsyment(int off, vlong addr, vlong size, int info, int shndx, int other) { switch(thechar) { case '6': LPUT(off); cput(info); cput(other); WPUT(shndx); VPUT(addr); VPUT(size); symsize += ELF64SYMSIZE; break; default: LPUT(off); LPUT(addr); LPUT(size); cput(info); cput(other); WPUT(shndx); symsize += ELF32SYMSIZE; break; } } static int numelfsym = 1; // 0 is reserved static int elfbind; static void putelfsym(LSym *x, char *s, int t, vlong addr, vlong size, int ver, LSym *go) { int bind, type, off; LSym *xo; USED(go); switch(t) { default: return; case 'T': type = STT_FUNC; break; case 'D': type = STT_OBJECT; break; case 'B': type = STT_OBJECT; break; } xo = x; while(xo->outer != nil) xo = xo->outer; if(xo->sect == nil) { ctxt->cursym = x; diag("missing section in putelfsym"); return; } if(xo->sect->elfsect == nil) { ctxt->cursym = x; diag("missing ELF section in putelfsym"); return; } // One pass for each binding: STB_LOCAL, STB_GLOBAL, // maybe one day STB_WEAK. bind = STB_GLOBAL; if(ver || (x->type & SHIDDEN)) bind = STB_LOCAL; // In external linking mode, we have to invoke gcc with -rdynamic // to get the exported symbols put into the dynamic symbol table. // To avoid filling the dynamic table with lots of unnecessary symbols, // mark all Go symbols local (not global) in the final executable. if(linkmode == LinkExternal && !(x->cgoexport&CgoExportStatic)) bind = STB_LOCAL; if(bind != elfbind) return; off = putelfstr(s); if(linkmode == LinkExternal) addr -= xo->sect->vaddr; putelfsyment(off, addr, size, (bind<<4)|(type&0xf), xo->sect->elfsect->shnum, (x->type & SHIDDEN) ? 2 : 0); x->elfsym = numelfsym++; } void putelfsectionsym(LSym* s, int shndx) { putelfsyment(0, 0, 0, (STB_LOCAL<<4)|STT_SECTION, shndx, 0); s->elfsym = numelfsym++; } void putelfsymshndx(vlong sympos, int shndx) { vlong here; here = cpos(); switch(thechar) { case '6': cseek(sympos+6); break; default: cseek(sympos+14); break; } WPUT(shndx); cseek(here); } void asmelfsym(void) { LSym *s; char *name; // the first symbol entry is reserved putelfsyment(0, 0, 0, (STB_LOCAL<<4)|STT_NOTYPE, 0, 0); dwarfaddelfsectionsyms(); elfbind = STB_LOCAL; genasmsym(putelfsym); if(linkmode == LinkExternal && HEADTYPE != Hopenbsd) { s = linklookup(ctxt, "runtime.tlsgm", 0); if(s->sect == nil) { ctxt->cursym = nil; diag("missing section for %s", s->name); errorexit(); } putelfsyment(putelfstr(s->name), 0, 2*PtrSize, (STB_LOCAL<<4)|STT_TLS, s->sect->elfsect->shnum, 0); s->elfsym = numelfsym++; } elfbind = STB_GLOBAL; elfglobalsymndx = numelfsym; genasmsym(putelfsym); for(s=ctxt->allsym; s!=S; s=s->allsym) { if(s->type != SHOSTOBJ && !(s->type == SDYNIMPORT && s->reachable)) continue; if(s->type == SDYNIMPORT) name = s->extname; else name = s->name; putelfsyment(putelfstr(name), 0, 0, (STB_GLOBAL<<4)|STT_NOTYPE, 0, 0); s->elfsym = numelfsym++; } } static void putplan9sym(LSym *x, char *s, int t, vlong addr, vlong size, int ver, LSym *go) { int i, l; USED(go); USED(ver); USED(size); USED(x); switch(t) { case 'T': case 'L': case 'D': case 'B': if(ver) t += 'a' - 'A'; case 'a': case 'p': case 'f': case 'z': case 'Z': case 'm': l = 4; if(HEADTYPE == Hplan9 && thechar == '6' && !debug['8']) { lputb(addr>>32); l = 8; } lputb(addr); cput(t+0x80); /* 0x80 is variable length */ if(t == 'z' || t == 'Z') { cput(s[0]); for(i=1; s[i] != 0 || s[i+1] != 0; i += 2) { cput(s[i]); cput(s[i+1]); } cput(0); cput(0); i++; } else { /* skip the '<' in filenames */ if(t == 'f') s++; for(i=0; s[i]; i++) cput(s[i]); cput(0); } symsize += l + 1 + i + 1; break; default: return; }; } void asmplan9sym(void) { genasmsym(putplan9sym); } static LSym *symt; void wputl(ushort w) { cput(w); cput(w>>8); } void wputb(ushort w) { cput(w>>8); cput(w); } void lputb(int32 l) { cput(l>>24); cput(l>>16); cput(l>>8); cput(l); } void lputl(int32 l) { cput(l); cput(l>>8); cput(l>>16); cput(l>>24); } void vputb(uint64 v) { lputb(v>>32); lputb(v); } void vputl(uint64 v) { lputl(v); lputl(v >> 32); } void symtab(void) { LSym *s, *symtype, *symtypelink, *symgostring, *symgofunc; dosymtype(); // Define these so that they'll get put into the symbol table. // data.c:/^address will provide the actual values. xdefine("text", STEXT, 0); xdefine("etext", STEXT, 0); xdefine("typelink", SRODATA, 0); xdefine("etypelink", SRODATA, 0); xdefine("rodata", SRODATA, 0); xdefine("erodata", SRODATA, 0); xdefine("noptrdata", SNOPTRDATA, 0); xdefine("enoptrdata", SNOPTRDATA, 0); xdefine("data", SDATA, 0); xdefine("edata", SDATA, 0); xdefine("bss", SBSS, 0); xdefine("ebss", SBSS, 0); xdefine("noptrbss", SNOPTRBSS, 0); xdefine("enoptrbss", SNOPTRBSS, 0); xdefine("end", SBSS, 0); xdefine("epclntab", SRODATA, 0); xdefine("esymtab", SRODATA, 0); // garbage collection symbols s = linklookup(ctxt, "gcdata", 0); s->type = SRODATA; s->size = 0; s->reachable = 1; xdefine("egcdata", SRODATA, 0); s = linklookup(ctxt, "gcbss", 0); s->type = SRODATA; s->size = 0; s->reachable = 1; xdefine("egcbss", SRODATA, 0); // pseudo-symbols to mark locations of type, string, and go string data. s = linklookup(ctxt, "type.*", 0); s->type = STYPE; s->size = 0; s->reachable = 1; symtype = s; s = linklookup(ctxt, "go.string.*", 0); s->type = SGOSTRING; s->size = 0; s->reachable = 1; symgostring = s; s = linklookup(ctxt, "go.func.*", 0); s->type = SGOFUNC; s->size = 0; s->reachable = 1; symgofunc = s; symtypelink = linklookup(ctxt, "typelink", 0); symt = linklookup(ctxt, "symtab", 0); symt->type = SSYMTAB; symt->size = 0; symt->reachable = 1; // assign specific types so that they sort together. // within a type they sort by size, so the .* symbols // just defined above will be first. // hide the specific symbols. for(s = ctxt->allsym; s != S; s = s->allsym) { if(!s->reachable || s->special || s->type != SRODATA) continue; if(strncmp(s->name, "type.", 5) == 0) { s->type = STYPE; s->hide = 1; s->outer = symtype; } if(strncmp(s->name, "go.typelink.", 12) == 0) { s->type = STYPELINK; s->hide = 1; s->outer = symtypelink; } if(strncmp(s->name, "go.string.", 10) == 0) { s->type = SGOSTRING; s->hide = 1; s->outer = symgostring; } if(strncmp(s->name, "go.func.", 8) == 0) { s->type = SGOFUNC; s->hide = 1; s->outer = symgofunc; } if(strncmp(s->name, "gcargs.", 7) == 0 || strncmp(s->name, "gclocals.", 9) == 0 || strncmp(s->name, "gclocals·", 10) == 0) { s->type = SGOFUNC; s->hide = 1; s->outer = symgofunc; s->align = 4; liveness += (s->size+s->align-1)&~(s->align-1); } } } go/src/cmd/ld/textflag.h0100644000000000000000000000152312412656737015420 0ustar00rootroot00000000000000// Copyright 2013 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 file defines flags attached to various functions // and data objects. The compilers, assemblers, and linker must // all agree on these values. // Don't profile the marked routine. This flag is deprecated. #define NOPROF 1 // It is ok for the linker to get multiple of these symbols. It will // pick one of the duplicates to use. #define DUPOK 2 // Don't insert stack check preamble. #define NOSPLIT 4 // Put this data in a read-only section. #define RODATA 8 // This data contains no pointers. #define NOPTR 16 // This is a wrapper function and should not count as disabling 'recover'. #define WRAPPER 32 // This function uses its incoming context register. #define NEEDCTXT 64 go/src/cmd/nm0040755000000000000000000000000012412656737013367 5ustar00rootroot00000000000000go/src/cmd/nm/debug_goobj.go0100644000000000000000000004425112412656737016246 0ustar00rootroot00000000000000// DO NOT EDIT. Generated by code.google.com/p/rsc/cmd/bundle // bundle -p main -x goobj_ debug/goobj /* read.go */ // Copyright 2013 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 goobj implements reading of Go object files and archives. // // TODO(rsc): Decide where this package should live. (golang.org/issue/6932) // TODO(rsc): Decide the appropriate integer types for various fields. // TODO(rsc): Write tests. (File format still up in the air a little.) package main import ( "bufio" "bytes" "errors" "fmt" "io" "strconv" "strings" ) // A SymKind describes the kind of memory represented by a symbol. type goobj_SymKind int // This list is taken from include/link.h. // Defined SymKind values. // TODO(rsc): Give idiomatic Go names. // TODO(rsc): Reduce the number of symbol types in the object files. const ( _ goobj_SymKind = iota // readonly, executable goobj_STEXT goobj_SELFRXSECT // readonly, non-executable goobj_STYPE goobj_SSTRING goobj_SGOSTRING goobj_SGOFUNC goobj_SRODATA goobj_SFUNCTAB goobj_STYPELINK goobj_SSYMTAB // TODO: move to unmapped section goobj_SPCLNTAB goobj_SELFROSECT // writable, non-executable goobj_SMACHOPLT goobj_SELFSECT goobj_SMACHO // Mach-O __nl_symbol_ptr goobj_SMACHOGOT goobj_SNOPTRDATA goobj_SINITARR goobj_SDATA goobj_SWINDOWS goobj_SBSS goobj_SNOPTRBSS goobj_STLSBSS // not mapped goobj_SXREF goobj_SMACHOSYMSTR goobj_SMACHOSYMTAB goobj_SMACHOINDIRECTPLT goobj_SMACHOINDIRECTGOT goobj_SFILE goobj_SFILEPATH goobj_SCONST goobj_SDYNIMPORT goobj_SHOSTOBJ ) var goobj_symKindStrings = []string{ goobj_SBSS: "SBSS", goobj_SCONST: "SCONST", goobj_SDATA: "SDATA", goobj_SDYNIMPORT: "SDYNIMPORT", goobj_SELFROSECT: "SELFROSECT", goobj_SELFRXSECT: "SELFRXSECT", goobj_SELFSECT: "SELFSECT", goobj_SFILE: "SFILE", goobj_SFILEPATH: "SFILEPATH", goobj_SFUNCTAB: "SFUNCTAB", goobj_SGOFUNC: "SGOFUNC", goobj_SGOSTRING: "SGOSTRING", goobj_SHOSTOBJ: "SHOSTOBJ", goobj_SINITARR: "SINITARR", goobj_SMACHO: "SMACHO", goobj_SMACHOGOT: "SMACHOGOT", goobj_SMACHOINDIRECTGOT: "SMACHOINDIRECTGOT", goobj_SMACHOINDIRECTPLT: "SMACHOINDIRECTPLT", goobj_SMACHOPLT: "SMACHOPLT", goobj_SMACHOSYMSTR: "SMACHOSYMSTR", goobj_SMACHOSYMTAB: "SMACHOSYMTAB", goobj_SNOPTRBSS: "SNOPTRBSS", goobj_SNOPTRDATA: "SNOPTRDATA", goobj_SPCLNTAB: "SPCLNTAB", goobj_SRODATA: "SRODATA", goobj_SSTRING: "SSTRING", goobj_SSYMTAB: "SSYMTAB", goobj_STEXT: "STEXT", goobj_STLSBSS: "STLSBSS", goobj_STYPE: "STYPE", goobj_STYPELINK: "STYPELINK", goobj_SWINDOWS: "SWINDOWS", goobj_SXREF: "SXREF", } func (k goobj_SymKind) String() string { if k < 0 || int(k) >= len(goobj_symKindStrings) { return fmt.Sprintf("SymKind(%d)", k) } return goobj_symKindStrings[k] } // A Sym is a named symbol in an object file. type goobj_Sym struct { goobj_SymID // symbol identifier (name and version) Kind goobj_SymKind // kind of symbol DupOK bool // are duplicate definitions okay? Size int // size of corresponding data Type goobj_SymID // symbol for Go type information Data goobj_Data // memory image of symbol Reloc []goobj_Reloc // relocations to apply to Data Func *goobj_Func // additional data for functions } // A SymID - the combination of Name and Version - uniquely identifies // a symbol within a package. type goobj_SymID struct { // Name is the name of a symbol. Name string // Version is zero for symbols with global visibility. // Symbols with only file visibility (such as file-level static // declarations in C) have a non-zero version distinguishing // a symbol in one file from a symbol of the same name // in another file Version int } func (s goobj_SymID) String() string { if s.Version == 0 { return s.Name } return fmt.Sprintf("%s<%d>", s.Name, s.Version) } // A Data is a reference to data stored in an object file. // It records the offset and size of the data, so that a client can // read the data only if necessary. type goobj_Data struct { Offset int64 Size int64 } // A Reloc describes a relocation applied to a memory image to refer // to an address within a particular symbol. type goobj_Reloc struct { // The bytes at [Offset, Offset+Size) within the memory image // should be updated to refer to the address Add bytes after the start // of the symbol Sym. Offset int Size int Sym goobj_SymID Add int // The Type records the form of address expected in the bytes // described by the previous fields: absolute, PC-relative, and so on. // TODO(rsc): The interpretation of Type is not exposed by this package. Type int } // A Var describes a variable in a function stack frame: a declared // local variable, an input argument, or an output result. type goobj_Var struct { // The combination of Name, Kind, and Offset uniquely // identifies a variable in a function stack frame. // Using fewer of these - in particular, using only Name - does not. Name string // Name of variable. Kind int // TODO(rsc): Define meaning. Offset int // Frame offset. TODO(rsc): Define meaning. Type goobj_SymID // Go type for variable. } // Func contains additional per-symbol information specific to functions. type goobj_Func struct { Args int // size in bytes of argument frame: inputs and outputs Frame int // size in bytes of local variable frame Leaf bool // function omits save of link register (ARM) NoSplit bool // function omits stack split prologue Var []goobj_Var // detail about local variables PCSP goobj_Data // PC → SP offset map PCFile goobj_Data // PC → file number map (index into File) PCLine goobj_Data // PC → line number map PCData []goobj_Data // PC → runtime support data map FuncData []goobj_FuncData // non-PC-specific runtime support data File []string // paths indexed by PCFile } // TODO: Add PCData []byte and PCDataIter (similar to liblink). // A FuncData is a single function-specific data value. type goobj_FuncData struct { Sym goobj_SymID // symbol holding data Offset int64 // offset into symbol for funcdata pointer } // A Package is a parsed Go object file or archive defining a Go package. type goobj_Package struct { ImportPath string // import path denoting this package Imports []string // packages imported by this package Syms []*goobj_Sym // symbols defined by this package MaxVersion int // maximum Version in any SymID in Syms } var ( goobj_archiveHeader = []byte("!\n") goobj_archiveMagic = []byte("`\n") goobj_goobjHeader = []byte("go objec") // truncated to size of archiveHeader goobj_errCorruptArchive = errors.New("corrupt archive") goobj_errTruncatedArchive = errors.New("truncated archive") goobj_errNotArchive = errors.New("unrecognized archive format") goobj_errCorruptObject = errors.New("corrupt object file") goobj_errTruncatedObject = errors.New("truncated object file") goobj_errNotObject = errors.New("unrecognized object file format") ) // An objReader is an object file reader. type goobj_objReader struct { p *goobj_Package b *bufio.Reader f io.ReadSeeker err error offset int64 limit int64 tmp [256]byte pkg string pkgprefix string } // importPathToPrefix returns the prefix that will be used in the // final symbol table for the given import path. // We escape '%', '"', all control characters and non-ASCII bytes, // and any '.' after the final slash. // // See ../../../cmd/ld/lib.c:/^pathtoprefix and // ../../../cmd/gc/subr.c:/^pathtoprefix. func goobj_importPathToPrefix(s string) string { // find index of last slash, if any, or else -1. // used for determining whether an index is after the last slash. slash := strings.LastIndex(s, "/") // check for chars that need escaping n := 0 for r := 0; r < len(s); r++ { if c := s[r]; c <= ' ' || (c == '.' && r > slash) || c == '%' || c == '"' || c >= 0x7F { n++ } } // quick exit if n == 0 { return s } // escape const hex = "0123456789abcdef" p := make([]byte, 0, len(s)+2*n) for r := 0; r < len(s); r++ { if c := s[r]; c <= ' ' || (c == '.' && r > slash) || c == '%' || c == '"' || c >= 0x7F { p = append(p, '%', hex[c>>4], hex[c&0xF]) } else { p = append(p, c) } } return string(p) } // init initializes r to read package p from f. func (r *goobj_objReader) init(f io.ReadSeeker, p *goobj_Package) { r.f = f r.p = p r.offset, _ = f.Seek(0, 1) r.limit, _ = f.Seek(0, 2) f.Seek(r.offset, 0) r.b = bufio.NewReader(f) r.pkgprefix = goobj_importPathToPrefix(p.ImportPath) + "." } // error records that an error occurred. // It returns only the first error, so that an error // caused by an earlier error does not discard information // about the earlier error. func (r *goobj_objReader) error(err error) error { if r.err == nil { if err == io.EOF { err = io.ErrUnexpectedEOF } r.err = err } // panic("corrupt") // useful for debugging return r.err } // readByte reads and returns a byte from the input file. // On I/O error or EOF, it records the error but returns byte 0. // A sequence of 0 bytes will eventually terminate any // parsing state in the object file. In particular, it ends the // reading of a varint. func (r *goobj_objReader) readByte() byte { if r.err != nil { return 0 } if r.offset >= r.limit { r.error(io.ErrUnexpectedEOF) return 0 } b, err := r.b.ReadByte() if err != nil { if err == io.EOF { err = io.ErrUnexpectedEOF } r.error(err) b = 0 } else { r.offset++ } return b } // read reads exactly len(b) bytes from the input file. // If an error occurs, read returns the error but also // records it, so it is safe for callers to ignore the result // as long as delaying the report is not a problem. func (r *goobj_objReader) readFull(b []byte) error { if r.err != nil { return r.err } if r.offset+int64(len(b)) > r.limit { return r.error(io.ErrUnexpectedEOF) } n, err := io.ReadFull(r.b, b) r.offset += int64(n) if err != nil { return r.error(err) } return nil } // readInt reads a zigzag varint from the input file. func (r *goobj_objReader) readInt() int { var u uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { r.error(goobj_errCorruptObject) return 0 } c := r.readByte() u |= uint64(c&0x7F) << shift if c&0x80 == 0 { break } } v := int64(u>>1) ^ (int64(u) << 63 >> 63) if int64(int(v)) != v { r.error(goobj_errCorruptObject) // TODO return 0 } return int(v) } // readString reads a length-delimited string from the input file. func (r *goobj_objReader) readString() string { n := r.readInt() buf := make([]byte, n) r.readFull(buf) return string(buf) } // readSymID reads a SymID from the input file. func (r *goobj_objReader) readSymID() goobj_SymID { name, vers := r.readString(), r.readInt() // In a symbol name in an object file, "". denotes the // prefix for the package in which the object file has been found. // Expand it. name = strings.Replace(name, `"".`, r.pkgprefix, -1) // An individual object file only records version 0 (extern) or 1 (static). // To make static symbols unique across all files being read, we // replace version 1 with the version corresponding to the current // file number. The number is incremented on each call to parseObject. if vers != 0 { vers = r.p.MaxVersion } return goobj_SymID{name, vers} } // readData reads a data reference from the input file. func (r *goobj_objReader) readData() goobj_Data { n := r.readInt() d := goobj_Data{Offset: r.offset, Size: int64(n)} r.skip(int64(n)) return d } // skip skips n bytes in the input. func (r *goobj_objReader) skip(n int64) { if n < 0 { r.error(fmt.Errorf("debug/goobj: internal error: misuse of skip")) } if n < int64(len(r.tmp)) { // Since the data is so small, a just reading from the buffered // reader is better than flushing the buffer and seeking. r.readFull(r.tmp[:n]) } else if n <= int64(r.b.Buffered()) { // Even though the data is not small, it has already been read. // Advance the buffer instead of seeking. for n > int64(len(r.tmp)) { r.readFull(r.tmp[:]) n -= int64(len(r.tmp)) } r.readFull(r.tmp[:n]) } else { // Seek, giving up buffered data. _, err := r.f.Seek(r.offset+n, 0) if err != nil { r.error(err) } r.offset += n r.b.Reset(r.f) } } // Parse parses an object file or archive from r, // assuming that its import path is pkgpath. func goobj_Parse(r io.ReadSeeker, pkgpath string) (*goobj_Package, error) { if pkgpath == "" { pkgpath = `""` } p := new(goobj_Package) p.ImportPath = pkgpath var rd goobj_objReader rd.init(r, p) err := rd.readFull(rd.tmp[:8]) if err != nil { if err == io.EOF { err = io.ErrUnexpectedEOF } return nil, err } switch { default: return nil, goobj_errNotObject case bytes.Equal(rd.tmp[:8], goobj_archiveHeader): if err := rd.parseArchive(); err != nil { return nil, err } case bytes.Equal(rd.tmp[:8], goobj_goobjHeader): if err := rd.parseObject(goobj_goobjHeader); err != nil { return nil, err } } return p, nil } // trimSpace removes trailing spaces from b and returns the corresponding string. // This effectively parses the form used in archive headers. func goobj_trimSpace(b []byte) string { return string(bytes.TrimRight(b, " ")) } // parseArchive parses a Unix archive of Go object files. // TODO(rsc): Need to skip non-Go object files. // TODO(rsc): Maybe record table of contents in r.p so that // linker can avoid having code to parse archives too. func (r *goobj_objReader) parseArchive() error { for r.offset < r.limit { if err := r.readFull(r.tmp[:60]); err != nil { return err } data := r.tmp[:60] // Each file is preceded by this text header (slice indices in first column): // 0:16 name // 16:28 date // 28:34 uid // 34:40 gid // 40:48 mode // 48:58 size // 58:60 magic - `\n // We only care about name, size, and magic. // The fields are space-padded on the right. // The size is in decimal. // The file data - size bytes - follows the header. // Headers are 2-byte aligned, so if size is odd, an extra padding // byte sits between the file data and the next header. // The file data that follows is padded to an even number of bytes: // if size is odd, an extra padding byte is inserted betw the next header. if len(data) < 60 { return goobj_errTruncatedArchive } if !bytes.Equal(data[58:60], goobj_archiveMagic) { return goobj_errCorruptArchive } name := goobj_trimSpace(data[0:16]) size, err := strconv.ParseInt(goobj_trimSpace(data[48:58]), 10, 64) if err != nil { return goobj_errCorruptArchive } data = data[60:] fsize := size + size&1 if fsize < 0 || fsize < size { return goobj_errCorruptArchive } switch name { case "__.SYMDEF", "__.GOSYMDEF", "__.PKGDEF": r.skip(size) default: oldLimit := r.limit r.limit = r.offset + size if err := r.parseObject(nil); err != nil { return fmt.Errorf("parsing archive member %q: %v", name, err) } r.skip(r.limit - r.offset) r.limit = oldLimit } if size&1 != 0 { r.skip(1) } } return nil } // parseObject parses a single Go object file. // The prefix is the bytes already read from the file, // typically in order to detect that this is an object file. // The object file consists of a textual header ending in "\n!\n" // and then the part we want to parse begins. // The format of that part is defined in a comment at the top // of src/liblink/objfile.c. func (r *goobj_objReader) parseObject(prefix []byte) error { // TODO(rsc): Maybe use prefix and the initial input to // record the header line from the file, which would // give the architecture and other version information. r.p.MaxVersion++ var c1, c2, c3 byte for { c1, c2, c3 = c2, c3, r.readByte() if c3 == 0 { // NUL or EOF, either is bad return goobj_errCorruptObject } if c1 == '\n' && c2 == '!' && c3 == '\n' { break } } r.readFull(r.tmp[:8]) if !bytes.Equal(r.tmp[:8], []byte("\x00\x00go13ld")) { return r.error(goobj_errCorruptObject) } b := r.readByte() if b != 1 { return r.error(goobj_errCorruptObject) } // Direct package dependencies. for { s := r.readString() if s == "" { break } r.p.Imports = append(r.p.Imports, s) } // Symbols. for { if b := r.readByte(); b != 0xfe { if b != 0xff { return r.error(goobj_errCorruptObject) } break } typ := r.readInt() s := &goobj_Sym{goobj_SymID: r.readSymID()} r.p.Syms = append(r.p.Syms, s) s.Kind = goobj_SymKind(typ) s.DupOK = r.readInt() != 0 s.Size = r.readInt() s.Type = r.readSymID() s.Data = r.readData() s.Reloc = make([]goobj_Reloc, r.readInt()) for i := range s.Reloc { rel := &s.Reloc[i] rel.Offset = r.readInt() rel.Size = r.readInt() rel.Type = r.readInt() rel.Add = r.readInt() r.readInt() // Xadd - ignored rel.Sym = r.readSymID() r.readSymID() // Xsym - ignored } if s.Kind == goobj_STEXT { f := new(goobj_Func) s.Func = f f.Args = r.readInt() f.Frame = r.readInt() f.Leaf = r.readInt() != 0 f.NoSplit = r.readInt() != 0 f.Var = make([]goobj_Var, r.readInt()) for i := range f.Var { v := &f.Var[i] v.Name = r.readSymID().Name v.Offset = r.readInt() v.Kind = r.readInt() v.Type = r.readSymID() } f.PCSP = r.readData() f.PCFile = r.readData() f.PCLine = r.readData() f.PCData = make([]goobj_Data, r.readInt()) for i := range f.PCData { f.PCData[i] = r.readData() } f.FuncData = make([]goobj_FuncData, r.readInt()) for i := range f.FuncData { f.FuncData[i].Sym = r.readSymID() } for i := range f.FuncData { f.FuncData[i].Offset = int64(r.readInt()) // TODO } f.File = make([]string, r.readInt()) for i := range f.File { f.File[i] = r.readSymID().Name } } } r.readFull(r.tmp[:7]) if !bytes.Equal(r.tmp[:7], []byte("\xffgo13ld")) { return r.error(goobj_errCorruptObject) } return nil } go/src/cmd/nm/doc.go0100644000000000000000000000240212412656734014532 0ustar00rootroot00000000000000// Copyright 2013 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. // Nm lists the symbols defined or used by an object file, archive, or executable. // // Usage: // go tool nm [options] file... // // The default output prints one line per symbol, with three space-separated // fields giving the address (in hexadecimal), type (a character), and name of // the symbol. The types are: // // T text (code) segment symbol // t static text segment symbol // R read-only data segment symbol // r static read-only data segment symbol // D data segment symbol // d static data segment symbol // B bss segment symbol // b static bss segment symbol // C constant address // U referenced but undefined symbol // // Following established convention, the address is omitted for undefined // symbols (type U). // // The options control the printed output: // // -n // an alias for -sort address (numeric), // for compatibility with other nm commands // -size // print symbol size in decimal between address and type // -sort {address,name,none,size} // sort output in the given order (default name) // size orders from largest to smallest // -type // print symbol type after name // package main go/src/cmd/nm/elf.go0100644000000000000000000000227112412656737014542 0ustar00rootroot00000000000000// Copyright 2013 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. // Parsing of ELF executables (Linux, FreeBSD, and so on). package main import ( "debug/elf" "os" ) func elfSymbols(f *os.File) []Sym { p, err := elf.NewFile(f) if err != nil { errorf("parsing %s: %v", f.Name(), err) return nil } elfSyms, err := p.Symbols() if err != nil { errorf("parsing %s: %v", f.Name(), err) return nil } var syms []Sym for _, s := range elfSyms { sym := Sym{Addr: s.Value, Name: s.Name, Size: int64(s.Size), Code: '?'} switch s.Section { case elf.SHN_UNDEF: sym.Code = 'U' case elf.SHN_COMMON: sym.Code = 'B' default: i := int(s.Section) if i < 0 || i >= len(p.Sections) { break } sect := p.Sections[i] switch sect.Flags & (elf.SHF_WRITE | elf.SHF_ALLOC | elf.SHF_EXECINSTR) { case elf.SHF_ALLOC | elf.SHF_EXECINSTR: sym.Code = 'T' case elf.SHF_ALLOC: sym.Code = 'R' case elf.SHF_ALLOC | elf.SHF_WRITE: sym.Code = 'D' } } if elf.ST_BIND(s.Info) == elf.STB_LOCAL { sym.Code += 'a' - 'A' } syms = append(syms, sym) } return syms } go/src/cmd/nm/goobj.go0100644000000000000000000000351712412656737015100 0ustar00rootroot00000000000000// Copyright 2013 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. // Parsing of Go intermediate object files and archives. package main import ( "fmt" "os" ) func goobjName(id goobj_SymID) string { if id.Version == 0 { return id.Name } return fmt.Sprintf("%s<%d>", id.Name, id.Version) } func goobjSymbols(f *os.File) []Sym { pkg, err := goobj_Parse(f, `""`) if err != nil { errorf("parsing %s: %v", f.Name(), err) return nil } seen := make(map[goobj_SymID]bool) var syms []Sym for _, s := range pkg.Syms { seen[s.goobj_SymID] = true sym := Sym{Addr: uint64(s.Data.Offset), Name: goobjName(s.goobj_SymID), Size: int64(s.Size), Type: s.Type.Name, Code: '?'} switch s.Kind { case goobj_STEXT, goobj_SELFRXSECT: sym.Code = 'T' case goobj_STYPE, goobj_SSTRING, goobj_SGOSTRING, goobj_SGOFUNC, goobj_SRODATA, goobj_SFUNCTAB, goobj_STYPELINK, goobj_SSYMTAB, goobj_SPCLNTAB, goobj_SELFROSECT: sym.Code = 'R' case goobj_SMACHOPLT, goobj_SELFSECT, goobj_SMACHO, goobj_SMACHOGOT, goobj_SNOPTRDATA, goobj_SINITARR, goobj_SDATA, goobj_SWINDOWS: sym.Code = 'D' case goobj_SBSS, goobj_SNOPTRBSS, goobj_STLSBSS: sym.Code = 'B' case goobj_SXREF, goobj_SMACHOSYMSTR, goobj_SMACHOSYMTAB, goobj_SMACHOINDIRECTPLT, goobj_SMACHOINDIRECTGOT, goobj_SFILE, goobj_SFILEPATH, goobj_SCONST, goobj_SDYNIMPORT, goobj_SHOSTOBJ: sym.Code = 'X' // should not see } if s.Version != 0 { sym.Code += 'a' - 'A' } syms = append(syms, sym) } for _, s := range pkg.Syms { for _, r := range s.Reloc { if !seen[r.Sym] { seen[r.Sym] = true sym := Sym{Name: goobjName(r.Sym), Code: 'U'} if s.Version != 0 { // should not happen but handle anyway sym.Code = 'u' } syms = append(syms, sym) } } } return syms } go/src/cmd/nm/macho.go0100644000000000000000000000307612412656737015067 0ustar00rootroot00000000000000// Copyright 2013 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. // Parsing of Mach-O executables (OS X). package main import ( "debug/macho" "os" "sort" ) func machoSymbols(f *os.File) []Sym { p, err := macho.NewFile(f) if err != nil { errorf("parsing %s: %v", f.Name(), err) return nil } if p.Symtab == nil { errorf("%s: no symbol table", f.Name()) return nil } // Build sorted list of addresses of all symbols. // We infer the size of a symbol by looking at where the next symbol begins. var addrs []uint64 for _, s := range p.Symtab.Syms { addrs = append(addrs, s.Value) } sort.Sort(uint64s(addrs)) var syms []Sym for _, s := range p.Symtab.Syms { sym := Sym{Name: s.Name, Addr: s.Value, Code: '?'} i := sort.Search(len(addrs), func(x int) bool { return addrs[x] > s.Value }) if i < len(addrs) { sym.Size = int64(addrs[i] - s.Value) } if s.Sect == 0 { sym.Code = 'U' } else if int(s.Sect) <= len(p.Sections) { sect := p.Sections[s.Sect-1] switch sect.Seg { case "__TEXT": sym.Code = 'R' case "__DATA": sym.Code = 'D' } switch sect.Seg + " " + sect.Name { case "__TEXT __text": sym.Code = 'T' case "__DATA __bss", "__DATA __noptrbss": sym.Code = 'B' } } syms = append(syms, sym) } return syms } type uint64s []uint64 func (x uint64s) Len() int { return len(x) } func (x uint64s) Swap(i, j int) { x[i], x[j] = x[j], x[i] } func (x uint64s) Less(i, j int) bool { return x[i] < x[j] } go/src/cmd/nm/nm.go0100644000000000000000000000705212412656737014410 0ustar00rootroot00000000000000// Copyright 2013 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 ( "bufio" "bytes" "flag" "fmt" "io" "log" "os" "sort" ) func usage() { fmt.Fprintf(os.Stderr, "usage: go tool nm [-n] [-size] [-sort order] [-type] file...\n") os.Exit(2) } var ( sortOrder = flag.String("sort", "name", "") printSize = flag.Bool("size", false, "") printType = flag.Bool("type", false, "") filePrefix = false ) func init() { flag.Var(nflag(0), "n", "") // alias for -sort address } type nflag int func (nflag) IsBoolFlag() bool { return true } func (nflag) Set(value string) error { if value == "true" { *sortOrder = "address" } return nil } func (nflag) String() string { if *sortOrder == "address" { return "true" } return "false" } func main() { log.SetFlags(0) flag.Usage = usage flag.Parse() switch *sortOrder { case "address", "name", "none", "size": // ok default: fmt.Fprintf(os.Stderr, "nm: unknown sort order %q\n", *sortOrder) os.Exit(2) } args := flag.Args() filePrefix = len(args) > 1 if len(args) == 0 { flag.Usage() } for _, file := range args { nm(file) } os.Exit(exitCode) } var exitCode = 0 func errorf(format string, args ...interface{}) { log.Printf(format, args...) exitCode = 1 } type Sym struct { Addr uint64 Size int64 Code rune Name string Type string } var parsers = []struct { prefix []byte parse func(*os.File) []Sym }{ {[]byte("!\n"), goobjSymbols}, {[]byte("go object "), goobjSymbols}, {[]byte("\x7FELF"), elfSymbols}, {[]byte("\xFE\xED\xFA\xCE"), machoSymbols}, {[]byte("\xFE\xED\xFA\xCF"), machoSymbols}, {[]byte("\xCE\xFA\xED\xFE"), machoSymbols}, {[]byte("\xCF\xFA\xED\xFE"), machoSymbols}, {[]byte("MZ"), peSymbols}, {[]byte("\x00\x00\x01\xEB"), plan9Symbols}, // 386 {[]byte("\x00\x00\x04\x07"), plan9Symbols}, // mips {[]byte("\x00\x00\x06\x47"), plan9Symbols}, // arm {[]byte("\x00\x00\x8A\x97"), plan9Symbols}, // amd64 } func nm(file string) { f, err := os.Open(file) if err != nil { errorf("%v", err) return } defer f.Close() buf := make([]byte, 16) io.ReadFull(f, buf) f.Seek(0, 0) var syms []Sym for _, p := range parsers { if bytes.HasPrefix(buf, p.prefix) { syms = p.parse(f) goto HaveSyms } } errorf("%v: unknown file format", file) return HaveSyms: switch *sortOrder { case "address": sort.Sort(byAddr(syms)) case "name": sort.Sort(byName(syms)) case "size": sort.Sort(bySize(syms)) } w := bufio.NewWriter(os.Stdout) for _, sym := range syms { if filePrefix { fmt.Fprintf(w, "%s:\t", file) } if sym.Code == 'U' { fmt.Fprintf(w, "%8s", "") } else { fmt.Fprintf(w, "%8x", sym.Addr) } if *printSize { fmt.Fprintf(w, " %10d", sym.Size) } fmt.Fprintf(w, " %c %s", sym.Code, sym.Name) if *printType && sym.Type != "" { fmt.Fprintf(w, " %s", sym.Type) } fmt.Fprintf(w, "\n") } w.Flush() } type byAddr []Sym func (x byAddr) Len() int { return len(x) } func (x byAddr) Swap(i, j int) { x[i], x[j] = x[j], x[i] } func (x byAddr) Less(i, j int) bool { return x[i].Addr < x[j].Addr } type byName []Sym func (x byName) Len() int { return len(x) } func (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] } func (x byName) Less(i, j int) bool { return x[i].Name < x[j].Name } type bySize []Sym func (x bySize) Len() int { return len(x) } func (x bySize) Swap(i, j int) { x[i], x[j] = x[j], x[i] } func (x bySize) Less(i, j int) bool { return x[i].Size > x[j].Size } go/src/cmd/nm/nm_test.go0100644000000000000000000000467012412656737015452 0ustar00rootroot00000000000000// 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. package main import ( "bufio" "bytes" "fmt" "io/ioutil" "os" "os/exec" "path/filepath" "runtime" "strings" "testing" ) var testData uint32 func checkSymbols(t *testing.T, nmoutput []byte) { var checkSymbolsFound, testDataFound bool scanner := bufio.NewScanner(bytes.NewBuffer(nmoutput)) for scanner.Scan() { f := strings.Fields(scanner.Text()) if len(f) < 3 { continue } switch f[2] { case "cmd/nm.checkSymbols": checkSymbolsFound = true addr := "0x" + f[0] if addr != fmt.Sprintf("%p", checkSymbols) { t.Errorf("nm shows wrong address %v for checkSymbols (%p)", addr, checkSymbols) } case "cmd/nm.testData": testDataFound = true addr := "0x" + f[0] if addr != fmt.Sprintf("%p", &testData) { t.Errorf("nm shows wrong address %v for testData (%p)", addr, &testData) } } } if err := scanner.Err(); err != nil { t.Errorf("error while reading symbols: %v", err) return } if !checkSymbolsFound { t.Error("nm shows no checkSymbols symbol") } if !testDataFound { t.Error("nm shows no testData symbol") } } func TestNM(t *testing.T) { if runtime.GOOS == "nacl" { t.Skip("skipping on nacl") } tmpDir, err := ioutil.TempDir("", "TestNM") if err != nil { t.Fatal("TempDir failed: ", err) } defer os.RemoveAll(tmpDir) testnmpath := filepath.Join(tmpDir, "testnm.exe") out, err := exec.Command("go", "build", "-o", testnmpath, "cmd/nm").CombinedOutput() if err != nil { t.Fatalf("go build -o %v cmd/nm: %v\n%s", testnmpath, err, string(out)) } testfiles := []string{ "elf/testdata/gcc-386-freebsd-exec", "elf/testdata/gcc-amd64-linux-exec", "macho/testdata/gcc-386-darwin-exec", "macho/testdata/gcc-amd64-darwin-exec", "pe/testdata/gcc-amd64-mingw-exec", "pe/testdata/gcc-386-mingw-exec", "plan9obj/testdata/amd64-plan9-exec", "plan9obj/testdata/386-plan9-exec", } for _, f := range testfiles { exepath := filepath.Join(runtime.GOROOT(), "src", "pkg", "debug", f) cmd := exec.Command(testnmpath, exepath) out, err := cmd.CombinedOutput() if err != nil { t.Fatalf("go tool nm %v: %v\n%s", exepath, err, string(out)) } } cmd := exec.Command(testnmpath, os.Args[0]) out, err = cmd.CombinedOutput() if err != nil { t.Fatalf("go tool nm %v: %v\n%s", os.Args[0], err, string(out)) } checkSymbols(t, out) } go/src/cmd/nm/pe.go0100644000000000000000000000440212412656737014376 0ustar00rootroot00000000000000// Copyright 2013 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. // Parsing of PE executables (Microsoft Windows). package main import ( "debug/pe" "os" "sort" ) func peSymbols(f *os.File) []Sym { p, err := pe.NewFile(f) if err != nil { errorf("parsing %s: %v", f.Name(), err) return nil } // Build sorted list of addresses of all symbols. // We infer the size of a symbol by looking at where the next symbol begins. var addrs []uint64 var imageBase uint64 switch oh := p.OptionalHeader.(type) { case *pe.OptionalHeader32: imageBase = uint64(oh.ImageBase) case *pe.OptionalHeader64: imageBase = oh.ImageBase default: errorf("parsing %s: file format not recognized", f.Name()) return nil } var syms []Sym for _, s := range p.Symbols { const ( N_UNDEF = 0 // An undefined (extern) symbol N_ABS = -1 // An absolute symbol (e_value is a constant, not an address) N_DEBUG = -2 // A debugging symbol ) sym := Sym{Name: s.Name, Addr: uint64(s.Value), Code: '?'} switch s.SectionNumber { case N_UNDEF: sym.Code = 'U' case N_ABS: sym.Code = 'C' case N_DEBUG: sym.Code = '?' default: if s.SectionNumber < 0 { errorf("parsing %s: invalid section number %d", f.Name(), s.SectionNumber) return nil } if len(p.Sections) < int(s.SectionNumber) { errorf("parsing %s: section number %d is large then max %d", f.Name(), s.SectionNumber, len(p.Sections)) return nil } sect := p.Sections[s.SectionNumber-1] const ( text = 0x20 data = 0x40 bss = 0x80 permX = 0x20000000 permR = 0x40000000 permW = 0x80000000 ) ch := sect.Characteristics switch { case ch&text != 0: sym.Code = 'T' case ch&data != 0: if ch&permW == 0 { sym.Code = 'R' } else { sym.Code = 'D' } case ch&bss != 0: sym.Code = 'B' } sym.Addr += imageBase + uint64(sect.VirtualAddress) } syms = append(syms, sym) addrs = append(addrs, sym.Addr) } sort.Sort(uint64s(addrs)) for i := range syms { j := sort.Search(len(addrs), func(x int) bool { return addrs[x] > syms[i].Addr }) if j < len(addrs) { syms[i].Size = int64(addrs[j] - syms[i].Addr) } } return syms } go/src/cmd/nm/plan9obj.go0100644000000000000000000000204112412656737015505 0ustar00rootroot00000000000000// 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. // Parsing of Plan 9 a.out executables. package main import ( "debug/plan9obj" "os" "sort" ) func plan9Symbols(f *os.File) []Sym { p, err := plan9obj.NewFile(f) if err != nil { errorf("parsing %s: %v", f.Name(), err) return nil } plan9Syms, err := p.Symbols() if err != nil { errorf("parsing %s: %v", f.Name(), err) return nil } // Build sorted list of addresses of all symbols. // We infer the size of a symbol by looking at where the next symbol begins. var addrs []uint64 for _, s := range plan9Syms { addrs = append(addrs, s.Value) } sort.Sort(uint64s(addrs)) var syms []Sym for _, s := range plan9Syms { sym := Sym{Addr: s.Value, Name: s.Name, Code: rune(s.Type)} i := sort.Search(len(addrs), func(x int) bool { return addrs[x] > s.Value }) if i < len(addrs) { sym.Size = int64(addrs[i] - s.Value) } syms = append(syms, sym) } return syms } go/src/cmd/objdump0040755000000000000000000000000012412656737014415 5ustar00rootroot00000000000000go/src/cmd/objdump/Makefile0100644000000000000000000000036212412656734016127 0ustar00rootroot00000000000000all: x86.go armasm.go x86.go: bundle ./bundle -p main -x x86_ rsc.io/x86/x86asm | gofmt >x86.go armasm.go: bundle ./bundle -p main -x arm_ rsc.io/arm/armasm | gofmt >armasm.go bundle: go build -o bundle code.google.com/p/rsc/cmd/bundle go/src/cmd/objdump/armasm.go0100644000000000000000000124232512412656737016311 0ustar00rootroot00000000000000// DO NOT EDIT. Generated by code.google.com/p/rsc/cmd/bundle // bundle -p main -x arm_ rsc.io/arm/armasm /* decode.go */ // 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. package main import ( "bytes" "encoding/binary" "fmt" "io" "strings" ) // An instFormat describes the format of an instruction encoding. // An instruction with 32-bit value x matches the format if x&mask == value // and the condition matches. // The condition matches if x>>28 == 0xF && value>>28==0xF // or if x>>28 != 0xF and value>>28 == 0. // If x matches the format, then the rest of the fields describe how to interpret x. // The opBits describe bits that should be extracted from x and added to the opcode. // For example opBits = 0x1234 means that the value // (2 bits at offset 1) followed by (4 bits at offset 3) // should be added to op. // Finally the args describe how to decode the instruction arguments. // args is stored as a fixed-size array; if there are fewer than len(args) arguments, // args[i] == 0 marks the end of the argument list. type arm_instFormat struct { mask uint32 value uint32 priority int8 op arm_Op opBits uint64 args arm_instArgs } type arm_instArgs [4]arm_instArg var ( arm_errMode = fmt.Errorf("unsupported execution mode") arm_errShort = fmt.Errorf("truncated instruction") arm_errUnknown = fmt.Errorf("unknown instruction") ) var arm_decoderCover []bool // Decode decodes the leading bytes in src as a single instruction. func arm_Decode(src []byte, mode arm_Mode) (inst arm_Inst, err error) { if mode != arm_ModeARM { return arm_Inst{}, arm_errMode } if len(src) < 4 { return arm_Inst{}, arm_errShort } if arm_decoderCover == nil { arm_decoderCover = make([]bool, len(arm_instFormats)) } x := binary.LittleEndian.Uint32(src) // The instFormat table contains both conditional and unconditional instructions. // Considering only the top 4 bits, the conditional instructions use mask=0, value=0, // while the unconditional instructions use mask=f, value=f. // Prepare a version of x with the condition cleared to 0 in conditional instructions // and then assume mask=f during matching. const condMask = 0xf0000000 xNoCond := x if x&condMask != condMask { xNoCond &^= condMask } var priority int8 Search: for i := range arm_instFormats { f := &arm_instFormats[i] if xNoCond&(f.mask|condMask) != f.value || f.priority <= priority { continue } delta := uint32(0) deltaShift := uint(0) for opBits := f.opBits; opBits != 0; opBits >>= 16 { n := uint(opBits & 0xFF) off := uint((opBits >> 8) & 0xFF) delta |= (x >> off) & (1<> 8) & (1<<4 - 1)) case arm_arg_R_12: return arm_Reg((x >> 12) & (1<<4 - 1)) case arm_arg_R_16: return arm_Reg((x >> 16) & (1<<4 - 1)) case arm_arg_R_12_nzcv: r := arm_Reg((x >> 12) & (1<<4 - 1)) if r == arm_R15 { return arm_APSR_nzcv } return r case arm_arg_R_16_WB: mode := arm_AddrLDM if (x>>21)&1 != 0 { mode = arm_AddrLDM_WB } return arm_Mem{Base: arm_Reg((x >> 16) & (1<<4 - 1)), Mode: mode} case arm_arg_R_rotate: Rm := arm_Reg(x & (1<<4 - 1)) typ, count := arm_decodeShift(x) // ROR #0 here means ROR #0, but decodeShift rewrites to RRX #1. if typ == arm_RotateRightExt { return arm_Reg(Rm) } return arm_RegShift{Rm, typ, uint8(count)} case arm_arg_R_shift_R: Rm := arm_Reg(x & (1<<4 - 1)) Rs := arm_Reg((x >> 8) & (1<<4 - 1)) typ := arm_Shift((x >> 5) & (1<<2 - 1)) return arm_RegShiftReg{Rm, typ, Rs} case arm_arg_R_shift_imm: Rm := arm_Reg(x & (1<<4 - 1)) typ, count := arm_decodeShift(x) if typ == arm_ShiftLeft && count == 0 { return arm_Reg(Rm) } return arm_RegShift{Rm, typ, uint8(count)} case arm_arg_R1_0: return arm_Reg((x & (1<<4 - 1))) case arm_arg_R1_12: return arm_Reg(((x >> 12) & (1<<4 - 1))) case arm_arg_R2_0: return arm_Reg((x & (1<<4 - 1)) | 1) case arm_arg_R2_12: return arm_Reg(((x >> 12) & (1<<4 - 1)) | 1) case arm_arg_SP: return arm_SP case arm_arg_Sd_Dd: v := (x >> 12) & (1<<4 - 1) vx := (x >> 22) & 1 sz := (x >> 8) & 1 if sz != 0 { return arm_D0 + arm_Reg(vx<<4+v) } else { return arm_S0 + arm_Reg(v<<1+vx) } case arm_arg_Dd_Sd: return arm_decodeArg(arm_arg_Sd_Dd, x^(1<<8)) case arm_arg_Sd: v := (x >> 12) & (1<<4 - 1) vx := (x >> 22) & 1 return arm_S0 + arm_Reg(v<<1+vx) case arm_arg_Sm_Dm: v := (x >> 0) & (1<<4 - 1) vx := (x >> 5) & 1 sz := (x >> 8) & 1 if sz != 0 { return arm_D0 + arm_Reg(vx<<4+v) } else { return arm_S0 + arm_Reg(v<<1+vx) } case arm_arg_Sm: v := (x >> 0) & (1<<4 - 1) vx := (x >> 5) & 1 return arm_S0 + arm_Reg(v<<1+vx) case arm_arg_Dn_half: v := (x >> 16) & (1<<4 - 1) vx := (x >> 7) & 1 return arm_RegX{arm_D0 + arm_Reg(vx<<4+v), int((x >> 21) & 1)} case arm_arg_Sn_Dn: v := (x >> 16) & (1<<4 - 1) vx := (x >> 7) & 1 sz := (x >> 8) & 1 if sz != 0 { return arm_D0 + arm_Reg(vx<<4+v) } else { return arm_S0 + arm_Reg(v<<1+vx) } case arm_arg_Sn: v := (x >> 16) & (1<<4 - 1) vx := (x >> 7) & 1 return arm_S0 + arm_Reg(v<<1+vx) case arm_arg_const: v := x & (1<<8 - 1) rot := (x >> 8) & (1<<4 - 1) * 2 if rot > 0 && v&3 == 0 { // could rotate less return arm_ImmAlt{uint8(v), uint8(rot)} } if rot >= 24 && ((v<<(32-rot))&0xFF)>>(32-rot) == v { // could wrap around to rot==0. return arm_ImmAlt{uint8(v), uint8(rot)} } return arm_Imm(v>>rot | v<<(32-rot)) case arm_arg_endian: return arm_Endian((x >> 9) & 1) case arm_arg_fbits: return arm_Imm((16 << ((x >> 7) & 1)) - ((x&(1<<4-1))<<1 | (x>>5)&1)) case arm_arg_fp_0: return arm_Imm(0) case arm_arg_imm24: return arm_Imm(x & (1<<24 - 1)) case arm_arg_imm5: return arm_Imm((x >> 7) & (1<<5 - 1)) case arm_arg_imm5_32: x = (x >> 7) & (1<<5 - 1) if x == 0 { x = 32 } return arm_Imm(x) case arm_arg_imm5_nz: x = (x >> 7) & (1<<5 - 1) if x == 0 { return nil } return arm_Imm(x) case arm_arg_imm_4at16_12at0: return arm_Imm((x>>16)&(1<<4-1)<<12 | x&(1<<12-1)) case arm_arg_imm_12at8_4at0: return arm_Imm((x>>8)&(1<<12-1)<<4 | x&(1<<4-1)) case arm_arg_imm_vfp: x = (x>>16)&(1<<4-1)<<4 | x&(1<<4-1) return arm_Imm(x) case arm_arg_label24: imm := (x & (1<<24 - 1)) << 2 return arm_PCRel(int32(imm<<6) >> 6) case arm_arg_label24H: h := (x >> 24) & 1 imm := (x&(1<<24-1))<<2 | h<<1 return arm_PCRel(int32(imm<<6) >> 6) case arm_arg_label_m_12: d := int32(x & (1<<12 - 1)) return arm_Mem{Base: arm_PC, Mode: arm_AddrOffset, Offset: int16(-d)} case arm_arg_label_p_12: d := int32(x & (1<<12 - 1)) return arm_Mem{Base: arm_PC, Mode: arm_AddrOffset, Offset: int16(d)} case arm_arg_label_pm_12: d := int32(x & (1<<12 - 1)) u := (x >> 23) & 1 if u == 0 { d = -d } return arm_Mem{Base: arm_PC, Mode: arm_AddrOffset, Offset: int16(d)} case arm_arg_label_pm_4_4: d := int32((x>>8)&(1<<4-1)<<4 | x&(1<<4-1)) u := (x >> 23) & 1 if u == 0 { d = -d } return arm_PCRel(d) case arm_arg_lsb_width: lsb := (x >> 7) & (1<<5 - 1) msb := (x >> 16) & (1<<5 - 1) if msb < lsb || msb >= 32 { return nil } return arm_Imm(msb + 1 - lsb) case arm_arg_mem_R: Rn := arm_Reg((x >> 16) & (1<<4 - 1)) return arm_Mem{Base: Rn, Mode: arm_AddrOffset} case arm_arg_mem_R_pm_R_postindex: // Treat [],+/- like [,+/-{,}]{!} // by forcing shift bits to <<0 and P=0, W=0 (postindex=true). return arm_decodeArg(arm_arg_mem_R_pm_R_shift_imm_W, x&^((1<<7-1)<<5|1<<24|1<<21)) case arm_arg_mem_R_pm_R_W: // Treat [,+/-]{!} like [,+/-{,}]{!} // by forcing shift bits to <<0. return arm_decodeArg(arm_arg_mem_R_pm_R_shift_imm_W, x&^((1<<7-1)<<5)) case arm_arg_mem_R_pm_R_shift_imm_offset: // Treat [],+/-{,} like [,+/-{,}]{!} // by forcing P=1, W=0 (index=false, wback=false). return arm_decodeArg(arm_arg_mem_R_pm_R_shift_imm_W, x&^(1<<21)|1<<24) case arm_arg_mem_R_pm_R_shift_imm_postindex: // Treat [],+/-{,} like [,+/-{,}]{!} // by forcing P=0, W=0 (postindex=true). return arm_decodeArg(arm_arg_mem_R_pm_R_shift_imm_W, x&^(1<<24|1<<21)) case arm_arg_mem_R_pm_R_shift_imm_W: Rn := arm_Reg((x >> 16) & (1<<4 - 1)) Rm := arm_Reg(x & (1<<4 - 1)) typ, count := arm_decodeShift(x) u := (x >> 23) & 1 w := (x >> 21) & 1 p := (x >> 24) & 1 if p == 0 && w == 1 { return nil } sign := int8(+1) if u == 0 { sign = -1 } mode := arm_AddrMode(uint8(p<<1) | uint8(w^1)) return arm_Mem{Base: Rn, Mode: mode, Sign: sign, Index: Rm, Shift: typ, Count: count} case arm_arg_mem_R_pm_imm12_offset: // Treat [,#+/-] like [{,#+/-}]{!} // by forcing P=1, W=0 (index=false, wback=false). return arm_decodeArg(arm_arg_mem_R_pm_imm12_W, x&^(1<<21)|1<<24) case arm_arg_mem_R_pm_imm12_postindex: // Treat [],#+/- like [{,#+/-}]{!} // by forcing P=0, W=0 (postindex=true). return arm_decodeArg(arm_arg_mem_R_pm_imm12_W, x&^(1<<24|1<<21)) case arm_arg_mem_R_pm_imm12_W: Rn := arm_Reg((x >> 16) & (1<<4 - 1)) u := (x >> 23) & 1 w := (x >> 21) & 1 p := (x >> 24) & 1 if p == 0 && w == 1 { return nil } sign := int8(+1) if u == 0 { sign = -1 } imm := int16(x & (1<<12 - 1)) mode := arm_AddrMode(uint8(p<<1) | uint8(w^1)) return arm_Mem{Base: Rn, Mode: mode, Offset: int16(sign) * imm} case arm_arg_mem_R_pm_imm8_postindex: // Treat [],#+/- like [{,#+/-}]{!} // by forcing P=0, W=0 (postindex=true). return arm_decodeArg(arm_arg_mem_R_pm_imm8_W, x&^(1<<24|1<<21)) case arm_arg_mem_R_pm_imm8_W: Rn := arm_Reg((x >> 16) & (1<<4 - 1)) u := (x >> 23) & 1 w := (x >> 21) & 1 p := (x >> 24) & 1 if p == 0 && w == 1 { return nil } sign := int8(+1) if u == 0 { sign = -1 } imm := int16((x>>8)&(1<<4-1)<<4 | x&(1<<4-1)) mode := arm_AddrMode(uint8(p<<1) | uint8(w^1)) return arm_Mem{Base: Rn, Mode: mode, Offset: int16(sign) * imm} case arm_arg_mem_R_pm_imm8at0_offset: Rn := arm_Reg((x >> 16) & (1<<4 - 1)) u := (x >> 23) & 1 sign := int8(+1) if u == 0 { sign = -1 } imm := int16(x&(1<<8-1)) << 2 return arm_Mem{Base: Rn, Mode: arm_AddrOffset, Offset: int16(sign) * imm} case arm_arg_option: return arm_Imm(x & (1<<4 - 1)) case arm_arg_registers: return arm_RegList(x & (1<<16 - 1)) case arm_arg_registers2: x &= 1<<16 - 1 n := 0 for i := 0; i < 16; i++ { if x>>uint(i)&1 != 0 { n++ } } if n < 2 { return nil } return arm_RegList(x) case arm_arg_registers1: Rt := (x >> 12) & (1<<4 - 1) return arm_RegList(1 << Rt) case arm_arg_satimm4: return arm_Imm((x >> 16) & (1<<4 - 1)) case arm_arg_satimm5: return arm_Imm((x >> 16) & (1<<5 - 1)) case arm_arg_satimm4m1: return arm_Imm((x>>16)&(1<<4-1) + 1) case arm_arg_satimm5m1: return arm_Imm((x>>16)&(1<<5-1) + 1) case arm_arg_widthm1: return arm_Imm((x>>16)&(1<<5-1) + 1) } } // decodeShift decodes the shift-by-immediate encoded in x. func arm_decodeShift(x uint32) (arm_Shift, uint8) { count := (x >> 7) & (1<<5 - 1) typ := arm_Shift((x >> 5) & (1<<2 - 1)) switch typ { case arm_ShiftRight, arm_ShiftRightSigned: if count == 0 { count = 32 } case arm_RotateRight: if count == 0 { typ = arm_RotateRightExt count = 1 } } return typ, uint8(count) } /* gnu.go */ // 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. var arm_saveDot = strings.NewReplacer( ".F16", "_dot_F16", ".F32", "_dot_F32", ".F64", "_dot_F64", ".S32", "_dot_S32", ".U32", "_dot_U32", ".FXS", "_dot_S", ".FXU", "_dot_U", ".32", "_dot_32", ) // GNUSyntax returns the GNU assembler syntax for the instruction, as defined by GNU binutils. // This form typically matches the syntax defined in the ARM Reference Manual. func arm_GNUSyntax(inst arm_Inst) string { var buf bytes.Buffer op := inst.Op.String() op = arm_saveDot.Replace(op) op = strings.Replace(op, ".", "", -1) op = strings.Replace(op, "_dot_", ".", -1) op = strings.ToLower(op) buf.WriteString(op) sep := " " for i, arg := range inst.Args { if arg == nil { break } text := arm_gnuArg(&inst, i, arg) if text == "" { continue } buf.WriteString(sep) sep = ", " buf.WriteString(text) } return buf.String() } func arm_gnuArg(inst *arm_Inst, argIndex int, arg arm_Arg) string { switch inst.Op &^ 15 { case arm_LDRD_EQ, arm_LDREXD_EQ, arm_STRD_EQ: if argIndex == 1 { // second argument in consecutive pair not printed return "" } case arm_STREXD_EQ: if argIndex == 2 { // second argument in consecutive pair not printed return "" } } switch arg := arg.(type) { case arm_Imm: switch inst.Op &^ 15 { case arm_BKPT_EQ: return fmt.Sprintf("%#04x", uint32(arg)) case arm_SVC_EQ: return fmt.Sprintf("%#08x", uint32(arg)) } return fmt.Sprintf("#%d", int32(arg)) case arm_ImmAlt: return fmt.Sprintf("#%d, %d", arg.Val, arg.Rot) case arm_Mem: R := arm_gnuArg(inst, -1, arg.Base) X := "" if arg.Sign != 0 { X = "" if arg.Sign < 0 { X = "-" } X += arm_gnuArg(inst, -1, arg.Index) if arg.Shift == arm_ShiftLeft && arg.Count == 0 { // nothing } else if arg.Shift == arm_RotateRightExt { X += ", rrx" } else { X += fmt.Sprintf(", %s #%d", strings.ToLower(arg.Shift.String()), arg.Count) } } else { X = fmt.Sprintf("#%d", arg.Offset) } switch arg.Mode { case arm_AddrOffset: if X == "#0" { return fmt.Sprintf("[%s]", R) } return fmt.Sprintf("[%s, %s]", R, X) case arm_AddrPreIndex: return fmt.Sprintf("[%s, %s]!", R, X) case arm_AddrPostIndex: return fmt.Sprintf("[%s], %s", R, X) case arm_AddrLDM: if X == "#0" { return R } case arm_AddrLDM_WB: if X == "#0" { return R + "!" } } return fmt.Sprintf("[%s Mode(%d) %s]", R, int(arg.Mode), X) case arm_PCRel: return fmt.Sprintf(".%+#x", int32(arg)+4) case arm_Reg: switch inst.Op &^ 15 { case arm_LDREX_EQ: if argIndex == 0 { return fmt.Sprintf("r%d", int32(arg)) } } switch arg { case arm_R10: return "sl" case arm_R11: return "fp" case arm_R12: return "ip" } case arm_RegList: var buf bytes.Buffer fmt.Fprintf(&buf, "{") sep := "" for i := 0; i < 16; i++ { if arg&(1<= arm_Op(len(arm_opstr)) || arm_opstr[op] == "" { return fmt.Sprintf("Op(%d)", int(op)) } return arm_opstr[op] } // An Inst is a single instruction. type arm_Inst struct { Op arm_Op // Opcode mnemonic Enc uint32 // Raw encoding bits. Len int // Length of encoding in bytes. Args arm_Args // Instruction arguments, in ARM manual order. } func (i arm_Inst) String() string { var buf bytes.Buffer buf.WriteString(i.Op.String()) for j, arg := range i.Args { if arg == nil { break } if j == 0 { buf.WriteString(" ") } else { buf.WriteString(", ") } buf.WriteString(arg.String()) } return buf.String() } // An Args holds the instruction arguments. // If an instruction has fewer than 4 arguments, // the final elements in the array are nil. type arm_Args [4]arm_Arg // An Arg is a single instruction argument, one of these types: // Endian, Imm, Mem, PCRel, Reg, RegList, RegShift, RegShiftReg. type arm_Arg interface { IsArg() String() string } type arm_Float32Imm float32 func (arm_Float32Imm) IsArg() {} func (f arm_Float32Imm) String() string { return fmt.Sprintf("#%v", float32(f)) } type arm_Float64Imm float32 func (arm_Float64Imm) IsArg() {} func (f arm_Float64Imm) String() string { return fmt.Sprintf("#%v", float64(f)) } // An Imm is an integer constant. type arm_Imm uint32 func (arm_Imm) IsArg() {} func (i arm_Imm) String() string { return fmt.Sprintf("#%#x", uint32(i)) } // A ImmAlt is an alternate encoding of an integer constant. type arm_ImmAlt struct { Val uint8 Rot uint8 } func (arm_ImmAlt) IsArg() {} func (i arm_ImmAlt) Imm() arm_Imm { v := uint32(i.Val) r := uint(i.Rot) return arm_Imm(v>>r | v<<(32-r)) } func (i arm_ImmAlt) String() string { return fmt.Sprintf("#%#x, %d", i.Val, i.Rot) } // A Label is a text (code) address. type arm_Label uint32 func (arm_Label) IsArg() {} func (i arm_Label) String() string { return fmt.Sprintf("%#x", uint32(i)) } // A Reg is a single register. // The zero value denotes R0, not the absence of a register. type arm_Reg uint8 const ( arm_R0 arm_Reg = iota arm_R1 arm_R2 arm_R3 arm_R4 arm_R5 arm_R6 arm_R7 arm_R8 arm_R9 arm_R10 arm_R11 arm_R12 arm_R13 arm_R14 arm_R15 arm_S0 arm_S1 arm_S2 arm_S3 arm_S4 arm_S5 arm_S6 arm_S7 arm_S8 arm_S9 arm_S10 arm_S11 arm_S12 arm_S13 arm_S14 arm_S15 arm_S16 arm_S17 arm_S18 arm_S19 arm_S20 arm_S21 arm_S22 arm_S23 arm_S24 arm_S25 arm_S26 arm_S27 arm_S28 arm_S29 arm_S30 arm_S31 arm_D0 arm_D1 arm_D2 arm_D3 arm_D4 arm_D5 arm_D6 arm_D7 arm_D8 arm_D9 arm_D10 arm_D11 arm_D12 arm_D13 arm_D14 arm_D15 arm_D16 arm_D17 arm_D18 arm_D19 arm_D20 arm_D21 arm_D22 arm_D23 arm_D24 arm_D25 arm_D26 arm_D27 arm_D28 arm_D29 arm_D30 arm_D31 arm_APSR arm_APSR_nzcv arm_FPSCR arm_SP = arm_R13 arm_LR = arm_R14 arm_PC = arm_R15 ) func (arm_Reg) IsArg() {} func (r arm_Reg) String() string { switch r { case arm_APSR: return "APSR" case arm_APSR_nzcv: return "APSR_nzcv" case arm_FPSCR: return "FPSCR" case arm_SP: return "SP" case arm_PC: return "PC" case arm_LR: return "LR" } if arm_R0 <= r && r <= arm_R15 { return fmt.Sprintf("R%d", int(r-arm_R0)) } if arm_S0 <= r && r <= arm_S31 { return fmt.Sprintf("S%d", int(r-arm_S0)) } if arm_D0 <= r && r <= arm_D31 { return fmt.Sprintf("D%d", int(r-arm_D0)) } return fmt.Sprintf("Reg(%d)", int(r)) } // A RegX represents a fraction of a multi-value register. // The Index field specifies the index number, // but the size of the fraction is not specified. // It must be inferred from the instruction and the register type. // For example, in a VMOV instruction, RegX{D5, 1} represents // the top 32 bits of the 64-bit D5 register. type arm_RegX struct { Reg arm_Reg Index int } func (arm_RegX) IsArg() {} func (r arm_RegX) String() string { return fmt.Sprintf("%s[%d]", r.Reg, r.Index) } // A RegList is a register list. // Bits at indexes x = 0 through 15 indicate whether the corresponding Rx register is in the list. type arm_RegList uint16 func (arm_RegList) IsArg() {} func (r arm_RegList) String() string { var buf bytes.Buffer fmt.Fprintf(&buf, "{") sep := "" for i := 0; i < 16; i++ { if r&(1< is a lie; the assembler uses @> 0 // instead of @x> 1, but i wanted to be clear that it // was a different operation (rotate right extended, not rotate right). var arm_plan9Shift = []string{"<<", ">>", "->", "@>", "@x>"} func arm_plan9Arg(inst *arm_Inst, pc uint64, symname func(uint64) (string, uint64), arg arm_Arg) string { switch a := arg.(type) { case arm_Endian: case arm_Imm: return fmt.Sprintf("$%d", int(a)) case arm_Mem: case arm_PCRel: addr := uint32(pc) + 8 + uint32(a) if s, base := symname(uint64(addr)); s != "" && uint64(addr) == base { return fmt.Sprintf("%s(SB)", s) } return fmt.Sprintf("%#x", addr) case arm_Reg: if a < 16 { return fmt.Sprintf("R%d", int(a)) } case arm_RegList: var buf bytes.Buffer start := -2 end := -2 fmt.Fprintf(&buf, "[") flush := func() { if start >= 0 { if buf.Len() > 1 { fmt.Fprintf(&buf, ",") } if start == end { fmt.Fprintf(&buf, "R%d", start) } else { fmt.Fprintf(&buf, "R%d-R%d", start, end) } } } for i := 0; i < 16; i++ { if a&(1< ,,# cond:4|0|0|1|0|1|0|1|S|Rn:4|Rd:4|imm12:12 {0x0fe00090, 0x00a00010, 4, arm_ADC_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_R_16, arm_arg_R_shift_R}}, // ADC{S} ,,, cond:4|0|0|0|0|1|0|1|S|Rn:4|Rd:4|Rs:4|0|type:2|1|Rm:4 {0x0fe00010, 0x00a00000, 2, arm_ADC_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_R_16, arm_arg_R_shift_imm}}, // ADC{S} ,,{,} cond:4|0|0|0|0|1|0|1|S|Rn:4|Rd:4|imm5:5|type:2|0|Rm:4 {0x0fe00000, 0x02800000, 2, arm_ADD_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_R_16, arm_arg_const}}, // ADD{S} ,,# cond:4|0|0|1|0|1|0|0|S|Rn:4|Rd:4|imm12:12 {0x0fe00090, 0x00800010, 4, arm_ADD_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_R_16, arm_arg_R_shift_R}}, // ADD{S} ,,, cond:4|0|0|0|0|1|0|0|S|Rn:4|Rd:4|Rs:4|0|type:2|1|Rm:4 {0x0fe00010, 0x00800000, 2, arm_ADD_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_R_16, arm_arg_R_shift_imm}}, // ADD{S} ,,{,} cond:4|0|0|0|0|1|0|0|S|Rn:4|Rd:4|imm5:5|type:2|0|Rm:4 {0x0fef0000, 0x028d0000, 2, arm_ADD_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_SP, arm_arg_const}}, // ADD{S} ,SP,# cond:4|0|0|1|0|1|0|0|S|1|1|0|1|Rd:4|imm12:12 {0x0fef0010, 0x008d0000, 2, arm_ADD_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_SP, arm_arg_R_shift_imm}}, // ADD{S} ,SP,{,} cond:4|0|0|0|0|1|0|0|S|1|1|0|1|Rd:4|imm5:5|type:2|0|Rm:4 {0x0fe00000, 0x02000000, 2, arm_AND_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_R_16, arm_arg_const}}, // AND{S} ,,# cond:4|0|0|1|0|0|0|0|S|Rn:4|Rd:4|imm12:12 {0x0fe00090, 0x00000010, 4, arm_AND_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_R_16, arm_arg_R_shift_R}}, // AND{S} ,,, cond:4|0|0|0|0|0|0|0|S|Rn:4|Rd:4|Rs:4|0|type:2|1|Rm:4 {0x0fe00010, 0x00000000, 2, arm_AND_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_R_16, arm_arg_R_shift_imm}}, // AND{S} ,,{,} cond:4|0|0|0|0|0|0|0|S|Rn:4|Rd:4|imm5:5|type:2|0|Rm:4 {0x0fef0070, 0x01a00040, 4, arm_ASR_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_R_0, arm_arg_imm5_32}}, // ASR{S} ,,# cond:4|0|0|0|1|1|0|1|S|0|0|0|0|Rd:4|imm5:5|1|0|0|Rm:4 {0x0fef00f0, 0x01a00050, 4, arm_ASR_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_R_0, arm_arg_R_8}}, // ASR{S} ,, cond:4|0|0|0|1|1|0|1|S|0|0|0|0|Rd:4|Rm:4|0|1|0|1|Rn:4 {0x0f000000, 0x0a000000, 4, arm_B_EQ, 0x1c04, arm_instArgs{arm_arg_label24}}, // B cond:4|1|0|1|0|imm24:24 {0x0fe0007f, 0x07c0001f, 4, arm_BFC_EQ, 0x1c04, arm_instArgs{arm_arg_R_12, arm_arg_imm5, arm_arg_lsb_width}}, // BFC ,#,# cond:4|0|1|1|1|1|1|0|msb:5|Rd:4|lsb:5|0|0|1|1|1|1|1 {0x0fe00070, 0x07c00010, 2, arm_BFI_EQ, 0x1c04, arm_instArgs{arm_arg_R_12, arm_arg_R_0, arm_arg_imm5, arm_arg_lsb_width}}, // BFI ,,#,# cond:4|0|1|1|1|1|1|0|msb:5|Rd:4|lsb:5|0|0|1|Rn:4 {0x0fe00000, 0x03c00000, 2, arm_BIC_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_R_16, arm_arg_const}}, // BIC{S} ,,# cond:4|0|0|1|1|1|1|0|S|Rn:4|Rd:4|imm12:12 {0x0fe00090, 0x01c00010, 4, arm_BIC_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_R_16, arm_arg_R_shift_R}}, // BIC{S} ,,, cond:4|0|0|0|1|1|1|0|S|Rn:4|Rd:4|Rs:4|0|type:2|1|Rm:4 {0x0fe00010, 0x01c00000, 2, arm_BIC_EQ, 0x14011c04, arm_instArgs{arm_arg_R_12, arm_arg_R_16, arm_arg_R_shift_imm}}, // BIC{S} ,,{,} cond:4|0|0|0|1|1|1|0|S|Rn:4|Rd:4|imm5:5|type:2|0|Rm:4 {0x0ff000f0, 0x01200070, 4, arm_BKPT_EQ, 0x1c04, arm_instArgs{arm_arg_imm_12at8_4at0}}, // BKPT # cond:4|0|0|0|1|0|0|1|0|imm12:12|0|1|1|1|imm4:4 {0x0f000000, 0x0b000000, 4, arm_BL_EQ, 0x1c04, arm_instArgs{arm_arg_label24}}, // BL cond:4|1|0|1|1|imm24:24 {0xfe000000, 0xfa000000, 4, arm_BLX, 0x0, arm_instArgs{arm_arg_label24H}}, // BLX 1|1|1|1|1|0|1|H|imm24:24 {0x0ffffff0, 0x012fff30, 4, arm_BLX_EQ, 0x1c04, arm_instArgs{arm_arg_R_0}}, // BLX cond:4|0|0|0|1|0|0|1|0|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|0|0|1|1|Rm:4 {0x0ff000f0, 0x012fff30, 3, arm_BLX_EQ, 0x1c04, arm_instArgs{arm_arg_R_0}}, // BLX cond:4|0|0|0|1|0|0|1|0|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|0|0|1|1|Rm:4 {0x0ffffff0, 0x012fff10, 4, arm_BX_EQ, 0x1c04, arm_instArgs{arm_arg_R_0}}, // BX cond:4|0|0|0|1|0|0|1|0|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|0|0|0|1|Rm:4 {0x0ff000f0, 0x012fff10, 3, arm_BX_EQ, 0x1c04, arm_instArgs{arm_arg_R_0}}, // BX cond:4|0|0|0|1|0|0|1|0|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|0|0|0|1|Rm:4 {0x0ffffff0, 0x012fff20, 4, arm_BXJ_EQ, 0x1c04, arm_instArgs{arm_arg_R_0}}, // BXJ cond:4|0|0|0|1|0|0|1|0|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|0|0|1|0|Rm:4 {0x0ff000f0, 0x012fff20, 3, arm_BXJ_EQ, 0x1c04, arm_instArgs{arm_arg_R_0}}, // BXJ cond:4|0|0|0|1|0|0|1|0|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|0|0|1|0|Rm:4 {0xffffffff, 0xf57ff01f, 4, arm_CLREX, 0x0, arm_instArgs{}}, // CLREX 1|1|1|1|0|1|0|1|0|1|1|1|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(0)|(0)|(0)|(0)|0|0|0|1|(1)|(1)|(1)|(1) {0xfff000f0, 0xf57ff01f, 3, arm_CLREX, 0x0, arm_instArgs{}}, // CLREX 1|1|1|1|0|1|0|1|0|1|1|1|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(1)|(0)|(0)|(0)|(0)|0|0|0|1|(1)|(1)|(1)|(1) {0x0fff0ff0, 0x016f0f10, 4, arm_CLZ_EQ, 0x1c04, arm_instArgs{arm_arg_R_12, arm_arg_R_0}}, // CLZ , cond:4|0|0|0|1|0|1|1|0|(1)|(1)|(1)|(1)|Rd:4|(1)|(1)|(1)|(1)|0|0|0|1|Rm:4 {0x0ff000f0, 0x016f0f10, 3, arm_CLZ_EQ, 0x1c04, arm_instArgs{arm_arg_R_12, arm_arg_R_0}}, // CLZ , cond:4|0|0|0|1|0|1|1|0|(1)|(1)|(1)|(1)|Rd:4|(1)|(1)|(1)|(1)|0|0|0|1|Rm:4 {0x0ff0f000, 0x03700000, 4, arm_CMN_EQ, 0x1c04, arm_instArgs{arm_arg_R_16, arm_arg_const}}, // CMN ,# cond:4|0|0|1|1|0|1|1|1|Rn:4|(0)|(0)|(0)|(0)|imm12:12 {0x0ff00000, 0x03700000, 3, arm_CMN_EQ, 0x1c04, arm_instArgs{arm_arg_R_16, arm_arg_const}}, // CMN ,# cond:4|0|0|1|1|0|1|1|1|Rn:4|(0)|(0)|(0)|(0)|imm12:12 {0x0ff0f090, 0x01700010, 4, arm_CMN_EQ, 0x1c04, arm_instArgs{arm_arg_R_16, arm_arg_R_shift_R}}, // CMN ,, cond:4|0|0|0|1|0|1|1|1|Rn:4|(0)|(0)|(0)|(0)|Rs:4|0|type:2|1|Rm:4 {0x0ff00090, 0x01700010, 3, arm_CMN_EQ, 0x1c04, arm_instArgs{arm_arg_R_16, arm_arg_R_shift_R}}, // CMN ,, cond:4|0|0|0|1|0|1|1|1|Rn:4|(0)|(0)|(0)|(0)|Rs:4|0|type:2|1|Rm:4 {0x0ff0f010, 0x01700000, 4, arm_CMN_EQ, 0x1c04, arm_instArgs{arm_arg_R_16, arm_arg_R_shift_imm}}, // CMN ,{,} cond:4|0|0|0|1|0|1|1|1|Rn:4|(0)|(0)|(0)|(0)|imm5:5|type:2|0|Rm:4 {0x0ff00010, 0x01700000, 3, arm_CMN_EQ, 0x1c04, arm_instArgs{arm_arg_R_16, arm_arg_R_shift_imm}}, // CMN ,{,} cond:4|0|0|0|1|0|1|1|1|Rn:4|(0)|(0)|(0)|(0)|imm5:5|type:2|0|Rm:4 {0x0ff0f000, 0x03500000, 4, arm_CMP_EQ, 0x1c04, arm_instArgs{arm_arg_R_16, arm_arg_const}}, // CMP ,# cond:4|0|0|1|1|0|1|0|1|Rn:4|(0)|(0)|(0)|(0)|imm12:12 {0x0ff00000, 0x03500000, 3, arm_CMP_EQ, 0x1c04, arm_instArgs{arm_arg_R_16, arm_arg_const}}, // CMP ,# cond:4|0|0|1|1|0|1|0|1|Rn:4|(0)|(0)|(0)|(0)|imm12:12 {0x0ff0f090, 0x01500010, 4, arm_CMP_EQ, 0x1c04, arm_instArgs{arm_arg_R_16, arm_arg_R_shift_R}}, // CMP ,, cond:4|0|0|0|1|0|1|0|1|Rn:4|(0)|(0)|(0)|(0)|Rs:4|0|type:2|1|Rm:4 {0x0ff00090, 0x01500010, 3, arm_CMP_EQ, 0x1c04, arm_instArgs{arm_arg_R_16, arm_arg_R_shift_R}}, // CMP ,, cond:4|0|0|0|1|0|1|0|1|Rn:4|(0)|(0)|(0)|(0)|Rs:4|0|type:2|1|Rm:4 {0x0ff0f010, 0x01500000, 4, arm_CMP_EQ, 0x1c04, arm_instArgs{arm_arg_R_16, arm_arg_R_shift_imm}}, // CMP ,{,} cond:4|0|0|0|1|0|1|0|1|Rn:4|(0)|(0)|(0)|(0)|imm5:5|type:2|0|Rm:4 {0x0ff00010, 0x01500000, 3, arm_CMP_EQ, 0x1c04, arm_instArgs{arm_arg_R_16, arm_arg_R_shift_imm}}, // CMP ,{,} cond:4|0|0|0|1|0|1|0|1|Rn:4|(0)|(0)|(0)|(0)|imm5:5|type:2|0|Rm:4 {0x0ffffff0, 0x0320f0f0, 4, arm_DBG_EQ, 0x1c04, arm_instArgs{arm_arg_option}}, // DBG #

fˌe<60c>7fќy#ZޫzU{ϹgN~UK;Og/h6ۍ^Uo;u0&ٜ .<}7p]]gkh0uEg݈bGBAo_w沸OE@=INZ1m(BԢYeۮ^ œ|bvI˕L-Z.A4L^ɛ~_^ʤz'XQɔG#e1.|}+~dP8Pp»}w ė^9:^hj鐫D+jB0,Ĵzclѹ( ix/<n1Չ6|_g~}HUo$ZPq| >=/$xB;I|O"z<[I=T|T>k𧚪(+"ExwTm׼V|v P.<{4%fߙB`2vj0eԧu /[Ѳfzq&=@r 1 y|N@onZX7XH"x+lI|V ѐ;c %sJ+[iI, UBѻmWOw>#QET)(Ӓ>tJ%{xPr!cFstsJ.%#YV}D Uǧ#O%htmuэQ7L0 ITŔU=Av#lf1u :l1 Ґ՗ُQ{zw狗vvގ.~!`F QϦPA݊Z-L>/0!ߜ{F~OKVog|Q8CXeQ nP+|S ת 445iĺ܉J$!YN(Ԇ4FTZ ]ບɨKx0_Z8%UC&<XQ4Uuָ2T&.ՔJM֍K8nGbSrBc)2a:dxTف؄7;FKcI/?;ұHf2 0H犏&dTpzt!Zɀ@HY jPߞhI_=՛-%'SEZmpFcϿx>+.zJcLp|u:3ٞi[OI*xH?->ϾcyzV_g-Hf4kZpՑP@SPp"| \6h_<&e;~ٛ D@@ <r@,iZێensV]H;3e/)Dݠj{%?])TZ&O,mZy[CI!.?c;Ik56Y5^H]*'7(_óHJ;n Ț8HA@1b{c9ت$ہS"XdT+3]Lw<|Bw1aۚ_W@kf8ekͳYy6o7sW c8w}Q]WxF;-a v~_gQ⫮lD\*˗yj x y@S@r_o\kݵ qI4)vfݝH% 4 tb]b9QY2tl+^H%1:Lw!eR pGud< MWB*{ʡZ?<8d7(bZ=mLl]S+ኤ# 1 A(x" 1X.ULb8Abu=rZNUzqpbcg?UjۋK,bajW AˤiIͩ}_Q֜FDk_kGKVd^*6u}#:.1+tVD&I| n}dx³u~i6g%iH<fETm(o նI|SٺƵ%xy`!:ŒSWIv+9be2 ^,動]͹k8J֬.DH|r%gnn9[V|_Hq$jDIm<2H=K/mrx]+:_ꝩ DpZCkdp6h>uĈcl3|j}RQo DBj -_f+v8:z3Rez󬵞='Z޾(ixT:nYu aÎ*8B'H`ݬI㔹@@aX%x6ّK} 8iʈß8@ #> 7Nl3gua]ɱz'3VoKų JB &D6rn%~i@Yk?Z%GT'sfhzX{c)ܠ'JzLng SdaRj{#XcXM6 s GkB9WO/<[Ͼwyz !zWÅ@!2%~c9FB@(>Vpy.u~fTг<3 hBy7vf696BNP4)~+6O6xۤN2q΁/ :^b+`P.G_>,NV8_OG"iN 2-oimfQ5$Lj+on/ˏ'{<ސI(*`& i-j%U)29R2򴠀XֵˡMz.W%zԲ>D4:BQԋ!G:{2aX"}jj,_oIQfѩA5Ƞ)m;LJʄ@Pf5fނꞳat}Xu8bbbsQx0E;,KvbڴL=ճ#Y-;PVmn;]zܑPr;xiKH,MDUZ$sÌոwd;/$J^`Oz7uǖЬ*x"IDI*lF:. AeI\x1i|yx#ߺm׽u}ݷ|kyu| ;-%57۽V9S4av+@Y㺞-=rXK cv:ӝM%]RÒʔ2H3D0,bızF1II'y%4^h?xY8VMD O_o||SE6]HjGvvgrENƕ5[#>=Lo'gݹ-¿b,՞*9s}oz<43u`%"MLJe-KSEQVYĴ<Dƫ6`!"Kit//;x4XH(#G2Y+GM_'iSq14Yn3Qv gpAT 2W XI}Nk._Э AMWhYۨsZF0aZ ʙjny,+rnQAsvWi=$۫w:a/)22gR\_fF#G)mb3r|ƴ0qboI|58LW,ޝrn(PEi8P` #hg3h:6(#y|~6k98jYڵH]26L Ef r9[:$RVKC3gR(3IFB,&V{O`3U_1TOeUGCD < ixfsYpK@1e-9,SjYbӿnT`z_Q9` p k!qB1 f@{%CҼ; b0S/KIP3RV7wu{q0d[b4l7X _|K寚,~('?άP(bD G9EWLhM,h73ٺ`gI%9?,++ VK?Zw08v.C!# ԫ r V` B1޳s&7aįĐ&dߑq 1PFZmZNyN=l a8324ғ.0`l qBwc)Q$#ɨF4H+f+='A xՅvOQcȣMM!tkw;yQ ֔h(/>9LUyRj#}P )(6"e/+^>Ӈ~F'rxpl!vj6OZ'9}øA)8Pkp-0 ΆWzm4zϋgW0ܷc!!2a5|ɉJ)^rxh]9 >Lo[fV umǩh$#JMo8fpgQѝK'c[ iVdLN^ݘ]h$ I-mNxDbiv4cEԜ 'ؖF/l6NӘhÓN[^fomi(HzJt1y$L,cɤtPfjǨᔀj\=tI|OK mxxυF;u9mbh Fw5'ݙ$SB  ./fs®3YeOu巶S[ W :MPAPse P+:wK8|>=}H&S,wC$.xI}x}[@#4 ˗>4^Q+4*ĪTrvFXSeä{6Tua}H{~{M.5gtH`L5N1=[*lfY= C\ˡU,+u ^;i':(I>?itA[[%H;)^Z晽^A?(N +/`PSAPKU|FxV98?n5/mo@:]_'s>i.mV?%wMW'oƩЯN=-ItKuiZ߁a/Px@4sXK{{*";1MD4iMZ8 ID|ZUlPŹ7De7=^'J5v#1Lk2śf?gN2Ʈ^Rl)fm-`,O' q@mj5擛`̵ tj<*aö>,X oH]dk7'z{^i"2ƌΡ*OVupǽ7]j"]ٷJg!>jd4UK] U.|W3"^=it'օzb -׏%+#HFؐQ *؁:NypVqn#;w1eͻ6h;rQp33B!5U+qWv!vt5Jn8̮P{g;5z3tsyGRȟN۩8XLi,`!܇%xpT`u]x6ǧ~~ee,2& Mp*2p!tjV \Q漊C/x9 Cƅ,/.`, RlVAKm)6& %aS^zs!cdqQO lz MjʔDF [u3x N=tm!OlzJH{?<$at J{.NO«c.".6ة{2=w yL/F&FF$>ێAS{ NBU]%dz)޺&P#|DG ieC5&h'ZDJ8 N]jSbJZas-~ ndzHv}nusAE5miqǭ G+aElqBIghUMSCH4#q)RDp}#y+U~ H}7ݠ ^@~T1W is$*j8+"!Cl_^8-Հݿ"DΖO>VyO7Ft^۟gk Q!(jmF܂lǡ]šwdZRt|)WZ m~ZRUGykPV1Qb"<(cg֖O hMeubʑM%ow֟OکE2Lq-)b aZ *_u(8[l{+4,Oԯn8Q?ϦNThv[]m5yA>gZݶn1vu E%ϸEY(Ɔ/ޮh(RB@l^3R'J=&'a`?=Kr}n>%iwN5h)ptjZ@naf$`']$ZͩKOHVzxF/diP _ {ozֽ1R4yuj$j >Pq*TM5 [=Bn5,b&pYjf#osu%?>NٔOT p*R9M%r ])ֵ.$+Op((mw=p)3^%ptwwɺVJi~N5s5qԸ6~pUydC4%:sRWI8Oҽ\V]Z,<{Ov'Vc^#AѨVeJup׌gZ5,YNKF=CO%iहzݜ9G!h: &7 q A)N64L+Gʺ[EqDWQMbt7  z򁵛&7N?ݩ+@ S5 +=O>B@[r 4=eu~׏_Z(L$,e|W&eJY3PJ %y]ycGqht볼8yĝ׆lNv {Y.*.{.p Ln[@\!A$%xqMnroev^ө YBfgrȲ\x ZQ q Ǽ7NBן^w|Z{/7zz՛~a0υIN\Ua~anwgႠuJtW?Cv*G-0u,x5BΚf])vMɣ_t"7>NБ|o:\H pBSgbz Ɲq$*Ey+\A0ěԁ Ѱ9fyt[h3 DߴPC4U&;U U~e"GAǭxƕU,H8 8k-/޼ҫ̖(6!0hd GRŰ-zjylHN=vi\j:.-^\ϧXvj\2 %H=pCމjJgVjfq;,uJYV7m <}ԡrDƣHxķ@Ȕ0ywE%\8Ɗxy0K|=q֢Om&JJ!Y:-&pzC,h;yxJ0Y`!C.(@>JEbs݀9npA»iɅa @` !LiAp~a pu>.}avwxًR>kpǬzd b+(t/S+l~~F\=x^3G6T>TFp\0C]RR幖/XвqmHԿ}:)[W<[{]K-Lή#fM adhPe;#ׅ,|cTC|SdJF#=' }'4ྈ*N޽hȒa.MӦv`,ۦɳLKd}{ cIaNIa낟/ro]R ~.IAE7.|;w} b f ÁpXs3M1qJ8WX{X^ CncSp6 K^zg3#3{ȗ,)U|z@-5(wf oŜW#! b_٬ ;b_ri6uc200Thb&u.w)uWPJ1[8t|qu}R/\NYOY┺}v@*`mZந@,g+Q65B.pxfآ3ɴ Od $N5Od<*E\vW,{9/J--J7S8i,f 2j!Jf:|bva.cf/e=qr׉.$'s9km͝^ g5Ϭ3(zٙg SR cx'?-0LƫbLaOJw53no;/eQm: (-N`\Y/8chvT4IڭdQn晤pJ$VP`D!Nj rdLhcpcţgFbuL Y|YgT۬ϡ'v,]L8#0Ayp=Y?rM=o zHn&uktB#6$|X;W ]'XR&sF: 2$Qb&jٌi+bvrJEtꘌfj.OWUD,?~2&F4e>"cq6#KHX,S+{0MJr,$]q<2JTc DQNab{*'*@L+tpx+{3YZ.tOØ;vjd4EuѺf{l~nXy+TK{L٥{-5tVX?'Ezyv.ޜO&$58F۷|]=z%MzBē`aXO>%1dˆLΙv;2J jrN*0l^kmr.֛ JGRyٳFDˆkSm@!M( PD#- #%bV6I+|~nWe9~=QZH"@Ih5^KdjD_+3fS,Bq66'M !Hd$i4&ibɲ-RR1ChgYl|:e(R?ߠ$s).Ӝ'2\&-)B԰ YW0hӱ}}NU!f%cgϭGSn5C$k(FĮD 0܅T!f/|ӌ dN_J q Ez~}E50KDW ݋,5j bX;^7NR- 96^{skJI7 ưʵ7(# ;.3iMq)uPLD5a#lY/Qpn|\T)xU>Rh%qRjxyryC`  2mVQhԮ,}G 'V ].E9K|nWG%F=n@ h<$(4Y Sy. + RR+f*vXtx3~hõC湒8(^G!_݌YS]: 00yUȫZ=BLc G˻pݝc:]9i>SOf/ƇcL.s=b'yxxgޝoV<7n`td~Lqa bC"3l8r-ʿ7x%̃raRG܈wa8<N ~Ɍܻ2=bmc5SEAH0s=2bY56Ta@cZ}CE*nЋ?}N*wa_o4'~xH|I#cfSL'xDZ4E9lC Ol|ks؞ OToxHx`,GnU`[vJ0+YRbv'ꭁ,璻%W_KYnٛ5^uȏ[ۏׅqQ†ઓr#un>W7)(ߘTa<^ Gadc`f $fo6,_@rэ,'UC9xg 8"Dh|-Tn2n9 a?z!{^1_F_/ >1Lh][l'w3RndaݰЋKw~?|np_7ݬzkLCm4VyW/}I%T8jqL޿^!Ś#4USE95\ ζCtLě NL=EϧuNcV@(6.ƭ`tnRW|wtO7(O%wd-u<JYm;c77Q׮-"?XL޻ouVL4\I!Vd"m OuA}ϯs2QUY?!$vie#`JJC]^o Jw !TB2QP 5\Na; '/mٷ~>vuu1+_g%(Ok^:H GJ{|ʁRTt+Q/30זSoYg?<ĕXEr%3lp$|zzsf>jg`{Y|YTm|}rυA%2yB&sRa/& Qh*c-\<|{#YVm |6˒`@*%";,*jJ >dPKϣb,I_*Y47׻ 0z?Kٯ$RVQS4J8b>d L5Cȕ}ө¨Ì~9k46귵ifE #4-ֻL^qU lQ.sMj[XGc^ɐF!b7#^Gk✪M$,7%8>O |1>Tѣ6E .t ^lz8܃@O=uw7@3'M: p`x\UU1OxoĽ v;n7+VZ>i@rm7)xH+EALtdoq`0yf؞yk@5vΦ8'ybt2 t0AD(9u@-4, L$!{o1+\ p&nX鞣xpY3LM\8IN}Sux{*<e~/=*X_6 3x8g@d@aVq8Eb?x\|O(kGcx69F?, Phb/ !`{gjƁgxF㣗_zzz[gU$wK,,֧ϧ(oh6{`0j*4c"jy{:s76~{;zݽ U'^#PS.Y?5#iPn:ҫ{ON\ܺ+=zuQOA" {4ڑ$C_X{'xkgeP>#ٸ>%OA$#hڝ&[n4C1)Wku=`)@\g3$[ W%];-o{ >S}dOẃ(hc^ Gq-;,閞"|;ktRɀBNwonw7{*7$~?p55_sS"I@W3H<Oi[er=`m|3¿a( ҿwK sKódF#~wىjO4 G&cqք0]6Am8”J e.ߏd=U /53TX=Je|p+@!D6;%`)B~;{]FV޷A*3HIeFU,5jH-$jR s"S3Hׯ(]%(X/1* 2 7+e|`L@b7Lf.$?&x?85I ?³_NEn f⸩5HJLY;*`4EP䊇p)dxoF?|)XXRDB7Z+2FBUMIQjUZL b&-'~qU#Sd&DCў|)jfP IĘCM4FgaEրd4Sj[N 0'ow[g3 U1&&j0VJrp˲juS?fzZS [CIg'Z^ /IW$R/UQ)ǪQ n$ [ay.\[ti:տH ;<1Rp˶m#)m]BufTJk'|%5V%]&#I,62;#O%dDp˳@B iv&kBit7e{upQySK;}GSݠR<O?5z(yCt۪XF*UdI0yUKI/|5s$_,$?*~8LTrJ\pB,U H%edNfo|rs_/2A+UJbq8p_ :P:w9-*y*͵b˾x/-oIdl^_[%cY~=_PSU2L,+ ݲ$wVۛs8`q:AC) @acbjQ[ܫe+ދ 0^JZ@\0%aRgik=H e.eŶV& 'c _2z2[i[)HėD @4.uJZt\tfJi{@68K=zU,LjЃwLb }9mfFl(!Q>wP<^)Oǥ9v<SwucȎunNsFCBdDe6ĩHVH㹒9.z[( ф ;%\cM?IP\ͽ/')3@1OXN ᑅGUIK °SJ{|}oVeLF8`#ŠB`Q .9>$[<2k\xd?>t_Fu4F&hrG5ͪ(^I!PbT%uZݾ;K+)~ro'w띵Ng!eBjPPMP,αA_ *YeEek%4~kx2.-'&,E0;t2$ ƞ@cRKڵ 9uVpjWh:I__ZGXrxt+֑8lh#M!I)0kI@8fZ:yr< :g%HL}")妩ZM LNs ɨQ3R0|k7#a|/J%AA+d8UTr\p)3r F۠THY~8T)zP'"ctB $Q61O7@Lױ^ZGn+\JW+JEj5g=҅?f& 7m̛ǬvlYjQ ~xdсɨ?-f O.I}$ H(P.RDU,f)iA˗f ՓǼ۝F:%O- 'O&d:*Z5M2cII<2x-mnڍ9֧\HǸTmj*NKCt\6V_?^XKC 8Qg 4D놢H࿞kV[t?M_;^zAw'V1 .@B7;>\W Sw*ߗHEIƍ`< tuWo)≄,FSH$S(6*h7i/7w?/$\1H=>Y`L{8 cP-K>qU :9?KbW ߔ[<)S8hJ BA y 亀Q符W>m'5$W.p\ѭet܌(NX2j␖"L ҅EHvg+:y|/mv<($Դ"TI [..9P'jADITCHpsa%K_JkA4-B&XTLFcL!@?2rZza:p'CBix0 75McjZ\`:q OStN^Cq[,svvrDD>@V挻)o$:0OO$ }(DC1 wbt2 /`-1B>B2OԵA3XXH $VH "Z !יFM]g<_#r iSRš֠ΆF6"hT58:]akUdX\iY)Y␱igZ?-AT#D"Hc,C~6U(\YS&̨I))egPS'ba Dͦ5B=duaڮ7wM}hq;lo/ًzlxi ㈪L8 e5),3\O凷k !+LKDV%CP|Zc)edb!S˕գ#9M)K/KGZ8^dlʭcm OI#PO(F&S-e\VlV #R5dJ#Z[4`٩KiFsJae%DعDۃn(/`ˤJDh`VFOPy5 ;eu”XxӶw_SaK@Cx7C t<+Gq( lSKUZzXr |'^bߜV?il(әܺtmqbrxޣdޡ5E˪V#IutfbM<2 '"Xp։pND ɥ'aQ"gsjo WJEdCĬ}sǎicߴ oq 繐I&Gv3bs$e켵iw2X xz=|+<{WnB&)a&ã`vYT۫"b;U[ȎuĠνnxz=BSU$ 4m2TRyZC>T,.йiVuf0*;dNnBKHn%:ѰW|йmv' 4$wWp.- ΁c.(yO OH(i8"e R T(LzɹSq0b^O"|$~ӜǏ4M CfWTɝUv5A,vԗx[ xqyͽ$!Dl0)?|%|e"*p*-^T|cSStG8 f:k= [[`/"‡^/" xg? b SQ6FÀ\sM˖';[wjT閵"B~ubNLF~oŊ,Qx8a c%Ⱥ pQՔu};1l#?!T>44AMI8T }ea.&q&w>W~ދZ,B@\n]d*)Z0RmJ,88ϡE3LZ㺮XZr;&Zӳ^3;\BR5u^# WtKoqBA>ʶǪT"bŪ'S؛BN #rL4k*2˥^]₢I4ŪuŒYY-kAp% tG㑯L/4t<$`,J=1prO, X׫Io'P,)x2m"|:4qt dT.7uW:TA=fIK9i,M) Su$dvUaa؍f4z.Aܺ$b 4z1|GEi=DM4L&q3vۮP Px5%`ۭ^?;H!+bha1JbC-:tL_E졾!;x|%0z ެhjoN])&) eniEf-jB,f$'Iy%LPJIH1CPc0WOK1Avr5a d+5kk+ z/oSORtP0ؘ/ˎ1ۑi"ۗ`0^۬ ^~8Ys, $N3+*& > 9cI>@-iսm&@uQ"BϬW0ʼʒۮs\R(gJkDh,]W=D^Uq2̺] KVvE[BԆ>J. L iHW2UZzZ@VE-o?IןYGT#&&XHS)CsV$3Y- B"YU\uYg I$Qsn9kGbSʰ h,8KTmoQ@Be [^9wx EZ 㟂gT)ׄ0>;k_}RGC )-bN:-*ёiQQoἰo25/$PlN&LdFd|P-y%WvN9b44H'EKt}f|./J-S$q)5 SլLnS豵?z.ՕPfI8nT C8\o0xk8p?8s݇ck37$N $H,ṋ̃Jŀ:nĔ#n.p *(v1'.m\e`(&<۱ٞ!KخL;MQSB8ߏ:}DQT ,f$u$UYϔ ;q=S:/u/"GMpDisFL6|EGPa`wx.eeN^!F2.~фB}qU, *T?5w/wY%fZX#;|H ԃ0IӑO B&R?J nY{uYE<l%W%ޕ 4xC>?O tjNa8 `rljVG_h 6>+ qx.Ug1~'M"! !iQ7 Q;q{=^uLcb삨uWq-}a~_ʠ6ń[TJ,YQ}:*uBL@ t ;6Ig}7L;*6KԖu,j%nTA|Py<ؤ>Lvn{M ذL;S*CdE< \/e0h-|0 \>@,@|µ.c_L5I׊Rd&@ظog\Z9[ -U;W`!JU r:XX侐?@Fb< G 8_ ,1lL#LܢxӃfՐlp>W`~SƯ<~ힶN{F+5!!;C\\.YUcDXۗ?_}vF\x.1Jٍin:f> 12M͸xzEܓ6hyZ&uSqte*ß(w[xlU(1jQBIkf&U˅r*un7jN׾z) 56V-jɈwxhS]/fѺU] .y,:vKeyN0\QkWPRUg+*:ʼZ{ z9 ϥ;7ݚž&N-ꈀ/0ZxC)lkiD >/? ~d/؁~֝U."4lL?N8Րf Ǣ7~hnG jMSa#ia6t@@*elƒK+bu^pvY_<ȿ:~3(n1acdډ%G0v'W*9 l.`6HcO&jz鸱",1=T A곛~l7.cnϭ%;qt- H#)@+L\ m.eY%J[گwF aIhuO]TGFBP!a8ղQF .95CWZF!v\Iao'obtZNn'D&BN&Z( !t w!pN.ߑR޶ܺ=t`~$Bj x}KGсXAq{} ;e =_n ϥ7n;A;&*k!pc2-WABeĭK#x$BN3&?zppJF> w V.V&9abYXȱ5Jdzv9]!%V7<^DflHԢF0 @;b6g- *`iom:rc!xsϝN}:K^2J!d4@Dž| $O:]0uA-oǦ,U[O_1Jpk C)xOV-Z5cnKKav#Ǟ[O40~*'"$h`\.3piGH1WǺmSZL6ϭ}\bbg|vD8%aV,YF!ő:$Զ)lwՕ/$bXr<ᛀ%6k@ 1l4"j{|F3bߗ729̆&p"!MBP&˵g|c+@ah'otJI>>WI:U[As.$NHt'tpfuXt&^ v$gWf!h9!!1Eܬ1م12-,XYxU,]Px~ $\ciBSR*8cH`LL4MGg;8M FC_X% WO7\+.Hd3d|p;Ԋ\6igFA5~~OD~iKQ^o022sSIaalTWHiת)m*~T|~OP(-6F6dpGuu*[+p[ sYVrSxQ`Cֲj8oi:cj@jfEcm$NmNWW$ohz2l(I ؟r3[ΑJI $c٪mUUldEu~'_X8t:лY1xcͪ+VF)5wpXGAKBλNo7}˾_]\xMK;=*V5Nw~ޔX  [Pgi,ǰc5D>,Gϭox)s7;ALűe0o2f;YNTJaqI"Fÿ[ raͩOIM ^7>Q8=B*(qs:-+ %t\JS86O7@ (2vw(tzv<1B&> \@ax)HtR PNDIciq'n5@V9UݓqiV s|Mf!7-F-ˬDðR&95$q9禈nNw Q YҖi4&)RI6X,׋B"ecU}˱+0ڙ>K}~g}3=8;CBxJ 012MKT.ދgT2=йqkwNg=`NTjaGXƛJ&D5ѶYZ}G{Q`\Y(PHNec4ƣG%r\a;Tn/nMVQt)u|bi6MtMxhDKW-\{`z} (( #${YbY qS'I&$ FƊ(fdF䚁ר 4'b34}'G ;^M3ޓ])מLq6n˔0UTm!e6 QZ`^j7ckMĪݍVJOtqwPD* @眭~Z^[6[7 (!^LU95=*gK}=/Q>۽Jv )]ϯP^Yw,E4&X=:QkaN}>԰U7gT %yWU7] 7Nsvd2h1x ks(^ǔi[\b2 J |nvȬ'c.*Gr]6c͈v4W(/mee;uL_s¥2˱D4K#P DLY<Ѝ9*d2j摣Q)ɔL9wtX'ޢc>~1ƇOFaUVZe:eTFF.QZn_`"ZvɈ0AmF(@-XPqqGCB?`o!I"R.|ŷfF8U!"a)3ǙvtdU6ysMw' %k 2Y[7:~w0SZBp{مµ%<`kcP(uz 8S3)A[N@Cm<@EgDGX_vb9vkq6vzқ7! t0lH ) \k6f^saƸvYk휷\ii^Hd1BLƍ1Veq$(DV!'<\ӕ.ONOȼ/a-Sjŕ .em+@6·LD '^HW3ze7_0'_0`Ft%M)O-A?&Q?:()iY"P?tyYGlĕJ˩KcNܭ&pN:so6k zhz7E.~0hϴKj^é6UF á)HQ/7 )6B *(rRKMh*2"dvmp)|8W. Po|a7$I 2uK!޼HSêumf]е`7oFF;k;6j( Ehc4|$'Zχ_ze&̵_ķ^x?<8vݪ+ r=[9!U]dt7 =)H RP0_ʕltt\$;ԻF'ugߗʧ۝NyњĠN'f٢iVs!$SP`ƦQL\l;_XG%9`JdrJhul(WVm2(agK#IJ8Oªp0!ĭxi9sJ.l g1X,K͒^MsB9S&FRTEUr䫔rRQ##vsq78?!ݤ7:Bq9U-73ȫfK<7U υchr.lq)/qȦ=;meF̃W7%}(&|+\-#{|$S\qS5HP0MYpXrt+ZZQ5 [y^\y!I)d#`&g'5 nm-^;Vt>cKoA0- )bI \Ge" %Xd^ީۢm|1D 7b_V ik)q,YcWMK xߋf̩![S!P0u ɉ})s㞾fC7^V6g@x_x,@3H!׌̴qꔌlSgJVA+r{   -T)C%TH6BVZH%(ޚvUM1j0^7se_\e/=ó^+뜶Og]IOMepWQ9ұg/#~wڎ麵mn#<cB@6K Pl&h*Tmi0)%R2joW= jKN~T|-i7d$@Ysۦa VmJjэTJ2RipR.1\ȥA. KJ&>|/-հ,ӬڤZ8,nȐXceX+r7{傴dFUI җLP04iH(=99N8օ_g[X]LU GUF{x>saeNV=KJy^ &BS ьɵ+d$g{R̓pȝ F5`YqeT6*F͒9߽ytnpbxst͹Է¡hَܮD CfB= pC|Nj%ꋉ@fﴺ<$"PVCZ- ̈tJ䔚F%H}vVjXU(l8!:w'y&g9er_HxyBʸ8NGU 8~6p^V9qUR̓-\s>ls4Ozy ߇s!)'zMkWvv*jKQ5:3fAǰQ=Nd IZ(ElQl[ҵb𽩊\z݁6#N֩dv# P!g{s:%os՟8 M <{wB]\2>/sLUe"e(I,9GqrWpu4iL6 އHPtcI )CE8\1+rYɔZ F9eFNoXf.v҆woIe8nuv6sSNJ4UI?txDqWfnYf-W3Qۯ|mbbߟ"q[?Zp(ÿy\ɫ|>hM6UM32 ^Vv1l_ .T{Ҭ|{$^HU%>4I5OTq® Mj:ccQK:Ӌ㓐 r^J9؜52=SEcbEK1m%؜Ւj09zkK8Zvǡ{Z0;.su`I8Y*]/vTrT˦Ay)QNN [,TiTT] l$Uu\aI8dfU5t-zºmrO1vQ?80%i GA?<f%W /f նXt\!-&b'}/~x-z}/%"Nn::` 4#1 E>`$Bz)RS"i#,SfS+:%K-g\ V{61B W:rE7i.Y|UI9rr>>j_ZYHd-4<)|tWдmU P-*YQ;Գ Edn]Tr=0><{^fIƊ0,9R%tR;.c0m7~kН^ 1 4HoFKCDlhtOn>۱F|0>ec\\{1_P B1=ʲl&-rjTlɌYe 74uƅuAj\oƛ ĖKIF"Y;/%Cwg\Dbq|G*Pգ5Kd T06k|Um$ \u",;Qw9=nDs` { lo/Zfg0X1Spk[cKgO87uN$hN賗,V*SLb1x`h\89fz&wPRգJLsB/neh~Ec A;M}i#vy낺1u;ʻBÌ- /[YA9Qx7StWМUaW04F(*QV=ը^˒jr¾m4>RbcvqiW7{`,é `4Y6QC ˺22kxbTWv-mD/pXX&H~b%XRX fk;xt J~|7o_.U|^y7n*'CAJ1P,fsRTTjׯ}-U jU kcV/;+EKOmhDJS1:XP%rr%)WFjMr9tdDqeSӾKB¶W|6%NM!BLPjN;=OLa9*VY{DCF iw)x ĘLƘ 5qNd=Z{Bڮdq qg7#nbzf^Z+ w~ dzb+I!&iBKed?!MNAE ^?*J4 &wE6 mW HAqڕ+*ʁgqJT=QyJS/Wi1΄u$i@nLU FS3|7),o-{}?xi}A~)|Y[TXT0vFѶR2ͨ坜&d\5-l\Rpԓ/ϩ&E|5S$i8bJ8O#GOI݃'©{[~Y}jT&yY:/f.VFh0)\ YnF)B$;p!&ຶXC,aKIsK#q* s`+]1qzD`Rvt m0uMG_(S /8j҄8\\vo^s` hc*zlcUQ:&MLR t=>7/>Iۿ^Խ6T4:QJd(DkJ݉*N4wҨ/DQ"Qկ|kɴtpuΚ3?%c_UJId>mUqyu `)8RuyLt-Ł*?,AMEYy:X bٹESkYHK$ ǺmމUx#pTdrH6 1_"븈ܡiS2e(`<&-6Qã­S>Cei[KwM`4ozng>vaF? F1+pU8׽\N*[׬4 |kԫT2IabSB<װ$U:eoen9SV;E+׭؎]Ky[u6vzHضcNXB!K,Zt^Up+YQ"ʅ;֊C= 9gb#i2GxIQ:v 9i䎅!e٢ Ԍyw'&&Lg%A(MFd:%ؼP⫖n^!V-9-S͖vjCsi [g:E"a㉢BM^5h窹RN+b\I[[)oTCnYӛW")(ʨ!)ǒ6ÍDȪ˘pL[/K )>AΔ 'D~nbls@$϶%qL hc> 9r]<;;n`q K(\{6:}S85uL k8? 3`%1On/I}JqD}Efjdf3f3ޝZfͪYwCU"I 6Ha|O'SH5Yg6e[*MiUՙE!:nV_w.(d+ߝ1g&KA N!^y"2{]b<}*ȗ'.A(?>@HDD%a0!nԍe&rzu H0?$@R >;I縖7hBVqHK H0|(]1Ip,a0 ©6`W LmYGyl{/L0|8հ  9Dcۥafsjs"wlj;[MMӴWw 1݆~6}I ߳^g d"x*aNML>,㕌}t`hj`ٚծA^}H{Ϗo5^m\4\%!eCJlz!^?+.ă }KdSƲzR-kb!(Ƒ\)Ӻ:o 4Պh;\Ata|\ +G\i3idi& m* I$6IӷbgkDgo/src/pkg/compress/lzw0040755000000000000000000000000012412656737015442 5ustar00rootroot00000000000000go/src/pkg/compress/lzw/reader.go0100644000000000000000000001521412412656737017312 0ustar00rootroot00000000000000// Copyright 2011 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 lzw implements the Lempel-Ziv-Welch compressed data format, // described in T. A. Welch, ``A Technique for High-Performance Data // Compression'', Computer, 17(6) (June 1984), pp 8-19. // // In particular, it implements LZW as used by the GIF, TIFF and PDF file // formats, which means variable-width codes up to 12 bits and the first // two non-literal codes are a clear code and an EOF code. package lzw // TODO(nigeltao): check that TIFF and PDF use LZW in the same way as GIF, // modulo LSB/MSB packing order. import ( "bufio" "errors" "fmt" "io" ) // Order specifies the bit ordering in an LZW data stream. type Order int const ( // LSB means Least Significant Bits first, as used in the GIF file format. LSB Order = iota // MSB means Most Significant Bits first, as used in the TIFF and PDF // file formats. MSB ) const ( maxWidth = 12 decoderInvalidCode = 0xffff flushBuffer = 1 << maxWidth ) // decoder is the state from which the readXxx method converts a byte // stream into a code stream. type decoder struct { r io.ByteReader bits uint32 nBits uint width uint read func(*decoder) (uint16, error) // readLSB or readMSB litWidth int // width in bits of literal codes err error // The first 1<= 1<>= d.width d.nBits -= d.width return code, nil } // readMSB returns the next code for "Most Significant Bits first" data. func (d *decoder) readMSB() (uint16, error) { for d.nBits < d.width { x, err := d.r.ReadByte() if err != nil { return 0, err } d.bits |= uint32(x) << (24 - d.nBits) d.nBits += 8 } code := uint16(d.bits >> (32 - d.width)) d.bits <<= d.width d.nBits -= d.width return code, nil } func (d *decoder) Read(b []byte) (int, error) { for { if len(d.toRead) > 0 { n := copy(b, d.toRead) d.toRead = d.toRead[n:] return n, nil } if d.err != nil { return 0, d.err } d.decode() } } // decode decompresses bytes from r and leaves them in d.toRead. // read specifies how to decode bytes into codes. // litWidth is the width in bits of literal codes. func (d *decoder) decode() { // Loop over the code stream, converting codes into decompressed bytes. for { code, err := d.read(d) if err != nil { if err == io.EOF { err = io.ErrUnexpectedEOF } d.err = err return } switch { case code < d.clear: // We have a literal code. d.output[d.o] = uint8(code) d.o++ if d.last != decoderInvalidCode { // Save what the hi code expands to. d.suffix[d.hi] = uint8(code) d.prefix[d.hi] = d.last } case code == d.clear: d.width = 1 + uint(d.litWidth) d.hi = d.eof d.overflow = 1 << d.width d.last = decoderInvalidCode continue case code == d.eof: d.flush() d.err = io.EOF return case code <= d.hi: c, i := code, len(d.output)-1 if code == d.hi { // code == hi is a special case which expands to the last expansion // followed by the head of the last expansion. To find the head, we walk // the prefix chain until we find a literal code. c = d.last for c >= d.clear { c = d.prefix[c] } d.output[i] = uint8(c) i-- c = d.last } // Copy the suffix chain into output and then write that to w. for c >= d.clear { d.output[i] = d.suffix[c] i-- c = d.prefix[c] } d.output[i] = uint8(c) d.o += copy(d.output[d.o:], d.output[i:]) if d.last != decoderInvalidCode { // Save what the hi code expands to. d.suffix[d.hi] = uint8(c) d.prefix[d.hi] = d.last } default: d.err = errors.New("lzw: invalid code") return } d.last, d.hi = code, d.hi+1 if d.hi >= d.overflow { if d.width == maxWidth { d.last = decoderInvalidCode } else { d.width++ d.overflow <<= 1 } } if d.o >= flushBuffer { d.flush() return } } } func (d *decoder) flush() { d.toRead = d.output[:d.o] d.o = 0 } var errClosed = errors.New("compress/lzw: reader/writer is closed") func (d *decoder) Close() error { d.err = errClosed // in case any Reads come along return nil } // NewReader creates a new io.ReadCloser. // Reads from the returned io.ReadCloser read and decompress data from r. // It is the caller's responsibility to call Close on the ReadCloser when // finished reading. // The number of bits to use for literal codes, litWidth, must be in the // range [2,8] and is typically 8. func NewReader(r io.Reader, order Order, litWidth int) io.ReadCloser { d := new(decoder) switch order { case LSB: d.read = (*decoder).readLSB case MSB: d.read = (*decoder).readMSB default: d.err = errors.New("lzw: unknown order") return d } if litWidth < 2 || 8 < litWidth { d.err = fmt.Errorf("lzw: litWidth %d out of range", litWidth) return d } if br, ok := r.(io.ByteReader); ok { d.r = br } else { d.r = bufio.NewReader(r) } d.litWidth = litWidth d.width = 1 + uint(litWidth) d.clear = uint16(1) << uint(litWidth) d.eof, d.hi = d.clear+1, d.clear+1 d.overflow = uint16(1) << d.width d.last = decoderInvalidCode return d } go/src/pkg/compress/lzw/reader_test.go0100644000000000000000000000606112412656737020351 0ustar00rootroot00000000000000// Copyright 2011 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 lzw import ( "bytes" "io" "io/ioutil" "runtime" "strconv" "strings" "testing" ) type lzwTest struct { desc string raw string compressed string err error } var lzwTests = []lzwTest{ { "empty;LSB;8", "", "\x01\x01", nil, }, { "empty;MSB;8", "", "\x80\x80", nil, }, { "tobe;LSB;7", "TOBEORNOTTOBEORTOBEORNOT", "\x54\x4f\x42\x45\x4f\x52\x4e\x4f\x54\x82\x84\x86\x8b\x85\x87\x89\x81", nil, }, { "tobe;LSB;8", "TOBEORNOTTOBEORTOBEORNOT", "\x54\x9e\x08\x29\xf2\x44\x8a\x93\x27\x54\x04\x12\x34\xb8\xb0\xe0\xc1\x84\x01\x01", nil, }, { "tobe;MSB;7", "TOBEORNOTTOBEORTOBEORNOT", "\x54\x4f\x42\x45\x4f\x52\x4e\x4f\x54\x82\x84\x86\x8b\x85\x87\x89\x81", nil, }, { "tobe;MSB;8", "TOBEORNOTTOBEORTOBEORNOT", "\x2a\x13\xc8\x44\x52\x79\x48\x9c\x4f\x2a\x40\xa0\x90\x68\x5c\x16\x0f\x09\x80\x80", nil, }, { "tobe-truncated;LSB;8", "TOBEORNOTTOBEORTOBEORNOT", "\x54\x9e\x08\x29\xf2\x44\x8a\x93\x27\x54\x04", io.ErrUnexpectedEOF, }, // This example comes from http://en.wikipedia.org/wiki/Graphics_Interchange_Format. { "gif;LSB;8", "\x28\xff\xff\xff\x28\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff", "\x00\x51\xfc\x1b\x28\x70\xa0\xc1\x83\x01\x01", nil, }, // This example comes from http://compgroups.net/comp.lang.ruby/Decompressing-LZW-compression-from-PDF-file { "pdf;MSB;8", "-----A---B", "\x80\x0b\x60\x50\x22\x0c\x0c\x85\x01", nil, }, } func TestReader(t *testing.T) { var b bytes.Buffer for _, tt := range lzwTests { d := strings.Split(tt.desc, ";") var order Order switch d[1] { case "LSB": order = LSB case "MSB": order = MSB default: t.Errorf("%s: bad order %q", tt.desc, d[1]) } litWidth, _ := strconv.Atoi(d[2]) rc := NewReader(strings.NewReader(tt.compressed), order, litWidth) defer rc.Close() b.Reset() n, err := io.Copy(&b, rc) if err != nil { if err != tt.err { t.Errorf("%s: io.Copy: %v want %v", tt.desc, err, tt.err) } continue } s := b.String() if s != tt.raw { t.Errorf("%s: got %d-byte %q want %d-byte %q", tt.desc, n, s, len(tt.raw), tt.raw) } } } func benchmarkDecoder(b *testing.B, n int) { b.StopTimer() b.SetBytes(int64(n)) buf0, err := ioutil.ReadFile("../testdata/e.txt") if err != nil { b.Fatal(err) } if len(buf0) == 0 { b.Fatalf("test file has no data") } compressed := new(bytes.Buffer) w := NewWriter(compressed, LSB, 8) for i := 0; i < n; i += len(buf0) { if len(buf0) > n-i { buf0 = buf0[:n-i] } w.Write(buf0) } w.Close() buf1 := compressed.Bytes() buf0, compressed, w = nil, nil, nil runtime.GC() b.StartTimer() for i := 0; i < b.N; i++ { io.Copy(ioutil.Discard, NewReader(bytes.NewReader(buf1), LSB, 8)) } } func BenchmarkDecoder1e4(b *testing.B) { benchmarkDecoder(b, 1e4) } func BenchmarkDecoder1e5(b *testing.B) { benchmarkDecoder(b, 1e5) } func BenchmarkDecoder1e6(b *testing.B) { benchmarkDecoder(b, 1e6) } go/src/pkg/compress/lzw/writer.go0100644000000000000000000001542412412656737017367 0ustar00rootroot00000000000000// Copyright 2011 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 lzw import ( "bufio" "errors" "fmt" "io" ) // A writer is a buffered, flushable writer. type writer interface { io.ByteWriter Flush() error } // An errWriteCloser is an io.WriteCloser that always returns a given error. type errWriteCloser struct { err error } func (e *errWriteCloser) Write([]byte) (int, error) { return 0, e.err } func (e *errWriteCloser) Close() error { return e.err } const ( // A code is a 12 bit value, stored as a uint32 when encoding to avoid // type conversions when shifting bits. maxCode = 1<<12 - 1 invalidCode = 1<<32 - 1 // There are 1<<12 possible codes, which is an upper bound on the number of // valid hash table entries at any given point in time. tableSize is 4x that. tableSize = 4 * 1 << 12 tableMask = tableSize - 1 // A hash table entry is a uint32. Zero is an invalid entry since the // lower 12 bits of a valid entry must be a non-literal code. invalidEntry = 0 ) // encoder is LZW compressor. type encoder struct { // w is the writer that compressed bytes are written to. w writer // order, write, bits, nBits and width are the state for // converting a code stream into a byte stream. order Order write func(*encoder, uint32) error bits uint32 nBits uint width uint // litWidth is the width in bits of literal codes. litWidth uint // hi is the code implied by the next code emission. // overflow is the code at which hi overflows the code width. hi, overflow uint32 // savedCode is the accumulated code at the end of the most recent Write // call. It is equal to invalidCode if there was no such call. savedCode uint32 // err is the first error encountered during writing. Closing the encoder // will make any future Write calls return errClosed err error // table is the hash table from 20-bit keys to 12-bit values. Each table // entry contains key<<12|val and collisions resolve by linear probing. // The keys consist of a 12-bit code prefix and an 8-bit byte suffix. // The values are a 12-bit code. table [tableSize]uint32 } // writeLSB writes the code c for "Least Significant Bits first" data. func (e *encoder) writeLSB(c uint32) error { e.bits |= c << e.nBits e.nBits += e.width for e.nBits >= 8 { if err := e.w.WriteByte(uint8(e.bits)); err != nil { return err } e.bits >>= 8 e.nBits -= 8 } return nil } // writeMSB writes the code c for "Most Significant Bits first" data. func (e *encoder) writeMSB(c uint32) error { e.bits |= c << (32 - e.width - e.nBits) e.nBits += e.width for e.nBits >= 8 { if err := e.w.WriteByte(uint8(e.bits >> 24)); err != nil { return err } e.bits <<= 8 e.nBits -= 8 } return nil } // errOutOfCodes is an internal error that means that the encoder has run out // of unused codes and a clear code needs to be sent next. var errOutOfCodes = errors.New("lzw: out of codes") // incHi increments e.hi and checks for both overflow and running out of // unused codes. In the latter case, incHi sends a clear code, resets the // encoder state and returns errOutOfCodes. func (e *encoder) incHi() error { e.hi++ if e.hi == e.overflow { e.width++ e.overflow <<= 1 } if e.hi == maxCode { clear := uint32(1) << e.litWidth if err := e.write(e, clear); err != nil { return err } e.width = uint(e.litWidth) + 1 e.hi = clear + 1 e.overflow = clear << 1 for i := range e.table { e.table[i] = invalidEntry } return errOutOfCodes } return nil } // Write writes a compressed representation of p to e's underlying writer. func (e *encoder) Write(p []byte) (n int, err error) { if e.err != nil { return 0, e.err } if len(p) == 0 { return 0, nil } n = len(p) litMask := uint32(1<>12 ^ key) & tableMask for h, t := hash, e.table[hash]; t != invalidEntry; { if key == t>>12 { code = t & maxCode continue loop } h = (h + 1) & tableMask t = e.table[h] } // Otherwise, write the current code, and literal becomes the start of // the next emitted code. if e.err = e.write(e, code); e.err != nil { return 0, e.err } code = literal // Increment e.hi, the next implied code. If we run out of codes, reset // the encoder state (including clearing the hash table) and continue. if err1 := e.incHi(); err1 != nil { if err1 == errOutOfCodes { continue } e.err = err1 return 0, e.err } // Otherwise, insert key -> e.hi into the map that e.table represents. for { if e.table[hash] == invalidEntry { e.table[hash] = (key << 12) | e.hi break } hash = (hash + 1) & tableMask } } e.savedCode = code return n, nil } // Close closes the encoder, flushing any pending output. It does not close or // flush e's underlying writer. func (e *encoder) Close() error { if e.err != nil { if e.err == errClosed { return nil } return e.err } // Make any future calls to Write return errClosed. e.err = errClosed // Write the savedCode if valid. if e.savedCode != invalidCode { if err := e.write(e, e.savedCode); err != nil { return err } if err := e.incHi(); err != nil && err != errOutOfCodes { return err } } // Write the eof code. eof := uint32(1)< 0 { if e.order == MSB { e.bits >>= 24 } if err := e.w.WriteByte(uint8(e.bits)); err != nil { return err } } return e.w.Flush() } // NewWriter creates a new io.WriteCloser. // Writes to the returned io.WriteCloser are compressed and written to w. // It is the caller's responsibility to call Close on the WriteCloser when // finished writing. // The number of bits to use for literal codes, litWidth, must be in the // range [2,8] and is typically 8. func NewWriter(w io.Writer, order Order, litWidth int) io.WriteCloser { var write func(*encoder, uint32) error switch order { case LSB: write = (*encoder).writeLSB case MSB: write = (*encoder).writeMSB default: return &errWriteCloser{errors.New("lzw: unknown order")} } if litWidth < 2 || 8 < litWidth { return &errWriteCloser{fmt.Errorf("lzw: litWidth %d out of range", litWidth)} } bw, ok := w.(writer) if !ok { bw = bufio.NewWriter(w) } lw := uint(litWidth) return &encoder{ w: bw, order: order, write: write, width: 1 + lw, litWidth: lw, hi: 1< n-i { buf0 = buf0[:n-i] } copy(buf1[i:], buf0) } buf0 = nil runtime.GC() b.StartTimer() for i := 0; i < b.N; i++ { w := NewWriter(ioutil.Discard, LSB, 8) w.Write(buf1) w.Close() } } func BenchmarkEncoder1e4(b *testing.B) { benchmarkEncoder(b, 1e4) } func BenchmarkEncoder1e5(b *testing.B) { benchmarkEncoder(b, 1e5) } func BenchmarkEncoder1e6(b *testing.B) { benchmarkEncoder(b, 1e6) } go/src/pkg/compress/testdata0040755000000000000000000000000012412656737016437 5ustar00rootroot00000000000000go/src/pkg/compress/testdata/Mark.Twain-Tom.Sawyer.txt0100644000000000000000000143336712412656737023256 0ustar00rootroot00000000000000The Project Gutenberg EBook of The Adventures of Tom Sawyer, Complete by Mark Twain (Samuel Clemens) This eBook is for the use of anyone anywhere at no cost and with almost no restrictions whatsoever. You may copy it, give it away or re-use it under the terms of the Project Gutenberg License included with this eBook or online at www.gutenberg.net Title: The Adventures of Tom Sawyer, Complete Author: Mark Twain (Samuel Clemens) Release Date: August 20, 2006 [EBook #74] [Last updated: May 3, 2011] Language: English *** START OF THIS PROJECT GUTENBERG EBOOK TOM SAWYER *** Produced by David Widger. The previous edition was updated by Jose Menendez. THE ADVENTURES OF TOM SAWYER BY MARK TWAIN (Samuel Langhorne Clemens) P R E F A C E MOST of the adventures recorded in this book really occurred; one or two were experiences of my own, the rest those of boys who were schoolmates of mine. Huck Finn is drawn from life; Tom Sawyer also, but not from an individual--he is a combination of the characteristics of three boys whom I knew, and therefore belongs to the composite order of architecture. The odd superstitions touched upon were all prevalent among children and slaves in the West at the period of this story--that is to say, thirty or forty years ago. Although my book is intended mainly for the entertainment of boys and girls, I hope it will not be shunned by men and women on that account, for part of my plan has been to try to pleasantly remind adults of what they once were themselves, and of how they felt and thought and talked, and what queer enterprises they sometimes engaged in. THE AUTHOR. HARTFORD, 1876. T O M S A W Y E R CHAPTER I "TOM!" No answer. "TOM!" No answer. "What's gone with that boy, I wonder? You TOM!" No answer. The old lady pulled her spectacles down and looked over them about the room; then she put them up and looked out under them. She seldom or never looked THROUGH them for so small a thing as a boy; they were her state pair, the pride of her heart, and were built for "style," not service--she could have seen through a pair of stove-lids just as well. She looked perplexed for a moment, and then said, not fiercely, but still loud enough for the furniture to hear: "Well, I lay if I get hold of you I'll--" She did not finish, for by this time she was bending down and punching under the bed with the broom, and so she needed breath to punctuate the punches with. She resurrected nothing but the cat. "I never did see the beat of that boy!" She went to the open door and stood in it and looked out among the tomato vines and "jimpson" weeds that constituted the garden. No Tom. So she lifted up her voice at an angle calculated for distance and shouted: "Y-o-u-u TOM!" There was a slight noise behind her and she turned just in time to seize a small boy by the slack of his roundabout and arrest his flight. "There! I might 'a' thought of that closet. What you been doing in there?" "Nothing." "Nothing! Look at your hands. And look at your mouth. What IS that truck?" "I don't know, aunt." "Well, I know. It's jam--that's what it is. Forty times I've said if you didn't let that jam alone I'd skin you. Hand me that switch." The switch hovered in the air--the peril was desperate-- "My! Look behind you, aunt!" The old lady whirled round, and snatched her skirts out of danger. The lad fled on the instant, scrambled up the high board-fence, and disappeared over it. His aunt Polly stood surprised a moment, and then broke into a gentle laugh. "Hang the boy, can't I never learn anything? Ain't he played me tricks enough like that for me to be looking out for him by this time? But old fools is the biggest fools there is. Can't learn an old dog new tricks, as the saying is. But my goodness, he never plays them alike, two days, and how is a body to know what's coming? He 'pears to know just how long he can torment me before I get my dander up, and he knows if he can make out to put me off for a minute or make me laugh, it's all down again and I can't hit him a lick. I ain't doing my duty by that boy, and that's the Lord's truth, goodness knows. Spare the rod and spile the child, as the Good Book says. I'm a laying up sin and suffering for us both, I know. He's full of the Old Scratch, but laws-a-me! he's my own dead sister's boy, poor thing, and I ain't got the heart to lash him, somehow. Every time I let him off, my conscience does hurt me so, and every time I hit him my old heart most breaks. Well-a-well, man that is born of woman is of few days and full of trouble, as the Scripture says, and I reckon it's so. He'll play hookey this evening, * and [* Southwestern for "afternoon"] I'll just be obleeged to make him work, to-morrow, to punish him. It's mighty hard to make him work Saturdays, when all the boys is having holiday, but he hates work more than he hates anything else, and I've GOT to do some of my duty by him, or I'll be the ruination of the child." Tom did play hookey, and he had a very good time. He got back home barely in season to help Jim, the small colored boy, saw next-day's wood and split the kindlings before supper--at least he was there in time to tell his adventures to Jim while Jim did three-fourths of the work. Tom's younger brother (or rather half-brother) Sid was already through with his part of the work (picking up chips), for he was a quiet boy, and had no adventurous, troublesome ways. While Tom was eating his supper, and stealing sugar as opportunity offered, Aunt Polly asked him questions that were full of guile, and very deep--for she wanted to trap him into damaging revealments. Like many other simple-hearted souls, it was her pet vanity to believe she was endowed with a talent for dark and mysterious diplomacy, and she loved to contemplate her most transparent devices as marvels of low cunning. Said she: "Tom, it was middling warm in school, warn't it?" "Yes'm." "Powerful warm, warn't it?" "Yes'm." "Didn't you want to go in a-swimming, Tom?" A bit of a scare shot through Tom--a touch of uncomfortable suspicion. He searched Aunt Polly's face, but it told him nothing. So he said: "No'm--well, not very much." The old lady reached out her hand and felt Tom's shirt, and said: "But you ain't too warm now, though." And it flattered her to reflect that she had discovered that the shirt was dry without anybody knowing that that was what she had in her mind. But in spite of her, Tom knew where the wind lay, now. So he forestalled what might be the next move: "Some of us pumped on our heads--mine's damp yet. See?" Aunt Polly was vexed to think she had overlooked that bit of circumstantial evidence, and missed a trick. Then she had a new inspiration: "Tom, you didn't have to undo your shirt collar where I sewed it, to pump on your head, did you? Unbutton your jacket!" The trouble vanished out of Tom's face. He opened his jacket. His shirt collar was securely sewed. "Bother! Well, go 'long with you. I'd made sure you'd played hookey and been a-swimming. But I forgive ye, Tom. I reckon you're a kind of a singed cat, as the saying is--better'n you look. THIS time." She was half sorry her sagacity had miscarried, and half glad that Tom had stumbled into obedient conduct for once. But Sidney said: "Well, now, if I didn't think you sewed his collar with white thread, but it's black." "Why, I did sew it with white! Tom!" But Tom did not wait for the rest. As he went out at the door he said: "Siddy, I'll lick you for that." In a safe place Tom examined two large needles which were thrust into the lapels of his jacket, and had thread bound about them--one needle carried white thread and the other black. He said: "She'd never noticed if it hadn't been for Sid. Confound it! sometimes she sews it with white, and sometimes she sews it with black. I wish to geeminy she'd stick to one or t'other--I can't keep the run of 'em. But I bet you I'll lam Sid for that. I'll learn him!" He was not the Model Boy of the village. He knew the model boy very well though--and loathed him. Within two minutes, or even less, he had forgotten all his troubles. Not because his troubles were one whit less heavy and bitter to him than a man's are to a man, but because a new and powerful interest bore them down and drove them out of his mind for the time--just as men's misfortunes are forgotten in the excitement of new enterprises. This new interest was a valued novelty in whistling, which he had just acquired from a negro, and he was suffering to practise it undisturbed. It consisted in a peculiar bird-like turn, a sort of liquid warble, produced by touching the tongue to the roof of the mouth at short intervals in the midst of the music--the reader probably remembers how to do it, if he has ever been a boy. Diligence and attention soon gave him the knack of it, and he strode down the street with his mouth full of harmony and his soul full of gratitude. He felt much as an astronomer feels who has discovered a new planet--no doubt, as far as strong, deep, unalloyed pleasure is concerned, the advantage was with the boy, not the astronomer. The summer evenings were long. It was not dark, yet. Presently Tom checked his whistle. A stranger was before him--a boy a shade larger than himself. A new-comer of any age or either sex was an impressive curiosity in the poor little shabby village of St. Petersburg. This boy was well dressed, too--well dressed on a week-day. This was simply astounding. His cap was a dainty thing, his close-buttoned blue cloth roundabout was new and natty, and so were his pantaloons. He had shoes on--and it was only Friday. He even wore a necktie, a bright bit of ribbon. He had a citified air about him that ate into Tom's vitals. The more Tom stared at the splendid marvel, the higher he turned up his nose at his finery and the shabbier and shabbier his own outfit seemed to him to grow. Neither boy spoke. If one moved, the other moved--but only sidewise, in a circle; they kept face to face and eye to eye all the time. Finally Tom said: "I can lick you!" "I'd like to see you try it." "Well, I can do it." "No you can't, either." "Yes I can." "No you can't." "I can." "You can't." "Can!" "Can't!" An uncomfortable pause. Then Tom said: "What's your name?" "'Tisn't any of your business, maybe." "Well I 'low I'll MAKE it my business." "Well why don't you?" "If you say much, I will." "Much--much--MUCH. There now." "Oh, you think you're mighty smart, DON'T you? I could lick you with one hand tied behind me, if I wanted to." "Well why don't you DO it? You SAY you can do it." "Well I WILL, if you fool with me." "Oh yes--I've seen whole families in the same fix." "Smarty! You think you're SOME, now, DON'T you? Oh, what a hat!" "You can lump that hat if you don't like it. I dare you to knock it off--and anybody that'll take a dare will suck eggs." "You're a liar!" "You're another." "You're a fighting liar and dasn't take it up." "Aw--take a walk!" "Say--if you give me much more of your sass I'll take and bounce a rock off'n your head." "Oh, of COURSE you will." "Well I WILL." "Well why don't you DO it then? What do you keep SAYING you will for? Why don't you DO it? It's because you're afraid." "I AIN'T afraid." "You are." "I ain't." "You are." Another pause, and more eying and sidling around each other. Presently they were shoulder to shoulder. Tom said: "Get away from here!" "Go away yourself!" "I won't." "I won't either." So they stood, each with a foot placed at an angle as a brace, and both shoving with might and main, and glowering at each other with hate. But neither could get an advantage. After struggling till both were hot and flushed, each relaxed his strain with watchful caution, and Tom said: "You're a coward and a pup. I'll tell my big brother on you, and he can thrash you with his little finger, and I'll make him do it, too." "What do I care for your big brother? I've got a brother that's bigger than he is--and what's more, he can throw him over that fence, too." [Both brothers were imaginary.] "That's a lie." "YOUR saying so don't make it so." Tom drew a line in the dust with his big toe, and said: "I dare you to step over that, and I'll lick you till you can't stand up. Anybody that'll take a dare will steal sheep." The new boy stepped over promptly, and said: "Now you said you'd do it, now let's see you do it." "Don't you crowd me now; you better look out." "Well, you SAID you'd do it--why don't you do it?" "By jingo! for two cents I WILL do it." The new boy took two broad coppers out of his pocket and held them out with derision. Tom struck them to the ground. In an instant both boys were rolling and tumbling in the dirt, gripped together like cats; and for the space of a minute they tugged and tore at each other's hair and clothes, punched and scratched each other's nose, and covered themselves with dust and glory. Presently the confusion took form, and through the fog of battle Tom appeared, seated astride the new boy, and pounding him with his fists. "Holler 'nuff!" said he. The boy only struggled to free himself. He was crying--mainly from rage. "Holler 'nuff!"--and the pounding went on. At last the stranger got out a smothered "'Nuff!" and Tom let him up and said: "Now that'll learn you. Better look out who you're fooling with next time." The new boy went off brushing the dust from his clothes, sobbing, snuffling, and occasionally looking back and shaking his head and threatening what he would do to Tom the "next time he caught him out." To which Tom responded with jeers, and started off in high feather, and as soon as his back was turned the new boy snatched up a stone, threw it and hit him between the shoulders and then turned tail and ran like an antelope. Tom chased the traitor home, and thus found out where he lived. He then held a position at the gate for some time, daring the enemy to come outside, but the enemy only made faces at him through the window and declined. At last the enemy's mother appeared, and called Tom a bad, vicious, vulgar child, and ordered him away. So he went away; but he said he "'lowed" to "lay" for that boy. He got home pretty late that night, and when he climbed cautiously in at the window, he uncovered an ambuscade, in the person of his aunt; and when she saw the state his clothes were in her resolution to turn his Saturday holiday into captivity at hard labor became adamantine in its firmness. CHAPTER II SATURDAY morning was come, and all the summer world was bright and fresh, and brimming with life. There was a song in every heart; and if the heart was young the music issued at the lips. There was cheer in every face and a spring in every step. The locust-trees were in bloom and the fragrance of the blossoms filled the air. Cardiff Hill, beyond the village and above it, was green with vegetation and it lay just far enough away to seem a Delectable Land, dreamy, reposeful, and inviting. Tom appeared on the sidewalk with a bucket of whitewash and a long-handled brush. He surveyed the fence, and all gladness left him and a deep melancholy settled down upon his spirit. Thirty yards of board fence nine feet high. Life to him seemed hollow, and existence but a burden. Sighing, he dipped his brush and passed it along the topmost plank; repeated the operation; did it again; compared the insignificant whitewashed streak with the far-reaching continent of unwhitewashed fence, and sat down on a tree-box discouraged. Jim came skipping out at the gate with a tin pail, and singing Buffalo Gals. Bringing water from the town pump had always been hateful work in Tom's eyes, before, but now it did not strike him so. He remembered that there was company at the pump. White, mulatto, and negro boys and girls were always there waiting their turns, resting, trading playthings, quarrelling, fighting, skylarking. And he remembered that although the pump was only a hundred and fifty yards off, Jim never got back with a bucket of water under an hour--and even then somebody generally had to go after him. Tom said: "Say, Jim, I'll fetch the water if you'll whitewash some." Jim shook his head and said: "Can't, Mars Tom. Ole missis, she tole me I got to go an' git dis water an' not stop foolin' roun' wid anybody. She say she spec' Mars Tom gwine to ax me to whitewash, an' so she tole me go 'long an' 'tend to my own business--she 'lowed SHE'D 'tend to de whitewashin'." "Oh, never you mind what she said, Jim. That's the way she always talks. Gimme the bucket--I won't be gone only a a minute. SHE won't ever know." "Oh, I dasn't, Mars Tom. Ole missis she'd take an' tar de head off'n me. 'Deed she would." "SHE! She never licks anybody--whacks 'em over the head with her thimble--and who cares for that, I'd like to know. She talks awful, but talk don't hurt--anyways it don't if she don't cry. Jim, I'll give you a marvel. I'll give you a white alley!" Jim began to waver. "White alley, Jim! And it's a bully taw." "My! Dat's a mighty gay marvel, I tell you! But Mars Tom I's powerful 'fraid ole missis--" "And besides, if you will I'll show you my sore toe." Jim was only human--this attraction was too much for him. He put down his pail, took the white alley, and bent over the toe with absorbing interest while the bandage was being unwound. In another moment he was flying down the street with his pail and a tingling rear, Tom was whitewashing with vigor, and Aunt Polly was retiring from the field with a slipper in her hand and triumph in her eye. But Tom's energy did not last. He began to think of the fun he had planned for this day, and his sorrows multiplied. Soon the free boys would come tripping along on all sorts of delicious expeditions, and they would make a world of fun of him for having to work--the very thought of it burnt him like fire. He got out his worldly wealth and examined it--bits of toys, marbles, and trash; enough to buy an exchange of WORK, maybe, but not half enough to buy so much as half an hour of pure freedom. So he returned his straitened means to his pocket, and gave up the idea of trying to buy the boys. At this dark and hopeless moment an inspiration burst upon him! Nothing less than a great, magnificent inspiration. He took up his brush and went tranquilly to work. Ben Rogers hove in sight presently--the very boy, of all boys, whose ridicule he had been dreading. Ben's gait was the hop-skip-and-jump--proof enough that his heart was light and his anticipations high. He was eating an apple, and giving a long, melodious whoop, at intervals, followed by a deep-toned ding-dong-dong, ding-dong-dong, for he was personating a steamboat. As he drew near, he slackened speed, took the middle of the street, leaned far over to starboard and rounded to ponderously and with laborious pomp and circumstance--for he was personating the Big Missouri, and considered himself to be drawing nine feet of water. He was boat and captain and engine-bells combined, so he had to imagine himself standing on his own hurricane-deck giving the orders and executing them: "Stop her, sir! Ting-a-ling-ling!" The headway ran almost out, and he drew up slowly toward the sidewalk. "Ship up to back! Ting-a-ling-ling!" His arms straightened and stiffened down his sides. "Set her back on the stabboard! Ting-a-ling-ling! Chow! ch-chow-wow! Chow!" His right hand, meantime, describing stately circles--for it was representing a forty-foot wheel. "Let her go back on the labboard! Ting-a-lingling! Chow-ch-chow-chow!" The left hand began to describe circles. "Stop the stabboard! Ting-a-ling-ling! Stop the labboard! Come ahead on the stabboard! Stop her! Let your outside turn over slow! Ting-a-ling-ling! Chow-ow-ow! Get out that head-line! LIVELY now! Come--out with your spring-line--what're you about there! Take a turn round that stump with the bight of it! Stand by that stage, now--let her go! Done with the engines, sir! Ting-a-ling-ling! SH'T! S'H'T! SH'T!" (trying the gauge-cocks). Tom went on whitewashing--paid no attention to the steamboat. Ben stared a moment and then said: "Hi-YI! YOU'RE up a stump, ain't you!" No answer. Tom surveyed his last touch with the eye of an artist, then he gave his brush another gentle sweep and surveyed the result, as before. Ben ranged up alongside of him. Tom's mouth watered for the apple, but he stuck to his work. Ben said: "Hello, old chap, you got to work, hey?" Tom wheeled suddenly and said: "Why, it's you, Ben! I warn't noticing." "Say--I'm going in a-swimming, I am. Don't you wish you could? But of course you'd druther WORK--wouldn't you? Course you would!" Tom contemplated the boy a bit, and said: "What do you call work?" "Why, ain't THAT work?" Tom resumed his whitewashing, and answered carelessly: "Well, maybe it is, and maybe it ain't. All I know, is, it suits Tom Sawyer." "Oh come, now, you don't mean to let on that you LIKE it?" The brush continued to move. "Like it? Well, I don't see why I oughtn't to like it. Does a boy get a chance to whitewash a fence every day?" That put the thing in a new light. Ben stopped nibbling his apple. Tom swept his brush daintily back and forth--stepped back to note the effect--added a touch here and there--criticised the effect again--Ben watching every move and getting more and more interested, more and more absorbed. Presently he said: "Say, Tom, let ME whitewash a little." Tom considered, was about to consent; but he altered his mind: "No--no--I reckon it wouldn't hardly do, Ben. You see, Aunt Polly's awful particular about this fence--right here on the street, you know --but if it was the back fence I wouldn't mind and SHE wouldn't. Yes, she's awful particular about this fence; it's got to be done very careful; I reckon there ain't one boy in a thousand, maybe two thousand, that can do it the way it's got to be done." "No--is that so? Oh come, now--lemme just try. Only just a little--I'd let YOU, if you was me, Tom." "Ben, I'd like to, honest injun; but Aunt Polly--well, Jim wanted to do it, but she wouldn't let him; Sid wanted to do it, and she wouldn't let Sid. Now don't you see how I'm fixed? If you was to tackle this fence and anything was to happen to it--" "Oh, shucks, I'll be just as careful. Now lemme try. Say--I'll give you the core of my apple." "Well, here--No, Ben, now don't. I'm afeard--" "I'll give you ALL of it!" Tom gave up the brush with reluctance in his face, but alacrity in his heart. And while the late steamer Big Missouri worked and sweated in the sun, the retired artist sat on a barrel in the shade close by, dangled his legs, munched his apple, and planned the slaughter of more innocents. There was no lack of material; boys happened along every little while; they came to jeer, but remained to whitewash. By the time Ben was fagged out, Tom had traded the next chance to Billy Fisher for a kite, in good repair; and when he played out, Johnny Miller bought in for a dead rat and a string to swing it with--and so on, and so on, hour after hour. And when the middle of the afternoon came, from being a poor poverty-stricken boy in the morning, Tom was literally rolling in wealth. He had besides the things before mentioned, twelve marbles, part of a jews-harp, a piece of blue bottle-glass to look through, a spool cannon, a key that wouldn't unlock anything, a fragment of chalk, a glass stopper of a decanter, a tin soldier, a couple of tadpoles, six fire-crackers, a kitten with only one eye, a brass doorknob, a dog-collar--but no dog--the handle of a knife, four pieces of orange-peel, and a dilapidated old window sash. He had had a nice, good, idle time all the while--plenty of company --and the fence had three coats of whitewash on it! If he hadn't run out of whitewash he would have bankrupted every boy in the village. Tom said to himself that it was not such a hollow world, after all. He had discovered a great law of human action, without knowing it--namely, that in order to make a man or a boy covet a thing, it is only necessary to make the thing difficult to attain. If he had been a great and wise philosopher, like the writer of this book, he would now have comprehended that Work consists of whatever a body is OBLIGED to do, and that Play consists of whatever a body is not obliged to do. And this would help him to understand why constructing artificial flowers or performing on a tread-mill is work, while rolling ten-pins or climbing Mont Blanc is only amusement. There are wealthy gentlemen in England who drive four-horse passenger-coaches twenty or thirty miles on a daily line, in the summer, because the privilege costs them considerable money; but if they were offered wages for the service, that would turn it into work and then they would resign. The boy mused awhile over the substantial change which had taken place in his worldly circumstances, and then wended toward headquarters to report. CHAPTER III TOM presented himself before Aunt Polly, who was sitting by an open window in a pleasant rearward apartment, which was bedroom, breakfast-room, dining-room, and library, combined. The balmy summer air, the restful quiet, the odor of the flowers, and the drowsing murmur of the bees had had their effect, and she was nodding over her knitting --for she had no company but the cat, and it was asleep in her lap. Her spectacles were propped up on her gray head for safety. She had thought that of course Tom had deserted long ago, and she wondered at seeing him place himself in her power again in this intrepid way. He said: "Mayn't I go and play now, aunt?" "What, a'ready? How much have you done?" "It's all done, aunt." "Tom, don't lie to me--I can't bear it." "I ain't, aunt; it IS all done." Aunt Polly placed small trust in such evidence. She went out to see for herself; and she would have been content to find twenty per cent. of Tom's statement true. When she found the entire fence whitewashed, and not only whitewashed but elaborately coated and recoated, and even a streak added to the ground, her astonishment was almost unspeakable. She said: "Well, I never! There's no getting round it, you can work when you're a mind to, Tom." And then she diluted the compliment by adding, "But it's powerful seldom you're a mind to, I'm bound to say. Well, go 'long and play; but mind you get back some time in a week, or I'll tan you." She was so overcome by the splendor of his achievement that she took him into the closet and selected a choice apple and delivered it to him, along with an improving lecture upon the added value and flavor a treat took to itself when it came without sin through virtuous effort. And while she closed with a happy Scriptural flourish, he "hooked" a doughnut. Then he skipped out, and saw Sid just starting up the outside stairway that led to the back rooms on the second floor. Clods were handy and the air was full of them in a twinkling. They raged around Sid like a hail-storm; and before Aunt Polly could collect her surprised faculties and sally to the rescue, six or seven clods had taken personal effect, and Tom was over the fence and gone. There was a gate, but as a general thing he was too crowded for time to make use of it. His soul was at peace, now that he had settled with Sid for calling attention to his black thread and getting him into trouble. Tom skirted the block, and came round into a muddy alley that led by the back of his aunt's cow-stable. He presently got safely beyond the reach of capture and punishment, and hastened toward the public square of the village, where two "military" companies of boys had met for conflict, according to previous appointment. Tom was General of one of these armies, Joe Harper (a bosom friend) General of the other. These two great commanders did not condescend to fight in person--that being better suited to the still smaller fry--but sat together on an eminence and conducted the field operations by orders delivered through aides-de-camp. Tom's army won a great victory, after a long and hard-fought battle. Then the dead were counted, prisoners exchanged, the terms of the next disagreement agreed upon, and the day for the necessary battle appointed; after which the armies fell into line and marched away, and Tom turned homeward alone. As he was passing by the house where Jeff Thatcher lived, he saw a new girl in the garden--a lovely little blue-eyed creature with yellow hair plaited into two long-tails, white summer frock and embroidered pantalettes. The fresh-crowned hero fell without firing a shot. A certain Amy Lawrence vanished out of his heart and left not even a memory of herself behind. He had thought he loved her to distraction; he had regarded his passion as adoration; and behold it was only a poor little evanescent partiality. He had been months winning her; she had confessed hardly a week ago; he had been the happiest and the proudest boy in the world only seven short days, and here in one instant of time she had gone out of his heart like a casual stranger whose visit is done. He worshipped this new angel with furtive eye, till he saw that she had discovered him; then he pretended he did not know she was present, and began to "show off" in all sorts of absurd boyish ways, in order to win her admiration. He kept up this grotesque foolishness for some time; but by-and-by, while he was in the midst of some dangerous gymnastic performances, he glanced aside and saw that the little girl was wending her way toward the house. Tom came up to the fence and leaned on it, grieving, and hoping she would tarry yet awhile longer. She halted a moment on the steps and then moved toward the door. Tom heaved a great sigh as she put her foot on the threshold. But his face lit up, right away, for she tossed a pansy over the fence a moment before she disappeared. The boy ran around and stopped within a foot or two of the flower, and then shaded his eyes with his hand and began to look down street as if he had discovered something of interest going on in that direction. Presently he picked up a straw and began trying to balance it on his nose, with his head tilted far back; and as he moved from side to side, in his efforts, he edged nearer and nearer toward the pansy; finally his bare foot rested upon it, his pliant toes closed upon it, and he hopped away with the treasure and disappeared round the corner. But only for a minute--only while he could button the flower inside his jacket, next his heart--or next his stomach, possibly, for he was not much posted in anatomy, and not hypercritical, anyway. He returned, now, and hung about the fence till nightfall, "showing off," as before; but the girl never exhibited herself again, though Tom comforted himself a little with the hope that she had been near some window, meantime, and been aware of his attentions. Finally he strode home reluctantly, with his poor head full of visions. All through supper his spirits were so high that his aunt wondered "what had got into the child." He took a good scolding about clodding Sid, and did not seem to mind it in the least. He tried to steal sugar under his aunt's very nose, and got his knuckles rapped for it. He said: "Aunt, you don't whack Sid when he takes it." "Well, Sid don't torment a body the way you do. You'd be always into that sugar if I warn't watching you." Presently she stepped into the kitchen, and Sid, happy in his immunity, reached for the sugar-bowl--a sort of glorying over Tom which was wellnigh unbearable. But Sid's fingers slipped and the bowl dropped and broke. Tom was in ecstasies. In such ecstasies that he even controlled his tongue and was silent. He said to himself that he would not speak a word, even when his aunt came in, but would sit perfectly still till she asked who did the mischief; and then he would tell, and there would be nothing so good in the world as to see that pet model "catch it." He was so brimful of exultation that he could hardly hold himself when the old lady came back and stood above the wreck discharging lightnings of wrath from over her spectacles. He said to himself, "Now it's coming!" And the next instant he was sprawling on the floor! The potent palm was uplifted to strike again when Tom cried out: "Hold on, now, what 'er you belting ME for?--Sid broke it!" Aunt Polly paused, perplexed, and Tom looked for healing pity. But when she got her tongue again, she only said: "Umf! Well, you didn't get a lick amiss, I reckon. You been into some other audacious mischief when I wasn't around, like enough." Then her conscience reproached her, and she yearned to say something kind and loving; but she judged that this would be construed into a confession that she had been in the wrong, and discipline forbade that. So she kept silence, and went about her affairs with a troubled heart. Tom sulked in a corner and exalted his woes. He knew that in her heart his aunt was on her knees to him, and he was morosely gratified by the consciousness of it. He would hang out no signals, he would take notice of none. He knew that a yearning glance fell upon him, now and then, through a film of tears, but he refused recognition of it. He pictured himself lying sick unto death and his aunt bending over him beseeching one little forgiving word, but he would turn his face to the wall, and die with that word unsaid. Ah, how would she feel then? And he pictured himself brought home from the river, dead, with his curls all wet, and his sore heart at rest. How she would throw herself upon him, and how her tears would fall like rain, and her lips pray God to give her back her boy and she would never, never abuse him any more! But he would lie there cold and white and make no sign--a poor little sufferer, whose griefs were at an end. He so worked upon his feelings with the pathos of these dreams, that he had to keep swallowing, he was so like to choke; and his eyes swam in a blur of water, which overflowed when he winked, and ran down and trickled from the end of his nose. And such a luxury to him was this petting of his sorrows, that he could not bear to have any worldly cheeriness or any grating delight intrude upon it; it was too sacred for such contact; and so, presently, when his cousin Mary danced in, all alive with the joy of seeing home again after an age-long visit of one week to the country, he got up and moved in clouds and darkness out at one door as she brought song and sunshine in at the other. He wandered far from the accustomed haunts of boys, and sought desolate places that were in harmony with his spirit. A log raft in the river invited him, and he seated himself on its outer edge and contemplated the dreary vastness of the stream, wishing, the while, that he could only be drowned, all at once and unconsciously, without undergoing the uncomfortable routine devised by nature. Then he thought of his flower. He got it out, rumpled and wilted, and it mightily increased his dismal felicity. He wondered if she would pity him if she knew? Would she cry, and wish that she had a right to put her arms around his neck and comfort him? Or would she turn coldly away like all the hollow world? This picture brought such an agony of pleasurable suffering that he worked it over and over again in his mind and set it up in new and varied lights, till he wore it threadbare. At last he rose up sighing and departed in the darkness. About half-past nine or ten o'clock he came along the deserted street to where the Adored Unknown lived; he paused a moment; no sound fell upon his listening ear; a candle was casting a dull glow upon the curtain of a second-story window. Was the sacred presence there? He climbed the fence, threaded his stealthy way through the plants, till he stood under that window; he looked up at it long, and with emotion; then he laid him down on the ground under it, disposing himself upon his back, with his hands clasped upon his breast and holding his poor wilted flower. And thus he would die--out in the cold world, with no shelter over his homeless head, no friendly hand to wipe the death-damps from his brow, no loving face to bend pityingly over him when the great agony came. And thus SHE would see him when she looked out upon the glad morning, and oh! would she drop one little tear upon his poor, lifeless form, would she heave one little sigh to see a bright young life so rudely blighted, so untimely cut down? The window went up, a maid-servant's discordant voice profaned the holy calm, and a deluge of water drenched the prone martyr's remains! The strangling hero sprang up with a relieving snort. There was a whiz as of a missile in the air, mingled with the murmur of a curse, a sound as of shivering glass followed, and a small, vague form went over the fence and shot away in the gloom. Not long after, as Tom, all undressed for bed, was surveying his drenched garments by the light of a tallow dip, Sid woke up; but if he had any dim idea of making any "references to allusions," he thought better of it and held his peace, for there was danger in Tom's eye. Tom turned in without the added vexation of prayers, and Sid made mental note of the omission. CHAPTER IV THE sun rose upon a tranquil world, and beamed down upon the peaceful village like a benediction. Breakfast over, Aunt Polly had family worship: it began with a prayer built from the ground up of solid courses of Scriptural quotations, welded together with a thin mortar of originality; and from the summit of this she delivered a grim chapter of the Mosaic Law, as from Sinai. Then Tom girded up his loins, so to speak, and went to work to "get his verses." Sid had learned his lesson days before. Tom bent all his energies to the memorizing of five verses, and he chose part of the Sermon on the Mount, because he could find no verses that were shorter. At the end of half an hour Tom had a vague general idea of his lesson, but no more, for his mind was traversing the whole field of human thought, and his hands were busy with distracting recreations. Mary took his book to hear him recite, and he tried to find his way through the fog: "Blessed are the--a--a--" "Poor"-- "Yes--poor; blessed are the poor--a--a--" "In spirit--" "In spirit; blessed are the poor in spirit, for they--they--" "THEIRS--" "For THEIRS. Blessed are the poor in spirit, for theirs is the kingdom of heaven. Blessed are they that mourn, for they--they--" "Sh--" "For they--a--" "S, H, A--" "For they S, H--Oh, I don't know what it is!" "SHALL!" "Oh, SHALL! for they shall--for they shall--a--a--shall mourn--a--a-- blessed are they that shall--they that--a--they that shall mourn, for they shall--a--shall WHAT? Why don't you tell me, Mary?--what do you want to be so mean for?" "Oh, Tom, you poor thick-headed thing, I'm not teasing you. I wouldn't do that. You must go and learn it again. Don't you be discouraged, Tom, you'll manage it--and if you do, I'll give you something ever so nice. There, now, that's a good boy." "All right! What is it, Mary, tell me what it is." "Never you mind, Tom. You know if I say it's nice, it is nice." "You bet you that's so, Mary. All right, I'll tackle it again." And he did "tackle it again"--and under the double pressure of curiosity and prospective gain he did it with such spirit that he accomplished a shining success. Mary gave him a brand-new "Barlow" knife worth twelve and a half cents; and the convulsion of delight that swept his system shook him to his foundations. True, the knife would not cut anything, but it was a "sure-enough" Barlow, and there was inconceivable grandeur in that--though where the Western boys ever got the idea that such a weapon could possibly be counterfeited to its injury is an imposing mystery and will always remain so, perhaps. Tom contrived to scarify the cupboard with it, and was arranging to begin on the bureau, when he was called off to dress for Sunday-school. Mary gave him a tin basin of water and a piece of soap, and he went outside the door and set the basin on a little bench there; then he dipped the soap in the water and laid it down; turned up his sleeves; poured out the water on the ground, gently, and then entered the kitchen and began to wipe his face diligently on the towel behind the door. But Mary removed the towel and said: "Now ain't you ashamed, Tom. You mustn't be so bad. Water won't hurt you." Tom was a trifle disconcerted. The basin was refilled, and this time he stood over it a little while, gathering resolution; took in a big breath and began. When he entered the kitchen presently, with both eyes shut and groping for the towel with his hands, an honorable testimony of suds and water was dripping from his face. But when he emerged from the towel, he was not yet satisfactory, for the clean territory stopped short at his chin and his jaws, like a mask; below and beyond this line there was a dark expanse of unirrigated soil that spread downward in front and backward around his neck. Mary took him in hand, and when she was done with him he was a man and a brother, without distinction of color, and his saturated hair was neatly brushed, and its short curls wrought into a dainty and symmetrical general effect. [He privately smoothed out the curls, with labor and difficulty, and plastered his hair close down to his head; for he held curls to be effeminate, and his own filled his life with bitterness.] Then Mary got out a suit of his clothing that had been used only on Sundays during two years--they were simply called his "other clothes"--and so by that we know the size of his wardrobe. The girl "put him to rights" after he had dressed himself; she buttoned his neat roundabout up to his chin, turned his vast shirt collar down over his shoulders, brushed him off and crowned him with his speckled straw hat. He now looked exceedingly improved and uncomfortable. He was fully as uncomfortable as he looked; for there was a restraint about whole clothes and cleanliness that galled him. He hoped that Mary would forget his shoes, but the hope was blighted; she coated them thoroughly with tallow, as was the custom, and brought them out. He lost his temper and said he was always being made to do everything he didn't want to do. But Mary said, persuasively: "Please, Tom--that's a good boy." So he got into the shoes snarling. Mary was soon ready, and the three children set out for Sunday-school--a place that Tom hated with his whole heart; but Sid and Mary were fond of it. Sabbath-school hours were from nine to half-past ten; and then church service. Two of the children always remained for the sermon voluntarily, and the other always remained too--for stronger reasons. The church's high-backed, uncushioned pews would seat about three hundred persons; the edifice was but a small, plain affair, with a sort of pine board tree-box on top of it for a steeple. At the door Tom dropped back a step and accosted a Sunday-dressed comrade: "Say, Billy, got a yaller ticket?" "Yes." "What'll you take for her?" "What'll you give?" "Piece of lickrish and a fish-hook." "Less see 'em." Tom exhibited. They were satisfactory, and the property changed hands. Then Tom traded a couple of white alleys for three red tickets, and some small trifle or other for a couple of blue ones. He waylaid other boys as they came, and went on buying tickets of various colors ten or fifteen minutes longer. He entered the church, now, with a swarm of clean and noisy boys and girls, proceeded to his seat and started a quarrel with the first boy that came handy. The teacher, a grave, elderly man, interfered; then turned his back a moment and Tom pulled a boy's hair in the next bench, and was absorbed in his book when the boy turned around; stuck a pin in another boy, presently, in order to hear him say "Ouch!" and got a new reprimand from his teacher. Tom's whole class were of a pattern--restless, noisy, and troublesome. When they came to recite their lessons, not one of them knew his verses perfectly, but had to be prompted all along. However, they worried through, and each got his reward--in small blue tickets, each with a passage of Scripture on it; each blue ticket was pay for two verses of the recitation. Ten blue tickets equalled a red one, and could be exchanged for it; ten red tickets equalled a yellow one; for ten yellow tickets the superintendent gave a very plainly bound Bible (worth forty cents in those easy times) to the pupil. How many of my readers would have the industry and application to memorize two thousand verses, even for a Dore Bible? And yet Mary had acquired two Bibles in this way--it was the patient work of two years--and a boy of German parentage had won four or five. He once recited three thousand verses without stopping; but the strain upon his mental faculties was too great, and he was little better than an idiot from that day forth--a grievous misfortune for the school, for on great occasions, before company, the superintendent (as Tom expressed it) had always made this boy come out and "spread himself." Only the older pupils managed to keep their tickets and stick to their tedious work long enough to get a Bible, and so the delivery of one of these prizes was a rare and noteworthy circumstance; the successful pupil was so great and conspicuous for that day that on the spot every scholar's heart was fired with a fresh ambition that often lasted a couple of weeks. It is possible that Tom's mental stomach had never really hungered for one of those prizes, but unquestionably his entire being had for many a day longed for the glory and the eclat that came with it. In due course the superintendent stood up in front of the pulpit, with a closed hymn-book in his hand and his forefinger inserted between its leaves, and commanded attention. When a Sunday-school superintendent makes his customary little speech, a hymn-book in the hand is as necessary as is the inevitable sheet of music in the hand of a singer who stands forward on the platform and sings a solo at a concert --though why, is a mystery: for neither the hymn-book nor the sheet of music is ever referred to by the sufferer. This superintendent was a slim creature of thirty-five, with a sandy goatee and short sandy hair; he wore a stiff standing-collar whose upper edge almost reached his ears and whose sharp points curved forward abreast the corners of his mouth--a fence that compelled a straight lookout ahead, and a turning of the whole body when a side view was required; his chin was propped on a spreading cravat which was as broad and as long as a bank-note, and had fringed ends; his boot toes were turned sharply up, in the fashion of the day, like sleigh-runners--an effect patiently and laboriously produced by the young men by sitting with their toes pressed against a wall for hours together. Mr. Walters was very earnest of mien, and very sincere and honest at heart; and he held sacred things and places in such reverence, and so separated them from worldly matters, that unconsciously to himself his Sunday-school voice had acquired a peculiar intonation which was wholly absent on week-days. He began after this fashion: "Now, children, I want you all to sit up just as straight and pretty as you can and give me all your attention for a minute or two. There --that is it. That is the way good little boys and girls should do. I see one little girl who is looking out of the window--I am afraid she thinks I am out there somewhere--perhaps up in one of the trees making a speech to the little birds. [Applausive titter.] I want to tell you how good it makes me feel to see so many bright, clean little faces assembled in a place like this, learning to do right and be good." And so forth and so on. It is not necessary to set down the rest of the oration. It was of a pattern which does not vary, and so it is familiar to us all. The latter third of the speech was marred by the resumption of fights and other recreations among certain of the bad boys, and by fidgetings and whisperings that extended far and wide, washing even to the bases of isolated and incorruptible rocks like Sid and Mary. But now every sound ceased suddenly, with the subsidence of Mr. Walters' voice, and the conclusion of the speech was received with a burst of silent gratitude. A good part of the whispering had been occasioned by an event which was more or less rare--the entrance of visitors: lawyer Thatcher, accompanied by a very feeble and aged man; a fine, portly, middle-aged gentleman with iron-gray hair; and a dignified lady who was doubtless the latter's wife. The lady was leading a child. Tom had been restless and full of chafings and repinings; conscience-smitten, too--he could not meet Amy Lawrence's eye, he could not brook her loving gaze. But when he saw this small new-comer his soul was all ablaze with bliss in a moment. The next moment he was "showing off" with all his might --cuffing boys, pulling hair, making faces--in a word, using every art that seemed likely to fascinate a girl and win her applause. His exaltation had but one alloy--the memory of his humiliation in this angel's garden--and that record in sand was fast washing out, under the waves of happiness that were sweeping over it now. The visitors were given the highest seat of honor, and as soon as Mr. Walters' speech was finished, he introduced them to the school. The middle-aged man turned out to be a prodigious personage--no less a one than the county judge--altogether the most august creation these children had ever looked upon--and they wondered what kind of material he was made of--and they half wanted to hear him roar, and were half afraid he might, too. He was from Constantinople, twelve miles away--so he had travelled, and seen the world--these very eyes had looked upon the county court-house--which was said to have a tin roof. The awe which these reflections inspired was attested by the impressive silence and the ranks of staring eyes. This was the great Judge Thatcher, brother of their own lawyer. Jeff Thatcher immediately went forward, to be familiar with the great man and be envied by the school. It would have been music to his soul to hear the whisperings: "Look at him, Jim! He's a going up there. Say--look! he's a going to shake hands with him--he IS shaking hands with him! By jings, don't you wish you was Jeff?" Mr. Walters fell to "showing off," with all sorts of official bustlings and activities, giving orders, delivering judgments, discharging directions here, there, everywhere that he could find a target. The librarian "showed off"--running hither and thither with his arms full of books and making a deal of the splutter and fuss that insect authority delights in. The young lady teachers "showed off" --bending sweetly over pupils that were lately being boxed, lifting pretty warning fingers at bad little boys and patting good ones lovingly. The young gentlemen teachers "showed off" with small scoldings and other little displays of authority and fine attention to discipline--and most of the teachers, of both sexes, found business up at the library, by the pulpit; and it was business that frequently had to be done over again two or three times (with much seeming vexation). The little girls "showed off" in various ways, and the little boys "showed off" with such diligence that the air was thick with paper wads and the murmur of scufflings. And above it all the great man sat and beamed a majestic judicial smile upon all the house, and warmed himself in the sun of his own grandeur--for he was "showing off," too. There was only one thing wanting to make Mr. Walters' ecstasy complete, and that was a chance to deliver a Bible-prize and exhibit a prodigy. Several pupils had a few yellow tickets, but none had enough --he had been around among the star pupils inquiring. He would have given worlds, now, to have that German lad back again with a sound mind. And now at this moment, when hope was dead, Tom Sawyer came forward with nine yellow tickets, nine red tickets, and ten blue ones, and demanded a Bible. This was a thunderbolt out of a clear sky. Walters was not expecting an application from this source for the next ten years. But there was no getting around it--here were the certified checks, and they were good for their face. Tom was therefore elevated to a place with the Judge and the other elect, and the great news was announced from headquarters. It was the most stunning surprise of the decade, and so profound was the sensation that it lifted the new hero up to the judicial one's altitude, and the school had two marvels to gaze upon in place of one. The boys were all eaten up with envy--but those that suffered the bitterest pangs were those who perceived too late that they themselves had contributed to this hated splendor by trading tickets to Tom for the wealth he had amassed in selling whitewashing privileges. These despised themselves, as being the dupes of a wily fraud, a guileful snake in the grass. The prize was delivered to Tom with as much effusion as the superintendent could pump up under the circumstances; but it lacked somewhat of the true gush, for the poor fellow's instinct taught him that there was a mystery here that could not well bear the light, perhaps; it was simply preposterous that this boy had warehoused two thousand sheaves of Scriptural wisdom on his premises--a dozen would strain his capacity, without a doubt. Amy Lawrence was proud and glad, and she tried to make Tom see it in her face--but he wouldn't look. She wondered; then she was just a grain troubled; next a dim suspicion came and went--came again; she watched; a furtive glance told her worlds--and then her heart broke, and she was jealous, and angry, and the tears came and she hated everybody. Tom most of all (she thought). Tom was introduced to the Judge; but his tongue was tied, his breath would hardly come, his heart quaked--partly because of the awful greatness of the man, but mainly because he was her parent. He would have liked to fall down and worship him, if it were in the dark. The Judge put his hand on Tom's head and called him a fine little man, and asked him what his name was. The boy stammered, gasped, and got it out: "Tom." "Oh, no, not Tom--it is--" "Thomas." "Ah, that's it. I thought there was more to it, maybe. That's very well. But you've another one I daresay, and you'll tell it to me, won't you?" "Tell the gentleman your other name, Thomas," said Walters, "and say sir. You mustn't forget your manners." "Thomas Sawyer--sir." "That's it! That's a good boy. Fine boy. Fine, manly little fellow. Two thousand verses is a great many--very, very great many. And you never can be sorry for the trouble you took to learn them; for knowledge is worth more than anything there is in the world; it's what makes great men and good men; you'll be a great man and a good man yourself, some day, Thomas, and then you'll look back and say, It's all owing to the precious Sunday-school privileges of my boyhood--it's all owing to my dear teachers that taught me to learn--it's all owing to the good superintendent, who encouraged me, and watched over me, and gave me a beautiful Bible--a splendid elegant Bible--to keep and have it all for my own, always--it's all owing to right bringing up! That is what you will say, Thomas--and you wouldn't take any money for those two thousand verses--no indeed you wouldn't. And now you wouldn't mind telling me and this lady some of the things you've learned--no, I know you wouldn't--for we are proud of little boys that learn. Now, no doubt you know the names of all the twelve disciples. Won't you tell us the names of the first two that were appointed?" Tom was tugging at a button-hole and looking sheepish. He blushed, now, and his eyes fell. Mr. Walters' heart sank within him. He said to himself, it is not possible that the boy can answer the simplest question--why DID the Judge ask him? Yet he felt obliged to speak up and say: "Answer the gentleman, Thomas--don't be afraid." Tom still hung fire. "Now I know you'll tell me," said the lady. "The names of the first two disciples were--" "DAVID AND GOLIAH!" Let us draw the curtain of charity over the rest of the scene. CHAPTER V ABOUT half-past ten the cracked bell of the small church began to ring, and presently the people began to gather for the morning sermon. The Sunday-school children distributed themselves about the house and occupied pews with their parents, so as to be under supervision. Aunt Polly came, and Tom and Sid and Mary sat with her--Tom being placed next the aisle, in order that he might be as far away from the open window and the seductive outside summer scenes as possible. The crowd filed up the aisles: the aged and needy postmaster, who had seen better days; the mayor and his wife--for they had a mayor there, among other unnecessaries; the justice of the peace; the widow Douglass, fair, smart, and forty, a generous, good-hearted soul and well-to-do, her hill mansion the only palace in the town, and the most hospitable and much the most lavish in the matter of festivities that St. Petersburg could boast; the bent and venerable Major and Mrs. Ward; lawyer Riverson, the new notable from a distance; next the belle of the village, followed by a troop of lawn-clad and ribbon-decked young heart-breakers; then all the young clerks in town in a body--for they had stood in the vestibule sucking their cane-heads, a circling wall of oiled and simpering admirers, till the last girl had run their gantlet; and last of all came the Model Boy, Willie Mufferson, taking as heedful care of his mother as if she were cut glass. He always brought his mother to church, and was the pride of all the matrons. The boys all hated him, he was so good. And besides, he had been "thrown up to them" so much. His white handkerchief was hanging out of his pocket behind, as usual on Sundays--accidentally. Tom had no handkerchief, and he looked upon boys who had as snobs. The congregation being fully assembled, now, the bell rang once more, to warn laggards and stragglers, and then a solemn hush fell upon the church which was only broken by the tittering and whispering of the choir in the gallery. The choir always tittered and whispered all through service. There was once a church choir that was not ill-bred, but I have forgotten where it was, now. It was a great many years ago, and I can scarcely remember anything about it, but I think it was in some foreign country. The minister gave out the hymn, and read it through with a relish, in a peculiar style which was much admired in that part of the country. His voice began on a medium key and climbed steadily up till it reached a certain point, where it bore with strong emphasis upon the topmost word and then plunged down as if from a spring-board: Shall I be car-ri-ed toe the skies, on flow'ry BEDS of ease, Whilst others fight to win the prize, and sail thro' BLOODY seas? He was regarded as a wonderful reader. At church "sociables" he was always called upon to read poetry; and when he was through, the ladies would lift up their hands and let them fall helplessly in their laps, and "wall" their eyes, and shake their heads, as much as to say, "Words cannot express it; it is too beautiful, TOO beautiful for this mortal earth." After the hymn had been sung, the Rev. Mr. Sprague turned himself into a bulletin-board, and read off "notices" of meetings and societies and things till it seemed that the list would stretch out to the crack of doom--a queer custom which is still kept up in America, even in cities, away here in this age of abundant newspapers. Often, the less there is to justify a traditional custom, the harder it is to get rid of it. And now the minister prayed. A good, generous prayer it was, and went into details: it pleaded for the church, and the little children of the church; for the other churches of the village; for the village itself; for the county; for the State; for the State officers; for the United States; for the churches of the United States; for Congress; for the President; for the officers of the Government; for poor sailors, tossed by stormy seas; for the oppressed millions groaning under the heel of European monarchies and Oriental despotisms; for such as have the light and the good tidings, and yet have not eyes to see nor ears to hear withal; for the heathen in the far islands of the sea; and closed with a supplication that the words he was about to speak might find grace and favor, and be as seed sown in fertile ground, yielding in time a grateful harvest of good. Amen. There was a rustling of dresses, and the standing congregation sat down. The boy whose history this book relates did not enjoy the prayer, he only endured it--if he even did that much. He was restive all through it; he kept tally of the details of the prayer, unconsciously --for he was not listening, but he knew the ground of old, and the clergyman's regular route over it--and when a little trifle of new matter was interlarded, his ear detected it and his whole nature resented it; he considered additions unfair, and scoundrelly. In the midst of the prayer a fly had lit on the back of the pew in front of him and tortured his spirit by calmly rubbing its hands together, embracing its head with its arms, and polishing it so vigorously that it seemed to almost part company with the body, and the slender thread of a neck was exposed to view; scraping its wings with its hind legs and smoothing them to its body as if they had been coat-tails; going through its whole toilet as tranquilly as if it knew it was perfectly safe. As indeed it was; for as sorely as Tom's hands itched to grab for it they did not dare--he believed his soul would be instantly destroyed if he did such a thing while the prayer was going on. But with the closing sentence his hand began to curve and steal forward; and the instant the "Amen" was out the fly was a prisoner of war. His aunt detected the act and made him let it go. The minister gave out his text and droned along monotonously through an argument that was so prosy that many a head by and by began to nod --and yet it was an argument that dealt in limitless fire and brimstone and thinned the predestined elect down to a company so small as to be hardly worth the saving. Tom counted the pages of the sermon; after church he always knew how many pages there had been, but he seldom knew anything else about the discourse. However, this time he was really interested for a little while. The minister made a grand and moving picture of the assembling together of the world's hosts at the millennium when the lion and the lamb should lie down together and a little child should lead them. But the pathos, the lesson, the moral of the great spectacle were lost upon the boy; he only thought of the conspicuousness of the principal character before the on-looking nations; his face lit with the thought, and he said to himself that he wished he could be that child, if it was a tame lion. Now he lapsed into suffering again, as the dry argument was resumed. Presently he bethought him of a treasure he had and got it out. It was a large black beetle with formidable jaws--a "pinchbug," he called it. It was in a percussion-cap box. The first thing the beetle did was to take him by the finger. A natural fillip followed, the beetle went floundering into the aisle and lit on its back, and the hurt finger went into the boy's mouth. The beetle lay there working its helpless legs, unable to turn over. Tom eyed it, and longed for it; but it was safe out of his reach. Other people uninterested in the sermon found relief in the beetle, and they eyed it too. Presently a vagrant poodle dog came idling along, sad at heart, lazy with the summer softness and the quiet, weary of captivity, sighing for change. He spied the beetle; the drooping tail lifted and wagged. He surveyed the prize; walked around it; smelt at it from a safe distance; walked around it again; grew bolder, and took a closer smell; then lifted his lip and made a gingerly snatch at it, just missing it; made another, and another; began to enjoy the diversion; subsided to his stomach with the beetle between his paws, and continued his experiments; grew weary at last, and then indifferent and absent-minded. His head nodded, and little by little his chin descended and touched the enemy, who seized it. There was a sharp yelp, a flirt of the poodle's head, and the beetle fell a couple of yards away, and lit on its back once more. The neighboring spectators shook with a gentle inward joy, several faces went behind fans and handkerchiefs, and Tom was entirely happy. The dog looked foolish, and probably felt so; but there was resentment in his heart, too, and a craving for revenge. So he went to the beetle and began a wary attack on it again; jumping at it from every point of a circle, lighting with his fore-paws within an inch of the creature, making even closer snatches at it with his teeth, and jerking his head till his ears flapped again. But he grew tired once more, after a while; tried to amuse himself with a fly but found no relief; followed an ant around, with his nose close to the floor, and quickly wearied of that; yawned, sighed, forgot the beetle entirely, and sat down on it. Then there was a wild yelp of agony and the poodle went sailing up the aisle; the yelps continued, and so did the dog; he crossed the house in front of the altar; he flew down the other aisle; he crossed before the doors; he clamored up the home-stretch; his anguish grew with his progress, till presently he was but a woolly comet moving in its orbit with the gleam and the speed of light. At last the frantic sufferer sheered from its course, and sprang into its master's lap; he flung it out of the window, and the voice of distress quickly thinned away and died in the distance. By this time the whole church was red-faced and suffocating with suppressed laughter, and the sermon had come to a dead standstill. The discourse was resumed presently, but it went lame and halting, all possibility of impressiveness being at an end; for even the gravest sentiments were constantly being received with a smothered burst of unholy mirth, under cover of some remote pew-back, as if the poor parson had said a rarely facetious thing. It was a genuine relief to the whole congregation when the ordeal was over and the benediction pronounced. Tom Sawyer went home quite cheerful, thinking to himself that there was some satisfaction about divine service when there was a bit of variety in it. He had but one marring thought; he was willing that the dog should play with his pinchbug, but he did not think it was upright in him to carry it off. CHAPTER VI MONDAY morning found Tom Sawyer miserable. Monday morning always found him so--because it began another week's slow suffering in school. He generally began that day with wishing he had had no intervening holiday, it made the going into captivity and fetters again so much more odious. Tom lay thinking. Presently it occurred to him that he wished he was sick; then he could stay home from school. Here was a vague possibility. He canvassed his system. No ailment was found, and he investigated again. This time he thought he could detect colicky symptoms, and he began to encourage them with considerable hope. But they soon grew feeble, and presently died wholly away. He reflected further. Suddenly he discovered something. One of his upper front teeth was loose. This was lucky; he was about to begin to groan, as a "starter," as he called it, when it occurred to him that if he came into court with that argument, his aunt would pull it out, and that would hurt. So he thought he would hold the tooth in reserve for the present, and seek further. Nothing offered for some little time, and then he remembered hearing the doctor tell about a certain thing that laid up a patient for two or three weeks and threatened to make him lose a finger. So the boy eagerly drew his sore toe from under the sheet and held it up for inspection. But now he did not know the necessary symptoms. However, it seemed well worth while to chance it, so he fell to groaning with considerable spirit. But Sid slept on unconscious. Tom groaned louder, and fancied that he began to feel pain in the toe. No result from Sid. Tom was panting with his exertions by this time. He took a rest and then swelled himself up and fetched a succession of admirable groans. Sid snored on. Tom was aggravated. He said, "Sid, Sid!" and shook him. This course worked well, and Tom began to groan again. Sid yawned, stretched, then brought himself up on his elbow with a snort, and began to stare at Tom. Tom went on groaning. Sid said: "Tom! Say, Tom!" [No response.] "Here, Tom! TOM! What is the matter, Tom?" And he shook him and looked in his face anxiously. Tom moaned out: "Oh, don't, Sid. Don't joggle me." "Why, what's the matter, Tom? I must call auntie." "No--never mind. It'll be over by and by, maybe. Don't call anybody." "But I must! DON'T groan so, Tom, it's awful. How long you been this way?" "Hours. Ouch! Oh, don't stir so, Sid, you'll kill me." "Tom, why didn't you wake me sooner? Oh, Tom, DON'T! It makes my flesh crawl to hear you. Tom, what is the matter?" "I forgive you everything, Sid. [Groan.] Everything you've ever done to me. When I'm gone--" "Oh, Tom, you ain't dying, are you? Don't, Tom--oh, don't. Maybe--" "I forgive everybody, Sid. [Groan.] Tell 'em so, Sid. And Sid, you give my window-sash and my cat with one eye to that new girl that's come to town, and tell her--" But Sid had snatched his clothes and gone. Tom was suffering in reality, now, so handsomely was his imagination working, and so his groans had gathered quite a genuine tone. Sid flew down-stairs and said: "Oh, Aunt Polly, come! Tom's dying!" "Dying!" "Yes'm. Don't wait--come quick!" "Rubbage! I don't believe it!" But she fled up-stairs, nevertheless, with Sid and Mary at her heels. And her face grew white, too, and her lip trembled. When she reached the bedside she gasped out: "You, Tom! Tom, what's the matter with you?" "Oh, auntie, I'm--" "What's the matter with you--what is the matter with you, child?" "Oh, auntie, my sore toe's mortified!" The old lady sank down into a chair and laughed a little, then cried a little, then did both together. This restored her and she said: "Tom, what a turn you did give me. Now you shut up that nonsense and climb out of this." The groans ceased and the pain vanished from the toe. The boy felt a little foolish, and he said: "Aunt Polly, it SEEMED mortified, and it hurt so I never minded my tooth at all." "Your tooth, indeed! What's the matter with your tooth?" "One of them's loose, and it aches perfectly awful." "There, there, now, don't begin that groaning again. Open your mouth. Well--your tooth IS loose, but you're not going to die about that. Mary, get me a silk thread, and a chunk of fire out of the kitchen." Tom said: "Oh, please, auntie, don't pull it out. It don't hurt any more. I wish I may never stir if it does. Please don't, auntie. I don't want to stay home from school." "Oh, you don't, don't you? So all this row was because you thought you'd get to stay home from school and go a-fishing? Tom, Tom, I love you so, and you seem to try every way you can to break my old heart with your outrageousness." By this time the dental instruments were ready. The old lady made one end of the silk thread fast to Tom's tooth with a loop and tied the other to the bedpost. Then she seized the chunk of fire and suddenly thrust it almost into the boy's face. The tooth hung dangling by the bedpost, now. But all trials bring their compensations. As Tom wended to school after breakfast, he was the envy of every boy he met because the gap in his upper row of teeth enabled him to expectorate in a new and admirable way. He gathered quite a following of lads interested in the exhibition; and one that had cut his finger and had been a centre of fascination and homage up to this time, now found himself suddenly without an adherent, and shorn of his glory. His heart was heavy, and he said with a disdain which he did not feel that it wasn't anything to spit like Tom Sawyer; but another boy said, "Sour grapes!" and he wandered away a dismantled hero. Shortly Tom came upon the juvenile pariah of the village, Huckleberry Finn, son of the town drunkard. Huckleberry was cordially hated and dreaded by all the mothers of the town, because he was idle and lawless and vulgar and bad--and because all their children admired him so, and delighted in his forbidden society, and wished they dared to be like him. Tom was like the rest of the respectable boys, in that he envied Huckleberry his gaudy outcast condition, and was under strict orders not to play with him. So he played with him every time he got a chance. Huckleberry was always dressed in the cast-off clothes of full-grown men, and they were in perennial bloom and fluttering with rags. His hat was a vast ruin with a wide crescent lopped out of its brim; his coat, when he wore one, hung nearly to his heels and had the rearward buttons far down the back; but one suspender supported his trousers; the seat of the trousers bagged low and contained nothing, the fringed legs dragged in the dirt when not rolled up. Huckleberry came and went, at his own free will. He slept on doorsteps in fine weather and in empty hogsheads in wet; he did not have to go to school or to church, or call any being master or obey anybody; he could go fishing or swimming when and where he chose, and stay as long as it suited him; nobody forbade him to fight; he could sit up as late as he pleased; he was always the first boy that went barefoot in the spring and the last to resume leather in the fall; he never had to wash, nor put on clean clothes; he could swear wonderfully. In a word, everything that goes to make life precious that boy had. So thought every harassed, hampered, respectable boy in St. Petersburg. Tom hailed the romantic outcast: "Hello, Huckleberry!" "Hello yourself, and see how you like it." "What's that you got?" "Dead cat." "Lemme see him, Huck. My, he's pretty stiff. Where'd you get him?" "Bought him off'n a boy." "What did you give?" "I give a blue ticket and a bladder that I got at the slaughter-house." "Where'd you get the blue ticket?" "Bought it off'n Ben Rogers two weeks ago for a hoop-stick." "Say--what is dead cats good for, Huck?" "Good for? Cure warts with." "No! Is that so? I know something that's better." "I bet you don't. What is it?" "Why, spunk-water." "Spunk-water! I wouldn't give a dern for spunk-water." "You wouldn't, wouldn't you? D'you ever try it?" "No, I hain't. But Bob Tanner did." "Who told you so!" "Why, he told Jeff Thatcher, and Jeff told Johnny Baker, and Johnny told Jim Hollis, and Jim told Ben Rogers, and Ben told a nigger, and the nigger told me. There now!" "Well, what of it? They'll all lie. Leastways all but the nigger. I don't know HIM. But I never see a nigger that WOULDN'T lie. Shucks! Now you tell me how Bob Tanner done it, Huck." "Why, he took and dipped his hand in a rotten stump where the rain-water was." "In the daytime?" "Certainly." "With his face to the stump?" "Yes. Least I reckon so." "Did he say anything?" "I don't reckon he did. I don't know." "Aha! Talk about trying to cure warts with spunk-water such a blame fool way as that! Why, that ain't a-going to do any good. You got to go all by yourself, to the middle of the woods, where you know there's a spunk-water stump, and just as it's midnight you back up against the stump and jam your hand in and say: 'Barley-corn, barley-corn, injun-meal shorts, Spunk-water, spunk-water, swaller these warts,' and then walk away quick, eleven steps, with your eyes shut, and then turn around three times and walk home without speaking to anybody. Because if you speak the charm's busted." "Well, that sounds like a good way; but that ain't the way Bob Tanner done." "No, sir, you can bet he didn't, becuz he's the wartiest boy in this town; and he wouldn't have a wart on him if he'd knowed how to work spunk-water. I've took off thousands of warts off of my hands that way, Huck. I play with frogs so much that I've always got considerable many warts. Sometimes I take 'em off with a bean." "Yes, bean's good. I've done that." "Have you? What's your way?" "You take and split the bean, and cut the wart so as to get some blood, and then you put the blood on one piece of the bean and take and dig a hole and bury it 'bout midnight at the crossroads in the dark of the moon, and then you burn up the rest of the bean. You see that piece that's got the blood on it will keep drawing and drawing, trying to fetch the other piece to it, and so that helps the blood to draw the wart, and pretty soon off she comes." "Yes, that's it, Huck--that's it; though when you're burying it if you say 'Down bean; off wart; come no more to bother me!' it's better. That's the way Joe Harper does, and he's been nearly to Coonville and most everywheres. But say--how do you cure 'em with dead cats?" "Why, you take your cat and go and get in the graveyard 'long about midnight when somebody that was wicked has been buried; and when it's midnight a devil will come, or maybe two or three, but you can't see 'em, you can only hear something like the wind, or maybe hear 'em talk; and when they're taking that feller away, you heave your cat after 'em and say, 'Devil follow corpse, cat follow devil, warts follow cat, I'm done with ye!' That'll fetch ANY wart." "Sounds right. D'you ever try it, Huck?" "No, but old Mother Hopkins told me." "Well, I reckon it's so, then. Becuz they say she's a witch." "Say! Why, Tom, I KNOW she is. She witched pap. Pap says so his own self. He come along one day, and he see she was a-witching him, so he took up a rock, and if she hadn't dodged, he'd a got her. Well, that very night he rolled off'n a shed wher' he was a layin drunk, and broke his arm." "Why, that's awful. How did he know she was a-witching him?" "Lord, pap can tell, easy. Pap says when they keep looking at you right stiddy, they're a-witching you. Specially if they mumble. Becuz when they mumble they're saying the Lord's Prayer backards." "Say, Hucky, when you going to try the cat?" "To-night. I reckon they'll come after old Hoss Williams to-night." "But they buried him Saturday. Didn't they get him Saturday night?" "Why, how you talk! How could their charms work till midnight?--and THEN it's Sunday. Devils don't slosh around much of a Sunday, I don't reckon." "I never thought of that. That's so. Lemme go with you?" "Of course--if you ain't afeard." "Afeard! 'Tain't likely. Will you meow?" "Yes--and you meow back, if you get a chance. Last time, you kep' me a-meowing around till old Hays went to throwing rocks at me and says 'Dern that cat!' and so I hove a brick through his window--but don't you tell." "I won't. I couldn't meow that night, becuz auntie was watching me, but I'll meow this time. Say--what's that?" "Nothing but a tick." "Where'd you get him?" "Out in the woods." "What'll you take for him?" "I don't know. I don't want to sell him." "All right. It's a mighty small tick, anyway." "Oh, anybody can run a tick down that don't belong to them. I'm satisfied with it. It's a good enough tick for me." "Sho, there's ticks a plenty. I could have a thousand of 'em if I wanted to." "Well, why don't you? Becuz you know mighty well you can't. This is a pretty early tick, I reckon. It's the first one I've seen this year." "Say, Huck--I'll give you my tooth for him." "Less see it." Tom got out a bit of paper and carefully unrolled it. Huckleberry viewed it wistfully. The temptation was very strong. At last he said: "Is it genuwyne?" Tom lifted his lip and showed the vacancy. "Well, all right," said Huckleberry, "it's a trade." Tom enclosed the tick in the percussion-cap box that had lately been the pinchbug's prison, and the boys separated, each feeling wealthier than before. When Tom reached the little isolated frame schoolhouse, he strode in briskly, with the manner of one who had come with all honest speed. He hung his hat on a peg and flung himself into his seat with business-like alacrity. The master, throned on high in his great splint-bottom arm-chair, was dozing, lulled by the drowsy hum of study. The interruption roused him. "Thomas Sawyer!" Tom knew that when his name was pronounced in full, it meant trouble. "Sir!" "Come up here. Now, sir, why are you late again, as usual?" Tom was about to take refuge in a lie, when he saw two long tails of yellow hair hanging down a back that he recognized by the electric sympathy of love; and by that form was THE ONLY VACANT PLACE on the girls' side of the schoolhouse. He instantly said: "I STOPPED TO TALK WITH HUCKLEBERRY FINN!" The master's pulse stood still, and he stared helplessly. The buzz of study ceased. The pupils wondered if this foolhardy boy had lost his mind. The master said: "You--you did what?" "Stopped to talk with Huckleberry Finn." There was no mistaking the words. "Thomas Sawyer, this is the most astounding confession I have ever listened to. No mere ferule will answer for this offence. Take off your jacket." The master's arm performed until it was tired and the stock of switches notably diminished. Then the order followed: "Now, sir, go and sit with the girls! And let this be a warning to you." The titter that rippled around the room appeared to abash the boy, but in reality that result was caused rather more by his worshipful awe of his unknown idol and the dread pleasure that lay in his high good fortune. He sat down upon the end of the pine bench and the girl hitched herself away from him with a toss of her head. Nudges and winks and whispers traversed the room, but Tom sat still, with his arms upon the long, low desk before him, and seemed to study his book. By and by attention ceased from him, and the accustomed school murmur rose upon the dull air once more. Presently the boy began to steal furtive glances at the girl. She observed it, "made a mouth" at him and gave him the back of her head for the space of a minute. When she cautiously faced around again, a peach lay before her. She thrust it away. Tom gently put it back. She thrust it away again, but with less animosity. Tom patiently returned it to its place. Then she let it remain. Tom scrawled on his slate, "Please take it--I got more." The girl glanced at the words, but made no sign. Now the boy began to draw something on the slate, hiding his work with his left hand. For a time the girl refused to notice; but her human curiosity presently began to manifest itself by hardly perceptible signs. The boy worked on, apparently unconscious. The girl made a sort of noncommittal attempt to see, but the boy did not betray that he was aware of it. At last she gave in and hesitatingly whispered: "Let me see it." Tom partly uncovered a dismal caricature of a house with two gable ends to it and a corkscrew of smoke issuing from the chimney. Then the girl's interest began to fasten itself upon the work and she forgot everything else. When it was finished, she gazed a moment, then whispered: "It's nice--make a man." The artist erected a man in the front yard, that resembled a derrick. He could have stepped over the house; but the girl was not hypercritical; she was satisfied with the monster, and whispered: "It's a beautiful man--now make me coming along." Tom drew an hour-glass with a full moon and straw limbs to it and armed the spreading fingers with a portentous fan. The girl said: "It's ever so nice--I wish I could draw." "It's easy," whispered Tom, "I'll learn you." "Oh, will you? When?" "At noon. Do you go home to dinner?" "I'll stay if you will." "Good--that's a whack. What's your name?" "Becky Thatcher. What's yours? Oh, I know. It's Thomas Sawyer." "That's the name they lick me by. I'm Tom when I'm good. You call me Tom, will you?" "Yes." Now Tom began to scrawl something on the slate, hiding the words from the girl. But she was not backward this time. She begged to see. Tom said: "Oh, it ain't anything." "Yes it is." "No it ain't. You don't want to see." "Yes I do, indeed I do. Please let me." "You'll tell." "No I won't--deed and deed and double deed won't." "You won't tell anybody at all? Ever, as long as you live?" "No, I won't ever tell ANYbody. Now let me." "Oh, YOU don't want to see!" "Now that you treat me so, I WILL see." And she put her small hand upon his and a little scuffle ensued, Tom pretending to resist in earnest but letting his hand slip by degrees till these words were revealed: "I LOVE YOU." "Oh, you bad thing!" And she hit his hand a smart rap, but reddened and looked pleased, nevertheless. Just at this juncture the boy felt a slow, fateful grip closing on his ear, and a steady lifting impulse. In that wise he was borne across the house and deposited in his own seat, under a peppering fire of giggles from the whole school. Then the master stood over him during a few awful moments, and finally moved away to his throne without saying a word. But although Tom's ear tingled, his heart was jubilant. As the school quieted down Tom made an honest effort to study, but the turmoil within him was too great. In turn he took his place in the reading class and made a botch of it; then in the geography class and turned lakes into mountains, mountains into rivers, and rivers into continents, till chaos was come again; then in the spelling class, and got "turned down," by a succession of mere baby words, till he brought up at the foot and yielded up the pewter medal which he had worn with ostentation for months. CHAPTER VII THE harder Tom tried to fasten his mind on his book, the more his ideas wandered. So at last, with a sigh and a yawn, he gave it up. It seemed to him that the noon recess would never come. The air was utterly dead. There was not a breath stirring. It was the sleepiest of sleepy days. The drowsing murmur of the five and twenty studying scholars soothed the soul like the spell that is in the murmur of bees. Away off in the flaming sunshine, Cardiff Hill lifted its soft green sides through a shimmering veil of heat, tinted with the purple of distance; a few birds floated on lazy wing high in the air; no other living thing was visible but some cows, and they were asleep. Tom's heart ached to be free, or else to have something of interest to do to pass the dreary time. His hand wandered into his pocket and his face lit up with a glow of gratitude that was prayer, though he did not know it. Then furtively the percussion-cap box came out. He released the tick and put him on the long flat desk. The creature probably glowed with a gratitude that amounted to prayer, too, at this moment, but it was premature: for when he started thankfully to travel off, Tom turned him aside with a pin and made him take a new direction. Tom's bosom friend sat next him, suffering just as Tom had been, and now he was deeply and gratefully interested in this entertainment in an instant. This bosom friend was Joe Harper. The two boys were sworn friends all the week, and embattled enemies on Saturdays. Joe took a pin out of his lapel and began to assist in exercising the prisoner. The sport grew in interest momently. Soon Tom said that they were interfering with each other, and neither getting the fullest benefit of the tick. So he put Joe's slate on the desk and drew a line down the middle of it from top to bottom. "Now," said he, "as long as he is on your side you can stir him up and I'll let him alone; but if you let him get away and get on my side, you're to leave him alone as long as I can keep him from crossing over." "All right, go ahead; start him up." The tick escaped from Tom, presently, and crossed the equator. Joe harassed him awhile, and then he got away and crossed back again. This change of base occurred often. While one boy was worrying the tick with absorbing interest, the other would look on with interest as strong, the two heads bowed together over the slate, and the two souls dead to all things else. At last luck seemed to settle and abide with Joe. The tick tried this, that, and the other course, and got as excited and as anxious as the boys themselves, but time and again just as he would have victory in his very grasp, so to speak, and Tom's fingers would be twitching to begin, Joe's pin would deftly head him off, and keep possession. At last Tom could stand it no longer. The temptation was too strong. So he reached out and lent a hand with his pin. Joe was angry in a moment. Said he: "Tom, you let him alone." "I only just want to stir him up a little, Joe." "No, sir, it ain't fair; you just let him alone." "Blame it, I ain't going to stir him much." "Let him alone, I tell you." "I won't!" "You shall--he's on my side of the line." "Look here, Joe Harper, whose is that tick?" "I don't care whose tick he is--he's on my side of the line, and you sha'n't touch him." "Well, I'll just bet I will, though. He's my tick and I'll do what I blame please with him, or die!" A tremendous whack came down on Tom's shoulders, and its duplicate on Joe's; and for the space of two minutes the dust continued to fly from the two jackets and the whole school to enjoy it. The boys had been too absorbed to notice the hush that had stolen upon the school awhile before when the master came tiptoeing down the room and stood over them. He had contemplated a good part of the performance before he contributed his bit of variety to it. When school broke up at noon, Tom flew to Becky Thatcher, and whispered in her ear: "Put on your bonnet and let on you're going home; and when you get to the corner, give the rest of 'em the slip, and turn down through the lane and come back. I'll go the other way and come it over 'em the same way." So the one went off with one group of scholars, and the other with another. In a little while the two met at the bottom of the lane, and when they reached the school they had it all to themselves. Then they sat together, with a slate before them, and Tom gave Becky the pencil and held her hand in his, guiding it, and so created another surprising house. When the interest in art began to wane, the two fell to talking. Tom was swimming in bliss. He said: "Do you love rats?" "No! I hate them!" "Well, I do, too--LIVE ones. But I mean dead ones, to swing round your head with a string." "No, I don't care for rats much, anyway. What I like is chewing-gum." "Oh, I should say so! I wish I had some now." "Do you? I've got some. I'll let you chew it awhile, but you must give it back to me." That was agreeable, so they chewed it turn about, and dangled their legs against the bench in excess of contentment. "Was you ever at a circus?" said Tom. "Yes, and my pa's going to take me again some time, if I'm good." "I been to the circus three or four times--lots of times. Church ain't shucks to a circus. There's things going on at a circus all the time. I'm going to be a clown in a circus when I grow up." "Oh, are you! That will be nice. They're so lovely, all spotted up." "Yes, that's so. And they get slathers of money--most a dollar a day, Ben Rogers says. Say, Becky, was you ever engaged?" "What's that?" "Why, engaged to be married." "No." "Would you like to?" "I reckon so. I don't know. What is it like?" "Like? Why it ain't like anything. You only just tell a boy you won't ever have anybody but him, ever ever ever, and then you kiss and that's all. Anybody can do it." "Kiss? What do you kiss for?" "Why, that, you know, is to--well, they always do that." "Everybody?" "Why, yes, everybody that's in love with each other. Do you remember what I wrote on the slate?" "Ye--yes." "What was it?" "I sha'n't tell you." "Shall I tell YOU?" "Ye--yes--but some other time." "No, now." "No, not now--to-morrow." "Oh, no, NOW. Please, Becky--I'll whisper it, I'll whisper it ever so easy." Becky hesitating, Tom took silence for consent, and passed his arm about her waist and whispered the tale ever so softly, with his mouth close to her ear. And then he added: "Now you whisper it to me--just the same." She resisted, for a while, and then said: "You turn your face away so you can't see, and then I will. But you mustn't ever tell anybody--WILL you, Tom? Now you won't, WILL you?" "No, indeed, indeed I won't. Now, Becky." He turned his face away. She bent timidly around till her breath stirred his curls and whispered, "I--love--you!" Then she sprang away and ran around and around the desks and benches, with Tom after her, and took refuge in a corner at last, with her little white apron to her face. Tom clasped her about her neck and pleaded: "Now, Becky, it's all done--all over but the kiss. Don't you be afraid of that--it ain't anything at all. Please, Becky." And he tugged at her apron and the hands. By and by she gave up, and let her hands drop; her face, all glowing with the struggle, came up and submitted. Tom kissed the red lips and said: "Now it's all done, Becky. And always after this, you know, you ain't ever to love anybody but me, and you ain't ever to marry anybody but me, ever never and forever. Will you?" "No, I'll never love anybody but you, Tom, and I'll never marry anybody but you--and you ain't to ever marry anybody but me, either." "Certainly. Of course. That's PART of it. And always coming to school or when we're going home, you're to walk with me, when there ain't anybody looking--and you choose me and I choose you at parties, because that's the way you do when you're engaged." "It's so nice. I never heard of it before." "Oh, it's ever so gay! Why, me and Amy Lawrence--" The big eyes told Tom his blunder and he stopped, confused. "Oh, Tom! Then I ain't the first you've ever been engaged to!" The child began to cry. Tom said: "Oh, don't cry, Becky, I don't care for her any more." "Yes, you do, Tom--you know you do." Tom tried to put his arm about her neck, but she pushed him away and turned her face to the wall, and went on crying. Tom tried again, with soothing words in his mouth, and was repulsed again. Then his pride was up, and he strode away and went outside. He stood about, restless and uneasy, for a while, glancing at the door, every now and then, hoping she would repent and come to find him. But she did not. Then he began to feel badly and fear that he was in the wrong. It was a hard struggle with him to make new advances, now, but he nerved himself to it and entered. She was still standing back there in the corner, sobbing, with her face to the wall. Tom's heart smote him. He went to her and stood a moment, not knowing exactly how to proceed. Then he said hesitatingly: "Becky, I--I don't care for anybody but you." No reply--but sobs. "Becky"--pleadingly. "Becky, won't you say something?" More sobs. Tom got out his chiefest jewel, a brass knob from the top of an andiron, and passed it around her so that she could see it, and said: "Please, Becky, won't you take it?" She struck it to the floor. Then Tom marched out of the house and over the hills and far away, to return to school no more that day. Presently Becky began to suspect. She ran to the door; he was not in sight; she flew around to the play-yard; he was not there. Then she called: "Tom! Come back, Tom!" She listened intently, but there was no answer. She had no companions but silence and loneliness. So she sat down to cry again and upbraid herself; and by this time the scholars began to gather again, and she had to hide her griefs and still her broken heart and take up the cross of a long, dreary, aching afternoon, with none among the strangers about her to exchange sorrows with. CHAPTER VIII TOM dodged hither and thither through lanes until he was well out of the track of returning scholars, and then fell into a moody jog. He crossed a small "branch" two or three times, because of a prevailing juvenile superstition that to cross water baffled pursuit. Half an hour later he was disappearing behind the Douglas mansion on the summit of Cardiff Hill, and the schoolhouse was hardly distinguishable away off in the valley behind him. He entered a dense wood, picked his pathless way to the centre of it, and sat down on a mossy spot under a spreading oak. There was not even a zephyr stirring; the dead noonday heat had even stilled the songs of the birds; nature lay in a trance that was broken by no sound but the occasional far-off hammering of a woodpecker, and this seemed to render the pervading silence and sense of loneliness the more profound. The boy's soul was steeped in melancholy; his feelings were in happy accord with his surroundings. He sat long with his elbows on his knees and his chin in his hands, meditating. It seemed to him that life was but a trouble, at best, and he more than half envied Jimmy Hodges, so lately released; it must be very peaceful, he thought, to lie and slumber and dream forever and ever, with the wind whispering through the trees and caressing the grass and the flowers over the grave, and nothing to bother and grieve about, ever any more. If he only had a clean Sunday-school record he could be willing to go, and be done with it all. Now as to this girl. What had he done? Nothing. He had meant the best in the world, and been treated like a dog--like a very dog. She would be sorry some day--maybe when it was too late. Ah, if he could only die TEMPORARILY! But the elastic heart of youth cannot be compressed into one constrained shape long at a time. Tom presently began to drift insensibly back into the concerns of this life again. What if he turned his back, now, and disappeared mysteriously? What if he went away--ever so far away, into unknown countries beyond the seas--and never came back any more! How would she feel then! The idea of being a clown recurred to him now, only to fill him with disgust. For frivolity and jokes and spotted tights were an offense, when they intruded themselves upon a spirit that was exalted into the vague august realm of the romantic. No, he would be a soldier, and return after long years, all war-worn and illustrious. No--better still, he would join the Indians, and hunt buffaloes and go on the warpath in the mountain ranges and the trackless great plains of the Far West, and away in the future come back a great chief, bristling with feathers, hideous with paint, and prance into Sunday-school, some drowsy summer morning, with a bloodcurdling war-whoop, and sear the eyeballs of all his companions with unappeasable envy. But no, there was something gaudier even than this. He would be a pirate! That was it! NOW his future lay plain before him, and glowing with unimaginable splendor. How his name would fill the world, and make people shudder! How gloriously he would go plowing the dancing seas, in his long, low, black-hulled racer, the Spirit of the Storm, with his grisly flag flying at the fore! And at the zenith of his fame, how he would suddenly appear at the old village and stalk into church, brown and weather-beaten, in his black velvet doublet and trunks, his great jack-boots, his crimson sash, his belt bristling with horse-pistols, his crime-rusted cutlass at his side, his slouch hat with waving plumes, his black flag unfurled, with the skull and crossbones on it, and hear with swelling ecstasy the whisperings, "It's Tom Sawyer the Pirate!--the Black Avenger of the Spanish Main!" Yes, it was settled; his career was determined. He would run away from home and enter upon it. He would start the very next morning. Therefore he must now begin to get ready. He would collect his resources together. He went to a rotten log near at hand and began to dig under one end of it with his Barlow knife. He soon struck wood that sounded hollow. He put his hand there and uttered this incantation impressively: "What hasn't come here, come! What's here, stay here!" Then he scraped away the dirt, and exposed a pine shingle. He took it up and disclosed a shapely little treasure-house whose bottom and sides were of shingles. In it lay a marble. Tom's astonishment was boundless! He scratched his head with a perplexed air, and said: "Well, that beats anything!" Then he tossed the marble away pettishly, and stood cogitating. The truth was, that a superstition of his had failed, here, which he and all his comrades had always looked upon as infallible. If you buried a marble with certain necessary incantations, and left it alone a fortnight, and then opened the place with the incantation he had just used, you would find that all the marbles you had ever lost had gathered themselves together there, meantime, no matter how widely they had been separated. But now, this thing had actually and unquestionably failed. Tom's whole structure of faith was shaken to its foundations. He had many a time heard of this thing succeeding but never of its failing before. It did not occur to him that he had tried it several times before, himself, but could never find the hiding-places afterward. He puzzled over the matter some time, and finally decided that some witch had interfered and broken the charm. He thought he would satisfy himself on that point; so he searched around till he found a small sandy spot with a little funnel-shaped depression in it. He laid himself down and put his mouth close to this depression and called-- "Doodle-bug, doodle-bug, tell me what I want to know! Doodle-bug, doodle-bug, tell me what I want to know!" The sand began to work, and presently a small black bug appeared for a second and then darted under again in a fright. "He dasn't tell! So it WAS a witch that done it. I just knowed it." He well knew the futility of trying to contend against witches, so he gave up discouraged. But it occurred to him that he might as well have the marble he had just thrown away, and therefore he went and made a patient search for it. But he could not find it. Now he went back to his treasure-house and carefully placed himself just as he had been standing when he tossed the marble away; then he took another marble from his pocket and tossed it in the same way, saying: "Brother, go find your brother!" He watched where it stopped, and went there and looked. But it must have fallen short or gone too far; so he tried twice more. The last repetition was successful. The two marbles lay within a foot of each other. Just here the blast of a toy tin trumpet came faintly down the green aisles of the forest. Tom flung off his jacket and trousers, turned a suspender into a belt, raked away some brush behind the rotten log, disclosing a rude bow and arrow, a lath sword and a tin trumpet, and in a moment had seized these things and bounded away, barelegged, with fluttering shirt. He presently halted under a great elm, blew an answering blast, and then began to tiptoe and look warily out, this way and that. He said cautiously--to an imaginary company: "Hold, my merry men! Keep hid till I blow." Now appeared Joe Harper, as airily clad and elaborately armed as Tom. Tom called: "Hold! Who comes here into Sherwood Forest without my pass?" "Guy of Guisborne wants no man's pass. Who art thou that--that--" "Dares to hold such language," said Tom, prompting--for they talked "by the book," from memory. "Who art thou that dares to hold such language?" "I, indeed! I am Robin Hood, as thy caitiff carcase soon shall know." "Then art thou indeed that famous outlaw? Right gladly will I dispute with thee the passes of the merry wood. Have at thee!" They took their lath swords, dumped their other traps on the ground, struck a fencing attitude, foot to foot, and began a grave, careful combat, "two up and two down." Presently Tom said: "Now, if you've got the hang, go it lively!" So they "went it lively," panting and perspiring with the work. By and by Tom shouted: "Fall! fall! Why don't you fall?" "I sha'n't! Why don't you fall yourself? You're getting the worst of it." "Why, that ain't anything. I can't fall; that ain't the way it is in the book. The book says, 'Then with one back-handed stroke he slew poor Guy of Guisborne.' You're to turn around and let me hit you in the back." There was no getting around the authorities, so Joe turned, received the whack and fell. "Now," said Joe, getting up, "you got to let me kill YOU. That's fair." "Why, I can't do that, it ain't in the book." "Well, it's blamed mean--that's all." "Well, say, Joe, you can be Friar Tuck or Much the miller's son, and lam me with a quarter-staff; or I'll be the Sheriff of Nottingham and you be Robin Hood a little while and kill me." This was satisfactory, and so these adventures were carried out. Then Tom became Robin Hood again, and was allowed by the treacherous nun to bleed his strength away through his neglected wound. And at last Joe, representing a whole tribe of weeping outlaws, dragged him sadly forth, gave his bow into his feeble hands, and Tom said, "Where this arrow falls, there bury poor Robin Hood under the greenwood tree." Then he shot the arrow and fell back and would have died, but he lit on a nettle and sprang up too gaily for a corpse. The boys dressed themselves, hid their accoutrements, and went off grieving that there were no outlaws any more, and wondering what modern civilization could claim to have done to compensate for their loss. They said they would rather be outlaws a year in Sherwood Forest than President of the United States forever. CHAPTER IX AT half-past nine, that night, Tom and Sid were sent to bed, as usual. They said their prayers, and Sid was soon asleep. Tom lay awake and waited, in restless impatience. When it seemed to him that it must be nearly daylight, he heard the clock strike ten! This was despair. He would have tossed and fidgeted, as his nerves demanded, but he was afraid he might wake Sid. So he lay still, and stared up into the dark. Everything was dismally still. By and by, out of the stillness, little, scarcely perceptible noises began to emphasize themselves. The ticking of the clock began to bring itself into notice. Old beams began to crack mysteriously. The stairs creaked faintly. Evidently spirits were abroad. A measured, muffled snore issued from Aunt Polly's chamber. And now the tiresome chirping of a cricket that no human ingenuity could locate, began. Next the ghastly ticking of a deathwatch in the wall at the bed's head made Tom shudder--it meant that somebody's days were numbered. Then the howl of a far-off dog rose on the night air, and was answered by a fainter howl from a remoter distance. Tom was in an agony. At last he was satisfied that time had ceased and eternity begun; he began to doze, in spite of himself; the clock chimed eleven, but he did not hear it. And then there came, mingling with his half-formed dreams, a most melancholy caterwauling. The raising of a neighboring window disturbed him. A cry of "Scat! you devil!" and the crash of an empty bottle against the back of his aunt's woodshed brought him wide awake, and a single minute later he was dressed and out of the window and creeping along the roof of the "ell" on all fours. He "meow'd" with caution once or twice, as he went; then jumped to the roof of the woodshed and thence to the ground. Huckleberry Finn was there, with his dead cat. The boys moved off and disappeared in the gloom. At the end of half an hour they were wading through the tall grass of the graveyard. It was a graveyard of the old-fashioned Western kind. It was on a hill, about a mile and a half from the village. It had a crazy board fence around it, which leaned inward in places, and outward the rest of the time, but stood upright nowhere. Grass and weeds grew rank over the whole cemetery. All the old graves were sunken in, there was not a tombstone on the place; round-topped, worm-eaten boards staggered over the graves, leaning for support and finding none. "Sacred to the memory of" So-and-So had been painted on them once, but it could no longer have been read, on the most of them, now, even if there had been light. A faint wind moaned through the trees, and Tom feared it might be the spirits of the dead, complaining at being disturbed. The boys talked little, and only under their breath, for the time and the place and the pervading solemnity and silence oppressed their spirits. They found the sharp new heap they were seeking, and ensconced themselves within the protection of three great elms that grew in a bunch within a few feet of the grave. Then they waited in silence for what seemed a long time. The hooting of a distant owl was all the sound that troubled the dead stillness. Tom's reflections grew oppressive. He must force some talk. So he said in a whisper: "Hucky, do you believe the dead people like it for us to be here?" Huckleberry whispered: "I wisht I knowed. It's awful solemn like, AIN'T it?" "I bet it is." There was a considerable pause, while the boys canvassed this matter inwardly. Then Tom whispered: "Say, Hucky--do you reckon Hoss Williams hears us talking?" "O' course he does. Least his sperrit does." Tom, after a pause: "I wish I'd said Mister Williams. But I never meant any harm. Everybody calls him Hoss." "A body can't be too partic'lar how they talk 'bout these-yer dead people, Tom." This was a damper, and conversation died again. Presently Tom seized his comrade's arm and said: "Sh!" "What is it, Tom?" And the two clung together with beating hearts. "Sh! There 'tis again! Didn't you hear it?" "I--" "There! Now you hear it." "Lord, Tom, they're coming! They're coming, sure. What'll we do?" "I dono. Think they'll see us?" "Oh, Tom, they can see in the dark, same as cats. I wisht I hadn't come." "Oh, don't be afeard. I don't believe they'll bother us. We ain't doing any harm. If we keep perfectly still, maybe they won't notice us at all." "I'll try to, Tom, but, Lord, I'm all of a shiver." "Listen!" The boys bent their heads together and scarcely breathed. A muffled sound of voices floated up from the far end of the graveyard. "Look! See there!" whispered Tom. "What is it?" "It's devil-fire. Oh, Tom, this is awful." Some vague figures approached through the gloom, swinging an old-fashioned tin lantern that freckled the ground with innumerable little spangles of light. Presently Huckleberry whispered with a shudder: "It's the devils sure enough. Three of 'em! Lordy, Tom, we're goners! Can you pray?" "I'll try, but don't you be afeard. They ain't going to hurt us. 'Now I lay me down to sleep, I--'" "Sh!" "What is it, Huck?" "They're HUMANS! One of 'em is, anyway. One of 'em's old Muff Potter's voice." "No--'tain't so, is it?" "I bet I know it. Don't you stir nor budge. He ain't sharp enough to notice us. Drunk, the same as usual, likely--blamed old rip!" "All right, I'll keep still. Now they're stuck. Can't find it. Here they come again. Now they're hot. Cold again. Hot again. Red hot! They're p'inted right, this time. Say, Huck, I know another o' them voices; it's Injun Joe." "That's so--that murderin' half-breed! I'd druther they was devils a dern sight. What kin they be up to?" The whisper died wholly out, now, for the three men had reached the grave and stood within a few feet of the boys' hiding-place. "Here it is," said the third voice; and the owner of it held the lantern up and revealed the face of young Doctor Robinson. Potter and Injun Joe were carrying a handbarrow with a rope and a couple of shovels on it. They cast down their load and began to open the grave. The doctor put the lantern at the head of the grave and came and sat down with his back against one of the elm trees. He was so close the boys could have touched him. "Hurry, men!" he said, in a low voice; "the moon might come out at any moment." They growled a response and went on digging. For some time there was no noise but the grating sound of the spades discharging their freight of mould and gravel. It was very monotonous. Finally a spade struck upon the coffin with a dull woody accent, and within another minute or two the men had hoisted it out on the ground. They pried off the lid with their shovels, got out the body and dumped it rudely on the ground. The moon drifted from behind the clouds and exposed the pallid face. The barrow was got ready and the corpse placed on it, covered with a blanket, and bound to its place with the rope. Potter took out a large spring-knife and cut off the dangling end of the rope and then said: "Now the cussed thing's ready, Sawbones, and you'll just out with another five, or here she stays." "That's the talk!" said Injun Joe. "Look here, what does this mean?" said the doctor. "You required your pay in advance, and I've paid you." "Yes, and you done more than that," said Injun Joe, approaching the doctor, who was now standing. "Five years ago you drove me away from your father's kitchen one night, when I come to ask for something to eat, and you said I warn't there for any good; and when I swore I'd get even with you if it took a hundred years, your father had me jailed for a vagrant. Did you think I'd forget? The Injun blood ain't in me for nothing. And now I've GOT you, and you got to SETTLE, you know!" He was threatening the doctor, with his fist in his face, by this time. The doctor struck out suddenly and stretched the ruffian on the ground. Potter dropped his knife, and exclaimed: "Here, now, don't you hit my pard!" and the next moment he had grappled with the doctor and the two were struggling with might and main, trampling the grass and tearing the ground with their heels. Injun Joe sprang to his feet, his eyes flaming with passion, snatched up Potter's knife, and went creeping, catlike and stooping, round and round about the combatants, seeking an opportunity. All at once the doctor flung himself free, seized the heavy headboard of Williams' grave and felled Potter to the earth with it--and in the same instant the half-breed saw his chance and drove the knife to the hilt in the young man's breast. He reeled and fell partly upon Potter, flooding him with his blood, and in the same moment the clouds blotted out the dreadful spectacle and the two frightened boys went speeding away in the dark. Presently, when the moon emerged again, Injun Joe was standing over the two forms, contemplating them. The doctor murmured inarticulately, gave a long gasp or two and was still. The half-breed muttered: "THAT score is settled--damn you." Then he robbed the body. After which he put the fatal knife in Potter's open right hand, and sat down on the dismantled coffin. Three --four--five minutes passed, and then Potter began to stir and moan. His hand closed upon the knife; he raised it, glanced at it, and let it fall, with a shudder. Then he sat up, pushing the body from him, and gazed at it, and then around him, confusedly. His eyes met Joe's. "Lord, how is this, Joe?" he said. "It's a dirty business," said Joe, without moving. "What did you do it for?" "I! I never done it!" "Look here! That kind of talk won't wash." Potter trembled and grew white. "I thought I'd got sober. I'd no business to drink to-night. But it's in my head yet--worse'n when we started here. I'm all in a muddle; can't recollect anything of it, hardly. Tell me, Joe--HONEST, now, old feller--did I do it? Joe, I never meant to--'pon my soul and honor, I never meant to, Joe. Tell me how it was, Joe. Oh, it's awful--and him so young and promising." "Why, you two was scuffling, and he fetched you one with the headboard and you fell flat; and then up you come, all reeling and staggering like, and snatched the knife and jammed it into him, just as he fetched you another awful clip--and here you've laid, as dead as a wedge til now." "Oh, I didn't know what I was a-doing. I wish I may die this minute if I did. It was all on account of the whiskey and the excitement, I reckon. I never used a weepon in my life before, Joe. I've fought, but never with weepons. They'll all say that. Joe, don't tell! Say you won't tell, Joe--that's a good feller. I always liked you, Joe, and stood up for you, too. Don't you remember? You WON'T tell, WILL you, Joe?" And the poor creature dropped on his knees before the stolid murderer, and clasped his appealing hands. "No, you've always been fair and square with me, Muff Potter, and I won't go back on you. There, now, that's as fair as a man can say." "Oh, Joe, you're an angel. I'll bless you for this the longest day I live." And Potter began to cry. "Come, now, that's enough of that. This ain't any time for blubbering. You be off yonder way and I'll go this. Move, now, and don't leave any tracks behind you." Potter started on a trot that quickly increased to a run. The half-breed stood looking after him. He muttered: "If he's as much stunned with the lick and fuddled with the rum as he had the look of being, he won't think of the knife till he's gone so far he'll be afraid to come back after it to such a place by himself --chicken-heart!" Two or three minutes later the murdered man, the blanketed corpse, the lidless coffin, and the open grave were under no inspection but the moon's. The stillness was complete again, too. CHAPTER X THE two boys flew on and on, toward the village, speechless with horror. They glanced backward over their shoulders from time to time, apprehensively, as if they feared they might be followed. Every stump that started up in their path seemed a man and an enemy, and made them catch their breath; and as they sped by some outlying cottages that lay near the village, the barking of the aroused watch-dogs seemed to give wings to their feet. "If we can only get to the old tannery before we break down!" whispered Tom, in short catches between breaths. "I can't stand it much longer." Huckleberry's hard pantings were his only reply, and the boys fixed their eyes on the goal of their hopes and bent to their work to win it. They gained steadily on it, and at last, breast to breast, they burst through the open door and fell grateful and exhausted in the sheltering shadows beyond. By and by their pulses slowed down, and Tom whispered: "Huckleberry, what do you reckon'll come of this?" "If Doctor Robinson dies, I reckon hanging'll come of it." "Do you though?" "Why, I KNOW it, Tom." Tom thought a while, then he said: "Who'll tell? We?" "What are you talking about? S'pose something happened and Injun Joe DIDN'T hang? Why, he'd kill us some time or other, just as dead sure as we're a laying here." "That's just what I was thinking to myself, Huck." "If anybody tells, let Muff Potter do it, if he's fool enough. He's generally drunk enough." Tom said nothing--went on thinking. Presently he whispered: "Huck, Muff Potter don't know it. How can he tell?" "What's the reason he don't know it?" "Because he'd just got that whack when Injun Joe done it. D'you reckon he could see anything? D'you reckon he knowed anything?" "By hokey, that's so, Tom!" "And besides, look-a-here--maybe that whack done for HIM!" "No, 'taint likely, Tom. He had liquor in him; I could see that; and besides, he always has. Well, when pap's full, you might take and belt him over the head with a church and you couldn't phase him. He says so, his own self. So it's the same with Muff Potter, of course. But if a man was dead sober, I reckon maybe that whack might fetch him; I dono." After another reflective silence, Tom said: "Hucky, you sure you can keep mum?" "Tom, we GOT to keep mum. You know that. That Injun devil wouldn't make any more of drownding us than a couple of cats, if we was to squeak 'bout this and they didn't hang him. Now, look-a-here, Tom, less take and swear to one another--that's what we got to do--swear to keep mum." "I'm agreed. It's the best thing. Would you just hold hands and swear that we--" "Oh no, that wouldn't do for this. That's good enough for little rubbishy common things--specially with gals, cuz THEY go back on you anyway, and blab if they get in a huff--but there orter be writing 'bout a big thing like this. And blood." Tom's whole being applauded this idea. It was deep, and dark, and awful; the hour, the circumstances, the surroundings, were in keeping with it. He picked up a clean pine shingle that lay in the moonlight, took a little fragment of "red keel" out of his pocket, got the moon on his work, and painfully scrawled these lines, emphasizing each slow down-stroke by clamping his tongue between his teeth, and letting up the pressure on the up-strokes. [See next page.] "Huck Finn and Tom Sawyer swears they will keep mum about This and They wish They may Drop down dead in Their Tracks if They ever Tell and Rot." Huckleberry was filled with admiration of Tom's facility in writing, and the sublimity of his language. He at once took a pin from his lapel and was going to prick his flesh, but Tom said: "Hold on! Don't do that. A pin's brass. It might have verdigrease on it." "What's verdigrease?" "It's p'ison. That's what it is. You just swaller some of it once --you'll see." So Tom unwound the thread from one of his needles, and each boy pricked the ball of his thumb and squeezed out a drop of blood. In time, after many squeezes, Tom managed to sign his initials, using the ball of his little finger for a pen. Then he showed Huckleberry how to make an H and an F, and the oath was complete. They buried the shingle close to the wall, with some dismal ceremonies and incantations, and the fetters that bound their tongues were considered to be locked and the key thrown away. A figure crept stealthily through a break in the other end of the ruined building, now, but they did not notice it. "Tom," whispered Huckleberry, "does this keep us from EVER telling --ALWAYS?" "Of course it does. It don't make any difference WHAT happens, we got to keep mum. We'd drop down dead--don't YOU know that?" "Yes, I reckon that's so." They continued to whisper for some little time. Presently a dog set up a long, lugubrious howl just outside--within ten feet of them. The boys clasped each other suddenly, in an agony of fright. "Which of us does he mean?" gasped Huckleberry. "I dono--peep through the crack. Quick!" "No, YOU, Tom!" "I can't--I can't DO it, Huck!" "Please, Tom. There 'tis again!" "Oh, lordy, I'm thankful!" whispered Tom. "I know his voice. It's Bull Harbison." * [* If Mr. Harbison owned a slave named Bull, Tom would have spoken of him as "Harbison's Bull," but a son or a dog of that name was "Bull Harbison."] "Oh, that's good--I tell you, Tom, I was most scared to death; I'd a bet anything it was a STRAY dog." The dog howled again. The boys' hearts sank once more. "Oh, my! that ain't no Bull Harbison!" whispered Huckleberry. "DO, Tom!" Tom, quaking with fear, yielded, and put his eye to the crack. His whisper was hardly audible when he said: "Oh, Huck, IT S A STRAY DOG!" "Quick, Tom, quick! Who does he mean?" "Huck, he must mean us both--we're right together." "Oh, Tom, I reckon we're goners. I reckon there ain't no mistake 'bout where I'LL go to. I been so wicked." "Dad fetch it! This comes of playing hookey and doing everything a feller's told NOT to do. I might a been good, like Sid, if I'd a tried --but no, I wouldn't, of course. But if ever I get off this time, I lay I'll just WALLER in Sunday-schools!" And Tom began to snuffle a little. "YOU bad!" and Huckleberry began to snuffle too. "Consound it, Tom Sawyer, you're just old pie, 'longside o' what I am. Oh, LORDY, lordy, lordy, I wisht I only had half your chance." Tom choked off and whispered: "Look, Hucky, look! He's got his BACK to us!" Hucky looked, with joy in his heart. "Well, he has, by jingoes! Did he before?" "Yes, he did. But I, like a fool, never thought. Oh, this is bully, you know. NOW who can he mean?" The howling stopped. Tom pricked up his ears. "Sh! What's that?" he whispered. "Sounds like--like hogs grunting. No--it's somebody snoring, Tom." "That IS it! Where 'bouts is it, Huck?" "I bleeve it's down at 'tother end. Sounds so, anyway. Pap used to sleep there, sometimes, 'long with the hogs, but laws bless you, he just lifts things when HE snores. Besides, I reckon he ain't ever coming back to this town any more." The spirit of adventure rose in the boys' souls once more. "Hucky, do you das't to go if I lead?" "I don't like to, much. Tom, s'pose it's Injun Joe!" Tom quailed. But presently the temptation rose up strong again and the boys agreed to try, with the understanding that they would take to their heels if the snoring stopped. So they went tiptoeing stealthily down, the one behind the other. When they had got to within five steps of the snorer, Tom stepped on a stick, and it broke with a sharp snap. The man moaned, writhed a little, and his face came into the moonlight. It was Muff Potter. The boys' hearts had stood still, and their hopes too, when the man moved, but their fears passed away now. They tiptoed out, through the broken weather-boarding, and stopped at a little distance to exchange a parting word. That long, lugubrious howl rose on the night air again! They turned and saw the strange dog standing within a few feet of where Potter was lying, and FACING Potter, with his nose pointing heavenward. "Oh, geeminy, it's HIM!" exclaimed both boys, in a breath. "Say, Tom--they say a stray dog come howling around Johnny Miller's house, 'bout midnight, as much as two weeks ago; and a whippoorwill come in and lit on the banisters and sung, the very same evening; and there ain't anybody dead there yet." "Well, I know that. And suppose there ain't. Didn't Gracie Miller fall in the kitchen fire and burn herself terrible the very next Saturday?" "Yes, but she ain't DEAD. And what's more, she's getting better, too." "All right, you wait and see. She's a goner, just as dead sure as Muff Potter's a goner. That's what the niggers say, and they know all about these kind of things, Huck." Then they separated, cogitating. When Tom crept in at his bedroom window the night was almost spent. He undressed with excessive caution, and fell asleep congratulating himself that nobody knew of his escapade. He was not aware that the gently-snoring Sid was awake, and had been so for an hour. When Tom awoke, Sid was dressed and gone. There was a late look in the light, a late sense in the atmosphere. He was startled. Why had he not been called--persecuted till he was up, as usual? The thought filled him with bodings. Within five minutes he was dressed and down-stairs, feeling sore and drowsy. The family were still at table, but they had finished breakfast. There was no voice of rebuke; but there were averted eyes; there was a silence and an air of solemnity that struck a chill to the culprit's heart. He sat down and tried to seem gay, but it was up-hill work; it roused no smile, no response, and he lapsed into silence and let his heart sink down to the depths. After breakfast his aunt took him aside, and Tom almost brightened in the hope that he was going to be flogged; but it was not so. His aunt wept over him and asked him how he could go and break her old heart so; and finally told him to go on, and ruin himself and bring her gray hairs with sorrow to the grave, for it was no use for her to try any more. This was worse than a thousand whippings, and Tom's heart was sorer now than his body. He cried, he pleaded for forgiveness, promised to reform over and over again, and then received his dismissal, feeling that he had won but an imperfect forgiveness and established but a feeble confidence. He left the presence too miserable to even feel revengeful toward Sid; and so the latter's prompt retreat through the back gate was unnecessary. He moped to school gloomy and sad, and took his flogging, along with Joe Harper, for playing hookey the day before, with the air of one whose heart was busy with heavier woes and wholly dead to trifles. Then he betook himself to his seat, rested his elbows on his desk and his jaws in his hands, and stared at the wall with the stony stare of suffering that has reached the limit and can no further go. His elbow was pressing against some hard substance. After a long time he slowly and sadly changed his position, and took up this object with a sigh. It was in a paper. He unrolled it. A long, lingering, colossal sigh followed, and his heart broke. It was his brass andiron knob! This final feather broke the camel's back. CHAPTER XI CLOSE upon the hour of noon the whole village was suddenly electrified with the ghastly news. No need of the as yet undreamed-of telegraph; the tale flew from man to man, from group to group, from house to house, with little less than telegraphic speed. Of course the schoolmaster gave holiday for that afternoon; the town would have thought strangely of him if he had not. A gory knife had been found close to the murdered man, and it had been recognized by somebody as belonging to Muff Potter--so the story ran. And it was said that a belated citizen had come upon Potter washing himself in the "branch" about one or two o'clock in the morning, and that Potter had at once sneaked off--suspicious circumstances, especially the washing which was not a habit with Potter. It was also said that the town had been ransacked for this "murderer" (the public are not slow in the matter of sifting evidence and arriving at a verdict), but that he could not be found. Horsemen had departed down all the roads in every direction, and the Sheriff "was confident" that he would be captured before night. All the town was drifting toward the graveyard. Tom's heartbreak vanished and he joined the procession, not because he would not a thousand times rather go anywhere else, but because an awful, unaccountable fascination drew him on. Arrived at the dreadful place, he wormed his small body through the crowd and saw the dismal spectacle. It seemed to him an age since he was there before. Somebody pinched his arm. He turned, and his eyes met Huckleberry's. Then both looked elsewhere at once, and wondered if anybody had noticed anything in their mutual glance. But everybody was talking, and intent upon the grisly spectacle before them. "Poor fellow!" "Poor young fellow!" "This ought to be a lesson to grave robbers!" "Muff Potter'll hang for this if they catch him!" This was the drift of remark; and the minister said, "It was a judgment; His hand is here." Now Tom shivered from head to heel; for his eye fell upon the stolid face of Injun Joe. At this moment the crowd began to sway and struggle, and voices shouted, "It's him! it's him! he's coming himself!" "Who? Who?" from twenty voices. "Muff Potter!" "Hallo, he's stopped!--Look out, he's turning! Don't let him get away!" People in the branches of the trees over Tom's head said he wasn't trying to get away--he only looked doubtful and perplexed. "Infernal impudence!" said a bystander; "wanted to come and take a quiet look at his work, I reckon--didn't expect any company." The crowd fell apart, now, and the Sheriff came through, ostentatiously leading Potter by the arm. The poor fellow's face was haggard, and his eyes showed the fear that was upon him. When he stood before the murdered man, he shook as with a palsy, and he put his face in his hands and burst into tears. "I didn't do it, friends," he sobbed; "'pon my word and honor I never done it." "Who's accused you?" shouted a voice. This shot seemed to carry home. Potter lifted his face and looked around him with a pathetic hopelessness in his eyes. He saw Injun Joe, and exclaimed: "Oh, Injun Joe, you promised me you'd never--" "Is that your knife?" and it was thrust before him by the Sheriff. Potter would have fallen if they had not caught him and eased him to the ground. Then he said: "Something told me 't if I didn't come back and get--" He shuddered; then waved his nerveless hand with a vanquished gesture and said, "Tell 'em, Joe, tell 'em--it ain't any use any more." Then Huckleberry and Tom stood dumb and staring, and heard the stony-hearted liar reel off his serene statement, they expecting every moment that the clear sky would deliver God's lightnings upon his head, and wondering to see how long the stroke was delayed. And when he had finished and still stood alive and whole, their wavering impulse to break their oath and save the poor betrayed prisoner's life faded and vanished away, for plainly this miscreant had sold himself to Satan and it would be fatal to meddle with the property of such a power as that. "Why didn't you leave? What did you want to come here for?" somebody said. "I couldn't help it--I couldn't help it," Potter moaned. "I wanted to run away, but I couldn't seem to come anywhere but here." And he fell to sobbing again. Injun Joe repeated his statement, just as calmly, a few minutes afterward on the inquest, under oath; and the boys, seeing that the lightnings were still withheld, were confirmed in their belief that Joe had sold himself to the devil. He was now become, to them, the most balefully interesting object they had ever looked upon, and they could not take their fascinated eyes from his face. They inwardly resolved to watch him nights, when opportunity should offer, in the hope of getting a glimpse of his dread master. Injun Joe helped to raise the body of the murdered man and put it in a wagon for removal; and it was whispered through the shuddering crowd that the wound bled a little! The boys thought that this happy circumstance would turn suspicion in the right direction; but they were disappointed, for more than one villager remarked: "It was within three feet of Muff Potter when it done it." Tom's fearful secret and gnawing conscience disturbed his sleep for as much as a week after this; and at breakfast one morning Sid said: "Tom, you pitch around and talk in your sleep so much that you keep me awake half the time." Tom blanched and dropped his eyes. "It's a bad sign," said Aunt Polly, gravely. "What you got on your mind, Tom?" "Nothing. Nothing 't I know of." But the boy's hand shook so that he spilled his coffee. "And you do talk such stuff," Sid said. "Last night you said, 'It's blood, it's blood, that's what it is!' You said that over and over. And you said, 'Don't torment me so--I'll tell!' Tell WHAT? What is it you'll tell?" Everything was swimming before Tom. There is no telling what might have happened, now, but luckily the concern passed out of Aunt Polly's face and she came to Tom's relief without knowing it. She said: "Sho! It's that dreadful murder. I dream about it most every night myself. Sometimes I dream it's me that done it." Mary said she had been affected much the same way. Sid seemed satisfied. Tom got out of the presence as quick as he plausibly could, and after that he complained of toothache for a week, and tied up his jaws every night. He never knew that Sid lay nightly watching, and frequently slipped the bandage free and then leaned on his elbow listening a good while at a time, and afterward slipped the bandage back to its place again. Tom's distress of mind wore off gradually and the toothache grew irksome and was discarded. If Sid really managed to make anything out of Tom's disjointed mutterings, he kept it to himself. It seemed to Tom that his schoolmates never would get done holding inquests on dead cats, and thus keeping his trouble present to his mind. Sid noticed that Tom never was coroner at one of these inquiries, though it had been his habit to take the lead in all new enterprises; he noticed, too, that Tom never acted as a witness--and that was strange; and Sid did not overlook the fact that Tom even showed a marked aversion to these inquests, and always avoided them when he could. Sid marvelled, but said nothing. However, even inquests went out of vogue at last, and ceased to torture Tom's conscience. Every day or two, during this time of sorrow, Tom watched his opportunity and went to the little grated jail-window and smuggled such small comforts through to the "murderer" as he could get hold of. The jail was a trifling little brick den that stood in a marsh at the edge of the village, and no guards were afforded for it; indeed, it was seldom occupied. These offerings greatly helped to ease Tom's conscience. The villagers had a strong desire to tar-and-feather Injun Joe and ride him on a rail, for body-snatching, but so formidable was his character that nobody could be found who was willing to take the lead in the matter, so it was dropped. He had been careful to begin both of his inquest-statements with the fight, without confessing the grave-robbery that preceded it; therefore it was deemed wisest not to try the case in the courts at present. CHAPTER XII ONE of the reasons why Tom's mind had drifted away from its secret troubles was, that it had found a new and weighty matter to interest itself about. Becky Thatcher had stopped coming to school. Tom had struggled with his pride a few days, and tried to "whistle her down the wind," but failed. He began to find himself hanging around her father's house, nights, and feeling very miserable. She was ill. What if she should die! There was distraction in the thought. He no longer took an interest in war, nor even in piracy. The charm of life was gone; there was nothing but dreariness left. He put his hoop away, and his bat; there was no joy in them any more. His aunt was concerned. She began to try all manner of remedies on him. She was one of those people who are infatuated with patent medicines and all new-fangled methods of producing health or mending it. She was an inveterate experimenter in these things. When something fresh in this line came out she was in a fever, right away, to try it; not on herself, for she was never ailing, but on anybody else that came handy. She was a subscriber for all the "Health" periodicals and phrenological frauds; and the solemn ignorance they were inflated with was breath to her nostrils. All the "rot" they contained about ventilation, and how to go to bed, and how to get up, and what to eat, and what to drink, and how much exercise to take, and what frame of mind to keep one's self in, and what sort of clothing to wear, was all gospel to her, and she never observed that her health-journals of the current month customarily upset everything they had recommended the month before. She was as simple-hearted and honest as the day was long, and so she was an easy victim. She gathered together her quack periodicals and her quack medicines, and thus armed with death, went about on her pale horse, metaphorically speaking, with "hell following after." But she never suspected that she was not an angel of healing and the balm of Gilead in disguise, to the suffering neighbors. The water treatment was new, now, and Tom's low condition was a windfall to her. She had him out at daylight every morning, stood him up in the woodshed and drowned him with a deluge of cold water; then she scrubbed him down with a towel like a file, and so brought him to; then she rolled him up in a wet sheet and put him away under blankets till she sweated his soul clean and "the yellow stains of it came through his pores"--as Tom said. Yet notwithstanding all this, the boy grew more and more melancholy and pale and dejected. She added hot baths, sitz baths, shower baths, and plunges. The boy remained as dismal as a hearse. She began to assist the water with a slim oatmeal diet and blister-plasters. She calculated his capacity as she would a jug's, and filled him up every day with quack cure-alls. Tom had become indifferent to persecution by this time. This phase filled the old lady's heart with consternation. This indifference must be broken up at any cost. Now she heard of Pain-killer for the first time. She ordered a lot at once. She tasted it and was filled with gratitude. It was simply fire in a liquid form. She dropped the water treatment and everything else, and pinned her faith to Pain-killer. She gave Tom a teaspoonful and watched with the deepest anxiety for the result. Her troubles were instantly at rest, her soul at peace again; for the "indifference" was broken up. The boy could not have shown a wilder, heartier interest, if she had built a fire under him. Tom felt that it was time to wake up; this sort of life might be romantic enough, in his blighted condition, but it was getting to have too little sentiment and too much distracting variety about it. So he thought over various plans for relief, and finally hit pon that of professing to be fond of Pain-killer. He asked for it so often that he became a nuisance, and his aunt ended by telling him to help himself and quit bothering her. If it had been Sid, she would have had no misgivings to alloy her delight; but since it was Tom, she watched the bottle clandestinely. She found that the medicine did really diminish, but it did not occur to her that the boy was mending the health of a crack in the sitting-room floor with it. One day Tom was in the act of dosing the crack when his aunt's yellow cat came along, purring, eying the teaspoon avariciously, and begging for a taste. Tom said: "Don't ask for it unless you want it, Peter." But Peter signified that he did want it. "You better make sure." Peter was sure. "Now you've asked for it, and I'll give it to you, because there ain't anything mean about me; but if you find you don't like it, you mustn't blame anybody but your own self." Peter was agreeable. So Tom pried his mouth open and poured down the Pain-killer. Peter sprang a couple of yards in the air, and then delivered a war-whoop and set off round and round the room, banging against furniture, upsetting flower-pots, and making general havoc. Next he rose on his hind feet and pranced around, in a frenzy of enjoyment, with his head over his shoulder and his voice proclaiming his unappeasable happiness. Then he went tearing around the house again spreading chaos and destruction in his path. Aunt Polly entered in time to see him throw a few double summersets, deliver a final mighty hurrah, and sail through the open window, carrying the rest of the flower-pots with him. The old lady stood petrified with astonishment, peering over her glasses; Tom lay on the floor expiring with laughter. "Tom, what on earth ails that cat?" "I don't know, aunt," gasped the boy. "Why, I never see anything like it. What did make him act so?" "Deed I don't know, Aunt Polly; cats always act so when they're having a good time." "They do, do they?" There was something in the tone that made Tom apprehensive. "Yes'm. That is, I believe they do." "You DO?" "Yes'm." The old lady was bending down, Tom watching, with interest emphasized by anxiety. Too late he divined her "drift." The handle of the telltale teaspoon was visible under the bed-valance. Aunt Polly took it, held it up. Tom winced, and dropped his eyes. Aunt Polly raised him by the usual handle--his ear--and cracked his head soundly with her thimble. "Now, sir, what did you want to treat that poor dumb beast so, for?" "I done it out of pity for him--because he hadn't any aunt." "Hadn't any aunt!--you numskull. What has that got to do with it?" "Heaps. Because if he'd had one she'd a burnt him out herself! She'd a roasted his bowels out of him 'thout any more feeling than if he was a human!" Aunt Polly felt a sudden pang of remorse. This was putting the thing in a new light; what was cruelty to a cat MIGHT be cruelty to a boy, too. She began to soften; she felt sorry. Her eyes watered a little, and she put her hand on Tom's head and said gently: "I was meaning for the best, Tom. And, Tom, it DID do you good." Tom looked up in her face with just a perceptible twinkle peeping through his gravity. "I know you was meaning for the best, aunty, and so was I with Peter. It done HIM good, too. I never see him get around so since--" "Oh, go 'long with you, Tom, before you aggravate me again. And you try and see if you can't be a good boy, for once, and you needn't take any more medicine." Tom reached school ahead of time. It was noticed that this strange thing had been occurring every day latterly. And now, as usual of late, he hung about the gate of the schoolyard instead of playing with his comrades. He was sick, he said, and he looked it. He tried to seem to be looking everywhere but whither he really was looking--down the road. Presently Jeff Thatcher hove in sight, and Tom's face lighted; he gazed a moment, and then turned sorrowfully away. When Jeff arrived, Tom accosted him; and "led up" warily to opportunities for remark about Becky, but the giddy lad never could see the bait. Tom watched and watched, hoping whenever a frisking frock came in sight, and hating the owner of it as soon as he saw she was not the right one. At last frocks ceased to appear, and he dropped hopelessly into the dumps; he entered the empty schoolhouse and sat down to suffer. Then one more frock passed in at the gate, and Tom's heart gave a great bound. The next instant he was out, and "going on" like an Indian; yelling, laughing, chasing boys, jumping over the fence at risk of life and limb, throwing handsprings, standing on his head--doing all the heroic things he could conceive of, and keeping a furtive eye out, all the while, to see if Becky Thatcher was noticing. But she seemed to be unconscious of it all; she never looked. Could it be possible that she was not aware that he was there? He carried his exploits to her immediate vicinity; came war-whooping around, snatched a boy's cap, hurled it to the roof of the schoolhouse, broke through a group of boys, tumbling them in every direction, and fell sprawling, himself, under Becky's nose, almost upsetting her--and she turned, with her nose in the air, and he heard her say: "Mf! some people think they're mighty smart--always showing off!" Tom's cheeks burned. He gathered himself up and sneaked off, crushed and crestfallen. CHAPTER XIII TOM'S mind was made up now. He was gloomy and desperate. He was a forsaken, friendless boy, he said; nobody loved him; when they found out what they had driven him to, perhaps they would be sorry; he had tried to do right and get along, but they would not let him; since nothing would do them but to be rid of him, let it be so; and let them blame HIM for the consequences--why shouldn't they? What right had the friendless to complain? Yes, they had forced him to it at last: he would lead a life of crime. There was no choice. By this time he was far down Meadow Lane, and the bell for school to "take up" tinkled faintly upon his ear. He sobbed, now, to think he should never, never hear that old familiar sound any more--it was very hard, but it was forced on him; since he was driven out into the cold world, he must submit--but he forgave them. Then the sobs came thick and fast. Just at this point he met his soul's sworn comrade, Joe Harper --hard-eyed, and with evidently a great and dismal purpose in his heart. Plainly here were "two souls with but a single thought." Tom, wiping his eyes with his sleeve, began to blubber out something about a resolution to escape from hard usage and lack of sympathy at home by roaming abroad into the great world never to return; and ended by hoping that Joe would not forget him. But it transpired that this was a request which Joe had just been going to make of Tom, and had come to hunt him up for that purpose. His mother had whipped him for drinking some cream which he had never tasted and knew nothing about; it was plain that she was tired of him and wished him to go; if she felt that way, there was nothing for him to do but succumb; he hoped she would be happy, and never regret having driven her poor boy out into the unfeeling world to suffer and die. As the two boys walked sorrowing along, they made a new compact to stand by each other and be brothers and never separate till death relieved them of their troubles. Then they began to lay their plans. Joe was for being a hermit, and living on crusts in a remote cave, and dying, some time, of cold and want and grief; but after listening to Tom, he conceded that there were some conspicuous advantages about a life of crime, and so he consented to be a pirate. Three miles below St. Petersburg, at a point where the Mississippi River was a trifle over a mile wide, there was a long, narrow, wooded island, with a shallow bar at the head of it, and this offered well as a rendezvous. It was not inhabited; it lay far over toward the further shore, abreast a dense and almost wholly unpeopled forest. So Jackson's Island was chosen. Who were to be the subjects of their piracies was a matter that did not occur to them. Then they hunted up Huckleberry Finn, and he joined them promptly, for all careers were one to him; he was indifferent. They presently separated to meet at a lonely spot on the river-bank two miles above the village at the favorite hour--which was midnight. There was a small log raft there which they meant to capture. Each would bring hooks and lines, and such provision as he could steal in the most dark and mysterious way--as became outlaws. And before the afternoon was done, they had all managed to enjoy the sweet glory of spreading the fact that pretty soon the town would "hear something." All who got this vague hint were cautioned to "be mum and wait." About midnight Tom arrived with a boiled ham and a few trifles, and stopped in a dense undergrowth on a small bluff overlooking the meeting-place. It was starlight, and very still. The mighty river lay like an ocean at rest. Tom listened a moment, but no sound disturbed the quiet. Then he gave a low, distinct whistle. It was answered from under the bluff. Tom whistled twice more; these signals were answered in the same way. Then a guarded voice said: "Who goes there?" "Tom Sawyer, the Black Avenger of the Spanish Main. Name your names." "Huck Finn the Red-Handed, and Joe Harper the Terror of the Seas." Tom had furnished these titles, from his favorite literature. "'Tis well. Give the countersign." Two hoarse whispers delivered the same awful word simultaneously to the brooding night: "BLOOD!" Then Tom tumbled his ham over the bluff and let himself down after it, tearing both skin and clothes to some extent in the effort. There was an easy, comfortable path along the shore under the bluff, but it lacked the advantages of difficulty and danger so valued by a pirate. The Terror of the Seas had brought a side of bacon, and had about worn himself out with getting it there. Finn the Red-Handed had stolen a skillet and a quantity of half-cured leaf tobacco, and had also brought a few corn-cobs to make pipes with. But none of the pirates smoked or "chewed" but himself. The Black Avenger of the Spanish Main said it would never do to start without some fire. That was a wise thought; matches were hardly known there in that day. They saw a fire smouldering upon a great raft a hundred yards above, and they went stealthily thither and helped themselves to a chunk. They made an imposing adventure of it, saying, "Hist!" every now and then, and suddenly halting with finger on lip; moving with hands on imaginary dagger-hilts; and giving orders in dismal whispers that if "the foe" stirred, to "let him have it to the hilt," because "dead men tell no tales." They knew well enough that the raftsmen were all down at the village laying in stores or having a spree, but still that was no excuse for their conducting this thing in an unpiratical way. They shoved off, presently, Tom in command, Huck at the after oar and Joe at the forward. Tom stood amidships, gloomy-browed, and with folded arms, and gave his orders in a low, stern whisper: "Luff, and bring her to the wind!" "Aye-aye, sir!" "Steady, steady-y-y-y!" "Steady it is, sir!" "Let her go off a point!" "Point it is, sir!" As the boys steadily and monotonously drove the raft toward mid-stream it was no doubt understood that these orders were given only for "style," and were not intended to mean anything in particular. "What sail's she carrying?" "Courses, tops'ls, and flying-jib, sir." "Send the r'yals up! Lay out aloft, there, half a dozen of ye --foretopmaststuns'l! Lively, now!" "Aye-aye, sir!" "Shake out that maintogalans'l! Sheets and braces! NOW my hearties!" "Aye-aye, sir!" "Hellum-a-lee--hard a port! Stand by to meet her when she comes! Port, port! NOW, men! With a will! Stead-y-y-y!" "Steady it is, sir!" The raft drew beyond the middle of the river; the boys pointed her head right, and then lay on their oars. The river was not high, so there was not more than a two or three mile current. Hardly a word was said during the next three-quarters of an hour. Now the raft was passing before the distant town. Two or three glimmering lights showed where it lay, peacefully sleeping, beyond the vague vast sweep of star-gemmed water, unconscious of the tremendous event that was happening. The Black Avenger stood still with folded arms, "looking his last" upon the scene of his former joys and his later sufferings, and wishing "she" could see him now, abroad on the wild sea, facing peril and death with dauntless heart, going to his doom with a grim smile on his lips. It was but a small strain on his imagination to remove Jackson's Island beyond eyeshot of the village, and so he "looked his last" with a broken and satisfied heart. The other pirates were looking their last, too; and they all looked so long that they came near letting the current drift them out of the range of the island. But they discovered the danger in time, and made shift to avert it. About two o'clock in the morning the raft grounded on the bar two hundred yards above the head of the island, and they waded back and forth until they had landed their freight. Part of the little raft's belongings consisted of an old sail, and this they spread over a nook in the bushes for a tent to shelter their provisions; but they themselves would sleep in the open air in good weather, as became outlaws. They built a fire against the side of a great log twenty or thirty steps within the sombre depths of the forest, and then cooked some bacon in the frying-pan for supper, and used up half of the corn "pone" stock they had brought. It seemed glorious sport to be feasting in that wild, free way in the virgin forest of an unexplored and uninhabited island, far from the haunts of men, and they said they never would return to civilization. The climbing fire lit up their faces and threw its ruddy glare upon the pillared tree-trunks of their forest temple, and upon the varnished foliage and festooning vines. When the last crisp slice of bacon was gone, and the last allowance of corn pone devoured, the boys stretched themselves out on the grass, filled with contentment. They could have found a cooler place, but they would not deny themselves such a romantic feature as the roasting camp-fire. "AIN'T it gay?" said Joe. "It's NUTS!" said Tom. "What would the boys say if they could see us?" "Say? Well, they'd just die to be here--hey, Hucky!" "I reckon so," said Huckleberry; "anyways, I'm suited. I don't want nothing better'n this. I don't ever get enough to eat, gen'ally--and here they can't come and pick at a feller and bullyrag him so." "It's just the life for me," said Tom. "You don't have to get up, mornings, and you don't have to go to school, and wash, and all that blame foolishness. You see a pirate don't have to do ANYTHING, Joe, when he's ashore, but a hermit HE has to be praying considerable, and then he don't have any fun, anyway, all by himself that way." "Oh yes, that's so," said Joe, "but I hadn't thought much about it, you know. I'd a good deal rather be a pirate, now that I've tried it." "You see," said Tom, "people don't go much on hermits, nowadays, like they used to in old times, but a pirate's always respected. And a hermit's got to sleep on the hardest place he can find, and put sackcloth and ashes on his head, and stand out in the rain, and--" "What does he put sackcloth and ashes on his head for?" inquired Huck. "I dono. But they've GOT to do it. Hermits always do. You'd have to do that if you was a hermit." "Dern'd if I would," said Huck. "Well, what would you do?" "I dono. But I wouldn't do that." "Why, Huck, you'd HAVE to. How'd you get around it?" "Why, I just wouldn't stand it. I'd run away." "Run away! Well, you WOULD be a nice old slouch of a hermit. You'd be a disgrace." The Red-Handed made no response, being better employed. He had finished gouging out a cob, and now he fitted a weed stem to it, loaded it with tobacco, and was pressing a coal to the charge and blowing a cloud of fragrant smoke--he was in the full bloom of luxurious contentment. The other pirates envied him this majestic vice, and secretly resolved to acquire it shortly. Presently Huck said: "What does pirates have to do?" Tom said: "Oh, they have just a bully time--take ships and burn them, and get the money and bury it in awful places in their island where there's ghosts and things to watch it, and kill everybody in the ships--make 'em walk a plank." "And they carry the women to the island," said Joe; "they don't kill the women." "No," assented Tom, "they don't kill the women--they're too noble. And the women's always beautiful, too. "And don't they wear the bulliest clothes! Oh no! All gold and silver and di'monds," said Joe, with enthusiasm. "Who?" said Huck. "Why, the pirates." Huck scanned his own clothing forlornly. "I reckon I ain't dressed fitten for a pirate," said he, with a regretful pathos in his voice; "but I ain't got none but these." But the other boys told him the fine clothes would come fast enough, after they should have begun their adventures. They made him understand that his poor rags would do to begin with, though it was customary for wealthy pirates to start with a proper wardrobe. Gradually their talk died out and drowsiness began to steal upon the eyelids of the little waifs. The pipe dropped from the fingers of the Red-Handed, and he slept the sleep of the conscience-free and the weary. The Terror of the Seas and the Black Avenger of the Spanish Main had more difficulty in getting to sleep. They said their prayers inwardly, and lying down, since there was nobody there with authority to make them kneel and recite aloud; in truth, they had a mind not to say them at all, but they were afraid to proceed to such lengths as that, lest they might call down a sudden and special thunderbolt from heaven. Then at once they reached and hovered upon the imminent verge of sleep--but an intruder came, now, that would not "down." It was conscience. They began to feel a vague fear that they had been doing wrong to run away; and next they thought of the stolen meat, and then the real torture came. They tried to argue it away by reminding conscience that they had purloined sweetmeats and apples scores of times; but conscience was not to be appeased by such thin plausibilities; it seemed to them, in the end, that there was no getting around the stubborn fact that taking sweetmeats was only "hooking," while taking bacon and hams and such valuables was plain simple stealing--and there was a command against that in the Bible. So they inwardly resolved that so long as they remained in the business, their piracies should not again be sullied with the crime of stealing. Then conscience granted a truce, and these curiously inconsistent pirates fell peacefully to sleep. CHAPTER XIV WHEN Tom awoke in the morning, he wondered where he was. He sat up and rubbed his eyes and looked around. Then he comprehended. It was the cool gray dawn, and there was a delicious sense of repose and peace in the deep pervading calm and silence of the woods. Not a leaf stirred; not a sound obtruded upon great Nature's meditation. Beaded dewdrops stood upon the leaves and grasses. A white layer of ashes covered the fire, and a thin blue breath of smoke rose straight into the air. Joe and Huck still slept. Now, far away in the woods a bird called; another answered; presently the hammering of a woodpecker was heard. Gradually the cool dim gray of the morning whitened, and as gradually sounds multiplied and life manifested itself. The marvel of Nature shaking off sleep and going to work unfolded itself to the musing boy. A little green worm came crawling over a dewy leaf, lifting two-thirds of his body into the air from time to time and "sniffing around," then proceeding again--for he was measuring, Tom said; and when the worm approached him, of its own accord, he sat as still as a stone, with his hopes rising and falling, by turns, as the creature still came toward him or seemed inclined to go elsewhere; and when at last it considered a painful moment with its curved body in the air and then came decisively down upon Tom's leg and began a journey over him, his whole heart was glad--for that meant that he was going to have a new suit of clothes--without the shadow of a doubt a gaudy piratical uniform. Now a procession of ants appeared, from nowhere in particular, and went about their labors; one struggled manfully by with a dead spider five times as big as itself in its arms, and lugged it straight up a tree-trunk. A brown spotted lady-bug climbed the dizzy height of a grass blade, and Tom bent down close to it and said, "Lady-bug, lady-bug, fly away home, your house is on fire, your children's alone," and she took wing and went off to see about it --which did not surprise the boy, for he knew of old that this insect was credulous about conflagrations, and he had practised upon its simplicity more than once. A tumblebug came next, heaving sturdily at its ball, and Tom touched the creature, to see it shut its legs against its body and pretend to be dead. The birds were fairly rioting by this time. A catbird, the Northern mocker, lit in a tree over Tom's head, and trilled out her imitations of her neighbors in a rapture of enjoyment; then a shrill jay swept down, a flash of blue flame, and stopped on a twig almost within the boy's reach, cocked his head to one side and eyed the strangers with a consuming curiosity; a gray squirrel and a big fellow of the "fox" kind came skurrying along, sitting up at intervals to inspect and chatter at the boys, for the wild things had probably never seen a human being before and scarcely knew whether to be afraid or not. All Nature was wide awake and stirring, now; long lances of sunlight pierced down through the dense foliage far and near, and a few butterflies came fluttering upon the scene. Tom stirred up the other pirates and they all clattered away with a shout, and in a minute or two were stripped and chasing after and tumbling over each other in the shallow limpid water of the white sandbar. They felt no longing for the little village sleeping in the distance beyond the majestic waste of water. A vagrant current or a slight rise in the river had carried off their raft, but this only gratified them, since its going was something like burning the bridge between them and civilization. They came back to camp wonderfully refreshed, glad-hearted, and ravenous; and they soon had the camp-fire blazing up again. Huck found a spring of clear cold water close by, and the boys made cups of broad oak or hickory leaves, and felt that water, sweetened with such a wildwood charm as that, would be a good enough substitute for coffee. While Joe was slicing bacon for breakfast, Tom and Huck asked him to hold on a minute; they stepped to a promising nook in the river-bank and threw in their lines; almost immediately they had reward. Joe had not had time to get impatient before they were back again with some handsome bass, a couple of sun-perch and a small catfish--provisions enough for quite a family. They fried the fish with the bacon, and were astonished; for no fish had ever seemed so delicious before. They did not know that the quicker a fresh-water fish is on the fire after he is caught the better he is; and they reflected little upon what a sauce open-air sleeping, open-air exercise, bathing, and a large ingredient of hunger make, too. They lay around in the shade, after breakfast, while Huck had a smoke, and then went off through the woods on an exploring expedition. They tramped gayly along, over decaying logs, through tangled underbrush, among solemn monarchs of the forest, hung from their crowns to the ground with a drooping regalia of grape-vines. Now and then they came upon snug nooks carpeted with grass and jeweled with flowers. They found plenty of things to be delighted with, but nothing to be astonished at. They discovered that the island was about three miles long and a quarter of a mile wide, and that the shore it lay closest to was only separated from it by a narrow channel hardly two hundred yards wide. They took a swim about every hour, so it was close upon the middle of the afternoon when they got back to camp. They were too hungry to stop to fish, but they fared sumptuously upon cold ham, and then threw themselves down in the shade to talk. But the talk soon began to drag, and then died. The stillness, the solemnity that brooded in the woods, and the sense of loneliness, began to tell upon the spirits of the boys. They fell to thinking. A sort of undefined longing crept upon them. This took dim shape, presently--it was budding homesickness. Even Finn the Red-Handed was dreaming of his doorsteps and empty hogsheads. But they were all ashamed of their weakness, and none was brave enough to speak his thought. For some time, now, the boys had been dully conscious of a peculiar sound in the distance, just as one sometimes is of the ticking of a clock which he takes no distinct note of. But now this mysterious sound became more pronounced, and forced a recognition. The boys started, glanced at each other, and then each assumed a listening attitude. There was a long silence, profound and unbroken; then a deep, sullen boom came floating down out of the distance. "What is it!" exclaimed Joe, under his breath. "I wonder," said Tom in a whisper. "'Tain't thunder," said Huckleberry, in an awed tone, "becuz thunder--" "Hark!" said Tom. "Listen--don't talk." They waited a time that seemed an age, and then the same muffled boom troubled the solemn hush. "Let's go and see." They sprang to their feet and hurried to the shore toward the town. They parted the bushes on the bank and peered out over the water. The little steam ferryboat was about a mile below the village, drifting with the current. Her broad deck seemed crowded with people. There were a great many skiffs rowing about or floating with the stream in the neighborhood of the ferryboat, but the boys could not determine what the men in them were doing. Presently a great jet of white smoke burst from the ferryboat's side, and as it expanded and rose in a lazy cloud, that same dull throb of sound was borne to the listeners again. "I know now!" exclaimed Tom; "somebody's drownded!" "That's it!" said Huck; "they done that last summer, when Bill Turner got drownded; they shoot a cannon over the water, and that makes him come up to the top. Yes, and they take loaves of bread and put quicksilver in 'em and set 'em afloat, and wherever there's anybody that's drownded, they'll float right there and stop." "Yes, I've heard about that," said Joe. "I wonder what makes the bread do that." "Oh, it ain't the bread, so much," said Tom; "I reckon it's mostly what they SAY over it before they start it out." "But they don't say anything over it," said Huck. "I've seen 'em and they don't." "Well, that's funny," said Tom. "But maybe they say it to themselves. Of COURSE they do. Anybody might know that." The other boys agreed that there was reason in what Tom said, because an ignorant lump of bread, uninstructed by an incantation, could not be expected to act very intelligently when set upon an errand of such gravity. "By jings, I wish I was over there, now," said Joe. "I do too" said Huck "I'd give heaps to know who it is." The boys still listened and watched. Presently a revealing thought flashed through Tom's mind, and he exclaimed: "Boys, I know who's drownded--it's us!" They felt like heroes in an instant. Here was a gorgeous triumph; they were missed; they were mourned; hearts were breaking on their account; tears were being shed; accusing memories of unkindness to these poor lost lads were rising up, and unavailing regrets and remorse were being indulged; and best of all, the departed were the talk of the whole town, and the envy of all the boys, as far as this dazzling notoriety was concerned. This was fine. It was worth while to be a pirate, after all. As twilight drew on, the ferryboat went back to her accustomed business and the skiffs disappeared. The pirates returned to camp. They were jubilant with vanity over their new grandeur and the illustrious trouble they were making. They caught fish, cooked supper and ate it, and then fell to guessing at what the village was thinking and saying about them; and the pictures they drew of the public distress on their account were gratifying to look upon--from their point of view. But when the shadows of night closed them in, they gradually ceased to talk, and sat gazing into the fire, with their minds evidently wandering elsewhere. The excitement was gone, now, and Tom and Joe could not keep back thoughts of certain persons at home who were not enjoying this fine frolic as much as they were. Misgivings came; they grew troubled and unhappy; a sigh or two escaped, unawares. By and by Joe timidly ventured upon a roundabout "feeler" as to how the others might look upon a return to civilization--not right now, but-- Tom withered him with derision! Huck, being uncommitted as yet, joined in with Tom, and the waverer quickly "explained," and was glad to get out of the scrape with as little taint of chicken-hearted homesickness clinging to his garments as he could. Mutiny was effectually laid to rest for the moment. As the night deepened, Huck began to nod, and presently to snore. Joe followed next. Tom lay upon his elbow motionless, for some time, watching the two intently. At last he got up cautiously, on his knees, and went searching among the grass and the flickering reflections flung by the camp-fire. He picked up and inspected several large semi-cylinders of the thin white bark of a sycamore, and finally chose two which seemed to suit him. Then he knelt by the fire and painfully wrote something upon each of these with his "red keel"; one he rolled up and put in his jacket pocket, and the other he put in Joe's hat and removed it to a little distance from the owner. And he also put into the hat certain schoolboy treasures of almost inestimable value--among them a lump of chalk, an India-rubber ball, three fishhooks, and one of that kind of marbles known as a "sure 'nough crystal." Then he tiptoed his way cautiously among the trees till he felt that he was out of hearing, and straightway broke into a keen run in the direction of the sandbar. CHAPTER XV A FEW minutes later Tom was in the shoal water of the bar, wading toward the Illinois shore. Before the depth reached his middle he was half-way over; the current would permit no more wading, now, so he struck out confidently to swim the remaining hundred yards. He swam quartering upstream, but still was swept downward rather faster than he had expected. However, he reached the shore finally, and drifted along till he found a low place and drew himself out. He put his hand on his jacket pocket, found his piece of bark safe, and then struck through the woods, following the shore, with streaming garments. Shortly before ten o'clock he came out into an open place opposite the village, and saw the ferryboat lying in the shadow of the trees and the high bank. Everything was quiet under the blinking stars. He crept down the bank, watching with all his eyes, slipped into the water, swam three or four strokes and climbed into the skiff that did "yawl" duty at the boat's stern. He laid himself down under the thwarts and waited, panting. Presently the cracked bell tapped and a voice gave the order to "cast off." A minute or two later the skiff's head was standing high up, against the boat's swell, and the voyage was begun. Tom felt happy in his success, for he knew it was the boat's last trip for the night. At the end of a long twelve or fifteen minutes the wheels stopped, and Tom slipped overboard and swam ashore in the dusk, landing fifty yards downstream, out of danger of possible stragglers. He flew along unfrequented alleys, and shortly found himself at his aunt's back fence. He climbed over, approached the "ell," and looked in at the sitting-room window, for a light was burning there. There sat Aunt Polly, Sid, Mary, and Joe Harper's mother, grouped together, talking. They were by the bed, and the bed was between them and the door. Tom went to the door and began to softly lift the latch; then he pressed gently and the door yielded a crack; he continued pushing cautiously, and quaking every time it creaked, till he judged he might squeeze through on his knees; so he put his head through and began, warily. "What makes the candle blow so?" said Aunt Polly. Tom hurried up. "Why, that door's open, I believe. Why, of course it is. No end of strange things now. Go 'long and shut it, Sid." Tom disappeared under the bed just in time. He lay and "breathed" himself for a time, and then crept to where he could almost touch his aunt's foot. "But as I was saying," said Aunt Polly, "he warn't BAD, so to say --only mischEEvous. Only just giddy, and harum-scarum, you know. He warn't any more responsible than a colt. HE never meant any harm, and he was the best-hearted boy that ever was"--and she began to cry. "It was just so with my Joe--always full of his devilment, and up to every kind of mischief, but he was just as unselfish and kind as he could be--and laws bless me, to think I went and whipped him for taking that cream, never once recollecting that I throwed it out myself because it was sour, and I never to see him again in this world, never, never, never, poor abused boy!" And Mrs. Harper sobbed as if her heart would break. "I hope Tom's better off where he is," said Sid, "but if he'd been better in some ways--" "SID!" Tom felt the glare of the old lady's eye, though he could not see it. "Not a word against my Tom, now that he's gone! God'll take care of HIM--never you trouble YOURself, sir! Oh, Mrs. Harper, I don't know how to give him up! I don't know how to give him up! He was such a comfort to me, although he tormented my old heart out of me, 'most." "The Lord giveth and the Lord hath taken away--Blessed be the name of the Lord! But it's so hard--Oh, it's so hard! Only last Saturday my Joe busted a firecracker right under my nose and I knocked him sprawling. Little did I know then, how soon--Oh, if it was to do over again I'd hug him and bless him for it." "Yes, yes, yes, I know just how you feel, Mrs. Harper, I know just exactly how you feel. No longer ago than yesterday noon, my Tom took and filled the cat full of Pain-killer, and I did think the cretur would tear the house down. And God forgive me, I cracked Tom's head with my thimble, poor boy, poor dead boy. But he's out of all his troubles now. And the last words I ever heard him say was to reproach--" But this memory was too much for the old lady, and she broke entirely down. Tom was snuffling, now, himself--and more in pity of himself than anybody else. He could hear Mary crying, and putting in a kindly word for him from time to time. He began to have a nobler opinion of himself than ever before. Still, he was sufficiently touched by his aunt's grief to long to rush out from under the bed and overwhelm her with joy--and the theatrical gorgeousness of the thing appealed strongly to his nature, too, but he resisted and lay still. He went on listening, and gathered by odds and ends that it was conjectured at first that the boys had got drowned while taking a swim; then the small raft had been missed; next, certain boys said the missing lads had promised that the village should "hear something" soon; the wise-heads had "put this and that together" and decided that the lads had gone off on that raft and would turn up at the next town below, presently; but toward noon the raft had been found, lodged against the Missouri shore some five or six miles below the village --and then hope perished; they must be drowned, else hunger would have driven them home by nightfall if not sooner. It was believed that the search for the bodies had been a fruitless effort merely because the drowning must have occurred in mid-channel, since the boys, being good swimmers, would otherwise have escaped to shore. This was Wednesday night. If the bodies continued missing until Sunday, all hope would be given over, and the funerals would be preached on that morning. Tom shuddered. Mrs. Harper gave a sobbing good-night and turned to go. Then with a mutual impulse the two bereaved women flung themselves into each other's arms and had a good, consoling cry, and then parted. Aunt Polly was tender far beyond her wont, in her good-night to Sid and Mary. Sid snuffled a bit and Mary went off crying with all her heart. Aunt Polly knelt down and prayed for Tom so touchingly, so appealingly, and with such measureless love in her words and her old trembling voice, that he was weltering in tears again, long before she was through. He had to keep still long after she went to bed, for she kept making broken-hearted ejaculations from time to time, tossing unrestfully, and turning over. But at last she was still, only moaning a little in her sleep. Now the boy stole out, rose gradually by the bedside, shaded the candle-light with his hand, and stood regarding her. His heart was full of pity for her. He took out his sycamore scroll and placed it by the candle. But something occurred to him, and he lingered considering. His face lighted with a happy solution of his thought; he put the bark hastily in his pocket. Then he bent over and kissed the faded lips, and straightway made his stealthy exit, latching the door behind him. He threaded his way back to the ferry landing, found nobody at large there, and walked boldly on board the boat, for he knew she was tenantless except that there was a watchman, who always turned in and slept like a graven image. He untied the skiff at the stern, slipped into it, and was soon rowing cautiously upstream. When he had pulled a mile above the village, he started quartering across and bent himself stoutly to his work. He hit the landing on the other side neatly, for this was a familiar bit of work to him. He was moved to capture the skiff, arguing that it might be considered a ship and therefore legitimate prey for a pirate, but he knew a thorough search would be made for it and that might end in revelations. So he stepped ashore and entered the woods. He sat down and took a long rest, torturing himself meanwhile to keep awake, and then started warily down the home-stretch. The night was far spent. It was broad daylight before he found himself fairly abreast the island bar. He rested again until the sun was well up and gilding the great river with its splendor, and then he plunged into the stream. A little later he paused, dripping, upon the threshold of the camp, and heard Joe say: "No, Tom's true-blue, Huck, and he'll come back. He won't desert. He knows that would be a disgrace to a pirate, and Tom's too proud for that sort of thing. He's up to something or other. Now I wonder what?" "Well, the things is ours, anyway, ain't they?" "Pretty near, but not yet, Huck. The writing says they are if he ain't back here to breakfast." "Which he is!" exclaimed Tom, with fine dramatic effect, stepping grandly into camp. A sumptuous breakfast of bacon and fish was shortly provided, and as the boys set to work upon it, Tom recounted (and adorned) his adventures. They were a vain and boastful company of heroes when the tale was done. Then Tom hid himself away in a shady nook to sleep till noon, and the other pirates got ready to fish and explore. CHAPTER XVI AFTER dinner all the gang turned out to hunt for turtle eggs on the bar. They went about poking sticks into the sand, and when they found a soft place they went down on their knees and dug with their hands. Sometimes they would take fifty or sixty eggs out of one hole. They were perfectly round white things a trifle smaller than an English walnut. They had a famous fried-egg feast that night, and another on Friday morning. After breakfast they went whooping and prancing out on the bar, and chased each other round and round, shedding clothes as they went, until they were naked, and then continued the frolic far away up the shoal water of the bar, against the stiff current, which latter tripped their legs from under them from time to time and greatly increased the fun. And now and then they stooped in a group and splashed water in each other's faces with their palms, gradually approaching each other, with averted faces to avoid the strangling sprays, and finally gripping and struggling till the best man ducked his neighbor, and then they all went under in a tangle of white legs and arms and came up blowing, sputtering, laughing, and gasping for breath at one and the same time. When they were well exhausted, they would run out and sprawl on the dry, hot sand, and lie there and cover themselves up with it, and by and by break for the water again and go through the original performance once more. Finally it occurred to them that their naked skin represented flesh-colored "tights" very fairly; so they drew a ring in the sand and had a circus--with three clowns in it, for none would yield this proudest post to his neighbor. Next they got their marbles and played "knucks" and "ring-taw" and "keeps" till that amusement grew stale. Then Joe and Huck had another swim, but Tom would not venture, because he found that in kicking off his trousers he had kicked his string of rattlesnake rattles off his ankle, and he wondered how he had escaped cramp so long without the protection of this mysterious charm. He did not venture again until he had found it, and by that time the other boys were tired and ready to rest. They gradually wandered apart, dropped into the "dumps," and fell to gazing longingly across the wide river to where the village lay drowsing in the sun. Tom found himself writing "BECKY" in the sand with his big toe; he scratched it out, and was angry with himself for his weakness. But he wrote it again, nevertheless; he could not help it. He erased it once more and then took himself out of temptation by driving the other boys together and joining them. But Joe's spirits had gone down almost beyond resurrection. He was so homesick that he could hardly endure the misery of it. The tears lay very near the surface. Huck was melancholy, too. Tom was downhearted, but tried hard not to show it. He had a secret which he was not ready to tell, yet, but if this mutinous depression was not broken up soon, he would have to bring it out. He said, with a great show of cheerfulness: "I bet there's been pirates on this island before, boys. We'll explore it again. They've hid treasures here somewhere. How'd you feel to light on a rotten chest full of gold and silver--hey?" But it roused only faint enthusiasm, which faded out, with no reply. Tom tried one or two other seductions; but they failed, too. It was discouraging work. Joe sat poking up the sand with a stick and looking very gloomy. Finally he said: "Oh, boys, let's give it up. I want to go home. It's so lonesome." "Oh no, Joe, you'll feel better by and by," said Tom. "Just think of the fishing that's here." "I don't care for fishing. I want to go home." "But, Joe, there ain't such another swimming-place anywhere." "Swimming's no good. I don't seem to care for it, somehow, when there ain't anybody to say I sha'n't go in. I mean to go home." "Oh, shucks! Baby! You want to see your mother, I reckon." "Yes, I DO want to see my mother--and you would, too, if you had one. I ain't any more baby than you are." And Joe snuffled a little. "Well, we'll let the cry-baby go home to his mother, won't we, Huck? Poor thing--does it want to see its mother? And so it shall. You like it here, don't you, Huck? We'll stay, won't we?" Huck said, "Y-e-s"--without any heart in it. "I'll never speak to you again as long as I live," said Joe, rising. "There now!" And he moved moodily away and began to dress himself. "Who cares!" said Tom. "Nobody wants you to. Go 'long home and get laughed at. Oh, you're a nice pirate. Huck and me ain't cry-babies. We'll stay, won't we, Huck? Let him go if he wants to. I reckon we can get along without him, per'aps." But Tom was uneasy, nevertheless, and was alarmed to see Joe go sullenly on with his dressing. And then it was discomforting to see Huck eying Joe's preparations so wistfully, and keeping up such an ominous silence. Presently, without a parting word, Joe began to wade off toward the Illinois shore. Tom's heart began to sink. He glanced at Huck. Huck could not bear the look, and dropped his eyes. Then he said: "I want to go, too, Tom. It was getting so lonesome anyway, and now it'll be worse. Let's us go, too, Tom." "I won't! You can all go, if you want to. I mean to stay." "Tom, I better go." "Well, go 'long--who's hendering you." Huck began to pick up his scattered clothes. He said: "Tom, I wisht you'd come, too. Now you think it over. We'll wait for you when we get to shore." "Well, you'll wait a blame long time, that's all." Huck started sorrowfully away, and Tom stood looking after him, with a strong desire tugging at his heart to yield his pride and go along too. He hoped the boys would stop, but they still waded slowly on. It suddenly dawned on Tom that it was become very lonely and still. He made one final struggle with his pride, and then darted after his comrades, yelling: "Wait! Wait! I want to tell you something!" They presently stopped and turned around. When he got to where they were, he began unfolding his secret, and they listened moodily till at last they saw the "point" he was driving at, and then they set up a war-whoop of applause and said it was "splendid!" and said if he had told them at first, they wouldn't have started away. He made a plausible excuse; but his real reason had been the fear that not even the secret would keep them with him any very great length of time, and so he had meant to hold it in reserve as a last seduction. The lads came gayly back and went at their sports again with a will, chattering all the time about Tom's stupendous plan and admiring the genius of it. After a dainty egg and fish dinner, Tom said he wanted to learn to smoke, now. Joe caught at the idea and said he would like to try, too. So Huck made pipes and filled them. These novices had never smoked anything before but cigars made of grape-vine, and they "bit" the tongue, and were not considered manly anyway. Now they stretched themselves out on their elbows and began to puff, charily, and with slender confidence. The smoke had an unpleasant taste, and they gagged a little, but Tom said: "Why, it's just as easy! If I'd a knowed this was all, I'd a learnt long ago." "So would I," said Joe. "It's just nothing." "Why, many a time I've looked at people smoking, and thought well I wish I could do that; but I never thought I could," said Tom. "That's just the way with me, hain't it, Huck? You've heard me talk just that way--haven't you, Huck? I'll leave it to Huck if I haven't." "Yes--heaps of times," said Huck. "Well, I have too," said Tom; "oh, hundreds of times. Once down by the slaughter-house. Don't you remember, Huck? Bob Tanner was there, and Johnny Miller, and Jeff Thatcher, when I said it. Don't you remember, Huck, 'bout me saying that?" "Yes, that's so," said Huck. "That was the day after I lost a white alley. No, 'twas the day before." "There--I told you so," said Tom. "Huck recollects it." "I bleeve I could smoke this pipe all day," said Joe. "I don't feel sick." "Neither do I," said Tom. "I could smoke it all day. But I bet you Jeff Thatcher couldn't." "Jeff Thatcher! Why, he'd keel over just with two draws. Just let him try it once. HE'D see!" "I bet he would. And Johnny Miller--I wish could see Johnny Miller tackle it once." "Oh, don't I!" said Joe. "Why, I bet you Johnny Miller couldn't any more do this than nothing. Just one little snifter would fetch HIM." "'Deed it would, Joe. Say--I wish the boys could see us now." "So do I." "Say--boys, don't say anything about it, and some time when they're around, I'll come up to you and say, 'Joe, got a pipe? I want a smoke.' And you'll say, kind of careless like, as if it warn't anything, you'll say, 'Yes, I got my OLD pipe, and another one, but my tobacker ain't very good.' And I'll say, 'Oh, that's all right, if it's STRONG enough.' And then you'll out with the pipes, and we'll light up just as ca'm, and then just see 'em look!" "By jings, that'll be gay, Tom! I wish it was NOW!" "So do I! And when we tell 'em we learned when we was off pirating, won't they wish they'd been along?" "Oh, I reckon not! I'll just BET they will!" So the talk ran on. But presently it began to flag a trifle, and grow disjointed. The silences widened; the expectoration marvellously increased. Every pore inside the boys' cheeks became a spouting fountain; they could scarcely bail out the cellars under their tongues fast enough to prevent an inundation; little overflowings down their throats occurred in spite of all they could do, and sudden retchings followed every time. Both boys were looking very pale and miserable, now. Joe's pipe dropped from his nerveless fingers. Tom's followed. Both fountains were going furiously and both pumps bailing with might and main. Joe said feebly: "I've lost my knife. I reckon I better go and find it." Tom said, with quivering lips and halting utterance: "I'll help you. You go over that way and I'll hunt around by the spring. No, you needn't come, Huck--we can find it." So Huck sat down again, and waited an hour. Then he found it lonesome, and went to find his comrades. They were wide apart in the woods, both very pale, both fast asleep. But something informed him that if they had had any trouble they had got rid of it. They were not talkative at supper that night. They had a humble look, and when Huck prepared his pipe after the meal and was going to prepare theirs, they said no, they were not feeling very well--something they ate at dinner had disagreed with them. About midnight Joe awoke, and called the boys. There was a brooding oppressiveness in the air that seemed to bode something. The boys huddled themselves together and sought the friendly companionship of the fire, though the dull dead heat of the breathless atmosphere was stifling. They sat still, intent and waiting. The solemn hush continued. Beyond the light of the fire everything was swallowed up in the blackness of darkness. Presently there came a quivering glow that vaguely revealed the foliage for a moment and then vanished. By and by another came, a little stronger. Then another. Then a faint moan came sighing through the branches of the forest and the boys felt a fleeting breath upon their cheeks, and shuddered with the fancy that the Spirit of the Night had gone by. There was a pause. Now a weird flash turned night into day and showed every little grass-blade, separate and distinct, that grew about their feet. And it showed three white, startled faces, too. A deep peal of thunder went rolling and tumbling down the heavens and lost itself in sullen rumblings in the distance. A sweep of chilly air passed by, rustling all the leaves and snowing the flaky ashes broadcast about the fire. Another fierce glare lit up the forest and an instant crash followed that seemed to rend the tree-tops right over the boys' heads. They clung together in terror, in the thick gloom that followed. A few big rain-drops fell pattering upon the leaves. "Quick! boys, go for the tent!" exclaimed Tom. They sprang away, stumbling over roots and among vines in the dark, no two plunging in the same direction. A furious blast roared through the trees, making everything sing as it went. One blinding flash after another came, and peal on peal of deafening thunder. And now a drenching rain poured down and the rising hurricane drove it in sheets along the ground. The boys cried out to each other, but the roaring wind and the booming thunder-blasts drowned their voices utterly. However, one by one they straggled in at last and took shelter under the tent, cold, scared, and streaming with water; but to have company in misery seemed something to be grateful for. They could not talk, the old sail flapped so furiously, even if the other noises would have allowed them. The tempest rose higher and higher, and presently the sail tore loose from its fastenings and went winging away on the blast. The boys seized each others' hands and fled, with many tumblings and bruises, to the shelter of a great oak that stood upon the river-bank. Now the battle was at its highest. Under the ceaseless conflagration of lightning that flamed in the skies, everything below stood out in clean-cut and shadowless distinctness: the bending trees, the billowy river, white with foam, the driving spray of spume-flakes, the dim outlines of the high bluffs on the other side, glimpsed through the drifting cloud-rack and the slanting veil of rain. Every little while some giant tree yielded the fight and fell crashing through the younger growth; and the unflagging thunder-peals came now in ear-splitting explosive bursts, keen and sharp, and unspeakably appalling. The storm culminated in one matchless effort that seemed likely to tear the island to pieces, burn it up, drown it to the tree-tops, blow it away, and deafen every creature in it, all at one and the same moment. It was a wild night for homeless young heads to be out in. But at last the battle was done, and the forces retired with weaker and weaker threatenings and grumblings, and peace resumed her sway. The boys went back to camp, a good deal awed; but they found there was still something to be thankful for, because the great sycamore, the shelter of their beds, was a ruin, now, blasted by the lightnings, and they were not under it when the catastrophe happened. Everything in camp was drenched, the camp-fire as well; for they were but heedless lads, like their generation, and had made no provision against rain. Here was matter for dismay, for they were soaked through and chilled. They were eloquent in their distress; but they presently discovered that the fire had eaten so far up under the great log it had been built against (where it curved upward and separated itself from the ground), that a handbreadth or so of it had escaped wetting; so they patiently wrought until, with shreds and bark gathered from the under sides of sheltered logs, they coaxed the fire to burn again. Then they piled on great dead boughs till they had a roaring furnace, and were glad-hearted once more. They dried their boiled ham and had a feast, and after that they sat by the fire and expanded and glorified their midnight adventure until morning, for there was not a dry spot to sleep on, anywhere around. As the sun began to steal in upon the boys, drowsiness came over them, and they went out on the sandbar and lay down to sleep. They got scorched out by and by, and drearily set about getting breakfast. After the meal they felt rusty, and stiff-jointed, and a little homesick once more. Tom saw the signs, and fell to cheering up the pirates as well as he could. But they cared nothing for marbles, or circus, or swimming, or anything. He reminded them of the imposing secret, and raised a ray of cheer. While it lasted, he got them interested in a new device. This was to knock off being pirates, for a while, and be Indians for a change. They were attracted by this idea; so it was not long before they were stripped, and striped from head to heel with black mud, like so many zebras--all of them chiefs, of course--and then they went tearing through the woods to attack an English settlement. By and by they separated into three hostile tribes, and darted upon each other from ambush with dreadful war-whoops, and killed and scalped each other by thousands. It was a gory day. Consequently it was an extremely satisfactory one. They assembled in camp toward supper-time, hungry and happy; but now a difficulty arose--hostile Indians could not break the bread of hospitality together without first making peace, and this was a simple impossibility without smoking a pipe of peace. There was no other process that ever they had heard of. Two of the savages almost wished they had remained pirates. However, there was no other way; so with such show of cheerfulness as they could muster they called for the pipe and took their whiff as it passed, in due form. And behold, they were glad they had gone into savagery, for they had gained something; they found that they could now smoke a little without having to go and hunt for a lost knife; they did not get sick enough to be seriously uncomfortable. They were not likely to fool away this high promise for lack of effort. No, they practised cautiously, after supper, with right fair success, and so they spent a jubilant evening. They were prouder and happier in their new acquirement than they would have been in the scalping and skinning of the Six Nations. We will leave them to smoke and chatter and brag, since we have no further use for them at present. CHAPTER XVII BUT there was no hilarity in the little town that same tranquil Saturday afternoon. The Harpers, and Aunt Polly's family, were being put into mourning, with great grief and many tears. An unusual quiet possessed the village, although it was ordinarily quiet enough, in all conscience. The villagers conducted their concerns with an absent air, and talked little; but they sighed often. The Saturday holiday seemed a burden to the children. They had no heart in their sports, and gradually gave them up. In the afternoon Becky Thatcher found herself moping about the deserted schoolhouse yard, and feeling very melancholy. But she found nothing there to comfort her. She soliloquized: "Oh, if I only had a brass andiron-knob again! But I haven't got anything now to remember him by." And she choked back a little sob. Presently she stopped, and said to herself: "It was right here. Oh, if it was to do over again, I wouldn't say that--I wouldn't say it for the whole world. But he's gone now; I'll never, never, never see him any more." This thought broke her down, and she wandered away, with tears rolling down her cheeks. Then quite a group of boys and girls--playmates of Tom's and Joe's--came by, and stood looking over the paling fence and talking in reverent tones of how Tom did so-and-so the last time they saw him, and how Joe said this and that small trifle (pregnant with awful prophecy, as they could easily see now!)--and each speaker pointed out the exact spot where the lost lads stood at the time, and then added something like "and I was a-standing just so--just as I am now, and as if you was him--I was as close as that--and he smiled, just this way--and then something seemed to go all over me, like--awful, you know--and I never thought what it meant, of course, but I can see now!" Then there was a dispute about who saw the dead boys last in life, and many claimed that dismal distinction, and offered evidences, more or less tampered with by the witness; and when it was ultimately decided who DID see the departed last, and exchanged the last words with them, the lucky parties took upon themselves a sort of sacred importance, and were gaped at and envied by all the rest. One poor chap, who had no other grandeur to offer, said with tolerably manifest pride in the remembrance: "Well, Tom Sawyer he licked me once." But that bid for glory was a failure. Most of the boys could say that, and so that cheapened the distinction too much. The group loitered away, still recalling memories of the lost heroes, in awed voices. When the Sunday-school hour was finished, the next morning, the bell began to toll, instead of ringing in the usual way. It was a very still Sabbath, and the mournful sound seemed in keeping with the musing hush that lay upon nature. The villagers began to gather, loitering a moment in the vestibule to converse in whispers about the sad event. But there was no whispering in the house; only the funereal rustling of dresses as the women gathered to their seats disturbed the silence there. None could remember when the little church had been so full before. There was finally a waiting pause, an expectant dumbness, and then Aunt Polly entered, followed by Sid and Mary, and they by the Harper family, all in deep black, and the whole congregation, the old minister as well, rose reverently and stood until the mourners were seated in the front pew. There was another communing silence, broken at intervals by muffled sobs, and then the minister spread his hands abroad and prayed. A moving hymn was sung, and the text followed: "I am the Resurrection and the Life." As the service proceeded, the clergyman drew such pictures of the graces, the winning ways, and the rare promise of the lost lads that every soul there, thinking he recognized these pictures, felt a pang in remembering that he had persistently blinded himself to them always before, and had as persistently seen only faults and flaws in the poor boys. The minister related many a touching incident in the lives of the departed, too, which illustrated their sweet, generous natures, and the people could easily see, now, how noble and beautiful those episodes were, and remembered with grief that at the time they occurred they had seemed rank rascalities, well deserving of the cowhide. The congregation became more and more moved, as the pathetic tale went on, till at last the whole company broke down and joined the weeping mourners in a chorus of anguished sobs, the preacher himself giving way to his feelings, and crying in the pulpit. There was a rustle in the gallery, which nobody noticed; a moment later the church door creaked; the minister raised his streaming eyes above his handkerchief, and stood transfixed! First one and then another pair of eyes followed the minister's, and then almost with one impulse the congregation rose and stared while the three dead boys came marching up the aisle, Tom in the lead, Joe next, and Huck, a ruin of drooping rags, sneaking sheepishly in the rear! They had been hid in the unused gallery listening to their own funeral sermon! Aunt Polly, Mary, and the Harpers threw themselves upon their restored ones, smothered them with kisses and poured out thanksgivings, while poor Huck stood abashed and uncomfortable, not knowing exactly what to do or where to hide from so many unwelcoming eyes. He wavered, and started to slink away, but Tom seized him and said: "Aunt Polly, it ain't fair. Somebody's got to be glad to see Huck." "And so they shall. I'm glad to see him, poor motherless thing!" And the loving attentions Aunt Polly lavished upon him were the one thing capable of making him more uncomfortable than he was before. Suddenly the minister shouted at the top of his voice: "Praise God from whom all blessings flow--SING!--and put your hearts in it!" And they did. Old Hundred swelled up with a triumphant burst, and while it shook the rafters Tom Sawyer the Pirate looked around upon the envying juveniles about him and confessed in his heart that this was the proudest moment of his life. As the "sold" congregation trooped out they said they would almost be willing to be made ridiculous again to hear Old Hundred sung like that once more. Tom got more cuffs and kisses that day--according to Aunt Polly's varying moods--than he had earned before in a year; and he hardly knew which expressed the most gratefulness to God and affection for himself. CHAPTER XVIII THAT was Tom's great secret--the scheme to return home with his brother pirates and attend their own funerals. They had paddled over to the Missouri shore on a log, at dusk on Saturday, landing five or six miles below the village; they had slept in the woods at the edge of the town till nearly daylight, and had then crept through back lanes and alleys and finished their sleep in the gallery of the church among a chaos of invalided benches. At breakfast, Monday morning, Aunt Polly and Mary were very loving to Tom, and very attentive to his wants. There was an unusual amount of talk. In the course of it Aunt Polly said: "Well, I don't say it wasn't a fine joke, Tom, to keep everybody suffering 'most a week so you boys had a good time, but it is a pity you could be so hard-hearted as to let me suffer so. If you could come over on a log to go to your funeral, you could have come over and give me a hint some way that you warn't dead, but only run off." "Yes, you could have done that, Tom," said Mary; "and I believe you would if you had thought of it." "Would you, Tom?" said Aunt Polly, her face lighting wistfully. "Say, now, would you, if you'd thought of it?" "I--well, I don't know. 'Twould 'a' spoiled everything." "Tom, I hoped you loved me that much," said Aunt Polly, with a grieved tone that discomforted the boy. "It would have been something if you'd cared enough to THINK of it, even if you didn't DO it." "Now, auntie, that ain't any harm," pleaded Mary; "it's only Tom's giddy way--he is always in such a rush that he never thinks of anything." "More's the pity. Sid would have thought. And Sid would have come and DONE it, too. Tom, you'll look back, some day, when it's too late, and wish you'd cared a little more for me when it would have cost you so little." "Now, auntie, you know I do care for you," said Tom. "I'd know it better if you acted more like it." "I wish now I'd thought," said Tom, with a repentant tone; "but I dreamt about you, anyway. That's something, ain't it?" "It ain't much--a cat does that much--but it's better than nothing. What did you dream?" "Why, Wednesday night I dreamt that you was sitting over there by the bed, and Sid was sitting by the woodbox, and Mary next to him." "Well, so we did. So we always do. I'm glad your dreams could take even that much trouble about us." "And I dreamt that Joe Harper's mother was here." "Why, she was here! Did you dream any more?" "Oh, lots. But it's so dim, now." "Well, try to recollect--can't you?" "Somehow it seems to me that the wind--the wind blowed the--the--" "Try harder, Tom! The wind did blow something. Come!" Tom pressed his fingers on his forehead an anxious minute, and then said: "I've got it now! I've got it now! It blowed the candle!" "Mercy on us! Go on, Tom--go on!" "And it seems to me that you said, 'Why, I believe that that door--'" "Go ON, Tom!" "Just let me study a moment--just a moment. Oh, yes--you said you believed the door was open." "As I'm sitting here, I did! Didn't I, Mary! Go on!" "And then--and then--well I won't be certain, but it seems like as if you made Sid go and--and--" "Well? Well? What did I make him do, Tom? What did I make him do?" "You made him--you--Oh, you made him shut it." "Well, for the land's sake! I never heard the beat of that in all my days! Don't tell ME there ain't anything in dreams, any more. Sereny Harper shall know of this before I'm an hour older. I'd like to see her get around THIS with her rubbage 'bout superstition. Go on, Tom!" "Oh, it's all getting just as bright as day, now. Next you said I warn't BAD, only mischeevous and harum-scarum, and not any more responsible than--than--I think it was a colt, or something." "And so it was! Well, goodness gracious! Go on, Tom!" "And then you began to cry." "So I did. So I did. Not the first time, neither. And then--" "Then Mrs. Harper she began to cry, and said Joe was just the same, and she wished she hadn't whipped him for taking cream when she'd throwed it out her own self--" "Tom! The sperrit was upon you! You was a prophesying--that's what you was doing! Land alive, go on, Tom!" "Then Sid he said--he said--" "I don't think I said anything," said Sid. "Yes you did, Sid," said Mary. "Shut your heads and let Tom go on! What did he say, Tom?" "He said--I THINK he said he hoped I was better off where I was gone to, but if I'd been better sometimes--" "THERE, d'you hear that! It was his very words!" "And you shut him up sharp." "I lay I did! There must 'a' been an angel there. There WAS an angel there, somewheres!" "And Mrs. Harper told about Joe scaring her with a firecracker, and you told about Peter and the Painkiller--" "Just as true as I live!" "And then there was a whole lot of talk 'bout dragging the river for us, and 'bout having the funeral Sunday, and then you and old Miss Harper hugged and cried, and she went." "It happened just so! It happened just so, as sure as I'm a-sitting in these very tracks. Tom, you couldn't told it more like if you'd 'a' seen it! And then what? Go on, Tom!" "Then I thought you prayed for me--and I could see you and hear every word you said. And you went to bed, and I was so sorry that I took and wrote on a piece of sycamore bark, 'We ain't dead--we are only off being pirates,' and put it on the table by the candle; and then you looked so good, laying there asleep, that I thought I went and leaned over and kissed you on the lips." "Did you, Tom, DID you! I just forgive you everything for that!" And she seized the boy in a crushing embrace that made him feel like the guiltiest of villains. "It was very kind, even though it was only a--dream," Sid soliloquized just audibly. "Shut up, Sid! A body does just the same in a dream as he'd do if he was awake. Here's a big Milum apple I've been saving for you, Tom, if you was ever found again--now go 'long to school. I'm thankful to the good God and Father of us all I've got you back, that's long-suffering and merciful to them that believe on Him and keep His word, though goodness knows I'm unworthy of it, but if only the worthy ones got His blessings and had His hand to help them over the rough places, there's few enough would smile here or ever enter into His rest when the long night comes. Go 'long Sid, Mary, Tom--take yourselves off--you've hendered me long enough." The children left for school, and the old lady to call on Mrs. Harper and vanquish her realism with Tom's marvellous dream. Sid had better judgment than to utter the thought that was in his mind as he left the house. It was this: "Pretty thin--as long a dream as that, without any mistakes in it!" What a hero Tom was become, now! He did not go skipping and prancing, but moved with a dignified swagger as became a pirate who felt that the public eye was on him. And indeed it was; he tried not to seem to see the looks or hear the remarks as he passed along, but they were food and drink to him. Smaller boys than himself flocked at his heels, as proud to be seen with him, and tolerated by him, as if he had been the drummer at the head of a procession or the elephant leading a menagerie into town. Boys of his own size pretended not to know he had been away at all; but they were consuming with envy, nevertheless. They would have given anything to have that swarthy suntanned skin of his, and his glittering notoriety; and Tom would not have parted with either for a circus. At school the children made so much of him and of Joe, and delivered such eloquent admiration from their eyes, that the two heroes were not long in becoming insufferably "stuck-up." They began to tell their adventures to hungry listeners--but they only began; it was not a thing likely to have an end, with imaginations like theirs to furnish material. And finally, when they got out their pipes and went serenely puffing around, the very summit of glory was reached. Tom decided that he could be independent of Becky Thatcher now. Glory was sufficient. He would live for glory. Now that he was distinguished, maybe she would be wanting to "make up." Well, let her--she should see that he could be as indifferent as some other people. Presently she arrived. Tom pretended not to see her. He moved away and joined a group of boys and girls and began to talk. Soon he observed that she was tripping gayly back and forth with flushed face and dancing eyes, pretending to be busy chasing schoolmates, and screaming with laughter when she made a capture; but he noticed that she always made her captures in his vicinity, and that she seemed to cast a conscious eye in his direction at such times, too. It gratified all the vicious vanity that was in him; and so, instead of winning him, it only "set him up" the more and made him the more diligent to avoid betraying that he knew she was about. Presently she gave over skylarking, and moved irresolutely about, sighing once or twice and glancing furtively and wistfully toward Tom. Then she observed that now Tom was talking more particularly to Amy Lawrence than to any one else. She felt a sharp pang and grew disturbed and uneasy at once. She tried to go away, but her feet were treacherous, and carried her to the group instead. She said to a girl almost at Tom's elbow--with sham vivacity: "Why, Mary Austin! you bad girl, why didn't you come to Sunday-school?" "I did come--didn't you see me?" "Why, no! Did you? Where did you sit?" "I was in Miss Peters' class, where I always go. I saw YOU." "Did you? Why, it's funny I didn't see you. I wanted to tell you about the picnic." "Oh, that's jolly. Who's going to give it?" "My ma's going to let me have one." "Oh, goody; I hope she'll let ME come." "Well, she will. The picnic's for me. She'll let anybody come that I want, and I want you." "That's ever so nice. When is it going to be?" "By and by. Maybe about vacation." "Oh, won't it be fun! You going to have all the girls and boys?" "Yes, every one that's friends to me--or wants to be"; and she glanced ever so furtively at Tom, but he talked right along to Amy Lawrence about the terrible storm on the island, and how the lightning tore the great sycamore tree "all to flinders" while he was "standing within three feet of it." "Oh, may I come?" said Grace Miller. "Yes." "And me?" said Sally Rogers. "Yes." "And me, too?" said Susy Harper. "And Joe?" "Yes." And so on, with clapping of joyful hands till all the group had begged for invitations but Tom and Amy. Then Tom turned coolly away, still talking, and took Amy with him. Becky's lips trembled and the tears came to her eyes; she hid these signs with a forced gayety and went on chattering, but the life had gone out of the picnic, now, and out of everything else; she got away as soon as she could and hid herself and had what her sex call "a good cry." Then she sat moody, with wounded pride, till the bell rang. She roused up, now, with a vindictive cast in her eye, and gave her plaited tails a shake and said she knew what SHE'D do. At recess Tom continued his flirtation with Amy with jubilant self-satisfaction. And he kept drifting about to find Becky and lacerate her with the performance. At last he spied her, but there was a sudden falling of his mercury. She was sitting cosily on a little bench behind the schoolhouse looking at a picture-book with Alfred Temple--and so absorbed were they, and their heads so close together over the book, that they did not seem to be conscious of anything in the world besides. Jealousy ran red-hot through Tom's veins. He began to hate himself for throwing away the chance Becky had offered for a reconciliation. He called himself a fool, and all the hard names he could think of. He wanted to cry with vexation. Amy chatted happily along, as they walked, for her heart was singing, but Tom's tongue had lost its function. He did not hear what Amy was saying, and whenever she paused expectantly he could only stammer an awkward assent, which was as often misplaced as otherwise. He kept drifting to the rear of the schoolhouse, again and again, to sear his eyeballs with the hateful spectacle there. He could not help it. And it maddened him to see, as he thought he saw, that Becky Thatcher never once suspected that he was even in the land of the living. But she did see, nevertheless; and she knew she was winning her fight, too, and was glad to see him suffer as she had suffered. Amy's happy prattle became intolerable. Tom hinted at things he had to attend to; things that must be done; and time was fleeting. But in vain--the girl chirped on. Tom thought, "Oh, hang her, ain't I ever going to get rid of her?" At last he must be attending to those things--and she said artlessly that she would be "around" when school let out. And he hastened away, hating her for it. "Any other boy!" Tom thought, grating his teeth. "Any boy in the whole town but that Saint Louis smarty that thinks he dresses so fine and is aristocracy! Oh, all right, I licked you the first day you ever saw this town, mister, and I'll lick you again! You just wait till I catch you out! I'll just take and--" And he went through the motions of thrashing an imaginary boy --pummelling the air, and kicking and gouging. "Oh, you do, do you? You holler 'nough, do you? Now, then, let that learn you!" And so the imaginary flogging was finished to his satisfaction. Tom fled home at noon. His conscience could not endure any more of Amy's grateful happiness, and his jealousy could bear no more of the other distress. Becky resumed her picture inspections with Alfred, but as the minutes dragged along and no Tom came to suffer, her triumph began to cloud and she lost interest; gravity and absent-mindedness followed, and then melancholy; two or three times she pricked up her ear at a footstep, but it was a false hope; no Tom came. At last she grew entirely miserable and wished she hadn't carried it so far. When poor Alfred, seeing that he was losing her, he did not know how, kept exclaiming: "Oh, here's a jolly one! look at this!" she lost patience at last, and said, "Oh, don't bother me! I don't care for them!" and burst into tears, and got up and walked away. Alfred dropped alongside and was going to try to comfort her, but she said: "Go away and leave me alone, can't you! I hate you!" So the boy halted, wondering what he could have done--for she had said she would look at pictures all through the nooning--and she walked on, crying. Then Alfred went musing into the deserted schoolhouse. He was humiliated and angry. He easily guessed his way to the truth--the girl had simply made a convenience of him to vent her spite upon Tom Sawyer. He was far from hating Tom the less when this thought occurred to him. He wished there was some way to get that boy into trouble without much risk to himself. Tom's spelling-book fell under his eye. Here was his opportunity. He gratefully opened to the lesson for the afternoon and poured ink upon the page. Becky, glancing in at a window behind him at the moment, saw the act, and moved on, without discovering herself. She started homeward, now, intending to find Tom and tell him; Tom would be thankful and their troubles would be healed. Before she was half way home, however, she had changed her mind. The thought of Tom's treatment of her when she was talking about her picnic came scorching back and filled her with shame. She resolved to let him get whipped on the damaged spelling-book's account, and to hate him forever, into the bargain. CHAPTER XIX TOM arrived at home in a dreary mood, and the first thing his aunt said to him showed him that he had brought his sorrows to an unpromising market: "Tom, I've a notion to skin you alive!" "Auntie, what have I done?" "Well, you've done enough. Here I go over to Sereny Harper, like an old softy, expecting I'm going to make her believe all that rubbage about that dream, when lo and behold you she'd found out from Joe that you was over here and heard all the talk we had that night. Tom, I don't know what is to become of a boy that will act like that. It makes me feel so bad to think you could let me go to Sereny Harper and make such a fool of myself and never say a word." This was a new aspect of the thing. His smartness of the morning had seemed to Tom a good joke before, and very ingenious. It merely looked mean and shabby now. He hung his head and could not think of anything to say for a moment. Then he said: "Auntie, I wish I hadn't done it--but I didn't think." "Oh, child, you never think. You never think of anything but your own selfishness. You could think to come all the way over here from Jackson's Island in the night to laugh at our troubles, and you could think to fool me with a lie about a dream; but you couldn't ever think to pity us and save us from sorrow." "Auntie, I know now it was mean, but I didn't mean to be mean. I didn't, honest. And besides, I didn't come over here to laugh at you that night." "What did you come for, then?" "It was to tell you not to be uneasy about us, because we hadn't got drownded." "Tom, Tom, I would be the thankfullest soul in this world if I could believe you ever had as good a thought as that, but you know you never did--and I know it, Tom." "Indeed and 'deed I did, auntie--I wish I may never stir if I didn't." "Oh, Tom, don't lie--don't do it. It only makes things a hundred times worse." "It ain't a lie, auntie; it's the truth. I wanted to keep you from grieving--that was all that made me come." "I'd give the whole world to believe that--it would cover up a power of sins, Tom. I'd 'most be glad you'd run off and acted so bad. But it ain't reasonable; because, why didn't you tell me, child?" "Why, you see, when you got to talking about the funeral, I just got all full of the idea of our coming and hiding in the church, and I couldn't somehow bear to spoil it. So I just put the bark back in my pocket and kept mum." "What bark?" "The bark I had wrote on to tell you we'd gone pirating. I wish, now, you'd waked up when I kissed you--I do, honest." The hard lines in his aunt's face relaxed and a sudden tenderness dawned in her eyes. "DID you kiss me, Tom?" "Why, yes, I did." "Are you sure you did, Tom?" "Why, yes, I did, auntie--certain sure." "What did you kiss me for, Tom?" "Because I loved you so, and you laid there moaning and I was so sorry." The words sounded like truth. The old lady could not hide a tremor in her voice when she said: "Kiss me again, Tom!--and be off with you to school, now, and don't bother me any more." The moment he was gone, she ran to a closet and got out the ruin of a jacket which Tom had gone pirating in. Then she stopped, with it in her hand, and said to herself: "No, I don't dare. Poor boy, I reckon he's lied about it--but it's a blessed, blessed lie, there's such a comfort come from it. I hope the Lord--I KNOW the Lord will forgive him, because it was such goodheartedness in him to tell it. But I don't want to find out it's a lie. I won't look." She put the jacket away, and stood by musing a minute. Twice she put out her hand to take the garment again, and twice she refrained. Once more she ventured, and this time she fortified herself with the thought: "It's a good lie--it's a good lie--I won't let it grieve me." So she sought the jacket pocket. A moment later she was reading Tom's piece of bark through flowing tears and saying: "I could forgive the boy, now, if he'd committed a million sins!" CHAPTER XX THERE was something about Aunt Polly's manner, when she kissed Tom, that swept away his low spirits and made him lighthearted and happy again. He started to school and had the luck of coming upon Becky Thatcher at the head of Meadow Lane. His mood always determined his manner. Without a moment's hesitation he ran to her and said: "I acted mighty mean to-day, Becky, and I'm so sorry. I won't ever, ever do that way again, as long as ever I live--please make up, won't you?" The girl stopped and looked him scornfully in the face: "I'll thank you to keep yourself TO yourself, Mr. Thomas Sawyer. I'll never speak to you again." She tossed her head and passed on. Tom was so stunned that he had not even presence of mind enough to say "Who cares, Miss Smarty?" until the right time to say it had gone by. So he said nothing. But he was in a fine rage, nevertheless. He moped into the schoolyard wishing she were a boy, and imagining how he would trounce her if she were. He presently encountered her and delivered a stinging remark as he passed. She hurled one in return, and the angry breach was complete. It seemed to Becky, in her hot resentment, that she could hardly wait for school to "take in," she was so impatient to see Tom flogged for the injured spelling-book. If she had had any lingering notion of exposing Alfred Temple, Tom's offensive fling had driven it entirely away. Poor girl, she did not know how fast she was nearing trouble herself. The master, Mr. Dobbins, had reached middle age with an unsatisfied ambition. The darling of his desires was, to be a doctor, but poverty had decreed that he should be nothing higher than a village schoolmaster. Every day he took a mysterious book out of his desk and absorbed himself in it at times when no classes were reciting. He kept that book under lock and key. There was not an urchin in school but was perishing to have a glimpse of it, but the chance never came. Every boy and girl had a theory about the nature of that book; but no two theories were alike, and there was no way of getting at the facts in the case. Now, as Becky was passing by the desk, which stood near the door, she noticed that the key was in the lock! It was a precious moment. She glanced around; found herself alone, and the next instant she had the book in her hands. The title-page--Professor Somebody's ANATOMY--carried no information to her mind; so she began to turn the leaves. She came at once upon a handsomely engraved and colored frontispiece--a human figure, stark naked. At that moment a shadow fell on the page and Tom Sawyer stepped in at the door and caught a glimpse of the picture. Becky snatched at the book to close it, and had the hard luck to tear the pictured page half down the middle. She thrust the volume into the desk, turned the key, and burst out crying with shame and vexation. "Tom Sawyer, you are just as mean as you can be, to sneak up on a person and look at what they're looking at." "How could I know you was looking at anything?" "You ought to be ashamed of yourself, Tom Sawyer; you know you're going to tell on me, and oh, what shall I do, what shall I do! I'll be whipped, and I never was whipped in school." Then she stamped her little foot and said: "BE so mean if you want to! I know something that's going to happen. You just wait and you'll see! Hateful, hateful, hateful!"--and she flung out of the house with a new explosion of crying. Tom stood still, rather flustered by this onslaught. Presently he said to himself: "What a curious kind of a fool a girl is! Never been licked in school! Shucks! What's a licking! That's just like a girl--they're so thin-skinned and chicken-hearted. Well, of course I ain't going to tell old Dobbins on this little fool, because there's other ways of getting even on her, that ain't so mean; but what of it? Old Dobbins will ask who it was tore his book. Nobody'll answer. Then he'll do just the way he always does--ask first one and then t'other, and when he comes to the right girl he'll know it, without any telling. Girls' faces always tell on them. They ain't got any backbone. She'll get licked. Well, it's a kind of a tight place for Becky Thatcher, because there ain't any way out of it." Tom conned the thing a moment longer, and then added: "All right, though; she'd like to see me in just such a fix--let her sweat it out!" Tom joined the mob of skylarking scholars outside. In a few moments the master arrived and school "took in." Tom did not feel a strong interest in his studies. Every time he stole a glance at the girls' side of the room Becky's face troubled him. Considering all things, he did not want to pity her, and yet it was all he could do to help it. He could get up no exultation that was really worthy the name. Presently the spelling-book discovery was made, and Tom's mind was entirely full of his own matters for a while after that. Becky roused up from her lethargy of distress and showed good interest in the proceedings. She did not expect that Tom could get out of his trouble by denying that he spilt the ink on the book himself; and she was right. The denial only seemed to make the thing worse for Tom. Becky supposed she would be glad of that, and she tried to believe she was glad of it, but she found she was not certain. When the worst came to the worst, she had an impulse to get up and tell on Alfred Temple, but she made an effort and forced herself to keep still--because, said she to herself, "he'll tell about me tearing the picture sure. I wouldn't say a word, not to save his life!" Tom took his whipping and went back to his seat not at all broken-hearted, for he thought it was possible that he had unknowingly upset the ink on the spelling-book himself, in some skylarking bout--he had denied it for form's sake and because it was custom, and had stuck to the denial from principle. A whole hour drifted by, the master sat nodding in his throne, the air was drowsy with the hum of study. By and by, Mr. Dobbins straightened himself up, yawned, then unlocked his desk, and reached for his book, but seemed undecided whether to take it out or leave it. Most of the pupils glanced up languidly, but there were two among them that watched his movements with intent eyes. Mr. Dobbins fingered his book absently for a while, then took it out and settled himself in his chair to read! Tom shot a glance at Becky. He had seen a hunted and helpless rabbit look as she did, with a gun levelled at its head. Instantly he forgot his quarrel with her. Quick--something must be done! done in a flash, too! But the very imminence of the emergency paralyzed his invention. Good!--he had an inspiration! He would run and snatch the book, spring through the door and fly. But his resolution shook for one little instant, and the chance was lost--the master opened the volume. If Tom only had the wasted opportunity back again! Too late. There was no help for Becky now, he said. The next moment the master faced the school. Every eye sank under his gaze. There was that in it which smote even the innocent with fear. There was silence while one might count ten --the master was gathering his wrath. Then he spoke: "Who tore this book?" There was not a sound. One could have heard a pin drop. The stillness continued; the master searched face after face for signs of guilt. "Benjamin Rogers, did you tear this book?" A denial. Another pause. "Joseph Harper, did you?" Another denial. Tom's uneasiness grew more and more intense under the slow torture of these proceedings. The master scanned the ranks of boys--considered a while, then turned to the girls: "Amy Lawrence?" A shake of the head. "Gracie Miller?" The same sign. "Susan Harper, did you do this?" Another negative. The next girl was Becky Thatcher. Tom was trembling from head to foot with excitement and a sense of the hopelessness of the situation. "Rebecca Thatcher" [Tom glanced at her face--it was white with terror] --"did you tear--no, look me in the face" [her hands rose in appeal] --"did you tear this book?" A thought shot like lightning through Tom's brain. He sprang to his feet and shouted--"I done it!" The school stared in perplexity at this incredible folly. Tom stood a moment, to gather his dismembered faculties; and when he stepped forward to go to his punishment the surprise, the gratitude, the adoration that shone upon him out of poor Becky's eyes seemed pay enough for a hundred floggings. Inspired by the splendor of his own act, he took without an outcry the most merciless flaying that even Mr. Dobbins had ever administered; and also received with indifference the added cruelty of a command to remain two hours after school should be dismissed--for he knew who would wait for him outside till his captivity was done, and not count the tedious time as loss, either. Tom went to bed that night planning vengeance against Alfred Temple; for with shame and repentance Becky had told him all, not forgetting her own treachery; but even the longing for vengeance had to give way, soon, to pleasanter musings, and he fell asleep at last with Becky's latest words lingering dreamily in his ear-- "Tom, how COULD you be so noble!" CHAPTER XXI VACATION was approaching. The schoolmaster, always severe, grew severer and more exacting than ever, for he wanted the school to make a good showing on "Examination" day. His rod and his ferule were seldom idle now--at least among the smaller pupils. Only the biggest boys, and young ladies of eighteen and twenty, escaped lashing. Mr. Dobbins' lashings were very vigorous ones, too; for although he carried, under his wig, a perfectly bald and shiny head, he had only reached middle age, and there was no sign of feebleness in his muscle. As the great day approached, all the tyranny that was in him came to the surface; he seemed to take a vindictive pleasure in punishing the least shortcomings. The consequence was, that the smaller boys spent their days in terror and suffering and their nights in plotting revenge. They threw away no opportunity to do the master a mischief. But he kept ahead all the time. The retribution that followed every vengeful success was so sweeping and majestic that the boys always retired from the field badly worsted. At last they conspired together and hit upon a plan that promised a dazzling victory. They swore in the sign-painter's boy, told him the scheme, and asked his help. He had his own reasons for being delighted, for the master boarded in his father's family and had given the boy ample cause to hate him. The master's wife would go on a visit to the country in a few days, and there would be nothing to interfere with the plan; the master always prepared himself for great occasions by getting pretty well fuddled, and the sign-painter's boy said that when the dominie had reached the proper condition on Examination Evening he would "manage the thing" while he napped in his chair; then he would have him awakened at the right time and hurried away to school. In the fulness of time the interesting occasion arrived. At eight in the evening the schoolhouse was brilliantly lighted, and adorned with wreaths and festoons of foliage and flowers. The master sat throned in his great chair upon a raised platform, with his blackboard behind him. He was looking tolerably mellow. Three rows of benches on each side and six rows in front of him were occupied by the dignitaries of the town and by the parents of the pupils. To his left, back of the rows of citizens, was a spacious temporary platform upon which were seated the scholars who were to take part in the exercises of the evening; rows of small boys, washed and dressed to an intolerable state of discomfort; rows of gawky big boys; snowbanks of girls and young ladies clad in lawn and muslin and conspicuously conscious of their bare arms, their grandmothers' ancient trinkets, their bits of pink and blue ribbon and the flowers in their hair. All the rest of the house was filled with non-participating scholars. The exercises began. A very little boy stood up and sheepishly recited, "You'd scarce expect one of my age to speak in public on the stage," etc.--accompanying himself with the painfully exact and spasmodic gestures which a machine might have used--supposing the machine to be a trifle out of order. But he got through safely, though cruelly scared, and got a fine round of applause when he made his manufactured bow and retired. A little shamefaced girl lisped, "Mary had a little lamb," etc., performed a compassion-inspiring curtsy, got her meed of applause, and sat down flushed and happy. Tom Sawyer stepped forward with conceited confidence and soared into the unquenchable and indestructible "Give me liberty or give me death" speech, with fine fury and frantic gesticulation, and broke down in the middle of it. A ghastly stage-fright seized him, his legs quaked under him and he was like to choke. True, he had the manifest sympathy of the house but he had the house's silence, too, which was even worse than its sympathy. The master frowned, and this completed the disaster. Tom struggled awhile and then retired, utterly defeated. There was a weak attempt at applause, but it died early. "The Boy Stood on the Burning Deck" followed; also "The Assyrian Came Down," and other declamatory gems. Then there were reading exercises, and a spelling fight. The meagre Latin class recited with honor. The prime feature of the evening was in order, now--original "compositions" by the young ladies. Each in her turn stepped forward to the edge of the platform, cleared her throat, held up her manuscript (tied with dainty ribbon), and proceeded to read, with labored attention to "expression" and punctuation. The themes were the same that had been illuminated upon similar occasions by their mothers before them, their grandmothers, and doubtless all their ancestors in the female line clear back to the Crusades. "Friendship" was one; "Memories of Other Days"; "Religion in History"; "Dream Land"; "The Advantages of Culture"; "Forms of Political Government Compared and Contrasted"; "Melancholy"; "Filial Love"; "Heart Longings," etc., etc. A prevalent feature in these compositions was a nursed and petted melancholy; another was a wasteful and opulent gush of "fine language"; another was a tendency to lug in by the ears particularly prized words and phrases until they were worn entirely out; and a peculiarity that conspicuously marked and marred them was the inveterate and intolerable sermon that wagged its crippled tail at the end of each and every one of them. No matter what the subject might be, a brain-racking effort was made to squirm it into some aspect or other that the moral and religious mind could contemplate with edification. The glaring insincerity of these sermons was not sufficient to compass the banishment of the fashion from the schools, and it is not sufficient to-day; it never will be sufficient while the world stands, perhaps. There is no school in all our land where the young ladies do not feel obliged to close their compositions with a sermon; and you will find that the sermon of the most frivolous and the least religious girl in the school is always the longest and the most relentlessly pious. But enough of this. Homely truth is unpalatable. Let us return to the "Examination." The first composition that was read was one entitled "Is this, then, Life?" Perhaps the reader can endure an extract from it: "In the common walks of life, with what delightful emotions does the youthful mind look forward to some anticipated scene of festivity! Imagination is busy sketching rose-tinted pictures of joy. In fancy, the voluptuous votary of fashion sees herself amid the festive throng, 'the observed of all observers.' Her graceful form, arrayed in snowy robes, is whirling through the mazes of the joyous dance; her eye is brightest, her step is lightest in the gay assembly. "In such delicious fancies time quickly glides by, and the welcome hour arrives for her entrance into the Elysian world, of which she has had such bright dreams. How fairy-like does everything appear to her enchanted vision! Each new scene is more charming than the last. But after a while she finds that beneath this goodly exterior, all is vanity, the flattery which once charmed her soul, now grates harshly upon her ear; the ball-room has lost its charms; and with wasted health and imbittered heart, she turns away with the conviction that earthly pleasures cannot satisfy the longings of the soul!" And so forth and so on. There was a buzz of gratification from time to time during the reading, accompanied by whispered ejaculations of "How sweet!" "How eloquent!" "So true!" etc., and after the thing had closed with a peculiarly afflicting sermon the applause was enthusiastic. Then arose a slim, melancholy girl, whose face had the "interesting" paleness that comes of pills and indigestion, and read a "poem." Two stanzas of it will do: "A MISSOURI MAIDEN'S FAREWELL TO ALABAMA "Alabama, good-bye! I love thee well! But yet for a while do I leave thee now! Sad, yes, sad thoughts of thee my heart doth swell, And burning recollections throng my brow! For I have wandered through thy flowery woods; Have roamed and read near Tallapoosa's stream; Have listened to Tallassee's warring floods, And wooed on Coosa's side Aurora's beam. "Yet shame I not to bear an o'er-full heart, Nor blush to turn behind my tearful eyes; 'Tis from no stranger land I now must part, 'Tis to no strangers left I yield these sighs. Welcome and home were mine within this State, Whose vales I leave--whose spires fade fast from me And cold must be mine eyes, and heart, and tete, When, dear Alabama! they turn cold on thee!" There were very few there who knew what "tete" meant, but the poem was very satisfactory, nevertheless. Next appeared a dark-complexioned, black-eyed, black-haired young lady, who paused an impressive moment, assumed a tragic expression, and began to read in a measured, solemn tone: "A VISION "Dark and tempestuous was night. Around the throne on high not a single star quivered; but the deep intonations of the heavy thunder constantly vibrated upon the ear; whilst the terrific lightning revelled in angry mood through the cloudy chambers of heaven, seeming to scorn the power exerted over its terror by the illustrious Franklin! Even the boisterous winds unanimously came forth from their mystic homes, and blustered about as if to enhance by their aid the wildness of the scene. "At such a time, so dark, so dreary, for human sympathy my very spirit sighed; but instead thereof, "'My dearest friend, my counsellor, my comforter and guide--My joy in grief, my second bliss in joy,' came to my side. She moved like one of those bright beings pictured in the sunny walks of fancy's Eden by the romantic and young, a queen of beauty unadorned save by her own transcendent loveliness. So soft was her step, it failed to make even a sound, and but for the magical thrill imparted by her genial touch, as other unobtrusive beauties, she would have glided away un-perceived--unsought. A strange sadness rested upon her features, like icy tears upon the robe of December, as she pointed to the contending elements without, and bade me contemplate the two beings presented." This nightmare occupied some ten pages of manuscript and wound up with a sermon so destructive of all hope to non-Presbyterians that it took the first prize. This composition was considered to be the very finest effort of the evening. The mayor of the village, in delivering the prize to the author of it, made a warm speech in which he said that it was by far the most "eloquent" thing he had ever listened to, and that Daniel Webster himself might well be proud of it. It may be remarked, in passing, that the number of compositions in which the word "beauteous" was over-fondled, and human experience referred to as "life's page," was up to the usual average. Now the master, mellow almost to the verge of geniality, put his chair aside, turned his back to the audience, and began to draw a map of America on the blackboard, to exercise the geography class upon. But he made a sad business of it with his unsteady hand, and a smothered titter rippled over the house. He knew what the matter was, and set himself to right it. He sponged out lines and remade them; but he only distorted them more than ever, and the tittering was more pronounced. He threw his entire attention upon his work, now, as if determined not to be put down by the mirth. He felt that all eyes were fastened upon him; he imagined he was succeeding, and yet the tittering continued; it even manifestly increased. And well it might. There was a garret above, pierced with a scuttle over his head; and down through this scuttle came a cat, suspended around the haunches by a string; she had a rag tied about her head and jaws to keep her from mewing; as she slowly descended she curved upward and clawed at the string, she swung downward and clawed at the intangible air. The tittering rose higher and higher--the cat was within six inches of the absorbed teacher's head--down, down, a little lower, and she grabbed his wig with her desperate claws, clung to it, and was snatched up into the garret in an instant with her trophy still in her possession! And how the light did blaze abroad from the master's bald pate--for the sign-painter's boy had GILDED it! That broke up the meeting. The boys were avenged. Vacation had come. NOTE:--The pretended "compositions" quoted in this chapter are taken without alteration from a volume entitled "Prose and Poetry, by a Western Lady"--but they are exactly and precisely after the schoolgirl pattern, and hence are much happier than any mere imitations could be. CHAPTER XXII TOM joined the new order of Cadets of Temperance, being attracted by the showy character of their "regalia." He promised to abstain from smoking, chewing, and profanity as long as he remained a member. Now he found out a new thing--namely, that to promise not to do a thing is the surest way in the world to make a body want to go and do that very thing. Tom soon found himself tormented with a desire to drink and swear; the desire grew to be so intense that nothing but the hope of a chance to display himself in his red sash kept him from withdrawing from the order. Fourth of July was coming; but he soon gave that up --gave it up before he had worn his shackles over forty-eight hours--and fixed his hopes upon old Judge Frazer, justice of the peace, who was apparently on his deathbed and would have a big public funeral, since he was so high an official. During three days Tom was deeply concerned about the Judge's condition and hungry for news of it. Sometimes his hopes ran high--so high that he would venture to get out his regalia and practise before the looking-glass. But the Judge had a most discouraging way of fluctuating. At last he was pronounced upon the mend--and then convalescent. Tom was disgusted; and felt a sense of injury, too. He handed in his resignation at once--and that night the Judge suffered a relapse and died. Tom resolved that he would never trust a man like that again. The funeral was a fine thing. The Cadets paraded in a style calculated to kill the late member with envy. Tom was a free boy again, however --there was something in that. He could drink and swear, now--but found to his surprise that he did not want to. The simple fact that he could, took the desire away, and the charm of it. Tom presently wondered to find that his coveted vacation was beginning to hang a little heavily on his hands. He attempted a diary--but nothing happened during three days, and so he abandoned it. The first of all the negro minstrel shows came to town, and made a sensation. Tom and Joe Harper got up a band of performers and were happy for two days. Even the Glorious Fourth was in some sense a failure, for it rained hard, there was no procession in consequence, and the greatest man in the world (as Tom supposed), Mr. Benton, an actual United States Senator, proved an overwhelming disappointment--for he was not twenty-five feet high, nor even anywhere in the neighborhood of it. A circus came. The boys played circus for three days afterward in tents made of rag carpeting--admission, three pins for boys, two for girls--and then circusing was abandoned. A phrenologist and a mesmerizer came--and went again and left the village duller and drearier than ever. There were some boys-and-girls' parties, but they were so few and so delightful that they only made the aching voids between ache the harder. Becky Thatcher was gone to her Constantinople home to stay with her parents during vacation--so there was no bright side to life anywhere. The dreadful secret of the murder was a chronic misery. It was a very cancer for permanency and pain. Then came the measles. During two long weeks Tom lay a prisoner, dead to the world and its happenings. He was very ill, he was interested in nothing. When he got upon his feet at last and moved feebly down-town, a melancholy change had come over everything and every creature. There had been a "revival," and everybody had "got religion," not only the adults, but even the boys and girls. Tom went about, hoping against hope for the sight of one blessed sinful face, but disappointment crossed him everywhere. He found Joe Harper studying a Testament, and turned sadly away from the depressing spectacle. He sought Ben Rogers, and found him visiting the poor with a basket of tracts. He hunted up Jim Hollis, who called his attention to the precious blessing of his late measles as a warning. Every boy he encountered added another ton to his depression; and when, in desperation, he flew for refuge at last to the bosom of Huckleberry Finn and was received with a Scriptural quotation, his heart broke and he crept home and to bed realizing that he alone of all the town was lost, forever and forever. And that night there came on a terrific storm, with driving rain, awful claps of thunder and blinding sheets of lightning. He covered his head with the bedclothes and waited in a horror of suspense for his doom; for he had not the shadow of a doubt that all this hubbub was about him. He believed he had taxed the forbearance of the powers above to the extremity of endurance and that this was the result. It might have seemed to him a waste of pomp and ammunition to kill a bug with a battery of artillery, but there seemed nothing incongruous about the getting up such an expensive thunderstorm as this to knock the turf from under an insect like himself. By and by the tempest spent itself and died without accomplishing its object. The boy's first impulse was to be grateful, and reform. His second was to wait--for there might not be any more storms. The next day the doctors were back; Tom had relapsed. The three weeks he spent on his back this time seemed an entire age. When he got abroad at last he was hardly grateful that he had been spared, remembering how lonely was his estate, how companionless and forlorn he was. He drifted listlessly down the street and found Jim Hollis acting as judge in a juvenile court that was trying a cat for murder, in the presence of her victim, a bird. He found Joe Harper and Huck Finn up an alley eating a stolen melon. Poor lads! they--like Tom--had suffered a relapse. CHAPTER XXIII AT last the sleepy atmosphere was stirred--and vigorously: the murder trial came on in the court. It became the absorbing topic of village talk immediately. Tom could not get away from it. Every reference to the murder sent a shudder to his heart, for his troubled conscience and fears almost persuaded him that these remarks were put forth in his hearing as "feelers"; he did not see how he could be suspected of knowing anything about the murder, but still he could not be comfortable in the midst of this gossip. It kept him in a cold shiver all the time. He took Huck to a lonely place to have a talk with him. It would be some relief to unseal his tongue for a little while; to divide his burden of distress with another sufferer. Moreover, he wanted to assure himself that Huck had remained discreet. "Huck, have you ever told anybody about--that?" "'Bout what?" "You know what." "Oh--'course I haven't." "Never a word?" "Never a solitary word, so help me. What makes you ask?" "Well, I was afeard." "Why, Tom Sawyer, we wouldn't be alive two days if that got found out. YOU know that." Tom felt more comfortable. After a pause: "Huck, they couldn't anybody get you to tell, could they?" "Get me to tell? Why, if I wanted that half-breed devil to drownd me they could get me to tell. They ain't no different way." "Well, that's all right, then. I reckon we're safe as long as we keep mum. But let's swear again, anyway. It's more surer." "I'm agreed." So they swore again with dread solemnities. "What is the talk around, Huck? I've heard a power of it." "Talk? Well, it's just Muff Potter, Muff Potter, Muff Potter all the time. It keeps me in a sweat, constant, so's I want to hide som'ers." "That's just the same way they go on round me. I reckon he's a goner. Don't you feel sorry for him, sometimes?" "Most always--most always. He ain't no account; but then he hain't ever done anything to hurt anybody. Just fishes a little, to get money to get drunk on--and loafs around considerable; but lord, we all do that--leastways most of us--preachers and such like. But he's kind of good--he give me half a fish, once, when there warn't enough for two; and lots of times he's kind of stood by me when I was out of luck." "Well, he's mended kites for me, Huck, and knitted hooks on to my line. I wish we could get him out of there." "My! we couldn't get him out, Tom. And besides, 'twouldn't do any good; they'd ketch him again." "Yes--so they would. But I hate to hear 'em abuse him so like the dickens when he never done--that." "I do too, Tom. Lord, I hear 'em say he's the bloodiest looking villain in this country, and they wonder he wasn't ever hung before." "Yes, they talk like that, all the time. I've heard 'em say that if he was to get free they'd lynch him." "And they'd do it, too." The boys had a long talk, but it brought them little comfort. As the twilight drew on, they found themselves hanging about the neighborhood of the little isolated jail, perhaps with an undefined hope that something would happen that might clear away their difficulties. But nothing happened; there seemed to be no angels or fairies interested in this luckless captive. The boys did as they had often done before--went to the cell grating and gave Potter some tobacco and matches. He was on the ground floor and there were no guards. His gratitude for their gifts had always smote their consciences before--it cut deeper than ever, this time. They felt cowardly and treacherous to the last degree when Potter said: "You've been mighty good to me, boys--better'n anybody else in this town. And I don't forget it, I don't. Often I says to myself, says I, 'I used to mend all the boys' kites and things, and show 'em where the good fishin' places was, and befriend 'em what I could, and now they've all forgot old Muff when he's in trouble; but Tom don't, and Huck don't--THEY don't forget him, says I, 'and I don't forget them.' Well, boys, I done an awful thing--drunk and crazy at the time--that's the only way I account for it--and now I got to swing for it, and it's right. Right, and BEST, too, I reckon--hope so, anyway. Well, we won't talk about that. I don't want to make YOU feel bad; you've befriended me. But what I want to say, is, don't YOU ever get drunk--then you won't ever get here. Stand a litter furder west--so--that's it; it's a prime comfort to see faces that's friendly when a body's in such a muck of trouble, and there don't none come here but yourn. Good friendly faces--good friendly faces. Git up on one another's backs and let me touch 'em. That's it. Shake hands--yourn'll come through the bars, but mine's too big. Little hands, and weak--but they've helped Muff Potter a power, and they'd help him more if they could." Tom went home miserable, and his dreams that night were full of horrors. The next day and the day after, he hung about the court-room, drawn by an almost irresistible impulse to go in, but forcing himself to stay out. Huck was having the same experience. They studiously avoided each other. Each wandered away, from time to time, but the same dismal fascination always brought them back presently. Tom kept his ears open when idlers sauntered out of the court-room, but invariably heard distressing news--the toils were closing more and more relentlessly around poor Potter. At the end of the second day the village talk was to the effect that Injun Joe's evidence stood firm and unshaken, and that there was not the slightest question as to what the jury's verdict would be. Tom was out late, that night, and came to bed through the window. He was in a tremendous state of excitement. It was hours before he got to sleep. All the village flocked to the court-house the next morning, for this was to be the great day. Both sexes were about equally represented in the packed audience. After a long wait the jury filed in and took their places; shortly afterward, Potter, pale and haggard, timid and hopeless, was brought in, with chains upon him, and seated where all the curious eyes could stare at him; no less conspicuous was Injun Joe, stolid as ever. There was another pause, and then the judge arrived and the sheriff proclaimed the opening of the court. The usual whisperings among the lawyers and gathering together of papers followed. These details and accompanying delays worked up an atmosphere of preparation that was as impressive as it was fascinating. Now a witness was called who testified that he found Muff Potter washing in the brook, at an early hour of the morning that the murder was discovered, and that he immediately sneaked away. After some further questioning, counsel for the prosecution said: "Take the witness." The prisoner raised his eyes for a moment, but dropped them again when his own counsel said: "I have no questions to ask him." The next witness proved the finding of the knife near the corpse. Counsel for the prosecution said: "Take the witness." "I have no questions to ask him," Potter's lawyer replied. A third witness swore he had often seen the knife in Potter's possession. "Take the witness." Counsel for Potter declined to question him. The faces of the audience began to betray annoyance. Did this attorney mean to throw away his client's life without an effort? Several witnesses deposed concerning Potter's guilty behavior when brought to the scene of the murder. They were allowed to leave the stand without being cross-questioned. Every detail of the damaging circumstances that occurred in the graveyard upon that morning which all present remembered so well was brought out by credible witnesses, but none of them were cross-examined by Potter's lawyer. The perplexity and dissatisfaction of the house expressed itself in murmurs and provoked a reproof from the bench. Counsel for the prosecution now said: "By the oaths of citizens whose simple word is above suspicion, we have fastened this awful crime, beyond all possibility of question, upon the unhappy prisoner at the bar. We rest our case here." A groan escaped from poor Potter, and he put his face in his hands and rocked his body softly to and fro, while a painful silence reigned in the court-room. Many men were moved, and many women's compassion testified itself in tears. Counsel for the defence rose and said: "Your honor, in our remarks at the opening of this trial, we foreshadowed our purpose to prove that our client did this fearful deed while under the influence of a blind and irresponsible delirium produced by drink. We have changed our mind. We shall not offer that plea." [Then to the clerk:] "Call Thomas Sawyer!" A puzzled amazement awoke in every face in the house, not even excepting Potter's. Every eye fastened itself with wondering interest upon Tom as he rose and took his place upon the stand. The boy looked wild enough, for he was badly scared. The oath was administered. "Thomas Sawyer, where were you on the seventeenth of June, about the hour of midnight?" Tom glanced at Injun Joe's iron face and his tongue failed him. The audience listened breathless, but the words refused to come. After a few moments, however, the boy got a little of his strength back, and managed to put enough of it into his voice to make part of the house hear: "In the graveyard!" "A little bit louder, please. Don't be afraid. You were--" "In the graveyard." A contemptuous smile flitted across Injun Joe's face. "Were you anywhere near Horse Williams' grave?" "Yes, sir." "Speak up--just a trifle louder. How near were you?" "Near as I am to you." "Were you hidden, or not?" "I was hid." "Where?" "Behind the elms that's on the edge of the grave." Injun Joe gave a barely perceptible start. "Any one with you?" "Yes, sir. I went there with--" "Wait--wait a moment. Never mind mentioning your companion's name. We will produce him at the proper time. Did you carry anything there with you." Tom hesitated and looked confused. "Speak out, my boy--don't be diffident. The truth is always respectable. What did you take there?" "Only a--a--dead cat." There was a ripple of mirth, which the court checked. "We will produce the skeleton of that cat. Now, my boy, tell us everything that occurred--tell it in your own way--don't skip anything, and don't be afraid." Tom began--hesitatingly at first, but as he warmed to his subject his words flowed more and more easily; in a little while every sound ceased but his own voice; every eye fixed itself upon him; with parted lips and bated breath the audience hung upon his words, taking no note of time, rapt in the ghastly fascinations of the tale. The strain upon pent emotion reached its climax when the boy said: "--and as the doctor fetched the board around and Muff Potter fell, Injun Joe jumped with the knife and--" Crash! Quick as lightning the half-breed sprang for a window, tore his way through all opposers, and was gone! CHAPTER XXIV TOM was a glittering hero once more--the pet of the old, the envy of the young. His name even went into immortal print, for the village paper magnified him. There were some that believed he would be President, yet, if he escaped hanging. As usual, the fickle, unreasoning world took Muff Potter to its bosom and fondled him as lavishly as it had abused him before. But that sort of conduct is to the world's credit; therefore it is not well to find fault with it. Tom's days were days of splendor and exultation to him, but his nights were seasons of horror. Injun Joe infested all his dreams, and always with doom in his eye. Hardly any temptation could persuade the boy to stir abroad after nightfall. Poor Huck was in the same state of wretchedness and terror, for Tom had told the whole story to the lawyer the night before the great day of the trial, and Huck was sore afraid that his share in the business might leak out, yet, notwithstanding Injun Joe's flight had saved him the suffering of testifying in court. The poor fellow had got the attorney to promise secrecy, but what of that? Since Tom's harassed conscience had managed to drive him to the lawyer's house by night and wring a dread tale from lips that had been sealed with the dismalest and most formidable of oaths, Huck's confidence in the human race was well-nigh obliterated. Daily Muff Potter's gratitude made Tom glad he had spoken; but nightly he wished he had sealed up his tongue. Half the time Tom was afraid Injun Joe would never be captured; the other half he was afraid he would be. He felt sure he never could draw a safe breath again until that man was dead and he had seen the corpse. Rewards had been offered, the country had been scoured, but no Injun Joe was found. One of those omniscient and awe-inspiring marvels, a detective, came up from St. Louis, moused around, shook his head, looked wise, and made that sort of astounding success which members of that craft usually achieve. That is to say, he "found a clew." But you can't hang a "clew" for murder, and so after that detective had got through and gone home, Tom felt just as insecure as he was before. The slow days drifted on, and each left behind it a slightly lightened weight of apprehension. CHAPTER XXV THERE comes a time in every rightly-constructed boy's life when he has a raging desire to go somewhere and dig for hidden treasure. This desire suddenly came upon Tom one day. He sallied out to find Joe Harper, but failed of success. Next he sought Ben Rogers; he had gone fishing. Presently he stumbled upon Huck Finn the Red-Handed. Huck would answer. Tom took him to a private place and opened the matter to him confidentially. Huck was willing. Huck was always willing to take a hand in any enterprise that offered entertainment and required no capital, for he had a troublesome superabundance of that sort of time which is not money. "Where'll we dig?" said Huck. "Oh, most anywhere." "Why, is it hid all around?" "No, indeed it ain't. It's hid in mighty particular places, Huck --sometimes on islands, sometimes in rotten chests under the end of a limb of an old dead tree, just where the shadow falls at midnight; but mostly under the floor in ha'nted houses." "Who hides it?" "Why, robbers, of course--who'd you reckon? Sunday-school sup'rintendents?" "I don't know. If 'twas mine I wouldn't hide it; I'd spend it and have a good time." "So would I. But robbers don't do that way. They always hide it and leave it there." "Don't they come after it any more?" "No, they think they will, but they generally forget the marks, or else they die. Anyway, it lays there a long time and gets rusty; and by and by somebody finds an old yellow paper that tells how to find the marks--a paper that's got to be ciphered over about a week because it's mostly signs and hy'roglyphics." "Hyro--which?" "Hy'roglyphics--pictures and things, you know, that don't seem to mean anything." "Have you got one of them papers, Tom?" "No." "Well then, how you going to find the marks?" "I don't want any marks. They always bury it under a ha'nted house or on an island, or under a dead tree that's got one limb sticking out. Well, we've tried Jackson's Island a little, and we can try it again some time; and there's the old ha'nted house up the Still-House branch, and there's lots of dead-limb trees--dead loads of 'em." "Is it under all of them?" "How you talk! No!" "Then how you going to know which one to go for?" "Go for all of 'em!" "Why, Tom, it'll take all summer." "Well, what of that? Suppose you find a brass pot with a hundred dollars in it, all rusty and gray, or rotten chest full of di'monds. How's that?" Huck's eyes glowed. "That's bully. Plenty bully enough for me. Just you gimme the hundred dollars and I don't want no di'monds." "All right. But I bet you I ain't going to throw off on di'monds. Some of 'em's worth twenty dollars apiece--there ain't any, hardly, but's worth six bits or a dollar." "No! Is that so?" "Cert'nly--anybody'll tell you so. Hain't you ever seen one, Huck?" "Not as I remember." "Oh, kings have slathers of them." "Well, I don' know no kings, Tom." "I reckon you don't. But if you was to go to Europe you'd see a raft of 'em hopping around." "Do they hop?" "Hop?--your granny! No!" "Well, what did you say they did, for?" "Shucks, I only meant you'd SEE 'em--not hopping, of course--what do they want to hop for?--but I mean you'd just see 'em--scattered around, you know, in a kind of a general way. Like that old humpbacked Richard." "Richard? What's his other name?" "He didn't have any other name. Kings don't have any but a given name." "No?" "But they don't." "Well, if they like it, Tom, all right; but I don't want to be a king and have only just a given name, like a nigger. But say--where you going to dig first?" "Well, I don't know. S'pose we tackle that old dead-limb tree on the hill t'other side of Still-House branch?" "I'm agreed." So they got a crippled pick and a shovel, and set out on their three-mile tramp. They arrived hot and panting, and threw themselves down in the shade of a neighboring elm to rest and have a smoke. "I like this," said Tom. "So do I." "Say, Huck, if we find a treasure here, what you going to do with your share?" "Well, I'll have pie and a glass of soda every day, and I'll go to every circus that comes along. I bet I'll have a gay time." "Well, ain't you going to save any of it?" "Save it? What for?" "Why, so as to have something to live on, by and by." "Oh, that ain't any use. Pap would come back to thish-yer town some day and get his claws on it if I didn't hurry up, and I tell you he'd clean it out pretty quick. What you going to do with yourn, Tom?" "I'm going to buy a new drum, and a sure-'nough sword, and a red necktie and a bull pup, and get married." "Married!" "That's it." "Tom, you--why, you ain't in your right mind." "Wait--you'll see." "Well, that's the foolishest thing you could do. Look at pap and my mother. Fight! Why, they used to fight all the time. I remember, mighty well." "That ain't anything. The girl I'm going to marry won't fight." "Tom, I reckon they're all alike. They'll all comb a body. Now you better think 'bout this awhile. I tell you you better. What's the name of the gal?" "It ain't a gal at all--it's a girl." "It's all the same, I reckon; some says gal, some says girl--both's right, like enough. Anyway, what's her name, Tom?" "I'll tell you some time--not now." "All right--that'll do. Only if you get married I'll be more lonesomer than ever." "No you won't. You'll come and live with me. Now stir out of this and we'll go to digging." They worked and sweated for half an hour. No result. They toiled another half-hour. Still no result. Huck said: "Do they always bury it as deep as this?" "Sometimes--not always. Not generally. I reckon we haven't got the right place." So they chose a new spot and began again. The labor dragged a little, but still they made progress. They pegged away in silence for some time. Finally Huck leaned on his shovel, swabbed the beaded drops from his brow with his sleeve, and said: "Where you going to dig next, after we get this one?" "I reckon maybe we'll tackle the old tree that's over yonder on Cardiff Hill back of the widow's." "I reckon that'll be a good one. But won't the widow take it away from us, Tom? It's on her land." "SHE take it away! Maybe she'd like to try it once. Whoever finds one of these hid treasures, it belongs to him. It don't make any difference whose land it's on." That was satisfactory. The work went on. By and by Huck said: "Blame it, we must be in the wrong place again. What do you think?" "It is mighty curious, Huck. I don't understand it. Sometimes witches interfere. I reckon maybe that's what's the trouble now." "Shucks! Witches ain't got no power in the daytime." "Well, that's so. I didn't think of that. Oh, I know what the matter is! What a blamed lot of fools we are! You got to find out where the shadow of the limb falls at midnight, and that's where you dig!" "Then consound it, we've fooled away all this work for nothing. Now hang it all, we got to come back in the night. It's an awful long way. Can you get out?" "I bet I will. We've got to do it to-night, too, because if somebody sees these holes they'll know in a minute what's here and they'll go for it." "Well, I'll come around and maow to-night." "All right. Let's hide the tools in the bushes." The boys were there that night, about the appointed time. They sat in the shadow waiting. It was a lonely place, and an hour made solemn by old traditions. Spirits whispered in the rustling leaves, ghosts lurked in the murky nooks, the deep baying of a hound floated up out of the distance, an owl answered with his sepulchral note. The boys were subdued by these solemnities, and talked little. By and by they judged that twelve had come; they marked where the shadow fell, and began to dig. Their hopes commenced to rise. Their interest grew stronger, and their industry kept pace with it. The hole deepened and still deepened, but every time their hearts jumped to hear the pick strike upon something, they only suffered a new disappointment. It was only a stone or a chunk. At last Tom said: "It ain't any use, Huck, we're wrong again." "Well, but we CAN'T be wrong. We spotted the shadder to a dot." "I know it, but then there's another thing." "What's that?". "Why, we only guessed at the time. Like enough it was too late or too early." Huck dropped his shovel. "That's it," said he. "That's the very trouble. We got to give this one up. We can't ever tell the right time, and besides this kind of thing's too awful, here this time of night with witches and ghosts a-fluttering around so. I feel as if something's behind me all the time; and I'm afeard to turn around, becuz maybe there's others in front a-waiting for a chance. I been creeping all over, ever since I got here." "Well, I've been pretty much so, too, Huck. They most always put in a dead man when they bury a treasure under a tree, to look out for it." "Lordy!" "Yes, they do. I've always heard that." "Tom, I don't like to fool around much where there's dead people. A body's bound to get into trouble with 'em, sure." "I don't like to stir 'em up, either. S'pose this one here was to stick his skull out and say something!" "Don't Tom! It's awful." "Well, it just is. Huck, I don't feel comfortable a bit." "Say, Tom, let's give this place up, and try somewheres else." "All right, I reckon we better." "What'll it be?" Tom considered awhile; and then said: "The ha'nted house. That's it!" "Blame it, I don't like ha'nted houses, Tom. Why, they're a dern sight worse'n dead people. Dead people might talk, maybe, but they don't come sliding around in a shroud, when you ain't noticing, and peep over your shoulder all of a sudden and grit their teeth, the way a ghost does. I couldn't stand such a thing as that, Tom--nobody could." "Yes, but, Huck, ghosts don't travel around only at night. They won't hender us from digging there in the daytime." "Well, that's so. But you know mighty well people don't go about that ha'nted house in the day nor the night." "Well, that's mostly because they don't like to go where a man's been murdered, anyway--but nothing's ever been seen around that house except in the night--just some blue lights slipping by the windows--no regular ghosts." "Well, where you see one of them blue lights flickering around, Tom, you can bet there's a ghost mighty close behind it. It stands to reason. Becuz you know that they don't anybody but ghosts use 'em." "Yes, that's so. But anyway they don't come around in the daytime, so what's the use of our being afeard?" "Well, all right. We'll tackle the ha'nted house if you say so--but I reckon it's taking chances." They had started down the hill by this time. There in the middle of the moonlit valley below them stood the "ha'nted" house, utterly isolated, its fences gone long ago, rank weeds smothering the very doorsteps, the chimney crumbled to ruin, the window-sashes vacant, a corner of the roof caved in. The boys gazed awhile, half expecting to see a blue light flit past a window; then talking in a low tone, as befitted the time and the circumstances, they struck far off to the right, to give the haunted house a wide berth, and took their way homeward through the woods that adorned the rearward side of Cardiff Hill. CHAPTER XXVI ABOUT noon the next day the boys arrived at the dead tree; they had come for their tools. Tom was impatient to go to the haunted house; Huck was measurably so, also--but suddenly said: "Lookyhere, Tom, do you know what day it is?" Tom mentally ran over the days of the week, and then quickly lifted his eyes with a startled look in them-- "My! I never once thought of it, Huck!" "Well, I didn't neither, but all at once it popped onto me that it was Friday." "Blame it, a body can't be too careful, Huck. We might 'a' got into an awful scrape, tackling such a thing on a Friday." "MIGHT! Better say we WOULD! There's some lucky days, maybe, but Friday ain't." "Any fool knows that. I don't reckon YOU was the first that found it out, Huck." "Well, I never said I was, did I? And Friday ain't all, neither. I had a rotten bad dream last night--dreampt about rats." "No! Sure sign of trouble. Did they fight?" "No." "Well, that's good, Huck. When they don't fight it's only a sign that there's trouble around, you know. All we got to do is to look mighty sharp and keep out of it. We'll drop this thing for to-day, and play. Do you know Robin Hood, Huck?" "No. Who's Robin Hood?" "Why, he was one of the greatest men that was ever in England--and the best. He was a robber." "Cracky, I wisht I was. Who did he rob?" "Only sheriffs and bishops and rich people and kings, and such like. But he never bothered the poor. He loved 'em. He always divided up with 'em perfectly square." "Well, he must 'a' been a brick." "I bet you he was, Huck. Oh, he was the noblest man that ever was. They ain't any such men now, I can tell you. He could lick any man in England, with one hand tied behind him; and he could take his yew bow and plug a ten-cent piece every time, a mile and a half." "What's a YEW bow?" "I don't know. It's some kind of a bow, of course. And if he hit that dime only on the edge he would set down and cry--and curse. But we'll play Robin Hood--it's nobby fun. I'll learn you." "I'm agreed." So they played Robin Hood all the afternoon, now and then casting a yearning eye down upon the haunted house and passing a remark about the morrow's prospects and possibilities there. As the sun began to sink into the west they took their way homeward athwart the long shadows of the trees and soon were buried from sight in the forests of Cardiff Hill. On Saturday, shortly after noon, the boys were at the dead tree again. They had a smoke and a chat in the shade, and then dug a little in their last hole, not with great hope, but merely because Tom said there were so many cases where people had given up a treasure after getting down within six inches of it, and then somebody else had come along and turned it up with a single thrust of a shovel. The thing failed this time, however, so the boys shouldered their tools and went away feeling that they had not trifled with fortune, but had fulfilled all the requirements that belong to the business of treasure-hunting. When they reached the haunted house there was something so weird and grisly about the dead silence that reigned there under the baking sun, and something so depressing about the loneliness and desolation of the place, that they were afraid, for a moment, to venture in. Then they crept to the door and took a trembling peep. They saw a weed-grown, floorless room, unplastered, an ancient fireplace, vacant windows, a ruinous staircase; and here, there, and everywhere hung ragged and abandoned cobwebs. They presently entered, softly, with quickened pulses, talking in whispers, ears alert to catch the slightest sound, and muscles tense and ready for instant retreat. In a little while familiarity modified their fears and they gave the place a critical and interested examination, rather admiring their own boldness, and wondering at it, too. Next they wanted to look up-stairs. This was something like cutting off retreat, but they got to daring each other, and of course there could be but one result--they threw their tools into a corner and made the ascent. Up there were the same signs of decay. In one corner they found a closet that promised mystery, but the promise was a fraud--there was nothing in it. Their courage was up now and well in hand. They were about to go down and begin work when-- "Sh!" said Tom. "What is it?" whispered Huck, blanching with fright. "Sh!... There!... Hear it?" "Yes!... Oh, my! Let's run!" "Keep still! Don't you budge! They're coming right toward the door." The boys stretched themselves upon the floor with their eyes to knot-holes in the planking, and lay waiting, in a misery of fear. "They've stopped.... No--coming.... Here they are. Don't whisper another word, Huck. My goodness, I wish I was out of this!" Two men entered. Each boy said to himself: "There's the old deaf and dumb Spaniard that's been about town once or twice lately--never saw t'other man before." "T'other" was a ragged, unkempt creature, with nothing very pleasant in his face. The Spaniard was wrapped in a serape; he had bushy white whiskers; long white hair flowed from under his sombrero, and he wore green goggles. When they came in, "t'other" was talking in a low voice; they sat down on the ground, facing the door, with their backs to the wall, and the speaker continued his remarks. His manner became less guarded and his words more distinct as he proceeded: "No," said he, "I've thought it all over, and I don't like it. It's dangerous." "Dangerous!" grunted the "deaf and dumb" Spaniard--to the vast surprise of the boys. "Milksop!" This voice made the boys gasp and quake. It was Injun Joe's! There was silence for some time. Then Joe said: "What's any more dangerous than that job up yonder--but nothing's come of it." "That's different. Away up the river so, and not another house about. 'Twon't ever be known that we tried, anyway, long as we didn't succeed." "Well, what's more dangerous than coming here in the daytime!--anybody would suspicion us that saw us." "I know that. But there warn't any other place as handy after that fool of a job. I want to quit this shanty. I wanted to yesterday, only it warn't any use trying to stir out of here, with those infernal boys playing over there on the hill right in full view." "Those infernal boys" quaked again under the inspiration of this remark, and thought how lucky it was that they had remembered it was Friday and concluded to wait a day. They wished in their hearts they had waited a year. The two men got out some food and made a luncheon. After a long and thoughtful silence, Injun Joe said: "Look here, lad--you go back up the river where you belong. Wait there till you hear from me. I'll take the chances on dropping into this town just once more, for a look. We'll do that 'dangerous' job after I've spied around a little and think things look well for it. Then for Texas! We'll leg it together!" This was satisfactory. Both men presently fell to yawning, and Injun Joe said: "I'm dead for sleep! It's your turn to watch." He curled down in the weeds and soon began to snore. His comrade stirred him once or twice and he became quiet. Presently the watcher began to nod; his head drooped lower and lower, both men began to snore now. The boys drew a long, grateful breath. Tom whispered: "Now's our chance--come!" Huck said: "I can't--I'd die if they was to wake." Tom urged--Huck held back. At last Tom rose slowly and softly, and started alone. But the first step he made wrung such a hideous creak from the crazy floor that he sank down almost dead with fright. He never made a second attempt. The boys lay there counting the dragging moments till it seemed to them that time must be done and eternity growing gray; and then they were grateful to note that at last the sun was setting. Now one snore ceased. Injun Joe sat up, stared around--smiled grimly upon his comrade, whose head was drooping upon his knees--stirred him up with his foot and said: "Here! YOU'RE a watchman, ain't you! All right, though--nothing's happened." "My! have I been asleep?" "Oh, partly, partly. Nearly time for us to be moving, pard. What'll we do with what little swag we've got left?" "I don't know--leave it here as we've always done, I reckon. No use to take it away till we start south. Six hundred and fifty in silver's something to carry." "Well--all right--it won't matter to come here once more." "No--but I'd say come in the night as we used to do--it's better." "Yes: but look here; it may be a good while before I get the right chance at that job; accidents might happen; 'tain't in such a very good place; we'll just regularly bury it--and bury it deep." "Good idea," said the comrade, who walked across the room, knelt down, raised one of the rearward hearth-stones and took out a bag that jingled pleasantly. He subtracted from it twenty or thirty dollars for himself and as much for Injun Joe, and passed the bag to the latter, who was on his knees in the corner, now, digging with his bowie-knife. The boys forgot all their fears, all their miseries in an instant. With gloating eyes they watched every movement. Luck!--the splendor of it was beyond all imagination! Six hundred dollars was money enough to make half a dozen boys rich! Here was treasure-hunting under the happiest auspices--there would not be any bothersome uncertainty as to where to dig. They nudged each other every moment--eloquent nudges and easily understood, for they simply meant--"Oh, but ain't you glad NOW we're here!" Joe's knife struck upon something. "Hello!" said he. "What is it?" said his comrade. "Half-rotten plank--no, it's a box, I believe. Here--bear a hand and we'll see what it's here for. Never mind, I've broke a hole." He reached his hand in and drew it out-- "Man, it's money!" The two men examined the handful of coins. They were gold. The boys above were as excited as themselves, and as delighted. Joe's comrade said: "We'll make quick work of this. There's an old rusty pick over amongst the weeds in the corner the other side of the fireplace--I saw it a minute ago." He ran and brought the boys' pick and shovel. Injun Joe took the pick, looked it over critically, shook his head, muttered something to himself, and then began to use it. The box was soon unearthed. It was not very large; it was iron bound and had been very strong before the slow years had injured it. The men contemplated the treasure awhile in blissful silence. "Pard, there's thousands of dollars here," said Injun Joe. "'Twas always said that Murrel's gang used to be around here one summer," the stranger observed. "I know it," said Injun Joe; "and this looks like it, I should say." "Now you won't need to do that job." The half-breed frowned. Said he: "You don't know me. Least you don't know all about that thing. 'Tain't robbery altogether--it's REVENGE!" and a wicked light flamed in his eyes. "I'll need your help in it. When it's finished--then Texas. Go home to your Nance and your kids, and stand by till you hear from me." "Well--if you say so; what'll we do with this--bury it again?" "Yes. [Ravishing delight overhead.] NO! by the great Sachem, no! [Profound distress overhead.] I'd nearly forgot. That pick had fresh earth on it! [The boys were sick with terror in a moment.] What business has a pick and a shovel here? What business with fresh earth on them? Who brought them here--and where are they gone? Have you heard anybody?--seen anybody? What! bury it again and leave them to come and see the ground disturbed? Not exactly--not exactly. We'll take it to my den." "Why, of course! Might have thought of that before. You mean Number One?" "No--Number Two--under the cross. The other place is bad--too common." "All right. It's nearly dark enough to start." Injun Joe got up and went about from window to window cautiously peeping out. Presently he said: "Who could have brought those tools here? Do you reckon they can be up-stairs?" The boys' breath forsook them. Injun Joe put his hand on his knife, halted a moment, undecided, and then turned toward the stairway. The boys thought of the closet, but their strength was gone. The steps came creaking up the stairs--the intolerable distress of the situation woke the stricken resolution of the lads--they were about to spring for the closet, when there was a crash of rotten timbers and Injun Joe landed on the ground amid the debris of the ruined stairway. He gathered himself up cursing, and his comrade said: "Now what's the use of all that? If it's anybody, and they're up there, let them STAY there--who cares? If they want to jump down, now, and get into trouble, who objects? It will be dark in fifteen minutes --and then let them follow us if they want to. I'm willing. In my opinion, whoever hove those things in here caught a sight of us and took us for ghosts or devils or something. I'll bet they're running yet." Joe grumbled awhile; then he agreed with his friend that what daylight was left ought to be economized in getting things ready for leaving. Shortly afterward they slipped out of the house in the deepening twilight, and moved toward the river with their precious box. Tom and Huck rose up, weak but vastly relieved, and stared after them through the chinks between the logs of the house. Follow? Not they. They were content to reach ground again without broken necks, and take the townward track over the hill. They did not talk much. They were too much absorbed in hating themselves--hating the ill luck that made them take the spade and the pick there. But for that, Injun Joe never would have suspected. He would have hidden the silver with the gold to wait there till his "revenge" was satisfied, and then he would have had the misfortune to find that money turn up missing. Bitter, bitter luck that the tools were ever brought there! They resolved to keep a lookout for that Spaniard when he should come to town spying out for chances to do his revengeful job, and follow him to "Number Two," wherever that might be. Then a ghastly thought occurred to Tom. "Revenge? What if he means US, Huck!" "Oh, don't!" said Huck, nearly fainting. They talked it all over, and as they entered town they agreed to believe that he might possibly mean somebody else--at least that he might at least mean nobody but Tom, since only Tom had testified. Very, very small comfort it was to Tom to be alone in danger! Company would be a palpable improvement, he thought. CHAPTER XXVII THE adventure of the day mightily tormented Tom's dreams that night. Four times he had his hands on that rich treasure and four times it wasted to nothingness in his fingers as sleep forsook him and wakefulness brought back the hard reality of his misfortune. As he lay in the early morning recalling the incidents of his great adventure, he noticed that they seemed curiously subdued and far away--somewhat as if they had happened in another world, or in a time long gone by. Then it occurred to him that the great adventure itself must be a dream! There was one very strong argument in favor of this idea--namely, that the quantity of coin he had seen was too vast to be real. He had never seen as much as fifty dollars in one mass before, and he was like all boys of his age and station in life, in that he imagined that all references to "hundreds" and "thousands" were mere fanciful forms of speech, and that no such sums really existed in the world. He never had supposed for a moment that so large a sum as a hundred dollars was to be found in actual money in any one's possession. If his notions of hidden treasure had been analyzed, they would have been found to consist of a handful of real dimes and a bushel of vague, splendid, ungraspable dollars. But the incidents of his adventure grew sensibly sharper and clearer under the attrition of thinking them over, and so he presently found himself leaning to the impression that the thing might not have been a dream, after all. This uncertainty must be swept away. He would snatch a hurried breakfast and go and find Huck. Huck was sitting on the gunwale of a flatboat, listlessly dangling his feet in the water and looking very melancholy. Tom concluded to let Huck lead up to the subject. If he did not do it, then the adventure would be proved to have been only a dream. "Hello, Huck!" "Hello, yourself." Silence, for a minute. "Tom, if we'd 'a' left the blame tools at the dead tree, we'd 'a' got the money. Oh, ain't it awful!" "'Tain't a dream, then, 'tain't a dream! Somehow I most wish it was. Dog'd if I don't, Huck." "What ain't a dream?" "Oh, that thing yesterday. I been half thinking it was." "Dream! If them stairs hadn't broke down you'd 'a' seen how much dream it was! I've had dreams enough all night--with that patch-eyed Spanish devil going for me all through 'em--rot him!" "No, not rot him. FIND him! Track the money!" "Tom, we'll never find him. A feller don't have only one chance for such a pile--and that one's lost. I'd feel mighty shaky if I was to see him, anyway." "Well, so'd I; but I'd like to see him, anyway--and track him out--to his Number Two." "Number Two--yes, that's it. I been thinking 'bout that. But I can't make nothing out of it. What do you reckon it is?" "I dono. It's too deep. Say, Huck--maybe it's the number of a house!" "Goody!... No, Tom, that ain't it. If it is, it ain't in this one-horse town. They ain't no numbers here." "Well, that's so. Lemme think a minute. Here--it's the number of a room--in a tavern, you know!" "Oh, that's the trick! They ain't only two taverns. We can find out quick." "You stay here, Huck, till I come." Tom was off at once. He did not care to have Huck's company in public places. He was gone half an hour. He found that in the best tavern, No. 2 had long been occupied by a young lawyer, and was still so occupied. In the less ostentatious house, No. 2 was a mystery. The tavern-keeper's young son said it was kept locked all the time, and he never saw anybody go into it or come out of it except at night; he did not know any particular reason for this state of things; had had some little curiosity, but it was rather feeble; had made the most of the mystery by entertaining himself with the idea that that room was "ha'nted"; had noticed that there was a light in there the night before. "That's what I've found out, Huck. I reckon that's the very No. 2 we're after." "I reckon it is, Tom. Now what you going to do?" "Lemme think." Tom thought a long time. Then he said: "I'll tell you. The back door of that No. 2 is the door that comes out into that little close alley between the tavern and the old rattle trap of a brick store. Now you get hold of all the door-keys you can find, and I'll nip all of auntie's, and the first dark night we'll go there and try 'em. And mind you, keep a lookout for Injun Joe, because he said he was going to drop into town and spy around once more for a chance to get his revenge. If you see him, you just follow him; and if he don't go to that No. 2, that ain't the place." "Lordy, I don't want to foller him by myself!" "Why, it'll be night, sure. He mightn't ever see you--and if he did, maybe he'd never think anything." "Well, if it's pretty dark I reckon I'll track him. I dono--I dono. I'll try." "You bet I'll follow him, if it's dark, Huck. Why, he might 'a' found out he couldn't get his revenge, and be going right after that money." "It's so, Tom, it's so. I'll foller him; I will, by jingoes!" "Now you're TALKING! Don't you ever weaken, Huck, and I won't." CHAPTER XXVIII THAT night Tom and Huck were ready for their adventure. They hung about the neighborhood of the tavern until after nine, one watching the alley at a distance and the other the tavern door. Nobody entered the alley or left it; nobody resembling the Spaniard entered or left the tavern door. The night promised to be a fair one; so Tom went home with the understanding that if a considerable degree of darkness came on, Huck was to come and "maow," whereupon he would slip out and try the keys. But the night remained clear, and Huck closed his watch and retired to bed in an empty sugar hogshead about twelve. Tuesday the boys had the same ill luck. Also Wednesday. But Thursday night promised better. Tom slipped out in good season with his aunt's old tin lantern, and a large towel to blindfold it with. He hid the lantern in Huck's sugar hogshead and the watch began. An hour before midnight the tavern closed up and its lights (the only ones thereabouts) were put out. No Spaniard had been seen. Nobody had entered or left the alley. Everything was auspicious. The blackness of darkness reigned, the perfect stillness was interrupted only by occasional mutterings of distant thunder. Tom got his lantern, lit it in the hogshead, wrapped it closely in the towel, and the two adventurers crept in the gloom toward the tavern. Huck stood sentry and Tom felt his way into the alley. Then there was a season of waiting anxiety that weighed upon Huck's spirits like a mountain. He began to wish he could see a flash from the lantern--it would frighten him, but it would at least tell him that Tom was alive yet. It seemed hours since Tom had disappeared. Surely he must have fainted; maybe he was dead; maybe his heart had burst under terror and excitement. In his uneasiness Huck found himself drawing closer and closer to the alley; fearing all sorts of dreadful things, and momentarily expecting some catastrophe to happen that would take away his breath. There was not much to take away, for he seemed only able to inhale it by thimblefuls, and his heart would soon wear itself out, the way it was beating. Suddenly there was a flash of light and Tom came tearing by him: "Run!" said he; "run, for your life!" He needn't have repeated it; once was enough; Huck was making thirty or forty miles an hour before the repetition was uttered. The boys never stopped till they reached the shed of a deserted slaughter-house at the lower end of the village. Just as they got within its shelter the storm burst and the rain poured down. As soon as Tom got his breath he said: "Huck, it was awful! I tried two of the keys, just as soft as I could; but they seemed to make such a power of racket that I couldn't hardly get my breath I was so scared. They wouldn't turn in the lock, either. Well, without noticing what I was doing, I took hold of the knob, and open comes the door! It warn't locked! I hopped in, and shook off the towel, and, GREAT CAESAR'S GHOST!" "What!--what'd you see, Tom?" "Huck, I most stepped onto Injun Joe's hand!" "No!" "Yes! He was lying there, sound asleep on the floor, with his old patch on his eye and his arms spread out." "Lordy, what did you do? Did he wake up?" "No, never budged. Drunk, I reckon. I just grabbed that towel and started!" "I'd never 'a' thought of the towel, I bet!" "Well, I would. My aunt would make me mighty sick if I lost it." "Say, Tom, did you see that box?" "Huck, I didn't wait to look around. I didn't see the box, I didn't see the cross. I didn't see anything but a bottle and a tin cup on the floor by Injun Joe; yes, I saw two barrels and lots more bottles in the room. Don't you see, now, what's the matter with that ha'nted room?" "How?" "Why, it's ha'nted with whiskey! Maybe ALL the Temperance Taverns have got a ha'nted room, hey, Huck?" "Well, I reckon maybe that's so. Who'd 'a' thought such a thing? But say, Tom, now's a mighty good time to get that box, if Injun Joe's drunk." "It is, that! You try it!" Huck shuddered. "Well, no--I reckon not." "And I reckon not, Huck. Only one bottle alongside of Injun Joe ain't enough. If there'd been three, he'd be drunk enough and I'd do it." There was a long pause for reflection, and then Tom said: "Lookyhere, Huck, less not try that thing any more till we know Injun Joe's not in there. It's too scary. Now, if we watch every night, we'll be dead sure to see him go out, some time or other, and then we'll snatch that box quicker'n lightning." "Well, I'm agreed. I'll watch the whole night long, and I'll do it every night, too, if you'll do the other part of the job." "All right, I will. All you got to do is to trot up Hooper Street a block and maow--and if I'm asleep, you throw some gravel at the window and that'll fetch me." "Agreed, and good as wheat!" "Now, Huck, the storm's over, and I'll go home. It'll begin to be daylight in a couple of hours. You go back and watch that long, will you?" "I said I would, Tom, and I will. I'll ha'nt that tavern every night for a year! I'll sleep all day and I'll stand watch all night." "That's all right. Now, where you going to sleep?" "In Ben Rogers' hayloft. He lets me, and so does his pap's nigger man, Uncle Jake. I tote water for Uncle Jake whenever he wants me to, and any time I ask him he gives me a little something to eat if he can spare it. That's a mighty good nigger, Tom. He likes me, becuz I don't ever act as if I was above him. Sometime I've set right down and eat WITH him. But you needn't tell that. A body's got to do things when he's awful hungry he wouldn't want to do as a steady thing." "Well, if I don't want you in the daytime, I'll let you sleep. I won't come bothering around. Any time you see something's up, in the night, just skip right around and maow." CHAPTER XXIX THE first thing Tom heard on Friday morning was a glad piece of news --Judge Thatcher's family had come back to town the night before. Both Injun Joe and the treasure sunk into secondary importance for a moment, and Becky took the chief place in the boy's interest. He saw her and they had an exhausting good time playing "hi-spy" and "gully-keeper" with a crowd of their school-mates. The day was completed and crowned in a peculiarly satisfactory way: Becky teased her mother to appoint the next day for the long-promised and long-delayed picnic, and she consented. The child's delight was boundless; and Tom's not more moderate. The invitations were sent out before sunset, and straightway the young folks of the village were thrown into a fever of preparation and pleasurable anticipation. Tom's excitement enabled him to keep awake until a pretty late hour, and he had good hopes of hearing Huck's "maow," and of having his treasure to astonish Becky and the picnickers with, next day; but he was disappointed. No signal came that night. Morning came, eventually, and by ten or eleven o'clock a giddy and rollicking company were gathered at Judge Thatcher's, and everything was ready for a start. It was not the custom for elderly people to mar the picnics with their presence. The children were considered safe enough under the wings of a few young ladies of eighteen and a few young gentlemen of twenty-three or thereabouts. The old steam ferryboat was chartered for the occasion; presently the gay throng filed up the main street laden with provision-baskets. Sid was sick and had to miss the fun; Mary remained at home to entertain him. The last thing Mrs. Thatcher said to Becky, was: "You'll not get back till late. Perhaps you'd better stay all night with some of the girls that live near the ferry-landing, child." "Then I'll stay with Susy Harper, mamma." "Very well. And mind and behave yourself and don't be any trouble." Presently, as they tripped along, Tom said to Becky: "Say--I'll tell you what we'll do. 'Stead of going to Joe Harper's we'll climb right up the hill and stop at the Widow Douglas'. She'll have ice-cream! She has it most every day--dead loads of it. And she'll be awful glad to have us." "Oh, that will be fun!" Then Becky reflected a moment and said: "But what will mamma say?" "How'll she ever know?" The girl turned the idea over in her mind, and said reluctantly: "I reckon it's wrong--but--" "But shucks! Your mother won't know, and so what's the harm? All she wants is that you'll be safe; and I bet you she'd 'a' said go there if she'd 'a' thought of it. I know she would!" The Widow Douglas' splendid hospitality was a tempting bait. It and Tom's persuasions presently carried the day. So it was decided to say nothing anybody about the night's programme. Presently it occurred to Tom that maybe Huck might come this very night and give the signal. The thought took a deal of the spirit out of his anticipations. Still he could not bear to give up the fun at Widow Douglas'. And why should he give it up, he reasoned--the signal did not come the night before, so why should it be any more likely to come to-night? The sure fun of the evening outweighed the uncertain treasure; and, boy-like, he determined to yield to the stronger inclination and not allow himself to think of the box of money another time that day. Three miles below town the ferryboat stopped at the mouth of a woody hollow and tied up. The crowd swarmed ashore and soon the forest distances and craggy heights echoed far and near with shoutings and laughter. All the different ways of getting hot and tired were gone through with, and by-and-by the rovers straggled back to camp fortified with responsible appetites, and then the destruction of the good things began. After the feast there was a refreshing season of rest and chat in the shade of spreading oaks. By-and-by somebody shouted: "Who's ready for the cave?" Everybody was. Bundles of candles were procured, and straightway there was a general scamper up the hill. The mouth of the cave was up the hillside--an opening shaped like a letter A. Its massive oaken door stood unbarred. Within was a small chamber, chilly as an ice-house, and walled by Nature with solid limestone that was dewy with a cold sweat. It was romantic and mysterious to stand here in the deep gloom and look out upon the green valley shining in the sun. But the impressiveness of the situation quickly wore off, and the romping began again. The moment a candle was lighted there was a general rush upon the owner of it; a struggle and a gallant defence followed, but the candle was soon knocked down or blown out, and then there was a glad clamor of laughter and a new chase. But all things have an end. By-and-by the procession went filing down the steep descent of the main avenue, the flickering rank of lights dimly revealing the lofty walls of rock almost to their point of junction sixty feet overhead. This main avenue was not more than eight or ten feet wide. Every few steps other lofty and still narrower crevices branched from it on either hand--for McDougal's cave was but a vast labyrinth of crooked aisles that ran into each other and out again and led nowhere. It was said that one might wander days and nights together through its intricate tangle of rifts and chasms, and never find the end of the cave; and that he might go down, and down, and still down, into the earth, and it was just the same--labyrinth under labyrinth, and no end to any of them. No man "knew" the cave. That was an impossible thing. Most of the young men knew a portion of it, and it was not customary to venture much beyond this known portion. Tom Sawyer knew as much of the cave as any one. The procession moved along the main avenue some three-quarters of a mile, and then groups and couples began to slip aside into branch avenues, fly along the dismal corridors, and take each other by surprise at points where the corridors joined again. Parties were able to elude each other for the space of half an hour without going beyond the "known" ground. By-and-by, one group after another came straggling back to the mouth of the cave, panting, hilarious, smeared from head to foot with tallow drippings, daubed with clay, and entirely delighted with the success of the day. Then they were astonished to find that they had been taking no note of time and that night was about at hand. The clanging bell had been calling for half an hour. However, this sort of close to the day's adventures was romantic and therefore satisfactory. When the ferryboat with her wild freight pushed into the stream, nobody cared sixpence for the wasted time but the captain of the craft. Huck was already upon his watch when the ferryboat's lights went glinting past the wharf. He heard no noise on board, for the young people were as subdued and still as people usually are who are nearly tired to death. He wondered what boat it was, and why she did not stop at the wharf--and then he dropped her out of his mind and put his attention upon his business. The night was growing cloudy and dark. Ten o'clock came, and the noise of vehicles ceased, scattered lights began to wink out, all straggling foot-passengers disappeared, the village betook itself to its slumbers and left the small watcher alone with the silence and the ghosts. Eleven o'clock came, and the tavern lights were put out; darkness everywhere, now. Huck waited what seemed a weary long time, but nothing happened. His faith was weakening. Was there any use? Was there really any use? Why not give it up and turn in? A noise fell upon his ear. He was all attention in an instant. The alley door closed softly. He sprang to the corner of the brick store. The next moment two men brushed by him, and one seemed to have something under his arm. It must be that box! So they were going to remove the treasure. Why call Tom now? It would be absurd--the men would get away with the box and never be found again. No, he would stick to their wake and follow them; he would trust to the darkness for security from discovery. So communing with himself, Huck stepped out and glided along behind the men, cat-like, with bare feet, allowing them to keep just far enough ahead not to be invisible. They moved up the river street three blocks, then turned to the left up a cross-street. They went straight ahead, then, until they came to the path that led up Cardiff Hill; this they took. They passed by the old Welshman's house, half-way up the hill, without hesitating, and still climbed upward. Good, thought Huck, they will bury it in the old quarry. But they never stopped at the quarry. They passed on, up the summit. They plunged into the narrow path between the tall sumach bushes, and were at once hidden in the gloom. Huck closed up and shortened his distance, now, for they would never be able to see him. He trotted along awhile; then slackened his pace, fearing he was gaining too fast; moved on a piece, then stopped altogether; listened; no sound; none, save that he seemed to hear the beating of his own heart. The hooting of an owl came over the hill--ominous sound! But no footsteps. Heavens, was everything lost! He was about to spring with winged feet, when a man cleared his throat not four feet from him! Huck's heart shot into his throat, but he swallowed it again; and then he stood there shaking as if a dozen agues had taken charge of him at once, and so weak that he thought he must surely fall to the ground. He knew where he was. He knew he was within five steps of the stile leading into Widow Douglas' grounds. Very well, he thought, let them bury it there; it won't be hard to find. Now there was a voice--a very low voice--Injun Joe's: "Damn her, maybe she's got company--there's lights, late as it is." "I can't see any." This was that stranger's voice--the stranger of the haunted house. A deadly chill went to Huck's heart--this, then, was the "revenge" job! His thought was, to fly. Then he remembered that the Widow Douglas had been kind to him more than once, and maybe these men were going to murder her. He wished he dared venture to warn her; but he knew he didn't dare--they might come and catch him. He thought all this and more in the moment that elapsed between the stranger's remark and Injun Joe's next--which was-- "Because the bush is in your way. Now--this way--now you see, don't you?" "Yes. Well, there IS company there, I reckon. Better give it up." "Give it up, and I just leaving this country forever! Give it up and maybe never have another chance. I tell you again, as I've told you before, I don't care for her swag--you may have it. But her husband was rough on me--many times he was rough on me--and mainly he was the justice of the peace that jugged me for a vagrant. And that ain't all. It ain't a millionth part of it! He had me HORSEWHIPPED!--horsewhipped in front of the jail, like a nigger!--with all the town looking on! HORSEWHIPPED!--do you understand? He took advantage of me and died. But I'll take it out of HER." "Oh, don't kill her! Don't do that!" "Kill? Who said anything about killing? I would kill HIM if he was here; but not her. When you want to get revenge on a woman you don't kill her--bosh! you go for her looks. You slit her nostrils--you notch her ears like a sow!" "By God, that's--" "Keep your opinion to yourself! It will be safest for you. I'll tie her to the bed. If she bleeds to death, is that my fault? I'll not cry, if she does. My friend, you'll help me in this thing--for MY sake --that's why you're here--I mightn't be able alone. If you flinch, I'll kill you. Do you understand that? And if I have to kill you, I'll kill her--and then I reckon nobody'll ever know much about who done this business." "Well, if it's got to be done, let's get at it. The quicker the better--I'm all in a shiver." "Do it NOW? And company there? Look here--I'll get suspicious of you, first thing you know. No--we'll wait till the lights are out--there's no hurry." Huck felt that a silence was going to ensue--a thing still more awful than any amount of murderous talk; so he held his breath and stepped gingerly back; planted his foot carefully and firmly, after balancing, one-legged, in a precarious way and almost toppling over, first on one side and then on the other. He took another step back, with the same elaboration and the same risks; then another and another, and--a twig snapped under his foot! His breath stopped and he listened. There was no sound--the stillness was perfect. His gratitude was measureless. Now he turned in his tracks, between the walls of sumach bushes--turned himself as carefully as if he were a ship--and then stepped quickly but cautiously along. When he emerged at the quarry he felt secure, and so he picked up his nimble heels and flew. Down, down he sped, till he reached the Welshman's. He banged at the door, and presently the heads of the old man and his two stalwart sons were thrust from windows. "What's the row there? Who's banging? What do you want?" "Let me in--quick! I'll tell everything." "Why, who are you?" "Huckleberry Finn--quick, let me in!" "Huckleberry Finn, indeed! It ain't a name to open many doors, I judge! But let him in, lads, and let's see what's the trouble." "Please don't ever tell I told you," were Huck's first words when he got in. "Please don't--I'd be killed, sure--but the widow's been good friends to me sometimes, and I want to tell--I WILL tell if you'll promise you won't ever say it was me." "By George, he HAS got something to tell, or he wouldn't act so!" exclaimed the old man; "out with it and nobody here'll ever tell, lad." Three minutes later the old man and his sons, well armed, were up the hill, and just entering the sumach path on tiptoe, their weapons in their hands. Huck accompanied them no further. He hid behind a great bowlder and fell to listening. There was a lagging, anxious silence, and then all of a sudden there was an explosion of firearms and a cry. Huck waited for no particulars. He sprang away and sped down the hill as fast as his legs could carry him. CHAPTER XXX AS the earliest suspicion of dawn appeared on Sunday morning, Huck came groping up the hill and rapped gently at the old Welshman's door. The inmates were asleep, but it was a sleep that was set on a hair-trigger, on account of the exciting episode of the night. A call came from a window: "Who's there!" Huck's scared voice answered in a low tone: "Please let me in! It's only Huck Finn!" "It's a name that can open this door night or day, lad!--and welcome!" These were strange words to the vagabond boy's ears, and the pleasantest he had ever heard. He could not recollect that the closing word had ever been applied in his case before. The door was quickly unlocked, and he entered. Huck was given a seat and the old man and his brace of tall sons speedily dressed themselves. "Now, my boy, I hope you're good and hungry, because breakfast will be ready as soon as the sun's up, and we'll have a piping hot one, too --make yourself easy about that! I and the boys hoped you'd turn up and stop here last night." "I was awful scared," said Huck, "and I run. I took out when the pistols went off, and I didn't stop for three mile. I've come now becuz I wanted to know about it, you know; and I come before daylight becuz I didn't want to run across them devils, even if they was dead." "Well, poor chap, you do look as if you'd had a hard night of it--but there's a bed here for you when you've had your breakfast. No, they ain't dead, lad--we are sorry enough for that. You see we knew right where to put our hands on them, by your description; so we crept along on tiptoe till we got within fifteen feet of them--dark as a cellar that sumach path was--and just then I found I was going to sneeze. It was the meanest kind of luck! I tried to keep it back, but no use --'twas bound to come, and it did come! I was in the lead with my pistol raised, and when the sneeze started those scoundrels a-rustling to get out of the path, I sung out, 'Fire boys!' and blazed away at the place where the rustling was. So did the boys. But they were off in a jiffy, those villains, and we after them, down through the woods. I judge we never touched them. They fired a shot apiece as they started, but their bullets whizzed by and didn't do us any harm. As soon as we lost the sound of their feet we quit chasing, and went down and stirred up the constables. They got a posse together, and went off to guard the river bank, and as soon as it is light the sheriff and a gang are going to beat up the woods. My boys will be with them presently. I wish we had some sort of description of those rascals--'twould help a good deal. But you couldn't see what they were like, in the dark, lad, I suppose?" "Oh yes; I saw them down-town and follered them." "Splendid! Describe them--describe them, my boy!" "One's the old deaf and dumb Spaniard that's ben around here once or twice, and t'other's a mean-looking, ragged--" "That's enough, lad, we know the men! Happened on them in the woods back of the widow's one day, and they slunk away. Off with you, boys, and tell the sheriff--get your breakfast to-morrow morning!" The Welshman's sons departed at once. As they were leaving the room Huck sprang up and exclaimed: "Oh, please don't tell ANYbody it was me that blowed on them! Oh, please!" "All right if you say it, Huck, but you ought to have the credit of what you did." "Oh no, no! Please don't tell!" When the young men were gone, the old Welshman said: "They won't tell--and I won't. But why don't you want it known?" Huck would not explain, further than to say that he already knew too much about one of those men and would not have the man know that he knew anything against him for the whole world--he would be killed for knowing it, sure. The old man promised secrecy once more, and said: "How did you come to follow these fellows, lad? Were they looking suspicious?" Huck was silent while he framed a duly cautious reply. Then he said: "Well, you see, I'm a kind of a hard lot,--least everybody says so, and I don't see nothing agin it--and sometimes I can't sleep much, on account of thinking about it and sort of trying to strike out a new way of doing. That was the way of it last night. I couldn't sleep, and so I come along up-street 'bout midnight, a-turning it all over, and when I got to that old shackly brick store by the Temperance Tavern, I backed up agin the wall to have another think. Well, just then along comes these two chaps slipping along close by me, with something under their arm, and I reckoned they'd stole it. One was a-smoking, and t'other one wanted a light; so they stopped right before me and the cigars lit up their faces and I see that the big one was the deaf and dumb Spaniard, by his white whiskers and the patch on his eye, and t'other one was a rusty, ragged-looking devil." "Could you see the rags by the light of the cigars?" This staggered Huck for a moment. Then he said: "Well, I don't know--but somehow it seems as if I did." "Then they went on, and you--" "Follered 'em--yes. That was it. I wanted to see what was up--they sneaked along so. I dogged 'em to the widder's stile, and stood in the dark and heard the ragged one beg for the widder, and the Spaniard swear he'd spile her looks just as I told you and your two--" "What! The DEAF AND DUMB man said all that!" Huck had made another terrible mistake! He was trying his best to keep the old man from getting the faintest hint of who the Spaniard might be, and yet his tongue seemed determined to get him into trouble in spite of all he could do. He made several efforts to creep out of his scrape, but the old man's eye was upon him and he made blunder after blunder. Presently the Welshman said: "My boy, don't be afraid of me. I wouldn't hurt a hair of your head for all the world. No--I'd protect you--I'd protect you. This Spaniard is not deaf and dumb; you've let that slip without intending it; you can't cover that up now. You know something about that Spaniard that you want to keep dark. Now trust me--tell me what it is, and trust me --I won't betray you." Huck looked into the old man's honest eyes a moment, then bent over and whispered in his ear: "'Tain't a Spaniard--it's Injun Joe!" The Welshman almost jumped out of his chair. In a moment he said: "It's all plain enough, now. When you talked about notching ears and slitting noses I judged that that was your own embellishment, because white men don't take that sort of revenge. But an Injun! That's a different matter altogether." During breakfast the talk went on, and in the course of it the old man said that the last thing which he and his sons had done, before going to bed, was to get a lantern and examine the stile and its vicinity for marks of blood. They found none, but captured a bulky bundle of-- "Of WHAT?" If the words had been lightning they could not have leaped with a more stunning suddenness from Huck's blanched lips. His eyes were staring wide, now, and his breath suspended--waiting for the answer. The Welshman started--stared in return--three seconds--five seconds--ten --then replied: "Of burglar's tools. Why, what's the MATTER with you?" Huck sank back, panting gently, but deeply, unutterably grateful. The Welshman eyed him gravely, curiously--and presently said: "Yes, burglar's tools. That appears to relieve you a good deal. But what did give you that turn? What were YOU expecting we'd found?" Huck was in a close place--the inquiring eye was upon him--he would have given anything for material for a plausible answer--nothing suggested itself--the inquiring eye was boring deeper and deeper--a senseless reply offered--there was no time to weigh it, so at a venture he uttered it--feebly: "Sunday-school books, maybe." Poor Huck was too distressed to smile, but the old man laughed loud and joyously, shook up the details of his anatomy from head to foot, and ended by saying that such a laugh was money in a-man's pocket, because it cut down the doctor's bill like everything. Then he added: "Poor old chap, you're white and jaded--you ain't well a bit--no wonder you're a little flighty and off your balance. But you'll come out of it. Rest and sleep will fetch you out all right, I hope." Huck was irritated to think he had been such a goose and betrayed such a suspicious excitement, for he had dropped the idea that the parcel brought from the tavern was the treasure, as soon as he had heard the talk at the widow's stile. He had only thought it was not the treasure, however--he had not known that it wasn't--and so the suggestion of a captured bundle was too much for his self-possession. But on the whole he felt glad the little episode had happened, for now he knew beyond all question that that bundle was not THE bundle, and so his mind was at rest and exceedingly comfortable. In fact, everything seemed to be drifting just in the right direction, now; the treasure must be still in No. 2, the men would be captured and jailed that day, and he and Tom could seize the gold that night without any trouble or any fear of interruption. Just as breakfast was completed there was a knock at the door. Huck jumped for a hiding-place, for he had no mind to be connected even remotely with the late event. The Welshman admitted several ladies and gentlemen, among them the Widow Douglas, and noticed that groups of citizens were climbing up the hill--to stare at the stile. So the news had spread. The Welshman had to tell the story of the night to the visitors. The widow's gratitude for her preservation was outspoken. "Don't say a word about it, madam. There's another that you're more beholden to than you are to me and my boys, maybe, but he don't allow me to tell his name. We wouldn't have been there but for him." Of course this excited a curiosity so vast that it almost belittled the main matter--but the Welshman allowed it to eat into the vitals of his visitors, and through them be transmitted to the whole town, for he refused to part with his secret. When all else had been learned, the widow said: "I went to sleep reading in bed and slept straight through all that noise. Why didn't you come and wake me?" "We judged it warn't worth while. Those fellows warn't likely to come again--they hadn't any tools left to work with, and what was the use of waking you up and scaring you to death? My three negro men stood guard at your house all the rest of the night. They've just come back." More visitors came, and the story had to be told and retold for a couple of hours more. There was no Sabbath-school during day-school vacation, but everybody was early at church. The stirring event was well canvassed. News came that not a sign of the two villains had been yet discovered. When the sermon was finished, Judge Thatcher's wife dropped alongside of Mrs. Harper as she moved down the aisle with the crowd and said: "Is my Becky going to sleep all day? I just expected she would be tired to death." "Your Becky?" "Yes," with a startled look--"didn't she stay with you last night?" "Why, no." Mrs. Thatcher turned pale, and sank into a pew, just as Aunt Polly, talking briskly with a friend, passed by. Aunt Polly said: "Good-morning, Mrs. Thatcher. Good-morning, Mrs. Harper. I've got a boy that's turned up missing. I reckon my Tom stayed at your house last night--one of you. And now he's afraid to come to church. I've got to settle with him." Mrs. Thatcher shook her head feebly and turned paler than ever. "He didn't stay with us," said Mrs. Harper, beginning to look uneasy. A marked anxiety came into Aunt Polly's face. "Joe Harper, have you seen my Tom this morning?" "No'm." "When did you see him last?" Joe tried to remember, but was not sure he could say. The people had stopped moving out of church. Whispers passed along, and a boding uneasiness took possession of every countenance. Children were anxiously questioned, and young teachers. They all said they had not noticed whether Tom and Becky were on board the ferryboat on the homeward trip; it was dark; no one thought of inquiring if any one was missing. One young man finally blurted out his fear that they were still in the cave! Mrs. Thatcher swooned away. Aunt Polly fell to crying and wringing her hands. The alarm swept from lip to lip, from group to group, from street to street, and within five minutes the bells were wildly clanging and the whole town was up! The Cardiff Hill episode sank into instant insignificance, the burglars were forgotten, horses were saddled, skiffs were manned, the ferryboat ordered out, and before the horror was half an hour old, two hundred men were pouring down highroad and river toward the cave. All the long afternoon the village seemed empty and dead. Many women visited Aunt Polly and Mrs. Thatcher and tried to comfort them. They cried with them, too, and that was still better than words. All the tedious night the town waited for news; but when the morning dawned at last, all the word that came was, "Send more candles--and send food." Mrs. Thatcher was almost crazed; and Aunt Polly, also. Judge Thatcher sent messages of hope and encouragement from the cave, but they conveyed no real cheer. The old Welshman came home toward daylight, spattered with candle-grease, smeared with clay, and almost worn out. He found Huck still in the bed that had been provided for him, and delirious with fever. The physicians were all at the cave, so the Widow Douglas came and took charge of the patient. She said she would do her best by him, because, whether he was good, bad, or indifferent, he was the Lord's, and nothing that was the Lord's was a thing to be neglected. The Welshman said Huck had good spots in him, and the widow said: "You can depend on it. That's the Lord's mark. He don't leave it off. He never does. Puts it somewhere on every creature that comes from his hands." Early in the forenoon parties of jaded men began to straggle into the village, but the strongest of the citizens continued searching. All the news that could be gained was that remotenesses of the cavern were being ransacked that had never been visited before; that every corner and crevice was going to be thoroughly searched; that wherever one wandered through the maze of passages, lights were to be seen flitting hither and thither in the distance, and shoutings and pistol-shots sent their hollow reverberations to the ear down the sombre aisles. In one place, far from the section usually traversed by tourists, the names "BECKY & TOM" had been found traced upon the rocky wall with candle-smoke, and near at hand a grease-soiled bit of ribbon. Mrs. Thatcher recognized the ribbon and cried over it. She said it was the last relic she should ever have of her child; and that no other memorial of her could ever be so precious, because this one parted latest from the living body before the awful death came. Some said that now and then, in the cave, a far-away speck of light would glimmer, and then a glorious shout would burst forth and a score of men go trooping down the echoing aisle--and then a sickening disappointment always followed; the children were not there; it was only a searcher's light. Three dreadful days and nights dragged their tedious hours along, and the village sank into a hopeless stupor. No one had heart for anything. The accidental discovery, just made, that the proprietor of the Temperance Tavern kept liquor on his premises, scarcely fluttered the public pulse, tremendous as the fact was. In a lucid interval, Huck feebly led up to the subject of taverns, and finally asked--dimly dreading the worst--if anything had been discovered at the Temperance Tavern since he had been ill. "Yes," said the widow. Huck started up in bed, wild-eyed: "What? What was it?" "Liquor!--and the place has been shut up. Lie down, child--what a turn you did give me!" "Only tell me just one thing--only just one--please! Was it Tom Sawyer that found it?" The widow burst into tears. "Hush, hush, child, hush! I've told you before, you must NOT talk. You are very, very sick!" Then nothing but liquor had been found; there would have been a great powwow if it had been the gold. So the treasure was gone forever--gone forever! But what could she be crying about? Curious that she should cry. These thoughts worked their dim way through Huck's mind, and under the weariness they gave him he fell asleep. The widow said to herself: "There--he's asleep, poor wreck. Tom Sawyer find it! Pity but somebody could find Tom Sawyer! Ah, there ain't many left, now, that's got hope enough, or strength enough, either, to go on searching." CHAPTER XXXI NOW to return to Tom and Becky's share in the picnic. They tripped along the murky aisles with the rest of the company, visiting the familiar wonders of the cave--wonders dubbed with rather over-descriptive names, such as "The Drawing-Room," "The Cathedral," "Aladdin's Palace," and so on. Presently the hide-and-seek frolicking began, and Tom and Becky engaged in it with zeal until the exertion began to grow a trifle wearisome; then they wandered down a sinuous avenue holding their candles aloft and reading the tangled web-work of names, dates, post-office addresses, and mottoes with which the rocky walls had been frescoed (in candle-smoke). Still drifting along and talking, they scarcely noticed that they were now in a part of the cave whose walls were not frescoed. They smoked their own names under an overhanging shelf and moved on. Presently they came to a place where a little stream of water, trickling over a ledge and carrying a limestone sediment with it, had, in the slow-dragging ages, formed a laced and ruffled Niagara in gleaming and imperishable stone. Tom squeezed his small body behind it in order to illuminate it for Becky's gratification. He found that it curtained a sort of steep natural stairway which was enclosed between narrow walls, and at once the ambition to be a discoverer seized him. Becky responded to his call, and they made a smoke-mark for future guidance, and started upon their quest. They wound this way and that, far down into the secret depths of the cave, made another mark, and branched off in search of novelties to tell the upper world about. In one place they found a spacious cavern, from whose ceiling depended a multitude of shining stalactites of the length and circumference of a man's leg; they walked all about it, wondering and admiring, and presently left it by one of the numerous passages that opened into it. This shortly brought them to a bewitching spring, whose basin was incrusted with a frostwork of glittering crystals; it was in the midst of a cavern whose walls were supported by many fantastic pillars which had been formed by the joining of great stalactites and stalagmites together, the result of the ceaseless water-drip of centuries. Under the roof vast knots of bats had packed themselves together, thousands in a bunch; the lights disturbed the creatures and they came flocking down by hundreds, squeaking and darting furiously at the candles. Tom knew their ways and the danger of this sort of conduct. He seized Becky's hand and hurried her into the first corridor that offered; and none too soon, for a bat struck Becky's light out with its wing while she was passing out of the cavern. The bats chased the children a good distance; but the fugitives plunged into every new passage that offered, and at last got rid of the perilous things. Tom found a subterranean lake, shortly, which stretched its dim length away until its shape was lost in the shadows. He wanted to explore its borders, but concluded that it would be best to sit down and rest awhile, first. Now, for the first time, the deep stillness of the place laid a clammy hand upon the spirits of the children. Becky said: "Why, I didn't notice, but it seems ever so long since I heard any of the others." "Come to think, Becky, we are away down below them--and I don't know how far away north, or south, or east, or whichever it is. We couldn't hear them here." Becky grew apprehensive. "I wonder how long we've been down here, Tom? We better start back." "Yes, I reckon we better. P'raps we better." "Can you find the way, Tom? It's all a mixed-up crookedness to me." "I reckon I could find it--but then the bats. If they put our candles out it will be an awful fix. Let's try some other way, so as not to go through there." "Well. But I hope we won't get lost. It would be so awful!" and the girl shuddered at the thought of the dreadful possibilities. They started through a corridor, and traversed it in silence a long way, glancing at each new opening, to see if there was anything familiar about the look of it; but they were all strange. Every time Tom made an examination, Becky would watch his face for an encouraging sign, and he would say cheerily: "Oh, it's all right. This ain't the one, but we'll come to it right away!" But he felt less and less hopeful with each failure, and presently began to turn off into diverging avenues at sheer random, in desperate hope of finding the one that was wanted. He still said it was "all right," but there was such a leaden dread at his heart that the words had lost their ring and sounded just as if he had said, "All is lost!" Becky clung to his side in an anguish of fear, and tried hard to keep back the tears, but they would come. At last she said: "Oh, Tom, never mind the bats, let's go back that way! We seem to get worse and worse off all the time." "Listen!" said he. Profound silence; silence so deep that even their breathings were conspicuous in the hush. Tom shouted. The call went echoing down the empty aisles and died out in the distance in a faint sound that resembled a ripple of mocking laughter. "Oh, don't do it again, Tom, it is too horrid," said Becky. "It is horrid, but I better, Becky; they might hear us, you know," and he shouted again. The "might" was even a chillier horror than the ghostly laughter, it so confessed a perishing hope. The children stood still and listened; but there was no result. Tom turned upon the back track at once, and hurried his steps. It was but a little while before a certain indecision in his manner revealed another fearful fact to Becky--he could not find his way back! "Oh, Tom, you didn't make any marks!" "Becky, I was such a fool! Such a fool! I never thought we might want to come back! No--I can't find the way. It's all mixed up." "Tom, Tom, we're lost! we're lost! We never can get out of this awful place! Oh, why DID we ever leave the others!" She sank to the ground and burst into such a frenzy of crying that Tom was appalled with the idea that she might die, or lose her reason. He sat down by her and put his arms around her; she buried her face in his bosom, she clung to him, she poured out her terrors, her unavailing regrets, and the far echoes turned them all to jeering laughter. Tom begged her to pluck up hope again, and she said she could not. He fell to blaming and abusing himself for getting her into this miserable situation; this had a better effect. She said she would try to hope again, she would get up and follow wherever he might lead if only he would not talk like that any more. For he was no more to blame than she, she said. So they moved on again--aimlessly--simply at random--all they could do was to move, keep moving. For a little while, hope made a show of reviving--not with any reason to back it, but only because it is its nature to revive when the spring has not been taken out of it by age and familiarity with failure. By-and-by Tom took Becky's candle and blew it out. This economy meant so much! Words were not needed. Becky understood, and her hope died again. She knew that Tom had a whole candle and three or four pieces in his pockets--yet he must economize. By-and-by, fatigue began to assert its claims; the children tried to pay attention, for it was dreadful to think of sitting down when time was grown to be so precious, moving, in some direction, in any direction, was at least progress and might bear fruit; but to sit down was to invite death and shorten its pursuit. At last Becky's frail limbs refused to carry her farther. She sat down. Tom rested with her, and they talked of home, and the friends there, and the comfortable beds and, above all, the light! Becky cried, and Tom tried to think of some way of comforting her, but all his encouragements were grown threadbare with use, and sounded like sarcasms. Fatigue bore so heavily upon Becky that she drowsed off to sleep. Tom was grateful. He sat looking into her drawn face and saw it grow smooth and natural under the influence of pleasant dreams; and by-and-by a smile dawned and rested there. The peaceful face reflected somewhat of peace and healing into his own spirit, and his thoughts wandered away to bygone times and dreamy memories. While he was deep in his musings, Becky woke up with a breezy little laugh--but it was stricken dead upon her lips, and a groan followed it. "Oh, how COULD I sleep! I wish I never, never had waked! No! No, I don't, Tom! Don't look so! I won't say it again." "I'm glad you've slept, Becky; you'll feel rested, now, and we'll find the way out." "We can try, Tom; but I've seen such a beautiful country in my dream. I reckon we are going there." "Maybe not, maybe not. Cheer up, Becky, and let's go on trying." They rose up and wandered along, hand in hand and hopeless. They tried to estimate how long they had been in the cave, but all they knew was that it seemed days and weeks, and yet it was plain that this could not be, for their candles were not gone yet. A long time after this--they could not tell how long--Tom said they must go softly and listen for dripping water--they must find a spring. They found one presently, and Tom said it was time to rest again. Both were cruelly tired, yet Becky said she thought she could go a little farther. She was surprised to hear Tom dissent. She could not understand it. They sat down, and Tom fastened his candle to the wall in front of them with some clay. Thought was soon busy; nothing was said for some time. Then Becky broke the silence: "Tom, I am so hungry!" Tom took something out of his pocket. "Do you remember this?" said he. Becky almost smiled. "It's our wedding-cake, Tom." "Yes--I wish it was as big as a barrel, for it's all we've got." "I saved it from the picnic for us to dream on, Tom, the way grown-up people do with wedding-cake--but it'll be our--" She dropped the sentence where it was. Tom divided the cake and Becky ate with good appetite, while Tom nibbled at his moiety. There was abundance of cold water to finish the feast with. By-and-by Becky suggested that they move on again. Tom was silent a moment. Then he said: "Becky, can you bear it if I tell you something?" Becky's face paled, but she thought she could. "Well, then, Becky, we must stay here, where there's water to drink. That little piece is our last candle!" Becky gave loose to tears and wailings. Tom did what he could to comfort her, but with little effect. At length Becky said: "Tom!" "Well, Becky?" "They'll miss us and hunt for us!" "Yes, they will! Certainly they will!" "Maybe they're hunting for us now, Tom." "Why, I reckon maybe they are. I hope they are." "When would they miss us, Tom?" "When they get back to the boat, I reckon." "Tom, it might be dark then--would they notice we hadn't come?" "I don't know. But anyway, your mother would miss you as soon as they got home." A frightened look in Becky's face brought Tom to his senses and he saw that he had made a blunder. Becky was not to have gone home that night! The children became silent and thoughtful. In a moment a new burst of grief from Becky showed Tom that the thing in his mind had struck hers also--that the Sabbath morning might be half spent before Mrs. Thatcher discovered that Becky was not at Mrs. Harper's. The children fastened their eyes upon their bit of candle and watched it melt slowly and pitilessly away; saw the half inch of wick stand alone at last; saw the feeble flame rise and fall, climb the thin column of smoke, linger at its top a moment, and then--the horror of utter darkness reigned! How long afterward it was that Becky came to a slow consciousness that she was crying in Tom's arms, neither could tell. All that they knew was, that after what seemed a mighty stretch of time, both awoke out of a dead stupor of sleep and resumed their miseries once more. Tom said it might be Sunday, now--maybe Monday. He tried to get Becky to talk, but her sorrows were too oppressive, all her hopes were gone. Tom said that they must have been missed long ago, and no doubt the search was going on. He would shout and maybe some one would come. He tried it; but in the darkness the distant echoes sounded so hideously that he tried it no more. The hours wasted away, and hunger came to torment the captives again. A portion of Tom's half of the cake was left; they divided and ate it. But they seemed hungrier than before. The poor morsel of food only whetted desire. By-and-by Tom said: "SH! Did you hear that?" Both held their breath and listened. There was a sound like the faintest, far-off shout. Instantly Tom answered it, and leading Becky by the hand, started groping down the corridor in its direction. Presently he listened again; again the sound was heard, and apparently a little nearer. "It's them!" said Tom; "they're coming! Come along, Becky--we're all right now!" The joy of the prisoners was almost overwhelming. Their speed was slow, however, because pitfalls were somewhat common, and had to be guarded against. They shortly came to one and had to stop. It might be three feet deep, it might be a hundred--there was no passing it at any rate. Tom got down on his breast and reached as far down as he could. No bottom. They must stay there and wait until the searchers came. They listened; evidently the distant shoutings were growing more distant! a moment or two more and they had gone altogether. The heart-sinking misery of it! Tom whooped until he was hoarse, but it was of no use. He talked hopefully to Becky; but an age of anxious waiting passed and no sounds came again. The children groped their way back to the spring. The weary time dragged on; they slept again, and awoke famished and woe-stricken. Tom believed it must be Tuesday by this time. Now an idea struck him. There were some side passages near at hand. It would be better to explore some of these than bear the weight of the heavy time in idleness. He took a kite-line from his pocket, tied it to a projection, and he and Becky started, Tom in the lead, unwinding the line as he groped along. At the end of twenty steps the corridor ended in a "jumping-off place." Tom got down on his knees and felt below, and then as far around the corner as he could reach with his hands conveniently; he made an effort to stretch yet a little farther to the right, and at that moment, not twenty yards away, a human hand, holding a candle, appeared from behind a rock! Tom lifted up a glorious shout, and instantly that hand was followed by the body it belonged to--Injun Joe's! Tom was paralyzed; he could not move. He was vastly gratified the next moment, to see the "Spaniard" take to his heels and get himself out of sight. Tom wondered that Joe had not recognized his voice and come over and killed him for testifying in court. But the echoes must have disguised the voice. Without doubt, that was it, he reasoned. Tom's fright weakened every muscle in his body. He said to himself that if he had strength enough to get back to the spring he would stay there, and nothing should tempt him to run the risk of meeting Injun Joe again. He was careful to keep from Becky what it was he had seen. He told her he had only shouted "for luck." But hunger and wretchedness rise superior to fears in the long run. Another tedious wait at the spring and another long sleep brought changes. The children awoke tortured with a raging hunger. Tom believed that it must be Wednesday or Thursday or even Friday or Saturday, now, and that the search had been given over. He proposed to explore another passage. He felt willing to risk Injun Joe and all other terrors. But Becky was very weak. She had sunk into a dreary apathy and would not be roused. She said she would wait, now, where she was, and die--it would not be long. She told Tom to go with the kite-line and explore if he chose; but she implored him to come back every little while and speak to her; and she made him promise that when the awful time came, he would stay by her and hold her hand until all was over. Tom kissed her, with a choking sensation in his throat, and made a show of being confident of finding the searchers or an escape from the cave; then he took the kite-line in his hand and went groping down one of the passages on his hands and knees, distressed with hunger and sick with bodings of coming doom. CHAPTER XXXII TUESDAY afternoon came, and waned to the twilight. The village of St. Petersburg still mourned. The lost children had not been found. Public prayers had been offered up for them, and many and many a private prayer that had the petitioner's whole heart in it; but still no good news came from the cave. The majority of the searchers had given up the quest and gone back to their daily avocations, saying that it was plain the children could never be found. Mrs. Thatcher was very ill, and a great part of the time delirious. People said it was heartbreaking to hear her call her child, and raise her head and listen a whole minute at a time, then lay it wearily down again with a moan. Aunt Polly had drooped into a settled melancholy, and her gray hair had grown almost white. The village went to its rest on Tuesday night, sad and forlorn. Away in the middle of the night a wild peal burst from the village bells, and in a moment the streets were swarming with frantic half-clad people, who shouted, "Turn out! turn out! they're found! they're found!" Tin pans and horns were added to the din, the population massed itself and moved toward the river, met the children coming in an open carriage drawn by shouting citizens, thronged around it, joined its homeward march, and swept magnificently up the main street roaring huzzah after huzzah! The village was illuminated; nobody went to bed again; it was the greatest night the little town had ever seen. During the first half-hour a procession of villagers filed through Judge Thatcher's house, seized the saved ones and kissed them, squeezed Mrs. Thatcher's hand, tried to speak but couldn't--and drifted out raining tears all over the place. Aunt Polly's happiness was complete, and Mrs. Thatcher's nearly so. It would be complete, however, as soon as the messenger dispatched with the great news to the cave should get the word to her husband. Tom lay upon a sofa with an eager auditory about him and told the history of the wonderful adventure, putting in many striking additions to adorn it withal; and closed with a description of how he left Becky and went on an exploring expedition; how he followed two avenues as far as his kite-line would reach; how he followed a third to the fullest stretch of the kite-line, and was about to turn back when he glimpsed a far-off speck that looked like daylight; dropped the line and groped toward it, pushed his head and shoulders through a small hole, and saw the broad Mississippi rolling by! And if it had only happened to be night he would not have seen that speck of daylight and would not have explored that passage any more! He told how he went back for Becky and broke the good news and she told him not to fret her with such stuff, for she was tired, and knew she was going to die, and wanted to. He described how he labored with her and convinced her; and how she almost died for joy when she had groped to where she actually saw the blue speck of daylight; how he pushed his way out at the hole and then helped her out; how they sat there and cried for gladness; how some men came along in a skiff and Tom hailed them and told them their situation and their famished condition; how the men didn't believe the wild tale at first, "because," said they, "you are five miles down the river below the valley the cave is in" --then took them aboard, rowed to a house, gave them supper, made them rest till two or three hours after dark and then brought them home. Before day-dawn, Judge Thatcher and the handful of searchers with him were tracked out, in the cave, by the twine clews they had strung behind them, and informed of the great news. Three days and nights of toil and hunger in the cave were not to be shaken off at once, as Tom and Becky soon discovered. They were bedridden all of Wednesday and Thursday, and seemed to grow more and more tired and worn, all the time. Tom got about, a little, on Thursday, was down-town Friday, and nearly as whole as ever Saturday; but Becky did not leave her room until Sunday, and then she looked as if she had passed through a wasting illness. Tom learned of Huck's sickness and went to see him on Friday, but could not be admitted to the bedroom; neither could he on Saturday or Sunday. He was admitted daily after that, but was warned to keep still about his adventure and introduce no exciting topic. The Widow Douglas stayed by to see that he obeyed. At home Tom learned of the Cardiff Hill event; also that the "ragged man's" body had eventually been found in the river near the ferry-landing; he had been drowned while trying to escape, perhaps. About a fortnight after Tom's rescue from the cave, he started off to visit Huck, who had grown plenty strong enough, now, to hear exciting talk, and Tom had some that would interest him, he thought. Judge Thatcher's house was on Tom's way, and he stopped to see Becky. The Judge and some friends set Tom to talking, and some one asked him ironically if he wouldn't like to go to the cave again. Tom said he thought he wouldn't mind it. The Judge said: "Well, there are others just like you, Tom, I've not the least doubt. But we have taken care of that. Nobody will get lost in that cave any more." "Why?" "Because I had its big door sheathed with boiler iron two weeks ago, and triple-locked--and I've got the keys." Tom turned as white as a sheet. "What's the matter, boy! Here, run, somebody! Fetch a glass of water!" The water was brought and thrown into Tom's face. "Ah, now you're all right. What was the matter with you, Tom?" "Oh, Judge, Injun Joe's in the cave!" CHAPTER XXXIII WITHIN a few minutes the news had spread, and a dozen skiff-loads of men were on their way to McDougal's cave, and the ferryboat, well filled with passengers, soon followed. Tom Sawyer was in the skiff that bore Judge Thatcher. When the cave door was unlocked, a sorrowful sight presented itself in the dim twilight of the place. Injun Joe lay stretched upon the ground, dead, with his face close to the crack of the door, as if his longing eyes had been fixed, to the latest moment, upon the light and the cheer of the free world outside. Tom was touched, for he knew by his own experience how this wretch had suffered. His pity was moved, but nevertheless he felt an abounding sense of relief and security, now, which revealed to him in a degree which he had not fully appreciated before how vast a weight of dread had been lying upon him since the day he lifted his voice against this bloody-minded outcast. Injun Joe's bowie-knife lay close by, its blade broken in two. The great foundation-beam of the door had been chipped and hacked through, with tedious labor; useless labor, too, it was, for the native rock formed a sill outside it, and upon that stubborn material the knife had wrought no effect; the only damage done was to the knife itself. But if there had been no stony obstruction there the labor would have been useless still, for if the beam had been wholly cut away Injun Joe could not have squeezed his body under the door, and he knew it. So he had only hacked that place in order to be doing something--in order to pass the weary time--in order to employ his tortured faculties. Ordinarily one could find half a dozen bits of candle stuck around in the crevices of this vestibule, left there by tourists; but there were none now. The prisoner had searched them out and eaten them. He had also contrived to catch a few bats, and these, also, he had eaten, leaving only their claws. The poor unfortunate had starved to death. In one place, near at hand, a stalagmite had been slowly growing up from the ground for ages, builded by the water-drip from a stalactite overhead. The captive had broken off the stalagmite, and upon the stump had placed a stone, wherein he had scooped a shallow hollow to catch the precious drop that fell once in every three minutes with the dreary regularity of a clock-tick--a dessertspoonful once in four and twenty hours. That drop was falling when the Pyramids were new; when Troy fell; when the foundations of Rome were laid; when Christ was crucified; when the Conqueror created the British empire; when Columbus sailed; when the massacre at Lexington was "news." It is falling now; it will still be falling when all these things shall have sunk down the afternoon of history, and the twilight of tradition, and been swallowed up in the thick night of oblivion. Has everything a purpose and a mission? Did this drop fall patiently during five thousand years to be ready for this flitting human insect's need? and has it another important object to accomplish ten thousand years to come? No matter. It is many and many a year since the hapless half-breed scooped out the stone to catch the priceless drops, but to this day the tourist stares longest at that pathetic stone and that slow-dropping water when he comes to see the wonders of McDougal's cave. Injun Joe's cup stands first in the list of the cavern's marvels; even "Aladdin's Palace" cannot rival it. Injun Joe was buried near the mouth of the cave; and people flocked there in boats and wagons from the towns and from all the farms and hamlets for seven miles around; they brought their children, and all sorts of provisions, and confessed that they had had almost as satisfactory a time at the funeral as they could have had at the hanging. This funeral stopped the further growth of one thing--the petition to the governor for Injun Joe's pardon. The petition had been largely signed; many tearful and eloquent meetings had been held, and a committee of sappy women been appointed to go in deep mourning and wail around the governor, and implore him to be a merciful ass and trample his duty under foot. Injun Joe was believed to have killed five citizens of the village, but what of that? If he had been Satan himself there would have been plenty of weaklings ready to scribble their names to a pardon-petition, and drip a tear on it from their permanently impaired and leaky water-works. The morning after the funeral Tom took Huck to a private place to have an important talk. Huck had learned all about Tom's adventure from the Welshman and the Widow Douglas, by this time, but Tom said he reckoned there was one thing they had not told him; that thing was what he wanted to talk about now. Huck's face saddened. He said: "I know what it is. You got into No. 2 and never found anything but whiskey. Nobody told me it was you; but I just knowed it must 'a' ben you, soon as I heard 'bout that whiskey business; and I knowed you hadn't got the money becuz you'd 'a' got at me some way or other and told me even if you was mum to everybody else. Tom, something's always told me we'd never get holt of that swag." "Why, Huck, I never told on that tavern-keeper. YOU know his tavern was all right the Saturday I went to the picnic. Don't you remember you was to watch there that night?" "Oh yes! Why, it seems 'bout a year ago. It was that very night that I follered Injun Joe to the widder's." "YOU followed him?" "Yes--but you keep mum. I reckon Injun Joe's left friends behind him, and I don't want 'em souring on me and doing me mean tricks. If it hadn't ben for me he'd be down in Texas now, all right." Then Huck told his entire adventure in confidence to Tom, who had only heard of the Welshman's part of it before. "Well," said Huck, presently, coming back to the main question, "whoever nipped the whiskey in No. 2, nipped the money, too, I reckon --anyways it's a goner for us, Tom." "Huck, that money wasn't ever in No. 2!" "What!" Huck searched his comrade's face keenly. "Tom, have you got on the track of that money again?" "Huck, it's in the cave!" Huck's eyes blazed. "Say it again, Tom." "The money's in the cave!" "Tom--honest injun, now--is it fun, or earnest?" "Earnest, Huck--just as earnest as ever I was in my life. Will you go in there with me and help get it out?" "I bet I will! I will if it's where we can blaze our way to it and not get lost." "Huck, we can do that without the least little bit of trouble in the world." "Good as wheat! What makes you think the money's--" "Huck, you just wait till we get in there. If we don't find it I'll agree to give you my drum and every thing I've got in the world. I will, by jings." "All right--it's a whiz. When do you say?" "Right now, if you say it. Are you strong enough?" "Is it far in the cave? I ben on my pins a little, three or four days, now, but I can't walk more'n a mile, Tom--least I don't think I could." "It's about five mile into there the way anybody but me would go, Huck, but there's a mighty short cut that they don't anybody but me know about. Huck, I'll take you right to it in a skiff. I'll float the skiff down there, and I'll pull it back again all by myself. You needn't ever turn your hand over." "Less start right off, Tom." "All right. We want some bread and meat, and our pipes, and a little bag or two, and two or three kite-strings, and some of these new-fangled things they call lucifer matches. I tell you, many's the time I wished I had some when I was in there before." A trifle after noon the boys borrowed a small skiff from a citizen who was absent, and got under way at once. When they were several miles below "Cave Hollow," Tom said: "Now you see this bluff here looks all alike all the way down from the cave hollow--no houses, no wood-yards, bushes all alike. But do you see that white place up yonder where there's been a landslide? Well, that's one of my marks. We'll get ashore, now." They landed. "Now, Huck, where we're a-standing you could touch that hole I got out of with a fishing-pole. See if you can find it." Huck searched all the place about, and found nothing. Tom proudly marched into a thick clump of sumach bushes and said: "Here you are! Look at it, Huck; it's the snuggest hole in this country. You just keep mum about it. All along I've been wanting to be a robber, but I knew I'd got to have a thing like this, and where to run across it was the bother. We've got it now, and we'll keep it quiet, only we'll let Joe Harper and Ben Rogers in--because of course there's got to be a Gang, or else there wouldn't be any style about it. Tom Sawyer's Gang--it sounds splendid, don't it, Huck?" "Well, it just does, Tom. And who'll we rob?" "Oh, most anybody. Waylay people--that's mostly the way." "And kill them?" "No, not always. Hive them in the cave till they raise a ransom." "What's a ransom?" "Money. You make them raise all they can, off'n their friends; and after you've kept them a year, if it ain't raised then you kill them. That's the general way. Only you don't kill the women. You shut up the women, but you don't kill them. They're always beautiful and rich, and awfully scared. You take their watches and things, but you always take your hat off and talk polite. They ain't anybody as polite as robbers --you'll see that in any book. Well, the women get to loving you, and after they've been in the cave a week or two weeks they stop crying and after that you couldn't get them to leave. If you drove them out they'd turn right around and come back. It's so in all the books." "Why, it's real bully, Tom. I believe it's better'n to be a pirate." "Yes, it's better in some ways, because it's close to home and circuses and all that." By this time everything was ready and the boys entered the hole, Tom in the lead. They toiled their way to the farther end of the tunnel, then made their spliced kite-strings fast and moved on. A few steps brought them to the spring, and Tom felt a shudder quiver all through him. He showed Huck the fragment of candle-wick perched on a lump of clay against the wall, and described how he and Becky had watched the flame struggle and expire. The boys began to quiet down to whispers, now, for the stillness and gloom of the place oppressed their spirits. They went on, and presently entered and followed Tom's other corridor until they reached the "jumping-off place." The candles revealed the fact that it was not really a precipice, but only a steep clay hill twenty or thirty feet high. Tom whispered: "Now I'll show you something, Huck." He held his candle aloft and said: "Look as far around the corner as you can. Do you see that? There--on the big rock over yonder--done with candle-smoke." "Tom, it's a CROSS!" "NOW where's your Number Two? 'UNDER THE CROSS,' hey? Right yonder's where I saw Injun Joe poke up his candle, Huck!" Huck stared at the mystic sign awhile, and then said with a shaky voice: "Tom, less git out of here!" "What! and leave the treasure?" "Yes--leave it. Injun Joe's ghost is round about there, certain." "No it ain't, Huck, no it ain't. It would ha'nt the place where he died--away out at the mouth of the cave--five mile from here." "No, Tom, it wouldn't. It would hang round the money. I know the ways of ghosts, and so do you." Tom began to fear that Huck was right. Misgivings gathered in his mind. But presently an idea occurred to him-- "Lookyhere, Huck, what fools we're making of ourselves! Injun Joe's ghost ain't a going to come around where there's a cross!" The point was well taken. It had its effect. "Tom, I didn't think of that. But that's so. It's luck for us, that cross is. I reckon we'll climb down there and have a hunt for that box." Tom went first, cutting rude steps in the clay hill as he descended. Huck followed. Four avenues opened out of the small cavern which the great rock stood in. The boys examined three of them with no result. They found a small recess in the one nearest the base of the rock, with a pallet of blankets spread down in it; also an old suspender, some bacon rind, and the well-gnawed bones of two or three fowls. But there was no money-box. The lads searched and researched this place, but in vain. Tom said: "He said UNDER the cross. Well, this comes nearest to being under the cross. It can't be under the rock itself, because that sets solid on the ground." They searched everywhere once more, and then sat down discouraged. Huck could suggest nothing. By-and-by Tom said: "Lookyhere, Huck, there's footprints and some candle-grease on the clay about one side of this rock, but not on the other sides. Now, what's that for? I bet you the money IS under the rock. I'm going to dig in the clay." "That ain't no bad notion, Tom!" said Huck with animation. Tom's "real Barlow" was out at once, and he had not dug four inches before he struck wood. "Hey, Huck!--you hear that?" Huck began to dig and scratch now. Some boards were soon uncovered and removed. They had concealed a natural chasm which led under the rock. Tom got into this and held his candle as far under the rock as he could, but said he could not see to the end of the rift. He proposed to explore. He stooped and passed under; the narrow way descended gradually. He followed its winding course, first to the right, then to the left, Huck at his heels. Tom turned a short curve, by-and-by, and exclaimed: "My goodness, Huck, lookyhere!" It was the treasure-box, sure enough, occupying a snug little cavern, along with an empty powder-keg, a couple of guns in leather cases, two or three pairs of old moccasins, a leather belt, and some other rubbish well soaked with the water-drip. "Got it at last!" said Huck, ploughing among the tarnished coins with his hand. "My, but we're rich, Tom!" "Huck, I always reckoned we'd get it. It's just too good to believe, but we HAVE got it, sure! Say--let's not fool around here. Let's snake it out. Lemme see if I can lift the box." It weighed about fifty pounds. Tom could lift it, after an awkward fashion, but could not carry it conveniently. "I thought so," he said; "THEY carried it like it was heavy, that day at the ha'nted house. I noticed that. I reckon I was right to think of fetching the little bags along." The money was soon in the bags and the boys took it up to the cross rock. "Now less fetch the guns and things," said Huck. "No, Huck--leave them there. They're just the tricks to have when we go to robbing. We'll keep them there all the time, and we'll hold our orgies there, too. It's an awful snug place for orgies." "What orgies?" "I dono. But robbers always have orgies, and of course we've got to have them, too. Come along, Huck, we've been in here a long time. It's getting late, I reckon. I'm hungry, too. We'll eat and smoke when we get to the skiff." They presently emerged into the clump of sumach bushes, looked warily out, found the coast clear, and were soon lunching and smoking in the skiff. As the sun dipped toward the horizon they pushed out and got under way. Tom skimmed up the shore through the long twilight, chatting cheerily with Huck, and landed shortly after dark. "Now, Huck," said Tom, "we'll hide the money in the loft of the widow's woodshed, and I'll come up in the morning and we'll count it and divide, and then we'll hunt up a place out in the woods for it where it will be safe. Just you lay quiet here and watch the stuff till I run and hook Benny Taylor's little wagon; I won't be gone a minute." He disappeared, and presently returned with the wagon, put the two small sacks into it, threw some old rags on top of them, and started off, dragging his cargo behind him. When the boys reached the Welshman's house, they stopped to rest. Just as they were about to move on, the Welshman stepped out and said: "Hallo, who's that?" "Huck and Tom Sawyer." "Good! Come along with me, boys, you are keeping everybody waiting. Here--hurry up, trot ahead--I'll haul the wagon for you. Why, it's not as light as it might be. Got bricks in it?--or old metal?" "Old metal," said Tom. "I judged so; the boys in this town will take more trouble and fool away more time hunting up six bits' worth of old iron to sell to the foundry than they would to make twice the money at regular work. But that's human nature--hurry along, hurry along!" The boys wanted to know what the hurry was about. "Never mind; you'll see, when we get to the Widow Douglas'." Huck said with some apprehension--for he was long used to being falsely accused: "Mr. Jones, we haven't been doing nothing." The Welshman laughed. "Well, I don't know, Huck, my boy. I don't know about that. Ain't you and the widow good friends?" "Yes. Well, she's ben good friends to me, anyway." "All right, then. What do you want to be afraid for?" This question was not entirely answered in Huck's slow mind before he found himself pushed, along with Tom, into Mrs. Douglas' drawing-room. Mr. Jones left the wagon near the door and followed. The place was grandly lighted, and everybody that was of any consequence in the village was there. The Thatchers were there, the Harpers, the Rogerses, Aunt Polly, Sid, Mary, the minister, the editor, and a great many more, and all dressed in their best. The widow received the boys as heartily as any one could well receive two such looking beings. They were covered with clay and candle-grease. Aunt Polly blushed crimson with humiliation, and frowned and shook her head at Tom. Nobody suffered half as much as the two boys did, however. Mr. Jones said: "Tom wasn't at home, yet, so I gave him up; but I stumbled on him and Huck right at my door, and so I just brought them along in a hurry." "And you did just right," said the widow. "Come with me, boys." She took them to a bedchamber and said: "Now wash and dress yourselves. Here are two new suits of clothes --shirts, socks, everything complete. They're Huck's--no, no thanks, Huck--Mr. Jones bought one and I the other. But they'll fit both of you. Get into them. We'll wait--come down when you are slicked up enough." Then she left. CHAPTER XXXIV HUCK said: "Tom, we can slope, if we can find a rope. The window ain't high from the ground." "Shucks! what do you want to slope for?" "Well, I ain't used to that kind of a crowd. I can't stand it. I ain't going down there, Tom." "Oh, bother! It ain't anything. I don't mind it a bit. I'll take care of you." Sid appeared. "Tom," said he, "auntie has been waiting for you all the afternoon. Mary got your Sunday clothes ready, and everybody's been fretting about you. Say--ain't this grease and clay, on your clothes?" "Now, Mr. Siddy, you jist 'tend to your own business. What's all this blow-out about, anyway?" "It's one of the widow's parties that she's always having. This time it's for the Welshman and his sons, on account of that scrape they helped her out of the other night. And say--I can tell you something, if you want to know." "Well, what?" "Why, old Mr. Jones is going to try to spring something on the people here to-night, but I overheard him tell auntie to-day about it, as a secret, but I reckon it's not much of a secret now. Everybody knows --the widow, too, for all she tries to let on she don't. Mr. Jones was bound Huck should be here--couldn't get along with his grand secret without Huck, you know!" "Secret about what, Sid?" "About Huck tracking the robbers to the widow's. I reckon Mr. Jones was going to make a grand time over his surprise, but I bet you it will drop pretty flat." Sid chuckled in a very contented and satisfied way. "Sid, was it you that told?" "Oh, never mind who it was. SOMEBODY told--that's enough." "Sid, there's only one person in this town mean enough to do that, and that's you. If you had been in Huck's place you'd 'a' sneaked down the hill and never told anybody on the robbers. You can't do any but mean things, and you can't bear to see anybody praised for doing good ones. There--no thanks, as the widow says"--and Tom cuffed Sid's ears and helped him to the door with several kicks. "Now go and tell auntie if you dare--and to-morrow you'll catch it!" Some minutes later the widow's guests were at the supper-table, and a dozen children were propped up at little side-tables in the same room, after the fashion of that country and that day. At the proper time Mr. Jones made his little speech, in which he thanked the widow for the honor she was doing himself and his sons, but said that there was another person whose modesty-- And so forth and so on. He sprung his secret about Huck's share in the adventure in the finest dramatic manner he was master of, but the surprise it occasioned was largely counterfeit and not as clamorous and effusive as it might have been under happier circumstances. However, the widow made a pretty fair show of astonishment, and heaped so many compliments and so much gratitude upon Huck that he almost forgot the nearly intolerable discomfort of his new clothes in the entirely intolerable discomfort of being set up as a target for everybody's gaze and everybody's laudations. The widow said she meant to give Huck a home under her roof and have him educated; and that when she could spare the money she would start him in business in a modest way. Tom's chance was come. He said: "Huck don't need it. Huck's rich." Nothing but a heavy strain upon the good manners of the company kept back the due and proper complimentary laugh at this pleasant joke. But the silence was a little awkward. Tom broke it: "Huck's got money. Maybe you don't believe it, but he's got lots of it. Oh, you needn't smile--I reckon I can show you. You just wait a minute." Tom ran out of doors. The company looked at each other with a perplexed interest--and inquiringly at Huck, who was tongue-tied. "Sid, what ails Tom?" said Aunt Polly. "He--well, there ain't ever any making of that boy out. I never--" Tom entered, struggling with the weight of his sacks, and Aunt Polly did not finish her sentence. Tom poured the mass of yellow coin upon the table and said: "There--what did I tell you? Half of it's Huck's and half of it's mine!" The spectacle took the general breath away. All gazed, nobody spoke for a moment. Then there was a unanimous call for an explanation. Tom said he could furnish it, and he did. The tale was long, but brimful of interest. There was scarcely an interruption from any one to break the charm of its flow. When he had finished, Mr. Jones said: "I thought I had fixed up a little surprise for this occasion, but it don't amount to anything now. This one makes it sing mighty small, I'm willing to allow." The money was counted. The sum amounted to a little over twelve thousand dollars. It was more than any one present had ever seen at one time before, though several persons were there who were worth considerably more than that in property. CHAPTER XXXV THE reader may rest satisfied that Tom's and Huck's windfall made a mighty stir in the poor little village of St. Petersburg. So vast a sum, all in actual cash, seemed next to incredible. It was talked about, gloated over, glorified, until the reason of many of the citizens tottered under the strain of the unhealthy excitement. Every "haunted" house in St. Petersburg and the neighboring villages was dissected, plank by plank, and its foundations dug up and ransacked for hidden treasure--and not by boys, but men--pretty grave, unromantic men, too, some of them. Wherever Tom and Huck appeared they were courted, admired, stared at. The boys were not able to remember that their remarks had possessed weight before; but now their sayings were treasured and repeated; everything they did seemed somehow to be regarded as remarkable; they had evidently lost the power of doing and saying commonplace things; moreover, their past history was raked up and discovered to bear marks of conspicuous originality. The village paper published biographical sketches of the boys. The Widow Douglas put Huck's money out at six per cent., and Judge Thatcher did the same with Tom's at Aunt Polly's request. Each lad had an income, now, that was simply prodigious--a dollar for every week-day in the year and half of the Sundays. It was just what the minister got --no, it was what he was promised--he generally couldn't collect it. A dollar and a quarter a week would board, lodge, and school a boy in those old simple days--and clothe him and wash him, too, for that matter. Judge Thatcher had conceived a great opinion of Tom. He said that no commonplace boy would ever have got his daughter out of the cave. When Becky told her father, in strict confidence, how Tom had taken her whipping at school, the Judge was visibly moved; and when she pleaded grace for the mighty lie which Tom had told in order to shift that whipping from her shoulders to his own, the Judge said with a fine outburst that it was a noble, a generous, a magnanimous lie--a lie that was worthy to hold up its head and march down through history breast to breast with George Washington's lauded Truth about the hatchet! Becky thought her father had never looked so tall and so superb as when he walked the floor and stamped his foot and said that. She went straight off and told Tom about it. Judge Thatcher hoped to see Tom a great lawyer or a great soldier some day. He said he meant to look to it that Tom should be admitted to the National Military Academy and afterward trained in the best law school in the country, in order that he might be ready for either career or both. Huck Finn's wealth and the fact that he was now under the Widow Douglas' protection introduced him into society--no, dragged him into it, hurled him into it--and his sufferings were almost more than he could bear. The widow's servants kept him clean and neat, combed and brushed, and they bedded him nightly in unsympathetic sheets that had not one little spot or stain which he could press to his heart and know for a friend. He had to eat with a knife and fork; he had to use napkin, cup, and plate; he had to learn his book, he had to go to church; he had to talk so properly that speech was become insipid in his mouth; whithersoever he turned, the bars and shackles of civilization shut him in and bound him hand and foot. He bravely bore his miseries three weeks, and then one day turned up missing. For forty-eight hours the widow hunted for him everywhere in great distress. The public were profoundly concerned; they searched high and low, they dragged the river for his body. Early the third morning Tom Sawyer wisely went poking among some old empty hogsheads down behind the abandoned slaughter-house, and in one of them he found the refugee. Huck had slept there; he had just breakfasted upon some stolen odds and ends of food, and was lying off, now, in comfort, with his pipe. He was unkempt, uncombed, and clad in the same old ruin of rags that had made him picturesque in the days when he was free and happy. Tom routed him out, told him the trouble he had been causing, and urged him to go home. Huck's face lost its tranquil content, and took a melancholy cast. He said: "Don't talk about it, Tom. I've tried it, and it don't work; it don't work, Tom. It ain't for me; I ain't used to it. The widder's good to me, and friendly; but I can't stand them ways. She makes me get up just at the same time every morning; she makes me wash, they comb me all to thunder; she won't let me sleep in the woodshed; I got to wear them blamed clothes that just smothers me, Tom; they don't seem to any air git through 'em, somehow; and they're so rotten nice that I can't set down, nor lay down, nor roll around anywher's; I hain't slid on a cellar-door for--well, it 'pears to be years; I got to go to church and sweat and sweat--I hate them ornery sermons! I can't ketch a fly in there, I can't chaw. I got to wear shoes all Sunday. The widder eats by a bell; she goes to bed by a bell; she gits up by a bell--everything's so awful reg'lar a body can't stand it." "Well, everybody does that way, Huck." "Tom, it don't make no difference. I ain't everybody, and I can't STAND it. It's awful to be tied up so. And grub comes too easy--I don't take no interest in vittles, that way. I got to ask to go a-fishing; I got to ask to go in a-swimming--dern'd if I hain't got to ask to do everything. Well, I'd got to talk so nice it wasn't no comfort--I'd got to go up in the attic and rip out awhile, every day, to git a taste in my mouth, or I'd a died, Tom. The widder wouldn't let me smoke; she wouldn't let me yell, she wouldn't let me gape, nor stretch, nor scratch, before folks--" [Then with a spasm of special irritation and injury]--"And dad fetch it, she prayed all the time! I never see such a woman! I HAD to shove, Tom--I just had to. And besides, that school's going to open, and I'd a had to go to it--well, I wouldn't stand THAT, Tom. Looky here, Tom, being rich ain't what it's cracked up to be. It's just worry and worry, and sweat and sweat, and a-wishing you was dead all the time. Now these clothes suits me, and this bar'l suits me, and I ain't ever going to shake 'em any more. Tom, I wouldn't ever got into all this trouble if it hadn't 'a' ben for that money; now you just take my sheer of it along with your'n, and gimme a ten-center sometimes--not many times, becuz I don't give a dern for a thing 'thout it's tollable hard to git--and you go and beg off for me with the widder." "Oh, Huck, you know I can't do that. 'Tain't fair; and besides if you'll try this thing just a while longer you'll come to like it." "Like it! Yes--the way I'd like a hot stove if I was to set on it long enough. No, Tom, I won't be rich, and I won't live in them cussed smothery houses. I like the woods, and the river, and hogsheads, and I'll stick to 'em, too. Blame it all! just as we'd got guns, and a cave, and all just fixed to rob, here this dern foolishness has got to come up and spile it all!" Tom saw his opportunity-- "Lookyhere, Huck, being rich ain't going to keep me back from turning robber." "No! Oh, good-licks; are you in real dead-wood earnest, Tom?" "Just as dead earnest as I'm sitting here. But Huck, we can't let you into the gang if you ain't respectable, you know." Huck's joy was quenched. "Can't let me in, Tom? Didn't you let me go for a pirate?" "Yes, but that's different. A robber is more high-toned than what a pirate is--as a general thing. In most countries they're awful high up in the nobility--dukes and such." "Now, Tom, hain't you always ben friendly to me? You wouldn't shet me out, would you, Tom? You wouldn't do that, now, WOULD you, Tom?" "Huck, I wouldn't want to, and I DON'T want to--but what would people say? Why, they'd say, 'Mph! Tom Sawyer's Gang! pretty low characters in it!' They'd mean you, Huck. You wouldn't like that, and I wouldn't." Huck was silent for some time, engaged in a mental struggle. Finally he said: "Well, I'll go back to the widder for a month and tackle it and see if I can come to stand it, if you'll let me b'long to the gang, Tom." "All right, Huck, it's a whiz! Come along, old chap, and I'll ask the widow to let up on you a little, Huck." "Will you, Tom--now will you? That's good. If she'll let up on some of the roughest things, I'll smoke private and cuss private, and crowd through or bust. When you going to start the gang and turn robbers?" "Oh, right off. We'll get the boys together and have the initiation to-night, maybe." "Have the which?" "Have the initiation." "What's that?" "It's to swear to stand by one another, and never tell the gang's secrets, even if you're chopped all to flinders, and kill anybody and all his family that hurts one of the gang." "That's gay--that's mighty gay, Tom, I tell you." "Well, I bet it is. And all that swearing's got to be done at midnight, in the lonesomest, awfulest place you can find--a ha'nted house is the best, but they're all ripped up now." "Well, midnight's good, anyway, Tom." "Yes, so it is. And you've got to swear on a coffin, and sign it with blood." "Now, that's something LIKE! Why, it's a million times bullier than pirating. I'll stick to the widder till I rot, Tom; and if I git to be a reg'lar ripper of a robber, and everybody talking 'bout it, I reckon she'll be proud she snaked me in out of the wet." CONCLUSION SO endeth this chronicle. It being strictly a history of a BOY, it must stop here; the story could not go much further without becoming the history of a MAN. When one writes a novel about grown people, he knows exactly where to stop--that is, with a marriage; but when he writes of juveniles, he must stop where he best can. Most of the characters that perform in this book still live, and are prosperous and happy. Some day it may seem worth while to take up the story of the younger ones again and see what sort of men and women they turned out to be; therefore it will be wisest not to reveal any of that part of their lives at present. End of the Project Gutenberg EBook of The Adventures of Tom Sawyer, Complete by Mark Twain (Samuel Clemens) *** END OF THIS PROJECT GUTENBERG EBOOK TOM SAWYER *** ***** This file should be named 74.txt or 74.zip ***** This and all associated files of various formats will be found in: http://www.gutenberg.net/7/74/ Produced by David Widger. The previous edition was update by Jose Menendez. Updated editions will replace the previous one--the old editions will be renamed. Creating the works from public domain print editions means that no one owns a United States copyright in these works, so the Foundation (and you!) can copy and distribute it in the United States without permission and without paying copyright royalties. Special rules, set forth in the General Terms of Use part of this license, apply to copying and distributing Project Gutenberg-tm electronic works to protect the PROJECT GUTENBERG-tm concept and trademark. Project Gutenberg is a registered trademark, and may not be used if you charge for the eBooks, unless you receive specific permission. If you do not charge anything for copies of this eBook, complying with the rules is very easy. You may use this eBook for nearly any purpose such as creation of derivative works, reports, performances and research. They may be modified and printed and given away--you may do practically ANYTHING with public domain eBooks. Redistribution is subject to the trademark license, especially commercial redistribution. *** START: FULL LICENSE *** THE FULL PROJECT GUTENBERG LICENSE PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK To protect the Project Gutenberg-tm mission of promoting the free distribution of electronic works, by using or distributing this work (or any other work associated in any way with the phrase "Project Gutenberg"), you agree to comply with all the terms of the Full Project Gutenberg-tm License (available with this file or online at http://gutenberg.net/license). Section 1. General Terms of Use and Redistributing Project Gutenberg-tm electronic works 1.A. By reading or using any part of this Project Gutenberg-tm electronic work, you indicate that you have read, understand, agree to and accept all the terms of this license and intellectual property (trademark/copyright) agreement. If you do not agree to abide by all the terms of this agreement, you must cease using and return or destroy all copies of Project Gutenberg-tm electronic works in your possession. If you paid a fee for obtaining a copy of or access to a Project Gutenberg-tm electronic work and you do not agree to be bound by the terms of this agreement, you may obtain a refund from the person or entity to whom you paid the fee as set forth in paragraph 1.E.8. 1.B. "Project Gutenberg" is a registered trademark. It may only be used on or associated in any way with an electronic work by people who agree to be bound by the terms of this agreement. There are a few things that you can do with most Project Gutenberg-tm electronic works even without complying with the full terms of this agreement. See paragraph 1.C below. There are a lot of things you can do with Project Gutenberg-tm electronic works if you follow the terms of this agreement and help preserve free future access to Project Gutenberg-tm electronic works. See paragraph 1.E below. 1.C. The Project Gutenberg Literary Archive Foundation ("the Foundation" or PGLAF), owns a compilation copyright in the collection of Project Gutenberg-tm electronic works. Nearly all the individual works in the collection are in the public domain in the United States. If an individual work is in the public domain in the United States and you are located in the United States, we do not claim a right to prevent you from copying, distributing, performing, displaying or creating derivative works based on the work as long as all references to Project Gutenberg are removed. Of course, we hope that you will support the Project Gutenberg-tm mission of promoting free access to electronic works by freely sharing Project Gutenberg-tm works in compliance with the terms of this agreement for keeping the Project Gutenberg-tm name associated with the work. You can easily comply with the terms of this agreement by keeping this work in the same format with its attached full Project Gutenberg-tm License when you share it without charge with others. 1.D. The copyright laws of the place where you are located also govern what you can do with this work. Copyright laws in most countries are in a constant state of change. If you are outside the United States, check the laws of your country in addition to the terms of this agreement before downloading, copying, displaying, performing, distributing or creating derivative works based on this work or any other Project Gutenberg-tm work. The Foundation makes no representations concerning the copyright status of any work in any country outside the United States. 1.E. Unless you have removed all references to Project Gutenberg: 1.E.1. The following sentence, with active links to, or other immediate access to, the full Project Gutenberg-tm License must appear prominently whenever any copy of a Project Gutenberg-tm work (any work on which the phrase "Project Gutenberg" appears, or with which the phrase "Project Gutenberg" is associated) is accessed, displayed, performed, viewed, copied or distributed: This eBook is for the use of anyone anywhere at no cost and with almost no restrictions whatsoever. You may copy it, give it away or re-use it under the terms of the Project Gutenberg License included with this eBook or online at www.gutenberg.net 1.E.2. If an individual Project Gutenberg-tm electronic work is derived from the public domain (does not contain a notice indicating that it is posted with permission of the copyright holder), the work can be copied and distributed to anyone in the United States without paying any fees or charges. If you are redistributing or providing access to a work with the phrase "Project Gutenberg" associated with or appearing on the work, you must comply either with the requirements of paragraphs 1.E.1 through 1.E.7 or obtain permission for the use of the work and the Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or 1.E.9. 1.E.3. If an individual Project Gutenberg-tm electronic work is posted with the permission of the copyright holder, your use and distribution must comply with both paragraphs 1.E.1 through 1.E.7 and any additional terms imposed by the copyright holder. Additional terms will be linked to the Project Gutenberg-tm License for all works posted with the permission of the copyright holder found at the beginning of this work. 1.E.4. Do not unlink or detach or remove the full Project Gutenberg-tm License terms from this work, or any files containing a part of this work or any other work associated with Project Gutenberg-tm. 1.E.5. Do not copy, display, perform, distribute or redistribute this electronic work, or any part of this electronic work, without prominently displaying the sentence set forth in paragraph 1.E.1 with active links or immediate access to the full terms of the Project Gutenberg-tm License. 1.E.6. You may convert to and distribute this work in any binary, compressed, marked up, nonproprietary or proprietary form, including any word processing or hypertext form. However, if you provide access to or distribute copies of a Project Gutenberg-tm work in a format other than "Plain Vanilla ASCII" or other format used in the official version posted on the official Project Gutenberg-tm web site (www.gutenberg.net), you must, at no additional cost, fee or expense to the user, provide a copy, a means of exporting a copy, or a means of obtaining a copy upon request, of the work in its original "Plain Vanilla ASCII" or other form. Any alternate format must include the full Project Gutenberg-tm License as specified in paragraph 1.E.1. 1.E.7. Do not charge a fee for access to, viewing, displaying, performing, copying or distributing any Project Gutenberg-tm works unless you comply with paragraph 1.E.8 or 1.E.9. 1.E.8. You may charge a reasonable fee for copies of or providing access to or distributing Project Gutenberg-tm electronic works provided that - You pay a royalty fee of 20% of the gross profits you derive from the use of Project Gutenberg-tm works calculated using the method you already use to calculate your applicable taxes. The fee is owed to the owner of the Project Gutenberg-tm trademark, but he has agreed to donate royalties under this paragraph to the Project Gutenberg Literary Archive Foundation. Royalty payments must be paid within 60 days following each date on which you prepare (or are legally required to prepare) your periodic tax returns. Royalty payments should be clearly marked as such and sent to the Project Gutenberg Literary Archive Foundation at the address specified in Section 4, "Information about donations to the Project Gutenberg Literary Archive Foundation." - You provide a full refund of any money paid by a user who notifies you in writing (or by e-mail) within 30 days of receipt that s/he does not agree to the terms of the full Project Gutenberg-tm License. You must require such a user to return or destroy all copies of the works possessed in a physical medium and discontinue all use of and all access to other copies of Project Gutenberg-tm works. - You provide, in accordance with paragraph 1.F.3, a full refund of any money paid for a work or a replacement copy, if a defect in the electronic work is discovered and reported to you within 90 days of receipt of the work. - You comply with all other terms of this agreement for free distribution of Project Gutenberg-tm works. 1.E.9. If you wish to charge a fee or distribute a Project Gutenberg-tm electronic work or group of works on different terms than are set forth in this agreement, you must obtain permission in writing from both the Project Gutenberg Literary Archive Foundation and Michael Hart, the owner of the Project Gutenberg-tm trademark. Contact the Foundation as set forth in Section 3 below. 1.F. 1.F.1. Project Gutenberg volunteers and employees expend considerable effort to identify, do copyright research on, transcribe and proofread public domain works in creating the Project Gutenberg-tm collection. Despite these efforts, Project Gutenberg-tm electronic works, and the medium on which they may be stored, may contain "Defects," such as, but not limited to, incomplete, inaccurate or corrupt data, transcription errors, a copyright or other intellectual property infringement, a defective or damaged disk or other medium, a computer virus, or computer codes that damage or cannot be read by your equipment. 1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right of Replacement or Refund" described in paragraph 1.F.3, the Project Gutenberg Literary Archive Foundation, the owner of the Project Gutenberg-tm trademark, and any other party distributing a Project Gutenberg-tm electronic work under this agreement, disclaim all liability to you for damages, costs and expenses, including legal fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE PROVIDED IN PARAGRAPH F3. YOU AGREE THAT THE FOUNDATION, THE TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH DAMAGE. 1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a defect in this electronic work within 90 days of receiving it, you can receive a refund of the money (if any) you paid for it by sending a written explanation to the person you received the work from. If you received the work on a physical medium, you must return the medium with your written explanation. The person or entity that provided you with the defective work may elect to provide a replacement copy in lieu of a refund. If you received the work electronically, the person or entity providing it to you may choose to give you a second opportunity to receive the work electronically in lieu of a refund. If the second copy is also defective, you may demand a refund in writing without further opportunities to fix the problem. 1.F.4. Except for the limited right of replacement or refund set forth in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE. 1.F.5. Some states do not allow disclaimers of certain implied warranties or the exclusion or limitation of certain types of damages. If any disclaimer or limitation set forth in this agreement violates the law of the state applicable to this agreement, the agreement shall be interpreted to make the maximum disclaimer or limitation permitted by the applicable state law. The invalidity or unenforceability of any provision of this agreement shall not void the remaining provisions. 1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation, the trademark owner, any agent or employee of the Foundation, anyone providing copies of Project Gutenberg-tm electronic works in accordance with this agreement, and any volunteers associated with the production, promotion and distribution of Project Gutenberg-tm electronic works, harmless from all liability, costs and expenses, including legal fees, that arise directly or indirectly from any of the following which you do or cause to occur: (a) distribution of this or any Project Gutenberg-tm work, (b) alteration, modification, or additions or deletions to any Project Gutenberg-tm work, and (c) any Defect you cause. Section 2. Information about the Mission of Project Gutenberg-tm Project Gutenberg-tm is synonymous with the free distribution of electronic works in formats readable by the widest variety of computers including obsolete, old, middle-aged and new computers. It exists because of the efforts of hundreds of volunteers and donations from people in all walks of life. Volunteers and financial support to provide volunteers with the assistance they need, is critical to reaching Project Gutenberg-tm's goals and ensuring that the Project Gutenberg-tm collection will remain freely available for generations to come. In 2001, the Project Gutenberg Literary Archive Foundation was created to provide a secure and permanent future for Project Gutenberg-tm and future generations. To learn more about the Project Gutenberg Literary Archive Foundation and how your efforts and donations can help, see Sections 3 and 4 and the Foundation web page at http://www.pglaf.org. Section 3. Information about the Project Gutenberg Literary Archive Foundation The Project Gutenberg Literary Archive Foundation is a non profit 501(c)(3) educational corporation organized under the laws of the state of Mississippi and granted tax exempt status by the Internal Revenue Service. The Foundation's EIN or federal tax identification number is 64-6221541. Its 501(c)(3) letter is posted at http://pglaf.org/fundraising. Contributions to the Project Gutenberg Literary Archive Foundation are tax deductible to the full extent permitted by U.S. federal laws and your state's laws. The Foundation's principal office is located at 4557 Melan Dr. S. Fairbanks, AK, 99712., but its volunteers and employees are scattered throughout numerous locations. Its business office is located at 809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email business@pglaf.org. Email contact links and up to date contact information can be found at the Foundation's web site and official page at http://pglaf.org For additional contact information: Dr. Gregory B. Newby Chief Executive and Director gbnewby@pglaf.org Section 4. Information about Donations to the Project Gutenberg Literary Archive Foundation Project Gutenberg-tm depends upon and cannot survive without wide spread public support and donations to carry out its mission of increasing the number of public domain and licensed works that can be freely distributed in machine readable form accessible by the widest array of equipment including outdated equipment. Many small donations ($1 to $5,000) are particularly important to maintaining tax exempt status with the IRS. The Foundation is committed to complying with the laws regulating charities and charitable donations in all 50 states of the United States. Compliance requirements are not uniform and it takes a considerable effort, much paperwork and many fees to meet and keep up with these requirements. We do not solicit donations in locations where we have not received written confirmation of compliance. To SEND DONATIONS or determine the status of compliance for any particular state visit http://pglaf.org While we cannot and do not solicit contributions from states where we have not met the solicitation requirements, we know of no prohibition against accepting unsolicited donations from donors in such states who approach us with offers to donate. International donations are gratefully accepted, but we cannot make any statements concerning tax treatment of donations received from outside the United States. U.S. laws alone swamp our small staff. Please check the Project Gutenberg Web pages for current donation methods and addresses. Donations are accepted in a number of other ways including including checks, online payments and credit card donations. To donate, please visit: http://pglaf.org/donate Section 5. General Information About Project Gutenberg-tm electronic works. Professor Michael S. Hart is the originator of the Project Gutenberg-tm concept of a library of electronic works that could be freely shared with anyone. For thirty years, he produced and distributed Project Gutenberg-tm eBooks with only a loose network of volunteer support. Project Gutenberg-tm eBooks are often created from several printed editions, all of which are confirmed as Public Domain in the U.S. unless a copyright notice is included. Thus, we do not necessarily keep eBooks in compliance with any particular paper edition. Most people start at our Web site which has the main PG search facility: http://www.gutenberg.net This Web site includes information about Project Gutenberg-tm, including how to make donations to the Project Gutenberg Literary Archive Foundation, how to help produce our new eBooks, and how to subscribe to our email newsletter to hear about new eBooks. go/src/pkg/compress/testdata/e.txt0100644000000000000000000030324312412656737017505 0ustar00rootroot000000000000002.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274274663919320030599218174135966290435729003342952605956307381323286279434907632338298807531952510190115738341879307021540891499348841675092447614606680822648001684774118537423454424371075390777449920695517027618386062613313845830007520449338265602976067371132007093287091274437470472306969772093101416928368190255151086574637721112523897844250569536967707854499699679468644549059879316368892300987931277361782154249992295763514822082698951936680331825288693984964651058209392398294887933203625094431173012381970684161403970198376793206832823764648042953118023287825098194558153017567173613320698112509961818815930416903515988885193458072738667385894228792284998920868058257492796104841984443634632449684875602336248270419786232090021609902353043699418491463140934317381436405462531520961836908887070167683964243781405927145635490613031072085103837505101157477041718986106873969655212671546889570350354021234078498193343210681701210056278802351930332247450158539047304199577770935036604169973297250886876966403555707162268447162560798826517871341951246652010305921236677194325278675398558944896970964097545918569563802363701621120477427228364896134225164450781824423529486363721417402388934412479635743702637552944483379980161254922785092577825620926226483262779333865664816277251640191059004916449982893150566047258027786318641551956532442586982946959308019152987211725563475463964479101459040905862984967912874068705048958586717479854667757573205681288459205413340539220001137863009455606881667400169842055804033637953764520304024322566135278369511778838638744396625322498506549958862342818997077332761717839280349465014345588970719425863987727547109629537415211151368350627526023264847287039207643100595841166120545297030236472549296669381151373227536450988890313602057248176585118063036442812314965507047510254465011727211555194866850800368532281831521960037356252794495158284188294787610852639813955990067376482922443752871846245780361929819713991475644882626039033814418232625150974827987779964373089970388867782271383605772978824125611907176639465070633045279546618550966661856647097113444740160704626215680717481877844371436988218559670959102596862002353718588748569652200050311734392073211390803293634479727355955277349071783793421637012050054513263835440001863239914907054797780566978533580489669062951194324730995876552368128590413832411607226029983305353708761389396391779574540161372236187893652605381558415871869255386061647798340254351284396129460352913325942794904337299085731580290958631382683291477116396337092400316894586360606458459251269946557248391865642097526850823075442545993769170419777800853627309417101634349076964237222943523661255725088147792231519747780605696725380171807763603462459278778465850656050780844211529697521890874019660906651803516501792504619501366585436632712549639908549144200014574760819302212066024330096412704894390397177195180699086998606636583232278709376502260149291011517177635944602023249300280401867723910288097866605651183260043688508817157238669842242201024950551881694803221002515426494639812873677658927688163598312477886520141174110913601164995076629077943646005851941998560162647907615321038727557126992518275687989302761761146162549356495903798045838182323368612016243736569846703785853305275833337939907521660692380533698879565137285593883499894707416181550125397064648171946708348197214488898790676503795903669672494992545279033729636162658976039498576741397359441023744329709355477982629614591442936451428617158587339746791897571211956187385783644758448423555581050025611492391518893099463428413936080383091662818811503715284967059741625628236092168075150177725387402564253470879089137291722828611515915683725241630772254406337875931059826760944203261924285317018781772960235413060672136046000389661093647095141417185777014180606443636815464440053316087783143174440811949422975599314011888683314832802706553833004693290115744147563139997221703804617092894579096271662260740718749975359212756084414737823303270330168237193648002173285734935947564334129943024850235732214597843282641421684878721673367010615094243456984401873312810107945127223737886126058165668053714396127888732527373890392890506865324138062796025930387727697783792868409325365880733988457218746021005311483351323850047827169376218004904795597959290591655470505777514308175112698985188408718564026035305583737832422924185625644255022672155980274012617971928047139600689163828665277009752767069777036439260224372841840883251848770472638440379530166905465937461619323840363893131364327137688841026811219891275223056256756254701725086349765367288605966752740868627407912856576996313789753034660616669804218267724560530660773899624218340859882071864682623215080288286359746839654358856685503773131296587975810501214916207656769950659715344763470320853215603674828608378656803073062657633469774295634643716709397193060876963495328846833613038829431040800296873869117066666146800015121143442256023874474325250769387077775193299942137277211258843608715834835626961661980572526612206797540621062080649882918454395301529982092503005498257043390553570168653120526495614857249257386206917403695213533732531666345466588597286659451136441370331393672118569553952108458407244323835586063106806964924851232632699514603596037297253198368423363904632136710116192821711150282801604488058802382031981493096369596735832742024988245684941273860566491352526706046234450549227581151709314921879592718001940968866986837037302200475314338181092708030017205935530520700706072233999463990571311587099635777359027196285061146514837526209565346713290025994397663114545902685898979115837093419370441155121920117164880566945938131183843765620627846310490346293950029458341164824114969758326011800731699437393506966295712410273239138741754923071862454543222039552735295240245903805744502892246886285336542213815722131163288112052146489805180092024719391710555390113943316681515828843687606961102505171007392762385553386272553538830960671644662370922646809671254061869502143176211668140097595281493907222601112681153108387317617323235263605838173151034595736538223534992935822836851007810884634349983518404451704270189381994243410090575376257767571118090088164183319201962623416288166521374717325477727783488774366518828752156685719506371936565390389449366421764003121527870222366463635755503565576948886549500270853923617105502131147413744106134445544192101336172996285694899193369184729478580729156088510396781959429833186480756083679551496636448965592948187851784038773326247051945050419847742014183947731202815886845707290544057510601285258056594703046836344592652552137008068752009593453607316226118728173928074623094685367823106097921599360019946237993434210687813497346959246469752506246958616909178573976595199392993995567542714654910456860702099012606818704984178079173924071945996323060254707901774527513186809982284730860766536866855516467702911336827563107223346726113705490795365834538637196235856312618387156774118738527722922594743373785695538456246801013905727871016512966636764451872465653730402443684140814488732957847348490003019477888020460324660842875351848364959195082888323206522128104190448047247949291342284951970022601310430062410717971502793433263407995960531446053230488528972917659876016667811937932372453857209607582277178483361613582612896226118129455927462767137794487586753657544861407611931125958512655759734573015333642630767985443385761715333462325270572005303988289499034259566232975782488735029259166825894456894655992658454762694528780516501720674785417887982276806536650641910973434528878338621726156269582654478205672987756426325321594294418039943217000090542650763095588465895171709147607437136893319469090981904501290307099566226620303182649365733698419555776963787624918852865686607600566025605445711337286840205574416030837052312242587223438854123179481388550075689381124935386318635287083799845692619981794523364087429591180747453419551420351726184200845509170845682368200897739455842679214273477560879644279202708312150156406341341617166448069815483764491573900121217041547872591998943825364950514771379399147205219529079396137621107238494290616357604596231253506068537651423115349665683715116604220796394466621163255157729070978473156278277598788136491951257483328793771571459091064841642678309949723674420175862269402159407924480541255360431317992696739157542419296607312393763542139230617876753958711436104089409966089471418340698362993675362621545247298464213752891079884381306095552622720837518629837066787224430195793793786072107254277289071732854874374355781966511716618330881129120245204048682200072344035025448202834254187884653602591506445271657700044521097735585897622655484941621714989532383421600114062950718490427789258552743035221396835679018076406042138307308774460170842688272261177180842664333651780002171903449234264266292261456004337383868335555343453004264818473989215627086095650629340405264943244261445665921291225648893569655009154306426134252668472594914314239398845432486327461842846655985332312210466259890141712103446084271616619001257195870793217569698544013397622096749454185407118446433946990162698351607848924514058940946395267807354579700307051163682519487701189764002827648414160587206184185297189154019688253289309149665345753571427318482016384644832499037886069008072709327673127581966563941148961716832980455139729506687604740915420428429993541025829113502241690769431668574242522509026939034814856451303069925199590436384028429267412573422447765584177886171737265462085498294498946787350929581652632072258992368768457017823038096567883112289305809140572610865884845873101658151167533327674887014829167419701512559782572707406431808601428149024146780472327597684269633935773542930186739439716388611764209004068663398856841681003872389214483176070116684503887212364367043314091155733280182977988736590916659612402021778558854876176161989370794380056663364884365089144805571039765214696027662583599051987042300179465536788567430285974600143785483237068701190078499404930918919181649327259774030074879681484882342932023012128032327460392219687528340516906974194257614673978110715464186273369091584973185011183960482533518748438923177292613543024932562896371361977285456622924461644497284597867711574125670307871885109336344480149675240618536569532074170533486782754827815415561966911055101472799040386897220465550833170782394808785990501947563108984124144672821865459971596639015641941751820935932616316888380132758752601460507676098392625726411120135288591317848299475682472564885533357279772205543568126302535748216585414000805314820697137262149755576051890481622376790414926742600071045922695314835188137463887104273544767623577933993970632396604969145303273887874557905934937772320142954803345000695256980935282887783710670585567749481373858630385762823040694005665340584887527005308832459182183494318049834199639981458773435863115940570443683515285383609442955964360676090221741896883548131643997437764158365242234642619597390455450680695232850751868719449064767791886720306418630751053512149851051207313846648717547518382979990189317751550639981016466414592102406838294603208535554058147159273220677567669213664081505900806952540610628536408293276621931939933861623836069111767785448236129326858199965239275488427435414402884536455595124735546139403154952097397051896240157976832639450633230452192645049651735466775699295718989690470902730288544945416699791992948038254980285946029052763145580316514066229171223429375806143993484914362107993576737317948964252488813720435579287511385856973381976083524423240466778020948399639946684833774706725483618848273000648319163826022110555221246733323184463005504481849916996622087746140216157021029603318588727333298779352570182393861244026868339555870607758169954398469568540671174444932479519572159419645863736126915526457574786985964242176592896862383506370433939811671397544736228625506803682664135541448048997721373174119199970017293907303350869020922519124447393278376156321810842898207706974138707053266117683698647741787180202729412982310888796831880854367327806879771659111654224453806625861711729498038248879986504061563975629936962809358189761491017145343556659542757064194408833816841111166200759787244137082333917886114708228657531078536674695018462140736493917366254937783014074302668422150335117736471853872324040421037907750266020114814935482228916663640782450166815341213505278578539332606110249802273093636740213515386431693015267460536064351732154701091440650878823636764236831187390937464232609021646365627553976834019482932795750624399645272578624400375983422050808935129023122475970644105678361870877172333555465482598906861201410107222465904008553798235253885171623518256518482203125214950700378300411216212126052726059944320443056274522916128891766814160639131235975350390320077529587392412476451850809163911459296071156344204347133544720981178461451077872399140606290228276664309264900592249810291068759434533858330391178747575977065953570979640012224092199031158229259667913153991561438070129260780197022589662923368154312499412259460023399472228171056603931877226800493833148980338548909468685130789292064242819174795866199944411196208730498064385006852620258432842085582338566936649849720817046135376163584015342840674118587581546514598270228676671855309311923340191286170613364873183197560812569460089402953094429119590295968563923037689976327462283900735457144596414108229285922239332836210192822937243590283003884445701383771632056518351970100115722010956997890484964453434612129224964732356126321951155701565824427661599326463155806672053127596948538057364208384918887095176052287817339462747644656858900936266123311152910816041524100214195937349786431661556732702792109593543055579732660554677963552005378304619540636971842916168582734122217145885870814274090248185446421774876925093328785670674677381226752831653559245204578070541352576903253522738963847495646255940378924925007624386893776475310102323746733771474581625530698032499033676455430305274561512961214585944432150749051491453950981001388737926379964873728396416897555132275962011838248650746985492038097691932606437608743209385602815642849756549307909733854185583515789409814007691892389063090542534883896831762904120212949167195811935791203162514344096503132835216728021372415947344095498316138322505486708172221475138425166790445416617303200820330902895488808516797258495813407132180533988828139346049850532340472595097214331492586604248511405819579711564191458842833000525684776874305916390494306871343118796189637475503362820939949343690321031976898112055595369465424704173323895394046035325396758354395350516720261647961347790912327995264929045151148307923369382166010702872651938143844844532639517394110131152502750465749343063766541866128915264446926222884366299462732467958736383501937142786471398054038215513463223702071533134887083174146591492406359493020921122052610312390682941345696785958518393491382340884274312419099152870804332809132993078936867127413922890033069995875921815297612482409116951587789964090352577345938248232053055567238095022266790439614231852991989181065554412477204508510210071522352342792531266930108270633942321762570076323139159349709946933241013908779161651226804414809765618979735043151396066913258379033748620836695475083280318786707751177525663963479259219733577949555498655214193398170268639987388347010255262052312317215254062571636771270010760912281528326508984359568975961038372157726831170734552250194121701541318793651818502020877326906133592182000762327269503283827391243828198170871168108951187896746707073377869592565542713340052326706040004348843432902760360498027862160749469654989210474443927871934536701798673920803845633723311983855862638008516345597194441994344624761123844617615736242015935078520825600604101556889899501732554337298073561699861101908472096600708320280569917042590103876928658336557728758684250492690370934262028022399861803400211320742198642917383679176232826444645756330336556777374808644109969141827774253417010988435853189339175934511574023847292909015468559163792696196841000676598399744972047287881831200233383298030567865480871476464512824264478216644266616732096012564794514827125671326697067367144617795643752391742928503987022583734069852309190464967260243411270345611114149835783901793499713790913696706497637127248466613279908254305449295528594932793818341607827091326680865655921102733746700132583428715240835661522165574998431236278287106649401564670141943713823863454729606978693335973109537126499416282656463708490580151538205338326511289504938566468752921135932220265681856418260827538790002407915892646028490894922299966167437731347776134150965262448332709343898412056926145108857812249139616912534202918139898683901335795857624435194008943955180554746554000051766240202825944828833811886381749594284892013520090951007864941868256009273977667585642598378587497776669563350170748579027248701370264203283965756348010818356182372177082236423186591595883669487322411726504487268392328453010991677518376831599821263237123854357312681202445175401852132663740538802901249728180895021553100673598184430429105288459323064725590442355960551978839325930339572934663055160430923785677229293537208416693134575284011873746854691620648991164726909428982971065606801805807843600461866223562874591385185904416250663222249561448724413813849763797102676020845531824111963927941069619465426480006761727618115630063644321116224837379105623611358836334550102286170517890440570419577859833348463317921904494652923021469259756566389965893747728751393377105569802455757436190501772466214587592374418657530064998056688376964229825501195065837843125232135309371235243969149662310110328243570065781487677299160941153954063362752423712935549926713485031578238899567545287915578420483105749330060197958207739558522807307048950936235550769837881926357141779338750216344391014187576711938914416277109602859415809719913429313295145924373636456473035037374538503489286113141638094752301745088784885645741275003353303416138096560043105860548355773946625033230034341587814634602169235079216111013148948281895391028916816328709309713184139815427678818067628650978085718262117003140003377301581536334149093237034703637513354537634521050370995452942055232078817449370937677056009306353645510913481627378204985657055608784211964039972344556458607689515569686899384896439195225232309703301037277227710870564912966121061494072782442033414057441446459968236966118878411656290355117839944070961772567164919790168195234523807446299877664824873753313018142763910519234685081979001796519907050490865237442841652776611425351538665162781316090964802801234493372427866930894827913465443931965254154829494577875758599482099181824522449312077768250830768282335001597040419199560509705364696473142448453825888112602753909548852639708652339052941829691802357120545328231809270356491743371932080628731303589640570873779967845174740515317401384878082881006046388936711640477755985481263907504747295012609419990373721246201677030517790352952793168766305099837441859803498821239340919805055103821539827677291373138006715339240126954586376422065097810852907639079727841301764553247527073788764069366420012194745702358295481365781809867944020220280822637957006755393575808086318932075864444206644691649334467698180811716568665213389686173592450920801465312529777966137198695916451869432324246404401672381978020728394418264502183131483366019384891972317817154372192103946638473715630226701801343515930442853848941825678870721238520597263859224934763623122188113706307506918260109689069251417142514218153491532129077723748506635489170892850760234351768218355008829647410655814882049239533702270536705630750317499788187009989251020178015601042277836283644323729779929935160925884515772055232896978333126427671291093993103773425910592303277652667641874842441076564447767097790392324958416348527735171981064673837142742974468992320406932506062834468937543016787815320616009057693404906146176607094380110915443261929000745209895959201159412324102274845482605404361871836330268992858623582145643879695210235266673372434423091577183277565800211928270391042391966426911155333594569685782817020325495552528875464466074620294766116004435551604735044292127916358748473501590215522120388281168021413865865168464569964810015633741255098479730138656275460161279246359783661480163871602794405482710196290774543628092612567507181773641749763254436773503632580004042919906963117397787875081560227368824967077635559869284901628768699628053790181848148810833946900016380791075960745504688912686792812391148880036720729730801354431325347713094186717178607522981373539126772812593958220524289991371690685650421575056729991274177149279608831502358697816190894908487717722503860872618384947939757440664912760518878124233683125467278331513186758915668300679210215947336858591201395360301678110413444411030903388761520488296909104689167671555373346622545575975202624771242796225983278405833585897671474205724047439720232895903726148688388003174146490203843590358527993123871042845981608996101945691646983837718267264685264869172948414153004604004299585035164101899027529366867431834955447458124140190754681607770977920579383895378192128847409929537040546962226547278807248685508046571043123854873351653070570784584243335550958221912862797205455466267099131902370311779690892786623112661337671178512943059323281605826535623848164192144732543731002062738466812351691016359252588256806438946389880872735284406462208149513862275239938938734905082625472417781702582044129853760499827899020083498387362992498125742354568439023012261733665820546785671147973065077035475620567428300187473019197310881157516777005071432012726354601912460800451608108641835539669946936947322271670748972850464195392966434725254724357659192969949061670189061433616907056148280980363243454128229968275980226694045642181328624517549652147221620839824594576613342710564957193564431561774500828376935700995419541839029151033187933907614207467028867968594985439789457300768939890070073924697461812855764662265412913204052279071212820653775058280040897163467163709024906774736309136904002615646432159560910851092445162454420141442641660181385990017417408244245378610158433361777292580611159192008414091888191208858207627011483671760749046980914443057262211104583300789331698191603917150622792986282709446275915009683226345073725451366858172483498470080840163868209726371345205439802277866337293290829914010645589761697455978409211409167684020269370229231743334499986901841510888993165125090001163719114994852024821586396216294981753094623047604832399379391002142532996476235163569009445086058091202459904612118623318278614464727795523218635916551883057930657703331498510068357135624341881884405780028844018129031378653794869614630467726914552953690154167025838032477842272417994513653582260971652588356712133519546838335349801503269359798167463231847628306340588324731228951257944267639877946713121042763380872695738609314631539148548792514028885025189788076023838995615684850391995855029256054176767663145354058496296796781349420116003325874431438746248313850214980401681940795687219268462617287403480967931949965604299190281810597603263251746405016454606266765529010639868703668263299050577706266397868453584384057673298268163448646707439990917504018892319267557518354054956017732907127219134577524905771512773358423314008356080926962298894163047287780054743798498545562870729968407382937218623831766524716090967192007237658894226186550487552614557855898773008703234726418384831040394818743616224455286163287628541175946460497027724490799275146445792982549802258601001772437840167723166802004162547244179415547810554178036773553354467030326469619447560812831933095679685582771932031205941616693902049665352189672822671972640029493307384717544753761937017882976382487233361813499414541694736549254840633793674361541081593464960431603544354737728802361047743115330785159902977771499610274627769759612488879448609863349422852847651310277926279743981957617505591300993377368240510902583759345170015340522266144077237050890044496613295859536020556034009492820943862994618834790932894161098856594954213114335608810239423706087108026465913203560121875933791639666437282836752328391688865373751335794859860107569374889645657187292540448508624449947816273842517229343960137212406286783636675845331904743954740664015260871940915743955282773904303868772728262065663129387459875317749973799293043294371763801856280061141619563942414312254397099163565102848315765427037906837175764870230052388197498746636856292655058222887713221781440489538099681072143012394693530931524054081215705402274414521876541901428386744260011889041724570537470755550581632831687247110220353727166112304857340460879272501694701067831178927095527253222125224361673343366384756590949728221809418684074238351567868893421148203905824224324264643630201441787982022116248471657468291146315407563770222740135841109076078464780070182766336227978104546331131294044833570134869585165267459515187680033395522410548181767867772152798270250117195816577603549732923724732067853690257536233971216884390878879262188202305529937132397194333083536231248870386416194361506529551267334207198502259771408638122015980894363561808597010080081622557455039101321981979045520049618583777721048046635533806616517023595097133203631578945644487800945620369784973459902004606886572701865867757842758530645706617127194967371083950603267501532435909029491516973738110897934782297684100117657987098185725131372267749706609250481876835516003714638685918913011736805218743265426063700710595364425062760458252336880552521181566417553430681181548267844169315284408461087588214317641649835663127518728182948655658524206852221830755306118393326934164459415342651778653397980580828158806300749952897558204686612590853678738603318442905510689778698417735603118111677563872589911516803236547002987989628986181014596471307916144369564690909518788574398821730583884980809523077569358851616027719521488998358632323127308909861560777386006984035267826785387215920936255817889813416247486456433211043194821421299793188104636399541496539441501383868748384870224681829391860319598667962363489309283087840712400431022706137591368056518861313458307990705003607588327248867879324093380071864152853317943535073401891193638546730000660453783784472469288830546979000131248952100446949032058838294923613919284305249167833012980192255157050378521810552961623637523647962685751660066539364142273063001648652613891842243501797455993616794063303522111829071597538821839777552812981538570168702202620274678647916644030729018445497956399844836807851997088201407769199261674991148329821854382718946282165387064858588646221611410343570342878862979083418871606214430014533275029715104673156021000043869510583773779766003460887624861640938645252177935289947578496255243925598620521409052346250847830487046492688313289470553891357290706967599556298586669559721686506052072801342104355762779184021797626656484580261591407173477009039475168017709900129391137881248534255949312866653465033728846390649968460644741907524313323903404908195233044389559060547854954620263256676813262435925020249516275607080900436460421497025691488555265022810327762115842282433269528629137662675481993546118143913367579700141255870143319434764035725376914388899683088262844616425575034001428982557620386364384137906519612917777354183694676232982904981261717676191554292570438432239918482261744350470199171258214687683172646078959690569981353264435973965173473319484798758064137926885413552523275720457329477215706850016950046959758389373527538622664943456437071610511521617176237598050900553232154896062817794302268640579555845730600598376482703339859420098582351400179507104569019191359062304102336798080907240196312675268916362136351032648077232914950859151265812143823371072949148088472355286394195993455684156344577951727033374238129903260198160571971183950662758220321837136059718025940870615534713104482272716848395524105913605919812444978458110854511231668173534838253724825347636777581712867205865148285317273569069839935110763432091319780314031658897379628301178409806410175016511072932907832177487566289310650383806093372841399226733384778203302020700517188941706465146238366720632742644336612174011766914919235570905644803016342294301837655263108450172510307540942604409687066288066265900569082451407632599158164499361455172452057020443093722305550217222299706209749268609762787409626448772056043078634808885709143464793241536214303199965695610753570417207285334250171325558818113295504095217830139465216436594262960768570585698507157151317262928960072587601564840556088613165411835958628710665496282599535127193244635791046554389165150954187306071015034430609582302257455974944275067630926322529966338219395202927917973247094559691016402983683080426309910481567503623509654924302589575273521412445149542462972258510120707802110188106722347972579330653187713438466713807546383471635428854957610942841898601794658721444495198801550804042506452191484989920400007310672369944655246020908767882300064337725657385010969899058191290957079866699453765080407917852438222041070599278889267745752084287526377986730360561230710723922581504781379172731261234878334034473833573601973235946604273704635201327182592410906040097638585857716958419563109577748529579836844756803121874818202833941887076311731615289811756429711334181497218078040465077657204457082859417475114926179367379999220181789399433337731146911970737861041963986422166045588965683206701337505745038872111332436739840284188639147633491695114032583475841514170325690161784931455706904169858050217798497637014758914810543205854914100662201721719726878930012101267481270235940855162601689425111458499658315589660460091525797881670384625905383256920520425791378948827579603278877535466861441826827797651258953563761485994485049706638406266121957141911063246061774180577212381659872472432252969098533628440799030007594546281549235506086481557928961969617060715201589825299772803520002610888814176506636216905928021516429198484077446143617891415191517976537848282687018750030264867608433204658525470555882410254654806040437372771834769014720664234434374255514129178503032471263418076525187802925534774001104853996960549926508093910691337614841834884596365621526610332239417467064368340504749943339802285610313083038484571294767389856293937641914407036507544622061186499127249643799875806537850203753189972618014404667793050140301580709266213229273649718653952866567538572115133606114457222800851183757899219543063413692302293139751143702404830227357629039911794499248480915071002444078482866598579406525539141041497342780203520135419925977628178182825372022920108186449448349255421793982723279357095828748597126780783134286180750497175747373730296280477376908932558914598141724852658299510882230055223242218586191394795184220131553319634363922684259164168669438122537135960710031743651959027712571604588486044820674410935215327906816032054215967959066411120187618531256710150212239401285668608469435937408158536481912528004920724042172170913983123118054043277015835629513656274610248827706488865037765175678806872498861657094846665770674577000207144332525555736557083150320019082992096545498737419756608619533492312940263904930982014700371161829485939931199955070455381196711289367735249958182011774799788636393286405807810818657337668157893827656450642917396685579555053188715314552353070355994740186225988149854660737787698781542360397080977412361518245964026869979609564523828584235953564615185448165799966460648261396618720304839119560250381111550938420209894591555760083897989949964566262540514195610780090298667014635238532066032574466820259430618801773091109212741138269148784355679352572808875543164693077235363768226036080174040660997151176880434927489197133087822951123746632635635328517394189466510943745768270782209928468034684157443127739811044186762032954475468077511126663685479944460934809992951875666499902261686019672053749149951226823637895865245462813439289338365156536992413109638102559114643923805213907862893561660998836479175633176725856523591069520326895990054884753424160586689820067483163174286329119633399132709086065074595260357157323069712106423424081597068328707624437165532750228797802598690981111226558888151520837482450034463046505984569690276166958278982913613535306291331427881888249342136442417833519319786543940201465328083410341785272489879050919932369270996567133507711905899945951923990615156165480300145359212550696405345263823452155999210578191371030188979206408883974767667144727314254467923500524618849237455307575734902707342496298879996942094595961008702501329453325358045689285707241207965919809225550560061971283541270202072583994171175520920820151096509526685113897577150810849443508285458749912943857563115668324566827992991861539009255871716840495663991959154034218364537212023678608655364745175654879318925644085274489190918193411667583563439758886046349413111875241038425467937999203546910411935443113219136068129657568583611774564654674861061988591414805799318725367531243470335482637527081353105570818049642498584646147973467599315946514787025065271083508782350656532331797738656666181652390017664988485456054961300215776115255813396184027067814900350252876823607822107397102339146870159735868589015297010347780503292154014359595298683404657471756232196640515401477953167461726208727304820634652469109953327375561090578378455945469160223687689641425960164689647106348074109928546482353083540132332924864037318003195202317476206537726163717445360549726690601711176761047774971666890152163838974311714180622222345718567941507299526201086205084783127474791909996889937275229053674785020500038630036526218800670926674104806027341997756660029427941090400064654281074454007616429525362460261476180471744322889953285828397762184600967669267581270302806519535452053173536808954589902180783145775891280203970053633193821100095443241244197949192916205234421346395653840781209416214835001155883618421164283992454027590719621537570187067083731012246141362048926555668109467076386536083015847614512581588569610030337081197058344452874666198891534664244887911940711423940115986970795745946337170243268484864632018986352827092313047089215684758207753034387689978702323438584381125011714013265769320554911860153519551654627941175593967947958810333935413289702528893533748106257875620364294270257512121137330213811951395756419122685155962476203282038726342066227347868223036522019655729325905068134849292299647248229359787842720945578267329975853818536442370617353517653060396801087899490506654491544577952166038552398013798104340564182403396162494910454712104839439200945914647542424785991096900046541371091630096785951563947332190934511838669964622788855817353221326876634958059123761251203010983867841195725887799206041260049865895027247133146763722204388398558347770112599424691208308595666787531942465131444389971195968105937957532155524204659410081418351120174196853432672343271868099625045432475688702055341969199545300952644398446384346598830418262932239295612610045884644244285011551557765935780379565026806130721758672048541797157896401554276881090475899564605488362989140226580026134158039480357971019004151547655018391755772677897148793477372747525743898158705040701968215101218826088040084551332795162841280679678965570163917067779841529149397403158167896865448841319046368332179115059107813898261026271979696826411179918656038993895418928488851750122504754778999508544083983800725431468842988412616042682248823097788556495765424017114510393927980290997604904428832198976751320535115230545666467143795931915272680278210241540629795828828466355623580986725638200565215519951793551069127710538552661926903526081367717666435071213453983711357500975854405939558661737828297120544693182260401670308530911657973113259516101749193468250063285777004686987177255226525708428745733039859744230639751837209975339055095883623642814493247460522424051972825153787541962759327436278819283740253185668545040893929401040561666867664402868211607294830305236465560955351079987185041352121321534713770667681396211443891632403235741573773787908838267618458756361026435182951815392455211729022985278518025598478407179607904114472041476091765804302984501746867981277584971731733287305281134969591668387877072315968334322509070204019030503595891994666652037530271923764252552910347950343816357721698115464329245608951158732012675424975710520894362639501382962152214033621065422821876739580121286442788547491928976959315766891987305176388698461503354594898541849550251690616888419122873385522699976822609645007504500096116866129171093180282355042553653997166054753907348915189650027442328981181709248273610863801576007240601649547082331349361582435128299050405405333992577071321011503713898695076713447940748097845416328110406350804863393555238405735580863718763530261867971725608155328716436111474875107033512913923595452951407437943144900950809932872153235195999616750297532475931909938012968640379783553559071355708369947311923538531051736669154087312467233440702525006918026747725078958903448856673081487299464807786497709361969389290891718228134002845552513917355978456150353144603409441211512001738697261466786933733154341007587514908295822756919350542184106448264951943804240543255345965248373785310657979037977505031436474651422484768831323479762673689855474944277949916560108528257618964374464656819789319422077536824661110427671936481836360534108748971066866318805026555929568123959680449295166615409802610781691689418764353363449482900125929366840591370059526914934421861891742142561071896846626335874414976973921566392767687720145153302241853125308442727245771161505550519076276250016522166274796257424425420546785767478190959486500575711016264847833741198041625940813327229905891486422127968042984725356237202887830051788539737909455265135144073130049869453403245984236934627060242579432563660640597549471239092372458126154582526667304702319359866523378856244229188278436440434628094888288712101968642736370461639297485616780079779959696843367730352483047478240669928277140069031660709951473154191919911453182543906294573298686613524886500574780251977607442660798300291573030523199052185718628543687577860915726925232573171665625274275808460620177046433101212443409281314659760221360416223031167750085960128475289259463348312408766740128170543067985261868949895004918275008304998926472034986965363326210919830621495095877228260815566702155693484634079776879525038204442326697479264829899016938511552124688935873289878336267819361764023681714606495185508780596635354698788205094762016350757090024201498400967867845405354130050482404996646978558002628931826518708714613909521454987992300431779500489569529280112698632533646737179519363094399609176354568799002814515169743717518330632232942199132137614506411391269837128970829395360832883050256072727563548374205497856659895469089938558918441085605111510354367477810778500572718180809661542709143010161515013086522842238721618109043183163796046431523184434669799904865336375319295967726080853457652274714047941973192220960296582500937408249714373040087376988068797038047223488825819819025644086847749767508999164153502160223967816357097637814023962825054332801828798160046910336602415904504637333597488119998663995617171089911809851197616486499233594328274275983382931099806461605360243604040848379619072542165869409486682092396143083817303621520642297839982533698027039931804024928814430649614747600087654305571672697259114631990688823893005380061568007730984416061355843701277573463708822073792921409548717956947854414951731561828176343929570234710460088230637509877521391223419548471196982303169544468045517922669260631327498272520906329003279972932906827204647650366969765227673645419031639887433042226322021325368176044169612053532174352764937901877252263626883107879345194133825996368795020985033021472307603375442346871647223795507794130304865403488955400210765171630884759704098331306109510294140865574071074640401937347718815339902047036749084359309086354777210564861918603858715882024476138160390378532660185842568914109194464566162667753712365992832481865739251429498555141512136758288423285957759412684479036912662015308418041737698963759002546999454131659341985624780714434977201991702665380714107259910648709897259362243300706760476097690456341576573395549588448948093604077155688747288451838106069038026528318275560395905381507241627615047252487759578650784894547389096573312763852962664517004459626327934637721151028545472312880039058405918498833810711366073657536918428084655898982349219315205257478363855266205400703561310260405145079325925798227406012199249391735122145336707913500607486561657301854049217477162051678486507913573336334257685988361252720250944019430674728667983441293018131344299088234006652915385763779110955708000600143579956351811596764725075668367726052352939773016348235753572874236648294604770429166438403558846422370760111774821079625901180265548868995181239470625954254584491340203400196442965370643088660925268811549596291166168612036195319253262662271108142149856132646467211954801142455133946382385908540917878668826947602781853283155445565265933912487885639504644196022475186011405239187543742526581685003052301877096152411653980646785444273124462179491306502631062903402737260479940181929954454297256377507172705659271779285537195547433852182309492703218343678206382655341157162788603990157495208065443409462446634653253581574814022471260618973060860559065082163068709634119751925774318683671722139063093061019303182326666420628155129647685313861018672921889347039342072245556791239578260248978371473556820782675452142687314252252601795889759116238720807580527221031327444754083319215135934526961397220564699247718289310588394769170851420631557192703636345039529604362885088555160008371973526383838996789184600327073682083234847108471706160879195227388252347506380811606090840124222431476103563328940609282430125462013806032608121942876847907192546246309055749298781661271916548229644317263587524548607563020667656942355342774617635549231817456159185668061686428714964129290560130053913469569829490891003991259088290348791943368696942620662946948514931472688923571615032405542263391673583102728579723061998175868700492227418629077079508809336215346303842967525604369606110193842723883107587771653594778681499030978765900869583480043137176832954871752604714113064847270887246697164585218774442100900090916189819413456305028950484575822161887397443918833085509908566008543102796375247476265353031558684515120283396640547496946343986288291957510384781539068343717740714095628337554413567955424664601335663617305811711646062717854078898495334329100315985673932305693426085376230981047171826940937686754301837015557540822371538037838383342702379535934403549452173960327095407712107332936507766465603712364707109272580867897181182493799540477008369348889220963814281561595610931815183701135104790176383595168144627670903450457460997444500166918675661035889313483800512736411157304599205955471122443903196476642761038164285918037488354360663299436899730090925177601162043761411616688128178292382311221745850238080733727204908880095181889576314103157447684338100457385008523652069340710078955916549813037292944462306371284357984809871964143085146878525033128989319500645722582281175483887671061073178169281242483613796475692482076321356427357261609825142445262515952514875273805633150964052552659776922077806644338105562443538136258941809788015677378951310313157361136026047890761945591820289365770116416881703644242694283057457471567494391573593353763114830246668754727566653059819746822346578699972291792416156043557665183382167059157867799311835820189855730344883681934418305987021880502259192818047775223884407167894780414701414651073580452021499197980812095692195622632313741870979731320870864552236740416185590793816745658234353037283309503729022429802768451559528656923189798000383061378732434546500582722712325031420712488100290697226311129067629080951145758060270806092801504406139446350643069742785469477459876821004441453438033759717384777232052065301037861326418823586036569054773343070911759152582503029410738914441818378779490613137536794654893375260322906277631983337976816641721083140551864133302224787118511817036598365960493964571491686005656771360533192423185262166760222073368844844409234470948568027905894191829969467724456269443308241243846160408284006424867072583661011433404214473683453638496544701067827313169538435919120440283949541956874453676459875488726170687163109591315801609722382049772577307454562979127906177531663252857205858766376754282917933549923678212008601904369428956102301731743150352204665675088491593025926618816581008701658499456495586855628208747248318351516339189292646558880593601275151838235485893426165223086697314511412035659916934103076974774451947043836739600076578628245472064617380804602903639144493859012422380173377038154675297645596518492676039300171943042511794045679862114630138402371099347243455794730048929825402680821621522346560274258486595687074510352794291633405915025075992398611224340312056999780516223878772230396359709132856830486160362127579561601328561866388146004722200580017580282279272167842720649966956840905752590774886105493806116954293569077377792821084159737469613143291808510446953973485067590503662391722108732333169909603363771705474725026941732982890400239372879549386540463828596742216318201530139629734398479588628632934746650690284066719018081265539973675916799759010867483920062877888531102781695087545740384607594616919584610655963327283485609570305572502494416337066573150237126843581984154103154401008430380631442183776750349813408169325201240813452285974626715177152223063741359255747513535160669108359443999692315898156732033027129284241219651936303734407981204656795322986357374589031654007016472204989445629050395873788912680565516464274460174738175296313458739390484560414203426465560422112239134631023161290836446988901247285192778589195228773637440432659264672239982186452797664826673070168802722052338600372842903155828454593854349099449420750911108532138744823216151007808922516285123275724355101999038195993350032641446053470357293073912578481757987468353429629749652545426864234949270336399427519354240001973125098882419600095766257217621860474573769577649582201796258392376391717855799468922496750179251915218219624653575570564228220399546682648329822996167217080156801080799777126517156274295763666959661983507435667132218383358509536665806605597148376773866922551603463644386269977295750658468929599809168949981898588529537874489519527097766262684177088590284321676352132630838812766335363319004134332844347630067982023716933653652880580156390360562722752187272454764258840995216482554453662083811789117725225682611478014242896970967121967502094421226279437073328703410646312100557376727450271638975234111426287828736758358819056742163061523416789476056879277154789714326222041069587947186435439940738639948986836168919377836648327137363654676901173760246643082285362494712605173293777247276797635865806019396287718060679122426813922872134061694882029506831654589707623668302556167559477498715183426989208952182644710514911419441192277010977616645850068963849426165593473112961064282379048216056210094265076173838082479030510998790719611852832556787472942907151041468948104916751035295897242381802288151276582257190705537652455285511598636421244284176256230139538669970308943645907600684938040875210854159851278070333207779865635907968462191534944587677170063778573171211036517486371634098385626541555573292664616402279791195975248525300376741774056125700303625811704838385391207273191845064713669122576415213769896260940351804147432053600369234179035440735703058314741623452840188940808983125191307741823338981880316339159565954543405777784331681162551898060409183018907512170192983622897099598983405484962284289398469847938668614293324543983592637036699355184231661615244505980576745765335552338715678211466689996845227042954589710922163652573965950289645637766038988037941517917867910675199009966139206238732318786758420544279396366759104126821843375015743069045967947046685602358283919759975285865384338189120042853787549302768972168199113340697282255535300044743958830079799736518459131437946494086272149669719100359399974735262764126125995350902609540048669398955899487421379590802893196914845826873123710180229775301190684280440780938156598081694611679374425663244656799606363751546304833112722231812338371779800439731087402647536582575657351059978314264831879619843765495877803685261751835391844920488198629786329743136948511780579298636452193232481339393090754566368038513630619718033957979522539508697432546502659123585049283028832934489284591373621624852528877442891851104093746333590660233239711922814450735588373324057814862662207486215513375036775585494138678352928273109003823116855374520901095101174796663003330352534143230024288248051396631446632656081582045216883922312025671065388459503224002320453633895521539919011035217362720909565500846486605368975498478995875596103167696587161281951919668893326641203784750417081752273735270989343717167642329956935697166213782736138899530515711822960896394055380431939398453970864418654291655853168697537052760701061488025700785387150835779480952313152747735711713643356413242974208137266896149109564214803567792270566625834289773407718710649866150447478726164249976671481383053947984958938064202886667951943482750168192023591633247099185942520392818083953020434979919361853380201407072481627304313418985942503858404365993281651941497377286729589582881907490040331593436076189609669494800067194371424058105327517721952474344983414191979918179909864631583246021516575531754156198940698289315745851842783390581029411600498699307751428513021286202539508732388779357409781288187000829944831476678183644656510024467827445695591845768068704978044824105799710771577579093525803824227377612436908709875189149049904225568041463131309240101049368241449253427992201346380538342369643767428862595140146178201810734100565466708236854312816339049676558789901487477972479202502227218169405159042170892104287552188658308608452708423928652597536146290037780167001654671681605343292907573031466562485809639550080023347676187068086526878722783177420214068980703410506200235273632267291964034093571225623659496432076928058165514428643204955256838543079254299909353199329432966018220787933122323225928276556048763399988478426451731890365879756498207607478270258861409976050788036706732268192473513646356758611212953074644777149423343867876705824452296605797007134458987594126654609414211447540007211790607458330686866231309155780005966522736183536340439991445294960728379007338249976020630448806064574892740547730693971337007962746135534442514745423654662752252624869916077111131569725392943756732215758704952417232428206555322808868670153681482911738542735797154157943689491063759749151524510096986573825654899585216747260540468342338610760823605782941948009334370046866568258579827323875158302566720152604684361412652956519894291184887986819088277339147282063794512260294515707367105637720023427811802621502691790400488001808901847311751199425460594416773315777951735444490965752131026306836047140331442314298077895617051256930051804287472368435536402764392777908638966566390166776625678575354239947427919442544664643315554138265543388487778859972063679660692327601733858843763144148113561693030468420017434061395220072403658812798249143261731617813894970955038369479594617979829257740992171922783223006387384996138434398468502234780438733784470928703890536420557474836284616809363650973790900204118525835525201575239280826462555785658190226958376345342663420946214426672453987171047721482128157607275305173330963455909323664528978019175132987747952929099598069790148515839540444283988381797511245355548426126784217797728268989735007954505834273726937288386902125284843370917479603207479554080911491866208687184899550445210616155437083299502854903659617362726552868081324793106686855857401668022408227992433394360936223390321499357262507480617409173636062365464458476384647869520547719533384203403990244761056010612777546471464177412625548519830144627405538601855708359981544891286863480720710061787059669365218674805943569985859699554089329219507269337550235821561424994538234781138316591662683103065194730233419384164076823699357668723462219641322516076261161976034708844046473083172682611277723613381938490606534404043904909864126903479263503943531836741051762565704797064478004684323069430241749029731181951132935746854550484711078742905499870600373983113761544808189067620753424526993443755719446665453524088287267537759197074526286322840219629557247932987132852479994638938924943286917770190128914220188747760484939855471168524810559991574441551507431214406120333762869533792439547155394213121021954430556748370425907553004950664994802614794524739012802842646689229455664958621308118913500279654910344806150170407268010067948926855360944990373928383520627992820181576427054962997401900837493444950600754365525758905546552402103412862124809003162941975876195941956592556732874237856112669741771367104424821916671499611728903944393665340294226514575682907490402153401026923964977275904729573320027982816062130523130658731513076913832317193626664465502290735017347656293033318520949298475227462534564256702254695786484819977513326393221579478212493307051107367474918016345667888810782101151826314878755138027101379868751299375133303843885631415175908928986956197561123025310875057188962535763225834275763348421016668109884514141469311719314272028007223449941999003964948245457520704922091620614222912795322688239046498239081592961111003756999529251250673688233852648213896986384052437049402152187547825163347082430303521036927849762517317825860862215614519165573478940019558704784741658847364803865995119651409542615026615147651220820245816010801218275982577477652393859159165067449846149161165153821266726927461290533753163055654440793427876550267301214578324885948736899073512166118397877342715872870912311383472485146035661382188014840560716074652441118841800734067898587159273982452147328317214621907330492060817440914125388918087968538960627860118193099489240811702350413554126823863744341209267781729790694714759018264824761112414556423937732224538665992861551475342773370683344173073150805440138894084087253197595538897613986400165639906934600670780501058567196636796167140097031535132386972899001749862948883362389858632127176571330142071330179992326381982094042993377790345261665892577931395405145369730429462079488033141099249907113241694504241391265397274078984953073730364134893688060340009640631540701820289244667315059736321311926231179142794944897281477264038321021720718017561601025111179022163703476297572233435788863537030535008357679180120653016668316780269873860755423748298548246360981608957670421903145684942967286646362305101773132268579232832164818921732941553151386988781837232271364011755881332524294135348699384658137175857614330952147617551708342432434174779579226338663454959438736807839569911987059388085500837507984051126658973018149321061950769007587519836861526164087252594820126991923916722273718430385263107266000047367872474915828601694439920041571102706081507270147619679971490141639274282889578424398001497985658130305740620028554097382687819891158955487586486645709231721825870342960508203415938806006561845735081804032347750084214100574577342802985404049555529215986404933246481040773076611691605586804857302606467764258503301836174306413323887707999698641372275526317649662882467901094531117120243890323410259937511584651917675138077575448307953064925086002835629697045016137935696266759775923436166369375035368699454550392874449940328328128905560530091416446608691247256021455381248285307613556149618444364923014290938289373215312818797541139219415606631622784836152140668972661027123715779503062132916001988806369127647416567067485490795342762338253943990022498972883660263920518704790601584084302914787302246651371144395418253441269003331181914268070735159284180415100555199146564934872796969351992963117195821262627236458009708099166752820365818699111948365866102758375863322993225541477479210421324166848264953111826527351008031659958888814809945737293785681411438021523876706455063233067233939551964260397443829874822322662036352861302543796600943104500158604854027036789711934695579989189112302233381602302236277726084846296189550730850698061500281436425336666311433321645213882557346329366870956708432252564333895997812402164189946978348320376011613913855499933990786652305860332060641949298931012423081105800169745975038516887112037747631577311831360002742502722451570906304496369230938382329175076469684003556425503797106891999812319602533733677437970687713814747552190142928586781724044248049323750330957002929126630316970587409214456472022710796484778657310660832173093768033821742156446602190335203981531618935787083561603302255162155107179460621892674335641960083663483835896703409115513087820138723494714321400450513941428998350576038799343355677628023346565854351219361896876831439866735726040869511136649881229957801618882834124004126142251475184552502502640896823664946401177803776799157180146386554733265278569418005501363433953502870836220605121839418516239153709790768084909674194289061134979961034672077354959593868862427986411437928435620575955500144308051267664432183688321434583708549082240014585748228606859593502657405750939203135881722442164955416889785558265198046245527898343289578416968890756237467281044803018524217706136533236073856228166664597654076844715963930782091017090763377917711485205493367936868430832404126789220929930411890501756484917499452393770674524578019171841679541825554377930299249277892416277257788147974770446005423669346157135208417428211847353652367573702352791459837645712257646122605628127852169580892808988394594406165340521932514843306105322700231133680378433377389724881307874325614952744243584753011150345103737688223837573804282007358586938044331529253129961025096113761670187568525921208929131354473196308440066835155160913925692912175784379179004808848023029304392630921342768601226558630456913133560978156776098711809238440656353136182676923761613389237802972720736243967239854144480757286813436768000573823963610796223140429490728058551444771338682314499547929338131259971996894072233847404542592316639781608209399269744676323921370773991899853301483814622364299493902073285072098040905300059160091641710175605409814301906444379905831277826625762288108104414704097708248077905168225857235732665234414956169007985520848841886027352780861218049418060017941147110410688703738674378147161236141950474056521041002268987858525470689031657094677131822113205505046579701869337769278257145248837213394613987859786320048011792814546859096532616616068403160077901584946840224344163938313618742275417712170336151163782359059685168880561304838542087505126933144171705880517278127917564053282929427357971823360842784676292324980318169828654166132873909074116734612367109059236155113860447246378721244612580406931724769152219217409096880209008801535633471775664392125733993165330324425899852598966724744126503608416484160724482125980550754851232313331300621490042708542735985913041306918279258584509440150719217604794274047740253314305451367710311947544521321732225875550489799267468541529538871443696399406391099267018219539890685186755868574434469213792094590683677929528246795437302263472495359466300235998990248299853826140395410812427393530207575128774273992824866921285637240069184859771126480352376025469714309316636539718514623865421671429236191647402172547787238964043145364190541101514371773797752463632741619269990461595895793940622986041489302535678633503526382069821487003578061101552210224486633247184367035502326672749787730470216165019711937442505629639916559369593557640005236360445141148916155147776301876302136068825296274460238077523189646894043033182148655637014692476427395401909403584437251915352134557610698046469739424511797999048754951422010043090235713636892619493763602673645872492900162675597083797995647487354531686531900176427222751039446099641439322672532108666047912598938351926694497553568096931962642014042788365702610390456105151611792018698900673027082384103280213487456720062839744828713298223957579105420819286308176631987048287388639069922461848323992902685392499812367091421613488781501234093387999776097433615750910992585468475923085725368613605356762146929424264323906626708602846163376051573599050869800314239735368928435294958099434465414316189806451480849292695749412903363373410480943579407321266012450796613789442208485840536446021616517885568969302685188950832476793300404851688934411125834396590422211152736276278672366665845757559585409486248261694480201791748223085835007862255216359325125768382924978090431102048708975715033330963651576804501966025215527080352103848176167004443740572131294252820989545456276344353575741673638980108310579931697917916718271145837435222026387771805250290791645414791173616253155840768495583288190293564201219633684854080865928095131505012602919562576032932512847250469881908146475324342363863860247943921015193235101390117789997483527186469346024554247028375300033725403910085997650987642832802908445662021678362267272292737780213652404028817217012490974899454430826861772239385250883760749742195942655217301733355851389407457348144161511380845358039740277795072051893487170722955427683655826706766313911972211811528466502223383490906676554168336907959409404576472940901354356409277969379842065738891481990225399022315913388145851487225126560927576795873759207013915029216513720851137197522734365458411622066281660256333632074449918511469174455062297146086578736313585389023662557285424516018080487167823688885575325066254262367702604215835160174851981885460860036597606743233346410471991027562358645341748631726556391320606407754779439671383653877377610828300019937359760370467245737880967939894493795829602910746901609451288456550071458091887879542641820145369659962842686882363495879277007025298960996798975941955735253914237782443302746708282008722602053415292735847582937522487377937899136764642153727843553986244015856488692101644781661602962113570056638347990334049623875941092886778920270077504951511405782565295015024484968204744379710872943108541684540513016310902267112951959140520827546866418137305837933236150599142045255880213558474751516267815309465541240524091663857551298894834797423322854504140527354235070335984964593699534959698554244978249586929179182415068053002553370412778703476446244329205906832901886692400222391918714603175399666877477960121790688623311002908668305431787009355066944389131913333586368037447530664502418437136030852288582121720231274167009740351431532131803978033680228154223490183737494117973254478594157962104378787072154814091725163615415163381388912588517924237727229603497305533840942889918919161186249580560073570527227874940321250645426206304469470804277945973817146810395192821550688079136701210109944220737024613687196031491162370967939354636396448139025711768057799751751298979667073292674886430097398814873780767363792886767781170520534367705731566895899181530825761606591843760505051704242093231358724816618683821026679970982966436224723644898648976857100173643547336955619347638598187756855912376232580849341570570863450733443976604780386678461711520325115528237161469200634713570383377229877321365028868868859434051205798386937002783312365427450532283462669786446920780944052138528653384627970748017872477988461146015077617116261800781557915472305214759943058006652042710117125674185860274188801377931279938153727692612114066810156521441903567333926116697140453812010040811760123270513163743154487571768761575554916236601762880220601068655524141619314312671535587154866747899398685510873576261006923021359580838145290642217792987748784161516349497309700794368305080955621264592795333690631936594413261117944256602433064619312002953123619348034504503004315096798588111896950537335671086336886944665564112662287921812114121425167348136472449021275252555647623248505638391391630760976364990288930588053406631352470996993362568102360392264043588787550723319888417590521211390376609272658409023873553418516426444865247805763826160023858280693148922231457758783791564902227590699346481624734399733206013058796068136378152964615963260698744961105368384203105364183675373594176373955988088591188920114871545460924735613515979992999722298041707112256996310945945097765566409972722824015293663094891067963296735505830412258608050740410916678539569261234499102819759563955711753011823480304181029089719655278245770283085321733741593938595853203645590564229716679900322284081259569032886928291260139267587858284765599075828016611120063145411315144108875767081854894287737618991537664505164279985451077400771946398046265077776614053524831090497899859510873112620613018757108643735744708366215377470972660188656210681516328000908086198554303597948479869789466434027029290899143432223920333487108261968698934611177160561910681226015874410833093070377506876977485840324132474643763087889666151972556180371472590029550718424245405129246729039791532535999005557334600111693557020225722442772950263840538309433999383388018839553821540371447394465152512354603526742382254148328248990134023054550811390236768038649723899924257800315803725555410178461863478690646045865826036072306952576113184134225274786464852363324759102670562466350802553058142201552282050989197818420425028259521880098846231828512448393059455162005455907776121981297954040150653985341579053629101777939776957892084510979265382905626736402636703151957650493344879513766262192237185642999150828898080904189181015450813145034385734032579549707819385285699926238835221520814478940626889936085239827537174490903769904145555260249190126341431327373827075950390882531223536876389814182564965563294518709637484074360669912550026080424160562533591856230955376566866124027875883101021495284600804805028045254063691285010599912421270508133194975917146762267305044225075915290251742774636494555052325186322411388406191257012917881384181566918237215400893603475101448554254698937834239606460813666829750019379115061709452680984785152862123171377897417492087541064556959508967969794980679770961683057941674310519254486327358885118436597143583348756027405400165571178309126113117314169066606067613797690123141099672013123730329707678988740099317309687380126740538923612230370779727025191340850390101739924877352408881040807749924412635346413181858792480760553268122881584307471326768283097203149049868884456187976015468233715478415429742230166504759393312132256510189175368566338139736836336126010908419590215582111816677413843969205870515074254852744810154541079359513596653630049188769523677579147319184225806802539818418929888943038224766186405856591859943091324575886587044653095332668532261321209825839180538360814144791320319699276037194760191286674308615217243049852806380129834255379486287824758850820609389214668693729881191560115633701248675404205911464930888219050248857645752083363921499441937170268576222251074166230901665867067714568862793343153513505688216165112807318529333124070912343832502302341169501745502360505475824093175657701604884577017762183184615567978427541088499501610912720817913532406784267161792013428902861583277304794830971705537485109380418091491750245433432217445924133037928381694330975012918544596923388733288616144238100112755828623259628572648121538348900698511503485369544461542161283241700533583180520082915722904696365553178152398468725451306350506984981006205514844020769539324155096762680887603572463913955278222246439122592651921288446961107463586148252820017348957533954255019475442643148903233373926763409115527189768429887783617346613535388507656327107814312435018965109238453660236940276060642119384227665755210663671879603217527184404651560427289869560206997012906367847161654793068868305846508082886614111979138822898112498261434559408961813509226857611474609406147937240008842153535862052780125014270055274468359151840373309373580494342483940467505708347927948338133276237937844629209323999417593374917899786484958148818865149169302451512835579818112344900827168644548306546633975256079615935830821400021951611342337058359111545217293721664061708131602078213341260356852013161345136871600980378712556766143923146458085652084039744217352744813741215277475202259244561520365608268890193913957991844109971588312780020898275935898106482117936157951837937026741451400902833064466209280549839169261068975151083963132117128513257434964510681479694782619701483204392206140109523453209269311762298139422044308117317394338867965739135764377642819353621467837436136161591167926578700137748127848510041447845416464568496606699139509524527949914769441031612575776863713634644477006787131066832417871556281779122339077841275184193161188155887229676749605752053192594847679397486414128879475647133049543555044790277128690095643357913405127375570391806822344718167939329121448449553897728696601037841520390662890781218240141299368590465146519209198605347788576842696538459445700169758422531241268031418456268722581132040056433413524302102739213788415250475704533878002467378571470021087314693254557923134757243640544448132093266582986850659125571745568328831440322798049274104403921761438405750750288608423536966715191668510428001748971774811216784160854454400190449242294333666338347684438072624307319019363571067447363413698467328522605570126450123348367412135721830146848071241856625742852208909104583727386227300781566668914250733456373259567253354316171586533339843321723688126003809020585719930855573100508771533737446465211874481748868710652311198691114058503492239156755462142467550498676710264926176510110766876596258810039163948397811986615585196216487695936398904500383258041054420595482859955239065758108017936807080830518996468540836412752905182813744878769639548306385089756146421874889271294890398025623046812175145502330254086076115859321603465240763923593699949180470780496764486889980902123735780457040380820770357387588525976042434608851075199334470112741787878845674656640471901619633546770714090590826954225196409446319547658653032104723804625249971910690110456227579220926904132753699634145768795242244563973018311291451151322757841320376225862458224784696669785947914981610522628786944136373683125108310682898766123782697506343047263278453719024447970975017396831214493357290791648779915089163278018852504558488782722376705263811803792477835540018117452957747339714012352011459901984753358434861297092928529424139865507522507808919352104173963493428604871342370429572757862549365917805401652536330410692033704691093097588782938291296447890613200063096560747882082122140978472301680600835812336957051454650181292694364578357815608503303392466039553797630836137289498678842851139853615593352782103740733076818433040893624460576706096188294529171362940967592507631348636606011346115980434147450705511490716640635688739020690279453438236930531133440901381392849163507484449076828386687476663619303412376248380175840467851210698290605196112357188811150723607303158506622574566366740720668999061320627793994112805759798332878792144188725498543014546662945079670707688135022230580562225942983096887732856788971494623888272184647618153045844390967248232348259587963698908456664795754200195991919240707615823002328977439748112690476546256873684352229063217889227643289360535947903046811114130586348244566489159211382258867880972564351646404364328416076247766114349880319792230537889671148058968061594279189647401954989466232962162567264739015818692956765601444248501821713300527995551312539849919933907083138030214072556753022600033565715934283182650908979350869698950542635843046765145668997627989606295925119763672907762567862769469947280606094290314917493590511523235698715397127866718077578671910380368991445381484562682604003456798248689847811138328054940490519768008320299631757043011485087384048591850157264392187414592464617404735275250506783992273121600117160338604710710015235631159734711153198198710616109850375758965576728904060387168114313084172893710817412764581206119054145955378853200366615264923610030157044627231777788649806700723598889528747481372190175074700005571108178930354895017924552067329003818814068686247959272205591627902292600592107710510448103392878991286820705448979977319695574374529708195463942431669050083984398993036790655541596099324867822475424361758944371791403787168166189093900243862038610001362193667280872414291108080291896093127526202667881902085595708111853836166128848729527875143202956393295910508349687029060692838441522579419764824996318479414814660898281725690484184326061946254276693688953540732363428302189694947766126078346328490315128061501009539164530614554234923393806214007779256337619373052025699319099789404390847443596972052065999017828537676265683558625452697455260991024576619614037537859594506363227095122489241931813728141668427013096050734578659047904243852086508154491350136491698639048125666610843702294730266721499164849610746803261583352580352858275799038584091667618877199539888680431991650866887781701439663176815592262016991396613153738021294160006906947533431677802632207226265881842757216055461439677336258462997385077307751473833315101468395296411397329672457933540390136107395245686243008096720460995545708974893048753897955544443791303790422346037768729236001386569593952300768091377768847789746299699489949016141866131552200856673695770822720338936659590666350594330040363762591189195691561626122704788696510356062748423100605472091437069471661080277379848576543481249822444235828329813543645124092220896643987201997945619030397327254617823136363375927622656301565813545578319730419339269008282952718252138855126583037630477490625995514925943105307478901043009876580816508144862607975129633326675259272351611791836777128931053144471668835182920514343609292493191180249366051791485330421043899773019267686085347768149502299280938065840007311767895491286098112311307002535600347898600653805084532572431553654422067661352337408211307834360326940015926958459588297845649462271300855594293344520727007718206398887404742186697709349647758173683580193168322111365547392288184271373843690526638607662451284299368435082612881367358536293873792369928837047900484722240370919885912556341130849457067599032002751632513926694249485692320904596897775676762684224768120033279577059394613185252356456291805905295974791266162882381429824622654141067246487216174351317397697122228010100668178786776119825961537643641828573481088089988571570279722274734750248439022607880448075724807701621064670166965100202654371260046641935546165838945950143502160890185703558173661823437491622669077311800121188299737319891006060966841193266075165452741829459541189277264192546108246351931647783837078295218389645376236304858042774417907169146356546201215125418664885396161542055152375000426794253417764590821513675258479774465114750438460596325820468809667795709044645884673847481638045635188183210386594798204376334738389017759714236223057776395541011294523488098341476645559342209402059733452337956309441446698222457026367119493286653989491344225517746402732596722993581333110831711807234044326813737231209669052411856734897392234152750707954137453460386506786693396236535556479102508529284294227710593056660625152290924148057080971159783458351173168204129645967070633303569271821496292272073250126955216172649821895790908865085382490848904421755530946832055636316431893917626269931034289485184392539670922412565933079102365485294162132200251193795272480340133135247014182195618419055761030190199521647459734401211601239235679307823190770288415814605647291481745105388060109787505925537152356112290181284710137917215124667428500061818271276125025241876177485994084521492727902567005925854431027704636911098800554312457229683836980470864041706010966962231877065395275783874454229129966623016408054769705821417128636329650130416501278156397799631957412627634011130135082721772287129164002237230234809031485343677016544959380750634285293053131127965945266651960426350406454862543383772209428482543536823186182982713182489884498260285705690699045790998144649193654563259496570044689011049923939218088155626191834404362264965506449848521612498442375928443642612004256628602157801140467879662339228190804577624109076487087406157070486658398144845855803277997327929143195789110373530019873110486895656281917362036703039179710646309906285483702836118486672219457621775034511770110458001291255925462680537427727378863726783016568351092332280649908459179620305691566806180826586923920561895421631986004793961133953226395999749526798801074576466538377400437463695133685671362553184054638475191646737948743270916620098057717103475575333102702706317395612448413745782734376330101853438497450236265733191742446567787499665000938706441886733491099877926005340862442833450486907338279348425305698737469497333364267191968992849534561045719338665222471536681145666596959735075972188416698767321649331898967182978657974612216573922404856900225324160367805329990925438960169901664189038843548375648056012628830409421321300206164540821986138099462721214327234457806819925823202851398237118926541234460723597174777907172041523181575194793527456442984630888846385381068621715274531612303165705848974316209831401326306699896632888532682145204083110738032052784669279984003137878996525635126885368435559620598057278951754498694219326972133205286374577983487319388899574634252048213337552584571056619586932031563299451502519194559691231437579991138301656117185508816658756751184338145761060365142858427872190232598107834593970738225147111878311540875777560020664124562293239116606733386480367086953749244898068000217666674827426925968686433731916548717750106343608307376281613984107392410037196754833838054369880310983922140260514297591221159148505938770679068701351029862207502287721123345624421024715163941251258954337788492834236361124473822814504596821452253550035968325337489186278678359443979041598043992124889848660795045011701169092519383155609441705397900600291315024253848282782826223304151370929502192196508374714697845805550615914539506437316401173317807741497557116733034632008408954066541694665746735785483133770133628948904397670025863002540635264006601631712883920305576358989492412827022489373848906764385339931878608019223108328847459816417701264089078551777830131616162049792779670521847212730327970738223860581986744668610994383049960437407323195784473254857416239738852016202384784256163512597161783106850156299135559874758848151014815490937380933394074455700842090155903853444962128368313687375166780513082594599771257467939781491953642874321122421579851584491669362551569370916855252644720786527971466476760328471332985501945689772758983450586004316822658631176606237201721007922216410188299330808409384014213759697185976897042759041500946595252763487628135867117352364964121058854934496645898651826545634382851159137631569519895230262881794959971545221250667461174394884433312659432286710965281109501693028351496524082850120190831078678067061851145740970787563117610746428835593915985421673115153096948758378955979586132649569817205284291038172721213138681565524428109871168862743968021885581515367531218374119972919471325465199144188500672036481975944167950887487934416759598361960010994838744709079104099785974656112459851972157558134628546189728615020774374529539536929655449012953097288963767713353842429715394179547179095580120134210175150931491664699052366350233024087218654727629639065723341455005903913890253699317155917179823065162679744711857951506573868504088229934804445549850597823297898617029498418376255258757455303112991914341109413088238114443068843062655305601658801408561023324210300218460588586954418502977463085858496130037238190325162225570729975710727306066072916922978033647048840958711228045188511908718588299514331534128549297173849768523136276076868494780364948299904475715771141080958058141208956059471668626290036145602625334863284986816039463372436667112964460292915746181117789169695839947080954788863503281129626899231110099889317815313946681882028368363373822281414974006917942192888817139116283910295684918233358930813360131488748366464224381776081007739183393749346933644748150564933649323157235306109385796839902153381449126925350768211098738352197507736653475499431740580563099143218212547336281359488317681489194306530426029773885492974570569448783077945878865062970895499843760181694031056909587141386804846359853684034105948341788438963179956468815791937174656705047441528027712541569401365862097760735632832966564135817028088013546326104892768731829917950379944446328158595181380144716817284996793061814177131912099236282922612543236071226270324572637946863533391758737446552006008819975294017572421299723542069630427857950608911113416534893431149175314953530067419744979017235181671568754163484949491289001739377451431928382431183263265079530371177806185851153508809998200482761808307209649636476943066172549186143700971387567940218696710148540307471561091358933165600167252126542502898612259306484105898847129649230941215144563947889999327145875969555737090855150648002321476443037232466147111552578583071024936898814562568786834745518893385181791667579054210421036349316257870476543126790661216644142285017446278477132740595579600648343288827864837043456066966456899746910373987712891593313271266247505582258634928427718355831641593667712218537642376222104779338956378722902509543014182257180331300148113377736941508488867501893156994849838936052666818012783912005801431596441910546663236810148207799356523056490420711364192200177189107935243234322761787712568251126481332974354926568682748715986654943041648468220593921673359485057849622807932422649812705271398407720995707236227009245067665680069149966555737866411877079767754867028786431817941521796178310655030287157272282250812017060713380339641841211253856248920130010782462165136989511064611133562443838185366273563783436921279354709230119655914915800561707258518503167289370411936374780625824298250726464801821523430268081486978164824349353456855843696378384153838051184406043696871666416514036129729992912630842812149152469877429332305214999981829046119471676727503742221367186614654042534463141660649871499001000660041544868437352208483059495953182872280520828676300361091734508632133033647289584176588755345227938480297724485711815574893561311524926772006362198369980664159549388683836411891430443767715498026544959061738265591178545999378510861446014967645550103653971251138583505085112442517772923814396233043724036032603181442991365750246012787514117944901305803452199992701148071712847770301254994886841867572975189214295652512486943983729047410363121899124217339550688778643130750024823361832738729697376598820053895902935486054979802320400472236873557411858132734337978931582039412878989728973298812553514507641535360519462112217000676321611195841029252568536561813138784086477147099724553013170761712163186600291464501378587854802096244703771373587720086738054108140042311418525803293267396324596914044834665722042880679280616029884043400536534009706581694636096660911110968789751801325224478246957913251892122653056085866541115373584912790254654369020869419871125588453729063224423222287139122012248769976837147645598526739225904997885514250047585260297929306159913444898341973583316070107516452301310796620382579278533125161760789984630103493496981494261055367836366022561213767081421091373531780682420175737470287189310207606953355721704357535177461573524838432101571399813798596607129664438314791296359275429627129436142685922138993054980645399144588692472767598544271527788443836760149912897358259961869729756588978741082189422337344547375227693199222635973520722998387368484349176841191020246627479579564349615012657433845758638834735832242535328142047826934473129971189346354502994681747128179298167439644524956655532311649920677163664580318205849626132234652606175413532444702007661807418914040158148560001030119994109595492321434406067634769713089513389171050503856336503545166431774489640061738861761193622676890576955693918707703942304940038440622614449572516631017080642923345170422426679607075404028551182398361531383751432493056398381877995594942545196756559181968690885283434886050828529642437578712929439366177362830136595872723080969468398938676366226456791132977469812675226595621009318322081754694778878755356188335083870248295346078597023609865656376722755704495258739871812593441903785275571333409842450127258596692434317689018966145404453679047136294238156127656824247864736176671770647002431119711090007474065945650315375044177982192306323700872039212085499569681061379189029961178936752146022386905665481382858280449537530160921422195940638787074787991194920898374091788534417523064715030278397979864517336625329511775105559014160459873338186887977858817291976604516353353556047648420520888811722831990044504284486852338334530105533929637308039738230604714104525470094899407601215247602819963846343554852932377161410869591950786873276075400085220065031871239272857835807010762542769655355964789450166013816295177908531139811092831583216931563867459747449584385282701658246192092219529134323496779345585613140207765996142546463288677356891785576835169608392864188830094883324700447958316931533832382377876344426323456301679513671047510469669001217777128065522453689371871451567394733440447280450959433090683667110655953338602938000999949010642769859623260401863733572846679531229683156358145420890540651226419162015504500430562136991850941034609601030543816694795964585804425194905110733387679946734471718615647723811737035654917628707589456035519195603962301157866323750234725054461073979402475184415558178087962822231972692984516683306919505079993357259165675557294585962182052650473353712351623662770479333289322136141858785972771685682725303734836891911847197133753088446777943274857148827821608844765700041403499921376794209627560883081509438030705666022764678117533361028187800710219794428777313146387857817205661409023041499923248268982477222109852189758140879763486146763606368674611966620347304608917277240045953051376938375381543486981101990651706961774052218247422657652138152740612699012706880875386408669901461740890540981877671880076124151967064152117653084325544261017536348281196837493395825742541244634247233586360777980960199745187758845459645895956779558869098404768259253477849930457883128541747079059795909431627722327844578918694214929451540174214623240300841907975296782445969183509474202123617940309048634960534054931299919496087957952586977170236680033862505764938088740994009589948109397983231108838769236490221499111120870639202892490698435333152727991330986335454324971441378059132240814960156485679843966464780280409057580889190254236606774500413415794312112501275232250148067232979652230488493751166084976116412777395311302041566848265531411348993243747890268935173904043294851610659785832253168204202834993641595980197343889883020994152152288611175126686173051956249367180053845637855129171848417841594797435580617856680758491080185805695567990185198397660693358224779136504562705766735170961550493338390452612404395517449136885115987454340932040102218982707539212403241042424451570052968378815749468441508011138612561164102477190903050040240662278945607061512108266146098662040425010583978098192019726759010749924884966139441184159734610382401178556739080566483321039073867083298691078093495828888707110651559651222542929154212923108071159723275797510859911398076844732639426419452063138217862260999160086752446265457028969067192282283045169111363652774517975842147102219099906257373383472726498678244401048998507631630668050267115944636293525120269424810854530602810627264236538250773340575475701704367039596467715959261029438313074897245505729085688496091346323165819468660587092144653716755655531962091865952628448253731353698162517351930115341581171353292035873164168839107994000677266031617527582917398395852606454113318985505747847121053505795649095931672167565624818782002769963734155880000867852567422461511406015760115910256449002264980039498403358091309140197877843650167960167465370287466062584346329708303725980494653589318912163976013193079476972058034710553111117215859219066231028099212084069283091906017370764654655683413207556315315006453462321007133584907633048328153458698497332599801187479664273140279381289961720524540674695271948079930396730194274036466594154400092799908634806622334906695224044652158992864203435098858422692019340575496840904812955522654754650713532842543496616084954788090727649930252702815067862810825243222979985391759845188868387004477101866772159439708514664612871148749531862180941719676843144666435175837688436786081446319641912566574047718699160915550910878919431253671945651261878486910876729910565595155159739659034383628124629118117760949411880105946336671039049777312004243578115790429823045072038322781246413671297959415082918378213212876890545963586369344879749784841123274921331663162812456388238288715648447883142417650147980187858215768793063001153788998014623690135803753306246148576074932567807682651045738059018831237617271889933790487113395588485234240255002352200613574914318259142479829367775490496399350755839668967578364316618369307625603528602940662803255416535431518013714821941772672244005268401996533334184004345525296592918502940131600651124395297874364222806977720437363717873457948420238745151249157913139411148608416429347958793681868609689684640858334131017858142710955416293375915178392341303110543328703526599993904966822112768158316511246866451167351378214345336650598328347443536290312393672084593164394941881138607974670134709640378534907149089842317891739783650654751982883367395714360000003439863363212091718954899055748693397700245632475954504411422582410783866837655467400137324322809113692670682805397549111166171102397437749479335174036135005397581475520834285772800986189401984375446435081498218360112577632447389452051636938585136484259964518361856989088721789764694721246807900330925083496645841656554261294195108847197209106605105540933731954888406444080280579549008076040034154662137669606444293774985897353625591959618552448187940317374508256072895120945456562159540405425814886929842786582357673195799285293120866275922366115137445767916063621675267440451221051052090834707443986137829082352772895849625656881972792768694795806100573787084121444815034797422312103295359297822377134077549545477791813823542607184617108389097825964406170543546968567030745411634244134486308676327949177682923093183221341455482591367202823284396549001805653203960795517074496039006696990334199278212696767771835209083959545341866777944872740383733381985235884202840150981579594685874537989503257362809837592216229258598599123843993575573285028613155970362934249814178056461615863415338635077223269996508860870999964899373049307170967888740149746147542880387421250689212155876692242387434701120990859082164073576380817386959755176083877600277517253037133445654852635661720197563001580049790223419586738061442401502436288957503206533690825756785507020555105572381878574650371086308158185862815883054564662297694803970618265491385181326737485227188267917919091354407852685476254126683398240534022469989966652573155637645862251862823092085424412805997628505488913098331761884983352975136073772030571342739638126588567405013841074788943393996603591853934198416322617654857376671943132840050626295140357877264680649549355746326408186979718630218760025813995719923601345374229758918285167511358171472625828596940798518571870075823122317068134867930884899275181661399609753105295773584618525865211893339375771859916335112163441037910451845019023066893064178977808158101360449495409665363660370075881004450265734935127707426742578608784898185628869980851665713320835842613381142623855420315774246613108873106318111989880289722849790551075148403702290580483052731884959994156606537314021296702220821915862905952604040620011815269664910068587592655660567562963361434230232810747488395040380984981860056164646099819257616235478710913832967563761506732550860683433720438748186791668975746563456020002562889601191100980453350423842063824039434163502977688802779835087481178298349417211674919425601608685332435385951152061809031241698182079314615062073826097180458265687043623935757495737332781578904386011378078508110273049446611821957450170106059384336519458628360682108585130499820420578458577175933849015564447305834515291412561679970569657426139901681932056241927977282026714297258700193234337873153939403115411184101414292741703537542003698760608765500109345299007034032401334806388514095769557147190364152027721127070187421548123931953220997506553022646844227700020589045922742423904937051507367764629844971682121994198274794049092601715727439368569721862936007387077810797440975556627807371228030350048829843919546433753355787895064018998685060281902452191177018634505171087023903398550540704454189088472042376499749035038518949505897971286631644699407490959473411581934618336692169573605081585080837952036335619947691937965065016808710250735070825260046821242820434367245824478859256555487861614478717581068572356895150707602217433511627331709472765932413249132702425519391509083601346239612335001086614623850633127072987745618984384288764099836164964775714638573247333226653894523588365972955159905187411779288608760239306160016168434070611663449248395156319152882728822831375458678269830696691220130954815935450754923554167766876455212545681242936427474153815692219503331560151614492247512488957534835926226263545406704767033866410025277276800886383266629488582740369655329362236090572479794734434077704284318507901973469071141230364111729224929307731939309795452877412451183953480382210373644697046967493042810911797232448615413264031578430955396671061468083815548947146733652483679138566431084747848676243012018489329109615281108087617422779131629345494425395422727309645057976122885347393189600810965202090151104579377602529543130188938184010247010134929317443562883578609861545691161669857388024973756940558138630581099823372565164920155443216861690537054630176154809626620800633059320775897175589925862195462096455464624399535391743228225433267174308492508396461328929584567927365409119947616225155964704061297047759818551878441419948614013153859322060745185909608884280218943358691959604936409651570327527570641500776261323783648149005245481413195989296398441371781402764122087644989688629798910870164270169014007825748311598976330612951195680427485317886333041169767175063822135213839779138443325644288490872919067009802496281560626258636942322658490628628035057282983101266919109637258378149363774960594515216932644945188292639525772348420077356021656909077097264985642831778694777804964343991762549216500608626285329471055602670413384500507827390640287529864161287496473708235188892189612641279553536442286955430551308700009878557534223100547153412810957024870812654319123261956462149376527526356402127388765103883255007364899937167183280028398832319373301564123277185395654932422977953016534830128490677845037490891749347389015649588574802194996722621185874361039774946338633057887487405540005440439344888192044102134790034598411927024921557026873700970995205391930979319495883265922171508324621942300185974396706491149559411733728199869021311629886680267446443489233020607003821262841723679627307191405008084085703978151998148822390059948911946474438682533745889962375133378280532928272016815977970066488394482446332210928320504045983008943565954267256879714918703447338237767914829203283196838105907715727191903042365315650957464549643425328069510396558733549803850995143463506175361480050195045201350200180281506933241918267855737764414097080945745624854867704904368368717590918057269794010465019484853146726642978667687697789291431128505043098192949736165944259471754765135205245072597538577958372797702972231435199958499522344049394502115428867244188717409524554771867484911475031801773304689909317974472957035192387686405544278134169807249382219749124257510162187439772902147704638010731470653154201300583810458905006764557332998149945854655105526374914354195867992595981412218735238407957416123372264063860431988936249867649693592569592128495906254446474331759999685163660305216426770428154681777589339252115538590526823311608302751194384823861552852465010329467297198112105314125898165100120742688143577590825227466863206188376830450921784582526239594189673003640808624233657620979111641766331328852352062487922978959456450333733139422384778582717195412347860434376165241568717943562570215636666680088531006728947033079540804583324192188488870712275670333173939262509073556164513677064199539111948881240659821685787131385056850623094155206877987539740658484250135205615103489821873770245063583314243624807432542464195984647411575625441010389671576677263196442524931941806472423789334668561083789808830313571333157729435664956078125304917594015895146954965223118559669048559467607968190167266634650186182955669893965019614544401768162810604465068448139561667220729261210164692339016793399632833013163850830967942792934551268435760356901970523138364640961311774904600772840862214747547653221505518116489887879087780918009050706040061220010051271575991225725282523378026809030528461581739558198122397010092017202251606352922464781615533532275453264543087093320924631855976580561717446840450048285353396546862678852330044967795580761661801833668792312510460809773895565488962815089519622093675058841609752282328250433712970186608193748968699961301486924694482420723632912367052542145464162968910442981633373266871675946715392611950649224725627254543274193495995569590243279097174392258098103601486364409101491734183079646345064833303404765711827040276868271418084574998493392039317445402616663674646668754385093967129918067471909885312710726724428584870694307099756567949198418996425748884764622030325637751112534060087936904565779272035205921345924272965206683338510673615276261016026647772485083344719891986802656197236420847504962661607797092906844757798251795569758235084371746103310387911789239441630112634077535773520558040066982523191225570519133631407211349723226549151062961739050617857127509403623146700931176133132018631158730886798239298009805089491510788371194099750375473674305745187265414016446924576792185753680363289139664155342066705623272936001177781498886100830877849571709880858667023104043242526785955562077310543072298032125941107957349146684680220501816192150766649106862033378713826058987655210423668198670177861672671972374156917880001690656659046965316154923604061891820982414006103779407166342002735828911994182647812782659666207030384795881442790246669264032799404016800137293477301530941805070587421153284642203006550763966756168318897005152026656649929417382840327305940740147117478464839241225676523593418554066440983706083636457657081801664285044258224551650808864421212113914352453935225522162483791737330329812349528984098613273709957407786789349311975204237925022851375880436791854547836416773151821457226504640800104202100410766027807729152555503218182387221708112766208665317651926458452495269685376314437998340336947124447247796973890514941120010934140073794061859447165516612674930799374705772930521750426383798367668159183589049652163726492960837147204067428996276720315410211504333742057182854090136325721437592054640471894328548696883599785122262130812989581571391597464534806099601555877223193450760315411663112963843719400333736013305526352571490454327925190794007111504785378036370897340146753465517470747096935814912797188187854376797751675927822300312945518595042883902735494672667647506072643698761394806879080593531793001711000214417701504495496412454361656210150919997862972495905809191825255486358703529320142005857057855419217730505342687533799076038746689684283402648733290888881745453047194740939258407362058242849349024756883352446212456101562729065130618520732925434179252299417447855189995098959999877410951464170076989305620163502192692653166599093238118295411937545448509428621839424186218067457128099385258842631930670182098008050900019819621758458932516877698594110522845465835679362969619219080897536813210484518784516230623911878024604050824909336069998094776253792973597037759066145994638578378211017122446355845171941670344732162722443265914858595797823752976323442911242311368603724514438765801271594060878788638511089680883165505046309006148832545452819908256238805872042843941834687865142541377686054291079721004271658 go/src/pkg/compress/testdata/pi.txt0100644000000000000000000030324312412656737017671 0ustar00rootroot000000000000003.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912497217752834791315155748572424541506959508295331168617278558890750983817546374649393192550604009277016711390098488240128583616035637076601047101819429555961989467678374494482553797747268471040475346462080466842590694912933136770289891521047521620569660240580381501935112533824300355876402474964732639141992726042699227967823547816360093417216412199245863150302861829745557067498385054945885869269956909272107975093029553211653449872027559602364806654991198818347977535663698074265425278625518184175746728909777727938000816470600161452491921732172147723501414419735685481613611573525521334757418494684385233239073941433345477624168625189835694855620992192221842725502542568876717904946016534668049886272327917860857843838279679766814541009538837863609506800642251252051173929848960841284886269456042419652850222106611863067442786220391949450471237137869609563643719172874677646575739624138908658326459958133904780275900994657640789512694683983525957098258226205224894077267194782684826014769909026401363944374553050682034962524517493996514314298091906592509372216964615157098583874105978859597729754989301617539284681382686838689427741559918559252459539594310499725246808459872736446958486538367362226260991246080512438843904512441365497627807977156914359977001296160894416948685558484063534220722258284886481584560285060168427394522674676788952521385225499546667278239864565961163548862305774564980355936345681743241125150760694794510965960940252288797108931456691368672287489405601015033086179286809208747609178249385890097149096759852613655497818931297848216829989487226588048575640142704775551323796414515237462343645428584447952658678210511413547357395231134271661021359695362314429524849371871101457654035902799344037420073105785390621983874478084784896833214457138687519435064302184531910484810053706146806749192781911979399520614196634287544406437451237181921799983910159195618146751426912397489409071864942319615679452080951465502252316038819301420937621378559566389377870830390697920773467221825625996615014215030680384477345492026054146659252014974428507325186660021324340881907104863317346496514539057962685610055081066587969981635747363840525714591028970641401109712062804390397595156771577004203378699360072305587631763594218731251471205329281918261861258673215791984148488291644706095752706957220917567116722910981690915280173506712748583222871835209353965725121083579151369882091444210067510334671103141267111369908658516398315019701651511685171437657618351556508849099898599823873455283316355076479185358932261854896321329330898570642046752590709154814165498594616371802709819943099244889575712828905923233260972997120844335732654893823911932597463667305836041428138830320382490375898524374417029132765618093773444030707469211201913020330380197621101100449293215160842444859637669838952286847831235526582131449576857262433441893039686426243410773226978028073189154411010446823252716201052652272111660396665573092547110557853763466820653109896526918620564769312570586356620185581007293606598764861179104533488503461136576867532494416680396265797877185560845529654126654085306143444318586769751456614068007002378776591344017127494704205622305389945613140711270004078547332699390814546646458807972708266830634328587856983052358089330657574067954571637752542021149557615814002501262285941302164715509792592309907965473761255176567513575178296664547791745011299614890304639947132962107340437518957359614589019389713111790429782856475032031986915140287080859904801094121472213179476477726224142548545403321571853061422881375850430633217518297986622371721591607716692547487389866549494501146540628433663937900397692656721463853067360965712091807638327166416274888800786925602902284721040317211860820419000422966171196377921337575114959501566049631862947265473642523081770367515906735023507283540567040386743513622224771589150495309844489333096340878076932599397805419341447377441842631298608099888687413260472156951623965864573021631598193195167353812974167729478672422924654366800980676928238280689964004824354037014163149658979409243237896907069779422362508221688957383798623001593776471651228935786015881617557829735233446042815126272037343146531977774160319906655418763979293344195215413418994854447345673831624993419131814809277771038638773431772075456545322077709212019051660962804909263601975988281613323166636528619326686336062735676303544776280350450777235547105859548702790814356240145171806246436267945612753181340783303362542327839449753824372058353114771199260638133467768796959703098339130771098704085913374641442822772634659470474587847787201927715280731767907707157213444730605700733492436931138350493163128404251219256517980694113528013147013047816437885185290928545201165839341965621349143415956258658655705526904965209858033850722426482939728584783163057777560688876446248246857926039535277348030480290058760758251047470916439613626760449256274204208320856611906254543372131535958450687724602901618766795240616342522577195429162991930645537799140373404328752628889639958794757291746426357455254079091451357111369410911939325191076020825202618798531887705842972591677813149699009019211697173727847684726860849003377024242916513005005168323364350389517029893922334517220138128069650117844087451960121228599371623130171144484640903890644954440061986907548516026327505298349187407866808818338510228334508504860825039302133219715518430635455007668282949304137765527939751754613953984683393638304746119966538581538420568533862186725233402830871123282789212507712629463229563989898935821167456270102183564622013496715188190973038119800497340723961036854066431939509790190699639552453005450580685501956730229219139339185680344903982059551002263535361920419947455385938102343955449597783779023742161727111723643435439478221818528624085140066604433258885698670543154706965747458550332323342107301545940516553790686627333799585115625784322988273723198987571415957811196358330059408730681216028764962867446047746491599505497374256269010490377819868359381465741268049256487985561453723478673303904688383436346553794986419270563872931748723320837601123029911367938627089438799362016295154133714248928307220126901475466847653576164773794675200490757155527819653621323926406160136358155907422020203187277605277219005561484255518792530343513984425322341576233610642506390497500865627109535919465897514131034822769306247435363256916078154781811528436679570611086153315044521274739245449454236828860613408414863776700961207151249140430272538607648236341433462351897576645216413767969031495019108575984423919862916421939949072362346468441173940326591840443780513338945257423995082965912285085558215725031071257012668302402929525220118726767562204154205161841634847565169998116141010029960783869092916030288400269104140792886215078424516709087000699282120660418371806535567252532567532861291042487761825829765157959847035622262934860034158722980534989650226291748788202734209222245339856264766914905562842503912757710284027998066365825488926488025456610172967026640765590429099456815065265305371829412703369313785178609040708667114965583434347693385781711386455873678123014587687126603489139095620099393610310291616152881384379099042317473363948045759314931405297634757481193567091101377517210080315590248530906692037671922033229094334676851422144773793937517034436619910403375111735471918550464490263655128162288244625759163330391072253837421821408835086573917715096828874782656995995744906617583441375223970968340800535598491754173818839994469748676265516582765848358845314277568790029095170283529716344562129640435231176006651012412006597558512761785838292041974844236080071930457618932349229279650198751872127267507981255470958904556357921221033346697499235630254947802490114195212382815309114079073860251522742995818072471625916685451333123948049470791191532673430282441860414263639548000448002670496248201792896476697583183271314251702969234889627668440323260927524960357996469256504936818360900323809293459588970695365349406034021665443755890045632882250545255640564482465151875471196218443965825337543885690941130315095261793780029741207665147939425902989695946995565761218656196733786236256125216320862869222103274889218654364802296780705765615144632046927906821207388377814233562823608963208068222468012248261177185896381409183903673672220888321513755600372798394004152970028783076670944474560134556417254370906979396122571429894671543578468788614445812314593571984922528471605049221242470141214780573455105008019086996033027634787081081754501193071412233908663938339529425786905076431006383519834389341596131854347546495569781038293097164651438407007073604112373599843452251610507027056235266012764848308407611830130527932054274628654036036745328651057065874882256981579367897669742205750596834408697350201410206723585020072452256326513410559240190274216248439140359989535394590944070469120914093870012645600162374288021092764579310657922955249887275846101264836999892256959688159205600101655256375678566722796619885782794848855834397518744545512965634434803966420557982936804352202770984294232533022576341807039476994159791594530069752148293366555661567873640053666564165473217043903521329543529169414599041608753201868379370234888689479151071637852902345292440773659495630510074210871426134974595615138498713757047101787957310422969066670214498637464595280824369445789772330048764765241339075920434019634039114732023380715095222010682563427471646024335440051521266932493419673977041595683753555166730273900749729736354964533288869844061196496162773449518273695588220757355176651589855190986665393549481068873206859907540792342402300925900701731960362254756478940647548346647760411463233905651343306844953979070903023460461470961696886885014083470405460742958699138296682468185710318879065287036650832431974404771855678934823089431068287027228097362480939962706074726455399253994428081137369433887294063079261595995462624629707062594845569034711972996409089418059534393251236235508134949004364278527138315912568989295196427287573946914272534366941532361004537304881985517065941217352462589548730167600298865925786628561249665523533829428785425340483083307016537228563559152534784459818313411290019992059813522051173365856407826484942764411376393866924803118364453698589175442647399882284621844900877769776312795722672655562596282542765318300134070922334365779160128093179401718598599933849235495640057099558561134980252499066984233017350358044081168552653117099570899427328709258487894436460050410892266917835258707859512983441729535195378855345737426085902908176515578039059464087350612322611200937310804854852635722825768203416050484662775045003126200800799804925485346941469775164932709504934639382432227188515974054702148289711177792376122578873477188196825462981268685817050740272550263329044976277894423621674119186269439650671515779586756482399391760426017633870454990176143641204692182370764887834196896861181558158736062938603810171215855272668300823834046564758804051380801633638874216371406435495561868964112282140753302655100424104896783528588290243670904887118190909494533144218287661810310073547705498159680772009474696134360928614849417850171807793068108546900094458995279424398139213505586422196483491512639012803832001097738680662877923971801461343244572640097374257007359210031541508936793008169980536520276007277496745840028362405346037263416554259027601834840306811381855105979705664007509426087885735796037324514146786703688098806097164258497595138069309449401515422221943291302173912538355915031003330325111749156969174502714943315155885403922164097229101129035521815762823283182342548326111912800928252561902052630163911477247331485739107775874425387611746578671169414776421441111263583553871361011023267987756410246824032264834641766369806637857681349204530224081972785647198396308781543221166912246415911776732253264335686146186545222681268872684459684424161078540167681420808850280054143613146230821025941737562389942075713627516745731891894562835257044133543758575342698699472547031656613991999682628247270641336222178923903176085428943733935618891651250424404008952719837873864805847268954624388234375178852014395600571048119498842390606136957342315590796703461491434478863604103182350736502778590897578272731305048893989009923913503373250855982655867089242612429473670193907727130706869170926462548423240748550366080136046689511840093668609546325002145852930950000907151058236267293264537382104938724996699339424685516483261134146110680267446637334375340764294026682973865220935701626384648528514903629320199199688285171839536691345222444708045923966028171565515656661113598231122506289058549145097157553900243931535190902107119457300243880176615035270862602537881797519478061013715004489917210022201335013106016391541589578037117792775225978742891917915522417189585361680594741234193398420218745649256443462392531953135103311476394911995072858430658361935369329699289837914941939406085724863968836903265564364216644257607914710869984315733749648835292769328220762947282381537409961545598798259891093717126218283025848112389011968221429457667580718653806506487026133892822994972574530332838963818439447707794022843598834100358385423897354243956475556840952248445541392394100016207693636846776413017819659379971557468541946334893748439129742391433659360410035234377706588867781139498616478747140793263858738624732889645643598774667638479466504074111825658378878454858148962961273998413442726086061872455452360643153710112746809778704464094758280348769758948328241239292960582948619196670918958089833201210318430340128495116203534280144127617285830243559830032042024512072872535581195840149180969253395075778400067465526031446167050827682772223534191102634163157147406123850425845988419907611287258059113935689601431668283176323567325417073420817332230462987992804908514094790368878687894930546955703072619009502076433493359106024545086453628935456862958531315337183868265617862273637169757741830239860065914816164049449650117321313895747062088474802365371031150898427992754426853277974311395143574172219759799359685252285745263796289612691572357986620573408375766873884266405990993505000813375432454635967504844235284874701443545419576258473564216198134073468541117668831186544893776979566517279662326714810338643913751865946730024434500544995399742372328712494834706044063471606325830649829795510109541836235030309453097335834462839476304775645015008507578949548931393944899216125525597701436858943585877526379625597081677643800125436502371412783467926101995585224717220177723700417808419423948725406801556035998390548985723546745642390585850216719031395262944554391316631345308939062046784387785054239390524731362012947691874975191011472315289326772533918146607300089027768963114810902209724520759167297007850580717186381054967973100167870850694207092232908070383263453452038027860990556900134137182368370991949516489600755049341267876436746384902063964019766685592335654639138363185745698147196210841080961884605456039038455343729141446513474940784884423772175154334260306698831768331001133108690421939031080143784334151370924353013677631084913516156422698475074303297167469640666531527035325467112667522460551199581831963763707617991919203579582007595605302346267757943936307463056901080114942714100939136913810725813781357894005599500183542511841721360557275221035268037357265279224173736057511278872181908449006178013889710770822931002797665935838758909395688148560263224393726562472776037890814458837855019702843779362407825052704875816470324581290878395232453237896029841669225489649715606981192186584926770403956481278102179913217416305810554598801300484562997651121241536374515005635070127815926714241342103301566165356024733807843028655257222753049998837015348793008062601809623815161366903341111386538510919367393835229345888322550887064507539473952043968079067086806445096986548801682874343786126453815834280753061845485903798217994599681154419742536344399602902510015888272164745006820704193761584547123183460072629339550548239557137256840232268213012476794522644820910235647752723082081063518899152692889108455571126603965034397896278250016110153235160519655904211844949907789992007329476905868577878720982901352956613978884860509786085957017731298155314951681467176959760994210036183559138777817698458758104466283998806006162298486169353373865787735983361613384133853684211978938900185295691967804554482858483701170967212535338758621582310133103877668272115726949518179589754693992642197915523385766231676275475703546994148929041301863861194391962838870543677743224276809132365449485366768000001065262485473055861598999140170769838548318875014293890899506854530765116803337322265175662207526951791442252808165171667766727930354851542040238174608923283917032754257508676551178593950027933895920576682789677644531840404185540104351348389531201326378369283580827193783126549617459970567450718332065034556644034490453627560011250184335607361222765949278393706478426456763388188075656121689605041611390390639601620221536849410926053876887148379895599991120991646464411918568277004574243434021672276445589330127781586869525069499364610175685060167145354315814801054588605645501332037586454858403240298717093480910556211671546848477803944756979804263180991756422809873998766973237695737015808068229045992123661689025962730430679316531149401764737693873514093361833216142802149763399189835484875625298752423873077559555955465196394401821840998412489826236737714672260616336432964063357281070788758164043814850188411431885988276944901193212968271588841338694346828590066640806314077757725705630729400492940302420498416565479736705485580445865720227637840466823379852827105784319753541795011347273625774080213476826045022851579795797647467022840999561601569108903845824502679265942055503958792298185264800706837650418365620945554346135134152570065974881916341359556719649654032187271602648593049039787489589066127250794828276938953521753621850796297785146188432719223223810158744450528665238022532843891375273845892384422535472653098171578447834215822327020690287232330053862163479885094695472004795231120150432932266282727632177908840087861480221475376578105819702226309717495072127248479478169572961423658595782090830733233560348465318730293026659645013718375428897557971449924654038681799213893469244741985097334626793321072686870768062639919361965044099542167627840914669856925715074315740793805323925239477557441591845821562518192155233709607483329234921034514626437449805596103307994145347784574699992128599999399612281615219314888769388022281083001986016549416542616968586788372609587745676182507275992950893180521872924610867639958916145855058397274209809097817293239301067663868240401113040247007350857828724627134946368531815469690466968693925472519413992914652423857762550047485295476814795467007050347999588867695016124972282040303995463278830695976249361510102436555352230690612949388599015734661023712235478911292547696176005047974928060721268039226911027772261025441492215765045081206771735712027180242968106203776578837166909109418074487814049075517820385653909910477594141321543284406250301802757169650820964273484146957263978842560084531214065935809041271135920041975985136254796160632288736181367373244506079244117639975974619383584574915988097667447093006546342423460634237474666080431701260052055928493695941434081468529815053947178900451835755154125223590590687264878635752541911288877371766374860276606349603536794702692322971868327717393236192007774522126247518698334951510198642698878471719396649769070825217423365662725928440620430214113719922785269984698847702323823840055655517889087661360130477098438611687052310553149162517283732728676007248172987637569816335415074608838663640693470437206688651275688266149730788657015685016918647488541679154596507234287730699853713904300266530783987763850323818215535597323530686043010675760838908627049841888595138091030423595782495143988590113185835840667472370297149785084145853085781339156270760356390763947311455495832266945702494139831634332378975955680856836297253867913275055542524491943589128405045226953812179131914513500993846311774017971512283785460116035955402864405902496466930707769055481028850208085800878115773817191741776017330738554758006056014337743299012728677253043182519757916792969965041460706645712588834697979642931622965520168797300035646304579308840327480771811555330909887025505207680463034608658165394876951960044084820659673794731680864156456505300498816164905788311543454850526600698230931577765003780704661264706021457505793270962047825615247145918965223608396645624105195510522357239739512881816405978591427914816542632892004281609136937773722299983327082082969955737727375667615527113922588055201898876201141680054687365580633471603734291703907986396522961312801782679717289822936070288069087768660593252746378405397691848082041021944719713869256084162451123980620113184541244782050110798760717155683154078865439041210873032402010685341947230476666721749869868547076781205124736792479193150856444775379853799732234456122785843296846647513336573692387201464723679427870042503255589926884349592876124007558756946413705625140011797133166207153715436006876477318675587148783989081074295309410605969443158477539700943988394914432353668539209946879645066533985738887866147629443414010498889931600512076781035886116602029611936396821349607501116498327856353161451684576956871090029997698412632665023477167286573785790857466460772283415403114415294188047825438761770790430001566986776795760909966936075594965152736349811896413043311662774712338817406037317439705406703109676765748695358789670031925866259410510533584384656023391796749267844763708474978333655579007384191473198862713525954625181604342253729962863267496824058060296421146386436864224724887283434170441573482481833301640566959668866769563491416328426414974533349999480002669987588815935073578151958899005395120853510357261373640343675347141048360175464883004078464167452167371904831096767113443494819262681110739948250607394950735031690197318521195526356325843390998224986240670310768318446607291248747540316179699411397387765899868554170318847788675929026070043212666179192235209382278788809886335991160819235355570464634911320859189796132791319756490976000139962344455350143464268604644958624769094347048293294140411146540923988344435159133201077394411184074107684981066347241048239358274019449356651610884631256785297769734684303061462418035852933159734583038455410337010916767763742762102137013548544509263071901147318485749233181672072137279355679528443925481560913728128406333039373562420016045664557414588166052166608738748047243391212955877763906969037078828527753894052460758496231574369171131761347838827194168606625721036851321566478001476752310393578606896111259960281839309548709059073861351914591819510297327875571049729011487171897180046961697770017913919613791417162707018958469214343696762927459109940060084983568425201915593703701011049747339493877885989417433031785348707603221982970579751191440510994235883034546353492349826883624043327267415540301619505680654180939409982020609994140216890900708213307230896621197755306659188141191577836272927461561857103721724710095214236964830864102592887457999322374955191221951903424452307535133806856807354464995127203174487195403976107308060269906258076020292731455252078079914184290638844373499681458273372072663917670201183004648190002413083508846584152148991276106513741539435657211390328574918769094413702090517031487773461652879848235338297260136110984514841823808120540996125274580881099486972216128524897425555516076371675054896173016809613803811914361143992106380050832140987604599309324851025168294467260666138151745712559754953580239983146982203613380828499356705575524712902745397762140493182014658008021566536067765508783804304134310591804606800834591136640834887408005741272586704792258319127415739080914383138456424150940849133918096840251163991936853225557338966953749026620923261318855891580832455571948453875628786128859004106006073746501402627824027346962528217174941582331749239683530136178653673760642166778137739951006589528877427662636841830680190804609849809469763667335662282915132352788806157768278159588669180238940333076441912403412022316368577860357276941541778826435238131905028087018575047046312933353757285386605888904583111450773942935201994321971171642235005644042979892081594307167019857469273848653833436145794634175922573898588001698014757420542995801242958105456510831046297282937584161162532562516572498078492099897990620035936509934721582965174135798491047111660791587436986541222348341887722929446335178653856731962559852026072947674072616767145573649812105677716893484917660771705277187601199908144113058645577910525684304811440261938402322470939249802933550731845890355397133088446174107959162511714864874468611247605428673436709046678468670274091881014249711149657817724279347070216688295610877794405048437528443375108828264771978540006509704033021862556147332117771174413350281608840351781452541964320309576018694649088681545285621346988355444560249556668436602922195124830910605377201980218310103270417838665447181260397190688462370857518080035327047185659499476124248110999288679158969049563947624608424065930948621507690314987020673533848349550836366017848771060809804269247132410009464014373603265645184566792456669551001502298330798496079949882497061723674493612262229617908143114146609412341593593095854079139087208322733549572080757165171876599449856937956238755516175754380917805280294642004472153962807463602113294255916002570735628126387331060058910652457080244749375431841494014821199962764531068006631183823761639663180931444671298615527598201451410275600689297502463040173514891945763607893528555053173314164570504996443890936308438744847839616840518452732884032345202470568516465716477139323775517294795126132398229602394548579754586517458787713318138752959809412174227300352296508089177705068259248822322154938048371454781647213976820963320508305647920482085920475499857320388876391601995240918938945576768749730856955958010659526503036266159750662225084067428898265907510637563569968211510949669744580547288693631020367823250182323708459790111548472087618212477813266330412076216587312970811230758159821248639807212407868878114501655825136178903070860870198975889807456643955157415363193191981070575336633738038272152798849350397480015890519420879711308051233933221903466249917169150948541401871060354603794643379005890957721180804465743962806186717861017156740967662080295766577051291209907944304632892947306159510430902221439371849560634056189342513057268291465783293340524635028929175470872564842600349629611654138230077313327298305001602567240141851520418907011542885799208121984493156999059182011819733500126187728036812481995877070207532406361259313438595542547781961142935163561223496661522614735399674051584998603552953329245752388810136202347624669055816438967863097627365504724348643071218494373485300606387644566272186661701238127715621379746149861328744117714552444708997144522885662942440230184791205478498574521634696448973892062401943518310088283480249249085403077863875165911302873958787098100772718271874529013972836614842142871705531796543076504534324600536361472618180969976933486264077435199928686323835088756683595097265574815431940195576850437248001020413749831872259677387154958399718444907279141965845930083942637020875635398216962055324803212267498911402678528599673405242031091797899905718821949391320753431707980023736590985375520238911643467185582906853711897952626234492483392496342449714656846591248918556629589329909035239233333647435203707701010843880032907598342170185542283861617210417603011645918780539367447472059985023582891833692922337323999480437108419659473162654825748099482509991833006976569367159689364493348864744213500840700660883597235039532340179582557036016936990988671132109798897070517280755855191269930673099250704070245568507786790694766126298082251633136399521170984528092630375922426742575599892892783704744452189363203489415521044597261883800300677617931381399162058062701651024458869247649246891924612125310275731390840470007143561362316992371694848132554200914530410371354532966206392105479824392125172540132314902740585892063217589494345489068463993137570910346332714153162232805522972979538018801628590735729554162788676498274186164218789885741071649069191851162815285486794173638906653885764229158342500673612453849160674137340173572779956341043326883569507814931378007362354180070619180267328551191942676091221035987469241172837493126163395001239599240508454375698507957046222664619000103500490183034153545842833764378111988556318777792537201166718539541835984438305203762819440761594106820716970302285152250573126093046898423433152732131361216582808075212631547730604423774753505952287174402666389148817173086436111389069420279088143119448799417154042103412190847094080254023932942945493878640230512927119097513536000921971105412096683111516328705423028470073120658032626417116165957613272351566662536672718998534199895236884830999302757419916463841427077988708874229277053891227172486322028898425125287217826030500994510824783572905691988555467886079462805371227042466543192145281760741482403827835829719301017888345674167811398954750448339314689630763396657226727043393216745421824557062524797219978668542798977992339579057581890622525473582205236424850783407110144980478726691990186438822932305382318559732869780922253529591017341407334884761005564018242392192695062083183814546983923664613639891012102177095976704908305081854704194664371312299692358895384930136356576186106062228705599423371631021278457446463989738188566746260879482018647487672727222062676465338099801966883680994159075776852639865146253336312450536402610569605513183813174261184420189088853196356986962795036738424313011331753305329802016688817481342988681585577810343231753064784983210629718425184385534427620128234570716988530518326179641178579608888150329602290705614476220915094739035946646916235396809201394578175891088931992112260073928149169481615273842736264298098234063200244024495894456129167049508235812487391799648641133480324757775219708932772262349486015046652681439877051615317026696929704928316285504212898146706195331970269507214378230476875280287354126166391708245925170010714180854800636923259462019002278087409859771921805158532147392653251559035410209284665925299914353791825314545290598415817637058927906909896911164381187809435371521332261443625314490127454772695739393481546916311624928873574718824071503995009446731954316193855485207665738825139639163576723151005556037263394867208207808653734942440115799667507360711159351331959197120948964717553024531364770942094635696982226673775209945168450643623824211853534887989395673187806606107885440005508276570305587448541805778891719207881423351138662929667179643468760077047999537883387870348718021842437342112273940255717690819603092018240188427057046092622564178375265263358324240661253311529423457965569502506810018310900411245379015332966156970522379210325706937051090830789479999004999395322153622748476603613677697978567386584670936679588583788795625946464891376652199588286933801836011932368578558558195556042156250883650203322024513762158204618106705195330653060606501054887167245377942831338871631395596905832083416898476065607118347136218123246227258841990286142087284956879639325464285343075301105285713829643709990356948885285190402956047346131138263878897551788560424998748316382804046848618938189590542039889872650697620201995548412650005394428203930127481638158530396439925470201672759328574366661644110962566337305409219519675148328734808957477775278344221091073111351828046036347198185655572957144747682552857863349342858423118749440003229690697758315903858039353521358860079600342097547392296733310649395601812237812854584317605561733861126734780745850676063048229409653041118306671081893031108871728167519579675347188537229309616143204006381322465841111157758358581135018569047815368938137718472814751998350504781297718599084707621974605887423256995828892535041937958260616211842368768511418316068315867994601652057740529423053601780313357263267054790338401257305912339601880137825421927094767337191987287385248057421248921183470876629667207272325650565129333126059505777727542471241648312832982072361750574673870128209575544305968395555686861188397135522084452852640081252027665557677495969626612604565245684086139238265768583384698499778726706555191854468698469478495734622606294219624557085371272776523098955450193037732166649182578154677292005212667143463209637891852323215018976126034373684067194193037746880999296877582441047878123266253181845960453853543839114496775312864260925211537673258866722604042523491087026958099647595805794663973419064010036361904042033113579336542426303561457009011244800890020801478056603710154122328891465722393145076071670643556827437743965789067972687438473076346451677562103098604092717090951280863090297385044527182892749689212106670081648583395537735919136950153162018908887484210798706899114804669270650940762046502772528650728905328548561433160812693005693785417861096969202538865034577183176686885923681488475276498468821949739729707737187188400414323127636504814531122850990020742409255859252926103021067368154347015252348786351643976235860419194129697690405264832347009911154242601273438022089331096686367898694977994001260164227609260823493041180643829138347354679725399262338791582998486459271734059225620749105308531537182911681637219395188700957788181586850464507699343940987433514431626330317247747486897918209239480833143970840673084079589358108966564775859905563769525232653614424780230826811831037735887089240613031336477371011628214614661679404090518615260360092521947218890918107335871964142144478654899528582343947050079830388538860831035719306002771194558021911942899922722353458707566246926177663178855144350218287026685610665003531050216318206017609217984684936863161293727951873078972637353717150256378733579771808184878458866504335824377004147710414934927438457587107159731559439426412570270965125108115548247939403597681188117282472158250109496096625393395380922195591918188552678062149923172763163218339896938075616855911752998450132067129392404144593862398809381240452191484831646210147389182510109096773869066404158973610476436500068077105656718486281496371118832192445663945814491486165500495676982690308911185687986929470513524816091743243015383684707292898982846022237301452655679898627767968091469798378268764311598832109043715611299766521539635464420869197567370005738764978437686287681792497469438427465256316323005551304174227341646455127812784577772457520386543754282825671412885834544435132562054464241011037955464190581168623059644769587054072141985212106734332410756767575818456990693046047522770167005684543969234041711089888993416350585157887353430815520811772071880379104046983069578685473937656433631979786803671873079693924236321448450354776315670255390065423117920153464977929066241508328858395290542637687668968805033317227800185885069736232403894700471897619347344308437443759925034178807972235859134245813144049847701732361694719765715353197754997162785663119046912609182591249890367654176979903623755286526375733763526969344354400473067198868901968147428767790866979688522501636949856730217523132529265375896415171479559538784278499866456302878831962099830494519874396369070682762657485810439112232618794059941554063270131989895703761105323606298674803779153767511583043208498720920280929752649812569163425000522908872646925284666104665392171482080130502298052637836426959733707053922789153510568883938113249757071331029504430346715989448786847116438328050692507766274500122003526203709466023414648998390252588830148678162196775194583167718762757200505439794412459900771152051546199305098386982542846407255540927403132571632640792934183342147090412542533523248021932277075355546795871638358750181593387174236061551171013123525633485820365146141870049205704372018261733194715700867578539336078622739558185797587258744102542077105475361294047460100094095444959662881486915903899071865980563617137692227290764197755177720104276496949611056220592502420217704269622154958726453989227697660310524980855759471631075870133208861463266412591148633881220284440694169488261529577625325019870359870674380469821942056381255833436421949232275937221289056420943082352544084110864545369404969271494003319782861318186188811118408257865928757426384450059944229568586460481033015388911499486935436030221810943466764000022362550573631294626296096198760564259963946138692330837196265954739234624134597795748524647837980795693198650815977675350553918991151335252298736112779182748542008689539658359421963331502869561192012298889887006079992795411188269023078913107603617634779489432032102773359416908650071932804017163840644987871753756781185321328408216571107549528294974936214608215583205687232185574065161096274874375098092230211609982633033915469494644491004515280925089745074896760324090768983652940657920198315265410658136823791984090645712468948470209357761193139980246813405200394781949866202624008902150166163813538381515037735022966074627952910384068685569070157516624192987244482719429331004854824454580718897633003232525821581280327467962002814762431828622171054352898348208273451680186131719593324711074662228508710666117703465352839577625997744672185715816126411143271794347885990892808486694914139097716736900277758502686646540565950394867841110790116104008572744562938425494167594605487117235946429105850909950214958793112196135908315882620682332156153086833730838173279328196983875087083483880463884784418840031847126974543709373298362402875197920802321878744882872843727378017827008058782410749357514889978911739746129320351081432703251409030487462262942344327571260086642508333187688650756429271605525289544921537651751492196367181049435317858383453865255656640657251363575064353236508936790431702597878177190314867963840828810209461490079715137717099061954969640070867667102330048672631475510537231757114322317411411680622864206388906210192355223546711662137499693269321737043105987225039456574924616978260970253359475020913836673772894438696400028110344026084712899000746807764844088711341352503367877316797709372778682166117865344231732264637847697875144332095340001650692130546476890985050203015044880834261845208730530973189492916425322933612431514306578264070283898409841602950309241897120971601649265613413433422298827909921786042679812457285345801338260995877178113102167340256562744007296834066198480676615805021691833723680399027931606420436812079900316264449146190219458229690992122788553948783538305646864881655562294315673128274390826450611628942803501661336697824051770155219626522725455850738640585299830379180350432876703809252167907571204061237596327685674845079151147313440001832570344920909712435809447900462494313455028900680648704293534037436032625820535790118395649089354345101342969617545249573960621490288728932792520696535386396443225388327522499605986974759882329916263545973324445163755334377492928990581175786355555626937426910947117002165411718219750519831787137106051063795558588905568852887989084750915764639074693619881507814685262133252473837651192990156109189777922008705793396463827490680698769168197492365624226087154176100430608904377976678519661891404144925270480881971498801542057787006521594009289777601330756847966992955433656139847738060394368895887646054983871478968482805384701730871117761159663505039979343869339119789887109156541709133082607647406305711411098839388095481437828474528838368079418884342666222070438722887413947801017721392281911992365405516395893474263953824829609036900288359327745855060801317988407162446563997948275783650195514221551339281978226984278638391679715091262410548725700924070045488485692950448110738087996547481568913935380943474556972128919827177020766613602489581468119133614121258783895577357194986317210844398901423948496659251731388171602663261931065366535041473070804414939169363262373767777095850313255990095762731957308648042467701212327020533742667053142448208168130306397378736642483672539837487690980602182785786216512738563513290148903509883270617258932575363993979055729175160097615459044771692265806315111028038436017374742152476085152099016158582312571590733421736576267142390478279587281505095633092802668458937649649770232973641319060982740633531089792464242134583740901169391964250459128813403498810635400887596820054408364386516617880557608956896727531538081942077332597917278437625661184319891025007491829086475149794003160703845549465385946027452447466812314687943441610993338908992638411847425257044572517459325738989565185716575961481266020310797628254165590506042479114016957900338356574869252800743025623419498286467914476322774005529460903940177536335655471931000175430047504719144899841040015867946179241610016454716551337074073950260442769538553834397550548871099785205401175169747581344926079433689543783221172450687344231989878844128542064742809735625807066983106979935260693392135685881391214807354728463227784908087002467776303605551232386656295178853719673034634701222939581606792509153217489030840886516061119011498443412350124646928028805996134283511884715449771278473361766285062169778717743824362565711779450064477718370221999106695021656757644044997940765037999954845002710665987813603802314126836905783190460792765297277694043613023051787080546511542469395265127101052927070306673024447125973939950514628404767431363739978259184541176413327906460636584152927019030276017339474866960348694976541752429306040727005059039503148522921392575594845078867977925253931765156416197168443524369794447355964260633391055126826061595726217036698506473281266724521989060549880280782881429796336696744124805982192146339565745722102298677599746738126069367069134081559412016115960190237753525556300606247983261249881288192937343476862689219239777833910733106588256813777172328315329082525092733047850724977139448333892552081175608452966590553940965568541706001179857293813998258319293679100391844099286575605993598910002969864460974714718470101531283762631146774209145574041815908800064943237855839308530828305476076799524357391631221886057549673832243195650655460852881201902363644712703748634421727257879503428486312944916318475347531435041392096108796057730987201352484075057637199253650470908582513936863463863368042891767107602111159828875539940120076013947033661793715396306139863655492213741597905119083588290097656647300733879314678913181465109316761575821351424860442292445304113160652700974330088499034675405518640677342603583409608605533747362760935658853109760994238347382222087292464497684560579562516765574088410321731345627735856052358236389532038534024842273371639123973215995440828421666636023296545694703577184873442034227706653837387506169212768015766181095420097708363604361110592409117889540338021426523948929686439808926114635414571535194342850721353453018315875628275733898268898523557799295727645229391567477566676051087887648453493636068278050564622813598885879259940946446041705204470046315137975431737187756039815962647501410906658866162180038266989961965580587208639721176995219466789857011798332440601811575658074284182910615193917630059194314434605154047710570054339000182453117733718955857603607182860506356479979004139761808955363669603162193113250223851791672055180659263518036251214575926238369348222665895576994660491938112486609099798128571823494006615552196112207203092277646200999315244273589488710576623894693889446495093960330454340842102462401048723328750081749179875543879387381439894238011762700837196053094383940063756116458560943129517597713935396074322792489221267045808183313764165818269562105872892447740035947009268662659651422050630078592002488291860839743732353849083964326147000532423540647042089499210250404726781059083644007466380020870126664209457181702946752278540074508552377720890581683918446592829417018288233014971554235235911774818628592967605048203864343108779562892925405638946621948268711042828163893975711757786915430165058602965217459581988878680408110328432739867198621306205559855266036405046282152306154594474489908839081999738747452969810776201487134000122535522246695409315213115337915798026979555710508507473874750758068765376445782524432638046143042889235934852961058269382103498000405248407084403561167817170512813378805705643450616119330424440798260377951198548694559152051960093041271007277849301555038895360338261929343797081874320949914159593396368110627557295278004254863060054523839151068998913578820019411786535682149118528207852130125518518493711503422159542244511900207393539627400208110465530207932867254740543652717595893500716336076321614725815407642053020045340183572338292661915308354095120226329165054426123619197051613839357326693760156914429944943744856809775696303129588719161129294681884936338647392747601226964158848900965717086160598147204467428664208765334799858222090619802173211614230419477754990738738567941189824660913091691772274207233367635032678340586301930193242996397204445179288122854478211953530898910125342975524727635730226281382091807439748671453590778633530160821559911314144205091447293535022230817193663509346865858656314855575862447818620108711889760652969899269328178705576435143382060141077329261063431525337182243385263520217735440715281898137698755157574546939727150488469793619500477720970561793913828989845327426227288647108883270173723258818244658436249580592560338105215606206155713299156084892064340303395262263451454283678698288074251422567451806184149564686111635404971897682154227722479474033571527436819409892050113653400123846714296551867344153741615042563256713430247655125219218035780169240326699541746087592409207004669340396510178134857835694440760470232540755557764728450751826890418293966113310160131119077398632462778219023650660374041606724962490137433217246454097412995570529142438208076098364823465973886691349919784013108015581343979194852830436739012482082444814128095443773898320059864909159505322857914576884962578665885999179867520554558099004556461178755249370124553217170194282884617402736649978475508294228020232901221630102309772151569446427909802190826689868834263071609207914085197695235553488657743425277531197247430873043619511396119080030255878387644206085044730631299277888942729189727169890575925244679660189707482960949190648764693702750773866432391919042254290235318923377293166736086996228032557185308919284403805071030064776847863243191000223929785255372375566213644740096760539439838235764606992465260089090624105904215453927904411529580345334500256244101006359530039598864466169595626351878060688513723462707997327233134693971456285542615467650632465676620279245208581347717608521691340946520307673391841147504140168924121319826881568664561485380287539331160232292555618941042995335640095786495340935115266454024418775949316930560448686420862757201172319526405023099774567647838488973464317215980626787671838005247696884084989185086149003432403476742686245952395890358582135006450998178244636087317754378859677672919526111213859194725451400301180503437875277664402762618941017576872680428176623860680477885242887430259145247073950546525135339459598789619778911041890292943818567205070964606263541732944649576612651953495701860015412623962286413897796733329070567376962156498184506842263690367849555970026079867996261019039331263768556968767029295371162528005543100786408728939225714512481135778627664902425161990277471090335933309304948380597856628844787441469841499067123764789582263294904679812089984857163571087831191848630254501620929805829208334813638405421720056121989353669371336733392464416125223196943471206417375491216357008573694397305979709719726666642267431117762176403068681310351899112271339724036887000996862922546465006385288620393800504778276912835603372548255793912985251506829969107754257647488325341412132800626717094009098223529657957997803018282428490221470748111124018607613415150387569830918652780658896682362523937845272634530420418802508442363190383318384550522367992357752929106925043261446950109861088899914658551881873582528164302520939285258077969737620845637482114433988162710031703151334402309526351929588680690821355853680161000213740851154484912685841268695899174149133820578492800698255195740201818105641297250836070356851055331787840829000041552511865779453963317538532092149720526607831260281961164858098684587525129997404092797683176639914655386108937587952214971731728131517932904431121815871023518740757222100123768721944747209349312324107065080618562372526732540733324875754482967573450019321902199119960797989373383673242576103938985349278777473980508080015544764061053522202325409443567718794565430406735896491017610775948364540823486130254718476485189575836674399791508512858020607820554462991723202028222914886959399729974297471155371858924238493855858595407438104882624648788053304271463011941589896328792678327322456103852197011130466587100500083285177311776489735230926661234588873102883515626446023671996644554727608310118788389151149340939344750073025855814756190881398752357812331342279866503522725367171230756861045004548970360079569827626392344107146584895780241408158405229536937499710665594894459246286619963556350652623405339439142111271810691052290024657423604130093691889255865784668461215679554256605416005071276641766056874274200329577160643448606201239821698271723197826816628249938714995449137302051843669076723577400053932662622760323659751718925901801104290384274185507894887438832703063283279963007200698012244365116394086922220745320244624121155804354542064215121585056896157356414313068883443185280853975927734433655384188340303517822946253702015782157373265523185763554098954033236382319219892171177449469403678296185920803403867575834111518824177439145077366384071880489358256868542011645031357633355509440319236720348651010561049872726472131986543435450409131859513145181276437310438972507004981987052176272494065214619959232142314439776546708351714749367986186552791715824080651063799500184295938799158350171580759883784962257398512129810326379376218322456594236685376799113140108043139732335449090824910499143325843298821033984698141715756010829706583065211347076803680695322971990599904451209087275776225351040902392888779424630483280319132710495478599180196967835321464441189260631526618167443193550817081875477050802654025294109218264858213857526688155584113198560022135158887210365696087515063187533002942118682221893775546027227291290504292259787710667873840000616772154638441292371193521828499824350920891801685572798156421858191197490985730570332667646460728757430565372602768982373259745084479649545648030771598153955827779139373601717422996027353102768719449444917939785144631597314435351850491413941557329382048542123508173912549749819308714396615132942045919380106231421774199184060180347949887691051557905554806953878540066453375981862846419905220452803306263695626490910827627115903856995051246529996062855443838330327638599800792922846659503551211245284087516229060262011857775313747949362055496401073001348853150735487353905602908933526400713274732621960311773433943673385759124508149335736911664541281788171454023054750667136518258284898099512139193995633241336556777098003081910272040997148687418134667006094051021462690280449159646545330107754695413088714165312544813061192407821188690056027781824235022696189344352547633573536485619363254417756613981703930632872166905722259745209192917262199844409646158269456380239502837121686446561785235565164127712826918688615572716201474934052276946595712198314943381622114006936307430444173284786101777743837977037231795255434107223445512555589998646183876764903972461167959018100035098928641204195163551108763204267612979826529425882951141275841262732790798807559751851576841264742209479721843309352972665210015662514552994745127631550917636730259462132930190402837954246323258550301096706922720227074863419005438302650681214142135057154175057508639907673946335146209082888934938376439399256900604067311422093312195936202982972351163259386772241477911629572780752395056251581603133359382311500518626890530658368129988108663263271980611271548858798093487912913707498230575929091862939195014721197586067270092547718025750337730799397134539532646195269996596385654917590458333585799102012713204583903200853878881633637685182083727885131175227769609787962142372162545214591281831798216044111311671406914827170981015457781939202311563871950805024679725792497605772625913328559726371211201905720771409148645074094926718035815157571514050397610963846755569298970383547314100223802583468767350129775413279532060971154506484212185936490997917766874774481882870632315515865032898164228288232746866106592732197907162384642153489852476216789050260998045266483929542357287343977680495774091449538391575565485459058976495198513801007958010783759945775299196700547602252552034453988712538780171960718164078124847847257912407824544361682345239570689514272269750431873633263011103053423335821609333191218806608268341428910415173247216053355849993224548730778822905252324234861531520976938461042582849714963475341837562003014915703279685301868631572488401526639835689563634657435321783493199825542117308467745297085839507616458229630324424328237737450517028560698067889521768198156710781633405266759539424926280756968326107495323390536223090807081455919837355377748742029039018142937311529334644468151212945097596534306284215319445727118614900017650558177095302468875263250119705209476159416768727784472000192789137251841622857783792284439084301181121496366424659033634194540657183544771912446621259392656620306888520055599121235363718226922531781458792593750441448933981608657900876165024635197045828895481793756681046474614105142498870252139936870509372305447734112641354892806841059107716677821238332810262185587751312721179344448201440425745083063944738363793906283008973306241380614589414227694747931665717623182472168350678076487573420491557628217583972975134478990696589532548940335615613167403276472469212505759116251529654568544633498114317670257295661844775487469378464233737238981920662048511894378868224807279352022501796545343757274163910791972952950812942922205347717304184477915673991738418311710362524395716152714669005814700002633010452643547865903290733205468338872078735444762647925297690170912007874183736735087713376977683496344252419949951388315074877537433849458259765560996555954318040920178497184685497370696212088524377013853757681416632722412634423982152941645378000492507262765150789085071265997036708726692764308377229685985169122305037462744310852934305273078865283977335246017463527703205938179125396915621063637625882937571373840754406468964783100704580613446731271591194608435935825987782835266531151065041623295329047772174083559349723758552138048305090009646676088301540612824308740645594431853413755220166305812111033453120745086824339432159043594430312431227471385842030390106070940315235556172767994160020393975099897629335325855575624808996691829864222677502360193257974726742578211119734709402357457222271212526852384295874273501563660093188045493338989741571490544182559738080871565281430102670460284316819230392535297795765862414392701549740879273131051636119137577008929564823323648298263024607975875767745377160102490804624301856524161756655600160859121534556267602192689982855377872583145144082654583484409478463178777374794653580169960779405568701192328608041130904629350871827125934668712766694873899824598527786499569165464029458935064964335809824765965165142090986755203808309203230487342703468288751604071546653834619611223013759451579252696743642531927390036038608236450762698827497618723575476762889950752114804852527950845033958570838130476937881321123674281319487950228066320170022460331989671970649163741175854851878484012054844672588851401562725019821719066960812627785485964818369621410721714214986361918774754509650308957099470934337856981674465828267911940611956037845397855839240761276344105766751024307559814552786167815949657062559755074306521085301597908073343736079432866757890533483669555486803913433720156498834220893399971641479746938696905480089193067138057171505857307148815649920714086758259602876056459782423770242469805328056632787041926768467116266879463486950464507420219373945259262668613552940624781361206202636498199999498405143868285258956342264328707663299304891723400725471764188685351372332667877921738347541480022803392997357936152412755829569276837231234798989446274330454566790062032420516396282588443085438307201495672106460533238537203143242112607424485845094580494081820927639140008540422023556260218564348994145439950410980591817948882628052066441086319001688568155169229486203010738897181007709290590480749092427141018933542818429995988169660993836961644381528877214085268088757488293258735809905670755817017949161906114001908553744882726200936685604475596557476485674008177381703307380305476973609786543859382187220583902344443508867499866506040645874346005331827436296177862518081893144363251205107094690813586440519229512932450078833398788429339342435126343365204385812912834345297308652909783300671261798130316794385535726296998740359570458452230856390098913179475948752126397078375944861139451960286751210561638976008880092746115860800207803341591451797073036835196977766076373785333012024120112046988609209339085365773222392412449051532780950955866459477634482269986074813297302630975028812103517723124465095349653693090018637764094094349837313251321862080214809922685502948454661814715557444709669530177690434272031892770604717784527939160472281534379803539679861424370956683221491465438014593829277393396032754048009552231816667380357183932757077142046723838624617803976292377131209580789363841447929802588065522129262093623930637313496640186619510811583471173312025805866727639992763579078063818813069156366274125431259589936119647626101405563503399523140323113819656236327198961837254845333702062563464223952766943568376761368711962921818754576081617053031590728828700712313666308722754918661395773730546065997437810987649802414011242142773668082751390959313404155826266789510846776118665957660165998178089414985754976284387856100263796543178313634025135814161151902096499133548733131115022700681930135929595971640197196053625033558479980963488718039111612813595968565478868325856437896173159762002419621552896297904819822199462269487137462444729093456470028537694958859591606789282491054412515996300781368367490209374915732896270028656829344431342347351239298259166739503425995868970697267332582735903121288746660451461487850346142827765991608090398652575717263081833494441820193533385071292345774375579344062178711330063106003324053991693682603746176638565758877580201229366353270267100681261825172914608202541892885935244491070138206211553827793565296914576502048643282865557934707209634807372692141186895467322767751335690190153723669036865389161291688887876407525493494249733427181178892759931596719354758988097924525262363659036320070854440784544797348291802082044926670634420437555325050527522833778887040804033531923407685630109347772125639088640413101073817853338316038135280828119040832564401842053746792992622037698718018061122624490909242641985820861751177113789051609140381575003366424156095216328197122335023167422600567941281406217219641842705784328959802882335059828208196666249035857789940333152274817776952843681630088531769694783690580671064828083598046698841098135158654906933319522394363287923990534810987830274500172065433699066117784554364687723631844464768069142828004551074686645392805399409108754939166095731619715033166968309929466349142798780842257220697148875580637480308862995118473187124777291910070227588893486939456289515802965372150409603107761289831263589964893410247036036645058687287589051406841238124247386385427908282733827973326885504935874303160274749063129572349742611221517417153133618622410913869500688835898962349276317316478340077460886655598733382113829928776911495492184192087771606068472874673681886167507221017261103830671787856694812948785048943063086169948798703160515884108282351274153538513365895332948629494495061868514779105804696039069372662670386512905201137810858616188886947957607413585534585151768051973334433495230120395770739623771316030242887200537320998253008977618973129817881944671731160647231476248457551928732782825127182446807824215216469567819294098238926284943760248852279003620219386696482215628093605373178040863727268426696421929946819214908701707533361094791381804063287387593848269535583077395761447997270003472880182785281389503217986345216111066608839314053226944905455527867894417579202440021450780192099804461382547805858048442416404775031536054906591430078158372430123137511562284015838644270890718284816757527123846782459534334449622010096071051370608461801187543120725491334994247617115633321408934609156561550600317384218701570226103101916603887064661438897736318780940711527528174689576401581047016965247557740891644568677717158500583269943401677202156767724068128366565264122982439465133197359199709403275938502669557470231813203243716420586141033606524536939160050644953060161267822648942437397166717661231048975031885732165554988342121802846912529086101485527815277625623750456375769497734336846015607727035509629049392487088406281067943622418704747008368842671022558302403599841645951122485272633632645114017395248086194635840783753556885622317115520947223065437092606797351000565549381224575483728545711797393615756167641692895805257297522338558611388322171107362265816218842443178857488798109026653793426664216990914056536432249301334867988154886628665052346997235574738424830590423677143278792316422403877764330192600192284778313837632536121025336935812624086866699738275977365682227907215832478888642369346396164363308730139814211430306008730666164803678984091335926293402304324974926887831643602681011309570716141912830686577323532639653677390317661361315965553584999398600565155921936759977717933019744688148371103206503693192894521402650915465184309936553493337183425298433679915939417466223900389527673813330617747629574943868716978453767219493506590875711917720875477107189937960894774512654757501871194870738736785890200617373321075693302216320628432065671192096950585761173961632326217708945426214609858410237813215817727602222738133495410481003073275107799948991977963883530734443457532975914263768405442264784216063122769646967156473999043715903323906560726644116438605404838847161912109008701019130726071044114143241976796828547885524779476481802959736049439700479596040292746299203572099761950140348315380947714601056333446998820822120587281510729182971211917876424880354672316916541852256729234429187128163232596965413548589577133208339911288775917226115273379010341362085614577992398778325083550730199818459025958355989260553299673770491722454935329683300002230181517226575787524058832249085821280089747909326100762578770428656006996176212176845478996440705066241710213327486796237430229155358200780141165348065647488230615003392068983794766255036549822805329662862117930628430170492402301985719978948836897183043805182174419147660429752437251683435411217038631379411422095295885798060152938752753799030938871683572095760715221900279379292786303637268765822681241993384808166021603722154710143007377537792699069587121289288019052031601285861825494413353820784883465311632650407642428390870121015194231961652268422003711230464300673442064747718021353070124098860353399152667923871101706221865883573781210935179775604425634694999787251125440854522274810914874307259869602040275941178942581281882159952359658979181144077653354321757595255536158128001163846720319346507296807990793963714961774312119402021297573125165253768017359101557338153772001952444543620071848475663415407442328621060997613243487548847434539665981338717466093020535070271952983943271425371155766600025784423031073429551533945060486222764966687624079324353192992639253731076892135352572321080889819339168668278948281170472624501948409700975760920983724090074717973340788141825195842598096241747610138252643955135259311885045636264188300338539652435997416931322894719878308427600401368074703904097238473945834896186539790594118599310356168436869219485382055780395773881360679549900085123259442529724486666766834641402189915944565309423440650667851948417766779470472041958822043295380326310537494883122180391279678446100139726753892195119117836587662528083690053249004597410947068772912328214304635337283519953648274325833119144459017809607782883583730111857543659958982724531925310588115026307542571493943024453931870179923608166611305426253995833897942971602070338767815033010280120095997252222280801423571094760351925544434929986767817891045559063015953809761875920358937341978962358931125983902598310267193304189215109689156225069659119828323455503059081730735195503721665870288053992138576037035377105178021280129566841984140362872725623214428754302210909472721073474134975514190737043318276626177275996888826027225247133683353452816692779591328861381766349857728936900965749562287103024362590772412219094300871755692625758065709912016659622436080242870024547362036394841255954881727272473653467783647201918303998717627037515724649922289467932322693619177641614618795613956699567783068290316589699430767333508234990790624100202506134057344300695745474682175690441651540636584680463692621274211075399042188716127617787014258864825775223889184599523376292377915585744549477361295525952226578636462118377598473700347971408206994145580719080213590732269233100831759510659019121294795408603640757358750205890208704579670007055262505811420663907459215273309406823649441590891009220296680523325266198911311842016291631076894084723564366808182168657219688268358402785500782804043453710183651096951782335743030504852653738073531074185917705610397395062640355442275156101107261779370634723804990666922161971194259120445084641746383589938239946517395509000859479990136026674261494290066467115067175422177038774507673563742154782905911012619157555870238957001405117822646989944917908301795475876760168094100135837613578591356924455647764464178667115391951357696104864922490083446715486383054477914330097680486878348184672733758436892724310447406807685278625585165092088263813233623148733336714764520450876627614950389949504809560460989604329123358348859990294526400284994280878624039811814884767301216754161106629995553668193123287425702063738352020086863691311733469731741219153633246745325630871347302792174956227014687325867891734558379964351358800959350877556356248810493852999007675135513527792412429277488565888566513247302514710210575352516511814850902750476845518252096331899068527614435138213662152368890578786699432288816028377482035506016029894009119713850179871683633744139275973644017007014763706655703504338121113576415018451821413619823495159601064752712575935185304332875537783057509567425442684712219618709178560783936144511383335649103256405733898667178123972237519316430617013859539474367843392670986712452211189690840236327411496601243483098929941738030588417166613073040067588380432111555379440605497721705942821514886165672771240903387727745629097110134885184374118695655449745736845218066982911045058004299887953899027804383596282409421860556287788428802127553884803728640019441614257499904272009595204654170598104989967504511936471172772220436102614079750809686975176600237187748348016120310234680567112644766123747627852190241202569943534716226660893675219833111813511146503854895025120655772636145473604426859498074396932331297127377157347099713952291182653485155587137336629120242714302503763269501350911612952993785864681307226486008270881333538193703682598867893321238327053297625857382790097826460545598555131836688844628265133798491667839409761353766251798258249663458771950124384040359140849209733754642474488176184070023569580177410177696925077814893386672557898564589851056891960924398841569280696983352240225634570497312245269354193837004843183357196516626721575524193401933099018319309196582920969656247667683659647019595754739345514337413708761517323677204227385674279170698204549953095918872434939524094441678998846319845504852393662972079777452814399418256789457795712552426826089940863317371538896262889629402112108884427376568624527612130371017300785135715404533041507959447776143597437803742436646973247138410492124314138903579092416036406314038149831481905251720937103964026808994832572297954564042701757722904173234796073618787889913318305843069394825961318713816423467218730845133877219086975104942843769325024981656673816260615941768252509993741672883951744066932549653403101452225316189009235376486378482881344209870048096227171226407489571939002918573307460104360729190945767994614929290427981687729426487729952858434647775386906950148984133924540394144680263625402118614317031251117577642829914644533408920976961699098372652361768745605894704968170136974909523072082682887890730190018253425805343421705928713931737993142410852647390948284596418093614138475831136130576108462366837237695913492615824516221552134879244145041756848064120636520170386330129532777699023118648020067556905682295016354931992305914246396217025329747573114094220180199368035026495636955866425906762685687372110339156793839895765565193177883000241613539562437777840801748819373095020699900890899328088397430367736595524891300156633294077907139615464534088791510300651321934486673248275907946807879819425019582622320395131252014109960531260696555404248670549986786923021746989009547850725672978794769888831093487464426400718183160331655511534276155622405474473378049246214952133258527698847336269182649174338987824789278468918828054669982303689939783413747587025805716349413568433929396068192061773331791738208562436433635359863494496890781064019674074436583667071586924521182997893804077137501290858646578905771426833582768978554717687184427726120509266486102051535642840632368481807287940717127966820060727559555904040233178749447346454760628189541512139162918444297651066947969354016866010055196077687335396511614930937570968554559381513789569039251014953265628147011998326992200066392875374713135236421589265126204072887716578358405219646054105435443642166562244565042999010256586927279142752931172082793937751326106052881235373451068372939893580871243869385934389175713376300720319760816604464683937725806909237297523486702916910426369262090199605204121024077648190316014085863558427609537086558164273995349346546314504040199528537252004957805254656251154109252437991326262713609099402902262062836752132305065183934057450112099341464918433323646569371725914489324159006242020612885732926133596808726500045628284557574596592120530341310111827501306961509835515632004310784601906565493806542525229161991819959602752327702249855738824899882707465936355768582560518068964285376850772012220347920993936179268206590142165615925306737944568949070853263568196831861772268249911472615732035807646298116244013316737892788689229032593349861797021994981925739617673075834417098559222170171825712777534491508205278430904619460835217402005838672849709411023266953921445461066215006410674740207009189911951376466904481267253691537162290791385403937560077835153374167747942100384002308951850994548779039346122220865060160500351776264831611153325587705073541279249909859373473787081194253055121436979749914951860535920403830235716352727630874693219622190064260886183676103346002255477477813641012691906569686495012688376296907233961276287223041141813610060264044030035996988919945827397624114613744804059697062576764723766065541618574690527229238228275186799156983390747671146103022776606020061246876477728819096791613354019881402757992174167678799231603963569492851513633647219540611171767387372555728522940054361785176502307544693869307873499110352182532929726044553210797887711449898870911511237250604238753734841257086064069052058452122754533848008205302450456517669518576913200042816758054924811780519832646032445792829730129105318385636821206215531288668564956512613892261367064093953334570526986959692350353094224543865278677673027540402702246384483553239914751363441044050092330361271496081355490531539021002299595756583705381261965683144286057956696622154721695620870013727768536960840704833325132793112232507148630206951245395003735723346807094656483089209801534878705633491092366057554050864111521441481434630437273271045027768661953107858323334857840297160925215326092558932655600672124359464255065996771770388445396181632879614460817789272171836908880126778207430106422524634807454300476492885553409062185153654355474125476152769772667769772777058315801412185688011705028365275543214803488004442979998062157904564161957212784508928489806426497427090579129069217807298769477975112447305991406050629946894280931034216416629935614828130998870745292716048433630818404126469637925843094185442216359084576146078558562473814931427078266215185541603870206876980461747400808324343665382354555109449498431093494759944672673665352517662706772194183191977196378015702169933675083760057163454643671776723387588643405644871566964321041282595645349841388412890420682047007615596916843038999348366793542549210328113363184722592305554383058206941675629992013373175489122037230349072681068534454035993561823576312837767640631013125335212141994611869350833176587852047112364331226765129964171325217513553261867681942338790365468908001827135283584888444111761234101179918709236507184857856221021104009776994453121795022479578069506532965940383987369907240797679040826794007618729547835963492793904576973661643405359792219285870574957481696694062334272619733518136626063735982575552496509807260123668283605928341855848026958413772558970883789942910549800331113884603401939166122186696058491571485733568286149500019097591125218800396419762163559375743718011480559442298730418196808085647265713547612831629200449880315402105530597076666362749328308916880932359290081787411985738317192616728834918402429721290434965526942726402559641463525914348400675867690350382320572934132981593533044446496829441367323442158380761694831219333119819061096142952201536170298575105594326461468505452684975764807808009221335811378197749271768545075538328768874474591593731162470601091244609829424841287520224462594477638749491997840446829257360968534549843266536862844489365704111817793806441616531223600214918768769467398407517176307516849856359201486892943105940202457969622924566644881967576294349535326382171613395757790766370764569570259738800438415805894336137106551859987600754924187211714889295221737721146081154344982665479872580056674724051122007383459271575727715218589946948117940644466399432370044291140747218180224825837736017346685300744985564715420036123593397312914458591522887408719508708632218837288262822884631843717261903305777147651564143822306791847386039147683108141358275755853643597721650028277803713422869688787349795096031108899196143386664068450697420787700280509367203387232629637856038653216432348815557557018469089074647879122436375556668678067610544955017260791142930831285761254481944449473244819093795369008206384631678225064809531810406570254327604385703505922818919878065865412184299217273720955103242251079718077833042609086794273428955735559252723805511440438001239041687716445180226491681641927401106451622431101700056691121733189423400547959684669804298017362570406733282129962153684881404102194463424646220745575643960452985313071409084608499653767803793201899140865814662175319337665970114330608625009829566917638846056762972931464911493704624469351984039534449135141193667933301936617663652555149174982307987072280860859626112660504289296966535652516688885572112276802772743708917389639772257564890533401038855931125679991516589025016486961427207005916056166159702451989051832969278935550303934681219761582183980483960562523091462638447386296039848924386187298507775928792722068554807210497817653286210187476766897248841139560349480376727036316921007350834073865261684507482496448597428134936480372426116704266870831925040997615319076855770327421785010006441984124207396400139603601583810565928413684574119102736420274163723488214524101347716529603128408658419787951116511529827814620379139855006399960326591248525308493690313130100799977191362230866011099929142871249388541612038020411340188887219693477904497527454288072803509305828754420755134816660927879353566521255620139988249628478726214432362853676502591450468377635282587652139156480972141929675549384375582600253168536356731379262475878049445944183429172756988376226261846365452743497662411138451305481449836311789784489732076719508784158618879692955819733250699951402601511675529750575437810242238957925786562128432731202200716730574069286869363930186765958251326499145950260917069347519408975357464016830811798846452473618956056479426358070562563281189269663026479535951097127659136233180866921535788607812759910537171402204506186075374866306350591483916467656723205714516886170790984695932236724946737583099607042589220481550799132752088583781117685214269334786921895240622657921043620348852926267984013953216458791151579050460579710838983371864038024417511347226472547010794793996953554669619726763255229914654933499663234185951450360980344092212206712567698723427940708857070474293173329188523896721971353924492426178641188637790962814486917869468177591717150669111480020759432012061969637795103227089029566085562225452602610460736131368869009281721068198618553780982018471154163630326265699283424155023600978046417108525537612728905335045506135684143775854429677977014660294387687225115363801191758154028120818255606485410787933598921064427244898618961629413418001295130683638609294100083136673372153008352696235737175330738653338204842190308186449184093723944033405244909554558016406460761581010301767488475017661908692946098769201691202181688291040870709560951470416921147027413390052253340834812870353031023919699978597413908593605433599697075604460134242453682496098772581311024732798562072126572499003468293886872304895562253204463602639854225258416464324271611419817802482595563544907219226583863662663750835944314877635156145710745528016159677048442714194435183275698407552677926411261765250615965235457187956673170913319358761628255920783080185206890151504713340386100310055914817852110384754542933389188444120517943969970194112695119526564919594189975418393234647424290702718875223534393673633663200307232747037407123982562024662651974090199762452056198557625760008708173083288344381831070054514493545885422678578551915372292379555494333410174420169600090696415612732297770221217951868376359082255128816470021992348864043959153018464004714321186360622527011541122283802778538911098490201342741014121559769965438877197485376431158229838533123071751132961904559007938064276695819014842627991221792947987348901868471676503827328552059082984529806259250352128451925927986593506132961946796252373972565584157853744567558998032405492186962888490332560851455344391660226257775512916200772796852629387937530454181080729285891989715381797343496187232927614747850192611450413274873242970583408471112333746274617274626582415324271059322506255302314738759251724787322881491455915605036334575424233779160374952502493022351481961381162563911415610326844958072508273431765944054098269765269344579863479709743124498271933113863873159636361218623497261409556079920628316999420072054811525353393946076850019909886553861433495781650089961649079678142901148387645682174914075623767618453775144031475411206760160726460556859257799322070337333398916369504346690694828436629980037414527627716547623825546170883189810868806847853705536480469350958818025360529740793538676511195079373282083146268960071075175520614433784114549950136432446328193346389050936545714506900864483440180428363390513578157273973334537284263372174065775771079830517555721036795976901889958494130195999573017901240193908681356585539661941371794487632079868800371607303220547423572266896801882123424391885984168972277652194032493227314793669234004848976059037958094696041754279613782553781223947646147832926976545162290281701100437846038756544151739433960048915318817576650500951697402415644771293656614253949368884230517400129920556854289853897942669956777027089146513736892206104415481662156804219838476730871787590279209175900695273456682026513373111518000181434120962601658629821076663523361774007837783423709152644063054071807843358061072961105550020415131696373046849213356837265400307509829089364612047891114753037049893952833457824082817386441322710002968311940203323456420826473276233830294639378998375836554559919340866235090967961134004867027123176526663710778725111860354037554487418693519733656621772359229396776463251562023487570113795712096237723431370212031004965152111976013176419408203437348512852602913334915125083119802850177855710725373149139215709105130965059885999931560863655477403551898166733535880048214665099741433761182777723351910741217572841592580872591315074606025634903777263373914461377038021318347447301113032670296917335047701632106616227830027269283365584011791419447808748253360714403296252285775009808599609040936312635621328162071453406104224112083010008587264252112262480142647519426184325853386753874054743491072710049754281159466017136122590440158991600229827801796035194080046513534752698777609527839984368086908989197839693532179980139135442552717910225397010810632143048511378291498511381969143043497500189980681644412123273328307192824362406733196554692677851193152775113446468905504248113361434984604849051258345683266441528489713972376040328212660253516693914082049947320486021627759791771234751097502403078935759937715095021751693555827072533911892334070223832077585802137174778378778391015234132098489423459613692340497998279304144463162707214796117456975719681239291913740982925805561955207434243295982898980529233366415419256367380689494201471241340525072204061794355252555225008748790086568314542835167750542294803274783044056438581591952666758282929705226127628711040134801787224801789684052407924360582742467443076721645270313451354167649668901274786801010295133862698649748212118629040337691568576240699296372493097201628707200189835423690364149270236961938547372480329855045112089192879829874467864129159417531675602533435310626745254507114181483239880607297140234725520713490798398982355268723950909365667878992383712578976248755990443228895388377317348941122757071410959790047919301046740750411435381782464630795989555638991884773781341347070246747362112048986226991888517456251732519341352038115863350123913054441910073628447567514161050410973505852762044489190978901984315485280533985777844313933883994310444465669244550885946314081751220331390681596592510546858013133838152176418210433429788826119630443111388796258746090226130900849975430395771243230616906262919403921439740270894777663702488155499322458825979020631257436910946393252806241642476868495455324938017639371615636847859823715902385421265840615367228607131702674740131145261063765383390315921943469817605358380310612887852051546933639241088467632009567089718367490578163085158138161966882222047570437590614338040725853862083565176998426774523195824182683698270160237414938363496629351576854061397342746470899685618170160551104880971554859118617189668025973541705423985135560018720335079060946421271143993196046527424050882225359773481519135438571253258540493946010865793798058620143366078825219717809025817370870916460452727977153509910340736425020386386718220522879694458387652947951048660717390229327455426785669776865939923416834122274663015062155320502655341460995249356050854921756549134830958906536175693817637473644183378974229700703545206663170929607591989627732423090252397443861014263098687733913882518684316501027964911497737582888913450341148865948670215492101084328080783428089417298008983297536940644969903125399863919581601468995220880662285408414864274786281975546629278814621607171381880180840572084715868906836919393381864278454537956719272397972364651667592011057995663962598535512763558768140213409829016296873429850792471846056874828331381259161962476156902875901072733103299140623864608333378638257926302391590003557609032477281338887339178096966601469615031754226751125993315529674213336300222964906480934582008181061802100227664580400278213336758573019011371754672763059044353131319036092489097246427928455549913490005180295707082919052556781889913899625138662319380053611346224294610248954072404857123256628888931722116432947816190554868054943441034090680716088028227959686950133643814268252170472870863010137301155236861416908375675747637239763185757038109443390564564468524183028148107998376918512127201935044041804604721626939445788377090105974693219720558114078775989772072009689382249303236830515862657281114637996983137517937623215111252349734305240622105244234353732905655163406669506165892878218707756794176080712973781335187117931650033155523822487730653444179453415395202424449703410120874072188109388268167512042299404948179449472732894770111574139441228455521828424922240658752689172272780607116754046973008037039618787796694882555614674384392570115829546661358678671897661297311267200072971553613027503556167817765442287442114729881614802705243806817653573275578602505847084013208837932816008769081300492491473682517035382219619039014999523495387105997351143478292339499187936608692301375596368532373806703591144243268561512109404259582639301678017128669239283231057658851714020211196957064799814031505633045141564414623163763809904402816256917576489142569714163598439317433270237812336938043012892626375382667795034169334323607500248175741808750388475094939454896209740485442635637164995949920980884294790363666297526003243856352945844728944547166209297495496616877414120882130477022816116456044007236351581149729739218966737382647204722642221242016560150284971306332795814302516013694825567014780935790889657134926158161346901806965089556310121218491805847922720691871696316330044858020102860657858591269974637661741463934159569539554203314628026518951167938074573315759846086173702687867602943677780500244673391332431669880354073232388281847501051641331189537036488422690270478052742490603492082954755054003457160184072574536938145531175354210726557835615499874447480427323457880061873149341566046352979779455075359304795687209316724536547208381685855606043801977030764246083489876101345709394877002946175792061952549255757109038525171488525265671045349813419803390641529876343695420256080277614421914318921393908834543131769685101840103844472348948869520981943531906506555354617335814045544837884752526253949665869992058417652780125341033896469818642430034146791380619028059607854888010789705516946215228773090104467462497979992627120951684779568482583341402266477210843362437593741610536734041954738964197895425335036301861400951534766961476255651873823292468547356935802896011536791787303553159378363082248615177770541577576561759358512016692943111138863582159667618830326104164651714846979385422621687161400122378213779774131268977266712992025922017408770076956283473932201088159356286281928563571893384958850603853158179760679479840878360975960149733420572704603521790605647603285569276273495182203236144112584182426247712012035776388895974318232827871314608053533574494297621796789034568169889553518504478325616380709476951699086247100019748809205009521943632378719764870339223811540363475488626845956159755193765410115014067001226927474393888589943859730245414801061235908036274585288493563251585384383242493252666087588908318700709100237377106576985056433928854337658342596750653715005333514489908293887737352051459333049626531415141386124437935885070944688045486975358170212908490787347806814366323322819415827345671356443171537967818058195852464840084032909981943781718177302317003989733050495387356116261023999433259780126893432605584710278764901070923443884634011735556865903585244919370181041626208504299258697435817098133894045934471937493877624232409852832762266604942385129709453245586252103600829286649724174919141988966129558076770979594795306013119159011773943104209049079424448868513086844493705909026006120649425744710353547657859242708130410618546219881830090634588187038755856274911587375421064667951346487586771543838018521348281915812462599335160198935595167968932852205824799421034512715877163345222995418839680448835529753361286837225935390079201666941339091168758803988828869216002373257361588207163516271332810518187602104852180675526648673908900907195138058626735124312215691637902277328705410842037841525683288718046987952513073266340278519059417338920358540395677035611329354482585628287610610698229721420961993509331312171187891078766872044548876089410174798647137882462153955933333275562009439580434537919782280590395959927436913793778664940964048777841748336432684026282932406260081908081804390914556351936856063045089142289645219987798849347477729132797266027658401667890136490508741142126861969862044126965282981087045479861559545338021201155646979976785738920186243599326777689454060508218838227909833627167124490026761178498264377033002081844590009717235204331994708242098771514449751017055643029542821819670009202515615844174205933658148134902693111517093872260026458630561325605792560927332265579346280805683443921373688405650434307396574061017779370141424615493070741360805442100295600095663588977899267630517718781943706761498217564186590116160865408635391513039201316805769034172596453692350806417446562351523929050409479953184074862151210561833854566176652606393713658802521666223576132201941701372664966073252010771947931265282763302413805164907174565964853748354669194523580315301969160480994606814904037819829732360930087135760798621425422096419004367905479049930078372421581954535418371129368658430553842717628035279128821129308351575656599944741788438381565148434229858704245592434693295232821803508333726283791830216591836181554217157448465778420134329982594566884558266171979012180849480332448787258183774805522268151011371745368417870280274452442905474518234674919564188551244421337783521423865979925988203287085109338386829906571994614906290257427686038850511032638544540419184958866538545040571323629681069146814847869659166861842756798460041868762298055562963045953227923051616721591968675849523635298935788507746081537321454642984792310511676357749494622952569497660359473962430995343310404994209677883827002714478494069037073249106444151696053256560586778757417472110827435774315194060757983563629143326397812218946287447798119807225646714664054850131009656786314880090303749338875364183165134982546694673316118123364854397649325026179549357204305402182974871251107404011611405899911093062492312813116340549262571356721818628932786138833718028535056503591952741400869510926167541476792668032109237467087213606278332922386413619594121339278036118276324106004740971111048140003623342714514483334641675466354699731494756643423659493496845884551524150756376605086632827424794136062876041290644913828519456402643153225858624043141838669590633245063000392213192647625962691510904457695301444054618037857503036686212462278639752746667870121003392984873375014475600322100622358029343774955032037012738468163061026570300872275462966796880890587127676361066225722352229739206443093524327228100859973095132528630601105497915644791845004618046762408928925680912930592960642357021061524646205023248966593987324933967376952023991760898474571843531936646529125848064480196520162838795189499336759241485626136995945307287254532463291529110128763770605570609531377527751867923292134955245133089867969165129073841302167573238637575820080363575728002754490327953079900799442541108725693188014667935595834676432868876966610097395749967836593397846346959948950610490383647409504695226063858046758073069912290474089879166872117147527644711604401952718169508289733537148530928937046384420893299771125856840846608339934045689026787516008775461267988015465856522061210953490796707365539702576199431376639960606061106406959330828171876426043573425361756943784848495250108266488395159700490598380812105221111091943323951136051446459834210799058082093716464523127704023160072138543723461267260997870385657091998507595634613248460188409850194287687902268734556500519121546544063829253851276317663922050938345204300773017029940362615434001322763910912988327863920412300445551684054889809080779174636092439334912641164240093880746356607262336695842764583698268734815881961058571835767462009650526065929263548291499045768307210893245857073701660717398194485028842603963660746031184786225831056580870870305567595861341700745402965687634774176431051751036732869245558582082372038601781739405175130437994868822320044378043103170921034261674998000073016094814586374488778522273076330495383944345382770608760763542098445008306247630253572781032783461766970544287155315340016497076657195985041748199087201490875686037783591994719343352772947285537925787684832301101859365800717291186967617655053775030293033830706448912811412025506150896411007623824574488655182581058140345320124754723269087547507078577659732542844459353044992070014538748948226556442223696365544194225441338212225477497535494624827680533336983284156138692363443358553868471111430498248398991803165458638289353799130535222833430137953372954016257623228081138499491876144141322933767106563492528814528239506209022357876684650116660097382753660405446941653422239052108314585847035529352219928272760574821266065291385530345549744551470344939486863429459658431024190785923680224560763936784166270518555178702904073557304620639692453307795782245949710420188043000183881429008173039450507342787013124466860092778581811040911511729374873627887874907465285565434748886831064110051023020875107768918781525622735251550379532444857787277617001964853703555167655209119339343762866284619844026295252183678522367475108809781507098978413086245881522660963551401874495836926917799047120726494905737264286005211403581231076006699518536124862746756375896225299116496066876508261734178484789337295056739007878617925351440621045366250640463728815698232317500596261080921955211150859302955654967538862612972339914628358476048627627027309739202001432248707582337354915246085608210328882974183906478869923273691360048837436615223517058437705545210815513361262142911815615301758882573594892507108879262128641392443309383797333867806131795237315266773820858024701433527009243803266951742119507670884326346442749127558907746863582162166042741315170212458586056233631493164646913946562497471741958354218607748711057338458433689939645913740603382159352243594751626239188685307822821763983237306180204246560477527943104796189724299533029792497481684052893791044947004590864991872727345413508101983881864673609392571930511968645601855782450218231065889437986522432050677379966196955472440585922417953006820451795370043472451762893566770508490213107736625751697335527462302943031203596260953423574397249659211010657817826108745318874803187430823573699195156340957162700992444929749105489851519658664740148225106335367949737142510229341882585117371994499115097583746130105505064197721531929354875371191630262030328588658528480193509225875775597425276584011721342323648084027143356367542046375182552524944329657043861387865901965738802868401894087672816714137033661732650120578653915780703088714261519075001492576112927675193096728453971160213606303090542243966320674323582797889332324405779199278484633339777737655901870574806828678347965624146102899508487399692970750432753029972872297327934442988646412725348160603779707298299173029296308695801996312413304939350493325412355071054461182591141116454534710329881047844067780138077131465400099386306481266614330858206811395838319169545558259426895769841428893743467084107946318932539106963955780706021245974898293564613560788983472419979478564362042094613412387613198865352358312996862268948608408456655606876954501274486631405054735351746873009806322780468912246821460806727627708402402266155485024008952891657117617439020337584877842911289623247059191874691042005848326140677333751027195653994697162517248312230633919328707983800748485726516123434933273356664473358556430235280883924348278760886164943289399166399210488307847777048045728491456303353265070029588906265915498509407972767567129795010098229476228961891591441520032283878773485130979081019129267227103778898053964156362364169154985768408398468861684375407065121039062506128107663799047908879674778069738473170475253442156390387201238806323688037017949308954900776331523063548374256816653361606641980030188287123767481898330246836371488309259283375902278942588060087286038859168849730693948020511221766359138251524278670094406942355120201568377778851824670025651708509249623747726813694284350062938814429987905301056217375459182679973217735029368928065210025396268807498092643458011655715886700443503976505323478287327368840863540002740676783821963522226539290939807367391364082898722017776747168118195856133721583119054682936083236976113450281757830202934845982925000895682630271263295866292147653142233351793093387951357095346377183684092444422096319331295620305575517340067973740614162107923633423805646850092037167152642556371853889571416419772387422610596667396997173168169415435095283193556417705668622215217991151355639707143312893657553844648326201206424338016955862698561022460646069330793847858814367407000599769703649019273328826135329363112403650698652160638987250267238087403396744397830258296894256896741864336134979475245526291426522842419243083388103580053787023999542172113686550275341362211693140694669513186928102574795985605145005021715913317751609957865551981886193211282110709442287240442481153406055895958355815232012184605820563592699303478851132068626627588771446035996656108430725696500563064489187599466596772847171539573612108180841547273142661748933134174632662354222072600146012701206934639520564445543291662986660783089068118790090815295063626782075614388815781351134695366303878412092346942868730839320432333872775496805210302821544324723388845215343727250128589747691460808314404125868181540049187772287869801853454537006526655649170915429522756709222217474112062720656622989806032891672068743654948246108697367225547404812889242471854323605753411672850757552057131156697954584887398742228135887985840783135060548290551482785294891121905383195624228719484759407859398047901094194070671764439032730712135887385049993638838205501683402777496070276844880281912220636888636811043569529300652195528261526991271637277388418993287130563464688227398288763198645709836308917786487086676185485680047672552675414742851028145807403152992197814557756843681110185317498167016426647884090262682824448258027532094549915104518517716546311804904567985713257528117913656278158111288816562285876030875974963849435275676612168959261485030785362045274507752950631012480341804584059432926079854435620093708091821523920371790678121992280496069738238743312626730306795943960954957189577217915597300588693646845576676092450906088202212235719254536715191834872587423919410890444115959932760044506556206461164655665487594247369252336955993030355095817626176231849561906494839673002037763874369343999829430209147073618947932692762445186560239559053705128978163455423320114975994896278424327483788032701418676952621180975006405149755889650293004867605208010491537885413909424531691719987628941277221129464568294860281493181560249677887949813777216229359437811004448060797672429276249510784153446429150842764520002042769470698041775832209097020291657347251582904630910359037842977572651720877244740952267166306005469716387943171196873484688738186656751279298575016363411314627530499019135646823804329970695770150789337728658035712790913767420805655493624646 go/src/pkg/compress/zlib0040755000000000000000000000000012412656737015566 5ustar00rootroot00000000000000go/src/pkg/compress/zlib/example_test.go0100644000000000000000000000142012412656737020660 0ustar00rootroot00000000000000// 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 zlib_test import ( "bytes" "compress/zlib" "fmt" "io" "os" ) func ExampleNewWriter() { var b bytes.Buffer w := zlib.NewWriter(&b) w.Write([]byte("hello, world\n")) w.Close() fmt.Println(b.Bytes()) // Output: [120 156 202 72 205 201 201 215 81 40 207 47 202 73 225 2 4 0 0 255 255 33 231 4 147] } func ExampleNewReader() { buff := []byte{120, 156, 202, 72, 205, 201, 201, 215, 81, 40, 207, 47, 202, 73, 225, 2, 4, 0, 0, 255, 255, 33, 231, 4, 147} b := bytes.NewReader(buff) r, err := zlib.NewReader(b) if err != nil { panic(err) } io.Copy(os.Stdout, r) // Output: hello, world r.Close() } go/src/pkg/compress/zlib/reader.go0100644000000000000000000000661512412656737017443 0ustar00rootroot00000000000000// Copyright 2009 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 zlib implements reading and writing of zlib format compressed data, as specified in RFC 1950. The implementation provides filters that uncompress during reading and compress during writing. For example, to write compressed data to a buffer: var b bytes.Buffer w := zlib.NewWriter(&b) w.Write([]byte("hello, world\n")) w.Close() and to read that data back: r, err := zlib.NewReader(&b) io.Copy(os.Stdout, r) r.Close() */ package zlib import ( "bufio" "compress/flate" "errors" "hash" "hash/adler32" "io" ) const zlibDeflate = 8 var ( // ErrChecksum is returned when reading ZLIB data that has an invalid checksum. ErrChecksum = errors.New("zlib: invalid checksum") // ErrDictionary is returned when reading ZLIB data that has an invalid dictionary. ErrDictionary = errors.New("zlib: invalid dictionary") // ErrHeader is returned when reading ZLIB data that has an invalid header. ErrHeader = errors.New("zlib: invalid header") ) type reader struct { r flate.Reader decompressor io.ReadCloser digest hash.Hash32 err error scratch [4]byte } // NewReader creates a new io.ReadCloser. // Reads from the returned io.ReadCloser read and decompress data from r. // The implementation buffers input and may read more data than necessary from r. // It is the caller's responsibility to call Close on the ReadCloser when done. func NewReader(r io.Reader) (io.ReadCloser, error) { return NewReaderDict(r, nil) } // NewReaderDict is like NewReader but uses a preset dictionary. // NewReaderDict ignores the dictionary if the compressed data does not refer to it. func NewReaderDict(r io.Reader, dict []byte) (io.ReadCloser, error) { z := new(reader) if fr, ok := r.(flate.Reader); ok { z.r = fr } else { z.r = bufio.NewReader(r) } _, err := io.ReadFull(z.r, z.scratch[0:2]) if err != nil { return nil, err } h := uint(z.scratch[0])<<8 | uint(z.scratch[1]) if (z.scratch[0]&0x0f != zlibDeflate) || (h%31 != 0) { return nil, ErrHeader } if z.scratch[1]&0x20 != 0 { _, err = io.ReadFull(z.r, z.scratch[0:4]) if err != nil { return nil, err } checksum := uint32(z.scratch[0])<<24 | uint32(z.scratch[1])<<16 | uint32(z.scratch[2])<<8 | uint32(z.scratch[3]) if checksum != adler32.Checksum(dict) { return nil, ErrDictionary } z.decompressor = flate.NewReaderDict(z.r, dict) } else { z.decompressor = flate.NewReader(z.r) } z.digest = adler32.New() return z, nil } func (z *reader) Read(p []byte) (n int, err error) { if z.err != nil { return 0, z.err } if len(p) == 0 { return 0, nil } n, err = z.decompressor.Read(p) z.digest.Write(p[0:n]) if n != 0 || err != io.EOF { z.err = err return } // Finished file; check checksum. if _, err := io.ReadFull(z.r, z.scratch[0:4]); err != nil { z.err = err return 0, err } // ZLIB (RFC 1950) is big-endian, unlike GZIP (RFC 1952). checksum := uint32(z.scratch[0])<<24 | uint32(z.scratch[1])<<16 | uint32(z.scratch[2])<<8 | uint32(z.scratch[3]) if checksum != z.digest.Sum32() { z.err = ErrChecksum return 0, z.err } return } // Calling Close does not close the wrapped io.Reader originally passed to NewReader. func (z *reader) Close() error { if z.err != nil { return z.err } z.err = z.decompressor.Close() return z.err } go/src/pkg/compress/zlib/reader_test.go0100644000000000000000000000450012412656737020471 0ustar00rootroot00000000000000// Copyright 2009 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 zlib import ( "bytes" "io" "testing" ) type zlibTest struct { desc string raw string compressed []byte dict []byte err error } // Compare-to-golden test data was generated by the ZLIB example program at // http://www.zlib.net/zpipe.c var zlibTests = []zlibTest{ { "empty", "", []byte{0x78, 0x9c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01}, nil, nil, }, { "goodbye", "goodbye, world", []byte{ 0x78, 0x9c, 0x4b, 0xcf, 0xcf, 0x4f, 0x49, 0xaa, 0x4c, 0xd5, 0x51, 0x28, 0xcf, 0x2f, 0xca, 0x49, 0x01, 0x00, 0x28, 0xa5, 0x05, 0x5e, }, nil, nil, }, { "bad header", "", []byte{0x78, 0x9f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01}, nil, ErrHeader, }, { "bad checksum", "", []byte{0x78, 0x9c, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff}, nil, ErrChecksum, }, { "not enough data", "", []byte{0x78, 0x9c, 0x03, 0x00, 0x00, 0x00}, nil, io.ErrUnexpectedEOF, }, { "excess data is silently ignored", "", []byte{ 0x78, 0x9c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x78, 0x9c, 0xff, }, nil, nil, }, { "dictionary", "Hello, World!\n", []byte{ 0x78, 0xbb, 0x1c, 0x32, 0x04, 0x27, 0xf3, 0x00, 0xb1, 0x75, 0x20, 0x1c, 0x45, 0x2e, 0x00, 0x24, 0x12, 0x04, 0x74, }, []byte{ 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x0a, }, nil, }, { "wrong dictionary", "", []byte{ 0x78, 0xbb, 0x1c, 0x32, 0x04, 0x27, 0xf3, 0x00, 0xb1, 0x75, 0x20, 0x1c, 0x45, 0x2e, 0x00, 0x24, 0x12, 0x04, 0x74, }, []byte{ 0x48, 0x65, 0x6c, 0x6c, }, ErrDictionary, }, } func TestDecompressor(t *testing.T) { b := new(bytes.Buffer) for _, tt := range zlibTests { in := bytes.NewReader(tt.compressed) zlib, err := NewReaderDict(in, tt.dict) if err != nil { if err != tt.err { t.Errorf("%s: NewReader: %s", tt.desc, err) } continue } defer zlib.Close() b.Reset() n, err := io.Copy(b, zlib) if err != nil { if err != tt.err { t.Errorf("%s: io.Copy: %v want %v", tt.desc, err, tt.err) } continue } s := b.String() if s != tt.raw { t.Errorf("%s: got %d-byte %q want %d-byte %q", tt.desc, n, s, len(tt.raw), tt.raw) } } } go/src/pkg/compress/zlib/writer.go0100644000000000000000000001253712412656737017515 0ustar00rootroot00000000000000// Copyright 2009 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 zlib import ( "compress/flate" "fmt" "hash" "hash/adler32" "io" ) // These constants are copied from the flate package, so that code that imports // "compress/zlib" does not also have to import "compress/flate". const ( NoCompression = flate.NoCompression BestSpeed = flate.BestSpeed BestCompression = flate.BestCompression DefaultCompression = flate.DefaultCompression ) // A Writer takes data written to it and writes the compressed // form of that data to an underlying writer (see NewWriter). type Writer struct { w io.Writer level int dict []byte compressor *flate.Writer digest hash.Hash32 err error scratch [4]byte wroteHeader bool } // NewWriter creates a new Writer. // Writes to the returned Writer are compressed and written to w. // // It is the caller's responsibility to call Close on the WriteCloser when done. // Writes may be buffered and not flushed until Close. func NewWriter(w io.Writer) *Writer { z, _ := NewWriterLevelDict(w, DefaultCompression, nil) return z } // NewWriterLevel is like NewWriter but specifies the compression level instead // of assuming DefaultCompression. // // The compression level can be DefaultCompression, NoCompression, or any // integer value between BestSpeed and BestCompression inclusive. The error // returned will be nil if the level is valid. func NewWriterLevel(w io.Writer, level int) (*Writer, error) { return NewWriterLevelDict(w, level, nil) } // NewWriterLevelDict is like NewWriterLevel but specifies a dictionary to // compress with. // // The dictionary may be nil. If not, its contents should not be modified until // the Writer is closed. func NewWriterLevelDict(w io.Writer, level int, dict []byte) (*Writer, error) { if level < DefaultCompression || level > BestCompression { return nil, fmt.Errorf("zlib: invalid compression level: %d", level) } return &Writer{ w: w, level: level, dict: dict, }, nil } // Reset clears the state of the Writer z such that it is equivalent to its // initial state from NewWriterLevel or NewWriterLevelDict, but instead writing // to w. func (z *Writer) Reset(w io.Writer) { z.w = w // z.level and z.dict left unchanged. if z.compressor != nil { z.compressor.Reset(w) } if z.digest != nil { z.digest.Reset() } z.err = nil z.scratch = [4]byte{} z.wroteHeader = false } // writeHeader writes the ZLIB header. func (z *Writer) writeHeader() (err error) { z.wroteHeader = true // ZLIB has a two-byte header (as documented in RFC 1950). // The first four bits is the CINFO (compression info), which is 7 for the default deflate window size. // The next four bits is the CM (compression method), which is 8 for deflate. z.scratch[0] = 0x78 // The next two bits is the FLEVEL (compression level). The four values are: // 0=fastest, 1=fast, 2=default, 3=best. // The next bit, FDICT, is set if a dictionary is given. // The final five FCHECK bits form a mod-31 checksum. switch z.level { case 0, 1: z.scratch[1] = 0 << 6 case 2, 3, 4, 5: z.scratch[1] = 1 << 6 case 6, -1: z.scratch[1] = 2 << 6 case 7, 8, 9: z.scratch[1] = 3 << 6 default: panic("unreachable") } if z.dict != nil { z.scratch[1] |= 1 << 5 } z.scratch[1] += uint8(31 - (uint16(z.scratch[0])<<8+uint16(z.scratch[1]))%31) if _, err = z.w.Write(z.scratch[0:2]); err != nil { return err } if z.dict != nil { // The next four bytes are the Adler-32 checksum of the dictionary. checksum := adler32.Checksum(z.dict) z.scratch[0] = uint8(checksum >> 24) z.scratch[1] = uint8(checksum >> 16) z.scratch[2] = uint8(checksum >> 8) z.scratch[3] = uint8(checksum >> 0) if _, err = z.w.Write(z.scratch[0:4]); err != nil { return err } } if z.compressor == nil { // Initialize deflater unless the Writer is being reused // after a Reset call. z.compressor, err = flate.NewWriterDict(z.w, z.level, z.dict) if err != nil { return err } z.digest = adler32.New() } return nil } // Write writes a compressed form of p to the underlying io.Writer. The // compressed bytes are not necessarily flushed until the Writer is closed or // explicitly flushed. func (z *Writer) Write(p []byte) (n int, err error) { if !z.wroteHeader { z.err = z.writeHeader() } if z.err != nil { return 0, z.err } if len(p) == 0 { return 0, nil } n, err = z.compressor.Write(p) if err != nil { z.err = err return } z.digest.Write(p) return } // Flush flushes the Writer to its underlying io.Writer. func (z *Writer) Flush() error { if !z.wroteHeader { z.err = z.writeHeader() } if z.err != nil { return z.err } z.err = z.compressor.Flush() return z.err } // Close closes the Writer, flushing any unwritten data to the underlying // io.Writer, but does not close the underlying io.Writer. func (z *Writer) Close() error { if !z.wroteHeader { z.err = z.writeHeader() } if z.err != nil { return z.err } z.err = z.compressor.Close() if z.err != nil { return z.err } checksum := z.digest.Sum32() // ZLIB (RFC 1950) is big-endian, unlike GZIP (RFC 1952). z.scratch[0] = uint8(checksum >> 24) z.scratch[1] = uint8(checksum >> 16) z.scratch[2] = uint8(checksum >> 8) z.scratch[3] = uint8(checksum >> 0) _, z.err = z.w.Write(z.scratch[0:4]) return z.err } go/src/pkg/compress/zlib/writer_test.go0100644000000000000000000001224312412656737020546 0ustar00rootroot00000000000000// Copyright 2009 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 zlib import ( "bytes" "fmt" "io" "io/ioutil" "os" "testing" ) var filenames = []string{ "../testdata/e.txt", "../testdata/pi.txt", } var data = []string{ "test a reasonable sized string that can be compressed", } // Tests that compressing and then decompressing the given file at the given compression level and dictionary // yields equivalent bytes to the original file. func testFileLevelDict(t *testing.T, fn string, level int, d string) { // Read the file, as golden output. golden, err := os.Open(fn) if err != nil { t.Errorf("%s (level=%d, dict=%q): %v", fn, level, d, err) return } defer golden.Close() b0, err0 := ioutil.ReadAll(golden) if err0 != nil { t.Errorf("%s (level=%d, dict=%q): %v", fn, level, d, err0) return } testLevelDict(t, fn, b0, level, d) } func testLevelDict(t *testing.T, fn string, b0 []byte, level int, d string) { // Make dictionary, if given. var dict []byte if d != "" { dict = []byte(d) } // Push data through a pipe that compresses at the write end, and decompresses at the read end. piper, pipew := io.Pipe() defer piper.Close() go func() { defer pipew.Close() zlibw, err := NewWriterLevelDict(pipew, level, dict) if err != nil { t.Errorf("%s (level=%d, dict=%q): %v", fn, level, d, err) return } defer zlibw.Close() _, err = zlibw.Write(b0) if err != nil { t.Errorf("%s (level=%d, dict=%q): %v", fn, level, d, err) return } }() zlibr, err := NewReaderDict(piper, dict) if err != nil { t.Errorf("%s (level=%d, dict=%q): %v", fn, level, d, err) return } defer zlibr.Close() // Compare the decompressed data. b1, err1 := ioutil.ReadAll(zlibr) if err1 != nil { t.Errorf("%s (level=%d, dict=%q): %v", fn, level, d, err1) return } if len(b0) != len(b1) { t.Errorf("%s (level=%d, dict=%q): length mismatch %d versus %d", fn, level, d, len(b0), len(b1)) return } for i := 0; i < len(b0); i++ { if b0[i] != b1[i] { t.Errorf("%s (level=%d, dict=%q): mismatch at %d, 0x%02x versus 0x%02x\n", fn, level, d, i, b0[i], b1[i]) return } } } func testFileLevelDictReset(t *testing.T, fn string, level int, dict []byte) { var b0 []byte var err error if fn != "" { b0, err = ioutil.ReadFile(fn) if err != nil { t.Errorf("%s (level=%d): %v", fn, level, err) return } } // Compress once. buf := new(bytes.Buffer) var zlibw *Writer if dict == nil { zlibw, err = NewWriterLevel(buf, level) } else { zlibw, err = NewWriterLevelDict(buf, level, dict) } if err == nil { _, err = zlibw.Write(b0) } if err == nil { err = zlibw.Close() } if err != nil { t.Errorf("%s (level=%d): %v", fn, level, err) return } out := buf.String() // Reset and compress again. buf2 := new(bytes.Buffer) zlibw.Reset(buf2) _, err = zlibw.Write(b0) if err == nil { err = zlibw.Close() } if err != nil { t.Errorf("%s (level=%d): %v", fn, level, err) return } out2 := buf2.String() if out2 != out { t.Errorf("%s (level=%d): different output after reset (got %d bytes, expected %d", fn, level, len(out2), len(out)) } } func TestWriter(t *testing.T) { for i, s := range data { b := []byte(s) tag := fmt.Sprintf("#%d", i) testLevelDict(t, tag, b, DefaultCompression, "") testLevelDict(t, tag, b, NoCompression, "") for level := BestSpeed; level <= BestCompression; level++ { testLevelDict(t, tag, b, level, "") } } } func TestWriterBig(t *testing.T) { for _, fn := range filenames { testFileLevelDict(t, fn, DefaultCompression, "") testFileLevelDict(t, fn, NoCompression, "") for level := BestSpeed; level <= BestCompression; level++ { testFileLevelDict(t, fn, level, "") } } } func TestWriterDict(t *testing.T) { const dictionary = "0123456789." for _, fn := range filenames { testFileLevelDict(t, fn, DefaultCompression, dictionary) testFileLevelDict(t, fn, NoCompression, dictionary) for level := BestSpeed; level <= BestCompression; level++ { testFileLevelDict(t, fn, level, dictionary) } } } func TestWriterReset(t *testing.T) { const dictionary = "0123456789." for _, fn := range filenames { testFileLevelDictReset(t, fn, NoCompression, nil) testFileLevelDictReset(t, fn, DefaultCompression, nil) testFileLevelDictReset(t, fn, NoCompression, []byte(dictionary)) testFileLevelDictReset(t, fn, DefaultCompression, []byte(dictionary)) if !testing.Short() { for level := BestSpeed; level <= BestCompression; level++ { testFileLevelDictReset(t, fn, level, nil) } } } } func TestWriterDictIsUsed(t *testing.T) { var input = []byte("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.") var buf bytes.Buffer compressor, err := NewWriterLevelDict(&buf, BestCompression, input) if err != nil { t.Errorf("error in NewWriterLevelDict: %s", err) return } compressor.Write(input) compressor.Close() const expectedMaxSize = 25 output := buf.Bytes() if len(output) > expectedMaxSize { t.Errorf("result too large (got %d, want <= %d bytes). Is the dictionary being used?", len(output), expectedMaxSize) } } go/src/pkg/container0040755000000000000000000000000012412656737014755 5ustar00rootroot00000000000000go/src/pkg/container/heap0040755000000000000000000000000012412656737015672 5ustar00rootroot00000000000000go/src/pkg/container/heap/example_intheap_test.go0100644000000000000000000000217312412656737022502 0ustar00rootroot00000000000000// 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. // This example demonstrates an integer heap built using the heap interface. package heap_test import ( "container/heap" "fmt" ) // An IntHeap is a min-heap of ints. type IntHeap []int func (h IntHeap) Len() int { return len(h) } func (h IntHeap) Less(i, j int) bool { return h[i] < h[j] } func (h IntHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] } func (h *IntHeap) Push(x interface{}) { // Push and Pop use pointer receivers because they modify the slice's length, // not just its contents. *h = append(*h, x.(int)) } func (h *IntHeap) Pop() interface{} { old := *h n := len(old) x := old[n-1] *h = old[0 : n-1] return x } // This example inserts several ints into an IntHeap, checks the minimum, // and removes them in order of priority. func Example_intHeap() { h := &IntHeap{2, 1, 5} heap.Init(h) heap.Push(h, 3) fmt.Printf("minimum: %d\n", (*h)[0]) for h.Len() > 0 { fmt.Printf("%d ", heap.Pop(h)) } // Output: // minimum: 1 // 1 2 3 5 } go/src/pkg/container/heap/example_pq_test.go0100644000000000000000000000471012412656737021471 0ustar00rootroot00000000000000// 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. // This example demonstrates a priority queue built using the heap interface. package heap_test import ( "container/heap" "fmt" ) // An Item is something we manage in a priority queue. type Item struct { value string // The value of the item; arbitrary. priority int // The priority of the item in the queue. // The index is needed by update and is maintained by the heap.Interface methods. index int // The index of the item in the heap. } // A PriorityQueue implements heap.Interface and holds Items. type PriorityQueue []*Item func (pq PriorityQueue) Len() int { return len(pq) } func (pq PriorityQueue) Less(i, j int) bool { // We want Pop to give us the highest, not lowest, priority so we use greater than here. return pq[i].priority > pq[j].priority } func (pq PriorityQueue) Swap(i, j int) { pq[i], pq[j] = pq[j], pq[i] pq[i].index = i pq[j].index = j } func (pq *PriorityQueue) Push(x interface{}) { n := len(*pq) item := x.(*Item) item.index = n *pq = append(*pq, item) } func (pq *PriorityQueue) Pop() interface{} { old := *pq n := len(old) item := old[n-1] item.index = -1 // for safety *pq = old[0 : n-1] return item } // update modifies the priority and value of an Item in the queue. func (pq *PriorityQueue) update(item *Item, value string, priority int) { item.value = value item.priority = priority heap.Fix(pq, item.index) } // This example creates a PriorityQueue with some items, adds and manipulates an item, // and then removes the items in priority order. func Example_priorityQueue() { // Some items and their priorities. items := map[string]int{ "banana": 3, "apple": 2, "pear": 4, } // Create a priority queue, put the items in it, and // establish the priority queue (heap) invariants. pq := make(PriorityQueue, len(items)) i := 0 for value, priority := range items { pq[i] = &Item{ value: value, priority: priority, index: i, } i++ } heap.Init(&pq) // Insert a new item and then modify its priority. item := &Item{ value: "orange", priority: 1, } heap.Push(&pq, item) pq.update(item, item.value, 5) // Take the items out; they arrive in decreasing priority order. for pq.Len() > 0 { item := heap.Pop(&pq).(*Item) fmt.Printf("%.2d:%s ", item.priority, item.value) } // Output: // 05:orange 04:pear 03:banana 02:apple } go/src/pkg/container/heap/heap.go0100644000000000000000000000631612412656737017220 0ustar00rootroot00000000000000// Copyright 2009 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 heap provides heap operations for any type that implements // heap.Interface. A heap is a tree with the property that each node is the // minimum-valued node in its subtree. // // The minimum element in the tree is the root, at index 0. // // A heap is a common way to implement a priority queue. To build a priority // queue, implement the Heap interface with the (negative) priority as the // ordering for the Less method, so Push adds items while Pop removes the // highest-priority item from the queue. The Examples include such an // implementation; the file example_pq_test.go has the complete source. // package heap import "sort" // Any type that implements heap.Interface may be used as a // min-heap with the following invariants (established after // Init has been called or if the data is empty or sorted): // // !h.Less(j, i) for 0 <= i < h.Len() and 2*i+1 <= j <= 2*i+2 and j < h.Len() // // Note that Push and Pop in this interface are for package heap's // implementation to call. To add and remove things from the heap, // use heap.Push and heap.Pop. type Interface interface { sort.Interface Push(x interface{}) // add x as element Len() Pop() interface{} // remove and return element Len() - 1. } // A heap must be initialized before any of the heap operations // can be used. Init is idempotent with respect to the heap invariants // and may be called whenever the heap invariants may have been invalidated. // Its complexity is O(n) where n = h.Len(). // func Init(h Interface) { // heapify n := h.Len() for i := n/2 - 1; i >= 0; i-- { down(h, i, n) } } // Push pushes the element x onto the heap. The complexity is // O(log(n)) where n = h.Len(). // func Push(h Interface, x interface{}) { h.Push(x) up(h, h.Len()-1) } // Pop removes the minimum element (according to Less) from the heap // and returns it. The complexity is O(log(n)) where n = h.Len(). // It is equivalent to Remove(h, 0). // func Pop(h Interface) interface{} { n := h.Len() - 1 h.Swap(0, n) down(h, 0, n) return h.Pop() } // Remove removes the element at index i from the heap. // The complexity is O(log(n)) where n = h.Len(). // func Remove(h Interface, i int) interface{} { n := h.Len() - 1 if n != i { h.Swap(i, n) down(h, i, n) up(h, i) } return h.Pop() } // Fix re-establishes the heap ordering after the element at index i has changed its value. // Changing the value of the element at index i and then calling Fix is equivalent to, // but less expensive than, calling Remove(h, i) followed by a Push of the new value. // The complexity is O(log(n)) where n = h.Len(). func Fix(h Interface, i int) { down(h, i, h.Len()) up(h, i) } func up(h Interface, j int) { for { i := (j - 1) / 2 // parent if i == j || !h.Less(j, i) { break } h.Swap(i, j) j = i } } func down(h Interface, i, n int) { for { j1 := 2*i + 1 if j1 >= n || j1 < 0 { // j1 < 0 after int overflow break } j := j1 // left child if j2 := j1 + 1; j2 < n && !h.Less(j1, j2) { j = j2 // = 2*i + 2 // right child } if !h.Less(j, i) { break } h.Swap(i, j) i = j } } go/src/pkg/container/heap/heap_test.go0100644000000000000000000000661212412656737020256 0ustar00rootroot00000000000000// Copyright 2009 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 heap import ( "math/rand" "testing" ) type myHeap []int func (h *myHeap) Less(i, j int) bool { return (*h)[i] < (*h)[j] } func (h *myHeap) Swap(i, j int) { (*h)[i], (*h)[j] = (*h)[j], (*h)[i] } func (h *myHeap) Len() int { return len(*h) } func (h *myHeap) Pop() (v interface{}) { *h, v = (*h)[:h.Len()-1], (*h)[h.Len()-1] return } func (h *myHeap) Push(v interface{}) { *h = append(*h, v.(int)) } func (h myHeap) verify(t *testing.T, i int) { n := h.Len() j1 := 2*i + 1 j2 := 2*i + 2 if j1 < n { if h.Less(j1, i) { t.Errorf("heap invariant invalidated [%d] = %d > [%d] = %d", i, h[i], j1, h[j1]) return } h.verify(t, j1) } if j2 < n { if h.Less(j2, i) { t.Errorf("heap invariant invalidated [%d] = %d > [%d] = %d", i, h[i], j1, h[j2]) return } h.verify(t, j2) } } func TestInit0(t *testing.T) { h := new(myHeap) for i := 20; i > 0; i-- { h.Push(0) // all elements are the same } Init(h) h.verify(t, 0) for i := 1; h.Len() > 0; i++ { x := Pop(h).(int) h.verify(t, 0) if x != 0 { t.Errorf("%d.th pop got %d; want %d", i, x, 0) } } } func TestInit1(t *testing.T) { h := new(myHeap) for i := 20; i > 0; i-- { h.Push(i) // all elements are different } Init(h) h.verify(t, 0) for i := 1; h.Len() > 0; i++ { x := Pop(h).(int) h.verify(t, 0) if x != i { t.Errorf("%d.th pop got %d; want %d", i, x, i) } } } func Test(t *testing.T) { h := new(myHeap) h.verify(t, 0) for i := 20; i > 10; i-- { h.Push(i) } Init(h) h.verify(t, 0) for i := 10; i > 0; i-- { Push(h, i) h.verify(t, 0) } for i := 1; h.Len() > 0; i++ { x := Pop(h).(int) if i < 20 { Push(h, 20+i) } h.verify(t, 0) if x != i { t.Errorf("%d.th pop got %d; want %d", i, x, i) } } } func TestRemove0(t *testing.T) { h := new(myHeap) for i := 0; i < 10; i++ { h.Push(i) } h.verify(t, 0) for h.Len() > 0 { i := h.Len() - 1 x := Remove(h, i).(int) if x != i { t.Errorf("Remove(%d) got %d; want %d", i, x, i) } h.verify(t, 0) } } func TestRemove1(t *testing.T) { h := new(myHeap) for i := 0; i < 10; i++ { h.Push(i) } h.verify(t, 0) for i := 0; h.Len() > 0; i++ { x := Remove(h, 0).(int) if x != i { t.Errorf("Remove(0) got %d; want %d", x, i) } h.verify(t, 0) } } func TestRemove2(t *testing.T) { N := 10 h := new(myHeap) for i := 0; i < N; i++ { h.Push(i) } h.verify(t, 0) m := make(map[int]bool) for h.Len() > 0 { m[Remove(h, (h.Len()-1)/2).(int)] = true h.verify(t, 0) } if len(m) != N { t.Errorf("len(m) = %d; want %d", len(m), N) } for i := 0; i < len(m); i++ { if !m[i] { t.Errorf("m[%d] doesn't exist", i) } } } func BenchmarkDup(b *testing.B) { const n = 10000 h := make(myHeap, n) for i := 0; i < b.N; i++ { for j := 0; j < n; j++ { Push(&h, 0) // all elements are the same } for h.Len() > 0 { Pop(&h) } } } func TestFix(t *testing.T) { h := new(myHeap) h.verify(t, 0) for i := 200; i > 0; i -= 10 { Push(h, i) } h.verify(t, 0) if (*h)[0] != 10 { t.Fatalf("Expected head to be 10, was %d", (*h)[0]) } (*h)[0] = 210 Fix(h, 0) h.verify(t, 0) for i := 100; i > 0; i-- { elem := rand.Intn(h.Len()) if i&1 == 0 { (*h)[elem] *= 2 } else { (*h)[elem] /= 2 } Fix(h, elem) h.verify(t, 0) } } go/src/pkg/container/list0040755000000000000000000000000012412656737015730 5ustar00rootroot00000000000000go/src/pkg/container/list/example_test.go0100644000000000000000000000104512412656737021025 0ustar00rootroot00000000000000// Copyright 2013 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 list_test import ( "container/list" "fmt" ) func Example() { // Create a new list and put some numbers in it. l := list.New() e4 := l.PushBack(4) e1 := l.PushFront(1) l.InsertBefore(3, e4) l.InsertAfter(2, e1) // Iterate through list and print its contents. for e := l.Front(); e != nil; e = e.Next() { fmt.Println(e.Value) } // Output: // 1 // 2 // 3 // 4 } go/src/pkg/container/list/list.go0100644000000000000000000001362612412656737017316 0ustar00rootroot00000000000000// Copyright 2009 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 list implements a doubly linked list. // // To iterate over a list (where l is a *List): // for e := l.Front(); e != nil; e = e.Next() { // // do something with e.Value // } // package list // Element is an element of a linked list. type Element struct { // Next and previous pointers in the doubly-linked list of elements. // To simplify the implementation, internally a list l is implemented // as a ring, such that &l.root is both the next element of the last // list element (l.Back()) and the previous element of the first list // element (l.Front()). next, prev *Element // The list to which this element belongs. list *List // The value stored with this element. Value interface{} } // Next returns the next list element or nil. func (e *Element) Next() *Element { if p := e.next; e.list != nil && p != &e.list.root { return p } return nil } // Prev returns the previous list element or nil. func (e *Element) Prev() *Element { if p := e.prev; e.list != nil && p != &e.list.root { return p } return nil } // List represents a doubly linked list. // The zero value for List is an empty list ready to use. type List struct { root Element // sentinel list element, only &root, root.prev, and root.next are used len int // current list length excluding (this) sentinel element } // Init initializes or clears list l. func (l *List) Init() *List { l.root.next = &l.root l.root.prev = &l.root l.len = 0 return l } // New returns an initialized list. func New() *List { return new(List).Init() } // Len returns the number of elements of list l. // The complexity is O(1). func (l *List) Len() int { return l.len } // Front returns the first element of list l or nil. func (l *List) Front() *Element { if l.len == 0 { return nil } return l.root.next } // Back returns the last element of list l or nil. func (l *List) Back() *Element { if l.len == 0 { return nil } return l.root.prev } // lazyInit lazily initializes a zero List value. func (l *List) lazyInit() { if l.root.next == nil { l.Init() } } // insert inserts e after at, increments l.len, and returns e. func (l *List) insert(e, at *Element) *Element { n := at.next at.next = e e.prev = at e.next = n n.prev = e e.list = l l.len++ return e } // insertValue is a convenience wrapper for insert(&Element{Value: v}, at). func (l *List) insertValue(v interface{}, at *Element) *Element { return l.insert(&Element{Value: v}, at) } // remove removes e from its list, decrements l.len, and returns e. func (l *List) remove(e *Element) *Element { e.prev.next = e.next e.next.prev = e.prev e.next = nil // avoid memory leaks e.prev = nil // avoid memory leaks e.list = nil l.len-- return e } // Remove removes e from l if e is an element of list l. // It returns the element value e.Value. func (l *List) Remove(e *Element) interface{} { if e.list == l { // if e.list == l, l must have been initialized when e was inserted // in l or l == nil (e is a zero Element) and l.remove will crash l.remove(e) } return e.Value } // PushFront inserts a new element e with value v at the front of list l and returns e. func (l *List) PushFront(v interface{}) *Element { l.lazyInit() return l.insertValue(v, &l.root) } // PushBack inserts a new element e with value v at the back of list l and returns e. func (l *List) PushBack(v interface{}) *Element { l.lazyInit() return l.insertValue(v, l.root.prev) } // InsertBefore inserts a new element e with value v immediately before mark and returns e. // If mark is not an element of l, the list is not modified. func (l *List) InsertBefore(v interface{}, mark *Element) *Element { if mark.list != l { return nil } // see comment in List.Remove about initialization of l return l.insertValue(v, mark.prev) } // InsertAfter inserts a new element e with value v immediately after mark and returns e. // If mark is not an element of l, the list is not modified. func (l *List) InsertAfter(v interface{}, mark *Element) *Element { if mark.list != l { return nil } // see comment in List.Remove about initialization of l return l.insertValue(v, mark) } // MoveToFront moves element e to the front of list l. // If e is not an element of l, the list is not modified. func (l *List) MoveToFront(e *Element) { if e.list != l || l.root.next == e { return } // see comment in List.Remove about initialization of l l.insert(l.remove(e), &l.root) } // MoveToBack moves element e to the back of list l. // If e is not an element of l, the list is not modified. func (l *List) MoveToBack(e *Element) { if e.list != l || l.root.prev == e { return } // see comment in List.Remove about initialization of l l.insert(l.remove(e), l.root.prev) } // MoveBefore moves element e to its new position before mark. // If e or mark is not an element of l, or e == mark, the list is not modified. func (l *List) MoveBefore(e, mark *Element) { if e.list != l || e == mark || mark.list != l { return } l.insert(l.remove(e), mark.prev) } // MoveAfter moves element e to its new position after mark. // If e or mark is not an element of l, or e == mark, the list is not modified. func (l *List) MoveAfter(e, mark *Element) { if e.list != l || e == mark || mark.list != l { return } l.insert(l.remove(e), mark) } // PushBackList inserts a copy of an other list at the back of list l. // The lists l and other may be the same. func (l *List) PushBackList(other *List) { l.lazyInit() for i, e := other.Len(), other.Front(); i > 0; i, e = i-1, e.Next() { l.insertValue(e.Value, l.root.prev) } } // PushFrontList inserts a copy of an other list at the front of list l. // The lists l and other may be the same. func (l *List) PushFrontList(other *List) { l.lazyInit() for i, e := other.Len(), other.Back(); i > 0; i, e = i-1, e.Prev() { l.insertValue(e.Value, &l.root) } } go/src/pkg/container/list/list_test.go0100644000000000000000000001767012412656737020360 0ustar00rootroot00000000000000// Copyright 2009 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 list import "testing" func checkListLen(t *testing.T, l *List, len int) bool { if n := l.Len(); n != len { t.Errorf("l.Len() = %d, want %d", n, len) return false } return true } func checkListPointers(t *testing.T, l *List, es []*Element) { root := &l.root if !checkListLen(t, l, len(es)) { return } // zero length lists must be the zero value or properly initialized (sentinel circle) if len(es) == 0 { if l.root.next != nil && l.root.next != root || l.root.prev != nil && l.root.prev != root { t.Errorf("l.root.next = %p, l.root.prev = %p; both should both be nil or %p", l.root.next, l.root.prev, root) } return } // len(es) > 0 // check internal and external prev/next connections for i, e := range es { prev := root Prev := (*Element)(nil) if i > 0 { prev = es[i-1] Prev = prev } if p := e.prev; p != prev { t.Errorf("elt[%d](%p).prev = %p, want %p", i, e, p, prev) } if p := e.Prev(); p != Prev { t.Errorf("elt[%d](%p).Prev() = %p, want %p", i, e, p, Prev) } next := root Next := (*Element)(nil) if i < len(es)-1 { next = es[i+1] Next = next } if n := e.next; n != next { t.Errorf("elt[%d](%p).next = %p, want %p", i, e, n, next) } if n := e.Next(); n != Next { t.Errorf("elt[%d](%p).Next() = %p, want %p", i, e, n, Next) } } } func TestList(t *testing.T) { l := New() checkListPointers(t, l, []*Element{}) // Single element list e := l.PushFront("a") checkListPointers(t, l, []*Element{e}) l.MoveToFront(e) checkListPointers(t, l, []*Element{e}) l.MoveToBack(e) checkListPointers(t, l, []*Element{e}) l.Remove(e) checkListPointers(t, l, []*Element{}) // Bigger list e2 := l.PushFront(2) e1 := l.PushFront(1) e3 := l.PushBack(3) e4 := l.PushBack("banana") checkListPointers(t, l, []*Element{e1, e2, e3, e4}) l.Remove(e2) checkListPointers(t, l, []*Element{e1, e3, e4}) l.MoveToFront(e3) // move from middle checkListPointers(t, l, []*Element{e3, e1, e4}) l.MoveToFront(e1) l.MoveToBack(e3) // move from middle checkListPointers(t, l, []*Element{e1, e4, e3}) l.MoveToFront(e3) // move from back checkListPointers(t, l, []*Element{e3, e1, e4}) l.MoveToFront(e3) // should be no-op checkListPointers(t, l, []*Element{e3, e1, e4}) l.MoveToBack(e3) // move from front checkListPointers(t, l, []*Element{e1, e4, e3}) l.MoveToBack(e3) // should be no-op checkListPointers(t, l, []*Element{e1, e4, e3}) e2 = l.InsertBefore(2, e1) // insert before front checkListPointers(t, l, []*Element{e2, e1, e4, e3}) l.Remove(e2) e2 = l.InsertBefore(2, e4) // insert before middle checkListPointers(t, l, []*Element{e1, e2, e4, e3}) l.Remove(e2) e2 = l.InsertBefore(2, e3) // insert before back checkListPointers(t, l, []*Element{e1, e4, e2, e3}) l.Remove(e2) e2 = l.InsertAfter(2, e1) // insert after front checkListPointers(t, l, []*Element{e1, e2, e4, e3}) l.Remove(e2) e2 = l.InsertAfter(2, e4) // insert after middle checkListPointers(t, l, []*Element{e1, e4, e2, e3}) l.Remove(e2) e2 = l.InsertAfter(2, e3) // insert after back checkListPointers(t, l, []*Element{e1, e4, e3, e2}) l.Remove(e2) // Check standard iteration. sum := 0 for e := l.Front(); e != nil; e = e.Next() { if i, ok := e.Value.(int); ok { sum += i } } if sum != 4 { t.Errorf("sum over l = %d, want 4", sum) } // Clear all elements by iterating var next *Element for e := l.Front(); e != nil; e = next { next = e.Next() l.Remove(e) } checkListPointers(t, l, []*Element{}) } func checkList(t *testing.T, l *List, es []interface{}) { if !checkListLen(t, l, len(es)) { return } i := 0 for e := l.Front(); e != nil; e = e.Next() { le := e.Value.(int) if le != es[i] { t.Errorf("elt[%d].Value = %v, want %v", i, le, es[i]) } i++ } } func TestExtending(t *testing.T) { l1 := New() l2 := New() l1.PushBack(1) l1.PushBack(2) l1.PushBack(3) l2.PushBack(4) l2.PushBack(5) l3 := New() l3.PushBackList(l1) checkList(t, l3, []interface{}{1, 2, 3}) l3.PushBackList(l2) checkList(t, l3, []interface{}{1, 2, 3, 4, 5}) l3 = New() l3.PushFrontList(l2) checkList(t, l3, []interface{}{4, 5}) l3.PushFrontList(l1) checkList(t, l3, []interface{}{1, 2, 3, 4, 5}) checkList(t, l1, []interface{}{1, 2, 3}) checkList(t, l2, []interface{}{4, 5}) l3 = New() l3.PushBackList(l1) checkList(t, l3, []interface{}{1, 2, 3}) l3.PushBackList(l3) checkList(t, l3, []interface{}{1, 2, 3, 1, 2, 3}) l3 = New() l3.PushFrontList(l1) checkList(t, l3, []interface{}{1, 2, 3}) l3.PushFrontList(l3) checkList(t, l3, []interface{}{1, 2, 3, 1, 2, 3}) l3 = New() l1.PushBackList(l3) checkList(t, l1, []interface{}{1, 2, 3}) l1.PushFrontList(l3) checkList(t, l1, []interface{}{1, 2, 3}) } func TestRemove(t *testing.T) { l := New() e1 := l.PushBack(1) e2 := l.PushBack(2) checkListPointers(t, l, []*Element{e1, e2}) e := l.Front() l.Remove(e) checkListPointers(t, l, []*Element{e2}) l.Remove(e) checkListPointers(t, l, []*Element{e2}) } func TestIssue4103(t *testing.T) { l1 := New() l1.PushBack(1) l1.PushBack(2) l2 := New() l2.PushBack(3) l2.PushBack(4) e := l1.Front() l2.Remove(e) // l2 should not change because e is not an element of l2 if n := l2.Len(); n != 2 { t.Errorf("l2.Len() = %d, want 2", n) } l1.InsertBefore(8, e) if n := l1.Len(); n != 3 { t.Errorf("l1.Len() = %d, want 3", n) } } func TestIssue6349(t *testing.T) { l := New() l.PushBack(1) l.PushBack(2) e := l.Front() l.Remove(e) if e.Value != 1 { t.Errorf("e.value = %d, want 1", e.Value) } if e.Next() != nil { t.Errorf("e.Next() != nil") } if e.Prev() != nil { t.Errorf("e.Prev() != nil") } } func TestMove(t *testing.T) { l := New() e1 := l.PushBack(1) e2 := l.PushBack(2) e3 := l.PushBack(3) e4 := l.PushBack(4) l.MoveAfter(e3, e3) checkListPointers(t, l, []*Element{e1, e2, e3, e4}) l.MoveBefore(e2, e2) checkListPointers(t, l, []*Element{e1, e2, e3, e4}) l.MoveAfter(e3, e2) checkListPointers(t, l, []*Element{e1, e2, e3, e4}) l.MoveBefore(e2, e3) checkListPointers(t, l, []*Element{e1, e2, e3, e4}) l.MoveBefore(e2, e4) checkListPointers(t, l, []*Element{e1, e3, e2, e4}) e1, e2, e3, e4 = e1, e3, e2, e4 l.MoveBefore(e4, e1) checkListPointers(t, l, []*Element{e4, e1, e2, e3}) e1, e2, e3, e4 = e4, e1, e2, e3 l.MoveAfter(e4, e1) checkListPointers(t, l, []*Element{e1, e4, e2, e3}) e1, e2, e3, e4 = e1, e4, e2, e3 l.MoveAfter(e2, e3) checkListPointers(t, l, []*Element{e1, e3, e2, e4}) e1, e2, e3, e4 = e1, e3, e2, e4 } // Test PushFront, PushBack, PushFrontList, PushBackList with uninitialized List func TestZeroList(t *testing.T) { var l1 = new(List) l1.PushFront(1) checkList(t, l1, []interface{}{1}) var l2 = new(List) l2.PushBack(1) checkList(t, l2, []interface{}{1}) var l3 = new(List) l3.PushFrontList(l1) checkList(t, l3, []interface{}{1}) var l4 = new(List) l4.PushBackList(l2) checkList(t, l4, []interface{}{1}) } // Test that a list l is not modified when calling InsertBefore with a mark that is not an element of l. func TestInsertBeforeUnknownMark(t *testing.T) { var l List l.PushBack(1) l.PushBack(2) l.PushBack(3) l.InsertBefore(1, new(Element)) checkList(t, &l, []interface{}{1, 2, 3}) } // Test that a list l is not modified when calling InsertAfter with a mark that is not an element of l. func TestInsertAfterUnknownMark(t *testing.T) { var l List l.PushBack(1) l.PushBack(2) l.PushBack(3) l.InsertAfter(1, new(Element)) checkList(t, &l, []interface{}{1, 2, 3}) } // Test that a list l is not modified when calling MoveAfter or MoveBefore with a mark that is not an element of l. func TestMoveUnkownMark(t *testing.T) { var l1 List e1 := l1.PushBack(1) var l2 List e2 := l2.PushBack(2) l1.MoveAfter(e1, e2) checkList(t, &l1, []interface{}{1}) checkList(t, &l2, []interface{}{2}) l1.MoveBefore(e1, e2) checkList(t, &l1, []interface{}{1}) checkList(t, &l2, []interface{}{2}) } go/src/pkg/container/ring0040755000000000000000000000000012412656737015714 5ustar00rootroot00000000000000go/src/pkg/container/ring/ring.go0100644000000000000000000000626412412656737017266 0ustar00rootroot00000000000000// Copyright 2009 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 ring implements operations on circular lists. package ring // A Ring is an element of a circular list, or ring. // Rings do not have a beginning or end; a pointer to any ring element // serves as reference to the entire ring. Empty rings are represented // as nil Ring pointers. The zero value for a Ring is a one-element // ring with a nil Value. // type Ring struct { next, prev *Ring Value interface{} // for use by client; untouched by this library } func (r *Ring) init() *Ring { r.next = r r.prev = r return r } // Next returns the next ring element. r must not be empty. func (r *Ring) Next() *Ring { if r.next == nil { return r.init() } return r.next } // Prev returns the previous ring element. r must not be empty. func (r *Ring) Prev() *Ring { if r.next == nil { return r.init() } return r.prev } // Move moves n % r.Len() elements backward (n < 0) or forward (n >= 0) // in the ring and returns that ring element. r must not be empty. // func (r *Ring) Move(n int) *Ring { if r.next == nil { return r.init() } switch { case n < 0: for ; n < 0; n++ { r = r.prev } case n > 0: for ; n > 0; n-- { r = r.next } } return r } // New creates a ring of n elements. func New(n int) *Ring { if n <= 0 { return nil } r := new(Ring) p := r for i := 1; i < n; i++ { p.next = &Ring{prev: p} p = p.next } p.next = r r.prev = p return r } // Link connects ring r with ring s such that r.Next() // becomes s and returns the original value for r.Next(). // r must not be empty. // // If r and s point to the same ring, linking // them removes the elements between r and s from the ring. // The removed elements form a subring and the result is a // reference to that subring (if no elements were removed, // the result is still the original value for r.Next(), // and not nil). // // If r and s point to different rings, linking // them creates a single ring with the elements of s inserted // after r. The result points to the element following the // last element of s after insertion. // func (r *Ring) Link(s *Ring) *Ring { n := r.Next() if s != nil { p := s.Prev() // Note: Cannot use multiple assignment because // evaluation order of LHS is not specified. r.next = s s.prev = r n.prev = p p.next = n } return n } // Unlink removes n % r.Len() elements from the ring r, starting // at r.Next(). If n % r.Len() == 0, r remains unchanged. // The result is the removed subring. r must not be empty. // func (r *Ring) Unlink(n int) *Ring { if n <= 0 { return nil } return r.Link(r.Move(n + 1)) } // Len computes the number of elements in ring r. // It executes in time proportional to the number of elements. // func (r *Ring) Len() int { n := 0 if r != nil { n = 1 for p := r.Next(); p != r; p = p.next { n++ } } return n } // Do calls function f on each element of the ring, in forward order. // The behavior of Do is undefined if f changes *r. func (r *Ring) Do(f func(interface{})) { if r != nil { f(r.Value) for p := r.Next(); p != r; p = p.next { f(p.Value) } } } go/src/pkg/container/ring/ring_test.go0100644000000000000000000000745212412656737020325 0ustar00rootroot00000000000000// Copyright 2009 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 ring import ( "fmt" "testing" ) // For debugging - keep around. func dump(r *Ring) { if r == nil { fmt.Println("empty") return } i, n := 0, r.Len() for p := r; i < n; p = p.next { fmt.Printf("%4d: %p = {<- %p | %p ->}\n", i, p, p.prev, p.next) i++ } fmt.Println() } func verify(t *testing.T, r *Ring, N int, sum int) { // Len n := r.Len() if n != N { t.Errorf("r.Len() == %d; expected %d", n, N) } // iteration n = 0 s := 0 r.Do(func(p interface{}) { n++ if p != nil { s += p.(int) } }) if n != N { t.Errorf("number of forward iterations == %d; expected %d", n, N) } if sum >= 0 && s != sum { t.Errorf("forward ring sum = %d; expected %d", s, sum) } if r == nil { return } // connections if r.next != nil { var p *Ring // previous element for q := r; p == nil || q != r; q = q.next { if p != nil && p != q.prev { t.Errorf("prev = %p, expected q.prev = %p\n", p, q.prev) } p = q } if p != r.prev { t.Errorf("prev = %p, expected r.prev = %p\n", p, r.prev) } } // Next, Prev if r.Next() != r.next { t.Errorf("r.Next() != r.next") } if r.Prev() != r.prev { t.Errorf("r.Prev() != r.prev") } // Move if r.Move(0) != r { t.Errorf("r.Move(0) != r") } if r.Move(N) != r { t.Errorf("r.Move(%d) != r", N) } if r.Move(-N) != r { t.Errorf("r.Move(%d) != r", -N) } for i := 0; i < 10; i++ { ni := N + i mi := ni % N if r.Move(ni) != r.Move(mi) { t.Errorf("r.Move(%d) != r.Move(%d)", ni, mi) } if r.Move(-ni) != r.Move(-mi) { t.Errorf("r.Move(%d) != r.Move(%d)", -ni, -mi) } } } func TestCornerCases(t *testing.T) { var ( r0 *Ring r1 Ring ) // Basics verify(t, r0, 0, 0) verify(t, &r1, 1, 0) // Insert r1.Link(r0) verify(t, r0, 0, 0) verify(t, &r1, 1, 0) // Insert r1.Link(r0) verify(t, r0, 0, 0) verify(t, &r1, 1, 0) // Unlink r1.Unlink(0) verify(t, &r1, 1, 0) } func makeN(n int) *Ring { r := New(n) for i := 1; i <= n; i++ { r.Value = i r = r.Next() } return r } func sumN(n int) int { return (n*n + n) / 2 } func TestNew(t *testing.T) { for i := 0; i < 10; i++ { r := New(i) verify(t, r, i, -1) } for i := 0; i < 10; i++ { r := makeN(i) verify(t, r, i, sumN(i)) } } func TestLink1(t *testing.T) { r1a := makeN(1) var r1b Ring r2a := r1a.Link(&r1b) verify(t, r2a, 2, 1) if r2a != r1a { t.Errorf("a) 2-element link failed") } r2b := r2a.Link(r2a.Next()) verify(t, r2b, 2, 1) if r2b != r2a.Next() { t.Errorf("b) 2-element link failed") } r1c := r2b.Link(r2b) verify(t, r1c, 1, 1) verify(t, r2b, 1, 0) } func TestLink2(t *testing.T) { var r0 *Ring r1a := &Ring{Value: 42} r1b := &Ring{Value: 77} r10 := makeN(10) r1a.Link(r0) verify(t, r1a, 1, 42) r1a.Link(r1b) verify(t, r1a, 2, 42+77) r10.Link(r0) verify(t, r10, 10, sumN(10)) r10.Link(r1a) verify(t, r10, 12, sumN(10)+42+77) } func TestLink3(t *testing.T) { var r Ring n := 1 for i := 1; i < 100; i++ { n += i verify(t, r.Link(New(i)), n, -1) } } func TestUnlink(t *testing.T) { r10 := makeN(10) s10 := r10.Move(6) sum10 := sumN(10) verify(t, r10, 10, sum10) verify(t, s10, 10, sum10) r0 := r10.Unlink(0) verify(t, r0, 0, 0) r1 := r10.Unlink(1) verify(t, r1, 1, 2) verify(t, r10, 9, sum10-2) r9 := r10.Unlink(9) verify(t, r9, 9, sum10-2) verify(t, r10, 9, sum10-2) } func TestLinkUnlink(t *testing.T) { for i := 1; i < 4; i++ { ri := New(i) for j := 0; j < i; j++ { rj := ri.Unlink(j) verify(t, rj, j, -1) verify(t, ri, i-j, -1) ri.Link(rj) verify(t, ri, i, -1) } } } // Test that calling Move() on an empty Ring initializes it. func TestMoveEmptyRing(t *testing.T) { var r Ring r.Move(1) verify(t, &r, 1, 0) } go/src/pkg/crypto0040755000000000000000000000000012412656737014313 5ustar00rootroot00000000000000go/src/pkg/crypto/aes0040755000000000000000000000000012412656737015063 5ustar00rootroot00000000000000go/src/pkg/crypto/aes/aes_test.go0100644000000000000000000003032212412656737017275 0ustar00rootroot00000000000000// Copyright 2009 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 aes import ( "testing" ) // See const.go for overview of math here. // Test that powx is initialized correctly. // (Can adapt this code to generate it too.) func TestPowx(t *testing.T) { p := 1 for i := 0; i < len(powx); i++ { if powx[i] != byte(p) { t.Errorf("powx[%d] = %#x, want %#x", i, powx[i], p) } p <<= 1 if p&0x100 != 0 { p ^= poly } } } // Multiply b and c as GF(2) polynomials modulo poly func mul(b, c uint32) uint32 { i := b j := c s := uint32(0) for k := uint32(1); k < 0x100 && j != 0; k <<= 1 { // Invariant: k == 1<>8 } } } // Test that decryption tables are correct. // (Can adapt this code to generate them too.) func TestTd(t *testing.T) { for i := 0; i < 256; i++ { s := uint32(sbox1[i]) s9 := mul(s, 0x9) sb := mul(s, 0xb) sd := mul(s, 0xd) se := mul(s, 0xe) w := se<<24 | s9<<16 | sd<<8 | sb td := [][256]uint32{td0, td1, td2, td3} for j := 0; j < 4; j++ { if x := td[j][i]; x != w { t.Fatalf("td[%d][%d] = %#x, want %#x", j, i, x, w) } w = w<<24 | w>>8 } } } // Test vectors are from FIPS 197: // http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf // Appendix A of FIPS 197: Key expansion examples type KeyTest struct { key []byte enc []uint32 dec []uint32 // decryption expansion; not in FIPS 197, computed from C implementation. } var keyTests = []KeyTest{ { // A.1. Expansion of a 128-bit Cipher Key []byte{0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c}, []uint32{ 0x2b7e1516, 0x28aed2a6, 0xabf71588, 0x09cf4f3c, 0xa0fafe17, 0x88542cb1, 0x23a33939, 0x2a6c7605, 0xf2c295f2, 0x7a96b943, 0x5935807a, 0x7359f67f, 0x3d80477d, 0x4716fe3e, 0x1e237e44, 0x6d7a883b, 0xef44a541, 0xa8525b7f, 0xb671253b, 0xdb0bad00, 0xd4d1c6f8, 0x7c839d87, 0xcaf2b8bc, 0x11f915bc, 0x6d88a37a, 0x110b3efd, 0xdbf98641, 0xca0093fd, 0x4e54f70e, 0x5f5fc9f3, 0x84a64fb2, 0x4ea6dc4f, 0xead27321, 0xb58dbad2, 0x312bf560, 0x7f8d292f, 0xac7766f3, 0x19fadc21, 0x28d12941, 0x575c006e, 0xd014f9a8, 0xc9ee2589, 0xe13f0cc8, 0xb6630ca6, }, []uint32{ 0xd014f9a8, 0xc9ee2589, 0xe13f0cc8, 0xb6630ca6, 0xc7b5a63, 0x1319eafe, 0xb0398890, 0x664cfbb4, 0xdf7d925a, 0x1f62b09d, 0xa320626e, 0xd6757324, 0x12c07647, 0xc01f22c7, 0xbc42d2f3, 0x7555114a, 0x6efcd876, 0xd2df5480, 0x7c5df034, 0xc917c3b9, 0x6ea30afc, 0xbc238cf6, 0xae82a4b4, 0xb54a338d, 0x90884413, 0xd280860a, 0x12a12842, 0x1bc89739, 0x7c1f13f7, 0x4208c219, 0xc021ae48, 0x969bf7b, 0xcc7505eb, 0x3e17d1ee, 0x82296c51, 0xc9481133, 0x2b3708a7, 0xf262d405, 0xbc3ebdbf, 0x4b617d62, 0x2b7e1516, 0x28aed2a6, 0xabf71588, 0x9cf4f3c, }, }, { // A.2. Expansion of a 192-bit Cipher Key []byte{ 0x8e, 0x73, 0xb0, 0xf7, 0xda, 0x0e, 0x64, 0x52, 0xc8, 0x10, 0xf3, 0x2b, 0x80, 0x90, 0x79, 0xe5, 0x62, 0xf8, 0xea, 0xd2, 0x52, 0x2c, 0x6b, 0x7b, }, []uint32{ 0x8e73b0f7, 0xda0e6452, 0xc810f32b, 0x809079e5, 0x62f8ead2, 0x522c6b7b, 0xfe0c91f7, 0x2402f5a5, 0xec12068e, 0x6c827f6b, 0x0e7a95b9, 0x5c56fec2, 0x4db7b4bd, 0x69b54118, 0x85a74796, 0xe92538fd, 0xe75fad44, 0xbb095386, 0x485af057, 0x21efb14f, 0xa448f6d9, 0x4d6dce24, 0xaa326360, 0x113b30e6, 0xa25e7ed5, 0x83b1cf9a, 0x27f93943, 0x6a94f767, 0xc0a69407, 0xd19da4e1, 0xec1786eb, 0x6fa64971, 0x485f7032, 0x22cb8755, 0xe26d1352, 0x33f0b7b3, 0x40beeb28, 0x2f18a259, 0x6747d26b, 0x458c553e, 0xa7e1466c, 0x9411f1df, 0x821f750a, 0xad07d753, 0xca400538, 0x8fcc5006, 0x282d166a, 0xbc3ce7b5, 0xe98ba06f, 0x448c773c, 0x8ecc7204, 0x01002202, }, nil, }, { // A.3. Expansion of a 256-bit Cipher Key []byte{ 0x60, 0x3d, 0xeb, 0x10, 0x15, 0xca, 0x71, 0xbe, 0x2b, 0x73, 0xae, 0xf0, 0x85, 0x7d, 0x77, 0x81, 0x1f, 0x35, 0x2c, 0x07, 0x3b, 0x61, 0x08, 0xd7, 0x2d, 0x98, 0x10, 0xa3, 0x09, 0x14, 0xdf, 0xf4, }, []uint32{ 0x603deb10, 0x15ca71be, 0x2b73aef0, 0x857d7781, 0x1f352c07, 0x3b6108d7, 0x2d9810a3, 0x0914dff4, 0x9ba35411, 0x8e6925af, 0xa51a8b5f, 0x2067fcde, 0xa8b09c1a, 0x93d194cd, 0xbe49846e, 0xb75d5b9a, 0xd59aecb8, 0x5bf3c917, 0xfee94248, 0xde8ebe96, 0xb5a9328a, 0x2678a647, 0x98312229, 0x2f6c79b3, 0x812c81ad, 0xdadf48ba, 0x24360af2, 0xfab8b464, 0x98c5bfc9, 0xbebd198e, 0x268c3ba7, 0x09e04214, 0x68007bac, 0xb2df3316, 0x96e939e4, 0x6c518d80, 0xc814e204, 0x76a9fb8a, 0x5025c02d, 0x59c58239, 0xde136967, 0x6ccc5a71, 0xfa256395, 0x9674ee15, 0x5886ca5d, 0x2e2f31d7, 0x7e0af1fa, 0x27cf73c3, 0x749c47ab, 0x18501dda, 0xe2757e4f, 0x7401905a, 0xcafaaae3, 0xe4d59b34, 0x9adf6ace, 0xbd10190d, 0xfe4890d1, 0xe6188d0b, 0x046df344, 0x706c631e, }, nil, }, } // Test key expansion against FIPS 197 examples. func TestExpandKey(t *testing.T) { L: for i, tt := range keyTests { enc := make([]uint32, len(tt.enc)) var dec []uint32 if tt.dec != nil { dec = make([]uint32, len(tt.dec)) } // This test could only test Go version of expandKey because asm // version might use different memory layout for expanded keys // This is OK because we don't expose expanded keys to the outside expandKeyGo(tt.key, enc, dec) for j, v := range enc { if v != tt.enc[j] { t.Errorf("key %d: enc[%d] = %#x, want %#x", i, j, v, tt.enc[j]) continue L } } if dec != nil { for j, v := range dec { if v != tt.dec[j] { t.Errorf("key %d: dec[%d] = %#x, want %#x", i, j, v, tt.dec[j]) continue L } } } } } // Appendix B, C of FIPS 197: Cipher examples, Example vectors. type CryptTest struct { key []byte in []byte out []byte } var encryptTests = []CryptTest{ { // Appendix B. []byte{0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c}, []byte{0x32, 0x43, 0xf6, 0xa8, 0x88, 0x5a, 0x30, 0x8d, 0x31, 0x31, 0x98, 0xa2, 0xe0, 0x37, 0x07, 0x34}, []byte{0x39, 0x25, 0x84, 0x1d, 0x02, 0xdc, 0x09, 0xfb, 0xdc, 0x11, 0x85, 0x97, 0x19, 0x6a, 0x0b, 0x32}, }, { // Appendix C.1. AES-128 []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}, []byte{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, []byte{0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30, 0xd8, 0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a}, }, { // Appendix C.2. AES-192 []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, }, []byte{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, []byte{0xdd, 0xa9, 0x7c, 0xa4, 0x86, 0x4c, 0xdf, 0xe0, 0x6e, 0xaf, 0x70, 0xa0, 0xec, 0x0d, 0x71, 0x91}, }, { // Appendix C.3. AES-256 []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, }, []byte{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, []byte{0x8e, 0xa2, 0xb7, 0xca, 0x51, 0x67, 0x45, 0xbf, 0xea, 0xfc, 0x49, 0x90, 0x4b, 0x49, 0x60, 0x89}, }, } // Test encryptBlock against FIPS 197 examples. func TestEncryptBlock(t *testing.T) { for i, tt := range encryptTests { n := len(tt.key) + 28 enc := make([]uint32, n) dec := make([]uint32, n) expandKey(tt.key, enc, dec) out := make([]byte, len(tt.in)) encryptBlock(enc, out, tt.in) for j, v := range out { if v != tt.out[j] { t.Errorf("encryptBlock %d: out[%d] = %#x, want %#x", i, j, v, tt.out[j]) break } } } } // Test decryptBlock against FIPS 197 examples. func TestDecryptBlock(t *testing.T) { for i, tt := range encryptTests { n := len(tt.key) + 28 enc := make([]uint32, n) dec := make([]uint32, n) expandKey(tt.key, enc, dec) plain := make([]byte, len(tt.in)) decryptBlock(dec, plain, tt.out) for j, v := range plain { if v != tt.in[j] { t.Errorf("decryptBlock %d: plain[%d] = %#x, want %#x", i, j, v, tt.in[j]) break } } } } // Test Cipher Encrypt method against FIPS 197 examples. func TestCipherEncrypt(t *testing.T) { for i, tt := range encryptTests { c, err := NewCipher(tt.key) if err != nil { t.Errorf("NewCipher(%d bytes) = %s", len(tt.key), err) continue } out := make([]byte, len(tt.in)) c.Encrypt(out, tt.in) for j, v := range out { if v != tt.out[j] { t.Errorf("Cipher.Encrypt %d: out[%d] = %#x, want %#x", i, j, v, tt.out[j]) break } } } } // Test Cipher Decrypt against FIPS 197 examples. func TestCipherDecrypt(t *testing.T) { for i, tt := range encryptTests { c, err := NewCipher(tt.key) if err != nil { t.Errorf("NewCipher(%d bytes) = %s", len(tt.key), err) continue } plain := make([]byte, len(tt.in)) c.Decrypt(plain, tt.out) for j, v := range plain { if v != tt.in[j] { t.Errorf("decryptBlock %d: plain[%d] = %#x, want %#x", i, j, v, tt.in[j]) break } } } } // Test short input/output. // Assembly used to not notice. // See issue 7928. func TestShortBlocks(t *testing.T) { bytes := func(n int) []byte { return make([]byte, n) } c, _ := NewCipher(bytes(16)) mustPanic(t, "crypto/aes: input not full block", func() { c.Encrypt(bytes(1), bytes(1)) }) mustPanic(t, "crypto/aes: input not full block", func() { c.Decrypt(bytes(1), bytes(1)) }) mustPanic(t, "crypto/aes: input not full block", func() { c.Encrypt(bytes(100), bytes(1)) }) mustPanic(t, "crypto/aes: input not full block", func() { c.Decrypt(bytes(100), bytes(1)) }) mustPanic(t, "crypto/aes: output not full block", func() { c.Encrypt(bytes(1), bytes(100)) }) mustPanic(t, "crypto/aes: output not full block", func() { c.Decrypt(bytes(1), bytes(100)) }) } func mustPanic(t *testing.T, msg string, f func()) { defer func() { err := recover() if err == nil { t.Errorf("function did not panic, wanted %q", msg) } else if err != msg { t.Errorf("got panic %v, wanted %q", err, msg) } }() f() } func BenchmarkEncrypt(b *testing.B) { tt := encryptTests[0] c, err := NewCipher(tt.key) if err != nil { b.Fatal("NewCipher:", err) } out := make([]byte, len(tt.in)) b.SetBytes(int64(len(out))) b.ResetTimer() for i := 0; i < b.N; i++ { c.Encrypt(out, tt.in) } } func BenchmarkDecrypt(b *testing.B) { tt := encryptTests[0] c, err := NewCipher(tt.key) if err != nil { b.Fatal("NewCipher:", err) } out := make([]byte, len(tt.out)) b.SetBytes(int64(len(out))) b.ResetTimer() for i := 0; i < b.N; i++ { c.Decrypt(out, tt.out) } } func BenchmarkExpand(b *testing.B) { tt := encryptTests[0] n := len(tt.key) + 28 c := &aesCipher{make([]uint32, n), make([]uint32, n)} b.ResetTimer() for i := 0; i < b.N; i++ { expandKey(tt.key, c.enc, c.dec) } } go/src/pkg/crypto/aes/asm_amd64.s0100644000000000000000000001356212412656737017105 0ustar00rootroot00000000000000// 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. #include "../../../cmd/ld/textflag.h" // func hasAsm() bool // returns whether AES-NI is supported TEXT ·hasAsm(SB),NOSPLIT,$0 XORQ AX, AX INCL AX CPUID SHRQ $25, CX ANDQ $1, CX MOVB CX, ret+0(FP) RET // func encryptBlockAsm(nr int, xk *uint32, dst, src *byte) TEXT ·encryptBlockAsm(SB),NOSPLIT,$0 MOVQ nr+0(FP), CX MOVQ xk+8(FP), AX MOVQ dst+16(FP), DX MOVQ src+24(FP), BX MOVUPS 0(AX), X1 MOVUPS 0(BX), X0 ADDQ $16, AX PXOR X1, X0 SUBQ $12, CX JE Lenc196 JB Lenc128 Lenc256: MOVUPS 0(AX), X1 AESENC X1, X0 MOVUPS 16(AX), X1 AESENC X1, X0 ADDQ $32, AX Lenc196: MOVUPS 0(AX), X1 AESENC X1, X0 MOVUPS 16(AX), X1 AESENC X1, X0 ADDQ $32, AX Lenc128: MOVUPS 0(AX), X1 AESENC X1, X0 MOVUPS 16(AX), X1 AESENC X1, X0 MOVUPS 32(AX), X1 AESENC X1, X0 MOVUPS 48(AX), X1 AESENC X1, X0 MOVUPS 64(AX), X1 AESENC X1, X0 MOVUPS 80(AX), X1 AESENC X1, X0 MOVUPS 96(AX), X1 AESENC X1, X0 MOVUPS 112(AX), X1 AESENC X1, X0 MOVUPS 128(AX), X1 AESENC X1, X0 MOVUPS 144(AX), X1 AESENCLAST X1, X0 MOVUPS X0, 0(DX) RET // func decryptBlockAsm(nr int, xk *uint32, dst, src *byte) TEXT ·decryptBlockAsm(SB),NOSPLIT,$0 MOVQ nr+0(FP), CX MOVQ xk+8(FP), AX MOVQ dst+16(FP), DX MOVQ src+24(FP), BX MOVUPS 0(AX), X1 MOVUPS 0(BX), X0 ADDQ $16, AX PXOR X1, X0 SUBQ $12, CX JE Ldec196 JB Ldec128 Ldec256: MOVUPS 0(AX), X1 AESDEC X1, X0 MOVUPS 16(AX), X1 AESDEC X1, X0 ADDQ $32, AX Ldec196: MOVUPS 0(AX), X1 AESDEC X1, X0 MOVUPS 16(AX), X1 AESDEC X1, X0 ADDQ $32, AX Ldec128: MOVUPS 0(AX), X1 AESDEC X1, X0 MOVUPS 16(AX), X1 AESDEC X1, X0 MOVUPS 32(AX), X1 AESDEC X1, X0 MOVUPS 48(AX), X1 AESDEC X1, X0 MOVUPS 64(AX), X1 AESDEC X1, X0 MOVUPS 80(AX), X1 AESDEC X1, X0 MOVUPS 96(AX), X1 AESDEC X1, X0 MOVUPS 112(AX), X1 AESDEC X1, X0 MOVUPS 128(AX), X1 AESDEC X1, X0 MOVUPS 144(AX), X1 AESDECLAST X1, X0 MOVUPS X0, 0(DX) RET // func expandKeyAsm(nr int, key *byte, enc, dec *uint32) { // Note that round keys are stored in uint128 format, not uint32 TEXT ·expandKeyAsm(SB),NOSPLIT,$0 MOVQ nr+0(FP), CX MOVQ key+8(FP), AX MOVQ enc+16(FP), BX MOVQ dec+24(FP), DX MOVUPS (AX), X0 // enc MOVUPS X0, (BX) ADDQ $16, BX PXOR X4, X4 // _expand_key_* expect X4 to be zero CMPL CX, $12 JE Lexp_enc196 JB Lexp_enc128 Lexp_enc256: MOVUPS 16(AX), X2 MOVUPS X2, (BX) ADDQ $16, BX AESKEYGENASSIST $0x01, X2, X1 CALL _expand_key_256a<>(SB) AESKEYGENASSIST $0x01, X0, X1 CALL _expand_key_256b<>(SB) AESKEYGENASSIST $0x02, X2, X1 CALL _expand_key_256a<>(SB) AESKEYGENASSIST $0x02, X0, X1 CALL _expand_key_256b<>(SB) AESKEYGENASSIST $0x04, X2, X1 CALL _expand_key_256a<>(SB) AESKEYGENASSIST $0x04, X0, X1 CALL _expand_key_256b<>(SB) AESKEYGENASSIST $0x08, X2, X1 CALL _expand_key_256a<>(SB) AESKEYGENASSIST $0x08, X0, X1 CALL _expand_key_256b<>(SB) AESKEYGENASSIST $0x10, X2, X1 CALL _expand_key_256a<>(SB) AESKEYGENASSIST $0x10, X0, X1 CALL _expand_key_256b<>(SB) AESKEYGENASSIST $0x20, X2, X1 CALL _expand_key_256a<>(SB) AESKEYGENASSIST $0x20, X0, X1 CALL _expand_key_256b<>(SB) AESKEYGENASSIST $0x40, X2, X1 CALL _expand_key_256a<>(SB) JMP Lexp_dec Lexp_enc196: MOVQ 16(AX), X2 AESKEYGENASSIST $0x01, X2, X1 CALL _expand_key_192a<>(SB) AESKEYGENASSIST $0x02, X2, X1 CALL _expand_key_192b<>(SB) AESKEYGENASSIST $0x04, X2, X1 CALL _expand_key_192a<>(SB) AESKEYGENASSIST $0x08, X2, X1 CALL _expand_key_192b<>(SB) AESKEYGENASSIST $0x10, X2, X1 CALL _expand_key_192a<>(SB) AESKEYGENASSIST $0x20, X2, X1 CALL _expand_key_192b<>(SB) AESKEYGENASSIST $0x40, X2, X1 CALL _expand_key_192a<>(SB) AESKEYGENASSIST $0x80, X2, X1 CALL _expand_key_192b<>(SB) JMP Lexp_dec Lexp_enc128: AESKEYGENASSIST $0x01, X0, X1 CALL _expand_key_128<>(SB) AESKEYGENASSIST $0x02, X0, X1 CALL _expand_key_128<>(SB) AESKEYGENASSIST $0x04, X0, X1 CALL _expand_key_128<>(SB) AESKEYGENASSIST $0x08, X0, X1 CALL _expand_key_128<>(SB) AESKEYGENASSIST $0x10, X0, X1 CALL _expand_key_128<>(SB) AESKEYGENASSIST $0x20, X0, X1 CALL _expand_key_128<>(SB) AESKEYGENASSIST $0x40, X0, X1 CALL _expand_key_128<>(SB) AESKEYGENASSIST $0x80, X0, X1 CALL _expand_key_128<>(SB) AESKEYGENASSIST $0x1b, X0, X1 CALL _expand_key_128<>(SB) AESKEYGENASSIST $0x36, X0, X1 CALL _expand_key_128<>(SB) Lexp_dec: // dec SUBQ $16, BX MOVUPS (BX), X1 MOVUPS X1, (DX) DECQ CX Lexp_dec_loop: MOVUPS -16(BX), X1 AESIMC X1, X0 MOVUPS X0, 16(DX) SUBQ $16, BX ADDQ $16, DX DECQ CX JNZ Lexp_dec_loop MOVUPS -16(BX), X0 MOVUPS X0, 16(DX) RET #define PSHUFD_X0_X0_ BYTE $0x66; BYTE $0x0f; BYTE $0x70; BYTE $0xc0 #define PSHUFD_X1_X1_ BYTE $0x66; BYTE $0x0f; BYTE $0x70; BYTE $0xc9 TEXT _expand_key_128<>(SB),NOSPLIT,$0 PSHUFD $0xff, X1, X1 SHUFPS $0x10, X0, X4 PXOR X4, X0 SHUFPS $0x8c, X0, X4 PXOR X4, X0 PXOR X1, X0 MOVUPS X0, (BX) ADDQ $16, BX RET #define PSLLDQ_X5_ BYTE $0x66; BYTE $0x0f; BYTE $0x73; BYTE $0xfd #define PSHUFD_X0_X3_ BYTE $0x66; BYTE $0x0f; BYTE $0x70; BYTE $0xd8 TEXT _expand_key_192a<>(SB),NOSPLIT,$0 PSHUFD $0x55, X1, X1 SHUFPS $0x10, X0, X4 PXOR X4, X0 SHUFPS $0x8c, X0, X4 PXOR X4, X0 PXOR X1, X0 MOVAPS X2, X5 MOVAPS X2, X6 PSLLDQ_X5_; BYTE $0x4 PSHUFD $0xff, X0, X3 PXOR X3, X2 PXOR X5, X2 MOVAPS X0, X1 SHUFPS $0x44, X0, X6 MOVUPS X6, (BX) SHUFPS $0x4e, X2, X1 MOVUPS X1, 16(BX) ADDQ $32, BX RET TEXT _expand_key_192b<>(SB),NOSPLIT,$0 PSHUFD $0x55, X1, X1 SHUFPS $0x10, X0, X4 PXOR X4, X0 SHUFPS $0x8c, X0, X4 PXOR X4, X0 PXOR X1, X0 MOVAPS X2, X5 PSLLDQ_X5_; BYTE $0x4 PSHUFD $0xff, X0, X3 PXOR X3, X2 PXOR X5, X2 MOVUPS X0, (BX) ADDQ $16, BX RET TEXT _expand_key_256a<>(SB),NOSPLIT,$0 JMP _expand_key_128<>(SB) TEXT _expand_key_256b<>(SB),NOSPLIT,$0 PSHUFD $0xaa, X1, X1 SHUFPS $0x10, X2, X4 PXOR X4, X2 SHUFPS $0x8c, X2, X4 PXOR X4, X2 PXOR X1, X2 MOVUPS X2, (BX) ADDQ $16, BX RET go/src/pkg/crypto/aes/block.go0100644000000000000000000001611412412656737016563 0ustar00rootroot00000000000000// Copyright 2009 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 Go implementation is derived in part from the reference // ANSI C implementation, which carries the following notice: // // rijndael-alg-fst.c // // @version 3.0 (December 2000) // // Optimised ANSI C code for the Rijndael cipher (now AES) // // @author Vincent Rijmen // @author Antoon Bosselaers // @author Paulo Barreto // // This code is hereby placed in the public domain. // // THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS // OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR // BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // // See FIPS 197 for specification, and see Daemen and Rijmen's Rijndael submission // for implementation details. // http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf // http://csrc.nist.gov/archive/aes/rijndael/Rijndael-ammended.pdf package aes // Encrypt one block from src into dst, using the expanded key xk. func encryptBlockGo(xk []uint32, dst, src []byte) { var s0, s1, s2, s3, t0, t1, t2, t3 uint32 s0 = uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) s1 = uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) s2 = uint32(src[8])<<24 | uint32(src[9])<<16 | uint32(src[10])<<8 | uint32(src[11]) s3 = uint32(src[12])<<24 | uint32(src[13])<<16 | uint32(src[14])<<8 | uint32(src[15]) // First round just XORs input with key. s0 ^= xk[0] s1 ^= xk[1] s2 ^= xk[2] s3 ^= xk[3] // Middle rounds shuffle using tables. // Number of rounds is set by length of expanded key. nr := len(xk)/4 - 2 // - 2: one above, one more below k := 4 for r := 0; r < nr; r++ { t0 = xk[k+0] ^ te0[uint8(s0>>24)] ^ te1[uint8(s1>>16)] ^ te2[uint8(s2>>8)] ^ te3[uint8(s3)] t1 = xk[k+1] ^ te0[uint8(s1>>24)] ^ te1[uint8(s2>>16)] ^ te2[uint8(s3>>8)] ^ te3[uint8(s0)] t2 = xk[k+2] ^ te0[uint8(s2>>24)] ^ te1[uint8(s3>>16)] ^ te2[uint8(s0>>8)] ^ te3[uint8(s1)] t3 = xk[k+3] ^ te0[uint8(s3>>24)] ^ te1[uint8(s0>>16)] ^ te2[uint8(s1>>8)] ^ te3[uint8(s2)] k += 4 s0, s1, s2, s3 = t0, t1, t2, t3 } // Last round uses s-box directly and XORs to produce output. s0 = uint32(sbox0[t0>>24])<<24 | uint32(sbox0[t1>>16&0xff])<<16 | uint32(sbox0[t2>>8&0xff])<<8 | uint32(sbox0[t3&0xff]) s1 = uint32(sbox0[t1>>24])<<24 | uint32(sbox0[t2>>16&0xff])<<16 | uint32(sbox0[t3>>8&0xff])<<8 | uint32(sbox0[t0&0xff]) s2 = uint32(sbox0[t2>>24])<<24 | uint32(sbox0[t3>>16&0xff])<<16 | uint32(sbox0[t0>>8&0xff])<<8 | uint32(sbox0[t1&0xff]) s3 = uint32(sbox0[t3>>24])<<24 | uint32(sbox0[t0>>16&0xff])<<16 | uint32(sbox0[t1>>8&0xff])<<8 | uint32(sbox0[t2&0xff]) s0 ^= xk[k+0] s1 ^= xk[k+1] s2 ^= xk[k+2] s3 ^= xk[k+3] dst[0], dst[1], dst[2], dst[3] = byte(s0>>24), byte(s0>>16), byte(s0>>8), byte(s0) dst[4], dst[5], dst[6], dst[7] = byte(s1>>24), byte(s1>>16), byte(s1>>8), byte(s1) dst[8], dst[9], dst[10], dst[11] = byte(s2>>24), byte(s2>>16), byte(s2>>8), byte(s2) dst[12], dst[13], dst[14], dst[15] = byte(s3>>24), byte(s3>>16), byte(s3>>8), byte(s3) } // Decrypt one block from src into dst, using the expanded key xk. func decryptBlockGo(xk []uint32, dst, src []byte) { var s0, s1, s2, s3, t0, t1, t2, t3 uint32 s0 = uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) s1 = uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) s2 = uint32(src[8])<<24 | uint32(src[9])<<16 | uint32(src[10])<<8 | uint32(src[11]) s3 = uint32(src[12])<<24 | uint32(src[13])<<16 | uint32(src[14])<<8 | uint32(src[15]) // First round just XORs input with key. s0 ^= xk[0] s1 ^= xk[1] s2 ^= xk[2] s3 ^= xk[3] // Middle rounds shuffle using tables. // Number of rounds is set by length of expanded key. nr := len(xk)/4 - 2 // - 2: one above, one more below k := 4 for r := 0; r < nr; r++ { t0 = xk[k+0] ^ td0[uint8(s0>>24)] ^ td1[uint8(s3>>16)] ^ td2[uint8(s2>>8)] ^ td3[uint8(s1)] t1 = xk[k+1] ^ td0[uint8(s1>>24)] ^ td1[uint8(s0>>16)] ^ td2[uint8(s3>>8)] ^ td3[uint8(s2)] t2 = xk[k+2] ^ td0[uint8(s2>>24)] ^ td1[uint8(s1>>16)] ^ td2[uint8(s0>>8)] ^ td3[uint8(s3)] t3 = xk[k+3] ^ td0[uint8(s3>>24)] ^ td1[uint8(s2>>16)] ^ td2[uint8(s1>>8)] ^ td3[uint8(s0)] k += 4 s0, s1, s2, s3 = t0, t1, t2, t3 } // Last round uses s-box directly and XORs to produce output. s0 = uint32(sbox1[t0>>24])<<24 | uint32(sbox1[t3>>16&0xff])<<16 | uint32(sbox1[t2>>8&0xff])<<8 | uint32(sbox1[t1&0xff]) s1 = uint32(sbox1[t1>>24])<<24 | uint32(sbox1[t0>>16&0xff])<<16 | uint32(sbox1[t3>>8&0xff])<<8 | uint32(sbox1[t2&0xff]) s2 = uint32(sbox1[t2>>24])<<24 | uint32(sbox1[t1>>16&0xff])<<16 | uint32(sbox1[t0>>8&0xff])<<8 | uint32(sbox1[t3&0xff]) s3 = uint32(sbox1[t3>>24])<<24 | uint32(sbox1[t2>>16&0xff])<<16 | uint32(sbox1[t1>>8&0xff])<<8 | uint32(sbox1[t0&0xff]) s0 ^= xk[k+0] s1 ^= xk[k+1] s2 ^= xk[k+2] s3 ^= xk[k+3] dst[0], dst[1], dst[2], dst[3] = byte(s0>>24), byte(s0>>16), byte(s0>>8), byte(s0) dst[4], dst[5], dst[6], dst[7] = byte(s1>>24), byte(s1>>16), byte(s1>>8), byte(s1) dst[8], dst[9], dst[10], dst[11] = byte(s2>>24), byte(s2>>16), byte(s2>>8), byte(s2) dst[12], dst[13], dst[14], dst[15] = byte(s3>>24), byte(s3>>16), byte(s3>>8), byte(s3) } // Apply sbox0 to each byte in w. func subw(w uint32) uint32 { return uint32(sbox0[w>>24])<<24 | uint32(sbox0[w>>16&0xff])<<16 | uint32(sbox0[w>>8&0xff])<<8 | uint32(sbox0[w&0xff]) } // Rotate func rotw(w uint32) uint32 { return w<<8 | w>>24 } // Key expansion algorithm. See FIPS-197, Figure 11. // Their rcon[i] is our powx[i-1] << 24. func expandKeyGo(key []byte, enc, dec []uint32) { // Encryption key setup. var i int nk := len(key) / 4 for i = 0; i < nk; i++ { enc[i] = uint32(key[4*i])<<24 | uint32(key[4*i+1])<<16 | uint32(key[4*i+2])<<8 | uint32(key[4*i+3]) } for ; i < len(enc); i++ { t := enc[i-1] if i%nk == 0 { t = subw(rotw(t)) ^ (uint32(powx[i/nk-1]) << 24) } else if nk > 6 && i%nk == 4 { t = subw(t) } enc[i] = enc[i-nk] ^ t } // Derive decryption key from encryption key. // Reverse the 4-word round key sets from enc to produce dec. // All sets but the first and last get the MixColumn transform applied. if dec == nil { return } n := len(enc) for i := 0; i < n; i += 4 { ei := n - i - 4 for j := 0; j < 4; j++ { x := enc[ei+j] if i > 0 && i+4 < n { x = td0[sbox0[x>>24]] ^ td1[sbox0[x>>16&0xff]] ^ td2[sbox0[x>>8&0xff]] ^ td3[sbox0[x&0xff]] } dec[i+j] = x } } } go/src/pkg/crypto/aes/cipher.go0100644000000000000000000000267512412656737016752 0ustar00rootroot00000000000000// Copyright 2009 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 aes import ( "crypto/cipher" "strconv" ) // The AES block size in bytes. const BlockSize = 16 // A cipher is an instance of AES encryption using a particular key. type aesCipher struct { enc []uint32 dec []uint32 } type KeySizeError int func (k KeySizeError) Error() string { return "crypto/aes: invalid key size " + strconv.Itoa(int(k)) } // NewCipher creates and returns a new cipher.Block. // The key argument should be the AES key, // either 16, 24, or 32 bytes to select // AES-128, AES-192, or AES-256. func NewCipher(key []byte) (cipher.Block, error) { k := len(key) switch k { default: return nil, KeySizeError(k) case 16, 24, 32: break } n := k + 28 c := &aesCipher{make([]uint32, n), make([]uint32, n)} expandKey(key, c.enc, c.dec) return c, nil } func (c *aesCipher) BlockSize() int { return BlockSize } func (c *aesCipher) Encrypt(dst, src []byte) { if len(src) < BlockSize { panic("crypto/aes: input not full block") } if len(dst) < BlockSize { panic("crypto/aes: output not full block") } encryptBlock(c.enc, dst, src) } func (c *aesCipher) Decrypt(dst, src []byte) { if len(src) < BlockSize { panic("crypto/aes: input not full block") } if len(dst) < BlockSize { panic("crypto/aes: output not full block") } decryptBlock(c.dec, dst, src) } go/src/pkg/crypto/aes/cipher_asm.go0100644000000000000000000000204312412656737017577 0ustar00rootroot00000000000000// 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. // +build amd64 package aes // defined in asm_$GOARCH.s func hasAsm() bool func encryptBlockAsm(nr int, xk *uint32, dst, src *byte) func decryptBlockAsm(nr int, xk *uint32, dst, src *byte) func expandKeyAsm(nr int, key *byte, enc *uint32, dec *uint32) var useAsm = hasAsm() func encryptBlock(xk []uint32, dst, src []byte) { if useAsm { encryptBlockAsm(len(xk)/4-1, &xk[0], &dst[0], &src[0]) } else { encryptBlockGo(xk, dst, src) } } func decryptBlock(xk []uint32, dst, src []byte) { if useAsm { decryptBlockAsm(len(xk)/4-1, &xk[0], &dst[0], &src[0]) } else { decryptBlockGo(xk, dst, src) } } func expandKey(key []byte, enc, dec []uint32) { if useAsm { rounds := 10 switch len(key) { case 128 / 8: rounds = 10 case 192 / 8: rounds = 12 case 256 / 8: rounds = 14 } expandKeyAsm(rounds, &key[0], &enc[0], &dec[0]) } else { expandKeyGo(key, enc, dec) } } go/src/pkg/crypto/aes/cipher_generic.go0100644000000000000000000000066312412656737020441 0ustar00rootroot00000000000000// 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. // +build !amd64 package aes func encryptBlock(xk []uint32, dst, src []byte) { encryptBlockGo(xk, dst, src) } func decryptBlock(xk []uint32, dst, src []byte) { decryptBlockGo(xk, dst, src) } func expandKey(key []byte, enc, dec []uint32) { expandKeyGo(key, enc, dec) } go/src/pkg/crypto/aes/const.go0100644000000000000000000007156212412656737016627 0ustar00rootroot00000000000000// Copyright 2009 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 aes implements AES encryption (formerly Rijndael), as defined in // U.S. Federal Information Processing Standards Publication 197. package aes // This file contains AES constants - 8720 bytes of initialized data. // http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf // AES is based on the mathematical behavior of binary polynomials // (polynomials over GF(2)) modulo the irreducible polynomial x⁸ + x⁴ + x³ + x + 1. // Addition of these binary polynomials corresponds to binary xor. // Reducing mod poly corresponds to binary xor with poly every // time a 0x100 bit appears. const poly = 1<<8 | 1<<4 | 1<<3 | 1<<1 | 1<<0 // x⁸ + x⁴ + x³ + x + 1 // Powers of x mod poly in GF(2). var powx = [16]byte{ 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, } // FIPS-197 Figure 7. S-box substitution values in hexadecimal format. var sbox0 = [256]byte{ 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16, } // FIPS-197 Figure 14. Inverse S-box substitution values in hexadecimal format. var sbox1 = [256]byte{ 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d, } // Lookup tables for encryption. // These can be recomputed by adapting the tests in aes_test.go. var te0 = [256]uint32{ 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a, } var te1 = [256]uint32{ 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616, } var te2 = [256]uint32{ 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16, } var te3 = [256]uint32{ 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c, } // Lookup tables for decryption. // These can be recomputed by adapting the tests in aes_test.go. var td0 = [256]uint32{ 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742, } var td1 = [256]uint32{ 0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857, } var td2 = [256]uint32{ 0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8, } var td3 = [256]uint32{ 0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0, } go/src/pkg/crypto/cipher0040755000000000000000000000000012412656737015565 5ustar00rootroot00000000000000go/src/pkg/crypto/cipher/benchmark_test.go0100644000000000000000000000560512412656737021167 0ustar00rootroot00000000000000// Copyright 2013 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 cipher_test import ( "crypto/aes" "crypto/cipher" "testing" ) func BenchmarkAESGCMSeal1K(b *testing.B) { buf := make([]byte, 1024) b.SetBytes(int64(len(buf))) var key [16]byte var nonce [12]byte aes, _ := aes.NewCipher(key[:]) aesgcm, _ := cipher.NewGCM(aes) var out []byte b.ResetTimer() for i := 0; i < b.N; i++ { out = aesgcm.Seal(out[:0], nonce[:], buf, nonce[:]) } } func BenchmarkAESGCMOpen1K(b *testing.B) { buf := make([]byte, 1024) b.SetBytes(int64(len(buf))) var key [16]byte var nonce [12]byte aes, _ := aes.NewCipher(key[:]) aesgcm, _ := cipher.NewGCM(aes) var out []byte out = aesgcm.Seal(out[:0], nonce[:], buf, nonce[:]) b.ResetTimer() for i := 0; i < b.N; i++ { _, err := aesgcm.Open(buf[:0], nonce[:], out, nonce[:]) if err != nil { b.Errorf("Open: %v", err) } } } // If we test exactly 1K blocks, we would generate exact multiples of // the cipher's block size, and the cipher stream fragments would // always be wordsize aligned, whereas non-aligned is a more typical // use-case. const almost1K = 1024 - 5 func BenchmarkAESCFBEncrypt1K(b *testing.B) { buf := make([]byte, almost1K) b.SetBytes(int64(len(buf))) var key [16]byte var iv [16]byte aes, _ := aes.NewCipher(key[:]) ctr := cipher.NewCFBEncrypter(aes, iv[:]) b.ResetTimer() for i := 0; i < b.N; i++ { ctr.XORKeyStream(buf, buf) } } func BenchmarkAESCFBDecrypt1K(b *testing.B) { buf := make([]byte, almost1K) b.SetBytes(int64(len(buf))) var key [16]byte var iv [16]byte aes, _ := aes.NewCipher(key[:]) ctr := cipher.NewCFBDecrypter(aes, iv[:]) b.ResetTimer() for i := 0; i < b.N; i++ { ctr.XORKeyStream(buf, buf) } } func BenchmarkAESOFB1K(b *testing.B) { buf := make([]byte, almost1K) b.SetBytes(int64(len(buf))) var key [16]byte var iv [16]byte aes, _ := aes.NewCipher(key[:]) ctr := cipher.NewOFB(aes, iv[:]) b.ResetTimer() for i := 0; i < b.N; i++ { ctr.XORKeyStream(buf, buf) } } func BenchmarkAESCTR1K(b *testing.B) { buf := make([]byte, almost1K) b.SetBytes(int64(len(buf))) var key [16]byte var iv [16]byte aes, _ := aes.NewCipher(key[:]) ctr := cipher.NewCTR(aes, iv[:]) b.ResetTimer() for i := 0; i < b.N; i++ { ctr.XORKeyStream(buf, buf) } } func BenchmarkAESCBCEncrypt1K(b *testing.B) { buf := make([]byte, 1024) b.SetBytes(int64(len(buf))) var key [16]byte var iv [16]byte aes, _ := aes.NewCipher(key[:]) cbc := cipher.NewCBCEncrypter(aes, iv[:]) for i := 0; i < b.N; i++ { cbc.CryptBlocks(buf, buf) } } func BenchmarkAESCBCDecrypt1K(b *testing.B) { buf := make([]byte, 1024) b.SetBytes(int64(len(buf))) var key [16]byte var iv [16]byte aes, _ := aes.NewCipher(key[:]) cbc := cipher.NewCBCDecrypter(aes, iv[:]) for i := 0; i < b.N; i++ { cbc.CryptBlocks(buf, buf) } } go/src/pkg/crypto/cipher/cbc.go0100644000000000000000000000673012412656737016725 0ustar00rootroot00000000000000// Copyright 2009 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. // Cipher block chaining (CBC) mode. // CBC provides confidentiality by xoring (chaining) each plaintext block // with the previous ciphertext block before applying the block cipher. // See NIST SP 800-38A, pp 10-11 package cipher type cbc struct { b Block blockSize int iv []byte tmp []byte } func newCBC(b Block, iv []byte) *cbc { return &cbc{ b: b, blockSize: b.BlockSize(), iv: dup(iv), tmp: make([]byte, b.BlockSize()), } } type cbcEncrypter cbc // NewCBCEncrypter returns a BlockMode which encrypts in cipher block chaining // mode, using the given Block. The length of iv must be the same as the // Block's block size. func NewCBCEncrypter(b Block, iv []byte) BlockMode { if len(iv) != b.BlockSize() { panic("cipher.NewCBCEncrypter: IV length must equal block size") } return (*cbcEncrypter)(newCBC(b, iv)) } func (x *cbcEncrypter) BlockSize() int { return x.blockSize } func (x *cbcEncrypter) CryptBlocks(dst, src []byte) { if len(src)%x.blockSize != 0 { panic("crypto/cipher: input not full blocks") } if len(dst) < len(src) { panic("crypto/cipher: output smaller than input") } iv := x.iv for len(src) > 0 { // Write the xor to dst, then encrypt in place. xorBytes(dst[:x.blockSize], src[:x.blockSize], iv) x.b.Encrypt(dst[:x.blockSize], dst[:x.blockSize]) // Move to the next block with this block as the next iv. iv = dst[:x.blockSize] src = src[x.blockSize:] dst = dst[x.blockSize:] } // Save the iv for the next CryptBlocks call. copy(x.iv, iv) } func (x *cbcEncrypter) SetIV(iv []byte) { if len(iv) != len(x.iv) { panic("cipher: incorrect length IV") } copy(x.iv, iv) } type cbcDecrypter cbc // NewCBCDecrypter returns a BlockMode which decrypts in cipher block chaining // mode, using the given Block. The length of iv must be the same as the // Block's block size and must match the iv used to encrypt the data. func NewCBCDecrypter(b Block, iv []byte) BlockMode { if len(iv) != b.BlockSize() { panic("cipher.NewCBCDecrypter: IV length must equal block size") } return (*cbcDecrypter)(newCBC(b, iv)) } func (x *cbcDecrypter) BlockSize() int { return x.blockSize } func (x *cbcDecrypter) CryptBlocks(dst, src []byte) { if len(src)%x.blockSize != 0 { panic("crypto/cipher: input not full blocks") } if len(dst) < len(src) { panic("crypto/cipher: output smaller than input") } if len(src) == 0 { return } // For each block, we need to xor the decrypted data with the previous block's ciphertext (the iv). // To avoid making a copy each time, we loop over the blocks BACKWARDS. end := len(src) start := end - x.blockSize prev := start - x.blockSize // Copy the last block of ciphertext in preparation as the new iv. copy(x.tmp, src[start:end]) // Loop over all but the first block. for start > 0 { x.b.Decrypt(dst[start:end], src[start:end]) xorBytes(dst[start:end], dst[start:end], src[prev:start]) end = start start = prev prev -= x.blockSize } // The first block is special because it uses the saved iv. x.b.Decrypt(dst[start:end], src[start:end]) xorBytes(dst[start:end], dst[start:end], x.iv) // Set the new iv to the first block we copied earlier. x.iv, x.tmp = x.tmp, x.iv } func (x *cbcDecrypter) SetIV(iv []byte) { if len(iv) != len(x.iv) { panic("cipher: incorrect length IV") } copy(x.iv, iv) } go/src/pkg/crypto/cipher/cbc_aes_test.go0100644000000000000000000000566612412656737020623 0ustar00rootroot00000000000000// Copyright 2009 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. // CBC AES test vectors. // See U.S. National Institute of Standards and Technology (NIST) // Special Publication 800-38A, ``Recommendation for Block Cipher // Modes of Operation,'' 2001 Edition, pp. 24-29. package cipher_test import ( "bytes" "crypto/aes" "crypto/cipher" "testing" ) var cbcAESTests = []struct { name string key []byte iv []byte in []byte out []byte }{ // NIST SP 800-38A pp 27-29 { "CBC-AES128", commonKey128, commonIV, commonInput, []byte{ 0x76, 0x49, 0xab, 0xac, 0x81, 0x19, 0xb2, 0x46, 0xce, 0xe9, 0x8e, 0x9b, 0x12, 0xe9, 0x19, 0x7d, 0x50, 0x86, 0xcb, 0x9b, 0x50, 0x72, 0x19, 0xee, 0x95, 0xdb, 0x11, 0x3a, 0x91, 0x76, 0x78, 0xb2, 0x73, 0xbe, 0xd6, 0xb8, 0xe3, 0xc1, 0x74, 0x3b, 0x71, 0x16, 0xe6, 0x9e, 0x22, 0x22, 0x95, 0x16, 0x3f, 0xf1, 0xca, 0xa1, 0x68, 0x1f, 0xac, 0x09, 0x12, 0x0e, 0xca, 0x30, 0x75, 0x86, 0xe1, 0xa7, }, }, { "CBC-AES192", commonKey192, commonIV, commonInput, []byte{ 0x4f, 0x02, 0x1d, 0xb2, 0x43, 0xbc, 0x63, 0x3d, 0x71, 0x78, 0x18, 0x3a, 0x9f, 0xa0, 0x71, 0xe8, 0xb4, 0xd9, 0xad, 0xa9, 0xad, 0x7d, 0xed, 0xf4, 0xe5, 0xe7, 0x38, 0x76, 0x3f, 0x69, 0x14, 0x5a, 0x57, 0x1b, 0x24, 0x20, 0x12, 0xfb, 0x7a, 0xe0, 0x7f, 0xa9, 0xba, 0xac, 0x3d, 0xf1, 0x02, 0xe0, 0x08, 0xb0, 0xe2, 0x79, 0x88, 0x59, 0x88, 0x81, 0xd9, 0x20, 0xa9, 0xe6, 0x4f, 0x56, 0x15, 0xcd, }, }, { "CBC-AES256", commonKey256, commonIV, commonInput, []byte{ 0xf5, 0x8c, 0x4c, 0x04, 0xd6, 0xe5, 0xf1, 0xba, 0x77, 0x9e, 0xab, 0xfb, 0x5f, 0x7b, 0xfb, 0xd6, 0x9c, 0xfc, 0x4e, 0x96, 0x7e, 0xdb, 0x80, 0x8d, 0x67, 0x9f, 0x77, 0x7b, 0xc6, 0x70, 0x2c, 0x7d, 0x39, 0xf2, 0x33, 0x69, 0xa9, 0xd9, 0xba, 0xcf, 0xa5, 0x30, 0xe2, 0x63, 0x04, 0x23, 0x14, 0x61, 0xb2, 0xeb, 0x05, 0xe2, 0xc3, 0x9b, 0xe9, 0xfc, 0xda, 0x6c, 0x19, 0x07, 0x8c, 0x6a, 0x9d, 0x1b, }, }, } func TestCBCEncrypterAES(t *testing.T) { for _, test := range cbcAESTests { c, err := aes.NewCipher(test.key) if err != nil { t.Errorf("%s: NewCipher(%d bytes) = %s", test.name, len(test.key), err) continue } encrypter := cipher.NewCBCEncrypter(c, test.iv) data := make([]byte, len(test.in)) copy(data, test.in) encrypter.CryptBlocks(data, data) if !bytes.Equal(test.out, data) { t.Errorf("%s: CBCEncrypter\nhave %x\nwant %x", test.name, data, test.out) } } } func TestCBCDecrypterAES(t *testing.T) { for _, test := range cbcAESTests { c, err := aes.NewCipher(test.key) if err != nil { t.Errorf("%s: NewCipher(%d bytes) = %s", test.name, len(test.key), err) continue } decrypter := cipher.NewCBCDecrypter(c, test.iv) data := make([]byte, len(test.out)) copy(data, test.out) decrypter.CryptBlocks(data, data) if !bytes.Equal(test.in, data) { t.Errorf("%s: CBCDecrypter\nhave %x\nwant %x", test.name, data, test.in) } } } go/src/pkg/crypto/cipher/cfb.go0100644000000000000000000000335612412656737016731 0ustar00rootroot00000000000000// 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. // CFB (Cipher Feedback) Mode. package cipher type cfb struct { b Block next []byte out []byte outUsed int decrypt bool } func (x *cfb) XORKeyStream(dst, src []byte) { for len(src) > 0 { if x.outUsed == len(x.out) { x.b.Encrypt(x.out, x.next) x.outUsed = 0 } if x.decrypt { // We can precompute a larger segment of the // keystream on decryption. This will allow // larger batches for xor, and we should be // able to match CTR/OFB performance. copy(x.next[x.outUsed:], src) } n := xorBytes(dst, src, x.out[x.outUsed:]) if !x.decrypt { copy(x.next[x.outUsed:], dst) } dst = dst[n:] src = src[n:] x.outUsed += n } } // NewCFBEncrypter returns a Stream which encrypts with cipher feedback mode, // using the given Block. The iv must be the same length as the Block's block // size. func NewCFBEncrypter(block Block, iv []byte) Stream { return newCFB(block, iv, false) } // NewCFBDecrypter returns a Stream which decrypts with cipher feedback mode, // using the given Block. The iv must be the same length as the Block's block // size. func NewCFBDecrypter(block Block, iv []byte) Stream { return newCFB(block, iv, true) } func newCFB(block Block, iv []byte, decrypt bool) Stream { blockSize := block.BlockSize() if len(iv) != blockSize { // stack trace will indicate whether it was de or encryption panic("cipher.newCFB: IV length must equal block size") } x := &cfb{ b: block, out: make([]byte, blockSize), next: make([]byte, blockSize), outUsed: blockSize, decrypt: decrypt, } copy(x.next, iv) return x } go/src/pkg/crypto/cipher/cfb_test.go0100644000000000000000000000166612412656737017772 0ustar00rootroot00000000000000// 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. package cipher_test import ( "bytes" "crypto/aes" "crypto/cipher" "crypto/rand" "testing" ) func TestCFB(t *testing.T) { block, err := aes.NewCipher(commonKey128) if err != nil { t.Error(err) return } plaintext := []byte("this is the plaintext. this is the plaintext.") iv := make([]byte, block.BlockSize()) rand.Reader.Read(iv) cfb := cipher.NewCFBEncrypter(block, iv) ciphertext := make([]byte, len(plaintext)) copy(ciphertext, plaintext) cfb.XORKeyStream(ciphertext, ciphertext) cfbdec := cipher.NewCFBDecrypter(block, iv) plaintextCopy := make([]byte, len(plaintext)) copy(plaintextCopy, ciphertext) cfbdec.XORKeyStream(plaintextCopy, plaintextCopy) if !bytes.Equal(plaintextCopy, plaintext) { t.Errorf("got: %x, want: %x", plaintextCopy, plaintext) } } go/src/pkg/crypto/cipher/cipher.go0100644000000000000000000000323612412656737017446 0ustar00rootroot00000000000000// 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. // Package cipher implements standard block cipher modes that can be wrapped // around low-level block cipher implementations. // See http://csrc.nist.gov/groups/ST/toolkit/BCM/current_modes.html // and NIST Special Publication 800-38A. package cipher // A Block represents an implementation of block cipher // using a given key. It provides the capability to encrypt // or decrypt individual blocks. The mode implementations // extend that capability to streams of blocks. type Block interface { // BlockSize returns the cipher's block size. BlockSize() int // Encrypt encrypts the first block in src into dst. // Dst and src may point at the same memory. Encrypt(dst, src []byte) // Decrypt decrypts the first block in src into dst. // Dst and src may point at the same memory. Decrypt(dst, src []byte) } // A Stream represents a stream cipher. type Stream interface { // XORKeyStream XORs each byte in the given slice with a byte from the // cipher's key stream. Dst and src may point to the same memory. XORKeyStream(dst, src []byte) } // A BlockMode represents a block cipher running in a block-based mode (CBC, // ECB etc). type BlockMode interface { // BlockSize returns the mode's block size. BlockSize() int // CryptBlocks encrypts or decrypts a number of blocks. The length of // src must be a multiple of the block size. Dst and src may point to // the same memory. CryptBlocks(dst, src []byte) } // Utility routines func dup(p []byte) []byte { q := make([]byte, len(p)) copy(q, p) return q } go/src/pkg/crypto/cipher/cipher_test.go0100644000000000000000000000205412412656737020502 0ustar00rootroot00000000000000// Copyright 2013 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 cipher_test import ( "crypto/aes" "crypto/cipher" "testing" ) func TestCryptBlocks(t *testing.T) { buf := make([]byte, 16) block, _ := aes.NewCipher(buf) mode := cipher.NewCBCDecrypter(block, buf) mustPanic(t, "crypto/cipher: input not full blocks", func() { mode.CryptBlocks(buf, buf[:3]) }) mustPanic(t, "crypto/cipher: output smaller than input", func() { mode.CryptBlocks(buf[:3], buf) }) mode = cipher.NewCBCEncrypter(block, buf) mustPanic(t, "crypto/cipher: input not full blocks", func() { mode.CryptBlocks(buf, buf[:3]) }) mustPanic(t, "crypto/cipher: output smaller than input", func() { mode.CryptBlocks(buf[:3], buf) }) } func mustPanic(t *testing.T, msg string, f func()) { defer func() { err := recover() if err == nil { t.Errorf("function did not panic, wanted %q", msg) } else if err != msg { t.Errorf("got panic %v, wanted %q", err, msg) } }() f() } go/src/pkg/crypto/cipher/common_test.go0100644000000000000000000000236412412656737020524 0ustar00rootroot00000000000000// Copyright 2009 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 cipher_test // Common values for tests. var commonInput = []byte{ 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10, } var commonKey128 = []byte{0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c} var commonKey192 = []byte{ 0x8e, 0x73, 0xb0, 0xf7, 0xda, 0x0e, 0x64, 0x52, 0xc8, 0x10, 0xf3, 0x2b, 0x80, 0x90, 0x79, 0xe5, 0x62, 0xf8, 0xea, 0xd2, 0x52, 0x2c, 0x6b, 0x7b, } var commonKey256 = []byte{ 0x60, 0x3d, 0xeb, 0x10, 0x15, 0xca, 0x71, 0xbe, 0x2b, 0x73, 0xae, 0xf0, 0x85, 0x7d, 0x77, 0x81, 0x1f, 0x35, 0x2c, 0x07, 0x3b, 0x61, 0x08, 0xd7, 0x2d, 0x98, 0x10, 0xa3, 0x09, 0x14, 0xdf, 0xf4, } var commonIV = []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f} go/src/pkg/crypto/cipher/ctr.go0100644000000000000000000000320112412656737016754 0ustar00rootroot00000000000000// Copyright 2009 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. // Counter (CTR) mode. // CTR converts a block cipher into a stream cipher by // repeatedly encrypting an incrementing counter and // xoring the resulting stream of data with the input. // See NIST SP 800-38A, pp 13-15 package cipher type ctr struct { b Block ctr []byte out []byte outUsed int } const streamBufferSize = 512 // NewCTR returns a Stream which encrypts/decrypts using the given Block in // counter mode. The length of iv must be the same as the Block's block size. func NewCTR(block Block, iv []byte) Stream { if len(iv) != block.BlockSize() { panic("cipher.NewCTR: IV length must equal block size") } bufSize := streamBufferSize if bufSize < block.BlockSize() { bufSize = block.BlockSize() } return &ctr{ b: block, ctr: dup(iv), out: make([]byte, 0, bufSize), outUsed: 0, } } func (x *ctr) refill() { remain := len(x.out) - x.outUsed if remain > x.outUsed { return } copy(x.out, x.out[x.outUsed:]) x.out = x.out[:cap(x.out)] bs := x.b.BlockSize() for remain < len(x.out)-bs { x.b.Encrypt(x.out[remain:], x.ctr) remain += bs // Increment counter for i := len(x.ctr) - 1; i >= 0; i-- { x.ctr[i]++ if x.ctr[i] != 0 { break } } } x.out = x.out[:remain] x.outUsed = 0 } func (x *ctr) XORKeyStream(dst, src []byte) { for len(src) > 0 { if x.outUsed >= len(x.out)-x.b.BlockSize() { x.refill() } n := xorBytes(dst, src, x.out[x.outUsed:]) dst = dst[n:] src = src[n:] x.outUsed += n } } go/src/pkg/crypto/cipher/ctr_aes_test.go0100644000000000000000000000576012412656737020657 0ustar00rootroot00000000000000// Copyright 2009 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. // CTR AES test vectors. // See U.S. National Institute of Standards and Technology (NIST) // Special Publication 800-38A, ``Recommendation for Block Cipher // Modes of Operation,'' 2001 Edition, pp. 55-58. package cipher_test import ( "bytes" "crypto/aes" "crypto/cipher" "testing" ) var commonCounter = []byte{0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff} var ctrAESTests = []struct { name string key []byte iv []byte in []byte out []byte }{ // NIST SP 800-38A pp 55-58 { "CTR-AES128", commonKey128, commonCounter, commonInput, []byte{ 0x87, 0x4d, 0x61, 0x91, 0xb6, 0x20, 0xe3, 0x26, 0x1b, 0xef, 0x68, 0x64, 0x99, 0x0d, 0xb6, 0xce, 0x98, 0x06, 0xf6, 0x6b, 0x79, 0x70, 0xfd, 0xff, 0x86, 0x17, 0x18, 0x7b, 0xb9, 0xff, 0xfd, 0xff, 0x5a, 0xe4, 0xdf, 0x3e, 0xdb, 0xd5, 0xd3, 0x5e, 0x5b, 0x4f, 0x09, 0x02, 0x0d, 0xb0, 0x3e, 0xab, 0x1e, 0x03, 0x1d, 0xda, 0x2f, 0xbe, 0x03, 0xd1, 0x79, 0x21, 0x70, 0xa0, 0xf3, 0x00, 0x9c, 0xee, }, }, { "CTR-AES192", commonKey192, commonCounter, commonInput, []byte{ 0x1a, 0xbc, 0x93, 0x24, 0x17, 0x52, 0x1c, 0xa2, 0x4f, 0x2b, 0x04, 0x59, 0xfe, 0x7e, 0x6e, 0x0b, 0x09, 0x03, 0x39, 0xec, 0x0a, 0xa6, 0xfa, 0xef, 0xd5, 0xcc, 0xc2, 0xc6, 0xf4, 0xce, 0x8e, 0x94, 0x1e, 0x36, 0xb2, 0x6b, 0xd1, 0xeb, 0xc6, 0x70, 0xd1, 0xbd, 0x1d, 0x66, 0x56, 0x20, 0xab, 0xf7, 0x4f, 0x78, 0xa7, 0xf6, 0xd2, 0x98, 0x09, 0x58, 0x5a, 0x97, 0xda, 0xec, 0x58, 0xc6, 0xb0, 0x50, }, }, { "CTR-AES256", commonKey256, commonCounter, commonInput, []byte{ 0x60, 0x1e, 0xc3, 0x13, 0x77, 0x57, 0x89, 0xa5, 0xb7, 0xa7, 0xf5, 0x04, 0xbb, 0xf3, 0xd2, 0x28, 0xf4, 0x43, 0xe3, 0xca, 0x4d, 0x62, 0xb5, 0x9a, 0xca, 0x84, 0xe9, 0x90, 0xca, 0xca, 0xf5, 0xc5, 0x2b, 0x09, 0x30, 0xda, 0xa2, 0x3d, 0xe9, 0x4c, 0xe8, 0x70, 0x17, 0xba, 0x2d, 0x84, 0x98, 0x8d, 0xdf, 0xc9, 0xc5, 0x8d, 0xb6, 0x7a, 0xad, 0xa6, 0x13, 0xc2, 0xdd, 0x08, 0x45, 0x79, 0x41, 0xa6, }, }, } func TestCTR_AES(t *testing.T) { for _, tt := range ctrAESTests { test := tt.name c, err := aes.NewCipher(tt.key) if err != nil { t.Errorf("%s: NewCipher(%d bytes) = %s", test, len(tt.key), err) continue } for j := 0; j <= 5; j += 5 { in := tt.in[0 : len(tt.in)-j] ctr := cipher.NewCTR(c, tt.iv) encrypted := make([]byte, len(in)) ctr.XORKeyStream(encrypted, in) if out := tt.out[0:len(in)]; !bytes.Equal(out, encrypted) { t.Errorf("%s/%d: CTR\ninpt %x\nhave %x\nwant %x", test, len(in), in, encrypted, out) } } for j := 0; j <= 7; j += 7 { in := tt.out[0 : len(tt.out)-j] ctr := cipher.NewCTR(c, tt.iv) plain := make([]byte, len(in)) ctr.XORKeyStream(plain, in) if out := tt.in[0:len(in)]; !bytes.Equal(out, plain) { t.Errorf("%s/%d: CTRReader\nhave %x\nwant %x", test, len(out), plain, out) } } if t.Failed() { break } } } go/src/pkg/crypto/cipher/example_test.go0100644000000000000000000001765112412656737020674 0ustar00rootroot00000000000000// 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 cipher_test import ( "crypto/aes" "crypto/cipher" "crypto/rand" "encoding/hex" "fmt" "io" "os" ) func ExampleNewCBCDecrypter() { key := []byte("example key 1234") ciphertext, _ := hex.DecodeString("f363f3ccdcb12bb883abf484ba77d9cd7d32b5baecb3d4b1b3e0e4beffdb3ded") block, err := aes.NewCipher(key) if err != nil { panic(err) } // The IV needs to be unique, but not secure. Therefore it's common to // include it at the beginning of the ciphertext. if len(ciphertext) < aes.BlockSize { panic("ciphertext too short") } iv := ciphertext[:aes.BlockSize] ciphertext = ciphertext[aes.BlockSize:] // CBC mode always works in whole blocks. if len(ciphertext)%aes.BlockSize != 0 { panic("ciphertext is not a multiple of the block size") } mode := cipher.NewCBCDecrypter(block, iv) // CryptBlocks can work in-place if the two arguments are the same. mode.CryptBlocks(ciphertext, ciphertext) // If the original plaintext lengths are not a multiple of the block // size, padding would have to be added when encrypting, which would be // removed at this point. For an example, see // https://tools.ietf.org/html/rfc5246#section-6.2.3.2. However, it's // critical to note that ciphertexts must be authenticated (i.e. by // using crypto/hmac) before being decrypted in order to avoid creating // a padding oracle. fmt.Printf("%s\n", ciphertext) // Output: exampleplaintext } func ExampleNewCBCEncrypter() { key := []byte("example key 1234") plaintext := []byte("exampleplaintext") // CBC mode works on blocks so plaintexts may need to be padded to the // next whole block. For an example of such padding, see // https://tools.ietf.org/html/rfc5246#section-6.2.3.2. Here we'll // assume that the plaintext is already of the correct length. if len(plaintext)%aes.BlockSize != 0 { panic("plaintext is not a multiple of the block size") } block, err := aes.NewCipher(key) if err != nil { panic(err) } // The IV needs to be unique, but not secure. Therefore it's common to // include it at the beginning of the ciphertext. ciphertext := make([]byte, aes.BlockSize+len(plaintext)) iv := ciphertext[:aes.BlockSize] if _, err := io.ReadFull(rand.Reader, iv); err != nil { panic(err) } mode := cipher.NewCBCEncrypter(block, iv) mode.CryptBlocks(ciphertext[aes.BlockSize:], plaintext) // It's important to remember that ciphertexts must be authenticated // (i.e. by using crypto/hmac) as well as being encrypted in order to // be secure. fmt.Printf("%x\n", ciphertext) } func ExampleNewCFBDecrypter() { key := []byte("example key 1234") ciphertext, _ := hex.DecodeString("22277966616d9bc47177bd02603d08c9a67d5380d0fe8cf3b44438dff7b9") block, err := aes.NewCipher(key) if err != nil { panic(err) } // The IV needs to be unique, but not secure. Therefore it's common to // include it at the beginning of the ciphertext. if len(ciphertext) < aes.BlockSize { panic("ciphertext too short") } iv := ciphertext[:aes.BlockSize] ciphertext = ciphertext[aes.BlockSize:] stream := cipher.NewCFBDecrypter(block, iv) // XORKeyStream can work in-place if the two arguments are the same. stream.XORKeyStream(ciphertext, ciphertext) fmt.Printf("%s", ciphertext) // Output: some plaintext } func ExampleNewCFBEncrypter() { key := []byte("example key 1234") plaintext := []byte("some plaintext") block, err := aes.NewCipher(key) if err != nil { panic(err) } // The IV needs to be unique, but not secure. Therefore it's common to // include it at the beginning of the ciphertext. ciphertext := make([]byte, aes.BlockSize+len(plaintext)) iv := ciphertext[:aes.BlockSize] if _, err := io.ReadFull(rand.Reader, iv); err != nil { panic(err) } stream := cipher.NewCFBEncrypter(block, iv) stream.XORKeyStream(ciphertext[aes.BlockSize:], plaintext) // It's important to remember that ciphertexts must be authenticated // (i.e. by using crypto/hmac) as well as being encrypted in order to // be secure. } func ExampleNewCTR() { key := []byte("example key 1234") plaintext := []byte("some plaintext") block, err := aes.NewCipher(key) if err != nil { panic(err) } // The IV needs to be unique, but not secure. Therefore it's common to // include it at the beginning of the ciphertext. ciphertext := make([]byte, aes.BlockSize+len(plaintext)) iv := ciphertext[:aes.BlockSize] if _, err := io.ReadFull(rand.Reader, iv); err != nil { panic(err) } stream := cipher.NewCTR(block, iv) stream.XORKeyStream(ciphertext[aes.BlockSize:], plaintext) // It's important to remember that ciphertexts must be authenticated // (i.e. by using crypto/hmac) as well as being encrypted in order to // be secure. // CTR mode is the same for both encryption and decryption, so we can // also decrypt that ciphertext with NewCTR. plaintext2 := make([]byte, len(plaintext)) stream = cipher.NewCTR(block, iv) stream.XORKeyStream(plaintext2, ciphertext[aes.BlockSize:]) fmt.Printf("%s\n", plaintext2) // Output: some plaintext } func ExampleNewOFB() { key := []byte("example key 1234") plaintext := []byte("some plaintext") block, err := aes.NewCipher(key) if err != nil { panic(err) } // The IV needs to be unique, but not secure. Therefore it's common to // include it at the beginning of the ciphertext. ciphertext := make([]byte, aes.BlockSize+len(plaintext)) iv := ciphertext[:aes.BlockSize] if _, err := io.ReadFull(rand.Reader, iv); err != nil { panic(err) } stream := cipher.NewOFB(block, iv) stream.XORKeyStream(ciphertext[aes.BlockSize:], plaintext) // It's important to remember that ciphertexts must be authenticated // (i.e. by using crypto/hmac) as well as being encrypted in order to // be secure. // OFB mode is the same for both encryption and decryption, so we can // also decrypt that ciphertext with NewOFB. plaintext2 := make([]byte, len(plaintext)) stream = cipher.NewOFB(block, iv) stream.XORKeyStream(plaintext2, ciphertext[aes.BlockSize:]) fmt.Printf("%s\n", plaintext2) // Output: some plaintext } func ExampleStreamReader() { key := []byte("example key 1234") inFile, err := os.Open("encrypted-file") if err != nil { panic(err) } defer inFile.Close() block, err := aes.NewCipher(key) if err != nil { panic(err) } // If the key is unique for each ciphertext, then it's ok to use a zero // IV. var iv [aes.BlockSize]byte stream := cipher.NewOFB(block, iv[:]) outFile, err := os.OpenFile("decrypted-file", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) if err != nil { panic(err) } defer outFile.Close() reader := &cipher.StreamReader{S: stream, R: inFile} // Copy the input file to the output file, decrypting as we go. if _, err := io.Copy(outFile, reader); err != nil { panic(err) } // Note that this example is simplistic in that it omits any // authentication of the encrypted data. It you were actually to use // StreamReader in this manner, an attacker could flip arbitrary bits in // the output. } func ExampleStreamWriter() { key := []byte("example key 1234") inFile, err := os.Open("plaintext-file") if err != nil { panic(err) } defer inFile.Close() block, err := aes.NewCipher(key) if err != nil { panic(err) } // If the key is unique for each ciphertext, then it's ok to use a zero // IV. var iv [aes.BlockSize]byte stream := cipher.NewOFB(block, iv[:]) outFile, err := os.OpenFile("encrypted-file", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) if err != nil { panic(err) } defer outFile.Close() writer := &cipher.StreamWriter{S: stream, W: outFile} // Copy the input file to the output file, encrypting as we go. if _, err := io.Copy(writer, inFile); err != nil { panic(err) } // Note that this example is simplistic in that it omits any // authentication of the encrypted data. It you were actually to use // StreamReader in this manner, an attacker could flip arbitrary bits in // the decrypted result. } go/src/pkg/crypto/cipher/gcm.go0100644000000000000000000002307612412656737016746 0ustar00rootroot00000000000000// Copyright 2013 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 cipher import ( "crypto/subtle" "errors" ) // AEAD is a cipher mode providing authenticated encryption with associated // data. type AEAD interface { // NonceSize returns the size of the nonce that must be passed to Seal // and Open. NonceSize() int // Overhead returns the maximum difference between the lengths of a // plaintext and ciphertext. Overhead() int // Seal encrypts and authenticates plaintext, authenticates the // additional data and appends the result to dst, returning the updated // slice. The nonce must be NonceSize() bytes long and unique for all // time, for a given key. // // The plaintext and dst may alias exactly or not at all. Seal(dst, nonce, plaintext, data []byte) []byte // Open decrypts and authenticates ciphertext, authenticates the // additional data and, if successful, appends the resulting plaintext // to dst, returning the updated slice. The nonce must be NonceSize() // bytes long and both it and the additional data must match the // value passed to Seal. // // The ciphertext and dst may alias exactly or not at all. Open(dst, nonce, ciphertext, data []byte) ([]byte, error) } // gcmFieldElement represents a value in GF(2¹²⁸). In order to reflect the GCM // standard and make getUint64 suitable for marshaling these values, the bits // are stored backwards. For example: // the coefficient of x⁰ can be obtained by v.low >> 63. // the coefficient of x⁶³ can be obtained by v.low & 1. // the coefficient of x⁶⁴ can be obtained by v.high >> 63. // the coefficient of x¹²⁷ can be obtained by v.high & 1. type gcmFieldElement struct { low, high uint64 } // gcm represents a Galois Counter Mode with a specific key. See // http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-revised-spec.pdf type gcm struct { cipher Block // productTable contains the first sixteen powers of the key, H. // However, they are in bit reversed order. See NewGCM. productTable [16]gcmFieldElement } // NewGCM returns the given 128-bit, block cipher wrapped in Galois Counter Mode. func NewGCM(cipher Block) (AEAD, error) { if cipher.BlockSize() != gcmBlockSize { return nil, errors.New("cipher: NewGCM requires 128-bit block cipher") } var key [gcmBlockSize]byte cipher.Encrypt(key[:], key[:]) g := &gcm{cipher: cipher} // We precompute 16 multiples of |key|. However, when we do lookups // into this table we'll be using bits from a field element and // therefore the bits will be in the reverse order. So normally one // would expect, say, 4*key to be in index 4 of the table but due to // this bit ordering it will actually be in index 0010 (base 2) = 2. x := gcmFieldElement{ getUint64(key[:8]), getUint64(key[8:]), } g.productTable[reverseBits(1)] = x for i := 2; i < 16; i += 2 { g.productTable[reverseBits(i)] = gcmDouble(&g.productTable[reverseBits(i/2)]) g.productTable[reverseBits(i+1)] = gcmAdd(&g.productTable[reverseBits(i)], &x) } return g, nil } const ( gcmBlockSize = 16 gcmTagSize = 16 gcmNonceSize = 12 ) func (*gcm) NonceSize() int { return gcmNonceSize } func (*gcm) Overhead() int { return gcmTagSize } func (g *gcm) Seal(dst, nonce, plaintext, data []byte) []byte { if len(nonce) != gcmNonceSize { panic("cipher: incorrect nonce length given to GCM") } ret, out := sliceForAppend(dst, len(plaintext)+gcmTagSize) // See GCM spec, section 7.1. var counter, tagMask [gcmBlockSize]byte copy(counter[:], nonce) counter[gcmBlockSize-1] = 1 g.cipher.Encrypt(tagMask[:], counter[:]) gcmInc32(&counter) g.counterCrypt(out, plaintext, &counter) g.auth(out[len(plaintext):], out[:len(plaintext)], data, &tagMask) return ret } var errOpen = errors.New("cipher: message authentication failed") func (g *gcm) Open(dst, nonce, ciphertext, data []byte) ([]byte, error) { if len(nonce) != gcmNonceSize { panic("cipher: incorrect nonce length given to GCM") } if len(ciphertext) < gcmTagSize { return nil, errOpen } tag := ciphertext[len(ciphertext)-gcmTagSize:] ciphertext = ciphertext[:len(ciphertext)-gcmTagSize] // See GCM spec, section 7.1. var counter, tagMask [gcmBlockSize]byte copy(counter[:], nonce) counter[gcmBlockSize-1] = 1 g.cipher.Encrypt(tagMask[:], counter[:]) gcmInc32(&counter) var expectedTag [gcmTagSize]byte g.auth(expectedTag[:], ciphertext, data, &tagMask) if subtle.ConstantTimeCompare(expectedTag[:], tag) != 1 { return nil, errOpen } ret, out := sliceForAppend(dst, len(ciphertext)) g.counterCrypt(out, ciphertext, &counter) return ret, nil } // reverseBits reverses the order of the bits of 4-bit number in i. func reverseBits(i int) int { i = ((i << 2) & 0xc) | ((i >> 2) & 0x3) i = ((i << 1) & 0xa) | ((i >> 1) & 0x5) return i } // gcmAdd adds two elements of GF(2¹²⁸) and returns the sum. func gcmAdd(x, y *gcmFieldElement) gcmFieldElement { // Addition in a characteristic 2 field is just XOR. return gcmFieldElement{x.low ^ y.low, x.high ^ y.high} } // gcmDouble returns the result of doubling an element of GF(2¹²⁸). func gcmDouble(x *gcmFieldElement) (double gcmFieldElement) { msbSet := x.high&1 == 1 // Because of the bit-ordering, doubling is actually a right shift. double.high = x.high >> 1 double.high |= x.low << 63 double.low = x.low >> 1 // If the most-significant bit was set before shifting then it, // conceptually, becomes a term of x^128. This is greater than the // irreducible polynomial so the result has to be reduced. The // irreducible polynomial is 1+x+x^2+x^7+x^128. We can subtract that to // eliminate the term at x^128 which also means subtracting the other // four terms. In characteristic 2 fields, subtraction == addition == // XOR. if msbSet { double.low ^= 0xe100000000000000 } return } var gcmReductionTable = []uint16{ 0x0000, 0x1c20, 0x3840, 0x2460, 0x7080, 0x6ca0, 0x48c0, 0x54e0, 0xe100, 0xfd20, 0xd940, 0xc560, 0x9180, 0x8da0, 0xa9c0, 0xb5e0, } // mul sets y to y*H, where H is the GCM key, fixed during NewGCM. func (g *gcm) mul(y *gcmFieldElement) { var z gcmFieldElement for i := 0; i < 2; i++ { word := y.high if i == 1 { word = y.low } // Multiplication works by multiplying z by 16 and adding in // one of the precomputed multiples of H. for j := 0; j < 64; j += 4 { msw := z.high & 0xf z.high >>= 4 z.high |= z.low << 60 z.low >>= 4 z.low ^= uint64(gcmReductionTable[msw]) << 48 // the values in |table| are ordered for // little-endian bit positions. See the comment // in NewGCM. t := &g.productTable[word&0xf] z.low ^= t.low z.high ^= t.high word >>= 4 } } *y = z } // updateBlocks extends y with more polynomial terms from blocks, based on // Horner's rule. There must be a multiple of gcmBlockSize bytes in blocks. func (g *gcm) updateBlocks(y *gcmFieldElement, blocks []byte) { for len(blocks) > 0 { y.low ^= getUint64(blocks) y.high ^= getUint64(blocks[8:]) g.mul(y) blocks = blocks[gcmBlockSize:] } } // update extends y with more polynomial terms from data. If data is not a // multiple of gcmBlockSize bytes long then the remainder is zero padded. func (g *gcm) update(y *gcmFieldElement, data []byte) { fullBlocks := (len(data) >> 4) << 4 g.updateBlocks(y, data[:fullBlocks]) if len(data) != fullBlocks { var partialBlock [gcmBlockSize]byte copy(partialBlock[:], data[fullBlocks:]) g.updateBlocks(y, partialBlock[:]) } } // gcmInc32 treats the final four bytes of counterBlock as a big-endian value // and increments it. func gcmInc32(counterBlock *[16]byte) { for i := gcmBlockSize - 1; i >= gcmBlockSize-4; i-- { counterBlock[i]++ if counterBlock[i] != 0 { break } } } // sliceForAppend takes a slice and a requested number of bytes. It returns a // slice with the contents of the given slice followed by that many bytes and a // second slice that aliases into it and contains only the extra bytes. If the // original slice has sufficient capacity then no allocation is performed. func sliceForAppend(in []byte, n int) (head, tail []byte) { if total := len(in) + n; cap(in) >= total { head = in[:total] } else { head = make([]byte, total) copy(head, in) } tail = head[len(in):] return } // counterCrypt crypts in to out using g.cipher in counter mode. func (g *gcm) counterCrypt(out, in []byte, counter *[gcmBlockSize]byte) { var mask [gcmBlockSize]byte for len(in) >= gcmBlockSize { g.cipher.Encrypt(mask[:], counter[:]) gcmInc32(counter) xorWords(out, in, mask[:]) out = out[gcmBlockSize:] in = in[gcmBlockSize:] } if len(in) > 0 { g.cipher.Encrypt(mask[:], counter[:]) gcmInc32(counter) xorBytes(out, in, mask[:]) } } // auth calculates GHASH(ciphertext, additionalData), masks the result with // tagMask and writes the result to out. func (g *gcm) auth(out, ciphertext, additionalData []byte, tagMask *[gcmTagSize]byte) { var y gcmFieldElement g.update(&y, additionalData) g.update(&y, ciphertext) y.low ^= uint64(len(additionalData)) * 8 y.high ^= uint64(len(ciphertext)) * 8 g.mul(&y) putUint64(out, y.low) putUint64(out[8:], y.high) xorWords(out, out, tagMask[:]) } func getUint64(data []byte) uint64 { r := uint64(data[0])<<56 | uint64(data[1])<<48 | uint64(data[2])<<40 | uint64(data[3])<<32 | uint64(data[4])<<24 | uint64(data[5])<<16 | uint64(data[6])<<8 | uint64(data[7]) return r } func putUint64(out []byte, v uint64) { out[0] = byte(v >> 56) out[1] = byte(v >> 48) out[2] = byte(v >> 40) out[3] = byte(v >> 32) out[4] = byte(v >> 24) out[5] = byte(v >> 16) out[6] = byte(v >> 8) out[7] = byte(v) } go/src/pkg/crypto/cipher/gcm_test.go0100644000000000000000000001141712412656737020001 0ustar00rootroot00000000000000// Copyright 2013 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 cipher_test import ( "bytes" "crypto/aes" "crypto/cipher" "encoding/hex" "testing" ) // AES-GCM test vectors taken from gcmEncryptExtIV128.rsp from // http://csrc.nist.gov/groups/STM/cavp/index.html. var aesGCMTests = []struct { key, nonce, plaintext, ad, result string }{ { "11754cd72aec309bf52f7687212e8957", "3c819d9a9bed087615030b65", "", "", "250327c674aaf477aef2675748cf6971", }, { "ca47248ac0b6f8372a97ac43508308ed", "ffd2b598feabc9019262d2be", "", "", "60d20404af527d248d893ae495707d1a", }, { "77be63708971c4e240d1cb79e8d77feb", "e0e00f19fed7ba0136a797f3", "", "7a43ec1d9c0a5a78a0b16533a6213cab", "209fcc8d3675ed938e9c7166709dd946", }, { "7680c5d3ca6154758e510f4d25b98820", "f8f105f9c3df4965780321f8", "", "c94c410194c765e3dcc7964379758ed3", "94dca8edfcf90bb74b153c8d48a17930", }, { "7fddb57453c241d03efbed3ac44e371c", "ee283a3fc75575e33efd4887", "d5de42b461646c255c87bd2962d3b9a2", "", "2ccda4a5415cb91e135c2a0f78c9b2fdb36d1df9b9d5e596f83e8b7f52971cb3", }, { "ab72c77b97cb5fe9a382d9fe81ffdbed", "54cc7dc2c37ec006bcc6d1da", "007c5e5b3e59df24a7c355584fc1518d", "", "0e1bde206a07a9c2c1b65300f8c649972b4401346697138c7a4891ee59867d0c", }, { "fe47fcce5fc32665d2ae399e4eec72ba", "5adb9609dbaeb58cbd6e7275", "7c0e88c88899a779228465074797cd4c2e1498d259b54390b85e3eef1c02df60e743f1b840382c4bccaf3bafb4ca8429bea063", "88319d6e1d3ffa5f987199166c8a9b56c2aeba5a", "98f4826f05a265e6dd2be82db241c0fbbbf9ffb1c173aa83964b7cf5393043736365253ddbc5db8778371495da76d269e5db3e291ef1982e4defedaa2249f898556b47", }, { "ec0c2ba17aa95cd6afffe949da9cc3a8", "296bce5b50b7d66096d627ef", "b85b3753535b825cbe5f632c0b843c741351f18aa484281aebec2f45bb9eea2d79d987b764b9611f6c0f8641843d5d58f3a242", "f8d00f05d22bf68599bcdeb131292ad6e2df5d14", "a7443d31c26bdf2a1c945e29ee4bd344a99cfaf3aa71f8b3f191f83c2adfc7a07162995506fde6309ffc19e716eddf1a828c5a890147971946b627c40016da1ecf3e77", }, { "2c1f21cf0f6fb3661943155c3e3d8492", "23cb5ff362e22426984d1907", "42f758836986954db44bf37c6ef5e4ac0adaf38f27252a1b82d02ea949c8a1a2dbc0d68b5615ba7c1220ff6510e259f06655d8", "5d3624879d35e46849953e45a32a624d6a6c536ed9857c613b572b0333e701557a713e3f010ecdf9a6bd6c9e3e44b065208645aff4aabee611b391528514170084ccf587177f4488f33cfb5e979e42b6e1cfc0a60238982a7aec", "81824f0e0d523db30d3da369fdc0d60894c7a0a20646dd015073ad2732bd989b14a222b6ad57af43e1895df9dca2a5344a62cc57a3ee28136e94c74838997ae9823f3a", }, { "d9f7d2411091f947b4d6f1e2d1f0fb2e", "e1934f5db57cc983e6b180e7", "73ed042327f70fe9c572a61545eda8b2a0c6e1d6c291ef19248e973aee6c312012f490c2c6f6166f4a59431e182663fcaea05a", "0a8a18a7150e940c3d87b38e73baee9a5c049ee21795663e264b694a949822b639092d0e67015e86363583fcf0ca645af9f43375f05fdb4ce84f411dcbca73c2220dea03a20115d2e51398344b16bee1ed7c499b353d6c597af8", "aaadbd5c92e9151ce3db7210b8714126b73e43436d242677afa50384f2149b831f1d573c7891c2a91fbc48db29967ec9542b2321b51ca862cb637cdd03b99a0f93b134", }, { "fe9bb47deb3a61e423c2231841cfd1fb", "4d328eb776f500a2f7fb47aa", "f1cc3818e421876bb6b8bbd6c9", "", "b88c5c1977b35b517b0aeae96743fd4727fe5cdb4b5b42818dea7ef8c9", }, { "6703df3701a7f54911ca72e24dca046a", "12823ab601c350ea4bc2488c", "793cd125b0b84a043e3ac67717", "", "b2051c80014f42f08735a7b0cd38e6bcd29962e5f2c13626b85a877101", }, } func TestAESGCM(t *testing.T) { for i, test := range aesGCMTests { key, _ := hex.DecodeString(test.key) aes, err := aes.NewCipher(key) if err != nil { t.Fatal(err) } nonce, _ := hex.DecodeString(test.nonce) plaintext, _ := hex.DecodeString(test.plaintext) ad, _ := hex.DecodeString(test.ad) aesgcm, err := cipher.NewGCM(aes) if err != nil { t.Fatal(err) } ct := aesgcm.Seal(nil, nonce, plaintext, ad) if ctHex := hex.EncodeToString(ct); ctHex != test.result { t.Errorf("#%d: got %s, want %s", i, ctHex, test.result) continue } plaintext2, err := aesgcm.Open(nil, nonce, ct, ad) if err != nil { t.Errorf("#%d: Open failed", i) continue } if !bytes.Equal(plaintext, plaintext2) { t.Errorf("#%d: plaintext's don't match: got %x vs %x", i, plaintext2, plaintext) continue } if len(ad) > 0 { ad[0] ^= 0x80 if _, err := aesgcm.Open(nil, nonce, ct, ad); err == nil { t.Errorf("#%d: Open was successful after altering additional data", i) } ad[0] ^= 0x80 } nonce[0] ^= 0x80 if _, err := aesgcm.Open(nil, nonce, ct, ad); err == nil { t.Errorf("#%d: Open was successful after altering nonce", i) } nonce[0] ^= 0x80 ct[0] ^= 0x80 if _, err := aesgcm.Open(nil, nonce, ct, ad); err == nil { t.Errorf("#%d: Open was successful after altering ciphertext", i) } ct[0] ^= 0x80 } } go/src/pkg/crypto/cipher/io.go0100644000000000000000000000274012412656737016602 0ustar00rootroot00000000000000// 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. package cipher import "io" // The Stream* objects are so simple that all their members are public. Users // can create them themselves. // StreamReader wraps a Stream into an io.Reader. It calls XORKeyStream // to process each slice of data which passes through. type StreamReader struct { S Stream R io.Reader } func (r StreamReader) Read(dst []byte) (n int, err error) { n, err = r.R.Read(dst) r.S.XORKeyStream(dst[:n], dst[:n]) return } // StreamWriter wraps a Stream into an io.Writer. It calls XORKeyStream // to process each slice of data which passes through. If any Write call // returns short then the StreamWriter is out of sync and must be discarded. // A StreamWriter has no internal buffering; Close does not need // to be called to flush write data. type StreamWriter struct { S Stream W io.Writer Err error // unused } func (w StreamWriter) Write(src []byte) (n int, err error) { c := make([]byte, len(src)) w.S.XORKeyStream(c, src) n, err = w.W.Write(c) if n != len(src) { if err == nil { // should never happen err = io.ErrShortWrite } } return } // Close closes the underlying Writer and returns its Close return value, if the Writer // is also an io.Closer. Otherwise it returns nil. func (w StreamWriter) Close() error { if c, ok := w.W.(io.Closer); ok { return c.Close() } return nil } go/src/pkg/crypto/cipher/ofb.go0100644000000000000000000000254112412656737016740 0ustar00rootroot00000000000000// Copyright 2011 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. // OFB (Output Feedback) Mode. package cipher type ofb struct { b Block cipher []byte out []byte outUsed int } // NewOFB returns a Stream that encrypts or decrypts using the block cipher b // in output feedback mode. The initialization vector iv's length must be equal // to b's block size. func NewOFB(b Block, iv []byte) Stream { blockSize := b.BlockSize() if len(iv) != blockSize { return nil } bufSize := streamBufferSize if bufSize < blockSize { bufSize = blockSize } x := &ofb{ b: b, cipher: make([]byte, blockSize), out: make([]byte, 0, bufSize), outUsed: 0, } copy(x.cipher, iv) return x } func (x *ofb) refill() { bs := x.b.BlockSize() remain := len(x.out) - x.outUsed if remain > x.outUsed { return } copy(x.out, x.out[x.outUsed:]) x.out = x.out[:cap(x.out)] for remain < len(x.out)-bs { x.b.Encrypt(x.cipher, x.cipher) copy(x.out[remain:], x.cipher) remain += bs } x.out = x.out[:remain] x.outUsed = 0 } func (x *ofb) XORKeyStream(dst, src []byte) { for len(src) > 0 { if x.outUsed >= len(x.out)-x.b.BlockSize() { x.refill() } n := xorBytes(dst, src, x.out[x.outUsed:]) dst = dst[n:] src = src[n:] x.outUsed += n } } go/src/pkg/crypto/cipher/ofb_test.go0100644000000000000000000000571612412656737020006 0ustar00rootroot00000000000000// Copyright 2009 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. // OFB AES test vectors. // See U.S. National Institute of Standards and Technology (NIST) // Special Publication 800-38A, ``Recommendation for Block Cipher // Modes of Operation,'' 2001 Edition, pp. 52-55. package cipher_test import ( "bytes" "crypto/aes" "crypto/cipher" "testing" ) type ofbTest struct { name string key []byte iv []byte in []byte out []byte } var ofbTests = []ofbTest{ // NIST SP 800-38A pp 52-55 { "OFB-AES128", commonKey128, commonIV, commonInput, []byte{ 0x3b, 0x3f, 0xd9, 0x2e, 0xb7, 0x2d, 0xad, 0x20, 0x33, 0x34, 0x49, 0xf8, 0xe8, 0x3c, 0xfb, 0x4a, 0x77, 0x89, 0x50, 0x8d, 0x16, 0x91, 0x8f, 0x03, 0xf5, 0x3c, 0x52, 0xda, 0xc5, 0x4e, 0xd8, 0x25, 0x97, 0x40, 0x05, 0x1e, 0x9c, 0x5f, 0xec, 0xf6, 0x43, 0x44, 0xf7, 0xa8, 0x22, 0x60, 0xed, 0xcc, 0x30, 0x4c, 0x65, 0x28, 0xf6, 0x59, 0xc7, 0x78, 0x66, 0xa5, 0x10, 0xd9, 0xc1, 0xd6, 0xae, 0x5e, }, }, { "OFB-AES192", commonKey192, commonIV, commonInput, []byte{ 0xcd, 0xc8, 0x0d, 0x6f, 0xdd, 0xf1, 0x8c, 0xab, 0x34, 0xc2, 0x59, 0x09, 0xc9, 0x9a, 0x41, 0x74, 0xfc, 0xc2, 0x8b, 0x8d, 0x4c, 0x63, 0x83, 0x7c, 0x09, 0xe8, 0x17, 0x00, 0xc1, 0x10, 0x04, 0x01, 0x8d, 0x9a, 0x9a, 0xea, 0xc0, 0xf6, 0x59, 0x6f, 0x55, 0x9c, 0x6d, 0x4d, 0xaf, 0x59, 0xa5, 0xf2, 0x6d, 0x9f, 0x20, 0x08, 0x57, 0xca, 0x6c, 0x3e, 0x9c, 0xac, 0x52, 0x4b, 0xd9, 0xac, 0xc9, 0x2a, }, }, { "OFB-AES256", commonKey256, commonIV, commonInput, []byte{ 0xdc, 0x7e, 0x84, 0xbf, 0xda, 0x79, 0x16, 0x4b, 0x7e, 0xcd, 0x84, 0x86, 0x98, 0x5d, 0x38, 0x60, 0x4f, 0xeb, 0xdc, 0x67, 0x40, 0xd2, 0x0b, 0x3a, 0xc8, 0x8f, 0x6a, 0xd8, 0x2a, 0x4f, 0xb0, 0x8d, 0x71, 0xab, 0x47, 0xa0, 0x86, 0xe8, 0x6e, 0xed, 0xf3, 0x9d, 0x1c, 0x5b, 0xba, 0x97, 0xc4, 0x08, 0x01, 0x26, 0x14, 0x1d, 0x67, 0xf3, 0x7b, 0xe8, 0x53, 0x8f, 0x5a, 0x8b, 0xe7, 0x40, 0xe4, 0x84, }, }, } func TestOFB(t *testing.T) { for _, tt := range ofbTests { test := tt.name c, err := aes.NewCipher(tt.key) if err != nil { t.Errorf("%s: NewCipher(%d bytes) = %s", test, len(tt.key), err) continue } for j := 0; j <= 5; j += 5 { plaintext := tt.in[0 : len(tt.in)-j] ofb := cipher.NewOFB(c, tt.iv) ciphertext := make([]byte, len(plaintext)) ofb.XORKeyStream(ciphertext, plaintext) if !bytes.Equal(ciphertext, tt.out[:len(plaintext)]) { t.Errorf("%s/%d: encrypting\ninput % x\nhave % x\nwant % x", test, len(plaintext), plaintext, ciphertext, tt.out) } } for j := 0; j <= 5; j += 5 { ciphertext := tt.out[0 : len(tt.in)-j] ofb := cipher.NewOFB(c, tt.iv) plaintext := make([]byte, len(ciphertext)) ofb.XORKeyStream(plaintext, ciphertext) if !bytes.Equal(plaintext, tt.in[:len(ciphertext)]) { t.Errorf("%s/%d: decrypting\nhave % x\nwant % x", test, len(ciphertext), plaintext, tt.in) } } if t.Failed() { break } } } go/src/pkg/crypto/cipher/xor.go0100644000000000000000000000366512412656737017012 0ustar00rootroot00000000000000// Copyright 2013 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 cipher import ( "runtime" "unsafe" ) const wordSize = int(unsafe.Sizeof(uintptr(0))) const supportsUnaligned = runtime.GOARCH == "386" || runtime.GOARCH == "amd64" // fastXORBytes xors in bulk. It only works on architectures that // support unaligned read/writes. func fastXORBytes(dst, a, b []byte) int { n := len(a) if len(b) < n { n = len(b) } w := n / wordSize if w > 0 { dw := *(*[]uintptr)(unsafe.Pointer(&dst)) aw := *(*[]uintptr)(unsafe.Pointer(&a)) bw := *(*[]uintptr)(unsafe.Pointer(&b)) for i := 0; i < w; i++ { dw[i] = aw[i] ^ bw[i] } } for i := (n - n%wordSize); i < n; i++ { dst[i] = a[i] ^ b[i] } return n } func safeXORBytes(dst, a, b []byte) int { n := len(a) if len(b) < n { n = len(b) } for i := 0; i < n; i++ { dst[i] = a[i] ^ b[i] } return n } // xorBytes xors the bytes in a and b. The destination is assumed to have enough // space. Returns the number of bytes xor'd. func xorBytes(dst, a, b []byte) int { if supportsUnaligned { return fastXORBytes(dst, a, b) } else { // TODO(hanwen): if (dst, a, b) have common alignment // we could still try fastXORBytes. It is not clear // how often this happens, and it's only worth it if // the block encryption itself is hardware // accelerated. return safeXORBytes(dst, a, b) } } // fastXORWords XORs multiples of 4 or 8 bytes (depending on architecture.) // The arguments are assumed to be of equal length. func fastXORWords(dst, a, b []byte) { dw := *(*[]uintptr)(unsafe.Pointer(&dst)) aw := *(*[]uintptr)(unsafe.Pointer(&a)) bw := *(*[]uintptr)(unsafe.Pointer(&b)) n := len(b) / wordSize for i := 0; i < n; i++ { dw[i] = aw[i] ^ bw[i] } } func xorWords(dst, a, b []byte) { if supportsUnaligned { fastXORWords(dst, a, b) } else { safeXORBytes(dst, a, b) } } go/src/pkg/crypto/cipher/xor_test.go0100644000000000000000000000122312412656737020035 0ustar00rootroot00000000000000// Copyright 2013 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 cipher import ( "bytes" "testing" ) func TestXOR(t *testing.T) { for alignP := 0; alignP < 2; alignP++ { for alignQ := 0; alignQ < 2; alignQ++ { for alignD := 0; alignD < 2; alignD++ { p := make([]byte, 1024)[alignP:] q := make([]byte, 1024)[alignQ:] d1 := make([]byte, 1024+alignD)[alignD:] d2 := make([]byte, 1024+alignD)[alignD:] xorBytes(d1, p, q) safeXORBytes(d2, p, q) if bytes.Compare(d1, d2) != 0 { t.Error("not equal") } } } } } go/src/pkg/crypto/crypto.go0100644000000000000000000000466012412656737016244 0ustar00rootroot00000000000000// Copyright 2011 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 crypto collects common cryptographic constants. package crypto import ( "hash" "strconv" ) // Hash identifies a cryptographic hash function that is implemented in another // package. type Hash uint const ( MD4 Hash = 1 + iota // import code.google.com/p/go.crypto/md4 MD5 // import crypto/md5 SHA1 // import crypto/sha1 SHA224 // import crypto/sha256 SHA256 // import crypto/sha256 SHA384 // import crypto/sha512 SHA512 // import crypto/sha512 MD5SHA1 // no implementation; MD5+SHA1 used for TLS RSA RIPEMD160 // import code.google.com/p/go.crypto/ripemd160 maxHash ) var digestSizes = []uint8{ MD4: 16, MD5: 16, SHA1: 20, SHA224: 28, SHA256: 32, SHA384: 48, SHA512: 64, MD5SHA1: 36, RIPEMD160: 20, } // Size returns the length, in bytes, of a digest resulting from the given hash // function. It doesn't require that the hash function in question be linked // into the program. func (h Hash) Size() int { if h > 0 && h < maxHash { return int(digestSizes[h]) } panic("crypto: Size of unknown hash function") } var hashes = make([]func() hash.Hash, maxHash) // New returns a new hash.Hash calculating the given hash function. New panics // if the hash function is not linked into the binary. func (h Hash) New() hash.Hash { if h > 0 && h < maxHash { f := hashes[h] if f != nil { return f() } } panic("crypto: requested hash function #" + strconv.Itoa(int(h)) + " is unavailable") } // Available reports whether the given hash function is linked into the binary. func (h Hash) Available() bool { return h < maxHash && hashes[h] != nil } // RegisterHash registers a function that returns a new instance of the given // hash function. This is intended to be called from the init function in // packages that implement hash functions. func RegisterHash(h Hash, f func() hash.Hash) { if h >= maxHash { panic("crypto: RegisterHash of unknown hash function") } hashes[h] = f } // PublicKey represents a public key using an unspecified algorithm. type PublicKey interface{} // PrivateKey represents a private key using an unspecified algorithm. type PrivateKey interface{} go/src/pkg/crypto/des0040755000000000000000000000000012412656737015066 5ustar00rootroot00000000000000go/src/pkg/crypto/des/block.go0100644000000000000000000001344412412656737016571 0ustar00rootroot00000000000000// Copyright 2011 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 des import ( "encoding/binary" ) func cryptBlock(subkeys []uint64, dst, src []byte, decrypt bool) { b := binary.BigEndian.Uint64(src) b = permuteInitialBlock(b) left, right := uint32(b>>32), uint32(b) var subkey uint64 for i := 0; i < 16; i++ { if decrypt { subkey = subkeys[15-i] } else { subkey = subkeys[i] } left, right = right, left^feistel(right, subkey) } // switch left & right and perform final permutation preOutput := (uint64(right) << 32) | uint64(left) binary.BigEndian.PutUint64(dst, permuteFinalBlock(preOutput)) } // Encrypt one block from src into dst, using the subkeys. func encryptBlock(subkeys []uint64, dst, src []byte) { cryptBlock(subkeys, dst, src, false) } // Decrypt one block from src into dst, using the subkeys. func decryptBlock(subkeys []uint64, dst, src []byte) { cryptBlock(subkeys, dst, src, true) } // DES Feistel function func feistel(right uint32, key uint64) (result uint32) { sBoxLocations := key ^ expandBlock(right) var sBoxResult uint32 for i := uint8(0); i < 8; i++ { sBoxLocation := uint8(sBoxLocations>>42) & 0x3f sBoxLocations <<= 6 // row determined by 1st and 6th bit // column is middle four bits row := (sBoxLocation & 0x1) | ((sBoxLocation & 0x20) >> 4) column := (sBoxLocation >> 1) & 0xf sBoxResult ^= feistelBox[i][16*row+column] } return sBoxResult } // feistelBox[s][16*i+j] contains the output of permutationFunction // for sBoxes[s][i][j] << 4*(7-s) var feistelBox [8][64]uint32 // general purpose function to perform DES block permutations func permuteBlock(src uint64, permutation []uint8) (block uint64) { for position, n := range permutation { bit := (src >> n) & 1 block |= bit << uint((len(permutation)-1)-position) } return } func init() { for s := range sBoxes { for i := 0; i < 4; i++ { for j := 0; j < 16; j++ { f := uint64(sBoxes[s][i][j]) << (4 * (7 - uint(s))) f = permuteBlock(uint64(f), permutationFunction[:]) feistelBox[s][16*i+j] = uint32(f) } } } } // expandBlock expands an input block of 32 bits, // producing an output block of 48 bits. func expandBlock(src uint32) (block uint64) { // rotate the 5 highest bits to the right. src = (src << 5) | (src >> 27) for i := 0; i < 8; i++ { block <<= 6 // take the 6 bits on the right block |= uint64(src) & (1<<6 - 1) // advance by 4 bits. src = (src << 4) | (src >> 28) } return } // permuteInitialBlock is equivalent to the permutation defined // by initialPermutation. func permuteInitialBlock(block uint64) uint64 { // block = b7 b6 b5 b4 b3 b2 b1 b0 (8 bytes) b1 := block >> 48 b2 := block << 48 block ^= b1 ^ b2 ^ b1<<48 ^ b2>>48 // block = b1 b0 b5 b4 b3 b2 b7 b6 b1 = block >> 32 & 0xff00ff b2 = (block & 0xff00ff00) block ^= b1<<32 ^ b2 ^ b1<<8 ^ b2<<24 // exchange b0 b4 with b3 b7 // block is now b1 b3 b5 b7 b0 b2 b4 b7, the permutation: // ... 8 // ... 24 // ... 40 // ... 56 // 7 6 5 4 3 2 1 0 // 23 22 21 20 19 18 17 16 // ... 32 // ... 48 // exchange 4,5,6,7 with 32,33,34,35 etc. b1 = block & 0x0f0f00000f0f0000 b2 = block & 0x0000f0f00000f0f0 block ^= b1 ^ b2 ^ b1>>12 ^ b2<<12 // block is the permutation: // // [+8] [+40] // // 7 6 5 4 // 23 22 21 20 // 3 2 1 0 // 19 18 17 16 [+32] // exchange 0,1,4,5 with 18,19,22,23 b1 = block & 0x3300330033003300 b2 = block & 0x00cc00cc00cc00cc block ^= b1 ^ b2 ^ b1>>6 ^ b2<<6 // block is the permutation: // 15 14 // 13 12 // 11 10 // 9 8 // 7 6 // 5 4 // 3 2 // 1 0 [+16] [+32] [+64] // exchange 0,2,4,6 with 9,11,13,15: b1 = block & 0xaaaaaaaa55555555 block ^= b1 ^ b1>>33 ^ b1<<33 // block is the permutation: // 6 14 22 30 38 46 54 62 // 4 12 20 28 36 44 52 60 // 2 10 18 26 34 42 50 58 // 0 8 16 24 32 40 48 56 // 7 15 23 31 39 47 55 63 // 5 13 21 29 37 45 53 61 // 3 11 19 27 35 43 51 59 // 1 9 17 25 33 41 49 57 return block } // permuteInitialBlock is equivalent to the permutation defined // by finalPermutation. func permuteFinalBlock(block uint64) uint64 { // Perform the same bit exchanges as permuteInitialBlock // but in reverse order. b1 := block & 0xaaaaaaaa55555555 block ^= b1 ^ b1>>33 ^ b1<<33 b1 = block & 0x3300330033003300 b2 := block & 0x00cc00cc00cc00cc block ^= b1 ^ b2 ^ b1>>6 ^ b2<<6 b1 = block & 0x0f0f00000f0f0000 b2 = block & 0x0000f0f00000f0f0 block ^= b1 ^ b2 ^ b1>>12 ^ b2<<12 b1 = block >> 32 & 0xff00ff b2 = (block & 0xff00ff00) block ^= b1<<32 ^ b2 ^ b1<<8 ^ b2<<24 b1 = block >> 48 b2 = block << 48 block ^= b1 ^ b2 ^ b1<<48 ^ b2>>48 return block } // creates 16 28-bit blocks rotated according // to the rotation schedule func ksRotate(in uint32) (out []uint32) { out = make([]uint32, 16) last := in for i := 0; i < 16; i++ { // 28-bit circular left shift left := (last << (4 + ksRotations[i])) >> 4 right := (last << 4) >> (32 - ksRotations[i]) out[i] = left | right last = out[i] } return } // creates 16 56-bit subkeys from the original key func (c *desCipher) generateSubkeys(keyBytes []byte) { // apply PC1 permutation to key key := binary.BigEndian.Uint64(keyBytes) permutedKey := permuteBlock(key, permutedChoice1[:]) // rotate halves of permuted key according to the rotation schedule leftRotations := ksRotate(uint32(permutedKey >> 28)) rightRotations := ksRotate(uint32(permutedKey<<4) >> 4) // generate subkeys for i := 0; i < 16; i++ { // combine halves to form 56-bit input to PC2 pc2Input := uint64(leftRotations[i])<<28 | uint64(rightRotations[i]) // apply PC2 permutation to 7 byte input c.subkeys[i] = permuteBlock(pc2Input, permutedChoice2[:]) } } go/src/pkg/crypto/des/cipher.go0100644000000000000000000000335012412656737016744 0ustar00rootroot00000000000000// Copyright 2011 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 des import ( "crypto/cipher" "strconv" ) // The DES block size in bytes. const BlockSize = 8 type KeySizeError int func (k KeySizeError) Error() string { return "crypto/des: invalid key size " + strconv.Itoa(int(k)) } // desCipher is an instance of DES encryption. type desCipher struct { subkeys [16]uint64 } // NewCipher creates and returns a new cipher.Block. func NewCipher(key []byte) (cipher.Block, error) { if len(key) != 8 { return nil, KeySizeError(len(key)) } c := new(desCipher) c.generateSubkeys(key) return c, nil } func (c *desCipher) BlockSize() int { return BlockSize } func (c *desCipher) Encrypt(dst, src []byte) { encryptBlock(c.subkeys[:], dst, src) } func (c *desCipher) Decrypt(dst, src []byte) { decryptBlock(c.subkeys[:], dst, src) } // A tripleDESCipher is an instance of TripleDES encryption. type tripleDESCipher struct { cipher1, cipher2, cipher3 desCipher } // NewTripleDESCipher creates and returns a new cipher.Block. func NewTripleDESCipher(key []byte) (cipher.Block, error) { if len(key) != 24 { return nil, KeySizeError(len(key)) } c := new(tripleDESCipher) c.cipher1.generateSubkeys(key[:8]) c.cipher2.generateSubkeys(key[8:16]) c.cipher3.generateSubkeys(key[16:]) return c, nil } func (c *tripleDESCipher) BlockSize() int { return BlockSize } func (c *tripleDESCipher) Encrypt(dst, src []byte) { c.cipher1.Encrypt(dst, src) c.cipher2.Decrypt(dst, dst) c.cipher3.Encrypt(dst, dst) } func (c *tripleDESCipher) Decrypt(dst, src []byte) { c.cipher3.Decrypt(dst, src) c.cipher2.Encrypt(dst, dst) c.cipher1.Decrypt(dst, dst) } go/src/pkg/crypto/des/const.go0100644000000000000000000001071412412656737016622 0ustar00rootroot00000000000000// 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. // Package des implements the Data Encryption Standard (DES) and the // Triple Data Encryption Algorithm (TDEA) as defined // in U.S. Federal Information Processing Standards Publication 46-3. package des // Used to perform an initial permutation of a 64-bit input block. var initialPermutation = [64]byte{ 6, 14, 22, 30, 38, 46, 54, 62, 4, 12, 20, 28, 36, 44, 52, 60, 2, 10, 18, 26, 34, 42, 50, 58, 0, 8, 16, 24, 32, 40, 48, 56, 7, 15, 23, 31, 39, 47, 55, 63, 5, 13, 21, 29, 37, 45, 53, 61, 3, 11, 19, 27, 35, 43, 51, 59, 1, 9, 17, 25, 33, 41, 49, 57, } // Used to perform a final permutation of a 4-bit preoutput block. This is the // inverse of initialPermutation var finalPermutation = [64]byte{ 24, 56, 16, 48, 8, 40, 0, 32, 25, 57, 17, 49, 9, 41, 1, 33, 26, 58, 18, 50, 10, 42, 2, 34, 27, 59, 19, 51, 11, 43, 3, 35, 28, 60, 20, 52, 12, 44, 4, 36, 29, 61, 21, 53, 13, 45, 5, 37, 30, 62, 22, 54, 14, 46, 6, 38, 31, 63, 23, 55, 15, 47, 7, 39, } // Used to expand an input block of 32 bits, producing an output block of 48 // bits. var expansionFunction = [48]byte{ 0, 31, 30, 29, 28, 27, 28, 27, 26, 25, 24, 23, 24, 23, 22, 21, 20, 19, 20, 19, 18, 17, 16, 15, 16, 15, 14, 13, 12, 11, 12, 11, 10, 9, 8, 7, 8, 7, 6, 5, 4, 3, 4, 3, 2, 1, 0, 31, } // Yields a 32-bit output from a 32-bit input var permutationFunction = [32]byte{ 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7, } // Used in the key schedule to select 56 bits // from a 64-bit input. var permutedChoice1 = [56]byte{ 7, 15, 23, 31, 39, 47, 55, 63, 6, 14, 22, 30, 38, 46, 54, 62, 5, 13, 21, 29, 37, 45, 53, 61, 4, 12, 20, 28, 1, 9, 17, 25, 33, 41, 49, 57, 2, 10, 18, 26, 34, 42, 50, 58, 3, 11, 19, 27, 35, 43, 51, 59, 36, 44, 52, 60, } // Used in the key schedule to produce each subkey by selecting 48 bits from // the 56-bit input var permutedChoice2 = [48]byte{ 42, 39, 45, 32, 55, 51, 53, 28, 41, 50, 35, 46, 33, 37, 44, 52, 30, 48, 40, 49, 29, 36, 43, 54, 15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24, } // 8 S-boxes composed of 4 rows and 16 columns // Used in the DES cipher function var sBoxes = [8][4][16]uint8{ // S-box 1 { {14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7}, {0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8}, {4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0}, {15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13}, }, // S-box 2 { {15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10}, {3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5}, {0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15}, {13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9}, }, // S-box 3 { {10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8}, {13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1}, {13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7}, {1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12}, }, // S-box 4 { {7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15}, {13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9}, {10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4}, {3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14}, }, // S-box 5 { {2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9}, {14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6}, {4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14}, {11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3}, }, // S-box 6 { {12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11}, {10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8}, {9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6}, {4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13}, }, // S-box 7 { {4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1}, {13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6}, {1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2}, {6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12}, }, // S-box 8 { {13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7}, {1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2}, {7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8}, {2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11}, }, } // Size of left rotation per round in each half of the key schedule var ksRotations = [16]uint8{1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1} go/src/pkg/crypto/des/des_test.go0100644000000000000000000015056712412656737017321 0ustar00rootroot00000000000000// Copyright 2011 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 des import ( "bytes" "testing" ) type CryptTest struct { key []byte in []byte out []byte } // some custom tests for DES var encryptDESTests = []CryptTest{ { []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x8c, 0xa6, 0x4d, 0xe9, 0xc1, 0xb1, 0x23, 0xa7}}, { []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, []byte{0x35, 0x55, 0x50, 0xb2, 0x15, 0x0e, 0x24, 0x51}}, { []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, []byte{0x61, 0x7b, 0x3a, 0x0c, 0xe8, 0xf0, 0x71, 0x00}}, { []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, []byte{0x92, 0x31, 0xf2, 0x36, 0xff, 0x9a, 0xa9, 0x5c}}, { []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xca, 0xaa, 0xaf, 0x4d, 0xea, 0xf1, 0xdb, 0xae}}, { []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, []byte{0x73, 0x59, 0xb2, 0x16, 0x3e, 0x4e, 0xdc, 0x58}}, { []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, []byte{0x6d, 0xce, 0x0d, 0xc9, 0x00, 0x65, 0x56, 0xa3}}, { []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, []byte{0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, []byte{0x9e, 0x84, 0xc5, 0xf3, 0x17, 0x0f, 0x8e, 0xff}}, { []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xd5, 0xd4, 0x4f, 0xf7, 0x20, 0x68, 0x3d, 0x0d}}, { []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, []byte{0x59, 0x73, 0x23, 0x56, 0xf3, 0x6f, 0xde, 0x06}}, { []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, []byte{0x56, 0xcc, 0x09, 0xe7, 0xcf, 0xdc, 0x4c, 0xef}}, { []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, []byte{0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, []byte{0x12, 0xc6, 0x26, 0xaf, 0x05, 0x8b, 0x43, 0x3b}}, { []byte{0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xa6, 0x8c, 0xdc, 0xa9, 0x0c, 0x90, 0x21, 0xf9}}, { []byte{0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, []byte{0x2a, 0x2b, 0xb0, 0x08, 0xdf, 0x97, 0xc2, 0xf2}}, { []byte{0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, []byte{0xed, 0x39, 0xd9, 0x50, 0xfa, 0x74, 0xbc, 0xc4}}, { []byte{0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, []byte{0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, []byte{0xa9, 0x33, 0xf6, 0x18, 0x30, 0x23, 0xb3, 0x10}}, { []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, []byte{0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11}, []byte{0x17, 0x66, 0x8d, 0xfc, 0x72, 0x92, 0x53, 0x2d}}, { []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, []byte{0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, []byte{0xb4, 0xfd, 0x23, 0x16, 0x47, 0xa5, 0xbe, 0xc0}}, { []byte{0x0e, 0x32, 0x92, 0x32, 0xea, 0x6d, 0x0d, 0x73}, []byte{0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87}, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, { []byte{0x73, 0x65, 0x63, 0x52, 0x33, 0x74, 0x24, 0x3b}, // "secR3t$;" []byte{0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x31, 0x32}, // "a test12" []byte{0x37, 0x0d, 0xee, 0x2c, 0x1f, 0xb4, 0xf7, 0xa5}}, { []byte{0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68}, // "abcdefgh" []byte{0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68}, // "abcdefgh" []byte{0x2a, 0x8d, 0x69, 0xde, 0x9d, 0x5f, 0xdf, 0xf9}}, { []byte{0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68}, // "abcdefgh" []byte{0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38}, // "12345678" []byte{0x21, 0xc6, 0x0d, 0xa5, 0x34, 0x24, 0x8b, 0xce}}, { []byte{0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38}, // "12345678" []byte{0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68}, // "abcdefgh" []byte{0x94, 0xd4, 0x43, 0x6b, 0xc3, 0xb5, 0xb6, 0x93}}, { []byte{0x1f, 0x79, 0x90, 0x5f, 0x88, 0x01, 0xc8, 0x88}, // random []byte{0xc7, 0x46, 0x18, 0x73, 0xaf, 0x48, 0x5f, 0xb3}, // random []byte{0xb0, 0x93, 0x50, 0x88, 0xf9, 0x92, 0x44, 0x6a}}, { []byte{0xe6, 0xf4, 0xf2, 0xdb, 0x31, 0x42, 0x53, 0x01}, // random []byte{0xff, 0x3d, 0x25, 0x50, 0x12, 0xe3, 0x4a, 0xc5}, // random []byte{0x86, 0x08, 0xd3, 0xd1, 0x6c, 0x2f, 0xd2, 0x55}}, { []byte{0x69, 0xc1, 0x9d, 0xc1, 0x15, 0xc5, 0xfb, 0x2b}, // random []byte{0x1a, 0x22, 0x5c, 0xaf, 0x1f, 0x1d, 0xa3, 0xf9}, // random []byte{0x64, 0xba, 0x31, 0x67, 0x56, 0x91, 0x1e, 0xa7}}, { []byte{0x6e, 0x5e, 0xe2, 0x47, 0xc4, 0xbf, 0xf6, 0x51}, // random []byte{0x11, 0xc9, 0x57, 0xff, 0x66, 0x89, 0x0e, 0xf0}, // random []byte{0x94, 0xc5, 0x35, 0xb2, 0xc5, 0x8b, 0x39, 0x72}}, } var weakKeyTests = []CryptTest{ { []byte{0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, []byte{0x55, 0x74, 0xc0, 0xbd, 0x7c, 0xdf, 0xf7, 0x39}, // random nil}, { []byte{0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe}, []byte{0xe8, 0xe1, 0xa7, 0xc1, 0xde, 0x11, 0x89, 0xaa}, // random nil}, { []byte{0xe0, 0xe0, 0xe0, 0xe0, 0xf1, 0xf1, 0xf1, 0xf1}, []byte{0x50, 0x6a, 0x4b, 0x94, 0x3b, 0xed, 0x7d, 0xdc}, // random nil}, { []byte{0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e}, []byte{0x88, 0x81, 0x56, 0x38, 0xec, 0x3b, 0x1c, 0x97}, // random nil}, { []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x17, 0xa0, 0x83, 0x62, 0x32, 0xfe, 0x9a, 0x0b}, // random nil}, { []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, []byte{0xca, 0x8f, 0xca, 0x1f, 0x50, 0xc5, 0x7b, 0x49}, // random nil}, { []byte{0xe1, 0xe1, 0xe1, 0xe1, 0xf0, 0xf0, 0xf0, 0xf0}, []byte{0xb1, 0xea, 0xad, 0x7d, 0xe7, 0xc3, 0x7a, 0x43}, // random nil}, { []byte{0x1e, 0x1e, 0x1e, 0x1e, 0x0f, 0x0f, 0x0f, 0x0f}, []byte{0xae, 0x74, 0x7d, 0x6f, 0xef, 0x16, 0xbb, 0x81}, // random nil}, } var semiWeakKeyTests = []CryptTest{ // key and out contain the semi-weak key pair { []byte{0x01, 0x1f, 0x01, 0x1f, 0x01, 0x0e, 0x01, 0x0e}, []byte{0x12, 0xfa, 0x31, 0x16, 0xf9, 0xc5, 0x0a, 0xe4}, // random []byte{0x1f, 0x01, 0x1f, 0x01, 0x0e, 0x01, 0x0e, 0x01}}, { []byte{0x01, 0xe0, 0x01, 0xe0, 0x01, 0xf1, 0x01, 0xf1}, []byte{0xb0, 0x4c, 0x7a, 0xee, 0xd2, 0xe5, 0x4d, 0xb7}, // random []byte{0xe0, 0x01, 0xe0, 0x01, 0xf1, 0x01, 0xf1, 0x01}}, { []byte{0x01, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x01, 0xfe}, []byte{0xa4, 0x81, 0xcd, 0xb1, 0x64, 0x6f, 0xd3, 0xbc}, // random []byte{0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x01}}, { []byte{0x1f, 0xe0, 0x1f, 0xe0, 0x0e, 0xf1, 0x0e, 0xf1}, []byte{0xee, 0x27, 0xdd, 0x88, 0x4c, 0x22, 0xcd, 0xce}, // random []byte{0xe0, 0x1f, 0xe0, 0x1f, 0xf1, 0x0e, 0xf1, 0x0e}}, { []byte{0x1f, 0xfe, 0x1f, 0xfe, 0x0e, 0xfe, 0x0e, 0xfe}, []byte{0x19, 0x3d, 0xcf, 0x97, 0x70, 0xfb, 0xab, 0xe1}, // random []byte{0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x0e, 0xfe, 0x0e}}, { []byte{0xe0, 0xfe, 0xe0, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe}, []byte{0x7c, 0x82, 0x69, 0xe4, 0x1e, 0x86, 0x99, 0xd7}, // random []byte{0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xf1, 0xfe, 0xf1}}, } // some custom tests for TripleDES var encryptTripleDESTests = []CryptTest{ { []byte{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x92, 0x95, 0xb5, 0x9b, 0xb3, 0x84, 0x73, 0x6e}}, { []byte{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, []byte{0xc1, 0x97, 0xf5, 0x58, 0x74, 0x8a, 0x20, 0xe7}}, { []byte{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x3e, 0x68, 0x0a, 0xa7, 0x8b, 0x75, 0xdf, 0x18}}, { []byte{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, []byte{0x6d, 0x6a, 0x4a, 0x64, 0x4c, 0x7b, 0x8c, 0x91}}, { []byte{ // "abcdefgh12345678ABCDEFGH" 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}, []byte{0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30}, // "00000000" []byte{0xe4, 0x61, 0xb7, 0x59, 0x68, 0x8b, 0xff, 0x66}}, { []byte{ // "abcdefgh12345678ABCDEFGH" 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}, []byte{0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38}, // "12345678" []byte{0xdb, 0xd0, 0x92, 0xde, 0xf8, 0x34, 0xff, 0x58}}, { []byte{ // "abcdefgh12345678ABCDEFGH" 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}, []byte{0xf0, 0xc5, 0x82, 0x22, 0xd3, 0xe6, 0x12, 0xd2}, // random []byte{0xba, 0xe4, 0x41, 0xb1, 0x3c, 0x37, 0x4d, 0xf4}}, { []byte{ // random 0xd3, 0x7d, 0x45, 0xee, 0x22, 0xe9, 0xcf, 0x52, 0xf4, 0x65, 0xa2, 0x4f, 0x70, 0xd1, 0x81, 0x8a, 0x3d, 0xbe, 0x2f, 0x39, 0xc7, 0x71, 0xd2, 0xe9}, []byte{0x49, 0x53, 0xc3, 0xe9, 0x78, 0xdf, 0x9f, 0xaf}, // random []byte{0x53, 0x40, 0x51, 0x24, 0xd8, 0x3c, 0xf9, 0x88}}, { []byte{ // random 0xcb, 0x10, 0x7d, 0xda, 0x7e, 0x96, 0x57, 0x0a, 0xe8, 0xeb, 0xe8, 0x07, 0x8e, 0x87, 0xd3, 0x57, 0xb2, 0x61, 0x12, 0xb8, 0x2a, 0x90, 0xb7, 0x2f}, []byte{0xa3, 0xc2, 0x60, 0xb1, 0x0b, 0xb7, 0x28, 0x6e}, // random []byte{0x56, 0x73, 0x7d, 0xfb, 0xb5, 0xa1, 0xc3, 0xde}}, } // NIST Special Publication 800-20, Appendix A // Key for use with Table A.1 tests var tableA1Key = []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, } // Table A.1 Resulting Ciphertext from the Variable Plaintext Known Answer Test var tableA1Tests = []CryptTest{ {nil, // 0 []byte{0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x95, 0xf8, 0xa5, 0xe5, 0xdd, 0x31, 0xd9, 0x00}}, {nil, // 1 []byte{0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xdd, 0x7f, 0x12, 0x1c, 0xa5, 0x01, 0x56, 0x19}}, {nil, // 2 []byte{0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x2e, 0x86, 0x53, 0x10, 0x4f, 0x38, 0x34, 0xea}}, {nil, // 3 []byte{0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x4b, 0xd3, 0x88, 0xff, 0x6c, 0xd8, 0x1d, 0x4f}}, {nil, // 4 []byte{0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x20, 0xb9, 0xe7, 0x67, 0xb2, 0xfb, 0x14, 0x56}}, {nil, // 5 []byte{0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x55, 0x57, 0x93, 0x80, 0xd7, 0x71, 0x38, 0xef}}, {nil, // 6 []byte{0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x6c, 0xc5, 0xde, 0xfa, 0xaf, 0x04, 0x51, 0x2f}}, {nil, // 7 []byte{0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x0d, 0x9f, 0x27, 0x9b, 0xa5, 0xd8, 0x72, 0x60}}, {nil, // 8 []byte{0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xd9, 0x03, 0x1b, 0x02, 0x71, 0xbd, 0x5a, 0x0a}}, {nil, // 9 []byte{0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x42, 0x42, 0x50, 0xb3, 0x7c, 0x3d, 0xd9, 0x51}}, {nil, // 10 []byte{0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xb8, 0x06, 0x1b, 0x7e, 0xcd, 0x9a, 0x21, 0xe5}}, {nil, // 11 []byte{0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xf1, 0x5d, 0x0f, 0x28, 0x6b, 0x65, 0xbd, 0x28}}, {nil, // 12 []byte{0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xad, 0xd0, 0xcc, 0x8d, 0x6e, 0x5d, 0xeb, 0xa1}}, {nil, // 13 []byte{0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xe6, 0xd5, 0xf8, 0x27, 0x52, 0xad, 0x63, 0xd1}}, {nil, // 14 []byte{0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xec, 0xbf, 0xe3, 0xbd, 0x3f, 0x59, 0x1a, 0x5e}}, {nil, // 15 []byte{0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xf3, 0x56, 0x83, 0x43, 0x79, 0xd1, 0x65, 0xcd}}, {nil, // 16 []byte{0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x2b, 0x9f, 0x98, 0x2f, 0x20, 0x03, 0x7f, 0xa9}}, {nil, // 17 []byte{0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x88, 0x9d, 0xe0, 0x68, 0xa1, 0x6f, 0x0b, 0xe6}}, {nil, // 18 []byte{0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xe1, 0x9e, 0x27, 0x5d, 0x84, 0x6a, 0x12, 0x98}}, {nil, // 19 []byte{0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x32, 0x9a, 0x8e, 0xd5, 0x23, 0xd7, 0x1a, 0xec}}, {nil, // 20 []byte{0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xe7, 0xfc, 0xe2, 0x25, 0x57, 0xd2, 0x3c, 0x97}}, {nil, // 21 []byte{0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0x12, 0xa9, 0xf5, 0x81, 0x7f, 0xf2, 0xd6, 0x5d}}, {nil, // 22 []byte{0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xa4, 0x84, 0xc3, 0xad, 0x38, 0xdc, 0x9c, 0x19}}, {nil, // 23 []byte{0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xfb, 0xe0, 0x0a, 0x8a, 0x1e, 0xf8, 0xad, 0x72}}, {nil, // 24 []byte{0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00}, []byte{0x75, 0x0d, 0x07, 0x94, 0x07, 0x52, 0x13, 0x63}}, {nil, // 25 []byte{0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00}, []byte{0x64, 0xfe, 0xed, 0x9c, 0x72, 0x4c, 0x2f, 0xaf}}, {nil, // 26 []byte{0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00}, []byte{0xf0, 0x2b, 0x26, 0x3b, 0x32, 0x8e, 0x2b, 0x60}}, {nil, // 27 []byte{0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00}, []byte{0x9d, 0x64, 0x55, 0x5a, 0x9a, 0x10, 0xb8, 0x52}}, {nil, // 28 []byte{0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00}, []byte{0xd1, 0x06, 0xff, 0x0b, 0xed, 0x52, 0x55, 0xd7}}, {nil, // 29 []byte{0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00}, []byte{0xe1, 0x65, 0x2c, 0x6b, 0x13, 0x8c, 0x64, 0xa5}}, {nil, // 30 []byte{0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00}, []byte{0xe4, 0x28, 0x58, 0x11, 0x86, 0xec, 0x8f, 0x46}}, {nil, // 31 []byte{0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00}, []byte{0xae, 0xb5, 0xf5, 0xed, 0xe2, 0x2d, 0x1a, 0x36}}, {nil, // 32 []byte{0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00}, []byte{0xe9, 0x43, 0xd7, 0x56, 0x8a, 0xec, 0x0c, 0x5c}}, {nil, // 33 []byte{0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00}, []byte{0xdf, 0x98, 0xc8, 0x27, 0x6f, 0x54, 0xb0, 0x4b}}, {nil, // 34 []byte{0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00}, []byte{0xb1, 0x60, 0xe4, 0x68, 0x0f, 0x6c, 0x69, 0x6f}}, {nil, // 35 []byte{0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00}, []byte{0xfa, 0x07, 0x52, 0xb0, 0x7d, 0x9c, 0x4a, 0xb8}}, {nil, // 36 []byte{0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00}, []byte{0xca, 0x3a, 0x2b, 0x03, 0x6d, 0xbc, 0x85, 0x02}}, {nil, // 37 []byte{0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00}, []byte{0x5e, 0x09, 0x05, 0x51, 0x7b, 0xb5, 0x9b, 0xcf}}, {nil, // 38 []byte{0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00}, []byte{0x81, 0x4e, 0xeb, 0x3b, 0x91, 0xd9, 0x07, 0x26}}, {nil, // 39 []byte{0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00}, []byte{0x4d, 0x49, 0xdb, 0x15, 0x32, 0x91, 0x9c, 0x9f}}, {nil, // 40 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00}, []byte{0x25, 0xeb, 0x5f, 0xc3, 0xf8, 0xcf, 0x06, 0x21}}, {nil, // 41 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00}, []byte{0xab, 0x6a, 0x20, 0xc0, 0x62, 0x0d, 0x1c, 0x6f}}, {nil, // 42 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00}, []byte{0x79, 0xe9, 0x0d, 0xbc, 0x98, 0xf9, 0x2c, 0xca}}, {nil, // 43 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00}, []byte{0x86, 0x6e, 0xce, 0xdd, 0x80, 0x72, 0xbb, 0x0e}}, {nil, // 44 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00}, []byte{0x8b, 0x54, 0x53, 0x6f, 0x2f, 0x3e, 0x64, 0xa8}}, {nil, // 45 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00}, []byte{0xea, 0x51, 0xd3, 0x97, 0x55, 0x95, 0xb8, 0x6b}}, {nil, // 46 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00}, []byte{0xca, 0xff, 0xc6, 0xac, 0x45, 0x42, 0xde, 0x31}}, {nil, // 47 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00}, []byte{0x8d, 0xd4, 0x5a, 0x2d, 0xdf, 0x90, 0x79, 0x6c}}, {nil, // 48 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00}, []byte{0x10, 0x29, 0xd5, 0x5e, 0x88, 0x0e, 0xc2, 0xd0}}, {nil, // 49 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00}, []byte{0x5d, 0x86, 0xcb, 0x23, 0x63, 0x9d, 0xbe, 0xa9}}, {nil, // 50 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00}, []byte{0x1d, 0x1c, 0xa8, 0x53, 0xae, 0x7c, 0x0c, 0x5f}}, {nil, // 51 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00}, []byte{0xce, 0x33, 0x23, 0x29, 0x24, 0x8f, 0x32, 0x28}}, {nil, // 52 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00}, []byte{0x84, 0x05, 0xd1, 0xab, 0xe2, 0x4f, 0xb9, 0x42}}, {nil, // 53 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00}, []byte{0xe6, 0x43, 0xd7, 0x80, 0x90, 0xca, 0x42, 0x07}}, {nil, // 54 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00}, []byte{0x48, 0x22, 0x1b, 0x99, 0x37, 0x74, 0x8a, 0x23}}, {nil, // 55 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00}, []byte{0xdd, 0x7c, 0x0b, 0xbd, 0x61, 0xfa, 0xfd, 0x54}}, {nil, // 56 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80}, []byte{0x2f, 0xbc, 0x29, 0x1a, 0x57, 0x0d, 0xb5, 0xc4}}, {nil, // 57 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40}, []byte{0xe0, 0x7c, 0x30, 0xd7, 0xe4, 0xe2, 0x6e, 0x12}}, {nil, // 58 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20}, []byte{0x09, 0x53, 0xe2, 0x25, 0x8e, 0x8e, 0x90, 0xa1}}, {nil, // 59 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, []byte{0x5b, 0x71, 0x1b, 0xc4, 0xce, 0xeb, 0xf2, 0xee}}, {nil, // 60 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08}, []byte{0xcc, 0x08, 0x3f, 0x1e, 0x6d, 0x9e, 0x85, 0xf6}}, {nil, // 61 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04}, []byte{0xd2, 0xfd, 0x88, 0x67, 0xd5, 0x0d, 0x2d, 0xfe}}, {nil, // 62 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02}, []byte{0x06, 0xe7, 0xea, 0x22, 0xce, 0x92, 0x70, 0x8f}}, {nil, // 63 []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, []byte{0x16, 0x6b, 0x40, 0xb4, 0x4a, 0xba, 0x4b, 0xd6}}, } // Plaintext for use with Table A.2 tests var tableA2Plaintext = []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // Table A.2 Resulting Ciphertext from the Variable Key Known Answer Test var tableA2Tests = []CryptTest{ { // 0 []byte{ 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x95, 0xa8, 0xd7, 0x28, 0x13, 0xda, 0xa9, 0x4d}}, { // 1 []byte{ 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x0e, 0xec, 0x14, 0x87, 0xdd, 0x8c, 0x26, 0xd5}}, { // 2 []byte{ 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x7a, 0xd1, 0x6f, 0xfb, 0x79, 0xc4, 0x59, 0x26}}, { // 3 []byte{ 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0xd3, 0x74, 0x62, 0x94, 0xca, 0x6a, 0x6c, 0xf3}}, { // 4 []byte{ 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x80, 0x9f, 0x5f, 0x87, 0x3c, 0x1f, 0xd7, 0x61}}, { // 5 []byte{ 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0xc0, 0x2f, 0xaf, 0xfe, 0xc9, 0x89, 0xd1, 0xfc}}, { // 6 []byte{ 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x46, 0x15, 0xaa, 0x1d, 0x33, 0xe7, 0x2f, 0x10}}, { // 7 []byte{ 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x20, 0x55, 0x12, 0x33, 0x50, 0xc0, 0x08, 0x58}}, { // 8 []byte{ 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0xdf, 0x3b, 0x99, 0xd6, 0x57, 0x73, 0x97, 0xc8}}, { // 9 []byte{ 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x31, 0xfe, 0x17, 0x36, 0x9b, 0x52, 0x88, 0xc9}}, { // 10 []byte{ 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0xdf, 0xdd, 0x3c, 0xc6, 0x4d, 0xae, 0x16, 0x42}}, { // 11 []byte{ 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x17, 0x8c, 0x83, 0xce, 0x2b, 0x39, 0x9d, 0x94}}, { // 12 []byte{ 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x50, 0xf6, 0x36, 0x32, 0x4a, 0x9b, 0x7f, 0x80}}, { // 13 []byte{ 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0xa8, 0x46, 0x8e, 0xe3, 0xbc, 0x18, 0xf0, 0x6d}}, { // 14 []byte{ 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0xa2, 0xdc, 0x9e, 0x92, 0xfd, 0x3c, 0xde, 0x92}}, { // 15 []byte{ 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0xca, 0xc0, 0x9f, 0x79, 0x7d, 0x03, 0x12, 0x87}}, { // 16 []byte{ 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x90, 0xba, 0x68, 0x0b, 0x22, 0xae, 0xb5, 0x25}}, { // 17 []byte{ 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0xce, 0x7a, 0x24, 0xf3, 0x50, 0xe2, 0x80, 0xb6}}, { // 18 []byte{ 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x88, 0x2b, 0xff, 0x0a, 0xa0, 0x1a, 0x0b, 0x87}}, { // 19 []byte{ 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x25, 0x61, 0x02, 0x88, 0x92, 0x45, 0x11, 0xc2}}, { // 20 []byte{ 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0xc7, 0x15, 0x16, 0xc2, 0x9c, 0x75, 0xd1, 0x70}}, { // 21 []byte{ 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x51, 0x99, 0xc2, 0x9a, 0x52, 0xc9, 0xf0, 0x59}}, { // 22 []byte{ 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0xc2, 0x2f, 0x0a, 0x29, 0x4a, 0x71, 0xf2, 0x9f}}, { // 23 []byte{ 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0xee, 0x37, 0x14, 0x83, 0x71, 0x4c, 0x02, 0xea}}, { // 24 []byte{ 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0xa8, 0x1f, 0xbd, 0x44, 0x8f, 0x9e, 0x52, 0x2f}}, { // 25 []byte{ 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x4f, 0x64, 0x4c, 0x92, 0xe1, 0x92, 0xdf, 0xed}}, { // 26 []byte{ 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0x1a, 0xfa, 0x9a, 0x66, 0xa6, 0xdf, 0x92, 0xae}}, { // 27 []byte{ 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01}, nil, []byte{0xb3, 0xc1, 0xcc, 0x71, 0x5c, 0xb8, 0x79, 0xd8}}, { // 28 []byte{ 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01}, nil, []byte{0x19, 0xd0, 0x32, 0xe6, 0x4a, 0xb0, 0xbd, 0x8b}}, { // 29 []byte{ 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01}, nil, []byte{0x3c, 0xfa, 0xa7, 0xa7, 0xdc, 0x87, 0x20, 0xdc}}, { // 30 []byte{ 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01}, nil, []byte{0xb7, 0x26, 0x5f, 0x7f, 0x44, 0x7a, 0xc6, 0xf3}}, { // 31 []byte{ 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01}, nil, []byte{0x9d, 0xb7, 0x3b, 0x3c, 0x0d, 0x16, 0x3f, 0x54}}, { // 32 []byte{ 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01}, nil, []byte{0x81, 0x81, 0xb6, 0x5b, 0xab, 0xf4, 0xa9, 0x75}}, { // 33 []byte{ 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01}, nil, []byte{0x93, 0xc9, 0xb6, 0x40, 0x42, 0xea, 0xa2, 0x40}}, { // 34 []byte{ 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01}, nil, []byte{0x55, 0x70, 0x53, 0x08, 0x29, 0x70, 0x55, 0x92}}, { // 35 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01}, nil, []byte{0x86, 0x38, 0x80, 0x9e, 0x87, 0x87, 0x87, 0xa0}}, { // 36 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01}, nil, []byte{0x41, 0xb9, 0xa7, 0x9a, 0xf7, 0x9a, 0xc2, 0x08}}, { // 37 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01}, nil, []byte{0x7a, 0x9b, 0xe4, 0x2f, 0x20, 0x09, 0xa8, 0x92}}, { // 38 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01}, nil, []byte{0x29, 0x03, 0x8d, 0x56, 0xba, 0x6d, 0x27, 0x45}}, { // 39 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01}, nil, []byte{0x54, 0x95, 0xc6, 0xab, 0xf1, 0xe5, 0xdf, 0x51}}, { // 40 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01}, nil, []byte{0xae, 0x13, 0xdb, 0xd5, 0x61, 0x48, 0x89, 0x33}}, { // 41 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01}, nil, []byte{0x02, 0x4d, 0x1f, 0xfa, 0x89, 0x04, 0xe3, 0x89}}, { // 42 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01}, nil, []byte{0xd1, 0x39, 0x97, 0x12, 0xf9, 0x9b, 0xf0, 0x2e}}, { // 43 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01}, nil, []byte{0x14, 0xc1, 0xd7, 0xc1, 0xcf, 0xfe, 0xc7, 0x9e}}, { // 44 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01}, nil, []byte{0x1d, 0xe5, 0x27, 0x9d, 0xae, 0x3b, 0xed, 0x6f}}, { // 45 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01}, nil, []byte{0xe9, 0x41, 0xa3, 0x3f, 0x85, 0x50, 0x13, 0x03}}, { // 46 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01}, nil, []byte{0xda, 0x99, 0xdb, 0xbc, 0x9a, 0x03, 0xf3, 0x79}}, { // 47 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01}, nil, []byte{0xb7, 0xfc, 0x92, 0xf9, 0x1d, 0x8e, 0x92, 0xe9}}, { // 48 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01}, nil, []byte{0xae, 0x8e, 0x5c, 0xaa, 0x3c, 0xa0, 0x4e, 0x85}}, { // 49 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80}, nil, []byte{0x9c, 0xc6, 0x2d, 0xf4, 0x3b, 0x6e, 0xed, 0x74}}, { // 50 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40}, nil, []byte{0xd8, 0x63, 0xdb, 0xb5, 0xc5, 0x9a, 0x91, 0xa0}}, { // 50 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20}, nil, []byte{0xa1, 0xab, 0x21, 0x90, 0x54, 0x5b, 0x91, 0xd7}}, { // 52 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10}, nil, []byte{0x08, 0x75, 0x04, 0x1e, 0x64, 0xc5, 0x70, 0xf7}}, { // 53 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08}, nil, []byte{0x5a, 0x59, 0x45, 0x28, 0xbe, 0xbe, 0xf1, 0xcc}}, { // 54 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04}, nil, []byte{0xfc, 0xdb, 0x32, 0x91, 0xde, 0x21, 0xf0, 0xc0}}, { // 55 []byte{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02}, nil, []byte{0x86, 0x9e, 0xfd, 0x7f, 0x9f, 0x26, 0x5a, 0x09}}, } // Plaintext for use with Table A.3 tests var tableA3Plaintext = []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // Table A.3 Values To Be Used for the Permutation Operation Known Answer Test var tableA3Tests = []CryptTest{ { // 0 []byte{ 0x10, 0x46, 0x91, 0x34, 0x89, 0x98, 0x01, 0x31, 0x10, 0x46, 0x91, 0x34, 0x89, 0x98, 0x01, 0x31, 0x10, 0x46, 0x91, 0x34, 0x89, 0x98, 0x01, 0x31, }, nil, []byte{0x88, 0xd5, 0x5e, 0x54, 0xf5, 0x4c, 0x97, 0xb4}}, { // 1 []byte{ 0x10, 0x07, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20, 0x10, 0x07, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20, 0x10, 0x07, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20, }, nil, []byte{0x0c, 0x0c, 0xc0, 0x0c, 0x83, 0xea, 0x48, 0xfd}}, { // 2 []byte{ 0x10, 0x07, 0x10, 0x34, 0xc8, 0x98, 0x01, 0x20, 0x10, 0x07, 0x10, 0x34, 0xc8, 0x98, 0x01, 0x20, 0x10, 0x07, 0x10, 0x34, 0xc8, 0x98, 0x01, 0x20, }, nil, []byte{0x83, 0xbc, 0x8e, 0xf3, 0xa6, 0x57, 0x01, 0x83}}, { // 3 []byte{ 0x10, 0x46, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20, 0x10, 0x46, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20, 0x10, 0x46, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20, }, nil, []byte{0xdf, 0x72, 0x5d, 0xca, 0xd9, 0x4e, 0xa2, 0xe9}}, { // 4 []byte{ 0x10, 0x86, 0x91, 0x15, 0x19, 0x19, 0x01, 0x01, 0x10, 0x86, 0x91, 0x15, 0x19, 0x19, 0x01, 0x01, 0x10, 0x86, 0x91, 0x15, 0x19, 0x19, 0x01, 0x01, }, nil, []byte{0xe6, 0x52, 0xb5, 0x3b, 0x55, 0x0b, 0xe8, 0xb0}}, { // 5 []byte{ 0x10, 0x86, 0x91, 0x15, 0x19, 0x58, 0x01, 0x01, 0x10, 0x86, 0x91, 0x15, 0x19, 0x58, 0x01, 0x01, 0x10, 0x86, 0x91, 0x15, 0x19, 0x58, 0x01, 0x01, }, nil, []byte{0xaf, 0x52, 0x71, 0x20, 0xc4, 0x85, 0xcb, 0xb0}}, { // 6 []byte{ 0x51, 0x07, 0xb0, 0x15, 0x19, 0x58, 0x01, 0x01, 0x51, 0x07, 0xb0, 0x15, 0x19, 0x58, 0x01, 0x01, 0x51, 0x07, 0xb0, 0x15, 0x19, 0x58, 0x01, 0x01, }, nil, []byte{0x0f, 0x04, 0xce, 0x39, 0x3d, 0xb9, 0x26, 0xd5}}, { // 7 []byte{ 0x10, 0x07, 0xb0, 0x15, 0x19, 0x19, 0x01, 0x01, 0x10, 0x07, 0xb0, 0x15, 0x19, 0x19, 0x01, 0x01, 0x10, 0x07, 0xb0, 0x15, 0x19, 0x19, 0x01, 0x01, }, nil, []byte{0xc9, 0xf0, 0x0f, 0xfc, 0x74, 0x07, 0x90, 0x67}}, { // 8 []byte{ 0x31, 0x07, 0x91, 0x54, 0x98, 0x08, 0x01, 0x01, 0x31, 0x07, 0x91, 0x54, 0x98, 0x08, 0x01, 0x01, 0x31, 0x07, 0x91, 0x54, 0x98, 0x08, 0x01, 0x01, }, nil, []byte{0x7c, 0xfd, 0x82, 0xa5, 0x93, 0x25, 0x2b, 0x4e}}, { // 9 []byte{ 0x31, 0x07, 0x91, 0x94, 0x98, 0x08, 0x01, 0x01, 0x31, 0x07, 0x91, 0x94, 0x98, 0x08, 0x01, 0x01, 0x31, 0x07, 0x91, 0x94, 0x98, 0x08, 0x01, 0x01, }, nil, []byte{0xcb, 0x49, 0xa2, 0xf9, 0xe9, 0x13, 0x63, 0xe3}}, { // 10 []byte{ 0x10, 0x07, 0x91, 0x15, 0xb9, 0x08, 0x01, 0x40, 0x10, 0x07, 0x91, 0x15, 0xb9, 0x08, 0x01, 0x40, 0x10, 0x07, 0x91, 0x15, 0xb9, 0x08, 0x01, 0x40, }, nil, []byte{0x00, 0xb5, 0x88, 0xbe, 0x70, 0xd2, 0x3f, 0x56}}, { // 11 []byte{ 0x31, 0x07, 0x91, 0x15, 0x98, 0x08, 0x01, 0x40, 0x31, 0x07, 0x91, 0x15, 0x98, 0x08, 0x01, 0x40, 0x31, 0x07, 0x91, 0x15, 0x98, 0x08, 0x01, 0x40, }, nil, []byte{0x40, 0x6a, 0x9a, 0x6a, 0xb4, 0x33, 0x99, 0xae}}, { // 12 []byte{ 0x10, 0x07, 0xd0, 0x15, 0x89, 0x98, 0x01, 0x01, 0x10, 0x07, 0xd0, 0x15, 0x89, 0x98, 0x01, 0x01, 0x10, 0x07, 0xd0, 0x15, 0x89, 0x98, 0x01, 0x01, }, nil, []byte{0x6c, 0xb7, 0x73, 0x61, 0x1d, 0xca, 0x9a, 0xda}}, { // 13 []byte{ 0x91, 0x07, 0x91, 0x15, 0x89, 0x98, 0x01, 0x01, 0x91, 0x07, 0x91, 0x15, 0x89, 0x98, 0x01, 0x01, 0x91, 0x07, 0x91, 0x15, 0x89, 0x98, 0x01, 0x01, }, nil, []byte{0x67, 0xfd, 0x21, 0xc1, 0x7d, 0xbb, 0x5d, 0x70}}, { // 14 []byte{ 0x91, 0x07, 0xd0, 0x15, 0x89, 0x19, 0x01, 0x01, 0x91, 0x07, 0xd0, 0x15, 0x89, 0x19, 0x01, 0x01, 0x91, 0x07, 0xd0, 0x15, 0x89, 0x19, 0x01, 0x01, }, nil, []byte{0x95, 0x92, 0xcb, 0x41, 0x10, 0x43, 0x07, 0x87}}, { // 15 []byte{ 0x10, 0x07, 0xd0, 0x15, 0x98, 0x98, 0x01, 0x20, 0x10, 0x07, 0xd0, 0x15, 0x98, 0x98, 0x01, 0x20, 0x10, 0x07, 0xd0, 0x15, 0x98, 0x98, 0x01, 0x20, }, nil, []byte{0xa6, 0xb7, 0xff, 0x68, 0xa3, 0x18, 0xdd, 0xd3}}, { // 16 []byte{ 0x10, 0x07, 0x94, 0x04, 0x98, 0x19, 0x01, 0x01, 0x10, 0x07, 0x94, 0x04, 0x98, 0x19, 0x01, 0x01, 0x10, 0x07, 0x94, 0x04, 0x98, 0x19, 0x01, 0x01, }, nil, []byte{0x4d, 0x10, 0x21, 0x96, 0xc9, 0x14, 0xca, 0x16}}, { // 17 []byte{ 0x01, 0x07, 0x91, 0x04, 0x91, 0x19, 0x04, 0x01, 0x01, 0x07, 0x91, 0x04, 0x91, 0x19, 0x04, 0x01, 0x01, 0x07, 0x91, 0x04, 0x91, 0x19, 0x04, 0x01, }, nil, []byte{0x2d, 0xfa, 0x9f, 0x45, 0x73, 0x59, 0x49, 0x65}}, { // 18 []byte{ 0x01, 0x07, 0x91, 0x04, 0x91, 0x19, 0x01, 0x01, 0x01, 0x07, 0x91, 0x04, 0x91, 0x19, 0x01, 0x01, 0x01, 0x07, 0x91, 0x04, 0x91, 0x19, 0x01, 0x01, }, nil, []byte{0xb4, 0x66, 0x04, 0x81, 0x6c, 0x0e, 0x07, 0x74}}, { // 19 []byte{ 0x01, 0x07, 0x94, 0x04, 0x91, 0x19, 0x04, 0x01, 0x01, 0x07, 0x94, 0x04, 0x91, 0x19, 0x04, 0x01, 0x01, 0x07, 0x94, 0x04, 0x91, 0x19, 0x04, 0x01, }, nil, []byte{0x6e, 0x7e, 0x62, 0x21, 0xa4, 0xf3, 0x4e, 0x87}}, { // 20 []byte{ 0x19, 0x07, 0x92, 0x10, 0x98, 0x1a, 0x01, 0x01, 0x19, 0x07, 0x92, 0x10, 0x98, 0x1a, 0x01, 0x01, 0x19, 0x07, 0x92, 0x10, 0x98, 0x1a, 0x01, 0x01, }, nil, []byte{0xaa, 0x85, 0xe7, 0x46, 0x43, 0x23, 0x31, 0x99}}, { // 21 []byte{ 0x10, 0x07, 0x91, 0x19, 0x98, 0x19, 0x08, 0x01, 0x10, 0x07, 0x91, 0x19, 0x98, 0x19, 0x08, 0x01, 0x10, 0x07, 0x91, 0x19, 0x98, 0x19, 0x08, 0x01, }, nil, []byte{0x2e, 0x5a, 0x19, 0xdb, 0x4d, 0x19, 0x62, 0xd6}}, { // 22 []byte{ 0x10, 0x07, 0x91, 0x19, 0x98, 0x1a, 0x08, 0x01, 0x10, 0x07, 0x91, 0x19, 0x98, 0x1a, 0x08, 0x01, 0x10, 0x07, 0x91, 0x19, 0x98, 0x1a, 0x08, 0x01, }, nil, []byte{0x23, 0xa8, 0x66, 0xa8, 0x09, 0xd3, 0x08, 0x94}}, { // 23 []byte{ 0x10, 0x07, 0x92, 0x10, 0x98, 0x19, 0x01, 0x01, 0x10, 0x07, 0x92, 0x10, 0x98, 0x19, 0x01, 0x01, 0x10, 0x07, 0x92, 0x10, 0x98, 0x19, 0x01, 0x01, }, nil, []byte{0xd8, 0x12, 0xd9, 0x61, 0xf0, 0x17, 0xd3, 0x20}}, { // 24 []byte{ 0x10, 0x07, 0x91, 0x15, 0x98, 0x19, 0x01, 0x0b, 0x10, 0x07, 0x91, 0x15, 0x98, 0x19, 0x01, 0x0b, 0x10, 0x07, 0x91, 0x15, 0x98, 0x19, 0x01, 0x0b, }, nil, []byte{0x05, 0x56, 0x05, 0x81, 0x6e, 0x58, 0x60, 0x8f}}, { // 25 []byte{ 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x01, 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x01, 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x01, }, nil, []byte{0xab, 0xd8, 0x8e, 0x8b, 0x1b, 0x77, 0x16, 0xf1}}, { // 26 []byte{ 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x02, 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x02, 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x02, }, nil, []byte{0x53, 0x7a, 0xc9, 0x5b, 0xe6, 0x9d, 0xa1, 0xe1}}, { // 27 []byte{ 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x08, 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x08, 0x10, 0x04, 0x80, 0x15, 0x98, 0x19, 0x01, 0x08, }, nil, []byte{0xae, 0xd0, 0xf6, 0xae, 0x3c, 0x25, 0xcd, 0xd8}}, { // 28 []byte{ 0x10, 0x02, 0x91, 0x15, 0x98, 0x10, 0x01, 0x04, 0x10, 0x02, 0x91, 0x15, 0x98, 0x10, 0x01, 0x04, 0x10, 0x02, 0x91, 0x15, 0x98, 0x10, 0x01, 0x04, }, nil, []byte{0xb3, 0xe3, 0x5a, 0x5e, 0xe5, 0x3e, 0x7b, 0x8d}}, { // 29 []byte{ 0x10, 0x02, 0x91, 0x15, 0x98, 0x19, 0x01, 0x04, 0x10, 0x02, 0x91, 0x15, 0x98, 0x19, 0x01, 0x04, 0x10, 0x02, 0x91, 0x15, 0x98, 0x19, 0x01, 0x04, }, nil, []byte{0x61, 0xc7, 0x9c, 0x71, 0x92, 0x1a, 0x2e, 0xf8}}, { // 30 []byte{ 0x10, 0x02, 0x91, 0x15, 0x98, 0x10, 0x02, 0x01, 0x10, 0x02, 0x91, 0x15, 0x98, 0x10, 0x02, 0x01, 0x10, 0x02, 0x91, 0x15, 0x98, 0x10, 0x02, 0x01, }, nil, []byte{0xe2, 0xf5, 0x72, 0x8f, 0x09, 0x95, 0x01, 0x3c}}, { // 31 []byte{ 0x10, 0x02, 0x91, 0x16, 0x98, 0x10, 0x01, 0x01, 0x10, 0x02, 0x91, 0x16, 0x98, 0x10, 0x01, 0x01, 0x10, 0x02, 0x91, 0x16, 0x98, 0x10, 0x01, 0x01, }, nil, []byte{0x1a, 0xea, 0xc3, 0x9a, 0x61, 0xf0, 0xa4, 0x64}}, } // Table A.4 Values To Be Used for the Substitution Table Known Answer Test var tableA4Tests = []CryptTest{ { // 0 []byte{ 0x7c, 0xa1, 0x10, 0x45, 0x4a, 0x1a, 0x6e, 0x57, 0x7c, 0xa1, 0x10, 0x45, 0x4a, 0x1a, 0x6e, 0x57, 0x7c, 0xa1, 0x10, 0x45, 0x4a, 0x1a, 0x6e, 0x57}, []byte{0x01, 0xa1, 0xd6, 0xd0, 0x39, 0x77, 0x67, 0x42}, []byte{0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b}}, { // 1 []byte{ 0x01, 0x31, 0xd9, 0x61, 0x9d, 0xc1, 0x37, 0x6e, 0x01, 0x31, 0xd9, 0x61, 0x9d, 0xc1, 0x37, 0x6e, 0x01, 0x31, 0xd9, 0x61, 0x9d, 0xc1, 0x37, 0x6e}, []byte{0x5c, 0xd5, 0x4c, 0xa8, 0x3d, 0xef, 0x57, 0xda}, []byte{0x7a, 0x38, 0x9d, 0x10, 0x35, 0x4b, 0xd2, 0x71}}, { // 2 []byte{ 0x07, 0xa1, 0x13, 0x3e, 0x4a, 0x0b, 0x26, 0x86, 0x07, 0xa1, 0x13, 0x3e, 0x4a, 0x0b, 0x26, 0x86, 0x07, 0xa1, 0x13, 0x3e, 0x4a, 0x0b, 0x26, 0x86}, []byte{0x02, 0x48, 0xd4, 0x38, 0x06, 0xf6, 0x71, 0x72}, []byte{0x86, 0x8e, 0xbb, 0x51, 0xca, 0xb4, 0x59, 0x9a}}, { // 3 []byte{ 0x38, 0x49, 0x67, 0x4c, 0x26, 0x02, 0x31, 0x9e, 0x38, 0x49, 0x67, 0x4c, 0x26, 0x02, 0x31, 0x9e, 0x38, 0x49, 0x67, 0x4c, 0x26, 0x02, 0x31, 0x9e}, []byte{0x51, 0x45, 0x4b, 0x58, 0x2d, 0xdf, 0x44, 0x0a}, []byte{0x71, 0x78, 0x87, 0x6e, 0x01, 0xf1, 0x9b, 0x2a}}, { // 4 []byte{ 0x04, 0xb9, 0x15, 0xba, 0x43, 0xfe, 0xb5, 0xb6, 0x04, 0xb9, 0x15, 0xba, 0x43, 0xfe, 0xb5, 0xb6, 0x04, 0xb9, 0x15, 0xba, 0x43, 0xfe, 0xb5, 0xb6}, []byte{0x42, 0xfd, 0x44, 0x30, 0x59, 0x57, 0x7f, 0xa2}, []byte{0xaf, 0x37, 0xfb, 0x42, 0x1f, 0x8c, 0x40, 0x95}}, { // 5 []byte{ 0x01, 0x13, 0xb9, 0x70, 0xfd, 0x34, 0xf2, 0xce, 0x01, 0x13, 0xb9, 0x70, 0xfd, 0x34, 0xf2, 0xce, 0x01, 0x13, 0xb9, 0x70, 0xfd, 0x34, 0xf2, 0xce}, []byte{0x05, 0x9b, 0x5e, 0x08, 0x51, 0xcf, 0x14, 0x3a}, []byte{0x86, 0xa5, 0x60, 0xf1, 0x0e, 0xc6, 0xd8, 0x5b}}, { // 6 []byte{ 0x01, 0x70, 0xf1, 0x75, 0x46, 0x8f, 0xb5, 0xe6, 0x01, 0x70, 0xf1, 0x75, 0x46, 0x8f, 0xb5, 0xe6, 0x01, 0x70, 0xf1, 0x75, 0x46, 0x8f, 0xb5, 0xe6}, []byte{0x07, 0x56, 0xd8, 0xe0, 0x77, 0x47, 0x61, 0xd2}, []byte{0x0c, 0xd3, 0xda, 0x02, 0x00, 0x21, 0xdc, 0x09}}, { // 7 []byte{ 0x43, 0x29, 0x7f, 0xad, 0x38, 0xe3, 0x73, 0xfe, 0x43, 0x29, 0x7f, 0xad, 0x38, 0xe3, 0x73, 0xfe, 0x43, 0x29, 0x7f, 0xad, 0x38, 0xe3, 0x73, 0xfe}, []byte{0x76, 0x25, 0x14, 0xb8, 0x29, 0xbf, 0x48, 0x6a}, []byte{0xea, 0x67, 0x6b, 0x2c, 0xb7, 0xdb, 0x2b, 0x7a}}, { // 8 []byte{ 0x07, 0xa7, 0x13, 0x70, 0x45, 0xda, 0x2a, 0x16, 0x07, 0xa7, 0x13, 0x70, 0x45, 0xda, 0x2a, 0x16, 0x07, 0xa7, 0x13, 0x70, 0x45, 0xda, 0x2a, 0x16}, []byte{0x3b, 0xdd, 0x11, 0x90, 0x49, 0x37, 0x28, 0x02}, []byte{0xdf, 0xd6, 0x4a, 0x81, 0x5c, 0xaf, 0x1a, 0x0f}}, { // 9 []byte{ 0x04, 0x68, 0x91, 0x04, 0xc2, 0xfd, 0x3b, 0x2f, 0x04, 0x68, 0x91, 0x04, 0xc2, 0xfd, 0x3b, 0x2f, 0x04, 0x68, 0x91, 0x04, 0xc2, 0xfd, 0x3b, 0x2f}, []byte{0x26, 0x95, 0x5f, 0x68, 0x35, 0xaf, 0x60, 0x9a}, []byte{0x5c, 0x51, 0x3c, 0x9c, 0x48, 0x86, 0xc0, 0x88}}, { // 10 []byte{ 0x37, 0xd0, 0x6b, 0xb5, 0x16, 0xcb, 0x75, 0x46, 0x37, 0xd0, 0x6b, 0xb5, 0x16, 0xcb, 0x75, 0x46, 0x37, 0xd0, 0x6b, 0xb5, 0x16, 0xcb, 0x75, 0x46}, []byte{0x16, 0x4d, 0x5e, 0x40, 0x4f, 0x27, 0x52, 0x32}, []byte{0x0a, 0x2a, 0xee, 0xae, 0x3f, 0xf4, 0xab, 0x77}}, { // 11 []byte{ 0x1f, 0x08, 0x26, 0x0d, 0x1a, 0xc2, 0x46, 0x5e, 0x1f, 0x08, 0x26, 0x0d, 0x1a, 0xc2, 0x46, 0x5e, 0x1f, 0x08, 0x26, 0x0d, 0x1a, 0xc2, 0x46, 0x5e}, []byte{0x6b, 0x05, 0x6e, 0x18, 0x75, 0x9f, 0x5c, 0xca}, []byte{0xef, 0x1b, 0xf0, 0x3e, 0x5d, 0xfa, 0x57, 0x5a}}, { // 12 []byte{ 0x58, 0x40, 0x23, 0x64, 0x1a, 0xba, 0x61, 0x76, 0x58, 0x40, 0x23, 0x64, 0x1a, 0xba, 0x61, 0x76, 0x58, 0x40, 0x23, 0x64, 0x1a, 0xba, 0x61, 0x76}, []byte{0x00, 0x4b, 0xd6, 0xef, 0x09, 0x17, 0x60, 0x62}, []byte{0x88, 0xbf, 0x0d, 0xb6, 0xd7, 0x0d, 0xee, 0x56}}, { // 13 []byte{ 0x02, 0x58, 0x16, 0x16, 0x46, 0x29, 0xb0, 0x07, 0x02, 0x58, 0x16, 0x16, 0x46, 0x29, 0xb0, 0x07, 0x02, 0x58, 0x16, 0x16, 0x46, 0x29, 0xb0, 0x07}, []byte{0x48, 0x0d, 0x39, 0x00, 0x6e, 0xe7, 0x62, 0xf2}, []byte{0xa1, 0xf9, 0x91, 0x55, 0x41, 0x02, 0x0b, 0x56}}, { // 14 []byte{ 0x49, 0x79, 0x3e, 0xbc, 0x79, 0xb3, 0x25, 0x8f, 0x49, 0x79, 0x3e, 0xbc, 0x79, 0xb3, 0x25, 0x8f, 0x49, 0x79, 0x3e, 0xbc, 0x79, 0xb3, 0x25, 0x8f}, []byte{0x43, 0x75, 0x40, 0xc8, 0x69, 0x8f, 0x3c, 0xfa}, []byte{0x6f, 0xbf, 0x1c, 0xaf, 0xcf, 0xfd, 0x05, 0x56}}, { // 15 []byte{ 0x4f, 0xb0, 0x5e, 0x15, 0x15, 0xab, 0x73, 0xa7, 0x4f, 0xb0, 0x5e, 0x15, 0x15, 0xab, 0x73, 0xa7, 0x4f, 0xb0, 0x5e, 0x15, 0x15, 0xab, 0x73, 0xa7}, []byte{0x07, 0x2d, 0x43, 0xa0, 0x77, 0x07, 0x52, 0x92}, []byte{0x2f, 0x22, 0xe4, 0x9b, 0xab, 0x7c, 0xa1, 0xac}}, { // 16 []byte{ 0x49, 0xe9, 0x5d, 0x6d, 0x4c, 0xa2, 0x29, 0xbf, 0x49, 0xe9, 0x5d, 0x6d, 0x4c, 0xa2, 0x29, 0xbf, 0x49, 0xe9, 0x5d, 0x6d, 0x4c, 0xa2, 0x29, 0xbf}, []byte{0x02, 0xfe, 0x55, 0x77, 0x81, 0x17, 0xf1, 0x2a}, []byte{0x5a, 0x6b, 0x61, 0x2c, 0xc2, 0x6c, 0xce, 0x4a}}, { // 17 []byte{ 0x01, 0x83, 0x10, 0xdc, 0x40, 0x9b, 0x26, 0xd6, 0x01, 0x83, 0x10, 0xdc, 0x40, 0x9b, 0x26, 0xd6, 0x01, 0x83, 0x10, 0xdc, 0x40, 0x9b, 0x26, 0xd6}, []byte{0x1d, 0x9d, 0x5c, 0x50, 0x18, 0xf7, 0x28, 0xc2}, []byte{0x5f, 0x4c, 0x03, 0x8e, 0xd1, 0x2b, 0x2e, 0x41}}, { // 18 []byte{ 0x1c, 0x58, 0x7f, 0x1c, 0x13, 0x92, 0x4f, 0xef, 0x1c, 0x58, 0x7f, 0x1c, 0x13, 0x92, 0x4f, 0xef, 0x1c, 0x58, 0x7f, 0x1c, 0x13, 0x92, 0x4f, 0xef}, []byte{0x30, 0x55, 0x32, 0x28, 0x6d, 0x6f, 0x29, 0x5a}, []byte{0x63, 0xfa, 0xc0, 0xd0, 0x34, 0xd9, 0xf7, 0x93}}, } func newCipher(key []byte) *desCipher { c, err := NewCipher(key) if err != nil { panic("NewCipher failed: " + err.Error()) } return c.(*desCipher) } // Use the known weak keys to test DES implementation func TestWeakKeys(t *testing.T) { for i, tt := range weakKeyTests { var encrypt = func(in []byte) (out []byte) { c := newCipher(tt.key) out = make([]byte, len(in)) encryptBlock(c.subkeys[:], out, in) return } // Encrypting twice with a DES weak // key should reproduce the original input result := encrypt(tt.in) result = encrypt(result) if !bytes.Equal(result, tt.in) { t.Errorf("#%d: result: %x want: %x", i, result, tt.in) } } } // Use the known semi-weak key pairs to test DES implementation func TestSemiWeakKeyPairs(t *testing.T) { for i, tt := range semiWeakKeyTests { var encrypt = func(key, in []byte) (out []byte) { c := newCipher(key) out = make([]byte, len(in)) encryptBlock(c.subkeys[:], out, in) return } // Encrypting with one member of the semi-weak pair // and then encrypting the result with the other member // should reproduce the original input. result := encrypt(tt.key, tt.in) result = encrypt(tt.out, result) if !bytes.Equal(result, tt.in) { t.Errorf("#%d: result: %x want: %x", i, result, tt.in) } } } func TestDESEncryptBlock(t *testing.T) { for i, tt := range encryptDESTests { c := newCipher(tt.key) out := make([]byte, len(tt.in)) encryptBlock(c.subkeys[:], out, tt.in) if !bytes.Equal(out, tt.out) { t.Errorf("#%d: result: %x want: %x", i, out, tt.out) } } } func TestDESDecryptBlock(t *testing.T) { for i, tt := range encryptDESTests { c := newCipher(tt.key) plain := make([]byte, len(tt.in)) decryptBlock(c.subkeys[:], plain, tt.out) if !bytes.Equal(plain, tt.in) { t.Errorf("#%d: result: %x want: %x", i, plain, tt.in) } } } func TestEncryptTripleDES(t *testing.T) { for i, tt := range encryptTripleDESTests { c, _ := NewTripleDESCipher(tt.key) out := make([]byte, len(tt.in)) c.Encrypt(out, tt.in) if !bytes.Equal(out, tt.out) { t.Errorf("#%d: result: %x want: %x", i, out, tt.out) } } } func TestDecryptTripleDES(t *testing.T) { for i, tt := range encryptTripleDESTests { c, _ := NewTripleDESCipher(tt.key) plain := make([]byte, len(tt.in)) c.Decrypt(plain, tt.out) if !bytes.Equal(plain, tt.in) { t.Errorf("#%d: result: %x want: %x", i, plain, tt.in) } } } // Defined in Pub 800-20 func TestVariablePlaintextKnownAnswer(t *testing.T) { for i, tt := range tableA1Tests { c, _ := NewTripleDESCipher(tableA1Key) out := make([]byte, len(tt.in)) c.Encrypt(out, tt.in) if !bytes.Equal(out, tt.out) { t.Errorf("#%d: result: %x want: %x", i, out, tt.out) } } } // Defined in Pub 800-20 func TestVariableCiphertextKnownAnswer(t *testing.T) { for i, tt := range tableA1Tests { c, _ := NewTripleDESCipher(tableA1Key) plain := make([]byte, len(tt.out)) c.Decrypt(plain, tt.out) if !bytes.Equal(plain, tt.in) { t.Errorf("#%d: result: %x want: %x", i, plain, tt.in) } } } // Defined in Pub 800-20 // Encrypting the Table A.1 ciphertext with the // 0x01... key produces the original plaintext func TestInversePermutationKnownAnswer(t *testing.T) { for i, tt := range tableA1Tests { c, _ := NewTripleDESCipher(tableA1Key) plain := make([]byte, len(tt.in)) c.Encrypt(plain, tt.out) if !bytes.Equal(plain, tt.in) { t.Errorf("#%d: result: %x want: %x", i, plain, tt.in) } } } // Defined in Pub 800-20 // Decrypting the Table A.1 plaintext with the // 0x01... key produces the corresponding ciphertext func TestInitialPermutationKnownAnswer(t *testing.T) { for i, tt := range tableA1Tests { c, _ := NewTripleDESCipher(tableA1Key) out := make([]byte, len(tt.in)) c.Decrypt(out, tt.in) if !bytes.Equal(out, tt.out) { t.Errorf("#%d: result: %x want: %x", i, out, tt.out) } } } // Defined in Pub 800-20 func TestVariableKeyKnownAnswerEncrypt(t *testing.T) { for i, tt := range tableA2Tests { c, _ := NewTripleDESCipher(tt.key) out := make([]byte, len(tableA2Plaintext)) c.Encrypt(out, tableA2Plaintext) if !bytes.Equal(out, tt.out) { t.Errorf("#%d: result: %x want: %x", i, out, tt.out) } } } // Defined in Pub 800-20 func TestVariableKeyKnownAnswerDecrypt(t *testing.T) { for i, tt := range tableA2Tests { c, _ := NewTripleDESCipher(tt.key) out := make([]byte, len(tt.out)) c.Decrypt(out, tt.out) if !bytes.Equal(out, tableA2Plaintext) { t.Errorf("#%d: result: %x want: %x", i, out, tableA2Plaintext) } } } // Defined in Pub 800-20 func TestPermutationOperationKnownAnswerEncrypt(t *testing.T) { for i, tt := range tableA3Tests { c, _ := NewTripleDESCipher(tt.key) out := make([]byte, len(tableA3Plaintext)) c.Encrypt(out, tableA3Plaintext) if !bytes.Equal(out, tt.out) { t.Errorf("#%d: result: %x want: %x", i, out, tt.out) } } } // Defined in Pub 800-20 func TestPermutationOperationKnownAnswerDecrypt(t *testing.T) { for i, tt := range tableA3Tests { c, _ := NewTripleDESCipher(tt.key) out := make([]byte, len(tt.out)) c.Decrypt(out, tt.out) if !bytes.Equal(out, tableA3Plaintext) { t.Errorf("#%d: result: %x want: %x", i, out, tableA3Plaintext) } } } // Defined in Pub 800-20 func TestSubstitutionTableKnownAnswerEncrypt(t *testing.T) { for i, tt := range tableA4Tests { c, _ := NewTripleDESCipher(tt.key) out := make([]byte, len(tt.in)) c.Encrypt(out, tt.in) if !bytes.Equal(out, tt.out) { t.Errorf("#%d: result: %x want: %x", i, out, tt.out) } } } // Defined in Pub 800-20 func TestSubstitutionTableKnownAnswerDecrypt(t *testing.T) { for i, tt := range tableA4Tests { c, _ := NewTripleDESCipher(tt.key) out := make([]byte, len(tt.out)) c.Decrypt(out, tt.out) if !bytes.Equal(out, tt.in) { t.Errorf("#%d: result: %x want: %x", i, out, tt.in) } } } func TestInitialPermute(t *testing.T) { for i := uint(0); i < 64; i++ { bit := uint64(1) << i got := permuteInitialBlock(bit) want := uint64(1) << finalPermutation[63-i] if got != want { t.Errorf("permute(%x) = %x, want %x", bit, got, want) } } } func TestFinalPermute(t *testing.T) { for i := uint(0); i < 64; i++ { bit := uint64(1) << i got := permuteFinalBlock(bit) want := uint64(1) << initialPermutation[63-i] if got != want { t.Errorf("permute(%x) = %x, want %x", bit, got, want) } } } func TestExpandBlock(t *testing.T) { for i := uint(0); i < 32; i++ { bit := uint32(1) << i got := expandBlock(bit) want := permuteBlock(uint64(bit), expansionFunction[:]) if got != want { t.Errorf("expand(%x) = %x, want %x", bit, got, want) } } } func BenchmarkEncrypt(b *testing.B) { tt := encryptDESTests[0] c, err := NewCipher(tt.key) if err != nil { b.Fatal("NewCipher:", err) } out := make([]byte, len(tt.in)) b.SetBytes(int64(len(out))) b.ResetTimer() for i := 0; i < b.N; i++ { c.Encrypt(out, tt.in) } } func BenchmarkDecrypt(b *testing.B) { tt := encryptDESTests[0] c, err := NewCipher(tt.key) if err != nil { b.Fatal("NewCipher:", err) } out := make([]byte, len(tt.out)) b.SetBytes(int64(len(out))) b.ResetTimer() for i := 0; i < b.N; i++ { c.Decrypt(out, tt.out) } } go/src/pkg/crypto/des/example_test.go0100644000000000000000000000127112412656737020164 0ustar00rootroot00000000000000// Copyright 2013 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 des_test import "crypto/des" func ExampleNewTripleDESCipher() { // NewTripleDESCipher can also be used when EDE2 is required by // duplicating the first 8 bytes of the 16-byte key. ede2Key := []byte("example key 1234") var tripleDESKey []byte tripleDESKey = append(tripleDESKey, ede2Key[:16]...) tripleDESKey = append(tripleDESKey, ede2Key[:8]...) _, err := des.NewTripleDESCipher(tripleDESKey) if err != nil { panic(err) } // See crypto/cipher for how to use a cipher.Block for encryption and // decryption. } go/src/pkg/crypto/dsa0040755000000000000000000000000012412656737015062 5ustar00rootroot00000000000000go/src/pkg/crypto/dsa/dsa.go0100644000000000000000000001412212412656737016234 0ustar00rootroot00000000000000// Copyright 2011 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 dsa implements the Digital Signature Algorithm, as defined in FIPS 186-3. package dsa import ( "errors" "io" "math/big" ) // Parameters represents the domain parameters for a key. These parameters can // be shared across many keys. The bit length of Q must be a multiple of 8. type Parameters struct { P, Q, G *big.Int } // PublicKey represents a DSA public key. type PublicKey struct { Parameters Y *big.Int } // PrivateKey represents a DSA private key. type PrivateKey struct { PublicKey X *big.Int } // ErrInvalidPublicKey results when a public key is not usable by this code. // FIPS is quite strict about the format of DSA keys, but other code may be // less so. Thus, when using keys which may have been generated by other code, // this error must be handled. var ErrInvalidPublicKey = errors.New("crypto/dsa: invalid public key") // ParameterSizes is a enumeration of the acceptable bit lengths of the primes // in a set of DSA parameters. See FIPS 186-3, section 4.2. type ParameterSizes int const ( L1024N160 ParameterSizes = iota L2048N224 L2048N256 L3072N256 ) // numMRTests is the number of Miller-Rabin primality tests that we perform. We // pick the largest recommended number from table C.1 of FIPS 186-3. const numMRTests = 64 // GenerateParameters puts a random, valid set of DSA parameters into params. // This function takes many seconds, even on fast machines. func GenerateParameters(params *Parameters, rand io.Reader, sizes ParameterSizes) (err error) { // This function doesn't follow FIPS 186-3 exactly in that it doesn't // use a verification seed to generate the primes. The verification // seed doesn't appear to be exported or used by other code and // omitting it makes the code cleaner. var L, N int switch sizes { case L1024N160: L = 1024 N = 160 case L2048N224: L = 2048 N = 224 case L2048N256: L = 2048 N = 256 case L3072N256: L = 3072 N = 256 default: return errors.New("crypto/dsa: invalid ParameterSizes") } qBytes := make([]byte, N/8) pBytes := make([]byte, L/8) q := new(big.Int) p := new(big.Int) rem := new(big.Int) one := new(big.Int) one.SetInt64(1) GeneratePrimes: for { _, err = io.ReadFull(rand, qBytes) if err != nil { return } qBytes[len(qBytes)-1] |= 1 qBytes[0] |= 0x80 q.SetBytes(qBytes) if !q.ProbablyPrime(numMRTests) { continue } for i := 0; i < 4*L; i++ { _, err = io.ReadFull(rand, pBytes) if err != nil { return } pBytes[len(pBytes)-1] |= 1 pBytes[0] |= 0x80 p.SetBytes(pBytes) rem.Mod(p, q) rem.Sub(rem, one) p.Sub(p, rem) if p.BitLen() < L { continue } if !p.ProbablyPrime(numMRTests) { continue } params.P = p params.Q = q break GeneratePrimes } } h := new(big.Int) h.SetInt64(2) g := new(big.Int) pm1 := new(big.Int).Sub(p, one) e := new(big.Int).Div(pm1, q) for { g.Exp(h, e, p) if g.Cmp(one) == 0 { h.Add(h, one) continue } params.G = g return } } // GenerateKey generates a public&private key pair. The Parameters of the // PrivateKey must already be valid (see GenerateParameters). func GenerateKey(priv *PrivateKey, rand io.Reader) error { if priv.P == nil || priv.Q == nil || priv.G == nil { return errors.New("crypto/dsa: parameters not set up before generating key") } x := new(big.Int) xBytes := make([]byte, priv.Q.BitLen()/8) for { _, err := io.ReadFull(rand, xBytes) if err != nil { return err } x.SetBytes(xBytes) if x.Sign() != 0 && x.Cmp(priv.Q) < 0 { break } } priv.X = x priv.Y = new(big.Int) priv.Y.Exp(priv.G, x, priv.P) return nil } // fermatInverse calculates the inverse of k in GF(P) using Fermat's method. // This has better constant-time properties than Euclid's method (implemented // in math/big.Int.ModInverse) although math/big itself isn't strictly // constant-time so it's not perfect. func fermatInverse(k, P *big.Int) *big.Int { two := big.NewInt(2) pMinus2 := new(big.Int).Sub(P, two) return new(big.Int).Exp(k, pMinus2, P) } // Sign signs an arbitrary length hash (which should be the result of hashing a // larger message) using the private key, priv. It returns the signature as a // pair of integers. The security of the private key depends on the entropy of // rand. // // Note that FIPS 186-3 section 4.6 specifies that the hash should be truncated // to the byte-length of the subgroup. This function does not perform that // truncation itself. func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err error) { // FIPS 186-3, section 4.6 n := priv.Q.BitLen() if n&7 != 0 { err = ErrInvalidPublicKey return } n >>= 3 for { k := new(big.Int) buf := make([]byte, n) for { _, err = io.ReadFull(rand, buf) if err != nil { return } k.SetBytes(buf) if k.Sign() > 0 && k.Cmp(priv.Q) < 0 { break } } kInv := fermatInverse(k, priv.Q) r = new(big.Int).Exp(priv.G, k, priv.P) r.Mod(r, priv.Q) if r.Sign() == 0 { continue } z := k.SetBytes(hash) s = new(big.Int).Mul(priv.X, r) s.Add(s, z) s.Mod(s, priv.Q) s.Mul(s, kInv) s.Mod(s, priv.Q) if s.Sign() != 0 { break } } return } // Verify verifies the signature in r, s of hash using the public key, pub. It // reports whether the signature is valid. // // Note that FIPS 186-3 section 4.6 specifies that the hash should be truncated // to the byte-length of the subgroup. This function does not perform that // truncation itself. func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool { // FIPS 186-3, section 4.7 if r.Sign() < 1 || r.Cmp(pub.Q) >= 0 { return false } if s.Sign() < 1 || s.Cmp(pub.Q) >= 0 { return false } w := new(big.Int).ModInverse(s, pub.Q) n := pub.Q.BitLen() if n&7 != 0 { return false } z := new(big.Int).SetBytes(hash) u1 := new(big.Int).Mul(z, w) u1.Mod(u1, pub.Q) u2 := w.Mul(r, w) u2.Mod(u2, pub.Q) v := u1.Exp(pub.G, u1, pub.P) u2.Exp(pub.Y, u2, pub.P) v.Mul(v, u2) v.Mod(v, pub.P) v.Mod(v, pub.Q) return v.Cmp(r) == 0 } go/src/pkg/crypto/dsa/dsa_test.go0100644000000000000000000000564612412656737017306 0ustar00rootroot00000000000000// Copyright 2011 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 dsa import ( "crypto/rand" "math/big" "testing" ) func testSignAndVerify(t *testing.T, i int, priv *PrivateKey) { hashed := []byte("testing") r, s, err := Sign(rand.Reader, priv, hashed) if err != nil { t.Errorf("%d: error signing: %s", i, err) return } if !Verify(&priv.PublicKey, hashed, r, s) { t.Errorf("%d: Verify failed", i) } } func testParameterGeneration(t *testing.T, sizes ParameterSizes, L, N int) { var priv PrivateKey params := &priv.Parameters err := GenerateParameters(params, rand.Reader, sizes) if err != nil { t.Errorf("%d: %s", int(sizes), err) return } if params.P.BitLen() != L { t.Errorf("%d: params.BitLen got:%d want:%d", int(sizes), params.P.BitLen(), L) } if params.Q.BitLen() != N { t.Errorf("%d: q.BitLen got:%d want:%d", int(sizes), params.Q.BitLen(), L) } one := new(big.Int) one.SetInt64(1) pm1 := new(big.Int).Sub(params.P, one) quo, rem := new(big.Int).DivMod(pm1, params.Q, new(big.Int)) if rem.Sign() != 0 { t.Errorf("%d: p-1 mod q != 0", int(sizes)) } x := new(big.Int).Exp(params.G, quo, params.P) if x.Cmp(one) == 0 { t.Errorf("%d: invalid generator", int(sizes)) } err = GenerateKey(&priv, rand.Reader) if err != nil { t.Errorf("error generating key: %s", err) return } testSignAndVerify(t, int(sizes), &priv) } func TestParameterGeneration(t *testing.T) { if testing.Short() { t.Skip("skipping parameter generation test in short mode") } testParameterGeneration(t, L1024N160, 1024, 160) testParameterGeneration(t, L2048N224, 2048, 224) testParameterGeneration(t, L2048N256, 2048, 256) testParameterGeneration(t, L3072N256, 3072, 256) } func TestSignAndVerify(t *testing.T) { var priv PrivateKey priv.P, _ = new(big.Int).SetString("A9B5B793FB4785793D246BAE77E8FF63CA52F442DA763C440259919FE1BC1D6065A9350637A04F75A2F039401D49F08E066C4D275A5A65DA5684BC563C14289D7AB8A67163BFBF79D85972619AD2CFF55AB0EE77A9002B0EF96293BDD0F42685EBB2C66C327079F6C98000FBCB79AACDE1BC6F9D5C7B1A97E3D9D54ED7951FEF", 16) priv.Q, _ = new(big.Int).SetString("E1D3391245933D68A0714ED34BBCB7A1F422B9C1", 16) priv.G, _ = new(big.Int).SetString("634364FC25248933D01D1993ECABD0657CC0CB2CEED7ED2E3E8AECDFCDC4A25C3B15E9E3B163ACA2984B5539181F3EFF1A5E8903D71D5B95DA4F27202B77D2C44B430BB53741A8D59A8F86887525C9F2A6A5980A195EAA7F2FF910064301DEF89D3AA213E1FAC7768D89365318E370AF54A112EFBA9246D9158386BA1B4EEFDA", 16) priv.Y, _ = new(big.Int).SetString("32969E5780CFE1C849A1C276D7AEB4F38A23B591739AA2FE197349AEEBD31366AEE5EB7E6C6DDB7C57D02432B30DB5AA66D9884299FAA72568944E4EEDC92EA3FBC6F39F53412FBCC563208F7C15B737AC8910DBC2D9C9B8C001E72FDC40EB694AB1F06A5A2DBD18D9E36C66F31F566742F11EC0A52E9F7B89355C02FB5D32D2", 16) priv.X, _ = new(big.Int).SetString("5078D4D29795CBE76D3AACFE48C9AF0BCDBEE91A", 16) testSignAndVerify(t, 0, &priv) } go/src/pkg/crypto/ecdsa0040755000000000000000000000000012412656737015372 5ustar00rootroot00000000000000go/src/pkg/crypto/ecdsa/ecdsa.go0100644000000000000000000001016212412656737017054 0ustar00rootroot00000000000000// Copyright 2011 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 ecdsa implements the Elliptic Curve Digital Signature Algorithm, as // defined in FIPS 186-3. package ecdsa // References: // [NSA]: Suite B implementer's guide to FIPS 186-3, // http://www.nsa.gov/ia/_files/ecdsa.pdf // [SECG]: SECG, SEC1 // http://www.secg.org/download/aid-780/sec1-v2.pdf import ( "crypto/elliptic" "io" "math/big" ) // PublicKey represents an ECDSA public key. type PublicKey struct { elliptic.Curve X, Y *big.Int } // PrivateKey represents a ECDSA private key. type PrivateKey struct { PublicKey D *big.Int } var one = new(big.Int).SetInt64(1) // randFieldElement returns a random element of the field underlying the given // curve using the procedure given in [NSA] A.2.1. func randFieldElement(c elliptic.Curve, rand io.Reader) (k *big.Int, err error) { params := c.Params() b := make([]byte, params.BitSize/8+8) _, err = io.ReadFull(rand, b) if err != nil { return } k = new(big.Int).SetBytes(b) n := new(big.Int).Sub(params.N, one) k.Mod(k, n) k.Add(k, one) return } // GenerateKey generates a public and private key pair. func GenerateKey(c elliptic.Curve, rand io.Reader) (priv *PrivateKey, err error) { k, err := randFieldElement(c, rand) if err != nil { return } priv = new(PrivateKey) priv.PublicKey.Curve = c priv.D = k priv.PublicKey.X, priv.PublicKey.Y = c.ScalarBaseMult(k.Bytes()) return } // hashToInt converts a hash value to an integer. There is some disagreement // about how this is done. [NSA] suggests that this is done in the obvious // manner, but [SECG] truncates the hash to the bit-length of the curve order // first. We follow [SECG] because that's what OpenSSL does. Additionally, // OpenSSL right shifts excess bits from the number if the hash is too large // and we mirror that too. func hashToInt(hash []byte, c elliptic.Curve) *big.Int { orderBits := c.Params().N.BitLen() orderBytes := (orderBits + 7) / 8 if len(hash) > orderBytes { hash = hash[:orderBytes] } ret := new(big.Int).SetBytes(hash) excess := len(hash)*8 - orderBits if excess > 0 { ret.Rsh(ret, uint(excess)) } return ret } // fermatInverse calculates the inverse of k in GF(P) using Fermat's method. // This has better constant-time properties than Euclid's method (implemented // in math/big.Int.ModInverse) although math/big itself isn't strictly // constant-time so it's not perfect. func fermatInverse(k, N *big.Int) *big.Int { two := big.NewInt(2) nMinus2 := new(big.Int).Sub(N, two) return new(big.Int).Exp(k, nMinus2, N) } // Sign signs an arbitrary length hash (which should be the result of hashing a // larger message) using the private key, priv. It returns the signature as a // pair of integers. The security of the private key depends on the entropy of // rand. func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err error) { // See [NSA] 3.4.1 c := priv.PublicKey.Curve N := c.Params().N var k, kInv *big.Int for { for { k, err = randFieldElement(c, rand) if err != nil { r = nil return } kInv = fermatInverse(k, N) r, _ = priv.Curve.ScalarBaseMult(k.Bytes()) r.Mod(r, N) if r.Sign() != 0 { break } } e := hashToInt(hash, c) s = new(big.Int).Mul(priv.D, r) s.Add(s, e) s.Mul(s, kInv) s.Mod(s, N) if s.Sign() != 0 { break } } return } // Verify verifies the signature in r, s of hash using the public key, pub. Its // return value records whether the signature is valid. func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool { // See [NSA] 3.4.2 c := pub.Curve N := c.Params().N if r.Sign() == 0 || s.Sign() == 0 { return false } if r.Cmp(N) >= 0 || s.Cmp(N) >= 0 { return false } e := hashToInt(hash, c) w := new(big.Int).ModInverse(s, N) u1 := e.Mul(e, w) u1.Mod(u1, N) u2 := w.Mul(r, w) u2.Mod(u2, N) x1, y1 := c.ScalarBaseMult(u1.Bytes()) x2, y2 := c.ScalarMult(pub.X, pub.Y, u2.Bytes()) x, y := c.Add(x1, y1, x2, y2) if x.Sign() == 0 && y.Sign() == 0 { return false } x.Mod(x, N) return x.Cmp(r) == 0 } go/src/pkg/crypto/ecdsa/ecdsa_test.go0100644000000000000000000001014112412656737020110 0ustar00rootroot00000000000000// Copyright 2011 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 ecdsa import ( "bufio" "compress/bzip2" "crypto/elliptic" "crypto/rand" "crypto/sha1" "crypto/sha256" "crypto/sha512" "encoding/hex" "hash" "io" "math/big" "os" "strings" "testing" ) func testKeyGeneration(t *testing.T, c elliptic.Curve, tag string) { priv, err := GenerateKey(c, rand.Reader) if err != nil { t.Errorf("%s: error: %s", tag, err) return } if !c.IsOnCurve(priv.PublicKey.X, priv.PublicKey.Y) { t.Errorf("%s: public key invalid: %s", tag, err) } } func TestKeyGeneration(t *testing.T) { testKeyGeneration(t, elliptic.P224(), "p224") if testing.Short() { return } testKeyGeneration(t, elliptic.P256(), "p256") testKeyGeneration(t, elliptic.P384(), "p384") testKeyGeneration(t, elliptic.P521(), "p521") } func testSignAndVerify(t *testing.T, c elliptic.Curve, tag string) { priv, _ := GenerateKey(c, rand.Reader) hashed := []byte("testing") r, s, err := Sign(rand.Reader, priv, hashed) if err != nil { t.Errorf("%s: error signing: %s", tag, err) return } if !Verify(&priv.PublicKey, hashed, r, s) { t.Errorf("%s: Verify failed", tag) } hashed[0] ^= 0xff if Verify(&priv.PublicKey, hashed, r, s) { t.Errorf("%s: Verify always works!", tag) } } func TestSignAndVerify(t *testing.T) { testSignAndVerify(t, elliptic.P224(), "p224") if testing.Short() { return } testSignAndVerify(t, elliptic.P256(), "p256") testSignAndVerify(t, elliptic.P384(), "p384") testSignAndVerify(t, elliptic.P521(), "p521") } func fromHex(s string) *big.Int { r, ok := new(big.Int).SetString(s, 16) if !ok { panic("bad hex") } return r } func TestVectors(t *testing.T) { // This test runs the full set of NIST test vectors from // http://csrc.nist.gov/groups/STM/cavp/documents/dss/186-3ecdsatestvectors.zip // // The SigVer.rsp file has been edited to remove test vectors for // unsupported algorithms and has been compressed. if testing.Short() { return } f, err := os.Open("testdata/SigVer.rsp.bz2") if err != nil { t.Fatal(err) } buf := bufio.NewReader(bzip2.NewReader(f)) lineNo := 1 var h hash.Hash var msg []byte var hashed []byte var r, s *big.Int pub := new(PublicKey) for { line, err := buf.ReadString('\n') if len(line) == 0 { if err == io.EOF { break } t.Fatalf("error reading from input: %s", err) } lineNo++ // Need to remove \r\n from the end of the line. if !strings.HasSuffix(line, "\r\n") { t.Fatalf("bad line ending (expected \\r\\n) on line %d", lineNo) } line = line[:len(line)-2] if len(line) == 0 || line[0] == '#' { continue } if line[0] == '[' { line = line[1 : len(line)-1] parts := strings.SplitN(line, ",", 2) switch parts[0] { case "P-224": pub.Curve = elliptic.P224() case "P-256": pub.Curve = elliptic.P256() case "P-384": pub.Curve = elliptic.P384() case "P-521": pub.Curve = elliptic.P521() default: pub.Curve = nil } switch parts[1] { case "SHA-1": h = sha1.New() case "SHA-224": h = sha256.New224() case "SHA-256": h = sha256.New() case "SHA-384": h = sha512.New384() case "SHA-512": h = sha512.New() default: h = nil } continue } if h == nil || pub.Curve == nil { continue } switch { case strings.HasPrefix(line, "Msg = "): if msg, err = hex.DecodeString(line[6:]); err != nil { t.Fatalf("failed to decode message on line %d: %s", lineNo, err) } case strings.HasPrefix(line, "Qx = "): pub.X = fromHex(line[5:]) case strings.HasPrefix(line, "Qy = "): pub.Y = fromHex(line[5:]) case strings.HasPrefix(line, "R = "): r = fromHex(line[4:]) case strings.HasPrefix(line, "S = "): s = fromHex(line[4:]) case strings.HasPrefix(line, "Result = "): expected := line[9] == 'P' h.Reset() h.Write(msg) hashed := h.Sum(hashed[:0]) if Verify(pub, hashed, r, s) != expected { t.Fatalf("incorrect result on line %d", lineNo) } default: t.Fatalf("unknown variable on line %d: %s", lineNo, line) } } } go/src/pkg/crypto/ecdsa/testdata0040755000000000000000000000000012412656737017203 5ustar00rootroot00000000000000go/src/pkg/crypto/ecdsa/testdata/SigVer.rsp.bz20100644000000000000000000027237512412656737021720 0ustar00rootroot00000000000000BZh91AY&SYe_`Xg9y?`a?TUaWmfmVKWmz{8RF:%ղwgLtZm6C3k{jƸ^[͵[&,&X2fmDhBe!vY#,oM]VljlM 2^v{mvrhTS{JkqfosZPk/]ٯ[n׻Tj[ZGM2wfkUMGZ;p5^=U/E\tzK$)‡-zw{tͳTs>ŶdXjjGmR(ZiJ;jy^Лk-SYiYZRz;WlUzT PҨIn6a,mImQv†{jgױ-!Խ.-B6[lbVzTtRRƵ$U^mۮ%UmmWRβƆV(֊W=dvLvZ:Һ{@P;ZPZ֢7.]@MRYeZ֌M9*{j7U֚jl[Φݺ0VmTuJm(]5ڍ:6*z㬯X.dm{Yͪzge6(fcՀVB>>}mkJwn!7p)wfեT^C^J)M$:ѝ^]6STֻ3}Ortovn/Y[ 15FY[e+iZ[O]4ӽڪZk{7+۝e oc{* ӧv鵚Ps6ilhquI՛J-$ҕO1YR+RUTʉj*:s/v:n6fƨRm v6֢iӋF['{rEh{%vjݨvΥUl+Fڕ*SMj=b:[i{0S{:]0ZٽZ$;'v:m)E<*$ T)TM44 UOAMS1JOHESaR S)A24zMbQizz{Nǔq[9x|{` 3☹#( f(*.`2fg0:N~()tr{I76cU~a< faYKޥpf {zie]@*o HDe*fH5!D$!!zb*mtʩ\/jZJ Al1e |Gӈ9%B~,kwDSڂ!>vۘ'KUV1$=asD4[2.{7ކi49m` !"=HkIuAFDX px4ԑп0FA䜺?b2-\M ] BcCҊ IpbwT 8.H6u~&1>I{eC+n8n-@^!Z񕀅Vnb)/v_%N؍oszlHUAό80U` s0yB >߲ #4eR"\Q-@ȁEfɒp#nB,'|fgQ\ߝlx^O̔@9CNGn/ya##b#"FlJԲ[RY-AlUBrEeRHkadJkE+%[djYKmUHKjVI 0wp04W1E\PP\\DP S1\D \ATW1qE1LUpAg=;z5qYq4cq$xj'pbqI8G3=* .`&Z)2!j aj.>>wߺ__{hiuU.*aD~){@fjg;PVQHO??!)1D:`2hF ,Z4T"т|HLQ_\A<]ķ!B /,.BG)ujKTzbab9L4x/P Yx9n;^y> kG+=c@THrh9+h"_OQ"SNvUy>*:9i=M~8 /;-v CӁKRϿp zƃg}el[ > =:Z=vXe_DbǗ=yV\Op\=&dz3޸6k`e7 {hLW.j23Nh8H+x+59~:FzNfffoPrЭNԵ̴wu *"6x bKG&둛u^ Q<󽞯&}Һ8]RIUjdn@6$OuϢrXkWͯ.`27>襘V@^Xp! wpG=Y c<;'/ip9$Àttz#D@Uל~ X[$S0#(+mM\Y^Yy}pZ-_A;+6V<[]m(yФǻ_za=7ƪ݂cjQc/&tT;!Hl\If<( &Mo\ MN?'dRm.|Yk~~F<ѳe׆r C3MZPsgbSQ]1׾.d!pBzsۯhp4ArB@k->=szC@S.񿕳XKo9xia@c]edA98M8')61ԻA9gGo= SOWA8zŔMF5 Lew>SNdԳNk2{Bai&HO0qrv\٠rҚ^552NfnZ+3 xYT5TL}n#|ic+[l8U09j) g9=>Pk;FL7 Dֻ+UL1<ׅ(6ɖW?p ^Ed\Lz"m pΦF֘;bfqsJwvvs.GYnƹLկּF@AH(Đ.^@WIxi5 + G{&Ȓ&IpڬvzĬ~ Pg͍KQ}b@bz|3r[t@S7&F3= ;! ?\+(s`qqyzK2Ǫ.W.N`Y5,\"9l$f˽XP PTMmކyX'b2a[{5.}v@Vkv6[L=ר049,f}^ud1ŀ$>:>C}S Y G9ߟ #u ̇5c1aYzf `&>}.L -f@*(-i%3[bJP]~y+0趶NY9k韢A l-{G0_j*5c'IBS1O-}s/9!)ݛOS$VhX`\W/vOφV:[=&\| tg*XI&,5cx>Ը2#l^Lՙ tv0&ԟWVy]΢zX;JQm)U{M:< \/&n66_Zt_0kGѯXw+C@v#0)C(_Ûpu?%y)(ZEeSn_iSۚRݝFtlE͊<;]אffC?Z 00G1Bf-5~>ԥ=m>@t-c |+MJ^CS>!;Y "#E8fZkZ@$e`$u*-3տ@nH8lw1)n@5stkm)NH= C|a}rXa:PdtB+h&*vx"V jY*j;bwGJ CtX9vje6,s`N=>77)|DiHh+OIaFLޔ/^G"^|8P_w#ߓ=pWZ-z6/|g|w@cTረ;l3Py-tGO6Fp`Mwm?nbԄ["R4<> VKQy7+#; jsWO:eqe[R8'0qrXZ$TiƍҞjeLH>~'y+ޅz@՗ ꓮU ̕ٹ/,dͬ溝j[ିbzH!ު=e.@$EM-`m i#--ߍlAUfYi>Fw͍r|'[Id[=d}({ S eg ebmquPm.@A]:0@aȷOT8Mhѝ (%ڙyɗM56y #> 8P5i'1 `TKfhLf%=K_Mj V'(cL`M:'@TfnfbnArw5>9%sg2c]žA_݆-ND'C dފEN{xWY#, -W-.xPkr+VX2h:h1/~s8}UGr)֏p$Q/GQQIsjv,&v/7ul5/!\CZQǾ`$/~s-% T*n *v+oVWMЮ8>6|Hb@rMy'Gdggv_x54oڢ3:bЇ^ŵl2 hSU银|藻R9^]FD1xi=Jbf hvyRHPa9V5 H1E!\m8>*ux<4Tw RY(YX(Xb2ΤUH&P)[E^? :iq'>Ad/z=]bapo%np9z18af5Xr `V& ݽ'?zPGۈt{BeuA *;DUYdlir}oxJ 3 q.Ѳ&Ygv`.@~_hDo{گax$d8}+{OeRUf8R !}!24vbBy/.b#&0ZpHZ ?lW篘dYR(}$IaDED}#C7Bo._U-+'hQJdGydE q׀D ܟA)%h \vc^y<" zq[.wT15B68Bʽz~͆R f|AN>|G)1"2LyVw>H`?O1Ml(b|ȹ̷^ޔ{AuLvGw~D]Jxz5(uvm5oLv7؏ m18`!L2R$$N!HW0u'Lkq_rM×A}g!K of[8Dz)tDK-#鴦ieLԶo4&ʄ_RUl^'l Y,,D%Jgu<)4I t6p[XaBcw]v+, ູfaxVc|C|zIG4zf,u;xϿo.W_Omj5GbNQ}C:Ċ"g͆KYչH?Sh)Q{02tu&Oy&a,֤-%ۅSH&Zqō>)p!61xF]$8.Yrg$ |>ԌnikON(MU9IA*YBa\U;ly^Sttʩ)8 I^>kJ+֊w"bጩxZ1J2'ՆL{5Smt?vT|d īWR}nupei f ;{u9NQ!N{#n}YR` h$*~-#1V_~e2 4SJ ?h!f,O6xET.K~L,.?n^{娮^2āI _I]wM;XɠNWRw:]F]݇*E챦b.[E;de*8o+A ٘4HVH@v6ܾh2eAFNpd~!; &Oz!~*Qwʭ4;jq4* acG/^6tyGu q*3-@s I:!,ӆLqma;8ЗH+M3VC;"ĻB6,XPY0Vz%YBlHeϓ|<WC[gI _p%CKd#>2d?vN J:_n7D]{#I8^af u0y5%eӡ򇽄\SXr2@VƲBo}YH@lu&5[gBЄHZ`R;ZȎ-I`8Xz;Bu[ NNJJ~<N8[!qs$NKsA餑E)^=V}ck/s^y_![ey;0`YmOhX52;AU~@_ bϢ .NUzZəXJfJ3w{[ J>҂nkgB䂇gTBٲDD]-ZdLxjQ(s䖜;9)Wgۀ6xwNȈ=k {ǨPFC.M DRԮ*ֱ-̙?Yv)1@['rܺ{Ix }i_{6/KuNJCn f^~!<_>@mp ܞ@3bc(QO {xN%w2V }~"''&ՁȓĢM§W]y#vJ|VlJrɈeʍKBeM6>r 2NYv6SyXe۫5r4aiE?Ґ{@d Q|e{5E@˦1YȂ] d6 Ѽqm3=L6AOZA?PH}V;]'$eC&áoG Ĺj;F|Ѥgxh"Q1aMuӅ| N9aBpHuVN1-aVĆzjNLDa.ZxͤQ!~ϲ:f [kb|K]8+c⚶=ւ꧍ 0' DR=N%q٘ volKl2iŻP~rrZڙ;qؚ>W<ϋ}J%|'国( ~ 4x3uM$`\Z5,{l OLrAiv-ܣW{I654.&Mئnj$ q x=Q z|{}vxSЀfD-O MD8Y`a:-J3yeFI"&VN'q nje<&}+_՝X%cRa1Wz P2}}1b Kȍ+Ks`͒z<ȴ>|ʧWj&m  P\aW)Am{ 3@[uNhktOM˚C;+7zCbp)h_fqͰY۵meSHGDHJO7-wpg{ Th 9ZX["P 0:= EZvAa<@KbK67Q%'ך7% W6@6ɝ{E 'lfJW^$,|8qon4%MNX#3YH&)/48b>XA@u!,Tn }j3殐gV|Mʃ]8N/g>Iz`C:|Q&WuLa)(veR̕ .sUawDtW}zQ>AZfD81Y[8`Y)uøHњ0d#%m}"~"CInn&0'=;m&J5eGtE@#{YC_vv$!{Lhub%!j`v%Kڋw.0n ,'FBqal[, whzǞh:W>\rnƁ JؙF) Hvа զ9BL#y *Q X@|ϱ܍jDQ.lTw;>_Jnh_T痳oɽs4ʤrӻ i c[ج82]D/^eӞ(Ѫ2C`FC&r&vӰYc"zI\aݓN@LJX~_NmHwrixp%* N3xR}{1{@sRѣIy_f$d8+muG(ɧsW@,afG|pd֙xXefGkº;o.V l6sHzћQݔs1nhrw0GɻUiqfuUD7P{.'RZ :5K_l!b9@lkteQFدI UdϽu9m5x~#`Z&[W_ _zʥiPE',?\;gy\L :8j]GZ~ޑwg$&BL-/{h.-;٠Σ`>ӱ+wA)A" ϳ~427цA\^0>4:[Cod=bv_ @Ƙ;{,T򍂞OɹE+CPBS@TQ\@D m0Y0N-|7T!k~|r{+\RmCуaٶh`>hAWW2} ̾?/C]Q<AQuB&[f8&A|kY[gvL:޶ن5Jf.&3D7Kmkzy#ƀ"M(0Jd7{;zjj5x]iOGAoSyw|kg0wA[2kY]X.ڜ(08(Т'ey9g0nPhkfL9L@#h \14 ]dyBhuo\F̋/ Vz7 c̅/"J{ӛ`)m</} ,iz bm2Y{ ),slԯEb礠CA^+7r]5ka;RxŽMS 鞫"tIN\orL'oNįt e~d35HRgLT<7P> s "Ks=kI3s-Q ;M];N2c.bI&%*#$c|:@c]󭀚 !iI ((LPh,>o+fs*nJ5^&LU"~*$ 0Ee[)oN /^YOoͶЪ},y7G;7E~Wc=oea[ŖJU-m sI&CT7[=rvg]lG.ST$t >Q$7ioHM50{pֈ"JکꆃL)2Us><%piysr eX~ҮWۯ:Ѵ- J֮b0R͢4"lb-H 4fS`$@ٵ r fIKƇ^O]?-_2ֲx>_Ff ?eŤdT6ʸ w`FƞeN.L{ 糔/G :?%Tg#lW\}qF7)n}FYԯ'/:%4 . ǟlT8WJJyMrOL;x}_Yj )lO&VzA"O)d$Pe2&B mI.")oD]eMjzک e !ȼ EH;Ql\kM7HrEYb-M~3 dH-d58$9f{ø.Dl}He qFvyS+B#A KZVЏf!稿|l8Ja!z lihex[pQ`^"!s tԫ1 )xuphpyNkԮ%Xs]pѤkّ,>I6q?]\6׵rac75W\w2ĵ8[(Pq ᨨ?x˹Uʼ?hngLy٨>5zg:1@d 'SӜ.0gۈ퉀mmGTͯ;i4Վe$oK`\>Rh߭F^ۊDy?t~y L_!+] _(h} ɽ^Oc]Oøǖ 2:r褞 :Bs@qj|B{# |+/-vPXOaB;sxo8S>$'q*5}j|7r2}%[ enwȎR >v<Ʈw2ՙGQ1ˈg@-y]Cytu pWd(S/PcO@3-|iWWR͓`7HmI6㉍hѠ~}0a(Eܼ^0O*S71$t'k_h_0R1]'RF:Wv|kgi^WJS!wZQd &?ʰIԼ _?y^I]Z7{0BaX[2t8o*?Y.Q,}_ވŸ[Rtj"@׫VzA,kUldk(w9:R&wWm} *M zVC hoG s wƢyGNEUZqE٫P"{T90WڈzwHmp(\HzhieTX_yw=e,v͙^ͣwAg[+ӑؿXB]f5(6M|`hZ5( b B}uTM=R\>?U8E˨VB$7MM=FcڪtTy)CzH7E!'ە3b\39gNH 7ZgFFEEn|9A->-iպ{7{%o=`9Zi(§ܳd-ٮ+Sכ *ZNmǽ>qq!WH!/1ӫ 7˘*B>p܃.[SJ)x{Ɔs~INJOtF/sicxWi XŝyzutYh!%<0`XXn7{lY3,98>a>Dx'O8bwѰ>WEj Te''Zg¸G\#9~eso+~V;+ 6U ёRkI1 Um `oQMǤ!ms 3pmʸ4}عdU;'7_5+ag*f)VHqĄY eAؼqPX$]*W)FR8ICr$:Wң~{89c|E>հWG8֚KKg]0.[QQx4罷aCWe5>'+؝-b=~] { QV^7q%'4=sa0]y`a%pL%_*N*/W;KЏGwr8|FgNI&XrC/]Bݚta1>CFLli fXu>u[j+ˀ1HFߋTKvƪ[ڽ'9. c:uR>WWJbdEr;wG>rAgaq`?V 9b(O]8H|_Pj5#5 _ 'W ,VT5$z'WiY{{Hb EǽW }cuX"to1 \ L(kX. %n6_r>@ P+5 :>Kwu۱:bT&$9: s@ ^s4~S߷&DL QH}N/N ׸jn \\X-ݥ$0J\bV4`K23Yu0oF: 4b\6n"=ح&H7v@'>Y֭@Xx԰ Xr\eϚ(sYN)$ϡJ ~oJ,V]d|y!EPb&\;RCoRM t5Fm2h&pÊ~P6L[XAan ZfK_ hqbwڿw'+Bz+m`oE^Y6+ <0^qb*vT:yCȣ7t;uw ^+}x`@Uf(* W^b)H ,۹=6S Ӎe$\w7G}'l}7~2T~ЌmYf(iyI'[r(Rh^O0aA:@cQ#txt%<%q:઩b XU :y-9{ٖ?~DDDDD$$DD"DDDE0.>rgbܳ4OiX߶H ĖIIŗY@6RV}my^<W{g|Bz 1NvuK]&mfaLoB=l06}>#)^yیQ?k#t崮 ,kWUL-mF*K댊k.1!(hsEd(sV\a%&T6:=%yoV Ig6l5G4Rnu%{Mn_Tr"f9XÝ[ ܮ`׷XtX]/ hlgYgV[;} ŋHWQA}u3dCN*}&9͝P8ڋId.ړ/m딈nS;vrQEq%vhĄw_PSԐsC-mۋ"p\X70 py&T[@`8=p ʳkَX\=.(`Pd" WےBQ LBzf!.@AY#…m $,P'$ ڡ7x=)?7:FՂژbzN%D*n->)ZJNrʋk6rHTH{aHepZX\3E"%S"OoW U?}F  bz tE7zvCÅɞB<-\6#U}po=dݳ 00" ,ng,xkgp,{o}"$>Fvb̫?NHUȳA/]E89MAٴ:)NK/^oT[0]UT)4k4a];Qw^ YNvos\VP_^tjl3k:g~q8*PWyQǪ랗iAPO^~N$H0H‘SEu`m~s[jF" wnO8>d.Ƈmg( I׏D)CÉh(-ѷ})v [kmpux@-.Ȋ]^L_ϻՔaI ;%6~z'F8eٕJ?˶Phy2R"K D#cڄiCiNb>1۠(%/FP6[EtC}v"^D_kךJ#zsK {v*7tZ0֑x13; Y%/oڄq(Zq Ԑo<5@y8±z!BErW {,/5RI +5?JG#?dW`5;@'N0 0)qivv3Xo^bUD{} hUxb/"'ĉm7 I!w f[%_sT9E{Qa{KgYe@!";[Ot_`ǽZ2;a%z*"T? 1"LoǣŒ\K9g C#]Ypֹv'b}Gַ'*֧,@c;U$79aĤuhⓜ9d/)WL%@%1X߁fh(FCÇ!q_/ȧ3Lz iў*r"S^.VIFLT ]p)=`hx\`sTEvk(pK<.мJGX< e7Vo -+4ۂ0Šfv*5RK͐h%wĪ(plϼ”#4!5sgRmԋZlc˝9ħ%DniטyR|Yo%ꒅ)cT #a X1܃\⻋^ZvRAxڟG!p}kV:K+}E.pF;Z9FPV w9#j|MXbS4qi=IoJ/m<5^ %[<=^-n+ Gaҏ~ɺ]E\‰S.(5Mb6 H֧n "8Cu>`C Ee2y!Iv(oo!>APavkZ$RhRX<ԵcV6p& $[ n!() ..ͯQI[~B_!!et@恢bs"xЃ-MOfY&TT`u<=r۞{pŹhUnsS`PmfÀ)kw,ZB#/cyKyWRjwb9$HzKƔc3VhT3Ah A*nF]+;tVLWǕNa~!MPHMifpj3dnw\C7]J.xȲ dt@m c^..^{$gn-^Xb7Sm:ADj c^Ģv +ov&\>;2~f-3iD&TPS;P$Cxc$RWzN#~ݞ-[ޝՇԑ W+7z>UVK OϏfT:4p`[Wukz`l殦s9&tp2)W"zި0&?uu`b=}{CK4W~9%IP+^ )ڏ]ȝ i\89 cp- ܢ"˪Ʀ9UB1N?^Y*&5VyXa>cgCuT阵DsM!U_S?Me&Mt[*,va cԛ~϶3Y yX>XrP1rhd_0 @? @g+ " "@3q$WYVZa<|%~LX'S:eGd c8ERw7] Y8w \~Tf$^G; 3eٟqJF`|5)zH &VfW wҝf2!Vzag {R"i 6Ƈ iJPi|,7;utn;Phkkrp鳫V6e33H~5~!p[3en-˱Jأ%;L'\ fdX|h5xPtk^XdZ%< ccT>U=x;V򖒮3"@2$#sB>>Ҷ ųJ>C5A@WֹG[2'T@R]tVMU%gG 磔OK779cJ0SFV=<?5yOQ]X /,ʮ>@>KAWK񔡆ĭW =pI ).\d}wg}kR -" FAi@4QֿVE9 u/*sYw:m>ռa\SĞD_$IWA6aTAbHo1n$8 =s~-Iȶ,<`6RxvjNmK[qD0wВY)H|NW]ѾzɴF+'BA%jF:j2mdqm7b|h9Ae"X~>MJ}Qs=F*d⵵ `k%^yx5%L$;=l*?zbj=_(916rdAk꾆ODyi%}1!ަLr_ lQo |x+ORW$cm4I B68ɞPPNlqPOݛ ᲙZkTt-H=jv)l[M[clBxqScdN'<-$Z*3k9Nݷ(t}XOLS4&=fi֒,ϯf9h<^ ݹ nș#Wٲwxb  Ձ=5;Is;X׏pjO -&8_SNΨm,]s_j0O܁ǜ""I V?& XTOaQ9;3/ H~|0ue(TzsjJٴ'=Kr$6O:<dϽ)DŽ58< 5g ֎U~8.娥"~[FŤ/ˣ|}^=<|/_ ϭu38芪O?N~^;#o<@hbmݱ[( ؠA5.L==v*Ë2G*%Qi򺆧P]?ia!i;K;5SerL2(޴G;īO.:H4>_9S)+,:~ 'ӥs^9Ѕ{MS@VDQսsS+X OKaS$dF`7%2_R/.8ɂxmxhX\N~ゼ5CR(4z0[וDPF"$l*I:2Mi};Gf\5>q3KêW\ jH(Ak*Tnqկ,j@B@>[z%/y٨aäf}`>붠-( gIT7%ly4FSΆO*4:s(PnޘŃZ][0(M\ @#esK!#Jv}IHz,ĵӎǣ6g9" V2[6u=L[MG.d0^_m/=CYCѷy kEFZ1ءג 6Uȍݔ J˛jzҁҴ˶ '-Tpt3hRAAd [te(@5l2N|q!0AA$>MHVv+t"QZΣ}?N׮nؗʓJ^lf+^ޖ*_lkB#$?4%y LDHРkPêm'qZ؜w2^c^T8po-["/)Bȫy? 5|'콫ػ~zZE7;vf2p-zZa!I2"[ 6Ѫiu[qh-P?QJi_j6&cjŷ6)qyE#:0`Rd1=a`,`+ oeZkt"d (B0/[iݟS$Yf($2OݶS$z1HK={F~,^i<#Rүki1 1+(EQ5k7#ش^'T)*KC:=&T}05-P;p}m.Svh2xCI[8SӊuNϏ7do6U01[>F }{WGVI;kg< 4xa˗`TMḡ W71bGrQƌ 7:޻j_XiӒ^p!P𹍧LNP.]& "Ru>Dv`ͳz m6)v1j.V҄c.6Ctaw/cSǻ L>k|8;naDa+#b3WCM=Xe d~X{TpjbvDrY6N9"5;BU}huV[ݞݲ7ekhJ-%h<Zأݨ+5|f2uctڒj~be $QQrN'Zj1j-bVToM^jKn 0jVɫp4蟎<"ePdy L6R!;%ڢvyRh!ji:  ۗB-`x&,^-KYVRu)=tbFۣɌtWb+Z#>Ë%+䬁gyp9Tpr IXNdiUY k48ܩEM a(NϤ}*`yB hv؂mׁ!@;fKͰ[=`Nӿ9>_ma֯)&<#f*o)Q69ñ2mceAp)+K(3<{Ԁf% v u$Ăcsu_48<2 h B5/ޞpt0(qi1,h=JJ n/x8$1R.Ay*Ni2N>((;n L=E!F-I[oX\+A>Dz<@Nim#2'3!pYR¥,ё7)gfS41 S.~Y<oe#ѳ^-oPW1Tp6%dvN[3__]s@jXV ÿH.44`G،lR-Zdۣ[(~yN#plieU+<9,k31rL7\'#q'kFFߞn!d fnK:_NG=C8SAFAhTTx@ul {ow &2O$T!_ΉK."y7&nR x9J"hdz&.~T[y[b.;)~ݎBzY$ozFEfjz`H=?GOC]|}2m@db)-' R_GS+nı|l\CaTֆA+VZ Aʢj ]h,- Y"adH !wdL-1Bɶ*!88LG e }ݐp1t|k) *憸Peؐ0*(hx*y"SsSIovz:جp.֎FxerBŇ ;mKD1IpvDYzx @ 0:~[6z2X+G]|C ܮİs>wg bPi,=ҭ$OvmC h7f$ȶg3g&,aweV[Q946]Cw[wxP0Q4HdzN4v@~u3}n-:/.@X]ʂunv;g7pc-dǣ d7{Θ5$p'"@0P)*ٌ KJ,iz'nDGmbdמ;=mYl]qx*z}`*;Ζ4D;AB m`3k$W4;&فe_0R̭!nw0\>|HG ڛ&xO<,5i;W $.00]<>Qͧ hmJDͺ J0{!jW*ٖCd,NFVmdJ=d=BLuj$:#rp܄5F:$p#뵹G,Z&{#V֤Drg b({w1B% Mo LE %^@zA84I AKfT~_>YQ[s趛HNm,zX<G6|ގq4oiӘɘ9b|`ma)g2Ig%Ϝf:ҹ?Vt rx5E[QH{kRpjve)S,Cy^;->%Mf`V֑iT~}ފp F`MԠjx7mRy[)+}GWTvBS?. ) S!mo!oKTbR`Mnw=%'Q֩} TzWy2W΍Qg#ɸXب%HF0Z ^mE@-YhkI6dF‛^ .vC-5dmw&4x3qn]~y"3lu8;< 7̜q_D1do[\T:oC7e?6Dokcdd跲9?o,Ӏ`hр n#W'Ge3'`AP4B7C7{ p+29#Q_4"ZZ nF2xܥ;Ӷ3G::vn zʰpQ0qa?<4e(ImJT؋h=k~X$2 )m)":'~hmҗL$%8A#(0'2NԄLێvǥRRaS؇CwmԜY@h(@e nŐ0D}1/b7FEض~,6[>sӄRIaTkuhHtW ϑqE>gDPӬTfxDQJ8 ›вve]>(| eOBN(]zn4DSg b|OyAマ`@3}{UJ\]zVLb0$+ ޴{N4mVt^mld(G2шdjzሁFkpG& &\ Iv5透W$區ӿ\Q^1ma8<Э %9KiكDݲ;b 8n4#^Cm 6qrey*NjNl뚍׷Ǔ=`ooZ̯%C"ػOEbfٽ?tB5|13 'v8WlІb&# $Q6x!tmZȲg :mv;ihK"?WUZ差"xR.2 ԿK]%2)LBkG~#nm5 'P<\fNX=LobڟDB~\Exro.Zjc̻ƥsAWvyzD:vĘTL\AHX(R:鐊ıpImr]>U4&GE {!Lc|!;G.uJye$=V9X6 [)v,3r,5,,yS(H*j'V9%b\47|wdi ޚe-+_{雎Џ? G@gfZU"pNc;l#Ă=$aeޅU*Qu?C%8[xjy|lbF\ /&W٬Ԁû(_7'Ii۝spd EK N9AKvzڲeEC'n,Dd^aA(x5&l -z-L'TG{-8^`sgB64d5mVC-%NtTG+=U[9Akãc \ikVHy_B#2 <r]t3Y }~fįQjHfAzCG7j&76׋MR@vԡPe˝b@zԭ ~|69vTԙpdN}=HOm4P/A>yoGaW4Mۃ25u {x "]ktܑ*J"xH1A<fQjB(I4.dނXjxh#+7C4êgZ6=b$[ҵ1TӱKȟQ/ +<U䋼#;@CC~u~`:,f#i^ |$yubLD=hDMm0w=CwO ѣhݖC5\]X('R3tuN '|<큧ĕ)Wt'USۀ]2\i6H.6z 8#ɃEjn )By.s)Oh]rK,MnZ6͒f_Iݣӿ~o,q@7.M_9X}]#zFP!R3S]DS>Q,Kr:mh!EXYhIdvrH:a܀ޮlm" ] IRv cDmF/~(t~;l4* %Nj*TSꟽ,rbYOOn@LxVBģU@: w* &BؽnR@M6L-V惋#MןOhM\QX3`AYžbe=Ì 5¦Vx!н>@T6 _lৎ2YkJ??g{+3lW&\^Dr\>/W'SzKZI7m AW؟/ fd9hgޫzly}&x6j(, |Y6\T{s$u]Sx31></B{v?3 Q[ln4Y YNh*xTq0WR"m^5!r.C@vT|`.y`|o?.lAFk2!:R#+%uaCg`yJ_HaIH {5VS*qBƨƝK(TZɀD2|V#(b_蝒Ea5Ev VyHo$NQx-LЮ Mv@=Bj{x1㣂/!=%[p$ ` 7L0r2|CZt|NE;PQEWo5pt{T6&ՐN]lvG!ʉ+d~Z*8uX/ne#ᄚ0X^[/ܴR0x]x!’%*g` n<&r|2޺+j/Ri~N&]M< ai+hj|2,h"b5[w8u6?(ɕVzh.Mce UmeE6Ά~)y3Zg;OЌMm.KpkVv@; 9m$B8FR-6|qF=`*~;pQ^`D,=;|B~fL߆7ZcMjTS_M"md8JL_ ,LVz* 6[]TF):a~-6o߬XB6+i1"u AeSܬ]Xuj4 [E{=ekq`&#BŒMѝ;nvd4;EGd%/0|y"X꭪Uh)b*y1\7tևF&=2tJ uŐMQqÌk7xl*5$Oސ%5 *!D/5ǀH̰~1 bL<d-CJϧ'm[ptl^+؊DOGN/i2̘Ъj޸ы( .?"y f1]P= pixܚ20%-/%M>GySzY/ːVxFa=*l"<$X;)+<]}tXnq4NH8X}K@.P" !8FAL#gP=Z헫Jjc5aՔ ]%\Ξ6ƄMju  m p[ .(MxǛɰ\PٯK3]yCņ={I ix_ShPq--N]{29 C unΒTSl#j耟p]lRu@]6Woy'IewPd#Rh.dyO~`,Eȝ)f7<SK9 [E3~XisŇ>#0)y /zd4rBX)kxA@ ozr3>5G蓦($U7a'c9U(q[KܒV 蛵_Nr%ؖRz^PV#:Dd]Z%՜}?q,ͥnx.xB02 o.B rIq@ikTMw[o6ib[=r4CyơYmx̙U:i ?K« ۝䟣сo>T_A\" ɯs HDj.B5g=ωtkD>TM-}M2?XiR TOrY/Tpj؈l@fqIZ}:Td3T(HhnxADߕШp蕘am01~~w{#2dž=8zNv TnbX9y ^g \zIF Y~E3eiM\^7V|\gH>B֢9g1W@BOE,8K'L81` BvRι@.n*aʪЊ0?XHZ, `10ɶQߐ6[[ ,;8p$&Ydiy_4OTK~VXakFa'DpZk ^q&r;(q<cSScUNtBCk7t\+v@{7r 9{RzQHT_wYO"z|wdEU2SG=n[2he.o!M!̦{!.lSB;cB!۸b͆eJgjpq[泮c.^1~eFdVC)h}!I n Yv EoI)eos21SpV~{krpO7&h.ý){:@1c,`tFxŧWwsG%sSy!1cyӛVېg{>WFBWM%Bb\߯ inQKaBdLW?2+>w<{4[*eqO K,x,Yvld^^ ^KdޗoPŕ^&$lTH[Rh~d6J0K"M*A8g 7h|14=+TP'NBts]hQb,Dz(z|09s\px|eYG9(Ioz KU혰HHlN.Rd=q͢ !4(؂i ?A|OZymIПz,\TA'Fy]렃hA]l=)3vzy˜ >93=9Q|3f :~o-uIu 6eh%r^^ăKu[XͿOln( hg4Np{2L̞F,^%#\Q8֡b9C&iIR@z 82P| #@=ON1BaM :*7wKdSD8є"]:e7dղ%w ]<Ik_#]Ҍ g-g=DB  $ mm$RScM8b̲iuBq7Xp֊^.RrjSՂ>ojf :zヴ "Y7 Ua^qx<؅Cv &k&1NF6D= BFn6{>Ily}әRGjx)RHv%KT63[TZ51b6TaƻysJB} WYWVQH z{V/#fk1Qu)hT_{3&3܎|u&ͅK(D@Ǻc0Qvem7ٹa *9KdЄe~f`&Ms>c]4QBva-) [7)vzxN?wO+^="=ThDfjn-OTIs7o]b=VDr ̒G7B/@4,]!vzr-m78}=ZPAT{ɕ;Ȝ's2>O1K4fo'wghTmoeuivC(^wB4vcZMkYCT}b)7*Pl0HL,q%u"E;$ߤ"z+ك2oT@L%GM1ψGx~慨<o;IE"Q<I#hߵ <vz(:.,c9^2}݀T骮*9 5BkE&k"9 P>Pv|;i/wqOwn*nawhif$Za]q#3-YNw+},ʯzkӢX6;yNuLNXKv!]5"-=1 }3^Hxb,}ys>@\0 ia+\uAS:kay+l5B]9įTK@"9 ?V?y_m.lwI=xGbIxu|czGՖ1AG+r F[Pc=Y//܌9Pog2!᳔lChS@qimw:KJ$HwZXQ@3~. &7bx(*wH Y_}Wc\wz 맫kO gSWSye柫HQFt͘誅yB2yѼ!~H/+CQ͍"}8MTs=ЮeF#3S =s1~ <7'҇l2-S xGvc*eYe…wX{(0 ̪`br\ZPpj@zI'<7߷yr9bF _*3E4bj}f%},6ɤ.,A Ȕ5@݆ghpM˰V 7- ,=Ks'-3]CH ?}B8m >޹WQ-ψX|UH,b\ڶ"8xb߰V]SVWjPF`nf#y/>.}[`XHĻ2AγxE54hT7[~S (5e͋`^wQeNj&֚ZhC?+HQXt(߫(U$zc>iW\+g$KV =VKw^xɤȷEQ*(۫ni1,/RVuWi3wN28eSZY@0KF9;#:Og<*x K@ٷ.bq`LaVS18ѳD[ml]/G(<o})_e3|ݼ6=j`Ki p wD59J61R\ު1sx` lLq}".Wh2nG?_l|VMYg@Td m-l&yWlmfW "ٱN1SEOEN;O_ k~RX?\O%JO.Bx>D:PktU+\4 5?}'eQQLܐ^8JHp ^XGH-y ߤ-㨭$'Ït)j7/3>LϏ9԰-/j@]6Tv(Ѓ6c4q3rμj>o^ƣ3bn/S*o޺*-::6n6Ӻr>AY_Ǚ9"")IoR{.} u Y'fĆ^fk(~љKol+BbLG.6& 21#uE? WQ2Ym8pj`>^KPoJNg4J)~vWښ7A<ȻAJv6f}0JTw8@ßD}HdFV͊[e۾vABh~%٨τ=n|5/?i9{y; AgnltuuQP\BID(<)y # ၺfNFw[TnU1qnaṊ$xT>\)gD!(K݅ѫ\ J%rLBPz Oޛ*;;P;X_ Wbڸ$~w\o.n&lwoZ/ u}i udAa"Qq-Xm AʋM^tC]<;$ 1KyvϜt|d 1qն ٥rvOcu ܨ"-n.,1q)=l3i.yrٿ#6aw[vαL3,mqFz&vMf,:JQY#=frWz;j 2@1Qoݚn+>txRv5Jc%sLUK/#Ob@%eCH&SJµ?6P*O\2efYf9-3 z UDsi28c}#'OQٞÕ>w VLALJƦ}PnJUUE Sc陽M ?(.&^Ӽr;`xڹ}R\,!<]t:z):SrfiʾKfq`-CaGqEs=֊GPOQh-́u}y9b7zCZ #\dWb5xgm+0g*mMsb {{*0 \߄,W<*oD7HA,8X gIy?st_|TKջm+ 0zPg}&N[ό9 PA`FgaoNlȦn9j"W!f)G=+}a(l@Tp_P*JqwX&;[/ &1:t@QGyrL:Mè/{ΛLJEU]B?3%>zj#Vn)}:{l՛dR9JhMw#6p[F8:e) aƮ?MzP!ּ: .]bV{)MT6TbՊֺ0Vzw&./,m<%wYR".N5xzӯ|`w `B^)ʆ P8%}yp9T%c'np0K3(Cʡ̖#T!PN1%ޓGns`WNם\/+j!}U<<m^(z#̩Qѧ2n7U^G&-X 9 ĵ+t rY%3 % 4  s܆i@ܡcfG *.p*˭zOF6w%{oZyw:t8{ޠ^)'>` c ;(īPHS]mt D^PZА4oo cN]@R?G#|PO!0ڋ^5P# Lu n\bgw:8j-^)Gi&Z Fs --W:]X{;tdd6cP3-$2{oh/+CoUbq"'`++7J-R![ypy8¿P*gzZs^pEƛ;dU1<ǏVa9ԂIƵOdP%-Qd[±$Ò1׎J Xǰ<}|;w{ 8n[nRLJI+finݬu; '<9WA}xOo4z *^ebOoWfʩ{ÀB."˄,vf_^gJ`}7=&pۺ[~M-R>wޱ*[^eB<`鄳{Dm*SҜa"\j:m=0 eVkcN7ɳjc.#y絗<ʜLK3'S%)QEpݕL߇fӎp,/n]".10""s f409D  0LT3&"Yԑ/N^f.e'Ci5Jv\-&Z vB Kkmgz& Аap>;'Ѽ lfHn:,z-7Y, <;lϏg:,rn>FpLtٯ׍yO,kݟ'a`KR+E%o^s' màOe.86P)Upt|#3|*\Bnfb\F^V9 i'51OKюwxfs^>޹MvtPĘu)h*91D+]A-4f{^4(:OwHډ]dJ ^ɠxCS @EIJWS?=ͣ W^_͟#9r >[WVFIÜ$rʺ5Ӕˋt1Cubγ\MK|;,@Ok53 Oc({ڣ+{}`Xhru-'5oC0A*yݰf3y^V^h`w-zk#R<<:(ҾnA]/hCnR6+[4ZUAJM،(rB'4 dfO̡Ck+H7f5Iַ$4N` 97jr!62lzr9qW=ƴ3qczcRr2^!*x'&G5c-"Rw1Q:+Xn&>f['a띉H0dX[ 8kw 2O'6QGZ 0!2*tBmE6L9W#f'+_ǜ oi#~{\E>n ˤ:q|W*twI$뗤1(R׮HV5⽭Ż !to77jQb4=m C-W씯H "i=W"=8 N|3#G^"yS00^> 3403^Ũ@L}7#4 Y{]?-%%e:xPM'ec1G:sR9  $RMĈ}MɡrrK~M/,zr,L2K 媓.@ρfk2#T"#Xcf9&hhsb~`ΐt!a@-rP4RƟ>P{k4PaiG0弳5`Fw6rpl)? p![S‡w j4A}D0@`澙ڰ N VЯhton'OCOp4Nؙ t }elwx!&Uُb2*yϼkǮ}l!D#"Z`!55W\*+ l%*gj^UJ\P0$bF)FBc Ϣe{JEwٮ_n]V1>)8- [[65!\oR:4 h ;<DM)y4_GE}4R!A֝t.y~[2gЦ]\=(D'DIm.=֞_@E ) #snd;e8 lL8C p;YamFq˼G(OzvM#%,`i6 B\gJc23rf bRHJ~?.I뻼)> ~Eq~ ,roL-۵5m1#)b:>L9AIaZqZ=4|*VRV-R'k%!A`m8袒HdQId`i˧nUp8"S)$mD$@^moᗂ/xlfSɀbh3N?~ *o;aJgW,*kRg?lE7fz"a8Qڞ}I?21VxP C<۪wm٧PHT82夸EOjV{8ڀ"#V>ʷgETz=pzߺ uWǰxL^_" Yia>r98,:HOUQP}^ϐ_&hF lUeL|R[ ; XaNBƒ .e1fv/5HIx8N&Es qtc~oLxgiʏuJ}2ks߬^g)9L}G mמ t]d(i6._9>ua:f#M޵%+ns/ŠX^(-|+.(w` hYh>`;n~RIJ J؋YKw*UܠCYw+3Եyt^#HUK!IqئoTZJk9C32ZKicsjH&[\L(>Z*mz8;tN'JSvZtܩd#9׀ X5ﲂUmp\'^$ɫC-xԱ(i}3Ľ@꧘J ̳WaBIГ^VxӹE?jxpvށ!Ձ-|ܶ :+zl4fX&rJP1a e+su֦\p.!'{p׫N- o/#k7 \jZr(G@h B|}qVqtpCf3W_Dq{~~K./ i\c­F;gWέE0"V#^nC&PBjmI y&w H2<8>D`𢩼]^~vBrJϒіgYTJt !V1^g@ԞC+Rᑫ1۵ԝ]XMq*;Q  y}~dc 8W" *.d0qu¨^~U ڦ{agTYNnh/KUW($MܵH:XaÆCYBRM*02~[bb+hDjSc *I RkuaI‚9<+5v(8vjH82Kԉm&Wx=p?;"vx罹y(v:j29:>\* ZP x#J'MkCkC|d`Trk5yK4eBQWDd։%^cuM"uzm9 *B3 $!q,k7MrgYx#Gݤ0 +W),xf3#;@~7u)hd-{mL#uv/~#lԿvʁJfg&.f$(85&Y.MƼ-:9 ; JVu,դÑ+}GaWd"xܮS[fUFK01Sk'b__=^&mJ0BA˪ a$BL&VYE5 f+3mo!HOaG;fmւ;GVψet(ƷEaxey9CڧkcI±qRT]4!śH-hMLH^Z"d#Ϳ6#bzmf׼΂1Kq)[뛱O@&jbޝ> 3Id'_tkf2̞"A7{8qϟ)t>%8rZ'fs\ m=ƴK;+v~*|*GA7ՊAH?)"aij1z{nsRmj]T斝7'j64hNQ  ~q3'1S`n?Vz/iȲUbyrǥ{̾cHi 1^y˨Hrꍉꟴ [E}Hh903Yz`_FsRYBO֢eX:4\)VFMA *[DzaC^sUbڵȨ/gX6A^d^CNjIbk[<\s?r^8T[E4J+ԅ靴Ҧf 7сg;"~Dh"ު 6:z%!_}%j ja5Ma>7LaqٽEaD:"gD?#[ֽT6 eL y@QA -^zֵaĥTӭ#gMb˳[KݐHӣťNVq x((#Z!Jg2}åvWi/ %G RTMC29ܼHc05TV264 67A@9C ]vQe.xwjQi\x.K h{㮬!O52:4F)~`zz,n%hKD?&dBpuQ^<ɀF+0[oUnviQML& @gR/X7_[o]1NKR,|"mwXNHU}&}?,fN"y)2Ų_aKz[O8S}gJŢd%s.`lߡZNjm YeXpfPW^AJ )LIlFǫJ>WTQ_ر`ux(n7O|7+wt}h$r{EŁ꜏ Άܔ=T$7f۞Dgv7hxuh0M MTM{S;tyFqHuEmKd C[CdR6bA%TO{w䷃%zhY>&1d%uŒp%8ϟ<`܃u`CY=s( q!4.i y a04T&4 >"x s9etUw<kLY4[lir"TK'guMIeBzRQ&2/(،h[f =ڌ ^%o,Y߉Y/4..WUTO#Y?6QC[W7@j(_)䭵8پ<ա{/2j.z5Ì! eJ?G͒ƤmZ`U)O÷tU槥N}:Kũ7@)kmAM&.OU."L7Ù>aqtE~yi4,)9Y@`nybS[o4Yί<~3<*>hLP !ɸ=҉-+hS|U闆XաtU"vbIS4CuWr#j~>Kl[mz`F(iU W$]JWh\WUf#^#T D l8uqx4pR啲8l%jD8 qЁ!K:"H=f1p[vTJ%!בsQs4}r<.#rC""&"Vh\'b8"jt r,U2(a+`HH> ,`QpQ$8(L} %$moaŌ\(;jj{WNJ-Jӱc ^V,ߖVޙNzwۄr!n\沋QI{%]^ xJrA*A@aS =^ՂtՏP`He{K^Ws Cg/ؗ ^:q}bn8i(I8Ѱgoɛ+ n4Q}LzL{xu74Zsd"!mm l^YGA-dIA N9tWYz4O稗eYk:~@\!Zm@s8#YSz_\wQ޽Y[ N : Cє!34}}J aS z3@ad~5Q%}`jl\ngзhڸ8&GSr;:"FF:X3(Ue=.x),dlF7DGSbtlANm77H$*dQ9'/[VUI 溗IhBf@N,8j$n B"tΚ`*dj۔./QHbqΊ^M{+qFWoQw2:f.~)1 iv/,w(<1҈9iuU3>LM2Fd\zߛRlR1|2]*=AŨ !T L.6i<J-3mˊnE:QtZ:e2`vZ(갌rـvnV}UMEfL(w{0u b3 EdocJ`yI9ǔ6N>eV17J4)gzn ́–*sX,w&:Nc3" lkoAEyPe3hmWɵľL.MwbͷB%<RۙPy>۸H} .cs&"KȘwDzW$Tht;l+]d>W{θf+ݪ?%'%qbnG`[ۥ}n& iHޑ#z[`x X2q+ +B[ƻ.qT@R*u%R }OSb(&Slu $^k|9a- 0ry*m]OM0hrlj٫8sIݐ!h侑t=~K^ֵCe4fI}AMwcɦm.8[(3H튛gmGB07oLc놌̜ E1gsTGy ~"rRtfDd|W8(K[׵+.Oԫz=>R(2vF-!bQs kjէzRNLL6~fV Nū31Āaj:T+JTCw:Lm?BD| `t}J8uN "kEuL410dk{Ż;*uhC]@ߦ3lf 0L;G5'Q8/aqamĥ/)޵Sm]V(ECl :@HNGxH} \!}}e.ƌFnM4Rd\ubo lTNW!1=2c*!r nT>H\ \(z{;Ns[?hO;\xI".&/C OiOHrĴ3Bd+x\8S7!lbRkL-tJa^k/W8&媭n@ơL4w4ZZ6I1S}Ø60K~k҈5;W<=ՠ(!Goe wz>¹~>)KB@hUq=Nfl[Z/ a氼bѲBŠ܏j *,0k.jKXČͯoϱ#_}__)y|e| J9vnx D&Jgx^A?n3?GpTofF'|>{'lQ- .*F%KxeF{gNw{ A;2XQ`O^dEd \ Y ЇoGL|.m#gE{?BOʑh1pd6 h-+poUT c.fg`Eyti4;Rb1=cD`QV#^rI.Bt>@`H,WiݻTCZoYz,!O`2wOI1W,'jVԦB}:8ك/Bo*tS GǞޜ_U}V9q1X/8V"GJoFjL,sZ_ZCWۛTbH. t2;y*۲׵7×[ Ϩ'N 5u{ "$^ cTCT 4fb MQķ-Y _BmwȄ"-z1yLv9cpRhxgV)C1r`"ñ^LމjugE Qkm8 n\ulu1ǣ$BtnP&cmA9+2 vj%3ѸmW!uyvT#<׸ %\q9l6Kx1n&/5P;wSBqX ]K-{s| WyK7RVb&5MĘ Jxq)y"P`M3oPx) !wfB&V*HMm=nVz/ QF#ٮr8cѯpf~l-^C N Ft)PEӫ#`6A tSq!@.]?!zZhW''  y>Wd|odz4Ih'.RX<Õ|k= um3US|f̞ʅC{F%moi[|719Q"47\}='ׂњmz `9n웚kʄK;rampt@HU \23XWqxw⬛mϰO-)Rjf(||P$ny8+{-`8a!} !mtH1 w.Nޘ4Ub!4?YMA+ɱ-ض°' |ڶEx#&ש\#(KObt髑ϐ>2nS m={z-[UL*o(`'CnPONXol&4c-(|MdhӅ8$y(5ўIyog;7qsN zL*M,d~RS?vF H6ĖrL${♋eh#r U1|[{ݸ> jP=Tz : :΍ j$F c`˟h+~Tfhuݲ} F4gZ94PÓB5][1}.hgBUJwa{D?.k)kDynpfz!DI-snM|^oEEQAc31XM'5ͱqeלN(C=5:a8])y>s@G N8!-$ݞ_~7AtT^- gIyAÑ:3w"VgHExm;FOt_S=~Mw4A=)ƕ [MKB*JXIWXF*dspiW~+aW@pPn0Wh:MVl4ܚ3৒ܸs=@`g33 L3 UUUUUUUUUPf!`~Hf33噙 y˄mO_}<> W1H 5pB #F׍/&]bSz\/lԥ$T4:S[&)p 1nKH<]b1 25_䰚`<Ʃ61m/x*GCϠ0p َ.4+ok(ZvaFg5aE_0ԫkVȲu j(5ck:▃)dr@n(tU_Et /9f(O)ErtGr` _ n(_XB;v`Fqݻ yhiv``POF c:`HVz.hacW<VThiA0ř?:;MF\k7D8#f Gǡr5y%fL]ȋ<:Ӡ 8;4["^3?8!iKDdS^x^uT'-ymWQ܆Fݻs+n7G$0ܴXPI6DŽFxw}qބQy$ Yu͠W~k|eOm\.wWx3O'ckQE"߇=\i֘B$)G+.آaüvHq^#AuH3'$m@@~ka jʊ'ytNs)[ΊOc:xm1U} &pD'ëپW(/Ձ8HXB_АƖŒK3Hf^nZ2CZ==QxyG]L+n?Zl)Zl/a'0/u"g f{䤖aR}n'&Xqyx+aa]B ZG˶:&>= lw 퇽q耑ȯcf (^chb@RCFΛ šwLU۬z!{Utz'(nɚCQ~@)aXd)E&dn(yaC_q*q ḱn,PFHV#;4i8x>֘BK\H4,0e"٭9x1= Ѡ.f+HS<In@T\"O[aASڻAU%fӬXR]J4wToqݚx /[xkT#nc {DK*. v@ C0>Ա3x54}~¢FM+'C3O[Z(+ƫ˧-DtT:1^R=օη`<ּdbV},msPUe9ݗQfz`߂њ dcؾB# | 6x4hɩ2x(IՄnxO4|rB .-aޖ#ud,azxDƛʢ,;zު|F[*8\ؼFRb{TYYw\A$;\nEBdG";l#y|zӻSakʴs Z-by ZrI d0 ZOy$ sluq! TljiԂV[ǧX "=6v4g`{#)yÆ]}eVjm݅WWOtLB+I{`ݭ1/QwOh.zk.t"tOޠ+  Խӻl4s. TXH,0;JRx nLڲ C6m6KA FmU*.q)*`*HCF+h9C6X֖lLsp&ډ_ՊLP ԰  *:PhkkH %ianG-s,^m)HByn\l#$g{|F*>V~8d=MYhfYZ䱖beyP-Α뇕^ںǓtleeBG!$ 8ŷMLF!"Cf]8Uk'BdPde; WmrXoÏ$WxVRv€A a Ἢ/gPǺG]#P&=9ّZz8ֹ÷ ߈T}K70EQQad}EP-E) TVWCG2ٰ(dT t@dm'{amYFH9 gq(!;&y\ *s %~9 C_an%zd*b8ui-tB~[ge}Ҿ.>ʘ,H=|uz1r#D)Pa}["xX,V!`>X mj>G6R=tTƎI#,S-LC;]$]'͞.lc>Ǯ0tLfsr\ӦC$`v)[M7T8ǬSNs20km<{asdc6`IniUa=[G}f~wuNPrgqۿ|5u!Gȓ/35j[f]"C5DUlgI n^_5F.//hyMZOYI[&5q6s4V l3$d kᶷ&Tg >7Ϸ`zPM 8^8+J擸89XfV  X?kJ%EC]!x*J/DwO> jH B6`}YoYv Ѝ #TP\!k7g&^ܐ=5IeWם6*k3,gMs{SMJR^%Yral;`^*OPf"}ȶ*BJABzQMIgTl)2LGZbN}l=tpo7>1rs\Js$hlM$& kݝf<uB7dw~mفtkkX-|%NkEq n[<[hC@k.iZàghǑ5<kj)M@HhC%RTJ( &S|ru0Y1Vigo)=t,n֎,Ek=ߑ/$v |O߸6RUz޺wjy:O? ;[&Hn燻{.R*67$ ;E<[4(%_f3#CzCPUϑx r[{do}C#l?Č"qR5,*nF%d*[SA/]˚c.khH*%>3y@{TCF ֭zK~ YE 䵝G_Q}k+L $sy@LugZhF]_N5p x}SN2%y}%b6>T*}˿! @} 6 Ҋ@6"6Ĩ$v&.iN#+q9vCOmeQ< F?l(ٱh1OarԅS;VpROA_PT0kb|[Vǀ{̷oU;Kҡ]Ù [Tsu>=I856uH'^YwCR BhTʩ$ HQ: Nd_ [٭h]ҊtC偌dssڞ_gkˊOQZWs4.X40Y;C{ #5>ZaXJHJqqyQMb(JRCRg9ұЙP| mјjcr?}|X"? Yrnqƨ%/='AԸ'o/9ZQݢ>՚O[ѭ?;^2_4 bw;RO+ 6ov.WbbG1/ZmU-5#+%L :.E$}v"zY)tIl==_q[cb%w\0Ha9zd{0l54rwt=[。z7DG0+@jWToGICkhƔXOk½uإ %)G5rgX4.)kQ[ͼ;IzCA4JvI#Ԫ4͞WliԴ"K~WwV `' ءp2$h!p N*(EX_.r;٥;Z GӔ}dCrDP]'vk{)˂UT Y.l {]$}@-^֋E8 wbv4T'C9gZA->κ't)6݋zjTG= YͩmJ[G ӋkEc[h.Bf K0ؘNA ._<ﴻDb.Z ޷ĺ}Q \3GY|XW7W ĬR@&V>b`>7rYC8xRc!yT AD  JnK^5K F2I1Ut_Iإ } 1e*>=au5#lyU'  Uڕ"Q ܧĤQnIGACӒ&,!_4ŏu(tiZDUz&WӘRN7$1#8,PN@+骋=|2T#h:m:yQ[!S%F\LrU;ȥ:ŰriX,f ^Ƣ'us¦AuwSsE_uol,KVԖw@&\D܉f'I:hFx@ zlR+7郚G5DTky5Ư>XXL.ْ}cG/}%XQɬoV;U {Ժod~z*Y.%D -ˆ-9Q޾ː 9{Etvpeܖ]f guGƞM3X7Q RLS-"E$-%,_ B _z-JScYfHKm_0$$?#Z42tڐ'%d& ݒꘝ@_$qj(#&5O(Xd^"V•B3V7B-*=Td^qE~^Ҵ,d$=㜙JզB=UbRgC5mv΄ڇhtȒg;] r6nЙ/J &>!( s/=rt1&-V}-K cB/eUlE@p}zAps{}w>WI)mN{L~&NLJ&$ԭeyr2QMŗjJ-=[PPiV,/GeR%kw&7jD-]E%i/fT8*ggeFTrb[ Z;"O?Լpys,q”&5:R03Œ;Q ͛e _^/=Y,\\_pn8Ymn?jYJb: O*4ʱ; Bg+C"[+fxl>kROkcޱ$Gkyfl;SY+oVjv)?QWϫry? ym!lP7's%N뢞;/̆Y17"lDiB6F蜬)5O)\^~|2kz2-g.8+Sa;u?{s='BmeHY$<ą NB1Pj qk/=&n9Cc`ι!zڧ[t(79ՔΛ12b1Ad&BRߘxsmjatZn؁` 6-҇=W:@&d3)'7<8ʊOS;!DA]zYZA6 FrE4ʣcu"J/DS=6^eʒU#;;8f3Yt~pN@HQ`7ÛύQ>f?/#zO2'-n_yh_b5J| xErʅqls}e#i"Q\QZuR4>~үlنS_YgyB@HKTKT`1s*- >>ԈX nmyn\ݼKL& I:~ԯ2uIϷ*B:Ԇ'$ xw=siT2Ki [ pu'ʛ2M?3buhB ؍af^9'D_[Yzx=LTX4 z lxT`2>X=~0ᵉ Am80x!k}";vުe%ң*L4s{% 85(U`ڙOSmH9$-Q\'8ޭPFxc|Ce- *dq"Tyi6YL=/Pt m[1#F؛c xot/nir`զ ᭼@x-zpPBO;;5W^CK>l^-x5,|iHl_Je}_F2>x= \촔%5&Α'`oM>zmD#uLr' Xɏl3KqֻZ;nqϧjx,B^P`CC1`6gW{s^7y⏸%+JNy*J'wL'bTLB%R.u%2嵹|XM7Ep`vd))Vp{T6?)SxP7_`["Uc]3fOgVKIQa}X#L~&;bAҿ>S@ r8ɗۻ>PX1x%A{hkB)% lOdžƹh'5etQ1_HHU%3ٖOeHf=oIBQ4yvyB<&QoɬlgZ5]WwB eTSU,Ns3ي#Yȉr&x}Y|MbTtik~0  ʲcmVHQKL)v <83]\!^tb$ w^n_8h x[4}rRF]sU˻~,@O*qDC)b՚P4u`xj;tBq"ƜRF; z !x_r_AU"PtfPZGg|jL4Ksiu!D~[{yZ1 _nbtHac//ߌKn MP5m_$P|Ba;^<.sڝRx% d8ebH xCDG$ҏ9p#!'W1ev n xmۦڬ#񓪧un 025KP5~xgփ{bn}NU!YNЕA|jCZ`P޽āQ:mvMNŔ}GF<]Vr|݆:gp+z͠R^K̖S;wCяomvc Und!0 e40է0 1Rk''aXxs,nY׿0/LߖP@J!o Pyh+y[LW鹗 u.EA$XiLc'֣Krz7"o~WS;/sX6^ IB1f>ZĒT.$ Qm HOCR=N<j;/8J3T}/Ƨ7sd&zj$)&Z7}g!;iCR㸷!*<Ԥ so7 I#ǴEg)3+?Z:}0>hꤱO\ShZKj?L, *{/3,;: ZĽp.=,N1Ѧ"3_'-\ &DCzu&TW s٤e7;*hhdxiׄ^U(r' cVezA±,Y֎-aM<#_e]f O7 '$@#*y[ >i۫` . $G@ei Le6Gڰh>=:q NY]d>U)1+q]3Wo>"+G(d*q1R.w4,q"JB%A8sO- 7Ke$ n=:guE b$FΧ׋:"lYA>xDHyY@ɖgy'| 5L^1]%p sr< s![I`mX<"Y9<4:9)*A&[ ߺ1θ Oi\txs^B_axgf@kk /QǷ4ܰJ.┺'N7e bN6\H"hQ <%Y˰``i汦oY!ɿTbbyeBh,Ϲka}Y,2wf7s YByfR=cUI@IQzjcjϏb9l= %֥T#̢qwZ@d;ʵZ<+LEkP. S BNJ܋<E<#&s`[3yC;Ȓ!咡8RB 2ipJV+Eص:j=lU8xm񶆜5B&j٩zWgnervй@-)JWusIr(r{ m-\Zm-ua0QY2Y9PqO֭T@ 'LAa~k?crX{j]\ 863K6;8qەaNJed}dAc(YQM&-/:\.7+Z8rfx'hEd/bMI5wUgTd^ q$K~àeawt/ܧ何{&Vl0qN8$\Zu%8YŲH q2cG* .۴MvBFCPBd}d?u&+(:Хl{C>!gMpC4ҹ6:FAɍlºp4%2oIc^;Z^NН_(pva2]%N}N]+CcJP@K鯇Z]$@N3op6<5Th3J0cz~]ge3sݠ/ʇ\)%Έ|AT+r*!dUZ+P!B_[:%uޙnZnAe-*do־t*@~1 $Im#($Mwȕ=!+W]0J!y flXv\-CV';p ] bsjVnAiFL"D{lܑ\"nO5DLZutoJ"n&:Ͳ5ƐLY!OG&*#a'YBol=_Rk(a0kVq~fZwyZ ~D0|p ?JrԈ6PN4/+uyץ7e5 \M{ٶ W䆝qB8ⳏ뱢WwXNñ7GbBN[A]\ 4Õz,NWQ9~Zv Ú^uy |̡R-GAow1lBv_tŢ4{K3_"j tPIr87؁ؚuYƮ{i62pA8" az@3Y%`^{f pk_6ιE : z!N‘mm  ֍eI[mt [ 26CAF]Ŗ.c*1SwC:G=o}5ڞqR%RT]ڞSnNd(g?+F*ѧ"|4ihdCݗ ^ɔEKpJpZ2rn @<ՓP*gg*hm6B*v# 4ׇo)aaOb-^rū>0j85+}*XMM5q-zvIŸ+hsmN_ҁJ!iI `tɎ_4i]*bm*|s#Zo$iq//O"';s*fCh禁!ͬPaYAXe6Q$X̓ZAL6#) y.혉o"uE))Ot'1c*b[D)@e=pCd~.ч %'#epp1jJEq%xq{MdYB6 ۑRzD]Wv7&mr*RhNHIv"; /..+3|S:.TQR8̝ߍ&{VUwvMWH ԩPj#Jb#d8wH:n>m^#:[ wQaj 8Tߥm$ܨV#W@ [Zn.X_!xemٻ_q@ыLnS:ؘh>!=lfWy[H, ޺4Bus:1;bmFVxe?staT>=6:г fӸfHZSYa- Ol#2|A!7u#i N$Ry:X>G 8\&ٚܠ3O22 3wɇ2,52~,{C˝5tF[$Ƃ{R `ڶQ\+ىĿ2D>ӔtrM{R2+ (oFey5m%Y2V:_%L<1XmCĽ`k :.Siad^ck}~C+Kk 5Qr+珻aNQu i2@Wg~-7t7 NONSyjTtނ  0t4&^Uўڴ+إc,,w~֦ wC=K5;7fhv_Y[l 9D{Lr{C}㨰d,ZY7hZŰc>By\[ ‚ $IDFAx֧c{i@& .AIeؓsdGT_gjb5Zp]o"`^ F2z" ㍺M+%qOgR#=wѵLBR{]Ss 2J]6( z ɶaZl+>rE ⹯5 ,r&4pUHIP]w2`lg(W}b6Z/H`ж G۵ZbPCDɛϦJmQ}Fuvi@Ig3k*Y 5*5 P6u~B l5fHncp~{\ w#<5 JٞXN/ ۩\z{ݑ=)`DrZYK~b'HK'jlpZ̾X-Fɗ [@S) >ǯ-zZk۶8 *JT@MU;@l υw9+oC[?MιK>s}]+ዓ_m o.CН_'~Eu#9b=|iHjx08KQe*!8ִ![/p-4<5K^:y:A ~3}e1EDq2az今%cA$} VzA!`O!qw+k*{5ībe0*hQ' RrT;yyZS+kIn ^+,M{#4pN 3K|ihgcWKS1lBZp}Xm1أl pm"(zGK;؋ȋ@/%F#ٲ?"jXPuKM \ ׆zhԐݩ[<ȫe>b( "hj AB- P΂^xE"˓$ՂegE/O; 3װGF=pʹE{~OH-Ii b\[YHc&x\v1t( &]{LlBfM9q+J:| zشp)$z,{= B"òh/99BdǕ W+N5@!yGR7I(8QK`vZ"r!m͏#IaZ|=6bxv] 柴{j2 9gKN~`TՊLadP\T7_ӂE6  T>EAգldPy96]9W@Bߏ"cD<\gmQgv@'gEX.-YIr/fRct[;OF[v#W՝u}ucltqB{d ]Rrj*6c_ +&_A8i8q!$T<4[&H\7A%7d!4<0(I-L{6Ticb- 1\yڠf<9O [|P{D>iqϜNRe ؎hFl.XbYXrp ^ xAt{f̹>n;TٮgS0nQBcE9`ѯH,}J"v>h1olCd$5dmHhJs"V0dcm}qFK^ )PTիdP:}HF~ՊB:@m=k@X'l{ [Z 2O0Uw tI#@ E8;4eJL)7q*ALo2,g.EDf<7È̚2_D15qpL@=oںx0T0UaQ)oWRWkK jlbmK>iKщP׌vs_\4eT}l8C ZaK%EEFŒE Xд=UY#ͱt*\}~ȑ oDKՂKh1 25ޝ~ZVua'u%VdkT{a֬+߬T7y8^"3kge'Q[P tloN+6d}3[fr9NrxEw2N ms_D,hxd`+?y[6D$h=7zF=u7a 5)c~^EIV"`ixF7`^,0sǏnAݘ=u)SbAOIU`{{aKcGPM$'5Rn+ EHb+sZv7}II/bTe\nm!_"gFp8" 3^L )_. !c+H$s+M2gfV"+Ɨ5XWY%_jq>({g-VRno^yMR:AJJvy,.r}/Uo FwEŦxƸݲ1jM5~m{}w4/3al0JxB'B7 J5Rs󫃸Φ| {"w{?#U$6܂=8c&n3MJnDDmry-56^WcZZR?j$O7ʣ_eLWs\ 嶗>ݔFC[4X9ܠo *WvE>wRCw >ʉ[ 912 ҶI']Jˡ˒Z|1zch>z#d90 [۴!&~aXЕڤȦ:A\%̆$|}1ȍ=i}6DGL;qm+.n3m^FOdGNs%>W)Y^.7FCjYZ}.j'Z71VU pդYukP6{) 9m">a$_ӡ݂`n8V XKdѧ4ub 1֣)]E4WCqIwFG=_krLv\_,Y0Q- ~3# qY &펧wa~o08\5t!|M k\;ƬA}A&l`ژxVAK U ockߎݖg⏜czcN2 !cSz2:q`D%5(nF6`)>X޶T0yˁjI!w"_%dnL$E9i}!!pd Vt. ;hJ$'m=A\%7^ k`8ȇK sfqKub DԐuMk>([[,kC9͊ް+Lz d¢O 9m . X(_`:V Ǻc}Qʝh %Q<麄c>h/Fŀ5T:fdo y)tAj:"OO2y{H ׺z|͚pP'^" L pMꔆ̛K-hz8jǂ+9 Cʇ@a^A)h `$h4p=U~ {EˤXn@H! qEvwظ$$IzjsX+.o@䌋(-Z~ӕEs5 'ڮ}f l.d ?.̕Q= $ Mx 'Ƃt˕~ѠF? TFw$uw3}м5Y t }'$@s6jQIsSF pݮTG 'YjM$=2 rh ,uPǾ?LNR|Ka>h{&l;ӏ?Zf̘V bHlg뭽&VI*1DWocI6ҒhѤ9U{Shbq'RWLVhΥyzԋ^IBU[XzdkYU"|셪T}F.`*5SIrܺx7b0ĝӤ5(پ&^NKy V3 PˋKJa|T!ܥQUɭ1 ]]5~6q@4+@>D_Vكpt'tX{F6-4Fz"!ʱc֊g|"6P=@\>Ö\=0& &8xE@cB6@0;9u|"UwmGF@HFC~xBL/CZ:QʺD. 2O-f:V ѥg,dWUpvNsjx+b1ձX[#}Cb /TG`}7:O:(R!lCE ސ)OwVTFWnj Id ZDq%` ZޗUG\L"8baq&4.R~A}νupzIUV;ED$=ǭ#2:< Pخ Yh_(9 h^WߢV+YVŬ$'H[*{krLEP]ZB ["f6d.0Ҳ(ЦE#` pU;>:t[4%Wq z[-!~~WaFoXo<Ź_)AbAYDb#x>b';:E輗\ Rٙ &ZJcҊx=1ϋT0)}~z_CyI&(w;Vb;'Sv|a21csͻS^.`ݸoy#^￴'cY2@kDOCo>`9]Q%ǵ̏فxH%!?5oA}5MV1B'D;dNJ)-b]\Whָ<2:iV|d髛\`GھA[6֮t*>LxFq9]"&1{# Kod$PfX$G{T-+CG穄y,yL@rf~\ˮ&xbZn{_T).UH re8\zF>H DQGOתʩNdrqO3{ցuΜ&]-4.EaX/s_ w029c _Se}AW_KDFwAX:|e6DE4>e\N!m&Y%b6+sfEN8&Ӵ)v\48J.<-A LKQvZ+~y,)\Hj elWsNUJ"blb88HF>sm}*w#}uڅ;|crz_fOnǒQft/Uȉ_=$0AH.7^c<̠֠v8SWSw#XfZ7In;i,Wd@2ħF7 (xP˘+3~}qwz胷,*ur5 q],Ñf+ĽufObd5oQ3tw bήڣ^A1jTc̍<]g_y&9r?w^pz0@X0a WZsc倿}v'j/ <gnW,Rue^?6ѦK>>ӿ"u}B/r% ŞN: =(Vەv ErdhL$^M~,o0awDlヅ(.m= gK7ۛp܏xxCjc#pqvtI; w -gf4ܚe8=]~!vW4䲾wPb=7a w6Гf8} B K,ڰ@ɫrzʳlhX /=7OC 4`pOL3bC.H#:;xW*dEڒݻ, J^"NH!#^*N?`3;AUZhg!a22 +!O+#'& \-Wx`eU+yr>|`bUZ <>Hb5o,dY`1.X[ -6^cVݓ|Ykے)rÇ2{"UJ#B꺆{P1,`{`țcJs#懜{S cuPt!NRW+9bmql**qfg͉j?2D !B ч->х:mdL ot7sZH7[L2Nv]&rqԮ̝"Ђ'-0xDޣPRY~ȳigIv>*z5$28wu̳*/>N>LӁ#]NBcx yL_J4‰뒰myeZb|{o1G2zr%PJ`'c!jڊRs; =1wP)SӝW%Aψ?$p/:ePИ-<ՒcݱgWb TwgjǣC !&"u :},WPyzQNWrpr_=mh =Nۢ r:gHNא6yKO9'Xok+"VOcp-{UM oɻMpfo\2'WNk2J(\ Lv*{JaX.,SA䦇[WWVv^1KMK!K.Ko3`unz9`nۃgj(ѪD%RJ접LxaŚȑ;NؗEX}q:ͨHKVFnʶj"-ZXCFhLp"P(޻ XhK, t+y/V *%-J36]v*\Nؓٿv_8[[ 0>T2 Rx5xK%g1i wau'm7ڂv^L9+Wn#M[ +z=xxnu]8ZuV*) \PMkȝr} ]!`J$j{+Fy{7mi[O8rI1;,Ϝp.EVuxM+]tص;k!;*HDz,md&+EMo,)-'@AswrEb4 JY#xOUœӄxL.r =U<Ű0'B9}w[qg\ҳV꟠ݳB9.+`FS-iMɖMl_ NwWƉXSY`,FBf2 > Dᝅ%"%Ayb84 ̬%Vpm2(nNPTN- I3E.x<^GÙ΄2,?5Ŏ7]OV`PdY HmxUҭVNogRXIT80!a|y=V]fx=~4]CDgYF՚.tim+Lm-hm yН^;!9އ%8KHӝ^i7,P.$<9 BgRԯ"|GXgK%*eЗa&}īU 9r$.A3jXYI n艬 m&doHPDh2v CaԝWlM0MCzwv rr[WBr܍ -#>/b|A2*)"hx5r*4#ه*]xi rDZyc>Xc}tmkL,>fs0- 7aD=!3fPȐa\ZC{3n}ʒyrʘEL==//k;o C ;|U~tQ]JU?\|yDx,fq~w?X6!+u=lKN щMT!̮1h>!6aQyj/0a:.<:O(!-Xg_҇WӫxT\乴^~߆ Mx̗Sۡ3ciEbbpؼ|t6{c¾XC*lBGϜ`ܶ ByLOCz؈'`njV2Bc2 'VS#ҩz?:HW;TqV#| Z՟u+R_)Ua{4%f$K^ vmC[_mZę) $4e,]zOZ76r:E< T܁npq}s@ڧa>Ω4hu/ @H] dD4k\emϖeÎKd<#A~' r֌F^([ٕ/mmOt^0! J@DVeMc:>⁆n@pIX4CgsV=#H/`0D5鷆 3Lpg + 'y ZjmGjqC/Z~- 4M{L}$PVrKG)~[ʆT6D55kD_Fŗ)vL XzTT*#ԬvwS´1& sNܷ$'1!(/z/wvˎ|A`~3=33}>a`{~eǟt㟺fs0a{C0 `w$S X[ go/src/pkg/crypto/elliptic0040755000000000000000000000000012412656737016120 5ustar00rootroot00000000000000go/src/pkg/crypto/elliptic/elliptic.go0100644000000000000000000002561012412656737020334 0ustar00rootroot00000000000000// 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. // Package elliptic implements several standard elliptic curves over prime // fields. package elliptic // This package operates, internally, on Jacobian coordinates. For a given // (x, y) position on the curve, the Jacobian coordinates are (x1, y1, z1) // where x = x1/z1² and y = y1/z1³. The greatest speedups come when the whole // calculation can be performed within the transform (as in ScalarMult and // ScalarBaseMult). But even for Add and Double, it's faster to apply and // reverse the transform than to operate in affine coordinates. import ( "io" "math/big" "sync" ) // A Curve represents a short-form Weierstrass curve with a=-3. // See http://www.hyperelliptic.org/EFD/g1p/auto-shortw.html type Curve interface { // Params returns the parameters for the curve. Params() *CurveParams // IsOnCurve returns true if the given (x,y) lies on the curve. IsOnCurve(x, y *big.Int) bool // Add returns the sum of (x1,y1) and (x2,y2) Add(x1, y1, x2, y2 *big.Int) (x, y *big.Int) // Double returns 2*(x,y) Double(x1, y1 *big.Int) (x, y *big.Int) // ScalarMult returns k*(Bx,By) where k is a number in big-endian form. ScalarMult(x1, y1 *big.Int, k []byte) (x, y *big.Int) // ScalarBaseMult returns k*G, where G is the base point of the group // and k is an integer in big-endian form. ScalarBaseMult(k []byte) (x, y *big.Int) } // CurveParams contains the parameters of an elliptic curve and also provides // a generic, non-constant time implementation of Curve. type CurveParams struct { P *big.Int // the order of the underlying field N *big.Int // the order of the base point B *big.Int // the constant of the curve equation Gx, Gy *big.Int // (x,y) of the base point BitSize int // the size of the underlying field } func (curve *CurveParams) Params() *CurveParams { return curve } func (curve *CurveParams) IsOnCurve(x, y *big.Int) bool { // y² = x³ - 3x + b y2 := new(big.Int).Mul(y, y) y2.Mod(y2, curve.P) x3 := new(big.Int).Mul(x, x) x3.Mul(x3, x) threeX := new(big.Int).Lsh(x, 1) threeX.Add(threeX, x) x3.Sub(x3, threeX) x3.Add(x3, curve.B) x3.Mod(x3, curve.P) return x3.Cmp(y2) == 0 } // zForAffine returns a Jacobian Z value for the affine point (x, y). If x and // y are zero, it assumes that they represent the point at infinity because (0, // 0) is not on the any of the curves handled here. func zForAffine(x, y *big.Int) *big.Int { z := new(big.Int) if x.Sign() != 0 || y.Sign() != 0 { z.SetInt64(1) } return z } // affineFromJacobian reverses the Jacobian transform. See the comment at the // top of the file. If the point is ∞ it returns 0, 0. func (curve *CurveParams) affineFromJacobian(x, y, z *big.Int) (xOut, yOut *big.Int) { if z.Sign() == 0 { return new(big.Int), new(big.Int) } zinv := new(big.Int).ModInverse(z, curve.P) zinvsq := new(big.Int).Mul(zinv, zinv) xOut = new(big.Int).Mul(x, zinvsq) xOut.Mod(xOut, curve.P) zinvsq.Mul(zinvsq, zinv) yOut = new(big.Int).Mul(y, zinvsq) yOut.Mod(yOut, curve.P) return } func (curve *CurveParams) Add(x1, y1, x2, y2 *big.Int) (*big.Int, *big.Int) { z1 := zForAffine(x1, y1) z2 := zForAffine(x2, y2) return curve.affineFromJacobian(curve.addJacobian(x1, y1, z1, x2, y2, z2)) } // addJacobian takes two points in Jacobian coordinates, (x1, y1, z1) and // (x2, y2, z2) and returns their sum, also in Jacobian form. func (curve *CurveParams) addJacobian(x1, y1, z1, x2, y2, z2 *big.Int) (*big.Int, *big.Int, *big.Int) { // See http://hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#addition-add-2007-bl x3, y3, z3 := new(big.Int), new(big.Int), new(big.Int) if z1.Sign() == 0 { x3.Set(x2) y3.Set(y2) z3.Set(z2) return x3, y3, z3 } if z2.Sign() == 0 { x3.Set(x1) y3.Set(y1) z3.Set(z1) return x3, y3, z3 } z1z1 := new(big.Int).Mul(z1, z1) z1z1.Mod(z1z1, curve.P) z2z2 := new(big.Int).Mul(z2, z2) z2z2.Mod(z2z2, curve.P) u1 := new(big.Int).Mul(x1, z2z2) u1.Mod(u1, curve.P) u2 := new(big.Int).Mul(x2, z1z1) u2.Mod(u2, curve.P) h := new(big.Int).Sub(u2, u1) xEqual := h.Sign() == 0 if h.Sign() == -1 { h.Add(h, curve.P) } i := new(big.Int).Lsh(h, 1) i.Mul(i, i) j := new(big.Int).Mul(h, i) s1 := new(big.Int).Mul(y1, z2) s1.Mul(s1, z2z2) s1.Mod(s1, curve.P) s2 := new(big.Int).Mul(y2, z1) s2.Mul(s2, z1z1) s2.Mod(s2, curve.P) r := new(big.Int).Sub(s2, s1) if r.Sign() == -1 { r.Add(r, curve.P) } yEqual := r.Sign() == 0 if xEqual && yEqual { return curve.doubleJacobian(x1, y1, z1) } r.Lsh(r, 1) v := new(big.Int).Mul(u1, i) x3.Set(r) x3.Mul(x3, x3) x3.Sub(x3, j) x3.Sub(x3, v) x3.Sub(x3, v) x3.Mod(x3, curve.P) y3.Set(r) v.Sub(v, x3) y3.Mul(y3, v) s1.Mul(s1, j) s1.Lsh(s1, 1) y3.Sub(y3, s1) y3.Mod(y3, curve.P) z3.Add(z1, z2) z3.Mul(z3, z3) z3.Sub(z3, z1z1) z3.Sub(z3, z2z2) z3.Mul(z3, h) z3.Mod(z3, curve.P) return x3, y3, z3 } func (curve *CurveParams) Double(x1, y1 *big.Int) (*big.Int, *big.Int) { z1 := zForAffine(x1, y1) return curve.affineFromJacobian(curve.doubleJacobian(x1, y1, z1)) } // doubleJacobian takes a point in Jacobian coordinates, (x, y, z), and // returns its double, also in Jacobian form. func (curve *CurveParams) doubleJacobian(x, y, z *big.Int) (*big.Int, *big.Int, *big.Int) { // See http://hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b delta := new(big.Int).Mul(z, z) delta.Mod(delta, curve.P) gamma := new(big.Int).Mul(y, y) gamma.Mod(gamma, curve.P) alpha := new(big.Int).Sub(x, delta) if alpha.Sign() == -1 { alpha.Add(alpha, curve.P) } alpha2 := new(big.Int).Add(x, delta) alpha.Mul(alpha, alpha2) alpha2.Set(alpha) alpha.Lsh(alpha, 1) alpha.Add(alpha, alpha2) beta := alpha2.Mul(x, gamma) x3 := new(big.Int).Mul(alpha, alpha) beta8 := new(big.Int).Lsh(beta, 3) x3.Sub(x3, beta8) for x3.Sign() == -1 { x3.Add(x3, curve.P) } x3.Mod(x3, curve.P) z3 := new(big.Int).Add(y, z) z3.Mul(z3, z3) z3.Sub(z3, gamma) if z3.Sign() == -1 { z3.Add(z3, curve.P) } z3.Sub(z3, delta) if z3.Sign() == -1 { z3.Add(z3, curve.P) } z3.Mod(z3, curve.P) beta.Lsh(beta, 2) beta.Sub(beta, x3) if beta.Sign() == -1 { beta.Add(beta, curve.P) } y3 := alpha.Mul(alpha, beta) gamma.Mul(gamma, gamma) gamma.Lsh(gamma, 3) gamma.Mod(gamma, curve.P) y3.Sub(y3, gamma) if y3.Sign() == -1 { y3.Add(y3, curve.P) } y3.Mod(y3, curve.P) return x3, y3, z3 } func (curve *CurveParams) ScalarMult(Bx, By *big.Int, k []byte) (*big.Int, *big.Int) { Bz := new(big.Int).SetInt64(1) x, y, z := new(big.Int), new(big.Int), new(big.Int) for _, byte := range k { for bitNum := 0; bitNum < 8; bitNum++ { x, y, z = curve.doubleJacobian(x, y, z) if byte&0x80 == 0x80 { x, y, z = curve.addJacobian(Bx, By, Bz, x, y, z) } byte <<= 1 } } return curve.affineFromJacobian(x, y, z) } func (curve *CurveParams) ScalarBaseMult(k []byte) (*big.Int, *big.Int) { return curve.ScalarMult(curve.Gx, curve.Gy, k) } var mask = []byte{0xff, 0x1, 0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f} // GenerateKey returns a public/private key pair. The private key is // generated using the given reader, which must return random data. func GenerateKey(curve Curve, rand io.Reader) (priv []byte, x, y *big.Int, err error) { bitSize := curve.Params().BitSize byteLen := (bitSize + 7) >> 3 priv = make([]byte, byteLen) for x == nil { _, err = io.ReadFull(rand, priv) if err != nil { return } // We have to mask off any excess bits in the case that the size of the // underlying field is not a whole number of bytes. priv[0] &= mask[bitSize%8] // This is because, in tests, rand will return all zeros and we don't // want to get the point at infinity and loop forever. priv[1] ^= 0x42 x, y = curve.ScalarBaseMult(priv) } return } // Marshal converts a point into the form specified in section 4.3.6 of ANSI X9.62. func Marshal(curve Curve, x, y *big.Int) []byte { byteLen := (curve.Params().BitSize + 7) >> 3 ret := make([]byte, 1+2*byteLen) ret[0] = 4 // uncompressed point xBytes := x.Bytes() copy(ret[1+byteLen-len(xBytes):], xBytes) yBytes := y.Bytes() copy(ret[1+2*byteLen-len(yBytes):], yBytes) return ret } // Unmarshal converts a point, serialized by Marshal, into an x, y pair. On error, x = nil. func Unmarshal(curve Curve, data []byte) (x, y *big.Int) { byteLen := (curve.Params().BitSize + 7) >> 3 if len(data) != 1+2*byteLen { return } if data[0] != 4 { // uncompressed form return } x = new(big.Int).SetBytes(data[1 : 1+byteLen]) y = new(big.Int).SetBytes(data[1+byteLen:]) return } var initonce sync.Once var p384 *CurveParams var p521 *CurveParams func initAll() { initP224() initP256() initP384() initP521() } func initP384() { // See FIPS 186-3, section D.2.4 p384 = new(CurveParams) p384.P, _ = new(big.Int).SetString("39402006196394479212279040100143613805079739270465446667948293404245721771496870329047266088258938001861606973112319", 10) p384.N, _ = new(big.Int).SetString("39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942643", 10) p384.B, _ = new(big.Int).SetString("b3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef", 16) p384.Gx, _ = new(big.Int).SetString("aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7", 16) p384.Gy, _ = new(big.Int).SetString("3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f", 16) p384.BitSize = 384 } func initP521() { // See FIPS 186-3, section D.2.5 p521 = new(CurveParams) p521.P, _ = new(big.Int).SetString("6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151", 10) p521.N, _ = new(big.Int).SetString("6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005449", 10) p521.B, _ = new(big.Int).SetString("051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00", 16) p521.Gx, _ = new(big.Int).SetString("c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66", 16) p521.Gy, _ = new(big.Int).SetString("11839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650", 16) p521.BitSize = 521 } // P256 returns a Curve which implements P-256 (see FIPS 186-3, section D.2.3) func P256() Curve { initonce.Do(initAll) return p256 } // P384 returns a Curve which implements P-384 (see FIPS 186-3, section D.2.4) func P384() Curve { initonce.Do(initAll) return p384 } // P521 returns a Curve which implements P-521 (see FIPS 186-3, section D.2.5) func P521() Curve { initonce.Do(initAll) return p521 } go/src/pkg/crypto/elliptic/elliptic_test.go0100644000000000000000000003300612412656737021371 0ustar00rootroot00000000000000// 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. package elliptic import ( "crypto/rand" "encoding/hex" "fmt" "math/big" "testing" ) func TestOnCurve(t *testing.T) { p224 := P224() if !p224.IsOnCurve(p224.Params().Gx, p224.Params().Gy) { t.Errorf("FAIL") } } type baseMultTest struct { k string x, y string } var p224BaseMultTests = []baseMultTest{ { "1", "b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21", "bd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34", }, { "2", "706a46dc76dcb76798e60e6d89474788d16dc18032d268fd1a704fa6", "1c2b76a7bc25e7702a704fa986892849fca629487acf3709d2e4e8bb", }, { "3", "df1b1d66a551d0d31eff822558b9d2cc75c2180279fe0d08fd896d04", "a3f7f03cadd0be444c0aa56830130ddf77d317344e1af3591981a925", }, { "4", "ae99feebb5d26945b54892092a8aee02912930fa41cd114e40447301", "482580a0ec5bc47e88bc8c378632cd196cb3fa058a7114eb03054c9", }, { "5", "31c49ae75bce7807cdff22055d94ee9021fedbb5ab51c57526f011aa", "27e8bff1745635ec5ba0c9f1c2ede15414c6507d29ffe37e790a079b", }, { "6", "1f2483f82572251fca975fea40db821df8ad82a3c002ee6c57112408", "89faf0ccb750d99b553c574fad7ecfb0438586eb3952af5b4b153c7e", }, { "7", "db2f6be630e246a5cf7d99b85194b123d487e2d466b94b24a03c3e28", "f3a30085497f2f611ee2517b163ef8c53b715d18bb4e4808d02b963", }, { "8", "858e6f9cc6c12c31f5df124aa77767b05c8bc021bd683d2b55571550", "46dcd3ea5c43898c5c5fc4fdac7db39c2f02ebee4e3541d1e78047a", }, { "9", "2fdcccfee720a77ef6cb3bfbb447f9383117e3daa4a07e36ed15f78d", "371732e4f41bf4f7883035e6a79fcedc0e196eb07b48171697517463", }, { "10", "aea9e17a306517eb89152aa7096d2c381ec813c51aa880e7bee2c0fd", "39bb30eab337e0a521b6cba1abe4b2b3a3e524c14a3fe3eb116b655f", }, { "11", "ef53b6294aca431f0f3c22dc82eb9050324f1d88d377e716448e507c", "20b510004092e96636cfb7e32efded8265c266dfb754fa6d6491a6da", }, { "12", "6e31ee1dc137f81b056752e4deab1443a481033e9b4c93a3044f4f7a", "207dddf0385bfdeab6e9acda8da06b3bbef224a93ab1e9e036109d13", }, { "13", "34e8e17a430e43289793c383fac9774247b40e9ebd3366981fcfaeca", "252819f71c7fb7fbcb159be337d37d3336d7feb963724fdfb0ecb767", }, { "14", "a53640c83dc208603ded83e4ecf758f24c357d7cf48088b2ce01e9fa", "d5814cd724199c4a5b974a43685fbf5b8bac69459c9469bc8f23ccaf", }, { "15", "baa4d8635511a7d288aebeedd12ce529ff102c91f97f867e21916bf9", "979a5f4759f80f4fb4ec2e34f5566d595680a11735e7b61046127989", }, { "16", "b6ec4fe1777382404ef679997ba8d1cc5cd8e85349259f590c4c66d", "3399d464345906b11b00e363ef429221f2ec720d2f665d7dead5b482", }, { "17", "b8357c3a6ceef288310e17b8bfeff9200846ca8c1942497c484403bc", "ff149efa6606a6bd20ef7d1b06bd92f6904639dce5174db6cc554a26", }, { "18", "c9ff61b040874c0568479216824a15eab1a838a797d189746226e4cc", "ea98d60e5ffc9b8fcf999fab1df7e7ef7084f20ddb61bb045a6ce002", }, { "19", "a1e81c04f30ce201c7c9ace785ed44cc33b455a022f2acdbc6cae83c", "dcf1f6c3db09c70acc25391d492fe25b4a180babd6cea356c04719cd", }, { "20", "fcc7f2b45df1cd5a3c0c0731ca47a8af75cfb0347e8354eefe782455", "d5d7110274cba7cdee90e1a8b0d394c376a5573db6be0bf2747f530", }, { "112233445566778899", "61f077c6f62ed802dad7c2f38f5c67f2cc453601e61bd076bb46179e", "2272f9e9f5933e70388ee652513443b5e289dd135dcc0d0299b225e4", }, { "112233445566778899112233445566778899", "29895f0af496bfc62b6ef8d8a65c88c613949b03668aab4f0429e35", "3ea6e53f9a841f2019ec24bde1a75677aa9b5902e61081c01064de93", }, { "6950511619965839450988900688150712778015737983940691968051900319680", "ab689930bcae4a4aa5f5cb085e823e8ae30fd365eb1da4aba9cf0379", "3345a121bbd233548af0d210654eb40bab788a03666419be6fbd34e7", }, { "13479972933410060327035789020509431695094902435494295338570602119423", "bdb6a8817c1f89da1c2f3dd8e97feb4494f2ed302a4ce2bc7f5f4025", "4c7020d57c00411889462d77a5438bb4e97d177700bf7243a07f1680", }, { "13479971751745682581351455311314208093898607229429740618390390702079", "d58b61aa41c32dd5eba462647dba75c5d67c83606c0af2bd928446a9", "d24ba6a837be0460dd107ae77725696d211446c5609b4595976b16bd", }, { "13479972931865328106486971546324465392952975980343228160962702868479", "dc9fa77978a005510980e929a1485f63716df695d7a0c18bb518df03", "ede2b016f2ddffc2a8c015b134928275ce09e5661b7ab14ce0d1d403", }, { "11795773708834916026404142434151065506931607341523388140225443265536", "499d8b2829cfb879c901f7d85d357045edab55028824d0f05ba279ba", "bf929537b06e4015919639d94f57838fa33fc3d952598dcdbb44d638", }, { "784254593043826236572847595991346435467177662189391577090", "8246c999137186632c5f9eddf3b1b0e1764c5e8bd0e0d8a554b9cb77", "e80ed8660bc1cb17ac7d845be40a7a022d3306f116ae9f81fea65947", }, { "13479767645505654746623887797783387853576174193480695826442858012671", "6670c20afcceaea672c97f75e2e9dd5c8460e54bb38538ebb4bd30eb", "f280d8008d07a4caf54271f993527d46ff3ff46fd1190a3f1faa4f74", }, { "205688069665150753842126177372015544874550518966168735589597183", "eca934247425cfd949b795cb5ce1eff401550386e28d1a4c5a8eb", "d4c01040dba19628931bc8855370317c722cbd9ca6156985f1c2e9ce", }, { "13479966930919337728895168462090683249159702977113823384618282123295", "ef353bf5c73cd551b96d596fbc9a67f16d61dd9fe56af19de1fba9cd", "21771b9cdce3e8430c09b3838be70b48c21e15bc09ee1f2d7945b91f", }, { "50210731791415612487756441341851895584393717453129007497216", "4036052a3091eb481046ad3289c95d3ac905ca0023de2c03ecd451cf", "d768165a38a2b96f812586a9d59d4136035d9c853a5bf2e1c86a4993", }, { "26959946667150639794667015087019625940457807714424391721682722368041", "fcc7f2b45df1cd5a3c0c0731ca47a8af75cfb0347e8354eefe782455", "f2a28eefd8b345832116f1e574f2c6b2c895aa8c24941f40d8b80ad1", }, { "26959946667150639794667015087019625940457807714424391721682722368042", "a1e81c04f30ce201c7c9ace785ed44cc33b455a022f2acdbc6cae83c", "230e093c24f638f533dac6e2b6d01da3b5e7f45429315ca93fb8e634", }, { "26959946667150639794667015087019625940457807714424391721682722368043", "c9ff61b040874c0568479216824a15eab1a838a797d189746226e4cc", "156729f1a003647030666054e208180f8f7b0df2249e44fba5931fff", }, { "26959946667150639794667015087019625940457807714424391721682722368044", "b8357c3a6ceef288310e17b8bfeff9200846ca8c1942497c484403bc", "eb610599f95942df1082e4f9426d086fb9c6231ae8b24933aab5db", }, { "26959946667150639794667015087019625940457807714424391721682722368045", "b6ec4fe1777382404ef679997ba8d1cc5cd8e85349259f590c4c66d", "cc662b9bcba6f94ee4ff1c9c10bd6ddd0d138df2d099a282152a4b7f", }, { "26959946667150639794667015087019625940457807714424391721682722368046", "baa4d8635511a7d288aebeedd12ce529ff102c91f97f867e21916bf9", "6865a0b8a607f0b04b13d1cb0aa992a5a97f5ee8ca1849efb9ed8678", }, { "26959946667150639794667015087019625940457807714424391721682722368047", "a53640c83dc208603ded83e4ecf758f24c357d7cf48088b2ce01e9fa", "2a7eb328dbe663b5a468b5bc97a040a3745396ba636b964370dc3352", }, { "26959946667150639794667015087019625940457807714424391721682722368048", "34e8e17a430e43289793c383fac9774247b40e9ebd3366981fcfaeca", "dad7e608e380480434ea641cc82c82cbc92801469c8db0204f13489a", }, { "26959946667150639794667015087019625940457807714424391721682722368049", "6e31ee1dc137f81b056752e4deab1443a481033e9b4c93a3044f4f7a", "df82220fc7a4021549165325725f94c3410ddb56c54e161fc9ef62ee", }, { "26959946667150639794667015087019625940457807714424391721682722368050", "ef53b6294aca431f0f3c22dc82eb9050324f1d88d377e716448e507c", "df4aefffbf6d1699c930481cd102127c9a3d992048ab05929b6e5927", }, { "26959946667150639794667015087019625940457807714424391721682722368051", "aea9e17a306517eb89152aa7096d2c381ec813c51aa880e7bee2c0fd", "c644cf154cc81f5ade49345e541b4d4b5c1adb3eb5c01c14ee949aa2", }, { "26959946667150639794667015087019625940457807714424391721682722368052", "2fdcccfee720a77ef6cb3bfbb447f9383117e3daa4a07e36ed15f78d", "c8e8cd1b0be40b0877cfca1958603122f1e6914f84b7e8e968ae8b9e", }, { "26959946667150639794667015087019625940457807714424391721682722368053", "858e6f9cc6c12c31f5df124aa77767b05c8bc021bd683d2b55571550", "fb9232c15a3bc7673a3a03b0253824c53d0fd1411b1cabe2e187fb87", }, { "26959946667150639794667015087019625940457807714424391721682722368054", "db2f6be630e246a5cf7d99b85194b123d487e2d466b94b24a03c3e28", "f0c5cff7ab680d09ee11dae84e9c1072ac48ea2e744b1b7f72fd469e", }, { "26959946667150639794667015087019625940457807714424391721682722368055", "1f2483f82572251fca975fea40db821df8ad82a3c002ee6c57112408", "76050f3348af2664aac3a8b05281304ebc7a7914c6ad50a4b4eac383", }, { "26959946667150639794667015087019625940457807714424391721682722368056", "31c49ae75bce7807cdff22055d94ee9021fedbb5ab51c57526f011aa", "d817400e8ba9ca13a45f360e3d121eaaeb39af82d6001c8186f5f866", }, { "26959946667150639794667015087019625940457807714424391721682722368057", "ae99feebb5d26945b54892092a8aee02912930fa41cd114e40447301", "fb7da7f5f13a43b81774373c879cd32d6934c05fa758eeb14fcfab38", }, { "26959946667150639794667015087019625940457807714424391721682722368058", "df1b1d66a551d0d31eff822558b9d2cc75c2180279fe0d08fd896d04", "5c080fc3522f41bbb3f55a97cfecf21f882ce8cbb1e50ca6e67e56dc", }, { "26959946667150639794667015087019625940457807714424391721682722368059", "706a46dc76dcb76798e60e6d89474788d16dc18032d268fd1a704fa6", "e3d4895843da188fd58fb0567976d7b50359d6b78530c8f62d1b1746", }, { "26959946667150639794667015087019625940457807714424391721682722368060", "b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21", "42c89c774a08dc04b3dd201932bc8a5ea5f8b89bbb2a7e667aff81cd", }, } func TestBaseMult(t *testing.T) { p224 := P224() for i, e := range p224BaseMultTests { k, ok := new(big.Int).SetString(e.k, 10) if !ok { t.Errorf("%d: bad value for k: %s", i, e.k) } x, y := p224.ScalarBaseMult(k.Bytes()) if fmt.Sprintf("%x", x) != e.x || fmt.Sprintf("%x", y) != e.y { t.Errorf("%d: bad output for k=%s: got (%x, %x), want (%s, %s)", i, e.k, x, y, e.x, e.y) } if testing.Short() && i > 5 { break } } } func TestGenericBaseMult(t *testing.T) { // We use the P224 CurveParams directly in order to test the generic implementation. p224 := P224().Params() for i, e := range p224BaseMultTests { k, ok := new(big.Int).SetString(e.k, 10) if !ok { t.Errorf("%d: bad value for k: %s", i, e.k) } x, y := p224.ScalarBaseMult(k.Bytes()) if fmt.Sprintf("%x", x) != e.x || fmt.Sprintf("%x", y) != e.y { t.Errorf("%d: bad output for k=%s: got (%x, %x), want (%s, %s)", i, e.k, x, y, e.x, e.y) } if testing.Short() && i > 5 { break } } } func TestP256BaseMult(t *testing.T) { p256 := P256() p256Generic := p256.Params() scalars := make([]*big.Int, 0, len(p224BaseMultTests)+1) for _, e := range p224BaseMultTests { k, _ := new(big.Int).SetString(e.k, 10) scalars = append(scalars, k) } k := new(big.Int).SetInt64(1) k.Lsh(k, 500) scalars = append(scalars, k) for i, k := range scalars { x, y := p256.ScalarBaseMult(k.Bytes()) x2, y2 := p256Generic.ScalarBaseMult(k.Bytes()) if x.Cmp(x2) != 0 || y.Cmp(y2) != 0 { t.Errorf("#%d: got (%x, %x), want (%x, %x)", i, x, y, x2, y2) } if testing.Short() && i > 5 { break } } } func TestP256Mult(t *testing.T) { p256 := P256() p256Generic := p256.Params() for i, e := range p224BaseMultTests { x, _ := new(big.Int).SetString(e.x, 16) y, _ := new(big.Int).SetString(e.y, 16) k, _ := new(big.Int).SetString(e.k, 10) xx, yy := p256.ScalarMult(x, y, k.Bytes()) xx2, yy2 := p256Generic.ScalarMult(x, y, k.Bytes()) if xx.Cmp(xx2) != 0 || yy.Cmp(yy2) != 0 { t.Errorf("#%d: got (%x, %x), want (%x, %x)", i, xx, yy, xx2, yy2) } if testing.Short() && i > 5 { break } } } func TestInfinity(t *testing.T) { tests := []struct { name string curve Curve }{ {"p224", P224()}, {"p256", P256()}, } for _, test := range tests { curve := test.curve x, y := curve.ScalarBaseMult(nil) if x.Sign() != 0 || y.Sign() != 0 { t.Errorf("%s: x^0 != ∞", test.name) } x.SetInt64(0) y.SetInt64(0) x2, y2 := curve.Double(x, y) if x2.Sign() != 0 || y2.Sign() != 0 { t.Errorf("%s: 2∞ != ∞", test.name) } baseX := curve.Params().Gx baseY := curve.Params().Gy x3, y3 := curve.Add(baseX, baseY, x, y) if x3.Cmp(baseX) != 0 || y3.Cmp(baseY) != 0 { t.Errorf("%s: x+∞ != x", test.name) } x4, y4 := curve.Add(x, y, baseX, baseY) if x4.Cmp(baseX) != 0 || y4.Cmp(baseY) != 0 { t.Errorf("%s: ∞+x != x", test.name) } } } func BenchmarkBaseMult(b *testing.B) { b.ResetTimer() p224 := P224() e := p224BaseMultTests[25] k, _ := new(big.Int).SetString(e.k, 10) b.StartTimer() for i := 0; i < b.N; i++ { p224.ScalarBaseMult(k.Bytes()) } } func BenchmarkBaseMultP256(b *testing.B) { b.ResetTimer() p256 := P256() e := p224BaseMultTests[25] k, _ := new(big.Int).SetString(e.k, 10) b.StartTimer() for i := 0; i < b.N; i++ { p256.ScalarBaseMult(k.Bytes()) } } func TestMarshal(t *testing.T) { p224 := P224() _, x, y, err := GenerateKey(p224, rand.Reader) if err != nil { t.Error(err) return } serialized := Marshal(p224, x, y) xx, yy := Unmarshal(p224, serialized) if xx == nil { t.Error("failed to unmarshal") return } if xx.Cmp(x) != 0 || yy.Cmp(y) != 0 { t.Error("unmarshal returned different values") return } } func TestP224Overflow(t *testing.T) { // This tests for a specific bug in the P224 implementation. p224 := P224() pointData, _ := hex.DecodeString("049B535B45FB0A2072398A6831834624C7E32CCFD5A4B933BCEAF77F1DD945E08BBE5178F5EDF5E733388F196D2A631D2E075BB16CBFEEA15B") x, y := Unmarshal(p224, pointData) if !p224.IsOnCurve(x, y) { t.Error("P224 failed to validate a correct point") } } go/src/pkg/crypto/elliptic/p224.go0100644000000000000000000005044212412656737017217 0ustar00rootroot00000000000000// 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 elliptic // This is a constant-time, 32-bit implementation of P224. See FIPS 186-3, // section D.2.2. // // See http://www.imperialviolet.org/2010/12/04/ecc.html ([1]) for background. import ( "math/big" ) var p224 p224Curve type p224Curve struct { *CurveParams gx, gy, b p224FieldElement } func initP224() { // See FIPS 186-3, section D.2.2 p224.CurveParams = new(CurveParams) p224.P, _ = new(big.Int).SetString("26959946667150639794667015087019630673557916260026308143510066298881", 10) p224.N, _ = new(big.Int).SetString("26959946667150639794667015087019625940457807714424391721682722368061", 10) p224.B, _ = new(big.Int).SetString("b4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4", 16) p224.Gx, _ = new(big.Int).SetString("b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21", 16) p224.Gy, _ = new(big.Int).SetString("bd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34", 16) p224.BitSize = 224 p224FromBig(&p224.gx, p224.Gx) p224FromBig(&p224.gy, p224.Gy) p224FromBig(&p224.b, p224.B) } // P224 returns a Curve which implements P-224 (see FIPS 186-3, section D.2.2) func P224() Curve { initonce.Do(initAll) return p224 } func (curve p224Curve) Params() *CurveParams { return curve.CurveParams } func (curve p224Curve) IsOnCurve(bigX, bigY *big.Int) bool { var x, y p224FieldElement p224FromBig(&x, bigX) p224FromBig(&y, bigY) // y² = x³ - 3x + b var tmp p224LargeFieldElement var x3 p224FieldElement p224Square(&x3, &x, &tmp) p224Mul(&x3, &x3, &x, &tmp) for i := 0; i < 8; i++ { x[i] *= 3 } p224Sub(&x3, &x3, &x) p224Reduce(&x3) p224Add(&x3, &x3, &curve.b) p224Contract(&x3, &x3) p224Square(&y, &y, &tmp) p224Contract(&y, &y) for i := 0; i < 8; i++ { if y[i] != x3[i] { return false } } return true } func (p224Curve) Add(bigX1, bigY1, bigX2, bigY2 *big.Int) (x, y *big.Int) { var x1, y1, z1, x2, y2, z2, x3, y3, z3 p224FieldElement p224FromBig(&x1, bigX1) p224FromBig(&y1, bigY1) if bigX1.Sign() != 0 || bigY1.Sign() != 0 { z1[0] = 1 } p224FromBig(&x2, bigX2) p224FromBig(&y2, bigY2) if bigX2.Sign() != 0 || bigY2.Sign() != 0 { z2[0] = 1 } p224AddJacobian(&x3, &y3, &z3, &x1, &y1, &z1, &x2, &y2, &z2) return p224ToAffine(&x3, &y3, &z3) } func (p224Curve) Double(bigX1, bigY1 *big.Int) (x, y *big.Int) { var x1, y1, z1, x2, y2, z2 p224FieldElement p224FromBig(&x1, bigX1) p224FromBig(&y1, bigY1) z1[0] = 1 p224DoubleJacobian(&x2, &y2, &z2, &x1, &y1, &z1) return p224ToAffine(&x2, &y2, &z2) } func (p224Curve) ScalarMult(bigX1, bigY1 *big.Int, scalar []byte) (x, y *big.Int) { var x1, y1, z1, x2, y2, z2 p224FieldElement p224FromBig(&x1, bigX1) p224FromBig(&y1, bigY1) z1[0] = 1 p224ScalarMult(&x2, &y2, &z2, &x1, &y1, &z1, scalar) return p224ToAffine(&x2, &y2, &z2) } func (curve p224Curve) ScalarBaseMult(scalar []byte) (x, y *big.Int) { var z1, x2, y2, z2 p224FieldElement z1[0] = 1 p224ScalarMult(&x2, &y2, &z2, &curve.gx, &curve.gy, &z1, scalar) return p224ToAffine(&x2, &y2, &z2) } // Field element functions. // // The field that we're dealing with is ℤ/pℤ where p = 2**224 - 2**96 + 1. // // Field elements are represented by a FieldElement, which is a typedef to an // array of 8 uint32's. The value of a FieldElement, a, is: // a[0] + 2**28·a[1] + 2**56·a[1] + ... + 2**196·a[7] // // Using 28-bit limbs means that there's only 4 bits of headroom, which is less // than we would really like. But it has the useful feature that we hit 2**224 // exactly, making the reflections during a reduce much nicer. type p224FieldElement [8]uint32 // p224P is the order of the field, represented as a p224FieldElement. var p224P = [8]uint32{1, 0, 0, 0xffff000, 0xfffffff, 0xfffffff, 0xfffffff, 0xfffffff} // p224IsZero returns 1 if a == 0 mod p and 0 otherwise. // // a[i] < 2**29 func p224IsZero(a *p224FieldElement) uint32 { // Since a p224FieldElement contains 224 bits there are two possible // representations of 0: 0 and p. var minimal p224FieldElement p224Contract(&minimal, a) var isZero, isP uint32 for i, v := range minimal { isZero |= v isP |= v - p224P[i] } // If either isZero or isP is 0, then we should return 1. isZero |= isZero >> 16 isZero |= isZero >> 8 isZero |= isZero >> 4 isZero |= isZero >> 2 isZero |= isZero >> 1 isP |= isP >> 16 isP |= isP >> 8 isP |= isP >> 4 isP |= isP >> 2 isP |= isP >> 1 // For isZero and isP, the LSB is 0 iff all the bits are zero. result := isZero & isP result = (^result) & 1 return result } // p224Add computes *out = a+b // // a[i] + b[i] < 2**32 func p224Add(out, a, b *p224FieldElement) { for i := 0; i < 8; i++ { out[i] = a[i] + b[i] } } const two31p3 = 1<<31 + 1<<3 const two31m3 = 1<<31 - 1<<3 const two31m15m3 = 1<<31 - 1<<15 - 1<<3 // p224ZeroModP31 is 0 mod p where bit 31 is set in all limbs so that we can // subtract smaller amounts without underflow. See the section "Subtraction" in // [1] for reasoning. var p224ZeroModP31 = []uint32{two31p3, two31m3, two31m3, two31m15m3, two31m3, two31m3, two31m3, two31m3} // p224Sub computes *out = a-b // // a[i], b[i] < 2**30 // out[i] < 2**32 func p224Sub(out, a, b *p224FieldElement) { for i := 0; i < 8; i++ { out[i] = a[i] + p224ZeroModP31[i] - b[i] } } // LargeFieldElement also represents an element of the field. The limbs are // still spaced 28-bits apart and in little-endian order. So the limbs are at // 0, 28, 56, ..., 392 bits, each 64-bits wide. type p224LargeFieldElement [15]uint64 const two63p35 = 1<<63 + 1<<35 const two63m35 = 1<<63 - 1<<35 const two63m35m19 = 1<<63 - 1<<35 - 1<<19 // p224ZeroModP63 is 0 mod p where bit 63 is set in all limbs. See the section // "Subtraction" in [1] for why. var p224ZeroModP63 = [8]uint64{two63p35, two63m35, two63m35, two63m35, two63m35m19, two63m35, two63m35, two63m35} const bottom12Bits = 0xfff const bottom28Bits = 0xfffffff // p224Mul computes *out = a*b // // a[i] < 2**29, b[i] < 2**30 (or vice versa) // out[i] < 2**29 func p224Mul(out, a, b *p224FieldElement, tmp *p224LargeFieldElement) { for i := 0; i < 15; i++ { tmp[i] = 0 } for i := 0; i < 8; i++ { for j := 0; j < 8; j++ { tmp[i+j] += uint64(a[i]) * uint64(b[j]) } } p224ReduceLarge(out, tmp) } // Square computes *out = a*a // // a[i] < 2**29 // out[i] < 2**29 func p224Square(out, a *p224FieldElement, tmp *p224LargeFieldElement) { for i := 0; i < 15; i++ { tmp[i] = 0 } for i := 0; i < 8; i++ { for j := 0; j <= i; j++ { r := uint64(a[i]) * uint64(a[j]) if i == j { tmp[i+j] += r } else { tmp[i+j] += r << 1 } } } p224ReduceLarge(out, tmp) } // ReduceLarge converts a p224LargeFieldElement to a p224FieldElement. // // in[i] < 2**62 func p224ReduceLarge(out *p224FieldElement, in *p224LargeFieldElement) { for i := 0; i < 8; i++ { in[i] += p224ZeroModP63[i] } // Eliminate the coefficients at 2**224 and greater. for i := 14; i >= 8; i-- { in[i-8] -= in[i] in[i-5] += (in[i] & 0xffff) << 12 in[i-4] += in[i] >> 16 } in[8] = 0 // in[0..8] < 2**64 // As the values become small enough, we start to store them in |out| // and use 32-bit operations. for i := 1; i < 8; i++ { in[i+1] += in[i] >> 28 out[i] = uint32(in[i] & bottom28Bits) } in[0] -= in[8] out[3] += uint32(in[8]&0xffff) << 12 out[4] += uint32(in[8] >> 16) // in[0] < 2**64 // out[3] < 2**29 // out[4] < 2**29 // out[1,2,5..7] < 2**28 out[0] = uint32(in[0] & bottom28Bits) out[1] += uint32((in[0] >> 28) & bottom28Bits) out[2] += uint32(in[0] >> 56) // out[0] < 2**28 // out[1..4] < 2**29 // out[5..7] < 2**28 } // Reduce reduces the coefficients of a to smaller bounds. // // On entry: a[i] < 2**31 + 2**30 // On exit: a[i] < 2**29 func p224Reduce(a *p224FieldElement) { for i := 0; i < 7; i++ { a[i+1] += a[i] >> 28 a[i] &= bottom28Bits } top := a[7] >> 28 a[7] &= bottom28Bits // top < 2**4 mask := top mask |= mask >> 2 mask |= mask >> 1 mask <<= 31 mask = uint32(int32(mask) >> 31) // Mask is all ones if top != 0, all zero otherwise a[0] -= top a[3] += top << 12 // We may have just made a[0] negative but, if we did, then we must // have added something to a[3], this it's > 2**12. Therefore we can // carry down to a[0]. a[3] -= 1 & mask a[2] += mask & (1<<28 - 1) a[1] += mask & (1<<28 - 1) a[0] += mask & (1 << 28) } // p224Invert calculates *out = in**-1 by computing in**(2**224 - 2**96 - 1), // i.e. Fermat's little theorem. func p224Invert(out, in *p224FieldElement) { var f1, f2, f3, f4 p224FieldElement var c p224LargeFieldElement p224Square(&f1, in, &c) // 2 p224Mul(&f1, &f1, in, &c) // 2**2 - 1 p224Square(&f1, &f1, &c) // 2**3 - 2 p224Mul(&f1, &f1, in, &c) // 2**3 - 1 p224Square(&f2, &f1, &c) // 2**4 - 2 p224Square(&f2, &f2, &c) // 2**5 - 4 p224Square(&f2, &f2, &c) // 2**6 - 8 p224Mul(&f1, &f1, &f2, &c) // 2**6 - 1 p224Square(&f2, &f1, &c) // 2**7 - 2 for i := 0; i < 5; i++ { // 2**12 - 2**6 p224Square(&f2, &f2, &c) } p224Mul(&f2, &f2, &f1, &c) // 2**12 - 1 p224Square(&f3, &f2, &c) // 2**13 - 2 for i := 0; i < 11; i++ { // 2**24 - 2**12 p224Square(&f3, &f3, &c) } p224Mul(&f2, &f3, &f2, &c) // 2**24 - 1 p224Square(&f3, &f2, &c) // 2**25 - 2 for i := 0; i < 23; i++ { // 2**48 - 2**24 p224Square(&f3, &f3, &c) } p224Mul(&f3, &f3, &f2, &c) // 2**48 - 1 p224Square(&f4, &f3, &c) // 2**49 - 2 for i := 0; i < 47; i++ { // 2**96 - 2**48 p224Square(&f4, &f4, &c) } p224Mul(&f3, &f3, &f4, &c) // 2**96 - 1 p224Square(&f4, &f3, &c) // 2**97 - 2 for i := 0; i < 23; i++ { // 2**120 - 2**24 p224Square(&f4, &f4, &c) } p224Mul(&f2, &f4, &f2, &c) // 2**120 - 1 for i := 0; i < 6; i++ { // 2**126 - 2**6 p224Square(&f2, &f2, &c) } p224Mul(&f1, &f1, &f2, &c) // 2**126 - 1 p224Square(&f1, &f1, &c) // 2**127 - 2 p224Mul(&f1, &f1, in, &c) // 2**127 - 1 for i := 0; i < 97; i++ { // 2**224 - 2**97 p224Square(&f1, &f1, &c) } p224Mul(out, &f1, &f3, &c) // 2**224 - 2**96 - 1 } // p224Contract converts a FieldElement to its unique, minimal form. // // On entry, in[i] < 2**29 // On exit, in[i] < 2**28 func p224Contract(out, in *p224FieldElement) { copy(out[:], in[:]) for i := 0; i < 7; i++ { out[i+1] += out[i] >> 28 out[i] &= bottom28Bits } top := out[7] >> 28 out[7] &= bottom28Bits out[0] -= top out[3] += top << 12 // We may just have made out[i] negative. So we carry down. If we made // out[0] negative then we know that out[3] is sufficiently positive // because we just added to it. for i := 0; i < 3; i++ { mask := uint32(int32(out[i]) >> 31) out[i] += (1 << 28) & mask out[i+1] -= 1 & mask } // We might have pushed out[3] over 2**28 so we perform another, partial, // carry chain. for i := 3; i < 7; i++ { out[i+1] += out[i] >> 28 out[i] &= bottom28Bits } top = out[7] >> 28 out[7] &= bottom28Bits // Eliminate top while maintaining the same value mod p. out[0] -= top out[3] += top << 12 // There are two cases to consider for out[3]: // 1) The first time that we eliminated top, we didn't push out[3] over // 2**28. In this case, the partial carry chain didn't change any values // and top is zero. // 2) We did push out[3] over 2**28 the first time that we eliminated top. // The first value of top was in [0..16), therefore, prior to eliminating // the first top, 0xfff1000 <= out[3] <= 0xfffffff. Therefore, after // overflowing and being reduced by the second carry chain, out[3] <= // 0xf000. Thus it cannot have overflowed when we eliminated top for the // second time. // Again, we may just have made out[0] negative, so do the same carry down. // As before, if we made out[0] negative then we know that out[3] is // sufficiently positive. for i := 0; i < 3; i++ { mask := uint32(int32(out[i]) >> 31) out[i] += (1 << 28) & mask out[i+1] -= 1 & mask } // Now we see if the value is >= p and, if so, subtract p. // First we build a mask from the top four limbs, which must all be // equal to bottom28Bits if the whole value is >= p. If top4AllOnes // ends up with any zero bits in the bottom 28 bits, then this wasn't // true. top4AllOnes := uint32(0xffffffff) for i := 4; i < 8; i++ { top4AllOnes &= out[i] } top4AllOnes |= 0xf0000000 // Now we replicate any zero bits to all the bits in top4AllOnes. top4AllOnes &= top4AllOnes >> 16 top4AllOnes &= top4AllOnes >> 8 top4AllOnes &= top4AllOnes >> 4 top4AllOnes &= top4AllOnes >> 2 top4AllOnes &= top4AllOnes >> 1 top4AllOnes = uint32(int32(top4AllOnes<<31) >> 31) // Now we test whether the bottom three limbs are non-zero. bottom3NonZero := out[0] | out[1] | out[2] bottom3NonZero |= bottom3NonZero >> 16 bottom3NonZero |= bottom3NonZero >> 8 bottom3NonZero |= bottom3NonZero >> 4 bottom3NonZero |= bottom3NonZero >> 2 bottom3NonZero |= bottom3NonZero >> 1 bottom3NonZero = uint32(int32(bottom3NonZero<<31) >> 31) // Everything depends on the value of out[3]. // If it's > 0xffff000 and top4AllOnes != 0 then the whole value is >= p // If it's = 0xffff000 and top4AllOnes != 0 and bottom3NonZero != 0, // then the whole value is >= p // If it's < 0xffff000, then the whole value is < p n := out[3] - 0xffff000 out3Equal := n out3Equal |= out3Equal >> 16 out3Equal |= out3Equal >> 8 out3Equal |= out3Equal >> 4 out3Equal |= out3Equal >> 2 out3Equal |= out3Equal >> 1 out3Equal = ^uint32(int32(out3Equal<<31) >> 31) // If out[3] > 0xffff000 then n's MSB will be zero. out3GT := ^uint32(int32(n) >> 31) mask := top4AllOnes & ((out3Equal & bottom3NonZero) | out3GT) out[0] -= 1 & mask out[3] -= 0xffff000 & mask out[4] -= 0xfffffff & mask out[5] -= 0xfffffff & mask out[6] -= 0xfffffff & mask out[7] -= 0xfffffff & mask } // Group element functions. // // These functions deal with group elements. The group is an elliptic curve // group with a = -3 defined in FIPS 186-3, section D.2.2. // p224AddJacobian computes *out = a+b where a != b. func p224AddJacobian(x3, y3, z3, x1, y1, z1, x2, y2, z2 *p224FieldElement) { // See http://hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#addition-p224Add-2007-bl var z1z1, z2z2, u1, u2, s1, s2, h, i, j, r, v p224FieldElement var c p224LargeFieldElement z1IsZero := p224IsZero(z1) z2IsZero := p224IsZero(z2) // Z1Z1 = Z1² p224Square(&z1z1, z1, &c) // Z2Z2 = Z2² p224Square(&z2z2, z2, &c) // U1 = X1*Z2Z2 p224Mul(&u1, x1, &z2z2, &c) // U2 = X2*Z1Z1 p224Mul(&u2, x2, &z1z1, &c) // S1 = Y1*Z2*Z2Z2 p224Mul(&s1, z2, &z2z2, &c) p224Mul(&s1, y1, &s1, &c) // S2 = Y2*Z1*Z1Z1 p224Mul(&s2, z1, &z1z1, &c) p224Mul(&s2, y2, &s2, &c) // H = U2-U1 p224Sub(&h, &u2, &u1) p224Reduce(&h) xEqual := p224IsZero(&h) // I = (2*H)² for j := 0; j < 8; j++ { i[j] = h[j] << 1 } p224Reduce(&i) p224Square(&i, &i, &c) // J = H*I p224Mul(&j, &h, &i, &c) // r = 2*(S2-S1) p224Sub(&r, &s2, &s1) p224Reduce(&r) yEqual := p224IsZero(&r) if xEqual == 1 && yEqual == 1 && z1IsZero == 0 && z2IsZero == 0 { p224DoubleJacobian(x3, y3, z3, x1, y1, z1) return } for i := 0; i < 8; i++ { r[i] <<= 1 } p224Reduce(&r) // V = U1*I p224Mul(&v, &u1, &i, &c) // Z3 = ((Z1+Z2)²-Z1Z1-Z2Z2)*H p224Add(&z1z1, &z1z1, &z2z2) p224Add(&z2z2, z1, z2) p224Reduce(&z2z2) p224Square(&z2z2, &z2z2, &c) p224Sub(z3, &z2z2, &z1z1) p224Reduce(z3) p224Mul(z3, z3, &h, &c) // X3 = r²-J-2*V for i := 0; i < 8; i++ { z1z1[i] = v[i] << 1 } p224Add(&z1z1, &j, &z1z1) p224Reduce(&z1z1) p224Square(x3, &r, &c) p224Sub(x3, x3, &z1z1) p224Reduce(x3) // Y3 = r*(V-X3)-2*S1*J for i := 0; i < 8; i++ { s1[i] <<= 1 } p224Mul(&s1, &s1, &j, &c) p224Sub(&z1z1, &v, x3) p224Reduce(&z1z1) p224Mul(&z1z1, &z1z1, &r, &c) p224Sub(y3, &z1z1, &s1) p224Reduce(y3) p224CopyConditional(x3, x2, z1IsZero) p224CopyConditional(x3, x1, z2IsZero) p224CopyConditional(y3, y2, z1IsZero) p224CopyConditional(y3, y1, z2IsZero) p224CopyConditional(z3, z2, z1IsZero) p224CopyConditional(z3, z1, z2IsZero) } // p224DoubleJacobian computes *out = a+a. func p224DoubleJacobian(x3, y3, z3, x1, y1, z1 *p224FieldElement) { var delta, gamma, beta, alpha, t p224FieldElement var c p224LargeFieldElement p224Square(&delta, z1, &c) p224Square(&gamma, y1, &c) p224Mul(&beta, x1, &gamma, &c) // alpha = 3*(X1-delta)*(X1+delta) p224Add(&t, x1, &delta) for i := 0; i < 8; i++ { t[i] += t[i] << 1 } p224Reduce(&t) p224Sub(&alpha, x1, &delta) p224Reduce(&alpha) p224Mul(&alpha, &alpha, &t, &c) // Z3 = (Y1+Z1)²-gamma-delta p224Add(z3, y1, z1) p224Reduce(z3) p224Square(z3, z3, &c) p224Sub(z3, z3, &gamma) p224Reduce(z3) p224Sub(z3, z3, &delta) p224Reduce(z3) // X3 = alpha²-8*beta for i := 0; i < 8; i++ { delta[i] = beta[i] << 3 } p224Reduce(&delta) p224Square(x3, &alpha, &c) p224Sub(x3, x3, &delta) p224Reduce(x3) // Y3 = alpha*(4*beta-X3)-8*gamma² for i := 0; i < 8; i++ { beta[i] <<= 2 } p224Sub(&beta, &beta, x3) p224Reduce(&beta) p224Square(&gamma, &gamma, &c) for i := 0; i < 8; i++ { gamma[i] <<= 3 } p224Reduce(&gamma) p224Mul(y3, &alpha, &beta, &c) p224Sub(y3, y3, &gamma) p224Reduce(y3) } // p224CopyConditional sets *out = *in iff the least-significant-bit of control // is true, and it runs in constant time. func p224CopyConditional(out, in *p224FieldElement, control uint32) { control <<= 31 control = uint32(int32(control) >> 31) for i := 0; i < 8; i++ { out[i] ^= (out[i] ^ in[i]) & control } } func p224ScalarMult(outX, outY, outZ, inX, inY, inZ *p224FieldElement, scalar []byte) { var xx, yy, zz p224FieldElement for i := 0; i < 8; i++ { outX[i] = 0 outY[i] = 0 outZ[i] = 0 } for _, byte := range scalar { for bitNum := uint(0); bitNum < 8; bitNum++ { p224DoubleJacobian(outX, outY, outZ, outX, outY, outZ) bit := uint32((byte >> (7 - bitNum)) & 1) p224AddJacobian(&xx, &yy, &zz, inX, inY, inZ, outX, outY, outZ) p224CopyConditional(outX, &xx, bit) p224CopyConditional(outY, &yy, bit) p224CopyConditional(outZ, &zz, bit) } } } // p224ToAffine converts from Jacobian to affine form. func p224ToAffine(x, y, z *p224FieldElement) (*big.Int, *big.Int) { var zinv, zinvsq, outx, outy p224FieldElement var tmp p224LargeFieldElement if isPointAtInfinity := p224IsZero(z); isPointAtInfinity == 1 { return new(big.Int), new(big.Int) } p224Invert(&zinv, z) p224Square(&zinvsq, &zinv, &tmp) p224Mul(x, x, &zinvsq, &tmp) p224Mul(&zinvsq, &zinvsq, &zinv, &tmp) p224Mul(y, y, &zinvsq, &tmp) p224Contract(&outx, x) p224Contract(&outy, y) return p224ToBig(&outx), p224ToBig(&outy) } // get28BitsFromEnd returns the least-significant 28 bits from buf>>shift, // where buf is interpreted as a big-endian number. func get28BitsFromEnd(buf []byte, shift uint) (uint32, []byte) { var ret uint32 for i := uint(0); i < 4; i++ { var b byte if l := len(buf); l > 0 { b = buf[l-1] // We don't remove the byte if we're about to return and we're not // reading all of it. if i != 3 || shift == 4 { buf = buf[:l-1] } } ret |= uint32(b) << (8 * i) >> shift } ret &= bottom28Bits return ret, buf } // p224FromBig sets *out = *in. func p224FromBig(out *p224FieldElement, in *big.Int) { bytes := in.Bytes() out[0], bytes = get28BitsFromEnd(bytes, 0) out[1], bytes = get28BitsFromEnd(bytes, 4) out[2], bytes = get28BitsFromEnd(bytes, 0) out[3], bytes = get28BitsFromEnd(bytes, 4) out[4], bytes = get28BitsFromEnd(bytes, 0) out[5], bytes = get28BitsFromEnd(bytes, 4) out[6], bytes = get28BitsFromEnd(bytes, 0) out[7], bytes = get28BitsFromEnd(bytes, 4) } // p224ToBig returns in as a big.Int. func p224ToBig(in *p224FieldElement) *big.Int { var buf [28]byte buf[27] = byte(in[0]) buf[26] = byte(in[0] >> 8) buf[25] = byte(in[0] >> 16) buf[24] = byte(((in[0] >> 24) & 0x0f) | (in[1]<<4)&0xf0) buf[23] = byte(in[1] >> 4) buf[22] = byte(in[1] >> 12) buf[21] = byte(in[1] >> 20) buf[20] = byte(in[2]) buf[19] = byte(in[2] >> 8) buf[18] = byte(in[2] >> 16) buf[17] = byte(((in[2] >> 24) & 0x0f) | (in[3]<<4)&0xf0) buf[16] = byte(in[3] >> 4) buf[15] = byte(in[3] >> 12) buf[14] = byte(in[3] >> 20) buf[13] = byte(in[4]) buf[12] = byte(in[4] >> 8) buf[11] = byte(in[4] >> 16) buf[10] = byte(((in[4] >> 24) & 0x0f) | (in[5]<<4)&0xf0) buf[9] = byte(in[5] >> 4) buf[8] = byte(in[5] >> 12) buf[7] = byte(in[5] >> 20) buf[6] = byte(in[6]) buf[5] = byte(in[6] >> 8) buf[4] = byte(in[6] >> 16) buf[3] = byte(((in[6] >> 24) & 0x0f) | (in[7]<<4)&0xf0) buf[2] = byte(in[7] >> 4) buf[1] = byte(in[7] >> 12) buf[0] = byte(in[7] >> 20) return new(big.Int).SetBytes(buf[:]) } go/src/pkg/crypto/elliptic/p224_test.go0100644000000000000000000000174212412656737020255 0ustar00rootroot00000000000000// 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 elliptic import ( "math/big" "testing" ) var toFromBigTests = []string{ "0", "1", "23", "b70e0cb46bb4bf7f321390b94a03c1d356c01122343280d6105c1d21", "706a46d476dcb76798e6046d89474788d164c18032d268fd10704fa6", } func p224AlternativeToBig(in *p224FieldElement) *big.Int { ret := new(big.Int) tmp := new(big.Int) for i := uint(0); i < 8; i++ { tmp.SetInt64(int64(in[i])) tmp.Lsh(tmp, 28*i) ret.Add(ret, tmp) } ret.Mod(ret, p224.P) return ret } func TestToFromBig(t *testing.T) { for i, test := range toFromBigTests { n, _ := new(big.Int).SetString(test, 16) var x p224FieldElement p224FromBig(&x, n) m := p224ToBig(&x) if n.Cmp(m) != 0 { t.Errorf("#%d: %x != %x", i, n, m) } q := p224AlternativeToBig(&x) if n.Cmp(q) != 0 { t.Errorf("#%d: %x != %x (alternative)", i, n, m) } } } go/src/pkg/crypto/elliptic/p256.go0100644000000000000000000011737312412656737017233 0ustar00rootroot00000000000000// Copyright 2013 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 elliptic // This file contains a constant-time, 32-bit implementation of P256. import ( "math/big" ) type p256Curve struct { *CurveParams } var ( p256 p256Curve // RInverse contains 1/R mod p - the inverse of the Montgomery constant // (2**257). p256RInverse *big.Int ) func initP256() { // See FIPS 186-3, section D.2.3 p256.CurveParams = new(CurveParams) p256.P, _ = new(big.Int).SetString("115792089210356248762697446949407573530086143415290314195533631308867097853951", 10) p256.N, _ = new(big.Int).SetString("115792089210356248762697446949407573529996955224135760342422259061068512044369", 10) p256.B, _ = new(big.Int).SetString("5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b", 16) p256.Gx, _ = new(big.Int).SetString("6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", 16) p256.Gy, _ = new(big.Int).SetString("4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5", 16) p256.BitSize = 256 p256RInverse, _ = new(big.Int).SetString("7fffffff00000001fffffffe8000000100000000ffffffff0000000180000000", 16) } func (curve p256Curve) Params() *CurveParams { return curve.CurveParams } // p256GetScalar endian-swaps the big-endian scalar value from in and writes it // to out. If the scalar is equal or greater than the order of the group, it's // reduced modulo that order. func p256GetScalar(out *[32]byte, in []byte) { n := new(big.Int).SetBytes(in) var scalarBytes []byte if n.Cmp(p256.N) >= 0 { n.Mod(n, p256.N) scalarBytes = n.Bytes() } else { scalarBytes = in } for i, v := range scalarBytes { out[len(scalarBytes)-(1+i)] = v } } func (p256Curve) ScalarBaseMult(scalar []byte) (x, y *big.Int) { var scalarReversed [32]byte p256GetScalar(&scalarReversed, scalar) var x1, y1, z1 [p256Limbs]uint32 p256ScalarBaseMult(&x1, &y1, &z1, &scalarReversed) return p256ToAffine(&x1, &y1, &z1) } func (p256Curve) ScalarMult(bigX, bigY *big.Int, scalar []byte) (x, y *big.Int) { var scalarReversed [32]byte p256GetScalar(&scalarReversed, scalar) var px, py, x1, y1, z1 [p256Limbs]uint32 p256FromBig(&px, bigX) p256FromBig(&py, bigY) p256ScalarMult(&x1, &y1, &z1, &px, &py, &scalarReversed) return p256ToAffine(&x1, &y1, &z1) } // Field elements are represented as nine, unsigned 32-bit words. // // The value of an field element is: // x[0] + (x[1] * 2**29) + (x[2] * 2**57) + ... + (x[8] * 2**228) // // That is, each limb is alternately 29 or 28-bits wide in little-endian // order. // // This means that a field element hits 2**257, rather than 2**256 as we would // like. A 28, 29, ... pattern would cause us to hit 2**256, but that causes // problems when multiplying as terms end up one bit short of a limb which // would require much bit-shifting to correct. // // Finally, the values stored in a field element are in Montgomery form. So the // value |y| is stored as (y*R) mod p, where p is the P-256 prime and R is // 2**257. const ( p256Limbs = 9 bottom29Bits = 0x1fffffff ) var ( // p256One is the number 1 as a field element. p256One = [p256Limbs]uint32{2, 0, 0, 0xffff800, 0x1fffffff, 0xfffffff, 0x1fbfffff, 0x1ffffff, 0} p256Zero = [p256Limbs]uint32{0, 0, 0, 0, 0, 0, 0, 0, 0} // p256P is the prime modulus as a field element. p256P = [p256Limbs]uint32{0x1fffffff, 0xfffffff, 0x1fffffff, 0x3ff, 0, 0, 0x200000, 0xf000000, 0xfffffff} // p2562P is the twice prime modulus as a field element. p2562P = [p256Limbs]uint32{0x1ffffffe, 0xfffffff, 0x1fffffff, 0x7ff, 0, 0, 0x400000, 0xe000000, 0x1fffffff} ) // p256Precomputed contains precomputed values to aid the calculation of scalar // multiples of the base point, G. It's actually two, equal length, tables // concatenated. // // The first table contains (x,y) field element pairs for 16 multiples of the // base point, G. // // Index | Index (binary) | Value // 0 | 0000 | 0G (all zeros, omitted) // 1 | 0001 | G // 2 | 0010 | 2**64G // 3 | 0011 | 2**64G + G // 4 | 0100 | 2**128G // 5 | 0101 | 2**128G + G // 6 | 0110 | 2**128G + 2**64G // 7 | 0111 | 2**128G + 2**64G + G // 8 | 1000 | 2**192G // 9 | 1001 | 2**192G + G // 10 | 1010 | 2**192G + 2**64G // 11 | 1011 | 2**192G + 2**64G + G // 12 | 1100 | 2**192G + 2**128G // 13 | 1101 | 2**192G + 2**128G + G // 14 | 1110 | 2**192G + 2**128G + 2**64G // 15 | 1111 | 2**192G + 2**128G + 2**64G + G // // The second table follows the same style, but the terms are 2**32G, // 2**96G, 2**160G, 2**224G. // // This is ~2KB of data. var p256Precomputed = [p256Limbs * 2 * 15 * 2]uint32{ 0x11522878, 0xe730d41, 0xdb60179, 0x4afe2ff, 0x12883add, 0xcaddd88, 0x119e7edc, 0xd4a6eab, 0x3120bee, 0x1d2aac15, 0xf25357c, 0x19e45cdd, 0x5c721d0, 0x1992c5a5, 0xa237487, 0x154ba21, 0x14b10bb, 0xae3fe3, 0xd41a576, 0x922fc51, 0x234994f, 0x60b60d3, 0x164586ae, 0xce95f18, 0x1fe49073, 0x3fa36cc, 0x5ebcd2c, 0xb402f2f, 0x15c70bf, 0x1561925c, 0x5a26704, 0xda91e90, 0xcdc1c7f, 0x1ea12446, 0xe1ade1e, 0xec91f22, 0x26f7778, 0x566847e, 0xa0bec9e, 0x234f453, 0x1a31f21a, 0xd85e75c, 0x56c7109, 0xa267a00, 0xb57c050, 0x98fb57, 0xaa837cc, 0x60c0792, 0xcfa5e19, 0x61bab9e, 0x589e39b, 0xa324c5, 0x7d6dee7, 0x2976e4b, 0x1fc4124a, 0xa8c244b, 0x1ce86762, 0xcd61c7e, 0x1831c8e0, 0x75774e1, 0x1d96a5a9, 0x843a649, 0xc3ab0fa, 0x6e2e7d5, 0x7673a2a, 0x178b65e8, 0x4003e9b, 0x1a1f11c2, 0x7816ea, 0xf643e11, 0x58c43df, 0xf423fc2, 0x19633ffa, 0x891f2b2, 0x123c231c, 0x46add8c, 0x54700dd, 0x59e2b17, 0x172db40f, 0x83e277d, 0xb0dd609, 0xfd1da12, 0x35c6e52, 0x19ede20c, 0xd19e0c0, 0x97d0f40, 0xb015b19, 0x449e3f5, 0xe10c9e, 0x33ab581, 0x56a67ab, 0x577734d, 0x1dddc062, 0xc57b10d, 0x149b39d, 0x26a9e7b, 0xc35df9f, 0x48764cd, 0x76dbcca, 0xca4b366, 0xe9303ab, 0x1a7480e7, 0x57e9e81, 0x1e13eb50, 0xf466cf3, 0x6f16b20, 0x4ba3173, 0xc168c33, 0x15cb5439, 0x6a38e11, 0x73658bd, 0xb29564f, 0x3f6dc5b, 0x53b97e, 0x1322c4c0, 0x65dd7ff, 0x3a1e4f6, 0x14e614aa, 0x9246317, 0x1bc83aca, 0xad97eed, 0xd38ce4a, 0xf82b006, 0x341f077, 0xa6add89, 0x4894acd, 0x9f162d5, 0xf8410ef, 0x1b266a56, 0xd7f223, 0x3e0cb92, 0xe39b672, 0x6a2901a, 0x69a8556, 0x7e7c0, 0x9b7d8d3, 0x309a80, 0x1ad05f7f, 0xc2fb5dd, 0xcbfd41d, 0x9ceb638, 0x1051825c, 0xda0cf5b, 0x812e881, 0x6f35669, 0x6a56f2c, 0x1df8d184, 0x345820, 0x1477d477, 0x1645db1, 0xbe80c51, 0xc22be3e, 0xe35e65a, 0x1aeb7aa0, 0xc375315, 0xf67bc99, 0x7fdd7b9, 0x191fc1be, 0x61235d, 0x2c184e9, 0x1c5a839, 0x47a1e26, 0xb7cb456, 0x93e225d, 0x14f3c6ed, 0xccc1ac9, 0x17fe37f3, 0x4988989, 0x1a90c502, 0x2f32042, 0xa17769b, 0xafd8c7c, 0x8191c6e, 0x1dcdb237, 0x16200c0, 0x107b32a1, 0x66c08db, 0x10d06a02, 0x3fc93, 0x5620023, 0x16722b27, 0x68b5c59, 0x270fcfc, 0xfad0ecc, 0xe5de1c2, 0xeab466b, 0x2fc513c, 0x407f75c, 0xbaab133, 0x9705fe9, 0xb88b8e7, 0x734c993, 0x1e1ff8f, 0x19156970, 0xabd0f00, 0x10469ea7, 0x3293ac0, 0xcdc98aa, 0x1d843fd, 0xe14bfe8, 0x15be825f, 0x8b5212, 0xeb3fb67, 0x81cbd29, 0xbc62f16, 0x2b6fcc7, 0xf5a4e29, 0x13560b66, 0xc0b6ac2, 0x51ae690, 0xd41e271, 0xf3e9bd4, 0x1d70aab, 0x1029f72, 0x73e1c35, 0xee70fbc, 0xad81baf, 0x9ecc49a, 0x86c741e, 0xfe6be30, 0x176752e7, 0x23d416, 0x1f83de85, 0x27de188, 0x66f70b8, 0x181cd51f, 0x96b6e4c, 0x188f2335, 0xa5df759, 0x17a77eb6, 0xfeb0e73, 0x154ae914, 0x2f3ec51, 0x3826b59, 0xb91f17d, 0x1c72949, 0x1362bf0a, 0xe23fddf, 0xa5614b0, 0xf7d8f, 0x79061, 0x823d9d2, 0x8213f39, 0x1128ae0b, 0xd095d05, 0xb85c0c2, 0x1ecb2ef, 0x24ddc84, 0xe35e901, 0x18411a4a, 0xf5ddc3d, 0x3786689, 0x52260e8, 0x5ae3564, 0x542b10d, 0x8d93a45, 0x19952aa4, 0x996cc41, 0x1051a729, 0x4be3499, 0x52b23aa, 0x109f307e, 0x6f5b6bb, 0x1f84e1e7, 0x77a0cfa, 0x10c4df3f, 0x25a02ea, 0xb048035, 0xe31de66, 0xc6ecaa3, 0x28ea335, 0x2886024, 0x1372f020, 0xf55d35, 0x15e4684c, 0xf2a9e17, 0x1a4a7529, 0xcb7beb1, 0xb2a78a1, 0x1ab21f1f, 0x6361ccf, 0x6c9179d, 0xb135627, 0x1267b974, 0x4408bad, 0x1cbff658, 0xe3d6511, 0xc7d76f, 0x1cc7a69, 0xe7ee31b, 0x54fab4f, 0x2b914f, 0x1ad27a30, 0xcd3579e, 0xc50124c, 0x50daa90, 0xb13f72, 0xb06aa75, 0x70f5cc6, 0x1649e5aa, 0x84a5312, 0x329043c, 0x41c4011, 0x13d32411, 0xb04a838, 0xd760d2d, 0x1713b532, 0xbaa0c03, 0x84022ab, 0x6bcf5c1, 0x2f45379, 0x18ae070, 0x18c9e11e, 0x20bca9a, 0x66f496b, 0x3eef294, 0x67500d2, 0xd7f613c, 0x2dbbeb, 0xb741038, 0xe04133f, 0x1582968d, 0xbe985f7, 0x1acbc1a, 0x1a6a939f, 0x33e50f6, 0xd665ed4, 0xb4b7bd6, 0x1e5a3799, 0x6b33847, 0x17fa56ff, 0x65ef930, 0x21dc4a, 0x2b37659, 0x450fe17, 0xb357b65, 0xdf5efac, 0x15397bef, 0x9d35a7f, 0x112ac15f, 0x624e62e, 0xa90ae2f, 0x107eecd2, 0x1f69bbe, 0x77d6bce, 0x5741394, 0x13c684fc, 0x950c910, 0x725522b, 0xdc78583, 0x40eeabb, 0x1fde328a, 0xbd61d96, 0xd28c387, 0x9e77d89, 0x12550c40, 0x759cb7d, 0x367ef34, 0xae2a960, 0x91b8bdc, 0x93462a9, 0xf469ef, 0xb2e9aef, 0xd2ca771, 0x54e1f42, 0x7aaa49, 0x6316abb, 0x2413c8e, 0x5425bf9, 0x1bed3e3a, 0xf272274, 0x1f5e7326, 0x6416517, 0xea27072, 0x9cedea7, 0x6e7633, 0x7c91952, 0xd806dce, 0x8e2a7e1, 0xe421e1a, 0x418c9e1, 0x1dbc890, 0x1b395c36, 0xa1dc175, 0x1dc4ef73, 0x8956f34, 0xe4b5cf2, 0x1b0d3a18, 0x3194a36, 0x6c2641f, 0xe44124c, 0xa2f4eaa, 0xa8c25ba, 0xf927ed7, 0x627b614, 0x7371cca, 0xba16694, 0x417bc03, 0x7c0a7e3, 0x9c35c19, 0x1168a205, 0x8b6b00d, 0x10e3edc9, 0x9c19bf2, 0x5882229, 0x1b2b4162, 0xa5cef1a, 0x1543622b, 0x9bd433e, 0x364e04d, 0x7480792, 0x5c9b5b3, 0xe85ff25, 0x408ef57, 0x1814cfa4, 0x121b41b, 0xd248a0f, 0x3b05222, 0x39bb16a, 0xc75966d, 0xa038113, 0xa4a1769, 0x11fbc6c, 0x917e50e, 0xeec3da8, 0x169d6eac, 0x10c1699, 0xa416153, 0xf724912, 0x15cd60b7, 0x4acbad9, 0x5efc5fa, 0xf150ed7, 0x122b51, 0x1104b40a, 0xcb7f442, 0xfbb28ff, 0x6ac53ca, 0x196142cc, 0x7bf0fa9, 0x957651, 0x4e0f215, 0xed439f8, 0x3f46bd5, 0x5ace82f, 0x110916b6, 0x6db078, 0xffd7d57, 0xf2ecaac, 0xca86dec, 0x15d6b2da, 0x965ecc9, 0x1c92b4c2, 0x1f3811, 0x1cb080f5, 0x2d8b804, 0x19d1c12d, 0xf20bd46, 0x1951fa7, 0xa3656c3, 0x523a425, 0xfcd0692, 0xd44ddc8, 0x131f0f5b, 0xaf80e4a, 0xcd9fc74, 0x99bb618, 0x2db944c, 0xa673090, 0x1c210e1, 0x178c8d23, 0x1474383, 0x10b8743d, 0x985a55b, 0x2e74779, 0x576138, 0x9587927, 0x133130fa, 0xbe05516, 0x9f4d619, 0xbb62570, 0x99ec591, 0xd9468fe, 0x1d07782d, 0xfc72e0b, 0x701b298, 0x1863863b, 0x85954b8, 0x121a0c36, 0x9e7fedf, 0xf64b429, 0x9b9d71e, 0x14e2f5d8, 0xf858d3a, 0x942eea8, 0xda5b765, 0x6edafff, 0xa9d18cc, 0xc65e4ba, 0x1c747e86, 0xe4ea915, 0x1981d7a1, 0x8395659, 0x52ed4e2, 0x87d43b7, 0x37ab11b, 0x19d292ce, 0xf8d4692, 0x18c3053f, 0x8863e13, 0x4c146c0, 0x6bdf55a, 0x4e4457d, 0x16152289, 0xac78ec2, 0x1a59c5a2, 0x2028b97, 0x71c2d01, 0x295851f, 0x404747b, 0x878558d, 0x7d29aa4, 0x13d8341f, 0x8daefd7, 0x139c972d, 0x6b7ea75, 0xd4a9dde, 0xff163d8, 0x81d55d7, 0xa5bef68, 0xb7b30d8, 0xbe73d6f, 0xaa88141, 0xd976c81, 0x7e7a9cc, 0x18beb771, 0xd773cbd, 0x13f51951, 0x9d0c177, 0x1c49a78, } // Field element operations: // nonZeroToAllOnes returns: // 0xffffffff for 0 < x <= 2**31 // 0 for x == 0 or x > 2**31. func nonZeroToAllOnes(x uint32) uint32 { return ((x - 1) >> 31) - 1 } // p256ReduceCarry adds a multiple of p in order to cancel |carry|, // which is a term at 2**257. // // On entry: carry < 2**3, inout[0,2,...] < 2**29, inout[1,3,...] < 2**28. // On exit: inout[0,2,..] < 2**30, inout[1,3,...] < 2**29. func p256ReduceCarry(inout *[p256Limbs]uint32, carry uint32) { carry_mask := nonZeroToAllOnes(carry) inout[0] += carry << 1 inout[3] += 0x10000000 & carry_mask // carry < 2**3 thus (carry << 11) < 2**14 and we added 2**28 in the // previous line therefore this doesn't underflow. inout[3] -= carry << 11 inout[4] += (0x20000000 - 1) & carry_mask inout[5] += (0x10000000 - 1) & carry_mask inout[6] += (0x20000000 - 1) & carry_mask inout[6] -= carry << 22 // This may underflow if carry is non-zero but, if so, we'll fix it in the // next line. inout[7] -= 1 & carry_mask inout[7] += carry << 25 } // p256Sum sets out = in+in2. // // On entry, in[i]+in2[i] must not overflow a 32-bit word. // On exit: out[0,2,...] < 2**30, out[1,3,...] < 2**29 func p256Sum(out, in, in2 *[p256Limbs]uint32) { carry := uint32(0) for i := 0; ; i++ { out[i] = in[i] + in2[i] out[i] += carry carry = out[i] >> 29 out[i] &= bottom29Bits i++ if i == p256Limbs { break } out[i] = in[i] + in2[i] out[i] += carry carry = out[i] >> 28 out[i] &= bottom28Bits } p256ReduceCarry(out, carry) } const ( two30m2 = 1<<30 - 1<<2 two30p13m2 = 1<<30 + 1<<13 - 1<<2 two31m2 = 1<<31 - 1<<2 two31p24m2 = 1<<31 + 1<<24 - 1<<2 two30m27m2 = 1<<30 - 1<<27 - 1<<2 ) // p256Zero31 is 0 mod p. var p256Zero31 = [p256Limbs]uint32{two31m3, two30m2, two31m2, two30p13m2, two31m2, two30m2, two31p24m2, two30m27m2, two31m2} // p256Diff sets out = in-in2. // // On entry: in[0,2,...] < 2**30, in[1,3,...] < 2**29 and // in2[0,2,...] < 2**30, in2[1,3,...] < 2**29. // On exit: out[0,2,...] < 2**30, out[1,3,...] < 2**29. func p256Diff(out, in, in2 *[p256Limbs]uint32) { var carry uint32 for i := 0; ; i++ { out[i] = in[i] - in2[i] out[i] += p256Zero31[i] out[i] += carry carry = out[i] >> 29 out[i] &= bottom29Bits i++ if i == p256Limbs { break } out[i] = in[i] - in2[i] out[i] += p256Zero31[i] out[i] += carry carry = out[i] >> 28 out[i] &= bottom28Bits } p256ReduceCarry(out, carry) } // p256ReduceDegree sets out = tmp/R mod p where tmp contains 64-bit words with // the same 29,28,... bit positions as an field element. // // The values in field elements are in Montgomery form: x*R mod p where R = // 2**257. Since we just multiplied two Montgomery values together, the result // is x*y*R*R mod p. We wish to divide by R in order for the result also to be // in Montgomery form. // // On entry: tmp[i] < 2**64 // On exit: out[0,2,...] < 2**30, out[1,3,...] < 2**29 func p256ReduceDegree(out *[p256Limbs]uint32, tmp [17]uint64) { // The following table may be helpful when reading this code: // // Limb number: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10... // Width (bits): 29| 28| 29| 28| 29| 28| 29| 28| 29| 28| 29 // Start bit: 0 | 29| 57| 86|114|143|171|200|228|257|285 // (odd phase): 0 | 28| 57| 85|114|142|171|199|228|256|285 var tmp2 [18]uint32 var carry, x, xMask uint32 // tmp contains 64-bit words with the same 29,28,29-bit positions as an // field element. So the top of an element of tmp might overlap with // another element two positions down. The following loop eliminates // this overlap. tmp2[0] = uint32(tmp[0]) & bottom29Bits tmp2[1] = uint32(tmp[0]) >> 29 tmp2[1] |= (uint32(tmp[0]>>32) << 3) & bottom28Bits tmp2[1] += uint32(tmp[1]) & bottom28Bits carry = tmp2[1] >> 28 tmp2[1] &= bottom28Bits for i := 2; i < 17; i++ { tmp2[i] = (uint32(tmp[i-2] >> 32)) >> 25 tmp2[i] += (uint32(tmp[i-1])) >> 28 tmp2[i] += (uint32(tmp[i-1]>>32) << 4) & bottom29Bits tmp2[i] += uint32(tmp[i]) & bottom29Bits tmp2[i] += carry carry = tmp2[i] >> 29 tmp2[i] &= bottom29Bits i++ if i == 17 { break } tmp2[i] = uint32(tmp[i-2]>>32) >> 25 tmp2[i] += uint32(tmp[i-1]) >> 29 tmp2[i] += ((uint32(tmp[i-1] >> 32)) << 3) & bottom28Bits tmp2[i] += uint32(tmp[i]) & bottom28Bits tmp2[i] += carry carry = tmp2[i] >> 28 tmp2[i] &= bottom28Bits } tmp2[17] = uint32(tmp[15]>>32) >> 25 tmp2[17] += uint32(tmp[16]) >> 29 tmp2[17] += uint32(tmp[16]>>32) << 3 tmp2[17] += carry // Montgomery elimination of terms: // // Since R is 2**257, we can divide by R with a bitwise shift if we can // ensure that the right-most 257 bits are all zero. We can make that true // by adding multiplies of p without affecting the value. // // So we eliminate limbs from right to left. Since the bottom 29 bits of p // are all ones, then by adding tmp2[0]*p to tmp2 we'll make tmp2[0] == 0. // We can do that for 8 further limbs and then right shift to eliminate the // extra factor of R. for i := 0; ; i += 2 { tmp2[i+1] += tmp2[i] >> 29 x = tmp2[i] & bottom29Bits xMask = nonZeroToAllOnes(x) tmp2[i] = 0 // The bounds calculations for this loop are tricky. Each iteration of // the loop eliminates two words by adding values to words to their // right. // // The following table contains the amounts added to each word (as an // offset from the value of i at the top of the loop). The amounts are // accounted for from the first and second half of the loop separately // and are written as, for example, 28 to mean a value <2**28. // // Word: 3 4 5 6 7 8 9 10 // Added in top half: 28 11 29 21 29 28 // 28 29 // 29 // Added in bottom half: 29 10 28 21 28 28 // 29 // // The value that is currently offset 7 will be offset 5 for the next // iteration and then offset 3 for the iteration after that. Therefore // the total value added will be the values added at 7, 5 and 3. // // The following table accumulates these values. The sums at the bottom // are written as, for example, 29+28, to mean a value < 2**29+2**28. // // Word: 3 4 5 6 7 8 9 10 11 12 13 // 28 11 10 29 21 29 28 28 28 28 28 // 29 28 11 28 29 28 29 28 29 28 // 29 28 21 21 29 21 29 21 // 10 29 28 21 28 21 28 // 28 29 28 29 28 29 28 // 11 10 29 10 29 10 // 29 28 11 28 11 // 29 29 // -------------------------------------------- // 30+ 31+ 30+ 31+ 30+ // 28+ 29+ 28+ 29+ 21+ // 21+ 28+ 21+ 28+ 10 // 10 21+ 10 21+ // 11 11 // // So the greatest amount is added to tmp2[10] and tmp2[12]. If // tmp2[10/12] has an initial value of <2**29, then the maximum value // will be < 2**31 + 2**30 + 2**28 + 2**21 + 2**11, which is < 2**32, // as required. tmp2[i+3] += (x << 10) & bottom28Bits tmp2[i+4] += (x >> 18) tmp2[i+6] += (x << 21) & bottom29Bits tmp2[i+7] += x >> 8 // At position 200, which is the starting bit position for word 7, we // have a factor of 0xf000000 = 2**28 - 2**24. tmp2[i+7] += 0x10000000 & xMask tmp2[i+8] += (x - 1) & xMask tmp2[i+7] -= (x << 24) & bottom28Bits tmp2[i+8] -= x >> 4 tmp2[i+8] += 0x20000000 & xMask tmp2[i+8] -= x tmp2[i+8] += (x << 28) & bottom29Bits tmp2[i+9] += ((x >> 1) - 1) & xMask if i+1 == p256Limbs { break } tmp2[i+2] += tmp2[i+1] >> 28 x = tmp2[i+1] & bottom28Bits xMask = nonZeroToAllOnes(x) tmp2[i+1] = 0 tmp2[i+4] += (x << 11) & bottom29Bits tmp2[i+5] += (x >> 18) tmp2[i+7] += (x << 21) & bottom28Bits tmp2[i+8] += x >> 7 // At position 199, which is the starting bit of the 8th word when // dealing with a context starting on an odd word, we have a factor of // 0x1e000000 = 2**29 - 2**25. Since we have not updated i, the 8th // word from i+1 is i+8. tmp2[i+8] += 0x20000000 & xMask tmp2[i+9] += (x - 1) & xMask tmp2[i+8] -= (x << 25) & bottom29Bits tmp2[i+9] -= x >> 4 tmp2[i+9] += 0x10000000 & xMask tmp2[i+9] -= x tmp2[i+10] += (x - 1) & xMask } // We merge the right shift with a carry chain. The words above 2**257 have // widths of 28,29,... which we need to correct when copying them down. carry = 0 for i := 0; i < 8; i++ { // The maximum value of tmp2[i + 9] occurs on the first iteration and // is < 2**30+2**29+2**28. Adding 2**29 (from tmp2[i + 10]) is // therefore safe. out[i] = tmp2[i+9] out[i] += carry out[i] += (tmp2[i+10] << 28) & bottom29Bits carry = out[i] >> 29 out[i] &= bottom29Bits i++ out[i] = tmp2[i+9] >> 1 out[i] += carry carry = out[i] >> 28 out[i] &= bottom28Bits } out[8] = tmp2[17] out[8] += carry carry = out[8] >> 29 out[8] &= bottom29Bits p256ReduceCarry(out, carry) } // p256Square sets out=in*in. // // On entry: in[0,2,...] < 2**30, in[1,3,...] < 2**29. // On exit: out[0,2,...] < 2**30, out[1,3,...] < 2**29. func p256Square(out, in *[p256Limbs]uint32) { var tmp [17]uint64 tmp[0] = uint64(in[0]) * uint64(in[0]) tmp[1] = uint64(in[0]) * (uint64(in[1]) << 1) tmp[2] = uint64(in[0])*(uint64(in[2])<<1) + uint64(in[1])*(uint64(in[1])<<1) tmp[3] = uint64(in[0])*(uint64(in[3])<<1) + uint64(in[1])*(uint64(in[2])<<1) tmp[4] = uint64(in[0])*(uint64(in[4])<<1) + uint64(in[1])*(uint64(in[3])<<2) + uint64(in[2])*uint64(in[2]) tmp[5] = uint64(in[0])*(uint64(in[5])<<1) + uint64(in[1])*(uint64(in[4])<<1) + uint64(in[2])*(uint64(in[3])<<1) tmp[6] = uint64(in[0])*(uint64(in[6])<<1) + uint64(in[1])*(uint64(in[5])<<2) + uint64(in[2])*(uint64(in[4])<<1) + uint64(in[3])*(uint64(in[3])<<1) tmp[7] = uint64(in[0])*(uint64(in[7])<<1) + uint64(in[1])*(uint64(in[6])<<1) + uint64(in[2])*(uint64(in[5])<<1) + uint64(in[3])*(uint64(in[4])<<1) // tmp[8] has the greatest value of 2**61 + 2**60 + 2**61 + 2**60 + 2**60, // which is < 2**64 as required. tmp[8] = uint64(in[0])*(uint64(in[8])<<1) + uint64(in[1])*(uint64(in[7])<<2) + uint64(in[2])*(uint64(in[6])<<1) + uint64(in[3])*(uint64(in[5])<<2) + uint64(in[4])*uint64(in[4]) tmp[9] = uint64(in[1])*(uint64(in[8])<<1) + uint64(in[2])*(uint64(in[7])<<1) + uint64(in[3])*(uint64(in[6])<<1) + uint64(in[4])*(uint64(in[5])<<1) tmp[10] = uint64(in[2])*(uint64(in[8])<<1) + uint64(in[3])*(uint64(in[7])<<2) + uint64(in[4])*(uint64(in[6])<<1) + uint64(in[5])*(uint64(in[5])<<1) tmp[11] = uint64(in[3])*(uint64(in[8])<<1) + uint64(in[4])*(uint64(in[7])<<1) + uint64(in[5])*(uint64(in[6])<<1) tmp[12] = uint64(in[4])*(uint64(in[8])<<1) + uint64(in[5])*(uint64(in[7])<<2) + uint64(in[6])*uint64(in[6]) tmp[13] = uint64(in[5])*(uint64(in[8])<<1) + uint64(in[6])*(uint64(in[7])<<1) tmp[14] = uint64(in[6])*(uint64(in[8])<<1) + uint64(in[7])*(uint64(in[7])<<1) tmp[15] = uint64(in[7]) * (uint64(in[8]) << 1) tmp[16] = uint64(in[8]) * uint64(in[8]) p256ReduceDegree(out, tmp) } // p256Mul sets out=in*in2. // // On entry: in[0,2,...] < 2**30, in[1,3,...] < 2**29 and // in2[0,2,...] < 2**30, in2[1,3,...] < 2**29. // On exit: out[0,2,...] < 2**30, out[1,3,...] < 2**29. func p256Mul(out, in, in2 *[p256Limbs]uint32) { var tmp [17]uint64 tmp[0] = uint64(in[0]) * uint64(in2[0]) tmp[1] = uint64(in[0])*(uint64(in2[1])<<0) + uint64(in[1])*(uint64(in2[0])<<0) tmp[2] = uint64(in[0])*(uint64(in2[2])<<0) + uint64(in[1])*(uint64(in2[1])<<1) + uint64(in[2])*(uint64(in2[0])<<0) tmp[3] = uint64(in[0])*(uint64(in2[3])<<0) + uint64(in[1])*(uint64(in2[2])<<0) + uint64(in[2])*(uint64(in2[1])<<0) + uint64(in[3])*(uint64(in2[0])<<0) tmp[4] = uint64(in[0])*(uint64(in2[4])<<0) + uint64(in[1])*(uint64(in2[3])<<1) + uint64(in[2])*(uint64(in2[2])<<0) + uint64(in[3])*(uint64(in2[1])<<1) + uint64(in[4])*(uint64(in2[0])<<0) tmp[5] = uint64(in[0])*(uint64(in2[5])<<0) + uint64(in[1])*(uint64(in2[4])<<0) + uint64(in[2])*(uint64(in2[3])<<0) + uint64(in[3])*(uint64(in2[2])<<0) + uint64(in[4])*(uint64(in2[1])<<0) + uint64(in[5])*(uint64(in2[0])<<0) tmp[6] = uint64(in[0])*(uint64(in2[6])<<0) + uint64(in[1])*(uint64(in2[5])<<1) + uint64(in[2])*(uint64(in2[4])<<0) + uint64(in[3])*(uint64(in2[3])<<1) + uint64(in[4])*(uint64(in2[2])<<0) + uint64(in[5])*(uint64(in2[1])<<1) + uint64(in[6])*(uint64(in2[0])<<0) tmp[7] = uint64(in[0])*(uint64(in2[7])<<0) + uint64(in[1])*(uint64(in2[6])<<0) + uint64(in[2])*(uint64(in2[5])<<0) + uint64(in[3])*(uint64(in2[4])<<0) + uint64(in[4])*(uint64(in2[3])<<0) + uint64(in[5])*(uint64(in2[2])<<0) + uint64(in[6])*(uint64(in2[1])<<0) + uint64(in[7])*(uint64(in2[0])<<0) // tmp[8] has the greatest value but doesn't overflow. See logic in // p256Square. tmp[8] = uint64(in[0])*(uint64(in2[8])<<0) + uint64(in[1])*(uint64(in2[7])<<1) + uint64(in[2])*(uint64(in2[6])<<0) + uint64(in[3])*(uint64(in2[5])<<1) + uint64(in[4])*(uint64(in2[4])<<0) + uint64(in[5])*(uint64(in2[3])<<1) + uint64(in[6])*(uint64(in2[2])<<0) + uint64(in[7])*(uint64(in2[1])<<1) + uint64(in[8])*(uint64(in2[0])<<0) tmp[9] = uint64(in[1])*(uint64(in2[8])<<0) + uint64(in[2])*(uint64(in2[7])<<0) + uint64(in[3])*(uint64(in2[6])<<0) + uint64(in[4])*(uint64(in2[5])<<0) + uint64(in[5])*(uint64(in2[4])<<0) + uint64(in[6])*(uint64(in2[3])<<0) + uint64(in[7])*(uint64(in2[2])<<0) + uint64(in[8])*(uint64(in2[1])<<0) tmp[10] = uint64(in[2])*(uint64(in2[8])<<0) + uint64(in[3])*(uint64(in2[7])<<1) + uint64(in[4])*(uint64(in2[6])<<0) + uint64(in[5])*(uint64(in2[5])<<1) + uint64(in[6])*(uint64(in2[4])<<0) + uint64(in[7])*(uint64(in2[3])<<1) + uint64(in[8])*(uint64(in2[2])<<0) tmp[11] = uint64(in[3])*(uint64(in2[8])<<0) + uint64(in[4])*(uint64(in2[7])<<0) + uint64(in[5])*(uint64(in2[6])<<0) + uint64(in[6])*(uint64(in2[5])<<0) + uint64(in[7])*(uint64(in2[4])<<0) + uint64(in[8])*(uint64(in2[3])<<0) tmp[12] = uint64(in[4])*(uint64(in2[8])<<0) + uint64(in[5])*(uint64(in2[7])<<1) + uint64(in[6])*(uint64(in2[6])<<0) + uint64(in[7])*(uint64(in2[5])<<1) + uint64(in[8])*(uint64(in2[4])<<0) tmp[13] = uint64(in[5])*(uint64(in2[8])<<0) + uint64(in[6])*(uint64(in2[7])<<0) + uint64(in[7])*(uint64(in2[6])<<0) + uint64(in[8])*(uint64(in2[5])<<0) tmp[14] = uint64(in[6])*(uint64(in2[8])<<0) + uint64(in[7])*(uint64(in2[7])<<1) + uint64(in[8])*(uint64(in2[6])<<0) tmp[15] = uint64(in[7])*(uint64(in2[8])<<0) + uint64(in[8])*(uint64(in2[7])<<0) tmp[16] = uint64(in[8]) * (uint64(in2[8]) << 0) p256ReduceDegree(out, tmp) } func p256Assign(out, in *[p256Limbs]uint32) { *out = *in } // p256Invert calculates |out| = |in|^{-1} // // Based on Fermat's Little Theorem: // a^p = a (mod p) // a^{p-1} = 1 (mod p) // a^{p-2} = a^{-1} (mod p) func p256Invert(out, in *[p256Limbs]uint32) { var ftmp, ftmp2 [p256Limbs]uint32 // each e_I will hold |in|^{2^I - 1} var e2, e4, e8, e16, e32, e64 [p256Limbs]uint32 p256Square(&ftmp, in) // 2^1 p256Mul(&ftmp, in, &ftmp) // 2^2 - 2^0 p256Assign(&e2, &ftmp) p256Square(&ftmp, &ftmp) // 2^3 - 2^1 p256Square(&ftmp, &ftmp) // 2^4 - 2^2 p256Mul(&ftmp, &ftmp, &e2) // 2^4 - 2^0 p256Assign(&e4, &ftmp) p256Square(&ftmp, &ftmp) // 2^5 - 2^1 p256Square(&ftmp, &ftmp) // 2^6 - 2^2 p256Square(&ftmp, &ftmp) // 2^7 - 2^3 p256Square(&ftmp, &ftmp) // 2^8 - 2^4 p256Mul(&ftmp, &ftmp, &e4) // 2^8 - 2^0 p256Assign(&e8, &ftmp) for i := 0; i < 8; i++ { p256Square(&ftmp, &ftmp) } // 2^16 - 2^8 p256Mul(&ftmp, &ftmp, &e8) // 2^16 - 2^0 p256Assign(&e16, &ftmp) for i := 0; i < 16; i++ { p256Square(&ftmp, &ftmp) } // 2^32 - 2^16 p256Mul(&ftmp, &ftmp, &e16) // 2^32 - 2^0 p256Assign(&e32, &ftmp) for i := 0; i < 32; i++ { p256Square(&ftmp, &ftmp) } // 2^64 - 2^32 p256Assign(&e64, &ftmp) p256Mul(&ftmp, &ftmp, in) // 2^64 - 2^32 + 2^0 for i := 0; i < 192; i++ { p256Square(&ftmp, &ftmp) } // 2^256 - 2^224 + 2^192 p256Mul(&ftmp2, &e64, &e32) // 2^64 - 2^0 for i := 0; i < 16; i++ { p256Square(&ftmp2, &ftmp2) } // 2^80 - 2^16 p256Mul(&ftmp2, &ftmp2, &e16) // 2^80 - 2^0 for i := 0; i < 8; i++ { p256Square(&ftmp2, &ftmp2) } // 2^88 - 2^8 p256Mul(&ftmp2, &ftmp2, &e8) // 2^88 - 2^0 for i := 0; i < 4; i++ { p256Square(&ftmp2, &ftmp2) } // 2^92 - 2^4 p256Mul(&ftmp2, &ftmp2, &e4) // 2^92 - 2^0 p256Square(&ftmp2, &ftmp2) // 2^93 - 2^1 p256Square(&ftmp2, &ftmp2) // 2^94 - 2^2 p256Mul(&ftmp2, &ftmp2, &e2) // 2^94 - 2^0 p256Square(&ftmp2, &ftmp2) // 2^95 - 2^1 p256Square(&ftmp2, &ftmp2) // 2^96 - 2^2 p256Mul(&ftmp2, &ftmp2, in) // 2^96 - 3 p256Mul(out, &ftmp2, &ftmp) // 2^256 - 2^224 + 2^192 + 2^96 - 3 } // p256Scalar3 sets out=3*out. // // On entry: out[0,2,...] < 2**30, out[1,3,...] < 2**29. // On exit: out[0,2,...] < 2**30, out[1,3,...] < 2**29. func p256Scalar3(out *[p256Limbs]uint32) { var carry uint32 for i := 0; ; i++ { out[i] *= 3 out[i] += carry carry = out[i] >> 29 out[i] &= bottom29Bits i++ if i == p256Limbs { break } out[i] *= 3 out[i] += carry carry = out[i] >> 28 out[i] &= bottom28Bits } p256ReduceCarry(out, carry) } // p256Scalar4 sets out=4*out. // // On entry: out[0,2,...] < 2**30, out[1,3,...] < 2**29. // On exit: out[0,2,...] < 2**30, out[1,3,...] < 2**29. func p256Scalar4(out *[p256Limbs]uint32) { var carry, nextCarry uint32 for i := 0; ; i++ { nextCarry = out[i] >> 27 out[i] <<= 2 out[i] &= bottom29Bits out[i] += carry carry = nextCarry + (out[i] >> 29) out[i] &= bottom29Bits i++ if i == p256Limbs { break } nextCarry = out[i] >> 26 out[i] <<= 2 out[i] &= bottom28Bits out[i] += carry carry = nextCarry + (out[i] >> 28) out[i] &= bottom28Bits } p256ReduceCarry(out, carry) } // p256Scalar8 sets out=8*out. // // On entry: out[0,2,...] < 2**30, out[1,3,...] < 2**29. // On exit: out[0,2,...] < 2**30, out[1,3,...] < 2**29. func p256Scalar8(out *[p256Limbs]uint32) { var carry, nextCarry uint32 for i := 0; ; i++ { nextCarry = out[i] >> 26 out[i] <<= 3 out[i] &= bottom29Bits out[i] += carry carry = nextCarry + (out[i] >> 29) out[i] &= bottom29Bits i++ if i == p256Limbs { break } nextCarry = out[i] >> 25 out[i] <<= 3 out[i] &= bottom28Bits out[i] += carry carry = nextCarry + (out[i] >> 28) out[i] &= bottom28Bits } p256ReduceCarry(out, carry) } // Group operations: // // Elements of the elliptic curve group are represented in Jacobian // coordinates: (x, y, z). An affine point (x', y') is x'=x/z**2, y'=y/z**3 in // Jacobian form. // p256PointDouble sets {xOut,yOut,zOut} = 2*{x,y,z}. // // See http://www.hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#doubling-dbl-2009-l func p256PointDouble(xOut, yOut, zOut, x, y, z *[p256Limbs]uint32) { var delta, gamma, alpha, beta, tmp, tmp2 [p256Limbs]uint32 p256Square(&delta, z) p256Square(&gamma, y) p256Mul(&beta, x, &gamma) p256Sum(&tmp, x, &delta) p256Diff(&tmp2, x, &delta) p256Mul(&alpha, &tmp, &tmp2) p256Scalar3(&alpha) p256Sum(&tmp, y, z) p256Square(&tmp, &tmp) p256Diff(&tmp, &tmp, &gamma) p256Diff(zOut, &tmp, &delta) p256Scalar4(&beta) p256Square(xOut, &alpha) p256Diff(xOut, xOut, &beta) p256Diff(xOut, xOut, &beta) p256Diff(&tmp, &beta, xOut) p256Mul(&tmp, &alpha, &tmp) p256Square(&tmp2, &gamma) p256Scalar8(&tmp2) p256Diff(yOut, &tmp, &tmp2) } // p256PointAddMixed sets {xOut,yOut,zOut} = {x1,y1,z1} + {x2,y2,1}. // (i.e. the second point is affine.) // // See http://www.hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#addition-add-2007-bl // // Note that this function does not handle P+P, infinity+P nor P+infinity // correctly. func p256PointAddMixed(xOut, yOut, zOut, x1, y1, z1, x2, y2 *[p256Limbs]uint32) { var z1z1, z1z1z1, s2, u2, h, i, j, r, rr, v, tmp [p256Limbs]uint32 p256Square(&z1z1, z1) p256Sum(&tmp, z1, z1) p256Mul(&u2, x2, &z1z1) p256Mul(&z1z1z1, z1, &z1z1) p256Mul(&s2, y2, &z1z1z1) p256Diff(&h, &u2, x1) p256Sum(&i, &h, &h) p256Square(&i, &i) p256Mul(&j, &h, &i) p256Diff(&r, &s2, y1) p256Sum(&r, &r, &r) p256Mul(&v, x1, &i) p256Mul(zOut, &tmp, &h) p256Square(&rr, &r) p256Diff(xOut, &rr, &j) p256Diff(xOut, xOut, &v) p256Diff(xOut, xOut, &v) p256Diff(&tmp, &v, xOut) p256Mul(yOut, &tmp, &r) p256Mul(&tmp, y1, &j) p256Diff(yOut, yOut, &tmp) p256Diff(yOut, yOut, &tmp) } // p256PointAdd sets {xOut,yOut,zOut} = {x1,y1,z1} + {x2,y2,z2}. // // See http://www.hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#addition-add-2007-bl // // Note that this function does not handle P+P, infinity+P nor P+infinity // correctly. func p256PointAdd(xOut, yOut, zOut, x1, y1, z1, x2, y2, z2 *[p256Limbs]uint32) { var z1z1, z1z1z1, z2z2, z2z2z2, s1, s2, u1, u2, h, i, j, r, rr, v, tmp [p256Limbs]uint32 p256Square(&z1z1, z1) p256Square(&z2z2, z2) p256Mul(&u1, x1, &z2z2) p256Sum(&tmp, z1, z2) p256Square(&tmp, &tmp) p256Diff(&tmp, &tmp, &z1z1) p256Diff(&tmp, &tmp, &z2z2) p256Mul(&z2z2z2, z2, &z2z2) p256Mul(&s1, y1, &z2z2z2) p256Mul(&u2, x2, &z1z1) p256Mul(&z1z1z1, z1, &z1z1) p256Mul(&s2, y2, &z1z1z1) p256Diff(&h, &u2, &u1) p256Sum(&i, &h, &h) p256Square(&i, &i) p256Mul(&j, &h, &i) p256Diff(&r, &s2, &s1) p256Sum(&r, &r, &r) p256Mul(&v, &u1, &i) p256Mul(zOut, &tmp, &h) p256Square(&rr, &r) p256Diff(xOut, &rr, &j) p256Diff(xOut, xOut, &v) p256Diff(xOut, xOut, &v) p256Diff(&tmp, &v, xOut) p256Mul(yOut, &tmp, &r) p256Mul(&tmp, &s1, &j) p256Diff(yOut, yOut, &tmp) p256Diff(yOut, yOut, &tmp) } // p256CopyConditional sets out=in if mask = 0xffffffff in constant time. // // On entry: mask is either 0 or 0xffffffff. func p256CopyConditional(out, in *[p256Limbs]uint32, mask uint32) { for i := 0; i < p256Limbs; i++ { tmp := mask & (in[i] ^ out[i]) out[i] ^= tmp } } // p256SelectAffinePoint sets {out_x,out_y} to the index'th entry of table. // On entry: index < 16, table[0] must be zero. func p256SelectAffinePoint(xOut, yOut *[p256Limbs]uint32, table []uint32, index uint32) { for i := range xOut { xOut[i] = 0 } for i := range yOut { yOut[i] = 0 } for i := uint32(1); i < 16; i++ { mask := i ^ index mask |= mask >> 2 mask |= mask >> 1 mask &= 1 mask-- for j := range xOut { xOut[j] |= table[0] & mask table = table[1:] } for j := range yOut { yOut[j] |= table[0] & mask table = table[1:] } } } // p256SelectJacobianPoint sets {out_x,out_y,out_z} to the index'th entry of // table. // On entry: index < 16, table[0] must be zero. func p256SelectJacobianPoint(xOut, yOut, zOut *[p256Limbs]uint32, table *[16][3][p256Limbs]uint32, index uint32) { for i := range xOut { xOut[i] = 0 } for i := range yOut { yOut[i] = 0 } for i := range zOut { zOut[i] = 0 } // The implicit value at index 0 is all zero. We don't need to perform that // iteration of the loop because we already set out_* to zero. for i := uint32(1); i < 16; i++ { mask := i ^ index mask |= mask >> 2 mask |= mask >> 1 mask &= 1 mask-- for j := range xOut { xOut[j] |= table[i][0][j] & mask } for j := range yOut { yOut[j] |= table[i][1][j] & mask } for j := range zOut { zOut[j] |= table[i][2][j] & mask } } } // p256GetBit returns the bit'th bit of scalar. func p256GetBit(scalar *[32]uint8, bit uint) uint32 { return uint32(((scalar[bit>>3]) >> (bit & 7)) & 1) } // p256ScalarBaseMult sets {xOut,yOut,zOut} = scalar*G where scalar is a // little-endian number. Note that the value of scalar must be less than the // order of the group. func p256ScalarBaseMult(xOut, yOut, zOut *[p256Limbs]uint32, scalar *[32]uint8) { nIsInfinityMask := ^uint32(0) var pIsNoninfiniteMask, mask, tableOffset uint32 var px, py, tx, ty, tz [p256Limbs]uint32 for i := range xOut { xOut[i] = 0 } for i := range yOut { yOut[i] = 0 } for i := range zOut { zOut[i] = 0 } // The loop adds bits at positions 0, 64, 128 and 192, followed by // positions 32,96,160 and 224 and does this 32 times. for i := uint(0); i < 32; i++ { if i != 0 { p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut) } tableOffset = 0 for j := uint(0); j <= 32; j += 32 { bit0 := p256GetBit(scalar, 31-i+j) bit1 := p256GetBit(scalar, 95-i+j) bit2 := p256GetBit(scalar, 159-i+j) bit3 := p256GetBit(scalar, 223-i+j) index := bit0 | (bit1 << 1) | (bit2 << 2) | (bit3 << 3) p256SelectAffinePoint(&px, &py, p256Precomputed[tableOffset:], index) tableOffset += 30 * p256Limbs // Since scalar is less than the order of the group, we know that // {xOut,yOut,zOut} != {px,py,1}, unless both are zero, which we handle // below. p256PointAddMixed(&tx, &ty, &tz, xOut, yOut, zOut, &px, &py) // The result of pointAddMixed is incorrect if {xOut,yOut,zOut} is zero // (a.k.a. the point at infinity). We handle that situation by // copying the point from the table. p256CopyConditional(xOut, &px, nIsInfinityMask) p256CopyConditional(yOut, &py, nIsInfinityMask) p256CopyConditional(zOut, &p256One, nIsInfinityMask) // Equally, the result is also wrong if the point from the table is // zero, which happens when the index is zero. We handle that by // only copying from {tx,ty,tz} to {xOut,yOut,zOut} if index != 0. pIsNoninfiniteMask = nonZeroToAllOnes(index) mask = pIsNoninfiniteMask & ^nIsInfinityMask p256CopyConditional(xOut, &tx, mask) p256CopyConditional(yOut, &ty, mask) p256CopyConditional(zOut, &tz, mask) // If p was not zero, then n is now non-zero. nIsInfinityMask &= ^pIsNoninfiniteMask } } } // p256PointToAffine converts a Jacobian point to an affine point. If the input // is the point at infinity then it returns (0, 0) in constant time. func p256PointToAffine(xOut, yOut, x, y, z *[p256Limbs]uint32) { var zInv, zInvSq [p256Limbs]uint32 p256Invert(&zInv, z) p256Square(&zInvSq, &zInv) p256Mul(xOut, x, &zInvSq) p256Mul(&zInv, &zInv, &zInvSq) p256Mul(yOut, y, &zInv) } // p256ToAffine returns a pair of *big.Int containing the affine representation // of {x,y,z}. func p256ToAffine(x, y, z *[p256Limbs]uint32) (xOut, yOut *big.Int) { var xx, yy [p256Limbs]uint32 p256PointToAffine(&xx, &yy, x, y, z) return p256ToBig(&xx), p256ToBig(&yy) } // p256ScalarMult sets {xOut,yOut,zOut} = scalar*{x,y}. func p256ScalarMult(xOut, yOut, zOut, x, y *[p256Limbs]uint32, scalar *[32]uint8) { var px, py, pz, tx, ty, tz [p256Limbs]uint32 var precomp [16][3][p256Limbs]uint32 var nIsInfinityMask, index, pIsNoninfiniteMask, mask uint32 // We precompute 0,1,2,... times {x,y}. precomp[1][0] = *x precomp[1][1] = *y precomp[1][2] = p256One for i := 2; i < 16; i += 2 { p256PointDouble(&precomp[i][0], &precomp[i][1], &precomp[i][2], &precomp[i/2][0], &precomp[i/2][1], &precomp[i/2][2]) p256PointAddMixed(&precomp[i+1][0], &precomp[i+1][1], &precomp[i+1][2], &precomp[i][0], &precomp[i][1], &precomp[i][2], x, y) } for i := range xOut { xOut[i] = 0 } for i := range yOut { yOut[i] = 0 } for i := range zOut { zOut[i] = 0 } nIsInfinityMask = ^uint32(0) // We add in a window of four bits each iteration and do this 64 times. for i := 0; i < 64; i++ { if i != 0 { p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut) p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut) p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut) p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut) } index = uint32(scalar[31-i/2]) if (i & 1) == 1 { index &= 15 } else { index >>= 4 } // See the comments in scalarBaseMult about handling infinities. p256SelectJacobianPoint(&px, &py, &pz, &precomp, index) p256PointAdd(&tx, &ty, &tz, xOut, yOut, zOut, &px, &py, &pz) p256CopyConditional(xOut, &px, nIsInfinityMask) p256CopyConditional(yOut, &py, nIsInfinityMask) p256CopyConditional(zOut, &pz, nIsInfinityMask) pIsNoninfiniteMask = nonZeroToAllOnes(index) mask = pIsNoninfiniteMask & ^nIsInfinityMask p256CopyConditional(xOut, &tx, mask) p256CopyConditional(yOut, &ty, mask) p256CopyConditional(zOut, &tz, mask) nIsInfinityMask &= ^pIsNoninfiniteMask } } // p256FromBig sets out = R*in. func p256FromBig(out *[p256Limbs]uint32, in *big.Int) { tmp := new(big.Int).Lsh(in, 257) tmp.Mod(tmp, p256.P) for i := 0; i < p256Limbs; i++ { if bits := tmp.Bits(); len(bits) > 0 { out[i] = uint32(bits[0]) & bottom29Bits } else { out[i] = 0 } tmp.Rsh(tmp, 29) i++ if i == p256Limbs { break } if bits := tmp.Bits(); len(bits) > 0 { out[i] = uint32(bits[0]) & bottom28Bits } else { out[i] = 0 } tmp.Rsh(tmp, 28) } } // p256ToBig returns a *big.Int containing the value of in. func p256ToBig(in *[p256Limbs]uint32) *big.Int { result, tmp := new(big.Int), new(big.Int) result.SetInt64(int64(in[p256Limbs-1])) for i := p256Limbs - 2; i >= 0; i-- { if (i & 1) == 0 { result.Lsh(result, 29) } else { result.Lsh(result, 28) } tmp.SetInt64(int64(in[i])) result.Add(result, tmp) } result.Mul(result, p256RInverse) result.Mod(result, p256.P) return result } go/src/pkg/crypto/hmac0040755000000000000000000000000012412656737015223 5ustar00rootroot00000000000000go/src/pkg/crypto/hmac/hmac.go0100644000000000000000000000522612412656737016543 0ustar00rootroot00000000000000// Copyright 2009 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 hmac implements the Keyed-Hash Message Authentication Code (HMAC) as defined in U.S. Federal Information Processing Standards Publication 198. An HMAC is a cryptographic hash that uses a key to sign a message. The receiver verifies the hash by recomputing it using the same key. Receivers should be careful to use Equal to compare MACs in order to avoid timing side-channels: // CheckMAC returns true if messageMAC is a valid HMAC tag for message. func CheckMAC(message, messageMAC, key []byte) bool { mac := hmac.New(sha256.New, key) mac.Write(message) expectedMAC := mac.Sum(nil) return hmac.Equal(messageMAC, expectedMAC) } */ package hmac import ( "crypto/subtle" "hash" ) // FIPS 198: // http://csrc.nist.gov/publications/fips/fips198/fips-198a.pdf // key is zero padded to the block size of the hash function // ipad = 0x36 byte repeated for key length // opad = 0x5c byte repeated for key length // hmac = H([key ^ opad] H([key ^ ipad] text)) type hmac struct { size int blocksize int key, tmp []byte outer, inner hash.Hash } func (h *hmac) tmpPad(xor byte) { for i, k := range h.key { h.tmp[i] = xor ^ k } for i := len(h.key); i < h.blocksize; i++ { h.tmp[i] = xor } } func (h *hmac) Sum(in []byte) []byte { origLen := len(in) in = h.inner.Sum(in) h.tmpPad(0x5c) copy(h.tmp[h.blocksize:], in[origLen:]) h.outer.Reset() h.outer.Write(h.tmp) return h.outer.Sum(in[:origLen]) } func (h *hmac) Write(p []byte) (n int, err error) { return h.inner.Write(p) } func (h *hmac) Size() int { return h.size } func (h *hmac) BlockSize() int { return h.blocksize } func (h *hmac) Reset() { h.inner.Reset() h.tmpPad(0x36) h.inner.Write(h.tmp[:h.blocksize]) } // New returns a new HMAC hash using the given hash.Hash type and key. func New(h func() hash.Hash, key []byte) hash.Hash { hm := new(hmac) hm.outer = h() hm.inner = h() hm.size = hm.inner.Size() hm.blocksize = hm.inner.BlockSize() hm.tmp = make([]byte, hm.blocksize+hm.size) if len(key) > hm.blocksize { // If key is too big, hash it. hm.outer.Write(key) key = hm.outer.Sum(nil) } hm.key = make([]byte, len(key)) copy(hm.key, key) hm.Reset() return hm } // Equal compares two MACs for equality without leaking timing information. func Equal(mac1, mac2 []byte) bool { // We don't have to be constant time if the lengths of the MACs are // different as that suggests that a completely different hash function // was used. return len(mac1) == len(mac2) && subtle.ConstantTimeCompare(mac1, mac2) == 1 } go/src/pkg/crypto/hmac/hmac_test.go0100644000000000000000000004532312412656737017604 0ustar00rootroot00000000000000// Copyright 2009 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 hmac import ( "crypto/md5" "crypto/sha1" "crypto/sha256" "crypto/sha512" "fmt" "hash" "testing" ) type hmacTest struct { hash func() hash.Hash key []byte in []byte out string size int blocksize int } var hmacTests = []hmacTest{ // Tests from US FIPS 198 // http://csrc.nist.gov/publications/fips/fips198/fips-198a.pdf { sha1.New, []byte{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, }, []byte("Sample #1"), "4f4ca3d5d68ba7cc0a1208c9c61e9c5da0403c0a", sha1.Size, sha1.BlockSize, }, { sha1.New, []byte{ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, }, []byte("Sample #2"), "0922d3405faa3d194f82a45830737d5cc6c75d24", sha1.Size, sha1.BlockSize, }, { sha1.New, []byte{ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, }, []byte("Sample #3"), "bcf41eab8bb2d802f3d05caf7cb092ecf8d1a3aa", sha1.Size, sha1.BlockSize, }, // Test from Plan 9. { md5.New, []byte("Jefe"), []byte("what do ya want for nothing?"), "750c783e6ab0b503eaa86e310a5db738", md5.Size, md5.BlockSize, }, // Tests from RFC 4231 { sha256.New, []byte{ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, }, []byte("Hi There"), "b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7", sha256.Size, sha256.BlockSize, }, { sha256.New, []byte("Jefe"), []byte("what do ya want for nothing?"), "5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843", sha256.Size, sha256.BlockSize, }, { sha256.New, []byte{ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, }, []byte{ 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, }, "773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe", sha256.Size, sha256.BlockSize, }, { sha256.New, []byte{ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, }, []byte{ 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, }, "82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b", sha256.Size, sha256.BlockSize, }, { sha256.New, []byte{ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, }, []byte("Test Using Larger Than Block-Size Key - Hash Key First"), "60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54", sha256.Size, sha256.BlockSize, }, { sha256.New, []byte{ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, }, []byte("This is a test using a larger than block-size key " + "and a larger than block-size data. The key needs to " + "be hashed before being used by the HMAC algorithm."), "9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2", sha256.Size, sha256.BlockSize, }, // Tests from http://csrc.nist.gov/groups/ST/toolkit/examples.html // (truncated tag tests are left out) { sha1.New, []byte{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, }, []byte("Sample message for keylen=blocklen"), "5fd596ee78d5553c8ff4e72d266dfd192366da29", sha1.Size, sha1.BlockSize, }, { sha1.New, []byte{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, }, []byte("Sample message for keylenmd5block.go // // The -full flag causes the generated code to do a full // (16x) unrolling instead of a 4x unrolling. package main import ( "flag" "log" "os" "strings" "text/template" ) func main() { flag.Parse() t := template.Must(template.New("main").Funcs(funcs).Parse(program)) if err := t.Execute(os.Stdout, data); err != nil { log.Fatal(err) } } type Data struct { a, b, c, d string Shift1 []int Shift2 []int Shift3 []int Shift4 []int Table1 []uint32 Table2 []uint32 Table3 []uint32 Table4 []uint32 Full bool } var funcs = template.FuncMap{ "dup": dup, "relabel": relabel, "rotate": rotate, } func dup(count int, x []int) []int { var out []int for i := 0; i < count; i++ { out = append(out, x...) } return out } func relabel(s string) string { return strings.NewReplacer("a", data.a, "b", data.b, "c", data.c, "d", data.d).Replace(s) } func rotate() string { data.a, data.b, data.c, data.d = data.d, data.a, data.b, data.c return "" // no output } func init() { flag.BoolVar(&data.Full, "full", false, "complete unrolling") } var data = Data{ a: "a", b: "b", c: "c", d: "d", Shift1: []int{7, 12, 17, 22}, Shift2: []int{5, 9, 14, 20}, Shift3: []int{4, 11, 16, 23}, Shift4: []int{6, 10, 15, 21}, // table[i] = int((1<<32) * abs(sin(i+1 radians))). Table1: []uint32{ // round 1 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, }, Table2: []uint32{ // round 2 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x2441453, 0xd8a1e681, 0xe7d3fbc8, 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a, }, Table3: []uint32{ // round3 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x4881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665, }, Table4: []uint32{ // round 4 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391, }, } var program = `// Copyright 2013 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. // DO NOT EDIT. // Generate with: go run gen.go{{if .Full}} -full{{end}} | gofmt >md5block.go package md5 import ( "unsafe" "runtime" ) {{if not .Full}} var t1 = [...]uint32{ {{range .Table1}}{{printf "\t%#x,\n" .}}{{end}} } var t2 = [...]uint32{ {{range .Table2}}{{printf "\t%#x,\n" .}}{{end}} } var t3 = [...]uint32{ {{range .Table3}}{{printf "\t%#x,\n" .}}{{end}} } var t4 = [...]uint32{ {{range .Table4}}{{printf "\t%#x,\n" .}}{{end}} } {{end}} const x86 = runtime.GOARCH == "amd64" || runtime.GOARCH == "386" var littleEndian bool func init() { x := uint32(0x04030201) y := [4]byte{0x1, 0x2, 0x3, 0x4} littleEndian = *(*[4]byte)(unsafe.Pointer(&x)) == y } func blockGeneric(dig *digest, p []byte) { a := dig.s[0] b := dig.s[1] c := dig.s[2] d := dig.s[3] var X *[16]uint32 var xbuf [16]uint32 for len(p) >= chunk { aa, bb, cc, dd := a, b, c, d // This is a constant condition - it is not evaluated on each iteration. if x86 { // MD5 was designed so that x86 processors can just iterate // over the block data directly as uint32s, and we generate // less code and run 1.3x faster if we take advantage of that. // My apologies. X = (*[16]uint32)(unsafe.Pointer(&p[0])) } else if littleEndian && uintptr(unsafe.Pointer(&p[0]))&(unsafe.Alignof(uint32(0))-1) == 0 { X = (*[16]uint32)(unsafe.Pointer(&p[0])) } else { X = &xbuf j := 0 for i := 0; i < 16; i++ { X[i&15] = uint32(p[j]) | uint32(p[j+1])<<8 | uint32(p[j+2])<<16 | uint32(p[j+3])<<24 j += 4 } } {{if .Full}} // Round 1. {{range $i, $s := dup 4 .Shift1}} {{index $.Table1 $i | printf "a += (((c^d)&b)^d) + X[%d] + %d" $i | relabel}} {{printf "a = a<<%d | a>>(32-%d) + b" $s $s | relabel}} {{rotate}} {{end}} // Round 2. {{range $i, $s := dup 4 .Shift2}} {{index $.Table2 $i | printf "a += (((b^c)&d)^c) + X[(1+5*%d)&15] + %d" $i | relabel}} {{printf "a = a<<%d | a>>(32-%d) + b" $s $s | relabel}} {{rotate}} {{end}} // Round 3. {{range $i, $s := dup 4 .Shift3}} {{index $.Table3 $i | printf "a += (b^c^d) + X[(5+3*%d)&15] + %d" $i | relabel}} {{printf "a = a<<%d | a>>(32-%d) + b" $s $s | relabel}} {{rotate}} {{end}} // Round 4. {{range $i, $s := dup 4 .Shift4}} {{index $.Table4 $i | printf "a += (c^(b|^d)) + X[(7*%d)&15] + %d" $i | relabel}} {{printf "a = a<<%d | a>>(32-%d) + b" $s $s | relabel}} {{rotate}} {{end}} {{else}} // Round 1. for i := uint(0); i < 16; { {{range $s := .Shift1}} {{printf "a += (((c^d)&b)^d) + X[i&15] + t1[i&15]" | relabel}} {{printf "a = a<<%d | a>>(32-%d) + b" $s $s | relabel}} i++ {{rotate}} {{end}} } // Round 2. for i := uint(0); i < 16; { {{range $s := .Shift2}} {{printf "a += (((b^c)&d)^c) + X[(1+5*i)&15] + t2[i&15]" | relabel}} {{printf "a = a<<%d | a>>(32-%d) + b" $s $s | relabel}} i++ {{rotate}} {{end}} } // Round 3. for i := uint(0); i < 16; { {{range $s := .Shift3}} {{printf "a += (b^c^d) + X[(5+3*i)&15] + t3[i&15]" | relabel}} {{printf "a = a<<%d | a>>(32-%d) + b" $s $s | relabel}} i++ {{rotate}} {{end}} } // Round 4. for i := uint(0); i < 16; { {{range $s := .Shift4}} {{printf "a += (c^(b|^d)) + X[(7*i)&15] + t4[i&15]" | relabel}} {{printf "a = a<<%d | a>>(32-%d) + b" $s $s | relabel}} i++ {{rotate}} {{end}} } {{end}} a += aa b += bb c += cc d += dd p = p[chunk:] } dig.s[0] = a dig.s[1] = b dig.s[2] = c dig.s[3] = d } ` go/src/pkg/crypto/md5/md5.go0100644000000000000000000000451312412656737016073 0ustar00rootroot00000000000000// Copyright 2009 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 md5 implements the MD5 hash algorithm as defined in RFC 1321. package md5 import ( "crypto" "hash" ) func init() { crypto.RegisterHash(crypto.MD5, New) } // The size of an MD5 checksum in bytes. const Size = 16 // The blocksize of MD5 in bytes. const BlockSize = 64 const ( chunk = 64 init0 = 0x67452301 init1 = 0xEFCDAB89 init2 = 0x98BADCFE init3 = 0x10325476 ) // digest represents the partial evaluation of a checksum. type digest struct { s [4]uint32 x [chunk]byte nx int len uint64 } func (d *digest) Reset() { d.s[0] = init0 d.s[1] = init1 d.s[2] = init2 d.s[3] = init3 d.nx = 0 d.len = 0 } // New returns a new hash.Hash computing the MD5 checksum. func New() hash.Hash { d := new(digest) d.Reset() return d } func (d *digest) Size() int { return Size } func (d *digest) BlockSize() int { return BlockSize } func (d *digest) Write(p []byte) (nn int, err error) { nn = len(p) d.len += uint64(nn) if d.nx > 0 { n := len(p) if n > chunk-d.nx { n = chunk - d.nx } for i := 0; i < n; i++ { d.x[d.nx+i] = p[i] } d.nx += n if d.nx == chunk { block(d, d.x[0:chunk]) d.nx = 0 } p = p[n:] } if len(p) >= chunk { n := len(p) &^ (chunk - 1) block(d, p[:n]) p = p[n:] } if len(p) > 0 { d.nx = copy(d.x[:], p) } return } func (d0 *digest) Sum(in []byte) []byte { // Make a copy of d0 so that caller can keep writing and summing. d := *d0 hash := d.checkSum() return append(in, hash[:]...) } func (d *digest) checkSum() [Size]byte { // Padding. Add a 1 bit and 0 bits until 56 bytes mod 64. len := d.len var tmp [64]byte tmp[0] = 0x80 if len%64 < 56 { d.Write(tmp[0 : 56-len%64]) } else { d.Write(tmp[0 : 64+56-len%64]) } // Length in bits. len <<= 3 for i := uint(0); i < 8; i++ { tmp[i] = byte(len >> (8 * i)) } d.Write(tmp[0:8]) if d.nx != 0 { panic("d.nx != 0") } var digest [Size]byte for i, s := range d.s { digest[i*4] = byte(s) digest[i*4+1] = byte(s >> 8) digest[i*4+2] = byte(s >> 16) digest[i*4+3] = byte(s >> 24) } return digest } // Sum returns the MD5 checksum of the data. func Sum(data []byte) [Size]byte { var d digest d.Reset() d.Write(data) return d.checkSum() } go/src/pkg/crypto/md5/md5_test.go0100644000000000000000000001256612412656737017141 0ustar00rootroot00000000000000// Copyright 2009 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 md5 import ( "crypto/rand" "fmt" "io" "testing" "unsafe" ) type md5Test struct { out string in string } var golden = []md5Test{ {"d41d8cd98f00b204e9800998ecf8427e", ""}, {"0cc175b9c0f1b6a831c399e269772661", "a"}, {"187ef4436122d1cc2f40dc2b92f0eba0", "ab"}, {"900150983cd24fb0d6963f7d28e17f72", "abc"}, {"e2fc714c4727ee9395f324cd2e7f331f", "abcd"}, {"ab56b4d92b40713acc5af89985d4b786", "abcde"}, {"e80b5017098950fc58aad83c8c14978e", "abcdef"}, {"7ac66c0f148de9519b8bd264312c4d64", "abcdefg"}, {"e8dc4081b13434b45189a720b77b6818", "abcdefgh"}, {"8aa99b1f439ff71293e95357bac6fd94", "abcdefghi"}, {"a925576942e94b2ef57a066101b48876", "abcdefghij"}, {"d747fc1719c7eacb84058196cfe56d57", "Discard medicine more than two years old."}, {"bff2dcb37ef3a44ba43ab144768ca837", "He who has a shady past knows that nice guys finish last."}, {"0441015ecb54a7342d017ed1bcfdbea5", "I wouldn't marry him with a ten foot pole."}, {"9e3cac8e9e9757a60c3ea391130d3689", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave"}, {"a0f04459b031f916a59a35cc482dc039", "The days of the digital watch are numbered. -Tom Stoppard"}, {"e7a48e0fe884faf31475d2a04b1362cc", "Nepal premier won't resign."}, {"637d2fe925c07c113800509964fb0e06", "For every action there is an equal and opposite government program."}, {"834a8d18d5c6562119cf4c7f5086cb71", "His money is twice tainted: 'taint yours and 'taint mine."}, {"de3a4d2fd6c73ec2db2abad23b444281", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977"}, {"acf203f997e2cf74ea3aff86985aefaf", "It's a tiny change to the code and not completely disgusting. - Bob Manchek"}, {"e1c1384cb4d2221dfdd7c795a4222c9a", "size: a.out: bad magic"}, {"c90f3ddecc54f34228c063d7525bf644", "The major problem is with sendmail. -Mark Horton"}, {"cdf7ab6c1fd49bd9933c43f3ea5af185", "Give me a rock, paper and scissors and I will move the world. CCFestoon"}, {"83bc85234942fc883c063cbd7f0ad5d0", "If the enemy is within range, then so are you."}, {"277cbe255686b48dd7e8f389394d9299", "It's well we cannot hear the screams/That we create in others' dreams."}, {"fd3fb0a7ffb8af16603f3d3af98f8e1f", "You remind me of a TV show, but that's all right: I watch it anyway."}, {"469b13a78ebf297ecda64d4723655154", "C is as portable as Stonehedge!!"}, {"63eb3a2f466410104731c4b037600110", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley"}, {"72c2ed7592debca1c90fc0100f931a2f", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction. Lewis-Randall Rule"}, {"132f7619d33b523b1d9e5bd8e0928355", "How can you write a big system without C++? -Paul Glick"}, } func TestGolden(t *testing.T) { for i := 0; i < len(golden); i++ { g := golden[i] s := fmt.Sprintf("%x", Sum([]byte(g.in))) if s != g.out { t.Fatalf("Sum function: md5(%s) = %s want %s", g.in, s, g.out) } c := New() buf := make([]byte, len(g.in)+4) for j := 0; j < 3+4; j++ { if j < 2 { io.WriteString(c, g.in) } else if j == 2 { io.WriteString(c, g.in[0:len(g.in)/2]) c.Sum(nil) io.WriteString(c, g.in[len(g.in)/2:]) } else if j > 2 { // test unaligned write buf = buf[1:] copy(buf, g.in) c.Write(buf[:len(g.in)]) } s := fmt.Sprintf("%x", c.Sum(nil)) if s != g.out { t.Fatalf("md5[%d](%s) = %s want %s", j, g.in, s, g.out) } c.Reset() } } } func TestLarge(t *testing.T) { const N = 10000 ok := "2bb571599a4180e1d542f76904adc3df" // md5sum of "0123456789" * 1000 block := make([]byte, 10004) c := New() for offset := 0; offset < 4; offset++ { for i := 0; i < N; i++ { block[offset+i] = '0' + byte(i%10) } for blockSize := 10; blockSize <= N; blockSize *= 10 { blocks := N / blockSize b := block[offset : offset+blockSize] c.Reset() for i := 0; i < blocks; i++ { c.Write(b) } s := fmt.Sprintf("%x", c.Sum(nil)) if s != ok { t.Fatalf("md5 TestLarge offset=%d, blockSize=%d = %s want %s", offset, blockSize, s, ok) } } } } // Tests that blockGeneric (pure Go) and block (in assembly for amd64, 386, arm) match. func TestBlockGeneric(t *testing.T) { gen, asm := New().(*digest), New().(*digest) buf := make([]byte, BlockSize*20) // arbitrary factor rand.Read(buf) blockGeneric(gen, buf) block(asm, buf) if *gen != *asm { t.Error("block and blockGeneric resulted in different states") } } var bench = New() var buf = make([]byte, 8192+1) var sum = make([]byte, bench.Size()) func benchmarkSize(b *testing.B, size int, unaligned bool) { b.SetBytes(int64(size)) buf := buf if unaligned { if uintptr(unsafe.Pointer(&buf[0]))&(unsafe.Alignof(uint32(0))-1) == 0 { buf = buf[1:] } } b.ResetTimer() for i := 0; i < b.N; i++ { bench.Reset() bench.Write(buf[:size]) bench.Sum(sum[:0]) } } func BenchmarkHash8Bytes(b *testing.B) { benchmarkSize(b, 8, false) } func BenchmarkHash1K(b *testing.B) { benchmarkSize(b, 1024, false) } func BenchmarkHash8K(b *testing.B) { benchmarkSize(b, 8192, false) } func BenchmarkHash8BytesUnaligned(b *testing.B) { benchmarkSize(b, 8, true) } func BenchmarkHash1KUnaligned(b *testing.B) { benchmarkSize(b, 1024, true) } func BenchmarkHash8KUnaligned(b *testing.B) { benchmarkSize(b, 8192, true) } go/src/pkg/crypto/md5/md5block.go0100644000000000000000000001474212412656737017113 0ustar00rootroot00000000000000// Copyright 2013 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. // DO NOT EDIT. // Generate with: go run gen.go -full | gofmt >md5block.go package md5 import ( "runtime" "unsafe" ) const x86 = runtime.GOARCH == "amd64" || runtime.GOARCH == "386" var littleEndian bool func init() { x := uint32(0x04030201) y := [4]byte{0x1, 0x2, 0x3, 0x4} littleEndian = *(*[4]byte)(unsafe.Pointer(&x)) == y } func blockGeneric(dig *digest, p []byte) { a := dig.s[0] b := dig.s[1] c := dig.s[2] d := dig.s[3] var X *[16]uint32 var xbuf [16]uint32 for len(p) >= chunk { aa, bb, cc, dd := a, b, c, d // This is a constant condition - it is not evaluated on each iteration. if x86 { // MD5 was designed so that x86 processors can just iterate // over the block data directly as uint32s, and we generate // less code and run 1.3x faster if we take advantage of that. // My apologies. X = (*[16]uint32)(unsafe.Pointer(&p[0])) } else if littleEndian && uintptr(unsafe.Pointer(&p[0]))&(unsafe.Alignof(uint32(0))-1) == 0 { X = (*[16]uint32)(unsafe.Pointer(&p[0])) } else { X = &xbuf j := 0 for i := 0; i < 16; i++ { X[i&15] = uint32(p[j]) | uint32(p[j+1])<<8 | uint32(p[j+2])<<16 | uint32(p[j+3])<<24 j += 4 } } // Round 1. a += (((c ^ d) & b) ^ d) + X[0] + 3614090360 a = a<<7 | a>>(32-7) + b d += (((b ^ c) & a) ^ c) + X[1] + 3905402710 d = d<<12 | d>>(32-12) + a c += (((a ^ b) & d) ^ b) + X[2] + 606105819 c = c<<17 | c>>(32-17) + d b += (((d ^ a) & c) ^ a) + X[3] + 3250441966 b = b<<22 | b>>(32-22) + c a += (((c ^ d) & b) ^ d) + X[4] + 4118548399 a = a<<7 | a>>(32-7) + b d += (((b ^ c) & a) ^ c) + X[5] + 1200080426 d = d<<12 | d>>(32-12) + a c += (((a ^ b) & d) ^ b) + X[6] + 2821735955 c = c<<17 | c>>(32-17) + d b += (((d ^ a) & c) ^ a) + X[7] + 4249261313 b = b<<22 | b>>(32-22) + c a += (((c ^ d) & b) ^ d) + X[8] + 1770035416 a = a<<7 | a>>(32-7) + b d += (((b ^ c) & a) ^ c) + X[9] + 2336552879 d = d<<12 | d>>(32-12) + a c += (((a ^ b) & d) ^ b) + X[10] + 4294925233 c = c<<17 | c>>(32-17) + d b += (((d ^ a) & c) ^ a) + X[11] + 2304563134 b = b<<22 | b>>(32-22) + c a += (((c ^ d) & b) ^ d) + X[12] + 1804603682 a = a<<7 | a>>(32-7) + b d += (((b ^ c) & a) ^ c) + X[13] + 4254626195 d = d<<12 | d>>(32-12) + a c += (((a ^ b) & d) ^ b) + X[14] + 2792965006 c = c<<17 | c>>(32-17) + d b += (((d ^ a) & c) ^ a) + X[15] + 1236535329 b = b<<22 | b>>(32-22) + c // Round 2. a += (((b ^ c) & d) ^ c) + X[(1+5*0)&15] + 4129170786 a = a<<5 | a>>(32-5) + b d += (((a ^ b) & c) ^ b) + X[(1+5*1)&15] + 3225465664 d = d<<9 | d>>(32-9) + a c += (((d ^ a) & b) ^ a) + X[(1+5*2)&15] + 643717713 c = c<<14 | c>>(32-14) + d b += (((c ^ d) & a) ^ d) + X[(1+5*3)&15] + 3921069994 b = b<<20 | b>>(32-20) + c a += (((b ^ c) & d) ^ c) + X[(1+5*4)&15] + 3593408605 a = a<<5 | a>>(32-5) + b d += (((a ^ b) & c) ^ b) + X[(1+5*5)&15] + 38016083 d = d<<9 | d>>(32-9) + a c += (((d ^ a) & b) ^ a) + X[(1+5*6)&15] + 3634488961 c = c<<14 | c>>(32-14) + d b += (((c ^ d) & a) ^ d) + X[(1+5*7)&15] + 3889429448 b = b<<20 | b>>(32-20) + c a += (((b ^ c) & d) ^ c) + X[(1+5*8)&15] + 568446438 a = a<<5 | a>>(32-5) + b d += (((a ^ b) & c) ^ b) + X[(1+5*9)&15] + 3275163606 d = d<<9 | d>>(32-9) + a c += (((d ^ a) & b) ^ a) + X[(1+5*10)&15] + 4107603335 c = c<<14 | c>>(32-14) + d b += (((c ^ d) & a) ^ d) + X[(1+5*11)&15] + 1163531501 b = b<<20 | b>>(32-20) + c a += (((b ^ c) & d) ^ c) + X[(1+5*12)&15] + 2850285829 a = a<<5 | a>>(32-5) + b d += (((a ^ b) & c) ^ b) + X[(1+5*13)&15] + 4243563512 d = d<<9 | d>>(32-9) + a c += (((d ^ a) & b) ^ a) + X[(1+5*14)&15] + 1735328473 c = c<<14 | c>>(32-14) + d b += (((c ^ d) & a) ^ d) + X[(1+5*15)&15] + 2368359562 b = b<<20 | b>>(32-20) + c // Round 3. a += (b ^ c ^ d) + X[(5+3*0)&15] + 4294588738 a = a<<4 | a>>(32-4) + b d += (a ^ b ^ c) + X[(5+3*1)&15] + 2272392833 d = d<<11 | d>>(32-11) + a c += (d ^ a ^ b) + X[(5+3*2)&15] + 1839030562 c = c<<16 | c>>(32-16) + d b += (c ^ d ^ a) + X[(5+3*3)&15] + 4259657740 b = b<<23 | b>>(32-23) + c a += (b ^ c ^ d) + X[(5+3*4)&15] + 2763975236 a = a<<4 | a>>(32-4) + b d += (a ^ b ^ c) + X[(5+3*5)&15] + 1272893353 d = d<<11 | d>>(32-11) + a c += (d ^ a ^ b) + X[(5+3*6)&15] + 4139469664 c = c<<16 | c>>(32-16) + d b += (c ^ d ^ a) + X[(5+3*7)&15] + 3200236656 b = b<<23 | b>>(32-23) + c a += (b ^ c ^ d) + X[(5+3*8)&15] + 681279174 a = a<<4 | a>>(32-4) + b d += (a ^ b ^ c) + X[(5+3*9)&15] + 3936430074 d = d<<11 | d>>(32-11) + a c += (d ^ a ^ b) + X[(5+3*10)&15] + 3572445317 c = c<<16 | c>>(32-16) + d b += (c ^ d ^ a) + X[(5+3*11)&15] + 76029189 b = b<<23 | b>>(32-23) + c a += (b ^ c ^ d) + X[(5+3*12)&15] + 3654602809 a = a<<4 | a>>(32-4) + b d += (a ^ b ^ c) + X[(5+3*13)&15] + 3873151461 d = d<<11 | d>>(32-11) + a c += (d ^ a ^ b) + X[(5+3*14)&15] + 530742520 c = c<<16 | c>>(32-16) + d b += (c ^ d ^ a) + X[(5+3*15)&15] + 3299628645 b = b<<23 | b>>(32-23) + c // Round 4. a += (c ^ (b | ^d)) + X[(7*0)&15] + 4096336452 a = a<<6 | a>>(32-6) + b d += (b ^ (a | ^c)) + X[(7*1)&15] + 1126891415 d = d<<10 | d>>(32-10) + a c += (a ^ (d | ^b)) + X[(7*2)&15] + 2878612391 c = c<<15 | c>>(32-15) + d b += (d ^ (c | ^a)) + X[(7*3)&15] + 4237533241 b = b<<21 | b>>(32-21) + c a += (c ^ (b | ^d)) + X[(7*4)&15] + 1700485571 a = a<<6 | a>>(32-6) + b d += (b ^ (a | ^c)) + X[(7*5)&15] + 2399980690 d = d<<10 | d>>(32-10) + a c += (a ^ (d | ^b)) + X[(7*6)&15] + 4293915773 c = c<<15 | c>>(32-15) + d b += (d ^ (c | ^a)) + X[(7*7)&15] + 2240044497 b = b<<21 | b>>(32-21) + c a += (c ^ (b | ^d)) + X[(7*8)&15] + 1873313359 a = a<<6 | a>>(32-6) + b d += (b ^ (a | ^c)) + X[(7*9)&15] + 4264355552 d = d<<10 | d>>(32-10) + a c += (a ^ (d | ^b)) + X[(7*10)&15] + 2734768916 c = c<<15 | c>>(32-15) + d b += (d ^ (c | ^a)) + X[(7*11)&15] + 1309151649 b = b<<21 | b>>(32-21) + c a += (c ^ (b | ^d)) + X[(7*12)&15] + 4149444226 a = a<<6 | a>>(32-6) + b d += (b ^ (a | ^c)) + X[(7*13)&15] + 3174756917 d = d<<10 | d>>(32-10) + a c += (a ^ (d | ^b)) + X[(7*14)&15] + 718787259 c = c<<15 | c>>(32-15) + d b += (d ^ (c | ^a)) + X[(7*15)&15] + 3951481745 b = b<<21 | b>>(32-21) + c a += aa b += bb c += cc d += dd p = p[chunk:] } dig.s[0] = a dig.s[1] = b dig.s[2] = c dig.s[3] = d } go/src/pkg/crypto/md5/md5block_386.s0100644000000000000000000001073412412656737017345 0ustar00rootroot00000000000000// Original source: // http://www.zorinaq.com/papers/md5-amd64.html // http://www.zorinaq.com/papers/md5-amd64.tar.bz2 // // Translated from Perl generating GNU assembly into // #defines generating 8a assembly, and adjusted for 386, // by the Go Authors. #include "../../../cmd/ld/textflag.h" // MD5 optimized for AMD64. // // Author: Marc Bevand // Licence: I hereby disclaim the copyright on this code and place it // in the public domain. #define ROUND1(a, b, c, d, index, const, shift) \ XORL c, BP; \ LEAL const(a)(DI*1), a; \ ANDL b, BP; \ XORL d, BP; \ MOVL (index*4)(SI), DI; \ ADDL BP, a; \ ROLL $shift, a; \ MOVL c, BP; \ ADDL b, a #define ROUND2(a, b, c, d, index, const, shift) \ LEAL const(a)(DI*1),a; \ MOVL d, DI; \ ANDL b, DI; \ MOVL d, BP; \ NOTL BP; \ ANDL c, BP; \ ORL DI, BP; \ MOVL (index*4)(SI),DI; \ ADDL BP, a; \ ROLL $shift, a; \ ADDL b, a #define ROUND3(a, b, c, d, index, const, shift) \ LEAL const(a)(DI*1),a; \ MOVL (index*4)(SI),DI; \ XORL d, BP; \ XORL b, BP; \ ADDL BP, a; \ ROLL $shift, a; \ MOVL b, BP; \ ADDL b, a #define ROUND4(a, b, c, d, index, const, shift) \ LEAL const(a)(DI*1),a; \ ORL b, BP; \ XORL c, BP; \ ADDL BP, a; \ MOVL (index*4)(SI),DI; \ MOVL $0xffffffff, BP; \ ROLL $shift, a; \ XORL c, BP; \ ADDL b, a TEXT ·block(SB),NOSPLIT,$24-16 MOVL dig+0(FP), BP MOVL p+4(FP), SI MOVL p_len+8(FP), DX SHRL $6, DX SHLL $6, DX LEAL (SI)(DX*1), DI MOVL (0*4)(BP), AX MOVL (1*4)(BP), BX MOVL (2*4)(BP), CX MOVL (3*4)(BP), DX CMPL SI, DI JEQ end MOVL DI, 16(SP) loop: MOVL AX, 0(SP) MOVL BX, 4(SP) MOVL CX, 8(SP) MOVL DX, 12(SP) MOVL (0*4)(SI), DI MOVL DX, BP ROUND1(AX,BX,CX,DX, 1,0xd76aa478, 7); ROUND1(DX,AX,BX,CX, 2,0xe8c7b756,12); ROUND1(CX,DX,AX,BX, 3,0x242070db,17); ROUND1(BX,CX,DX,AX, 4,0xc1bdceee,22); ROUND1(AX,BX,CX,DX, 5,0xf57c0faf, 7); ROUND1(DX,AX,BX,CX, 6,0x4787c62a,12); ROUND1(CX,DX,AX,BX, 7,0xa8304613,17); ROUND1(BX,CX,DX,AX, 8,0xfd469501,22); ROUND1(AX,BX,CX,DX, 9,0x698098d8, 7); ROUND1(DX,AX,BX,CX,10,0x8b44f7af,12); ROUND1(CX,DX,AX,BX,11,0xffff5bb1,17); ROUND1(BX,CX,DX,AX,12,0x895cd7be,22); ROUND1(AX,BX,CX,DX,13,0x6b901122, 7); ROUND1(DX,AX,BX,CX,14,0xfd987193,12); ROUND1(CX,DX,AX,BX,15,0xa679438e,17); ROUND1(BX,CX,DX,AX, 0,0x49b40821,22); MOVL (1*4)(SI), DI MOVL DX, BP ROUND2(AX,BX,CX,DX, 6,0xf61e2562, 5); ROUND2(DX,AX,BX,CX,11,0xc040b340, 9); ROUND2(CX,DX,AX,BX, 0,0x265e5a51,14); ROUND2(BX,CX,DX,AX, 5,0xe9b6c7aa,20); ROUND2(AX,BX,CX,DX,10,0xd62f105d, 5); ROUND2(DX,AX,BX,CX,15, 0x2441453, 9); ROUND2(CX,DX,AX,BX, 4,0xd8a1e681,14); ROUND2(BX,CX,DX,AX, 9,0xe7d3fbc8,20); ROUND2(AX,BX,CX,DX,14,0x21e1cde6, 5); ROUND2(DX,AX,BX,CX, 3,0xc33707d6, 9); ROUND2(CX,DX,AX,BX, 8,0xf4d50d87,14); ROUND2(BX,CX,DX,AX,13,0x455a14ed,20); ROUND2(AX,BX,CX,DX, 2,0xa9e3e905, 5); ROUND2(DX,AX,BX,CX, 7,0xfcefa3f8, 9); ROUND2(CX,DX,AX,BX,12,0x676f02d9,14); ROUND2(BX,CX,DX,AX, 0,0x8d2a4c8a,20); MOVL (5*4)(SI), DI MOVL CX, BP ROUND3(AX,BX,CX,DX, 8,0xfffa3942, 4); ROUND3(DX,AX,BX,CX,11,0x8771f681,11); ROUND3(CX,DX,AX,BX,14,0x6d9d6122,16); ROUND3(BX,CX,DX,AX, 1,0xfde5380c,23); ROUND3(AX,BX,CX,DX, 4,0xa4beea44, 4); ROUND3(DX,AX,BX,CX, 7,0x4bdecfa9,11); ROUND3(CX,DX,AX,BX,10,0xf6bb4b60,16); ROUND3(BX,CX,DX,AX,13,0xbebfbc70,23); ROUND3(AX,BX,CX,DX, 0,0x289b7ec6, 4); ROUND3(DX,AX,BX,CX, 3,0xeaa127fa,11); ROUND3(CX,DX,AX,BX, 6,0xd4ef3085,16); ROUND3(BX,CX,DX,AX, 9, 0x4881d05,23); ROUND3(AX,BX,CX,DX,12,0xd9d4d039, 4); ROUND3(DX,AX,BX,CX,15,0xe6db99e5,11); ROUND3(CX,DX,AX,BX, 2,0x1fa27cf8,16); ROUND3(BX,CX,DX,AX, 0,0xc4ac5665,23); MOVL (0*4)(SI), DI MOVL $0xffffffff, BP XORL DX, BP ROUND4(AX,BX,CX,DX, 7,0xf4292244, 6); ROUND4(DX,AX,BX,CX,14,0x432aff97,10); ROUND4(CX,DX,AX,BX, 5,0xab9423a7,15); ROUND4(BX,CX,DX,AX,12,0xfc93a039,21); ROUND4(AX,BX,CX,DX, 3,0x655b59c3, 6); ROUND4(DX,AX,BX,CX,10,0x8f0ccc92,10); ROUND4(CX,DX,AX,BX, 1,0xffeff47d,15); ROUND4(BX,CX,DX,AX, 8,0x85845dd1,21); ROUND4(AX,BX,CX,DX,15,0x6fa87e4f, 6); ROUND4(DX,AX,BX,CX, 6,0xfe2ce6e0,10); ROUND4(CX,DX,AX,BX,13,0xa3014314,15); ROUND4(BX,CX,DX,AX, 4,0x4e0811a1,21); ROUND4(AX,BX,CX,DX,11,0xf7537e82, 6); ROUND4(DX,AX,BX,CX, 2,0xbd3af235,10); ROUND4(CX,DX,AX,BX, 9,0x2ad7d2bb,15); ROUND4(BX,CX,DX,AX, 0,0xeb86d391,21); ADDL 0(SP), AX ADDL 4(SP), BX ADDL 8(SP), CX ADDL 12(SP), DX ADDL $64, SI CMPL SI, 16(SP) JB loop end: MOVL dig+0(FP), BP MOVL AX, (0*4)(BP) MOVL BX, (1*4)(BP) MOVL CX, (2*4)(BP) MOVL DX, (3*4)(BP) RET go/src/pkg/crypto/md5/md5block_amd64.s0100644000000000000000000001063112412656737017734 0ustar00rootroot00000000000000// Original source: // http://www.zorinaq.com/papers/md5-amd64.html // http://www.zorinaq.com/papers/md5-amd64.tar.bz2 // // Translated from Perl generating GNU assembly into // #defines generating 6a assembly by the Go Authors. #include "../../../cmd/ld/textflag.h" // MD5 optimized for AMD64. // // Author: Marc Bevand // Licence: I hereby disclaim the copyright on this code and place it // in the public domain. TEXT ·block(SB),NOSPLIT,$0-32 MOVQ dig+0(FP), BP MOVQ p+8(FP), SI MOVQ p_len+16(FP), DX SHRQ $6, DX SHLQ $6, DX LEAQ (SI)(DX*1), DI MOVL (0*4)(BP), AX MOVL (1*4)(BP), BX MOVL (2*4)(BP), CX MOVL (3*4)(BP), DX CMPQ SI, DI JEQ end loop: MOVL AX, R12 MOVL BX, R13 MOVL CX, R14 MOVL DX, R15 MOVL (0*4)(SI), R8 MOVL DX, R9 #define ROUND1(a, b, c, d, index, const, shift) \ XORL c, R9; \ LEAL const(a)(R8*1), a; \ ANDL b, R9; \ XORL d, R9; \ MOVL (index*4)(SI), R8; \ ADDL R9, a; \ ROLL $shift, a; \ MOVL c, R9; \ ADDL b, a ROUND1(AX,BX,CX,DX, 1,0xd76aa478, 7); ROUND1(DX,AX,BX,CX, 2,0xe8c7b756,12); ROUND1(CX,DX,AX,BX, 3,0x242070db,17); ROUND1(BX,CX,DX,AX, 4,0xc1bdceee,22); ROUND1(AX,BX,CX,DX, 5,0xf57c0faf, 7); ROUND1(DX,AX,BX,CX, 6,0x4787c62a,12); ROUND1(CX,DX,AX,BX, 7,0xa8304613,17); ROUND1(BX,CX,DX,AX, 8,0xfd469501,22); ROUND1(AX,BX,CX,DX, 9,0x698098d8, 7); ROUND1(DX,AX,BX,CX,10,0x8b44f7af,12); ROUND1(CX,DX,AX,BX,11,0xffff5bb1,17); ROUND1(BX,CX,DX,AX,12,0x895cd7be,22); ROUND1(AX,BX,CX,DX,13,0x6b901122, 7); ROUND1(DX,AX,BX,CX,14,0xfd987193,12); ROUND1(CX,DX,AX,BX,15,0xa679438e,17); ROUND1(BX,CX,DX,AX, 0,0x49b40821,22); MOVL (1*4)(SI), R8 MOVL DX, R9 MOVL DX, R10 #define ROUND2(a, b, c, d, index, const, shift) \ NOTL R9; \ LEAL const(a)(R8*1),a; \ ANDL b, R10; \ ANDL c, R9; \ MOVL (index*4)(SI),R8; \ ORL R9, R10; \ MOVL c, R9; \ ADDL R10, a; \ MOVL c, R10; \ ROLL $shift, a; \ ADDL b, a ROUND2(AX,BX,CX,DX, 6,0xf61e2562, 5); ROUND2(DX,AX,BX,CX,11,0xc040b340, 9); ROUND2(CX,DX,AX,BX, 0,0x265e5a51,14); ROUND2(BX,CX,DX,AX, 5,0xe9b6c7aa,20); ROUND2(AX,BX,CX,DX,10,0xd62f105d, 5); ROUND2(DX,AX,BX,CX,15, 0x2441453, 9); ROUND2(CX,DX,AX,BX, 4,0xd8a1e681,14); ROUND2(BX,CX,DX,AX, 9,0xe7d3fbc8,20); ROUND2(AX,BX,CX,DX,14,0x21e1cde6, 5); ROUND2(DX,AX,BX,CX, 3,0xc33707d6, 9); ROUND2(CX,DX,AX,BX, 8,0xf4d50d87,14); ROUND2(BX,CX,DX,AX,13,0x455a14ed,20); ROUND2(AX,BX,CX,DX, 2,0xa9e3e905, 5); ROUND2(DX,AX,BX,CX, 7,0xfcefa3f8, 9); ROUND2(CX,DX,AX,BX,12,0x676f02d9,14); ROUND2(BX,CX,DX,AX, 0,0x8d2a4c8a,20); MOVL (5*4)(SI), R8 MOVL CX, R9 #define ROUND3(a, b, c, d, index, const, shift) \ LEAL const(a)(R8*1),a; \ MOVL (index*4)(SI),R8; \ XORL d, R9; \ XORL b, R9; \ ADDL R9, a; \ ROLL $shift, a; \ MOVL b, R9; \ ADDL b, a ROUND3(AX,BX,CX,DX, 8,0xfffa3942, 4); ROUND3(DX,AX,BX,CX,11,0x8771f681,11); ROUND3(CX,DX,AX,BX,14,0x6d9d6122,16); ROUND3(BX,CX,DX,AX, 1,0xfde5380c,23); ROUND3(AX,BX,CX,DX, 4,0xa4beea44, 4); ROUND3(DX,AX,BX,CX, 7,0x4bdecfa9,11); ROUND3(CX,DX,AX,BX,10,0xf6bb4b60,16); ROUND3(BX,CX,DX,AX,13,0xbebfbc70,23); ROUND3(AX,BX,CX,DX, 0,0x289b7ec6, 4); ROUND3(DX,AX,BX,CX, 3,0xeaa127fa,11); ROUND3(CX,DX,AX,BX, 6,0xd4ef3085,16); ROUND3(BX,CX,DX,AX, 9, 0x4881d05,23); ROUND3(AX,BX,CX,DX,12,0xd9d4d039, 4); ROUND3(DX,AX,BX,CX,15,0xe6db99e5,11); ROUND3(CX,DX,AX,BX, 2,0x1fa27cf8,16); ROUND3(BX,CX,DX,AX, 0,0xc4ac5665,23); MOVL (0*4)(SI), R8 MOVL $0xffffffff, R9 XORL DX, R9 #define ROUND4(a, b, c, d, index, const, shift) \ LEAL const(a)(R8*1),a; \ ORL b, R9; \ XORL c, R9; \ ADDL R9, a; \ MOVL (index*4)(SI),R8; \ MOVL $0xffffffff, R9; \ ROLL $shift, a; \ XORL c, R9; \ ADDL b, a ROUND4(AX,BX,CX,DX, 7,0xf4292244, 6); ROUND4(DX,AX,BX,CX,14,0x432aff97,10); ROUND4(CX,DX,AX,BX, 5,0xab9423a7,15); ROUND4(BX,CX,DX,AX,12,0xfc93a039,21); ROUND4(AX,BX,CX,DX, 3,0x655b59c3, 6); ROUND4(DX,AX,BX,CX,10,0x8f0ccc92,10); ROUND4(CX,DX,AX,BX, 1,0xffeff47d,15); ROUND4(BX,CX,DX,AX, 8,0x85845dd1,21); ROUND4(AX,BX,CX,DX,15,0x6fa87e4f, 6); ROUND4(DX,AX,BX,CX, 6,0xfe2ce6e0,10); ROUND4(CX,DX,AX,BX,13,0xa3014314,15); ROUND4(BX,CX,DX,AX, 4,0x4e0811a1,21); ROUND4(AX,BX,CX,DX,11,0xf7537e82, 6); ROUND4(DX,AX,BX,CX, 2,0xbd3af235,10); ROUND4(CX,DX,AX,BX, 9,0x2ad7d2bb,15); ROUND4(BX,CX,DX,AX, 0,0xeb86d391,21); ADDL R12, AX ADDL R13, BX ADDL R14, CX ADDL R15, DX ADDQ $64, SI CMPQ SI, DI JB loop end: MOVL AX, (0*4)(BP) MOVL BX, (1*4)(BP) MOVL CX, (2*4)(BP) MOVL DX, (3*4)(BP) RET go/src/pkg/crypto/md5/md5block_amd64p32.s0100644000000000000000000001107612412656737020265 0ustar00rootroot00000000000000// Original source: // http://www.zorinaq.com/papers/md5-amd64.html // http://www.zorinaq.com/papers/md5-amd64.tar.bz2 // // Translated from Perl generating GNU assembly into // #defines generating 6a assembly by the Go Authors. // // Restrictions to make code safe for Native Client: // replace BP with R11, reloaded before use at return. // replace R15 with R11. #include "../../../cmd/ld/textflag.h" // MD5 optimized for AMD64. // // Author: Marc Bevand // Licence: I hereby disclaim the copyright on this code and place it // in the public domain. TEXT ·block(SB),NOSPLIT,$0-32 MOVL dig+0(FP), R11 MOVL p+4(FP), SI MOVL p_len+8(FP), DX SHRQ $6, DX SHLQ $6, DX LEAQ (SI)(DX*1), DI MOVL (0*4)(R11), AX MOVL (1*4)(R11), BX MOVL (2*4)(R11), CX MOVL (3*4)(R11), DX CMPQ SI, DI JEQ end loop: MOVL AX, R12 MOVL BX, R13 MOVL CX, R14 MOVL DX, R11 MOVL (0*4)(SI), R8 MOVL DX, R9 #define ROUND1(a, b, c, d, index, const, shift) \ XORL c, R9; \ LEAL const(a)(R8*1), a; \ ANDL b, R9; \ XORL d, R9; \ MOVL (index*4)(SI), R8; \ ADDL R9, a; \ ROLL $shift, a; \ MOVL c, R9; \ ADDL b, a ROUND1(AX,BX,CX,DX, 1,0xd76aa478, 7); ROUND1(DX,AX,BX,CX, 2,0xe8c7b756,12); ROUND1(CX,DX,AX,BX, 3,0x242070db,17); ROUND1(BX,CX,DX,AX, 4,0xc1bdceee,22); ROUND1(AX,BX,CX,DX, 5,0xf57c0faf, 7); ROUND1(DX,AX,BX,CX, 6,0x4787c62a,12); ROUND1(CX,DX,AX,BX, 7,0xa8304613,17); ROUND1(BX,CX,DX,AX, 8,0xfd469501,22); ROUND1(AX,BX,CX,DX, 9,0x698098d8, 7); ROUND1(DX,AX,BX,CX,10,0x8b44f7af,12); ROUND1(CX,DX,AX,BX,11,0xffff5bb1,17); ROUND1(BX,CX,DX,AX,12,0x895cd7be,22); ROUND1(AX,BX,CX,DX,13,0x6b901122, 7); ROUND1(DX,AX,BX,CX,14,0xfd987193,12); ROUND1(CX,DX,AX,BX,15,0xa679438e,17); ROUND1(BX,CX,DX,AX, 0,0x49b40821,22); MOVL (1*4)(SI), R8 MOVL DX, R9 MOVL DX, R10 #define ROUND2(a, b, c, d, index, const, shift) \ NOTL R9; \ LEAL const(a)(R8*1),a; \ ANDL b, R10; \ ANDL c, R9; \ MOVL (index*4)(SI),R8; \ ORL R9, R10; \ MOVL c, R9; \ ADDL R10, a; \ MOVL c, R10; \ ROLL $shift, a; \ ADDL b, a ROUND2(AX,BX,CX,DX, 6,0xf61e2562, 5); ROUND2(DX,AX,BX,CX,11,0xc040b340, 9); ROUND2(CX,DX,AX,BX, 0,0x265e5a51,14); ROUND2(BX,CX,DX,AX, 5,0xe9b6c7aa,20); ROUND2(AX,BX,CX,DX,10,0xd62f105d, 5); ROUND2(DX,AX,BX,CX,15, 0x2441453, 9); ROUND2(CX,DX,AX,BX, 4,0xd8a1e681,14); ROUND2(BX,CX,DX,AX, 9,0xe7d3fbc8,20); ROUND2(AX,BX,CX,DX,14,0x21e1cde6, 5); ROUND2(DX,AX,BX,CX, 3,0xc33707d6, 9); ROUND2(CX,DX,AX,BX, 8,0xf4d50d87,14); ROUND2(BX,CX,DX,AX,13,0x455a14ed,20); ROUND2(AX,BX,CX,DX, 2,0xa9e3e905, 5); ROUND2(DX,AX,BX,CX, 7,0xfcefa3f8, 9); ROUND2(CX,DX,AX,BX,12,0x676f02d9,14); ROUND2(BX,CX,DX,AX, 0,0x8d2a4c8a,20); MOVL (5*4)(SI), R8 MOVL CX, R9 #define ROUND3(a, b, c, d, index, const, shift) \ LEAL const(a)(R8*1),a; \ MOVL (index*4)(SI),R8; \ XORL d, R9; \ XORL b, R9; \ ADDL R9, a; \ ROLL $shift, a; \ MOVL b, R9; \ ADDL b, a ROUND3(AX,BX,CX,DX, 8,0xfffa3942, 4); ROUND3(DX,AX,BX,CX,11,0x8771f681,11); ROUND3(CX,DX,AX,BX,14,0x6d9d6122,16); ROUND3(BX,CX,DX,AX, 1,0xfde5380c,23); ROUND3(AX,BX,CX,DX, 4,0xa4beea44, 4); ROUND3(DX,AX,BX,CX, 7,0x4bdecfa9,11); ROUND3(CX,DX,AX,BX,10,0xf6bb4b60,16); ROUND3(BX,CX,DX,AX,13,0xbebfbc70,23); ROUND3(AX,BX,CX,DX, 0,0x289b7ec6, 4); ROUND3(DX,AX,BX,CX, 3,0xeaa127fa,11); ROUND3(CX,DX,AX,BX, 6,0xd4ef3085,16); ROUND3(BX,CX,DX,AX, 9, 0x4881d05,23); ROUND3(AX,BX,CX,DX,12,0xd9d4d039, 4); ROUND3(DX,AX,BX,CX,15,0xe6db99e5,11); ROUND3(CX,DX,AX,BX, 2,0x1fa27cf8,16); ROUND3(BX,CX,DX,AX, 0,0xc4ac5665,23); MOVL (0*4)(SI), R8 MOVL $0xffffffff, R9 XORL DX, R9 #define ROUND4(a, b, c, d, index, const, shift) \ LEAL const(a)(R8*1),a; \ ORL b, R9; \ XORL c, R9; \ ADDL R9, a; \ MOVL (index*4)(SI),R8; \ MOVL $0xffffffff, R9; \ ROLL $shift, a; \ XORL c, R9; \ ADDL b, a ROUND4(AX,BX,CX,DX, 7,0xf4292244, 6); ROUND4(DX,AX,BX,CX,14,0x432aff97,10); ROUND4(CX,DX,AX,BX, 5,0xab9423a7,15); ROUND4(BX,CX,DX,AX,12,0xfc93a039,21); ROUND4(AX,BX,CX,DX, 3,0x655b59c3, 6); ROUND4(DX,AX,BX,CX,10,0x8f0ccc92,10); ROUND4(CX,DX,AX,BX, 1,0xffeff47d,15); ROUND4(BX,CX,DX,AX, 8,0x85845dd1,21); ROUND4(AX,BX,CX,DX,15,0x6fa87e4f, 6); ROUND4(DX,AX,BX,CX, 6,0xfe2ce6e0,10); ROUND4(CX,DX,AX,BX,13,0xa3014314,15); ROUND4(BX,CX,DX,AX, 4,0x4e0811a1,21); ROUND4(AX,BX,CX,DX,11,0xf7537e82, 6); ROUND4(DX,AX,BX,CX, 2,0xbd3af235,10); ROUND4(CX,DX,AX,BX, 9,0x2ad7d2bb,15); ROUND4(BX,CX,DX,AX, 0,0xeb86d391,21); ADDL R12, AX ADDL R13, BX ADDL R14, CX ADDL R11, DX ADDQ $64, SI CMPQ SI, DI JB loop end: MOVL dig+0(FP), R11 MOVL AX, (0*4)(R11) MOVL BX, (1*4)(R11) MOVL CX, (2*4)(R11) MOVL DX, (3*4)(R11) RET go/src/pkg/crypto/md5/md5block_arm.s0100644000000000000000000002142112412656737017577 0ustar00rootroot00000000000000// Copyright 2013 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. // // ARM version of md5block.go #include "../../../cmd/ld/textflag.h" // Register definitions table = 0 // Pointer to MD5 constants table data = 1 // Pointer to data to hash a = 2 // MD5 accumulator b = 3 // MD5 accumulator c = 4 // MD5 accumulator d = 5 // MD5 accumulator c0 = 6 // MD5 constant c1 = 7 // MD5 constant c2 = 8 // MD5 constant // r9, r10 are forbidden // r11 is OK provided you check the assembler that no synthetic instructions use it c3 = 11 // MD5 constant t0 = 12 // temporary t1 = 14 // temporary // func block(dig *digest, p []byte) // 0(FP) is *digest // 4(FP) is p.array (struct Slice) // 8(FP) is p.len //12(FP) is p.cap // // Stack frame p_end = -4 // -4(SP) pointer to the end of data p_data = -8 // -8(SP) current data pointer buf = -8-4*16 //-72(SP) 16 words temporary buffer // 3 words at 4..12(R13) for called routine parameters TEXT ·block(SB), NOSPLIT, $84-16 MOVW p+4(FP), R(data) // pointer to the data MOVW p_len+8(FP), R(t0) // number of bytes ADD R(data), R(t0) MOVW R(t0), p_end(SP) // pointer to end of data loop: MOVW R(data), p_data(SP) // Save R(data) AND.S $3, R(data), R(t0) // TST $3, R(data) not working see issue 5921 BEQ aligned // aligned detected - skip copy // Copy the unaligned source data into the aligned temporary buffer // memove(to=4(R13), from=8(R13), n=12(R13)) - Corrupts all registers MOVW $buf(SP), R(table) // to MOVW $64, R(c0) // n MOVM.IB [R(table),R(data),R(c0)], (R13) BL runtime·memmove(SB) // Point to the local aligned copy of the data MOVW $buf(SP), R(data) aligned: // Point to the table of constants // A PC relative add would be cheaper than this MOVW $·table(SB), R(table) // Load up initial MD5 accumulator MOVW dig+0(FP), R(c0) MOVM.IA (R(c0)), [R(a),R(b),R(c),R(d)] // a += (((c^d)&b)^d) + X[index] + const // a = a<>(32-shift) + b #define ROUND1(a, b, c, d, index, shift, const) \ EOR R(c), R(d), R(t0) ; \ AND R(b), R(t0) ; \ EOR R(d), R(t0) ; \ MOVW (index<<2)(R(data)), R(t1) ; \ ADD R(t1), R(t0) ; \ ADD R(const), R(t0) ; \ ADD R(t0), R(a) ; \ ADD R(a)@>(32-shift), R(b), R(a) ; MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND1(a, b, c, d, 0, 7, c0) ROUND1(d, a, b, c, 1, 12, c1) ROUND1(c, d, a, b, 2, 17, c2) ROUND1(b, c, d, a, 3, 22, c3) MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND1(a, b, c, d, 4, 7, c0) ROUND1(d, a, b, c, 5, 12, c1) ROUND1(c, d, a, b, 6, 17, c2) ROUND1(b, c, d, a, 7, 22, c3) MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND1(a, b, c, d, 8, 7, c0) ROUND1(d, a, b, c, 9, 12, c1) ROUND1(c, d, a, b, 10, 17, c2) ROUND1(b, c, d, a, 11, 22, c3) MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND1(a, b, c, d, 12, 7, c0) ROUND1(d, a, b, c, 13, 12, c1) ROUND1(c, d, a, b, 14, 17, c2) ROUND1(b, c, d, a, 15, 22, c3) // a += (((b^c)&d)^c) + X[index] + const // a = a<>(32-shift) + b #define ROUND2(a, b, c, d, index, shift, const) \ EOR R(b), R(c), R(t0) ; \ AND R(d), R(t0) ; \ EOR R(c), R(t0) ; \ MOVW (index<<2)(R(data)), R(t1) ; \ ADD R(t1), R(t0) ; \ ADD R(const), R(t0) ; \ ADD R(t0), R(a) ; \ ADD R(a)@>(32-shift), R(b), R(a) ; MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND2(a, b, c, d, 1, 5, c0) ROUND2(d, a, b, c, 6, 9, c1) ROUND2(c, d, a, b, 11, 14, c2) ROUND2(b, c, d, a, 0, 20, c3) MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND2(a, b, c, d, 5, 5, c0) ROUND2(d, a, b, c, 10, 9, c1) ROUND2(c, d, a, b, 15, 14, c2) ROUND2(b, c, d, a, 4, 20, c3) MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND2(a, b, c, d, 9, 5, c0) ROUND2(d, a, b, c, 14, 9, c1) ROUND2(c, d, a, b, 3, 14, c2) ROUND2(b, c, d, a, 8, 20, c3) MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND2(a, b, c, d, 13, 5, c0) ROUND2(d, a, b, c, 2, 9, c1) ROUND2(c, d, a, b, 7, 14, c2) ROUND2(b, c, d, a, 12, 20, c3) // a += (b^c^d) + X[index] + const // a = a<>(32-shift) + b #define ROUND3(a, b, c, d, index, shift, const) \ EOR R(b), R(c), R(t0) ; \ EOR R(d), R(t0) ; \ MOVW (index<<2)(R(data)), R(t1) ; \ ADD R(t1), R(t0) ; \ ADD R(const), R(t0) ; \ ADD R(t0), R(a) ; \ ADD R(a)@>(32-shift), R(b), R(a) ; MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND3(a, b, c, d, 5, 4, c0) ROUND3(d, a, b, c, 8, 11, c1) ROUND3(c, d, a, b, 11, 16, c2) ROUND3(b, c, d, a, 14, 23, c3) MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND3(a, b, c, d, 1, 4, c0) ROUND3(d, a, b, c, 4, 11, c1) ROUND3(c, d, a, b, 7, 16, c2) ROUND3(b, c, d, a, 10, 23, c3) MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND3(a, b, c, d, 13, 4, c0) ROUND3(d, a, b, c, 0, 11, c1) ROUND3(c, d, a, b, 3, 16, c2) ROUND3(b, c, d, a, 6, 23, c3) MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND3(a, b, c, d, 9, 4, c0) ROUND3(d, a, b, c, 12, 11, c1) ROUND3(c, d, a, b, 15, 16, c2) ROUND3(b, c, d, a, 2, 23, c3) // a += (c^(b|^d)) + X[index] + const // a = a<>(32-shift) + b #define ROUND4(a, b, c, d, index, shift, const) \ MVN R(d), R(t0) ; \ ORR R(b), R(t0) ; \ EOR R(c), R(t0) ; \ MOVW (index<<2)(R(data)), R(t1) ; \ ADD R(t1), R(t0) ; \ ADD R(const), R(t0) ; \ ADD R(t0), R(a) ; \ ADD R(a)@>(32-shift), R(b), R(a) ; MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND4(a, b, c, d, 0, 6, c0) ROUND4(d, a, b, c, 7, 10, c1) ROUND4(c, d, a, b, 14, 15, c2) ROUND4(b, c, d, a, 5, 21, c3) MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND4(a, b, c, d, 12, 6, c0) ROUND4(d, a, b, c, 3, 10, c1) ROUND4(c, d, a, b, 10, 15, c2) ROUND4(b, c, d, a, 1, 21, c3) MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND4(a, b, c, d, 8, 6, c0) ROUND4(d, a, b, c, 15, 10, c1) ROUND4(c, d, a, b, 6, 15, c2) ROUND4(b, c, d, a, 13, 21, c3) MOVM.IA.W (R(table)), [R(c0),R(c1),R(c2),R(c3)] ROUND4(a, b, c, d, 4, 6, c0) ROUND4(d, a, b, c, 11, 10, c1) ROUND4(c, d, a, b, 2, 15, c2) ROUND4(b, c, d, a, 9, 21, c3) MOVW dig+0(FP), R(t0) MOVM.IA (R(t0)), [R(c0),R(c1),R(c2),R(c3)] ADD R(c0), R(a) ADD R(c1), R(b) ADD R(c2), R(c) ADD R(c3), R(d) MOVM.IA [R(a),R(b),R(c),R(d)], (R(t0)) MOVW p_data(SP), R(data) MOVW p_end(SP), R(t0) ADD $64, R(data) CMP R(t0), R(data) BLO loop RET // MD5 constants table // Round 1 DATA ·table+0x00(SB)/4, $0xd76aa478 DATA ·table+0x04(SB)/4, $0xe8c7b756 DATA ·table+0x08(SB)/4, $0x242070db DATA ·table+0x0c(SB)/4, $0xc1bdceee DATA ·table+0x10(SB)/4, $0xf57c0faf DATA ·table+0x14(SB)/4, $0x4787c62a DATA ·table+0x18(SB)/4, $0xa8304613 DATA ·table+0x1c(SB)/4, $0xfd469501 DATA ·table+0x20(SB)/4, $0x698098d8 DATA ·table+0x24(SB)/4, $0x8b44f7af DATA ·table+0x28(SB)/4, $0xffff5bb1 DATA ·table+0x2c(SB)/4, $0x895cd7be DATA ·table+0x30(SB)/4, $0x6b901122 DATA ·table+0x34(SB)/4, $0xfd987193 DATA ·table+0x38(SB)/4, $0xa679438e DATA ·table+0x3c(SB)/4, $0x49b40821 // Round 2 DATA ·table+0x40(SB)/4, $0xf61e2562 DATA ·table+0x44(SB)/4, $0xc040b340 DATA ·table+0x48(SB)/4, $0x265e5a51 DATA ·table+0x4c(SB)/4, $0xe9b6c7aa DATA ·table+0x50(SB)/4, $0xd62f105d DATA ·table+0x54(SB)/4, $0x02441453 DATA ·table+0x58(SB)/4, $0xd8a1e681 DATA ·table+0x5c(SB)/4, $0xe7d3fbc8 DATA ·table+0x60(SB)/4, $0x21e1cde6 DATA ·table+0x64(SB)/4, $0xc33707d6 DATA ·table+0x68(SB)/4, $0xf4d50d87 DATA ·table+0x6c(SB)/4, $0x455a14ed DATA ·table+0x70(SB)/4, $0xa9e3e905 DATA ·table+0x74(SB)/4, $0xfcefa3f8 DATA ·table+0x78(SB)/4, $0x676f02d9 DATA ·table+0x7c(SB)/4, $0x8d2a4c8a // Round 3 DATA ·table+0x80(SB)/4, $0xfffa3942 DATA ·table+0x84(SB)/4, $0x8771f681 DATA ·table+0x88(SB)/4, $0x6d9d6122 DATA ·table+0x8c(SB)/4, $0xfde5380c DATA ·table+0x90(SB)/4, $0xa4beea44 DATA ·table+0x94(SB)/4, $0x4bdecfa9 DATA ·table+0x98(SB)/4, $0xf6bb4b60 DATA ·table+0x9c(SB)/4, $0xbebfbc70 DATA ·table+0xa0(SB)/4, $0x289b7ec6 DATA ·table+0xa4(SB)/4, $0xeaa127fa DATA ·table+0xa8(SB)/4, $0xd4ef3085 DATA ·table+0xac(SB)/4, $0x04881d05 DATA ·table+0xb0(SB)/4, $0xd9d4d039 DATA ·table+0xb4(SB)/4, $0xe6db99e5 DATA ·table+0xb8(SB)/4, $0x1fa27cf8 DATA ·table+0xbc(SB)/4, $0xc4ac5665 // Round 4 DATA ·table+0xc0(SB)/4, $0xf4292244 DATA ·table+0xc4(SB)/4, $0x432aff97 DATA ·table+0xc8(SB)/4, $0xab9423a7 DATA ·table+0xcc(SB)/4, $0xfc93a039 DATA ·table+0xd0(SB)/4, $0x655b59c3 DATA ·table+0xd4(SB)/4, $0x8f0ccc92 DATA ·table+0xd8(SB)/4, $0xffeff47d DATA ·table+0xdc(SB)/4, $0x85845dd1 DATA ·table+0xe0(SB)/4, $0x6fa87e4f DATA ·table+0xe4(SB)/4, $0xfe2ce6e0 DATA ·table+0xe8(SB)/4, $0xa3014314 DATA ·table+0xec(SB)/4, $0x4e0811a1 DATA ·table+0xf0(SB)/4, $0xf7537e82 DATA ·table+0xf4(SB)/4, $0xbd3af235 DATA ·table+0xf8(SB)/4, $0x2ad7d2bb DATA ·table+0xfc(SB)/4, $0xeb86d391 // Global definition GLOBL ·table(SB),8,$256 go/src/pkg/crypto/md5/md5block_decl.go0100644000000000000000000000040112412656737020065 0ustar00rootroot00000000000000// Copyright 2013 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 amd64 amd64p32 386 arm package md5 //go:noescape func block(dig *digest, p []byte) go/src/pkg/crypto/md5/md5block_generic.go0100644000000000000000000000035412412656737020601 0ustar00rootroot00000000000000// 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 !amd64,!amd64p32,!386,!arm package md5 var block = blockGeneric go/src/pkg/crypto/rand0040755000000000000000000000000012412656737015237 5ustar00rootroot00000000000000go/src/pkg/crypto/rand/example_test.go0100644000000000000000000000115612412656737020337 0ustar00rootroot00000000000000// Copyright 2011 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 rand_test import ( "bytes" "crypto/rand" "fmt" ) // This example reads 10 cryptographically secure pseudorandom numbers from // rand.Reader and writes them to a byte slice. func ExampleRead() { c := 10 b := make([]byte, c) _, err := rand.Read(b) if err != nil { fmt.Println("error:", err) return } // The slice should now contain random bytes instead of only zeroes. fmt.Println(bytes.Equal(b, make([]byte, c))) // Output: // false } go/src/pkg/crypto/rand/rand.go0100644000000000000000000000130512412656737016565 0ustar00rootroot00000000000000// 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. // Package rand implements a cryptographically secure // pseudorandom number generator. package rand import "io" // Reader is a global, shared instance of a cryptographically // strong pseudo-random generator. // On Unix-like systems, Reader reads from /dev/urandom. // On Windows systems, Reader uses the CryptGenRandom API. var Reader io.Reader // Read is a helper function that calls Reader.Read using io.ReadFull. // On return, n == len(b) if and only if err == nil. func Read(b []byte) (n int, err error) { return io.ReadFull(Reader, b) } go/src/pkg/crypto/rand/rand_test.go0100644000000000000000000000154612412656737017633 0ustar00rootroot00000000000000// 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. package rand import ( "bytes" "compress/flate" "io" "testing" ) func TestRead(t *testing.T) { var n int = 4e6 if testing.Short() { n = 1e5 } b := make([]byte, n) n, err := io.ReadFull(Reader, b) if n != len(b) || err != nil { t.Fatalf("ReadFull(buf) = %d, %s", n, err) } var z bytes.Buffer f, _ := flate.NewWriter(&z, 5) f.Write(b) f.Close() if z.Len() < len(b)*99/100 { t.Fatalf("Compressed %d -> %d", len(b), z.Len()) } } func TestReadEmpty(t *testing.T) { n, err := Reader.Read(make([]byte, 0)) if n != 0 || err != nil { t.Fatalf("Read(make([]byte, 0)) = %d, %v", n, err) } n, err = Reader.Read(nil) if n != 0 || err != nil { t.Fatalf("Read(nil) = %d, %v", n, err) } } go/src/pkg/crypto/rand/rand_unix.go0100644000000000000000000000631612412656737017637 0ustar00rootroot00000000000000// 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. // +build darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris // Unix cryptographically secure pseudorandom number // generator. package rand import ( "bufio" "crypto/aes" "crypto/cipher" "io" "os" "runtime" "sync" "time" ) // Easy implementation: read from /dev/urandom. // This is sufficient on Linux, OS X, and FreeBSD. func init() { if runtime.GOOS == "plan9" { Reader = newReader(nil) } else { Reader = &devReader{name: "/dev/urandom"} } } // A devReader satisfies reads by reading the file named name. type devReader struct { name string f io.Reader mu sync.Mutex } func (r *devReader) Read(b []byte) (n int, err error) { r.mu.Lock() defer r.mu.Unlock() if r.f == nil { f, err := os.Open(r.name) if f == nil { return 0, err } if runtime.GOOS == "plan9" { r.f = f } else { r.f = bufio.NewReader(f) } } return r.f.Read(b) } // Alternate pseudo-random implementation for use on // systems without a reliable /dev/urandom. // newReader returns a new pseudorandom generator that // seeds itself by reading from entropy. If entropy == nil, // the generator seeds itself by reading from the system's // random number generator, typically /dev/random. // The Read method on the returned reader always returns // the full amount asked for, or else it returns an error. // // The generator uses the X9.31 algorithm with AES-128, // reseeding after every 1 MB of generated data. func newReader(entropy io.Reader) io.Reader { if entropy == nil { entropy = &devReader{name: "/dev/random"} } return &reader{entropy: entropy} } type reader struct { mu sync.Mutex budget int // number of bytes that can be generated cipher cipher.Block entropy io.Reader time, seed, dst, key [aes.BlockSize]byte } func (r *reader) Read(b []byte) (n int, err error) { r.mu.Lock() defer r.mu.Unlock() n = len(b) for len(b) > 0 { if r.budget == 0 { _, err := io.ReadFull(r.entropy, r.seed[0:]) if err != nil { return n - len(b), err } _, err = io.ReadFull(r.entropy, r.key[0:]) if err != nil { return n - len(b), err } r.cipher, err = aes.NewCipher(r.key[0:]) if err != nil { return n - len(b), err } r.budget = 1 << 20 // reseed after generating 1MB } r.budget -= aes.BlockSize // ANSI X9.31 (== X9.17) algorithm, but using AES in place of 3DES. // // single block: // t = encrypt(time) // dst = encrypt(t^seed) // seed = encrypt(t^dst) ns := time.Now().UnixNano() r.time[0] = byte(ns >> 56) r.time[1] = byte(ns >> 48) r.time[2] = byte(ns >> 40) r.time[3] = byte(ns >> 32) r.time[4] = byte(ns >> 24) r.time[5] = byte(ns >> 16) r.time[6] = byte(ns >> 8) r.time[7] = byte(ns) r.cipher.Encrypt(r.time[0:], r.time[0:]) for i := 0; i < aes.BlockSize; i++ { r.dst[i] = r.time[i] ^ r.seed[i] } r.cipher.Encrypt(r.dst[0:], r.dst[0:]) for i := 0; i < aes.BlockSize; i++ { r.seed[i] = r.time[i] ^ r.dst[i] } r.cipher.Encrypt(r.seed[0:], r.seed[0:]) m := copy(b, r.dst[0:]) b = b[m:] } return n, nil } go/src/pkg/crypto/rand/rand_windows.go0100644000000000000000000000210612412656737020337 0ustar00rootroot00000000000000// 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. // Windows cryptographically secure pseudorandom number // generator. package rand import ( "os" "sync" "syscall" ) // Implemented by using Windows CryptoAPI 2.0. func init() { Reader = &rngReader{} } // A rngReader satisfies reads by reading from the Windows CryptGenRandom API. type rngReader struct { prov syscall.Handle mu sync.Mutex } func (r *rngReader) Read(b []byte) (n int, err error) { r.mu.Lock() if r.prov == 0 { const provType = syscall.PROV_RSA_FULL const flags = syscall.CRYPT_VERIFYCONTEXT | syscall.CRYPT_SILENT err := syscall.CryptAcquireContext(&r.prov, nil, nil, provType, flags) if err != nil { r.mu.Unlock() return 0, os.NewSyscallError("CryptAcquireContext", err) } } r.mu.Unlock() if len(b) == 0 { return 0, nil } err = syscall.CryptGenRandom(r.prov, uint32(len(b)), &b[0]) if err != nil { return 0, os.NewSyscallError("CryptGenRandom", err) } return len(b), nil } go/src/pkg/crypto/rand/util.go0100644000000000000000000000714212412656737016623 0ustar00rootroot00000000000000// Copyright 2011 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 rand import ( "errors" "io" "math/big" ) // smallPrimes is a list of small, prime numbers that allows us to rapidly // exclude some fraction of composite candidates when searching for a random // prime. This list is truncated at the point where smallPrimesProduct exceeds // a uint64. It does not include two because we ensure that the candidates are // odd by construction. var smallPrimes = []uint8{ 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, } // smallPrimesProduct is the product of the values in smallPrimes and allows us // to reduce a candidate prime by this number and then determine whether it's // coprime to all the elements of smallPrimes without further big.Int // operations. var smallPrimesProduct = new(big.Int).SetUint64(16294579238595022365) // Prime returns a number, p, of the given size, such that p is prime // with high probability. // Prime will return error for any error returned by rand.Read or if bits < 2. func Prime(rand io.Reader, bits int) (p *big.Int, err error) { if bits < 2 { err = errors.New("crypto/rand: prime size must be at least 2-bit") return } b := uint(bits % 8) if b == 0 { b = 8 } bytes := make([]byte, (bits+7)/8) p = new(big.Int) bigMod := new(big.Int) for { _, err = io.ReadFull(rand, bytes) if err != nil { return nil, err } // Clear bits in the first byte to make sure the candidate has a size <= bits. bytes[0] &= uint8(int(1<= 2 { bytes[0] |= 3 << (b - 2) } else { // Here b==1, because b cannot be zero. bytes[0] |= 1 if len(bytes) > 1 { bytes[1] |= 0x80 } } // Make the value odd since an even number this large certainly isn't prime. bytes[len(bytes)-1] |= 1 p.SetBytes(bytes) // Calculate the value mod the product of smallPrimes. If it's // a multiple of any of these primes we add two until it isn't. // The probability of overflowing is minimal and can be ignored // because we still perform Miller-Rabin tests on the result. bigMod.Mod(p, smallPrimesProduct) mod := bigMod.Uint64() NextDelta: for delta := uint64(0); delta < 1<<20; delta += 2 { m := mod + delta for _, prime := range smallPrimes { if m%uint64(prime) == 0 && (bits > 6 || m != uint64(prime)) { continue NextDelta } } if delta > 0 { bigMod.SetUint64(delta) p.Add(p, bigMod) } break } // There is a tiny possibility that, by adding delta, we caused // the number to be one bit too long. Thus we check BitLen // here. if p.ProbablyPrime(20) && p.BitLen() == bits { return } } } // Int returns a uniform random value in [0, max). It panics if max <= 0. func Int(rand io.Reader, max *big.Int) (n *big.Int, err error) { if max.Sign() <= 0 { panic("crypto/rand: argument to Int is <= 0") } k := (max.BitLen() + 7) / 8 // b is the number of bits in the most significant byte of max. b := uint(max.BitLen() % 8) if b == 0 { b = 8 } bytes := make([]byte, k) n = new(big.Int) for { _, err = io.ReadFull(rand, bytes) if err != nil { return nil, err } // Clear bits in the first byte to increase the probability // that the candidate is < max. bytes[0] &= uint8(int(1< 256 { return nil, KeySizeError(k) } var c Cipher for i := 0; i < 256; i++ { c.s[i] = uint32(i) } var j uint8 = 0 for i := 0; i < 256; i++ { j += uint8(c.s[i]) + key[i%k] c.s[i], c.s[j] = c.s[j], c.s[i] } return &c, nil } // Reset zeros the key data so that it will no longer appear in the // process's memory. func (c *Cipher) Reset() { for i := range c.s { c.s[i] = 0 } c.i, c.j = 0, 0 } // xorKeyStreamGeneric sets dst to the result of XORing src with the // key stream. Dst and src may be the same slice but otherwise should // not overlap. // // This is the pure Go version. rc4_{amd64,386,arm}* contain assembly // implementations. This is here for tests and to prevent bitrot. func (c *Cipher) xorKeyStreamGeneric(dst, src []byte) { i, j := c.i, c.j for k, v := range src { i += 1 j += uint8(c.s[i]) c.s[i], c.s[j] = c.s[j], c.s[i] dst[k] = v ^ uint8(c.s[uint8(c.s[i]+c.s[j])]) } c.i, c.j = i, j } go/src/pkg/crypto/rc4/rc4_386.s0100644000000000000000000000164512412656737016341 0ustar00rootroot00000000000000// Copyright 2013 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. #include "../../../cmd/ld/textflag.h" // func xorKeyStream(dst, src *byte, n int, state *[256]byte, i, j *uint8) TEXT ·xorKeyStream(SB),NOSPLIT,$0 MOVL dst+0(FP), DI MOVL src+4(FP), SI MOVL state+12(FP), BP MOVL i+16(FP), AX MOVBLZX (AX), AX MOVL j+20(FP), BX MOVBLZX (BX), BX CMPL n+8(FP), $0 JEQ done loop: // i += 1 INCB AX // j += c.s[i] MOVBLZX (BP)(AX*4), DX ADDB DX, BX MOVBLZX BX, BX // c.s[i], c.s[j] = c.s[j], c.s[i] MOVBLZX (BP)(BX*4), CX MOVB CX, (BP)(AX*4) MOVB DX, (BP)(BX*4) // *dst = *src ^ c.s[c.s[i]+c.s[j]] ADDB DX, CX MOVBLZX CX, CX MOVB (BP)(CX*4), CX XORB (SI), CX MOVBLZX CX, CX MOVB CX, (DI) INCL SI INCL DI DECL n+8(FP) JNE loop done: MOVL i+16(FP), CX MOVB AX, (CX) MOVL j+20(FP), CX MOVB BX, (CX) RET go/src/pkg/crypto/rc4/rc4_amd64.s0100644000000000000000000001155612412656737016736 0ustar00rootroot00000000000000// Original source: // http://www.zorinaq.com/papers/rc4-amd64.html // http://www.zorinaq.com/papers/rc4-amd64.tar.bz2 #include "../../../cmd/ld/textflag.h" // Local modifications: // // Transliterated from GNU to 6a assembly syntax by the Go authors. // The comments and spacing are from the original. // // The new EXTEND macros avoid a bad stall on some systems after 8-bit math. // // The original code accumulated 64 bits of key stream in an integer // register and then XOR'ed the key stream into the data 8 bytes at a time. // Modified to accumulate 128 bits of key stream into an XMM register // and then XOR the key stream into the data 16 bytes at a time. // Approximately doubles throughput. // NOTE: Changing EXTEND to a no-op makes the code run 1.2x faster on Core i5 // but makes the code run 2.0x slower on Xeon. #define EXTEND(r) MOVBLZX r, r /* ** RC4 implementation optimized for AMD64. ** ** Author: Marc Bevand ** Licence: I hereby disclaim the copyright on this code and place it ** in the public domain. ** ** The code has been designed to be easily integrated into openssl: ** the exported RC4() function can replace the actual implementations ** openssl already contains. Please note that when linking with openssl, ** it requires that sizeof(RC4_INT) == 8. So openssl must be compiled ** with -DRC4_INT='unsigned long'. ** ** The throughput achieved by this code is about 320 MBytes/sec, on ** a 1.8 GHz AMD Opteron (rev C0) processor. */ TEXT ·xorKeyStream(SB),NOSPLIT,$0 MOVQ n+16(FP), BX // rbx = ARG(len) MOVQ src+8(FP), SI // in = ARG(in) MOVQ dst+0(FP), DI // out = ARG(out) MOVQ state+24(FP), BP // d = ARG(data) MOVQ i+32(FP), AX MOVBQZX 0(AX), CX // x = *xp MOVQ j+40(FP), AX MOVBQZX 0(AX), DX // y = *yp LEAQ (SI)(BX*1), R9 // limit = in+len l1: CMPQ SI, R9 // cmp in with in+len JGE finished // jump if (in >= in+len) INCB CX EXTEND(CX) TESTL $15, CX JZ wordloop MOVBLZX (BP)(CX*4), AX ADDB AX, DX // y += tx EXTEND(DX) MOVBLZX (BP)(DX*4), BX // ty = d[y] MOVB BX, (BP)(CX*4) // d[x] = ty ADDB AX, BX // val = ty+tx EXTEND(BX) MOVB AX, (BP)(DX*4) // d[y] = tx MOVBLZX (BP)(BX*4), R8 // val = d[val] XORB (SI), R8 // xor 1 byte MOVB R8, (DI) INCQ SI // in++ INCQ DI // out++ JMP l1 wordloop: SUBQ $16, R9 CMPQ SI, R9 JGT end start: ADDQ $16, SI // increment in ADDQ $16, DI // increment out // Each KEYROUND generates one byte of key and // inserts it into an XMM register at the given 16-bit index. // The key state array is uint32 words only using the bottom // byte of each word, so the 16-bit OR only copies 8 useful bits. // We accumulate alternating bytes into X0 and X1, and then at // the end we OR X1<<8 into X0 to produce the actual key. // // At the beginning of the loop, CX%16 == 0, so the 16 loads // at state[CX], state[CX+1], ..., state[CX+15] can precompute // (state+CX) as R12 and then become R12[0], R12[1], ... R12[15], // without fear of the byte computation CX+15 wrapping around. // // The first round needs R12[0], the second needs R12[1], and so on. // We can avoid memory stalls by starting the load for round n+1 // before the end of round n, using the LOAD macro. LEAQ (BP)(CX*4), R12 #define KEYROUND(xmm, load, off, r1, r2, index) \ MOVBLZX (BP)(DX*4), R8; \ MOVB r1, (BP)(DX*4); \ load((off+1), r2); \ MOVB R8, (off*4)(R12); \ ADDB r1, R8; \ EXTEND(R8); \ PINSRW $index, (BP)(R8*4), xmm #define LOAD(off, reg) \ MOVBLZX (off*4)(R12), reg; \ ADDB reg, DX; \ EXTEND(DX) #define SKIP(off, reg) LOAD(0, AX) KEYROUND(X0, LOAD, 0, AX, BX, 0) KEYROUND(X1, LOAD, 1, BX, AX, 0) KEYROUND(X0, LOAD, 2, AX, BX, 1) KEYROUND(X1, LOAD, 3, BX, AX, 1) KEYROUND(X0, LOAD, 4, AX, BX, 2) KEYROUND(X1, LOAD, 5, BX, AX, 2) KEYROUND(X0, LOAD, 6, AX, BX, 3) KEYROUND(X1, LOAD, 7, BX, AX, 3) KEYROUND(X0, LOAD, 8, AX, BX, 4) KEYROUND(X1, LOAD, 9, BX, AX, 4) KEYROUND(X0, LOAD, 10, AX, BX, 5) KEYROUND(X1, LOAD, 11, BX, AX, 5) KEYROUND(X0, LOAD, 12, AX, BX, 6) KEYROUND(X1, LOAD, 13, BX, AX, 6) KEYROUND(X0, LOAD, 14, AX, BX, 7) KEYROUND(X1, SKIP, 15, BX, AX, 7) ADDB $16, CX PSLLQ $8, X1 PXOR X1, X0 MOVOU -16(SI), X2 PXOR X0, X2 MOVOU X2, -16(DI) CMPQ SI, R9 // cmp in with in+len-16 JLE start // jump if (in <= in+len-16) end: DECB CX ADDQ $16, R9 // tmp = in+len // handle the last bytes, one by one l2: CMPQ SI, R9 // cmp in with in+len JGE finished // jump if (in >= in+len) INCB CX EXTEND(CX) MOVBLZX (BP)(CX*4), AX ADDB AX, DX // y += tx EXTEND(DX) MOVBLZX (BP)(DX*4), BX // ty = d[y] MOVB BX, (BP)(CX*4) // d[x] = ty ADDB AX, BX // val = ty+tx EXTEND(BX) MOVB AX, (BP)(DX*4) // d[y] = tx MOVBLZX (BP)(BX*4), R8 // val = d[val] XORB (SI), R8 // xor 1 byte MOVB R8, (DI) INCQ SI // in++ INCQ DI // out++ JMP l2 finished: MOVQ j+40(FP), BX MOVB DX, 0(BX) MOVQ i+32(FP), AX MOVB CX, 0(AX) RET go/src/pkg/crypto/rc4/rc4_amd64p32.s0100644000000000000000000001215312412656737017255 0ustar00rootroot00000000000000// Original source: // http://www.zorinaq.com/papers/rc4-amd64.html // http://www.zorinaq.com/papers/rc4-amd64.tar.bz2 #include "../../../cmd/ld/textflag.h" // Local modifications: // // Transliterated from GNU to 6a assembly syntax by the Go authors. // The comments and spacing are from the original. // // The new EXTEND macros avoid a bad stall on some systems after 8-bit math. // // The original code accumulated 64 bits of key stream in an integer // register and then XOR'ed the key stream into the data 8 bytes at a time. // Modified to accumulate 128 bits of key stream into an XMM register // and then XOR the key stream into the data 16 bytes at a time. // Approximately doubles throughput. // // Converted to amd64p32. // // To make safe for Native Client, avoid use of BP, R15, // and two-register addressing modes. // NOTE: Changing EXTEND to a no-op makes the code run 1.2x faster on Core i5 // but makes the code run 2.0x slower on Xeon. #define EXTEND(r) MOVBLZX r, r /* ** RC4 implementation optimized for AMD64. ** ** Author: Marc Bevand ** Licence: I hereby disclaim the copyright on this code and place it ** in the public domain. ** ** The code has been designed to be easily integrated into openssl: ** the exported RC4() function can replace the actual implementations ** openssl already contains. Please note that when linking with openssl, ** it requires that sizeof(RC4_INT) == 8. So openssl must be compiled ** with -DRC4_INT='unsigned long'. ** ** The throughput achieved by this code is about 320 MBytes/sec, on ** a 1.8 GHz AMD Opteron (rev C0) processor. */ TEXT ·xorKeyStream(SB),NOSPLIT,$0 MOVL n+8(FP), BX // rbx = ARG(len) MOVL src+4(FP), SI // in = ARG(in) MOVL dst+0(FP), DI // out = ARG(out) MOVL state+12(FP), R10 // d = ARG(data) MOVL i+16(FP), AX MOVBQZX 0(AX), CX // x = *xp MOVL j+20(FP), AX MOVBQZX 0(AX), DX // y = *yp LEAQ (SI)(BX*1), R9 // limit = in+len l1: CMPQ SI, R9 // cmp in with in+len JGE finished // jump if (in >= in+len) INCB CX EXTEND(CX) TESTL $15, CX JZ wordloop LEAL (R10)(CX*4), R12 MOVBLZX (R12), AX ADDB AX, DX // y += tx EXTEND(DX) LEAL (R10)(DX*4), R11 MOVBLZX (R11), BX // ty = d[y] MOVB BX, (R12) // d[x] = ty ADDB AX, BX // val = ty+tx EXTEND(BX) LEAL (R10)(BX*4), R13 MOVB AX, (R11) // d[y] = tx MOVBLZX (R13), R8 // val = d[val] XORB (SI), R8 // xor 1 byte MOVB R8, (DI) INCQ SI // in++ INCQ DI // out++ JMP l1 wordloop: SUBQ $16, R9 CMPQ SI, R9 JGT end start: ADDQ $16, SI // increment in ADDQ $16, DI // increment out // Each KEYROUND generates one byte of key and // inserts it into an XMM register at the given 16-bit index. // The key state array is uint32 words only using the bottom // byte of each word, so the 16-bit OR only copies 8 useful bits. // We accumulate alternating bytes into X0 and X1, and then at // the end we OR X1<<8 into X0 to produce the actual key. // // At the beginning of the loop, CX%16 == 0, so the 16 loads // at state[CX], state[CX+1], ..., state[CX+15] can precompute // (state+CX) as R12 and then become R12[0], R12[1], ... R12[15], // without fear of the byte computation CX+15 wrapping around. // // The first round needs R12[0], the second needs R12[1], and so on. // We can avoid memory stalls by starting the load for round n+1 // before the end of round n, using the LOAD macro. LEAQ (R10)(CX*4), R12 #define KEYROUND(xmm, load, off, r1, r2, index) \ LEAL (R10)(DX*4), R11; \ MOVBLZX (R11), R8; \ MOVB r1, (R11); \ load((off+1), r2); \ MOVB R8, (off*4)(R12); \ ADDB r1, R8; \ EXTEND(R8); \ LEAL (R10)(R8*4), R14; \ PINSRW $index, (R14), xmm #define LOAD(off, reg) \ MOVBLZX (off*4)(R12), reg; \ ADDB reg, DX; \ EXTEND(DX) #define SKIP(off, reg) LOAD(0, AX) KEYROUND(X0, LOAD, 0, AX, BX, 0) KEYROUND(X1, LOAD, 1, BX, AX, 0) KEYROUND(X0, LOAD, 2, AX, BX, 1) KEYROUND(X1, LOAD, 3, BX, AX, 1) KEYROUND(X0, LOAD, 4, AX, BX, 2) KEYROUND(X1, LOAD, 5, BX, AX, 2) KEYROUND(X0, LOAD, 6, AX, BX, 3) KEYROUND(X1, LOAD, 7, BX, AX, 3) KEYROUND(X0, LOAD, 8, AX, BX, 4) KEYROUND(X1, LOAD, 9, BX, AX, 4) KEYROUND(X0, LOAD, 10, AX, BX, 5) KEYROUND(X1, LOAD, 11, BX, AX, 5) KEYROUND(X0, LOAD, 12, AX, BX, 6) KEYROUND(X1, LOAD, 13, BX, AX, 6) KEYROUND(X0, LOAD, 14, AX, BX, 7) KEYROUND(X1, SKIP, 15, BX, AX, 7) ADDB $16, CX PSLLQ $8, X1 PXOR X1, X0 MOVOU -16(SI), X2 PXOR X0, X2 MOVOU X2, -16(DI) CMPQ SI, R9 // cmp in with in+len-16 JLE start // jump if (in <= in+len-16) end: DECB CX ADDQ $16, R9 // tmp = in+len // handle the last bytes, one by one l2: CMPQ SI, R9 // cmp in with in+len JGE finished // jump if (in >= in+len) INCB CX EXTEND(CX) LEAL (R10)(CX*4), R12 MOVBLZX (R12), AX ADDB AX, DX // y += tx EXTEND(DX) LEAL (R10)(DX*4), R11 MOVBLZX (R11), BX // ty = d[y] MOVB BX, (R12) // d[x] = ty ADDB AX, BX // val = ty+tx EXTEND(BX) LEAL (R10)(BX*4), R13 MOVB AX, (R11) // d[y] = tx MOVBLZX (R13), R8 // val = d[val] XORB (SI), R8 // xor 1 byte MOVB R8, (DI) INCQ SI // in++ INCQ DI // out++ JMP l2 finished: MOVL j+20(FP), BX MOVB DX, 0(BX) MOVL i+16(FP), AX MOVB CX, 0(AX) RET go/src/pkg/crypto/rc4/rc4_arm.s0100644000000000000000000000213512412656737016573 0ustar00rootroot00000000000000// Copyright 2013 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. #include "../../../cmd/ld/textflag.h" // Registers dst = 0 src = 1 n = 2 state = 3 pi = 4 pj = 5 i = 6 j = 7 k = 8 t = 11 t2 = 12 // func xorKeyStream(dst, src *byte, n int, state *[256]byte, i, j *uint8) TEXT ·xorKeyStream(SB),NOSPLIT,$0 MOVW 0(FP), R(dst) MOVW 4(FP), R(src) MOVW 8(FP), R(n) MOVW 12(FP), R(state) MOVW 16(FP), R(pi) MOVW 20(FP), R(pj) MOVBU (R(pi)), R(i) MOVBU (R(pj)), R(j) MOVW $0, R(k) loop: // i += 1; j += state[i] ADD $1, R(i) AND $0xff, R(i) MOVBU R(i)<<2(R(state)), R(t) ADD R(t), R(j) AND $0xff, R(j) // swap state[i] <-> state[j] MOVBU R(j)<<2(R(state)), R(t2) MOVB R(t2), R(i)<<2(R(state)) MOVB R(t), R(j)<<2(R(state)) // dst[k] = src[k] ^ state[state[i] + state[j]] ADD R(t2), R(t) AND $0xff, R(t) MOVBU R(t)<<2(R(state)), R(t) MOVBU R(k)<<0(R(src)), R(t2) EOR R(t), R(t2) MOVB R(t2), R(k)<<0(R(dst)) ADD $1, R(k) CMP R(k), R(n) BNE loop done: MOVB R(i), (R(pi)) MOVB R(j), (R(pj)) RET go/src/pkg/crypto/rc4/rc4_asm.go0100644000000000000000000000107212412656737016736 0ustar00rootroot00000000000000// Copyright 2013 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 amd64 amd64p32 arm 386 package rc4 func xorKeyStream(dst, src *byte, n int, state *[256]uint32, i, j *uint8) // XORKeyStream sets dst to the result of XORing src with the key stream. // Dst and src may be the same slice but otherwise should not overlap. func (c *Cipher) XORKeyStream(dst, src []byte) { if len(src) == 0 { return } xorKeyStream(&dst[0], &src[0], len(src), &c.s, &c.i, &c.j) } go/src/pkg/crypto/rc4/rc4_ref.go0100644000000000000000000000067012412656737016735 0ustar00rootroot00000000000000// Copyright 2013 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 !amd64,!amd64p32,!arm,!386 package rc4 // XORKeyStream sets dst to the result of XORing src with the key stream. // Dst and src may be the same slice but otherwise should not overlap. func (c *Cipher) XORKeyStream(dst, src []byte) { c.xorKeyStreamGeneric(dst, src) } go/src/pkg/crypto/rc4/rc4_test.go0100644000000000000000000001112512412656737017135 0ustar00rootroot00000000000000// Copyright 2009 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 rc4 import ( "bytes" "fmt" "testing" ) type rc4Test struct { key, keystream []byte } var golden = []rc4Test{ // Test vectors from the original cypherpunk posting of ARC4: // http://groups.google.com/group/sci.crypt/msg/10a300c9d21afca0?pli=1 { []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, []byte{0x74, 0x94, 0xc2, 0xe7, 0x10, 0x4b, 0x08, 0x79}, }, { []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{0xde, 0x18, 0x89, 0x41, 0xa3, 0x37, 0x5d, 0x3a}, }, { []byte{0xef, 0x01, 0x23, 0x45}, []byte{0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf, 0xbd, 0x61}, }, // Test vectors from the Wikipedia page: http://en.wikipedia.org/wiki/RC4 { []byte{0x4b, 0x65, 0x79}, []byte{0xeb, 0x9f, 0x77, 0x81, 0xb7, 0x34, 0xca, 0x72, 0xa7, 0x19}, }, { []byte{0x57, 0x69, 0x6b, 0x69}, []byte{0x60, 0x44, 0xdb, 0x6d, 0x41, 0xb7}, }, { []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, []byte{ 0xde, 0x18, 0x89, 0x41, 0xa3, 0x37, 0x5d, 0x3a, 0x8a, 0x06, 0x1e, 0x67, 0x57, 0x6e, 0x92, 0x6d, 0xc7, 0x1a, 0x7f, 0xa3, 0xf0, 0xcc, 0xeb, 0x97, 0x45, 0x2b, 0x4d, 0x32, 0x27, 0x96, 0x5f, 0x9e, 0xa8, 0xcc, 0x75, 0x07, 0x6d, 0x9f, 0xb9, 0xc5, 0x41, 0x7a, 0xa5, 0xcb, 0x30, 0xfc, 0x22, 0x19, 0x8b, 0x34, 0x98, 0x2d, 0xbb, 0x62, 0x9e, 0xc0, 0x4b, 0x4f, 0x8b, 0x05, 0xa0, 0x71, 0x08, 0x50, 0x92, 0xa0, 0xc3, 0x58, 0x4a, 0x48, 0xe4, 0xa3, 0x0a, 0x39, 0x7b, 0x8a, 0xcd, 0x1d, 0x00, 0x9e, 0xc8, 0x7d, 0x68, 0x11, 0xf2, 0x2c, 0xf4, 0x9c, 0xa3, 0xe5, 0x93, 0x54, 0xb9, 0x45, 0x15, 0x35, 0xa2, 0x18, 0x7a, 0x86, 0x42, 0x6c, 0xca, 0x7d, 0x5e, 0x82, 0x3e, 0xba, 0x00, 0x44, 0x12, 0x67, 0x12, 0x57, 0xb8, 0xd8, 0x60, 0xae, 0x4c, 0xbd, 0x4c, 0x49, 0x06, 0xbb, 0xc5, 0x35, 0xef, 0xe1, 0x58, 0x7f, 0x08, 0xdb, 0x33, 0x95, 0x5c, 0xdb, 0xcb, 0xad, 0x9b, 0x10, 0xf5, 0x3f, 0xc4, 0xe5, 0x2c, 0x59, 0x15, 0x65, 0x51, 0x84, 0x87, 0xfe, 0x08, 0x4d, 0x0e, 0x3f, 0x03, 0xde, 0xbc, 0xc9, 0xda, 0x1c, 0xe9, 0x0d, 0x08, 0x5c, 0x2d, 0x8a, 0x19, 0xd8, 0x37, 0x30, 0x86, 0x16, 0x36, 0x92, 0x14, 0x2b, 0xd8, 0xfc, 0x5d, 0x7a, 0x73, 0x49, 0x6a, 0x8e, 0x59, 0xee, 0x7e, 0xcf, 0x6b, 0x94, 0x06, 0x63, 0xf4, 0xa6, 0xbe, 0xe6, 0x5b, 0xd2, 0xc8, 0x5c, 0x46, 0x98, 0x6c, 0x1b, 0xef, 0x34, 0x90, 0xd3, 0x7b, 0x38, 0xda, 0x85, 0xd3, 0x2e, 0x97, 0x39, 0xcb, 0x23, 0x4a, 0x2b, 0xe7, 0x40, }, }, } func testEncrypt(t *testing.T, desc string, c *Cipher, src, expect []byte) { dst := make([]byte, len(src)) c.XORKeyStream(dst, src) for i, v := range dst { if v != expect[i] { t.Fatalf("%s: mismatch at byte %d:\nhave %x\nwant %x", desc, i, dst, expect) } } } func TestGolden(t *testing.T) { for gi, g := range golden { data := make([]byte, len(g.keystream)) for i := range data { data[i] = byte(i) } expect := make([]byte, len(g.keystream)) for i := range expect { expect[i] = byte(i) ^ g.keystream[i] } for size := 1; size <= len(g.keystream); size++ { c, err := NewCipher(g.key) if err != nil { t.Fatalf("#%d: NewCipher: %v", gi, err) } off := 0 for off < len(g.keystream) { n := len(g.keystream) - off if n > size { n = size } desc := fmt.Sprintf("#%d@[%d:%d]", gi, off, off+n) testEncrypt(t, desc, c, data[off:off+n], expect[off:off+n]) off += n } } } } func TestBlock(t *testing.T) { testBlock(t, (*Cipher).XORKeyStream) } // Test the pure Go version. // Because we have assembly for amd64, 386, and arm, this prevents // bitrot of the reference implementations. func TestBlockGeneric(t *testing.T) { testBlock(t, (*Cipher).xorKeyStreamGeneric) } func testBlock(t *testing.T, xor func(c *Cipher, dst, src []byte)) { c1a, _ := NewCipher(golden[0].key) c1b, _ := NewCipher(golden[1].key) data1 := make([]byte, 1<<20) for i := range data1 { xor(c1a, data1[i:i+1], data1[i:i+1]) xor(c1b, data1[i:i+1], data1[i:i+1]) } c2a, _ := NewCipher(golden[0].key) c2b, _ := NewCipher(golden[1].key) data2 := make([]byte, 1<<20) xor(c2a, data2, data2) xor(c2b, data2, data2) if !bytes.Equal(data1, data2) { t.Fatalf("bad block") } } func benchmark(b *testing.B, size int64) { buf := make([]byte, size) c, err := NewCipher(golden[0].key) if err != nil { panic(err) } b.SetBytes(size) for i := 0; i < b.N; i++ { c.XORKeyStream(buf, buf) } } func BenchmarkRC4_128(b *testing.B) { benchmark(b, 128) } func BenchmarkRC4_1K(b *testing.B) { benchmark(b, 1024) } func BenchmarkRC4_8K(b *testing.B) { benchmark(b, 8096) } go/src/pkg/crypto/rsa0040755000000000000000000000000012412656737015100 5ustar00rootroot00000000000000go/src/pkg/crypto/rsa/pkcs1v15.go0100644000000000000000000002264612412656737017072 0ustar00rootroot00000000000000// Copyright 2009 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 rsa import ( "crypto" "crypto/subtle" "errors" "io" "math/big" ) // This file implements encryption and decryption using PKCS#1 v1.5 padding. // EncryptPKCS1v15 encrypts the given message with RSA and the padding scheme from PKCS#1 v1.5. // The message must be no longer than the length of the public modulus minus 11 bytes. // WARNING: use of this function to encrypt plaintexts other than session keys // is dangerous. Use RSA OAEP in new protocols. func EncryptPKCS1v15(rand io.Reader, pub *PublicKey, msg []byte) (out []byte, err error) { if err := checkPub(pub); err != nil { return nil, err } k := (pub.N.BitLen() + 7) / 8 if len(msg) > k-11 { err = ErrMessageTooLong return } // EM = 0x00 || 0x02 || PS || 0x00 || M em := make([]byte, k) em[1] = 2 ps, mm := em[2:len(em)-len(msg)-1], em[len(em)-len(msg):] err = nonZeroRandomBytes(ps, rand) if err != nil { return } em[len(em)-len(msg)-1] = 0 copy(mm, msg) m := new(big.Int).SetBytes(em) c := encrypt(new(big.Int), pub, m) copyWithLeftPad(em, c.Bytes()) out = em return } // DecryptPKCS1v15 decrypts a plaintext using RSA and the padding scheme from PKCS#1 v1.5. // If rand != nil, it uses RSA blinding to avoid timing side-channel attacks. func DecryptPKCS1v15(rand io.Reader, priv *PrivateKey, ciphertext []byte) (out []byte, err error) { if err := checkPub(&priv.PublicKey); err != nil { return nil, err } valid, out, index, err := decryptPKCS1v15(rand, priv, ciphertext) if err != nil { return } if valid == 0 { return nil, ErrDecryption } out = out[index:] return } // DecryptPKCS1v15SessionKey decrypts a session key using RSA and the padding scheme from PKCS#1 v1.5. // If rand != nil, it uses RSA blinding to avoid timing side-channel attacks. // It returns an error if the ciphertext is the wrong length or if the // ciphertext is greater than the public modulus. Otherwise, no error is // returned. If the padding is valid, the resulting plaintext message is copied // into key. Otherwise, key is unchanged. These alternatives occur in constant // time. It is intended that the user of this function generate a random // session key beforehand and continue the protocol with the resulting value. // This will remove any possibility that an attacker can learn any information // about the plaintext. // See ``Chosen Ciphertext Attacks Against Protocols Based on the RSA // Encryption Standard PKCS #1'', Daniel Bleichenbacher, Advances in Cryptology // (Crypto '98). func DecryptPKCS1v15SessionKey(rand io.Reader, priv *PrivateKey, ciphertext []byte, key []byte) (err error) { if err := checkPub(&priv.PublicKey); err != nil { return err } k := (priv.N.BitLen() + 7) / 8 if k-(len(key)+3+8) < 0 { return ErrDecryption } valid, em, index, err := decryptPKCS1v15(rand, priv, ciphertext) if err != nil { return } if len(em) != k { // This should be impossible because decryptPKCS1v15 always // returns the full slice. return ErrDecryption } valid &= subtle.ConstantTimeEq(int32(len(em)-index), int32(len(key))) subtle.ConstantTimeCopy(valid, key, em[len(em)-len(key):]) return } // decryptPKCS1v15 decrypts ciphertext using priv and blinds the operation if // rand is not nil. It returns one or zero in valid that indicates whether the // plaintext was correctly structured. In either case, the plaintext is // returned in em so that it may be read independently of whether it was valid // in order to maintain constant memory access patterns. If the plaintext was // valid then index contains the index of the original message in em. func decryptPKCS1v15(rand io.Reader, priv *PrivateKey, ciphertext []byte) (valid int, em []byte, index int, err error) { k := (priv.N.BitLen() + 7) / 8 if k < 11 { err = ErrDecryption return } c := new(big.Int).SetBytes(ciphertext) m, err := decrypt(rand, priv, c) if err != nil { return } em = leftPad(m.Bytes(), k) firstByteIsZero := subtle.ConstantTimeByteEq(em[0], 0) secondByteIsTwo := subtle.ConstantTimeByteEq(em[1], 2) // The remainder of the plaintext must be a string of non-zero random // octets, followed by a 0, followed by the message. // lookingForIndex: 1 iff we are still looking for the zero. // index: the offset of the first zero byte. lookingForIndex := 1 for i := 2; i < len(em); i++ { equals0 := subtle.ConstantTimeByteEq(em[i], 0) index = subtle.ConstantTimeSelect(lookingForIndex&equals0, i, index) lookingForIndex = subtle.ConstantTimeSelect(equals0, 0, lookingForIndex) } // The PS padding must be at least 8 bytes long, and it starts two // bytes into em. validPS := subtle.ConstantTimeLessOrEq(2+8, index) valid = firstByteIsZero & secondByteIsTwo & (^lookingForIndex & 1) & validPS index = subtle.ConstantTimeSelect(valid, index+1, 0) return valid, em, index, nil } // nonZeroRandomBytes fills the given slice with non-zero random octets. func nonZeroRandomBytes(s []byte, rand io.Reader) (err error) { _, err = io.ReadFull(rand, s) if err != nil { return } for i := 0; i < len(s); i++ { for s[i] == 0 { _, err = io.ReadFull(rand, s[i:i+1]) if err != nil { return } // In tests, the PRNG may return all zeros so we do // this to break the loop. s[i] ^= 0x42 } } return } // These are ASN1 DER structures: // DigestInfo ::= SEQUENCE { // digestAlgorithm AlgorithmIdentifier, // digest OCTET STRING // } // For performance, we don't use the generic ASN1 encoder. Rather, we // precompute a prefix of the digest value that makes a valid ASN1 DER string // with the correct contents. var hashPrefixes = map[crypto.Hash][]byte{ crypto.MD5: {0x30, 0x20, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x02, 0x05, 0x05, 0x00, 0x04, 0x10}, crypto.SHA1: {0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x04, 0x14}, crypto.SHA224: {0x30, 0x2d, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04, 0x05, 0x00, 0x04, 0x1c}, crypto.SHA256: {0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20}, crypto.SHA384: {0x30, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02, 0x05, 0x00, 0x04, 0x30}, crypto.SHA512: {0x30, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, 0x05, 0x00, 0x04, 0x40}, crypto.MD5SHA1: {}, // A special TLS case which doesn't use an ASN1 prefix. crypto.RIPEMD160: {0x30, 0x20, 0x30, 0x08, 0x06, 0x06, 0x28, 0xcf, 0x06, 0x03, 0x00, 0x31, 0x04, 0x14}, } // SignPKCS1v15 calculates the signature of hashed using RSASSA-PKCS1-V1_5-SIGN from RSA PKCS#1 v1.5. // Note that hashed must be the result of hashing the input message using the // given hash function. If hash is zero, hashed is signed directly. This isn't // advisable except for interoperability. func SignPKCS1v15(rand io.Reader, priv *PrivateKey, hash crypto.Hash, hashed []byte) (s []byte, err error) { hashLen, prefix, err := pkcs1v15HashInfo(hash, len(hashed)) if err != nil { return } tLen := len(prefix) + hashLen k := (priv.N.BitLen() + 7) / 8 if k < tLen+11 { return nil, ErrMessageTooLong } // EM = 0x00 || 0x01 || PS || 0x00 || T em := make([]byte, k) em[1] = 1 for i := 2; i < k-tLen-1; i++ { em[i] = 0xff } copy(em[k-tLen:k-hashLen], prefix) copy(em[k-hashLen:k], hashed) m := new(big.Int).SetBytes(em) c, err := decrypt(rand, priv, m) if err != nil { return } copyWithLeftPad(em, c.Bytes()) s = em return } // VerifyPKCS1v15 verifies an RSA PKCS#1 v1.5 signature. // hashed is the result of hashing the input message using the given hash // function and sig is the signature. A valid signature is indicated by // returning a nil error. If hash is zero then hashed is used directly. This // isn't advisable except for interoperability. func VerifyPKCS1v15(pub *PublicKey, hash crypto.Hash, hashed []byte, sig []byte) (err error) { hashLen, prefix, err := pkcs1v15HashInfo(hash, len(hashed)) if err != nil { return } tLen := len(prefix) + hashLen k := (pub.N.BitLen() + 7) / 8 if k < tLen+11 { err = ErrVerification return } c := new(big.Int).SetBytes(sig) m := encrypt(new(big.Int), pub, c) em := leftPad(m.Bytes(), k) // EM = 0x00 || 0x01 || PS || 0x00 || T ok := subtle.ConstantTimeByteEq(em[0], 0) ok &= subtle.ConstantTimeByteEq(em[1], 1) ok &= subtle.ConstantTimeCompare(em[k-hashLen:k], hashed) ok &= subtle.ConstantTimeCompare(em[k-tLen:k-hashLen], prefix) ok &= subtle.ConstantTimeByteEq(em[k-tLen-1], 0) for i := 2; i < k-tLen-1; i++ { ok &= subtle.ConstantTimeByteEq(em[i], 0xff) } if ok != 1 { return ErrVerification } return nil } func pkcs1v15HashInfo(hash crypto.Hash, inLen int) (hashLen int, prefix []byte, err error) { // Special case: crypto.Hash(0) is used to indicate that the data is // signed directly. if hash == 0 { return inLen, nil, nil } hashLen = hash.Size() if inLen != hashLen { return 0, nil, errors.New("crypto/rsa: input must be hashed message") } prefix, ok := hashPrefixes[hash] if !ok { return 0, nil, errors.New("crypto/rsa: unsupported hash function") } return } // copyWithLeftPad copies src to the end of dest, padding with zero bytes as // needed. func copyWithLeftPad(dest, src []byte) { numPaddingBytes := len(dest) - len(src) for i := 0; i < numPaddingBytes; i++ { dest[i] = 0 } copy(dest[numPaddingBytes:], src) } go/src/pkg/crypto/rsa/pkcs1v15_test.go0100644000000000000000000001706212412656737020125 0ustar00rootroot00000000000000// Copyright 2009 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 rsa import ( "bytes" "crypto" "crypto/rand" "crypto/sha1" "encoding/base64" "encoding/hex" "io" "math/big" "testing" "testing/quick" ) func decodeBase64(in string) []byte { out := make([]byte, base64.StdEncoding.DecodedLen(len(in))) n, err := base64.StdEncoding.Decode(out, []byte(in)) if err != nil { return nil } return out[0:n] } type DecryptPKCS1v15Test struct { in, out string } // These test vectors were generated with `openssl rsautl -pkcs -encrypt` var decryptPKCS1v15Tests = []DecryptPKCS1v15Test{ { "gIcUIoVkD6ATMBk/u/nlCZCCWRKdkfjCgFdo35VpRXLduiKXhNz1XupLLzTXAybEq15juc+EgY5o0DHv/nt3yg==", "x", }, { "Y7TOCSqofGhkRb+jaVRLzK8xw2cSo1IVES19utzv6hwvx+M8kFsoWQm5DzBeJCZTCVDPkTpavUuEbgp8hnUGDw==", "testing.", }, { "arReP9DJtEVyV2Dg3dDp4c/PSk1O6lxkoJ8HcFupoRorBZG+7+1fDAwT1olNddFnQMjmkb8vxwmNMoTAT/BFjQ==", "testing.\n", }, { "WtaBXIoGC54+vH0NH0CHHE+dRDOsMc/6BrfFu2lEqcKL9+uDuWaf+Xj9mrbQCjjZcpQuX733zyok/jsnqe/Ftw==", "01234567890123456789012345678901234567890123456789012", }, } func TestDecryptPKCS1v15(t *testing.T) { for i, test := range decryptPKCS1v15Tests { out, err := DecryptPKCS1v15(nil, rsaPrivateKey, decodeBase64(test.in)) if err != nil { t.Errorf("#%d error decrypting", i) } want := []byte(test.out) if !bytes.Equal(out, want) { t.Errorf("#%d got:%#v want:%#v", i, out, want) } } } func TestEncryptPKCS1v15(t *testing.T) { random := rand.Reader k := (rsaPrivateKey.N.BitLen() + 7) / 8 tryEncryptDecrypt := func(in []byte, blind bool) bool { if len(in) > k-11 { in = in[0 : k-11] } ciphertext, err := EncryptPKCS1v15(random, &rsaPrivateKey.PublicKey, in) if err != nil { t.Errorf("error encrypting: %s", err) return false } var rand io.Reader if !blind { rand = nil } else { rand = random } plaintext, err := DecryptPKCS1v15(rand, rsaPrivateKey, ciphertext) if err != nil { t.Errorf("error decrypting: %s", err) return false } if !bytes.Equal(plaintext, in) { t.Errorf("output mismatch: %#v %#v", plaintext, in) return false } return true } config := new(quick.Config) if testing.Short() { config.MaxCount = 10 } quick.Check(tryEncryptDecrypt, config) } // These test vectors were generated with `openssl rsautl -pkcs -encrypt` var decryptPKCS1v15SessionKeyTests = []DecryptPKCS1v15Test{ { "e6ukkae6Gykq0fKzYwULpZehX+UPXYzMoB5mHQUDEiclRbOTqas4Y0E6nwns1BBpdvEJcilhl5zsox/6DtGsYg==", "1234", }, { "Dtis4uk/q/LQGGqGk97P59K03hkCIVFMEFZRgVWOAAhxgYpCRG0MX2adptt92l67IqMki6iVQyyt0TtX3IdtEw==", "FAIL", }, { "LIyFyCYCptPxrvTxpol8F3M7ZivlMsf53zs0vHRAv+rDIh2YsHS69ePMoPMe3TkOMZ3NupiL3takPxIs1sK+dw==", "abcd", }, { "bafnobel46bKy76JzqU/RIVOH0uAYvzUtauKmIidKgM0sMlvobYVAVQPeUQ/oTGjbIZ1v/6Gyi5AO4DtHruGdw==", "FAIL", }, } func TestEncryptPKCS1v15SessionKey(t *testing.T) { for i, test := range decryptPKCS1v15SessionKeyTests { key := []byte("FAIL") err := DecryptPKCS1v15SessionKey(nil, rsaPrivateKey, decodeBase64(test.in), key) if err != nil { t.Errorf("#%d error decrypting", i) } want := []byte(test.out) if !bytes.Equal(key, want) { t.Errorf("#%d got:%#v want:%#v", i, key, want) } } } func TestNonZeroRandomBytes(t *testing.T) { random := rand.Reader b := make([]byte, 512) err := nonZeroRandomBytes(b, random) if err != nil { t.Errorf("returned error: %s", err) } for _, b := range b { if b == 0 { t.Errorf("Zero octet found") return } } } type signPKCS1v15Test struct { in, out string } // These vectors have been tested with // `openssl rsautl -verify -inkey pk -in signature | hexdump -C` var signPKCS1v15Tests = []signPKCS1v15Test{ {"Test.\n", "a4f3fa6ea93bcdd0c57be020c1193ecbfd6f200a3d95c409769b029578fa0e336ad9a347600e40d3ae823b8c7e6bad88cc07c1d54c3a1523cbbb6d58efc362ae"}, } func TestSignPKCS1v15(t *testing.T) { for i, test := range signPKCS1v15Tests { h := sha1.New() h.Write([]byte(test.in)) digest := h.Sum(nil) s, err := SignPKCS1v15(nil, rsaPrivateKey, crypto.SHA1, digest) if err != nil { t.Errorf("#%d %s", i, err) } expected, _ := hex.DecodeString(test.out) if !bytes.Equal(s, expected) { t.Errorf("#%d got: %x want: %x", i, s, expected) } } } func TestVerifyPKCS1v15(t *testing.T) { for i, test := range signPKCS1v15Tests { h := sha1.New() h.Write([]byte(test.in)) digest := h.Sum(nil) sig, _ := hex.DecodeString(test.out) err := VerifyPKCS1v15(&rsaPrivateKey.PublicKey, crypto.SHA1, digest, sig) if err != nil { t.Errorf("#%d %s", i, err) } } } func TestOverlongMessagePKCS1v15(t *testing.T) { ciphertext := decodeBase64("fjOVdirUzFoLlukv80dBllMLjXythIf22feqPrNo0YoIjzyzyoMFiLjAc/Y4krkeZ11XFThIrEvw\nkRiZcCq5ng==") _, err := DecryptPKCS1v15(nil, rsaPrivateKey, ciphertext) if err == nil { t.Error("RSA decrypted a message that was too long.") } } func TestUnpaddedSignature(t *testing.T) { msg := []byte("Thu Dec 19 18:06:16 EST 2013\n") // This base64 value was generated with: // % echo Thu Dec 19 18:06:16 EST 2013 > /tmp/msg // % openssl rsautl -sign -inkey key -out /tmp/sig -in /tmp/msg // // Where "key" contains the RSA private key given at the bottom of this // file. expectedSig := decodeBase64("pX4DR8azytjdQ1rtUiC040FjkepuQut5q2ZFX1pTjBrOVKNjgsCDyiJDGZTCNoh9qpXYbhl7iEym30BWWwuiZg==") sig, err := SignPKCS1v15(nil, rsaPrivateKey, crypto.Hash(0), msg) if err != nil { t.Fatalf("SignPKCS1v15 failed: %s", err) } if !bytes.Equal(sig, expectedSig) { t.Fatalf("signature is not expected value: got %x, want %x", sig, expectedSig) } if err := VerifyPKCS1v15(&rsaPrivateKey.PublicKey, crypto.Hash(0), msg, sig); err != nil { t.Fatalf("signature failed to verify: %s", err) } } func TestShortSessionKey(t *testing.T) { // This tests that attempting to decrypt a session key where the // ciphertext is too small doesn't run outside the array bounds. ciphertext, err := EncryptPKCS1v15(rand.Reader, &rsaPrivateKey.PublicKey, []byte{1}) if err != nil { t.Fatalf("Failed to encrypt short message: %s", err) } var key [32]byte if err := DecryptPKCS1v15SessionKey(nil, rsaPrivateKey, ciphertext, key[:]); err != nil { t.Fatalf("Failed to decrypt short message: %s", err) } for _, v := range key { if v != 0 { t.Fatal("key was modified when ciphertext was invalid") } } } // In order to generate new test vectors you'll need the PEM form of this key: // -----BEGIN RSA PRIVATE KEY----- // MIIBOgIBAAJBALKZD0nEffqM1ACuak0bijtqE2QrI/KLADv7l3kK3ppMyCuLKoF0 // fd7Ai2KW5ToIwzFofvJcS/STa6HA5gQenRUCAwEAAQJBAIq9amn00aS0h/CrjXqu // /ThglAXJmZhOMPVn4eiu7/ROixi9sex436MaVeMqSNf7Ex9a8fRNfWss7Sqd9eWu // RTUCIQDasvGASLqmjeffBNLTXV2A5g4t+kLVCpsEIZAycV5GswIhANEPLmax0ME/ // EO+ZJ79TJKN5yiGBRsv5yvx5UiHxajEXAiAhAol5N4EUyq6I9w1rYdhPMGpLfk7A // IU2snfRJ6Nq2CQIgFrPsWRCkV+gOYcajD17rEqmuLrdIRexpg8N1DOSXoJ8CIGlS // tAboUGBxTDq3ZroNism3DaMIbKPyYrAqhKov1h5V // -----END RSA PRIVATE KEY----- var rsaPrivateKey = &PrivateKey{ PublicKey: PublicKey{ N: fromBase10("9353930466774385905609975137998169297361893554149986716853295022578535724979677252958524466350471210367835187480748268864277464700638583474144061408845077"), E: 65537, }, D: fromBase10("7266398431328116344057699379749222532279343923819063639497049039389899328538543087657733766554155839834519529439851673014800261285757759040931985506583861"), Primes: []*big.Int{ fromBase10("98920366548084643601728869055592650835572950932266967461790948584315647051443"), fromBase10("94560208308847015747498523884063394671606671904944666360068158221458669711639"), }, } go/src/pkg/crypto/rsa/pss.go0100644000000000000000000001771112412656737016317 0ustar00rootroot00000000000000// Copyright 2013 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 rsa // This file implements the PSS signature scheme [1]. // // [1] http://www.rsa.com/rsalabs/pkcs/files/h11300-wp-pkcs-1v2-2-rsa-cryptography-standard.pdf import ( "bytes" "crypto" "errors" "hash" "io" "math/big" ) func emsaPSSEncode(mHash []byte, emBits int, salt []byte, hash hash.Hash) ([]byte, error) { // See [1], section 9.1.1 hLen := hash.Size() sLen := len(salt) emLen := (emBits + 7) / 8 // 1. If the length of M is greater than the input limitation for the // hash function (2^61 - 1 octets for SHA-1), output "message too // long" and stop. // // 2. Let mHash = Hash(M), an octet string of length hLen. if len(mHash) != hLen { return nil, errors.New("crypto/rsa: input must be hashed message") } // 3. If emLen < hLen + sLen + 2, output "encoding error" and stop. if emLen < hLen+sLen+2 { return nil, errors.New("crypto/rsa: encoding error") } em := make([]byte, emLen) db := em[:emLen-sLen-hLen-2+1+sLen] h := em[emLen-sLen-hLen-2+1+sLen : emLen-1] // 4. Generate a random octet string salt of length sLen; if sLen = 0, // then salt is the empty string. // // 5. Let // M' = (0x)00 00 00 00 00 00 00 00 || mHash || salt; // // M' is an octet string of length 8 + hLen + sLen with eight // initial zero octets. // // 6. Let H = Hash(M'), an octet string of length hLen. var prefix [8]byte hash.Write(prefix[:]) hash.Write(mHash) hash.Write(salt) h = hash.Sum(h[:0]) hash.Reset() // 7. Generate an octet string PS consisting of emLen - sLen - hLen - 2 // zero octets. The length of PS may be 0. // // 8. Let DB = PS || 0x01 || salt; DB is an octet string of length // emLen - hLen - 1. db[emLen-sLen-hLen-2] = 0x01 copy(db[emLen-sLen-hLen-1:], salt) // 9. Let dbMask = MGF(H, emLen - hLen - 1). // // 10. Let maskedDB = DB \xor dbMask. mgf1XOR(db, hash, h) // 11. Set the leftmost 8 * emLen - emBits bits of the leftmost octet in // maskedDB to zero. db[0] &= (0xFF >> uint(8*emLen-emBits)) // 12. Let EM = maskedDB || H || 0xbc. em[emLen-1] = 0xBC // 13. Output EM. return em, nil } func emsaPSSVerify(mHash, em []byte, emBits, sLen int, hash hash.Hash) error { // 1. If the length of M is greater than the input limitation for the // hash function (2^61 - 1 octets for SHA-1), output "inconsistent" // and stop. // // 2. Let mHash = Hash(M), an octet string of length hLen. hLen := hash.Size() if hLen != len(mHash) { return ErrVerification } // 3. If emLen < hLen + sLen + 2, output "inconsistent" and stop. emLen := (emBits + 7) / 8 if emLen < hLen+sLen+2 { return ErrVerification } // 4. If the rightmost octet of EM does not have hexadecimal value // 0xbc, output "inconsistent" and stop. if em[len(em)-1] != 0xBC { return ErrVerification } // 5. Let maskedDB be the leftmost emLen - hLen - 1 octets of EM, and // let H be the next hLen octets. db := em[:emLen-hLen-1] h := em[emLen-hLen-1 : len(em)-1] // 6. If the leftmost 8 * emLen - emBits bits of the leftmost octet in // maskedDB are not all equal to zero, output "inconsistent" and // stop. if em[0]&(0xFF<> uint(8*emLen-emBits)) if sLen == PSSSaltLengthAuto { FindSaltLength: for sLen = emLen - (hLen + 2); sLen >= 0; sLen-- { switch db[emLen-hLen-sLen-2] { case 1: break FindSaltLength case 0: continue default: return ErrVerification } } if sLen < 0 { return ErrVerification } } else { // 10. If the emLen - hLen - sLen - 2 leftmost octets of DB are not zero // or if the octet at position emLen - hLen - sLen - 1 (the leftmost // position is "position 1") does not have hexadecimal value 0x01, // output "inconsistent" and stop. for _, e := range db[:emLen-hLen-sLen-2] { if e != 0x00 { return ErrVerification } } if db[emLen-hLen-sLen-2] != 0x01 { return ErrVerification } } // 11. Let salt be the last sLen octets of DB. salt := db[len(db)-sLen:] // 12. Let // M' = (0x)00 00 00 00 00 00 00 00 || mHash || salt ; // M' is an octet string of length 8 + hLen + sLen with eight // initial zero octets. // // 13. Let H' = Hash(M'), an octet string of length hLen. var prefix [8]byte hash.Write(prefix[:]) hash.Write(mHash) hash.Write(salt) h0 := hash.Sum(nil) // 14. If H = H', output "consistent." Otherwise, output "inconsistent." if !bytes.Equal(h0, h) { return ErrVerification } return nil } // signPSSWithSalt calculates the signature of hashed using PSS [1] with specified salt. // Note that hashed must be the result of hashing the input message using the // given hash function. salt is a random sequence of bytes whose length will be // later used to verify the signature. func signPSSWithSalt(rand io.Reader, priv *PrivateKey, hash crypto.Hash, hashed, salt []byte) (s []byte, err error) { nBits := priv.N.BitLen() em, err := emsaPSSEncode(hashed, nBits-1, salt, hash.New()) if err != nil { return } m := new(big.Int).SetBytes(em) c, err := decrypt(rand, priv, m) if err != nil { return } s = make([]byte, (nBits+7)/8) copyWithLeftPad(s, c.Bytes()) return } const ( // PSSSaltLengthAuto causes the salt in a PSS signature to be as large // as possible when signing, and to be auto-detected when verifying. PSSSaltLengthAuto = 0 // PSSSaltLengthEqualsHash causes the salt length to equal the length // of the hash used in the signature. PSSSaltLengthEqualsHash = -1 ) // PSSOptions contains options for creating and verifying PSS signatures. type PSSOptions struct { // SaltLength controls the length of the salt used in the PSS // signature. It can either be a number of bytes, or one of the special // PSSSaltLength constants. SaltLength int } func (opts *PSSOptions) saltLength() int { if opts == nil { return PSSSaltLengthAuto } return opts.SaltLength } // SignPSS calculates the signature of hashed using RSASSA-PSS [1]. // Note that hashed must be the result of hashing the input message using the // given hash function. The opts argument may be nil, in which case sensible // defaults are used. func SignPSS(rand io.Reader, priv *PrivateKey, hash crypto.Hash, hashed []byte, opts *PSSOptions) (s []byte, err error) { saltLength := opts.saltLength() switch saltLength { case PSSSaltLengthAuto: saltLength = (priv.N.BitLen()+7)/8 - 2 - hash.Size() case PSSSaltLengthEqualsHash: saltLength = hash.Size() } salt := make([]byte, saltLength) if _, err = io.ReadFull(rand, salt); err != nil { return } return signPSSWithSalt(rand, priv, hash, hashed, salt) } // VerifyPSS verifies a PSS signature. // hashed is the result of hashing the input message using the given hash // function and sig is the signature. A valid signature is indicated by // returning a nil error. The opts argument may be nil, in which case sensible // defaults are used. func VerifyPSS(pub *PublicKey, hash crypto.Hash, hashed []byte, sig []byte, opts *PSSOptions) error { return verifyPSS(pub, hash, hashed, sig, opts.saltLength()) } // verifyPSS verifies a PSS signature with the given salt length. func verifyPSS(pub *PublicKey, hash crypto.Hash, hashed []byte, sig []byte, saltLen int) error { nBits := pub.N.BitLen() if len(sig) != (nBits+7)/8 { return ErrVerification } s := new(big.Int).SetBytes(sig) m := encrypt(new(big.Int), pub, s) emBits := nBits - 1 emLen := (emBits + 7) / 8 if emLen < len(m.Bytes()) { return ErrVerification } em := make([]byte, emLen) copyWithLeftPad(em, m.Bytes()) if saltLen == PSSSaltLengthEqualsHash { saltLen = hash.Size() } return emsaPSSVerify(hashed, em, emBits, saltLen, hash.New()) } go/src/pkg/crypto/rsa/pss_test.go0100644000000000000000000001573012412656737017355 0ustar00rootroot00000000000000// Copyright 2013 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 rsa import ( "bufio" "bytes" "compress/bzip2" "crypto" _ "crypto/md5" "crypto/rand" "crypto/sha1" _ "crypto/sha256" "encoding/hex" "math/big" "os" "strconv" "strings" "testing" ) func TestEMSAPSS(t *testing.T) { // Test vector in file pss-int.txt from: ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1-vec.zip msg := []byte{ 0x85, 0x9e, 0xef, 0x2f, 0xd7, 0x8a, 0xca, 0x00, 0x30, 0x8b, 0xdc, 0x47, 0x11, 0x93, 0xbf, 0x55, 0xbf, 0x9d, 0x78, 0xdb, 0x8f, 0x8a, 0x67, 0x2b, 0x48, 0x46, 0x34, 0xf3, 0xc9, 0xc2, 0x6e, 0x64, 0x78, 0xae, 0x10, 0x26, 0x0f, 0xe0, 0xdd, 0x8c, 0x08, 0x2e, 0x53, 0xa5, 0x29, 0x3a, 0xf2, 0x17, 0x3c, 0xd5, 0x0c, 0x6d, 0x5d, 0x35, 0x4f, 0xeb, 0xf7, 0x8b, 0x26, 0x02, 0x1c, 0x25, 0xc0, 0x27, 0x12, 0xe7, 0x8c, 0xd4, 0x69, 0x4c, 0x9f, 0x46, 0x97, 0x77, 0xe4, 0x51, 0xe7, 0xf8, 0xe9, 0xe0, 0x4c, 0xd3, 0x73, 0x9c, 0x6b, 0xbf, 0xed, 0xae, 0x48, 0x7f, 0xb5, 0x56, 0x44, 0xe9, 0xca, 0x74, 0xff, 0x77, 0xa5, 0x3c, 0xb7, 0x29, 0x80, 0x2f, 0x6e, 0xd4, 0xa5, 0xff, 0xa8, 0xba, 0x15, 0x98, 0x90, 0xfc, } salt := []byte{ 0xe3, 0xb5, 0xd5, 0xd0, 0x02, 0xc1, 0xbc, 0xe5, 0x0c, 0x2b, 0x65, 0xef, 0x88, 0xa1, 0x88, 0xd8, 0x3b, 0xce, 0x7e, 0x61, } expected := []byte{ 0x66, 0xe4, 0x67, 0x2e, 0x83, 0x6a, 0xd1, 0x21, 0xba, 0x24, 0x4b, 0xed, 0x65, 0x76, 0xb8, 0x67, 0xd9, 0xa4, 0x47, 0xc2, 0x8a, 0x6e, 0x66, 0xa5, 0xb8, 0x7d, 0xee, 0x7f, 0xbc, 0x7e, 0x65, 0xaf, 0x50, 0x57, 0xf8, 0x6f, 0xae, 0x89, 0x84, 0xd9, 0xba, 0x7f, 0x96, 0x9a, 0xd6, 0xfe, 0x02, 0xa4, 0xd7, 0x5f, 0x74, 0x45, 0xfe, 0xfd, 0xd8, 0x5b, 0x6d, 0x3a, 0x47, 0x7c, 0x28, 0xd2, 0x4b, 0xa1, 0xe3, 0x75, 0x6f, 0x79, 0x2d, 0xd1, 0xdc, 0xe8, 0xca, 0x94, 0x44, 0x0e, 0xcb, 0x52, 0x79, 0xec, 0xd3, 0x18, 0x3a, 0x31, 0x1f, 0xc8, 0x96, 0xda, 0x1c, 0xb3, 0x93, 0x11, 0xaf, 0x37, 0xea, 0x4a, 0x75, 0xe2, 0x4b, 0xdb, 0xfd, 0x5c, 0x1d, 0xa0, 0xde, 0x7c, 0xec, 0xdf, 0x1a, 0x89, 0x6f, 0x9d, 0x8b, 0xc8, 0x16, 0xd9, 0x7c, 0xd7, 0xa2, 0xc4, 0x3b, 0xad, 0x54, 0x6f, 0xbe, 0x8c, 0xfe, 0xbc, } hash := sha1.New() hash.Write(msg) hashed := hash.Sum(nil) encoded, err := emsaPSSEncode(hashed, 1023, salt, sha1.New()) if err != nil { t.Errorf("Error from emsaPSSEncode: %s\n", err) } if !bytes.Equal(encoded, expected) { t.Errorf("Bad encoding. got %x, want %x", encoded, expected) } if err = emsaPSSVerify(hashed, encoded, 1023, len(salt), sha1.New()); err != nil { t.Errorf("Bad verification: %s", err) } } // TestPSSGolden tests all the test vectors in pss-vect.txt from // ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1-vec.zip func TestPSSGolden(t *testing.T) { inFile, err := os.Open("testdata/pss-vect.txt.bz2") if err != nil { t.Fatalf("Failed to open input file: %s", err) } defer inFile.Close() // The pss-vect.txt file contains RSA keys and then a series of // signatures. A goroutine is used to preprocess the input by merging // lines, removing spaces in hex values and identifying the start of // new keys and signature blocks. const newKeyMarker = "START NEW KEY" const newSignatureMarker = "START NEW SIGNATURE" values := make(chan string) go func() { defer close(values) scanner := bufio.NewScanner(bzip2.NewReader(inFile)) var partialValue string lastWasValue := true for scanner.Scan() { line := scanner.Text() switch { case len(line) == 0: if len(partialValue) > 0 { values <- strings.Replace(partialValue, " ", "", -1) partialValue = "" lastWasValue = true } continue case strings.HasPrefix(line, "# ======") && lastWasValue: values <- newKeyMarker lastWasValue = false case strings.HasPrefix(line, "# ------") && lastWasValue: values <- newSignatureMarker lastWasValue = false case strings.HasPrefix(line, "#"): continue default: partialValue += line } } if err := scanner.Err(); err != nil { panic(err) } }() var key *PublicKey var hashed []byte hash := crypto.SHA1 h := hash.New() opts := &PSSOptions{ SaltLength: PSSSaltLengthEqualsHash, } for marker := range values { switch marker { case newKeyMarker: key = new(PublicKey) nHex, ok := <-values if !ok { continue } key.N = bigFromHex(nHex) key.E = intFromHex(<-values) // We don't care for d, p, q, dP, dQ or qInv. for i := 0; i < 6; i++ { <-values } case newSignatureMarker: msg := fromHex(<-values) <-values // skip salt sig := fromHex(<-values) h.Reset() h.Write(msg) hashed = h.Sum(hashed[:0]) if err := VerifyPSS(key, hash, hashed, sig, opts); err != nil { t.Error(err) } default: t.Fatalf("unknown marker: " + marker) } } } // TestPSSOpenSSL ensures that we can verify a PSS signature from OpenSSL with // the default options. OpenSSL sets the salt length to be maximal. func TestPSSOpenSSL(t *testing.T) { hash := crypto.SHA256 h := hash.New() h.Write([]byte("testing")) hashed := h.Sum(nil) // Generated with `echo -n testing | openssl dgst -sign key.pem -sigopt rsa_padding_mode:pss -sha256 > sig` sig := []byte{ 0x95, 0x59, 0x6f, 0xd3, 0x10, 0xa2, 0xe7, 0xa2, 0x92, 0x9d, 0x4a, 0x07, 0x2e, 0x2b, 0x27, 0xcc, 0x06, 0xc2, 0x87, 0x2c, 0x52, 0xf0, 0x4a, 0xcc, 0x05, 0x94, 0xf2, 0xc3, 0x2e, 0x20, 0xd7, 0x3e, 0x66, 0x62, 0xb5, 0x95, 0x2b, 0xa3, 0x93, 0x9a, 0x66, 0x64, 0x25, 0xe0, 0x74, 0x66, 0x8c, 0x3e, 0x92, 0xeb, 0xc6, 0xe6, 0xc0, 0x44, 0xf3, 0xb4, 0xb4, 0x2e, 0x8c, 0x66, 0x0a, 0x37, 0x9c, 0x69, } if err := VerifyPSS(&rsaPrivateKey.PublicKey, hash, hashed, sig, nil); err != nil { t.Error(err) } } func TestPSSSigning(t *testing.T) { var saltLengthCombinations = []struct { signSaltLength, verifySaltLength int good bool }{ {PSSSaltLengthAuto, PSSSaltLengthAuto, true}, {PSSSaltLengthEqualsHash, PSSSaltLengthAuto, true}, {PSSSaltLengthEqualsHash, PSSSaltLengthEqualsHash, true}, {PSSSaltLengthEqualsHash, 8, false}, {PSSSaltLengthAuto, PSSSaltLengthEqualsHash, false}, {8, 8, true}, } hash := crypto.MD5 h := hash.New() h.Write([]byte("testing")) hashed := h.Sum(nil) var opts PSSOptions for i, test := range saltLengthCombinations { opts.SaltLength = test.signSaltLength sig, err := SignPSS(rand.Reader, rsaPrivateKey, hash, hashed, &opts) if err != nil { t.Errorf("#%d: error while signing: %s", i, err) continue } opts.SaltLength = test.verifySaltLength err = VerifyPSS(&rsaPrivateKey.PublicKey, hash, hashed, sig, &opts) if (err == nil) != test.good { t.Errorf("#%d: bad result, wanted: %t, got: %s", i, test.good, err) } } } func bigFromHex(hex string) *big.Int { n, ok := new(big.Int).SetString(hex, 16) if !ok { panic("bad hex: " + hex) } return n } func intFromHex(hex string) int { i, err := strconv.ParseInt(hex, 16, 32) if err != nil { panic(err) } return int(i) } func fromHex(hexStr string) []byte { s, err := hex.DecodeString(hexStr) if err != nil { panic(err) } return s } go/src/pkg/crypto/rsa/rsa.go0100644000000000000000000003523412412656737016277 0ustar00rootroot00000000000000// Copyright 2009 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 rsa implements RSA encryption as specified in PKCS#1. package rsa import ( "crypto/rand" "crypto/subtle" "errors" "hash" "io" "math/big" ) var bigZero = big.NewInt(0) var bigOne = big.NewInt(1) // A PublicKey represents the public part of an RSA key. type PublicKey struct { N *big.Int // modulus E int // public exponent } var ( errPublicModulus = errors.New("crypto/rsa: missing public modulus") errPublicExponentSmall = errors.New("crypto/rsa: public exponent too small") errPublicExponentLarge = errors.New("crypto/rsa: public exponent too large") ) // checkPub sanity checks the public key before we use it. // We require pub.E to fit into a 32-bit integer so that we // do not have different behavior depending on whether // int is 32 or 64 bits. See also // http://www.imperialviolet.org/2012/03/16/rsae.html. func checkPub(pub *PublicKey) error { if pub.N == nil { return errPublicModulus } if pub.E < 2 { return errPublicExponentSmall } if pub.E > 1<<31-1 { return errPublicExponentLarge } return nil } // A PrivateKey represents an RSA key type PrivateKey struct { PublicKey // public part. D *big.Int // private exponent Primes []*big.Int // prime factors of N, has >= 2 elements. // Precomputed contains precomputed values that speed up private // operations, if available. Precomputed PrecomputedValues } type PrecomputedValues struct { Dp, Dq *big.Int // D mod (P-1) (or mod Q-1) Qinv *big.Int // Q^-1 mod P // CRTValues is used for the 3rd and subsequent primes. Due to a // historical accident, the CRT for the first two primes is handled // differently in PKCS#1 and interoperability is sufficiently // important that we mirror this. CRTValues []CRTValue } // CRTValue contains the precomputed chinese remainder theorem values. type CRTValue struct { Exp *big.Int // D mod (prime-1). Coeff *big.Int // R·Coeff ≡ 1 mod Prime. R *big.Int // product of primes prior to this (inc p and q). } // Validate performs basic sanity checks on the key. // It returns nil if the key is valid, or else an error describing a problem. func (priv *PrivateKey) Validate() error { if err := checkPub(&priv.PublicKey); err != nil { return err } // Check that the prime factors are actually prime. Note that this is // just a sanity check. Since the random witnesses chosen by // ProbablyPrime are deterministic, given the candidate number, it's // easy for an attack to generate composites that pass this test. for _, prime := range priv.Primes { if !prime.ProbablyPrime(20) { return errors.New("crypto/rsa: prime factor is composite") } } // Check that Πprimes == n. modulus := new(big.Int).Set(bigOne) for _, prime := range priv.Primes { modulus.Mul(modulus, prime) } if modulus.Cmp(priv.N) != 0 { return errors.New("crypto/rsa: invalid modulus") } // Check that de ≡ 1 mod p-1, for each prime. // This implies that e is coprime to each p-1 as e has a multiplicative // inverse. Therefore e is coprime to lcm(p-1,q-1,r-1,...) = // exponent(ℤ/nℤ). It also implies that a^de ≡ a mod p as a^(p-1) ≡ 1 // mod p. Thus a^de ≡ a mod n for all a coprime to n, as required. congruence := new(big.Int) de := new(big.Int).SetInt64(int64(priv.E)) de.Mul(de, priv.D) for _, prime := range priv.Primes { pminus1 := new(big.Int).Sub(prime, bigOne) congruence.Mod(de, pminus1) if congruence.Cmp(bigOne) != 0 { return errors.New("crypto/rsa: invalid exponents") } } return nil } // GenerateKey generates an RSA keypair of the given bit size using the // random source random (for example, crypto/rand.Reader). func GenerateKey(random io.Reader, bits int) (priv *PrivateKey, err error) { return GenerateMultiPrimeKey(random, 2, bits) } // GenerateMultiPrimeKey generates a multi-prime RSA keypair of the given bit // size and the given random source, as suggested in [1]. Although the public // keys are compatible (actually, indistinguishable) from the 2-prime case, // the private keys are not. Thus it may not be possible to export multi-prime // private keys in certain formats or to subsequently import them into other // code. // // Table 1 in [2] suggests maximum numbers of primes for a given size. // // [1] US patent 4405829 (1972, expired) // [2] http://www.cacr.math.uwaterloo.ca/techreports/2006/cacr2006-16.pdf func GenerateMultiPrimeKey(random io.Reader, nprimes int, bits int) (priv *PrivateKey, err error) { priv = new(PrivateKey) priv.E = 65537 if nprimes < 2 { return nil, errors.New("crypto/rsa: GenerateMultiPrimeKey: nprimes must be >= 2") } primes := make([]*big.Int, nprimes) NextSetOfPrimes: for { todo := bits // crypto/rand should set the top two bits in each prime. // Thus each prime has the form // p_i = 2^bitlen(p_i) × 0.11... (in base 2). // And the product is: // P = 2^todo × α // where α is the product of nprimes numbers of the form 0.11... // // If α < 1/2 (which can happen for nprimes > 2), we need to // shift todo to compensate for lost bits: the mean value of 0.11... // is 7/8, so todo + shift - nprimes * log2(7/8) ~= bits - 1/2 // will give good results. if nprimes >= 7 { todo += (nprimes - 2) / 5 } for i := 0; i < nprimes; i++ { primes[i], err = rand.Prime(random, todo/(nprimes-i)) if err != nil { return nil, err } todo -= primes[i].BitLen() } // Make sure that primes is pairwise unequal. for i, prime := range primes { for j := 0; j < i; j++ { if prime.Cmp(primes[j]) == 0 { continue NextSetOfPrimes } } } n := new(big.Int).Set(bigOne) totient := new(big.Int).Set(bigOne) pminus1 := new(big.Int) for _, prime := range primes { n.Mul(n, prime) pminus1.Sub(prime, bigOne) totient.Mul(totient, pminus1) } if n.BitLen() != bits { // This should never happen for nprimes == 2 because // crypto/rand should set the top two bits in each prime. // For nprimes > 2 we hope it does not happen often. continue NextSetOfPrimes } g := new(big.Int) priv.D = new(big.Int) y := new(big.Int) e := big.NewInt(int64(priv.E)) g.GCD(priv.D, y, e, totient) if g.Cmp(bigOne) == 0 { if priv.D.Sign() < 0 { priv.D.Add(priv.D, totient) } priv.Primes = primes priv.N = n break } } priv.Precompute() return } // incCounter increments a four byte, big-endian counter. func incCounter(c *[4]byte) { if c[3]++; c[3] != 0 { return } if c[2]++; c[2] != 0 { return } if c[1]++; c[1] != 0 { return } c[0]++ } // mgf1XOR XORs the bytes in out with a mask generated using the MGF1 function // specified in PKCS#1 v2.1. func mgf1XOR(out []byte, hash hash.Hash, seed []byte) { var counter [4]byte var digest []byte done := 0 for done < len(out) { hash.Write(seed) hash.Write(counter[0:4]) digest = hash.Sum(digest[:0]) hash.Reset() for i := 0; i < len(digest) && done < len(out); i++ { out[done] ^= digest[i] done++ } incCounter(&counter) } } // ErrMessageTooLong is returned when attempting to encrypt a message which is // too large for the size of the public key. var ErrMessageTooLong = errors.New("crypto/rsa: message too long for RSA public key size") func encrypt(c *big.Int, pub *PublicKey, m *big.Int) *big.Int { e := big.NewInt(int64(pub.E)) c.Exp(m, e, pub.N) return c } // EncryptOAEP encrypts the given message with RSA-OAEP. // The message must be no longer than the length of the public modulus less // twice the hash length plus 2. func EncryptOAEP(hash hash.Hash, random io.Reader, pub *PublicKey, msg []byte, label []byte) (out []byte, err error) { if err := checkPub(pub); err != nil { return nil, err } hash.Reset() k := (pub.N.BitLen() + 7) / 8 if len(msg) > k-2*hash.Size()-2 { err = ErrMessageTooLong return } hash.Write(label) lHash := hash.Sum(nil) hash.Reset() em := make([]byte, k) seed := em[1 : 1+hash.Size()] db := em[1+hash.Size():] copy(db[0:hash.Size()], lHash) db[len(db)-len(msg)-1] = 1 copy(db[len(db)-len(msg):], msg) _, err = io.ReadFull(random, seed) if err != nil { return } mgf1XOR(db, hash, seed) mgf1XOR(seed, hash, db) m := new(big.Int) m.SetBytes(em) c := encrypt(new(big.Int), pub, m) out = c.Bytes() if len(out) < k { // If the output is too small, we need to left-pad with zeros. t := make([]byte, k) copy(t[k-len(out):], out) out = t } return } // ErrDecryption represents a failure to decrypt a message. // It is deliberately vague to avoid adaptive attacks. var ErrDecryption = errors.New("crypto/rsa: decryption error") // ErrVerification represents a failure to verify a signature. // It is deliberately vague to avoid adaptive attacks. var ErrVerification = errors.New("crypto/rsa: verification error") // modInverse returns ia, the inverse of a in the multiplicative group of prime // order n. It requires that a be a member of the group (i.e. less than n). func modInverse(a, n *big.Int) (ia *big.Int, ok bool) { g := new(big.Int) x := new(big.Int) y := new(big.Int) g.GCD(x, y, a, n) if g.Cmp(bigOne) != 0 { // In this case, a and n aren't coprime and we cannot calculate // the inverse. This happens because the values of n are nearly // prime (being the product of two primes) rather than truly // prime. return } if x.Cmp(bigOne) < 0 { // 0 is not the multiplicative inverse of any element so, if x // < 1, then x is negative. x.Add(x, n) } return x, true } // Precompute performs some calculations that speed up private key operations // in the future. func (priv *PrivateKey) Precompute() { if priv.Precomputed.Dp != nil { return } priv.Precomputed.Dp = new(big.Int).Sub(priv.Primes[0], bigOne) priv.Precomputed.Dp.Mod(priv.D, priv.Precomputed.Dp) priv.Precomputed.Dq = new(big.Int).Sub(priv.Primes[1], bigOne) priv.Precomputed.Dq.Mod(priv.D, priv.Precomputed.Dq) priv.Precomputed.Qinv = new(big.Int).ModInverse(priv.Primes[1], priv.Primes[0]) r := new(big.Int).Mul(priv.Primes[0], priv.Primes[1]) priv.Precomputed.CRTValues = make([]CRTValue, len(priv.Primes)-2) for i := 2; i < len(priv.Primes); i++ { prime := priv.Primes[i] values := &priv.Precomputed.CRTValues[i-2] values.Exp = new(big.Int).Sub(prime, bigOne) values.Exp.Mod(priv.D, values.Exp) values.R = new(big.Int).Set(r) values.Coeff = new(big.Int).ModInverse(r, prime) r.Mul(r, prime) } } // decrypt performs an RSA decryption, resulting in a plaintext integer. If a // random source is given, RSA blinding is used. func decrypt(random io.Reader, priv *PrivateKey, c *big.Int) (m *big.Int, err error) { // TODO(agl): can we get away with reusing blinds? if c.Cmp(priv.N) > 0 { err = ErrDecryption return } var ir *big.Int if random != nil { // Blinding enabled. Blinding involves multiplying c by r^e. // Then the decryption operation performs (m^e * r^e)^d mod n // which equals mr mod n. The factor of r can then be removed // by multiplying by the multiplicative inverse of r. var r *big.Int for { r, err = rand.Int(random, priv.N) if err != nil { return } if r.Cmp(bigZero) == 0 { r = bigOne } var ok bool ir, ok = modInverse(r, priv.N) if ok { break } } bigE := big.NewInt(int64(priv.E)) rpowe := new(big.Int).Exp(r, bigE, priv.N) cCopy := new(big.Int).Set(c) cCopy.Mul(cCopy, rpowe) cCopy.Mod(cCopy, priv.N) c = cCopy } if priv.Precomputed.Dp == nil { m = new(big.Int).Exp(c, priv.D, priv.N) } else { // We have the precalculated values needed for the CRT. m = new(big.Int).Exp(c, priv.Precomputed.Dp, priv.Primes[0]) m2 := new(big.Int).Exp(c, priv.Precomputed.Dq, priv.Primes[1]) m.Sub(m, m2) if m.Sign() < 0 { m.Add(m, priv.Primes[0]) } m.Mul(m, priv.Precomputed.Qinv) m.Mod(m, priv.Primes[0]) m.Mul(m, priv.Primes[1]) m.Add(m, m2) for i, values := range priv.Precomputed.CRTValues { prime := priv.Primes[2+i] m2.Exp(c, values.Exp, prime) m2.Sub(m2, m) m2.Mul(m2, values.Coeff) m2.Mod(m2, prime) if m2.Sign() < 0 { m2.Add(m2, prime) } m2.Mul(m2, values.R) m.Add(m, m2) } } if ir != nil { // Unblind. m.Mul(m, ir) m.Mod(m, priv.N) } return } // DecryptOAEP decrypts ciphertext using RSA-OAEP. // If random != nil, DecryptOAEP uses RSA blinding to avoid timing side-channel attacks. func DecryptOAEP(hash hash.Hash, random io.Reader, priv *PrivateKey, ciphertext []byte, label []byte) (msg []byte, err error) { if err := checkPub(&priv.PublicKey); err != nil { return nil, err } k := (priv.N.BitLen() + 7) / 8 if len(ciphertext) > k || k < hash.Size()*2+2 { err = ErrDecryption return } c := new(big.Int).SetBytes(ciphertext) m, err := decrypt(random, priv, c) if err != nil { return } hash.Write(label) lHash := hash.Sum(nil) hash.Reset() // Converting the plaintext number to bytes will strip any // leading zeros so we may have to left pad. We do this unconditionally // to avoid leaking timing information. (Although we still probably // leak the number of leading zeros. It's not clear that we can do // anything about this.) em := leftPad(m.Bytes(), k) firstByteIsZero := subtle.ConstantTimeByteEq(em[0], 0) seed := em[1 : hash.Size()+1] db := em[hash.Size()+1:] mgf1XOR(seed, hash, db) mgf1XOR(db, hash, seed) lHash2 := db[0:hash.Size()] // We have to validate the plaintext in constant time in order to avoid // attacks like: J. Manger. A Chosen Ciphertext Attack on RSA Optimal // Asymmetric Encryption Padding (OAEP) as Standardized in PKCS #1 // v2.0. In J. Kilian, editor, Advances in Cryptology. lHash2Good := subtle.ConstantTimeCompare(lHash, lHash2) // The remainder of the plaintext must be zero or more 0x00, followed // by 0x01, followed by the message. // lookingForIndex: 1 iff we are still looking for the 0x01 // index: the offset of the first 0x01 byte // invalid: 1 iff we saw a non-zero byte before the 0x01. var lookingForIndex, index, invalid int lookingForIndex = 1 rest := db[hash.Size():] for i := 0; i < len(rest); i++ { equals0 := subtle.ConstantTimeByteEq(rest[i], 0) equals1 := subtle.ConstantTimeByteEq(rest[i], 1) index = subtle.ConstantTimeSelect(lookingForIndex&equals1, i, index) lookingForIndex = subtle.ConstantTimeSelect(equals1, 0, lookingForIndex) invalid = subtle.ConstantTimeSelect(lookingForIndex&^equals0, 1, invalid) } if firstByteIsZero&lHash2Good&^invalid&^lookingForIndex != 1 { err = ErrDecryption return } msg = rest[index+1:] return } // leftPad returns a new slice of length size. The contents of input are right // aligned in the new slice. func leftPad(input []byte, size int) (out []byte) { n := len(input) if n > size { n = size } out = make([]byte, size) copy(out[len(out)-n:], input) return } go/src/pkg/crypto/rsa/rsa_test.go0100644000000000000000000004274312412656737017341 0ustar00rootroot00000000000000// Copyright 2009 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 rsa import ( "bytes" "crypto/rand" "crypto/sha1" "math/big" "testing" ) func TestKeyGeneration(t *testing.T) { size := 1024 if testing.Short() { size = 128 } priv, err := GenerateKey(rand.Reader, size) if err != nil { t.Errorf("failed to generate key") } if bits := priv.N.BitLen(); bits != size { t.Errorf("key too short (%d vs %d)", bits, size) } testKeyBasics(t, priv) } func Test3PrimeKeyGeneration(t *testing.T) { size := 768 if testing.Short() { size = 256 } priv, err := GenerateMultiPrimeKey(rand.Reader, 3, size) if err != nil { t.Errorf("failed to generate key") } testKeyBasics(t, priv) } func Test4PrimeKeyGeneration(t *testing.T) { size := 768 if testing.Short() { size = 256 } priv, err := GenerateMultiPrimeKey(rand.Reader, 4, size) if err != nil { t.Errorf("failed to generate key") } testKeyBasics(t, priv) } func TestNPrimeKeyGeneration(t *testing.T) { primeSize := 64 maxN := 24 if testing.Short() { primeSize = 16 maxN = 16 } // Test that generation of N-prime keys works for N > 4. for n := 5; n < maxN; n++ { priv, err := GenerateMultiPrimeKey(rand.Reader, n, 64+n*primeSize) if err == nil { testKeyBasics(t, priv) } else { t.Errorf("failed to generate %d-prime key", n) } } } func TestGnuTLSKey(t *testing.T) { // This is a key generated by `certtool --generate-privkey --bits 128`. // It's such that de ≢ 1 mod φ(n), but is congruent mod the order of // the group. priv := &PrivateKey{ PublicKey: PublicKey{ N: fromBase10("290684273230919398108010081414538931343"), E: 65537, }, D: fromBase10("31877380284581499213530787347443987241"), Primes: []*big.Int{ fromBase10("16775196964030542637"), fromBase10("17328218193455850539"), }, } testKeyBasics(t, priv) } func testKeyBasics(t *testing.T, priv *PrivateKey) { if err := priv.Validate(); err != nil { t.Errorf("Validate() failed: %s", err) } if priv.D.Cmp(priv.N) > 0 { t.Errorf("private exponent too large") } pub := &priv.PublicKey m := big.NewInt(42) c := encrypt(new(big.Int), pub, m) m2, err := decrypt(nil, priv, c) if err != nil { t.Errorf("error while decrypting: %s", err) return } if m.Cmp(m2) != 0 { t.Errorf("got:%v, want:%v (%+v)", m2, m, priv) } m3, err := decrypt(rand.Reader, priv, c) if err != nil { t.Errorf("error while decrypting (blind): %s", err) } if m.Cmp(m3) != 0 { t.Errorf("(blind) got:%v, want:%v (%#v)", m3, m, priv) } } func fromBase10(base10 string) *big.Int { i, ok := new(big.Int).SetString(base10, 10) if !ok { panic("bad number: " + base10) } return i } func BenchmarkRSA2048Decrypt(b *testing.B) { b.StopTimer() priv := &PrivateKey{ PublicKey: PublicKey{ N: fromBase10("14314132931241006650998084889274020608918049032671858325988396851334124245188214251956198731333464217832226406088020736932173064754214329009979944037640912127943488972644697423190955557435910767690712778463524983667852819010259499695177313115447116110358524558307947613422897787329221478860907963827160223559690523660574329011927531289655711860504630573766609239332569210831325633840174683944553667352219670930408593321661375473885147973879086994006440025257225431977751512374815915392249179976902953721486040787792801849818254465486633791826766873076617116727073077821584676715609985777563958286637185868165868520557"), E: 3, }, D: fromBase10("9542755287494004433998723259516013739278699355114572217325597900889416163458809501304132487555642811888150937392013824621448709836142886006653296025093941418628992648429798282127303704957273845127141852309016655778568546006839666463451542076964744073572349705538631742281931858219480985907271975884773482372966847639853897890615456605598071088189838676728836833012254065983259638538107719766738032720239892094196108713378822882383694456030043492571063441943847195939549773271694647657549658603365629458610273821292232646334717612674519997533901052790334279661754176490593041941863932308687197618671528035670452762731"), Primes: []*big.Int{ fromBase10("130903255182996722426771613606077755295583329135067340152947172868415809027537376306193179624298874215608270802054347609836776473930072411958753044562214537013874103802006369634761074377213995983876788718033850153719421695468704276694983032644416930879093914927146648402139231293035971427838068945045019075433"), fromBase10("109348945610485453577574767652527472924289229538286649661240938988020367005475727988253438647560958573506159449538793540472829815903949343191091817779240101054552748665267574271163617694640513549693841337820602726596756351006149518830932261246698766355347898158548465400674856021497190430791824869615170301029"), }, } priv.Precompute() c := fromBase10("8472002792838218989464636159316973636630013835787202418124758118372358261975764365740026024610403138425986214991379012696600761514742817632790916315594342398720903716529235119816755589383377471752116975374952783629225022962092351886861518911824745188989071172097120352727368980275252089141512321893536744324822590480751098257559766328893767334861211872318961900897793874075248286439689249972315699410830094164386544311554704755110361048571142336148077772023880664786019636334369759624917224888206329520528064315309519262325023881707530002540634660750469137117568199824615333883758410040459705787022909848740188613313") b.StartTimer() for i := 0; i < b.N; i++ { decrypt(nil, priv, c) } } func Benchmark3PrimeRSA2048Decrypt(b *testing.B) { b.StopTimer() priv := &PrivateKey{ PublicKey: PublicKey{ N: fromBase10("16346378922382193400538269749936049106320265317511766357599732575277382844051791096569333808598921852351577762718529818072849191122419410612033592401403764925096136759934497687765453905884149505175426053037420486697072448609022753683683718057795566811401938833367954642951433473337066311978821180526439641496973296037000052546108507805269279414789035461158073156772151892452251106173507240488993608650881929629163465099476849643165682709047462010581308719577053905787496296934240246311806555924593059995202856826239801816771116902778517096212527979497399966526283516447337775509777558018145573127308919204297111496233"), E: 3, }, D: fromBase10("10897585948254795600358846499957366070880176878341177571733155050184921896034527397712889205732614568234385175145686545381899460748279607074689061600935843283397424506622998458510302603922766336783617368686090042765718290914099334449154829375179958369993407724946186243249568928237086215759259909861748642124071874879861299389874230489928271621259294894142840428407196932444474088857746123104978617098858619445675532587787023228852383149557470077802718705420275739737958953794088728369933811184572620857678792001136676902250566845618813972833750098806496641114644760255910789397593428910198080271317419213080834885003"), Primes: []*big.Int{ fromBase10("1025363189502892836833747188838978207017355117492483312747347695538428729137306368764177201532277413433182799108299960196606011786562992097313508180436744488171474690412562218914213688661311117337381958560443"), fromBase10("3467903426626310123395340254094941045497208049900750380025518552334536945536837294961497712862519984786362199788654739924501424784631315081391467293694361474867825728031147665777546570788493758372218019373"), fromBase10("4597024781409332673052708605078359346966325141767460991205742124888960305710298765592730135879076084498363772408626791576005136245060321874472727132746643162385746062759369754202494417496879741537284589047"), }, } priv.Precompute() c := fromBase10("8472002792838218989464636159316973636630013835787202418124758118372358261975764365740026024610403138425986214991379012696600761514742817632790916315594342398720903716529235119816755589383377471752116975374952783629225022962092351886861518911824745188989071172097120352727368980275252089141512321893536744324822590480751098257559766328893767334861211872318961900897793874075248286439689249972315699410830094164386544311554704755110361048571142336148077772023880664786019636334369759624917224888206329520528064315309519262325023881707530002540634660750469137117568199824615333883758410040459705787022909848740188613313") b.StartTimer() for i := 0; i < b.N; i++ { decrypt(nil, priv, c) } } type testEncryptOAEPMessage struct { in []byte seed []byte out []byte } type testEncryptOAEPStruct struct { modulus string e int d string msgs []testEncryptOAEPMessage } func TestEncryptOAEP(t *testing.T) { sha1 := sha1.New() n := new(big.Int) for i, test := range testEncryptOAEPData { n.SetString(test.modulus, 16) public := PublicKey{n, test.e} for j, message := range test.msgs { randomSource := bytes.NewReader(message.seed) out, err := EncryptOAEP(sha1, randomSource, &public, message.in, nil) if err != nil { t.Errorf("#%d,%d error: %s", i, j, err) } if !bytes.Equal(out, message.out) { t.Errorf("#%d,%d bad result: %x (want %x)", i, j, out, message.out) } } } } func TestDecryptOAEP(t *testing.T) { random := rand.Reader sha1 := sha1.New() n := new(big.Int) d := new(big.Int) for i, test := range testEncryptOAEPData { n.SetString(test.modulus, 16) d.SetString(test.d, 16) private := new(PrivateKey) private.PublicKey = PublicKey{n, test.e} private.D = d for j, message := range test.msgs { out, err := DecryptOAEP(sha1, nil, private, message.out, nil) if err != nil { t.Errorf("#%d,%d error: %s", i, j, err) } else if !bytes.Equal(out, message.in) { t.Errorf("#%d,%d bad result: %#v (want %#v)", i, j, out, message.in) } // Decrypt with blinding. out, err = DecryptOAEP(sha1, random, private, message.out, nil) if err != nil { t.Errorf("#%d,%d (blind) error: %s", i, j, err) } else if !bytes.Equal(out, message.in) { t.Errorf("#%d,%d (blind) bad result: %#v (want %#v)", i, j, out, message.in) } } if testing.Short() { break } } } // testEncryptOAEPData contains a subset of the vectors from RSA's "Test vectors for RSA-OAEP". var testEncryptOAEPData = []testEncryptOAEPStruct{ // Key 1 {"a8b3b284af8eb50b387034a860f146c4919f318763cd6c5598c8ae4811a1e0abc4c7e0b082d693a5e7fced675cf4668512772c0cbc64a742c6c630f533c8cc72f62ae833c40bf25842e984bb78bdbf97c0107d55bdb662f5c4e0fab9845cb5148ef7392dd3aaff93ae1e6b667bb3d4247616d4f5ba10d4cfd226de88d39f16fb", 65537, "53339cfdb79fc8466a655c7316aca85c55fd8f6dd898fdaf119517ef4f52e8fd8e258df93fee180fa0e4ab29693cd83b152a553d4ac4d1812b8b9fa5af0e7f55fe7304df41570926f3311f15c4d65a732c483116ee3d3d2d0af3549ad9bf7cbfb78ad884f84d5beb04724dc7369b31def37d0cf539e9cfcdd3de653729ead5d1", []testEncryptOAEPMessage{ // Example 1.1 { []byte{0x66, 0x28, 0x19, 0x4e, 0x12, 0x07, 0x3d, 0xb0, 0x3b, 0xa9, 0x4c, 0xda, 0x9e, 0xf9, 0x53, 0x23, 0x97, 0xd5, 0x0d, 0xba, 0x79, 0xb9, 0x87, 0x00, 0x4a, 0xfe, 0xfe, 0x34, }, []byte{0x18, 0xb7, 0x76, 0xea, 0x21, 0x06, 0x9d, 0x69, 0x77, 0x6a, 0x33, 0xe9, 0x6b, 0xad, 0x48, 0xe1, 0xdd, 0xa0, 0xa5, 0xef, }, []byte{0x35, 0x4f, 0xe6, 0x7b, 0x4a, 0x12, 0x6d, 0x5d, 0x35, 0xfe, 0x36, 0xc7, 0x77, 0x79, 0x1a, 0x3f, 0x7b, 0xa1, 0x3d, 0xef, 0x48, 0x4e, 0x2d, 0x39, 0x08, 0xaf, 0xf7, 0x22, 0xfa, 0xd4, 0x68, 0xfb, 0x21, 0x69, 0x6d, 0xe9, 0x5d, 0x0b, 0xe9, 0x11, 0xc2, 0xd3, 0x17, 0x4f, 0x8a, 0xfc, 0xc2, 0x01, 0x03, 0x5f, 0x7b, 0x6d, 0x8e, 0x69, 0x40, 0x2d, 0xe5, 0x45, 0x16, 0x18, 0xc2, 0x1a, 0x53, 0x5f, 0xa9, 0xd7, 0xbf, 0xc5, 0xb8, 0xdd, 0x9f, 0xc2, 0x43, 0xf8, 0xcf, 0x92, 0x7d, 0xb3, 0x13, 0x22, 0xd6, 0xe8, 0x81, 0xea, 0xa9, 0x1a, 0x99, 0x61, 0x70, 0xe6, 0x57, 0xa0, 0x5a, 0x26, 0x64, 0x26, 0xd9, 0x8c, 0x88, 0x00, 0x3f, 0x84, 0x77, 0xc1, 0x22, 0x70, 0x94, 0xa0, 0xd9, 0xfa, 0x1e, 0x8c, 0x40, 0x24, 0x30, 0x9c, 0xe1, 0xec, 0xcc, 0xb5, 0x21, 0x00, 0x35, 0xd4, 0x7a, 0xc7, 0x2e, 0x8a, }, }, // Example 1.2 { []byte{0x75, 0x0c, 0x40, 0x47, 0xf5, 0x47, 0xe8, 0xe4, 0x14, 0x11, 0x85, 0x65, 0x23, 0x29, 0x8a, 0xc9, 0xba, 0xe2, 0x45, 0xef, 0xaf, 0x13, 0x97, 0xfb, 0xe5, 0x6f, 0x9d, 0xd5, }, []byte{0x0c, 0xc7, 0x42, 0xce, 0x4a, 0x9b, 0x7f, 0x32, 0xf9, 0x51, 0xbc, 0xb2, 0x51, 0xef, 0xd9, 0x25, 0xfe, 0x4f, 0xe3, 0x5f, }, []byte{0x64, 0x0d, 0xb1, 0xac, 0xc5, 0x8e, 0x05, 0x68, 0xfe, 0x54, 0x07, 0xe5, 0xf9, 0xb7, 0x01, 0xdf, 0xf8, 0xc3, 0xc9, 0x1e, 0x71, 0x6c, 0x53, 0x6f, 0xc7, 0xfc, 0xec, 0x6c, 0xb5, 0xb7, 0x1c, 0x11, 0x65, 0x98, 0x8d, 0x4a, 0x27, 0x9e, 0x15, 0x77, 0xd7, 0x30, 0xfc, 0x7a, 0x29, 0x93, 0x2e, 0x3f, 0x00, 0xc8, 0x15, 0x15, 0x23, 0x6d, 0x8d, 0x8e, 0x31, 0x01, 0x7a, 0x7a, 0x09, 0xdf, 0x43, 0x52, 0xd9, 0x04, 0xcd, 0xeb, 0x79, 0xaa, 0x58, 0x3a, 0xdc, 0xc3, 0x1e, 0xa6, 0x98, 0xa4, 0xc0, 0x52, 0x83, 0xda, 0xba, 0x90, 0x89, 0xbe, 0x54, 0x91, 0xf6, 0x7c, 0x1a, 0x4e, 0xe4, 0x8d, 0xc7, 0x4b, 0xbb, 0xe6, 0x64, 0x3a, 0xef, 0x84, 0x66, 0x79, 0xb4, 0xcb, 0x39, 0x5a, 0x35, 0x2d, 0x5e, 0xd1, 0x15, 0x91, 0x2d, 0xf6, 0x96, 0xff, 0xe0, 0x70, 0x29, 0x32, 0x94, 0x6d, 0x71, 0x49, 0x2b, 0x44, }, }, // Example 1.3 { []byte{0xd9, 0x4a, 0xe0, 0x83, 0x2e, 0x64, 0x45, 0xce, 0x42, 0x33, 0x1c, 0xb0, 0x6d, 0x53, 0x1a, 0x82, 0xb1, 0xdb, 0x4b, 0xaa, 0xd3, 0x0f, 0x74, 0x6d, 0xc9, 0x16, 0xdf, 0x24, 0xd4, 0xe3, 0xc2, 0x45, 0x1f, 0xff, 0x59, 0xa6, 0x42, 0x3e, 0xb0, 0xe1, 0xd0, 0x2d, 0x4f, 0xe6, 0x46, 0xcf, 0x69, 0x9d, 0xfd, 0x81, 0x8c, 0x6e, 0x97, 0xb0, 0x51, }, []byte{0x25, 0x14, 0xdf, 0x46, 0x95, 0x75, 0x5a, 0x67, 0xb2, 0x88, 0xea, 0xf4, 0x90, 0x5c, 0x36, 0xee, 0xc6, 0x6f, 0xd2, 0xfd, }, []byte{0x42, 0x37, 0x36, 0xed, 0x03, 0x5f, 0x60, 0x26, 0xaf, 0x27, 0x6c, 0x35, 0xc0, 0xb3, 0x74, 0x1b, 0x36, 0x5e, 0x5f, 0x76, 0xca, 0x09, 0x1b, 0x4e, 0x8c, 0x29, 0xe2, 0xf0, 0xbe, 0xfe, 0xe6, 0x03, 0x59, 0x5a, 0xa8, 0x32, 0x2d, 0x60, 0x2d, 0x2e, 0x62, 0x5e, 0x95, 0xeb, 0x81, 0xb2, 0xf1, 0xc9, 0x72, 0x4e, 0x82, 0x2e, 0xca, 0x76, 0xdb, 0x86, 0x18, 0xcf, 0x09, 0xc5, 0x34, 0x35, 0x03, 0xa4, 0x36, 0x08, 0x35, 0xb5, 0x90, 0x3b, 0xc6, 0x37, 0xe3, 0x87, 0x9f, 0xb0, 0x5e, 0x0e, 0xf3, 0x26, 0x85, 0xd5, 0xae, 0xc5, 0x06, 0x7c, 0xd7, 0xcc, 0x96, 0xfe, 0x4b, 0x26, 0x70, 0xb6, 0xea, 0xc3, 0x06, 0x6b, 0x1f, 0xcf, 0x56, 0x86, 0xb6, 0x85, 0x89, 0xaa, 0xfb, 0x7d, 0x62, 0x9b, 0x02, 0xd8, 0xf8, 0x62, 0x5c, 0xa3, 0x83, 0x36, 0x24, 0xd4, 0x80, 0x0f, 0xb0, 0x81, 0xb1, 0xcf, 0x94, 0xeb, }, }, }, }, // Key 10 {"ae45ed5601cec6b8cc05f803935c674ddbe0d75c4c09fd7951fc6b0caec313a8df39970c518bffba5ed68f3f0d7f22a4029d413f1ae07e4ebe9e4177ce23e7f5404b569e4ee1bdcf3c1fb03ef113802d4f855eb9b5134b5a7c8085adcae6fa2fa1417ec3763be171b0c62b760ede23c12ad92b980884c641f5a8fac26bdad4a03381a22fe1b754885094c82506d4019a535a286afeb271bb9ba592de18dcf600c2aeeae56e02f7cf79fc14cf3bdc7cd84febbbf950ca90304b2219a7aa063aefa2c3c1980e560cd64afe779585b6107657b957857efde6010988ab7de417fc88d8f384c4e6e72c3f943e0c31c0c4a5cc36f879d8a3ac9d7d59860eaada6b83bb", 65537, "056b04216fe5f354ac77250a4b6b0c8525a85c59b0bd80c56450a22d5f438e596a333aa875e291dd43f48cb88b9d5fc0d499f9fcd1c397f9afc070cd9e398c8d19e61db7c7410a6b2675dfbf5d345b804d201add502d5ce2dfcb091ce9997bbebe57306f383e4d588103f036f7e85d1934d152a323e4a8db451d6f4a5b1b0f102cc150e02feee2b88dea4ad4c1baccb24d84072d14e1d24a6771f7408ee30564fb86d4393a34bcf0b788501d193303f13a2284b001f0f649eaf79328d4ac5c430ab4414920a9460ed1b7bc40ec653e876d09abc509ae45b525190116a0c26101848298509c1c3bf3a483e7274054e15e97075036e989f60932807b5257751e79", []testEncryptOAEPMessage{ // Example 10.1 { []byte{0x8b, 0xba, 0x6b, 0xf8, 0x2a, 0x6c, 0x0f, 0x86, 0xd5, 0xf1, 0x75, 0x6e, 0x97, 0x95, 0x68, 0x70, 0xb0, 0x89, 0x53, 0xb0, 0x6b, 0x4e, 0xb2, 0x05, 0xbc, 0x16, 0x94, 0xee, }, []byte{0x47, 0xe1, 0xab, 0x71, 0x19, 0xfe, 0xe5, 0x6c, 0x95, 0xee, 0x5e, 0xaa, 0xd8, 0x6f, 0x40, 0xd0, 0xaa, 0x63, 0xbd, 0x33, }, []byte{0x53, 0xea, 0x5d, 0xc0, 0x8c, 0xd2, 0x60, 0xfb, 0x3b, 0x85, 0x85, 0x67, 0x28, 0x7f, 0xa9, 0x15, 0x52, 0xc3, 0x0b, 0x2f, 0xeb, 0xfb, 0xa2, 0x13, 0xf0, 0xae, 0x87, 0x70, 0x2d, 0x06, 0x8d, 0x19, 0xba, 0xb0, 0x7f, 0xe5, 0x74, 0x52, 0x3d, 0xfb, 0x42, 0x13, 0x9d, 0x68, 0xc3, 0xc5, 0xaf, 0xee, 0xe0, 0xbf, 0xe4, 0xcb, 0x79, 0x69, 0xcb, 0xf3, 0x82, 0xb8, 0x04, 0xd6, 0xe6, 0x13, 0x96, 0x14, 0x4e, 0x2d, 0x0e, 0x60, 0x74, 0x1f, 0x89, 0x93, 0xc3, 0x01, 0x4b, 0x58, 0xb9, 0xb1, 0x95, 0x7a, 0x8b, 0xab, 0xcd, 0x23, 0xaf, 0x85, 0x4f, 0x4c, 0x35, 0x6f, 0xb1, 0x66, 0x2a, 0xa7, 0x2b, 0xfc, 0xc7, 0xe5, 0x86, 0x55, 0x9d, 0xc4, 0x28, 0x0d, 0x16, 0x0c, 0x12, 0x67, 0x85, 0xa7, 0x23, 0xeb, 0xee, 0xbe, 0xff, 0x71, 0xf1, 0x15, 0x94, 0x44, 0x0a, 0xae, 0xf8, 0x7d, 0x10, 0x79, 0x3a, 0x87, 0x74, 0xa2, 0x39, 0xd4, 0xa0, 0x4c, 0x87, 0xfe, 0x14, 0x67, 0xb9, 0xda, 0xf8, 0x52, 0x08, 0xec, 0x6c, 0x72, 0x55, 0x79, 0x4a, 0x96, 0xcc, 0x29, 0x14, 0x2f, 0x9a, 0x8b, 0xd4, 0x18, 0xe3, 0xc1, 0xfd, 0x67, 0x34, 0x4b, 0x0c, 0xd0, 0x82, 0x9d, 0xf3, 0xb2, 0xbe, 0xc6, 0x02, 0x53, 0x19, 0x62, 0x93, 0xc6, 0xb3, 0x4d, 0x3f, 0x75, 0xd3, 0x2f, 0x21, 0x3d, 0xd4, 0x5c, 0x62, 0x73, 0xd5, 0x05, 0xad, 0xf4, 0xcc, 0xed, 0x10, 0x57, 0xcb, 0x75, 0x8f, 0xc2, 0x6a, 0xee, 0xfa, 0x44, 0x12, 0x55, 0xed, 0x4e, 0x64, 0xc1, 0x99, 0xee, 0x07, 0x5e, 0x7f, 0x16, 0x64, 0x61, 0x82, 0xfd, 0xb4, 0x64, 0x73, 0x9b, 0x68, 0xab, 0x5d, 0xaf, 0xf0, 0xe6, 0x3e, 0x95, 0x52, 0x01, 0x68, 0x24, 0xf0, 0x54, 0xbf, 0x4d, 0x3c, 0x8c, 0x90, 0xa9, 0x7b, 0xb6, 0xb6, 0x55, 0x32, 0x84, 0xeb, 0x42, 0x9f, 0xcc, }, }, }, }, } go/src/pkg/crypto/rsa/testdata0040755000000000000000000000000012412656737016711 5ustar00rootroot00000000000000go/src/pkg/crypto/rsa/testdata/pss-vect.txt.bz20100644000000000000000000006755612412656737022011 0ustar00rootroot00000000000000BZh91AY&SY=:+?`"2@T *"&M *(QD"TJDQJ"U)  $B%BDHJH}DJDRR6* $DJR[% c8@¨EU%-AP*[ %(TMu!I"T7.PJJT*gHT8P(UN :TxP*$}ǥPDGH($ :RJv86JtJQ@4DM=M~?"_.^b Yb1bBBhlALhhIl[EThF61lVѱmFQ65FՍ4AjQlTlI*1X4khэh&bZ5FTmlElZڊэZ*cRb,Fѯj!(,}/ >\zЧ' ߆HF|"0 T@)MP ЊiC0K|YXi)jTKM dH,Tz~Gu+mc2TmKVyi|Ap{A#y]t-$򰶊CioKzslfl$a̡XD4h3 v- ۾ȝÏ:iʠo$^FNt S_>RKߙ'0nW碩Ds Ëeo>eJS_ $})cSuL.Q8{ύI¹|z,2Ci+/lNH?9ӾuiuAJƌHKd X WNщ~BƲU*H|EHLmlW:3Pu_0y#Pn3RO`br֎OLB/CJ9r?K`_r}cYGl(C&MqF5Ucv9x%C V쮗f,w PZk*ToL*%')sf 3Af~O`G/]_Р&hL<0nTL}2pܯ *'ςIoaӎ'=[܋)˼ϊD~˿wS$-{V=sX;?$d)mװŞ@6i]E}ۅHRPS/K7RąxWK%7T/b~_:fR5GҰþ;f%:crWDr){+ clXY *sxGKL#`.=ԽClğHI99NʇV\LT4e4DN}0TS^vrیӝԄJ6ʀYO(պE_Spwlu˺h&!ej nʟO/bnSVEP=K5xLx0q0Cg Hg*] GӀji7TBdpx Aܡ t ԕs`%U!$ђW8+XTyO+ pc[U+Yt0̍VIWX1$;Mr^lmn9Mܗ2\' ?TSa#؈r'"]d/ַV'm4pb%Ο׫T)|jb@ 6GJv yi| pF`eruq:]Jb~qsPWHib44EIB4w6L_SPa OE"buCdÈLSGdzF:B~ppG+H)+a #lj:vYD ./E[: _.IW}O&?˝n0<N9h^[|JvUo|vQ9 7A^O{F=FMgbxhp6uusG& / !K¡4+@ãIeFy*s|sjkd~EQҕ?XRxE4W:tqazgR_Hx|*x10-ׁ8*\ nC[qg㇢ .2$FRYYEMF'>p!x4'UP>JcGHໝ{ou[2R?h籟)mY,{Kߤ:etcPWi  ﷏W*bI@$J @Pw@7wRNּ]@)j+)=뷟j gٲ*]ob!3_/f WTsM]Z 4Kµ c Рz׽4s\^ bX.b:(T veij Ms {I+ˑ㦀 >6x=fuKa g6Yl0zݎ*:yQc"daU@^2ss$ alz\9Ci>P'bWJCadB+}AAǸ0tZ1ϗ:A2Z{ks]Zrs Su{[yT\ҚGa%u+pBLOH3jl-}m*On)ߚyw@du'V = j=F^^B׮`S&ũYa_sYvaWe\|4xg!GT)PB~bYQ(rX;yhTY^NmWG rdB9taH_ͷxP`54̭OCCp29=@{AorY.N+0I-*F % ėj5|A~YV-oN@6Wv$o+Z elRD!b۠kMxm^<}Ra,9PH\Su˺e2.y=:7c@)Zc9IPⲍ |'zEgqtFi^zDsLeS?l$z:5|+@ȁ^B 뫦j'z/`bW<{sbVɏZ`)ζT ce.nIY>[[O(&C6dgԃsՕQ2zY ˋ8 zLqEEjש~\釦! 'XgNXGo<|!a #ڙDs[wn bEz!pDnZ vِ$箴7vǏ(d 3c96MbV}6EBg?ö3V|%NzgkLE=ˮ}E+Y,7-.x#RsLogi}nʩ2M^KW|ҥfڐ &yPUɇ ׅ7Ɔ͘{%-dq{}!L_M6nY %Yjy}^0S3N fӼٱa`S`PeͨzoyU qpL1r" Ƒsck{-Mp.[w<]_`X³-ԭU|ޛw5w>օ(zd D`FA lq3M5kdF'{Kr\BjQ)l~.Zّ&;B\Ԯb!ݘ&VOK\"z7 ^a0e+_x= lW[ARub y> ۔؁!/."H2Йŷ7?sjyJ1]$U^0]#\z,"Y䮕zBԧN| s#Or\bO"%Âvj/{ ^| 4iˢ5ܹUCps1v+'xGEg@XPu IEoC_ 96aRhh2$Tt Ysu[+DKOWSa𴄮VK:ۗGǔp2Iψm5׻_v/x^ր`+dbGz{t;1340И0ps+TNǢcO{B!.2':ΊS^! NY-i=2ʳT-}[-a)>EH$yP1N>"r3j|L0jkKcwLU\M7ZB/;mvA<7\دT \{_7@ `Ùe[ݬZ@8fvDL*Ro.|f bX{cÖtg~;cia@d{f;l&sUP6L=ce;C.7p.%LqeMC/>+ ӌ/U}/nœsP& (H |.&Nx䛛Sc&3W( I2L~ly b=6^v~1MRr 41"ܶ:A”{t #H^ģ\:0ڭ,%Lw:CdMJϋ2QGܾ3W@*s Mj^/GFɽza7ӓ/G}'Qd56yZ?&;'{y}%dɻlR/JKObT cӥdBN/oV.sq.6Jܛp]I ^C+5Vf$DUV94ށVRU/ Ĭd-N23oy1n_1S1 ]%;fGcM;K"k s\8#9%Lb*KhxY5'8sZɷm m< cO0g# 'c9?PT8chԼ`i pmȎBYdiXyrG$5 A_w$Qis҇Cw~#\y llxȟc2O,٬r*ȀR{(XĬĨ&*RSʊZRHڳwxxWt-`p֭jhPdMXlb'' Q|ɜJmF07آR5%NPWEU`bI,qGDv@CminYi[gԏɭFxe,!F_64 EfT司)/}&0N>}7 caztƝ9U@gGA (k/;f3Y1f+UiM[:9%RXua[G(q]^}yy뵻r66N~p{S+W@ ZT/{J(Q=yA9]9 ?1#M,H\,-xʦn7x0|EZp*tl<ړ&!Hb%-!$$%xgGUg'Џ)^CjeXE~e|yF\73aT:%U ϺuF&gB7gmpw*%&ee;UKU22\߫zz=ֶOI2ja,/icem|3)ͽXr"I]fNUhؠasE.!`?/tpqs |.d, qk+==ź)l|A[8aQ-WK D3;׽ZQ՘5T>q!i1z56 + ',^=^$~JNA/ =,̀i%ȶ@ɛzǰ(F`0qQ@)Q:$jˉK"a~x1A*0U;rXQG>M/4` ,Sƒ?_emr^J$g-;Dv;LB`|0{%m6~q5"rZgy=_u|[[13^Y3ϰ]40(sh(Y1+T,q{h8K 'NO2j\k`-Zn`&/h24ITü'9iWVw ᥪNFm5z t}hCJNLHKeV=;"Yް,'^@? .N[6&* l:rU cJuxll'= /wP %R/6'LDWIiô3 1*^~3' J㗸&$%f;;}\:;BToE9ӡ7\c4M2u:/cQT~Xf%ӝ|T} XӒ2U;nRJS3UE8PCrhore.׉ MC Vob2].Qԯ=0XcJ>hWyɆ.K2ټrpm\=o*a7i>F a-XeO8/`8Sfb@^DH&^=N.YArD]&XhAoJ)oMWYȃ`qnVu:]:)z89eh z3%9-Ѽut`ޥE9Df|{!i"`A^[9ab(ۍD0=ppxU*k9x.@S__r/ yn[t0k>9^HNYn7\5U,(;)?$7`Dn:|ś5񠎗B_^T&СNGUBmtLlP)25.Q^5A3+ӪW{Jnb흯3`:rE /3Fm~hL_^aGJ hI$fCTSzxoǖ >5籽)!ׂE?>yK]>s+%H!DBХdU"[.Bt]-G`S/3Hx&`]wm 8=ؔ^Hm 3eݞ{f)V?<!|I$Jc6!0 r¯7Zt[}GDGGQ!ktq)bZT0V)`~˶;R>6V\qVFNK$ϛN;u5vJфSw=3d>IDgBc*)+0. ·)M[`RX̄.D( #^m(ދ7m}!JBDd ZEjꁩ/Hgp&=buSm gKSr6nxX6u_): |U©DžSI)DPJjjFja 'Dž U[M#*Kt>>{2!=F T@,08Iv4gf_&R>wZj&g*lׂG5hүS"XRSŞOsSBN (hRAXb?{@|YF8$oYYEIx_\k43kUC{QO>9vʞ/hXh3 sћ<44#1F1Q!4wR3(Ѣ{,B藶w}-]IKD Xoڋ~yW:_HϞjQƜӞ(]Թey]~-ūi(m$d׌8gs9pAћ\(L,/R >JS-)=*I~̘-ݮy JK{y\mR@+hr-[(%轷\8QWo%X2wy;F1!ܜ|v<KB ]A0V,%' 5d32sVT->rN@j*"i!|Td-z+K OL(݆ywTU{>f̜dvi=Z *35s#0 QankKʬU/>dFbJ)[D%b?;u|(lr d̵D xϵޔvj&g?,2ybS(~:|y O( pb(գo}g}@uUɵd5r!P\{FnJ|H`@X@@](T k\UN!ϠQ–tW^us ,u!؈҅ ." vUSF9`3DŐr*[ĎYWJda.݊pBԤ 3OBs| +|kQ[>!j3e{pTDBglue1b_T&m p5FbN7hSAƹ[5+Au DbmOVl5 Yݘ֭媓c [7aX=ٿHUE7f}EvUF-vj*. Z>Wws_Y|sR.֋]GLC NHȱ.9Lep$&44{v?KKf,w89GEXdykFyHGi#{glÕ▱4Äa< X+fX}uqO#,_B$Uakci m)k`_* ڽZ1K"L)/+ Ec@71?_wBI-"11 Ea,+cN9v9i\˳É(jjM{"Z$鞗A6k2"A(7zD}3],)ybY:X͔PRX JP400%\4&lTxSV9@mQWcbAjt|Y>c37%sžo?2kc&:AJ}}9@wl.ay3VYP&_.T?%Gвlra9Ea}s, `Qy|3R:#пMgKLJ%00n=">6S\6ձ|P@>i2nX&*= &3 Eg"i@v9E'Z,s(|QU>;rSsˊi"q$rUrbBGU5X<f(.-OQz"hN}In:#U-'(# [n"i,I ~HX[?"d,I_Щ~SEb%$,~(>d/-#’ǕX-(4 ?y2*TBq[E{PwPdt]ΚyfDү2PҿJ)ڊv !ȁyx=f; zئ:z h I49VhS_$[R#pauu2(ҵeah:iy۬E=\7M -/bqE !.Ȳkiυw] wJM+!|2Znbf9||3~|Ӯ'Sq`b5ZRU>!|GfѡyP#p)%P7i`5:=ԉIS$.n!D=>V]u˦ W>B9MuSa)¨Gs)IrG?K1@# z M¶r S?rp;zp[{:~ aU$Ki(&“V,/^EsOM/ {|yϬ2^Ѡ?c{Cge@ⴤ|ih[d.h4zuv`9 llryߵ89E6w@@/pQ揻Q^NFH”f TEK%ܠu q9oGVhN-CJBr刋30.DH l#ɌbJ*%5x$#]~-yW!ic@} Awl WBE2|.Τ.:լ$~М:J49꾟 7hx326p΅2"re븈͘v ;.2SRl >, `J_)2rDbuK^caaEO*T{M)R .[(s.UI/V"\o1zLR`*i=J狕,EĆ2ȒkZ-$z|Ay|}澙#Cݔ.Jbv2K7|291s|Jյ،o;AC;k*@z oj"@CGIguMԂO _MV}=Z+je=kVM!\TDUPTT)PhUkINe=UF?>lbwuSh%(')&{p4Yȋ|_d6WگWZjЄ/PE3 4[lv4Oޠ^.JUnMCȢP'ze\JI둍wsRg8{Q yk6Eũ:+yvH(K5vcr-)} nk?ВCF0sέ4wdo|8t/'yp)VȀUXhUp {aJi;OEc1-}U` UwaoKقNpu;S7t zPcDo$ӹĜjRnWZ8KJ2g:N:B"-mCPwx"i8@^D:G]1@tr3)>Mt 4̠:x%^jf1$yS-*V\4 O(ً8-qj"6 KдW/s:!jNdOhvbt9zBgu/ܶ /DBNMc&=Zs݄b)@KlsZ:HqRl½@w5%$,T]Oj"vTI)롃yKH=5ڀ]FW0BHRrUKjנ hv0uek'ʆ έ6>NDo_rxUT&,Zrҽ:ժ;Ɠ"]ꂴ1jW&5L޳a`D$T<ֶ2diy|Ws45W_oK[m煍=Ν%R.)̺5`E}hr)T.c[{0.}{QTW $n Y1nT.DnX` ]-{vmwO󕭬Ry@ÏhEwOv !Ǘq8+"Tgؾ5G^wH<59ZtLz 6Nu7*Q(Ũ)[s'L8ڙᐉ|5ʍ);I9崫'dBo8ݳriӓ-8O>.>ĹDc/yTRY1̢taE0q(>eZO)e[D}wf* yV+NEQ)߸3"T`;[d Nc=?LJ} )\50*}Xݥ{_ 66ԁ8{4݋҆ud_u': D1FFEXMV-X-kEF4m6QFm,QA[6k`V1lQ4X*6|\QZ6ؠ[hj6Ѩj)6űj-Ŷ*2hblbJ@"pWӣmPrA)sG/V z"UKFaO2AN!P)ϣtbYQPFoT6 Qȴ4Ɉ&[ܘɐ]Nr"!̍E81!;oym=J IzyQ' &flgOt 4Q1 㶋t[Ͷ$t˦#S z7ŵ#H4@!Y?jg!gmôU,GKgRGYsuo[q;0Qn4\Î m+?ݕsƗG\_O9ρ3piXQu4EJQz]E0BN(N"hL 4}J܏U`4@ t8R'.#6`+O*׍s O*\yc7O >ZD?P)Ĺɢ7g/a@.c|jSJ `ySBoktqv7chbt\^]--nZ%RpF<#kB f1[AV]U.@xV>Ƹp4_Sɬ'!W,6uZօ0&jp ֣}X2# eY.X duxxF&΋eG}PwZ}(@.cw?ubk-FZ]H0.hT0:n(%8[j]Ξ%,@ )R$Gq[EFV5FƋTj7UYjmۊQKqkEQqkmEqѸThƫqqhmbAV)5`-b-FF6QTb yֱR3tkuW!ҕzE5 U+9"ΪܱN fm;GykJ;aep!HbUpa^~\,ѾXF Wi^?1Y [VRBxdyptz;B G.)Ӓ`c禋U31P9db xS{l`MP9,POXU})}#C\`!(e}N("5gMg۪IĕD=4sZ =y:C0uԀuJQ{&1nf[jb7JlHy& * t=}ʄP;\mõ!1MwӢ'P4,YKz,|95∓YXe^[B}h 8 r]o RԮ?79hf=99!n\E{Jpcr a I1@>Ce)<l"٘{_IQp#uVF)1A9JAh(#ѰHyj$rx&>RV&Gy'zLy0MٌrR|3wMH)d9slNp+N MA##kƨۍAQ64X֋55bKU[5QmF֍`ōmhE&#jV-V65ch6e15^owfc\\cqK,TUxA[RO Z.RGdr?˦Ti_FKסMy+s;!oŎPv+,=N~HKQg'̩7XQUX HA fj庛R.Y YBXxbGF Ums*Uxi@Uj"ۢdd"g~qu!xW "p0G.)t0nss -m"1vj 9> ƾ[:箸7#57_,Nx{,vۉ)e^B'{EpMHRSbމ\'No]wPaoڇ3n5ZfxCyO? lyڑ%V18Od:%oVdS3\2.ٓm7 LjIxIzSnwr:RZ T*jwzO4MIWdd!)YշuXq~q7^5;G|xG(" D 1[bmF* Q,FQTbXZEhEF6[mEFkqŴPbƍFŨ*kDTjэE-QlmFQ*ѵFzyI cek@Kn _r8ab*z5vfC#BdYD ^h_m/r<pJ0$#z[ t/z v]'舊DyPxhCۤxdTLrE:}M@N MUSD( ”](AAL.> S!YkVgZv!X} ^% T#E66%ϥLpnɖuF{M8/ˠ[4j-"d\QewQREGv_ZΟM&M3o1!{&kZ2@!FjW<Mf>(Cp'ۗFf$z2 (D##}qs0x{v\1ȗP5(l+XUUt-|E5+gJBf0VK^ Ƹ(*C)4w2yaFR u@̪Wt9 QXQ7>,N~Ra4< Ћ=,P7Dx] s.~F9~ڛ hu#2 0F WᙄtxS`Z 7*L9SybOG, 5h\ -%+ [Ҳ7~Uް1jh8X2OFN ztmq=++8PfLd1ʼ_UvGx{՗)XM3]oWg`]f%LgM z I͂ n ddy|گRƬkƣj+j+XTZ ThڍDUvMmV*DmiMQFZ"F5cmEF6Ѭbch5V*V-Fbض֍+QX-ţרmK<—xSI*nK:Vjhۜߥ¼;R|(U`3|=HiW@P4(-9" %s?r+zy,Ӯ /|obo7'*0t mn.xJW,xs ᚋ񊪲-ߚ_{/|طE =od 4xH~.pxg!QuLJ,:(2>Qkɂ=!Pr4T[ %7Q%uvN%uxj- ,&#sk6 $*OHV7N{"#ⅾBq0V--_a{opj @; 4"!ʳy]I^c!M ;'.۵]@x< '@IP4.5J6O&z l*]"K,qFJe~DviJΐx8]P"M}eʜkU~.A.04sQ7gp,srse貗V `8I(-P\]O}h7t'Bx<})45֑ A.,a8=,xUA:un{q܏ DϷ͘kt|kdsTn^cUϴEѢyLg|.U%;4瑶AJf}Q1SEuZI&v6wZ|SpLP0 .@u; ތQؠ 3:܄!0($ʟ&߲H /U?sYk6`ƵƢ5XmcjcTZ6ZQcTj(EZƶV* lj(bEb*Z-hQV5 Q(,Q֍TmLjA$$ HY5M\ZMp=%W- z YEJ>gcqǚn;RlZ )1"7Yhw( ,Hc1&h{שLшҝ {.Na@^BT -?iC4ʧ ,)5ֹ 7^m1:QB> *d*$<yńSo tJ@}eu Hbxe(docJIbX! pVeLӓ8]LWa bIҝp!蒠YYetUTOfM&ʨm.i6Bb>w381jXLcD-h47uEֱHͺ[e^_SGl -o[+ Z+R)l1Ck*& ǬC3fjĪA PwMQFn=zqݵ*#q&a]: pDT撖oBgŕd?t|wm#Y \^s|v0ܨNozeSx ;"=Rf Tc"KdMNY.WQ K[ 2JluYcZH6gHmtl(rz0[R/nl:>GG]HgΖ AuweCNyr_jդRk2SaTZ kg-}jdJr'U+U44л{̦I" BF6Zɱk[&1[QUض5FlQѶ IcZ5bm5IUűUcՍѨbشll[h4clZ6cŭu) ] B ebN) ə cٍ(s:_w,hen]H nњyxUVQ#l\&ߥA|%[жpBcPR$ .aX0M>xYa' giW`c ¤5yWŗ0ヸijK}L| }(Eb 7-6vQ#0ӥdEKaȆmكw":S+%՛¡y'JxBFqd鋡yφ0)ħ/{;i譂kLI(8a|%gpҀٴd_9gZq$$w J\]Awr7vly۽慘S랮/Kw< ?*́T0dyɯ3̅'"E C(Q&c^*t+x]S}KJ鼕}B /K Ir`"DF Yw 's+DsG#fʀ\7rޝrauhtNJ5\rœg+iV8KUcվ\'Z~x.sO{%%C+Ox8SYL~u c zOwXpjjzi]L^Oy`H8y.:޼s@[@ZpYBTSY ٍ>$  H j1QE5b+lUlVŨɪ-dcTUk5QTU-PEj(5EѴFlZcQh6jQՋX֒?rT[ٚ55hlkQT 8s>v<"/wS͚2$HzPJ(WT'O I1D^98pŌ kR NwDiŬrC KAǸ f3]<Ҽ}}0&N|lM"Y>0;4ؖ¨QYLI,a61Jk( iE暃qP!=Jܩʱ|"i,S/HwV\ekHEOyMc\' ={fB&*tpb"Z籶6bL"O YӢCt5и>~/w6+ IjQTmUE5hQQF)1+hرj5Q5Z+b6Ԙ%m؍)6*16-`Zъ-EXEccFlQQ6\.rqrsp9Hs+k8'DHLNZ_aE3'A'2Ib4Rz)JR)G  Hm--}mWokrV-tUZZ_˖6-nuU~n)N)@E biqHZ !##" A&(o,@>i2.C:1-x8R2LN/$+@gb^O8ֿv)G;A ~z3` L}wuЇԓ. lFU-h #-y$fs.A4nq|,2X*=3:~eoZf?{W cq;A*D[7BZe]lf[_(5wy|i,+|VjBXpH*:#K}cBRB"kMctdb>\[ςj&^7JQ+_ )F) bku|GsC-V :s4Y6&>}F:mDk-# Pl[9 k ^v {f,Tr2f),]#/M0Ĥ l$Κ(efL֠W4 Rpjƙӫ۷4y`evPLO1!^=}ό(IHZW%rte5>\ {ڱ~Hkb-Q*c0")$xj&T* *5C 0⳱oTEW'E4ubW6J (R) TyYR%Cs~^ oXӽ{a,d$LiyQp&ӆKU#YGր) R kFQXձ6FōcV-+5FڍFmQQF6[EѴjk#h-QbEK[VP.*6(TUEj6+hZF߭Z箶fڄ>}DĀIxߧ>3AMGz<=%c>Y67=V UEGD-]P ,HjR%_jaCeuAiXY16=\"wh=B H/)VB<Ӓۏ -dĈP,^Yeщ3Rݝ@!ٟ0L+&x/ƬD΄"Wi".Ov"U_6,ZEs1!#6_ٴ'1BM<ڧ6Ś&qOL c1.—d1 늑#"&W|- XQ dVЮts5zdXgQLC{:.lCz"mJ8YXH &@bO,sGb9$} S!lÙx`0$Ge Xs\9FRN9ۡ VXqfaԱMwAd\:bȭ^E܍ϔVj %.QhQuV#"P(w!X{sD_2l"M!%:!9lXi7: v08y(TkR"{gzpeK} l:9+ڒ}wrS<Upa3nS#P$AHN/> jgڃ M`r=cś/y,6 i&B#*yټNhuVΌ-gBbxBwhq֯G35CCgSPyֳH(489ݬD$۰E*昳c`M89)kНtЮ}eV&Xc7C!YﮋX%EMdfK.֖֎%ߴ|Q|DpƲNLdp/mG|F1*jGжq5fNUDڒEbmd'Iz̯i_RjH#(X}7}>أ1| >7xYdpiLV7m gU w2Ƈs܈[fD ɺ *b9a})=S[ }>x8TGیjz۶WEZ]@cE4ԅQߗgVkZIuѮBV" 󮹒^Ӧ^¦nLY'bscJf5Ōv^`'1gyqh߷Zs EM]!L4RRxGz c^x=VP6O*AzR/+p'%^]ZYD|5aiG8{&c#wx0?|xwSGNb*R~WTcwސܶ~~olj`}N6΄1,3;|ПVivp|N'hb0-qp~}~YիsU#K{Es Ag~EM ڔ'M?c@>N9ˇCJ'"}gP) (/g4FX+à+|}j;&q?lxq"ӑP3|zJ{*5IYC\E<&q!cBwB~KiPͧϷ?r7!SF|Sf95@ yD+C@GSe3]\"vy]8 i“P`Ip}2gI7IE%$6kS3.)yƥa)hɣN< hR9'NK}:-+ !] A{018%_f2S`6`sbh ^gmѣH=Ebu,WyKMj/K.z_ʜ36e8PʵRK.]5 EF!/,{F%ǧՐOX`ZWp7 PqKur,4_W#Q.Hq4~%{ 0 { n := copy(d.x[d.nx:], p) d.nx += n if d.nx == chunk { block(d, d.x[:]) d.nx = 0 } p = p[n:] } if len(p) >= chunk { n := len(p) &^ (chunk - 1) block(d, p[:n]) p = p[n:] } if len(p) > 0 { d.nx = copy(d.x[:], p) } return } func (d0 *digest) Sum(in []byte) []byte { // Make a copy of d0 so that caller can keep writing and summing. d := *d0 hash := d.checkSum() return append(in, hash[:]...) } func (d *digest) checkSum() [Size]byte { len := d.len // Padding. Add a 1 bit and 0 bits until 56 bytes mod 64. var tmp [64]byte tmp[0] = 0x80 if len%64 < 56 { d.Write(tmp[0 : 56-len%64]) } else { d.Write(tmp[0 : 64+56-len%64]) } // Length in bits. len <<= 3 for i := uint(0); i < 8; i++ { tmp[i] = byte(len >> (56 - 8*i)) } d.Write(tmp[0:8]) if d.nx != 0 { panic("d.nx != 0") } var digest [Size]byte for i, s := range d.h { digest[i*4] = byte(s >> 24) digest[i*4+1] = byte(s >> 16) digest[i*4+2] = byte(s >> 8) digest[i*4+3] = byte(s) } return digest } // Sum returns the SHA1 checksum of the data. func Sum(data []byte) [Size]byte { var d digest d.Reset() d.Write(data) return d.checkSum() } go/src/pkg/crypto/sha1/sha1_test.go0100644000000000000000000001135312412656737017450 0ustar00rootroot00000000000000// Copyright 2009 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. // SHA1 hash algorithm. See RFC 3174. package sha1 import ( "crypto/rand" "fmt" "io" "testing" ) type sha1Test struct { out string in string } var golden = []sha1Test{ {"da39a3ee5e6b4b0d3255bfef95601890afd80709", ""}, {"86f7e437faa5a7fce15d1ddcb9eaeaea377667b8", "a"}, {"da23614e02469a0d7c7bd1bdab5c9c474b1904dc", "ab"}, {"a9993e364706816aba3e25717850c26c9cd0d89d", "abc"}, {"81fe8bfe87576c3ecb22426f8e57847382917acf", "abcd"}, {"03de6c570bfe24bfc328ccd7ca46b76eadaf4334", "abcde"}, {"1f8ac10f23c5b5bc1167bda84b833e5c057a77d2", "abcdef"}, {"2fb5e13419fc89246865e7a324f476ec624e8740", "abcdefg"}, {"425af12a0743502b322e93a015bcf868e324d56a", "abcdefgh"}, {"c63b19f1e4c8b5f76b25c49b8b87f57d8e4872a1", "abcdefghi"}, {"d68c19a0a345b7eab78d5e11e991c026ec60db63", "abcdefghij"}, {"ebf81ddcbe5bf13aaabdc4d65354fdf2044f38a7", "Discard medicine more than two years old."}, {"e5dea09392dd886ca63531aaa00571dc07554bb6", "He who has a shady past knows that nice guys finish last."}, {"45988f7234467b94e3e9494434c96ee3609d8f8f", "I wouldn't marry him with a ten foot pole."}, {"55dee037eb7460d5a692d1ce11330b260e40c988", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave"}, {"b7bc5fb91080c7de6b582ea281f8a396d7c0aee8", "The days of the digital watch are numbered. -Tom Stoppard"}, {"c3aed9358f7c77f523afe86135f06b95b3999797", "Nepal premier won't resign."}, {"6e29d302bf6e3a5e4305ff318d983197d6906bb9", "For every action there is an equal and opposite government program."}, {"597f6a540010f94c15d71806a99a2c8710e747bd", "His money is twice tainted: 'taint yours and 'taint mine."}, {"6859733b2590a8a091cecf50086febc5ceef1e80", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977"}, {"514b2630ec089b8aee18795fc0cf1f4860cdacad", "It's a tiny change to the code and not completely disgusting. - Bob Manchek"}, {"c5ca0d4a7b6676fc7aa72caa41cc3d5df567ed69", "size: a.out: bad magic"}, {"74c51fa9a04eadc8c1bbeaa7fc442f834b90a00a", "The major problem is with sendmail. -Mark Horton"}, {"0b4c4ce5f52c3ad2821852a8dc00217fa18b8b66", "Give me a rock, paper and scissors and I will move the world. CCFestoon"}, {"3ae7937dd790315beb0f48330e8642237c61550a", "If the enemy is within range, then so are you."}, {"410a2b296df92b9a47412b13281df8f830a9f44b", "It's well we cannot hear the screams/That we create in others' dreams."}, {"841e7c85ca1adcddbdd0187f1289acb5c642f7f5", "You remind me of a TV show, but that's all right: I watch it anyway."}, {"163173b825d03b952601376b25212df66763e1db", "C is as portable as Stonehedge!!"}, {"32b0377f2687eb88e22106f133c586ab314d5279", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley"}, {"0885aaf99b569542fd165fa44e322718f4a984e0", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction. Lewis-Randall Rule"}, {"6627d6904d71420b0bf3886ab629623538689f45", "How can you write a big system without C++? -Paul Glick"}, } func TestGolden(t *testing.T) { for i := 0; i < len(golden); i++ { g := golden[i] s := fmt.Sprintf("%x", Sum([]byte(g.in))) if s != g.out { t.Fatalf("Sum function: sha1(%s) = %s want %s", g.in, s, g.out) } c := New() for j := 0; j < 3; j++ { if j < 2 { io.WriteString(c, g.in) } else { io.WriteString(c, g.in[0:len(g.in)/2]) c.Sum(nil) io.WriteString(c, g.in[len(g.in)/2:]) } s := fmt.Sprintf("%x", c.Sum(nil)) if s != g.out { t.Fatalf("sha1[%d](%s) = %s want %s", j, g.in, s, g.out) } c.Reset() } } } func TestSize(t *testing.T) { c := New() if got := c.Size(); got != Size { t.Errorf("Size = %d; want %d", got, Size) } } func TestBlockSize(t *testing.T) { c := New() if got := c.BlockSize(); got != BlockSize { t.Errorf("BlockSize = %d; want %d", got, BlockSize) } } // Tests that blockGeneric (pure Go) and block (in assembly for amd64, 386, arm) match. func TestBlockGeneric(t *testing.T) { gen, asm := New().(*digest), New().(*digest) buf := make([]byte, BlockSize*20) // arbitrary factor rand.Read(buf) blockGeneric(gen, buf) block(asm, buf) if *gen != *asm { t.Error("block and blockGeneric resulted in different states") } } var bench = New() var buf = make([]byte, 8192) func benchmarkSize(b *testing.B, size int) { b.SetBytes(int64(size)) sum := make([]byte, bench.Size()) for i := 0; i < b.N; i++ { bench.Reset() bench.Write(buf[:size]) bench.Sum(sum[:0]) } } func BenchmarkHash8Bytes(b *testing.B) { benchmarkSize(b, 8) } func BenchmarkHash1K(b *testing.B) { benchmarkSize(b, 1024) } func BenchmarkHash8K(b *testing.B) { benchmarkSize(b, 8192) } go/src/pkg/crypto/sha1/sha1block.go0100644000000000000000000000446012412656737017425 0ustar00rootroot00000000000000// Copyright 2009 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 sha1 const ( _K0 = 0x5A827999 _K1 = 0x6ED9EBA1 _K2 = 0x8F1BBCDC _K3 = 0xCA62C1D6 ) // blockGeneric is a portable, pure Go version of the SHA1 block step. // It's used by sha1block_generic.go and tests. func blockGeneric(dig *digest, p []byte) { var w [16]uint32 h0, h1, h2, h3, h4 := dig.h[0], dig.h[1], dig.h[2], dig.h[3], dig.h[4] for len(p) >= chunk { // Can interlace the computation of w with the // rounds below if needed for speed. for i := 0; i < 16; i++ { j := i * 4 w[i] = uint32(p[j])<<24 | uint32(p[j+1])<<16 | uint32(p[j+2])<<8 | uint32(p[j+3]) } a, b, c, d, e := h0, h1, h2, h3, h4 // Each of the four 20-iteration rounds // differs only in the computation of f and // the choice of K (_K0, _K1, etc). i := 0 for ; i < 16; i++ { f := b&c | (^b)&d a5 := a<<5 | a>>(32-5) b30 := b<<30 | b>>(32-30) t := a5 + f + e + w[i&0xf] + _K0 a, b, c, d, e = t, a, b30, c, d } for ; i < 20; i++ { tmp := w[(i-3)&0xf] ^ w[(i-8)&0xf] ^ w[(i-14)&0xf] ^ w[(i)&0xf] w[i&0xf] = tmp<<1 | tmp>>(32-1) f := b&c | (^b)&d a5 := a<<5 | a>>(32-5) b30 := b<<30 | b>>(32-30) t := a5 + f + e + w[i&0xf] + _K0 a, b, c, d, e = t, a, b30, c, d } for ; i < 40; i++ { tmp := w[(i-3)&0xf] ^ w[(i-8)&0xf] ^ w[(i-14)&0xf] ^ w[(i)&0xf] w[i&0xf] = tmp<<1 | tmp>>(32-1) f := b ^ c ^ d a5 := a<<5 | a>>(32-5) b30 := b<<30 | b>>(32-30) t := a5 + f + e + w[i&0xf] + _K1 a, b, c, d, e = t, a, b30, c, d } for ; i < 60; i++ { tmp := w[(i-3)&0xf] ^ w[(i-8)&0xf] ^ w[(i-14)&0xf] ^ w[(i)&0xf] w[i&0xf] = tmp<<1 | tmp>>(32-1) f := ((b | c) & d) | (b & c) a5 := a<<5 | a>>(32-5) b30 := b<<30 | b>>(32-30) t := a5 + f + e + w[i&0xf] + _K2 a, b, c, d, e = t, a, b30, c, d } for ; i < 80; i++ { tmp := w[(i-3)&0xf] ^ w[(i-8)&0xf] ^ w[(i-14)&0xf] ^ w[(i)&0xf] w[i&0xf] = tmp<<1 | tmp>>(32-1) f := b ^ c ^ d a5 := a<<5 | a>>(32-5) b30 := b<<30 | b>>(32-30) t := a5 + f + e + w[i&0xf] + _K3 a, b, c, d, e = t, a, b30, c, d } h0 += a h1 += b h2 += c h3 += d h4 += e p = p[chunk:] } dig.h[0], dig.h[1], dig.h[2], dig.h[3], dig.h[4] = h0, h1, h2, h3, h4 } go/src/pkg/crypto/sha1/sha1block_386.s0100644000000000000000000001372712412656737017670 0ustar00rootroot00000000000000// Copyright 2013 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. #include "../../../cmd/ld/textflag.h" // SHA1 block routine. See sha1block.go for Go equivalent. // // There are 80 rounds of 4 types: // - rounds 0-15 are type 1 and load data (ROUND1 macro). // - rounds 16-19 are type 1 and do not load data (ROUND1x macro). // - rounds 20-39 are type 2 and do not load data (ROUND2 macro). // - rounds 40-59 are type 3 and do not load data (ROUND3 macro). // - rounds 60-79 are type 4 and do not load data (ROUND4 macro). // // Each round loads or shuffles the data, then computes a per-round // function of b, c, d, and then mixes the result into and rotates the // five registers a, b, c, d, e holding the intermediate results. // // The register rotation is implemented by rotating the arguments to // the round macros instead of by explicit move instructions. // Like sha1block_amd64.s, but we keep the data and limit pointers on the stack. // To free up the word pointer (R10 on amd64, DI here), we add it to e during // LOAD/SHUFFLE instead of during MIX. // // The stack holds the intermediate word array - 16 uint32s - at 0(SP) up to 64(SP). // The saved a, b, c, d, e (R11 through R15 on amd64) are at 64(SP) up to 84(SP). // The saved limit pointer (DI on amd64) is at 84(SP). // The saved data pointer (SI on amd64) is at 88(SP). #define LOAD(index, e) \ MOVL 88(SP), SI; \ MOVL (index*4)(SI), DI; \ BSWAPL DI; \ MOVL DI, (index*4)(SP); \ ADDL DI, e #define SHUFFLE(index, e) \ MOVL (((index)&0xf)*4)(SP), DI; \ XORL (((index-3)&0xf)*4)(SP), DI; \ XORL (((index-8)&0xf)*4)(SP), DI; \ XORL (((index-14)&0xf)*4)(SP), DI; \ ROLL $1, DI; \ MOVL DI, (((index)&0xf)*4)(SP); \ ADDL DI, e #define FUNC1(a, b, c, d, e) \ MOVL d, DI; \ XORL c, DI; \ ANDL b, DI; \ XORL d, DI #define FUNC2(a, b, c, d, e) \ MOVL b, DI; \ XORL c, DI; \ XORL d, DI #define FUNC3(a, b, c, d, e) \ MOVL b, SI; \ ORL c, SI; \ ANDL d, SI; \ MOVL b, DI; \ ANDL c, DI; \ ORL SI, DI #define FUNC4 FUNC2 #define MIX(a, b, c, d, e, const) \ ROLL $30, b; \ ADDL DI, e; \ MOVL a, SI; \ ROLL $5, SI; \ LEAL const(e)(SI*1), e #define ROUND1(a, b, c, d, e, index) \ LOAD(index, e); \ FUNC1(a, b, c, d, e); \ MIX(a, b, c, d, e, 0x5A827999) #define ROUND1x(a, b, c, d, e, index) \ SHUFFLE(index, e); \ FUNC1(a, b, c, d, e); \ MIX(a, b, c, d, e, 0x5A827999) #define ROUND2(a, b, c, d, e, index) \ SHUFFLE(index, e); \ FUNC2(a, b, c, d, e); \ MIX(a, b, c, d, e, 0x6ED9EBA1) #define ROUND3(a, b, c, d, e, index) \ SHUFFLE(index, e); \ FUNC3(a, b, c, d, e); \ MIX(a, b, c, d, e, 0x8F1BBCDC) #define ROUND4(a, b, c, d, e, index) \ SHUFFLE(index, e); \ FUNC4(a, b, c, d, e); \ MIX(a, b, c, d, e, 0xCA62C1D6) // func block(dig *digest, p []byte) TEXT ·block(SB),NOSPLIT,$92-16 MOVL dig+0(FP), BP MOVL p+4(FP), SI MOVL p_len+8(FP), DX SHRL $6, DX SHLL $6, DX LEAL (SI)(DX*1), DI MOVL (0*4)(BP), AX MOVL (1*4)(BP), BX MOVL (2*4)(BP), CX MOVL (3*4)(BP), DX MOVL (4*4)(BP), BP CMPL SI, DI JEQ end MOVL DI, 84(SP) loop: MOVL SI, 88(SP) MOVL AX, 64(SP) MOVL BX, 68(SP) MOVL CX, 72(SP) MOVL DX, 76(SP) MOVL BP, 80(SP) ROUND1(AX, BX, CX, DX, BP, 0) ROUND1(BP, AX, BX, CX, DX, 1) ROUND1(DX, BP, AX, BX, CX, 2) ROUND1(CX, DX, BP, AX, BX, 3) ROUND1(BX, CX, DX, BP, AX, 4) ROUND1(AX, BX, CX, DX, BP, 5) ROUND1(BP, AX, BX, CX, DX, 6) ROUND1(DX, BP, AX, BX, CX, 7) ROUND1(CX, DX, BP, AX, BX, 8) ROUND1(BX, CX, DX, BP, AX, 9) ROUND1(AX, BX, CX, DX, BP, 10) ROUND1(BP, AX, BX, CX, DX, 11) ROUND1(DX, BP, AX, BX, CX, 12) ROUND1(CX, DX, BP, AX, BX, 13) ROUND1(BX, CX, DX, BP, AX, 14) ROUND1(AX, BX, CX, DX, BP, 15) ROUND1x(BP, AX, BX, CX, DX, 16) ROUND1x(DX, BP, AX, BX, CX, 17) ROUND1x(CX, DX, BP, AX, BX, 18) ROUND1x(BX, CX, DX, BP, AX, 19) ROUND2(AX, BX, CX, DX, BP, 20) ROUND2(BP, AX, BX, CX, DX, 21) ROUND2(DX, BP, AX, BX, CX, 22) ROUND2(CX, DX, BP, AX, BX, 23) ROUND2(BX, CX, DX, BP, AX, 24) ROUND2(AX, BX, CX, DX, BP, 25) ROUND2(BP, AX, BX, CX, DX, 26) ROUND2(DX, BP, AX, BX, CX, 27) ROUND2(CX, DX, BP, AX, BX, 28) ROUND2(BX, CX, DX, BP, AX, 29) ROUND2(AX, BX, CX, DX, BP, 30) ROUND2(BP, AX, BX, CX, DX, 31) ROUND2(DX, BP, AX, BX, CX, 32) ROUND2(CX, DX, BP, AX, BX, 33) ROUND2(BX, CX, DX, BP, AX, 34) ROUND2(AX, BX, CX, DX, BP, 35) ROUND2(BP, AX, BX, CX, DX, 36) ROUND2(DX, BP, AX, BX, CX, 37) ROUND2(CX, DX, BP, AX, BX, 38) ROUND2(BX, CX, DX, BP, AX, 39) ROUND3(AX, BX, CX, DX, BP, 40) ROUND3(BP, AX, BX, CX, DX, 41) ROUND3(DX, BP, AX, BX, CX, 42) ROUND3(CX, DX, BP, AX, BX, 43) ROUND3(BX, CX, DX, BP, AX, 44) ROUND3(AX, BX, CX, DX, BP, 45) ROUND3(BP, AX, BX, CX, DX, 46) ROUND3(DX, BP, AX, BX, CX, 47) ROUND3(CX, DX, BP, AX, BX, 48) ROUND3(BX, CX, DX, BP, AX, 49) ROUND3(AX, BX, CX, DX, BP, 50) ROUND3(BP, AX, BX, CX, DX, 51) ROUND3(DX, BP, AX, BX, CX, 52) ROUND3(CX, DX, BP, AX, BX, 53) ROUND3(BX, CX, DX, BP, AX, 54) ROUND3(AX, BX, CX, DX, BP, 55) ROUND3(BP, AX, BX, CX, DX, 56) ROUND3(DX, BP, AX, BX, CX, 57) ROUND3(CX, DX, BP, AX, BX, 58) ROUND3(BX, CX, DX, BP, AX, 59) ROUND4(AX, BX, CX, DX, BP, 60) ROUND4(BP, AX, BX, CX, DX, 61) ROUND4(DX, BP, AX, BX, CX, 62) ROUND4(CX, DX, BP, AX, BX, 63) ROUND4(BX, CX, DX, BP, AX, 64) ROUND4(AX, BX, CX, DX, BP, 65) ROUND4(BP, AX, BX, CX, DX, 66) ROUND4(DX, BP, AX, BX, CX, 67) ROUND4(CX, DX, BP, AX, BX, 68) ROUND4(BX, CX, DX, BP, AX, 69) ROUND4(AX, BX, CX, DX, BP, 70) ROUND4(BP, AX, BX, CX, DX, 71) ROUND4(DX, BP, AX, BX, CX, 72) ROUND4(CX, DX, BP, AX, BX, 73) ROUND4(BX, CX, DX, BP, AX, 74) ROUND4(AX, BX, CX, DX, BP, 75) ROUND4(BP, AX, BX, CX, DX, 76) ROUND4(DX, BP, AX, BX, CX, 77) ROUND4(CX, DX, BP, AX, BX, 78) ROUND4(BX, CX, DX, BP, AX, 79) ADDL 64(SP), AX ADDL 68(SP), BX ADDL 72(SP), CX ADDL 76(SP), DX ADDL 80(SP), BP MOVL 88(SP), SI ADDL $64, SI CMPL SI, 84(SP) JB loop end: MOVL dig+0(FP), DI MOVL AX, (0*4)(DI) MOVL BX, (1*4)(DI) MOVL CX, (2*4)(DI) MOVL DX, (3*4)(DI) MOVL BP, (4*4)(DI) RET go/src/pkg/crypto/sha1/sha1block_amd64.s0100644000000000000000000001252612412656737020257 0ustar00rootroot00000000000000// Copyright 2013 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. #include "../../../cmd/ld/textflag.h" // SHA1 block routine. See sha1block.go for Go equivalent. // // There are 80 rounds of 4 types: // - rounds 0-15 are type 1 and load data (ROUND1 macro). // - rounds 16-19 are type 1 and do not load data (ROUND1x macro). // - rounds 20-39 are type 2 and do not load data (ROUND2 macro). // - rounds 40-59 are type 3 and do not load data (ROUND3 macro). // - rounds 60-79 are type 4 and do not load data (ROUND4 macro). // // Each round loads or shuffles the data, then computes a per-round // function of b, c, d, and then mixes the result into and rotates the // five registers a, b, c, d, e holding the intermediate results. // // The register rotation is implemented by rotating the arguments to // the round macros instead of by explicit move instructions. #define LOAD(index) \ MOVL (index*4)(SI), R10; \ BSWAPL R10; \ MOVL R10, (index*4)(SP) #define SHUFFLE(index) \ MOVL (((index)&0xf)*4)(SP), R10; \ XORL (((index-3)&0xf)*4)(SP), R10; \ XORL (((index-8)&0xf)*4)(SP), R10; \ XORL (((index-14)&0xf)*4)(SP), R10; \ ROLL $1, R10; \ MOVL R10, (((index)&0xf)*4)(SP) #define FUNC1(a, b, c, d, e) \ MOVL d, R9; \ XORL c, R9; \ ANDL b, R9; \ XORL d, R9 #define FUNC2(a, b, c, d, e) \ MOVL b, R9; \ XORL c, R9; \ XORL d, R9 #define FUNC3(a, b, c, d, e) \ MOVL b, R8; \ ORL c, R8; \ ANDL d, R8; \ MOVL b, R9; \ ANDL c, R9; \ ORL R8, R9 #define FUNC4 FUNC2 #define MIX(a, b, c, d, e, const) \ ROLL $30, b; \ ADDL R9, e; \ MOVL a, R8; \ ROLL $5, R8; \ LEAL const(e)(R10*1), e; \ ADDL R8, e #define ROUND1(a, b, c, d, e, index) \ LOAD(index); \ FUNC1(a, b, c, d, e); \ MIX(a, b, c, d, e, 0x5A827999) #define ROUND1x(a, b, c, d, e, index) \ SHUFFLE(index); \ FUNC1(a, b, c, d, e); \ MIX(a, b, c, d, e, 0x5A827999) #define ROUND2(a, b, c, d, e, index) \ SHUFFLE(index); \ FUNC2(a, b, c, d, e); \ MIX(a, b, c, d, e, 0x6ED9EBA1) #define ROUND3(a, b, c, d, e, index) \ SHUFFLE(index); \ FUNC3(a, b, c, d, e); \ MIX(a, b, c, d, e, 0x8F1BBCDC) #define ROUND4(a, b, c, d, e, index) \ SHUFFLE(index); \ FUNC4(a, b, c, d, e); \ MIX(a, b, c, d, e, 0xCA62C1D6) TEXT ·block(SB),NOSPLIT,$64-32 MOVQ dig+0(FP), BP MOVQ p_base+8(FP), SI MOVQ p_len+16(FP), DX SHRQ $6, DX SHLQ $6, DX LEAQ (SI)(DX*1), DI MOVL (0*4)(BP), AX MOVL (1*4)(BP), BX MOVL (2*4)(BP), CX MOVL (3*4)(BP), DX MOVL (4*4)(BP), BP CMPQ SI, DI JEQ end loop: MOVL AX, R11 MOVL BX, R12 MOVL CX, R13 MOVL DX, R14 MOVL BP, R15 ROUND1(AX, BX, CX, DX, BP, 0) ROUND1(BP, AX, BX, CX, DX, 1) ROUND1(DX, BP, AX, BX, CX, 2) ROUND1(CX, DX, BP, AX, BX, 3) ROUND1(BX, CX, DX, BP, AX, 4) ROUND1(AX, BX, CX, DX, BP, 5) ROUND1(BP, AX, BX, CX, DX, 6) ROUND1(DX, BP, AX, BX, CX, 7) ROUND1(CX, DX, BP, AX, BX, 8) ROUND1(BX, CX, DX, BP, AX, 9) ROUND1(AX, BX, CX, DX, BP, 10) ROUND1(BP, AX, BX, CX, DX, 11) ROUND1(DX, BP, AX, BX, CX, 12) ROUND1(CX, DX, BP, AX, BX, 13) ROUND1(BX, CX, DX, BP, AX, 14) ROUND1(AX, BX, CX, DX, BP, 15) ROUND1x(BP, AX, BX, CX, DX, 16) ROUND1x(DX, BP, AX, BX, CX, 17) ROUND1x(CX, DX, BP, AX, BX, 18) ROUND1x(BX, CX, DX, BP, AX, 19) ROUND2(AX, BX, CX, DX, BP, 20) ROUND2(BP, AX, BX, CX, DX, 21) ROUND2(DX, BP, AX, BX, CX, 22) ROUND2(CX, DX, BP, AX, BX, 23) ROUND2(BX, CX, DX, BP, AX, 24) ROUND2(AX, BX, CX, DX, BP, 25) ROUND2(BP, AX, BX, CX, DX, 26) ROUND2(DX, BP, AX, BX, CX, 27) ROUND2(CX, DX, BP, AX, BX, 28) ROUND2(BX, CX, DX, BP, AX, 29) ROUND2(AX, BX, CX, DX, BP, 30) ROUND2(BP, AX, BX, CX, DX, 31) ROUND2(DX, BP, AX, BX, CX, 32) ROUND2(CX, DX, BP, AX, BX, 33) ROUND2(BX, CX, DX, BP, AX, 34) ROUND2(AX, BX, CX, DX, BP, 35) ROUND2(BP, AX, BX, CX, DX, 36) ROUND2(DX, BP, AX, BX, CX, 37) ROUND2(CX, DX, BP, AX, BX, 38) ROUND2(BX, CX, DX, BP, AX, 39) ROUND3(AX, BX, CX, DX, BP, 40) ROUND3(BP, AX, BX, CX, DX, 41) ROUND3(DX, BP, AX, BX, CX, 42) ROUND3(CX, DX, BP, AX, BX, 43) ROUND3(BX, CX, DX, BP, AX, 44) ROUND3(AX, BX, CX, DX, BP, 45) ROUND3(BP, AX, BX, CX, DX, 46) ROUND3(DX, BP, AX, BX, CX, 47) ROUND3(CX, DX, BP, AX, BX, 48) ROUND3(BX, CX, DX, BP, AX, 49) ROUND3(AX, BX, CX, DX, BP, 50) ROUND3(BP, AX, BX, CX, DX, 51) ROUND3(DX, BP, AX, BX, CX, 52) ROUND3(CX, DX, BP, AX, BX, 53) ROUND3(BX, CX, DX, BP, AX, 54) ROUND3(AX, BX, CX, DX, BP, 55) ROUND3(BP, AX, BX, CX, DX, 56) ROUND3(DX, BP, AX, BX, CX, 57) ROUND3(CX, DX, BP, AX, BX, 58) ROUND3(BX, CX, DX, BP, AX, 59) ROUND4(AX, BX, CX, DX, BP, 60) ROUND4(BP, AX, BX, CX, DX, 61) ROUND4(DX, BP, AX, BX, CX, 62) ROUND4(CX, DX, BP, AX, BX, 63) ROUND4(BX, CX, DX, BP, AX, 64) ROUND4(AX, BX, CX, DX, BP, 65) ROUND4(BP, AX, BX, CX, DX, 66) ROUND4(DX, BP, AX, BX, CX, 67) ROUND4(CX, DX, BP, AX, BX, 68) ROUND4(BX, CX, DX, BP, AX, 69) ROUND4(AX, BX, CX, DX, BP, 70) ROUND4(BP, AX, BX, CX, DX, 71) ROUND4(DX, BP, AX, BX, CX, 72) ROUND4(CX, DX, BP, AX, BX, 73) ROUND4(BX, CX, DX, BP, AX, 74) ROUND4(AX, BX, CX, DX, BP, 75) ROUND4(BP, AX, BX, CX, DX, 76) ROUND4(DX, BP, AX, BX, CX, 77) ROUND4(CX, DX, BP, AX, BX, 78) ROUND4(BX, CX, DX, BP, AX, 79) ADDL R11, AX ADDL R12, BX ADDL R13, CX ADDL R14, DX ADDL R15, BP ADDQ $64, SI CMPQ SI, DI JB loop end: MOVQ dig+0(FP), DI MOVL AX, (0*4)(DI) MOVL BX, (1*4)(DI) MOVL CX, (2*4)(DI) MOVL DX, (3*4)(DI) MOVL BP, (4*4)(DI) RET go/src/pkg/crypto/sha1/sha1block_amd64p32.s0100644000000000000000000001276712412656737020613 0ustar00rootroot00000000000000// Copyright 2013 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. #include "../../../cmd/ld/textflag.h" // SHA1 block routine. See sha1block.go for Go equivalent. // // There are 80 rounds of 4 types: // - rounds 0-15 are type 1 and load data (ROUND1 macro). // - rounds 16-19 are type 1 and do not load data (ROUND1x macro). // - rounds 20-39 are type 2 and do not load data (ROUND2 macro). // - rounds 40-59 are type 3 and do not load data (ROUND3 macro). // - rounds 60-79 are type 4 and do not load data (ROUND4 macro). // // Each round loads or shuffles the data, then computes a per-round // function of b, c, d, and then mixes the result into and rotates the // five registers a, b, c, d, e holding the intermediate results. // // The register rotation is implemented by rotating the arguments to // the round macros instead of by explicit move instructions. // // amd64p32 version. // To ensure safety for Native Client, avoids use of BP and R15 // as well as two-register addressing modes. #define LOAD(index) \ MOVL (index*4)(SI), R10; \ BSWAPL R10; \ MOVL R10, (index*4)(SP) #define SHUFFLE(index) \ MOVL (((index)&0xf)*4)(SP), R10; \ XORL (((index-3)&0xf)*4)(SP), R10; \ XORL (((index-8)&0xf)*4)(SP), R10; \ XORL (((index-14)&0xf)*4)(SP), R10; \ ROLL $1, R10; \ MOVL R10, (((index)&0xf)*4)(SP) #define FUNC1(a, b, c, d, e) \ MOVL d, R9; \ XORL c, R9; \ ANDL b, R9; \ XORL d, R9 #define FUNC2(a, b, c, d, e) \ MOVL b, R9; \ XORL c, R9; \ XORL d, R9 #define FUNC3(a, b, c, d, e) \ MOVL b, R8; \ ORL c, R8; \ ANDL d, R8; \ MOVL b, R9; \ ANDL c, R9; \ ORL R8, R9 #define FUNC4 FUNC2 #define MIX(a, b, c, d, e, const) \ ROLL $30, b; \ ADDL R9, e; \ MOVL a, R8; \ ROLL $5, R8; \ LEAL const(e)(R10*1), e; \ ADDL R8, e #define ROUND1(a, b, c, d, e, index) \ LOAD(index); \ FUNC1(a, b, c, d, e); \ MIX(a, b, c, d, e, 0x5A827999) #define ROUND1x(a, b, c, d, e, index) \ SHUFFLE(index); \ FUNC1(a, b, c, d, e); \ MIX(a, b, c, d, e, 0x5A827999) #define ROUND2(a, b, c, d, e, index) \ SHUFFLE(index); \ FUNC2(a, b, c, d, e); \ MIX(a, b, c, d, e, 0x6ED9EBA1) #define ROUND3(a, b, c, d, e, index) \ SHUFFLE(index); \ FUNC3(a, b, c, d, e); \ MIX(a, b, c, d, e, 0x8F1BBCDC) #define ROUND4(a, b, c, d, e, index) \ SHUFFLE(index); \ FUNC4(a, b, c, d, e); \ MIX(a, b, c, d, e, 0xCA62C1D6) TEXT ·block(SB),NOSPLIT,$64-32 MOVL dig+0(FP), R14 MOVL p_base+4(FP), SI MOVL p_len+8(FP), DX SHRQ $6, DX SHLQ $6, DX LEAQ (SI)(DX*1), DI MOVL (0*4)(R14), AX MOVL (1*4)(R14), BX MOVL (2*4)(R14), CX MOVL (3*4)(R14), DX MOVL (4*4)(R14), R13 CMPQ SI, DI JEQ end loop: #define BP R13 /* keep diff from sha1block_amd64.s small */ ROUND1(AX, BX, CX, DX, BP, 0) ROUND1(BP, AX, BX, CX, DX, 1) ROUND1(DX, BP, AX, BX, CX, 2) ROUND1(CX, DX, BP, AX, BX, 3) ROUND1(BX, CX, DX, BP, AX, 4) ROUND1(AX, BX, CX, DX, BP, 5) ROUND1(BP, AX, BX, CX, DX, 6) ROUND1(DX, BP, AX, BX, CX, 7) ROUND1(CX, DX, BP, AX, BX, 8) ROUND1(BX, CX, DX, BP, AX, 9) ROUND1(AX, BX, CX, DX, BP, 10) ROUND1(BP, AX, BX, CX, DX, 11) ROUND1(DX, BP, AX, BX, CX, 12) ROUND1(CX, DX, BP, AX, BX, 13) ROUND1(BX, CX, DX, BP, AX, 14) ROUND1(AX, BX, CX, DX, BP, 15) ROUND1x(BP, AX, BX, CX, DX, 16) ROUND1x(DX, BP, AX, BX, CX, 17) ROUND1x(CX, DX, BP, AX, BX, 18) ROUND1x(BX, CX, DX, BP, AX, 19) ROUND2(AX, BX, CX, DX, BP, 20) ROUND2(BP, AX, BX, CX, DX, 21) ROUND2(DX, BP, AX, BX, CX, 22) ROUND2(CX, DX, BP, AX, BX, 23) ROUND2(BX, CX, DX, BP, AX, 24) ROUND2(AX, BX, CX, DX, BP, 25) ROUND2(BP, AX, BX, CX, DX, 26) ROUND2(DX, BP, AX, BX, CX, 27) ROUND2(CX, DX, BP, AX, BX, 28) ROUND2(BX, CX, DX, BP, AX, 29) ROUND2(AX, BX, CX, DX, BP, 30) ROUND2(BP, AX, BX, CX, DX, 31) ROUND2(DX, BP, AX, BX, CX, 32) ROUND2(CX, DX, BP, AX, BX, 33) ROUND2(BX, CX, DX, BP, AX, 34) ROUND2(AX, BX, CX, DX, BP, 35) ROUND2(BP, AX, BX, CX, DX, 36) ROUND2(DX, BP, AX, BX, CX, 37) ROUND2(CX, DX, BP, AX, BX, 38) ROUND2(BX, CX, DX, BP, AX, 39) ROUND3(AX, BX, CX, DX, BP, 40) ROUND3(BP, AX, BX, CX, DX, 41) ROUND3(DX, BP, AX, BX, CX, 42) ROUND3(CX, DX, BP, AX, BX, 43) ROUND3(BX, CX, DX, BP, AX, 44) ROUND3(AX, BX, CX, DX, BP, 45) ROUND3(BP, AX, BX, CX, DX, 46) ROUND3(DX, BP, AX, BX, CX, 47) ROUND3(CX, DX, BP, AX, BX, 48) ROUND3(BX, CX, DX, BP, AX, 49) ROUND3(AX, BX, CX, DX, BP, 50) ROUND3(BP, AX, BX, CX, DX, 51) ROUND3(DX, BP, AX, BX, CX, 52) ROUND3(CX, DX, BP, AX, BX, 53) ROUND3(BX, CX, DX, BP, AX, 54) ROUND3(AX, BX, CX, DX, BP, 55) ROUND3(BP, AX, BX, CX, DX, 56) ROUND3(DX, BP, AX, BX, CX, 57) ROUND3(CX, DX, BP, AX, BX, 58) ROUND3(BX, CX, DX, BP, AX, 59) ROUND4(AX, BX, CX, DX, BP, 60) ROUND4(BP, AX, BX, CX, DX, 61) ROUND4(DX, BP, AX, BX, CX, 62) ROUND4(CX, DX, BP, AX, BX, 63) ROUND4(BX, CX, DX, BP, AX, 64) ROUND4(AX, BX, CX, DX, BP, 65) ROUND4(BP, AX, BX, CX, DX, 66) ROUND4(DX, BP, AX, BX, CX, 67) ROUND4(CX, DX, BP, AX, BX, 68) ROUND4(BX, CX, DX, BP, AX, 69) ROUND4(AX, BX, CX, DX, BP, 70) ROUND4(BP, AX, BX, CX, DX, 71) ROUND4(DX, BP, AX, BX, CX, 72) ROUND4(CX, DX, BP, AX, BX, 73) ROUND4(BX, CX, DX, BP, AX, 74) ROUND4(AX, BX, CX, DX, BP, 75) ROUND4(BP, AX, BX, CX, DX, 76) ROUND4(DX, BP, AX, BX, CX, 77) ROUND4(CX, DX, BP, AX, BX, 78) ROUND4(BX, CX, DX, BP, AX, 79) #undef BP ADDL (0*4)(R14), AX ADDL (1*4)(R14), BX ADDL (2*4)(R14), CX ADDL (3*4)(R14), DX ADDL (4*4)(R14), R13 MOVL AX, (0*4)(R14) MOVL BX, (1*4)(R14) MOVL CX, (2*4)(R14) MOVL DX, (3*4)(R14) MOVL R13, (4*4)(R14) ADDQ $64, SI CMPQ SI, DI JB loop end: RET go/src/pkg/crypto/sha1/sha1block_arm.s0100644000000000000000000001277112412656737020125 0ustar00rootroot00000000000000// 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. // // ARM version of md5block.go #include "../../../cmd/ld/textflag.h" // SHA1 block routine. See sha1block.go for Go equivalent. // // There are 80 rounds of 4 types: // - rounds 0-15 are type 1 and load data (ROUND1 macro). // - rounds 16-19 are type 1 and do not load data (ROUND1x macro). // - rounds 20-39 are type 2 and do not load data (ROUND2 macro). // - rounds 40-59 are type 3 and do not load data (ROUND3 macro). // - rounds 60-79 are type 4 and do not load data (ROUND4 macro). // // Each round loads or shuffles the data, then computes a per-round // function of b, c, d, and then mixes the result into and rotates the // five registers a, b, c, d, e holding the intermediate results. // // The register rotation is implemented by rotating the arguments to // the round macros instead of by explicit move instructions. // Register definitions data = 0 // Pointer to incoming data const = 1 // Current constant for SHA round a = 2 // SHA1 accumulator b = 3 // SHA1 accumulator c = 4 // SHA1 accumulator d = 5 // SHA1 accumulator e = 6 // SHA1 accumulator t0 = 7 // Temporary t1 = 8 // Temporary // r9, r10 are forbidden // r11 is OK provided you check the assembler that no synthetic instructions use it t2 = 11 // Temporary ctr = 12 // loop counter w = 14 // point to w buffer // func block(dig *digest, p []byte) // 0(FP) is *digest // 4(FP) is p.array (struct Slice) // 8(FP) is p.len //12(FP) is p.cap // // Stack frame p_end = -4 // -4(SP) pointer to the end of data p_data = p_end - 4 // -8(SP) current data pointer w_buf = p_data - 4*80 // -328(SP) 80 words temporary buffer w uint32[80] saved = w_buf - 4*5 // -348(SP) saved sha1 registers a,b,c,d,e - these must be last // Total size +4 for saved LR is 352 // w[i] = p[j]<<24 | p[j+1]<<16 | p[j+2]<<8 | p[j+3] // e += w[i] #define LOAD(e) \ MOVBU 2(R(data)), R(t0) ; \ MOVBU 3(R(data)), R(t1) ; \ MOVBU 1(R(data)), R(t2) ; \ ORR R(t0)<<8, R(t1), R(t0) ; \ MOVBU.P 4(R(data)), R(t1) ; \ ORR R(t2)<<16, R(t0), R(t0) ; \ ORR R(t1)<<24, R(t0), R(t0) ; \ MOVW.P R(t0), 4(R(w)) ; \ ADD R(t0), R(e), R(e) // tmp := w[(i-3)&0xf] ^ w[(i-8)&0xf] ^ w[(i-14)&0xf] ^ w[(i)&0xf] // w[i&0xf] = tmp<<1 | tmp>>(32-1) // e += w[i&0xf] #define SHUFFLE(e) \ MOVW (-16*4)(R(w)), R(t0) ; \ MOVW (-14*4)(R(w)), R(t1) ; \ MOVW (-8*4)(R(w)), R(t2) ; \ EOR R(t0), R(t1), R(t0) ; \ MOVW (-3*4)(R(w)), R(t1) ; \ EOR R(t2), R(t0), R(t0) ; \ EOR R(t0), R(t1), R(t0) ; \ MOVW R(t0)@>(32-1), R(t0) ; \ MOVW.P R(t0), 4(R(w)) ; \ ADD R(t0), R(e), R(e) // t1 = (b & c) | ((~b) & d) #define FUNC1(a, b, c, d, e) \ MVN R(b), R(t1) ; \ AND R(b), R(c), R(t0) ; \ AND R(d), R(t1), R(t1) ; \ ORR R(t0), R(t1), R(t1) // t1 = b ^ c ^ d #define FUNC2(a, b, c, d, e) \ EOR R(b), R(c), R(t1) ; \ EOR R(d), R(t1), R(t1) // t1 = (b & c) | (b & d) | (c & d) = // t1 = (b & c) | ((b | c) & d) #define FUNC3(a, b, c, d, e) \ ORR R(b), R(c), R(t0) ; \ AND R(b), R(c), R(t1) ; \ AND R(d), R(t0), R(t0) ; \ ORR R(t0), R(t1), R(t1) #define FUNC4 FUNC2 // a5 := a<<5 | a>>(32-5) // b = b<<30 | b>>(32-30) // e = a5 + t1 + e + const #define MIX(a, b, c, d, e) \ ADD R(t1), R(e), R(e) ; \ MOVW R(b)@>(32-30), R(b) ; \ ADD R(a)@>(32-5), R(e), R(e) ; \ ADD R(const), R(e), R(e) #define ROUND1(a, b, c, d, e) \ LOAD(e) ; \ FUNC1(a, b, c, d, e) ; \ MIX(a, b, c, d, e) #define ROUND1x(a, b, c, d, e) \ SHUFFLE(e) ; \ FUNC1(a, b, c, d, e) ; \ MIX(a, b, c, d, e) #define ROUND2(a, b, c, d, e) \ SHUFFLE(e) ; \ FUNC2(a, b, c, d, e) ; \ MIX(a, b, c, d, e) #define ROUND3(a, b, c, d, e) \ SHUFFLE(e) ; \ FUNC3(a, b, c, d, e) ; \ MIX(a, b, c, d, e) #define ROUND4(a, b, c, d, e) \ SHUFFLE(e) ; \ FUNC4(a, b, c, d, e) ; \ MIX(a, b, c, d, e) // func block(dig *digest, p []byte) TEXT ·block(SB), 0, $352-16 MOVW p+4(FP), R(data) // pointer to the data MOVW p_len+8(FP), R(t0) // number of bytes ADD R(data), R(t0) MOVW R(t0), p_end(SP) // pointer to end of data // Load up initial SHA1 accumulator MOVW dig+0(FP), R(t0) MOVM.IA (R(t0)), [R(a),R(b),R(c),R(d),R(e)] loop: // Save registers at SP+4 onwards MOVM.IB [R(a),R(b),R(c),R(d),R(e)], (R13) MOVW $w_buf(SP), R(w) MOVW $0x5A827999, R(const) MOVW $3, R(ctr) loop1: ROUND1(a, b, c, d, e) ROUND1(e, a, b, c, d) ROUND1(d, e, a, b, c) ROUND1(c, d, e, a, b) ROUND1(b, c, d, e, a) SUB.S $1, R(ctr) BNE loop1 ROUND1(a, b, c, d, e) ROUND1x(e, a, b, c, d) ROUND1x(d, e, a, b, c) ROUND1x(c, d, e, a, b) ROUND1x(b, c, d, e, a) MOVW $0x6ED9EBA1, R(const) MOVW $4, R(ctr) loop2: ROUND2(a, b, c, d, e) ROUND2(e, a, b, c, d) ROUND2(d, e, a, b, c) ROUND2(c, d, e, a, b) ROUND2(b, c, d, e, a) SUB.S $1, R(ctr) BNE loop2 MOVW $0x8F1BBCDC, R(const) MOVW $4, R(ctr) loop3: ROUND3(a, b, c, d, e) ROUND3(e, a, b, c, d) ROUND3(d, e, a, b, c) ROUND3(c, d, e, a, b) ROUND3(b, c, d, e, a) SUB.S $1, R(ctr) BNE loop3 MOVW $0xCA62C1D6, R(const) MOVW $4, R(ctr) loop4: ROUND4(a, b, c, d, e) ROUND4(e, a, b, c, d) ROUND4(d, e, a, b, c) ROUND4(c, d, e, a, b) ROUND4(b, c, d, e, a) SUB.S $1, R(ctr) BNE loop4 // Accumulate - restoring registers from SP+4 MOVM.IB (R13), [R(t0),R(t1),R(t2),R(ctr),R(w)] ADD R(t0), R(a) ADD R(t1), R(b) ADD R(t2), R(c) ADD R(ctr), R(d) ADD R(w), R(e) MOVW p_end(SP), R(t0) CMP R(t0), R(data) BLO loop // Save final SHA1 accumulator MOVW dig+0(FP), R(t0) MOVM.IA [R(a),R(b),R(c),R(d),R(e)], (R(t0)) RET go/src/pkg/crypto/sha1/sha1block_decl.go0100644000000000000000000000040212412656737020404 0ustar00rootroot00000000000000// Copyright 2013 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 amd64 amd64p32 arm 386 package sha1 //go:noescape func block(dig *digest, p []byte) go/src/pkg/crypto/sha1/sha1block_generic.go0100644000000000000000000000035512412656737021120 0ustar00rootroot00000000000000// 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 !amd64,!amd64p32,!386,!arm package sha1 var block = blockGeneric go/src/pkg/crypto/sha2560040755000000000000000000000000012412656737015323 5ustar00rootroot00000000000000go/src/pkg/crypto/sha256/sha256.go0100644000000000000000000000700512412656737016740 0ustar00rootroot00000000000000// Copyright 2009 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 sha256 implements the SHA224 and SHA256 hash algorithms as defined // in FIPS 180-4. package sha256 import ( "crypto" "hash" ) func init() { crypto.RegisterHash(crypto.SHA224, New224) crypto.RegisterHash(crypto.SHA256, New) } // The size of a SHA256 checksum in bytes. const Size = 32 // The size of a SHA224 checksum in bytes. const Size224 = 28 // The blocksize of SHA256 and SHA224 in bytes. const BlockSize = 64 const ( chunk = 64 init0 = 0x6A09E667 init1 = 0xBB67AE85 init2 = 0x3C6EF372 init3 = 0xA54FF53A init4 = 0x510E527F init5 = 0x9B05688C init6 = 0x1F83D9AB init7 = 0x5BE0CD19 init0_224 = 0xC1059ED8 init1_224 = 0x367CD507 init2_224 = 0x3070DD17 init3_224 = 0xF70E5939 init4_224 = 0xFFC00B31 init5_224 = 0x68581511 init6_224 = 0x64F98FA7 init7_224 = 0xBEFA4FA4 ) // digest represents the partial evaluation of a checksum. type digest struct { h [8]uint32 x [chunk]byte nx int len uint64 is224 bool // mark if this digest is SHA-224 } func (d *digest) Reset() { if !d.is224 { d.h[0] = init0 d.h[1] = init1 d.h[2] = init2 d.h[3] = init3 d.h[4] = init4 d.h[5] = init5 d.h[6] = init6 d.h[7] = init7 } else { d.h[0] = init0_224 d.h[1] = init1_224 d.h[2] = init2_224 d.h[3] = init3_224 d.h[4] = init4_224 d.h[5] = init5_224 d.h[6] = init6_224 d.h[7] = init7_224 } d.nx = 0 d.len = 0 } // New returns a new hash.Hash computing the SHA256 checksum. func New() hash.Hash { d := new(digest) d.Reset() return d } // New224 returns a new hash.Hash computing the SHA224 checksum. func New224() hash.Hash { d := new(digest) d.is224 = true d.Reset() return d } func (d *digest) Size() int { if !d.is224 { return Size } return Size224 } func (d *digest) BlockSize() int { return BlockSize } func (d *digest) Write(p []byte) (nn int, err error) { nn = len(p) d.len += uint64(nn) if d.nx > 0 { n := copy(d.x[d.nx:], p) d.nx += n if d.nx == chunk { block(d, d.x[:]) d.nx = 0 } p = p[n:] } if len(p) >= chunk { n := len(p) &^ (chunk - 1) block(d, p[:n]) p = p[n:] } if len(p) > 0 { d.nx = copy(d.x[:], p) } return } func (d0 *digest) Sum(in []byte) []byte { // Make a copy of d0 so that caller can keep writing and summing. d := *d0 hash := d.checkSum() if d.is224 { return append(in, hash[:Size224]...) } return append(in, hash[:]...) } func (d *digest) checkSum() [Size]byte { len := d.len // Padding. Add a 1 bit and 0 bits until 56 bytes mod 64. var tmp [64]byte tmp[0] = 0x80 if len%64 < 56 { d.Write(tmp[0 : 56-len%64]) } else { d.Write(tmp[0 : 64+56-len%64]) } // Length in bits. len <<= 3 for i := uint(0); i < 8; i++ { tmp[i] = byte(len >> (56 - 8*i)) } d.Write(tmp[0:8]) if d.nx != 0 { panic("d.nx != 0") } h := d.h[:] if d.is224 { h = d.h[:7] } var digest [Size]byte for i, s := range h { digest[i*4] = byte(s >> 24) digest[i*4+1] = byte(s >> 16) digest[i*4+2] = byte(s >> 8) digest[i*4+3] = byte(s) } return digest } // Sum256 returns the SHA256 checksum of the data. func Sum256(data []byte) [Size]byte { var d digest d.Reset() d.Write(data) return d.checkSum() } // Sum224 returns the SHA224 checksum of the data. func Sum224(data []byte) (sum224 [Size224]byte) { var d digest d.is224 = true d.Reset() d.Write(data) sum := d.checkSum() copy(sum224[:], sum[:Size224]) return } go/src/pkg/crypto/sha256/sha256_test.go0100644000000000000000000002203412412656737017776 0ustar00rootroot00000000000000// Copyright 2009 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. // SHA256 hash algorithm. See FIPS 180-2. package sha256 import ( "fmt" "io" "testing" ) type sha256Test struct { out string in string } var golden = []sha256Test{ {"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", ""}, {"ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb", "a"}, {"fb8e20fc2e4c3f248c60c39bd652f3c1347298bb977b8b4d5903b85055620603", "ab"}, {"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad", "abc"}, {"88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589", "abcd"}, {"36bbe50ed96841d10443bcb670d6554f0a34b761be67ec9c4a8ad2c0c44ca42c", "abcde"}, {"bef57ec7f53a6d40beb640a780a639c83bc29ac8a9816f1fc6c5c6dcd93c4721", "abcdef"}, {"7d1a54127b222502f5b79b5fb0803061152a44f92b37e23c6527baf665d4da9a", "abcdefg"}, {"9c56cc51b374c3ba189210d5b6d4bf57790d351c96c47c02190ecf1e430635ab", "abcdefgh"}, {"19cc02f26df43cc571bc9ed7b0c4d29224a3ec229529221725ef76d021c8326f", "abcdefghi"}, {"72399361da6a7754fec986dca5b7cbaf1c810a28ded4abaf56b2106d06cb78b0", "abcdefghij"}, {"a144061c271f152da4d151034508fed1c138b8c976339de229c3bb6d4bbb4fce", "Discard medicine more than two years old."}, {"6dae5caa713a10ad04b46028bf6dad68837c581616a1589a265a11288d4bb5c4", "He who has a shady past knows that nice guys finish last."}, {"ae7a702a9509039ddbf29f0765e70d0001177914b86459284dab8b348c2dce3f", "I wouldn't marry him with a ten foot pole."}, {"6748450b01c568586715291dfa3ee018da07d36bb7ea6f180c1af6270215c64f", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave"}, {"14b82014ad2b11f661b5ae6a99b75105c2ffac278cd071cd6c05832793635774", "The days of the digital watch are numbered. -Tom Stoppard"}, {"7102cfd76e2e324889eece5d6c41921b1e142a4ac5a2692be78803097f6a48d8", "Nepal premier won't resign."}, {"23b1018cd81db1d67983c5f7417c44da9deb582459e378d7a068552ea649dc9f", "For every action there is an equal and opposite government program."}, {"8001f190dfb527261c4cfcab70c98e8097a7a1922129bc4096950e57c7999a5a", "His money is twice tainted: 'taint yours and 'taint mine."}, {"8c87deb65505c3993eb24b7a150c4155e82eee6960cf0c3a8114ff736d69cad5", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977"}, {"bfb0a67a19cdec3646498b2e0f751bddc41bba4b7f30081b0b932aad214d16d7", "It's a tiny change to the code and not completely disgusting. - Bob Manchek"}, {"7f9a0b9bf56332e19f5a0ec1ad9c1425a153da1c624868fda44561d6b74daf36", "size: a.out: bad magic"}, {"b13f81b8aad9e3666879af19886140904f7f429ef083286195982a7588858cfc", "The major problem is with sendmail. -Mark Horton"}, {"b26c38d61519e894480c70c8374ea35aa0ad05b2ae3d6674eec5f52a69305ed4", "Give me a rock, paper and scissors and I will move the world. CCFestoon"}, {"049d5e26d4f10222cd841a119e38bd8d2e0d1129728688449575d4ff42b842c1", "If the enemy is within range, then so are you."}, {"0e116838e3cc1c1a14cd045397e29b4d087aa11b0853fc69ec82e90330d60949", "It's well we cannot hear the screams/That we create in others' dreams."}, {"4f7d8eb5bcf11de2a56b971021a444aa4eafd6ecd0f307b5109e4e776cd0fe46", "You remind me of a TV show, but that's all right: I watch it anyway."}, {"61c0cc4c4bd8406d5120b3fb4ebc31ce87667c162f29468b3c779675a85aebce", "C is as portable as Stonehedge!!"}, {"1fb2eb3688093c4a3f80cd87a5547e2ce940a4f923243a79a2a1e242220693ac", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley"}, {"395585ce30617b62c80b93e8208ce866d4edc811a177fdb4b82d3911d8696423", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction. Lewis-Randall Rule"}, {"4f9b189a13d030838269dce846b16a1ce9ce81fe63e65de2f636863336a98fe6", "How can you write a big system without C++? -Paul Glick"}, } var golden224 = []sha256Test{ {"d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f", ""}, {"abd37534c7d9a2efb9465de931cd7055ffdb8879563ae98078d6d6d5", "a"}, {"db3cda86d4429a1d39c148989566b38f7bda0156296bd364ba2f878b", "ab"}, {"23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7", "abc"}, {"a76654d8e3550e9a2d67a0eeb6c67b220e5885eddd3fde135806e601", "abcd"}, {"bdd03d560993e675516ba5a50638b6531ac2ac3d5847c61916cfced6", "abcde"}, {"7043631cb415556a275a4ebecb802c74ee9f6153908e1792a90b6a98", "abcdef"}, {"d1884e711701ad81abe0c77a3b0ea12e19ba9af64077286c72fc602d", "abcdefg"}, {"17eb7d40f0356f8598e89eafad5f6c759b1f822975d9c9b737c8a517", "abcdefgh"}, {"aeb35915346c584db820d2de7af3929ffafef9222a9bcb26516c7334", "abcdefghi"}, {"d35e1e5af29ddb0d7e154357df4ad9842afee527c689ee547f753188", "abcdefghij"}, {"19297f1cef7ddc8a7e947f5c5a341e10f7245045e425db67043988d7", "Discard medicine more than two years old."}, {"0f10c2eb436251f777fbbd125e260d36aecf180411726c7c885f599a", "He who has a shady past knows that nice guys finish last."}, {"4d1842104919f314cad8a3cd20b3cba7e8ed3e7abed62b57441358f6", "I wouldn't marry him with a ten foot pole."}, {"a8ba85c6fe0c48fbffc72bbb2f03fcdbc87ae2dc7a56804d1590fb3b", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave"}, {"5543fbab26e67e8885b1a852d567d1cb8b9bfe42e0899584c50449a9", "The days of the digital watch are numbered. -Tom Stoppard"}, {"65ca107390f5da9efa05d28e57b221657edc7e43a9a18fb15b053ddb", "Nepal premier won't resign."}, {"84953962be366305a9cc9b5cd16ed019edc37ac96c0deb3e12cca116", "For every action there is an equal and opposite government program."}, {"35a189ce987151dfd00b3577583cc6a74b9869eecf894459cb52038d", "His money is twice tainted: 'taint yours and 'taint mine."}, {"2fc333713983edfd4ef2c0da6fb6d6415afb94987c91e4069eb063e6", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977"}, {"cbe32d38d577a1b355960a4bc3c659c2dc4670859a19777a875842c4", "It's a tiny change to the code and not completely disgusting. - Bob Manchek"}, {"a2dc118ce959e027576413a7b440c875cdc8d40df9141d6ef78a57e1", "size: a.out: bad magic"}, {"d10787e24052bcff26dc484787a54ed819e4e4511c54890ee977bf81", "The major problem is with sendmail. -Mark Horton"}, {"62efcf16ab8a893acdf2f348aaf06b63039ff1bf55508c830532c9fb", "Give me a rock, paper and scissors and I will move the world. CCFestoon"}, {"3e9b7e4613c59f58665104c5fa86c272db5d3a2ff30df5bb194a5c99", "If the enemy is within range, then so are you."}, {"5999c208b8bdf6d471bb7c359ac5b829e73a8211dff686143a4e7f18", "It's well we cannot hear the screams/That we create in others' dreams."}, {"3b2d67ff54eabc4ef737b14edf87c64280ef582bcdf2a6d56908b405", "You remind me of a TV show, but that's all right: I watch it anyway."}, {"d0733595d20e4d3d6b5c565a445814d1bbb2fd08b9a3b8ffb97930c6", "C is as portable as Stonehedge!!"}, {"43fb8aeed8a833175c9295c1165415f98c866ef08a4922959d673507", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley"}, {"ec18e66e93afc4fb1604bc2baedbfd20b44c43d76e65c0996d7851c6", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction. Lewis-Randall Rule"}, {"86ed2eaa9c75ba98396e5c9fb2f679ecf0ea2ed1e0ee9ceecb4a9332", "How can you write a big system without C++? -Paul Glick"}, } func TestGolden(t *testing.T) { for i := 0; i < len(golden); i++ { g := golden[i] s := fmt.Sprintf("%x", Sum256([]byte(g.in))) if s != g.out { t.Fatalf("Sum256 function: sha256(%s) = %s want %s", g.in, s, g.out) } c := New() for j := 0; j < 3; j++ { if j < 2 { io.WriteString(c, g.in) } else { io.WriteString(c, g.in[0:len(g.in)/2]) c.Sum(nil) io.WriteString(c, g.in[len(g.in)/2:]) } s := fmt.Sprintf("%x", c.Sum(nil)) if s != g.out { t.Fatalf("sha256[%d](%s) = %s want %s", j, g.in, s, g.out) } c.Reset() } } for i := 0; i < len(golden224); i++ { g := golden224[i] s := fmt.Sprintf("%x", Sum224([]byte(g.in))) if s != g.out { t.Fatalf("Sum224 function: sha224(%s) = %s want %s", g.in, s, g.out) } c := New224() for j := 0; j < 3; j++ { if j < 2 { io.WriteString(c, g.in) } else { io.WriteString(c, g.in[0:len(g.in)/2]) c.Sum(nil) io.WriteString(c, g.in[len(g.in)/2:]) } s := fmt.Sprintf("%x", c.Sum(nil)) if s != g.out { t.Fatalf("sha224[%d](%s) = %s want %s", j, g.in, s, g.out) } c.Reset() } } } func TestSize(t *testing.T) { c := New() if got := c.Size(); got != Size { t.Errorf("Size = %d; want %d", got, Size) } c = New224() if got := c.Size(); got != Size224 { t.Errorf("New224.Size = %d; want %d", got, Size224) } } func TestBlockSize(t *testing.T) { c := New() if got := c.BlockSize(); got != BlockSize { t.Errorf("BlockSize = %d want %d", got, BlockSize) } } var bench = New() var buf = make([]byte, 8192) func benchmarkSize(b *testing.B, size int) { b.SetBytes(int64(size)) sum := make([]byte, bench.Size()) for i := 0; i < b.N; i++ { bench.Reset() bench.Write(buf[:size]) bench.Sum(sum[:0]) } } func BenchmarkHash8Bytes(b *testing.B) { benchmarkSize(b, 8) } func BenchmarkHash1K(b *testing.B) { benchmarkSize(b, 1024) } func BenchmarkHash8K(b *testing.B) { benchmarkSize(b, 8192) } go/src/pkg/crypto/sha256/sha256block.go0100644000000000000000000000460312412656737017754 0ustar00rootroot00000000000000// Copyright 2009 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 !386,!amd64 // SHA256 block step. // In its own file so that a faster assembly or C version // can be substituted easily. package sha256 var _K = []uint32{ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2, } func block(dig *digest, p []byte) { var w [64]uint32 h0, h1, h2, h3, h4, h5, h6, h7 := dig.h[0], dig.h[1], dig.h[2], dig.h[3], dig.h[4], dig.h[5], dig.h[6], dig.h[7] for len(p) >= chunk { // Can interlace the computation of w with the // rounds below if needed for speed. for i := 0; i < 16; i++ { j := i * 4 w[i] = uint32(p[j])<<24 | uint32(p[j+1])<<16 | uint32(p[j+2])<<8 | uint32(p[j+3]) } for i := 16; i < 64; i++ { v1 := w[i-2] t1 := (v1>>17 | v1<<(32-17)) ^ (v1>>19 | v1<<(32-19)) ^ (v1 >> 10) v2 := w[i-15] t2 := (v2>>7 | v2<<(32-7)) ^ (v2>>18 | v2<<(32-18)) ^ (v2 >> 3) w[i] = t1 + w[i-7] + t2 + w[i-16] } a, b, c, d, e, f, g, h := h0, h1, h2, h3, h4, h5, h6, h7 for i := 0; i < 64; i++ { t1 := h + ((e>>6 | e<<(32-6)) ^ (e>>11 | e<<(32-11)) ^ (e>>25 | e<<(32-25))) + ((e & f) ^ (^e & g)) + _K[i] + w[i] t2 := ((a>>2 | a<<(32-2)) ^ (a>>13 | a<<(32-13)) ^ (a>>22 | a<<(32-22))) + ((a & b) ^ (a & c) ^ (b & c)) h = g g = f f = e e = d + t1 d = c c = b b = a a = t1 + t2 } h0 += a h1 += b h2 += c h3 += d h4 += e h5 += f h6 += g h7 += h p = p[chunk:] } dig.h[0], dig.h[1], dig.h[2], dig.h[3], dig.h[4], dig.h[5], dig.h[6], dig.h[7] = h0, h1, h2, h3, h4, h5, h6, h7 } go/src/pkg/crypto/sha256/sha256block_386.s0100644000000000000000000002031312412656737020205 0ustar00rootroot00000000000000// Copyright 2013 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. // SHA256 block routine. See sha256block.go for Go equivalent. // // The algorithm is detailed in FIPS 180-4: // // http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf // // Wt = Mt; for 0 <= t <= 15 // Wt = SIGMA1(Wt-2) + SIGMA0(Wt-15) + Wt-16; for 16 <= t <= 63 // // a = H0 // b = H1 // c = H2 // d = H3 // e = H4 // f = H5 // g = H6 // h = H7 // // for t = 0 to 63 { // T1 = h + BIGSIGMA1(e) + Ch(e,f,g) + Kt + Wt // T2 = BIGSIGMA0(a) + Maj(a,b,c) // h = g // g = f // f = e // e = d + T1 // d = c // c = b // b = a // a = T1 + T2 // } // // H0 = a + H0 // H1 = b + H1 // H2 = c + H2 // H3 = d + H3 // H4 = e + H4 // H5 = f + H5 // H6 = g + H6 // H7 = h + H7 // Wt = Mt; for 0 <= t <= 15 #define MSGSCHEDULE0(index) \ MOVL (index*4)(SI), AX; \ BSWAPL AX; \ MOVL AX, (index*4)(BP) // Wt = SIGMA1(Wt-2) + Wt-7 + SIGMA0(Wt-15) + Wt-16; for 16 <= t <= 63 // SIGMA0(x) = ROTR(7,x) XOR ROTR(18,x) XOR SHR(3,x) // SIGMA1(x) = ROTR(17,x) XOR ROTR(19,x) XOR SHR(10,x) #define MSGSCHEDULE1(index) \ MOVL ((index-2)*4)(BP), AX; \ MOVL AX, CX; \ RORL $17, AX; \ MOVL CX, DX; \ RORL $19, CX; \ SHRL $10, DX; \ MOVL ((index-15)*4)(BP), BX; \ XORL CX, AX; \ MOVL BX, CX; \ XORL DX, AX; \ RORL $7, BX; \ MOVL CX, DX; \ SHRL $3, DX; \ RORL $18, CX; \ ADDL ((index-7)*4)(BP), AX; \ XORL CX, BX; \ XORL DX, BX; \ ADDL ((index-16)*4)(BP), BX; \ ADDL BX, AX; \ MOVL AX, ((index)*4)(BP) // Calculate T1 in AX - uses AX, BX, CX and DX registers. // Wt is passed in AX. // T1 = h + BIGSIGMA1(e) + Ch(e, f, g) + Kt + Wt // BIGSIGMA1(x) = ROTR(6,x) XOR ROTR(11,x) XOR ROTR(25,x) // Ch(x, y, z) = (x AND y) XOR (NOT x AND z) #define SHA256T1(const, e, f, g, h) \ MOVL (h*4)(DI), BX; \ ADDL AX, BX; \ MOVL (e*4)(DI), AX; \ ADDL $const, BX; \ MOVL (e*4)(DI), CX; \ RORL $6, AX; \ MOVL (e*4)(DI), DX; \ RORL $11, CX; \ XORL CX, AX; \ MOVL (e*4)(DI), CX; \ RORL $25, DX; \ ANDL (f*4)(DI), CX; \ XORL AX, DX; \ MOVL (e*4)(DI), AX; \ NOTL AX; \ ADDL DX, BX; \ ANDL (g*4)(DI), AX; \ XORL CX, AX; \ ADDL BX, AX // Calculate T2 in BX - uses AX, BX, CX and DX registers. // T2 = BIGSIGMA0(a) + Maj(a, b, c) // BIGSIGMA0(x) = ROTR(2,x) XOR ROTR(13,x) XOR ROTR(22,x) // Maj(x, y, z) = (x AND y) XOR (x AND z) XOR (y AND z) #define SHA256T2(a, b, c) \ MOVL (a*4)(DI), AX; \ MOVL (c*4)(DI), BX; \ RORL $2, AX; \ MOVL (a*4)(DI), DX; \ ANDL (b*4)(DI), BX; \ RORL $13, DX; \ MOVL (a*4)(DI), CX; \ ANDL (c*4)(DI), CX; \ XORL DX, AX; \ XORL CX, BX; \ MOVL (a*4)(DI), DX; \ MOVL (b*4)(DI), CX; \ RORL $22, DX; \ ANDL (a*4)(DI), CX; \ XORL CX, BX; \ XORL DX, AX; \ ADDL AX, BX // Calculate T1 and T2, then e = d + T1 and a = T1 + T2. // The values for e and a are stored in d and h, ready for rotation. #define SHA256ROUND(index, const, a, b, c, d, e, f, g, h) \ SHA256T1(const, e, f, g, h); \ MOVL AX, 292(SP); \ SHA256T2(a, b, c); \ MOVL 292(SP), AX; \ ADDL AX, BX; \ ADDL AX, (d*4)(DI); \ MOVL BX, (h*4)(DI) #define SHA256ROUND0(index, const, a, b, c, d, e, f, g, h) \ MSGSCHEDULE0(index); \ SHA256ROUND(index, const, a, b, c, d, e, f, g, h) #define SHA256ROUND1(index, const, a, b, c, d, e, f, g, h) \ MSGSCHEDULE1(index); \ SHA256ROUND(index, const, a, b, c, d, e, f, g, h) TEXT ·block(SB),0,$296-12 MOVL p_base+4(FP), SI MOVL p_len+8(FP), DX SHRL $6, DX SHLL $6, DX LEAL (SI)(DX*1), DI MOVL DI, 288(SP) CMPL SI, DI JEQ end LEAL 256(SP), DI // variables MOVL dig+0(FP), BP MOVL (0*4)(BP), AX // a = H0 MOVL AX, (0*4)(DI) MOVL (1*4)(BP), BX // b = H1 MOVL BX, (1*4)(DI) MOVL (2*4)(BP), CX // c = H2 MOVL CX, (2*4)(DI) MOVL (3*4)(BP), DX // d = H3 MOVL DX, (3*4)(DI) MOVL (4*4)(BP), AX // e = H4 MOVL AX, (4*4)(DI) MOVL (5*4)(BP), BX // f = H5 MOVL BX, (5*4)(DI) MOVL (6*4)(BP), CX // g = H6 MOVL CX, (6*4)(DI) MOVL (7*4)(BP), DX // h = H7 MOVL DX, (7*4)(DI) loop: MOVL SP, BP // message schedule SHA256ROUND0(0, 0x428a2f98, 0, 1, 2, 3, 4, 5, 6, 7) SHA256ROUND0(1, 0x71374491, 7, 0, 1, 2, 3, 4, 5, 6) SHA256ROUND0(2, 0xb5c0fbcf, 6, 7, 0, 1, 2, 3, 4, 5) SHA256ROUND0(3, 0xe9b5dba5, 5, 6, 7, 0, 1, 2, 3, 4) SHA256ROUND0(4, 0x3956c25b, 4, 5, 6, 7, 0, 1, 2, 3) SHA256ROUND0(5, 0x59f111f1, 3, 4, 5, 6, 7, 0, 1, 2) SHA256ROUND0(6, 0x923f82a4, 2, 3, 4, 5, 6, 7, 0, 1) SHA256ROUND0(7, 0xab1c5ed5, 1, 2, 3, 4, 5, 6, 7, 0) SHA256ROUND0(8, 0xd807aa98, 0, 1, 2, 3, 4, 5, 6, 7) SHA256ROUND0(9, 0x12835b01, 7, 0, 1, 2, 3, 4, 5, 6) SHA256ROUND0(10, 0x243185be, 6, 7, 0, 1, 2, 3, 4, 5) SHA256ROUND0(11, 0x550c7dc3, 5, 6, 7, 0, 1, 2, 3, 4) SHA256ROUND0(12, 0x72be5d74, 4, 5, 6, 7, 0, 1, 2, 3) SHA256ROUND0(13, 0x80deb1fe, 3, 4, 5, 6, 7, 0, 1, 2) SHA256ROUND0(14, 0x9bdc06a7, 2, 3, 4, 5, 6, 7, 0, 1) SHA256ROUND0(15, 0xc19bf174, 1, 2, 3, 4, 5, 6, 7, 0) SHA256ROUND1(16, 0xe49b69c1, 0, 1, 2, 3, 4, 5, 6, 7) SHA256ROUND1(17, 0xefbe4786, 7, 0, 1, 2, 3, 4, 5, 6) SHA256ROUND1(18, 0x0fc19dc6, 6, 7, 0, 1, 2, 3, 4, 5) SHA256ROUND1(19, 0x240ca1cc, 5, 6, 7, 0, 1, 2, 3, 4) SHA256ROUND1(20, 0x2de92c6f, 4, 5, 6, 7, 0, 1, 2, 3) SHA256ROUND1(21, 0x4a7484aa, 3, 4, 5, 6, 7, 0, 1, 2) SHA256ROUND1(22, 0x5cb0a9dc, 2, 3, 4, 5, 6, 7, 0, 1) SHA256ROUND1(23, 0x76f988da, 1, 2, 3, 4, 5, 6, 7, 0) SHA256ROUND1(24, 0x983e5152, 0, 1, 2, 3, 4, 5, 6, 7) SHA256ROUND1(25, 0xa831c66d, 7, 0, 1, 2, 3, 4, 5, 6) SHA256ROUND1(26, 0xb00327c8, 6, 7, 0, 1, 2, 3, 4, 5) SHA256ROUND1(27, 0xbf597fc7, 5, 6, 7, 0, 1, 2, 3, 4) SHA256ROUND1(28, 0xc6e00bf3, 4, 5, 6, 7, 0, 1, 2, 3) SHA256ROUND1(29, 0xd5a79147, 3, 4, 5, 6, 7, 0, 1, 2) SHA256ROUND1(30, 0x06ca6351, 2, 3, 4, 5, 6, 7, 0, 1) SHA256ROUND1(31, 0x14292967, 1, 2, 3, 4, 5, 6, 7, 0) SHA256ROUND1(32, 0x27b70a85, 0, 1, 2, 3, 4, 5, 6, 7) SHA256ROUND1(33, 0x2e1b2138, 7, 0, 1, 2, 3, 4, 5, 6) SHA256ROUND1(34, 0x4d2c6dfc, 6, 7, 0, 1, 2, 3, 4, 5) SHA256ROUND1(35, 0x53380d13, 5, 6, 7, 0, 1, 2, 3, 4) SHA256ROUND1(36, 0x650a7354, 4, 5, 6, 7, 0, 1, 2, 3) SHA256ROUND1(37, 0x766a0abb, 3, 4, 5, 6, 7, 0, 1, 2) SHA256ROUND1(38, 0x81c2c92e, 2, 3, 4, 5, 6, 7, 0, 1) SHA256ROUND1(39, 0x92722c85, 1, 2, 3, 4, 5, 6, 7, 0) SHA256ROUND1(40, 0xa2bfe8a1, 0, 1, 2, 3, 4, 5, 6, 7) SHA256ROUND1(41, 0xa81a664b, 7, 0, 1, 2, 3, 4, 5, 6) SHA256ROUND1(42, 0xc24b8b70, 6, 7, 0, 1, 2, 3, 4, 5) SHA256ROUND1(43, 0xc76c51a3, 5, 6, 7, 0, 1, 2, 3, 4) SHA256ROUND1(44, 0xd192e819, 4, 5, 6, 7, 0, 1, 2, 3) SHA256ROUND1(45, 0xd6990624, 3, 4, 5, 6, 7, 0, 1, 2) SHA256ROUND1(46, 0xf40e3585, 2, 3, 4, 5, 6, 7, 0, 1) SHA256ROUND1(47, 0x106aa070, 1, 2, 3, 4, 5, 6, 7, 0) SHA256ROUND1(48, 0x19a4c116, 0, 1, 2, 3, 4, 5, 6, 7) SHA256ROUND1(49, 0x1e376c08, 7, 0, 1, 2, 3, 4, 5, 6) SHA256ROUND1(50, 0x2748774c, 6, 7, 0, 1, 2, 3, 4, 5) SHA256ROUND1(51, 0x34b0bcb5, 5, 6, 7, 0, 1, 2, 3, 4) SHA256ROUND1(52, 0x391c0cb3, 4, 5, 6, 7, 0, 1, 2, 3) SHA256ROUND1(53, 0x4ed8aa4a, 3, 4, 5, 6, 7, 0, 1, 2) SHA256ROUND1(54, 0x5b9cca4f, 2, 3, 4, 5, 6, 7, 0, 1) SHA256ROUND1(55, 0x682e6ff3, 1, 2, 3, 4, 5, 6, 7, 0) SHA256ROUND1(56, 0x748f82ee, 0, 1, 2, 3, 4, 5, 6, 7) SHA256ROUND1(57, 0x78a5636f, 7, 0, 1, 2, 3, 4, 5, 6) SHA256ROUND1(58, 0x84c87814, 6, 7, 0, 1, 2, 3, 4, 5) SHA256ROUND1(59, 0x8cc70208, 5, 6, 7, 0, 1, 2, 3, 4) SHA256ROUND1(60, 0x90befffa, 4, 5, 6, 7, 0, 1, 2, 3) SHA256ROUND1(61, 0xa4506ceb, 3, 4, 5, 6, 7, 0, 1, 2) SHA256ROUND1(62, 0xbef9a3f7, 2, 3, 4, 5, 6, 7, 0, 1) SHA256ROUND1(63, 0xc67178f2, 1, 2, 3, 4, 5, 6, 7, 0) MOVL dig+0(FP), BP MOVL (0*4)(BP), AX // H0 = a + H0 ADDL (0*4)(DI), AX MOVL AX, (0*4)(DI) MOVL AX, (0*4)(BP) MOVL (1*4)(BP), BX // H1 = b + H1 ADDL (1*4)(DI), BX MOVL BX, (1*4)(DI) MOVL BX, (1*4)(BP) MOVL (2*4)(BP), CX // H2 = c + H2 ADDL (2*4)(DI), CX MOVL CX, (2*4)(DI) MOVL CX, (2*4)(BP) MOVL (3*4)(BP), DX // H3 = d + H3 ADDL (3*4)(DI), DX MOVL DX, (3*4)(DI) MOVL DX, (3*4)(BP) MOVL (4*4)(BP), AX // H4 = e + H4 ADDL (4*4)(DI), AX MOVL AX, (4*4)(DI) MOVL AX, (4*4)(BP) MOVL (5*4)(BP), BX // H5 = f + H5 ADDL (5*4)(DI), BX MOVL BX, (5*4)(DI) MOVL BX, (5*4)(BP) MOVL (6*4)(BP), CX // H6 = g + H6 ADDL (6*4)(DI), CX MOVL CX, (6*4)(DI) MOVL CX, (6*4)(BP) MOVL (7*4)(BP), DX // H7 = h + H7 ADDL (7*4)(DI), DX MOVL DX, (7*4)(DI) MOVL DX, (7*4)(BP) ADDL $64, SI CMPL SI, 288(SP) JB loop end: RET go/src/pkg/crypto/sha256/sha256block_amd64.s0100644000000000000000000002070412412656737020604 0ustar00rootroot00000000000000// Copyright 2013 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. #include "../../../cmd/ld/textflag.h" // SHA256 block routine. See sha256block.go for Go equivalent. // // The algorithm is detailed in FIPS 180-4: // // http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf // // Wt = Mt; for 0 <= t <= 15 // Wt = SIGMA1(Wt-2) + SIGMA0(Wt-15) + Wt-16; for 16 <= t <= 63 // // a = H0 // b = H1 // c = H2 // d = H3 // e = H4 // f = H5 // g = H6 // h = H7 // // for t = 0 to 63 { // T1 = h + BIGSIGMA1(e) + Ch(e,f,g) + Kt + Wt // T2 = BIGSIGMA0(a) + Maj(a,b,c) // h = g // g = f // f = e // e = d + T1 // d = c // c = b // b = a // a = T1 + T2 // } // // H0 = a + H0 // H1 = b + H1 // H2 = c + H2 // H3 = d + H3 // H4 = e + H4 // H5 = f + H5 // H6 = g + H6 // H7 = h + H7 // Wt = Mt; for 0 <= t <= 15 #define MSGSCHEDULE0(index) \ MOVL (index*4)(SI), AX; \ BSWAPL AX; \ MOVL AX, (index*4)(BP) // Wt = SIGMA1(Wt-2) + Wt-7 + SIGMA0(Wt-15) + Wt-16; for 16 <= t <= 63 // SIGMA0(x) = ROTR(7,x) XOR ROTR(18,x) XOR SHR(3,x) // SIGMA1(x) = ROTR(17,x) XOR ROTR(19,x) XOR SHR(10,x) #define MSGSCHEDULE1(index) \ MOVL ((index-2)*4)(BP), AX; \ MOVL AX, CX; \ RORL $17, AX; \ MOVL CX, DX; \ RORL $19, CX; \ SHRL $10, DX; \ MOVL ((index-15)*4)(BP), BX; \ XORL CX, AX; \ MOVL BX, CX; \ XORL DX, AX; \ RORL $7, BX; \ MOVL CX, DX; \ SHRL $3, DX; \ RORL $18, CX; \ ADDL ((index-7)*4)(BP), AX; \ XORL CX, BX; \ XORL DX, BX; \ ADDL ((index-16)*4)(BP), BX; \ ADDL BX, AX; \ MOVL AX, ((index)*4)(BP) // Calculate T1 in AX - uses AX, CX and DX registers. // h is also used as an accumulator. Wt is passed in AX. // T1 = h + BIGSIGMA1(e) + Ch(e, f, g) + Kt + Wt // BIGSIGMA1(x) = ROTR(6,x) XOR ROTR(11,x) XOR ROTR(25,x) // Ch(x, y, z) = (x AND y) XOR (NOT x AND z) #define SHA256T1(const, e, f, g, h) \ ADDL AX, h; \ MOVL e, AX; \ ADDL $const, h; \ MOVL e, CX; \ RORL $6, AX; \ MOVL e, DX; \ RORL $11, CX; \ XORL CX, AX; \ MOVL e, CX; \ RORL $25, DX; \ ANDL f, CX; \ XORL AX, DX; \ MOVL e, AX; \ NOTL AX; \ ADDL DX, h; \ ANDL g, AX; \ XORL CX, AX; \ ADDL h, AX // Calculate T2 in BX - uses BX, CX, DX and DI registers. // T2 = BIGSIGMA0(a) + Maj(a, b, c) // BIGSIGMA0(x) = ROTR(2,x) XOR ROTR(13,x) XOR ROTR(22,x) // Maj(x, y, z) = (x AND y) XOR (x AND z) XOR (y AND z) #define SHA256T2(a, b, c) \ MOVL a, DI; \ MOVL c, BX; \ RORL $2, DI; \ MOVL a, DX; \ ANDL b, BX; \ RORL $13, DX; \ MOVL a, CX; \ ANDL c, CX; \ XORL DX, DI; \ XORL CX, BX; \ MOVL a, DX; \ MOVL b, CX; \ RORL $22, DX; \ ANDL a, CX; \ XORL CX, BX; \ XORL DX, DI; \ ADDL DI, BX // Calculate T1 and T2, then e = d + T1 and a = T1 + T2. // The values for e and a are stored in d and h, ready for rotation. #define SHA256ROUND(index, const, a, b, c, d, e, f, g, h) \ SHA256T1(const, e, f, g, h); \ SHA256T2(a, b, c); \ MOVL BX, h; \ ADDL AX, d; \ ADDL AX, h #define SHA256ROUND0(index, const, a, b, c, d, e, f, g, h) \ MSGSCHEDULE0(index); \ SHA256ROUND(index, const, a, b, c, d, e, f, g, h) #define SHA256ROUND1(index, const, a, b, c, d, e, f, g, h) \ MSGSCHEDULE1(index); \ SHA256ROUND(index, const, a, b, c, d, e, f, g, h) TEXT ·block(SB),0,$264-32 MOVQ p_base+8(FP), SI MOVQ p_len+16(FP), DX SHRQ $6, DX SHLQ $6, DX LEAQ (SI)(DX*1), DI MOVQ DI, 256(SP) CMPQ SI, DI JEQ end MOVQ dig+0(FP), BP MOVL (0*4)(BP), R8 // a = H0 MOVL (1*4)(BP), R9 // b = H1 MOVL (2*4)(BP), R10 // c = H2 MOVL (3*4)(BP), R11 // d = H3 MOVL (4*4)(BP), R12 // e = H4 MOVL (5*4)(BP), R13 // f = H5 MOVL (6*4)(BP), R14 // g = H6 MOVL (7*4)(BP), R15 // h = H7 loop: MOVQ SP, BP // message schedule SHA256ROUND0(0, 0x428a2f98, R8, R9, R10, R11, R12, R13, R14, R15) SHA256ROUND0(1, 0x71374491, R15, R8, R9, R10, R11, R12, R13, R14) SHA256ROUND0(2, 0xb5c0fbcf, R14, R15, R8, R9, R10, R11, R12, R13) SHA256ROUND0(3, 0xe9b5dba5, R13, R14, R15, R8, R9, R10, R11, R12) SHA256ROUND0(4, 0x3956c25b, R12, R13, R14, R15, R8, R9, R10, R11) SHA256ROUND0(5, 0x59f111f1, R11, R12, R13, R14, R15, R8, R9, R10) SHA256ROUND0(6, 0x923f82a4, R10, R11, R12, R13, R14, R15, R8, R9) SHA256ROUND0(7, 0xab1c5ed5, R9, R10, R11, R12, R13, R14, R15, R8) SHA256ROUND0(8, 0xd807aa98, R8, R9, R10, R11, R12, R13, R14, R15) SHA256ROUND0(9, 0x12835b01, R15, R8, R9, R10, R11, R12, R13, R14) SHA256ROUND0(10, 0x243185be, R14, R15, R8, R9, R10, R11, R12, R13) SHA256ROUND0(11, 0x550c7dc3, R13, R14, R15, R8, R9, R10, R11, R12) SHA256ROUND0(12, 0x72be5d74, R12, R13, R14, R15, R8, R9, R10, R11) SHA256ROUND0(13, 0x80deb1fe, R11, R12, R13, R14, R15, R8, R9, R10) SHA256ROUND0(14, 0x9bdc06a7, R10, R11, R12, R13, R14, R15, R8, R9) SHA256ROUND0(15, 0xc19bf174, R9, R10, R11, R12, R13, R14, R15, R8) SHA256ROUND1(16, 0xe49b69c1, R8, R9, R10, R11, R12, R13, R14, R15) SHA256ROUND1(17, 0xefbe4786, R15, R8, R9, R10, R11, R12, R13, R14) SHA256ROUND1(18, 0x0fc19dc6, R14, R15, R8, R9, R10, R11, R12, R13) SHA256ROUND1(19, 0x240ca1cc, R13, R14, R15, R8, R9, R10, R11, R12) SHA256ROUND1(20, 0x2de92c6f, R12, R13, R14, R15, R8, R9, R10, R11) SHA256ROUND1(21, 0x4a7484aa, R11, R12, R13, R14, R15, R8, R9, R10) SHA256ROUND1(22, 0x5cb0a9dc, R10, R11, R12, R13, R14, R15, R8, R9) SHA256ROUND1(23, 0x76f988da, R9, R10, R11, R12, R13, R14, R15, R8) SHA256ROUND1(24, 0x983e5152, R8, R9, R10, R11, R12, R13, R14, R15) SHA256ROUND1(25, 0xa831c66d, R15, R8, R9, R10, R11, R12, R13, R14) SHA256ROUND1(26, 0xb00327c8, R14, R15, R8, R9, R10, R11, R12, R13) SHA256ROUND1(27, 0xbf597fc7, R13, R14, R15, R8, R9, R10, R11, R12) SHA256ROUND1(28, 0xc6e00bf3, R12, R13, R14, R15, R8, R9, R10, R11) SHA256ROUND1(29, 0xd5a79147, R11, R12, R13, R14, R15, R8, R9, R10) SHA256ROUND1(30, 0x06ca6351, R10, R11, R12, R13, R14, R15, R8, R9) SHA256ROUND1(31, 0x14292967, R9, R10, R11, R12, R13, R14, R15, R8) SHA256ROUND1(32, 0x27b70a85, R8, R9, R10, R11, R12, R13, R14, R15) SHA256ROUND1(33, 0x2e1b2138, R15, R8, R9, R10, R11, R12, R13, R14) SHA256ROUND1(34, 0x4d2c6dfc, R14, R15, R8, R9, R10, R11, R12, R13) SHA256ROUND1(35, 0x53380d13, R13, R14, R15, R8, R9, R10, R11, R12) SHA256ROUND1(36, 0x650a7354, R12, R13, R14, R15, R8, R9, R10, R11) SHA256ROUND1(37, 0x766a0abb, R11, R12, R13, R14, R15, R8, R9, R10) SHA256ROUND1(38, 0x81c2c92e, R10, R11, R12, R13, R14, R15, R8, R9) SHA256ROUND1(39, 0x92722c85, R9, R10, R11, R12, R13, R14, R15, R8) SHA256ROUND1(40, 0xa2bfe8a1, R8, R9, R10, R11, R12, R13, R14, R15) SHA256ROUND1(41, 0xa81a664b, R15, R8, R9, R10, R11, R12, R13, R14) SHA256ROUND1(42, 0xc24b8b70, R14, R15, R8, R9, R10, R11, R12, R13) SHA256ROUND1(43, 0xc76c51a3, R13, R14, R15, R8, R9, R10, R11, R12) SHA256ROUND1(44, 0xd192e819, R12, R13, R14, R15, R8, R9, R10, R11) SHA256ROUND1(45, 0xd6990624, R11, R12, R13, R14, R15, R8, R9, R10) SHA256ROUND1(46, 0xf40e3585, R10, R11, R12, R13, R14, R15, R8, R9) SHA256ROUND1(47, 0x106aa070, R9, R10, R11, R12, R13, R14, R15, R8) SHA256ROUND1(48, 0x19a4c116, R8, R9, R10, R11, R12, R13, R14, R15) SHA256ROUND1(49, 0x1e376c08, R15, R8, R9, R10, R11, R12, R13, R14) SHA256ROUND1(50, 0x2748774c, R14, R15, R8, R9, R10, R11, R12, R13) SHA256ROUND1(51, 0x34b0bcb5, R13, R14, R15, R8, R9, R10, R11, R12) SHA256ROUND1(52, 0x391c0cb3, R12, R13, R14, R15, R8, R9, R10, R11) SHA256ROUND1(53, 0x4ed8aa4a, R11, R12, R13, R14, R15, R8, R9, R10) SHA256ROUND1(54, 0x5b9cca4f, R10, R11, R12, R13, R14, R15, R8, R9) SHA256ROUND1(55, 0x682e6ff3, R9, R10, R11, R12, R13, R14, R15, R8) SHA256ROUND1(56, 0x748f82ee, R8, R9, R10, R11, R12, R13, R14, R15) SHA256ROUND1(57, 0x78a5636f, R15, R8, R9, R10, R11, R12, R13, R14) SHA256ROUND1(58, 0x84c87814, R14, R15, R8, R9, R10, R11, R12, R13) SHA256ROUND1(59, 0x8cc70208, R13, R14, R15, R8, R9, R10, R11, R12) SHA256ROUND1(60, 0x90befffa, R12, R13, R14, R15, R8, R9, R10, R11) SHA256ROUND1(61, 0xa4506ceb, R11, R12, R13, R14, R15, R8, R9, R10) SHA256ROUND1(62, 0xbef9a3f7, R10, R11, R12, R13, R14, R15, R8, R9) SHA256ROUND1(63, 0xc67178f2, R9, R10, R11, R12, R13, R14, R15, R8) MOVQ dig+0(FP), BP ADDL (0*4)(BP), R8 // H0 = a + H0 MOVL R8, (0*4)(BP) ADDL (1*4)(BP), R9 // H1 = b + H1 MOVL R9, (1*4)(BP) ADDL (2*4)(BP), R10 // H2 = c + H2 MOVL R10, (2*4)(BP) ADDL (3*4)(BP), R11 // H3 = d + H3 MOVL R11, (3*4)(BP) ADDL (4*4)(BP), R12 // H4 = e + H4 MOVL R12, (4*4)(BP) ADDL (5*4)(BP), R13 // H5 = f + H5 MOVL R13, (5*4)(BP) ADDL (6*4)(BP), R14 // H6 = g + H6 MOVL R14, (6*4)(BP) ADDL (7*4)(BP), R15 // H7 = h + H7 MOVL R15, (7*4)(BP) ADDQ $64, SI CMPQ SI, 256(SP) JB loop end: RET go/src/pkg/crypto/sha256/sha256block_decl.go0100644000000000000000000000036712412656737020746 0ustar00rootroot00000000000000// Copyright 2013 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 386 amd64 package sha256 //go:noescape func block(dig *digest, p []byte) go/src/pkg/crypto/sha5120040755000000000000000000000000012412656737015316 5ustar00rootroot00000000000000go/src/pkg/crypto/sha512/sha512.go0100644000000000000000000000744612412656737016737 0ustar00rootroot00000000000000// Copyright 2009 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 sha512 implements the SHA384 and SHA512 hash algorithms as defined // in FIPS 180-2. package sha512 import ( "crypto" "hash" ) func init() { crypto.RegisterHash(crypto.SHA384, New384) crypto.RegisterHash(crypto.SHA512, New) } // The size of a SHA512 checksum in bytes. const Size = 64 // The size of a SHA384 checksum in bytes. const Size384 = 48 // The blocksize of SHA512 and SHA384 in bytes. const BlockSize = 128 const ( chunk = 128 init0 = 0x6a09e667f3bcc908 init1 = 0xbb67ae8584caa73b init2 = 0x3c6ef372fe94f82b init3 = 0xa54ff53a5f1d36f1 init4 = 0x510e527fade682d1 init5 = 0x9b05688c2b3e6c1f init6 = 0x1f83d9abfb41bd6b init7 = 0x5be0cd19137e2179 init0_384 = 0xcbbb9d5dc1059ed8 init1_384 = 0x629a292a367cd507 init2_384 = 0x9159015a3070dd17 init3_384 = 0x152fecd8f70e5939 init4_384 = 0x67332667ffc00b31 init5_384 = 0x8eb44a8768581511 init6_384 = 0xdb0c2e0d64f98fa7 init7_384 = 0x47b5481dbefa4fa4 ) // digest represents the partial evaluation of a checksum. type digest struct { h [8]uint64 x [chunk]byte nx int len uint64 is384 bool // mark if this digest is SHA-384 } func (d *digest) Reset() { if !d.is384 { d.h[0] = init0 d.h[1] = init1 d.h[2] = init2 d.h[3] = init3 d.h[4] = init4 d.h[5] = init5 d.h[6] = init6 d.h[7] = init7 } else { d.h[0] = init0_384 d.h[1] = init1_384 d.h[2] = init2_384 d.h[3] = init3_384 d.h[4] = init4_384 d.h[5] = init5_384 d.h[6] = init6_384 d.h[7] = init7_384 } d.nx = 0 d.len = 0 } // New returns a new hash.Hash computing the SHA512 checksum. func New() hash.Hash { d := new(digest) d.Reset() return d } // New384 returns a new hash.Hash computing the SHA384 checksum. func New384() hash.Hash { d := new(digest) d.is384 = true d.Reset() return d } func (d *digest) Size() int { if !d.is384 { return Size } return Size384 } func (d *digest) BlockSize() int { return BlockSize } func (d *digest) Write(p []byte) (nn int, err error) { nn = len(p) d.len += uint64(nn) if d.nx > 0 { n := copy(d.x[d.nx:], p) d.nx += n if d.nx == chunk { block(d, d.x[:]) d.nx = 0 } p = p[n:] } if len(p) >= chunk { n := len(p) &^ (chunk - 1) block(d, p[:n]) p = p[n:] } if len(p) > 0 { d.nx = copy(d.x[:], p) } return } func (d0 *digest) Sum(in []byte) []byte { // Make a copy of d0 so that caller can keep writing and summing. d := new(digest) *d = *d0 hash := d.checkSum() if d.is384 { return append(in, hash[:Size384]...) } return append(in, hash[:]...) } func (d *digest) checkSum() [Size]byte { // Padding. Add a 1 bit and 0 bits until 112 bytes mod 128. len := d.len var tmp [128]byte tmp[0] = 0x80 if len%128 < 112 { d.Write(tmp[0 : 112-len%128]) } else { d.Write(tmp[0 : 128+112-len%128]) } // Length in bits. len <<= 3 for i := uint(0); i < 16; i++ { tmp[i] = byte(len >> (120 - 8*i)) } d.Write(tmp[0:16]) if d.nx != 0 { panic("d.nx != 0") } h := d.h[:] if d.is384 { h = d.h[:6] } var digest [Size]byte for i, s := range h { digest[i*8] = byte(s >> 56) digest[i*8+1] = byte(s >> 48) digest[i*8+2] = byte(s >> 40) digest[i*8+3] = byte(s >> 32) digest[i*8+4] = byte(s >> 24) digest[i*8+5] = byte(s >> 16) digest[i*8+6] = byte(s >> 8) digest[i*8+7] = byte(s) } return digest } // Sum512 returns the SHA512 checksum of the data. func Sum512(data []byte) [Size]byte { var d digest d.Reset() d.Write(data) return d.checkSum() } // Sum384 returns the SHA384 checksum of the data. func Sum384(data []byte) (sum384 [Size384]byte) { var d digest d.is384 = true d.Reset() d.Write(data) sum := d.checkSum() copy(sum384[:], sum[:Size384]) return } go/src/pkg/crypto/sha512/sha512_test.go0100644000000000000000000003026512412656737017771 0ustar00rootroot00000000000000// Copyright 2009 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. // SHA512 hash algorithm. See FIPS 180-2. package sha512 import ( "fmt" "io" "testing" ) type sha512Test struct { out string in string } var golden = []sha512Test{ {"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e", ""}, {"1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75", "a"}, {"2d408a0717ec188158278a796c689044361dc6fdde28d6f04973b80896e1823975cdbf12eb63f9e0591328ee235d80e9b5bf1aa6a44f4617ff3caf6400eb172d", "ab"}, {"ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f", "abc"}, {"d8022f2060ad6efd297ab73dcc5355c9b214054b0d1776a136a669d26a7d3b14f73aa0d0ebff19ee333368f0164b6419a96da49e3e481753e7e96b716bdccb6f", "abcd"}, {"878ae65a92e86cac011a570d4c30a7eaec442b85ce8eca0c2952b5e3cc0628c2e79d889ad4d5c7c626986d452dd86374b6ffaa7cd8b67665bef2289a5c70b0a1", "abcde"}, {"e32ef19623e8ed9d267f657a81944b3d07adbb768518068e88435745564e8d4150a0a703be2a7d88b61e3d390c2bb97e2d4c311fdc69d6b1267f05f59aa920e7", "abcdef"}, {"d716a4188569b68ab1b6dfac178e570114cdf0ea3a1cc0e31486c3e41241bc6a76424e8c37ab26f096fc85ef9886c8cb634187f4fddff645fb099f1ff54c6b8c", "abcdefg"}, {"a3a8c81bc97c2560010d7389bc88aac974a104e0e2381220c6e084c4dccd1d2d17d4f86db31c2a851dc80e6681d74733c55dcd03dd96f6062cdda12a291ae6ce", "abcdefgh"}, {"f22d51d25292ca1d0f68f69aedc7897019308cc9db46efb75a03dd494fc7f126c010e8ade6a00a0c1a5f1b75d81e0ed5a93ce98dc9b833db7839247b1d9c24fe", "abcdefghi"}, {"ef6b97321f34b1fea2169a7db9e1960b471aa13302a988087357c520be957ca119c3ba68e6b4982c019ec89de3865ccf6a3cda1fe11e59f98d99f1502c8b9745", "abcdefghij"}, {"2210d99af9c8bdecda1b4beff822136753d8342505ddce37f1314e2cdbb488c6016bdaa9bd2ffa513dd5de2e4b50f031393d8ab61f773b0e0130d7381e0f8a1d", "Discard medicine more than two years old."}, {"a687a8985b4d8d0a24f115fe272255c6afaf3909225838546159c1ed685c211a203796ae8ecc4c81a5b6315919b3a64f10713da07e341fcdbb08541bf03066ce", "He who has a shady past knows that nice guys finish last."}, {"8ddb0392e818b7d585ab22769a50df660d9f6d559cca3afc5691b8ca91b8451374e42bcdabd64589ed7c91d85f626596228a5c8572677eb98bc6b624befb7af8", "I wouldn't marry him with a ten foot pole."}, {"26ed8f6ca7f8d44b6a8a54ae39640fa8ad5c673f70ee9ce074ba4ef0d483eea00bab2f61d8695d6b34df9c6c48ae36246362200ed820448bdc03a720366a87c6", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave"}, {"e5a14bf044be69615aade89afcf1ab0389d5fc302a884d403579d1386a2400c089b0dbb387ed0f463f9ee342f8244d5a38cfbc0e819da9529fbff78368c9a982", "The days of the digital watch are numbered. -Tom Stoppard"}, {"420a1faa48919e14651bed45725abe0f7a58e0f099424c4e5a49194946e38b46c1f8034b18ef169b2e31050d1648e0b982386595f7df47da4b6fd18e55333015", "Nepal premier won't resign."}, {"d926a863beadb20134db07683535c72007b0e695045876254f341ddcccde132a908c5af57baa6a6a9c63e6649bba0c213dc05fadcf9abccea09f23dcfb637fbe", "For every action there is an equal and opposite government program."}, {"9a98dd9bb67d0da7bf83da5313dff4fd60a4bac0094f1b05633690ffa7f6d61de9a1d4f8617937d560833a9aaa9ccafe3fd24db418d0e728833545cadd3ad92d", "His money is twice tainted: 'taint yours and 'taint mine."}, {"d7fde2d2351efade52f4211d3746a0780a26eec3df9b2ed575368a8a1c09ec452402293a8ea4eceb5a4f60064ea29b13cdd86918cd7a4faf366160b009804107", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977"}, {"b0f35ffa2697359c33a56f5c0cf715c7aeed96da9905ca2698acadb08fbc9e669bf566b6bd5d61a3e86dc22999bcc9f2224e33d1d4f32a228cf9d0349e2db518", "It's a tiny change to the code and not completely disgusting. - Bob Manchek"}, {"3d2e5f91778c9e66f7e061293aaa8a8fc742dd3b2e4f483772464b1144189b49273e610e5cccd7a81a19ca1fa70f16b10f1a100a4d8c1372336be8484c64b311", "size: a.out: bad magic"}, {"b2f68ff58ac015efb1c94c908b0d8c2bf06f491e4de8e6302c49016f7f8a33eac3e959856c7fddbc464de618701338a4b46f76dbfaf9a1e5262b5f40639771c7", "The major problem is with sendmail. -Mark Horton"}, {"d8c92db5fdf52cf8215e4df3b4909d29203ff4d00e9ad0b64a6a4e04dec5e74f62e7c35c7fb881bd5de95442123df8f57a489b0ae616bd326f84d10021121c57", "Give me a rock, paper and scissors and I will move the world. CCFestoon"}, {"19a9f8dc0a233e464e8566ad3ca9b91e459a7b8c4780985b015776e1bf239a19bc233d0556343e2b0a9bc220900b4ebf4f8bdf89ff8efeaf79602d6849e6f72e", "If the enemy is within range, then so are you."}, {"00b4c41f307bde87301cdc5b5ab1ae9a592e8ecbb2021dd7bc4b34e2ace60741cc362560bec566ba35178595a91932b8d5357e2c9cec92d393b0fa7831852476", "It's well we cannot hear the screams/That we create in others' dreams."}, {"91eccc3d5375fd026e4d6787874b1dce201cecd8a27dbded5065728cb2d09c58a3d467bb1faf353bf7ba567e005245d5321b55bc344f7c07b91cb6f26c959be7", "You remind me of a TV show, but that's all right: I watch it anyway."}, {"fabbbe22180f1f137cfdc9556d2570e775d1ae02a597ded43a72a40f9b485d500043b7be128fb9fcd982b83159a0d99aa855a9e7cc4240c00dc01a9bdf8218d7", "C is as portable as Stonehedge!!"}, {"2ecdec235c1fa4fc2a154d8fba1dddb8a72a1ad73838b51d792331d143f8b96a9f6fcb0f34d7caa351fe6d88771c4f105040e0392f06e0621689d33b2f3ba92e", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley"}, {"7ad681f6f96f82f7abfa7ecc0334e8fa16d3dc1cdc45b60b7af43fe4075d2357c0c1d60e98350f1afb1f2fe7a4d7cd2ad55b88e458e06b73c40b437331f5dab4", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction. Lewis-Randall Rule"}, {"833f9248ab4a3b9e5131f745fda1ffd2dd435b30e965957e78291c7ab73605fd1912b0794e5c233ab0a12d205a39778d19b83515d6a47003f19cdee51d98c7e0", "How can you write a big system without C++? -Paul Glick"}, } var golden384 = []sha512Test{ {"38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b", ""}, {"54a59b9f22b0b80880d8427e548b7c23abd873486e1f035dce9cd697e85175033caa88e6d57bc35efae0b5afd3145f31", "a"}, {"c7be03ba5bcaa384727076db0018e99248e1a6e8bd1b9ef58a9ec9dd4eeebb3f48b836201221175befa74ddc3d35afdd", "ab"}, {"cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7", "abc"}, {"1165b3406ff0b52a3d24721f785462ca2276c9f454a116c2b2ba20171a7905ea5a026682eb659c4d5f115c363aa3c79b", "abcd"}, {"4c525cbeac729eaf4b4665815bc5db0c84fe6300068a727cf74e2813521565abc0ec57a37ee4d8be89d097c0d2ad52f0", "abcde"}, {"c6a4c65b227e7387b9c3e839d44869c4cfca3ef583dea64117859b808c1e3d8ae689e1e314eeef52a6ffe22681aa11f5", "abcdef"}, {"9f11fc131123f844c1226f429b6a0a6af0525d9f40f056c7fc16cdf1b06bda08e302554417a59fa7dcf6247421959d22", "abcdefg"}, {"9000cd7cada59d1d2eb82912f7f24e5e69cc5517f68283b005fa27c285b61e05edf1ad1a8a9bded6fd29eb87d75ad806", "abcdefgh"}, {"ef54915b60cf062b8dd0c29ae3cad69abe6310de63ac081f46ef019c5c90897caefd79b796cfa81139788a260ded52df", "abcdefghi"}, {"a12070030a02d86b0ddacd0d3a5b598344513d0a051e7355053e556a0055489c1555399b03342845c4adde2dc44ff66c", "abcdefghij"}, {"86f58ec2d74d1b7f8eb0c2ff0967316699639e8d4eb129de54bdf34c96cdbabe200d052149f2dd787f43571ba74670d4", "Discard medicine more than two years old."}, {"ae4a2b639ca9bfa04b1855d5a05fe7f230994f790891c6979103e2605f660c4c1262a48142dcbeb57a1914ba5f7c3fa7", "He who has a shady past knows that nice guys finish last."}, {"40ae213df6436eca952aa6841886fcdb82908ef1576a99c8f49bb9dd5023169f7c53035abdda0b54c302f4974e2105e7", "I wouldn't marry him with a ten foot pole."}, {"e7cf8b873c9bc950f06259aa54309f349cefa72c00d597aebf903e6519a50011dfe355afff064a10701c705693848df9", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave"}, {"c3d4f0f4047181c7d39d34703365f7bf70207183caf2c2f6145f04da895ef69124d9cdeb635da636c3a474e61024e29b", "The days of the digital watch are numbered. -Tom Stoppard"}, {"a097aab567e167d5cf93676ed73252a69f9687cb3179bb2d27c9878119e94bf7b7c4b58dc90582edfaf66e11388ed714", "Nepal premier won't resign."}, {"5026ca45c41fc64712eb65065da92f6467541c78f8966d3fe2c8e3fb769a3ec14215f819654b47bd64f7f0eac17184f3", "For every action there is an equal and opposite government program."}, {"ac1cc0f5ac8d5f5514a7b738ac322b7fb52a161b449c3672e9b6a6ad1a5e4b26b001cf3bad24c56598676ca17d4b445a", "His money is twice tainted: 'taint yours and 'taint mine."}, {"722d10c5de371ec0c8c4b5247ac8a5f1d240d68c73f8da13d8b25f0166d6f309bf9561979a111a0049405771d201941a", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977"}, {"dc2d3ea18bfa10549c63bf2b75b39b5167a80c12aff0e05443168ea87ff149fb0eda5e0bd234eb5d48c7d02ffc5807f1", "It's a tiny change to the code and not completely disgusting. - Bob Manchek"}, {"1d67c969e2a945ae5346d2139760261504d4ba164c522443afe19ef3e29b152a4c52445489cfc9d7215e5a450e8e1e4e", "size: a.out: bad magic"}, {"5ff8e075e465646e7b73ef36d812c6e9f7d60fa6ea0e533e5569b4f73cde53cdd2cc787f33540af57cca3fe467d32fe0", "The major problem is with sendmail. -Mark Horton"}, {"5bd0a997a67c9ae1979a894eb0cde403dde003c9b6f2c03cf21925c42ff4e1176e6df1ca005381612ef18457b9b7ec3b", "Give me a rock, paper and scissors and I will move the world. CCFestoon"}, {"1eee6da33e7e54fc5be52ae23b94b16ba4d2a947ae4505c6a3edfc7401151ea5205ac01b669b56f27d8ef7f175ed7762", "If the enemy is within range, then so are you."}, {"76b06e9dea66bfbb1a96029426dc0dfd7830bd297eb447ff5358d94a87cd00c88b59df2493fef56ecbb5231073892ea9", "It's well we cannot hear the screams/That we create in others' dreams."}, {"12acaf21452cff586143e3f5db0bfdf7802c057e1adf2a619031c4e1b0ccc4208cf6cef8fe722bbaa2fb46a30d9135d8", "You remind me of a TV show, but that's all right: I watch it anyway."}, {"0fc23d7f4183efd186f0bc4fc5db867e026e2146b06cb3d52f4bdbd57d1740122caa853b41868b197b2ac759db39df88", "C is as portable as Stonehedge!!"}, {"bc805578a7f85d34a86a32976e1c34fe65cf815186fbef76f46ef99cda10723f971f3f1464d488243f5e29db7488598d", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley"}, {"b23918399a12ebf4431559eec3813eaf7412e875fd7464f16d581e473330842d2e96c6be49a7ce3f9bb0b8bc0fcbe0fe", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction. Lewis-Randall Rule"}, {"1764b700eb1ead52a2fc33cc28975c2180f1b8faa5038d94cffa8d78154aab16e91dd787e7b0303948ebed62561542c8", "How can you write a big system without C++? -Paul Glick"}, } func TestGolden(t *testing.T) { for i := 0; i < len(golden); i++ { g := golden[i] s := fmt.Sprintf("%x", Sum512([]byte(g.in))) if s != g.out { t.Fatalf("Sum512 function: sha512(%s) = %s want %s", g.in, s, g.out) } c := New() for j := 0; j < 3; j++ { if j < 2 { io.WriteString(c, g.in) } else { io.WriteString(c, g.in[0:len(g.in)/2]) c.Sum(nil) io.WriteString(c, g.in[len(g.in)/2:]) } s := fmt.Sprintf("%x", c.Sum(nil)) if s != g.out { t.Fatalf("sha512[%d](%s) = %s want %s", j, g.in, s, g.out) } c.Reset() } } for i := 0; i < len(golden384); i++ { g := golden384[i] s := fmt.Sprintf("%x", Sum384([]byte(g.in))) if s != g.out { t.Fatalf("Sum384 function: sha384(%s) = %s want %s", g.in, s, g.out) } c := New384() for j := 0; j < 3; j++ { if j < 2 { io.WriteString(c, g.in) } else { io.WriteString(c, g.in[0:len(g.in)/2]) c.Sum(nil) io.WriteString(c, g.in[len(g.in)/2:]) } s := fmt.Sprintf("%x", c.Sum(nil)) if s != g.out { t.Fatalf("sha384[%d](%s) = %s want %s", j, g.in, s, g.out) } c.Reset() } } } func TestSize(t *testing.T) { c := New() if got := c.Size(); got != Size { t.Errorf("Size = %d; want %d", got, Size) } c = New384() if got := c.Size(); got != Size384 { t.Errorf("New384.Size = %d; want %d", got, Size384) } } func TestBlockSize(t *testing.T) { c := New() if got := c.BlockSize(); got != BlockSize { t.Errorf("BlockSize = %d; want %d", got, BlockSize) } } var bench = New() var buf = make([]byte, 8192) func benchmarkSize(b *testing.B, size int) { b.SetBytes(int64(size)) sum := make([]byte, bench.Size()) for i := 0; i < b.N; i++ { bench.Reset() bench.Write(buf[:size]) bench.Sum(sum[:0]) } } func BenchmarkHash8Bytes(b *testing.B) { benchmarkSize(b, 8) } func BenchmarkHash1K(b *testing.B) { benchmarkSize(b, 1024) } func BenchmarkHash8K(b *testing.B) { benchmarkSize(b, 8192) } go/src/pkg/crypto/sha512/sha512block.go0100644000000000000000000000632012412656737017740 0ustar00rootroot00000000000000// Copyright 2009 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 !amd64 // SHA512 block step. // In its own file so that a faster assembly or C version // can be substituted easily. package sha512 var _K = []uint64{ 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, 0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, 0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694, 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65, 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, 0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, 0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70, 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df, 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b, 0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30, 0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3, 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec, 0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b, 0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817, } func block(dig *digest, p []byte) { var w [80]uint64 h0, h1, h2, h3, h4, h5, h6, h7 := dig.h[0], dig.h[1], dig.h[2], dig.h[3], dig.h[4], dig.h[5], dig.h[6], dig.h[7] for len(p) >= chunk { for i := 0; i < 16; i++ { j := i * 8 w[i] = uint64(p[j])<<56 | uint64(p[j+1])<<48 | uint64(p[j+2])<<40 | uint64(p[j+3])<<32 | uint64(p[j+4])<<24 | uint64(p[j+5])<<16 | uint64(p[j+6])<<8 | uint64(p[j+7]) } for i := 16; i < 80; i++ { v1 := w[i-2] t1 := (v1>>19 | v1<<(64-19)) ^ (v1>>61 | v1<<(64-61)) ^ (v1 >> 6) v2 := w[i-15] t2 := (v2>>1 | v2<<(64-1)) ^ (v2>>8 | v2<<(64-8)) ^ (v2 >> 7) w[i] = t1 + w[i-7] + t2 + w[i-16] } a, b, c, d, e, f, g, h := h0, h1, h2, h3, h4, h5, h6, h7 for i := 0; i < 80; i++ { t1 := h + ((e>>14 | e<<(64-14)) ^ (e>>18 | e<<(64-18)) ^ (e>>41 | e<<(64-41))) + ((e & f) ^ (^e & g)) + _K[i] + w[i] t2 := ((a>>28 | a<<(64-28)) ^ (a>>34 | a<<(64-34)) ^ (a>>39 | a<<(64-39))) + ((a & b) ^ (a & c) ^ (b & c)) h = g g = f f = e e = d + t1 d = c c = b b = a a = t1 + t2 } h0 += a h1 += b h2 += c h3 += d h4 += e h5 += f h6 += g h7 += h p = p[chunk:] } dig.h[0], dig.h[1], dig.h[2], dig.h[3], dig.h[4], dig.h[5], dig.h[6], dig.h[7] = h0, h1, h2, h3, h4, h5, h6, h7 } go/src/pkg/crypto/sha512/sha512block_amd64.s0100644000000000000000000002422512412656737020574 0ustar00rootroot00000000000000// Copyright 2013 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. #include "../../../cmd/ld/textflag.h" // SHA512 block routine. See sha512block.go for Go equivalent. // // The algorithm is detailed in FIPS 180-4: // // http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf // // Wt = Mt; for 0 <= t <= 15 // Wt = SIGMA1(Wt-2) + SIGMA0(Wt-15) + Wt-16; for 16 <= t <= 79 // // a = H0 // b = H1 // c = H2 // d = H3 // e = H4 // f = H5 // g = H6 // h = H7 // // for t = 0 to 79 { // T1 = h + BIGSIGMA1(e) + Ch(e,f,g) + Kt + Wt // T2 = BIGSIGMA0(a) + Maj(a,b,c) // h = g // g = f // f = e // e = d + T1 // d = c // c = b // b = a // a = T1 + T2 // } // // H0 = a + H0 // H1 = b + H1 // H2 = c + H2 // H3 = d + H3 // H4 = e + H4 // H5 = f + H5 // H6 = g + H6 // H7 = h + H7 // Wt = Mt; for 0 <= t <= 15 #define MSGSCHEDULE0(index) \ MOVQ (index*8)(SI), AX; \ BSWAPQ AX; \ MOVQ AX, (index*8)(BP) // Wt = SIGMA1(Wt-2) + Wt-7 + SIGMA0(Wt-15) + Wt-16; for 16 <= t <= 79 // SIGMA0(x) = ROTR(1,x) XOR ROTR(8,x) XOR SHR(7,x) // SIGMA1(x) = ROTR(19,x) XOR ROTR(61,x) XOR SHR(6,x) #define MSGSCHEDULE1(index) \ MOVQ ((index-2)*8)(BP), AX; \ MOVQ AX, CX; \ RORQ $19, AX; \ MOVQ CX, DX; \ RORQ $61, CX; \ SHRQ $6, DX; \ MOVQ ((index-15)*8)(BP), BX; \ XORQ CX, AX; \ MOVQ BX, CX; \ XORQ DX, AX; \ RORQ $1, BX; \ MOVQ CX, DX; \ SHRQ $7, DX; \ RORQ $8, CX; \ ADDQ ((index-7)*8)(BP), AX; \ XORQ CX, BX; \ XORQ DX, BX; \ ADDQ ((index-16)*8)(BP), BX; \ ADDQ BX, AX; \ MOVQ AX, ((index)*8)(BP) // Calculate T1 in AX - uses AX, CX and DX registers. // h is also used as an accumulator. Wt is passed in AX. // T1 = h + BIGSIGMA1(e) + Ch(e, f, g) + Kt + Wt // BIGSIGMA1(x) = ROTR(14,x) XOR ROTR(18,x) XOR ROTR(41,x) // Ch(x, y, z) = (x AND y) XOR (NOT x AND z) #define SHA512T1(const, e, f, g, h) \ MOVQ $const, DX; \ ADDQ AX, h; \ MOVQ e, AX; \ ADDQ DX, h; \ MOVQ e, CX; \ RORQ $14, AX; \ MOVQ e, DX; \ RORQ $18, CX; \ XORQ CX, AX; \ MOVQ e, CX; \ RORQ $41, DX; \ ANDQ f, CX; \ XORQ AX, DX; \ MOVQ e, AX; \ NOTQ AX; \ ADDQ DX, h; \ ANDQ g, AX; \ XORQ CX, AX; \ ADDQ h, AX // Calculate T2 in BX - uses BX, CX, DX and DI registers. // T2 = BIGSIGMA0(a) + Maj(a, b, c) // BIGSIGMA0(x) = ROTR(28,x) XOR ROTR(34,x) XOR ROTR(39,x) // Maj(x, y, z) = (x AND y) XOR (x AND z) XOR (y AND z) #define SHA512T2(a, b, c) \ MOVQ a, DI; \ MOVQ c, BX; \ RORQ $28, DI; \ MOVQ a, DX; \ ANDQ b, BX; \ RORQ $34, DX; \ MOVQ a, CX; \ ANDQ c, CX; \ XORQ DX, DI; \ XORQ CX, BX; \ MOVQ a, DX; \ MOVQ b, CX; \ RORQ $39, DX; \ ANDQ a, CX; \ XORQ CX, BX; \ XORQ DX, DI; \ ADDQ DI, BX // Calculate T1 and T2, then e = d + T1 and a = T1 + T2. // The values for e and a are stored in d and h, ready for rotation. #define SHA512ROUND(index, const, a, b, c, d, e, f, g, h) \ SHA512T1(const, e, f, g, h); \ SHA512T2(a, b, c); \ MOVQ BX, h; \ ADDQ AX, d; \ ADDQ AX, h #define SHA512ROUND0(index, const, a, b, c, d, e, f, g, h) \ MSGSCHEDULE0(index); \ SHA512ROUND(index, const, a, b, c, d, e, f, g, h) #define SHA512ROUND1(index, const, a, b, c, d, e, f, g, h) \ MSGSCHEDULE1(index); \ SHA512ROUND(index, const, a, b, c, d, e, f, g, h) TEXT ·block(SB),0,$648-32 MOVQ p_base+8(FP), SI MOVQ p_len+16(FP), DX SHRQ $7, DX SHLQ $7, DX LEAQ (SI)(DX*1), DI MOVQ DI, 640(SP) CMPQ SI, DI JEQ end MOVQ dig+0(FP), BP MOVQ (0*8)(BP), R8 // a = H0 MOVQ (1*8)(BP), R9 // b = H1 MOVQ (2*8)(BP), R10 // c = H2 MOVQ (3*8)(BP), R11 // d = H3 MOVQ (4*8)(BP), R12 // e = H4 MOVQ (5*8)(BP), R13 // f = H5 MOVQ (6*8)(BP), R14 // g = H6 MOVQ (7*8)(BP), R15 // h = H7 loop: MOVQ SP, BP // message schedule SHA512ROUND0(0, 0x428a2f98d728ae22, R8, R9, R10, R11, R12, R13, R14, R15) SHA512ROUND0(1, 0x7137449123ef65cd, R15, R8, R9, R10, R11, R12, R13, R14) SHA512ROUND0(2, 0xb5c0fbcfec4d3b2f, R14, R15, R8, R9, R10, R11, R12, R13) SHA512ROUND0(3, 0xe9b5dba58189dbbc, R13, R14, R15, R8, R9, R10, R11, R12) SHA512ROUND0(4, 0x3956c25bf348b538, R12, R13, R14, R15, R8, R9, R10, R11) SHA512ROUND0(5, 0x59f111f1b605d019, R11, R12, R13, R14, R15, R8, R9, R10) SHA512ROUND0(6, 0x923f82a4af194f9b, R10, R11, R12, R13, R14, R15, R8, R9) SHA512ROUND0(7, 0xab1c5ed5da6d8118, R9, R10, R11, R12, R13, R14, R15, R8) SHA512ROUND0(8, 0xd807aa98a3030242, R8, R9, R10, R11, R12, R13, R14, R15) SHA512ROUND0(9, 0x12835b0145706fbe, R15, R8, R9, R10, R11, R12, R13, R14) SHA512ROUND0(10, 0x243185be4ee4b28c, R14, R15, R8, R9, R10, R11, R12, R13) SHA512ROUND0(11, 0x550c7dc3d5ffb4e2, R13, R14, R15, R8, R9, R10, R11, R12) SHA512ROUND0(12, 0x72be5d74f27b896f, R12, R13, R14, R15, R8, R9, R10, R11) SHA512ROUND0(13, 0x80deb1fe3b1696b1, R11, R12, R13, R14, R15, R8, R9, R10) SHA512ROUND0(14, 0x9bdc06a725c71235, R10, R11, R12, R13, R14, R15, R8, R9) SHA512ROUND0(15, 0xc19bf174cf692694, R9, R10, R11, R12, R13, R14, R15, R8) SHA512ROUND1(16, 0xe49b69c19ef14ad2, R8, R9, R10, R11, R12, R13, R14, R15) SHA512ROUND1(17, 0xefbe4786384f25e3, R15, R8, R9, R10, R11, R12, R13, R14) SHA512ROUND1(18, 0x0fc19dc68b8cd5b5, R14, R15, R8, R9, R10, R11, R12, R13) SHA512ROUND1(19, 0x240ca1cc77ac9c65, R13, R14, R15, R8, R9, R10, R11, R12) SHA512ROUND1(20, 0x2de92c6f592b0275, R12, R13, R14, R15, R8, R9, R10, R11) SHA512ROUND1(21, 0x4a7484aa6ea6e483, R11, R12, R13, R14, R15, R8, R9, R10) SHA512ROUND1(22, 0x5cb0a9dcbd41fbd4, R10, R11, R12, R13, R14, R15, R8, R9) SHA512ROUND1(23, 0x76f988da831153b5, R9, R10, R11, R12, R13, R14, R15, R8) SHA512ROUND1(24, 0x983e5152ee66dfab, R8, R9, R10, R11, R12, R13, R14, R15) SHA512ROUND1(25, 0xa831c66d2db43210, R15, R8, R9, R10, R11, R12, R13, R14) SHA512ROUND1(26, 0xb00327c898fb213f, R14, R15, R8, R9, R10, R11, R12, R13) SHA512ROUND1(27, 0xbf597fc7beef0ee4, R13, R14, R15, R8, R9, R10, R11, R12) SHA512ROUND1(28, 0xc6e00bf33da88fc2, R12, R13, R14, R15, R8, R9, R10, R11) SHA512ROUND1(29, 0xd5a79147930aa725, R11, R12, R13, R14, R15, R8, R9, R10) SHA512ROUND1(30, 0x06ca6351e003826f, R10, R11, R12, R13, R14, R15, R8, R9) SHA512ROUND1(31, 0x142929670a0e6e70, R9, R10, R11, R12, R13, R14, R15, R8) SHA512ROUND1(32, 0x27b70a8546d22ffc, R8, R9, R10, R11, R12, R13, R14, R15) SHA512ROUND1(33, 0x2e1b21385c26c926, R15, R8, R9, R10, R11, R12, R13, R14) SHA512ROUND1(34, 0x4d2c6dfc5ac42aed, R14, R15, R8, R9, R10, R11, R12, R13) SHA512ROUND1(35, 0x53380d139d95b3df, R13, R14, R15, R8, R9, R10, R11, R12) SHA512ROUND1(36, 0x650a73548baf63de, R12, R13, R14, R15, R8, R9, R10, R11) SHA512ROUND1(37, 0x766a0abb3c77b2a8, R11, R12, R13, R14, R15, R8, R9, R10) SHA512ROUND1(38, 0x81c2c92e47edaee6, R10, R11, R12, R13, R14, R15, R8, R9) SHA512ROUND1(39, 0x92722c851482353b, R9, R10, R11, R12, R13, R14, R15, R8) SHA512ROUND1(40, 0xa2bfe8a14cf10364, R8, R9, R10, R11, R12, R13, R14, R15) SHA512ROUND1(41, 0xa81a664bbc423001, R15, R8, R9, R10, R11, R12, R13, R14) SHA512ROUND1(42, 0xc24b8b70d0f89791, R14, R15, R8, R9, R10, R11, R12, R13) SHA512ROUND1(43, 0xc76c51a30654be30, R13, R14, R15, R8, R9, R10, R11, R12) SHA512ROUND1(44, 0xd192e819d6ef5218, R12, R13, R14, R15, R8, R9, R10, R11) SHA512ROUND1(45, 0xd69906245565a910, R11, R12, R13, R14, R15, R8, R9, R10) SHA512ROUND1(46, 0xf40e35855771202a, R10, R11, R12, R13, R14, R15, R8, R9) SHA512ROUND1(47, 0x106aa07032bbd1b8, R9, R10, R11, R12, R13, R14, R15, R8) SHA512ROUND1(48, 0x19a4c116b8d2d0c8, R8, R9, R10, R11, R12, R13, R14, R15) SHA512ROUND1(49, 0x1e376c085141ab53, R15, R8, R9, R10, R11, R12, R13, R14) SHA512ROUND1(50, 0x2748774cdf8eeb99, R14, R15, R8, R9, R10, R11, R12, R13) SHA512ROUND1(51, 0x34b0bcb5e19b48a8, R13, R14, R15, R8, R9, R10, R11, R12) SHA512ROUND1(52, 0x391c0cb3c5c95a63, R12, R13, R14, R15, R8, R9, R10, R11) SHA512ROUND1(53, 0x4ed8aa4ae3418acb, R11, R12, R13, R14, R15, R8, R9, R10) SHA512ROUND1(54, 0x5b9cca4f7763e373, R10, R11, R12, R13, R14, R15, R8, R9) SHA512ROUND1(55, 0x682e6ff3d6b2b8a3, R9, R10, R11, R12, R13, R14, R15, R8) SHA512ROUND1(56, 0x748f82ee5defb2fc, R8, R9, R10, R11, R12, R13, R14, R15) SHA512ROUND1(57, 0x78a5636f43172f60, R15, R8, R9, R10, R11, R12, R13, R14) SHA512ROUND1(58, 0x84c87814a1f0ab72, R14, R15, R8, R9, R10, R11, R12, R13) SHA512ROUND1(59, 0x8cc702081a6439ec, R13, R14, R15, R8, R9, R10, R11, R12) SHA512ROUND1(60, 0x90befffa23631e28, R12, R13, R14, R15, R8, R9, R10, R11) SHA512ROUND1(61, 0xa4506cebde82bde9, R11, R12, R13, R14, R15, R8, R9, R10) SHA512ROUND1(62, 0xbef9a3f7b2c67915, R10, R11, R12, R13, R14, R15, R8, R9) SHA512ROUND1(63, 0xc67178f2e372532b, R9, R10, R11, R12, R13, R14, R15, R8) SHA512ROUND1(64, 0xca273eceea26619c, R8, R9, R10, R11, R12, R13, R14, R15) SHA512ROUND1(65, 0xd186b8c721c0c207, R15, R8, R9, R10, R11, R12, R13, R14) SHA512ROUND1(66, 0xeada7dd6cde0eb1e, R14, R15, R8, R9, R10, R11, R12, R13) SHA512ROUND1(67, 0xf57d4f7fee6ed178, R13, R14, R15, R8, R9, R10, R11, R12) SHA512ROUND1(68, 0x06f067aa72176fba, R12, R13, R14, R15, R8, R9, R10, R11) SHA512ROUND1(69, 0x0a637dc5a2c898a6, R11, R12, R13, R14, R15, R8, R9, R10) SHA512ROUND1(70, 0x113f9804bef90dae, R10, R11, R12, R13, R14, R15, R8, R9) SHA512ROUND1(71, 0x1b710b35131c471b, R9, R10, R11, R12, R13, R14, R15, R8) SHA512ROUND1(72, 0x28db77f523047d84, R8, R9, R10, R11, R12, R13, R14, R15) SHA512ROUND1(73, 0x32caab7b40c72493, R15, R8, R9, R10, R11, R12, R13, R14) SHA512ROUND1(74, 0x3c9ebe0a15c9bebc, R14, R15, R8, R9, R10, R11, R12, R13) SHA512ROUND1(75, 0x431d67c49c100d4c, R13, R14, R15, R8, R9, R10, R11, R12) SHA512ROUND1(76, 0x4cc5d4becb3e42b6, R12, R13, R14, R15, R8, R9, R10, R11) SHA512ROUND1(77, 0x597f299cfc657e2a, R11, R12, R13, R14, R15, R8, R9, R10) SHA512ROUND1(78, 0x5fcb6fab3ad6faec, R10, R11, R12, R13, R14, R15, R8, R9) SHA512ROUND1(79, 0x6c44198c4a475817, R9, R10, R11, R12, R13, R14, R15, R8) MOVQ dig+0(FP), BP ADDQ (0*8)(BP), R8 // H0 = a + H0 MOVQ R8, (0*8)(BP) ADDQ (1*8)(BP), R9 // H1 = b + H1 MOVQ R9, (1*8)(BP) ADDQ (2*8)(BP), R10 // H2 = c + H2 MOVQ R10, (2*8)(BP) ADDQ (3*8)(BP), R11 // H3 = d + H3 MOVQ R11, (3*8)(BP) ADDQ (4*8)(BP), R12 // H4 = e + H4 MOVQ R12, (4*8)(BP) ADDQ (5*8)(BP), R13 // H5 = f + H5 MOVQ R13, (5*8)(BP) ADDQ (6*8)(BP), R14 // H6 = g + H6 MOVQ R14, (6*8)(BP) ADDQ (7*8)(BP), R15 // H7 = h + H7 MOVQ R15, (7*8)(BP) ADDQ $128, SI CMPQ SI, 640(SP) JB loop end: RET go/src/pkg/crypto/sha512/sha512block_decl.go0100644000000000000000000000036312412656737020730 0ustar00rootroot00000000000000// Copyright 2013 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 amd64 package sha512 //go:noescape func block(dig *digest, p []byte) go/src/pkg/crypto/subtle0040755000000000000000000000000012412656737015611 5ustar00rootroot00000000000000go/src/pkg/crypto/subtle/constant_time.go0100644000000000000000000000364712412656737021075 0ustar00rootroot00000000000000// Copyright 2009 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 subtle implements functions that are often useful in cryptographic // code but require careful thought to use correctly. package subtle // ConstantTimeCompare returns 1 iff the two equal length slices, x // and y, have equal contents. The time taken is a function of the length of // the slices and is independent of the contents. func ConstantTimeCompare(x, y []byte) int { if len(x) != len(y) { panic("subtle: slices have different lengths") } var v byte for i := 0; i < len(x); i++ { v |= x[i] ^ y[i] } return ConstantTimeByteEq(v, 0) } // ConstantTimeSelect returns x if v is 1 and y if v is 0. // Its behavior is undefined if v takes any other value. func ConstantTimeSelect(v, x, y int) int { return ^(v-1)&x | (v-1)&y } // ConstantTimeByteEq returns 1 if x == y and 0 otherwise. func ConstantTimeByteEq(x, y uint8) int { z := ^(x ^ y) z &= z >> 4 z &= z >> 2 z &= z >> 1 return int(z) } // ConstantTimeEq returns 1 if x == y and 0 otherwise. func ConstantTimeEq(x, y int32) int { z := ^(x ^ y) z &= z >> 16 z &= z >> 8 z &= z >> 4 z &= z >> 2 z &= z >> 1 return int(z & 1) } // ConstantTimeCopy copies the contents of y into x (a slice of equal length) // if v == 1. If v == 0, x is left unchanged. Its behavior is undefined if v // takes any other value. func ConstantTimeCopy(v int, x, y []byte) { if len(x) != len(y) { panic("subtle: slices have different lengths") } xmask := byte(v - 1) ymask := byte(^(v - 1)) for i := 0; i < len(x); i++ { x[i] = x[i]&xmask | y[i]&ymask } return } // ConstantTimeLessOrEq returns 1 if x <= y and 0 otherwise. // Its behavior is undefined if x or y are negative or > 2**31 - 1. func ConstantTimeLessOrEq(x, y int) int { x32 := int32(x) y32 := int32(y) return int(((x32 - y32 - 1) >> 31) & 1) } go/src/pkg/crypto/subtle/constant_time_test.go0100644000000000000000000000446012412656737022126 0ustar00rootroot00000000000000// Copyright 2009 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 subtle import ( "testing" "testing/quick" ) type TestConstantTimeCompareStruct struct { a, b []byte out int } var testConstantTimeCompareData = []TestConstantTimeCompareStruct{ {[]byte{}, []byte{}, 1}, {[]byte{0x11}, []byte{0x11}, 1}, {[]byte{0x12}, []byte{0x11}, 0}, } func TestConstantTimeCompare(t *testing.T) { for i, test := range testConstantTimeCompareData { if r := ConstantTimeCompare(test.a, test.b); r != test.out { t.Errorf("#%d bad result (got %x, want %x)", i, r, test.out) } } } type TestConstantTimeByteEqStruct struct { a, b uint8 out int } var testConstandTimeByteEqData = []TestConstantTimeByteEqStruct{ {0, 0, 1}, {0, 1, 0}, {1, 0, 0}, {0xff, 0xff, 1}, {0xff, 0xfe, 0}, } func byteEq(a, b uint8) int { if a == b { return 1 } return 0 } func TestConstantTimeByteEq(t *testing.T) { for i, test := range testConstandTimeByteEqData { if r := ConstantTimeByteEq(test.a, test.b); r != test.out { t.Errorf("#%d bad result (got %x, want %x)", i, r, test.out) } } err := quick.CheckEqual(ConstantTimeByteEq, byteEq, nil) if err != nil { t.Error(err) } } func eq(a, b int32) int { if a == b { return 1 } return 0 } func TestConstantTimeEq(t *testing.T) { err := quick.CheckEqual(ConstantTimeEq, eq, nil) if err != nil { t.Error(err) } } func makeCopy(v int, x, y []byte) []byte { if len(x) > len(y) { x = x[0:len(y)] } else { y = y[0:len(x)] } if v == 1 { copy(x, y) } return x } func constantTimeCopyWrapper(v int, x, y []byte) []byte { if len(x) > len(y) { x = x[0:len(y)] } else { y = y[0:len(x)] } v &= 1 ConstantTimeCopy(v, x, y) return x } func TestConstantTimeCopy(t *testing.T) { err := quick.CheckEqual(constantTimeCopyWrapper, makeCopy, nil) if err != nil { t.Error(err) } } var lessOrEqTests = []struct { x, y, result int }{ {0, 0, 1}, {1, 0, 0}, {0, 1, 1}, {10, 20, 1}, {20, 10, 0}, {10, 10, 1}, } func TestConstantTimeLessOrEq(t *testing.T) { for i, test := range lessOrEqTests { result := ConstantTimeLessOrEq(test.x, test.y) if result != test.result { t.Errorf("#%d: %d <= %d gave %d, expected %d", i, test.x, test.y, result, test.result) } } } go/src/pkg/crypto/tls0040755000000000000000000000000012412656737015115 5ustar00rootroot00000000000000go/src/pkg/crypto/tls/alert.go0100644000000000000000000000477112412656737016640 0ustar00rootroot00000000000000// Copyright 2009 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 tls import "strconv" type alert uint8 const ( // alert level alertLevelWarning = 1 alertLevelError = 2 ) const ( alertCloseNotify alert = 0 alertUnexpectedMessage alert = 10 alertBadRecordMAC alert = 20 alertDecryptionFailed alert = 21 alertRecordOverflow alert = 22 alertDecompressionFailure alert = 30 alertHandshakeFailure alert = 40 alertBadCertificate alert = 42 alertUnsupportedCertificate alert = 43 alertCertificateRevoked alert = 44 alertCertificateExpired alert = 45 alertCertificateUnknown alert = 46 alertIllegalParameter alert = 47 alertUnknownCA alert = 48 alertAccessDenied alert = 49 alertDecodeError alert = 50 alertDecryptError alert = 51 alertProtocolVersion alert = 70 alertInsufficientSecurity alert = 71 alertInternalError alert = 80 alertUserCanceled alert = 90 alertNoRenegotiation alert = 100 ) var alertText = map[alert]string{ alertCloseNotify: "close notify", alertUnexpectedMessage: "unexpected message", alertBadRecordMAC: "bad record MAC", alertDecryptionFailed: "decryption failed", alertRecordOverflow: "record overflow", alertDecompressionFailure: "decompression failure", alertHandshakeFailure: "handshake failure", alertBadCertificate: "bad certificate", alertUnsupportedCertificate: "unsupported certificate", alertCertificateRevoked: "revoked certificate", alertCertificateExpired: "expired certificate", alertCertificateUnknown: "unknown certificate", alertIllegalParameter: "illegal parameter", alertUnknownCA: "unknown certificate authority", alertAccessDenied: "access denied", alertDecodeError: "error decoding message", alertDecryptError: "error decrypting message", alertProtocolVersion: "protocol version not supported", alertInsufficientSecurity: "insufficient security level", alertInternalError: "internal error", alertUserCanceled: "user canceled", alertNoRenegotiation: "no renegotiation", } func (e alert) String() string { s, ok := alertText[e] if ok { return s } return "alert(" + strconv.Itoa(int(e)) + ")" } func (e alert) Error() string { return e.String() } go/src/pkg/crypto/tls/cipher_suites.go0100644000000000000000000002212112412656737020364 0ustar00rootroot00000000000000// 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. package tls import ( "crypto/aes" "crypto/cipher" "crypto/des" "crypto/hmac" "crypto/rc4" "crypto/sha1" "crypto/x509" "hash" ) // a keyAgreement implements the client and server side of a TLS key agreement // protocol by generating and processing key exchange messages. type keyAgreement interface { // On the server side, the first two methods are called in order. // In the case that the key agreement protocol doesn't use a // ServerKeyExchange message, generateServerKeyExchange can return nil, // nil. generateServerKeyExchange(*Config, *Certificate, *clientHelloMsg, *serverHelloMsg) (*serverKeyExchangeMsg, error) processClientKeyExchange(*Config, *Certificate, *clientKeyExchangeMsg, uint16) ([]byte, error) // On the client side, the next two methods are called in order. // This method may not be called if the server doesn't send a // ServerKeyExchange message. processServerKeyExchange(*Config, *clientHelloMsg, *serverHelloMsg, *x509.Certificate, *serverKeyExchangeMsg) error generateClientKeyExchange(*Config, *clientHelloMsg, *x509.Certificate) ([]byte, *clientKeyExchangeMsg, error) } const ( // suiteECDH indicates that the cipher suite involves elliptic curve // Diffie-Hellman. This means that it should only be selected when the // client indicates that it supports ECC with a curve and point format // that we're happy with. suiteECDHE = 1 << iota // suiteECDSA indicates that the cipher suite involves an ECDSA // signature and therefore may only be selected when the server's // certificate is ECDSA. If this is not set then the cipher suite is // RSA based. suiteECDSA // suiteTLS12 indicates that the cipher suite should only be advertised // and accepted when using TLS 1.2. suiteTLS12 ) // A cipherSuite is a specific combination of key agreement, cipher and MAC // function. All cipher suites currently assume RSA key agreement. type cipherSuite struct { id uint16 // the lengths, in bytes, of the key material needed for each component. keyLen int macLen int ivLen int ka func(version uint16) keyAgreement // flags is a bitmask of the suite* values, above. flags int cipher func(key, iv []byte, isRead bool) interface{} mac func(version uint16, macKey []byte) macFunction aead func(key, fixedNonce []byte) cipher.AEAD } var cipherSuites = []*cipherSuite{ // Ciphersuite order is chosen so that ECDHE comes before plain RSA // and RC4 comes before AES (because of the Lucky13 attack). {TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, 16, 0, 4, ecdheRSAKA, suiteECDHE | suiteTLS12, nil, nil, aeadAESGCM}, {TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, 16, 0, 4, ecdheECDSAKA, suiteECDHE | suiteECDSA | suiteTLS12, nil, nil, aeadAESGCM}, {TLS_ECDHE_RSA_WITH_RC4_128_SHA, 16, 20, 0, ecdheRSAKA, suiteECDHE, cipherRC4, macSHA1, nil}, {TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, 16, 20, 0, ecdheECDSAKA, suiteECDHE | suiteECDSA, cipherRC4, macSHA1, nil}, {TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 16, 20, 16, ecdheRSAKA, suiteECDHE, cipherAES, macSHA1, nil}, {TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 16, 20, 16, ecdheECDSAKA, suiteECDHE | suiteECDSA, cipherAES, macSHA1, nil}, {TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, 32, 20, 16, ecdheRSAKA, suiteECDHE, cipherAES, macSHA1, nil}, {TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, 32, 20, 16, ecdheECDSAKA, suiteECDHE | suiteECDSA, cipherAES, macSHA1, nil}, {TLS_RSA_WITH_RC4_128_SHA, 16, 20, 0, rsaKA, 0, cipherRC4, macSHA1, nil}, {TLS_RSA_WITH_AES_128_CBC_SHA, 16, 20, 16, rsaKA, 0, cipherAES, macSHA1, nil}, {TLS_RSA_WITH_AES_256_CBC_SHA, 32, 20, 16, rsaKA, 0, cipherAES, macSHA1, nil}, {TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, 24, 20, 8, ecdheRSAKA, suiteECDHE, cipher3DES, macSHA1, nil}, {TLS_RSA_WITH_3DES_EDE_CBC_SHA, 24, 20, 8, rsaKA, 0, cipher3DES, macSHA1, nil}, } func cipherRC4(key, iv []byte, isRead bool) interface{} { cipher, _ := rc4.NewCipher(key) return cipher } func cipher3DES(key, iv []byte, isRead bool) interface{} { block, _ := des.NewTripleDESCipher(key) if isRead { return cipher.NewCBCDecrypter(block, iv) } return cipher.NewCBCEncrypter(block, iv) } func cipherAES(key, iv []byte, isRead bool) interface{} { block, _ := aes.NewCipher(key) if isRead { return cipher.NewCBCDecrypter(block, iv) } return cipher.NewCBCEncrypter(block, iv) } // macSHA1 returns a macFunction for the given protocol version. func macSHA1(version uint16, key []byte) macFunction { if version == VersionSSL30 { mac := ssl30MAC{ h: sha1.New(), key: make([]byte, len(key)), } copy(mac.key, key) return mac } return tls10MAC{hmac.New(sha1.New, key)} } type macFunction interface { Size() int MAC(digestBuf, seq, header, data []byte) []byte } // fixedNonceAEAD wraps an AEAD and prefixes a fixed portion of the nonce to // each call. type fixedNonceAEAD struct { // sealNonce and openNonce are buffers where the larger nonce will be // constructed. Since a seal and open operation may be running // concurrently, there is a separate buffer for each. sealNonce, openNonce []byte aead cipher.AEAD } func (f *fixedNonceAEAD) NonceSize() int { return 8 } func (f *fixedNonceAEAD) Overhead() int { return f.aead.Overhead() } func (f *fixedNonceAEAD) Seal(out, nonce, plaintext, additionalData []byte) []byte { copy(f.sealNonce[len(f.sealNonce)-8:], nonce) return f.aead.Seal(out, f.sealNonce, plaintext, additionalData) } func (f *fixedNonceAEAD) Open(out, nonce, plaintext, additionalData []byte) ([]byte, error) { copy(f.openNonce[len(f.openNonce)-8:], nonce) return f.aead.Open(out, f.openNonce, plaintext, additionalData) } func aeadAESGCM(key, fixedNonce []byte) cipher.AEAD { aes, err := aes.NewCipher(key) if err != nil { panic(err) } aead, err := cipher.NewGCM(aes) if err != nil { panic(err) } nonce1, nonce2 := make([]byte, 12), make([]byte, 12) copy(nonce1, fixedNonce) copy(nonce2, fixedNonce) return &fixedNonceAEAD{nonce1, nonce2, aead} } // ssl30MAC implements the SSLv3 MAC function, as defined in // www.mozilla.org/projects/security/pki/nss/ssl/draft302.txt section 5.2.3.1 type ssl30MAC struct { h hash.Hash key []byte } func (s ssl30MAC) Size() int { return s.h.Size() } var ssl30Pad1 = [48]byte{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36} var ssl30Pad2 = [48]byte{0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c} func (s ssl30MAC) MAC(digestBuf, seq, header, data []byte) []byte { padLength := 48 if s.h.Size() == 20 { padLength = 40 } s.h.Reset() s.h.Write(s.key) s.h.Write(ssl30Pad1[:padLength]) s.h.Write(seq) s.h.Write(header[:1]) s.h.Write(header[3:5]) s.h.Write(data) digestBuf = s.h.Sum(digestBuf[:0]) s.h.Reset() s.h.Write(s.key) s.h.Write(ssl30Pad2[:padLength]) s.h.Write(digestBuf) return s.h.Sum(digestBuf[:0]) } // tls10MAC implements the TLS 1.0 MAC function. RFC 2246, section 6.2.3. type tls10MAC struct { h hash.Hash } func (s tls10MAC) Size() int { return s.h.Size() } func (s tls10MAC) MAC(digestBuf, seq, header, data []byte) []byte { s.h.Reset() s.h.Write(seq) s.h.Write(header) s.h.Write(data) return s.h.Sum(digestBuf[:0]) } func rsaKA(version uint16) keyAgreement { return rsaKeyAgreement{} } func ecdheECDSAKA(version uint16) keyAgreement { return &ecdheKeyAgreement{ sigType: signatureECDSA, version: version, } } func ecdheRSAKA(version uint16) keyAgreement { return &ecdheKeyAgreement{ sigType: signatureRSA, version: version, } } // mutualCipherSuite returns a cipherSuite given a list of supported // ciphersuites and the id requested by the peer. func mutualCipherSuite(have []uint16, want uint16) *cipherSuite { for _, id := range have { if id == want { for _, suite := range cipherSuites { if suite.id == want { return suite } } return nil } } return nil } // A list of the possible cipher suite ids. Taken from // http://www.iana.org/assignments/tls-parameters/tls-parameters.xml const ( TLS_RSA_WITH_RC4_128_SHA uint16 = 0x0005 TLS_RSA_WITH_3DES_EDE_CBC_SHA uint16 = 0x000a TLS_RSA_WITH_AES_128_CBC_SHA uint16 = 0x002f TLS_RSA_WITH_AES_256_CBC_SHA uint16 = 0x0035 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA uint16 = 0xc007 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA uint16 = 0xc009 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA uint16 = 0xc00a TLS_ECDHE_RSA_WITH_RC4_128_SHA uint16 = 0xc011 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA uint16 = 0xc012 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA uint16 = 0xc013 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA uint16 = 0xc014 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 uint16 = 0xc02f TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 uint16 = 0xc02b ) go/src/pkg/crypto/tls/common.go0100644000000000000000000004133212412656737017013 0ustar00rootroot00000000000000// Copyright 2009 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 tls import ( "container/list" "crypto" "crypto/rand" "crypto/x509" "fmt" "io" "math/big" "strings" "sync" "time" ) const ( VersionSSL30 = 0x0300 VersionTLS10 = 0x0301 VersionTLS11 = 0x0302 VersionTLS12 = 0x0303 ) const ( maxPlaintext = 16384 // maximum plaintext payload length maxCiphertext = 16384 + 2048 // maximum ciphertext payload length recordHeaderLen = 5 // record header length maxHandshake = 65536 // maximum handshake we support (protocol max is 16 MB) minVersion = VersionSSL30 maxVersion = VersionTLS12 ) // TLS record types. type recordType uint8 const ( recordTypeChangeCipherSpec recordType = 20 recordTypeAlert recordType = 21 recordTypeHandshake recordType = 22 recordTypeApplicationData recordType = 23 ) // TLS handshake message types. const ( typeClientHello uint8 = 1 typeServerHello uint8 = 2 typeNewSessionTicket uint8 = 4 typeCertificate uint8 = 11 typeServerKeyExchange uint8 = 12 typeCertificateRequest uint8 = 13 typeServerHelloDone uint8 = 14 typeCertificateVerify uint8 = 15 typeClientKeyExchange uint8 = 16 typeFinished uint8 = 20 typeCertificateStatus uint8 = 22 typeNextProtocol uint8 = 67 // Not IANA assigned ) // TLS compression types. const ( compressionNone uint8 = 0 ) // TLS extension numbers const ( extensionServerName uint16 = 0 extensionStatusRequest uint16 = 5 extensionSupportedCurves uint16 = 10 extensionSupportedPoints uint16 = 11 extensionSignatureAlgorithms uint16 = 13 extensionSessionTicket uint16 = 35 extensionNextProtoNeg uint16 = 13172 // not IANA assigned extensionRenegotiationInfo uint16 = 0xff01 ) // TLS signaling cipher suite values const ( scsvRenegotiation uint16 = 0x00ff ) // CurveID is the type of a TLS identifier for an elliptic curve. See // http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8 type CurveID uint16 const ( CurveP256 CurveID = 23 CurveP384 CurveID = 24 CurveP521 CurveID = 25 ) // TLS Elliptic Curve Point Formats // http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-9 const ( pointFormatUncompressed uint8 = 0 ) // TLS CertificateStatusType (RFC 3546) const ( statusTypeOCSP uint8 = 1 ) // Certificate types (for certificateRequestMsg) const ( certTypeRSASign = 1 // A certificate containing an RSA key certTypeDSSSign = 2 // A certificate containing a DSA key certTypeRSAFixedDH = 3 // A certificate containing a static DH key certTypeDSSFixedDH = 4 // A certificate containing a static DH key // See RFC4492 sections 3 and 5.5. certTypeECDSASign = 64 // A certificate containing an ECDSA-capable public key, signed with ECDSA. certTypeRSAFixedECDH = 65 // A certificate containing an ECDH-capable public key, signed with RSA. certTypeECDSAFixedECDH = 66 // A certificate containing an ECDH-capable public key, signed with ECDSA. // Rest of these are reserved by the TLS spec ) // Hash functions for TLS 1.2 (See RFC 5246, section A.4.1) const ( hashSHA1 uint8 = 2 hashSHA256 uint8 = 4 ) // Signature algorithms for TLS 1.2 (See RFC 5246, section A.4.1) const ( signatureRSA uint8 = 1 signatureECDSA uint8 = 3 ) // signatureAndHash mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See // RFC 5246, section A.4.1. type signatureAndHash struct { hash, signature uint8 } // supportedSKXSignatureAlgorithms contains the signature and hash algorithms // that the code advertises as supported in a TLS 1.2 ClientHello. var supportedSKXSignatureAlgorithms = []signatureAndHash{ {hashSHA256, signatureRSA}, {hashSHA256, signatureECDSA}, {hashSHA1, signatureRSA}, {hashSHA1, signatureECDSA}, } // supportedClientCertSignatureAlgorithms contains the signature and hash // algorithms that the code advertises as supported in a TLS 1.2 // CertificateRequest. var supportedClientCertSignatureAlgorithms = []signatureAndHash{ {hashSHA256, signatureRSA}, {hashSHA256, signatureECDSA}, } // ConnectionState records basic TLS details about the connection. type ConnectionState struct { Version uint16 // TLS version used by the connection (e.g. VersionTLS12) HandshakeComplete bool // TLS handshake is complete DidResume bool // connection resumes a previous TLS connection CipherSuite uint16 // cipher suite in use (TLS_RSA_WITH_RC4_128_SHA, ...) NegotiatedProtocol string // negotiated next protocol (from Config.NextProtos) NegotiatedProtocolIsMutual bool // negotiated protocol was advertised by server ServerName string // server name requested by client, if any (server side only) PeerCertificates []*x509.Certificate // certificate chain presented by remote peer VerifiedChains [][]*x509.Certificate // verified chains built from PeerCertificates } // ClientAuthType declares the policy the server will follow for // TLS Client Authentication. type ClientAuthType int const ( NoClientCert ClientAuthType = iota RequestClientCert RequireAnyClientCert VerifyClientCertIfGiven RequireAndVerifyClientCert ) // ClientSessionState contains the state needed by clients to resume TLS // sessions. type ClientSessionState struct { sessionTicket []uint8 // Encrypted ticket used for session resumption with server vers uint16 // SSL/TLS version negotiated for the session cipherSuite uint16 // Ciphersuite negotiated for the session masterSecret []byte // MasterSecret generated by client on a full handshake serverCertificates []*x509.Certificate // Certificate chain presented by the server } // ClientSessionCache is a cache of ClientSessionState objects that can be used // by a client to resume a TLS session with a given server. ClientSessionCache // implementations should expect to be called concurrently from different // goroutines. type ClientSessionCache interface { // Get searches for a ClientSessionState associated with the given key. // On return, ok is true if one was found. Get(sessionKey string) (session *ClientSessionState, ok bool) // Put adds the ClientSessionState to the cache with the given key. Put(sessionKey string, cs *ClientSessionState) } // A Config structure is used to configure a TLS client or server. // After one has been passed to a TLS function it must not be // modified. A Config may be reused; the tls package will also not // modify it. type Config struct { // Rand provides the source of entropy for nonces and RSA blinding. // If Rand is nil, TLS uses the cryptographic random reader in package // crypto/rand. // The Reader must be safe for use by multiple goroutines. Rand io.Reader // Time returns the current time as the number of seconds since the epoch. // If Time is nil, TLS uses time.Now. Time func() time.Time // Certificates contains one or more certificate chains // to present to the other side of the connection. // Server configurations must include at least one certificate. Certificates []Certificate // NameToCertificate maps from a certificate name to an element of // Certificates. Note that a certificate name can be of the form // '*.example.com' and so doesn't have to be a domain name as such. // See Config.BuildNameToCertificate // The nil value causes the first element of Certificates to be used // for all connections. NameToCertificate map[string]*Certificate // RootCAs defines the set of root certificate authorities // that clients use when verifying server certificates. // If RootCAs is nil, TLS uses the host's root CA set. RootCAs *x509.CertPool // NextProtos is a list of supported, application level protocols. NextProtos []string // ServerName is used to verify the hostname on the returned // certificates unless InsecureSkipVerify is given. It is also included // in the client's handshake to support virtual hosting. ServerName string // ClientAuth determines the server's policy for // TLS Client Authentication. The default is NoClientCert. ClientAuth ClientAuthType // ClientCAs defines the set of root certificate authorities // that servers use if required to verify a client certificate // by the policy in ClientAuth. ClientCAs *x509.CertPool // InsecureSkipVerify controls whether a client verifies the // server's certificate chain and host name. // If InsecureSkipVerify is true, TLS accepts any certificate // presented by the server and any host name in that certificate. // In this mode, TLS is susceptible to man-in-the-middle attacks. // This should be used only for testing. InsecureSkipVerify bool // CipherSuites is a list of supported cipher suites. If CipherSuites // is nil, TLS uses a list of suites supported by the implementation. CipherSuites []uint16 // PreferServerCipherSuites controls whether the server selects the // client's most preferred ciphersuite, or the server's most preferred // ciphersuite. If true then the server's preference, as expressed in // the order of elements in CipherSuites, is used. PreferServerCipherSuites bool // SessionTicketsDisabled may be set to true to disable session ticket // (resumption) support. SessionTicketsDisabled bool // SessionTicketKey is used by TLS servers to provide session // resumption. See RFC 5077. If zero, it will be filled with // random data before the first server handshake. // // If multiple servers are terminating connections for the same host // they should all have the same SessionTicketKey. If the // SessionTicketKey leaks, previously recorded and future TLS // connections using that key are compromised. SessionTicketKey [32]byte // SessionCache is a cache of ClientSessionState entries for TLS session // resumption. ClientSessionCache ClientSessionCache // MinVersion contains the minimum SSL/TLS version that is acceptable. // If zero, then SSLv3 is taken as the minimum. MinVersion uint16 // MaxVersion contains the maximum SSL/TLS version that is acceptable. // If zero, then the maximum version supported by this package is used, // which is currently TLS 1.2. MaxVersion uint16 // CurvePreferences contains the elliptic curves that will be used in // an ECDHE handshake, in preference order. If empty, the default will // be used. CurvePreferences []CurveID serverInitOnce sync.Once // guards calling (*Config).serverInit } func (c *Config) serverInit() { if c.SessionTicketsDisabled { return } // If the key has already been set then we have nothing to do. for _, b := range c.SessionTicketKey { if b != 0 { return } } if _, err := io.ReadFull(c.rand(), c.SessionTicketKey[:]); err != nil { c.SessionTicketsDisabled = true } } func (c *Config) rand() io.Reader { r := c.Rand if r == nil { return rand.Reader } return r } func (c *Config) time() time.Time { t := c.Time if t == nil { t = time.Now } return t() } func (c *Config) cipherSuites() []uint16 { s := c.CipherSuites if s == nil { s = defaultCipherSuites() } return s } func (c *Config) minVersion() uint16 { if c == nil || c.MinVersion == 0 { return minVersion } return c.MinVersion } func (c *Config) maxVersion() uint16 { if c == nil || c.MaxVersion == 0 { return maxVersion } return c.MaxVersion } var defaultCurvePreferences = []CurveID{CurveP256, CurveP384, CurveP521} func (c *Config) curvePreferences() []CurveID { if c == nil || len(c.CurvePreferences) == 0 { return defaultCurvePreferences } return c.CurvePreferences } // mutualVersion returns the protocol version to use given the advertised // version of the peer. func (c *Config) mutualVersion(vers uint16) (uint16, bool) { minVersion := c.minVersion() maxVersion := c.maxVersion() if vers < minVersion { return 0, false } if vers > maxVersion { vers = maxVersion } return vers, true } // getCertificateForName returns the best certificate for the given name, // defaulting to the first element of c.Certificates if there are no good // options. func (c *Config) getCertificateForName(name string) *Certificate { if len(c.Certificates) == 1 || c.NameToCertificate == nil { // There's only one choice, so no point doing any work. return &c.Certificates[0] } name = strings.ToLower(name) for len(name) > 0 && name[len(name)-1] == '.' { name = name[:len(name)-1] } if cert, ok := c.NameToCertificate[name]; ok { return cert } // try replacing labels in the name with wildcards until we get a // match. labels := strings.Split(name, ".") for i := range labels { labels[i] = "*" candidate := strings.Join(labels, ".") if cert, ok := c.NameToCertificate[candidate]; ok { return cert } } // If nothing matches, return the first certificate. return &c.Certificates[0] } // BuildNameToCertificate parses c.Certificates and builds c.NameToCertificate // from the CommonName and SubjectAlternateName fields of each of the leaf // certificates. func (c *Config) BuildNameToCertificate() { c.NameToCertificate = make(map[string]*Certificate) for i := range c.Certificates { cert := &c.Certificates[i] x509Cert, err := x509.ParseCertificate(cert.Certificate[0]) if err != nil { continue } if len(x509Cert.Subject.CommonName) > 0 { c.NameToCertificate[x509Cert.Subject.CommonName] = cert } for _, san := range x509Cert.DNSNames { c.NameToCertificate[san] = cert } } } // A Certificate is a chain of one or more certificates, leaf first. type Certificate struct { Certificate [][]byte PrivateKey crypto.PrivateKey // supported types: *rsa.PrivateKey, *ecdsa.PrivateKey // OCSPStaple contains an optional OCSP response which will be served // to clients that request it. OCSPStaple []byte // Leaf is the parsed form of the leaf certificate, which may be // initialized using x509.ParseCertificate to reduce per-handshake // processing for TLS clients doing client authentication. If nil, the // leaf certificate will be parsed as needed. Leaf *x509.Certificate } // A TLS record. type record struct { contentType recordType major, minor uint8 payload []byte } type handshakeMessage interface { marshal() []byte unmarshal([]byte) bool } // lruSessionCache is a ClientSessionCache implementation that uses an LRU // caching strategy. type lruSessionCache struct { sync.Mutex m map[string]*list.Element q *list.List capacity int } type lruSessionCacheEntry struct { sessionKey string state *ClientSessionState } // NewLRUClientSessionCache returns a ClientSessionCache with the given // capacity that uses an LRU strategy. If capacity is < 1, a default capacity // is used instead. func NewLRUClientSessionCache(capacity int) ClientSessionCache { const defaultSessionCacheCapacity = 64 if capacity < 1 { capacity = defaultSessionCacheCapacity } return &lruSessionCache{ m: make(map[string]*list.Element), q: list.New(), capacity: capacity, } } // Put adds the provided (sessionKey, cs) pair to the cache. func (c *lruSessionCache) Put(sessionKey string, cs *ClientSessionState) { c.Lock() defer c.Unlock() if elem, ok := c.m[sessionKey]; ok { entry := elem.Value.(*lruSessionCacheEntry) entry.state = cs c.q.MoveToFront(elem) return } if c.q.Len() < c.capacity { entry := &lruSessionCacheEntry{sessionKey, cs} c.m[sessionKey] = c.q.PushFront(entry) return } elem := c.q.Back() entry := elem.Value.(*lruSessionCacheEntry) delete(c.m, entry.sessionKey) entry.sessionKey = sessionKey entry.state = cs c.q.MoveToFront(elem) c.m[sessionKey] = elem } // Get returns the ClientSessionState value associated with a given key. It // returns (nil, false) if no value is found. func (c *lruSessionCache) Get(sessionKey string) (*ClientSessionState, bool) { c.Lock() defer c.Unlock() if elem, ok := c.m[sessionKey]; ok { c.q.MoveToFront(elem) return elem.Value.(*lruSessionCacheEntry).state, true } return nil, false } // TODO(jsing): Make these available to both crypto/x509 and crypto/tls. type dsaSignature struct { R, S *big.Int } type ecdsaSignature dsaSignature var emptyConfig Config func defaultConfig() *Config { return &emptyConfig } var ( once sync.Once varDefaultCipherSuites []uint16 ) func defaultCipherSuites() []uint16 { once.Do(initDefaultCipherSuites) return varDefaultCipherSuites } func initDefaultCipherSuites() { varDefaultCipherSuites = make([]uint16, len(cipherSuites)) for i, suite := range cipherSuites { varDefaultCipherSuites[i] = suite.id } } func unexpectedMessageError(wanted, got interface{}) error { return fmt.Errorf("tls: received unexpected handshake message of type %T when waiting for %T", got, wanted) } go/src/pkg/crypto/tls/conn.go0100644000000000000000000006757612412656737016502 0ustar00rootroot00000000000000// 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. // TLS low level connection and record layer package tls import ( "bytes" "crypto/cipher" "crypto/subtle" "crypto/x509" "errors" "fmt" "io" "net" "sync" "time" ) // A Conn represents a secured connection. // It implements the net.Conn interface. type Conn struct { // constant conn net.Conn isClient bool // constant after handshake; protected by handshakeMutex handshakeMutex sync.Mutex // handshakeMutex < in.Mutex, out.Mutex, errMutex handshakeErr error // error resulting from handshake vers uint16 // TLS version haveVers bool // version has been negotiated config *Config // configuration passed to constructor handshakeComplete bool didResume bool // whether this connection was a session resumption cipherSuite uint16 ocspResponse []byte // stapled OCSP response peerCertificates []*x509.Certificate // verifiedChains contains the certificate chains that we built, as // opposed to the ones presented by the server. verifiedChains [][]*x509.Certificate // serverName contains the server name indicated by the client, if any. serverName string clientProtocol string clientProtocolFallback bool // input/output in, out halfConn // in.Mutex < out.Mutex rawInput *block // raw input, right off the wire input *block // application data waiting to be read hand bytes.Buffer // handshake data waiting to be read tmp [16]byte } // Access to net.Conn methods. // Cannot just embed net.Conn because that would // export the struct field too. // LocalAddr returns the local network address. func (c *Conn) LocalAddr() net.Addr { return c.conn.LocalAddr() } // RemoteAddr returns the remote network address. func (c *Conn) RemoteAddr() net.Addr { return c.conn.RemoteAddr() } // SetDeadline sets the read and write deadlines associated with the connection. // A zero value for t means Read and Write will not time out. // After a Write has timed out, the TLS state is corrupt and all future writes will return the same error. func (c *Conn) SetDeadline(t time.Time) error { return c.conn.SetDeadline(t) } // SetReadDeadline sets the read deadline on the underlying connection. // A zero value for t means Read will not time out. func (c *Conn) SetReadDeadline(t time.Time) error { return c.conn.SetReadDeadline(t) } // SetWriteDeadline sets the write deadline on the underlying connection. // A zero value for t means Write will not time out. // After a Write has timed out, the TLS state is corrupt and all future writes will return the same error. func (c *Conn) SetWriteDeadline(t time.Time) error { return c.conn.SetWriteDeadline(t) } // A halfConn represents one direction of the record layer // connection, either sending or receiving. type halfConn struct { sync.Mutex err error // first permanent error version uint16 // protocol version cipher interface{} // cipher algorithm mac macFunction seq [8]byte // 64-bit sequence number bfree *block // list of free blocks nextCipher interface{} // next encryption state nextMac macFunction // next MAC algorithm // used to save allocating a new buffer for each MAC. inDigestBuf, outDigestBuf []byte } func (hc *halfConn) setErrorLocked(err error) error { hc.err = err return err } func (hc *halfConn) error() error { hc.Lock() err := hc.err hc.Unlock() return err } // prepareCipherSpec sets the encryption and MAC states // that a subsequent changeCipherSpec will use. func (hc *halfConn) prepareCipherSpec(version uint16, cipher interface{}, mac macFunction) { hc.version = version hc.nextCipher = cipher hc.nextMac = mac } // changeCipherSpec changes the encryption and MAC states // to the ones previously passed to prepareCipherSpec. func (hc *halfConn) changeCipherSpec() error { if hc.nextCipher == nil { return alertInternalError } hc.cipher = hc.nextCipher hc.mac = hc.nextMac hc.nextCipher = nil hc.nextMac = nil for i := range hc.seq { hc.seq[i] = 0 } return nil } // incSeq increments the sequence number. func (hc *halfConn) incSeq() { for i := 7; i >= 0; i-- { hc.seq[i]++ if hc.seq[i] != 0 { return } } // Not allowed to let sequence number wrap. // Instead, must renegotiate before it does. // Not likely enough to bother. panic("TLS: sequence number wraparound") } // resetSeq resets the sequence number to zero. func (hc *halfConn) resetSeq() { for i := range hc.seq { hc.seq[i] = 0 } } // removePadding returns an unpadded slice, in constant time, which is a prefix // of the input. It also returns a byte which is equal to 255 if the padding // was valid and 0 otherwise. See RFC 2246, section 6.2.3.2 func removePadding(payload []byte) ([]byte, byte) { if len(payload) < 1 { return payload, 0 } paddingLen := payload[len(payload)-1] t := uint(len(payload)-1) - uint(paddingLen) // if len(payload) >= (paddingLen - 1) then the MSB of t is zero good := byte(int32(^t) >> 31) toCheck := 255 // the maximum possible padding length // The length of the padded data is public, so we can use an if here if toCheck+1 > len(payload) { toCheck = len(payload) - 1 } for i := 0; i < toCheck; i++ { t := uint(paddingLen) - uint(i) // if i <= paddingLen then the MSB of t is zero mask := byte(int32(^t) >> 31) b := payload[len(payload)-1-i] good &^= mask&paddingLen ^ mask&b } // We AND together the bits of good and replicate the result across // all the bits. good &= good << 4 good &= good << 2 good &= good << 1 good = uint8(int8(good) >> 7) toRemove := good&paddingLen + 1 return payload[:len(payload)-int(toRemove)], good } // removePaddingSSL30 is a replacement for removePadding in the case that the // protocol version is SSLv3. In this version, the contents of the padding // are random and cannot be checked. func removePaddingSSL30(payload []byte) ([]byte, byte) { if len(payload) < 1 { return payload, 0 } paddingLen := int(payload[len(payload)-1]) + 1 if paddingLen > len(payload) { return payload, 0 } return payload[:len(payload)-paddingLen], 255 } func roundUp(a, b int) int { return a + (b-a%b)%b } // cbcMode is an interface for block ciphers using cipher block chaining. type cbcMode interface { cipher.BlockMode SetIV([]byte) } // decrypt checks and strips the mac and decrypts the data in b. Returns a // success boolean, the number of bytes to skip from the start of the record in // order to get the application payload, and an optional alert value. func (hc *halfConn) decrypt(b *block) (ok bool, prefixLen int, alertValue alert) { // pull out payload payload := b.data[recordHeaderLen:] macSize := 0 if hc.mac != nil { macSize = hc.mac.Size() } paddingGood := byte(255) explicitIVLen := 0 // decrypt if hc.cipher != nil { switch c := hc.cipher.(type) { case cipher.Stream: c.XORKeyStream(payload, payload) case cipher.AEAD: explicitIVLen = 8 if len(payload) < explicitIVLen { return false, 0, alertBadRecordMAC } nonce := payload[:8] payload = payload[8:] var additionalData [13]byte copy(additionalData[:], hc.seq[:]) copy(additionalData[8:], b.data[:3]) n := len(payload) - c.Overhead() additionalData[11] = byte(n >> 8) additionalData[12] = byte(n) var err error payload, err = c.Open(payload[:0], nonce, payload, additionalData[:]) if err != nil { return false, 0, alertBadRecordMAC } b.resize(recordHeaderLen + explicitIVLen + len(payload)) case cbcMode: blockSize := c.BlockSize() if hc.version >= VersionTLS11 { explicitIVLen = blockSize } if len(payload)%blockSize != 0 || len(payload) < roundUp(explicitIVLen+macSize+1, blockSize) { return false, 0, alertBadRecordMAC } if explicitIVLen > 0 { c.SetIV(payload[:explicitIVLen]) payload = payload[explicitIVLen:] } c.CryptBlocks(payload, payload) if hc.version == VersionSSL30 { payload, paddingGood = removePaddingSSL30(payload) } else { payload, paddingGood = removePadding(payload) } b.resize(recordHeaderLen + explicitIVLen + len(payload)) // note that we still have a timing side-channel in the // MAC check, below. An attacker can align the record // so that a correct padding will cause one less hash // block to be calculated. Then they can iteratively // decrypt a record by breaking each byte. See // "Password Interception in a SSL/TLS Channel", Brice // Canvel et al. // // However, our behavior matches OpenSSL, so we leak // only as much as they do. default: panic("unknown cipher type") } } // check, strip mac if hc.mac != nil { if len(payload) < macSize { return false, 0, alertBadRecordMAC } // strip mac off payload, b.data n := len(payload) - macSize b.data[3] = byte(n >> 8) b.data[4] = byte(n) b.resize(recordHeaderLen + explicitIVLen + n) remoteMAC := payload[n:] localMAC := hc.mac.MAC(hc.inDigestBuf, hc.seq[0:], b.data[:recordHeaderLen], payload[:n]) if subtle.ConstantTimeCompare(localMAC, remoteMAC) != 1 || paddingGood != 255 { return false, 0, alertBadRecordMAC } hc.inDigestBuf = localMAC } hc.incSeq() return true, recordHeaderLen + explicitIVLen, 0 } // padToBlockSize calculates the needed padding block, if any, for a payload. // On exit, prefix aliases payload and extends to the end of the last full // block of payload. finalBlock is a fresh slice which contains the contents of // any suffix of payload as well as the needed padding to make finalBlock a // full block. func padToBlockSize(payload []byte, blockSize int) (prefix, finalBlock []byte) { overrun := len(payload) % blockSize paddingLen := blockSize - overrun prefix = payload[:len(payload)-overrun] finalBlock = make([]byte, blockSize) copy(finalBlock, payload[len(payload)-overrun:]) for i := overrun; i < blockSize; i++ { finalBlock[i] = byte(paddingLen - 1) } return } // encrypt encrypts and macs the data in b. func (hc *halfConn) encrypt(b *block, explicitIVLen int) (bool, alert) { // mac if hc.mac != nil { mac := hc.mac.MAC(hc.outDigestBuf, hc.seq[0:], b.data[:recordHeaderLen], b.data[recordHeaderLen+explicitIVLen:]) n := len(b.data) b.resize(n + len(mac)) copy(b.data[n:], mac) hc.outDigestBuf = mac } payload := b.data[recordHeaderLen:] // encrypt if hc.cipher != nil { switch c := hc.cipher.(type) { case cipher.Stream: c.XORKeyStream(payload, payload) case cipher.AEAD: payloadLen := len(b.data) - recordHeaderLen - explicitIVLen b.resize(len(b.data) + c.Overhead()) nonce := b.data[recordHeaderLen : recordHeaderLen+explicitIVLen] payload := b.data[recordHeaderLen+explicitIVLen:] payload = payload[:payloadLen] var additionalData [13]byte copy(additionalData[:], hc.seq[:]) copy(additionalData[8:], b.data[:3]) additionalData[11] = byte(payloadLen >> 8) additionalData[12] = byte(payloadLen) c.Seal(payload[:0], nonce, payload, additionalData[:]) case cbcMode: blockSize := c.BlockSize() if explicitIVLen > 0 { c.SetIV(payload[:explicitIVLen]) payload = payload[explicitIVLen:] } prefix, finalBlock := padToBlockSize(payload, blockSize) b.resize(recordHeaderLen + explicitIVLen + len(prefix) + len(finalBlock)) c.CryptBlocks(b.data[recordHeaderLen+explicitIVLen:], prefix) c.CryptBlocks(b.data[recordHeaderLen+explicitIVLen+len(prefix):], finalBlock) default: panic("unknown cipher type") } } // update length to include MAC and any block padding needed. n := len(b.data) - recordHeaderLen b.data[3] = byte(n >> 8) b.data[4] = byte(n) hc.incSeq() return true, 0 } // A block is a simple data buffer. type block struct { data []byte off int // index for Read link *block } // resize resizes block to be n bytes, growing if necessary. func (b *block) resize(n int) { if n > cap(b.data) { b.reserve(n) } b.data = b.data[0:n] } // reserve makes sure that block contains a capacity of at least n bytes. func (b *block) reserve(n int) { if cap(b.data) >= n { return } m := cap(b.data) if m == 0 { m = 1024 } for m < n { m *= 2 } data := make([]byte, len(b.data), m) copy(data, b.data) b.data = data } // readFromUntil reads from r into b until b contains at least n bytes // or else returns an error. func (b *block) readFromUntil(r io.Reader, n int) error { // quick case if len(b.data) >= n { return nil } // read until have enough. b.reserve(n) for { m, err := r.Read(b.data[len(b.data):cap(b.data)]) b.data = b.data[0 : len(b.data)+m] if len(b.data) >= n { // TODO(bradfitz,agl): slightly suspicious // that we're throwing away r.Read's err here. break } if err != nil { return err } } return nil } func (b *block) Read(p []byte) (n int, err error) { n = copy(p, b.data[b.off:]) b.off += n return } // newBlock allocates a new block, from hc's free list if possible. func (hc *halfConn) newBlock() *block { b := hc.bfree if b == nil { return new(block) } hc.bfree = b.link b.link = nil b.resize(0) return b } // freeBlock returns a block to hc's free list. // The protocol is such that each side only has a block or two on // its free list at a time, so there's no need to worry about // trimming the list, etc. func (hc *halfConn) freeBlock(b *block) { b.link = hc.bfree hc.bfree = b } // splitBlock splits a block after the first n bytes, // returning a block with those n bytes and a // block with the remainder. the latter may be nil. func (hc *halfConn) splitBlock(b *block, n int) (*block, *block) { if len(b.data) <= n { return b, nil } bb := hc.newBlock() bb.resize(len(b.data) - n) copy(bb.data, b.data[n:]) b.data = b.data[0:n] return b, bb } // readRecord reads the next TLS record from the connection // and updates the record layer state. // c.in.Mutex <= L; c.input == nil. func (c *Conn) readRecord(want recordType) error { // Caller must be in sync with connection: // handshake data if handshake not yet completed, // else application data. (We don't support renegotiation.) switch want { default: c.sendAlert(alertInternalError) return c.in.setErrorLocked(errors.New("tls: unknown record type requested")) case recordTypeHandshake, recordTypeChangeCipherSpec: if c.handshakeComplete { c.sendAlert(alertInternalError) return c.in.setErrorLocked(errors.New("tls: handshake or ChangeCipherSpec requested after handshake complete")) } case recordTypeApplicationData: if !c.handshakeComplete { c.sendAlert(alertInternalError) return c.in.setErrorLocked(errors.New("tls: application data record requested before handshake complete")) } } Again: if c.rawInput == nil { c.rawInput = c.in.newBlock() } b := c.rawInput // Read header, payload. if err := b.readFromUntil(c.conn, recordHeaderLen); err != nil { // RFC suggests that EOF without an alertCloseNotify is // an error, but popular web sites seem to do this, // so we can't make it an error. // if err == io.EOF { // err = io.ErrUnexpectedEOF // } if e, ok := err.(net.Error); !ok || !e.Temporary() { c.in.setErrorLocked(err) } return err } typ := recordType(b.data[0]) // No valid TLS record has a type of 0x80, however SSLv2 handshakes // start with a uint16 length where the MSB is set and the first record // is always < 256 bytes long. Therefore typ == 0x80 strongly suggests // an SSLv2 client. if want == recordTypeHandshake && typ == 0x80 { c.sendAlert(alertProtocolVersion) return c.in.setErrorLocked(errors.New("tls: unsupported SSLv2 handshake received")) } vers := uint16(b.data[1])<<8 | uint16(b.data[2]) n := int(b.data[3])<<8 | int(b.data[4]) if c.haveVers && vers != c.vers { c.sendAlert(alertProtocolVersion) return c.in.setErrorLocked(fmt.Errorf("tls: received record with version %x when expecting version %x", vers, c.vers)) } if n > maxCiphertext { c.sendAlert(alertRecordOverflow) return c.in.setErrorLocked(fmt.Errorf("tls: oversized record received with length %d", n)) } if !c.haveVers { // First message, be extra suspicious: // this might not be a TLS client. // Bail out before reading a full 'body', if possible. // The current max version is 3.1. // If the version is >= 16.0, it's probably not real. // Similarly, a clientHello message encodes in // well under a kilobyte. If the length is >= 12 kB, // it's probably not real. if (typ != recordTypeAlert && typ != want) || vers >= 0x1000 || n >= 0x3000 { c.sendAlert(alertUnexpectedMessage) return c.in.setErrorLocked(fmt.Errorf("tls: first record does not look like a TLS handshake")) } } if err := b.readFromUntil(c.conn, recordHeaderLen+n); err != nil { if err == io.EOF { err = io.ErrUnexpectedEOF } if e, ok := err.(net.Error); !ok || !e.Temporary() { c.in.setErrorLocked(err) } return err } // Process message. b, c.rawInput = c.in.splitBlock(b, recordHeaderLen+n) ok, off, err := c.in.decrypt(b) if !ok { c.in.setErrorLocked(c.sendAlert(err)) } b.off = off data := b.data[b.off:] if len(data) > maxPlaintext { err := c.sendAlert(alertRecordOverflow) c.in.freeBlock(b) return c.in.setErrorLocked(err) } switch typ { default: c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) case recordTypeAlert: if len(data) != 2 { c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) break } if alert(data[1]) == alertCloseNotify { c.in.setErrorLocked(io.EOF) break } switch data[0] { case alertLevelWarning: // drop on the floor c.in.freeBlock(b) goto Again case alertLevelError: c.in.setErrorLocked(&net.OpError{Op: "remote error", Err: alert(data[1])}) default: c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) } case recordTypeChangeCipherSpec: if typ != want || len(data) != 1 || data[0] != 1 { c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) break } err := c.in.changeCipherSpec() if err != nil { c.in.setErrorLocked(c.sendAlert(err.(alert))) } case recordTypeApplicationData: if typ != want { c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) break } c.input = b b = nil case recordTypeHandshake: // TODO(rsc): Should at least pick off connection close. if typ != want { return c.in.setErrorLocked(c.sendAlert(alertNoRenegotiation)) } c.hand.Write(data) } if b != nil { c.in.freeBlock(b) } return c.in.err } // sendAlert sends a TLS alert message. // c.out.Mutex <= L. func (c *Conn) sendAlertLocked(err alert) error { switch err { case alertNoRenegotiation, alertCloseNotify: c.tmp[0] = alertLevelWarning default: c.tmp[0] = alertLevelError } c.tmp[1] = byte(err) c.writeRecord(recordTypeAlert, c.tmp[0:2]) // closeNotify is a special case in that it isn't an error: if err != alertCloseNotify { return c.out.setErrorLocked(&net.OpError{Op: "local error", Err: err}) } return nil } // sendAlert sends a TLS alert message. // L < c.out.Mutex. func (c *Conn) sendAlert(err alert) error { c.out.Lock() defer c.out.Unlock() return c.sendAlertLocked(err) } // writeRecord writes a TLS record with the given type and payload // to the connection and updates the record layer state. // c.out.Mutex <= L. func (c *Conn) writeRecord(typ recordType, data []byte) (n int, err error) { b := c.out.newBlock() for len(data) > 0 { m := len(data) if m > maxPlaintext { m = maxPlaintext } explicitIVLen := 0 explicitIVIsSeq := false var cbc cbcMode if c.out.version >= VersionTLS11 { var ok bool if cbc, ok = c.out.cipher.(cbcMode); ok { explicitIVLen = cbc.BlockSize() } } if explicitIVLen == 0 { if _, ok := c.out.cipher.(cipher.AEAD); ok { explicitIVLen = 8 // The AES-GCM construction in TLS has an // explicit nonce so that the nonce can be // random. However, the nonce is only 8 bytes // which is too small for a secure, random // nonce. Therefore we use the sequence number // as the nonce. explicitIVIsSeq = true } } b.resize(recordHeaderLen + explicitIVLen + m) b.data[0] = byte(typ) vers := c.vers if vers == 0 { // Some TLS servers fail if the record version is // greater than TLS 1.0 for the initial ClientHello. vers = VersionTLS10 } b.data[1] = byte(vers >> 8) b.data[2] = byte(vers) b.data[3] = byte(m >> 8) b.data[4] = byte(m) if explicitIVLen > 0 { explicitIV := b.data[recordHeaderLen : recordHeaderLen+explicitIVLen] if explicitIVIsSeq { copy(explicitIV, c.out.seq[:]) } else { if _, err = io.ReadFull(c.config.rand(), explicitIV); err != nil { break } } } copy(b.data[recordHeaderLen+explicitIVLen:], data) c.out.encrypt(b, explicitIVLen) _, err = c.conn.Write(b.data) if err != nil { break } n += m data = data[m:] } c.out.freeBlock(b) if typ == recordTypeChangeCipherSpec { err = c.out.changeCipherSpec() if err != nil { // Cannot call sendAlert directly, // because we already hold c.out.Mutex. c.tmp[0] = alertLevelError c.tmp[1] = byte(err.(alert)) c.writeRecord(recordTypeAlert, c.tmp[0:2]) return n, c.out.setErrorLocked(&net.OpError{Op: "local error", Err: err}) } } return } // readHandshake reads the next handshake message from // the record layer. // c.in.Mutex < L; c.out.Mutex < L. func (c *Conn) readHandshake() (interface{}, error) { for c.hand.Len() < 4 { if err := c.in.err; err != nil { return nil, err } if err := c.readRecord(recordTypeHandshake); err != nil { return nil, err } } data := c.hand.Bytes() n := int(data[1])<<16 | int(data[2])<<8 | int(data[3]) if n > maxHandshake { return nil, c.in.setErrorLocked(c.sendAlert(alertInternalError)) } for c.hand.Len() < 4+n { if err := c.in.err; err != nil { return nil, err } if err := c.readRecord(recordTypeHandshake); err != nil { return nil, err } } data = c.hand.Next(4 + n) var m handshakeMessage switch data[0] { case typeClientHello: m = new(clientHelloMsg) case typeServerHello: m = new(serverHelloMsg) case typeNewSessionTicket: m = new(newSessionTicketMsg) case typeCertificate: m = new(certificateMsg) case typeCertificateRequest: m = &certificateRequestMsg{ hasSignatureAndHash: c.vers >= VersionTLS12, } case typeCertificateStatus: m = new(certificateStatusMsg) case typeServerKeyExchange: m = new(serverKeyExchangeMsg) case typeServerHelloDone: m = new(serverHelloDoneMsg) case typeClientKeyExchange: m = new(clientKeyExchangeMsg) case typeCertificateVerify: m = &certificateVerifyMsg{ hasSignatureAndHash: c.vers >= VersionTLS12, } case typeNextProtocol: m = new(nextProtoMsg) case typeFinished: m = new(finishedMsg) default: return nil, c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) } // The handshake message unmarshallers // expect to be able to keep references to data, // so pass in a fresh copy that won't be overwritten. data = append([]byte(nil), data...) if !m.unmarshal(data) { return nil, c.in.setErrorLocked(c.sendAlert(alertUnexpectedMessage)) } return m, nil } // Write writes data to the connection. func (c *Conn) Write(b []byte) (int, error) { if err := c.Handshake(); err != nil { return 0, err } c.out.Lock() defer c.out.Unlock() if err := c.out.err; err != nil { return 0, err } if !c.handshakeComplete { return 0, alertInternalError } // SSL 3.0 and TLS 1.0 are susceptible to a chosen-plaintext // attack when using block mode ciphers due to predictable IVs. // This can be prevented by splitting each Application Data // record into two records, effectively randomizing the IV. // // http://www.openssl.org/~bodo/tls-cbc.txt // https://bugzilla.mozilla.org/show_bug.cgi?id=665814 // http://www.imperialviolet.org/2012/01/15/beastfollowup.html var m int if len(b) > 1 && c.vers <= VersionTLS10 { if _, ok := c.out.cipher.(cipher.BlockMode); ok { n, err := c.writeRecord(recordTypeApplicationData, b[:1]) if err != nil { return n, c.out.setErrorLocked(err) } m, b = 1, b[1:] } } n, err := c.writeRecord(recordTypeApplicationData, b) return n + m, c.out.setErrorLocked(err) } // Read can be made to time out and return a net.Error with Timeout() == true // after a fixed time limit; see SetDeadline and SetReadDeadline. func (c *Conn) Read(b []byte) (n int, err error) { if err = c.Handshake(); err != nil { return } if len(b) == 0 { // Put this after Handshake, in case people were calling // Read(nil) for the side effect of the Handshake. return } c.in.Lock() defer c.in.Unlock() // Some OpenSSL servers send empty records in order to randomize the // CBC IV. So this loop ignores a limited number of empty records. const maxConsecutiveEmptyRecords = 100 for emptyRecordCount := 0; emptyRecordCount <= maxConsecutiveEmptyRecords; emptyRecordCount++ { for c.input == nil && c.in.err == nil { if err := c.readRecord(recordTypeApplicationData); err != nil { // Soft error, like EAGAIN return 0, err } } if err := c.in.err; err != nil { return 0, err } n, err = c.input.Read(b) if c.input.off >= len(c.input.data) { c.in.freeBlock(c.input) c.input = nil } // If a close-notify alert is waiting, read it so that // we can return (n, EOF) instead of (n, nil), to signal // to the HTTP response reading goroutine that the // connection is now closed. This eliminates a race // where the HTTP response reading goroutine would // otherwise not observe the EOF until its next read, // by which time a client goroutine might have already // tried to reuse the HTTP connection for a new // request. // See https://codereview.appspot.com/76400046 // and http://golang.org/issue/3514 if ri := c.rawInput; ri != nil && n != 0 && err == nil && c.input == nil && len(ri.data) > 0 && recordType(ri.data[0]) == recordTypeAlert { if recErr := c.readRecord(recordTypeApplicationData); recErr != nil { err = recErr // will be io.EOF on closeNotify } } if n != 0 || err != nil { return n, err } } return 0, io.ErrNoProgress } // Close closes the connection. func (c *Conn) Close() error { var alertErr error c.handshakeMutex.Lock() defer c.handshakeMutex.Unlock() if c.handshakeComplete { alertErr = c.sendAlert(alertCloseNotify) } if err := c.conn.Close(); err != nil { return err } return alertErr } // Handshake runs the client or server handshake // protocol if it has not yet been run. // Most uses of this package need not call Handshake // explicitly: the first Read or Write will call it automatically. func (c *Conn) Handshake() error { c.handshakeMutex.Lock() defer c.handshakeMutex.Unlock() if err := c.handshakeErr; err != nil { return err } if c.handshakeComplete { return nil } if c.isClient { c.handshakeErr = c.clientHandshake() } else { c.handshakeErr = c.serverHandshake() } return c.handshakeErr } // ConnectionState returns basic TLS details about the connection. func (c *Conn) ConnectionState() ConnectionState { c.handshakeMutex.Lock() defer c.handshakeMutex.Unlock() var state ConnectionState state.HandshakeComplete = c.handshakeComplete if c.handshakeComplete { state.Version = c.vers state.NegotiatedProtocol = c.clientProtocol state.DidResume = c.didResume state.NegotiatedProtocolIsMutual = !c.clientProtocolFallback state.CipherSuite = c.cipherSuite state.PeerCertificates = c.peerCertificates state.VerifiedChains = c.verifiedChains state.ServerName = c.serverName } return state } // OCSPResponse returns the stapled OCSP response from the TLS server, if // any. (Only valid for client connections.) func (c *Conn) OCSPResponse() []byte { c.handshakeMutex.Lock() defer c.handshakeMutex.Unlock() return c.ocspResponse } // VerifyHostname checks that the peer certificate chain is valid for // connecting to host. If so, it returns nil; if not, it returns an error // describing the problem. func (c *Conn) VerifyHostname(host string) error { c.handshakeMutex.Lock() defer c.handshakeMutex.Unlock() if !c.isClient { return errors.New("tls: VerifyHostname called on TLS server connection") } if !c.handshakeComplete { return errors.New("tls: handshake has not yet been performed") } return c.peerCertificates[0].VerifyHostname(host) } go/src/pkg/crypto/tls/conn_test.go0100644000000000000000000001240512412656737017516 0ustar00rootroot00000000000000// 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. package tls import ( "testing" ) func TestRoundUp(t *testing.T) { if roundUp(0, 16) != 0 || roundUp(1, 16) != 16 || roundUp(15, 16) != 16 || roundUp(16, 16) != 16 || roundUp(17, 16) != 32 { t.Error("roundUp broken") } } var paddingTests = []struct { in []byte good bool expectedLen int }{ {[]byte{1, 2, 3, 4, 0}, true, 4}, {[]byte{1, 2, 3, 4, 0, 1}, false, 0}, {[]byte{1, 2, 3, 4, 99, 99}, false, 0}, {[]byte{1, 2, 3, 4, 1, 1}, true, 4}, {[]byte{1, 2, 3, 2, 2, 2}, true, 3}, {[]byte{1, 2, 3, 3, 3, 3}, true, 2}, {[]byte{1, 2, 3, 4, 3, 3}, false, 0}, {[]byte{1, 4, 4, 4, 4, 4}, true, 1}, {[]byte{5, 5, 5, 5, 5, 5}, true, 0}, {[]byte{6, 6, 6, 6, 6, 6}, false, 0}, } func TestRemovePadding(t *testing.T) { for i, test := range paddingTests { payload, good := removePadding(test.in) expectedGood := byte(255) if !test.good { expectedGood = 0 } if good != expectedGood { t.Errorf("#%d: wrong validity, want:%d got:%d", i, expectedGood, good) } if good == 255 && len(payload) != test.expectedLen { t.Errorf("#%d: got %d, want %d", i, len(payload), test.expectedLen) } } } var certExampleCom = `308201403081eda003020102020101300b06092a864886f70d010105301e311c301a060355040a131354657374696e67204365727469666963617465301e170d3131313030313138353835325a170d3132303933303138353835325a301e311c301a060355040a131354657374696e67204365727469666963617465305a300b06092a864886f70d010101034b003048024100bced6e32368599eeddf18796bfd03958a154f87e5b084f96e85136a56b886733592f493f0fc68b0d6b3551781cb95e13c5de458b28d6fb60d20a9129313261410203010001a31a301830160603551d11040f300d820b6578616d706c652e636f6d300b06092a864886f70d0101050341001a0b419d2c74474c6450654e5f10b32bf426ffdf55cad1c52602e7a9151513a3424c70f5960dcd682db0c33769cc1daa3fcdd3db10809d2392ed4a1bf50ced18` var certWildcardExampleCom = `308201423081efa003020102020101300b06092a864886f70d010105301e311c301a060355040a131354657374696e67204365727469666963617465301e170d3131313030313139303034365a170d3132303933303139303034365a301e311c301a060355040a131354657374696e67204365727469666963617465305a300b06092a864886f70d010101034b003048024100bced6e32368599eeddf18796bfd03958a154f87e5b084f96e85136a56b886733592f493f0fc68b0d6b3551781cb95e13c5de458b28d6fb60d20a9129313261410203010001a31c301a30180603551d110411300f820d2a2e6578616d706c652e636f6d300b06092a864886f70d0101050341001676f0c9e7c33c1b656ed5a6476c4e2ee9ec8e62df7407accb1875272b2edd0a22096cb2c22598d11604104d604f810eb4b5987ca6bb319c7e6ce48725c54059` var certFooExampleCom = `308201443081f1a003020102020101300b06092a864886f70d010105301e311c301a060355040a131354657374696e67204365727469666963617465301e170d3131313030313139303131345a170d3132303933303139303131345a301e311c301a060355040a131354657374696e67204365727469666963617465305a300b06092a864886f70d010101034b003048024100bced6e32368599eeddf18796bfd03958a154f87e5b084f96e85136a56b886733592f493f0fc68b0d6b3551781cb95e13c5de458b28d6fb60d20a9129313261410203010001a31e301c301a0603551d1104133011820f666f6f2e6578616d706c652e636f6d300b06092a864886f70d010105034100646a2a51f2aa2477add854b462cf5207ba16d3213ffb5d3d0eed473fbf09935019192d1d5b8ca6a2407b424cf04d97c4cd9197c83ecf81f0eab9464a1109d09f` var certDoubleWildcardExampleCom = `308201443081f1a003020102020101300b06092a864886f70d010105301e311c301a060355040a131354657374696e67204365727469666963617465301e170d3131313030313139303134315a170d3132303933303139303134315a301e311c301a060355040a131354657374696e67204365727469666963617465305a300b06092a864886f70d010101034b003048024100bced6e32368599eeddf18796bfd03958a154f87e5b084f96e85136a56b886733592f493f0fc68b0d6b3551781cb95e13c5de458b28d6fb60d20a9129313261410203010001a31e301c301a0603551d1104133011820f2a2e2a2e6578616d706c652e636f6d300b06092a864886f70d0101050341001c3de267975f56ef57771c6218ef95ecc65102e57bd1defe6f7efea90d9b26cf40de5bd7ad75e46201c7f2a92aaa3e907451e9409f65e28ddb6db80d726290f6` func TestCertificateSelection(t *testing.T) { config := Config{ Certificates: []Certificate{ { Certificate: [][]byte{fromHex(certExampleCom)}, }, { Certificate: [][]byte{fromHex(certWildcardExampleCom)}, }, { Certificate: [][]byte{fromHex(certFooExampleCom)}, }, { Certificate: [][]byte{fromHex(certDoubleWildcardExampleCom)}, }, }, } config.BuildNameToCertificate() pointerToIndex := func(c *Certificate) int { for i := range config.Certificates { if c == &config.Certificates[i] { return i } } return -1 } if n := pointerToIndex(config.getCertificateForName("example.com")); n != 0 { t.Errorf("example.com returned certificate %d, not 0", n) } if n := pointerToIndex(config.getCertificateForName("bar.example.com")); n != 1 { t.Errorf("bar.example.com returned certificate %d, not 1", n) } if n := pointerToIndex(config.getCertificateForName("foo.example.com")); n != 2 { t.Errorf("foo.example.com returned certificate %d, not 2", n) } if n := pointerToIndex(config.getCertificateForName("foo.bar.example.com")); n != 3 { t.Errorf("foo.bar.example.com returned certificate %d, not 3", n) } if n := pointerToIndex(config.getCertificateForName("foo.bar.baz.example.com")); n != 0 { t.Errorf("foo.bar.baz.example.com returned certificate %d, not 0", n) } } go/src/pkg/crypto/tls/example_test.go0100644000000000000000000000432712412656737020220 0ustar00rootroot00000000000000// 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. package tls_test import ( "crypto/tls" "crypto/x509" ) func ExampleDial() { // Connecting with a custom root-certificate set. const rootPEM = ` -----BEGIN CERTIFICATE----- MIIEBDCCAuygAwIBAgIDAjppMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i YWwgQ0EwHhcNMTMwNDA1MTUxNTU1WhcNMTUwNDA0MTUxNTU1WjBJMQswCQYDVQQG EwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzElMCMGA1UEAxMcR29vZ2xlIEludGVy bmV0IEF1dGhvcml0eSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AJwqBHdc2FCROgajguDYUEi8iT/xGXAaiEZ+4I/F8YnOIe5a/mENtzJEiaB0C1NP VaTOgmKV7utZX8bhBYASxF6UP7xbSDj0U/ck5vuR6RXEz/RTDfRK/J9U3n2+oGtv h8DQUB8oMANA2ghzUWx//zo8pzcGjr1LEQTrfSTe5vn8MXH7lNVg8y5Kr0LSy+rE ahqyzFPdFUuLH8gZYR/Nnag+YyuENWllhMgZxUYi+FOVvuOAShDGKuy6lyARxzmZ EASg8GF6lSWMTlJ14rbtCMoU/M4iarNOz0YDl5cDfsCx3nuvRTPPuj5xt970JSXC DTWJnZ37DhF5iR43xa+OcmkCAwEAAaOB+zCB+DAfBgNVHSMEGDAWgBTAephojYn7 qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUSt0GFhu89mi1dvWBtrtiGrpagS8wEgYD VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwOgYDVR0fBDMwMTAvoC2g K4YpaHR0cDovL2NybC5nZW90cnVzdC5jb20vY3Jscy9ndGdsb2JhbC5jcmwwPQYI KwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwOi8vZ3RnbG9iYWwtb2NzcC5n ZW90cnVzdC5jb20wFwYDVR0gBBAwDjAMBgorBgEEAdZ5AgUBMA0GCSqGSIb3DQEB BQUAA4IBAQA21waAESetKhSbOHezI6B1WLuxfoNCunLaHtiONgaX4PCVOzf9G0JY /iLIa704XtE7JW4S615ndkZAkNoUyHgN7ZVm2o6Gb4ChulYylYbc3GrKBIxbf/a/ zG+FA1jDaFETzf3I93k9mTXwVqO94FntT0QJo544evZG0R0SnU++0ED8Vf4GXjza HFa9llF7b1cq26KqltyMdMKVvvBulRP/F/A8rLIQjcxz++iPAsbw+zOzlTvjwsto WHPbqCRiOwY1nQ2pM714A5AuTHhdUDqB1O6gyHA43LL5Z/qHQF1hwFGPa4NrzQU6 yuGnBXj8ytqU0CwIPX4WecigUCAkVDNx -----END CERTIFICATE-----` // First, create the set of root certificates. For this example we only // have one. It's also possible to omit this in order to use the // default root set of the current operating system. roots := x509.NewCertPool() ok := roots.AppendCertsFromPEM([]byte(rootPEM)) if !ok { panic("failed to parse root certificate") } conn, err := tls.Dial("tcp", "mail.google.com:443", &tls.Config{ RootCAs: roots, }) if err != nil { panic("failed to connect: " + err.Error()) } conn.Close() } go/src/pkg/crypto/tls/generate_cert.go0100644000000000000000000000605112412656737020331 0ustar00rootroot00000000000000// Copyright 2009 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 ignore // Generate a self-signed X.509 certificate for a TLS server. Outputs to // 'cert.pem' and 'key.pem' and will overwrite existing files. package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "crypto/x509/pkix" "encoding/pem" "flag" "fmt" "log" "math/big" "net" "os" "strings" "time" ) var ( host = flag.String("host", "", "Comma-separated hostnames and IPs to generate a certificate for") validFrom = flag.String("start-date", "", "Creation date formatted as Jan 1 15:04:05 2011") validFor = flag.Duration("duration", 365*24*time.Hour, "Duration that certificate is valid for") isCA = flag.Bool("ca", false, "whether this cert should be its own Certificate Authority") rsaBits = flag.Int("rsa-bits", 2048, "Size of RSA key to generate") ) func main() { flag.Parse() if len(*host) == 0 { log.Fatalf("Missing required --host parameter") } priv, err := rsa.GenerateKey(rand.Reader, *rsaBits) if err != nil { log.Fatalf("failed to generate private key: %s", err) } var notBefore time.Time if len(*validFrom) == 0 { notBefore = time.Now() } else { notBefore, err = time.Parse("Jan 2 15:04:05 2006", *validFrom) if err != nil { fmt.Fprintf(os.Stderr, "Failed to parse creation date: %s\n", err) os.Exit(1) } } notAfter := notBefore.Add(*validFor) serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128) serialNumber, err := rand.Int(rand.Reader, serialNumberLimit) if err != nil { log.Fatalf("failed to generate serial number: %s", err) } template := x509.Certificate{ SerialNumber: serialNumber, Subject: pkix.Name{ Organization: []string{"Acme Co"}, }, NotBefore: notBefore, NotAfter: notAfter, KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, BasicConstraintsValid: true, } hosts := strings.Split(*host, ",") for _, h := range hosts { if ip := net.ParseIP(h); ip != nil { template.IPAddresses = append(template.IPAddresses, ip) } else { template.DNSNames = append(template.DNSNames, h) } } if *isCA { template.IsCA = true template.KeyUsage |= x509.KeyUsageCertSign } derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, &priv.PublicKey, priv) if err != nil { log.Fatalf("Failed to create certificate: %s", err) } certOut, err := os.Create("cert.pem") if err != nil { log.Fatalf("failed to open cert.pem for writing: %s", err) } pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}) certOut.Close() log.Print("written cert.pem\n") keyOut, err := os.OpenFile("key.pem", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) if err != nil { log.Print("failed to open key.pem for writing:", err) return } pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)}) keyOut.Close() log.Print("written key.pem\n") } go/src/pkg/crypto/tls/handshake_client.go0100644000000000000000000004040712412656737021011 0ustar00rootroot00000000000000// Copyright 2009 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 tls import ( "bytes" "crypto/ecdsa" "crypto/rsa" "crypto/subtle" "crypto/x509" "encoding/asn1" "errors" "fmt" "io" "net" "strconv" ) type clientHandshakeState struct { c *Conn serverHello *serverHelloMsg hello *clientHelloMsg suite *cipherSuite finishedHash finishedHash masterSecret []byte session *ClientSessionState } func (c *Conn) clientHandshake() error { if c.config == nil { c.config = defaultConfig() } if len(c.config.ServerName) == 0 && !c.config.InsecureSkipVerify { return errors.New("tls: either ServerName or InsecureSkipVerify must be specified in the tls.Config") } hello := &clientHelloMsg{ vers: c.config.maxVersion(), compressionMethods: []uint8{compressionNone}, random: make([]byte, 32), ocspStapling: true, serverName: c.config.ServerName, supportedCurves: c.config.curvePreferences(), supportedPoints: []uint8{pointFormatUncompressed}, nextProtoNeg: len(c.config.NextProtos) > 0, secureRenegotiation: true, } possibleCipherSuites := c.config.cipherSuites() hello.cipherSuites = make([]uint16, 0, len(possibleCipherSuites)) NextCipherSuite: for _, suiteId := range possibleCipherSuites { for _, suite := range cipherSuites { if suite.id != suiteId { continue } // Don't advertise TLS 1.2-only cipher suites unless // we're attempting TLS 1.2. if hello.vers < VersionTLS12 && suite.flags&suiteTLS12 != 0 { continue } hello.cipherSuites = append(hello.cipherSuites, suiteId) continue NextCipherSuite } } _, err := io.ReadFull(c.config.rand(), hello.random) if err != nil { c.sendAlert(alertInternalError) return errors.New("tls: short read from Rand: " + err.Error()) } if hello.vers >= VersionTLS12 { hello.signatureAndHashes = supportedSKXSignatureAlgorithms } var session *ClientSessionState var cacheKey string sessionCache := c.config.ClientSessionCache if c.config.SessionTicketsDisabled { sessionCache = nil } if sessionCache != nil { hello.ticketSupported = true // Try to resume a previously negotiated TLS session, if // available. cacheKey = clientSessionCacheKey(c.conn.RemoteAddr(), c.config) candidateSession, ok := sessionCache.Get(cacheKey) if ok { // Check that the ciphersuite/version used for the // previous session are still valid. cipherSuiteOk := false for _, id := range hello.cipherSuites { if id == candidateSession.cipherSuite { cipherSuiteOk = true break } } versOk := candidateSession.vers >= c.config.minVersion() && candidateSession.vers <= c.config.maxVersion() if versOk && cipherSuiteOk { session = candidateSession } } } if session != nil { hello.sessionTicket = session.sessionTicket // A random session ID is used to detect when the // server accepted the ticket and is resuming a session // (see RFC 5077). hello.sessionId = make([]byte, 16) if _, err := io.ReadFull(c.config.rand(), hello.sessionId); err != nil { c.sendAlert(alertInternalError) return errors.New("tls: short read from Rand: " + err.Error()) } } c.writeRecord(recordTypeHandshake, hello.marshal()) msg, err := c.readHandshake() if err != nil { return err } serverHello, ok := msg.(*serverHelloMsg) if !ok { c.sendAlert(alertUnexpectedMessage) return unexpectedMessageError(serverHello, msg) } vers, ok := c.config.mutualVersion(serverHello.vers) if !ok || vers < VersionTLS10 { // TLS 1.0 is the minimum version supported as a client. c.sendAlert(alertProtocolVersion) return fmt.Errorf("tls: server selected unsupported protocol version %x", serverHello.vers) } c.vers = vers c.haveVers = true suite := mutualCipherSuite(c.config.cipherSuites(), serverHello.cipherSuite) if suite == nil { c.sendAlert(alertHandshakeFailure) return fmt.Errorf("tls: server selected an unsupported cipher suite") } hs := &clientHandshakeState{ c: c, serverHello: serverHello, hello: hello, suite: suite, finishedHash: newFinishedHash(c.vers), session: session, } hs.finishedHash.Write(hs.hello.marshal()) hs.finishedHash.Write(hs.serverHello.marshal()) isResume, err := hs.processServerHello() if err != nil { return err } if isResume { if err := hs.establishKeys(); err != nil { return err } if err := hs.readSessionTicket(); err != nil { return err } if err := hs.readFinished(); err != nil { return err } if err := hs.sendFinished(); err != nil { return err } } else { if err := hs.doFullHandshake(); err != nil { return err } if err := hs.establishKeys(); err != nil { return err } if err := hs.sendFinished(); err != nil { return err } if err := hs.readSessionTicket(); err != nil { return err } if err := hs.readFinished(); err != nil { return err } } if sessionCache != nil && hs.session != nil && session != hs.session { sessionCache.Put(cacheKey, hs.session) } c.didResume = isResume c.handshakeComplete = true c.cipherSuite = suite.id return nil } func (hs *clientHandshakeState) doFullHandshake() error { c := hs.c msg, err := c.readHandshake() if err != nil { return err } certMsg, ok := msg.(*certificateMsg) if !ok || len(certMsg.certificates) == 0 { c.sendAlert(alertUnexpectedMessage) return unexpectedMessageError(certMsg, msg) } hs.finishedHash.Write(certMsg.marshal()) certs := make([]*x509.Certificate, len(certMsg.certificates)) for i, asn1Data := range certMsg.certificates { cert, err := x509.ParseCertificate(asn1Data) if err != nil { c.sendAlert(alertBadCertificate) return errors.New("tls: failed to parse certificate from server: " + err.Error()) } certs[i] = cert } if !c.config.InsecureSkipVerify { opts := x509.VerifyOptions{ Roots: c.config.RootCAs, CurrentTime: c.config.time(), DNSName: c.config.ServerName, Intermediates: x509.NewCertPool(), } for i, cert := range certs { if i == 0 { continue } opts.Intermediates.AddCert(cert) } c.verifiedChains, err = certs[0].Verify(opts) if err != nil { c.sendAlert(alertBadCertificate) return err } } switch certs[0].PublicKey.(type) { case *rsa.PublicKey, *ecdsa.PublicKey: break default: c.sendAlert(alertUnsupportedCertificate) return fmt.Errorf("tls: server's certificate contains an unsupported type of public key: %T", certs[0].PublicKey) } c.peerCertificates = certs if hs.serverHello.ocspStapling { msg, err = c.readHandshake() if err != nil { return err } cs, ok := msg.(*certificateStatusMsg) if !ok { c.sendAlert(alertUnexpectedMessage) return unexpectedMessageError(cs, msg) } hs.finishedHash.Write(cs.marshal()) if cs.statusType == statusTypeOCSP { c.ocspResponse = cs.response } } msg, err = c.readHandshake() if err != nil { return err } keyAgreement := hs.suite.ka(c.vers) skx, ok := msg.(*serverKeyExchangeMsg) if ok { hs.finishedHash.Write(skx.marshal()) err = keyAgreement.processServerKeyExchange(c.config, hs.hello, hs.serverHello, certs[0], skx) if err != nil { c.sendAlert(alertUnexpectedMessage) return err } msg, err = c.readHandshake() if err != nil { return err } } var chainToSend *Certificate var certRequested bool certReq, ok := msg.(*certificateRequestMsg) if ok { certRequested = true // RFC 4346 on the certificateAuthorities field: // A list of the distinguished names of acceptable certificate // authorities. These distinguished names may specify a desired // distinguished name for a root CA or for a subordinate CA; // thus, this message can be used to describe both known roots // and a desired authorization space. If the // certificate_authorities list is empty then the client MAY // send any certificate of the appropriate // ClientCertificateType, unless there is some external // arrangement to the contrary. hs.finishedHash.Write(certReq.marshal()) var rsaAvail, ecdsaAvail bool for _, certType := range certReq.certificateTypes { switch certType { case certTypeRSASign: rsaAvail = true case certTypeECDSASign: ecdsaAvail = true } } // We need to search our list of client certs for one // where SignatureAlgorithm is RSA and the Issuer is in // certReq.certificateAuthorities findCert: for i, chain := range c.config.Certificates { if !rsaAvail && !ecdsaAvail { continue } for j, cert := range chain.Certificate { x509Cert := chain.Leaf // parse the certificate if this isn't the leaf // node, or if chain.Leaf was nil if j != 0 || x509Cert == nil { if x509Cert, err = x509.ParseCertificate(cert); err != nil { c.sendAlert(alertInternalError) return errors.New("tls: failed to parse client certificate #" + strconv.Itoa(i) + ": " + err.Error()) } } switch { case rsaAvail && x509Cert.PublicKeyAlgorithm == x509.RSA: case ecdsaAvail && x509Cert.PublicKeyAlgorithm == x509.ECDSA: default: continue findCert } if len(certReq.certificateAuthorities) == 0 { // they gave us an empty list, so just take the // first RSA cert from c.config.Certificates chainToSend = &chain break findCert } for _, ca := range certReq.certificateAuthorities { if bytes.Equal(x509Cert.RawIssuer, ca) { chainToSend = &chain break findCert } } } } msg, err = c.readHandshake() if err != nil { return err } } shd, ok := msg.(*serverHelloDoneMsg) if !ok { c.sendAlert(alertUnexpectedMessage) return unexpectedMessageError(shd, msg) } hs.finishedHash.Write(shd.marshal()) // If the server requested a certificate then we have to send a // Certificate message, even if it's empty because we don't have a // certificate to send. if certRequested { certMsg = new(certificateMsg) if chainToSend != nil { certMsg.certificates = chainToSend.Certificate } hs.finishedHash.Write(certMsg.marshal()) c.writeRecord(recordTypeHandshake, certMsg.marshal()) } preMasterSecret, ckx, err := keyAgreement.generateClientKeyExchange(c.config, hs.hello, certs[0]) if err != nil { c.sendAlert(alertInternalError) return err } if ckx != nil { hs.finishedHash.Write(ckx.marshal()) c.writeRecord(recordTypeHandshake, ckx.marshal()) } if chainToSend != nil { var signed []byte certVerify := &certificateVerifyMsg{ hasSignatureAndHash: c.vers >= VersionTLS12, } switch key := c.config.Certificates[0].PrivateKey.(type) { case *ecdsa.PrivateKey: digest, _, hashId := hs.finishedHash.hashForClientCertificate(signatureECDSA) r, s, err := ecdsa.Sign(c.config.rand(), key, digest) if err == nil { signed, err = asn1.Marshal(ecdsaSignature{r, s}) } certVerify.signatureAndHash.signature = signatureECDSA certVerify.signatureAndHash.hash = hashId case *rsa.PrivateKey: digest, hashFunc, hashId := hs.finishedHash.hashForClientCertificate(signatureRSA) signed, err = rsa.SignPKCS1v15(c.config.rand(), key, hashFunc, digest) certVerify.signatureAndHash.signature = signatureRSA certVerify.signatureAndHash.hash = hashId default: err = errors.New("unknown private key type") } if err != nil { c.sendAlert(alertInternalError) return errors.New("tls: failed to sign handshake with client certificate: " + err.Error()) } certVerify.signature = signed hs.finishedHash.Write(certVerify.marshal()) c.writeRecord(recordTypeHandshake, certVerify.marshal()) } hs.masterSecret = masterFromPreMasterSecret(c.vers, preMasterSecret, hs.hello.random, hs.serverHello.random) return nil } func (hs *clientHandshakeState) establishKeys() error { c := hs.c clientMAC, serverMAC, clientKey, serverKey, clientIV, serverIV := keysFromMasterSecret(c.vers, hs.masterSecret, hs.hello.random, hs.serverHello.random, hs.suite.macLen, hs.suite.keyLen, hs.suite.ivLen) var clientCipher, serverCipher interface{} var clientHash, serverHash macFunction if hs.suite.cipher != nil { clientCipher = hs.suite.cipher(clientKey, clientIV, false /* not for reading */) clientHash = hs.suite.mac(c.vers, clientMAC) serverCipher = hs.suite.cipher(serverKey, serverIV, true /* for reading */) serverHash = hs.suite.mac(c.vers, serverMAC) } else { clientCipher = hs.suite.aead(clientKey, clientIV) serverCipher = hs.suite.aead(serverKey, serverIV) } c.in.prepareCipherSpec(c.vers, serverCipher, serverHash) c.out.prepareCipherSpec(c.vers, clientCipher, clientHash) return nil } func (hs *clientHandshakeState) serverResumedSession() bool { // If the server responded with the same sessionId then it means the // sessionTicket is being used to resume a TLS session. return hs.session != nil && hs.hello.sessionId != nil && bytes.Equal(hs.serverHello.sessionId, hs.hello.sessionId) } func (hs *clientHandshakeState) processServerHello() (bool, error) { c := hs.c if hs.serverHello.compressionMethod != compressionNone { c.sendAlert(alertUnexpectedMessage) return false, errors.New("tls: server selected unsupported compression format") } if !hs.hello.nextProtoNeg && hs.serverHello.nextProtoNeg { c.sendAlert(alertHandshakeFailure) return false, errors.New("server advertised unrequested NPN extension") } if hs.serverResumedSession() { // Restore masterSecret and peerCerts from previous state hs.masterSecret = hs.session.masterSecret c.peerCertificates = hs.session.serverCertificates return true, nil } return false, nil } func (hs *clientHandshakeState) readFinished() error { c := hs.c c.readRecord(recordTypeChangeCipherSpec) if err := c.in.error(); err != nil { return err } msg, err := c.readHandshake() if err != nil { return err } serverFinished, ok := msg.(*finishedMsg) if !ok { c.sendAlert(alertUnexpectedMessage) return unexpectedMessageError(serverFinished, msg) } verify := hs.finishedHash.serverSum(hs.masterSecret) if len(verify) != len(serverFinished.verifyData) || subtle.ConstantTimeCompare(verify, serverFinished.verifyData) != 1 { c.sendAlert(alertHandshakeFailure) return errors.New("tls: server's Finished message was incorrect") } hs.finishedHash.Write(serverFinished.marshal()) return nil } func (hs *clientHandshakeState) readSessionTicket() error { if !hs.serverHello.ticketSupported { return nil } c := hs.c msg, err := c.readHandshake() if err != nil { return err } sessionTicketMsg, ok := msg.(*newSessionTicketMsg) if !ok { c.sendAlert(alertUnexpectedMessage) return unexpectedMessageError(sessionTicketMsg, msg) } hs.finishedHash.Write(sessionTicketMsg.marshal()) hs.session = &ClientSessionState{ sessionTicket: sessionTicketMsg.ticket, vers: c.vers, cipherSuite: hs.suite.id, masterSecret: hs.masterSecret, serverCertificates: c.peerCertificates, } return nil } func (hs *clientHandshakeState) sendFinished() error { c := hs.c c.writeRecord(recordTypeChangeCipherSpec, []byte{1}) if hs.serverHello.nextProtoNeg { nextProto := new(nextProtoMsg) proto, fallback := mutualProtocol(c.config.NextProtos, hs.serverHello.nextProtos) nextProto.proto = proto c.clientProtocol = proto c.clientProtocolFallback = fallback hs.finishedHash.Write(nextProto.marshal()) c.writeRecord(recordTypeHandshake, nextProto.marshal()) } finished := new(finishedMsg) finished.verifyData = hs.finishedHash.clientSum(hs.masterSecret) hs.finishedHash.Write(finished.marshal()) c.writeRecord(recordTypeHandshake, finished.marshal()) return nil } // clientSessionCacheKey returns a key used to cache sessionTickets that could // be used to resume previously negotiated TLS sessions with a server. func clientSessionCacheKey(serverAddr net.Addr, config *Config) string { if len(config.ServerName) > 0 { return config.ServerName } return serverAddr.String() } // mutualProtocol finds the mutual Next Protocol Negotiation protocol given the // set of client and server supported protocols. The set of client supported // protocols must not be empty. It returns the resulting protocol and flag // indicating if the fallback case was reached. func mutualProtocol(clientProtos, serverProtos []string) (string, bool) { for _, s := range serverProtos { for _, c := range clientProtos { if s == c { return s, false } } } return clientProtos[0], true } go/src/pkg/crypto/tls/handshake_client_test.go0100644000000000000000000002736312412656737022056 0ustar00rootroot00000000000000// 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. package tls import ( "bytes" "crypto/ecdsa" "crypto/rsa" "crypto/x509" "encoding/pem" "fmt" "io" "net" "os" "os/exec" "path/filepath" "strconv" "testing" "time" ) // Note: see comment in handshake_test.go for details of how the reference // tests work. // blockingSource is an io.Reader that blocks a Read call until it's closed. type blockingSource chan bool func (b blockingSource) Read([]byte) (n int, err error) { <-b return 0, io.EOF } // clientTest represents a test of the TLS client handshake against a reference // implementation. type clientTest struct { // name is a freeform string identifying the test and the file in which // the expected results will be stored. name string // command, if not empty, contains a series of arguments for the // command to run for the reference server. command []string // config, if not nil, contains a custom Config to use for this test. config *Config // cert, if not empty, contains a DER-encoded certificate for the // reference server. cert []byte // key, if not nil, contains either a *rsa.PrivateKey or // *ecdsa.PrivateKey which is the private key for the reference server. key interface{} } var defaultServerCommand = []string{"openssl", "s_server"} // connFromCommand starts the reference server process, connects to it and // returns a recordingConn for the connection. The stdin return value is a // blockingSource for the stdin of the child process. It must be closed before // Waiting for child. func (test *clientTest) connFromCommand() (conn *recordingConn, child *exec.Cmd, stdin blockingSource, err error) { cert := testRSACertificate if len(test.cert) > 0 { cert = test.cert } certPath := tempFile(string(cert)) defer os.Remove(certPath) var key interface{} = testRSAPrivateKey if test.key != nil { key = test.key } var pemType string var derBytes []byte switch key := key.(type) { case *rsa.PrivateKey: pemType = "RSA" derBytes = x509.MarshalPKCS1PrivateKey(key) case *ecdsa.PrivateKey: pemType = "EC" var err error derBytes, err = x509.MarshalECPrivateKey(key) if err != nil { panic(err) } default: panic("unknown key type") } var pemOut bytes.Buffer pem.Encode(&pemOut, &pem.Block{Type: pemType + " PRIVATE KEY", Bytes: derBytes}) keyPath := tempFile(string(pemOut.Bytes())) defer os.Remove(keyPath) var command []string if len(test.command) > 0 { command = append(command, test.command...) } else { command = append(command, defaultServerCommand...) } command = append(command, "-cert", certPath, "-certform", "DER", "-key", keyPath) // serverPort contains the port that OpenSSL will listen on. OpenSSL // can't take "0" as an argument here so we have to pick a number and // hope that it's not in use on the machine. Since this only occurs // when -update is given and thus when there's a human watching the // test, this isn't too bad. const serverPort = 24323 command = append(command, "-accept", strconv.Itoa(serverPort)) cmd := exec.Command(command[0], command[1:]...) stdin = blockingSource(make(chan bool)) cmd.Stdin = stdin var out bytes.Buffer cmd.Stdout = &out cmd.Stderr = &out if err := cmd.Start(); err != nil { return nil, nil, nil, err } // OpenSSL does print an "ACCEPT" banner, but it does so *before* // opening the listening socket, so we can't use that to wait until it // has started listening. Thus we are forced to poll until we get a // connection. var tcpConn net.Conn for i := uint(0); i < 5; i++ { var err error tcpConn, err = net.DialTCP("tcp", nil, &net.TCPAddr{ IP: net.IPv4(127, 0, 0, 1), Port: serverPort, }) if err == nil { break } time.Sleep((1 << i) * 5 * time.Millisecond) } if tcpConn == nil { close(stdin) out.WriteTo(os.Stdout) cmd.Process.Kill() return nil, nil, nil, cmd.Wait() } record := &recordingConn{ Conn: tcpConn, } return record, cmd, stdin, nil } func (test *clientTest) dataPath() string { return filepath.Join("testdata", "Client-"+test.name) } func (test *clientTest) loadData() (flows [][]byte, err error) { in, err := os.Open(test.dataPath()) if err != nil { return nil, err } defer in.Close() return parseTestData(in) } func (test *clientTest) run(t *testing.T, write bool) { var clientConn, serverConn net.Conn var recordingConn *recordingConn var childProcess *exec.Cmd var stdin blockingSource if write { var err error recordingConn, childProcess, stdin, err = test.connFromCommand() if err != nil { t.Fatalf("Failed to start subcommand: %s", err) } clientConn = recordingConn } else { clientConn, serverConn = net.Pipe() } config := test.config if config == nil { config = testConfig } client := Client(clientConn, config) doneChan := make(chan bool) go func() { if _, err := client.Write([]byte("hello\n")); err != nil { t.Logf("Client.Write failed: %s", err) } client.Close() clientConn.Close() doneChan <- true }() if !write { flows, err := test.loadData() if err != nil { t.Fatalf("%s: failed to load data from %s", test.name, test.dataPath()) } for i, b := range flows { if i%2 == 1 { serverConn.Write(b) continue } bb := make([]byte, len(b)) _, err := io.ReadFull(serverConn, bb) if err != nil { t.Fatalf("%s #%d: %s", test.name, i, err) } if !bytes.Equal(b, bb) { t.Fatalf("%s #%d: mismatch on read: got:%x want:%x", test.name, i, bb, b) } } serverConn.Close() } <-doneChan if write { path := test.dataPath() out, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) if err != nil { t.Fatalf("Failed to create output file: %s", err) } defer out.Close() recordingConn.Close() close(stdin) childProcess.Process.Kill() childProcess.Wait() if len(recordingConn.flows) < 3 { childProcess.Stdout.(*bytes.Buffer).WriteTo(os.Stdout) t.Fatalf("Client connection didn't work") } recordingConn.WriteTo(out) fmt.Printf("Wrote %s\n", path) } } func runClientTestForVersion(t *testing.T, template *clientTest, prefix, option string) { test := *template test.name = prefix + test.name if len(test.command) == 0 { test.command = defaultClientCommand } test.command = append([]string(nil), test.command...) test.command = append(test.command, option) test.run(t, *update) } func runClientTestTLS10(t *testing.T, template *clientTest) { runClientTestForVersion(t, template, "TLSv10-", "-tls1") } func runClientTestTLS11(t *testing.T, template *clientTest) { runClientTestForVersion(t, template, "TLSv11-", "-tls1_1") } func runClientTestTLS12(t *testing.T, template *clientTest) { runClientTestForVersion(t, template, "TLSv12-", "-tls1_2") } func TestHandshakeClientRSARC4(t *testing.T) { test := &clientTest{ name: "RSA-RC4", command: []string{"openssl", "s_server", "-cipher", "RC4-SHA"}, } runClientTestTLS10(t, test) runClientTestTLS11(t, test) runClientTestTLS12(t, test) } func TestHandshakeClientECDHERSAAES(t *testing.T) { test := &clientTest{ name: "ECDHE-RSA-AES", command: []string{"openssl", "s_server", "-cipher", "ECDHE-RSA-AES128-SHA"}, } runClientTestTLS10(t, test) runClientTestTLS11(t, test) runClientTestTLS12(t, test) } func TestHandshakeClientECDHEECDSAAES(t *testing.T) { test := &clientTest{ name: "ECDHE-ECDSA-AES", command: []string{"openssl", "s_server", "-cipher", "ECDHE-ECDSA-AES128-SHA"}, cert: testECDSACertificate, key: testECDSAPrivateKey, } runClientTestTLS10(t, test) runClientTestTLS11(t, test) runClientTestTLS12(t, test) } func TestHandshakeClientECDHEECDSAAESGCM(t *testing.T) { test := &clientTest{ name: "ECDHE-ECDSA-AES-GCM", command: []string{"openssl", "s_server", "-cipher", "ECDHE-ECDSA-AES128-GCM-SHA256"}, cert: testECDSACertificate, key: testECDSAPrivateKey, } runClientTestTLS12(t, test) } func TestHandshakeClientCertRSA(t *testing.T) { config := *testConfig cert, _ := X509KeyPair([]byte(clientCertificatePEM), []byte(clientKeyPEM)) config.Certificates = []Certificate{cert} test := &clientTest{ name: "ClientCert-RSA-RSA", command: []string{"openssl", "s_server", "-cipher", "RC4-SHA", "-verify", "1"}, config: &config, } runClientTestTLS10(t, test) runClientTestTLS12(t, test) test = &clientTest{ name: "ClientCert-RSA-ECDSA", command: []string{"openssl", "s_server", "-cipher", "ECDHE-ECDSA-AES128-SHA", "-verify", "1"}, config: &config, cert: testECDSACertificate, key: testECDSAPrivateKey, } runClientTestTLS10(t, test) runClientTestTLS12(t, test) } func TestHandshakeClientCertECDSA(t *testing.T) { config := *testConfig cert, _ := X509KeyPair([]byte(clientECDSACertificatePEM), []byte(clientECDSAKeyPEM)) config.Certificates = []Certificate{cert} test := &clientTest{ name: "ClientCert-ECDSA-RSA", command: []string{"openssl", "s_server", "-cipher", "RC4-SHA", "-verify", "1"}, config: &config, } runClientTestTLS10(t, test) runClientTestTLS12(t, test) test = &clientTest{ name: "ClientCert-ECDSA-ECDSA", command: []string{"openssl", "s_server", "-cipher", "ECDHE-ECDSA-AES128-SHA", "-verify", "1"}, config: &config, cert: testECDSACertificate, key: testECDSAPrivateKey, } runClientTestTLS10(t, test) runClientTestTLS12(t, test) } func TestClientResumption(t *testing.T) { serverConfig := &Config{ CipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA}, Certificates: testConfig.Certificates, } clientConfig := &Config{ CipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA}, InsecureSkipVerify: true, ClientSessionCache: NewLRUClientSessionCache(32), } testResumeState := func(test string, didResume bool) { hs, err := testHandshake(clientConfig, serverConfig) if err != nil { t.Fatalf("%s: handshake failed: %s", test, err) } if hs.DidResume != didResume { t.Fatalf("%s resumed: %v, expected: %v", test, hs.DidResume, didResume) } } testResumeState("Handshake", false) testResumeState("Resume", true) if _, err := io.ReadFull(serverConfig.rand(), serverConfig.SessionTicketKey[:]); err != nil { t.Fatalf("Failed to invalidate SessionTicketKey") } testResumeState("InvalidSessionTicketKey", false) testResumeState("ResumeAfterInvalidSessionTicketKey", true) clientConfig.CipherSuites = []uint16{TLS_ECDHE_RSA_WITH_RC4_128_SHA} testResumeState("DifferentCipherSuite", false) testResumeState("DifferentCipherSuiteRecovers", true) clientConfig.ClientSessionCache = nil testResumeState("WithoutSessionCache", false) } func TestLRUClientSessionCache(t *testing.T) { // Initialize cache of capacity 4. cache := NewLRUClientSessionCache(4) cs := make([]ClientSessionState, 6) keys := []string{"0", "1", "2", "3", "4", "5", "6"} // Add 4 entries to the cache and look them up. for i := 0; i < 4; i++ { cache.Put(keys[i], &cs[i]) } for i := 0; i < 4; i++ { if s, ok := cache.Get(keys[i]); !ok || s != &cs[i] { t.Fatalf("session cache failed lookup for added key: %s", keys[i]) } } // Add 2 more entries to the cache. First 2 should be evicted. for i := 4; i < 6; i++ { cache.Put(keys[i], &cs[i]) } for i := 0; i < 2; i++ { if s, ok := cache.Get(keys[i]); ok || s != nil { t.Fatalf("session cache should have evicted key: %s", keys[i]) } } // Touch entry 2. LRU should evict 3 next. cache.Get(keys[2]) cache.Put(keys[0], &cs[0]) if s, ok := cache.Get(keys[3]); ok || s != nil { t.Fatalf("session cache should have evicted key 3") } // Update entry 0 in place. cache.Put(keys[0], &cs[3]) if s, ok := cache.Get(keys[0]); !ok || s != &cs[3] { t.Fatalf("session cache failed update for key 0") } // Adding a nil entry is valid. cache.Put(keys[0], nil) if s, ok := cache.Get(keys[0]); !ok || s != nil { t.Fatalf("failed to add nil entry to cache") } } go/src/pkg/crypto/tls/handshake_messages.go0100644000000000000000000006715512412656737021353 0ustar00rootroot00000000000000// Copyright 2009 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 tls import "bytes" type clientHelloMsg struct { raw []byte vers uint16 random []byte sessionId []byte cipherSuites []uint16 compressionMethods []uint8 nextProtoNeg bool serverName string ocspStapling bool supportedCurves []CurveID supportedPoints []uint8 ticketSupported bool sessionTicket []uint8 signatureAndHashes []signatureAndHash secureRenegotiation bool } func (m *clientHelloMsg) equal(i interface{}) bool { m1, ok := i.(*clientHelloMsg) if !ok { return false } return bytes.Equal(m.raw, m1.raw) && m.vers == m1.vers && bytes.Equal(m.random, m1.random) && bytes.Equal(m.sessionId, m1.sessionId) && eqUint16s(m.cipherSuites, m1.cipherSuites) && bytes.Equal(m.compressionMethods, m1.compressionMethods) && m.nextProtoNeg == m1.nextProtoNeg && m.serverName == m1.serverName && m.ocspStapling == m1.ocspStapling && eqCurveIDs(m.supportedCurves, m1.supportedCurves) && bytes.Equal(m.supportedPoints, m1.supportedPoints) && m.ticketSupported == m1.ticketSupported && bytes.Equal(m.sessionTicket, m1.sessionTicket) && eqSignatureAndHashes(m.signatureAndHashes, m1.signatureAndHashes) && m.secureRenegotiation == m1.secureRenegotiation } func (m *clientHelloMsg) marshal() []byte { if m.raw != nil { return m.raw } length := 2 + 32 + 1 + len(m.sessionId) + 2 + len(m.cipherSuites)*2 + 1 + len(m.compressionMethods) numExtensions := 0 extensionsLength := 0 if m.nextProtoNeg { numExtensions++ } if m.ocspStapling { extensionsLength += 1 + 2 + 2 numExtensions++ } if len(m.serverName) > 0 { extensionsLength += 5 + len(m.serverName) numExtensions++ } if len(m.supportedCurves) > 0 { extensionsLength += 2 + 2*len(m.supportedCurves) numExtensions++ } if len(m.supportedPoints) > 0 { extensionsLength += 1 + len(m.supportedPoints) numExtensions++ } if m.ticketSupported { extensionsLength += len(m.sessionTicket) numExtensions++ } if len(m.signatureAndHashes) > 0 { extensionsLength += 2 + 2*len(m.signatureAndHashes) numExtensions++ } if m.secureRenegotiation { extensionsLength += 1 numExtensions++ } if numExtensions > 0 { extensionsLength += 4 * numExtensions length += 2 + extensionsLength } x := make([]byte, 4+length) x[0] = typeClientHello x[1] = uint8(length >> 16) x[2] = uint8(length >> 8) x[3] = uint8(length) x[4] = uint8(m.vers >> 8) x[5] = uint8(m.vers) copy(x[6:38], m.random) x[38] = uint8(len(m.sessionId)) copy(x[39:39+len(m.sessionId)], m.sessionId) y := x[39+len(m.sessionId):] y[0] = uint8(len(m.cipherSuites) >> 7) y[1] = uint8(len(m.cipherSuites) << 1) for i, suite := range m.cipherSuites { y[2+i*2] = uint8(suite >> 8) y[3+i*2] = uint8(suite) } z := y[2+len(m.cipherSuites)*2:] z[0] = uint8(len(m.compressionMethods)) copy(z[1:], m.compressionMethods) z = z[1+len(m.compressionMethods):] if numExtensions > 0 { z[0] = byte(extensionsLength >> 8) z[1] = byte(extensionsLength) z = z[2:] } if m.nextProtoNeg { z[0] = byte(extensionNextProtoNeg >> 8) z[1] = byte(extensionNextProtoNeg & 0xff) // The length is always 0 z = z[4:] } if len(m.serverName) > 0 { z[0] = byte(extensionServerName >> 8) z[1] = byte(extensionServerName & 0xff) l := len(m.serverName) + 5 z[2] = byte(l >> 8) z[3] = byte(l) z = z[4:] // RFC 3546, section 3.1 // // struct { // NameType name_type; // select (name_type) { // case host_name: HostName; // } name; // } ServerName; // // enum { // host_name(0), (255) // } NameType; // // opaque HostName<1..2^16-1>; // // struct { // ServerName server_name_list<1..2^16-1> // } ServerNameList; z[0] = byte((len(m.serverName) + 3) >> 8) z[1] = byte(len(m.serverName) + 3) z[3] = byte(len(m.serverName) >> 8) z[4] = byte(len(m.serverName)) copy(z[5:], []byte(m.serverName)) z = z[l:] } if m.ocspStapling { // RFC 4366, section 3.6 z[0] = byte(extensionStatusRequest >> 8) z[1] = byte(extensionStatusRequest) z[2] = 0 z[3] = 5 z[4] = 1 // OCSP type // Two zero valued uint16s for the two lengths. z = z[9:] } if len(m.supportedCurves) > 0 { // http://tools.ietf.org/html/rfc4492#section-5.5.1 z[0] = byte(extensionSupportedCurves >> 8) z[1] = byte(extensionSupportedCurves) l := 2 + 2*len(m.supportedCurves) z[2] = byte(l >> 8) z[3] = byte(l) l -= 2 z[4] = byte(l >> 8) z[5] = byte(l) z = z[6:] for _, curve := range m.supportedCurves { z[0] = byte(curve >> 8) z[1] = byte(curve) z = z[2:] } } if len(m.supportedPoints) > 0 { // http://tools.ietf.org/html/rfc4492#section-5.5.2 z[0] = byte(extensionSupportedPoints >> 8) z[1] = byte(extensionSupportedPoints) l := 1 + len(m.supportedPoints) z[2] = byte(l >> 8) z[3] = byte(l) l-- z[4] = byte(l) z = z[5:] for _, pointFormat := range m.supportedPoints { z[0] = byte(pointFormat) z = z[1:] } } if m.ticketSupported { // http://tools.ietf.org/html/rfc5077#section-3.2 z[0] = byte(extensionSessionTicket >> 8) z[1] = byte(extensionSessionTicket) l := len(m.sessionTicket) z[2] = byte(l >> 8) z[3] = byte(l) z = z[4:] copy(z, m.sessionTicket) z = z[len(m.sessionTicket):] } if len(m.signatureAndHashes) > 0 { // https://tools.ietf.org/html/rfc5246#section-7.4.1.4.1 z[0] = byte(extensionSignatureAlgorithms >> 8) z[1] = byte(extensionSignatureAlgorithms) l := 2 + 2*len(m.signatureAndHashes) z[2] = byte(l >> 8) z[3] = byte(l) z = z[4:] l -= 2 z[0] = byte(l >> 8) z[1] = byte(l) z = z[2:] for _, sigAndHash := range m.signatureAndHashes { z[0] = sigAndHash.hash z[1] = sigAndHash.signature z = z[2:] } } if m.secureRenegotiation { z[0] = byte(extensionRenegotiationInfo >> 8) z[1] = byte(extensionRenegotiationInfo & 0xff) z[2] = 0 z[3] = 1 z = z[5:] } m.raw = x return x } func (m *clientHelloMsg) unmarshal(data []byte) bool { if len(data) < 42 { return false } m.raw = data m.vers = uint16(data[4])<<8 | uint16(data[5]) m.random = data[6:38] sessionIdLen := int(data[38]) if sessionIdLen > 32 || len(data) < 39+sessionIdLen { return false } m.sessionId = data[39 : 39+sessionIdLen] data = data[39+sessionIdLen:] if len(data) < 2 { return false } // cipherSuiteLen is the number of bytes of cipher suite numbers. Since // they are uint16s, the number must be even. cipherSuiteLen := int(data[0])<<8 | int(data[1]) if cipherSuiteLen%2 == 1 || len(data) < 2+cipherSuiteLen { return false } numCipherSuites := cipherSuiteLen / 2 m.cipherSuites = make([]uint16, numCipherSuites) for i := 0; i < numCipherSuites; i++ { m.cipherSuites[i] = uint16(data[2+2*i])<<8 | uint16(data[3+2*i]) if m.cipherSuites[i] == scsvRenegotiation { m.secureRenegotiation = true } } data = data[2+cipherSuiteLen:] if len(data) < 1 { return false } compressionMethodsLen := int(data[0]) if len(data) < 1+compressionMethodsLen { return false } m.compressionMethods = data[1 : 1+compressionMethodsLen] data = data[1+compressionMethodsLen:] m.nextProtoNeg = false m.serverName = "" m.ocspStapling = false m.ticketSupported = false m.sessionTicket = nil m.signatureAndHashes = nil if len(data) == 0 { // ClientHello is optionally followed by extension data return true } if len(data) < 2 { return false } extensionsLength := int(data[0])<<8 | int(data[1]) data = data[2:] if extensionsLength != len(data) { return false } for len(data) != 0 { if len(data) < 4 { return false } extension := uint16(data[0])<<8 | uint16(data[1]) length := int(data[2])<<8 | int(data[3]) data = data[4:] if len(data) < length { return false } switch extension { case extensionServerName: if length < 2 { return false } numNames := int(data[0])<<8 | int(data[1]) d := data[2:] for i := 0; i < numNames; i++ { if len(d) < 3 { return false } nameType := d[0] nameLen := int(d[1])<<8 | int(d[2]) d = d[3:] if len(d) < nameLen { return false } if nameType == 0 { m.serverName = string(d[0:nameLen]) break } d = d[nameLen:] } case extensionNextProtoNeg: if length > 0 { return false } m.nextProtoNeg = true case extensionStatusRequest: m.ocspStapling = length > 0 && data[0] == statusTypeOCSP case extensionSupportedCurves: // http://tools.ietf.org/html/rfc4492#section-5.5.1 if length < 2 { return false } l := int(data[0])<<8 | int(data[1]) if l%2 == 1 || length != l+2 { return false } numCurves := l / 2 m.supportedCurves = make([]CurveID, numCurves) d := data[2:] for i := 0; i < numCurves; i++ { m.supportedCurves[i] = CurveID(d[0])<<8 | CurveID(d[1]) d = d[2:] } case extensionSupportedPoints: // http://tools.ietf.org/html/rfc4492#section-5.5.2 if length < 1 { return false } l := int(data[0]) if length != l+1 { return false } m.supportedPoints = make([]uint8, l) copy(m.supportedPoints, data[1:]) case extensionSessionTicket: // http://tools.ietf.org/html/rfc5077#section-3.2 m.ticketSupported = true m.sessionTicket = data[:length] case extensionSignatureAlgorithms: // https://tools.ietf.org/html/rfc5246#section-7.4.1.4.1 if length < 2 || length&1 != 0 { return false } l := int(data[0])<<8 | int(data[1]) if l != length-2 { return false } n := l / 2 d := data[2:] m.signatureAndHashes = make([]signatureAndHash, n) for i := range m.signatureAndHashes { m.signatureAndHashes[i].hash = d[0] m.signatureAndHashes[i].signature = d[1] d = d[2:] } case extensionRenegotiationInfo + 1: if length != 1 || data[0] != 0 { return false } m.secureRenegotiation = true } data = data[length:] } return true } type serverHelloMsg struct { raw []byte vers uint16 random []byte sessionId []byte cipherSuite uint16 compressionMethod uint8 nextProtoNeg bool nextProtos []string ocspStapling bool ticketSupported bool secureRenegotiation bool } func (m *serverHelloMsg) equal(i interface{}) bool { m1, ok := i.(*serverHelloMsg) if !ok { return false } return bytes.Equal(m.raw, m1.raw) && m.vers == m1.vers && bytes.Equal(m.random, m1.random) && bytes.Equal(m.sessionId, m1.sessionId) && m.cipherSuite == m1.cipherSuite && m.compressionMethod == m1.compressionMethod && m.nextProtoNeg == m1.nextProtoNeg && eqStrings(m.nextProtos, m1.nextProtos) && m.ocspStapling == m1.ocspStapling && m.ticketSupported == m1.ticketSupported && m.secureRenegotiation == m1.secureRenegotiation } func (m *serverHelloMsg) marshal() []byte { if m.raw != nil { return m.raw } length := 38 + len(m.sessionId) numExtensions := 0 extensionsLength := 0 nextProtoLen := 0 if m.nextProtoNeg { numExtensions++ for _, v := range m.nextProtos { nextProtoLen += len(v) } nextProtoLen += len(m.nextProtos) extensionsLength += nextProtoLen } if m.ocspStapling { numExtensions++ } if m.ticketSupported { numExtensions++ } if m.secureRenegotiation { extensionsLength += 1 numExtensions++ } if numExtensions > 0 { extensionsLength += 4 * numExtensions length += 2 + extensionsLength } x := make([]byte, 4+length) x[0] = typeServerHello x[1] = uint8(length >> 16) x[2] = uint8(length >> 8) x[3] = uint8(length) x[4] = uint8(m.vers >> 8) x[5] = uint8(m.vers) copy(x[6:38], m.random) x[38] = uint8(len(m.sessionId)) copy(x[39:39+len(m.sessionId)], m.sessionId) z := x[39+len(m.sessionId):] z[0] = uint8(m.cipherSuite >> 8) z[1] = uint8(m.cipherSuite) z[2] = uint8(m.compressionMethod) z = z[3:] if numExtensions > 0 { z[0] = byte(extensionsLength >> 8) z[1] = byte(extensionsLength) z = z[2:] } if m.nextProtoNeg { z[0] = byte(extensionNextProtoNeg >> 8) z[1] = byte(extensionNextProtoNeg & 0xff) z[2] = byte(nextProtoLen >> 8) z[3] = byte(nextProtoLen) z = z[4:] for _, v := range m.nextProtos { l := len(v) if l > 255 { l = 255 } z[0] = byte(l) copy(z[1:], []byte(v[0:l])) z = z[1+l:] } } if m.ocspStapling { z[0] = byte(extensionStatusRequest >> 8) z[1] = byte(extensionStatusRequest) z = z[4:] } if m.ticketSupported { z[0] = byte(extensionSessionTicket >> 8) z[1] = byte(extensionSessionTicket) z = z[4:] } if m.secureRenegotiation { z[0] = byte(extensionRenegotiationInfo >> 8) z[1] = byte(extensionRenegotiationInfo & 0xff) z[2] = 0 z[3] = 1 z = z[5:] } m.raw = x return x } func (m *serverHelloMsg) unmarshal(data []byte) bool { if len(data) < 42 { return false } m.raw = data m.vers = uint16(data[4])<<8 | uint16(data[5]) m.random = data[6:38] sessionIdLen := int(data[38]) if sessionIdLen > 32 || len(data) < 39+sessionIdLen { return false } m.sessionId = data[39 : 39+sessionIdLen] data = data[39+sessionIdLen:] if len(data) < 3 { return false } m.cipherSuite = uint16(data[0])<<8 | uint16(data[1]) m.compressionMethod = data[2] data = data[3:] m.nextProtoNeg = false m.nextProtos = nil m.ocspStapling = false m.ticketSupported = false if len(data) == 0 { // ServerHello is optionally followed by extension data return true } if len(data) < 2 { return false } extensionsLength := int(data[0])<<8 | int(data[1]) data = data[2:] if len(data) != extensionsLength { return false } for len(data) != 0 { if len(data) < 4 { return false } extension := uint16(data[0])<<8 | uint16(data[1]) length := int(data[2])<<8 | int(data[3]) data = data[4:] if len(data) < length { return false } switch extension { case extensionNextProtoNeg: m.nextProtoNeg = true d := data[:length] for len(d) > 0 { l := int(d[0]) d = d[1:] if l == 0 || l > len(d) { return false } m.nextProtos = append(m.nextProtos, string(d[:l])) d = d[l:] } case extensionStatusRequest: if length > 0 { return false } m.ocspStapling = true case extensionSessionTicket: if length > 0 { return false } m.ticketSupported = true case extensionRenegotiationInfo: if length != 1 || data[0] != 0 { return false } m.secureRenegotiation = true } data = data[length:] } return true } type certificateMsg struct { raw []byte certificates [][]byte } func (m *certificateMsg) equal(i interface{}) bool { m1, ok := i.(*certificateMsg) if !ok { return false } return bytes.Equal(m.raw, m1.raw) && eqByteSlices(m.certificates, m1.certificates) } func (m *certificateMsg) marshal() (x []byte) { if m.raw != nil { return m.raw } var i int for _, slice := range m.certificates { i += len(slice) } length := 3 + 3*len(m.certificates) + i x = make([]byte, 4+length) x[0] = typeCertificate x[1] = uint8(length >> 16) x[2] = uint8(length >> 8) x[3] = uint8(length) certificateOctets := length - 3 x[4] = uint8(certificateOctets >> 16) x[5] = uint8(certificateOctets >> 8) x[6] = uint8(certificateOctets) y := x[7:] for _, slice := range m.certificates { y[0] = uint8(len(slice) >> 16) y[1] = uint8(len(slice) >> 8) y[2] = uint8(len(slice)) copy(y[3:], slice) y = y[3+len(slice):] } m.raw = x return } func (m *certificateMsg) unmarshal(data []byte) bool { if len(data) < 7 { return false } m.raw = data certsLen := uint32(data[4])<<16 | uint32(data[5])<<8 | uint32(data[6]) if uint32(len(data)) != certsLen+7 { return false } numCerts := 0 d := data[7:] for certsLen > 0 { if len(d) < 4 { return false } certLen := uint32(d[0])<<16 | uint32(d[1])<<8 | uint32(d[2]) if uint32(len(d)) < 3+certLen { return false } d = d[3+certLen:] certsLen -= 3 + certLen numCerts++ } m.certificates = make([][]byte, numCerts) d = data[7:] for i := 0; i < numCerts; i++ { certLen := uint32(d[0])<<16 | uint32(d[1])<<8 | uint32(d[2]) m.certificates[i] = d[3 : 3+certLen] d = d[3+certLen:] } return true } type serverKeyExchangeMsg struct { raw []byte key []byte } func (m *serverKeyExchangeMsg) equal(i interface{}) bool { m1, ok := i.(*serverKeyExchangeMsg) if !ok { return false } return bytes.Equal(m.raw, m1.raw) && bytes.Equal(m.key, m1.key) } func (m *serverKeyExchangeMsg) marshal() []byte { if m.raw != nil { return m.raw } length := len(m.key) x := make([]byte, length+4) x[0] = typeServerKeyExchange x[1] = uint8(length >> 16) x[2] = uint8(length >> 8) x[3] = uint8(length) copy(x[4:], m.key) m.raw = x return x } func (m *serverKeyExchangeMsg) unmarshal(data []byte) bool { m.raw = data if len(data) < 4 { return false } m.key = data[4:] return true } type certificateStatusMsg struct { raw []byte statusType uint8 response []byte } func (m *certificateStatusMsg) equal(i interface{}) bool { m1, ok := i.(*certificateStatusMsg) if !ok { return false } return bytes.Equal(m.raw, m1.raw) && m.statusType == m1.statusType && bytes.Equal(m.response, m1.response) } func (m *certificateStatusMsg) marshal() []byte { if m.raw != nil { return m.raw } var x []byte if m.statusType == statusTypeOCSP { x = make([]byte, 4+4+len(m.response)) x[0] = typeCertificateStatus l := len(m.response) + 4 x[1] = byte(l >> 16) x[2] = byte(l >> 8) x[3] = byte(l) x[4] = statusTypeOCSP l -= 4 x[5] = byte(l >> 16) x[6] = byte(l >> 8) x[7] = byte(l) copy(x[8:], m.response) } else { x = []byte{typeCertificateStatus, 0, 0, 1, m.statusType} } m.raw = x return x } func (m *certificateStatusMsg) unmarshal(data []byte) bool { m.raw = data if len(data) < 5 { return false } m.statusType = data[4] m.response = nil if m.statusType == statusTypeOCSP { if len(data) < 8 { return false } respLen := uint32(data[5])<<16 | uint32(data[6])<<8 | uint32(data[7]) if uint32(len(data)) != 4+4+respLen { return false } m.response = data[8:] } return true } type serverHelloDoneMsg struct{} func (m *serverHelloDoneMsg) equal(i interface{}) bool { _, ok := i.(*serverHelloDoneMsg) return ok } func (m *serverHelloDoneMsg) marshal() []byte { x := make([]byte, 4) x[0] = typeServerHelloDone return x } func (m *serverHelloDoneMsg) unmarshal(data []byte) bool { return len(data) == 4 } type clientKeyExchangeMsg struct { raw []byte ciphertext []byte } func (m *clientKeyExchangeMsg) equal(i interface{}) bool { m1, ok := i.(*clientKeyExchangeMsg) if !ok { return false } return bytes.Equal(m.raw, m1.raw) && bytes.Equal(m.ciphertext, m1.ciphertext) } func (m *clientKeyExchangeMsg) marshal() []byte { if m.raw != nil { return m.raw } length := len(m.ciphertext) x := make([]byte, length+4) x[0] = typeClientKeyExchange x[1] = uint8(length >> 16) x[2] = uint8(length >> 8) x[3] = uint8(length) copy(x[4:], m.ciphertext) m.raw = x return x } func (m *clientKeyExchangeMsg) unmarshal(data []byte) bool { m.raw = data if len(data) < 4 { return false } l := int(data[1])<<16 | int(data[2])<<8 | int(data[3]) if l != len(data)-4 { return false } m.ciphertext = data[4:] return true } type finishedMsg struct { raw []byte verifyData []byte } func (m *finishedMsg) equal(i interface{}) bool { m1, ok := i.(*finishedMsg) if !ok { return false } return bytes.Equal(m.raw, m1.raw) && bytes.Equal(m.verifyData, m1.verifyData) } func (m *finishedMsg) marshal() (x []byte) { if m.raw != nil { return m.raw } x = make([]byte, 4+len(m.verifyData)) x[0] = typeFinished x[3] = byte(len(m.verifyData)) copy(x[4:], m.verifyData) m.raw = x return } func (m *finishedMsg) unmarshal(data []byte) bool { m.raw = data if len(data) < 4 { return false } m.verifyData = data[4:] return true } type nextProtoMsg struct { raw []byte proto string } func (m *nextProtoMsg) equal(i interface{}) bool { m1, ok := i.(*nextProtoMsg) if !ok { return false } return bytes.Equal(m.raw, m1.raw) && m.proto == m1.proto } func (m *nextProtoMsg) marshal() []byte { if m.raw != nil { return m.raw } l := len(m.proto) if l > 255 { l = 255 } padding := 32 - (l+2)%32 length := l + padding + 2 x := make([]byte, length+4) x[0] = typeNextProtocol x[1] = uint8(length >> 16) x[2] = uint8(length >> 8) x[3] = uint8(length) y := x[4:] y[0] = byte(l) copy(y[1:], []byte(m.proto[0:l])) y = y[1+l:] y[0] = byte(padding) m.raw = x return x } func (m *nextProtoMsg) unmarshal(data []byte) bool { m.raw = data if len(data) < 5 { return false } data = data[4:] protoLen := int(data[0]) data = data[1:] if len(data) < protoLen { return false } m.proto = string(data[0:protoLen]) data = data[protoLen:] if len(data) < 1 { return false } paddingLen := int(data[0]) data = data[1:] if len(data) != paddingLen { return false } return true } type certificateRequestMsg struct { raw []byte // hasSignatureAndHash indicates whether this message includes a list // of signature and hash functions. This change was introduced with TLS // 1.2. hasSignatureAndHash bool certificateTypes []byte signatureAndHashes []signatureAndHash certificateAuthorities [][]byte } func (m *certificateRequestMsg) equal(i interface{}) bool { m1, ok := i.(*certificateRequestMsg) if !ok { return false } return bytes.Equal(m.raw, m1.raw) && bytes.Equal(m.certificateTypes, m1.certificateTypes) && eqByteSlices(m.certificateAuthorities, m1.certificateAuthorities) && eqSignatureAndHashes(m.signatureAndHashes, m1.signatureAndHashes) } func (m *certificateRequestMsg) marshal() (x []byte) { if m.raw != nil { return m.raw } // See http://tools.ietf.org/html/rfc4346#section-7.4.4 length := 1 + len(m.certificateTypes) + 2 casLength := 0 for _, ca := range m.certificateAuthorities { casLength += 2 + len(ca) } length += casLength if m.hasSignatureAndHash { length += 2 + 2*len(m.signatureAndHashes) } x = make([]byte, 4+length) x[0] = typeCertificateRequest x[1] = uint8(length >> 16) x[2] = uint8(length >> 8) x[3] = uint8(length) x[4] = uint8(len(m.certificateTypes)) copy(x[5:], m.certificateTypes) y := x[5+len(m.certificateTypes):] if m.hasSignatureAndHash { n := len(m.signatureAndHashes) * 2 y[0] = uint8(n >> 8) y[1] = uint8(n) y = y[2:] for _, sigAndHash := range m.signatureAndHashes { y[0] = sigAndHash.hash y[1] = sigAndHash.signature y = y[2:] } } y[0] = uint8(casLength >> 8) y[1] = uint8(casLength) y = y[2:] for _, ca := range m.certificateAuthorities { y[0] = uint8(len(ca) >> 8) y[1] = uint8(len(ca)) y = y[2:] copy(y, ca) y = y[len(ca):] } m.raw = x return } func (m *certificateRequestMsg) unmarshal(data []byte) bool { m.raw = data if len(data) < 5 { return false } length := uint32(data[1])<<16 | uint32(data[2])<<8 | uint32(data[3]) if uint32(len(data))-4 != length { return false } numCertTypes := int(data[4]) data = data[5:] if numCertTypes == 0 || len(data) <= numCertTypes { return false } m.certificateTypes = make([]byte, numCertTypes) if copy(m.certificateTypes, data) != numCertTypes { return false } data = data[numCertTypes:] if m.hasSignatureAndHash { if len(data) < 2 { return false } sigAndHashLen := uint16(data[0])<<8 | uint16(data[1]) data = data[2:] if sigAndHashLen&1 != 0 { return false } if len(data) < int(sigAndHashLen) { return false } numSigAndHash := sigAndHashLen / 2 m.signatureAndHashes = make([]signatureAndHash, numSigAndHash) for i := range m.signatureAndHashes { m.signatureAndHashes[i].hash = data[0] m.signatureAndHashes[i].signature = data[1] data = data[2:] } } if len(data) < 2 { return false } casLength := uint16(data[0])<<8 | uint16(data[1]) data = data[2:] if len(data) < int(casLength) { return false } cas := make([]byte, casLength) copy(cas, data) data = data[casLength:] m.certificateAuthorities = nil for len(cas) > 0 { if len(cas) < 2 { return false } caLen := uint16(cas[0])<<8 | uint16(cas[1]) cas = cas[2:] if len(cas) < int(caLen) { return false } m.certificateAuthorities = append(m.certificateAuthorities, cas[:caLen]) cas = cas[caLen:] } if len(data) > 0 { return false } return true } type certificateVerifyMsg struct { raw []byte hasSignatureAndHash bool signatureAndHash signatureAndHash signature []byte } func (m *certificateVerifyMsg) equal(i interface{}) bool { m1, ok := i.(*certificateVerifyMsg) if !ok { return false } return bytes.Equal(m.raw, m1.raw) && m.hasSignatureAndHash == m1.hasSignatureAndHash && m.signatureAndHash.hash == m1.signatureAndHash.hash && m.signatureAndHash.signature == m1.signatureAndHash.signature && bytes.Equal(m.signature, m1.signature) } func (m *certificateVerifyMsg) marshal() (x []byte) { if m.raw != nil { return m.raw } // See http://tools.ietf.org/html/rfc4346#section-7.4.8 siglength := len(m.signature) length := 2 + siglength if m.hasSignatureAndHash { length += 2 } x = make([]byte, 4+length) x[0] = typeCertificateVerify x[1] = uint8(length >> 16) x[2] = uint8(length >> 8) x[3] = uint8(length) y := x[4:] if m.hasSignatureAndHash { y[0] = m.signatureAndHash.hash y[1] = m.signatureAndHash.signature y = y[2:] } y[0] = uint8(siglength >> 8) y[1] = uint8(siglength) copy(y[2:], m.signature) m.raw = x return } func (m *certificateVerifyMsg) unmarshal(data []byte) bool { m.raw = data if len(data) < 6 { return false } length := uint32(data[1])<<16 | uint32(data[2])<<8 | uint32(data[3]) if uint32(len(data))-4 != length { return false } data = data[4:] if m.hasSignatureAndHash { m.signatureAndHash.hash = data[0] m.signatureAndHash.signature = data[1] data = data[2:] } if len(data) < 2 { return false } siglength := int(data[0])<<8 + int(data[1]) data = data[2:] if len(data) != siglength { return false } m.signature = data return true } type newSessionTicketMsg struct { raw []byte ticket []byte } func (m *newSessionTicketMsg) equal(i interface{}) bool { m1, ok := i.(*newSessionTicketMsg) if !ok { return false } return bytes.Equal(m.raw, m1.raw) && bytes.Equal(m.ticket, m1.ticket) } func (m *newSessionTicketMsg) marshal() (x []byte) { if m.raw != nil { return m.raw } // See http://tools.ietf.org/html/rfc5077#section-3.3 ticketLen := len(m.ticket) length := 2 + 4 + ticketLen x = make([]byte, 4+length) x[0] = typeNewSessionTicket x[1] = uint8(length >> 16) x[2] = uint8(length >> 8) x[3] = uint8(length) x[8] = uint8(ticketLen >> 8) x[9] = uint8(ticketLen) copy(x[10:], m.ticket) m.raw = x return } func (m *newSessionTicketMsg) unmarshal(data []byte) bool { m.raw = data if len(data) < 10 { return false } length := uint32(data[1])<<16 | uint32(data[2])<<8 | uint32(data[3]) if uint32(len(data))-4 != length { return false } ticketLen := int(data[8])<<8 + int(data[9]) if len(data)-10 != ticketLen { return false } m.ticket = data[10:] return true } func eqUint16s(x, y []uint16) bool { if len(x) != len(y) { return false } for i, v := range x { if y[i] != v { return false } } return true } func eqCurveIDs(x, y []CurveID) bool { if len(x) != len(y) { return false } for i, v := range x { if y[i] != v { return false } } return true } func eqStrings(x, y []string) bool { if len(x) != len(y) { return false } for i, v := range x { if y[i] != v { return false } } return true } func eqByteSlices(x, y [][]byte) bool { if len(x) != len(y) { return false } for i, v := range x { if !bytes.Equal(v, y[i]) { return false } } return true } func eqSignatureAndHashes(x, y []signatureAndHash) bool { if len(x) != len(y) { return false } for i, v := range x { v2 := y[i] if v.hash != v2.hash || v.signature != v2.signature { return false } } return true } go/src/pkg/crypto/tls/handshake_messages_test.go0100644000000000000000000001412012412656737022372 0ustar00rootroot00000000000000// Copyright 2009 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 tls import ( "math/rand" "reflect" "testing" "testing/quick" ) var tests = []interface{}{ &clientHelloMsg{}, &serverHelloMsg{}, &finishedMsg{}, &certificateMsg{}, &certificateRequestMsg{}, &certificateVerifyMsg{}, &certificateStatusMsg{}, &clientKeyExchangeMsg{}, &nextProtoMsg{}, &newSessionTicketMsg{}, &sessionState{}, } type testMessage interface { marshal() []byte unmarshal([]byte) bool equal(interface{}) bool } func TestMarshalUnmarshal(t *testing.T) { rand := rand.New(rand.NewSource(0)) for i, iface := range tests { ty := reflect.ValueOf(iface).Type() n := 100 if testing.Short() { n = 5 } for j := 0; j < n; j++ { v, ok := quick.Value(ty, rand) if !ok { t.Errorf("#%d: failed to create value", i) break } m1 := v.Interface().(testMessage) marshaled := m1.marshal() m2 := iface.(testMessage) if !m2.unmarshal(marshaled) { t.Errorf("#%d failed to unmarshal %#v %x", i, m1, marshaled) break } m2.marshal() // to fill any marshal cache in the message if !m1.equal(m2) { t.Errorf("#%d got:%#v want:%#v %x", i, m2, m1, marshaled) break } if i >= 3 { // The first three message types (ClientHello, // ServerHello and Finished) are allowed to // have parsable prefixes because the extension // data is optional and the length of the // Finished varies across versions. for j := 0; j < len(marshaled); j++ { if m2.unmarshal(marshaled[0:j]) { t.Errorf("#%d unmarshaled a prefix of length %d of %#v", i, j, m1) break } } } } } } func TestFuzz(t *testing.T) { rand := rand.New(rand.NewSource(0)) for _, iface := range tests { m := iface.(testMessage) for j := 0; j < 1000; j++ { len := rand.Intn(100) bytes := randomBytes(len, rand) // This just looks for crashes due to bounds errors etc. m.unmarshal(bytes) } } } func randomBytes(n int, rand *rand.Rand) []byte { r := make([]byte, n) for i := 0; i < n; i++ { r[i] = byte(rand.Int31()) } return r } func randomString(n int, rand *rand.Rand) string { b := randomBytes(n, rand) return string(b) } func (*clientHelloMsg) Generate(rand *rand.Rand, size int) reflect.Value { m := &clientHelloMsg{} m.vers = uint16(rand.Intn(65536)) m.random = randomBytes(32, rand) m.sessionId = randomBytes(rand.Intn(32), rand) m.cipherSuites = make([]uint16, rand.Intn(63)+1) for i := 0; i < len(m.cipherSuites); i++ { m.cipherSuites[i] = uint16(rand.Int31()) } m.compressionMethods = randomBytes(rand.Intn(63)+1, rand) if rand.Intn(10) > 5 { m.nextProtoNeg = true } if rand.Intn(10) > 5 { m.serverName = randomString(rand.Intn(255), rand) } m.ocspStapling = rand.Intn(10) > 5 m.supportedPoints = randomBytes(rand.Intn(5)+1, rand) m.supportedCurves = make([]CurveID, rand.Intn(5)+1) for i := range m.supportedCurves { m.supportedCurves[i] = CurveID(rand.Intn(30000)) } if rand.Intn(10) > 5 { m.ticketSupported = true if rand.Intn(10) > 5 { m.sessionTicket = randomBytes(rand.Intn(300), rand) } } if rand.Intn(10) > 5 { m.signatureAndHashes = supportedSKXSignatureAlgorithms } return reflect.ValueOf(m) } func (*serverHelloMsg) Generate(rand *rand.Rand, size int) reflect.Value { m := &serverHelloMsg{} m.vers = uint16(rand.Intn(65536)) m.random = randomBytes(32, rand) m.sessionId = randomBytes(rand.Intn(32), rand) m.cipherSuite = uint16(rand.Int31()) m.compressionMethod = uint8(rand.Intn(256)) if rand.Intn(10) > 5 { m.nextProtoNeg = true n := rand.Intn(10) m.nextProtos = make([]string, n) for i := 0; i < n; i++ { m.nextProtos[i] = randomString(20, rand) } } if rand.Intn(10) > 5 { m.ocspStapling = true } if rand.Intn(10) > 5 { m.ticketSupported = true } return reflect.ValueOf(m) } func (*certificateMsg) Generate(rand *rand.Rand, size int) reflect.Value { m := &certificateMsg{} numCerts := rand.Intn(20) m.certificates = make([][]byte, numCerts) for i := 0; i < numCerts; i++ { m.certificates[i] = randomBytes(rand.Intn(10)+1, rand) } return reflect.ValueOf(m) } func (*certificateRequestMsg) Generate(rand *rand.Rand, size int) reflect.Value { m := &certificateRequestMsg{} m.certificateTypes = randomBytes(rand.Intn(5)+1, rand) numCAs := rand.Intn(100) m.certificateAuthorities = make([][]byte, numCAs) for i := 0; i < numCAs; i++ { m.certificateAuthorities[i] = randomBytes(rand.Intn(15)+1, rand) } return reflect.ValueOf(m) } func (*certificateVerifyMsg) Generate(rand *rand.Rand, size int) reflect.Value { m := &certificateVerifyMsg{} m.signature = randomBytes(rand.Intn(15)+1, rand) return reflect.ValueOf(m) } func (*certificateStatusMsg) Generate(rand *rand.Rand, size int) reflect.Value { m := &certificateStatusMsg{} if rand.Intn(10) > 5 { m.statusType = statusTypeOCSP m.response = randomBytes(rand.Intn(10)+1, rand) } else { m.statusType = 42 } return reflect.ValueOf(m) } func (*clientKeyExchangeMsg) Generate(rand *rand.Rand, size int) reflect.Value { m := &clientKeyExchangeMsg{} m.ciphertext = randomBytes(rand.Intn(1000)+1, rand) return reflect.ValueOf(m) } func (*finishedMsg) Generate(rand *rand.Rand, size int) reflect.Value { m := &finishedMsg{} m.verifyData = randomBytes(12, rand) return reflect.ValueOf(m) } func (*nextProtoMsg) Generate(rand *rand.Rand, size int) reflect.Value { m := &nextProtoMsg{} m.proto = randomString(rand.Intn(255), rand) return reflect.ValueOf(m) } func (*newSessionTicketMsg) Generate(rand *rand.Rand, size int) reflect.Value { m := &newSessionTicketMsg{} m.ticket = randomBytes(rand.Intn(4), rand) return reflect.ValueOf(m) } func (*sessionState) Generate(rand *rand.Rand, size int) reflect.Value { s := &sessionState{} s.vers = uint16(rand.Intn(10000)) s.cipherSuite = uint16(rand.Intn(10000)) s.masterSecret = randomBytes(rand.Intn(100), rand) numCerts := rand.Intn(20) s.certificates = make([][]byte, numCerts) for i := 0; i < numCerts; i++ { s.certificates[i] = randomBytes(rand.Intn(10)+1, rand) } return reflect.ValueOf(s) } go/src/pkg/crypto/tls/handshake_server.go0100644000000000000000000004356612412656737021052 0ustar00rootroot00000000000000// Copyright 2009 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 tls import ( "crypto" "crypto/ecdsa" "crypto/rsa" "crypto/subtle" "crypto/x509" "encoding/asn1" "errors" "fmt" "io" ) // serverHandshakeState contains details of a server handshake in progress. // It's discarded once the handshake has completed. type serverHandshakeState struct { c *Conn clientHello *clientHelloMsg hello *serverHelloMsg suite *cipherSuite ellipticOk bool ecdsaOk bool sessionState *sessionState finishedHash finishedHash masterSecret []byte certsFromClient [][]byte cert *Certificate } // serverHandshake performs a TLS handshake as a server. func (c *Conn) serverHandshake() error { config := c.config // If this is the first server handshake, we generate a random key to // encrypt the tickets with. config.serverInitOnce.Do(config.serverInit) hs := serverHandshakeState{ c: c, } isResume, err := hs.readClientHello() if err != nil { return err } // For an overview of TLS handshaking, see https://tools.ietf.org/html/rfc5246#section-7.3 if isResume { // The client has included a session ticket and so we do an abbreviated handshake. if err := hs.doResumeHandshake(); err != nil { return err } if err := hs.establishKeys(); err != nil { return err } if err := hs.sendFinished(); err != nil { return err } if err := hs.readFinished(); err != nil { return err } c.didResume = true } else { // The client didn't include a session ticket, or it wasn't // valid so we do a full handshake. if err := hs.doFullHandshake(); err != nil { return err } if err := hs.establishKeys(); err != nil { return err } if err := hs.readFinished(); err != nil { return err } if err := hs.sendSessionTicket(); err != nil { return err } if err := hs.sendFinished(); err != nil { return err } } c.handshakeComplete = true return nil } // readClientHello reads a ClientHello message from the client and decides // whether we will perform session resumption. func (hs *serverHandshakeState) readClientHello() (isResume bool, err error) { config := hs.c.config c := hs.c msg, err := c.readHandshake() if err != nil { return false, err } var ok bool hs.clientHello, ok = msg.(*clientHelloMsg) if !ok { c.sendAlert(alertUnexpectedMessage) return false, unexpectedMessageError(hs.clientHello, msg) } c.vers, ok = config.mutualVersion(hs.clientHello.vers) if !ok { c.sendAlert(alertProtocolVersion) return false, fmt.Errorf("tls: client offered an unsupported, maximum protocol version of %x", hs.clientHello.vers) } c.haveVers = true hs.finishedHash = newFinishedHash(c.vers) hs.finishedHash.Write(hs.clientHello.marshal()) hs.hello = new(serverHelloMsg) supportedCurve := false preferredCurves := config.curvePreferences() Curves: for _, curve := range hs.clientHello.supportedCurves { for _, supported := range preferredCurves { if supported == curve { supportedCurve = true break Curves } } } supportedPointFormat := false for _, pointFormat := range hs.clientHello.supportedPoints { if pointFormat == pointFormatUncompressed { supportedPointFormat = true break } } hs.ellipticOk = supportedCurve && supportedPointFormat foundCompression := false // We only support null compression, so check that the client offered it. for _, compression := range hs.clientHello.compressionMethods { if compression == compressionNone { foundCompression = true break } } if !foundCompression { c.sendAlert(alertHandshakeFailure) return false, errors.New("tls: client does not support uncompressed connections") } hs.hello.vers = c.vers hs.hello.random = make([]byte, 32) _, err = io.ReadFull(config.rand(), hs.hello.random) if err != nil { c.sendAlert(alertInternalError) return false, err } hs.hello.secureRenegotiation = hs.clientHello.secureRenegotiation hs.hello.compressionMethod = compressionNone if len(hs.clientHello.serverName) > 0 { c.serverName = hs.clientHello.serverName } // Although sending an empty NPN extension is reasonable, Firefox has // had a bug around this. Best to send nothing at all if // config.NextProtos is empty. See // https://code.google.com/p/go/issues/detail?id=5445. if hs.clientHello.nextProtoNeg && len(config.NextProtos) > 0 { hs.hello.nextProtoNeg = true hs.hello.nextProtos = config.NextProtos } if len(config.Certificates) == 0 { c.sendAlert(alertInternalError) return false, errors.New("tls: no certificates configured") } hs.cert = &config.Certificates[0] if len(hs.clientHello.serverName) > 0 { hs.cert = config.getCertificateForName(hs.clientHello.serverName) } _, hs.ecdsaOk = hs.cert.PrivateKey.(*ecdsa.PrivateKey) if hs.checkForResumption() { return true, nil } var preferenceList, supportedList []uint16 if c.config.PreferServerCipherSuites { preferenceList = c.config.cipherSuites() supportedList = hs.clientHello.cipherSuites } else { preferenceList = hs.clientHello.cipherSuites supportedList = c.config.cipherSuites() } for _, id := range preferenceList { if hs.suite = c.tryCipherSuite(id, supportedList, c.vers, hs.ellipticOk, hs.ecdsaOk); hs.suite != nil { break } } if hs.suite == nil { c.sendAlert(alertHandshakeFailure) return false, errors.New("tls: no cipher suite supported by both client and server") } return false, nil } // checkForResumption returns true if we should perform resumption on this connection. func (hs *serverHandshakeState) checkForResumption() bool { c := hs.c if c.config.SessionTicketsDisabled { return false } var ok bool if hs.sessionState, ok = c.decryptTicket(hs.clientHello.sessionTicket); !ok { return false } if hs.sessionState.vers > hs.clientHello.vers { return false } if vers, ok := c.config.mutualVersion(hs.sessionState.vers); !ok || vers != hs.sessionState.vers { return false } cipherSuiteOk := false // Check that the client is still offering the ciphersuite in the session. for _, id := range hs.clientHello.cipherSuites { if id == hs.sessionState.cipherSuite { cipherSuiteOk = true break } } if !cipherSuiteOk { return false } // Check that we also support the ciphersuite from the session. hs.suite = c.tryCipherSuite(hs.sessionState.cipherSuite, c.config.cipherSuites(), hs.sessionState.vers, hs.ellipticOk, hs.ecdsaOk) if hs.suite == nil { return false } sessionHasClientCerts := len(hs.sessionState.certificates) != 0 needClientCerts := c.config.ClientAuth == RequireAnyClientCert || c.config.ClientAuth == RequireAndVerifyClientCert if needClientCerts && !sessionHasClientCerts { return false } if sessionHasClientCerts && c.config.ClientAuth == NoClientCert { return false } return true } func (hs *serverHandshakeState) doResumeHandshake() error { c := hs.c hs.hello.cipherSuite = hs.suite.id // We echo the client's session ID in the ServerHello to let it know // that we're doing a resumption. hs.hello.sessionId = hs.clientHello.sessionId hs.finishedHash.Write(hs.hello.marshal()) c.writeRecord(recordTypeHandshake, hs.hello.marshal()) if len(hs.sessionState.certificates) > 0 { if _, err := hs.processCertsFromClient(hs.sessionState.certificates); err != nil { return err } } hs.masterSecret = hs.sessionState.masterSecret return nil } func (hs *serverHandshakeState) doFullHandshake() error { config := hs.c.config c := hs.c if hs.clientHello.ocspStapling && len(hs.cert.OCSPStaple) > 0 { hs.hello.ocspStapling = true } hs.hello.ticketSupported = hs.clientHello.ticketSupported && !config.SessionTicketsDisabled hs.hello.cipherSuite = hs.suite.id hs.finishedHash.Write(hs.hello.marshal()) c.writeRecord(recordTypeHandshake, hs.hello.marshal()) certMsg := new(certificateMsg) certMsg.certificates = hs.cert.Certificate hs.finishedHash.Write(certMsg.marshal()) c.writeRecord(recordTypeHandshake, certMsg.marshal()) if hs.hello.ocspStapling { certStatus := new(certificateStatusMsg) certStatus.statusType = statusTypeOCSP certStatus.response = hs.cert.OCSPStaple hs.finishedHash.Write(certStatus.marshal()) c.writeRecord(recordTypeHandshake, certStatus.marshal()) } keyAgreement := hs.suite.ka(c.vers) skx, err := keyAgreement.generateServerKeyExchange(config, hs.cert, hs.clientHello, hs.hello) if err != nil { c.sendAlert(alertHandshakeFailure) return err } if skx != nil { hs.finishedHash.Write(skx.marshal()) c.writeRecord(recordTypeHandshake, skx.marshal()) } if config.ClientAuth >= RequestClientCert { // Request a client certificate certReq := new(certificateRequestMsg) certReq.certificateTypes = []byte{ byte(certTypeRSASign), byte(certTypeECDSASign), } if c.vers >= VersionTLS12 { certReq.hasSignatureAndHash = true certReq.signatureAndHashes = supportedClientCertSignatureAlgorithms } // An empty list of certificateAuthorities signals to // the client that it may send any certificate in response // to our request. When we know the CAs we trust, then // we can send them down, so that the client can choose // an appropriate certificate to give to us. if config.ClientCAs != nil { certReq.certificateAuthorities = config.ClientCAs.Subjects() } hs.finishedHash.Write(certReq.marshal()) c.writeRecord(recordTypeHandshake, certReq.marshal()) } helloDone := new(serverHelloDoneMsg) hs.finishedHash.Write(helloDone.marshal()) c.writeRecord(recordTypeHandshake, helloDone.marshal()) var pub crypto.PublicKey // public key for client auth, if any msg, err := c.readHandshake() if err != nil { return err } var ok bool // If we requested a client certificate, then the client must send a // certificate message, even if it's empty. if config.ClientAuth >= RequestClientCert { if certMsg, ok = msg.(*certificateMsg); !ok { c.sendAlert(alertUnexpectedMessage) return unexpectedMessageError(certMsg, msg) } hs.finishedHash.Write(certMsg.marshal()) if len(certMsg.certificates) == 0 { // The client didn't actually send a certificate switch config.ClientAuth { case RequireAnyClientCert, RequireAndVerifyClientCert: c.sendAlert(alertBadCertificate) return errors.New("tls: client didn't provide a certificate") } } pub, err = hs.processCertsFromClient(certMsg.certificates) if err != nil { return err } msg, err = c.readHandshake() if err != nil { return err } } // Get client key exchange ckx, ok := msg.(*clientKeyExchangeMsg) if !ok { c.sendAlert(alertUnexpectedMessage) return unexpectedMessageError(ckx, msg) } hs.finishedHash.Write(ckx.marshal()) // If we received a client cert in response to our certificate request message, // the client will send us a certificateVerifyMsg immediately after the // clientKeyExchangeMsg. This message is a digest of all preceding // handshake-layer messages that is signed using the private key corresponding // to the client's certificate. This allows us to verify that the client is in // possession of the private key of the certificate. if len(c.peerCertificates) > 0 { msg, err = c.readHandshake() if err != nil { return err } certVerify, ok := msg.(*certificateVerifyMsg) if !ok { c.sendAlert(alertUnexpectedMessage) return unexpectedMessageError(certVerify, msg) } switch key := pub.(type) { case *ecdsa.PublicKey: ecdsaSig := new(ecdsaSignature) if _, err = asn1.Unmarshal(certVerify.signature, ecdsaSig); err != nil { break } if ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0 { err = errors.New("ECDSA signature contained zero or negative values") break } digest, _, _ := hs.finishedHash.hashForClientCertificate(signatureECDSA) if !ecdsa.Verify(key, digest, ecdsaSig.R, ecdsaSig.S) { err = errors.New("ECDSA verification failure") break } case *rsa.PublicKey: digest, hashFunc, _ := hs.finishedHash.hashForClientCertificate(signatureRSA) err = rsa.VerifyPKCS1v15(key, hashFunc, digest, certVerify.signature) } if err != nil { c.sendAlert(alertBadCertificate) return errors.New("could not validate signature of connection nonces: " + err.Error()) } hs.finishedHash.Write(certVerify.marshal()) } preMasterSecret, err := keyAgreement.processClientKeyExchange(config, hs.cert, ckx, c.vers) if err != nil { c.sendAlert(alertHandshakeFailure) return err } hs.masterSecret = masterFromPreMasterSecret(c.vers, preMasterSecret, hs.clientHello.random, hs.hello.random) return nil } func (hs *serverHandshakeState) establishKeys() error { c := hs.c clientMAC, serverMAC, clientKey, serverKey, clientIV, serverIV := keysFromMasterSecret(c.vers, hs.masterSecret, hs.clientHello.random, hs.hello.random, hs.suite.macLen, hs.suite.keyLen, hs.suite.ivLen) var clientCipher, serverCipher interface{} var clientHash, serverHash macFunction if hs.suite.aead == nil { clientCipher = hs.suite.cipher(clientKey, clientIV, true /* for reading */) clientHash = hs.suite.mac(c.vers, clientMAC) serverCipher = hs.suite.cipher(serverKey, serverIV, false /* not for reading */) serverHash = hs.suite.mac(c.vers, serverMAC) } else { clientCipher = hs.suite.aead(clientKey, clientIV) serverCipher = hs.suite.aead(serverKey, serverIV) } c.in.prepareCipherSpec(c.vers, clientCipher, clientHash) c.out.prepareCipherSpec(c.vers, serverCipher, serverHash) return nil } func (hs *serverHandshakeState) readFinished() error { c := hs.c c.readRecord(recordTypeChangeCipherSpec) if err := c.in.error(); err != nil { return err } if hs.hello.nextProtoNeg { msg, err := c.readHandshake() if err != nil { return err } nextProto, ok := msg.(*nextProtoMsg) if !ok { c.sendAlert(alertUnexpectedMessage) return unexpectedMessageError(nextProto, msg) } hs.finishedHash.Write(nextProto.marshal()) c.clientProtocol = nextProto.proto } msg, err := c.readHandshake() if err != nil { return err } clientFinished, ok := msg.(*finishedMsg) if !ok { c.sendAlert(alertUnexpectedMessage) return unexpectedMessageError(clientFinished, msg) } verify := hs.finishedHash.clientSum(hs.masterSecret) if len(verify) != len(clientFinished.verifyData) || subtle.ConstantTimeCompare(verify, clientFinished.verifyData) != 1 { c.sendAlert(alertHandshakeFailure) return errors.New("tls: client's Finished message is incorrect") } hs.finishedHash.Write(clientFinished.marshal()) return nil } func (hs *serverHandshakeState) sendSessionTicket() error { if !hs.hello.ticketSupported { return nil } c := hs.c m := new(newSessionTicketMsg) var err error state := sessionState{ vers: c.vers, cipherSuite: hs.suite.id, masterSecret: hs.masterSecret, certificates: hs.certsFromClient, } m.ticket, err = c.encryptTicket(&state) if err != nil { return err } hs.finishedHash.Write(m.marshal()) c.writeRecord(recordTypeHandshake, m.marshal()) return nil } func (hs *serverHandshakeState) sendFinished() error { c := hs.c c.writeRecord(recordTypeChangeCipherSpec, []byte{1}) finished := new(finishedMsg) finished.verifyData = hs.finishedHash.serverSum(hs.masterSecret) hs.finishedHash.Write(finished.marshal()) c.writeRecord(recordTypeHandshake, finished.marshal()) c.cipherSuite = hs.suite.id return nil } // processCertsFromClient takes a chain of client certificates either from a // Certificates message or from a sessionState and verifies them. It returns // the public key of the leaf certificate. func (hs *serverHandshakeState) processCertsFromClient(certificates [][]byte) (crypto.PublicKey, error) { c := hs.c hs.certsFromClient = certificates certs := make([]*x509.Certificate, len(certificates)) var err error for i, asn1Data := range certificates { if certs[i], err = x509.ParseCertificate(asn1Data); err != nil { c.sendAlert(alertBadCertificate) return nil, errors.New("tls: failed to parse client certificate: " + err.Error()) } } if c.config.ClientAuth >= VerifyClientCertIfGiven && len(certs) > 0 { opts := x509.VerifyOptions{ Roots: c.config.ClientCAs, CurrentTime: c.config.time(), Intermediates: x509.NewCertPool(), KeyUsages: []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth}, } for _, cert := range certs[1:] { opts.Intermediates.AddCert(cert) } chains, err := certs[0].Verify(opts) if err != nil { c.sendAlert(alertBadCertificate) return nil, errors.New("tls: failed to verify client's certificate: " + err.Error()) } ok := false for _, ku := range certs[0].ExtKeyUsage { if ku == x509.ExtKeyUsageClientAuth { ok = true break } } if !ok { c.sendAlert(alertHandshakeFailure) return nil, errors.New("tls: client's certificate's extended key usage doesn't permit it to be used for client authentication") } c.verifiedChains = chains } if len(certs) > 0 { var pub crypto.PublicKey switch key := certs[0].PublicKey.(type) { case *ecdsa.PublicKey, *rsa.PublicKey: pub = key default: c.sendAlert(alertUnsupportedCertificate) return nil, fmt.Errorf("tls: client's certificate contains an unsupported public key of type %T", certs[0].PublicKey) } c.peerCertificates = certs return pub, nil } return nil, nil } // tryCipherSuite returns a cipherSuite with the given id if that cipher suite // is acceptable to use. func (c *Conn) tryCipherSuite(id uint16, supportedCipherSuites []uint16, version uint16, ellipticOk, ecdsaOk bool) *cipherSuite { for _, supported := range supportedCipherSuites { if id == supported { var candidate *cipherSuite for _, s := range cipherSuites { if s.id == id { candidate = s break } } if candidate == nil { continue } // Don't select a ciphersuite which we can't // support for this client. if (candidate.flags&suiteECDHE != 0) && !ellipticOk { continue } if (candidate.flags&suiteECDSA != 0) != ecdsaOk { continue } if version < VersionTLS12 && candidate.flags&suiteTLS12 != 0 { continue } return candidate } } return nil } go/src/pkg/crypto/tls/handshake_server_test.go0100644000000000000000000006312012412656737022075 0ustar00rootroot00000000000000// Copyright 2009 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 tls import ( "bytes" "crypto/ecdsa" "crypto/elliptic" "crypto/rsa" "crypto/x509" "encoding/hex" "encoding/pem" "errors" "fmt" "io" "math/big" "net" "os" "os/exec" "path/filepath" "strings" "testing" "time" ) // zeroSource is an io.Reader that returns an unlimited number of zero bytes. type zeroSource struct{} func (zeroSource) Read(b []byte) (n int, err error) { for i := range b { b[i] = 0 } return len(b), nil } var testConfig *Config func init() { testConfig = &Config{ Time: func() time.Time { return time.Unix(0, 0) }, Rand: zeroSource{}, Certificates: make([]Certificate, 2), InsecureSkipVerify: true, MinVersion: VersionSSL30, MaxVersion: VersionTLS12, } testConfig.Certificates[0].Certificate = [][]byte{testRSACertificate} testConfig.Certificates[0].PrivateKey = testRSAPrivateKey testConfig.Certificates[1].Certificate = [][]byte{testSNICertificate} testConfig.Certificates[1].PrivateKey = testRSAPrivateKey testConfig.BuildNameToCertificate() } func testClientHelloFailure(t *testing.T, m handshakeMessage, expectedSubStr string) { // Create in-memory network connection, // send message to server. Should return // expected error. c, s := net.Pipe() go func() { cli := Client(c, testConfig) if ch, ok := m.(*clientHelloMsg); ok { cli.vers = ch.vers } cli.writeRecord(recordTypeHandshake, m.marshal()) c.Close() }() err := Server(s, testConfig).Handshake() s.Close() if err == nil || !strings.Contains(err.Error(), expectedSubStr) { t.Errorf("Got error: %s; expected to match substring '%s'", err, expectedSubStr) } } func TestSimpleError(t *testing.T) { testClientHelloFailure(t, &serverHelloDoneMsg{}, "unexpected handshake message") } var badProtocolVersions = []uint16{0x0000, 0x0005, 0x0100, 0x0105, 0x0200, 0x0205} func TestRejectBadProtocolVersion(t *testing.T) { for _, v := range badProtocolVersions { testClientHelloFailure(t, &clientHelloMsg{vers: v}, "unsupported, maximum protocol version") } } func TestNoSuiteOverlap(t *testing.T) { clientHello := &clientHelloMsg{ vers: 0x0301, cipherSuites: []uint16{0xff00}, compressionMethods: []uint8{0}, } testClientHelloFailure(t, clientHello, "no cipher suite supported by both client and server") } func TestNoCompressionOverlap(t *testing.T) { clientHello := &clientHelloMsg{ vers: 0x0301, cipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA}, compressionMethods: []uint8{0xff}, } testClientHelloFailure(t, clientHello, "client does not support uncompressed connections") } func TestTLS12OnlyCipherSuites(t *testing.T) { // Test that a Server doesn't select a TLS 1.2-only cipher suite when // the client negotiates TLS 1.1. var zeros [32]byte clientHello := &clientHelloMsg{ vers: VersionTLS11, random: zeros[:], cipherSuites: []uint16{ // The Server, by default, will use the client's // preference order. So the GCM cipher suite // will be selected unless it's excluded because // of the version in this ClientHello. TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_RC4_128_SHA, }, compressionMethods: []uint8{compressionNone}, supportedCurves: []CurveID{CurveP256, CurveP384, CurveP521}, supportedPoints: []uint8{pointFormatUncompressed}, } c, s := net.Pipe() var reply interface{} var clientErr error go func() { cli := Client(c, testConfig) cli.vers = clientHello.vers cli.writeRecord(recordTypeHandshake, clientHello.marshal()) reply, clientErr = cli.readHandshake() c.Close() }() config := *testConfig config.CipherSuites = clientHello.cipherSuites Server(s, &config).Handshake() s.Close() if clientErr != nil { t.Fatal(clientErr) } serverHello, ok := reply.(*serverHelloMsg) if !ok { t.Fatalf("didn't get ServerHello message in reply. Got %v\n", reply) } if s := serverHello.cipherSuite; s != TLS_RSA_WITH_RC4_128_SHA { t.Fatalf("bad cipher suite from server: %x", s) } } func TestAlertForwarding(t *testing.T) { c, s := net.Pipe() go func() { Client(c, testConfig).sendAlert(alertUnknownCA) c.Close() }() err := Server(s, testConfig).Handshake() s.Close() if e, ok := err.(*net.OpError); !ok || e.Err != error(alertUnknownCA) { t.Errorf("Got error: %s; expected: %s", err, error(alertUnknownCA)) } } func TestClose(t *testing.T) { c, s := net.Pipe() go c.Close() err := Server(s, testConfig).Handshake() s.Close() if err != io.EOF { t.Errorf("Got error: %s; expected: %s", err, io.EOF) } } func testHandshake(clientConfig, serverConfig *Config) (state ConnectionState, err error) { c, s := net.Pipe() done := make(chan bool) go func() { cli := Client(c, clientConfig) cli.Handshake() c.Close() done <- true }() server := Server(s, serverConfig) err = server.Handshake() if err == nil { state = server.ConnectionState() } s.Close() <-done return } func TestVersion(t *testing.T) { serverConfig := &Config{ Certificates: testConfig.Certificates, MaxVersion: VersionTLS11, } clientConfig := &Config{ InsecureSkipVerify: true, } state, err := testHandshake(clientConfig, serverConfig) if err != nil { t.Fatalf("handshake failed: %s", err) } if state.Version != VersionTLS11 { t.Fatalf("Incorrect version %x, should be %x", state.Version, VersionTLS11) } } func TestCipherSuitePreference(t *testing.T) { serverConfig := &Config{ CipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA}, Certificates: testConfig.Certificates, MaxVersion: VersionTLS11, } clientConfig := &Config{ CipherSuites: []uint16{TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_RC4_128_SHA}, InsecureSkipVerify: true, } state, err := testHandshake(clientConfig, serverConfig) if err != nil { t.Fatalf("handshake failed: %s", err) } if state.CipherSuite != TLS_RSA_WITH_AES_128_CBC_SHA { // By default the server should use the client's preference. t.Fatalf("Client's preference was not used, got %x", state.CipherSuite) } serverConfig.PreferServerCipherSuites = true state, err = testHandshake(clientConfig, serverConfig) if err != nil { t.Fatalf("handshake failed: %s", err) } if state.CipherSuite != TLS_RSA_WITH_RC4_128_SHA { t.Fatalf("Server's preference was not used, got %x", state.CipherSuite) } } // Note: see comment in handshake_test.go for details of how the reference // tests work. // serverTest represents a test of the TLS server handshake against a reference // implementation. type serverTest struct { // name is a freeform string identifying the test and the file in which // the expected results will be stored. name string // command, if not empty, contains a series of arguments for the // command to run for the reference server. command []string // expectedPeerCerts contains a list of PEM blocks of expected // certificates from the client. expectedPeerCerts []string // config, if not nil, contains a custom Config to use for this test. config *Config } var defaultClientCommand = []string{"openssl", "s_client", "-no_ticket"} // connFromCommand starts opens a listening socket and starts the reference // client to connect to it. It returns a recordingConn that wraps the resulting // connection. func (test *serverTest) connFromCommand() (conn *recordingConn, child *exec.Cmd, err error) { l, err := net.ListenTCP("tcp", &net.TCPAddr{ IP: net.IPv4(127, 0, 0, 1), Port: 0, }) if err != nil { return nil, nil, err } defer l.Close() port := l.Addr().(*net.TCPAddr).Port var command []string command = append(command, test.command...) if len(command) == 0 { command = defaultClientCommand } command = append(command, "-connect") command = append(command, fmt.Sprintf("127.0.0.1:%d", port)) cmd := exec.Command(command[0], command[1:]...) cmd.Stdin = nil var output bytes.Buffer cmd.Stdout = &output cmd.Stderr = &output if err := cmd.Start(); err != nil { return nil, nil, err } connChan := make(chan interface{}) go func() { tcpConn, err := l.Accept() if err != nil { connChan <- err } connChan <- tcpConn }() var tcpConn net.Conn select { case connOrError := <-connChan: if err, ok := connOrError.(error); ok { return nil, nil, err } tcpConn = connOrError.(net.Conn) case <-time.After(2 * time.Second): output.WriteTo(os.Stdout) return nil, nil, errors.New("timed out waiting for connection from child process") } record := &recordingConn{ Conn: tcpConn, } return record, cmd, nil } func (test *serverTest) dataPath() string { return filepath.Join("testdata", "Server-"+test.name) } func (test *serverTest) loadData() (flows [][]byte, err error) { in, err := os.Open(test.dataPath()) if err != nil { return nil, err } defer in.Close() return parseTestData(in) } func (test *serverTest) run(t *testing.T, write bool) { var clientConn, serverConn net.Conn var recordingConn *recordingConn var childProcess *exec.Cmd if write { var err error recordingConn, childProcess, err = test.connFromCommand() if err != nil { t.Fatalf("Failed to start subcommand: %s", err) } serverConn = recordingConn } else { clientConn, serverConn = net.Pipe() } config := test.config if config == nil { config = testConfig } server := Server(serverConn, config) peerCertsChan := make(chan []*x509.Certificate, 1) go func() { if _, err := server.Write([]byte("hello, world\n")); err != nil { t.Logf("Error from Server.Write: %s", err) } server.Close() serverConn.Close() peerCertsChan <- server.ConnectionState().PeerCertificates }() if !write { flows, err := test.loadData() if err != nil { t.Fatalf("%s: failed to load data from %s", test.name, test.dataPath()) } for i, b := range flows { if i%2 == 0 { clientConn.Write(b) continue } bb := make([]byte, len(b)) n, err := io.ReadFull(clientConn, bb) if err != nil { t.Fatalf("%s #%d: %s\nRead %d, wanted %d, got %x, wanted %x\n", test.name, i+1, err, n, len(bb), bb[:n], b) } if !bytes.Equal(b, bb) { t.Fatalf("%s #%d: mismatch on read: got:%x want:%x", test.name, i+1, bb, b) } } clientConn.Close() } peerCerts := <-peerCertsChan if len(peerCerts) == len(test.expectedPeerCerts) { for i, peerCert := range peerCerts { block, _ := pem.Decode([]byte(test.expectedPeerCerts[i])) if !bytes.Equal(block.Bytes, peerCert.Raw) { t.Fatalf("%s: mismatch on peer cert %d", test.name, i+1) } } } else { t.Fatalf("%s: mismatch on peer list length: %d (wanted) != %d (got)", test.name, len(test.expectedPeerCerts), len(peerCerts)) } if write { path := test.dataPath() out, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) if err != nil { t.Fatalf("Failed to create output file: %s", err) } defer out.Close() recordingConn.Close() if len(recordingConn.flows) < 3 { childProcess.Stdout.(*bytes.Buffer).WriteTo(os.Stdout) t.Fatalf("Handshake failed") } recordingConn.WriteTo(out) fmt.Printf("Wrote %s\n", path) childProcess.Wait() } } func runServerTestForVersion(t *testing.T, template *serverTest, prefix, option string) { test := *template test.name = prefix + test.name if len(test.command) == 0 { test.command = defaultClientCommand } test.command = append([]string(nil), test.command...) test.command = append(test.command, option) test.run(t, *update) } func runServerTestSSLv3(t *testing.T, template *serverTest) { runServerTestForVersion(t, template, "SSLv3-", "-ssl3") } func runServerTestTLS10(t *testing.T, template *serverTest) { runServerTestForVersion(t, template, "TLSv10-", "-tls1") } func runServerTestTLS11(t *testing.T, template *serverTest) { runServerTestForVersion(t, template, "TLSv11-", "-tls1_1") } func runServerTestTLS12(t *testing.T, template *serverTest) { runServerTestForVersion(t, template, "TLSv12-", "-tls1_2") } func TestHandshakeServerRSARC4(t *testing.T) { test := &serverTest{ name: "RSA-RC4", command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "RC4-SHA"}, } runServerTestSSLv3(t, test) runServerTestTLS10(t, test) runServerTestTLS11(t, test) runServerTestTLS12(t, test) } func TestHandshakeServerRSA3DES(t *testing.T) { test := &serverTest{ name: "RSA-3DES", command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "DES-CBC3-SHA"}, } runServerTestSSLv3(t, test) runServerTestTLS10(t, test) runServerTestTLS12(t, test) } func TestHandshakeServerRSAAES(t *testing.T) { test := &serverTest{ name: "RSA-AES", command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "AES128-SHA"}, } runServerTestSSLv3(t, test) runServerTestTLS10(t, test) runServerTestTLS12(t, test) } func TestHandshakeServerAESGCM(t *testing.T) { test := &serverTest{ name: "RSA-AES-GCM", command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "ECDHE-RSA-AES128-GCM-SHA256"}, } runServerTestTLS12(t, test) } func TestHandshakeServerECDHEECDSAAES(t *testing.T) { config := *testConfig config.Certificates = make([]Certificate, 1) config.Certificates[0].Certificate = [][]byte{testECDSACertificate} config.Certificates[0].PrivateKey = testECDSAPrivateKey config.BuildNameToCertificate() test := &serverTest{ name: "ECDHE-ECDSA-AES", command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "ECDHE-ECDSA-AES256-SHA"}, config: &config, } runServerTestTLS10(t, test) runServerTestTLS12(t, test) } // TestHandshakeServerSNI involves a client sending an SNI extension of // "snitest.com", which happens to match the CN of testSNICertificate. The test // verifies that the server correctly selects that certificate. func TestHandshakeServerSNI(t *testing.T) { test := &serverTest{ name: "SNI", command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "AES128-SHA", "-servername", "snitest.com"}, } runServerTestTLS12(t, test) } // TestCipherSuiteCertPreferance ensures that we select an RSA ciphersuite with // an RSA certificate and an ECDSA ciphersuite with an ECDSA certificate. func TestCipherSuiteCertPreferenceECDSA(t *testing.T) { config := *testConfig config.CipherSuites = []uint16{TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA} config.PreferServerCipherSuites = true test := &serverTest{ name: "CipherSuiteCertPreferenceRSA", config: &config, } runServerTestTLS12(t, test) config = *testConfig config.CipherSuites = []uint16{TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA} config.Certificates = []Certificate{ Certificate{ Certificate: [][]byte{testECDSACertificate}, PrivateKey: testECDSAPrivateKey, }, } config.BuildNameToCertificate() config.PreferServerCipherSuites = true test = &serverTest{ name: "CipherSuiteCertPreferenceECDSA", config: &config, } runServerTestTLS12(t, test) } func TestResumption(t *testing.T) { sessionFilePath := tempFile("") defer os.Remove(sessionFilePath) test := &serverTest{ name: "IssueTicket", command: []string{"openssl", "s_client", "-cipher", "RC4-SHA", "-sess_out", sessionFilePath}, } runServerTestTLS12(t, test) test = &serverTest{ name: "Resume", command: []string{"openssl", "s_client", "-cipher", "RC4-SHA", "-sess_in", sessionFilePath}, } runServerTestTLS12(t, test) } func TestResumptionDisabled(t *testing.T) { sessionFilePath := tempFile("") defer os.Remove(sessionFilePath) config := *testConfig test := &serverTest{ name: "IssueTicketPreDisable", command: []string{"openssl", "s_client", "-cipher", "RC4-SHA", "-sess_out", sessionFilePath}, config: &config, } runServerTestTLS12(t, test) config.SessionTicketsDisabled = true test = &serverTest{ name: "ResumeDisabled", command: []string{"openssl", "s_client", "-cipher", "RC4-SHA", "-sess_in", sessionFilePath}, config: &config, } runServerTestTLS12(t, test) // One needs to manually confirm that the handshake in the golden data // file for ResumeDisabled does not include a resumption handshake. } // cert.pem and key.pem were generated with generate_cert.go // Thus, they have no ExtKeyUsage fields and trigger an error // when verification is turned on. const clientCertificatePEM = ` -----BEGIN CERTIFICATE----- MIIB7TCCAVigAwIBAgIBADALBgkqhkiG9w0BAQUwJjEQMA4GA1UEChMHQWNtZSBD bzESMBAGA1UEAxMJMTI3LjAuMC4xMB4XDTExMTIwODA3NTUxMloXDTEyMTIwNzA4 MDAxMlowJjEQMA4GA1UEChMHQWNtZSBDbzESMBAGA1UEAxMJMTI3LjAuMC4xMIGc MAsGCSqGSIb3DQEBAQOBjAAwgYgCgYBO0Hsx44Jk2VnAwoekXh6LczPHY1PfZpIG hPZk1Y/kNqcdK+izIDZFI7Xjla7t4PUgnI2V339aEu+H5Fto5OkOdOwEin/ekyfE ARl6vfLcPRSr0FTKIQzQTW6HLlzF0rtNS0/Otiz3fojsfNcCkXSmHgwa2uNKWi7e E5xMQIhZkwIDAQABozIwMDAOBgNVHQ8BAf8EBAMCAKAwDQYDVR0OBAYEBAECAwQw DwYDVR0jBAgwBoAEAQIDBDALBgkqhkiG9w0BAQUDgYEANh+zegx1yW43RmEr1b3A p0vMRpqBWHyFeSnIyMZn3TJWRSt1tukkqVCavh9a+hoV2cxVlXIWg7nCto/9iIw4 hB2rXZIxE0/9gzvGnfERYraL7KtnvshksBFQRlgXa5kc0x38BvEO5ZaoDPl4ILdE GFGNEH5PlGffo05wc46QkYU= -----END CERTIFICATE-----` const clientKeyPEM = ` -----BEGIN RSA PRIVATE KEY----- MIICWgIBAAKBgE7QezHjgmTZWcDCh6ReHotzM8djU99mkgaE9mTVj+Q2px0r6LMg NkUjteOVru3g9SCcjZXff1oS74fkW2jk6Q507ASKf96TJ8QBGXq98tw9FKvQVMoh DNBNbocuXMXSu01LT862LPd+iOx81wKRdKYeDBra40paLt4TnExAiFmTAgMBAAEC gYBxvXd8yNteFTns8A/2yomEMC4yeosJJSpp1CsN3BJ7g8/qTnrVPxBy+RU+qr63 t2WquaOu/cr5P8iEsa6lk20tf8pjKLNXeX0b1RTzK8rJLbS7nGzP3tvOhL096VtQ dAo4ROEaro0TzYpHmpciSvxVIeEIAAdFDObDJPKqcJAxyQJBAJizfYgK8Gzx9fsx hxp+VteCbVPg2euASH5Yv3K5LukRdKoSzHE2grUVQgN/LafC0eZibRanxHegYSr7 7qaswKUCQQCEIWor/X4XTMdVj3Oj+vpiw75y/S9gh682+myZL+d/02IEkwnB098P RkKVpenBHyrGg0oeN5La7URILWKj7CPXAkBKo6F+d+phNjwIFoN1Xb/RA32w/D1I saG9sF+UEhRt9AxUfW/U/tIQ9V0ZHHcSg1XaCM5Nvp934brdKdvTOKnJAkBD5h/3 Rybatlvg/fzBEaJFyq09zhngkxlZOUtBVTqzl17RVvY2orgH02U4HbCHy4phxOn7 qTdQRYlHRftgnWK1AkANibn9PRYJ7mJyJ9Dyj2QeNcSkSTzrt0tPvUMf4+meJymN 1Ntu5+S1DLLzfxlaljWG6ylW6DNxujCyuXIV2rvA -----END RSA PRIVATE KEY-----` const clientECDSACertificatePEM = ` -----BEGIN CERTIFICATE----- MIIB/DCCAV4CCQCaMIRsJjXZFzAJBgcqhkjOPQQBMEUxCzAJBgNVBAYTAkFVMRMw EQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0 eSBMdGQwHhcNMTIxMTE0MTMyNTUzWhcNMjIxMTEyMTMyNTUzWjBBMQswCQYDVQQG EwJBVTEMMAoGA1UECBMDTlNXMRAwDgYDVQQHEwdQeXJtb250MRIwEAYDVQQDEwlK b2VsIFNpbmcwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABACVjJF1FMBexFe01MNv ja5oHt1vzobhfm6ySD6B5U7ixohLZNz1MLvT/2XMW/TdtWo+PtAd3kfDdq0Z9kUs jLzYHQFMH3CQRnZIi4+DzEpcj0B22uCJ7B0rxE4wdihBsmKo+1vx+U56jb0JuK7q ixgnTy5w/hOWusPTQBbNZU6sER7m8TAJBgcqhkjOPQQBA4GMADCBiAJCAOAUxGBg C3JosDJdYUoCdFzCgbkWqD8pyDbHgf9stlvZcPE4O1BIKJTLCRpS8V3ujfK58PDa 2RU6+b0DeoeiIzXsAkIBo9SKeDUcSpoj0gq+KxAxnZxfvuiRs9oa9V2jI/Umi0Vw jWVim34BmT0Y9hCaOGGbLlfk+syxis7iI6CH8OFnUes= -----END CERTIFICATE-----` const clientECDSAKeyPEM = ` -----BEGIN EC PARAMETERS----- BgUrgQQAIw== -----END EC PARAMETERS----- -----BEGIN EC PRIVATE KEY----- MIHcAgEBBEIBkJN9X4IqZIguiEVKMqeBUP5xtRsEv4HJEtOpOGLELwO53SD78Ew8 k+wLWoqizS3NpQyMtrU8JFdWfj+C57UNkOugBwYFK4EEACOhgYkDgYYABACVjJF1 FMBexFe01MNvja5oHt1vzobhfm6ySD6B5U7ixohLZNz1MLvT/2XMW/TdtWo+PtAd 3kfDdq0Z9kUsjLzYHQFMH3CQRnZIi4+DzEpcj0B22uCJ7B0rxE4wdihBsmKo+1vx +U56jb0JuK7qixgnTy5w/hOWusPTQBbNZU6sER7m8Q== -----END EC PRIVATE KEY-----` func TestClientAuth(t *testing.T) { var certPath, keyPath, ecdsaCertPath, ecdsaKeyPath string if *update { certPath = tempFile(clientCertificatePEM) defer os.Remove(certPath) keyPath = tempFile(clientKeyPEM) defer os.Remove(keyPath) ecdsaCertPath = tempFile(clientECDSACertificatePEM) defer os.Remove(ecdsaCertPath) ecdsaKeyPath = tempFile(clientECDSAKeyPEM) defer os.Remove(ecdsaKeyPath) } config := *testConfig config.ClientAuth = RequestClientCert test := &serverTest{ name: "ClientAuthRequestedNotGiven", command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "RC4-SHA"}, config: &config, } runServerTestTLS12(t, test) test = &serverTest{ name: "ClientAuthRequestedAndGiven", command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "RC4-SHA", "-cert", certPath, "-key", keyPath}, config: &config, expectedPeerCerts: []string{clientCertificatePEM}, } runServerTestTLS12(t, test) test = &serverTest{ name: "ClientAuthRequestedAndECDSAGiven", command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "RC4-SHA", "-cert", ecdsaCertPath, "-key", ecdsaKeyPath}, config: &config, expectedPeerCerts: []string{clientECDSACertificatePEM}, } runServerTestTLS12(t, test) } func bigFromString(s string) *big.Int { ret := new(big.Int) ret.SetString(s, 10) return ret } func fromHex(s string) []byte { b, _ := hex.DecodeString(s) return b } var testRSACertificate = fromHex("308202b030820219a00302010202090085b0bba48a7fb8ca300d06092a864886f70d01010505003045310b3009060355040613024155311330110603550408130a536f6d652d53746174653121301f060355040a1318496e7465726e6574205769646769747320507479204c7464301e170d3130303432343039303933385a170d3131303432343039303933385a3045310b3009060355040613024155311330110603550408130a536f6d652d53746174653121301f060355040a1318496e7465726e6574205769646769747320507479204c746430819f300d06092a864886f70d010101050003818d0030818902818100bb79d6f517b5e5bf4610d0dc69bee62b07435ad0032d8a7a4385b71452e7a5654c2c78b8238cb5b482e5de1f953b7e62a52ca533d6fe125c7a56fcf506bffa587b263fb5cd04d3d0c921964ac7f4549f5abfef427100fe1899077f7e887d7df10439c4a22edb51c97ce3c04c3b326601cfafb11db8719a1ddbdb896baeda2d790203010001a381a73081a4301d0603551d0e04160414b1ade2855acfcb28db69ce2369ded3268e18883930750603551d23046e306c8014b1ade2855acfcb28db69ce2369ded3268e188839a149a4473045310b3009060355040613024155311330110603550408130a536f6d652d53746174653121301f060355040a1318496e7465726e6574205769646769747320507479204c746482090085b0bba48a7fb8ca300c0603551d13040530030101ff300d06092a864886f70d010105050003818100086c4524c76bb159ab0c52ccf2b014d7879d7a6475b55a9566e4c52b8eae12661feb4f38b36e60d392fdf74108b52513b1187a24fb301dbaed98b917ece7d73159db95d31d78ea50565cd5825a2d5a5f33c4b6d8c97590968c0f5298b5cd981f89205ff2a01ca31b9694dda9fd57e970e8266d71999b266e3850296c90a7bdd9") var testECDSACertificate = fromHex("3082020030820162020900b8bf2d47a0d2ebf4300906072a8648ce3d04013045310b3009060355040613024155311330110603550408130a536f6d652d53746174653121301f060355040a1318496e7465726e6574205769646769747320507479204c7464301e170d3132313132323135303633325a170d3232313132303135303633325a3045310b3009060355040613024155311330110603550408130a536f6d652d53746174653121301f060355040a1318496e7465726e6574205769646769747320507479204c746430819b301006072a8648ce3d020106052b81040023038186000400c4a1edbe98f90b4873367ec316561122f23d53c33b4d213dcd6b75e6f6b0dc9adf26c1bcb287f072327cb3642f1c90bcea6823107efee325c0483a69e0286dd33700ef0462dd0da09c706283d881d36431aa9e9731bd96b068c09b23de76643f1a5c7fe9120e5858b65f70dd9bd8ead5d7f5d5ccb9b69f30665b669a20e227e5bffe3b300906072a8648ce3d040103818c0030818802420188a24febe245c5487d1bacf5ed989dae4770c05e1bb62fbdf1b64db76140d311a2ceee0b7e927eff769dc33b7ea53fcefa10e259ec472d7cacda4e970e15a06fd00242014dfcbe67139c2d050ebd3fa38c25c13313830d9406bbd4377af6ec7ac9862eddd711697f857c56defb31782be4c7780daecbbe9e4e3624317b6a0f399512078f2a") var testSNICertificate = fromHex("308201f23082015da003020102020100300b06092a864886f70d01010530283110300e060355040a130741636d6520436f311430120603550403130b736e69746573742e636f6d301e170d3132303431313137343033355a170d3133303431313137343533355a30283110300e060355040a130741636d6520436f311430120603550403130b736e69746573742e636f6d30819d300b06092a864886f70d01010103818d0030818902818100bb79d6f517b5e5bf4610d0dc69bee62b07435ad0032d8a7a4385b71452e7a5654c2c78b8238cb5b482e5de1f953b7e62a52ca533d6fe125c7a56fcf506bffa587b263fb5cd04d3d0c921964ac7f4549f5abfef427100fe1899077f7e887d7df10439c4a22edb51c97ce3c04c3b326601cfafb11db8719a1ddbdb896baeda2d790203010001a3323030300e0603551d0f0101ff0404030200a0300d0603551d0e0406040401020304300f0603551d2304083006800401020304300b06092a864886f70d0101050381810089c6455f1c1f5ef8eb1ab174ee2439059f5c4259bb1a8d86cdb1d056f56a717da40e95ab90f59e8deaf627c157995094db0802266eb34fc6842dea8a4b68d9c1389103ab84fb9e1f85d9b5d23ff2312c8670fbb540148245a4ebafe264d90c8a4cf4f85b0fac12ac2fc4a3154bad52462868af96c62c6525d652b6e31845bdcc") var testRSAPrivateKey = &rsa.PrivateKey{ PublicKey: rsa.PublicKey{ N: bigFromString("131650079503776001033793877885499001334664249354723305978524647182322416328664556247316495448366990052837680518067798333412266673813370895702118944398081598789828837447552603077848001020611640547221687072142537202428102790818451901395596882588063427854225330436740647715202971973145151161964464812406232198521"), E: 65537, }, D: bigFromString("29354450337804273969007277378287027274721892607543397931919078829901848876371746653677097639302788129485893852488285045793268732234230875671682624082413996177431586734171663258657462237320300610850244186316880055243099640544518318093544057213190320837094958164973959123058337475052510833916491060913053867729"), Primes: []*big.Int{ bigFromString("11969277782311800166562047708379380720136961987713178380670422671426759650127150688426177829077494755200794297055316163155755835813760102405344560929062149"), bigFromString("10998999429884441391899182616418192492905073053684657075974935218461686523870125521822756579792315215543092255516093840728890783887287417039645833477273829"), }, } var testECDSAPrivateKey = &ecdsa.PrivateKey{ PublicKey: ecdsa.PublicKey{ Curve: elliptic.P521(), X: bigFromString("2636411247892461147287360222306590634450676461695221912739908880441342231985950069527906976759812296359387337367668045707086543273113073382714101597903639351"), Y: bigFromString("3204695818431246682253994090650952614555094516658732116404513121125038617915183037601737180082382202488628239201196033284060130040574800684774115478859677243"), }, D: bigFromString("5477294338614160138026852784385529180817726002953041720191098180813046231640184669647735805135001309477695746518160084669446643325196003346204701381388769751"), } go/src/pkg/crypto/tls/handshake_test.go0100644000000000000000000001035412412656737020510 0ustar00rootroot00000000000000// Copyright 2013 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 tls import ( "bufio" "encoding/hex" "errors" "flag" "fmt" "io" "io/ioutil" "net" "strconv" "strings" "sync" ) // TLS reference tests run a connection against a reference implementation // (OpenSSL) of TLS and record the bytes of the resulting connection. The Go // code, during a test, is configured with deterministic randomness and so the // reference test can be reproduced exactly in the future. // // In order to save everyone who wishes to run the tests from needing the // reference implementation installed, the reference connections are saved in // files in the testdata directory. Thus running the tests involves nothing // external, but creating and updating them requires the reference // implementation. // // Tests can be updated by running them with the -update flag. This will cause // the test files. Generally one should combine the -update flag with -test.run // to updated a specific test. Since the reference implementation will always // generate fresh random numbers, large parts of the reference connection will // always change. var update = flag.Bool("update", false, "update golden files on disk") // recordingConn is a net.Conn that records the traffic that passes through it. // WriteTo can be used to produce output that can be later be loaded with // ParseTestData. type recordingConn struct { net.Conn sync.Mutex flows [][]byte reading bool } func (r *recordingConn) Read(b []byte) (n int, err error) { if n, err = r.Conn.Read(b); n == 0 { return } b = b[:n] r.Lock() defer r.Unlock() if l := len(r.flows); l == 0 || !r.reading { buf := make([]byte, len(b)) copy(buf, b) r.flows = append(r.flows, buf) } else { r.flows[l-1] = append(r.flows[l-1], b[:n]...) } r.reading = true return } func (r *recordingConn) Write(b []byte) (n int, err error) { if n, err = r.Conn.Write(b); n == 0 { return } b = b[:n] r.Lock() defer r.Unlock() if l := len(r.flows); l == 0 || r.reading { buf := make([]byte, len(b)) copy(buf, b) r.flows = append(r.flows, buf) } else { r.flows[l-1] = append(r.flows[l-1], b[:n]...) } r.reading = false return } // WriteTo writes Go source code to w that contains the recorded traffic. func (r *recordingConn) WriteTo(w io.Writer) { // TLS always starts with a client to server flow. clientToServer := true for i, flow := range r.flows { source, dest := "client", "server" if !clientToServer { source, dest = dest, source } fmt.Fprintf(w, ">>> Flow %d (%s to %s)\n", i+1, source, dest) dumper := hex.Dumper(w) dumper.Write(flow) dumper.Close() clientToServer = !clientToServer } } func parseTestData(r io.Reader) (flows [][]byte, err error) { var currentFlow []byte scanner := bufio.NewScanner(r) for scanner.Scan() { line := scanner.Text() // If the line starts with ">>> " then it marks the beginning // of a new flow. if strings.HasPrefix(line, ">>> ") { if len(currentFlow) > 0 || len(flows) > 0 { flows = append(flows, currentFlow) currentFlow = nil } continue } // Otherwise the line is a line of hex dump that looks like: // 00000170 fc f5 06 bf (...) |.....X{&?......!| // (Some bytes have been omitted from the middle section.) if i := strings.IndexByte(line, ' '); i >= 0 { line = line[i:] } else { return nil, errors.New("invalid test data") } if i := strings.IndexByte(line, '|'); i >= 0 { line = line[:i] } else { return nil, errors.New("invalid test data") } hexBytes := strings.Fields(line) for _, hexByte := range hexBytes { val, err := strconv.ParseUint(hexByte, 16, 8) if err != nil { return nil, errors.New("invalid hex byte in test data: " + err.Error()) } currentFlow = append(currentFlow, byte(val)) } } if len(currentFlow) > 0 { flows = append(flows, currentFlow) } return flows, nil } // tempFile creates a temp file containing contents and returns its path. func tempFile(contents string) string { file, err := ioutil.TempFile("", "go-tls-test") if err != nil { panic("failed to create temp file: " + err.Error()) } path := file.Name() file.WriteString(contents) file.Close() return path } go/src/pkg/crypto/tls/key_agreement.go0100644000000000000000000003061212412656737020341 0ustar00rootroot00000000000000// 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. package tls import ( "crypto" "crypto/ecdsa" "crypto/elliptic" "crypto/md5" "crypto/rsa" "crypto/sha1" "crypto/sha256" "crypto/x509" "encoding/asn1" "errors" "io" "math/big" ) var errClientKeyExchange = errors.New("tls: invalid ClientKeyExchange message") var errServerKeyExchange = errors.New("tls: invalid ServerKeyExchange message") // rsaKeyAgreement implements the standard TLS key agreement where the client // encrypts the pre-master secret to the server's public key. type rsaKeyAgreement struct{} func (ka rsaKeyAgreement) generateServerKeyExchange(config *Config, cert *Certificate, clientHello *clientHelloMsg, hello *serverHelloMsg) (*serverKeyExchangeMsg, error) { return nil, nil } func (ka rsaKeyAgreement) processClientKeyExchange(config *Config, cert *Certificate, ckx *clientKeyExchangeMsg, version uint16) ([]byte, error) { preMasterSecret := make([]byte, 48) _, err := io.ReadFull(config.rand(), preMasterSecret[2:]) if err != nil { return nil, err } if len(ckx.ciphertext) < 2 { return nil, errClientKeyExchange } ciphertext := ckx.ciphertext if version != VersionSSL30 { ciphertextLen := int(ckx.ciphertext[0])<<8 | int(ckx.ciphertext[1]) if ciphertextLen != len(ckx.ciphertext)-2 { return nil, errClientKeyExchange } ciphertext = ckx.ciphertext[2:] } err = rsa.DecryptPKCS1v15SessionKey(config.rand(), cert.PrivateKey.(*rsa.PrivateKey), ciphertext, preMasterSecret) if err != nil { return nil, err } // We don't check the version number in the premaster secret. For one, // by checking it, we would leak information about the validity of the // encrypted pre-master secret. Secondly, it provides only a small // benefit against a downgrade attack and some implementations send the // wrong version anyway. See the discussion at the end of section // 7.4.7.1 of RFC 4346. return preMasterSecret, nil } func (ka rsaKeyAgreement) processServerKeyExchange(config *Config, clientHello *clientHelloMsg, serverHello *serverHelloMsg, cert *x509.Certificate, skx *serverKeyExchangeMsg) error { return errors.New("tls: unexpected ServerKeyExchange") } func (ka rsaKeyAgreement) generateClientKeyExchange(config *Config, clientHello *clientHelloMsg, cert *x509.Certificate) ([]byte, *clientKeyExchangeMsg, error) { preMasterSecret := make([]byte, 48) preMasterSecret[0] = byte(clientHello.vers >> 8) preMasterSecret[1] = byte(clientHello.vers) _, err := io.ReadFull(config.rand(), preMasterSecret[2:]) if err != nil { return nil, nil, err } encrypted, err := rsa.EncryptPKCS1v15(config.rand(), cert.PublicKey.(*rsa.PublicKey), preMasterSecret) if err != nil { return nil, nil, err } ckx := new(clientKeyExchangeMsg) ckx.ciphertext = make([]byte, len(encrypted)+2) ckx.ciphertext[0] = byte(len(encrypted) >> 8) ckx.ciphertext[1] = byte(len(encrypted)) copy(ckx.ciphertext[2:], encrypted) return preMasterSecret, ckx, nil } // sha1Hash calculates a SHA1 hash over the given byte slices. func sha1Hash(slices [][]byte) []byte { hsha1 := sha1.New() for _, slice := range slices { hsha1.Write(slice) } return hsha1.Sum(nil) } // md5SHA1Hash implements TLS 1.0's hybrid hash function which consists of the // concatenation of an MD5 and SHA1 hash. func md5SHA1Hash(slices [][]byte) []byte { md5sha1 := make([]byte, md5.Size+sha1.Size) hmd5 := md5.New() for _, slice := range slices { hmd5.Write(slice) } copy(md5sha1, hmd5.Sum(nil)) copy(md5sha1[md5.Size:], sha1Hash(slices)) return md5sha1 } // sha256Hash implements TLS 1.2's hash function. func sha256Hash(slices [][]byte) []byte { h := sha256.New() for _, slice := range slices { h.Write(slice) } return h.Sum(nil) } // hashForServerKeyExchange hashes the given slices and returns their digest // and the identifier of the hash function used. The hashFunc argument is only // used for >= TLS 1.2 and precisely identifies the hash function to use. func hashForServerKeyExchange(sigType, hashFunc uint8, version uint16, slices ...[]byte) ([]byte, crypto.Hash, error) { if version >= VersionTLS12 { switch hashFunc { case hashSHA256: return sha256Hash(slices), crypto.SHA256, nil case hashSHA1: return sha1Hash(slices), crypto.SHA1, nil default: return nil, crypto.Hash(0), errors.New("tls: unknown hash function used by peer") } } if sigType == signatureECDSA { return sha1Hash(slices), crypto.SHA1, nil } return md5SHA1Hash(slices), crypto.MD5SHA1, nil } // pickTLS12HashForSignature returns a TLS 1.2 hash identifier for signing a // ServerKeyExchange given the signature type being used and the client's // advertised list of supported signature and hash combinations. func pickTLS12HashForSignature(sigType uint8, clientSignatureAndHashes []signatureAndHash) (uint8, error) { if len(clientSignatureAndHashes) == 0 { // If the client didn't specify any signature_algorithms // extension then we can assume that it supports SHA1. See // http://tools.ietf.org/html/rfc5246#section-7.4.1.4.1 return hashSHA1, nil } for _, sigAndHash := range clientSignatureAndHashes { if sigAndHash.signature != sigType { continue } switch sigAndHash.hash { case hashSHA1, hashSHA256: return sigAndHash.hash, nil } } return 0, errors.New("tls: client doesn't support any common hash functions") } func curveForCurveID(id CurveID) (elliptic.Curve, bool) { switch id { case CurveP256: return elliptic.P256(), true case CurveP384: return elliptic.P384(), true case CurveP521: return elliptic.P521(), true default: return nil, false } } // ecdheRSAKeyAgreement implements a TLS key agreement where the server // generates a ephemeral EC public/private key pair and signs it. The // pre-master secret is then calculated using ECDH. The signature may // either be ECDSA or RSA. type ecdheKeyAgreement struct { version uint16 sigType uint8 privateKey []byte curve elliptic.Curve x, y *big.Int } func (ka *ecdheKeyAgreement) generateServerKeyExchange(config *Config, cert *Certificate, clientHello *clientHelloMsg, hello *serverHelloMsg) (*serverKeyExchangeMsg, error) { var curveid CurveID preferredCurves := config.curvePreferences() NextCandidate: for _, candidate := range preferredCurves { for _, c := range clientHello.supportedCurves { if candidate == c { curveid = c break NextCandidate } } } if curveid == 0 { return nil, errors.New("tls: no supported elliptic curves offered") } var ok bool if ka.curve, ok = curveForCurveID(curveid); !ok { return nil, errors.New("tls: preferredCurves includes unsupported curve") } var x, y *big.Int var err error ka.privateKey, x, y, err = elliptic.GenerateKey(ka.curve, config.rand()) if err != nil { return nil, err } ecdhePublic := elliptic.Marshal(ka.curve, x, y) // http://tools.ietf.org/html/rfc4492#section-5.4 serverECDHParams := make([]byte, 1+2+1+len(ecdhePublic)) serverECDHParams[0] = 3 // named curve serverECDHParams[1] = byte(curveid >> 8) serverECDHParams[2] = byte(curveid) serverECDHParams[3] = byte(len(ecdhePublic)) copy(serverECDHParams[4:], ecdhePublic) var tls12HashId uint8 if ka.version >= VersionTLS12 { if tls12HashId, err = pickTLS12HashForSignature(ka.sigType, clientHello.signatureAndHashes); err != nil { return nil, err } } digest, hashFunc, err := hashForServerKeyExchange(ka.sigType, tls12HashId, ka.version, clientHello.random, hello.random, serverECDHParams) if err != nil { return nil, err } var sig []byte switch ka.sigType { case signatureECDSA: privKey, ok := cert.PrivateKey.(*ecdsa.PrivateKey) if !ok { return nil, errors.New("ECDHE ECDSA requires an ECDSA server private key") } r, s, err := ecdsa.Sign(config.rand(), privKey, digest) if err != nil { return nil, errors.New("failed to sign ECDHE parameters: " + err.Error()) } sig, err = asn1.Marshal(ecdsaSignature{r, s}) case signatureRSA: privKey, ok := cert.PrivateKey.(*rsa.PrivateKey) if !ok { return nil, errors.New("ECDHE RSA requires a RSA server private key") } sig, err = rsa.SignPKCS1v15(config.rand(), privKey, hashFunc, digest) if err != nil { return nil, errors.New("failed to sign ECDHE parameters: " + err.Error()) } default: return nil, errors.New("unknown ECDHE signature algorithm") } skx := new(serverKeyExchangeMsg) sigAndHashLen := 0 if ka.version >= VersionTLS12 { sigAndHashLen = 2 } skx.key = make([]byte, len(serverECDHParams)+sigAndHashLen+2+len(sig)) copy(skx.key, serverECDHParams) k := skx.key[len(serverECDHParams):] if ka.version >= VersionTLS12 { k[0] = tls12HashId k[1] = ka.sigType k = k[2:] } k[0] = byte(len(sig) >> 8) k[1] = byte(len(sig)) copy(k[2:], sig) return skx, nil } func (ka *ecdheKeyAgreement) processClientKeyExchange(config *Config, cert *Certificate, ckx *clientKeyExchangeMsg, version uint16) ([]byte, error) { if len(ckx.ciphertext) == 0 || int(ckx.ciphertext[0]) != len(ckx.ciphertext)-1 { return nil, errClientKeyExchange } x, y := elliptic.Unmarshal(ka.curve, ckx.ciphertext[1:]) if x == nil { return nil, errClientKeyExchange } x, _ = ka.curve.ScalarMult(x, y, ka.privateKey) preMasterSecret := make([]byte, (ka.curve.Params().BitSize+7)>>3) xBytes := x.Bytes() copy(preMasterSecret[len(preMasterSecret)-len(xBytes):], xBytes) return preMasterSecret, nil } func (ka *ecdheKeyAgreement) processServerKeyExchange(config *Config, clientHello *clientHelloMsg, serverHello *serverHelloMsg, cert *x509.Certificate, skx *serverKeyExchangeMsg) error { if len(skx.key) < 4 { return errServerKeyExchange } if skx.key[0] != 3 { // named curve return errors.New("tls: server selected unsupported curve") } curveid := CurveID(skx.key[1])<<8 | CurveID(skx.key[2]) var ok bool if ka.curve, ok = curveForCurveID(curveid); !ok { return errors.New("tls: server selected unsupported curve") } publicLen := int(skx.key[3]) if publicLen+4 > len(skx.key) { return errServerKeyExchange } ka.x, ka.y = elliptic.Unmarshal(ka.curve, skx.key[4:4+publicLen]) if ka.x == nil { return errServerKeyExchange } serverECDHParams := skx.key[:4+publicLen] sig := skx.key[4+publicLen:] if len(sig) < 2 { return errServerKeyExchange } var tls12HashId uint8 if ka.version >= VersionTLS12 { // handle SignatureAndHashAlgorithm var sigAndHash []uint8 sigAndHash, sig = sig[:2], sig[2:] if sigAndHash[1] != ka.sigType { return errServerKeyExchange } tls12HashId = sigAndHash[0] if len(sig) < 2 { return errServerKeyExchange } } sigLen := int(sig[0])<<8 | int(sig[1]) if sigLen+2 != len(sig) { return errServerKeyExchange } sig = sig[2:] digest, hashFunc, err := hashForServerKeyExchange(ka.sigType, tls12HashId, ka.version, clientHello.random, serverHello.random, serverECDHParams) if err != nil { return err } switch ka.sigType { case signatureECDSA: pubKey, ok := cert.PublicKey.(*ecdsa.PublicKey) if !ok { return errors.New("ECDHE ECDSA requires a ECDSA server public key") } ecdsaSig := new(ecdsaSignature) if _, err := asn1.Unmarshal(sig, ecdsaSig); err != nil { return err } if ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0 { return errors.New("ECDSA signature contained zero or negative values") } if !ecdsa.Verify(pubKey, digest, ecdsaSig.R, ecdsaSig.S) { return errors.New("ECDSA verification failure") } case signatureRSA: pubKey, ok := cert.PublicKey.(*rsa.PublicKey) if !ok { return errors.New("ECDHE RSA requires a RSA server public key") } if err := rsa.VerifyPKCS1v15(pubKey, hashFunc, digest, sig); err != nil { return err } default: return errors.New("unknown ECDHE signature algorithm") } return nil } func (ka *ecdheKeyAgreement) generateClientKeyExchange(config *Config, clientHello *clientHelloMsg, cert *x509.Certificate) ([]byte, *clientKeyExchangeMsg, error) { if ka.curve == nil { return nil, nil, errors.New("missing ServerKeyExchange message") } priv, mx, my, err := elliptic.GenerateKey(ka.curve, config.rand()) if err != nil { return nil, nil, err } x, _ := ka.curve.ScalarMult(ka.x, ka.y, priv) preMasterSecret := make([]byte, (ka.curve.Params().BitSize+7)>>3) xBytes := x.Bytes() copy(preMasterSecret[len(preMasterSecret)-len(xBytes):], xBytes) serialized := elliptic.Marshal(ka.curve, mx, my) ckx := new(clientKeyExchangeMsg) ckx.ciphertext = make([]byte, 1+len(serialized)) ckx.ciphertext[0] = byte(len(serialized)) copy(ckx.ciphertext[1:], serialized) return preMasterSecret, ckx, nil } go/src/pkg/crypto/tls/prf.go0100644000000000000000000002030112412656737016303 0ustar00rootroot00000000000000// Copyright 2009 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 tls import ( "crypto" "crypto/hmac" "crypto/md5" "crypto/sha1" "crypto/sha256" "hash" ) // Split a premaster secret in two as specified in RFC 4346, section 5. func splitPreMasterSecret(secret []byte) (s1, s2 []byte) { s1 = secret[0 : (len(secret)+1)/2] s2 = secret[len(secret)/2:] return } // pHash implements the P_hash function, as defined in RFC 4346, section 5. func pHash(result, secret, seed []byte, hash func() hash.Hash) { h := hmac.New(hash, secret) h.Write(seed) a := h.Sum(nil) j := 0 for j < len(result) { h.Reset() h.Write(a) h.Write(seed) b := h.Sum(nil) todo := len(b) if j+todo > len(result) { todo = len(result) - j } copy(result[j:j+todo], b) j += todo h.Reset() h.Write(a) a = h.Sum(nil) } } // prf10 implements the TLS 1.0 pseudo-random function, as defined in RFC 2246, section 5. func prf10(result, secret, label, seed []byte) { hashSHA1 := sha1.New hashMD5 := md5.New labelAndSeed := make([]byte, len(label)+len(seed)) copy(labelAndSeed, label) copy(labelAndSeed[len(label):], seed) s1, s2 := splitPreMasterSecret(secret) pHash(result, s1, labelAndSeed, hashMD5) result2 := make([]byte, len(result)) pHash(result2, s2, labelAndSeed, hashSHA1) for i, b := range result2 { result[i] ^= b } } // prf12 implements the TLS 1.2 pseudo-random function, as defined in RFC 5246, section 5. func prf12(result, secret, label, seed []byte) { labelAndSeed := make([]byte, len(label)+len(seed)) copy(labelAndSeed, label) copy(labelAndSeed[len(label):], seed) pHash(result, secret, labelAndSeed, sha256.New) } // prf30 implements the SSL 3.0 pseudo-random function, as defined in // www.mozilla.org/projects/security/pki/nss/ssl/draft302.txt section 6. func prf30(result, secret, label, seed []byte) { hashSHA1 := sha1.New() hashMD5 := md5.New() done := 0 i := 0 // RFC5246 section 6.3 says that the largest PRF output needed is 128 // bytes. Since no more ciphersuites will be added to SSLv3, this will // remain true. Each iteration gives us 16 bytes so 10 iterations will // be sufficient. var b [11]byte for done < len(result) { for j := 0; j <= i; j++ { b[j] = 'A' + byte(i) } hashSHA1.Reset() hashSHA1.Write(b[:i+1]) hashSHA1.Write(secret) hashSHA1.Write(seed) digest := hashSHA1.Sum(nil) hashMD5.Reset() hashMD5.Write(secret) hashMD5.Write(digest) done += copy(result[done:], hashMD5.Sum(nil)) i++ } } const ( tlsRandomLength = 32 // Length of a random nonce in TLS 1.1. masterSecretLength = 48 // Length of a master secret in TLS 1.1. finishedVerifyLength = 12 // Length of verify_data in a Finished message. ) var masterSecretLabel = []byte("master secret") var keyExpansionLabel = []byte("key expansion") var clientFinishedLabel = []byte("client finished") var serverFinishedLabel = []byte("server finished") func prfForVersion(version uint16) func(result, secret, label, seed []byte) { switch version { case VersionSSL30: return prf30 case VersionTLS10, VersionTLS11: return prf10 case VersionTLS12: return prf12 default: panic("unknown version") } } // masterFromPreMasterSecret generates the master secret from the pre-master // secret. See http://tools.ietf.org/html/rfc5246#section-8.1 func masterFromPreMasterSecret(version uint16, preMasterSecret, clientRandom, serverRandom []byte) []byte { var seed [tlsRandomLength * 2]byte copy(seed[0:len(clientRandom)], clientRandom) copy(seed[len(clientRandom):], serverRandom) masterSecret := make([]byte, masterSecretLength) prfForVersion(version)(masterSecret, preMasterSecret, masterSecretLabel, seed[0:]) return masterSecret } // keysFromMasterSecret generates the connection keys from the master // secret, given the lengths of the MAC key, cipher key and IV, as defined in // RFC 2246, section 6.3. func keysFromMasterSecret(version uint16, masterSecret, clientRandom, serverRandom []byte, macLen, keyLen, ivLen int) (clientMAC, serverMAC, clientKey, serverKey, clientIV, serverIV []byte) { var seed [tlsRandomLength * 2]byte copy(seed[0:len(clientRandom)], serverRandom) copy(seed[len(serverRandom):], clientRandom) n := 2*macLen + 2*keyLen + 2*ivLen keyMaterial := make([]byte, n) prfForVersion(version)(keyMaterial, masterSecret, keyExpansionLabel, seed[0:]) clientMAC = keyMaterial[:macLen] keyMaterial = keyMaterial[macLen:] serverMAC = keyMaterial[:macLen] keyMaterial = keyMaterial[macLen:] clientKey = keyMaterial[:keyLen] keyMaterial = keyMaterial[keyLen:] serverKey = keyMaterial[:keyLen] keyMaterial = keyMaterial[keyLen:] clientIV = keyMaterial[:ivLen] keyMaterial = keyMaterial[ivLen:] serverIV = keyMaterial[:ivLen] return } func newFinishedHash(version uint16) finishedHash { if version >= VersionTLS12 { return finishedHash{sha256.New(), sha256.New(), nil, nil, version} } return finishedHash{sha1.New(), sha1.New(), md5.New(), md5.New(), version} } // A finishedHash calculates the hash of a set of handshake messages suitable // for including in a Finished message. type finishedHash struct { client hash.Hash server hash.Hash // Prior to TLS 1.2, an additional MD5 hash is required. clientMD5 hash.Hash serverMD5 hash.Hash version uint16 } func (h finishedHash) Write(msg []byte) (n int, err error) { h.client.Write(msg) h.server.Write(msg) if h.version < VersionTLS12 { h.clientMD5.Write(msg) h.serverMD5.Write(msg) } return len(msg), nil } // finishedSum30 calculates the contents of the verify_data member of a SSLv3 // Finished message given the MD5 and SHA1 hashes of a set of handshake // messages. func finishedSum30(md5, sha1 hash.Hash, masterSecret []byte, magic [4]byte) []byte { md5.Write(magic[:]) md5.Write(masterSecret) md5.Write(ssl30Pad1[:]) md5Digest := md5.Sum(nil) md5.Reset() md5.Write(masterSecret) md5.Write(ssl30Pad2[:]) md5.Write(md5Digest) md5Digest = md5.Sum(nil) sha1.Write(magic[:]) sha1.Write(masterSecret) sha1.Write(ssl30Pad1[:40]) sha1Digest := sha1.Sum(nil) sha1.Reset() sha1.Write(masterSecret) sha1.Write(ssl30Pad2[:40]) sha1.Write(sha1Digest) sha1Digest = sha1.Sum(nil) ret := make([]byte, len(md5Digest)+len(sha1Digest)) copy(ret, md5Digest) copy(ret[len(md5Digest):], sha1Digest) return ret } var ssl3ClientFinishedMagic = [4]byte{0x43, 0x4c, 0x4e, 0x54} var ssl3ServerFinishedMagic = [4]byte{0x53, 0x52, 0x56, 0x52} // clientSum returns the contents of the verify_data member of a client's // Finished message. func (h finishedHash) clientSum(masterSecret []byte) []byte { if h.version == VersionSSL30 { return finishedSum30(h.clientMD5, h.client, masterSecret, ssl3ClientFinishedMagic) } out := make([]byte, finishedVerifyLength) if h.version >= VersionTLS12 { seed := h.client.Sum(nil) prf12(out, masterSecret, clientFinishedLabel, seed) } else { seed := make([]byte, 0, md5.Size+sha1.Size) seed = h.clientMD5.Sum(seed) seed = h.client.Sum(seed) prf10(out, masterSecret, clientFinishedLabel, seed) } return out } // serverSum returns the contents of the verify_data member of a server's // Finished message. func (h finishedHash) serverSum(masterSecret []byte) []byte { if h.version == VersionSSL30 { return finishedSum30(h.serverMD5, h.server, masterSecret, ssl3ServerFinishedMagic) } out := make([]byte, finishedVerifyLength) if h.version >= VersionTLS12 { seed := h.server.Sum(nil) prf12(out, masterSecret, serverFinishedLabel, seed) } else { seed := make([]byte, 0, md5.Size+sha1.Size) seed = h.serverMD5.Sum(seed) seed = h.server.Sum(seed) prf10(out, masterSecret, serverFinishedLabel, seed) } return out } // hashForClientCertificate returns a digest, hash function, and TLS 1.2 hash // id suitable for signing by a TLS client certificate. func (h finishedHash) hashForClientCertificate(sigType uint8) ([]byte, crypto.Hash, uint8) { if h.version >= VersionTLS12 { digest := h.server.Sum(nil) return digest, crypto.SHA256, hashSHA256 } if sigType == signatureECDSA { digest := h.server.Sum(nil) return digest, crypto.SHA1, hashSHA1 } digest := make([]byte, 0, 36) digest = h.serverMD5.Sum(digest) digest = h.server.Sum(digest) return digest, crypto.MD5SHA1, 0 /* not specified in TLS 1.2. */ } go/src/pkg/crypto/tls/prf_test.go0100644000000000000000000001161612412656737017353 0ustar00rootroot00000000000000// Copyright 2009 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 tls import ( "encoding/hex" "testing" ) type testSplitPreMasterSecretTest struct { in, out1, out2 string } var testSplitPreMasterSecretTests = []testSplitPreMasterSecretTest{ {"", "", ""}, {"00", "00", "00"}, {"0011", "00", "11"}, {"001122", "0011", "1122"}, {"00112233", "0011", "2233"}, } func TestSplitPreMasterSecret(t *testing.T) { for i, test := range testSplitPreMasterSecretTests { in, _ := hex.DecodeString(test.in) out1, out2 := splitPreMasterSecret(in) s1 := hex.EncodeToString(out1) s2 := hex.EncodeToString(out2) if s1 != test.out1 || s2 != test.out2 { t.Errorf("#%d: got: (%s, %s) want: (%s, %s)", i, s1, s2, test.out1, test.out2) } } } type testKeysFromTest struct { version uint16 preMasterSecret string clientRandom, serverRandom string masterSecret string clientMAC, serverMAC string clientKey, serverKey string macLen, keyLen int } func TestKeysFromPreMasterSecret(t *testing.T) { for i, test := range testKeysFromTests { in, _ := hex.DecodeString(test.preMasterSecret) clientRandom, _ := hex.DecodeString(test.clientRandom) serverRandom, _ := hex.DecodeString(test.serverRandom) masterSecret := masterFromPreMasterSecret(test.version, in, clientRandom, serverRandom) if s := hex.EncodeToString(masterSecret); s != test.masterSecret { t.Errorf("#%d: bad master secret %s, want %s", i, s, test.masterSecret) continue } clientMAC, serverMAC, clientKey, serverKey, _, _ := keysFromMasterSecret(test.version, masterSecret, clientRandom, serverRandom, test.macLen, test.keyLen, 0) clientMACString := hex.EncodeToString(clientMAC) serverMACString := hex.EncodeToString(serverMAC) clientKeyString := hex.EncodeToString(clientKey) serverKeyString := hex.EncodeToString(serverKey) if clientMACString != test.clientMAC || serverMACString != test.serverMAC || clientKeyString != test.clientKey || serverKeyString != test.serverKey { t.Errorf("#%d: got: (%s, %s, %s, %s) want: (%s, %s, %s, %s)", i, clientMACString, serverMACString, clientKeyString, serverKeyString, test.clientMAC, test.serverMAC, test.clientKey, test.serverKey) } } } // These test vectors were generated from GnuTLS using `gnutls-cli --insecure -d 9 ` var testKeysFromTests = []testKeysFromTest{ { VersionTLS10, "0302cac83ad4b1db3b9ab49ad05957de2a504a634a386fc600889321e1a971f57479466830ac3e6f468e87f5385fa0c5", "4ae66303755184a3917fcb44880605fcc53baa01912b22ed94473fc69cebd558", "4ae663020ec16e6bb5130be918cfcafd4d765979a3136a5d50c593446e4e44db", "3d851bab6e5556e959a16bc36d66cfae32f672bfa9ecdef6096cbb1b23472df1da63dbbd9827606413221d149ed08ceb", "805aaa19b3d2c0a0759a4b6c9959890e08480119", "2d22f9fe519c075c16448305ceee209fc24ad109", "d50b5771244f850cd8117a9ccafe2cf1", "e076e33206b30507a85c32855acd0919", 20, 16, }, { VersionTLS10, "03023f7527316bc12cbcd69e4b9e8275d62c028f27e65c745cfcddc7ce01bd3570a111378b63848127f1c36e5f9e4890", "4ae66364b5ea56b20ce4e25555aed2d7e67f42788dd03f3fee4adae0459ab106", "4ae66363ab815cbf6a248b87d6b556184e945e9b97fbdf247858b0bdafacfa1c", "7d64be7c80c59b740200b4b9c26d0baaa1c5ae56705acbcf2307fe62beb4728c19392c83f20483801cce022c77645460", "97742ed60a0554ca13f04f97ee193177b971e3b0", "37068751700400e03a8477a5c7eec0813ab9e0dc", "207cddbc600d2a200abac6502053ee5c", "df3f94f6e1eacc753b815fe16055cd43", 20, 16, }, { VersionTLS10, "832d515f1d61eebb2be56ba0ef79879efb9b527504abb386fb4310ed5d0e3b1f220d3bb6b455033a2773e6d8bdf951d278a187482b400d45deb88a5d5a6bb7d6a7a1decc04eb9ef0642876cd4a82d374d3b6ff35f0351dc5d411104de431375355addc39bfb1f6329fb163b0bc298d658338930d07d313cd980a7e3d9196cac1", "4ae663b2ee389c0de147c509d8f18f5052afc4aaf9699efe8cb05ece883d3a5e", "4ae664d503fd4cff50cfc1fb8fc606580f87b0fcdac9554ba0e01d785bdf278e", "1aff2e7a2c4279d0126f57a65a77a8d9d0087cf2733366699bec27eb53d5740705a8574bb1acc2abbe90e44f0dd28d6c", "3c7647c93c1379a31a609542aa44e7f117a70085", "0d73102994be74a575a3ead8532590ca32a526d4", "ac7581b0b6c10d85bbd905ffbf36c65e", "ff07edde49682b45466bd2e39464b306", 20, 16, }, { VersionSSL30, "832d515f1d61eebb2be56ba0ef79879efb9b527504abb386fb4310ed5d0e3b1f220d3bb6b455033a2773e6d8bdf951d278a187482b400d45deb88a5d5a6bb7d6a7a1decc04eb9ef0642876cd4a82d374d3b6ff35f0351dc5d411104de431375355addc39bfb1f6329fb163b0bc298d658338930d07d313cd980a7e3d9196cac1", "4ae663b2ee389c0de147c509d8f18f5052afc4aaf9699efe8cb05ece883d3a5e", "4ae664d503fd4cff50cfc1fb8fc606580f87b0fcdac9554ba0e01d785bdf278e", "a614863e56299dcffeea2938f22c2ba023768dbe4b3f6877bc9c346c6ae529b51d9cb87ff9695ea4d01f2205584405b2", "2c450d5b6f6e2013ac6bea6a0b32200d4e1ffb94", "7a7a7438769536f2fb1ae49a61f0703b79b2dc53", "f8f6b26c10f12855c9aafb1e0e839ccf", "2b9d4b4a60cb7f396780ebff50650419", 20, 16, }, } go/src/pkg/crypto/tls/testdata0040755000000000000000000000000012412656737016726 5ustar00rootroot00000000000000go/src/pkg/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-ECDSA0100644000000000000000000002330612412656737024622 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 01 00 59 02 00 00 55 03 01 53 04 f1 03 46 |....Y...U..S...F| 00000010 0f 84 c4 cb 55 ef 85 f6 4f d7 0e e1 4b 10 d4 bb |....U...O...K...| 00000020 35 87 2d f3 d7 18 ec 4e 95 4b f4 20 28 82 94 d9 |5.-....N.K. (...| 00000030 df c4 fc ee 21 23 c1 e2 76 3e 7b 09 af 2c 39 23 |....!#..v>{..,9#| 00000040 f8 46 6c 31 88 42 f0 79 de 37 2b 00 c0 09 00 00 |.Fl1.B.y.7+.....| 00000050 0d ff 01 00 01 00 00 0b 00 04 03 00 01 02 16 03 |................| 00000060 01 02 0e 0b 00 02 0a 00 02 07 00 02 04 30 82 02 |.............0..| 00000070 00 30 82 01 62 02 09 00 b8 bf 2d 47 a0 d2 eb f4 |.0..b.....-G....| 00000080 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 0b 30 |0...*.H.=..0E1.0| 00000090 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 |...U....AU1.0...| 000000a0 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 |U....Some-State1| 000000b0 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e |!0...U....Intern| 000000c0 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c |et Widgits Pty L| 000000d0 74 64 30 1e 17 0d 31 32 31 31 32 32 31 35 30 36 |td0...1211221506| 000000e0 33 32 5a 17 0d 32 32 31 31 32 30 31 35 30 36 33 |32Z..22112015063| 000000f0 32 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 41 |2Z0E1.0...U....A| 00000100 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d 65 |U1.0...U....Some| 00000110 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a 13 |-State1!0...U...| 00000120 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 74 |.Internet Widgit| 00000130 73 20 50 74 79 20 4c 74 64 30 81 9b 30 10 06 07 |s Pty Ltd0..0...| 00000140 2a 86 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 |*.H.=....+...#..| 00000150 86 00 04 00 c4 a1 ed be 98 f9 0b 48 73 36 7e c3 |...........Hs6~.| 00000160 16 56 11 22 f2 3d 53 c3 3b 4d 21 3d cd 6b 75 e6 |.V.".=S.;M!=.ku.| 00000170 f6 b0 dc 9a df 26 c1 bc b2 87 f0 72 32 7c b3 64 |.....&.....r2|.d| 00000180 2f 1c 90 bc ea 68 23 10 7e fe e3 25 c0 48 3a 69 |/....h#.~..%.H:i| 00000190 e0 28 6d d3 37 00 ef 04 62 dd 0d a0 9c 70 62 83 |.(m.7...b....pb.| 000001a0 d8 81 d3 64 31 aa 9e 97 31 bd 96 b0 68 c0 9b 23 |...d1...1...h..#| 000001b0 de 76 64 3f 1a 5c 7f e9 12 0e 58 58 b6 5f 70 dd |.vd?.\....XX._p.| 000001c0 9b d8 ea d5 d7 f5 d5 cc b9 b6 9f 30 66 5b 66 9a |...........0f[f.| 000001d0 20 e2 27 e5 bf fe 3b 30 09 06 07 2a 86 48 ce 3d | .'...;0...*.H.=| 000001e0 04 01 03 81 8c 00 30 81 88 02 42 01 88 a2 4f eb |......0...B...O.| 000001f0 e2 45 c5 48 7d 1b ac f5 ed 98 9d ae 47 70 c0 5e |.E.H}.......Gp.^| 00000200 1b b6 2f bd f1 b6 4d b7 61 40 d3 11 a2 ce ee 0b |../...M.a@......| 00000210 7e 92 7e ff 76 9d c3 3b 7e a5 3f ce fa 10 e2 59 |~.~.v..;~.?....Y| 00000220 ec 47 2d 7c ac da 4e 97 0e 15 a0 6f d0 02 42 01 |.G-|..N....o..B.| 00000230 4d fc be 67 13 9c 2d 05 0e bd 3f a3 8c 25 c1 33 |M..g..-...?..%.3| 00000240 13 83 0d 94 06 bb d4 37 7a f6 ec 7a c9 86 2e dd |.......7z..z....| 00000250 d7 11 69 7f 85 7c 56 de fb 31 78 2b e4 c7 78 0d |..i..|V..1x+..x.| 00000260 ae cb be 9e 4e 36 24 31 7b 6a 0f 39 95 12 07 8f |....N6$1{j.9....| 00000270 2a 16 03 01 00 d5 0c 00 00 d1 03 00 17 41 04 4f |*............A.O| 00000280 47 16 72 98 9e 9f 2e 8e 78 e9 0f fe 95 83 7b aa |G.r.....x.....{.| 00000290 e5 3d c0 7d cf 83 bd 22 0b fd 48 f1 a7 49 a5 7d |.=.}..."..H..I.}| 000002a0 8e 0c 83 7f e1 2d 71 03 cc 90 09 ab f7 35 81 48 |.....-q......5.H| 000002b0 a4 1e 7d 87 21 23 12 58 2c 47 f3 af c7 6c 71 00 |..}.!#.X,G...lq.| 000002c0 8a 30 81 87 02 42 00 b4 03 38 60 43 d9 32 ef 64 |.0...B...8`C.2.d| 000002d0 5a 9c 91 95 0d 10 21 53 c7 78 f8 bf 50 ed 13 5d |Z.....!S.x..P..]| 000002e0 c3 e7 71 d6 11 04 f1 e4 9d ce 17 99 8d 1a 87 1f |..q.............| 000002f0 cb dd f8 1b ae cd bc 4a 77 ab 7c 50 bf 73 c3 ea |.......Jw.|P.s..| 00000300 d6 df 88 56 f6 b1 03 83 02 41 66 3d fb 4e 7e af |...V.....Af=.N~.| 00000310 4e c1 60 fe 09 fa 7e 74 99 66 7f de b4 b2 74 89 |N.`...~t.f....t.| 00000320 1c a4 cf 74 1a 55 a5 be 74 f9 36 21 3d ae c8 c3 |...t.U..t.6!=...| 00000330 24 8e ad db a3 26 67 8f 98 27 e3 93 ee d9 5c fb |$....&g..'....\.| 00000340 85 82 e2 13 c3 50 ab e9 f6 39 2b 16 03 01 00 0e |.....P...9+.....| 00000350 0d 00 00 06 03 01 02 40 00 00 0e 00 00 00 |.......@......| >>> Flow 3 (client to server) 00000000 16 03 01 02 0a 0b 00 02 06 00 02 03 00 02 00 30 |...............0| 00000010 82 01 fc 30 82 01 5e 02 09 00 9a 30 84 6c 26 35 |...0..^....0.l&5| 00000020 d9 17 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 |..0...*.H.=..0E1| 00000030 0b 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 |.0...U....AU1.0.| 00000040 06 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 |..U....Some-Stat| 00000050 65 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 |e1!0...U....Inte| 00000060 72 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 |rnet Widgits Pty| 00000070 20 4c 74 64 30 1e 17 0d 31 32 31 31 31 34 31 33 | Ltd0...12111413| 00000080 32 35 35 33 5a 17 0d 32 32 31 31 31 32 31 33 32 |2553Z..221112132| 00000090 35 35 33 5a 30 41 31 0b 30 09 06 03 55 04 06 13 |553Z0A1.0...U...| 000000a0 02 41 55 31 0c 30 0a 06 03 55 04 08 13 03 4e 53 |.AU1.0...U....NS| 000000b0 57 31 10 30 0e 06 03 55 04 07 13 07 50 79 72 6d |W1.0...U....Pyrm| 000000c0 6f 6e 74 31 12 30 10 06 03 55 04 03 13 09 4a 6f |ont1.0...U....Jo| 000000d0 65 6c 20 53 69 6e 67 30 81 9b 30 10 06 07 2a 86 |el Sing0..0...*.| 000000e0 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 86 00 |H.=....+...#....| 000000f0 04 00 95 8c 91 75 14 c0 5e c4 57 b4 d4 c3 6f 8d |.....u..^.W...o.| 00000100 ae 68 1e dd 6f ce 86 e1 7e 6e b2 48 3e 81 e5 4e |.h..o...~n.H>..N| 00000110 e2 c6 88 4b 64 dc f5 30 bb d3 ff 65 cc 5b f4 dd |...Kd..0...e.[..| 00000120 b5 6a 3e 3e d0 1d de 47 c3 76 ad 19 f6 45 2c 8c |.j>>...G.v...E,.| 00000130 bc d8 1d 01 4c 1f 70 90 46 76 48 8b 8f 83 cc 4a |....L.p.FvH....J| 00000140 5c 8f 40 76 da e0 89 ec 1d 2b c4 4e 30 76 28 41 |\.@v.....+.N0v(A| 00000150 b2 62 a8 fb 5b f1 f9 4e 7a 8d bd 09 b8 ae ea 8b |.b..[..Nz.......| 00000160 18 27 4f 2e 70 fe 13 96 ba c3 d3 40 16 cd 65 4e |.'O.p......@..eN| 00000170 ac 11 1e e6 f1 30 09 06 07 2a 86 48 ce 3d 04 01 |.....0...*.H.=..| 00000180 03 81 8c 00 30 81 88 02 42 00 e0 14 c4 60 60 0b |....0...B....``.| 00000190 72 68 b0 32 5d 61 4a 02 74 5c c2 81 b9 16 a8 3f |rh.2]aJ.t\.....?| 000001a0 29 c8 36 c7 81 ff 6c b6 5b d9 70 f1 38 3b 50 48 |).6...l.[.p.8;PH| 000001b0 28 94 cb 09 1a 52 f1 5d ee 8d f2 b9 f0 f0 da d9 |(....R.]........| 000001c0 15 3a f9 bd 03 7a 87 a2 23 35 ec 02 42 01 a3 d4 |.:...z..#5..B...| 000001d0 8a 78 35 1c 4a 9a 23 d2 0a be 2b 10 31 9d 9c 5f |.x5.J.#...+.1.._| 000001e0 be e8 91 b3 da 1a f5 5d a3 23 f5 26 8b 45 70 8d |.......].#.&.Ep.| 000001f0 65 62 9b 7e 01 99 3d 18 f6 10 9a 38 61 9b 2e 57 |eb.~..=....8a..W| 00000200 e4 fa cc b1 8a ce e2 23 a0 87 f0 e1 67 51 eb 16 |.......#....gQ..| 00000210 03 01 00 46 10 00 00 42 41 04 1e 18 37 ef 0d 19 |...F...BA...7...| 00000220 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd a7 |Q.5uq..T[....g..| 00000230 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e f1 |$ >.V...(^.+-O..| 00000240 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 a6 |..lK[.V.2B.X..I.| 00000250 b5 68 1a 41 03 56 6b dc 5a 89 16 03 01 00 90 0f |.h.A.Vk.Z.......| 00000260 00 00 8c 00 8a 30 81 87 02 42 00 c6 85 8e 06 b7 |.....0...B......| 00000270 04 04 e9 cd 9e 3e cb 66 23 95 b4 42 9c 64 81 39 |.....>.f#..B.d.9| 00000280 05 3f b5 21 f8 28 af 60 6b 4d 3d ba a1 4b 5e 77 |.?.!.(.`kM=..K^w| 00000290 ef e7 59 28 fe 1d c1 27 a2 ff a8 de 33 48 b3 c1 |..Y(...'....3H..| 000002a0 85 6a 42 9b f9 7e 7e 31 c2 e5 bd 66 02 41 4b 49 |.jB..~~1...f.AKI| 000002b0 c6 cd 02 e3 83 f7 03 50 18 6d b4 c9 51 02 c0 ab |.......P.m..Q...| 000002c0 87 bc e0 3e 4b 89 53 3a e2 65 89 97 02 c1 87 f1 |...>K.S:.e......| 000002d0 67 d0 f2 06 28 4e 51 4e fd f0 01 be 41 3c 52 42 |g...(NQN....AD$..w.wo...| 000002f0 03 01 00 01 01 16 03 01 00 30 a3 da 45 22 96 83 |.........0..E"..| 00000300 59 90 e9 6b ec 3b 77 50 05 89 e6 0c 61 d1 1d 2b |Y..k.;wP....a..+| 00000310 da d4 49 bf b9 c6 dd ad c3 9c 82 bd 53 62 e8 57 |..I.........Sb.W| 00000320 a4 6a e7 9f b1 d5 39 77 88 6d |.j....9w.m| >>> Flow 4 (server to client) 00000000 14 03 01 00 01 01 16 03 01 00 30 a4 45 dd 99 df |..........0.E...| 00000010 66 ae f5 c7 bd 1a eb 6a ff ac a6 38 14 81 b5 07 |f......j...8....| 00000020 86 24 80 f1 09 59 ad 33 3d 43 ed 9e 43 b1 1e 9f |.$...Y.3=C..C...| 00000030 bd 8c b3 e0 41 83 a1 34 91 c5 a1 |....A..4...| >>> Flow 5 (client to server) 00000000 17 03 01 00 20 ae e3 ae 7f 2d e3 a2 f7 1b 4e 69 |.... ....-....Ni| 00000010 cb 18 c6 68 42 f8 de 61 92 4c fa d6 19 7c 8c 09 |...hB..a.L...|..| 00000020 82 e2 f2 32 19 17 03 01 00 20 2a 77 65 1f c1 fd |...2..... *we...| 00000030 5e 37 b7 15 f6 1f 4c 7f 5f 89 52 b4 32 27 4d 17 |^7....L._.R.2'M.| 00000040 33 c6 e8 50 ac 70 c8 b9 2d 0a 15 03 01 00 20 e0 |3..P.p..-..... .| 00000050 cb ce 07 80 55 a0 46 ca a7 25 4c 5f 9d 7c 73 37 |....U.F..%L_.|s7| 00000060 de 72 6d 36 a8 e4 be fd 2a e7 f8 8d 14 80 b7 |.rm6....*......| go/src/pkg/crypto/tls/testdata/Client-TLSv10-ClientCert-ECDSA-RSA0100644000000000000000000002261312412656737024430 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 01 00 51 02 00 00 4d 03 01 53 04 f1 02 ed |....Q...M..S....| 00000010 86 9c 56 84 5a d3 7d d7 f3 4e 6f 2c 69 0d f0 59 |..V.Z.}..No,i..Y| 00000020 a5 d1 de 2d 03 2f dd 63 c3 ab fa 20 30 d6 5a 24 |...-./.c... 0.Z$| 00000030 5c 31 67 36 8d 4c 43 e1 64 c4 8a 2c a5 fd 39 92 |\1g6.LC.d..,..9.| 00000040 c5 6f 58 47 a3 fe 63 14 98 92 11 90 00 05 00 00 |.oXG..c.........| 00000050 05 ff 01 00 01 00 16 03 01 02 be 0b 00 02 ba 00 |................| 00000060 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000070 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000080 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000090 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 000000a0 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 000000b0 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000c0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000d0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000e0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000f0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 00000100 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 00000110 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000120 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000130 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000140 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000150 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000160 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000170 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000180 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000190 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 000001a0 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 000001b0 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001c0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001d0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001e0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001f0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 00000200 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 00000210 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000220 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000230 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000240 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000250 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000260 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000270 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000280 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000290 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 000002a0 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 000002b0 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002c0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002d0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002e0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002f0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 00000300 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 00000310 6e 38 50 29 6c 90 a7 bd d9 16 03 01 00 0e 0d 00 |n8P)l...........| 00000320 00 06 03 01 02 40 00 00 0e 00 00 00 |.....@......| >>> Flow 3 (client to server) 00000000 16 03 01 02 0a 0b 00 02 06 00 02 03 00 02 00 30 |...............0| 00000010 82 01 fc 30 82 01 5e 02 09 00 9a 30 84 6c 26 35 |...0..^....0.l&5| 00000020 d9 17 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 |..0...*.H.=..0E1| 00000030 0b 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 |.0...U....AU1.0.| 00000040 06 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 |..U....Some-Stat| 00000050 65 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 |e1!0...U....Inte| 00000060 72 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 |rnet Widgits Pty| 00000070 20 4c 74 64 30 1e 17 0d 31 32 31 31 31 34 31 33 | Ltd0...12111413| 00000080 32 35 35 33 5a 17 0d 32 32 31 31 31 32 31 33 32 |2553Z..221112132| 00000090 35 35 33 5a 30 41 31 0b 30 09 06 03 55 04 06 13 |553Z0A1.0...U...| 000000a0 02 41 55 31 0c 30 0a 06 03 55 04 08 13 03 4e 53 |.AU1.0...U....NS| 000000b0 57 31 10 30 0e 06 03 55 04 07 13 07 50 79 72 6d |W1.0...U....Pyrm| 000000c0 6f 6e 74 31 12 30 10 06 03 55 04 03 13 09 4a 6f |ont1.0...U....Jo| 000000d0 65 6c 20 53 69 6e 67 30 81 9b 30 10 06 07 2a 86 |el Sing0..0...*.| 000000e0 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 86 00 |H.=....+...#....| 000000f0 04 00 95 8c 91 75 14 c0 5e c4 57 b4 d4 c3 6f 8d |.....u..^.W...o.| 00000100 ae 68 1e dd 6f ce 86 e1 7e 6e b2 48 3e 81 e5 4e |.h..o...~n.H>..N| 00000110 e2 c6 88 4b 64 dc f5 30 bb d3 ff 65 cc 5b f4 dd |...Kd..0...e.[..| 00000120 b5 6a 3e 3e d0 1d de 47 c3 76 ad 19 f6 45 2c 8c |.j>>...G.v...E,.| 00000130 bc d8 1d 01 4c 1f 70 90 46 76 48 8b 8f 83 cc 4a |....L.p.FvH....J| 00000140 5c 8f 40 76 da e0 89 ec 1d 2b c4 4e 30 76 28 41 |\.@v.....+.N0v(A| 00000150 b2 62 a8 fb 5b f1 f9 4e 7a 8d bd 09 b8 ae ea 8b |.b..[..Nz.......| 00000160 18 27 4f 2e 70 fe 13 96 ba c3 d3 40 16 cd 65 4e |.'O.p......@..eN| 00000170 ac 11 1e e6 f1 30 09 06 07 2a 86 48 ce 3d 04 01 |.....0...*.H.=..| 00000180 03 81 8c 00 30 81 88 02 42 00 e0 14 c4 60 60 0b |....0...B....``.| 00000190 72 68 b0 32 5d 61 4a 02 74 5c c2 81 b9 16 a8 3f |rh.2]aJ.t\.....?| 000001a0 29 c8 36 c7 81 ff 6c b6 5b d9 70 f1 38 3b 50 48 |).6...l.[.p.8;PH| 000001b0 28 94 cb 09 1a 52 f1 5d ee 8d f2 b9 f0 f0 da d9 |(....R.]........| 000001c0 15 3a f9 bd 03 7a 87 a2 23 35 ec 02 42 01 a3 d4 |.:...z..#5..B...| 000001d0 8a 78 35 1c 4a 9a 23 d2 0a be 2b 10 31 9d 9c 5f |.x5.J.#...+.1.._| 000001e0 be e8 91 b3 da 1a f5 5d a3 23 f5 26 8b 45 70 8d |.......].#.&.Ep.| 000001f0 65 62 9b 7e 01 99 3d 18 f6 10 9a 38 61 9b 2e 57 |eb.~..=....8a..W| 00000200 e4 fa cc b1 8a ce e2 23 a0 87 f0 e1 67 51 eb 16 |.......#....gQ..| 00000210 03 01 00 86 10 00 00 82 00 80 6d 51 f3 7f f9 3e |..........mQ...>| 00000220 fb 75 82 41 36 83 e8 6a ee 2a 2e 25 90 67 4c 8e |.u.A6..j.*.%.gL.| 00000230 62 2f 30 81 17 e0 85 09 0c 2b b7 23 d7 b0 e2 1d |b/0......+.#....| 00000240 f7 3b d7 f5 a1 27 b6 ee 24 b6 1b cc 5b ea 66 0d |.;...'..$...[.f.| 00000250 6a f4 e5 85 f9 da 43 b4 0e 86 85 e1 f5 aa be c8 |j.....C.........| 00000260 ce 39 4c 9c 86 00 08 c2 4b e2 c6 ec 2f f7 ce e6 |.9L.....K.../...| 00000270 bd 77 82 6f 23 b6 e0 bd a2 92 b7 3a ac e8 56 f1 |.w.o#......:..V.| 00000280 af 54 5e 46 87 e9 3b 33 e7 b8 28 b7 d6 c8 90 35 |.T^F..;3..(....5| 00000290 d4 1c 43 d1 30 6f 55 4e 0a 70 16 03 01 00 90 0f |..C.0oUN.p......| 000002a0 00 00 8c 00 8a 30 81 87 02 42 00 c6 85 8e 06 b7 |.....0...B......| 000002b0 04 04 e9 cd 9e 3e cb 66 23 95 b4 42 9c 64 81 39 |.....>.f#..B.d.9| 000002c0 05 3f b5 21 f8 28 af 60 6b 4d 3d ba a1 4b 5e 77 |.?.!.(.`kM=..K^w| 000002d0 ef e7 59 28 fe 1d c1 27 a2 ff a8 de 33 48 b3 c1 |..Y(...'....3H..| 000002e0 85 6a 42 9b f9 7e 7e 31 c2 e5 bd 66 02 41 4b 49 |.jB..~~1...f.AKI| 000002f0 c6 cd 02 e3 83 f7 03 50 18 6d b4 c9 51 02 c0 ab |.......P.m..Q...| 00000300 87 bc e0 3e 4b 89 53 3a e2 65 89 97 02 c1 87 f1 |...>K.S:.e......| 00000310 67 d0 f2 06 28 4e 51 4e fd f0 01 47 e7 c9 d9 23 |g...(NQN...G...#| 00000320 21 6b 87 d2 55 e3 c9 f7 eb 86 d5 1e 50 df d5 14 |!k..U.......P...| 00000330 03 01 00 01 01 16 03 01 00 24 95 62 42 be 90 39 |.........$.bB..9| 00000340 68 ae f5 77 47 21 14 b9 ac ee 81 2d e3 9e c7 34 |h..wG!.....-...4| 00000350 3a 00 5c c9 12 1d c0 5a 7c e7 ef e0 cd fd |:.\....Z|.....| >>> Flow 4 (server to client) 00000000 14 03 01 00 01 01 16 03 01 00 24 ea 98 c0 fb 86 |..........$.....| 00000010 87 7a 2e e1 c7 68 61 3e 5b cc da 1f d6 7b ab 5a |.z...ha>[....{.Z| 00000020 a0 ae a2 cf d0 54 44 19 12 db 75 2b 8c 73 8c |.....TD...u+.s.| >>> Flow 5 (client to server) 00000000 17 03 01 00 1a f3 28 77 31 33 4c b3 7c 4b 75 61 |......(w13L.|Kua| 00000010 38 69 6b ae c9 36 ab 2e 56 16 29 6a 9a 00 2f 15 |8ik..6..V.)j../.| 00000020 03 01 00 16 6b ed 68 18 ed ff 44 39 9b 4a e4 a2 |....k.h...D9.J..| 00000030 cd 79 ef 2a 3e 5a 4d b1 5d 56 |.y.*>ZM.]V| go/src/pkg/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-ECDSA0100644000000000000000000002315712412656737024434 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 01 00 59 02 00 00 55 03 01 53 04 f1 02 4f |....Y...U..S...O| 00000010 73 06 2d 72 41 36 a1 b2 d3 50 97 55 8c c5 f1 43 |s.-rA6...P.U...C| 00000020 37 1f 1a 2a fe 51 70 0b 2f 25 9e 20 50 61 86 80 |7..*.Qp./%. Pa..| 00000030 9a 9c 6d 6f c9 ea 5c ce 0c b7 7c ce e3 be d0 e5 |..mo..\...|.....| 00000040 be d0 c4 80 78 c3 c7 17 0c 2d 8e c8 c0 09 00 00 |....x....-......| 00000050 0d ff 01 00 01 00 00 0b 00 04 03 00 01 02 16 03 |................| 00000060 01 02 0e 0b 00 02 0a 00 02 07 00 02 04 30 82 02 |.............0..| 00000070 00 30 82 01 62 02 09 00 b8 bf 2d 47 a0 d2 eb f4 |.0..b.....-G....| 00000080 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 0b 30 |0...*.H.=..0E1.0| 00000090 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 |...U....AU1.0...| 000000a0 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 |U....Some-State1| 000000b0 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e |!0...U....Intern| 000000c0 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c |et Widgits Pty L| 000000d0 74 64 30 1e 17 0d 31 32 31 31 32 32 31 35 30 36 |td0...1211221506| 000000e0 33 32 5a 17 0d 32 32 31 31 32 30 31 35 30 36 33 |32Z..22112015063| 000000f0 32 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 41 |2Z0E1.0...U....A| 00000100 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d 65 |U1.0...U....Some| 00000110 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a 13 |-State1!0...U...| 00000120 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 74 |.Internet Widgit| 00000130 73 20 50 74 79 20 4c 74 64 30 81 9b 30 10 06 07 |s Pty Ltd0..0...| 00000140 2a 86 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 |*.H.=....+...#..| 00000150 86 00 04 00 c4 a1 ed be 98 f9 0b 48 73 36 7e c3 |...........Hs6~.| 00000160 16 56 11 22 f2 3d 53 c3 3b 4d 21 3d cd 6b 75 e6 |.V.".=S.;M!=.ku.| 00000170 f6 b0 dc 9a df 26 c1 bc b2 87 f0 72 32 7c b3 64 |.....&.....r2|.d| 00000180 2f 1c 90 bc ea 68 23 10 7e fe e3 25 c0 48 3a 69 |/....h#.~..%.H:i| 00000190 e0 28 6d d3 37 00 ef 04 62 dd 0d a0 9c 70 62 83 |.(m.7...b....pb.| 000001a0 d8 81 d3 64 31 aa 9e 97 31 bd 96 b0 68 c0 9b 23 |...d1...1...h..#| 000001b0 de 76 64 3f 1a 5c 7f e9 12 0e 58 58 b6 5f 70 dd |.vd?.\....XX._p.| 000001c0 9b d8 ea d5 d7 f5 d5 cc b9 b6 9f 30 66 5b 66 9a |...........0f[f.| 000001d0 20 e2 27 e5 bf fe 3b 30 09 06 07 2a 86 48 ce 3d | .'...;0...*.H.=| 000001e0 04 01 03 81 8c 00 30 81 88 02 42 01 88 a2 4f eb |......0...B...O.| 000001f0 e2 45 c5 48 7d 1b ac f5 ed 98 9d ae 47 70 c0 5e |.E.H}.......Gp.^| 00000200 1b b6 2f bd f1 b6 4d b7 61 40 d3 11 a2 ce ee 0b |../...M.a@......| 00000210 7e 92 7e ff 76 9d c3 3b 7e a5 3f ce fa 10 e2 59 |~.~.v..;~.?....Y| 00000220 ec 47 2d 7c ac da 4e 97 0e 15 a0 6f d0 02 42 01 |.G-|..N....o..B.| 00000230 4d fc be 67 13 9c 2d 05 0e bd 3f a3 8c 25 c1 33 |M..g..-...?..%.3| 00000240 13 83 0d 94 06 bb d4 37 7a f6 ec 7a c9 86 2e dd |.......7z..z....| 00000250 d7 11 69 7f 85 7c 56 de fb 31 78 2b e4 c7 78 0d |..i..|V..1x+..x.| 00000260 ae cb be 9e 4e 36 24 31 7b 6a 0f 39 95 12 07 8f |....N6$1{j.9....| 00000270 2a 16 03 01 00 d6 0c 00 00 d2 03 00 17 41 04 b1 |*............A..| 00000280 0f 0f 4a 18 ed 25 32 b3 a3 19 ed 4b 61 b6 eb e4 |..J..%2....Ka...| 00000290 d3 f7 77 13 ac 9f 60 c7 8d 6d cb f1 ee 99 1a 71 |..w...`..m.....q| 000002a0 68 aa d3 a7 70 7f 38 d0 f6 23 ab 9a f6 dd 19 4f |h...p.8..#.....O| 000002b0 ce 10 ef d5 cf 64 85 2f 75 f6 20 06 4b f0 b9 00 |.....d./u. .K...| 000002c0 8b 30 81 88 02 42 01 00 b9 6b 80 91 59 0a 48 3f |.0...B...k..Y.H?| 000002d0 72 16 96 8f 21 2c 28 e4 6d 03 74 66 35 16 7d ec |r...!,(.m.tf5.}.| 000002e0 c7 08 9b 52 b5 05 d9 38 d8 b7 51 42 a7 4a 9f 9b |...R...8..QB.J..| 000002f0 1a 37 14 de c5 f5 16 96 83 81 58 d3 a6 1e ce 8a |.7........X.....| 00000300 bc 19 47 30 fe c5 85 55 02 42 01 4f 61 59 68 85 |..G0...U.B.OaYh.| 00000310 c7 64 23 22 f6 83 53 cc 58 38 25 b5 ce 74 c1 68 |.d#"..S.X8%..t.h| 00000320 9f 32 72 33 ea c9 62 e0 26 63 92 e3 5f 34 10 0b |.2r3..b.&c.._4..| 00000330 3c d5 83 fe 9f 67 69 ef 33 6b 19 c1 ec d6 6c 35 |<....gi.3k....l5| 00000340 89 33 17 d3 9d 93 e2 e5 6e 89 9a a1 16 03 01 00 |.3......n.......| 00000350 0e 0d 00 00 06 03 01 02 40 00 00 0e 00 00 00 |........@......| >>> Flow 3 (client to server) 00000000 16 03 01 01 fb 0b 00 01 f7 00 01 f4 00 01 f1 30 |...............0| 00000010 82 01 ed 30 82 01 58 a0 03 02 01 02 02 01 00 30 |...0..X........0| 00000020 0b 06 09 2a 86 48 86 f7 0d 01 01 05 30 26 31 10 |...*.H......0&1.| 00000030 30 0e 06 03 55 04 0a 13 07 41 63 6d 65 20 43 6f |0...U....Acme Co| 00000040 31 12 30 10 06 03 55 04 03 13 09 31 32 37 2e 30 |1.0...U....127.0| 00000050 2e 30 2e 31 30 1e 17 0d 31 31 31 32 30 38 30 37 |.0.10...11120807| 00000060 35 35 31 32 5a 17 0d 31 32 31 32 30 37 30 38 30 |5512Z..121207080| 00000070 30 31 32 5a 30 26 31 10 30 0e 06 03 55 04 0a 13 |012Z0&1.0...U...| 00000080 07 41 63 6d 65 20 43 6f 31 12 30 10 06 03 55 04 |.Acme Co1.0...U.| 00000090 03 13 09 31 32 37 2e 30 2e 30 2e 31 30 81 9c 30 |...127.0.0.10..0| 000000a0 0b 06 09 2a 86 48 86 f7 0d 01 01 01 03 81 8c 00 |...*.H..........| 000000b0 30 81 88 02 81 80 4e d0 7b 31 e3 82 64 d9 59 c0 |0.....N.{1..d.Y.| 000000c0 c2 87 a4 5e 1e 8b 73 33 c7 63 53 df 66 92 06 84 |...^..s3.cS.f...| 000000d0 f6 64 d5 8f e4 36 a7 1d 2b e8 b3 20 36 45 23 b5 |.d...6..+.. 6E#.| 000000e0 e3 95 ae ed e0 f5 20 9c 8d 95 df 7f 5a 12 ef 87 |...... .....Z...| 000000f0 e4 5b 68 e4 e9 0e 74 ec 04 8a 7f de 93 27 c4 01 |.[h...t......'..| 00000100 19 7a bd f2 dc 3d 14 ab d0 54 ca 21 0c d0 4d 6e |.z...=...T.!..Mn| 00000110 87 2e 5c c5 d2 bb 4d 4b 4f ce b6 2c f7 7e 88 ec |..\...MKO..,.~..| 00000120 7c d7 02 91 74 a6 1e 0c 1a da e3 4a 5a 2e de 13 ||...t......JZ...| 00000130 9c 4c 40 88 59 93 02 03 01 00 01 a3 32 30 30 30 |.L@.Y.......2000| 00000140 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 00 a0 30 |...U...........0| 00000150 0d 06 03 55 1d 0e 04 06 04 04 01 02 03 04 30 0f |...U..........0.| 00000160 06 03 55 1d 23 04 08 30 06 80 04 01 02 03 04 30 |..U.#..0.......0| 00000170 0b 06 09 2a 86 48 86 f7 0d 01 01 05 03 81 81 00 |...*.H..........| 00000180 36 1f b3 7a 0c 75 c9 6e 37 46 61 2b d5 bd c0 a7 |6..z.u.n7Fa+....| 00000190 4b cc 46 9a 81 58 7c 85 79 29 c8 c8 c6 67 dd 32 |K.F..X|.y)...g.2| 000001a0 56 45 2b 75 b6 e9 24 a9 50 9a be 1f 5a fa 1a 15 |VE+u..$.P...Z...| 000001b0 d9 cc 55 95 72 16 83 b9 c2 b6 8f fd 88 8c 38 84 |..U.r.........8.| 000001c0 1d ab 5d 92 31 13 4f fd 83 3b c6 9d f1 11 62 b6 |..].1.O..;....b.| 000001d0 8b ec ab 67 be c8 64 b0 11 50 46 58 17 6b 99 1c |...g..d..PFX.k..| 000001e0 d3 1d fc 06 f1 0e e5 96 a8 0c f9 78 20 b7 44 18 |...........x .D.| 000001f0 51 8d 10 7e 4f 94 67 df a3 4e 70 73 8e 90 91 85 |Q..~O.g..Nps....| 00000200 16 03 01 00 46 10 00 00 42 41 04 1e 18 37 ef 0d |....F...BA...7..| 00000210 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd |.Q.5uq..T[....g.| 00000220 a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e |.$ >.V...(^.+-O.| 00000230 f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 |...lK[.V.2B.X..I| 00000240 a6 b5 68 1a 41 03 56 6b dc 5a 89 16 03 01 00 86 |..h.A.Vk.Z......| 00000250 0f 00 00 82 00 80 20 2c 5a 08 3a 00 33 50 19 b2 |...... ,Z.:.3P..| 00000260 0f ba 6c 76 7f 5c 92 e2 78 55 3e 32 32 bb 33 bc |..lv.\..xU>22.3.| 00000270 ab a9 34 e0 83 cf 82 cd 9e 6b 3f 9d e6 49 61 29 |..4......k?..Ia)| 00000280 8b b4 ed e8 12 cd a9 52 86 11 48 64 08 61 72 8d |.......R..Hd.ar.| 00000290 d6 6a ac 42 cc e4 07 5f 08 56 9f 2f c5 35 d3 9b |.j.B..._.V./.5..| 000002a0 e9 0d 91 82 c0 e9 bb 9f a9 8f df 96 85 08 9a 69 |...............i| 000002b0 a4 93 b3 72 37 ba f9 b1 a4 0b b0 9f 43 6a 15 ec |...r7.......Cj..| 000002c0 79 b8 fd 9c 1f 5f 0d 2c 56 33 c7 15 d5 4a b7 82 |y...._.,V3...J..| 000002d0 ea 44 80 20 c5 80 14 03 01 00 01 01 16 03 01 00 |.D. ............| 000002e0 30 c9 c0 7c d7 57 d3 00 ab 87 eb 78 56 6b a1 69 |0..|.W.....xVk.i| 000002f0 1d fa ec ae 38 f3 ef 5d 49 19 0d 4b f0 73 63 af |....8..]I..K.sc.| 00000300 89 b6 cb 76 cf fb b9 c1 99 98 06 0a 54 67 a0 6e |...v........Tg.n| 00000310 e7 |.| >>> Flow 4 (server to client) 00000000 14 03 01 00 01 01 16 03 01 00 30 20 db fd ed ed |..........0 ....| 00000010 7c d5 bf 8f 06 3b 86 1b c1 60 7d a4 74 e9 a6 c9 ||....;...`}.t...| 00000020 f5 7c c7 f4 65 91 06 d5 53 88 d7 57 a4 22 b6 1f |.|..e...S..W."..| 00000030 f1 02 e9 79 36 e6 a1 22 51 3a 4c |...y6.."Q:L| >>> Flow 5 (client to server) 00000000 17 03 01 00 20 00 66 51 6a 14 ca ea e2 21 48 74 |.... .fQj....!Ht| 00000010 c4 c1 6e b9 8b 23 af 7c 33 c9 00 f8 0b ec ab 35 |..n..#.|3......5| 00000020 e7 42 0a d1 ae 17 03 01 00 20 00 1c 6d 60 75 5d |.B....... ..m`u]| 00000030 b3 fb 40 2e e0 b7 0d 48 f4 87 ac d4 bf ea 01 0d |..@....H........| 00000040 fe 10 0d 05 04 43 6b 19 ed f2 15 03 01 00 20 f8 |.....Ck....... .| 00000050 03 ac 62 4b 1f db 2e d2 4e 00 c3 a4 57 3c 0a 62 |..bK....N...W<.b| 00000060 05 a0 ef bd 2b 9b 9a 63 27 72 d7 d8 f1 8d 84 |....+..c'r.....| go/src/pkg/crypto/tls/testdata/Client-TLSv10-ClientCert-RSA-RSA0100644000000000000000000002246312412656737024241 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 01 00 51 02 00 00 4d 03 01 53 04 f1 02 73 |....Q...M..S...s| 00000010 ee 5f 70 a4 aa 0d be d7 46 a3 25 3f e3 5d ef 7b |._p.....F.%?.].{| 00000020 73 49 7c b6 82 4d 99 2f 31 fc 8b 20 2d a3 33 7c |sI|..M./1.. -.3|| 00000030 a5 c3 85 86 ba 61 4d 05 b0 5e d3 5e 88 6e c3 4b |.....aM..^.^.n.K| 00000040 95 d3 e9 67 f1 96 24 58 7a 6f e6 c5 00 05 00 00 |...g..$Xzo......| 00000050 05 ff 01 00 01 00 16 03 01 02 be 0b 00 02 ba 00 |................| 00000060 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000070 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000080 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000090 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 000000a0 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 000000b0 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000c0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000d0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000e0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000f0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 00000100 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 00000110 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000120 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000130 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000140 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000150 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000160 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000170 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000180 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000190 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 000001a0 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 000001b0 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001c0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001d0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001e0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001f0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 00000200 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 00000210 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000220 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000230 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000240 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000250 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000260 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000270 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000280 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000290 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 000002a0 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 000002b0 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002c0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002d0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002e0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002f0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 00000300 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 00000310 6e 38 50 29 6c 90 a7 bd d9 16 03 01 00 0e 0d 00 |n8P)l...........| 00000320 00 06 03 01 02 40 00 00 0e 00 00 00 |.....@......| >>> Flow 3 (client to server) 00000000 16 03 01 01 fb 0b 00 01 f7 00 01 f4 00 01 f1 30 |...............0| 00000010 82 01 ed 30 82 01 58 a0 03 02 01 02 02 01 00 30 |...0..X........0| 00000020 0b 06 09 2a 86 48 86 f7 0d 01 01 05 30 26 31 10 |...*.H......0&1.| 00000030 30 0e 06 03 55 04 0a 13 07 41 63 6d 65 20 43 6f |0...U....Acme Co| 00000040 31 12 30 10 06 03 55 04 03 13 09 31 32 37 2e 30 |1.0...U....127.0| 00000050 2e 30 2e 31 30 1e 17 0d 31 31 31 32 30 38 30 37 |.0.10...11120807| 00000060 35 35 31 32 5a 17 0d 31 32 31 32 30 37 30 38 30 |5512Z..121207080| 00000070 30 31 32 5a 30 26 31 10 30 0e 06 03 55 04 0a 13 |012Z0&1.0...U...| 00000080 07 41 63 6d 65 20 43 6f 31 12 30 10 06 03 55 04 |.Acme Co1.0...U.| 00000090 03 13 09 31 32 37 2e 30 2e 30 2e 31 30 81 9c 30 |...127.0.0.10..0| 000000a0 0b 06 09 2a 86 48 86 f7 0d 01 01 01 03 81 8c 00 |...*.H..........| 000000b0 30 81 88 02 81 80 4e d0 7b 31 e3 82 64 d9 59 c0 |0.....N.{1..d.Y.| 000000c0 c2 87 a4 5e 1e 8b 73 33 c7 63 53 df 66 92 06 84 |...^..s3.cS.f...| 000000d0 f6 64 d5 8f e4 36 a7 1d 2b e8 b3 20 36 45 23 b5 |.d...6..+.. 6E#.| 000000e0 e3 95 ae ed e0 f5 20 9c 8d 95 df 7f 5a 12 ef 87 |...... .....Z...| 000000f0 e4 5b 68 e4 e9 0e 74 ec 04 8a 7f de 93 27 c4 01 |.[h...t......'..| 00000100 19 7a bd f2 dc 3d 14 ab d0 54 ca 21 0c d0 4d 6e |.z...=...T.!..Mn| 00000110 87 2e 5c c5 d2 bb 4d 4b 4f ce b6 2c f7 7e 88 ec |..\...MKO..,.~..| 00000120 7c d7 02 91 74 a6 1e 0c 1a da e3 4a 5a 2e de 13 ||...t......JZ...| 00000130 9c 4c 40 88 59 93 02 03 01 00 01 a3 32 30 30 30 |.L@.Y.......2000| 00000140 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 00 a0 30 |...U...........0| 00000150 0d 06 03 55 1d 0e 04 06 04 04 01 02 03 04 30 0f |...U..........0.| 00000160 06 03 55 1d 23 04 08 30 06 80 04 01 02 03 04 30 |..U.#..0.......0| 00000170 0b 06 09 2a 86 48 86 f7 0d 01 01 05 03 81 81 00 |...*.H..........| 00000180 36 1f b3 7a 0c 75 c9 6e 37 46 61 2b d5 bd c0 a7 |6..z.u.n7Fa+....| 00000190 4b cc 46 9a 81 58 7c 85 79 29 c8 c8 c6 67 dd 32 |K.F..X|.y)...g.2| 000001a0 56 45 2b 75 b6 e9 24 a9 50 9a be 1f 5a fa 1a 15 |VE+u..$.P...Z...| 000001b0 d9 cc 55 95 72 16 83 b9 c2 b6 8f fd 88 8c 38 84 |..U.r.........8.| 000001c0 1d ab 5d 92 31 13 4f fd 83 3b c6 9d f1 11 62 b6 |..].1.O..;....b.| 000001d0 8b ec ab 67 be c8 64 b0 11 50 46 58 17 6b 99 1c |...g..d..PFX.k..| 000001e0 d3 1d fc 06 f1 0e e5 96 a8 0c f9 78 20 b7 44 18 |...........x .D.| 000001f0 51 8d 10 7e 4f 94 67 df a3 4e 70 73 8e 90 91 85 |Q..~O.g..Nps....| 00000200 16 03 01 00 86 10 00 00 82 00 80 6d 51 f3 7f f9 |...........mQ...| 00000210 3e fb 75 82 41 36 83 e8 6a ee 2a 2e 25 90 67 4c |>.u.A6..j.*.%.gL| 00000220 8e 62 2f 30 81 17 e0 85 09 0c 2b b7 23 d7 b0 e2 |.b/0......+.#...| 00000230 1d f7 3b d7 f5 a1 27 b6 ee 24 b6 1b cc 5b ea 66 |..;...'..$...[.f| 00000240 0d 6a f4 e5 85 f9 da 43 b4 0e 86 85 e1 f5 aa be |.j.....C........| 00000250 c8 ce 39 4c 9c 86 00 08 c2 4b e2 c6 ec 2f f7 ce |..9L.....K.../..| 00000260 e6 bd 77 82 6f 23 b6 e0 bd a2 92 b7 3a ac e8 56 |..w.o#......:..V| 00000270 f1 af 54 5e 46 87 e9 3b 33 e7 b8 28 b7 d6 c8 90 |..T^F..;3..(....| 00000280 35 d4 1c 43 d1 30 6f 55 4e 0a 70 16 03 01 00 86 |5..C.0oUN.p.....| 00000290 0f 00 00 82 00 80 0f 4c d2 b2 f0 94 6d 61 d1 2c |.......L....ma.,| 000002a0 db 6f 79 03 bd 40 b2 d2 1d 61 ef 83 1b 4a 0c 7b |.oy..@...a...J.{| 000002b0 c5 73 1e 1a 81 e7 67 0a d6 aa 2d 04 04 cc 0e 4b |.s....g...-....K| 000002c0 2e da 96 7f 15 6c 05 ee c4 53 7e 33 89 28 7d db |.....l...S~3.(}.| 000002d0 a1 77 43 ba a3 51 a9 1c b9 f5 ec 9a 8d eb 2c 46 |.wC..Q........,F| 000002e0 5c 33 59 6b 16 af de f4 9b 80 76 a3 22 30 5d bb |\3Yk......v."0].| 000002f0 02 b9 77 96 8a db 36 9f 54 95 00 d8 58 e1 aa 04 |..w...6.T...X...| 00000300 98 c9 0c 32 ae 62 81 12 0c f6 1b 76 c6 58 a7 8c |...2.b.....v.X..| 00000310 0e d8 b7 8e ed 0f 14 03 01 00 01 01 16 03 01 00 |................| 00000320 24 1d c0 20 02 2d da 69 54 29 8c ff af 5c 56 a8 |$.. .-.iT)...\V.| 00000330 eb d0 09 95 29 8f 52 8c e2 7b 9f 36 3e 47 a0 33 |....).R..{.6>G.3| 00000340 2e 63 a2 24 93 |.c.$.| >>> Flow 4 (server to client) 00000000 14 03 01 00 01 01 16 03 01 00 24 99 e8 fb 65 f4 |..........$...e.| 00000010 95 ae 8b 71 cc 5d a4 95 a7 27 98 fd 16 3f 7a 1a |...q.]...'...?z.| 00000020 b6 bd bf 0a 58 72 77 97 1f 8e b1 dd 4b 12 12 |....Xrw.....K..| >>> Flow 5 (client to server) 00000000 17 03 01 00 1a 42 70 c0 89 78 12 5c 91 7e 88 2d |.....Bp..x.\.~.-| 00000010 2f 8f be f2 f2 12 9d 81 ae 78 08 38 5e 6d 1b 15 |/........x.8^m..| 00000020 03 01 00 16 1a 64 b1 6f 8a ff d3 63 6a c7 b8 95 |.....d.o...cj...| 00000030 3d b0 87 bc 62 e9 88 5b 26 bd |=...b..[&.| go/src/pkg/crypto/tls/testdata/Client-TLSv10-ECDHE-ECDSA-AES0100644000000000000000000001470212412656737023167 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 01 00 59 02 00 00 55 03 01 53 04 f1 02 b2 |....Y...U..S....| 00000010 e0 f6 f6 b5 c9 5b 28 d0 5d 58 1b 6f 4e 2b 9d 05 |.....[(.]X.oN+..| 00000020 2a b9 b4 da 45 cf f3 10 b2 23 44 20 f8 4d 59 05 |*...E....#D .MY.| 00000030 ad 27 f2 a0 ee 7f ec cc 20 dc e7 a2 1b 07 b3 a5 |.'...... .......| 00000040 37 7e 61 3d d6 5c 03 cf cc f5 9b ca c0 09 00 00 |7~a=.\..........| 00000050 0d ff 01 00 01 00 00 0b 00 04 03 00 01 02 16 03 |................| 00000060 01 02 0e 0b 00 02 0a 00 02 07 00 02 04 30 82 02 |.............0..| 00000070 00 30 82 01 62 02 09 00 b8 bf 2d 47 a0 d2 eb f4 |.0..b.....-G....| 00000080 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 0b 30 |0...*.H.=..0E1.0| 00000090 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 |...U....AU1.0...| 000000a0 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 |U....Some-State1| 000000b0 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e |!0...U....Intern| 000000c0 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c |et Widgits Pty L| 000000d0 74 64 30 1e 17 0d 31 32 31 31 32 32 31 35 30 36 |td0...1211221506| 000000e0 33 32 5a 17 0d 32 32 31 31 32 30 31 35 30 36 33 |32Z..22112015063| 000000f0 32 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 41 |2Z0E1.0...U....A| 00000100 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d 65 |U1.0...U....Some| 00000110 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a 13 |-State1!0...U...| 00000120 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 74 |.Internet Widgit| 00000130 73 20 50 74 79 20 4c 74 64 30 81 9b 30 10 06 07 |s Pty Ltd0..0...| 00000140 2a 86 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 |*.H.=....+...#..| 00000150 86 00 04 00 c4 a1 ed be 98 f9 0b 48 73 36 7e c3 |...........Hs6~.| 00000160 16 56 11 22 f2 3d 53 c3 3b 4d 21 3d cd 6b 75 e6 |.V.".=S.;M!=.ku.| 00000170 f6 b0 dc 9a df 26 c1 bc b2 87 f0 72 32 7c b3 64 |.....&.....r2|.d| 00000180 2f 1c 90 bc ea 68 23 10 7e fe e3 25 c0 48 3a 69 |/....h#.~..%.H:i| 00000190 e0 28 6d d3 37 00 ef 04 62 dd 0d a0 9c 70 62 83 |.(m.7...b....pb.| 000001a0 d8 81 d3 64 31 aa 9e 97 31 bd 96 b0 68 c0 9b 23 |...d1...1...h..#| 000001b0 de 76 64 3f 1a 5c 7f e9 12 0e 58 58 b6 5f 70 dd |.vd?.\....XX._p.| 000001c0 9b d8 ea d5 d7 f5 d5 cc b9 b6 9f 30 66 5b 66 9a |...........0f[f.| 000001d0 20 e2 27 e5 bf fe 3b 30 09 06 07 2a 86 48 ce 3d | .'...;0...*.H.=| 000001e0 04 01 03 81 8c 00 30 81 88 02 42 01 88 a2 4f eb |......0...B...O.| 000001f0 e2 45 c5 48 7d 1b ac f5 ed 98 9d ae 47 70 c0 5e |.E.H}.......Gp.^| 00000200 1b b6 2f bd f1 b6 4d b7 61 40 d3 11 a2 ce ee 0b |../...M.a@......| 00000210 7e 92 7e ff 76 9d c3 3b 7e a5 3f ce fa 10 e2 59 |~.~.v..;~.?....Y| 00000220 ec 47 2d 7c ac da 4e 97 0e 15 a0 6f d0 02 42 01 |.G-|..N....o..B.| 00000230 4d fc be 67 13 9c 2d 05 0e bd 3f a3 8c 25 c1 33 |M..g..-...?..%.3| 00000240 13 83 0d 94 06 bb d4 37 7a f6 ec 7a c9 86 2e dd |.......7z..z....| 00000250 d7 11 69 7f 85 7c 56 de fb 31 78 2b e4 c7 78 0d |..i..|V..1x+..x.| 00000260 ae cb be 9e 4e 36 24 31 7b 6a 0f 39 95 12 07 8f |....N6$1{j.9....| 00000270 2a 16 03 01 00 d5 0c 00 00 d1 03 00 17 41 04 da |*............A..| 00000280 5a fd 09 e5 d6 c0 70 41 5e 3a 87 eb df 0c ad 90 |Z.....pA^:......| 00000290 22 8a 2f 90 81 0c 24 00 68 92 f3 d5 95 2f 93 43 |"./...$.h..../.C| 000002a0 e9 58 2d 18 28 62 ee 33 5b 21 2e 49 87 21 4d 32 |.X-.(b.3[!.I.!M2| 000002b0 32 19 b3 ba fe 2d 9a 85 12 0e a1 77 08 06 75 00 |2....-.....w..u.| 000002c0 8a 30 81 87 02 42 01 91 14 fc 68 74 95 10 4b d4 |.0...B....ht..K.| 000002d0 67 60 12 46 bb b0 f6 98 77 a3 41 b8 01 5c 49 54 |g`.F....w.A..\IT| 000002e0 9e 3e 81 e7 97 a3 b9 73 6e 15 74 67 be e5 d9 eb |.>.....sn.tg....| 000002f0 8b 87 c5 22 ab ab 58 28 4f d1 b6 80 94 1b f5 f7 |..."..X(O.......| 00000300 12 43 ef 0a c7 3e 1a 76 02 41 7a 00 49 cb 9f 3b |.C...>.v.Az.I..;| 00000310 91 6e 38 58 0a d3 d0 d1 ee 67 f0 b6 5d cd fa 23 |.n8X.....g..]..#| 00000320 b6 98 43 af 9c 71 90 1e 1d 50 a2 6e 61 5b f2 92 |..C..q...P.na[..| 00000330 b4 69 73 f2 3b 54 bf 1c 9d 05 19 97 e4 4e 41 9e |.is.;T.......NA.| 00000340 f2 9a 76 77 9a 86 43 1f 1f 30 a2 16 03 01 00 04 |..vw..C..0......| 00000350 0e 00 00 00 |....| >>> Flow 3 (client to server) 00000000 16 03 01 00 46 10 00 00 42 41 04 1e 18 37 ef 0d |....F...BA...7..| 00000010 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd |.Q.5uq..T[....g.| 00000020 a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e |.$ >.V...(^.+-O.| 00000030 f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 |...lK[.V.2B.X..I| 00000040 a6 b5 68 1a 41 03 56 6b dc 5a 89 14 03 01 00 01 |..h.A.Vk.Z......| 00000050 01 16 03 01 00 30 88 60 65 b2 d7 51 1f ad 96 56 |.....0.`e..Q...V| 00000060 4e 0a 20 eb b5 b0 1a dd 4c f6 1a cf d4 5c 47 c4 |N. .....L....\G.| 00000070 9c 7c a0 36 dd d1 1b 96 91 99 c0 a7 2d 9a 7c 42 |.|.6........-.|B| 00000080 51 d1 de 87 2b a4 |Q...+.| >>> Flow 4 (server to client) 00000000 14 03 01 00 01 01 16 03 01 00 30 86 6c b5 94 69 |..........0.l..i| 00000010 2e e0 55 a2 4d a8 63 f2 5b 1f ae 34 21 c8 21 6a |..U.M.c.[..4!.!j| 00000020 00 b6 56 ed 4e 2a b0 ff 01 2f da ce a1 c0 41 03 |..V.N*.../....A.| 00000030 a9 1b 6e 2e e1 88 50 ba 62 14 88 |..n...P.b..| >>> Flow 5 (client to server) 00000000 17 03 01 00 20 a6 63 0a 2f a5 dc e1 fb cb 7b 1f |.... .c./.....{.| 00000010 f2 da 74 c3 ff e9 f5 8b 9c 5f 0c d3 f7 1f 44 e6 |..t......_....D.| 00000020 90 13 5c 48 50 17 03 01 00 20 c7 75 b5 ff bc 09 |..\HP.... .u....| 00000030 34 f2 45 db 0d 22 08 8e f1 35 cd b6 0f b0 eb 2a |4.E.."...5.....*| 00000040 b7 1a d0 8e 14 a4 54 84 f9 dc 15 03 01 00 20 e0 |......T....... .| 00000050 36 3d aa b3 a9 b4 20 23 ca 9e 8c 5d fc a8 c8 b7 |6=.... #...]....| 00000060 f5 c2 b6 d0 5a e2 ce a5 7b 68 a0 48 86 95 6a |....Z...{h.H..j| go/src/pkg/crypto/tls/testdata/Client-TLSv10-ECDHE-RSA-AES0100644000000000000000000001633612412656737023002 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 01 00 59 02 00 00 55 03 01 53 04 f1 02 21 |....Y...U..S...!| 00000010 67 b5 2b 34 fb 62 d7 36 4f cf 68 2e 29 39 d0 28 |g.+4.b.6O.h.)9.(| 00000020 3a 02 32 82 8f 95 de 62 d6 03 77 20 e6 98 56 cd |:.2....b..w ..V.| 00000030 96 24 d1 b9 4d eb 51 19 bb b7 71 f4 9c 29 32 d4 |.$..M.Q...q..)2.| 00000040 e5 c6 0a 54 e0 4a 20 29 3e bd 06 0d c0 13 00 00 |...T.J )>.......| 00000050 0d ff 01 00 01 00 00 0b 00 04 03 00 01 02 16 03 |................| 00000060 01 02 be 0b 00 02 ba 00 02 b7 00 02 b4 30 82 02 |.............0..| 00000070 b0 30 82 02 19 a0 03 02 01 02 02 09 00 85 b0 bb |.0..............| 00000080 a4 8a 7f b8 ca 30 0d 06 09 2a 86 48 86 f7 0d 01 |.....0...*.H....| 00000090 01 05 05 00 30 45 31 0b 30 09 06 03 55 04 06 13 |....0E1.0...U...| 000000a0 02 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f |.AU1.0...U....So| 000000b0 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 |me-State1!0...U.| 000000c0 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 |...Internet Widg| 000000d0 69 74 73 20 50 74 79 20 4c 74 64 30 1e 17 0d 31 |its Pty Ltd0...1| 000000e0 30 30 34 32 34 30 39 30 39 33 38 5a 17 0d 31 31 |00424090938Z..11| 000000f0 30 34 32 34 30 39 30 39 33 38 5a 30 45 31 0b 30 |0424090938Z0E1.0| 00000100 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 |...U....AU1.0...| 00000110 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 |U....Some-State1| 00000120 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e |!0...U....Intern| 00000130 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c |et Widgits Pty L| 00000140 74 64 30 81 9f 30 0d 06 09 2a 86 48 86 f7 0d 01 |td0..0...*.H....| 00000150 01 01 05 00 03 81 8d 00 30 81 89 02 81 81 00 bb |........0.......| 00000160 79 d6 f5 17 b5 e5 bf 46 10 d0 dc 69 be e6 2b 07 |y......F...i..+.| 00000170 43 5a d0 03 2d 8a 7a 43 85 b7 14 52 e7 a5 65 4c |CZ..-.zC...R..eL| 00000180 2c 78 b8 23 8c b5 b4 82 e5 de 1f 95 3b 7e 62 a5 |,x.#........;~b.| 00000190 2c a5 33 d6 fe 12 5c 7a 56 fc f5 06 bf fa 58 7b |,.3...\zV.....X{| 000001a0 26 3f b5 cd 04 d3 d0 c9 21 96 4a c7 f4 54 9f 5a |&?......!.J..T.Z| 000001b0 bf ef 42 71 00 fe 18 99 07 7f 7e 88 7d 7d f1 04 |..Bq......~.}}..| 000001c0 39 c4 a2 2e db 51 c9 7c e3 c0 4c 3b 32 66 01 cf |9....Q.|..L;2f..| 000001d0 af b1 1d b8 71 9a 1d db db 89 6b ae da 2d 79 02 |....q.....k..-y.| 000001e0 03 01 00 01 a3 81 a7 30 81 a4 30 1d 06 03 55 1d |.......0..0...U.| 000001f0 0e 04 16 04 14 b1 ad e2 85 5a cf cb 28 db 69 ce |.........Z..(.i.| 00000200 23 69 de d3 26 8e 18 88 39 30 75 06 03 55 1d 23 |#i..&...90u..U.#| 00000210 04 6e 30 6c 80 14 b1 ad e2 85 5a cf cb 28 db 69 |.n0l......Z..(.i| 00000220 ce 23 69 de d3 26 8e 18 88 39 a1 49 a4 47 30 45 |.#i..&...9.I.G0E| 00000230 31 0b 30 09 06 03 55 04 06 13 02 41 55 31 13 30 |1.0...U....AU1.0| 00000240 11 06 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 |...U....Some-Sta| 00000250 74 65 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 |te1!0...U....Int| 00000260 65 72 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 |ernet Widgits Pt| 00000270 79 20 4c 74 64 82 09 00 85 b0 bb a4 8a 7f b8 ca |y Ltd...........| 00000280 30 0c 06 03 55 1d 13 04 05 30 03 01 01 ff 30 0d |0...U....0....0.| 00000290 06 09 2a 86 48 86 f7 0d 01 01 05 05 00 03 81 81 |..*.H...........| 000002a0 00 08 6c 45 24 c7 6b b1 59 ab 0c 52 cc f2 b0 14 |..lE$.k.Y..R....| 000002b0 d7 87 9d 7a 64 75 b5 5a 95 66 e4 c5 2b 8e ae 12 |...zdu.Z.f..+...| 000002c0 66 1f eb 4f 38 b3 6e 60 d3 92 fd f7 41 08 b5 25 |f..O8.n`....A..%| 000002d0 13 b1 18 7a 24 fb 30 1d ba ed 98 b9 17 ec e7 d7 |...z$.0.........| 000002e0 31 59 db 95 d3 1d 78 ea 50 56 5c d5 82 5a 2d 5a |1Y....x.PV\..Z-Z| 000002f0 5f 33 c4 b6 d8 c9 75 90 96 8c 0f 52 98 b5 cd 98 |_3....u....R....| 00000300 1f 89 20 5f f2 a0 1c a3 1b 96 94 dd a9 fd 57 e9 |.. _..........W.| 00000310 70 e8 26 6d 71 99 9b 26 6e 38 50 29 6c 90 a7 bd |p.&mq..&n8P)l...| 00000320 d9 16 03 01 00 cb 0c 00 00 c7 03 00 17 41 04 05 |.............A..| 00000330 45 33 f8 4b e9 96 0e 4a fd ec 54 76 21 9b 24 8a |E3.K...J..Tv!.$.| 00000340 75 0b 80 84 c7 30 2b 22 f0 85 57 a4 a9 79 d6 f6 |u....0+"..W..y..| 00000350 6d 80 b0 71 d9 66 c9 6c dd 76 fc 32 d0 c6 bc 52 |m..q.f.l.v.2...R| 00000360 2f f1 c9 62 17 53 76 ec be a6 1c 93 f2 b4 5d 00 |/..b.Sv.......].| 00000370 80 72 d9 20 52 70 7c 03 b1 33 fa 51 23 cd 05 97 |.r. Rp|..3.Q#...| 00000380 6f d6 89 2f 8d 2e 3a 17 32 eb f2 ff 6b 39 70 5e |o../..:.2...k9p^| 00000390 21 41 8d 69 02 c8 9a 17 19 e4 48 9b 51 c3 7f 9b |!A.i......H.Q...| 000003a0 8d 4a 83 97 07 0e 30 f1 8b 6b e9 92 12 01 d6 96 |.J....0..k......| 000003b0 f2 1a a2 10 7f 59 87 16 1a fb 55 67 68 fc 78 c6 |.....Y....Ugh.x.| 000003c0 57 ac 05 dd f3 6f 77 84 eb ae b0 33 2d 19 2c ba |W....ow....3-.,.| 000003d0 b8 ae 9f 95 69 85 95 45 5e 37 f4 17 17 9b 03 c1 |....i..E^7......| 000003e0 50 b1 36 42 bd 60 5c 8b d8 b6 f3 c8 34 c8 9d 9d |P.6B.`\.....4...| 000003f0 75 16 03 01 00 04 0e 00 00 00 |u.........| >>> Flow 3 (client to server) 00000000 16 03 01 00 46 10 00 00 42 41 04 1e 18 37 ef 0d |....F...BA...7..| 00000010 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd |.Q.5uq..T[....g.| 00000020 a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e |.$ >.V...(^.+-O.| 00000030 f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 |...lK[.V.2B.X..I| 00000040 a6 b5 68 1a 41 03 56 6b dc 5a 89 14 03 01 00 01 |..h.A.Vk.Z......| 00000050 01 16 03 01 00 30 ca d1 1b 08 27 9b 44 e7 e9 b4 |.....0....'.D...| 00000060 90 16 4d 30 4e 65 5c 0d 47 ba 46 86 cf c9 80 e7 |..M0Ne\.G.F.....| 00000070 64 31 f5 a1 9e dc 39 15 d3 be 16 4f c7 90 b6 62 |d1....9....O...b| 00000080 5d 6d 7f 41 4e 3e |]m.AN>| >>> Flow 4 (server to client) 00000000 14 03 01 00 01 01 16 03 01 00 30 98 81 24 8e cd |..........0..$..| 00000010 b6 48 2f 80 de 8e 24 3c cd 02 67 80 34 97 d7 92 |.H/...$<..g.4...| 00000020 78 c2 44 3d 5d 05 eb 88 76 79 46 7a c3 fa ca 73 |x.D=]...vyFz...s| 00000030 45 82 ad c1 81 00 ca 40 c1 2f 13 |E......@./.| >>> Flow 5 (client to server) 00000000 17 03 01 00 20 ee 19 59 67 67 a9 8b db 99 87 50 |.... ..Ygg.....P| 00000010 01 e2 02 c1 d5 6d 36 79 af aa ec 1b 80 0e b6 5e |.....m6y.......^| 00000020 5f fa 03 01 cc 17 03 01 00 20 ec e2 04 b7 3b a5 |_........ ....;.| 00000030 f2 e0 13 1f 17 48 e7 6e d3 eb f0 fa 36 ef 6e 2e |.....H.n....6.n.| 00000040 fb ea c8 39 c4 5f 4b 28 d4 50 15 03 01 00 20 c7 |...9._K(.P.... .| 00000050 45 ff fb c7 07 0c d8 0e 35 a3 c5 31 47 b7 03 0e |E.......5..1G...| 00000060 14 c8 29 fd 53 70 5f 15 ac d2 1c 4c 69 fb d6 |..).Sp_....Li..| go/src/pkg/crypto/tls/testdata/Client-TLSv10-RSA-RC40100644000000000000000000001420712412656737022147 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 01 00 51 02 00 00 4d 03 01 53 04 f1 02 76 |....Q...M..S...v| 00000010 e8 45 7f 57 f3 42 4b 33 0b 06 fa a6 fa c4 3d 84 |.E.W.BK3......=.| 00000020 5a 45 dc 93 41 a5 8d 79 6e 8f 11 20 e7 c6 29 2b |ZE..A..yn.. ..)+| 00000030 ff 4a 6e 63 67 a6 10 cb 49 19 46 1e 5e 0a d5 70 |.Jncg...I.F.^..p| 00000040 96 88 9a 32 48 ef c3 4a 45 4c 6d e0 00 05 00 00 |...2H..JELm.....| 00000050 05 ff 01 00 01 00 16 03 01 02 be 0b 00 02 ba 00 |................| 00000060 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000070 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000080 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000090 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 000000a0 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 000000b0 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000c0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000d0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000e0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000f0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 00000100 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 00000110 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000120 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000130 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000140 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000150 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000160 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000170 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000180 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000190 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 000001a0 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 000001b0 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001c0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001d0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001e0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001f0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 00000200 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 00000210 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000220 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000230 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000240 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000250 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000260 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000270 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000280 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000290 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 000002a0 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 000002b0 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002c0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002d0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002e0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002f0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 00000300 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 00000310 6e 38 50 29 6c 90 a7 bd d9 16 03 01 00 04 0e 00 |n8P)l...........| 00000320 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 01 00 86 10 00 00 82 00 80 6d 51 f3 7f f9 |...........mQ...| 00000010 3e fb 75 82 41 36 83 e8 6a ee 2a 2e 25 90 67 4c |>.u.A6..j.*.%.gL| 00000020 8e 62 2f 30 81 17 e0 85 09 0c 2b b7 23 d7 b0 e2 |.b/0......+.#...| 00000030 1d f7 3b d7 f5 a1 27 b6 ee 24 b6 1b cc 5b ea 66 |..;...'..$...[.f| 00000040 0d 6a f4 e5 85 f9 da 43 b4 0e 86 85 e1 f5 aa be |.j.....C........| 00000050 c8 ce 39 4c 9c 86 00 08 c2 4b e2 c6 ec 2f f7 ce |..9L.....K.../..| 00000060 e6 bd 77 82 6f 23 b6 e0 bd a2 92 b7 3a ac e8 56 |..w.o#......:..V| 00000070 f1 af 54 5e 46 87 e9 3b 33 e7 b8 28 b7 d6 c8 90 |..T^F..;3..(....| 00000080 35 d4 1c 43 d1 30 6f 55 4e 0a 70 14 03 01 00 01 |5..C.0oUN.p.....| 00000090 01 16 03 01 00 24 cd c0 68 dc 2e 69 cc c7 5b c5 |.....$..h..i..[.| 000000a0 3f bd 40 cf a0 0f 41 34 ce 16 37 10 26 c8 3f d1 |?.@...A4..7.&.?.| 000000b0 46 3b ad 7b b0 31 f3 c5 36 e7 |F;.{.1..6.| >>> Flow 4 (server to client) 00000000 14 03 01 00 01 01 16 03 01 00 24 ea 77 6f 3c 42 |..........$.wo....]| >>> Flow 5 (client to server) 00000000 17 03 01 00 1a 9e ae ca 55 df c4 d9 47 04 55 dd |........U...G.U.| 00000010 3b 33 e1 a6 16 6f a1 94 b1 9b 4d 0d cb 6c 3b 15 |;3...o....M..l;.| 00000020 03 01 00 16 92 5d 76 07 e9 b7 31 29 09 c5 b1 09 |.....]v...1)....| 00000030 2d 64 3d 85 8d f1 d1 40 54 b8 |-d=....@T.| go/src/pkg/crypto/tls/testdata/Client-TLSv11-ECDHE-ECDSA-AES0100644000000000000000000001513212412656737023166 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 02 00 59 02 00 00 55 03 02 53 04 f1 02 1c |....Y...U..S....| 00000010 d1 1c 6a 5f 7a 5c 26 69 92 cd ee c3 57 ed 96 90 |..j_z\&i....W...| 00000020 e3 c5 f1 ee 8b ee 99 5f 46 2c e6 20 c8 50 6a a4 |......._F,. .Pj.| 00000030 4b 93 e6 da ba 6d d4 87 f6 75 a8 9d 44 db b5 43 |K....m...u..D..C| 00000040 df 12 57 de a4 f1 bc fb b8 7a 3f 6a c0 09 00 00 |..W......z?j....| 00000050 0d ff 01 00 01 00 00 0b 00 04 03 00 01 02 16 03 |................| 00000060 02 02 0e 0b 00 02 0a 00 02 07 00 02 04 30 82 02 |.............0..| 00000070 00 30 82 01 62 02 09 00 b8 bf 2d 47 a0 d2 eb f4 |.0..b.....-G....| 00000080 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 0b 30 |0...*.H.=..0E1.0| 00000090 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 |...U....AU1.0...| 000000a0 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 |U....Some-State1| 000000b0 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e |!0...U....Intern| 000000c0 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c |et Widgits Pty L| 000000d0 74 64 30 1e 17 0d 31 32 31 31 32 32 31 35 30 36 |td0...1211221506| 000000e0 33 32 5a 17 0d 32 32 31 31 32 30 31 35 30 36 33 |32Z..22112015063| 000000f0 32 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 41 |2Z0E1.0...U....A| 00000100 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d 65 |U1.0...U....Some| 00000110 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a 13 |-State1!0...U...| 00000120 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 74 |.Internet Widgit| 00000130 73 20 50 74 79 20 4c 74 64 30 81 9b 30 10 06 07 |s Pty Ltd0..0...| 00000140 2a 86 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 |*.H.=....+...#..| 00000150 86 00 04 00 c4 a1 ed be 98 f9 0b 48 73 36 7e c3 |...........Hs6~.| 00000160 16 56 11 22 f2 3d 53 c3 3b 4d 21 3d cd 6b 75 e6 |.V.".=S.;M!=.ku.| 00000170 f6 b0 dc 9a df 26 c1 bc b2 87 f0 72 32 7c b3 64 |.....&.....r2|.d| 00000180 2f 1c 90 bc ea 68 23 10 7e fe e3 25 c0 48 3a 69 |/....h#.~..%.H:i| 00000190 e0 28 6d d3 37 00 ef 04 62 dd 0d a0 9c 70 62 83 |.(m.7...b....pb.| 000001a0 d8 81 d3 64 31 aa 9e 97 31 bd 96 b0 68 c0 9b 23 |...d1...1...h..#| 000001b0 de 76 64 3f 1a 5c 7f e9 12 0e 58 58 b6 5f 70 dd |.vd?.\....XX._p.| 000001c0 9b d8 ea d5 d7 f5 d5 cc b9 b6 9f 30 66 5b 66 9a |...........0f[f.| 000001d0 20 e2 27 e5 bf fe 3b 30 09 06 07 2a 86 48 ce 3d | .'...;0...*.H.=| 000001e0 04 01 03 81 8c 00 30 81 88 02 42 01 88 a2 4f eb |......0...B...O.| 000001f0 e2 45 c5 48 7d 1b ac f5 ed 98 9d ae 47 70 c0 5e |.E.H}.......Gp.^| 00000200 1b b6 2f bd f1 b6 4d b7 61 40 d3 11 a2 ce ee 0b |../...M.a@......| 00000210 7e 92 7e ff 76 9d c3 3b 7e a5 3f ce fa 10 e2 59 |~.~.v..;~.?....Y| 00000220 ec 47 2d 7c ac da 4e 97 0e 15 a0 6f d0 02 42 01 |.G-|..N....o..B.| 00000230 4d fc be 67 13 9c 2d 05 0e bd 3f a3 8c 25 c1 33 |M..g..-...?..%.3| 00000240 13 83 0d 94 06 bb d4 37 7a f6 ec 7a c9 86 2e dd |.......7z..z....| 00000250 d7 11 69 7f 85 7c 56 de fb 31 78 2b e4 c7 78 0d |..i..|V..1x+..x.| 00000260 ae cb be 9e 4e 36 24 31 7b 6a 0f 39 95 12 07 8f |....N6$1{j.9....| 00000270 2a 16 03 02 00 d4 0c 00 00 d0 03 00 17 41 04 7b |*............A.{| 00000280 c4 00 37 35 51 de c3 f2 a4 95 2c 19 21 3e a6 94 |..75Q.....,.!>..| 00000290 7b fd 04 d7 b7 1c 56 e6 af 3c ee 36 cb 55 e6 f0 |{.....V..<.6.U..| 000002a0 e6 24 34 6b 8a 02 66 71 f9 e2 f5 a6 c9 d7 6c dc |.$4k..fq......l.| 000002b0 65 59 ff 1c c9 ec a9 8b 07 d6 52 2c 01 3c c3 00 |eY........R,.<..| 000002c0 89 30 81 86 02 41 74 89 1a 31 72 e6 8b c0 4a ce |.0...At..1r...J.| 000002d0 8f 5a 49 a7 52 2d 6d b9 8b 50 17 62 2a 99 d6 3b |.ZI.R-m..P.b*..;| 000002e0 02 85 41 4d 34 53 b5 09 bd e3 ac 16 c1 9b e9 83 |..AM4S..........| 000002f0 cc 83 e3 9c 23 34 67 71 72 d4 05 a2 34 f7 08 29 |....#4gqr...4..)| 00000300 62 43 2e cc bc 08 01 02 41 59 de 5a d0 dd d7 6b |bC......AY.Z...k| 00000310 db 9c 35 29 79 f8 96 91 56 74 1f 18 7b ee 25 83 |..5)y...Vt..{.%.| 00000320 f2 37 0e 77 ab 38 fb 5e 04 0b 09 d9 b4 1f 3f be |.7.w.8.^......?.| 00000330 2e e3 60 e3 96 f3 29 c1 6d 8f 56 1b fd 62 14 48 |..`...).m.V..b.H| 00000340 e3 d9 2a ea 2f be 93 d0 8b 31 16 03 02 00 04 0e |..*./....1......| 00000350 00 00 00 |...| >>> Flow 3 (client to server) 00000000 16 03 02 00 46 10 00 00 42 41 04 1e 18 37 ef 0d |....F...BA...7..| 00000010 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd |.Q.5uq..T[....g.| 00000020 a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e |.$ >.V...(^.+-O.| 00000030 f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 |...lK[.V.2B.X..I| 00000040 a6 b5 68 1a 41 03 56 6b dc 5a 89 14 03 02 00 01 |..h.A.Vk.Z......| 00000050 01 16 03 02 00 40 00 00 00 00 00 00 00 00 00 00 |.....@..........| 00000060 00 00 00 00 00 00 b6 98 a2 a9 48 34 12 6b 0a 94 |..........H4.k..| 00000070 89 fc 38 04 63 5a 6f 63 36 3e d9 35 12 64 8c 28 |..8.cZoc6>.5.d.(| 00000080 99 a6 cf 2e 57 e3 14 6d 0a 8a ab f0 a6 58 37 7c |....W..m.....X7|| 00000090 96 04 d3 71 bc d4 |...q..| >>> Flow 4 (server to client) 00000000 14 03 02 00 01 01 16 03 02 00 40 c5 01 c9 0a b0 |..........@.....| 00000010 d8 ca 5e c1 19 dc 37 6c 2e a0 b3 11 a8 87 65 5a |..^...7l......eZ| 00000020 09 41 b9 fe 53 c4 c9 76 97 6d 7f ac c0 be d2 07 |.A..S..v.m......| 00000030 84 e5 5b 78 37 34 ee da 3b cb 3e 82 52 79 91 44 |..[x74..;.>.Ry.D| 00000040 b4 e4 1c ec 3a c0 c0 9d cd ff 13 |....:......| >>> Flow 5 (client to server) 00000000 17 03 02 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| 00000010 00 00 00 00 00 46 60 13 39 2b 2f 72 95 ed 0e aa |.....F`.9+/r....| 00000020 69 6e b4 64 3e 83 43 d0 f9 7f 37 7c 1d b9 ce 11 |in.d>.C...7|....| 00000030 d9 41 66 60 6d 15 03 02 00 30 00 00 00 00 00 00 |.Af`m....0......| 00000040 00 00 00 00 00 00 00 00 00 00 b1 26 d0 5d 08 98 |...........&.]..| 00000050 eb 28 42 74 31 58 42 95 c5 ad 1a 92 0a f5 5f ed |.(Bt1XB......._.| 00000060 45 98 e0 90 e5 a3 b6 8b 8d 18 |E.........| go/src/pkg/crypto/tls/testdata/Client-TLSv11-ECDHE-RSA-AES0100644000000000000000000001656712412656737023011 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 02 00 59 02 00 00 55 03 02 53 04 f1 02 fe |....Y...U..S....| 00000010 17 8b 79 ad 93 2e d3 89 66 9b 5d 9b b4 03 3e ba |..y.....f.]...>.| 00000020 65 2a f1 55 f9 3c 33 de 2c a7 47 20 fa 4f 82 11 |e*.U.<3.,.G .O..| 00000030 96 81 d0 70 2e 65 b3 68 2e 3a 6d d7 6c 74 22 33 |...p.e.h.:m.lt"3| 00000040 d4 ae 6c aa c8 f0 c7 20 8b 10 21 e7 c0 13 00 00 |..l.... ..!.....| 00000050 0d ff 01 00 01 00 00 0b 00 04 03 00 01 02 16 03 |................| 00000060 02 02 be 0b 00 02 ba 00 02 b7 00 02 b4 30 82 02 |.............0..| 00000070 b0 30 82 02 19 a0 03 02 01 02 02 09 00 85 b0 bb |.0..............| 00000080 a4 8a 7f b8 ca 30 0d 06 09 2a 86 48 86 f7 0d 01 |.....0...*.H....| 00000090 01 05 05 00 30 45 31 0b 30 09 06 03 55 04 06 13 |....0E1.0...U...| 000000a0 02 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f |.AU1.0...U....So| 000000b0 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 |me-State1!0...U.| 000000c0 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 |...Internet Widg| 000000d0 69 74 73 20 50 74 79 20 4c 74 64 30 1e 17 0d 31 |its Pty Ltd0...1| 000000e0 30 30 34 32 34 30 39 30 39 33 38 5a 17 0d 31 31 |00424090938Z..11| 000000f0 30 34 32 34 30 39 30 39 33 38 5a 30 45 31 0b 30 |0424090938Z0E1.0| 00000100 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 |...U....AU1.0...| 00000110 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 |U....Some-State1| 00000120 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e |!0...U....Intern| 00000130 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c |et Widgits Pty L| 00000140 74 64 30 81 9f 30 0d 06 09 2a 86 48 86 f7 0d 01 |td0..0...*.H....| 00000150 01 01 05 00 03 81 8d 00 30 81 89 02 81 81 00 bb |........0.......| 00000160 79 d6 f5 17 b5 e5 bf 46 10 d0 dc 69 be e6 2b 07 |y......F...i..+.| 00000170 43 5a d0 03 2d 8a 7a 43 85 b7 14 52 e7 a5 65 4c |CZ..-.zC...R..eL| 00000180 2c 78 b8 23 8c b5 b4 82 e5 de 1f 95 3b 7e 62 a5 |,x.#........;~b.| 00000190 2c a5 33 d6 fe 12 5c 7a 56 fc f5 06 bf fa 58 7b |,.3...\zV.....X{| 000001a0 26 3f b5 cd 04 d3 d0 c9 21 96 4a c7 f4 54 9f 5a |&?......!.J..T.Z| 000001b0 bf ef 42 71 00 fe 18 99 07 7f 7e 88 7d 7d f1 04 |..Bq......~.}}..| 000001c0 39 c4 a2 2e db 51 c9 7c e3 c0 4c 3b 32 66 01 cf |9....Q.|..L;2f..| 000001d0 af b1 1d b8 71 9a 1d db db 89 6b ae da 2d 79 02 |....q.....k..-y.| 000001e0 03 01 00 01 a3 81 a7 30 81 a4 30 1d 06 03 55 1d |.......0..0...U.| 000001f0 0e 04 16 04 14 b1 ad e2 85 5a cf cb 28 db 69 ce |.........Z..(.i.| 00000200 23 69 de d3 26 8e 18 88 39 30 75 06 03 55 1d 23 |#i..&...90u..U.#| 00000210 04 6e 30 6c 80 14 b1 ad e2 85 5a cf cb 28 db 69 |.n0l......Z..(.i| 00000220 ce 23 69 de d3 26 8e 18 88 39 a1 49 a4 47 30 45 |.#i..&...9.I.G0E| 00000230 31 0b 30 09 06 03 55 04 06 13 02 41 55 31 13 30 |1.0...U....AU1.0| 00000240 11 06 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 |...U....Some-Sta| 00000250 74 65 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 |te1!0...U....Int| 00000260 65 72 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 |ernet Widgits Pt| 00000270 79 20 4c 74 64 82 09 00 85 b0 bb a4 8a 7f b8 ca |y Ltd...........| 00000280 30 0c 06 03 55 1d 13 04 05 30 03 01 01 ff 30 0d |0...U....0....0.| 00000290 06 09 2a 86 48 86 f7 0d 01 01 05 05 00 03 81 81 |..*.H...........| 000002a0 00 08 6c 45 24 c7 6b b1 59 ab 0c 52 cc f2 b0 14 |..lE$.k.Y..R....| 000002b0 d7 87 9d 7a 64 75 b5 5a 95 66 e4 c5 2b 8e ae 12 |...zdu.Z.f..+...| 000002c0 66 1f eb 4f 38 b3 6e 60 d3 92 fd f7 41 08 b5 25 |f..O8.n`....A..%| 000002d0 13 b1 18 7a 24 fb 30 1d ba ed 98 b9 17 ec e7 d7 |...z$.0.........| 000002e0 31 59 db 95 d3 1d 78 ea 50 56 5c d5 82 5a 2d 5a |1Y....x.PV\..Z-Z| 000002f0 5f 33 c4 b6 d8 c9 75 90 96 8c 0f 52 98 b5 cd 98 |_3....u....R....| 00000300 1f 89 20 5f f2 a0 1c a3 1b 96 94 dd a9 fd 57 e9 |.. _..........W.| 00000310 70 e8 26 6d 71 99 9b 26 6e 38 50 29 6c 90 a7 bd |p.&mq..&n8P)l...| 00000320 d9 16 03 02 00 cb 0c 00 00 c7 03 00 17 41 04 26 |.............A.&| 00000330 56 18 02 e5 66 d4 aa 24 7e ae 39 e5 ca 78 6c c1 |V...f..$~.9..xl.| 00000340 90 02 c3 c4 ad 79 2c 47 a8 bf 54 e2 8a 22 b6 ef |.....y,G..T.."..| 00000350 99 d4 7a 7f 8f 78 6a 78 4e 14 2a 16 0d bb 54 38 |..z..xjxN.*...T8| 00000360 59 1f 7a 53 1b c7 73 10 89 4b de c3 66 39 7a 00 |Y.zS..s..K..f9z.| 00000370 80 3a 88 38 c8 15 07 ab 2f 0f 0d cb 19 07 84 ac |.:.8..../.......| 00000380 24 fd 8b d2 9d 05 45 c6 11 c3 d6 84 58 95 5a 08 |$.....E.....X.Z.| 00000390 b9 a4 2c c0 41 4e 34 e0 b2 24 98 94 b7 67 27 50 |..,.AN4..$...g'P| 000003a0 ba 82 35 28 a9 bf 16 ee e3 7b 49 9c 4c 81 80 69 |..5(.....{I.L..i| 000003b0 d7 aa ed 46 ea 9a 68 c4 97 b7 11 d4 35 91 74 5e |...F..h.....5.t^| 000003c0 54 10 34 83 cd c4 06 18 49 7d 7a 28 c9 53 06 73 |T.4.....I}z(.S.s| 000003d0 00 7b 04 b6 d8 36 a7 4b 67 7f 81 30 94 de 40 4d |.{...6.Kg..0..@M| 000003e0 18 f8 c4 b7 02 00 44 8e bc 72 06 24 53 15 74 72 |......D..r.$S.tr| 000003f0 8d 16 03 02 00 04 0e 00 00 00 |..........| >>> Flow 3 (client to server) 00000000 16 03 02 00 46 10 00 00 42 41 04 1e 18 37 ef 0d |....F...BA...7..| 00000010 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd |.Q.5uq..T[....g.| 00000020 a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e |.$ >.V...(^.+-O.| 00000030 f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 |...lK[.V.2B.X..I| 00000040 a6 b5 68 1a 41 03 56 6b dc 5a 89 14 03 02 00 01 |..h.A.Vk.Z......| 00000050 01 16 03 02 00 40 00 00 00 00 00 00 00 00 00 00 |.....@..........| 00000060 00 00 00 00 00 00 8a 87 81 38 35 c0 4c bb f8 12 |.........85.L...| 00000070 fa 75 04 cd 1e 3a 61 96 93 c8 fb 07 d1 6d b4 55 |.u...:a......m.U| 00000080 0f b5 0f 07 35 0a 96 ce 5c 6f 24 62 d3 68 e4 b0 |....5...\o$b.h..| 00000090 5d be 81 37 c2 9c |]..7..| >>> Flow 4 (server to client) 00000000 14 03 02 00 01 01 16 03 02 00 40 66 36 8d f8 8c |..........@f6...| 00000010 7f db 38 e8 39 df f8 2f cb 88 9c 14 d9 89 10 b4 |..8.9../........| 00000020 be 59 88 d7 f3 73 62 af a3 42 66 6e 74 38 64 9f |.Y...sb..Bfnt8d.| 00000030 16 79 09 d7 14 7e 91 8a 70 73 63 28 30 58 fe cc |.y...~..psc(0X..| 00000040 42 45 d6 37 fb 9e 8c c1 01 af 34 |BE.7......4| >>> Flow 5 (client to server) 00000000 17 03 02 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| 00000010 00 00 00 00 00 31 0b e3 9d 2a 05 83 19 7d 10 36 |.....1...*...}.6| 00000020 23 dc da fe 00 ab d3 aa 8f ce 28 5f 08 fd b7 59 |#.........(_...Y| 00000030 1e 00 2e 25 5a 15 03 02 00 30 00 00 00 00 00 00 |...%Z....0......| 00000040 00 00 00 00 00 00 00 00 00 00 10 91 fd fa 59 07 |..............Y.| 00000050 df 2c 92 25 15 7b 7c 83 44 89 0d 4f 65 43 99 2e |.,.%.{|.D..OeC..| 00000060 41 5d 51 c9 09 89 ed 02 08 bc |A]Q.......| go/src/pkg/crypto/tls/testdata/Client-TLSv11-RSA-RC40100644000000000000000000001420712412656737022150 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 02 00 51 02 00 00 4d 03 02 53 04 f1 02 d4 |....Q...M..S....| 00000010 69 65 aa 96 3d 42 96 eb 9e 7d 8a 18 af 4c 7c 5d |ie..=B...}...L|]| 00000020 fb 97 5f da 94 62 13 69 1f 66 06 20 aa 52 e3 08 |.._..b.i.f. .R..| 00000030 35 0a 87 d5 ef 93 49 ab 1a 74 dd 90 bd 69 70 d1 |5.....I..t...ip.| 00000040 e9 f1 44 17 3a dc 33 98 f5 e5 ab 93 00 05 00 00 |..D.:.3.........| 00000050 05 ff 01 00 01 00 16 03 02 02 be 0b 00 02 ba 00 |................| 00000060 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000070 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000080 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000090 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 000000a0 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 000000b0 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000c0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000d0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000e0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000f0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 00000100 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 00000110 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000120 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000130 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000140 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000150 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000160 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000170 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000180 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000190 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 000001a0 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 000001b0 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001c0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001d0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001e0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001f0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 00000200 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 00000210 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000220 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000230 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000240 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000250 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000260 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000270 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000280 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000290 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 000002a0 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 000002b0 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002c0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002d0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002e0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002f0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 00000300 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 00000310 6e 38 50 29 6c 90 a7 bd d9 16 03 02 00 04 0e 00 |n8P)l...........| 00000320 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 02 00 86 10 00 00 82 00 80 6d 51 f3 7f f9 |...........mQ...| 00000010 3e fb 75 82 41 36 83 e8 6a ee 2a 2e 25 90 67 4c |>.u.A6..j.*.%.gL| 00000020 8e 62 2f 30 81 17 e0 85 09 0c 2b b7 23 d7 b0 e2 |.b/0......+.#...| 00000030 1d f7 3b d7 f5 a1 27 b6 ee 24 b6 1b cc 5b ea 66 |..;...'..$...[.f| 00000040 0d 6a f4 e5 85 f9 da 43 b4 0e 86 85 e1 f5 aa be |.j.....C........| 00000050 c8 ce 39 4c 9c 86 00 08 c2 4b e2 c6 ec 2f f7 ce |..9L.....K.../..| 00000060 e6 bd 77 82 6f 23 b6 e0 bd a2 92 b7 3a ac e8 56 |..w.o#......:..V| 00000070 f1 af 54 5e 46 87 e9 3b 33 e7 b8 28 b7 d6 c8 90 |..T^F..;3..(....| 00000080 35 d4 1c 43 d1 30 6f 55 4e 0a 70 14 03 02 00 01 |5..C.0oUN.p.....| 00000090 01 16 03 02 00 24 07 9f dc df 2d c3 a6 88 06 28 |.....$....-....(| 000000a0 21 e0 e0 d3 31 99 fc 89 b8 82 6e 95 f4 4b 9e e2 |!...1.....n..K..| 000000b0 d9 36 5c 14 ce d7 db e2 78 4e |.6\.....xN| >>> Flow 4 (server to client) 00000000 14 03 02 00 01 01 16 03 02 00 24 81 72 75 80 d4 |..........$.ru..| 00000010 1b 1a 32 00 89 bf 9e 79 30 b9 6b 67 e0 8e c7 eb |..2....y0.kg....| 00000020 73 f2 e4 93 51 65 9b 5f 91 b1 b4 b1 f7 44 76 |s...Qe._.....Dv| >>> Flow 5 (client to server) 00000000 17 03 02 00 1a b2 91 39 63 c0 38 3c 4d 25 fd 14 |.......9c.8>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 03 00 59 02 00 00 55 03 03 53 04 f1 03 6f |....Y...U..S...o| 00000010 c6 4b 55 27 fe e8 fe 4d 7c 0e d4 20 98 b8 7c 81 |.KU'...M|.. ..|.| 00000020 3d 31 f8 35 66 2f 0a 0b f1 2c e3 20 86 4d 12 32 |=1.5f/...,. .M.2| 00000030 73 e3 ba be 25 50 a4 a2 a1 7b f1 9a 76 7a 75 fb |s...%P...{..vzu.| 00000040 e2 64 a2 12 ec f3 e7 9d 9a 24 6e 94 c0 09 00 00 |.d.......$n.....| 00000050 0d ff 01 00 01 00 00 0b 00 04 03 00 01 02 16 03 |................| 00000060 03 02 0e 0b 00 02 0a 00 02 07 00 02 04 30 82 02 |.............0..| 00000070 00 30 82 01 62 02 09 00 b8 bf 2d 47 a0 d2 eb f4 |.0..b.....-G....| 00000080 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 0b 30 |0...*.H.=..0E1.0| 00000090 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 |...U....AU1.0...| 000000a0 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 |U....Some-State1| 000000b0 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e |!0...U....Intern| 000000c0 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c |et Widgits Pty L| 000000d0 74 64 30 1e 17 0d 31 32 31 31 32 32 31 35 30 36 |td0...1211221506| 000000e0 33 32 5a 17 0d 32 32 31 31 32 30 31 35 30 36 33 |32Z..22112015063| 000000f0 32 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 41 |2Z0E1.0...U....A| 00000100 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d 65 |U1.0...U....Some| 00000110 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a 13 |-State1!0...U...| 00000120 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 74 |.Internet Widgit| 00000130 73 20 50 74 79 20 4c 74 64 30 81 9b 30 10 06 07 |s Pty Ltd0..0...| 00000140 2a 86 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 |*.H.=....+...#..| 00000150 86 00 04 00 c4 a1 ed be 98 f9 0b 48 73 36 7e c3 |...........Hs6~.| 00000160 16 56 11 22 f2 3d 53 c3 3b 4d 21 3d cd 6b 75 e6 |.V.".=S.;M!=.ku.| 00000170 f6 b0 dc 9a df 26 c1 bc b2 87 f0 72 32 7c b3 64 |.....&.....r2|.d| 00000180 2f 1c 90 bc ea 68 23 10 7e fe e3 25 c0 48 3a 69 |/....h#.~..%.H:i| 00000190 e0 28 6d d3 37 00 ef 04 62 dd 0d a0 9c 70 62 83 |.(m.7...b....pb.| 000001a0 d8 81 d3 64 31 aa 9e 97 31 bd 96 b0 68 c0 9b 23 |...d1...1...h..#| 000001b0 de 76 64 3f 1a 5c 7f e9 12 0e 58 58 b6 5f 70 dd |.vd?.\....XX._p.| 000001c0 9b d8 ea d5 d7 f5 d5 cc b9 b6 9f 30 66 5b 66 9a |...........0f[f.| 000001d0 20 e2 27 e5 bf fe 3b 30 09 06 07 2a 86 48 ce 3d | .'...;0...*.H.=| 000001e0 04 01 03 81 8c 00 30 81 88 02 42 01 88 a2 4f eb |......0...B...O.| 000001f0 e2 45 c5 48 7d 1b ac f5 ed 98 9d ae 47 70 c0 5e |.E.H}.......Gp.^| 00000200 1b b6 2f bd f1 b6 4d b7 61 40 d3 11 a2 ce ee 0b |../...M.a@......| 00000210 7e 92 7e ff 76 9d c3 3b 7e a5 3f ce fa 10 e2 59 |~.~.v..;~.?....Y| 00000220 ec 47 2d 7c ac da 4e 97 0e 15 a0 6f d0 02 42 01 |.G-|..N....o..B.| 00000230 4d fc be 67 13 9c 2d 05 0e bd 3f a3 8c 25 c1 33 |M..g..-...?..%.3| 00000240 13 83 0d 94 06 bb d4 37 7a f6 ec 7a c9 86 2e dd |.......7z..z....| 00000250 d7 11 69 7f 85 7c 56 de fb 31 78 2b e4 c7 78 0d |..i..|V..1x+..x.| 00000260 ae cb be 9e 4e 36 24 31 7b 6a 0f 39 95 12 07 8f |....N6$1{j.9....| 00000270 2a 16 03 03 00 d7 0c 00 00 d3 03 00 17 41 04 a3 |*............A..| 00000280 03 8c de d2 b0 68 c8 25 0e 85 ea d7 ae 13 0d 79 |.....h.%.......y| 00000290 ec 59 0d b5 4d 51 96 d9 7f 64 36 fb 4c d5 6a 26 |.Y..MQ...d6.L.j&| 000002a0 ae 0e 48 61 df 5c 2b d4 ff 09 41 15 c4 14 8e 1b |..Ha.\+...A.....| 000002b0 84 a8 c8 cd ef 10 97 95 66 67 85 dd fd dc 2a 04 |........fg....*.| 000002c0 03 00 8a 30 81 87 02 41 11 75 5d bc bd 08 28 d4 |...0...A.u]...(.| 000002d0 5b 1b 45 7f 9c d3 8d 0b 91 fa f6 82 ba 59 bd 3e |[.E..........Y.>| 000002e0 96 01 c6 1d 38 db fe 08 e7 56 89 fc 10 b0 37 6a |....8....V....7j| 000002f0 3d d6 c9 50 16 53 f7 c2 a2 60 67 82 1f 74 b8 d5 |=..P.S...`g..t..| 00000300 bc 02 ec 96 db 82 18 8c 87 02 42 01 0d df f7 b7 |..........B.....| 00000310 05 3c 8c 56 f0 1d 33 18 cf c5 4c 80 7e 0b d9 f9 |.<.V..3...L.~...| 00000320 f0 51 69 fe 5d b8 0b 64 c0 c7 0d f4 75 65 ae 07 |.Qi.]..d....ue..| 00000330 9d cf f4 4b ad 52 f6 b8 10 26 18 bd d6 e2 0d a8 |...K.R...&......| 00000340 80 10 50 34 15 cd 72 0b 7d a9 94 de 4c 16 03 03 |..P4..r.}...L...| 00000350 00 30 0d 00 00 28 03 01 02 40 00 20 06 01 06 02 |.0...(...@. ....| 00000360 06 03 05 01 05 02 05 03 04 01 04 02 04 03 03 01 |................| 00000370 03 02 03 03 02 01 02 02 02 03 01 01 00 00 0e 00 |................| 00000380 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 03 02 0a 0b 00 02 06 00 02 03 00 02 00 30 |...............0| 00000010 82 01 fc 30 82 01 5e 02 09 00 9a 30 84 6c 26 35 |...0..^....0.l&5| 00000020 d9 17 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 |..0...*.H.=..0E1| 00000030 0b 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 |.0...U....AU1.0.| 00000040 06 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 |..U....Some-Stat| 00000050 65 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 |e1!0...U....Inte| 00000060 72 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 |rnet Widgits Pty| 00000070 20 4c 74 64 30 1e 17 0d 31 32 31 31 31 34 31 33 | Ltd0...12111413| 00000080 32 35 35 33 5a 17 0d 32 32 31 31 31 32 31 33 32 |2553Z..221112132| 00000090 35 35 33 5a 30 41 31 0b 30 09 06 03 55 04 06 13 |553Z0A1.0...U...| 000000a0 02 41 55 31 0c 30 0a 06 03 55 04 08 13 03 4e 53 |.AU1.0...U....NS| 000000b0 57 31 10 30 0e 06 03 55 04 07 13 07 50 79 72 6d |W1.0...U....Pyrm| 000000c0 6f 6e 74 31 12 30 10 06 03 55 04 03 13 09 4a 6f |ont1.0...U....Jo| 000000d0 65 6c 20 53 69 6e 67 30 81 9b 30 10 06 07 2a 86 |el Sing0..0...*.| 000000e0 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 86 00 |H.=....+...#....| 000000f0 04 00 95 8c 91 75 14 c0 5e c4 57 b4 d4 c3 6f 8d |.....u..^.W...o.| 00000100 ae 68 1e dd 6f ce 86 e1 7e 6e b2 48 3e 81 e5 4e |.h..o...~n.H>..N| 00000110 e2 c6 88 4b 64 dc f5 30 bb d3 ff 65 cc 5b f4 dd |...Kd..0...e.[..| 00000120 b5 6a 3e 3e d0 1d de 47 c3 76 ad 19 f6 45 2c 8c |.j>>...G.v...E,.| 00000130 bc d8 1d 01 4c 1f 70 90 46 76 48 8b 8f 83 cc 4a |....L.p.FvH....J| 00000140 5c 8f 40 76 da e0 89 ec 1d 2b c4 4e 30 76 28 41 |\.@v.....+.N0v(A| 00000150 b2 62 a8 fb 5b f1 f9 4e 7a 8d bd 09 b8 ae ea 8b |.b..[..Nz.......| 00000160 18 27 4f 2e 70 fe 13 96 ba c3 d3 40 16 cd 65 4e |.'O.p......@..eN| 00000170 ac 11 1e e6 f1 30 09 06 07 2a 86 48 ce 3d 04 01 |.....0...*.H.=..| 00000180 03 81 8c 00 30 81 88 02 42 00 e0 14 c4 60 60 0b |....0...B....``.| 00000190 72 68 b0 32 5d 61 4a 02 74 5c c2 81 b9 16 a8 3f |rh.2]aJ.t\.....?| 000001a0 29 c8 36 c7 81 ff 6c b6 5b d9 70 f1 38 3b 50 48 |).6...l.[.p.8;PH| 000001b0 28 94 cb 09 1a 52 f1 5d ee 8d f2 b9 f0 f0 da d9 |(....R.]........| 000001c0 15 3a f9 bd 03 7a 87 a2 23 35 ec 02 42 01 a3 d4 |.:...z..#5..B...| 000001d0 8a 78 35 1c 4a 9a 23 d2 0a be 2b 10 31 9d 9c 5f |.x5.J.#...+.1.._| 000001e0 be e8 91 b3 da 1a f5 5d a3 23 f5 26 8b 45 70 8d |.......].#.&.Ep.| 000001f0 65 62 9b 7e 01 99 3d 18 f6 10 9a 38 61 9b 2e 57 |eb.~..=....8a..W| 00000200 e4 fa cc b1 8a ce e2 23 a0 87 f0 e1 67 51 eb 16 |.......#....gQ..| 00000210 03 03 00 46 10 00 00 42 41 04 1e 18 37 ef 0d 19 |...F...BA...7...| 00000220 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd a7 |Q.5uq..T[....g..| 00000230 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e f1 |$ >.V...(^.+-O..| 00000240 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 a6 |..lK[.V.2B.X..I.| 00000250 b5 68 1a 41 03 56 6b dc 5a 89 16 03 03 00 92 0f |.h.A.Vk.Z.......| 00000260 00 00 8e 04 03 00 8a 30 81 87 02 42 00 c6 85 8e |.......0...B....| 00000270 06 b7 04 04 e9 cd 9e 3e cb 66 23 95 b4 42 9c 64 |.......>.f#..B.d| 00000280 81 39 05 3f b5 21 f8 28 af 60 6b 4d 3d ba a1 4b |.9.?.!.(.`kM=..K| 00000290 5e 77 ef e7 59 28 fe 1d c1 27 a2 ff a8 de 33 48 |^w..Y(...'....3H| 000002a0 b3 c1 85 6a 42 9b f9 7e 7e 31 c2 e5 bd 66 02 41 |...jB..~~1...f.A| 000002b0 4b 49 c6 cd 02 e3 83 f7 03 50 18 6d b4 c9 51 02 |KI.......P.m..Q.| 000002c0 c0 ab 87 bc e0 3e 4b 89 53 3a e2 65 89 97 02 c1 |.....>K.S:.e....| 000002d0 88 0d 64 db 8e 4f 73 4e ea 29 0b ed a0 f5 ce 3d |..d..OsN.).....=| 000002e0 5f cc 20 ef 0a 22 02 82 f2 14 2a b7 42 68 bd c7 |_. .."....*.Bh..| 000002f0 4d 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 |M..........@....| 00000300 00 00 00 00 00 00 00 00 00 00 00 00 f0 cc 4f c7 |..............O.| 00000310 b6 0f c9 38 4d 4b 97 2c 4f be 53 08 4c d6 5b 4e |...8MK.,O.S.L.[N| 00000320 24 70 30 81 82 3a 7f 62 95 03 4d fc 54 78 ec 13 |$p0..:.b..M.Tx..| 00000330 b2 a1 00 85 2b 04 e4 1d 7b 6e 87 60 |....+...{n.`| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 40 d5 2a 76 79 1c |..........@.*vy.| 00000010 e7 d5 b1 5c 65 6b d1 45 73 53 4c 05 3a 6c 5d 81 |...\ek.EsSL.:l].| 00000020 dd 2f f0 74 62 e4 8e f8 ed 21 99 c7 4f d6 28 40 |./.tb....!..O.(@| 00000030 63 d9 6d e5 b0 04 73 27 7a 1d 08 19 31 10 da ef |c.m...s'z...1...| 00000040 79 26 33 fb 45 23 be a4 7c 03 66 |y&3.E#..|.f| >>> Flow 5 (client to server) 00000000 17 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| 00000010 00 00 00 00 00 e2 53 bd c0 ef 9e e6 44 94 ea 5d |......S.....D..]| 00000020 f5 c5 a9 4b ed eb 1c 49 9f 79 44 f9 cd d7 de 02 |...K...I.yD.....| 00000030 51 10 ae 87 7d 15 03 03 00 30 00 00 00 00 00 00 |Q...}....0......| 00000040 00 00 00 00 00 00 00 00 00 00 d3 95 13 7f 5f 58 |.............._X| 00000050 ab d6 17 ea 01 2c 2a ea 5d 7c 44 61 4a 27 97 52 |.....,*.]|DaJ'.R| 00000060 cc 9b 86 f6 37 42 2b 94 01 49 |....7B+..I| go/src/pkg/crypto/tls/testdata/Client-TLSv12-ClientCert-ECDSA-RSA0100644000000000000000000002305512412656737024433 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 03 00 51 02 00 00 4d 03 03 53 04 f1 03 b0 |....Q...M..S....| 00000010 43 00 97 24 a7 a8 ea b2 24 fe 96 24 a1 49 64 fd |C..$....$..$.Id.| 00000020 1c a3 30 35 2d 85 a7 40 42 86 6b 20 af 27 7f ac |..05-..@B.k .'..| 00000030 8b 16 89 6c 78 b7 f5 29 02 58 a6 8b 61 43 c2 b0 |...lx..).X..aC..| 00000040 e0 a8 96 c8 fa 2b 26 ad 9a 5f 2d d6 00 05 00 00 |.....+&.._-.....| 00000050 05 ff 01 00 01 00 16 03 03 02 be 0b 00 02 ba 00 |................| 00000060 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000070 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000080 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000090 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 000000a0 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 000000b0 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000c0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000d0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000e0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000f0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 00000100 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 00000110 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000120 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000130 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000140 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000150 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000160 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000170 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000180 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000190 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 000001a0 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 000001b0 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001c0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001d0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001e0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001f0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 00000200 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 00000210 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000220 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000230 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000240 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000250 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000260 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000270 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000280 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000290 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 000002a0 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 000002b0 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002c0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002d0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002e0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002f0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 00000300 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 00000310 6e 38 50 29 6c 90 a7 bd d9 16 03 03 00 30 0d 00 |n8P)l........0..| 00000320 00 28 03 01 02 40 00 20 06 01 06 02 06 03 05 01 |.(...@. ........| 00000330 05 02 05 03 04 01 04 02 04 03 03 01 03 02 03 03 |................| 00000340 02 01 02 02 02 03 01 01 00 00 0e 00 00 00 |..............| >>> Flow 3 (client to server) 00000000 16 03 03 02 0a 0b 00 02 06 00 02 03 00 02 00 30 |...............0| 00000010 82 01 fc 30 82 01 5e 02 09 00 9a 30 84 6c 26 35 |...0..^....0.l&5| 00000020 d9 17 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 |..0...*.H.=..0E1| 00000030 0b 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 |.0...U....AU1.0.| 00000040 06 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 |..U....Some-Stat| 00000050 65 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 |e1!0...U....Inte| 00000060 72 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 |rnet Widgits Pty| 00000070 20 4c 74 64 30 1e 17 0d 31 32 31 31 31 34 31 33 | Ltd0...12111413| 00000080 32 35 35 33 5a 17 0d 32 32 31 31 31 32 31 33 32 |2553Z..221112132| 00000090 35 35 33 5a 30 41 31 0b 30 09 06 03 55 04 06 13 |553Z0A1.0...U...| 000000a0 02 41 55 31 0c 30 0a 06 03 55 04 08 13 03 4e 53 |.AU1.0...U....NS| 000000b0 57 31 10 30 0e 06 03 55 04 07 13 07 50 79 72 6d |W1.0...U....Pyrm| 000000c0 6f 6e 74 31 12 30 10 06 03 55 04 03 13 09 4a 6f |ont1.0...U....Jo| 000000d0 65 6c 20 53 69 6e 67 30 81 9b 30 10 06 07 2a 86 |el Sing0..0...*.| 000000e0 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 86 00 |H.=....+...#....| 000000f0 04 00 95 8c 91 75 14 c0 5e c4 57 b4 d4 c3 6f 8d |.....u..^.W...o.| 00000100 ae 68 1e dd 6f ce 86 e1 7e 6e b2 48 3e 81 e5 4e |.h..o...~n.H>..N| 00000110 e2 c6 88 4b 64 dc f5 30 bb d3 ff 65 cc 5b f4 dd |...Kd..0...e.[..| 00000120 b5 6a 3e 3e d0 1d de 47 c3 76 ad 19 f6 45 2c 8c |.j>>...G.v...E,.| 00000130 bc d8 1d 01 4c 1f 70 90 46 76 48 8b 8f 83 cc 4a |....L.p.FvH....J| 00000140 5c 8f 40 76 da e0 89 ec 1d 2b c4 4e 30 76 28 41 |\.@v.....+.N0v(A| 00000150 b2 62 a8 fb 5b f1 f9 4e 7a 8d bd 09 b8 ae ea 8b |.b..[..Nz.......| 00000160 18 27 4f 2e 70 fe 13 96 ba c3 d3 40 16 cd 65 4e |.'O.p......@..eN| 00000170 ac 11 1e e6 f1 30 09 06 07 2a 86 48 ce 3d 04 01 |.....0...*.H.=..| 00000180 03 81 8c 00 30 81 88 02 42 00 e0 14 c4 60 60 0b |....0...B....``.| 00000190 72 68 b0 32 5d 61 4a 02 74 5c c2 81 b9 16 a8 3f |rh.2]aJ.t\.....?| 000001a0 29 c8 36 c7 81 ff 6c b6 5b d9 70 f1 38 3b 50 48 |).6...l.[.p.8;PH| 000001b0 28 94 cb 09 1a 52 f1 5d ee 8d f2 b9 f0 f0 da d9 |(....R.]........| 000001c0 15 3a f9 bd 03 7a 87 a2 23 35 ec 02 42 01 a3 d4 |.:...z..#5..B...| 000001d0 8a 78 35 1c 4a 9a 23 d2 0a be 2b 10 31 9d 9c 5f |.x5.J.#...+.1.._| 000001e0 be e8 91 b3 da 1a f5 5d a3 23 f5 26 8b 45 70 8d |.......].#.&.Ep.| 000001f0 65 62 9b 7e 01 99 3d 18 f6 10 9a 38 61 9b 2e 57 |eb.~..=....8a..W| 00000200 e4 fa cc b1 8a ce e2 23 a0 87 f0 e1 67 51 eb 16 |.......#....gQ..| 00000210 03 03 00 86 10 00 00 82 00 80 6d 51 f3 7f f9 3e |..........mQ...>| 00000220 fb 75 82 41 36 83 e8 6a ee 2a 2e 25 90 67 4c 8e |.u.A6..j.*.%.gL.| 00000230 62 2f 30 81 17 e0 85 09 0c 2b b7 23 d7 b0 e2 1d |b/0......+.#....| 00000240 f7 3b d7 f5 a1 27 b6 ee 24 b6 1b cc 5b ea 66 0d |.;...'..$...[.f.| 00000250 6a f4 e5 85 f9 da 43 b4 0e 86 85 e1 f5 aa be c8 |j.....C.........| 00000260 ce 39 4c 9c 86 00 08 c2 4b e2 c6 ec 2f f7 ce e6 |.9L.....K.../...| 00000270 bd 77 82 6f 23 b6 e0 bd a2 92 b7 3a ac e8 56 f1 |.w.o#......:..V.| 00000280 af 54 5e 46 87 e9 3b 33 e7 b8 28 b7 d6 c8 90 35 |.T^F..;3..(....5| 00000290 d4 1c 43 d1 30 6f 55 4e 0a 70 16 03 03 00 92 0f |..C.0oUN.p......| 000002a0 00 00 8e 04 03 00 8a 30 81 87 02 42 00 c6 85 8e |.......0...B....| 000002b0 06 b7 04 04 e9 cd 9e 3e cb 66 23 95 b4 42 9c 64 |.......>.f#..B.d| 000002c0 81 39 05 3f b5 21 f8 28 af 60 6b 4d 3d ba a1 4b |.9.?.!.(.`kM=..K| 000002d0 5e 77 ef e7 59 28 fe 1d c1 27 a2 ff a8 de 33 48 |^w..Y(...'....3H| 000002e0 b3 c1 85 6a 42 9b f9 7e 7e 31 c2 e5 bd 66 02 41 |...jB..~~1...f.A| 000002f0 4b 49 c6 cd 02 e3 83 f7 03 50 18 6d b4 c9 51 02 |KI.......P.m..Q.| 00000300 c0 ab 87 bc e0 3e 4b 89 53 3a e2 65 89 97 02 c1 |.....>K.S:.e....| 00000310 88 5a 97 82 3e 55 6b 7c d8 db b8 cc 1b 30 84 0a |.Z..>Uk|.....0..| 00000320 7a 97 71 e4 10 bb a4 39 8c 2a cf f5 88 c7 d1 95 |z.q....9.*......| 00000330 73 14 03 03 00 01 01 16 03 03 00 24 9f 1e f0 72 |s..........$...r| 00000340 92 ea dc f7 56 96 37 e4 69 db db 66 1d f6 94 c4 |....V.7.i..f....| 00000350 18 31 4f d0 5d c5 f4 53 21 aa 98 b1 dc 08 94 94 |.1O.]..S!.......| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 24 ee 68 c1 87 9f |..........$.h...| 00000010 d7 90 94 f1 3b 6d 26 0b 3d 89 7a 45 3b 52 5d 3c |....;m&.=.zE;R]<| 00000020 dd 7c c1 4e 57 3e a9 ee 91 be cf 2b a3 98 9d |.|.NW>.....+...| >>> Flow 5 (client to server) 00000000 17 03 03 00 1a 88 33 3e 2b 22 6b 92 d0 bb 8a 1e |......3>+"k.....| 00000010 9b f4 9e aa 91 8b 2b 95 ea 53 c8 03 0a 93 58 15 |......+..S....X.| 00000020 03 03 00 16 c4 67 79 ba ec cf 90 b1 f9 ac ec 64 |.....gy........d| 00000030 72 01 08 8f 3a 98 aa 66 25 00 |r...:..f%.| go/src/pkg/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-ECDSA0100644000000000000000000002375312412656737024440 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 03 00 59 02 00 00 55 03 03 53 04 f1 02 fd |....Y...U..S....| 00000010 41 bd ef ee f3 da fc 1a 31 8c 77 f2 e9 66 54 a0 |A.......1.w..fT.| 00000020 f4 15 b1 1c 84 0d 6d 74 87 ac 7d 20 78 17 8b 08 |......mt..} x...| 00000030 10 20 c9 44 e4 8a 43 af 4a c7 b8 3d 99 f2 f7 af |. .D..C.J..=....| 00000040 bb a3 21 2f 40 cc ed b6 da a8 a1 d5 c0 09 00 00 |..!/@...........| 00000050 0d ff 01 00 01 00 00 0b 00 04 03 00 01 02 16 03 |................| 00000060 03 02 0e 0b 00 02 0a 00 02 07 00 02 04 30 82 02 |.............0..| 00000070 00 30 82 01 62 02 09 00 b8 bf 2d 47 a0 d2 eb f4 |.0..b.....-G....| 00000080 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 0b 30 |0...*.H.=..0E1.0| 00000090 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 |...U....AU1.0...| 000000a0 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 |U....Some-State1| 000000b0 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e |!0...U....Intern| 000000c0 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c |et Widgits Pty L| 000000d0 74 64 30 1e 17 0d 31 32 31 31 32 32 31 35 30 36 |td0...1211221506| 000000e0 33 32 5a 17 0d 32 32 31 31 32 30 31 35 30 36 33 |32Z..22112015063| 000000f0 32 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 41 |2Z0E1.0...U....A| 00000100 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d 65 |U1.0...U....Some| 00000110 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a 13 |-State1!0...U...| 00000120 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 74 |.Internet Widgit| 00000130 73 20 50 74 79 20 4c 74 64 30 81 9b 30 10 06 07 |s Pty Ltd0..0...| 00000140 2a 86 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 |*.H.=....+...#..| 00000150 86 00 04 00 c4 a1 ed be 98 f9 0b 48 73 36 7e c3 |...........Hs6~.| 00000160 16 56 11 22 f2 3d 53 c3 3b 4d 21 3d cd 6b 75 e6 |.V.".=S.;M!=.ku.| 00000170 f6 b0 dc 9a df 26 c1 bc b2 87 f0 72 32 7c b3 64 |.....&.....r2|.d| 00000180 2f 1c 90 bc ea 68 23 10 7e fe e3 25 c0 48 3a 69 |/....h#.~..%.H:i| 00000190 e0 28 6d d3 37 00 ef 04 62 dd 0d a0 9c 70 62 83 |.(m.7...b....pb.| 000001a0 d8 81 d3 64 31 aa 9e 97 31 bd 96 b0 68 c0 9b 23 |...d1...1...h..#| 000001b0 de 76 64 3f 1a 5c 7f e9 12 0e 58 58 b6 5f 70 dd |.vd?.\....XX._p.| 000001c0 9b d8 ea d5 d7 f5 d5 cc b9 b6 9f 30 66 5b 66 9a |...........0f[f.| 000001d0 20 e2 27 e5 bf fe 3b 30 09 06 07 2a 86 48 ce 3d | .'...;0...*.H.=| 000001e0 04 01 03 81 8c 00 30 81 88 02 42 01 88 a2 4f eb |......0...B...O.| 000001f0 e2 45 c5 48 7d 1b ac f5 ed 98 9d ae 47 70 c0 5e |.E.H}.......Gp.^| 00000200 1b b6 2f bd f1 b6 4d b7 61 40 d3 11 a2 ce ee 0b |../...M.a@......| 00000210 7e 92 7e ff 76 9d c3 3b 7e a5 3f ce fa 10 e2 59 |~.~.v..;~.?....Y| 00000220 ec 47 2d 7c ac da 4e 97 0e 15 a0 6f d0 02 42 01 |.G-|..N....o..B.| 00000230 4d fc be 67 13 9c 2d 05 0e bd 3f a3 8c 25 c1 33 |M..g..-...?..%.3| 00000240 13 83 0d 94 06 bb d4 37 7a f6 ec 7a c9 86 2e dd |.......7z..z....| 00000250 d7 11 69 7f 85 7c 56 de fb 31 78 2b e4 c7 78 0d |..i..|V..1x+..x.| 00000260 ae cb be 9e 4e 36 24 31 7b 6a 0f 39 95 12 07 8f |....N6$1{j.9....| 00000270 2a 16 03 03 00 d8 0c 00 00 d4 03 00 17 41 04 a9 |*............A..| 00000280 19 8b d9 9b 5c 7c 6a 7d 85 d2 70 4e 89 7e 0b 5b |....\|j}..pN.~.[| 00000290 dd 5e a1 63 8d 15 bc 0b 0c 47 3d 4d e8 a7 56 88 |.^.c.....G=M..V.| 000002a0 2e f6 7f e2 4d fc ed cc 03 ed a1 2d ac ae 81 a5 |....M......-....| 000002b0 e2 6d 7f 9f a3 93 e9 10 c1 0e 48 1b f3 f4 38 04 |.m........H...8.| 000002c0 03 00 8b 30 81 88 02 42 00 87 fe 7e 63 82 14 57 |...0...B...~c..W| 000002d0 dc 7d e2 0f cc 97 2d ba 3c a7 56 4a 17 a8 09 6a |.}....-.<.VJ...j| 000002e0 28 2e f2 66 1a 3f 2d 48 2b 6f 79 a1 60 cd 5e 10 |(..f.?-H+oy.`.^.| 000002f0 0b 0a 28 f2 5f e4 3f 4f f9 c9 91 34 d9 dc bc fc |..(._.?O...4....| 00000300 98 ea 77 0b 99 f8 a2 11 c4 bd 02 42 01 a0 b0 dc |..w........B....| 00000310 db 5b c2 09 99 bd ee a0 b9 aa 31 b9 10 84 22 be |.[........1...".| 00000320 5a 63 12 5a 43 00 8e c1 33 cc 91 bb c2 70 7a 63 |Zc.ZC...3....pzc| 00000330 19 82 c0 74 48 a1 c7 3d 1f f1 6f 4a 6f 6a 8c 3f |...tH..=..oJoj.?| 00000340 28 31 a8 0c 65 19 26 62 4b 7a 7c 4b ea 1a 16 03 |(1..e.&bKz|K....| 00000350 03 00 30 0d 00 00 28 03 01 02 40 00 20 06 01 06 |..0...(...@. ...| 00000360 02 06 03 05 01 05 02 05 03 04 01 04 02 04 03 03 |................| 00000370 01 03 02 03 03 02 01 02 02 02 03 01 01 00 00 0e |................| 00000380 00 00 00 |...| >>> Flow 3 (client to server) 00000000 16 03 03 01 fb 0b 00 01 f7 00 01 f4 00 01 f1 30 |...............0| 00000010 82 01 ed 30 82 01 58 a0 03 02 01 02 02 01 00 30 |...0..X........0| 00000020 0b 06 09 2a 86 48 86 f7 0d 01 01 05 30 26 31 10 |...*.H......0&1.| 00000030 30 0e 06 03 55 04 0a 13 07 41 63 6d 65 20 43 6f |0...U....Acme Co| 00000040 31 12 30 10 06 03 55 04 03 13 09 31 32 37 2e 30 |1.0...U....127.0| 00000050 2e 30 2e 31 30 1e 17 0d 31 31 31 32 30 38 30 37 |.0.10...11120807| 00000060 35 35 31 32 5a 17 0d 31 32 31 32 30 37 30 38 30 |5512Z..121207080| 00000070 30 31 32 5a 30 26 31 10 30 0e 06 03 55 04 0a 13 |012Z0&1.0...U...| 00000080 07 41 63 6d 65 20 43 6f 31 12 30 10 06 03 55 04 |.Acme Co1.0...U.| 00000090 03 13 09 31 32 37 2e 30 2e 30 2e 31 30 81 9c 30 |...127.0.0.10..0| 000000a0 0b 06 09 2a 86 48 86 f7 0d 01 01 01 03 81 8c 00 |...*.H..........| 000000b0 30 81 88 02 81 80 4e d0 7b 31 e3 82 64 d9 59 c0 |0.....N.{1..d.Y.| 000000c0 c2 87 a4 5e 1e 8b 73 33 c7 63 53 df 66 92 06 84 |...^..s3.cS.f...| 000000d0 f6 64 d5 8f e4 36 a7 1d 2b e8 b3 20 36 45 23 b5 |.d...6..+.. 6E#.| 000000e0 e3 95 ae ed e0 f5 20 9c 8d 95 df 7f 5a 12 ef 87 |...... .....Z...| 000000f0 e4 5b 68 e4 e9 0e 74 ec 04 8a 7f de 93 27 c4 01 |.[h...t......'..| 00000100 19 7a bd f2 dc 3d 14 ab d0 54 ca 21 0c d0 4d 6e |.z...=...T.!..Mn| 00000110 87 2e 5c c5 d2 bb 4d 4b 4f ce b6 2c f7 7e 88 ec |..\...MKO..,.~..| 00000120 7c d7 02 91 74 a6 1e 0c 1a da e3 4a 5a 2e de 13 ||...t......JZ...| 00000130 9c 4c 40 88 59 93 02 03 01 00 01 a3 32 30 30 30 |.L@.Y.......2000| 00000140 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 00 a0 30 |...U...........0| 00000150 0d 06 03 55 1d 0e 04 06 04 04 01 02 03 04 30 0f |...U..........0.| 00000160 06 03 55 1d 23 04 08 30 06 80 04 01 02 03 04 30 |..U.#..0.......0| 00000170 0b 06 09 2a 86 48 86 f7 0d 01 01 05 03 81 81 00 |...*.H..........| 00000180 36 1f b3 7a 0c 75 c9 6e 37 46 61 2b d5 bd c0 a7 |6..z.u.n7Fa+....| 00000190 4b cc 46 9a 81 58 7c 85 79 29 c8 c8 c6 67 dd 32 |K.F..X|.y)...g.2| 000001a0 56 45 2b 75 b6 e9 24 a9 50 9a be 1f 5a fa 1a 15 |VE+u..$.P...Z...| 000001b0 d9 cc 55 95 72 16 83 b9 c2 b6 8f fd 88 8c 38 84 |..U.r.........8.| 000001c0 1d ab 5d 92 31 13 4f fd 83 3b c6 9d f1 11 62 b6 |..].1.O..;....b.| 000001d0 8b ec ab 67 be c8 64 b0 11 50 46 58 17 6b 99 1c |...g..d..PFX.k..| 000001e0 d3 1d fc 06 f1 0e e5 96 a8 0c f9 78 20 b7 44 18 |...........x .D.| 000001f0 51 8d 10 7e 4f 94 67 df a3 4e 70 73 8e 90 91 85 |Q..~O.g..Nps....| 00000200 16 03 03 00 46 10 00 00 42 41 04 1e 18 37 ef 0d |....F...BA...7..| 00000210 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd |.Q.5uq..T[....g.| 00000220 a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e |.$ >.V...(^.+-O.| 00000230 f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 |...lK[.V.2B.X..I| 00000240 a6 b5 68 1a 41 03 56 6b dc 5a 89 16 03 03 00 88 |..h.A.Vk.Z......| 00000250 0f 00 00 84 04 01 00 80 38 f2 16 e5 b5 86 16 62 |........8......b| 00000260 86 e1 7d 01 f1 a8 e1 f7 e7 85 b1 a0 17 ee 84 25 |..}............%| 00000270 cb 3c 46 61 1a 78 7b 1e ee 32 bc d9 6c fa 6b 76 |.>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 40 ee a8 82 bc 3f |..........@....?| 00000010 bf ab a6 e4 30 e0 3d f1 2f 19 a2 ac 7a 81 57 f1 |....0.=./...z.W.| 00000020 ee 67 3f 55 2b 30 fa 72 b5 10 03 ec 8d 0a 8f bb |.g?U+0.r........| 00000030 24 f5 45 f5 4e 53 4b 93 a5 0d 42 6c 46 69 98 fb |$.E.NSK...BlFi..| 00000040 63 c5 9f 95 65 d1 b6 f0 a4 15 bd |c...e......| >>> Flow 5 (client to server) 00000000 17 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| 00000010 00 00 00 00 00 cb 4e bc d1 a9 58 ef c8 39 a9 36 |......N...X..9.6| 00000020 f4 35 05 96 8e a4 50 bc f4 15 06 f9 fd 41 6d 1e |.5....P......Am.| 00000030 5e 7c 82 63 94 15 03 03 00 30 00 00 00 00 00 00 |^|.c.....0......| 00000040 00 00 00 00 00 00 00 00 00 00 bd 77 87 a5 5a d4 |...........w..Z.| 00000050 b8 59 e6 6b 0f dd ea f9 ed 18 b2 9f a9 61 b4 3a |.Y.k.........a.:| 00000060 47 15 15 3b 83 ef e1 6d db a8 |G..;...m..| go/src/pkg/crypto/tls/testdata/Client-TLSv12-ClientCert-RSA-RSA0100644000000000000000000002272512412656737024244 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 03 00 51 02 00 00 4d 03 03 53 04 f1 02 1d |....Q...M..S....| 00000010 0e dc 86 e5 a9 07 71 46 15 34 af 47 15 3f 03 9c |......qF.4.G.?..| 00000020 fc d6 fd 44 7c f4 f1 c7 8d 6f f8 20 28 ea 3c dc |...D|....o. (.<.| 00000030 b2 4c b7 ba 20 88 c4 db a5 73 ea 93 ab 3a 85 a6 |.L.. ....s...:..| 00000040 8f 59 49 d9 a9 31 14 d5 a6 2b 4f d1 00 05 00 00 |.YI..1...+O.....| 00000050 05 ff 01 00 01 00 16 03 03 02 be 0b 00 02 ba 00 |................| 00000060 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000070 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000080 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000090 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 000000a0 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 000000b0 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000c0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000d0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000e0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000f0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 00000100 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 00000110 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000120 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000130 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000140 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000150 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000160 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000170 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000180 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000190 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 000001a0 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 000001b0 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001c0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001d0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001e0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001f0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 00000200 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 00000210 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000220 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000230 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000240 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000250 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000260 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000270 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000280 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000290 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 000002a0 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 000002b0 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002c0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002d0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002e0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002f0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 00000300 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 00000310 6e 38 50 29 6c 90 a7 bd d9 16 03 03 00 30 0d 00 |n8P)l........0..| 00000320 00 28 03 01 02 40 00 20 06 01 06 02 06 03 05 01 |.(...@. ........| 00000330 05 02 05 03 04 01 04 02 04 03 03 01 03 02 03 03 |................| 00000340 02 01 02 02 02 03 01 01 00 00 0e 00 00 00 |..............| >>> Flow 3 (client to server) 00000000 16 03 03 01 fb 0b 00 01 f7 00 01 f4 00 01 f1 30 |...............0| 00000010 82 01 ed 30 82 01 58 a0 03 02 01 02 02 01 00 30 |...0..X........0| 00000020 0b 06 09 2a 86 48 86 f7 0d 01 01 05 30 26 31 10 |...*.H......0&1.| 00000030 30 0e 06 03 55 04 0a 13 07 41 63 6d 65 20 43 6f |0...U....Acme Co| 00000040 31 12 30 10 06 03 55 04 03 13 09 31 32 37 2e 30 |1.0...U....127.0| 00000050 2e 30 2e 31 30 1e 17 0d 31 31 31 32 30 38 30 37 |.0.10...11120807| 00000060 35 35 31 32 5a 17 0d 31 32 31 32 30 37 30 38 30 |5512Z..121207080| 00000070 30 31 32 5a 30 26 31 10 30 0e 06 03 55 04 0a 13 |012Z0&1.0...U...| 00000080 07 41 63 6d 65 20 43 6f 31 12 30 10 06 03 55 04 |.Acme Co1.0...U.| 00000090 03 13 09 31 32 37 2e 30 2e 30 2e 31 30 81 9c 30 |...127.0.0.10..0| 000000a0 0b 06 09 2a 86 48 86 f7 0d 01 01 01 03 81 8c 00 |...*.H..........| 000000b0 30 81 88 02 81 80 4e d0 7b 31 e3 82 64 d9 59 c0 |0.....N.{1..d.Y.| 000000c0 c2 87 a4 5e 1e 8b 73 33 c7 63 53 df 66 92 06 84 |...^..s3.cS.f...| 000000d0 f6 64 d5 8f e4 36 a7 1d 2b e8 b3 20 36 45 23 b5 |.d...6..+.. 6E#.| 000000e0 e3 95 ae ed e0 f5 20 9c 8d 95 df 7f 5a 12 ef 87 |...... .....Z...| 000000f0 e4 5b 68 e4 e9 0e 74 ec 04 8a 7f de 93 27 c4 01 |.[h...t......'..| 00000100 19 7a bd f2 dc 3d 14 ab d0 54 ca 21 0c d0 4d 6e |.z...=...T.!..Mn| 00000110 87 2e 5c c5 d2 bb 4d 4b 4f ce b6 2c f7 7e 88 ec |..\...MKO..,.~..| 00000120 7c d7 02 91 74 a6 1e 0c 1a da e3 4a 5a 2e de 13 ||...t......JZ...| 00000130 9c 4c 40 88 59 93 02 03 01 00 01 a3 32 30 30 30 |.L@.Y.......2000| 00000140 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 00 a0 30 |...U...........0| 00000150 0d 06 03 55 1d 0e 04 06 04 04 01 02 03 04 30 0f |...U..........0.| 00000160 06 03 55 1d 23 04 08 30 06 80 04 01 02 03 04 30 |..U.#..0.......0| 00000170 0b 06 09 2a 86 48 86 f7 0d 01 01 05 03 81 81 00 |...*.H..........| 00000180 36 1f b3 7a 0c 75 c9 6e 37 46 61 2b d5 bd c0 a7 |6..z.u.n7Fa+....| 00000190 4b cc 46 9a 81 58 7c 85 79 29 c8 c8 c6 67 dd 32 |K.F..X|.y)...g.2| 000001a0 56 45 2b 75 b6 e9 24 a9 50 9a be 1f 5a fa 1a 15 |VE+u..$.P...Z...| 000001b0 d9 cc 55 95 72 16 83 b9 c2 b6 8f fd 88 8c 38 84 |..U.r.........8.| 000001c0 1d ab 5d 92 31 13 4f fd 83 3b c6 9d f1 11 62 b6 |..].1.O..;....b.| 000001d0 8b ec ab 67 be c8 64 b0 11 50 46 58 17 6b 99 1c |...g..d..PFX.k..| 000001e0 d3 1d fc 06 f1 0e e5 96 a8 0c f9 78 20 b7 44 18 |...........x .D.| 000001f0 51 8d 10 7e 4f 94 67 df a3 4e 70 73 8e 90 91 85 |Q..~O.g..Nps....| 00000200 16 03 03 00 86 10 00 00 82 00 80 6d 51 f3 7f f9 |...........mQ...| 00000210 3e fb 75 82 41 36 83 e8 6a ee 2a 2e 25 90 67 4c |>.u.A6..j.*.%.gL| 00000220 8e 62 2f 30 81 17 e0 85 09 0c 2b b7 23 d7 b0 e2 |.b/0......+.#...| 00000230 1d f7 3b d7 f5 a1 27 b6 ee 24 b6 1b cc 5b ea 66 |..;...'..$...[.f| 00000240 0d 6a f4 e5 85 f9 da 43 b4 0e 86 85 e1 f5 aa be |.j.....C........| 00000250 c8 ce 39 4c 9c 86 00 08 c2 4b e2 c6 ec 2f f7 ce |..9L.....K.../..| 00000260 e6 bd 77 82 6f 23 b6 e0 bd a2 92 b7 3a ac e8 56 |..w.o#......:..V| 00000270 f1 af 54 5e 46 87 e9 3b 33 e7 b8 28 b7 d6 c8 90 |..T^F..;3..(....| 00000280 35 d4 1c 43 d1 30 6f 55 4e 0a 70 16 03 03 00 88 |5..C.0oUN.p.....| 00000290 0f 00 00 84 04 01 00 80 2a 1f ae 48 9f 86 16 dc |........*..H....| 000002a0 c2 55 1f 5f 95 81 ed 56 00 5d 35 46 e5 b6 57 d5 |.U._...V.]5F..W.| 000002b0 a6 3e 32 38 8b e2 c6 1c b9 b1 38 b2 da 66 45 ed |.>28......8..fE.| 000002c0 58 6a 7f 43 41 93 a5 09 da b9 04 ce 3f 13 8a 19 |Xj.CA.......?...| 000002d0 13 e9 2c 1f c5 e7 35 b4 2d ea 7c 81 90 33 c0 66 |..,...5.-.|..3.f| 000002e0 dc 41 8b 23 08 8f 69 d4 d6 a2 5f c1 bd 26 e6 2e |.A.#..i..._..&..| 000002f0 7f c8 7c a8 2d d4 08 95 ce 6e 58 54 04 a2 a6 63 |..|.-....nXT...c| 00000300 54 72 67 f2 7f 61 0a 6b 58 46 d4 88 95 38 37 f2 |Trg..a.kXF...87.| 00000310 93 95 48 56 14 a7 b9 7c 14 03 03 00 01 01 16 03 |..HV...|........| 00000320 03 00 24 64 bb 41 3a cb a2 2f 95 53 5c 2f f7 83 |..$d.A:../.S\/..| 00000330 a2 35 18 f6 d0 8d 6f e2 54 ed 2f 07 10 f4 36 e2 |.5....o.T./...6.| 00000340 3d e5 30 1d e3 63 01 |=.0..c.| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 24 0a 22 b6 bc da |..........$."...| 00000010 34 38 53 8e 80 e2 25 7b 31 2f 70 8e 3a db e8 a3 |48S...%{1/p.:...| 00000020 70 0e 88 22 b4 a8 be d4 a3 e3 cc 13 94 ef 47 |p.."..........G| >>> Flow 5 (client to server) 00000000 17 03 03 00 1a b4 9c b1 57 ea 01 03 fe 01 e7 1e |........W.......| 00000010 c4 a7 0f 25 14 99 00 4f 88 51 c1 98 6e 99 01 15 |...%...O.Q..n...| 00000020 03 03 00 16 2e c4 11 8b 1a fc 37 81 18 33 e4 9f |..........7..3..| 00000030 48 a3 29 e3 ad 9b 9b ec 9f 99 |H.).......| go/src/pkg/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES0100644000000000000000000001513512412656737023172 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 03 00 59 02 00 00 55 03 03 53 04 f1 02 a0 |....Y...U..S....| 00000010 5f bd a4 8d 98 93 b8 da 08 86 9f b2 be 9a a4 91 |_...............| 00000020 2b 3c 1f 18 f0 75 7c a9 a8 a0 f7 20 4a 89 9a d2 |+<...u|.... J...| 00000030 34 3b d9 b1 c2 fd 61 bd 97 19 22 ce b9 d1 5b a7 |4;....a..."...[.| 00000040 83 80 9c 19 d0 f5 a0 aa 4c ac 06 20 c0 09 00 00 |........L.. ....| 00000050 0d ff 01 00 01 00 00 0b 00 04 03 00 01 02 16 03 |................| 00000060 03 02 0e 0b 00 02 0a 00 02 07 00 02 04 30 82 02 |.............0..| 00000070 00 30 82 01 62 02 09 00 b8 bf 2d 47 a0 d2 eb f4 |.0..b.....-G....| 00000080 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 0b 30 |0...*.H.=..0E1.0| 00000090 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 |...U....AU1.0...| 000000a0 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 |U....Some-State1| 000000b0 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e |!0...U....Intern| 000000c0 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c |et Widgits Pty L| 000000d0 74 64 30 1e 17 0d 31 32 31 31 32 32 31 35 30 36 |td0...1211221506| 000000e0 33 32 5a 17 0d 32 32 31 31 32 30 31 35 30 36 33 |32Z..22112015063| 000000f0 32 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 41 |2Z0E1.0...U....A| 00000100 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d 65 |U1.0...U....Some| 00000110 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a 13 |-State1!0...U...| 00000120 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 74 |.Internet Widgit| 00000130 73 20 50 74 79 20 4c 74 64 30 81 9b 30 10 06 07 |s Pty Ltd0..0...| 00000140 2a 86 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 |*.H.=....+...#..| 00000150 86 00 04 00 c4 a1 ed be 98 f9 0b 48 73 36 7e c3 |...........Hs6~.| 00000160 16 56 11 22 f2 3d 53 c3 3b 4d 21 3d cd 6b 75 e6 |.V.".=S.;M!=.ku.| 00000170 f6 b0 dc 9a df 26 c1 bc b2 87 f0 72 32 7c b3 64 |.....&.....r2|.d| 00000180 2f 1c 90 bc ea 68 23 10 7e fe e3 25 c0 48 3a 69 |/....h#.~..%.H:i| 00000190 e0 28 6d d3 37 00 ef 04 62 dd 0d a0 9c 70 62 83 |.(m.7...b....pb.| 000001a0 d8 81 d3 64 31 aa 9e 97 31 bd 96 b0 68 c0 9b 23 |...d1...1...h..#| 000001b0 de 76 64 3f 1a 5c 7f e9 12 0e 58 58 b6 5f 70 dd |.vd?.\....XX._p.| 000001c0 9b d8 ea d5 d7 f5 d5 cc b9 b6 9f 30 66 5b 66 9a |...........0f[f.| 000001d0 20 e2 27 e5 bf fe 3b 30 09 06 07 2a 86 48 ce 3d | .'...;0...*.H.=| 000001e0 04 01 03 81 8c 00 30 81 88 02 42 01 88 a2 4f eb |......0...B...O.| 000001f0 e2 45 c5 48 7d 1b ac f5 ed 98 9d ae 47 70 c0 5e |.E.H}.......Gp.^| 00000200 1b b6 2f bd f1 b6 4d b7 61 40 d3 11 a2 ce ee 0b |../...M.a@......| 00000210 7e 92 7e ff 76 9d c3 3b 7e a5 3f ce fa 10 e2 59 |~.~.v..;~.?....Y| 00000220 ec 47 2d 7c ac da 4e 97 0e 15 a0 6f d0 02 42 01 |.G-|..N....o..B.| 00000230 4d fc be 67 13 9c 2d 05 0e bd 3f a3 8c 25 c1 33 |M..g..-...?..%.3| 00000240 13 83 0d 94 06 bb d4 37 7a f6 ec 7a c9 86 2e dd |.......7z..z....| 00000250 d7 11 69 7f 85 7c 56 de fb 31 78 2b e4 c7 78 0d |..i..|V..1x+..x.| 00000260 ae cb be 9e 4e 36 24 31 7b 6a 0f 39 95 12 07 8f |....N6$1{j.9....| 00000270 2a 16 03 03 00 d7 0c 00 00 d3 03 00 17 41 04 3c |*............A.<| 00000280 8f 35 1e 47 5d 7b ad 13 0c e9 5c c0 97 c7 83 06 |.5.G]{....\.....| 00000290 49 0f 6c cf e5 4d 3b ed f7 1b c6 96 8d ba 54 35 |I.l..M;.......T5| 000002a0 7f df 35 e3 6e 28 e9 71 f2 24 b5 ab 17 2b 4b 2b |..5.n(.q.$...+K+| 000002b0 0c 8f 9f 48 89 73 8f 09 69 84 af 7f ec 43 7a 04 |...H.s..i....Cz.| 000002c0 03 00 8a 30 81 87 02 41 79 84 43 0c 78 fa 7e e2 |...0...Ay.C.x.~.| 000002d0 c5 51 c1 60 88 c4 4a 59 7d 02 fa dc 19 68 33 ed |.Q.`..JY}....h3.| 000002e0 19 ef a1 df ef 6b 21 a6 98 aa ba a9 13 70 91 0f |.....k!......p..| 000002f0 cc 6c 5c 1e 99 53 1b 42 51 6c 06 a7 3c c4 04 22 |.l\..S.BQl..<.."| 00000300 5d 0d c1 30 ab e3 ec b4 54 02 42 01 15 15 1a 6e |]..0....T.B....n| 00000310 6f f1 c6 b1 10 84 2c c8 04 de 2b 52 d5 b4 f7 c9 |o.....,...+R....| 00000320 4f 6d 0e 0e 26 45 1d 7a 28 59 2b 8b f6 92 3a 23 |Om..&E.z(Y+...:#| 00000330 7a 39 9c d5 4e cc 5d c5 45 92 9c d0 5f 33 12 e3 |z9..N.].E..._3..| 00000340 2b 29 39 52 bb 16 aa e1 72 9e b5 fe 99 16 03 03 |+)9R....r.......| 00000350 00 04 0e 00 00 00 |......| >>> Flow 3 (client to server) 00000000 16 03 03 00 46 10 00 00 42 41 04 1e 18 37 ef 0d |....F...BA...7..| 00000010 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd |.Q.5uq..T[....g.| 00000020 a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e |.$ >.V...(^.+-O.| 00000030 f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 |...lK[.V.2B.X..I| 00000040 a6 b5 68 1a 41 03 56 6b dc 5a 89 14 03 03 00 01 |..h.A.Vk.Z......| 00000050 01 16 03 03 00 40 00 00 00 00 00 00 00 00 00 00 |.....@..........| 00000060 00 00 00 00 00 00 20 a3 f8 5a e2 ea f3 09 19 3e |...... ..Z.....>| 00000070 4a 54 69 70 06 5b 17 35 0f ed e7 30 3b 6f eb a1 |JTip.[.5...0;o..| 00000080 cb 9c 35 81 10 2e 34 f7 12 a5 e4 63 20 b2 65 31 |..5...4....c .e1| 00000090 19 da 30 43 39 59 |..0C9Y| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 40 8d 4d 31 07 df |..........@.M1..| 00000010 ab 41 f5 19 9c 1a 57 fc 33 ab 5f e6 bd 45 b9 fa |.A....W.3._..E..| 00000020 7f db c0 df 72 f2 3b ef aa d4 5e 34 e6 3d 44 7c |....r.;...^4.=D|| 00000030 12 05 c7 57 da 54 b1 e3 66 f0 0a ab cd 15 a5 bf |...W.T..f.......| 00000040 c5 c2 07 a9 d9 a7 2e 5e 29 da da |.......^)..| >>> Flow 5 (client to server) 00000000 17 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| 00000010 00 00 00 00 00 dc 03 7b 29 2c 49 64 58 2d dc f7 |.......{),IdX-..| 00000020 26 a1 3b ec 2d e8 30 c4 6c a3 ff e2 bc b5 a4 a6 |&.;.-.0.l.......| 00000030 93 ce 14 bd da 15 03 03 00 30 00 00 00 00 00 00 |.........0......| 00000040 00 00 00 00 00 00 00 00 00 00 a6 77 10 30 15 eb |...........w.0..| 00000050 ed cf 73 5b 74 5d 09 52 4a 5b e2 f0 e4 67 f8 7a |..s[t].RJ[...g.z| 00000060 5e 5e fc ba 7f 80 0a d2 f4 fb |^^........| go/src/pkg/crypto/tls/testdata/Client-TLSv12-ECDHE-ECDSA-AES-GCM0100644000000000000000000001431212412656737023572 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 03 00 59 02 00 00 55 03 03 53 04 f1 02 48 |....Y...U..S...H| 00000010 03 36 01 05 56 6f f0 54 d2 c3 d3 41 c2 e2 69 7b |.6..Vo.T...A..i{| 00000020 50 f8 03 ef 3f 5d 7c e6 9c cb fe 20 82 a0 81 fd |P...?]|.... ....| 00000030 72 4b b8 e6 29 76 3b 0f 1d 0a b7 82 9d 0b cf a0 |rK..)v;.........| 00000040 65 b1 56 53 c9 d5 58 7b f0 b6 2d cf c0 2b 00 00 |e.VS..X{..-..+..| 00000050 0d ff 01 00 01 00 00 0b 00 04 03 00 01 02 16 03 |................| 00000060 03 02 0e 0b 00 02 0a 00 02 07 00 02 04 30 82 02 |.............0..| 00000070 00 30 82 01 62 02 09 00 b8 bf 2d 47 a0 d2 eb f4 |.0..b.....-G....| 00000080 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 0b 30 |0...*.H.=..0E1.0| 00000090 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 |...U....AU1.0...| 000000a0 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 |U....Some-State1| 000000b0 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e |!0...U....Intern| 000000c0 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c |et Widgits Pty L| 000000d0 74 64 30 1e 17 0d 31 32 31 31 32 32 31 35 30 36 |td0...1211221506| 000000e0 33 32 5a 17 0d 32 32 31 31 32 30 31 35 30 36 33 |32Z..22112015063| 000000f0 32 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 41 |2Z0E1.0...U....A| 00000100 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d 65 |U1.0...U....Some| 00000110 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a 13 |-State1!0...U...| 00000120 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 74 |.Internet Widgit| 00000130 73 20 50 74 79 20 4c 74 64 30 81 9b 30 10 06 07 |s Pty Ltd0..0...| 00000140 2a 86 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 |*.H.=....+...#..| 00000150 86 00 04 00 c4 a1 ed be 98 f9 0b 48 73 36 7e c3 |...........Hs6~.| 00000160 16 56 11 22 f2 3d 53 c3 3b 4d 21 3d cd 6b 75 e6 |.V.".=S.;M!=.ku.| 00000170 f6 b0 dc 9a df 26 c1 bc b2 87 f0 72 32 7c b3 64 |.....&.....r2|.d| 00000180 2f 1c 90 bc ea 68 23 10 7e fe e3 25 c0 48 3a 69 |/....h#.~..%.H:i| 00000190 e0 28 6d d3 37 00 ef 04 62 dd 0d a0 9c 70 62 83 |.(m.7...b....pb.| 000001a0 d8 81 d3 64 31 aa 9e 97 31 bd 96 b0 68 c0 9b 23 |...d1...1...h..#| 000001b0 de 76 64 3f 1a 5c 7f e9 12 0e 58 58 b6 5f 70 dd |.vd?.\....XX._p.| 000001c0 9b d8 ea d5 d7 f5 d5 cc b9 b6 9f 30 66 5b 66 9a |...........0f[f.| 000001d0 20 e2 27 e5 bf fe 3b 30 09 06 07 2a 86 48 ce 3d | .'...;0...*.H.=| 000001e0 04 01 03 81 8c 00 30 81 88 02 42 01 88 a2 4f eb |......0...B...O.| 000001f0 e2 45 c5 48 7d 1b ac f5 ed 98 9d ae 47 70 c0 5e |.E.H}.......Gp.^| 00000200 1b b6 2f bd f1 b6 4d b7 61 40 d3 11 a2 ce ee 0b |../...M.a@......| 00000210 7e 92 7e ff 76 9d c3 3b 7e a5 3f ce fa 10 e2 59 |~.~.v..;~.?....Y| 00000220 ec 47 2d 7c ac da 4e 97 0e 15 a0 6f d0 02 42 01 |.G-|..N....o..B.| 00000230 4d fc be 67 13 9c 2d 05 0e bd 3f a3 8c 25 c1 33 |M..g..-...?..%.3| 00000240 13 83 0d 94 06 bb d4 37 7a f6 ec 7a c9 86 2e dd |.......7z..z....| 00000250 d7 11 69 7f 85 7c 56 de fb 31 78 2b e4 c7 78 0d |..i..|V..1x+..x.| 00000260 ae cb be 9e 4e 36 24 31 7b 6a 0f 39 95 12 07 8f |....N6$1{j.9....| 00000270 2a 16 03 03 00 d7 0c 00 00 d3 03 00 17 41 04 86 |*............A..| 00000280 36 b4 78 76 87 70 ed ae 0d 34 70 3d 16 e5 a4 db |6.xv.p...4p=....| 00000290 ae 28 58 4c 01 5a 56 73 a7 0d 34 59 a7 04 75 69 |.(XL.ZVs..4Y..ui| 000002a0 f2 55 24 40 b0 33 c6 93 ff ae e0 14 f5 4b ce a8 |.U$@.3.......K..| 000002b0 e2 e6 9a 67 1d 66 fb 8f fd 56 59 e7 73 f2 2c 04 |...g.f...VY.s.,.| 000002c0 03 00 8a 30 81 87 02 41 73 ab a8 3c 64 17 69 9f |...0...As..>> Flow 3 (client to server) 00000000 16 03 03 00 46 10 00 00 42 41 04 1e 18 37 ef 0d |....F...BA...7..| 00000010 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd |.Q.5uq..T[....g.| 00000020 a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e |.$ >.V...(^.+-O.| 00000030 f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 |...lK[.V.2B.X..I| 00000040 a6 b5 68 1a 41 03 56 6b dc 5a 89 14 03 03 00 01 |..h.A.Vk.Z......| 00000050 01 16 03 03 00 28 00 00 00 00 00 00 00 00 87 7a |.....(.........z| 00000060 82 d7 46 25 1d a6 bb c2 a8 a8 4e a5 d1 f8 02 db |..F%......N.....| 00000070 33 33 ca 78 b6 d3 bd 77 8a 33 23 a7 95 fb |33.x...w.3#...| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 28 ce a1 9d 01 c0 |..........(.....| 00000010 31 e5 d5 57 16 e1 a6 b3 8b 25 58 0f fa 2a de 3e |1..W.....%X..*.>| 00000020 0c d9 06 11 a6 b0 d7 b0 33 ad 31 73 5b 26 b4 d2 |........3.1s[&..| 00000030 12 56 c8 |.V.| >>> Flow 5 (client to server) 00000000 17 03 03 00 1e 00 00 00 00 00 00 00 01 d5 04 4c |...............L| 00000010 7b 35 b4 d7 90 ae fe 00 d2 f2 4b 76 f1 36 5e 24 |{5........Kv.6^$| 00000020 4a aa 94 15 03 03 00 1a 00 00 00 00 00 00 00 02 |J...............| 00000030 d3 1c 41 37 ab f6 17 79 f0 01 a4 19 a5 75 7a 8e |..A7...y.....uz.| 00000040 a3 b2 |..| go/src/pkg/crypto/tls/testdata/Client-TLSv12-ECDHE-RSA-AES0100644000000000000000000001657112412656737023005 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 03 00 59 02 00 00 55 03 03 53 04 f1 02 41 |....Y...U..S...A| 00000010 95 cc 56 30 65 46 24 75 d5 9e 3c a7 5b 6c 99 fe |..V0eF$u..<.[l..| 00000020 86 35 23 42 3a 8f 4d 4c b9 98 7d 20 a7 46 43 72 |.5#B:.ML..} .FCr| 00000030 66 bb b6 ad ff ad cf 63 37 fe 6b b4 78 94 08 49 |f......c7.k.x..I| 00000040 54 06 ed f4 85 73 38 4a c6 fe b6 98 c0 13 00 00 |T....s8J........| 00000050 0d ff 01 00 01 00 00 0b 00 04 03 00 01 02 16 03 |................| 00000060 03 02 be 0b 00 02 ba 00 02 b7 00 02 b4 30 82 02 |.............0..| 00000070 b0 30 82 02 19 a0 03 02 01 02 02 09 00 85 b0 bb |.0..............| 00000080 a4 8a 7f b8 ca 30 0d 06 09 2a 86 48 86 f7 0d 01 |.....0...*.H....| 00000090 01 05 05 00 30 45 31 0b 30 09 06 03 55 04 06 13 |....0E1.0...U...| 000000a0 02 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f |.AU1.0...U....So| 000000b0 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 |me-State1!0...U.| 000000c0 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 |...Internet Widg| 000000d0 69 74 73 20 50 74 79 20 4c 74 64 30 1e 17 0d 31 |its Pty Ltd0...1| 000000e0 30 30 34 32 34 30 39 30 39 33 38 5a 17 0d 31 31 |00424090938Z..11| 000000f0 30 34 32 34 30 39 30 39 33 38 5a 30 45 31 0b 30 |0424090938Z0E1.0| 00000100 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 |...U....AU1.0...| 00000110 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 |U....Some-State1| 00000120 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e |!0...U....Intern| 00000130 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c |et Widgits Pty L| 00000140 74 64 30 81 9f 30 0d 06 09 2a 86 48 86 f7 0d 01 |td0..0...*.H....| 00000150 01 01 05 00 03 81 8d 00 30 81 89 02 81 81 00 bb |........0.......| 00000160 79 d6 f5 17 b5 e5 bf 46 10 d0 dc 69 be e6 2b 07 |y......F...i..+.| 00000170 43 5a d0 03 2d 8a 7a 43 85 b7 14 52 e7 a5 65 4c |CZ..-.zC...R..eL| 00000180 2c 78 b8 23 8c b5 b4 82 e5 de 1f 95 3b 7e 62 a5 |,x.#........;~b.| 00000190 2c a5 33 d6 fe 12 5c 7a 56 fc f5 06 bf fa 58 7b |,.3...\zV.....X{| 000001a0 26 3f b5 cd 04 d3 d0 c9 21 96 4a c7 f4 54 9f 5a |&?......!.J..T.Z| 000001b0 bf ef 42 71 00 fe 18 99 07 7f 7e 88 7d 7d f1 04 |..Bq......~.}}..| 000001c0 39 c4 a2 2e db 51 c9 7c e3 c0 4c 3b 32 66 01 cf |9....Q.|..L;2f..| 000001d0 af b1 1d b8 71 9a 1d db db 89 6b ae da 2d 79 02 |....q.....k..-y.| 000001e0 03 01 00 01 a3 81 a7 30 81 a4 30 1d 06 03 55 1d |.......0..0...U.| 000001f0 0e 04 16 04 14 b1 ad e2 85 5a cf cb 28 db 69 ce |.........Z..(.i.| 00000200 23 69 de d3 26 8e 18 88 39 30 75 06 03 55 1d 23 |#i..&...90u..U.#| 00000210 04 6e 30 6c 80 14 b1 ad e2 85 5a cf cb 28 db 69 |.n0l......Z..(.i| 00000220 ce 23 69 de d3 26 8e 18 88 39 a1 49 a4 47 30 45 |.#i..&...9.I.G0E| 00000230 31 0b 30 09 06 03 55 04 06 13 02 41 55 31 13 30 |1.0...U....AU1.0| 00000240 11 06 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 |...U....Some-Sta| 00000250 74 65 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 |te1!0...U....Int| 00000260 65 72 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 |ernet Widgits Pt| 00000270 79 20 4c 74 64 82 09 00 85 b0 bb a4 8a 7f b8 ca |y Ltd...........| 00000280 30 0c 06 03 55 1d 13 04 05 30 03 01 01 ff 30 0d |0...U....0....0.| 00000290 06 09 2a 86 48 86 f7 0d 01 01 05 05 00 03 81 81 |..*.H...........| 000002a0 00 08 6c 45 24 c7 6b b1 59 ab 0c 52 cc f2 b0 14 |..lE$.k.Y..R....| 000002b0 d7 87 9d 7a 64 75 b5 5a 95 66 e4 c5 2b 8e ae 12 |...zdu.Z.f..+...| 000002c0 66 1f eb 4f 38 b3 6e 60 d3 92 fd f7 41 08 b5 25 |f..O8.n`....A..%| 000002d0 13 b1 18 7a 24 fb 30 1d ba ed 98 b9 17 ec e7 d7 |...z$.0.........| 000002e0 31 59 db 95 d3 1d 78 ea 50 56 5c d5 82 5a 2d 5a |1Y....x.PV\..Z-Z| 000002f0 5f 33 c4 b6 d8 c9 75 90 96 8c 0f 52 98 b5 cd 98 |_3....u....R....| 00000300 1f 89 20 5f f2 a0 1c a3 1b 96 94 dd a9 fd 57 e9 |.. _..........W.| 00000310 70 e8 26 6d 71 99 9b 26 6e 38 50 29 6c 90 a7 bd |p.&mq..&n8P)l...| 00000320 d9 16 03 03 00 cd 0c 00 00 c9 03 00 17 41 04 48 |.............A.H| 00000330 68 d8 8a 10 b4 bf eb 8d d1 98 b0 a6 f4 47 5d 91 |h............G].| 00000340 61 da 50 d9 85 7b 5d 90 02 2c 38 c9 af 81 d3 55 |a.P..{]..,8....U| 00000350 07 62 b1 62 58 7f 39 94 d7 91 96 a8 1f 47 60 a5 |.b.bX.9......G`.| 00000360 c0 04 f2 fb cb 15 75 a6 16 3f 94 53 7c ff dd 04 |......u..?.S|...| 00000370 01 00 80 b9 82 fa 0b f8 8c 94 2c 6e 05 81 7d 80 |..........,n..}.| 00000380 5d 9a 77 78 af c8 33 5d 89 7e 2e 3c e5 72 66 a8 |].wx..3].~.<.rf.| 00000390 f1 5c 02 04 02 70 76 7b 45 ff 0d 29 a0 cb 0d db |.\...pv{E..)....| 000003a0 7a 4c c4 13 19 cd 47 b2 f1 c9 43 4f 95 d2 f1 c6 |zL....G...CO....| 000003b0 bc ae 31 4a 9d de 80 b2 a4 b7 b6 dd 8c 03 3e 2a |..1J..........>*| 000003c0 46 5e d1 e7 5b c5 9e 06 58 f3 55 b2 77 09 f3 98 |F^..[...X.U.w...| 000003d0 d5 7f 5a 74 64 7e 48 22 8f 7d a8 68 b6 1d 90 df |..Ztd~H".}.h....| 000003e0 2c 91 d7 c5 07 3d d1 6f e9 c1 91 03 3c 23 5a 56 |,....=.o....<#ZV| 000003f0 3b b2 c2 16 03 03 00 04 0e 00 00 00 |;...........| >>> Flow 3 (client to server) 00000000 16 03 03 00 46 10 00 00 42 41 04 1e 18 37 ef 0d |....F...BA...7..| 00000010 19 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd |.Q.5uq..T[....g.| 00000020 a7 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e |.$ >.V...(^.+-O.| 00000030 f1 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 |...lK[.V.2B.X..I| 00000040 a6 b5 68 1a 41 03 56 6b dc 5a 89 14 03 03 00 01 |..h.A.Vk.Z......| 00000050 01 16 03 03 00 40 00 00 00 00 00 00 00 00 00 00 |.....@..........| 00000060 00 00 00 00 00 00 59 e6 92 05 27 ec 09 2c b0 a5 |......Y...'..,..| 00000070 2a fb 7e f1 03 53 16 63 68 a1 86 13 bb da 98 27 |*.~..S.ch......'| 00000080 6d 42 08 35 6a ec 58 61 2a 4d 44 ec ae c5 b9 d2 |mB.5j.Xa*MD.....| 00000090 76 57 1f 75 9f 8d |vW.u..| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 40 6e 03 d0 e6 98 |..........@n....| 00000010 1f f5 39 7b 06 9f 95 f0 7a 88 35 7c 55 db c3 2f |..9{....z.5|U../| 00000020 00 ef 5b d3 62 87 a2 94 da 2f f6 4a 89 c9 a8 3d |..[.b..../.J...=| 00000030 3a 92 db 77 35 92 01 4b f5 c5 6b 95 09 9f cd 79 |:..w5..K..k....y| 00000040 3c af 37 5b 27 bf 93 3e 04 55 71 |<.7['..>.Uq| >>> Flow 5 (client to server) 00000000 17 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| 00000010 00 00 00 00 00 bc c9 d0 8e 80 14 de 32 18 49 e8 |............2.I.| 00000020 20 dc 5e 6c e4 6d 14 00 df 51 71 fb 86 95 16 4c | .^l.m...Qq....L| 00000030 04 8e 71 e1 48 15 03 03 00 30 00 00 00 00 00 00 |..q.H....0......| 00000040 00 00 00 00 00 00 00 00 00 00 b7 6d 30 72 61 53 |...........m0raS| 00000050 d8 0a d4 1d ae e5 d4 22 46 c9 d5 4e 4a 86 f5 ac |......."F..NJ...| 00000060 72 98 c6 db 38 29 97 2c 84 0b |r...8).,..| go/src/pkg/crypto/tls/testdata/Client-TLSv12-RSA-RC40100644000000000000000000001420712412656737022151 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../| 00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............| 00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............| 00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................| 00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................| 00000070 03 02 01 02 03 ff 01 00 01 00 |..........| >>> Flow 2 (server to client) 00000000 16 03 03 00 51 02 00 00 4d 03 03 53 04 f1 02 9d |....Q...M..S....| 00000010 2e 4e d9 17 4a 35 fa 9d 94 f6 45 0a f6 6b 5d 1c |.N..J5....E..k].| 00000020 1e 15 19 8d 6d 94 cc 90 d9 39 94 20 8b 4b de 76 |....m....9. .K.v| 00000030 d5 64 5d b7 19 df e7 eb 7e a0 22 c4 09 38 a0 12 |.d].....~."..8..| 00000040 d5 59 10 c8 31 06 dc fc e4 9d d1 80 00 05 00 00 |.Y..1...........| 00000050 05 ff 01 00 01 00 16 03 03 02 be 0b 00 02 ba 00 |................| 00000060 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000070 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000080 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000090 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 000000a0 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 000000b0 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000c0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000d0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000e0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000f0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 00000100 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 00000110 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000120 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000130 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000140 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000150 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000160 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000170 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000180 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000190 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 000001a0 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 000001b0 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001c0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001d0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001e0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001f0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 00000200 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 00000210 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000220 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000230 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000240 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000250 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000260 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000270 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000280 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000290 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 000002a0 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 000002b0 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002c0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002d0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002e0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002f0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 00000300 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 00000310 6e 38 50 29 6c 90 a7 bd d9 16 03 03 00 04 0e 00 |n8P)l...........| 00000320 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 03 00 86 10 00 00 82 00 80 6d 51 f3 7f f9 |...........mQ...| 00000010 3e fb 75 82 41 36 83 e8 6a ee 2a 2e 25 90 67 4c |>.u.A6..j.*.%.gL| 00000020 8e 62 2f 30 81 17 e0 85 09 0c 2b b7 23 d7 b0 e2 |.b/0......+.#...| 00000030 1d f7 3b d7 f5 a1 27 b6 ee 24 b6 1b cc 5b ea 66 |..;...'..$...[.f| 00000040 0d 6a f4 e5 85 f9 da 43 b4 0e 86 85 e1 f5 aa be |.j.....C........| 00000050 c8 ce 39 4c 9c 86 00 08 c2 4b e2 c6 ec 2f f7 ce |..9L.....K.../..| 00000060 e6 bd 77 82 6f 23 b6 e0 bd a2 92 b7 3a ac e8 56 |..w.o#......:..V| 00000070 f1 af 54 5e 46 87 e9 3b 33 e7 b8 28 b7 d6 c8 90 |..T^F..;3..(....| 00000080 35 d4 1c 43 d1 30 6f 55 4e 0a 70 14 03 03 00 01 |5..C.0oUN.p.....| 00000090 01 16 03 03 00 24 37 14 b2 97 7b b5 f0 9a 38 05 |.....$7...{...8.| 000000a0 22 35 69 9c 95 2f 86 4b 37 98 22 db 4e 9a 46 9c |"5i../.K7.".N.F.| 000000b0 b9 81 74 72 58 18 53 0c 5c 3c |..trX.S.\<| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 24 3c b3 e7 77 5a |..........$<..wZ| 00000010 7c 36 5a 74 74 26 8d 5b 5a 09 96 60 e8 24 45 2f ||6Ztt&.[Z..`.$E/| 00000020 c2 39 14 5e db 58 12 49 ad a8 b6 ea ef 58 16 |.9.^.X.I.....X.| >>> Flow 5 (client to server) 00000000 17 03 03 00 1a 6d 29 d7 ba 2f 85 02 b6 f0 82 64 |.....m)../.....d| 00000010 6c 55 ae ab f6 fd 14 ff b8 38 f0 f8 a6 ea cc 15 |lU.......8......| 00000020 03 03 00 16 10 c5 d9 41 7b e2 89 67 dc 29 8e f8 |.......A{..g.)..| 00000030 b5 ab 32 91 44 2c 27 84 49 f7 |..2.D,'.I.| go/src/pkg/crypto/tls/testdata/Server-SSLv3-RSA-3DES0100644000000000000000000001424512412656737022230 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 00 00 2f 01 00 00 2b 03 00 52 cc 57 59 d8 |..../...+..R.WY.| 00000010 86 d6 07 ae e0 8d 63 b7 1e cb aa c6 67 32 c8 dd |......c.....g2..| 00000020 68 03 d8 3d 37 18 72 c3 c0 f1 9d 00 00 04 00 0a |h..=7.r.........| 00000030 00 ff 01 00 |....| >>> Flow 2 (server to client) 00000000 16 03 00 00 31 02 00 00 2d 03 00 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 0a 00 00 |................| 00000030 05 ff 01 00 01 00 16 03 00 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 00 00 04 0e 00 |n8P)l...........| 00000300 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 00 00 84 10 00 00 80 75 e0 c9 76 d6 e9 34 |.........u..v..4| 00000010 1d e3 31 9e db 3b 03 41 93 e8 db 73 7c e9 3f 6a |..1..;.A...s|.?j| 00000020 d8 2a 7b 25 83 4f 45 de 3f 78 3f b6 53 a7 b4 6c |.*{%.OE.?x?.S..l| 00000030 e3 87 c4 c3 70 55 71 79 55 dc 74 98 84 21 19 13 |....pUqyU.t..!..| 00000040 be d5 8e 0a ff 2f 9f 7a 6b d4 6c ef 78 d1 cb 65 |...../.zk.l.x..e| 00000050 32 4c 0c c5 29 b9 60 94 c6 79 56 a2 aa 2d d9 ad |2L..).`..yV..-..| 00000060 51 2c 54 1b 28 23 33 54 cd 48 cb 80 13 45 3d 4a |Q,T.(#3T.H...E=J| 00000070 8e 2f f2 da bd 68 3e 1b eb 73 f9 2d 35 6b b1 40 |./...h>..s.-5k.@| 00000080 2e 6d 9d 1c e9 c1 02 80 37 14 03 00 00 01 01 16 |.m......7.......| 00000090 03 00 00 40 f7 c3 dd a4 64 3d 81 24 de a2 81 7d |...@....d=.$...}| 000000a0 e4 df 78 46 e7 ba 93 6c 36 43 05 96 fc 75 ef ec |..xF...l6C...u..| 000000b0 a5 46 6d 47 a5 be 74 ad 15 93 d9 87 4f 1d e2 b3 |.FmG..t.....O...| 000000c0 03 ff 2e 89 6e 50 f4 d6 a6 e2 b3 54 cb 74 07 f7 |....nP.....T.t..| 000000d0 ca 1b 8c 0a |....| >>> Flow 4 (server to client) 00000000 14 03 00 00 01 01 16 03 00 00 40 6d 3d d8 d5 cf |..........@m=...| 00000010 05 7d 98 8c 28 28 e2 43 ab ad 4a fa ae bf ec c3 |.}..((.C..J.....| 00000020 9c 0a 13 4d 28 a4 45 c4 b9 f2 bc c5 12 a2 68 91 |...M(.E.......h.| 00000030 77 fa 72 f8 9e 4e b7 1f b4 02 02 e3 5d 57 b0 8b |w.r..N......]W..| 00000040 d8 90 0c 9d e6 df 5b 90 92 a1 0d 17 03 00 00 18 |......[.........| 00000050 91 48 8a e1 d6 bf 79 1c d5 0a 70 d5 94 20 25 78 |.H....y...p.. %x| 00000060 d8 84 c8 6e 54 f0 99 01 17 03 00 00 28 74 19 90 |...nT.......(t..| 00000070 41 44 53 27 bb fb 1f fd 71 34 20 61 a0 eb a4 7c |ADS'....q4 a...|| 00000080 fe 36 f8 4b d7 b0 27 d3 b9 36 e1 67 af 2d 0e 23 |.6.K..'..6.g.-.#| 00000090 2b 76 a7 2f c3 15 03 00 00 18 db fc e9 fd 87 5f |+v./..........._| 000000a0 92 a8 3d 4b 35 f5 c6 48 2c b4 42 50 c3 81 28 f0 |..=K5..H,.BP..(.| 000000b0 2b 41 |+A| go/src/pkg/crypto/tls/testdata/Server-SSLv3-RSA-AES0100644000000000000000000001437412412656737022145 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 00 00 2f 01 00 00 2b 03 00 52 cc 57 59 30 |..../...+..R.WY0| 00000010 e1 ee 8c 60 5b 40 dd 95 bd b4 84 87 2f 01 15 e7 |...`[@....../...| 00000020 50 88 4c 82 6b 6d 93 8a 57 d0 27 00 00 04 00 2f |P.L.km..W.'..../| 00000030 00 ff 01 00 |....| >>> Flow 2 (server to client) 00000000 16 03 00 00 31 02 00 00 2d 03 00 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 2f 00 00 |............./..| 00000030 05 ff 01 00 01 00 16 03 00 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 00 00 04 0e 00 |n8P)l...........| 00000300 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 00 00 84 10 00 00 80 74 50 05 6f f5 83 c9 |.........tP.o...| 00000010 f5 0c 5a 65 c7 4e c6 f3 87 96 d7 5d 3e 88 27 32 |..Ze.N.....]>.'2| 00000020 89 12 ba ec db ef c0 85 70 84 ed b6 83 03 8f 44 |........p......D| 00000030 f5 6f fa fa d0 1f 95 30 d1 ae a7 71 cf ee e9 b1 |.o.....0...q....| 00000040 80 7b 34 a9 ea 1b 5e e5 71 40 3f e8 7d 30 d1 8b |.{4...^.q@?.}0..| 00000050 11 f1 68 1f c8 25 f0 77 c5 af b3 92 6e d9 81 cc |..h..%.w....n...| 00000060 f8 fd 82 95 cc 1f 4a b1 05 15 7a b3 a1 22 33 09 |......J...z.."3.| 00000070 e7 a5 c2 89 7f 03 e0 91 b6 61 a3 a0 4e 17 0d 7a |.........a..N..z| 00000080 13 01 c4 b6 50 c7 d9 81 15 14 03 00 00 01 01 16 |....P...........| 00000090 03 00 00 40 56 da 56 ab e6 26 98 58 53 1f 36 b5 |...@V.V..&.XS.6.| 000000a0 03 14 bd 42 29 ee 9c 7c e4 48 26 82 68 ae fd fe |...B)..|.H&.h...| 000000b0 5e a4 43 22 75 95 7b c8 77 88 fd d6 d4 9b c9 b5 |^.C"u.{.w.......| 000000c0 ee 3e a6 e8 c5 04 90 63 3f ac be 56 67 da 30 d4 |.>.....c?..Vg.0.| 000000d0 64 fb a8 a0 |d...| >>> Flow 4 (server to client) 00000000 14 03 00 00 01 01 16 03 00 00 40 96 af fb 79 96 |..........@...y.| 00000010 92 97 2d d0 67 46 1e 08 b5 35 65 ef dc bc 8e 57 |..-.gF...5e....W| 00000020 53 b7 36 58 74 d7 88 b1 55 fc eb fa 2e f3 17 b7 |S.6Xt...U.......| 00000030 62 58 a0 9d 99 e1 85 d4 33 e0 b4 1f 1d 94 f2 88 |bX......3.......| 00000040 d5 9a 34 5b 74 cd d2 ff 87 bd 52 17 03 00 00 20 |..4[t.....R.... | 00000050 c6 61 c2 28 ac d2 0c 08 7f f1 c2 62 af 37 7e 78 |.a.(.......b.7~x| 00000060 e8 e2 a1 54 f2 3a 80 97 f8 47 64 f2 cd 94 dd 0b |...T.:...Gd.....| 00000070 17 03 00 00 30 b8 40 8f a3 18 ff 03 84 d4 1c 28 |....0.@........(| 00000080 82 ce d8 9a 81 3a dd 23 7c 65 d8 ca f7 f1 46 1b |.....:.#|e....F.| 00000090 70 f0 d7 d9 54 a7 71 e6 4d d4 25 61 5a e4 30 d3 |p...T.q.M.%aZ.0.| 000000a0 4a 42 ae 26 a5 15 03 00 00 20 c4 e8 ed 40 57 00 |JB.&..... ...@W.| 000000b0 dc a5 0e 82 90 47 92 08 dd 7e 50 6b 30 66 5e 90 |.....G...~Pk0f^.| 000000c0 73 7c 81 93 8d 24 b1 06 e7 39 |s|...$...9| go/src/pkg/crypto/tls/testdata/Server-SSLv3-RSA-RC40100644000000000000000000001357312412656737022125 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 00 00 2f 01 00 00 2b 03 00 52 cc 57 59 79 |..../...+..R.WYy| 00000010 b9 3b ef df 53 fb 09 f6 01 e5 18 0a fc 3d 65 bb |.;..S........=e.| 00000020 cf 9c 4c 77 b1 e8 6b 4f 5f c7 94 00 00 04 00 05 |..Lw..kO_.......| 00000030 00 ff 01 00 |....| >>> Flow 2 (server to client) 00000000 16 03 00 00 31 02 00 00 2d 03 00 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 |................| 00000030 05 ff 01 00 01 00 16 03 00 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 00 00 04 0e 00 |n8P)l...........| 00000300 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 00 00 84 10 00 00 80 4d 66 7a f3 f8 ab 86 |.........Mfz....| 00000010 43 4c 5f 7c 52 ca e7 3f ba 62 b3 82 88 16 7d ca |CL_|R..?.b....}.| 00000020 3a 66 15 c0 36 55 2c ab bf 30 6b cd 9c d8 b9 48 |:f..6U,..0k....H| 00000030 03 c9 d0 98 ab 0b a6 5b 39 c8 fe 82 8e bb f0 16 |.......[9.......| 00000040 6f 96 62 81 f2 dc 52 02 c9 de e4 47 73 21 6e 1e |o.b...R....Gs!n.| 00000050 3a 11 89 7a e2 6b 9e 04 64 72 15 ba 2d 10 a2 69 |:..z.k..dr..-..i| 00000060 07 e6 ba 17 cf 54 d6 4e 5f 99 e8 59 8b 54 ce 8e |.....T.N_..Y.T..| 00000070 6b 58 ba 83 68 46 4a 5f 43 3e 9b e1 32 a2 19 42 |kX..hFJ_C>..2..B| 00000080 46 0f e4 47 1a 3b 16 5f e1 14 03 00 00 01 01 16 |F..G.;._........| 00000090 03 00 00 3c 78 7e ee da 0d 38 0b 1a d6 d4 8e d5 |...>> Flow 4 (server to client) 00000000 14 03 00 00 01 01 16 03 00 00 3c 23 29 64 62 23 |..........<#)db#| 00000010 19 20 f8 2e 15 07 ee c8 f4 ab f0 3e 66 c3 ed 7b |. .........>f..{| 00000020 7c a7 c2 7e c3 25 3c 8f f3 04 dc 37 e8 fc 0a 1d ||..~.%<....7....| 00000030 fa 7a 09 d4 21 11 e3 24 21 4b 37 d1 85 cc 40 bf |.z..!..$!K7...@.| 00000040 bd bd f8 59 6b cd 73 17 03 00 00 21 47 1d ac 54 |...Yk.s....!G..T| 00000050 bd 58 a6 c0 04 e2 0c 6b 66 64 5a 85 09 0e 47 fc |.X.....kfdZ...G.| 00000060 0b 57 ee f1 24 b6 89 57 46 be 6b 0d f2 15 03 00 |.W..$..WF.k.....| 00000070 00 16 b4 f7 34 99 19 43 b6 b3 5a 8b c3 d2 67 2f |....4..C..Z...g/| 00000080 3b 19 1c 31 d4 f9 bd 96 |;..1....| go/src/pkg/crypto/tls/testdata/Server-TLSv10-ECDHE-ECDSA-AES0100644000000000000000000001442012412656737023214 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 76 01 00 00 72 03 01 53 04 f0 f9 4b |....v...r..S...K| 00000010 30 a8 68 d0 79 13 14 69 ee 3b 5d 05 cb 71 63 43 |0.h.y..i.;]..qcC| 00000020 4a 55 6b 05 25 53 19 ba e0 2f b1 00 00 04 c0 0a |JUk.%S.../......| 00000030 00 ff 01 00 00 45 00 0b 00 04 03 00 01 02 00 0a |.....E..........| 00000040 00 34 00 32 00 0e 00 0d 00 19 00 0b 00 0c 00 18 |.4.2............| 00000050 00 09 00 0a 00 16 00 17 00 08 00 06 00 07 00 14 |................| 00000060 00 15 00 04 00 05 00 12 00 13 00 01 00 02 00 03 |................| 00000070 00 0f 00 10 00 11 00 0f 00 01 01 |...........| >>> Flow 2 (server to client) 00000000 16 03 01 00 31 02 00 00 2d 03 01 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 c0 0a 00 00 |................| 00000030 05 ff 01 00 01 00 16 03 01 02 0e 0b 00 02 0a 00 |................| 00000040 02 07 00 02 04 30 82 02 00 30 82 01 62 02 09 00 |.....0...0..b...| 00000050 b8 bf 2d 47 a0 d2 eb f4 30 09 06 07 2a 86 48 ce |..-G....0...*.H.| 00000060 3d 04 01 30 45 31 0b 30 09 06 03 55 04 06 13 02 |=..0E1.0...U....| 00000070 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 00000080 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000090 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 000000a0 74 73 20 50 74 79 20 4c 74 64 30 1e 17 0d 31 32 |ts Pty Ltd0...12| 000000b0 31 31 32 32 31 35 30 36 33 32 5a 17 0d 32 32 31 |1122150632Z..221| 000000c0 31 32 30 31 35 30 36 33 32 5a 30 45 31 0b 30 09 |120150632Z0E1.0.| 000000d0 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 55 |..U....AU1.0...U| 000000e0 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 21 |....Some-State1!| 000000f0 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e 65 |0...U....Interne| 00000100 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c 74 |t Widgits Pty Lt| 00000110 64 30 81 9b 30 10 06 07 2a 86 48 ce 3d 02 01 06 |d0..0...*.H.=...| 00000120 05 2b 81 04 00 23 03 81 86 00 04 00 c4 a1 ed be |.+...#..........| 00000130 98 f9 0b 48 73 36 7e c3 16 56 11 22 f2 3d 53 c3 |...Hs6~..V.".=S.| 00000140 3b 4d 21 3d cd 6b 75 e6 f6 b0 dc 9a df 26 c1 bc |;M!=.ku......&..| 00000150 b2 87 f0 72 32 7c b3 64 2f 1c 90 bc ea 68 23 10 |...r2|.d/....h#.| 00000160 7e fe e3 25 c0 48 3a 69 e0 28 6d d3 37 00 ef 04 |~..%.H:i.(m.7...| 00000170 62 dd 0d a0 9c 70 62 83 d8 81 d3 64 31 aa 9e 97 |b....pb....d1...| 00000180 31 bd 96 b0 68 c0 9b 23 de 76 64 3f 1a 5c 7f e9 |1...h..#.vd?.\..| 00000190 12 0e 58 58 b6 5f 70 dd 9b d8 ea d5 d7 f5 d5 cc |..XX._p.........| 000001a0 b9 b6 9f 30 66 5b 66 9a 20 e2 27 e5 bf fe 3b 30 |...0f[f. .'...;0| 000001b0 09 06 07 2a 86 48 ce 3d 04 01 03 81 8c 00 30 81 |...*.H.=......0.| 000001c0 88 02 42 01 88 a2 4f eb e2 45 c5 48 7d 1b ac f5 |..B...O..E.H}...| 000001d0 ed 98 9d ae 47 70 c0 5e 1b b6 2f bd f1 b6 4d b7 |....Gp.^../...M.| 000001e0 61 40 d3 11 a2 ce ee 0b 7e 92 7e ff 76 9d c3 3b |a@......~.~.v..;| 000001f0 7e a5 3f ce fa 10 e2 59 ec 47 2d 7c ac da 4e 97 |~.?....Y.G-|..N.| 00000200 0e 15 a0 6f d0 02 42 01 4d fc be 67 13 9c 2d 05 |...o..B.M..g..-.| 00000210 0e bd 3f a3 8c 25 c1 33 13 83 0d 94 06 bb d4 37 |..?..%.3.......7| 00000220 7a f6 ec 7a c9 86 2e dd d7 11 69 7f 85 7c 56 de |z..z......i..|V.| 00000230 fb 31 78 2b e4 c7 78 0d ae cb be 9e 4e 36 24 31 |.1x+..x.....N6$1| 00000240 7b 6a 0f 39 95 12 07 8f 2a 16 03 01 00 d6 0c 00 |{j.9....*.......| 00000250 00 d2 03 00 17 41 04 1e 18 37 ef 0d 19 51 88 35 |.....A...7...Q.5| 00000260 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd a7 24 20 3e |uq..T[....g..$ >| 00000270 b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e f1 07 9f 6c |.V...(^.+-O....l| 00000280 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 a6 b5 68 1a |K[.V.2B.X..I..h.| 00000290 41 03 56 6b dc 5a 89 00 8b 30 81 88 02 42 00 c6 |A.Vk.Z...0...B..| 000002a0 85 8e 06 b7 04 04 e9 cd 9e 3e cb 66 23 95 b4 42 |.........>.f#..B| 000002b0 9c 64 81 39 05 3f b5 21 f8 28 af 60 6b 4d 3d ba |.d.9.?.!.(.`kM=.| 000002c0 a1 4b 5e 77 ef e7 59 28 fe 1d c1 27 a2 ff a8 de |.K^w..Y(...'....| 000002d0 33 48 b3 c1 85 6a 42 9b f9 7e 7e 31 c2 e5 bd 66 |3H...jB..~~1...f| 000002e0 02 42 00 ad 7d 06 35 ab ec 8d ac d4 ba 1b 49 5e |.B..}.5.......I^| 000002f0 05 5f f0 97 93 82 b8 2b 8d 91 98 63 8e b4 14 62 |._.....+...c...b| 00000300 db 1e c9 2b 30 f8 41 9b a6 e6 bc de 0e 68 30 21 |...+0.A......h0!| 00000310 d8 ef 2f 05 42 da f2 e0 2c 06 33 1d 0d 9a 1a 75 |../.B...,.3....u| 00000320 59 a7 3a bc 16 03 01 00 04 0e 00 00 00 |Y.:..........| >>> Flow 3 (client to server) 00000000 16 03 01 00 46 10 00 00 42 41 04 08 28 cf bd 3c |....F...BA..(..<| 00000010 3c cc 98 9e 73 3f 92 a7 cb 22 83 3b c7 61 46 0e |<...s?...".;.aF.| 00000020 4d 7c 30 b5 06 85 2f 01 be b5 40 e2 64 1e 45 c1 |M|0.../...@.d.E.| 00000030 9d 73 95 d5 65 92 0b 9b e7 6f c6 91 ab b6 fa be |.s..e....o......| 00000040 61 83 a7 f2 eb f5 65 31 fe 24 7b 14 03 01 00 01 |a.....e1.${.....| 00000050 01 16 03 01 00 30 15 d1 c4 ca 0b 01 84 13 5a ba |.....0........Z.| 00000060 89 04 87 73 7c bb d8 89 7e 10 27 ba 6f 5d dc d3 |...s|...~.'.o]..| 00000070 b5 ef 32 86 58 cc fb eb 5c 32 9e 95 ef 01 1c ac |..2.X...\2......| 00000080 dc 8e df 7f fe 0a |......| >>> Flow 4 (server to client) 00000000 14 03 01 00 01 01 16 03 01 00 30 e8 48 86 81 3c |..........0.H..<| 00000010 f5 25 5c 94 a9 06 c4 5c 71 62 b1 43 76 ec 2c 44 |.%\....\qb.Cv.,D| 00000020 95 b5 8c 95 d2 ff 82 92 b6 fc 52 75 03 c6 a1 f0 |..........Ru....| 00000030 99 6d b1 ed ec 68 6c d7 9f 18 50 17 03 01 00 20 |.m...hl...P.... | 00000040 32 d9 26 8a 81 b8 9d a5 7b fd d5 4e 7a db 2e 29 |2.&.....{..Nz..)| 00000050 58 9a 4f 6a 27 18 bc dc c2 49 b8 65 cb 8e 16 5a |X.Oj'....I.e...Z| 00000060 17 03 01 00 30 c4 56 0a ad 9a 82 cb 3e 32 f1 7c |....0.V.....>2.|| 00000070 95 6e dd cd e9 4d f0 e5 2d c9 a3 f7 de bb d7 fd |.n...M..-.......| 00000080 84 bb df 34 8c 64 1f 03 58 64 19 4a 5b 7a a8 81 |...4.d..Xd.J[z..| 00000090 52 bb 51 0a 43 15 03 01 00 20 89 18 7a 40 ec 49 |R.Q.C.... ..z@.I| 000000a0 52 d5 d3 20 ac 07 eb e9 4a 78 23 cf e7 21 32 74 |R.. ....Jx#..!2t| 000000b0 ec 40 8d a8 f4 33 1c ae 93 cf |.@...3....| go/src/pkg/crypto/tls/testdata/Server-TLSv10-RSA-3DES0100644000000000000000000001360212412656737022303 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 36 01 00 00 32 03 01 52 cc 57 59 13 |....6...2..R.WY.| 00000010 8b e6 5b a3 1d cb 94 ef 48 e4 59 7e 20 6d 07 67 |..[.....H.Y~ m.g| 00000020 1e 28 6d 31 a2 e7 96 b3 7d 32 cc 00 00 04 00 0a |.(m1....}2......| 00000030 00 ff 01 00 00 05 00 0f 00 01 01 |...........| >>> Flow 2 (server to client) 00000000 16 03 01 00 31 02 00 00 2d 03 01 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 0a 00 00 |................| 00000030 05 ff 01 00 01 00 16 03 01 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 01 00 04 0e 00 |n8P)l...........| 00000300 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 01 00 86 10 00 00 82 00 80 2e af d2 61 f6 |..............a.| 00000010 e2 b8 24 da 28 17 55 99 fd 11 bd 7a ab 98 dd f2 |..$.(.U....z....| 00000020 f6 5f e0 11 6b 12 61 6f 86 48 b2 6e db f0 dd d5 |._..k.ao.H.n....| 00000030 07 88 e5 95 f4 2d 6b 0c d0 09 1a 5e 5f 50 1f dc |.....-k....^_P..| 00000040 f2 e7 02 7d 5e a0 70 29 80 ef 87 aa cc 95 3f 2e |...}^.p)......?.| 00000050 24 d1 40 b6 62 53 1d 25 31 87 1e 2f 77 d3 e1 1c |$.@.bS.%1../w...| 00000060 c4 99 89 bc 99 09 e9 ad 1f ce 09 e6 36 1c 3e 97 |............6.>.| 00000070 be 62 69 a0 4e 14 20 9c 82 2a 3e fc 7e 9b c4 7a |.bi.N. ..*>.~..z| 00000080 5a f7 ad 1a 03 17 2a f8 7a 5f 44 14 03 01 00 01 |Z.....*.z_D.....| 00000090 01 16 03 01 00 28 49 6b da 73 07 ad 85 9a 0e fb |.....(Ik.s......| 000000a0 dd e0 69 ef c9 22 2d 86 91 51 26 63 d0 24 7d 16 |..i.."-..Q&c.$}.| 000000b0 3c db 9b 00 c9 7e 64 e2 69 02 85 7d f7 47 |<....~d.i..}.G| >>> Flow 4 (server to client) 00000000 14 03 01 00 01 01 16 03 01 00 28 dc 60 83 43 6c |..........(.`.Cl| 00000010 37 79 ab 6e 92 1f 66 d0 b1 12 ce c1 64 9d 2b 68 |7y.n..f.....d.+h| 00000020 c7 1a e5 1f 8c 80 08 d2 86 3e a1 2c e3 7e f4 64 |.........>.,.~.d| 00000030 e7 96 b2 17 03 01 00 18 8d b5 7c 03 78 cf dc 09 |..........|.x...| 00000040 95 06 4b a6 82 f9 30 d2 6b 26 cb 0a 9a 9d 47 9f |..K...0.k&....G.| 00000050 17 03 01 00 28 30 a9 55 dd b9 4d 6a 76 00 39 96 |....(0.U..Mjv.9.| 00000060 a3 94 6a df e5 af 1e a2 eb bb e4 ac 95 2c f7 93 |..j..........,..| 00000070 ef d1 b5 13 d8 e2 06 1a ad 5c 00 dd 0c 15 03 01 |.........\......| 00000080 00 18 a5 62 e4 8b 51 1d 28 46 bc 8a c8 50 a3 32 |...b..Q.(F...P.2| 00000090 6b 7b f1 b6 19 43 63 1f 7d 38 |k{...Cc.}8| go/src/pkg/crypto/tls/testdata/Server-TLSv10-RSA-AES0100644000000000000000000001414712412656737022222 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 36 01 00 00 32 03 01 52 cc 57 59 5d |....6...2..R.WY]| 00000010 0d 77 24 3e b3 32 3d ba 0f b0 aa 1d e3 13 06 f6 |.w$>.2=.........| 00000020 0f be 3c 92 ba 93 bd a6 6d 69 53 00 00 04 00 2f |..<.....miS..../| 00000030 00 ff 01 00 00 05 00 0f 00 01 01 |...........| >>> Flow 2 (server to client) 00000000 16 03 01 00 31 02 00 00 2d 03 01 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 2f 00 00 |............./..| 00000030 05 ff 01 00 01 00 16 03 01 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 01 00 04 0e 00 |n8P)l...........| 00000300 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 01 00 86 10 00 00 82 00 80 20 e6 80 f7 48 |........... ...H| 00000010 7e 7d 08 08 54 e1 b4 e3 98 27 5f 90 9d 3b e3 c2 |~}..T....'_..;..| 00000020 c8 8b dc 9e ff 75 fa fc 60 e1 9e 67 7c c4 08 27 |.....u..`..g|..'| 00000030 cc 6f 15 6c bc 7c 96 de 83 8f 98 6d 4a c7 b7 20 |.o.l.|.....mJ.. | 00000040 8c 19 47 5a ff 76 92 0a df df 66 d2 b6 9d 2d 06 |..GZ.v....f...-.| 00000050 fb ac 07 cf 38 08 f1 fd 0d fe 07 d7 69 3e 8a 79 |....8.......i>.y| 00000060 dc 2d ab bb f7 18 3c 51 14 6e c6 70 95 a2 59 b1 |.-........0| 000000c0 ed c6 bc c2 38 b6 |....8.| >>> Flow 4 (server to client) 00000000 14 03 01 00 01 01 16 03 01 00 30 5d 0c a2 18 13 |..........0]....| 00000010 40 a1 84 ce c5 d8 4e fc a4 8a 14 b5 94 18 b1 86 |@.....N.........| 00000020 da 6a 7d 26 08 d6 a0 f8 78 5b 42 7e f8 83 54 56 |.j}&....x[B~..TV| 00000030 36 a4 91 37 67 5a d7 68 37 c4 4f 17 03 01 00 20 |6..7gZ.h7.O.... | 00000040 fd aa 5e cf 4b 12 c5 be a4 a2 65 5d 6e 65 46 5f |..^.K.....e]neF_| 00000050 d2 fe 46 e7 77 2d 9c 1e 0b 39 40 48 c2 2f be 21 |..F.w-...9@H./.!| 00000060 17 03 01 00 30 03 af 9e 6b d6 76 ed 9e 1d 8b 8b |....0...k.v.....| 00000070 2e 2a 5d da c4 73 95 ac 0e 6f 69 cb 63 df 50 27 |.*]..s...oi.c.P'| 00000080 30 de 2e 55 86 85 ad 3e 33 22 49 72 f2 e2 9f 8f |0..U...>3"Ir....| 00000090 ba cf 4e 30 34 15 03 01 00 20 4c 4c 97 61 70 ea |..N04.... LL.ap.| 000000a0 ae fc a2 e9 c6 c2 b6 2e 4d 85 f6 ae 2b 56 46 82 |........M...+VF.| 000000b0 9d d8 a5 82 17 fa 3e 62 67 7e |......>bg~| go/src/pkg/crypto/tls/testdata/Server-TLSv10-RSA-RC40100644000000000000000000001322712412656737022200 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 36 01 00 00 32 03 01 52 cc 57 59 cf |....6...2..R.WY.| 00000010 00 a1 49 a4 37 69 74 d8 a7 93 ea 8d e7 50 b7 b3 |..I.7it......P..| 00000020 8c ec e5 56 fb dc 5f 1a 2e ab 18 00 00 04 00 05 |...V.._.........| 00000030 00 ff 01 00 00 05 00 0f 00 01 01 |...........| >>> Flow 2 (server to client) 00000000 16 03 01 00 31 02 00 00 2d 03 01 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 |................| 00000030 05 ff 01 00 01 00 16 03 01 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 01 00 04 0e 00 |n8P)l...........| 00000300 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 01 00 86 10 00 00 82 00 80 b1 96 7b 6f f5 |.............{o.| 00000010 a0 cb 0d 60 9b 64 d3 f5 17 76 47 7b bc a5 0e 96 |...`.d...vG{....| 00000020 53 af 68 0c 96 22 f7 28 0c 24 37 9c 51 69 ed b2 |S.h..".(.$7.Qi..| 00000030 47 14 ba 33 c5 79 6b 96 f2 ab 3c 02 5c 37 a4 97 |G..3.yk...<.\7..| 00000040 23 fc 7f d3 95 2d 85 99 1a 10 1b 38 e5 f1 83 55 |#....-.....8...U| 00000050 4a ab 60 f8 89 0a 6a c4 eb 45 f5 b0 f4 f8 09 31 |J.`...j..E.....1| 00000060 6e f0 25 30 fd 5e 68 61 bc cb 0d 9e 05 73 0a f4 |n.%0.^ha.....s..| 00000070 a5 2e d9 d5 4e 08 f6 3b 8d 2d 21 f5 79 b6 97 55 |....N..;.-!.y..U| 00000080 b9 99 03 49 ea 96 36 49 21 56 bf 14 03 01 00 01 |...I..6I!V......| 00000090 01 16 03 01 00 24 f0 4f 30 06 c3 25 01 93 34 ab |.....$.O0..%..4.| 000000a0 93 8f 59 26 83 6e 8a fd 5a a6 cf af ad b1 a2 83 |..Y&.n..Z.......| 000000b0 28 ff c2 66 5f ac e5 a5 a5 03 |(..f_.....| >>> Flow 4 (server to client) 00000000 14 03 01 00 01 01 16 03 01 00 24 9d b4 ea d8 be |..........$.....| 00000010 b5 9f 00 fd b5 99 04 12 6b 7a 3f b8 52 d7 52 a9 |........kz?.R.R.| 00000020 e9 bd 5b 63 ad b0 53 ac 46 80 be 48 6e dd ee 17 |..[c..S.F..Hn...| 00000030 03 01 00 21 07 ac c4 fb 21 e4 b8 6b 64 3b b5 27 |...!....!..kd;.'| 00000040 29 67 a1 10 2e d2 71 d5 59 5e fc 1d 84 31 15 6e |)g....q.Y^...1.n| 00000050 4d 4b dc a9 3a 15 03 01 00 16 25 22 a5 78 23 5a |MK..:.....%".x#Z| 00000060 69 6f 99 a1 b3 1c 8d bf f3 bd 1b c8 1c 57 15 75 |io...........W.u| go/src/pkg/crypto/tls/testdata/Server-TLSv11-RSA-RC40100644000000000000000000001322712412656737022201 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 36 01 00 00 32 03 02 52 cc 57 59 bd |....6...2..R.WY.| 00000010 cd 9d 1e 17 38 43 a5 e3 e7 30 e4 2b 2a ef f7 5b |....8C...0.+*..[| 00000020 81 91 0c 0b 52 f8 2d 2c 61 d3 13 00 00 04 00 05 |....R.-,a.......| 00000030 00 ff 01 00 00 05 00 0f 00 01 01 |...........| >>> Flow 2 (server to client) 00000000 16 03 02 00 31 02 00 00 2d 03 02 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 |................| 00000030 05 ff 01 00 01 00 16 03 02 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 02 00 04 0e 00 |n8P)l...........| 00000300 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 02 00 86 10 00 00 82 00 80 71 2b 19 25 86 |...........q+.%.| 00000010 a0 ff ba d5 1c a6 0c 8b 6b 0a b8 e9 42 93 2f 55 |........k...B./U| 00000020 a8 ee 62 fa ed bc 6d e2 9d e3 76 a6 73 d7 99 58 |..b...m...v.s..X| 00000030 cc 0b 14 42 96 7c b6 c7 8f 21 16 cf 71 9b 2b b9 |...B.|...!..q.+.| 00000040 e0 34 57 76 22 d5 87 8a ce 1f ea 26 6e 1e e6 ca |.4Wv"......&n...| 00000050 55 3b 20 cd cf 42 26 b1 51 3e 8c 1d a2 ae c4 63 |U; ..B&.Q>.....c| 00000060 f5 ce 27 3c 1e c3 e0 e3 b1 16 c1 8a 62 bd 21 7f |..'<........b.!.| 00000070 38 b5 b7 3a 3c bb 03 37 e1 a5 ff f1 29 e2 21 0a |8..:<..7....).!.| 00000080 8c 20 02 e0 c0 82 97 9d 18 6d f8 14 03 02 00 01 |. .......m......| 00000090 01 16 03 02 00 24 bc 19 16 6e fd 0b db 9e d5 1d |.....$...n......| 000000a0 65 b6 57 1c 58 b5 6a ac f7 4f f0 cd a1 a9 0c c0 |e.W.X.j..O......| 000000b0 df e6 eb d5 00 f7 fd 43 bb 27 |.......C.'| >>> Flow 4 (server to client) 00000000 14 03 02 00 01 01 16 03 02 00 24 cf 4f e4 27 b0 |..........$.O.'.| 00000010 3d 17 34 b1 3c 37 6e c5 2b 3d 4a c3 46 50 44 b4 |=.4.<7n.+=J.FPD.| 00000020 de 77 18 10 4f 60 b3 4e dc 06 fd 25 ec 05 15 17 |.w..O`.N...%....| 00000030 03 02 00 21 a5 c9 32 f2 21 fb 94 7e 0d 15 65 fd |...!..2.!..~..e.| 00000040 3e fe e4 c1 a5 e9 88 72 b2 f1 26 39 a6 48 59 97 |>......r..&9.HY.| 00000050 65 e3 f0 cb 46 15 03 02 00 16 4b 02 ec cd ca 30 |e...F.....K....0| 00000060 42 cf 3d a0 4a fa 8e 79 bb ed b0 59 40 9b 2c 1a |B.=.J..y...Y@.,.| go/src/pkg/crypto/tls/testdata/Server-TLSv12-CipherSuiteCertPreferenceECDSA0100644000000000000000000001546312412656737026774 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 ca 01 00 00 c6 03 03 53 04 f1 3f 5f |...........S..?_| 00000010 f4 ef 1f b3 41 0b 54 e4 4d 56 0a 31 22 b8 5c 73 |....A.T.MV.1".\s| 00000020 a3 cb b5 b2 9d 43 f1 83 bc d3 bd 00 00 32 c0 30 |.....C.......2.0| 00000030 c0 2c c0 28 c0 24 c0 14 c0 0a c0 22 c0 21 00 a3 |.,.(.$.....".!..| 00000040 00 9f 00 6b 00 6a 00 39 00 38 00 88 00 87 c0 32 |...k.j.9.8.....2| 00000050 c0 2e c0 2a c0 26 c0 0f c0 05 00 9d 00 3d 00 35 |...*.&.......=.5| 00000060 01 00 00 6b 00 0b 00 04 03 00 01 02 00 0a 00 34 |...k...........4| 00000070 00 32 00 0e 00 0d 00 19 00 0b 00 0c 00 18 00 09 |.2..............| 00000080 00 0a 00 16 00 17 00 08 00 06 00 07 00 14 00 15 |................| 00000090 00 04 00 05 00 12 00 13 00 01 00 02 00 03 00 0f |................| 000000a0 00 10 00 11 00 0d 00 22 00 20 06 01 06 02 06 03 |.......". ......| 000000b0 05 01 05 02 05 03 04 01 04 02 04 03 03 01 03 02 |................| 000000c0 03 03 02 01 02 02 02 03 01 01 00 0f 00 01 01 |...............| >>> Flow 2 (server to client) 00000000 16 03 03 00 2a 02 00 00 26 03 03 00 00 00 00 00 |....*...&.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 c0 0a 00 16 |................| 00000030 03 03 02 0e 0b 00 02 0a 00 02 07 00 02 04 30 82 |..............0.| 00000040 02 00 30 82 01 62 02 09 00 b8 bf 2d 47 a0 d2 eb |..0..b.....-G...| 00000050 f4 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 0b |.0...*.H.=..0E1.| 00000060 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000070 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000080 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 00000090 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000a0 4c 74 64 30 1e 17 0d 31 32 31 31 32 32 31 35 30 |Ltd0...121122150| 000000b0 36 33 32 5a 17 0d 32 32 31 31 32 30 31 35 30 36 |632Z..2211201506| 000000c0 33 32 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |32Z0E1.0...U....| 000000d0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000e0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 000000f0 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000100 74 73 20 50 74 79 20 4c 74 64 30 81 9b 30 10 06 |ts Pty Ltd0..0..| 00000110 07 2a 86 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 |.*.H.=....+...#.| 00000120 81 86 00 04 00 c4 a1 ed be 98 f9 0b 48 73 36 7e |............Hs6~| 00000130 c3 16 56 11 22 f2 3d 53 c3 3b 4d 21 3d cd 6b 75 |..V.".=S.;M!=.ku| 00000140 e6 f6 b0 dc 9a df 26 c1 bc b2 87 f0 72 32 7c b3 |......&.....r2|.| 00000150 64 2f 1c 90 bc ea 68 23 10 7e fe e3 25 c0 48 3a |d/....h#.~..%.H:| 00000160 69 e0 28 6d d3 37 00 ef 04 62 dd 0d a0 9c 70 62 |i.(m.7...b....pb| 00000170 83 d8 81 d3 64 31 aa 9e 97 31 bd 96 b0 68 c0 9b |....d1...1...h..| 00000180 23 de 76 64 3f 1a 5c 7f e9 12 0e 58 58 b6 5f 70 |#.vd?.\....XX._p| 00000190 dd 9b d8 ea d5 d7 f5 d5 cc b9 b6 9f 30 66 5b 66 |............0f[f| 000001a0 9a 20 e2 27 e5 bf fe 3b 30 09 06 07 2a 86 48 ce |. .'...;0...*.H.| 000001b0 3d 04 01 03 81 8c 00 30 81 88 02 42 01 88 a2 4f |=......0...B...O| 000001c0 eb e2 45 c5 48 7d 1b ac f5 ed 98 9d ae 47 70 c0 |..E.H}.......Gp.| 000001d0 5e 1b b6 2f bd f1 b6 4d b7 61 40 d3 11 a2 ce ee |^../...M.a@.....| 000001e0 0b 7e 92 7e ff 76 9d c3 3b 7e a5 3f ce fa 10 e2 |.~.~.v..;~.?....| 000001f0 59 ec 47 2d 7c ac da 4e 97 0e 15 a0 6f d0 02 42 |Y.G-|..N....o..B| 00000200 01 4d fc be 67 13 9c 2d 05 0e bd 3f a3 8c 25 c1 |.M..g..-...?..%.| 00000210 33 13 83 0d 94 06 bb d4 37 7a f6 ec 7a c9 86 2e |3.......7z..z...| 00000220 dd d7 11 69 7f 85 7c 56 de fb 31 78 2b e4 c7 78 |...i..|V..1x+..x| 00000230 0d ae cb be 9e 4e 36 24 31 7b 6a 0f 39 95 12 07 |.....N6$1{j.9...| 00000240 8f 2a 16 03 03 00 d8 0c 00 00 d4 03 00 17 41 04 |.*............A.| 00000250 1e 18 37 ef 0d 19 51 88 35 75 71 b5 e5 54 5b 12 |..7...Q.5uq..T[.| 00000260 2e 8f 09 67 fd a7 24 20 3e b2 56 1c ce 97 28 5e |...g..$ >.V...(^| 00000270 f8 2b 2d 4f 9e f1 07 9f 6c 4b 5b 83 56 e2 32 42 |.+-O....lK[.V.2B| 00000280 e9 58 b6 d7 49 a6 b5 68 1a 41 03 56 6b dc 5a 89 |.X..I..h.A.Vk.Z.| 00000290 04 03 00 8b 30 81 88 02 42 00 c6 85 8e 06 b7 04 |....0...B.......| 000002a0 04 e9 cd 9e 3e cb 66 23 95 b4 42 9c 64 81 39 05 |....>.f#..B.d.9.| 000002b0 3f b5 21 f8 28 af 60 6b 4d 3d ba a1 4b 5e 77 ef |?.!.(.`kM=..K^w.| 000002c0 e7 59 28 fe 1d c1 27 a2 ff a8 de 33 48 b3 c1 85 |.Y(...'....3H...| 000002d0 6a 42 9b f9 7e 7e 31 c2 e5 bd 66 02 42 00 ad 7d |jB..~~1...f.B..}| 000002e0 06 35 ab ec 8d ac d4 ba 1b 49 5e 05 5f f0 97 93 |.5.......I^._...| 000002f0 82 b8 2b 8d 91 98 63 8e b4 14 62 db 1e c9 2b 64 |..+...c...b...+d| 00000300 e9 e6 bf 15 5b 67 c2 40 90 c6 1f b7 92 db 4b f6 |....[g.@......K.| 00000310 f4 db ae 82 f1 4f 02 75 52 40 38 10 ff 35 f0 16 |.....O.uR@8..5..| 00000320 03 03 00 04 0e 00 00 00 |........| >>> Flow 3 (client to server) 00000000 16 03 03 00 46 10 00 00 42 41 04 d8 94 c4 05 26 |....F...BA.....&| 00000010 76 29 2d 0e ec 47 b6 50 d5 a3 da 2a ba 02 11 37 |v)-..G.P...*...7| 00000020 3d ef e6 2a db d0 47 47 a7 9a 5f 43 2d 98 78 26 |=..*..GG.._C-.x&| 00000030 81 e2 f1 ba fe f7 66 c6 61 cb c1 b7 60 62 34 a5 |......f.a...`b4.| 00000040 78 67 50 3d 9a 0e 4a 8c 8f d7 10 14 03 03 00 01 |xgP=..J.........| 00000050 01 16 03 03 00 40 5e 46 b0 5d 30 f6 da 8f 9e 67 |.....@^F.]0....g| 00000060 f5 3e bd fe c9 b8 53 b2 10 d5 7c 0e 34 e3 93 6d |.>....S...|.4..m| 00000070 0e 8e 8a 2b df fb 9a 0f a5 23 55 e7 0a 4b e2 d3 |...+.....#U..K..| 00000080 db 15 e8 52 74 26 78 b3 b0 56 65 63 ac ae 1e c0 |...Rt&x..Vec....| 00000090 0b f4 92 56 a9 04 |...V..| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 00 |..........@.....| 00000010 00 00 00 00 00 00 00 00 00 00 00 16 a9 63 0a 99 |.............c..| 00000020 21 8a fc 5c b3 ee 05 71 4e 75 c0 d9 40 54 0d 3e |!..\...qNu..@T.>| 00000030 4e 5d 44 b7 4b 5d a9 e7 5a 30 ed b6 d5 08 50 b1 |N]D.K]..Z0....P.| 00000040 e8 8c 54 eb 1b 39 7a f9 3b ac 2e 17 03 03 00 40 |..T..9z.;......@| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000060 96 03 20 2b 20 c4 c1 9a 76 7b f3 96 bd 33 ed e6 |.. + ...v{...3..| 00000070 38 48 ea 53 d5 e0 62 b5 7e 1a 36 a8 dd 9f 2d 4b |8H.S..b.~.6...-K| 00000080 06 0d ae f6 bc 99 14 b3 93 14 27 63 e2 a0 c8 76 |..........'c...v| 00000090 15 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| 000000a0 00 00 00 00 00 48 af e1 e4 11 e1 b7 03 19 b0 e3 |.....H..........| 000000b0 e6 a9 66 d8 ac af aa 03 f6 0d 51 df 9a 27 78 3a |..f.......Q..'x:| 000000c0 56 5a 03 1a 4c |VZ..L| go/src/pkg/crypto/tls/testdata/Server-TLSv12-CipherSuiteCertPreferenceRSA0100644000000000000000000001711612412656737026577 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 ca 01 00 00 c6 03 03 53 04 f1 3f cc |...........S..?.| 00000010 41 74 00 07 cb ae 3b 30 79 48 51 60 41 a3 8c ab |At....;0yHQ`A...| 00000020 dc 76 f9 74 52 1e c5 fb a9 69 c2 00 00 32 c0 30 |.v.tR....i...2.0| 00000030 c0 2c c0 28 c0 24 c0 14 c0 0a c0 22 c0 21 00 a3 |.,.(.$.....".!..| 00000040 00 9f 00 6b 00 6a 00 39 00 38 00 88 00 87 c0 32 |...k.j.9.8.....2| 00000050 c0 2e c0 2a c0 26 c0 0f c0 05 00 9d 00 3d 00 35 |...*.&.......=.5| 00000060 01 00 00 6b 00 0b 00 04 03 00 01 02 00 0a 00 34 |...k...........4| 00000070 00 32 00 0e 00 0d 00 19 00 0b 00 0c 00 18 00 09 |.2..............| 00000080 00 0a 00 16 00 17 00 08 00 06 00 07 00 14 00 15 |................| 00000090 00 04 00 05 00 12 00 13 00 01 00 02 00 03 00 0f |................| 000000a0 00 10 00 11 00 0d 00 22 00 20 06 01 06 02 06 03 |.......". ......| 000000b0 05 01 05 02 05 03 04 01 04 02 04 03 03 01 03 02 |................| 000000c0 03 03 02 01 02 02 02 03 01 01 00 0f 00 01 01 |...............| >>> Flow 2 (server to client) 00000000 16 03 03 00 2a 02 00 00 26 03 03 00 00 00 00 00 |....*...&.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 c0 14 00 16 |................| 00000030 03 03 02 be 0b 00 02 ba 00 02 b7 00 02 b4 30 82 |..............0.| 00000040 02 b0 30 82 02 19 a0 03 02 01 02 02 09 00 85 b0 |..0.............| 00000050 bb a4 8a 7f b8 ca 30 0d 06 09 2a 86 48 86 f7 0d |......0...*.H...| 00000060 01 01 05 05 00 30 45 31 0b 30 09 06 03 55 04 06 |.....0E1.0...U..| 00000070 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 |..AU1.0...U....S| 00000080 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 |ome-State1!0...U| 00000090 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 |....Internet Wid| 000000a0 67 69 74 73 20 50 74 79 20 4c 74 64 30 1e 17 0d |gits Pty Ltd0...| 000000b0 31 30 30 34 32 34 30 39 30 39 33 38 5a 17 0d 31 |100424090938Z..1| 000000c0 31 30 34 32 34 30 39 30 39 33 38 5a 30 45 31 0b |10424090938Z0E1.| 000000d0 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 000000e0 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 000000f0 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 00000100 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 00000110 4c 74 64 30 81 9f 30 0d 06 09 2a 86 48 86 f7 0d |Ltd0..0...*.H...| 00000120 01 01 01 05 00 03 81 8d 00 30 81 89 02 81 81 00 |.........0......| 00000130 bb 79 d6 f5 17 b5 e5 bf 46 10 d0 dc 69 be e6 2b |.y......F...i..+| 00000140 07 43 5a d0 03 2d 8a 7a 43 85 b7 14 52 e7 a5 65 |.CZ..-.zC...R..e| 00000150 4c 2c 78 b8 23 8c b5 b4 82 e5 de 1f 95 3b 7e 62 |L,x.#........;~b| 00000160 a5 2c a5 33 d6 fe 12 5c 7a 56 fc f5 06 bf fa 58 |.,.3...\zV.....X| 00000170 7b 26 3f b5 cd 04 d3 d0 c9 21 96 4a c7 f4 54 9f |{&?......!.J..T.| 00000180 5a bf ef 42 71 00 fe 18 99 07 7f 7e 88 7d 7d f1 |Z..Bq......~.}}.| 00000190 04 39 c4 a2 2e db 51 c9 7c e3 c0 4c 3b 32 66 01 |.9....Q.|..L;2f.| 000001a0 cf af b1 1d b8 71 9a 1d db db 89 6b ae da 2d 79 |.....q.....k..-y| 000001b0 02 03 01 00 01 a3 81 a7 30 81 a4 30 1d 06 03 55 |........0..0...U| 000001c0 1d 0e 04 16 04 14 b1 ad e2 85 5a cf cb 28 db 69 |..........Z..(.i| 000001d0 ce 23 69 de d3 26 8e 18 88 39 30 75 06 03 55 1d |.#i..&...90u..U.| 000001e0 23 04 6e 30 6c 80 14 b1 ad e2 85 5a cf cb 28 db |#.n0l......Z..(.| 000001f0 69 ce 23 69 de d3 26 8e 18 88 39 a1 49 a4 47 30 |i.#i..&...9.I.G0| 00000200 45 31 0b 30 09 06 03 55 04 06 13 02 41 55 31 13 |E1.0...U....AU1.| 00000210 30 11 06 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 |0...U....Some-St| 00000220 61 74 65 31 21 30 1f 06 03 55 04 0a 13 18 49 6e |ate1!0...U....In| 00000230 74 65 72 6e 65 74 20 57 69 64 67 69 74 73 20 50 |ternet Widgits P| 00000240 74 79 20 4c 74 64 82 09 00 85 b0 bb a4 8a 7f b8 |ty Ltd..........| 00000250 ca 30 0c 06 03 55 1d 13 04 05 30 03 01 01 ff 30 |.0...U....0....0| 00000260 0d 06 09 2a 86 48 86 f7 0d 01 01 05 05 00 03 81 |...*.H..........| 00000270 81 00 08 6c 45 24 c7 6b b1 59 ab 0c 52 cc f2 b0 |...lE$.k.Y..R...| 00000280 14 d7 87 9d 7a 64 75 b5 5a 95 66 e4 c5 2b 8e ae |....zdu.Z.f..+..| 00000290 12 66 1f eb 4f 38 b3 6e 60 d3 92 fd f7 41 08 b5 |.f..O8.n`....A..| 000002a0 25 13 b1 18 7a 24 fb 30 1d ba ed 98 b9 17 ec e7 |%...z$.0........| 000002b0 d7 31 59 db 95 d3 1d 78 ea 50 56 5c d5 82 5a 2d |.1Y....x.PV\..Z-| 000002c0 5a 5f 33 c4 b6 d8 c9 75 90 96 8c 0f 52 98 b5 cd |Z_3....u....R...| 000002d0 98 1f 89 20 5f f2 a0 1c a3 1b 96 94 dd a9 fd 57 |... _..........W| 000002e0 e9 70 e8 26 6d 71 99 9b 26 6e 38 50 29 6c 90 a7 |.p.&mq..&n8P)l..| 000002f0 bd d9 16 03 03 00 cd 0c 00 00 c9 03 00 17 41 04 |..............A.| 00000300 1e 18 37 ef 0d 19 51 88 35 75 71 b5 e5 54 5b 12 |..7...Q.5uq..T[.| 00000310 2e 8f 09 67 fd a7 24 20 3e b2 56 1c ce 97 28 5e |...g..$ >.V...(^| 00000320 f8 2b 2d 4f 9e f1 07 9f 6c 4b 5b 83 56 e2 32 42 |.+-O....lK[.V.2B| 00000330 e9 58 b6 d7 49 a6 b5 68 1a 41 03 56 6b dc 5a 89 |.X..I..h.A.Vk.Z.| 00000340 04 01 00 80 9d 84 09 35 73 fb f6 ea 94 7b 49 fb |.......5s....{I.| 00000350 c2 70 b1 11 64 5b 93 9f d9 8c f5 56 98 f6 d3 66 |.p..d[.....V...f| 00000360 a6 1d 18 56 88 87 71 3f b0 38 9d 44 1f ad 2c 0d |...V..q?.8.D..,.| 00000370 3a a7 e8 d4 3e 33 3c 41 20 f3 3f 5c e5 fb e3 23 |:...>36as.d...mP| 000003b0 33 55 c7 e1 c5 a5 4c 32 5c 95 dc 07 43 60 49 11 |3U....L2\...C`I.| 000003c0 e9 98 cc ba 16 03 03 00 04 0e 00 00 00 |.............| >>> Flow 3 (client to server) 00000000 16 03 03 00 46 10 00 00 42 41 04 28 02 84 d5 b4 |....F...BA.(....| 00000010 58 07 47 d5 a0 d6 0b 1d 37 91 e6 34 a4 ad 0b ad |X.G.....7..4....| 00000020 22 01 82 77 a7 32 86 78 83 3a da 75 2f e5 68 7a |"..w.2.x.:.u/.hz| 00000030 de e4 05 e0 02 47 40 4e 38 d2 2c c3 7b da 53 73 |.....G@N8.,.{.Ss| 00000040 19 cb 8b 73 34 72 4d 33 71 39 c8 14 03 03 00 01 |...s4rM3q9......| 00000050 01 16 03 03 00 40 10 63 43 76 83 bd 36 e4 1e 4d |.....@.cCv..6..M| 00000060 7e 13 b0 ac aa c8 ec 90 31 df 84 46 49 68 39 5a |~.......1..FIh9Z| 00000070 05 8b 73 32 86 15 3a 18 57 d8 e2 2c 2d 05 89 93 |..s2..:.W..,-...| 00000080 37 b8 dd 73 33 92 ff a7 b2 53 27 94 b7 25 56 64 |7..s3....S'..%Vd| 00000090 a1 d3 2c f7 6b 71 |..,.kq| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 00 |..........@.....| 00000010 00 00 00 00 00 00 00 00 00 00 00 21 5c 31 b1 4b |...........!\1.K| 00000020 96 96 30 8f 79 35 3a 3a 2d 26 67 d0 70 48 be 30 |..0.y5::-&g.pH.0| 00000030 f8 3e e8 c1 cb 1d d5 89 f6 9c 72 bb 1c f9 4d 90 |.>........r...M.| 00000040 9c d7 c6 fa 40 76 a5 61 46 61 24 17 03 03 00 40 |....@v.aFa$....@| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000060 94 8a 14 04 06 b9 30 a0 67 fd b2 4c 84 f4 10 93 |......0.g..L....| 00000070 7d d4 2b 23 f0 e9 62 93 c2 20 a2 f2 7c 07 21 4b |}.+#..b.. ..|.!K| 00000080 94 ba 7b 7d cb 77 da 85 93 bd 53 ee ca db 9b 3e |..{}.w....S....>| 00000090 15 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| 000000a0 00 00 00 00 00 17 3f 53 8d b3 35 b4 84 ed bb 12 |......?S..5.....| 000000b0 cf 73 25 25 7c c3 d3 bb 1f 5a 6b 73 9a 8a b1 a2 |.s%%|....Zks....| 000000c0 ba 99 f8 0e 43 |....C| go/src/pkg/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedAndECDSAGiven0100644000000000000000000002231112412656737027257 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 5c 01 00 00 58 03 03 52 cc 57 59 65 |....\...X..R.WYe| 00000010 ae b3 ec a4 7a 05 f7 ec 39 22 7d 8c 91 96 6b e0 |....z...9"}...k.| 00000020 69 81 ff 88 28 17 60 ac 94 19 ff 00 00 04 00 05 |i...(.`.........| 00000030 00 ff 01 00 00 2b 00 0d 00 22 00 20 06 01 06 02 |.....+...". ....| 00000040 06 03 05 01 05 02 05 03 04 01 04 02 04 03 03 01 |................| 00000050 03 02 03 03 02 01 02 02 02 03 01 01 00 0f 00 01 |................| 00000060 01 |.| >>> Flow 2 (server to client) 00000000 16 03 03 00 31 02 00 00 2d 03 03 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 |................| 00000030 05 ff 01 00 01 00 16 03 03 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 03 00 0f 0d 00 |n8P)l...........| 00000300 00 0b 02 01 40 00 04 04 01 04 03 00 00 16 03 03 |....@...........| 00000310 00 04 0e 00 00 00 |......| >>> Flow 3 (client to server) 00000000 16 03 03 02 0a 0b 00 02 06 00 02 03 00 02 00 30 |...............0| 00000010 82 01 fc 30 82 01 5e 02 09 00 9a 30 84 6c 26 35 |...0..^....0.l&5| 00000020 d9 17 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 |..0...*.H.=..0E1| 00000030 0b 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 |.0...U....AU1.0.| 00000040 06 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 |..U....Some-Stat| 00000050 65 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 |e1!0...U....Inte| 00000060 72 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 |rnet Widgits Pty| 00000070 20 4c 74 64 30 1e 17 0d 31 32 31 31 31 34 31 33 | Ltd0...12111413| 00000080 32 35 35 33 5a 17 0d 32 32 31 31 31 32 31 33 32 |2553Z..221112132| 00000090 35 35 33 5a 30 41 31 0b 30 09 06 03 55 04 06 13 |553Z0A1.0...U...| 000000a0 02 41 55 31 0c 30 0a 06 03 55 04 08 13 03 4e 53 |.AU1.0...U....NS| 000000b0 57 31 10 30 0e 06 03 55 04 07 13 07 50 79 72 6d |W1.0...U....Pyrm| 000000c0 6f 6e 74 31 12 30 10 06 03 55 04 03 13 09 4a 6f |ont1.0...U....Jo| 000000d0 65 6c 20 53 69 6e 67 30 81 9b 30 10 06 07 2a 86 |el Sing0..0...*.| 000000e0 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 86 00 |H.=....+...#....| 000000f0 04 00 95 8c 91 75 14 c0 5e c4 57 b4 d4 c3 6f 8d |.....u..^.W...o.| 00000100 ae 68 1e dd 6f ce 86 e1 7e 6e b2 48 3e 81 e5 4e |.h..o...~n.H>..N| 00000110 e2 c6 88 4b 64 dc f5 30 bb d3 ff 65 cc 5b f4 dd |...Kd..0...e.[..| 00000120 b5 6a 3e 3e d0 1d de 47 c3 76 ad 19 f6 45 2c 8c |.j>>...G.v...E,.| 00000130 bc d8 1d 01 4c 1f 70 90 46 76 48 8b 8f 83 cc 4a |....L.p.FvH....J| 00000140 5c 8f 40 76 da e0 89 ec 1d 2b c4 4e 30 76 28 41 |\.@v.....+.N0v(A| 00000150 b2 62 a8 fb 5b f1 f9 4e 7a 8d bd 09 b8 ae ea 8b |.b..[..Nz.......| 00000160 18 27 4f 2e 70 fe 13 96 ba c3 d3 40 16 cd 65 4e |.'O.p......@..eN| 00000170 ac 11 1e e6 f1 30 09 06 07 2a 86 48 ce 3d 04 01 |.....0...*.H.=..| 00000180 03 81 8c 00 30 81 88 02 42 00 e0 14 c4 60 60 0b |....0...B....``.| 00000190 72 68 b0 32 5d 61 4a 02 74 5c c2 81 b9 16 a8 3f |rh.2]aJ.t\.....?| 000001a0 29 c8 36 c7 81 ff 6c b6 5b d9 70 f1 38 3b 50 48 |).6...l.[.p.8;PH| 000001b0 28 94 cb 09 1a 52 f1 5d ee 8d f2 b9 f0 f0 da d9 |(....R.]........| 000001c0 15 3a f9 bd 03 7a 87 a2 23 35 ec 02 42 01 a3 d4 |.:...z..#5..B...| 000001d0 8a 78 35 1c 4a 9a 23 d2 0a be 2b 10 31 9d 9c 5f |.x5.J.#...+.1.._| 000001e0 be e8 91 b3 da 1a f5 5d a3 23 f5 26 8b 45 70 8d |.......].#.&.Ep.| 000001f0 65 62 9b 7e 01 99 3d 18 f6 10 9a 38 61 9b 2e 57 |eb.~..=....8a..W| 00000200 e4 fa cc b1 8a ce e2 23 a0 87 f0 e1 67 51 eb 16 |.......#....gQ..| 00000210 03 03 00 86 10 00 00 82 00 80 47 5a 2f b8 78 46 |..........GZ/.xF| 00000220 9f 3c fc ab 8b 35 c9 77 da c3 96 78 31 7c 2b 4f |.<...5.w...x1|+O| 00000230 56 be 0f 33 bd 17 bc 1c 86 5a ae b3 0f 8b 18 2f |V..3.....Z...../| 00000240 48 0d e0 0a 20 d3 53 96 88 d2 8a 7d b6 58 13 44 |H... .S....}.X.D| 00000250 a5 e8 19 6d 02 df a6 1b 79 c5 54 c2 ef 4d 41 4f |...m....y.T..MAO| 00000260 04 1c eb 37 55 b7 2b f4 7c 6d 37 9c f1 89 a0 2c |...7U.+.|m7....,| 00000270 0f ba 10 09 e4 a1 ee 0a 7e 9a fd 2c 32 63 1c 55 |........~..,2c.U| 00000280 85 38 de d0 7b 5f 46 03 1f cc 4d 69 51 97 d8 d7 |.8..{_F...MiQ...| 00000290 88 6f ba 43 04 b0 42 09 61 5e 16 03 03 00 92 0f |.o.C..B.a^......| 000002a0 00 00 8e 04 03 00 8a 30 81 87 02 41 14 3d 4c 71 |.......0...A.=Lq| 000002b0 c2 32 4a 20 ee b7 69 17 55 e8 99 55 11 76 51 7a |.2J ..i.U..U.vQz| 000002c0 74 55 e7 e8 c3 3b b3 70 db 1c 8e f6 8a d4 99 40 |tU...;.p.......@| 000002d0 6e da 04 fd 7a 47 41 d6 ae c0 63 ad fd 91 a8 58 |n...zGA...c....X| 000002e0 24 b9 ac 2f 7a 4c bf 5b 24 12 cb 3a f3 02 42 00 |$../zL.[$..:..B.| 000002f0 90 f9 48 97 0e d4 33 99 09 9f 1d a8 97 16 60 82 |..H...3.......`.| 00000300 85 cc 5a 5d 79 f7 2f 03 2a c0 b8 12 61 ac 9f 88 |..Z]y./.*...a...| 00000310 1d 0d 9e 0a ee 28 a8 5a e2 42 b7 94 e2 e6 0e 13 |.....(.Z.B......| 00000320 c8 64 dc 4e d3 6b 10 d6 83 41 9c dc d4 53 c3 08 |.d.N.k...A...S..| 00000330 19 14 03 03 00 01 01 16 03 03 00 24 ef bd e3 23 |...........$...#| 00000340 10 23 ae 6e b5 12 eb 9c 21 78 db 36 fd bf 7f ee |.#.n....!x.6....| 00000350 6f c8 00 2d b6 35 cc 2f 38 73 ae a4 34 cf 0d df |o..-.5./8s..4...| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 24 a7 50 0f 50 b4 |..........$.P.P.| 00000010 1c c3 4d f3 7a 64 df 65 ac 35 22 13 46 cc ec 36 |..M.zd.e.5".F..6| 00000020 e6 d2 f3 67 94 6a 18 85 9f 4a 3c 44 a3 58 b0 17 |...g.j...J>> Flow 1 (client to server) 00000000 16 03 01 00 5c 01 00 00 58 03 03 52 cc 57 59 6b |....\...X..R.WYk| 00000010 11 07 04 39 77 20 c2 b4 3f cb 0a c9 53 fe 5b 3e |...9w ..?...S.[>| 00000020 5f 58 2c 7e 30 69 e1 8e 6c 9d c8 00 00 04 00 05 |_X,~0i..l.......| 00000030 00 ff 01 00 00 2b 00 0d 00 22 00 20 06 01 06 02 |.....+...". ....| 00000040 06 03 05 01 05 02 05 03 04 01 04 02 04 03 03 01 |................| 00000050 03 02 03 03 02 01 02 02 02 03 01 01 00 0f 00 01 |................| 00000060 01 |.| >>> Flow 2 (server to client) 00000000 16 03 03 00 31 02 00 00 2d 03 03 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 |................| 00000030 05 ff 01 00 01 00 16 03 03 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 03 00 0f 0d 00 |n8P)l...........| 00000300 00 0b 02 01 40 00 04 04 01 04 03 00 00 16 03 03 |....@...........| 00000310 00 04 0e 00 00 00 |......| >>> Flow 3 (client to server) 00000000 16 03 03 01 fb 0b 00 01 f7 00 01 f4 00 01 f1 30 |...............0| 00000010 82 01 ed 30 82 01 58 a0 03 02 01 02 02 01 00 30 |...0..X........0| 00000020 0b 06 09 2a 86 48 86 f7 0d 01 01 05 30 26 31 10 |...*.H......0&1.| 00000030 30 0e 06 03 55 04 0a 13 07 41 63 6d 65 20 43 6f |0...U....Acme Co| 00000040 31 12 30 10 06 03 55 04 03 13 09 31 32 37 2e 30 |1.0...U....127.0| 00000050 2e 30 2e 31 30 1e 17 0d 31 31 31 32 30 38 30 37 |.0.10...11120807| 00000060 35 35 31 32 5a 17 0d 31 32 31 32 30 37 30 38 30 |5512Z..121207080| 00000070 30 31 32 5a 30 26 31 10 30 0e 06 03 55 04 0a 13 |012Z0&1.0...U...| 00000080 07 41 63 6d 65 20 43 6f 31 12 30 10 06 03 55 04 |.Acme Co1.0...U.| 00000090 03 13 09 31 32 37 2e 30 2e 30 2e 31 30 81 9c 30 |...127.0.0.10..0| 000000a0 0b 06 09 2a 86 48 86 f7 0d 01 01 01 03 81 8c 00 |...*.H..........| 000000b0 30 81 88 02 81 80 4e d0 7b 31 e3 82 64 d9 59 c0 |0.....N.{1..d.Y.| 000000c0 c2 87 a4 5e 1e 8b 73 33 c7 63 53 df 66 92 06 84 |...^..s3.cS.f...| 000000d0 f6 64 d5 8f e4 36 a7 1d 2b e8 b3 20 36 45 23 b5 |.d...6..+.. 6E#.| 000000e0 e3 95 ae ed e0 f5 20 9c 8d 95 df 7f 5a 12 ef 87 |...... .....Z...| 000000f0 e4 5b 68 e4 e9 0e 74 ec 04 8a 7f de 93 27 c4 01 |.[h...t......'..| 00000100 19 7a bd f2 dc 3d 14 ab d0 54 ca 21 0c d0 4d 6e |.z...=...T.!..Mn| 00000110 87 2e 5c c5 d2 bb 4d 4b 4f ce b6 2c f7 7e 88 ec |..\...MKO..,.~..| 00000120 7c d7 02 91 74 a6 1e 0c 1a da e3 4a 5a 2e de 13 ||...t......JZ...| 00000130 9c 4c 40 88 59 93 02 03 01 00 01 a3 32 30 30 30 |.L@.Y.......2000| 00000140 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 00 a0 30 |...U...........0| 00000150 0d 06 03 55 1d 0e 04 06 04 04 01 02 03 04 30 0f |...U..........0.| 00000160 06 03 55 1d 23 04 08 30 06 80 04 01 02 03 04 30 |..U.#..0.......0| 00000170 0b 06 09 2a 86 48 86 f7 0d 01 01 05 03 81 81 00 |...*.H..........| 00000180 36 1f b3 7a 0c 75 c9 6e 37 46 61 2b d5 bd c0 a7 |6..z.u.n7Fa+....| 00000190 4b cc 46 9a 81 58 7c 85 79 29 c8 c8 c6 67 dd 32 |K.F..X|.y)...g.2| 000001a0 56 45 2b 75 b6 e9 24 a9 50 9a be 1f 5a fa 1a 15 |VE+u..$.P...Z...| 000001b0 d9 cc 55 95 72 16 83 b9 c2 b6 8f fd 88 8c 38 84 |..U.r.........8.| 000001c0 1d ab 5d 92 31 13 4f fd 83 3b c6 9d f1 11 62 b6 |..].1.O..;....b.| 000001d0 8b ec ab 67 be c8 64 b0 11 50 46 58 17 6b 99 1c |...g..d..PFX.k..| 000001e0 d3 1d fc 06 f1 0e e5 96 a8 0c f9 78 20 b7 44 18 |...........x .D.| 000001f0 51 8d 10 7e 4f 94 67 df a3 4e 70 73 8e 90 91 85 |Q..~O.g..Nps....| 00000200 16 03 03 00 86 10 00 00 82 00 80 44 89 7d aa 26 |...........D.}.&| 00000210 30 ce 6b db 25 70 b0 1e 16 fa 5b 3a dd 4a 4b bd |0.k.%p....[:.JK.| 00000220 ec ee 50 9d 21 ba 52 b5 51 4f a8 65 d8 2e 41 e2 |..P.!.R.QO.e..A.| 00000230 e1 dc f3 1a df 58 4f 87 7a d3 e1 e1 1c 13 b2 0b |.....XO.z.......| 00000240 b7 43 b7 92 f2 df 19 bb 79 71 e0 71 44 ab 19 2f |.C......yq.qD../| 00000250 37 11 ac 62 50 b6 f1 53 fe aa b4 bc 29 8e 0b 4c |7..bP..S....)..L| 00000260 0b 12 8d d5 84 a9 fa a9 ea 16 aa c3 0d da 32 c8 |..............2.| 00000270 e0 4c 9f 99 f8 69 cd a8 c3 b1 76 42 67 f3 ff 15 |.L...i....vBg...| 00000280 52 95 43 66 da 49 43 25 9d e5 eb 16 03 03 00 88 |R.Cf.IC%........| 00000290 0f 00 00 84 04 01 00 80 01 d5 0e 1c 75 97 89 52 |............u..R| 000002a0 1a f0 cc ef 93 6e 71 b2 b1 38 8c 50 11 f7 a3 02 |.....nq..8.P....| 000002b0 71 c4 d5 6f 8d 01 83 06 2e ea 5a 10 8a 0d d0 fc |q..o......Z.....| 000002c0 b6 a2 63 af 4f 99 b5 eb ab fd 01 c2 fb 26 fc fd |..c.O........&..| 000002d0 ad 2c b3 63 b3 87 a6 f5 14 ea 7d e7 fe a8 e7 7e |.,.c......}....~| 000002e0 20 ab b9 f6 c3 58 bd c0 f3 96 eb 83 dc 42 6c 0d | ....X.......Bl.| 000002f0 5e e8 09 55 c7 b8 24 05 dd e1 7c af 9f 2c 22 6c |^..U..$...|..,"l| 00000300 fa b8 94 13 3b f1 09 e1 38 59 fc a1 8c cb aa ca |....;...8Y......| 00000310 f8 e0 2a 9c 36 f9 c3 2b 14 03 03 00 01 01 16 03 |..*.6..+........| 00000320 03 00 24 d0 12 7c cc d2 3e 37 1f f4 7d b4 c0 fc |..$..|..>7..}...| 00000330 19 f6 c8 ea 62 12 e0 0d af 62 d4 69 f7 96 5a c0 |....b....b.i..Z.| 00000340 97 d3 bb b0 a3 f7 3f |......?| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 24 cd 20 85 1e 74 |..........$. ..t| 00000010 18 b2 71 48 d5 10 61 c6 b0 18 26 83 c2 7f f1 b1 |..qH..a...&.....| 00000020 2f b5 35 d0 47 a8 99 9a 9a a5 62 64 fb f9 29 17 |/.5.G.....bd..).| 00000030 03 03 00 21 22 7b ed 61 e3 9b 6d 98 b9 23 98 e3 |...!"{.a..m..#..| 00000040 55 11 b8 0f 7e 2b e1 c1 d4 f1 83 79 c3 f8 03 f0 |U...~+.....y....| 00000050 02 5c 61 24 d7 15 03 03 00 16 14 2b a3 5a 56 f0 |.\a$.......+.ZV.| 00000060 92 da d0 e6 32 91 d8 30 7a b4 d0 a2 93 f5 01 ea |....2..0z.......| go/src/pkg/crypto/tls/testdata/Server-TLSv12-ClientAuthRequestedNotGiven0100644000000000000000000001403012412656737026554 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 5c 01 00 00 58 03 03 52 cc 57 59 1b |....\...X..R.WY.| 00000010 08 fe f7 8a bf 07 84 2b 60 a6 13 2d 15 13 f8 b6 |.......+`..-....| 00000020 d4 b6 3b f2 7a 98 ff 32 a0 68 7c 00 00 04 00 05 |..;.z..2.h|.....| 00000030 00 ff 01 00 00 2b 00 0d 00 22 00 20 06 01 06 02 |.....+...". ....| 00000040 06 03 05 01 05 02 05 03 04 01 04 02 04 03 03 01 |................| 00000050 03 02 03 03 02 01 02 02 02 03 01 01 00 0f 00 01 |................| 00000060 01 |.| >>> Flow 2 (server to client) 00000000 16 03 03 00 31 02 00 00 2d 03 03 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 |................| 00000030 05 ff 01 00 01 00 16 03 03 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 03 00 0f 0d 00 |n8P)l...........| 00000300 00 0b 02 01 40 00 04 04 01 04 03 00 00 16 03 03 |....@...........| 00000310 00 04 0e 00 00 00 |......| >>> Flow 3 (client to server) 00000000 16 03 03 00 07 0b 00 00 03 00 00 00 16 03 03 00 |................| 00000010 86 10 00 00 82 00 80 6b 51 48 d3 18 7d 30 e0 0c |.......kQH..}0..| 00000020 20 8d f3 e4 39 47 30 0e a5 85 79 f9 8b 11 50 9e | ...9G0...y...P.| 00000030 81 71 5c 26 c6 bb cb aa d5 00 d1 89 79 b1 77 2d |.q\&........y.w-| 00000040 eb 9b 86 7c 52 c6 f7 b7 10 b0 b6 94 22 51 b8 12 |...|R......."Q..| 00000050 3c 09 35 8e 1b cc f4 3b b7 b8 78 ab 89 59 41 49 |<.5....;..x..YAI| 00000060 21 31 eb f0 f8 94 63 3d e6 96 8f b6 63 95 05 dd |!1....c=....c...| 00000070 46 b3 00 8a d6 83 75 99 1b 5a 48 0a 23 b5 10 c1 |F.....u..ZH.#...| 00000080 95 b5 bc 15 72 b5 f5 a0 62 e2 1d c0 ff d2 87 a5 |....r...b.......| 00000090 97 5c 33 49 a7 26 35 14 03 03 00 01 01 16 03 03 |.\3I.&5.........| 000000a0 00 24 61 38 1f 9d fb d9 65 2e 02 07 fb be f9 85 |.$a8....e.......| 000000b0 8d 15 34 c0 d1 0e 4e 10 3c 25 60 2f ac 04 21 66 |..4...N.<%`/..!f| 000000c0 04 9d 9a 60 31 72 |...`1r| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 24 fe 0e 3e 84 af |..........$..>..| 00000010 e5 6b 10 ed 41 9c 2b e0 ba e0 2b 53 61 36 1b 40 |.k..A.+...+Sa6.@| 00000020 35 de 3a c7 c3 5c df 74 67 f7 05 74 84 f5 e1 17 |5.:..\.tg..t....| 00000030 03 03 00 21 d3 8d 81 85 b7 1f 30 bd 89 33 f9 81 |...!......0..3..| 00000040 89 f7 af d1 be b0 c1 46 e3 df 32 f6 dc 2f 4d 82 |.......F..2../M.| 00000050 0a 84 9f 5b 03 15 03 03 00 16 13 af 37 91 82 67 |...[........7..g| 00000060 b0 7c 5e 0e ec 8e cc 31 a0 ea a5 72 a4 2b 0b 73 |.|^....1...r.+.s| go/src/pkg/crypto/tls/testdata/Server-TLSv12-ECDHE-ECDSA-AES0100644000000000000000000001521612412656737023222 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 9c 01 00 00 98 03 03 53 04 f0 f9 09 |...........S....| 00000010 13 56 01 37 84 b1 32 59 4c 73 b1 8e bb 02 1a 32 |.V.7..2YLs.....2| 00000020 db ab 8c e6 ed ad 7f 52 9a 59 39 00 00 04 c0 0a |.......R.Y9.....| 00000030 00 ff 01 00 00 6b 00 0b 00 04 03 00 01 02 00 0a |.....k..........| 00000040 00 34 00 32 00 0e 00 0d 00 19 00 0b 00 0c 00 18 |.4.2............| 00000050 00 09 00 0a 00 16 00 17 00 08 00 06 00 07 00 14 |................| 00000060 00 15 00 04 00 05 00 12 00 13 00 01 00 02 00 03 |................| 00000070 00 0f 00 10 00 11 00 0d 00 22 00 20 06 01 06 02 |.........". ....| 00000080 06 03 05 01 05 02 05 03 04 01 04 02 04 03 03 01 |................| 00000090 03 02 03 03 02 01 02 02 02 03 01 01 00 0f 00 01 |................| 000000a0 01 |.| >>> Flow 2 (server to client) 00000000 16 03 03 00 31 02 00 00 2d 03 03 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 c0 0a 00 00 |................| 00000030 05 ff 01 00 01 00 16 03 03 02 0e 0b 00 02 0a 00 |................| 00000040 02 07 00 02 04 30 82 02 00 30 82 01 62 02 09 00 |.....0...0..b...| 00000050 b8 bf 2d 47 a0 d2 eb f4 30 09 06 07 2a 86 48 ce |..-G....0...*.H.| 00000060 3d 04 01 30 45 31 0b 30 09 06 03 55 04 06 13 02 |=..0E1.0...U....| 00000070 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 00000080 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000090 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 000000a0 74 73 20 50 74 79 20 4c 74 64 30 1e 17 0d 31 32 |ts Pty Ltd0...12| 000000b0 31 31 32 32 31 35 30 36 33 32 5a 17 0d 32 32 31 |1122150632Z..221| 000000c0 31 32 30 31 35 30 36 33 32 5a 30 45 31 0b 30 09 |120150632Z0E1.0.| 000000d0 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 55 |..U....AU1.0...U| 000000e0 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 21 |....Some-State1!| 000000f0 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e 65 |0...U....Interne| 00000100 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c 74 |t Widgits Pty Lt| 00000110 64 30 81 9b 30 10 06 07 2a 86 48 ce 3d 02 01 06 |d0..0...*.H.=...| 00000120 05 2b 81 04 00 23 03 81 86 00 04 00 c4 a1 ed be |.+...#..........| 00000130 98 f9 0b 48 73 36 7e c3 16 56 11 22 f2 3d 53 c3 |...Hs6~..V.".=S.| 00000140 3b 4d 21 3d cd 6b 75 e6 f6 b0 dc 9a df 26 c1 bc |;M!=.ku......&..| 00000150 b2 87 f0 72 32 7c b3 64 2f 1c 90 bc ea 68 23 10 |...r2|.d/....h#.| 00000160 7e fe e3 25 c0 48 3a 69 e0 28 6d d3 37 00 ef 04 |~..%.H:i.(m.7...| 00000170 62 dd 0d a0 9c 70 62 83 d8 81 d3 64 31 aa 9e 97 |b....pb....d1...| 00000180 31 bd 96 b0 68 c0 9b 23 de 76 64 3f 1a 5c 7f e9 |1...h..#.vd?.\..| 00000190 12 0e 58 58 b6 5f 70 dd 9b d8 ea d5 d7 f5 d5 cc |..XX._p.........| 000001a0 b9 b6 9f 30 66 5b 66 9a 20 e2 27 e5 bf fe 3b 30 |...0f[f. .'...;0| 000001b0 09 06 07 2a 86 48 ce 3d 04 01 03 81 8c 00 30 81 |...*.H.=......0.| 000001c0 88 02 42 01 88 a2 4f eb e2 45 c5 48 7d 1b ac f5 |..B...O..E.H}...| 000001d0 ed 98 9d ae 47 70 c0 5e 1b b6 2f bd f1 b6 4d b7 |....Gp.^../...M.| 000001e0 61 40 d3 11 a2 ce ee 0b 7e 92 7e ff 76 9d c3 3b |a@......~.~.v..;| 000001f0 7e a5 3f ce fa 10 e2 59 ec 47 2d 7c ac da 4e 97 |~.?....Y.G-|..N.| 00000200 0e 15 a0 6f d0 02 42 01 4d fc be 67 13 9c 2d 05 |...o..B.M..g..-.| 00000210 0e bd 3f a3 8c 25 c1 33 13 83 0d 94 06 bb d4 37 |..?..%.3.......7| 00000220 7a f6 ec 7a c9 86 2e dd d7 11 69 7f 85 7c 56 de |z..z......i..|V.| 00000230 fb 31 78 2b e4 c7 78 0d ae cb be 9e 4e 36 24 31 |.1x+..x.....N6$1| 00000240 7b 6a 0f 39 95 12 07 8f 2a 16 03 03 00 d8 0c 00 |{j.9....*.......| 00000250 00 d4 03 00 17 41 04 1e 18 37 ef 0d 19 51 88 35 |.....A...7...Q.5| 00000260 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd a7 24 20 3e |uq..T[....g..$ >| 00000270 b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e f1 07 9f 6c |.V...(^.+-O....l| 00000280 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 a6 b5 68 1a |K[.V.2B.X..I..h.| 00000290 41 03 56 6b dc 5a 89 04 03 00 8b 30 81 88 02 42 |A.Vk.Z.....0...B| 000002a0 00 c6 85 8e 06 b7 04 04 e9 cd 9e 3e cb 66 23 95 |...........>.f#.| 000002b0 b4 42 9c 64 81 39 05 3f b5 21 f8 28 af 60 6b 4d |.B.d.9.?.!.(.`kM| 000002c0 3d ba a1 4b 5e 77 ef e7 59 28 fe 1d c1 27 a2 ff |=..K^w..Y(...'..| 000002d0 a8 de 33 48 b3 c1 85 6a 42 9b f9 7e 7e 31 c2 e5 |..3H...jB..~~1..| 000002e0 bd 66 02 42 00 ad 7d 06 35 ab ec 8d ac d4 ba 1b |.f.B..}.5.......| 000002f0 49 5e 05 5f f0 97 93 82 b8 2b 8d 91 98 63 8e b4 |I^._.....+...c..| 00000300 14 62 db 1e c9 2c 13 ae b7 d3 17 38 23 2f f6 7f |.b...,.....8#/..| 00000310 0c 4d d3 33 d2 79 d1 77 ee cb b1 c2 fc 34 b8 69 |.M.3.y.w.....4.i| 00000320 f9 10 8b 61 89 85 16 03 03 00 04 0e 00 00 00 |...a...........| >>> Flow 3 (client to server) 00000000 16 03 03 00 46 10 00 00 42 41 04 dd 22 68 a1 4e |....F...BA.."h.N| 00000010 04 1b 47 f9 c5 7d 04 1d d8 fe 84 fa be 31 2e a7 |..G..}.......1..| 00000020 f8 e5 b8 14 92 44 99 11 0e 34 97 fc e5 b1 91 cf |.....D...4......| 00000030 a4 d1 3f b4 71 94 c6 06 16 f0 98 c0 3e 05 f9 2f |..?.q.......>../| 00000040 0a 97 78 3d ef dc fa a2 d7 ee 7d 14 03 03 00 01 |..x=......}.....| 00000050 01 16 03 03 00 40 90 bf 7f e9 c9 6e d1 80 f5 12 |.....@.....n....| 00000060 6d c5 b7 c5 15 4b 18 a5 d3 18 1e f8 8c 4d 7e 6d |m....K.......M~m| 00000070 03 60 29 7c 45 7c b2 ca 8c 07 71 70 aa 23 fa 6e |.`)|E|....qp.#.n| 00000080 d9 0b 0a 32 4c 9e e5 00 f9 19 9b b6 8d dc d3 67 |...2L..........g| 00000090 3d 0f bb b8 4b 9e |=...K.| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 00 |..........@.....| 00000010 00 00 00 00 00 00 00 00 00 00 00 a1 6e e5 d1 ca |............n...| 00000020 03 f4 77 dc ec ee 5d f0 22 5e 7f 55 1a 8d ad 45 |..w...]."^.U...E| 00000030 09 f1 3b b2 61 36 dc 3d 2a 1e 1f e5 a7 84 76 a9 |..;.a6.=*.....v.| 00000040 41 5b 86 03 ac 22 18 20 9b a9 29 17 03 03 00 40 |A[...". ..)....@| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000060 f5 cb 28 1e b5 bc 82 7f 82 38 54 14 e8 b9 6d 3b |..(......8T...m;| 00000070 bc 99 d6 0e f9 00 96 99 a8 92 2e 86 9d 62 4e 90 |.............bN.| 00000080 27 52 58 45 20 93 90 a1 f3 a8 89 2b e7 21 24 16 |'RXE ......+.!$.| 00000090 15 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| 000000a0 00 00 00 00 00 a8 2a ab 8f b0 ce 49 8b fd a5 c9 |......*....I....| 000000b0 11 b2 04 83 18 f3 1d 6c 82 34 1d df dd 2f 45 3b |.......l.4.../E;| 000000c0 27 8a 0f 16 69 |'...i| go/src/pkg/crypto/tls/testdata/Server-TLSv12-IssueTicket0100644000000000000000000001476112412656737023427 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 60 01 00 00 5c 03 03 52 cc 57 59 7e |....`...\..R.WY~| 00000010 43 5c 3b fd 50 ab 61 3f 64 a4 f9 bd ba 8c 28 e1 |C\;.P.a?d.....(.| 00000020 f9 a1 45 7e 48 9e 62 af 25 de 0e 00 00 04 00 05 |..E~H.b.%.......| 00000030 00 ff 01 00 00 2f 00 23 00 00 00 0d 00 22 00 20 |...../.#.....". | 00000040 06 01 06 02 06 03 05 01 05 02 05 03 04 01 04 02 |................| 00000050 04 03 03 01 03 02 03 03 02 01 02 02 02 03 01 01 |................| 00000060 00 0f 00 01 01 |.....| >>> Flow 2 (server to client) 00000000 16 03 03 00 35 02 00 00 31 03 03 00 00 00 00 00 |....5...1.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 |................| 00000030 09 00 23 00 00 ff 01 00 01 00 16 03 03 02 be 0b |..#.............| 00000040 00 02 ba 00 02 b7 00 02 b4 30 82 02 b0 30 82 02 |.........0...0..| 00000050 19 a0 03 02 01 02 02 09 00 85 b0 bb a4 8a 7f b8 |................| 00000060 ca 30 0d 06 09 2a 86 48 86 f7 0d 01 01 05 05 00 |.0...*.H........| 00000070 30 45 31 0b 30 09 06 03 55 04 06 13 02 41 55 31 |0E1.0...U....AU1| 00000080 13 30 11 06 03 55 04 08 13 0a 53 6f 6d 65 2d 53 |.0...U....Some-S| 00000090 74 61 74 65 31 21 30 1f 06 03 55 04 0a 13 18 49 |tate1!0...U....I| 000000a0 6e 74 65 72 6e 65 74 20 57 69 64 67 69 74 73 20 |nternet Widgits | 000000b0 50 74 79 20 4c 74 64 30 1e 17 0d 31 30 30 34 32 |Pty Ltd0...10042| 000000c0 34 30 39 30 39 33 38 5a 17 0d 31 31 30 34 32 34 |4090938Z..110424| 000000d0 30 39 30 39 33 38 5a 30 45 31 0b 30 09 06 03 55 |090938Z0E1.0...U| 000000e0 04 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 |....AU1.0...U...| 000000f0 0a 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 |.Some-State1!0..| 00000100 03 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 |.U....Internet W| 00000110 69 64 67 69 74 73 20 50 74 79 20 4c 74 64 30 81 |idgits Pty Ltd0.| 00000120 9f 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00 |.0...*.H........| 00000130 03 81 8d 00 30 81 89 02 81 81 00 bb 79 d6 f5 17 |....0.......y...| 00000140 b5 e5 bf 46 10 d0 dc 69 be e6 2b 07 43 5a d0 03 |...F...i..+.CZ..| 00000150 2d 8a 7a 43 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 |-.zC...R..eL,x.#| 00000160 8c b5 b4 82 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 |........;~b.,.3.| 00000170 fe 12 5c 7a 56 fc f5 06 bf fa 58 7b 26 3f b5 cd |..\zV.....X{&?..| 00000180 04 d3 d0 c9 21 96 4a c7 f4 54 9f 5a bf ef 42 71 |....!.J..T.Z..Bq| 00000190 00 fe 18 99 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e |......~.}}..9...| 000001a0 db 51 c9 7c e3 c0 4c 3b 32 66 01 cf af b1 1d b8 |.Q.|..L;2f......| 000001b0 71 9a 1d db db 89 6b ae da 2d 79 02 03 01 00 01 |q.....k..-y.....| 000001c0 a3 81 a7 30 81 a4 30 1d 06 03 55 1d 0e 04 16 04 |...0..0...U.....| 000001d0 14 b1 ad e2 85 5a cf cb 28 db 69 ce 23 69 de d3 |.....Z..(.i.#i..| 000001e0 26 8e 18 88 39 30 75 06 03 55 1d 23 04 6e 30 6c |&...90u..U.#.n0l| 000001f0 80 14 b1 ad e2 85 5a cf cb 28 db 69 ce 23 69 de |......Z..(.i.#i.| 00000200 d3 26 8e 18 88 39 a1 49 a4 47 30 45 31 0b 30 09 |.&...9.I.G0E1.0.| 00000210 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 55 |..U....AU1.0...U| 00000220 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 21 |....Some-State1!| 00000230 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e 65 |0...U....Interne| 00000240 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c 74 |t Widgits Pty Lt| 00000250 64 82 09 00 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 |d...........0...| 00000260 55 1d 13 04 05 30 03 01 01 ff 30 0d 06 09 2a 86 |U....0....0...*.| 00000270 48 86 f7 0d 01 01 05 05 00 03 81 81 00 08 6c 45 |H.............lE| 00000280 24 c7 6b b1 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a |$.k.Y..R.......z| 00000290 64 75 b5 5a 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f |du.Z.f..+...f..O| 000002a0 38 b3 6e 60 d3 92 fd f7 41 08 b5 25 13 b1 18 7a |8.n`....A..%...z| 000002b0 24 fb 30 1d ba ed 98 b9 17 ec e7 d7 31 59 db 95 |$.0.........1Y..| 000002c0 d3 1d 78 ea 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 |..x.PV\..Z-Z_3..| 000002d0 d8 c9 75 90 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f |..u....R...... _| 000002e0 f2 a0 1c a3 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d |..........W.p.&m| 000002f0 71 99 9b 26 6e 38 50 29 6c 90 a7 bd d9 16 03 03 |q..&n8P)l.......| 00000300 00 04 0e 00 00 00 |......| >>> Flow 3 (client to server) 00000000 16 03 03 00 86 10 00 00 82 00 80 6e 2e 79 82 3a |...........n.y.:| 00000010 c4 68 72 f5 a2 42 3d 71 f9 ec 22 8c 0b fa f0 82 |.hr..B=q..".....| 00000020 82 c0 cb fc 52 0a 51 03 04 8c eb 4a 4e 4f b6 49 |....R.Q....JNO.I| 00000030 ef 94 65 21 3c f7 9d 46 85 6e 35 d5 17 6b ff a3 |..e!<..F.n5..k..| 00000040 5e 4d c1 36 1a 2f 68 f5 06 d4 2d 73 4f 1c 3b 7b |^M.6./h...-sO.;{| 00000050 c1 fa 4e 7e 7c f9 6c 13 a6 f4 3a 43 e9 aa be 22 |..N~|.l...:C..."| 00000060 85 6f 2f 7c 5b b0 08 e2 86 b2 ae cb a9 12 d8 32 |.o/|[..........2| 00000070 80 1d e4 2e 5d c3 66 d1 19 e5 89 33 2a 88 24 40 |....].f....3*.$@| 00000080 2a 6d 6b b5 f1 92 4b 66 06 b8 49 14 03 03 00 01 |*mk...Kf..I.....| 00000090 01 16 03 03 00 24 16 49 e2 a0 67 31 cf 0d 72 cb |.....$.I..g1..r.| 000000a0 ac 16 2c 80 37 71 69 f7 5f c4 d3 00 19 b7 4b fb |..,.7qi._.....K.| 000000b0 e5 e9 74 8e 30 b3 1c c5 ae e6 |..t.0.....| >>> Flow 4 (server to client) 00000000 16 03 03 00 72 04 00 00 6e 00 00 00 00 00 68 00 |....r...n.....h.| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 65 |...............e| 00000020 ea 4b d1 ef ba 06 38 1e e1 88 82 3a cd 03 ac 3b |.K....8....:...;| 00000030 39 0a e0 19 fd af 6c 57 30 df 31 6e f7 92 38 4b |9.....lW0.1n..8K| 00000040 5d 77 90 39 ff 32 51 f5 ed 12 d7 b0 7c 4d 6c c5 |]w.9.2Q.....|Ml.| 00000050 76 e4 72 48 3e 59 23 fe 0d 15 df f4 ba ea b9 67 |v.rH>Y#........g| 00000060 16 23 8f 7d 15 b6 11 f1 ab d7 d4 cd a3 21 82 92 |.#.}.........!..| 00000070 2a 12 cf 95 f3 60 b2 14 03 03 00 01 01 16 03 03 |*....`..........| 00000080 00 24 89 ad 87 04 4f 08 dc 2a 71 37 fb f1 95 d1 |.$....O..*q7....| 00000090 2e 3c c2 6e 0f 38 5d e4 0e c3 f7 27 d0 46 a3 c1 |.<.n.8]....'.F..| 000000a0 a8 3b 06 ed 96 ec 17 03 03 00 21 30 d4 9f 0b 49 |.;........!0...I| 000000b0 9f a2 a8 a1 2c 0a 79 93 56 2d 8a ee 85 ed 62 42 |....,.y.V-....bB| 000000c0 8c 18 fe 7a 09 3a 24 c4 5e ed 7d 2a 15 03 03 00 |...z.:$.^.}*....| 000000d0 16 a0 24 0a 8b 90 4c fc 99 ba 67 bb 04 1e 59 69 |..$...L...g...Yi| 000000e0 c2 98 49 b5 00 0b e0 |..I....| go/src/pkg/crypto/tls/testdata/Server-TLSv12-IssueTicketPreDisable0100644000000000000000000001476112412656737025362 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 60 01 00 00 5c 03 03 54 23 54 02 17 |....`...\..T#T..| 00000010 f3 53 13 3d 48 88 c3 19 b9 d1 3d 33 7f f5 99 56 |.S.=H.....=3...V| 00000020 04 71 1b d9 d5 64 8a 0d 4a 54 00 00 00 04 00 05 |.q...d..JT......| 00000030 00 ff 01 00 00 2f 00 23 00 00 00 0d 00 22 00 20 |...../.#.....". | 00000040 06 01 06 02 06 03 05 01 05 02 05 03 04 01 04 02 |................| 00000050 04 03 03 01 03 02 03 03 02 01 02 02 02 03 01 01 |................| 00000060 00 0f 00 01 01 |.....| >>> Flow 2 (server to client) 00000000 16 03 03 00 35 02 00 00 31 03 03 00 00 00 00 00 |....5...1.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 |................| 00000030 09 00 23 00 00 ff 01 00 01 00 16 03 03 02 be 0b |..#.............| 00000040 00 02 ba 00 02 b7 00 02 b4 30 82 02 b0 30 82 02 |.........0...0..| 00000050 19 a0 03 02 01 02 02 09 00 85 b0 bb a4 8a 7f b8 |................| 00000060 ca 30 0d 06 09 2a 86 48 86 f7 0d 01 01 05 05 00 |.0...*.H........| 00000070 30 45 31 0b 30 09 06 03 55 04 06 13 02 41 55 31 |0E1.0...U....AU1| 00000080 13 30 11 06 03 55 04 08 13 0a 53 6f 6d 65 2d 53 |.0...U....Some-S| 00000090 74 61 74 65 31 21 30 1f 06 03 55 04 0a 13 18 49 |tate1!0...U....I| 000000a0 6e 74 65 72 6e 65 74 20 57 69 64 67 69 74 73 20 |nternet Widgits | 000000b0 50 74 79 20 4c 74 64 30 1e 17 0d 31 30 30 34 32 |Pty Ltd0...10042| 000000c0 34 30 39 30 39 33 38 5a 17 0d 31 31 30 34 32 34 |4090938Z..110424| 000000d0 30 39 30 39 33 38 5a 30 45 31 0b 30 09 06 03 55 |090938Z0E1.0...U| 000000e0 04 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 |....AU1.0...U...| 000000f0 0a 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 |.Some-State1!0..| 00000100 03 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 |.U....Internet W| 00000110 69 64 67 69 74 73 20 50 74 79 20 4c 74 64 30 81 |idgits Pty Ltd0.| 00000120 9f 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00 |.0...*.H........| 00000130 03 81 8d 00 30 81 89 02 81 81 00 bb 79 d6 f5 17 |....0.......y...| 00000140 b5 e5 bf 46 10 d0 dc 69 be e6 2b 07 43 5a d0 03 |...F...i..+.CZ..| 00000150 2d 8a 7a 43 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 |-.zC...R..eL,x.#| 00000160 8c b5 b4 82 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 |........;~b.,.3.| 00000170 fe 12 5c 7a 56 fc f5 06 bf fa 58 7b 26 3f b5 cd |..\zV.....X{&?..| 00000180 04 d3 d0 c9 21 96 4a c7 f4 54 9f 5a bf ef 42 71 |....!.J..T.Z..Bq| 00000190 00 fe 18 99 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e |......~.}}..9...| 000001a0 db 51 c9 7c e3 c0 4c 3b 32 66 01 cf af b1 1d b8 |.Q.|..L;2f......| 000001b0 71 9a 1d db db 89 6b ae da 2d 79 02 03 01 00 01 |q.....k..-y.....| 000001c0 a3 81 a7 30 81 a4 30 1d 06 03 55 1d 0e 04 16 04 |...0..0...U.....| 000001d0 14 b1 ad e2 85 5a cf cb 28 db 69 ce 23 69 de d3 |.....Z..(.i.#i..| 000001e0 26 8e 18 88 39 30 75 06 03 55 1d 23 04 6e 30 6c |&...90u..U.#.n0l| 000001f0 80 14 b1 ad e2 85 5a cf cb 28 db 69 ce 23 69 de |......Z..(.i.#i.| 00000200 d3 26 8e 18 88 39 a1 49 a4 47 30 45 31 0b 30 09 |.&...9.I.G0E1.0.| 00000210 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 55 |..U....AU1.0...U| 00000220 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 21 |....Some-State1!| 00000230 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e 65 |0...U....Interne| 00000240 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c 74 |t Widgits Pty Lt| 00000250 64 82 09 00 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 |d...........0...| 00000260 55 1d 13 04 05 30 03 01 01 ff 30 0d 06 09 2a 86 |U....0....0...*.| 00000270 48 86 f7 0d 01 01 05 05 00 03 81 81 00 08 6c 45 |H.............lE| 00000280 24 c7 6b b1 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a |$.k.Y..R.......z| 00000290 64 75 b5 5a 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f |du.Z.f..+...f..O| 000002a0 38 b3 6e 60 d3 92 fd f7 41 08 b5 25 13 b1 18 7a |8.n`....A..%...z| 000002b0 24 fb 30 1d ba ed 98 b9 17 ec e7 d7 31 59 db 95 |$.0.........1Y..| 000002c0 d3 1d 78 ea 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 |..x.PV\..Z-Z_3..| 000002d0 d8 c9 75 90 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f |..u....R...... _| 000002e0 f2 a0 1c a3 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d |..........W.p.&m| 000002f0 71 99 9b 26 6e 38 50 29 6c 90 a7 bd d9 16 03 03 |q..&n8P)l.......| 00000300 00 04 0e 00 00 00 |......| >>> Flow 3 (client to server) 00000000 16 03 03 00 86 10 00 00 82 00 80 27 e9 a4 f7 e7 |...........'....| 00000010 df 25 de 84 8c 1f d6 e6 c3 11 28 55 9a c1 91 37 |.%........(U...7| 00000020 84 f5 ba f8 80 0d ca 50 cb 1e 72 f7 97 6f c2 b2 |.......P..r..o..| 00000030 04 4d 13 7c e0 6e a0 1f 91 e1 38 1b a2 c0 55 16 |.M.|.n....8...U.| 00000040 7f 29 fc ed 1c 1a cf 72 14 c3 00 c1 dd 36 36 af |.).....r.....66.| 00000050 a6 e4 a8 be ba ec 13 d0 1e d0 1d fd e1 5b 27 fd |.............['.| 00000060 9a da 2e 12 c8 b0 b9 c2 b9 76 ec 7f 3c 98 b6 63 |.........v..<..c| 00000070 bc da f0 07 7a 3d e7 61 f4 2f 12 80 3b f9 3b cc |....z=.a./..;.;.| 00000080 05 c8 2f 7e 28 b2 73 bf 97 61 29 14 03 03 00 01 |../~(.s..a).....| 00000090 01 16 03 03 00 24 17 59 a9 45 53 46 33 96 50 dd |.....$.Y.ESF3.P.| 000000a0 3e 23 aa 91 38 f8 56 4a 2f 1a f2 b1 44 9b ce 17 |>#..8.VJ/...D...| 000000b0 6b 8a 89 76 bc 67 b8 8b ba 90 |k..v.g....| >>> Flow 4 (server to client) 00000000 16 03 03 00 72 04 00 00 6e 00 00 00 00 00 68 00 |....r...n.....h.| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 65 |...............e| 00000020 ea 4b d1 ef ba 2d db 0c ba 9a d4 20 76 57 c8 ec |.K...-..... vW..| 00000030 dc 2d 77 fb fb 3b 93 5f 53 e0 14 4f 90 fb d6 55 |.-w..;._S..O...U| 00000040 57 8c 8d 0d 25 ea 5d 0d f2 91 e5 12 22 12 ec 7b |W...%.]....."..{| 00000050 5f b6 6e fd 07 59 23 24 fc b1 97 ca ea 56 a5 c2 |_.n..Y#$.....V..| 00000060 a0 e4 9e 99 64 f2 64 d0 75 7a 46 63 e3 dc 21 ed |....d.d.uzFc..!.| 00000070 78 56 e9 e1 ab 66 80 14 03 03 00 01 01 16 03 03 |xV...f..........| 00000080 00 24 fc 14 68 07 17 1f df b7 84 cb fd c1 e0 e4 |.$..h...........| 00000090 f2 1a ea 34 b5 00 7f 70 be c8 1c 0a d6 55 e3 57 |...4...p.....U.W| 000000a0 50 4e 6d 7d 8a 5d 17 03 03 00 21 24 27 50 40 c1 |PNm}.]....!$'P@.| 000000b0 c5 bd c7 9f 95 d9 ba 2e 7b 0e db ea a7 31 81 05 |........{....1..| 000000c0 75 43 b1 63 cf b8 55 92 ef 76 98 a9 15 03 03 00 |uC.c..U..v......| 000000d0 16 d7 ea 3c 79 e7 a6 2f 61 39 ec 4e 95 86 48 5e |...>> Flow 1 (client to server) 00000000 16 03 01 00 5c 01 00 00 58 03 03 52 cc 57 59 68 |....\...X..R.WYh| 00000010 11 72 a6 ec 6b 0a 47 1d 10 06 ec 75 af 07 38 a0 |.r..k.G....u..8.| 00000020 30 9e 91 12 e1 9b 19 46 0d d4 45 00 00 04 00 0a |0......F..E.....| 00000030 00 ff 01 00 00 2b 00 0d 00 22 00 20 06 01 06 02 |.....+...". ....| 00000040 06 03 05 01 05 02 05 03 04 01 04 02 04 03 03 01 |................| 00000050 03 02 03 03 02 01 02 02 02 03 01 01 00 0f 00 01 |................| 00000060 01 |.| >>> Flow 2 (server to client) 00000000 16 03 03 00 31 02 00 00 2d 03 03 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 0a 00 00 |................| 00000030 05 ff 01 00 01 00 16 03 03 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 03 00 04 0e 00 |n8P)l...........| 00000300 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 03 00 86 10 00 00 82 00 80 7a c0 73 ec cb |...........z.s..| 00000010 cf c2 a8 86 c0 7e 03 63 57 a1 ce 42 37 6d 78 54 |.....~.cW..B7mxT| 00000020 29 f5 3e cc 57 c7 0d d9 69 e1 52 5c 3b 6b c4 c7 |).>.W...i.R\;k..| 00000030 20 6d 59 ee c0 07 81 74 74 9f 62 41 64 f0 4d c8 | mY....tt.bAd.M.| 00000040 9b aa 1a b9 da 56 07 f5 6c 1c 59 8c d3 f9 08 d9 |.....V..l.Y.....| 00000050 08 f4 16 93 5d 9a e5 6f fb 9f ba 3d 3c d6 81 ad |....]..o...=<...| 00000060 02 12 a7 28 b6 81 6a 77 c3 e9 d7 c7 54 d6 77 83 |...(..jw....T.w.| 00000070 77 de 71 fb b3 f3 2d c4 a5 b1 e5 de aa 0e 21 bd |w.q...-.......!.| 00000080 91 a2 dc 7f f7 6f 90 82 54 b1 e7 14 03 03 00 01 |.....o..T.......| 00000090 01 16 03 03 00 30 8f ee bf fb c8 5c 54 f5 29 23 |.....0.....\T.)#| 000000a0 d4 55 f6 98 a1 6e d5 43 e7 81 b2 36 f2 98 d8 1b |.U...n.C...6....| 000000b0 0d 76 cb 14 ba 32 d7 36 30 e6 ab 42 80 95 f6 8a |.v...2.60..B....| 000000c0 60 64 a0 6b 90 81 |`d.k..| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 30 00 00 00 00 00 |..........0.....| 00000010 00 00 00 2c 21 52 34 63 ac e3 a3 66 45 00 41 0c |...,!R4c...fE.A.| 00000020 93 5d 6a 74 5a 25 dc 69 1d 76 73 0c f4 42 6a 18 |.]jtZ%.i.vs..Bj.| 00000030 5b 62 23 e7 fe 41 cf d4 9b 86 35 17 03 03 00 30 |[b#..A....5....0| 00000040 00 00 00 00 00 00 00 00 7d 5d ce 43 85 5c 6b 89 |........}].C.\k.| 00000050 c9 a5 0e 22 69 8e b9 4a 77 4c c0 4e cc 79 d9 7e |..."i..JwL.N.y.~| 00000060 a3 c8 d3 db 5c 53 f8 92 4d c4 5a 88 72 58 05 11 |....\S..M.Z.rX..| 00000070 15 03 03 00 20 00 00 00 00 00 00 00 00 1d 63 8b |.... .........c.| 00000080 a7 74 fb 76 1d 47 31 93 1f ec 8c e2 18 8e 21 dd |.t.v.G1.......!.| 00000090 87 97 9f 1c ca |.....| go/src/pkg/crypto/tls/testdata/Server-TLSv12-RSA-AES0100644000000000000000000001474312412656737022226 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 5c 01 00 00 58 03 03 52 cc 57 59 d0 |....\...X..R.WY.| 00000010 38 05 36 7e e3 1e 93 2a 5a bf dc c2 f8 0a 03 6f |8.6~...*Z......o| 00000020 1a fc 21 74 e5 8b 2a c3 9e 2c 26 00 00 04 00 2f |..!t..*..,&..../| 00000030 00 ff 01 00 00 2b 00 0d 00 22 00 20 06 01 06 02 |.....+...". ....| 00000040 06 03 05 01 05 02 05 03 04 01 04 02 04 03 03 01 |................| 00000050 03 02 03 03 02 01 02 02 02 03 01 01 00 0f 00 01 |................| 00000060 01 |.| >>> Flow 2 (server to client) 00000000 16 03 03 00 31 02 00 00 2d 03 03 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 2f 00 00 |............./..| 00000030 05 ff 01 00 01 00 16 03 03 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 03 00 04 0e 00 |n8P)l...........| 00000300 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 03 00 86 10 00 00 82 00 80 4b b4 28 bc 78 |...........K.(.x| 00000010 41 34 f3 49 e8 74 07 74 42 ae 2e 55 9e 9a ce e5 |A4.I.t.tB..U....| 00000020 4a 1b e7 55 c7 64 c4 9c b3 dd 20 d6 f8 8e 67 b3 |J..U.d.... ...g.| 00000030 7a 5c 3b 34 e4 1a f6 bd 65 fc 21 cd 9a de 64 77 |z\;4....e.!...dw| 00000040 09 a5 92 e5 a4 f5 18 7b 23 5b 8b c1 95 23 97 6f |.......{#[...#.o| 00000050 76 55 04 34 22 7d 43 71 db cd eb f8 36 36 44 4b |vU.4"}Cq....66DK| 00000060 ae e3 cc ec 64 88 7b e1 ea d6 ab 49 35 94 a5 04 |....d.{....I5...| 00000070 1e 83 c5 cf 21 bb ca 33 5f d4 bf 1d d3 4d 07 59 |....!..3_....M.Y| 00000080 b4 39 b2 4b 7b 05 43 70 0d ba 7a 14 03 03 00 01 |.9.K{.Cp..z.....| 00000090 01 16 03 03 00 40 74 4b 7d b2 53 49 ea 86 90 c3 |.....@tK}.SI....| 000000a0 64 6b 64 31 1a 2a 3f 1a 37 1e 56 b8 dd 12 6d 56 |dkd1.*?.7.V...mV| 000000b0 2a 61 92 5b 39 e7 e1 be 71 70 4b 9b b3 f0 71 e7 |*a.[9...qpK...q.| 000000c0 47 2e 2e 17 c3 0a 66 9f 69 74 30 2d f0 a0 7f 84 |G.....f.it0-....| 000000d0 25 db c1 81 ee cf |%.....| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 00 |..........@.....| 00000010 00 00 00 00 00 00 00 00 00 00 00 f3 4d 5a fc 21 |............MZ.!| 00000020 30 b5 a1 86 9d e2 ea 38 ac 54 57 fa 5a 54 97 b8 |0......8.TW.ZT..| 00000030 bb 4d 64 09 ef ce a1 75 0c 50 8d ff 5c c2 e9 47 |.Md....u.P..\..G| 00000040 95 93 53 c0 bd dc c5 9c e0 59 17 17 03 03 00 40 |..S......Y.....@| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000060 69 c5 48 6e 45 cf 98 1b 2c 23 40 d1 ab a3 c2 e2 |i.HnE...,#@.....| 00000070 10 7b b1 c8 21 3c f0 eb 96 bd 4f 78 b2 4a 7b 18 |.{..!<....Ox.J{.| 00000080 4c b1 a6 67 bf 06 40 01 d0 8d 91 be 17 d8 0c 71 |L..g..@........q| 00000090 15 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| 000000a0 00 00 00 00 00 20 84 80 3d 70 fe ae ee d7 2f e9 |..... ..=p..../.| 000000b0 bf 65 30 bf 0b dd 98 ea bb ba 12 14 98 53 7f d5 |.e0..........S..| 000000c0 56 ce 06 3c d0 |V..<.| go/src/pkg/crypto/tls/testdata/Server-TLSv12-RSA-AES-GCM0100644000000000000000000001571612412656737022633 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 9c 01 00 00 98 03 03 53 04 f1 30 73 |...........S..0s| 00000010 a1 ea 8c d2 90 1c c6 d6 0d 3c af 58 21 65 90 25 |.........<.X!e.%| 00000020 5e fa f4 27 22 65 c9 68 90 b9 04 00 00 04 c0 2f |^..'"e.h......./| 00000030 00 ff 01 00 00 6b 00 0b 00 04 03 00 01 02 00 0a |.....k..........| 00000040 00 34 00 32 00 0e 00 0d 00 19 00 0b 00 0c 00 18 |.4.2............| 00000050 00 09 00 0a 00 16 00 17 00 08 00 06 00 07 00 14 |................| 00000060 00 15 00 04 00 05 00 12 00 13 00 01 00 02 00 03 |................| 00000070 00 0f 00 10 00 11 00 0d 00 22 00 20 06 01 06 02 |.........". ....| 00000080 06 03 05 01 05 02 05 03 04 01 04 02 04 03 03 01 |................| 00000090 03 02 03 03 02 01 02 02 02 03 01 01 00 0f 00 01 |................| 000000a0 01 |.| >>> Flow 2 (server to client) 00000000 16 03 03 00 31 02 00 00 2d 03 03 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 c0 2f 00 00 |............./..| 00000030 05 ff 01 00 01 00 16 03 03 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 03 00 cd 0c 00 |n8P)l...........| 00000300 00 c9 03 00 17 41 04 1e 18 37 ef 0d 19 51 88 35 |.....A...7...Q.5| 00000310 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd a7 24 20 3e |uq..T[....g..$ >| 00000320 b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e f1 07 9f 6c |.V...(^.+-O....l| 00000330 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 a6 b5 68 1a |K[.V.2B.X..I..h.| 00000340 41 03 56 6b dc 5a 89 04 01 00 80 a2 54 61 84 29 |A.Vk.Z......Ta.)| 00000350 3e 97 4b 97 9a 9f 5c c0 49 6d 86 d2 79 8e 95 a1 |>.K...\.Im..y...| 00000360 0a 5a 36 73 34 bb 05 73 35 47 e1 2b 5d f3 ef 36 |.Z6s4..s5G.+]..6| 00000370 a8 32 e2 7e ef aa 3f 1f b3 64 60 d4 06 2e 98 e3 |.2.~..?..d`.....| 00000380 11 e2 60 3c d6 20 17 63 b2 6f a0 cd 21 01 2b 4e |..`<. .c.o..!.+N| 00000390 b2 a8 55 04 39 37 5c 6c 71 66 4d a3 eb 1b 83 67 |..U.97\lqfM....g| 000003a0 6b 15 a0 56 9a f1 a2 79 92 29 ce 58 3c 10 4d 65 |k..V...y.).X<.Me| 000003b0 1f 22 e3 ea d8 74 aa 01 7e ca f3 89 23 41 4d bd |."...t..~...#AM.| 000003c0 df 77 4e 59 54 97 74 ad 07 ea c0 16 03 03 00 04 |.wNYT.t.........| 000003d0 0e 00 00 00 |....| >>> Flow 3 (client to server) 00000000 16 03 03 00 46 10 00 00 42 41 04 45 65 ce f7 b9 |....F...BA.Ee...| 00000010 52 e3 fb 13 db 91 f2 65 43 84 57 f5 1a 19 a0 e6 |R......eC.W.....| 00000020 89 2d bb 2c 83 6b 62 f6 6f 1f 26 ae 59 67 bd dc |.-.,.kb.o.&.Yg..| 00000030 c4 9e 0b dc 7d 6e f8 6b 95 8c 61 47 3d cd d1 df |....}n.k..aG=...| 00000040 82 45 30 81 c3 a3 49 5d 85 59 70 14 03 03 00 01 |.E0...I].Yp.....| 00000050 01 16 03 03 00 28 3f aa 85 33 f9 c6 95 a0 56 ff |.....(?..3....V.| 00000060 1c f1 5a ba 6e 41 50 0c ab 92 e1 e2 8e 89 1c f1 |..Z.nAP.........| 00000070 fa 54 1b f1 f5 00 01 12 6d c4 96 78 b6 87 |.T......m..x..| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 28 00 00 00 00 00 |..........(.....| 00000010 00 00 00 94 5c be 46 05 d6 d0 b0 3a 56 dc 2c 10 |....\.F....:V.,.| 00000020 0f 6f 5d 33 33 7f a5 4e 74 84 bf 63 87 c4 f4 49 |.o]33..Nt..c...I| 00000030 bc 6b ab 17 03 03 00 25 00 00 00 00 00 00 00 01 |.k.....%........| 00000040 7e 4f f9 ae ae fe 6b a0 4a f8 0f 0b b4 b6 65 b6 |~O....k.J.....e.| 00000050 be 24 5f 94 6d d1 db 54 11 07 b9 ce 01 15 03 03 |.$_.m..T........| 00000060 00 1a 00 00 00 00 00 00 00 02 a8 1c d6 62 ac fd |.............b..| 00000070 77 ba 23 92 5d 34 f1 17 c7 e1 1c 99 |w.#.]4......| go/src/pkg/crypto/tls/testdata/Server-TLSv12-RSA-RC40100644000000000000000000001357212412656737022205 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 5c 01 00 00 58 03 03 52 cc 57 59 c9 |....\...X..R.WY.| 00000010 c3 13 fc 18 8a ee c2 0e 88 ff fb 4a 16 f2 eb eb |...........J....| 00000020 d4 f8 b3 5b cd bb 25 0e 0b cb 48 00 00 04 00 05 |...[..%...H.....| 00000030 00 ff 01 00 00 2b 00 0d 00 22 00 20 06 01 06 02 |.....+...". ....| 00000040 06 03 05 01 05 02 05 03 04 01 04 02 04 03 03 01 |................| 00000050 03 02 03 03 02 01 02 02 02 03 01 01 00 0f 00 01 |................| 00000060 01 |.| >>> Flow 2 (server to client) 00000000 16 03 03 00 31 02 00 00 2d 03 03 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 |................| 00000030 05 ff 01 00 01 00 16 03 03 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 03 00 04 0e 00 |n8P)l...........| 00000300 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 03 00 86 10 00 00 82 00 80 35 b3 60 ba 14 |...........5.`..| 00000010 5f 19 24 a0 24 de 4e 85 a9 64 78 3a 51 24 64 70 |_.$.$.N..dx:Q$dp| 00000020 88 55 6d c3 11 b8 d3 9f bc 7a 33 f8 3c 48 93 2f |.Um......z3..|.| 00000070 44 82 f4 24 03 22 40 00 64 27 53 15 41 8c 01 e9 |D..$."@.d'S.A...| 00000080 39 32 fa 8e 2d f9 b4 89 34 15 d6 14 03 03 00 01 |92..-...4.......| 00000090 01 16 03 03 00 24 f5 61 8b 24 bf b4 82 3a cf 49 |.....$.a.$...:.I| 000000a0 99 a0 b1 1b a7 a7 a3 92 7c 84 85 e0 64 a3 3d bd |........|...d.=.| 000000b0 38 98 7d 97 a8 b9 2a 35 a9 09 |8.}...*5..| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 24 c9 0b 84 e6 39 |..........$....9| 00000010 f2 e0 f3 ac 9f 0f 17 92 5f 6d de 94 18 c4 60 d9 |........_m....`.| 00000020 66 c3 0d 1a ae c2 8f 46 8f 7f f0 58 0e 4a 9b 17 |f......F...X.J..| 00000030 03 03 00 21 8b 73 a1 6a 7e d9 7e 4f 1d cc b2 7d |...!.s.j~.~O...}| 00000040 3c 83 3f 52 f8 08 77 01 4c 65 11 6d 50 25 9a cc |<.?R..w.Le.mP%..| 00000050 e3 54 27 72 59 15 03 03 00 16 3d c8 ab 14 51 fa |.T'rY.....=...Q.| 00000060 97 f1 ef 5f b4 4f 44 58 d4 93 3b ae e5 61 1f a3 |..._.ODX..;..a..| go/src/pkg/crypto/tls/testdata/Server-TLSv12-Resume0100644000000000000000000000507212412656737022426 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 e8 01 00 00 e4 03 03 52 cc 57 59 c3 |...........R.WY.| 00000010 8b df 97 05 d8 5f 16 22 b4 b1 e7 cb 7d 2f 9b 58 |....._."....}/.X| 00000020 a3 f4 d7 2c a4 c1 9d 49 ed 4b ba 20 90 da 90 3e |...,...I.K. ...>| 00000030 36 19 7a db 56 43 26 f7 dc 42 57 33 22 ed 9d a4 |6.z.VC&..BW3"...| 00000040 9d 53 da f8 9d 4e 60 66 71 a0 2e 2e 00 04 00 05 |.S...N`fq.......| 00000050 00 ff 01 00 00 97 00 23 00 68 00 00 00 00 00 00 |.......#.h......| 00000060 00 00 00 00 00 00 00 00 00 00 65 ea 4b d1 ef ba |..........e.K...| 00000070 06 38 1e e1 88 82 3a cd 03 ac 3b 39 0a e0 19 fd |.8....:...;9....| 00000080 af 6c 57 30 df 31 6e f7 92 38 4b 5d 77 90 39 ff |.lW0.1n..8K]w.9.| 00000090 32 51 f5 ed 12 d7 b0 7c 4d 6c c5 76 e4 72 48 3e |2Q.....|Ml.v.rH>| 000000a0 59 23 fe 0d 15 df f4 ba ea b9 67 16 23 8f 7d 15 |Y#........g.#.}.| 000000b0 b6 11 f1 ab d7 d4 cd a3 21 82 92 2a 12 cf 95 f3 |........!..*....| 000000c0 60 b2 00 0d 00 22 00 20 06 01 06 02 06 03 05 01 |`....". ........| 000000d0 05 02 05 03 04 01 04 02 04 03 03 01 03 02 03 03 |................| 000000e0 02 01 02 02 02 03 01 01 00 0f 00 01 01 |.............| >>> Flow 2 (server to client) 00000000 16 03 03 00 51 02 00 00 4d 03 03 00 00 00 00 00 |....Q...M.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 20 90 da 90 3e |........... ...>| 00000030 36 19 7a db 56 43 26 f7 dc 42 57 33 22 ed 9d a4 |6.z.VC&..BW3"...| 00000040 9d 53 da f8 9d 4e 60 66 71 a0 2e 2e 00 05 00 00 |.S...N`fq.......| 00000050 05 ff 01 00 01 00 14 03 03 00 01 01 16 03 03 00 |................| 00000060 24 11 12 ff 28 10 14 4c e5 0e ad a7 fa f3 92 fb |$...(..L........| 00000070 13 7d ae f2 b2 4a 6b a1 9e 67 cf a8 f7 8c 6f a0 |.}...Jk..g....o.| 00000080 6c 30 0e 18 55 |l0..U| >>> Flow 3 (client to server) 00000000 14 03 03 00 01 01 16 03 03 00 24 0d 46 41 8b 24 |..........$.FA.$| 00000010 36 01 a9 fd 8b ec fc e6 b1 83 96 df 0d 3e 53 54 |6............>ST| 00000020 58 b8 43 f2 a6 25 5e 1a ae 19 9e d2 28 44 92 |X.C..%^.....(D.| >>> Flow 4 (server to client) 00000000 17 03 03 00 21 c4 fb f6 53 bb 3e 04 cc 0b a0 03 |....!...S.>.....| 00000010 fa 49 96 da b5 8d b2 f2 e5 d8 f3 5c 27 57 4f 9c |.I.........\'WO.| 00000020 30 00 34 fc 52 92 15 03 03 00 16 a3 02 7a 50 d2 |0.4.R........zP.| 00000030 c6 b3 fc 69 8f e4 94 ae ab 22 ad 05 1d 15 69 b9 |...i....."....i.| 00000040 a5 |.| go/src/pkg/crypto/tls/testdata/Server-TLSv12-ResumeDisabled0100644000000000000000000001477612412656737024071 0ustar00rootroot00000000000000>>> Flow 1 (client to server) 00000000 16 03 01 00 e8 01 00 00 e4 03 03 54 23 54 02 a5 |...........T#T..| 00000010 10 11 0f 6d e5 2d 2f e8 bb 52 b1 38 3f 65 01 43 |...m.-/..R.8?e.C| 00000020 36 cc 48 f6 09 22 a1 85 20 28 3c 20 35 8b fe 7a |6.H..".. (< 5..z| 00000030 41 3b 59 3a 5d b9 b3 21 f0 62 e9 0d 7b af f5 5d |A;Y:]..!.b..{..]| 00000040 fa 65 1a 40 c8 ca cd 74 8c ef d2 fb 00 04 00 05 |.e.@...t........| 00000050 00 ff 01 00 00 97 00 23 00 68 00 00 00 00 00 00 |.......#.h......| 00000060 00 00 00 00 00 00 00 00 00 00 65 ea 4b d1 ef ba |..........e.K...| 00000070 2d db 0c ba 9a d4 20 76 57 c8 ec dc 2d 77 fb fb |-..... vW...-w..| 00000080 3b 93 5f 53 e0 14 4f 90 fb d6 55 57 8c 8d 0d 25 |;._S..O...UW...%| 00000090 ea 5d 0d f2 91 e5 12 22 12 ec 7b 5f b6 6e fd 07 |.]....."..{_.n..| 000000a0 59 23 24 fc b1 97 ca ea 56 a5 c2 a0 e4 9e 99 64 |Y#$.....V......d| 000000b0 f2 64 d0 75 7a 46 63 e3 dc 21 ed 78 56 e9 e1 ab |.d.uzFc..!.xV...| 000000c0 66 80 00 0d 00 22 00 20 06 01 06 02 06 03 05 01 |f....". ........| 000000d0 05 02 05 03 04 01 04 02 04 03 03 01 03 02 03 03 |................| 000000e0 02 01 02 02 02 03 01 01 00 0f 00 01 01 |.............| >>> Flow 2 (server to client) 00000000 16 03 03 00 31 02 00 00 2d 03 03 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 |................| 00000030 05 ff 01 00 01 00 16 03 03 02 be 0b 00 02 ba 00 |................| 00000040 02 b7 00 02 b4 30 82 02 b0 30 82 02 19 a0 03 02 |.....0...0......| 00000050 01 02 02 09 00 85 b0 bb a4 8a 7f b8 ca 30 0d 06 |.............0..| 00000060 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 45 31 0b |.*.H........0E1.| 00000070 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 |0...U....AU1.0..| 00000080 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 |.U....Some-State| 00000090 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 |1!0...U....Inter| 000000a0 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 |net Widgits Pty | 000000b0 4c 74 64 30 1e 17 0d 31 30 30 34 32 34 30 39 30 |Ltd0...100424090| 000000c0 39 33 38 5a 17 0d 31 31 30 34 32 34 30 39 30 39 |938Z..1104240909| 000000d0 33 38 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 |38Z0E1.0...U....| 000000e0 41 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d |AU1.0...U....Som| 000000f0 65 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a |e-State1!0...U..| 00000100 13 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 |..Internet Widgi| 00000110 74 73 20 50 74 79 20 4c 74 64 30 81 9f 30 0d 06 |ts Pty Ltd0..0..| 00000120 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 |.*.H............| 00000130 30 81 89 02 81 81 00 bb 79 d6 f5 17 b5 e5 bf 46 |0.......y......F| 00000140 10 d0 dc 69 be e6 2b 07 43 5a d0 03 2d 8a 7a 43 |...i..+.CZ..-.zC| 00000150 85 b7 14 52 e7 a5 65 4c 2c 78 b8 23 8c b5 b4 82 |...R..eL,x.#....| 00000160 e5 de 1f 95 3b 7e 62 a5 2c a5 33 d6 fe 12 5c 7a |....;~b.,.3...\z| 00000170 56 fc f5 06 bf fa 58 7b 26 3f b5 cd 04 d3 d0 c9 |V.....X{&?......| 00000180 21 96 4a c7 f4 54 9f 5a bf ef 42 71 00 fe 18 99 |!.J..T.Z..Bq....| 00000190 07 7f 7e 88 7d 7d f1 04 39 c4 a2 2e db 51 c9 7c |..~.}}..9....Q.|| 000001a0 e3 c0 4c 3b 32 66 01 cf af b1 1d b8 71 9a 1d db |..L;2f......q...| 000001b0 db 89 6b ae da 2d 79 02 03 01 00 01 a3 81 a7 30 |..k..-y........0| 000001c0 81 a4 30 1d 06 03 55 1d 0e 04 16 04 14 b1 ad e2 |..0...U.........| 000001d0 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 88 |.Z..(.i.#i..&...| 000001e0 39 30 75 06 03 55 1d 23 04 6e 30 6c 80 14 b1 ad |90u..U.#.n0l....| 000001f0 e2 85 5a cf cb 28 db 69 ce 23 69 de d3 26 8e 18 |..Z..(.i.#i..&..| 00000200 88 39 a1 49 a4 47 30 45 31 0b 30 09 06 03 55 04 |.9.I.G0E1.0...U.| 00000210 06 13 02 41 55 31 13 30 11 06 03 55 04 08 13 0a |...AU1.0...U....| 00000220 53 6f 6d 65 2d 53 74 61 74 65 31 21 30 1f 06 03 |Some-State1!0...| 00000230 55 04 0a 13 18 49 6e 74 65 72 6e 65 74 20 57 69 |U....Internet Wi| 00000240 64 67 69 74 73 20 50 74 79 20 4c 74 64 82 09 00 |dgits Pty Ltd...| 00000250 85 b0 bb a4 8a 7f b8 ca 30 0c 06 03 55 1d 13 04 |........0...U...| 00000260 05 30 03 01 01 ff 30 0d 06 09 2a 86 48 86 f7 0d |.0....0...*.H...| 00000270 01 01 05 05 00 03 81 81 00 08 6c 45 24 c7 6b b1 |..........lE$.k.| 00000280 59 ab 0c 52 cc f2 b0 14 d7 87 9d 7a 64 75 b5 5a |Y..R.......zdu.Z| 00000290 95 66 e4 c5 2b 8e ae 12 66 1f eb 4f 38 b3 6e 60 |.f..+...f..O8.n`| 000002a0 d3 92 fd f7 41 08 b5 25 13 b1 18 7a 24 fb 30 1d |....A..%...z$.0.| 000002b0 ba ed 98 b9 17 ec e7 d7 31 59 db 95 d3 1d 78 ea |........1Y....x.| 000002c0 50 56 5c d5 82 5a 2d 5a 5f 33 c4 b6 d8 c9 75 90 |PV\..Z-Z_3....u.| 000002d0 96 8c 0f 52 98 b5 cd 98 1f 89 20 5f f2 a0 1c a3 |...R...... _....| 000002e0 1b 96 94 dd a9 fd 57 e9 70 e8 26 6d 71 99 9b 26 |......W.p.&mq..&| 000002f0 6e 38 50 29 6c 90 a7 bd d9 16 03 03 00 04 0e 00 |n8P)l...........| 00000300 00 00 |..| >>> Flow 3 (client to server) 00000000 16 03 03 00 86 10 00 00 82 00 80 ae 02 dd 1f 1a |................| 00000010 86 83 f5 2f 82 46 4b 29 58 aa a1 b3 56 8b 4e 40 |.../.FK)X...V.N@| 00000020 ef 23 65 67 ad 48 e5 e1 fd ae dd bf 68 fd bd a6 |.#eg.H......h...| 00000030 13 a0 7e 05 ab f7 20 e1 6a 4e d1 37 93 08 1d c9 |..~... .jN.7....| 00000040 37 e0 b5 34 28 bf 20 45 45 da 0f 7e 51 a7 c6 ae |7..4(. EE..~Q...| 00000050 61 6c 07 1b 73 ef da 6e 25 c4 ed be e3 3f da ae |al..s..n%....?..| 00000060 cd 3c 17 9c 2e ee fb 47 9d b3 a1 b2 c3 5d e0 83 |.<.....G.....]..| 00000070 74 20 37 2d 72 d6 d0 4d 58 0e 26 1c 50 22 95 08 |t 7-r..MX.&.P"..| 00000080 7d e0 5f 86 99 9e 2c 2e a7 a0 7f 14 03 03 00 01 |}._...,.........| 00000090 01 16 03 03 00 24 a2 ab 41 25 a5 cf 04 18 1d 98 |.....$..A%......| 000000a0 88 6c 59 21 86 33 54 f4 35 b4 21 6e a5 29 d5 6e |.lY!.3T.5.!n.).n| 000000b0 3d 08 72 b0 af 46 b5 8f 6b 86 |=.r..F..k.| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 24 59 20 4d c2 17 |..........$Y M..| 00000010 8b 3c 9b 33 d9 f9 ef fb 80 18 1f 67 a7 58 12 89 |.<.3.......g.X..| 00000020 4e 73 0f 2d 7b e6 c4 a6 79 73 01 da 22 e8 54 17 |Ns.-{...ys..".T.| 00000030 03 03 00 21 36 ca 64 0f 4a 12 a5 50 3d 97 bb 39 |...!6.d.J..P=..9| 00000040 02 fc ed d1 82 6a 9a 2e 21 79 f6 e1 b3 cc 32 db |.....j..!y....2.| 00000050 0f 5d b3 fb a5 15 03 03 00 16 51 f4 be 57 7a df |.]........Q..Wz.| 00000060 f1 f2 bd b5 51 5e 45 80 be 0b 9a 0c d1 19 3c 79 |....Q^E.......>> Flow 1 (client to server) 00000000 16 03 01 00 70 01 00 00 6c 03 03 52 cc 57 59 2d |....p...l..R.WY-| 00000010 77 aa 75 35 fa ff 2a a2 bf 91 5e e3 7f 38 7d 7a |w.u5..*...^..8}z| 00000020 e3 93 d3 e8 8b 09 bb 06 c8 6d 91 00 00 04 00 2f |.........m...../| 00000030 00 ff 01 00 00 3f 00 00 00 10 00 0e 00 00 0b 73 |.....?.........s| 00000040 6e 69 74 65 73 74 2e 63 6f 6d 00 0d 00 22 00 20 |nitest.com...". | 00000050 06 01 06 02 06 03 05 01 05 02 05 03 04 01 04 02 |................| 00000060 04 03 03 01 03 02 03 03 02 01 02 02 02 03 01 01 |................| 00000070 00 0f 00 01 01 |.....| >>> Flow 2 (server to client) 00000000 16 03 03 00 31 02 00 00 2d 03 03 00 00 00 00 00 |....1...-.......| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 2f 00 00 |............./..| 00000030 05 ff 01 00 01 00 16 03 03 02 00 0b 00 01 fc 00 |................| 00000040 01 f9 00 01 f6 30 82 01 f2 30 82 01 5d a0 03 02 |.....0...0..]...| 00000050 01 02 02 01 00 30 0b 06 09 2a 86 48 86 f7 0d 01 |.....0...*.H....| 00000060 01 05 30 28 31 10 30 0e 06 03 55 04 0a 13 07 41 |..0(1.0...U....A| 00000070 63 6d 65 20 43 6f 31 14 30 12 06 03 55 04 03 13 |cme Co1.0...U...| 00000080 0b 73 6e 69 74 65 73 74 2e 63 6f 6d 30 1e 17 0d |.snitest.com0...| 00000090 31 32 30 34 31 31 31 37 34 30 33 35 5a 17 0d 31 |120411174035Z..1| 000000a0 33 30 34 31 31 31 37 34 35 33 35 5a 30 28 31 10 |30411174535Z0(1.| 000000b0 30 0e 06 03 55 04 0a 13 07 41 63 6d 65 20 43 6f |0...U....Acme Co| 000000c0 31 14 30 12 06 03 55 04 03 13 0b 73 6e 69 74 65 |1.0...U....snite| 000000d0 73 74 2e 63 6f 6d 30 81 9d 30 0b 06 09 2a 86 48 |st.com0..0...*.H| 000000e0 86 f7 0d 01 01 01 03 81 8d 00 30 81 89 02 81 81 |..........0.....| 000000f0 00 bb 79 d6 f5 17 b5 e5 bf 46 10 d0 dc 69 be e6 |..y......F...i..| 00000100 2b 07 43 5a d0 03 2d 8a 7a 43 85 b7 14 52 e7 a5 |+.CZ..-.zC...R..| 00000110 65 4c 2c 78 b8 23 8c b5 b4 82 e5 de 1f 95 3b 7e |eL,x.#........;~| 00000120 62 a5 2c a5 33 d6 fe 12 5c 7a 56 fc f5 06 bf fa |b.,.3...\zV.....| 00000130 58 7b 26 3f b5 cd 04 d3 d0 c9 21 96 4a c7 f4 54 |X{&?......!.J..T| 00000140 9f 5a bf ef 42 71 00 fe 18 99 07 7f 7e 88 7d 7d |.Z..Bq......~.}}| 00000150 f1 04 39 c4 a2 2e db 51 c9 7c e3 c0 4c 3b 32 66 |..9....Q.|..L;2f| 00000160 01 cf af b1 1d b8 71 9a 1d db db 89 6b ae da 2d |......q.....k..-| 00000170 79 02 03 01 00 01 a3 32 30 30 30 0e 06 03 55 1d |y......2000...U.| 00000180 0f 01 01 ff 04 04 03 02 00 a0 30 0d 06 03 55 1d |..........0...U.| 00000190 0e 04 06 04 04 01 02 03 04 30 0f 06 03 55 1d 23 |.........0...U.#| 000001a0 04 08 30 06 80 04 01 02 03 04 30 0b 06 09 2a 86 |..0.......0...*.| 000001b0 48 86 f7 0d 01 01 05 03 81 81 00 89 c6 45 5f 1c |H............E_.| 000001c0 1f 5e f8 eb 1a b1 74 ee 24 39 05 9f 5c 42 59 bb |.^....t.$9..\BY.| 000001d0 1a 8d 86 cd b1 d0 56 f5 6a 71 7d a4 0e 95 ab 90 |......V.jq}.....| 000001e0 f5 9e 8d ea f6 27 c1 57 99 50 94 db 08 02 26 6e |.....'.W.P....&n| 000001f0 b3 4f c6 84 2d ea 8a 4b 68 d9 c1 38 91 03 ab 84 |.O..-..Kh..8....| 00000200 fb 9e 1f 85 d9 b5 d2 3f f2 31 2c 86 70 fb b5 40 |.......?.1,.p..@| 00000210 14 82 45 a4 eb af e2 64 d9 0c 8a 4c f4 f8 5b 0f |..E....d...L..[.| 00000220 ac 12 ac 2f c4 a3 15 4b ad 52 46 28 68 af 96 c6 |.../...K.RF(h...| 00000230 2c 65 25 d6 52 b6 e3 18 45 bd cc 16 03 03 00 04 |,e%.R...E.......| 00000240 0e 00 00 00 |....| >>> Flow 3 (client to server) 00000000 16 03 03 00 86 10 00 00 82 00 80 0d f2 bf 75 a9 |..............u.| 00000010 aa db f3 25 55 d4 20 59 63 54 d1 70 82 f9 61 c5 |...%U. YcT.p..a.| 00000020 b7 ae 3f 75 71 75 9d c5 01 a1 ed b1 07 66 9f 3f |..?uqu.......f.?| 00000030 cf c6 e6 ad 44 03 fd 18 6f 53 24 ce 76 01 bd fe |....D...oS$.v...| 00000040 e2 51 f7 df 8a 23 3a 21 c4 00 15 ff d0 e0 ff c8 |.Q...#:!........| 00000050 8b 89 33 c6 8e e0 ce 97 ef b4 c6 f9 b0 ea 38 89 |..3...........8.| 00000060 79 98 34 9e f7 bc c6 fd d2 5d 56 84 5c d2 9a ce |y.4......]V.\...| 00000070 ae de 09 bc 24 25 fc 09 0c bc 0e 91 0d 6b 36 ae |....$%.......k6.| 00000080 ce 6b cd 14 ec b6 3c fa d6 df fc 14 03 03 00 01 |.k....<.........| 00000090 01 16 03 03 00 40 ad 21 13 2b 33 7a 4a 0d fb 0f |.....@.!.+3zJ...| 000000a0 eb d2 b6 85 29 1f 59 79 ba 86 53 5c 68 b4 c7 e3 |....).Yy..S\h...| 000000b0 8a 6c 5c 18 04 4d e4 76 19 30 ba 92 b4 79 8c 64 |.l\..M.v.0...y.d| 000000c0 00 a0 2e 13 96 45 9f e7 a9 e4 23 9e 9f 89 23 26 |.....E....#...#&| 000000d0 36 20 82 fc 75 fe |6 ..u.| >>> Flow 4 (server to client) 00000000 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 00 |..........@.....| 00000010 00 00 00 00 00 00 00 00 00 00 00 b7 87 61 10 03 |.............a..| 00000020 b8 a4 42 d4 8b 49 bc 40 80 70 92 c8 25 b0 c6 7f |..B..I.@.p..%...| 00000030 b3 87 76 50 5a 59 b3 3c d8 3e 23 24 aa 1a f3 36 |..vPZY.<.>#$...6| 00000040 c9 2c 87 c1 22 d2 94 f8 2c fd ef 17 03 03 00 40 |.,.."...,......@| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000060 e5 7f bd 3e ff 9f d4 1b 91 02 f8 69 6f 70 9d 51 |...>.......iop.Q| 00000070 a5 ec ef 5b 10 3f 4e 3f 44 e5 9a 39 68 7c 3a b9 |...[.?N?D..9h|:.| 00000080 69 38 31 ec 9c 45 bf 19 d1 5c 5e 2e 06 00 ca 19 |i81..E...\^.....| 00000090 15 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........| 000000a0 00 00 00 00 00 63 5e 79 2c f2 05 dc 2b d7 5b ac |.....c^y,...+.[.| 000000b0 9d fc 75 94 03 16 ca 1f b2 75 58 2d f1 2f f1 1e |..u......uX-./..| 000000c0 d2 f6 84 8f 2e |.....| go/src/pkg/crypto/tls/ticket.go0100644000000000000000000001017012412656737017002 0ustar00rootroot00000000000000// 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 tls import ( "bytes" "crypto/aes" "crypto/cipher" "crypto/hmac" "crypto/sha256" "crypto/subtle" "errors" "io" ) // sessionState contains the information that is serialized into a session // ticket in order to later resume a connection. type sessionState struct { vers uint16 cipherSuite uint16 masterSecret []byte certificates [][]byte } func (s *sessionState) equal(i interface{}) bool { s1, ok := i.(*sessionState) if !ok { return false } if s.vers != s1.vers || s.cipherSuite != s1.cipherSuite || !bytes.Equal(s.masterSecret, s1.masterSecret) { return false } if len(s.certificates) != len(s1.certificates) { return false } for i := range s.certificates { if !bytes.Equal(s.certificates[i], s1.certificates[i]) { return false } } return true } func (s *sessionState) marshal() []byte { length := 2 + 2 + 2 + len(s.masterSecret) + 2 for _, cert := range s.certificates { length += 4 + len(cert) } ret := make([]byte, length) x := ret x[0] = byte(s.vers >> 8) x[1] = byte(s.vers) x[2] = byte(s.cipherSuite >> 8) x[3] = byte(s.cipherSuite) x[4] = byte(len(s.masterSecret) >> 8) x[5] = byte(len(s.masterSecret)) x = x[6:] copy(x, s.masterSecret) x = x[len(s.masterSecret):] x[0] = byte(len(s.certificates) >> 8) x[1] = byte(len(s.certificates)) x = x[2:] for _, cert := range s.certificates { x[0] = byte(len(cert) >> 24) x[1] = byte(len(cert) >> 16) x[2] = byte(len(cert) >> 8) x[3] = byte(len(cert)) copy(x[4:], cert) x = x[4+len(cert):] } return ret } func (s *sessionState) unmarshal(data []byte) bool { if len(data) < 8 { return false } s.vers = uint16(data[0])<<8 | uint16(data[1]) s.cipherSuite = uint16(data[2])<<8 | uint16(data[3]) masterSecretLen := int(data[4])<<8 | int(data[5]) data = data[6:] if len(data) < masterSecretLen { return false } s.masterSecret = data[:masterSecretLen] data = data[masterSecretLen:] if len(data) < 2 { return false } numCerts := int(data[0])<<8 | int(data[1]) data = data[2:] s.certificates = make([][]byte, numCerts) for i := range s.certificates { if len(data) < 4 { return false } certLen := int(data[0])<<24 | int(data[1])<<16 | int(data[2])<<8 | int(data[3]) data = data[4:] if certLen < 0 { return false } if len(data) < certLen { return false } s.certificates[i] = data[:certLen] data = data[certLen:] } if len(data) > 0 { return false } return true } func (c *Conn) encryptTicket(state *sessionState) ([]byte, error) { serialized := state.marshal() encrypted := make([]byte, aes.BlockSize+len(serialized)+sha256.Size) iv := encrypted[:aes.BlockSize] macBytes := encrypted[len(encrypted)-sha256.Size:] if _, err := io.ReadFull(c.config.rand(), iv); err != nil { return nil, err } block, err := aes.NewCipher(c.config.SessionTicketKey[:16]) if err != nil { return nil, errors.New("tls: failed to create cipher while encrypting ticket: " + err.Error()) } cipher.NewCTR(block, iv).XORKeyStream(encrypted[aes.BlockSize:], serialized) mac := hmac.New(sha256.New, c.config.SessionTicketKey[16:32]) mac.Write(encrypted[:len(encrypted)-sha256.Size]) mac.Sum(macBytes[:0]) return encrypted, nil } func (c *Conn) decryptTicket(encrypted []byte) (*sessionState, bool) { if c.config.SessionTicketsDisabled || len(encrypted) < aes.BlockSize+sha256.Size { return nil, false } iv := encrypted[:aes.BlockSize] macBytes := encrypted[len(encrypted)-sha256.Size:] mac := hmac.New(sha256.New, c.config.SessionTicketKey[16:32]) mac.Write(encrypted[:len(encrypted)-sha256.Size]) expected := mac.Sum(nil) if subtle.ConstantTimeCompare(macBytes, expected) != 1 { return nil, false } block, err := aes.NewCipher(c.config.SessionTicketKey[:16]) if err != nil { return nil, false } ciphertext := encrypted[aes.BlockSize : len(encrypted)-sha256.Size] plaintext := ciphertext cipher.NewCTR(block, iv).XORKeyStream(plaintext, ciphertext) state := new(sessionState) ok := state.unmarshal(plaintext) return state, ok } go/src/pkg/crypto/tls/tls.go0100644000000000000000000001705512412656737016332 0ustar00rootroot00000000000000// Copyright 2009 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 tls partially implements TLS 1.2, as specified in RFC 5246. package tls import ( "crypto" "crypto/ecdsa" "crypto/rsa" "crypto/x509" "encoding/pem" "errors" "io/ioutil" "net" "strings" "time" ) // Server returns a new TLS server side connection // using conn as the underlying transport. // The configuration config must be non-nil and must have // at least one certificate. func Server(conn net.Conn, config *Config) *Conn { return &Conn{conn: conn, config: config} } // Client returns a new TLS client side connection // using conn as the underlying transport. // The config cannot be nil: users must set either ServerName or // InsecureSkipVerify in the config. func Client(conn net.Conn, config *Config) *Conn { return &Conn{conn: conn, config: config, isClient: true} } // A listener implements a network listener (net.Listener) for TLS connections. type listener struct { net.Listener config *Config } // Accept waits for and returns the next incoming TLS connection. // The returned connection c is a *tls.Conn. func (l *listener) Accept() (c net.Conn, err error) { c, err = l.Listener.Accept() if err != nil { return } c = Server(c, l.config) return } // NewListener creates a Listener which accepts connections from an inner // Listener and wraps each connection with Server. // The configuration config must be non-nil and must have // at least one certificate. func NewListener(inner net.Listener, config *Config) net.Listener { l := new(listener) l.Listener = inner l.config = config return l } // Listen creates a TLS listener accepting connections on the // given network address using net.Listen. // The configuration config must be non-nil and must have // at least one certificate. func Listen(network, laddr string, config *Config) (net.Listener, error) { if config == nil || len(config.Certificates) == 0 { return nil, errors.New("tls.Listen: no certificates in configuration") } l, err := net.Listen(network, laddr) if err != nil { return nil, err } return NewListener(l, config), nil } type timeoutError struct{} func (timeoutError) Error() string { return "tls: DialWithDialer timed out" } func (timeoutError) Timeout() bool { return true } func (timeoutError) Temporary() bool { return true } // DialWithDialer connects to the given network address using dialer.Dial and // then initiates a TLS handshake, returning the resulting TLS connection. Any // timeout or deadline given in the dialer apply to connection and TLS // handshake as a whole. // // DialWithDialer interprets a nil configuration as equivalent to the zero // configuration; see the documentation of Config for the defaults. func DialWithDialer(dialer *net.Dialer, network, addr string, config *Config) (*Conn, error) { // We want the Timeout and Deadline values from dialer to cover the // whole process: TCP connection and TLS handshake. This means that we // also need to start our own timers now. timeout := dialer.Timeout if !dialer.Deadline.IsZero() { deadlineTimeout := dialer.Deadline.Sub(time.Now()) if timeout == 0 || deadlineTimeout < timeout { timeout = deadlineTimeout } } var errChannel chan error if timeout != 0 { errChannel = make(chan error, 2) time.AfterFunc(timeout, func() { errChannel <- timeoutError{} }) } rawConn, err := dialer.Dial(network, addr) if err != nil { return nil, err } colonPos := strings.LastIndex(addr, ":") if colonPos == -1 { colonPos = len(addr) } hostname := addr[:colonPos] if config == nil { config = defaultConfig() } // If no ServerName is set, infer the ServerName // from the hostname we're connecting to. if config.ServerName == "" { // Make a copy to avoid polluting argument or default. c := *config c.ServerName = hostname config = &c } conn := Client(rawConn, config) if timeout == 0 { err = conn.Handshake() } else { go func() { errChannel <- conn.Handshake() }() err = <-errChannel } if err != nil { rawConn.Close() return nil, err } return conn, nil } // Dial connects to the given network address using net.Dial // and then initiates a TLS handshake, returning the resulting // TLS connection. // Dial interprets a nil configuration as equivalent to // the zero configuration; see the documentation of Config // for the defaults. func Dial(network, addr string, config *Config) (*Conn, error) { return DialWithDialer(new(net.Dialer), network, addr, config) } // LoadX509KeyPair reads and parses a public/private key pair from a pair of // files. The files must contain PEM encoded data. func LoadX509KeyPair(certFile, keyFile string) (cert Certificate, err error) { certPEMBlock, err := ioutil.ReadFile(certFile) if err != nil { return } keyPEMBlock, err := ioutil.ReadFile(keyFile) if err != nil { return } return X509KeyPair(certPEMBlock, keyPEMBlock) } // X509KeyPair parses a public/private key pair from a pair of // PEM encoded data. func X509KeyPair(certPEMBlock, keyPEMBlock []byte) (cert Certificate, err error) { var certDERBlock *pem.Block for { certDERBlock, certPEMBlock = pem.Decode(certPEMBlock) if certDERBlock == nil { break } if certDERBlock.Type == "CERTIFICATE" { cert.Certificate = append(cert.Certificate, certDERBlock.Bytes) } } if len(cert.Certificate) == 0 { err = errors.New("crypto/tls: failed to parse certificate PEM data") return } var keyDERBlock *pem.Block for { keyDERBlock, keyPEMBlock = pem.Decode(keyPEMBlock) if keyDERBlock == nil { err = errors.New("crypto/tls: failed to parse key PEM data") return } if keyDERBlock.Type == "PRIVATE KEY" || strings.HasSuffix(keyDERBlock.Type, " PRIVATE KEY") { break } } cert.PrivateKey, err = parsePrivateKey(keyDERBlock.Bytes) if err != nil { return } // We don't need to parse the public key for TLS, but we so do anyway // to check that it looks sane and matches the private key. x509Cert, err := x509.ParseCertificate(cert.Certificate[0]) if err != nil { return } switch pub := x509Cert.PublicKey.(type) { case *rsa.PublicKey: priv, ok := cert.PrivateKey.(*rsa.PrivateKey) if !ok { err = errors.New("crypto/tls: private key type does not match public key type") return } if pub.N.Cmp(priv.N) != 0 { err = errors.New("crypto/tls: private key does not match public key") return } case *ecdsa.PublicKey: priv, ok := cert.PrivateKey.(*ecdsa.PrivateKey) if !ok { err = errors.New("crypto/tls: private key type does not match public key type") return } if pub.X.Cmp(priv.X) != 0 || pub.Y.Cmp(priv.Y) != 0 { err = errors.New("crypto/tls: private key does not match public key") return } default: err = errors.New("crypto/tls: unknown public key algorithm") return } return } // Attempt to parse the given private key DER block. OpenSSL 0.9.8 generates // PKCS#1 private keys by default, while OpenSSL 1.0.0 generates PKCS#8 keys. // OpenSSL ecparam generates SEC1 EC private keys for ECDSA. We try all three. func parsePrivateKey(der []byte) (crypto.PrivateKey, error) { if key, err := x509.ParsePKCS1PrivateKey(der); err == nil { return key, nil } if key, err := x509.ParsePKCS8PrivateKey(der); err == nil { switch key := key.(type) { case *rsa.PrivateKey, *ecdsa.PrivateKey: return key, nil default: return nil, errors.New("crypto/tls: found unknown private key type in PKCS#8 wrapping") } } if key, err := x509.ParseECPrivateKey(der); err == nil { return key, nil } return nil, errors.New("crypto/tls: failed to parse private key") } go/src/pkg/crypto/tls/tls_test.go0100644000000000000000000001610312412656737017362 0ustar00rootroot00000000000000// 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 tls import ( "fmt" "io" "net" "strings" "testing" "time" ) var rsaCertPEM = `-----BEGIN CERTIFICATE----- MIIB0zCCAX2gAwIBAgIJAI/M7BYjwB+uMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX aWRnaXRzIFB0eSBMdGQwHhcNMTIwOTEyMjE1MjAyWhcNMTUwOTEyMjE1MjAyWjBF MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANLJ hPHhITqQbPklG3ibCVxwGMRfp/v4XqhfdQHdcVfHap6NQ5Wok/4xIA+ui35/MmNa rtNuC+BdZ1tMuVCPFZcCAwEAAaNQME4wHQYDVR0OBBYEFJvKs8RfJaXTH08W+SGv zQyKn0H8MB8GA1UdIwQYMBaAFJvKs8RfJaXTH08W+SGvzQyKn0H8MAwGA1UdEwQF MAMBAf8wDQYJKoZIhvcNAQEFBQADQQBJlffJHybjDGxRMqaRmDhX0+6v02TUKZsW r5QuVbpQhH6u+0UgcW0jp9QwpxoPTLTWGXEWBBBurxFwiCBhkQ+V -----END CERTIFICATE----- ` var rsaKeyPEM = `-----BEGIN RSA PRIVATE KEY----- MIIBOwIBAAJBANLJhPHhITqQbPklG3ibCVxwGMRfp/v4XqhfdQHdcVfHap6NQ5Wo k/4xIA+ui35/MmNartNuC+BdZ1tMuVCPFZcCAwEAAQJAEJ2N+zsR0Xn8/Q6twa4G 6OB1M1WO+k+ztnX/1SvNeWu8D6GImtupLTYgjZcHufykj09jiHmjHx8u8ZZB/o1N MQIhAPW+eyZo7ay3lMz1V01WVjNKK9QSn1MJlb06h/LuYv9FAiEA25WPedKgVyCW SmUwbPw8fnTcpqDWE3yTO3vKcebqMSsCIBF3UmVue8YU3jybC3NxuXq3wNm34R8T xVLHwDXh/6NJAiEAl2oHGGLz64BuAfjKrqwz7qMYr9HCLIe/YsoWq/olzScCIQDi D2lWusoe2/nEqfDVVWGWlyJ7yOmqaVm/iNUN9B2N2g== -----END RSA PRIVATE KEY----- ` // keyPEM is the same as rsaKeyPEM, but declares itself as just // "PRIVATE KEY", not "RSA PRIVATE KEY". http://golang.org/issue/4477 var keyPEM = `-----BEGIN PRIVATE KEY----- MIIBOwIBAAJBANLJhPHhITqQbPklG3ibCVxwGMRfp/v4XqhfdQHdcVfHap6NQ5Wo k/4xIA+ui35/MmNartNuC+BdZ1tMuVCPFZcCAwEAAQJAEJ2N+zsR0Xn8/Q6twa4G 6OB1M1WO+k+ztnX/1SvNeWu8D6GImtupLTYgjZcHufykj09jiHmjHx8u8ZZB/o1N MQIhAPW+eyZo7ay3lMz1V01WVjNKK9QSn1MJlb06h/LuYv9FAiEA25WPedKgVyCW SmUwbPw8fnTcpqDWE3yTO3vKcebqMSsCIBF3UmVue8YU3jybC3NxuXq3wNm34R8T xVLHwDXh/6NJAiEAl2oHGGLz64BuAfjKrqwz7qMYr9HCLIe/YsoWq/olzScCIQDi D2lWusoe2/nEqfDVVWGWlyJ7yOmqaVm/iNUN9B2N2g== -----END PRIVATE KEY----- ` var ecdsaCertPEM = `-----BEGIN CERTIFICATE----- MIIB/jCCAWICCQDscdUxw16XFDAJBgcqhkjOPQQBMEUxCzAJBgNVBAYTAkFVMRMw EQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0 eSBMdGQwHhcNMTIxMTE0MTI0MDQ4WhcNMTUxMTE0MTI0MDQ4WjBFMQswCQYDVQQG EwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lk Z2l0cyBQdHkgTHRkMIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBY9+my9OoeSUR lDQdV/x8LsOuLilthhiS1Tz4aGDHIPwC1mlvnf7fg5lecYpMCrLLhauAc1UJXcgl 01xoLuzgtAEAgv2P/jgytzRSpUYvgLBt1UA0leLYBy6mQQbrNEuqT3INapKIcUv8 XxYP0xMEUksLPq6Ca+CRSqTtrd/23uTnapkwCQYHKoZIzj0EAQOBigAwgYYCQXJo A7Sl2nLVf+4Iu/tAX/IF4MavARKC4PPHK3zfuGfPR3oCCcsAoz3kAzOeijvd0iXb H5jBImIxPL4WxQNiBTexAkF8D1EtpYuWdlVQ80/h/f4pBcGiXPqX5h2PQSQY7hP1 +jwM1FGS4fREIOvlBYr/SzzQRtwrvrzGYxDEDbsC0ZGRnA== -----END CERTIFICATE----- ` var ecdsaKeyPEM = `-----BEGIN EC PARAMETERS----- BgUrgQQAIw== -----END EC PARAMETERS----- -----BEGIN EC PRIVATE KEY----- MIHcAgEBBEIBrsoKp0oqcv6/JovJJDoDVSGWdirrkgCWxrprGlzB9o0X8fV675X0 NwuBenXFfeZvVcwluO7/Q9wkYoPd/t3jGImgBwYFK4EEACOhgYkDgYYABAFj36bL 06h5JRGUNB1X/Hwuw64uKW2GGJLVPPhoYMcg/ALWaW+d/t+DmV5xikwKssuFq4Bz VQldyCXTXGgu7OC0AQCC/Y/+ODK3NFKlRi+AsG3VQDSV4tgHLqZBBus0S6pPcg1q kohxS/xfFg/TEwRSSws+roJr4JFKpO2t3/be5OdqmQ== -----END EC PRIVATE KEY----- ` var keyPairTests = []struct { algo string cert string key string }{ {"ECDSA", ecdsaCertPEM, ecdsaKeyPEM}, {"RSA", rsaCertPEM, rsaKeyPEM}, {"RSA-untyped", rsaCertPEM, keyPEM}, // golang.org/issue/4477 } func TestX509KeyPair(t *testing.T) { var pem []byte for _, test := range keyPairTests { pem = []byte(test.cert + test.key) if _, err := X509KeyPair(pem, pem); err != nil { t.Errorf("Failed to load %s cert followed by %s key: %s", test.algo, test.algo, err) } pem = []byte(test.key + test.cert) if _, err := X509KeyPair(pem, pem); err != nil { t.Errorf("Failed to load %s key followed by %s cert: %s", test.algo, test.algo, err) } } } func TestX509MixedKeyPair(t *testing.T) { if _, err := X509KeyPair([]byte(rsaCertPEM), []byte(ecdsaKeyPEM)); err == nil { t.Error("Load of RSA certificate succeeded with ECDSA private key") } if _, err := X509KeyPair([]byte(ecdsaCertPEM), []byte(rsaKeyPEM)); err == nil { t.Error("Load of ECDSA certificate succeeded with RSA private key") } } func newLocalListener(t *testing.T) net.Listener { ln, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { ln, err = net.Listen("tcp6", "[::1]:0") } if err != nil { t.Fatal(err) } return ln } func TestDialTimeout(t *testing.T) { if testing.Short() { t.Skip("skipping in short mode") } listener := newLocalListener(t) addr := listener.Addr().String() defer listener.Close() complete := make(chan bool) defer close(complete) go func() { conn, err := listener.Accept() if err != nil { t.Error(err) return } <-complete conn.Close() }() dialer := &net.Dialer{ Timeout: 10 * time.Millisecond, } var err error if _, err = DialWithDialer(dialer, "tcp", addr, nil); err == nil { t.Fatal("DialWithTimeout completed successfully") } if !strings.Contains(err.Error(), "timed out") { t.Errorf("resulting error not a timeout: %s", err) } } // tests that Conn.Read returns (non-zero, io.EOF) instead of // (non-zero, nil) when a Close (alertCloseNotify) is sitting right // behind the application data in the buffer. func TestConnReadNonzeroAndEOF(t *testing.T) { // This test is racy: it assumes that after a write to a // localhost TCP connection, the peer TCP connection can // immediately read it. Because it's racy, we skip this test // in short mode, and then retry it several times with an // increasing sleep in between our final write (via srv.Close // below) and the following read. if testing.Short() { t.Skip("skipping in short mode") } var err error for delay := time.Millisecond; delay <= 64*time.Millisecond; delay *= 2 { if err = testConnReadNonzeroAndEOF(t, delay); err == nil { return } } t.Error(err) } func testConnReadNonzeroAndEOF(t *testing.T, delay time.Duration) error { ln := newLocalListener(t) defer ln.Close() srvCh := make(chan *Conn, 1) var serr error go func() { sconn, err := ln.Accept() if err != nil { serr = err srvCh <- nil return } serverConfig := *testConfig srv := Server(sconn, &serverConfig) if err := srv.Handshake(); err != nil { serr = fmt.Errorf("handshake: %v", err) srvCh <- nil return } srvCh <- srv }() clientConfig := *testConfig conn, err := Dial("tcp", ln.Addr().String(), &clientConfig) if err != nil { t.Fatal(err) } defer conn.Close() srv := <-srvCh if srv == nil { return serr } buf := make([]byte, 6) srv.Write([]byte("foobar")) n, err := conn.Read(buf) if n != 6 || err != nil || string(buf) != "foobar" { return fmt.Errorf("Read = %d, %v, data %q; want 6, nil, foobar", n, err, buf) } srv.Write([]byte("abcdef")) srv.Close() time.Sleep(delay) n, err = conn.Read(buf) if n != 6 || string(buf) != "abcdef" { return fmt.Errorf("Read = %d, buf= %q; want 6, abcdef", n, buf) } if err != io.EOF { return fmt.Errorf("Second Read error = %v; want io.EOF", err) } return nil } go/src/pkg/crypto/x5090040755000000000000000000000000012412656737015020 5ustar00rootroot00000000000000go/src/pkg/crypto/x509/cert_pool.go0100644000000000000000000000535712412656737017423 0ustar00rootroot00000000000000// Copyright 2011 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 x509 import ( "encoding/pem" ) // CertPool is a set of certificates. type CertPool struct { bySubjectKeyId map[string][]int byName map[string][]int certs []*Certificate } // NewCertPool returns a new, empty CertPool. func NewCertPool() *CertPool { return &CertPool{ make(map[string][]int), make(map[string][]int), nil, } } // findVerifiedParents attempts to find certificates in s which have signed the // given certificate. If any candidates were rejected then errCert will be set // to one of them, arbitrarily, and err will contain the reason that it was // rejected. func (s *CertPool) findVerifiedParents(cert *Certificate) (parents []int, errCert *Certificate, err error) { if s == nil { return } var candidates []int if len(cert.AuthorityKeyId) > 0 { candidates = s.bySubjectKeyId[string(cert.AuthorityKeyId)] } if len(candidates) == 0 { candidates = s.byName[string(cert.RawIssuer)] } for _, c := range candidates { if err = cert.CheckSignatureFrom(s.certs[c]); err == nil { parents = append(parents, c) } else { errCert = s.certs[c] } } return } // AddCert adds a certificate to a pool. func (s *CertPool) AddCert(cert *Certificate) { if cert == nil { panic("adding nil Certificate to CertPool") } // Check that the certificate isn't being added twice. for _, c := range s.certs { if c.Equal(cert) { return } } n := len(s.certs) s.certs = append(s.certs, cert) if len(cert.SubjectKeyId) > 0 { keyId := string(cert.SubjectKeyId) s.bySubjectKeyId[keyId] = append(s.bySubjectKeyId[keyId], n) } name := string(cert.RawSubject) s.byName[name] = append(s.byName[name], n) } // AppendCertsFromPEM attempts to parse a series of PEM encoded certificates. // It appends any certificates found to s and returns true if any certificates // were successfully parsed. // // On many Linux systems, /etc/ssl/cert.pem will contain the system wide set // of root CAs in a format suitable for this function. func (s *CertPool) AppendCertsFromPEM(pemCerts []byte) (ok bool) { for len(pemCerts) > 0 { var block *pem.Block block, pemCerts = pem.Decode(pemCerts) if block == nil { break } if block.Type != "CERTIFICATE" || len(block.Headers) != 0 { continue } cert, err := ParseCertificate(block.Bytes) if err != nil { continue } s.AddCert(cert) ok = true } return } // Subjects returns a list of the DER-encoded subjects of // all of the certificates in the pool. func (s *CertPool) Subjects() (res [][]byte) { res = make([][]byte, len(s.certs)) for i, c := range s.certs { res[i] = c.RawSubject } return } go/src/pkg/crypto/x509/example_test.go0100644000000000000000000000750512412656737020124 0ustar00rootroot00000000000000// 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. package x509_test import ( "crypto/x509" "encoding/pem" ) func ExampleCertificate_Verify() { // Verifying with a custom list of root certificates. const rootPEM = ` -----BEGIN CERTIFICATE----- MIIEBDCCAuygAwIBAgIDAjppMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i YWwgQ0EwHhcNMTMwNDA1MTUxNTU1WhcNMTUwNDA0MTUxNTU1WjBJMQswCQYDVQQG EwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzElMCMGA1UEAxMcR29vZ2xlIEludGVy bmV0IEF1dGhvcml0eSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AJwqBHdc2FCROgajguDYUEi8iT/xGXAaiEZ+4I/F8YnOIe5a/mENtzJEiaB0C1NP VaTOgmKV7utZX8bhBYASxF6UP7xbSDj0U/ck5vuR6RXEz/RTDfRK/J9U3n2+oGtv h8DQUB8oMANA2ghzUWx//zo8pzcGjr1LEQTrfSTe5vn8MXH7lNVg8y5Kr0LSy+rE ahqyzFPdFUuLH8gZYR/Nnag+YyuENWllhMgZxUYi+FOVvuOAShDGKuy6lyARxzmZ EASg8GF6lSWMTlJ14rbtCMoU/M4iarNOz0YDl5cDfsCx3nuvRTPPuj5xt970JSXC DTWJnZ37DhF5iR43xa+OcmkCAwEAAaOB+zCB+DAfBgNVHSMEGDAWgBTAephojYn7 qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUSt0GFhu89mi1dvWBtrtiGrpagS8wEgYD VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwOgYDVR0fBDMwMTAvoC2g K4YpaHR0cDovL2NybC5nZW90cnVzdC5jb20vY3Jscy9ndGdsb2JhbC5jcmwwPQYI KwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwOi8vZ3RnbG9iYWwtb2NzcC5n ZW90cnVzdC5jb20wFwYDVR0gBBAwDjAMBgorBgEEAdZ5AgUBMA0GCSqGSIb3DQEB BQUAA4IBAQA21waAESetKhSbOHezI6B1WLuxfoNCunLaHtiONgaX4PCVOzf9G0JY /iLIa704XtE7JW4S615ndkZAkNoUyHgN7ZVm2o6Gb4ChulYylYbc3GrKBIxbf/a/ zG+FA1jDaFETzf3I93k9mTXwVqO94FntT0QJo544evZG0R0SnU++0ED8Vf4GXjza HFa9llF7b1cq26KqltyMdMKVvvBulRP/F/A8rLIQjcxz++iPAsbw+zOzlTvjwsto WHPbqCRiOwY1nQ2pM714A5AuTHhdUDqB1O6gyHA43LL5Z/qHQF1hwFGPa4NrzQU6 yuGnBXj8ytqU0CwIPX4WecigUCAkVDNx -----END CERTIFICATE-----` const certPEM = ` -----BEGIN CERTIFICATE----- MIIDujCCAqKgAwIBAgIIE31FZVaPXTUwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwMTI5MTMyNzQzWhcNMTQwNTI5MDAwMDAw WjBpMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEYMBYGA1UEAwwPbWFp bC5nb29nbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfRrObuSW5T7q 5CnSEqefEmtH4CCv6+5EckuriNr1CjfVvqzwfAhopXkLrq45EQm8vkmf7W96XJhC 7ZM0dYi1/qOCAU8wggFLMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAa BgNVHREEEzARgg9tYWlsLmdvb2dsZS5jb20wCwYDVR0PBAQDAgeAMGgGCCsGAQUF BwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29tL0dJQUcy LmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5jb20vb2Nz cDAdBgNVHQ4EFgQUiJxtimAuTfwb+aUtBn5UYKreKvMwDAYDVR0TAQH/BAIwADAf BgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAOMAwGCisG AQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29nbGUuY29t L0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAH6RYHxHdcGpMpFE3oxDoFnP+ gtuBCHan2yE2GRbJ2Cw8Lw0MmuKqHlf9RSeYfd3BXeKkj1qO6TVKwCh+0HdZk283 TZZyzmEOyclm3UGFYe82P/iDFt+CeQ3NpmBg+GoaVCuWAARJN/KfglbLyyYygcQq 0SgeDh8dRKUiaW3HQSoYvTvdTuqzwK4CXsr3b5/dAOY8uMuG/IAR3FgwTbZ1dtoW RvOTa8hYiU6A475WuZKyEHcwnGYe57u2I2KbMgcKjPniocj4QzgYsVAVKW3IwaOh yE+vPxsiUkvQHdO2fojCkY8jg70jxM+gu59tPDNbw3Uh/2Ij310FgTHsnGQMyA== -----END CERTIFICATE-----` // First, create the set of root certificates. For this example we only // have one. It's also possible to omit this in order to use the // default root set of the current operating system. roots := x509.NewCertPool() ok := roots.AppendCertsFromPEM([]byte(rootPEM)) if !ok { panic("failed to parse root certificate") } block, _ := pem.Decode([]byte(certPEM)) if block == nil { panic("failed to parse certificate PEM") } cert, err := x509.ParseCertificate(block.Bytes) if err != nil { panic("failed to parse certificate: " + err.Error()) } opts := x509.VerifyOptions{ DNSName: "mail.google.com", Roots: roots, } if _, err := cert.Verify(opts); err != nil { panic("failed to verify certificate: " + err.Error()) } } go/src/pkg/crypto/x509/pem_decrypt.go0100644000000000000000000001424712412656737017746 0ustar00rootroot00000000000000// 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 x509 // RFC 1423 describes the encryption of PEM blocks. The algorithm used to // generate a key from the password was derived by looking at the OpenSSL // implementation. import ( "crypto/aes" "crypto/cipher" "crypto/des" "crypto/md5" "encoding/hex" "encoding/pem" "errors" "io" "strings" ) type PEMCipher int // Possible values for the EncryptPEMBlock encryption algorithm. const ( _ PEMCipher = iota PEMCipherDES PEMCipher3DES PEMCipherAES128 PEMCipherAES192 PEMCipherAES256 ) // rfc1423Algo holds a method for enciphering a PEM block. type rfc1423Algo struct { cipher PEMCipher name string cipherFunc func(key []byte) (cipher.Block, error) keySize int blockSize int } // rfc1423Algos holds a slice of the possible ways to encrypt a PEM // block. The ivSize numbers were taken from the OpenSSL source. var rfc1423Algos = []rfc1423Algo{{ cipher: PEMCipherDES, name: "DES-CBC", cipherFunc: des.NewCipher, keySize: 8, blockSize: des.BlockSize, }, { cipher: PEMCipher3DES, name: "DES-EDE3-CBC", cipherFunc: des.NewTripleDESCipher, keySize: 24, blockSize: des.BlockSize, }, { cipher: PEMCipherAES128, name: "AES-128-CBC", cipherFunc: aes.NewCipher, keySize: 16, blockSize: aes.BlockSize, }, { cipher: PEMCipherAES192, name: "AES-192-CBC", cipherFunc: aes.NewCipher, keySize: 24, blockSize: aes.BlockSize, }, { cipher: PEMCipherAES256, name: "AES-256-CBC", cipherFunc: aes.NewCipher, keySize: 32, blockSize: aes.BlockSize, }, } // deriveKey uses a key derivation function to stretch the password into a key // with the number of bits our cipher requires. This algorithm was derived from // the OpenSSL source. func (c rfc1423Algo) deriveKey(password, salt []byte) []byte { hash := md5.New() out := make([]byte, c.keySize) var digest []byte for i := 0; i < len(out); i += len(digest) { hash.Reset() hash.Write(digest) hash.Write(password) hash.Write(salt) digest = hash.Sum(digest[:0]) copy(out[i:], digest) } return out } // IsEncryptedPEMBlock returns if the PEM block is password encrypted. func IsEncryptedPEMBlock(b *pem.Block) bool { _, ok := b.Headers["DEK-Info"] return ok } // IncorrectPasswordError is returned when an incorrect password is detected. var IncorrectPasswordError = errors.New("x509: decryption password incorrect") // DecryptPEMBlock takes a password encrypted PEM block and the password used to // encrypt it and returns a slice of decrypted DER encoded bytes. It inspects // the DEK-Info header to determine the algorithm used for decryption. If no // DEK-Info header is present, an error is returned. If an incorrect password // is detected an IncorrectPasswordError is returned. func DecryptPEMBlock(b *pem.Block, password []byte) ([]byte, error) { dek, ok := b.Headers["DEK-Info"] if !ok { return nil, errors.New("x509: no DEK-Info header in block") } idx := strings.Index(dek, ",") if idx == -1 { return nil, errors.New("x509: malformed DEK-Info header") } mode, hexIV := dek[:idx], dek[idx+1:] ciph := cipherByName(mode) if ciph == nil { return nil, errors.New("x509: unknown encryption mode") } iv, err := hex.DecodeString(hexIV) if err != nil { return nil, err } if len(iv) != ciph.blockSize { return nil, errors.New("x509: incorrect IV size") } // Based on the OpenSSL implementation. The salt is the first 8 bytes // of the initialization vector. key := ciph.deriveKey(password, iv[:8]) block, err := ciph.cipherFunc(key) if err != nil { return nil, err } data := make([]byte, len(b.Bytes)) dec := cipher.NewCBCDecrypter(block, iv) dec.CryptBlocks(data, b.Bytes) // Blocks are padded using a scheme where the last n bytes of padding are all // equal to n. It can pad from 1 to blocksize bytes inclusive. See RFC 1423. // For example: // [x y z 2 2] // [x y 7 7 7 7 7 7 7] // If we detect a bad padding, we assume it is an invalid password. dlen := len(data) if dlen == 0 || dlen%ciph.blockSize != 0 { return nil, errors.New("x509: invalid padding") } last := int(data[dlen-1]) if dlen < last { return nil, IncorrectPasswordError } if last == 0 || last > ciph.blockSize { return nil, IncorrectPasswordError } for _, val := range data[dlen-last:] { if int(val) != last { return nil, IncorrectPasswordError } } return data[:dlen-last], nil } // EncryptPEMBlock returns a PEM block of the specified type holding the // given DER-encoded data encrypted with the specified algorithm and // password. func EncryptPEMBlock(rand io.Reader, blockType string, data, password []byte, alg PEMCipher) (*pem.Block, error) { ciph := cipherByKey(alg) if ciph == nil { return nil, errors.New("x509: unknown encryption mode") } iv := make([]byte, ciph.blockSize) if _, err := io.ReadFull(rand, iv); err != nil { return nil, errors.New("x509: cannot generate IV: " + err.Error()) } // The salt is the first 8 bytes of the initialization vector, // matching the key derivation in DecryptPEMBlock. key := ciph.deriveKey(password, iv[:8]) block, err := ciph.cipherFunc(key) if err != nil { return nil, err } enc := cipher.NewCBCEncrypter(block, iv) pad := ciph.blockSize - len(data)%ciph.blockSize encrypted := make([]byte, len(data), len(data)+pad) // We could save this copy by encrypting all the whole blocks in // the data separately, but it doesn't seem worth the additional // code. copy(encrypted, data) // See RFC 1423, section 1.1 for i := 0; i < pad; i++ { encrypted = append(encrypted, byte(pad)) } enc.CryptBlocks(encrypted, encrypted) return &pem.Block{ Type: blockType, Headers: map[string]string{ "Proc-Type": "4,ENCRYPTED", "DEK-Info": ciph.name + "," + hex.EncodeToString(iv), }, Bytes: encrypted, }, nil } func cipherByName(name string) *rfc1423Algo { for i := range rfc1423Algos { alg := &rfc1423Algos[i] if alg.name == name { return alg } } return nil } func cipherByKey(key PEMCipher) *rfc1423Algo { for i := range rfc1423Algos { alg := &rfc1423Algos[i] if alg.cipher == key { return alg } } return nil } go/src/pkg/crypto/x509/pem_decrypt_test.go0100644000000000000000000001765012412656737021006 0ustar00rootroot00000000000000// 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 x509 import ( "bytes" "crypto/rand" "encoding/base64" "encoding/pem" "testing" ) func TestDecrypt(t *testing.T) { for i, data := range testData { t.Logf("test %d. %s", i, data.kind) block, rest := pem.Decode(data.pemData) if len(rest) > 0 { t.Error("extra data") } der, err := DecryptPEMBlock(block, data.password) if err != nil { t.Error("decrypt failed: ", err) continue } if _, err := ParsePKCS1PrivateKey(der); err != nil { t.Error("invalid private key: ", err) } plainDER, err := base64.StdEncoding.DecodeString(data.plainDER) if err != nil { t.Fatal("cannot decode test DER data: ", err) } if !bytes.Equal(der, plainDER) { t.Error("data mismatch") } } } func TestEncrypt(t *testing.T) { for i, data := range testData { t.Logf("test %d. %s", i, data.kind) plainDER, err := base64.StdEncoding.DecodeString(data.plainDER) if err != nil { t.Fatal("cannot decode test DER data: ", err) } password := []byte("kremvax1") block, err := EncryptPEMBlock(rand.Reader, "RSA PRIVATE KEY", plainDER, password, data.kind) if err != nil { t.Error("encrypt: ", err) continue } if !IsEncryptedPEMBlock(block) { t.Error("PEM block does not appear to be encrypted") } if block.Type != "RSA PRIVATE KEY" { t.Errorf("unexpected block type; got %q want %q", block.Type, "RSA PRIVATE KEY") } if block.Headers["Proc-Type"] != "4,ENCRYPTED" { t.Errorf("block does not have correct Proc-Type header") } der, err := DecryptPEMBlock(block, password) if err != nil { t.Error("decrypt: ", err) continue } if !bytes.Equal(der, plainDER) { t.Errorf("data mismatch") } } } var testData = []struct { kind PEMCipher password []byte pemData []byte plainDER string }{ { kind: PEMCipherDES, password: []byte("asdf"), pemData: []byte(` -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-CBC,34F09A4FC8DE22B5 WXxy8kbZdiZvANtKvhmPBLV7eVFj2A5z6oAxvI9KGyhG0ZK0skfnt00C24vfU7m5 ICXeoqP67lzJ18xCzQfHjDaBNs53DSDT+Iz4e8QUep1xQ30+8QKX2NA2coee3nwc 6oM1cuvhNUDemBH2i3dKgMVkfaga0zQiiOq6HJyGSncCMSruQ7F9iWEfRbFcxFCx qtHb1kirfGKEtgWTF+ynyco6+2gMXNu70L7nJcnxnV/RLFkHt7AUU1yrclxz7eZz XOH9VfTjb52q/I8Suozq9coVQwg4tXfIoYUdT//O+mB7zJb9HI9Ps77b9TxDE6Gm 4C9brwZ3zg2vqXcwwV6QRZMtyll9rOpxkbw6NPlpfBqkc3xS51bbxivbO/Nve4KD r12ymjFNF4stXCfJnNqKoZ50BHmEEUDu5Wb0fpVn82XrGw7CYc4iug== -----END RSA PRIVATE KEY-----`), plainDER: ` MIIBPAIBAAJBAPASZe+tCPU6p80AjHhDkVsLYa51D35e/YGa8QcZyooeZM8EHozo KD0fNiKI+53bHdy07N+81VQ8/ejPcRoXPlsCAwEAAQJBAMTxIuSq27VpR+zZ7WJf c6fvv1OBvpMZ0/d1pxL/KnOAgq2rD5hDtk9b0LGhTPgQAmrrMTKuSeGoIuYE+gKQ QvkCIQD+GC1m+/do+QRurr0uo46Kx1LzLeSCrjBk34wiOp2+dwIhAPHfTLRXS2fv 7rljm0bYa4+eDZpz+E8RcXEgzhhvcQQ9AiAI5eHZJGOyml3MXnQjiPi55WcDOw0w glcRgT6QCEtz2wIhANSyqaFtosIkHKqrDUGfz/bb5tqMYTAnBruVPaf/WEOBAiEA 9xORWeRG1tRpso4+dYy4KdDkuLPIO01KY6neYGm3BCM=`, }, { kind: PEMCipher3DES, password: []byte("asdf"), pemData: []byte(` -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,C1F4A6A03682C2C7 0JqVdBEH6iqM7drTkj+e2W/bE3LqakaiWhb9WUVonFkhyu8ca/QzebY3b5gCvAZQ YwBvDcT/GHospKqPx+cxDHJNsUASDZws6bz8ZXWJGwZGExKzr0+Qx5fgXn44Ms3x 8g1ENFuTXtxo+KoNK0zuAMAqp66Llcds3Fjl4XR18QaD0CrVNAfOdgATWZm5GJxk Fgx5f84nT+/ovvreG+xeOzWgvtKo0UUZVrhGOgfKLpa57adumcJ6SkUuBtEFpZFB ldw5w7WC7d13x2LsRkwo8ZrDKgIV+Y9GNvhuCCkTzNP0V3gNeJpd201HZHR+9n3w 3z0VjR/MGqsfcy1ziEWMNOO53At3zlG6zP05aHMnMcZoVXadEK6L1gz++inSSDCq gI0UJP4e3JVB7AkgYymYAwiYALAkoEIuanxoc50njJk= -----END RSA PRIVATE KEY-----`), plainDER: ` MIIBOwIBAAJBANOCXKdoNS/iP/MAbl9cf1/SF3P+Ns7ZeNL27CfmDh0O6Zduaax5 NBiumd2PmjkaCu7lQ5JOibHfWn+xJsc3kw0CAwEAAQJANX/W8d1Q/sCqzkuAn4xl B5a7qfJWaLHndu1QRLNTRJPn0Ee7OKJ4H0QKOhQM6vpjRrz+P2u9thn6wUxoPsef QQIhAP/jCkfejFcy4v15beqKzwz08/tslVjF+Yq41eJGejmxAiEA05pMoqfkyjcx fyvGhpoOyoCp71vSGUfR2I9CR65oKh0CIC1Msjs66LlfJtQctRq6bCEtFCxEcsP+ eEjYo/Sk6WphAiEAxpgWPMJeU/shFT28gS+tmhjPZLpEoT1qkVlC14u0b3ECIQDX tZZZxCtPAm7shftEib0VU77Lk8MsXJcx2C4voRsjEw==`, }, { kind: PEMCipherAES128, password: []byte("asdf"), pemData: []byte(` -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-128-CBC,D4492E793FC835CC038A728ED174F78A EyfQSzXSjv6BaNH+NHdXRlkHdimpF9izWlugVJAPApgXrq5YldPe2aGIOFXyJ+QE ZIG20DYqaPzJRjTEbPNZ6Es0S2JJ5yCpKxwJuDkgJZKtF39Q2i36JeGbSZQIuWJE GZbBpf1jDH/pr0iGonuAdl2PCCZUiy+8eLsD2tyviHUkFLOB+ykYoJ5t8ngZ/B6D 33U43LLb7+9zD4y3Q9OVHqBFGyHcxCY9+9Qh4ZnFp7DTf6RY5TNEvE3s4g6aDpBs 3NbvRVvYTgs8K9EPk4K+5R+P2kD8J8KvEIGxVa1vz8QoCJ/jr7Ka2rvNgPCex5/E 080LzLHPCrXKdlr/f50yhNWq08ZxMWQFkui+FDHPDUaEELKAXV8/5PDxw80Rtybo AVYoCVIbZXZCuCO81op8UcOgEpTtyU5Lgh3Mw5scQL0= -----END RSA PRIVATE KEY-----`), plainDER: ` MIIBOgIBAAJBAMBlj5FxYtqbcy8wY89d/S7n0+r5MzD9F63BA/Lpl78vQKtdJ5dT cDGh/rBt1ufRrNp0WihcmZi7Mpl/3jHjiWECAwEAAQJABNOHYnKhtDIqFYj1OAJ3 k3GlU0OlERmIOoeY/cL2V4lgwllPBEs7r134AY4wMmZSBUj8UR/O4SNO668ElKPE cQIhAOuqY7/115x5KCdGDMWi+jNaMxIvI4ETGwV40ykGzqlzAiEA0P9oEC3m9tHB kbpjSTxaNkrXxDgdEOZz8X0uOUUwHNsCIAwzcSCiGLyYJTULUmP1ESERfW1mlV78 XzzESaJpIM/zAiBQkSTcl9VhcJreQqvjn5BnPZLP4ZHS4gPwJAGdsj5J4QIhAOVR B3WlRNTXR2WsJ5JdByezg9xzdXzULqmga0OE339a`, }, { kind: PEMCipherAES192, password: []byte("asdf"), pemData: []byte(` -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-192-CBC,E2C9FB02BCA23ADE1829F8D8BC5F5369 cqVslvHqDDM6qwU6YjezCRifXmKsrgEev7ng6Qs7UmDJOpHDgJQZI9fwMFUhIyn5 FbCu1SHkLMW52Ld3CuEqMnzWMlhPrW8tFvUOrMWPYSisv7nNq88HobZEJcUNL2MM Y15XmHW6IJwPqhKyLHpWXyOCVEh4ODND2nV15PCoi18oTa475baxSk7+1qH7GuIs Rb7tshNTMqHbCpyo9Rn3UxeFIf9efdl8YLiMoIqc7J8E5e9VlbeQSdLMQOgDAQJG ReUtTw8exmKsY4gsSjhkg5uiw7/ZB1Ihto0qnfQJgjGc680qGkT1d6JfvOfeYAk6 xn5RqS/h8rYAYm64KnepfC9vIujo4NqpaREDmaLdX5MJPQ+SlytITQvgUsUq3q/t Ss85xjQEZH3hzwjQqdJvmA4hYP6SUjxYpBM+02xZ1Xw= -----END RSA PRIVATE KEY-----`), plainDER: ` MIIBOwIBAAJBAMGcRrZiNNmtF20zyS6MQ7pdGx17aFDl+lTl+qnLuJRUCMUG05xs OmxmL/O1Qlf+bnqR8Bgg65SfKg21SYuLhiMCAwEAAQJBAL94uuHyO4wux2VC+qpj IzPykjdU7XRcDHbbvksf4xokSeUFjjD3PB0Qa83M94y89ZfdILIqS9x5EgSB4/lX qNkCIQD6cCIqLfzq/lYbZbQgAAjpBXeQVYsbvVtJrPrXJAlVVQIhAMXpDKMeFPMn J0g2rbx1gngx0qOa5r5iMU5w/noN4W2XAiBjf+WzCG5yFvazD+dOx3TC0A8+4x3P uZ3pWbaXf5PNuQIgAcdXarvhelH2w2piY1g3BPeFqhzBSCK/yLGxR82KIh8CIQDD +qGKsd09NhQ/G27y/DARzOYtml1NvdmCQAgsDIIOLA==`, }, { kind: PEMCipherAES256, password: []byte("asdf"), pemData: []byte(` -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-256-CBC,8E7ED5CD731902CE938957A886A5FFBD 4Mxr+KIzRVwoOP0wwq6caSkvW0iS+GE2h2Ov/u+n9ZTMwL83PRnmjfjzBgfRZLVf JFPXxUK26kMNpIdssNnqGOds+DhB+oSrsNKoxgxSl5OBoYv9eJTVYm7qOyAFIsjr DRKAcjYCmzfesr7PVTowwy0RtHmYwyXMGDlAzzZrEvaiySFFmMyKKvtoavwaFoc7 Pz3RZScwIuubzTGJ1x8EzdffYOsdCa9Mtgpp3L136+23dOd6L/qK2EG2fzrJSHs/ 2XugkleBFSMKzEp9mxXKRfa++uidQvMZTFLDK9w5YjrRvMBo/l2BoZIsq0jAIE1N sv5Z/KwlX+3MDEpPQpUwGPlGGdLnjI3UZ+cjgqBcoMiNc6HfgbBgYJSU6aDSHuCk clCwByxWkBNgJ2GrkwNrF26v+bGJJJNR4SKouY1jQf0= -----END RSA PRIVATE KEY-----`), plainDER: ` MIIBOgIBAAJBAKy3GFkstoCHIEeUU/qO8207m8WSrjksR+p9B4tf1w5k+2O1V/GY AQ5WFCApItcOkQe/I0yZZJk/PmCqMzSxrc8CAwEAAQJAOCAz0F7AW9oNelVQSP8F Sfzx7O1yom+qWyAQQJF/gFR11gpf9xpVnnyu1WxIRnDUh1LZwUsjwlDYb7MB74id oQIhANPcOiLwOPT4sIUpRM5HG6BF1BI7L77VpyGVk8xNP7X/AiEA0LMHZtk4I+lJ nClgYp4Yh2JZ1Znbu7IoQMCEJCjwKDECIGd8Dzm5tViTkUW6Hs3Tlf73nNs65duF aRnSglss8I3pAiEAonEnKruawgD8RavDFR+fUgmQiPz4FnGGeVgfwpGG1JECIBYq PXHYtPqxQIbD2pScR5qum7iGUh11lEUPkmt+2uqS`, }, { // generated with: // openssl genrsa -aes128 -passout pass:asdf -out server.orig.key 128 kind: PEMCipherAES128, password: []byte("asdf"), pemData: []byte(` -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-128-CBC,74611ABC2571AF11B1BF9B69E62C89E7 6ei/MlytjE0FFgZOGQ+jrwomKfpl8kdefeE0NSt/DMRrw8OacHAzBNi3pPEa0eX3 eND9l7C9meCirWovjj9QWVHrXyugFuDIqgdhQ8iHTgCfF3lrmcttVrbIfMDw+smD hTP8O1mS/MHl92NE0nhv0w== -----END RSA PRIVATE KEY-----`), plainDER: ` MGMCAQACEQC6ssxmYuauuHGOCDAI54RdAgMBAAECEQCWIn6Yv2O+kBcDF7STctKB AgkA8SEfu/2i3g0CCQDGNlXbBHX7kQIIK3Ww5o0cYbECCQDCimPb0dYGsQIIeQ7A jryIst8=`, }, } go/src/pkg/crypto/x509/pkcs1.go0100644000000000000000000000560712412656737016454 0ustar00rootroot00000000000000// Copyright 2011 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 x509 import ( "crypto/rsa" "encoding/asn1" "errors" "math/big" ) // pkcs1PrivateKey is a structure which mirrors the PKCS#1 ASN.1 for an RSA private key. type pkcs1PrivateKey struct { Version int N *big.Int E int D *big.Int P *big.Int Q *big.Int // We ignore these values, if present, because rsa will calculate them. Dp *big.Int `asn1:"optional"` Dq *big.Int `asn1:"optional"` Qinv *big.Int `asn1:"optional"` AdditionalPrimes []pkcs1AdditionalRSAPrime `asn1:"optional,omitempty"` } type pkcs1AdditionalRSAPrime struct { Prime *big.Int // We ignore these values because rsa will calculate them. Exp *big.Int Coeff *big.Int } // ParsePKCS1PrivateKey returns an RSA private key from its ASN.1 PKCS#1 DER encoded form. func ParsePKCS1PrivateKey(der []byte) (key *rsa.PrivateKey, err error) { var priv pkcs1PrivateKey rest, err := asn1.Unmarshal(der, &priv) if len(rest) > 0 { err = asn1.SyntaxError{Msg: "trailing data"} return } if err != nil { return } if priv.Version > 1 { return nil, errors.New("x509: unsupported private key version") } if priv.N.Sign() <= 0 || priv.D.Sign() <= 0 || priv.P.Sign() <= 0 || priv.Q.Sign() <= 0 { return nil, errors.New("x509: private key contains zero or negative value") } key = new(rsa.PrivateKey) key.PublicKey = rsa.PublicKey{ E: priv.E, N: priv.N, } key.D = priv.D key.Primes = make([]*big.Int, 2+len(priv.AdditionalPrimes)) key.Primes[0] = priv.P key.Primes[1] = priv.Q for i, a := range priv.AdditionalPrimes { if a.Prime.Sign() <= 0 { return nil, errors.New("x509: private key contains zero or negative prime") } key.Primes[i+2] = a.Prime // We ignore the other two values because rsa will calculate // them as needed. } err = key.Validate() if err != nil { return nil, err } key.Precompute() return } // MarshalPKCS1PrivateKey converts a private key to ASN.1 DER encoded form. func MarshalPKCS1PrivateKey(key *rsa.PrivateKey) []byte { key.Precompute() version := 0 if len(key.Primes) > 2 { version = 1 } priv := pkcs1PrivateKey{ Version: version, N: key.N, E: key.PublicKey.E, D: key.D, P: key.Primes[0], Q: key.Primes[1], Dp: key.Precomputed.Dp, Dq: key.Precomputed.Dq, Qinv: key.Precomputed.Qinv, } priv.AdditionalPrimes = make([]pkcs1AdditionalRSAPrime, len(key.Precomputed.CRTValues)) for i, values := range key.Precomputed.CRTValues { priv.AdditionalPrimes[i].Prime = key.Primes[2+i] priv.AdditionalPrimes[i].Exp = values.Exp priv.AdditionalPrimes[i].Coeff = values.Coeff } b, _ := asn1.Marshal(priv) return b } // rsaPublicKey reflects the ASN.1 structure of a PKCS#1 public key. type rsaPublicKey struct { N *big.Int E int } go/src/pkg/crypto/x509/pkcs8.go0100644000000000000000000000314612412656737016457 0ustar00rootroot00000000000000// Copyright 2011 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 x509 import ( "crypto/x509/pkix" "encoding/asn1" "errors" "fmt" ) // pkcs8 reflects an ASN.1, PKCS#8 PrivateKey. See // ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-8/pkcs-8v1_2.asn // and RFC5208. type pkcs8 struct { Version int Algo pkix.AlgorithmIdentifier PrivateKey []byte // optional attributes omitted. } // ParsePKCS8PrivateKey parses an unencrypted, PKCS#8 private key. See // http://www.rsa.com/rsalabs/node.asp?id=2130 and RFC5208. func ParsePKCS8PrivateKey(der []byte) (key interface{}, err error) { var privKey pkcs8 if _, err := asn1.Unmarshal(der, &privKey); err != nil { return nil, err } switch { case privKey.Algo.Algorithm.Equal(oidPublicKeyRSA): key, err = ParsePKCS1PrivateKey(privKey.PrivateKey) if err != nil { return nil, errors.New("x509: failed to parse RSA private key embedded in PKCS#8: " + err.Error()) } return key, nil case privKey.Algo.Algorithm.Equal(oidPublicKeyECDSA): bytes := privKey.Algo.Parameters.FullBytes namedCurveOID := new(asn1.ObjectIdentifier) if _, err := asn1.Unmarshal(bytes, namedCurveOID); err != nil { namedCurveOID = nil } key, err = parseECPrivateKey(namedCurveOID, privKey.PrivateKey) if err != nil { return nil, errors.New("x509: failed to parse EC private key embedded in PKCS#8: " + err.Error()) } return key, nil default: return nil, fmt.Errorf("x509: PKCS#8 wrapping contained private key with unknown algorithm: %v", privKey.Algo.Algorithm) } } go/src/pkg/crypto/x509/pkcs8_test.go0100644000000000000000000000473612412656737017524 0ustar00rootroot00000000000000// Copyright 2011 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 x509 import ( "encoding/hex" "testing" ) var pkcs8RSAPrivateKeyHex = `30820278020100300d06092a864886f70d0101010500048202623082025e02010002818100cfb1b5bf9685ffa97b4f99df4ff122b70e59ac9b992f3bc2b3dde17d53c1a34928719b02e8fd17839499bfbd515bd6ef99c7a1c47a239718fe36bfd824c0d96060084b5f67f0273443007a24dfaf5634f7772c9346e10eb294c2306671a5a5e719ae24b4de467291bc571014b0e02dec04534d66a9bb171d644b66b091780e8d020301000102818100b595778383c4afdbab95d2bfed12b3f93bb0a73a7ad952f44d7185fd9ec6c34de8f03a48770f2009c8580bcd275e9632714e9a5e3f32f29dc55474b2329ff0ebc08b3ffcb35bc96e6516b483df80a4a59cceb71918cbabf91564e64a39d7e35dce21cb3031824fdbc845dba6458852ec16af5dddf51a8397a8797ae0337b1439024100ea0eb1b914158c70db39031dd8904d6f18f408c85fbbc592d7d20dee7986969efbda081fdf8bc40e1b1336d6b638110c836bfdc3f314560d2e49cd4fbde1e20b024100e32a4e793b574c9c4a94c8803db5152141e72d03de64e54ef2c8ed104988ca780cd11397bc359630d01b97ebd87067c5451ba777cf045ca23f5912f1031308c702406dfcdbbd5a57c9f85abc4edf9e9e29153507b07ce0a7ef6f52e60dcfebe1b8341babd8b789a837485da6c8d55b29bbb142ace3c24a1f5b54b454d01b51e2ad03024100bd6a2b60dee01e1b3bfcef6a2f09ed027c273cdbbaf6ba55a80f6dcc64e4509ee560f84b4f3e076bd03b11e42fe71a3fdd2dffe7e0902c8584f8cad877cdc945024100aa512fa4ada69881f1d8bb8ad6614f192b83200aef5edf4811313d5ef30a86cbd0a90f7b025c71ea06ec6b34db6306c86b1040670fd8654ad7291d066d06d031` // Generated using: // openssl ecparam -genkey -name secp521r1 | openssl pkcs8 -topk8 -nocrypt var pkcs8ECPrivateKeyHex = `3081ed020100301006072a8648ce3d020106052b810400230481d53081d20201010441850d81618c5da1aec74c2eed608ba816038506975e6427237c2def150c96a3b13efbfa1f89f1be15cdf4d0ac26422e680e65a0ddd4ad3541ad76165fbf54d6e34ba18189038186000400da97bcedba1eb6d30aeb93c9f9a1454598fa47278df27d6f60ea73eb672d8dc528a9b67885b5b5dcef93c9824f7449ab512ee6a27e76142f56b94b474cfd697e810046c8ca70419365245c1d7d44d0db82c334073835d002232714548abbae6e5700f5ef315ee08b929d8581383dcf2d1c98c2f8a9fccbf79c9579f7b2fd8a90115ac2` func TestPKCS8(t *testing.T) { derBytes, _ := hex.DecodeString(pkcs8RSAPrivateKeyHex) if _, err := ParsePKCS8PrivateKey(derBytes); err != nil { t.Errorf("failed to decode PKCS8 with RSA private key: %s", err) } derBytes, _ = hex.DecodeString(pkcs8ECPrivateKeyHex) if _, err := ParsePKCS8PrivateKey(derBytes); err != nil { t.Errorf("failed to decode PKCS8 with EC private key: %s", err) } } go/src/pkg/crypto/x509/pkix0040755000000000000000000000000012412656737015773 5ustar00rootroot00000000000000go/src/pkg/crypto/x509/pkix/pkix.go0100644000000000000000000001242412412656737017354 0ustar00rootroot00000000000000// Copyright 2011 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 pkix contains shared, low level structures used for ASN.1 parsing // and serialization of X.509 certificates, CRL and OCSP. package pkix import ( "encoding/asn1" "math/big" "time" ) // AlgorithmIdentifier represents the ASN.1 structure of the same name. See RFC // 5280, section 4.1.1.2. type AlgorithmIdentifier struct { Algorithm asn1.ObjectIdentifier Parameters asn1.RawValue `asn1:"optional"` } type RDNSequence []RelativeDistinguishedNameSET type RelativeDistinguishedNameSET []AttributeTypeAndValue // AttributeTypeAndValue mirrors the ASN.1 structure of the same name in // http://tools.ietf.org/html/rfc5280#section-4.1.2.4 type AttributeTypeAndValue struct { Type asn1.ObjectIdentifier Value interface{} } // AttributeTypeAndValueSET represents a set of ASN.1 sequences of // AttributeTypeAndValue sequences from RFC 2986 (PKCS #10). type AttributeTypeAndValueSET struct { Type asn1.ObjectIdentifier Value [][]AttributeTypeAndValue `asn1:"set"` } // Extension represents the ASN.1 structure of the same name. See RFC // 5280, section 4.2. type Extension struct { Id asn1.ObjectIdentifier Critical bool `asn1:"optional"` Value []byte } // Name represents an X.509 distinguished name. This only includes the common // elements of a DN. Additional elements in the name are ignored. type Name struct { Country, Organization, OrganizationalUnit []string Locality, Province []string StreetAddress, PostalCode []string SerialNumber, CommonName string Names []AttributeTypeAndValue } func (n *Name) FillFromRDNSequence(rdns *RDNSequence) { for _, rdn := range *rdns { if len(rdn) == 0 { continue } atv := rdn[0] n.Names = append(n.Names, atv) value, ok := atv.Value.(string) if !ok { continue } t := atv.Type if len(t) == 4 && t[0] == 2 && t[1] == 5 && t[2] == 4 { switch t[3] { case 3: n.CommonName = value case 5: n.SerialNumber = value case 6: n.Country = append(n.Country, value) case 7: n.Locality = append(n.Locality, value) case 8: n.Province = append(n.Province, value) case 9: n.StreetAddress = append(n.StreetAddress, value) case 10: n.Organization = append(n.Organization, value) case 11: n.OrganizationalUnit = append(n.OrganizationalUnit, value) case 17: n.PostalCode = append(n.PostalCode, value) } } } } var ( oidCountry = []int{2, 5, 4, 6} oidOrganization = []int{2, 5, 4, 10} oidOrganizationalUnit = []int{2, 5, 4, 11} oidCommonName = []int{2, 5, 4, 3} oidSerialNumber = []int{2, 5, 4, 5} oidLocality = []int{2, 5, 4, 7} oidProvince = []int{2, 5, 4, 8} oidStreetAddress = []int{2, 5, 4, 9} oidPostalCode = []int{2, 5, 4, 17} ) // appendRDNs appends a relativeDistinguishedNameSET to the given RDNSequence // and returns the new value. The relativeDistinguishedNameSET contains an // attributeTypeAndValue for each of the given values. See RFC 5280, A.1, and // search for AttributeTypeAndValue. func appendRDNs(in RDNSequence, values []string, oid asn1.ObjectIdentifier) RDNSequence { if len(values) == 0 { return in } s := make([]AttributeTypeAndValue, len(values)) for i, value := range values { s[i].Type = oid s[i].Value = value } return append(in, s) } func (n Name) ToRDNSequence() (ret RDNSequence) { ret = appendRDNs(ret, n.Country, oidCountry) ret = appendRDNs(ret, n.Organization, oidOrganization) ret = appendRDNs(ret, n.OrganizationalUnit, oidOrganizationalUnit) ret = appendRDNs(ret, n.Locality, oidLocality) ret = appendRDNs(ret, n.Province, oidProvince) ret = appendRDNs(ret, n.StreetAddress, oidStreetAddress) ret = appendRDNs(ret, n.PostalCode, oidPostalCode) if len(n.CommonName) > 0 { ret = appendRDNs(ret, []string{n.CommonName}, oidCommonName) } if len(n.SerialNumber) > 0 { ret = appendRDNs(ret, []string{n.SerialNumber}, oidSerialNumber) } return ret } // CertificateList represents the ASN.1 structure of the same name. See RFC // 5280, section 5.1. Use Certificate.CheckCRLSignature to verify the // signature. type CertificateList struct { TBSCertList TBSCertificateList SignatureAlgorithm AlgorithmIdentifier SignatureValue asn1.BitString } // HasExpired reports whether now is past the expiry time of certList. func (certList *CertificateList) HasExpired(now time.Time) bool { return now.After(certList.TBSCertList.NextUpdate) } // TBSCertificateList represents the ASN.1 structure of the same name. See RFC // 5280, section 5.1. type TBSCertificateList struct { Raw asn1.RawContent Version int `asn1:"optional,default:2"` Signature AlgorithmIdentifier Issuer RDNSequence ThisUpdate time.Time NextUpdate time.Time RevokedCertificates []RevokedCertificate `asn1:"optional"` Extensions []Extension `asn1:"tag:0,optional,explicit"` } // RevokedCertificate represents the ASN.1 structure of the same name. See RFC // 5280, section 5.1. type RevokedCertificate struct { SerialNumber *big.Int RevocationTime time.Time Extensions []Extension `asn1:"optional"` } go/src/pkg/crypto/x509/root.go0100644000000000000000000000050712412656737016410 0ustar00rootroot00000000000000// 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 x509 import "sync" var ( once sync.Once systemRoots *CertPool ) func systemRootsPool() *CertPool { once.Do(initSystemRoots) return systemRoots } go/src/pkg/crypto/x509/root_cgo_darwin.go0100644000000000000000000000413412412656737020604 0ustar00rootroot00000000000000// Copyright 2011 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 cgo package x509 /* #cgo CFLAGS: -mmacosx-version-min=10.6 -D__MAC_OS_X_VERSION_MAX_ALLOWED=1060 #cgo LDFLAGS: -framework CoreFoundation -framework Security #include #include // FetchPEMRoots fetches the system's list of trusted X.509 root certificates. // // On success it returns 0 and fills pemRoots with a CFDataRef that contains the extracted root // certificates of the system. On failure, the function returns -1. // // Note: The CFDataRef returned in pemRoots must be released (using CFRelease) after // we've consumed its content. int FetchPEMRoots(CFDataRef *pemRoots) { if (pemRoots == NULL) { return -1; } CFArrayRef certs = NULL; OSStatus err = SecTrustCopyAnchorCertificates(&certs); if (err != noErr) { return -1; } CFMutableDataRef combinedData = CFDataCreateMutable(kCFAllocatorDefault, 0); int i, ncerts = CFArrayGetCount(certs); for (i = 0; i < ncerts; i++) { CFDataRef data = NULL; SecCertificateRef cert = (SecCertificateRef)CFArrayGetValueAtIndex(certs, i); if (cert == NULL) { continue; } // Note: SecKeychainItemExport is deprecated as of 10.7 in favor of SecItemExport. // Once we support weak imports via cgo we should prefer that, and fall back to this // for older systems. err = SecKeychainItemExport(cert, kSecFormatX509Cert, kSecItemPemArmour, NULL, &data); if (err != noErr) { continue; } if (data != NULL) { CFDataAppendBytes(combinedData, CFDataGetBytePtr(data), CFDataGetLength(data)); CFRelease(data); } } CFRelease(certs); *pemRoots = combinedData; return 0; } */ import "C" import "unsafe" func initSystemRoots() { roots := NewCertPool() var data C.CFDataRef = nil err := C.FetchPEMRoots(&data) if err == -1 { return } defer C.CFRelease(C.CFTypeRef(data)) buf := C.GoBytes(unsafe.Pointer(C.CFDataGetBytePtr(data)), C.int(C.CFDataGetLength(data))) roots.AppendCertsFromPEM(buf) systemRoots = roots } go/src/pkg/crypto/x509/root_darwin.go0100644000000000000000000000116712412656737017757 0ustar00rootroot00000000000000// Copyright 2013 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 x509 import "os/exec" func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate, err error) { return nil, nil } func execSecurityRoots() (*CertPool, error) { cmd := exec.Command("/usr/bin/security", "find-certificate", "-a", "-p", "/System/Library/Keychains/SystemRootCertificates.keychain") data, err := cmd.Output() if err != nil { return nil, err } roots := NewCertPool() roots.AppendCertsFromPEM(data) return roots, nil } go/src/pkg/crypto/x509/root_darwin_test.go0100644000000000000000000000235612412656737021017 0ustar00rootroot00000000000000package x509 import "testing" func TestSystemRoots(t *testing.T) { sysRoots := systemRootsPool() // actual system roots execRoots, err := execSecurityRoots() // non-cgo roots if err != nil { t.Fatalf("failed to read system roots: %v", err) } for _, tt := range []*CertPool{sysRoots, execRoots} { if tt == nil { t.Fatal("no system roots") } // On Mavericks, there are 212 bundled certs; require only // 150 here, since this is just a sanity check, and the // exact number will vary over time. if want, have := 150, len(tt.certs); have < want { t.Fatalf("want at least %d system roots, have %d", want, have) } } // Check that the two cert pools are roughly the same; // |A∩B| > max(|A|, |B|) / 2 should be a reasonably robust check. isect := make(map[string]bool, len(sysRoots.certs)) for _, c := range sysRoots.certs { isect[string(c.Raw)] = true } have := 0 for _, c := range execRoots.certs { if isect[string(c.Raw)] { have++ } } var want int if nsys, nexec := len(sysRoots.certs), len(execRoots.certs); nsys > nexec { want = nsys / 2 } else { want = nexec / 2 } if have < want { t.Errorf("insufficent overlap between cgo and non-cgo roots; want at least %d, have %d", want, have) } } go/src/pkg/crypto/x509/root_nocgo_darwin.go0100644000000000000000000000037712412656737021146 0ustar00rootroot00000000000000// Copyright 2013 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 !cgo package x509 func initSystemRoots() { systemRoots, _ = execSecurityRoots() } go/src/pkg/crypto/x509/root_plan9.go0100644000000000000000000000140412412656737017510 0ustar00rootroot00000000000000// 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. // +build plan9 package x509 import "io/ioutil" // Possible certificate files; stop after finding one. var certFiles = []string{ "/sys/lib/tls/ca.pem", } func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate, err error) { return nil, nil } func initSystemRoots() { roots := NewCertPool() for _, file := range certFiles { data, err := ioutil.ReadFile(file) if err == nil { roots.AppendCertsFromPEM(data) systemRoots = roots return } } // All of the files failed to load. systemRoots will be nil which will // trigger a specific error at verification time. } go/src/pkg/crypto/x509/root_unix.go0100644000000000000000000000211112412656737017444 0ustar00rootroot00000000000000// Copyright 2011 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 dragonfly freebsd linux nacl netbsd openbsd solaris package x509 import "io/ioutil" // Possible certificate files; stop after finding one. var certFiles = []string{ "/etc/ssl/certs/ca-certificates.crt", // Debian/Ubuntu/Gentoo etc. "/etc/pki/tls/certs/ca-bundle.crt", // Fedora/RHEL "/etc/ssl/ca-bundle.pem", // OpenSUSE "/etc/ssl/cert.pem", // OpenBSD "/usr/local/share/certs/ca-root-nss.crt", // FreeBSD/DragonFly } func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate, err error) { return nil, nil } func initSystemRoots() { roots := NewCertPool() for _, file := range certFiles { data, err := ioutil.ReadFile(file) if err == nil { roots.AppendCertsFromPEM(data) systemRoots = roots return } } // All of the files failed to load. systemRoots will be nil which will // trigger a specific error at verification time. } go/src/pkg/crypto/x509/root_windows.go0100644000000000000000000001672212412656737020170 0ustar00rootroot00000000000000// 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 x509 import ( "errors" "syscall" "unsafe" ) // Creates a new *syscall.CertContext representing the leaf certificate in an in-memory // certificate store containing itself and all of the intermediate certificates specified // in the opts.Intermediates CertPool. // // A pointer to the in-memory store is available in the returned CertContext's Store field. // The store is automatically freed when the CertContext is freed using // syscall.CertFreeCertificateContext. func createStoreContext(leaf *Certificate, opts *VerifyOptions) (*syscall.CertContext, error) { var storeCtx *syscall.CertContext leafCtx, err := syscall.CertCreateCertificateContext(syscall.X509_ASN_ENCODING|syscall.PKCS_7_ASN_ENCODING, &leaf.Raw[0], uint32(len(leaf.Raw))) if err != nil { return nil, err } defer syscall.CertFreeCertificateContext(leafCtx) handle, err := syscall.CertOpenStore(syscall.CERT_STORE_PROV_MEMORY, 0, 0, syscall.CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG, 0) if err != nil { return nil, err } defer syscall.CertCloseStore(handle, 0) err = syscall.CertAddCertificateContextToStore(handle, leafCtx, syscall.CERT_STORE_ADD_ALWAYS, &storeCtx) if err != nil { return nil, err } if opts.Intermediates != nil { for _, intermediate := range opts.Intermediates.certs { ctx, err := syscall.CertCreateCertificateContext(syscall.X509_ASN_ENCODING|syscall.PKCS_7_ASN_ENCODING, &intermediate.Raw[0], uint32(len(intermediate.Raw))) if err != nil { return nil, err } err = syscall.CertAddCertificateContextToStore(handle, ctx, syscall.CERT_STORE_ADD_ALWAYS, nil) syscall.CertFreeCertificateContext(ctx) if err != nil { return nil, err } } } return storeCtx, nil } // extractSimpleChain extracts the final certificate chain from a CertSimpleChain. func extractSimpleChain(simpleChain **syscall.CertSimpleChain, count int) (chain []*Certificate, err error) { if simpleChain == nil || count == 0 { return nil, errors.New("x509: invalid simple chain") } simpleChains := (*[1 << 20]*syscall.CertSimpleChain)(unsafe.Pointer(simpleChain))[:] lastChain := simpleChains[count-1] elements := (*[1 << 20]*syscall.CertChainElement)(unsafe.Pointer(lastChain.Elements))[:] for i := 0; i < int(lastChain.NumElements); i++ { // Copy the buf, since ParseCertificate does not create its own copy. cert := elements[i].CertContext encodedCert := (*[1 << 20]byte)(unsafe.Pointer(cert.EncodedCert))[:] buf := make([]byte, cert.Length) copy(buf, encodedCert[:]) parsedCert, err := ParseCertificate(buf) if err != nil { return nil, err } chain = append(chain, parsedCert) } return chain, nil } // checkChainTrustStatus checks the trust status of the certificate chain, translating // any errors it finds into Go errors in the process. func checkChainTrustStatus(c *Certificate, chainCtx *syscall.CertChainContext) error { if chainCtx.TrustStatus.ErrorStatus != syscall.CERT_TRUST_NO_ERROR { status := chainCtx.TrustStatus.ErrorStatus switch status { case syscall.CERT_TRUST_IS_NOT_TIME_VALID: return CertificateInvalidError{c, Expired} default: return UnknownAuthorityError{c, nil, nil} } } return nil } // checkChainSSLServerPolicy checks that the certificate chain in chainCtx is valid for // use as a certificate chain for a SSL/TLS server. func checkChainSSLServerPolicy(c *Certificate, chainCtx *syscall.CertChainContext, opts *VerifyOptions) error { servernamep, err := syscall.UTF16PtrFromString(opts.DNSName) if err != nil { return err } sslPara := &syscall.SSLExtraCertChainPolicyPara{ AuthType: syscall.AUTHTYPE_SERVER, ServerName: servernamep, } sslPara.Size = uint32(unsafe.Sizeof(*sslPara)) para := &syscall.CertChainPolicyPara{ ExtraPolicyPara: uintptr(unsafe.Pointer(sslPara)), } para.Size = uint32(unsafe.Sizeof(*para)) status := syscall.CertChainPolicyStatus{} err = syscall.CertVerifyCertificateChainPolicy(syscall.CERT_CHAIN_POLICY_SSL, chainCtx, para, &status) if err != nil { return err } // TODO(mkrautz): use the lChainIndex and lElementIndex fields // of the CertChainPolicyStatus to provide proper context, instead // using c. if status.Error != 0 { switch status.Error { case syscall.CERT_E_EXPIRED: return CertificateInvalidError{c, Expired} case syscall.CERT_E_CN_NO_MATCH: return HostnameError{c, opts.DNSName} case syscall.CERT_E_UNTRUSTEDROOT: return UnknownAuthorityError{c, nil, nil} default: return UnknownAuthorityError{c, nil, nil} } } return nil } // systemVerify is like Verify, except that it uses CryptoAPI calls // to build certificate chains and verify them. func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate, err error) { hasDNSName := opts != nil && len(opts.DNSName) > 0 storeCtx, err := createStoreContext(c, opts) if err != nil { return nil, err } defer syscall.CertFreeCertificateContext(storeCtx) para := new(syscall.CertChainPara) para.Size = uint32(unsafe.Sizeof(*para)) // If there's a DNSName set in opts, assume we're verifying // a certificate from a TLS server. if hasDNSName { oids := []*byte{ &syscall.OID_PKIX_KP_SERVER_AUTH[0], // Both IE and Chrome allow certificates with // Server Gated Crypto as well. Some certificates // in the wild require them. &syscall.OID_SERVER_GATED_CRYPTO[0], &syscall.OID_SGC_NETSCAPE[0], } para.RequestedUsage.Type = syscall.USAGE_MATCH_TYPE_OR para.RequestedUsage.Usage.Length = uint32(len(oids)) para.RequestedUsage.Usage.UsageIdentifiers = &oids[0] } else { para.RequestedUsage.Type = syscall.USAGE_MATCH_TYPE_AND para.RequestedUsage.Usage.Length = 0 para.RequestedUsage.Usage.UsageIdentifiers = nil } var verifyTime *syscall.Filetime if opts != nil && !opts.CurrentTime.IsZero() { ft := syscall.NsecToFiletime(opts.CurrentTime.UnixNano()) verifyTime = &ft } // CertGetCertificateChain will traverse Windows's root stores // in an attempt to build a verified certificate chain. Once // it has found a verified chain, it stops. MSDN docs on // CERT_CHAIN_CONTEXT: // // When a CERT_CHAIN_CONTEXT is built, the first simple chain // begins with an end certificate and ends with a self-signed // certificate. If that self-signed certificate is not a root // or otherwise trusted certificate, an attempt is made to // build a new chain. CTLs are used to create the new chain // beginning with the self-signed certificate from the original // chain as the end certificate of the new chain. This process // continues building additional simple chains until the first // self-signed certificate is a trusted certificate or until // an additional simple chain cannot be built. // // The result is that we'll only get a single trusted chain to // return to our caller. var chainCtx *syscall.CertChainContext err = syscall.CertGetCertificateChain(syscall.Handle(0), storeCtx, verifyTime, storeCtx.Store, para, 0, 0, &chainCtx) if err != nil { return nil, err } defer syscall.CertFreeCertificateChain(chainCtx) err = checkChainTrustStatus(c, chainCtx) if err != nil { return nil, err } if hasDNSName { err = checkChainSSLServerPolicy(c, chainCtx, opts) if err != nil { return nil, err } } chain, err := extractSimpleChain(chainCtx.Chains, int(chainCtx.ChainCount)) if err != nil { return nil, err } chains = append(chains, chain) return chains, nil } func initSystemRoots() { } go/src/pkg/crypto/x509/sec1.go0100644000000000000000000000511212412656737016255 0ustar00rootroot00000000000000// 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 x509 import ( "crypto/ecdsa" "crypto/elliptic" "encoding/asn1" "errors" "fmt" "math/big" ) const ecPrivKeyVersion = 1 // ecPrivateKey reflects an ASN.1 Elliptic Curve Private Key Structure. // References: // RFC5915 // SEC1 - http://www.secg.org/download/aid-780/sec1-v2.pdf // Per RFC5915 the NamedCurveOID is marked as ASN.1 OPTIONAL, however in // most cases it is not. type ecPrivateKey struct { Version int PrivateKey []byte NamedCurveOID asn1.ObjectIdentifier `asn1:"optional,explicit,tag:0"` PublicKey asn1.BitString `asn1:"optional,explicit,tag:1"` } // ParseECPrivateKey parses an ASN.1 Elliptic Curve Private Key Structure. func ParseECPrivateKey(der []byte) (key *ecdsa.PrivateKey, err error) { return parseECPrivateKey(nil, der) } // MarshalECPrivateKey marshals an EC private key into ASN.1, DER format. func MarshalECPrivateKey(key *ecdsa.PrivateKey) ([]byte, error) { oid, ok := oidFromNamedCurve(key.Curve) if !ok { return nil, errors.New("x509: unknown elliptic curve") } return asn1.Marshal(ecPrivateKey{ Version: 1, PrivateKey: key.D.Bytes(), NamedCurveOID: oid, PublicKey: asn1.BitString{Bytes: elliptic.Marshal(key.Curve, key.X, key.Y)}, }) } // parseECPrivateKey parses an ASN.1 Elliptic Curve Private Key Structure. // The OID for the named curve may be provided from another source (such as // the PKCS8 container) - if it is provided then use this instead of the OID // that may exist in the EC private key structure. func parseECPrivateKey(namedCurveOID *asn1.ObjectIdentifier, der []byte) (key *ecdsa.PrivateKey, err error) { var privKey ecPrivateKey if _, err := asn1.Unmarshal(der, &privKey); err != nil { return nil, errors.New("x509: failed to parse EC private key: " + err.Error()) } if privKey.Version != ecPrivKeyVersion { return nil, fmt.Errorf("x509: unknown EC private key version %d", privKey.Version) } var curve elliptic.Curve if namedCurveOID != nil { curve = namedCurveFromOID(*namedCurveOID) } else { curve = namedCurveFromOID(privKey.NamedCurveOID) } if curve == nil { return nil, errors.New("x509: unknown elliptic curve") } k := new(big.Int).SetBytes(privKey.PrivateKey) if k.Cmp(curve.Params().N) >= 0 { return nil, errors.New("x509: invalid elliptic curve private key value") } priv := new(ecdsa.PrivateKey) priv.Curve = curve priv.D = k priv.X, priv.Y = curve.ScalarBaseMult(privKey.PrivateKey) return priv, nil } go/src/pkg/crypto/x509/sec1_test.go0100644000000000000000000000212712412656737017317 0ustar00rootroot00000000000000// 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 x509 import ( "bytes" "encoding/hex" "testing" ) // Generated using: // openssl ecparam -genkey -name secp384r1 -outform PEM var ecPrivateKeyHex = `3081a40201010430bdb9839c08ee793d1157886a7a758a3c8b2a17a4df48f17ace57c72c56b4723cf21dcda21d4e1ad57ff034f19fcfd98ea00706052b81040022a16403620004feea808b5ee2429cfcce13c32160e1c960990bd050bb0fdf7222f3decd0a55008e32a6aa3c9062051c4cba92a7a3b178b24567412d43cdd2f882fa5addddd726fe3e208d2c26d733a773a597abb749714df7256ead5105fa6e7b3650de236b50` func TestParseECPrivateKey(t *testing.T) { derBytes, _ := hex.DecodeString(ecPrivateKeyHex) key, err := ParseECPrivateKey(derBytes) if err != nil { t.Errorf("failed to decode EC private key: %s", err) } serialized, err := MarshalECPrivateKey(key) if err != nil { t.Fatalf("failed to encode EC private key: %s", err) } if !bytes.Equal(serialized, derBytes) { t.Fatalf("serialized key differs: got %x, want %x", serialized, derBytes) } } go/src/pkg/crypto/x509/verify.go0100644000000000000000000003233212412656737016732 0ustar00rootroot00000000000000// Copyright 2011 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 x509 import ( "fmt" "net" "runtime" "strings" "time" "unicode/utf8" ) type InvalidReason int const ( // NotAuthorizedToSign results when a certificate is signed by another // which isn't marked as a CA certificate. NotAuthorizedToSign InvalidReason = iota // Expired results when a certificate has expired, based on the time // given in the VerifyOptions. Expired // CANotAuthorizedForThisName results when an intermediate or root // certificate has a name constraint which doesn't include the name // being checked. CANotAuthorizedForThisName // TooManyIntermediates results when a path length constraint is // violated. TooManyIntermediates // IncompatibleUsage results when the certificate's key usage indicates // that it may only be used for a different purpose. IncompatibleUsage ) // CertificateInvalidError results when an odd error occurs. Users of this // library probably want to handle all these errors uniformly. type CertificateInvalidError struct { Cert *Certificate Reason InvalidReason } func (e CertificateInvalidError) Error() string { switch e.Reason { case NotAuthorizedToSign: return "x509: certificate is not authorized to sign other certificates" case Expired: return "x509: certificate has expired or is not yet valid" case CANotAuthorizedForThisName: return "x509: a root or intermediate certificate is not authorized to sign in this domain" case TooManyIntermediates: return "x509: too many intermediates for path length constraint" case IncompatibleUsage: return "x509: certificate specifies an incompatible key usage" } return "x509: unknown error" } // HostnameError results when the set of authorized names doesn't match the // requested name. type HostnameError struct { Certificate *Certificate Host string } func (h HostnameError) Error() string { c := h.Certificate var valid string if ip := net.ParseIP(h.Host); ip != nil { // Trying to validate an IP if len(c.IPAddresses) == 0 { return "x509: cannot validate certificate for " + h.Host + " because it doesn't contain any IP SANs" } for _, san := range c.IPAddresses { if len(valid) > 0 { valid += ", " } valid += san.String() } } else { if len(c.DNSNames) > 0 { valid = strings.Join(c.DNSNames, ", ") } else { valid = c.Subject.CommonName } } return "x509: certificate is valid for " + valid + ", not " + h.Host } // UnknownAuthorityError results when the certificate issuer is unknown type UnknownAuthorityError struct { cert *Certificate // hintErr contains an error that may be helpful in determining why an // authority wasn't found. hintErr error // hintCert contains a possible authority certificate that was rejected // because of the error in hintErr. hintCert *Certificate } func (e UnknownAuthorityError) Error() string { s := "x509: certificate signed by unknown authority" if e.hintErr != nil { certName := e.hintCert.Subject.CommonName if len(certName) == 0 { if len(e.hintCert.Subject.Organization) > 0 { certName = e.hintCert.Subject.Organization[0] } certName = "serial:" + e.hintCert.SerialNumber.String() } s += fmt.Sprintf(" (possibly because of %q while trying to verify candidate authority certificate %q)", e.hintErr, certName) } return s } // SystemRootsError results when we fail to load the system root certificates. type SystemRootsError struct { } func (e SystemRootsError) Error() string { return "x509: failed to load system roots and no roots provided" } // VerifyOptions contains parameters for Certificate.Verify. It's a structure // because other PKIX verification APIs have ended up needing many options. type VerifyOptions struct { DNSName string Intermediates *CertPool Roots *CertPool // if nil, the system roots are used CurrentTime time.Time // if zero, the current time is used // KeyUsage specifies which Extended Key Usage values are acceptable. // An empty list means ExtKeyUsageServerAuth. Key usage is considered a // constraint down the chain which mirrors Windows CryptoAPI behaviour, // but not the spec. To accept any key usage, include ExtKeyUsageAny. KeyUsages []ExtKeyUsage } const ( leafCertificate = iota intermediateCertificate rootCertificate ) // isValid performs validity checks on the c. func (c *Certificate) isValid(certType int, currentChain []*Certificate, opts *VerifyOptions) error { now := opts.CurrentTime if now.IsZero() { now = time.Now() } if now.Before(c.NotBefore) || now.After(c.NotAfter) { return CertificateInvalidError{c, Expired} } if len(c.PermittedDNSDomains) > 0 { ok := false for _, domain := range c.PermittedDNSDomains { if opts.DNSName == domain || (strings.HasSuffix(opts.DNSName, domain) && len(opts.DNSName) >= 1+len(domain) && opts.DNSName[len(opts.DNSName)-len(domain)-1] == '.') { ok = true break } } if !ok { return CertificateInvalidError{c, CANotAuthorizedForThisName} } } // KeyUsage status flags are ignored. From Engineering Security, Peter // Gutmann: A European government CA marked its signing certificates as // being valid for encryption only, but no-one noticed. Another // European CA marked its signature keys as not being valid for // signatures. A different CA marked its own trusted root certificate // as being invalid for certificate signing. Another national CA // distributed a certificate to be used to encrypt data for the // country’s tax authority that was marked as only being usable for // digital signatures but not for encryption. Yet another CA reversed // the order of the bit flags in the keyUsage due to confusion over // encoding endianness, essentially setting a random keyUsage in // certificates that it issued. Another CA created a self-invalidating // certificate by adding a certificate policy statement stipulating // that the certificate had to be used strictly as specified in the // keyUsage, and a keyUsage containing a flag indicating that the RSA // encryption key could only be used for Diffie-Hellman key agreement. if certType == intermediateCertificate && (!c.BasicConstraintsValid || !c.IsCA) { return CertificateInvalidError{c, NotAuthorizedToSign} } if c.BasicConstraintsValid && c.MaxPathLen >= 0 { numIntermediates := len(currentChain) - 1 if numIntermediates > c.MaxPathLen { return CertificateInvalidError{c, TooManyIntermediates} } } return nil } // Verify attempts to verify c by building one or more chains from c to a // certificate in opts.Roots, using certificates in opts.Intermediates if // needed. If successful, it returns one or more chains where the first // element of the chain is c and the last element is from opts.Roots. // // WARNING: this doesn't do any revocation checking. func (c *Certificate) Verify(opts VerifyOptions) (chains [][]*Certificate, err error) { // Use Windows's own verification and chain building. if opts.Roots == nil && runtime.GOOS == "windows" { return c.systemVerify(&opts) } if opts.Roots == nil { opts.Roots = systemRootsPool() if opts.Roots == nil { return nil, SystemRootsError{} } } err = c.isValid(leafCertificate, nil, &opts) if err != nil { return } if len(opts.DNSName) > 0 { err = c.VerifyHostname(opts.DNSName) if err != nil { return } } candidateChains, err := c.buildChains(make(map[int][][]*Certificate), []*Certificate{c}, &opts) if err != nil { return } keyUsages := opts.KeyUsages if len(keyUsages) == 0 { keyUsages = []ExtKeyUsage{ExtKeyUsageServerAuth} } // If any key usage is acceptable then we're done. for _, usage := range keyUsages { if usage == ExtKeyUsageAny { chains = candidateChains return } } for _, candidate := range candidateChains { if checkChainForKeyUsage(candidate, keyUsages) { chains = append(chains, candidate) } } if len(chains) == 0 { err = CertificateInvalidError{c, IncompatibleUsage} } return } func appendToFreshChain(chain []*Certificate, cert *Certificate) []*Certificate { n := make([]*Certificate, len(chain)+1) copy(n, chain) n[len(chain)] = cert return n } func (c *Certificate) buildChains(cache map[int][][]*Certificate, currentChain []*Certificate, opts *VerifyOptions) (chains [][]*Certificate, err error) { possibleRoots, failedRoot, rootErr := opts.Roots.findVerifiedParents(c) for _, rootNum := range possibleRoots { root := opts.Roots.certs[rootNum] err = root.isValid(rootCertificate, currentChain, opts) if err != nil { continue } chains = append(chains, appendToFreshChain(currentChain, root)) } possibleIntermediates, failedIntermediate, intermediateErr := opts.Intermediates.findVerifiedParents(c) nextIntermediate: for _, intermediateNum := range possibleIntermediates { intermediate := opts.Intermediates.certs[intermediateNum] for _, cert := range currentChain { if cert == intermediate { continue nextIntermediate } } err = intermediate.isValid(intermediateCertificate, currentChain, opts) if err != nil { continue } var childChains [][]*Certificate childChains, ok := cache[intermediateNum] if !ok { childChains, err = intermediate.buildChains(cache, appendToFreshChain(currentChain, intermediate), opts) cache[intermediateNum] = childChains } chains = append(chains, childChains...) } if len(chains) > 0 { err = nil } if len(chains) == 0 && err == nil { hintErr := rootErr hintCert := failedRoot if hintErr == nil { hintErr = intermediateErr hintCert = failedIntermediate } err = UnknownAuthorityError{c, hintErr, hintCert} } return } func matchHostnames(pattern, host string) bool { if len(pattern) == 0 || len(host) == 0 { return false } patternParts := strings.Split(pattern, ".") hostParts := strings.Split(host, ".") if len(patternParts) != len(hostParts) { return false } for i, patternPart := range patternParts { if patternPart == "*" { continue } if patternPart != hostParts[i] { return false } } return true } // toLowerCaseASCII returns a lower-case version of in. See RFC 6125 6.4.1. We use // an explicitly ASCII function to avoid any sharp corners resulting from // performing Unicode operations on DNS labels. func toLowerCaseASCII(in string) string { // If the string is already lower-case then there's nothing to do. isAlreadyLowerCase := true for _, c := range in { if c == utf8.RuneError { // If we get a UTF-8 error then there might be // upper-case ASCII bytes in the invalid sequence. isAlreadyLowerCase = false break } if 'A' <= c && c <= 'Z' { isAlreadyLowerCase = false break } } if isAlreadyLowerCase { return in } out := []byte(in) for i, c := range out { if 'A' <= c && c <= 'Z' { out[i] += 'a' - 'A' } } return string(out) } // VerifyHostname returns nil if c is a valid certificate for the named host. // Otherwise it returns an error describing the mismatch. func (c *Certificate) VerifyHostname(h string) error { // IP addresses may be written in [ ]. candidateIP := h if len(h) >= 3 && h[0] == '[' && h[len(h)-1] == ']' { candidateIP = h[1 : len(h)-1] } if ip := net.ParseIP(candidateIP); ip != nil { // We only match IP addresses against IP SANs. // https://tools.ietf.org/html/rfc6125#appendix-B.2 for _, candidate := range c.IPAddresses { if ip.Equal(candidate) { return nil } } return HostnameError{c, candidateIP} } lowered := toLowerCaseASCII(h) if len(c.DNSNames) > 0 { for _, match := range c.DNSNames { if matchHostnames(toLowerCaseASCII(match), lowered) { return nil } } // If Subject Alt Name is given, we ignore the common name. } else if matchHostnames(toLowerCaseASCII(c.Subject.CommonName), lowered) { return nil } return HostnameError{c, h} } func checkChainForKeyUsage(chain []*Certificate, keyUsages []ExtKeyUsage) bool { usages := make([]ExtKeyUsage, len(keyUsages)) copy(usages, keyUsages) if len(chain) == 0 { return false } usagesRemaining := len(usages) // We walk down the list and cross out any usages that aren't supported // by each certificate. If we cross out all the usages, then the chain // is unacceptable. NextCert: for i := len(chain) - 1; i >= 0; i-- { cert := chain[i] if len(cert.ExtKeyUsage) == 0 && len(cert.UnknownExtKeyUsage) == 0 { // The certificate doesn't have any extended key usage specified. continue } for _, usage := range cert.ExtKeyUsage { if usage == ExtKeyUsageAny { // The certificate is explicitly good for any usage. continue NextCert } } const invalidUsage ExtKeyUsage = -1 NextRequestedUsage: for i, requestedUsage := range usages { if requestedUsage == invalidUsage { continue } for _, usage := range cert.ExtKeyUsage { if requestedUsage == usage { continue NextRequestedUsage } else if requestedUsage == ExtKeyUsageServerAuth && (usage == ExtKeyUsageNetscapeServerGatedCrypto || usage == ExtKeyUsageMicrosoftServerGatedCrypto) { // In order to support COMODO // certificate chains, we have to // accept Netscape or Microsoft SGC // usages as equal to ServerAuth. continue NextRequestedUsage } } usages[i] = invalidUsage usagesRemaining-- if usagesRemaining == 0 { return false } } } return true } go/src/pkg/crypto/x509/verify_test.go0100644000000000000000000015134612412656737020000 0ustar00rootroot00000000000000// Copyright 2011 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 x509 import ( "crypto/x509/pkix" "encoding/pem" "errors" "runtime" "strings" "testing" "time" ) type verifyTest struct { leaf string intermediates []string roots []string currentTime int64 dnsName string systemSkip bool keyUsages []ExtKeyUsage testSystemRootsError bool errorCallback func(*testing.T, int, error) bool expectedChains [][]string } var verifyTests = []verifyTest{ { leaf: googleLeaf, intermediates: []string{giag2Intermediate}, currentTime: 1395785200, dnsName: "www.google.com", testSystemRootsError: true, // Without any roots specified we should get a system roots // error. errorCallback: expectSystemRootsError, }, { leaf: googleLeaf, intermediates: []string{giag2Intermediate}, roots: []string{geoTrustRoot}, currentTime: 1395785200, dnsName: "www.google.com", expectedChains: [][]string{ {"Google", "Google Internet Authority", "GeoTrust"}, }, }, { leaf: googleLeaf, intermediates: []string{giag2Intermediate}, roots: []string{geoTrustRoot}, currentTime: 1395785200, dnsName: "WwW.GooGLE.coM", expectedChains: [][]string{ {"Google", "Google Internet Authority", "GeoTrust"}, }, }, { leaf: googleLeaf, intermediates: []string{giag2Intermediate}, roots: []string{geoTrustRoot}, currentTime: 1395785200, dnsName: "www.example.com", errorCallback: expectHostnameError, }, { leaf: googleLeaf, intermediates: []string{giag2Intermediate}, roots: []string{geoTrustRoot}, currentTime: 1, dnsName: "www.example.com", errorCallback: expectExpired, }, { leaf: googleLeaf, roots: []string{geoTrustRoot}, currentTime: 1395785200, dnsName: "www.google.com", // Skip when using systemVerify, since Windows // *will* find the missing intermediate cert. systemSkip: true, errorCallback: expectAuthorityUnknown, }, { leaf: googleLeaf, intermediates: []string{geoTrustRoot, giag2Intermediate}, roots: []string{geoTrustRoot}, currentTime: 1395785200, dnsName: "www.google.com", expectedChains: [][]string{ {"Google", "Google Internet Authority", "GeoTrust"}, // TODO(agl): this is ok, but it would be nice if the // chain building didn't visit the same SPKI // twice. {"Google", "Google Internet Authority", "GeoTrust", "GeoTrust"}, }, // CAPI doesn't build the chain with the duplicated GeoTrust // entry so the results don't match. Thus we skip this test // until that's fixed. systemSkip: true, }, { leaf: dnssecExpLeaf, intermediates: []string{startComIntermediate}, roots: []string{startComRoot}, currentTime: 1302726541, expectedChains: [][]string{ {"dnssec-exp", "StartCom Class 1", "StartCom Certification Authority"}, }, }, { leaf: dnssecExpLeaf, intermediates: []string{startComIntermediate, startComRoot}, roots: []string{startComRoot}, currentTime: 1302726541, // Skip when using systemVerify, since Windows // can only return a single chain to us (for now). systemSkip: true, expectedChains: [][]string{ {"dnssec-exp", "StartCom Class 1", "StartCom Certification Authority"}, {"dnssec-exp", "StartCom Class 1", "StartCom Certification Authority", "StartCom Certification Authority"}, }, }, { leaf: googleLeafWithInvalidHash, intermediates: []string{giag2Intermediate}, roots: []string{geoTrustRoot}, currentTime: 1395785200, dnsName: "www.google.com", // The specific error message may not occur when using system // verification. systemSkip: true, errorCallback: expectHashError, }, { // The default configuration should reject an S/MIME chain. leaf: smimeLeaf, roots: []string{smimeIntermediate}, currentTime: 1339436154, // Key usage not implemented for Windows yet. systemSkip: true, errorCallback: expectUsageError, }, { leaf: smimeLeaf, roots: []string{smimeIntermediate}, currentTime: 1339436154, keyUsages: []ExtKeyUsage{ExtKeyUsageServerAuth}, // Key usage not implemented for Windows yet. systemSkip: true, errorCallback: expectUsageError, }, { leaf: smimeLeaf, roots: []string{smimeIntermediate}, currentTime: 1339436154, keyUsages: []ExtKeyUsage{ExtKeyUsageEmailProtection}, // Key usage not implemented for Windows yet. systemSkip: true, expectedChains: [][]string{ {"Ryan Hurst", "GlobalSign PersonalSign 2 CA - G2"}, }, }, { leaf: megaLeaf, intermediates: []string{comodoIntermediate1}, roots: []string{comodoRoot}, currentTime: 1360431182, // CryptoAPI can find alternative validation paths so we don't // perform this test with system validation. systemSkip: true, expectedChains: [][]string{ {"mega.co.nz", "EssentialSSL CA", "COMODO Certification Authority"}, }, }, { // Check that a name constrained intermediate works even when // it lists multiple constraints. leaf: nameConstraintsLeaf, intermediates: []string{nameConstraintsIntermediate1, nameConstraintsIntermediate2}, roots: []string{globalSignRoot}, currentTime: 1382387896, dnsName: "secure.iddl.vt.edu", expectedChains: [][]string{ { "Technology-enhanced Learning and Online Strategies", "Virginia Tech Global Qualified Server CA", "Trusted Root CA G2", "GlobalSign Root CA", }, }, }, { // Check that SHA-384 intermediates (which are popping up) // work. leaf: moipLeafCert, intermediates: []string{comodoIntermediateSHA384, comodoRSAAuthority}, roots: []string{addTrustRoot}, currentTime: 1397502195, dnsName: "api.moip.com.br", expectedChains: [][]string{ { "api.moip.com.br", "COMODO RSA Extended Validation Secure Server CA", "COMODO RSA Certification Authority", "AddTrust External CA Root", }, }, }, } func expectHostnameError(t *testing.T, i int, err error) (ok bool) { if _, ok := err.(HostnameError); !ok { t.Errorf("#%d: error was not a HostnameError: %s", i, err) return false } return true } func expectExpired(t *testing.T, i int, err error) (ok bool) { if inval, ok := err.(CertificateInvalidError); !ok || inval.Reason != Expired { t.Errorf("#%d: error was not Expired: %s", i, err) return false } return true } func expectUsageError(t *testing.T, i int, err error) (ok bool) { if inval, ok := err.(CertificateInvalidError); !ok || inval.Reason != IncompatibleUsage { t.Errorf("#%d: error was not IncompatibleUsage: %s", i, err) return false } return true } func expectAuthorityUnknown(t *testing.T, i int, err error) (ok bool) { if _, ok := err.(UnknownAuthorityError); !ok { t.Errorf("#%d: error was not UnknownAuthorityError: %s", i, err) return false } return true } func expectSystemRootsError(t *testing.T, i int, err error) bool { if _, ok := err.(SystemRootsError); !ok { t.Errorf("#%d: error was not SystemRootsError: %s", i, err) return false } return true } func expectHashError(t *testing.T, i int, err error) bool { if err == nil { t.Errorf("#%d: no error resulted from invalid hash", i) return false } if expected := "algorithm unimplemented"; !strings.Contains(err.Error(), expected) { t.Errorf("#%d: error resulting from invalid hash didn't contain '%s', rather it was: %s", i, expected, err) return false } return true } func certificateFromPEM(pemBytes string) (*Certificate, error) { block, _ := pem.Decode([]byte(pemBytes)) if block == nil { return nil, errors.New("failed to decode PEM") } return ParseCertificate(block.Bytes) } func testVerify(t *testing.T, useSystemRoots bool) { for i, test := range verifyTests { if useSystemRoots && test.systemSkip { continue } if runtime.GOOS == "windows" && test.testSystemRootsError { continue } opts := VerifyOptions{ Intermediates: NewCertPool(), DNSName: test.dnsName, CurrentTime: time.Unix(test.currentTime, 0), KeyUsages: test.keyUsages, } if !useSystemRoots { opts.Roots = NewCertPool() for j, root := range test.roots { ok := opts.Roots.AppendCertsFromPEM([]byte(root)) if !ok { t.Errorf("#%d: failed to parse root #%d", i, j) return } } } for j, intermediate := range test.intermediates { ok := opts.Intermediates.AppendCertsFromPEM([]byte(intermediate)) if !ok { t.Errorf("#%d: failed to parse intermediate #%d", i, j) return } } leaf, err := certificateFromPEM(test.leaf) if err != nil { t.Errorf("#%d: failed to parse leaf: %s", i, err) return } var oldSystemRoots *CertPool if test.testSystemRootsError { oldSystemRoots = systemRootsPool() systemRoots = nil opts.Roots = nil } chains, err := leaf.Verify(opts) if test.testSystemRootsError { systemRoots = oldSystemRoots } if test.errorCallback == nil && err != nil { t.Errorf("#%d: unexpected error: %s", i, err) } if test.errorCallback != nil { if !test.errorCallback(t, i, err) { return } } if len(chains) != len(test.expectedChains) { t.Errorf("#%d: wanted %d chains, got %d", i, len(test.expectedChains), len(chains)) } // We check that each returned chain matches a chain from // expectedChains but an entry in expectedChains can't match // two chains. seenChains := make([]bool, len(chains)) NextOutputChain: for _, chain := range chains { TryNextExpected: for j, expectedChain := range test.expectedChains { if seenChains[j] { continue } if len(chain) != len(expectedChain) { continue } for k, cert := range chain { if strings.Index(nameToKey(&cert.Subject), expectedChain[k]) == -1 { continue TryNextExpected } } // we matched seenChains[j] = true continue NextOutputChain } t.Errorf("#%d: No expected chain matched %s", i, chainToDebugString(chain)) } } } func TestGoVerify(t *testing.T) { testVerify(t, false) } func TestSystemVerify(t *testing.T) { if runtime.GOOS != "windows" { t.Skipf("skipping verify test using system APIs on %q", runtime.GOOS) } testVerify(t, true) } func chainToDebugString(chain []*Certificate) string { var chainStr string for _, cert := range chain { if len(chainStr) > 0 { chainStr += " -> " } chainStr += nameToKey(&cert.Subject) } return chainStr } func nameToKey(name *pkix.Name) string { return strings.Join(name.Country, ",") + "/" + strings.Join(name.Organization, ",") + "/" + strings.Join(name.OrganizationalUnit, ",") + "/" + name.CommonName } const geoTrustRoot = `-----BEGIN CERTIFICATE----- MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU 1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV 5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== -----END CERTIFICATE----- ` const giag2Intermediate = `-----BEGIN CERTIFICATE----- MIIEBDCCAuygAwIBAgIDAjppMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i YWwgQ0EwHhcNMTMwNDA1MTUxNTU1WhcNMTUwNDA0MTUxNTU1WjBJMQswCQYDVQQG EwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzElMCMGA1UEAxMcR29vZ2xlIEludGVy bmV0IEF1dGhvcml0eSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AJwqBHdc2FCROgajguDYUEi8iT/xGXAaiEZ+4I/F8YnOIe5a/mENtzJEiaB0C1NP VaTOgmKV7utZX8bhBYASxF6UP7xbSDj0U/ck5vuR6RXEz/RTDfRK/J9U3n2+oGtv h8DQUB8oMANA2ghzUWx//zo8pzcGjr1LEQTrfSTe5vn8MXH7lNVg8y5Kr0LSy+rE ahqyzFPdFUuLH8gZYR/Nnag+YyuENWllhMgZxUYi+FOVvuOAShDGKuy6lyARxzmZ EASg8GF6lSWMTlJ14rbtCMoU/M4iarNOz0YDl5cDfsCx3nuvRTPPuj5xt970JSXC DTWJnZ37DhF5iR43xa+OcmkCAwEAAaOB+zCB+DAfBgNVHSMEGDAWgBTAephojYn7 qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUSt0GFhu89mi1dvWBtrtiGrpagS8wEgYD VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwOgYDVR0fBDMwMTAvoC2g K4YpaHR0cDovL2NybC5nZW90cnVzdC5jb20vY3Jscy9ndGdsb2JhbC5jcmwwPQYI KwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwOi8vZ3RnbG9iYWwtb2NzcC5n ZW90cnVzdC5jb20wFwYDVR0gBBAwDjAMBgorBgEEAdZ5AgUBMA0GCSqGSIb3DQEB BQUAA4IBAQA21waAESetKhSbOHezI6B1WLuxfoNCunLaHtiONgaX4PCVOzf9G0JY /iLIa704XtE7JW4S615ndkZAkNoUyHgN7ZVm2o6Gb4ChulYylYbc3GrKBIxbf/a/ zG+FA1jDaFETzf3I93k9mTXwVqO94FntT0QJo544evZG0R0SnU++0ED8Vf4GXjza HFa9llF7b1cq26KqltyMdMKVvvBulRP/F/A8rLIQjcxz++iPAsbw+zOzlTvjwsto WHPbqCRiOwY1nQ2pM714A5AuTHhdUDqB1O6gyHA43LL5Z/qHQF1hwFGPa4NrzQU6 yuGnBXj8ytqU0CwIPX4WecigUCAkVDNx -----END CERTIFICATE----- ` const googleLeaf = `-----BEGIN CERTIFICATE----- MIIEdjCCA16gAwIBAgIIcR5k4dkoe04wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwMzEyMDkzODMwWhcNMTQwNjEwMDAwMDAw WjBoMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEXMBUGA1UEAwwOd3d3 Lmdvb2dsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4zYCe m0oUBhwE0EwBr65eBOcgcQO2PaSIAB2dEP/c1EMX2tOy0ov8rk83ePhJ+MWdT1z6 jge9X4zQQI8ZyA9qIiwrKBZOi8DNUvrqNZC7fJAVRrb9aX/99uYOJCypIbpmWG1q fhbHjJewhwf8xYPj71eU4rLG80a+DapWmphtfq3h52lDQIBzLVf1yYbyrTaELaz4 NXF7HXb5YkId/gxIsSzM0aFUVu2o8sJcLYAsJqwfFKBKOMxUcn545nlspf0mTcWZ 0APlbwsKznNs4/xCDwIxxWjjqgHrYAFl6y07i1gzbAOqdNEyR24p+3JWI8WZBlBI dk2KGj0W1fIfsvyxAgMBAAGjggFBMIIBPTAdBgNVHSUEFjAUBggrBgEFBQcDAQYI KwYBBQUHAwIwGQYDVR0RBBIwEIIOd3d3Lmdvb2dsZS5jb20waAYIKwYBBQUHAQEE XDBaMCsGCCsGAQUFBzAChh9odHRwOi8vcGtpLmdvb2dsZS5jb20vR0lBRzIuY3J0 MCsGCCsGAQUFBzABhh9odHRwOi8vY2xpZW50czEuZ29vZ2xlLmNvbS9vY3NwMB0G A1UdDgQWBBTXD5Bx6iqT+dmEhbFL4OUoHyZn8zAMBgNVHRMBAf8EAjAAMB8GA1Ud IwQYMBaAFErdBhYbvPZotXb1gba7Yhq6WoEvMBcGA1UdIAQQMA4wDAYKKwYBBAHW eQIFATAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vcGtpLmdvb2dsZS5jb20vR0lB RzIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCR3RJtHzgDh33b/MI1ugiki+nl8Ikj 5larbJRE/rcA5oite+QJyAr6SU1gJJ/rRrK3ItVEHr9L621BCM7GSdoNMjB9MMcf tJAW0kYGJ+wqKm53wG/JaOADTnnq2Mt/j6F2uvjgN/ouns1nRHufIvd370N0LeH+ orKqTuAPzXK7imQk6+OycYABbqCtC/9qmwRd8wwn7sF97DtYfK8WuNHtFalCAwyi 8LxJJYJCLWoMhZ+V8GZm+FOex5qkQAjnZrtNlbQJ8ro4r+rpKXtmMFFhfa+7L+PA Kom08eUK8skxAzfDDijZPh10VtJ66uBoiDPdT+uCBehcBIcmSTrKjFGX -----END CERTIFICATE----- ` // googleLeafWithInvalidHash is the same as googleLeaf, but the signature // algorithm in the certificate contains a nonsense OID. const googleLeafWithInvalidHash = `-----BEGIN CERTIFICATE----- MIIEdjCCA16gAwIBAgIIcR5k4dkoe04wDQYJKoZIhvcNAWAFBQAwSTELMAkGA1UE BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwMzEyMDkzODMwWhcNMTQwNjEwMDAwMDAw WjBoMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEXMBUGA1UEAwwOd3d3 Lmdvb2dsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4zYCe m0oUBhwE0EwBr65eBOcgcQO2PaSIAB2dEP/c1EMX2tOy0ov8rk83ePhJ+MWdT1z6 jge9X4zQQI8ZyA9qIiwrKBZOi8DNUvrqNZC7fJAVRrb9aX/99uYOJCypIbpmWG1q fhbHjJewhwf8xYPj71eU4rLG80a+DapWmphtfq3h52lDQIBzLVf1yYbyrTaELaz4 NXF7HXb5YkId/gxIsSzM0aFUVu2o8sJcLYAsJqwfFKBKOMxUcn545nlspf0mTcWZ 0APlbwsKznNs4/xCDwIxxWjjqgHrYAFl6y07i1gzbAOqdNEyR24p+3JWI8WZBlBI dk2KGj0W1fIfsvyxAgMBAAGjggFBMIIBPTAdBgNVHSUEFjAUBggrBgEFBQcDAQYI KwYBBQUHAwIwGQYDVR0RBBIwEIIOd3d3Lmdvb2dsZS5jb20waAYIKwYBBQUHAQEE XDBaMCsGCCsGAQUFBzAChh9odHRwOi8vcGtpLmdvb2dsZS5jb20vR0lBRzIuY3J0 MCsGCCsGAQUFBzABhh9odHRwOi8vY2xpZW50czEuZ29vZ2xlLmNvbS9vY3NwMB0G A1UdDgQWBBTXD5Bx6iqT+dmEhbFL4OUoHyZn8zAMBgNVHRMBAf8EAjAAMB8GA1Ud IwQYMBaAFErdBhYbvPZotXb1gba7Yhq6WoEvMBcGA1UdIAQQMA4wDAYKKwYBBAHW eQIFATAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vcGtpLmdvb2dsZS5jb20vR0lB RzIuY3JsMA0GCSqGSIb3DQFgBQUAA4IBAQCR3RJtHzgDh33b/MI1ugiki+nl8Ikj 5larbJRE/rcA5oite+QJyAr6SU1gJJ/rRrK3ItVEHr9L621BCM7GSdoNMjB9MMcf tJAW0kYGJ+wqKm53wG/JaOADTnnq2Mt/j6F2uvjgN/ouns1nRHufIvd370N0LeH+ orKqTuAPzXK7imQk6+OycYABbqCtC/9qmwRd8wwn7sF97DtYfK8WuNHtFalCAwyi 8LxJJYJCLWoMhZ+V8GZm+FOex5qkQAjnZrtNlbQJ8ro4r+rpKXtmMFFhfa+7L+PA Kom08eUK8skxAzfDDijZPh10VtJ66uBoiDPdT+uCBehcBIcmSTrKjFGX -----END CERTIFICATE----- ` const dnssecExpLeaf = `-----BEGIN CERTIFICATE----- MIIGzTCCBbWgAwIBAgIDAdD6MA0GCSqGSIb3DQEBBQUAMIGMMQswCQYDVQQGEwJJ TDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0 YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3Mg MSBQcmltYXJ5IEludGVybWVkaWF0ZSBTZXJ2ZXIgQ0EwHhcNMTAwNzA0MTQ1MjQ1 WhcNMTEwNzA1MTA1NzA0WjCBwTEgMB4GA1UEDRMXMjIxMTM3LWxpOWE5dHhJRzZM NnNyVFMxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVQZXJzb25hIE5vdCBWYWxpZGF0 ZWQxKTAnBgNVBAsTIFN0YXJ0Q29tIEZyZWUgQ2VydGlmaWNhdGUgTWVtYmVyMRsw GQYDVQQDExJ3d3cuZG5zc2VjLWV4cC5vcmcxKDAmBgkqhkiG9w0BCQEWGWhvc3Rt YXN0ZXJAZG5zc2VjLWV4cC5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQDEdF/22vaxrPbqpgVYMWi+alfpzBctpbfLBdPGuqOazJdCT0NbWcK8/+B4 X6OlSOURNIlwLzhkmwVsWdVv6dVSaN7d4yI/fJkvgfDB9+au+iBJb6Pcz8ULBfe6 D8HVvqKdORp6INzHz71z0sghxrQ0EAEkoWAZLh+kcn2ZHdcmZaBNUfjmGbyU6PRt RjdqoP+owIaC1aktBN7zl4uO7cRjlYFdusINrh2kPP02KAx2W84xjxX1uyj6oS6e 7eBfvcwe8czW/N1rbE0CoR7h9+HnIrjnVG9RhBiZEiw3mUmF++Up26+4KTdRKbu3 +BL4yMpfd66z0+zzqu+HkvyLpFn5AgMBAAGjggL/MIIC+zAJBgNVHRMEAjAAMAsG A1UdDwQEAwIDqDATBgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQUy04I5guM drzfh2JQaXhgV86+4jUwHwYDVR0jBBgwFoAU60I00Jiwq5/0G2sI98xkLu8OLEUw LQYDVR0RBCYwJIISd3d3LmRuc3NlYy1leHAub3Jngg5kbnNzZWMtZXhwLm9yZzCC AUIGA1UdIASCATkwggE1MIIBMQYLKwYBBAGBtTcBAgIwggEgMC4GCCsGAQUFBwIB FiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMDQGCCsGAQUFBwIB FihodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9pbnRlcm1lZGlhdGUucGRmMIG3Bggr BgEFBQcCAjCBqjAUFg1TdGFydENvbSBMdGQuMAMCAQEagZFMaW1pdGVkIExpYWJp bGl0eSwgc2VlIHNlY3Rpb24gKkxlZ2FsIExpbWl0YXRpb25zKiBvZiB0aGUgU3Rh cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUG9saWN5IGF2YWlsYWJsZSBh dCBodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMGEGA1UdHwRaMFgw KqAooCaGJGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2NydDEtY3JsLmNybDAqoCig JoYkaHR0cDovL2NybC5zdGFydHNzbC5jb20vY3J0MS1jcmwuY3JsMIGOBggrBgEF BQcBAQSBgTB/MDkGCCsGAQUFBzABhi1odHRwOi8vb2NzcC5zdGFydHNzbC5jb20v c3ViL2NsYXNzMS9zZXJ2ZXIvY2EwQgYIKwYBBQUHMAKGNmh0dHA6Ly93d3cuc3Rh cnRzc2wuY29tL2NlcnRzL3N1Yi5jbGFzczEuc2VydmVyLmNhLmNydDAjBgNVHRIE HDAahhhodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS8wDQYJKoZIhvcNAQEFBQADggEB ACXj6SB59KRJPenn6gUdGEqcta97U769SATyiQ87i9er64qLwvIGLMa3o2Rcgl2Y kghUeyLdN/EXyFBYA8L8uvZREPoc7EZukpT/ZDLXy9i2S0jkOxvF2fD/XLbcjGjM iEYG1/6ASw0ri9C0k4oDDoJLCoeH9++yqF7SFCCMcDkJqiAGXNb4euDpa8vCCtEQ CSS+ObZbfkreRt3cNCf5LfCXe9OsTnCfc8Cuq81c0oLaG+SmaLUQNBuToq8e9/Zm +b+/a3RVjxmkV5OCcGVBxsXNDn54Q6wsdw0TBMcjwoEndzpLS7yWgFbbkq5ZiGpw Qibb2+CfKuQ+WFV1GkVQmVA= -----END CERTIFICATE-----` const startComIntermediate = `-----BEGIN CERTIFICATE----- MIIGNDCCBBygAwIBAgIBGDANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMDcxMDI0MjA1NDE3WhcNMTcxMDI0MjA1NDE3WjCB jDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsT IlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0 YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgU2VydmVyIENBMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtonGrO8JUngHrJJj0PREGBiE gFYfka7hh/oyULTTRwbw5gdfcA4Q9x3AzhA2NIVaD5Ksg8asWFI/ujjo/OenJOJA pgh2wJJuniptTT9uYSAK21ne0n1jsz5G/vohURjXzTCm7QduO3CHtPn66+6CPAVv kvek3AowHpNz/gfK11+AnSJYUq4G2ouHI2mw5CrY6oPSvfNx23BaKA+vWjhwRRI/ ME3NO68X5Q/LoKldSKqxYVDLNM08XMML6BDAjJvwAwNi/rJsPnIO7hxDKslIDlc5 xDEhyBDBLIf+VJVSH1I8MRKbf+fAoKVZ1eKPPvDVqOHXcDGpxLPPr21TLwb0pwID AQABo4IBrTCCAakwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD VR0OBBYEFOtCNNCYsKuf9BtrCPfMZC7vDixFMB8GA1UdIwQYMBaAFE4L7xqkQFul F2mHMMo0aEPQQa7yMGYGCCsGAQUFBwEBBFowWDAnBggrBgEFBQcwAYYbaHR0cDov L29jc3Auc3RhcnRzc2wuY29tL2NhMC0GCCsGAQUFBzAChiFodHRwOi8vd3d3LnN0 YXJ0c3NsLmNvbS9zZnNjYS5jcnQwWwYDVR0fBFQwUjAnoCWgI4YhaHR0cDovL3d3 dy5zdGFydHNzbC5jb20vc2ZzY2EuY3JsMCegJaAjhiFodHRwOi8vY3JsLnN0YXJ0 c3NsLmNvbS9zZnNjYS5jcmwwgYAGA1UdIAR5MHcwdQYLKwYBBAGBtTcBAgEwZjAu BggrBgEFBQcCARYiaHR0cDovL3d3dy5zdGFydHNzbC5jb20vcG9saWN5LnBkZjA0 BggrBgEFBQcCARYoaHR0cDovL3d3dy5zdGFydHNzbC5jb20vaW50ZXJtZWRpYXRl LnBkZjANBgkqhkiG9w0BAQUFAAOCAgEAIQlJPqWIbuALi0jaMU2P91ZXouHTYlfp tVbzhUV1O+VQHwSL5qBaPucAroXQ+/8gA2TLrQLhxpFy+KNN1t7ozD+hiqLjfDen xk+PNdb01m4Ge90h2c9W/8swIkn+iQTzheWq8ecf6HWQTd35RvdCNPdFWAwRDYSw xtpdPvkBnufh2lWVvnQce/xNFE+sflVHfXv0pQ1JHpXo9xLBzP92piVH0PN1Nb6X t1gW66pceG/sUzCv6gRNzKkC4/C2BBL2MLERPZBOVmTX3DxDX3M570uvh+v2/miI RHLq0gfGabDBoYvvF0nXYbFFSF87ICHpW7LM9NfpMfULFWE7epTj69m8f5SuauNi YpaoZHy4h/OZMn6SolK+u/hlz8nyMPyLwcKmltdfieFcNID1j0cHL7SRv7Gifl9L WtBbnySGBVFaaQNlQ0lxxeBvlDRr9hvYqbBMflPrj0jfyjO1SPo2ShpTpjMM0InN SRXNiTE8kMBy12VLUjWKRhFEuT2OKGWmPnmeXAhEKa2wNREuIU640ucQPl2Eg7PD wuTSxv0JS3QJ3fGz0xk+gA2iCxnwOOfFwq/iI9th4p1cbiCJSS4jarJiwUW0n6+L p/EiO/h94pDQehn7Skzj0n1fSoMD7SfWI55rjbRZotnvbIIp3XUZPD9MEI3vu3Un 0q6Dp6jOW6c= -----END CERTIFICATE-----` const startComRoot = `-----BEGIN CERTIFICATE----- MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w +2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B 26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ 9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1 ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= -----END CERTIFICATE-----` const startComRootSHA256 = `-----BEGIN CERTIFICATE----- MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEW MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM3WhcNMzYwOTE3MTk0NjM2WjB9 MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w +2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B 26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID AQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFul F2mHMMo0aEPQQa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCC ATgwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5w ZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVk aWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENvbW1lcmNpYWwgKFN0 YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0aGUg c2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0 aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93 d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgG CWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1 dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5fPGFf59Jb2vKXfuM/gTF wWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWmN3PH/UvS Ta0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst 0OcNOrg+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNc pRJvkrKTlMeIFw6Ttn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKl CcWw0bdT82AUuoVpaiF8H3VhFyAXe2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVF P0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA2MFrLH9ZXF2RsXAiV+uKa0hK 1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBsHvUwyKMQ5bLm KhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ 8dCAWZvLMdibD4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnm fyWl8kgAwKQB2j8= -----END CERTIFICATE-----` const smimeLeaf = `-----BEGIN CERTIFICATE----- MIIFBjCCA+6gAwIBAgISESFvrjT8XcJTEe6rBlPptILlMA0GCSqGSIb3DQEBBQUA MFQxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSowKAYD VQQDEyFHbG9iYWxTaWduIFBlcnNvbmFsU2lnbiAyIENBIC0gRzIwHhcNMTIwMTIz MTYzNjU5WhcNMTUwMTIzMTYzNjU5WjCBlDELMAkGA1UEBhMCVVMxFjAUBgNVBAgT DU5ldyBIYW1zcGhpcmUxEzARBgNVBAcTClBvcnRzbW91dGgxGTAXBgNVBAoTEEds b2JhbFNpZ24sIEluYy4xEzARBgNVBAMTClJ5YW4gSHVyc3QxKDAmBgkqhkiG9w0B CQEWGXJ5YW4uaHVyc3RAZ2xvYmFsc2lnbi5jb20wggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC4ASSTvavmsFQAob60ukSSwOAL9nT/s99ltNUCAf5fPH5j NceMKxaQse2miOmRRIXaykcq1p/TbI70Ztce38r2mbOwqDHHPVi13GxJEyUXWgaR BteDMu5OGyWNG1kchVsGWpbstT0Z4v0md5m1BYFnxB20ebJyOR2lXDxsFK28nnKV +5eMj76U8BpPQ4SCH7yTMG6y0XXsB3cCrBKr2o3TOYgEKv+oNnbaoMt3UxMt9nSf 9jyIshjqfnT5Aew3CUNMatO55g5FXXdIukAweg1YSb1ls05qW3sW00T3d7dQs9/7 NuxCg/A2elmVJSoy8+MLR8JSFEf/aMgjO/TyLg/jAgMBAAGjggGPMIIBizAOBgNV HQ8BAf8EBAMCBaAwTQYDVR0gBEYwRDBCBgorBgEEAaAyASgKMDQwMgYIKwYBBQUH AgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMCQGA1Ud EQQdMBuBGXJ5YW4uaHVyc3RAZ2xvYmFsc2lnbi5jb20wCQYDVR0TBAIwADAdBgNV HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwQwYDVR0fBDwwOjA4oDagNIYyaHR0 cDovL2NybC5nbG9iYWxzaWduLmNvbS9ncy9nc3BlcnNvbmFsc2lnbjJnMi5jcmww VQYIKwYBBQUHAQEESTBHMEUGCCsGAQUFBzAChjlodHRwOi8vc2VjdXJlLmdsb2Jh bHNpZ24uY29tL2NhY2VydC9nc3BlcnNvbmFsc2lnbjJnMi5jcnQwHQYDVR0OBBYE FFWiECe0/L72eVYqcWYnLV6SSjzhMB8GA1UdIwQYMBaAFD8V0m18L+cxnkMKBqiU bCw7xe5lMA0GCSqGSIb3DQEBBQUAA4IBAQAhQi6hLPeudmf3IBF4IDzCvRI0FaYd BKfprSk/H0PDea4vpsLbWpA0t0SaijiJYtxKjlM4bPd+2chb7ejatDdyrZIzmDVy q4c30/xMninGKokpYA11/Ve+i2dvjulu65qasrtQRGybAuuZ67lrp/K3OMFgjV5N C3AHYLzvNU4Dwc4QQ1BaMOg6KzYSrKbABRZajfrpC9uiePsv7mDIXLx/toBPxWNl a5vJm5DrZdn7uHdvBCE6kMykbOLN5pmEK0UIlwKh6Qi5XD0pzlVkEZliFkBMJgub d/eF7xeg7TKPWC5xyOFp9SdMolJM7LTC3wnSO3frBAev+q/nGs9Xxyvs -----END CERTIFICATE-----` const smimeIntermediate = `-----BEGIN CERTIFICATE----- MIIEFjCCAv6gAwIBAgILBAAAAAABL07hL1IwDQYJKoZIhvcNAQEFBQAwVzELMAkG A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xMTA0MTMxMDAw MDBaFw0xOTA0MTMxMDAwMDBaMFQxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i YWxTaWduIG52LXNhMSowKAYDVQQDEyFHbG9iYWxTaWduIFBlcnNvbmFsU2lnbiAy IENBIC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBa0H5Nez4 En3dIlFpX7e5E0YndxQ74xOBbz7kdBd+DLX0LOQMjVPU3DAgKL9ujhH+ZhHkURbH 3X/94TQSUL/z2JjsaQvS0NqyZXHhM5eeuquzOJRzEQ8+odETzHg2G0Erv7yjSeww gkwDWDJnYUDlOjYTDUEG6+i+8Mn425reo4I0E277wD542kmVWeW7+oHv5dZo9e1Q yWwiKTEP6BEQVVSBgThXMG4traSSDRUt3T1eQTZx5EObpiBEBO4OTqiBTJfg4vEI YgkXzKLpnfszTB6YMDpR9/QS6p3ANB3kfAb+t6udSO3WCst0DGrwHDLBFGDR4UeY T5KGGnI7cWL7AgMBAAGjgeUwgeIwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQI MAYBAf8CAQAwHQYDVR0OBBYEFD8V0m18L+cxnkMKBqiUbCw7xe5lMEcGA1UdIARA MD4wPAYEVR0gADA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWdu LmNvbS9yZXBvc2l0b3J5LzAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3JsLmds b2JhbHNpZ24ubmV0L3Jvb3QuY3JsMB8GA1UdIwQYMBaAFGB7ZhpFDZfKiVAvfQTN NKj//P1LMA0GCSqGSIb3DQEBBQUAA4IBAQBDc3nMpMxJMQMcYUCB3+C73UpvwDE8 eCOr7t2F/uaQKKcyqqstqLZc6vPwI/rcE9oDHugY5QEjQzIBIEaTnN6P0vege2IX eCOr7t2F/uaQKKcyqqstqLZc6vPwI/rcE9oDHugY5QEjQzIBIEaTnN6P0vege2IX YEvTWbWwGdPytDFPYIl3/6OqNSXSnZ7DxPcdLJq2uyiga8PB/TTIIHYkdM2+1DE0 7y3rH/7TjwDVD7SLu5/SdOfKskuMPTjOEvz3K161mymW06klVhubCIWOro/Gx1Q2 2FQOZ7/2k4uYoOdBTSlb8kTAuzZNgIE0rB2BIYCTz/P6zZIKW0ogbRSH -----END CERTIFICATE-----` var megaLeaf = `-----BEGIN CERTIFICATE----- MIIFOjCCBCKgAwIBAgIQWYE8Dup170kZ+k11Lg51OjANBgkqhkiG9w0BAQUFADBy MQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD VQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDEYMBYGA1UE AxMPRXNzZW50aWFsU1NMIENBMB4XDTEyMTIxNDAwMDAwMFoXDTE0MTIxNDIzNTk1 OVowfzEhMB8GA1UECxMYRG9tYWluIENvbnRyb2wgVmFsaWRhdGVkMS4wLAYDVQQL EyVIb3N0ZWQgYnkgSW5zdHJhIENvcnBvcmF0aW9uIFB0eS4gTFREMRUwEwYDVQQL EwxFc3NlbnRpYWxTU0wxEzARBgNVBAMTCm1lZ2EuY28ubnowggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQDcxMCClae8BQIaJHBUIVttlLvhbK4XhXPk3RQ3 G5XA6tLZMBQ33l3F9knYJ0YErXtr8IdfYoulRQFmKFMJl9GtWyg4cGQi2Rcr5VN5 S5dA1vu4oyJBxE9fPELcK6Yz1vqaf+n6za+mYTiQYKggVdS8/s8hmNuXP9Zk1pIn +q0pGsf8NAcSHMJgLqPQrTDw+zae4V03DvcYfNKjuno88d2226ld7MAmQZ7uRNsI /CnkdelVs+akZsXf0szefSqMJlf08SY32t2jj4Ra7RApVYxOftD9nij/aLfuqOU6 ow6IgIcIG2ZvXLZwK87c5fxL7UAsTTV+M1sVv8jA33V2oKLhAgMBAAGjggG9MIIB uTAfBgNVHSMEGDAWgBTay+qtWwhdzP/8JlTOSeVVxjj0+DAdBgNVHQ4EFgQUmP9l 6zhyrZ06Qj4zogt+6LKFk4AwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAw NAYDVR0lBC0wKwYIKwYBBQUHAwEGCCsGAQUFBwMCBgorBgEEAYI3CgMDBglghkgB hvhCBAEwTwYDVR0gBEgwRjA6BgsrBgEEAbIxAQICBzArMCkGCCsGAQUFBwIBFh1o dHRwczovL3NlY3VyZS5jb21vZG8uY29tL0NQUzAIBgZngQwBAgEwOwYDVR0fBDQw MjAwoC6gLIYqaHR0cDovL2NybC5jb21vZG9jYS5jb20vRXNzZW50aWFsU1NMQ0Eu Y3JsMG4GCCsGAQUFBwEBBGIwYDA4BggrBgEFBQcwAoYsaHR0cDovL2NydC5jb21v ZG9jYS5jb20vRXNzZW50aWFsU1NMQ0FfMi5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6 Ly9vY3NwLmNvbW9kb2NhLmNvbTAlBgNVHREEHjAcggptZWdhLmNvLm56gg53d3cu bWVnYS5jby5uejANBgkqhkiG9w0BAQUFAAOCAQEAcYhrsPSvDuwihMOh0ZmRpbOE Gw6LqKgLNTmaYUPQhzi2cyIjhUhNvugXQQlP5f0lp5j8cixmArafg1dTn4kQGgD3 ivtuhBTgKO1VYB/VRoAt6Lmswg3YqyiS7JiLDZxjoV7KoS5xdiaINfHDUaBBY4ZH j2BUlPniNBjCqXe/HndUTVUewlxbVps9FyCmH+C4o9DWzdGBzDpCkcmo5nM+cp7q ZhTIFTvZfo3zGuBoyu8BzuopCJcFRm3cRiXkpI7iOMUIixO1szkJS6WpL1sKdT73 UXp08U0LBqoqG130FbzEJBBV3ixbvY6BWMHoCWuaoF12KJnC5kHt2RoWAAgMXA== -----END CERTIFICATE-----` var comodoIntermediate1 = `-----BEGIN CERTIFICATE----- MIIFAzCCA+ugAwIBAgIQGLLLuqME8aAPwfLzJkYqSjANBgkqhkiG9w0BAQUFADCB gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw MDBaFw0xOTEyMzEyMzU5NTlaMHIxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVh dGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9E TyBDQSBMaW1pdGVkMRgwFgYDVQQDEw9Fc3NlbnRpYWxTU0wgQ0EwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCt8AiwcsargxIxF3CJhakgEtSYau2A1NHf 5I5ZLdOWIY120j8YC0YZYwvHIPPlC92AGvFaoL0dds23Izp0XmEbdaqb1IX04XiR 0y3hr/yYLgbSeT1awB8hLRyuIVPGOqchfr7tZ291HRqfalsGs2rjsQuqag7nbWzD ypWMN84hHzWQfdvaGlyoiBSyD8gSIF/F03/o4Tjg27z5H6Gq1huQByH6RSRQXScq oChBRVt9vKCiL6qbfltTxfEFFld+Edc7tNkBdtzffRDPUanlOPJ7FAB1WfnwWdsX Pvev5gItpHnBXaIcw5rIp6gLSApqLn8tl2X2xQScRMiZln5+pN0vAgMBAAGjggGD MIIBfzAfBgNVHSMEGDAWgBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAdBgNVHQ4EFgQU 2svqrVsIXcz//CZUzknlVcY49PgwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQI MAYBAf8CAQAwIAYDVR0lBBkwFwYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMD4GA1Ud IAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwczovL3NlY3VyZS5jb21v ZG8uY29tL0NQUzBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9kb2Nh LmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBsBggrBgEFBQcB AQRgMF4wNgYIKwYBBQUHMAKGKmh0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NvbW9k b1VUTlNHQ0NBLmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2Eu Y29tMA0GCSqGSIb3DQEBBQUAA4IBAQAtlzR6QDLqcJcvgTtLeRJ3rvuq1xqo2l/z odueTZbLN3qo6u6bldudu+Ennv1F7Q5Slqz0J790qpL0pcRDAB8OtXj5isWMcL2a ejGjKdBZa0wztSz4iw+SY1dWrCRnilsvKcKxudokxeRiDn55w/65g+onO7wdQ7Vu F6r7yJiIatnyfKH2cboZT7g440LX8NqxwCPf3dfxp+0Jj1agq8MLy6SSgIGSH6lv +Wwz3D5XxqfyH8wqfOQsTEZf6/Nh9yvENZ+NWPU6g0QO2JOsTGvMd/QDzczc4BxL XSXaPV7Od4rhPsbXlM1wSTz/Dr0ISKvlUhQVnQ6cGodWaK2cCQBk -----END CERTIFICATE-----` var comodoRoot = `-----BEGIN CERTIFICATE----- MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI 2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp +2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW /zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB ZQ== -----END CERTIFICATE-----` var nameConstraintsLeaf = `-----BEGIN CERTIFICATE----- MIIHMTCCBRmgAwIBAgIIIZaV/3ezOJkwDQYJKoZIhvcNAQEFBQAwgcsxCzAJBgNV BAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTETMBEGA1UEBxMKQmxhY2tzYnVyZzEj MCEGA1UECxMaR2xvYmFsIFF1YWxpZmllZCBTZXJ2ZXIgQ0ExPDA6BgNVBAoTM1Zp cmdpbmlhIFBvbHl0ZWNobmljIEluc3RpdHV0ZSBhbmQgU3RhdGUgVW5pdmVyc2l0 eTExMC8GA1UEAxMoVmlyZ2luaWEgVGVjaCBHbG9iYWwgUXVhbGlmaWVkIFNlcnZl ciBDQTAeFw0xMzA5MTkxNDM2NTVaFw0xNTA5MTkxNDM2NTVaMIHNMQswCQYDVQQG EwJVUzERMA8GA1UECAwIVmlyZ2luaWExEzARBgNVBAcMCkJsYWNrc2J1cmcxPDA6 BgNVBAoMM1ZpcmdpbmlhIFBvbHl0ZWNobmljIEluc3RpdHV0ZSBhbmQgU3RhdGUg VW5pdmVyc2l0eTE7MDkGA1UECwwyVGVjaG5vbG9neS1lbmhhbmNlZCBMZWFybmlu ZyBhbmQgT25saW5lIFN0cmF0ZWdpZXMxGzAZBgNVBAMMEnNlY3VyZS5pZGRsLnZ0 LmVkdTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkOyPpsOK/6IuPG WnIBlVwlHzeYf+cUlggqkLq0b0+vZbiTXgio9/VCuNQ8opSoss7J7o3ygV9to+9Y YwJKVC5WDT/y5JWpQey0CWILymViJnpNSwnxBc8A+Q8w5NUGDd/UhtPx/U8/hqbd WPDYj2hbOqyq8UlRhfS5pwtnv6BbCTaY11I6FhCLK7zttISyTuWCf9p9o/ggiipP ii/5oh4dkl+r5SfuSp5GPNHlYO8lWqys5NAPoDD4fc/kuflcK7Exx7XJ+Oqu0W0/ psjEY/tES1ZgDWU/ParcxxFpFmKHbD5DXsfPOObzkVWXIY6tGMutSlE1Froy/Nn0 OZsAOrcCAwEAAaOCAhMwggIPMIG4BggrBgEFBQcBAQSBqzCBqDBYBggrBgEFBQcw AoZMaHR0cDovL3d3dy5wa2kudnQuZWR1L2dsb2JhbHF1YWxpZmllZHNlcnZlci9j YWNlcnQvZ2xvYmFscXVhbGlmaWVkc2VydmVyLmNydDBMBggrBgEFBQcwAYZAaHR0 cDovL3Z0Y2EtcC5lcHJvdi5zZXRpLnZ0LmVkdTo4MDgwL2VqYmNhL3B1YmxpY3dl Yi9zdGF0dXMvb2NzcDAdBgNVHQ4EFgQUp7xbO6iHkvtZbPE4jmndmnAbSEcwDAYD VR0TAQH/BAIwADAfBgNVHSMEGDAWgBS8YmAn1eM1SBfpS6tFatDIqHdxjDBqBgNV HSAEYzBhMA4GDCsGAQQBtGgFAgICATAOBgwrBgEEAbRoBQICAQEwPwYMKwYBBAG0 aAUCAgMBMC8wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucGtpLnZ0LmVkdS9nbG9i YWwvY3BzLzBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vd3d3LnBraS52dC5lZHUv Z2xvYmFscXVhbGlmaWVkc2VydmVyL2NybC9jYWNybC5jcmwwDgYDVR0PAQH/BAQD AgTwMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHREEFjAUghJz ZWN1cmUuaWRkbC52dC5lZHUwDQYJKoZIhvcNAQEFBQADggIBAEgoYo4aUtatY3gI OyyKp7QlIOaLbTJZywESHqy+L5EGDdJW2DJV+mcE0LDGvqa2/1Lo+AR1ntsZwfOi Y718JwgVVaX/RCd5+QKP25c5/x72xI8hb/L1bgS0ED9b0YAhd7Qm1K1ot82+6mqX DW6WiGeDr8Z07MQ3143qQe2rBlq+QI69DYzm2GOqAIAnUIWv7tCyLUm31b4DwmrJ TeudVreTKUbBNB1TWRFHEPkWhjjXKZnNGRO11wHXcyBu6YekIvVZ+vmx8ePee4jJ 3GFOi7lMuWOeq57jTVL7KOKaKLVXBb6gqo5aq+Wwt8RUD5MakrCAEeQZj7DKaFmZ oQCO0Pxrsl3InCGvxnGzT+bFVO9nJ/BAMj7hknFdm9Jr6Bg5q33Z+gnf909AD9QF ESqUSykaHu2LVdJx2MaCH1CyKnRgMw5tEwE15EXpUjCm24m8FMOYC+rNtf18pgrz 5D8Jhh+oxK9PjcBYqXNtnioIxiMCYcV0q5d4w4BYFEh71tk7/bYB0R55CsBUVPmp timWNOdRd57Tfpk3USaVsumWZAf9MP3wPiC7gb4d5tYEEAG5BuDT8ruFw838wU8G 1VvAVutSiYBg7k3NYO7AUqZ+Ax4klQX3aM9lgonmJ78Qt94UPtbptrfZ4/lSqEf8 GBUwDrQNTb+gsXsDkjd5lcYxNx6l -----END CERTIFICATE-----` var nameConstraintsIntermediate1 = `-----BEGIN CERTIFICATE----- MIINLjCCDBagAwIBAgIRIqpyf/YoGgvHc8HiDAxAI8owDQYJKoZIhvcNAQEFBQAw XDELMAkGA1UEBhMCQkUxFTATBgNVBAsTDFRydXN0ZWQgUm9vdDEZMBcGA1UEChMQ R2xvYmFsU2lnbiBudi1zYTEbMBkGA1UEAxMSVHJ1c3RlZCBSb290IENBIEcyMB4X DTEyMTIxMzAwMDAwMFoXDTE3MTIxMzAwMDAwMFowgcsxCzAJBgNVBAYTAlVTMREw DwYDVQQIEwhWaXJnaW5pYTETMBEGA1UEBxMKQmxhY2tzYnVyZzEjMCEGA1UECxMa R2xvYmFsIFF1YWxpZmllZCBTZXJ2ZXIgQ0ExPDA6BgNVBAoTM1ZpcmdpbmlhIFBv bHl0ZWNobmljIEluc3RpdHV0ZSBhbmQgU3RhdGUgVW5pdmVyc2l0eTExMC8GA1UE AxMoVmlyZ2luaWEgVGVjaCBHbG9iYWwgUXVhbGlmaWVkIFNlcnZlciBDQTCCAiIw DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALgIZhEaptBWADBqdJ45ueFGzMXa GHnzNxoxR1fQIaaRQNdCg4cw3A4dWKMeEgYLtsp65ai3Xfw62Qaus0+KJ3RhgV+r ihqK81NUzkls78fJlADVDI4fCTlothsrE1CTOMiy97jKHai5mVTiWxmcxpmjv7fm 5Nhc+uHgh2hIz6npryq495mD51ZrUTIaqAQN6Pw/VHfAmR524vgriTOjtp1t4lA9 pXGWjF/vkhAKFFheOQSQ00rngo2wHgCqMla64UTN0oz70AsCYNZ3jDLx0kOP0YmM R3Ih91VA63kLqPXA0R6yxmmhhxLZ5bcyAy1SLjr1N302MIxLM/pSy6aquEnbELhz qyp9yGgRyGJay96QH7c4RJY6gtcoPDbldDcHI9nXngdAL4DrZkJ9OkDkJLyqG66W ZTF5q4EIs6yMdrywz0x7QP+OXPJrjYpbeFs6tGZCFnWPFfmHCRJF8/unofYrheq+ 9J7Jx3U55S/k57NXbAM1RAJOuMTlfn9Etf9Dpoac9poI4Liav6rBoUQk3N3JWqnV HNx/NdCyJ1/6UbKMJUZsStAVglsi6lVPo289HHOE4f7iwl3SyekizVOp01wUin3y cnbZB/rXmZbwapSxTTSBf0EIOr9i4EGfnnhCAVA9U5uLrI5OEB69IY8PNX0071s3 Z2a2fio5c8m3JkdrAgMBAAGjggh5MIIIdTAOBgNVHQ8BAf8EBAMCAQYwTAYDVR0g BEUwQzBBBgkrBgEEAaAyATwwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xv YmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wEgYDVR0TAQH/BAgwBgEB/wIBADCCBtAG A1UdHgSCBscwggbDoIIGvzASghAzZGJsYWNrc2J1cmcub3JnMBiCFmFjY2VsZXJh dGV2aXJnaW5pYS5jb20wGIIWYWNjZWxlcmF0ZXZpcmdpbmlhLm9yZzALgglhY3Zj cC5vcmcwCYIHYmV2Lm5ldDAJggdiZXYub3JnMAuCCWNsaWdzLm9yZzAMggpjbWl3 ZWIub3JnMBeCFWVhc3Rlcm5icm9va3Ryb3V0Lm5ldDAXghVlYXN0ZXJuYnJvb2t0 cm91dC5vcmcwEYIPZWNvcnJpZG9ycy5pbmZvMBOCEWVkZ2FycmVzZWFyY2gub3Jn MBKCEGdldC1lZHVjYXRlZC5jb20wE4IRZ2V0LWVkdWNhdGVkLmluZm8wEYIPZ2V0 ZWR1Y2F0ZWQubmV0MBKCEGdldC1lZHVjYXRlZC5uZXQwEYIPZ2V0ZWR1Y2F0ZWQu b3JnMBKCEGdldC1lZHVjYXRlZC5vcmcwD4INaG9raWVjbHViLmNvbTAQgg5ob2tp ZXBob3RvLmNvbTAPgg1ob2tpZXNob3AuY29tMBGCD2hva2llc3BvcnRzLmNvbTAS ghBob2tpZXRpY2tldHMuY29tMBKCEGhvdGVscm9hbm9rZS5jb20wE4IRaHVtYW53 aWxkbGlmZS5vcmcwF4IVaW5uYXR2aXJnaW5pYXRlY2guY29tMA+CDWlzY2hwMjAx MS5vcmcwD4INbGFuZHJlaGFiLm9yZzAggh5uYXRpb25hbHRpcmVyZXNlYXJjaGNl bnRlci5jb20wFYITbmV0d29ya3ZpcmdpbmlhLm5ldDAMggpwZHJjdnQuY29tMBiC FnBldGVkeWVyaXZlcmNvdXJzZS5jb20wDYILcmFkaW9pcS5vcmcwFYITcml2ZXJj b3Vyc2Vnb2xmLmNvbTALgglzZGltaS5vcmcwEIIOc292YW1vdGlvbi5jb20wHoIc c3VzdGFpbmFibGUtYmlvbWF0ZXJpYWxzLmNvbTAeghxzdXN0YWluYWJsZS1iaW9t YXRlcmlhbHMub3JnMBWCE3RoaXNpc3RoZWZ1dHVyZS5jb20wGIIWdGhpcy1pcy10 aGUtZnV0dXJlLmNvbTAVghN0aGlzaXN0aGVmdXR1cmUubmV0MBiCFnRoaXMtaXMt dGhlLWZ1dHVyZS5uZXQwCoIIdmFkcy5vcmcwDIIKdmFsZWFmLm9yZzANggt2YXRl Y2guaW5mbzANggt2YXRlY2gubW9iaTAcghp2YXRlY2hsaWZlbG9uZ2xlYXJuaW5n LmNvbTAcghp2YXRlY2hsaWZlbG9uZ2xlYXJuaW5nLm5ldDAcghp2YXRlY2hsaWZl bG9uZ2xlYXJuaW5nLm9yZzAKggh2Y29tLmVkdTASghB2aXJnaW5pYXZpZXcubmV0 MDSCMnZpcmdpbmlhcG9seXRlY2huaWNpbnN0aXR1dGVhbmRzdGF0ZXVuaXZlcnNp dHkuY29tMDWCM3ZpcmdpbmlhcG9seXRlY2huaWNpbnN0aXR1dGVhbmRzdGF0ZXVu aXZlcnNpdHkuaW5mbzA0gjJ2aXJnaW5pYXBvbHl0ZWNobmljaW5zdGl0dXRlYW5k c3RhdGV1bml2ZXJzaXR5Lm5ldDA0gjJ2aXJnaW5pYXBvbHl0ZWNobmljaW5zdGl0 dXRlYW5kc3RhdGV1bml2ZXJzaXR5Lm9yZzAZghd2aXJnaW5pYXB1YmxpY3JhZGlv Lm9yZzASghB2aXJnaW5pYXRlY2guZWR1MBOCEXZpcmdpbmlhdGVjaC5tb2JpMByC GnZpcmdpbmlhdGVjaGZvdW5kYXRpb24ub3JnMAiCBnZ0LmVkdTALggl2dGFyYy5v cmcwDIIKdnQtYXJjLm9yZzALggl2dGNyYy5jb20wCoIIdnRpcC5vcmcwDIIKdnRs ZWFuLm9yZzAWghR2dGtub3dsZWRnZXdvcmtzLmNvbTAYghZ2dGxpZmVsb25nbGVh cm5pbmcuY29tMBiCFnZ0bGlmZWxvbmdsZWFybmluZy5uZXQwGIIWdnRsaWZlbG9u Z2xlYXJuaW5nLm9yZzATghF2dHNwb3J0c21lZGlhLmNvbTALggl2dHdlaS5jb20w D4INd2l3YXR3ZXJjLmNvbTAKggh3dnRmLm9yZzAIgQZ2dC5lZHUwd6R1MHMxCzAJ BgNVBAYTAlVTMREwDwYDVQQIEwhWaXJnaW5pYTETMBEGA1UEBxMKQmxhY2tzYnVy ZzE8MDoGA1UEChMzVmlyZ2luaWEgUG9seXRlY2huaWMgSW5zdGl0dXRlIGFuZCBT dGF0ZSBVbml2ZXJzaXR5MCcGA1UdJQQgMB4GCCsGAQUFBwMCBggrBgEFBQcDAQYI KwYBBQUHAwkwPQYDVR0fBDYwNDAyoDCgLoYsaHR0cDovL2NybC5nbG9iYWxzaWdu LmNvbS9ncy90cnVzdHJvb3RnMi5jcmwwgYQGCCsGAQUFBwEBBHgwdjAzBggrBgEF BQcwAYYnaHR0cDovL29jc3AyLmdsb2JhbHNpZ24uY29tL3RydXN0cm9vdGcyMD8G CCsGAQUFBzAChjNodHRwOi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC90 cnVzdHJvb3RnMi5jcnQwHQYDVR0OBBYEFLxiYCfV4zVIF+lLq0Vq0Miod3GMMB8G A1UdIwQYMBaAFBT25YsxtkWASkxt/MKHico2w5BiMA0GCSqGSIb3DQEBBQUAA4IB AQAyJm/lOB2Er4tHXhc/+fSufSzgjohJgYfMkvG4LknkvnZ1BjliefR8tTXX49d2 SCDFWfGjqyJZwavavkl/4p3oXPG/nAMDMvxh4YAT+CfEK9HH+6ICV087kD4BLegi +aFJMj8MMdReWCzn5sLnSR1rdse2mo2arX3Uod14SW+PGrbUmTuWNyvRbz3fVmxp UdbGmj3laknO9YPsBGgHfv73pVVsTJkW4ZfY/7KdD/yaVv6ophpOB3coXfjl2+kd Z4ypn2zK+cx9IL/LSewqd/7W9cD55PCUy4X9OTbEmAccwiz3LB66mQoUGfdHdkoB jUY+v9vLQXmaVwI0AYL7g9LN -----END CERTIFICATE-----` var nameConstraintsIntermediate2 = `-----BEGIN CERTIFICATE----- MIIEXTCCA0WgAwIBAgILBAAAAAABNuk6OrMwDQYJKoZIhvcNAQEFBQAwVzELMAkG A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xMjA0MjUxMTAw MDBaFw0yNzA0MjUxMTAwMDBaMFwxCzAJBgNVBAYTAkJFMRUwEwYDVQQLEwxUcnVz dGVkIFJvb3QxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExGzAZBgNVBAMTElRy dXN0ZWQgUm9vdCBDQSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AKyuvqrtcMr7g7EuNbu4sKwxM127UsCmx1RxbxxgcArGS7rjiefpBH/w4LYrymjf vcw1ueyMNoqLo9nJMz/ORXupb35NNfE667prQYHa+tTjl1IiKpB7QUwt3wXPuTMF Ja1tXtjKzkqJyuJlNuPKT76HcjgNqgV1s9qG44MD5I2JvI12du8zI1bgdQ+l/KsX kTfbGjUvhOLOlVNWVQDpL+YMIrGqgBYxy5TUNgrAcRtwpNdS2KkF5otSmMweVb5k hoUVv3u8UxQH/WWbNhHq1RrIlg/0rBUfi/ziShYFSB7U+aLx5DxPphTFBiDquQGp tB+FC4JvnukDStFihZCZ1R8CAwEAAaOCASMwggEfMA4GA1UdDwEB/wQEAwIBBjAP BgNVHRMBAf8EBTADAQH/MEcGA1UdIARAMD4wPAYEVR0gADA0MDIGCCsGAQUFBwIB FiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzAdBgNVHQ4E FgQUFPblizG2RYBKTG38woeJyjbDkGIwMwYDVR0fBCwwKjAooCagJIYiaHR0cDov L2NybC5nbG9iYWxzaWduLm5ldC9yb290LmNybDA+BggrBgEFBQcBAQQyMDAwLgYI KwYBBQUHMAGGImh0dHA6Ly9vY3NwMi5nbG9iYWxzaWduLmNvbS9yb290cjEwHwYD VR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZIhvcNAQEFBQADggEB AL7IG0l+k4LkcpI+a/kvZsSRwSM4uA6zGX34e78A2oytr8RG8bJwVb8+AHMUD+Xe 2kYdh/Uj/waQXfqR0OgxQXL9Ct4ZM+JlR1avsNKXWL5AwYXAXCOB3J5PW2XOck7H Zw0vRbGQhjWjQx+B4KOUFg1b3ov/z6Xkr3yaCfRQhXh7KC0Bc0RXPPG5Nv5lCW+z tbbg0zMm3kyfQITRusMSg6IBsDJqOnjaiaKQRcXiD0Sk43ZXb2bUKMxC7+Td3QL4 RyHcWJbQ7YylLTS/x+jxWIcOQ0oO5/54t5PTQ14neYhOz9x4gUk2AYAW6d1vePwb hcC8roQwkHT7HvfYBoc74FM= -----END CERTIFICATE-----` var globalSignRoot = `-----BEGIN CERTIFICATE----- MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp 1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE 38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== -----END CERTIFICATE-----` var moipLeafCert = `-----BEGIN CERTIFICATE----- MIIGQDCCBSigAwIBAgIRAPe/cwh7CUWizo8mYSDavLIwDQYJKoZIhvcNAQELBQAw gZIxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMTgwNgYD VQQDEy9DT01PRE8gUlNBIEV4dGVuZGVkIFZhbGlkYXRpb24gU2VjdXJlIFNlcnZl ciBDQTAeFw0xMzA4MTUwMDAwMDBaFw0xNDA4MTUyMzU5NTlaMIIBQjEXMBUGA1UE BRMOMDg3MTg0MzEwMDAxMDgxEzARBgsrBgEEAYI3PAIBAxMCQlIxGjAYBgsrBgEE AYI3PAIBAhMJU2FvIFBhdWxvMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlv bjELMAkGA1UEBhMCQlIxETAPBgNVBBETCDAxNDUyMDAwMRIwEAYDVQQIEwlTYW8g UGF1bG8xEjAQBgNVBAcTCVNhbyBQYXVsbzEtMCsGA1UECRMkQXZlbmlkYSBCcmln YWRlaXJvIEZhcmlhIExpbWEgLCAyOTI3MR0wGwYDVQQKExRNb2lwIFBhZ2FtZW50 b3MgUy5BLjENMAsGA1UECxMETU9JUDEYMBYGA1UECxMPU1NMIEJsaW5kYWRvIEVW MRgwFgYDVQQDEw9hcGkubW9pcC5jb20uYnIwggEiMA0GCSqGSIb3DQEBAQUAA4IB DwAwggEKAoIBAQDN0b9x6TrXXA9hPCF8/NjqGJ++2D4LO4ZiMFTjs0VwpXy2Y1Oe s74/HuiLGnAHxTmAtV7IpZMibiOcTxcnDYp9oEWkf+gR+hZvwFZwyOBC7wyb3SR3 UvV0N1ZbEVRYpN9kuX/3vjDghjDmzzBwu8a/T+y5JTym5uiJlngVAWyh/RjtIvYi +NVkQMbyVlPGkoCe6c30pH8DKYuUCZU6DHjUsPTX3jAskqbhDSAnclX9iX0p2bmw KVBc+5Vh/2geyzDuquF0w+mNIYdU5h7uXvlmJnf3d2Cext5dxdL8/jezD3U0dAqI pYSKERbyxSkJWxdvRlhdpM9YXMJcpc88xNp1AgMBAAGjggHcMIIB2DAfBgNVHSME GDAWgBQ52v/KKBSKqHQTCLnkDqnS+n6daTAdBgNVHQ4EFgQU/lXuOa7DMExzZjRj LQWcMWGZY7swDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw FAYIKwYBBQUHAwEGCCsGAQUFBwMCMEYGA1UdIAQ/MD0wOwYMKwYBBAGyMQECAQUB MCswKQYIKwYBBQUHAgEWHWh0dHBzOi8vc2VjdXJlLmNvbW9kby5jb20vQ1BTMFYG A1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL0NPTU9ET1JT QUV4dGVuZGVkVmFsaWRhdGlvblNlY3VyZVNlcnZlckNBLmNybDCBhwYIKwYBBQUH AQEEezB5MFEGCCsGAQUFBzAChkVodHRwOi8vY3J0LmNvbW9kb2NhLmNvbS9DT01P RE9SU0FFeHRlbmRlZFZhbGlkYXRpb25TZWN1cmVTZXJ2ZXJDQS5jcnQwJAYIKwYB BQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2NhLmNvbTAvBgNVHREEKDAmgg9hcGku bW9pcC5jb20uYnKCE3d3dy5hcGkubW9pcC5jb20uYnIwDQYJKoZIhvcNAQELBQAD ggEBAFoTmPlaDcf+nudhjXHwud8g7/LRyA8ucb+3/vfmgbn7FUc1eprF5sJS1mA+ pbiTyXw4IxcJq2KUj0Nw3IPOe9k84mzh+XMmdCKH+QK3NWkE9Udz+VpBOBc0dlqC 1RH5umStYDmuZg/8/r652eeQ5kUDcJyADfpKWBgDPYaGtwzKVT4h3Aok9SLXRHx6 z/gOaMjEDMarMCMw4VUIG1pvNraZrG5oTaALPaIXXpd8VqbQYPudYJ6fR5eY3FeW H/ofbYFdRcuD26MfBFWE9VGGral9Fgo8sEHffho+UWhgApuQV4/l5fMzxB5YBXyQ jhuy8PqqZS9OuLilTeLu4a8z2JI= -----END CERTIFICATE-----` var comodoIntermediateSHA384 = `-----BEGIN CERTIFICATE----- MIIGDjCCA/agAwIBAgIQBqdDgNTr/tQ1taP34Wq92DANBgkqhkiG9w0BAQwFADCB hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTIwMjEy MDAwMDAwWhcNMjcwMjExMjM1OTU5WjCBkjELMAkGA1UEBhMCR0IxGzAZBgNVBAgT EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR Q09NT0RPIENBIExpbWl0ZWQxODA2BgNVBAMTL0NPTU9ETyBSU0EgRXh0ZW5kZWQg VmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAlVbeVLTf1QJJe9FbXKKyHo+cK2JMK40SKPMalaPGEP0p3uGf CzhAk9HvbpUQ/OGQF3cs7nU+e2PsYZJuTzurgElr3wDqAwB/L3XVKC/sVmePgIOj vdwDmZOLlJFWW6G4ajo/Br0OksxgnP214J9mMF/b5pTwlWqvyIqvgNnmiDkBfBzA xSr3e5Wg8narbZtyOTDr0VdVAZ1YEZ18bYSPSeidCfw8/QpKdhQhXBZzQCMZdMO6 WAqmli7eNuWf0MLw4eDBYuPCGEUZUaoXHugjddTI0JYT/8ck0YwLJ66eetw6YWNg iJctXQUL5Tvrrs46R3N2qPos3cCHF+msMJn4HwIDAQABo4IBaTCCAWUwHwYDVR0j BBgwFoAUu69+Aj36pvE8hI6t7jiY7NkyMtQwHQYDVR0OBBYEFDna/8ooFIqodBMI ueQOqdL6fp1pMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMD4G A1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwczovL3NlY3VyZS5j b21vZG8uY29tL0NQUzBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9k b2NhLmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggr BgEFBQcBAQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29t L0NPTU9ET1JTQUFkZFRydXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2Nz cC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQEMBQADggIBAERCnUFRK0iIXZebeV4R AUpSGXtBLMeJPNBy3IX6WK/VJeQT+FhlZ58N/1eLqYVeyqZLsKeyLeCMIs37/3mk jCuN/gI9JN6pXV/kD0fQ22YlPodHDK4ixVAihNftSlka9pOlk7DgG4HyVsTIEFPk 1Hax0VtpS3ey4E/EhOfUoFDuPPpE/NBXueEoU/1Tzdy5H3pAvTA/2GzS8+cHnx8i teoiccsq8FZ8/qyo0QYPFBRSTP5kKwxpKrgNUG4+BAe/eiCL+O5lCeHHSQgyPQ0o fkkdt0rvAucNgBfIXOBhYsvss2B5JdoaZXOcOBCgJjqwyBZ9kzEi7nQLiMBciUEA KKlHMd99SUWa9eanRRrSjhMQ34Ovmw2tfn6dNVA0BM7pINae253UqNpktNEvWS5e ojZh1CSggjMziqHRbO9haKPl0latxf1eYusVqHQSTC8xjOnB3xBLAer2VBvNfzu9 XJ/B288ByvK6YBIhMe2pZLiySVgXbVrXzYxtvp5/4gJYp9vDLVj2dAZqmvZh+fYA tmnYOosxWd2R5nwnI4fdAw+PKowegwFOAWEMUnNt/AiiuSpm5HZNMaBWm9lTjaK2 jwLI5jqmBNFI+8NKAnb9L9K8E7bobTQk+p0pisehKxTxlgBzuRPpwLk6R1YCcYAn pLwltum95OmYdBbxN4SBB7SC -----END CERTIFICATE-----` const comodoRSAAuthority = `-----BEGIN CERTIFICATE----- MIIFdDCCBFygAwIBAgIQJ2buVutJ846r13Ci/ITeIjANBgkqhkiG9w0BAQwFADBv MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF eHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFow gYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSswKQYD VQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkq hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkehUktIKVrGsDSTdxc9EZ3SZKzejfSNw AHG8U9/E+ioSj0t/EFa9n3Byt2F/yUsPF6c947AEYe7/EZfH9IY+Cvo+XPmT5jR6 2RRr55yzhaCCenavcZDX7P0N+pxs+t+wgvQUfvm+xKYvT3+Zf7X8Z0NyvQwA1onr ayzT7Y+YHBSrfuXjbvzYqOSSJNpDa2K4Vf3qwbxstovzDo2a5JtsaZn4eEgwRdWt 4Q08RWD8MpZRJ7xnw8outmvqRsfHIKCxH2XeSAi6pE6p8oNGN4Tr6MyBSENnTnIq m1y9TBsoilwie7SrmNnu4FGDwwlGTm0+mfqVF9p8M1dBPI1R7Qu2XK8sYxrfV8g/ vOldxJuvRZnio1oktLqpVj3Pb6r/SVi+8Kj/9Lit6Tf7urj0Czr56ENCHonYhMsT 8dm74YlguIwoVqwUHZwK53Hrzw7dPamWoUi9PPevtQ0iTMARgexWO/bTouJbt7IE IlKVgJNp6I5MZfGRAy1wdALqi2cVKWlSArvX31BqVUa/oKMoYX9w0MOiqiwhqkfO KJwGRXa/ghgntNWutMtQ5mv0TIZxMOmm3xaG4Nj/QN370EKIf6MzOi5cHkERgWPO GHFrK+ymircxXDpqR+DDeVnWIBqv8mqYqnK8V0rSS527EPywTEHl7R09XiidnMy/ s1Hap0flhFMCAwEAAaOB9DCB8TAfBgNVHSMEGDAWgBStvZh6NLQm9/rEJlTvA73g JMtUGjAdBgNVHQ4EFgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQD AgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9 MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9BZGRUcnVzdEV4dGVy bmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6 Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggEBAGS/g/FfmoXQ zbihKVcN6Fr30ek+8nYEbvFScLsePP9NDXRqzIGCJdPDoCpdTPW6i6FtxFQJdcfj Jw5dhHk3QBN39bSsHNA7qxcS1u80GH4r6XnTq1dFDK8o+tDb5VCViLvfhVdpfZLY Uspzgb8c8+a4bmYRBbMelC1/kZWSWfFMzqORcUx8Rww7Cxn2obFshj5cqsQugsv5 B5a6SE2Q8pTIqXOi6wZ7I53eovNNVZ96YUWYGGjHXkBrI/V5eu+MtWuLt29G9Hvx PUsE2JOAWVrgQSQdso8VYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzch5vR pu/xO28QOG8= -----END CERTIFICATE-----` const addTrustRoot = `-----BEGIN CERTIFICATE----- MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= -----END CERTIFICATE-----` go/src/pkg/crypto/x509/x509.go0100644000000000000000000015752712412656737016151 0ustar00rootroot00000000000000// Copyright 2009 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 x509 parses X.509-encoded keys and certificates. package x509 import ( "bytes" "crypto" "crypto/dsa" "crypto/ecdsa" "crypto/elliptic" "crypto/rsa" "crypto/sha1" _ "crypto/sha256" _ "crypto/sha512" "crypto/x509/pkix" "encoding/asn1" "encoding/pem" "errors" "io" "math/big" "net" "strconv" "time" ) // pkixPublicKey reflects a PKIX public key structure. See SubjectPublicKeyInfo // in RFC 3280. type pkixPublicKey struct { Algo pkix.AlgorithmIdentifier BitString asn1.BitString } // ParsePKIXPublicKey parses a DER encoded public key. These values are // typically found in PEM blocks with "BEGIN PUBLIC KEY". func ParsePKIXPublicKey(derBytes []byte) (pub interface{}, err error) { var pki publicKeyInfo if _, err = asn1.Unmarshal(derBytes, &pki); err != nil { return } algo := getPublicKeyAlgorithmFromOID(pki.Algorithm.Algorithm) if algo == UnknownPublicKeyAlgorithm { return nil, errors.New("x509: unknown public key algorithm") } return parsePublicKey(algo, &pki) } func marshalPublicKey(pub interface{}) (publicKeyBytes []byte, publicKeyAlgorithm pkix.AlgorithmIdentifier, err error) { switch pub := pub.(type) { case *rsa.PublicKey: publicKeyBytes, err = asn1.Marshal(rsaPublicKey{ N: pub.N, E: pub.E, }) publicKeyAlgorithm.Algorithm = oidPublicKeyRSA // This is a NULL parameters value which is technically // superfluous, but most other code includes it and, by // doing this, we match their public key hashes. publicKeyAlgorithm.Parameters = asn1.RawValue{ Tag: 5, } case *ecdsa.PublicKey: publicKeyBytes = elliptic.Marshal(pub.Curve, pub.X, pub.Y) oid, ok := oidFromNamedCurve(pub.Curve) if !ok { return nil, pkix.AlgorithmIdentifier{}, errors.New("x509: unsupported elliptic curve") } publicKeyAlgorithm.Algorithm = oidPublicKeyECDSA var paramBytes []byte paramBytes, err = asn1.Marshal(oid) if err != nil { return } publicKeyAlgorithm.Parameters.FullBytes = paramBytes default: return nil, pkix.AlgorithmIdentifier{}, errors.New("x509: only RSA and ECDSA public keys supported") } return publicKeyBytes, publicKeyAlgorithm, nil } // MarshalPKIXPublicKey serialises a public key to DER-encoded PKIX format. func MarshalPKIXPublicKey(pub interface{}) ([]byte, error) { var publicKeyBytes []byte var publicKeyAlgorithm pkix.AlgorithmIdentifier var err error if publicKeyBytes, publicKeyAlgorithm, err = marshalPublicKey(pub); err != nil { return nil, err } pkix := pkixPublicKey{ Algo: publicKeyAlgorithm, BitString: asn1.BitString{ Bytes: publicKeyBytes, BitLength: 8 * len(publicKeyBytes), }, } ret, _ := asn1.Marshal(pkix) return ret, nil } // These structures reflect the ASN.1 structure of X.509 certificates.: type certificate struct { Raw asn1.RawContent TBSCertificate tbsCertificate SignatureAlgorithm pkix.AlgorithmIdentifier SignatureValue asn1.BitString } type tbsCertificate struct { Raw asn1.RawContent Version int `asn1:"optional,explicit,default:1,tag:0"` SerialNumber *big.Int SignatureAlgorithm pkix.AlgorithmIdentifier Issuer asn1.RawValue Validity validity Subject asn1.RawValue PublicKey publicKeyInfo UniqueId asn1.BitString `asn1:"optional,tag:1"` SubjectUniqueId asn1.BitString `asn1:"optional,tag:2"` Extensions []pkix.Extension `asn1:"optional,explicit,tag:3"` } type dsaAlgorithmParameters struct { P, Q, G *big.Int } type dsaSignature struct { R, S *big.Int } type ecdsaSignature dsaSignature type validity struct { NotBefore, NotAfter time.Time } type publicKeyInfo struct { Raw asn1.RawContent Algorithm pkix.AlgorithmIdentifier PublicKey asn1.BitString } // RFC 5280, 4.2.1.1 type authKeyId struct { Id []byte `asn1:"optional,tag:0"` } type SignatureAlgorithm int const ( UnknownSignatureAlgorithm SignatureAlgorithm = iota MD2WithRSA MD5WithRSA SHA1WithRSA SHA256WithRSA SHA384WithRSA SHA512WithRSA DSAWithSHA1 DSAWithSHA256 ECDSAWithSHA1 ECDSAWithSHA256 ECDSAWithSHA384 ECDSAWithSHA512 ) type PublicKeyAlgorithm int const ( UnknownPublicKeyAlgorithm PublicKeyAlgorithm = iota RSA DSA ECDSA ) // OIDs for signature algorithms // // pkcs-1 OBJECT IDENTIFIER ::= { // iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 } // // // RFC 3279 2.2.1 RSA Signature Algorithms // // md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } // // md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } // // sha-1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } // // dsaWithSha1 OBJECT IDENTIFIER ::= { // iso(1) member-body(2) us(840) x9-57(10040) x9cm(4) 3 } // // RFC 3279 2.2.3 ECDSA Signature Algorithm // // ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { // iso(1) member-body(2) us(840) ansi-x962(10045) // signatures(4) ecdsa-with-SHA1(1)} // // // RFC 4055 5 PKCS #1 Version 1.5 // // sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 } // // sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 } // // sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 } // // // RFC 5758 3.1 DSA Signature Algorithms // // dsaWithSha256 OBJECT IDENTIFIER ::= { // joint-iso-ccitt(2) country(16) us(840) organization(1) gov(101) // csor(3) algorithms(4) id-dsa-with-sha2(3) 2} // // RFC 5758 3.2 ECDSA Signature Algorithm // // ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) // us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 } // // ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) // us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 } // // ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) // us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 } var ( oidSignatureMD2WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 2} oidSignatureMD5WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 4} oidSignatureSHA1WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 5} oidSignatureSHA256WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 11} oidSignatureSHA384WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 12} oidSignatureSHA512WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 13} oidSignatureDSAWithSHA1 = asn1.ObjectIdentifier{1, 2, 840, 10040, 4, 3} oidSignatureDSAWithSHA256 = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 4, 3, 2} oidSignatureECDSAWithSHA1 = asn1.ObjectIdentifier{1, 2, 840, 10045, 4, 1} oidSignatureECDSAWithSHA256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 4, 3, 2} oidSignatureECDSAWithSHA384 = asn1.ObjectIdentifier{1, 2, 840, 10045, 4, 3, 3} oidSignatureECDSAWithSHA512 = asn1.ObjectIdentifier{1, 2, 840, 10045, 4, 3, 4} ) var signatureAlgorithmDetails = []struct { algo SignatureAlgorithm oid asn1.ObjectIdentifier pubKeyAlgo PublicKeyAlgorithm hash crypto.Hash }{ {MD2WithRSA, oidSignatureMD2WithRSA, RSA, crypto.Hash(0) /* no value for MD2 */}, {MD5WithRSA, oidSignatureMD5WithRSA, RSA, crypto.MD5}, {SHA1WithRSA, oidSignatureSHA1WithRSA, RSA, crypto.SHA1}, {SHA256WithRSA, oidSignatureSHA256WithRSA, RSA, crypto.SHA256}, {SHA384WithRSA, oidSignatureSHA384WithRSA, RSA, crypto.SHA384}, {SHA512WithRSA, oidSignatureSHA512WithRSA, RSA, crypto.SHA512}, {DSAWithSHA1, oidSignatureDSAWithSHA1, DSA, crypto.SHA1}, {DSAWithSHA256, oidSignatureDSAWithSHA256, DSA, crypto.SHA256}, {ECDSAWithSHA1, oidSignatureECDSAWithSHA1, ECDSA, crypto.SHA1}, {ECDSAWithSHA256, oidSignatureECDSAWithSHA256, ECDSA, crypto.SHA256}, {ECDSAWithSHA384, oidSignatureECDSAWithSHA384, ECDSA, crypto.SHA384}, {ECDSAWithSHA512, oidSignatureECDSAWithSHA512, ECDSA, crypto.SHA512}, } func getSignatureAlgorithmFromOID(oid asn1.ObjectIdentifier) SignatureAlgorithm { for _, details := range signatureAlgorithmDetails { if oid.Equal(details.oid) { return details.algo } } return UnknownSignatureAlgorithm } // RFC 3279, 2.3 Public Key Algorithms // // pkcs-1 OBJECT IDENTIFIER ::== { iso(1) member-body(2) us(840) // rsadsi(113549) pkcs(1) 1 } // // rsaEncryption OBJECT IDENTIFIER ::== { pkcs1-1 1 } // // id-dsa OBJECT IDENTIFIER ::== { iso(1) member-body(2) us(840) // x9-57(10040) x9cm(4) 1 } // // RFC 5480, 2.1.1 Unrestricted Algorithm Identifier and Parameters // // id-ecPublicKey OBJECT IDENTIFIER ::= { // iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 } var ( oidPublicKeyRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 1} oidPublicKeyDSA = asn1.ObjectIdentifier{1, 2, 840, 10040, 4, 1} oidPublicKeyECDSA = asn1.ObjectIdentifier{1, 2, 840, 10045, 2, 1} ) func getPublicKeyAlgorithmFromOID(oid asn1.ObjectIdentifier) PublicKeyAlgorithm { switch { case oid.Equal(oidPublicKeyRSA): return RSA case oid.Equal(oidPublicKeyDSA): return DSA case oid.Equal(oidPublicKeyECDSA): return ECDSA } return UnknownPublicKeyAlgorithm } // RFC 5480, 2.1.1.1. Named Curve // // secp224r1 OBJECT IDENTIFIER ::= { // iso(1) identified-organization(3) certicom(132) curve(0) 33 } // // secp256r1 OBJECT IDENTIFIER ::= { // iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) // prime(1) 7 } // // secp384r1 OBJECT IDENTIFIER ::= { // iso(1) identified-organization(3) certicom(132) curve(0) 34 } // // secp521r1 OBJECT IDENTIFIER ::= { // iso(1) identified-organization(3) certicom(132) curve(0) 35 } // // NB: secp256r1 is equivalent to prime256v1 var ( oidNamedCurveP224 = asn1.ObjectIdentifier{1, 3, 132, 0, 33} oidNamedCurveP256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 3, 1, 7} oidNamedCurveP384 = asn1.ObjectIdentifier{1, 3, 132, 0, 34} oidNamedCurveP521 = asn1.ObjectIdentifier{1, 3, 132, 0, 35} ) func namedCurveFromOID(oid asn1.ObjectIdentifier) elliptic.Curve { switch { case oid.Equal(oidNamedCurveP224): return elliptic.P224() case oid.Equal(oidNamedCurveP256): return elliptic.P256() case oid.Equal(oidNamedCurveP384): return elliptic.P384() case oid.Equal(oidNamedCurveP521): return elliptic.P521() } return nil } func oidFromNamedCurve(curve elliptic.Curve) (asn1.ObjectIdentifier, bool) { switch curve { case elliptic.P224(): return oidNamedCurveP224, true case elliptic.P256(): return oidNamedCurveP256, true case elliptic.P384(): return oidNamedCurveP384, true case elliptic.P521(): return oidNamedCurveP521, true } return nil, false } // KeyUsage represents the set of actions that are valid for a given key. It's // a bitmap of the KeyUsage* constants. type KeyUsage int const ( KeyUsageDigitalSignature KeyUsage = 1 << iota KeyUsageContentCommitment KeyUsageKeyEncipherment KeyUsageDataEncipherment KeyUsageKeyAgreement KeyUsageCertSign KeyUsageCRLSign KeyUsageEncipherOnly KeyUsageDecipherOnly ) // RFC 5280, 4.2.1.12 Extended Key Usage // // anyExtendedKeyUsage OBJECT IDENTIFIER ::= { id-ce-extKeyUsage 0 } // // id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } // // id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } // id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } // id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 } // id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 } // id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 } // id-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-kp 9 } var ( oidExtKeyUsageAny = asn1.ObjectIdentifier{2, 5, 29, 37, 0} oidExtKeyUsageServerAuth = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 1} oidExtKeyUsageClientAuth = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 2} oidExtKeyUsageCodeSigning = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 3} oidExtKeyUsageEmailProtection = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 4} oidExtKeyUsageIPSECEndSystem = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 5} oidExtKeyUsageIPSECTunnel = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 6} oidExtKeyUsageIPSECUser = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 7} oidExtKeyUsageTimeStamping = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 8} oidExtKeyUsageOCSPSigning = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 3, 9} oidExtKeyUsageMicrosoftServerGatedCrypto = asn1.ObjectIdentifier{1, 3, 6, 1, 4, 1, 311, 10, 3, 3} oidExtKeyUsageNetscapeServerGatedCrypto = asn1.ObjectIdentifier{2, 16, 840, 1, 113730, 4, 1} ) // ExtKeyUsage represents an extended set of actions that are valid for a given key. // Each of the ExtKeyUsage* constants define a unique action. type ExtKeyUsage int const ( ExtKeyUsageAny ExtKeyUsage = iota ExtKeyUsageServerAuth ExtKeyUsageClientAuth ExtKeyUsageCodeSigning ExtKeyUsageEmailProtection ExtKeyUsageIPSECEndSystem ExtKeyUsageIPSECTunnel ExtKeyUsageIPSECUser ExtKeyUsageTimeStamping ExtKeyUsageOCSPSigning ExtKeyUsageMicrosoftServerGatedCrypto ExtKeyUsageNetscapeServerGatedCrypto ) // extKeyUsageOIDs contains the mapping between an ExtKeyUsage and its OID. var extKeyUsageOIDs = []struct { extKeyUsage ExtKeyUsage oid asn1.ObjectIdentifier }{ {ExtKeyUsageAny, oidExtKeyUsageAny}, {ExtKeyUsageServerAuth, oidExtKeyUsageServerAuth}, {ExtKeyUsageClientAuth, oidExtKeyUsageClientAuth}, {ExtKeyUsageCodeSigning, oidExtKeyUsageCodeSigning}, {ExtKeyUsageEmailProtection, oidExtKeyUsageEmailProtection}, {ExtKeyUsageIPSECEndSystem, oidExtKeyUsageIPSECEndSystem}, {ExtKeyUsageIPSECTunnel, oidExtKeyUsageIPSECTunnel}, {ExtKeyUsageIPSECUser, oidExtKeyUsageIPSECUser}, {ExtKeyUsageTimeStamping, oidExtKeyUsageTimeStamping}, {ExtKeyUsageOCSPSigning, oidExtKeyUsageOCSPSigning}, {ExtKeyUsageMicrosoftServerGatedCrypto, oidExtKeyUsageMicrosoftServerGatedCrypto}, {ExtKeyUsageNetscapeServerGatedCrypto, oidExtKeyUsageNetscapeServerGatedCrypto}, } func extKeyUsageFromOID(oid asn1.ObjectIdentifier) (eku ExtKeyUsage, ok bool) { for _, pair := range extKeyUsageOIDs { if oid.Equal(pair.oid) { return pair.extKeyUsage, true } } return } func oidFromExtKeyUsage(eku ExtKeyUsage) (oid asn1.ObjectIdentifier, ok bool) { for _, pair := range extKeyUsageOIDs { if eku == pair.extKeyUsage { return pair.oid, true } } return } // A Certificate represents an X.509 certificate. type Certificate struct { Raw []byte // Complete ASN.1 DER content (certificate, signature algorithm and signature). RawTBSCertificate []byte // Certificate part of raw ASN.1 DER content. RawSubjectPublicKeyInfo []byte // DER encoded SubjectPublicKeyInfo. RawSubject []byte // DER encoded Subject RawIssuer []byte // DER encoded Issuer Signature []byte SignatureAlgorithm SignatureAlgorithm PublicKeyAlgorithm PublicKeyAlgorithm PublicKey interface{} Version int SerialNumber *big.Int Issuer pkix.Name Subject pkix.Name NotBefore, NotAfter time.Time // Validity bounds. KeyUsage KeyUsage // Extensions contains raw X.509 extensions. When parsing certificates, // this can be used to extract non-critical extensions that are not // parsed by this package. When marshaling certificates, the Extensions // field is ignored, see ExtraExtensions. Extensions []pkix.Extension // ExtraExtensions contains extensions to be copied, raw, into any // marshaled certificates. Values override any extensions that would // otherwise be produced based on the other fields. The ExtraExtensions // field is not populated when parsing certificates, see Extensions. ExtraExtensions []pkix.Extension ExtKeyUsage []ExtKeyUsage // Sequence of extended key usages. UnknownExtKeyUsage []asn1.ObjectIdentifier // Encountered extended key usages unknown to this package. BasicConstraintsValid bool // if true then the next two fields are valid. IsCA bool MaxPathLen int SubjectKeyId []byte AuthorityKeyId []byte // RFC 5280, 4.2.2.1 (Authority Information Access) OCSPServer []string IssuingCertificateURL []string // Subject Alternate Name values DNSNames []string EmailAddresses []string IPAddresses []net.IP // Name constraints PermittedDNSDomainsCritical bool // if true then the name constraints are marked critical. PermittedDNSDomains []string // CRL Distribution Points CRLDistributionPoints []string PolicyIdentifiers []asn1.ObjectIdentifier } // ErrUnsupportedAlgorithm results from attempting to perform an operation that // involves algorithms that are not currently implemented. var ErrUnsupportedAlgorithm = errors.New("x509: cannot verify signature: algorithm unimplemented") // ConstraintViolationError results when a requested usage is not permitted by // a certificate. For example: checking a signature when the public key isn't a // certificate signing key. type ConstraintViolationError struct{} func (ConstraintViolationError) Error() string { return "x509: invalid signature: parent certificate cannot sign this kind of certificate" } func (c *Certificate) Equal(other *Certificate) bool { return bytes.Equal(c.Raw, other.Raw) } // Entrust have a broken root certificate (CN=Entrust.net Certification // Authority (2048)) which isn't marked as a CA certificate and is thus invalid // according to PKIX. // We recognise this certificate by its SubjectPublicKeyInfo and exempt it // from the Basic Constraints requirement. // See http://www.entrust.net/knowledge-base/technote.cfm?tn=7869 // // TODO(agl): remove this hack once their reissued root is sufficiently // widespread. var entrustBrokenSPKI = []byte{ 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x97, 0xa3, 0x2d, 0x3c, 0x9e, 0xde, 0x05, 0xda, 0x13, 0xc2, 0x11, 0x8d, 0x9d, 0x8e, 0xe3, 0x7f, 0xc7, 0x4b, 0x7e, 0x5a, 0x9f, 0xb3, 0xff, 0x62, 0xab, 0x73, 0xc8, 0x28, 0x6b, 0xba, 0x10, 0x64, 0x82, 0x87, 0x13, 0xcd, 0x57, 0x18, 0xff, 0x28, 0xce, 0xc0, 0xe6, 0x0e, 0x06, 0x91, 0x50, 0x29, 0x83, 0xd1, 0xf2, 0xc3, 0x2a, 0xdb, 0xd8, 0xdb, 0x4e, 0x04, 0xcc, 0x00, 0xeb, 0x8b, 0xb6, 0x96, 0xdc, 0xbc, 0xaa, 0xfa, 0x52, 0x77, 0x04, 0xc1, 0xdb, 0x19, 0xe4, 0xae, 0x9c, 0xfd, 0x3c, 0x8b, 0x03, 0xef, 0x4d, 0xbc, 0x1a, 0x03, 0x65, 0xf9, 0xc1, 0xb1, 0x3f, 0x72, 0x86, 0xf2, 0x38, 0xaa, 0x19, 0xae, 0x10, 0x88, 0x78, 0x28, 0xda, 0x75, 0xc3, 0x3d, 0x02, 0x82, 0x02, 0x9c, 0xb9, 0xc1, 0x65, 0x77, 0x76, 0x24, 0x4c, 0x98, 0xf7, 0x6d, 0x31, 0x38, 0xfb, 0xdb, 0xfe, 0xdb, 0x37, 0x02, 0x76, 0xa1, 0x18, 0x97, 0xa6, 0xcc, 0xde, 0x20, 0x09, 0x49, 0x36, 0x24, 0x69, 0x42, 0xf6, 0xe4, 0x37, 0x62, 0xf1, 0x59, 0x6d, 0xa9, 0x3c, 0xed, 0x34, 0x9c, 0xa3, 0x8e, 0xdb, 0xdc, 0x3a, 0xd7, 0xf7, 0x0a, 0x6f, 0xef, 0x2e, 0xd8, 0xd5, 0x93, 0x5a, 0x7a, 0xed, 0x08, 0x49, 0x68, 0xe2, 0x41, 0xe3, 0x5a, 0x90, 0xc1, 0x86, 0x55, 0xfc, 0x51, 0x43, 0x9d, 0xe0, 0xb2, 0xc4, 0x67, 0xb4, 0xcb, 0x32, 0x31, 0x25, 0xf0, 0x54, 0x9f, 0x4b, 0xd1, 0x6f, 0xdb, 0xd4, 0xdd, 0xfc, 0xaf, 0x5e, 0x6c, 0x78, 0x90, 0x95, 0xde, 0xca, 0x3a, 0x48, 0xb9, 0x79, 0x3c, 0x9b, 0x19, 0xd6, 0x75, 0x05, 0xa0, 0xf9, 0x88, 0xd7, 0xc1, 0xe8, 0xa5, 0x09, 0xe4, 0x1a, 0x15, 0xdc, 0x87, 0x23, 0xaa, 0xb2, 0x75, 0x8c, 0x63, 0x25, 0x87, 0xd8, 0xf8, 0x3d, 0xa6, 0xc2, 0xcc, 0x66, 0xff, 0xa5, 0x66, 0x68, 0x55, 0x02, 0x03, 0x01, 0x00, 0x01, } // CheckSignatureFrom verifies that the signature on c is a valid signature // from parent. func (c *Certificate) CheckSignatureFrom(parent *Certificate) (err error) { // RFC 5280, 4.2.1.9: // "If the basic constraints extension is not present in a version 3 // certificate, or the extension is present but the cA boolean is not // asserted, then the certified public key MUST NOT be used to verify // certificate signatures." // (except for Entrust, see comment above entrustBrokenSPKI) if (parent.Version == 3 && !parent.BasicConstraintsValid || parent.BasicConstraintsValid && !parent.IsCA) && !bytes.Equal(c.RawSubjectPublicKeyInfo, entrustBrokenSPKI) { return ConstraintViolationError{} } if parent.KeyUsage != 0 && parent.KeyUsage&KeyUsageCertSign == 0 { return ConstraintViolationError{} } if parent.PublicKeyAlgorithm == UnknownPublicKeyAlgorithm { return ErrUnsupportedAlgorithm } // TODO(agl): don't ignore the path length constraint. return parent.CheckSignature(c.SignatureAlgorithm, c.RawTBSCertificate, c.Signature) } // CheckSignature verifies that signature is a valid signature over signed from // c's public key. func (c *Certificate) CheckSignature(algo SignatureAlgorithm, signed, signature []byte) (err error) { var hashType crypto.Hash switch algo { case SHA1WithRSA, DSAWithSHA1, ECDSAWithSHA1: hashType = crypto.SHA1 case SHA256WithRSA, DSAWithSHA256, ECDSAWithSHA256: hashType = crypto.SHA256 case SHA384WithRSA, ECDSAWithSHA384: hashType = crypto.SHA384 case SHA512WithRSA, ECDSAWithSHA512: hashType = crypto.SHA512 default: return ErrUnsupportedAlgorithm } if !hashType.Available() { return ErrUnsupportedAlgorithm } h := hashType.New() h.Write(signed) digest := h.Sum(nil) switch pub := c.PublicKey.(type) { case *rsa.PublicKey: return rsa.VerifyPKCS1v15(pub, hashType, digest, signature) case *dsa.PublicKey: dsaSig := new(dsaSignature) if _, err := asn1.Unmarshal(signature, dsaSig); err != nil { return err } if dsaSig.R.Sign() <= 0 || dsaSig.S.Sign() <= 0 { return errors.New("x509: DSA signature contained zero or negative values") } if !dsa.Verify(pub, digest, dsaSig.R, dsaSig.S) { return errors.New("x509: DSA verification failure") } return case *ecdsa.PublicKey: ecdsaSig := new(ecdsaSignature) if _, err := asn1.Unmarshal(signature, ecdsaSig); err != nil { return err } if ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0 { return errors.New("x509: ECDSA signature contained zero or negative values") } if !ecdsa.Verify(pub, digest, ecdsaSig.R, ecdsaSig.S) { return errors.New("x509: ECDSA verification failure") } return } return ErrUnsupportedAlgorithm } // CheckCRLSignature checks that the signature in crl is from c. func (c *Certificate) CheckCRLSignature(crl *pkix.CertificateList) (err error) { algo := getSignatureAlgorithmFromOID(crl.SignatureAlgorithm.Algorithm) return c.CheckSignature(algo, crl.TBSCertList.Raw, crl.SignatureValue.RightAlign()) } type UnhandledCriticalExtension struct{} func (h UnhandledCriticalExtension) Error() string { return "x509: unhandled critical extension" } type basicConstraints struct { IsCA bool `asn1:"optional"` MaxPathLen int `asn1:"optional,default:-1"` } // RFC 5280 4.2.1.4 type policyInformation struct { Policy asn1.ObjectIdentifier // policyQualifiers omitted } // RFC 5280, 4.2.1.10 type nameConstraints struct { Permitted []generalSubtree `asn1:"optional,tag:0"` Excluded []generalSubtree `asn1:"optional,tag:1"` } type generalSubtree struct { Name string `asn1:"tag:2,optional,ia5"` } // RFC 5280, 4.2.2.1 type authorityInfoAccess struct { Method asn1.ObjectIdentifier Location asn1.RawValue } // RFC 5280, 4.2.1.14 type distributionPoint struct { DistributionPoint distributionPointName `asn1:"optional,tag:0"` Reason asn1.BitString `asn1:"optional,tag:1"` CRLIssuer asn1.RawValue `asn1:"optional,tag:2"` } type distributionPointName struct { FullName asn1.RawValue `asn1:"optional,tag:0"` RelativeName pkix.RDNSequence `asn1:"optional,tag:1"` } func parsePublicKey(algo PublicKeyAlgorithm, keyData *publicKeyInfo) (interface{}, error) { asn1Data := keyData.PublicKey.RightAlign() switch algo { case RSA: p := new(rsaPublicKey) _, err := asn1.Unmarshal(asn1Data, p) if err != nil { return nil, err } if p.N.Sign() <= 0 { return nil, errors.New("x509: RSA modulus is not a positive number") } if p.E <= 0 { return nil, errors.New("x509: RSA public exponent is not a positive number") } pub := &rsa.PublicKey{ E: p.E, N: p.N, } return pub, nil case DSA: var p *big.Int _, err := asn1.Unmarshal(asn1Data, &p) if err != nil { return nil, err } paramsData := keyData.Algorithm.Parameters.FullBytes params := new(dsaAlgorithmParameters) _, err = asn1.Unmarshal(paramsData, params) if err != nil { return nil, err } if p.Sign() <= 0 || params.P.Sign() <= 0 || params.Q.Sign() <= 0 || params.G.Sign() <= 0 { return nil, errors.New("x509: zero or negative DSA parameter") } pub := &dsa.PublicKey{ Parameters: dsa.Parameters{ P: params.P, Q: params.Q, G: params.G, }, Y: p, } return pub, nil case ECDSA: paramsData := keyData.Algorithm.Parameters.FullBytes namedCurveOID := new(asn1.ObjectIdentifier) _, err := asn1.Unmarshal(paramsData, namedCurveOID) if err != nil { return nil, err } namedCurve := namedCurveFromOID(*namedCurveOID) if namedCurve == nil { return nil, errors.New("x509: unsupported elliptic curve") } x, y := elliptic.Unmarshal(namedCurve, asn1Data) if x == nil { return nil, errors.New("x509: failed to unmarshal elliptic curve point") } pub := &ecdsa.PublicKey{ Curve: namedCurve, X: x, Y: y, } return pub, nil default: return nil, nil } } func parseSANExtension(value []byte) (dnsNames, emailAddresses []string, ipAddresses []net.IP, err error) { // RFC 5280, 4.2.1.6 // SubjectAltName ::= GeneralNames // // GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName // // GeneralName ::= CHOICE { // otherName [0] OtherName, // rfc822Name [1] IA5String, // dNSName [2] IA5String, // x400Address [3] ORAddress, // directoryName [4] Name, // ediPartyName [5] EDIPartyName, // uniformResourceIdentifier [6] IA5String, // iPAddress [7] OCTET STRING, // registeredID [8] OBJECT IDENTIFIER } var seq asn1.RawValue if _, err = asn1.Unmarshal(value, &seq); err != nil { return } if !seq.IsCompound || seq.Tag != 16 || seq.Class != 0 { err = asn1.StructuralError{Msg: "bad SAN sequence"} return } rest := seq.Bytes for len(rest) > 0 { var v asn1.RawValue rest, err = asn1.Unmarshal(rest, &v) if err != nil { return } switch v.Tag { case 1: emailAddresses = append(emailAddresses, string(v.Bytes)) case 2: dnsNames = append(dnsNames, string(v.Bytes)) case 7: switch len(v.Bytes) { case net.IPv4len, net.IPv6len: ipAddresses = append(ipAddresses, v.Bytes) default: err = errors.New("x509: certificate contained IP address of length " + strconv.Itoa(len(v.Bytes))) return } } } return } func parseCertificate(in *certificate) (*Certificate, error) { out := new(Certificate) out.Raw = in.Raw out.RawTBSCertificate = in.TBSCertificate.Raw out.RawSubjectPublicKeyInfo = in.TBSCertificate.PublicKey.Raw out.RawSubject = in.TBSCertificate.Subject.FullBytes out.RawIssuer = in.TBSCertificate.Issuer.FullBytes out.Signature = in.SignatureValue.RightAlign() out.SignatureAlgorithm = getSignatureAlgorithmFromOID(in.TBSCertificate.SignatureAlgorithm.Algorithm) out.PublicKeyAlgorithm = getPublicKeyAlgorithmFromOID(in.TBSCertificate.PublicKey.Algorithm.Algorithm) var err error out.PublicKey, err = parsePublicKey(out.PublicKeyAlgorithm, &in.TBSCertificate.PublicKey) if err != nil { return nil, err } if in.TBSCertificate.SerialNumber.Sign() < 0 { return nil, errors.New("x509: negative serial number") } out.Version = in.TBSCertificate.Version + 1 out.SerialNumber = in.TBSCertificate.SerialNumber var issuer, subject pkix.RDNSequence if _, err := asn1.Unmarshal(in.TBSCertificate.Subject.FullBytes, &subject); err != nil { return nil, err } if _, err := asn1.Unmarshal(in.TBSCertificate.Issuer.FullBytes, &issuer); err != nil { return nil, err } out.Issuer.FillFromRDNSequence(&issuer) out.Subject.FillFromRDNSequence(&subject) out.NotBefore = in.TBSCertificate.Validity.NotBefore out.NotAfter = in.TBSCertificate.Validity.NotAfter for _, e := range in.TBSCertificate.Extensions { out.Extensions = append(out.Extensions, e) if len(e.Id) == 4 && e.Id[0] == 2 && e.Id[1] == 5 && e.Id[2] == 29 { switch e.Id[3] { case 15: // RFC 5280, 4.2.1.3 var usageBits asn1.BitString _, err := asn1.Unmarshal(e.Value, &usageBits) if err == nil { var usage int for i := 0; i < 9; i++ { if usageBits.At(i) != 0 { usage |= 1 << uint(i) } } out.KeyUsage = KeyUsage(usage) continue } case 19: // RFC 5280, 4.2.1.9 var constraints basicConstraints _, err := asn1.Unmarshal(e.Value, &constraints) if err == nil { out.BasicConstraintsValid = true out.IsCA = constraints.IsCA out.MaxPathLen = constraints.MaxPathLen continue } case 17: out.DNSNames, out.EmailAddresses, out.IPAddresses, err = parseSANExtension(e.Value) if err != nil { return nil, err } if len(out.DNSNames) > 0 || len(out.EmailAddresses) > 0 || len(out.IPAddresses) > 0 { continue } // If we didn't parse any of the names then we // fall through to the critical check below. case 30: // RFC 5280, 4.2.1.10 // NameConstraints ::= SEQUENCE { // permittedSubtrees [0] GeneralSubtrees OPTIONAL, // excludedSubtrees [1] GeneralSubtrees OPTIONAL } // // GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree // // GeneralSubtree ::= SEQUENCE { // base GeneralName, // minimum [0] BaseDistance DEFAULT 0, // maximum [1] BaseDistance OPTIONAL } // // BaseDistance ::= INTEGER (0..MAX) var constraints nameConstraints _, err := asn1.Unmarshal(e.Value, &constraints) if err != nil { return nil, err } if len(constraints.Excluded) > 0 && e.Critical { return out, UnhandledCriticalExtension{} } for _, subtree := range constraints.Permitted { if len(subtree.Name) == 0 { if e.Critical { return out, UnhandledCriticalExtension{} } continue } out.PermittedDNSDomains = append(out.PermittedDNSDomains, subtree.Name) } continue case 31: // RFC 5280, 4.2.1.14 // CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint // // DistributionPoint ::= SEQUENCE { // distributionPoint [0] DistributionPointName OPTIONAL, // reasons [1] ReasonFlags OPTIONAL, // cRLIssuer [2] GeneralNames OPTIONAL } // // DistributionPointName ::= CHOICE { // fullName [0] GeneralNames, // nameRelativeToCRLIssuer [1] RelativeDistinguishedName } var cdp []distributionPoint _, err := asn1.Unmarshal(e.Value, &cdp) if err != nil { return nil, err } for _, dp := range cdp { var n asn1.RawValue _, err = asn1.Unmarshal(dp.DistributionPoint.FullName.Bytes, &n) if err != nil { return nil, err } if n.Tag == 6 { out.CRLDistributionPoints = append(out.CRLDistributionPoints, string(n.Bytes)) } } continue case 35: // RFC 5280, 4.2.1.1 var a authKeyId _, err = asn1.Unmarshal(e.Value, &a) if err != nil { return nil, err } out.AuthorityKeyId = a.Id continue case 37: // RFC 5280, 4.2.1.12. Extended Key Usage // id-ce-extKeyUsage OBJECT IDENTIFIER ::= { id-ce 37 } // // ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId // // KeyPurposeId ::= OBJECT IDENTIFIER var keyUsage []asn1.ObjectIdentifier _, err = asn1.Unmarshal(e.Value, &keyUsage) if err != nil { return nil, err } for _, u := range keyUsage { if extKeyUsage, ok := extKeyUsageFromOID(u); ok { out.ExtKeyUsage = append(out.ExtKeyUsage, extKeyUsage) } else { out.UnknownExtKeyUsage = append(out.UnknownExtKeyUsage, u) } } continue case 14: // RFC 5280, 4.2.1.2 var keyid []byte _, err = asn1.Unmarshal(e.Value, &keyid) if err != nil { return nil, err } out.SubjectKeyId = keyid continue case 32: // RFC 5280 4.2.1.4: Certificate Policies var policies []policyInformation if _, err = asn1.Unmarshal(e.Value, &policies); err != nil { return nil, err } out.PolicyIdentifiers = make([]asn1.ObjectIdentifier, len(policies)) for i, policy := range policies { out.PolicyIdentifiers[i] = policy.Policy } } } else if e.Id.Equal(oidExtensionAuthorityInfoAccess) { // RFC 5280 4.2.2.1: Authority Information Access var aia []authorityInfoAccess if _, err = asn1.Unmarshal(e.Value, &aia); err != nil { return nil, err } for _, v := range aia { // GeneralName: uniformResourceIdentifier [6] IA5String if v.Location.Tag != 6 { continue } if v.Method.Equal(oidAuthorityInfoAccessOcsp) { out.OCSPServer = append(out.OCSPServer, string(v.Location.Bytes)) } else if v.Method.Equal(oidAuthorityInfoAccessIssuers) { out.IssuingCertificateURL = append(out.IssuingCertificateURL, string(v.Location.Bytes)) } } } if e.Critical { return out, UnhandledCriticalExtension{} } } return out, nil } // ParseCertificate parses a single certificate from the given ASN.1 DER data. func ParseCertificate(asn1Data []byte) (*Certificate, error) { var cert certificate rest, err := asn1.Unmarshal(asn1Data, &cert) if err != nil { return nil, err } if len(rest) > 0 { return nil, asn1.SyntaxError{Msg: "trailing data"} } return parseCertificate(&cert) } // ParseCertificates parses one or more certificates from the given ASN.1 DER // data. The certificates must be concatenated with no intermediate padding. func ParseCertificates(asn1Data []byte) ([]*Certificate, error) { var v []*certificate for len(asn1Data) > 0 { cert := new(certificate) var err error asn1Data, err = asn1.Unmarshal(asn1Data, cert) if err != nil { return nil, err } v = append(v, cert) } ret := make([]*Certificate, len(v)) for i, ci := range v { cert, err := parseCertificate(ci) if err != nil { return nil, err } ret[i] = cert } return ret, nil } func reverseBitsInAByte(in byte) byte { b1 := in>>4 | in<<4 b2 := b1>>2&0x33 | b1<<2&0xcc b3 := b2>>1&0x55 | b2<<1&0xaa return b3 } var ( oidExtensionSubjectKeyId = []int{2, 5, 29, 14} oidExtensionKeyUsage = []int{2, 5, 29, 15} oidExtensionExtendedKeyUsage = []int{2, 5, 29, 37} oidExtensionAuthorityKeyId = []int{2, 5, 29, 35} oidExtensionBasicConstraints = []int{2, 5, 29, 19} oidExtensionSubjectAltName = []int{2, 5, 29, 17} oidExtensionCertificatePolicies = []int{2, 5, 29, 32} oidExtensionNameConstraints = []int{2, 5, 29, 30} oidExtensionCRLDistributionPoints = []int{2, 5, 29, 31} oidExtensionAuthorityInfoAccess = []int{1, 3, 6, 1, 5, 5, 7, 1, 1} ) var ( oidAuthorityInfoAccessOcsp = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 48, 1} oidAuthorityInfoAccessIssuers = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 48, 2} ) // oidNotInExtensions returns whether an extension with the given oid exists in // extensions. func oidInExtensions(oid asn1.ObjectIdentifier, extensions []pkix.Extension) bool { for _, e := range extensions { if e.Id.Equal(oid) { return true } } return false } // marshalSANs marshals a list of addresses into a the contents of an X.509 // SubjectAlternativeName extension. func marshalSANs(dnsNames, emailAddresses []string, ipAddresses []net.IP) (derBytes []byte, err error) { var rawValues []asn1.RawValue for _, name := range dnsNames { rawValues = append(rawValues, asn1.RawValue{Tag: 2, Class: 2, Bytes: []byte(name)}) } for _, email := range emailAddresses { rawValues = append(rawValues, asn1.RawValue{Tag: 1, Class: 2, Bytes: []byte(email)}) } for _, rawIP := range ipAddresses { // If possible, we always want to encode IPv4 addresses in 4 bytes. ip := rawIP.To4() if ip == nil { ip = rawIP } rawValues = append(rawValues, asn1.RawValue{Tag: 7, Class: 2, Bytes: ip}) } return asn1.Marshal(rawValues) } func buildExtensions(template *Certificate) (ret []pkix.Extension, err error) { ret = make([]pkix.Extension, 10 /* maximum number of elements. */) n := 0 if template.KeyUsage != 0 && !oidInExtensions(oidExtensionKeyUsage, template.ExtraExtensions) { ret[n].Id = oidExtensionKeyUsage ret[n].Critical = true var a [2]byte a[0] = reverseBitsInAByte(byte(template.KeyUsage)) a[1] = reverseBitsInAByte(byte(template.KeyUsage >> 8)) l := 1 if a[1] != 0 { l = 2 } ret[n].Value, err = asn1.Marshal(asn1.BitString{Bytes: a[0:l], BitLength: l * 8}) if err != nil { return } n++ } if (len(template.ExtKeyUsage) > 0 || len(template.UnknownExtKeyUsage) > 0) && !oidInExtensions(oidExtensionExtendedKeyUsage, template.ExtraExtensions) { ret[n].Id = oidExtensionExtendedKeyUsage var oids []asn1.ObjectIdentifier for _, u := range template.ExtKeyUsage { if oid, ok := oidFromExtKeyUsage(u); ok { oids = append(oids, oid) } else { panic("internal error") } } oids = append(oids, template.UnknownExtKeyUsage...) ret[n].Value, err = asn1.Marshal(oids) if err != nil { return } n++ } if template.BasicConstraintsValid && !oidInExtensions(oidExtensionBasicConstraints, template.ExtraExtensions) { ret[n].Id = oidExtensionBasicConstraints ret[n].Value, err = asn1.Marshal(basicConstraints{template.IsCA, template.MaxPathLen}) ret[n].Critical = true if err != nil { return } n++ } if len(template.SubjectKeyId) > 0 && !oidInExtensions(oidExtensionSubjectKeyId, template.ExtraExtensions) { ret[n].Id = oidExtensionSubjectKeyId ret[n].Value, err = asn1.Marshal(template.SubjectKeyId) if err != nil { return } n++ } if len(template.AuthorityKeyId) > 0 && !oidInExtensions(oidExtensionAuthorityKeyId, template.ExtraExtensions) { ret[n].Id = oidExtensionAuthorityKeyId ret[n].Value, err = asn1.Marshal(authKeyId{template.AuthorityKeyId}) if err != nil { return } n++ } if (len(template.OCSPServer) > 0 || len(template.IssuingCertificateURL) > 0) && !oidInExtensions(oidExtensionAuthorityInfoAccess, template.ExtraExtensions) { ret[n].Id = oidExtensionAuthorityInfoAccess var aiaValues []authorityInfoAccess for _, name := range template.OCSPServer { aiaValues = append(aiaValues, authorityInfoAccess{ Method: oidAuthorityInfoAccessOcsp, Location: asn1.RawValue{Tag: 6, Class: 2, Bytes: []byte(name)}, }) } for _, name := range template.IssuingCertificateURL { aiaValues = append(aiaValues, authorityInfoAccess{ Method: oidAuthorityInfoAccessIssuers, Location: asn1.RawValue{Tag: 6, Class: 2, Bytes: []byte(name)}, }) } ret[n].Value, err = asn1.Marshal(aiaValues) if err != nil { return } n++ } if (len(template.DNSNames) > 0 || len(template.EmailAddresses) > 0 || len(template.IPAddresses) > 0) && !oidInExtensions(oidExtensionSubjectAltName, template.ExtraExtensions) { ret[n].Id = oidExtensionSubjectAltName ret[n].Value, err = marshalSANs(template.DNSNames, template.EmailAddresses, template.IPAddresses) if err != nil { return } n++ } if len(template.PolicyIdentifiers) > 0 && !oidInExtensions(oidExtensionCertificatePolicies, template.ExtraExtensions) { ret[n].Id = oidExtensionCertificatePolicies policies := make([]policyInformation, len(template.PolicyIdentifiers)) for i, policy := range template.PolicyIdentifiers { policies[i].Policy = policy } ret[n].Value, err = asn1.Marshal(policies) if err != nil { return } n++ } if len(template.PermittedDNSDomains) > 0 && !oidInExtensions(oidExtensionNameConstraints, template.ExtraExtensions) { ret[n].Id = oidExtensionNameConstraints ret[n].Critical = template.PermittedDNSDomainsCritical var out nameConstraints out.Permitted = make([]generalSubtree, len(template.PermittedDNSDomains)) for i, permitted := range template.PermittedDNSDomains { out.Permitted[i] = generalSubtree{Name: permitted} } ret[n].Value, err = asn1.Marshal(out) if err != nil { return } n++ } if len(template.CRLDistributionPoints) > 0 && !oidInExtensions(oidExtensionCRLDistributionPoints, template.ExtraExtensions) { ret[n].Id = oidExtensionCRLDistributionPoints var crlDp []distributionPoint for _, name := range template.CRLDistributionPoints { rawFullName, _ := asn1.Marshal(asn1.RawValue{Tag: 6, Class: 2, Bytes: []byte(name)}) dp := distributionPoint{ DistributionPoint: distributionPointName{ FullName: asn1.RawValue{Tag: 0, Class: 2, Bytes: rawFullName}, }, } crlDp = append(crlDp, dp) } ret[n].Value, err = asn1.Marshal(crlDp) if err != nil { return } n++ } // Adding another extension here? Remember to update the maximum number // of elements in the make() at the top of the function. return append(ret[:n], template.ExtraExtensions...), nil } func subjectBytes(cert *Certificate) ([]byte, error) { if len(cert.RawSubject) > 0 { return cert.RawSubject, nil } return asn1.Marshal(cert.Subject.ToRDNSequence()) } // signingParamsForPrivateKey returns the parameters to use for signing with // priv. If requestedSigAlgo is not zero then it overrides the default // signature algorithm. func signingParamsForPrivateKey(priv interface{}, requestedSigAlgo SignatureAlgorithm) (hashFunc crypto.Hash, sigAlgo pkix.AlgorithmIdentifier, err error) { var pubType PublicKeyAlgorithm switch priv := priv.(type) { case *rsa.PrivateKey: pubType = RSA sigAlgo.Algorithm = oidSignatureSHA256WithRSA hashFunc = crypto.SHA256 case *ecdsa.PrivateKey: pubType = ECDSA switch priv.Curve { case elliptic.P224(), elliptic.P256(): hashFunc = crypto.SHA256 sigAlgo.Algorithm = oidSignatureECDSAWithSHA256 case elliptic.P384(): hashFunc = crypto.SHA384 sigAlgo.Algorithm = oidSignatureECDSAWithSHA384 case elliptic.P521(): hashFunc = crypto.SHA512 sigAlgo.Algorithm = oidSignatureECDSAWithSHA512 default: err = errors.New("x509: unknown elliptic curve") } default: err = errors.New("x509: only RSA and ECDSA private keys supported") } if err != nil { return } if requestedSigAlgo == 0 { return } found := false for _, details := range signatureAlgorithmDetails { if details.algo == requestedSigAlgo { if details.pubKeyAlgo != pubType { err = errors.New("x509: requested SignatureAlgorithm does not match private key type") return } sigAlgo.Algorithm, hashFunc = details.oid, details.hash if hashFunc == 0 { err = errors.New("x509: cannot sign with hash function requested") return } found = true break } } if !found { err = errors.New("x509: unknown SignatureAlgorithm") } return } // CreateCertificate creates a new certificate based on a template. The // following members of template are used: SerialNumber, Subject, NotBefore, // NotAfter, KeyUsage, ExtKeyUsage, UnknownExtKeyUsage, BasicConstraintsValid, // IsCA, MaxPathLen, SubjectKeyId, DNSNames, PermittedDNSDomainsCritical, // PermittedDNSDomains, SignatureAlgorithm. // // The certificate is signed by parent. If parent is equal to template then the // certificate is self-signed. The parameter pub is the public key of the // signee and priv is the private key of the signer. // // The returned slice is the certificate in DER encoding. // // The only supported key types are RSA and ECDSA (*rsa.PublicKey or // *ecdsa.PublicKey for pub, *rsa.PrivateKey or *ecdsa.PrivateKey for priv). func CreateCertificate(rand io.Reader, template, parent *Certificate, pub interface{}, priv interface{}) (cert []byte, err error) { hashFunc, signatureAlgorithm, err := signingParamsForPrivateKey(priv, template.SignatureAlgorithm) if err != nil { return nil, err } publicKeyBytes, publicKeyAlgorithm, err := marshalPublicKey(pub) if err != nil { return nil, err } if err != nil { return } if len(parent.SubjectKeyId) > 0 { template.AuthorityKeyId = parent.SubjectKeyId } extensions, err := buildExtensions(template) if err != nil { return } asn1Issuer, err := subjectBytes(parent) if err != nil { return } asn1Subject, err := subjectBytes(template) if err != nil { return } encodedPublicKey := asn1.BitString{BitLength: len(publicKeyBytes) * 8, Bytes: publicKeyBytes} c := tbsCertificate{ Version: 2, SerialNumber: template.SerialNumber, SignatureAlgorithm: signatureAlgorithm, Issuer: asn1.RawValue{FullBytes: asn1Issuer}, Validity: validity{template.NotBefore.UTC(), template.NotAfter.UTC()}, Subject: asn1.RawValue{FullBytes: asn1Subject}, PublicKey: publicKeyInfo{nil, publicKeyAlgorithm, encodedPublicKey}, Extensions: extensions, } tbsCertContents, err := asn1.Marshal(c) if err != nil { return } c.Raw = tbsCertContents h := hashFunc.New() h.Write(tbsCertContents) digest := h.Sum(nil) var signature []byte switch priv := priv.(type) { case *rsa.PrivateKey: signature, err = rsa.SignPKCS1v15(rand, priv, hashFunc, digest) case *ecdsa.PrivateKey: var r, s *big.Int if r, s, err = ecdsa.Sign(rand, priv, digest); err == nil { signature, err = asn1.Marshal(ecdsaSignature{r, s}) } default: panic("internal error") } if err != nil { return } cert, err = asn1.Marshal(certificate{ nil, c, signatureAlgorithm, asn1.BitString{Bytes: signature, BitLength: len(signature) * 8}, }) return } // pemCRLPrefix is the magic string that indicates that we have a PEM encoded // CRL. var pemCRLPrefix = []byte("-----BEGIN X509 CRL") // pemType is the type of a PEM encoded CRL. var pemType = "X509 CRL" // ParseCRL parses a CRL from the given bytes. It's often the case that PEM // encoded CRLs will appear where they should be DER encoded, so this function // will transparently handle PEM encoding as long as there isn't any leading // garbage. func ParseCRL(crlBytes []byte) (certList *pkix.CertificateList, err error) { if bytes.HasPrefix(crlBytes, pemCRLPrefix) { block, _ := pem.Decode(crlBytes) if block != nil && block.Type == pemType { crlBytes = block.Bytes } } return ParseDERCRL(crlBytes) } // ParseDERCRL parses a DER encoded CRL from the given bytes. func ParseDERCRL(derBytes []byte) (certList *pkix.CertificateList, err error) { certList = new(pkix.CertificateList) _, err = asn1.Unmarshal(derBytes, certList) if err != nil { certList = nil } return } // CreateCRL returns a DER encoded CRL, signed by this Certificate, that // contains the given list of revoked certificates. // // The only supported key type is RSA (*rsa.PrivateKey for priv). func (c *Certificate) CreateCRL(rand io.Reader, priv interface{}, revokedCerts []pkix.RevokedCertificate, now, expiry time.Time) (crlBytes []byte, err error) { rsaPriv, ok := priv.(*rsa.PrivateKey) if !ok { return nil, errors.New("x509: non-RSA private keys not supported") } tbsCertList := pkix.TBSCertificateList{ Version: 2, Signature: pkix.AlgorithmIdentifier{ Algorithm: oidSignatureSHA1WithRSA, }, Issuer: c.Subject.ToRDNSequence(), ThisUpdate: now.UTC(), NextUpdate: expiry.UTC(), RevokedCertificates: revokedCerts, } tbsCertListContents, err := asn1.Marshal(tbsCertList) if err != nil { return } h := sha1.New() h.Write(tbsCertListContents) digest := h.Sum(nil) signature, err := rsa.SignPKCS1v15(rand, rsaPriv, crypto.SHA1, digest) if err != nil { return } return asn1.Marshal(pkix.CertificateList{ TBSCertList: tbsCertList, SignatureAlgorithm: pkix.AlgorithmIdentifier{ Algorithm: oidSignatureSHA1WithRSA, }, SignatureValue: asn1.BitString{Bytes: signature, BitLength: len(signature) * 8}, }) } // CertificateRequest represents a PKCS #10, certificate signature request. type CertificateRequest struct { Raw []byte // Complete ASN.1 DER content (CSR, signature algorithm and signature). RawTBSCertificateRequest []byte // Certificate request info part of raw ASN.1 DER content. RawSubjectPublicKeyInfo []byte // DER encoded SubjectPublicKeyInfo. RawSubject []byte // DER encoded Subject. Version int Signature []byte SignatureAlgorithm SignatureAlgorithm PublicKeyAlgorithm PublicKeyAlgorithm PublicKey interface{} Subject pkix.Name // Attributes is a collection of attributes providing // additional information about the subject of the certificate. // See RFC 2986 section 4.1. Attributes []pkix.AttributeTypeAndValueSET // Extensions contains raw X.509 extensions. When parsing CSRs, this // can be used to extract extensions that are not parsed by this // package. Extensions []pkix.Extension // ExtraExtensions contains extensions to be copied, raw, into any // marshaled CSR. Values override any extensions that would otherwise // be produced based on the other fields but are overridden by any // extensions specified in Attributes. // // The ExtraExtensions field is not populated when parsing CSRs, see // Extensions. ExtraExtensions []pkix.Extension // Subject Alternate Name values. DNSNames []string EmailAddresses []string IPAddresses []net.IP } // These structures reflect the ASN.1 structure of X.509 certificate // signature requests (see RFC 2986): type tbsCertificateRequest struct { Raw asn1.RawContent Version int Subject asn1.RawValue PublicKey publicKeyInfo Attributes []pkix.AttributeTypeAndValueSET `asn1:"tag:0"` } type certificateRequest struct { Raw asn1.RawContent TBSCSR tbsCertificateRequest SignatureAlgorithm pkix.AlgorithmIdentifier SignatureValue asn1.BitString } // oidExtensionRequest is a PKCS#9 OBJECT IDENTIFIER that indicates requested // extensions in a CSR. var oidExtensionRequest = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 9, 14} // CreateCertificateRequest creates a new certificate based on a template. The // following members of template are used: Subject, Attributes, // SignatureAlgorithm, Extension, DNSNames, EmailAddresses, and IPAddresses. // The private key is the private key of the signer. // // The returned slice is the certificate request in DER encoding. // // The only supported key types are RSA (*rsa.PrivateKey) and ECDSA // (*ecdsa.PrivateKey). func CreateCertificateRequest(rand io.Reader, template *CertificateRequest, priv interface{}) (csr []byte, err error) { hashFunc, sigAlgo, err := signingParamsForPrivateKey(priv, template.SignatureAlgorithm) if err != nil { return nil, err } var publicKeyBytes []byte var publicKeyAlgorithm pkix.AlgorithmIdentifier switch priv := priv.(type) { case *rsa.PrivateKey: publicKeyBytes, publicKeyAlgorithm, err = marshalPublicKey(&priv.PublicKey) case *ecdsa.PrivateKey: publicKeyBytes, publicKeyAlgorithm, err = marshalPublicKey(&priv.PublicKey) default: panic("internal error") } if err != nil { return nil, err } var extensions []pkix.Extension if (len(template.DNSNames) > 0 || len(template.EmailAddresses) > 0 || len(template.IPAddresses) > 0) && !oidInExtensions(oidExtensionSubjectAltName, template.ExtraExtensions) { sanBytes, err := marshalSANs(template.DNSNames, template.EmailAddresses, template.IPAddresses) if err != nil { return nil, err } extensions = append(extensions, pkix.Extension{ Id: oidExtensionSubjectAltName, Value: sanBytes, }) } extensions = append(extensions, template.ExtraExtensions...) var attributes []pkix.AttributeTypeAndValueSET attributes = append(attributes, template.Attributes...) if len(extensions) > 0 { // specifiedExtensions contains all the extensions that we // found specified via template.Attributes. specifiedExtensions := make(map[string]bool) for _, atvSet := range template.Attributes { if !atvSet.Type.Equal(oidExtensionRequest) { continue } for _, atvs := range atvSet.Value { for _, atv := range atvs { specifiedExtensions[atv.Type.String()] = true } } } atvs := make([]pkix.AttributeTypeAndValue, 0, len(extensions)) for _, e := range extensions { if specifiedExtensions[e.Id.String()] { // Attributes already contained a value for // this extension and it takes priority. continue } atvs = append(atvs, pkix.AttributeTypeAndValue{ // There is no place for the critical flag in a CSR. Type: e.Id, Value: e.Value, }) } // Append the extensions to an existing attribute if possible. appended := false for _, atvSet := range attributes { if !atvSet.Type.Equal(oidExtensionRequest) || len(atvSet.Value) == 0 { continue } atvSet.Value[0] = append(atvSet.Value[0], atvs...) appended = true break } // Otherwise, add a new attribute for the extensions. if !appended { attributes = append(attributes, pkix.AttributeTypeAndValueSET{ Type: oidExtensionRequest, Value: [][]pkix.AttributeTypeAndValue{ atvs, }, }) } } asn1Subject := template.RawSubject if len(asn1Subject) == 0 { asn1Subject, err = asn1.Marshal(template.Subject.ToRDNSequence()) if err != nil { return } } tbsCSR := tbsCertificateRequest{ Version: 0, // PKCS #10, RFC 2986 Subject: asn1.RawValue{FullBytes: asn1Subject}, PublicKey: publicKeyInfo{ Algorithm: publicKeyAlgorithm, PublicKey: asn1.BitString{ Bytes: publicKeyBytes, BitLength: len(publicKeyBytes) * 8, }, }, Attributes: attributes, } tbsCSRContents, err := asn1.Marshal(tbsCSR) if err != nil { return } tbsCSR.Raw = tbsCSRContents h := hashFunc.New() h.Write(tbsCSRContents) digest := h.Sum(nil) var signature []byte switch priv := priv.(type) { case *rsa.PrivateKey: signature, err = rsa.SignPKCS1v15(rand, priv, hashFunc, digest) case *ecdsa.PrivateKey: var r, s *big.Int if r, s, err = ecdsa.Sign(rand, priv, digest); err == nil { signature, err = asn1.Marshal(ecdsaSignature{r, s}) } default: panic("internal error") } if err != nil { return } return asn1.Marshal(certificateRequest{ TBSCSR: tbsCSR, SignatureAlgorithm: sigAlgo, SignatureValue: asn1.BitString{ Bytes: signature, BitLength: len(signature) * 8, }, }) } // ParseCertificateRequest parses a single certificate request from the // given ASN.1 DER data. func ParseCertificateRequest(asn1Data []byte) (*CertificateRequest, error) { var csr certificateRequest rest, err := asn1.Unmarshal(asn1Data, &csr) if err != nil { return nil, err } else if len(rest) != 0 { return nil, asn1.SyntaxError{Msg: "trailing data"} } return parseCertificateRequest(&csr) } func parseCertificateRequest(in *certificateRequest) (*CertificateRequest, error) { out := &CertificateRequest{ Raw: in.Raw, RawTBSCertificateRequest: in.TBSCSR.Raw, RawSubjectPublicKeyInfo: in.TBSCSR.PublicKey.Raw, RawSubject: in.TBSCSR.Subject.FullBytes, Signature: in.SignatureValue.RightAlign(), SignatureAlgorithm: getSignatureAlgorithmFromOID(in.SignatureAlgorithm.Algorithm), PublicKeyAlgorithm: getPublicKeyAlgorithmFromOID(in.TBSCSR.PublicKey.Algorithm.Algorithm), Version: in.TBSCSR.Version, Attributes: in.TBSCSR.Attributes, } var err error out.PublicKey, err = parsePublicKey(out.PublicKeyAlgorithm, &in.TBSCSR.PublicKey) if err != nil { return nil, err } var subject pkix.RDNSequence if _, err := asn1.Unmarshal(in.TBSCSR.Subject.FullBytes, &subject); err != nil { return nil, err } out.Subject.FillFromRDNSequence(&subject) var extensions []pkix.AttributeTypeAndValue for _, atvSet := range in.TBSCSR.Attributes { if !atvSet.Type.Equal(oidExtensionRequest) { continue } for _, atvs := range atvSet.Value { extensions = append(extensions, atvs...) } } out.Extensions = make([]pkix.Extension, 0, len(extensions)) for _, e := range extensions { value, ok := e.Value.([]byte) if !ok { return nil, errors.New("x509: extension attribute contained non-OCTET STRING data") } out.Extensions = append(out.Extensions, pkix.Extension{ Id: e.Type, Value: value, }) if len(e.Type) == 4 && e.Type[0] == 2 && e.Type[1] == 5 && e.Type[2] == 29 { switch e.Type[3] { case 17: out.DNSNames, out.EmailAddresses, out.IPAddresses, err = parseSANExtension(value) if err != nil { return nil, err } } } } return out, nil } go/src/pkg/crypto/x509/x509_test.go0100644000000000000000000012321112412656737017167 0ustar00rootroot00000000000000// Copyright 2009 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 x509 import ( "bytes" "crypto/dsa" "crypto/ecdsa" "crypto/elliptic" "crypto/rand" "crypto/rsa" _ "crypto/sha256" _ "crypto/sha512" "crypto/x509/pkix" "encoding/asn1" "encoding/base64" "encoding/hex" "encoding/pem" "math/big" "net" "os/exec" "reflect" "runtime" "testing" "time" ) func TestParsePKCS1PrivateKey(t *testing.T) { block, _ := pem.Decode([]byte(pemPrivateKey)) priv, err := ParsePKCS1PrivateKey(block.Bytes) if err != nil { t.Errorf("Failed to parse private key: %s", err) return } if priv.PublicKey.N.Cmp(rsaPrivateKey.PublicKey.N) != 0 || priv.PublicKey.E != rsaPrivateKey.PublicKey.E || priv.D.Cmp(rsaPrivateKey.D) != 0 || priv.Primes[0].Cmp(rsaPrivateKey.Primes[0]) != 0 || priv.Primes[1].Cmp(rsaPrivateKey.Primes[1]) != 0 { t.Errorf("got:%+v want:%+v", priv, rsaPrivateKey) } } func TestParsePKIXPublicKey(t *testing.T) { block, _ := pem.Decode([]byte(pemPublicKey)) pub, err := ParsePKIXPublicKey(block.Bytes) if err != nil { t.Errorf("Failed to parse RSA public key: %s", err) return } rsaPub, ok := pub.(*rsa.PublicKey) if !ok { t.Errorf("Value returned from ParsePKIXPublicKey was not an RSA public key") return } pubBytes2, err := MarshalPKIXPublicKey(rsaPub) if err != nil { t.Errorf("Failed to marshal RSA public key for the second time: %s", err) return } if !bytes.Equal(pubBytes2, block.Bytes) { t.Errorf("Reserialization of public key didn't match. got %x, want %x", pubBytes2, block.Bytes) } } var pemPublicKey = `-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3VoPN9PKUjKFLMwOge6+ wnDi8sbETGIx2FKXGgqtAKpzmem53kRGEQg8WeqRmp12wgp74TGpkEXsGae7RS1k enJCnma4fii+noGH7R0qKgHvPrI2Bwa9hzsH8tHxpyM3qrXslOmD45EH9SxIDUBJ FehNdaPbLP1gFyahKMsdfxFJLUvbUycuZSJ2ZnIgeVxwm4qbSvZInL9Iu4FzuPtg fINKcbbovy1qq4KvPIrXzhbY3PWDc6btxCf3SE0JdE1MCPThntB62/bLMSQ7xdDR FF53oIpvxe/SCOymfWq/LW849Ytv3Xwod0+wzAP8STXG4HSELS4UedPYeHJJJYcZ +QIDAQAB -----END PUBLIC KEY----- ` var pemPrivateKey = `-----BEGIN RSA PRIVATE KEY----- MIIBOgIBAAJBALKZD0nEffqM1ACuak0bijtqE2QrI/KLADv7l3kK3ppMyCuLKoF0 fd7Ai2KW5ToIwzFofvJcS/STa6HA5gQenRUCAwEAAQJBAIq9amn00aS0h/CrjXqu /ThglAXJmZhOMPVn4eiu7/ROixi9sex436MaVeMqSNf7Ex9a8fRNfWss7Sqd9eWu RTUCIQDasvGASLqmjeffBNLTXV2A5g4t+kLVCpsEIZAycV5GswIhANEPLmax0ME/ EO+ZJ79TJKN5yiGBRsv5yvx5UiHxajEXAiAhAol5N4EUyq6I9w1rYdhPMGpLfk7A IU2snfRJ6Nq2CQIgFrPsWRCkV+gOYcajD17rEqmuLrdIRexpg8N1DOSXoJ8CIGlS tAboUGBxTDq3ZroNism3DaMIbKPyYrAqhKov1h5V -----END RSA PRIVATE KEY----- ` func bigFromString(s string) *big.Int { ret := new(big.Int) ret.SetString(s, 10) return ret } func fromBase10(base10 string) *big.Int { i := new(big.Int) i.SetString(base10, 10) return i } func bigFromHexString(s string) *big.Int { ret := new(big.Int) ret.SetString(s, 16) return ret } var rsaPrivateKey = &rsa.PrivateKey{ PublicKey: rsa.PublicKey{ N: bigFromString("9353930466774385905609975137998169297361893554149986716853295022578535724979677252958524466350471210367835187480748268864277464700638583474144061408845077"), E: 65537, }, D: bigFromString("7266398431328116344057699379749222532279343923819063639497049039389899328538543087657733766554155839834519529439851673014800261285757759040931985506583861"), Primes: []*big.Int{ bigFromString("98920366548084643601728869055592650835572950932266967461790948584315647051443"), bigFromString("94560208308847015747498523884063394671606671904944666360068158221458669711639"), }, } func TestMarshalRSAPrivateKey(t *testing.T) { priv := &rsa.PrivateKey{ PublicKey: rsa.PublicKey{ N: fromBase10("16346378922382193400538269749936049106320265317511766357599732575277382844051791096569333808598921852351577762718529818072849191122419410612033592401403764925096136759934497687765453905884149505175426053037420486697072448609022753683683718057795566811401938833367954642951433473337066311978821180526439641496973296037000052546108507805269279414789035461158073156772151892452251106173507240488993608650881929629163465099476849643165682709047462010581308719577053905787496296934240246311806555924593059995202856826239801816771116902778517096212527979497399966526283516447337775509777558018145573127308919204297111496233"), E: 3, }, D: fromBase10("10897585948254795600358846499957366070880176878341177571733155050184921896034527397712889205732614568234385175145686545381899460748279607074689061600935843283397424506622998458510302603922766336783617368686090042765718290914099334449154829375179958369993407724946186243249568928237086215759259909861748642124071874879861299389874230489928271621259294894142840428407196932444474088857746123104978617098858619445675532587787023228852383149557470077802718705420275739737958953794088728369933811184572620857678792001136676902250566845618813972833750098806496641114644760255910789397593428910198080271317419213080834885003"), Primes: []*big.Int{ fromBase10("1025363189502892836833747188838978207017355117492483312747347695538428729137306368764177201532277413433182799108299960196606011786562992097313508180436744488171474690412562218914213688661311117337381958560443"), fromBase10("3467903426626310123395340254094941045497208049900750380025518552334536945536837294961497712862519984786362199788654739924501424784631315081391467293694361474867825728031147665777546570788493758372218019373"), fromBase10("4597024781409332673052708605078359346966325141767460991205742124888960305710298765592730135879076084498363772408626791576005136245060321874472727132746643162385746062759369754202494417496879741537284589047"), }, } derBytes := MarshalPKCS1PrivateKey(priv) priv2, err := ParsePKCS1PrivateKey(derBytes) if err != nil { t.Errorf("error parsing serialized key: %s", err) return } if priv.PublicKey.N.Cmp(priv2.PublicKey.N) != 0 || priv.PublicKey.E != priv2.PublicKey.E || priv.D.Cmp(priv2.D) != 0 || len(priv2.Primes) != 3 || priv.Primes[0].Cmp(priv2.Primes[0]) != 0 || priv.Primes[1].Cmp(priv2.Primes[1]) != 0 || priv.Primes[2].Cmp(priv2.Primes[2]) != 0 { t.Errorf("got:%+v want:%+v", priv, priv2) } } type matchHostnamesTest struct { pattern, host string ok bool } var matchHostnamesTests = []matchHostnamesTest{ {"a.b.c", "a.b.c", true}, {"a.b.c", "b.b.c", false}, {"", "b.b.c", false}, {"a.b.c", "", false}, {"example.com", "example.com", true}, {"example.com", "www.example.com", false}, {"*.example.com", "www.example.com", true}, {"*.example.com", "xyz.www.example.com", false}, {"*.*.example.com", "xyz.www.example.com", true}, {"*.www.*.com", "xyz.www.example.com", true}, } func TestMatchHostnames(t *testing.T) { for i, test := range matchHostnamesTests { r := matchHostnames(test.pattern, test.host) if r != test.ok { t.Errorf("#%d mismatch got: %t want: %t", i, r, test.ok) } } } func TestMatchIP(t *testing.T) { // Check that pattern matching is working. c := &Certificate{ DNSNames: []string{"*.foo.bar.baz"}, Subject: pkix.Name{ CommonName: "*.foo.bar.baz", }, } err := c.VerifyHostname("quux.foo.bar.baz") if err != nil { t.Fatalf("VerifyHostname(quux.foo.bar.baz): %v", err) } // But check that if we change it to be matching against an IP address, // it is rejected. c = &Certificate{ DNSNames: []string{"*.2.3.4"}, Subject: pkix.Name{ CommonName: "*.2.3.4", }, } err = c.VerifyHostname("1.2.3.4") if err == nil { t.Fatalf("VerifyHostname(1.2.3.4) should have failed, did not") } c = &Certificate{ IPAddresses: []net.IP{net.ParseIP("127.0.0.1"), net.ParseIP("::1")}, } err = c.VerifyHostname("127.0.0.1") if err != nil { t.Fatalf("VerifyHostname(127.0.0.1): %v", err) } err = c.VerifyHostname("::1") if err != nil { t.Fatalf("VerifyHostname(::1): %v", err) } err = c.VerifyHostname("[::1]") if err != nil { t.Fatalf("VerifyHostname([::1]): %v", err) } } func TestCertificateParse(t *testing.T) { s, _ := hex.DecodeString(certBytes) certs, err := ParseCertificates(s) if err != nil { t.Error(err) } if len(certs) != 2 { t.Errorf("Wrong number of certs: got %d want 2", len(certs)) return } err = certs[0].CheckSignatureFrom(certs[1]) if err != nil { t.Error(err) } if err := certs[0].VerifyHostname("mail.google.com"); err != nil { t.Error(err) } const expectedExtensions = 4 if n := len(certs[0].Extensions); n != expectedExtensions { t.Errorf("want %d extensions, got %d", expectedExtensions, n) } } var certBytes = "308203223082028ba00302010202106edf0d9499fd4533dd1297fc42a93be1300d06092a864886" + "f70d0101050500304c310b3009060355040613025a4131253023060355040a131c546861777465" + "20436f6e73756c74696e67202850747929204c74642e311630140603550403130d546861777465" + "20534743204341301e170d3039303332353136343932395a170d3130303332353136343932395a" + "3069310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630" + "140603550407130d4d6f756e7461696e205669657731133011060355040a130a476f6f676c6520" + "496e63311830160603550403130f6d61696c2e676f6f676c652e636f6d30819f300d06092a8648" + "86f70d010101050003818d0030818902818100c5d6f892fccaf5614b064149e80a2c9581a218ef" + "41ec35bd7a58125ae76f9ea54ddc893abbeb029f6b73616bf0ffd868791fba7af9c4aebf3706ba" + "3eeaeed27435b4ddcfb157c05f351d66aa87fee0de072d66d773affbd36ab78bef090e0cc861a9" + "03ac90dd98b51c9c41566c017f0beec3bff391051ffba0f5cc6850ad2a590203010001a381e730" + "81e430280603551d250421301f06082b0601050507030106082b06010505070302060960864801" + "86f842040130360603551d1f042f302d302ba029a0278625687474703a2f2f63726c2e74686177" + "74652e636f6d2f54686177746553474343412e63726c307206082b060105050701010466306430" + "2206082b060105050730018616687474703a2f2f6f6373702e7468617774652e636f6d303e0608" + "2b060105050730028632687474703a2f2f7777772e7468617774652e636f6d2f7265706f736974" + "6f72792f5468617774655f5347435f43412e637274300c0603551d130101ff04023000300d0609" + "2a864886f70d01010505000381810062f1f3050ebc105e497c7aedf87e24d2f4a986bb3b837bd1" + "9b91ebcad98b065992f6bd2b49b7d6d3cb2e427a99d606c7b1d46352527fac39e6a8b6726de5bf" + "70212a52cba07634a5e332011bd1868e78eb5e3c93cf03072276786f207494feaa0ed9d53b2110" + "a76571f90209cdae884385c882587030ee15f33d761e2e45a6bc308203233082028ca003020102" + "020430000002300d06092a864886f70d0101050500305f310b3009060355040613025553311730" + "15060355040a130e566572695369676e2c20496e632e31373035060355040b132e436c61737320" + "33205075626c6963205072696d6172792043657274696669636174696f6e20417574686f726974" + "79301e170d3034303531333030303030305a170d3134303531323233353935395a304c310b3009" + "060355040613025a4131253023060355040a131c54686177746520436f6e73756c74696e672028" + "50747929204c74642e311630140603550403130d5468617774652053474320434130819f300d06" + "092a864886f70d010101050003818d0030818902818100d4d367d08d157faecd31fe7d1d91a13f" + "0b713cacccc864fb63fc324b0794bd6f80ba2fe10493c033fc093323e90b742b71c403c6d2cde2" + "2ff50963cdff48a500bfe0e7f388b72d32de9836e60aad007bc4644a3b847503f270927d0e62f5" + "21ab693684317590f8bfc76c881b06957cc9e5a8de75a12c7a68dfd5ca1c875860190203010001" + "a381fe3081fb30120603551d130101ff040830060101ff020100300b0603551d0f040403020106" + "301106096086480186f842010104040302010630280603551d110421301fa41d301b3119301706" + "035504031310507269766174654c6162656c332d313530310603551d1f042a30283026a024a022" + "8620687474703a2f2f63726c2e766572697369676e2e636f6d2f706361332e63726c303206082b" + "0601050507010104263024302206082b060105050730018616687474703a2f2f6f6373702e7468" + "617774652e636f6d30340603551d25042d302b06082b0601050507030106082b06010505070302" + "06096086480186f8420401060a6086480186f845010801300d06092a864886f70d010105050003" + "81810055ac63eadea1ddd2905f9f0bce76be13518f93d9052bc81b774bad6950a1eededcfddb07" + "e9e83994dcab72792f06bfab8170c4a8edea5334edef1e53d906c7562bd15cf4d18a8eb42bb137" + "9048084225c53e8acb7feb6f04d16dc574a2f7a27c7b603c77cd0ece48027f012fb69b37e02a2a" + "36dcd585d6ace53f546f961e05af" func TestCreateSelfSignedCertificate(t *testing.T) { random := rand.Reader block, _ := pem.Decode([]byte(pemPrivateKey)) rsaPriv, err := ParsePKCS1PrivateKey(block.Bytes) if err != nil { t.Fatalf("Failed to parse private key: %s", err) } ecdsaPriv, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) if err != nil { t.Fatalf("Failed to generate ECDSA key: %s", err) } tests := []struct { name string pub, priv interface{} checkSig bool sigAlgo SignatureAlgorithm }{ {"RSA/RSA", &rsaPriv.PublicKey, rsaPriv, true, SHA1WithRSA}, {"RSA/ECDSA", &rsaPriv.PublicKey, ecdsaPriv, false, ECDSAWithSHA384}, {"ECDSA/RSA", &ecdsaPriv.PublicKey, rsaPriv, false, SHA256WithRSA}, {"ECDSA/ECDSA", &ecdsaPriv.PublicKey, ecdsaPriv, true, ECDSAWithSHA1}, } testExtKeyUsage := []ExtKeyUsage{ExtKeyUsageClientAuth, ExtKeyUsageServerAuth} testUnknownExtKeyUsage := []asn1.ObjectIdentifier{[]int{1, 2, 3}, []int{2, 59, 1}} extraExtensionData := []byte("extra extension") for _, test := range tests { commonName := "test.example.com" template := Certificate{ SerialNumber: big.NewInt(1), Subject: pkix.Name{ CommonName: commonName, Organization: []string{"Σ Acme Co"}, }, NotBefore: time.Unix(1000, 0), NotAfter: time.Unix(100000, 0), SignatureAlgorithm: test.sigAlgo, SubjectKeyId: []byte{1, 2, 3, 4}, KeyUsage: KeyUsageCertSign, ExtKeyUsage: testExtKeyUsage, UnknownExtKeyUsage: testUnknownExtKeyUsage, BasicConstraintsValid: true, IsCA: true, OCSPServer: []string{"http://ocsp.example.com"}, IssuingCertificateURL: []string{"http://crt.example.com/ca1.crt"}, DNSNames: []string{"test.example.com"}, EmailAddresses: []string{"gopher@golang.org"}, IPAddresses: []net.IP{net.IPv4(127, 0, 0, 1).To4(), net.ParseIP("2001:4860:0:2001::68")}, PolicyIdentifiers: []asn1.ObjectIdentifier{[]int{1, 2, 3}}, PermittedDNSDomains: []string{".example.com", "example.com"}, CRLDistributionPoints: []string{"http://crl1.example.com/ca1.crl", "http://crl2.example.com/ca1.crl"}, ExtraExtensions: []pkix.Extension{ { Id: []int{1, 2, 3, 4}, Value: extraExtensionData, }, // This extension should override the SubjectKeyId, above. { Id: oidExtensionSubjectKeyId, Critical: false, Value: []byte{0x04, 0x04, 4, 3, 2, 1}, }, }, } derBytes, err := CreateCertificate(random, &template, &template, test.pub, test.priv) if err != nil { t.Errorf("%s: failed to create certificate: %s", test.name, err) continue } cert, err := ParseCertificate(derBytes) if err != nil { t.Errorf("%s: failed to parse certificate: %s", test.name, err) continue } if len(cert.PolicyIdentifiers) != 1 || !cert.PolicyIdentifiers[0].Equal(template.PolicyIdentifiers[0]) { t.Errorf("%s: failed to parse policy identifiers: got:%#v want:%#v", test.name, cert.PolicyIdentifiers, template.PolicyIdentifiers) } if len(cert.PermittedDNSDomains) != 2 || cert.PermittedDNSDomains[0] != ".example.com" || cert.PermittedDNSDomains[1] != "example.com" { t.Errorf("%s: failed to parse name constraints: %#v", test.name, cert.PermittedDNSDomains) } if cert.Subject.CommonName != commonName { t.Errorf("%s: subject wasn't correctly copied from the template. Got %s, want %s", test.name, cert.Subject.CommonName, commonName) } if cert.Issuer.CommonName != commonName { t.Errorf("%s: issuer wasn't correctly copied from the template. Got %s, want %s", test.name, cert.Issuer.CommonName, commonName) } if cert.SignatureAlgorithm != test.sigAlgo { t.Errorf("%s: SignatureAlgorithm wasn't copied from template. Got %v, want %v", test.name, cert.SignatureAlgorithm, test.sigAlgo) } if !reflect.DeepEqual(cert.ExtKeyUsage, testExtKeyUsage) { t.Errorf("%s: extkeyusage wasn't correctly copied from the template. Got %v, want %v", test.name, cert.ExtKeyUsage, testExtKeyUsage) } if !reflect.DeepEqual(cert.UnknownExtKeyUsage, testUnknownExtKeyUsage) { t.Errorf("%s: unknown extkeyusage wasn't correctly copied from the template. Got %v, want %v", test.name, cert.UnknownExtKeyUsage, testUnknownExtKeyUsage) } if !reflect.DeepEqual(cert.OCSPServer, template.OCSPServer) { t.Errorf("%s: OCSP servers differ from template. Got %v, want %v", test.name, cert.OCSPServer, template.OCSPServer) } if !reflect.DeepEqual(cert.IssuingCertificateURL, template.IssuingCertificateURL) { t.Errorf("%s: Issuing certificate URLs differ from template. Got %v, want %v", test.name, cert.IssuingCertificateURL, template.IssuingCertificateURL) } if !reflect.DeepEqual(cert.DNSNames, template.DNSNames) { t.Errorf("%s: SAN DNS names differ from template. Got %v, want %v", test.name, cert.DNSNames, template.DNSNames) } if !reflect.DeepEqual(cert.EmailAddresses, template.EmailAddresses) { t.Errorf("%s: SAN emails differ from template. Got %v, want %v", test.name, cert.EmailAddresses, template.EmailAddresses) } if !reflect.DeepEqual(cert.IPAddresses, template.IPAddresses) { t.Errorf("%s: SAN IPs differ from template. Got %v, want %v", test.name, cert.IPAddresses, template.IPAddresses) } if !reflect.DeepEqual(cert.CRLDistributionPoints, template.CRLDistributionPoints) { t.Errorf("%s: CRL distribution points differ from template. Got %v, want %v", test.name, cert.CRLDistributionPoints, template.CRLDistributionPoints) } if !bytes.Equal(cert.SubjectKeyId, []byte{4, 3, 2, 1}) { t.Errorf("%s: ExtraExtensions didn't override SubjectKeyId", test.name) } if bytes.Index(derBytes, extraExtensionData) == -1 { t.Errorf("%s: didn't find extra extension in DER output", test.name) } if test.checkSig { err = cert.CheckSignatureFrom(cert) if err != nil { t.Errorf("%s: signature verification failed: %s", test.name, err) } } } } // Self-signed certificate using ECDSA with SHA1 & secp256r1 var ecdsaSHA1CertPem = ` -----BEGIN CERTIFICATE----- MIICDjCCAbUCCQDF6SfN0nsnrjAJBgcqhkjOPQQBMIGPMQswCQYDVQQGEwJVUzET MBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzEVMBMG A1UECgwMR29vZ2xlLCBJbmMuMRcwFQYDVQQDDA53d3cuZ29vZ2xlLmNvbTEjMCEG CSqGSIb3DQEJARYUZ29sYW5nLWRldkBnbWFpbC5jb20wHhcNMTIwNTIwMjAyMDUw WhcNMjIwNTE4MjAyMDUwWjCBjzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlm b3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxFTATBgNVBAoMDEdvb2dsZSwg SW5jLjEXMBUGA1UEAwwOd3d3Lmdvb2dsZS5jb20xIzAhBgkqhkiG9w0BCQEWFGdv bGFuZy1kZXZAZ21haWwuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/Wgn WQDo5+bz71T0327ERgd5SDDXFbXLpzIZDXTkjpe8QTEbsF+ezsQfrekrpDPC4Cd3 P9LY0tG+aI8IyVKdUjAJBgcqhkjOPQQBA0gAMEUCIGlsqMcRqWVIWTD6wXwe6Jk2 DKxL46r/FLgJYnzBEH99AiEA3fBouObsvV1R3oVkb4BQYnD4/4LeId6lAT43YvyV a/A= -----END CERTIFICATE----- ` // Self-signed certificate using ECDSA with SHA256 & secp256r1 var ecdsaSHA256p256CertPem = ` -----BEGIN CERTIFICATE----- MIICDzCCAbYCCQDlsuMWvgQzhTAKBggqhkjOPQQDAjCBjzELMAkGA1UEBhMCVVMx EzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxFTAT BgNVBAoMDEdvb2dsZSwgSW5jLjEXMBUGA1UEAwwOd3d3Lmdvb2dsZS5jb20xIzAh BgkqhkiG9w0BCQEWFGdvbGFuZy1kZXZAZ21haWwuY29tMB4XDTEyMDUyMTAwMTkx NloXDTIyMDUxOTAwMTkxNlowgY8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxp Zm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRUwEwYDVQQKDAxHb29nbGUs IEluYy4xFzAVBgNVBAMMDnd3dy5nb29nbGUuY29tMSMwIQYJKoZIhvcNAQkBFhRn b2xhbmctZGV2QGdtYWlsLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPMt 2ErhxAty5EJRu9yM+MTy+hUXm3pdW1ensAv382KoGExSXAFWP7pjJnNtHO+XSwVm YNtqjcAGFKpweoN//kQwCgYIKoZIzj0EAwIDRwAwRAIgIYSaUA/IB81gjbIw/hUV 70twxJr5EcgOo0hLp3Jm+EYCIFDO3NNcgmURbJ1kfoS3N/0O+irUtoPw38YoNkqJ h5wi -----END CERTIFICATE----- ` // Self-signed certificate using ECDSA with SHA256 & secp384r1 var ecdsaSHA256p384CertPem = ` -----BEGIN CERTIFICATE----- MIICSjCCAdECCQDje/no7mXkVzAKBggqhkjOPQQDAjCBjjELMAkGA1UEBhMCVVMx EzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxFDAS BgNVBAoMC0dvb2dsZSwgSW5jMRcwFQYDVQQDDA53d3cuZ29vZ2xlLmNvbTEjMCEG CSqGSIb3DQEJARYUZ29sYW5nLWRldkBnbWFpbC5jb20wHhcNMTIwNTIxMDYxMDM0 WhcNMjIwNTE5MDYxMDM0WjCBjjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlm b3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxFDASBgNVBAoMC0dvb2dsZSwg SW5jMRcwFQYDVQQDDA53d3cuZ29vZ2xlLmNvbTEjMCEGCSqGSIb3DQEJARYUZ29s YW5nLWRldkBnbWFpbC5jb20wdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARRuzRNIKRK jIktEmXanNmrTR/q/FaHXLhWRZ6nHWe26Fw7Rsrbk+VjGy4vfWtNn7xSFKrOu5ze qxKnmE0h5E480MNgrUiRkaGO2GMJJVmxx20aqkXOk59U8yGA4CghE6MwCgYIKoZI zj0EAwIDZwAwZAIwBZEN8gvmRmfeP/9C1PRLzODIY4JqWub2PLRT4mv9GU+yw3Gr PU9A3CHMdEcdw/MEAjBBO1lId8KOCh9UZunsSMfqXiVurpzmhWd6VYZ/32G+M+Mh 3yILeYQzllt/g0rKVRk= -----END CERTIFICATE----- ` // Self-signed certificate using ECDSA with SHA384 & secp521r1 var ecdsaSHA384p521CertPem = ` -----BEGIN CERTIFICATE----- MIICljCCAfcCCQDhp1AFD/ahKjAKBggqhkjOPQQDAzCBjjELMAkGA1UEBhMCVVMx EzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxFDAS BgNVBAoMC0dvb2dsZSwgSW5jMRcwFQYDVQQDDA53d3cuZ29vZ2xlLmNvbTEjMCEG CSqGSIb3DQEJARYUZ29sYW5nLWRldkBnbWFpbC5jb20wHhcNMTIwNTIxMTUwNDI5 WhcNMjIwNTE5MTUwNDI5WjCBjjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlm b3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxFDASBgNVBAoMC0dvb2dsZSwg SW5jMRcwFQYDVQQDDA53d3cuZ29vZ2xlLmNvbTEjMCEGCSqGSIb3DQEJARYUZ29s YW5nLWRldkBnbWFpbC5jb20wgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABACqx9Rv IssRs1LWYcNN+WffwlHw4Tv3y8/LIAA9MF1ZScIonU9nRMxt4a2uGJVCPDw6JHpz PaYc0E9puLoE9AfKpwFr59Jkot7dBg55SKPEFkddoip/rvmN7NPAWjMBirOwjOkm 8FPthvPhGPqsu9AvgVuHu3PosWiHGNrhh379pva8MzAKBggqhkjOPQQDAwOBjAAw gYgCQgEHNmswkUdPpHqrVxp9PvLVl+xxPuHBkT+75z9JizyxtqykHQo9Uh6SWCYH BF9KLolo01wMt8DjoYP5Fb3j5MH7xwJCAbWZzTOp4l4DPkIvAh4LeC4VWbwPPyqh kBg71w/iEcSY3wUKgHGcJJrObZw7wys91I5kENljqw/Samdr3ka+jBJa -----END CERTIFICATE----- ` var ecdsaTests = []struct { sigAlgo SignatureAlgorithm pemCert string }{ {ECDSAWithSHA1, ecdsaSHA1CertPem}, {ECDSAWithSHA256, ecdsaSHA256p256CertPem}, {ECDSAWithSHA256, ecdsaSHA256p384CertPem}, {ECDSAWithSHA384, ecdsaSHA384p521CertPem}, } func TestECDSA(t *testing.T) { for i, test := range ecdsaTests { pemBlock, _ := pem.Decode([]byte(test.pemCert)) cert, err := ParseCertificate(pemBlock.Bytes) if err != nil { t.Errorf("%d: failed to parse certificate: %s", i, err) continue } if sa := cert.SignatureAlgorithm; sa != test.sigAlgo { t.Errorf("%d: signature algorithm is %v, want %v", i, sa, test.sigAlgo) } if parsedKey, ok := cert.PublicKey.(*ecdsa.PublicKey); !ok { t.Errorf("%d: wanted an ECDSA public key but found: %#v", i, parsedKey) } if pka := cert.PublicKeyAlgorithm; pka != ECDSA { t.Errorf("%d: public key algorithm is %v, want ECDSA", i, pka) } if err = cert.CheckSignatureFrom(cert); err != nil { t.Errorf("%d: certificate verification failed: %s", i, err) } } } // Self-signed certificate using DSA with SHA1 var dsaCertPem = `-----BEGIN CERTIFICATE----- MIIEDTCCA82gAwIBAgIJALHPghaoxeDhMAkGByqGSM44BAMweTELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAk5DMQ8wDQYDVQQHEwZOZXd0b24xFDASBgNVBAoTC0dvb2ds ZSwgSW5jMRIwEAYDVQQDEwlKb24gQWxsaWUxIjAgBgkqhkiG9w0BCQEWE2pvbmFs bGllQGdvb2dsZS5jb20wHhcNMTEwNTE0MDMwMTQ1WhcNMTEwNjEzMDMwMTQ1WjB5 MQswCQYDVQQGEwJVUzELMAkGA1UECBMCTkMxDzANBgNVBAcTBk5ld3RvbjEUMBIG A1UEChMLR29vZ2xlLCBJbmMxEjAQBgNVBAMTCUpvbiBBbGxpZTEiMCAGCSqGSIb3 DQEJARYTam9uYWxsaWVAZ29vZ2xlLmNvbTCCAbcwggEsBgcqhkjOOAQBMIIBHwKB gQC8hLUnQ7FpFYu4WXTj6DKvXvz8QrJkNJCVMTpKAT7uBpobk32S5RrPKXocd4gN 8lyGB9ggS03EVlEwXvSmO0DH2MQtke2jl9j1HLydClMf4sbx5V6TV9IFw505U1iW jL7awRMgxge+FsudtJK254FjMFo03ZnOQ8ZJJ9E6AEDrlwIVAJpnBn9moyP11Ox5 Asc/5dnjb6dPAoGBAJFHd4KVv1iTVCvEG6gGiYop5DJh28hUQcN9kul+2A0yPUSC X93oN00P8Vh3eYgSaCWZsha7zDG53MrVJ0Zf6v/X/CoZNhLldeNOepivTRAzn+Rz kKUYy5l1sxYLHQKF0UGNCXfFKZT0PCmgU+PWhYNBBMn6/cIh44vp85ideo5CA4GE AAKBgFmifCafzeRaohYKXJgMGSEaggCVCRq5xdyDCat+wbOkjC4mfG01/um3G8u5 LxasjlWRKTR/tcAL7t0QuokVyQaYdVypZXNaMtx1db7YBuHjj3aP+8JOQRI9xz8c bp5NDJ5pISiFOv4p3GZfqZPcqckDt78AtkQrmnal2txhhjF6o4HeMIHbMB0GA1Ud DgQWBBQVyyr7hO11ZFFpWX50298Sa3V+rzCBqwYDVR0jBIGjMIGggBQVyyr7hO11 ZFFpWX50298Sa3V+r6F9pHsweTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk5DMQ8w DQYDVQQHEwZOZXd0b24xFDASBgNVBAoTC0dvb2dsZSwgSW5jMRIwEAYDVQQDEwlK b24gQWxsaWUxIjAgBgkqhkiG9w0BCQEWE2pvbmFsbGllQGdvb2dsZS5jb22CCQCx z4IWqMXg4TAMBgNVHRMEBTADAQH/MAkGByqGSM44BAMDLwAwLAIUPtn/5j8Q1jJI 7ggOIsgrhgUdjGQCFCsmDq1H11q9+9Wp9IMeGrTSKHIM -----END CERTIFICATE----- ` func TestParseCertificateWithDsaPublicKey(t *testing.T) { expectedKey := &dsa.PublicKey{ Parameters: dsa.Parameters{ P: bigFromHexString("00BC84B52743B169158BB85974E3E832AF5EFCFC42B264349095313A4A013EEE069A1B937D92E51ACF297A1C77880DF25C8607D8204B4DC45651305EF4A63B40C7D8C42D91EDA397D8F51CBC9D0A531FE2C6F1E55E9357D205C39D395358968CBEDAC11320C607BE16CB9DB492B6E78163305A34DD99CE43C64927D13A0040EB97"), Q: bigFromHexString("009A67067F66A323F5D4EC7902C73FE5D9E36FA74F"), G: bigFromHexString("009147778295BF5893542BC41BA806898A29E43261DBC85441C37D92E97ED80D323D44825FDDE8374D0FF15877798812682599B216BBCC31B9DCCAD527465FEAFFD7FC2A193612E575E34E7A98AF4D10339FE47390A518CB9975B3160B1D0285D1418D0977C52994F43C29A053E3D685834104C9FAFDC221E38BE9F3989D7A8E42"), }, Y: bigFromHexString("59A27C269FCDE45AA2160A5C980C19211A820095091AB9C5DC8309AB7EC1B3A48C2E267C6D35FEE9B71BCBB92F16AC8E559129347FB5C00BEEDD10BA8915C90698755CA965735A32DC7575BED806E1E38F768FFBC24E41123DC73F1C6E9E4D0C9E692128853AFE29DC665FA993DCA9C903B7BF00B6442B9A76A5DADC6186317A"), } pemBlock, _ := pem.Decode([]byte(dsaCertPem)) cert, err := ParseCertificate(pemBlock.Bytes) if err != nil { t.Fatalf("Failed to parse certificate: %s", err) } if cert.PublicKeyAlgorithm != DSA { t.Errorf("Parsed key algorithm was not DSA") } parsedKey, ok := cert.PublicKey.(*dsa.PublicKey) if !ok { t.Fatalf("Parsed key was not a DSA key: %s", err) } if expectedKey.Y.Cmp(parsedKey.Y) != 0 || expectedKey.P.Cmp(parsedKey.P) != 0 || expectedKey.Q.Cmp(parsedKey.Q) != 0 || expectedKey.G.Cmp(parsedKey.G) != 0 { t.Fatal("Parsed key differs from expected key") } } func TestParseCertificateWithDSASignatureAlgorithm(t *testing.T) { pemBlock, _ := pem.Decode([]byte(dsaCertPem)) cert, err := ParseCertificate(pemBlock.Bytes) if err != nil { t.Fatalf("Failed to parse certificate: %s", err) } if cert.SignatureAlgorithm != DSAWithSHA1 { t.Errorf("Parsed signature algorithm was not DSAWithSHA1") } } func TestVerifyCertificateWithDSASignature(t *testing.T) { pemBlock, _ := pem.Decode([]byte(dsaCertPem)) cert, err := ParseCertificate(pemBlock.Bytes) if err != nil { t.Fatalf("Failed to parse certificate: %s", err) } // test cert is self-signed if err = cert.CheckSignatureFrom(cert); err != nil { t.Fatalf("DSA Certificate verification failed: %s", err) } } const pemCertificate = `-----BEGIN CERTIFICATE----- MIIB5DCCAZCgAwIBAgIBATALBgkqhkiG9w0BAQUwLTEQMA4GA1UEChMHQWNtZSBDbzEZMBcGA1UE AxMQdGVzdC5leGFtcGxlLmNvbTAeFw03MDAxMDEwMDE2NDBaFw03MDAxMDIwMzQ2NDBaMC0xEDAO BgNVBAoTB0FjbWUgQ28xGTAXBgNVBAMTEHRlc3QuZXhhbXBsZS5jb20wWjALBgkqhkiG9w0BAQED SwAwSAJBALKZD0nEffqM1ACuak0bijtqE2QrI/KLADv7l3kK3ppMyCuLKoF0fd7Ai2KW5ToIwzFo fvJcS/STa6HA5gQenRUCAwEAAaOBnjCBmzAOBgNVHQ8BAf8EBAMCAAQwDwYDVR0TAQH/BAUwAwEB /zANBgNVHQ4EBgQEAQIDBDAPBgNVHSMECDAGgAQBAgMEMBsGA1UdEQQUMBKCEHRlc3QuZXhhbXBs ZS5jb20wDwYDVR0gBAgwBjAEBgIqAzAqBgNVHR4EIzAhoB8wDoIMLmV4YW1wbGUuY29tMA2CC2V4 YW1wbGUuY29tMAsGCSqGSIb3DQEBBQNBAHKZKoS1wEQOGhgklx4+/yFYQlnqwKXvar/ZecQvJwui 0seMQnwBhwdBkHfVIU2Fu5VUMRyxlf0ZNaDXcpU581k= -----END CERTIFICATE-----` func TestCRLCreation(t *testing.T) { block, _ := pem.Decode([]byte(pemPrivateKey)) priv, _ := ParsePKCS1PrivateKey(block.Bytes) block, _ = pem.Decode([]byte(pemCertificate)) cert, _ := ParseCertificate(block.Bytes) now := time.Unix(1000, 0) expiry := time.Unix(10000, 0) revokedCerts := []pkix.RevokedCertificate{ { SerialNumber: big.NewInt(1), RevocationTime: now, }, { SerialNumber: big.NewInt(42), RevocationTime: now, }, } crlBytes, err := cert.CreateCRL(rand.Reader, priv, revokedCerts, now, expiry) if err != nil { t.Errorf("error creating CRL: %s", err) } _, err = ParseDERCRL(crlBytes) if err != nil { t.Errorf("error reparsing CRL: %s", err) } } func fromBase64(in string) []byte { out := make([]byte, base64.StdEncoding.DecodedLen(len(in))) n, err := base64.StdEncoding.Decode(out, []byte(in)) if err != nil { panic("failed to base64 decode") } return out[:n] } func TestParseDERCRL(t *testing.T) { derBytes := fromBase64(derCRLBase64) certList, err := ParseDERCRL(derBytes) if err != nil { t.Errorf("error parsing: %s", err) return } numCerts := len(certList.TBSCertList.RevokedCertificates) expected := 88 if numCerts != expected { t.Errorf("bad number of revoked certificates. got: %d want: %d", numCerts, expected) } if certList.HasExpired(time.Unix(1302517272, 0)) { t.Errorf("CRL has expired (but shouldn't have)") } // Can't check the signature here without a package cycle. } func TestParsePEMCRL(t *testing.T) { pemBytes := fromBase64(pemCRLBase64) certList, err := ParseCRL(pemBytes) if err != nil { t.Errorf("error parsing: %s", err) return } numCerts := len(certList.TBSCertList.RevokedCertificates) expected := 2 if numCerts != expected { t.Errorf("bad number of revoked certificates. got: %d want: %d", numCerts, expected) } if certList.HasExpired(time.Unix(1302517272, 0)) { t.Errorf("CRL has expired (but shouldn't have)") } // Can't check the signature here without a package cycle. } func TestImports(t *testing.T) { if runtime.GOOS == "nacl" { t.Skip("skipping on nacl") } if err := exec.Command("go", "run", "x509_test_import.go").Run(); err != nil { t.Errorf("failed to run x509_test_import.go: %s", err) } } const derCRLBase64 = "MIINqzCCDJMCAQEwDQYJKoZIhvcNAQEFBQAwVjEZMBcGA1UEAxMQUEtJIEZJTk1FQ0NBTklDQTEVMBMGA1UEChMMRklOTUVDQ0FOSUNBMRUwEwYDVQQLEwxGSU5NRUNDQU5JQ0ExCzAJBgNVBAYTAklUFw0xMTA1MDQxNjU3NDJaFw0xMTA1MDQyMDU3NDJaMIIMBzAhAg4Ze1od49Lt1qIXBydAzhcNMDkwNzE2MDg0MzIyWjAAMCECDl0HSL9bcZ1Ci/UHJ0DPFw0wOTA3MTYwODQzMTNaMAAwIQIOESB9tVAmX3cY7QcnQNAXDTA5MDcxNjA4NDUyMlowADAhAg4S1tGAQ3mHt8uVBydA1RcNMDkwODA0MTUyNTIyWjAAMCECDlQ249Y7vtC25ScHJ0DWFw0wOTA4MDQxNTI1MzdaMAAwIQIOISMop3NkA4PfYwcnQNkXDTA5MDgwNDExMDAzNFowADAhAg56/BMoS29KEShTBydA2hcNMDkwODA0MTEwMTAzWjAAMCECDnBp/22HPH5CSWoHJ0DbFw0wOTA4MDQxMDU0NDlaMAAwIQIOV9IP+8CD8bK+XAcnQNwXDTA5MDgwNDEwNTcxN1owADAhAg4v5aRz0IxWqYiXBydA3RcNMDkwODA0MTA1NzQ1WjAAMCECDlOU34VzvZAybQwHJ0DeFw0wOTA4MDQxMDU4MjFaMAAwIAINO4CD9lluIxcwBydBAxcNMDkwNzIyMTUzMTU5WjAAMCECDgOllfO8Y1QA7/wHJ0ExFw0wOTA3MjQxMTQxNDNaMAAwIQIOJBX7jbiCdRdyjgcnQUQXDTA5MDkxNjA5MzAwOFowADAhAg5iYSAgmDrlH/RZBydBRRcNMDkwOTE2MDkzMDE3WjAAMCECDmu6k6srP3jcMaQHJ0FRFw0wOTA4MDQxMDU2NDBaMAAwIQIOX8aHlO0V+WVH4QcnQVMXDTA5MDgwNDEwNTcyOVowADAhAg5flK2rg3NnsRgDBydBzhcNMTEwMjAxMTUzMzQ2WjAAMCECDg35yJDL1jOPTgoHJ0HPFw0xMTAyMDExNTM0MjZaMAAwIQIOMyFJ6+e9iiGVBQcnQdAXDTA5MDkxODEzMjAwNVowADAhAg5Emb/Oykucmn8fBydB1xcNMDkwOTIxMTAxMDQ3WjAAMCECDjQKCncV+MnUavMHJ0HaFw0wOTA5MjIwODE1MjZaMAAwIQIOaxiFUt3dpd+tPwcnQfQXDTEwMDYxODA4NDI1MVowADAhAg5G7P8nO0tkrMt7BydB9RcNMTAwNjE4MDg0MjMwWjAAMCECDmTCC3SXhmDRst4HJ0H2Fw0wOTA5MjgxMjA3MjBaMAAwIQIOHoGhUr/pRwzTKgcnQfcXDTA5MDkyODEyMDcyNFowADAhAg50wrcrCiw8mQmPBydCBBcNMTAwMjE2MTMwMTA2WjAAMCECDifWmkvwyhEqwEcHJ0IFFw0xMDAyMTYxMzAxMjBaMAAwIQIOfgPmlW9fg+osNgcnQhwXDTEwMDQxMzA5NTIwMFowADAhAg4YHAGuA6LgCk7tBydCHRcNMTAwNDEzMDk1MTM4WjAAMCECDi1zH1bxkNJhokAHJ0IsFw0xMDA0MTMwOTU5MzBaMAAwIQIOMipNccsb/wo2fwcnQi0XDTEwMDQxMzA5NTkwMFowADAhAg46lCmvPl4GpP6ABydCShcNMTAwMTE5MDk1MjE3WjAAMCECDjaTcaj+wBpcGAsHJ0JLFw0xMDAxMTkwOTUyMzRaMAAwIQIOOMC13EOrBuxIOQcnQloXDTEwMDIwMTA5NDcwNVowADAhAg5KmZl+krz4RsmrBydCWxcNMTAwMjAxMDk0NjQwWjAAMCECDmLG3zQJ/fzdSsUHJ0JiFw0xMDAzMDEwOTUxNDBaMAAwIQIOP39ksgHdojf4owcnQmMXDTEwMDMwMTA5NTExN1owADAhAg4LDQzvWNRlD6v9BydCZBcNMTAwMzAxMDk0NjIyWjAAMCECDkmNfeclaFhIaaUHJ0JlFw0xMDAzMDEwOTQ2MDVaMAAwIQIOT/qWWfpH/m8NTwcnQpQXDTEwMDUxMTA5MTgyMVowADAhAg5m/ksYxvCEgJSvBydClRcNMTAwNTExMDkxODAxWjAAMCECDgvf3Ohq6JOPU9AHJ0KWFw0xMDA1MTEwOTIxMjNaMAAwIQIOKSPas10z4jNVIQcnQpcXDTEwMDUxMTA5MjEwMlowADAhAg4mCWmhoZ3lyKCDBydCohcNMTEwNDI4MTEwMjI1WjAAMCECDkeiyRsBMK0Gvr4HJ0KjFw0xMTA0MjgxMTAyMDdaMAAwIQIOa09b/nH2+55SSwcnQq4XDTExMDQwMTA4Mjk0NlowADAhAg5O7M7iq7gGplr1BydCrxcNMTEwNDAxMDgzMDE3WjAAMCECDjlT6mJxUjTvyogHJ0K1Fw0xMTAxMjcxNTQ4NTJaMAAwIQIODS/l4UUFLe21NAcnQrYXDTExMDEyNzE1NDgyOFowADAhAg5lPRA0XdOUF6lSBydDHhcNMTEwMTI4MTQzNTA1WjAAMCECDixKX4fFGGpENwgHJ0MfFw0xMTAxMjgxNDM1MzBaMAAwIQIORNBkqsPnpKTtbAcnQ08XDTEwMDkwOTA4NDg0MlowADAhAg5QL+EMM3lohedEBydDUBcNMTAwOTA5MDg0ODE5WjAAMCECDlhDnHK+HiTRAXcHJ0NUFw0xMDEwMTkxNjIxNDBaMAAwIQIOdBFqAzq/INz53gcnQ1UXDTEwMTAxOTE2MjA0NFowADAhAg4OjR7s8MgKles1BydDWhcNMTEwMTI3MTY1MzM2WjAAMCECDmfR/elHee+d0SoHJ0NbFw0xMTAxMjcxNjUzNTZaMAAwIQIOBTKv2ui+KFMI+wcnQ5YXDTEwMDkxNTEwMjE1N1owADAhAg49F3c/GSah+oRUBydDmxcNMTEwMTI3MTczMjMzWjAAMCECDggv4I61WwpKFMMHJ0OcFw0xMTAxMjcxNzMyNTVaMAAwIQIOXx/Y8sEvwS10LAcnQ6UXDTExMDEyODExMjkzN1owADAhAg5LSLbnVrSKaw/9BydDphcNMTEwMTI4MTEyOTIwWjAAMCECDmFFoCuhKUeACQQHJ0PfFw0xMTAxMTExMDE3MzdaMAAwIQIOQTDdFh2fSPF6AAcnQ+AXDTExMDExMTEwMTcxMFowADAhAg5B8AOXX61FpvbbBydD5RcNMTAxMDA2MTAxNDM2WjAAMCECDh41P2Gmi7PkwI4HJ0PmFw0xMDEwMDYxMDE2MjVaMAAwIQIOWUHGLQCd+Ale9gcnQ/0XDTExMDUwMjA3NTYxMFowADAhAg5Z2c9AYkikmgWOBydD/hcNMTEwNTAyMDc1NjM0WjAAMCECDmf/UD+/h8nf+74HJ0QVFw0xMTA0MTUwNzI4MzNaMAAwIQIOICvj4epy3MrqfwcnRBYXDTExMDQxNTA3Mjg1NlowADAhAg4bouRMfOYqgv4xBydEHxcNMTEwMzA4MTYyNDI1WjAAMCECDhebWHGoKiTp7pEHJ0QgFw0xMTAzMDgxNjI0NDhaMAAwIQIOX+qnxxAqJ8LtawcnRDcXDTExMDEzMTE1MTIyOFowADAhAg4j0fICqZ+wkOdqBydEOBcNMTEwMTMxMTUxMTQxWjAAMCECDhmXjsV4SUpWtAMHJ0RLFw0xMTAxMjgxMTI0MTJaMAAwIQIODno/w+zG43kkTwcnREwXDTExMDEyODExMjM1MlowADAhAg4b1gc88767Fr+LBydETxcNMTEwMTI4MTEwMjA4WjAAMCECDn+M3Pa1w2nyFeUHJ0RQFw0xMTAxMjgxMDU4NDVaMAAwIQIOaduoyIH61tqybAcnRJUXDTEwMTIxNTA5NDMyMlowADAhAg4nLqQPkyi3ESAKBydElhcNMTAxMjE1MDk0MzM2WjAAMCECDi504NIMH8578gQHJ0SbFw0xMTAyMTQxNDA1NDFaMAAwIQIOGuaM8PDaC5u1egcnRJwXDTExMDIxNDE0MDYwNFowADAhAg4ehYq/BXGnB5PWBydEnxcNMTEwMjA0MDgwOTUxWjAAMCECDkSD4eS4FxW5H20HJ0SgFw0xMTAyMDQwODA5MjVaMAAwIQIOOCcb6ilYObt1egcnRKEXDTExMDEyNjEwNDEyOVowADAhAg58tISWCCwFnKGnBydEohcNMTEwMjA0MDgxMzQyWjAAMCECDn5rjtabY/L/WL0HJ0TJFw0xMTAyMDQxMTAzNDFaMAAwDQYJKoZIhvcNAQEFBQADggEBAGnF2Gs0+LNiYCW1Ipm83OXQYP/bd5tFFRzyz3iepFqNfYs4D68/QihjFoRHQoXEB0OEe1tvaVnnPGnEOpi6krwekquMxo4H88B5SlyiFIqemCOIss0SxlCFs69LmfRYvPPvPEhoXtQ3ZThe0UvKG83GOklhvGl6OaiRf4Mt+m8zOT4Wox/j6aOBK6cw6qKCdmD+Yj1rrNqFGg1CnSWMoD6S6mwNgkzwdBUJZ22BwrzAAo4RHa2Uy3ef1FjwD0XtU5N3uDSxGGBEDvOe5z82rps3E22FpAA8eYl8kaXtmWqyvYU0epp4brGuTxCuBMCAsxt/OjIjeNNQbBGkwxgfYA0=" const pemCRLBase64 = "LS0tLS1CRUdJTiBYNTA5IENSTC0tLS0tDQpNSUlCOWpDQ0FWOENBUUV3RFFZSktvWklodmNOQVFFRkJRQXdiREVhTUJnR0ExVUVDaE1SVWxOQklGTmxZM1Z5DQphWFI1SUVsdVl5NHhIakFjQmdOVkJBTVRGVkpUUVNCUWRXSnNhV01nVW05dmRDQkRRU0IyTVRFdU1Dd0dDU3FHDQpTSWIzRFFFSkFSWWZjbk5oYTJWdmJuSnZiM1J6YVdkdVFISnpZWE5sWTNWeWFYUjVMbU52YlJjTk1URXdNakl6DQpNVGt5T0RNd1doY05NVEV3T0RJeU1Ua3lPRE13V2pDQmpEQktBaEVBckRxb2g5RkhKSFhUN09QZ3V1bjQrQmNODQpNRGt4TVRBeU1UUXlOekE1V2pBbU1Bb0dBMVVkRlFRRENnRUpNQmdHQTFVZEdBUVJHQTh5TURBNU1URXdNakUwDQpNalExTlZvd1BnSVJBTEd6blowOTVQQjVhQU9MUGc1N2ZNTVhEVEF5TVRBeU16RTBOVEF4TkZvd0dqQVlCZ05WDQpIUmdFRVJnUE1qQXdNakV3TWpNeE5EVXdNVFJhb0RBd0xqQWZCZ05WSFNNRUdEQVdnQlQxVERGNlVRTS9MTmVMDQpsNWx2cUhHUXEzZzltekFMQmdOVkhSUUVCQUlDQUlRd0RRWUpLb1pJaHZjTkFRRUZCUUFEZ1lFQUZVNUFzNk16DQpxNVBSc2lmYW9iUVBHaDFhSkx5QytNczVBZ2MwYld5QTNHQWR4dXI1U3BQWmVSV0NCamlQL01FSEJXSkNsQkhQDQpHUmNxNXlJZDNFakRrYUV5eFJhK2k2N0x6dmhJNmMyOUVlNks5cFNZd2ppLzdSVWhtbW5Qclh0VHhsTDBsckxyDQptUVFKNnhoRFJhNUczUUE0Q21VZHNITnZicnpnbUNZcHZWRT0NCi0tLS0tRU5EIFg1MDkgQ1JMLS0tLS0NCg0K" func TestCreateCertificateRequest(t *testing.T) { random := rand.Reader block, _ := pem.Decode([]byte(pemPrivateKey)) rsaPriv, err := ParsePKCS1PrivateKey(block.Bytes) if err != nil { t.Fatalf("Failed to parse private key: %s", err) } ecdsa256Priv, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) if err != nil { t.Fatalf("Failed to generate ECDSA key: %s", err) } ecdsa384Priv, err := ecdsa.GenerateKey(elliptic.P384(), rand.Reader) if err != nil { t.Fatalf("Failed to generate ECDSA key: %s", err) } ecdsa521Priv, err := ecdsa.GenerateKey(elliptic.P521(), rand.Reader) if err != nil { t.Fatalf("Failed to generate ECDSA key: %s", err) } tests := []struct { name string priv interface{} sigAlgo SignatureAlgorithm }{ {"RSA", rsaPriv, SHA1WithRSA}, {"ECDSA-256", ecdsa256Priv, ECDSAWithSHA1}, {"ECDSA-384", ecdsa384Priv, ECDSAWithSHA1}, {"ECDSA-521", ecdsa521Priv, ECDSAWithSHA1}, } for _, test := range tests { template := CertificateRequest{ Subject: pkix.Name{ CommonName: "test.example.com", Organization: []string{"Σ Acme Co"}, }, SignatureAlgorithm: test.sigAlgo, DNSNames: []string{"test.example.com"}, EmailAddresses: []string{"gopher@golang.org"}, IPAddresses: []net.IP{net.IPv4(127, 0, 0, 1).To4(), net.ParseIP("2001:4860:0:2001::68")}, } derBytes, err := CreateCertificateRequest(random, &template, test.priv) if err != nil { t.Errorf("%s: failed to create certificate request: %s", test.name, err) continue } out, err := ParseCertificateRequest(derBytes) if err != nil { t.Errorf("%s: failed to create certificate request: %s", test.name, err) continue } if out.Subject.CommonName != template.Subject.CommonName { t.Errorf("%s: output subject common name and template subject common name don't match", test.name) } else if len(out.Subject.Organization) != len(template.Subject.Organization) { t.Errorf("%s: output subject organisation and template subject organisation don't match", test.name) } else if len(out.DNSNames) != len(template.DNSNames) { t.Errorf("%s: output DNS names and template DNS names don't match", test.name) } else if len(out.EmailAddresses) != len(template.EmailAddresses) { t.Errorf("%s: output email addresses and template email addresses don't match", test.name) } else if len(out.IPAddresses) != len(template.IPAddresses) { t.Errorf("%s: output IP addresses and template IP addresses names don't match", test.name) } } } func marshalAndParseCSR(t *testing.T, template *CertificateRequest) *CertificateRequest { block, _ := pem.Decode([]byte(pemPrivateKey)) rsaPriv, err := ParsePKCS1PrivateKey(block.Bytes) if err != nil { t.Fatal(err) } derBytes, err := CreateCertificateRequest(rand.Reader, template, rsaPriv) if err != nil { t.Fatal(err) } csr, err := ParseCertificateRequest(derBytes) if err != nil { t.Fatal(err) } return csr } func TestCertificateRequestOverrides(t *testing.T) { sanContents, err := marshalSANs([]string{"foo.example.com"}, nil, nil) if err != nil { t.Fatal(err) } template := CertificateRequest{ Subject: pkix.Name{ CommonName: "test.example.com", Organization: []string{"Σ Acme Co"}, }, DNSNames: []string{"test.example.com"}, // An explicit extension should override the DNSNames from the // template. ExtraExtensions: []pkix.Extension{ pkix.Extension{ Id: oidExtensionSubjectAltName, Value: sanContents, }, }, } csr := marshalAndParseCSR(t, &template) if len(csr.DNSNames) != 1 || csr.DNSNames[0] != "foo.example.com" { t.Errorf("Extension did not override template. Got %v\n", csr.DNSNames) } // If there is already an attribute with X.509 extensions then the // extra extensions should be added to it rather than creating a CSR // with two extension attributes. template.Attributes = []pkix.AttributeTypeAndValueSET{ pkix.AttributeTypeAndValueSET{ Type: oidExtensionRequest, Value: [][]pkix.AttributeTypeAndValue{ []pkix.AttributeTypeAndValue{ pkix.AttributeTypeAndValue{ Type: oidExtensionAuthorityInfoAccess, Value: []byte("foo"), }, }, }, }, } csr = marshalAndParseCSR(t, &template) if l := len(csr.Attributes); l != 1 { t.Errorf("incorrect number of attributes: %d\n", l) } if !csr.Attributes[0].Type.Equal(oidExtensionRequest) || len(csr.Attributes[0].Value) != 1 || len(csr.Attributes[0].Value[0]) != 2 { t.Errorf("bad attributes: %#v\n", csr.Attributes) } sanContents2, err := marshalSANs([]string{"foo2.example.com"}, nil, nil) if err != nil { t.Fatal(err) } // Extensions in Attributes should override those in ExtraExtensions. template.Attributes[0].Value[0] = append(template.Attributes[0].Value[0], pkix.AttributeTypeAndValue{ Type: oidExtensionSubjectAltName, Value: sanContents2, }) csr = marshalAndParseCSR(t, &template) if len(csr.DNSNames) != 1 || csr.DNSNames[0] != "foo2.example.com" { t.Errorf("Attributes did not override ExtraExtensions. Got %v\n", csr.DNSNames) } } func TestParseCertificateRequest(t *testing.T) { csrBytes := fromBase64(csrBase64) csr, err := ParseCertificateRequest(csrBytes) if err != nil { t.Fatalf("failed to parse CSR: %s", err) } if len(csr.EmailAddresses) != 1 || csr.EmailAddresses[0] != "gopher@golang.org" { t.Errorf("incorrect email addresses found: %v", csr.EmailAddresses) } if len(csr.DNSNames) != 1 || csr.DNSNames[0] != "test.example.com" { t.Errorf("incorrect DNS names found: %v", csr.DNSNames) } if len(csr.Subject.Country) != 1 || csr.Subject.Country[0] != "AU" { t.Errorf("incorrect Subject name: %v", csr.Subject) } found := false for _, e := range csr.Extensions { if e.Id.Equal(oidExtensionBasicConstraints) { found = true break } } if !found { t.Errorf("basic constraints extension not found in CSR") } } // This CSR was generated with OpenSSL: // openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key -config openssl.cnf // // The openssl.cnf needs to include this section: // [ v3_req ] // basicConstraints = CA:FALSE // keyUsage = nonRepudiation, digitalSignature, keyEncipherment // subjectAltName = email:gopher@golang.org,DNS:test.example.com const csrBase64 = "MIIC4zCCAcsCAQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOY+MVedRg2JEnyeLcSzcsMv2VcsTfkB5+Etd6hihAh6MrGezNyASMMKuQN6YhCX1icQDiQtGsDLTtheNnSXK06tAhHjAP/hGlszRJp+5+rP2M58fDBAkUBEhskbCUWwpY14jFtVuGNJ8vF8h8IeczdolvQhX9lVai9G0EUXJMliMKdjA899H0mRs9PzHyidyrXFNiZlQXfD8Kg7gETn2Ny965iyI6ujAIYSCvam6TnxRHYH2MBKyVGvsYGbPYUQJCsgdgyajEg6ekihvQY3SzO1HSAlZAd7d1QYO4VeWJ2mY6Wu3Jpmh+AmG19S9CcHqGjd0bhuAX9cpPOKgnEmqn0CAwEAAaBZMFcGCSqGSIb3DQEJDjFKMEgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwLgYDVR0RBCcwJYERZ29waGVyQGdvbGFuZy5vcmeCEHRlc3QuZXhhbXBsZS5jb20wDQYJKoZIhvcNAQEFBQADggEBAC9+QpKfdabxwCWwf4IEe1cKjdXLS1ScSuw27a3kZzQiPV78WJMa6dB8dqhdH5BRwGZ/qsgLrO6ZHlNeIv2Ib41Ccq71ecHW/nXc94A1BzJ/bVdI9LZcmTUvR1/m1jCpN7UqQ0ml1u9VihK7Pe762hEYxuWDQzYEU0l15S/bXmqeq3eF1A59XT/2jwe5+NV0Wwf4UQlkTXsAQMsJ+KzrQafd8Qv2A49o048uRvmjeJDrXLawGVianZ7D5A6Fpd1rZh6XcjqBpmgLw41DRQWENOdzhy+HyphKRv1MlY8OLkNqpGMhu8DdgJVGoT16DGiickoEa7Z3UCPVNgdTkT9jq7U=" go/src/pkg/crypto/x509/x509_test_import.go0100644000000000000000000000312712412656737020564 0ustar00rootroot00000000000000// Copyright 2013 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 ignore // This file is run by the x509 tests to ensure that a program with minimal // imports can sign certificates without errors resulting from missing hash // functions. package main import ( "crypto/rand" "crypto/x509" "crypto/x509/pkix" "encoding/pem" "math/big" "time" ) func main() { block, _ := pem.Decode([]byte(pemPrivateKey)) rsaPriv, err := x509.ParsePKCS1PrivateKey(block.Bytes) if err != nil { panic("Failed to parse private key: " + err.Error()) } template := x509.Certificate{ SerialNumber: big.NewInt(1), Subject: pkix.Name{ CommonName: "test", Organization: []string{"Σ Acme Co"}, }, NotBefore: time.Unix(1000, 0), NotAfter: time.Unix(100000, 0), KeyUsage: x509.KeyUsageCertSign, } if _, err = x509.CreateCertificate(rand.Reader, &template, &template, &rsaPriv.PublicKey, rsaPriv); err != nil { panic("failed to create certificate with basic imports: " + err.Error()) } } var pemPrivateKey = `-----BEGIN RSA PRIVATE KEY----- MIIBOgIBAAJBALKZD0nEffqM1ACuak0bijtqE2QrI/KLADv7l3kK3ppMyCuLKoF0 fd7Ai2KW5ToIwzFofvJcS/STa6HA5gQenRUCAwEAAQJBAIq9amn00aS0h/CrjXqu /ThglAXJmZhOMPVn4eiu7/ROixi9sex436MaVeMqSNf7Ex9a8fRNfWss7Sqd9eWu RTUCIQDasvGASLqmjeffBNLTXV2A5g4t+kLVCpsEIZAycV5GswIhANEPLmax0ME/ EO+ZJ79TJKN5yiGBRsv5yvx5UiHxajEXAiAhAol5N4EUyq6I9w1rYdhPMGpLfk7A IU2snfRJ6Nq2CQIgFrPsWRCkV+gOYcajD17rEqmuLrdIRexpg8N1DOSXoJ8CIGlS tAboUGBxTDq3ZroNism3DaMIbKPyYrAqhKov1h5V -----END RSA PRIVATE KEY----- ` go/src/pkg/database0040755000000000000000000000000012412656737014537 5ustar00rootroot00000000000000go/src/pkg/database/sql0040755000000000000000000000000012412656737015336 5ustar00rootroot00000000000000go/src/pkg/database/sql/convert.go0100644000000000000000000001620012412656737017420 0ustar00rootroot00000000000000// Copyright 2011 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. // Type conversions for Scan. package sql import ( "database/sql/driver" "errors" "fmt" "reflect" "strconv" ) var errNilPtr = errors.New("destination pointer is nil") // embedded in descriptive error // driverArgs converts arguments from callers of Stmt.Exec and // Stmt.Query into driver Values. // // The statement ds may be nil, if no statement is available. func driverArgs(ds *driverStmt, args []interface{}) ([]driver.Value, error) { dargs := make([]driver.Value, len(args)) var si driver.Stmt if ds != nil { si = ds.si } cc, ok := si.(driver.ColumnConverter) // Normal path, for a driver.Stmt that is not a ColumnConverter. if !ok { for n, arg := range args { var err error dargs[n], err = driver.DefaultParameterConverter.ConvertValue(arg) if err != nil { return nil, fmt.Errorf("sql: converting Exec argument #%d's type: %v", n, err) } } return dargs, nil } // Let the Stmt convert its own arguments. for n, arg := range args { // First, see if the value itself knows how to convert // itself to a driver type. For example, a NullString // struct changing into a string or nil. if svi, ok := arg.(driver.Valuer); ok { sv, err := svi.Value() if err != nil { return nil, fmt.Errorf("sql: argument index %d from Value: %v", n, err) } if !driver.IsValue(sv) { return nil, fmt.Errorf("sql: argument index %d: non-subset type %T returned from Value", n, sv) } arg = sv } // Second, ask the column to sanity check itself. For // example, drivers might use this to make sure that // an int64 values being inserted into a 16-bit // integer field is in range (before getting // truncated), or that a nil can't go into a NOT NULL // column before going across the network to get the // same error. var err error ds.Lock() dargs[n], err = cc.ColumnConverter(n).ConvertValue(arg) ds.Unlock() if err != nil { return nil, fmt.Errorf("sql: converting argument #%d's type: %v", n, err) } if !driver.IsValue(dargs[n]) { return nil, fmt.Errorf("sql: driver ColumnConverter error converted %T to unsupported type %T", arg, dargs[n]) } } return dargs, nil } // convertAssign copies to dest the value in src, converting it if possible. // An error is returned if the copy would result in loss of information. // dest should be a pointer type. func convertAssign(dest, src interface{}) error { // Common cases, without reflect. switch s := src.(type) { case string: switch d := dest.(type) { case *string: if d == nil { return errNilPtr } *d = s return nil case *[]byte: if d == nil { return errNilPtr } *d = []byte(s) return nil } case []byte: switch d := dest.(type) { case *string: if d == nil { return errNilPtr } *d = string(s) return nil case *interface{}: if d == nil { return errNilPtr } *d = cloneBytes(s) return nil case *[]byte: if d == nil { return errNilPtr } *d = cloneBytes(s) return nil case *RawBytes: if d == nil { return errNilPtr } *d = s return nil } case nil: switch d := dest.(type) { case *interface{}: if d == nil { return errNilPtr } *d = nil return nil case *[]byte: if d == nil { return errNilPtr } *d = nil return nil case *RawBytes: if d == nil { return errNilPtr } *d = nil return nil } } var sv reflect.Value switch d := dest.(type) { case *string: sv = reflect.ValueOf(src) switch sv.Kind() { case reflect.Bool, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64: *d = asString(src) return nil } case *[]byte: sv = reflect.ValueOf(src) if b, ok := asBytes(nil, sv); ok { *d = b return nil } case *RawBytes: sv = reflect.ValueOf(src) if b, ok := asBytes([]byte(*d)[:0], sv); ok { *d = RawBytes(b) return nil } case *bool: bv, err := driver.Bool.ConvertValue(src) if err == nil { *d = bv.(bool) } return err case *interface{}: *d = src return nil } if scanner, ok := dest.(Scanner); ok { return scanner.Scan(src) } dpv := reflect.ValueOf(dest) if dpv.Kind() != reflect.Ptr { return errors.New("destination not a pointer") } if dpv.IsNil() { return errNilPtr } if !sv.IsValid() { sv = reflect.ValueOf(src) } dv := reflect.Indirect(dpv) if dv.Kind() == sv.Kind() { dv.Set(sv) return nil } switch dv.Kind() { case reflect.Ptr: if src == nil { dv.Set(reflect.Zero(dv.Type())) return nil } else { dv.Set(reflect.New(dv.Type().Elem())) return convertAssign(dv.Interface(), src) } case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: s := asString(src) i64, err := strconv.ParseInt(s, 10, dv.Type().Bits()) if err != nil { return fmt.Errorf("converting string %q to a %s: %v", s, dv.Kind(), err) } dv.SetInt(i64) return nil case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: s := asString(src) u64, err := strconv.ParseUint(s, 10, dv.Type().Bits()) if err != nil { return fmt.Errorf("converting string %q to a %s: %v", s, dv.Kind(), err) } dv.SetUint(u64) return nil case reflect.Float32, reflect.Float64: s := asString(src) f64, err := strconv.ParseFloat(s, dv.Type().Bits()) if err != nil { return fmt.Errorf("converting string %q to a %s: %v", s, dv.Kind(), err) } dv.SetFloat(f64) return nil } return fmt.Errorf("unsupported driver -> Scan pair: %T -> %T", src, dest) } func cloneBytes(b []byte) []byte { if b == nil { return nil } else { c := make([]byte, len(b)) copy(c, b) return c } } func asString(src interface{}) string { switch v := src.(type) { case string: return v case []byte: return string(v) } rv := reflect.ValueOf(src) switch rv.Kind() { case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return strconv.FormatInt(rv.Int(), 10) case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: return strconv.FormatUint(rv.Uint(), 10) case reflect.Float64: return strconv.FormatFloat(rv.Float(), 'g', -1, 64) case reflect.Float32: return strconv.FormatFloat(rv.Float(), 'g', -1, 32) case reflect.Bool: return strconv.FormatBool(rv.Bool()) } return fmt.Sprintf("%v", src) } func asBytes(buf []byte, rv reflect.Value) (b []byte, ok bool) { switch rv.Kind() { case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return strconv.AppendInt(buf, rv.Int(), 10), true case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: return strconv.AppendUint(buf, rv.Uint(), 10), true case reflect.Float32: return strconv.AppendFloat(buf, rv.Float(), 'g', -1, 32), true case reflect.Float64: return strconv.AppendFloat(buf, rv.Float(), 'g', -1, 64), true case reflect.Bool: return strconv.AppendBool(buf, rv.Bool()), true case reflect.String: s := rv.String() return append(buf, s...), true } return } go/src/pkg/database/sql/convert_test.go0100644000000000000000000002446212412656737020470 0ustar00rootroot00000000000000// Copyright 2011 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 sql import ( "database/sql/driver" "fmt" "reflect" "runtime" "testing" "time" ) var someTime = time.Unix(123, 0) var answer int64 = 42 type conversionTest struct { s, d interface{} // source and destination // following are used if they're non-zero wantint int64 wantuint uint64 wantstr string wantbytes []byte wantraw RawBytes wantf32 float32 wantf64 float64 wanttime time.Time wantbool bool // used if d is of type *bool wanterr string wantiface interface{} wantptr *int64 // if non-nil, *d's pointed value must be equal to *wantptr wantnil bool // if true, *d must be *int64(nil) } // Target variables for scanning into. var ( scanstr string scanbytes []byte scanraw RawBytes scanint int scanint8 int8 scanint16 int16 scanint32 int32 scanuint8 uint8 scanuint16 uint16 scanbool bool scanf32 float32 scanf64 float64 scantime time.Time scanptr *int64 scaniface interface{} ) var conversionTests = []conversionTest{ // Exact conversions (destination pointer type matches source type) {s: "foo", d: &scanstr, wantstr: "foo"}, {s: 123, d: &scanint, wantint: 123}, {s: someTime, d: &scantime, wanttime: someTime}, // To strings {s: "string", d: &scanstr, wantstr: "string"}, {s: []byte("byteslice"), d: &scanstr, wantstr: "byteslice"}, {s: 123, d: &scanstr, wantstr: "123"}, {s: int8(123), d: &scanstr, wantstr: "123"}, {s: int64(123), d: &scanstr, wantstr: "123"}, {s: uint8(123), d: &scanstr, wantstr: "123"}, {s: uint16(123), d: &scanstr, wantstr: "123"}, {s: uint32(123), d: &scanstr, wantstr: "123"}, {s: uint64(123), d: &scanstr, wantstr: "123"}, {s: 1.5, d: &scanstr, wantstr: "1.5"}, // To []byte {s: nil, d: &scanbytes, wantbytes: nil}, {s: "string", d: &scanbytes, wantbytes: []byte("string")}, {s: []byte("byteslice"), d: &scanbytes, wantbytes: []byte("byteslice")}, {s: 123, d: &scanbytes, wantbytes: []byte("123")}, {s: int8(123), d: &scanbytes, wantbytes: []byte("123")}, {s: int64(123), d: &scanbytes, wantbytes: []byte("123")}, {s: uint8(123), d: &scanbytes, wantbytes: []byte("123")}, {s: uint16(123), d: &scanbytes, wantbytes: []byte("123")}, {s: uint32(123), d: &scanbytes, wantbytes: []byte("123")}, {s: uint64(123), d: &scanbytes, wantbytes: []byte("123")}, {s: 1.5, d: &scanbytes, wantbytes: []byte("1.5")}, // To RawBytes {s: nil, d: &scanraw, wantraw: nil}, {s: []byte("byteslice"), d: &scanraw, wantraw: RawBytes("byteslice")}, {s: 123, d: &scanraw, wantraw: RawBytes("123")}, {s: int8(123), d: &scanraw, wantraw: RawBytes("123")}, {s: int64(123), d: &scanraw, wantraw: RawBytes("123")}, {s: uint8(123), d: &scanraw, wantraw: RawBytes("123")}, {s: uint16(123), d: &scanraw, wantraw: RawBytes("123")}, {s: uint32(123), d: &scanraw, wantraw: RawBytes("123")}, {s: uint64(123), d: &scanraw, wantraw: RawBytes("123")}, {s: 1.5, d: &scanraw, wantraw: RawBytes("1.5")}, // Strings to integers {s: "255", d: &scanuint8, wantuint: 255}, {s: "256", d: &scanuint8, wanterr: `converting string "256" to a uint8: strconv.ParseUint: parsing "256": value out of range`}, {s: "256", d: &scanuint16, wantuint: 256}, {s: "-1", d: &scanint, wantint: -1}, {s: "foo", d: &scanint, wanterr: `converting string "foo" to a int: strconv.ParseInt: parsing "foo": invalid syntax`}, // True bools {s: true, d: &scanbool, wantbool: true}, {s: "True", d: &scanbool, wantbool: true}, {s: "TRUE", d: &scanbool, wantbool: true}, {s: "1", d: &scanbool, wantbool: true}, {s: 1, d: &scanbool, wantbool: true}, {s: int64(1), d: &scanbool, wantbool: true}, {s: uint16(1), d: &scanbool, wantbool: true}, // False bools {s: false, d: &scanbool, wantbool: false}, {s: "false", d: &scanbool, wantbool: false}, {s: "FALSE", d: &scanbool, wantbool: false}, {s: "0", d: &scanbool, wantbool: false}, {s: 0, d: &scanbool, wantbool: false}, {s: int64(0), d: &scanbool, wantbool: false}, {s: uint16(0), d: &scanbool, wantbool: false}, // Not bools {s: "yup", d: &scanbool, wanterr: `sql/driver: couldn't convert "yup" into type bool`}, {s: 2, d: &scanbool, wanterr: `sql/driver: couldn't convert 2 into type bool`}, // Floats {s: float64(1.5), d: &scanf64, wantf64: float64(1.5)}, {s: int64(1), d: &scanf64, wantf64: float64(1)}, {s: float64(1.5), d: &scanf32, wantf32: float32(1.5)}, {s: "1.5", d: &scanf32, wantf32: float32(1.5)}, {s: "1.5", d: &scanf64, wantf64: float64(1.5)}, // Pointers {s: interface{}(nil), d: &scanptr, wantnil: true}, {s: int64(42), d: &scanptr, wantptr: &answer}, // To interface{} {s: float64(1.5), d: &scaniface, wantiface: float64(1.5)}, {s: int64(1), d: &scaniface, wantiface: int64(1)}, {s: "str", d: &scaniface, wantiface: "str"}, {s: []byte("byteslice"), d: &scaniface, wantiface: []byte("byteslice")}, {s: true, d: &scaniface, wantiface: true}, {s: nil, d: &scaniface}, {s: []byte(nil), d: &scaniface, wantiface: []byte(nil)}, } func intPtrValue(intptr interface{}) interface{} { return reflect.Indirect(reflect.Indirect(reflect.ValueOf(intptr))).Int() } func intValue(intptr interface{}) int64 { return reflect.Indirect(reflect.ValueOf(intptr)).Int() } func uintValue(intptr interface{}) uint64 { return reflect.Indirect(reflect.ValueOf(intptr)).Uint() } func float64Value(ptr interface{}) float64 { return *(ptr.(*float64)) } func float32Value(ptr interface{}) float32 { return *(ptr.(*float32)) } func timeValue(ptr interface{}) time.Time { return *(ptr.(*time.Time)) } func TestConversions(t *testing.T) { for n, ct := range conversionTests { err := convertAssign(ct.d, ct.s) errstr := "" if err != nil { errstr = err.Error() } errf := func(format string, args ...interface{}) { base := fmt.Sprintf("convertAssign #%d: for %v (%T) -> %T, ", n, ct.s, ct.s, ct.d) t.Errorf(base+format, args...) } if errstr != ct.wanterr { errf("got error %q, want error %q", errstr, ct.wanterr) } if ct.wantstr != "" && ct.wantstr != scanstr { errf("want string %q, got %q", ct.wantstr, scanstr) } if ct.wantint != 0 && ct.wantint != intValue(ct.d) { errf("want int %d, got %d", ct.wantint, intValue(ct.d)) } if ct.wantuint != 0 && ct.wantuint != uintValue(ct.d) { errf("want uint %d, got %d", ct.wantuint, uintValue(ct.d)) } if ct.wantf32 != 0 && ct.wantf32 != float32Value(ct.d) { errf("want float32 %v, got %v", ct.wantf32, float32Value(ct.d)) } if ct.wantf64 != 0 && ct.wantf64 != float64Value(ct.d) { errf("want float32 %v, got %v", ct.wantf64, float64Value(ct.d)) } if bp, boolTest := ct.d.(*bool); boolTest && *bp != ct.wantbool && ct.wanterr == "" { errf("want bool %v, got %v", ct.wantbool, *bp) } if !ct.wanttime.IsZero() && !ct.wanttime.Equal(timeValue(ct.d)) { errf("want time %v, got %v", ct.wanttime, timeValue(ct.d)) } if ct.wantnil && *ct.d.(**int64) != nil { errf("want nil, got %v", intPtrValue(ct.d)) } if ct.wantptr != nil { if *ct.d.(**int64) == nil { errf("want pointer to %v, got nil", *ct.wantptr) } else if *ct.wantptr != intPtrValue(ct.d) { errf("want pointer to %v, got %v", *ct.wantptr, intPtrValue(ct.d)) } } if ifptr, ok := ct.d.(*interface{}); ok { if !reflect.DeepEqual(ct.wantiface, scaniface) { errf("want interface %#v, got %#v", ct.wantiface, scaniface) continue } if srcBytes, ok := ct.s.([]byte); ok { dstBytes := (*ifptr).([]byte) if len(srcBytes) > 0 && &dstBytes[0] == &srcBytes[0] { errf("copy into interface{} didn't copy []byte data") } } } } } func TestNullString(t *testing.T) { var ns NullString convertAssign(&ns, []byte("foo")) if !ns.Valid { t.Errorf("expecting not null") } if ns.String != "foo" { t.Errorf("expecting foo; got %q", ns.String) } convertAssign(&ns, nil) if ns.Valid { t.Errorf("expecting null on nil") } if ns.String != "" { t.Errorf("expecting blank on nil; got %q", ns.String) } } type valueConverterTest struct { c driver.ValueConverter in, out interface{} err string } var valueConverterTests = []valueConverterTest{ {driver.DefaultParameterConverter, NullString{"hi", true}, "hi", ""}, {driver.DefaultParameterConverter, NullString{"", false}, nil, ""}, } func TestValueConverters(t *testing.T) { for i, tt := range valueConverterTests { out, err := tt.c.ConvertValue(tt.in) goterr := "" if err != nil { goterr = err.Error() } if goterr != tt.err { t.Errorf("test %d: %T(%T(%v)) error = %q; want error = %q", i, tt.c, tt.in, tt.in, goterr, tt.err) } if tt.err != "" { continue } if !reflect.DeepEqual(out, tt.out) { t.Errorf("test %d: %T(%T(%v)) = %v (%T); want %v (%T)", i, tt.c, tt.in, tt.in, out, out, tt.out, tt.out) } } } // Tests that assigning to RawBytes doesn't allocate (and also works). func TestRawBytesAllocs(t *testing.T) { buf := make(RawBytes, 10) test := func(name string, in interface{}, want string) { if err := convertAssign(&buf, in); err != nil { t.Fatalf("%s: convertAssign = %v", name, err) } match := len(buf) == len(want) if match { for i, b := range buf { if want[i] != b { match = false break } } } if !match { t.Fatalf("%s: got %q (len %d); want %q (len %d)", name, buf, len(buf), want, len(want)) } } n := testing.AllocsPerRun(100, func() { test("uint64", uint64(12345678), "12345678") test("uint32", uint32(1234), "1234") test("uint16", uint16(12), "12") test("uint8", uint8(1), "1") test("uint", uint(123), "123") test("int", int(123), "123") test("int8", int8(1), "1") test("int16", int16(12), "12") test("int32", int32(1234), "1234") test("int64", int64(12345678), "12345678") test("float32", float32(1.5), "1.5") test("float64", float64(64), "64") test("bool", false, "false") }) // The numbers below are only valid for 64-bit interface word sizes, // and gc. With 32-bit words there are more convT2E allocs, and // with gccgo, only pointers currently go in interface data. // So only care on amd64 gc for now. measureAllocs := runtime.GOARCH == "amd64" && runtime.Compiler == "gc" if n > 0.5 && measureAllocs { t.Fatalf("allocs = %v; want 0", n) } // This one involves a convT2E allocation, string -> interface{} n = testing.AllocsPerRun(100, func() { test("string", "foo", "foo") }) if n > 1.5 && measureAllocs { t.Fatalf("allocs = %v; want max 1", n) } } go/src/pkg/database/sql/doc.txt0100644000000000000000000000410312412656737016716 0ustar00rootroot00000000000000Goals of the sql and sql/driver packages: * Provide a generic database API for a variety of SQL or SQL-like databases. There currently exist Go libraries for SQLite, MySQL, and Postgres, but all with a very different feel, and often a non-Go-like feel. * Feel like Go. * Care mostly about the common cases. Common SQL should be portable. SQL edge cases or db-specific extensions can be detected and conditionally used by the application. It is a non-goal to care about every particular db's extension or quirk. * Separate out the basic implementation of a database driver (implementing the sql/driver interfaces) vs the implementation of all the user-level types and convenience methods. In a nutshell: User Code ---> sql package (concrete types) ---> sql/driver (interfaces) Database Driver -> sql (to register) + sql/driver (implement interfaces) * Make type casting/conversions consistent between all drivers. To achieve this, most of the conversions are done in the sql package, not in each driver. The drivers then only have to deal with a smaller set of types. * Be flexible with type conversions, but be paranoid about silent truncation or other loss of precision. * Handle concurrency well. Users shouldn't need to care about the database's per-connection thread safety issues (or lack thereof), and shouldn't have to maintain their own free pools of connections. The 'db' package should deal with that bookkeeping as needed. Given an *sql.DB, it should be possible to share that instance between multiple goroutines, without any extra synchronization. * Push complexity, where necessary, down into the sql+driver packages, rather than exposing it to users. Said otherwise, the sql package should expose an ideal database that's not finnicky about how it's accessed, even if that's not true. * Provide optional interfaces in sql/driver for drivers to implement for special cases or fastpaths. But the only party that knows about those is the sql package. To user code, some stuff just might start working or start working slightly faster. go/src/pkg/database/sql/driver0040755000000000000000000000000012412656737016631 5ustar00rootroot00000000000000go/src/pkg/database/sql/driver/driver.go0100644000000000000000000001517612412656737020541 0ustar00rootroot00000000000000// Copyright 2011 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 driver defines interfaces to be implemented by database // drivers as used by package sql. // // Most code should use package sql. package driver import "errors" // Value is a value that drivers must be able to handle. // It is either nil or an instance of one of these types: // // int64 // float64 // bool // []byte // string [*] everywhere except from Rows.Next. // time.Time type Value interface{} // Driver is the interface that must be implemented by a database // driver. type Driver interface { // Open returns a new connection to the database. // The name is a string in a driver-specific format. // // Open may return a cached connection (one previously // closed), but doing so is unnecessary; the sql package // maintains a pool of idle connections for efficient re-use. // // The returned connection is only used by one goroutine at a // time. Open(name string) (Conn, error) } // ErrSkip may be returned by some optional interfaces' methods to // indicate at runtime that the fast path is unavailable and the sql // package should continue as if the optional interface was not // implemented. ErrSkip is only supported where explicitly // documented. var ErrSkip = errors.New("driver: skip fast-path; continue as if unimplemented") // ErrBadConn should be returned by a driver to signal to the sql // package that a driver.Conn is in a bad state (such as the server // having earlier closed the connection) and the sql package should // retry on a new connection. // // To prevent duplicate operations, ErrBadConn should NOT be returned // if there's a possibility that the database server might have // performed the operation. Even if the server sends back an error, // you shouldn't return ErrBadConn. var ErrBadConn = errors.New("driver: bad connection") // Execer is an optional interface that may be implemented by a Conn. // // If a Conn does not implement Execer, the sql package's DB.Exec will // first prepare a query, execute the statement, and then close the // statement. // // Exec may return ErrSkip. type Execer interface { Exec(query string, args []Value) (Result, error) } // Queryer is an optional interface that may be implemented by a Conn. // // If a Conn does not implement Queryer, the sql package's DB.Query will // first prepare a query, execute the statement, and then close the // statement. // // Query may return ErrSkip. type Queryer interface { Query(query string, args []Value) (Rows, error) } // Conn is a connection to a database. It is not used concurrently // by multiple goroutines. // // Conn is assumed to be stateful. type Conn interface { // Prepare returns a prepared statement, bound to this connection. Prepare(query string) (Stmt, error) // Close invalidates and potentially stops any current // prepared statements and transactions, marking this // connection as no longer in use. // // Because the sql package maintains a free pool of // connections and only calls Close when there's a surplus of // idle connections, it shouldn't be necessary for drivers to // do their own connection caching. Close() error // Begin starts and returns a new transaction. Begin() (Tx, error) } // Result is the result of a query execution. type Result interface { // LastInsertId returns the database's auto-generated ID // after, for example, an INSERT into a table with primary // key. LastInsertId() (int64, error) // RowsAffected returns the number of rows affected by the // query. RowsAffected() (int64, error) } // Stmt is a prepared statement. It is bound to a Conn and not // used by multiple goroutines concurrently. type Stmt interface { // Close closes the statement. // // As of Go 1.1, a Stmt will not be closed if it's in use // by any queries. Close() error // NumInput returns the number of placeholder parameters. // // If NumInput returns >= 0, the sql package will sanity check // argument counts from callers and return errors to the caller // before the statement's Exec or Query methods are called. // // NumInput may also return -1, if the driver doesn't know // its number of placeholders. In that case, the sql package // will not sanity check Exec or Query argument counts. NumInput() int // Exec executes a query that doesn't return rows, such // as an INSERT or UPDATE. Exec(args []Value) (Result, error) // Query executes a query that may return rows, such as a // SELECT. Query(args []Value) (Rows, error) } // ColumnConverter may be optionally implemented by Stmt if the // statement is aware of its own columns' types and can convert from // any type to a driver Value. type ColumnConverter interface { // ColumnConverter returns a ValueConverter for the provided // column index. If the type of a specific column isn't known // or shouldn't be handled specially, DefaultValueConverter // can be returned. ColumnConverter(idx int) ValueConverter } // Rows is an iterator over an executed query's results. type Rows interface { // Columns returns the names of the columns. The number of // columns of the result is inferred from the length of the // slice. If a particular column name isn't known, an empty // string should be returned for that entry. Columns() []string // Close closes the rows iterator. Close() error // Next is called to populate the next row of data into // the provided slice. The provided slice will be the same // size as the Columns() are wide. // // The dest slice may be populated only with // a driver Value type, but excluding string. // All string values must be converted to []byte. // // Next should return io.EOF when there are no more rows. Next(dest []Value) error } // Tx is a transaction. type Tx interface { Commit() error Rollback() error } // RowsAffected implements Result for an INSERT or UPDATE operation // which mutates a number of rows. type RowsAffected int64 var _ Result = RowsAffected(0) func (RowsAffected) LastInsertId() (int64, error) { return 0, errors.New("no LastInsertId available") } func (v RowsAffected) RowsAffected() (int64, error) { return int64(v), nil } // ResultNoRows is a pre-defined Result for drivers to return when a DDL // command (such as a CREATE TABLE) succeeds. It returns an error for both // LastInsertId and RowsAffected. var ResultNoRows noRows type noRows struct{} var _ Result = noRows{} func (noRows) LastInsertId() (int64, error) { return 0, errors.New("no LastInsertId available after DDL statement") } func (noRows) RowsAffected() (int64, error) { return 0, errors.New("no RowsAffected available after DDL statement") } go/src/pkg/database/sql/driver/types.go0100644000000000000000000001554212412656737020407 0ustar00rootroot00000000000000// Copyright 2011 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 driver import ( "fmt" "reflect" "strconv" "time" ) // ValueConverter is the interface providing the ConvertValue method. // // Various implementations of ValueConverter are provided by the // driver package to provide consistent implementations of conversions // between drivers. The ValueConverters have several uses: // // * converting from the Value types as provided by the sql package // into a database table's specific column type and making sure it // fits, such as making sure a particular int64 fits in a // table's uint16 column. // // * converting a value as given from the database into one of the // driver Value types. // // * by the sql package, for converting from a driver's Value type // to a user's type in a scan. type ValueConverter interface { // ConvertValue converts a value to a driver Value. ConvertValue(v interface{}) (Value, error) } // Valuer is the interface providing the Value method. // // Types implementing Valuer interface are able to convert // themselves to a driver Value. type Valuer interface { // Value returns a driver Value. Value() (Value, error) } // Bool is a ValueConverter that converts input values to bools. // // The conversion rules are: // - booleans are returned unchanged // - for integer types, // 1 is true // 0 is false, // other integers are an error // - for strings and []byte, same rules as strconv.ParseBool // - all other types are an error var Bool boolType type boolType struct{} var _ ValueConverter = boolType{} func (boolType) String() string { return "Bool" } func (boolType) ConvertValue(src interface{}) (Value, error) { switch s := src.(type) { case bool: return s, nil case string: b, err := strconv.ParseBool(s) if err != nil { return nil, fmt.Errorf("sql/driver: couldn't convert %q into type bool", s) } return b, nil case []byte: b, err := strconv.ParseBool(string(s)) if err != nil { return nil, fmt.Errorf("sql/driver: couldn't convert %q into type bool", s) } return b, nil } sv := reflect.ValueOf(src) switch sv.Kind() { case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: iv := sv.Int() if iv == 1 || iv == 0 { return iv == 1, nil } return nil, fmt.Errorf("sql/driver: couldn't convert %d into type bool", iv) case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: uv := sv.Uint() if uv == 1 || uv == 0 { return uv == 1, nil } return nil, fmt.Errorf("sql/driver: couldn't convert %d into type bool", uv) } return nil, fmt.Errorf("sql/driver: couldn't convert %v (%T) into type bool", src, src) } // Int32 is a ValueConverter that converts input values to int64, // respecting the limits of an int32 value. var Int32 int32Type type int32Type struct{} var _ ValueConverter = int32Type{} func (int32Type) ConvertValue(v interface{}) (Value, error) { rv := reflect.ValueOf(v) switch rv.Kind() { case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: i64 := rv.Int() if i64 > (1<<31)-1 || i64 < -(1<<31) { return nil, fmt.Errorf("sql/driver: value %d overflows int32", v) } return i64, nil case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: u64 := rv.Uint() if u64 > (1<<31)-1 { return nil, fmt.Errorf("sql/driver: value %d overflows int32", v) } return int64(u64), nil case reflect.String: i, err := strconv.Atoi(rv.String()) if err != nil { return nil, fmt.Errorf("sql/driver: value %q can't be converted to int32", v) } return int64(i), nil } return nil, fmt.Errorf("sql/driver: unsupported value %v (type %T) converting to int32", v, v) } // String is a ValueConverter that converts its input to a string. // If the value is already a string or []byte, it's unchanged. // If the value is of another type, conversion to string is done // with fmt.Sprintf("%v", v). var String stringType type stringType struct{} func (stringType) ConvertValue(v interface{}) (Value, error) { switch v.(type) { case string, []byte: return v, nil } return fmt.Sprintf("%v", v), nil } // Null is a type that implements ValueConverter by allowing nil // values but otherwise delegating to another ValueConverter. type Null struct { Converter ValueConverter } func (n Null) ConvertValue(v interface{}) (Value, error) { if v == nil { return nil, nil } return n.Converter.ConvertValue(v) } // NotNull is a type that implements ValueConverter by disallowing nil // values but otherwise delegating to another ValueConverter. type NotNull struct { Converter ValueConverter } func (n NotNull) ConvertValue(v interface{}) (Value, error) { if v == nil { return nil, fmt.Errorf("nil value not allowed") } return n.Converter.ConvertValue(v) } // IsValue reports whether v is a valid Value parameter type. // Unlike IsScanValue, IsValue permits the string type. func IsValue(v interface{}) bool { if IsScanValue(v) { return true } if _, ok := v.(string); ok { return true } return false } // IsScanValue reports whether v is a valid Value scan type. // Unlike IsValue, IsScanValue does not permit the string type. func IsScanValue(v interface{}) bool { if v == nil { return true } switch v.(type) { case int64, float64, []byte, bool, time.Time: return true } return false } // DefaultParameterConverter is the default implementation of // ValueConverter that's used when a Stmt doesn't implement // ColumnConverter. // // DefaultParameterConverter returns the given value directly if // IsValue(value). Otherwise integer type are converted to // int64, floats to float64, and strings to []byte. Other types are // an error. var DefaultParameterConverter defaultConverter type defaultConverter struct{} var _ ValueConverter = defaultConverter{} func (defaultConverter) ConvertValue(v interface{}) (Value, error) { if IsValue(v) { return v, nil } if svi, ok := v.(Valuer); ok { sv, err := svi.Value() if err != nil { return nil, err } if !IsValue(sv) { return nil, fmt.Errorf("non-Value type %T returned from Value", sv) } return sv, nil } rv := reflect.ValueOf(v) switch rv.Kind() { case reflect.Ptr: // indirect pointers if rv.IsNil() { return nil, nil } else { return defaultConverter{}.ConvertValue(rv.Elem().Interface()) } case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return rv.Int(), nil case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32: return int64(rv.Uint()), nil case reflect.Uint64: u64 := rv.Uint() if u64 >= 1<<63 { return nil, fmt.Errorf("uint64 values with high bit set are not supported") } return int64(u64), nil case reflect.Float32, reflect.Float64: return rv.Float(), nil } return nil, fmt.Errorf("unsupported type %T, a %s", v, rv.Kind()) } go/src/pkg/database/sql/driver/types_test.go0100644000000000000000000000317312412656737021443 0ustar00rootroot00000000000000// Copyright 2011 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 driver import ( "reflect" "testing" "time" ) type valueConverterTest struct { c ValueConverter in interface{} out interface{} err string } var now = time.Now() var answer int64 = 42 var valueConverterTests = []valueConverterTest{ {Bool, "true", true, ""}, {Bool, "True", true, ""}, {Bool, []byte("t"), true, ""}, {Bool, true, true, ""}, {Bool, "1", true, ""}, {Bool, 1, true, ""}, {Bool, int64(1), true, ""}, {Bool, uint16(1), true, ""}, {Bool, "false", false, ""}, {Bool, false, false, ""}, {Bool, "0", false, ""}, {Bool, 0, false, ""}, {Bool, int64(0), false, ""}, {Bool, uint16(0), false, ""}, {c: Bool, in: "foo", err: "sql/driver: couldn't convert \"foo\" into type bool"}, {c: Bool, in: 2, err: "sql/driver: couldn't convert 2 into type bool"}, {DefaultParameterConverter, now, now, ""}, {DefaultParameterConverter, (*int64)(nil), nil, ""}, {DefaultParameterConverter, &answer, answer, ""}, {DefaultParameterConverter, &now, now, ""}, } func TestValueConverters(t *testing.T) { for i, tt := range valueConverterTests { out, err := tt.c.ConvertValue(tt.in) goterr := "" if err != nil { goterr = err.Error() } if goterr != tt.err { t.Errorf("test %d: %T(%T(%v)) error = %q; want error = %q", i, tt.c, tt.in, tt.in, goterr, tt.err) } if tt.err != "" { continue } if !reflect.DeepEqual(out, tt.out) { t.Errorf("test %d: %T(%T(%v)) = %v (%T); want %v (%T)", i, tt.c, tt.in, tt.in, out, out, tt.out, tt.out) } } } go/src/pkg/database/sql/example_test.go0100644000000000000000000000161312412656737020434 0ustar00rootroot00000000000000// Copyright 2013 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 sql_test import ( "database/sql" "fmt" "log" ) var db *sql.DB func ExampleDB_Query() { age := 27 rows, err := db.Query("SELECT name FROM users WHERE age=?", age) if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { var name string if err := rows.Scan(&name); err != nil { log.Fatal(err) } fmt.Printf("%s is %d\n", name, age) } if err := rows.Err(); err != nil { log.Fatal(err) } } func ExampleDB_QueryRow() { id := 123 var username string err := db.QueryRow("SELECT username FROM users WHERE id=?", id).Scan(&username) switch { case err == sql.ErrNoRows: log.Printf("No user with that ID.") case err != nil: log.Fatal(err) default: fmt.Printf("Username is %s\n", username) } } go/src/pkg/database/sql/fakedb_test.go0100644000000000000000000004672512412656737020232 0ustar00rootroot00000000000000// Copyright 2011 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 sql import ( "database/sql/driver" "errors" "fmt" "io" "log" "strconv" "strings" "sync" "testing" "time" ) var _ = log.Printf // fakeDriver is a fake database that implements Go's driver.Driver // interface, just for testing. // // It speaks a query language that's semantically similar to but // syntactically different and simpler than SQL. The syntax is as // follows: // // WIPE // CREATE||=,=,... // where types are: "string", [u]int{8,16,32,64}, "bool" // INSERT||col=val,col2=val2,col3=? // SELECT||projectcol1,projectcol2|filtercol=?,filtercol2=? // // When opening a fakeDriver's database, it starts empty with no // tables. All tables and data are stored in memory only. type fakeDriver struct { mu sync.Mutex // guards 3 following fields openCount int // conn opens closeCount int // conn closes waitCh chan struct{} waitingCh chan struct{} dbs map[string]*fakeDB } type fakeDB struct { name string mu sync.Mutex free []*fakeConn tables map[string]*table badConn bool } type table struct { mu sync.Mutex colname []string coltype []string rows []*row } func (t *table) columnIndex(name string) int { for n, nname := range t.colname { if name == nname { return n } } return -1 } type row struct { cols []interface{} // must be same size as its table colname + coltype } func (r *row) clone() *row { nrow := &row{cols: make([]interface{}, len(r.cols))} copy(nrow.cols, r.cols) return nrow } type fakeConn struct { db *fakeDB // where to return ourselves to currTx *fakeTx // Stats for tests: mu sync.Mutex stmtsMade int stmtsClosed int numPrepare int bad bool } func (c *fakeConn) incrStat(v *int) { c.mu.Lock() *v++ c.mu.Unlock() } type fakeTx struct { c *fakeConn } type fakeStmt struct { c *fakeConn q string // just for debugging cmd string table string closed bool colName []string // used by CREATE, INSERT, SELECT (selected columns) colType []string // used by CREATE colValue []interface{} // used by INSERT (mix of strings and "?" for bound params) placeholders int // used by INSERT/SELECT: number of ? params whereCol []string // used by SELECT (all placeholders) placeholderConverter []driver.ValueConverter // used by INSERT } var fdriver driver.Driver = &fakeDriver{} func init() { Register("test", fdriver) } // Supports dsn forms: // // ; (only currently supported option is `badConn`, // which causes driver.ErrBadConn to be returned on // every other conn.Begin()) func (d *fakeDriver) Open(dsn string) (driver.Conn, error) { parts := strings.Split(dsn, ";") if len(parts) < 1 { return nil, errors.New("fakedb: no database name") } name := parts[0] db := d.getDB(name) d.mu.Lock() d.openCount++ d.mu.Unlock() conn := &fakeConn{db: db} if len(parts) >= 2 && parts[1] == "badConn" { conn.bad = true } if d.waitCh != nil { d.waitingCh <- struct{}{} <-d.waitCh d.waitCh = nil d.waitingCh = nil } return conn, nil } func (d *fakeDriver) getDB(name string) *fakeDB { d.mu.Lock() defer d.mu.Unlock() if d.dbs == nil { d.dbs = make(map[string]*fakeDB) } db, ok := d.dbs[name] if !ok { db = &fakeDB{name: name} d.dbs[name] = db } return db } func (db *fakeDB) wipe() { db.mu.Lock() defer db.mu.Unlock() db.tables = nil } func (db *fakeDB) createTable(name string, columnNames, columnTypes []string) error { db.mu.Lock() defer db.mu.Unlock() if db.tables == nil { db.tables = make(map[string]*table) } if _, exist := db.tables[name]; exist { return fmt.Errorf("table %q already exists", name) } if len(columnNames) != len(columnTypes) { return fmt.Errorf("create table of %q len(names) != len(types): %d vs %d", name, len(columnNames), len(columnTypes)) } db.tables[name] = &table{colname: columnNames, coltype: columnTypes} return nil } // must be called with db.mu lock held func (db *fakeDB) table(table string) (*table, bool) { if db.tables == nil { return nil, false } t, ok := db.tables[table] return t, ok } func (db *fakeDB) columnType(table, column string) (typ string, ok bool) { db.mu.Lock() defer db.mu.Unlock() t, ok := db.table(table) if !ok { return } for n, cname := range t.colname { if cname == column { return t.coltype[n], true } } return "", false } func (c *fakeConn) isBad() bool { // if not simulating bad conn, do nothing if !c.bad { return false } // alternate between bad conn and not bad conn c.db.badConn = !c.db.badConn return c.db.badConn } func (c *fakeConn) Begin() (driver.Tx, error) { if c.isBad() { return nil, driver.ErrBadConn } if c.currTx != nil { return nil, errors.New("already in a transaction") } c.currTx = &fakeTx{c: c} return c.currTx, nil } var hookPostCloseConn struct { sync.Mutex fn func(*fakeConn, error) } func setHookpostCloseConn(fn func(*fakeConn, error)) { hookPostCloseConn.Lock() defer hookPostCloseConn.Unlock() hookPostCloseConn.fn = fn } var testStrictClose *testing.T // setStrictFakeConnClose sets the t to Errorf on when fakeConn.Close // fails to close. If nil, the check is disabled. func setStrictFakeConnClose(t *testing.T) { testStrictClose = t } func (c *fakeConn) Close() (err error) { drv := fdriver.(*fakeDriver) defer func() { if err != nil && testStrictClose != nil { testStrictClose.Errorf("failed to close a test fakeConn: %v", err) } hookPostCloseConn.Lock() fn := hookPostCloseConn.fn hookPostCloseConn.Unlock() if fn != nil { fn(c, err) } if err == nil { drv.mu.Lock() drv.closeCount++ drv.mu.Unlock() } }() if c.currTx != nil { return errors.New("can't close fakeConn; in a Transaction") } if c.db == nil { return errors.New("can't close fakeConn; already closed") } if c.stmtsMade > c.stmtsClosed { return errors.New("can't close; dangling statement(s)") } c.db = nil return nil } func checkSubsetTypes(args []driver.Value) error { for n, arg := range args { switch arg.(type) { case int64, float64, bool, nil, []byte, string, time.Time: default: return fmt.Errorf("fakedb_test: invalid argument #%d: %v, type %T", n+1, arg, arg) } } return nil } func (c *fakeConn) Exec(query string, args []driver.Value) (driver.Result, error) { // This is an optional interface, but it's implemented here // just to check that all the args are of the proper types. // ErrSkip is returned so the caller acts as if we didn't // implement this at all. err := checkSubsetTypes(args) if err != nil { return nil, err } return nil, driver.ErrSkip } func (c *fakeConn) Query(query string, args []driver.Value) (driver.Rows, error) { // This is an optional interface, but it's implemented here // just to check that all the args are of the proper types. // ErrSkip is returned so the caller acts as if we didn't // implement this at all. err := checkSubsetTypes(args) if err != nil { return nil, err } return nil, driver.ErrSkip } func errf(msg string, args ...interface{}) error { return errors.New("fakedb: " + fmt.Sprintf(msg, args...)) } // parts are table|selectCol1,selectCol2|whereCol=?,whereCol2=? // (note that where columns must always contain ? marks, // just a limitation for fakedb) func (c *fakeConn) prepareSelect(stmt *fakeStmt, parts []string) (driver.Stmt, error) { if len(parts) != 3 { stmt.Close() return nil, errf("invalid SELECT syntax with %d parts; want 3", len(parts)) } stmt.table = parts[0] stmt.colName = strings.Split(parts[1], ",") for n, colspec := range strings.Split(parts[2], ",") { if colspec == "" { continue } nameVal := strings.Split(colspec, "=") if len(nameVal) != 2 { stmt.Close() return nil, errf("SELECT on table %q has invalid column spec of %q (index %d)", stmt.table, colspec, n) } column, value := nameVal[0], nameVal[1] _, ok := c.db.columnType(stmt.table, column) if !ok { stmt.Close() return nil, errf("SELECT on table %q references non-existent column %q", stmt.table, column) } if value != "?" { stmt.Close() return nil, errf("SELECT on table %q has pre-bound value for where column %q; need a question mark", stmt.table, column) } stmt.whereCol = append(stmt.whereCol, column) stmt.placeholders++ } return stmt, nil } // parts are table|col=type,col2=type2 func (c *fakeConn) prepareCreate(stmt *fakeStmt, parts []string) (driver.Stmt, error) { if len(parts) != 2 { stmt.Close() return nil, errf("invalid CREATE syntax with %d parts; want 2", len(parts)) } stmt.table = parts[0] for n, colspec := range strings.Split(parts[1], ",") { nameType := strings.Split(colspec, "=") if len(nameType) != 2 { stmt.Close() return nil, errf("CREATE table %q has invalid column spec of %q (index %d)", stmt.table, colspec, n) } stmt.colName = append(stmt.colName, nameType[0]) stmt.colType = append(stmt.colType, nameType[1]) } return stmt, nil } // parts are table|col=?,col2=val func (c *fakeConn) prepareInsert(stmt *fakeStmt, parts []string) (driver.Stmt, error) { if len(parts) != 2 { stmt.Close() return nil, errf("invalid INSERT syntax with %d parts; want 2", len(parts)) } stmt.table = parts[0] for n, colspec := range strings.Split(parts[1], ",") { nameVal := strings.Split(colspec, "=") if len(nameVal) != 2 { stmt.Close() return nil, errf("INSERT table %q has invalid column spec of %q (index %d)", stmt.table, colspec, n) } column, value := nameVal[0], nameVal[1] ctype, ok := c.db.columnType(stmt.table, column) if !ok { stmt.Close() return nil, errf("INSERT table %q references non-existent column %q", stmt.table, column) } stmt.colName = append(stmt.colName, column) if value != "?" { var subsetVal interface{} // Convert to driver subset type switch ctype { case "string": subsetVal = []byte(value) case "blob": subsetVal = []byte(value) case "int32": i, err := strconv.Atoi(value) if err != nil { stmt.Close() return nil, errf("invalid conversion to int32 from %q", value) } subsetVal = int64(i) // int64 is a subset type, but not int32 default: stmt.Close() return nil, errf("unsupported conversion for pre-bound parameter %q to type %q", value, ctype) } stmt.colValue = append(stmt.colValue, subsetVal) } else { stmt.placeholders++ stmt.placeholderConverter = append(stmt.placeholderConverter, converterForType(ctype)) stmt.colValue = append(stmt.colValue, "?") } } return stmt, nil } // hook to simulate broken connections var hookPrepareBadConn func() bool func (c *fakeConn) Prepare(query string) (driver.Stmt, error) { c.numPrepare++ if c.db == nil { panic("nil c.db; conn = " + fmt.Sprintf("%#v", c)) } if hookPrepareBadConn != nil && hookPrepareBadConn() { return nil, driver.ErrBadConn } parts := strings.Split(query, "|") if len(parts) < 1 { return nil, errf("empty query") } cmd := parts[0] parts = parts[1:] stmt := &fakeStmt{q: query, c: c, cmd: cmd} c.incrStat(&c.stmtsMade) switch cmd { case "WIPE": // Nothing case "SELECT": return c.prepareSelect(stmt, parts) case "CREATE": return c.prepareCreate(stmt, parts) case "INSERT": return c.prepareInsert(stmt, parts) case "NOSERT": // Do all the prep-work like for an INSERT but don't actually insert the row. // Used for some of the concurrent tests. return c.prepareInsert(stmt, parts) default: stmt.Close() return nil, errf("unsupported command type %q", cmd) } return stmt, nil } func (s *fakeStmt) ColumnConverter(idx int) driver.ValueConverter { if len(s.placeholderConverter) == 0 { return driver.DefaultParameterConverter } return s.placeholderConverter[idx] } func (s *fakeStmt) Close() error { if s.c == nil { panic("nil conn in fakeStmt.Close") } if s.c.db == nil { panic("in fakeStmt.Close, conn's db is nil (already closed)") } if !s.closed { s.c.incrStat(&s.c.stmtsClosed) s.closed = true } return nil } var errClosed = errors.New("fakedb: statement has been closed") // hook to simulate broken connections var hookExecBadConn func() bool func (s *fakeStmt) Exec(args []driver.Value) (driver.Result, error) { if s.closed { return nil, errClosed } if hookExecBadConn != nil && hookExecBadConn() { return nil, driver.ErrBadConn } err := checkSubsetTypes(args) if err != nil { return nil, err } db := s.c.db switch s.cmd { case "WIPE": db.wipe() return driver.ResultNoRows, nil case "CREATE": if err := db.createTable(s.table, s.colName, s.colType); err != nil { return nil, err } return driver.ResultNoRows, nil case "INSERT": return s.execInsert(args, true) case "NOSERT": // Do all the prep-work like for an INSERT but don't actually insert the row. // Used for some of the concurrent tests. return s.execInsert(args, false) } fmt.Printf("EXEC statement, cmd=%q: %#v\n", s.cmd, s) return nil, fmt.Errorf("unimplemented statement Exec command type of %q", s.cmd) } // When doInsert is true, add the row to the table. // When doInsert is false do prep-work and error checking, but don't // actually add the row to the table. func (s *fakeStmt) execInsert(args []driver.Value, doInsert bool) (driver.Result, error) { db := s.c.db if len(args) != s.placeholders { panic("error in pkg db; should only get here if size is correct") } db.mu.Lock() t, ok := db.table(s.table) db.mu.Unlock() if !ok { return nil, fmt.Errorf("fakedb: table %q doesn't exist", s.table) } t.mu.Lock() defer t.mu.Unlock() var cols []interface{} if doInsert { cols = make([]interface{}, len(t.colname)) } argPos := 0 for n, colname := range s.colName { colidx := t.columnIndex(colname) if colidx == -1 { return nil, fmt.Errorf("fakedb: column %q doesn't exist or dropped since prepared statement was created", colname) } var val interface{} if strvalue, ok := s.colValue[n].(string); ok && strvalue == "?" { val = args[argPos] argPos++ } else { val = s.colValue[n] } if doInsert { cols[colidx] = val } } if doInsert { t.rows = append(t.rows, &row{cols: cols}) } return driver.RowsAffected(1), nil } // hook to simulate broken connections var hookQueryBadConn func() bool func (s *fakeStmt) Query(args []driver.Value) (driver.Rows, error) { if s.closed { return nil, errClosed } if hookQueryBadConn != nil && hookQueryBadConn() { return nil, driver.ErrBadConn } err := checkSubsetTypes(args) if err != nil { return nil, err } db := s.c.db if len(args) != s.placeholders { panic("error in pkg db; should only get here if size is correct") } db.mu.Lock() t, ok := db.table(s.table) db.mu.Unlock() if !ok { return nil, fmt.Errorf("fakedb: table %q doesn't exist", s.table) } if s.table == "magicquery" { if len(s.whereCol) == 2 && s.whereCol[0] == "op" && s.whereCol[1] == "millis" { if args[0] == "sleep" { time.Sleep(time.Duration(args[1].(int64)) * time.Millisecond) } } } t.mu.Lock() defer t.mu.Unlock() colIdx := make(map[string]int) // select column name -> column index in table for _, name := range s.colName { idx := t.columnIndex(name) if idx == -1 { return nil, fmt.Errorf("fakedb: unknown column name %q", name) } colIdx[name] = idx } mrows := []*row{} rows: for _, trow := range t.rows { // Process the where clause, skipping non-match rows. This is lazy // and just uses fmt.Sprintf("%v") to test equality. Good enough // for test code. for widx, wcol := range s.whereCol { idx := t.columnIndex(wcol) if idx == -1 { return nil, fmt.Errorf("db: invalid where clause column %q", wcol) } tcol := trow.cols[idx] if bs, ok := tcol.([]byte); ok { // lazy hack to avoid sprintf %v on a []byte tcol = string(bs) } if fmt.Sprintf("%v", tcol) != fmt.Sprintf("%v", args[widx]) { continue rows } } mrow := &row{cols: make([]interface{}, len(s.colName))} for seli, name := range s.colName { mrow.cols[seli] = trow.cols[colIdx[name]] } mrows = append(mrows, mrow) } cursor := &rowsCursor{ pos: -1, rows: mrows, cols: s.colName, errPos: -1, } return cursor, nil } func (s *fakeStmt) NumInput() int { return s.placeholders } func (tx *fakeTx) Commit() error { tx.c.currTx = nil return nil } func (tx *fakeTx) Rollback() error { tx.c.currTx = nil return nil } type rowsCursor struct { cols []string pos int rows []*row closed bool // errPos and err are for making Next return early with error. errPos int err error // a clone of slices to give out to clients, indexed by the // the original slice's first byte address. we clone them // just so we're able to corrupt them on close. bytesClone map[*byte][]byte } func (rc *rowsCursor) Close() error { if !rc.closed { for _, bs := range rc.bytesClone { bs[0] = 255 // first byte corrupted } } rc.closed = true return nil } func (rc *rowsCursor) Columns() []string { return rc.cols } var rowsCursorNextHook func(dest []driver.Value) error func (rc *rowsCursor) Next(dest []driver.Value) error { if rowsCursorNextHook != nil { return rowsCursorNextHook(dest) } if rc.closed { return errors.New("fakedb: cursor is closed") } rc.pos++ if rc.pos == rc.errPos { return rc.err } if rc.pos >= len(rc.rows) { return io.EOF // per interface spec } for i, v := range rc.rows[rc.pos].cols { // TODO(bradfitz): convert to subset types? naah, I // think the subset types should only be input to // driver, but the sql package should be able to handle // a wider range of types coming out of drivers. all // for ease of drivers, and to prevent drivers from // messing up conversions or doing them differently. dest[i] = v if bs, ok := v.([]byte); ok { if rc.bytesClone == nil { rc.bytesClone = make(map[*byte][]byte) } clone, ok := rc.bytesClone[&bs[0]] if !ok { clone = make([]byte, len(bs)) copy(clone, bs) rc.bytesClone[&bs[0]] = clone } dest[i] = clone } } return nil } // fakeDriverString is like driver.String, but indirects pointers like // DefaultValueConverter. // // This could be surprising behavior to retroactively apply to // driver.String now that Go1 is out, but this is convenient for // our TestPointerParamsAndScans. // type fakeDriverString struct{} func (fakeDriverString) ConvertValue(v interface{}) (driver.Value, error) { switch c := v.(type) { case string, []byte: return v, nil case *string: if c == nil { return nil, nil } return *c, nil } return fmt.Sprintf("%v", v), nil } func converterForType(typ string) driver.ValueConverter { switch typ { case "bool": return driver.Bool case "nullbool": return driver.Null{Converter: driver.Bool} case "int32": return driver.Int32 case "string": return driver.NotNull{Converter: fakeDriverString{}} case "nullstring": return driver.Null{Converter: fakeDriverString{}} case "int64": // TODO(coopernurse): add type-specific converter return driver.NotNull{Converter: driver.DefaultParameterConverter} case "nullint64": // TODO(coopernurse): add type-specific converter return driver.Null{Converter: driver.DefaultParameterConverter} case "float64": // TODO(coopernurse): add type-specific converter return driver.NotNull{Converter: driver.DefaultParameterConverter} case "nullfloat64": // TODO(coopernurse): add type-specific converter return driver.Null{Converter: driver.DefaultParameterConverter} case "datetime": return driver.DefaultParameterConverter } panic("invalid fakedb column type of " + typ) } go/src/pkg/database/sql/sql.go0100644000000000000000000012770312412656737016552 0ustar00rootroot00000000000000// Copyright 2011 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 sql provides a generic interface around SQL (or SQL-like) // databases. // // The sql package must be used in conjunction with a database driver. // See http://golang.org/s/sqldrivers for a list of drivers. // // For more usage examples, see the wiki page at // http://golang.org/s/sqlwiki. package sql import ( "container/list" "database/sql/driver" "errors" "fmt" "io" "runtime" "sync" ) var drivers = make(map[string]driver.Driver) // Register makes a database driver available by the provided name. // If Register is called twice with the same name or if driver is nil, // it panics. func Register(name string, driver driver.Driver) { if driver == nil { panic("sql: Register driver is nil") } if _, dup := drivers[name]; dup { panic("sql: Register called twice for driver " + name) } drivers[name] = driver } // RawBytes is a byte slice that holds a reference to memory owned by // the database itself. After a Scan into a RawBytes, the slice is only // valid until the next call to Next, Scan, or Close. type RawBytes []byte // NullString represents a string that may be null. // NullString implements the Scanner interface so // it can be used as a scan destination: // // var s NullString // err := db.QueryRow("SELECT name FROM foo WHERE id=?", id).Scan(&s) // ... // if s.Valid { // // use s.String // } else { // // NULL value // } // type NullString struct { String string Valid bool // Valid is true if String is not NULL } // Scan implements the Scanner interface. func (ns *NullString) Scan(value interface{}) error { if value == nil { ns.String, ns.Valid = "", false return nil } ns.Valid = true return convertAssign(&ns.String, value) } // Value implements the driver Valuer interface. func (ns NullString) Value() (driver.Value, error) { if !ns.Valid { return nil, nil } return ns.String, nil } // NullInt64 represents an int64 that may be null. // NullInt64 implements the Scanner interface so // it can be used as a scan destination, similar to NullString. type NullInt64 struct { Int64 int64 Valid bool // Valid is true if Int64 is not NULL } // Scan implements the Scanner interface. func (n *NullInt64) Scan(value interface{}) error { if value == nil { n.Int64, n.Valid = 0, false return nil } n.Valid = true return convertAssign(&n.Int64, value) } // Value implements the driver Valuer interface. func (n NullInt64) Value() (driver.Value, error) { if !n.Valid { return nil, nil } return n.Int64, nil } // NullFloat64 represents a float64 that may be null. // NullFloat64 implements the Scanner interface so // it can be used as a scan destination, similar to NullString. type NullFloat64 struct { Float64 float64 Valid bool // Valid is true if Float64 is not NULL } // Scan implements the Scanner interface. func (n *NullFloat64) Scan(value interface{}) error { if value == nil { n.Float64, n.Valid = 0, false return nil } n.Valid = true return convertAssign(&n.Float64, value) } // Value implements the driver Valuer interface. func (n NullFloat64) Value() (driver.Value, error) { if !n.Valid { return nil, nil } return n.Float64, nil } // NullBool represents a bool that may be null. // NullBool implements the Scanner interface so // it can be used as a scan destination, similar to NullString. type NullBool struct { Bool bool Valid bool // Valid is true if Bool is not NULL } // Scan implements the Scanner interface. func (n *NullBool) Scan(value interface{}) error { if value == nil { n.Bool, n.Valid = false, false return nil } n.Valid = true return convertAssign(&n.Bool, value) } // Value implements the driver Valuer interface. func (n NullBool) Value() (driver.Value, error) { if !n.Valid { return nil, nil } return n.Bool, nil } // Scanner is an interface used by Scan. type Scanner interface { // Scan assigns a value from a database driver. // // The src value will be of one of the following restricted // set of types: // // int64 // float64 // bool // []byte // string // time.Time // nil - for NULL values // // An error should be returned if the value can not be stored // without loss of information. Scan(src interface{}) error } // ErrNoRows is returned by Scan when QueryRow doesn't return a // row. In such a case, QueryRow returns a placeholder *Row value that // defers this error until a Scan. var ErrNoRows = errors.New("sql: no rows in result set") // DB is a database handle representing a pool of zero or more // underlying connections. It's safe for concurrent use by multiple // goroutines. // // The sql package creates and frees connections automatically; it // also maintains a free pool of idle connections. If the database has // a concept of per-connection state, such state can only be reliably // observed within a transaction. Once DB.Begin is called, the // returned Tx is bound to a single connection. Once Commit or // Rollback is called on the transaction, that transaction's // connection is returned to DB's idle connection pool. The pool size // can be controlled with SetMaxIdleConns. type DB struct { driver driver.Driver dsn string mu sync.Mutex // protects following fields freeConn *list.List // of *driverConn connRequests *list.List // of connRequest numOpen int pendingOpens int // Used to signal the need for new connections // a goroutine running connectionOpener() reads on this chan and // maybeOpenNewConnections sends on the chan (one send per needed connection) // It is closed during db.Close(). The close tells the connectionOpener // goroutine to exit. openerCh chan struct{} closed bool dep map[finalCloser]depSet lastPut map[*driverConn]string // stacktrace of last conn's put; debug only maxIdle int // zero means defaultMaxIdleConns; negative means 0 maxOpen int // <= 0 means unlimited } // driverConn wraps a driver.Conn with a mutex, to // be held during all calls into the Conn. (including any calls onto // interfaces returned via that Conn, such as calls on Tx, Stmt, // Result, Rows) type driverConn struct { db *DB sync.Mutex // guards following ci driver.Conn closed bool finalClosed bool // ci.Close has been called openStmt map[driver.Stmt]bool // guarded by db.mu inUse bool onPut []func() // code (with db.mu held) run when conn is next returned dbmuClosed bool // same as closed, but guarded by db.mu, for connIfFree // This is the Element returned by db.freeConn.PushFront(conn). // It's used by connIfFree to remove the conn from the freeConn list. listElem *list.Element } func (dc *driverConn) releaseConn(err error) { dc.db.putConn(dc, err) } func (dc *driverConn) removeOpenStmt(si driver.Stmt) { dc.Lock() defer dc.Unlock() delete(dc.openStmt, si) } func (dc *driverConn) prepareLocked(query string) (driver.Stmt, error) { si, err := dc.ci.Prepare(query) if err == nil { // Track each driverConn's open statements, so we can close them // before closing the conn. // // TODO(bradfitz): let drivers opt out of caring about // stmt closes if the conn is about to close anyway? For now // do the safe thing, in case stmts need to be closed. // // TODO(bradfitz): after Go 1.2, closing driver.Stmts // should be moved to driverStmt, using unique // *driverStmts everywhere (including from // *Stmt.connStmt, instead of returning a // driver.Stmt), using driverStmt as a pointer // everywhere, and making it a finalCloser. if dc.openStmt == nil { dc.openStmt = make(map[driver.Stmt]bool) } dc.openStmt[si] = true } return si, err } // the dc.db's Mutex is held. func (dc *driverConn) closeDBLocked() func() error { dc.Lock() defer dc.Unlock() if dc.closed { return func() error { return errors.New("sql: duplicate driverConn close") } } dc.closed = true return dc.db.removeDepLocked(dc, dc) } func (dc *driverConn) Close() error { dc.Lock() if dc.closed { dc.Unlock() return errors.New("sql: duplicate driverConn close") } dc.closed = true dc.Unlock() // not defer; removeDep finalClose calls may need to lock // And now updates that require holding dc.mu.Lock. dc.db.mu.Lock() dc.dbmuClosed = true fn := dc.db.removeDepLocked(dc, dc) dc.db.mu.Unlock() return fn() } func (dc *driverConn) finalClose() error { dc.Lock() for si := range dc.openStmt { si.Close() } dc.openStmt = nil err := dc.ci.Close() dc.ci = nil dc.finalClosed = true dc.Unlock() dc.db.mu.Lock() dc.db.numOpen-- dc.db.maybeOpenNewConnections() dc.db.mu.Unlock() return err } // driverStmt associates a driver.Stmt with the // *driverConn from which it came, so the driverConn's lock can be // held during calls. type driverStmt struct { sync.Locker // the *driverConn si driver.Stmt } func (ds *driverStmt) Close() error { ds.Lock() defer ds.Unlock() return ds.si.Close() } // depSet is a finalCloser's outstanding dependencies type depSet map[interface{}]bool // set of true bools // The finalCloser interface is used by (*DB).addDep and related // dependency reference counting. type finalCloser interface { // finalClose is called when the reference count of an object // goes to zero. (*DB).mu is not held while calling it. finalClose() error } // addDep notes that x now depends on dep, and x's finalClose won't be // called until all of x's dependencies are removed with removeDep. func (db *DB) addDep(x finalCloser, dep interface{}) { //println(fmt.Sprintf("addDep(%T %p, %T %p)", x, x, dep, dep)) db.mu.Lock() defer db.mu.Unlock() db.addDepLocked(x, dep) } func (db *DB) addDepLocked(x finalCloser, dep interface{}) { if db.dep == nil { db.dep = make(map[finalCloser]depSet) } xdep := db.dep[x] if xdep == nil { xdep = make(depSet) db.dep[x] = xdep } xdep[dep] = true } // removeDep notes that x no longer depends on dep. // If x still has dependencies, nil is returned. // If x no longer has any dependencies, its finalClose method will be // called and its error value will be returned. func (db *DB) removeDep(x finalCloser, dep interface{}) error { db.mu.Lock() fn := db.removeDepLocked(x, dep) db.mu.Unlock() return fn() } func (db *DB) removeDepLocked(x finalCloser, dep interface{}) func() error { //println(fmt.Sprintf("removeDep(%T %p, %T %p)", x, x, dep, dep)) xdep, ok := db.dep[x] if !ok { panic(fmt.Sprintf("unpaired removeDep: no deps for %T", x)) } l0 := len(xdep) delete(xdep, dep) switch len(xdep) { case l0: // Nothing removed. Shouldn't happen. panic(fmt.Sprintf("unpaired removeDep: no %T dep on %T", dep, x)) case 0: // No more dependencies. delete(db.dep, x) return x.finalClose default: // Dependencies remain. return func() error { return nil } } } // This is the size of the connectionOpener request chan (dn.openerCh). // This value should be larger than the maximum typical value // used for db.maxOpen. If maxOpen is significantly larger than // connectionRequestQueueSize then it is possible for ALL calls into the *DB // to block until the connectionOpener can satisfy the backlog of requests. var connectionRequestQueueSize = 1000000 // Open opens a database specified by its database driver name and a // driver-specific data source name, usually consisting of at least a // database name and connection information. // // Most users will open a database via a driver-specific connection // helper function that returns a *DB. No database drivers are included // in the Go standard library. See http://golang.org/s/sqldrivers for // a list of third-party drivers. // // Open may just validate its arguments without creating a connection // to the database. To verify that the data source name is valid, call // Ping. // // The returned DB is safe for concurrent use by multiple goroutines // and maintains its own pool of idle connections. Thus, the Open // function should be called just once. It is rarely necessary to // close a DB. func Open(driverName, dataSourceName string) (*DB, error) { driveri, ok := drivers[driverName] if !ok { return nil, fmt.Errorf("sql: unknown driver %q (forgotten import?)", driverName) } db := &DB{ driver: driveri, dsn: dataSourceName, openerCh: make(chan struct{}, connectionRequestQueueSize), lastPut: make(map[*driverConn]string), } db.freeConn = list.New() db.connRequests = list.New() go db.connectionOpener() return db, nil } // Ping verifies a connection to the database is still alive, // establishing a connection if necessary. func (db *DB) Ping() error { // TODO(bradfitz): give drivers an optional hook to implement // this in a more efficient or more reliable way, if they // have one. dc, err := db.conn() if err != nil { return err } db.putConn(dc, nil) return nil } // Close closes the database, releasing any open resources. // // It is rare to Close a DB, as the DB handle is meant to be // long-lived and shared between many goroutines. func (db *DB) Close() error { db.mu.Lock() if db.closed { // Make DB.Close idempotent db.mu.Unlock() return nil } close(db.openerCh) var err error fns := make([]func() error, 0, db.freeConn.Len()) for db.freeConn.Front() != nil { dc := db.freeConn.Front().Value.(*driverConn) dc.listElem = nil fns = append(fns, dc.closeDBLocked()) db.freeConn.Remove(db.freeConn.Front()) } db.closed = true for db.connRequests.Front() != nil { req := db.connRequests.Front().Value.(connRequest) db.connRequests.Remove(db.connRequests.Front()) close(req) } db.mu.Unlock() for _, fn := range fns { err1 := fn() if err1 != nil { err = err1 } } return err } const defaultMaxIdleConns = 2 func (db *DB) maxIdleConnsLocked() int { n := db.maxIdle switch { case n == 0: // TODO(bradfitz): ask driver, if supported, for its default preference return defaultMaxIdleConns case n < 0: return 0 default: return n } } // SetMaxIdleConns sets the maximum number of connections in the idle // connection pool. // // If MaxOpenConns is greater than 0 but less than the new MaxIdleConns // then the new MaxIdleConns will be reduced to match the MaxOpenConns limit // // If n <= 0, no idle connections are retained. func (db *DB) SetMaxIdleConns(n int) { db.mu.Lock() if n > 0 { db.maxIdle = n } else { // No idle connections. db.maxIdle = -1 } // Make sure maxIdle doesn't exceed maxOpen if db.maxOpen > 0 && db.maxIdleConnsLocked() > db.maxOpen { db.maxIdle = db.maxOpen } var closing []*driverConn for db.freeConn.Len() > db.maxIdleConnsLocked() { dc := db.freeConn.Back().Value.(*driverConn) dc.listElem = nil db.freeConn.Remove(db.freeConn.Back()) closing = append(closing, dc) } db.mu.Unlock() for _, c := range closing { c.Close() } } // SetMaxOpenConns sets the maximum number of open connections to the database. // // If MaxIdleConns is greater than 0 and the new MaxOpenConns is less than // MaxIdleConns, then MaxIdleConns will be reduced to match the new // MaxOpenConns limit // // If n <= 0, then there is no limit on the number of open connections. // The default is 0 (unlimited). func (db *DB) SetMaxOpenConns(n int) { db.mu.Lock() db.maxOpen = n if n < 0 { db.maxOpen = 0 } syncMaxIdle := db.maxOpen > 0 && db.maxIdleConnsLocked() > db.maxOpen db.mu.Unlock() if syncMaxIdle { db.SetMaxIdleConns(n) } } // Assumes db.mu is locked. // If there are connRequests and the connection limit hasn't been reached, // then tell the connectionOpener to open new connections. func (db *DB) maybeOpenNewConnections() { numRequests := db.connRequests.Len() - db.pendingOpens if db.maxOpen > 0 { numCanOpen := db.maxOpen - (db.numOpen + db.pendingOpens) if numRequests > numCanOpen { numRequests = numCanOpen } } for numRequests > 0 { db.pendingOpens++ numRequests-- db.openerCh <- struct{}{} } } // Runs in a separate goroutine, opens new connections when requested. func (db *DB) connectionOpener() { for _ = range db.openerCh { db.openNewConnection() } } // Open one new connection func (db *DB) openNewConnection() { ci, err := db.driver.Open(db.dsn) db.mu.Lock() defer db.mu.Unlock() if db.closed { if err == nil { ci.Close() } return } db.pendingOpens-- if err != nil { db.putConnDBLocked(nil, err) return } dc := &driverConn{ db: db, ci: ci, } if db.putConnDBLocked(dc, err) { db.addDepLocked(dc, dc) db.numOpen++ } else { ci.Close() } } // connRequest represents one request for a new connection // When there are no idle connections available, DB.conn will create // a new connRequest and put it on the db.connRequests list. type connRequest chan<- interface{} // takes either a *driverConn or an error var errDBClosed = errors.New("sql: database is closed") // conn returns a newly-opened or cached *driverConn func (db *DB) conn() (*driverConn, error) { db.mu.Lock() if db.closed { db.mu.Unlock() return nil, errDBClosed } // If db.maxOpen > 0 and the number of open connections is over the limit // and there are no free connection, make a request and wait. if db.maxOpen > 0 && db.numOpen >= db.maxOpen && db.freeConn.Len() == 0 { // Make the connRequest channel. It's buffered so that the // connectionOpener doesn't block while waiting for the req to be read. ch := make(chan interface{}, 1) req := connRequest(ch) db.connRequests.PushBack(req) db.maybeOpenNewConnections() db.mu.Unlock() ret, ok := <-ch if !ok { return nil, errDBClosed } switch ret.(type) { case *driverConn: return ret.(*driverConn), nil case error: return nil, ret.(error) default: panic("sql: Unexpected type passed through connRequest.ch") } } if f := db.freeConn.Front(); f != nil { conn := f.Value.(*driverConn) conn.listElem = nil db.freeConn.Remove(f) conn.inUse = true db.mu.Unlock() return conn, nil } db.numOpen++ // optimistically db.mu.Unlock() ci, err := db.driver.Open(db.dsn) if err != nil { db.mu.Lock() db.numOpen-- // correct for earlier optimism db.mu.Unlock() return nil, err } db.mu.Lock() dc := &driverConn{ db: db, ci: ci, } db.addDepLocked(dc, dc) dc.inUse = true db.mu.Unlock() return dc, nil } var ( errConnClosed = errors.New("database/sql: internal sentinel error: conn is closed") errConnBusy = errors.New("database/sql: internal sentinel error: conn is busy") ) // connIfFree returns (wanted, nil) if wanted is still a valid conn and // isn't in use. // // The error is errConnClosed if the connection if the requested connection // is invalid because it's been closed. // // The error is errConnBusy if the connection is in use. func (db *DB) connIfFree(wanted *driverConn) (*driverConn, error) { db.mu.Lock() defer db.mu.Unlock() if wanted.dbmuClosed { return nil, errConnClosed } if wanted.inUse { return nil, errConnBusy } if wanted.listElem != nil { db.freeConn.Remove(wanted.listElem) wanted.listElem = nil wanted.inUse = true return wanted, nil } // TODO(bradfitz): shouldn't get here. After Go 1.1, change this to: // panic("connIfFree call requested a non-closed, non-busy, non-free conn") // Which passes all the tests, but I'm too paranoid to include this // late in Go 1.1. // Instead, treat it like a busy connection: return nil, errConnBusy } // putConnHook is a hook for testing. var putConnHook func(*DB, *driverConn) // noteUnusedDriverStatement notes that si is no longer used and should // be closed whenever possible (when c is next not in use), unless c is // already closed. func (db *DB) noteUnusedDriverStatement(c *driverConn, si driver.Stmt) { db.mu.Lock() defer db.mu.Unlock() if c.inUse { c.onPut = append(c.onPut, func() { si.Close() }) } else { c.Lock() defer c.Unlock() if !c.finalClosed { si.Close() } } } // debugGetPut determines whether getConn & putConn calls' stack traces // are returned for more verbose crashes. const debugGetPut = false // putConn adds a connection to the db's free pool. // err is optionally the last error that occurred on this connection. func (db *DB) putConn(dc *driverConn, err error) { db.mu.Lock() if !dc.inUse { if debugGetPut { fmt.Printf("putConn(%v) DUPLICATE was: %s\n\nPREVIOUS was: %s", dc, stack(), db.lastPut[dc]) } panic("sql: connection returned that was never out") } if debugGetPut { db.lastPut[dc] = stack() } dc.inUse = false for _, fn := range dc.onPut { fn() } dc.onPut = nil if err == driver.ErrBadConn { // Don't reuse bad connections. // Since the conn is considered bad and is being discarded, treat it // as closed. Don't decrement the open count here, finalClose will // take care of that. db.maybeOpenNewConnections() db.mu.Unlock() dc.Close() return } if putConnHook != nil { putConnHook(db, dc) } added := db.putConnDBLocked(dc, nil) db.mu.Unlock() if !added { dc.Close() } } // Satisfy a connRequest or put the driverConn in the idle pool and return true // or return false. // putConnDBLocked will satisfy a connRequest if there is one, or it will // return the *driverConn to the freeConn list if err == nil and the idle // connection limit will not be exceeded. // If err != nil, the value of dc is ignored. // If err == nil, then dc must not equal nil. // If a connRequest was fulfilled or the *driverConn was placed in the // freeConn list, then true is returned, otherwise false is returned. func (db *DB) putConnDBLocked(dc *driverConn, err error) bool { if db.connRequests.Len() > 0 { req := db.connRequests.Front().Value.(connRequest) db.connRequests.Remove(db.connRequests.Front()) if err != nil { req <- err } else { dc.inUse = true req <- dc } return true } else if err == nil && !db.closed && db.maxIdleConnsLocked() > db.freeConn.Len() { dc.listElem = db.freeConn.PushFront(dc) return true } return false } // maxBadConnRetries is the number of maximum retries if the driver returns // driver.ErrBadConn to signal a broken connection. const maxBadConnRetries = 10 // Prepare creates a prepared statement for later queries or executions. // Multiple queries or executions may be run concurrently from the // returned statement. func (db *DB) Prepare(query string) (*Stmt, error) { var stmt *Stmt var err error for i := 0; i < maxBadConnRetries; i++ { stmt, err = db.prepare(query) if err != driver.ErrBadConn { break } } return stmt, err } func (db *DB) prepare(query string) (*Stmt, error) { // TODO: check if db.driver supports an optional // driver.Preparer interface and call that instead, if so, // otherwise we make a prepared statement that's bound // to a connection, and to execute this prepared statement // we either need to use this connection (if it's free), else // get a new connection + re-prepare + execute on that one. dc, err := db.conn() if err != nil { return nil, err } dc.Lock() si, err := dc.prepareLocked(query) dc.Unlock() if err != nil { db.putConn(dc, err) return nil, err } stmt := &Stmt{ db: db, query: query, css: []connStmt{{dc, si}}, } db.addDep(stmt, stmt) db.putConn(dc, nil) return stmt, nil } // Exec executes a query without returning any rows. // The args are for any placeholder parameters in the query. func (db *DB) Exec(query string, args ...interface{}) (Result, error) { var res Result var err error for i := 0; i < maxBadConnRetries; i++ { res, err = db.exec(query, args) if err != driver.ErrBadConn { break } } return res, err } func (db *DB) exec(query string, args []interface{}) (res Result, err error) { dc, err := db.conn() if err != nil { return nil, err } defer func() { db.putConn(dc, err) }() if execer, ok := dc.ci.(driver.Execer); ok { dargs, err := driverArgs(nil, args) if err != nil { return nil, err } dc.Lock() resi, err := execer.Exec(query, dargs) dc.Unlock() if err != driver.ErrSkip { if err != nil { return nil, err } return driverResult{dc, resi}, nil } } dc.Lock() si, err := dc.ci.Prepare(query) dc.Unlock() if err != nil { return nil, err } defer withLock(dc, func() { si.Close() }) return resultFromStatement(driverStmt{dc, si}, args...) } // Query executes a query that returns rows, typically a SELECT. // The args are for any placeholder parameters in the query. func (db *DB) Query(query string, args ...interface{}) (*Rows, error) { var rows *Rows var err error for i := 0; i < maxBadConnRetries; i++ { rows, err = db.query(query, args) if err != driver.ErrBadConn { break } } return rows, err } func (db *DB) query(query string, args []interface{}) (*Rows, error) { ci, err := db.conn() if err != nil { return nil, err } return db.queryConn(ci, ci.releaseConn, query, args) } // queryConn executes a query on the given connection. // The connection gets released by the releaseConn function. func (db *DB) queryConn(dc *driverConn, releaseConn func(error), query string, args []interface{}) (*Rows, error) { if queryer, ok := dc.ci.(driver.Queryer); ok { dargs, err := driverArgs(nil, args) if err != nil { releaseConn(err) return nil, err } dc.Lock() rowsi, err := queryer.Query(query, dargs) dc.Unlock() if err != driver.ErrSkip { if err != nil { releaseConn(err) return nil, err } // Note: ownership of dc passes to the *Rows, to be freed // with releaseConn. rows := &Rows{ dc: dc, releaseConn: releaseConn, rowsi: rowsi, } return rows, nil } } dc.Lock() si, err := dc.ci.Prepare(query) dc.Unlock() if err != nil { releaseConn(err) return nil, err } ds := driverStmt{dc, si} rowsi, err := rowsiFromStatement(ds, args...) if err != nil { dc.Lock() si.Close() dc.Unlock() releaseConn(err) return nil, err } // Note: ownership of ci passes to the *Rows, to be freed // with releaseConn. rows := &Rows{ dc: dc, releaseConn: releaseConn, rowsi: rowsi, closeStmt: si, } return rows, nil } // QueryRow executes a query that is expected to return at most one row. // QueryRow always return a non-nil value. Errors are deferred until // Row's Scan method is called. func (db *DB) QueryRow(query string, args ...interface{}) *Row { rows, err := db.Query(query, args...) return &Row{rows: rows, err: err} } // Begin starts a transaction. The isolation level is dependent on // the driver. func (db *DB) Begin() (*Tx, error) { var tx *Tx var err error for i := 0; i < maxBadConnRetries; i++ { tx, err = db.begin() if err != driver.ErrBadConn { break } } return tx, err } func (db *DB) begin() (tx *Tx, err error) { dc, err := db.conn() if err != nil { return nil, err } dc.Lock() txi, err := dc.ci.Begin() dc.Unlock() if err != nil { db.putConn(dc, err) return nil, err } return &Tx{ db: db, dc: dc, txi: txi, }, nil } // Driver returns the database's underlying driver. func (db *DB) Driver() driver.Driver { return db.driver } // Tx is an in-progress database transaction. // // A transaction must end with a call to Commit or Rollback. // // After a call to Commit or Rollback, all operations on the // transaction fail with ErrTxDone. type Tx struct { db *DB // dc is owned exclusively until Commit or Rollback, at which point // it's returned with putConn. dc *driverConn txi driver.Tx // done transitions from false to true exactly once, on Commit // or Rollback. once done, all operations fail with // ErrTxDone. done bool } var ErrTxDone = errors.New("sql: Transaction has already been committed or rolled back") func (tx *Tx) close() { if tx.done { panic("double close") // internal error } tx.done = true tx.db.putConn(tx.dc, nil) tx.dc = nil tx.txi = nil } func (tx *Tx) grabConn() (*driverConn, error) { if tx.done { return nil, ErrTxDone } return tx.dc, nil } // Commit commits the transaction. func (tx *Tx) Commit() error { if tx.done { return ErrTxDone } defer tx.close() tx.dc.Lock() defer tx.dc.Unlock() return tx.txi.Commit() } // Rollback aborts the transaction. func (tx *Tx) Rollback() error { if tx.done { return ErrTxDone } defer tx.close() tx.dc.Lock() defer tx.dc.Unlock() return tx.txi.Rollback() } // Prepare creates a prepared statement for use within a transaction. // // The returned statement operates within the transaction and can no longer // be used once the transaction has been committed or rolled back. // // To use an existing prepared statement on this transaction, see Tx.Stmt. func (tx *Tx) Prepare(query string) (*Stmt, error) { // TODO(bradfitz): We could be more efficient here and either // provide a method to take an existing Stmt (created on // perhaps a different Conn), and re-create it on this Conn if // necessary. Or, better: keep a map in DB of query string to // Stmts, and have Stmt.Execute do the right thing and // re-prepare if the Conn in use doesn't have that prepared // statement. But we'll want to avoid caching the statement // in the case where we only call conn.Prepare implicitly // (such as in db.Exec or tx.Exec), but the caller package // can't be holding a reference to the returned statement. // Perhaps just looking at the reference count (by noting // Stmt.Close) would be enough. We might also want a finalizer // on Stmt to drop the reference count. dc, err := tx.grabConn() if err != nil { return nil, err } dc.Lock() si, err := dc.ci.Prepare(query) dc.Unlock() if err != nil { return nil, err } stmt := &Stmt{ db: tx.db, tx: tx, txsi: &driverStmt{ Locker: dc, si: si, }, query: query, } return stmt, nil } // Stmt returns a transaction-specific prepared statement from // an existing statement. // // Example: // updateMoney, err := db.Prepare("UPDATE balance SET money=money+? WHERE id=?") // ... // tx, err := db.Begin() // ... // res, err := tx.Stmt(updateMoney).Exec(123.45, 98293203) func (tx *Tx) Stmt(stmt *Stmt) *Stmt { // TODO(bradfitz): optimize this. Currently this re-prepares // each time. This is fine for now to illustrate the API but // we should really cache already-prepared statements // per-Conn. See also the big comment in Tx.Prepare. if tx.db != stmt.db { return &Stmt{stickyErr: errors.New("sql: Tx.Stmt: statement from different database used")} } dc, err := tx.grabConn() if err != nil { return &Stmt{stickyErr: err} } dc.Lock() si, err := dc.ci.Prepare(stmt.query) dc.Unlock() return &Stmt{ db: tx.db, tx: tx, txsi: &driverStmt{ Locker: dc, si: si, }, query: stmt.query, stickyErr: err, } } // Exec executes a query that doesn't return rows. // For example: an INSERT and UPDATE. func (tx *Tx) Exec(query string, args ...interface{}) (Result, error) { dc, err := tx.grabConn() if err != nil { return nil, err } if execer, ok := dc.ci.(driver.Execer); ok { dargs, err := driverArgs(nil, args) if err != nil { return nil, err } dc.Lock() resi, err := execer.Exec(query, dargs) dc.Unlock() if err == nil { return driverResult{dc, resi}, nil } if err != driver.ErrSkip { return nil, err } } dc.Lock() si, err := dc.ci.Prepare(query) dc.Unlock() if err != nil { return nil, err } defer withLock(dc, func() { si.Close() }) return resultFromStatement(driverStmt{dc, si}, args...) } // Query executes a query that returns rows, typically a SELECT. func (tx *Tx) Query(query string, args ...interface{}) (*Rows, error) { dc, err := tx.grabConn() if err != nil { return nil, err } releaseConn := func(error) {} return tx.db.queryConn(dc, releaseConn, query, args) } // QueryRow executes a query that is expected to return at most one row. // QueryRow always return a non-nil value. Errors are deferred until // Row's Scan method is called. func (tx *Tx) QueryRow(query string, args ...interface{}) *Row { rows, err := tx.Query(query, args...) return &Row{rows: rows, err: err} } // connStmt is a prepared statement on a particular connection. type connStmt struct { dc *driverConn si driver.Stmt } // Stmt is a prepared statement. Stmt is safe for concurrent use by multiple goroutines. type Stmt struct { // Immutable: db *DB // where we came from query string // that created the Stmt stickyErr error // if non-nil, this error is returned for all operations closemu sync.RWMutex // held exclusively during close, for read otherwise. // If in a transaction, else both nil: tx *Tx txsi *driverStmt mu sync.Mutex // protects the rest of the fields closed bool // css is a list of underlying driver statement interfaces // that are valid on particular connections. This is only // used if tx == nil and one is found that has idle // connections. If tx != nil, txsi is always used. css []connStmt } // Exec executes a prepared statement with the given arguments and // returns a Result summarizing the effect of the statement. func (s *Stmt) Exec(args ...interface{}) (Result, error) { s.closemu.RLock() defer s.closemu.RUnlock() var res Result for i := 0; i < maxBadConnRetries; i++ { dc, releaseConn, si, err := s.connStmt() if err != nil { if err == driver.ErrBadConn { continue } return nil, err } res, err = resultFromStatement(driverStmt{dc, si}, args...) releaseConn(err) if err != driver.ErrBadConn { return res, err } } return nil, driver.ErrBadConn } func resultFromStatement(ds driverStmt, args ...interface{}) (Result, error) { ds.Lock() want := ds.si.NumInput() ds.Unlock() // -1 means the driver doesn't know how to count the number of // placeholders, so we won't sanity check input here and instead let the // driver deal with errors. if want != -1 && len(args) != want { return nil, fmt.Errorf("sql: expected %d arguments, got %d", want, len(args)) } dargs, err := driverArgs(&ds, args) if err != nil { return nil, err } ds.Lock() resi, err := ds.si.Exec(dargs) ds.Unlock() if err != nil { return nil, err } return driverResult{ds.Locker, resi}, nil } // connStmt returns a free driver connection on which to execute the // statement, a function to call to release the connection, and a // statement bound to that connection. func (s *Stmt) connStmt() (ci *driverConn, releaseConn func(error), si driver.Stmt, err error) { if err = s.stickyErr; err != nil { return } s.mu.Lock() if s.closed { s.mu.Unlock() err = errors.New("sql: statement is closed") return } // In a transaction, we always use the connection that the // transaction was created on. if s.tx != nil { s.mu.Unlock() ci, err = s.tx.grabConn() // blocks, waiting for the connection. if err != nil { return } releaseConn = func(error) {} return ci, releaseConn, s.txsi.si, nil } var cs connStmt match := false for i := 0; i < len(s.css); i++ { v := s.css[i] _, err := s.db.connIfFree(v.dc) if err == nil { match = true cs = v break } if err == errConnClosed { // Lazily remove dead conn from our freelist. s.css[i] = s.css[len(s.css)-1] s.css = s.css[:len(s.css)-1] i-- } } s.mu.Unlock() // Make a new conn if all are busy. // TODO(bradfitz): or wait for one? make configurable later? if !match { dc, err := s.db.conn() if err != nil { return nil, nil, nil, err } dc.Lock() si, err := dc.prepareLocked(s.query) dc.Unlock() if err != nil { s.db.putConn(dc, err) return nil, nil, nil, err } s.mu.Lock() cs = connStmt{dc, si} s.css = append(s.css, cs) s.mu.Unlock() } conn := cs.dc return conn, conn.releaseConn, cs.si, nil } // Query executes a prepared query statement with the given arguments // and returns the query results as a *Rows. func (s *Stmt) Query(args ...interface{}) (*Rows, error) { s.closemu.RLock() defer s.closemu.RUnlock() var rowsi driver.Rows for i := 0; i < maxBadConnRetries; i++ { dc, releaseConn, si, err := s.connStmt() if err != nil { if err == driver.ErrBadConn { continue } return nil, err } rowsi, err = rowsiFromStatement(driverStmt{dc, si}, args...) if err == nil { // Note: ownership of ci passes to the *Rows, to be freed // with releaseConn. rows := &Rows{ dc: dc, rowsi: rowsi, // releaseConn set below } s.db.addDep(s, rows) rows.releaseConn = func(err error) { releaseConn(err) s.db.removeDep(s, rows) } return rows, nil } releaseConn(err) if err != driver.ErrBadConn { return nil, err } } return nil, driver.ErrBadConn } func rowsiFromStatement(ds driverStmt, args ...interface{}) (driver.Rows, error) { ds.Lock() want := ds.si.NumInput() ds.Unlock() // -1 means the driver doesn't know how to count the number of // placeholders, so we won't sanity check input here and instead let the // driver deal with errors. if want != -1 && len(args) != want { return nil, fmt.Errorf("sql: statement expects %d inputs; got %d", want, len(args)) } dargs, err := driverArgs(&ds, args) if err != nil { return nil, err } ds.Lock() rowsi, err := ds.si.Query(dargs) ds.Unlock() if err != nil { return nil, err } return rowsi, nil } // QueryRow executes a prepared query statement with the given arguments. // If an error occurs during the execution of the statement, that error will // be returned by a call to Scan on the returned *Row, which is always non-nil. // If the query selects no rows, the *Row's Scan will return ErrNoRows. // Otherwise, the *Row's Scan scans the first selected row and discards // the rest. // // Example usage: // // var name string // err := nameByUseridStmt.QueryRow(id).Scan(&name) func (s *Stmt) QueryRow(args ...interface{}) *Row { rows, err := s.Query(args...) if err != nil { return &Row{err: err} } return &Row{rows: rows} } // Close closes the statement. func (s *Stmt) Close() error { s.closemu.Lock() defer s.closemu.Unlock() if s.stickyErr != nil { return s.stickyErr } s.mu.Lock() if s.closed { s.mu.Unlock() return nil } s.closed = true if s.tx != nil { s.txsi.Close() s.mu.Unlock() return nil } s.mu.Unlock() return s.db.removeDep(s, s) } func (s *Stmt) finalClose() error { s.mu.Lock() defer s.mu.Unlock() if s.css != nil { for _, v := range s.css { s.db.noteUnusedDriverStatement(v.dc, v.si) v.dc.removeOpenStmt(v.si) } s.css = nil } return nil } // Rows is the result of a query. Its cursor starts before the first row // of the result set. Use Next to advance through the rows: // // rows, err := db.Query("SELECT ...") // ... // defer rows.Close() // for rows.Next() { // var id int // var name string // err = rows.Scan(&id, &name) // ... // } // err = rows.Err() // get any error encountered during iteration // ... type Rows struct { dc *driverConn // owned; must call releaseConn when closed to release releaseConn func(error) rowsi driver.Rows closed bool lastcols []driver.Value lasterr error // non-nil only if closed is true closeStmt driver.Stmt // if non-nil, statement to Close on close } // Next prepares the next result row for reading with the Scan method. It // returns true on success, or false if there is no next result row or an error // happened while preparing it. Err should be consulted to distinguish between // the two cases. // // Every call to Scan, even the first one, must be preceded by a call to Next. func (rs *Rows) Next() bool { if rs.closed { return false } if rs.lastcols == nil { rs.lastcols = make([]driver.Value, len(rs.rowsi.Columns())) } rs.lasterr = rs.rowsi.Next(rs.lastcols) if rs.lasterr != nil { rs.Close() return false } return true } // Err returns the error, if any, that was encountered during iteration. // Err may be called after an explicit or implicit Close. func (rs *Rows) Err() error { if rs.lasterr == io.EOF { return nil } return rs.lasterr } // Columns returns the column names. // Columns returns an error if the rows are closed, or if the rows // are from QueryRow and there was a deferred error. func (rs *Rows) Columns() ([]string, error) { if rs.closed { return nil, errors.New("sql: Rows are closed") } if rs.rowsi == nil { return nil, errors.New("sql: no Rows available") } return rs.rowsi.Columns(), nil } // Scan copies the columns in the current row into the values pointed // at by dest. // // If an argument has type *[]byte, Scan saves in that argument a copy // of the corresponding data. The copy is owned by the caller and can // be modified and held indefinitely. The copy can be avoided by using // an argument of type *RawBytes instead; see the documentation for // RawBytes for restrictions on its use. // // If an argument has type *interface{}, Scan copies the value // provided by the underlying driver without conversion. If the value // is of type []byte, a copy is made and the caller owns the result. func (rs *Rows) Scan(dest ...interface{}) error { if rs.closed { return errors.New("sql: Rows are closed") } if rs.lastcols == nil { return errors.New("sql: Scan called without calling Next") } if len(dest) != len(rs.lastcols) { return fmt.Errorf("sql: expected %d destination arguments in Scan, not %d", len(rs.lastcols), len(dest)) } for i, sv := range rs.lastcols { err := convertAssign(dest[i], sv) if err != nil { return fmt.Errorf("sql: Scan error on column index %d: %v", i, err) } } return nil } var rowsCloseHook func(*Rows, *error) // Close closes the Rows, preventing further enumeration. If Next returns // false, the Rows are closed automatically and it will suffice to check the // result of Err. Close is idempotent and does not affect the result of Err. func (rs *Rows) Close() error { if rs.closed { return nil } rs.closed = true err := rs.rowsi.Close() if fn := rowsCloseHook; fn != nil { fn(rs, &err) } if rs.closeStmt != nil { rs.closeStmt.Close() } rs.releaseConn(err) return err } // Row is the result of calling QueryRow to select a single row. type Row struct { // One of these two will be non-nil: err error // deferred error for easy chaining rows *Rows } // Scan copies the columns from the matched row into the values // pointed at by dest. If more than one row matches the query, // Scan uses the first row and discards the rest. If no row matches // the query, Scan returns ErrNoRows. func (r *Row) Scan(dest ...interface{}) error { if r.err != nil { return r.err } // TODO(bradfitz): for now we need to defensively clone all // []byte that the driver returned (not permitting // *RawBytes in Rows.Scan), since we're about to close // the Rows in our defer, when we return from this function. // the contract with the driver.Next(...) interface is that it // can return slices into read-only temporary memory that's // only valid until the next Scan/Close. But the TODO is that // for a lot of drivers, this copy will be unnecessary. We // should provide an optional interface for drivers to // implement to say, "don't worry, the []bytes that I return // from Next will not be modified again." (for instance, if // they were obtained from the network anyway) But for now we // don't care. defer r.rows.Close() for _, dp := range dest { if _, ok := dp.(*RawBytes); ok { return errors.New("sql: RawBytes isn't allowed on Row.Scan") } } if !r.rows.Next() { if err := r.rows.Err(); err != nil { return err } return ErrNoRows } err := r.rows.Scan(dest...) if err != nil { return err } // Make sure the query can be processed to completion with no errors. if err := r.rows.Close(); err != nil { return err } return nil } // A Result summarizes an executed SQL command. type Result interface { // LastInsertId returns the integer generated by the database // in response to a command. Typically this will be from an // "auto increment" column when inserting a new row. Not all // databases support this feature, and the syntax of such // statements varies. LastInsertId() (int64, error) // RowsAffected returns the number of rows affected by an // update, insert, or delete. Not every database or database // driver may support this. RowsAffected() (int64, error) } type driverResult struct { sync.Locker // the *driverConn resi driver.Result } func (dr driverResult) LastInsertId() (int64, error) { dr.Lock() defer dr.Unlock() return dr.resi.LastInsertId() } func (dr driverResult) RowsAffected() (int64, error) { dr.Lock() defer dr.Unlock() return dr.resi.RowsAffected() } func stack() string { var buf [2 << 10]byte return string(buf[:runtime.Stack(buf[:], false)]) } // withLock runs while holding lk. func withLock(lk sync.Locker, fn func()) { lk.Lock() fn() lk.Unlock() } go/src/pkg/database/sql/sql_test.go0100644000000000000000000012731612412656737017611 0ustar00rootroot00000000000000// Copyright 2011 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 sql import ( "database/sql/driver" "errors" "fmt" "math/rand" "reflect" "runtime" "strings" "sync" "testing" "time" ) func init() { type dbConn struct { db *DB c *driverConn } freedFrom := make(map[dbConn]string) putConnHook = func(db *DB, c *driverConn) { if c.listElem != nil { // print before panic, as panic may get lost due to conflicting panic // (all goroutines asleep) elsewhere, since we might not unlock // the mutex in freeConn here. println("double free of conn. conflicts are:\nA) " + freedFrom[dbConn{db, c}] + "\n\nand\nB) " + stack()) panic("double free of conn.") } freedFrom[dbConn{db, c}] = stack() } } const fakeDBName = "foo" var chrisBirthday = time.Unix(123456789, 0) func newTestDB(t testing.TB, name string) *DB { db, err := Open("test", fakeDBName) if err != nil { t.Fatalf("Open: %v", err) } if _, err := db.Exec("WIPE"); err != nil { t.Fatalf("exec wipe: %v", err) } if name == "people" { exec(t, db, "CREATE|people|name=string,age=int32,photo=blob,dead=bool,bdate=datetime") exec(t, db, "INSERT|people|name=Alice,age=?,photo=APHOTO", 1) exec(t, db, "INSERT|people|name=Bob,age=?,photo=BPHOTO", 2) exec(t, db, "INSERT|people|name=Chris,age=?,photo=CPHOTO,bdate=?", 3, chrisBirthday) } if name == "magicquery" { // Magic table name and column, known by fakedb_test.go. exec(t, db, "CREATE|magicquery|op=string,millis=int32") exec(t, db, "INSERT|magicquery|op=sleep,millis=10") } return db } func exec(t testing.TB, db *DB, query string, args ...interface{}) { _, err := db.Exec(query, args...) if err != nil { t.Fatalf("Exec of %q: %v", query, err) } } func closeDB(t testing.TB, db *DB) { if e := recover(); e != nil { fmt.Printf("Panic: %v\n", e) panic(e) } defer setHookpostCloseConn(nil) setHookpostCloseConn(func(_ *fakeConn, err error) { if err != nil { t.Errorf("Error closing fakeConn: %v", err) } }) for node, i := db.freeConn.Front(), 0; node != nil; node, i = node.Next(), i+1 { dc := node.Value.(*driverConn) if n := len(dc.openStmt); n > 0 { // Just a sanity check. This is legal in // general, but if we make the tests clean up // their statements first, then we can safely // verify this is always zero here, and any // other value is a leak. t.Errorf("while closing db, freeConn %d/%d had %d open stmts; want 0", i, db.freeConn.Len(), n) } } err := db.Close() if err != nil { t.Fatalf("error closing DB: %v", err) } db.mu.Lock() count := db.numOpen db.mu.Unlock() if count != 0 { t.Fatalf("%d connections still open after closing DB", db.numOpen) } } // numPrepares assumes that db has exactly 1 idle conn and returns // its count of calls to Prepare func numPrepares(t *testing.T, db *DB) int { if n := db.freeConn.Len(); n != 1 { t.Fatalf("free conns = %d; want 1", n) } return (db.freeConn.Front().Value.(*driverConn)).ci.(*fakeConn).numPrepare } func (db *DB) numDeps() int { db.mu.Lock() defer db.mu.Unlock() return len(db.dep) } // Dependencies are closed via a goroutine, so this polls waiting for // numDeps to fall to want, waiting up to d. func (db *DB) numDepsPollUntil(want int, d time.Duration) int { deadline := time.Now().Add(d) for { n := db.numDeps() if n <= want || time.Now().After(deadline) { return n } time.Sleep(50 * time.Millisecond) } } func (db *DB) numFreeConns() int { db.mu.Lock() defer db.mu.Unlock() return db.freeConn.Len() } func (db *DB) dumpDeps(t *testing.T) { for fc := range db.dep { db.dumpDep(t, 0, fc, map[finalCloser]bool{}) } } func (db *DB) dumpDep(t *testing.T, depth int, dep finalCloser, seen map[finalCloser]bool) { seen[dep] = true indent := strings.Repeat(" ", depth) ds := db.dep[dep] for k := range ds { t.Logf("%s%T (%p) waiting for -> %T (%p)", indent, dep, dep, k, k) if fc, ok := k.(finalCloser); ok { if !seen[fc] { db.dumpDep(t, depth+1, fc, seen) } } } } func TestQuery(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) prepares0 := numPrepares(t, db) rows, err := db.Query("SELECT|people|age,name|") if err != nil { t.Fatalf("Query: %v", err) } type row struct { age int name string } got := []row{} for rows.Next() { var r row err = rows.Scan(&r.age, &r.name) if err != nil { t.Fatalf("Scan: %v", err) } got = append(got, r) } err = rows.Err() if err != nil { t.Fatalf("Err: %v", err) } want := []row{ {age: 1, name: "Alice"}, {age: 2, name: "Bob"}, {age: 3, name: "Chris"}, } if !reflect.DeepEqual(got, want) { t.Errorf("mismatch.\n got: %#v\nwant: %#v", got, want) } // And verify that the final rows.Next() call, which hit EOF, // also closed the rows connection. if n := db.numFreeConns(); n != 1 { t.Fatalf("free conns after query hitting EOF = %d; want 1", n) } if prepares := numPrepares(t, db) - prepares0; prepares != 1 { t.Errorf("executed %d Prepare statements; want 1", prepares) } } func TestByteOwnership(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) rows, err := db.Query("SELECT|people|name,photo|") if err != nil { t.Fatalf("Query: %v", err) } type row struct { name []byte photo RawBytes } got := []row{} for rows.Next() { var r row err = rows.Scan(&r.name, &r.photo) if err != nil { t.Fatalf("Scan: %v", err) } got = append(got, r) } corruptMemory := []byte("\xffPHOTO") want := []row{ {name: []byte("Alice"), photo: corruptMemory}, {name: []byte("Bob"), photo: corruptMemory}, {name: []byte("Chris"), photo: corruptMemory}, } if !reflect.DeepEqual(got, want) { t.Errorf("mismatch.\n got: %#v\nwant: %#v", got, want) } var photo RawBytes err = db.QueryRow("SELECT|people|photo|name=?", "Alice").Scan(&photo) if err == nil { t.Error("want error scanning into RawBytes from QueryRow") } } func TestRowsColumns(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) rows, err := db.Query("SELECT|people|age,name|") if err != nil { t.Fatalf("Query: %v", err) } cols, err := rows.Columns() if err != nil { t.Fatalf("Columns: %v", err) } want := []string{"age", "name"} if !reflect.DeepEqual(cols, want) { t.Errorf("got %#v; want %#v", cols, want) } if err := rows.Close(); err != nil { t.Errorf("error closing rows: %s", err) } } func TestQueryRow(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) var name string var age int var birthday time.Time err := db.QueryRow("SELECT|people|age,name|age=?", 3).Scan(&age) if err == nil || !strings.Contains(err.Error(), "expected 2 destination arguments") { t.Errorf("expected error from wrong number of arguments; actually got: %v", err) } err = db.QueryRow("SELECT|people|bdate|age=?", 3).Scan(&birthday) if err != nil || !birthday.Equal(chrisBirthday) { t.Errorf("chris birthday = %v, err = %v; want %v", birthday, err, chrisBirthday) } err = db.QueryRow("SELECT|people|age,name|age=?", 2).Scan(&age, &name) if err != nil { t.Fatalf("age QueryRow+Scan: %v", err) } if name != "Bob" { t.Errorf("expected name Bob, got %q", name) } if age != 2 { t.Errorf("expected age 2, got %d", age) } err = db.QueryRow("SELECT|people|age,name|name=?", "Alice").Scan(&age, &name) if err != nil { t.Fatalf("name QueryRow+Scan: %v", err) } if name != "Alice" { t.Errorf("expected name Alice, got %q", name) } if age != 1 { t.Errorf("expected age 1, got %d", age) } var photo []byte err = db.QueryRow("SELECT|people|photo|name=?", "Alice").Scan(&photo) if err != nil { t.Fatalf("photo QueryRow+Scan: %v", err) } want := []byte("APHOTO") if !reflect.DeepEqual(photo, want) { t.Errorf("photo = %q; want %q", photo, want) } } func TestStatementErrorAfterClose(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) stmt, err := db.Prepare("SELECT|people|age|name=?") if err != nil { t.Fatalf("Prepare: %v", err) } err = stmt.Close() if err != nil { t.Fatalf("Close: %v", err) } var name string err = stmt.QueryRow("foo").Scan(&name) if err == nil { t.Errorf("expected error from QueryRow.Scan after Stmt.Close") } } func TestStatementQueryRow(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) stmt, err := db.Prepare("SELECT|people|age|name=?") if err != nil { t.Fatalf("Prepare: %v", err) } defer stmt.Close() var age int for n, tt := range []struct { name string want int }{ {"Alice", 1}, {"Bob", 2}, {"Chris", 3}, } { if err := stmt.QueryRow(tt.name).Scan(&age); err != nil { t.Errorf("%d: on %q, QueryRow/Scan: %v", n, tt.name, err) } else if age != tt.want { t.Errorf("%d: age=%d, want %d", n, age, tt.want) } } } // golang.org/issue/3734 func TestStatementQueryRowConcurrent(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) stmt, err := db.Prepare("SELECT|people|age|name=?") if err != nil { t.Fatalf("Prepare: %v", err) } defer stmt.Close() const n = 10 ch := make(chan error, n) for i := 0; i < n; i++ { go func() { var age int err := stmt.QueryRow("Alice").Scan(&age) if err == nil && age != 1 { err = fmt.Errorf("unexpected age %d", age) } ch <- err }() } for i := 0; i < n; i++ { if err := <-ch; err != nil { t.Error(err) } } } // just a test of fakedb itself func TestBogusPreboundParameters(t *testing.T) { db := newTestDB(t, "foo") defer closeDB(t, db) exec(t, db, "CREATE|t1|name=string,age=int32,dead=bool") _, err := db.Prepare("INSERT|t1|name=?,age=bogusconversion") if err == nil { t.Fatalf("expected error") } if err.Error() != `fakedb: invalid conversion to int32 from "bogusconversion"` { t.Errorf("unexpected error: %v", err) } } func TestExec(t *testing.T) { db := newTestDB(t, "foo") defer closeDB(t, db) exec(t, db, "CREATE|t1|name=string,age=int32,dead=bool") stmt, err := db.Prepare("INSERT|t1|name=?,age=?") if err != nil { t.Errorf("Stmt, err = %v, %v", stmt, err) } defer stmt.Close() type execTest struct { args []interface{} wantErr string } execTests := []execTest{ // Okay: {[]interface{}{"Brad", 31}, ""}, {[]interface{}{"Brad", int64(31)}, ""}, {[]interface{}{"Bob", "32"}, ""}, {[]interface{}{7, 9}, ""}, // Invalid conversions: {[]interface{}{"Brad", int64(0xFFFFFFFF)}, "sql: converting argument #1's type: sql/driver: value 4294967295 overflows int32"}, {[]interface{}{"Brad", "strconv fail"}, "sql: converting argument #1's type: sql/driver: value \"strconv fail\" can't be converted to int32"}, // Wrong number of args: {[]interface{}{}, "sql: expected 2 arguments, got 0"}, {[]interface{}{1, 2, 3}, "sql: expected 2 arguments, got 3"}, } for n, et := range execTests { _, err := stmt.Exec(et.args...) errStr := "" if err != nil { errStr = err.Error() } if errStr != et.wantErr { t.Errorf("stmt.Execute #%d: for %v, got error %q, want error %q", n, et.args, errStr, et.wantErr) } } } func TestTxStmt(t *testing.T) { db := newTestDB(t, "") defer closeDB(t, db) exec(t, db, "CREATE|t1|name=string,age=int32,dead=bool") stmt, err := db.Prepare("INSERT|t1|name=?,age=?") if err != nil { t.Fatalf("Stmt, err = %v, %v", stmt, err) } defer stmt.Close() tx, err := db.Begin() if err != nil { t.Fatalf("Begin = %v", err) } txs := tx.Stmt(stmt) defer txs.Close() _, err = txs.Exec("Bobby", 7) if err != nil { t.Fatalf("Exec = %v", err) } err = tx.Commit() if err != nil { t.Fatalf("Commit = %v", err) } } // Issue: http://golang.org/issue/2784 // This test didn't fail before because we got lucky with the fakedb driver. // It was failing, and now not, in github.com/bradfitz/go-sql-test func TestTxQuery(t *testing.T) { db := newTestDB(t, "") defer closeDB(t, db) exec(t, db, "CREATE|t1|name=string,age=int32,dead=bool") exec(t, db, "INSERT|t1|name=Alice") tx, err := db.Begin() if err != nil { t.Fatal(err) } defer tx.Rollback() r, err := tx.Query("SELECT|t1|name|") if err != nil { t.Fatal(err) } defer r.Close() if !r.Next() { if r.Err() != nil { t.Fatal(r.Err()) } t.Fatal("expected one row") } var x string err = r.Scan(&x) if err != nil { t.Fatal(err) } } func TestTxQueryInvalid(t *testing.T) { db := newTestDB(t, "") defer closeDB(t, db) tx, err := db.Begin() if err != nil { t.Fatal(err) } defer tx.Rollback() _, err = tx.Query("SELECT|t1|name|") if err == nil { t.Fatal("Error expected") } } // Tests fix for issue 4433, that retries in Begin happen when // conn.Begin() returns ErrBadConn func TestTxErrBadConn(t *testing.T) { db, err := Open("test", fakeDBName+";badConn") if err != nil { t.Fatalf("Open: %v", err) } if _, err := db.Exec("WIPE"); err != nil { t.Fatalf("exec wipe: %v", err) } defer closeDB(t, db) exec(t, db, "CREATE|t1|name=string,age=int32,dead=bool") stmt, err := db.Prepare("INSERT|t1|name=?,age=?") if err != nil { t.Fatalf("Stmt, err = %v, %v", stmt, err) } defer stmt.Close() tx, err := db.Begin() if err != nil { t.Fatalf("Begin = %v", err) } txs := tx.Stmt(stmt) defer txs.Close() _, err = txs.Exec("Bobby", 7) if err != nil { t.Fatalf("Exec = %v", err) } err = tx.Commit() if err != nil { t.Fatalf("Commit = %v", err) } } // Tests fix for issue 2542, that we release a lock when querying on // a closed connection. func TestIssue2542Deadlock(t *testing.T) { db := newTestDB(t, "people") closeDB(t, db) for i := 0; i < 2; i++ { _, err := db.Query("SELECT|people|age,name|") if err == nil { t.Fatalf("expected error") } } } // From golang.org/issue/3865 func TestCloseStmtBeforeRows(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) s, err := db.Prepare("SELECT|people|name|") if err != nil { t.Fatal(err) } r, err := s.Query() if err != nil { s.Close() t.Fatal(err) } err = s.Close() if err != nil { t.Fatal(err) } r.Close() } // Tests fix for issue 2788, that we bind nil to a []byte if the // value in the column is sql null func TestNullByteSlice(t *testing.T) { db := newTestDB(t, "") defer closeDB(t, db) exec(t, db, "CREATE|t|id=int32,name=nullstring") exec(t, db, "INSERT|t|id=10,name=?", nil) var name []byte err := db.QueryRow("SELECT|t|name|id=?", 10).Scan(&name) if err != nil { t.Fatal(err) } if name != nil { t.Fatalf("name []byte should be nil for null column value, got: %#v", name) } exec(t, db, "INSERT|t|id=11,name=?", "bob") err = db.QueryRow("SELECT|t|name|id=?", 11).Scan(&name) if err != nil { t.Fatal(err) } if string(name) != "bob" { t.Fatalf("name []byte should be bob, got: %q", string(name)) } } func TestPointerParamsAndScans(t *testing.T) { db := newTestDB(t, "") defer closeDB(t, db) exec(t, db, "CREATE|t|id=int32,name=nullstring") bob := "bob" var name *string name = &bob exec(t, db, "INSERT|t|id=10,name=?", name) name = nil exec(t, db, "INSERT|t|id=20,name=?", name) err := db.QueryRow("SELECT|t|name|id=?", 10).Scan(&name) if err != nil { t.Fatalf("querying id 10: %v", err) } if name == nil { t.Errorf("id 10's name = nil; want bob") } else if *name != "bob" { t.Errorf("id 10's name = %q; want bob", *name) } err = db.QueryRow("SELECT|t|name|id=?", 20).Scan(&name) if err != nil { t.Fatalf("querying id 20: %v", err) } if name != nil { t.Errorf("id 20 = %q; want nil", *name) } } func TestQueryRowClosingStmt(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) var name string var age int err := db.QueryRow("SELECT|people|age,name|age=?", 3).Scan(&age, &name) if err != nil { t.Fatal(err) } if db.freeConn.Len() != 1 { t.Fatalf("expected 1 free conn") } fakeConn := (db.freeConn.Front().Value.(*driverConn)).ci.(*fakeConn) if made, closed := fakeConn.stmtsMade, fakeConn.stmtsClosed; made != closed { t.Errorf("statement close mismatch: made %d, closed %d", made, closed) } } // Test issue 6651 func TestIssue6651(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) var v string want := "error in rows.Next" rowsCursorNextHook = func(dest []driver.Value) error { return fmt.Errorf(want) } defer func() { rowsCursorNextHook = nil }() err := db.QueryRow("SELECT|people|name|").Scan(&v) if err == nil || err.Error() != want { t.Errorf("error = %q; want %q", err, want) } rowsCursorNextHook = nil want = "error in rows.Close" rowsCloseHook = func(rows *Rows, err *error) { *err = fmt.Errorf(want) } defer func() { rowsCloseHook = nil }() err = db.QueryRow("SELECT|people|name|").Scan(&v) if err == nil || err.Error() != want { t.Errorf("error = %q; want %q", err, want) } } type nullTestRow struct { nullParam interface{} notNullParam interface{} scanNullVal interface{} } type nullTestSpec struct { nullType string notNullType string rows [6]nullTestRow } func TestNullStringParam(t *testing.T) { spec := nullTestSpec{"nullstring", "string", [6]nullTestRow{ {NullString{"aqua", true}, "", NullString{"aqua", true}}, {NullString{"brown", false}, "", NullString{"", false}}, {"chartreuse", "", NullString{"chartreuse", true}}, {NullString{"darkred", true}, "", NullString{"darkred", true}}, {NullString{"eel", false}, "", NullString{"", false}}, {"foo", NullString{"black", false}, nil}, }} nullTestRun(t, spec) } func TestNullInt64Param(t *testing.T) { spec := nullTestSpec{"nullint64", "int64", [6]nullTestRow{ {NullInt64{31, true}, 1, NullInt64{31, true}}, {NullInt64{-22, false}, 1, NullInt64{0, false}}, {22, 1, NullInt64{22, true}}, {NullInt64{33, true}, 1, NullInt64{33, true}}, {NullInt64{222, false}, 1, NullInt64{0, false}}, {0, NullInt64{31, false}, nil}, }} nullTestRun(t, spec) } func TestNullFloat64Param(t *testing.T) { spec := nullTestSpec{"nullfloat64", "float64", [6]nullTestRow{ {NullFloat64{31.2, true}, 1, NullFloat64{31.2, true}}, {NullFloat64{13.1, false}, 1, NullFloat64{0, false}}, {-22.9, 1, NullFloat64{-22.9, true}}, {NullFloat64{33.81, true}, 1, NullFloat64{33.81, true}}, {NullFloat64{222, false}, 1, NullFloat64{0, false}}, {10, NullFloat64{31.2, false}, nil}, }} nullTestRun(t, spec) } func TestNullBoolParam(t *testing.T) { spec := nullTestSpec{"nullbool", "bool", [6]nullTestRow{ {NullBool{false, true}, true, NullBool{false, true}}, {NullBool{true, false}, false, NullBool{false, false}}, {true, true, NullBool{true, true}}, {NullBool{true, true}, false, NullBool{true, true}}, {NullBool{true, false}, true, NullBool{false, false}}, {true, NullBool{true, false}, nil}, }} nullTestRun(t, spec) } func nullTestRun(t *testing.T, spec nullTestSpec) { db := newTestDB(t, "") defer closeDB(t, db) exec(t, db, fmt.Sprintf("CREATE|t|id=int32,name=string,nullf=%s,notnullf=%s", spec.nullType, spec.notNullType)) // Inserts with db.Exec: exec(t, db, "INSERT|t|id=?,name=?,nullf=?,notnullf=?", 1, "alice", spec.rows[0].nullParam, spec.rows[0].notNullParam) exec(t, db, "INSERT|t|id=?,name=?,nullf=?,notnullf=?", 2, "bob", spec.rows[1].nullParam, spec.rows[1].notNullParam) // Inserts with a prepared statement: stmt, err := db.Prepare("INSERT|t|id=?,name=?,nullf=?,notnullf=?") if err != nil { t.Fatalf("prepare: %v", err) } defer stmt.Close() if _, err := stmt.Exec(3, "chris", spec.rows[2].nullParam, spec.rows[2].notNullParam); err != nil { t.Errorf("exec insert chris: %v", err) } if _, err := stmt.Exec(4, "dave", spec.rows[3].nullParam, spec.rows[3].notNullParam); err != nil { t.Errorf("exec insert dave: %v", err) } if _, err := stmt.Exec(5, "eleanor", spec.rows[4].nullParam, spec.rows[4].notNullParam); err != nil { t.Errorf("exec insert eleanor: %v", err) } // Can't put null val into non-null col if _, err := stmt.Exec(6, "bob", spec.rows[5].nullParam, spec.rows[5].notNullParam); err == nil { t.Errorf("expected error inserting nil val with prepared statement Exec") } _, err = db.Exec("INSERT|t|id=?,name=?,nullf=?", 999, nil, nil) if err == nil { // TODO: this test fails, but it's just because // fakeConn implements the optional Execer interface, // so arguably this is the correct behavior. But // maybe I should flesh out the fakeConn.Exec // implementation so this properly fails. // t.Errorf("expected error inserting nil name with Exec") } paramtype := reflect.TypeOf(spec.rows[0].nullParam) bindVal := reflect.New(paramtype).Interface() for i := 0; i < 5; i++ { id := i + 1 if err := db.QueryRow("SELECT|t|nullf|id=?", id).Scan(bindVal); err != nil { t.Errorf("id=%d Scan: %v", id, err) } bindValDeref := reflect.ValueOf(bindVal).Elem().Interface() if !reflect.DeepEqual(bindValDeref, spec.rows[i].scanNullVal) { t.Errorf("id=%d got %#v, want %#v", id, bindValDeref, spec.rows[i].scanNullVal) } } } // golang.org/issue/4859 func TestQueryRowNilScanDest(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) var name *string // nil pointer err := db.QueryRow("SELECT|people|name|").Scan(name) want := "sql: Scan error on column index 0: destination pointer is nil" if err == nil || err.Error() != want { t.Errorf("error = %q; want %q", err.Error(), want) } } func TestIssue4902(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) driver := db.driver.(*fakeDriver) opens0 := driver.openCount var stmt *Stmt var err error for i := 0; i < 10; i++ { stmt, err = db.Prepare("SELECT|people|name|") if err != nil { t.Fatal(err) } err = stmt.Close() if err != nil { t.Fatal(err) } } opens := driver.openCount - opens0 if opens > 1 { t.Errorf("opens = %d; want <= 1", opens) t.Logf("db = %#v", db) t.Logf("driver = %#v", driver) t.Logf("stmt = %#v", stmt) } } // Issue 3857 // This used to deadlock. func TestSimultaneousQueries(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) tx, err := db.Begin() if err != nil { t.Fatal(err) } defer tx.Rollback() r1, err := tx.Query("SELECT|people|name|") if err != nil { t.Fatal(err) } defer r1.Close() r2, err := tx.Query("SELECT|people|name|") if err != nil { t.Fatal(err) } defer r2.Close() } func TestMaxIdleConns(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) tx, err := db.Begin() if err != nil { t.Fatal(err) } tx.Commit() if got := db.freeConn.Len(); got != 1 { t.Errorf("freeConns = %d; want 1", got) } db.SetMaxIdleConns(0) if got := db.freeConn.Len(); got != 0 { t.Errorf("freeConns after set to zero = %d; want 0", got) } tx, err = db.Begin() if err != nil { t.Fatal(err) } tx.Commit() if got := db.freeConn.Len(); got != 0 { t.Errorf("freeConns = %d; want 0", got) } } func TestMaxOpenConns(t *testing.T) { if testing.Short() { t.Skip("skipping in short mode") } defer setHookpostCloseConn(nil) setHookpostCloseConn(func(_ *fakeConn, err error) { if err != nil { t.Errorf("Error closing fakeConn: %v", err) } }) db := newTestDB(t, "magicquery") defer closeDB(t, db) driver := db.driver.(*fakeDriver) // Force the number of open connections to 0 so we can get an accurate // count for the test db.SetMaxIdleConns(0) if g, w := db.numFreeConns(), 0; g != w { t.Errorf("free conns = %d; want %d", g, w) } if n := db.numDepsPollUntil(0, time.Second); n > 0 { t.Errorf("number of dependencies = %d; expected 0", n) db.dumpDeps(t) } driver.mu.Lock() opens0 := driver.openCount closes0 := driver.closeCount driver.mu.Unlock() db.SetMaxIdleConns(10) db.SetMaxOpenConns(10) stmt, err := db.Prepare("SELECT|magicquery|op|op=?,millis=?") if err != nil { t.Fatal(err) } // Start 50 parallel slow queries. const ( nquery = 50 sleepMillis = 25 nbatch = 2 ) var wg sync.WaitGroup for batch := 0; batch < nbatch; batch++ { for i := 0; i < nquery; i++ { wg.Add(1) go func() { defer wg.Done() var op string if err := stmt.QueryRow("sleep", sleepMillis).Scan(&op); err != nil && err != ErrNoRows { t.Error(err) } }() } // Sleep for twice the expected length of time for the // batch of 50 queries above to finish before starting // the next round. time.Sleep(2 * sleepMillis * time.Millisecond) } wg.Wait() if g, w := db.numFreeConns(), 10; g != w { t.Errorf("free conns = %d; want %d", g, w) } if n := db.numDepsPollUntil(20, time.Second); n > 20 { t.Errorf("number of dependencies = %d; expected <= 20", n) db.dumpDeps(t) } driver.mu.Lock() opens := driver.openCount - opens0 closes := driver.closeCount - closes0 driver.mu.Unlock() if opens > 10 { t.Logf("open calls = %d", opens) t.Logf("close calls = %d", closes) t.Errorf("db connections opened = %d; want <= 10", opens) db.dumpDeps(t) } if err := stmt.Close(); err != nil { t.Fatal(err) } if g, w := db.numFreeConns(), 10; g != w { t.Errorf("free conns = %d; want %d", g, w) } if n := db.numDepsPollUntil(10, time.Second); n > 10 { t.Errorf("number of dependencies = %d; expected <= 10", n) db.dumpDeps(t) } db.SetMaxOpenConns(5) if g, w := db.numFreeConns(), 5; g != w { t.Errorf("free conns = %d; want %d", g, w) } if n := db.numDepsPollUntil(5, time.Second); n > 5 { t.Errorf("number of dependencies = %d; expected 0", n) db.dumpDeps(t) } db.SetMaxOpenConns(0) if g, w := db.numFreeConns(), 5; g != w { t.Errorf("free conns = %d; want %d", g, w) } if n := db.numDepsPollUntil(5, time.Second); n > 5 { t.Errorf("number of dependencies = %d; expected 0", n) db.dumpDeps(t) } db.SetMaxIdleConns(0) if g, w := db.numFreeConns(), 0; g != w { t.Errorf("free conns = %d; want %d", g, w) } if n := db.numDepsPollUntil(0, time.Second); n > 0 { t.Errorf("number of dependencies = %d; expected 0", n) db.dumpDeps(t) } } func TestSingleOpenConn(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) db.SetMaxOpenConns(1) rows, err := db.Query("SELECT|people|name|") if err != nil { t.Fatal(err) } if err = rows.Close(); err != nil { t.Fatal(err) } // shouldn't deadlock rows, err = db.Query("SELECT|people|name|") if err != nil { t.Fatal(err) } if err = rows.Close(); err != nil { t.Fatal(err) } } // golang.org/issue/5323 func TestStmtCloseDeps(t *testing.T) { if testing.Short() { t.Skip("skipping in short mode") } defer setHookpostCloseConn(nil) setHookpostCloseConn(func(_ *fakeConn, err error) { if err != nil { t.Errorf("Error closing fakeConn: %v", err) } }) db := newTestDB(t, "magicquery") defer closeDB(t, db) driver := db.driver.(*fakeDriver) driver.mu.Lock() opens0 := driver.openCount closes0 := driver.closeCount driver.mu.Unlock() openDelta0 := opens0 - closes0 stmt, err := db.Prepare("SELECT|magicquery|op|op=?,millis=?") if err != nil { t.Fatal(err) } // Start 50 parallel slow queries. const ( nquery = 50 sleepMillis = 25 nbatch = 2 ) var wg sync.WaitGroup for batch := 0; batch < nbatch; batch++ { for i := 0; i < nquery; i++ { wg.Add(1) go func() { defer wg.Done() var op string if err := stmt.QueryRow("sleep", sleepMillis).Scan(&op); err != nil && err != ErrNoRows { t.Error(err) } }() } // Sleep for twice the expected length of time for the // batch of 50 queries above to finish before starting // the next round. time.Sleep(2 * sleepMillis * time.Millisecond) } wg.Wait() if g, w := db.numFreeConns(), 2; g != w { t.Errorf("free conns = %d; want %d", g, w) } if n := db.numDepsPollUntil(4, time.Second); n > 4 { t.Errorf("number of dependencies = %d; expected <= 4", n) db.dumpDeps(t) } driver.mu.Lock() opens := driver.openCount - opens0 closes := driver.closeCount - closes0 openDelta := (driver.openCount - driver.closeCount) - openDelta0 driver.mu.Unlock() if openDelta > 2 { t.Logf("open calls = %d", opens) t.Logf("close calls = %d", closes) t.Logf("open delta = %d", openDelta) t.Errorf("db connections opened = %d; want <= 2", openDelta) db.dumpDeps(t) } if len(stmt.css) > nquery { t.Errorf("len(stmt.css) = %d; want <= %d", len(stmt.css), nquery) } if err := stmt.Close(); err != nil { t.Fatal(err) } if g, w := db.numFreeConns(), 2; g != w { t.Errorf("free conns = %d; want %d", g, w) } if n := db.numDepsPollUntil(2, time.Second); n > 2 { t.Errorf("number of dependencies = %d; expected <= 2", n) db.dumpDeps(t) } db.SetMaxIdleConns(0) if g, w := db.numFreeConns(), 0; g != w { t.Errorf("free conns = %d; want %d", g, w) } if n := db.numDepsPollUntil(0, time.Second); n > 0 { t.Errorf("number of dependencies = %d; expected 0", n) db.dumpDeps(t) } } // golang.org/issue/5046 func TestCloseConnBeforeStmts(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) defer setHookpostCloseConn(nil) setHookpostCloseConn(func(_ *fakeConn, err error) { if err != nil { t.Errorf("Error closing fakeConn: %v; from %s", err, stack()) db.dumpDeps(t) t.Errorf("DB = %#v", db) } }) stmt, err := db.Prepare("SELECT|people|name|") if err != nil { t.Fatal(err) } if db.freeConn.Len() != 1 { t.Fatalf("expected 1 freeConn; got %d", db.freeConn.Len()) } dc := db.freeConn.Front().Value.(*driverConn) if dc.closed { t.Errorf("conn shouldn't be closed") } if n := len(dc.openStmt); n != 1 { t.Errorf("driverConn num openStmt = %d; want 1", n) } err = db.Close() if err != nil { t.Errorf("db Close = %v", err) } if !dc.closed { t.Errorf("after db.Close, driverConn should be closed") } if n := len(dc.openStmt); n != 0 { t.Errorf("driverConn num openStmt = %d; want 0", n) } err = stmt.Close() if err != nil { t.Errorf("Stmt close = %v", err) } if !dc.closed { t.Errorf("conn should be closed") } if dc.ci != nil { t.Errorf("after Stmt Close, driverConn's Conn interface should be nil") } } // golang.org/issue/5283: don't release the Rows' connection in Close // before calling Stmt.Close. func TestRowsCloseOrder(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) db.SetMaxIdleConns(0) setStrictFakeConnClose(t) defer setStrictFakeConnClose(nil) rows, err := db.Query("SELECT|people|age,name|") if err != nil { t.Fatal(err) } err = rows.Close() if err != nil { t.Fatal(err) } } func TestRowsImplicitClose(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) rows, err := db.Query("SELECT|people|age,name|") if err != nil { t.Fatal(err) } want, fail := 2, errors.New("fail") r := rows.rowsi.(*rowsCursor) r.errPos, r.err = want, fail got := 0 for rows.Next() { got++ } if got != want { t.Errorf("got %d rows, want %d", got, want) } if err := rows.Err(); err != fail { t.Errorf("got error %v, want %v", err, fail) } if !r.closed { t.Errorf("r.closed is false, want true") } } func TestStmtCloseOrder(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) db.SetMaxIdleConns(0) setStrictFakeConnClose(t) defer setStrictFakeConnClose(nil) _, err := db.Query("SELECT|non_existent|name|") if err == nil { t.Fatal("Quering non-existent table should fail") } } // golang.org/issue/5781 func TestErrBadConnReconnect(t *testing.T) { db := newTestDB(t, "foo") defer closeDB(t, db) exec(t, db, "CREATE|t1|name=string,age=int32,dead=bool") simulateBadConn := func(name string, hook *func() bool, op func() error) { broken, retried := false, false numOpen := db.numOpen // simulate a broken connection on the first try *hook = func() bool { if !broken { broken = true return true } retried = true return false } if err := op(); err != nil { t.Errorf(name+": %v", err) return } if !broken || !retried { t.Error(name + ": Failed to simulate broken connection") } *hook = nil if numOpen != db.numOpen { t.Errorf(name+": leaked %d connection(s)!", db.numOpen-numOpen) numOpen = db.numOpen } } // db.Exec dbExec := func() error { _, err := db.Exec("INSERT|t1|name=?,age=?,dead=?", "Gordon", 3, true) return err } simulateBadConn("db.Exec prepare", &hookPrepareBadConn, dbExec) simulateBadConn("db.Exec exec", &hookExecBadConn, dbExec) // db.Query dbQuery := func() error { rows, err := db.Query("SELECT|t1|age,name|") if err == nil { err = rows.Close() } return err } simulateBadConn("db.Query prepare", &hookPrepareBadConn, dbQuery) simulateBadConn("db.Query query", &hookQueryBadConn, dbQuery) // db.Prepare simulateBadConn("db.Prepare", &hookPrepareBadConn, func() error { stmt, err := db.Prepare("INSERT|t1|name=?,age=?,dead=?") if err != nil { return err } stmt.Close() return nil }) // stmt.Exec stmt1, err := db.Prepare("INSERT|t1|name=?,age=?,dead=?") if err != nil { t.Fatalf("prepare: %v", err) } defer stmt1.Close() // make sure we must prepare the stmt first for _, cs := range stmt1.css { cs.dc.inUse = true } stmtExec := func() error { _, err := stmt1.Exec("Gopher", 3, false) return err } simulateBadConn("stmt.Exec prepare", &hookPrepareBadConn, stmtExec) simulateBadConn("stmt.Exec exec", &hookExecBadConn, stmtExec) // stmt.Query stmt2, err := db.Prepare("SELECT|t1|age,name|") if err != nil { t.Fatalf("prepare: %v", err) } defer stmt2.Close() // make sure we must prepare the stmt first for _, cs := range stmt2.css { cs.dc.inUse = true } stmtQuery := func() error { rows, err := stmt2.Query() if err == nil { err = rows.Close() } return err } simulateBadConn("stmt.Query prepare", &hookPrepareBadConn, stmtQuery) simulateBadConn("stmt.Query exec", &hookQueryBadConn, stmtQuery) } type concurrentTest interface { init(t testing.TB, db *DB) finish(t testing.TB) test(t testing.TB) error } type concurrentDBQueryTest struct { db *DB } func (c *concurrentDBQueryTest) init(t testing.TB, db *DB) { c.db = db } func (c *concurrentDBQueryTest) finish(t testing.TB) { c.db = nil } func (c *concurrentDBQueryTest) test(t testing.TB) error { rows, err := c.db.Query("SELECT|people|name|") if err != nil { t.Error(err) return err } var name string for rows.Next() { rows.Scan(&name) } rows.Close() return nil } type concurrentDBExecTest struct { db *DB } func (c *concurrentDBExecTest) init(t testing.TB, db *DB) { c.db = db } func (c *concurrentDBExecTest) finish(t testing.TB) { c.db = nil } func (c *concurrentDBExecTest) test(t testing.TB) error { _, err := c.db.Exec("NOSERT|people|name=Chris,age=?,photo=CPHOTO,bdate=?", 3, chrisBirthday) if err != nil { t.Error(err) return err } return nil } type concurrentStmtQueryTest struct { db *DB stmt *Stmt } func (c *concurrentStmtQueryTest) init(t testing.TB, db *DB) { c.db = db var err error c.stmt, err = db.Prepare("SELECT|people|name|") if err != nil { t.Fatal(err) } } func (c *concurrentStmtQueryTest) finish(t testing.TB) { if c.stmt != nil { c.stmt.Close() c.stmt = nil } c.db = nil } func (c *concurrentStmtQueryTest) test(t testing.TB) error { rows, err := c.stmt.Query() if err != nil { t.Errorf("error on query: %v", err) return err } var name string for rows.Next() { rows.Scan(&name) } rows.Close() return nil } type concurrentStmtExecTest struct { db *DB stmt *Stmt } func (c *concurrentStmtExecTest) init(t testing.TB, db *DB) { c.db = db var err error c.stmt, err = db.Prepare("NOSERT|people|name=Chris,age=?,photo=CPHOTO,bdate=?") if err != nil { t.Fatal(err) } } func (c *concurrentStmtExecTest) finish(t testing.TB) { if c.stmt != nil { c.stmt.Close() c.stmt = nil } c.db = nil } func (c *concurrentStmtExecTest) test(t testing.TB) error { _, err := c.stmt.Exec(3, chrisBirthday) if err != nil { t.Errorf("error on exec: %v", err) return err } return nil } type concurrentTxQueryTest struct { db *DB tx *Tx } func (c *concurrentTxQueryTest) init(t testing.TB, db *DB) { c.db = db var err error c.tx, err = c.db.Begin() if err != nil { t.Fatal(err) } } func (c *concurrentTxQueryTest) finish(t testing.TB) { if c.tx != nil { c.tx.Rollback() c.tx = nil } c.db = nil } func (c *concurrentTxQueryTest) test(t testing.TB) error { rows, err := c.db.Query("SELECT|people|name|") if err != nil { t.Error(err) return err } var name string for rows.Next() { rows.Scan(&name) } rows.Close() return nil } type concurrentTxExecTest struct { db *DB tx *Tx } func (c *concurrentTxExecTest) init(t testing.TB, db *DB) { c.db = db var err error c.tx, err = c.db.Begin() if err != nil { t.Fatal(err) } } func (c *concurrentTxExecTest) finish(t testing.TB) { if c.tx != nil { c.tx.Rollback() c.tx = nil } c.db = nil } func (c *concurrentTxExecTest) test(t testing.TB) error { _, err := c.tx.Exec("NOSERT|people|name=Chris,age=?,photo=CPHOTO,bdate=?", 3, chrisBirthday) if err != nil { t.Error(err) return err } return nil } type concurrentTxStmtQueryTest struct { db *DB tx *Tx stmt *Stmt } func (c *concurrentTxStmtQueryTest) init(t testing.TB, db *DB) { c.db = db var err error c.tx, err = c.db.Begin() if err != nil { t.Fatal(err) } c.stmt, err = c.tx.Prepare("SELECT|people|name|") if err != nil { t.Fatal(err) } } func (c *concurrentTxStmtQueryTest) finish(t testing.TB) { if c.stmt != nil { c.stmt.Close() c.stmt = nil } if c.tx != nil { c.tx.Rollback() c.tx = nil } c.db = nil } func (c *concurrentTxStmtQueryTest) test(t testing.TB) error { rows, err := c.stmt.Query() if err != nil { t.Errorf("error on query: %v", err) return err } var name string for rows.Next() { rows.Scan(&name) } rows.Close() return nil } type concurrentTxStmtExecTest struct { db *DB tx *Tx stmt *Stmt } func (c *concurrentTxStmtExecTest) init(t testing.TB, db *DB) { c.db = db var err error c.tx, err = c.db.Begin() if err != nil { t.Fatal(err) } c.stmt, err = c.tx.Prepare("NOSERT|people|name=Chris,age=?,photo=CPHOTO,bdate=?") if err != nil { t.Fatal(err) } } func (c *concurrentTxStmtExecTest) finish(t testing.TB) { if c.stmt != nil { c.stmt.Close() c.stmt = nil } if c.tx != nil { c.tx.Rollback() c.tx = nil } c.db = nil } func (c *concurrentTxStmtExecTest) test(t testing.TB) error { _, err := c.stmt.Exec(3, chrisBirthday) if err != nil { t.Errorf("error on exec: %v", err) return err } return nil } type concurrentRandomTest struct { tests []concurrentTest } func (c *concurrentRandomTest) init(t testing.TB, db *DB) { c.tests = []concurrentTest{ new(concurrentDBQueryTest), new(concurrentDBExecTest), new(concurrentStmtQueryTest), new(concurrentStmtExecTest), new(concurrentTxQueryTest), new(concurrentTxExecTest), new(concurrentTxStmtQueryTest), new(concurrentTxStmtExecTest), } for _, ct := range c.tests { ct.init(t, db) } } func (c *concurrentRandomTest) finish(t testing.TB) { for _, ct := range c.tests { ct.finish(t) } } func (c *concurrentRandomTest) test(t testing.TB) error { ct := c.tests[rand.Intn(len(c.tests))] return ct.test(t) } func doConcurrentTest(t testing.TB, ct concurrentTest) { maxProcs, numReqs := 1, 500 if testing.Short() { maxProcs, numReqs = 4, 50 } defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(maxProcs)) db := newTestDB(t, "people") defer closeDB(t, db) ct.init(t, db) defer ct.finish(t) var wg sync.WaitGroup wg.Add(numReqs) reqs := make(chan bool) defer close(reqs) for i := 0; i < maxProcs*2; i++ { go func() { for _ = range reqs { err := ct.test(t) if err != nil { wg.Done() continue } wg.Done() } }() } for i := 0; i < numReqs; i++ { reqs <- true } wg.Wait() } func manyConcurrentQueries(t testing.TB) { maxProcs, numReqs := 16, 500 if testing.Short() { maxProcs, numReqs = 4, 50 } defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(maxProcs)) db := newTestDB(t, "people") defer closeDB(t, db) stmt, err := db.Prepare("SELECT|people|name|") if err != nil { t.Fatal(err) } defer stmt.Close() var wg sync.WaitGroup wg.Add(numReqs) reqs := make(chan bool) defer close(reqs) for i := 0; i < maxProcs*2; i++ { go func() { for _ = range reqs { rows, err := stmt.Query() if err != nil { t.Errorf("error on query: %v", err) wg.Done() continue } var name string for rows.Next() { rows.Scan(&name) } rows.Close() wg.Done() } }() } for i := 0; i < numReqs; i++ { reqs <- true } wg.Wait() } func TestIssue6081(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) drv := db.driver.(*fakeDriver) drv.mu.Lock() opens0 := drv.openCount closes0 := drv.closeCount drv.mu.Unlock() stmt, err := db.Prepare("SELECT|people|name|") if err != nil { t.Fatal(err) } rowsCloseHook = func(rows *Rows, err *error) { *err = driver.ErrBadConn } defer func() { rowsCloseHook = nil }() for i := 0; i < 10; i++ { rows, err := stmt.Query() if err != nil { t.Fatal(err) } rows.Close() } if n := len(stmt.css); n > 1 { t.Errorf("len(css slice) = %d; want <= 1", n) } stmt.Close() if n := len(stmt.css); n != 0 { t.Errorf("len(css slice) after Close = %d; want 0", n) } drv.mu.Lock() opens := drv.openCount - opens0 closes := drv.closeCount - closes0 drv.mu.Unlock() if opens < 9 { t.Errorf("opens = %d; want >= 9", opens) } if closes < 9 { t.Errorf("closes = %d; want >= 9", closes) } } func TestConcurrency(t *testing.T) { doConcurrentTest(t, new(concurrentDBQueryTest)) doConcurrentTest(t, new(concurrentDBExecTest)) doConcurrentTest(t, new(concurrentStmtQueryTest)) doConcurrentTest(t, new(concurrentStmtExecTest)) doConcurrentTest(t, new(concurrentTxQueryTest)) doConcurrentTest(t, new(concurrentTxExecTest)) doConcurrentTest(t, new(concurrentTxStmtQueryTest)) doConcurrentTest(t, new(concurrentTxStmtExecTest)) doConcurrentTest(t, new(concurrentRandomTest)) } func TestConnectionLeak(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) // Start by opening defaultMaxIdleConns rows := make([]*Rows, defaultMaxIdleConns) // We need to SetMaxOpenConns > MaxIdleConns, so the DB can open // a new connection and we can fill the idle queue with the released // connections. db.SetMaxOpenConns(len(rows) + 1) for ii := range rows { r, err := db.Query("SELECT|people|name|") if err != nil { t.Fatal(err) } r.Next() if err := r.Err(); err != nil { t.Fatal(err) } rows[ii] = r } // Now we have defaultMaxIdleConns busy connections. Open // a new one, but wait until the busy connections are released // before returning control to DB. drv := db.driver.(*fakeDriver) drv.waitCh = make(chan struct{}, 1) drv.waitingCh = make(chan struct{}, 1) var wg sync.WaitGroup wg.Add(1) go func() { r, err := db.Query("SELECT|people|name|") if err != nil { t.Fatal(err) } r.Close() wg.Done() }() // Wait until the goroutine we've just created has started waiting. <-drv.waitingCh // Now close the busy connections. This provides a connection for // the blocked goroutine and then fills up the idle queue. for _, v := range rows { v.Close() } // At this point we give the new connection to DB. This connection is // now useless, since the idle queue is full and there are no pending // requests. DB should deal with this situation without leaking the // connection. drv.waitCh <- struct{}{} wg.Wait() } func BenchmarkConcurrentDBExec(b *testing.B) { b.ReportAllocs() ct := new(concurrentDBExecTest) for i := 0; i < b.N; i++ { doConcurrentTest(b, ct) } } func BenchmarkConcurrentStmtQuery(b *testing.B) { b.ReportAllocs() ct := new(concurrentStmtQueryTest) for i := 0; i < b.N; i++ { doConcurrentTest(b, ct) } } func BenchmarkConcurrentStmtExec(b *testing.B) { b.ReportAllocs() ct := new(concurrentStmtExecTest) for i := 0; i < b.N; i++ { doConcurrentTest(b, ct) } } func BenchmarkConcurrentTxQuery(b *testing.B) { b.ReportAllocs() ct := new(concurrentTxQueryTest) for i := 0; i < b.N; i++ { doConcurrentTest(b, ct) } } func BenchmarkConcurrentTxExec(b *testing.B) { b.ReportAllocs() ct := new(concurrentTxExecTest) for i := 0; i < b.N; i++ { doConcurrentTest(b, ct) } } func BenchmarkConcurrentTxStmtQuery(b *testing.B) { b.ReportAllocs() ct := new(concurrentTxStmtQueryTest) for i := 0; i < b.N; i++ { doConcurrentTest(b, ct) } } func BenchmarkConcurrentTxStmtExec(b *testing.B) { b.ReportAllocs() ct := new(concurrentTxStmtExecTest) for i := 0; i < b.N; i++ { doConcurrentTest(b, ct) } } func BenchmarkConcurrentRandom(b *testing.B) { b.ReportAllocs() ct := new(concurrentRandomTest) for i := 0; i < b.N; i++ { doConcurrentTest(b, ct) } } go/src/pkg/debug0040755000000000000000000000000012412656737014061 5ustar00rootroot00000000000000go/src/pkg/debug/dwarf0040755000000000000000000000000012412656737015164 5ustar00rootroot00000000000000go/src/pkg/debug/dwarf/buf.go0100644000000000000000000000641512412656737016351 0ustar00rootroot00000000000000// Copyright 2009 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. // Buffered reading and decoding of DWARF data streams. package dwarf import ( "encoding/binary" "strconv" ) // Data buffer being decoded. type buf struct { dwarf *Data order binary.ByteOrder format dataFormat name string off Offset data []byte err error } // Data format, other than byte order. This affects the handling of // certain field formats. type dataFormat interface { // DWARF version number. Zero means unknown. version() int // 64-bit DWARF format? dwarf64() (dwarf64 bool, isKnown bool) // Size of an address, in bytes. Zero means unknown. addrsize() int } // Some parts of DWARF have no data format, e.g., abbrevs. type unknownFormat struct{} func (u unknownFormat) version() int { return 0 } func (u unknownFormat) dwarf64() (bool, bool) { return false, false } func (u unknownFormat) addrsize() int { return 0 } func makeBuf(d *Data, format dataFormat, name string, off Offset, data []byte) buf { return buf{d, d.order, format, name, off, data, nil} } func (b *buf) uint8() uint8 { if len(b.data) < 1 { b.error("underflow") return 0 } val := b.data[0] b.data = b.data[1:] b.off++ return val } func (b *buf) bytes(n int) []byte { if len(b.data) < n { b.error("underflow") return nil } data := b.data[0:n] b.data = b.data[n:] b.off += Offset(n) return data } func (b *buf) skip(n int) { b.bytes(n) } func (b *buf) string() string { for i := 0; i < len(b.data); i++ { if b.data[i] == 0 { s := string(b.data[0:i]) b.data = b.data[i+1:] b.off += Offset(i + 1) return s } } b.error("underflow") return "" } func (b *buf) uint16() uint16 { a := b.bytes(2) if a == nil { return 0 } return b.order.Uint16(a) } func (b *buf) uint32() uint32 { a := b.bytes(4) if a == nil { return 0 } return b.order.Uint32(a) } func (b *buf) uint64() uint64 { a := b.bytes(8) if a == nil { return 0 } return b.order.Uint64(a) } // Read a varint, which is 7 bits per byte, little endian. // the 0x80 bit means read another byte. func (b *buf) varint() (c uint64, bits uint) { for i := 0; i < len(b.data); i++ { byte := b.data[i] c |= uint64(byte&0x7F) << bits bits += 7 if byte&0x80 == 0 { b.off += Offset(i + 1) b.data = b.data[i+1:] return c, bits } } return 0, 0 } // Unsigned int is just a varint. func (b *buf) uint() uint64 { x, _ := b.varint() return x } // Signed int is a sign-extended varint. func (b *buf) int() int64 { ux, bits := b.varint() x := int64(ux) if x&(1<<(bits-1)) != 0 { x |= -1 << bits } return x } // Address-sized uint. func (b *buf) addr() uint64 { switch b.format.addrsize() { case 1: return uint64(b.uint8()) case 2: return uint64(b.uint16()) case 4: return uint64(b.uint32()) case 8: return uint64(b.uint64()) } b.error("unknown address size") return 0 } func (b *buf) error(s string) { if b.err == nil { b.data = nil b.err = DecodeError{b.name, b.off, s} } } type DecodeError struct { Name string Offset Offset Err string } func (e DecodeError) Error() string { return "decoding dwarf section " + e.Name + " at offset 0x" + strconv.FormatInt(int64(e.Offset), 16) + ": " + e.Err } go/src/pkg/debug/dwarf/const.go0100644000000000000000000003435612412656737016730 0ustar00rootroot00000000000000// Copyright 2009 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. // Constants package dwarf import "strconv" // An Attr identifies the attribute type in a DWARF Entry's Field. type Attr uint32 const ( AttrSibling Attr = 0x01 AttrLocation Attr = 0x02 AttrName Attr = 0x03 AttrOrdering Attr = 0x09 AttrByteSize Attr = 0x0B AttrBitOffset Attr = 0x0C AttrBitSize Attr = 0x0D AttrStmtList Attr = 0x10 AttrLowpc Attr = 0x11 AttrHighpc Attr = 0x12 AttrLanguage Attr = 0x13 AttrDiscr Attr = 0x15 AttrDiscrValue Attr = 0x16 AttrVisibility Attr = 0x17 AttrImport Attr = 0x18 AttrStringLength Attr = 0x19 AttrCommonRef Attr = 0x1A AttrCompDir Attr = 0x1B AttrConstValue Attr = 0x1C AttrContainingType Attr = 0x1D AttrDefaultValue Attr = 0x1E AttrInline Attr = 0x20 AttrIsOptional Attr = 0x21 AttrLowerBound Attr = 0x22 AttrProducer Attr = 0x25 AttrPrototyped Attr = 0x27 AttrReturnAddr Attr = 0x2A AttrStartScope Attr = 0x2C AttrStrideSize Attr = 0x2E AttrUpperBound Attr = 0x2F AttrAbstractOrigin Attr = 0x31 AttrAccessibility Attr = 0x32 AttrAddrClass Attr = 0x33 AttrArtificial Attr = 0x34 AttrBaseTypes Attr = 0x35 AttrCalling Attr = 0x36 AttrCount Attr = 0x37 AttrDataMemberLoc Attr = 0x38 AttrDeclColumn Attr = 0x39 AttrDeclFile Attr = 0x3A AttrDeclLine Attr = 0x3B AttrDeclaration Attr = 0x3C AttrDiscrList Attr = 0x3D AttrEncoding Attr = 0x3E AttrExternal Attr = 0x3F AttrFrameBase Attr = 0x40 AttrFriend Attr = 0x41 AttrIdentifierCase Attr = 0x42 AttrMacroInfo Attr = 0x43 AttrNamelistItem Attr = 0x44 AttrPriority Attr = 0x45 AttrSegment Attr = 0x46 AttrSpecification Attr = 0x47 AttrStaticLink Attr = 0x48 AttrType Attr = 0x49 AttrUseLocation Attr = 0x4A AttrVarParam Attr = 0x4B AttrVirtuality Attr = 0x4C AttrVtableElemLoc Attr = 0x4D AttrAllocated Attr = 0x4E AttrAssociated Attr = 0x4F AttrDataLocation Attr = 0x50 AttrStride Attr = 0x51 AttrEntrypc Attr = 0x52 AttrUseUTF8 Attr = 0x53 AttrExtension Attr = 0x54 AttrRanges Attr = 0x55 AttrTrampoline Attr = 0x56 AttrCallColumn Attr = 0x57 AttrCallFile Attr = 0x58 AttrCallLine Attr = 0x59 AttrDescription Attr = 0x5A ) var attrNames = [...]string{ AttrSibling: "Sibling", AttrLocation: "Location", AttrName: "Name", AttrOrdering: "Ordering", AttrByteSize: "ByteSize", AttrBitOffset: "BitOffset", AttrBitSize: "BitSize", AttrStmtList: "StmtList", AttrLowpc: "Lowpc", AttrHighpc: "Highpc", AttrLanguage: "Language", AttrDiscr: "Discr", AttrDiscrValue: "DiscrValue", AttrVisibility: "Visibility", AttrImport: "Import", AttrStringLength: "StringLength", AttrCommonRef: "CommonRef", AttrCompDir: "CompDir", AttrConstValue: "ConstValue", AttrContainingType: "ContainingType", AttrDefaultValue: "DefaultValue", AttrInline: "Inline", AttrIsOptional: "IsOptional", AttrLowerBound: "LowerBound", AttrProducer: "Producer", AttrPrototyped: "Prototyped", AttrReturnAddr: "ReturnAddr", AttrStartScope: "StartScope", AttrStrideSize: "StrideSize", AttrUpperBound: "UpperBound", AttrAbstractOrigin: "AbstractOrigin", AttrAccessibility: "Accessibility", AttrAddrClass: "AddrClass", AttrArtificial: "Artificial", AttrBaseTypes: "BaseTypes", AttrCalling: "Calling", AttrCount: "Count", AttrDataMemberLoc: "DataMemberLoc", AttrDeclColumn: "DeclColumn", AttrDeclFile: "DeclFile", AttrDeclLine: "DeclLine", AttrDeclaration: "Declaration", AttrDiscrList: "DiscrList", AttrEncoding: "Encoding", AttrExternal: "External", AttrFrameBase: "FrameBase", AttrFriend: "Friend", AttrIdentifierCase: "IdentifierCase", AttrMacroInfo: "MacroInfo", AttrNamelistItem: "NamelistItem", AttrPriority: "Priority", AttrSegment: "Segment", AttrSpecification: "Specification", AttrStaticLink: "StaticLink", AttrType: "Type", AttrUseLocation: "UseLocation", AttrVarParam: "VarParam", AttrVirtuality: "Virtuality", AttrVtableElemLoc: "VtableElemLoc", AttrAllocated: "Allocated", AttrAssociated: "Associated", AttrDataLocation: "DataLocation", AttrStride: "Stride", AttrEntrypc: "Entrypc", AttrUseUTF8: "UseUTF8", AttrExtension: "Extension", AttrRanges: "Ranges", AttrTrampoline: "Trampoline", AttrCallColumn: "CallColumn", AttrCallFile: "CallFile", AttrCallLine: "CallLine", AttrDescription: "Description", } func (a Attr) String() string { if int(a) < len(attrNames) { s := attrNames[a] if s != "" { return s } } return strconv.Itoa(int(a)) } func (a Attr) GoString() string { if int(a) < len(attrNames) { s := attrNames[a] if s != "" { return "dwarf.Attr" + s } } return "dwarf.Attr(" + strconv.FormatInt(int64(a), 10) + ")" } // A format is a DWARF data encoding format. type format uint32 const ( // value formats formAddr format = 0x01 formDwarfBlock2 format = 0x03 formDwarfBlock4 format = 0x04 formData2 format = 0x05 formData4 format = 0x06 formData8 format = 0x07 formString format = 0x08 formDwarfBlock format = 0x09 formDwarfBlock1 format = 0x0A formData1 format = 0x0B formFlag format = 0x0C formSdata format = 0x0D formStrp format = 0x0E formUdata format = 0x0F formRefAddr format = 0x10 formRef1 format = 0x11 formRef2 format = 0x12 formRef4 format = 0x13 formRef8 format = 0x14 formRefUdata format = 0x15 formIndirect format = 0x16 // The following are new in DWARF 4. formSecOffset format = 0x17 formExprloc format = 0x18 formFlagPresent format = 0x19 formRefSig8 format = 0x20 // Extensions for multi-file compression (.dwz) // http://www.dwarfstd.org/ShowIssue.php?issue=120604.1 formGnuRefAlt format = 0x1f20 formGnuStrpAlt format = 0x1f21 ) // A Tag is the classification (the type) of an Entry. type Tag uint32 const ( TagArrayType Tag = 0x01 TagClassType Tag = 0x02 TagEntryPoint Tag = 0x03 TagEnumerationType Tag = 0x04 TagFormalParameter Tag = 0x05 TagImportedDeclaration Tag = 0x08 TagLabel Tag = 0x0A TagLexDwarfBlock Tag = 0x0B TagMember Tag = 0x0D TagPointerType Tag = 0x0F TagReferenceType Tag = 0x10 TagCompileUnit Tag = 0x11 TagStringType Tag = 0x12 TagStructType Tag = 0x13 TagSubroutineType Tag = 0x15 TagTypedef Tag = 0x16 TagUnionType Tag = 0x17 TagUnspecifiedParameters Tag = 0x18 TagVariant Tag = 0x19 TagCommonDwarfBlock Tag = 0x1A TagCommonInclusion Tag = 0x1B TagInheritance Tag = 0x1C TagInlinedSubroutine Tag = 0x1D TagModule Tag = 0x1E TagPtrToMemberType Tag = 0x1F TagSetType Tag = 0x20 TagSubrangeType Tag = 0x21 TagWithStmt Tag = 0x22 TagAccessDeclaration Tag = 0x23 TagBaseType Tag = 0x24 TagCatchDwarfBlock Tag = 0x25 TagConstType Tag = 0x26 TagConstant Tag = 0x27 TagEnumerator Tag = 0x28 TagFileType Tag = 0x29 TagFriend Tag = 0x2A TagNamelist Tag = 0x2B TagNamelistItem Tag = 0x2C TagPackedType Tag = 0x2D TagSubprogram Tag = 0x2E TagTemplateTypeParameter Tag = 0x2F TagTemplateValueParameter Tag = 0x30 TagThrownType Tag = 0x31 TagTryDwarfBlock Tag = 0x32 TagVariantPart Tag = 0x33 TagVariable Tag = 0x34 TagVolatileType Tag = 0x35 // The following are new in DWARF 3. TagDwarfProcedure Tag = 0x36 TagRestrictType Tag = 0x37 TagInterfaceType Tag = 0x38 TagNamespace Tag = 0x39 TagImportedModule Tag = 0x3A TagUnspecifiedType Tag = 0x3B TagPartialUnit Tag = 0x3C TagImportedUnit Tag = 0x3D TagMutableType Tag = 0x3E // Later removed from DWARF. TagCondition Tag = 0x3F TagSharedType Tag = 0x40 // The following are new in DWARF 4. TagTypeUnit Tag = 0x41 TagRvalueReferenceType Tag = 0x42 TagTemplateAlias Tag = 0x43 ) var tagNames = [...]string{ TagArrayType: "ArrayType", TagClassType: "ClassType", TagEntryPoint: "EntryPoint", TagEnumerationType: "EnumerationType", TagFormalParameter: "FormalParameter", TagImportedDeclaration: "ImportedDeclaration", TagLabel: "Label", TagLexDwarfBlock: "LexDwarfBlock", TagMember: "Member", TagPointerType: "PointerType", TagReferenceType: "ReferenceType", TagCompileUnit: "CompileUnit", TagStringType: "StringType", TagStructType: "StructType", TagSubroutineType: "SubroutineType", TagTypedef: "Typedef", TagUnionType: "UnionType", TagUnspecifiedParameters: "UnspecifiedParameters", TagVariant: "Variant", TagCommonDwarfBlock: "CommonDwarfBlock", TagCommonInclusion: "CommonInclusion", TagInheritance: "Inheritance", TagInlinedSubroutine: "InlinedSubroutine", TagModule: "Module", TagPtrToMemberType: "PtrToMemberType", TagSetType: "SetType", TagSubrangeType: "SubrangeType", TagWithStmt: "WithStmt", TagAccessDeclaration: "AccessDeclaration", TagBaseType: "BaseType", TagCatchDwarfBlock: "CatchDwarfBlock", TagConstType: "ConstType", TagConstant: "Constant", TagEnumerator: "Enumerator", TagFileType: "FileType", TagFriend: "Friend", TagNamelist: "Namelist", TagNamelistItem: "NamelistItem", TagPackedType: "PackedType", TagSubprogram: "Subprogram", TagTemplateTypeParameter: "TemplateTypeParameter", TagTemplateValueParameter: "TemplateValueParameter", TagThrownType: "ThrownType", TagTryDwarfBlock: "TryDwarfBlock", TagVariantPart: "VariantPart", TagVariable: "Variable", TagVolatileType: "VolatileType", TagDwarfProcedure: "DwarfProcedure", TagRestrictType: "RestrictType", TagInterfaceType: "InterfaceType", TagNamespace: "Namespace", TagImportedModule: "ImportedModule", TagUnspecifiedType: "UnspecifiedType", TagPartialUnit: "PartialUnit", TagImportedUnit: "ImportedUnit", TagMutableType: "MutableType", TagCondition: "Condition", TagSharedType: "SharedType", TagTypeUnit: "TypeUnit", TagRvalueReferenceType: "RvalueReferenceType", TagTemplateAlias: "TemplateAlias", } func (t Tag) String() string { if int(t) < len(tagNames) { s := tagNames[t] if s != "" { return s } } return strconv.Itoa(int(t)) } func (t Tag) GoString() string { if int(t) < len(tagNames) { s := tagNames[t] if s != "" { return "dwarf.Tag" + s } } return "dwarf.Tag(" + strconv.FormatInt(int64(t), 10) + ")" } // Location expression operators. // The debug info encodes value locations like 8(R3) // as a sequence of these op codes. // This package does not implement full expressions; // the opPlusUconst operator is expected by the type parser. const ( opAddr = 0x03 /* 1 op, const addr */ opDeref = 0x06 opConst1u = 0x08 /* 1 op, 1 byte const */ opConst1s = 0x09 /* " signed */ opConst2u = 0x0A /* 1 op, 2 byte const */ opConst2s = 0x0B /* " signed */ opConst4u = 0x0C /* 1 op, 4 byte const */ opConst4s = 0x0D /* " signed */ opConst8u = 0x0E /* 1 op, 8 byte const */ opConst8s = 0x0F /* " signed */ opConstu = 0x10 /* 1 op, LEB128 const */ opConsts = 0x11 /* " signed */ opDup = 0x12 opDrop = 0x13 opOver = 0x14 opPick = 0x15 /* 1 op, 1 byte stack index */ opSwap = 0x16 opRot = 0x17 opXderef = 0x18 opAbs = 0x19 opAnd = 0x1A opDiv = 0x1B opMinus = 0x1C opMod = 0x1D opMul = 0x1E opNeg = 0x1F opNot = 0x20 opOr = 0x21 opPlus = 0x22 opPlusUconst = 0x23 /* 1 op, ULEB128 addend */ opShl = 0x24 opShr = 0x25 opShra = 0x26 opXor = 0x27 opSkip = 0x2F /* 1 op, signed 2-byte constant */ opBra = 0x28 /* 1 op, signed 2-byte constant */ opEq = 0x29 opGe = 0x2A opGt = 0x2B opLe = 0x2C opLt = 0x2D opNe = 0x2E opLit0 = 0x30 /* OpLitN = OpLit0 + N for N = 0..31 */ opReg0 = 0x50 /* OpRegN = OpReg0 + N for N = 0..31 */ opBreg0 = 0x70 /* 1 op, signed LEB128 constant */ /* OpBregN = OpBreg0 + N for N = 0..31 */ opRegx = 0x90 /* 1 op, ULEB128 register */ opFbreg = 0x91 /* 1 op, SLEB128 offset */ opBregx = 0x92 /* 2 op, ULEB128 reg; SLEB128 off */ opPiece = 0x93 /* 1 op, ULEB128 size of piece */ opDerefSize = 0x94 /* 1-byte size of data retrieved */ opXderefSize = 0x95 /* 1-byte size of data retrieved */ opNop = 0x96 /* next four new in Dwarf v3 */ opPushObjAddr = 0x97 opCall2 = 0x98 /* 2-byte offset of DIE */ opCall4 = 0x99 /* 4-byte offset of DIE */ opCallRef = 0x9A /* 4- or 8- byte offset of DIE */ /* 0xE0-0xFF reserved for user-specific */ ) // Basic type encodings -- the value for AttrEncoding in a TagBaseType Entry. const ( encAddress = 0x01 encBoolean = 0x02 encComplexFloat = 0x03 encFloat = 0x04 encSigned = 0x05 encSignedChar = 0x06 encUnsigned = 0x07 encUnsignedChar = 0x08 encImaginaryFloat = 0x09 ) go/src/pkg/debug/dwarf/entry.go0100644000000000000000000002233312412656737016733 0ustar00rootroot00000000000000// Copyright 2009 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. // DWARF debug information entry parser. // An entry is a sequence of data items of a given format. // The first word in the entry is an index into what DWARF // calls the ``abbreviation table.'' An abbreviation is really // just a type descriptor: it's an array of attribute tag/value format pairs. package dwarf import ( "errors" "strconv" ) // a single entry's description: a sequence of attributes type abbrev struct { tag Tag children bool field []afield } type afield struct { attr Attr fmt format } // a map from entry format ids to their descriptions type abbrevTable map[uint32]abbrev // ParseAbbrev returns the abbreviation table that starts at byte off // in the .debug_abbrev section. func (d *Data) parseAbbrev(off uint32) (abbrevTable, error) { if m, ok := d.abbrevCache[off]; ok { return m, nil } data := d.abbrev if off > uint32(len(data)) { data = nil } else { data = data[off:] } b := makeBuf(d, unknownFormat{}, "abbrev", 0, data) // Error handling is simplified by the buf getters // returning an endless stream of 0s after an error. m := make(abbrevTable) for { // Table ends with id == 0. id := uint32(b.uint()) if id == 0 { break } // Walk over attributes, counting. n := 0 b1 := b // Read from copy of b. b1.uint() b1.uint8() for { tag := b1.uint() fmt := b1.uint() if tag == 0 && fmt == 0 { break } n++ } if b1.err != nil { return nil, b1.err } // Walk over attributes again, this time writing them down. var a abbrev a.tag = Tag(b.uint()) a.children = b.uint8() != 0 a.field = make([]afield, n) for i := range a.field { a.field[i].attr = Attr(b.uint()) a.field[i].fmt = format(b.uint()) } b.uint() b.uint() m[id] = a } if b.err != nil { return nil, b.err } d.abbrevCache[off] = m return m, nil } // An entry is a sequence of attribute/value pairs. type Entry struct { Offset Offset // offset of Entry in DWARF info Tag Tag // tag (kind of Entry) Children bool // whether Entry is followed by children Field []Field } // A Field is a single attribute/value pair in an Entry. type Field struct { Attr Attr Val interface{} } // Val returns the value associated with attribute Attr in Entry, // or nil if there is no such attribute. // // A common idiom is to merge the check for nil return with // the check that the value has the expected dynamic type, as in: // v, ok := e.Val(AttrSibling).(int64); // func (e *Entry) Val(a Attr) interface{} { for _, f := range e.Field { if f.Attr == a { return f.Val } } return nil } // An Offset represents the location of an Entry within the DWARF info. // (See Reader.Seek.) type Offset uint32 // Entry reads a single entry from buf, decoding // according to the given abbreviation table. func (b *buf) entry(atab abbrevTable, ubase Offset) *Entry { off := b.off id := uint32(b.uint()) if id == 0 { return &Entry{} } a, ok := atab[id] if !ok { b.error("unknown abbreviation table index") return nil } e := &Entry{ Offset: off, Tag: a.tag, Children: a.children, Field: make([]Field, len(a.field)), } for i := range e.Field { e.Field[i].Attr = a.field[i].attr fmt := a.field[i].fmt if fmt == formIndirect { fmt = format(b.uint()) } var val interface{} switch fmt { default: b.error("unknown entry attr format 0x" + strconv.FormatInt(int64(fmt), 16)) // address case formAddr: val = b.addr() // block case formDwarfBlock1: val = b.bytes(int(b.uint8())) case formDwarfBlock2: val = b.bytes(int(b.uint16())) case formDwarfBlock4: val = b.bytes(int(b.uint32())) case formDwarfBlock: val = b.bytes(int(b.uint())) // constant case formData1: val = int64(b.uint8()) case formData2: val = int64(b.uint16()) case formData4: val = int64(b.uint32()) case formData8: val = int64(b.uint64()) case formSdata: val = int64(b.int()) case formUdata: val = int64(b.uint()) // flag case formFlag: val = b.uint8() == 1 // New in DWARF 4. case formFlagPresent: // The attribute is implicitly indicated as present, and no value is // encoded in the debugging information entry itself. val = true // reference to other entry case formRefAddr: vers := b.format.version() if vers == 0 { b.error("unknown version for DW_FORM_ref_addr") } else if vers == 2 { val = Offset(b.addr()) } else { is64, known := b.format.dwarf64() if !known { b.error("unknown size for DW_FORM_ref_addr") } else if is64 { val = Offset(b.uint64()) } else { val = Offset(b.uint32()) } } case formRef1: val = Offset(b.uint8()) + ubase case formRef2: val = Offset(b.uint16()) + ubase case formRef4: val = Offset(b.uint32()) + ubase case formRef8: val = Offset(b.uint64()) + ubase case formRefUdata: val = Offset(b.uint()) + ubase // string case formString: val = b.string() case formStrp: off := b.uint32() // offset into .debug_str if b.err != nil { return nil } b1 := makeBuf(b.dwarf, unknownFormat{}, "str", 0, b.dwarf.str) b1.skip(int(off)) val = b1.string() if b1.err != nil { b.err = b1.err return nil } // lineptr, loclistptr, macptr, rangelistptr // New in DWARF 4, but clang can generate them with -gdwarf-2. // Section reference, replacing use of formData4 and formData8. case formSecOffset, formGnuRefAlt, formGnuStrpAlt: is64, known := b.format.dwarf64() if !known { b.error("unknown size for form 0x" + strconv.FormatInt(int64(fmt), 16)) } else if is64 { val = int64(b.uint64()) } else { val = int64(b.uint32()) } // exprloc // New in DWARF 4. case formExprloc: val = b.bytes(int(b.uint())) // reference // New in DWARF 4. case formRefSig8: // 64-bit type signature. val = b.uint64() } e.Field[i].Val = val } if b.err != nil { return nil } return e } // A Reader allows reading Entry structures from a DWARF ``info'' section. // The Entry structures are arranged in a tree. The Reader's Next function // return successive entries from a pre-order traversal of the tree. // If an entry has children, its Children field will be true, and the children // follow, terminated by an Entry with Tag 0. type Reader struct { b buf d *Data err error unit int lastChildren bool // .Children of last entry returned by Next lastSibling Offset // .Val(AttrSibling) of last entry returned by Next } // Reader returns a new Reader for Data. // The reader is positioned at byte offset 0 in the DWARF ``info'' section. func (d *Data) Reader() *Reader { r := &Reader{d: d} r.Seek(0) return r } // Seek positions the Reader at offset off in the encoded entry stream. // Offset 0 can be used to denote the first entry. func (r *Reader) Seek(off Offset) { d := r.d r.err = nil r.lastChildren = false if off == 0 { if len(d.unit) == 0 { return } u := &d.unit[0] r.unit = 0 r.b = makeBuf(r.d, u, "info", u.off, u.data) return } // TODO(rsc): binary search (maybe a new package) var i int var u *unit for i = range d.unit { u = &d.unit[i] if u.off <= off && off < u.off+Offset(len(u.data)) { r.unit = i r.b = makeBuf(r.d, u, "info", off, u.data[off-u.off:]) return } } r.err = errors.New("offset out of range") } // maybeNextUnit advances to the next unit if this one is finished. func (r *Reader) maybeNextUnit() { for len(r.b.data) == 0 && r.unit+1 < len(r.d.unit) { r.unit++ u := &r.d.unit[r.unit] r.b = makeBuf(r.d, u, "info", u.off, u.data) } } // Next reads the next entry from the encoded entry stream. // It returns nil, nil when it reaches the end of the section. // It returns an error if the current offset is invalid or the data at the // offset cannot be decoded as a valid Entry. func (r *Reader) Next() (*Entry, error) { if r.err != nil { return nil, r.err } r.maybeNextUnit() if len(r.b.data) == 0 { return nil, nil } u := &r.d.unit[r.unit] e := r.b.entry(u.atable, u.base) if r.b.err != nil { r.err = r.b.err return nil, r.err } if e != nil { r.lastChildren = e.Children if r.lastChildren { r.lastSibling, _ = e.Val(AttrSibling).(Offset) } } else { r.lastChildren = false } return e, nil } // SkipChildren skips over the child entries associated with // the last Entry returned by Next. If that Entry did not have // children or Next has not been called, SkipChildren is a no-op. func (r *Reader) SkipChildren() { if r.err != nil || !r.lastChildren { return } // If the last entry had a sibling attribute, // that attribute gives the offset of the next // sibling, so we can avoid decoding the // child subtrees. if r.lastSibling >= r.b.off { r.Seek(r.lastSibling) return } for { e, err := r.Next() if err != nil || e == nil || e.Tag == 0 { break } if e.Children { r.SkipChildren() } } } // clone returns a copy of the reader. This is used by the typeReader // interface. func (r *Reader) clone() typeReader { return r.d.Reader() } // offset returns the current buffer offset. This is used by the // typeReader interface. func (r *Reader) offset() Offset { return r.b.off } go/src/pkg/debug/dwarf/open.go0100644000000000000000000000515512412656737016536 0ustar00rootroot00000000000000// Copyright 2009 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 dwarf provides access to DWARF debugging information loaded from // executable files, as defined in the DWARF 2.0 Standard at // http://dwarfstd.org/doc/dwarf-2.0.0.pdf package dwarf import "encoding/binary" // Data represents the DWARF debugging information // loaded from an executable file (for example, an ELF or Mach-O executable). type Data struct { // raw data abbrev []byte aranges []byte frame []byte info []byte line []byte pubnames []byte ranges []byte str []byte // parsed data abbrevCache map[uint32]abbrevTable order binary.ByteOrder typeCache map[Offset]Type typeSigs map[uint64]*typeUnit unit []unit } // New returns a new Data object initialized from the given parameters. // Rather than calling this function directly, clients should typically use // the DWARF method of the File type of the appropriate package debug/elf, // debug/macho, or debug/pe. // // The []byte arguments are the data from the corresponding debug section // in the object file; for example, for an ELF object, abbrev is the contents of // the ".debug_abbrev" section. func New(abbrev, aranges, frame, info, line, pubnames, ranges, str []byte) (*Data, error) { d := &Data{ abbrev: abbrev, aranges: aranges, frame: frame, info: info, line: line, pubnames: pubnames, ranges: ranges, str: str, abbrevCache: make(map[uint32]abbrevTable), typeCache: make(map[Offset]Type), typeSigs: make(map[uint64]*typeUnit), } // Sniff .debug_info to figure out byte order. // bytes 4:6 are the version, a tiny 16-bit number (1, 2, 3). if len(d.info) < 6 { return nil, DecodeError{"info", Offset(len(d.info)), "too short"} } x, y := d.info[4], d.info[5] switch { case x == 0 && y == 0: return nil, DecodeError{"info", 4, "unsupported version 0"} case x == 0: d.order = binary.BigEndian case y == 0: d.order = binary.LittleEndian default: return nil, DecodeError{"info", 4, "cannot determine byte order"} } u, err := d.parseUnits() if err != nil { return nil, err } d.unit = u return d, nil } // AddTypes will add one .debug_types section to the DWARF data. A // typical object with DWARF version 4 debug info will have multiple // .debug_types sections. The name is used for error reporting only, // and serves to distinguish one .debug_types section from another. func (d *Data) AddTypes(name string, types []byte) error { return d.parseTypes(name, types) } go/src/pkg/debug/dwarf/testdata0040755000000000000000000000000012412656737016775 5ustar00rootroot00000000000000go/src/pkg/debug/dwarf/testdata/typedef.c0100644000000000000000000000404412412656737020657 0ustar00rootroot00000000000000// Copyright 2009 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. /* Linux ELF: gcc -gdwarf-2 -m64 -c typedef.c && gcc -gdwarf-2 -m64 -o typedef.elf typedef.o OS X Mach-O: gcc -gdwarf-2 -m64 -c typedef.c -o typedef.macho */ #include typedef volatile int* t_ptr_volatile_int; typedef const char *t_ptr_const_char; typedef long t_long; typedef unsigned short t_ushort; typedef int t_func_int_of_float_double(float, double); typedef int (*t_ptr_func_int_of_float_double)(float, double); typedef int (*t_ptr_func_int_of_float_complex)(float complex); typedef int (*t_ptr_func_int_of_double_complex)(double complex); typedef int (*t_ptr_func_int_of_long_double_complex)(long double complex); typedef int *t_func_ptr_int_of_char_schar_uchar(char, signed char, unsigned char); typedef void t_func_void_of_char(char); typedef void t_func_void_of_void(void); typedef void t_func_void_of_ptr_char_dots(char*, ...); typedef struct my_struct { volatile int vi; char x : 1; int y : 4; int z[0]; long long array[40]; int zz[0]; } t_my_struct; typedef struct my_struct1 { int zz [1]; } t_my_struct1; typedef union my_union { volatile int vi; char x : 1; int y : 4; long long array[40]; } t_my_union; typedef enum my_enum { e1 = 1, e2 = 2, e3 = -5, e4 = 1000000000000000LL, } t_my_enum; typedef struct list t_my_list; struct list { short val; t_my_list *next; }; typedef struct tree { struct tree *left, *right; unsigned long long val; } t_my_tree; t_ptr_volatile_int *a2; t_ptr_const_char **a3a; t_long *a4; t_ushort *a5; t_func_int_of_float_double *a6; t_ptr_func_int_of_float_double *a7; t_func_ptr_int_of_char_schar_uchar *a8; t_func_void_of_char *a9; t_func_void_of_void *a10; t_func_void_of_ptr_char_dots *a11; t_my_struct *a12; t_my_struct1 *a12a; t_my_union *a12b; t_my_enum *a13; t_my_list *a14; t_my_tree *a15; t_ptr_func_int_of_float_complex *a16; t_ptr_func_int_of_double_complex *a17; t_ptr_func_int_of_long_double_complex *a18; int main() { return 0; } go/src/pkg/debug/dwarf/testdata/typedef.elf0100755000000000000000000003024012412656737021203 0ustar00rootroot00000000000000ELF>@@@8 @&#@@@@@88@8@@@\\ `` @@`@`TT@T@DDPtd@@$$QtdRtd``/lib64/ld-linux-x86-64.so.2GNUGNUCintU[`ZrdC ;C C 4%+C; ; Mgg ` m tCzx'  ` m   ` Hvi>#x`#yC#z# 0#zz!G#C--@@-'CV-"#{zz${#C-%a2@&vi'>x(`y)C*00+,e1e2e3{e41Z3_3Cval5C#;6J#+9/:#:#val;#Pa& @`-a3a? `Ja4@ x`ga5A, `ya6BG H`a7Cb ``a8D} `Ba9E `{a10F `a11G h`a12H P`V@I `J$ 8`a13K@ (`a14LJ `a15Mr p`a16N X`a17O 0`a18P `% : ; I I5I$ > &I$ > ' I I '  '   : ;  : ; I8  : ; I 8  : ; I8 I!I$ > !I/  : ;  : ;  : ; I : ; I  : ; I : ; ( .? : ; I@4: ; I?  4: ; I?  <  typedef.c @KYt_ptr_const_chart_func_void_of_void/home/rscleftt_ptr_func_int_of_long_double_complext_longlong long unsigned intunsigned chart_my_struct1rightshort unsigned intarrayt_func_int_of_float_doublet_ptr_func_int_of_float_complexcomplex long doublet_ptr_func_int_of_double_complexmaint_func_void_of_chart_ptr_func_int_of_float_doublet_my_listt_ushortt_func_void_of_ptr_char_dotsa12bcomplex floatt_my_structlong long intGNU C 4.4.3t_ptr_volatile_intshort inttypedef.ccomplex doublet_my_enumt_func_ptr_int_of_char_schar_uchart_my_treet_my_unionnexta12aww v.symtab.strtab.shstrtab.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bss.comment.debug_aranges.debug_pubnames.debug_info.debug_abbrev.debug_line.debug_str.debug_loc8@8#T@T 1t@t$H@Do@N @HV@8^oP@PkoX@X zx@x@ @@ @@@@$@|`(`(8`8@`@`` ``0#;0 k)s7Y@C0ENL*Y&p%6 x.(8@T@t@@@@@P@ X@ x@ @ @ @@@@@@`(`8`@````` !" @`*(`88`E0@[`j `x@ `X@8`p@```@` `(`@-@4 C W0`[@a8`f@`iH`lP`@`X```h``0`@p``x``````` ````@ " @call_gmon_startcrtstuff.c__CTOR_LIST____DTOR_LIST____JCR_LIST____do_global_dtors_auxcompleted.7382dtor_idx.7384frame_dummy__CTOR_END____FRAME_END____JCR_END____do_global_ctors_auxtypedef.c_GLOBAL_OFFSET_TABLE___init_array_end__init_array_start_DYNAMICdata_starta13__libc_csu_fini_start__gmon_start___Jv_RegisterClassesa17_finia12ba2a6__libc_start_main@@GLIBC_2.2.5a12_IO_stdin_used__data_starta16a7a11__dso_handle__DTOR_END____libc_csu_inita15__bss_starta4a8_enda12aa3aa9a10a14_edataa18a5main_initgo/src/pkg/debug/dwarf/testdata/typedef.elf40100644000000000000000000002243012412656737021266 0ustar00rootroot00000000000000ELF> @@%"  UH]X!;y9N:N:Nval;TWIzcv:74Bval5B6IO3>3#, e1 e2 e3{ e4$(A\ @&X vi'X x(] y)d *kdint{{'P31Y#5zz$5EELint_uxHrvirxwy~z zz!H~int~'~E8>CintU[`rCCC"(C77 Ibb`hoC``"_ux%31Y+$(A\13#3Izcv:7b -a3a?} Ja4@ ga5A ya6B a7C a8D >a9E va10F: a11GU a12Hp  I  J a13K a14L a15M "a16N  a17O' a18PB A  : ;  : ; I8  : ; I8  I$ > : ; I : ; (  : ;  : ; I : ; I : ; I5I$ > I!I/  : ;  : ; I 8  : ; I8!I% &I'II'': ; I .?: ; I@4: ; I? 4: ; I?, <  typedef.c KYrightnexta12at_ptr_const_chart_func_void_of_voidleftt_ptr_func_int_of_long_double_complext_longfloatlong long unsigned intunsigned chart_my_struct1short unsigned intarraymy_structdoublet_func_int_of_float_doublet_ptr_func_int_of_float_complexmy_struct1complex long doublet_ptr_func_int_of_double_complex/home/iant/go3/src/pkg/debug/dwarf/testdatat_func_void_of_chart_ushortt_ptr_func_int_of_float_doublet_my_listcharmy_enumGNU C 4.8.0 20120420 (experimental)t_func_void_of_ptr_char_dotsa12bcomplex floatlistt_my_structsizetypemainlong long intt_ptr_volatile_intshort inttypedef.ccomplex doublet_my_enumlong intt_func_ptr_int_of_char_schar_uchart_my_treesigned chart_my_unionmy_uniontreeGCC: (GNU) 4.8.0 20120420 (experimental)zRx  AC F .symtab.strtab.shstrtab.text.data.bss.rela.debug_types.rela.debug_info.debug_abbrev.rela.debug_aranges.rela.debug_line.debug_str.comment.note.GNU-stack.rela.eh_framewt.e921e83ba8c10e79wt.497a63f1763a8137wt.f5f2abb4d23323dfwt.24d8288941c15c8ewt.3300a31ffb31b759wt.5fa97504030f780f@#H#P#X#`#h#p !|'|1|\,# 1[,0# 13B,H#1u,#1T,`#1S,#CI>#O^b0]$0#v @q$#0[ 0: *d h 8%#  -8$ HW     !$(,05:>BFJNR typedef.ca2a3aa4a5a6a7a8a9a10a11a12a12aa12ba13a14a15a16a17a18main   * 56 W m   6 E WP       M ` ~ 6 (   O (   Z z  ( 6   a D! ) . DK c h `u z  g   # k :: ? k r w p !  ( 6    z  W m# 2 1<D Zu 2!M"h#w $ %&'()*:+ - go/src/pkg/debug/dwarf/testdata/typedef.macho0100644000000000000000000001164012412656737021524 0ustar00rootroot00000000000000` b b __text__TEXT__debug_frame__DWARF<__debug_info__DWARFTQ__debug_abbrev__DWARF-%__debug_aranges__DWARF R__debug_macinfo__DWARF R__debug_loc__DWARF R__debug_pubnames__DWARF R__debug_pubtypes__DWARF __debug_str__DWARF __debug_ranges__DWARF __data__DATA __eh_frame__TEXT H h__debug_line__DWARF {`__debug_inlined__DWARF[ ,t PUHEEEE]x $ M4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)typedef.c/Users/rsc/g/go/src/pkg/debug/dwarf/testdata/intmainmainSVt_ptr_volatile_inta2> char  (t_ptr_const_char0Ha3aP? long intnt_longza4@ short unsigned intt_ushorta5A floatdouble   t_func_int_of_float_doublea62B Ot_ptr_func_int_of_float_doubleWa7}C signed charunsigned char    t_func_ptr_int_of_char_schar_uchara8D  / #t_func_void_of_char/a9JE  gt_func_void_of_voidia10F   t_func_void_of_ptr_char_dotsa11G  long long int, 'my_structHvi#x#y#z#array #zz!#,t_my_struct#a12H my_struct1#zz$#t_my_struct1&a12a I xmy_union@&vi'#x(#y)#array*#*t_my_union,xa12bJ my_enum,e1e2e3{e4zt_my_enum3a13K short int9list3val5#nextJ6#t_my_list99a14JL long long unsigned inttree9lefth:#righth:#valp;#t_my_tree<a15M complex float  t_ptr_func_int_of_float_complexa16DN complex double  btt_ptr_func_int_of_double_complexa17O complex long double  t_ptr_func_int_of_long_double_complexa18.P % R$>  .@: ; ' I? @  5I : ; I : ; I: ; 4I? : ;  &I : ; I' I ' ' $ > I!I/  : ;  I: ; 8  I: ; 8  : ;  : ;  : ; ( Qa10a11a12maina12aa12ba13Ra14a15La16a176a18a2Xa3aa5:a6a4a7Ra9a8QzRx , wK /Users/rsc/g/go/src/pkg/debug/dwarf/testdata/typedef.c f  D  Z  ` "_Gf ^ pdXj a (-27=CHMRW\  $_main_a2_a3a_a4_a5_a6_a7_a8_a9_a10_a11_a12_a12a_a12b_a13_a14_a15_a16_a17_a18_main.ehEH_frame0go/src/pkg/debug/dwarf/type.go0100644000000000000000000003661112412656737016557 0ustar00rootroot00000000000000// Copyright 2009 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. // DWARF type information structures. // The format is heavily biased toward C, but for simplicity // the String methods use a pseudo-Go syntax. package dwarf import "strconv" // A Type conventionally represents a pointer to any of the // specific Type structures (CharType, StructType, etc.). type Type interface { Common() *CommonType String() string Size() int64 } // A CommonType holds fields common to multiple types. // If a field is not known or not applicable for a given type, // the zero value is used. type CommonType struct { ByteSize int64 // size of value of this type, in bytes Name string // name that can be used to refer to type } func (c *CommonType) Common() *CommonType { return c } func (c *CommonType) Size() int64 { return c.ByteSize } // Basic types // A BasicType holds fields common to all basic types. type BasicType struct { CommonType BitSize int64 BitOffset int64 } func (b *BasicType) Basic() *BasicType { return b } func (t *BasicType) String() string { if t.Name != "" { return t.Name } return "?" } // A CharType represents a signed character type. type CharType struct { BasicType } // A UcharType represents an unsigned character type. type UcharType struct { BasicType } // An IntType represents a signed integer type. type IntType struct { BasicType } // A UintType represents an unsigned integer type. type UintType struct { BasicType } // A FloatType represents a floating point type. type FloatType struct { BasicType } // A ComplexType represents a complex floating point type. type ComplexType struct { BasicType } // A BoolType represents a boolean type. type BoolType struct { BasicType } // An AddrType represents a machine address type. type AddrType struct { BasicType } // qualifiers // A QualType represents a type that has the C/C++ "const", "restrict", or "volatile" qualifier. type QualType struct { CommonType Qual string Type Type } func (t *QualType) String() string { return t.Qual + " " + t.Type.String() } func (t *QualType) Size() int64 { return t.Type.Size() } // An ArrayType represents a fixed size array type. type ArrayType struct { CommonType Type Type StrideBitSize int64 // if > 0, number of bits to hold each element Count int64 // if == -1, an incomplete array, like char x[]. } func (t *ArrayType) String() string { return "[" + strconv.FormatInt(t.Count, 10) + "]" + t.Type.String() } func (t *ArrayType) Size() int64 { return t.Count * t.Type.Size() } // A VoidType represents the C void type. type VoidType struct { CommonType } func (t *VoidType) String() string { return "void" } // A PtrType represents a pointer type. type PtrType struct { CommonType Type Type } func (t *PtrType) String() string { return "*" + t.Type.String() } // A StructType represents a struct, union, or C++ class type. type StructType struct { CommonType StructName string Kind string // "struct", "union", or "class". Field []*StructField Incomplete bool // if true, struct, union, class is declared but not defined } // A StructField represents a field in a struct, union, or C++ class type. type StructField struct { Name string Type Type ByteOffset int64 ByteSize int64 BitOffset int64 // within the ByteSize bytes at ByteOffset BitSize int64 // zero if not a bit field } func (t *StructType) String() string { if t.StructName != "" { return t.Kind + " " + t.StructName } return t.Defn() } func (t *StructType) Defn() string { s := t.Kind if t.StructName != "" { s += " " + t.StructName } if t.Incomplete { s += " /*incomplete*/" return s } s += " {" for i, f := range t.Field { if i > 0 { s += "; " } s += f.Name + " " + f.Type.String() s += "@" + strconv.FormatInt(f.ByteOffset, 10) if f.BitSize > 0 { s += " : " + strconv.FormatInt(f.BitSize, 10) s += "@" + strconv.FormatInt(f.BitOffset, 10) } } s += "}" return s } // An EnumType represents an enumerated type. // The only indication of its native integer type is its ByteSize // (inside CommonType). type EnumType struct { CommonType EnumName string Val []*EnumValue } // An EnumValue represents a single enumeration value. type EnumValue struct { Name string Val int64 } func (t *EnumType) String() string { s := "enum" if t.EnumName != "" { s += " " + t.EnumName } s += " {" for i, v := range t.Val { if i > 0 { s += "; " } s += v.Name + "=" + strconv.FormatInt(v.Val, 10) } s += "}" return s } // A FuncType represents a function type. type FuncType struct { CommonType ReturnType Type ParamType []Type } func (t *FuncType) String() string { s := "func(" for i, t := range t.ParamType { if i > 0 { s += ", " } s += t.String() } s += ")" if t.ReturnType != nil { s += " " + t.ReturnType.String() } return s } // A DotDotDotType represents the variadic ... function parameter. type DotDotDotType struct { CommonType } func (t *DotDotDotType) String() string { return "..." } // A TypedefType represents a named type. type TypedefType struct { CommonType Type Type } func (t *TypedefType) String() string { return t.Name } func (t *TypedefType) Size() int64 { return t.Type.Size() } // typeReader is used to read from either the info section or the // types section. type typeReader interface { Seek(Offset) Next() (*Entry, error) clone() typeReader offset() Offset } // Type reads the type at off in the DWARF ``info'' section. func (d *Data) Type(off Offset) (Type, error) { return d.readType("info", d.Reader(), off, d.typeCache) } // readType reads a type from r at off of name using and updating a // type cache. func (d *Data) readType(name string, r typeReader, off Offset, typeCache map[Offset]Type) (Type, error) { if t, ok := typeCache[off]; ok { return t, nil } r.Seek(off) e, err := r.Next() if err != nil { return nil, err } if e == nil || e.Offset != off { return nil, DecodeError{name, off, "no type at offset"} } // Parse type from Entry. // Must always set typeCache[off] before calling // d.Type recursively, to handle circular types correctly. var typ Type nextDepth := 0 // Get next child; set err if error happens. next := func() *Entry { if !e.Children { return nil } // Only return direct children. // Skip over composite entries that happen to be nested // inside this one. Most DWARF generators wouldn't generate // such a thing, but clang does. // See golang.org/issue/6472. for { kid, err1 := r.Next() if err1 != nil { err = err1 return nil } if kid == nil { err = DecodeError{name, r.offset(), "unexpected end of DWARF entries"} return nil } if kid.Tag == 0 { if nextDepth > 0 { nextDepth-- continue } return nil } if kid.Children { nextDepth++ } if nextDepth > 0 { continue } return kid } } // Get Type referred to by Entry's AttrType field. // Set err if error happens. Not having a type is an error. typeOf := func(e *Entry) Type { tval := e.Val(AttrType) var t Type switch toff := tval.(type) { case Offset: if t, err = d.readType(name, r.clone(), toff, typeCache); err != nil { return nil } case uint64: if t, err = d.sigToType(toff); err != nil { return nil } default: // It appears that no Type means "void". return new(VoidType) } return t } switch e.Tag { case TagArrayType: // Multi-dimensional array. (DWARF v2 §5.4) // Attributes: // AttrType:subtype [required] // AttrStrideSize: size in bits of each element of the array // AttrByteSize: size of entire array // Children: // TagSubrangeType or TagEnumerationType giving one dimension. // dimensions are in left to right order. t := new(ArrayType) typ = t typeCache[off] = t if t.Type = typeOf(e); err != nil { goto Error } t.StrideBitSize, _ = e.Val(AttrStrideSize).(int64) // Accumulate dimensions, ndim := 0 for kid := next(); kid != nil; kid = next() { // TODO(rsc): Can also be TagEnumerationType // but haven't seen that in the wild yet. switch kid.Tag { case TagSubrangeType: max, ok := kid.Val(AttrUpperBound).(int64) if !ok { max = -2 // Count == -1, as in x[]. } if ndim == 0 { t.Count = max + 1 } else { // Multidimensional array. // Create new array type underneath this one. t.Type = &ArrayType{Type: t.Type, Count: max + 1} } ndim++ case TagEnumerationType: err = DecodeError{name, kid.Offset, "cannot handle enumeration type as array bound"} goto Error } } if ndim == 0 { // LLVM generates this for x[]. t.Count = -1 } case TagBaseType: // Basic type. (DWARF v2 §5.1) // Attributes: // AttrName: name of base type in programming language of the compilation unit [required] // AttrEncoding: encoding value for type (encFloat etc) [required] // AttrByteSize: size of type in bytes [required] // AttrBitOffset: for sub-byte types, size in bits // AttrBitSize: for sub-byte types, bit offset of high order bit in the AttrByteSize bytes name, _ := e.Val(AttrName).(string) enc, ok := e.Val(AttrEncoding).(int64) if !ok { err = DecodeError{name, e.Offset, "missing encoding attribute for " + name} goto Error } switch enc { default: err = DecodeError{name, e.Offset, "unrecognized encoding attribute value"} goto Error case encAddress: typ = new(AddrType) case encBoolean: typ = new(BoolType) case encComplexFloat: typ = new(ComplexType) case encFloat: typ = new(FloatType) case encSigned: typ = new(IntType) case encUnsigned: typ = new(UintType) case encSignedChar: typ = new(CharType) case encUnsignedChar: typ = new(UcharType) } typeCache[off] = typ t := typ.(interface { Basic() *BasicType }).Basic() t.Name = name t.BitSize, _ = e.Val(AttrBitSize).(int64) t.BitOffset, _ = e.Val(AttrBitOffset).(int64) case TagClassType, TagStructType, TagUnionType: // Structure, union, or class type. (DWARF v2 §5.5) // Attributes: // AttrName: name of struct, union, or class // AttrByteSize: byte size [required] // AttrDeclaration: if true, struct/union/class is incomplete // Children: // TagMember to describe one member. // AttrName: name of member [required] // AttrType: type of member [required] // AttrByteSize: size in bytes // AttrBitOffset: bit offset within bytes for bit fields // AttrBitSize: bit size for bit fields // AttrDataMemberLoc: location within struct [required for struct, class] // There is much more to handle C++, all ignored for now. t := new(StructType) typ = t typeCache[off] = t switch e.Tag { case TagClassType: t.Kind = "class" case TagStructType: t.Kind = "struct" case TagUnionType: t.Kind = "union" } t.StructName, _ = e.Val(AttrName).(string) t.Incomplete = e.Val(AttrDeclaration) != nil t.Field = make([]*StructField, 0, 8) var lastFieldType Type var lastFieldBitOffset int64 for kid := next(); kid != nil; kid = next() { if kid.Tag == TagMember { f := new(StructField) if f.Type = typeOf(kid); err != nil { goto Error } switch loc := kid.Val(AttrDataMemberLoc).(type) { case []byte: // TODO: Should have original compilation // unit here, not unknownFormat. b := makeBuf(d, unknownFormat{}, "location", 0, loc) if b.uint8() != opPlusUconst { err = DecodeError{name, kid.Offset, "unexpected opcode"} goto Error } f.ByteOffset = int64(b.uint()) if b.err != nil { err = b.err goto Error } case int64: f.ByteOffset = loc } haveBitOffset := false f.Name, _ = kid.Val(AttrName).(string) f.ByteSize, _ = kid.Val(AttrByteSize).(int64) f.BitOffset, haveBitOffset = kid.Val(AttrBitOffset).(int64) f.BitSize, _ = kid.Val(AttrBitSize).(int64) t.Field = append(t.Field, f) bito := f.BitOffset if !haveBitOffset { bito = f.ByteOffset * 8 } if bito == lastFieldBitOffset && t.Kind != "union" { // Last field was zero width. Fix array length. // (DWARF writes out 0-length arrays as if they were 1-length arrays.) zeroArray(lastFieldType) } lastFieldType = f.Type lastFieldBitOffset = bito } } if t.Kind != "union" { b, ok := e.Val(AttrByteSize).(int64) if ok && b*8 == lastFieldBitOffset { // Final field must be zero width. Fix array length. zeroArray(lastFieldType) } } case TagConstType, TagVolatileType, TagRestrictType: // Type modifier (DWARF v2 §5.2) // Attributes: // AttrType: subtype t := new(QualType) typ = t typeCache[off] = t if t.Type = typeOf(e); err != nil { goto Error } switch e.Tag { case TagConstType: t.Qual = "const" case TagRestrictType: t.Qual = "restrict" case TagVolatileType: t.Qual = "volatile" } case TagEnumerationType: // Enumeration type (DWARF v2 §5.6) // Attributes: // AttrName: enum name if any // AttrByteSize: bytes required to represent largest value // Children: // TagEnumerator: // AttrName: name of constant // AttrConstValue: value of constant t := new(EnumType) typ = t typeCache[off] = t t.EnumName, _ = e.Val(AttrName).(string) t.Val = make([]*EnumValue, 0, 8) for kid := next(); kid != nil; kid = next() { if kid.Tag == TagEnumerator { f := new(EnumValue) f.Name, _ = kid.Val(AttrName).(string) f.Val, _ = kid.Val(AttrConstValue).(int64) n := len(t.Val) if n >= cap(t.Val) { val := make([]*EnumValue, n, n*2) copy(val, t.Val) t.Val = val } t.Val = t.Val[0 : n+1] t.Val[n] = f } } case TagPointerType: // Type modifier (DWARF v2 §5.2) // Attributes: // AttrType: subtype [not required! void* has no AttrType] // AttrAddrClass: address class [ignored] t := new(PtrType) typ = t typeCache[off] = t if e.Val(AttrType) == nil { t.Type = &VoidType{} break } t.Type = typeOf(e) case TagSubroutineType: // Subroutine type. (DWARF v2 §5.7) // Attributes: // AttrType: type of return value if any // AttrName: possible name of type [ignored] // AttrPrototyped: whether used ANSI C prototype [ignored] // Children: // TagFormalParameter: typed parameter // AttrType: type of parameter // TagUnspecifiedParameter: final ... t := new(FuncType) typ = t typeCache[off] = t if t.ReturnType = typeOf(e); err != nil { goto Error } t.ParamType = make([]Type, 0, 8) for kid := next(); kid != nil; kid = next() { var tkid Type switch kid.Tag { default: continue case TagFormalParameter: if tkid = typeOf(kid); err != nil { goto Error } case TagUnspecifiedParameters: tkid = &DotDotDotType{} } t.ParamType = append(t.ParamType, tkid) } case TagTypedef: // Typedef (DWARF v2 §5.3) // Attributes: // AttrName: name [required] // AttrType: type definition [required] t := new(TypedefType) typ = t typeCache[off] = t t.Name, _ = e.Val(AttrName).(string) t.Type = typeOf(e) } if err != nil { goto Error } { b, ok := e.Val(AttrByteSize).(int64) if !ok { b = -1 } typ.Common().ByteSize = b } return typ, nil Error: // If the parse fails, take the type out of the cache // so that the next call with this offset doesn't hit // the cache and return success. delete(typeCache, off) return nil, err } func zeroArray(t Type) { for { at, ok := t.(*ArrayType) if !ok { break } at.Count = 0 t = at.Type } } go/src/pkg/debug/dwarf/type_test.go0100644000000000000000000000742412412656737017616 0ustar00rootroot00000000000000// Copyright 2009 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 dwarf_test import ( . "debug/dwarf" "debug/elf" "debug/macho" "testing" ) var typedefTests = map[string]string{ "t_ptr_volatile_int": "*volatile int", "t_ptr_const_char": "*const char", "t_long": "long int", "t_ushort": "short unsigned int", "t_func_int_of_float_double": "func(float, double) int", "t_ptr_func_int_of_float_double": "*func(float, double) int", "t_ptr_func_int_of_float_complex": "*func(complex float) int", "t_ptr_func_int_of_double_complex": "*func(complex double) int", "t_ptr_func_int_of_long_double_complex": "*func(complex long double) int", "t_func_ptr_int_of_char_schar_uchar": "func(char, signed char, unsigned char) *int", "t_func_void_of_char": "func(char) void", "t_func_void_of_void": "func() void", "t_func_void_of_ptr_char_dots": "func(*char, ...) void", "t_my_struct": "struct my_struct {vi volatile int@0; x char@4 : 1@7; y int@4 : 4@27; z [0]int@8; array [40]long long int@8; zz [0]int@328}", "t_my_struct1": "struct my_struct1 {zz [1]int@0}", "t_my_union": "union my_union {vi volatile int@0; x char@0 : 1@7; y int@0 : 4@28; array [40]long long int@0}", "t_my_enum": "enum my_enum {e1=1; e2=2; e3=-5; e4=1000000000000000}", "t_my_list": "struct list {val short int@0; next *t_my_list@8}", "t_my_tree": "struct tree {left *struct tree@0; right *struct tree@8; val long long unsigned int@16}", } // As Apple converts gcc to a clang-based front end // they keep breaking the DWARF output. This map lists the // conversion from real answer to Apple answer. var machoBug = map[string]string{ "func(*char, ...) void": "func(*char) void", "enum my_enum {e1=1; e2=2; e3=-5; e4=1000000000000000}": "enum my_enum {e1=1; e2=2; e3=-5; e4=-1530494976}", } func elfData(t *testing.T, name string) *Data { f, err := elf.Open(name) if err != nil { t.Fatal(err) } d, err := f.DWARF() if err != nil { t.Fatal(err) } return d } func machoData(t *testing.T, name string) *Data { f, err := macho.Open(name) if err != nil { t.Fatal(err) } d, err := f.DWARF() if err != nil { t.Fatal(err) } return d } func TestTypedefsELF(t *testing.T) { testTypedefs(t, elfData(t, "testdata/typedef.elf"), "elf") } func TestTypedefsMachO(t *testing.T) { testTypedefs(t, machoData(t, "testdata/typedef.macho"), "macho") } func TestTypedefsELFDwarf4(t *testing.T) { testTypedefs(t, elfData(t, "testdata/typedef.elf4"), "elf") } func testTypedefs(t *testing.T, d *Data, kind string) { r := d.Reader() seen := make(map[string]bool) for { e, err := r.Next() if err != nil { t.Fatal("r.Next:", err) } if e == nil { break } if e.Tag == TagTypedef { typ, err := d.Type(e.Offset) if err != nil { t.Fatal("d.Type:", err) } t1 := typ.(*TypedefType) var typstr string if ts, ok := t1.Type.(*StructType); ok { typstr = ts.Defn() } else { typstr = t1.Type.String() } if want, ok := typedefTests[t1.Name]; ok { if seen[t1.Name] { t.Errorf("multiple definitions for %s", t1.Name) } seen[t1.Name] = true if typstr != want && (kind != "macho" || typstr != machoBug[want]) { t.Errorf("%s:\n\thave %s\n\twant %s", t1.Name, typstr, want) } } } if e.Tag != TagCompileUnit { r.SkipChildren() } } for k := range typedefTests { if !seen[k] { t.Errorf("missing %s", k) } } } go/src/pkg/debug/dwarf/typeunit.go0100644000000000000000000000730212412656737017452 0ustar00rootroot00000000000000// 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 dwarf import ( "fmt" "strconv" ) // Parse the type units stored in a DWARF4 .debug_types section. Each // type unit defines a single primary type and an 8-byte signature. // Other sections may then use formRefSig8 to refer to the type. // The typeUnit format is a single type with a signature. It holds // the same data as a compilation unit. type typeUnit struct { unit toff Offset // Offset to signature type within data. name string // Name of .debug_type section. cache Type // Cache the type, nil to start. } // Parse a .debug_types section. func (d *Data) parseTypes(name string, types []byte) error { b := makeBuf(d, unknownFormat{}, name, 0, types) for len(b.data) > 0 { base := b.off dwarf64 := false n := b.uint32() if n == 0xffffffff { n64 := b.uint64() if n64 != uint64(uint32(n64)) { b.error("type unit length overflow") return b.err } n = uint32(n64) dwarf64 = true } hdroff := b.off vers := b.uint16() if vers != 4 { b.error("unsupported DWARF version " + strconv.Itoa(int(vers))) return b.err } var ao uint32 if !dwarf64 { ao = b.uint32() } else { ao64 := b.uint64() if ao64 != uint64(uint32(ao64)) { b.error("type unit abbrev offset overflow") return b.err } ao = uint32(ao64) } atable, err := d.parseAbbrev(ao) if err != nil { return err } asize := b.uint8() sig := b.uint64() var toff uint32 if !dwarf64 { toff = b.uint32() } else { to64 := b.uint64() if to64 != uint64(uint32(to64)) { b.error("type unit type offset overflow") return b.err } toff = uint32(to64) } boff := b.off d.typeSigs[sig] = &typeUnit{ unit: unit{ base: base, off: boff, data: b.bytes(int(Offset(n) - (b.off - hdroff))), atable: atable, asize: int(asize), vers: int(vers), is64: dwarf64, }, toff: Offset(toff), name: name, } if b.err != nil { return b.err } } return nil } // Return the type for a type signature. func (d *Data) sigToType(sig uint64) (Type, error) { tu := d.typeSigs[sig] if tu == nil { return nil, fmt.Errorf("no type unit with signature %v", sig) } if tu.cache != nil { return tu.cache, nil } b := makeBuf(d, tu, tu.name, tu.off, tu.data) r := &typeUnitReader{d: d, tu: tu, b: b} t, err := d.readType(tu.name, r, Offset(tu.toff), make(map[Offset]Type)) if err != nil { return nil, err } tu.cache = t return t, nil } // typeUnitReader is a typeReader for a tagTypeUnit. type typeUnitReader struct { d *Data tu *typeUnit b buf err error } // Seek to a new position in the type unit. func (tur *typeUnitReader) Seek(off Offset) { tur.err = nil doff := off - tur.tu.off if doff < 0 || doff >= Offset(len(tur.tu.data)) { tur.err = fmt.Errorf("%s: offset %d out of range; max %d", tur.tu.name, doff, len(tur.tu.data)) return } tur.b = makeBuf(tur.d, tur.tu, tur.tu.name, off, tur.tu.data[doff:]) } // Next reads the next Entry from the type unit. func (tur *typeUnitReader) Next() (*Entry, error) { if tur.err != nil { return nil, tur.err } if len(tur.tu.data) == 0 { return nil, nil } e := tur.b.entry(tur.tu.atable, tur.tu.base) if tur.b.err != nil { tur.err = tur.b.err return nil, tur.err } return e, nil } // clone returns a new reader for the type unit. func (tur *typeUnitReader) clone() typeReader { return &typeUnitReader{ d: tur.d, tu: tur.tu, b: makeBuf(tur.d, tur.tu, tur.tu.name, tur.tu.off, tur.tu.data), } } // offset returns the current offset. func (tur *typeUnitReader) offset() Offset { return tur.b.off } go/src/pkg/debug/dwarf/unit.go0100644000000000000000000000357212412656737016555 0ustar00rootroot00000000000000// Copyright 2009 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 dwarf import "strconv" // DWARF debug info is split into a sequence of compilation units. // Each unit has its own abbreviation table and address size. type unit struct { base Offset // byte offset of header within the aggregate info off Offset // byte offset of data within the aggregate info data []byte atable abbrevTable asize int vers int is64 bool // True for 64-bit DWARF format } // Implement the dataFormat interface. func (u *unit) version() int { return u.vers } func (u *unit) dwarf64() (bool, bool) { return u.is64, true } func (u *unit) addrsize() int { return u.asize } func (d *Data) parseUnits() ([]unit, error) { // Count units. nunit := 0 b := makeBuf(d, unknownFormat{}, "info", 0, d.info) for len(b.data) > 0 { len := b.uint32() if len == 0xffffffff { len64 := b.uint64() if len64 != uint64(uint32(len64)) { b.error("unit length overflow") break } len = uint32(len64) } b.skip(int(len)) nunit++ } if b.err != nil { return nil, b.err } // Again, this time writing them down. b = makeBuf(d, unknownFormat{}, "info", 0, d.info) units := make([]unit, nunit) for i := range units { u := &units[i] u.base = b.off n := b.uint32() if n == 0xffffffff { u.is64 = true n = uint32(b.uint64()) } vers := b.uint16() if vers != 2 && vers != 3 && vers != 4 { b.error("unsupported DWARF version " + strconv.Itoa(int(vers))) break } u.vers = int(vers) atable, err := d.parseAbbrev(b.uint32()) if err != nil { if b.err == nil { b.err = err } break } u.atable = atable u.asize = int(b.uint8()) u.off = b.off u.data = b.bytes(int(n - (2 + 4 + 1))) } if b.err != nil { return nil, b.err } return units, nil } go/src/pkg/debug/elf0040755000000000000000000000000012412656737014627 5ustar00rootroot00000000000000go/src/pkg/debug/elf/elf.go0100644000000000000000000014650212412656737016010 0ustar00rootroot00000000000000/* * ELF constants and data structures * * Derived from: * $FreeBSD: src/sys/sys/elf32.h,v 1.8.14.1 2005/12/30 22:13:58 marcel Exp $ * $FreeBSD: src/sys/sys/elf64.h,v 1.10.14.1 2005/12/30 22:13:58 marcel Exp $ * $FreeBSD: src/sys/sys/elf_common.h,v 1.15.8.1 2005/12/30 22:13:58 marcel Exp $ * $FreeBSD: src/sys/alpha/include/elf.h,v 1.14 2003/09/25 01:10:22 peter Exp $ * $FreeBSD: src/sys/amd64/include/elf.h,v 1.18 2004/08/03 08:21:48 dfr Exp $ * $FreeBSD: src/sys/arm/include/elf.h,v 1.5.2.1 2006/06/30 21:42:52 cognet Exp $ * $FreeBSD: src/sys/i386/include/elf.h,v 1.16 2004/08/02 19:12:17 dfr Exp $ * $FreeBSD: src/sys/powerpc/include/elf.h,v 1.7 2004/11/02 09:47:01 ssouhlal Exp $ * $FreeBSD: src/sys/sparc64/include/elf.h,v 1.12 2003/09/25 01:10:26 peter Exp $ * * Copyright (c) 1996-1998 John D. Polstra. All rights reserved. * Copyright (c) 2001 David E. O'Brien * Portions Copyright 2009 The Go Authors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ package elf import "strconv" /* * Constants */ // Indexes into the Header.Ident array. const ( EI_CLASS = 4 /* Class of machine. */ EI_DATA = 5 /* Data format. */ EI_VERSION = 6 /* ELF format version. */ EI_OSABI = 7 /* Operating system / ABI identification */ EI_ABIVERSION = 8 /* ABI version */ EI_PAD = 9 /* Start of padding (per SVR4 ABI). */ EI_NIDENT = 16 /* Size of e_ident array. */ ) // Initial magic number for ELF files. const ELFMAG = "\177ELF" // Version is found in Header.Ident[EI_VERSION] and Header.Version. type Version byte const ( EV_NONE Version = 0 EV_CURRENT Version = 1 ) var versionStrings = []intName{ {0, "EV_NONE"}, {1, "EV_CURRENT"}, } func (i Version) String() string { return stringName(uint32(i), versionStrings, false) } func (i Version) GoString() string { return stringName(uint32(i), versionStrings, true) } // Class is found in Header.Ident[EI_CLASS] and Header.Class. type Class byte const ( ELFCLASSNONE Class = 0 /* Unknown class. */ ELFCLASS32 Class = 1 /* 32-bit architecture. */ ELFCLASS64 Class = 2 /* 64-bit architecture. */ ) var classStrings = []intName{ {0, "ELFCLASSNONE"}, {1, "ELFCLASS32"}, {2, "ELFCLASS64"}, } func (i Class) String() string { return stringName(uint32(i), classStrings, false) } func (i Class) GoString() string { return stringName(uint32(i), classStrings, true) } // Data is found in Header.Ident[EI_DATA] and Header.Data. type Data byte const ( ELFDATANONE Data = 0 /* Unknown data format. */ ELFDATA2LSB Data = 1 /* 2's complement little-endian. */ ELFDATA2MSB Data = 2 /* 2's complement big-endian. */ ) var dataStrings = []intName{ {0, "ELFDATANONE"}, {1, "ELFDATA2LSB"}, {2, "ELFDATA2MSB"}, } func (i Data) String() string { return stringName(uint32(i), dataStrings, false) } func (i Data) GoString() string { return stringName(uint32(i), dataStrings, true) } // OSABI is found in Header.Ident[EI_OSABI] and Header.OSABI. type OSABI byte const ( ELFOSABI_NONE OSABI = 0 /* UNIX System V ABI */ ELFOSABI_HPUX OSABI = 1 /* HP-UX operating system */ ELFOSABI_NETBSD OSABI = 2 /* NetBSD */ ELFOSABI_LINUX OSABI = 3 /* GNU/Linux */ ELFOSABI_HURD OSABI = 4 /* GNU/Hurd */ ELFOSABI_86OPEN OSABI = 5 /* 86Open common IA32 ABI */ ELFOSABI_SOLARIS OSABI = 6 /* Solaris */ ELFOSABI_AIX OSABI = 7 /* AIX */ ELFOSABI_IRIX OSABI = 8 /* IRIX */ ELFOSABI_FREEBSD OSABI = 9 /* FreeBSD */ ELFOSABI_TRU64 OSABI = 10 /* TRU64 UNIX */ ELFOSABI_MODESTO OSABI = 11 /* Novell Modesto */ ELFOSABI_OPENBSD OSABI = 12 /* OpenBSD */ ELFOSABI_OPENVMS OSABI = 13 /* Open VMS */ ELFOSABI_NSK OSABI = 14 /* HP Non-Stop Kernel */ ELFOSABI_ARM OSABI = 97 /* ARM */ ELFOSABI_STANDALONE OSABI = 255 /* Standalone (embedded) application */ ) var osabiStrings = []intName{ {0, "ELFOSABI_NONE"}, {1, "ELFOSABI_HPUX"}, {2, "ELFOSABI_NETBSD"}, {3, "ELFOSABI_LINUX"}, {4, "ELFOSABI_HURD"}, {5, "ELFOSABI_86OPEN"}, {6, "ELFOSABI_SOLARIS"}, {7, "ELFOSABI_AIX"}, {8, "ELFOSABI_IRIX"}, {9, "ELFOSABI_FREEBSD"}, {10, "ELFOSABI_TRU64"}, {11, "ELFOSABI_MODESTO"}, {12, "ELFOSABI_OPENBSD"}, {13, "ELFOSABI_OPENVMS"}, {14, "ELFOSABI_NSK"}, {97, "ELFOSABI_ARM"}, {255, "ELFOSABI_STANDALONE"}, } func (i OSABI) String() string { return stringName(uint32(i), osabiStrings, false) } func (i OSABI) GoString() string { return stringName(uint32(i), osabiStrings, true) } // Type is found in Header.Type. type Type uint16 const ( ET_NONE Type = 0 /* Unknown type. */ ET_REL Type = 1 /* Relocatable. */ ET_EXEC Type = 2 /* Executable. */ ET_DYN Type = 3 /* Shared object. */ ET_CORE Type = 4 /* Core file. */ ET_LOOS Type = 0xfe00 /* First operating system specific. */ ET_HIOS Type = 0xfeff /* Last operating system-specific. */ ET_LOPROC Type = 0xff00 /* First processor-specific. */ ET_HIPROC Type = 0xffff /* Last processor-specific. */ ) var typeStrings = []intName{ {0, "ET_NONE"}, {1, "ET_REL"}, {2, "ET_EXEC"}, {3, "ET_DYN"}, {4, "ET_CORE"}, {0xfe00, "ET_LOOS"}, {0xfeff, "ET_HIOS"}, {0xff00, "ET_LOPROC"}, {0xffff, "ET_HIPROC"}, } func (i Type) String() string { return stringName(uint32(i), typeStrings, false) } func (i Type) GoString() string { return stringName(uint32(i), typeStrings, true) } // Machine is found in Header.Machine. type Machine uint16 const ( EM_NONE Machine = 0 /* Unknown machine. */ EM_M32 Machine = 1 /* AT&T WE32100. */ EM_SPARC Machine = 2 /* Sun SPARC. */ EM_386 Machine = 3 /* Intel i386. */ EM_68K Machine = 4 /* Motorola 68000. */ EM_88K Machine = 5 /* Motorola 88000. */ EM_860 Machine = 7 /* Intel i860. */ EM_MIPS Machine = 8 /* MIPS R3000 Big-Endian only. */ EM_S370 Machine = 9 /* IBM System/370. */ EM_MIPS_RS3_LE Machine = 10 /* MIPS R3000 Little-Endian. */ EM_PARISC Machine = 15 /* HP PA-RISC. */ EM_VPP500 Machine = 17 /* Fujitsu VPP500. */ EM_SPARC32PLUS Machine = 18 /* SPARC v8plus. */ EM_960 Machine = 19 /* Intel 80960. */ EM_PPC Machine = 20 /* PowerPC 32-bit. */ EM_PPC64 Machine = 21 /* PowerPC 64-bit. */ EM_S390 Machine = 22 /* IBM System/390. */ EM_V800 Machine = 36 /* NEC V800. */ EM_FR20 Machine = 37 /* Fujitsu FR20. */ EM_RH32 Machine = 38 /* TRW RH-32. */ EM_RCE Machine = 39 /* Motorola RCE. */ EM_ARM Machine = 40 /* ARM. */ EM_SH Machine = 42 /* Hitachi SH. */ EM_SPARCV9 Machine = 43 /* SPARC v9 64-bit. */ EM_TRICORE Machine = 44 /* Siemens TriCore embedded processor. */ EM_ARC Machine = 45 /* Argonaut RISC Core. */ EM_H8_300 Machine = 46 /* Hitachi H8/300. */ EM_H8_300H Machine = 47 /* Hitachi H8/300H. */ EM_H8S Machine = 48 /* Hitachi H8S. */ EM_H8_500 Machine = 49 /* Hitachi H8/500. */ EM_IA_64 Machine = 50 /* Intel IA-64 Processor. */ EM_MIPS_X Machine = 51 /* Stanford MIPS-X. */ EM_COLDFIRE Machine = 52 /* Motorola ColdFire. */ EM_68HC12 Machine = 53 /* Motorola M68HC12. */ EM_MMA Machine = 54 /* Fujitsu MMA. */ EM_PCP Machine = 55 /* Siemens PCP. */ EM_NCPU Machine = 56 /* Sony nCPU. */ EM_NDR1 Machine = 57 /* Denso NDR1 microprocessor. */ EM_STARCORE Machine = 58 /* Motorola Star*Core processor. */ EM_ME16 Machine = 59 /* Toyota ME16 processor. */ EM_ST100 Machine = 60 /* STMicroelectronics ST100 processor. */ EM_TINYJ Machine = 61 /* Advanced Logic Corp. TinyJ processor. */ EM_X86_64 Machine = 62 /* Advanced Micro Devices x86-64 */ /* Non-standard or deprecated. */ EM_486 Machine = 6 /* Intel i486. */ EM_MIPS_RS4_BE Machine = 10 /* MIPS R4000 Big-Endian */ EM_ALPHA_STD Machine = 41 /* Digital Alpha (standard value). */ EM_ALPHA Machine = 0x9026 /* Alpha (written in the absence of an ABI) */ ) var machineStrings = []intName{ {0, "EM_NONE"}, {1, "EM_M32"}, {2, "EM_SPARC"}, {3, "EM_386"}, {4, "EM_68K"}, {5, "EM_88K"}, {7, "EM_860"}, {8, "EM_MIPS"}, {9, "EM_S370"}, {10, "EM_MIPS_RS3_LE"}, {15, "EM_PARISC"}, {17, "EM_VPP500"}, {18, "EM_SPARC32PLUS"}, {19, "EM_960"}, {20, "EM_PPC"}, {21, "EM_PPC64"}, {22, "EM_S390"}, {36, "EM_V800"}, {37, "EM_FR20"}, {38, "EM_RH32"}, {39, "EM_RCE"}, {40, "EM_ARM"}, {42, "EM_SH"}, {43, "EM_SPARCV9"}, {44, "EM_TRICORE"}, {45, "EM_ARC"}, {46, "EM_H8_300"}, {47, "EM_H8_300H"}, {48, "EM_H8S"}, {49, "EM_H8_500"}, {50, "EM_IA_64"}, {51, "EM_MIPS_X"}, {52, "EM_COLDFIRE"}, {53, "EM_68HC12"}, {54, "EM_MMA"}, {55, "EM_PCP"}, {56, "EM_NCPU"}, {57, "EM_NDR1"}, {58, "EM_STARCORE"}, {59, "EM_ME16"}, {60, "EM_ST100"}, {61, "EM_TINYJ"}, {62, "EM_X86_64"}, /* Non-standard or deprecated. */ {6, "EM_486"}, {10, "EM_MIPS_RS4_BE"}, {41, "EM_ALPHA_STD"}, {0x9026, "EM_ALPHA"}, } func (i Machine) String() string { return stringName(uint32(i), machineStrings, false) } func (i Machine) GoString() string { return stringName(uint32(i), machineStrings, true) } // Special section indices. type SectionIndex int const ( SHN_UNDEF SectionIndex = 0 /* Undefined, missing, irrelevant. */ SHN_LORESERVE SectionIndex = 0xff00 /* First of reserved range. */ SHN_LOPROC SectionIndex = 0xff00 /* First processor-specific. */ SHN_HIPROC SectionIndex = 0xff1f /* Last processor-specific. */ SHN_LOOS SectionIndex = 0xff20 /* First operating system-specific. */ SHN_HIOS SectionIndex = 0xff3f /* Last operating system-specific. */ SHN_ABS SectionIndex = 0xfff1 /* Absolute values. */ SHN_COMMON SectionIndex = 0xfff2 /* Common data. */ SHN_XINDEX SectionIndex = 0xffff /* Escape -- index stored elsewhere. */ SHN_HIRESERVE SectionIndex = 0xffff /* Last of reserved range. */ ) var shnStrings = []intName{ {0, "SHN_UNDEF"}, {0xff00, "SHN_LOPROC"}, {0xff20, "SHN_LOOS"}, {0xfff1, "SHN_ABS"}, {0xfff2, "SHN_COMMON"}, {0xffff, "SHN_XINDEX"}, } func (i SectionIndex) String() string { return stringName(uint32(i), shnStrings, false) } func (i SectionIndex) GoString() string { return stringName(uint32(i), shnStrings, true) } // Section type. type SectionType uint32 const ( SHT_NULL SectionType = 0 /* inactive */ SHT_PROGBITS SectionType = 1 /* program defined information */ SHT_SYMTAB SectionType = 2 /* symbol table section */ SHT_STRTAB SectionType = 3 /* string table section */ SHT_RELA SectionType = 4 /* relocation section with addends */ SHT_HASH SectionType = 5 /* symbol hash table section */ SHT_DYNAMIC SectionType = 6 /* dynamic section */ SHT_NOTE SectionType = 7 /* note section */ SHT_NOBITS SectionType = 8 /* no space section */ SHT_REL SectionType = 9 /* relocation section - no addends */ SHT_SHLIB SectionType = 10 /* reserved - purpose unknown */ SHT_DYNSYM SectionType = 11 /* dynamic symbol table section */ SHT_INIT_ARRAY SectionType = 14 /* Initialization function pointers. */ SHT_FINI_ARRAY SectionType = 15 /* Termination function pointers. */ SHT_PREINIT_ARRAY SectionType = 16 /* Pre-initialization function ptrs. */ SHT_GROUP SectionType = 17 /* Section group. */ SHT_SYMTAB_SHNDX SectionType = 18 /* Section indexes (see SHN_XINDEX). */ SHT_LOOS SectionType = 0x60000000 /* First of OS specific semantics */ SHT_GNU_ATTRIBUTES SectionType = 0x6ffffff5 /* GNU object attributes */ SHT_GNU_HASH SectionType = 0x6ffffff6 /* GNU hash table */ SHT_GNU_LIBLIST SectionType = 0x6ffffff7 /* GNU prelink library list */ SHT_GNU_VERDEF SectionType = 0x6ffffffd /* GNU version definition section */ SHT_GNU_VERNEED SectionType = 0x6ffffffe /* GNU version needs section */ SHT_GNU_VERSYM SectionType = 0x6fffffff /* GNU version symbol table */ SHT_HIOS SectionType = 0x6fffffff /* Last of OS specific semantics */ SHT_LOPROC SectionType = 0x70000000 /* reserved range for processor */ SHT_HIPROC SectionType = 0x7fffffff /* specific section header types */ SHT_LOUSER SectionType = 0x80000000 /* reserved range for application */ SHT_HIUSER SectionType = 0xffffffff /* specific indexes */ ) var shtStrings = []intName{ {0, "SHT_NULL"}, {1, "SHT_PROGBITS"}, {2, "SHT_SYMTAB"}, {3, "SHT_STRTAB"}, {4, "SHT_RELA"}, {5, "SHT_HASH"}, {6, "SHT_DYNAMIC"}, {7, "SHT_NOTE"}, {8, "SHT_NOBITS"}, {9, "SHT_REL"}, {10, "SHT_SHLIB"}, {11, "SHT_DYNSYM"}, {14, "SHT_INIT_ARRAY"}, {15, "SHT_FINI_ARRAY"}, {16, "SHT_PREINIT_ARRAY"}, {17, "SHT_GROUP"}, {18, "SHT_SYMTAB_SHNDX"}, {0x60000000, "SHT_LOOS"}, {0x6ffffff5, "SHT_GNU_ATTRIBUTES"}, {0x6ffffff6, "SHT_GNU_HASH"}, {0x6ffffff7, "SHT_GNU_LIBLIST"}, {0x6ffffffd, "SHT_GNU_VERDEF"}, {0x6ffffffe, "SHT_GNU_VERNEED"}, {0x6fffffff, "SHT_GNU_VERSYM"}, {0x70000000, "SHT_LOPROC"}, {0x7fffffff, "SHT_HIPROC"}, {0x80000000, "SHT_LOUSER"}, {0xffffffff, "SHT_HIUSER"}, } func (i SectionType) String() string { return stringName(uint32(i), shtStrings, false) } func (i SectionType) GoString() string { return stringName(uint32(i), shtStrings, true) } // Section flags. type SectionFlag uint32 const ( SHF_WRITE SectionFlag = 0x1 /* Section contains writable data. */ SHF_ALLOC SectionFlag = 0x2 /* Section occupies memory. */ SHF_EXECINSTR SectionFlag = 0x4 /* Section contains instructions. */ SHF_MERGE SectionFlag = 0x10 /* Section may be merged. */ SHF_STRINGS SectionFlag = 0x20 /* Section contains strings. */ SHF_INFO_LINK SectionFlag = 0x40 /* sh_info holds section index. */ SHF_LINK_ORDER SectionFlag = 0x80 /* Special ordering requirements. */ SHF_OS_NONCONFORMING SectionFlag = 0x100 /* OS-specific processing required. */ SHF_GROUP SectionFlag = 0x200 /* Member of section group. */ SHF_TLS SectionFlag = 0x400 /* Section contains TLS data. */ SHF_MASKOS SectionFlag = 0x0ff00000 /* OS-specific semantics. */ SHF_MASKPROC SectionFlag = 0xf0000000 /* Processor-specific semantics. */ ) var shfStrings = []intName{ {0x1, "SHF_WRITE"}, {0x2, "SHF_ALLOC"}, {0x4, "SHF_EXECINSTR"}, {0x10, "SHF_MERGE"}, {0x20, "SHF_STRINGS"}, {0x40, "SHF_INFO_LINK"}, {0x80, "SHF_LINK_ORDER"}, {0x100, "SHF_OS_NONCONFORMING"}, {0x200, "SHF_GROUP"}, {0x400, "SHF_TLS"}, } func (i SectionFlag) String() string { return flagName(uint32(i), shfStrings, false) } func (i SectionFlag) GoString() string { return flagName(uint32(i), shfStrings, true) } // Prog.Type type ProgType int const ( PT_NULL ProgType = 0 /* Unused entry. */ PT_LOAD ProgType = 1 /* Loadable segment. */ PT_DYNAMIC ProgType = 2 /* Dynamic linking information segment. */ PT_INTERP ProgType = 3 /* Pathname of interpreter. */ PT_NOTE ProgType = 4 /* Auxiliary information. */ PT_SHLIB ProgType = 5 /* Reserved (not used). */ PT_PHDR ProgType = 6 /* Location of program header itself. */ PT_TLS ProgType = 7 /* Thread local storage segment */ PT_LOOS ProgType = 0x60000000 /* First OS-specific. */ PT_HIOS ProgType = 0x6fffffff /* Last OS-specific. */ PT_LOPROC ProgType = 0x70000000 /* First processor-specific type. */ PT_HIPROC ProgType = 0x7fffffff /* Last processor-specific type. */ ) var ptStrings = []intName{ {0, "PT_NULL"}, {1, "PT_LOAD"}, {2, "PT_DYNAMIC"}, {3, "PT_INTERP"}, {4, "PT_NOTE"}, {5, "PT_SHLIB"}, {6, "PT_PHDR"}, {7, "PT_TLS"}, {0x60000000, "PT_LOOS"}, {0x6fffffff, "PT_HIOS"}, {0x70000000, "PT_LOPROC"}, {0x7fffffff, "PT_HIPROC"}, } func (i ProgType) String() string { return stringName(uint32(i), ptStrings, false) } func (i ProgType) GoString() string { return stringName(uint32(i), ptStrings, true) } // Prog.Flag type ProgFlag uint32 const ( PF_X ProgFlag = 0x1 /* Executable. */ PF_W ProgFlag = 0x2 /* Writable. */ PF_R ProgFlag = 0x4 /* Readable. */ PF_MASKOS ProgFlag = 0x0ff00000 /* Operating system-specific. */ PF_MASKPROC ProgFlag = 0xf0000000 /* Processor-specific. */ ) var pfStrings = []intName{ {0x1, "PF_X"}, {0x2, "PF_W"}, {0x4, "PF_R"}, } func (i ProgFlag) String() string { return flagName(uint32(i), pfStrings, false) } func (i ProgFlag) GoString() string { return flagName(uint32(i), pfStrings, true) } // Dyn.Tag type DynTag int const ( DT_NULL DynTag = 0 /* Terminating entry. */ DT_NEEDED DynTag = 1 /* String table offset of a needed shared library. */ DT_PLTRELSZ DynTag = 2 /* Total size in bytes of PLT relocations. */ DT_PLTGOT DynTag = 3 /* Processor-dependent address. */ DT_HASH DynTag = 4 /* Address of symbol hash table. */ DT_STRTAB DynTag = 5 /* Address of string table. */ DT_SYMTAB DynTag = 6 /* Address of symbol table. */ DT_RELA DynTag = 7 /* Address of ElfNN_Rela relocations. */ DT_RELASZ DynTag = 8 /* Total size of ElfNN_Rela relocations. */ DT_RELAENT DynTag = 9 /* Size of each ElfNN_Rela relocation entry. */ DT_STRSZ DynTag = 10 /* Size of string table. */ DT_SYMENT DynTag = 11 /* Size of each symbol table entry. */ DT_INIT DynTag = 12 /* Address of initialization function. */ DT_FINI DynTag = 13 /* Address of finalization function. */ DT_SONAME DynTag = 14 /* String table offset of shared object name. */ DT_RPATH DynTag = 15 /* String table offset of library path. [sup] */ DT_SYMBOLIC DynTag = 16 /* Indicates "symbolic" linking. [sup] */ DT_REL DynTag = 17 /* Address of ElfNN_Rel relocations. */ DT_RELSZ DynTag = 18 /* Total size of ElfNN_Rel relocations. */ DT_RELENT DynTag = 19 /* Size of each ElfNN_Rel relocation. */ DT_PLTREL DynTag = 20 /* Type of relocation used for PLT. */ DT_DEBUG DynTag = 21 /* Reserved (not used). */ DT_TEXTREL DynTag = 22 /* Indicates there may be relocations in non-writable segments. [sup] */ DT_JMPREL DynTag = 23 /* Address of PLT relocations. */ DT_BIND_NOW DynTag = 24 /* [sup] */ DT_INIT_ARRAY DynTag = 25 /* Address of the array of pointers to initialization functions */ DT_FINI_ARRAY DynTag = 26 /* Address of the array of pointers to termination functions */ DT_INIT_ARRAYSZ DynTag = 27 /* Size in bytes of the array of initialization functions. */ DT_FINI_ARRAYSZ DynTag = 28 /* Size in bytes of the array of termination functions. */ DT_RUNPATH DynTag = 29 /* String table offset of a null-terminated library search path string. */ DT_FLAGS DynTag = 30 /* Object specific flag values. */ DT_ENCODING DynTag = 32 /* Values greater than or equal to DT_ENCODING and less than DT_LOOS follow the rules for the interpretation of the d_un union as follows: even == 'd_ptr', even == 'd_val' or none */ DT_PREINIT_ARRAY DynTag = 32 /* Address of the array of pointers to pre-initialization functions. */ DT_PREINIT_ARRAYSZ DynTag = 33 /* Size in bytes of the array of pre-initialization functions. */ DT_LOOS DynTag = 0x6000000d /* First OS-specific */ DT_HIOS DynTag = 0x6ffff000 /* Last OS-specific */ DT_VERSYM DynTag = 0x6ffffff0 DT_VERNEED DynTag = 0x6ffffffe DT_VERNEEDNUM DynTag = 0x6fffffff DT_LOPROC DynTag = 0x70000000 /* First processor-specific type. */ DT_HIPROC DynTag = 0x7fffffff /* Last processor-specific type. */ ) var dtStrings = []intName{ {0, "DT_NULL"}, {1, "DT_NEEDED"}, {2, "DT_PLTRELSZ"}, {3, "DT_PLTGOT"}, {4, "DT_HASH"}, {5, "DT_STRTAB"}, {6, "DT_SYMTAB"}, {7, "DT_RELA"}, {8, "DT_RELASZ"}, {9, "DT_RELAENT"}, {10, "DT_STRSZ"}, {11, "DT_SYMENT"}, {12, "DT_INIT"}, {13, "DT_FINI"}, {14, "DT_SONAME"}, {15, "DT_RPATH"}, {16, "DT_SYMBOLIC"}, {17, "DT_REL"}, {18, "DT_RELSZ"}, {19, "DT_RELENT"}, {20, "DT_PLTREL"}, {21, "DT_DEBUG"}, {22, "DT_TEXTREL"}, {23, "DT_JMPREL"}, {24, "DT_BIND_NOW"}, {25, "DT_INIT_ARRAY"}, {26, "DT_FINI_ARRAY"}, {27, "DT_INIT_ARRAYSZ"}, {28, "DT_FINI_ARRAYSZ"}, {29, "DT_RUNPATH"}, {30, "DT_FLAGS"}, {32, "DT_ENCODING"}, {32, "DT_PREINIT_ARRAY"}, {33, "DT_PREINIT_ARRAYSZ"}, {0x6000000d, "DT_LOOS"}, {0x6ffff000, "DT_HIOS"}, {0x6ffffff0, "DT_VERSYM"}, {0x6ffffffe, "DT_VERNEED"}, {0x6fffffff, "DT_VERNEEDNUM"}, {0x70000000, "DT_LOPROC"}, {0x7fffffff, "DT_HIPROC"}, } func (i DynTag) String() string { return stringName(uint32(i), dtStrings, false) } func (i DynTag) GoString() string { return stringName(uint32(i), dtStrings, true) } // DT_FLAGS values. type DynFlag int const ( DF_ORIGIN DynFlag = 0x0001 /* Indicates that the object being loaded may make reference to the $ORIGIN substitution string */ DF_SYMBOLIC DynFlag = 0x0002 /* Indicates "symbolic" linking. */ DF_TEXTREL DynFlag = 0x0004 /* Indicates there may be relocations in non-writable segments. */ DF_BIND_NOW DynFlag = 0x0008 /* Indicates that the dynamic linker should process all relocations for the object containing this entry before transferring control to the program. */ DF_STATIC_TLS DynFlag = 0x0010 /* Indicates that the shared object or executable contains code using a static thread-local storage scheme. */ ) var dflagStrings = []intName{ {0x0001, "DF_ORIGIN"}, {0x0002, "DF_SYMBOLIC"}, {0x0004, "DF_TEXTREL"}, {0x0008, "DF_BIND_NOW"}, {0x0010, "DF_STATIC_TLS"}, } func (i DynFlag) String() string { return flagName(uint32(i), dflagStrings, false) } func (i DynFlag) GoString() string { return flagName(uint32(i), dflagStrings, true) } // NType values; used in core files. type NType int const ( NT_PRSTATUS NType = 1 /* Process status. */ NT_FPREGSET NType = 2 /* Floating point registers. */ NT_PRPSINFO NType = 3 /* Process state info. */ ) var ntypeStrings = []intName{ {1, "NT_PRSTATUS"}, {2, "NT_FPREGSET"}, {3, "NT_PRPSINFO"}, } func (i NType) String() string { return stringName(uint32(i), ntypeStrings, false) } func (i NType) GoString() string { return stringName(uint32(i), ntypeStrings, true) } /* Symbol Binding - ELFNN_ST_BIND - st_info */ type SymBind int const ( STB_LOCAL SymBind = 0 /* Local symbol */ STB_GLOBAL SymBind = 1 /* Global symbol */ STB_WEAK SymBind = 2 /* like global - lower precedence */ STB_LOOS SymBind = 10 /* Reserved range for operating system */ STB_HIOS SymBind = 12 /* specific semantics. */ STB_LOPROC SymBind = 13 /* reserved range for processor */ STB_HIPROC SymBind = 15 /* specific semantics. */ ) var stbStrings = []intName{ {0, "STB_LOCAL"}, {1, "STB_GLOBAL"}, {2, "STB_WEAK"}, {10, "STB_LOOS"}, {12, "STB_HIOS"}, {13, "STB_LOPROC"}, {15, "STB_HIPROC"}, } func (i SymBind) String() string { return stringName(uint32(i), stbStrings, false) } func (i SymBind) GoString() string { return stringName(uint32(i), stbStrings, true) } /* Symbol type - ELFNN_ST_TYPE - st_info */ type SymType int const ( STT_NOTYPE SymType = 0 /* Unspecified type. */ STT_OBJECT SymType = 1 /* Data object. */ STT_FUNC SymType = 2 /* Function. */ STT_SECTION SymType = 3 /* Section. */ STT_FILE SymType = 4 /* Source file. */ STT_COMMON SymType = 5 /* Uninitialized common block. */ STT_TLS SymType = 6 /* TLS object. */ STT_LOOS SymType = 10 /* Reserved range for operating system */ STT_HIOS SymType = 12 /* specific semantics. */ STT_LOPROC SymType = 13 /* reserved range for processor */ STT_HIPROC SymType = 15 /* specific semantics. */ ) var sttStrings = []intName{ {0, "STT_NOTYPE"}, {1, "STT_OBJECT"}, {2, "STT_FUNC"}, {3, "STT_SECTION"}, {4, "STT_FILE"}, {5, "STT_COMMON"}, {6, "STT_TLS"}, {10, "STT_LOOS"}, {12, "STT_HIOS"}, {13, "STT_LOPROC"}, {15, "STT_HIPROC"}, } func (i SymType) String() string { return stringName(uint32(i), sttStrings, false) } func (i SymType) GoString() string { return stringName(uint32(i), sttStrings, true) } /* Symbol visibility - ELFNN_ST_VISIBILITY - st_other */ type SymVis int const ( STV_DEFAULT SymVis = 0x0 /* Default visibility (see binding). */ STV_INTERNAL SymVis = 0x1 /* Special meaning in relocatable objects. */ STV_HIDDEN SymVis = 0x2 /* Not visible. */ STV_PROTECTED SymVis = 0x3 /* Visible but not preemptible. */ ) var stvStrings = []intName{ {0x0, "STV_DEFAULT"}, {0x1, "STV_INTERNAL"}, {0x2, "STV_HIDDEN"}, {0x3, "STV_PROTECTED"}, } func (i SymVis) String() string { return stringName(uint32(i), stvStrings, false) } func (i SymVis) GoString() string { return stringName(uint32(i), stvStrings, true) } /* * Relocation types. */ // Relocation types for x86-64. type R_X86_64 int const ( R_X86_64_NONE R_X86_64 = 0 /* No relocation. */ R_X86_64_64 R_X86_64 = 1 /* Add 64 bit symbol value. */ R_X86_64_PC32 R_X86_64 = 2 /* PC-relative 32 bit signed sym value. */ R_X86_64_GOT32 R_X86_64 = 3 /* PC-relative 32 bit GOT offset. */ R_X86_64_PLT32 R_X86_64 = 4 /* PC-relative 32 bit PLT offset. */ R_X86_64_COPY R_X86_64 = 5 /* Copy data from shared object. */ R_X86_64_GLOB_DAT R_X86_64 = 6 /* Set GOT entry to data address. */ R_X86_64_JMP_SLOT R_X86_64 = 7 /* Set GOT entry to code address. */ R_X86_64_RELATIVE R_X86_64 = 8 /* Add load address of shared object. */ R_X86_64_GOTPCREL R_X86_64 = 9 /* Add 32 bit signed pcrel offset to GOT. */ R_X86_64_32 R_X86_64 = 10 /* Add 32 bit zero extended symbol value */ R_X86_64_32S R_X86_64 = 11 /* Add 32 bit sign extended symbol value */ R_X86_64_16 R_X86_64 = 12 /* Add 16 bit zero extended symbol value */ R_X86_64_PC16 R_X86_64 = 13 /* Add 16 bit signed extended pc relative symbol value */ R_X86_64_8 R_X86_64 = 14 /* Add 8 bit zero extended symbol value */ R_X86_64_PC8 R_X86_64 = 15 /* Add 8 bit signed extended pc relative symbol value */ R_X86_64_DTPMOD64 R_X86_64 = 16 /* ID of module containing symbol */ R_X86_64_DTPOFF64 R_X86_64 = 17 /* Offset in TLS block */ R_X86_64_TPOFF64 R_X86_64 = 18 /* Offset in static TLS block */ R_X86_64_TLSGD R_X86_64 = 19 /* PC relative offset to GD GOT entry */ R_X86_64_TLSLD R_X86_64 = 20 /* PC relative offset to LD GOT entry */ R_X86_64_DTPOFF32 R_X86_64 = 21 /* Offset in TLS block */ R_X86_64_GOTTPOFF R_X86_64 = 22 /* PC relative offset to IE GOT entry */ R_X86_64_TPOFF32 R_X86_64 = 23 /* Offset in static TLS block */ ) var rx86_64Strings = []intName{ {0, "R_X86_64_NONE"}, {1, "R_X86_64_64"}, {2, "R_X86_64_PC32"}, {3, "R_X86_64_GOT32"}, {4, "R_X86_64_PLT32"}, {5, "R_X86_64_COPY"}, {6, "R_X86_64_GLOB_DAT"}, {7, "R_X86_64_JMP_SLOT"}, {8, "R_X86_64_RELATIVE"}, {9, "R_X86_64_GOTPCREL"}, {10, "R_X86_64_32"}, {11, "R_X86_64_32S"}, {12, "R_X86_64_16"}, {13, "R_X86_64_PC16"}, {14, "R_X86_64_8"}, {15, "R_X86_64_PC8"}, {16, "R_X86_64_DTPMOD64"}, {17, "R_X86_64_DTPOFF64"}, {18, "R_X86_64_TPOFF64"}, {19, "R_X86_64_TLSGD"}, {20, "R_X86_64_TLSLD"}, {21, "R_X86_64_DTPOFF32"}, {22, "R_X86_64_GOTTPOFF"}, {23, "R_X86_64_TPOFF32"}, } func (i R_X86_64) String() string { return stringName(uint32(i), rx86_64Strings, false) } func (i R_X86_64) GoString() string { return stringName(uint32(i), rx86_64Strings, true) } // Relocation types for Alpha. type R_ALPHA int const ( R_ALPHA_NONE R_ALPHA = 0 /* No reloc */ R_ALPHA_REFLONG R_ALPHA = 1 /* Direct 32 bit */ R_ALPHA_REFQUAD R_ALPHA = 2 /* Direct 64 bit */ R_ALPHA_GPREL32 R_ALPHA = 3 /* GP relative 32 bit */ R_ALPHA_LITERAL R_ALPHA = 4 /* GP relative 16 bit w/optimization */ R_ALPHA_LITUSE R_ALPHA = 5 /* Optimization hint for LITERAL */ R_ALPHA_GPDISP R_ALPHA = 6 /* Add displacement to GP */ R_ALPHA_BRADDR R_ALPHA = 7 /* PC+4 relative 23 bit shifted */ R_ALPHA_HINT R_ALPHA = 8 /* PC+4 relative 16 bit shifted */ R_ALPHA_SREL16 R_ALPHA = 9 /* PC relative 16 bit */ R_ALPHA_SREL32 R_ALPHA = 10 /* PC relative 32 bit */ R_ALPHA_SREL64 R_ALPHA = 11 /* PC relative 64 bit */ R_ALPHA_OP_PUSH R_ALPHA = 12 /* OP stack push */ R_ALPHA_OP_STORE R_ALPHA = 13 /* OP stack pop and store */ R_ALPHA_OP_PSUB R_ALPHA = 14 /* OP stack subtract */ R_ALPHA_OP_PRSHIFT R_ALPHA = 15 /* OP stack right shift */ R_ALPHA_GPVALUE R_ALPHA = 16 R_ALPHA_GPRELHIGH R_ALPHA = 17 R_ALPHA_GPRELLOW R_ALPHA = 18 R_ALPHA_IMMED_GP_16 R_ALPHA = 19 R_ALPHA_IMMED_GP_HI32 R_ALPHA = 20 R_ALPHA_IMMED_SCN_HI32 R_ALPHA = 21 R_ALPHA_IMMED_BR_HI32 R_ALPHA = 22 R_ALPHA_IMMED_LO32 R_ALPHA = 23 R_ALPHA_COPY R_ALPHA = 24 /* Copy symbol at runtime */ R_ALPHA_GLOB_DAT R_ALPHA = 25 /* Create GOT entry */ R_ALPHA_JMP_SLOT R_ALPHA = 26 /* Create PLT entry */ R_ALPHA_RELATIVE R_ALPHA = 27 /* Adjust by program base */ ) var ralphaStrings = []intName{ {0, "R_ALPHA_NONE"}, {1, "R_ALPHA_REFLONG"}, {2, "R_ALPHA_REFQUAD"}, {3, "R_ALPHA_GPREL32"}, {4, "R_ALPHA_LITERAL"}, {5, "R_ALPHA_LITUSE"}, {6, "R_ALPHA_GPDISP"}, {7, "R_ALPHA_BRADDR"}, {8, "R_ALPHA_HINT"}, {9, "R_ALPHA_SREL16"}, {10, "R_ALPHA_SREL32"}, {11, "R_ALPHA_SREL64"}, {12, "R_ALPHA_OP_PUSH"}, {13, "R_ALPHA_OP_STORE"}, {14, "R_ALPHA_OP_PSUB"}, {15, "R_ALPHA_OP_PRSHIFT"}, {16, "R_ALPHA_GPVALUE"}, {17, "R_ALPHA_GPRELHIGH"}, {18, "R_ALPHA_GPRELLOW"}, {19, "R_ALPHA_IMMED_GP_16"}, {20, "R_ALPHA_IMMED_GP_HI32"}, {21, "R_ALPHA_IMMED_SCN_HI32"}, {22, "R_ALPHA_IMMED_BR_HI32"}, {23, "R_ALPHA_IMMED_LO32"}, {24, "R_ALPHA_COPY"}, {25, "R_ALPHA_GLOB_DAT"}, {26, "R_ALPHA_JMP_SLOT"}, {27, "R_ALPHA_RELATIVE"}, } func (i R_ALPHA) String() string { return stringName(uint32(i), ralphaStrings, false) } func (i R_ALPHA) GoString() string { return stringName(uint32(i), ralphaStrings, true) } // Relocation types for ARM. type R_ARM int const ( R_ARM_NONE R_ARM = 0 /* No relocation. */ R_ARM_PC24 R_ARM = 1 R_ARM_ABS32 R_ARM = 2 R_ARM_REL32 R_ARM = 3 R_ARM_PC13 R_ARM = 4 R_ARM_ABS16 R_ARM = 5 R_ARM_ABS12 R_ARM = 6 R_ARM_THM_ABS5 R_ARM = 7 R_ARM_ABS8 R_ARM = 8 R_ARM_SBREL32 R_ARM = 9 R_ARM_THM_PC22 R_ARM = 10 R_ARM_THM_PC8 R_ARM = 11 R_ARM_AMP_VCALL9 R_ARM = 12 R_ARM_SWI24 R_ARM = 13 R_ARM_THM_SWI8 R_ARM = 14 R_ARM_XPC25 R_ARM = 15 R_ARM_THM_XPC22 R_ARM = 16 R_ARM_COPY R_ARM = 20 /* Copy data from shared object. */ R_ARM_GLOB_DAT R_ARM = 21 /* Set GOT entry to data address. */ R_ARM_JUMP_SLOT R_ARM = 22 /* Set GOT entry to code address. */ R_ARM_RELATIVE R_ARM = 23 /* Add load address of shared object. */ R_ARM_GOTOFF R_ARM = 24 /* Add GOT-relative symbol address. */ R_ARM_GOTPC R_ARM = 25 /* Add PC-relative GOT table address. */ R_ARM_GOT32 R_ARM = 26 /* Add PC-relative GOT offset. */ R_ARM_PLT32 R_ARM = 27 /* Add PC-relative PLT offset. */ R_ARM_GNU_VTENTRY R_ARM = 100 R_ARM_GNU_VTINHERIT R_ARM = 101 R_ARM_RSBREL32 R_ARM = 250 R_ARM_THM_RPC22 R_ARM = 251 R_ARM_RREL32 R_ARM = 252 R_ARM_RABS32 R_ARM = 253 R_ARM_RPC24 R_ARM = 254 R_ARM_RBASE R_ARM = 255 ) var rarmStrings = []intName{ {0, "R_ARM_NONE"}, {1, "R_ARM_PC24"}, {2, "R_ARM_ABS32"}, {3, "R_ARM_REL32"}, {4, "R_ARM_PC13"}, {5, "R_ARM_ABS16"}, {6, "R_ARM_ABS12"}, {7, "R_ARM_THM_ABS5"}, {8, "R_ARM_ABS8"}, {9, "R_ARM_SBREL32"}, {10, "R_ARM_THM_PC22"}, {11, "R_ARM_THM_PC8"}, {12, "R_ARM_AMP_VCALL9"}, {13, "R_ARM_SWI24"}, {14, "R_ARM_THM_SWI8"}, {15, "R_ARM_XPC25"}, {16, "R_ARM_THM_XPC22"}, {20, "R_ARM_COPY"}, {21, "R_ARM_GLOB_DAT"}, {22, "R_ARM_JUMP_SLOT"}, {23, "R_ARM_RELATIVE"}, {24, "R_ARM_GOTOFF"}, {25, "R_ARM_GOTPC"}, {26, "R_ARM_GOT32"}, {27, "R_ARM_PLT32"}, {100, "R_ARM_GNU_VTENTRY"}, {101, "R_ARM_GNU_VTINHERIT"}, {250, "R_ARM_RSBREL32"}, {251, "R_ARM_THM_RPC22"}, {252, "R_ARM_RREL32"}, {253, "R_ARM_RABS32"}, {254, "R_ARM_RPC24"}, {255, "R_ARM_RBASE"}, } func (i R_ARM) String() string { return stringName(uint32(i), rarmStrings, false) } func (i R_ARM) GoString() string { return stringName(uint32(i), rarmStrings, true) } // Relocation types for 386. type R_386 int const ( R_386_NONE R_386 = 0 /* No relocation. */ R_386_32 R_386 = 1 /* Add symbol value. */ R_386_PC32 R_386 = 2 /* Add PC-relative symbol value. */ R_386_GOT32 R_386 = 3 /* Add PC-relative GOT offset. */ R_386_PLT32 R_386 = 4 /* Add PC-relative PLT offset. */ R_386_COPY R_386 = 5 /* Copy data from shared object. */ R_386_GLOB_DAT R_386 = 6 /* Set GOT entry to data address. */ R_386_JMP_SLOT R_386 = 7 /* Set GOT entry to code address. */ R_386_RELATIVE R_386 = 8 /* Add load address of shared object. */ R_386_GOTOFF R_386 = 9 /* Add GOT-relative symbol address. */ R_386_GOTPC R_386 = 10 /* Add PC-relative GOT table address. */ R_386_TLS_TPOFF R_386 = 14 /* Negative offset in static TLS block */ R_386_TLS_IE R_386 = 15 /* Absolute address of GOT for -ve static TLS */ R_386_TLS_GOTIE R_386 = 16 /* GOT entry for negative static TLS block */ R_386_TLS_LE R_386 = 17 /* Negative offset relative to static TLS */ R_386_TLS_GD R_386 = 18 /* 32 bit offset to GOT (index,off) pair */ R_386_TLS_LDM R_386 = 19 /* 32 bit offset to GOT (index,zero) pair */ R_386_TLS_GD_32 R_386 = 24 /* 32 bit offset to GOT (index,off) pair */ R_386_TLS_GD_PUSH R_386 = 25 /* pushl instruction for Sun ABI GD sequence */ R_386_TLS_GD_CALL R_386 = 26 /* call instruction for Sun ABI GD sequence */ R_386_TLS_GD_POP R_386 = 27 /* popl instruction for Sun ABI GD sequence */ R_386_TLS_LDM_32 R_386 = 28 /* 32 bit offset to GOT (index,zero) pair */ R_386_TLS_LDM_PUSH R_386 = 29 /* pushl instruction for Sun ABI LD sequence */ R_386_TLS_LDM_CALL R_386 = 30 /* call instruction for Sun ABI LD sequence */ R_386_TLS_LDM_POP R_386 = 31 /* popl instruction for Sun ABI LD sequence */ R_386_TLS_LDO_32 R_386 = 32 /* 32 bit offset from start of TLS block */ R_386_TLS_IE_32 R_386 = 33 /* 32 bit offset to GOT static TLS offset entry */ R_386_TLS_LE_32 R_386 = 34 /* 32 bit offset within static TLS block */ R_386_TLS_DTPMOD32 R_386 = 35 /* GOT entry containing TLS index */ R_386_TLS_DTPOFF32 R_386 = 36 /* GOT entry containing TLS offset */ R_386_TLS_TPOFF32 R_386 = 37 /* GOT entry of -ve static TLS offset */ ) var r386Strings = []intName{ {0, "R_386_NONE"}, {1, "R_386_32"}, {2, "R_386_PC32"}, {3, "R_386_GOT32"}, {4, "R_386_PLT32"}, {5, "R_386_COPY"}, {6, "R_386_GLOB_DAT"}, {7, "R_386_JMP_SLOT"}, {8, "R_386_RELATIVE"}, {9, "R_386_GOTOFF"}, {10, "R_386_GOTPC"}, {14, "R_386_TLS_TPOFF"}, {15, "R_386_TLS_IE"}, {16, "R_386_TLS_GOTIE"}, {17, "R_386_TLS_LE"}, {18, "R_386_TLS_GD"}, {19, "R_386_TLS_LDM"}, {24, "R_386_TLS_GD_32"}, {25, "R_386_TLS_GD_PUSH"}, {26, "R_386_TLS_GD_CALL"}, {27, "R_386_TLS_GD_POP"}, {28, "R_386_TLS_LDM_32"}, {29, "R_386_TLS_LDM_PUSH"}, {30, "R_386_TLS_LDM_CALL"}, {31, "R_386_TLS_LDM_POP"}, {32, "R_386_TLS_LDO_32"}, {33, "R_386_TLS_IE_32"}, {34, "R_386_TLS_LE_32"}, {35, "R_386_TLS_DTPMOD32"}, {36, "R_386_TLS_DTPOFF32"}, {37, "R_386_TLS_TPOFF32"}, } func (i R_386) String() string { return stringName(uint32(i), r386Strings, false) } func (i R_386) GoString() string { return stringName(uint32(i), r386Strings, true) } // Relocation types for PowerPC. type R_PPC int const ( R_PPC_NONE R_PPC = 0 /* No relocation. */ R_PPC_ADDR32 R_PPC = 1 R_PPC_ADDR24 R_PPC = 2 R_PPC_ADDR16 R_PPC = 3 R_PPC_ADDR16_LO R_PPC = 4 R_PPC_ADDR16_HI R_PPC = 5 R_PPC_ADDR16_HA R_PPC = 6 R_PPC_ADDR14 R_PPC = 7 R_PPC_ADDR14_BRTAKEN R_PPC = 8 R_PPC_ADDR14_BRNTAKEN R_PPC = 9 R_PPC_REL24 R_PPC = 10 R_PPC_REL14 R_PPC = 11 R_PPC_REL14_BRTAKEN R_PPC = 12 R_PPC_REL14_BRNTAKEN R_PPC = 13 R_PPC_GOT16 R_PPC = 14 R_PPC_GOT16_LO R_PPC = 15 R_PPC_GOT16_HI R_PPC = 16 R_PPC_GOT16_HA R_PPC = 17 R_PPC_PLTREL24 R_PPC = 18 R_PPC_COPY R_PPC = 19 R_PPC_GLOB_DAT R_PPC = 20 R_PPC_JMP_SLOT R_PPC = 21 R_PPC_RELATIVE R_PPC = 22 R_PPC_LOCAL24PC R_PPC = 23 R_PPC_UADDR32 R_PPC = 24 R_PPC_UADDR16 R_PPC = 25 R_PPC_REL32 R_PPC = 26 R_PPC_PLT32 R_PPC = 27 R_PPC_PLTREL32 R_PPC = 28 R_PPC_PLT16_LO R_PPC = 29 R_PPC_PLT16_HI R_PPC = 30 R_PPC_PLT16_HA R_PPC = 31 R_PPC_SDAREL16 R_PPC = 32 R_PPC_SECTOFF R_PPC = 33 R_PPC_SECTOFF_LO R_PPC = 34 R_PPC_SECTOFF_HI R_PPC = 35 R_PPC_SECTOFF_HA R_PPC = 36 R_PPC_TLS R_PPC = 67 R_PPC_DTPMOD32 R_PPC = 68 R_PPC_TPREL16 R_PPC = 69 R_PPC_TPREL16_LO R_PPC = 70 R_PPC_TPREL16_HI R_PPC = 71 R_PPC_TPREL16_HA R_PPC = 72 R_PPC_TPREL32 R_PPC = 73 R_PPC_DTPREL16 R_PPC = 74 R_PPC_DTPREL16_LO R_PPC = 75 R_PPC_DTPREL16_HI R_PPC = 76 R_PPC_DTPREL16_HA R_PPC = 77 R_PPC_DTPREL32 R_PPC = 78 R_PPC_GOT_TLSGD16 R_PPC = 79 R_PPC_GOT_TLSGD16_LO R_PPC = 80 R_PPC_GOT_TLSGD16_HI R_PPC = 81 R_PPC_GOT_TLSGD16_HA R_PPC = 82 R_PPC_GOT_TLSLD16 R_PPC = 83 R_PPC_GOT_TLSLD16_LO R_PPC = 84 R_PPC_GOT_TLSLD16_HI R_PPC = 85 R_PPC_GOT_TLSLD16_HA R_PPC = 86 R_PPC_GOT_TPREL16 R_PPC = 87 R_PPC_GOT_TPREL16_LO R_PPC = 88 R_PPC_GOT_TPREL16_HI R_PPC = 89 R_PPC_GOT_TPREL16_HA R_PPC = 90 R_PPC_EMB_NADDR32 R_PPC = 101 R_PPC_EMB_NADDR16 R_PPC = 102 R_PPC_EMB_NADDR16_LO R_PPC = 103 R_PPC_EMB_NADDR16_HI R_PPC = 104 R_PPC_EMB_NADDR16_HA R_PPC = 105 R_PPC_EMB_SDAI16 R_PPC = 106 R_PPC_EMB_SDA2I16 R_PPC = 107 R_PPC_EMB_SDA2REL R_PPC = 108 R_PPC_EMB_SDA21 R_PPC = 109 R_PPC_EMB_MRKREF R_PPC = 110 R_PPC_EMB_RELSEC16 R_PPC = 111 R_PPC_EMB_RELST_LO R_PPC = 112 R_PPC_EMB_RELST_HI R_PPC = 113 R_PPC_EMB_RELST_HA R_PPC = 114 R_PPC_EMB_BIT_FLD R_PPC = 115 R_PPC_EMB_RELSDA R_PPC = 116 ) var rppcStrings = []intName{ {0, "R_PPC_NONE"}, {1, "R_PPC_ADDR32"}, {2, "R_PPC_ADDR24"}, {3, "R_PPC_ADDR16"}, {4, "R_PPC_ADDR16_LO"}, {5, "R_PPC_ADDR16_HI"}, {6, "R_PPC_ADDR16_HA"}, {7, "R_PPC_ADDR14"}, {8, "R_PPC_ADDR14_BRTAKEN"}, {9, "R_PPC_ADDR14_BRNTAKEN"}, {10, "R_PPC_REL24"}, {11, "R_PPC_REL14"}, {12, "R_PPC_REL14_BRTAKEN"}, {13, "R_PPC_REL14_BRNTAKEN"}, {14, "R_PPC_GOT16"}, {15, "R_PPC_GOT16_LO"}, {16, "R_PPC_GOT16_HI"}, {17, "R_PPC_GOT16_HA"}, {18, "R_PPC_PLTREL24"}, {19, "R_PPC_COPY"}, {20, "R_PPC_GLOB_DAT"}, {21, "R_PPC_JMP_SLOT"}, {22, "R_PPC_RELATIVE"}, {23, "R_PPC_LOCAL24PC"}, {24, "R_PPC_UADDR32"}, {25, "R_PPC_UADDR16"}, {26, "R_PPC_REL32"}, {27, "R_PPC_PLT32"}, {28, "R_PPC_PLTREL32"}, {29, "R_PPC_PLT16_LO"}, {30, "R_PPC_PLT16_HI"}, {31, "R_PPC_PLT16_HA"}, {32, "R_PPC_SDAREL16"}, {33, "R_PPC_SECTOFF"}, {34, "R_PPC_SECTOFF_LO"}, {35, "R_PPC_SECTOFF_HI"}, {36, "R_PPC_SECTOFF_HA"}, {67, "R_PPC_TLS"}, {68, "R_PPC_DTPMOD32"}, {69, "R_PPC_TPREL16"}, {70, "R_PPC_TPREL16_LO"}, {71, "R_PPC_TPREL16_HI"}, {72, "R_PPC_TPREL16_HA"}, {73, "R_PPC_TPREL32"}, {74, "R_PPC_DTPREL16"}, {75, "R_PPC_DTPREL16_LO"}, {76, "R_PPC_DTPREL16_HI"}, {77, "R_PPC_DTPREL16_HA"}, {78, "R_PPC_DTPREL32"}, {79, "R_PPC_GOT_TLSGD16"}, {80, "R_PPC_GOT_TLSGD16_LO"}, {81, "R_PPC_GOT_TLSGD16_HI"}, {82, "R_PPC_GOT_TLSGD16_HA"}, {83, "R_PPC_GOT_TLSLD16"}, {84, "R_PPC_GOT_TLSLD16_LO"}, {85, "R_PPC_GOT_TLSLD16_HI"}, {86, "R_PPC_GOT_TLSLD16_HA"}, {87, "R_PPC_GOT_TPREL16"}, {88, "R_PPC_GOT_TPREL16_LO"}, {89, "R_PPC_GOT_TPREL16_HI"}, {90, "R_PPC_GOT_TPREL16_HA"}, {101, "R_PPC_EMB_NADDR32"}, {102, "R_PPC_EMB_NADDR16"}, {103, "R_PPC_EMB_NADDR16_LO"}, {104, "R_PPC_EMB_NADDR16_HI"}, {105, "R_PPC_EMB_NADDR16_HA"}, {106, "R_PPC_EMB_SDAI16"}, {107, "R_PPC_EMB_SDA2I16"}, {108, "R_PPC_EMB_SDA2REL"}, {109, "R_PPC_EMB_SDA21"}, {110, "R_PPC_EMB_MRKREF"}, {111, "R_PPC_EMB_RELSEC16"}, {112, "R_PPC_EMB_RELST_LO"}, {113, "R_PPC_EMB_RELST_HI"}, {114, "R_PPC_EMB_RELST_HA"}, {115, "R_PPC_EMB_BIT_FLD"}, {116, "R_PPC_EMB_RELSDA"}, } func (i R_PPC) String() string { return stringName(uint32(i), rppcStrings, false) } func (i R_PPC) GoString() string { return stringName(uint32(i), rppcStrings, true) } // Relocation types for SPARC. type R_SPARC int const ( R_SPARC_NONE R_SPARC = 0 R_SPARC_8 R_SPARC = 1 R_SPARC_16 R_SPARC = 2 R_SPARC_32 R_SPARC = 3 R_SPARC_DISP8 R_SPARC = 4 R_SPARC_DISP16 R_SPARC = 5 R_SPARC_DISP32 R_SPARC = 6 R_SPARC_WDISP30 R_SPARC = 7 R_SPARC_WDISP22 R_SPARC = 8 R_SPARC_HI22 R_SPARC = 9 R_SPARC_22 R_SPARC = 10 R_SPARC_13 R_SPARC = 11 R_SPARC_LO10 R_SPARC = 12 R_SPARC_GOT10 R_SPARC = 13 R_SPARC_GOT13 R_SPARC = 14 R_SPARC_GOT22 R_SPARC = 15 R_SPARC_PC10 R_SPARC = 16 R_SPARC_PC22 R_SPARC = 17 R_SPARC_WPLT30 R_SPARC = 18 R_SPARC_COPY R_SPARC = 19 R_SPARC_GLOB_DAT R_SPARC = 20 R_SPARC_JMP_SLOT R_SPARC = 21 R_SPARC_RELATIVE R_SPARC = 22 R_SPARC_UA32 R_SPARC = 23 R_SPARC_PLT32 R_SPARC = 24 R_SPARC_HIPLT22 R_SPARC = 25 R_SPARC_LOPLT10 R_SPARC = 26 R_SPARC_PCPLT32 R_SPARC = 27 R_SPARC_PCPLT22 R_SPARC = 28 R_SPARC_PCPLT10 R_SPARC = 29 R_SPARC_10 R_SPARC = 30 R_SPARC_11 R_SPARC = 31 R_SPARC_64 R_SPARC = 32 R_SPARC_OLO10 R_SPARC = 33 R_SPARC_HH22 R_SPARC = 34 R_SPARC_HM10 R_SPARC = 35 R_SPARC_LM22 R_SPARC = 36 R_SPARC_PC_HH22 R_SPARC = 37 R_SPARC_PC_HM10 R_SPARC = 38 R_SPARC_PC_LM22 R_SPARC = 39 R_SPARC_WDISP16 R_SPARC = 40 R_SPARC_WDISP19 R_SPARC = 41 R_SPARC_GLOB_JMP R_SPARC = 42 R_SPARC_7 R_SPARC = 43 R_SPARC_5 R_SPARC = 44 R_SPARC_6 R_SPARC = 45 R_SPARC_DISP64 R_SPARC = 46 R_SPARC_PLT64 R_SPARC = 47 R_SPARC_HIX22 R_SPARC = 48 R_SPARC_LOX10 R_SPARC = 49 R_SPARC_H44 R_SPARC = 50 R_SPARC_M44 R_SPARC = 51 R_SPARC_L44 R_SPARC = 52 R_SPARC_REGISTER R_SPARC = 53 R_SPARC_UA64 R_SPARC = 54 R_SPARC_UA16 R_SPARC = 55 ) var rsparcStrings = []intName{ {0, "R_SPARC_NONE"}, {1, "R_SPARC_8"}, {2, "R_SPARC_16"}, {3, "R_SPARC_32"}, {4, "R_SPARC_DISP8"}, {5, "R_SPARC_DISP16"}, {6, "R_SPARC_DISP32"}, {7, "R_SPARC_WDISP30"}, {8, "R_SPARC_WDISP22"}, {9, "R_SPARC_HI22"}, {10, "R_SPARC_22"}, {11, "R_SPARC_13"}, {12, "R_SPARC_LO10"}, {13, "R_SPARC_GOT10"}, {14, "R_SPARC_GOT13"}, {15, "R_SPARC_GOT22"}, {16, "R_SPARC_PC10"}, {17, "R_SPARC_PC22"}, {18, "R_SPARC_WPLT30"}, {19, "R_SPARC_COPY"}, {20, "R_SPARC_GLOB_DAT"}, {21, "R_SPARC_JMP_SLOT"}, {22, "R_SPARC_RELATIVE"}, {23, "R_SPARC_UA32"}, {24, "R_SPARC_PLT32"}, {25, "R_SPARC_HIPLT22"}, {26, "R_SPARC_LOPLT10"}, {27, "R_SPARC_PCPLT32"}, {28, "R_SPARC_PCPLT22"}, {29, "R_SPARC_PCPLT10"}, {30, "R_SPARC_10"}, {31, "R_SPARC_11"}, {32, "R_SPARC_64"}, {33, "R_SPARC_OLO10"}, {34, "R_SPARC_HH22"}, {35, "R_SPARC_HM10"}, {36, "R_SPARC_LM22"}, {37, "R_SPARC_PC_HH22"}, {38, "R_SPARC_PC_HM10"}, {39, "R_SPARC_PC_LM22"}, {40, "R_SPARC_WDISP16"}, {41, "R_SPARC_WDISP19"}, {42, "R_SPARC_GLOB_JMP"}, {43, "R_SPARC_7"}, {44, "R_SPARC_5"}, {45, "R_SPARC_6"}, {46, "R_SPARC_DISP64"}, {47, "R_SPARC_PLT64"}, {48, "R_SPARC_HIX22"}, {49, "R_SPARC_LOX10"}, {50, "R_SPARC_H44"}, {51, "R_SPARC_M44"}, {52, "R_SPARC_L44"}, {53, "R_SPARC_REGISTER"}, {54, "R_SPARC_UA64"}, {55, "R_SPARC_UA16"}, } func (i R_SPARC) String() string { return stringName(uint32(i), rsparcStrings, false) } func (i R_SPARC) GoString() string { return stringName(uint32(i), rsparcStrings, true) } // Magic number for the elf trampoline, chosen wisely to be an immediate value. const ARM_MAGIC_TRAMP_NUMBER = 0x5c000003 // ELF32 File header. type Header32 struct { Ident [EI_NIDENT]byte /* File identification. */ Type uint16 /* File type. */ Machine uint16 /* Machine architecture. */ Version uint32 /* ELF format version. */ Entry uint32 /* Entry point. */ Phoff uint32 /* Program header file offset. */ Shoff uint32 /* Section header file offset. */ Flags uint32 /* Architecture-specific flags. */ Ehsize uint16 /* Size of ELF header in bytes. */ Phentsize uint16 /* Size of program header entry. */ Phnum uint16 /* Number of program header entries. */ Shentsize uint16 /* Size of section header entry. */ Shnum uint16 /* Number of section header entries. */ Shstrndx uint16 /* Section name strings section. */ } // ELF32 Section header. type Section32 struct { Name uint32 /* Section name (index into the section header string table). */ Type uint32 /* Section type. */ Flags uint32 /* Section flags. */ Addr uint32 /* Address in memory image. */ Off uint32 /* Offset in file. */ Size uint32 /* Size in bytes. */ Link uint32 /* Index of a related section. */ Info uint32 /* Depends on section type. */ Addralign uint32 /* Alignment in bytes. */ Entsize uint32 /* Size of each entry in section. */ } // ELF32 Program header. type Prog32 struct { Type uint32 /* Entry type. */ Off uint32 /* File offset of contents. */ Vaddr uint32 /* Virtual address in memory image. */ Paddr uint32 /* Physical address (not used). */ Filesz uint32 /* Size of contents in file. */ Memsz uint32 /* Size of contents in memory. */ Flags uint32 /* Access permission flags. */ Align uint32 /* Alignment in memory and file. */ } // ELF32 Dynamic structure. The ".dynamic" section contains an array of them. type Dyn32 struct { Tag int32 /* Entry type. */ Val uint32 /* Integer/Address value. */ } /* * Relocation entries. */ // ELF32 Relocations that don't need an addend field. type Rel32 struct { Off uint32 /* Location to be relocated. */ Info uint32 /* Relocation type and symbol index. */ } // ELF32 Relocations that need an addend field. type Rela32 struct { Off uint32 /* Location to be relocated. */ Info uint32 /* Relocation type and symbol index. */ Addend int32 /* Addend. */ } func R_SYM32(info uint32) uint32 { return uint32(info >> 8) } func R_TYPE32(info uint32) uint32 { return uint32(info & 0xff) } func R_INFO32(sym, typ uint32) uint32 { return sym<<8 | typ } // ELF32 Symbol. type Sym32 struct { Name uint32 Value uint32 Size uint32 Info uint8 Other uint8 Shndx uint16 } const Sym32Size = 16 func ST_BIND(info uint8) SymBind { return SymBind(info >> 4) } func ST_TYPE(info uint8) SymType { return SymType(info & 0xF) } func ST_INFO(bind SymBind, typ SymType) uint8 { return uint8(bind)<<4 | uint8(typ)&0xf } func ST_VISIBILITY(other uint8) SymVis { return SymVis(other & 3) } /* * ELF64 */ // ELF64 file header. type Header64 struct { Ident [EI_NIDENT]byte /* File identification. */ Type uint16 /* File type. */ Machine uint16 /* Machine architecture. */ Version uint32 /* ELF format version. */ Entry uint64 /* Entry point. */ Phoff uint64 /* Program header file offset. */ Shoff uint64 /* Section header file offset. */ Flags uint32 /* Architecture-specific flags. */ Ehsize uint16 /* Size of ELF header in bytes. */ Phentsize uint16 /* Size of program header entry. */ Phnum uint16 /* Number of program header entries. */ Shentsize uint16 /* Size of section header entry. */ Shnum uint16 /* Number of section header entries. */ Shstrndx uint16 /* Section name strings section. */ } // ELF64 Section header. type Section64 struct { Name uint32 /* Section name (index into the section header string table). */ Type uint32 /* Section type. */ Flags uint64 /* Section flags. */ Addr uint64 /* Address in memory image. */ Off uint64 /* Offset in file. */ Size uint64 /* Size in bytes. */ Link uint32 /* Index of a related section. */ Info uint32 /* Depends on section type. */ Addralign uint64 /* Alignment in bytes. */ Entsize uint64 /* Size of each entry in section. */ } // ELF64 Program header. type Prog64 struct { Type uint32 /* Entry type. */ Flags uint32 /* Access permission flags. */ Off uint64 /* File offset of contents. */ Vaddr uint64 /* Virtual address in memory image. */ Paddr uint64 /* Physical address (not used). */ Filesz uint64 /* Size of contents in file. */ Memsz uint64 /* Size of contents in memory. */ Align uint64 /* Alignment in memory and file. */ } // ELF64 Dynamic structure. The ".dynamic" section contains an array of them. type Dyn64 struct { Tag int64 /* Entry type. */ Val uint64 /* Integer/address value */ } /* * Relocation entries. */ /* ELF64 relocations that don't need an addend field. */ type Rel64 struct { Off uint64 /* Location to be relocated. */ Info uint64 /* Relocation type and symbol index. */ } /* ELF64 relocations that need an addend field. */ type Rela64 struct { Off uint64 /* Location to be relocated. */ Info uint64 /* Relocation type and symbol index. */ Addend int64 /* Addend. */ } func R_SYM64(info uint64) uint32 { return uint32(info >> 32) } func R_TYPE64(info uint64) uint32 { return uint32(info) } func R_INFO(sym, typ uint32) uint64 { return uint64(sym)<<32 | uint64(typ) } // ELF64 symbol table entries. type Sym64 struct { Name uint32 /* String table index of name. */ Info uint8 /* Type and binding information. */ Other uint8 /* Reserved (not used). */ Shndx uint16 /* Section index of symbol. */ Value uint64 /* Symbol value. */ Size uint64 /* Size of associated object. */ } const Sym64Size = 24 type intName struct { i uint32 s string } func stringName(i uint32, names []intName, goSyntax bool) string { for _, n := range names { if n.i == i { if goSyntax { return "elf." + n.s } return n.s } } // second pass - look for smaller to add with. // assume sorted already for j := len(names) - 1; j >= 0; j-- { n := names[j] if n.i < i { s := n.s if goSyntax { s = "elf." + s } return s + "+" + strconv.FormatUint(uint64(i-n.i), 10) } } return strconv.FormatUint(uint64(i), 10) } func flagName(i uint32, names []intName, goSyntax bool) string { s := "" for _, n := range names { if n.i&i == n.i { if len(s) > 0 { s += "+" } if goSyntax { s += "elf." } s += n.s i -= n.i } } if len(s) == 0 { return "0x" + strconv.FormatUint(uint64(i), 16) } if i != 0 { s += "+0x" + strconv.FormatUint(uint64(i), 16) } return s } go/src/pkg/debug/elf/elf_test.go0100644000000000000000000000223012412656737017034 0ustar00rootroot00000000000000// Copyright 2009 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 elf import ( "fmt" "testing" ) type nameTest struct { val interface{} str string } var nameTests = []nameTest{ {ELFOSABI_LINUX, "ELFOSABI_LINUX"}, {ET_EXEC, "ET_EXEC"}, {EM_860, "EM_860"}, {SHN_LOPROC, "SHN_LOPROC"}, {SHT_PROGBITS, "SHT_PROGBITS"}, {SHF_MERGE + SHF_TLS, "SHF_MERGE+SHF_TLS"}, {PT_LOAD, "PT_LOAD"}, {PF_W + PF_R + 0x50, "PF_W+PF_R+0x50"}, {DT_SYMBOLIC, "DT_SYMBOLIC"}, {DF_BIND_NOW, "DF_BIND_NOW"}, {NT_FPREGSET, "NT_FPREGSET"}, {STB_GLOBAL, "STB_GLOBAL"}, {STT_COMMON, "STT_COMMON"}, {STV_HIDDEN, "STV_HIDDEN"}, {R_X86_64_PC32, "R_X86_64_PC32"}, {R_ALPHA_OP_PUSH, "R_ALPHA_OP_PUSH"}, {R_ARM_THM_ABS5, "R_ARM_THM_ABS5"}, {R_386_GOT32, "R_386_GOT32"}, {R_PPC_GOT16_HI, "R_PPC_GOT16_HI"}, {R_SPARC_GOT22, "R_SPARC_GOT22"}, {ET_LOOS + 5, "ET_LOOS+5"}, {ProgFlag(0x50), "0x50"}, } func TestNames(t *testing.T) { for i, tt := range nameTests { s := fmt.Sprint(tt.val) if s != tt.str { t.Errorf("#%d: Sprint(%d) = %q, want %q", i, tt.val, s, tt.str) } } } go/src/pkg/debug/elf/file.go0100644000000000000000000005111512412656737016154 0ustar00rootroot00000000000000// Copyright 2009 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 elf implements access to ELF object files. package elf import ( "bytes" "debug/dwarf" "encoding/binary" "errors" "fmt" "io" "os" ) // TODO: error reporting detail /* * Internal ELF representation */ // A FileHeader represents an ELF file header. type FileHeader struct { Class Class Data Data Version Version OSABI OSABI ABIVersion uint8 ByteOrder binary.ByteOrder Type Type Machine Machine Entry uint64 } // A File represents an open ELF file. type File struct { FileHeader Sections []*Section Progs []*Prog closer io.Closer gnuNeed []verneed gnuVersym []byte } // A SectionHeader represents a single ELF section header. type SectionHeader struct { Name string Type SectionType Flags SectionFlag Addr uint64 Offset uint64 Size uint64 Link uint32 Info uint32 Addralign uint64 Entsize uint64 } // A Section represents a single section in an ELF file. type Section struct { SectionHeader // Embed ReaderAt for ReadAt method. // Do not embed SectionReader directly // to avoid having Read and Seek. // If a client wants Read and Seek it must use // Open() to avoid fighting over the seek offset // with other clients. io.ReaderAt sr *io.SectionReader } // Data reads and returns the contents of the ELF section. func (s *Section) Data() ([]byte, error) { dat := make([]byte, s.sr.Size()) n, err := s.sr.ReadAt(dat, 0) if n == len(dat) { err = nil } return dat[0:n], err } // stringTable reads and returns the string table given by the // specified link value. func (f *File) stringTable(link uint32) ([]byte, error) { if link <= 0 || link >= uint32(len(f.Sections)) { return nil, errors.New("section has invalid string table link") } return f.Sections[link].Data() } // Open returns a new ReadSeeker reading the ELF section. func (s *Section) Open() io.ReadSeeker { return io.NewSectionReader(s.sr, 0, 1<<63-1) } // A ProgHeader represents a single ELF program header. type ProgHeader struct { Type ProgType Flags ProgFlag Off uint64 Vaddr uint64 Paddr uint64 Filesz uint64 Memsz uint64 Align uint64 } // A Prog represents a single ELF program header in an ELF binary. type Prog struct { ProgHeader // Embed ReaderAt for ReadAt method. // Do not embed SectionReader directly // to avoid having Read and Seek. // If a client wants Read and Seek it must use // Open() to avoid fighting over the seek offset // with other clients. io.ReaderAt sr *io.SectionReader } // Open returns a new ReadSeeker reading the ELF program body. func (p *Prog) Open() io.ReadSeeker { return io.NewSectionReader(p.sr, 0, 1<<63-1) } // A Symbol represents an entry in an ELF symbol table section. type Symbol struct { Name string Info, Other byte Section SectionIndex Value, Size uint64 } /* * ELF reader */ type FormatError struct { off int64 msg string val interface{} } func (e *FormatError) Error() string { msg := e.msg if e.val != nil { msg += fmt.Sprintf(" '%v' ", e.val) } msg += fmt.Sprintf("in record at byte %#x", e.off) return msg } // Open opens the named file using os.Open and prepares it for use as an ELF binary. func Open(name string) (*File, error) { f, err := os.Open(name) if err != nil { return nil, err } ff, err := NewFile(f) if err != nil { f.Close() return nil, err } ff.closer = f return ff, nil } // Close closes the File. // If the File was created using NewFile directly instead of Open, // Close has no effect. func (f *File) Close() error { var err error if f.closer != nil { err = f.closer.Close() f.closer = nil } return err } // SectionByType returns the first section in f with the // given type, or nil if there is no such section. func (f *File) SectionByType(typ SectionType) *Section { for _, s := range f.Sections { if s.Type == typ { return s } } return nil } // NewFile creates a new File for accessing an ELF binary in an underlying reader. // The ELF binary is expected to start at position 0 in the ReaderAt. func NewFile(r io.ReaderAt) (*File, error) { sr := io.NewSectionReader(r, 0, 1<<63-1) // Read and decode ELF identifier var ident [16]uint8 if _, err := r.ReadAt(ident[0:], 0); err != nil { return nil, err } if ident[0] != '\x7f' || ident[1] != 'E' || ident[2] != 'L' || ident[3] != 'F' { return nil, &FormatError{0, "bad magic number", ident[0:4]} } f := new(File) f.Class = Class(ident[EI_CLASS]) switch f.Class { case ELFCLASS32: case ELFCLASS64: // ok default: return nil, &FormatError{0, "unknown ELF class", f.Class} } f.Data = Data(ident[EI_DATA]) switch f.Data { case ELFDATA2LSB: f.ByteOrder = binary.LittleEndian case ELFDATA2MSB: f.ByteOrder = binary.BigEndian default: return nil, &FormatError{0, "unknown ELF data encoding", f.Data} } f.Version = Version(ident[EI_VERSION]) if f.Version != EV_CURRENT { return nil, &FormatError{0, "unknown ELF version", f.Version} } f.OSABI = OSABI(ident[EI_OSABI]) f.ABIVersion = ident[EI_ABIVERSION] // Read ELF file header var phoff int64 var phentsize, phnum int var shoff int64 var shentsize, shnum, shstrndx int shstrndx = -1 switch f.Class { case ELFCLASS32: hdr := new(Header32) sr.Seek(0, os.SEEK_SET) if err := binary.Read(sr, f.ByteOrder, hdr); err != nil { return nil, err } f.Type = Type(hdr.Type) f.Machine = Machine(hdr.Machine) f.Entry = uint64(hdr.Entry) if v := Version(hdr.Version); v != f.Version { return nil, &FormatError{0, "mismatched ELF version", v} } phoff = int64(hdr.Phoff) phentsize = int(hdr.Phentsize) phnum = int(hdr.Phnum) shoff = int64(hdr.Shoff) shentsize = int(hdr.Shentsize) shnum = int(hdr.Shnum) shstrndx = int(hdr.Shstrndx) case ELFCLASS64: hdr := new(Header64) sr.Seek(0, os.SEEK_SET) if err := binary.Read(sr, f.ByteOrder, hdr); err != nil { return nil, err } f.Type = Type(hdr.Type) f.Machine = Machine(hdr.Machine) f.Entry = uint64(hdr.Entry) if v := Version(hdr.Version); v != f.Version { return nil, &FormatError{0, "mismatched ELF version", v} } phoff = int64(hdr.Phoff) phentsize = int(hdr.Phentsize) phnum = int(hdr.Phnum) shoff = int64(hdr.Shoff) shentsize = int(hdr.Shentsize) shnum = int(hdr.Shnum) shstrndx = int(hdr.Shstrndx) } if shnum > 0 && shoff > 0 && (shstrndx < 0 || shstrndx >= shnum) { return nil, &FormatError{0, "invalid ELF shstrndx", shstrndx} } // Read program headers f.Progs = make([]*Prog, phnum) for i := 0; i < phnum; i++ { off := phoff + int64(i)*int64(phentsize) sr.Seek(off, os.SEEK_SET) p := new(Prog) switch f.Class { case ELFCLASS32: ph := new(Prog32) if err := binary.Read(sr, f.ByteOrder, ph); err != nil { return nil, err } p.ProgHeader = ProgHeader{ Type: ProgType(ph.Type), Flags: ProgFlag(ph.Flags), Off: uint64(ph.Off), Vaddr: uint64(ph.Vaddr), Paddr: uint64(ph.Paddr), Filesz: uint64(ph.Filesz), Memsz: uint64(ph.Memsz), Align: uint64(ph.Align), } case ELFCLASS64: ph := new(Prog64) if err := binary.Read(sr, f.ByteOrder, ph); err != nil { return nil, err } p.ProgHeader = ProgHeader{ Type: ProgType(ph.Type), Flags: ProgFlag(ph.Flags), Off: uint64(ph.Off), Vaddr: uint64(ph.Vaddr), Paddr: uint64(ph.Paddr), Filesz: uint64(ph.Filesz), Memsz: uint64(ph.Memsz), Align: uint64(ph.Align), } } p.sr = io.NewSectionReader(r, int64(p.Off), int64(p.Filesz)) p.ReaderAt = p.sr f.Progs[i] = p } // Read section headers f.Sections = make([]*Section, shnum) names := make([]uint32, shnum) for i := 0; i < shnum; i++ { off := shoff + int64(i)*int64(shentsize) sr.Seek(off, os.SEEK_SET) s := new(Section) switch f.Class { case ELFCLASS32: sh := new(Section32) if err := binary.Read(sr, f.ByteOrder, sh); err != nil { return nil, err } names[i] = sh.Name s.SectionHeader = SectionHeader{ Type: SectionType(sh.Type), Flags: SectionFlag(sh.Flags), Addr: uint64(sh.Addr), Offset: uint64(sh.Off), Size: uint64(sh.Size), Link: uint32(sh.Link), Info: uint32(sh.Info), Addralign: uint64(sh.Addralign), Entsize: uint64(sh.Entsize), } case ELFCLASS64: sh := new(Section64) if err := binary.Read(sr, f.ByteOrder, sh); err != nil { return nil, err } names[i] = sh.Name s.SectionHeader = SectionHeader{ Type: SectionType(sh.Type), Flags: SectionFlag(sh.Flags), Offset: uint64(sh.Off), Size: uint64(sh.Size), Addr: uint64(sh.Addr), Link: uint32(sh.Link), Info: uint32(sh.Info), Addralign: uint64(sh.Addralign), Entsize: uint64(sh.Entsize), } } s.sr = io.NewSectionReader(r, int64(s.Offset), int64(s.Size)) s.ReaderAt = s.sr f.Sections[i] = s } if len(f.Sections) == 0 { return f, nil } // Load section header string table. shstrtab, err := f.Sections[shstrndx].Data() if err != nil { return nil, err } for i, s := range f.Sections { var ok bool s.Name, ok = getString(shstrtab, int(names[i])) if !ok { return nil, &FormatError{shoff + int64(i*shentsize), "bad section name index", names[i]} } } return f, nil } // getSymbols returns a slice of Symbols from parsing the symbol table // with the given type, along with the associated string table. func (f *File) getSymbols(typ SectionType) ([]Symbol, []byte, error) { switch f.Class { case ELFCLASS64: return f.getSymbols64(typ) case ELFCLASS32: return f.getSymbols32(typ) } return nil, nil, errors.New("not implemented") } func (f *File) getSymbols32(typ SectionType) ([]Symbol, []byte, error) { symtabSection := f.SectionByType(typ) if symtabSection == nil { return nil, nil, errors.New("no symbol section") } data, err := symtabSection.Data() if err != nil { return nil, nil, errors.New("cannot load symbol section") } symtab := bytes.NewReader(data) if symtab.Len()%Sym32Size != 0 { return nil, nil, errors.New("length of symbol section is not a multiple of SymSize") } strdata, err := f.stringTable(symtabSection.Link) if err != nil { return nil, nil, errors.New("cannot load string table section") } // The first entry is all zeros. var skip [Sym32Size]byte symtab.Read(skip[:]) symbols := make([]Symbol, symtab.Len()/Sym32Size) i := 0 var sym Sym32 for symtab.Len() > 0 { binary.Read(symtab, f.ByteOrder, &sym) str, _ := getString(strdata, int(sym.Name)) symbols[i].Name = str symbols[i].Info = sym.Info symbols[i].Other = sym.Other symbols[i].Section = SectionIndex(sym.Shndx) symbols[i].Value = uint64(sym.Value) symbols[i].Size = uint64(sym.Size) i++ } return symbols, strdata, nil } func (f *File) getSymbols64(typ SectionType) ([]Symbol, []byte, error) { symtabSection := f.SectionByType(typ) if symtabSection == nil { return nil, nil, errors.New("no symbol section") } data, err := symtabSection.Data() if err != nil { return nil, nil, errors.New("cannot load symbol section") } symtab := bytes.NewReader(data) if symtab.Len()%Sym64Size != 0 { return nil, nil, errors.New("length of symbol section is not a multiple of Sym64Size") } strdata, err := f.stringTable(symtabSection.Link) if err != nil { return nil, nil, errors.New("cannot load string table section") } // The first entry is all zeros. var skip [Sym64Size]byte symtab.Read(skip[:]) symbols := make([]Symbol, symtab.Len()/Sym64Size) i := 0 var sym Sym64 for symtab.Len() > 0 { binary.Read(symtab, f.ByteOrder, &sym) str, _ := getString(strdata, int(sym.Name)) symbols[i].Name = str symbols[i].Info = sym.Info symbols[i].Other = sym.Other symbols[i].Section = SectionIndex(sym.Shndx) symbols[i].Value = sym.Value symbols[i].Size = sym.Size i++ } return symbols, strdata, nil } // getString extracts a string from an ELF string table. func getString(section []byte, start int) (string, bool) { if start < 0 || start >= len(section) { return "", false } for end := start; end < len(section); end++ { if section[end] == 0 { return string(section[start:end]), true } } return "", false } // Section returns a section with the given name, or nil if no such // section exists. func (f *File) Section(name string) *Section { for _, s := range f.Sections { if s.Name == name { return s } } return nil } // applyRelocations applies relocations to dst. rels is a relocations section // in RELA format. func (f *File) applyRelocations(dst []byte, rels []byte) error { if f.Class == ELFCLASS64 && f.Machine == EM_X86_64 { return f.applyRelocationsAMD64(dst, rels) } if f.Class == ELFCLASS32 && f.Machine == EM_386 { return f.applyRelocations386(dst, rels) } return errors.New("not implemented") } func (f *File) applyRelocationsAMD64(dst []byte, rels []byte) error { // 24 is the size of Rela64. if len(rels)%24 != 0 { return errors.New("length of relocation section is not a multiple of 24") } symbols, _, err := f.getSymbols(SHT_SYMTAB) if err != nil { return err } b := bytes.NewReader(rels) var rela Rela64 for b.Len() > 0 { binary.Read(b, f.ByteOrder, &rela) symNo := rela.Info >> 32 t := R_X86_64(rela.Info & 0xffff) if symNo == 0 || symNo > uint64(len(symbols)) { continue } sym := &symbols[symNo-1] if SymType(sym.Info&0xf) != STT_SECTION { // We don't handle non-section relocations for now. continue } switch t { case R_X86_64_64: if rela.Off+8 >= uint64(len(dst)) || rela.Addend < 0 { continue } f.ByteOrder.PutUint64(dst[rela.Off:rela.Off+8], uint64(rela.Addend)) case R_X86_64_32: if rela.Off+4 >= uint64(len(dst)) || rela.Addend < 0 { continue } f.ByteOrder.PutUint32(dst[rela.Off:rela.Off+4], uint32(rela.Addend)) } } return nil } func (f *File) applyRelocations386(dst []byte, rels []byte) error { // 8 is the size of Rel32. if len(rels)%8 != 0 { return errors.New("length of relocation section is not a multiple of 8") } symbols, _, err := f.getSymbols(SHT_SYMTAB) if err != nil { return err } b := bytes.NewReader(rels) var rel Rel32 for b.Len() > 0 { binary.Read(b, f.ByteOrder, &rel) symNo := rel.Info >> 8 t := R_386(rel.Info & 0xff) if symNo == 0 || symNo > uint32(len(symbols)) { continue } sym := &symbols[symNo-1] if t == R_386_32 { if rel.Off+4 >= uint32(len(dst)) { continue } val := f.ByteOrder.Uint32(dst[rel.Off : rel.Off+4]) val += uint32(sym.Value) f.ByteOrder.PutUint32(dst[rel.Off:rel.Off+4], val) } } return nil } func (f *File) DWARF() (*dwarf.Data, error) { // There are many other DWARF sections, but these // are the required ones, and the debug/dwarf package // does not use the others, so don't bother loading them. var names = [...]string{"abbrev", "info", "str"} var dat [len(names)][]byte for i, name := range names { name = ".debug_" + name s := f.Section(name) if s == nil { continue } b, err := s.Data() if err != nil && uint64(len(b)) < s.Size { return nil, err } dat[i] = b } // If there's a relocation table for .debug_info, we have to process it // now otherwise the data in .debug_info is invalid for x86-64 objects. rela := f.Section(".rela.debug_info") if rela != nil && rela.Type == SHT_RELA && f.Machine == EM_X86_64 { data, err := rela.Data() if err != nil { return nil, err } err = f.applyRelocations(dat[1], data) if err != nil { return nil, err } } // When using clang we need to process relocations even for 386. rel := f.Section(".rel.debug_info") if rel != nil && rel.Type == SHT_REL && f.Machine == EM_386 { data, err := rel.Data() if err != nil { return nil, err } err = f.applyRelocations(dat[1], data) if err != nil { return nil, err } } abbrev, info, str := dat[0], dat[1], dat[2] d, err := dwarf.New(abbrev, nil, nil, info, nil, nil, nil, str) if err != nil { return nil, err } // Look for DWARF4 .debug_types sections. for i, s := range f.Sections { if s.Name == ".debug_types" { b, err := s.Data() if err != nil && uint64(len(b)) < s.Size { return nil, err } for _, r := range f.Sections { if r.Type != SHT_RELA && r.Type != SHT_REL { continue } if int(r.Info) != i { continue } rd, err := r.Data() if err != nil { return nil, err } err = f.applyRelocations(b, rd) if err != nil { return nil, err } } err = d.AddTypes(fmt.Sprintf("types-%d", i), b) if err != nil { return nil, err } } } return d, nil } // Symbols returns the symbol table for f. // // For compatibility with Go 1.0, Symbols omits the null symbol at index 0. // After retrieving the symbols as symtab, an externally supplied index x // corresponds to symtab[x-1], not symtab[x]. func (f *File) Symbols() ([]Symbol, error) { sym, _, err := f.getSymbols(SHT_SYMTAB) return sym, err } type ImportedSymbol struct { Name string Version string Library string } // ImportedSymbols returns the names of all symbols // referred to by the binary f that are expected to be // satisfied by other libraries at dynamic load time. // It does not return weak symbols. func (f *File) ImportedSymbols() ([]ImportedSymbol, error) { sym, str, err := f.getSymbols(SHT_DYNSYM) if err != nil { return nil, err } f.gnuVersionInit(str) var all []ImportedSymbol for i, s := range sym { if ST_BIND(s.Info) == STB_GLOBAL && s.Section == SHN_UNDEF { all = append(all, ImportedSymbol{Name: s.Name}) f.gnuVersion(i, &all[len(all)-1]) } } return all, nil } type verneed struct { File string Name string } // gnuVersionInit parses the GNU version tables // for use by calls to gnuVersion. func (f *File) gnuVersionInit(str []byte) { // Accumulate verneed information. vn := f.SectionByType(SHT_GNU_VERNEED) if vn == nil { return } d, _ := vn.Data() var need []verneed i := 0 for { if i+16 > len(d) { break } vers := f.ByteOrder.Uint16(d[i : i+2]) if vers != 1 { break } cnt := f.ByteOrder.Uint16(d[i+2 : i+4]) fileoff := f.ByteOrder.Uint32(d[i+4 : i+8]) aux := f.ByteOrder.Uint32(d[i+8 : i+12]) next := f.ByteOrder.Uint32(d[i+12 : i+16]) file, _ := getString(str, int(fileoff)) var name string j := i + int(aux) for c := 0; c < int(cnt); c++ { if j+16 > len(d) { break } // hash := f.ByteOrder.Uint32(d[j:j+4]) // flags := f.ByteOrder.Uint16(d[j+4:j+6]) other := f.ByteOrder.Uint16(d[j+6 : j+8]) nameoff := f.ByteOrder.Uint32(d[j+8 : j+12]) next := f.ByteOrder.Uint32(d[j+12 : j+16]) name, _ = getString(str, int(nameoff)) ndx := int(other) if ndx >= len(need) { a := make([]verneed, 2*(ndx+1)) copy(a, need) need = a } need[ndx] = verneed{file, name} if next == 0 { break } j += int(next) } if next == 0 { break } i += int(next) } // Versym parallels symbol table, indexing into verneed. vs := f.SectionByType(SHT_GNU_VERSYM) if vs == nil { return } d, _ = vs.Data() f.gnuNeed = need f.gnuVersym = d } // gnuVersion adds Library and Version information to sym, // which came from offset i of the symbol table. func (f *File) gnuVersion(i int, sym *ImportedSymbol) { // Each entry is two bytes. i = (i + 1) * 2 if i >= len(f.gnuVersym) { return } j := int(f.ByteOrder.Uint16(f.gnuVersym[i:])) if j < 2 || j >= len(f.gnuNeed) { return } n := &f.gnuNeed[j] sym.Library = n.File sym.Version = n.Name } // ImportedLibraries returns the names of all libraries // referred to by the binary f that are expected to be // linked with the binary at dynamic link time. func (f *File) ImportedLibraries() ([]string, error) { return f.DynString(DT_NEEDED) } // DynString returns the strings listed for the given tag in the file's dynamic // section. // // The tag must be one that takes string values: DT_NEEDED, DT_SONAME, DT_RPATH, or // DT_RUNPATH. func (f *File) DynString(tag DynTag) ([]string, error) { switch tag { case DT_NEEDED, DT_SONAME, DT_RPATH, DT_RUNPATH: default: return nil, fmt.Errorf("non-string-valued tag %v", tag) } ds := f.SectionByType(SHT_DYNAMIC) if ds == nil { // not dynamic, so no libraries return nil, nil } d, err := ds.Data() if err != nil { return nil, err } str, err := f.stringTable(ds.Link) if err != nil { return nil, err } var all []string for len(d) > 0 { var t DynTag var v uint64 switch f.Class { case ELFCLASS32: t = DynTag(f.ByteOrder.Uint32(d[0:4])) v = uint64(f.ByteOrder.Uint32(d[4:8])) d = d[8:] case ELFCLASS64: t = DynTag(f.ByteOrder.Uint64(d[0:8])) v = f.ByteOrder.Uint64(d[8:16]) d = d[16:] } if t == tag { s, ok := getString(str, int(v)) if ok { all = append(all, s) } } } return all, nil } go/src/pkg/debug/elf/file_test.go0100644000000000000000000004013612412656737017214 0ustar00rootroot00000000000000// Copyright 2009 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 elf import ( "bytes" "compress/gzip" "debug/dwarf" "encoding/binary" "io" "net" "os" "path" "reflect" "runtime" "testing" ) type fileTest struct { file string hdr FileHeader sections []SectionHeader progs []ProgHeader needed []string } var fileTests = []fileTest{ { "testdata/gcc-386-freebsd-exec", FileHeader{ELFCLASS32, ELFDATA2LSB, EV_CURRENT, ELFOSABI_FREEBSD, 0, binary.LittleEndian, ET_EXEC, EM_386, 0x80483cc}, []SectionHeader{ {"", SHT_NULL, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {".interp", SHT_PROGBITS, SHF_ALLOC, 0x80480d4, 0xd4, 0x15, 0x0, 0x0, 0x1, 0x0}, {".hash", SHT_HASH, SHF_ALLOC, 0x80480ec, 0xec, 0x90, 0x3, 0x0, 0x4, 0x4}, {".dynsym", SHT_DYNSYM, SHF_ALLOC, 0x804817c, 0x17c, 0x110, 0x4, 0x1, 0x4, 0x10}, {".dynstr", SHT_STRTAB, SHF_ALLOC, 0x804828c, 0x28c, 0xbb, 0x0, 0x0, 0x1, 0x0}, {".rel.plt", SHT_REL, SHF_ALLOC, 0x8048348, 0x348, 0x20, 0x3, 0x7, 0x4, 0x8}, {".init", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR, 0x8048368, 0x368, 0x11, 0x0, 0x0, 0x4, 0x0}, {".plt", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR, 0x804837c, 0x37c, 0x50, 0x0, 0x0, 0x4, 0x4}, {".text", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR, 0x80483cc, 0x3cc, 0x180, 0x0, 0x0, 0x4, 0x0}, {".fini", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR, 0x804854c, 0x54c, 0xc, 0x0, 0x0, 0x4, 0x0}, {".rodata", SHT_PROGBITS, SHF_ALLOC, 0x8048558, 0x558, 0xa3, 0x0, 0x0, 0x1, 0x0}, {".data", SHT_PROGBITS, SHF_WRITE + SHF_ALLOC, 0x80495fc, 0x5fc, 0xc, 0x0, 0x0, 0x4, 0x0}, {".eh_frame", SHT_PROGBITS, SHF_ALLOC, 0x8049608, 0x608, 0x4, 0x0, 0x0, 0x4, 0x0}, {".dynamic", SHT_DYNAMIC, SHF_WRITE + SHF_ALLOC, 0x804960c, 0x60c, 0x98, 0x4, 0x0, 0x4, 0x8}, {".ctors", SHT_PROGBITS, SHF_WRITE + SHF_ALLOC, 0x80496a4, 0x6a4, 0x8, 0x0, 0x0, 0x4, 0x0}, {".dtors", SHT_PROGBITS, SHF_WRITE + SHF_ALLOC, 0x80496ac, 0x6ac, 0x8, 0x0, 0x0, 0x4, 0x0}, {".jcr", SHT_PROGBITS, SHF_WRITE + SHF_ALLOC, 0x80496b4, 0x6b4, 0x4, 0x0, 0x0, 0x4, 0x0}, {".got", SHT_PROGBITS, SHF_WRITE + SHF_ALLOC, 0x80496b8, 0x6b8, 0x1c, 0x0, 0x0, 0x4, 0x4}, {".bss", SHT_NOBITS, SHF_WRITE + SHF_ALLOC, 0x80496d4, 0x6d4, 0x20, 0x0, 0x0, 0x4, 0x0}, {".comment", SHT_PROGBITS, 0x0, 0x0, 0x6d4, 0x12d, 0x0, 0x0, 0x1, 0x0}, {".debug_aranges", SHT_PROGBITS, 0x0, 0x0, 0x801, 0x20, 0x0, 0x0, 0x1, 0x0}, {".debug_pubnames", SHT_PROGBITS, 0x0, 0x0, 0x821, 0x1b, 0x0, 0x0, 0x1, 0x0}, {".debug_info", SHT_PROGBITS, 0x0, 0x0, 0x83c, 0x11d, 0x0, 0x0, 0x1, 0x0}, {".debug_abbrev", SHT_PROGBITS, 0x0, 0x0, 0x959, 0x41, 0x0, 0x0, 0x1, 0x0}, {".debug_line", SHT_PROGBITS, 0x0, 0x0, 0x99a, 0x35, 0x0, 0x0, 0x1, 0x0}, {".debug_frame", SHT_PROGBITS, 0x0, 0x0, 0x9d0, 0x30, 0x0, 0x0, 0x4, 0x0}, {".debug_str", SHT_PROGBITS, 0x0, 0x0, 0xa00, 0xd, 0x0, 0x0, 0x1, 0x0}, {".shstrtab", SHT_STRTAB, 0x0, 0x0, 0xa0d, 0xf8, 0x0, 0x0, 0x1, 0x0}, {".symtab", SHT_SYMTAB, 0x0, 0x0, 0xfb8, 0x4b0, 0x1d, 0x38, 0x4, 0x10}, {".strtab", SHT_STRTAB, 0x0, 0x0, 0x1468, 0x206, 0x0, 0x0, 0x1, 0x0}, }, []ProgHeader{ {PT_PHDR, PF_R + PF_X, 0x34, 0x8048034, 0x8048034, 0xa0, 0xa0, 0x4}, {PT_INTERP, PF_R, 0xd4, 0x80480d4, 0x80480d4, 0x15, 0x15, 0x1}, {PT_LOAD, PF_R + PF_X, 0x0, 0x8048000, 0x8048000, 0x5fb, 0x5fb, 0x1000}, {PT_LOAD, PF_R + PF_W, 0x5fc, 0x80495fc, 0x80495fc, 0xd8, 0xf8, 0x1000}, {PT_DYNAMIC, PF_R + PF_W, 0x60c, 0x804960c, 0x804960c, 0x98, 0x98, 0x4}, }, []string{"libc.so.6"}, }, { "testdata/gcc-amd64-linux-exec", FileHeader{ELFCLASS64, ELFDATA2LSB, EV_CURRENT, ELFOSABI_NONE, 0, binary.LittleEndian, ET_EXEC, EM_X86_64, 0x4003e0}, []SectionHeader{ {"", SHT_NULL, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {".interp", SHT_PROGBITS, SHF_ALLOC, 0x400200, 0x200, 0x1c, 0x0, 0x0, 0x1, 0x0}, {".note.ABI-tag", SHT_NOTE, SHF_ALLOC, 0x40021c, 0x21c, 0x20, 0x0, 0x0, 0x4, 0x0}, {".hash", SHT_HASH, SHF_ALLOC, 0x400240, 0x240, 0x24, 0x5, 0x0, 0x8, 0x4}, {".gnu.hash", SHT_LOOS + 268435446, SHF_ALLOC, 0x400268, 0x268, 0x1c, 0x5, 0x0, 0x8, 0x0}, {".dynsym", SHT_DYNSYM, SHF_ALLOC, 0x400288, 0x288, 0x60, 0x6, 0x1, 0x8, 0x18}, {".dynstr", SHT_STRTAB, SHF_ALLOC, 0x4002e8, 0x2e8, 0x3d, 0x0, 0x0, 0x1, 0x0}, {".gnu.version", SHT_HIOS, SHF_ALLOC, 0x400326, 0x326, 0x8, 0x5, 0x0, 0x2, 0x2}, {".gnu.version_r", SHT_LOOS + 268435454, SHF_ALLOC, 0x400330, 0x330, 0x20, 0x6, 0x1, 0x8, 0x0}, {".rela.dyn", SHT_RELA, SHF_ALLOC, 0x400350, 0x350, 0x18, 0x5, 0x0, 0x8, 0x18}, {".rela.plt", SHT_RELA, SHF_ALLOC, 0x400368, 0x368, 0x30, 0x5, 0xc, 0x8, 0x18}, {".init", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR, 0x400398, 0x398, 0x18, 0x0, 0x0, 0x4, 0x0}, {".plt", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR, 0x4003b0, 0x3b0, 0x30, 0x0, 0x0, 0x4, 0x10}, {".text", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR, 0x4003e0, 0x3e0, 0x1b4, 0x0, 0x0, 0x10, 0x0}, {".fini", SHT_PROGBITS, SHF_ALLOC + SHF_EXECINSTR, 0x400594, 0x594, 0xe, 0x0, 0x0, 0x4, 0x0}, {".rodata", SHT_PROGBITS, SHF_ALLOC, 0x4005a4, 0x5a4, 0x11, 0x0, 0x0, 0x4, 0x0}, {".eh_frame_hdr", SHT_PROGBITS, SHF_ALLOC, 0x4005b8, 0x5b8, 0x24, 0x0, 0x0, 0x4, 0x0}, {".eh_frame", SHT_PROGBITS, SHF_ALLOC, 0x4005e0, 0x5e0, 0xa4, 0x0, 0x0, 0x8, 0x0}, {".ctors", SHT_PROGBITS, SHF_WRITE + SHF_ALLOC, 0x600688, 0x688, 0x10, 0x0, 0x0, 0x8, 0x0}, {".dtors", SHT_PROGBITS, SHF_WRITE + SHF_ALLOC, 0x600698, 0x698, 0x10, 0x0, 0x0, 0x8, 0x0}, {".jcr", SHT_PROGBITS, SHF_WRITE + SHF_ALLOC, 0x6006a8, 0x6a8, 0x8, 0x0, 0x0, 0x8, 0x0}, {".dynamic", SHT_DYNAMIC, SHF_WRITE + SHF_ALLOC, 0x6006b0, 0x6b0, 0x1a0, 0x6, 0x0, 0x8, 0x10}, {".got", SHT_PROGBITS, SHF_WRITE + SHF_ALLOC, 0x600850, 0x850, 0x8, 0x0, 0x0, 0x8, 0x8}, {".got.plt", SHT_PROGBITS, SHF_WRITE + SHF_ALLOC, 0x600858, 0x858, 0x28, 0x0, 0x0, 0x8, 0x8}, {".data", SHT_PROGBITS, SHF_WRITE + SHF_ALLOC, 0x600880, 0x880, 0x18, 0x0, 0x0, 0x8, 0x0}, {".bss", SHT_NOBITS, SHF_WRITE + SHF_ALLOC, 0x600898, 0x898, 0x8, 0x0, 0x0, 0x4, 0x0}, {".comment", SHT_PROGBITS, 0x0, 0x0, 0x898, 0x126, 0x0, 0x0, 0x1, 0x0}, {".debug_aranges", SHT_PROGBITS, 0x0, 0x0, 0x9c0, 0x90, 0x0, 0x0, 0x10, 0x0}, {".debug_pubnames", SHT_PROGBITS, 0x0, 0x0, 0xa50, 0x25, 0x0, 0x0, 0x1, 0x0}, {".debug_info", SHT_PROGBITS, 0x0, 0x0, 0xa75, 0x1a7, 0x0, 0x0, 0x1, 0x0}, {".debug_abbrev", SHT_PROGBITS, 0x0, 0x0, 0xc1c, 0x6f, 0x0, 0x0, 0x1, 0x0}, {".debug_line", SHT_PROGBITS, 0x0, 0x0, 0xc8b, 0x13f, 0x0, 0x0, 0x1, 0x0}, {".debug_str", SHT_PROGBITS, SHF_MERGE + SHF_STRINGS, 0x0, 0xdca, 0xb1, 0x0, 0x0, 0x1, 0x1}, {".debug_ranges", SHT_PROGBITS, 0x0, 0x0, 0xe80, 0x90, 0x0, 0x0, 0x10, 0x0}, {".shstrtab", SHT_STRTAB, 0x0, 0x0, 0xf10, 0x149, 0x0, 0x0, 0x1, 0x0}, {".symtab", SHT_SYMTAB, 0x0, 0x0, 0x19a0, 0x6f0, 0x24, 0x39, 0x8, 0x18}, {".strtab", SHT_STRTAB, 0x0, 0x0, 0x2090, 0x1fc, 0x0, 0x0, 0x1, 0x0}, }, []ProgHeader{ {PT_PHDR, PF_R + PF_X, 0x40, 0x400040, 0x400040, 0x1c0, 0x1c0, 0x8}, {PT_INTERP, PF_R, 0x200, 0x400200, 0x400200, 0x1c, 0x1c, 1}, {PT_LOAD, PF_R + PF_X, 0x0, 0x400000, 0x400000, 0x684, 0x684, 0x200000}, {PT_LOAD, PF_R + PF_W, 0x688, 0x600688, 0x600688, 0x210, 0x218, 0x200000}, {PT_DYNAMIC, PF_R + PF_W, 0x6b0, 0x6006b0, 0x6006b0, 0x1a0, 0x1a0, 0x8}, {PT_NOTE, PF_R, 0x21c, 0x40021c, 0x40021c, 0x20, 0x20, 0x4}, {PT_LOOS + 0x474E550, PF_R, 0x5b8, 0x4005b8, 0x4005b8, 0x24, 0x24, 0x4}, {PT_LOOS + 0x474E551, PF_R + PF_W, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8}, }, []string{"libc.so.6"}, }, { "testdata/hello-world-core.gz", FileHeader{ELFCLASS64, ELFDATA2LSB, EV_CURRENT, ELFOSABI_NONE, 0x0, binary.LittleEndian, ET_CORE, EM_X86_64, 0x0}, []SectionHeader{}, []ProgHeader{ {Type: PT_NOTE, Flags: 0x0, Off: 0x3f8, Vaddr: 0x0, Paddr: 0x0, Filesz: 0x8ac, Memsz: 0x0, Align: 0x0}, {Type: PT_LOAD, Flags: PF_X + PF_R, Off: 0x1000, Vaddr: 0x400000, Paddr: 0x0, Filesz: 0x0, Memsz: 0x1000, Align: 0x1000}, {Type: PT_LOAD, Flags: PF_R, Off: 0x1000, Vaddr: 0x401000, Paddr: 0x0, Filesz: 0x1000, Memsz: 0x1000, Align: 0x1000}, {Type: PT_LOAD, Flags: PF_W + PF_R, Off: 0x2000, Vaddr: 0x402000, Paddr: 0x0, Filesz: 0x1000, Memsz: 0x1000, Align: 0x1000}, {Type: PT_LOAD, Flags: PF_X + PF_R, Off: 0x3000, Vaddr: 0x7f54078b8000, Paddr: 0x0, Filesz: 0x0, Memsz: 0x1b5000, Align: 0x1000}, {Type: PT_LOAD, Flags: 0x0, Off: 0x3000, Vaddr: 0x7f5407a6d000, Paddr: 0x0, Filesz: 0x0, Memsz: 0x1ff000, Align: 0x1000}, {Type: PT_LOAD, Flags: PF_R, Off: 0x3000, Vaddr: 0x7f5407c6c000, Paddr: 0x0, Filesz: 0x4000, Memsz: 0x4000, Align: 0x1000}, {Type: PT_LOAD, Flags: PF_W + PF_R, Off: 0x7000, Vaddr: 0x7f5407c70000, Paddr: 0x0, Filesz: 0x2000, Memsz: 0x2000, Align: 0x1000}, {Type: PT_LOAD, Flags: PF_W + PF_R, Off: 0x9000, Vaddr: 0x7f5407c72000, Paddr: 0x0, Filesz: 0x5000, Memsz: 0x5000, Align: 0x1000}, {Type: PT_LOAD, Flags: PF_X + PF_R, Off: 0xe000, Vaddr: 0x7f5407c77000, Paddr: 0x0, Filesz: 0x0, Memsz: 0x22000, Align: 0x1000}, {Type: PT_LOAD, Flags: PF_W + PF_R, Off: 0xe000, Vaddr: 0x7f5407e81000, Paddr: 0x0, Filesz: 0x3000, Memsz: 0x3000, Align: 0x1000}, {Type: PT_LOAD, Flags: PF_W + PF_R, Off: 0x11000, Vaddr: 0x7f5407e96000, Paddr: 0x0, Filesz: 0x3000, Memsz: 0x3000, Align: 0x1000}, {Type: PT_LOAD, Flags: PF_R, Off: 0x14000, Vaddr: 0x7f5407e99000, Paddr: 0x0, Filesz: 0x1000, Memsz: 0x1000, Align: 0x1000}, {Type: PT_LOAD, Flags: PF_W + PF_R, Off: 0x15000, Vaddr: 0x7f5407e9a000, Paddr: 0x0, Filesz: 0x2000, Memsz: 0x2000, Align: 0x1000}, {Type: PT_LOAD, Flags: PF_W + PF_R, Off: 0x17000, Vaddr: 0x7fff79972000, Paddr: 0x0, Filesz: 0x23000, Memsz: 0x23000, Align: 0x1000}, {Type: PT_LOAD, Flags: PF_X + PF_R, Off: 0x3a000, Vaddr: 0x7fff799f8000, Paddr: 0x0, Filesz: 0x1000, Memsz: 0x1000, Align: 0x1000}, {Type: PT_LOAD, Flags: PF_X + PF_R, Off: 0x3b000, Vaddr: 0xffffffffff600000, Paddr: 0x0, Filesz: 0x1000, Memsz: 0x1000, Align: 0x1000}, }, nil, }, } func TestOpen(t *testing.T) { for i := range fileTests { tt := &fileTests[i] var f *File var err error if path.Ext(tt.file) == ".gz" { var r io.ReaderAt if r, err = decompress(tt.file); err == nil { f, err = NewFile(r) } } else { f, err = Open(tt.file) } defer f.Close() if err != nil { t.Errorf("cannot open file %s: %v", tt.file, err) continue } if !reflect.DeepEqual(f.FileHeader, tt.hdr) { t.Errorf("open %s:\n\thave %#v\n\twant %#v\n", tt.file, f.FileHeader, tt.hdr) continue } for i, s := range f.Sections { if i >= len(tt.sections) { break } sh := &tt.sections[i] if !reflect.DeepEqual(&s.SectionHeader, sh) { t.Errorf("open %s, section %d:\n\thave %#v\n\twant %#v\n", tt.file, i, &s.SectionHeader, sh) } } for i, p := range f.Progs { if i >= len(tt.progs) { break } ph := &tt.progs[i] if !reflect.DeepEqual(&p.ProgHeader, ph) { t.Errorf("open %s, program %d:\n\thave %#v\n\twant %#v\n", tt.file, i, &p.ProgHeader, ph) } } tn := len(tt.sections) fn := len(f.Sections) if tn != fn { t.Errorf("open %s: len(Sections) = %d, want %d", tt.file, fn, tn) } tn = len(tt.progs) fn = len(f.Progs) if tn != fn { t.Errorf("open %s: len(Progs) = %d, want %d", tt.file, fn, tn) } tl := tt.needed fl, err := f.ImportedLibraries() if err != nil { t.Error(err) } if !reflect.DeepEqual(tl, fl) { t.Errorf("open %s: DT_NEEDED = %v, want %v", tt.file, tl, fl) } } } // elf.NewFile requires io.ReaderAt, which compress/gzip cannot // provide. Decompress the file to a bytes.Reader. func decompress(gz string) (io.ReaderAt, error) { in, err := os.Open(gz) if err != nil { return nil, err } defer in.Close() r, err := gzip.NewReader(in) if err != nil { return nil, err } var out bytes.Buffer _, err = io.Copy(&out, r) return bytes.NewReader(out.Bytes()), err } type relocationTestEntry struct { entryNumber int entry *dwarf.Entry } type relocationTest struct { file string entries []relocationTestEntry } var relocationTests = []relocationTest{ { "testdata/go-relocation-test-gcc441-x86-64.obj", []relocationTestEntry{ {0, &dwarf.Entry{Offset: 0xb, Tag: dwarf.TagCompileUnit, Children: true, Field: []dwarf.Field{{Attr: dwarf.AttrProducer, Val: "GNU C 4.4.1"}, {Attr: dwarf.AttrLanguage, Val: int64(1)}, {Attr: dwarf.AttrName, Val: "go-relocation-test.c"}, {Attr: dwarf.AttrCompDir, Val: "/tmp"}, {Attr: dwarf.AttrLowpc, Val: uint64(0x0)}, {Attr: dwarf.AttrHighpc, Val: uint64(0x6)}, {Attr: dwarf.AttrStmtList, Val: int64(0)}}}}, }, }, { "testdata/go-relocation-test-gcc441-x86.obj", []relocationTestEntry{ {0, &dwarf.Entry{Offset: 0xb, Tag: dwarf.TagCompileUnit, Children: true, Field: []dwarf.Field{{Attr: dwarf.AttrProducer, Val: "GNU C 4.4.1"}, {Attr: dwarf.AttrLanguage, Val: int64(1)}, {Attr: dwarf.AttrName, Val: "t.c"}, {Attr: dwarf.AttrCompDir, Val: "/tmp"}, {Attr: dwarf.AttrLowpc, Val: uint64(0x0)}, {Attr: dwarf.AttrHighpc, Val: uint64(0x5)}, {Attr: dwarf.AttrStmtList, Val: int64(0)}}}}, }, }, { "testdata/go-relocation-test-gcc424-x86-64.obj", []relocationTestEntry{ {0, &dwarf.Entry{Offset: 0xb, Tag: dwarf.TagCompileUnit, Children: true, Field: []dwarf.Field{{Attr: dwarf.AttrProducer, Val: "GNU C 4.2.4 (Ubuntu 4.2.4-1ubuntu4)"}, {Attr: dwarf.AttrLanguage, Val: int64(1)}, {Attr: dwarf.AttrName, Val: "go-relocation-test-gcc424.c"}, {Attr: dwarf.AttrCompDir, Val: "/tmp"}, {Attr: dwarf.AttrLowpc, Val: uint64(0x0)}, {Attr: dwarf.AttrHighpc, Val: uint64(0x6)}, {Attr: dwarf.AttrStmtList, Val: int64(0)}}}}, }, }, { "testdata/go-relocation-test-clang-x86.obj", []relocationTestEntry{ {0, &dwarf.Entry{Offset: 0xb, Tag: dwarf.TagCompileUnit, Children: true, Field: []dwarf.Field{{Attr: dwarf.AttrProducer, Val: "clang version google3-trunk (trunk r209387)"}, {Attr: dwarf.AttrLanguage, Val: int64(12)}, {Attr: dwarf.AttrName, Val: "go-relocation-test-clang.c"}, {Attr: dwarf.AttrStmtList, Val: int64(0)}, {Attr: dwarf.AttrCompDir, Val: "/tmp"}}}}, }, }, { "testdata/gcc-amd64-openbsd-debug-with-rela.obj", []relocationTestEntry{ {203, &dwarf.Entry{Offset: 0xc62, Tag: dwarf.TagMember, Children: false, Field: []dwarf.Field{{Attr: dwarf.AttrName, Val: "it_interval"}, {Attr: dwarf.AttrDeclFile, Val: int64(7)}, {Attr: dwarf.AttrDeclLine, Val: int64(236)}, {Attr: dwarf.AttrType, Val: dwarf.Offset(0xb7f)}, {Attr: dwarf.AttrDataMemberLoc, Val: []byte{0x23, 0x0}}}}}, {204, &dwarf.Entry{Offset: 0xc70, Tag: dwarf.TagMember, Children: false, Field: []dwarf.Field{{Attr: dwarf.AttrName, Val: "it_value"}, {Attr: dwarf.AttrDeclFile, Val: int64(7)}, {Attr: dwarf.AttrDeclLine, Val: int64(237)}, {Attr: dwarf.AttrType, Val: dwarf.Offset(0xb7f)}, {Attr: dwarf.AttrDataMemberLoc, Val: []byte{0x23, 0x10}}}}}, }, }, } func TestDWARFRelocations(t *testing.T) { for i, test := range relocationTests { f, err := Open(test.file) if err != nil { t.Error(err) continue } dwarf, err := f.DWARF() if err != nil { t.Error(err) continue } for _, testEntry := range test.entries { reader := dwarf.Reader() for j := 0; j < testEntry.entryNumber; j++ { entry, err := reader.Next() if entry == nil || err != nil { t.Errorf("Failed to skip to entry %d: %v", testEntry.entryNumber, err) continue } } entry, err := reader.Next() if err != nil { t.Error(err) continue } if !reflect.DeepEqual(testEntry.entry, entry) { t.Errorf("#%d/%d: mismatch: got:%#v want:%#v", i, testEntry.entryNumber, entry, testEntry.entry) continue } } } } func TestNoSectionOverlaps(t *testing.T) { // Ensure 6l outputs sections without overlaps. if runtime.GOOS != "linux" && runtime.GOOS != "freebsd" { return // not ELF } _ = net.ResolveIPAddr // force dynamic linkage f, err := Open(os.Args[0]) if err != nil { t.Error(err) return } for i, si := range f.Sections { sih := si.SectionHeader if sih.Type == SHT_NOBITS { continue } for j, sj := range f.Sections { sjh := sj.SectionHeader if i == j || sjh.Type == SHT_NOBITS || sih.Offset == sjh.Offset && sih.Size == 0 { continue } if sih.Offset >= sjh.Offset && sih.Offset < sjh.Offset+sjh.Size { t.Errorf("ld produced ELF with section %s within %s: 0x%x <= 0x%x..0x%x < 0x%x", sih.Name, sjh.Name, sjh.Offset, sih.Offset, sih.Offset+sih.Size, sjh.Offset+sjh.Size) } } } } go/src/pkg/debug/elf/testdata0040755000000000000000000000000012412656737016440 5ustar00rootroot00000000000000go/src/pkg/debug/elf/testdata/gcc-386-freebsd-exec0100755000000000000000000001315612412656737022054 0ustar00rootroot00000000000000ELF ̃4 4 (444ԀԀ   /libexec/ld-elf.so.1     , h!) A ԖLVL \+Ԗc^Dy libc.so.6printf_DYNAMIC_initenviron__deregister_frame_info__progname_init_tls_finiatexit_GLOBAL_OFFSET_TABLE__Jv_RegisterClasses__register_frame_info_edata__bss_start_endĖȖ̖ Ж < 5%%Ėh%Ȗh%̖h%ЖhUWVS ]׍t ۉ5~$Ett W hL{2PVEPSPqщAǐU=Ԗt8vҡut ha{ԖÐUthؖh3{tt h{ÐU)ă hkÐUSR vЋuX[à $FreeBSD: src/lib/csu/i386-elf/crti.S,v 1.7 2005/05/19 07:31:06 dfr Exp $hello, world $FreeBSD: src/lib/csu/i386-elf/crtn.S,v 1.6 2005/05/19 07:31:06 dfr Exp $X h L|  H ƒ$FreeBSD: src/lib/csu/common/crtbrand.c,v 1.4 2003/10/17 15:43:13 peter Exp $$FreeBSD: src/lib/csu/i386-elf/crt1.c,v 1.14 2005/05/19 07:36:07 dfr Exp $GCC: (GNU) 3.4.6 [FreeBSD] 20060305GCC: (GNU) 3.4.6 [FreeBSD] 20060305GCC: (GNU) 3.4.6 [FreeBSD] 20060305GCC: (GNU) 3.4.6 [FreeBSD] 20060305.main&GNU C 3.4.6 [FreeBSD] 20060305hello.c/home/am8/rscsigned charunsigned charshort intshort unsigned intintlong long intlong long unsigned intlong unsigned intdoublecharlong intmain&U% $ > $ > .? : ; ' I@ 1 hello.c| .AB a.unsigned int.symtab.strtab.shstrtab.interp.hash.dynsym.dynstr.rel.plt.init.text.fini.rodata.data.eh_frame.dynamic.ctors.dtors.jcr.got.bss.comment.debug_aranges.debug_pubnames.debug_info.debug_abbrev.debug_line.debug_frame.debug_strԀ#) ||19 HH Bhh=||PH̃NLL TXX\ bl  u|Ԗ - !<Y A 5 0  8 hԀ|Hh|̃L X    Ԗ)8CN\j } Ԗ`ؖC ()808,? H Uh[c { ̃Ԗ.L +ԖD  crt1.c/usr/src/lib/csu/i386-elf/crti.Scrtstuff.c__CTOR_LIST____DTOR_LIST____EH_FRAME_BEGIN____JCR_LIST__p.0completed.1__do_global_dtors_auxobject.2frame_dummy__CTOR_END____DTOR_END____FRAME_END____JCR_END____do_global_ctors_aux/usr/src/lib/csu/i386-elf/crtn.Shello.cprintf_DYNAMIC__dso_handle_initenviron__deregister_frame_info__progname_start__bss_startmain_init_tls_finiatexit_edata_GLOBAL_OFFSET_TABLE__endexit_Jv_RegisterClasses__register_frame_infogo/src/pkg/debug/elf/testdata/gcc-amd64-linux-exec0100755000000000000000000002121412412656737022166 0ustar00rootroot00000000000000ELF>@@`@8@%"@@@@@@@@@ `` ``@@ Ptd@@$$Qtd/lib64/ld-linux-x86-64.so.2GNU __gmon_start__libc.so.6puts__libc_start_mainGLIBC_2.2.5ui 1P`p`x`HkH5 % @% h% h1I^HHPTI@H@Hǘ@HH9 HtHÐ=a UHt$HHE H< HHu5 ff.UH=/ HtHt `IAÐUHH}Hu@Ðfffff.Hl$L|$H- L= Ld$Ll$Lt$H\$H8L)AIHIHt1@LLDAHH9uH\$Hl$Ld$Ll$ Lt$(L|$0H8ÐUHSHH Ht1H`HHuH[ÐHHhello, world;$@zRx $@ zRx ,4x &@ @ @@@oh@@@ = X`0h@P@ o0@oo&@`@@`GCC: (GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu1)GCC: (GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu1)GCC: (GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4)GCC: (GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4)GCC: (GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu1)GCC: (GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4)GCC: (GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu1)L @@ @<@@!o_IO_stdin_usedUy @ @>@%intLG/ @WK'/build/buildd/glibc-2.7/build-tree/amd64-libc/csu/crti.S/build/buildd/glibc-2.7/build-tree/glibc-2.7/csuGNU AS 2.18.0]P/build/buildd/glibc-2.7/build-tree/amd64-libc/csu/crtn.S/build/buildd/glibc-2.7/build-tree/glibc-2.7/csuGNU AS 2.18.0% $ > $ > $ > 4: ; I?  &IU%U%# init.cO /build/buildd/glibc-2.7/build-tree/amd64-libc/csucrti.S  @ Ku=/0K @K @${O /build/buildd/glibc-2.7/build-tree/amd64-libc/csucrtn.S @K @Klong unsigned intshort unsigned intshort int_IO_stdin_usedunsigned charlong intGNU C 4.2.4 (Ubuntu 4.2.4-1ubuntu1)/build/buildd/glibc-2.7/build-tree/glibc-2.7/csuinit.c @#@@@@@@@@@.symtab.strtab.shstrtab.interp.note.ABI-tag.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bss.comment.debug_aranges.debug_pubnames.debug_info.debug_abbrev.debug_line.debug_str.debug_ranges@#@ 5@@@$1oh@h; @`C@=Ko&@&Xo0@0 gP@Pqh@h0 {@v@0@@@@$@````P`PX`X(``& P % u  o$ ?00 ;I$9  @@@@h@@@&@0@ P@ h@ @ @ @@@@@````P`X``` ! @#.`<`J`W 0@m`|` p@#``@` `@X````$ `/ @? @F U i{@@`` @``` @ @init.cinitfini.ccall_gmon_startcrtstuff.c__CTOR_LIST____DTOR_LIST____JCR_LIST____do_global_dtors_auxcompleted.6183p.6181frame_dummy__CTOR_END____DTOR_END____FRAME_END____JCR_END____do_global_ctors_auxhello.c_GLOBAL_OFFSET_TABLE___init_array_end__init_array_start_DYNAMICdata_start__libc_csu_fini_start__gmon_start___Jv_RegisterClassesputs@@GLIBC_2.2.5_fini__libc_start_main@@GLIBC_2.2.5_IO_stdin_used__data_start__dso_handle__libc_csu_init__bss_start_end_edatamain_initgo/src/pkg/debug/elf/testdata/gcc-amd64-openbsd-debug-with-rela.obj0100644000000000000000000001462012412656737025266 0ustar00rootroot00000000000000ELF>H@@ %  : ;  : ; I8  I$ > : ; II!I/ $ >  : ;    : ;  : ; I : ; I8  : ; : ;I8 4: ; I?  JGNU C 4.2.1 20070719 /home/joel/src/go/src/cmd/cgovpv#n#|charint_GoString_Upv#n#c# _GoBytes___int8_t;signed char__uint8_t< unsigned char__int16_t=-short int__uint16_t>Lshort unsigned int__int32_t?__uint32_t@unsigned int__int64_tBlong long int__uint64_tDlong long unsigned int__int_least8_tG__uint_least8_tH__int_least16_tI__uint_least16_tJ:__int_least32_tKb__uint_least32_tLs__int_least64_tM__uint_least64_tN__int_fast8_tQb__uint_fast8_tRs__int_fast16_tSb__uint_fast16_tTs__int_fast32_tUb__uint_fast32_tVs__int_fast64_tW__uint_fast64_tX__intptr_tgalong int__uintptr_thlong unsigned int__intmax_tk__uintmax_tl__register_toa__vaddr_tr__paddr_ts__vsize_tt__psize_tu__clock_tx__clockid_ty__double_tzHdouble__float_t{cfloat__off_t|__ptrdiff_t}a__size_t~__ssize_ta__time_t__timer_t__va_list  __va_list_tagggp_offset#fp_offset#overflow_arg_areag#reg_save_areag# __wchar_t__wint_t__rune_t__wctrans_tg__wctype_tg__cpuid_t'__dev_t(b__fixpt_t)s__gid_t*s__id_t+s__in_addr_t,s__in_port_t-:__ino_t.s__key_t/a__mode_t0s__nlink_t1s__pid_t2b__rlim_t3__sa_family_t4__segsz_t5b__socklen_t6s__swblk_t7b__uid_t8s__useconds_t9s__suseconds_t:b__fsblkcnt_t;__fsfilcnt_t< Bh __mbstate8Ch __mbstateLD|x__mbstate_tE;u_char0 u_short1Lu_int2u_long3unchar5 ushort6Luint7ulong8cpuid_t:register_t;int8_tHuint8_tMint16_tRuint16_tW:int32_t\buint32_tasint64_tfuint64_tku_int8_tou_int16_tp:u_int32_tqsu_int64_trquad_tuu_quad_tvqaddr_tw vaddr_t{paddr_t|vsize_t}psize_t~caddr_tvdaddr32_tbdaddr_tdaddr64_tdev_tfixpt_tgid_tid_tino_t3key_tBmode_tQnlink_tapid_trrlim_tsegsz_tswblk_tuid_tuseconds_tsuseconds_tfsblkcnt_tfsfilcnt_t'in_addr_t in_port_t sa_family_tsocklen_tclock_tclockid_t#size_tssize_ttime_ttimer_tÿoff_tl__fd_mask7U fd_set;a fds_bits timevalZ 2a#tv_usec3a# timespec; < #tv_nsec=a# timezoneJ" tz_minuteswestK#tz_dsttimeL# bintimeP sec #frac# itimerval   # # clockinfo hz#tick#tickadj#stathz# profhz# itimerspec , - #. # tm8 h tm_sec i#tm_min j#tm_hour k#tm_mday l# tm_mon m#tm_year n#tm_wday o#tm_yday p#tm_isdst q# tm_gmtoff ra#(tm_zone sv#0bpf_int32 .Ubpf_u_int32 / bpf_program >Abf_len ?#bf_insns @# bpf_insn @code #jt #jf #k #A bpf_stat Fbs_recv G#bs_drop H# bpf_version Vbv_major W#bv_minor X# bpf_timeval 4 #tv_usec # bpf_hdr bh_tstamp #bh_caplen #bh_datalen # bh_hdrlen #bpf_dltlist bfl_len #bfl_list #__cgo__0   __cgo__1   +__cgodebug_data   /usr/include/machine/usr/include/sys/usr/include/usr/include/net../../pkg/syscall_types.h_types.htypes.hselect.htime.h_time.htime.hbpf.htypes_openbsd.go<N__cgo__0__cgo__1+__cgodebug_datait_intervaltv_secit_value.symtab.strtab.shstrtab.text.data.bss.debug_abbrev.rela.debug_info.debug_line.rela.debug_pubnames.debug_str@!@'X,X?0N:(P K~\r@Wx lw8  # __cgodebug_data__cgo__0__cgo__1 AIQ  c q      E  go/src/pkg/debug/elf/testdata/go-relocation-test-clang-x86.obj0100644000000000000000000000355412412656737024443 0ustar00rootroot00000000000000ELF@4(4 0%4I? : ;  $> 71 go-relocation-test-clang.c8v80intclang version google3-trunk (trunk r209387)go-relocation-test-clang.c/tmpvintclang version google3-trunk (trunk r209387).debug_abbrev.text.comment.bss.rel.debug_pubtypes.rel.debug_pubnames.debug_ranges.debug_str.rel.debug_info.note.GNU-stack.debug_line.debug_loc.shstrtab.strtab.symtab.data444h48d @l,;;7 \'# d Y0RWKW0W-t`PiZ K, <G -L N    vgo-relocation-test-clang.c.Linfo_string4.Linfo_string3.Linfo_string2.Linfo_string1.Linfo_string0  ,1  go/src/pkg/debug/elf/testdata/go-relocation-test-gcc424-x86-64.obj0100644000000000000000000000602012412656737024563 0ustar00rootroot00000000000000ELF>`@@UH% .? : ; I@$ > GNU C 4.2.4 (Ubuntu 4.2.4-1ubuntu4)go-relocation-test-gcc424.c/tmpfintJ2 go-relocation-test-gcc424.c Kx $ zRx $ wwvff,GCC: (GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4).symtab.strtab.shstrtab.text.data.bss.debug_abbrev.rela.debug_info.rela.debug_line.rela.debug_frame.rela.eh_frame.debug_loc.rela.debug_pubnames.rela.debug_aranges.comment.note.GNU-stack@!H'H,H4?|: PNKh aX@\ 0 s@n  }L$ <0 0l*      go-relocation-test-gcc424.cf RZb px ?     go/src/pkg/debug/elf/testdata/go-relocation-test-gcc441-x86-64.obj0100644000000000000000000000557012412656737024573 0ustar00rootroot00000000000000ELF>@@UH% .? : ; I@$ > OfKintC+ go-relocation-test.c JwwvS-f,GNU C 4.4.1go-relocation-test.c/tmpGCC: (Ubuntu 4.4.1-4ubuntu1) 4.4.1zRx AC .symtab.strtab.shstrtab.text.data.bss.debug_abbrev.rela.debug_info.rela.debug_line.debug_loc.rela.debug_pubnames.rela.debug_aranges.debug_str.comment.note.GNU-stack.rela.eh_frame@!H'H,H4?|S: PGK \Llbg  z0|0 0 0&0$8` 0x     go-relocation-test.cf    !!) 7?G 8   go/src/pkg/debug/elf/testdata/go-relocation-test-gcc441-x86.obj0100644000000000000000000000353412412656737024342 0ustar00rootroot00000000000000ELFt4(U]% .? : ; I@$ > ?t.c f;int. t.c=ttuC%fGNU C 4.4.1/tmpGCC: (Ubuntu 4.4.1-4ubuntu1) 4.4.1zR| AB .symtab.strtab.shstrtab.text.data.bss.debug_abbrev.rel.debug_info.rel.debug_line.debug_loc.rel.debug_pubnames.rel.debug_aranges.debug_str.comment.note.GNU-stack.rel.eh_frame4!<'<,<4>pC: HN2J 4Z,ie < }) y D 0I0Z$~4 T    t.cf   !/37' go/src/pkg/debug/elf/testdata/hello-world-core.gz0100644000000000000000000003060612412656737022241 0ustar00rootroot00000000000000P |E7iix@ymR@-9`9TX)jmc_ J,`(މSTN/ޟ jS/" "h=@"f~fMҖ{~w333cu:+R)[ JRuj#4 Jz!F;]nC ~t1d@(F3鶲q'?/2OTQ?+/X3s|YExnQ3x~)* YKu)ϡ 7_sV7n<3>rO^Ix:"ٞT|dkcL+Z)_QVE>;#Em2qՎ}08 >Oןӛq/X1!3cTPRPgR?(BK-E*S[eF|d}@猈Ԁ6ey}vwm`{Х*w* ~lycK,Lav;د#_-׍ ATyZy(Y%2auD^i&O!М):|-D"8\"<#&y) ֢jN~TlSQS@~[ gNyY-k{ EW~zp0i)*F`nU"/P̇wGݣEFU~S%FhK #rg?/7iC'$ $<$'Oc6?]Uɘ=4?^,^݃' $}f ¼"a|ڄ?40i y 33 3͗RQ !cBYمr ӯW9;/iL+c2eeq;)WcJ涖O觜8|uhAy\i?ފ.7 :$zv\#.mjd8>&AC5 U.K([ɨzARsr[V L>ѹ/SG tQiim[|-+JN'o*g>w&{^ž4{VǴTsFR7^Pf_Pkߜ αԴ~G`޴ OJM/>`_4ٿgZ]guQS P%ʲҤʊ-LHF=u;b; [`&{ Rۥ1[Xǝ׏]Td&H|?uE2ڊKүX6%lRy*/J Ƶخ0+%]^u>CoǥKvHS,5KNH$D .t$c=/V㧁)8?h*#zݣǠk̿ [8WgÛ;y%F"H$D"H$]08JjabnX"z\;r\T+H$tK4&1:fÍ]dLOF"X:ޅKc¶6 &ʁ_nv Z@B=ְ8v}WYZاC7pG q7w+?OQŠSkSLaܩvEU>?̙|*DMegqѝoO_=Sg2v= N灋25-#qA{`iL\ 'ţLvDz 8K?OQF^`2 ^oTGROsb SA X1._ko# ׂ.<`Y>Є3`ʿ{-w`+#= ƘrЈrC@8 ._g`p48/ VܬWt#{c{`6\[n]X~ ~~ Ir׃s`Fbƅk z`5xxa(  v{U` 8ǂA3xxSe={>Ĺ t+u?Ob:~kG~>aÕaAqyenƣcρ.4L zPxHkNdtk`{1Ld6at"a(:1%fF3;io)(@;EªW7/bFPXFy5LJl&֡qzp]h hy MqmFb9WGզh}$7(Pl 'X:XZv"htj;tݱmH76sX=Q~A! 67䡟Vs]x mzܿvW |ZZ$7n/\<iBe }˅뙗uOEa<] /*:̓d܄뒥qԁqfGӊ8ħ}\'mg0 l8Ap(x Y4 ؾ(v82)\l效yُ A>\й@hϿ?xw_#Q;pp x^&k(p 8NogYm` xx/X׃πM l$Zp#X ^݀b>;J0io p=|π11/'em Rp-mЋtq#3{a-)MAho7_FQF0C {@XcVhiSS_wdqϞq9L'n͙w~4掣,mPm]]xb$}~:+H;M?dcsMWݾ 3~->y0L;M;f݁T Bz.8O5kŒ#_~JџY]ZTrGyA9=q0?)s ۣc]*2Q S匰*q7o[Ǹqoyw+ wMWrE==ڲYL AKc]4(~ a[c߼ׇ /MkYgsm*oIG=7KM]˃ۃp@{7)cx?_]5X4c}8q@{Ʈ^kZ(~ѦϷzgw =O v{ϟ{tD|=i߰{7=h:~__:?gSK'K%Fq/q4TyB;dy%lSPTP\ =7?LGK.VTeS>jP5h~V}^XP\0 ;xz9gߍ_heޕ;~ ܨ('3`~}q Y#|a{*exɖ!oˮ?_Of*(>%SR}!7na}hO/[:Q :~ߛ~XgRF}gk Y?T/mF +~_Zi/F)\P-8Ȟ}a;/f1;ef/oS[Xjns# g,$t>!|8z]똿v%Dę Zn1| JݰSP΀8hƍhۀzrОs>}Q \ɞ[uXQ/OmAKQΚ_>mĢ~kxn!߅h߉+ Ѿ9]4`+-V vȵL^U LO>:<̖3ɠ㨿%Y?eחu|-tzCSu#<ՊQS}.mM{ӗc>]W93'oϗ7w]bl=[.P7ĝ'zg7C$//z(D"WJ ZVmD"H$D"H$D"H$D"HVv_;]W0S#sS׵?U#RWZ7>D"H$D"H$x%N.M1tp޹U^wZX8+Y $Pι{ݫ:ϪA_u:Q]'I3vsI_gzYr5.?KztJy.R :~t(p~)4;S" ,itWr+w0Gs汇.t>~^Y+IK^,]xk7+C,oXG;[8]~=p+%x5e\wp?];ˋ7ͰACyq}zE|M\5w-v$F}K%+)8D\W:~u1^f'|>gUS<Ho)wr4_r䱂Cu'k??Z1l[+cM9=蚧UaD2>oGIX>_|.!}nK3xI-yJOe\=OpM>uo.~7 >G4OQK1/YY{Vg X<笸_d9]t|qi)?M _1> | Fj v/_f~~!écuMp_L=G]ciXYHב^Nzz/Eg=H<_8y37b>n:=,QzwT_W%+t3/3X~gu99JM<3w_~2ɵ׋b'uT$i1ä溅(_N[3E˞6ƇMyUSajWKcAWc]"} pGIZ;OoCo^*j3gx~G@79ZI<`x_;iúwi..7n= M;>c:Vu\_7Vtݭt?}%N |oFWY ?G. ʋ_tMgYys=U>,ܧ/>]~ydG0l:~UzGȟ%"MΓΑ.z1w?VOH+Vnw}~T<>iNh+*/9Zx=_'sHH՜}}׎usR?s+|N|%NV}-+1$MYk6cVb?/GEg/눊H]O-_(rEVNSO~0U\3y+.a:wb*r>V<DžA/rreu?`TZT_b?>Vçwv>~FgŸNc)_^YbF_ghM|ߚ4f7vyl=c/3qUp0\M\<̯)N~]42-67mY0ksbSKJC"oru?N=d{7k],*ޞ_Zo˫}t]ĺoj=,apO>C]9qS8^ۋQ?e/vXlNqqua=]_ ֳH9uww[Y+*X( :uI J.Ry,zKߢ^ÙgoqE~kpIKG'IKh>(['ZO=g]Ogyeק/H6j_Ic/Z).yG__2o=A[&Sǧ9b_nʌ'/R;սu)1Ya:^i_|R;wBZiD?F+G 8cyԐg.w˘1 Sq=rCzs}*5|G__ <53 Qb'w).ߢWn6FI orU_%=D$?M.\=I@ܭ\$uqI%mC:E ߓ+.H{H&WIN \7@"$K!6IGIH$} _Za}TXz-A'^!˻T}:Q_XLQ3 ME&b+Hi^.!ŭE^Mw r uuj:HQOgfoIv u9-lܒMR L`p{oLel:NX8nCҠǙR*_"HIíξіNQok6j}*a7۫5jVP[`{5:p&&w*K%1oJp;RRR]w_3vZei5r4Ό:9rZr2tXv9`Z/1??d>H1ۦ^Pnmre693Ɍ9HgXCX5o6NmojjtHgǼZRTK4{:켵#o`PL56]挶XN%cy{n:;:;6D"oaͩ j4'cdN4; zvNWlIƵN' tމ钒OLhnh1b5fOt}MK:4ۡoAL$Lތgu 4ۛֆ O˟z[3͛~r=O7@Lt=t3׫ت*͛Q]<Dlp")-};5;\:9Na4v8-T2 t$HZZ餲xޠp"n̓Z̛`@_K4ݖZ=΁+lVwbX8*&©LPqoTYqߵٿ]vsUV#,VɮcVb3Aոid,>'Uj+j'FZ2:26^mS oZm/nQȘ ;_6w'Ym\e r%wT)*ofg{N|?7)EOvȈtP"d^ʔloQm7ZY#Y'g?i"٧^}r$&K]%/dDzLVy=5F3Io&$mWy?&|ި%EdR9YxlW^u*@gO,bJ<^%P"`{Cfcǔ`( i-yW; cAo,֗@`';ai`NQ̤j|I=ngөmqksk?1sGn )|ǀ2Q-eX%;rdVVeBvoXtp.3f-]۶gR^+wIY;?[b޸ߛI!֩(iᆶ{#w:*/slu:!yKᮑWM#YHH|e$edrk t.ֆ;mlTEp/!QChTg)R.rpiz{*Z¥bjAh׏BF?WYU*}μݽ{DnJo{k{KmkvoMmnPPwUc: |Ge>IJҢ*Qbj8{) NQ665[lq2[]kgc5#O T]:Bq-RN=^65Cvp[[_[[ևk"jZY]Z]YKu~Nu 縎[75VdǸXoq0dOSv{k]Z`14a1Hc+ž---"ֆ}Ms MG{Hע1aK sUG.f8Z敉mml]0o>ˉr< '/A~qoыrR·X-3zQt-"qzQtQ}( Zn/(!g1<$!5Ts?<~%'C ~/~':߾]*._w~92NxY˗\) wwݫ $wEBC'tݧV!lNkjkuӓ<eK G챌>$kgb˜_"[J؜{65'ӫ>WE^j!PP!C_@y3\}-6XnbqI(x׹W!{IƲE@nYt\:DatnpĂr f2[XO [[{x31}vW}kYjrR-`uqx).r|y^. a|Y9<>_>]]c_U$S :ZX964h=E4yb$MN-(+6VLr,sd^g S6=|jWV7يd!2q s QJͥtt uG6(u*+"6$&leϏvls j*_aTZXq] X#2rV@s&Yu<$&a:k=GAt-} X75=?J\[XVWU oρ?&'OFa>;ɹa+ {L{,2~8g}R, D,LeWZ,6g-ɘ֛ciir)fWL~3hI:|M@?u M^F֯_|zb[x?]BoJ-F $W[ٜJ0B}Jj4P8IJ5SBʑx8P֍RYD0*qh |{K^(-?Vss2%\hg3楝~^niCq#+@< bq>,8O-b?#/ %yxKR i$ 7#*9D/agQrET޿h,yz%wsݜD/?H,9pG83.?)T H/ϭZ‹xT\c:o}/A6y<yG<\ږ void main(int argc, char *argv[]) { printf("hello, world\n"); } go/src/pkg/debug/gosym0040755000000000000000000000000012412656737015217 5ustar00rootroot00000000000000go/src/pkg/debug/gosym/pclinetest.asm0100644000000000000000000002415512412656737020156 0ustar00rootroot00000000000000TEXT linefrompc(SB),4,$0 // Each byte stores its line delta BYTE $2; BYTE $1; BYTE $1; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $1; BYTE $1; BYTE $1; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $1; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; BYTE $0; #include "pclinetest.h" BYTE $2; #include "pclinetest.h" BYTE $2; BYTE $255; TEXT pcfromline(SB),4,$0 // Each record stores its line delta, then n, then n more bytes BYTE $32; BYTE $0; BYTE $1; BYTE $1; BYTE $0; BYTE $1; BYTE $0; BYTE $2; BYTE $4; BYTE $0; BYTE $0; BYTE $0; BYTE $0; #include "pclinetest.h" BYTE $4; BYTE $0; BYTE $3; BYTE $3; BYTE $0; BYTE $0; BYTE $0; #include "pclinetest.h" BYTE $4; BYTE $3; BYTE $0; BYTE $0; BYTE $0; BYTE $255; // Keep the linker happy TEXT main·main(SB),4,$0 RET TEXT main·init(SB),4,$0 // Prevent GC of our test symbols CALL linefrompc(SB) CALL pcfromline(SB) RET go/src/pkg/debug/gosym/pclinetest.h0100644000000000000000000000011212412656737017610 0ustar00rootroot00000000000000// +build ignore // Empty include file to generate z symbols // EOF go/src/pkg/debug/gosym/pclntab.go0100644000000000000000000002754612412656737017263 0ustar00rootroot00000000000000// Copyright 2009 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. /* * Line tables */ package gosym import ( "encoding/binary" "sync" ) // A LineTable is a data structure mapping program counters to line numbers. // // In Go 1.1 and earlier, each function (represented by a Func) had its own LineTable, // and the line number corresponded to a numbering of all source lines in the // program, across all files. That absolute line number would then have to be // converted separately to a file name and line number within the file. // // In Go 1.2, the format of the data changed so that there is a single LineTable // for the entire program, shared by all Funcs, and there are no absolute line // numbers, just line numbers within specific files. // // For the most part, LineTable's methods should be treated as an internal // detail of the package; callers should use the methods on Table instead. type LineTable struct { Data []byte PC uint64 Line int // Go 1.2 state mu sync.Mutex go12 int // is this in Go 1.2 format? -1 no, 0 unknown, 1 yes binary binary.ByteOrder quantum uint32 ptrsize uint32 functab []byte nfunctab uint32 filetab []byte nfiletab uint32 fileMap map[string]uint32 } // NOTE(rsc): This is wrong for GOARCH=arm, which uses a quantum of 4, // but we have no idea whether we're using arm or not. This only // matters in the old (pre-Go 1.2) symbol table format, so it's not worth // fixing. const oldQuantum = 1 func (t *LineTable) parse(targetPC uint64, targetLine int) (b []byte, pc uint64, line int) { // The PC/line table can be thought of as a sequence of // * // batches. Each update batch results in a (pc, line) pair, // where line applies to every PC from pc up to but not // including the pc of the next pair. // // Here we process each update individually, which simplifies // the code, but makes the corner cases more confusing. b, pc, line = t.Data, t.PC, t.Line for pc <= targetPC && line != targetLine && len(b) > 0 { code := b[0] b = b[1:] switch { case code == 0: if len(b) < 4 { b = b[0:0] break } val := binary.BigEndian.Uint32(b) b = b[4:] line += int(val) case code <= 64: line += int(code) case code <= 128: line -= int(code - 64) default: pc += oldQuantum * uint64(code-128) continue } pc += oldQuantum } return b, pc, line } func (t *LineTable) slice(pc uint64) *LineTable { data, pc, line := t.parse(pc, -1) return &LineTable{Data: data, PC: pc, Line: line} } // PCToLine returns the line number for the given program counter. // Callers should use Table's PCToLine method instead. func (t *LineTable) PCToLine(pc uint64) int { if t.isGo12() { return t.go12PCToLine(pc) } _, _, line := t.parse(pc, -1) return line } // LineToPC returns the program counter for the given line number, // considering only program counters before maxpc. // Callers should use Table's LineToPC method instead. func (t *LineTable) LineToPC(line int, maxpc uint64) uint64 { if t.isGo12() { return 0 } _, pc, line1 := t.parse(maxpc, line) if line1 != line { return 0 } // Subtract quantum from PC to account for post-line increment return pc - oldQuantum } // NewLineTable returns a new PC/line table // corresponding to the encoded data. // Text must be the start address of the // corresponding text segment. func NewLineTable(data []byte, text uint64) *LineTable { return &LineTable{Data: data, PC: text, Line: 0} } // Go 1.2 symbol table format. // See golang.org/s/go12symtab. // // A general note about the methods here: rather than try to avoid // index out of bounds errors, we trust Go to detect them, and then // we recover from the panics and treat them as indicative of a malformed // or incomplete table. // // The methods called by symtab.go, which begin with "go12" prefixes, // are expected to have that recovery logic. // isGo12 reports whether this is a Go 1.2 (or later) symbol table. func (t *LineTable) isGo12() bool { t.go12Init() return t.go12 == 1 } const go12magic = 0xfffffffb // uintptr returns the pointer-sized value encoded at b. // The pointer size is dictated by the table being read. func (t *LineTable) uintptr(b []byte) uint64 { if t.ptrsize == 4 { return uint64(t.binary.Uint32(b)) } return t.binary.Uint64(b) } // go12init initializes the Go 1.2 metadata if t is a Go 1.2 symbol table. func (t *LineTable) go12Init() { t.mu.Lock() defer t.mu.Unlock() if t.go12 != 0 { return } defer func() { // If we panic parsing, assume it's not a Go 1.2 symbol table. recover() }() // Check header: 4-byte magic, two zeros, pc quantum, pointer size. t.go12 = -1 // not Go 1.2 until proven otherwise if len(t.Data) < 16 || t.Data[4] != 0 || t.Data[5] != 0 || (t.Data[6] != 1 && t.Data[6] != 4) || // pc quantum (t.Data[7] != 4 && t.Data[7] != 8) { // pointer size return } switch uint32(go12magic) { case binary.LittleEndian.Uint32(t.Data): t.binary = binary.LittleEndian case binary.BigEndian.Uint32(t.Data): t.binary = binary.BigEndian default: return } t.quantum = uint32(t.Data[6]) t.ptrsize = uint32(t.Data[7]) t.nfunctab = uint32(t.uintptr(t.Data[8:])) t.functab = t.Data[8+t.ptrsize:] functabsize := t.nfunctab*2*t.ptrsize + t.ptrsize fileoff := t.binary.Uint32(t.functab[functabsize:]) t.functab = t.functab[:functabsize] t.filetab = t.Data[fileoff:] t.nfiletab = t.binary.Uint32(t.filetab) t.filetab = t.filetab[:t.nfiletab*4] t.go12 = 1 // so far so good } // go12Funcs returns a slice of Funcs derived from the Go 1.2 pcln table. func (t *LineTable) go12Funcs() []Func { // Assume it is malformed and return nil on error. defer func() { recover() }() n := len(t.functab) / int(t.ptrsize) / 2 funcs := make([]Func, n) for i := range funcs { f := &funcs[i] f.Entry = uint64(t.uintptr(t.functab[2*i*int(t.ptrsize):])) f.End = uint64(t.uintptr(t.functab[(2*i+2)*int(t.ptrsize):])) info := t.Data[t.uintptr(t.functab[(2*i+1)*int(t.ptrsize):]):] f.LineTable = t f.FrameSize = int(t.binary.Uint32(info[t.ptrsize+2*4:])) f.Sym = &Sym{ Value: f.Entry, Type: 'T', Name: t.string(t.binary.Uint32(info[t.ptrsize:])), GoType: 0, Func: f, } } return funcs } // findFunc returns the func corresponding to the given program counter. func (t *LineTable) findFunc(pc uint64) []byte { if pc < t.uintptr(t.functab) || pc >= t.uintptr(t.functab[len(t.functab)-int(t.ptrsize):]) { return nil } // The function table is a list of 2*nfunctab+1 uintptrs, // alternating program counters and offsets to func structures. f := t.functab nf := t.nfunctab for nf > 0 { m := nf / 2 fm := f[2*t.ptrsize*m:] if t.uintptr(fm) <= pc && pc < t.uintptr(fm[2*t.ptrsize:]) { return t.Data[t.uintptr(fm[t.ptrsize:]):] } else if pc < t.uintptr(fm) { nf = m } else { f = f[(m+1)*2*t.ptrsize:] nf -= m + 1 } } return nil } // readvarint reads, removes, and returns a varint from *pp. func (t *LineTable) readvarint(pp *[]byte) uint32 { var v, shift uint32 p := *pp for shift = 0; ; shift += 7 { b := p[0] p = p[1:] v |= (uint32(b) & 0x7F) << shift if b&0x80 == 0 { break } } *pp = p return v } // string returns a Go string found at off. func (t *LineTable) string(off uint32) string { for i := off; ; i++ { if t.Data[i] == 0 { return string(t.Data[off:i]) } } } // step advances to the next pc, value pair in the encoded table. func (t *LineTable) step(p *[]byte, pc *uint64, val *int32, first bool) bool { uvdelta := t.readvarint(p) if uvdelta == 0 && !first { return false } if uvdelta&1 != 0 { uvdelta = ^(uvdelta >> 1) } else { uvdelta >>= 1 } vdelta := int32(uvdelta) pcdelta := t.readvarint(p) * t.quantum *pc += uint64(pcdelta) *val += vdelta return true } // pcvalue reports the value associated with the target pc. // off is the offset to the beginning of the pc-value table, // and entry is the start PC for the corresponding function. func (t *LineTable) pcvalue(off uint32, entry, targetpc uint64) int32 { if off == 0 { return -1 } p := t.Data[off:] val := int32(-1) pc := entry for t.step(&p, &pc, &val, pc == entry) { if targetpc < pc { return val } } return -1 } // findFileLine scans one function in the binary looking for a // program counter in the given file on the given line. // It does so by running the pc-value tables mapping program counter // to file number. Since most functions come from a single file, these // are usually short and quick to scan. If a file match is found, then the // code goes to the expense of looking for a simultaneous line number match. func (t *LineTable) findFileLine(entry uint64, filetab, linetab uint32, filenum, line int32) uint64 { if filetab == 0 || linetab == 0 { return 0 } fp := t.Data[filetab:] fl := t.Data[linetab:] fileVal := int32(-1) filePC := entry lineVal := int32(-1) linePC := entry fileStartPC := filePC for t.step(&fp, &filePC, &fileVal, filePC == entry) { if fileVal == filenum && fileStartPC < filePC { // fileVal is in effect starting at fileStartPC up to // but not including filePC, and it's the file we want. // Run the PC table looking for a matching line number // or until we reach filePC. lineStartPC := linePC for linePC < filePC && t.step(&fl, &linePC, &lineVal, linePC == entry) { // lineVal is in effect until linePC, and lineStartPC < filePC. if lineVal == line { if fileStartPC <= lineStartPC { return lineStartPC } if fileStartPC < linePC { return fileStartPC } } lineStartPC = linePC } } fileStartPC = filePC } return 0 } // go12PCToLine maps program counter to line number for the Go 1.2 pcln table. func (t *LineTable) go12PCToLine(pc uint64) (line int) { defer func() { if recover() != nil { line = -1 } }() f := t.findFunc(pc) if f == nil { return -1 } entry := t.uintptr(f) linetab := t.binary.Uint32(f[t.ptrsize+5*4:]) return int(t.pcvalue(linetab, entry, pc)) } // go12PCToFile maps program counter to file name for the Go 1.2 pcln table. func (t *LineTable) go12PCToFile(pc uint64) (file string) { defer func() { if recover() != nil { file = "" } }() f := t.findFunc(pc) if f == nil { return "" } entry := t.uintptr(f) filetab := t.binary.Uint32(f[t.ptrsize+4*4:]) fno := t.pcvalue(filetab, entry, pc) if fno <= 0 { return "" } return t.string(t.binary.Uint32(t.filetab[4*fno:])) } // go12LineToPC maps a (file, line) pair to a program counter for the Go 1.2 pcln table. func (t *LineTable) go12LineToPC(file string, line int) (pc uint64) { defer func() { if recover() != nil { pc = 0 } }() t.initFileMap() filenum := t.fileMap[file] if filenum == 0 { return 0 } // Scan all functions. // If this turns out to be a bottleneck, we could build a map[int32][]int32 // mapping file number to a list of functions with code from that file. for i := uint32(0); i < t.nfunctab; i++ { f := t.Data[t.uintptr(t.functab[2*t.ptrsize*i+t.ptrsize:]):] entry := t.uintptr(f) filetab := t.binary.Uint32(f[t.ptrsize+4*4:]) linetab := t.binary.Uint32(f[t.ptrsize+5*4:]) pc := t.findFileLine(entry, filetab, linetab, int32(filenum), int32(line)) if pc != 0 { return pc } } return 0 } // initFileMap initializes the map from file name to file number. func (t *LineTable) initFileMap() { t.mu.Lock() defer t.mu.Unlock() if t.fileMap != nil { return } m := make(map[string]uint32) for i := uint32(1); i < t.nfiletab; i++ { s := t.string(t.binary.Uint32(t.filetab[4*i:])) m[s] = i } t.fileMap = m } // go12MapFiles adds to m a key for every file in the Go 1.2 LineTable. // Every key maps to obj. That's not a very interesting map, but it provides // a way for callers to obtain the list of files in the program. func (t *LineTable) go12MapFiles(m map[string]*Obj, obj *Obj) { defer func() { recover() }() t.initFileMap() for file := range t.fileMap { m[file] = obj } } go/src/pkg/debug/gosym/pclntab_test.go0100644000000000000000000001533112412656737020307 0ustar00rootroot00000000000000// Copyright 2009 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 gosym import ( "debug/elf" "fmt" "io/ioutil" "os" "os/exec" "path/filepath" "runtime" "strings" "testing" ) var ( pclineTempDir string pclinetestBinary string ) func dotest(self bool) bool { // For now, only works on amd64 platforms. if runtime.GOARCH != "amd64" { return false } // Self test reads test binary; only works on Linux. if self && runtime.GOOS != "linux" { return false } // Command below expects "sh", so Unix. if runtime.GOOS == "windows" || runtime.GOOS == "plan9" { return false } if pclinetestBinary != "" { return true } var err error pclineTempDir, err = ioutil.TempDir("", "pclinetest") if err != nil { panic(err) } if strings.Contains(pclineTempDir, " ") { panic("unexpected space in tempdir") } // This command builds pclinetest from pclinetest.asm; // the resulting binary looks like it was built from pclinetest.s, // but we have renamed it to keep it away from the go tool. pclinetestBinary = filepath.Join(pclineTempDir, "pclinetest") command := fmt.Sprintf("go tool 6a -o %s.6 pclinetest.asm && go tool 6l -H linux -E main -o %s %s.6", pclinetestBinary, pclinetestBinary, pclinetestBinary) cmd := exec.Command("sh", "-c", command) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil { panic(err) } return true } func endtest() { if pclineTempDir != "" { os.RemoveAll(pclineTempDir) pclineTempDir = "" pclinetestBinary = "" } } func getTable(t *testing.T) *Table { f, tab := crack(os.Args[0], t) f.Close() return tab } func crack(file string, t *testing.T) (*elf.File, *Table) { // Open self f, err := elf.Open(file) if err != nil { t.Fatal(err) } return parse(file, f, t) } func parse(file string, f *elf.File, t *testing.T) (*elf.File, *Table) { symdat, err := f.Section(".gosymtab").Data() if err != nil { f.Close() t.Fatalf("reading %s gosymtab: %v", file, err) } pclndat, err := f.Section(".gopclntab").Data() if err != nil { f.Close() t.Fatalf("reading %s gopclntab: %v", file, err) } pcln := NewLineTable(pclndat, f.Section(".text").Addr) tab, err := NewTable(symdat, pcln) if err != nil { f.Close() t.Fatalf("parsing %s gosymtab: %v", file, err) } return f, tab } var goarch = os.Getenv("O") func TestLineFromAline(t *testing.T) { if !dotest(true) { return } defer endtest() tab := getTable(t) if tab.go12line != nil { // aline's don't exist in the Go 1.2 table. t.Skip("not relevant to Go 1.2 symbol table") } // Find the sym package pkg := tab.LookupFunc("debug/gosym.TestLineFromAline").Obj if pkg == nil { t.Fatalf("nil pkg") } // Walk every absolute line and ensure that we hit every // source line monotonically lastline := make(map[string]int) final := -1 for i := 0; i < 10000; i++ { path, line := pkg.lineFromAline(i) // Check for end of object if path == "" { if final == -1 { final = i - 1 } continue } else if final != -1 { t.Fatalf("reached end of package at absolute line %d, but absolute line %d mapped to %s:%d", final, i, path, line) } // It's okay to see files multiple times (e.g., sys.a) if line == 1 { lastline[path] = 1 continue } // Check that the is the next line in path ll, ok := lastline[path] if !ok { t.Errorf("file %s starts on line %d", path, line) } else if line != ll+1 { t.Fatalf("expected next line of file %s to be %d, got %d", path, ll+1, line) } lastline[path] = line } if final == -1 { t.Errorf("never reached end of object") } } func TestLineAline(t *testing.T) { if !dotest(true) { return } defer endtest() tab := getTable(t) if tab.go12line != nil { // aline's don't exist in the Go 1.2 table. t.Skip("not relevant to Go 1.2 symbol table") } for _, o := range tab.Files { // A source file can appear multiple times in a // object. alineFromLine will always return alines in // the first file, so track which lines we've seen. found := make(map[string]int) for i := 0; i < 1000; i++ { path, line := o.lineFromAline(i) if path == "" { break } // cgo files are full of 'Z' symbols, which we don't handle if len(path) > 4 && path[len(path)-4:] == ".cgo" { continue } if minline, ok := found[path]; path != "" && ok { if minline >= line { // We've already covered this file continue } } found[path] = line a, err := o.alineFromLine(path, line) if err != nil { t.Errorf("absolute line %d in object %s maps to %s:%d, but mapping that back gives error %s", i, o.Paths[0].Name, path, line, err) } else if a != i { t.Errorf("absolute line %d in object %s maps to %s:%d, which maps back to absolute line %d\n", i, o.Paths[0].Name, path, line, a) } } } } func TestPCLine(t *testing.T) { if !dotest(false) { return } defer endtest() f, tab := crack(pclinetestBinary, t) text := f.Section(".text") textdat, err := text.Data() if err != nil { t.Fatalf("reading .text: %v", err) } // Test PCToLine sym := tab.LookupFunc("linefrompc") wantLine := 0 for pc := sym.Entry; pc < sym.End; pc++ { off := pc - text.Addr // TODO(rsc): should not need off; bug in 8g if textdat[off] == 255 { break } wantLine += int(textdat[off]) t.Logf("off is %d %#x (max %d)", off, textdat[off], sym.End-pc) file, line, fn := tab.PCToLine(pc) if fn == nil { t.Errorf("failed to get line of PC %#x", pc) } else if !strings.HasSuffix(file, "pclinetest.asm") || line != wantLine || fn != sym { t.Errorf("PCToLine(%#x) = %s:%d (%s), want %s:%d (%s)", pc, file, line, fn.Name, "pclinetest.asm", wantLine, sym.Name) } } // Test LineToPC sym = tab.LookupFunc("pcfromline") lookupline := -1 wantLine = 0 off := uint64(0) // TODO(rsc): should not need off; bug in 8g for pc := sym.Value; pc < sym.End; pc += 2 + uint64(textdat[off]) { file, line, fn := tab.PCToLine(pc) off = pc - text.Addr if textdat[off] == 255 { break } wantLine += int(textdat[off]) if line != wantLine { t.Errorf("expected line %d at PC %#x in pcfromline, got %d", wantLine, pc, line) off = pc + 1 - text.Addr continue } if lookupline == -1 { lookupline = line } for ; lookupline <= line; lookupline++ { pc2, fn2, err := tab.LineToPC(file, lookupline) if lookupline != line { // Should be nothing on this line if err == nil { t.Errorf("expected no PC at line %d, got %#x (%s)", lookupline, pc2, fn2.Name) } } else if err != nil { t.Errorf("failed to get PC of line %d: %s", lookupline, err) } else if pc != pc2 { t.Errorf("expected PC %#x (%s) at line %d, got PC %#x (%s)", pc, fn.Name, line, pc2, fn2.Name) } } off = pc + 1 - text.Addr } } go/src/pkg/debug/gosym/symtab.go0100644000000000000000000003676612412656737017143 0ustar00rootroot00000000000000// Copyright 2009 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 gosym implements access to the Go symbol // and line number tables embedded in Go binaries generated // by the gc compilers. package gosym // The table format is a variant of the format used in Plan 9's a.out // format, documented at http://plan9.bell-labs.com/magic/man2html/6/a.out. // The best reference for the differences between the Plan 9 format // and the Go format is the runtime source, specifically ../../runtime/symtab.c. import ( "bytes" "encoding/binary" "fmt" "strconv" "strings" ) /* * Symbols */ // A Sym represents a single symbol table entry. type Sym struct { Value uint64 Type byte Name string GoType uint64 // If this symbol if a function symbol, the corresponding Func Func *Func } // Static reports whether this symbol is static (not visible outside its file). func (s *Sym) Static() bool { return s.Type >= 'a' } // PackageName returns the package part of the symbol name, // or the empty string if there is none. func (s *Sym) PackageName() string { if i := strings.Index(s.Name, "."); i != -1 { return s.Name[0:i] } return "" } // ReceiverName returns the receiver type name of this symbol, // or the empty string if there is none. func (s *Sym) ReceiverName() string { l := strings.Index(s.Name, ".") r := strings.LastIndex(s.Name, ".") if l == -1 || r == -1 || l == r { return "" } return s.Name[l+1 : r] } // BaseName returns the symbol name without the package or receiver name. func (s *Sym) BaseName() string { if i := strings.LastIndex(s.Name, "."); i != -1 { return s.Name[i+1:] } return s.Name } // A Func collects information about a single function. type Func struct { Entry uint64 *Sym End uint64 Params []*Sym Locals []*Sym FrameSize int LineTable *LineTable Obj *Obj } // An Obj represents a collection of functions in a symbol table. // // The exact method of division of a binary into separate Objs is an internal detail // of the symbol table format. // // In early versions of Go each source file became a different Obj. // // In Go 1 and Go 1.1, each package produced one Obj for all Go sources // and one Obj per C source file. // // In Go 1.2, there is a single Obj for the entire program. type Obj struct { // Funcs is a list of functions in the Obj. Funcs []Func // In Go 1.1 and earlier, Paths is a list of symbols corresponding // to the source file names that produced the Obj. // In Go 1.2, Paths is nil. // Use the keys of Table.Files to obtain a list of source files. Paths []Sym // meta } /* * Symbol tables */ // Table represents a Go symbol table. It stores all of the // symbols decoded from the program and provides methods to translate // between symbols, names, and addresses. type Table struct { Syms []Sym Funcs []Func Files map[string]*Obj // nil for Go 1.2 and later binaries Objs []Obj // nil for Go 1.2 and later binaries go12line *LineTable // Go 1.2 line number table } type sym struct { value uint64 gotype uint64 typ byte name []byte } var ( littleEndianSymtab = []byte{0xFD, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00} bigEndianSymtab = []byte{0xFF, 0xFF, 0xFF, 0xFD, 0x00, 0x00, 0x00} oldLittleEndianSymtab = []byte{0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00} ) func walksymtab(data []byte, fn func(sym) error) error { if len(data) == 0 { // missing symtab is okay return nil } var order binary.ByteOrder = binary.BigEndian newTable := false switch { case bytes.HasPrefix(data, oldLittleEndianSymtab): // Same as Go 1.0, but little endian. // Format was used during interim development between Go 1.0 and Go 1.1. // Should not be widespread, but easy to support. data = data[6:] order = binary.LittleEndian case bytes.HasPrefix(data, bigEndianSymtab): newTable = true case bytes.HasPrefix(data, littleEndianSymtab): newTable = true order = binary.LittleEndian } var ptrsz int if newTable { if len(data) < 8 { return &DecodingError{len(data), "unexpected EOF", nil} } ptrsz = int(data[7]) if ptrsz != 4 && ptrsz != 8 { return &DecodingError{7, "invalid pointer size", ptrsz} } data = data[8:] } var s sym p := data for len(p) >= 4 { var typ byte if newTable { // Symbol type, value, Go type. typ = p[0] & 0x3F wideValue := p[0]&0x40 != 0 goType := p[0]&0x80 != 0 if typ < 26 { typ += 'A' } else { typ += 'a' - 26 } s.typ = typ p = p[1:] if wideValue { if len(p) < ptrsz { return &DecodingError{len(data), "unexpected EOF", nil} } // fixed-width value if ptrsz == 8 { s.value = order.Uint64(p[0:8]) p = p[8:] } else { s.value = uint64(order.Uint32(p[0:4])) p = p[4:] } } else { // varint value s.value = 0 shift := uint(0) for len(p) > 0 && p[0]&0x80 != 0 { s.value |= uint64(p[0]&0x7F) << shift shift += 7 p = p[1:] } if len(p) == 0 { return &DecodingError{len(data), "unexpected EOF", nil} } s.value |= uint64(p[0]) << shift p = p[1:] } if goType { if len(p) < ptrsz { return &DecodingError{len(data), "unexpected EOF", nil} } // fixed-width go type if ptrsz == 8 { s.gotype = order.Uint64(p[0:8]) p = p[8:] } else { s.gotype = uint64(order.Uint32(p[0:4])) p = p[4:] } } } else { // Value, symbol type. s.value = uint64(order.Uint32(p[0:4])) if len(p) < 5 { return &DecodingError{len(data), "unexpected EOF", nil} } typ = p[4] if typ&0x80 == 0 { return &DecodingError{len(data) - len(p) + 4, "bad symbol type", typ} } typ &^= 0x80 s.typ = typ p = p[5:] } // Name. var i int var nnul int for i = 0; i < len(p); i++ { if p[i] == 0 { nnul = 1 break } } switch typ { case 'z', 'Z': p = p[i+nnul:] for i = 0; i+2 <= len(p); i += 2 { if p[i] == 0 && p[i+1] == 0 { nnul = 2 break } } } if len(p) < i+nnul { return &DecodingError{len(data), "unexpected EOF", nil} } s.name = p[0:i] i += nnul p = p[i:] if !newTable { if len(p) < 4 { return &DecodingError{len(data), "unexpected EOF", nil} } // Go type. s.gotype = uint64(order.Uint32(p[:4])) p = p[4:] } fn(s) } return nil } // NewTable decodes the Go symbol table in data, // returning an in-memory representation. func NewTable(symtab []byte, pcln *LineTable) (*Table, error) { var n int err := walksymtab(symtab, func(s sym) error { n++ return nil }) if err != nil { return nil, err } var t Table if pcln.isGo12() { t.go12line = pcln } fname := make(map[uint16]string) t.Syms = make([]Sym, 0, n) nf := 0 nz := 0 lasttyp := uint8(0) err = walksymtab(symtab, func(s sym) error { n := len(t.Syms) t.Syms = t.Syms[0 : n+1] ts := &t.Syms[n] ts.Type = s.typ ts.Value = uint64(s.value) ts.GoType = uint64(s.gotype) switch s.typ { default: // rewrite name to use . instead of · (c2 b7) w := 0 b := s.name for i := 0; i < len(b); i++ { if b[i] == 0xc2 && i+1 < len(b) && b[i+1] == 0xb7 { i++ b[i] = '.' } b[w] = b[i] w++ } ts.Name = string(s.name[0:w]) case 'z', 'Z': if lasttyp != 'z' && lasttyp != 'Z' { nz++ } for i := 0; i < len(s.name); i += 2 { eltIdx := binary.BigEndian.Uint16(s.name[i : i+2]) elt, ok := fname[eltIdx] if !ok { return &DecodingError{-1, "bad filename code", eltIdx} } if n := len(ts.Name); n > 0 && ts.Name[n-1] != '/' { ts.Name += "/" } ts.Name += elt } } switch s.typ { case 'T', 't', 'L', 'l': nf++ case 'f': fname[uint16(s.value)] = ts.Name } lasttyp = s.typ return nil }) if err != nil { return nil, err } t.Funcs = make([]Func, 0, nf) t.Files = make(map[string]*Obj) var obj *Obj if t.go12line != nil { // Put all functions into one Obj. t.Objs = make([]Obj, 1) obj = &t.Objs[0] t.go12line.go12MapFiles(t.Files, obj) } else { t.Objs = make([]Obj, 0, nz) } // Count text symbols and attach frame sizes, parameters, and // locals to them. Also, find object file boundaries. lastf := 0 for i := 0; i < len(t.Syms); i++ { sym := &t.Syms[i] switch sym.Type { case 'Z', 'z': // path symbol if t.go12line != nil { // Go 1.2 binaries have the file information elsewhere. Ignore. break } // Finish the current object if obj != nil { obj.Funcs = t.Funcs[lastf:] } lastf = len(t.Funcs) // Start new object n := len(t.Objs) t.Objs = t.Objs[0 : n+1] obj = &t.Objs[n] // Count & copy path symbols var end int for end = i + 1; end < len(t.Syms); end++ { if c := t.Syms[end].Type; c != 'Z' && c != 'z' { break } } obj.Paths = t.Syms[i:end] i = end - 1 // loop will i++ // Record file names depth := 0 for j := range obj.Paths { s := &obj.Paths[j] if s.Name == "" { depth-- } else { if depth == 0 { t.Files[s.Name] = obj } depth++ } } case 'T', 't', 'L', 'l': // text symbol if n := len(t.Funcs); n > 0 { t.Funcs[n-1].End = sym.Value } if sym.Name == "etext" { continue } // Count parameter and local (auto) syms var np, na int var end int countloop: for end = i + 1; end < len(t.Syms); end++ { switch t.Syms[end].Type { case 'T', 't', 'L', 'l', 'Z', 'z': break countloop case 'p': np++ case 'a': na++ } } // Fill in the function symbol n := len(t.Funcs) t.Funcs = t.Funcs[0 : n+1] fn := &t.Funcs[n] sym.Func = fn fn.Params = make([]*Sym, 0, np) fn.Locals = make([]*Sym, 0, na) fn.Sym = sym fn.Entry = sym.Value fn.Obj = obj if t.go12line != nil { // All functions share the same line table. // It knows how to narrow down to a specific // function quickly. fn.LineTable = t.go12line } else if pcln != nil { fn.LineTable = pcln.slice(fn.Entry) pcln = fn.LineTable } for j := i; j < end; j++ { s := &t.Syms[j] switch s.Type { case 'm': fn.FrameSize = int(s.Value) case 'p': n := len(fn.Params) fn.Params = fn.Params[0 : n+1] fn.Params[n] = s case 'a': n := len(fn.Locals) fn.Locals = fn.Locals[0 : n+1] fn.Locals[n] = s } } i = end - 1 // loop will i++ } } if t.go12line != nil && nf == 0 { t.Funcs = t.go12line.go12Funcs() } if obj != nil { obj.Funcs = t.Funcs[lastf:] } return &t, nil } // PCToFunc returns the function containing the program counter pc, // or nil if there is no such function. func (t *Table) PCToFunc(pc uint64) *Func { funcs := t.Funcs for len(funcs) > 0 { m := len(funcs) / 2 fn := &funcs[m] switch { case pc < fn.Entry: funcs = funcs[0:m] case fn.Entry <= pc && pc < fn.End: return fn default: funcs = funcs[m+1:] } } return nil } // PCToLine looks up line number information for a program counter. // If there is no information, it returns fn == nil. func (t *Table) PCToLine(pc uint64) (file string, line int, fn *Func) { if fn = t.PCToFunc(pc); fn == nil { return } if t.go12line != nil { file = t.go12line.go12PCToFile(pc) line = t.go12line.go12PCToLine(pc) } else { file, line = fn.Obj.lineFromAline(fn.LineTable.PCToLine(pc)) } return } // LineToPC looks up the first program counter on the given line in // the named file. It returns UnknownPathError or UnknownLineError if // there is an error looking up this line. func (t *Table) LineToPC(file string, line int) (pc uint64, fn *Func, err error) { obj, ok := t.Files[file] if !ok { return 0, nil, UnknownFileError(file) } if t.go12line != nil { pc := t.go12line.go12LineToPC(file, line) if pc == 0 { return 0, nil, &UnknownLineError{file, line} } return pc, t.PCToFunc(pc), nil } abs, err := obj.alineFromLine(file, line) if err != nil { return } for i := range obj.Funcs { f := &obj.Funcs[i] pc := f.LineTable.LineToPC(abs, f.End) if pc != 0 { return pc, f, nil } } return 0, nil, &UnknownLineError{file, line} } // LookupSym returns the text, data, or bss symbol with the given name, // or nil if no such symbol is found. func (t *Table) LookupSym(name string) *Sym { // TODO(austin) Maybe make a map for i := range t.Syms { s := &t.Syms[i] switch s.Type { case 'T', 't', 'L', 'l', 'D', 'd', 'B', 'b': if s.Name == name { return s } } } return nil } // LookupFunc returns the text, data, or bss symbol with the given name, // or nil if no such symbol is found. func (t *Table) LookupFunc(name string) *Func { for i := range t.Funcs { f := &t.Funcs[i] if f.Sym.Name == name { return f } } return nil } // SymByAddr returns the text, data, or bss symbol starting at the given address. func (t *Table) SymByAddr(addr uint64) *Sym { for i := range t.Syms { s := &t.Syms[i] switch s.Type { case 'T', 't', 'L', 'l', 'D', 'd', 'B', 'b': if s.Value == addr { return s } } } return nil } /* * Object files */ // This is legacy code for Go 1.1 and earlier, which used the // Plan 9 format for pc-line tables. This code was never quite // correct. It's probably very close, and it's usually correct, but // we never quite found all the corner cases. // // Go 1.2 and later use a simpler format, documented at golang.org/s/go12symtab. func (o *Obj) lineFromAline(aline int) (string, int) { type stackEnt struct { path string start int offset int prev *stackEnt } noPath := &stackEnt{"", 0, 0, nil} tos := noPath pathloop: for _, s := range o.Paths { val := int(s.Value) switch { case val > aline: break pathloop case val == 1: // Start a new stack tos = &stackEnt{s.Name, val, 0, noPath} case s.Name == "": // Pop if tos == noPath { return "", 0 } tos.prev.offset += val - tos.start tos = tos.prev default: // Push tos = &stackEnt{s.Name, val, 0, tos} } } if tos == noPath { return "", 0 } return tos.path, aline - tos.start - tos.offset + 1 } func (o *Obj) alineFromLine(path string, line int) (int, error) { if line < 1 { return 0, &UnknownLineError{path, line} } for i, s := range o.Paths { // Find this path if s.Name != path { continue } // Find this line at this stack level depth := 0 var incstart int line += int(s.Value) pathloop: for _, s := range o.Paths[i:] { val := int(s.Value) switch { case depth == 1 && val >= line: return line - 1, nil case s.Name == "": depth-- if depth == 0 { break pathloop } else if depth == 1 { line += val - incstart } default: if depth == 1 { incstart = val } depth++ } } return 0, &UnknownLineError{path, line} } return 0, UnknownFileError(path) } /* * Errors */ // UnknownFileError represents a failure to find the specific file in // the symbol table. type UnknownFileError string func (e UnknownFileError) Error() string { return "unknown file: " + string(e) } // UnknownLineError represents a failure to map a line to a program // counter, either because the line is beyond the bounds of the file // or because there is no code on the given line. type UnknownLineError struct { File string Line int } func (e *UnknownLineError) Error() string { return "no code at " + e.File + ":" + strconv.Itoa(e.Line) } // DecodingError represents an error during the decoding of // the symbol table. type DecodingError struct { off int msg string val interface{} } func (e *DecodingError) Error() string { msg := e.msg if e.val != nil { msg += fmt.Sprintf(" '%v'", e.val) } msg += fmt.Sprintf(" at byte %#x", e.off) return msg } go/src/pkg/debug/macho0040755000000000000000000000000012412656737015150 5ustar00rootroot00000000000000go/src/pkg/debug/macho/fat.go0100644000000000000000000000770712412656737016340 0ustar00rootroot00000000000000// 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. package macho import ( "encoding/binary" "fmt" "io" "os" ) // A FatFile is a Mach-O universal binary that contains at least one architecture. type FatFile struct { Magic uint32 Arches []FatArch closer io.Closer } // A FatArchHeader represents a fat header for a specific image architecture. type FatArchHeader struct { Cpu Cpu SubCpu uint32 Offset uint32 Size uint32 Align uint32 } const fatArchHeaderSize = 5 * 4 // A FatArch is a Mach-O File inside a FatFile. type FatArch struct { FatArchHeader *File } // ErrNotFat is returned from NewFatFile or OpenFat when the file is not a // universal binary but may be a thin binary, based on its magic number. var ErrNotFat = &FormatError{0, "not a fat Mach-O file", nil} // NewFatFile creates a new FatFile for accessing all the Mach-O images in a // universal binary. The Mach-O binary is expected to start at position 0 in // the ReaderAt. func NewFatFile(r io.ReaderAt) (*FatFile, error) { var ff FatFile sr := io.NewSectionReader(r, 0, 1<<63-1) // Read the fat_header struct, which is always in big endian. // Start with the magic number. err := binary.Read(sr, binary.BigEndian, &ff.Magic) if err != nil { return nil, &FormatError{0, "error reading magic number", nil} } else if ff.Magic != MagicFat { // See if this is a Mach-O file via its magic number. The magic // must be converted to little endian first though. var buf [4]byte binary.BigEndian.PutUint32(buf[:], ff.Magic) leMagic := binary.LittleEndian.Uint32(buf[:]) if leMagic == Magic32 || leMagic == Magic64 { return nil, ErrNotFat } else { return nil, &FormatError{0, "invalid magic number", nil} } } offset := int64(4) // Read the number of FatArchHeaders that come after the fat_header. var narch uint32 err = binary.Read(sr, binary.BigEndian, &narch) if err != nil { return nil, &FormatError{offset, "invalid fat_header", nil} } offset += 4 if narch < 1 { return nil, &FormatError{offset, "file contains no images", nil} } // Combine the Cpu and SubCpu (both uint32) into a uint64 to make sure // there are not duplicate architectures. seenArches := make(map[uint64]bool, narch) // Make sure that all images are for the same MH_ type. var machoType Type // Following the fat_header comes narch fat_arch structs that index // Mach-O images further in the file. ff.Arches = make([]FatArch, narch) for i := uint32(0); i < narch; i++ { fa := &ff.Arches[i] err = binary.Read(sr, binary.BigEndian, &fa.FatArchHeader) if err != nil { return nil, &FormatError{offset, "invalid fat_arch header", nil} } offset += fatArchHeaderSize fr := io.NewSectionReader(r, int64(fa.Offset), int64(fa.Size)) fa.File, err = NewFile(fr) if err != nil { return nil, err } // Make sure the architecture for this image is not duplicate. seenArch := (uint64(fa.Cpu) << 32) | uint64(fa.SubCpu) if o, k := seenArches[seenArch]; o || k { return nil, &FormatError{offset, fmt.Sprintf("duplicate architecture cpu=%v, subcpu=%#x", fa.Cpu, fa.SubCpu), nil} } seenArches[seenArch] = true // Make sure the Mach-O type matches that of the first image. if i == 0 { machoType = fa.Type } else { if fa.Type != machoType { return nil, &FormatError{offset, fmt.Sprintf("Mach-O type for architecture #%d (type=%#x) does not match first (type=%#x)", i, fa.Type, machoType), nil} } } } return &ff, nil } // OpenFat opens the named file using os.Open and prepares it for use as a Mach-O // universal binary. func OpenFat(name string) (ff *FatFile, err error) { f, err := os.Open(name) if err != nil { return nil, err } ff, err = NewFatFile(f) if err != nil { f.Close() return nil, err } ff.closer = f return } func (ff *FatFile) Close() error { var err error if ff.closer != nil { err = ff.closer.Close() ff.closer = nil } return err } go/src/pkg/debug/macho/file.go0100644000000000000000000003077412412656737016505 0ustar00rootroot00000000000000// Copyright 2009 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 macho implements access to Mach-O object files. package macho // High level access to low level data structures. import ( "bytes" "debug/dwarf" "encoding/binary" "fmt" "io" "os" ) // A File represents an open Mach-O file. type File struct { FileHeader ByteOrder binary.ByteOrder Loads []Load Sections []*Section Symtab *Symtab Dysymtab *Dysymtab closer io.Closer } // A Load represents any Mach-O load command. type Load interface { Raw() []byte } // A LoadBytes is the uninterpreted bytes of a Mach-O load command. type LoadBytes []byte func (b LoadBytes) Raw() []byte { return b } // A SegmentHeader is the header for a Mach-O 32-bit or 64-bit load segment command. type SegmentHeader struct { Cmd LoadCmd Len uint32 Name string Addr uint64 Memsz uint64 Offset uint64 Filesz uint64 Maxprot uint32 Prot uint32 Nsect uint32 Flag uint32 } // A Segment represents a Mach-O 32-bit or 64-bit load segment command. type Segment struct { LoadBytes SegmentHeader // Embed ReaderAt for ReadAt method. // Do not embed SectionReader directly // to avoid having Read and Seek. // If a client wants Read and Seek it must use // Open() to avoid fighting over the seek offset // with other clients. io.ReaderAt sr *io.SectionReader } // Data reads and returns the contents of the segment. func (s *Segment) Data() ([]byte, error) { dat := make([]byte, s.sr.Size()) n, err := s.sr.ReadAt(dat, 0) if n == len(dat) { err = nil } return dat[0:n], err } // Open returns a new ReadSeeker reading the segment. func (s *Segment) Open() io.ReadSeeker { return io.NewSectionReader(s.sr, 0, 1<<63-1) } type SectionHeader struct { Name string Seg string Addr uint64 Size uint64 Offset uint32 Align uint32 Reloff uint32 Nreloc uint32 Flags uint32 } type Section struct { SectionHeader // Embed ReaderAt for ReadAt method. // Do not embed SectionReader directly // to avoid having Read and Seek. // If a client wants Read and Seek it must use // Open() to avoid fighting over the seek offset // with other clients. io.ReaderAt sr *io.SectionReader } // Data reads and returns the contents of the Mach-O section. func (s *Section) Data() ([]byte, error) { dat := make([]byte, s.sr.Size()) n, err := s.sr.ReadAt(dat, 0) if n == len(dat) { err = nil } return dat[0:n], err } // Open returns a new ReadSeeker reading the Mach-O section. func (s *Section) Open() io.ReadSeeker { return io.NewSectionReader(s.sr, 0, 1<<63-1) } // A Dylib represents a Mach-O load dynamic library command. type Dylib struct { LoadBytes Name string Time uint32 CurrentVersion uint32 CompatVersion uint32 } // A Symtab represents a Mach-O symbol table command. type Symtab struct { LoadBytes SymtabCmd Syms []Symbol } // A Dysymtab represents a Mach-O dynamic symbol table command. type Dysymtab struct { LoadBytes DysymtabCmd IndirectSyms []uint32 // indices into Symtab.Syms } /* * Mach-O reader */ // FormatError is returned by some operations if the data does // not have the correct format for an object file. type FormatError struct { off int64 msg string val interface{} } func (e *FormatError) Error() string { msg := e.msg if e.val != nil { msg += fmt.Sprintf(" '%v'", e.val) } msg += fmt.Sprintf(" in record at byte %#x", e.off) return msg } // Open opens the named file using os.Open and prepares it for use as a Mach-O binary. func Open(name string) (*File, error) { f, err := os.Open(name) if err != nil { return nil, err } ff, err := NewFile(f) if err != nil { f.Close() return nil, err } ff.closer = f return ff, nil } // Close closes the File. // If the File was created using NewFile directly instead of Open, // Close has no effect. func (f *File) Close() error { var err error if f.closer != nil { err = f.closer.Close() f.closer = nil } return err } // NewFile creates a new File for accessing a Mach-O binary in an underlying reader. // The Mach-O binary is expected to start at position 0 in the ReaderAt. func NewFile(r io.ReaderAt) (*File, error) { f := new(File) sr := io.NewSectionReader(r, 0, 1<<63-1) // Read and decode Mach magic to determine byte order, size. // Magic32 and Magic64 differ only in the bottom bit. var ident [4]byte if _, err := r.ReadAt(ident[0:], 0); err != nil { return nil, err } be := binary.BigEndian.Uint32(ident[0:]) le := binary.LittleEndian.Uint32(ident[0:]) switch Magic32 &^ 1 { case be &^ 1: f.ByteOrder = binary.BigEndian f.Magic = be case le &^ 1: f.ByteOrder = binary.LittleEndian f.Magic = le default: return nil, &FormatError{0, "invalid magic number", nil} } // Read entire file header. if err := binary.Read(sr, f.ByteOrder, &f.FileHeader); err != nil { return nil, err } // Then load commands. offset := int64(fileHeaderSize32) if f.Magic == Magic64 { offset = fileHeaderSize64 } dat := make([]byte, f.Cmdsz) if _, err := r.ReadAt(dat, offset); err != nil { return nil, err } f.Loads = make([]Load, f.Ncmd) bo := f.ByteOrder for i := range f.Loads { // Each load command begins with uint32 command and length. if len(dat) < 8 { return nil, &FormatError{offset, "command block too small", nil} } cmd, siz := LoadCmd(bo.Uint32(dat[0:4])), bo.Uint32(dat[4:8]) if siz < 8 || siz > uint32(len(dat)) { return nil, &FormatError{offset, "invalid command block size", nil} } var cmddat []byte cmddat, dat = dat[0:siz], dat[siz:] offset += int64(siz) var s *Segment switch cmd { default: f.Loads[i] = LoadBytes(cmddat) case LoadCmdDylib: var hdr DylibCmd b := bytes.NewReader(cmddat) if err := binary.Read(b, bo, &hdr); err != nil { return nil, err } l := new(Dylib) if hdr.Name >= uint32(len(cmddat)) { return nil, &FormatError{offset, "invalid name in dynamic library command", hdr.Name} } l.Name = cstring(cmddat[hdr.Name:]) l.Time = hdr.Time l.CurrentVersion = hdr.CurrentVersion l.CompatVersion = hdr.CompatVersion l.LoadBytes = LoadBytes(cmddat) f.Loads[i] = l case LoadCmdSymtab: var hdr SymtabCmd b := bytes.NewReader(cmddat) if err := binary.Read(b, bo, &hdr); err != nil { return nil, err } strtab := make([]byte, hdr.Strsize) if _, err := r.ReadAt(strtab, int64(hdr.Stroff)); err != nil { return nil, err } var symsz int if f.Magic == Magic64 { symsz = 16 } else { symsz = 12 } symdat := make([]byte, int(hdr.Nsyms)*symsz) if _, err := r.ReadAt(symdat, int64(hdr.Symoff)); err != nil { return nil, err } st, err := f.parseSymtab(symdat, strtab, cmddat, &hdr, offset) if err != nil { return nil, err } f.Loads[i] = st f.Symtab = st case LoadCmdDysymtab: var hdr DysymtabCmd b := bytes.NewReader(cmddat) if err := binary.Read(b, bo, &hdr); err != nil { return nil, err } dat := make([]byte, hdr.Nindirectsyms*4) if _, err := r.ReadAt(dat, int64(hdr.Indirectsymoff)); err != nil { return nil, err } x := make([]uint32, hdr.Nindirectsyms) if err := binary.Read(bytes.NewReader(dat), bo, x); err != nil { return nil, err } st := new(Dysymtab) st.LoadBytes = LoadBytes(cmddat) st.DysymtabCmd = hdr st.IndirectSyms = x f.Loads[i] = st f.Dysymtab = st case LoadCmdSegment: var seg32 Segment32 b := bytes.NewReader(cmddat) if err := binary.Read(b, bo, &seg32); err != nil { return nil, err } s = new(Segment) s.LoadBytes = cmddat s.Cmd = cmd s.Len = siz s.Name = cstring(seg32.Name[0:]) s.Addr = uint64(seg32.Addr) s.Memsz = uint64(seg32.Memsz) s.Offset = uint64(seg32.Offset) s.Filesz = uint64(seg32.Filesz) s.Maxprot = seg32.Maxprot s.Prot = seg32.Prot s.Nsect = seg32.Nsect s.Flag = seg32.Flag f.Loads[i] = s for i := 0; i < int(s.Nsect); i++ { var sh32 Section32 if err := binary.Read(b, bo, &sh32); err != nil { return nil, err } sh := new(Section) sh.Name = cstring(sh32.Name[0:]) sh.Seg = cstring(sh32.Seg[0:]) sh.Addr = uint64(sh32.Addr) sh.Size = uint64(sh32.Size) sh.Offset = sh32.Offset sh.Align = sh32.Align sh.Reloff = sh32.Reloff sh.Nreloc = sh32.Nreloc sh.Flags = sh32.Flags f.pushSection(sh, r) } case LoadCmdSegment64: var seg64 Segment64 b := bytes.NewReader(cmddat) if err := binary.Read(b, bo, &seg64); err != nil { return nil, err } s = new(Segment) s.LoadBytes = cmddat s.Cmd = cmd s.Len = siz s.Name = cstring(seg64.Name[0:]) s.Addr = seg64.Addr s.Memsz = seg64.Memsz s.Offset = seg64.Offset s.Filesz = seg64.Filesz s.Maxprot = seg64.Maxprot s.Prot = seg64.Prot s.Nsect = seg64.Nsect s.Flag = seg64.Flag f.Loads[i] = s for i := 0; i < int(s.Nsect); i++ { var sh64 Section64 if err := binary.Read(b, bo, &sh64); err != nil { return nil, err } sh := new(Section) sh.Name = cstring(sh64.Name[0:]) sh.Seg = cstring(sh64.Seg[0:]) sh.Addr = sh64.Addr sh.Size = sh64.Size sh.Offset = sh64.Offset sh.Align = sh64.Align sh.Reloff = sh64.Reloff sh.Nreloc = sh64.Nreloc sh.Flags = sh64.Flags f.pushSection(sh, r) } } if s != nil { s.sr = io.NewSectionReader(r, int64(s.Offset), int64(s.Filesz)) s.ReaderAt = s.sr } } return f, nil } func (f *File) parseSymtab(symdat, strtab, cmddat []byte, hdr *SymtabCmd, offset int64) (*Symtab, error) { bo := f.ByteOrder symtab := make([]Symbol, hdr.Nsyms) b := bytes.NewReader(symdat) for i := range symtab { var n Nlist64 if f.Magic == Magic64 { if err := binary.Read(b, bo, &n); err != nil { return nil, err } } else { var n32 Nlist32 if err := binary.Read(b, bo, &n32); err != nil { return nil, err } n.Name = n32.Name n.Type = n32.Type n.Sect = n32.Sect n.Desc = n32.Desc n.Value = uint64(n32.Value) } sym := &symtab[i] if n.Name >= uint32(len(strtab)) { return nil, &FormatError{offset, "invalid name in symbol table", n.Name} } sym.Name = cstring(strtab[n.Name:]) sym.Type = n.Type sym.Sect = n.Sect sym.Desc = n.Desc sym.Value = n.Value } st := new(Symtab) st.LoadBytes = LoadBytes(cmddat) st.Syms = symtab return st, nil } func (f *File) pushSection(sh *Section, r io.ReaderAt) { f.Sections = append(f.Sections, sh) sh.sr = io.NewSectionReader(r, int64(sh.Offset), int64(sh.Size)) sh.ReaderAt = sh.sr } func cstring(b []byte) string { var i int for i = 0; i < len(b) && b[i] != 0; i++ { } return string(b[0:i]) } // Segment returns the first Segment with the given name, or nil if no such segment exists. func (f *File) Segment(name string) *Segment { for _, l := range f.Loads { if s, ok := l.(*Segment); ok && s.Name == name { return s } } return nil } // Section returns the first section with the given name, or nil if no such // section exists. func (f *File) Section(name string) *Section { for _, s := range f.Sections { if s.Name == name { return s } } return nil } // DWARF returns the DWARF debug information for the Mach-O file. func (f *File) DWARF() (*dwarf.Data, error) { // There are many other DWARF sections, but these // are the required ones, and the debug/dwarf package // does not use the others, so don't bother loading them. var names = [...]string{"abbrev", "info", "str"} var dat [len(names)][]byte for i, name := range names { name = "__debug_" + name s := f.Section(name) if s == nil { continue } b, err := s.Data() if err != nil && uint64(len(b)) < s.Size { return nil, err } dat[i] = b } abbrev, info, str := dat[0], dat[1], dat[2] return dwarf.New(abbrev, nil, nil, info, nil, nil, nil, str) } // ImportedSymbols returns the names of all symbols // referred to by the binary f that are expected to be // satisfied by other libraries at dynamic load time. func (f *File) ImportedSymbols() ([]string, error) { if f.Dysymtab == nil || f.Symtab == nil { return nil, &FormatError{0, "missing symbol table", nil} } st := f.Symtab dt := f.Dysymtab var all []string for _, s := range st.Syms[dt.Iundefsym : dt.Iundefsym+dt.Nundefsym] { all = append(all, s.Name) } return all, nil } // ImportedLibraries returns the paths of all libraries // referred to by the binary f that are expected to be // linked with the binary at dynamic link time. func (f *File) ImportedLibraries() ([]string, error) { var all []string for _, l := range f.Loads { if lib, ok := l.(*Dylib); ok { all = append(all, lib.Name) } } return all, nil } go/src/pkg/debug/macho/file_test.go0100644000000000000000000001556612412656737017546 0ustar00rootroot00000000000000// Copyright 2009 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 macho import ( "reflect" "testing" ) type fileTest struct { file string hdr FileHeader segments []*SegmentHeader sections []*SectionHeader } var fileTests = []fileTest{ { "testdata/gcc-386-darwin-exec", FileHeader{0xfeedface, Cpu386, 0x3, 0x2, 0xc, 0x3c0, 0x85}, []*SegmentHeader{ {LoadCmdSegment, 0x38, "__PAGEZERO", 0x0, 0x1000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {LoadCmdSegment, 0xc0, "__TEXT", 0x1000, 0x1000, 0x0, 0x1000, 0x7, 0x5, 0x2, 0x0}, {LoadCmdSegment, 0xc0, "__DATA", 0x2000, 0x1000, 0x1000, 0x1000, 0x7, 0x3, 0x2, 0x0}, {LoadCmdSegment, 0x7c, "__IMPORT", 0x3000, 0x1000, 0x2000, 0x1000, 0x7, 0x7, 0x1, 0x0}, {LoadCmdSegment, 0x38, "__LINKEDIT", 0x4000, 0x1000, 0x3000, 0x12c, 0x7, 0x1, 0x0, 0x0}, nil, nil, nil, nil, nil, nil, nil, }, []*SectionHeader{ {"__text", "__TEXT", 0x1f68, 0x88, 0xf68, 0x2, 0x0, 0x0, 0x80000400}, {"__cstring", "__TEXT", 0x1ff0, 0xd, 0xff0, 0x0, 0x0, 0x0, 0x2}, {"__data", "__DATA", 0x2000, 0x14, 0x1000, 0x2, 0x0, 0x0, 0x0}, {"__dyld", "__DATA", 0x2014, 0x1c, 0x1014, 0x2, 0x0, 0x0, 0x0}, {"__jump_table", "__IMPORT", 0x3000, 0xa, 0x2000, 0x6, 0x0, 0x0, 0x4000008}, }, }, { "testdata/gcc-amd64-darwin-exec", FileHeader{0xfeedfacf, CpuAmd64, 0x80000003, 0x2, 0xb, 0x568, 0x85}, []*SegmentHeader{ {LoadCmdSegment64, 0x48, "__PAGEZERO", 0x0, 0x100000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, {LoadCmdSegment64, 0x1d8, "__TEXT", 0x100000000, 0x1000, 0x0, 0x1000, 0x7, 0x5, 0x5, 0x0}, {LoadCmdSegment64, 0x138, "__DATA", 0x100001000, 0x1000, 0x1000, 0x1000, 0x7, 0x3, 0x3, 0x0}, {LoadCmdSegment64, 0x48, "__LINKEDIT", 0x100002000, 0x1000, 0x2000, 0x140, 0x7, 0x1, 0x0, 0x0}, nil, nil, nil, nil, nil, nil, nil, }, []*SectionHeader{ {"__text", "__TEXT", 0x100000f14, 0x6d, 0xf14, 0x2, 0x0, 0x0, 0x80000400}, {"__symbol_stub1", "__TEXT", 0x100000f81, 0xc, 0xf81, 0x0, 0x0, 0x0, 0x80000408}, {"__stub_helper", "__TEXT", 0x100000f90, 0x18, 0xf90, 0x2, 0x0, 0x0, 0x0}, {"__cstring", "__TEXT", 0x100000fa8, 0xd, 0xfa8, 0x0, 0x0, 0x0, 0x2}, {"__eh_frame", "__TEXT", 0x100000fb8, 0x48, 0xfb8, 0x3, 0x0, 0x0, 0x6000000b}, {"__data", "__DATA", 0x100001000, 0x1c, 0x1000, 0x3, 0x0, 0x0, 0x0}, {"__dyld", "__DATA", 0x100001020, 0x38, 0x1020, 0x3, 0x0, 0x0, 0x0}, {"__la_symbol_ptr", "__DATA", 0x100001058, 0x10, 0x1058, 0x2, 0x0, 0x0, 0x7}, }, }, { "testdata/gcc-amd64-darwin-exec-debug", FileHeader{0xfeedfacf, CpuAmd64, 0x80000003, 0xa, 0x4, 0x5a0, 0}, []*SegmentHeader{ nil, {LoadCmdSegment64, 0x1d8, "__TEXT", 0x100000000, 0x1000, 0x0, 0x0, 0x7, 0x5, 0x5, 0x0}, {LoadCmdSegment64, 0x138, "__DATA", 0x100001000, 0x1000, 0x0, 0x0, 0x7, 0x3, 0x3, 0x0}, {LoadCmdSegment64, 0x278, "__DWARF", 0x100002000, 0x1000, 0x1000, 0x1bc, 0x7, 0x3, 0x7, 0x0}, }, []*SectionHeader{ {"__text", "__TEXT", 0x100000f14, 0x0, 0x0, 0x2, 0x0, 0x0, 0x80000400}, {"__symbol_stub1", "__TEXT", 0x100000f81, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000408}, {"__stub_helper", "__TEXT", 0x100000f90, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0}, {"__cstring", "__TEXT", 0x100000fa8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2}, {"__eh_frame", "__TEXT", 0x100000fb8, 0x0, 0x0, 0x3, 0x0, 0x0, 0x6000000b}, {"__data", "__DATA", 0x100001000, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0}, {"__dyld", "__DATA", 0x100001020, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0}, {"__la_symbol_ptr", "__DATA", 0x100001058, 0x0, 0x0, 0x2, 0x0, 0x0, 0x7}, {"__debug_abbrev", "__DWARF", 0x100002000, 0x36, 0x1000, 0x0, 0x0, 0x0, 0x0}, {"__debug_aranges", "__DWARF", 0x100002036, 0x30, 0x1036, 0x0, 0x0, 0x0, 0x0}, {"__debug_frame", "__DWARF", 0x100002066, 0x40, 0x1066, 0x0, 0x0, 0x0, 0x0}, {"__debug_info", "__DWARF", 0x1000020a6, 0x54, 0x10a6, 0x0, 0x0, 0x0, 0x0}, {"__debug_line", "__DWARF", 0x1000020fa, 0x47, 0x10fa, 0x0, 0x0, 0x0, 0x0}, {"__debug_pubnames", "__DWARF", 0x100002141, 0x1b, 0x1141, 0x0, 0x0, 0x0, 0x0}, {"__debug_str", "__DWARF", 0x10000215c, 0x60, 0x115c, 0x0, 0x0, 0x0, 0x0}, }, }, } func TestOpen(t *testing.T) { for i := range fileTests { tt := &fileTests[i] f, err := Open(tt.file) if err != nil { t.Error(err) continue } if !reflect.DeepEqual(f.FileHeader, tt.hdr) { t.Errorf("open %s:\n\thave %#v\n\twant %#v\n", tt.file, f.FileHeader, tt.hdr) continue } for i, l := range f.Loads { if i >= len(tt.segments) { break } sh := tt.segments[i] s, ok := l.(*Segment) if sh == nil { if ok { t.Errorf("open %s, section %d: skipping %#v\n", tt.file, i, &s.SegmentHeader) } continue } if !ok { t.Errorf("open %s, section %d: not *Segment\n", tt.file, i) continue } have := &s.SegmentHeader want := sh if !reflect.DeepEqual(have, want) { t.Errorf("open %s, segment %d:\n\thave %#v\n\twant %#v\n", tt.file, i, have, want) } } tn := len(tt.segments) fn := len(f.Loads) if tn != fn { t.Errorf("open %s: len(Loads) = %d, want %d", tt.file, fn, tn) } for i, sh := range f.Sections { if i >= len(tt.sections) { break } have := &sh.SectionHeader want := tt.sections[i] if !reflect.DeepEqual(have, want) { t.Errorf("open %s, section %d:\n\thave %#v\n\twant %#v\n", tt.file, i, have, want) } } tn = len(tt.sections) fn = len(f.Sections) if tn != fn { t.Errorf("open %s: len(Sections) = %d, want %d", tt.file, fn, tn) } } } func TestOpenFailure(t *testing.T) { filename := "file.go" // not a Mach-O file _, err := Open(filename) // don't crash if err == nil { t.Errorf("open %s: succeeded unexpectedly", filename) } } func TestOpenFat(t *testing.T) { ff, err := OpenFat("testdata/fat-gcc-386-amd64-darwin-exec") if err != nil { t.Fatal(err) } if ff.Magic != MagicFat { t.Errorf("OpenFat: got magic number %#x, want %#x", ff.Magic, MagicFat) } if len(ff.Arches) != 2 { t.Errorf("OpenFat: got %d architectures, want 2", len(ff.Arches)) } for i := range ff.Arches { arch := &ff.Arches[i] ftArch := &fileTests[i] if arch.Cpu != ftArch.hdr.Cpu || arch.SubCpu != ftArch.hdr.SubCpu { t.Errorf("OpenFat: architecture #%d got cpu=%#x subtype=%#x, expected cpu=%#x, subtype=%#x", i, arch.Cpu, arch.SubCpu, ftArch.hdr.Cpu, ftArch.hdr.SubCpu) } if !reflect.DeepEqual(arch.FileHeader, ftArch.hdr) { t.Errorf("OpenFat header:\n\tgot %#v\n\twant %#v\n", arch.FileHeader, ftArch.hdr) } } } func TestOpenFatFailure(t *testing.T) { filename := "file.go" // not a Mach-O file if _, err := OpenFat(filename); err == nil { t.Errorf("OpenFat %s: succeeded unexpectedly", filename) } filename = "testdata/gcc-386-darwin-exec" // not a fat Mach-O ff, err := OpenFat(filename) if err != ErrNotFat { t.Errorf("OpenFat %s: got %v, want ErrNotFat", filename, err) } if ff != nil { t.Errorf("OpenFat %s: got %v, want nil", filename, ff) } } go/src/pkg/debug/macho/macho.go0100644000000000000000000001377012412656737016652 0ustar00rootroot00000000000000// Copyright 2009 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. // Mach-O header data structures // http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/MachORuntime/Reference/reference.html package macho import "strconv" // A FileHeader represents a Mach-O file header. type FileHeader struct { Magic uint32 Cpu Cpu SubCpu uint32 Type Type Ncmd uint32 Cmdsz uint32 Flags uint32 } const ( fileHeaderSize32 = 7 * 4 fileHeaderSize64 = 8 * 4 ) const ( Magic32 uint32 = 0xfeedface Magic64 uint32 = 0xfeedfacf MagicFat uint32 = 0xcafebabe ) // A Type is the Mach-O file type, e.g. an object file, executable, or dynamic library. type Type uint32 const ( TypeObj Type = 1 TypeExec Type = 2 TypeDylib Type = 6 TypeBundle Type = 8 ) // A Cpu is a Mach-O cpu type. type Cpu uint32 const cpuArch64 = 0x01000000 const ( Cpu386 Cpu = 7 CpuAmd64 Cpu = Cpu386 | cpuArch64 CpuArm Cpu = 12 CpuPpc Cpu = 18 CpuPpc64 Cpu = CpuPpc | cpuArch64 ) var cpuStrings = []intName{ {uint32(Cpu386), "Cpu386"}, {uint32(CpuAmd64), "CpuAmd64"}, {uint32(CpuArm), "CpuArm"}, {uint32(CpuPpc), "CpuPpc"}, {uint32(CpuPpc64), "CpuPpc64"}, } func (i Cpu) String() string { return stringName(uint32(i), cpuStrings, false) } func (i Cpu) GoString() string { return stringName(uint32(i), cpuStrings, true) } // A LoadCmd is a Mach-O load command. type LoadCmd uint32 const ( LoadCmdSegment LoadCmd = 1 LoadCmdSymtab LoadCmd = 2 LoadCmdThread LoadCmd = 4 LoadCmdUnixThread LoadCmd = 5 // thread+stack LoadCmdDysymtab LoadCmd = 11 LoadCmdDylib LoadCmd = 12 LoadCmdDylinker LoadCmd = 15 LoadCmdSegment64 LoadCmd = 25 ) var cmdStrings = []intName{ {uint32(LoadCmdSegment), "LoadCmdSegment"}, {uint32(LoadCmdThread), "LoadCmdThread"}, {uint32(LoadCmdUnixThread), "LoadCmdUnixThread"}, {uint32(LoadCmdDylib), "LoadCmdDylib"}, {uint32(LoadCmdSegment64), "LoadCmdSegment64"}, } func (i LoadCmd) String() string { return stringName(uint32(i), cmdStrings, false) } func (i LoadCmd) GoString() string { return stringName(uint32(i), cmdStrings, true) } // A Segment64 is a 64-bit Mach-O segment load command. type Segment64 struct { Cmd LoadCmd Len uint32 Name [16]byte Addr uint64 Memsz uint64 Offset uint64 Filesz uint64 Maxprot uint32 Prot uint32 Nsect uint32 Flag uint32 } // A Segment32 is a 32-bit Mach-O segment load command. type Segment32 struct { Cmd LoadCmd Len uint32 Name [16]byte Addr uint32 Memsz uint32 Offset uint32 Filesz uint32 Maxprot uint32 Prot uint32 Nsect uint32 Flag uint32 } // A DylibCmd is a Mach-O load dynamic library command. type DylibCmd struct { Cmd LoadCmd Len uint32 Name uint32 Time uint32 CurrentVersion uint32 CompatVersion uint32 } // A Section32 is a 32-bit Mach-O section header. type Section32 struct { Name [16]byte Seg [16]byte Addr uint32 Size uint32 Offset uint32 Align uint32 Reloff uint32 Nreloc uint32 Flags uint32 Reserve1 uint32 Reserve2 uint32 } // A Section32 is a 64-bit Mach-O section header. type Section64 struct { Name [16]byte Seg [16]byte Addr uint64 Size uint64 Offset uint32 Align uint32 Reloff uint32 Nreloc uint32 Flags uint32 Reserve1 uint32 Reserve2 uint32 Reserve3 uint32 } // A SymtabCmd is a Mach-O symbol table command. type SymtabCmd struct { Cmd LoadCmd Len uint32 Symoff uint32 Nsyms uint32 Stroff uint32 Strsize uint32 } // A DysymtabCmd is a Mach-O dynamic symbol table command. type DysymtabCmd struct { Cmd LoadCmd Len uint32 Ilocalsym uint32 Nlocalsym uint32 Iextdefsym uint32 Nextdefsym uint32 Iundefsym uint32 Nundefsym uint32 Tocoffset uint32 Ntoc uint32 Modtaboff uint32 Nmodtab uint32 Extrefsymoff uint32 Nextrefsyms uint32 Indirectsymoff uint32 Nindirectsyms uint32 Extreloff uint32 Nextrel uint32 Locreloff uint32 Nlocrel uint32 } // An Nlist32 is a Mach-O 32-bit symbol table entry. type Nlist32 struct { Name uint32 Type uint8 Sect uint8 Desc uint16 Value uint32 } // An Nlist64 is a Mach-O 64-bit symbol table entry. type Nlist64 struct { Name uint32 Type uint8 Sect uint8 Desc uint16 Value uint64 } // A Symbol is a Mach-O 32-bit or 64-bit symbol table entry. type Symbol struct { Name string Type uint8 Sect uint8 Desc uint16 Value uint64 } // A Thread is a Mach-O thread state command. type Thread struct { Cmd LoadCmd Len uint32 Type uint32 Data []uint32 } // Regs386 is the Mach-O 386 register structure. type Regs386 struct { AX uint32 BX uint32 CX uint32 DX uint32 DI uint32 SI uint32 BP uint32 SP uint32 SS uint32 FLAGS uint32 IP uint32 CS uint32 DS uint32 ES uint32 FS uint32 GS uint32 } // RegsAMD64 is the Mach-O AMD64 register structure. type RegsAMD64 struct { AX uint64 BX uint64 CX uint64 DX uint64 DI uint64 SI uint64 BP uint64 SP uint64 R8 uint64 R9 uint64 R10 uint64 R11 uint64 R12 uint64 R13 uint64 R14 uint64 R15 uint64 IP uint64 FLAGS uint64 CS uint64 FS uint64 GS uint64 } type intName struct { i uint32 s string } func stringName(i uint32, names []intName, goSyntax bool) string { for _, n := range names { if n.i == i { if goSyntax { return "macho." + n.s } return n.s } } return strconv.FormatUint(uint64(i), 10) } func flagName(i uint32, names []intName, goSyntax bool) string { s := "" for _, n := range names { if n.i&i == n.i { if len(s) > 0 { s += "+" } if goSyntax { s += "macho." } s += n.s i -= n.i } } if len(s) == 0 { return "0x" + strconv.FormatUint(uint64(i), 16) } if i != 0 { s += "+0x" + strconv.FormatUint(uint64(i), 16) } return s } go/src/pkg/debug/macho/testdata0040755000000000000000000000000012412656737016761 5ustar00rootroot00000000000000go/src/pkg/debug/macho/testdata/fat-gcc-386-amd64-darwin-exec0100644000000000000000000007050012412656737023721 0ustar00rootroot000000000000001, P!@  8__PAGEZERO__TEXT__text__TEXThh__cstring__TEXT __DATA __data__DATA __dyld__DATA |__IMPORT0 __jump_table__IMPORT0 8__LINKEDIT@0,0 0 P 0 /usr/lib/dyldZ7Y1Sb<*Ph 4/usr/lib/libgcc_s.1.dylib 4o/usr/lib/libSystem.B.dylibj]\$ML$ˉ\$u\$ ,D$YXcgXWUS[$ [hello, world   . @ H P \p yh dyld_stub_binding_helper__dyld_func_lookupdyld__mach_header_NXArgc_NXArgv___progname__mh_execute_header_environ_mainstart_exit_puts hH__PAGEZERO__TEXT__text__TEXTm__symbol_stub1__TEXT __stub_helper__TEXT__cstring__TEXT __eh_frame__TEXTH `8__DATA__data__DATA__dyld__DATA 8 __la_symbol_ptr__DATAXXH__LINKEDIT  @ P   /usr/lib/dyld;$rEv(!]* 8/usr/lib/libgcc_s.1.dylib 8o/usr/lib/libSystem.B.dylibjHHH}HuHHHH9uH"2ASLAS%%UHH=3 %%LLhello, worldzRx , __Pd.6>J^gjmsy dyld_stub_binding_helper__dyld_func_lookup_NXArgc_NXArgv___progname__mh_execute_header_environ_mainstart_exit_putsgo/src/pkg/debug/macho/testdata/gcc-386-darwin-exec0100755000000000000000000003045412412656737022247 0ustar00rootroot00000000000000 8__PAGEZERO__TEXT__text__TEXThh__cstring__TEXT __DATA __data__DATA __dyld__DATA |__IMPORT0 __jump_table__IMPORT0 8__LINKEDIT@0,0 0 P 0 /usr/lib/dyldZ7Y1Sb<*Ph 4/usr/lib/libgcc_s.1.dylib 4o/usr/lib/libSystem.B.dylibj]\$ML$ˉ\$u\$ ,D$YXcgXWUS[$ [hello, world   . @ H P \p yh dyld_stub_binding_helper__dyld_func_lookupdyld__mach_header_NXArgc_NXArgv___progname__mh_execute_header_environ_mainstart_exit_putsgo/src/pkg/debug/macho/testdata/gcc-amd64-darwin-exec0100755000000000000000000002050012412656737022631 0ustar00rootroot00000000000000 hH__PAGEZERO__TEXT__text__TEXTm__symbol_stub1__TEXT __stub_helper__TEXT__cstring__TEXT __eh_frame__TEXTH `8__DATA__data__DATA__dyld__DATA 8 __la_symbol_ptr__DATAXXH__LINKEDIT  @ P   /usr/lib/dyld;$rEv(!]* 8/usr/lib/libgcc_s.1.dylib 8o/usr/lib/libSystem.B.dylibjHHH}HuHHHH9uH"2ASLAS%%UHH=3 %%LLhello, worldzRx , __Pd.6>J^gjmsy dyld_stub_binding_helper__dyld_func_lookup_NXArgc_NXArgv___progname__mh_execute_header_environ_mainstart_exit_putsgo/src/pkg/debug/macho/testdata/gcc-amd64-darwin-exec-debug0100644000000000000000000001067412412656737023725 0ustar00rootroot00000000000000 "Y^7%9o__TEXT__text__TEXT__symbol_stub1__TEXT__stub_helper__TEXT__cstring__TEXT__eh_frame__TEXT `8__DATA__data__DATA__dyld__DATA __la_symbol_ptr__DATAXx__DWARF __debug_abbrev__DWARF 6__debug_aranges__DWARF6 06__debug_frame__DWARFf @f__debug_info__DWARF T__debug_line__DWARF G__debug_pubnames__DWARFA!A__debug_str__DWARF\!`\% $ > .? : ; ' I@ ,jx $j P%-jW[-jVC hello.c j T4mainGNU C 4.0.1 (Apple Inc. build 5484)hello.c/home/rsc/go/src/pkg/debug/macho/testdataintmaingo/src/pkg/debug/macho/testdata/hello.c0100644000000000000000000000011512412656737020301 0ustar00rootroot00000000000000#include int main(void) { printf("hello, world\n"); return 0; } go/src/pkg/debug/pe0040755000000000000000000000000012412656737014465 5ustar00rootroot00000000000000go/src/pkg/debug/pe/file.go0100644000000000000000000002402012412656737016005 0ustar00rootroot00000000000000// Copyright 2009 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 pe implements access to PE (Microsoft Windows Portable Executable) files. package pe import ( "debug/dwarf" "encoding/binary" "errors" "fmt" "io" "os" "strconv" "unsafe" ) // A File represents an open PE file. type File struct { FileHeader OptionalHeader interface{} // of type *OptionalHeader32 or *OptionalHeader64 Sections []*Section Symbols []*Symbol closer io.Closer } type SectionHeader struct { Name string VirtualSize uint32 VirtualAddress uint32 Size uint32 Offset uint32 PointerToRelocations uint32 PointerToLineNumbers uint32 NumberOfRelocations uint16 NumberOfLineNumbers uint16 Characteristics uint32 } type Section struct { SectionHeader // Embed ReaderAt for ReadAt method. // Do not embed SectionReader directly // to avoid having Read and Seek. // If a client wants Read and Seek it must use // Open() to avoid fighting over the seek offset // with other clients. io.ReaderAt sr *io.SectionReader } type Symbol struct { Name string Value uint32 SectionNumber int16 Type uint16 StorageClass uint8 } type ImportDirectory struct { OriginalFirstThunk uint32 TimeDateStamp uint32 ForwarderChain uint32 Name uint32 FirstThunk uint32 dll string } // Data reads and returns the contents of the PE section. func (s *Section) Data() ([]byte, error) { dat := make([]byte, s.sr.Size()) n, err := s.sr.ReadAt(dat, 0) if n == len(dat) { err = nil } return dat[0:n], err } // Open returns a new ReadSeeker reading the PE section. func (s *Section) Open() io.ReadSeeker { return io.NewSectionReader(s.sr, 0, 1<<63-1) } type FormatError struct { off int64 msg string val interface{} } func (e *FormatError) Error() string { msg := e.msg if e.val != nil { msg += fmt.Sprintf(" '%v'", e.val) } msg += fmt.Sprintf(" in record at byte %#x", e.off) return msg } // Open opens the named file using os.Open and prepares it for use as a PE binary. func Open(name string) (*File, error) { f, err := os.Open(name) if err != nil { return nil, err } ff, err := NewFile(f) if err != nil { f.Close() return nil, err } ff.closer = f return ff, nil } // Close closes the File. // If the File was created using NewFile directly instead of Open, // Close has no effect. func (f *File) Close() error { var err error if f.closer != nil { err = f.closer.Close() f.closer = nil } return err } // NewFile creates a new File for accessing a PE binary in an underlying reader. func NewFile(r io.ReaderAt) (*File, error) { f := new(File) sr := io.NewSectionReader(r, 0, 1<<63-1) var dosheader [96]byte if _, err := r.ReadAt(dosheader[0:], 0); err != nil { return nil, err } var base int64 if dosheader[0] == 'M' && dosheader[1] == 'Z' { signoff := int64(binary.LittleEndian.Uint32(dosheader[0x3c:])) var sign [4]byte r.ReadAt(sign[:], signoff) if !(sign[0] == 'P' && sign[1] == 'E' && sign[2] == 0 && sign[3] == 0) { return nil, errors.New("Invalid PE File Format.") } base = signoff + 4 } else { base = int64(0) } sr.Seek(base, os.SEEK_SET) if err := binary.Read(sr, binary.LittleEndian, &f.FileHeader); err != nil { return nil, err } if f.FileHeader.Machine != IMAGE_FILE_MACHINE_UNKNOWN && f.FileHeader.Machine != IMAGE_FILE_MACHINE_AMD64 && f.FileHeader.Machine != IMAGE_FILE_MACHINE_I386 { return nil, errors.New("Invalid PE File Format.") } var ss []byte if f.FileHeader.NumberOfSymbols > 0 { // Get COFF string table, which is located at the end of the COFF symbol table. sr.Seek(int64(f.FileHeader.PointerToSymbolTable+COFFSymbolSize*f.FileHeader.NumberOfSymbols), os.SEEK_SET) var l uint32 if err := binary.Read(sr, binary.LittleEndian, &l); err != nil { return nil, err } ss = make([]byte, l) if _, err := r.ReadAt(ss, int64(f.FileHeader.PointerToSymbolTable+COFFSymbolSize*f.FileHeader.NumberOfSymbols)); err != nil { return nil, err } // Process COFF symbol table. sr.Seek(int64(f.FileHeader.PointerToSymbolTable), os.SEEK_SET) aux := uint8(0) for i := 0; i < int(f.FileHeader.NumberOfSymbols); i++ { cs := new(COFFSymbol) if err := binary.Read(sr, binary.LittleEndian, cs); err != nil { return nil, err } if aux > 0 { aux-- continue } var name string if cs.Name[0] == 0 && cs.Name[1] == 0 && cs.Name[2] == 0 && cs.Name[3] == 0 { si := int(binary.LittleEndian.Uint32(cs.Name[4:])) name, _ = getString(ss, si) } else { name = cstring(cs.Name[:]) } aux = cs.NumberOfAuxSymbols s := &Symbol{ Name: name, Value: cs.Value, SectionNumber: cs.SectionNumber, Type: cs.Type, StorageClass: cs.StorageClass, } f.Symbols = append(f.Symbols, s) } } // Read optional header. sr.Seek(base, os.SEEK_SET) if err := binary.Read(sr, binary.LittleEndian, &f.FileHeader); err != nil { return nil, err } var oh32 OptionalHeader32 var oh64 OptionalHeader64 switch uintptr(f.FileHeader.SizeOfOptionalHeader) { case unsafe.Sizeof(oh32): if err := binary.Read(sr, binary.LittleEndian, &oh32); err != nil { return nil, err } if oh32.Magic != 0x10b { // PE32 return nil, fmt.Errorf("pe32 optional header has unexpected Magic of 0x%x", oh32.Magic) } f.OptionalHeader = &oh32 case unsafe.Sizeof(oh64): if err := binary.Read(sr, binary.LittleEndian, &oh64); err != nil { return nil, err } if oh64.Magic != 0x20b { // PE32+ return nil, fmt.Errorf("pe32+ optional header has unexpected Magic of 0x%x", oh64.Magic) } f.OptionalHeader = &oh64 } // Process sections. f.Sections = make([]*Section, f.FileHeader.NumberOfSections) for i := 0; i < int(f.FileHeader.NumberOfSections); i++ { sh := new(SectionHeader32) if err := binary.Read(sr, binary.LittleEndian, sh); err != nil { return nil, err } var name string if sh.Name[0] == '\x2F' { si, _ := strconv.Atoi(cstring(sh.Name[1:])) name, _ = getString(ss, si) } else { name = cstring(sh.Name[0:]) } s := new(Section) s.SectionHeader = SectionHeader{ Name: name, VirtualSize: sh.VirtualSize, VirtualAddress: sh.VirtualAddress, Size: sh.SizeOfRawData, Offset: sh.PointerToRawData, PointerToRelocations: sh.PointerToRelocations, PointerToLineNumbers: sh.PointerToLineNumbers, NumberOfRelocations: sh.NumberOfRelocations, NumberOfLineNumbers: sh.NumberOfLineNumbers, Characteristics: sh.Characteristics, } s.sr = io.NewSectionReader(r, int64(s.SectionHeader.Offset), int64(s.SectionHeader.Size)) s.ReaderAt = s.sr f.Sections[i] = s } return f, nil } func cstring(b []byte) string { var i int for i = 0; i < len(b) && b[i] != 0; i++ { } return string(b[0:i]) } // getString extracts a string from symbol string table. func getString(section []byte, start int) (string, bool) { if start < 0 || start >= len(section) { return "", false } for end := start; end < len(section); end++ { if section[end] == 0 { return string(section[start:end]), true } } return "", false } // Section returns the first section with the given name, or nil if no such // section exists. func (f *File) Section(name string) *Section { for _, s := range f.Sections { if s.Name == name { return s } } return nil } func (f *File) DWARF() (*dwarf.Data, error) { // There are many other DWARF sections, but these // are the required ones, and the debug/dwarf package // does not use the others, so don't bother loading them. var names = [...]string{"abbrev", "info", "str"} var dat [len(names)][]byte for i, name := range names { name = ".debug_" + name s := f.Section(name) if s == nil { continue } b, err := s.Data() if err != nil && uint32(len(b)) < s.Size { return nil, err } dat[i] = b } abbrev, info, str := dat[0], dat[1], dat[2] return dwarf.New(abbrev, nil, nil, info, nil, nil, nil, str) } // ImportedSymbols returns the names of all symbols // referred to by the binary f that are expected to be // satisfied by other libraries at dynamic load time. // It does not return weak symbols. func (f *File) ImportedSymbols() ([]string, error) { pe64 := f.Machine == IMAGE_FILE_MACHINE_AMD64 ds := f.Section(".idata") if ds == nil { // not dynamic, so no libraries return nil, nil } d, err := ds.Data() if err != nil { return nil, err } var ida []ImportDirectory for len(d) > 0 { var dt ImportDirectory dt.OriginalFirstThunk = binary.LittleEndian.Uint32(d[0:4]) dt.Name = binary.LittleEndian.Uint32(d[12:16]) dt.FirstThunk = binary.LittleEndian.Uint32(d[16:20]) d = d[20:] if dt.OriginalFirstThunk == 0 { break } ida = append(ida, dt) } names, _ := ds.Data() var all []string for _, dt := range ida { dt.dll, _ = getString(names, int(dt.Name-ds.VirtualAddress)) d, _ = ds.Data() // seek to OriginalFirstThunk d = d[dt.OriginalFirstThunk-ds.VirtualAddress:] for len(d) > 0 { if pe64 { // 64bit va := binary.LittleEndian.Uint64(d[0:8]) d = d[8:] if va == 0 { break } if va&0x8000000000000000 > 0 { // is Ordinal // TODO add dynimport ordinal support. } else { fn, _ := getString(names, int(uint32(va)-ds.VirtualAddress+2)) all = append(all, fn+":"+dt.dll) } } else { // 32bit va := binary.LittleEndian.Uint32(d[0:4]) d = d[4:] if va == 0 { break } if va&0x80000000 > 0 { // is Ordinal // TODO add dynimport ordinal support. //ord := va&0x0000FFFF } else { fn, _ := getString(names, int(va-ds.VirtualAddress+2)) all = append(all, fn+":"+dt.dll) } } } } return all, nil } // ImportedLibraries returns the names of all libraries // referred to by the binary f that are expected to be // linked with the binary at dynamic link time. func (f *File) ImportedLibraries() ([]string, error) { // TODO // cgo -dynimport don't use this for windows PE, so just return. return nil, nil } go/src/pkg/debug/pe/file_test.go0100644000000000000000000001662212412656737017055 0ustar00rootroot00000000000000// Copyright 2009 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 pe import ( "reflect" "testing" ) type fileTest struct { file string hdr FileHeader opthdr interface{} sections []*SectionHeader symbols []*Symbol } var fileTests = []fileTest{ { "testdata/gcc-386-mingw-obj", FileHeader{0x014c, 0x000c, 0x0, 0x64a, 0x1e, 0x0, 0x104}, nil, []*SectionHeader{ {".text", 0, 0, 36, 500, 1440, 0, 3, 0, 0x60300020}, {".data", 0, 0, 0, 0, 0, 0, 0, 0, 3224371264}, {".bss", 0, 0, 0, 0, 0, 0, 0, 0, 3224371328}, {".debug_abbrev", 0, 0, 137, 536, 0, 0, 0, 0, 0x42100000}, {".debug_info", 0, 0, 418, 673, 1470, 0, 7, 0, 1108344832}, {".debug_line", 0, 0, 128, 1091, 1540, 0, 1, 0, 1108344832}, {".rdata", 0, 0, 16, 1219, 0, 0, 0, 0, 1076887616}, {".debug_frame", 0, 0, 52, 1235, 1550, 0, 2, 0, 1110441984}, {".debug_loc", 0, 0, 56, 1287, 0, 0, 0, 0, 1108344832}, {".debug_pubnames", 0, 0, 27, 1343, 1570, 0, 1, 0, 1108344832}, {".debug_pubtypes", 0, 0, 38, 1370, 1580, 0, 1, 0, 1108344832}, {".debug_aranges", 0, 0, 32, 1408, 1590, 0, 2, 0, 1108344832}, }, []*Symbol{ {".file", 0x0, -2, 0x0, 0x67}, {"_main", 0x0, 1, 0x20, 0x2}, {".text", 0x0, 1, 0x0, 0x3}, {".data", 0x0, 2, 0x0, 0x3}, {".bss", 0x0, 3, 0x0, 0x3}, {".debug_abbrev", 0x0, 4, 0x0, 0x3}, {".debug_info", 0x0, 5, 0x0, 0x3}, {".debug_line", 0x0, 6, 0x0, 0x3}, {".rdata", 0x0, 7, 0x0, 0x3}, {".debug_frame", 0x0, 8, 0x0, 0x3}, {".debug_loc", 0x0, 9, 0x0, 0x3}, {".debug_pubnames", 0x0, 10, 0x0, 0x3}, {".debug_pubtypes", 0x0, 11, 0x0, 0x3}, {".debug_aranges", 0x0, 12, 0x0, 0x3}, {"___main", 0x0, 0, 0x20, 0x2}, {"_puts", 0x0, 0, 0x20, 0x2}, }, }, { "testdata/gcc-386-mingw-exec", FileHeader{0x014c, 0x000f, 0x4c6a1b60, 0x3c00, 0x282, 0xe0, 0x107}, &OptionalHeader32{ 0x10b, 0x2, 0x38, 0xe00, 0x1a00, 0x200, 0x1160, 0x1000, 0x2000, 0x400000, 0x1000, 0x200, 0x4, 0x0, 0x1, 0x0, 0x4, 0x0, 0x0, 0x10000, 0x400, 0x14abb, 0x3, 0x0, 0x200000, 0x1000, 0x100000, 0x1000, 0x0, 0x10, [16]DataDirectory{ {0x0, 0x0}, {0x5000, 0x3c8}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, {0x7000, 0x18}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, }, }, []*SectionHeader{ {".text", 0xcd8, 0x1000, 0xe00, 0x400, 0x0, 0x0, 0x0, 0x0, 0x60500060}, {".data", 0x10, 0x2000, 0x200, 0x1200, 0x0, 0x0, 0x0, 0x0, 0xc0300040}, {".rdata", 0x120, 0x3000, 0x200, 0x1400, 0x0, 0x0, 0x0, 0x0, 0x40300040}, {".bss", 0xdc, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0400080}, {".idata", 0x3c8, 0x5000, 0x400, 0x1600, 0x0, 0x0, 0x0, 0x0, 0xc0300040}, {".CRT", 0x18, 0x6000, 0x200, 0x1a00, 0x0, 0x0, 0x0, 0x0, 0xc0300040}, {".tls", 0x20, 0x7000, 0x200, 0x1c00, 0x0, 0x0, 0x0, 0x0, 0xc0300040}, {".debug_aranges", 0x20, 0x8000, 0x200, 0x1e00, 0x0, 0x0, 0x0, 0x0, 0x42100000}, {".debug_pubnames", 0x51, 0x9000, 0x200, 0x2000, 0x0, 0x0, 0x0, 0x0, 0x42100000}, {".debug_pubtypes", 0x91, 0xa000, 0x200, 0x2200, 0x0, 0x0, 0x0, 0x0, 0x42100000}, {".debug_info", 0xe22, 0xb000, 0x1000, 0x2400, 0x0, 0x0, 0x0, 0x0, 0x42100000}, {".debug_abbrev", 0x157, 0xc000, 0x200, 0x3400, 0x0, 0x0, 0x0, 0x0, 0x42100000}, {".debug_line", 0x144, 0xd000, 0x200, 0x3600, 0x0, 0x0, 0x0, 0x0, 0x42100000}, {".debug_frame", 0x34, 0xe000, 0x200, 0x3800, 0x0, 0x0, 0x0, 0x0, 0x42300000}, {".debug_loc", 0x38, 0xf000, 0x200, 0x3a00, 0x0, 0x0, 0x0, 0x0, 0x42100000}, }, []*Symbol{}, }, { "testdata/gcc-amd64-mingw-obj", FileHeader{0x8664, 0x6, 0x0, 0x198, 0x12, 0x0, 0x4}, nil, []*SectionHeader{ {".text", 0x0, 0x0, 0x30, 0x104, 0x15c, 0x0, 0x3, 0x0, 0x60500020}, {".data", 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0500040}, {".bss", 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0500080}, {".rdata", 0x0, 0x0, 0x10, 0x134, 0x0, 0x0, 0x0, 0x0, 0x40500040}, {".xdata", 0x0, 0x0, 0xc, 0x144, 0x0, 0x0, 0x0, 0x0, 0x40300040}, {".pdata", 0x0, 0x0, 0xc, 0x150, 0x17a, 0x0, 0x3, 0x0, 0x40300040}, }, []*Symbol{ {".file", 0x0, -2, 0x0, 0x67}, {"main", 0x0, 1, 0x20, 0x2}, {".text", 0x0, 1, 0x0, 0x3}, {".data", 0x0, 2, 0x0, 0x3}, {".bss", 0x0, 3, 0x0, 0x3}, {".rdata", 0x0, 4, 0x0, 0x3}, {".xdata", 0x0, 5, 0x0, 0x3}, {".pdata", 0x0, 6, 0x0, 0x3}, {"__main", 0x0, 0, 0x20, 0x2}, {"puts", 0x0, 0, 0x20, 0x2}, }, }, { "testdata/gcc-amd64-mingw-exec", FileHeader{0x8664, 0x9, 0x53472993, 0x0, 0x0, 0xf0, 0x22f}, &OptionalHeader64{ 0x20b, 0x2, 0x16, 0x6a00, 0x2400, 0x1600, 0x14e0, 0x1000, 0x400000, 0x1000, 0x200, 0x4, 0x0, 0x0, 0x0, 0x5, 0x2, 0x0, 0x11000, 0x400, 0x1841e, 0x3, 0x0, 0x200000, 0x1000, 0x100000, 0x1000, 0x0, 0x10, [16]DataDirectory{ {0x0, 0x0}, {0xe000, 0x990}, {0x0, 0x0}, {0xa000, 0x498}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, {0x10000, 0x28}, {0x0, 0x0}, {0x0, 0x0}, {0xe254, 0x218}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, }, }, []*SectionHeader{ {".text", 0x6860, 0x1000, 0x6a00, 0x400, 0x0, 0x0, 0x0, 0x0, 0x60500020}, {".data", 0xe0, 0x8000, 0x200, 0x6e00, 0x0, 0x0, 0x0, 0x0, 0xc0500040}, {".rdata", 0x6b0, 0x9000, 0x800, 0x7000, 0x0, 0x0, 0x0, 0x0, 0x40600040}, {".pdata", 0x498, 0xa000, 0x600, 0x7800, 0x0, 0x0, 0x0, 0x0, 0x40300040}, {".xdata", 0x488, 0xb000, 0x600, 0x7e00, 0x0, 0x0, 0x0, 0x0, 0x40300040}, {".bss", 0x1410, 0xc000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0600080}, {".idata", 0x990, 0xe000, 0xa00, 0x8400, 0x0, 0x0, 0x0, 0x0, 0xc0300040}, {".CRT", 0x68, 0xf000, 0x200, 0x8e00, 0x0, 0x0, 0x0, 0x0, 0xc0400040}, {".tls", 0x48, 0x10000, 0x200, 0x9000, 0x0, 0x0, 0x0, 0x0, 0xc0600040}, }, []*Symbol{}, }, } func isOptHdrEq(a, b interface{}) bool { switch va := a.(type) { case *OptionalHeader32: vb, ok := b.(*OptionalHeader32) if !ok { return false } return *vb == *va case *OptionalHeader64: vb, ok := b.(*OptionalHeader64) if !ok { return false } return *vb == *va case nil: return b == nil } return false } func TestOpen(t *testing.T) { for i := range fileTests { tt := &fileTests[i] f, err := Open(tt.file) if err != nil { t.Error(err) continue } if !reflect.DeepEqual(f.FileHeader, tt.hdr) { t.Errorf("open %s:\n\thave %#v\n\twant %#v\n", tt.file, f.FileHeader, tt.hdr) continue } if !isOptHdrEq(tt.opthdr, f.OptionalHeader) { t.Errorf("open %s:\n\thave %#v\n\twant %#v\n", tt.file, f.OptionalHeader, tt.opthdr) continue } for i, sh := range f.Sections { if i >= len(tt.sections) { break } have := &sh.SectionHeader want := tt.sections[i] if !reflect.DeepEqual(have, want) { t.Errorf("open %s, section %d:\n\thave %#v\n\twant %#v\n", tt.file, i, have, want) } } tn := len(tt.sections) fn := len(f.Sections) if tn != fn { t.Errorf("open %s: len(Sections) = %d, want %d", tt.file, fn, tn) } for i, have := range f.Symbols { if i >= len(tt.symbols) { break } want := tt.symbols[i] if !reflect.DeepEqual(have, want) { t.Errorf("open %s, symbol %d:\n\thave %#v\n\twant %#v\n", tt.file, i, have, want) } } } } func TestOpenFailure(t *testing.T) { filename := "file.go" // not a PE file _, err := Open(filename) // don't crash if err == nil { t.Errorf("open %s: succeeded unexpectedly", filename) } } go/src/pkg/debug/pe/pe.go0100644000000000000000000000775212412656737015507 0ustar00rootroot00000000000000// Copyright 2009 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 pe type FileHeader struct { Machine uint16 NumberOfSections uint16 TimeDateStamp uint32 PointerToSymbolTable uint32 NumberOfSymbols uint32 SizeOfOptionalHeader uint16 Characteristics uint16 } type DataDirectory struct { VirtualAddress uint32 Size uint32 } type OptionalHeader32 struct { Magic uint16 MajorLinkerVersion uint8 MinorLinkerVersion uint8 SizeOfCode uint32 SizeOfInitializedData uint32 SizeOfUninitializedData uint32 AddressOfEntryPoint uint32 BaseOfCode uint32 BaseOfData uint32 ImageBase uint32 SectionAlignment uint32 FileAlignment uint32 MajorOperatingSystemVersion uint16 MinorOperatingSystemVersion uint16 MajorImageVersion uint16 MinorImageVersion uint16 MajorSubsystemVersion uint16 MinorSubsystemVersion uint16 Win32VersionValue uint32 SizeOfImage uint32 SizeOfHeaders uint32 CheckSum uint32 Subsystem uint16 DllCharacteristics uint16 SizeOfStackReserve uint32 SizeOfStackCommit uint32 SizeOfHeapReserve uint32 SizeOfHeapCommit uint32 LoaderFlags uint32 NumberOfRvaAndSizes uint32 DataDirectory [16]DataDirectory } type OptionalHeader64 struct { Magic uint16 MajorLinkerVersion uint8 MinorLinkerVersion uint8 SizeOfCode uint32 SizeOfInitializedData uint32 SizeOfUninitializedData uint32 AddressOfEntryPoint uint32 BaseOfCode uint32 ImageBase uint64 SectionAlignment uint32 FileAlignment uint32 MajorOperatingSystemVersion uint16 MinorOperatingSystemVersion uint16 MajorImageVersion uint16 MinorImageVersion uint16 MajorSubsystemVersion uint16 MinorSubsystemVersion uint16 Win32VersionValue uint32 SizeOfImage uint32 SizeOfHeaders uint32 CheckSum uint32 Subsystem uint16 DllCharacteristics uint16 SizeOfStackReserve uint64 SizeOfStackCommit uint64 SizeOfHeapReserve uint64 SizeOfHeapCommit uint64 LoaderFlags uint32 NumberOfRvaAndSizes uint32 DataDirectory [16]DataDirectory } type SectionHeader32 struct { Name [8]uint8 VirtualSize uint32 VirtualAddress uint32 SizeOfRawData uint32 PointerToRawData uint32 PointerToRelocations uint32 PointerToLineNumbers uint32 NumberOfRelocations uint16 NumberOfLineNumbers uint16 Characteristics uint32 } const COFFSymbolSize = 18 type COFFSymbol struct { Name [8]uint8 Value uint32 SectionNumber int16 Type uint16 StorageClass uint8 NumberOfAuxSymbols uint8 } const ( IMAGE_FILE_MACHINE_UNKNOWN = 0x0 IMAGE_FILE_MACHINE_AM33 = 0x1d3 IMAGE_FILE_MACHINE_AMD64 = 0x8664 IMAGE_FILE_MACHINE_ARM = 0x1c0 IMAGE_FILE_MACHINE_EBC = 0xebc IMAGE_FILE_MACHINE_I386 = 0x14c IMAGE_FILE_MACHINE_IA64 = 0x200 IMAGE_FILE_MACHINE_M32R = 0x9041 IMAGE_FILE_MACHINE_MIPS16 = 0x266 IMAGE_FILE_MACHINE_MIPSFPU = 0x366 IMAGE_FILE_MACHINE_MIPSFPU16 = 0x466 IMAGE_FILE_MACHINE_POWERPC = 0x1f0 IMAGE_FILE_MACHINE_POWERPCFP = 0x1f1 IMAGE_FILE_MACHINE_R4000 = 0x166 IMAGE_FILE_MACHINE_SH3 = 0x1a2 IMAGE_FILE_MACHINE_SH3DSP = 0x1a3 IMAGE_FILE_MACHINE_SH4 = 0x1a6 IMAGE_FILE_MACHINE_SH5 = 0x1a8 IMAGE_FILE_MACHINE_THUMB = 0x1c2 IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x169 ) go/src/pkg/debug/pe/testdata0040755000000000000000000000000012412656737016276 5ustar00rootroot00000000000000go/src/pkg/debug/pe/testdata/gcc-386-mingw-exec0100644000000000000000000007236512412656737021425 0ustar00rootroot00000000000000MZ@ !L!This program cannot be run in DOS mode. $PEL`jL< 8` @J Pp.text `P`.data @0.rdata 0@0@.bss@@.idataP@0.CRT`@0.tls p@0/4 B/19Q B/35"B/51"$B/63W4B/77D6B/89480B/1028:BU(Q@fUQ@fUS4p0@tD$D$$Ѓ $@ K EED$ @D$@@$@@D$ ED$9 (@@uP3  @! D$@@D$@@$i $V Q@ @D$C$ (@@D$C0$ (@@D$CP$ i'U$ Q@&U$ Q@&USE=w;=rKD$$C 1[]=tY=t=u=t&tE=uD$$ tst$vи럍&1jD$$ tQn$ и\t&$иfCD$$_ 'D$$ C D$$' u U @t1$0@< Rt#D$0@$/ t $ @ÐUÐU>$$0@ÐU1]É'UE u#UD$T$E$ t&tظ fUS Q@E :v1=P@@t P@@] @@$40@<@@D$A0@$@@D$\0@@@$@@@@ @@t?@@t5P@@] ED$D$E$C@@@@$@@P@@] `@`@tЃ`@u] @@@@뚐USX5 PX1Щ 1t ,@@fy ,@@t ,@@t ,@@t ,@@t ,@@ t ,@@@ u.=vx!@t ,@@[]Á ,@@Ɓ ,@@ӐU]Q@uu D$D$@\$ $t0@Et$$D$UHɉ]Éu։}u ]u}]ÍED$D$$ tvE܃t)@t$ED$ ED$@D$Eȉ$|$t$$+E܃t@tED$ ED$EԉD$Eȉ$N_\$D$$0@&'U80@@]u}t ]u}]ø 1@- 1@0@@~ڃ 1@~(= 1@u5$1@u (1@u ,1@t&u\CuUC  1@s@C S9tc tuET$$0@ 1@:@}CU 1@r ffxo)ʍ<:}U5xA)ʍ<:}Uf8U)Ϲ} 1@&)U븁)U늉D$$0@*U @tС @P@ @uÍUVS@t-t4@fu$@[^]Ív1ÍC@u뽍v'U @@@t@@@끐U]ÐUVSX@@ue[^]$h@@@@t+$}{u tC4$Ћ[u$h@@xe[^]Í&'UE tBrufZX@@uX@@$h@@ϐt&X@@tX@@Í$h@@ USX@@]u 1]Í$h@@@@t9uD9t@u$h@@u1]ËPQ$$h@@QڋP@@ܐUSX@@u]D$ $øt܋E$h@@E C@@@@C$h@@1롐%Q@%Q@%Q@%Q@%Q@%@Q@%RPR`RpRRRRRRRRRRRRRS SSSLQdQ|QQQQQQQRR0R>RPR`RpRRRRRRRRRRRRRS SSSkDeleteCriticalSection~EnterCriticalSectionExitProcessFreeLibraryEGetLastErrorQGetModuleHandleAlGetProcAddressInitializeCriticalSection LeaveCriticalSection LoadLibraryASetUnhandledExceptionFilterTlsGetValueVirtualProtect!VirtualQuery7__getmainargsM__p__environO__p__fmodec__set_app_type_cexit _iob_onexit_setmode_winmajorGabortNatexitScallocqfreeyfwritememcpyputssignalvfprintfPPPPPPPPPPPPPPKERNEL32.dllPPPPPPPPPPPPPPPPPPmsvcrt.dll@@p@p@@@`@D@!`main2 E __CTOR_LIST__b __DTOR_LIST__"_iobuf*FILEg _iobufPFILEix86_tune_indices{ix86_arch_indices VARENUM func_ptrGNU C 4.5.0hello.cg:\opensource\go\src\pkg\debug\pe\testdataD@e@unsigned intshort unsigned intchar_iobuf _ptr#_cnt##_base#_flag## _file##_charbuf##_bufsiz##_tmpfname#~intFILElong long intlong intshort intmain#D@e@* _iobz _iobz| GNU C 4.5.0../../../../gcc-4.5.0/libgcc/../gcc/libgcc2.cc:\crossdev\build\gcc-tdm32\mingw32\libgcc@@intunsigned intshort unsigned intchar_iobuf J_ptrJ#_cnt~#_baseJ#_flag~# _file~#_charbuf~#_bufsiz~#_tmpfnameJ#FILElong long intlong intshort intlong unsigned intsigned charunsigned charlong long unsigned intix86_tune_indices{ X86_TUNE_USE_LEAVE X86_TUNE_PUSH_MEMORY X86_TUNE_ZERO_EXTEND_WITH_AND X86_TUNE_UNROLL_STRLEN X86_TUNE_DEEP_BRANCH_PREDICTION X86_TUNE_BRANCH_PREDICTION_HINTS X86_TUNE_DOUBLE_WITH_ADD X86_TUNE_USE_SAHF X86_TUNE_MOVX X86_TUNE_PARTIAL_REG_STALL X86_TUNE_PARTIAL_FLAG_REG_STALL X86_TUNE_USE_HIMODE_FIOP X86_TUNE_USE_SIMODE_FIOP X86_TUNE_USE_MOV0 X86_TUNE_USE_CLTD X86_TUNE_USE_XCHGB X86_TUNE_SPLIT_LONG_MOVES X86_TUNE_READ_MODIFY_WRITE X86_TUNE_READ_MODIFY X86_TUNE_PROMOTE_QIMODE X86_TUNE_FAST_PREFIX X86_TUNE_SINGLE_STRINGOP X86_TUNE_QIMODE_MATH X86_TUNE_HIMODE_MATH X86_TUNE_PROMOTE_QI_REGS X86_TUNE_PROMOTE_HI_REGS X86_TUNE_ADD_ESP_4 X86_TUNE_ADD_ESP_8 X86_TUNE_SUB_ESP_4 X86_TUNE_SUB_ESP_8 X86_TUNE_INTEGER_DFMODE_MOVES X86_TUNE_PARTIAL_REG_DEPENDENCY X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY X86_TUNE_SSE_UNALIGNED_MOVE_OPTIMAL! X86_TUNE_SSE_SPLIT_REGS" X86_TUNE_SSE_TYPELESS_STORES# X86_TUNE_SSE_LOAD0_BY_PXOR$ X86_TUNE_MEMORY_MISMATCH_STALL% X86_TUNE_PROLOGUE_USING_MOVE& X86_TUNE_EPILOGUE_USING_MOVE' X86_TUNE_SHIFT1( X86_TUNE_USE_FFREEP) X86_TUNE_INTER_UNIT_MOVES* X86_TUNE_INTER_UNIT_CONVERSIONS+ X86_TUNE_FOUR_JUMP_LIMIT, X86_TUNE_SCHEDULE- X86_TUNE_USE_BT. X86_TUNE_USE_INCDEC/ X86_TUNE_PAD_RETURNS0 X86_TUNE_EXT_80387_CONSTANTS1 X86_TUNE_SHORTEN_X87_SSE2 X86_TUNE_AVOID_VECTOR_DECODE3 X86_TUNE_PROMOTE_HIMODE_IMUL4 X86_TUNE_SLOW_IMUL_IMM32_MEM5 X86_TUNE_SLOW_IMUL_IMM86 X86_TUNE_MOVE_M1_VIA_OR7 X86_TUNE_NOT_UNPAIRABLE8 X86_TUNE_NOT_VECTORMODE9 X86_TUNE_USE_VECTOR_FP_CONVERTS: X86_TUNE_USE_VECTOR_CONVERTS; X86_TUNE_FUSE_CMP_AND_BRANCH< X86_TUNE_OPT_AGU= X86_TUNE_LAST> ix86_arch_indices X86_ARCH_CMOVE X86_ARCH_CMPXCHG X86_ARCH_CMPXCHG8B X86_ARCH_XADD X86_ARCH_BSWAP X86_ARCH_LASTfloatdoubleVARENUMs VT_EMPTY VT_NULL VT_I2 VT_I4 VT_R4 VT_R8 VT_CY VT_DATE VT_BSTR VT_DISPATCH VT_ERROR VT_BOOL VT_VARIANT VT_UNKNOWN VT_DECIMAL VT_I1 VT_UI1 VT_UI2 VT_UI4 VT_I8 VT_UI8 VT_INT VT_UINT VT_VOID VT_HRESULT VT_PTR VT_SAFEARRAY VT_CARRAY VT_USERDEFINED VT_LPSTR VT_LPWSTR VT_RECORD$ VT_INT_PTR% VT_UINT_PTR& VT_FILETIME VT_BLOB VT_STREAM VT_STORAGE VT_STREAMED_OBJECT VT_STORED_OBJECT VT_BLOB_OBJECT VT_CF VT_CLSID VT_BSTR_BLOB VT_VECTOR VT_ARRAY VT_BYREF VT_RESERVED VT_ILLEGAL VT_ILLEGALMASKED VT_TYPEMASKcomplex floatcomplex double long doublecomplex long double__float128 __unknown__ func_ptr+   P _iob _iob  E __CTOR_LIST__5 @__DTOR_LIST__5 @% $ >  : ;  : ; I8  I: ; I.? : ; ' I@I ! 4: ; I? < % $ >  : ;  : ; I8  I: ; I$ >  : ;  (  : ; $ > ' I!4: ; I? < !I/ 4: ;I?  |e g:/mingw32/bin/../lib/gcc/mingw32/4.5.0/../../../../includehello.cstdio.hD@YY /mingw/lib/../include../../../../gcc-4.5.0/libgcc/../gcc/config/i386../../../../gcc-4.5.0/libgcc/../gccstdio.hi386.hwtypes.hgbl-ctors.hlibgcc2.c| D@!AB ] tt u !t.filegcrt1.c_atexit __onexit q  @ `  .text&.data.bss.filegcygming-crtbegin.c  < .textQ.data.bss.rdata".jcr .file9ghello.c_mainD .textD!.data.bss    .rdata$ $418< L &\ .file\gtlssup.ckp x  ___xd_a___xd_z.textp.data.bss .rdata4@.tls$AAA.tls$ZZZ.CRT$XLA.CRT$XLZ .tls.CRT$XLC.CRT$XLD.CRT$XDA.CRT$XDZ.filedgCRTglob.c.text@.data.bss(.filelgCRTfmode.c.text@.data.bss(.filetgtxtmode.c.text@.data.bss,.file~gcpu_features.c@ .text@ .data.bss,.filegpseudo-reloc.c  p P 0.text .data.bss0.rdatat.fileggccmain.c  _p.1653'0  ___main  :@.text  .data.bss@.filegCRT_fp10.cG  _fpreset  .text .data .bssP.filegcrtst.c.text .data .bssP.filegtlsthrd.cQ  kXh@    `  .text ".data .bssX@.fileg.text .data .bss.fileOglibgcc2.c.text .data .bss     < 6L& k.text .data .bss.idata$7.idata$5(.idata$4.idata$6.text .data .bss.idata$7.idata$5.idata$4.idata$6.text .data .bss.idata$7.idata$5.idata$4.idata$6.text .data .bss.idata$7t.idata$5.idata$4x.idata$6`.text .data .bss.idata$7|.idata$5.idata$4.idata$6.text .data .bss.idata$7x.idata$5.idata$4|.idata$6p.text .data .bss.idata$7.idata$5.idata$4.idata$6.text .data .bss.idata$7.idata$5.idata$4.idata$6.text .data .bss.idata$7.idata$5@.idata$4.idata$6.text .data .bss.idata$7.idata$5<.idata$4.idata$6 .text .data .bss.idata$7.idata$5 .idata$4.idata$6.text .data .bss.idata$7.idata$54.idata$4.idata$6.text .data .bss.idata$7.idata$5D.idata$4.idata$6.text .data .bss.idata$7.idata$5$.idata$4.idata$6.text .data .bss.idata$7.idata$58.idata$4.idata$6.text( .data .bss.idata$7.idata$50.idata$4.idata$6.text0 .data .bss.idata$7.idata$5,.idata$4.idata$6.file]gfakehnamexfthunk.text8 .data .bss.idata$2.idata$4x.idata$5.filegfake.text8 .data .bss.idata$4.idata$5H.idata$7 .text8 .data .bss.idata$7T.idata$5.idata$4d.idata$6.text@ .data .bss.idata$74.idata$5.idata$4D.idata$6|.textH .data .bss.idata$7@.idata$5.idata$4P.idata$6.textP .data .bss.idata$7D.idata$5.idata$4T.idata$6.textX .data .bss.idata$7P.idata$5.idata$4`.idata$6.text` .data .bss.idata$78.idata$5.idata$4H.idata$6.texth .data .bss.idata$7`.idata$5.idata$4p.idata$6P.textp .data .bss.idata$7\.idata$5.idata$4l.idata$6>.textx .data .bss.idata$7X.idata$5.idata$4h.idata$60.text .data .bss.idata$7<.idata$5.idata$4L.idata$6.text .data .bss.idata$7,.idata$5.idata$4<.idata$6L.text .data .bss.idata$7H.idata$5.idata$4X.idata$6.text .data .bss.idata$70.idata$5.idata$4@.idata$6d.text .data .bss.idata$7L.idata$5.idata$4\.idata$6.filegfakehname<fthunk.text .data .bss.idata$2.idata$4<.idata$5.filegfake.text .data .bss.idata$4t.idata$5.idata$7d .filegcygming-crtend.c   .text .data .bss.jcr ' .text.data .bss.idata$7.idata$5 .idata$4.idata$6__cexit  4p  G fv`   _free(    8  =Tcx  $___xl_c  <N`___xl_z p  _puts  h   H   '  5MP  _q@__dll__<_fwrite  (@ X  _memcpy  / M__argc_k@  z  ___xl_a___xl_d __CRT_MTP(__argv _calloc0  __fmode 8*H]__end__g_signal     @  ,_abort  - B W h u     , 0   ) 4  > S a }  D   x      / Q dg p       4 .debug_aranges.debug_pubnames.debug_pubtypes.debug_info.debug_abbrev.debug_line.debug_frame.debug_loc___mingw_CRTStartup_WinMainCRTStartup_mainCRTStartup__gnu_exception_handler@4___JCR_LIST_____gcc_register_frame___gcc_deregister_frame.debug_abbrev.debug_info.debug_line.debug_frame.debug_loc.debug_pubnames.debug_pubtypes.debug_aranges___tlregdtor___dyn_tls_dtor@12___dyn_tls_init@12___mingw_mthread_hdll___cpu_features_init___report_error___write_memory__pei386_runtime_relocator_was_init.31087___do_global_dtors___do_global_ctors_initialized__fpreset___mingwthr_run_key_dtors___mingwthr_cs_init___mingwthr_cs_key_dtor_list___mingw_TLScallback____w64_mingwthr_remove_key_dtor____w64_mingwthr_add_key_dtorpseudo-reloc-list.c___JCR_END___register_frame_ctor.ctors.65535_VirtualProtect@16___RUNTIME_PSEUDO_RELOC_LIST____imp___setmode__data_start___FreeLibrary@4___DTOR_LIST____imp__VirtualProtect@16.weak.__Jv_RegisterClasses.___gcc_register_frame__imp___onexit___p__fmode__imp__GetLastError@0_SetUnhandledExceptionFilter@4__imp__VirtualQuery@12___tls_start____imp__TlsGetValue@4__libmsvcrt_a_iname__imp__InitializeCriticalSection@4_DeleteCriticalSection@4__imp__abort__dll_characteristics____size_of_stack_commit____size_of_stack_reserve____major_subsystem_version_____crt_xl_start_____crt_xi_start_____crt_xi_end___GetLastError@0__imp____p__environ_VirtualQuery@12_mingw_initltsdrot_force__imp___iob_GetModuleHandleA@4__bss_start_____RUNTIME_PSEUDO_RELOC_LIST_END____size_of_heap_commit_____p__environ__imp__GetProcAddress@8_GetProcAddress@8___crt_xp_start_____mingw_gMTKeyDtor___crt_xp_end____imp__signal__imp__puts__minor_os_version____imp__atexit__head_libmsvcrt_a__image_base____section_alignment___LoadLibraryA@4__imp__FreeLibrary@4__RUNTIME_PSEUDO_RELOC_LIST____imp____p__fmode__tls_start_ExitProcess@4__data_end_____getmainargs__CTOR_LIST_____set_app_type__bss_end____CRT_fmode___crt_xc_end____tls_index___crt_xc_start_____CTOR_LIST____imp__memcpy__file_alignment____imp__LeaveCriticalSection@4__major_os_version____tls_end__imp__GetModuleHandleA@4__DTOR_LIST___EnterCriticalSection@4__size_of_heap_reserve_____crt_xt_start_____ImageBase__subsystem_____mingw_gMTRemoveKeyDtor___mingw_usemthread_dll__imp__calloc__Jv_RegisterClasses__imp____getmainargs__imp___winmajor___tls_end____imp__ExitProcess@4_mingw_initltssuo_force_InitializeCriticalSection@4___cpu_features__imp__free__imp__SetUnhandledExceptionFilter@4__major_image_version____loader_flags____CRT_glob__setmode__head_libkernel32_a__imp___cexit__minor_subsystem_version____minor_image_version____imp__vfprintf__imp____set_app_type_mingw_initltsdyn_force_TlsGetValue@4__imp__DeleteCriticalSection@4_LeaveCriticalSection@4__imp__LoadLibraryA@4__RUNTIME_PSEUDO_RELOC_LIST_END____libkernel32_a_iname___dyn_tls_init_callback__tls_used___crt_xt_end___vfprintf__imp__EnterCriticalSection@4__imp__fwritego/src/pkg/debug/pe/testdata/gcc-386-mingw-obj0100644000000000000000000000450412412656737021241 0ustar00rootroot00000000000000L J.text$ 0`.data@0.bss0/4B/18B/30CB.rdata@0@/4240B/558B/66?"B/82&Z,B/98 6BU$Ð% $ >  : ;  : ; I8  I: ; I.? : ; ' I@I ! 4: ; I? < GNU C 4.5.0hello.cg:\opensource\go\src\pkg\debug\pe\testdata!unsigned intshort unsigned intchar_iobuf _ptr#_cnt##_base#_flag## _file##_charbuf##_bufsiz##_tmpfname#~intFILElong long intlong intshort intmain#!* _iobz _iobz|e g:/mingw32/bin/../lib/gcc/mingw32/4.5.0/../../../../includehello.cstdio.hYYhello, world| !AB ] tt u !t`main"_iobuf*FILE!  LPT nrv r    .fileghello.c_main .text!.data.bssq.rdata 4 8  &  ___main _puts .debug_abbrev.debug_info.debug_line.debug_frame.debug_loc.debug_pubnames.debug_pubtypes.debug_aranges.debug_abbrev.debug_info.debug_line.debug_frame.debug_loc.debug_pubnames.debug_pubtypes.debug_arangesgo/src/pkg/debug/pe/testdata/gcc-amd64-mingw-exec0100644000000000000000000011100012412656737021774 0ustar00rootroot00000000000000MZ@ !L!This program cannot be run in DOS mode. $PEd )GS/ j$@  (T.text`hj P`.datan@P.rdatap@`@.pdatax@0@.xdata~@0@.bss`.idata @0.CRTh@@.tlsH@`ffffff.H8D LHٯH ίHݯHD$ eѯH8H(1f=MZ߯ѯïɯtg}˯tHeHHHH =xotf1H(ùEeHc 5HHʁ:PEuJf t?f j]1KfH 9 $ 1H(Ãzt,1ATUWVSHDܮ1 HT$ EHHeH%0HX1HHt5H9KH=(1 H97HHHuߋ1ۃ"`֭u 1HHmHt E11 H H(Hw}HHt H b;DĭEtzH1HtH([^_]HUWVSH(1Hׅu H([^_]úMHHt=(HxH HH ԟHHC?H([^_]þ뚐SH ˅u1H [H HHt9u NDA9t'HHBHuH Tʸ1H [fDHHHJHLH )HBH>HِH(tGru;H(Ð+ŞuH ٞݷtH(fH ېQPH=HL$rHH H-H=wH)H XYÐHHHD$`LD$`LL$hE1IHHD$ 0HD$8HHÐH8ILD$ HE10tH8ÐHXI*tBD$D1fuOBD$D1%L$AHD$HLL$0L$ LL$DH TDD$(HD$8MqHX@t'BD$Dÿ@D$D11fBD$D>@tHX)LL$ MAHT$0|$@HD$@HD$0HD$HHD$8HXSH BH uR$9S(~u#HcC$H S$S$H [f.H0JS$S$H [fATUWVSH@LHLD$,HL$014Cx9OC 9})C ~C t{~TLD$,HL$0H4~:@H|$0Ld1HH!L9uHڹ C PS H@[^_]A\C fC f. HC HK uVUWVSH(A@HΉLÅx9OC 9)C ~)C u#C  HcC HK uEH|t8f.HH1H9uC PS ~Hڹ C PS H([^_]C VSH(HHHtGIHH([^HcfH8A@tDHL$ EXD$ -LQA E1B D C IIuIRH)H8EXAtHL$ D$ +LQA@tHL$ D$ LQfHL$ IfDUHWVSH(DBDR1HIEAIADHt fz F A9AMHHHH)A€H|$ tH6ADVMLIIIFH9[F t1f~ t*HH)HH?H>HЃH)H6fDIHIXIHHHH)0HAHuDFE~/HH)AE~!AHHHT @0HH9uH\ H9vF ~YHH)‹F҉V ~JtV Vu-V J҉N ~ H F PV Fto-HH9s1HH QH9uF PV ~H 2F PV He[^_]H@A@,IXft++HfDȺVUUUD)AfD@` HTV J҉N $0F HPV IIDN0HsH.UHAVAUATWVSH oLE@AʋwDHIɺF,D0EAID$t f D_ E9DAMHHHH)HLd$ IELA ISMt#DHD!ȍP09~7ID MɈCuI9EmLH)AE[AHHHT 0HH9uH\ L9D)A9EA)EDo ~(AotG tAEADGEAuAotG t DC0HE~;G u5AAH AEDn1IA)AuL9vHH qL9uE~H PFHe[^_A\A]A^]f.DVUUUD)A?fDG AfAoG 0HG%=ADHTH0HH9uMcJ\+Af.DOEN0HBLwAuAsUHATWVSH0yHQft`HcFIHHIH)LEH\$ EH+,~G@H| HHH9uLHe[^_A\]H.He[^_A\]@H.ƐEAHLMHMA^.~UfVF8V@ATUWVSH DljHօLEA D96A)EA E&CD9A)EDC ADC fE~!AEDC t CWdC&@S ~C%=VUUULc C0tHHUCaHCt#c0tHHCPSH [^_]A\f.C AC f{ OVUUU)ʃED)ЃfEAA9uDC DHڹ cC PS Hڹ-AC f{ )R9IغLaC+fC @CDHڹ0xfExAEA tf.Hڹ+sS Hڹ0SC PS VUUULc DHڹ0#Hڹ nC f C 5ffffff.WVSH ALEHAgfffIDIcAAAE)t$AgfffDDAAAD)Au{,S A9AMG9SC LIA KC,HڃCȃ EC7{ HHH [^_)‰S fVSHHHӋR)xNLD$A$IT$AGIHE1EDT$(L\$0L$xD$\x.HPLL$\HL$ZADT$(L\$0~ T$Zf$$GHHT$pE[L$xGHE;L$x@GHfDADDI4$HII|$IHHDH-LD$pH}8GE1HAdI$IHD$`$IGAHA'4PHAA I$IHD$`DŽ$L$GAH0A GH2uGAHAIc$IHD$`7A$IHD$`/$If!D$<DŽ$D$xyHT$p%HT$`IHT$`HD$`IHD$`Eu]L$x\$|]Hc$IHD$`HD$`HD$`HD$`uGAHADŽ$IGE1HAWAVAUATUWVSH)$E1HAMA1LˉAwrHHHcHPHƀ9HFDL9uAA01EaA LH$HH$@D t H$HH2D +($LH[^_]A\A]A^A_Ë)1Ƀ ~ f9bIƍEMNHLMDLH HI9sL)HHcIDDJEHɉuAFD$`LO($EANLH$@H$HAH sGqIfH$@H JGAH$H8IH$@H$HH GAIH$LDD$0;$T$`D$(DD$0L\$(ADLMH AA*ȁ?AHH I DLT$(1D$(D)Ɂ5\FY FYFXFX~*Y FX,fWf.L$hMDŽ$AH I у|$hMw6HcL$hHFLL$(L$(f.l$hDŽ$T$`DŽ$)ƒT$pMT$hT$hT$pDŽ$$$0 $0$01$0 $0 *Ÿ1DŽ$DŽ$$DŽ$8YTE,ȃ$fDT$HDD$0LL$8L\$@INjG T$HDD$0LL$8L\$@D$lt MD$lD$lt +D$lD$lT$l T$h$LL$(DŽ$d$(tDf.f(ċ$XXDD$(LT$(LAH H I …*$f(E1ɋ$I HHDLT$(cDDŽ$HcT$(^,Iw\*҃0A\f.-Cf(\f.$9‰$C4ff(\f.$9Љ$YY,*҃0H\f.vf.Eaz AYLf"$)D$`E%fHcAVAD)‰T$`fDŽ$0="$0$0%DŽ$$8L$h$ɉ$ $!1DŽ$Ef(XXpBD$(LT$(LAH H I f(LT$(L$(\>Bf. 4BfWf.d$(L\$(ED$h;G$HcHTBЅL$8:$YAL\$(D$(f.Dd$h1HD$xAIwA11A HH|$xcH;|$x)HL$xID$E+l$`WDE)9щ$a$0S$0EA)A@D$$E~$0~ 9$!$$$D$p`HD$xT$p~#~9t$pD$pO)$)D$p$)Ƌ$~S$~1HL$xfLHHD$x&LHD$HHD$HIƋ$)Hŋ$~$H HŃ$0DŽ$$tEH|+|$p$$~LIƋ$T$p…~ HHŋ$D$E$0$u;E1H/LHHq~Dd$hAz1HD$xD$8L1AAdfD$p$f.*f.zl$hfDL$h)$DŽ$ى$u$$HD$xD$E>~HL$xHD$xD$LL$xE.H$DŽ$LH|$xHl$XLL|$pLl$`L$0 uHD$`uDD$lE EuD $0uHT$`]D&$H9$LE1L qE1H9Iƺ HUHE1 HBHÃ$HT$XL5HLAD`0cHL$XHADHIEHLHD$03LD$0HH$0$$)9$}+$1$$$Y$$$$LUIHHDŽ$7DŽ$D$8E$8ANj$8$8$D$!‰$KDŽ$HL2E1L l$hIƋ$$$0$$DŽ$L$"LE1 $IHL D`0D&H;$1T$ls|$lA~VPHƀ9HF$L9uDd$hA1A AL\$(DŽ$IwD$(f(^,*ȍP0AY\f.$9$:$f($9f(ȃ$Yf(^,*P0HY\f.f(zf.uDd$hAE1|$`GA9$D$pDŽ$$DŽ$!ADŽ$8vDT$lE|$l;Dd$hAA1HD$xLT$(HHr9\$(L\$(HcDŽ$LYD$(8Yƒ$f(,хt *\f(0$H9u 8f(Xf.S\f.Xf.4.E1fPHƀ0HFtEa9L$lIىEHl$XL|$pH$A~|$lMH\$PGD&E1L HL9L HDE1HHHI D`0ILHA9MH\$PAA D&Dd$hHLL$xALHHIu AsA~VAfHƀ~0HFtDd$hA$DŽ$1+$0AI HT$xHHHHcBHL3HI|$lA9IHl$XL|$pH$El$Dd$hLL$xD.HA AXf.Of.VDL$hz uAIHl$XL|$pH$LL$x"D$EuD$E 5AYf(L$(L\$(Y5X5D$(LT$(LAH H I ‹$Dd$hA AA~ZLDD$0LL$8HHIDD$0LL$8A9tJE`1A A~A{VDL$hAFE19LL$xH9E1A9IEHl$XL|$pH$tEE`1A HL$xE1 } $HD$x $0H$$hA~DEu AA $$A~AiA~EAAUE1A~$$tHXEDfT$hufwRHXHT$LDL$(HL$ D$LHD$0AHT$8LD$h1҉tT$LtY*HXÐWVSH0HH\$ Hɉ֋8HEAHAKHH0[^_ÐAVAUATUWVSH01IHLI>AHXHD(tBHtiHufNHcHH΀{tDHH9v6EEHHHH0[^_]A\A]A^I>IHHu$HcЃHHր| t"HH9vHL$ EEbH댐VSHXHHH.M2AAD$@$v|$@LD$8LL$0ҋ$nLD$8LL$0tLID$(Ht$ AIغ$FHX[^fD$uEfHX[^f1HX[^fT$AD$(AHL$ LD$@fD$(Ht$ AIغ$~t1HX[^@*{Ak@UWVSHXHH\$NHLHfD$N(HELD$8LD$8L dHl$(D$ HLEH%HHX[^_]f.AVAUATUWVSH@H-dMIHIELAHo~MD tsIHtkHtj1HuIIHcHHHH9Iv!IHDd$(I)Dl$ IDžu H9sIHH@[^_]A\A]A^f1HfD$>tD1fIHHHH9IvHL$>Dd$(Dl$ IIffff.UWVSHHH}HHLfD$>(HcHHL$>l$(D$ IHDHIHHH[^_]ÐSH 1ۃ~P9|<HH [VSH(HDHDHKEDItfD IHEEuHtLH([^ffff.HȋIHHHP@AWAVAUATUWVSH81rIHA;t$UHZMl$LcIFDCDJl1AAAƉD$,IM1E1EILJ<EHH I)M)MEII AL9sG\Eu6KDI9s'GTEtDEu HI9rAt$HLLxAL1Dt$,f.DHL)H)H‰HH H9sHcHEDEu2IDI9s#ALtfDu HI9rAt$D$,H8[^_]A\A]A^A_ÐVSH(a΅u؉5aH([^f[HD,HyHt&Љ`H([^f@H(u`H(H+HWyHtкY`GH(ËH`1됐VSH(i΃t@uiiuQH iHyH iH miHcHiHH HxH([^Ht4@iuHy@Ӌ#ittH([^ifD=htDHcHiHH HsxH@SH ht H [@HwH hH hHH [Hfffff.WVSH 1 H_HcHHt\H H 3GHH 'H HZ HHts{ 1CCHH [^_ÉHnGHHH 'H^H)HHЃHHH= wHH.fff.SH HHtCy -1HcSH^H HH 1H [d@H [ fDH [f.UWVSH(qE1LYHIcHcDGLILGIH D9Ht;w }Hcƃ\wHH([^_]ËOSHHt3HHHcGHWL HHHcƃ\w1@SH ˹Ht X@H [f.AWAVAUATUWVSH(iDzHID9}HDIA1Bt=;s KHLcHPIJ|IH9sf.AIL9wHcMcMT$LkH\KlIM)I9sKEK"IEt6LE1fDDD:HMMMMDHI H9wD L9w~BLHt HuupH([^_]A\A]A^A_ff.UWVSH(HωӃtQH5zeHutm%nm%m%l%.m%m%l%m%~m%l%l%m%~m%m%m%m%m%l%l%6m%Fm%m%m%l%k%k%Fk%Fk%k%k%k%k%Nk%k%k%j%j%k%.k%6k%6k%6k%Vk%j%6k%~j%.k%j%^j%j%.k%j%jH(gH K1H(Ð0@Xx@@@@ÿ? @u@2-+] f_set_invalid_parameter_handlerhello, world.pdataArgument domain error (DOMAIN)Argument singularity (SIGN)Overflow range error (OVERFLOW)Partial loss of significance (PLOSS)Total loss of significance (TLOSS)The result is too small to be represented (UNDERFLOW)Unknown error_matherr(): %s in %s(%g, %g) (retval=%g) G̊܊ Mingw-w64 runtime failure: Address %p has no image-section VirtualQuery failed for %d bytes at address %p VirtualProtect failed with code 0x%x Unknown pseudo relocation protocol version %d. Unknown pseudo relocation bit size %d. msvcrt.dll(null)NaNInf(null)PRINTF_EXPONENT_DIGITSصh(ȴX8ȳ:h(XرXx=hذhhInfinityNaN0gи?aCoc?`(?yPD?}-<2ZGUD??$@@@@?_set_output_format_get_output_format?$@Y@@@@j@.AcAחAeA _BvH7BmB@0BļB4&k C7yAC؅W4vCNgmC=`XC@xDPKDMDؗҜ<3#I9=D2[%Cod( 7yACnF?O8M20HwZNj~.LThv *:L`jx$0:DPZdl$>Nj~.LThv *:L`jx$0:DPZdDeleteCriticalSectionEnterCriticalSectionGetCurrentProcessGetCurrentProcessIdGetCurrentThreadIdGetLastError#GetModuleHandleAUGetProcAddressrGetStartupInfoAGetSystemTimeAsFileTimeGetTickCountInitializeCriticalSectionIsDBCSLeadByteExILeaveCriticalSectionOLoadLibraryWwMultiByteToWideCharQueryPerformanceCounterRtlAddFunctionTableRtlCaptureContextRtlLookupFunctionEntry RtlVirtualUnwindSetUnhandledExceptionFilterSleepTerminateProcessTlsGetValueUnhandledExceptionFilterVirtualProtectVirtualQuery WideCharToMultiByte7__C_specific_handlerN__dllonexitQ__getmainargsR__initenvS__iob_funcZ__lconv_init[__mb_cur_max`__set_app_typeb__setusermatherrr_acmdlny_amsg_exit_cexit_errno_fmode)_initterm_lock6_onexit_unlockabortatoicallocexitfputcfreegetenvlocaleconv mallocmemcpy puts0setlocale2signal=strchrCstrerrorFstrlenIstrncmpwcslenKERNEL32.dllmsvcrt.dll@`@@0@@AADA\@@@go/src/pkg/debug/pe/testdata/gcc-amd64-mingw-obj0100644000000000000000000000134012412656737021627 0ustar00rootroot00000000000000d.text0\ P`.data@P.bssP.rdata4@P@.xdata D@0@.pdata Pz@0@UHH H H ]Ðhello, world%2P$   .fileghello.cmain .text$.data.bss.rdata .xdata .pdata __main puts go/src/pkg/debug/pe/testdata/hello.c0100644000000000000000000000011512412656737017616 0ustar00rootroot00000000000000#include int main(void) { printf("hello, world\n"); return 0; } go/src/pkg/debug/plan9obj0040755000000000000000000000000012412656737015577 5ustar00rootroot00000000000000go/src/pkg/debug/plan9obj/file.go0100644000000000000000000001511712412656737017126 0ustar00rootroot00000000000000// 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. // Package plan9obj implements access to Plan 9 a.out object files. package plan9obj import ( "encoding/binary" "errors" "fmt" "io" "os" ) // A FileHeader represents a Plan 9 a.out file header. type FileHeader struct { Magic uint32 Bss uint32 Entry uint64 PtrSize int } // A File represents an open Plan 9 a.out file. type File struct { FileHeader Sections []*Section closer io.Closer } // A SectionHeader represents a single Plan 9 a.out section header. // This structure doesn't exist on-disk, but eases navigation // through the object file. type SectionHeader struct { Name string Size uint32 Offset uint32 } // A Section represents a single section in a Plan 9 a.out file. type Section struct { SectionHeader // Embed ReaderAt for ReadAt method. // Do not embed SectionReader directly // to avoid having Read and Seek. // If a client wants Read and Seek it must use // Open() to avoid fighting over the seek offset // with other clients. io.ReaderAt sr *io.SectionReader } // Data reads and returns the contents of the Plan 9 a.out section. func (s *Section) Data() ([]byte, error) { dat := make([]byte, s.sr.Size()) n, err := s.sr.ReadAt(dat, 0) if n == len(dat) { err = nil } return dat[0:n], err } // Open returns a new ReadSeeker reading the Plan 9 a.out section. func (s *Section) Open() io.ReadSeeker { return io.NewSectionReader(s.sr, 0, 1<<63-1) } // A Symbol represents an entry in a Plan 9 a.out symbol table section. type Sym struct { Value uint64 Type rune Name string } /* * Plan 9 a.out reader */ // formatError is returned by some operations if the data does // not have the correct format for an object file. type formatError struct { off int msg string val interface{} } func (e *formatError) Error() string { msg := e.msg if e.val != nil { msg += fmt.Sprintf(" '%v'", e.val) } msg += fmt.Sprintf(" in record at byte %#x", e.off) return msg } // Open opens the named file using os.Open and prepares it for use as a Plan 9 a.out binary. func Open(name string) (*File, error) { f, err := os.Open(name) if err != nil { return nil, err } ff, err := NewFile(f) if err != nil { f.Close() return nil, err } ff.closer = f return ff, nil } // Close closes the File. // If the File was created using NewFile directly instead of Open, // Close has no effect. func (f *File) Close() error { var err error if f.closer != nil { err = f.closer.Close() f.closer = nil } return err } func parseMagic(magic []byte) (uint32, error) { m := binary.BigEndian.Uint32(magic) switch m { case Magic386, MagicAMD64, MagicARM: return m, nil } return 0, &formatError{0, "bad magic number", magic} } // NewFile creates a new File for accessing a Plan 9 binary in an underlying reader. // The Plan 9 binary is expected to start at position 0 in the ReaderAt. func NewFile(r io.ReaderAt) (*File, error) { sr := io.NewSectionReader(r, 0, 1<<63-1) // Read and decode Plan 9 magic var magic [4]byte if _, err := r.ReadAt(magic[:], 0); err != nil { return nil, err } _, err := parseMagic(magic[:]) if err != nil { return nil, err } ph := new(prog) if err := binary.Read(sr, binary.BigEndian, ph); err != nil { return nil, err } f := &File{FileHeader: FileHeader{ Magic: ph.Magic, Bss: ph.Bss, Entry: uint64(ph.Entry), PtrSize: 4, }} hdrSize := 4 * 8 if ph.Magic&Magic64 != 0 { if err := binary.Read(sr, binary.BigEndian, &f.Entry); err != nil { return nil, err } f.PtrSize = 8 hdrSize += 8 } var sects = []struct { name string size uint32 }{ {"text", ph.Text}, {"data", ph.Data}, {"syms", ph.Syms}, {"spsz", ph.Spsz}, {"pcsz", ph.Pcsz}, } f.Sections = make([]*Section, 5) off := uint32(hdrSize) for i, sect := range sects { s := new(Section) s.SectionHeader = SectionHeader{ Name: sect.name, Size: sect.size, Offset: off, } off += sect.size s.sr = io.NewSectionReader(r, int64(s.Offset), int64(s.Size)) s.ReaderAt = s.sr f.Sections[i] = s } return f, nil } func walksymtab(data []byte, ptrsz int, fn func(sym) error) error { var order binary.ByteOrder = binary.BigEndian var s sym p := data for len(p) >= 4 { // Symbol type, value. if len(p) < ptrsz { return &formatError{len(data), "unexpected EOF", nil} } // fixed-width value if ptrsz == 8 { s.value = order.Uint64(p[0:8]) p = p[8:] } else { s.value = uint64(order.Uint32(p[0:4])) p = p[4:] } var typ byte typ = p[0] & 0x7F s.typ = typ p = p[1:] // Name. var i int var nnul int for i = 0; i < len(p); i++ { if p[i] == 0 { nnul = 1 break } } switch typ { case 'z', 'Z': p = p[i+nnul:] for i = 0; i+2 <= len(p); i += 2 { if p[i] == 0 && p[i+1] == 0 { nnul = 2 break } } } if len(p) < i+nnul { return &formatError{len(data), "unexpected EOF", nil} } s.name = p[0:i] i += nnul p = p[i:] fn(s) } return nil } // NewTable decodes the Go symbol table in data, // returning an in-memory representation. func newTable(symtab []byte, ptrsz int) ([]Sym, error) { var n int err := walksymtab(symtab, ptrsz, func(s sym) error { n++ return nil }) if err != nil { return nil, err } fname := make(map[uint16]string) syms := make([]Sym, 0, n) err = walksymtab(symtab, ptrsz, func(s sym) error { n := len(syms) syms = syms[0 : n+1] ts := &syms[n] ts.Type = rune(s.typ) ts.Value = s.value switch s.typ { default: ts.Name = string(s.name[:]) case 'z', 'Z': for i := 0; i < len(s.name); i += 2 { eltIdx := binary.BigEndian.Uint16(s.name[i : i+2]) elt, ok := fname[eltIdx] if !ok { return &formatError{-1, "bad filename code", eltIdx} } if n := len(ts.Name); n > 0 && ts.Name[n-1] != '/' { ts.Name += "/" } ts.Name += elt } } switch s.typ { case 'f': fname[uint16(s.value)] = ts.Name } return nil }) if err != nil { return nil, err } return syms, nil } // Symbols returns the symbol table for f. func (f *File) Symbols() ([]Sym, error) { symtabSection := f.Section("syms") if symtabSection == nil { return nil, errors.New("no symbol section") } symtab, err := symtabSection.Data() if err != nil { return nil, errors.New("cannot load symbol section") } return newTable(symtab, f.PtrSize) } // Section returns a section with the given name, or nil if no such // section exists. func (f *File) Section(name string) *Section { for _, s := range f.Sections { if s.Name == name { return s } } return nil } go/src/pkg/debug/plan9obj/file_test.go0100644000000000000000000000331612412656737020163 0ustar00rootroot00000000000000// 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. package plan9obj import ( "reflect" "testing" ) type fileTest struct { file string hdr FileHeader sections []*SectionHeader } var fileTests = []fileTest{ { "testdata/386-plan9-exec", FileHeader{Magic386, 0x324, 0x14, 4}, []*SectionHeader{ {"text", 0x4c5f, 0x20}, {"data", 0x94c, 0x4c7f}, {"syms", 0x2c2b, 0x55cb}, {"spsz", 0x0, 0x81f6}, {"pcsz", 0xf7a, 0x81f6}, }, }, { "testdata/amd64-plan9-exec", FileHeader{MagicAMD64, 0x618, 0x13, 8}, []*SectionHeader{ {"text", 0x4213, 0x28}, {"data", 0xa80, 0x423b}, {"syms", 0x2c8c, 0x4cbb}, {"spsz", 0x0, 0x7947}, {"pcsz", 0xca0, 0x7947}, }, }, } func TestOpen(t *testing.T) { for i := range fileTests { tt := &fileTests[i] f, err := Open(tt.file) if err != nil { t.Error(err) continue } if !reflect.DeepEqual(f.FileHeader, tt.hdr) { t.Errorf("open %s:\n\thave %#v\n\twant %#v\n", tt.file, f.FileHeader, tt.hdr) continue } for i, sh := range f.Sections { if i >= len(tt.sections) { break } have := &sh.SectionHeader want := tt.sections[i] if !reflect.DeepEqual(have, want) { t.Errorf("open %s, section %d:\n\thave %#v\n\twant %#v\n", tt.file, i, have, want) } } tn := len(tt.sections) fn := len(f.Sections) if tn != fn { t.Errorf("open %s: len(Sections) = %d, want %d", tt.file, fn, tn) } } } func TestOpenFailure(t *testing.T) { filename := "file.go" // not a Plan 9 a.out file _, err := Open(filename) // don't crash if err == nil { t.Errorf("open %s: succeeded unexpectedly", filename) } } go/src/pkg/debug/plan9obj/plan9obj.go0100644000000000000000000000154012412656737017720 0ustar00rootroot00000000000000// 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. /* * Plan 9 a.out constants and data structures */ package plan9obj // Plan 9 Program header. type prog struct { Magic uint32 /* magic number */ Text uint32 /* size of text segment */ Data uint32 /* size of initialized data */ Bss uint32 /* size of uninitialized data */ Syms uint32 /* size of symbol table */ Entry uint32 /* entry point */ Spsz uint32 /* size of pc/sp offset table */ Pcsz uint32 /* size of pc/line number table */ } // Plan 9 symbol table entries. type sym struct { value uint64 typ byte name []byte } const ( Magic64 = 0x8000 // 64-bit expanded header Magic386 = (4*11+0)*11 + 7 MagicAMD64 = (4*26+0)*26 + 7 + Magic64 MagicARM = (4*20+0)*20 + 7 ) go/src/pkg/debug/plan9obj/testdata0040755000000000000000000000000012412656737017410 5ustar00rootroot00000000000000go/src/pkg/debug/plan9obj/testdata/386-plan9-exec0100755000000000000000000011056012412656737021700 0ustar00rootroot00000000000000L_ L$,+zLX$QÃHPD$P PD$H$D$LD$DX$`\$1Ƀ!}EL$F9|؃ ýxD$D$L$ $L$L$à |$1D$L$t(wFD$L$u û}ɍ [)AH9vtC멃l$1Ë\$ s ú}2)ѸH59sH9| 1B|΃| 1t$l$ ~[}Su0 TYXYúXY9s9u&X[u Ér9uTY*1Ã˸à L$ $L$L$pD$D$ Ã\$ TYXY¹XY9s9uAtAÃ9reT$\Xt59u%$L$ AD$ID$ @Ãu/0Ã(|$4l$,\$0E$D$E(D$E,D$ E,E(1ɉM$\$0U 30p`* .tT$D$L$, $D$Ћ|$4l$,\$0}1ҋL$M$L$M(L$ M,Ѓ(Ãf؃M,^L$$ $\$0\$ |$4l$,\$0É\$0T$$U 3=7ot4t5t 6O10r9v.t&E,t M,u(M,u$KڍЃЉƃtC먃8t9떃EEp}E,te,E(qؖM,s1E,IM,@E172})t$l$ \$|<}7.9r!9 10J9sE11Ãl$ \$T$*9r)؃0|19I9sE9ÃpT$tB,tJ(L$~D$D$|$4tD$x$$PD$ pD$|$L$ptD$x$(PD$ pD$|$L$=tD$x$-PD$p pD$\$|vd$|\$|D$D$ D$t@ D$L$ DVtD$ L$ $ D$D$@D$|\$L\$LD$|$D$@D$؋L$@L$D$ $,$UL$$$Duȉу$UL$$Duh$W$@$,$|UL$J$D$At ȉ"<Ãt AMM:E t .tA+t-u$$u븃먃$ڃ$$8$,ttkaEt ect U;kt[t]tXtStG$8u0t,$8D$$8$8Ȉ$,벺뫃t tu؃Љl$ 1һ~ Љ‰$KUÃl$ 1ۃ}DC|1҃}DDB|D$$D$0d$L$ u20~ Ã|$u} |uA|19~ 9} D$g t$\$1҉ىumF?uNtƉt5t(‰Ɖ)‰E0D$uE É벍Љ‹D$눉ىlj)‰E0F?uD$눍Љǃ l$\$T$ l$~3$T$ D$l$\$T$ l$̓~$T$l$ ÃD$$ | T$ R TW‹D$L$ $JL$JL$ \$T$~KD$$)D$(D$$D$ D$T$$Ã|$t$1O;|$ s2t)ݸgfff‰Ӎ)N0u׃ЋL$؉Ÿgfff‰Ӎ)N0듃 D$,ڃ | T$ R W‹D$L$$ $JL$JL$|$$t$(l$}MËD$0L$)D$,(.<$D$\$D$D$ à D$D$D$t9T$D$ DVt $D‹D$9t 1 ÃL$}Vىȁ} 4LPÉȁ‰)ЉT$ $\$D$ $L$=DWÁ} LPÉȁ‰)ЉT$ $l\$D$ $\L$ÃD$$$ÃD$\$ D$%=t1D$$D$:u 1D$$|$ }L$$ÃL$D$ $<$t1Á|$u| 1|$u 11ÃD$(D$ $ uD$ $D$vtD$ \$ tD$ \$D$ $T$(\$ D$u)F$_FnFF"F|FMraB3G yhGiWCG*GJH\)c=H7]rHaxHyֲHL}YI\CkFI3T|I\'Isȡ1I:~^Jd~QJvaJ0}GJ>nllJ$KAjZK=P1PKMZ>dKW`M}Kmn/LDcL^LpuLafirM?O8MrbnMG9Mz)M:Ft NdȋBN=ֺ.wN 9iNCNuOILLO֯OO[пOE!P/'%UP_QP6PbDP{U[*QmUx`Q*4VQz5߼QlX R.4R9mr"iRY) kRعeR$N(Sa򮌮>S }W-sSO\]ScbuSp] T%L9hGT.B}T}Ô%IT\nTsqUFQU`RUxӫU?+dpU5=%VN=@[Vҟ&VG0JV=:YVf$0W&sdWW)>W]3sMXk5!a9XBioX)8ӣX*4X5AHxY(-\CYr%4xYv/AYiY?ZOMZ20HwZ~$|7Z-[bZXC}"[;/V[ ;C-[SJ[= \[M"4+\0IΕ2a\|AH\[R\ysKp]WPM4]mH=j]Į]-f]u8W]am ^|M$D@^`-Ut^x^WUH^P.5_[ypH_r]~_':__ k_EW`RVR`'.N`(:W"`Yv5`0123456789abcdef0123456789ABCDEFnaninfinityinf7635118191655355242878388607671088631342177271251562519531251220703125152587890625190734863281251192092895507812514901161193847656257450580596923828125R{PD? ((((( H ?$@UUU U UUUUU UUUU U U UUUV$Vmainhello, world #%+,-CE7G7SaXbcade7f7g7hln#opr8suxA0CAL_etext/@fabs.cnan.c3errfmt.cXD_exitsXL.string\`onexlocklocal\hfmtlIvsnprint.c9sysatexit.c)write.cDerrstr.s!vfprint.c;toupper.cX\knownfmt7abort.cY4$0.41b00000Y<$0.43300000libc9strcpy.sportterm+strlen.sP_privatesYD$0.41f00000  CD(.main.frame _mainL.frameinargvinargc CD(bTatexit .framefiatexitdont .framefexits.framesipid CD(4aprint.frameargsfmt_exits.frame CD(7getpid(.framefb $memset.framencp CD(G3lock .framellunlock .framelcanlock .framel  CD([atol.framesatoi.frames! CD()"~2_fmtFdFlush.framenfvfprintH.frame4nfmtargs0buffd0f# CD()"~fmtfdflush.framef8fmtfdinit.framefd sizefbuf$ CD()"~mdofmt0.framenstruner rsrt nfmtffmt_fmtflush.framelenft(_fmtpad.framen if_rfmtpad.framen if _fmtcpy@.frame,_runest r$ncrsrtn fl(wfme szmvm _fmtrcpy<.frame(_runerts men fl$wmvmfa_charfmt.framexf_runefmt.framexffmtstrcpy(.frame.safei rjsf_strfmt.frameffmtrunestrcpy .framesfa_runesfmt.framef_percentfmt.framexf_ifmt.framei.safen`pVbuf|basedconvpulvuflxnegf#_countfmt .framef_flagfmt.framef0_badfmt.frame xf%tsemrelease.frame&|semacquire.frame'open.frame(close.frame) CD(.write.framenbuffd* CD(.read.framenbuffd +strlen.framep ,Lainc.frameaddr$adec.frameaddr6cas32.frame6cas.frame6casp.frame6casl.framenvovpQcas64.frame nvovp -q_d2v$.framey .safexdi_f2v.framefy_v2d.frame.safex_v2f .framex3slowdodiv$.framerqquohi iquolodennum9dodiv8.framern xqnumdenrpqp_divvu.frame dnq^_modvu.frame dnrvneg.framev_divv$.framednegnneg dnq_modv$.framenneg dnr f_rshav.framear b _rshlv.framear b!F_lshv.framear b!_andv.frame bar!_orv.frame bar!_xorv.frame bar"_vpp.framerl"#_vmm.framerl"B_ppv.framerl"a_mmv.framerl"_vasop(.frameret typervtufnlv%_p2v.framepret%_sl2v.frameslret%_ul2v.frameulret%_si2v.framesiret%_ui2v.frameuiret&_sh2v.frameshret&_uh2v.frameulret&;_sc2v.frameucret&X_uc2v.frameulret&v_v2sc.framerv&_v2uc.framerv&_v2sh.framerv&_v2uh.framerv&_v2sl.framerv&_v2ul.framerv&_v2si.framerv&_v2ui.framerv&_testv.framerv&_eqv.framervlv'_nev.framervlv'_ltv.framervlv'F_lev.framervlv'n_gtv.framervlv'_gev.framervlv'_lov.framervlv'_lsv.framervlv(_hiv.framervlv(6_hsv.framervlv. CD(<(^utflen.frame runens/ CD((chartorune.framecstrrune)runetochar.framerunestr*runelen.framestrrunec*runenlen.framenruner+fullrune .framestrn0 CD()"~U+{_fmtinstall .framecf+fmtinstall.frameretfc,fmtfmt.framepc,_fmtdispatch,.frame$.saferuneflpwfmtfisrunes1 CD()2FG".xadd .framevan/xsub .framenva/Rxdtoat.frameDc2Lc4Hc3@c18is1,h4dd.safe$g0eXchrPucaseTsigns2f\precfmt7W_floatfmtt.frame`.safefUsfmt7_efgfmt.framedf3 CD()"~8errfmt.framef.safebuf48lpwrite.frame58tpread.frame6 CD(38|rerrstr.framenbufbuftmp7 CD(.8abort.frame 8?8_mulv.frame bar9_mul64by32.frame bar92_div64by32.frameba r9E_addv.frame bar9__subv.frame bar 9$9ystrcpy.framep1p2: CD(;9utfecpy.framefromtoe;21: toupper.framec:#tolower.framec< CD()2FK::strtod@.frame0.safeLd CD(\FNaN .frameaFisNaN.frameadGInf .framesignaG,isInf .frameadsign? CD(Gfrexp .frameaxdepH6ldexp .frame.safexddeltaeImodf.framexdip@ CD(1Jyfabs.frameargB CD(4Jsprint.frameargsbuffmtC CD(6J_fmtlock.frameJ_fmtunlock.frameDJerrstr.frame E Jumuldiv.framecbaJmuldiv.framecba FHK memmove.framenp2p1 G0Kfmemcmp.framep2p1n H6Kmemccpy.framep1cp2 nI CD(<Kvsnprint<.framefmt args0fbuflen*ׂB%EABACCoф%[CATAPKI TADA%+BAVW lGC XCABBF ACACH UEDKH EHDKV+AODD BEBENAAH FEBHJCAHCKCAYHHZU RBMEpVUQPL K GEB_ IGEB\VSPYBK EJzBBB%B؁N jD^ROIC ACLaM*W IEDDLLBAv3}:o,BQh%L BXaDBG TC M XGFAF C GAGBTMEDD7 I~M7g i+l%NDG&gx;U]A{Q>gG KG BB C$ VDDD QHGQHC|Ln J rDIz ~B%F؃{BAAOE"niABECAZArBVAVAXw}|rCdFc#_n0q+ }9yGDZV NBBRCAAAVEYDLDFC ELH"gfA I VV$CCEFτBIX KgYgo/src/pkg/debug/plan9obj/testdata/amd64-plan9-exec0100755000000000000000000010274712412656737022303 0ustar00rootroot00000000000000B , HP HHH% HD$H%h %0 $H$HD$@ HHl$P -1Ƀ!}\L$ HcHH< u?hT$ HcH  HD$HcHH  P H!|P 1HHHl$Hl$1҃!}-HcHH  H9uHcH  9t ƒ!|HHcHH HHl$ D$ |0HcHH  HtHcH  9D$tʃ}Hl$ NHÉT$HcHH ӋT$H(HHD$8HT$HD$HD$0H(Hl$HH0Hl$D$D$M D$|'ʼnD$HD$HD$D$Fl$Hl$H0HD$\$ vHuĉ HHHHHl$/uHHl$HL$o|HHHl$uHHl$HD$'HHHl$u HHl$u1HHl$HD$1HHH11 . "-+0uC<u90|9~tډHHcHHH ȃЉCxt0CXt'0|7HHHcHЃЉH0|9~;a|f~#AxFoȃɉHĉȃȃЉHH-u t  HHHHH HHEHMH)Hct-Hj(HcHT$(HJHL$D$D$vHT$(;D$uHJHJH 1H HxH$(L$HD$(HD$D$H$H$`H$(H$HL$D$$~H$(1L$$t HxøHxHHl$ HHD$@0HH|$EH}H}T$ HcH HMHM L$HcHM(E01HPLD$`HE0D$<:HVHT$@Ht$XHnHl$8AÃt%u`IHFHH)HcF0HVu F0+D$HPHnHLD$D$wHt$XIHxHPÁ\$4}gILD$`HHH9v6HHT$L$\$4LD$`Ht$XHHtHnHl$8HHHT$@'HPHl$LLD$`LD$SHl$8LD$`HT$@Ht$XHcILD$`\$L\$4aH^H\$(Ht$XLNLL$ LD$`AŃt%u1IHNHH)HcN0H^u F0+D$HPLNl$4}aHHL9v6HH\$L$l$4LD$`Ht$XHHtLNLL$ HHH\$(@(IWHPHl$LLD$NLL$ LD$`Ht$XH\$(HcH L9v:HH\$|$|$TLD$`|$Ht$XHHHD$(t.LNLL$ σHHH\$(LI ۸HPHHt$HE<tiHCHH)HcC0HsHC HtHH\$HC H\$uHKHKH1HËD$ HcHKHHKH9wHCHHMHH)HcM0H0HH]HM1҉T$;T$@}QHHH9v1HHt$8H\$L$0T$Ht$8HHt4HNHH ‰T$;T$@|HNHH)HcN0H^1H0øH0H0HHUHM1l$;l$@}VHHH9v1HH\$8HT$L$l$H\$8HHt;HKHH ʼnl$;l$@|HCHH)HcC0HS1H0øH0HhHl$pHt$x$HcHt$8HHD$0HD$p@DD$$HD$p@LD$,D$,tHD$p@H9$HD$p<D$,u'Hl$pL$$+$L$Ht$8HD$pHPHT$`HD$pH@HD$X$D$(|$(D$T|$THHt$8HHH;D$Xv8Hl$pHT$L$0Ht$8HHHD$pH@HD$XHHHT$`L$TL$(|$(HD$pH@HH)HcHL$pA0HD$pHPD$,tHl$pL$$+$L$|1HhøHhøHhHD$0H)Hc}*HHL$0H)HcɉL$Ht$8HT$`[Hl$THt$Ht$8HT$`HcHHt$8HhËD$,u'Hl$pL$$+$L$Ht$8HD$pHXH\$HHD$pH@HD$@$D$(|$(~wD$T|$T8HHt$8HHH;D$@v&l$TYHt$8H\$HHcHH;D$@|$Ts{HHH\$HL$TL$(|$(HD$pHL$pHIHH)HcH0HD$pHXD$,mHl$pL$$+$L$KHhËD$TD$ HH\$HHL$ HL$Ht$8H\$HHcHH\$H]Hl$pH\$T$Ht$8HHtHD$pH@HD$@HhHD$0H)Hc}*HHL$0H)HcɉL$Ht$8H\$HHl$THt$ Ht$8H\$HHcHHt$8mHhHD$p@H$H`HHD$pHD$PEDD$ ELD$$D$$t FH9D$x<D$$u'HHt$hL$ +L$xL$Ht$hH^HnL$xHcHT$PHHD$HHD$PH;D$Hs[HHH9v-HHt$hH\$L$&Ht$hHHtsHnHHHL$P HD$PHD$PH;D$HrHFHH)HcF0H^D$$tHL$ +L$xL$|1H`øH`øH`øH`ËD$$u'HHt$hL$ +L$xL$Ht$hRH^Ht$hHFHD$(L$xHcHT$PHHD$HHD$PH;D$HsiHD$P8HH\$0HH;D$(v,|$\ |$\Ht$hH\$0HcHH;D$(sfHH@8HD$PHD$PH;D$HrHNHH)HcN0H^D$$HL$ +L$xL$H`É|$HH\$0HL$HL$A Ht$hH\$0HcHsHH\$T$6|$\Ht$hHHtHFHD$(1H`øH`ËFHD$xBH(HE8HE8@D$'EHHL$'HL$L$L$sH(H HE8HE8@D$HL$HL$L$H H8Ht$HHHu)Hչ  HL$L$L$H8Hl$@ELtd11BH9lj|$0} HcÀ<uHHt$|$\$H8Hl$,\$4HcH HL$|$0HT$@Ht$H\$4H7D$$Hl$HD$ Hl$@HL$HHL$L$$L$L$ L$PH8HHE8HE8H@HD$HH0H\$@HHu)H& HL$L$L$H0ËELt,nH19} Hcƒ<uHH\$T$H0Hًt HuHH)HcHHE8HE8H@HD$NHH E@D$EHHL$HL$L$H HIE1DML1M11A@@p;I@8I@8LXA@@xAɀA, A@@dXbt HAD%ut Ivu [H$H1It`IcHL$L1Ht$Hc‰IcL1HID%tЃ)ЃHHHcA IuuHH0AHH9}HD$rH9;A*Dȃ0Dȃt ADȃ@tDȃDȃtAu HHAH@AtlAtfAt4HH-A`LLHHHL$|$|$PHDȃ t HH+DȃtHH HH0AHD9} HD$rH9w A@DGHH0AF0u AHH0HH,ds1Aы1AD%tЃ)ЃtHHHcA HH,AIAAA= OA Dotx#A+A D%t6D%tI@8I@8LXI@8I@8LXD%t/D%tI@8I@8hxI@8I@8hgD%t7D%tI@8I@8h@8I@8I@8h@#D%t5D%tI@8I@8hI@8I@8hD%tI@8I@8hI@8I@8hH]LHE8HE8HH%tHȋM0HcH1HÉ%t HȋM0%t HȋM0͉%t HȋM0fHȋM0HE@-=t5 t*#t+t,tÁILIL ILIL߃ILكht0ltuuʁILAL%tILIL뤋EL%tILILH(D$%E@D$ D$$%EHHD$HD$D$1H(Hl$H&Hl$H%Hl$HHl$HH HL$0HL$L$8L$HHL$H H HL$0HL$L$8L$HHL$H 1HHHH)HËE]uËE]uËD$\$]uHD$H\$H]uH HD$=}u D$H HD$=|Hl$HT$(HT$ HT$(HcHHHt$(HD$|$}L$HËl$}*HcHcˉDHcÁtHcˋD%tHÉHc DŹ)ٸ59D$}}HcH S)ك!Ńu4|$|vus /HÁwuHcH S)9WvJHHHD$ (w @/Hû}Lu!vr HcH S)9vtÃ|HHcH SɃ)ٺɁ 9}()HcH QɃ? HcΈ9|؉HýbH l$Hl$HL$HL$H HDD$ H1DAȃtHH(wDAȃuHû}HcH S)9v tHt$1HE=s Hú}6)Ѹ59s9| H1ƒ|ʃ| H1HHt$ ~n}fHu % HcHH Hź H9s9u,H u HHrH9u % 1HHøHHl$ l$ HL$(HL$XD$ D$HH l$( % HcHH H¹ H9s"9uHAHtHAH HH9rZ T$(p t99u()HL$HAHD$= HD$H@H Hu H H8|$PH\$HHEDD$$EHD$ ELD$ELHl$@EH1ɉMDHH\$HV@30{*8.tYHD$Hl$@HD$Ћ|$PHt$@H\$H} H1ҋL$$NDL$ NHL$NLHH8Ã`HՃNLWHl$4H\$HH\$||$PHt$@HcHD$HHHD$HT$4V@317{t4t5t 6C10r9v1t'HFLt NLnHNLnDH؉HcHЃЉŃtHH뜃8t9HF8HF8h}FLtfLFHR݃NLeH1FL9NL@'1'2aHT$ \$(H|I}DHcHH HH9r%9 1H0HH9s1H1HH\$(HL$ HcHH HH9r#)؃0| 1H9HH9s9HHxH$ELtMHL$~D$$$xtH$` HD$ Hx$$L$tH$d HD$ Hx$$L$t$tH$i HD$^ HxD$ fWf.sfW\$D$ D$$H$@@D$L$H P tD$$l$ $D$D$DfWf.4$HD$DHD$L$D*Y% ,ЉщT$D|$Dj||$DD$D=ʼnD$@Y$D$Hl$@+l$DYD$H%( f.s*L$Dl$@+l$DYD$H%( f.r%8 f.r*D$Dl$@+l$DwYD$H%8 f.s1ۃ}0,ՉЃ0HcˈD ]*\Y%8 Ã|HcD]L$|$fuD$DH$HD$]HD$SD$DD$@D$l0D$m0Hl$nn HD$D$DD$Hl$]HD$$f.1ɉL$@D$<|$ L$@HcH$-D$4T$D$,D$D$(D$fgnHl$]T$0T$L$DL$DD$<|$(L$4t$,T$0H$\$@tD$D}1Ƀ}1҃~ փ~+9u HcH.HcH0ɃՃ~<9u HcH.DAHcHL$]HHcHʃă~%9u HcH.HcH0΃H$@Lu HcH.AetAgtHcHHxÃ|$$HcHEt$DHcH-ރd|.Q‰Ѓ0HcHdָgfff‰Ѓ0HcH Ѓ0HcHHHcH+yHcHeKAgt Ah΃|HcH 0t/HcH .u9Hl$]T$0T$L$DT$DL$DD$<|$(L$4t$,T$0H$\$@tD$D|$DD$DD9u+L$DD+|$DAhZHl$]щT$0L$DL$L$DL$DD$<|$(t$,T$0H$\$@tD$DL$D;L$~ыD$DH$@L tL$@HcH$+IH$@L2L$@HcH$ Hl$]L$L$t#D$DHl$nr HD$D$DD$PHl$]HD$m$f.~Hl$]H$HD$cD$@D$DHl$nv HD$D$DD$Hl$]HD$ $f.s'Hl$]L$L$ tL$Df.Hl$]L$L$<iD$D`D$@$D$HQHH$HD$+HD$$D$2H$`LHl$+D$$Hl$+D$ H$HD$+HD$D$$D$D$ D$v1HĀHHE8HE8@D$]HHH$Hl$(D$iHl$(D$$Hl$(ND$ H$HL$(HL$L$$L$L$ L$HĨHl$H3Hl$H2HH$D$Hl$D$KH$$HH HD$HD$HD$[Hl$D$HĘ1HH|$HH+\$HHt$HH u HHHH(H\$8H9rHH(HL$@HL$D$HH)Hl$0L$HT$0HHu'HL$8H9vH%=tHH(Ha| zȃÉÉA| Zȃ ÉHXH$hHE1D$8DŽ$TDŽ$H11H$`IÃ0| 95 qJ R; 2 )HtH7Dt"$T~$THcD #0$Tu fWHXË$THcD$Du$T$HDt$H$H|$H6~/Dt HXýx HXDŽ$D$H~;Hl$$H$THD$H$HHD$H$DHD$$HŃ$HyD$$5k$THcD$$D$T$PHl$$H$THD$+$DD$$P$T9}bHcHl$$THcH)HD$$HD$$TD$Hl$$0D$$P+$TD$$P$T$THcD$DŽ$D11҃ }HcD $ŃH$L$$\$,$,$ŹL$$L$$$}#HcDŽ,HcDŽ$|11҃}OHcʋ$Hc,HcʉtHcHcʋHcѬƒ|H$_Hl$$H$HL$1҃}3Hcʋ,Hc;t1HcʋHcʉ,ƒ|̓3$ )$ |$ H$fW1҃}-Y%X HcʋH*Xƒ|Ӌ$8t fW\,$$DȉD$o HXÃ}#1҃HcʋHcʉ$ߋ$ #$ )$ HƁHHl$$H$THD$H$HHD$H$DHD$(C$T*HH$ HL$H$H$hD$8uHwHHHHeHչ HL$^L$`D$8H$huH,H$HHHLHH$ HL$H$hH$Ht HHHHHXÃt HHH t ߃.tI+t-u(AD$8u벃wAD$8AD$8$T$Htt5]SEt et -pt`tbt]tXtL$Tu0t1$T$T$THcHL$$HȈ$H뭺릃t tuHcH؃ЉHH1һ~"HcHcˋHcÁ$˃HH Ht$0Hl$(1ۃ}HcˋHcˉDÃ|1҃}HcʋDHHcʉDƒ|Hl$oD$0d$HL$( u80~ H Ã|$u}Hc|u|1H 9~ H 9} H HD$(WHLD$ \$(H1҉ىu}HH?uWtHcHƉt:t,HcH‰Ɖ)HHʼn0AuEHÉHcHЉAxىlj)HHʼn0HH?uAyHcHЉHt$0HT$(H t$0~>HH\$ HT$ D$t$0H\$ HT$(Hc t$0ƒ~HHT$t$HH(HHD$@ | T$ HcHH P H‹D$$HH\$0HJHL$JL$\$ T$$~HD$@)HD$HHl$0HD$8HD$T$H(HDL$(H|$ Ht$I1HL9s9t/ݸgfff‰HcH)HΉ0uHD؉Ÿgfff‰HcH)HΉ0H8HHD$Pڃ | T$,HcHH  H‹D$(HH\$@HJHL$JL$LD$@|$(Hl$Ht$,}΋MHcIHHD$X)8HD$P0uLHcH HD$H\$|$H8HHHD$ HD$ D$ tBHHH\$H P tRH\$‹D$ 9tH1HH}mف}Hc  %( ^HÉȁ)ʼnD$D$l$YL$%( ^HÁ}Hc  HÉ)ʼnD$UD$l$FYD$HHD$$$HHl$ l$D$%=t1H,$D$=u H1HD$$}L$$HHL$D$$<$t1HÁ|$u| H1|$u H11HH HD$0D$($ l$(u,$D$cl$(t H fWf.tl$,$HT$0D$D$u%` YD$(D$D$%d$L$?D$H H(l$0L$8fWf.u fWH(l$D$%ƃȃ݃~ )ž~t~~]~Hcl$L$ ٺЋL$ ȋT$!‰й ) D$D$%d$ D$)݃d$ D$D$H(1l$D$ D$D$%d$  D$K΁|fWf.skH(ý\H(H H\$0l$(l$D$%=u5+|$u!D$%ud$D$H H %( f.s`fWf.sAfW\ $H\$mHT$0D$ fW\fW\D$H fWH Á0Ѹ!D$D$D$\D$H Ã5у!D$l$fWf.s fW\H0HD$HL$HL$@HL$HD$ HD$uH0HH HHH HHl$H)Éd$t$Él$|$HHHt$\$t31H9 t*HHH9 HH uHHtHHHHHH u HtHHʋ\$t'HHt$HH u HuuH1vHHùH)H)ߋL$ tH|$D$t)1\$ HHt$HH u HHH+D$HHH`T$p H`D$Hl$Hl$ HcHHl$hH HHD$(HD$0HD$8D$@H$HD$HHl$HD$xHD$HD$ HD$ H+D$hHcH`#c/pidR{PD??$@mainA0C S#S%+S,S-SCE,G,SX?b?cd?e,f,g,hSlSno?p?r:,s9uSx??$@Y@@@@j@.AcAחAeA _BvH7BmB@0BļB4&k C7yAC؅W4vCNgmC=`XC@xDPKDMDJ-DyCxD(,* E52TEqىE/'E!1Eꌠ9Y>)F$_FnFF"F|FMraB3G yhGiWCG*GJH\)c=H7]rHaxHyֲHL}YI\CkFI3T|I\'Isȡ1I:~^Jd~QJvaJ0}GJ>nllJ$KAjZK=P1PKMZ>dKW`M}Kmn/LDcL^LpuLafirM?O8MrbnMG9Mz)M:Ft NdȋBN=ֺ.wN 9iNCNuOILLO֯OO[пOE!P/'%UP_QP6PbDP{U[*QmUx`Q*4VQz5߼QlX R.4R9mr"iRY) kRعeR$N(Sa򮌮>S }W-sSO\]ScbuSp] T%L9hGT.B}T}Ô%IT\nTsqUFQU`RUxӫU?+dpU5=%VN=@[Vҟ&VG0JV=:YVf$0W&sdWW)>W]3sMXk5!a9XBioX)8ӣX*4X5AHxY(-\CYr%4xYv/AYiY?ZOMZ20HwZ~$|7Z-[bZXC}"[;/V[ ;C-[SJ[= \[M"4+\0IΕ2a\|AH\[R\ysKp]WPM4]mH=j]Į]-f]u8W]am ^|M$D@^`-Ut^x^WUH^P.5_[ypH_r]~_':__ k_EW`RVR`'.N`(:W"`Yv5`0123456789abcdef0123456789ABCDEF ((((( H                  $ 8 naninfinityinf7635118191655355242878388607671088631342177271251562519531251220703125152587890625190734863281251192092895507812514901161193847656257450580596923828125hello, world NaN+Inf-Infe%de%de%dBetext/=fabs.c9strtod.c .string@fmtlock.c atol.c,atom.sgo-utflen.c:pow10.c endEmemccpy.sargv0.s testdata7utfecpy.c edatalibc.alibc.h plan9obj pknownfmt argv04pread.s  tab%semrelease.s fmtalloc(close.s5rerrstr.clock.cu.hfmtmntpkgsrcusrsysprint.cgetpid.c*read.c$dofmt.c doquote  .string'open.sDmemcmp.s _tos hello.c9syscall onex $509f7b52.3fd34413Cmemmove.s&semacquire.s.rune.cmemset.s#fmtfd.cBmuldiv.s3pwrite.s>ctype.c1ctype.h0fltfmt.c P_ctypegetpid8.framefb *hmemset.framenc JK/Nlock.framelunlock.framel canlock.framel  JK/b]atol.frameatoi.frame! JK/0"_fmtFdFlush(.framenfvfprint.frameTnfmtargsPbufPf# JK/0"fmtfdflush.frameffmtfdinit.framefdsizebuf$ JK/0"dofmtX.frame4n0s(trunerrsfrt8nfmtfmt_fmtflush.framelenft Z_fmtpad8.framefni _rfmtpad8.framefni _fmtcpyp.frameH_rune(s tr@ncrsrtnmodf(.framexdip= JK/8?fabs.framearg? JK/;?sprint8.frameargsfmt@ JK/=@_fmtlock.frame@$_fmtunlock.frameA@7errstr.framea0 B @Fumuldiv.framecb@Qmuldiv.framecb CR@\memmove.framenp2 D5@memcmp.framep2n E;A0memccpy.framecp2nF JK/CAvsnprinth.framefmtargsbufPflen1ІA-EABACCoʄ+[CATAPKI TADA%+BAVW lGC XCABBF ACACH UEDKH EHDKV+AODD BEBENAAH FHEBHJCAHCKCAVHYGU RBMEpVUQPL K GEB_ IGEB\VSPYBK EJsCCC+BсM  G TC M XGFAF C GAGBTMEDD7 I~M7g i+l%NDG&gx;U]A{Q>gG KG BB C$ VDDD QHGQHC|Ln J rDIz wC+́BAAVE"niABECAZArBVAVAXw}|rCdFc#_n0q+ }9yGDZV NBBRCAAAVEYDLDFC ELH"gfA I VV$CCEFȄCI#] Kl^ go/src/pkg/debug/plan9obj/testdata/hello.c0100644000000000000000000000012012412656737020724 0ustar00rootroot00000000000000#include #include void main(void) { print("hello, world\n"); } go/src/pkg/encoding0040755000000000000000000000000012412656737014561 5ustar00rootroot00000000000000go/src/pkg/encoding/ascii850040755000000000000000000000000012412656737016026 5ustar00rootroot00000000000000go/src/pkg/encoding/ascii85/ascii85.go0100644000000000000000000001566512412656737017713 0ustar00rootroot00000000000000// Copyright 2009 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 ascii85 implements the ascii85 data encoding // as used in the btoa tool and Adobe's PostScript and PDF document formats. package ascii85 import ( "io" "strconv" ) /* * Encoder */ // Encode encodes src into at most MaxEncodedLen(len(src)) // bytes of dst, returning the actual number of bytes written. // // The encoding handles 4-byte chunks, using a special encoding // for the last fragment, so Encode is not appropriate for use on // individual blocks of a large data stream. Use NewEncoder() instead. // // Often, ascii85-encoded data is wrapped in <~ and ~> symbols. // Encode does not add these. func Encode(dst, src []byte) int { if len(src) == 0 { return 0 } n := 0 for len(src) > 0 { dst[0] = 0 dst[1] = 0 dst[2] = 0 dst[3] = 0 dst[4] = 0 // Unpack 4 bytes into uint32 to repack into base 85 5-byte. var v uint32 switch len(src) { default: v |= uint32(src[3]) fallthrough case 3: v |= uint32(src[2]) << 8 fallthrough case 2: v |= uint32(src[1]) << 16 fallthrough case 1: v |= uint32(src[0]) << 24 } // Special case: zero (!!!!!) shortens to z. if v == 0 && len(src) >= 4 { dst[0] = 'z' dst = dst[1:] src = src[4:] n++ continue } // Otherwise, 5 base 85 digits starting at !. for i := 4; i >= 0; i-- { dst[i] = '!' + byte(v%85) v /= 85 } // If src was short, discard the low destination bytes. m := 5 if len(src) < 4 { m -= 4 - len(src) src = nil } else { src = src[4:] } dst = dst[m:] n += m } return n } // MaxEncodedLen returns the maximum length of an encoding of n source bytes. func MaxEncodedLen(n int) int { return (n + 3) / 4 * 5 } // NewEncoder returns a new ascii85 stream encoder. Data written to // the returned writer will be encoded and then written to w. // Ascii85 encodings operate in 32-bit blocks; when finished // writing, the caller must Close the returned encoder to flush any // trailing partial block. func NewEncoder(w io.Writer) io.WriteCloser { return &encoder{w: w} } type encoder struct { err error w io.Writer buf [4]byte // buffered data waiting to be encoded nbuf int // number of bytes in buf out [1024]byte // output buffer } func (e *encoder) Write(p []byte) (n int, err error) { if e.err != nil { return 0, e.err } // Leading fringe. if e.nbuf > 0 { var i int for i = 0; i < len(p) && e.nbuf < 4; i++ { e.buf[e.nbuf] = p[i] e.nbuf++ } n += i p = p[i:] if e.nbuf < 4 { return } nout := Encode(e.out[0:], e.buf[0:]) if _, e.err = e.w.Write(e.out[0:nout]); e.err != nil { return n, e.err } e.nbuf = 0 } // Large interior chunks. for len(p) >= 4 { nn := len(e.out) / 5 * 4 if nn > len(p) { nn = len(p) } nn -= nn % 4 if nn > 0 { nout := Encode(e.out[0:], p[0:nn]) if _, e.err = e.w.Write(e.out[0:nout]); e.err != nil { return n, e.err } } n += nn p = p[nn:] } // Trailing fringe. for i := 0; i < len(p); i++ { e.buf[i] = p[i] } e.nbuf = len(p) n += len(p) return } // Close flushes any pending output from the encoder. // It is an error to call Write after calling Close. func (e *encoder) Close() error { // If there's anything left in the buffer, flush it out if e.err == nil && e.nbuf > 0 { nout := Encode(e.out[0:], e.buf[0:e.nbuf]) e.nbuf = 0 _, e.err = e.w.Write(e.out[0:nout]) } return e.err } /* * Decoder */ type CorruptInputError int64 func (e CorruptInputError) Error() string { return "illegal ascii85 data at input byte " + strconv.FormatInt(int64(e), 10) } // Decode decodes src into dst, returning both the number // of bytes written to dst and the number consumed from src. // If src contains invalid ascii85 data, Decode will return the // number of bytes successfully written and a CorruptInputError. // Decode ignores space and control characters in src. // Often, ascii85-encoded data is wrapped in <~ and ~> symbols. // Decode expects these to have been stripped by the caller. // // If flush is true, Decode assumes that src represents the // end of the input stream and processes it completely rather // than wait for the completion of another 32-bit block. // // NewDecoder wraps an io.Reader interface around Decode. // func Decode(dst, src []byte, flush bool) (ndst, nsrc int, err error) { var v uint32 var nb int for i, b := range src { if len(dst)-ndst < 4 { return } switch { case b <= ' ': continue case b == 'z' && nb == 0: nb = 5 v = 0 case '!' <= b && b <= 'u': v = v*85 + uint32(b-'!') nb++ default: return 0, 0, CorruptInputError(i) } if nb == 5 { nsrc = i + 1 dst[ndst] = byte(v >> 24) dst[ndst+1] = byte(v >> 16) dst[ndst+2] = byte(v >> 8) dst[ndst+3] = byte(v) ndst += 4 nb = 0 v = 0 } } if flush { nsrc = len(src) if nb > 0 { // The number of output bytes in the last fragment // is the number of leftover input bytes - 1: // the extra byte provides enough bits to cover // the inefficiency of the encoding for the block. if nb == 1 { return 0, 0, CorruptInputError(len(src)) } for i := nb; i < 5; i++ { // The short encoding truncated the output value. // We have to assume the worst case values (digit 84) // in order to ensure that the top bits are correct. v = v*85 + 84 } for i := 0; i < nb-1; i++ { dst[ndst] = byte(v >> 24) v <<= 8 ndst++ } } } return } // NewDecoder constructs a new ascii85 stream decoder. func NewDecoder(r io.Reader) io.Reader { return &decoder{r: r} } type decoder struct { err error readErr error r io.Reader end bool // saw end of message buf [1024]byte // leftover input nbuf int out []byte // leftover decoded output outbuf [1024]byte } func (d *decoder) Read(p []byte) (n int, err error) { if len(p) == 0 { return 0, nil } if d.err != nil { return 0, d.err } for { // Copy leftover output from last decode. if len(d.out) > 0 { n = copy(p, d.out) d.out = d.out[n:] return } // Decode leftover input from last read. var nn, nsrc, ndst int if d.nbuf > 0 { ndst, nsrc, d.err = Decode(d.outbuf[0:], d.buf[0:d.nbuf], d.readErr != nil) if ndst > 0 { d.out = d.outbuf[0:ndst] d.nbuf = copy(d.buf[0:], d.buf[nsrc:d.nbuf]) continue // copy out and return } if ndst == 0 && d.err == nil { // Special case: input buffer is mostly filled with non-data bytes. // Filter out such bytes to make room for more input. off := 0 for i := 0; i < d.nbuf; i++ { if d.buf[i] > ' ' { d.buf[off] = d.buf[i] off++ } } d.nbuf = off } } // Out of input, out of decoded output. Check errors. if d.err != nil { return 0, d.err } if d.readErr != nil { d.err = d.readErr return 0, d.err } // Read more data. nn, d.readErr = d.r.Read(d.buf[d.nbuf:]) d.nbuf += nn } } go/src/pkg/encoding/ascii85/ascii85_test.go0100644000000000000000000001346312412656737020744 0ustar00rootroot00000000000000// Copyright 2009 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 ascii85 import ( "bytes" "io" "io/ioutil" "strings" "testing" ) type testpair struct { decoded, encoded string } var pairs = []testpair{ // Encode returns 0 when len(src) is 0 { "", "", }, // Wikipedia example { "Man is distinguished, not only by his reason, but by this singular passion from " + "other animals, which is a lust of the mind, that by a perseverance of delight in " + "the continued and indefatigable generation of knowledge, exceeds the short " + "vehemence of any carnal pleasure.", "9jqo^BlbD-BleB1DJ+*+F(f,q/0JhKFCj@.4Gp$d7F!,L7@<6@)/0JDEF@3BB/F*&OCAfu2/AKY\n" + "i(DIb:@FD,*)+C]U=@3BN#EcYf8ATD3s@q?d$AftVqCh[NqF-FD5W8ARlolDIa\n" + "l(DIduD.RTpAKYo'+CT/5+Cei#DII?(E,9)oF*2M7/c\n", }, // Special case when shortening !!!!! to z. { "\000\000\000\000", "z", }, } var bigtest = pairs[len(pairs)-1] func testEqual(t *testing.T, msg string, args ...interface{}) bool { if args[len(args)-2] != args[len(args)-1] { t.Errorf(msg, args...) return false } return true } func strip85(s string) string { t := make([]byte, len(s)) w := 0 for r := 0; r < len(s); r++ { c := s[r] if c > ' ' { t[w] = c w++ } } return string(t[0:w]) } func TestEncode(t *testing.T) { for _, p := range pairs { buf := make([]byte, MaxEncodedLen(len(p.decoded))) n := Encode(buf, []byte(p.decoded)) buf = buf[0:n] testEqual(t, "Encode(%q) = %q, want %q", p.decoded, strip85(string(buf)), strip85(p.encoded)) } } func TestEncoder(t *testing.T) { for _, p := range pairs { bb := &bytes.Buffer{} encoder := NewEncoder(bb) encoder.Write([]byte(p.decoded)) encoder.Close() testEqual(t, "Encode(%q) = %q, want %q", p.decoded, strip85(bb.String()), strip85(p.encoded)) } } func TestEncoderBuffering(t *testing.T) { input := []byte(bigtest.decoded) for bs := 1; bs <= 12; bs++ { bb := &bytes.Buffer{} encoder := NewEncoder(bb) for pos := 0; pos < len(input); pos += bs { end := pos + bs if end > len(input) { end = len(input) } n, err := encoder.Write(input[pos:end]) testEqual(t, "Write(%q) gave error %v, want %v", input[pos:end], err, error(nil)) testEqual(t, "Write(%q) gave length %v, want %v", input[pos:end], n, end-pos) } err := encoder.Close() testEqual(t, "Close gave error %v, want %v", err, error(nil)) testEqual(t, "Encoding/%d of %q = %q, want %q", bs, bigtest.decoded, strip85(bb.String()), strip85(bigtest.encoded)) } } func TestDecode(t *testing.T) { for _, p := range pairs { dbuf := make([]byte, 4*len(p.encoded)) ndst, nsrc, err := Decode(dbuf, []byte(p.encoded), true) testEqual(t, "Decode(%q) = error %v, want %v", p.encoded, err, error(nil)) testEqual(t, "Decode(%q) = nsrc %v, want %v", p.encoded, nsrc, len(p.encoded)) testEqual(t, "Decode(%q) = ndst %v, want %v", p.encoded, ndst, len(p.decoded)) testEqual(t, "Decode(%q) = %q, want %q", p.encoded, string(dbuf[0:ndst]), p.decoded) } } func TestDecoder(t *testing.T) { for _, p := range pairs { decoder := NewDecoder(strings.NewReader(p.encoded)) dbuf, err := ioutil.ReadAll(decoder) if err != nil { t.Fatal("Read failed", err) } testEqual(t, "Read from %q = length %v, want %v", p.encoded, len(dbuf), len(p.decoded)) testEqual(t, "Decoding of %q = %q, want %q", p.encoded, string(dbuf), p.decoded) if err != nil { testEqual(t, "Read from %q = %v, want %v", p.encoded, err, io.EOF) } } } func TestDecoderBuffering(t *testing.T) { for bs := 1; bs <= 12; bs++ { decoder := NewDecoder(strings.NewReader(bigtest.encoded)) buf := make([]byte, len(bigtest.decoded)+12) var total int for total = 0; total < len(bigtest.decoded); { n, err := decoder.Read(buf[total : total+bs]) testEqual(t, "Read from %q at pos %d = %d, %v, want _, %v", bigtest.encoded, total, n, err, error(nil)) total += n } testEqual(t, "Decoding/%d of %q = %q, want %q", bs, bigtest.encoded, string(buf[0:total]), bigtest.decoded) } } func TestDecodeCorrupt(t *testing.T) { type corrupt struct { e string p int } examples := []corrupt{ {"v", 0}, {"!z!!!!!!!!!", 1}, } for _, e := range examples { dbuf := make([]byte, 4*len(e.e)) _, _, err := Decode(dbuf, []byte(e.e), true) switch err := err.(type) { case CorruptInputError: testEqual(t, "Corruption in %q at offset %v, want %v", e.e, int(err), e.p) default: t.Error("Decoder failed to detect corruption in", e) } } } func TestBig(t *testing.T) { n := 3*1000 + 1 raw := make([]byte, n) const alpha = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" for i := 0; i < n; i++ { raw[i] = alpha[i%len(alpha)] } encoded := new(bytes.Buffer) w := NewEncoder(encoded) nn, err := w.Write(raw) if nn != n || err != nil { t.Fatalf("Encoder.Write(raw) = %d, %v want %d, nil", nn, err, n) } err = w.Close() if err != nil { t.Fatalf("Encoder.Close() = %v want nil", err) } decoded, err := ioutil.ReadAll(NewDecoder(encoded)) if err != nil { t.Fatalf("io.ReadAll(NewDecoder(...)): %v", err) } if !bytes.Equal(raw, decoded) { var i int for i = 0; i < len(decoded) && i < len(raw); i++ { if decoded[i] != raw[i] { break } } t.Errorf("Decode(Encode(%d-byte string)) failed at offset %d", n, i) } } func TestDecoderInternalWhitespace(t *testing.T) { s := strings.Repeat(" ", 2048) + "z" decoded, err := ioutil.ReadAll(NewDecoder(strings.NewReader(s))) if err != nil { t.Errorf("Decode gave error %v", err) } if want := []byte("\000\000\000\000"); !bytes.Equal(want, decoded) { t.Errorf("Decode failed: got %v, want %v", decoded, want) } } go/src/pkg/encoding/asn10040755000000000000000000000000012412656737015423 5ustar00rootroot00000000000000go/src/pkg/encoding/asn1/asn1.go0100644000000000000000000006163012412656737016676 0ustar00rootroot00000000000000// Copyright 2009 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 asn1 implements parsing of DER-encoded ASN.1 data structures, // as defined in ITU-T Rec X.690. // // See also ``A Layman's Guide to a Subset of ASN.1, BER, and DER,'' // http://luca.ntop.org/Teaching/Appunti/asn1.html. package asn1 // ASN.1 is a syntax for specifying abstract objects and BER, DER, PER, XER etc // are different encoding formats for those objects. Here, we'll be dealing // with DER, the Distinguished Encoding Rules. DER is used in X.509 because // it's fast to parse and, unlike BER, has a unique encoding for every object. // When calculating hashes over objects, it's important that the resulting // bytes be the same at both ends and DER removes this margin of error. // // ASN.1 is very complex and this package doesn't attempt to implement // everything by any means. import ( "fmt" "math/big" "reflect" "strconv" "time" ) // A StructuralError suggests that the ASN.1 data is valid, but the Go type // which is receiving it doesn't match. type StructuralError struct { Msg string } func (e StructuralError) Error() string { return "asn1: structure error: " + e.Msg } // A SyntaxError suggests that the ASN.1 data is invalid. type SyntaxError struct { Msg string } func (e SyntaxError) Error() string { return "asn1: syntax error: " + e.Msg } // We start by dealing with each of the primitive types in turn. // BOOLEAN func parseBool(bytes []byte) (ret bool, err error) { if len(bytes) != 1 { err = SyntaxError{"invalid boolean"} return } // DER demands that "If the encoding represents the boolean value TRUE, // its single contents octet shall have all eight bits set to one." // Thus only 0 and 255 are valid encoded values. switch bytes[0] { case 0: ret = false case 0xff: ret = true default: err = SyntaxError{"invalid boolean"} } return } // INTEGER // parseInt64 treats the given bytes as a big-endian, signed integer and // returns the result. func parseInt64(bytes []byte) (ret int64, err error) { if len(bytes) > 8 { // We'll overflow an int64 in this case. err = StructuralError{"integer too large"} return } for bytesRead := 0; bytesRead < len(bytes); bytesRead++ { ret <<= 8 ret |= int64(bytes[bytesRead]) } // Shift up and down in order to sign extend the result. ret <<= 64 - uint8(len(bytes))*8 ret >>= 64 - uint8(len(bytes))*8 return } // parseInt treats the given bytes as a big-endian, signed integer and returns // the result. func parseInt32(bytes []byte) (int32, error) { ret64, err := parseInt64(bytes) if err != nil { return 0, err } if ret64 != int64(int32(ret64)) { return 0, StructuralError{"integer too large"} } return int32(ret64), nil } var bigOne = big.NewInt(1) // parseBigInt treats the given bytes as a big-endian, signed integer and returns // the result. func parseBigInt(bytes []byte) *big.Int { ret := new(big.Int) if len(bytes) > 0 && bytes[0]&0x80 == 0x80 { // This is a negative number. notBytes := make([]byte, len(bytes)) for i := range notBytes { notBytes[i] = ^bytes[i] } ret.SetBytes(notBytes) ret.Add(ret, bigOne) ret.Neg(ret) return ret } ret.SetBytes(bytes) return ret } // BIT STRING // BitString is the structure to use when you want an ASN.1 BIT STRING type. A // bit string is padded up to the nearest byte in memory and the number of // valid bits is recorded. Padding bits will be zero. type BitString struct { Bytes []byte // bits packed into bytes. BitLength int // length in bits. } // At returns the bit at the given index. If the index is out of range it // returns false. func (b BitString) At(i int) int { if i < 0 || i >= b.BitLength { return 0 } x := i / 8 y := 7 - uint(i%8) return int(b.Bytes[x]>>y) & 1 } // RightAlign returns a slice where the padding bits are at the beginning. The // slice may share memory with the BitString. func (b BitString) RightAlign() []byte { shift := uint(8 - (b.BitLength % 8)) if shift == 8 || len(b.Bytes) == 0 { return b.Bytes } a := make([]byte, len(b.Bytes)) a[0] = b.Bytes[0] >> shift for i := 1; i < len(b.Bytes); i++ { a[i] = b.Bytes[i-1] << (8 - shift) a[i] |= b.Bytes[i] >> shift } return a } // parseBitString parses an ASN.1 bit string from the given byte slice and returns it. func parseBitString(bytes []byte) (ret BitString, err error) { if len(bytes) == 0 { err = SyntaxError{"zero length BIT STRING"} return } paddingBits := int(bytes[0]) if paddingBits > 7 || len(bytes) == 1 && paddingBits > 0 || bytes[len(bytes)-1]&((1< 0 { s += "." } s += strconv.Itoa(v) } return s } // parseObjectIdentifier parses an OBJECT IDENTIFIER from the given bytes and // returns it. An object identifier is a sequence of variable length integers // that are assigned in a hierarchy. func parseObjectIdentifier(bytes []byte) (s []int, err error) { if len(bytes) == 0 { err = SyntaxError{"zero length OBJECT IDENTIFIER"} return } // In the worst case, we get two elements from the first byte (which is // encoded differently) and then every varint is a single byte long. s = make([]int, len(bytes)+1) // The first varint is 40*value1 + value2: // According to this packing, value1 can take the values 0, 1 and 2 only. // When value1 = 0 or value1 = 1, then value2 is <= 39. When value1 = 2, // then there are no restrictions on value2. v, offset, err := parseBase128Int(bytes, 0) if err != nil { return } if v < 80 { s[0] = v / 40 s[1] = v % 40 } else { s[0] = 2 s[1] = v - 80 } i := 2 for ; offset < len(bytes); i++ { v, offset, err = parseBase128Int(bytes, offset) if err != nil { return } s[i] = v } s = s[0:i] return } // ENUMERATED // An Enumerated is represented as a plain int. type Enumerated int // FLAG // A Flag accepts any data and is set to true if present. type Flag bool // parseBase128Int parses a base-128 encoded int from the given offset in the // given byte slice. It returns the value and the new offset. func parseBase128Int(bytes []byte, initOffset int) (ret, offset int, err error) { offset = initOffset for shifted := 0; offset < len(bytes); shifted++ { if shifted > 4 { err = StructuralError{"base 128 integer too large"} return } ret <<= 7 b := bytes[offset] ret |= int(b & 0x7f) offset++ if b&0x80 == 0 { return } } err = SyntaxError{"truncated base 128 integer"} return } // UTCTime func parseUTCTime(bytes []byte) (ret time.Time, err error) { s := string(bytes) ret, err = time.Parse("0601021504Z0700", s) if err != nil { ret, err = time.Parse("060102150405Z0700", s) } if err == nil && ret.Year() >= 2050 { // UTCTime only encodes times prior to 2050. See https://tools.ietf.org/html/rfc5280#section-4.1.2.5.1 ret = ret.AddDate(-100, 0, 0) } return } // parseGeneralizedTime parses the GeneralizedTime from the given byte slice // and returns the resulting time. func parseGeneralizedTime(bytes []byte) (ret time.Time, err error) { return time.Parse("20060102150405Z0700", string(bytes)) } // PrintableString // parsePrintableString parses a ASN.1 PrintableString from the given byte // array and returns it. func parsePrintableString(bytes []byte) (ret string, err error) { for _, b := range bytes { if !isPrintable(b) { err = SyntaxError{"PrintableString contains invalid character"} return } } ret = string(bytes) return } // isPrintable returns true iff the given b is in the ASN.1 PrintableString set. func isPrintable(b byte) bool { return 'a' <= b && b <= 'z' || 'A' <= b && b <= 'Z' || '0' <= b && b <= '9' || '\'' <= b && b <= ')' || '+' <= b && b <= '/' || b == ' ' || b == ':' || b == '=' || b == '?' || // This is technically not allowed in a PrintableString. // However, x509 certificates with wildcard strings don't // always use the correct string type so we permit it. b == '*' } // IA5String // parseIA5String parses a ASN.1 IA5String (ASCII string) from the given // byte slice and returns it. func parseIA5String(bytes []byte) (ret string, err error) { for _, b := range bytes { if b >= 0x80 { err = SyntaxError{"IA5String contains invalid character"} return } } ret = string(bytes) return } // T61String // parseT61String parses a ASN.1 T61String (8-bit clean string) from the given // byte slice and returns it. func parseT61String(bytes []byte) (ret string, err error) { return string(bytes), nil } // UTF8String // parseUTF8String parses a ASN.1 UTF8String (raw UTF-8) from the given byte // array and returns it. func parseUTF8String(bytes []byte) (ret string, err error) { return string(bytes), nil } // A RawValue represents an undecoded ASN.1 object. type RawValue struct { Class, Tag int IsCompound bool Bytes []byte FullBytes []byte // includes the tag and length } // RawContent is used to signal that the undecoded, DER data needs to be // preserved for a struct. To use it, the first field of the struct must have // this type. It's an error for any of the other fields to have this type. type RawContent []byte // Tagging // parseTagAndLength parses an ASN.1 tag and length pair from the given offset // into a byte slice. It returns the parsed data and the new offset. SET and // SET OF (tag 17) are mapped to SEQUENCE and SEQUENCE OF (tag 16) since we // don't distinguish between ordered and unordered objects in this code. func parseTagAndLength(bytes []byte, initOffset int) (ret tagAndLength, offset int, err error) { offset = initOffset b := bytes[offset] offset++ ret.class = int(b >> 6) ret.isCompound = b&0x20 == 0x20 ret.tag = int(b & 0x1f) // If the bottom five bits are set, then the tag number is actually base 128 // encoded afterwards if ret.tag == 0x1f { ret.tag, offset, err = parseBase128Int(bytes, offset) if err != nil { return } } if offset >= len(bytes) { err = SyntaxError{"truncated tag or length"} return } b = bytes[offset] offset++ if b&0x80 == 0 { // The length is encoded in the bottom 7 bits. ret.length = int(b & 0x7f) } else { // Bottom 7 bits give the number of length bytes to follow. numBytes := int(b & 0x7f) if numBytes == 0 { err = SyntaxError{"indefinite length found (not DER)"} return } ret.length = 0 for i := 0; i < numBytes; i++ { if offset >= len(bytes) { err = SyntaxError{"truncated tag or length"} return } b = bytes[offset] offset++ if ret.length >= 1<<23 { // We can't shift ret.length up without // overflowing. err = StructuralError{"length too large"} return } ret.length <<= 8 ret.length |= int(b) if ret.length == 0 { // DER requires that lengths be minimal. err = StructuralError{"superfluous leading zeros in length"} return } } } return } // parseSequenceOf is used for SEQUENCE OF and SET OF values. It tries to parse // a number of ASN.1 values from the given byte slice and returns them as a // slice of Go values of the given type. func parseSequenceOf(bytes []byte, sliceType reflect.Type, elemType reflect.Type) (ret reflect.Value, err error) { expectedTag, compoundType, ok := getUniversalType(elemType) if !ok { err = StructuralError{"unknown Go type for slice"} return } // First we iterate over the input and count the number of elements, // checking that the types are correct in each case. numElements := 0 for offset := 0; offset < len(bytes); { var t tagAndLength t, offset, err = parseTagAndLength(bytes, offset) if err != nil { return } switch t.tag { case tagIA5String, tagGeneralString, tagT61String, tagUTF8String: // We pretend that various other string types are // PRINTABLE STRINGs so that a sequence of them can be // parsed into a []string. t.tag = tagPrintableString case tagGeneralizedTime, tagUTCTime: // Likewise, both time types are treated the same. t.tag = tagUTCTime } if t.class != classUniversal || t.isCompound != compoundType || t.tag != expectedTag { err = StructuralError{"sequence tag mismatch"} return } if invalidLength(offset, t.length, len(bytes)) { err = SyntaxError{"truncated sequence"} return } offset += t.length numElements++ } ret = reflect.MakeSlice(sliceType, numElements, numElements) params := fieldParameters{} offset := 0 for i := 0; i < numElements; i++ { offset, err = parseField(ret.Index(i), bytes, offset, params) if err != nil { return } } return } var ( bitStringType = reflect.TypeOf(BitString{}) objectIdentifierType = reflect.TypeOf(ObjectIdentifier{}) enumeratedType = reflect.TypeOf(Enumerated(0)) flagType = reflect.TypeOf(Flag(false)) timeType = reflect.TypeOf(time.Time{}) rawValueType = reflect.TypeOf(RawValue{}) rawContentsType = reflect.TypeOf(RawContent(nil)) bigIntType = reflect.TypeOf(new(big.Int)) ) // invalidLength returns true iff offset + length > sliceLength, or if the // addition would overflow. func invalidLength(offset, length, sliceLength int) bool { return offset+length < offset || offset+length > sliceLength } // parseField is the main parsing function. Given a byte slice and an offset // into the array, it will try to parse a suitable ASN.1 value out and store it // in the given Value. func parseField(v reflect.Value, bytes []byte, initOffset int, params fieldParameters) (offset int, err error) { offset = initOffset fieldType := v.Type() // If we have run out of data, it may be that there are optional elements at the end. if offset == len(bytes) { if !setDefaultValue(v, params) { err = SyntaxError{"sequence truncated"} } return } // Deal with raw values. if fieldType == rawValueType { var t tagAndLength t, offset, err = parseTagAndLength(bytes, offset) if err != nil { return } if invalidLength(offset, t.length, len(bytes)) { err = SyntaxError{"data truncated"} return } result := RawValue{t.class, t.tag, t.isCompound, bytes[offset : offset+t.length], bytes[initOffset : offset+t.length]} offset += t.length v.Set(reflect.ValueOf(result)) return } // Deal with the ANY type. if ifaceType := fieldType; ifaceType.Kind() == reflect.Interface && ifaceType.NumMethod() == 0 { var t tagAndLength t, offset, err = parseTagAndLength(bytes, offset) if err != nil { return } if invalidLength(offset, t.length, len(bytes)) { err = SyntaxError{"data truncated"} return } var result interface{} if !t.isCompound && t.class == classUniversal { innerBytes := bytes[offset : offset+t.length] switch t.tag { case tagPrintableString: result, err = parsePrintableString(innerBytes) case tagIA5String: result, err = parseIA5String(innerBytes) case tagT61String: result, err = parseT61String(innerBytes) case tagUTF8String: result, err = parseUTF8String(innerBytes) case tagInteger: result, err = parseInt64(innerBytes) case tagBitString: result, err = parseBitString(innerBytes) case tagOID: result, err = parseObjectIdentifier(innerBytes) case tagUTCTime: result, err = parseUTCTime(innerBytes) case tagOctetString: result = innerBytes default: // If we don't know how to handle the type, we just leave Value as nil. } } offset += t.length if err != nil { return } if result != nil { v.Set(reflect.ValueOf(result)) } return } universalTag, compoundType, ok1 := getUniversalType(fieldType) if !ok1 { err = StructuralError{fmt.Sprintf("unknown Go type: %v", fieldType)} return } t, offset, err := parseTagAndLength(bytes, offset) if err != nil { return } if params.explicit { expectedClass := classContextSpecific if params.application { expectedClass = classApplication } if t.class == expectedClass && t.tag == *params.tag && (t.length == 0 || t.isCompound) { if t.length > 0 { t, offset, err = parseTagAndLength(bytes, offset) if err != nil { return } } else { if fieldType != flagType { err = StructuralError{"zero length explicit tag was not an asn1.Flag"} return } v.SetBool(true) return } } else { // The tags didn't match, it might be an optional element. ok := setDefaultValue(v, params) if ok { offset = initOffset } else { err = StructuralError{"explicitly tagged member didn't match"} } return } } // Special case for strings: all the ASN.1 string types map to the Go // type string. getUniversalType returns the tag for PrintableString // when it sees a string, so if we see a different string type on the // wire, we change the universal type to match. if universalTag == tagPrintableString { switch t.tag { case tagIA5String, tagGeneralString, tagT61String, tagUTF8String: universalTag = t.tag } } // Special case for time: UTCTime and GeneralizedTime both map to the // Go type time.Time. if universalTag == tagUTCTime && t.tag == tagGeneralizedTime { universalTag = tagGeneralizedTime } if params.set { universalTag = tagSet } expectedClass := classUniversal expectedTag := universalTag if !params.explicit && params.tag != nil { expectedClass = classContextSpecific expectedTag = *params.tag } if !params.explicit && params.application && params.tag != nil { expectedClass = classApplication expectedTag = *params.tag } // We have unwrapped any explicit tagging at this point. if t.class != expectedClass || t.tag != expectedTag || t.isCompound != compoundType { // Tags don't match. Again, it could be an optional element. ok := setDefaultValue(v, params) if ok { offset = initOffset } else { err = StructuralError{fmt.Sprintf("tags don't match (%d vs %+v) %+v %s @%d", expectedTag, t, params, fieldType.Name(), offset)} } return } if invalidLength(offset, t.length, len(bytes)) { err = SyntaxError{"data truncated"} return } innerBytes := bytes[offset : offset+t.length] offset += t.length // We deal with the structures defined in this package first. switch fieldType { case objectIdentifierType: newSlice, err1 := parseObjectIdentifier(innerBytes) v.Set(reflect.MakeSlice(v.Type(), len(newSlice), len(newSlice))) if err1 == nil { reflect.Copy(v, reflect.ValueOf(newSlice)) } err = err1 return case bitStringType: bs, err1 := parseBitString(innerBytes) if err1 == nil { v.Set(reflect.ValueOf(bs)) } err = err1 return case timeType: var time time.Time var err1 error if universalTag == tagUTCTime { time, err1 = parseUTCTime(innerBytes) } else { time, err1 = parseGeneralizedTime(innerBytes) } if err1 == nil { v.Set(reflect.ValueOf(time)) } err = err1 return case enumeratedType: parsedInt, err1 := parseInt32(innerBytes) if err1 == nil { v.SetInt(int64(parsedInt)) } err = err1 return case flagType: v.SetBool(true) return case bigIntType: parsedInt := parseBigInt(innerBytes) v.Set(reflect.ValueOf(parsedInt)) return } switch val := v; val.Kind() { case reflect.Bool: parsedBool, err1 := parseBool(innerBytes) if err1 == nil { val.SetBool(parsedBool) } err = err1 return case reflect.Int, reflect.Int32, reflect.Int64: if val.Type().Size() == 4 { parsedInt, err1 := parseInt32(innerBytes) if err1 == nil { val.SetInt(int64(parsedInt)) } err = err1 } else { parsedInt, err1 := parseInt64(innerBytes) if err1 == nil { val.SetInt(parsedInt) } err = err1 } return // TODO(dfc) Add support for the remaining integer types case reflect.Struct: structType := fieldType if structType.NumField() > 0 && structType.Field(0).Type == rawContentsType { bytes := bytes[initOffset:offset] val.Field(0).Set(reflect.ValueOf(RawContent(bytes))) } innerOffset := 0 for i := 0; i < structType.NumField(); i++ { field := structType.Field(i) if i == 0 && field.Type == rawContentsType { continue } innerOffset, err = parseField(val.Field(i), innerBytes, innerOffset, parseFieldParameters(field.Tag.Get("asn1"))) if err != nil { return } } // We allow extra bytes at the end of the SEQUENCE because // adding elements to the end has been used in X.509 as the // version numbers have increased. return case reflect.Slice: sliceType := fieldType if sliceType.Elem().Kind() == reflect.Uint8 { val.Set(reflect.MakeSlice(sliceType, len(innerBytes), len(innerBytes))) reflect.Copy(val, reflect.ValueOf(innerBytes)) return } newSlice, err1 := parseSequenceOf(innerBytes, sliceType, sliceType.Elem()) if err1 == nil { val.Set(newSlice) } err = err1 return case reflect.String: var v string switch universalTag { case tagPrintableString: v, err = parsePrintableString(innerBytes) case tagIA5String: v, err = parseIA5String(innerBytes) case tagT61String: v, err = parseT61String(innerBytes) case tagUTF8String: v, err = parseUTF8String(innerBytes) case tagGeneralString: // GeneralString is specified in ISO-2022/ECMA-35, // A brief review suggests that it includes structures // that allow the encoding to change midstring and // such. We give up and pass it as an 8-bit string. v, err = parseT61String(innerBytes) default: err = SyntaxError{fmt.Sprintf("internal error: unknown string type %d", universalTag)} } if err == nil { val.SetString(v) } return } err = StructuralError{"unsupported: " + v.Type().String()} return } // setDefaultValue is used to install a default value, from a tag string, into // a Value. It is successful is the field was optional, even if a default value // wasn't provided or it failed to install it into the Value. func setDefaultValue(v reflect.Value, params fieldParameters) (ok bool) { if !params.optional { return } ok = true if params.defaultValue == nil { return } switch val := v; val.Kind() { case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: val.SetInt(*params.defaultValue) } return } // Unmarshal parses the DER-encoded ASN.1 data structure b // and uses the reflect package to fill in an arbitrary value pointed at by val. // Because Unmarshal uses the reflect package, the structs // being written to must use upper case field names. // // An ASN.1 INTEGER can be written to an int, int32, int64, // or *big.Int (from the math/big package). // If the encoded value does not fit in the Go type, // Unmarshal returns a parse error. // // An ASN.1 BIT STRING can be written to a BitString. // // An ASN.1 OCTET STRING can be written to a []byte. // // An ASN.1 OBJECT IDENTIFIER can be written to an // ObjectIdentifier. // // An ASN.1 ENUMERATED can be written to an Enumerated. // // An ASN.1 UTCTIME or GENERALIZEDTIME can be written to a time.Time. // // An ASN.1 PrintableString or IA5String can be written to a string. // // Any of the above ASN.1 values can be written to an interface{}. // The value stored in the interface has the corresponding Go type. // For integers, that type is int64. // // An ASN.1 SEQUENCE OF x or SET OF x can be written // to a slice if an x can be written to the slice's element type. // // An ASN.1 SEQUENCE or SET can be written to a struct // if each of the elements in the sequence can be // written to the corresponding element in the struct. // // The following tags on struct fields have special meaning to Unmarshal: // // application specifies that a APPLICATION tag is used // default:x sets the default value for optional integer fields // explicit specifies that an additional, explicit tag wraps the implicit one // optional marks the field as ASN.1 OPTIONAL // set causes a SET, rather than a SEQUENCE type to be expected // tag:x specifies the ASN.1 tag number; implies ASN.1 CONTEXT SPECIFIC // // If the type of the first field of a structure is RawContent then the raw // ASN1 contents of the struct will be stored in it. // // If the type name of a slice element ends with "SET" then it's treated as if // the "set" tag was set on it. This can be used with nested slices where a // struct tag cannot be given. // // Other ASN.1 types are not supported; if it encounters them, // Unmarshal returns a parse error. func Unmarshal(b []byte, val interface{}) (rest []byte, err error) { return UnmarshalWithParams(b, val, "") } // UnmarshalWithParams allows field parameters to be specified for the // top-level element. The form of the params is the same as the field tags. func UnmarshalWithParams(b []byte, val interface{}, params string) (rest []byte, err error) { v := reflect.ValueOf(val).Elem() offset, err := parseField(v, b, 0, parseFieldParameters(params)) if err != nil { return nil, err } return b[offset:], nil } go/src/pkg/encoding/asn1/asn1_test.go0100644000000000000000000010036612412656737017735 0ustar00rootroot00000000000000// Copyright 2009 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 asn1 import ( "bytes" "fmt" "math/big" "reflect" "testing" "time" ) type boolTest struct { in []byte ok bool out bool } var boolTestData = []boolTest{ {[]byte{0x00}, true, false}, {[]byte{0xff}, true, true}, {[]byte{0x00, 0x00}, false, false}, {[]byte{0xff, 0xff}, false, false}, {[]byte{0x01}, false, false}, } func TestParseBool(t *testing.T) { for i, test := range boolTestData { ret, err := parseBool(test.in) if (err == nil) != test.ok { t.Errorf("#%d: Incorrect error result (did fail? %v, expected: %v)", i, err == nil, test.ok) } if test.ok && ret != test.out { t.Errorf("#%d: Bad result: %v (expected %v)", i, ret, test.out) } } } type int64Test struct { in []byte ok bool out int64 } var int64TestData = []int64Test{ {[]byte{0x00}, true, 0}, {[]byte{0x7f}, true, 127}, {[]byte{0x00, 0x80}, true, 128}, {[]byte{0x01, 0x00}, true, 256}, {[]byte{0x80}, true, -128}, {[]byte{0xff, 0x7f}, true, -129}, {[]byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, true, -1}, {[]byte{0xff}, true, -1}, {[]byte{0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, true, -9223372036854775808}, {[]byte{0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, false, 0}, } func TestParseInt64(t *testing.T) { for i, test := range int64TestData { ret, err := parseInt64(test.in) if (err == nil) != test.ok { t.Errorf("#%d: Incorrect error result (did fail? %v, expected: %v)", i, err == nil, test.ok) } if test.ok && ret != test.out { t.Errorf("#%d: Bad result: %v (expected %v)", i, ret, test.out) } } } type int32Test struct { in []byte ok bool out int32 } var int32TestData = []int32Test{ {[]byte{0x00}, true, 0}, {[]byte{0x7f}, true, 127}, {[]byte{0x00, 0x80}, true, 128}, {[]byte{0x01, 0x00}, true, 256}, {[]byte{0x80}, true, -128}, {[]byte{0xff, 0x7f}, true, -129}, {[]byte{0xff, 0xff, 0xff, 0xff}, true, -1}, {[]byte{0xff}, true, -1}, {[]byte{0x80, 0x00, 0x00, 0x00}, true, -2147483648}, {[]byte{0x80, 0x00, 0x00, 0x00, 0x00}, false, 0}, } func TestParseInt32(t *testing.T) { for i, test := range int32TestData { ret, err := parseInt32(test.in) if (err == nil) != test.ok { t.Errorf("#%d: Incorrect error result (did fail? %v, expected: %v)", i, err == nil, test.ok) } if test.ok && int32(ret) != test.out { t.Errorf("#%d: Bad result: %v (expected %v)", i, ret, test.out) } } } var bigIntTests = []struct { in []byte base10 string }{ {[]byte{0xff}, "-1"}, {[]byte{0x00}, "0"}, {[]byte{0x01}, "1"}, {[]byte{0x00, 0xff}, "255"}, {[]byte{0xff, 0x00}, "-256"}, {[]byte{0x01, 0x00}, "256"}, } func TestParseBigInt(t *testing.T) { for i, test := range bigIntTests { ret := parseBigInt(test.in) if ret.String() != test.base10 { t.Errorf("#%d: bad result from %x, got %s want %s", i, test.in, ret.String(), test.base10) } fw := newForkableWriter() marshalBigInt(fw, ret) result := fw.Bytes() if !bytes.Equal(result, test.in) { t.Errorf("#%d: got %x from marshaling %s, want %x", i, result, ret, test.in) } } } type bitStringTest struct { in []byte ok bool out []byte bitLength int } var bitStringTestData = []bitStringTest{ {[]byte{}, false, []byte{}, 0}, {[]byte{0x00}, true, []byte{}, 0}, {[]byte{0x07, 0x00}, true, []byte{0x00}, 1}, {[]byte{0x07, 0x01}, false, []byte{}, 0}, {[]byte{0x07, 0x40}, false, []byte{}, 0}, {[]byte{0x08, 0x00}, false, []byte{}, 0}, } func TestBitString(t *testing.T) { for i, test := range bitStringTestData { ret, err := parseBitString(test.in) if (err == nil) != test.ok { t.Errorf("#%d: Incorrect error result (did fail? %v, expected: %v)", i, err == nil, test.ok) } if err == nil { if test.bitLength != ret.BitLength || !bytes.Equal(ret.Bytes, test.out) { t.Errorf("#%d: Bad result: %v (expected %v %v)", i, ret, test.out, test.bitLength) } } } } func TestBitStringAt(t *testing.T) { bs := BitString{[]byte{0x82, 0x40}, 16} if bs.At(0) != 1 { t.Error("#1: Failed") } if bs.At(1) != 0 { t.Error("#2: Failed") } if bs.At(6) != 1 { t.Error("#3: Failed") } if bs.At(9) != 1 { t.Error("#4: Failed") } if bs.At(-1) != 0 { t.Error("#5: Failed") } if bs.At(17) != 0 { t.Error("#6: Failed") } } type bitStringRightAlignTest struct { in []byte inlen int out []byte } var bitStringRightAlignTests = []bitStringRightAlignTest{ {[]byte{0x80}, 1, []byte{0x01}}, {[]byte{0x80, 0x80}, 9, []byte{0x01, 0x01}}, {[]byte{}, 0, []byte{}}, {[]byte{0xce}, 8, []byte{0xce}}, {[]byte{0xce, 0x47}, 16, []byte{0xce, 0x47}}, {[]byte{0x34, 0x50}, 12, []byte{0x03, 0x45}}, } func TestBitStringRightAlign(t *testing.T) { for i, test := range bitStringRightAlignTests { bs := BitString{test.in, test.inlen} out := bs.RightAlign() if !bytes.Equal(out, test.out) { t.Errorf("#%d got: %x want: %x", i, out, test.out) } } } type objectIdentifierTest struct { in []byte ok bool out []int } var objectIdentifierTestData = []objectIdentifierTest{ {[]byte{}, false, []int{}}, {[]byte{85}, true, []int{2, 5}}, {[]byte{85, 0x02}, true, []int{2, 5, 2}}, {[]byte{85, 0x02, 0xc0, 0x00}, true, []int{2, 5, 2, 0x2000}}, {[]byte{0x81, 0x34, 0x03}, true, []int{2, 100, 3}}, {[]byte{85, 0x02, 0xc0, 0x80, 0x80, 0x80, 0x80}, false, []int{}}, } func TestObjectIdentifier(t *testing.T) { for i, test := range objectIdentifierTestData { ret, err := parseObjectIdentifier(test.in) if (err == nil) != test.ok { t.Errorf("#%d: Incorrect error result (did fail? %v, expected: %v)", i, err == nil, test.ok) } if err == nil { if !reflect.DeepEqual(test.out, ret) { t.Errorf("#%d: Bad result: %v (expected %v)", i, ret, test.out) } } } if s := ObjectIdentifier([]int{1, 2, 3, 4}).String(); s != "1.2.3.4" { t.Errorf("bad ObjectIdentifier.String(). Got %s, want 1.2.3.4", s) } } type timeTest struct { in string ok bool out time.Time } var utcTestData = []timeTest{ {"910506164540-0700", true, time.Date(1991, 05, 06, 16, 45, 40, 0, time.FixedZone("", -7*60*60))}, {"910506164540+0730", true, time.Date(1991, 05, 06, 16, 45, 40, 0, time.FixedZone("", 7*60*60+30*60))}, {"910506234540Z", true, time.Date(1991, 05, 06, 23, 45, 40, 0, time.UTC)}, {"9105062345Z", true, time.Date(1991, 05, 06, 23, 45, 0, 0, time.UTC)}, {"5105062345Z", true, time.Date(1951, 05, 06, 23, 45, 0, 0, time.UTC)}, {"a10506234540Z", false, time.Time{}}, {"91a506234540Z", false, time.Time{}}, {"9105a6234540Z", false, time.Time{}}, {"910506a34540Z", false, time.Time{}}, {"910506334a40Z", false, time.Time{}}, {"91050633444aZ", false, time.Time{}}, {"910506334461Z", false, time.Time{}}, {"910506334400Za", false, time.Time{}}, } func TestUTCTime(t *testing.T) { for i, test := range utcTestData { ret, err := parseUTCTime([]byte(test.in)) if err != nil { if test.ok { t.Errorf("#%d: parseUTCTime(%q) = error %v", i, test.in, err) } continue } if !test.ok { t.Errorf("#%d: parseUTCTime(%q) succeeded, should have failed", i, test.in) continue } const format = "Jan _2 15:04:05 -0700 2006" // ignore zone name, just offset have := ret.Format(format) want := test.out.Format(format) if have != want { t.Errorf("#%d: parseUTCTime(%q) = %s, want %s", i, test.in, have, want) } } } var generalizedTimeTestData = []timeTest{ {"20100102030405Z", true, time.Date(2010, 01, 02, 03, 04, 05, 0, time.UTC)}, {"20100102030405", false, time.Time{}}, {"20100102030405+0607", true, time.Date(2010, 01, 02, 03, 04, 05, 0, time.FixedZone("", 6*60*60+7*60))}, {"20100102030405-0607", true, time.Date(2010, 01, 02, 03, 04, 05, 0, time.FixedZone("", -6*60*60-7*60))}, } func TestGeneralizedTime(t *testing.T) { for i, test := range generalizedTimeTestData { ret, err := parseGeneralizedTime([]byte(test.in)) if (err == nil) != test.ok { t.Errorf("#%d: Incorrect error result (did fail? %v, expected: %v)", i, err == nil, test.ok) } if err == nil { if !reflect.DeepEqual(test.out, ret) { t.Errorf("#%d: Bad result: %v (expected %v)", i, ret, test.out) } } } } type tagAndLengthTest struct { in []byte ok bool out tagAndLength } var tagAndLengthData = []tagAndLengthTest{ {[]byte{0x80, 0x01}, true, tagAndLength{2, 0, 1, false}}, {[]byte{0xa0, 0x01}, true, tagAndLength{2, 0, 1, true}}, {[]byte{0x02, 0x00}, true, tagAndLength{0, 2, 0, false}}, {[]byte{0xfe, 0x00}, true, tagAndLength{3, 30, 0, true}}, {[]byte{0x1f, 0x01, 0x00}, true, tagAndLength{0, 1, 0, false}}, {[]byte{0x1f, 0x81, 0x00, 0x00}, true, tagAndLength{0, 128, 0, false}}, {[]byte{0x1f, 0x81, 0x80, 0x01, 0x00}, true, tagAndLength{0, 0x4001, 0, false}}, {[]byte{0x00, 0x81, 0x01}, true, tagAndLength{0, 0, 1, false}}, {[]byte{0x00, 0x82, 0x01, 0x00}, true, tagAndLength{0, 0, 256, false}}, {[]byte{0x00, 0x83, 0x01, 0x00}, false, tagAndLength{}}, {[]byte{0x1f, 0x85}, false, tagAndLength{}}, {[]byte{0x30, 0x80}, false, tagAndLength{}}, // Superfluous zeros in the length should be an error. {[]byte{0xa0, 0x82, 0x00, 0x01}, false, tagAndLength{}}, // Lengths up to the maximum size of an int should work. {[]byte{0xa0, 0x84, 0x7f, 0xff, 0xff, 0xff}, true, tagAndLength{2, 0, 0x7fffffff, true}}, // Lengths that would overflow an int should be rejected. {[]byte{0xa0, 0x84, 0x80, 0x00, 0x00, 0x00}, false, tagAndLength{}}, } func TestParseTagAndLength(t *testing.T) { for i, test := range tagAndLengthData { tagAndLength, _, err := parseTagAndLength(test.in, 0) if (err == nil) != test.ok { t.Errorf("#%d: Incorrect error result (did pass? %v, expected: %v)", i, err == nil, test.ok) } if err == nil && !reflect.DeepEqual(test.out, tagAndLength) { t.Errorf("#%d: Bad result: %v (expected %v)", i, tagAndLength, test.out) } } } type parseFieldParametersTest struct { in string out fieldParameters } func newInt(n int) *int { return &n } func newInt64(n int64) *int64 { return &n } func newString(s string) *string { return &s } func newBool(b bool) *bool { return &b } var parseFieldParametersTestData []parseFieldParametersTest = []parseFieldParametersTest{ {"", fieldParameters{}}, {"ia5", fieldParameters{stringType: tagIA5String}}, {"printable", fieldParameters{stringType: tagPrintableString}}, {"optional", fieldParameters{optional: true}}, {"explicit", fieldParameters{explicit: true, tag: new(int)}}, {"application", fieldParameters{application: true, tag: new(int)}}, {"optional,explicit", fieldParameters{optional: true, explicit: true, tag: new(int)}}, {"default:42", fieldParameters{defaultValue: newInt64(42)}}, {"tag:17", fieldParameters{tag: newInt(17)}}, {"optional,explicit,default:42,tag:17", fieldParameters{optional: true, explicit: true, defaultValue: newInt64(42), tag: newInt(17)}}, {"optional,explicit,default:42,tag:17,rubbish1", fieldParameters{true, true, false, newInt64(42), newInt(17), 0, false, false}}, {"set", fieldParameters{set: true}}, } func TestParseFieldParameters(t *testing.T) { for i, test := range parseFieldParametersTestData { f := parseFieldParameters(test.in) if !reflect.DeepEqual(f, test.out) { t.Errorf("#%d: Bad result: %v (expected %v)", i, f, test.out) } } } type TestObjectIdentifierStruct struct { OID ObjectIdentifier } type TestContextSpecificTags struct { A int `asn1:"tag:1"` } type TestContextSpecificTags2 struct { A int `asn1:"explicit,tag:1"` B int } type TestElementsAfterString struct { S string A, B int } type TestBigInt struct { X *big.Int } type TestSet struct { Ints []int `asn1:"set"` } var unmarshalTestData = []struct { in []byte out interface{} }{ {[]byte{0x02, 0x01, 0x42}, newInt(0x42)}, {[]byte{0x30, 0x08, 0x06, 0x06, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d}, &TestObjectIdentifierStruct{[]int{1, 2, 840, 113549}}}, {[]byte{0x03, 0x04, 0x06, 0x6e, 0x5d, 0xc0}, &BitString{[]byte{110, 93, 192}, 18}}, {[]byte{0x30, 0x09, 0x02, 0x01, 0x01, 0x02, 0x01, 0x02, 0x02, 0x01, 0x03}, &[]int{1, 2, 3}}, {[]byte{0x02, 0x01, 0x10}, newInt(16)}, {[]byte{0x13, 0x04, 't', 'e', 's', 't'}, newString("test")}, {[]byte{0x16, 0x04, 't', 'e', 's', 't'}, newString("test")}, {[]byte{0x16, 0x04, 't', 'e', 's', 't'}, &RawValue{0, 22, false, []byte("test"), []byte("\x16\x04test")}}, {[]byte{0x04, 0x04, 1, 2, 3, 4}, &RawValue{0, 4, false, []byte{1, 2, 3, 4}, []byte{4, 4, 1, 2, 3, 4}}}, {[]byte{0x30, 0x03, 0x81, 0x01, 0x01}, &TestContextSpecificTags{1}}, {[]byte{0x30, 0x08, 0xa1, 0x03, 0x02, 0x01, 0x01, 0x02, 0x01, 0x02}, &TestContextSpecificTags2{1, 2}}, {[]byte{0x01, 0x01, 0x00}, newBool(false)}, {[]byte{0x01, 0x01, 0xff}, newBool(true)}, {[]byte{0x30, 0x0b, 0x13, 0x03, 0x66, 0x6f, 0x6f, 0x02, 0x01, 0x22, 0x02, 0x01, 0x33}, &TestElementsAfterString{"foo", 0x22, 0x33}}, {[]byte{0x30, 0x05, 0x02, 0x03, 0x12, 0x34, 0x56}, &TestBigInt{big.NewInt(0x123456)}}, {[]byte{0x30, 0x0b, 0x31, 0x09, 0x02, 0x01, 0x01, 0x02, 0x01, 0x02, 0x02, 0x01, 0x03}, &TestSet{Ints: []int{1, 2, 3}}}, } func TestUnmarshal(t *testing.T) { for i, test := range unmarshalTestData { pv := reflect.New(reflect.TypeOf(test.out).Elem()) val := pv.Interface() _, err := Unmarshal(test.in, val) if err != nil { t.Errorf("Unmarshal failed at index %d %v", i, err) } if !reflect.DeepEqual(val, test.out) { t.Errorf("#%d:\nhave %#v\nwant %#v", i, val, test.out) } } } type Certificate struct { TBSCertificate TBSCertificate SignatureAlgorithm AlgorithmIdentifier SignatureValue BitString } type TBSCertificate struct { Version int `asn1:"optional,explicit,default:0,tag:0"` SerialNumber RawValue SignatureAlgorithm AlgorithmIdentifier Issuer RDNSequence Validity Validity Subject RDNSequence PublicKey PublicKeyInfo } type AlgorithmIdentifier struct { Algorithm ObjectIdentifier } type RDNSequence []RelativeDistinguishedNameSET type RelativeDistinguishedNameSET []AttributeTypeAndValue type AttributeTypeAndValue struct { Type ObjectIdentifier Value interface{} } type Validity struct { NotBefore, NotAfter time.Time } type PublicKeyInfo struct { Algorithm AlgorithmIdentifier PublicKey BitString } func TestCertificate(t *testing.T) { // This is a minimal, self-signed certificate that should parse correctly. var cert Certificate if _, err := Unmarshal(derEncodedSelfSignedCertBytes, &cert); err != nil { t.Errorf("Unmarshal failed: %v", err) } if !reflect.DeepEqual(cert, derEncodedSelfSignedCert) { t.Errorf("Bad result:\ngot: %+v\nwant: %+v", cert, derEncodedSelfSignedCert) } } func TestCertificateWithNUL(t *testing.T) { // This is the paypal NUL-hack certificate. It should fail to parse because // NUL isn't a permitted character in a PrintableString. var cert Certificate if _, err := Unmarshal(derEncodedPaypalNULCertBytes, &cert); err == nil { t.Error("Unmarshal succeeded, should not have") } } type rawStructTest struct { Raw RawContent A int } func TestRawStructs(t *testing.T) { var s rawStructTest input := []byte{0x30, 0x03, 0x02, 0x01, 0x50} rest, err := Unmarshal(input, &s) if len(rest) != 0 { t.Errorf("incomplete parse: %x", rest) return } if err != nil { t.Error(err) return } if s.A != 0x50 { t.Errorf("bad value for A: got %d want %d", s.A, 0x50) } if !bytes.Equal([]byte(s.Raw), input) { t.Errorf("bad value for Raw: got %x want %x", s.Raw, input) } } type oiEqualTest struct { first ObjectIdentifier second ObjectIdentifier same bool } var oiEqualTests = []oiEqualTest{ { ObjectIdentifier{1, 2, 3}, ObjectIdentifier{1, 2, 3}, true, }, { ObjectIdentifier{1}, ObjectIdentifier{1, 2, 3}, false, }, { ObjectIdentifier{1, 2, 3}, ObjectIdentifier{10, 11, 12}, false, }, } func TestObjectIdentifierEqual(t *testing.T) { for _, o := range oiEqualTests { if s := o.first.Equal(o.second); s != o.same { t.Errorf("ObjectIdentifier.Equal: got: %t want: %t", s, o.same) } } } var derEncodedSelfSignedCert = Certificate{ TBSCertificate: TBSCertificate{ Version: 0, SerialNumber: RawValue{Class: 0, Tag: 2, IsCompound: false, Bytes: []uint8{0x0, 0x8c, 0xc3, 0x37, 0x92, 0x10, 0xec, 0x2c, 0x98}, FullBytes: []byte{2, 9, 0x0, 0x8c, 0xc3, 0x37, 0x92, 0x10, 0xec, 0x2c, 0x98}}, SignatureAlgorithm: AlgorithmIdentifier{Algorithm: ObjectIdentifier{1, 2, 840, 113549, 1, 1, 5}}, Issuer: RDNSequence{ RelativeDistinguishedNameSET{AttributeTypeAndValue{Type: ObjectIdentifier{2, 5, 4, 6}, Value: "XX"}}, RelativeDistinguishedNameSET{AttributeTypeAndValue{Type: ObjectIdentifier{2, 5, 4, 8}, Value: "Some-State"}}, RelativeDistinguishedNameSET{AttributeTypeAndValue{Type: ObjectIdentifier{2, 5, 4, 7}, Value: "City"}}, RelativeDistinguishedNameSET{AttributeTypeAndValue{Type: ObjectIdentifier{2, 5, 4, 10}, Value: "Internet Widgits Pty Ltd"}}, RelativeDistinguishedNameSET{AttributeTypeAndValue{Type: ObjectIdentifier{2, 5, 4, 3}, Value: "false.example.com"}}, RelativeDistinguishedNameSET{AttributeTypeAndValue{Type: ObjectIdentifier{1, 2, 840, 113549, 1, 9, 1}, Value: "false@example.com"}}, }, Validity: Validity{ NotBefore: time.Date(2009, 10, 8, 00, 25, 53, 0, time.UTC), NotAfter: time.Date(2010, 10, 8, 00, 25, 53, 0, time.UTC), }, Subject: RDNSequence{ RelativeDistinguishedNameSET{AttributeTypeAndValue{Type: ObjectIdentifier{2, 5, 4, 6}, Value: "XX"}}, RelativeDistinguishedNameSET{AttributeTypeAndValue{Type: ObjectIdentifier{2, 5, 4, 8}, Value: "Some-State"}}, RelativeDistinguishedNameSET{AttributeTypeAndValue{Type: ObjectIdentifier{2, 5, 4, 7}, Value: "City"}}, RelativeDistinguishedNameSET{AttributeTypeAndValue{Type: ObjectIdentifier{2, 5, 4, 10}, Value: "Internet Widgits Pty Ltd"}}, RelativeDistinguishedNameSET{AttributeTypeAndValue{Type: ObjectIdentifier{2, 5, 4, 3}, Value: "false.example.com"}}, RelativeDistinguishedNameSET{AttributeTypeAndValue{Type: ObjectIdentifier{1, 2, 840, 113549, 1, 9, 1}, Value: "false@example.com"}}, }, PublicKey: PublicKeyInfo{ Algorithm: AlgorithmIdentifier{Algorithm: ObjectIdentifier{1, 2, 840, 113549, 1, 1, 1}}, PublicKey: BitString{ Bytes: []uint8{ 0x30, 0x48, 0x2, 0x41, 0x0, 0xcd, 0xb7, 0x63, 0x9c, 0x32, 0x78, 0xf0, 0x6, 0xaa, 0x27, 0x7f, 0x6e, 0xaf, 0x42, 0x90, 0x2b, 0x59, 0x2d, 0x8c, 0xbc, 0xbe, 0x38, 0xa1, 0xc9, 0x2b, 0xa4, 0x69, 0x5a, 0x33, 0x1b, 0x1d, 0xea, 0xde, 0xad, 0xd8, 0xe9, 0xa5, 0xc2, 0x7e, 0x8c, 0x4c, 0x2f, 0xd0, 0xa8, 0x88, 0x96, 0x57, 0x72, 0x2a, 0x4f, 0x2a, 0xf7, 0x58, 0x9c, 0xf2, 0xc7, 0x70, 0x45, 0xdc, 0x8f, 0xde, 0xec, 0x35, 0x7d, 0x2, 0x3, 0x1, 0x0, 0x1, }, BitLength: 592, }, }, }, SignatureAlgorithm: AlgorithmIdentifier{Algorithm: ObjectIdentifier{1, 2, 840, 113549, 1, 1, 5}}, SignatureValue: BitString{ Bytes: []uint8{ 0xa6, 0x7b, 0x6, 0xec, 0x5e, 0xce, 0x92, 0x77, 0x2c, 0xa4, 0x13, 0xcb, 0xa3, 0xca, 0x12, 0x56, 0x8f, 0xdc, 0x6c, 0x7b, 0x45, 0x11, 0xcd, 0x40, 0xa7, 0xf6, 0x59, 0x98, 0x4, 0x2, 0xdf, 0x2b, 0x99, 0x8b, 0xb9, 0xa4, 0xa8, 0xcb, 0xeb, 0x34, 0xc0, 0xf0, 0xa7, 0x8c, 0xf8, 0xd9, 0x1e, 0xde, 0x14, 0xa5, 0xed, 0x76, 0xbf, 0x11, 0x6f, 0xe3, 0x60, 0xaa, 0xfa, 0x88, 0x21, 0x49, 0x4, 0x35, }, BitLength: 512, }, } var derEncodedSelfSignedCertBytes = []byte{ 0x30, 0x82, 0x02, 0x18, 0x30, 0x82, 0x01, 0xc2, 0x02, 0x09, 0x00, 0x8c, 0xc3, 0x37, 0x92, 0x10, 0xec, 0x2c, 0x98, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, 0x92, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x04, 0x43, 0x69, 0x74, 0x79, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x11, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x40, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x39, 0x31, 0x30, 0x30, 0x38, 0x30, 0x30, 0x32, 0x35, 0x35, 0x33, 0x5a, 0x17, 0x0d, 0x31, 0x30, 0x31, 0x30, 0x30, 0x38, 0x30, 0x30, 0x32, 0x35, 0x35, 0x33, 0x5a, 0x30, 0x81, 0x92, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x53, 0x6f, 0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x04, 0x43, 0x69, 0x74, 0x79, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x11, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x40, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x5c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x4b, 0x00, 0x30, 0x48, 0x02, 0x41, 0x00, 0xcd, 0xb7, 0x63, 0x9c, 0x32, 0x78, 0xf0, 0x06, 0xaa, 0x27, 0x7f, 0x6e, 0xaf, 0x42, 0x90, 0x2b, 0x59, 0x2d, 0x8c, 0xbc, 0xbe, 0x38, 0xa1, 0xc9, 0x2b, 0xa4, 0x69, 0x5a, 0x33, 0x1b, 0x1d, 0xea, 0xde, 0xad, 0xd8, 0xe9, 0xa5, 0xc2, 0x7e, 0x8c, 0x4c, 0x2f, 0xd0, 0xa8, 0x88, 0x96, 0x57, 0x72, 0x2a, 0x4f, 0x2a, 0xf7, 0x58, 0x9c, 0xf2, 0xc7, 0x70, 0x45, 0xdc, 0x8f, 0xde, 0xec, 0x35, 0x7d, 0x02, 0x03, 0x01, 0x00, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x41, 0x00, 0xa6, 0x7b, 0x06, 0xec, 0x5e, 0xce, 0x92, 0x77, 0x2c, 0xa4, 0x13, 0xcb, 0xa3, 0xca, 0x12, 0x56, 0x8f, 0xdc, 0x6c, 0x7b, 0x45, 0x11, 0xcd, 0x40, 0xa7, 0xf6, 0x59, 0x98, 0x04, 0x02, 0xdf, 0x2b, 0x99, 0x8b, 0xb9, 0xa4, 0xa8, 0xcb, 0xeb, 0x34, 0xc0, 0xf0, 0xa7, 0x8c, 0xf8, 0xd9, 0x1e, 0xde, 0x14, 0xa5, 0xed, 0x76, 0xbf, 0x11, 0x6f, 0xe3, 0x60, 0xaa, 0xfa, 0x88, 0x21, 0x49, 0x04, 0x35, } var derEncodedPaypalNULCertBytes = []byte{ 0x30, 0x82, 0x06, 0x44, 0x30, 0x82, 0x05, 0xad, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x03, 0x00, 0xf0, 0x9b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x82, 0x01, 0x12, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x45, 0x53, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x09, 0x42, 0x61, 0x72, 0x63, 0x65, 0x6c, 0x6f, 0x6e, 0x61, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x42, 0x61, 0x72, 0x63, 0x65, 0x6c, 0x6f, 0x6e, 0x61, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x20, 0x49, 0x50, 0x53, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x73, 0x2e, 0x6c, 0x2e, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x14, 0x25, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x40, 0x69, 0x70, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x20, 0x43, 0x2e, 0x49, 0x2e, 0x46, 0x2e, 0x20, 0x20, 0x42, 0x2d, 0x42, 0x36, 0x32, 0x32, 0x31, 0x30, 0x36, 0x39, 0x35, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x25, 0x69, 0x70, 0x73, 0x43, 0x41, 0x20, 0x43, 0x4c, 0x41, 0x53, 0x45, 0x41, 0x31, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x69, 0x70, 0x73, 0x43, 0x41, 0x20, 0x43, 0x4c, 0x41, 0x53, 0x45, 0x41, 0x31, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x11, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x40, 0x69, 0x70, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x39, 0x30, 0x32, 0x32, 0x34, 0x32, 0x33, 0x30, 0x34, 0x31, 0x37, 0x5a, 0x17, 0x0d, 0x31, 0x31, 0x30, 0x32, 0x32, 0x34, 0x32, 0x33, 0x30, 0x34, 0x31, 0x37, 0x5a, 0x30, 0x81, 0x94, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x43, 0x61, 0x6c, 0x69, 0x66, 0x6f, 0x72, 0x6e, 0x69, 0x61, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0d, 0x53, 0x61, 0x6e, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x69, 0x73, 0x63, 0x6f, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x08, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0b, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x55, 0x6e, 0x69, 0x74, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x26, 0x77, 0x77, 0x77, 0x2e, 0x70, 0x61, 0x79, 0x70, 0x61, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x00, 0x73, 0x73, 0x6c, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x63, 0x63, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xd2, 0x69, 0xfa, 0x6f, 0x3a, 0x00, 0xb4, 0x21, 0x1b, 0xc8, 0xb1, 0x02, 0xd7, 0x3f, 0x19, 0xb2, 0xc4, 0x6d, 0xb4, 0x54, 0xf8, 0x8b, 0x8a, 0xcc, 0xdb, 0x72, 0xc2, 0x9e, 0x3c, 0x60, 0xb9, 0xc6, 0x91, 0x3d, 0x82, 0xb7, 0x7d, 0x99, 0xff, 0xd1, 0x29, 0x84, 0xc1, 0x73, 0x53, 0x9c, 0x82, 0xdd, 0xfc, 0x24, 0x8c, 0x77, 0xd5, 0x41, 0xf3, 0xe8, 0x1e, 0x42, 0xa1, 0xad, 0x2d, 0x9e, 0xff, 0x5b, 0x10, 0x26, 0xce, 0x9d, 0x57, 0x17, 0x73, 0x16, 0x23, 0x38, 0xc8, 0xd6, 0xf1, 0xba, 0xa3, 0x96, 0x5b, 0x16, 0x67, 0x4a, 0x4f, 0x73, 0x97, 0x3a, 0x4d, 0x14, 0xa4, 0xf4, 0xe2, 0x3f, 0x8b, 0x05, 0x83, 0x42, 0xd1, 0xd0, 0xdc, 0x2f, 0x7a, 0xe5, 0xb6, 0x10, 0xb2, 0x11, 0xc0, 0xdc, 0x21, 0x2a, 0x90, 0xff, 0xae, 0x97, 0x71, 0x5a, 0x49, 0x81, 0xac, 0x40, 0xf3, 0x3b, 0xb8, 0x59, 0xb2, 0x4f, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x03, 0x21, 0x30, 0x82, 0x03, 0x1d, 0x30, 0x09, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x02, 0x30, 0x00, 0x30, 0x11, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x01, 0x01, 0x04, 0x04, 0x03, 0x02, 0x06, 0x40, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x03, 0xf8, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x0c, 0x30, 0x0a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x61, 0x8f, 0x61, 0x34, 0x43, 0x55, 0x14, 0x7f, 0x27, 0x09, 0xce, 0x4c, 0x8b, 0xea, 0x9b, 0x7b, 0x19, 0x25, 0xbc, 0x6e, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x0e, 0x07, 0x60, 0xd4, 0x39, 0xc9, 0x1b, 0x5b, 0x5d, 0x90, 0x7b, 0x23, 0xc8, 0xd2, 0x34, 0x9d, 0x4a, 0x9a, 0x46, 0x39, 0x30, 0x09, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x1d, 0x12, 0x04, 0x15, 0x30, 0x13, 0x81, 0x11, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x40, 0x69, 0x70, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x72, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x01, 0x0d, 0x04, 0x65, 0x16, 0x63, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4e, 0x4f, 0x54, 0x20, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x45, 0x44, 0x2e, 0x20, 0x43, 0x4c, 0x41, 0x53, 0x45, 0x41, 0x31, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x70, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x2f, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x01, 0x02, 0x04, 0x22, 0x16, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x70, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x70, 0x73, 0x63, 0x61, 0x32, 0x30, 0x30, 0x32, 0x2f, 0x30, 0x43, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x01, 0x04, 0x04, 0x36, 0x16, 0x34, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x70, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x70, 0x73, 0x63, 0x61, 0x32, 0x30, 0x30, 0x32, 0x2f, 0x69, 0x70, 0x73, 0x63, 0x61, 0x32, 0x30, 0x30, 0x32, 0x43, 0x4c, 0x41, 0x53, 0x45, 0x41, 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x46, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x01, 0x03, 0x04, 0x39, 0x16, 0x37, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x70, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x70, 0x73, 0x63, 0x61, 0x32, 0x30, 0x30, 0x32, 0x2f, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x4c, 0x41, 0x53, 0x45, 0x41, 0x31, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x3f, 0x30, 0x43, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x01, 0x07, 0x04, 0x36, 0x16, 0x34, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x70, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x70, 0x73, 0x63, 0x61, 0x32, 0x30, 0x30, 0x32, 0x2f, 0x72, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x43, 0x4c, 0x41, 0x53, 0x45, 0x41, 0x31, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x3f, 0x30, 0x41, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x01, 0x08, 0x04, 0x34, 0x16, 0x32, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x70, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x70, 0x73, 0x63, 0x61, 0x32, 0x30, 0x30, 0x32, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x4c, 0x41, 0x53, 0x45, 0x41, 0x31, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x30, 0x81, 0x83, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x7c, 0x30, 0x7a, 0x30, 0x39, 0xa0, 0x37, 0xa0, 0x35, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x70, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x70, 0x73, 0x63, 0x61, 0x32, 0x30, 0x30, 0x32, 0x2f, 0x69, 0x70, 0x73, 0x63, 0x61, 0x32, 0x30, 0x30, 0x32, 0x43, 0x4c, 0x41, 0x53, 0x45, 0x41, 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, 0xa0, 0x3b, 0xa0, 0x39, 0x86, 0x37, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x62, 0x61, 0x63, 0x6b, 0x2e, 0x69, 0x70, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x70, 0x73, 0x63, 0x61, 0x32, 0x30, 0x30, 0x32, 0x2f, 0x69, 0x70, 0x73, 0x63, 0x61, 0x32, 0x30, 0x30, 0x32, 0x43, 0x4c, 0x41, 0x53, 0x45, 0x41, 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x69, 0x70, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x68, 0xee, 0x79, 0x97, 0x97, 0xdd, 0x3b, 0xef, 0x16, 0x6a, 0x06, 0xf2, 0x14, 0x9a, 0x6e, 0xcd, 0x9e, 0x12, 0xf7, 0xaa, 0x83, 0x10, 0xbd, 0xd1, 0x7c, 0x98, 0xfa, 0xc7, 0xae, 0xd4, 0x0e, 0x2c, 0x9e, 0x38, 0x05, 0x9d, 0x52, 0x60, 0xa9, 0x99, 0x0a, 0x81, 0xb4, 0x98, 0x90, 0x1d, 0xae, 0xbb, 0x4a, 0xd7, 0xb9, 0xdc, 0x88, 0x9e, 0x37, 0x78, 0x41, 0x5b, 0xf7, 0x82, 0xa5, 0xf2, 0xba, 0x41, 0x25, 0x5a, 0x90, 0x1a, 0x1e, 0x45, 0x38, 0xa1, 0x52, 0x58, 0x75, 0x94, 0x26, 0x44, 0xfb, 0x20, 0x07, 0xba, 0x44, 0xcc, 0xe5, 0x4a, 0x2d, 0x72, 0x3f, 0x98, 0x47, 0xf6, 0x26, 0xdc, 0x05, 0x46, 0x05, 0x07, 0x63, 0x21, 0xab, 0x46, 0x9b, 0x9c, 0x78, 0xd5, 0x54, 0x5b, 0x3d, 0x0c, 0x1e, 0xc8, 0x64, 0x8c, 0xb5, 0x50, 0x23, 0x82, 0x6f, 0xdb, 0xb8, 0x22, 0x1c, 0x43, 0x96, 0x07, 0xa8, 0xbb, } var stringSliceTestData = [][]string{ {"foo", "bar"}, {"foo", "\\bar"}, {"foo", "\"bar\""}, {"foo", "åäö"}, } func TestStringSlice(t *testing.T) { for _, test := range stringSliceTestData { bs, err := Marshal(test) if err != nil { t.Error(err) } var res []string _, err = Unmarshal(bs, &res) if err != nil { t.Error(err) } if fmt.Sprintf("%v", res) != fmt.Sprintf("%v", test) { t.Errorf("incorrect marshal/unmarshal; %v != %v", res, test) } } } go/src/pkg/encoding/asn1/common.go0100644000000000000000000001135412412656737017322 0ustar00rootroot00000000000000// Copyright 2009 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 asn1 import ( "reflect" "strconv" "strings" ) // ASN.1 objects have metadata preceding them: // the tag: the type of the object // a flag denoting if this object is compound or not // the class type: the namespace of the tag // the length of the object, in bytes // Here are some standard tags and classes const ( tagBoolean = 1 tagInteger = 2 tagBitString = 3 tagOctetString = 4 tagOID = 6 tagEnum = 10 tagUTF8String = 12 tagSequence = 16 tagSet = 17 tagPrintableString = 19 tagT61String = 20 tagIA5String = 22 tagUTCTime = 23 tagGeneralizedTime = 24 tagGeneralString = 27 ) const ( classUniversal = 0 classApplication = 1 classContextSpecific = 2 classPrivate = 3 ) type tagAndLength struct { class, tag, length int isCompound bool } // ASN.1 has IMPLICIT and EXPLICIT tags, which can be translated as "instead // of" and "in addition to". When not specified, every primitive type has a // default tag in the UNIVERSAL class. // // For example: a BIT STRING is tagged [UNIVERSAL 3] by default (although ASN.1 // doesn't actually have a UNIVERSAL keyword). However, by saying [IMPLICIT // CONTEXT-SPECIFIC 42], that means that the tag is replaced by another. // // On the other hand, if it said [EXPLICIT CONTEXT-SPECIFIC 10], then an // /additional/ tag would wrap the default tag. This explicit tag will have the // compound flag set. // // (This is used in order to remove ambiguity with optional elements.) // // You can layer EXPLICIT and IMPLICIT tags to an arbitrary depth, however we // don't support that here. We support a single layer of EXPLICIT or IMPLICIT // tagging with tag strings on the fields of a structure. // fieldParameters is the parsed representation of tag string from a structure field. type fieldParameters struct { optional bool // true iff the field is OPTIONAL explicit bool // true iff an EXPLICIT tag is in use. application bool // true iff an APPLICATION tag is in use. defaultValue *int64 // a default value for INTEGER typed fields (maybe nil). tag *int // the EXPLICIT or IMPLICIT tag (maybe nil). stringType int // the string tag to use when marshaling. set bool // true iff this should be encoded as a SET omitEmpty bool // true iff this should be omitted if empty when marshaling. // Invariants: // if explicit is set, tag is non-nil. } // Given a tag string with the format specified in the package comment, // parseFieldParameters will parse it into a fieldParameters structure, // ignoring unknown parts of the string. func parseFieldParameters(str string) (ret fieldParameters) { for _, part := range strings.Split(str, ",") { switch { case part == "optional": ret.optional = true case part == "explicit": ret.explicit = true if ret.tag == nil { ret.tag = new(int) } case part == "ia5": ret.stringType = tagIA5String case part == "printable": ret.stringType = tagPrintableString case part == "utf8": ret.stringType = tagUTF8String case strings.HasPrefix(part, "default:"): i, err := strconv.ParseInt(part[8:], 10, 64) if err == nil { ret.defaultValue = new(int64) *ret.defaultValue = i } case strings.HasPrefix(part, "tag:"): i, err := strconv.Atoi(part[4:]) if err == nil { ret.tag = new(int) *ret.tag = i } case part == "set": ret.set = true case part == "application": ret.application = true if ret.tag == nil { ret.tag = new(int) } case part == "omitempty": ret.omitEmpty = true } } return } // Given a reflected Go type, getUniversalType returns the default tag number // and expected compound flag. func getUniversalType(t reflect.Type) (tagNumber int, isCompound, ok bool) { switch t { case objectIdentifierType: return tagOID, false, true case bitStringType: return tagBitString, false, true case timeType: return tagUTCTime, false, true case enumeratedType: return tagEnum, false, true case bigIntType: return tagInteger, false, true } switch t.Kind() { case reflect.Bool: return tagBoolean, false, true case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return tagInteger, false, true case reflect.Struct: return tagSequence, true, true case reflect.Slice: if t.Elem().Kind() == reflect.Uint8 { return tagOctetString, false, true } if strings.HasSuffix(t.Name(), "SET") { return tagSet, true, true } return tagSequence, true, true case reflect.String: return tagPrintableString, false, true } return 0, false, false } go/src/pkg/encoding/asn1/marshal.go0100644000000000000000000003146712412656737017470 0ustar00rootroot00000000000000// Copyright 2009 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 asn1 import ( "bytes" "errors" "fmt" "io" "math/big" "reflect" "time" "unicode/utf8" ) // A forkableWriter is an in-memory buffer that can be // 'forked' to create new forkableWriters that bracket the // original. After // pre, post := w.fork(); // the overall sequence of bytes represented is logically w+pre+post. type forkableWriter struct { *bytes.Buffer pre, post *forkableWriter } func newForkableWriter() *forkableWriter { return &forkableWriter{new(bytes.Buffer), nil, nil} } func (f *forkableWriter) fork() (pre, post *forkableWriter) { if f.pre != nil || f.post != nil { panic("have already forked") } f.pre = newForkableWriter() f.post = newForkableWriter() return f.pre, f.post } func (f *forkableWriter) Len() (l int) { l += f.Buffer.Len() if f.pre != nil { l += f.pre.Len() } if f.post != nil { l += f.post.Len() } return } func (f *forkableWriter) writeTo(out io.Writer) (n int, err error) { n, err = out.Write(f.Bytes()) if err != nil { return } var nn int if f.pre != nil { nn, err = f.pre.writeTo(out) n += nn if err != nil { return } } if f.post != nil { nn, err = f.post.writeTo(out) n += nn } return } func marshalBase128Int(out *forkableWriter, n int64) (err error) { if n == 0 { err = out.WriteByte(0) return } l := 0 for i := n; i > 0; i >>= 7 { l++ } for i := l - 1; i >= 0; i-- { o := byte(n >> uint(i*7)) o &= 0x7f if i != 0 { o |= 0x80 } err = out.WriteByte(o) if err != nil { return } } return nil } func marshalInt64(out *forkableWriter, i int64) (err error) { n := int64Length(i) for ; n > 0; n-- { err = out.WriteByte(byte(i >> uint((n-1)*8))) if err != nil { return } } return nil } func int64Length(i int64) (numBytes int) { numBytes = 1 for i > 127 { numBytes++ i >>= 8 } for i < -128 { numBytes++ i >>= 8 } return } func marshalBigInt(out *forkableWriter, n *big.Int) (err error) { if n.Sign() < 0 { // A negative number has to be converted to two's-complement // form. So we'll subtract 1 and invert. If the // most-significant-bit isn't set then we'll need to pad the // beginning with 0xff in order to keep the number negative. nMinus1 := new(big.Int).Neg(n) nMinus1.Sub(nMinus1, bigOne) bytes := nMinus1.Bytes() for i := range bytes { bytes[i] ^= 0xff } if len(bytes) == 0 || bytes[0]&0x80 == 0 { err = out.WriteByte(0xff) if err != nil { return } } _, err = out.Write(bytes) } else if n.Sign() == 0 { // Zero is written as a single 0 zero rather than no bytes. err = out.WriteByte(0x00) } else { bytes := n.Bytes() if len(bytes) > 0 && bytes[0]&0x80 != 0 { // We'll have to pad this with 0x00 in order to stop it // looking like a negative number. err = out.WriteByte(0) if err != nil { return } } _, err = out.Write(bytes) } return } func marshalLength(out *forkableWriter, i int) (err error) { n := lengthLength(i) for ; n > 0; n-- { err = out.WriteByte(byte(i >> uint((n-1)*8))) if err != nil { return } } return nil } func lengthLength(i int) (numBytes int) { numBytes = 1 for i > 255 { numBytes++ i >>= 8 } return } func marshalTagAndLength(out *forkableWriter, t tagAndLength) (err error) { b := uint8(t.class) << 6 if t.isCompound { b |= 0x20 } if t.tag >= 31 { b |= 0x1f err = out.WriteByte(b) if err != nil { return } err = marshalBase128Int(out, int64(t.tag)) if err != nil { return } } else { b |= uint8(t.tag) err = out.WriteByte(b) if err != nil { return } } if t.length >= 128 { l := lengthLength(t.length) err = out.WriteByte(0x80 | byte(l)) if err != nil { return } err = marshalLength(out, t.length) if err != nil { return } } else { err = out.WriteByte(byte(t.length)) if err != nil { return } } return nil } func marshalBitString(out *forkableWriter, b BitString) (err error) { paddingBits := byte((8 - b.BitLength%8) % 8) err = out.WriteByte(paddingBits) if err != nil { return } _, err = out.Write(b.Bytes) return } func marshalObjectIdentifier(out *forkableWriter, oid []int) (err error) { if len(oid) < 2 || oid[0] > 2 || (oid[0] < 2 && oid[1] >= 40) { return StructuralError{"invalid object identifier"} } err = marshalBase128Int(out, int64(oid[0]*40+oid[1])) if err != nil { return } for i := 2; i < len(oid); i++ { err = marshalBase128Int(out, int64(oid[i])) if err != nil { return } } return } func marshalPrintableString(out *forkableWriter, s string) (err error) { b := []byte(s) for _, c := range b { if !isPrintable(c) { return StructuralError{"PrintableString contains invalid character"} } } _, err = out.Write(b) return } func marshalIA5String(out *forkableWriter, s string) (err error) { b := []byte(s) for _, c := range b { if c > 127 { return StructuralError{"IA5String contains invalid character"} } } _, err = out.Write(b) return } func marshalUTF8String(out *forkableWriter, s string) (err error) { _, err = out.Write([]byte(s)) return } func marshalTwoDigits(out *forkableWriter, v int) (err error) { err = out.WriteByte(byte('0' + (v/10)%10)) if err != nil { return } return out.WriteByte(byte('0' + v%10)) } func marshalFourDigits(out *forkableWriter, v int) (err error) { var bytes [4]byte for i := range bytes { bytes[3-i] = '0' + byte(v%10) v /= 10 } _, err = out.Write(bytes[:]) return } func outsideUTCRange(t time.Time) bool { year := t.Year() return year < 1950 || year >= 2050 } func marshalUTCTime(out *forkableWriter, t time.Time) (err error) { year := t.Year() switch { case 1950 <= year && year < 2000: err = marshalTwoDigits(out, int(year-1900)) case 2000 <= year && year < 2050: err = marshalTwoDigits(out, int(year-2000)) default: return StructuralError{"cannot represent time as UTCTime"} } if err != nil { return } return marshalTimeCommon(out, t) } func marshalGeneralizedTime(out *forkableWriter, t time.Time) (err error) { year := t.Year() if year < 0 || year > 9999 { return StructuralError{"cannot represent time as GeneralizedTime"} } if err = marshalFourDigits(out, year); err != nil { return } return marshalTimeCommon(out, t) } func marshalTimeCommon(out *forkableWriter, t time.Time) (err error) { _, month, day := t.Date() err = marshalTwoDigits(out, int(month)) if err != nil { return } err = marshalTwoDigits(out, day) if err != nil { return } hour, min, sec := t.Clock() err = marshalTwoDigits(out, hour) if err != nil { return } err = marshalTwoDigits(out, min) if err != nil { return } err = marshalTwoDigits(out, sec) if err != nil { return } _, offset := t.Zone() switch { case offset/60 == 0: err = out.WriteByte('Z') return case offset > 0: err = out.WriteByte('+') case offset < 0: err = out.WriteByte('-') } if err != nil { return } offsetMinutes := offset / 60 if offsetMinutes < 0 { offsetMinutes = -offsetMinutes } err = marshalTwoDigits(out, offsetMinutes/60) if err != nil { return } err = marshalTwoDigits(out, offsetMinutes%60) return } func stripTagAndLength(in []byte) []byte { _, offset, err := parseTagAndLength(in, 0) if err != nil { return in } return in[offset:] } func marshalBody(out *forkableWriter, value reflect.Value, params fieldParameters) (err error) { switch value.Type() { case timeType: t := value.Interface().(time.Time) if outsideUTCRange(t) { return marshalGeneralizedTime(out, t) } else { return marshalUTCTime(out, t) } case bitStringType: return marshalBitString(out, value.Interface().(BitString)) case objectIdentifierType: return marshalObjectIdentifier(out, value.Interface().(ObjectIdentifier)) case bigIntType: return marshalBigInt(out, value.Interface().(*big.Int)) } switch v := value; v.Kind() { case reflect.Bool: if v.Bool() { return out.WriteByte(255) } else { return out.WriteByte(0) } case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return marshalInt64(out, int64(v.Int())) case reflect.Struct: t := v.Type() startingField := 0 // If the first element of the structure is a non-empty // RawContents, then we don't bother serializing the rest. if t.NumField() > 0 && t.Field(0).Type == rawContentsType { s := v.Field(0) if s.Len() > 0 { bytes := make([]byte, s.Len()) for i := 0; i < s.Len(); i++ { bytes[i] = uint8(s.Index(i).Uint()) } /* The RawContents will contain the tag and * length fields but we'll also be writing * those ourselves, so we strip them out of * bytes */ _, err = out.Write(stripTagAndLength(bytes)) return } else { startingField = 1 } } for i := startingField; i < t.NumField(); i++ { var pre *forkableWriter pre, out = out.fork() err = marshalField(pre, v.Field(i), parseFieldParameters(t.Field(i).Tag.Get("asn1"))) if err != nil { return } } return case reflect.Slice: sliceType := v.Type() if sliceType.Elem().Kind() == reflect.Uint8 { bytes := make([]byte, v.Len()) for i := 0; i < v.Len(); i++ { bytes[i] = uint8(v.Index(i).Uint()) } _, err = out.Write(bytes) return } var fp fieldParameters for i := 0; i < v.Len(); i++ { var pre *forkableWriter pre, out = out.fork() err = marshalField(pre, v.Index(i), fp) if err != nil { return } } return case reflect.String: switch params.stringType { case tagIA5String: return marshalIA5String(out, v.String()) case tagPrintableString: return marshalPrintableString(out, v.String()) default: return marshalUTF8String(out, v.String()) } } return StructuralError{"unknown Go type"} } func marshalField(out *forkableWriter, v reflect.Value, params fieldParameters) (err error) { // If the field is an interface{} then recurse into it. if v.Kind() == reflect.Interface && v.Type().NumMethod() == 0 { return marshalField(out, v.Elem(), params) } if v.Kind() == reflect.Slice && v.Len() == 0 && params.omitEmpty { return } if params.optional && reflect.DeepEqual(v.Interface(), reflect.Zero(v.Type()).Interface()) { return } if v.Type() == rawValueType { rv := v.Interface().(RawValue) if len(rv.FullBytes) != 0 { _, err = out.Write(rv.FullBytes) } else { err = marshalTagAndLength(out, tagAndLength{rv.Class, rv.Tag, len(rv.Bytes), rv.IsCompound}) if err != nil { return } _, err = out.Write(rv.Bytes) } return } tag, isCompound, ok := getUniversalType(v.Type()) if !ok { err = StructuralError{fmt.Sprintf("unknown Go type: %v", v.Type())} return } class := classUniversal if params.stringType != 0 && tag != tagPrintableString { return StructuralError{"explicit string type given to non-string member"} } switch tag { case tagPrintableString: if params.stringType == 0 { // This is a string without an explicit string type. We'll use // a PrintableString if the character set in the string is // sufficiently limited, otherwise we'll use a UTF8String. for _, r := range v.String() { if r >= utf8.RuneSelf || !isPrintable(byte(r)) { if !utf8.ValidString(v.String()) { return errors.New("asn1: string not valid UTF-8") } tag = tagUTF8String break } } } else { tag = params.stringType } case tagUTCTime: if outsideUTCRange(v.Interface().(time.Time)) { tag = tagGeneralizedTime } } if params.set { if tag != tagSequence { return StructuralError{"non sequence tagged as set"} } tag = tagSet } tags, body := out.fork() err = marshalBody(body, v, params) if err != nil { return } bodyLen := body.Len() var explicitTag *forkableWriter if params.explicit { explicitTag, tags = tags.fork() } if !params.explicit && params.tag != nil { // implicit tag. tag = *params.tag class = classContextSpecific } err = marshalTagAndLength(tags, tagAndLength{class, tag, bodyLen, isCompound}) if err != nil { return } if params.explicit { err = marshalTagAndLength(explicitTag, tagAndLength{ class: classContextSpecific, tag: *params.tag, length: bodyLen + tags.Len(), isCompound: true, }) } return nil } // Marshal returns the ASN.1 encoding of val. // // In addition to the struct tags recognised by Unmarshal, the following can be // used: // // ia5: causes strings to be marshaled as ASN.1, IA5 strings // omitempty: causes empty slices to be skipped // printable: causes strings to be marshaled as ASN.1, PrintableString strings. // utf8: causes strings to be marshaled as ASN.1, UTF8 strings func Marshal(val interface{}) ([]byte, error) { var out bytes.Buffer v := reflect.ValueOf(val) f := newForkableWriter() err := marshalField(f, v, fieldParameters{}) if err != nil { return nil, err } _, err = f.writeTo(&out) return out.Bytes(), nil } go/src/pkg/encoding/asn1/marshal_test.go0100644000000000000000000001001712412656737020513 0ustar00rootroot00000000000000// Copyright 2009 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 asn1 import ( "bytes" "encoding/hex" "math/big" "testing" "time" ) type intStruct struct { A int } type twoIntStruct struct { A int B int } type bigIntStruct struct { A *big.Int } type nestedStruct struct { A intStruct } type rawContentsStruct struct { Raw RawContent A int } type implicitTagTest struct { A int `asn1:"implicit,tag:5"` } type explicitTagTest struct { A int `asn1:"explicit,tag:5"` } type ia5StringTest struct { A string `asn1:"ia5"` } type printableStringTest struct { A string `asn1:"printable"` } type optionalRawValueTest struct { A RawValue `asn1:"optional"` } type omitEmptyTest struct { A []string `asn1:"omitempty"` } type testSET []int var PST = time.FixedZone("PST", -8*60*60) type marshalTest struct { in interface{} out string // hex encoded } func farFuture() time.Time { t, err := time.Parse(time.RFC3339, "2100-04-05T12:01:01Z") if err != nil { panic(err) } return t } var marshalTests = []marshalTest{ {10, "02010a"}, {127, "02017f"}, {128, "02020080"}, {-128, "020180"}, {-129, "0202ff7f"}, {intStruct{64}, "3003020140"}, {bigIntStruct{big.NewInt(0x123456)}, "30050203123456"}, {twoIntStruct{64, 65}, "3006020140020141"}, {nestedStruct{intStruct{127}}, "3005300302017f"}, {[]byte{1, 2, 3}, "0403010203"}, {implicitTagTest{64}, "3003850140"}, {explicitTagTest{64}, "3005a503020140"}, {time.Unix(0, 0).UTC(), "170d3730303130313030303030305a"}, {time.Unix(1258325776, 0).UTC(), "170d3039313131353232353631365a"}, {time.Unix(1258325776, 0).In(PST), "17113039313131353134353631362d30383030"}, {farFuture(), "180f32313030303430353132303130315a"}, {BitString{[]byte{0x80}, 1}, "03020780"}, {BitString{[]byte{0x81, 0xf0}, 12}, "03030481f0"}, {ObjectIdentifier([]int{1, 2, 3, 4}), "06032a0304"}, {ObjectIdentifier([]int{1, 2, 840, 133549, 1, 1, 5}), "06092a864888932d010105"}, {ObjectIdentifier([]int{2, 100, 3}), "0603813403"}, {"test", "130474657374"}, { "" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", // This is 127 times 'x' "137f" + "7878787878787878787878787878787878787878787878787878787878787878" + "7878787878787878787878787878787878787878787878787878787878787878" + "7878787878787878787878787878787878787878787878787878787878787878" + "78787878787878787878787878787878787878787878787878787878787878", }, { "" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", // This is 128 times 'x' "138180" + "7878787878787878787878787878787878787878787878787878787878787878" + "7878787878787878787878787878787878787878787878787878787878787878" + "7878787878787878787878787878787878787878787878787878787878787878" + "7878787878787878787878787878787878787878787878787878787878787878", }, {ia5StringTest{"test"}, "3006160474657374"}, {optionalRawValueTest{}, "3000"}, {printableStringTest{"test"}, "3006130474657374"}, {printableStringTest{"test*"}, "30071305746573742a"}, {rawContentsStruct{nil, 64}, "3003020140"}, {rawContentsStruct{[]byte{0x30, 3, 1, 2, 3}, 64}, "3003010203"}, {RawValue{Tag: 1, Class: 2, IsCompound: false, Bytes: []byte{1, 2, 3}}, "8103010203"}, {testSET([]int{10}), "310302010a"}, {omitEmptyTest{[]string{}}, "3000"}, {omitEmptyTest{[]string{"1"}}, "30053003130131"}, {"Σ", "0c02cea3"}, } func TestMarshal(t *testing.T) { for i, test := range marshalTests { data, err := Marshal(test.in) if err != nil { t.Errorf("#%d failed: %s", i, err) } out, _ := hex.DecodeString(test.out) if !bytes.Equal(out, data) { t.Errorf("#%d got: %x want %x\n\t%q\n\t%q", i, data, out, data, out) } } } func TestInvalidUTF8(t *testing.T) { _, err := Marshal(string([]byte{0xff, 0xff})) if err == nil { t.Errorf("invalid UTF8 string was accepted") } } go/src/pkg/encoding/base320040755000000000000000000000000012412656737015640 5ustar00rootroot00000000000000go/src/pkg/encoding/base32/base32.go0100644000000000000000000002357312412656737017334 0ustar00rootroot00000000000000// Copyright 2011 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 base32 implements base32 encoding as specified by RFC 4648. package base32 import ( "bytes" "io" "strconv" "strings" ) /* * Encodings */ // An Encoding is a radix 32 encoding/decoding scheme, defined by a // 32-character alphabet. The most common is the "base32" encoding // introduced for SASL GSSAPI and standardized in RFC 4648. // The alternate "base32hex" encoding is used in DNSSEC. type Encoding struct { encode string decodeMap [256]byte } const encodeStd = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" const encodeHex = "0123456789ABCDEFGHIJKLMNOPQRSTUV" // NewEncoding returns a new Encoding defined by the given alphabet, // which must be a 32-byte string. func NewEncoding(encoder string) *Encoding { e := new(Encoding) e.encode = encoder for i := 0; i < len(e.decodeMap); i++ { e.decodeMap[i] = 0xFF } for i := 0; i < len(encoder); i++ { e.decodeMap[encoder[i]] = byte(i) } return e } // StdEncoding is the standard base32 encoding, as defined in // RFC 4648. var StdEncoding = NewEncoding(encodeStd) // HexEncoding is the ``Extended Hex Alphabet'' defined in RFC 4648. // It is typically used in DNS. var HexEncoding = NewEncoding(encodeHex) var removeNewlinesMapper = func(r rune) rune { if r == '\r' || r == '\n' { return -1 } return r } /* * Encoder */ // Encode encodes src using the encoding enc, writing // EncodedLen(len(src)) bytes to dst. // // The encoding pads the output to a multiple of 8 bytes, // so Encode is not appropriate for use on individual blocks // of a large data stream. Use NewEncoder() instead. func (enc *Encoding) Encode(dst, src []byte) { if len(src) == 0 { return } for len(src) > 0 { dst[0] = 0 dst[1] = 0 dst[2] = 0 dst[3] = 0 dst[4] = 0 dst[5] = 0 dst[6] = 0 dst[7] = 0 // Unpack 8x 5-bit source blocks into a 5 byte // destination quantum switch len(src) { default: dst[7] |= src[4] & 0x1F dst[6] |= src[4] >> 5 fallthrough case 4: dst[6] |= (src[3] << 3) & 0x1F dst[5] |= (src[3] >> 2) & 0x1F dst[4] |= src[3] >> 7 fallthrough case 3: dst[4] |= (src[2] << 1) & 0x1F dst[3] |= (src[2] >> 4) & 0x1F fallthrough case 2: dst[3] |= (src[1] << 4) & 0x1F dst[2] |= (src[1] >> 1) & 0x1F dst[1] |= (src[1] >> 6) & 0x1F fallthrough case 1: dst[1] |= (src[0] << 2) & 0x1F dst[0] |= src[0] >> 3 } // Encode 5-bit blocks using the base32 alphabet for j := 0; j < 8; j++ { dst[j] = enc.encode[dst[j]] } // Pad the final quantum if len(src) < 5 { dst[7] = '=' if len(src) < 4 { dst[6] = '=' dst[5] = '=' if len(src) < 3 { dst[4] = '=' if len(src) < 2 { dst[3] = '=' dst[2] = '=' } } } break } src = src[5:] dst = dst[8:] } } // EncodeToString returns the base32 encoding of src. func (enc *Encoding) EncodeToString(src []byte) string { buf := make([]byte, enc.EncodedLen(len(src))) enc.Encode(buf, src) return string(buf) } type encoder struct { err error enc *Encoding w io.Writer buf [5]byte // buffered data waiting to be encoded nbuf int // number of bytes in buf out [1024]byte // output buffer } func (e *encoder) Write(p []byte) (n int, err error) { if e.err != nil { return 0, e.err } // Leading fringe. if e.nbuf > 0 { var i int for i = 0; i < len(p) && e.nbuf < 5; i++ { e.buf[e.nbuf] = p[i] e.nbuf++ } n += i p = p[i:] if e.nbuf < 5 { return } e.enc.Encode(e.out[0:], e.buf[0:]) if _, e.err = e.w.Write(e.out[0:8]); e.err != nil { return n, e.err } e.nbuf = 0 } // Large interior chunks. for len(p) >= 5 { nn := len(e.out) / 8 * 5 if nn > len(p) { nn = len(p) nn -= nn % 5 } e.enc.Encode(e.out[0:], p[0:nn]) if _, e.err = e.w.Write(e.out[0 : nn/5*8]); e.err != nil { return n, e.err } n += nn p = p[nn:] } // Trailing fringe. for i := 0; i < len(p); i++ { e.buf[i] = p[i] } e.nbuf = len(p) n += len(p) return } // Close flushes any pending output from the encoder. // It is an error to call Write after calling Close. func (e *encoder) Close() error { // If there's anything left in the buffer, flush it out if e.err == nil && e.nbuf > 0 { e.enc.Encode(e.out[0:], e.buf[0:e.nbuf]) e.nbuf = 0 _, e.err = e.w.Write(e.out[0:8]) } return e.err } // NewEncoder returns a new base32 stream encoder. Data written to // the returned writer will be encoded using enc and then written to w. // Base32 encodings operate in 5-byte blocks; when finished // writing, the caller must Close the returned encoder to flush any // partially written blocks. func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser { return &encoder{enc: enc, w: w} } // EncodedLen returns the length in bytes of the base32 encoding // of an input buffer of length n. func (enc *Encoding) EncodedLen(n int) int { return (n + 4) / 5 * 8 } /* * Decoder */ type CorruptInputError int64 func (e CorruptInputError) Error() string { return "illegal base32 data at input byte " + strconv.FormatInt(int64(e), 10) } // decode is like Decode but returns an additional 'end' value, which // indicates if end-of-message padding was encountered and thus any // additional data is an error. This method assumes that src has been // stripped of all supported whitespace ('\r' and '\n'). func (enc *Encoding) decode(dst, src []byte) (n int, end bool, err error) { olen := len(src) for len(src) > 0 && !end { // Decode quantum using the base32 alphabet var dbuf [8]byte dlen := 8 for j := 0; j < 8; { if len(src) == 0 { return n, false, CorruptInputError(olen - len(src) - j) } in := src[0] src = src[1:] if in == '=' && j >= 2 && len(src) < 8 { // We've reached the end and there's padding if len(src)+j < 8-1 { // not enough padding return n, false, CorruptInputError(olen) } for k := 0; k < 8-1-j; k++ { if len(src) > k && src[k] != '=' { // incorrect padding return n, false, CorruptInputError(olen - len(src) + k - 1) } } dlen, end = j, true // 7, 5 and 2 are not valid padding lengths, and so 1, 3 and 6 are not // valid dlen values. See RFC 4648 Section 6 "Base 32 Encoding" listing // the five valid padding lengths, and Section 9 "Illustrations and // Examples" for an illustration for how the 1st, 3rd and 6th base32 // src bytes do not yield enough information to decode a dst byte. if dlen == 1 || dlen == 3 || dlen == 6 { return n, false, CorruptInputError(olen - len(src) - 1) } break } dbuf[j] = enc.decodeMap[in] if dbuf[j] == 0xFF { return n, false, CorruptInputError(olen - len(src) - 1) } j++ } // Pack 8x 5-bit source blocks into 5 byte destination // quantum switch dlen { case 8: dst[4] = dbuf[6]<<5 | dbuf[7] fallthrough case 7: dst[3] = dbuf[4]<<7 | dbuf[5]<<2 | dbuf[6]>>3 fallthrough case 5: dst[2] = dbuf[3]<<4 | dbuf[4]>>1 fallthrough case 4: dst[1] = dbuf[1]<<6 | dbuf[2]<<1 | dbuf[3]>>4 fallthrough case 2: dst[0] = dbuf[0]<<3 | dbuf[1]>>2 } dst = dst[5:] switch dlen { case 2: n += 1 case 4: n += 2 case 5: n += 3 case 7: n += 4 case 8: n += 5 } } return n, end, nil } // Decode decodes src using the encoding enc. It writes at most // DecodedLen(len(src)) bytes to dst and returns the number of bytes // written. If src contains invalid base32 data, it will return the // number of bytes successfully written and CorruptInputError. // New line characters (\r and \n) are ignored. func (enc *Encoding) Decode(dst, src []byte) (n int, err error) { src = bytes.Map(removeNewlinesMapper, src) n, _, err = enc.decode(dst, src) return } // DecodeString returns the bytes represented by the base32 string s. func (enc *Encoding) DecodeString(s string) ([]byte, error) { s = strings.Map(removeNewlinesMapper, s) dbuf := make([]byte, enc.DecodedLen(len(s))) n, err := enc.Decode(dbuf, []byte(s)) return dbuf[:n], err } type decoder struct { err error enc *Encoding r io.Reader end bool // saw end of message buf [1024]byte // leftover input nbuf int out []byte // leftover decoded output outbuf [1024 / 8 * 5]byte } func (d *decoder) Read(p []byte) (n int, err error) { if d.err != nil { return 0, d.err } // Use leftover decoded output from last read. if len(d.out) > 0 { n = copy(p, d.out) d.out = d.out[n:] return n, nil } // Read a chunk. nn := len(p) / 5 * 8 if nn < 8 { nn = 8 } if nn > len(d.buf) { nn = len(d.buf) } nn, d.err = io.ReadAtLeast(d.r, d.buf[d.nbuf:nn], 8-d.nbuf) d.nbuf += nn if d.nbuf < 8 { return 0, d.err } // Decode chunk into p, or d.out and then p if p is too small. nr := d.nbuf / 8 * 8 nw := d.nbuf / 8 * 5 if nw > len(p) { nw, d.end, d.err = d.enc.decode(d.outbuf[0:], d.buf[0:nr]) d.out = d.outbuf[0:nw] n = copy(p, d.out) d.out = d.out[n:] } else { n, d.end, d.err = d.enc.decode(p, d.buf[0:nr]) } d.nbuf -= nr for i := 0; i < d.nbuf; i++ { d.buf[i] = d.buf[i+nr] } if d.err == nil { d.err = err } return n, d.err } type newlineFilteringReader struct { wrapped io.Reader } func (r *newlineFilteringReader) Read(p []byte) (int, error) { n, err := r.wrapped.Read(p) for n > 0 { offset := 0 for i, b := range p[0:n] { if b != '\r' && b != '\n' { if i != offset { p[offset] = b } offset++ } } if offset > 0 { return offset, err } // Previous buffer entirely whitespace, read again n, err = r.wrapped.Read(p) } return n, err } // NewDecoder constructs a new base32 stream decoder. func NewDecoder(enc *Encoding, r io.Reader) io.Reader { return &decoder{enc: enc, r: &newlineFilteringReader{r}} } // DecodedLen returns the maximum length in bytes of the decoded data // corresponding to n bytes of base32-encoded data. func (enc *Encoding) DecodedLen(n int) int { return n / 8 * 5 } go/src/pkg/encoding/base32/base32_test.go0100644000000000000000000001770512412656737020373 0ustar00rootroot00000000000000// Copyright 2009 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 base32 import ( "bytes" "io" "io/ioutil" "strings" "testing" ) type testpair struct { decoded, encoded string } var pairs = []testpair{ // RFC 4648 examples {"", ""}, {"f", "MY======"}, {"fo", "MZXQ===="}, {"foo", "MZXW6==="}, {"foob", "MZXW6YQ="}, {"fooba", "MZXW6YTB"}, {"foobar", "MZXW6YTBOI======"}, // Wikipedia examples, converted to base32 {"sure.", "ON2XEZJO"}, {"sure", "ON2XEZI="}, {"sur", "ON2XE==="}, {"su", "ON2Q===="}, {"leasure.", "NRSWC43VOJSS4==="}, {"easure.", "MVQXG5LSMUXA===="}, {"asure.", "MFZXK4TFFY======"}, {"sure.", "ON2XEZJO"}, } var bigtest = testpair{ "Twas brillig, and the slithy toves", "KR3WC4ZAMJZGS3DMNFTSYIDBNZSCA5DIMUQHG3DJORUHSIDUN53GK4Y=", } func testEqual(t *testing.T, msg string, args ...interface{}) bool { if args[len(args)-2] != args[len(args)-1] { t.Errorf(msg, args...) return false } return true } func TestEncode(t *testing.T) { for _, p := range pairs { got := StdEncoding.EncodeToString([]byte(p.decoded)) testEqual(t, "Encode(%q) = %q, want %q", p.decoded, got, p.encoded) } } func TestEncoder(t *testing.T) { for _, p := range pairs { bb := &bytes.Buffer{} encoder := NewEncoder(StdEncoding, bb) encoder.Write([]byte(p.decoded)) encoder.Close() testEqual(t, "Encode(%q) = %q, want %q", p.decoded, bb.String(), p.encoded) } } func TestEncoderBuffering(t *testing.T) { input := []byte(bigtest.decoded) for bs := 1; bs <= 12; bs++ { bb := &bytes.Buffer{} encoder := NewEncoder(StdEncoding, bb) for pos := 0; pos < len(input); pos += bs { end := pos + bs if end > len(input) { end = len(input) } n, err := encoder.Write(input[pos:end]) testEqual(t, "Write(%q) gave error %v, want %v", input[pos:end], err, error(nil)) testEqual(t, "Write(%q) gave length %v, want %v", input[pos:end], n, end-pos) } err := encoder.Close() testEqual(t, "Close gave error %v, want %v", err, error(nil)) testEqual(t, "Encoding/%d of %q = %q, want %q", bs, bigtest.decoded, bb.String(), bigtest.encoded) } } func TestDecode(t *testing.T) { for _, p := range pairs { dbuf := make([]byte, StdEncoding.DecodedLen(len(p.encoded))) count, end, err := StdEncoding.decode(dbuf, []byte(p.encoded)) testEqual(t, "Decode(%q) = error %v, want %v", p.encoded, err, error(nil)) testEqual(t, "Decode(%q) = length %v, want %v", p.encoded, count, len(p.decoded)) if len(p.encoded) > 0 { testEqual(t, "Decode(%q) = end %v, want %v", p.encoded, end, (p.encoded[len(p.encoded)-1] == '=')) } testEqual(t, "Decode(%q) = %q, want %q", p.encoded, string(dbuf[0:count]), p.decoded) dbuf, err = StdEncoding.DecodeString(p.encoded) testEqual(t, "DecodeString(%q) = error %v, want %v", p.encoded, err, error(nil)) testEqual(t, "DecodeString(%q) = %q, want %q", p.encoded, string(dbuf), p.decoded) } } func TestDecoder(t *testing.T) { for _, p := range pairs { decoder := NewDecoder(StdEncoding, strings.NewReader(p.encoded)) dbuf := make([]byte, StdEncoding.DecodedLen(len(p.encoded))) count, err := decoder.Read(dbuf) if err != nil && err != io.EOF { t.Fatal("Read failed", err) } testEqual(t, "Read from %q = length %v, want %v", p.encoded, count, len(p.decoded)) testEqual(t, "Decoding of %q = %q, want %q", p.encoded, string(dbuf[0:count]), p.decoded) if err != io.EOF { count, err = decoder.Read(dbuf) } testEqual(t, "Read from %q = %v, want %v", p.encoded, err, io.EOF) } } func TestDecoderBuffering(t *testing.T) { for bs := 1; bs <= 12; bs++ { decoder := NewDecoder(StdEncoding, strings.NewReader(bigtest.encoded)) buf := make([]byte, len(bigtest.decoded)+12) var total int for total = 0; total < len(bigtest.decoded); { n, err := decoder.Read(buf[total : total+bs]) testEqual(t, "Read from %q at pos %d = %d, %v, want _, %v", bigtest.encoded, total, n, err, error(nil)) total += n } testEqual(t, "Decoding/%d of %q = %q, want %q", bs, bigtest.encoded, string(buf[0:total]), bigtest.decoded) } } func TestDecodeCorrupt(t *testing.T) { testCases := []struct { input string offset int // -1 means no corruption. }{ {"", -1}, {"!!!!", 0}, {"x===", 0}, {"AA=A====", 2}, {"AAA=AAAA", 3}, {"MMMMMMMMM", 8}, {"MMMMMM", 0}, {"A=", 1}, {"AA=", 3}, {"AA==", 4}, {"AA===", 5}, {"AAAA=", 5}, {"AAAA==", 6}, {"AAAAA=", 6}, {"AAAAA==", 7}, {"A=======", 1}, {"AA======", -1}, {"AAA=====", 3}, {"AAAA====", -1}, {"AAAAA===", -1}, {"AAAAAA==", 6}, {"AAAAAAA=", -1}, {"AAAAAAAA", -1}, } for _, tc := range testCases { dbuf := make([]byte, StdEncoding.DecodedLen(len(tc.input))) _, err := StdEncoding.Decode(dbuf, []byte(tc.input)) if tc.offset == -1 { if err != nil { t.Error("Decoder wrongly detected coruption in", tc.input) } continue } switch err := err.(type) { case CorruptInputError: testEqual(t, "Corruption in %q at offset %v, want %v", tc.input, int(err), tc.offset) default: t.Error("Decoder failed to detect corruption in", tc) } } } func TestBig(t *testing.T) { n := 3*1000 + 1 raw := make([]byte, n) const alpha = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" for i := 0; i < n; i++ { raw[i] = alpha[i%len(alpha)] } encoded := new(bytes.Buffer) w := NewEncoder(StdEncoding, encoded) nn, err := w.Write(raw) if nn != n || err != nil { t.Fatalf("Encoder.Write(raw) = %d, %v want %d, nil", nn, err, n) } err = w.Close() if err != nil { t.Fatalf("Encoder.Close() = %v want nil", err) } decoded, err := ioutil.ReadAll(NewDecoder(StdEncoding, encoded)) if err != nil { t.Fatalf("ioutil.ReadAll(NewDecoder(...)): %v", err) } if !bytes.Equal(raw, decoded) { var i int for i = 0; i < len(decoded) && i < len(raw); i++ { if decoded[i] != raw[i] { break } } t.Errorf("Decode(Encode(%d-byte string)) failed at offset %d", n, i) } } func testStringEncoding(t *testing.T, expected string, examples []string) { for _, e := range examples { buf, err := StdEncoding.DecodeString(e) if err != nil { t.Errorf("Decode(%q) failed: %v", e, err) continue } if s := string(buf); s != expected { t.Errorf("Decode(%q) = %q, want %q", e, s, expected) } } } func TestNewLineCharacters(t *testing.T) { // Each of these should decode to the string "sure", without errors. examples := []string{ "ON2XEZI=", "ON2XEZI=\r", "ON2XEZI=\n", "ON2XEZI=\r\n", "ON2XEZ\r\nI=", "ON2X\rEZ\nI=", "ON2X\nEZ\rI=", "ON2XEZ\nI=", "ON2XEZI\n=", } testStringEncoding(t, "sure", examples) // Each of these should decode to the string "foobar", without errors. examples = []string{ "MZXW6YTBOI======", "MZXW6YTBOI=\r\n=====", } testStringEncoding(t, "foobar", examples) } func TestDecoderIssue4779(t *testing.T) { encoded := `JRXXEZLNEBUXA43VNUQGI33MN5ZCA43JOQQGC3LFOQWCAY3PNZZWKY3UMV2HK4 RAMFSGS4DJONUWG2LOM4QGK3DJOQWCA43FMQQGI3YKMVUXK43NN5SCA5DFNVYG64RANFXGG2LENFSH K3TUEB2XIIDMMFRG64TFEBSXIIDEN5WG64TFEBWWCZ3OMEQGC3DJOF2WCLRAKV2CAZLONFWQUYLEEB WWS3TJNUQHMZLONFQW2LBAOF2WS4ZANZXXG5DSOVSCAZLYMVZGG2LUMF2GS33OEB2WY3DBNVRW6IDM MFRG64TJOMQG42LTNEQHK5AKMFWGS4LVNFYCAZLYEBSWCIDDN5WW233EN4QGG33OONSXC5LBOQXCAR DVNFZSAYLVORSSA2LSOVZGKIDEN5WG64RANFXAU4TFOBZGK2DFNZSGK4TJOQQGS3RAOZXWY5LQORQX IZJAOZSWY2LUEBSXG43FEBRWS3DMOVWSAZDPNRXXEZJAMV2SAZTVM5UWC5BANZ2WY3DBBJYGC4TJMF 2HK4ROEBCXQY3FOB2GK5LSEBZWS3TUEBXWGY3BMVRWC5BAMN2XA2LEMF2GC5BANZXW4IDQOJXWSZDF NZ2CYIDTOVXHIIDJNYFGG5LMOBQSA4LVNEQG6ZTGNFRWSYJAMRSXGZLSOVXHIIDNN5WGY2LUEBQW42 LNEBUWIIDFON2CA3DBMJXXE5LNFY== ====` encodedShort := strings.Replace(encoded, "\n", "", -1) dec := NewDecoder(StdEncoding, strings.NewReader(encoded)) res1, err := ioutil.ReadAll(dec) if err != nil { t.Errorf("ReadAll failed: %v", err) } dec = NewDecoder(StdEncoding, strings.NewReader(encodedShort)) var res2 []byte res2, err = ioutil.ReadAll(dec) if err != nil { t.Errorf("ReadAll failed: %v", err) } if !bytes.Equal(res1, res2) { t.Error("Decoded results not equal") } } go/src/pkg/encoding/base32/example_test.go0100644000000000000000000000211412412656737020733 0ustar00rootroot00000000000000// 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. // Keep in sync with ../base64/example_test.go. package base32_test import ( "encoding/base32" "fmt" "os" ) func ExampleEncoding_EncodeToString() { data := []byte("any + old & data") str := base32.StdEncoding.EncodeToString(data) fmt.Println(str) // Output: // MFXHSIBLEBXWYZBAEYQGIYLUME====== } func ExampleEncoding_DecodeString() { str := "ONXW2ZJAMRQXIYJAO5UXI2BAAAQGC3TEEDX3XPY=" data, err := base32.StdEncoding.DecodeString(str) if err != nil { fmt.Println("error:", err) return } fmt.Printf("%q\n", data) // Output: // "some data with \x00 and \ufeff" } func ExampleNewEncoder() { input := []byte("foo\x00bar") encoder := base32.NewEncoder(base32.StdEncoding, os.Stdout) encoder.Write(input) // Must close the encoder when finished to flush any partial blocks. // If you comment out the following line, the last partial block "r" // won't be encoded. encoder.Close() // Output: // MZXW6ADCMFZA==== } go/src/pkg/encoding/base640040755000000000000000000000000012412656737015645 5ustar00rootroot00000000000000go/src/pkg/encoding/base64/base64.go0100644000000000000000000002220112412656737017331 0ustar00rootroot00000000000000// Copyright 2009 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 base64 implements base64 encoding as specified by RFC 4648. package base64 import ( "bytes" "io" "strconv" "strings" ) /* * Encodings */ // An Encoding is a radix 64 encoding/decoding scheme, defined by a // 64-character alphabet. The most common encoding is the "base64" // encoding defined in RFC 4648 and used in MIME (RFC 2045) and PEM // (RFC 1421). RFC 4648 also defines an alternate encoding, which is // the standard encoding with - and _ substituted for + and /. type Encoding struct { encode string decodeMap [256]byte } const encodeStd = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" const encodeURL = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" // NewEncoding returns a new Encoding defined by the given alphabet, // which must be a 64-byte string. func NewEncoding(encoder string) *Encoding { e := new(Encoding) e.encode = encoder for i := 0; i < len(e.decodeMap); i++ { e.decodeMap[i] = 0xFF } for i := 0; i < len(encoder); i++ { e.decodeMap[encoder[i]] = byte(i) } return e } // StdEncoding is the standard base64 encoding, as defined in // RFC 4648. var StdEncoding = NewEncoding(encodeStd) // URLEncoding is the alternate base64 encoding defined in RFC 4648. // It is typically used in URLs and file names. var URLEncoding = NewEncoding(encodeURL) var removeNewlinesMapper = func(r rune) rune { if r == '\r' || r == '\n' { return -1 } return r } /* * Encoder */ // Encode encodes src using the encoding enc, writing // EncodedLen(len(src)) bytes to dst. // // The encoding pads the output to a multiple of 4 bytes, // so Encode is not appropriate for use on individual blocks // of a large data stream. Use NewEncoder() instead. func (enc *Encoding) Encode(dst, src []byte) { if len(src) == 0 { return } for len(src) > 0 { dst[0] = 0 dst[1] = 0 dst[2] = 0 dst[3] = 0 // Unpack 4x 6-bit source blocks into a 4 byte // destination quantum switch len(src) { default: dst[3] |= src[2] & 0x3F dst[2] |= src[2] >> 6 fallthrough case 2: dst[2] |= (src[1] << 2) & 0x3F dst[1] |= src[1] >> 4 fallthrough case 1: dst[1] |= (src[0] << 4) & 0x3F dst[0] |= src[0] >> 2 } // Encode 6-bit blocks using the base64 alphabet for j := 0; j < 4; j++ { dst[j] = enc.encode[dst[j]] } // Pad the final quantum if len(src) < 3 { dst[3] = '=' if len(src) < 2 { dst[2] = '=' } break } src = src[3:] dst = dst[4:] } } // EncodeToString returns the base64 encoding of src. func (enc *Encoding) EncodeToString(src []byte) string { buf := make([]byte, enc.EncodedLen(len(src))) enc.Encode(buf, src) return string(buf) } type encoder struct { err error enc *Encoding w io.Writer buf [3]byte // buffered data waiting to be encoded nbuf int // number of bytes in buf out [1024]byte // output buffer } func (e *encoder) Write(p []byte) (n int, err error) { if e.err != nil { return 0, e.err } // Leading fringe. if e.nbuf > 0 { var i int for i = 0; i < len(p) && e.nbuf < 3; i++ { e.buf[e.nbuf] = p[i] e.nbuf++ } n += i p = p[i:] if e.nbuf < 3 { return } e.enc.Encode(e.out[0:], e.buf[0:]) if _, e.err = e.w.Write(e.out[0:4]); e.err != nil { return n, e.err } e.nbuf = 0 } // Large interior chunks. for len(p) >= 3 { nn := len(e.out) / 4 * 3 if nn > len(p) { nn = len(p) nn -= nn % 3 } e.enc.Encode(e.out[0:], p[0:nn]) if _, e.err = e.w.Write(e.out[0 : nn/3*4]); e.err != nil { return n, e.err } n += nn p = p[nn:] } // Trailing fringe. for i := 0; i < len(p); i++ { e.buf[i] = p[i] } e.nbuf = len(p) n += len(p) return } // Close flushes any pending output from the encoder. // It is an error to call Write after calling Close. func (e *encoder) Close() error { // If there's anything left in the buffer, flush it out if e.err == nil && e.nbuf > 0 { e.enc.Encode(e.out[0:], e.buf[0:e.nbuf]) e.nbuf = 0 _, e.err = e.w.Write(e.out[0:4]) } return e.err } // NewEncoder returns a new base64 stream encoder. Data written to // the returned writer will be encoded using enc and then written to w. // Base64 encodings operate in 4-byte blocks; when finished // writing, the caller must Close the returned encoder to flush any // partially written blocks. func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser { return &encoder{enc: enc, w: w} } // EncodedLen returns the length in bytes of the base64 encoding // of an input buffer of length n. func (enc *Encoding) EncodedLen(n int) int { return (n + 2) / 3 * 4 } /* * Decoder */ type CorruptInputError int64 func (e CorruptInputError) Error() string { return "illegal base64 data at input byte " + strconv.FormatInt(int64(e), 10) } // decode is like Decode but returns an additional 'end' value, which // indicates if end-of-message padding was encountered and thus any // additional data is an error. This method assumes that src has been // stripped of all supported whitespace ('\r' and '\n'). func (enc *Encoding) decode(dst, src []byte) (n int, end bool, err error) { olen := len(src) for len(src) > 0 && !end { // Decode quantum using the base64 alphabet var dbuf [4]byte dlen := 4 for j := range dbuf { if len(src) == 0 { return n, false, CorruptInputError(olen - len(src) - j) } in := src[0] src = src[1:] if in == '=' { // We've reached the end and there's padding switch j { case 0, 1: // incorrect padding return n, false, CorruptInputError(olen - len(src) - 1) case 2: // "==" is expected, the first "=" is already consumed. if len(src) == 0 { // not enough padding return n, false, CorruptInputError(olen) } if src[0] != '=' { // incorrect padding return n, false, CorruptInputError(olen - len(src) - 1) } src = src[1:] } if len(src) > 0 { // trailing garbage err = CorruptInputError(olen - len(src)) } dlen, end = j, true break } dbuf[j] = enc.decodeMap[in] if dbuf[j] == 0xFF { return n, false, CorruptInputError(olen - len(src) - 1) } } // Pack 4x 6-bit source blocks into 3 byte destination // quantum switch dlen { case 4: dst[2] = dbuf[2]<<6 | dbuf[3] fallthrough case 3: dst[1] = dbuf[1]<<4 | dbuf[2]>>2 fallthrough case 2: dst[0] = dbuf[0]<<2 | dbuf[1]>>4 } dst = dst[3:] n += dlen - 1 } return n, end, err } // Decode decodes src using the encoding enc. It writes at most // DecodedLen(len(src)) bytes to dst and returns the number of bytes // written. If src contains invalid base64 data, it will return the // number of bytes successfully written and CorruptInputError. // New line characters (\r and \n) are ignored. func (enc *Encoding) Decode(dst, src []byte) (n int, err error) { src = bytes.Map(removeNewlinesMapper, src) n, _, err = enc.decode(dst, src) return } // DecodeString returns the bytes represented by the base64 string s. func (enc *Encoding) DecodeString(s string) ([]byte, error) { s = strings.Map(removeNewlinesMapper, s) dbuf := make([]byte, enc.DecodedLen(len(s))) n, err := enc.Decode(dbuf, []byte(s)) return dbuf[:n], err } type decoder struct { err error enc *Encoding r io.Reader end bool // saw end of message buf [1024]byte // leftover input nbuf int out []byte // leftover decoded output outbuf [1024 / 4 * 3]byte } func (d *decoder) Read(p []byte) (n int, err error) { if d.err != nil { return 0, d.err } // Use leftover decoded output from last read. if len(d.out) > 0 { n = copy(p, d.out) d.out = d.out[n:] return n, nil } // Read a chunk. nn := len(p) / 3 * 4 if nn < 4 { nn = 4 } if nn > len(d.buf) { nn = len(d.buf) } nn, d.err = io.ReadAtLeast(d.r, d.buf[d.nbuf:nn], 4-d.nbuf) d.nbuf += nn if d.err != nil || d.nbuf < 4 { return 0, d.err } // Decode chunk into p, or d.out and then p if p is too small. nr := d.nbuf / 4 * 4 nw := d.nbuf / 4 * 3 if nw > len(p) { nw, d.end, d.err = d.enc.decode(d.outbuf[0:], d.buf[0:nr]) d.out = d.outbuf[0:nw] n = copy(p, d.out) d.out = d.out[n:] } else { n, d.end, d.err = d.enc.decode(p, d.buf[0:nr]) } d.nbuf -= nr for i := 0; i < d.nbuf; i++ { d.buf[i] = d.buf[i+nr] } if d.err == nil { d.err = err } return n, d.err } type newlineFilteringReader struct { wrapped io.Reader } func (r *newlineFilteringReader) Read(p []byte) (int, error) { n, err := r.wrapped.Read(p) for n > 0 { offset := 0 for i, b := range p[0:n] { if b != '\r' && b != '\n' { if i != offset { p[offset] = b } offset++ } } if offset > 0 { return offset, err } // Previous buffer entirely whitespace, read again n, err = r.wrapped.Read(p) } return n, err } // NewDecoder constructs a new base64 stream decoder. func NewDecoder(enc *Encoding, r io.Reader) io.Reader { return &decoder{enc: enc, r: &newlineFilteringReader{r}} } // DecodedLen returns the maximum length in bytes of the decoded data // corresponding to n bytes of base64-encoded data. func (enc *Encoding) DecodedLen(n int) int { return n / 4 * 3 } go/src/pkg/encoding/base64/base64_test.go0100644000000000000000000002262712412656737020404 0ustar00rootroot00000000000000// Copyright 2009 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 base64 import ( "bytes" "errors" "io" "io/ioutil" "reflect" "strings" "testing" "time" ) type testpair struct { decoded, encoded string } var pairs = []testpair{ // RFC 3548 examples {"\x14\xfb\x9c\x03\xd9\x7e", "FPucA9l+"}, {"\x14\xfb\x9c\x03\xd9", "FPucA9k="}, {"\x14\xfb\x9c\x03", "FPucAw=="}, // RFC 4648 examples {"", ""}, {"f", "Zg=="}, {"fo", "Zm8="}, {"foo", "Zm9v"}, {"foob", "Zm9vYg=="}, {"fooba", "Zm9vYmE="}, {"foobar", "Zm9vYmFy"}, // Wikipedia examples {"sure.", "c3VyZS4="}, {"sure", "c3VyZQ=="}, {"sur", "c3Vy"}, {"su", "c3U="}, {"leasure.", "bGVhc3VyZS4="}, {"easure.", "ZWFzdXJlLg=="}, {"asure.", "YXN1cmUu"}, {"sure.", "c3VyZS4="}, } var bigtest = testpair{ "Twas brillig, and the slithy toves", "VHdhcyBicmlsbGlnLCBhbmQgdGhlIHNsaXRoeSB0b3Zlcw==", } func testEqual(t *testing.T, msg string, args ...interface{}) bool { if args[len(args)-2] != args[len(args)-1] { t.Errorf(msg, args...) return false } return true } func TestEncode(t *testing.T) { for _, p := range pairs { got := StdEncoding.EncodeToString([]byte(p.decoded)) testEqual(t, "Encode(%q) = %q, want %q", p.decoded, got, p.encoded) } } func TestEncoder(t *testing.T) { for _, p := range pairs { bb := &bytes.Buffer{} encoder := NewEncoder(StdEncoding, bb) encoder.Write([]byte(p.decoded)) encoder.Close() testEqual(t, "Encode(%q) = %q, want %q", p.decoded, bb.String(), p.encoded) } } func TestEncoderBuffering(t *testing.T) { input := []byte(bigtest.decoded) for bs := 1; bs <= 12; bs++ { bb := &bytes.Buffer{} encoder := NewEncoder(StdEncoding, bb) for pos := 0; pos < len(input); pos += bs { end := pos + bs if end > len(input) { end = len(input) } n, err := encoder.Write(input[pos:end]) testEqual(t, "Write(%q) gave error %v, want %v", input[pos:end], err, error(nil)) testEqual(t, "Write(%q) gave length %v, want %v", input[pos:end], n, end-pos) } err := encoder.Close() testEqual(t, "Close gave error %v, want %v", err, error(nil)) testEqual(t, "Encoding/%d of %q = %q, want %q", bs, bigtest.decoded, bb.String(), bigtest.encoded) } } func TestDecode(t *testing.T) { for _, p := range pairs { dbuf := make([]byte, StdEncoding.DecodedLen(len(p.encoded))) count, end, err := StdEncoding.decode(dbuf, []byte(p.encoded)) testEqual(t, "Decode(%q) = error %v, want %v", p.encoded, err, error(nil)) testEqual(t, "Decode(%q) = length %v, want %v", p.encoded, count, len(p.decoded)) if len(p.encoded) > 0 { testEqual(t, "Decode(%q) = end %v, want %v", p.encoded, end, (p.encoded[len(p.encoded)-1] == '=')) } testEqual(t, "Decode(%q) = %q, want %q", p.encoded, string(dbuf[0:count]), p.decoded) dbuf, err = StdEncoding.DecodeString(p.encoded) testEqual(t, "DecodeString(%q) = error %v, want %v", p.encoded, err, error(nil)) testEqual(t, "DecodeString(%q) = %q, want %q", string(dbuf), p.decoded) } } func TestDecoder(t *testing.T) { for _, p := range pairs { decoder := NewDecoder(StdEncoding, strings.NewReader(p.encoded)) dbuf := make([]byte, StdEncoding.DecodedLen(len(p.encoded))) count, err := decoder.Read(dbuf) if err != nil && err != io.EOF { t.Fatal("Read failed", err) } testEqual(t, "Read from %q = length %v, want %v", p.encoded, count, len(p.decoded)) testEqual(t, "Decoding of %q = %q, want %q", p.encoded, string(dbuf[0:count]), p.decoded) if err != io.EOF { count, err = decoder.Read(dbuf) } testEqual(t, "Read from %q = %v, want %v", p.encoded, err, io.EOF) } } func TestDecoderBuffering(t *testing.T) { for bs := 1; bs <= 12; bs++ { decoder := NewDecoder(StdEncoding, strings.NewReader(bigtest.encoded)) buf := make([]byte, len(bigtest.decoded)+12) var total int for total = 0; total < len(bigtest.decoded); { n, err := decoder.Read(buf[total : total+bs]) testEqual(t, "Read from %q at pos %d = %d, %v, want _, %v", bigtest.encoded, total, n, err, error(nil)) total += n } testEqual(t, "Decoding/%d of %q = %q, want %q", bs, bigtest.encoded, string(buf[0:total]), bigtest.decoded) } } func TestDecodeCorrupt(t *testing.T) { testCases := []struct { input string offset int // -1 means no corruption. }{ {"", -1}, {"!!!!", 0}, {"====", 0}, {"x===", 1}, {"=AAA", 0}, {"A=AA", 1}, {"AA=A", 2}, {"AA==A", 4}, {"AAA=AAAA", 4}, {"AAAAA", 4}, {"AAAAAA", 4}, {"A=", 1}, {"A==", 1}, {"AA=", 3}, {"AA==", -1}, {"AAA=", -1}, {"AAAA", -1}, {"AAAAAA=", 7}, {"YWJjZA=====", 8}, } for _, tc := range testCases { dbuf := make([]byte, StdEncoding.DecodedLen(len(tc.input))) _, err := StdEncoding.Decode(dbuf, []byte(tc.input)) if tc.offset == -1 { if err != nil { t.Error("Decoder wrongly detected coruption in", tc.input) } continue } switch err := err.(type) { case CorruptInputError: testEqual(t, "Corruption in %q at offset %v, want %v", tc.input, int(err), tc.offset) default: t.Error("Decoder failed to detect corruption in", tc) } } } func TestBig(t *testing.T) { n := 3*1000 + 1 raw := make([]byte, n) const alpha = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" for i := 0; i < n; i++ { raw[i] = alpha[i%len(alpha)] } encoded := new(bytes.Buffer) w := NewEncoder(StdEncoding, encoded) nn, err := w.Write(raw) if nn != n || err != nil { t.Fatalf("Encoder.Write(raw) = %d, %v want %d, nil", nn, err, n) } err = w.Close() if err != nil { t.Fatalf("Encoder.Close() = %v want nil", err) } decoded, err := ioutil.ReadAll(NewDecoder(StdEncoding, encoded)) if err != nil { t.Fatalf("ioutil.ReadAll(NewDecoder(...)): %v", err) } if !bytes.Equal(raw, decoded) { var i int for i = 0; i < len(decoded) && i < len(raw); i++ { if decoded[i] != raw[i] { break } } t.Errorf("Decode(Encode(%d-byte string)) failed at offset %d", n, i) } } func TestNewLineCharacters(t *testing.T) { // Each of these should decode to the string "sure", without errors. const expected = "sure" examples := []string{ "c3VyZQ==", "c3VyZQ==\r", "c3VyZQ==\n", "c3VyZQ==\r\n", "c3VyZ\r\nQ==", "c3V\ryZ\nQ==", "c3V\nyZ\rQ==", "c3VyZ\nQ==", "c3VyZQ\n==", "c3VyZQ=\n=", "c3VyZQ=\r\n\r\n=", } for _, e := range examples { buf, err := StdEncoding.DecodeString(e) if err != nil { t.Errorf("Decode(%q) failed: %v", e, err) continue } if s := string(buf); s != expected { t.Errorf("Decode(%q) = %q, want %q", e, s, expected) } } } type nextRead struct { n int // bytes to return err error // error to return } // faultInjectReader returns data from source, rate-limited // and with the errors as written to nextc. type faultInjectReader struct { source string nextc <-chan nextRead } func (r *faultInjectReader) Read(p []byte) (int, error) { nr := <-r.nextc if len(p) > nr.n { p = p[:nr.n] } n := copy(p, r.source) r.source = r.source[n:] return n, nr.err } // tests that we don't ignore errors from our underlying reader func TestDecoderIssue3577(t *testing.T) { next := make(chan nextRead, 10) wantErr := errors.New("my error") next <- nextRead{5, nil} next <- nextRead{10, wantErr} next <- nextRead{0, wantErr} d := NewDecoder(StdEncoding, &faultInjectReader{ source: "VHdhcyBicmlsbGlnLCBhbmQgdGhlIHNsaXRoeSB0b3Zlcw==", // twas brillig... nextc: next, }) errc := make(chan error) go func() { _, err := ioutil.ReadAll(d) errc <- err }() select { case err := <-errc: if err != wantErr { t.Errorf("got error %v; want %v", err, wantErr) } case <-time.After(5 * time.Second): t.Errorf("timeout; Decoder blocked without returning an error") } } func TestDecoderIssue4779(t *testing.T) { encoded := `CP/EAT8AAAEF AQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAAB BAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHx Y3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm 9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS 0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0 pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkJ+Tj 1kiy1jCJJDnAcCTykpKkuQ6p/jN6FgmxlNduXawwAzaGH+V6jn/R/wCt71zdn+N/qL3kVYFNYB4N ji6PDVjWpKp9TSXnvTf8bFNjg3qOEa2n6VlLpj/rT/pf567DpX1i6L1hs9Py67X8mqdtg/rUWbbf +gkp0kkkklKSSSSUpJJJJT//0PVUkkklKVLq3WMDpGI7KzrNjADtYNXvI/Mqr/Pd/q9W3vaxjnvM NaCXE9gNSvGPrf8AWS3qmba5jjsJhoB0DAf0NDf6sevf+/lf8Hj0JJATfWT6/dV6oXU1uOLQeKKn EQP+Hubtfe/+R7Mf/g7f5xcocp++Z11JMCJPgFBxOg7/AOuqDx8I/ikpkXkmSdU8mJIJA/O8EMAy j+mSARB/17pKVXYWHXjsj7yIex0PadzXMO1zT5KHoNA3HT8ietoGhgjsfA+CSnvvqh/jJtqsrwOv 2b6NGNzXfTYexzJ+nU7/ALkf4P8Awv6P9KvTQQ4AgyDqCF85Pho3CTB7eHwXoH+LT65uZbX9X+o2 bqbPb06551Y4 ` encodedShort := strings.Replace(encoded, "\n", "", -1) dec := NewDecoder(StdEncoding, strings.NewReader(encoded)) res1, err := ioutil.ReadAll(dec) if err != nil { t.Errorf("ReadAll failed: %v", err) } dec = NewDecoder(StdEncoding, strings.NewReader(encodedShort)) var res2 []byte res2, err = ioutil.ReadAll(dec) if err != nil { t.Errorf("ReadAll failed: %v", err) } if !bytes.Equal(res1, res2) { t.Error("Decoded results not equal") } } func TestDecoderIssue7733(t *testing.T) { s, err := StdEncoding.DecodeString("YWJjZA=====") want := CorruptInputError(8) if !reflect.DeepEqual(want, err) { t.Errorf("Error = %v; want CorruptInputError(8)", err) } if string(s) != "abcd" { t.Errorf("DecodeString = %q; want abcd", s) } } go/src/pkg/encoding/base64/example_test.go0100644000000000000000000000207012412656737020741 0ustar00rootroot00000000000000// 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. // Keep in sync with ../base32/example_test.go. package base64_test import ( "encoding/base64" "fmt" "os" ) func ExampleEncoding_EncodeToString() { data := []byte("any + old & data") str := base64.StdEncoding.EncodeToString(data) fmt.Println(str) // Output: // YW55ICsgb2xkICYgZGF0YQ== } func ExampleEncoding_DecodeString() { str := "c29tZSBkYXRhIHdpdGggACBhbmQg77u/" data, err := base64.StdEncoding.DecodeString(str) if err != nil { fmt.Println("error:", err) return } fmt.Printf("%q\n", data) // Output: // "some data with \x00 and \ufeff" } func ExampleNewEncoder() { input := []byte("foo\x00bar") encoder := base64.NewEncoder(base64.StdEncoding, os.Stdout) encoder.Write(input) // Must close the encoder when finished to flush any partial blocks. // If you comment out the following line, the last partial block "r" // won't be encoded. encoder.Close() // Output: // Zm9vAGJhcg== } go/src/pkg/encoding/binary0040755000000000000000000000000012412656737016045 5ustar00rootroot00000000000000go/src/pkg/encoding/binary/binary.go0100644000000000000000000003602012412656737017735 0ustar00rootroot00000000000000// Copyright 2009 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 binary implements simple translation between numbers and byte // sequences and encoding and decoding of varints. // // Numbers are translated by reading and writing fixed-size values. // A fixed-size value is either a fixed-size arithmetic // type (int8, uint8, int16, float32, complex64, ...) // or an array or struct containing only fixed-size values. // // Varints are a method of encoding integers using one or more bytes; // numbers with smaller absolute value take a smaller number of bytes. // For a specification, see http://code.google.com/apis/protocolbuffers/docs/encoding.html. // // This package favors simplicity over efficiency. Clients that require // high-performance serialization, especially for large data structures, // should look at more advanced solutions such as the encoding/gob // package or protocol buffers. package binary import ( "errors" "io" "math" "reflect" ) // A ByteOrder specifies how to convert byte sequences into // 16-, 32-, or 64-bit unsigned integers. type ByteOrder interface { Uint16([]byte) uint16 Uint32([]byte) uint32 Uint64([]byte) uint64 PutUint16([]byte, uint16) PutUint32([]byte, uint32) PutUint64([]byte, uint64) String() string } // LittleEndian is the little-endian implementation of ByteOrder. var LittleEndian littleEndian // BigEndian is the big-endian implementation of ByteOrder. var BigEndian bigEndian type littleEndian struct{} func (littleEndian) Uint16(b []byte) uint16 { return uint16(b[0]) | uint16(b[1])<<8 } func (littleEndian) PutUint16(b []byte, v uint16) { b[0] = byte(v) b[1] = byte(v >> 8) } func (littleEndian) Uint32(b []byte) uint32 { return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 } func (littleEndian) PutUint32(b []byte, v uint32) { b[0] = byte(v) b[1] = byte(v >> 8) b[2] = byte(v >> 16) b[3] = byte(v >> 24) } func (littleEndian) Uint64(b []byte) uint64 { return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 } func (littleEndian) PutUint64(b []byte, v uint64) { b[0] = byte(v) b[1] = byte(v >> 8) b[2] = byte(v >> 16) b[3] = byte(v >> 24) b[4] = byte(v >> 32) b[5] = byte(v >> 40) b[6] = byte(v >> 48) b[7] = byte(v >> 56) } func (littleEndian) String() string { return "LittleEndian" } func (littleEndian) GoString() string { return "binary.LittleEndian" } type bigEndian struct{} func (bigEndian) Uint16(b []byte) uint16 { return uint16(b[1]) | uint16(b[0])<<8 } func (bigEndian) PutUint16(b []byte, v uint16) { b[0] = byte(v >> 8) b[1] = byte(v) } func (bigEndian) Uint32(b []byte) uint32 { return uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24 } func (bigEndian) PutUint32(b []byte, v uint32) { b[0] = byte(v >> 24) b[1] = byte(v >> 16) b[2] = byte(v >> 8) b[3] = byte(v) } func (bigEndian) Uint64(b []byte) uint64 { return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 } func (bigEndian) PutUint64(b []byte, v uint64) { b[0] = byte(v >> 56) b[1] = byte(v >> 48) b[2] = byte(v >> 40) b[3] = byte(v >> 32) b[4] = byte(v >> 24) b[5] = byte(v >> 16) b[6] = byte(v >> 8) b[7] = byte(v) } func (bigEndian) String() string { return "BigEndian" } func (bigEndian) GoString() string { return "binary.BigEndian" } // Read reads structured binary data from r into data. // Data must be a pointer to a fixed-size value or a slice // of fixed-size values. // Bytes read from r are decoded using the specified byte order // and written to successive fields of the data. // When reading into structs, the field data for fields with // blank (_) field names is skipped; i.e., blank field names // may be used for padding. // When reading into a struct, all non-blank fields must be exported. func Read(r io.Reader, order ByteOrder, data interface{}) error { // Fast path for basic types and slices. if n := intDataSize(data); n != 0 { var b [8]byte var bs []byte if n > len(b) { bs = make([]byte, n) } else { bs = b[:n] } if _, err := io.ReadFull(r, bs); err != nil { return err } switch data := data.(type) { case *int8: *data = int8(b[0]) case *uint8: *data = b[0] case *int16: *data = int16(order.Uint16(bs)) case *uint16: *data = order.Uint16(bs) case *int32: *data = int32(order.Uint32(bs)) case *uint32: *data = order.Uint32(bs) case *int64: *data = int64(order.Uint64(bs)) case *uint64: *data = order.Uint64(bs) case []int8: for i, x := range bs { // Easier to loop over the input for 8-bit values. data[i] = int8(x) } case []uint8: copy(data, bs) case []int16: for i := range data { data[i] = int16(order.Uint16(bs[2*i:])) } case []uint16: for i := range data { data[i] = order.Uint16(bs[2*i:]) } case []int32: for i := range data { data[i] = int32(order.Uint32(bs[4*i:])) } case []uint32: for i := range data { data[i] = order.Uint32(bs[4*i:]) } case []int64: for i := range data { data[i] = int64(order.Uint64(bs[8*i:])) } case []uint64: for i := range data { data[i] = order.Uint64(bs[8*i:]) } } return nil } // Fallback to reflect-based decoding. var v reflect.Value switch d := reflect.ValueOf(data); d.Kind() { case reflect.Ptr: v = d.Elem() case reflect.Slice: v = d default: return errors.New("binary.Read: invalid type " + d.Type().String()) } size, err := dataSize(v) if err != nil { return errors.New("binary.Read: " + err.Error()) } d := &decoder{order: order, buf: make([]byte, size)} if _, err := io.ReadFull(r, d.buf); err != nil { return err } d.value(v) return nil } // Write writes the binary representation of data into w. // Data must be a fixed-size value or a slice of fixed-size // values, or a pointer to such data. // Bytes written to w are encoded using the specified byte order // and read from successive fields of the data. // When writing structs, zero values are written for fields // with blank (_) field names. func Write(w io.Writer, order ByteOrder, data interface{}) error { // Fast path for basic types and slices. if n := intDataSize(data); n != 0 { var b [8]byte var bs []byte if n > len(b) { bs = make([]byte, n) } else { bs = b[:n] } switch v := data.(type) { case *int8: bs = b[:1] b[0] = byte(*v) case int8: bs = b[:1] b[0] = byte(v) case []int8: for i, x := range v { bs[i] = byte(x) } case *uint8: bs = b[:1] b[0] = *v case uint8: bs = b[:1] b[0] = byte(v) case []uint8: bs = v case *int16: bs = b[:2] order.PutUint16(bs, uint16(*v)) case int16: bs = b[:2] order.PutUint16(bs, uint16(v)) case []int16: for i, x := range v { order.PutUint16(bs[2*i:], uint16(x)) } case *uint16: bs = b[:2] order.PutUint16(bs, *v) case uint16: bs = b[:2] order.PutUint16(bs, v) case []uint16: for i, x := range v { order.PutUint16(bs[2*i:], x) } case *int32: bs = b[:4] order.PutUint32(bs, uint32(*v)) case int32: bs = b[:4] order.PutUint32(bs, uint32(v)) case []int32: for i, x := range v { order.PutUint32(bs[4*i:], uint32(x)) } case *uint32: bs = b[:4] order.PutUint32(bs, *v) case uint32: bs = b[:4] order.PutUint32(bs, v) case []uint32: for i, x := range v { order.PutUint32(bs[4*i:], x) } case *int64: bs = b[:8] order.PutUint64(bs, uint64(*v)) case int64: bs = b[:8] order.PutUint64(bs, uint64(v)) case []int64: for i, x := range v { order.PutUint64(bs[8*i:], uint64(x)) } case *uint64: bs = b[:8] order.PutUint64(bs, *v) case uint64: bs = b[:8] order.PutUint64(bs, v) case []uint64: for i, x := range v { order.PutUint64(bs[8*i:], x) } } _, err := w.Write(bs) return err } // Fallback to reflect-based encoding. v := reflect.Indirect(reflect.ValueOf(data)) size, err := dataSize(v) if err != nil { return errors.New("binary.Write: " + err.Error()) } buf := make([]byte, size) e := &encoder{order: order, buf: buf} e.value(v) _, err = w.Write(buf) return err } // Size returns how many bytes Write would generate to encode the value v, which // must be a fixed-size value or a slice of fixed-size values, or a pointer to such data. func Size(v interface{}) int { n, err := dataSize(reflect.Indirect(reflect.ValueOf(v))) if err != nil { return -1 } return n } // dataSize returns the number of bytes the actual data represented by v occupies in memory. // For compound structures, it sums the sizes of the elements. Thus, for instance, for a slice // it returns the length of the slice times the element size and does not count the memory // occupied by the header. func dataSize(v reflect.Value) (int, error) { if v.Kind() == reflect.Slice { elem, err := sizeof(v.Type().Elem()) if err != nil { return 0, err } return v.Len() * elem, nil } return sizeof(v.Type()) } func sizeof(t reflect.Type) (int, error) { switch t.Kind() { case reflect.Array: n, err := sizeof(t.Elem()) if err != nil { return 0, err } return t.Len() * n, nil case reflect.Struct: sum := 0 for i, n := 0, t.NumField(); i < n; i++ { s, err := sizeof(t.Field(i).Type) if err != nil { return 0, err } sum += s } return sum, nil case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128: return int(t.Size()), nil } return 0, errors.New("invalid type " + t.String()) } type coder struct { order ByteOrder buf []byte } type decoder coder type encoder coder func (d *decoder) uint8() uint8 { x := d.buf[0] d.buf = d.buf[1:] return x } func (e *encoder) uint8(x uint8) { e.buf[0] = x e.buf = e.buf[1:] } func (d *decoder) uint16() uint16 { x := d.order.Uint16(d.buf[0:2]) d.buf = d.buf[2:] return x } func (e *encoder) uint16(x uint16) { e.order.PutUint16(e.buf[0:2], x) e.buf = e.buf[2:] } func (d *decoder) uint32() uint32 { x := d.order.Uint32(d.buf[0:4]) d.buf = d.buf[4:] return x } func (e *encoder) uint32(x uint32) { e.order.PutUint32(e.buf[0:4], x) e.buf = e.buf[4:] } func (d *decoder) uint64() uint64 { x := d.order.Uint64(d.buf[0:8]) d.buf = d.buf[8:] return x } func (e *encoder) uint64(x uint64) { e.order.PutUint64(e.buf[0:8], x) e.buf = e.buf[8:] } func (d *decoder) int8() int8 { return int8(d.uint8()) } func (e *encoder) int8(x int8) { e.uint8(uint8(x)) } func (d *decoder) int16() int16 { return int16(d.uint16()) } func (e *encoder) int16(x int16) { e.uint16(uint16(x)) } func (d *decoder) int32() int32 { return int32(d.uint32()) } func (e *encoder) int32(x int32) { e.uint32(uint32(x)) } func (d *decoder) int64() int64 { return int64(d.uint64()) } func (e *encoder) int64(x int64) { e.uint64(uint64(x)) } func (d *decoder) value(v reflect.Value) { switch v.Kind() { case reflect.Array: l := v.Len() for i := 0; i < l; i++ { d.value(v.Index(i)) } case reflect.Struct: t := v.Type() l := v.NumField() for i := 0; i < l; i++ { // Note: Calling v.CanSet() below is an optimization. // It would be sufficient to check the field name, // but creating the StructField info for each field is // costly (run "go test -bench=ReadStruct" and compare // results when making changes to this code). if v := v.Field(i); v.CanSet() || t.Field(i).Name != "_" { d.value(v) } else { d.skip(v) } } case reflect.Slice: l := v.Len() for i := 0; i < l; i++ { d.value(v.Index(i)) } case reflect.Int8: v.SetInt(int64(d.int8())) case reflect.Int16: v.SetInt(int64(d.int16())) case reflect.Int32: v.SetInt(int64(d.int32())) case reflect.Int64: v.SetInt(d.int64()) case reflect.Uint8: v.SetUint(uint64(d.uint8())) case reflect.Uint16: v.SetUint(uint64(d.uint16())) case reflect.Uint32: v.SetUint(uint64(d.uint32())) case reflect.Uint64: v.SetUint(d.uint64()) case reflect.Float32: v.SetFloat(float64(math.Float32frombits(d.uint32()))) case reflect.Float64: v.SetFloat(math.Float64frombits(d.uint64())) case reflect.Complex64: v.SetComplex(complex( float64(math.Float32frombits(d.uint32())), float64(math.Float32frombits(d.uint32())), )) case reflect.Complex128: v.SetComplex(complex( math.Float64frombits(d.uint64()), math.Float64frombits(d.uint64()), )) } } func (e *encoder) value(v reflect.Value) { switch v.Kind() { case reflect.Array: l := v.Len() for i := 0; i < l; i++ { e.value(v.Index(i)) } case reflect.Struct: t := v.Type() l := v.NumField() for i := 0; i < l; i++ { // see comment for corresponding code in decoder.value() if v := v.Field(i); v.CanSet() || t.Field(i).Name != "_" { e.value(v) } else { e.skip(v) } } case reflect.Slice: l := v.Len() for i := 0; i < l; i++ { e.value(v.Index(i)) } case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: switch v.Type().Kind() { case reflect.Int8: e.int8(int8(v.Int())) case reflect.Int16: e.int16(int16(v.Int())) case reflect.Int32: e.int32(int32(v.Int())) case reflect.Int64: e.int64(v.Int()) } case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: switch v.Type().Kind() { case reflect.Uint8: e.uint8(uint8(v.Uint())) case reflect.Uint16: e.uint16(uint16(v.Uint())) case reflect.Uint32: e.uint32(uint32(v.Uint())) case reflect.Uint64: e.uint64(v.Uint()) } case reflect.Float32, reflect.Float64: switch v.Type().Kind() { case reflect.Float32: e.uint32(math.Float32bits(float32(v.Float()))) case reflect.Float64: e.uint64(math.Float64bits(v.Float())) } case reflect.Complex64, reflect.Complex128: switch v.Type().Kind() { case reflect.Complex64: x := v.Complex() e.uint32(math.Float32bits(float32(real(x)))) e.uint32(math.Float32bits(float32(imag(x)))) case reflect.Complex128: x := v.Complex() e.uint64(math.Float64bits(real(x))) e.uint64(math.Float64bits(imag(x))) } } } func (d *decoder) skip(v reflect.Value) { n, _ := dataSize(v) d.buf = d.buf[n:] } func (e *encoder) skip(v reflect.Value) { n, _ := dataSize(v) for i := range e.buf[0:n] { e.buf[i] = 0 } e.buf = e.buf[n:] } // intDataSize returns the size of the data required to represent the data when encoded. // It returns zero if the type cannot be implemented by the fast path in Read or Write. func intDataSize(data interface{}) int { switch data := data.(type) { case int8, *int8, *uint8: return 1 case []int8: return len(data) case []uint8: return len(data) case int16, *int16, *uint16: return 2 case []int16: return 2 * len(data) case []uint16: return 2 * len(data) case int32, *int32, *uint32: return 4 case []int32: return 4 * len(data) case []uint32: return 4 * len(data) case int64, *int64, *uint64: return 8 case []int64: return 8 * len(data) case []uint64: return 8 * len(data) } return 0 } go/src/pkg/encoding/binary/binary_test.go0100644000000000000000000002127712412656737021004 0ustar00rootroot00000000000000// Copyright 2009 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 binary import ( "bytes" "io" "math" "reflect" "strings" "testing" ) type Struct struct { Int8 int8 Int16 int16 Int32 int32 Int64 int64 Uint8 uint8 Uint16 uint16 Uint32 uint32 Uint64 uint64 Float32 float32 Float64 float64 Complex64 complex64 Complex128 complex128 Array [4]uint8 } type T struct { Int int Uint uint Uintptr uintptr Array [4]int } var s = Struct{ 0x01, 0x0203, 0x04050607, 0x08090a0b0c0d0e0f, 0x10, 0x1112, 0x13141516, 0x1718191a1b1c1d1e, math.Float32frombits(0x1f202122), math.Float64frombits(0x232425262728292a), complex( math.Float32frombits(0x2b2c2d2e), math.Float32frombits(0x2f303132), ), complex( math.Float64frombits(0x333435363738393a), math.Float64frombits(0x3b3c3d3e3f404142), ), [4]uint8{0x43, 0x44, 0x45, 0x46}, } var big = []byte{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, } var little = []byte{ 1, 3, 2, 7, 6, 5, 4, 15, 14, 13, 12, 11, 10, 9, 8, 16, 18, 17, 22, 21, 20, 19, 30, 29, 28, 27, 26, 25, 24, 23, 34, 33, 32, 31, 42, 41, 40, 39, 38, 37, 36, 35, 46, 45, 44, 43, 50, 49, 48, 47, 58, 57, 56, 55, 54, 53, 52, 51, 66, 65, 64, 63, 62, 61, 60, 59, 67, 68, 69, 70, } var src = []byte{1, 2, 3, 4, 5, 6, 7, 8} var res = []int32{0x01020304, 0x05060708} func checkResult(t *testing.T, dir string, order ByteOrder, err error, have, want interface{}) { if err != nil { t.Errorf("%v %v: %v", dir, order, err) return } if !reflect.DeepEqual(have, want) { t.Errorf("%v %v:\n\thave %+v\n\twant %+v", dir, order, have, want) } } func testRead(t *testing.T, order ByteOrder, b []byte, s1 interface{}) { var s2 Struct err := Read(bytes.NewReader(b), order, &s2) checkResult(t, "Read", order, err, s2, s1) } func testWrite(t *testing.T, order ByteOrder, b []byte, s1 interface{}) { buf := new(bytes.Buffer) err := Write(buf, order, s1) checkResult(t, "Write", order, err, buf.Bytes(), b) } func TestLittleEndianRead(t *testing.T) { testRead(t, LittleEndian, little, s) } func TestLittleEndianWrite(t *testing.T) { testWrite(t, LittleEndian, little, s) } func TestLittleEndianPtrWrite(t *testing.T) { testWrite(t, LittleEndian, little, &s) } func TestBigEndianRead(t *testing.T) { testRead(t, BigEndian, big, s) } func TestBigEndianWrite(t *testing.T) { testWrite(t, BigEndian, big, s) } func TestBigEndianPtrWrite(t *testing.T) { testWrite(t, BigEndian, big, &s) } func TestReadSlice(t *testing.T) { slice := make([]int32, 2) err := Read(bytes.NewReader(src), BigEndian, slice) checkResult(t, "ReadSlice", BigEndian, err, slice, res) } func TestWriteSlice(t *testing.T) { buf := new(bytes.Buffer) err := Write(buf, BigEndian, res) checkResult(t, "WriteSlice", BigEndian, err, buf.Bytes(), src) } // Addresses of arrays are easier to manipulate with reflection than are slices. var intArrays = []interface{}{ &[100]int8{}, &[100]int16{}, &[100]int32{}, &[100]int64{}, &[100]uint8{}, &[100]uint16{}, &[100]uint32{}, &[100]uint64{}, } func TestSliceRoundTrip(t *testing.T) { buf := new(bytes.Buffer) for _, array := range intArrays { src := reflect.ValueOf(array).Elem() unsigned := false switch src.Index(0).Kind() { case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: unsigned = true } for i := 0; i < src.Len(); i++ { if unsigned { src.Index(i).SetUint(uint64(i * 0x07654321)) } else { src.Index(i).SetInt(int64(i * 0x07654321)) } } buf.Reset() srcSlice := src.Slice(0, src.Len()) err := Write(buf, BigEndian, srcSlice.Interface()) if err != nil { t.Fatal(err) } dst := reflect.New(src.Type()).Elem() dstSlice := dst.Slice(0, dst.Len()) err = Read(buf, BigEndian, dstSlice.Interface()) if err != nil { t.Fatal(err) } if !reflect.DeepEqual(src.Interface(), dst.Interface()) { t.Fatal(src) } } } func TestWriteT(t *testing.T) { buf := new(bytes.Buffer) ts := T{} if err := Write(buf, BigEndian, ts); err == nil { t.Errorf("WriteT: have err == nil, want non-nil") } tv := reflect.Indirect(reflect.ValueOf(ts)) for i, n := 0, tv.NumField(); i < n; i++ { typ := tv.Field(i).Type().String() if typ == "[4]int" { typ = "int" // the problem is int, not the [4] } if err := Write(buf, BigEndian, tv.Field(i).Interface()); err == nil { t.Errorf("WriteT.%v: have err == nil, want non-nil", tv.Field(i).Type()) } else if !strings.Contains(err.Error(), typ) { t.Errorf("WriteT: have err == %q, want it to mention %s", err, typ) } } } type BlankFields struct { A uint32 _ int32 B float64 _ [4]int16 C byte _ [7]byte _ struct { f [8]float32 } } type BlankFieldsProbe struct { A uint32 P0 int32 B float64 P1 [4]int16 C byte P2 [7]byte P3 struct { F [8]float32 } } func TestBlankFields(t *testing.T) { buf := new(bytes.Buffer) b1 := BlankFields{A: 1234567890, B: 2.718281828, C: 42} if err := Write(buf, LittleEndian, &b1); err != nil { t.Error(err) } // zero values must have been written for blank fields var p BlankFieldsProbe if err := Read(buf, LittleEndian, &p); err != nil { t.Error(err) } // quick test: only check first value of slices if p.P0 != 0 || p.P1[0] != 0 || p.P2[0] != 0 || p.P3.F[0] != 0 { t.Errorf("non-zero values for originally blank fields: %#v", p) } // write p and see if we can probe only some fields if err := Write(buf, LittleEndian, &p); err != nil { t.Error(err) } // read should ignore blank fields in b2 var b2 BlankFields if err := Read(buf, LittleEndian, &b2); err != nil { t.Error(err) } if b1.A != b2.A || b1.B != b2.B || b1.C != b2.C { t.Errorf("%#v != %#v", b1, b2) } } // An attempt to read into a struct with an unexported field will // panic. This is probably not the best choice, but at this point // anything else would be an API change. type Unexported struct { a int32 } func TestUnexportedRead(t *testing.T) { var buf bytes.Buffer u1 := Unexported{a: 1} if err := Write(&buf, LittleEndian, &u1); err != nil { t.Fatal(err) } defer func() { if recover() == nil { t.Fatal("did not panic") } }() var u2 Unexported Read(&buf, LittleEndian, &u2) } type byteSliceReader struct { remain []byte } func (br *byteSliceReader) Read(p []byte) (int, error) { n := copy(p, br.remain) br.remain = br.remain[n:] return n, nil } func BenchmarkReadSlice1000Int32s(b *testing.B) { bsr := &byteSliceReader{} slice := make([]int32, 1000) buf := make([]byte, len(slice)*4) b.SetBytes(int64(len(buf))) b.ResetTimer() for i := 0; i < b.N; i++ { bsr.remain = buf Read(bsr, BigEndian, slice) } } func BenchmarkReadStruct(b *testing.B) { bsr := &byteSliceReader{} var buf bytes.Buffer Write(&buf, BigEndian, &s) n, _ := dataSize(reflect.ValueOf(s)) b.SetBytes(int64(n)) t := s b.ResetTimer() for i := 0; i < b.N; i++ { bsr.remain = buf.Bytes() Read(bsr, BigEndian, &t) } b.StopTimer() if !reflect.DeepEqual(s, t) { b.Fatal("no match") } } func BenchmarkReadInts(b *testing.B) { var ls Struct bsr := &byteSliceReader{} var r io.Reader = bsr b.SetBytes(2 * (1 + 2 + 4 + 8)) b.ResetTimer() for i := 0; i < b.N; i++ { bsr.remain = big Read(r, BigEndian, &ls.Int8) Read(r, BigEndian, &ls.Int16) Read(r, BigEndian, &ls.Int32) Read(r, BigEndian, &ls.Int64) Read(r, BigEndian, &ls.Uint8) Read(r, BigEndian, &ls.Uint16) Read(r, BigEndian, &ls.Uint32) Read(r, BigEndian, &ls.Uint64) } want := s want.Float32 = 0 want.Float64 = 0 want.Complex64 = 0 want.Complex128 = 0 for i := range want.Array { want.Array[i] = 0 } b.StopTimer() if !reflect.DeepEqual(ls, want) { panic("no match") } } func BenchmarkWriteInts(b *testing.B) { buf := new(bytes.Buffer) var w io.Writer = buf b.SetBytes(2 * (1 + 2 + 4 + 8)) b.ResetTimer() for i := 0; i < b.N; i++ { buf.Reset() Write(w, BigEndian, s.Int8) Write(w, BigEndian, s.Int16) Write(w, BigEndian, s.Int32) Write(w, BigEndian, s.Int64) Write(w, BigEndian, s.Uint8) Write(w, BigEndian, s.Uint16) Write(w, BigEndian, s.Uint32) Write(w, BigEndian, s.Uint64) } b.StopTimer() if !bytes.Equal(buf.Bytes(), big[:30]) { b.Fatalf("first half doesn't match: %x %x", buf.Bytes(), big[:30]) } } func BenchmarkWriteSlice1000Int32s(b *testing.B) { slice := make([]int32, 1000) buf := new(bytes.Buffer) var w io.Writer = buf b.SetBytes(4 * 1000) b.ResetTimer() for i := 0; i < b.N; i++ { buf.Reset() Write(w, BigEndian, slice) } b.StopTimer() } go/src/pkg/encoding/binary/example_test.go0100644000000000000000000000212612412656737021143 0ustar00rootroot00000000000000// Copyright 2011 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 binary_test import ( "bytes" "encoding/binary" "fmt" "math" ) func ExampleWrite() { buf := new(bytes.Buffer) var pi float64 = math.Pi err := binary.Write(buf, binary.LittleEndian, pi) if err != nil { fmt.Println("binary.Write failed:", err) } fmt.Printf("% x", buf.Bytes()) // Output: 18 2d 44 54 fb 21 09 40 } func ExampleWrite_multi() { buf := new(bytes.Buffer) var data = []interface{}{ uint16(61374), int8(-54), uint8(254), } for _, v := range data { err := binary.Write(buf, binary.LittleEndian, v) if err != nil { fmt.Println("binary.Write failed:", err) } } fmt.Printf("%x", buf.Bytes()) // Output: beefcafe } func ExampleRead() { var pi float64 b := []byte{0x18, 0x2d, 0x44, 0x54, 0xfb, 0x21, 0x09, 0x40} buf := bytes.NewReader(b) err := binary.Read(buf, binary.LittleEndian, &pi) if err != nil { fmt.Println("binary.Read failed:", err) } fmt.Print(pi) // Output: 3.141592653589793 } go/src/pkg/encoding/binary/varint.go0100644000000000000000000000737212412656737017764 0ustar00rootroot00000000000000// Copyright 2011 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 binary // This file implements "varint" encoding of 64-bit integers. // The encoding is: // - unsigned integers are serialized 7 bits at a time, starting with the // least significant bits // - the most significant bit (msb) in each output byte indicates if there // is a continuation byte (msb = 1) // - signed integers are mapped to unsigned integers using "zig-zag" // encoding: Positive values x are written as 2*x + 0, negative values // are written as 2*(^x) + 1; that is, negative numbers are complemented // and whether to complement is encoded in bit 0. // // Design note: // At most 10 bytes are needed for 64-bit values. The encoding could // be more dense: a full 64-bit value needs an extra byte just to hold bit 63. // Instead, the msb of the previous byte could be used to hold bit 63 since we // know there can't be more than 64 bits. This is a trivial improvement and // would reduce the maximum encoding length to 9 bytes. However, it breaks the // invariant that the msb is always the "continuation bit" and thus makes the // format incompatible with a varint encoding for larger numbers (say 128-bit). import ( "errors" "io" ) // MaxVarintLenN is the maximum length of a varint-encoded N-bit integer. const ( MaxVarintLen16 = 3 MaxVarintLen32 = 5 MaxVarintLen64 = 10 ) // PutUvarint encodes a uint64 into buf and returns the number of bytes written. // If the buffer is too small, PutUvarint will panic. func PutUvarint(buf []byte, x uint64) int { i := 0 for x >= 0x80 { buf[i] = byte(x) | 0x80 x >>= 7 i++ } buf[i] = byte(x) return i + 1 } // Uvarint decodes a uint64 from buf and returns that value and the // number of bytes read (> 0). If an error occurred, the value is 0 // and the number of bytes n is <= 0 meaning: // // n == 0: buf too small // n < 0: value larger than 64 bits (overflow) // and -n is the number of bytes read // func Uvarint(buf []byte) (uint64, int) { var x uint64 var s uint for i, b := range buf { if b < 0x80 { if i > 9 || i == 9 && b > 1 { return 0, -(i + 1) // overflow } return x | uint64(b)< 0). If an error occurred, the value is 0 // and the number of bytes n is <= 0 with the following meaning: // // n == 0: buf too small // n < 0: value larger than 64 bits (overflow) // and -n is the number of bytes read // func Varint(buf []byte) (int64, int) { ux, n := Uvarint(buf) // ok to continue in presence of error x := int64(ux >> 1) if ux&1 != 0 { x = ^x } return x, n } var overflow = errors.New("binary: varint overflows a 64-bit integer") // ReadUvarint reads an encoded unsigned integer from r and returns it as a uint64. func ReadUvarint(r io.ByteReader) (uint64, error) { var x uint64 var s uint for i := 0; ; i++ { b, err := r.ReadByte() if err != nil { return x, err } if b < 0x80 { if i > 9 || i == 9 && b > 1 { return x, overflow } return x | uint64(b)<> 1) if ux&1 != 0 { x = ^x } return x, err } go/src/pkg/encoding/binary/varint_test.go0100644000000000000000000000666412412656737021026 0ustar00rootroot00000000000000// Copyright 2011 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 binary import ( "bytes" "io" "testing" ) func testConstant(t *testing.T, w uint, max int) { buf := make([]byte, MaxVarintLen64) n := PutUvarint(buf, 1< 0 { if len(record) != r.FieldsPerRecord { r.column = 0 // report at start of record return record, r.error(ErrFieldCount) } } else if r.FieldsPerRecord == 0 { r.FieldsPerRecord = len(record) } return record, nil } // ReadAll reads all the remaining records from r. // Each record is a slice of fields. // A successful call returns err == nil, not err == EOF. Because ReadAll is // defined to read until EOF, it does not treat end of file as an error to be // reported. func (r *Reader) ReadAll() (records [][]string, err error) { for { record, err := r.Read() if err == io.EOF { return records, nil } if err != nil { return nil, err } records = append(records, record) } } // readRune reads one rune from r, folding \r\n to \n and keeping track // of how far into the line we have read. r.column will point to the start // of this rune, not the end of this rune. func (r *Reader) readRune() (rune, error) { r1, _, err := r.r.ReadRune() // Handle \r\n here. We make the simplifying assumption that // anytime \r is followed by \n that it can be folded to \n. // We will not detect files which contain both \r\n and bare \n. if r1 == '\r' { r1, _, err = r.r.ReadRune() if err == nil { if r1 != '\n' { r.r.UnreadRune() r1 = '\r' } } } r.column++ return r1, err } // skip reads runes up to and including the rune delim or until error. func (r *Reader) skip(delim rune) error { for { r1, err := r.readRune() if err != nil { return err } if r1 == delim { return nil } } } // parseRecord reads and parses a single csv record from r. func (r *Reader) parseRecord() (fields []string, err error) { // Each record starts on a new line. We increment our line // number (lines start at 1, not 0) and set column to -1 // so as we increment in readRune it points to the character we read. r.line++ r.column = -1 // Peek at the first rune. If it is an error we are done. // If we are support comments and it is the comment character // then skip to the end of line. r1, _, err := r.r.ReadRune() if err != nil { return nil, err } if r.Comment != 0 && r1 == r.Comment { return nil, r.skip('\n') } r.r.UnreadRune() // At this point we have at least one field. for { haveField, delim, err := r.parseField() if haveField { fields = append(fields, r.field.String()) } if delim == '\n' || err == io.EOF { return fields, err } else if err != nil { return nil, err } } } // parseField parses the next field in the record. The read field is // located in r.field. Delim is the first character not part of the field // (r.Comma or '\n'). func (r *Reader) parseField() (haveField bool, delim rune, err error) { r.field.Reset() r1, err := r.readRune() for err == nil && r.TrimLeadingSpace && r1 != '\n' && unicode.IsSpace(r1) { r1, err = r.readRune() } if err == io.EOF && r.column != 0 { return true, 0, err } if err != nil { return false, 0, err } switch r1 { case r.Comma: // will check below case '\n': // We are a trailing empty field or a blank line if r.column == 0 { return false, r1, nil } return true, r1, nil case '"': // quoted field Quoted: for { r1, err = r.readRune() if err != nil { if err == io.EOF { if r.LazyQuotes { return true, 0, err } return false, 0, r.error(ErrQuote) } return false, 0, err } switch r1 { case '"': r1, err = r.readRune() if err != nil || r1 == r.Comma { break Quoted } if r1 == '\n' { return true, r1, nil } if r1 != '"' { if !r.LazyQuotes { r.column-- return false, 0, r.error(ErrQuote) } // accept the bare quote r.field.WriteRune('"') } case '\n': r.line++ r.column = -1 } r.field.WriteRune(r1) } default: // unquoted field for { r.field.WriteRune(r1) r1, err = r.readRune() if err != nil || r1 == r.Comma { break } if r1 == '\n' { return true, r1, nil } if !r.LazyQuotes && r1 == '"' { return false, 0, r.error(ErrBareQuote) } } } if err != nil { if err == io.EOF { return true, 0, err } return false, 0, err } return true, r1, nil } go/src/pkg/encoding/csv/reader_test.go0100644000000000000000000001443612412656737020270 0ustar00rootroot00000000000000// Copyright 2011 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 csv import ( "reflect" "strings" "testing" ) var readTests = []struct { Name string Input string Output [][]string UseFieldsPerRecord bool // false (default) means FieldsPerRecord is -1 // These fields are copied into the Reader Comma rune Comment rune FieldsPerRecord int LazyQuotes bool TrailingComma bool TrimLeadingSpace bool Error string Line int // Expected error line if != 0 Column int // Expected error column if line != 0 }{ { Name: "Simple", Input: "a,b,c\n", Output: [][]string{{"a", "b", "c"}}, }, { Name: "CRLF", Input: "a,b\r\nc,d\r\n", Output: [][]string{{"a", "b"}, {"c", "d"}}, }, { Name: "BareCR", Input: "a,b\rc,d\r\n", Output: [][]string{{"a", "b\rc", "d"}}, }, { Name: "RFC4180test", UseFieldsPerRecord: true, Input: `#field1,field2,field3 "aaa","bb b","ccc" "a,a","b""bb","ccc" zzz,yyy,xxx `, Output: [][]string{ {"#field1", "field2", "field3"}, {"aaa", "bb\nb", "ccc"}, {"a,a", `b"bb`, "ccc"}, {"zzz", "yyy", "xxx"}, }, }, { Name: "NoEOLTest", Input: "a,b,c", Output: [][]string{{"a", "b", "c"}}, }, { Name: "Semicolon", Comma: ';', Input: "a;b;c\n", Output: [][]string{{"a", "b", "c"}}, }, { Name: "MultiLine", Input: `"two line","one line","three line field"`, Output: [][]string{{"two\nline", "one line", "three\nline\nfield"}}, }, { Name: "BlankLine", Input: "a,b,c\n\nd,e,f\n\n", Output: [][]string{ {"a", "b", "c"}, {"d", "e", "f"}, }, }, { Name: "TrimSpace", Input: " a, b, c\n", TrimLeadingSpace: true, Output: [][]string{{"a", "b", "c"}}, }, { Name: "LeadingSpace", Input: " a, b, c\n", Output: [][]string{{" a", " b", " c"}}, }, { Name: "Comment", Comment: '#', Input: "#1,2,3\na,b,c\n#comment", Output: [][]string{{"a", "b", "c"}}, }, { Name: "NoComment", Input: "#1,2,3\na,b,c", Output: [][]string{{"#1", "2", "3"}, {"a", "b", "c"}}, }, { Name: "LazyQuotes", LazyQuotes: true, Input: `a "word","1"2",a","b`, Output: [][]string{{`a "word"`, `1"2`, `a"`, `b`}}, }, { Name: "BareQuotes", LazyQuotes: true, Input: `a "word","1"2",a"`, Output: [][]string{{`a "word"`, `1"2`, `a"`}}, }, { Name: "BareDoubleQuotes", LazyQuotes: true, Input: `a""b,c`, Output: [][]string{{`a""b`, `c`}}, }, { Name: "BadDoubleQuotes", Input: `a""b,c`, Error: `bare " in non-quoted-field`, Line: 1, Column: 1, }, { Name: "TrimQuote", Input: ` "a"," b",c`, TrimLeadingSpace: true, Output: [][]string{{"a", " b", "c"}}, }, { Name: "BadBareQuote", Input: `a "word","b"`, Error: `bare " in non-quoted-field`, Line: 1, Column: 2, }, { Name: "BadTrailingQuote", Input: `"a word",b"`, Error: `bare " in non-quoted-field`, Line: 1, Column: 10, }, { Name: "ExtraneousQuote", Input: `"a "word","b"`, Error: `extraneous " in field`, Line: 1, Column: 3, }, { Name: "BadFieldCount", UseFieldsPerRecord: true, Input: "a,b,c\nd,e", Error: "wrong number of fields", Line: 2, }, { Name: "BadFieldCount1", UseFieldsPerRecord: true, FieldsPerRecord: 2, Input: `a,b,c`, Error: "wrong number of fields", Line: 1, }, { Name: "FieldCount", Input: "a,b,c\nd,e", Output: [][]string{{"a", "b", "c"}, {"d", "e"}}, }, { Name: "TrailingCommaEOF", Input: "a,b,c,", Output: [][]string{{"a", "b", "c", ""}}, }, { Name: "TrailingCommaEOL", Input: "a,b,c,\n", Output: [][]string{{"a", "b", "c", ""}}, }, { Name: "TrailingCommaSpaceEOF", TrimLeadingSpace: true, Input: "a,b,c, ", Output: [][]string{{"a", "b", "c", ""}}, }, { Name: "TrailingCommaSpaceEOL", TrimLeadingSpace: true, Input: "a,b,c, \n", Output: [][]string{{"a", "b", "c", ""}}, }, { Name: "TrailingCommaLine3", TrimLeadingSpace: true, Input: "a,b,c\nd,e,f\ng,hi,", Output: [][]string{{"a", "b", "c"}, {"d", "e", "f"}, {"g", "hi", ""}}, }, { Name: "NotTrailingComma3", Input: "a,b,c, \n", Output: [][]string{{"a", "b", "c", " "}}, }, { Name: "CommaFieldTest", TrailingComma: true, Input: `x,y,z,w x,y,z, x,y,, x,,, ,,, "x","y","z","w" "x","y","z","" "x","y","","" "x","","","" "","","","" `, Output: [][]string{ {"x", "y", "z", "w"}, {"x", "y", "z", ""}, {"x", "y", "", ""}, {"x", "", "", ""}, {"", "", "", ""}, {"x", "y", "z", "w"}, {"x", "y", "z", ""}, {"x", "y", "", ""}, {"x", "", "", ""}, {"", "", "", ""}, }, }, { Name: "TrailingCommaIneffective1", TrailingComma: true, TrimLeadingSpace: true, Input: "a,b,\nc,d,e", Output: [][]string{ {"a", "b", ""}, {"c", "d", "e"}, }, }, { Name: "TrailingCommaIneffective2", TrailingComma: false, TrimLeadingSpace: true, Input: "a,b,\nc,d,e", Output: [][]string{ {"a", "b", ""}, {"c", "d", "e"}, }, }, } func TestRead(t *testing.T) { for _, tt := range readTests { r := NewReader(strings.NewReader(tt.Input)) r.Comment = tt.Comment if tt.UseFieldsPerRecord { r.FieldsPerRecord = tt.FieldsPerRecord } else { r.FieldsPerRecord = -1 } r.LazyQuotes = tt.LazyQuotes r.TrailingComma = tt.TrailingComma r.TrimLeadingSpace = tt.TrimLeadingSpace if tt.Comma != 0 { r.Comma = tt.Comma } out, err := r.ReadAll() perr, _ := err.(*ParseError) if tt.Error != "" { if err == nil || !strings.Contains(err.Error(), tt.Error) { t.Errorf("%s: error %v, want error %q", tt.Name, err, tt.Error) } else if tt.Line != 0 && (tt.Line != perr.Line || tt.Column != perr.Column) { t.Errorf("%s: error at %d:%d expected %d:%d", tt.Name, perr.Line, perr.Column, tt.Line, tt.Column) } } else if err != nil { t.Errorf("%s: unexpected error %v", tt.Name, err) } else if !reflect.DeepEqual(out, tt.Output) { t.Errorf("%s: out=%q want %q", tt.Name, out, tt.Output) } } } go/src/pkg/encoding/csv/writer.go0100644000000000000000000000607412412656737017302 0ustar00rootroot00000000000000// Copyright 2011 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 csv import ( "bufio" "io" "strings" "unicode" "unicode/utf8" ) // A Writer writes records to a CSV encoded file. // // As returned by NewWriter, a Writer writes records terminated by a // newline and uses ',' as the field delimiter. The exported fields can be // changed to customize the details before the first call to Write or WriteAll. // // Comma is the field delimiter. // // If UseCRLF is true, the Writer ends each record with \r\n instead of \n. type Writer struct { Comma rune // Field delimiter (set to ',' by NewWriter) UseCRLF bool // True to use \r\n as the line terminator w *bufio.Writer } // NewWriter returns a new Writer that writes to w. func NewWriter(w io.Writer) *Writer { return &Writer{ Comma: ',', w: bufio.NewWriter(w), } } // Writer writes a single CSV record to w along with any necessary quoting. // A record is a slice of strings with each string being one field. func (w *Writer) Write(record []string) (err error) { for n, field := range record { if n > 0 { if _, err = w.w.WriteRune(w.Comma); err != nil { return } } // If we don't have to have a quoted field then just // write out the field and continue to the next field. if !w.fieldNeedsQuotes(field) { if _, err = w.w.WriteString(field); err != nil { return } continue } if err = w.w.WriteByte('"'); err != nil { return } for _, r1 := range field { switch r1 { case '"': _, err = w.w.WriteString(`""`) case '\r': if !w.UseCRLF { err = w.w.WriteByte('\r') } case '\n': if w.UseCRLF { _, err = w.w.WriteString("\r\n") } else { err = w.w.WriteByte('\n') } default: _, err = w.w.WriteRune(r1) } if err != nil { return } } if err = w.w.WriteByte('"'); err != nil { return } } if w.UseCRLF { _, err = w.w.WriteString("\r\n") } else { err = w.w.WriteByte('\n') } return } // Flush writes any buffered data to the underlying io.Writer. // To check if an error occurred during the Flush, call Error. func (w *Writer) Flush() { w.w.Flush() } // Error reports any error that has occurred during a previous Write or Flush. func (w *Writer) Error() error { _, err := w.w.Write(nil) return err } // WriteAll writes multiple CSV records to w using Write and then calls Flush. func (w *Writer) WriteAll(records [][]string) (err error) { for _, record := range records { err = w.Write(record) if err != nil { return err } } return w.w.Flush() } // fieldNeedsQuotes returns true if our field must be enclosed in quotes. // Empty fields, files with a Comma, fields with a quote or newline, and // fields which start with a space must be enclosed in quotes. func (w *Writer) fieldNeedsQuotes(field string) bool { if len(field) == 0 || strings.IndexRune(field, w.Comma) >= 0 || strings.IndexAny(field, "\"\r\n") >= 0 { return true } r1, _ := utf8.DecodeRuneInString(field) return unicode.IsSpace(r1) } go/src/pkg/encoding/csv/writer_test.go0100644000000000000000000000357012412656737020337 0ustar00rootroot00000000000000// Copyright 2011 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 csv import ( "bytes" "errors" "testing" ) var writeTests = []struct { Input [][]string Output string UseCRLF bool }{ {Input: [][]string{{"abc"}}, Output: "abc\n"}, {Input: [][]string{{"abc"}}, Output: "abc\r\n", UseCRLF: true}, {Input: [][]string{{`"abc"`}}, Output: `"""abc"""` + "\n"}, {Input: [][]string{{`a"b`}}, Output: `"a""b"` + "\n"}, {Input: [][]string{{`"a"b"`}}, Output: `"""a""b"""` + "\n"}, {Input: [][]string{{" abc"}}, Output: `" abc"` + "\n"}, {Input: [][]string{{"abc,def"}}, Output: `"abc,def"` + "\n"}, {Input: [][]string{{"abc", "def"}}, Output: "abc,def\n"}, {Input: [][]string{{"abc"}, {"def"}}, Output: "abc\ndef\n"}, {Input: [][]string{{"abc\ndef"}}, Output: "\"abc\ndef\"\n"}, {Input: [][]string{{"abc\ndef"}}, Output: "\"abc\r\ndef\"\r\n", UseCRLF: true}, {Input: [][]string{{"abc\rdef"}}, Output: "\"abcdef\"\r\n", UseCRLF: true}, {Input: [][]string{{"abc\rdef"}}, Output: "\"abc\rdef\"\n", UseCRLF: false}, } func TestWrite(t *testing.T) { for n, tt := range writeTests { b := &bytes.Buffer{} f := NewWriter(b) f.UseCRLF = tt.UseCRLF err := f.WriteAll(tt.Input) if err != nil { t.Errorf("Unexpected error: %s\n", err) } out := b.String() if out != tt.Output { t.Errorf("#%d: out=%q want %q", n, out, tt.Output) } } } type errorWriter struct{} func (e errorWriter) Write(b []byte) (int, error) { return 0, errors.New("Test") } func TestError(t *testing.T) { b := &bytes.Buffer{} f := NewWriter(b) f.Write([]string{"abc"}) f.Flush() err := f.Error() if err != nil { t.Errorf("Unexpected error: %s\n", err) } f = NewWriter(errorWriter{}) f.Write([]string{"abc"}) f.Flush() err = f.Error() if err == nil { t.Error("Error should not be nil") } } go/src/pkg/encoding/encoding.go0100644000000000000000000000360012412656737016751 0ustar00rootroot00000000000000// Copyright 2013 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 encoding defines interfaces shared by other packages that // convert data to and from byte-level and textual representations. // Packages that check for these interfaces include encoding/gob, // encoding/json, and encoding/xml. As a result, implementing an // interface once can make a type useful in multiple encodings. // Standard types that implement these interfaces include time.Time and net.IP. // The interfaces come in pairs that produce and consume encoded data. package encoding // BinaryMarshaler is the interface implemented by an object that can // marshal itself into a binary form. // // MarshalBinary encodes the receiver into a binary form and returns the result. type BinaryMarshaler interface { MarshalBinary() (data []byte, err error) } // BinaryUnmarshaler is the interface implemented by an object that can // unmarshal a binary representation of itself. // // UnmarshalBinary must be able to decode the form generated by MarshalBinary. // UnmarshalBinary must copy the data if it wishes to retain the data // after returning. type BinaryUnmarshaler interface { UnmarshalBinary(data []byte) error } // TextMarshaler is the interface implemented by an object that can // marshal itself into a textual form. // // MarshalText encodes the receiver into UTF-8-encoded text and returns the result. type TextMarshaler interface { MarshalText() (text []byte, err error) } // TextUnmarshaler is the interface implemented by an object that can // unmarshal a textual representation of itself. // // UnmarshalText must be able to decode the form generated by MarshalText. // UnmarshalText must copy the text if it wishes to retain the text // after returning. type TextUnmarshaler interface { UnmarshalText(text []byte) error } go/src/pkg/encoding/gob0040755000000000000000000000000012412656737015330 5ustar00rootroot00000000000000go/src/pkg/encoding/gob/codec_test.go0100644000000000000000000010374612412656737020062 0ustar00rootroot00000000000000// Copyright 2009 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 gob import ( "bytes" "errors" "flag" "math" "math/rand" "reflect" "strings" "testing" "time" "unsafe" ) var doFuzzTests = flag.Bool("gob.fuzz", false, "run the fuzz tests, which are large and very slow") // Guarantee encoding format by comparing some encodings to hand-written values type EncodeT struct { x uint64 b []byte } var encodeT = []EncodeT{ {0x00, []byte{0x00}}, {0x0F, []byte{0x0F}}, {0xFF, []byte{0xFF, 0xFF}}, {0xFFFF, []byte{0xFE, 0xFF, 0xFF}}, {0xFFFFFF, []byte{0xFD, 0xFF, 0xFF, 0xFF}}, {0xFFFFFFFF, []byte{0xFC, 0xFF, 0xFF, 0xFF, 0xFF}}, {0xFFFFFFFFFF, []byte{0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}}, {0xFFFFFFFFFFFF, []byte{0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}}, {0xFFFFFFFFFFFFFF, []byte{0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}}, {0xFFFFFFFFFFFFFFFF, []byte{0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}}, {0x1111, []byte{0xFE, 0x11, 0x11}}, {0x1111111111111111, []byte{0xF8, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11}}, {0x8888888888888888, []byte{0xF8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}, {1 << 63, []byte{0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, } // testError is meant to be used as a deferred function to turn a panic(gobError) into a // plain test.Error call. func testError(t *testing.T) { if e := recover(); e != nil { t.Error(e.(gobError).err) // Will re-panic if not one of our errors, such as a runtime error. } return } // Test basic encode/decode routines for unsigned integers func TestUintCodec(t *testing.T) { defer testError(t) b := new(bytes.Buffer) encState := newEncoderState(b) for _, tt := range encodeT { b.Reset() encState.encodeUint(tt.x) if !bytes.Equal(tt.b, b.Bytes()) { t.Errorf("encodeUint: %#x encode: expected % x got % x", tt.x, tt.b, b.Bytes()) } } decState := newDecodeState(b) for u := uint64(0); ; u = (u + 1) * 7 { b.Reset() encState.encodeUint(u) v := decState.decodeUint() if u != v { t.Errorf("Encode/Decode: sent %#x received %#x", u, v) } if u&(1<<63) != 0 { break } } } func verifyInt(i int64, t *testing.T) { defer testError(t) var b = new(bytes.Buffer) encState := newEncoderState(b) encState.encodeInt(i) decState := newDecodeState(b) decState.buf = make([]byte, 8) j := decState.decodeInt() if i != j { t.Errorf("Encode/Decode: sent %#x received %#x", uint64(i), uint64(j)) } } // Test basic encode/decode routines for signed integers func TestIntCodec(t *testing.T) { for u := uint64(0); ; u = (u + 1) * 7 { // Do positive and negative values i := int64(u) verifyInt(i, t) verifyInt(-i, t) verifyInt(^i, t) if u&(1<<63) != 0 { break } } verifyInt(-1<<63, t) // a tricky case } // The result of encoding a true boolean with field number 7 var boolResult = []byte{0x07, 0x01} // The result of encoding a number 17 with field number 7 var signedResult = []byte{0x07, 2 * 17} var unsignedResult = []byte{0x07, 17} var floatResult = []byte{0x07, 0xFE, 0x31, 0x40} // The result of encoding a number 17+19i with field number 7 var complexResult = []byte{0x07, 0xFE, 0x31, 0x40, 0xFE, 0x33, 0x40} // The result of encoding "hello" with field number 7 var bytesResult = []byte{0x07, 0x05, 'h', 'e', 'l', 'l', 'o'} func newDecodeState(buf *bytes.Buffer) *decoderState { d := new(decoderState) d.b = buf d.buf = make([]byte, uint64Size) return d } func newEncoderState(b *bytes.Buffer) *encoderState { b.Reset() state := &encoderState{enc: nil, b: b} state.fieldnum = -1 return state } // Test instruction execution for encoding. // Do not run the machine yet; instead do individual instructions crafted by hand. func TestScalarEncInstructions(t *testing.T) { var b = new(bytes.Buffer) // bool { data := struct{ a bool }{true} instr := &encInstr{encBool, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(boolResult, b.Bytes()) { t.Errorf("bool enc instructions: expected % x got % x", boolResult, b.Bytes()) } } // int { b.Reset() data := struct{ a int }{17} instr := &encInstr{encInt, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(signedResult, b.Bytes()) { t.Errorf("int enc instructions: expected % x got % x", signedResult, b.Bytes()) } } // uint { b.Reset() data := struct{ a uint }{17} instr := &encInstr{encUint, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(unsignedResult, b.Bytes()) { t.Errorf("uint enc instructions: expected % x got % x", unsignedResult, b.Bytes()) } } // int8 { b.Reset() data := struct{ a int8 }{17} instr := &encInstr{encInt8, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(signedResult, b.Bytes()) { t.Errorf("int8 enc instructions: expected % x got % x", signedResult, b.Bytes()) } } // uint8 { b.Reset() data := struct{ a uint8 }{17} instr := &encInstr{encUint8, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(unsignedResult, b.Bytes()) { t.Errorf("uint8 enc instructions: expected % x got % x", unsignedResult, b.Bytes()) } } // int16 { b.Reset() data := struct{ a int16 }{17} instr := &encInstr{encInt16, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(signedResult, b.Bytes()) { t.Errorf("int16 enc instructions: expected % x got % x", signedResult, b.Bytes()) } } // uint16 { b.Reset() data := struct{ a uint16 }{17} instr := &encInstr{encUint16, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(unsignedResult, b.Bytes()) { t.Errorf("uint16 enc instructions: expected % x got % x", unsignedResult, b.Bytes()) } } // int32 { b.Reset() data := struct{ a int32 }{17} instr := &encInstr{encInt32, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(signedResult, b.Bytes()) { t.Errorf("int32 enc instructions: expected % x got % x", signedResult, b.Bytes()) } } // uint32 { b.Reset() data := struct{ a uint32 }{17} instr := &encInstr{encUint32, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(unsignedResult, b.Bytes()) { t.Errorf("uint32 enc instructions: expected % x got % x", unsignedResult, b.Bytes()) } } // int64 { b.Reset() data := struct{ a int64 }{17} instr := &encInstr{encInt64, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(signedResult, b.Bytes()) { t.Errorf("int64 enc instructions: expected % x got % x", signedResult, b.Bytes()) } } // uint64 { b.Reset() data := struct{ a uint64 }{17} instr := &encInstr{encUint64, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(unsignedResult, b.Bytes()) { t.Errorf("uint64 enc instructions: expected % x got % x", unsignedResult, b.Bytes()) } } // float32 { b.Reset() data := struct{ a float32 }{17} instr := &encInstr{encFloat32, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(floatResult, b.Bytes()) { t.Errorf("float32 enc instructions: expected % x got % x", floatResult, b.Bytes()) } } // float64 { b.Reset() data := struct{ a float64 }{17} instr := &encInstr{encFloat64, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(floatResult, b.Bytes()) { t.Errorf("float64 enc instructions: expected % x got % x", floatResult, b.Bytes()) } } // bytes == []uint8 { b.Reset() data := struct{ a []byte }{[]byte("hello")} instr := &encInstr{encUint8Array, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(bytesResult, b.Bytes()) { t.Errorf("bytes enc instructions: expected % x got % x", bytesResult, b.Bytes()) } } // string { b.Reset() data := struct{ a string }{"hello"} instr := &encInstr{encString, 6, 0, 0} state := newEncoderState(b) instr.op(instr, state, unsafe.Pointer(&data)) if !bytes.Equal(bytesResult, b.Bytes()) { t.Errorf("string enc instructions: expected % x got % x", bytesResult, b.Bytes()) } } } func execDec(typ string, instr *decInstr, state *decoderState, t *testing.T, p unsafe.Pointer) { defer testError(t) v := int(state.decodeUint()) if v+state.fieldnum != 6 { t.Fatalf("decoding field number %d, got %d", 6, v+state.fieldnum) } instr.op(instr, state, decIndirect(p, instr.indir)) state.fieldnum = 6 } func newDecodeStateFromData(data []byte) *decoderState { b := bytes.NewBuffer(data) state := newDecodeState(b) state.fieldnum = -1 return state } // Test instruction execution for decoding. // Do not run the machine yet; instead do individual instructions crafted by hand. func TestScalarDecInstructions(t *testing.T) { ovfl := errors.New("overflow") // bool { var data struct { a bool } instr := &decInstr{decBool, 6, 0, 0, ovfl} state := newDecodeStateFromData(boolResult) execDec("bool", instr, state, t, unsafe.Pointer(&data)) if data.a != true { t.Errorf("bool a = %v not true", data.a) } } // int { var data struct { a int } instr := &decInstr{decOpTable[reflect.Int], 6, 0, 0, ovfl} state := newDecodeStateFromData(signedResult) execDec("int", instr, state, t, unsafe.Pointer(&data)) if data.a != 17 { t.Errorf("int a = %v not 17", data.a) } } // uint { var data struct { a uint } instr := &decInstr{decOpTable[reflect.Uint], 6, 0, 0, ovfl} state := newDecodeStateFromData(unsignedResult) execDec("uint", instr, state, t, unsafe.Pointer(&data)) if data.a != 17 { t.Errorf("uint a = %v not 17", data.a) } } // int8 { var data struct { a int8 } instr := &decInstr{decInt8, 6, 0, 0, ovfl} state := newDecodeStateFromData(signedResult) execDec("int8", instr, state, t, unsafe.Pointer(&data)) if data.a != 17 { t.Errorf("int8 a = %v not 17", data.a) } } // uint8 { var data struct { a uint8 } instr := &decInstr{decUint8, 6, 0, 0, ovfl} state := newDecodeStateFromData(unsignedResult) execDec("uint8", instr, state, t, unsafe.Pointer(&data)) if data.a != 17 { t.Errorf("uint8 a = %v not 17", data.a) } } // int16 { var data struct { a int16 } instr := &decInstr{decInt16, 6, 0, 0, ovfl} state := newDecodeStateFromData(signedResult) execDec("int16", instr, state, t, unsafe.Pointer(&data)) if data.a != 17 { t.Errorf("int16 a = %v not 17", data.a) } } // uint16 { var data struct { a uint16 } instr := &decInstr{decUint16, 6, 0, 0, ovfl} state := newDecodeStateFromData(unsignedResult) execDec("uint16", instr, state, t, unsafe.Pointer(&data)) if data.a != 17 { t.Errorf("uint16 a = %v not 17", data.a) } } // int32 { var data struct { a int32 } instr := &decInstr{decInt32, 6, 0, 0, ovfl} state := newDecodeStateFromData(signedResult) execDec("int32", instr, state, t, unsafe.Pointer(&data)) if data.a != 17 { t.Errorf("int32 a = %v not 17", data.a) } } // uint32 { var data struct { a uint32 } instr := &decInstr{decUint32, 6, 0, 0, ovfl} state := newDecodeStateFromData(unsignedResult) execDec("uint32", instr, state, t, unsafe.Pointer(&data)) if data.a != 17 { t.Errorf("uint32 a = %v not 17", data.a) } } // uintptr { var data struct { a uintptr } instr := &decInstr{decOpTable[reflect.Uintptr], 6, 0, 0, ovfl} state := newDecodeStateFromData(unsignedResult) execDec("uintptr", instr, state, t, unsafe.Pointer(&data)) if data.a != 17 { t.Errorf("uintptr a = %v not 17", data.a) } } // int64 { var data struct { a int64 } instr := &decInstr{decInt64, 6, 0, 0, ovfl} state := newDecodeStateFromData(signedResult) execDec("int64", instr, state, t, unsafe.Pointer(&data)) if data.a != 17 { t.Errorf("int64 a = %v not 17", data.a) } } // uint64 { var data struct { a uint64 } instr := &decInstr{decUint64, 6, 0, 0, ovfl} state := newDecodeStateFromData(unsignedResult) execDec("uint64", instr, state, t, unsafe.Pointer(&data)) if data.a != 17 { t.Errorf("uint64 a = %v not 17", data.a) } } // float32 { var data struct { a float32 } instr := &decInstr{decFloat32, 6, 0, 0, ovfl} state := newDecodeStateFromData(floatResult) execDec("float32", instr, state, t, unsafe.Pointer(&data)) if data.a != 17 { t.Errorf("float32 a = %v not 17", data.a) } } // float64 { var data struct { a float64 } instr := &decInstr{decFloat64, 6, 0, 0, ovfl} state := newDecodeStateFromData(floatResult) execDec("float64", instr, state, t, unsafe.Pointer(&data)) if data.a != 17 { t.Errorf("float64 a = %v not 17", data.a) } } // complex64 { var data struct { a complex64 } instr := &decInstr{decOpTable[reflect.Complex64], 6, 0, 0, ovfl} state := newDecodeStateFromData(complexResult) execDec("complex", instr, state, t, unsafe.Pointer(&data)) if data.a != 17+19i { t.Errorf("complex a = %v not 17+19i", data.a) } } // complex128 { var data struct { a complex128 } instr := &decInstr{decOpTable[reflect.Complex128], 6, 0, 0, ovfl} state := newDecodeStateFromData(complexResult) execDec("complex", instr, state, t, unsafe.Pointer(&data)) if data.a != 17+19i { t.Errorf("complex a = %v not 17+19i", data.a) } } // bytes == []uint8 { var data struct { a []byte } instr := &decInstr{decUint8Slice, 6, 0, 0, ovfl} state := newDecodeStateFromData(bytesResult) execDec("bytes", instr, state, t, unsafe.Pointer(&data)) if string(data.a) != "hello" { t.Errorf(`bytes a = %q not "hello"`, string(data.a)) } } // string { var data struct { a string } instr := &decInstr{decString, 6, 0, 0, ovfl} state := newDecodeStateFromData(bytesResult) execDec("bytes", instr, state, t, unsafe.Pointer(&data)) if data.a != "hello" { t.Errorf(`bytes a = %q not "hello"`, data.a) } } } func TestEndToEnd(t *testing.T) { type T2 struct { T string } s1 := "string1" s2 := "string2" type T1 struct { A, B, C int M map[string]*float64 EmptyMap map[string]int // to check that we receive a non-nil map. N *[3]float64 Strs *[2]string Int64s *[]int64 RI complex64 S string Y []byte T *T2 } pi := 3.14159 e := 2.71828 t1 := &T1{ A: 17, B: 18, C: -5, M: map[string]*float64{"pi": &pi, "e": &e}, EmptyMap: make(map[string]int), N: &[3]float64{1.5, 2.5, 3.5}, Strs: &[2]string{s1, s2}, Int64s: &[]int64{77, 89, 123412342134}, RI: 17 - 23i, S: "Now is the time", Y: []byte("hello, sailor"), T: &T2{"this is T2"}, } b := new(bytes.Buffer) err := NewEncoder(b).Encode(t1) if err != nil { t.Error("encode:", err) } var _t1 T1 err = NewDecoder(b).Decode(&_t1) if err != nil { t.Fatal("decode:", err) } if !reflect.DeepEqual(t1, &_t1) { t.Errorf("encode expected %v got %v", *t1, _t1) } // Be absolutely sure the received map is non-nil. if t1.EmptyMap == nil { t.Errorf("nil map sent") } if _t1.EmptyMap == nil { t.Errorf("nil map received") } } func TestOverflow(t *testing.T) { type inputT struct { Maxi int64 Mini int64 Maxu uint64 Maxf float64 Minf float64 Maxc complex128 Minc complex128 } var it inputT var err error b := new(bytes.Buffer) enc := NewEncoder(b) dec := NewDecoder(b) // int8 b.Reset() it = inputT{ Maxi: math.MaxInt8 + 1, } type outi8 struct { Maxi int8 Mini int8 } var o1 outi8 enc.Encode(it) err = dec.Decode(&o1) if err == nil || err.Error() != `value for "Maxi" out of range` { t.Error("wrong overflow error for int8:", err) } it = inputT{ Mini: math.MinInt8 - 1, } b.Reset() enc.Encode(it) err = dec.Decode(&o1) if err == nil || err.Error() != `value for "Mini" out of range` { t.Error("wrong underflow error for int8:", err) } // int16 b.Reset() it = inputT{ Maxi: math.MaxInt16 + 1, } type outi16 struct { Maxi int16 Mini int16 } var o2 outi16 enc.Encode(it) err = dec.Decode(&o2) if err == nil || err.Error() != `value for "Maxi" out of range` { t.Error("wrong overflow error for int16:", err) } it = inputT{ Mini: math.MinInt16 - 1, } b.Reset() enc.Encode(it) err = dec.Decode(&o2) if err == nil || err.Error() != `value for "Mini" out of range` { t.Error("wrong underflow error for int16:", err) } // int32 b.Reset() it = inputT{ Maxi: math.MaxInt32 + 1, } type outi32 struct { Maxi int32 Mini int32 } var o3 outi32 enc.Encode(it) err = dec.Decode(&o3) if err == nil || err.Error() != `value for "Maxi" out of range` { t.Error("wrong overflow error for int32:", err) } it = inputT{ Mini: math.MinInt32 - 1, } b.Reset() enc.Encode(it) err = dec.Decode(&o3) if err == nil || err.Error() != `value for "Mini" out of range` { t.Error("wrong underflow error for int32:", err) } // uint8 b.Reset() it = inputT{ Maxu: math.MaxUint8 + 1, } type outu8 struct { Maxu uint8 } var o4 outu8 enc.Encode(it) err = dec.Decode(&o4) if err == nil || err.Error() != `value for "Maxu" out of range` { t.Error("wrong overflow error for uint8:", err) } // uint16 b.Reset() it = inputT{ Maxu: math.MaxUint16 + 1, } type outu16 struct { Maxu uint16 } var o5 outu16 enc.Encode(it) err = dec.Decode(&o5) if err == nil || err.Error() != `value for "Maxu" out of range` { t.Error("wrong overflow error for uint16:", err) } // uint32 b.Reset() it = inputT{ Maxu: math.MaxUint32 + 1, } type outu32 struct { Maxu uint32 } var o6 outu32 enc.Encode(it) err = dec.Decode(&o6) if err == nil || err.Error() != `value for "Maxu" out of range` { t.Error("wrong overflow error for uint32:", err) } // float32 b.Reset() it = inputT{ Maxf: math.MaxFloat32 * 2, } type outf32 struct { Maxf float32 Minf float32 } var o7 outf32 enc.Encode(it) err = dec.Decode(&o7) if err == nil || err.Error() != `value for "Maxf" out of range` { t.Error("wrong overflow error for float32:", err) } // complex64 b.Reset() it = inputT{ Maxc: complex(math.MaxFloat32*2, math.MaxFloat32*2), } type outc64 struct { Maxc complex64 Minc complex64 } var o8 outc64 enc.Encode(it) err = dec.Decode(&o8) if err == nil || err.Error() != `value for "Maxc" out of range` { t.Error("wrong overflow error for complex64:", err) } } func TestNesting(t *testing.T) { type RT struct { A string Next *RT } rt := new(RT) rt.A = "level1" rt.Next = new(RT) rt.Next.A = "level2" b := new(bytes.Buffer) NewEncoder(b).Encode(rt) var drt RT dec := NewDecoder(b) err := dec.Decode(&drt) if err != nil { t.Fatal("decoder error:", err) } if drt.A != rt.A { t.Errorf("nesting: encode expected %v got %v", *rt, drt) } if drt.Next == nil { t.Errorf("nesting: recursion failed") } if drt.Next.A != rt.Next.A { t.Errorf("nesting: encode expected %v got %v", *rt.Next, *drt.Next) } } // These three structures have the same data with different indirections type T0 struct { A int B int C int D int } type T1 struct { A int B *int C **int D ***int } type T2 struct { A ***int B **int C *int D int } func TestAutoIndirection(t *testing.T) { // First transfer t1 into t0 var t1 T1 t1.A = 17 t1.B = new(int) *t1.B = 177 t1.C = new(*int) *t1.C = new(int) **t1.C = 1777 t1.D = new(**int) *t1.D = new(*int) **t1.D = new(int) ***t1.D = 17777 b := new(bytes.Buffer) enc := NewEncoder(b) enc.Encode(t1) dec := NewDecoder(b) var t0 T0 dec.Decode(&t0) if t0.A != 17 || t0.B != 177 || t0.C != 1777 || t0.D != 17777 { t.Errorf("t1->t0: expected {17 177 1777 17777}; got %v", t0) } // Now transfer t2 into t0 var t2 T2 t2.D = 17777 t2.C = new(int) *t2.C = 1777 t2.B = new(*int) *t2.B = new(int) **t2.B = 177 t2.A = new(**int) *t2.A = new(*int) **t2.A = new(int) ***t2.A = 17 b.Reset() enc.Encode(t2) t0 = T0{} dec.Decode(&t0) if t0.A != 17 || t0.B != 177 || t0.C != 1777 || t0.D != 17777 { t.Errorf("t2->t0 expected {17 177 1777 17777}; got %v", t0) } // Now transfer t0 into t1 t0 = T0{17, 177, 1777, 17777} b.Reset() enc.Encode(t0) t1 = T1{} dec.Decode(&t1) if t1.A != 17 || *t1.B != 177 || **t1.C != 1777 || ***t1.D != 17777 { t.Errorf("t0->t1 expected {17 177 1777 17777}; got {%d %d %d %d}", t1.A, *t1.B, **t1.C, ***t1.D) } // Now transfer t0 into t2 b.Reset() enc.Encode(t0) t2 = T2{} dec.Decode(&t2) if ***t2.A != 17 || **t2.B != 177 || *t2.C != 1777 || t2.D != 17777 { t.Errorf("t0->t2 expected {17 177 1777 17777}; got {%d %d %d %d}", ***t2.A, **t2.B, *t2.C, t2.D) } // Now do t2 again but without pre-allocated pointers. b.Reset() enc.Encode(t0) ***t2.A = 0 **t2.B = 0 *t2.C = 0 t2.D = 0 dec.Decode(&t2) if ***t2.A != 17 || **t2.B != 177 || *t2.C != 1777 || t2.D != 17777 { t.Errorf("t0->t2 expected {17 177 1777 17777}; got {%d %d %d %d}", ***t2.A, **t2.B, *t2.C, t2.D) } } type RT0 struct { A int B string C float64 } type RT1 struct { C float64 B string A int NotSet string } func TestReorderedFields(t *testing.T) { var rt0 RT0 rt0.A = 17 rt0.B = "hello" rt0.C = 3.14159 b := new(bytes.Buffer) NewEncoder(b).Encode(rt0) dec := NewDecoder(b) var rt1 RT1 // Wire type is RT0, local type is RT1. err := dec.Decode(&rt1) if err != nil { t.Fatal("decode error:", err) } if rt0.A != rt1.A || rt0.B != rt1.B || rt0.C != rt1.C { t.Errorf("rt1->rt0: expected %v; got %v", rt0, rt1) } } // Like an RT0 but with fields we'll ignore on the decode side. type IT0 struct { A int64 B string Ignore_d []int Ignore_e [3]float64 Ignore_f bool Ignore_g string Ignore_h []byte Ignore_i *RT1 Ignore_m map[string]int C float64 } func TestIgnoredFields(t *testing.T) { var it0 IT0 it0.A = 17 it0.B = "hello" it0.C = 3.14159 it0.Ignore_d = []int{1, 2, 3} it0.Ignore_e[0] = 1.0 it0.Ignore_e[1] = 2.0 it0.Ignore_e[2] = 3.0 it0.Ignore_f = true it0.Ignore_g = "pay no attention" it0.Ignore_h = []byte("to the curtain") it0.Ignore_i = &RT1{3.1, "hi", 7, "hello"} it0.Ignore_m = map[string]int{"one": 1, "two": 2} b := new(bytes.Buffer) NewEncoder(b).Encode(it0) dec := NewDecoder(b) var rt1 RT1 // Wire type is IT0, local type is RT1. err := dec.Decode(&rt1) if err != nil { t.Error("error: ", err) } if int(it0.A) != rt1.A || it0.B != rt1.B || it0.C != rt1.C { t.Errorf("rt0->rt1: expected %v; got %v", it0, rt1) } } func TestBadRecursiveType(t *testing.T) { type Rec ***Rec var rec Rec b := new(bytes.Buffer) err := NewEncoder(b).Encode(&rec) if err == nil { t.Error("expected error; got none") } else if strings.Index(err.Error(), "recursive") < 0 { t.Error("expected recursive type error; got", err) } // Can't test decode easily because we can't encode one, so we can't pass one to a Decoder. } type Indirect struct { A ***[3]int S ***[]int M ****map[string]int } type Direct struct { A [3]int S []int M map[string]int } func TestIndirectSliceMapArray(t *testing.T) { // Marshal indirect, unmarshal to direct. i := new(Indirect) i.A = new(**[3]int) *i.A = new(*[3]int) **i.A = new([3]int) ***i.A = [3]int{1, 2, 3} i.S = new(**[]int) *i.S = new(*[]int) **i.S = new([]int) ***i.S = []int{4, 5, 6} i.M = new(***map[string]int) *i.M = new(**map[string]int) **i.M = new(*map[string]int) ***i.M = new(map[string]int) ****i.M = map[string]int{"one": 1, "two": 2, "three": 3} b := new(bytes.Buffer) NewEncoder(b).Encode(i) dec := NewDecoder(b) var d Direct err := dec.Decode(&d) if err != nil { t.Error("error: ", err) } if len(d.A) != 3 || d.A[0] != 1 || d.A[1] != 2 || d.A[2] != 3 { t.Errorf("indirect to direct: d.A is %v not %v", d.A, ***i.A) } if len(d.S) != 3 || d.S[0] != 4 || d.S[1] != 5 || d.S[2] != 6 { t.Errorf("indirect to direct: d.S is %v not %v", d.S, ***i.S) } if len(d.M) != 3 || d.M["one"] != 1 || d.M["two"] != 2 || d.M["three"] != 3 { t.Errorf("indirect to direct: d.M is %v not %v", d.M, ***i.M) } // Marshal direct, unmarshal to indirect. d.A = [3]int{11, 22, 33} d.S = []int{44, 55, 66} d.M = map[string]int{"four": 4, "five": 5, "six": 6} i = new(Indirect) b.Reset() NewEncoder(b).Encode(d) dec = NewDecoder(b) err = dec.Decode(&i) if err != nil { t.Fatal("error: ", err) } if len(***i.A) != 3 || (***i.A)[0] != 11 || (***i.A)[1] != 22 || (***i.A)[2] != 33 { t.Errorf("direct to indirect: ***i.A is %v not %v", ***i.A, d.A) } if len(***i.S) != 3 || (***i.S)[0] != 44 || (***i.S)[1] != 55 || (***i.S)[2] != 66 { t.Errorf("direct to indirect: ***i.S is %v not %v", ***i.S, ***i.S) } if len(****i.M) != 3 || (****i.M)["four"] != 4 || (****i.M)["five"] != 5 || (****i.M)["six"] != 6 { t.Errorf("direct to indirect: ****i.M is %v not %v", ****i.M, d.M) } } // An interface with several implementations type Squarer interface { Square() int } type Int int func (i Int) Square() int { return int(i * i) } type Float float64 func (f Float) Square() int { return int(f * f) } type Vector []int func (v Vector) Square() int { sum := 0 for _, x := range v { sum += x * x } return sum } type Point struct { X, Y int } func (p Point) Square() int { return p.X*p.X + p.Y*p.Y } // A struct with interfaces in it. type InterfaceItem struct { I int Sq1, Sq2, Sq3 Squarer F float64 Sq []Squarer } // The same struct without interfaces type NoInterfaceItem struct { I int F float64 } func TestInterface(t *testing.T) { iVal := Int(3) fVal := Float(5) // Sending a Vector will require that the receiver define a type in the middle of // receiving the value for item2. vVal := Vector{1, 2, 3} b := new(bytes.Buffer) item1 := &InterfaceItem{1, iVal, fVal, vVal, 11.5, []Squarer{iVal, fVal, nil, vVal}} // Register the types. Register(Int(0)) Register(Float(0)) Register(Vector{}) err := NewEncoder(b).Encode(item1) if err != nil { t.Error("expected no encode error; got", err) } item2 := InterfaceItem{} err = NewDecoder(b).Decode(&item2) if err != nil { t.Fatal("decode:", err) } if item2.I != item1.I { t.Error("normal int did not decode correctly") } if item2.Sq1 == nil || item2.Sq1.Square() != iVal.Square() { t.Error("Int did not decode correctly") } if item2.Sq2 == nil || item2.Sq2.Square() != fVal.Square() { t.Error("Float did not decode correctly") } if item2.Sq3 == nil || item2.Sq3.Square() != vVal.Square() { t.Error("Vector did not decode correctly") } if item2.F != item1.F { t.Error("normal float did not decode correctly") } // Now check that we received a slice of Squarers correctly, including a nil element if len(item1.Sq) != len(item2.Sq) { t.Fatalf("[]Squarer length wrong: got %d; expected %d", len(item2.Sq), len(item1.Sq)) } for i, v1 := range item1.Sq { v2 := item2.Sq[i] if v1 == nil || v2 == nil { if v1 != nil || v2 != nil { t.Errorf("item %d inconsistent nils", i) } } else if v1.Square() != v2.Square() { t.Errorf("item %d inconsistent values: %v %v", i, v1, v2) } } } // A struct with all basic types, stored in interfaces. type BasicInterfaceItem struct { Int, Int8, Int16, Int32, Int64 interface{} Uint, Uint8, Uint16, Uint32, Uint64 interface{} Float32, Float64 interface{} Complex64, Complex128 interface{} Bool interface{} String interface{} Bytes interface{} } func TestInterfaceBasic(t *testing.T) { b := new(bytes.Buffer) item1 := &BasicInterfaceItem{ int(1), int8(1), int16(1), int32(1), int64(1), uint(1), uint8(1), uint16(1), uint32(1), uint64(1), float32(1), 1.0, complex64(1i), complex128(1i), true, "hello", []byte("sailor"), } err := NewEncoder(b).Encode(item1) if err != nil { t.Error("expected no encode error; got", err) } item2 := &BasicInterfaceItem{} err = NewDecoder(b).Decode(&item2) if err != nil { t.Fatal("decode:", err) } if !reflect.DeepEqual(item1, item2) { t.Errorf("encode expected %v got %v", item1, item2) } // Hand check a couple for correct types. if v, ok := item2.Bool.(bool); !ok || !v { t.Error("boolean should be true") } if v, ok := item2.String.(string); !ok || v != item1.String.(string) { t.Errorf("string should be %v is %v", item1.String, v) } } type String string type PtrInterfaceItem struct { Str1 interface{} // basic Str2 interface{} // derived } // We'll send pointers; should receive values. // Also check that we can register T but send *T. func TestInterfacePointer(t *testing.T) { b := new(bytes.Buffer) str1 := "howdy" str2 := String("kiddo") item1 := &PtrInterfaceItem{ &str1, &str2, } // Register the type. Register(str2) err := NewEncoder(b).Encode(item1) if err != nil { t.Error("expected no encode error; got", err) } item2 := &PtrInterfaceItem{} err = NewDecoder(b).Decode(&item2) if err != nil { t.Fatal("decode:", err) } // Hand test for correct types and values. if v, ok := item2.Str1.(string); !ok || v != str1 { t.Errorf("basic string failed: %q should be %q", v, str1) } if v, ok := item2.Str2.(String); !ok || v != str2 { t.Errorf("derived type String failed: %q should be %q", v, str2) } } func TestIgnoreInterface(t *testing.T) { iVal := Int(3) fVal := Float(5) // Sending a Point will require that the receiver define a type in the middle of // receiving the value for item2. pVal := Point{2, 3} b := new(bytes.Buffer) item1 := &InterfaceItem{1, iVal, fVal, pVal, 11.5, nil} // Register the types. Register(Int(0)) Register(Float(0)) Register(Point{}) err := NewEncoder(b).Encode(item1) if err != nil { t.Error("expected no encode error; got", err) } item2 := NoInterfaceItem{} err = NewDecoder(b).Decode(&item2) if err != nil { t.Fatal("decode:", err) } if item2.I != item1.I { t.Error("normal int did not decode correctly") } if item2.F != item2.F { t.Error("normal float did not decode correctly") } } type U struct { A int B string c float64 D uint } func TestUnexportedFields(t *testing.T) { var u0 U u0.A = 17 u0.B = "hello" u0.c = 3.14159 u0.D = 23 b := new(bytes.Buffer) NewEncoder(b).Encode(u0) dec := NewDecoder(b) var u1 U u1.c = 1234. err := dec.Decode(&u1) if err != nil { t.Fatal("decode error:", err) } if u0.A != u0.A || u0.B != u1.B || u0.D != u1.D { t.Errorf("u1->u0: expected %v; got %v", u0, u1) } if u1.c != 1234. { t.Error("u1.c modified") } } var singletons = []interface{}{ true, 7, 3.2, "hello", [3]int{11, 22, 33}, []float32{0.5, 0.25, 0.125}, map[string]int{"one": 1, "two": 2}, } func TestDebugSingleton(t *testing.T) { if debugFunc == nil { return } b := new(bytes.Buffer) // Accumulate a number of values and print them out all at once. for _, x := range singletons { err := NewEncoder(b).Encode(x) if err != nil { t.Fatal("encode:", err) } } debugFunc(b) } // A type that won't be defined in the gob until we send it in an interface value. type OnTheFly struct { A int } type DT struct { // X OnTheFly A int B string C float64 I interface{} J interface{} I_nil interface{} M map[string]int T [3]int S []string } func newDT() DT { var dt DT dt.A = 17 dt.B = "hello" dt.C = 3.14159 dt.I = 271828 dt.J = OnTheFly{3} dt.I_nil = nil dt.M = map[string]int{"one": 1, "two": 2} dt.T = [3]int{11, 22, 33} dt.S = []string{"hi", "joe"} return dt } func TestDebugStruct(t *testing.T) { if debugFunc == nil { return } Register(OnTheFly{}) dt := newDT() b := new(bytes.Buffer) err := NewEncoder(b).Encode(dt) if err != nil { t.Fatal("encode:", err) } debugBuffer := bytes.NewBuffer(b.Bytes()) dt2 := &DT{} err = NewDecoder(b).Decode(&dt2) if err != nil { t.Error("decode:", err) } debugFunc(debugBuffer) } func encFuzzDec(rng *rand.Rand, in interface{}) error { buf := new(bytes.Buffer) enc := NewEncoder(buf) if err := enc.Encode(&in); err != nil { return err } b := buf.Bytes() for i, bi := range b { if rng.Intn(10) < 3 { b[i] = bi + uint8(rng.Intn(256)) } } dec := NewDecoder(buf) var e interface{} if err := dec.Decode(&e); err != nil { return err } return nil } // This does some "fuzz testing" by attempting to decode a sequence of random bytes. func TestFuzz(t *testing.T) { if !*doFuzzTests { t.Logf("disabled; run with -gob.fuzz to enable") return } // all possible inputs input := []interface{}{ new(int), new(float32), new(float64), new(complex128), &ByteStruct{255}, &ArrayStruct{}, &StringStruct{"hello"}, &GobTest1{0, &StringStruct{"hello"}}, } testFuzz(t, time.Now().UnixNano(), 100, input...) } func TestFuzzRegressions(t *testing.T) { if !*doFuzzTests { t.Logf("disabled; run with -gob.fuzz to enable") return } // An instance triggering a type name of length ~102 GB. testFuzz(t, 1328492090837718000, 100, new(float32)) // An instance triggering a type name of 1.6 GB. // Note: can take several minutes to run. testFuzz(t, 1330522872628565000, 100, new(int)) } func testFuzz(t *testing.T, seed int64, n int, input ...interface{}) { for _, e := range input { t.Logf("seed=%d n=%d e=%T", seed, n, e) rng := rand.New(rand.NewSource(seed)) for i := 0; i < n; i++ { encFuzzDec(rng, e) } } } // TestFuzzOneByte tries to decode corrupted input sequences // and checks that no panic occurs. func TestFuzzOneByte(t *testing.T) { buf := new(bytes.Buffer) Register(OnTheFly{}) dt := newDT() if err := NewEncoder(buf).Encode(dt); err != nil { t.Fatal(err) } s := buf.String() indices := make([]int, 0, len(s)) for i := 0; i < len(s); i++ { switch i { case 14, 167, 231, 265: // a slice length, corruptions are not handled yet. continue } indices = append(indices, i) } if testing.Short() { indices = []int{1, 111, 178} // known fixed panics } for _, i := range indices { for j := 0; j < 256; j += 3 { b := []byte(s) b[i] ^= byte(j) var e DT func() { defer func() { if p := recover(); p != nil { t.Errorf("crash for b[%d] ^= 0x%x", i, j) panic(p) } }() err := NewDecoder(bytes.NewReader(b)).Decode(&e) _ = err }() } } } go/src/pkg/encoding/gob/debug.go0100644000000000000000000004422312412656737017026 0ustar00rootroot00000000000000// Copyright 2009 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. // Delete the next line to include in the gob package. // +build ignore package gob // This file is not normally included in the gob package. Used only for debugging the package itself. // Except for reading uints, it is an implementation of a reader that is independent of // the one implemented by Decoder. // To enable the Debug function, delete the +build ignore line above and do // go install import ( "bytes" "fmt" "io" "os" "strings" "sync" ) var dumpBytes = false // If true, print the remaining bytes in the input buffer at each item. // Init installs the debugging facility. If this file is not compiled in the // package, the tests in codec_test.go are no-ops. func init() { debugFunc = Debug } var ( blanks = bytes.Repeat([]byte{' '}, 3*10) empty = []byte(": \n") tabs = strings.Repeat("\t", 100) ) // tab indents itself when printed. type tab int func (t tab) String() string { n := int(t) if n > len(tabs) { n = len(tabs) } return tabs[0:n] } func (t tab) print() { fmt.Fprint(os.Stderr, t) } // A peekReader wraps an io.Reader, allowing one to peek ahead to see // what's coming without stealing the data from the client of the Reader. type peekReader struct { r io.Reader data []byte // read-ahead data } // newPeekReader returns a peekReader that wraps r. func newPeekReader(r io.Reader) *peekReader { return &peekReader{r: r} } // Read is the usual method. It will first take data that has been read ahead. func (p *peekReader) Read(b []byte) (n int, err error) { if len(p.data) == 0 { return p.r.Read(b) } // Satisfy what's possible from the read-ahead data. n = copy(b, p.data) // Move data down to beginning of slice, to avoid endless growth copy(p.data, p.data[n:]) p.data = p.data[:len(p.data)-n] return } // peek returns as many bytes as possible from the unread // portion of the stream, up to the length of b. func (p *peekReader) peek(b []byte) (n int, err error) { if len(p.data) > 0 { n = copy(b, p.data) if n == len(b) { return } b = b[n:] } if len(b) == 0 { return } m, e := io.ReadFull(p.r, b) if m > 0 { p.data = append(p.data, b[:m]...) } n += m if e == io.ErrUnexpectedEOF { // That means m > 0 but we reached EOF. If we got data // we won't complain about not being able to peek enough. if n > 0 { e = nil } else { e = io.EOF } } return n, e } type debugger struct { mutex sync.Mutex remain int // the number of bytes known to remain in the input remainingKnown bool // the value of 'remain' is valid r *peekReader wireType map[typeId]*wireType tmp []byte // scratch space for decoding uints. } // dump prints the next nBytes of the input. // It arranges to print the output aligned from call to // call, to make it easy to see what has been consumed. func (deb *debugger) dump(format string, args ...interface{}) { if !dumpBytes { return } fmt.Fprintf(os.Stderr, format+" ", args...) if !deb.remainingKnown { return } if deb.remain < 0 { fmt.Fprintf(os.Stderr, "remaining byte count is negative! %d\n", deb.remain) return } data := make([]byte, deb.remain) n, _ := deb.r.peek(data) if n == 0 { os.Stderr.Write(empty) return } b := new(bytes.Buffer) fmt.Fprintf(b, "[%d]{\n", deb.remain) // Blanks until first byte lineLength := 0 if n := len(data); n%10 != 0 { lineLength = 10 - n%10 fmt.Fprintf(b, "\t%s", blanks[:lineLength*3]) } // 10 bytes per line for len(data) > 0 { if lineLength == 0 { fmt.Fprint(b, "\t") } m := 10 - lineLength lineLength = 0 if m > len(data) { m = len(data) } fmt.Fprintf(b, "% x\n", data[:m]) data = data[m:] } fmt.Fprint(b, "}\n") os.Stderr.Write(b.Bytes()) } // Debug prints a human-readable representation of the gob data read from r. // It is a no-op unless debugging was enabled when the package was built. func Debug(r io.Reader) { err := debug(r) if err != nil { fmt.Fprintf(os.Stderr, "gob debug: %s\n", err) } } // debug implements Debug, but catches panics and returns // them as errors to be printed by Debug. func debug(r io.Reader) (err error) { defer catchError(&err) fmt.Fprintln(os.Stderr, "Start of debugging") deb := &debugger{ r: newPeekReader(r), wireType: make(map[typeId]*wireType), tmp: make([]byte, 16), } if b, ok := r.(*bytes.Buffer); ok { deb.remain = b.Len() deb.remainingKnown = true } deb.gobStream() return } // note that we've consumed some bytes func (deb *debugger) consumed(n int) { if deb.remainingKnown { deb.remain -= n } } // int64 decodes and returns the next integer, which must be present. // Don't call this if you could be at EOF. func (deb *debugger) int64() int64 { return toInt(deb.uint64()) } // uint64 returns and decodes the next unsigned integer, which must be present. // Don't call this if you could be at EOF. // TODO: handle errors better. func (deb *debugger) uint64() uint64 { n, w, err := decodeUintReader(deb.r, deb.tmp) if err != nil { errorf("debug: read error: %s", err) } deb.consumed(w) return n } // GobStream: // DelimitedMessage* (until EOF) func (deb *debugger) gobStream() { // Make sure we're single-threaded through here. deb.mutex.Lock() defer deb.mutex.Unlock() for deb.delimitedMessage(0) { } } // DelimitedMessage: // uint(lengthOfMessage) Message func (deb *debugger) delimitedMessage(indent tab) bool { for { n := deb.loadBlock(true) if n < 0 { return false } deb.dump("Delimited message of length %d", n) deb.message(indent) } return true } // loadBlock preps us to read a message // of the length specified next in the input. It returns // the length of the block. The argument tells whether // an EOF is acceptable now. If it is and one is found, // the return value is negative. func (deb *debugger) loadBlock(eofOK bool) int { n64, w, err := decodeUintReader(deb.r, deb.tmp) // deb.uint64 will error at EOF if err != nil { if eofOK && err == io.EOF { return -1 } errorf("debug: unexpected error: %s", err) } deb.consumed(w) n := int(n64) if n < 0 { errorf("huge value for message length: %d", n64) } return int(n) } // Message: // TypeSequence TypedValue // TypeSequence // (TypeDefinition DelimitedTypeDefinition*)? // DelimitedTypeDefinition: // uint(lengthOfTypeDefinition) TypeDefinition // TypedValue: // int(typeId) Value func (deb *debugger) message(indent tab) bool { for { // Convert the uint64 to a signed integer typeId uid := deb.int64() id := typeId(uid) deb.dump("type id=%d", id) if id < 0 { deb.typeDefinition(indent, -id) n := deb.loadBlock(false) deb.dump("Message of length %d", n) continue } else { deb.value(indent, id) break } } return true } // Helper methods to make it easy to scan a type descriptor. // common returns the CommonType at the input point. func (deb *debugger) common() CommonType { fieldNum := -1 name := "" id := typeId(0) for { delta := deb.delta(-1) if delta == 0 { break } fieldNum += delta switch fieldNum { case 0: name = deb.string() case 1: // Id typeId id = deb.typeId() default: errorf("corrupted CommonType") } } return CommonType{name, id} } // uint returns the unsigned int at the input point, as a uint (not uint64). func (deb *debugger) uint() uint { return uint(deb.uint64()) } // int returns the signed int at the input point, as an int (not int64). func (deb *debugger) int() int { return int(deb.int64()) } // typeId returns the type id at the input point. func (deb *debugger) typeId() typeId { return typeId(deb.int64()) } // string returns the string at the input point. func (deb *debugger) string() string { x := int(deb.uint64()) b := make([]byte, x) nb, _ := deb.r.Read(b) if nb != x { errorf("corrupted type") } deb.consumed(nb) return string(b) } // delta returns the field delta at the input point. The expect argument, // if non-negative, identifies what the value should be. func (deb *debugger) delta(expect int) int { delta := int(deb.uint64()) if delta < 0 || (expect >= 0 && delta != expect) { errorf("decode: corrupted type: delta %d expected %d", delta, expect) } return delta } // TypeDefinition: // [int(-typeId) (already read)] encodingOfWireType func (deb *debugger) typeDefinition(indent tab, id typeId) { deb.dump("type definition for id %d", id) // Encoding is of a wireType. Decode the structure as usual fieldNum := -1 wire := new(wireType) // A wireType defines a single field. delta := deb.delta(-1) fieldNum += delta switch fieldNum { case 0: // array type, one field of {{Common}, elem, length} // Field number 0 is CommonType deb.delta(1) com := deb.common() // Field number 1 is type Id of elem deb.delta(1) id := deb.typeId() // Field number 3 is length deb.delta(1) length := deb.int() wire.ArrayT = &arrayType{com, id, length} case 1: // slice type, one field of {{Common}, elem} // Field number 0 is CommonType deb.delta(1) com := deb.common() // Field number 1 is type Id of elem deb.delta(1) id := deb.typeId() wire.SliceT = &sliceType{com, id} case 2: // struct type, one field of {{Common}, []fieldType} // Field number 0 is CommonType deb.delta(1) com := deb.common() // Field number 1 is slice of FieldType deb.delta(1) numField := int(deb.uint()) field := make([]*fieldType, numField) for i := 0; i < numField; i++ { field[i] = new(fieldType) deb.delta(1) // field 0 of fieldType: name field[i].Name = deb.string() deb.delta(1) // field 1 of fieldType: id field[i].Id = deb.typeId() deb.delta(0) // end of fieldType } wire.StructT = &structType{com, field} case 3: // map type, one field of {{Common}, key, elem} // Field number 0 is CommonType deb.delta(1) com := deb.common() // Field number 1 is type Id of key deb.delta(1) keyId := deb.typeId() // Field number 2 is type Id of elem deb.delta(1) elemId := deb.typeId() wire.MapT = &mapType{com, keyId, elemId} case 4: // GobEncoder type, one field of {{Common}} // Field number 0 is CommonType deb.delta(1) com := deb.common() wire.GobEncoderT = &gobEncoderType{com} case 5: // BinaryMarshaler type, one field of {{Common}} // Field number 0 is CommonType deb.delta(1) com := deb.common() wire.BinaryMarshalerT = &gobEncoderType{com} case 6: // TextMarshaler type, one field of {{Common}} // Field number 0 is CommonType deb.delta(1) com := deb.common() wire.TextMarshalerT = &gobEncoderType{com} default: errorf("bad field in type %d", fieldNum) } deb.printWireType(indent, wire) deb.delta(0) // end inner type (arrayType, etc.) deb.delta(0) // end wireType // Remember we've seen this type. deb.wireType[id] = wire } // Value: // SingletonValue | StructValue func (deb *debugger) value(indent tab, id typeId) { wire, ok := deb.wireType[id] if ok && wire.StructT != nil { deb.structValue(indent, id) } else { deb.singletonValue(indent, id) } } // SingletonValue: // uint(0) FieldValue func (deb *debugger) singletonValue(indent tab, id typeId) { deb.dump("Singleton value") // is it a builtin type? wire := deb.wireType[id] _, ok := builtinIdToType[id] if !ok && wire == nil { errorf("type id %d not defined", id) } m := deb.uint64() if m != 0 { errorf("expected zero; got %d", m) } deb.fieldValue(indent, id) } // InterfaceValue: // NilInterfaceValue | NonNilInterfaceValue func (deb *debugger) interfaceValue(indent tab) { deb.dump("Start of interface value") if nameLen := deb.uint64(); nameLen == 0 { deb.nilInterfaceValue(indent) } else { deb.nonNilInterfaceValue(indent, int(nameLen)) } } // NilInterfaceValue: // uint(0) [already read] func (deb *debugger) nilInterfaceValue(indent tab) int { fmt.Fprintf(os.Stderr, "%snil interface\n", indent) return 0 } // NonNilInterfaceValue: // ConcreteTypeName TypeSequence InterfaceContents // ConcreteTypeName: // uint(lengthOfName) [already read=n] name // InterfaceContents: // int(concreteTypeId) DelimitedValue // DelimitedValue: // uint(length) Value func (deb *debugger) nonNilInterfaceValue(indent tab, nameLen int) { // ConcreteTypeName b := make([]byte, nameLen) deb.r.Read(b) // TODO: CHECK THESE READS!! deb.consumed(nameLen) name := string(b) for { id := deb.typeId() if id < 0 { deb.typeDefinition(indent, -id) n := deb.loadBlock(false) deb.dump("Nested message of length %d", n) } else { // DelimitedValue x := deb.uint64() // in case we want to ignore the value; we don't. fmt.Fprintf(os.Stderr, "%sinterface value, type %q id=%d; valueLength %d\n", indent, name, id, x) deb.value(indent, id) break } } } // printCommonType prints a common type; used by printWireType. func (deb *debugger) printCommonType(indent tab, kind string, common *CommonType) { indent.print() fmt.Fprintf(os.Stderr, "%s %q id=%d\n", kind, common.Name, common.Id) } // printWireType prints the contents of a wireType. func (deb *debugger) printWireType(indent tab, wire *wireType) { fmt.Fprintf(os.Stderr, "%stype definition {\n", indent) indent++ switch { case wire.ArrayT != nil: deb.printCommonType(indent, "array", &wire.ArrayT.CommonType) fmt.Fprintf(os.Stderr, "%slen %d\n", indent+1, wire.ArrayT.Len) fmt.Fprintf(os.Stderr, "%selemid %d\n", indent+1, wire.ArrayT.Elem) case wire.MapT != nil: deb.printCommonType(indent, "map", &wire.MapT.CommonType) fmt.Fprintf(os.Stderr, "%skey id=%d\n", indent+1, wire.MapT.Key) fmt.Fprintf(os.Stderr, "%selem id=%d\n", indent+1, wire.MapT.Elem) case wire.SliceT != nil: deb.printCommonType(indent, "slice", &wire.SliceT.CommonType) fmt.Fprintf(os.Stderr, "%selem id=%d\n", indent+1, wire.SliceT.Elem) case wire.StructT != nil: deb.printCommonType(indent, "struct", &wire.StructT.CommonType) for i, field := range wire.StructT.Field { fmt.Fprintf(os.Stderr, "%sfield %d:\t%s\tid=%d\n", indent+1, i, field.Name, field.Id) } case wire.GobEncoderT != nil: deb.printCommonType(indent, "GobEncoder", &wire.GobEncoderT.CommonType) } indent-- fmt.Fprintf(os.Stderr, "%s}\n", indent) } // fieldValue prints a value of any type, such as a struct field. // FieldValue: // builtinValue | ArrayValue | MapValue | SliceValue | StructValue | InterfaceValue func (deb *debugger) fieldValue(indent tab, id typeId) { _, ok := builtinIdToType[id] if ok { if id == tInterface { deb.interfaceValue(indent) } else { deb.printBuiltin(indent, id) } return } wire, ok := deb.wireType[id] if !ok { errorf("type id %d not defined", id) } switch { case wire.ArrayT != nil: deb.arrayValue(indent, wire) case wire.MapT != nil: deb.mapValue(indent, wire) case wire.SliceT != nil: deb.sliceValue(indent, wire) case wire.StructT != nil: deb.structValue(indent, id) case wire.GobEncoderT != nil: deb.gobEncoderValue(indent, id) default: panic("bad wire type for field") } } // printBuiltin prints a value not of a fundamental type, that is, // one whose type is known to gobs at bootstrap time. func (deb *debugger) printBuiltin(indent tab, id typeId) { switch id { case tBool: x := deb.int64() if x == 0 { fmt.Fprintf(os.Stderr, "%sfalse\n", indent) } else { fmt.Fprintf(os.Stderr, "%strue\n", indent) } case tInt: x := deb.int64() fmt.Fprintf(os.Stderr, "%s%d\n", indent, x) case tUint: x := deb.int64() fmt.Fprintf(os.Stderr, "%s%d\n", indent, x) case tFloat: x := deb.uint64() fmt.Fprintf(os.Stderr, "%s%g\n", indent, floatFromBits(x)) case tComplex: r := deb.uint64() i := deb.uint64() fmt.Fprintf(os.Stderr, "%s%g+%gi\n", indent, floatFromBits(r), floatFromBits(i)) case tBytes: x := int(deb.uint64()) b := make([]byte, x) deb.r.Read(b) deb.consumed(x) fmt.Fprintf(os.Stderr, "%s{% x}=%q\n", indent, b, b) case tString: x := int(deb.uint64()) b := make([]byte, x) deb.r.Read(b) deb.consumed(x) fmt.Fprintf(os.Stderr, "%s%q\n", indent, b) default: panic("unknown builtin") } } // ArrayValue: // uint(n) FieldValue*n func (deb *debugger) arrayValue(indent tab, wire *wireType) { elemId := wire.ArrayT.Elem u := deb.uint64() length := int(u) for i := 0; i < length; i++ { deb.fieldValue(indent, elemId) } if length != wire.ArrayT.Len { fmt.Fprintf(os.Stderr, "%s(wrong length for array: %d should be %d)\n", indent, length, wire.ArrayT.Len) } } // MapValue: // uint(n) (FieldValue FieldValue)*n [n (key, value) pairs] func (deb *debugger) mapValue(indent tab, wire *wireType) { keyId := wire.MapT.Key elemId := wire.MapT.Elem u := deb.uint64() length := int(u) for i := 0; i < length; i++ { deb.fieldValue(indent+1, keyId) deb.fieldValue(indent+1, elemId) } } // SliceValue: // uint(n) (n FieldValue) func (deb *debugger) sliceValue(indent tab, wire *wireType) { elemId := wire.SliceT.Elem u := deb.uint64() length := int(u) deb.dump("Start of slice of length %d", length) for i := 0; i < length; i++ { deb.fieldValue(indent, elemId) } } // StructValue: // (uint(fieldDelta) FieldValue)* func (deb *debugger) structValue(indent tab, id typeId) { deb.dump("Start of struct value of %q id=%d\n<<\n", id.name(), id) fmt.Fprintf(os.Stderr, "%s%s struct {\n", indent, id.name()) wire, ok := deb.wireType[id] if !ok { errorf("type id %d not defined", id) } strct := wire.StructT fieldNum := -1 indent++ for { delta := deb.uint64() if delta == 0 { // struct terminator is zero delta fieldnum break } fieldNum += int(delta) if fieldNum < 0 || fieldNum >= len(strct.Field) { deb.dump("field number out of range: prevField=%d delta=%d", fieldNum-int(delta), delta) break } fmt.Fprintf(os.Stderr, "%sfield %d:\t%s\n", indent, fieldNum, wire.StructT.Field[fieldNum].Name) deb.fieldValue(indent+1, strct.Field[fieldNum].Id) } indent-- fmt.Fprintf(os.Stderr, "%s} // end %s struct\n", indent, id.name()) deb.dump(">> End of struct value of type %d %q", id, id.name()) } // GobEncoderValue: // uint(n) byte*n func (deb *debugger) gobEncoderValue(indent tab, id typeId) { len := deb.uint64() deb.dump("GobEncoder value of %q id=%d, length %d\n", id.name(), id, len) fmt.Fprintf(os.Stderr, "%s%s (implements GobEncoder)\n", indent, id.name()) data := make([]byte, len) _, err := deb.r.Read(data) if err != nil { errorf("gobEncoder data read: %s", err) } fmt.Fprintf(os.Stderr, "%s[% .2x]\n", indent+1, data) } go/src/pkg/encoding/gob/decode.go0100644000000000000000000012315212412656737017162 0ustar00rootroot00000000000000// Copyright 2009 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 gob // TODO(rsc): When garbage collector changes, revisit // the allocations in this file that use unsafe.Pointer. import ( "bytes" "encoding" "errors" "io" "math" "reflect" "unsafe" ) var ( errBadUint = errors.New("gob: encoded unsigned integer out of range") errBadType = errors.New("gob: unknown type id or corrupted data") errRange = errors.New("gob: bad data: field numbers out of bounds") ) // decoderState is the execution state of an instance of the decoder. A new state // is created for nested objects. type decoderState struct { dec *Decoder // The buffer is stored with an extra indirection because it may be replaced // if we load a type during decode (when reading an interface value). b *bytes.Buffer fieldnum int // the last field number read. buf []byte next *decoderState // for free list } // We pass the bytes.Buffer separately for easier testing of the infrastructure // without requiring a full Decoder. func (dec *Decoder) newDecoderState(buf *bytes.Buffer) *decoderState { d := dec.freeList if d == nil { d = new(decoderState) d.dec = dec d.buf = make([]byte, uint64Size) } else { dec.freeList = d.next } d.b = buf return d } func (dec *Decoder) freeDecoderState(d *decoderState) { d.next = dec.freeList dec.freeList = d } func overflow(name string) error { return errors.New(`value for "` + name + `" out of range`) } // decodeUintReader reads an encoded unsigned integer from an io.Reader. // Used only by the Decoder to read the message length. func decodeUintReader(r io.Reader, buf []byte) (x uint64, width int, err error) { width = 1 n, err := io.ReadFull(r, buf[0:width]) if n == 0 { return } b := buf[0] if b <= 0x7f { return uint64(b), width, nil } n = -int(int8(b)) if n > uint64Size { err = errBadUint return } width, err = io.ReadFull(r, buf[0:n]) if err != nil { if err == io.EOF { err = io.ErrUnexpectedEOF } return } // Could check that the high byte is zero but it's not worth it. for _, b := range buf[0:width] { x = x<<8 | uint64(b) } width++ // +1 for length byte return } // decodeUint reads an encoded unsigned integer from state.r. // Does not check for overflow. func (state *decoderState) decodeUint() (x uint64) { b, err := state.b.ReadByte() if err != nil { error_(err) } if b <= 0x7f { return uint64(b) } n := -int(int8(b)) if n > uint64Size { error_(errBadUint) } width, err := state.b.Read(state.buf[0:n]) if err != nil { error_(err) } // Don't need to check error; it's safe to loop regardless. // Could check that the high byte is zero but it's not worth it. for _, b := range state.buf[0:width] { x = x<<8 | uint64(b) } return x } // decodeInt reads an encoded signed integer from state.r. // Does not check for overflow. func (state *decoderState) decodeInt() int64 { x := state.decodeUint() if x&1 != 0 { return ^int64(x >> 1) } return int64(x >> 1) } // decOp is the signature of a decoding operator for a given type. type decOp func(i *decInstr, state *decoderState, p unsafe.Pointer) // The 'instructions' of the decoding machine type decInstr struct { op decOp field int // field number of the wire type indir int // how many pointer indirections to reach the value in the struct offset uintptr // offset in the structure of the field to encode ovfl error // error message for overflow/underflow (for arrays, of the elements) } // Since the encoder writes no zeros, if we arrive at a decoder we have // a value to extract and store. The field number has already been read // (it's how we knew to call this decoder). // Each decoder is responsible for handling any indirections associated // with the data structure. If any pointer so reached is nil, allocation must // be done. // Walk the pointer hierarchy, allocating if we find a nil. Stop one before the end. func decIndirect(p unsafe.Pointer, indir int) unsafe.Pointer { for ; indir > 1; indir-- { if *(*unsafe.Pointer)(p) == nil { // Allocation required *(*unsafe.Pointer)(p) = unsafe.Pointer(new(unsafe.Pointer)) } p = *(*unsafe.Pointer)(p) } return p } // ignoreUint discards a uint value with no destination. func ignoreUint(i *decInstr, state *decoderState, p unsafe.Pointer) { state.decodeUint() } // ignoreTwoUints discards a uint value with no destination. It's used to skip // complex values. func ignoreTwoUints(i *decInstr, state *decoderState, p unsafe.Pointer) { state.decodeUint() state.decodeUint() } // decBool decodes a uint and stores it as a boolean through p. func decBool(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new(bool)) } p = *(*unsafe.Pointer)(p) } *(*bool)(p) = state.decodeUint() != 0 } // decInt8 decodes an integer and stores it as an int8 through p. func decInt8(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new(int8)) } p = *(*unsafe.Pointer)(p) } v := state.decodeInt() if v < math.MinInt8 || math.MaxInt8 < v { error_(i.ovfl) } else { *(*int8)(p) = int8(v) } } // decUint8 decodes an unsigned integer and stores it as a uint8 through p. func decUint8(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new(uint8)) } p = *(*unsafe.Pointer)(p) } v := state.decodeUint() if math.MaxUint8 < v { error_(i.ovfl) } else { *(*uint8)(p) = uint8(v) } } // decInt16 decodes an integer and stores it as an int16 through p. func decInt16(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new(int16)) } p = *(*unsafe.Pointer)(p) } v := state.decodeInt() if v < math.MinInt16 || math.MaxInt16 < v { error_(i.ovfl) } else { *(*int16)(p) = int16(v) } } // decUint16 decodes an unsigned integer and stores it as a uint16 through p. func decUint16(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new(uint16)) } p = *(*unsafe.Pointer)(p) } v := state.decodeUint() if math.MaxUint16 < v { error_(i.ovfl) } else { *(*uint16)(p) = uint16(v) } } // decInt32 decodes an integer and stores it as an int32 through p. func decInt32(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new(int32)) } p = *(*unsafe.Pointer)(p) } v := state.decodeInt() if v < math.MinInt32 || math.MaxInt32 < v { error_(i.ovfl) } else { *(*int32)(p) = int32(v) } } // decUint32 decodes an unsigned integer and stores it as a uint32 through p. func decUint32(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new(uint32)) } p = *(*unsafe.Pointer)(p) } v := state.decodeUint() if math.MaxUint32 < v { error_(i.ovfl) } else { *(*uint32)(p) = uint32(v) } } // decInt64 decodes an integer and stores it as an int64 through p. func decInt64(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new(int64)) } p = *(*unsafe.Pointer)(p) } *(*int64)(p) = int64(state.decodeInt()) } // decUint64 decodes an unsigned integer and stores it as a uint64 through p. func decUint64(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new(uint64)) } p = *(*unsafe.Pointer)(p) } *(*uint64)(p) = uint64(state.decodeUint()) } // Floating-point numbers are transmitted as uint64s holding the bits // of the underlying representation. They are sent byte-reversed, with // the exponent end coming out first, so integer floating point numbers // (for example) transmit more compactly. This routine does the // unswizzling. func floatFromBits(u uint64) float64 { var v uint64 for i := 0; i < 8; i++ { v <<= 8 v |= u & 0xFF u >>= 8 } return math.Float64frombits(v) } // storeFloat32 decodes an unsigned integer, treats it as a 32-bit floating-point // number, and stores it through p. It's a helper function for float32 and complex64. func storeFloat32(i *decInstr, state *decoderState, p unsafe.Pointer) { v := floatFromBits(state.decodeUint()) av := v if av < 0 { av = -av } // +Inf is OK in both 32- and 64-bit floats. Underflow is always OK. if math.MaxFloat32 < av && av <= math.MaxFloat64 { error_(i.ovfl) } else { *(*float32)(p) = float32(v) } } // decFloat32 decodes an unsigned integer, treats it as a 32-bit floating-point // number, and stores it through p. func decFloat32(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new(float32)) } p = *(*unsafe.Pointer)(p) } storeFloat32(i, state, p) } // decFloat64 decodes an unsigned integer, treats it as a 64-bit floating-point // number, and stores it through p. func decFloat64(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new(float64)) } p = *(*unsafe.Pointer)(p) } *(*float64)(p) = floatFromBits(uint64(state.decodeUint())) } // decComplex64 decodes a pair of unsigned integers, treats them as a // pair of floating point numbers, and stores them as a complex64 through p. // The real part comes first. func decComplex64(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new(complex64)) } p = *(*unsafe.Pointer)(p) } storeFloat32(i, state, p) storeFloat32(i, state, unsafe.Pointer(uintptr(p)+unsafe.Sizeof(float32(0)))) } // decComplex128 decodes a pair of unsigned integers, treats them as a // pair of floating point numbers, and stores them as a complex128 through p. // The real part comes first. func decComplex128(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new(complex128)) } p = *(*unsafe.Pointer)(p) } real := floatFromBits(uint64(state.decodeUint())) imag := floatFromBits(uint64(state.decodeUint())) *(*complex128)(p) = complex(real, imag) } // decUint8Slice decodes a byte slice and stores through p a slice header // describing the data. // uint8 slices are encoded as an unsigned count followed by the raw bytes. func decUint8Slice(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new([]uint8)) } p = *(*unsafe.Pointer)(p) } n := state.decodeUint() if n > uint64(state.b.Len()) { errorf("length of []byte exceeds input size (%d bytes)", n) } slice := (*[]uint8)(p) if uint64(cap(*slice)) < n { *slice = make([]uint8, n) } else { *slice = (*slice)[0:n] } if _, err := state.b.Read(*slice); err != nil { errorf("error decoding []byte: %s", err) } } // decString decodes byte array and stores through p a string header // describing the data. // Strings are encoded as an unsigned count followed by the raw bytes. func decString(i *decInstr, state *decoderState, p unsafe.Pointer) { if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(new(string)) } p = *(*unsafe.Pointer)(p) } n := state.decodeUint() if n > uint64(state.b.Len()) { errorf("string length exceeds input size (%d bytes)", n) } b := make([]byte, n) state.b.Read(b) // It would be a shame to do the obvious thing here, // *(*string)(p) = string(b) // because we've already allocated the storage and this would // allocate again and copy. So we do this ugly hack, which is even // even more unsafe than it looks as it depends the memory // representation of a string matching the beginning of the memory // representation of a byte slice (a byte slice is longer). *(*string)(p) = *(*string)(unsafe.Pointer(&b)) } // ignoreUint8Array skips over the data for a byte slice value with no destination. func ignoreUint8Array(i *decInstr, state *decoderState, p unsafe.Pointer) { b := make([]byte, state.decodeUint()) state.b.Read(b) } // Execution engine // The encoder engine is an array of instructions indexed by field number of the incoming // decoder. It is executed with random access according to field number. type decEngine struct { instr []decInstr numInstr int // the number of active instructions } // allocate makes sure storage is available for an object of underlying type rtyp // that is indir levels of indirection through p. func allocate(rtyp reflect.Type, p unsafe.Pointer, indir int) unsafe.Pointer { if indir == 0 { return p } up := p if indir > 1 { up = decIndirect(up, indir) } if *(*unsafe.Pointer)(up) == nil { // Allocate object. *(*unsafe.Pointer)(up) = unsafe.Pointer(reflect.New(rtyp).Pointer()) } return *(*unsafe.Pointer)(up) } // decodeSingle decodes a top-level value that is not a struct and stores it through p. // Such values are preceded by a zero, making them have the memory layout of a // struct field (although with an illegal field number). func (dec *Decoder) decodeSingle(engine *decEngine, ut *userTypeInfo, basep unsafe.Pointer) { state := dec.newDecoderState(&dec.buf) state.fieldnum = singletonField delta := int(state.decodeUint()) if delta != 0 { errorf("decode: corrupted data: non-zero delta for singleton") } instr := &engine.instr[singletonField] if instr.indir != ut.indir { errorf("internal error: inconsistent indirection instr %d ut %d", instr.indir, ut.indir) } ptr := basep // offset will be zero if instr.indir > 1 { ptr = decIndirect(ptr, instr.indir) } instr.op(instr, state, ptr) dec.freeDecoderState(state) } // decodeStruct decodes a top-level struct and stores it through p. // Indir is for the value, not the type. At the time of the call it may // differ from ut.indir, which was computed when the engine was built. // This state cannot arise for decodeSingle, which is called directly // from the user's value, not from the innards of an engine. func (dec *Decoder) decodeStruct(engine *decEngine, ut *userTypeInfo, p unsafe.Pointer, indir int) { p = allocate(ut.base, p, indir) state := dec.newDecoderState(&dec.buf) state.fieldnum = -1 basep := p for state.b.Len() > 0 { delta := int(state.decodeUint()) if delta < 0 { errorf("decode: corrupted data: negative delta") } if delta == 0 { // struct terminator is zero delta fieldnum break } fieldnum := state.fieldnum + delta if fieldnum >= len(engine.instr) { error_(errRange) break } instr := &engine.instr[fieldnum] p := unsafe.Pointer(uintptr(basep) + instr.offset) if instr.indir > 1 { p = decIndirect(p, instr.indir) } instr.op(instr, state, p) state.fieldnum = fieldnum } dec.freeDecoderState(state) } // ignoreStruct discards the data for a struct with no destination. func (dec *Decoder) ignoreStruct(engine *decEngine) { state := dec.newDecoderState(&dec.buf) state.fieldnum = -1 for state.b.Len() > 0 { delta := int(state.decodeUint()) if delta < 0 { errorf("ignore decode: corrupted data: negative delta") } if delta == 0 { // struct terminator is zero delta fieldnum break } fieldnum := state.fieldnum + delta if fieldnum >= len(engine.instr) { error_(errRange) } instr := &engine.instr[fieldnum] instr.op(instr, state, unsafe.Pointer(nil)) state.fieldnum = fieldnum } dec.freeDecoderState(state) } // ignoreSingle discards the data for a top-level non-struct value with no // destination. It's used when calling Decode with a nil value. func (dec *Decoder) ignoreSingle(engine *decEngine) { state := dec.newDecoderState(&dec.buf) state.fieldnum = singletonField delta := int(state.decodeUint()) if delta != 0 { errorf("decode: corrupted data: non-zero delta for singleton") } instr := &engine.instr[singletonField] instr.op(instr, state, unsafe.Pointer(nil)) dec.freeDecoderState(state) } // decodeArrayHelper does the work for decoding arrays and slices. func (dec *Decoder) decodeArrayHelper(state *decoderState, p unsafe.Pointer, elemOp decOp, elemWid uintptr, length, elemIndir int, ovfl error) { instr := &decInstr{elemOp, 0, elemIndir, 0, ovfl} for i := 0; i < length; i++ { if state.b.Len() == 0 { errorf("decoding array or slice: length exceeds input size (%d elements)", length) } up := p if elemIndir > 1 { up = decIndirect(up, elemIndir) } elemOp(instr, state, up) p = unsafe.Pointer(uintptr(p) + elemWid) } } // decodeArray decodes an array and stores it through p, that is, p points to the zeroth element. // The length is an unsigned integer preceding the elements. Even though the length is redundant // (it's part of the type), it's a useful check and is included in the encoding. func (dec *Decoder) decodeArray(atyp reflect.Type, state *decoderState, p unsafe.Pointer, elemOp decOp, elemWid uintptr, length, indir, elemIndir int, ovfl error) { if indir > 0 { p = allocate(atyp, p, 1) // All but the last level has been allocated by dec.Indirect } if n := state.decodeUint(); n != uint64(length) { errorf("length mismatch in decodeArray") } dec.decodeArrayHelper(state, p, elemOp, elemWid, length, elemIndir, ovfl) } // decodeIntoValue is a helper for map decoding. Since maps are decoded using reflection, // unlike the other items we can't use a pointer directly. func decodeIntoValue(state *decoderState, op decOp, indir int, v reflect.Value, ovfl error) reflect.Value { instr := &decInstr{op, 0, indir, 0, ovfl} up := unsafeAddr(v) if indir > 1 { up = decIndirect(up, indir) } op(instr, state, up) return v } // decodeMap decodes a map and stores its header through p. // Maps are encoded as a length followed by key:value pairs. // Because the internals of maps are not visible to us, we must // use reflection rather than pointer magic. func (dec *Decoder) decodeMap(mtyp reflect.Type, state *decoderState, p unsafe.Pointer, keyOp, elemOp decOp, indir, keyIndir, elemIndir int, ovfl error) { if indir > 0 { p = allocate(mtyp, p, 1) // All but the last level has been allocated by dec.Indirect } up := unsafe.Pointer(p) if *(*unsafe.Pointer)(up) == nil { // maps are represented as a pointer in the runtime // Allocate map. *(*unsafe.Pointer)(up) = unsafe.Pointer(reflect.MakeMap(mtyp).Pointer()) } // Maps cannot be accessed by moving addresses around the way // that slices etc. can. We must recover a full reflection value for // the iteration. v := reflect.NewAt(mtyp, unsafe.Pointer(p)).Elem() n := int(state.decodeUint()) for i := 0; i < n; i++ { key := decodeIntoValue(state, keyOp, keyIndir, allocValue(mtyp.Key()), ovfl) elem := decodeIntoValue(state, elemOp, elemIndir, allocValue(mtyp.Elem()), ovfl) v.SetMapIndex(key, elem) } } // ignoreArrayHelper does the work for discarding arrays and slices. func (dec *Decoder) ignoreArrayHelper(state *decoderState, elemOp decOp, length int) { instr := &decInstr{elemOp, 0, 0, 0, errors.New("no error")} for i := 0; i < length; i++ { elemOp(instr, state, nil) } } // ignoreArray discards the data for an array value with no destination. func (dec *Decoder) ignoreArray(state *decoderState, elemOp decOp, length int) { if n := state.decodeUint(); n != uint64(length) { errorf("length mismatch in ignoreArray") } dec.ignoreArrayHelper(state, elemOp, length) } // ignoreMap discards the data for a map value with no destination. func (dec *Decoder) ignoreMap(state *decoderState, keyOp, elemOp decOp) { n := int(state.decodeUint()) keyInstr := &decInstr{keyOp, 0, 0, 0, errors.New("no error")} elemInstr := &decInstr{elemOp, 0, 0, 0, errors.New("no error")} for i := 0; i < n; i++ { keyOp(keyInstr, state, nil) elemOp(elemInstr, state, nil) } } // decodeSlice decodes a slice and stores the slice header through p. // Slices are encoded as an unsigned length followed by the elements. func (dec *Decoder) decodeSlice(atyp reflect.Type, state *decoderState, p unsafe.Pointer, elemOp decOp, elemWid uintptr, indir, elemIndir int, ovfl error) { nr := state.decodeUint() n := int(nr) if indir > 0 { if *(*unsafe.Pointer)(p) == nil { // Allocate the slice header. *(*unsafe.Pointer)(p) = unsafe.Pointer(new([]unsafe.Pointer)) } p = *(*unsafe.Pointer)(p) } // Allocate storage for the slice elements, that is, the underlying array, // if the existing slice does not have the capacity. // Always write a header at p. hdrp := (*reflect.SliceHeader)(p) if hdrp.Cap < n { hdrp.Data = reflect.MakeSlice(atyp, n, n).Pointer() hdrp.Cap = n } hdrp.Len = n dec.decodeArrayHelper(state, unsafe.Pointer(hdrp.Data), elemOp, elemWid, n, elemIndir, ovfl) } // ignoreSlice skips over the data for a slice value with no destination. func (dec *Decoder) ignoreSlice(state *decoderState, elemOp decOp) { dec.ignoreArrayHelper(state, elemOp, int(state.decodeUint())) } // setInterfaceValue sets an interface value to a concrete value, // but first it checks that the assignment will succeed. func setInterfaceValue(ivalue reflect.Value, value reflect.Value) { if !value.Type().AssignableTo(ivalue.Type()) { errorf("%s is not assignable to type %s", value.Type(), ivalue.Type()) } ivalue.Set(value) } // decodeInterface decodes an interface value and stores it through p. // Interfaces are encoded as the name of a concrete type followed by a value. // If the name is empty, the value is nil and no value is sent. func (dec *Decoder) decodeInterface(ityp reflect.Type, state *decoderState, p unsafe.Pointer, indir int) { // Create a writable interface reflect.Value. We need one even for the nil case. ivalue := allocValue(ityp) // Read the name of the concrete type. nr := state.decodeUint() if nr < 0 || nr > 1<<31 { // zero is permissible for anonymous types errorf("invalid type name length %d", nr) } if nr > uint64(state.b.Len()) { errorf("invalid type name length %d: exceeds input size", nr) } b := make([]byte, nr) state.b.Read(b) name := string(b) if name == "" { // Copy the representation of the nil interface value to the target. // This is horribly unsafe and special. if indir > 0 { p = allocate(ityp, p, 1) // All but the last level has been allocated by dec.Indirect } *(*[2]uintptr)(unsafe.Pointer(p)) = ivalue.InterfaceData() return } if len(name) > 1024 { errorf("name too long (%d bytes): %.20q...", len(name), name) } // The concrete type must be registered. registerLock.RLock() typ, ok := nameToConcreteType[name] registerLock.RUnlock() if !ok { errorf("name not registered for interface: %q", name) } // Read the type id of the concrete value. concreteId := dec.decodeTypeSequence(true) if concreteId < 0 { error_(dec.err) } // Byte count of value is next; we don't care what it is (it's there // in case we want to ignore the value by skipping it completely). state.decodeUint() // Read the concrete value. value := allocValue(typ) dec.decodeValue(concreteId, value) if dec.err != nil { error_(dec.err) } // Allocate the destination interface value. if indir > 0 { p = allocate(ityp, p, 1) // All but the last level has been allocated by dec.Indirect } // Assign the concrete value to the interface. // Tread carefully; it might not satisfy the interface. setInterfaceValue(ivalue, value) // Copy the representation of the interface value to the target. // This is horribly unsafe and special. *(*[2]uintptr)(unsafe.Pointer(p)) = ivalue.InterfaceData() } // ignoreInterface discards the data for an interface value with no destination. func (dec *Decoder) ignoreInterface(state *decoderState) { // Read the name of the concrete type. b := make([]byte, state.decodeUint()) _, err := state.b.Read(b) if err != nil { error_(err) } id := dec.decodeTypeSequence(true) if id < 0 { error_(dec.err) } // At this point, the decoder buffer contains a delimited value. Just toss it. state.b.Next(int(state.decodeUint())) } // decodeGobDecoder decodes something implementing the GobDecoder interface. // The data is encoded as a byte slice. func (dec *Decoder) decodeGobDecoder(ut *userTypeInfo, state *decoderState, v reflect.Value) { // Read the bytes for the value. b := make([]byte, state.decodeUint()) _, err := state.b.Read(b) if err != nil { error_(err) } // We know it's one of these. switch ut.externalDec { case xGob: err = v.Interface().(GobDecoder).GobDecode(b) case xBinary: err = v.Interface().(encoding.BinaryUnmarshaler).UnmarshalBinary(b) case xText: err = v.Interface().(encoding.TextUnmarshaler).UnmarshalText(b) } if err != nil { error_(err) } } // ignoreGobDecoder discards the data for a GobDecoder value with no destination. func (dec *Decoder) ignoreGobDecoder(state *decoderState) { // Read the bytes for the value. b := make([]byte, state.decodeUint()) _, err := state.b.Read(b) if err != nil { error_(err) } } // Index by Go types. var decOpTable = [...]decOp{ reflect.Bool: decBool, reflect.Int8: decInt8, reflect.Int16: decInt16, reflect.Int32: decInt32, reflect.Int64: decInt64, reflect.Uint8: decUint8, reflect.Uint16: decUint16, reflect.Uint32: decUint32, reflect.Uint64: decUint64, reflect.Float32: decFloat32, reflect.Float64: decFloat64, reflect.Complex64: decComplex64, reflect.Complex128: decComplex128, reflect.String: decString, } // Indexed by gob types. tComplex will be added during type.init(). var decIgnoreOpMap = map[typeId]decOp{ tBool: ignoreUint, tInt: ignoreUint, tUint: ignoreUint, tFloat: ignoreUint, tBytes: ignoreUint8Array, tString: ignoreUint8Array, tComplex: ignoreTwoUints, } // decOpFor returns the decoding op for the base type under rt and // the indirection count to reach it. func (dec *Decoder) decOpFor(wireId typeId, rt reflect.Type, name string, inProgress map[reflect.Type]*decOp) (*decOp, int) { ut := userType(rt) // If the type implements GobEncoder, we handle it without further processing. if ut.externalDec != 0 { return dec.gobDecodeOpFor(ut) } // If this type is already in progress, it's a recursive type (e.g. map[string]*T). // Return the pointer to the op we're already building. if opPtr := inProgress[rt]; opPtr != nil { return opPtr, ut.indir } typ := ut.base indir := ut.indir var op decOp k := typ.Kind() if int(k) < len(decOpTable) { op = decOpTable[k] } if op == nil { inProgress[rt] = &op // Special cases switch t := typ; t.Kind() { case reflect.Array: name = "element of " + name elemId := dec.wireType[wireId].ArrayT.Elem elemOp, elemIndir := dec.decOpFor(elemId, t.Elem(), name, inProgress) ovfl := overflow(name) op = func(i *decInstr, state *decoderState, p unsafe.Pointer) { state.dec.decodeArray(t, state, p, *elemOp, t.Elem().Size(), t.Len(), i.indir, elemIndir, ovfl) } case reflect.Map: keyId := dec.wireType[wireId].MapT.Key elemId := dec.wireType[wireId].MapT.Elem keyOp, keyIndir := dec.decOpFor(keyId, t.Key(), "key of "+name, inProgress) elemOp, elemIndir := dec.decOpFor(elemId, t.Elem(), "element of "+name, inProgress) ovfl := overflow(name) op = func(i *decInstr, state *decoderState, p unsafe.Pointer) { state.dec.decodeMap(t, state, p, *keyOp, *elemOp, i.indir, keyIndir, elemIndir, ovfl) } case reflect.Slice: name = "element of " + name if t.Elem().Kind() == reflect.Uint8 { op = decUint8Slice break } var elemId typeId if tt, ok := builtinIdToType[wireId]; ok { elemId = tt.(*sliceType).Elem } else { elemId = dec.wireType[wireId].SliceT.Elem } elemOp, elemIndir := dec.decOpFor(elemId, t.Elem(), name, inProgress) ovfl := overflow(name) op = func(i *decInstr, state *decoderState, p unsafe.Pointer) { state.dec.decodeSlice(t, state, p, *elemOp, t.Elem().Size(), i.indir, elemIndir, ovfl) } case reflect.Struct: // Generate a closure that calls out to the engine for the nested type. enginePtr, err := dec.getDecEnginePtr(wireId, userType(typ)) if err != nil { error_(err) } op = func(i *decInstr, state *decoderState, p unsafe.Pointer) { // indirect through enginePtr to delay evaluation for recursive structs. dec.decodeStruct(*enginePtr, userType(typ), p, i.indir) } case reflect.Interface: op = func(i *decInstr, state *decoderState, p unsafe.Pointer) { state.dec.decodeInterface(t, state, p, i.indir) } } } if op == nil { errorf("decode can't handle type %s", rt) } return &op, indir } // decIgnoreOpFor returns the decoding op for a field that has no destination. func (dec *Decoder) decIgnoreOpFor(wireId typeId) decOp { op, ok := decIgnoreOpMap[wireId] if !ok { if wireId == tInterface { // Special case because it's a method: the ignored item might // define types and we need to record their state in the decoder. op = func(i *decInstr, state *decoderState, p unsafe.Pointer) { state.dec.ignoreInterface(state) } return op } // Special cases wire := dec.wireType[wireId] switch { case wire == nil: errorf("bad data: undefined type %s", wireId.string()) case wire.ArrayT != nil: elemId := wire.ArrayT.Elem elemOp := dec.decIgnoreOpFor(elemId) op = func(i *decInstr, state *decoderState, p unsafe.Pointer) { state.dec.ignoreArray(state, elemOp, wire.ArrayT.Len) } case wire.MapT != nil: keyId := dec.wireType[wireId].MapT.Key elemId := dec.wireType[wireId].MapT.Elem keyOp := dec.decIgnoreOpFor(keyId) elemOp := dec.decIgnoreOpFor(elemId) op = func(i *decInstr, state *decoderState, p unsafe.Pointer) { state.dec.ignoreMap(state, keyOp, elemOp) } case wire.SliceT != nil: elemId := wire.SliceT.Elem elemOp := dec.decIgnoreOpFor(elemId) op = func(i *decInstr, state *decoderState, p unsafe.Pointer) { state.dec.ignoreSlice(state, elemOp) } case wire.StructT != nil: // Generate a closure that calls out to the engine for the nested type. enginePtr, err := dec.getIgnoreEnginePtr(wireId) if err != nil { error_(err) } op = func(i *decInstr, state *decoderState, p unsafe.Pointer) { // indirect through enginePtr to delay evaluation for recursive structs state.dec.ignoreStruct(*enginePtr) } case wire.GobEncoderT != nil, wire.BinaryMarshalerT != nil, wire.TextMarshalerT != nil: op = func(i *decInstr, state *decoderState, p unsafe.Pointer) { state.dec.ignoreGobDecoder(state) } } } if op == nil { errorf("bad data: ignore can't handle type %s", wireId.string()) } return op } // gobDecodeOpFor returns the op for a type that is known to implement // GobDecoder. func (dec *Decoder) gobDecodeOpFor(ut *userTypeInfo) (*decOp, int) { rcvrType := ut.user if ut.decIndir == -1 { rcvrType = reflect.PtrTo(rcvrType) } else if ut.decIndir > 0 { for i := int8(0); i < ut.decIndir; i++ { rcvrType = rcvrType.Elem() } } var op decOp op = func(i *decInstr, state *decoderState, p unsafe.Pointer) { // Caller has gotten us to within one indirection of our value. if i.indir > 0 { if *(*unsafe.Pointer)(p) == nil { *(*unsafe.Pointer)(p) = unsafe.Pointer(reflect.New(ut.base).Pointer()) } } // Now p is a pointer to the base type. Do we need to climb out to // get to the receiver type? var v reflect.Value if ut.decIndir == -1 { v = reflect.NewAt(rcvrType, unsafe.Pointer(&p)).Elem() } else { v = reflect.NewAt(rcvrType, p).Elem() } state.dec.decodeGobDecoder(ut, state, v) } return &op, int(ut.indir) } // compatibleType asks: Are these two gob Types compatible? // Answers the question for basic types, arrays, maps and slices, plus // GobEncoder/Decoder pairs. // Structs are considered ok; fields will be checked later. func (dec *Decoder) compatibleType(fr reflect.Type, fw typeId, inProgress map[reflect.Type]typeId) bool { if rhs, ok := inProgress[fr]; ok { return rhs == fw } inProgress[fr] = fw ut := userType(fr) wire, ok := dec.wireType[fw] // If wire was encoded with an encoding method, fr must have that method. // And if not, it must not. // At most one of the booleans in ut is set. // We could possibly relax this constraint in the future in order to // choose the decoding method using the data in the wireType. // The parentheses look odd but are correct. if (ut.externalDec == xGob) != (ok && wire.GobEncoderT != nil) || (ut.externalDec == xBinary) != (ok && wire.BinaryMarshalerT != nil) || (ut.externalDec == xText) != (ok && wire.TextMarshalerT != nil) { return false } if ut.externalDec != 0 { // This test trumps all others. return true } switch t := ut.base; t.Kind() { default: // chan, etc: cannot handle. return false case reflect.Bool: return fw == tBool case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return fw == tInt case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: return fw == tUint case reflect.Float32, reflect.Float64: return fw == tFloat case reflect.Complex64, reflect.Complex128: return fw == tComplex case reflect.String: return fw == tString case reflect.Interface: return fw == tInterface case reflect.Array: if !ok || wire.ArrayT == nil { return false } array := wire.ArrayT return t.Len() == array.Len && dec.compatibleType(t.Elem(), array.Elem, inProgress) case reflect.Map: if !ok || wire.MapT == nil { return false } MapType := wire.MapT return dec.compatibleType(t.Key(), MapType.Key, inProgress) && dec.compatibleType(t.Elem(), MapType.Elem, inProgress) case reflect.Slice: // Is it an array of bytes? if t.Elem().Kind() == reflect.Uint8 { return fw == tBytes } // Extract and compare element types. var sw *sliceType if tt, ok := builtinIdToType[fw]; ok { sw, _ = tt.(*sliceType) } else if wire != nil { sw = wire.SliceT } elem := userType(t.Elem()).base return sw != nil && dec.compatibleType(elem, sw.Elem, inProgress) case reflect.Struct: return true } } // typeString returns a human-readable description of the type identified by remoteId. func (dec *Decoder) typeString(remoteId typeId) string { if t := idToType[remoteId]; t != nil { // globally known type. return t.string() } return dec.wireType[remoteId].string() } // compileSingle compiles the decoder engine for a non-struct top-level value, including // GobDecoders. func (dec *Decoder) compileSingle(remoteId typeId, ut *userTypeInfo) (engine *decEngine, err error) { rt := ut.user engine = new(decEngine) engine.instr = make([]decInstr, 1) // one item name := rt.String() // best we can do if !dec.compatibleType(rt, remoteId, make(map[reflect.Type]typeId)) { remoteType := dec.typeString(remoteId) // Common confusing case: local interface type, remote concrete type. if ut.base.Kind() == reflect.Interface && remoteId != tInterface { return nil, errors.New("gob: local interface type " + name + " can only be decoded from remote interface type; received concrete type " + remoteType) } return nil, errors.New("gob: decoding into local type " + name + ", received remote type " + remoteType) } op, indir := dec.decOpFor(remoteId, rt, name, make(map[reflect.Type]*decOp)) ovfl := errors.New(`value for "` + name + `" out of range`) engine.instr[singletonField] = decInstr{*op, singletonField, indir, 0, ovfl} engine.numInstr = 1 return } // compileIgnoreSingle compiles the decoder engine for a non-struct top-level value that will be discarded. func (dec *Decoder) compileIgnoreSingle(remoteId typeId) (engine *decEngine, err error) { engine = new(decEngine) engine.instr = make([]decInstr, 1) // one item op := dec.decIgnoreOpFor(remoteId) ovfl := overflow(dec.typeString(remoteId)) engine.instr[0] = decInstr{op, 0, 0, 0, ovfl} engine.numInstr = 1 return } // compileDec compiles the decoder engine for a value. If the value is not a struct, // it calls out to compileSingle. func (dec *Decoder) compileDec(remoteId typeId, ut *userTypeInfo) (engine *decEngine, err error) { rt := ut.base srt := rt if srt.Kind() != reflect.Struct || ut.externalDec != 0 { return dec.compileSingle(remoteId, ut) } var wireStruct *structType // Builtin types can come from global pool; the rest must be defined by the decoder. // Also we know we're decoding a struct now, so the client must have sent one. if t, ok := builtinIdToType[remoteId]; ok { wireStruct, _ = t.(*structType) } else { wire := dec.wireType[remoteId] if wire == nil { error_(errBadType) } wireStruct = wire.StructT } if wireStruct == nil { errorf("type mismatch in decoder: want struct type %s; got non-struct", rt) } engine = new(decEngine) engine.instr = make([]decInstr, len(wireStruct.Field)) seen := make(map[reflect.Type]*decOp) // Loop over the fields of the wire type. for fieldnum := 0; fieldnum < len(wireStruct.Field); fieldnum++ { wireField := wireStruct.Field[fieldnum] if wireField.Name == "" { errorf("empty name for remote field of type %s", wireStruct.Name) } ovfl := overflow(wireField.Name) // Find the field of the local type with the same name. localField, present := srt.FieldByName(wireField.Name) // TODO(r): anonymous names if !present || !isExported(wireField.Name) { op := dec.decIgnoreOpFor(wireField.Id) engine.instr[fieldnum] = decInstr{op, fieldnum, 0, 0, ovfl} continue } if !dec.compatibleType(localField.Type, wireField.Id, make(map[reflect.Type]typeId)) { errorf("wrong type (%s) for received field %s.%s", localField.Type, wireStruct.Name, wireField.Name) } op, indir := dec.decOpFor(wireField.Id, localField.Type, localField.Name, seen) engine.instr[fieldnum] = decInstr{*op, fieldnum, indir, uintptr(localField.Offset), ovfl} engine.numInstr++ } return } // getDecEnginePtr returns the engine for the specified type. func (dec *Decoder) getDecEnginePtr(remoteId typeId, ut *userTypeInfo) (enginePtr **decEngine, err error) { rt := ut.user decoderMap, ok := dec.decoderCache[rt] if !ok { decoderMap = make(map[typeId]**decEngine) dec.decoderCache[rt] = decoderMap } if enginePtr, ok = decoderMap[remoteId]; !ok { // To handle recursive types, mark this engine as underway before compiling. enginePtr = new(*decEngine) decoderMap[remoteId] = enginePtr *enginePtr, err = dec.compileDec(remoteId, ut) if err != nil { delete(decoderMap, remoteId) } } return } // emptyStruct is the type we compile into when ignoring a struct value. type emptyStruct struct{} var emptyStructType = reflect.TypeOf(emptyStruct{}) // getDecEnginePtr returns the engine for the specified type when the value is to be discarded. func (dec *Decoder) getIgnoreEnginePtr(wireId typeId) (enginePtr **decEngine, err error) { var ok bool if enginePtr, ok = dec.ignorerCache[wireId]; !ok { // To handle recursive types, mark this engine as underway before compiling. enginePtr = new(*decEngine) dec.ignorerCache[wireId] = enginePtr wire := dec.wireType[wireId] if wire != nil && wire.StructT != nil { *enginePtr, err = dec.compileDec(wireId, userType(emptyStructType)) } else { *enginePtr, err = dec.compileIgnoreSingle(wireId) } if err != nil { delete(dec.ignorerCache, wireId) } } return } // decodeValue decodes the data stream representing a value and stores it in val. func (dec *Decoder) decodeValue(wireId typeId, val reflect.Value) { defer catchError(&dec.err) // If the value is nil, it means we should just ignore this item. if !val.IsValid() { dec.decodeIgnoredValue(wireId) return } // Dereference down to the underlying type. ut := userType(val.Type()) base := ut.base var enginePtr **decEngine enginePtr, dec.err = dec.getDecEnginePtr(wireId, ut) if dec.err != nil { return } engine := *enginePtr if st := base; st.Kind() == reflect.Struct && ut.externalDec == 0 { if engine.numInstr == 0 && st.NumField() > 0 && dec.wireType[wireId] != nil && len(dec.wireType[wireId].StructT.Field) > 0 { name := base.Name() errorf("type mismatch: no fields matched compiling decoder for %s", name) } dec.decodeStruct(engine, ut, unsafeAddr(val), ut.indir) } else { dec.decodeSingle(engine, ut, unsafeAddr(val)) } } // decodeIgnoredValue decodes the data stream representing a value of the specified type and discards it. func (dec *Decoder) decodeIgnoredValue(wireId typeId) { var enginePtr **decEngine enginePtr, dec.err = dec.getIgnoreEnginePtr(wireId) if dec.err != nil { return } wire := dec.wireType[wireId] if wire != nil && wire.StructT != nil { dec.ignoreStruct(*enginePtr) } else { dec.ignoreSingle(*enginePtr) } } func init() { var iop, uop decOp switch reflect.TypeOf(int(0)).Bits() { case 32: iop = decInt32 uop = decUint32 case 64: iop = decInt64 uop = decUint64 default: panic("gob: unknown size of int/uint") } decOpTable[reflect.Int] = iop decOpTable[reflect.Uint] = uop // Finally uintptr switch reflect.TypeOf(uintptr(0)).Bits() { case 32: uop = decUint32 case 64: uop = decUint64 default: panic("gob: unknown size of uintptr") } decOpTable[reflect.Uintptr] = uop } // Gob assumes it can call UnsafeAddr on any Value // in order to get a pointer it can copy data from. // Values that have just been created and do not point // into existing structs or slices cannot be addressed, // so simulate it by returning a pointer to a copy. // Each call allocates once. func unsafeAddr(v reflect.Value) unsafe.Pointer { if v.CanAddr() { return unsafe.Pointer(v.UnsafeAddr()) } x := reflect.New(v.Type()).Elem() x.Set(v) return unsafe.Pointer(x.UnsafeAddr()) } // Gob depends on being able to take the address // of zeroed Values it creates, so use this wrapper instead // of the standard reflect.Zero. // Each call allocates once. func allocValue(t reflect.Type) reflect.Value { return reflect.New(t).Elem() } go/src/pkg/encoding/gob/decoder.go0100644000000000000000000001566112412656737017351 0ustar00rootroot00000000000000// Copyright 2009 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 gob import ( "bufio" "bytes" "errors" "io" "reflect" "sync" ) // A Decoder manages the receipt of type and data information read from the // remote side of a connection. type Decoder struct { mutex sync.Mutex // each item must be received atomically r io.Reader // source of the data buf bytes.Buffer // buffer for more efficient i/o from r wireType map[typeId]*wireType // map from remote ID to local description decoderCache map[reflect.Type]map[typeId]**decEngine // cache of compiled engines ignorerCache map[typeId]**decEngine // ditto for ignored objects freeList *decoderState // list of free decoderStates; avoids reallocation countBuf []byte // used for decoding integers while parsing messages tmp []byte // temporary storage for i/o; saves reallocating err error } // NewDecoder returns a new decoder that reads from the io.Reader. // If r does not also implement io.ByteReader, it will be wrapped in a // bufio.Reader. func NewDecoder(r io.Reader) *Decoder { dec := new(Decoder) // We use the ability to read bytes as a plausible surrogate for buffering. if _, ok := r.(io.ByteReader); !ok { r = bufio.NewReader(r) } dec.r = r dec.wireType = make(map[typeId]*wireType) dec.decoderCache = make(map[reflect.Type]map[typeId]**decEngine) dec.ignorerCache = make(map[typeId]**decEngine) dec.countBuf = make([]byte, 9) // counts may be uint64s (unlikely!), require 9 bytes return dec } // recvType loads the definition of a type. func (dec *Decoder) recvType(id typeId) { // Have we already seen this type? That's an error if id < firstUserId || dec.wireType[id] != nil { dec.err = errors.New("gob: duplicate type received") return } // Type: wire := new(wireType) dec.decodeValue(tWireType, reflect.ValueOf(wire)) if dec.err != nil { return } // Remember we've seen this type. dec.wireType[id] = wire } var errBadCount = errors.New("invalid message length") // recvMessage reads the next count-delimited item from the input. It is the converse // of Encoder.writeMessage. It returns false on EOF or other error reading the message. func (dec *Decoder) recvMessage() bool { // Read a count. nbytes, _, err := decodeUintReader(dec.r, dec.countBuf) if err != nil { dec.err = err return false } // Upper limit of 1GB, allowing room to grow a little without overflow. // TODO: We might want more control over this limit. if nbytes >= 1<<30 { dec.err = errBadCount return false } dec.readMessage(int(nbytes)) return dec.err == nil } // readMessage reads the next nbytes bytes from the input. func (dec *Decoder) readMessage(nbytes int) { // Allocate the dec.tmp buffer, up to 10KB. const maxBuf = 10 * 1024 nTmp := nbytes if nTmp > maxBuf { nTmp = maxBuf } if cap(dec.tmp) < nTmp { nAlloc := nTmp + 100 // A little extra for growth. if nAlloc > maxBuf { nAlloc = maxBuf } dec.tmp = make([]byte, nAlloc) } dec.tmp = dec.tmp[:nTmp] // Read the data dec.buf.Grow(nbytes) for nbytes > 0 { if nbytes < nTmp { dec.tmp = dec.tmp[:nbytes] } var nRead int nRead, dec.err = io.ReadFull(dec.r, dec.tmp) if dec.err != nil { if dec.err == io.EOF { dec.err = io.ErrUnexpectedEOF } return } dec.buf.Write(dec.tmp) nbytes -= nRead } } // toInt turns an encoded uint64 into an int, according to the marshaling rules. func toInt(x uint64) int64 { i := int64(x >> 1) if x&1 != 0 { i = ^i } return i } func (dec *Decoder) nextInt() int64 { n, _, err := decodeUintReader(&dec.buf, dec.countBuf) if err != nil { dec.err = err } return toInt(n) } func (dec *Decoder) nextUint() uint64 { n, _, err := decodeUintReader(&dec.buf, dec.countBuf) if err != nil { dec.err = err } return n } // decodeTypeSequence parses: // TypeSequence // (TypeDefinition DelimitedTypeDefinition*)? // and returns the type id of the next value. It returns -1 at // EOF. Upon return, the remainder of dec.buf is the value to be // decoded. If this is an interface value, it can be ignored by // resetting that buffer. func (dec *Decoder) decodeTypeSequence(isInterface bool) typeId { for dec.err == nil { if dec.buf.Len() == 0 { if !dec.recvMessage() { break } } // Receive a type id. id := typeId(dec.nextInt()) if id >= 0 { // Value follows. return id } // Type definition for (-id) follows. dec.recvType(-id) // When decoding an interface, after a type there may be a // DelimitedValue still in the buffer. Skip its count. // (Alternatively, the buffer is empty and the byte count // will be absorbed by recvMessage.) if dec.buf.Len() > 0 { if !isInterface { dec.err = errors.New("extra data in buffer") break } dec.nextUint() } } return -1 } // Decode reads the next value from the input stream and stores // it in the data represented by the empty interface value. // If e is nil, the value will be discarded. Otherwise, // the value underlying e must be a pointer to the // correct type for the next data item received. // If the input is at EOF, Decode returns io.EOF and // does not modify e. func (dec *Decoder) Decode(e interface{}) error { if e == nil { return dec.DecodeValue(reflect.Value{}) } value := reflect.ValueOf(e) // If e represents a value as opposed to a pointer, the answer won't // get back to the caller. Make sure it's a pointer. if value.Type().Kind() != reflect.Ptr { dec.err = errors.New("gob: attempt to decode into a non-pointer") return dec.err } return dec.DecodeValue(value) } // DecodeValue reads the next value from the input stream. // If v is the zero reflect.Value (v.Kind() == Invalid), DecodeValue discards the value. // Otherwise, it stores the value into v. In that case, v must represent // a non-nil pointer to data or be an assignable reflect.Value (v.CanSet()) // If the input is at EOF, DecodeValue returns io.EOF and // does not modify e. func (dec *Decoder) DecodeValue(v reflect.Value) error { if v.IsValid() { if v.Kind() == reflect.Ptr && !v.IsNil() { // That's okay, we'll store through the pointer. } else if !v.CanSet() { return errors.New("gob: DecodeValue of unassignable value") } } // Make sure we're single-threaded through here. dec.mutex.Lock() defer dec.mutex.Unlock() dec.buf.Reset() // In case data lingers from previous invocation. dec.err = nil id := dec.decodeTypeSequence(false) if dec.err == nil { dec.decodeValue(id, v) } return dec.err } // If debug.go is compiled into the program , debugFunc prints a human-readable // representation of the gob data read from r by calling that file's Debug function. // Otherwise it is nil. var debugFunc func(io.Reader) go/src/pkg/encoding/gob/doc.go0100644000000000000000000003640612412656737016511 0ustar00rootroot00000000000000// Copyright 2009 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 gob manages streams of gobs - binary values exchanged between an Encoder (transmitter) and a Decoder (receiver). A typical use is transporting arguments and results of remote procedure calls (RPCs) such as those provided by package "rpc". The implementation compiles a custom codec for each data type in the stream and is most efficient when a single Encoder is used to transmit a stream of values, amortizing the cost of compilation. Basics A stream of gobs is self-describing. Each data item in the stream is preceded by a specification of its type, expressed in terms of a small set of predefined types. Pointers are not transmitted, but the things they point to are transmitted; that is, the values are flattened. Recursive types work fine, but recursive values (data with cycles) are problematic. This may change. To use gobs, create an Encoder and present it with a series of data items as values or addresses that can be dereferenced to values. The Encoder makes sure all type information is sent before it is needed. At the receive side, a Decoder retrieves values from the encoded stream and unpacks them into local variables. Types and Values The source and destination values/types need not correspond exactly. For structs, fields (identified by name) that are in the source but absent from the receiving variable will be ignored. Fields that are in the receiving variable but missing from the transmitted type or value will be ignored in the destination. If a field with the same name is present in both, their types must be compatible. Both the receiver and transmitter will do all necessary indirection and dereferencing to convert between gobs and actual Go values. For instance, a gob type that is schematically, struct { A, B int } can be sent from or received into any of these Go types: struct { A, B int } // the same *struct { A, B int } // extra indirection of the struct struct { *A, **B int } // extra indirection of the fields struct { A, B int64 } // different concrete value type; see below It may also be received into any of these: struct { A, B int } // the same struct { B, A int } // ordering doesn't matter; matching is by name struct { A, B, C int } // extra field (C) ignored struct { B int } // missing field (A) ignored; data will be dropped struct { B, C int } // missing field (A) ignored; extra field (C) ignored. Attempting to receive into these types will draw a decode error: struct { A int; B uint } // change of signedness for B struct { A int; B float } // change of type for B struct { } // no field names in common struct { C, D int } // no field names in common Integers are transmitted two ways: arbitrary precision signed integers or arbitrary precision unsigned integers. There is no int8, int16 etc. discrimination in the gob format; there are only signed and unsigned integers. As described below, the transmitter sends the value in a variable-length encoding; the receiver accepts the value and stores it in the destination variable. Floating-point numbers are always sent using IEEE-754 64-bit precision (see below). Signed integers may be received into any signed integer variable: int, int16, etc.; unsigned integers may be received into any unsigned integer variable; and floating point values may be received into any floating point variable. However, the destination variable must be able to represent the value or the decode operation will fail. Structs, arrays and slices are also supported. Structs encode and decode only exported fields. Strings and arrays of bytes are supported with a special, efficient representation (see below). When a slice is decoded, if the existing slice has capacity the slice will be extended in place; if not, a new array is allocated. Regardless, the length of the resulting slice reports the number of elements decoded. Functions and channels will not be sent in a gob. Attempting to encode such a value at top the level will fail. A struct field of chan or func type is treated exactly like an unexported field and is ignored. Gob can encode a value of any type implementing the GobEncoder or encoding.BinaryMarshaler interfaces by calling the corresponding method, in that order of preference. Gob can decode a value of any type implementing the GobDecoder or encoding.BinaryUnmarshaler interfaces by calling the corresponding method, again in that order of preference. Encoding Details This section documents the encoding, details that are not important for most users. Details are presented bottom-up. An unsigned integer is sent one of two ways. If it is less than 128, it is sent as a byte with that value. Otherwise it is sent as a minimal-length big-endian (high byte first) byte stream holding the value, preceded by one byte holding the byte count, negated. Thus 0 is transmitted as (00), 7 is transmitted as (07) and 256 is transmitted as (FE 01 00). A boolean is encoded within an unsigned integer: 0 for false, 1 for true. A signed integer, i, is encoded within an unsigned integer, u. Within u, bits 1 upward contain the value; bit 0 says whether they should be complemented upon receipt. The encode algorithm looks like this: uint u; if i < 0 { u = (^i << 1) | 1 // complement i, bit 0 is 1 } else { u = (i << 1) // do not complement i, bit 0 is 0 } encodeUnsigned(u) The low bit is therefore analogous to a sign bit, but making it the complement bit instead guarantees that the largest negative integer is not a special case. For example, -129=^128=(^256>>1) encodes as (FE 01 01). Floating-point numbers are always sent as a representation of a float64 value. That value is converted to a uint64 using math.Float64bits. The uint64 is then byte-reversed and sent as a regular unsigned integer. The byte-reversal means the exponent and high-precision part of the mantissa go first. Since the low bits are often zero, this can save encoding bytes. For instance, 17.0 is encoded in only three bytes (FE 31 40). Strings and slices of bytes are sent as an unsigned count followed by that many uninterpreted bytes of the value. All other slices and arrays are sent as an unsigned count followed by that many elements using the standard gob encoding for their type, recursively. Maps are sent as an unsigned count followed by that many key, element pairs. Empty but non-nil maps are sent, so if the sender has allocated a map, the receiver will allocate a map even if no elements are transmitted. Structs are sent as a sequence of (field number, field value) pairs. The field value is sent using the standard gob encoding for its type, recursively. If a field has the zero value for its type, it is omitted from the transmission. The field number is defined by the type of the encoded struct: the first field of the encoded type is field 0, the second is field 1, etc. When encoding a value, the field numbers are delta encoded for efficiency and the fields are always sent in order of increasing field number; the deltas are therefore unsigned. The initialization for the delta encoding sets the field number to -1, so an unsigned integer field 0 with value 7 is transmitted as unsigned delta = 1, unsigned value = 7 or (01 07). Finally, after all the fields have been sent a terminating mark denotes the end of the struct. That mark is a delta=0 value, which has representation (00). Interface types are not checked for compatibility; all interface types are treated, for transmission, as members of a single "interface" type, analogous to int or []byte - in effect they're all treated as interface{}. Interface values are transmitted as a string identifying the concrete type being sent (a name that must be pre-defined by calling Register), followed by a byte count of the length of the following data (so the value can be skipped if it cannot be stored), followed by the usual encoding of concrete (dynamic) value stored in the interface value. (A nil interface value is identified by the empty string and transmits no value.) Upon receipt, the decoder verifies that the unpacked concrete item satisfies the interface of the receiving variable. The representation of types is described below. When a type is defined on a given connection between an Encoder and Decoder, it is assigned a signed integer type id. When Encoder.Encode(v) is called, it makes sure there is an id assigned for the type of v and all its elements and then it sends the pair (typeid, encoded-v) where typeid is the type id of the encoded type of v and encoded-v is the gob encoding of the value v. To define a type, the encoder chooses an unused, positive type id and sends the pair (-type id, encoded-type) where encoded-type is the gob encoding of a wireType description, constructed from these types: type wireType struct { ArrayT *ArrayType SliceT *SliceType StructT *StructType MapT *MapType } type arrayType struct { CommonType Elem typeId Len int } type CommonType struct { Name string // the name of the struct type Id int // the id of the type, repeated so it's inside the type } type sliceType struct { CommonType Elem typeId } type structType struct { CommonType Field []*fieldType // the fields of the struct. } type fieldType struct { Name string // the name of the field. Id int // the type id of the field, which must be already defined } type mapType struct { CommonType Key typeId Elem typeId } If there are nested type ids, the types for all inner type ids must be defined before the top-level type id is used to describe an encoded-v. For simplicity in setup, the connection is defined to understand these types a priori, as well as the basic gob types int, uint, etc. Their ids are: bool 1 int 2 uint 3 float 4 []byte 5 string 6 complex 7 interface 8 // gap for reserved ids. WireType 16 ArrayType 17 CommonType 18 SliceType 19 StructType 20 FieldType 21 // 22 is slice of fieldType. MapType 23 Finally, each message created by a call to Encode is preceded by an encoded unsigned integer count of the number of bytes remaining in the message. After the initial type name, interface values are wrapped the same way; in effect, the interface value acts like a recursive invocation of Encode. In summary, a gob stream looks like (byteCount (-type id, encoding of a wireType)* (type id, encoding of a value))* where * signifies zero or more repetitions and the type id of a value must be predefined or be defined before the value in the stream. See "Gobs of data" for a design discussion of the gob wire format: http://golang.org/doc/articles/gobs_of_data.html */ package gob /* Grammar: Tokens starting with a lower case letter are terminals; int(n) and uint(n) represent the signed/unsigned encodings of the value n. GobStream: DelimitedMessage* DelimitedMessage: uint(lengthOfMessage) Message Message: TypeSequence TypedValue TypeSequence (TypeDefinition DelimitedTypeDefinition*)? DelimitedTypeDefinition: uint(lengthOfTypeDefinition) TypeDefinition TypedValue: int(typeId) Value TypeDefinition: int(-typeId) encodingOfWireType Value: SingletonValue | StructValue SingletonValue: uint(0) FieldValue FieldValue: builtinValue | ArrayValue | MapValue | SliceValue | StructValue | InterfaceValue InterfaceValue: NilInterfaceValue | NonNilInterfaceValue NilInterfaceValue: uint(0) NonNilInterfaceValue: ConcreteTypeName TypeSequence InterfaceContents ConcreteTypeName: uint(lengthOfName) [already read=n] name InterfaceContents: int(concreteTypeId) DelimitedValue DelimitedValue: uint(length) Value ArrayValue: uint(n) FieldValue*n [n elements] MapValue: uint(n) (FieldValue FieldValue)*n [n (key, value) pairs] SliceValue: uint(n) FieldValue*n [n elements] StructValue: (uint(fieldDelta) FieldValue)* */ /* For implementers and the curious, here is an encoded example. Given type Point struct {X, Y int} and the value p := Point{22, 33} the bytes transmitted that encode p will be: 1f ff 81 03 01 01 05 50 6f 69 6e 74 01 ff 82 00 01 02 01 01 58 01 04 00 01 01 59 01 04 00 00 00 07 ff 82 01 2c 01 42 00 They are determined as follows. Since this is the first transmission of type Point, the type descriptor for Point itself must be sent before the value. This is the first type we've sent on this Encoder, so it has type id 65 (0 through 64 are reserved). 1f // This item (a type descriptor) is 31 bytes long. ff 81 // The negative of the id for the type we're defining, -65. // This is one byte (indicated by FF = -1) followed by // ^-65<<1 | 1. The low 1 bit signals to complement the // rest upon receipt. // Now we send a type descriptor, which is itself a struct (wireType). // The type of wireType itself is known (it's built in, as is the type of // all its components), so we just need to send a *value* of type wireType // that represents type "Point". // Here starts the encoding of that value. // Set the field number implicitly to -1; this is done at the beginning // of every struct, including nested structs. 03 // Add 3 to field number; now 2 (wireType.structType; this is a struct). // structType starts with an embedded CommonType, which appears // as a regular structure here too. 01 // add 1 to field number (now 0); start of embedded CommonType. 01 // add 1 to field number (now 0, the name of the type) 05 // string is (unsigned) 5 bytes long 50 6f 69 6e 74 // wireType.structType.CommonType.name = "Point" 01 // add 1 to field number (now 1, the id of the type) ff 82 // wireType.structType.CommonType._id = 65 00 // end of embedded wiretype.structType.CommonType struct 01 // add 1 to field number (now 1, the field array in wireType.structType) 02 // There are two fields in the type (len(structType.field)) 01 // Start of first field structure; add 1 to get field number 0: field[0].name 01 // 1 byte 58 // structType.field[0].name = "X" 01 // Add 1 to get field number 1: field[0].id 04 // structType.field[0].typeId is 2 (signed int). 00 // End of structType.field[0]; start structType.field[1]; set field number to -1. 01 // Add 1 to get field number 0: field[1].name 01 // 1 byte 59 // structType.field[1].name = "Y" 01 // Add 1 to get field number 1: field[1].id 04 // struct.Type.field[1].typeId is 2 (signed int). 00 // End of structType.field[1]; end of structType.field. 00 // end of wireType.structType structure 00 // end of wireType structure Now we can send the Point value. Again the field number resets to -1: 07 // this value is 7 bytes long ff 82 // the type number, 65 (1 byte (-FF) followed by 65<<1) 01 // add one to field number, yielding field 0 2c // encoding of signed "22" (0x22 = 44 = 22<<1); Point.x = 22 01 // add one to field number, yielding field 1 42 // encoding of signed "33" (0x42 = 66 = 33<<1); Point.y = 33 00 // end of structure The type encoding is long and fairly intricate but we send it only once. If p is transmitted a second time, the type is already known so the output will be just: 07 ff 82 01 2c 01 42 00 A single non-struct value at top level is transmitted like a field with delta tag 0. For instance, a signed integer with value 3 presented as the argument to Encode will emit: 03 04 00 06 Which represents: 03 // this value is 3 bytes long 04 // the type number, 2, represents an integer 00 // tag delta 0 06 // value 3 */ go/src/pkg/encoding/gob/dump.go0100644000000000000000000000105512412656737016701 0ustar00rootroot00000000000000// Copyright 2009 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 ignore package main // Need to compile package gob with debug.go to build this program. // See comments in debug.go for how to do this. import ( "encoding/gob" "fmt" "os" ) func main() { var err error file := os.Stdin if len(os.Args) > 1 { file, err = os.Open(os.Args[1]) if err != nil { fmt.Fprintf(os.Stderr, "dump: %s\n", err) os.Exit(1) } } gob.Debug(file) } go/src/pkg/encoding/gob/encode.go0100644000000000000000000005372112412656737017200 0ustar00rootroot00000000000000// Copyright 2009 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 gob import ( "bytes" "encoding" "math" "reflect" "unsafe" ) const uint64Size = int(unsafe.Sizeof(uint64(0))) // encoderState is the global execution state of an instance of the encoder. // Field numbers are delta encoded and always increase. The field // number is initialized to -1 so 0 comes out as delta(1). A delta of // 0 terminates the structure. type encoderState struct { enc *Encoder b *bytes.Buffer sendZero bool // encoding an array element or map key/value pair; send zero values fieldnum int // the last field number written. buf [1 + uint64Size]byte // buffer used by the encoder; here to avoid allocation. next *encoderState // for free list } func (enc *Encoder) newEncoderState(b *bytes.Buffer) *encoderState { e := enc.freeList if e == nil { e = new(encoderState) e.enc = enc } else { enc.freeList = e.next } e.sendZero = false e.fieldnum = 0 e.b = b return e } func (enc *Encoder) freeEncoderState(e *encoderState) { e.next = enc.freeList enc.freeList = e } // Unsigned integers have a two-state encoding. If the number is less // than 128 (0 through 0x7F), its value is written directly. // Otherwise the value is written in big-endian byte order preceded // by the byte length, negated. // encodeUint writes an encoded unsigned integer to state.b. func (state *encoderState) encodeUint(x uint64) { if x <= 0x7F { err := state.b.WriteByte(uint8(x)) if err != nil { error_(err) } return } i := uint64Size for x > 0 { state.buf[i] = uint8(x) x >>= 8 i-- } state.buf[i] = uint8(i - uint64Size) // = loop count, negated _, err := state.b.Write(state.buf[i : uint64Size+1]) if err != nil { error_(err) } } // encodeInt writes an encoded signed integer to state.w. // The low bit of the encoding says whether to bit complement the (other bits of the) // uint to recover the int. func (state *encoderState) encodeInt(i int64) { var x uint64 if i < 0 { x = uint64(^i<<1) | 1 } else { x = uint64(i << 1) } state.encodeUint(uint64(x)) } // encOp is the signature of an encoding operator for a given type. type encOp func(i *encInstr, state *encoderState, p unsafe.Pointer) // The 'instructions' of the encoding machine type encInstr struct { op encOp field int // field number indir int // how many pointer indirections to reach the value in the struct offset uintptr // offset in the structure of the field to encode } // update emits a field number and updates the state to record its value for delta encoding. // If the instruction pointer is nil, it does nothing func (state *encoderState) update(instr *encInstr) { if instr != nil { state.encodeUint(uint64(instr.field - state.fieldnum)) state.fieldnum = instr.field } } // Each encoder for a composite is responsible for handling any // indirections associated with the elements of the data structure. // If any pointer so reached is nil, no bytes are written. If the // data item is zero, no bytes are written. Single values - ints, // strings etc. - are indirected before calling their encoders. // Otherwise, the output (for a scalar) is the field number, as an // encoded integer, followed by the field data in its appropriate // format. // encIndirect dereferences p indir times and returns the result. func encIndirect(p unsafe.Pointer, indir int) unsafe.Pointer { for ; indir > 0; indir-- { p = *(*unsafe.Pointer)(p) if p == nil { return unsafe.Pointer(nil) } } return p } // encBool encodes the bool with address p as an unsigned 0 or 1. func encBool(i *encInstr, state *encoderState, p unsafe.Pointer) { b := *(*bool)(p) if b || state.sendZero { state.update(i) if b { state.encodeUint(1) } else { state.encodeUint(0) } } } // encInt encodes the int with address p. func encInt(i *encInstr, state *encoderState, p unsafe.Pointer) { v := int64(*(*int)(p)) if v != 0 || state.sendZero { state.update(i) state.encodeInt(v) } } // encUint encodes the uint with address p. func encUint(i *encInstr, state *encoderState, p unsafe.Pointer) { v := uint64(*(*uint)(p)) if v != 0 || state.sendZero { state.update(i) state.encodeUint(v) } } // encInt8 encodes the int8 with address p. func encInt8(i *encInstr, state *encoderState, p unsafe.Pointer) { v := int64(*(*int8)(p)) if v != 0 || state.sendZero { state.update(i) state.encodeInt(v) } } // encUint8 encodes the uint8 with address p. func encUint8(i *encInstr, state *encoderState, p unsafe.Pointer) { v := uint64(*(*uint8)(p)) if v != 0 || state.sendZero { state.update(i) state.encodeUint(v) } } // encInt16 encodes the int16 with address p. func encInt16(i *encInstr, state *encoderState, p unsafe.Pointer) { v := int64(*(*int16)(p)) if v != 0 || state.sendZero { state.update(i) state.encodeInt(v) } } // encUint16 encodes the uint16 with address p. func encUint16(i *encInstr, state *encoderState, p unsafe.Pointer) { v := uint64(*(*uint16)(p)) if v != 0 || state.sendZero { state.update(i) state.encodeUint(v) } } // encInt32 encodes the int32 with address p. func encInt32(i *encInstr, state *encoderState, p unsafe.Pointer) { v := int64(*(*int32)(p)) if v != 0 || state.sendZero { state.update(i) state.encodeInt(v) } } // encUint encodes the uint32 with address p. func encUint32(i *encInstr, state *encoderState, p unsafe.Pointer) { v := uint64(*(*uint32)(p)) if v != 0 || state.sendZero { state.update(i) state.encodeUint(v) } } // encInt64 encodes the int64 with address p. func encInt64(i *encInstr, state *encoderState, p unsafe.Pointer) { v := *(*int64)(p) if v != 0 || state.sendZero { state.update(i) state.encodeInt(v) } } // encInt64 encodes the uint64 with address p. func encUint64(i *encInstr, state *encoderState, p unsafe.Pointer) { v := *(*uint64)(p) if v != 0 || state.sendZero { state.update(i) state.encodeUint(v) } } // encUintptr encodes the uintptr with address p. func encUintptr(i *encInstr, state *encoderState, p unsafe.Pointer) { v := uint64(*(*uintptr)(p)) if v != 0 || state.sendZero { state.update(i) state.encodeUint(v) } } // floatBits returns a uint64 holding the bits of a floating-point number. // Floating-point numbers are transmitted as uint64s holding the bits // of the underlying representation. They are sent byte-reversed, with // the exponent end coming out first, so integer floating point numbers // (for example) transmit more compactly. This routine does the // swizzling. func floatBits(f float64) uint64 { u := math.Float64bits(f) var v uint64 for i := 0; i < 8; i++ { v <<= 8 v |= u & 0xFF u >>= 8 } return v } // encFloat32 encodes the float32 with address p. func encFloat32(i *encInstr, state *encoderState, p unsafe.Pointer) { f := *(*float32)(p) if f != 0 || state.sendZero { v := floatBits(float64(f)) state.update(i) state.encodeUint(v) } } // encFloat64 encodes the float64 with address p. func encFloat64(i *encInstr, state *encoderState, p unsafe.Pointer) { f := *(*float64)(p) if f != 0 || state.sendZero { state.update(i) v := floatBits(f) state.encodeUint(v) } } // encComplex64 encodes the complex64 with address p. // Complex numbers are just a pair of floating-point numbers, real part first. func encComplex64(i *encInstr, state *encoderState, p unsafe.Pointer) { c := *(*complex64)(p) if c != 0+0i || state.sendZero { rpart := floatBits(float64(real(c))) ipart := floatBits(float64(imag(c))) state.update(i) state.encodeUint(rpart) state.encodeUint(ipart) } } // encComplex128 encodes the complex128 with address p. func encComplex128(i *encInstr, state *encoderState, p unsafe.Pointer) { c := *(*complex128)(p) if c != 0+0i || state.sendZero { rpart := floatBits(real(c)) ipart := floatBits(imag(c)) state.update(i) state.encodeUint(rpart) state.encodeUint(ipart) } } // encUint8Array encodes the byte slice whose header has address p. // Byte arrays are encoded as an unsigned count followed by the raw bytes. func encUint8Array(i *encInstr, state *encoderState, p unsafe.Pointer) { b := *(*[]byte)(p) if len(b) > 0 || state.sendZero { state.update(i) state.encodeUint(uint64(len(b))) state.b.Write(b) } } // encString encodes the string whose header has address p. // Strings are encoded as an unsigned count followed by the raw bytes. func encString(i *encInstr, state *encoderState, p unsafe.Pointer) { s := *(*string)(p) if len(s) > 0 || state.sendZero { state.update(i) state.encodeUint(uint64(len(s))) state.b.WriteString(s) } } // encStructTerminator encodes the end of an encoded struct // as delta field number of 0. func encStructTerminator(i *encInstr, state *encoderState, p unsafe.Pointer) { state.encodeUint(0) } // Execution engine // encEngine an array of instructions indexed by field number of the encoding // data, typically a struct. It is executed top to bottom, walking the struct. type encEngine struct { instr []encInstr } const singletonField = 0 // encodeSingle encodes a single top-level non-struct value. func (enc *Encoder) encodeSingle(b *bytes.Buffer, engine *encEngine, basep unsafe.Pointer) { state := enc.newEncoderState(b) state.fieldnum = singletonField // There is no surrounding struct to frame the transmission, so we must // generate data even if the item is zero. To do this, set sendZero. state.sendZero = true instr := &engine.instr[singletonField] p := basep // offset will be zero if instr.indir > 0 { if p = encIndirect(p, instr.indir); p == nil { return } } instr.op(instr, state, p) enc.freeEncoderState(state) } // encodeStruct encodes a single struct value. func (enc *Encoder) encodeStruct(b *bytes.Buffer, engine *encEngine, basep unsafe.Pointer) { state := enc.newEncoderState(b) state.fieldnum = -1 for i := 0; i < len(engine.instr); i++ { instr := &engine.instr[i] p := unsafe.Pointer(uintptr(basep) + instr.offset) if instr.indir > 0 { if p = encIndirect(p, instr.indir); p == nil { continue } } instr.op(instr, state, p) } enc.freeEncoderState(state) } // encodeArray encodes the array whose 0th element is at p. func (enc *Encoder) encodeArray(b *bytes.Buffer, p unsafe.Pointer, op encOp, elemWid uintptr, elemIndir int, length int) { state := enc.newEncoderState(b) state.fieldnum = -1 state.sendZero = true state.encodeUint(uint64(length)) for i := 0; i < length; i++ { elemp := p if elemIndir > 0 { up := encIndirect(elemp, elemIndir) if up == nil { errorf("encodeArray: nil element") } elemp = up } op(nil, state, elemp) p = unsafe.Pointer(uintptr(p) + elemWid) } enc.freeEncoderState(state) } // encodeReflectValue is a helper for maps. It encodes the value v. func encodeReflectValue(state *encoderState, v reflect.Value, op encOp, indir int) { for i := 0; i < indir && v.IsValid(); i++ { v = reflect.Indirect(v) } if !v.IsValid() { errorf("encodeReflectValue: nil element") } op(nil, state, unsafeAddr(v)) } // encodeMap encodes a map as unsigned count followed by key:value pairs. // Because map internals are not exposed, we must use reflection rather than // addresses. func (enc *Encoder) encodeMap(b *bytes.Buffer, mv reflect.Value, keyOp, elemOp encOp, keyIndir, elemIndir int) { state := enc.newEncoderState(b) state.fieldnum = -1 state.sendZero = true keys := mv.MapKeys() state.encodeUint(uint64(len(keys))) for _, key := range keys { encodeReflectValue(state, key, keyOp, keyIndir) encodeReflectValue(state, mv.MapIndex(key), elemOp, elemIndir) } enc.freeEncoderState(state) } // encodeInterface encodes the interface value iv. // To send an interface, we send a string identifying the concrete type, followed // by the type identifier (which might require defining that type right now), followed // by the concrete value. A nil value gets sent as the empty string for the name, // followed by no value. func (enc *Encoder) encodeInterface(b *bytes.Buffer, iv reflect.Value) { // Gobs can encode nil interface values but not typed interface // values holding nil pointers, since nil pointers point to no value. elem := iv.Elem() if elem.Kind() == reflect.Ptr && elem.IsNil() { errorf("gob: cannot encode nil pointer of type %s inside interface", iv.Elem().Type()) } state := enc.newEncoderState(b) state.fieldnum = -1 state.sendZero = true if iv.IsNil() { state.encodeUint(0) return } ut := userType(iv.Elem().Type()) registerLock.RLock() name, ok := concreteTypeToName[ut.base] registerLock.RUnlock() if !ok { errorf("type not registered for interface: %s", ut.base) } // Send the name. state.encodeUint(uint64(len(name))) _, err := state.b.WriteString(name) if err != nil { error_(err) } // Define the type id if necessary. enc.sendTypeDescriptor(enc.writer(), state, ut) // Send the type id. enc.sendTypeId(state, ut) // Encode the value into a new buffer. Any nested type definitions // should be written to b, before the encoded value. enc.pushWriter(b) data := new(bytes.Buffer) data.Write(spaceForLength) enc.encode(data, elem, ut) if enc.err != nil { error_(enc.err) } enc.popWriter() enc.writeMessage(b, data) if enc.err != nil { error_(err) } enc.freeEncoderState(state) } // isZero reports whether the value is the zero of its type. func isZero(val reflect.Value) bool { switch val.Kind() { case reflect.Array: for i := 0; i < val.Len(); i++ { if !isZero(val.Index(i)) { return false } } return true case reflect.Map, reflect.Slice, reflect.String: return val.Len() == 0 case reflect.Bool: return !val.Bool() case reflect.Complex64, reflect.Complex128: return val.Complex() == 0 case reflect.Chan, reflect.Func, reflect.Interface, reflect.Ptr: return val.IsNil() case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return val.Int() == 0 case reflect.Float32, reflect.Float64: return val.Float() == 0 case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: return val.Uint() == 0 case reflect.Struct: for i := 0; i < val.NumField(); i++ { if !isZero(val.Field(i)) { return false } } return true } panic("unknown type in isZero " + val.Type().String()) } // encGobEncoder encodes a value that implements the GobEncoder interface. // The data is sent as a byte array. func (enc *Encoder) encodeGobEncoder(b *bytes.Buffer, ut *userTypeInfo, v reflect.Value) { // TODO: should we catch panics from the called method? var data []byte var err error // We know it's one of these. switch ut.externalEnc { case xGob: data, err = v.Interface().(GobEncoder).GobEncode() case xBinary: data, err = v.Interface().(encoding.BinaryMarshaler).MarshalBinary() case xText: data, err = v.Interface().(encoding.TextMarshaler).MarshalText() } if err != nil { error_(err) } state := enc.newEncoderState(b) state.fieldnum = -1 state.encodeUint(uint64(len(data))) state.b.Write(data) enc.freeEncoderState(state) } var encOpTable = [...]encOp{ reflect.Bool: encBool, reflect.Int: encInt, reflect.Int8: encInt8, reflect.Int16: encInt16, reflect.Int32: encInt32, reflect.Int64: encInt64, reflect.Uint: encUint, reflect.Uint8: encUint8, reflect.Uint16: encUint16, reflect.Uint32: encUint32, reflect.Uint64: encUint64, reflect.Uintptr: encUintptr, reflect.Float32: encFloat32, reflect.Float64: encFloat64, reflect.Complex64: encComplex64, reflect.Complex128: encComplex128, reflect.String: encString, } // encOpFor returns (a pointer to) the encoding op for the base type under rt and // the indirection count to reach it. func (enc *Encoder) encOpFor(rt reflect.Type, inProgress map[reflect.Type]*encOp) (*encOp, int) { ut := userType(rt) // If the type implements GobEncoder, we handle it without further processing. if ut.externalEnc != 0 { return enc.gobEncodeOpFor(ut) } // If this type is already in progress, it's a recursive type (e.g. map[string]*T). // Return the pointer to the op we're already building. if opPtr := inProgress[rt]; opPtr != nil { return opPtr, ut.indir } typ := ut.base indir := ut.indir k := typ.Kind() var op encOp if int(k) < len(encOpTable) { op = encOpTable[k] } if op == nil { inProgress[rt] = &op // Special cases switch t := typ; t.Kind() { case reflect.Slice: if t.Elem().Kind() == reflect.Uint8 { op = encUint8Array break } // Slices have a header; we decode it to find the underlying array. elemOp, elemIndir := enc.encOpFor(t.Elem(), inProgress) op = func(i *encInstr, state *encoderState, p unsafe.Pointer) { slice := (*reflect.SliceHeader)(p) if !state.sendZero && slice.Len == 0 { return } state.update(i) state.enc.encodeArray(state.b, unsafe.Pointer(slice.Data), *elemOp, t.Elem().Size(), elemIndir, int(slice.Len)) } case reflect.Array: // True arrays have size in the type. elemOp, elemIndir := enc.encOpFor(t.Elem(), inProgress) op = func(i *encInstr, state *encoderState, p unsafe.Pointer) { state.update(i) state.enc.encodeArray(state.b, p, *elemOp, t.Elem().Size(), elemIndir, t.Len()) } case reflect.Map: keyOp, keyIndir := enc.encOpFor(t.Key(), inProgress) elemOp, elemIndir := enc.encOpFor(t.Elem(), inProgress) op = func(i *encInstr, state *encoderState, p unsafe.Pointer) { // Maps cannot be accessed by moving addresses around the way // that slices etc. can. We must recover a full reflection value for // the iteration. v := reflect.NewAt(t, unsafe.Pointer(p)).Elem() mv := reflect.Indirect(v) // We send zero-length (but non-nil) maps because the // receiver might want to use the map. (Maps don't use append.) if !state.sendZero && mv.IsNil() { return } state.update(i) state.enc.encodeMap(state.b, mv, *keyOp, *elemOp, keyIndir, elemIndir) } case reflect.Struct: // Generate a closure that calls out to the engine for the nested type. enc.getEncEngine(userType(typ)) info := mustGetTypeInfo(typ) op = func(i *encInstr, state *encoderState, p unsafe.Pointer) { state.update(i) // indirect through info to delay evaluation for recursive structs state.enc.encodeStruct(state.b, info.encoder, p) } case reflect.Interface: op = func(i *encInstr, state *encoderState, p unsafe.Pointer) { // Interfaces transmit the name and contents of the concrete // value they contain. v := reflect.NewAt(t, unsafe.Pointer(p)).Elem() iv := reflect.Indirect(v) if !state.sendZero && (!iv.IsValid() || iv.IsNil()) { return } state.update(i) state.enc.encodeInterface(state.b, iv) } } } if op == nil { errorf("can't happen: encode type %s", rt) } return &op, indir } // gobEncodeOpFor returns the op for a type that is known to implement // GobEncoder. func (enc *Encoder) gobEncodeOpFor(ut *userTypeInfo) (*encOp, int) { rt := ut.user if ut.encIndir == -1 { rt = reflect.PtrTo(rt) } else if ut.encIndir > 0 { for i := int8(0); i < ut.encIndir; i++ { rt = rt.Elem() } } var op encOp op = func(i *encInstr, state *encoderState, p unsafe.Pointer) { var v reflect.Value if ut.encIndir == -1 { // Need to climb up one level to turn value into pointer. v = reflect.NewAt(rt, unsafe.Pointer(&p)).Elem() } else { v = reflect.NewAt(rt, p).Elem() } if !state.sendZero && isZero(v) { return } state.update(i) state.enc.encodeGobEncoder(state.b, ut, v) } return &op, int(ut.encIndir) // encIndir: op will get called with p == address of receiver. } // compileEnc returns the engine to compile the type. func (enc *Encoder) compileEnc(ut *userTypeInfo) *encEngine { srt := ut.base engine := new(encEngine) seen := make(map[reflect.Type]*encOp) rt := ut.base if ut.externalEnc != 0 { rt = ut.user } if ut.externalEnc == 0 && srt.Kind() == reflect.Struct { for fieldNum, wireFieldNum := 0, 0; fieldNum < srt.NumField(); fieldNum++ { f := srt.Field(fieldNum) if !isSent(&f) { continue } op, indir := enc.encOpFor(f.Type, seen) engine.instr = append(engine.instr, encInstr{*op, wireFieldNum, indir, uintptr(f.Offset)}) wireFieldNum++ } if srt.NumField() > 0 && len(engine.instr) == 0 { errorf("type %s has no exported fields", rt) } engine.instr = append(engine.instr, encInstr{encStructTerminator, 0, 0, 0}) } else { engine.instr = make([]encInstr, 1) op, indir := enc.encOpFor(rt, seen) engine.instr[0] = encInstr{*op, singletonField, indir, 0} // offset is zero } return engine } // getEncEngine returns the engine to compile the type. // typeLock must be held (or we're in initialization and guaranteed single-threaded). func (enc *Encoder) getEncEngine(ut *userTypeInfo) *encEngine { info, err1 := getTypeInfo(ut) if err1 != nil { error_(err1) } if info.encoder == nil { // Assign the encEngine now, so recursive types work correctly. But... info.encoder = new(encEngine) // ... if we fail to complete building the engine, don't cache the half-built machine. // Doing this here means we won't cache a type that is itself OK but // that contains a nested type that won't compile. The result is consistent // error behavior when Encode is called multiple times on the top-level type. ok := false defer func() { if !ok { info.encoder = nil } }() info.encoder = enc.compileEnc(ut) ok = true } return info.encoder } // lockAndGetEncEngine is a function that locks and compiles. // This lets us hold the lock only while compiling, not when encoding. func (enc *Encoder) lockAndGetEncEngine(ut *userTypeInfo) *encEngine { typeLock.Lock() defer typeLock.Unlock() return enc.getEncEngine(ut) } func (enc *Encoder) encode(b *bytes.Buffer, value reflect.Value, ut *userTypeInfo) { defer catchError(&enc.err) engine := enc.lockAndGetEncEngine(ut) indir := ut.indir if ut.externalEnc != 0 { indir = int(ut.encIndir) } for i := 0; i < indir; i++ { value = reflect.Indirect(value) } if ut.externalEnc == 0 && value.Type().Kind() == reflect.Struct { enc.encodeStruct(b, engine, unsafeAddr(value)) } else { enc.encodeSingle(b, engine, unsafeAddr(value)) } } go/src/pkg/encoding/gob/encoder.go0100644000000000000000000001672612412656737017366 0ustar00rootroot00000000000000// Copyright 2009 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 gob import ( "bytes" "io" "reflect" "sync" ) // An Encoder manages the transmission of type and data information to the // other side of a connection. type Encoder struct { mutex sync.Mutex // each item must be sent atomically w []io.Writer // where to send the data sent map[reflect.Type]typeId // which types we've already sent countState *encoderState // stage for writing counts freeList *encoderState // list of free encoderStates; avoids reallocation byteBuf bytes.Buffer // buffer for top-level encoderState err error } // Before we encode a message, we reserve space at the head of the // buffer in which to encode its length. This means we can use the // buffer to assemble the message without another allocation. const maxLength = 9 // Maximum size of an encoded length. var spaceForLength = make([]byte, maxLength) // NewEncoder returns a new encoder that will transmit on the io.Writer. func NewEncoder(w io.Writer) *Encoder { enc := new(Encoder) enc.w = []io.Writer{w} enc.sent = make(map[reflect.Type]typeId) enc.countState = enc.newEncoderState(new(bytes.Buffer)) return enc } // writer() returns the innermost writer the encoder is using func (enc *Encoder) writer() io.Writer { return enc.w[len(enc.w)-1] } // pushWriter adds a writer to the encoder. func (enc *Encoder) pushWriter(w io.Writer) { enc.w = append(enc.w, w) } // popWriter pops the innermost writer. func (enc *Encoder) popWriter() { enc.w = enc.w[0 : len(enc.w)-1] } func (enc *Encoder) setError(err error) { if enc.err == nil { // remember the first. enc.err = err } } // writeMessage sends the data item preceded by a unsigned count of its length. func (enc *Encoder) writeMessage(w io.Writer, b *bytes.Buffer) { // Space has been reserved for the length at the head of the message. // This is a little dirty: we grab the slice from the bytes.Buffer and massage // it by hand. message := b.Bytes() messageLen := len(message) - maxLength // Encode the length. enc.countState.b.Reset() enc.countState.encodeUint(uint64(messageLen)) // Copy the length to be a prefix of the message. offset := maxLength - enc.countState.b.Len() copy(message[offset:], enc.countState.b.Bytes()) // Write the data. _, err := w.Write(message[offset:]) // Drain the buffer and restore the space at the front for the count of the next message. b.Reset() b.Write(spaceForLength) if err != nil { enc.setError(err) } } // sendActualType sends the requested type, without further investigation, unless // it's been sent before. func (enc *Encoder) sendActualType(w io.Writer, state *encoderState, ut *userTypeInfo, actual reflect.Type) (sent bool) { if _, alreadySent := enc.sent[actual]; alreadySent { return false } typeLock.Lock() info, err := getTypeInfo(ut) typeLock.Unlock() if err != nil { enc.setError(err) return } // Send the pair (-id, type) // Id: state.encodeInt(-int64(info.id)) // Type: enc.encode(state.b, reflect.ValueOf(info.wire), wireTypeUserInfo) enc.writeMessage(w, state.b) if enc.err != nil { return } // Remember we've sent this type, both what the user gave us and the base type. enc.sent[ut.base] = info.id if ut.user != ut.base { enc.sent[ut.user] = info.id } // Now send the inner types switch st := actual; st.Kind() { case reflect.Struct: for i := 0; i < st.NumField(); i++ { if isExported(st.Field(i).Name) { enc.sendType(w, state, st.Field(i).Type) } } case reflect.Array, reflect.Slice: enc.sendType(w, state, st.Elem()) case reflect.Map: enc.sendType(w, state, st.Key()) enc.sendType(w, state, st.Elem()) } return true } // sendType sends the type info to the other side, if necessary. func (enc *Encoder) sendType(w io.Writer, state *encoderState, origt reflect.Type) (sent bool) { ut := userType(origt) if ut.externalEnc != 0 { // The rules are different: regardless of the underlying type's representation, // we need to tell the other side that the base type is a GobEncoder. return enc.sendActualType(w, state, ut, ut.base) } // It's a concrete value, so drill down to the base type. switch rt := ut.base; rt.Kind() { default: // Basic types and interfaces do not need to be described. return case reflect.Slice: // If it's []uint8, don't send; it's considered basic. if rt.Elem().Kind() == reflect.Uint8 { return } // Otherwise we do send. break case reflect.Array: // arrays must be sent so we know their lengths and element types. break case reflect.Map: // maps must be sent so we know their lengths and key/value types. break case reflect.Struct: // structs must be sent so we know their fields. break case reflect.Chan, reflect.Func: // If we get here, it's a field of a struct; ignore it. return } return enc.sendActualType(w, state, ut, ut.base) } // Encode transmits the data item represented by the empty interface value, // guaranteeing that all necessary type information has been transmitted first. func (enc *Encoder) Encode(e interface{}) error { return enc.EncodeValue(reflect.ValueOf(e)) } // sendTypeDescriptor makes sure the remote side knows about this type. // It will send a descriptor if this is the first time the type has been // sent. func (enc *Encoder) sendTypeDescriptor(w io.Writer, state *encoderState, ut *userTypeInfo) { // Make sure the type is known to the other side. // First, have we already sent this type? rt := ut.base if ut.externalEnc != 0 { rt = ut.user } if _, alreadySent := enc.sent[rt]; !alreadySent { // No, so send it. sent := enc.sendType(w, state, rt) if enc.err != nil { return } // If the type info has still not been transmitted, it means we have // a singleton basic type (int, []byte etc.) at top level. We don't // need to send the type info but we do need to update enc.sent. if !sent { typeLock.Lock() info, err := getTypeInfo(ut) typeLock.Unlock() if err != nil { enc.setError(err) return } enc.sent[rt] = info.id } } } // sendTypeId sends the id, which must have already been defined. func (enc *Encoder) sendTypeId(state *encoderState, ut *userTypeInfo) { // Identify the type of this top-level value. state.encodeInt(int64(enc.sent[ut.base])) } // EncodeValue transmits the data item represented by the reflection value, // guaranteeing that all necessary type information has been transmitted first. func (enc *Encoder) EncodeValue(value reflect.Value) error { // Gobs contain values. They cannot represent nil pointers, which // have no value to encode. if value.Kind() == reflect.Ptr && value.IsNil() { panic("gob: cannot encode nil pointer of type " + value.Type().String()) } // Make sure we're single-threaded through here, so multiple // goroutines can share an encoder. enc.mutex.Lock() defer enc.mutex.Unlock() // Remove any nested writers remaining due to previous errors. enc.w = enc.w[0:1] ut, err := validUserType(value.Type()) if err != nil { return err } enc.err = nil enc.byteBuf.Reset() enc.byteBuf.Write(spaceForLength) state := enc.newEncoderState(&enc.byteBuf) enc.sendTypeDescriptor(enc.writer(), state, ut) enc.sendTypeId(state, ut) if enc.err != nil { return enc.err } // Encode the object. enc.encode(state.b, value, ut) if enc.err == nil { enc.writeMessage(enc.writer(), state.b) } enc.freeEncoderState(state) return enc.err } go/src/pkg/encoding/gob/encoder_test.go0100644000000000000000000004706512412656737020425 0ustar00rootroot00000000000000// Copyright 2009 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 gob import ( "bytes" "fmt" "io" "reflect" "strings" "testing" ) type ET2 struct { X string } type ET1 struct { A int Et2 *ET2 Next *ET1 } // Like ET1 but with a different name for a field type ET3 struct { A int Et2 *ET2 DifferentNext *ET1 } // Like ET1 but with a different type for a field type ET4 struct { A int Et2 float64 Next int } func TestEncoderDecoder(t *testing.T) { b := new(bytes.Buffer) enc := NewEncoder(b) et1 := new(ET1) et1.A = 7 et1.Et2 = new(ET2) err := enc.Encode(et1) if err != nil { t.Error("encoder fail:", err) } dec := NewDecoder(b) newEt1 := new(ET1) err = dec.Decode(newEt1) if err != nil { t.Fatal("error decoding ET1:", err) } if !reflect.DeepEqual(et1, newEt1) { t.Fatalf("invalid data for et1: expected %+v; got %+v", *et1, *newEt1) } if b.Len() != 0 { t.Error("not at eof;", b.Len(), "bytes left") } enc.Encode(et1) newEt1 = new(ET1) err = dec.Decode(newEt1) if err != nil { t.Fatal("round 2: error decoding ET1:", err) } if !reflect.DeepEqual(et1, newEt1) { t.Fatalf("round 2: invalid data for et1: expected %+v; got %+v", *et1, *newEt1) } if b.Len() != 0 { t.Error("round 2: not at eof;", b.Len(), "bytes left") } // Now test with a running encoder/decoder pair that we recognize a type mismatch. err = enc.Encode(et1) if err != nil { t.Error("round 3: encoder fail:", err) } newEt2 := new(ET2) err = dec.Decode(newEt2) if err == nil { t.Fatal("round 3: expected `bad type' error decoding ET2") } } // Run one value through the encoder/decoder, but use the wrong type. // Input is always an ET1; we compare it to whatever is under 'e'. func badTypeCheck(e interface{}, shouldFail bool, msg string, t *testing.T) { b := new(bytes.Buffer) enc := NewEncoder(b) et1 := new(ET1) et1.A = 7 et1.Et2 = new(ET2) err := enc.Encode(et1) if err != nil { t.Error("encoder fail:", err) } dec := NewDecoder(b) err = dec.Decode(e) if shouldFail && err == nil { t.Error("expected error for", msg) } if !shouldFail && err != nil { t.Error("unexpected error for", msg, err) } } // Test that we recognize a bad type the first time. func TestWrongTypeDecoder(t *testing.T) { badTypeCheck(new(ET2), true, "no fields in common", t) badTypeCheck(new(ET3), false, "different name of field", t) badTypeCheck(new(ET4), true, "different type of field", t) } func corruptDataCheck(s string, err error, t *testing.T) { b := bytes.NewBufferString(s) dec := NewDecoder(b) err1 := dec.Decode(new(ET2)) if err1 != err { t.Errorf("from %q expected error %s; got %s", s, err, err1) } } // Check that we survive bad data. func TestBadData(t *testing.T) { corruptDataCheck("", io.EOF, t) corruptDataCheck("\x7Fhi", io.ErrUnexpectedEOF, t) corruptDataCheck("\x03now is the time for all good men", errBadType, t) // issue 6323. corruptDataCheck("\x04\x24foo", errRange, t) } // Types not supported at top level by the Encoder. var unsupportedValues = []interface{}{ make(chan int), func(a int) bool { return true }, } func TestUnsupported(t *testing.T) { var b bytes.Buffer enc := NewEncoder(&b) for _, v := range unsupportedValues { err := enc.Encode(v) if err == nil { t.Errorf("expected error for %T; got none", v) } } } func encAndDec(in, out interface{}) error { b := new(bytes.Buffer) enc := NewEncoder(b) err := enc.Encode(in) if err != nil { return err } dec := NewDecoder(b) err = dec.Decode(out) if err != nil { return err } return nil } func TestTypeToPtrType(t *testing.T) { // Encode a T, decode a *T type Type0 struct { A int } t0 := Type0{7} t0p := new(Type0) if err := encAndDec(t0, t0p); err != nil { t.Error(err) } } func TestPtrTypeToType(t *testing.T) { // Encode a *T, decode a T type Type1 struct { A uint } t1p := &Type1{17} var t1 Type1 if err := encAndDec(t1, t1p); err != nil { t.Error(err) } } func TestTypeToPtrPtrPtrPtrType(t *testing.T) { type Type2 struct { A ****float64 } t2 := Type2{} t2.A = new(***float64) *t2.A = new(**float64) **t2.A = new(*float64) ***t2.A = new(float64) ****t2.A = 27.4 t2pppp := new(***Type2) if err := encAndDec(t2, t2pppp); err != nil { t.Fatal(err) } if ****(****t2pppp).A != ****t2.A { t.Errorf("wrong value after decode: %g not %g", ****(****t2pppp).A, ****t2.A) } } func TestSlice(t *testing.T) { type Type3 struct { A []string } t3p := &Type3{[]string{"hello", "world"}} var t3 Type3 if err := encAndDec(t3, t3p); err != nil { t.Error(err) } } func TestValueError(t *testing.T) { // Encode a *T, decode a T type Type4 struct { A int } t4p := &Type4{3} var t4 Type4 // note: not a pointer. if err := encAndDec(t4p, t4); err == nil || strings.Index(err.Error(), "pointer") < 0 { t.Error("expected error about pointer; got", err) } } func TestArray(t *testing.T) { type Type5 struct { A [3]string B [3]byte } type Type6 struct { A [2]string // can't hold t5.a } t5 := Type5{[3]string{"hello", ",", "world"}, [3]byte{1, 2, 3}} var t5p Type5 if err := encAndDec(t5, &t5p); err != nil { t.Error(err) } var t6 Type6 if err := encAndDec(t5, &t6); err == nil { t.Error("should fail with mismatched array sizes") } } func TestRecursiveMapType(t *testing.T) { type recursiveMap map[string]recursiveMap r1 := recursiveMap{"A": recursiveMap{"B": nil, "C": nil}, "D": nil} r2 := make(recursiveMap) if err := encAndDec(r1, &r2); err != nil { t.Error(err) } } func TestRecursiveSliceType(t *testing.T) { type recursiveSlice []recursiveSlice r1 := recursiveSlice{0: recursiveSlice{0: nil}, 1: nil} r2 := make(recursiveSlice, 0) if err := encAndDec(r1, &r2); err != nil { t.Error(err) } } // Regression test for bug: must send zero values inside arrays func TestDefaultsInArray(t *testing.T) { type Type7 struct { B []bool I []int S []string F []float64 } t7 := Type7{ []bool{false, false, true}, []int{0, 0, 1}, []string{"hi", "", "there"}, []float64{0, 0, 1}, } var t7p Type7 if err := encAndDec(t7, &t7p); err != nil { t.Error(err) } } var testInt int var testFloat32 float32 var testString string var testSlice []string var testMap map[string]int var testArray [7]int type SingleTest struct { in interface{} out interface{} err string } var singleTests = []SingleTest{ {17, &testInt, ""}, {float32(17.5), &testFloat32, ""}, {"bike shed", &testString, ""}, {[]string{"bike", "shed", "paint", "color"}, &testSlice, ""}, {map[string]int{"seven": 7, "twelve": 12}, &testMap, ""}, {[7]int{4, 55, 0, 0, 0, 0, 0}, &testArray, ""}, // case that once triggered a bug {[7]int{4, 55, 1, 44, 22, 66, 1234}, &testArray, ""}, // Decode errors {172, &testFloat32, "type"}, } func TestSingletons(t *testing.T) { b := new(bytes.Buffer) enc := NewEncoder(b) dec := NewDecoder(b) for _, test := range singleTests { b.Reset() err := enc.Encode(test.in) if err != nil { t.Errorf("error encoding %v: %s", test.in, err) continue } err = dec.Decode(test.out) switch { case err != nil && test.err == "": t.Errorf("error decoding %v: %s", test.in, err) continue case err == nil && test.err != "": t.Errorf("expected error decoding %v: %s", test.in, test.err) continue case err != nil && test.err != "": if strings.Index(err.Error(), test.err) < 0 { t.Errorf("wrong error decoding %v: wanted %s, got %v", test.in, test.err, err) } continue } // Get rid of the pointer in the rhs val := reflect.ValueOf(test.out).Elem().Interface() if !reflect.DeepEqual(test.in, val) { t.Errorf("decoding singleton: expected %v got %v", test.in, val) } } } func TestStructNonStruct(t *testing.T) { type Struct struct { A string } type NonStruct string s := Struct{"hello"} var sp Struct if err := encAndDec(s, &sp); err != nil { t.Error(err) } var ns NonStruct if err := encAndDec(s, &ns); err == nil { t.Error("should get error for struct/non-struct") } else if strings.Index(err.Error(), "type") < 0 { t.Error("for struct/non-struct expected type error; got", err) } // Now try the other way var nsp NonStruct if err := encAndDec(ns, &nsp); err != nil { t.Error(err) } if err := encAndDec(ns, &s); err == nil { t.Error("should get error for non-struct/struct") } else if strings.Index(err.Error(), "type") < 0 { t.Error("for non-struct/struct expected type error; got", err) } } type interfaceIndirectTestI interface { F() bool } type interfaceIndirectTestT struct{} func (this *interfaceIndirectTestT) F() bool { return true } // A version of a bug reported on golang-nuts. Also tests top-level // slice of interfaces. The issue was registering *T caused T to be // stored as the concrete type. func TestInterfaceIndirect(t *testing.T) { Register(&interfaceIndirectTestT{}) b := new(bytes.Buffer) w := []interfaceIndirectTestI{&interfaceIndirectTestT{}} err := NewEncoder(b).Encode(w) if err != nil { t.Fatal("encode error:", err) } var r []interfaceIndirectTestI err = NewDecoder(b).Decode(&r) if err != nil { t.Fatal("decode error:", err) } } // Now follow various tests that decode into things that can't represent the // encoded value, all of which should be legal. // Also, when the ignored object contains an interface value, it may define // types. Make sure that skipping the value still defines the types by using // the encoder/decoder pair to send a value afterwards. If an interface // is sent, its type in the test is always NewType0, so this checks that the // encoder and decoder don't skew with respect to type definitions. type Struct0 struct { I interface{} } type NewType0 struct { S string } type ignoreTest struct { in, out interface{} } var ignoreTests = []ignoreTest{ // Decode normal struct into an empty struct {&struct{ A int }{23}, &struct{}{}}, // Decode normal struct into a nil. {&struct{ A int }{23}, nil}, // Decode singleton string into a nil. {"hello, world", nil}, // Decode singleton slice into a nil. {[]int{1, 2, 3, 4}, nil}, // Decode struct containing an interface into a nil. {&Struct0{&NewType0{"value0"}}, nil}, // Decode singleton slice of interfaces into a nil. {[]interface{}{"hi", &NewType0{"value1"}, 23}, nil}, } func TestDecodeIntoNothing(t *testing.T) { Register(new(NewType0)) for i, test := range ignoreTests { b := new(bytes.Buffer) enc := NewEncoder(b) err := enc.Encode(test.in) if err != nil { t.Errorf("%d: encode error %s:", i, err) continue } dec := NewDecoder(b) err = dec.Decode(test.out) if err != nil { t.Errorf("%d: decode error: %s", i, err) continue } // Now see if the encoder and decoder are in a consistent state. str := fmt.Sprintf("Value %d", i) err = enc.Encode(&NewType0{str}) if err != nil { t.Fatalf("%d: NewType0 encode error: %s", i, err) } ns := new(NewType0) err = dec.Decode(ns) if err != nil { t.Fatalf("%d: NewType0 decode error: %s", i, err) } if ns.S != str { t.Fatalf("%d: expected %q got %q", i, str, ns.S) } } } // Another bug from golang-nuts, involving nested interfaces. type Bug0Outer struct { Bug0Field interface{} } type Bug0Inner struct { A int } func TestNestedInterfaces(t *testing.T) { var buf bytes.Buffer e := NewEncoder(&buf) d := NewDecoder(&buf) Register(new(Bug0Outer)) Register(new(Bug0Inner)) f := &Bug0Outer{&Bug0Outer{&Bug0Inner{7}}} var v interface{} = f err := e.Encode(&v) if err != nil { t.Fatal("Encode:", err) } err = d.Decode(&v) if err != nil { t.Fatal("Decode:", err) } // Make sure it decoded correctly. outer1, ok := v.(*Bug0Outer) if !ok { t.Fatalf("v not Bug0Outer: %T", v) } outer2, ok := outer1.Bug0Field.(*Bug0Outer) if !ok { t.Fatalf("v.Bug0Field not Bug0Outer: %T", outer1.Bug0Field) } inner, ok := outer2.Bug0Field.(*Bug0Inner) if !ok { t.Fatalf("v.Bug0Field.Bug0Field not Bug0Inner: %T", outer2.Bug0Field) } if inner.A != 7 { t.Fatalf("final value %d; expected %d", inner.A, 7) } } // The bugs keep coming. We forgot to send map subtypes before the map. type Bug1Elem struct { Name string Id int } type Bug1StructMap map[string]Bug1Elem func bug1EncDec(in Bug1StructMap, out *Bug1StructMap) error { return nil } func TestMapBug1(t *testing.T) { in := make(Bug1StructMap) in["val1"] = Bug1Elem{"elem1", 1} in["val2"] = Bug1Elem{"elem2", 2} b := new(bytes.Buffer) enc := NewEncoder(b) err := enc.Encode(in) if err != nil { t.Fatal("encode:", err) } dec := NewDecoder(b) out := make(Bug1StructMap) err = dec.Decode(&out) if err != nil { t.Fatal("decode:", err) } if !reflect.DeepEqual(in, out) { t.Errorf("mismatch: %v %v", in, out) } } func TestGobMapInterfaceEncode(t *testing.T) { m := map[string]interface{}{ "up": uintptr(0), "i0": []int{-1}, "i1": []int8{-1}, "i2": []int16{-1}, "i3": []int32{-1}, "i4": []int64{-1}, "u0": []uint{1}, "u1": []uint8{1}, "u2": []uint16{1}, "u3": []uint32{1}, "u4": []uint64{1}, "f0": []float32{1}, "f1": []float64{1}, "c0": []complex64{complex(2, -2)}, "c1": []complex128{complex(2, float64(-2))}, "us": []uintptr{0}, "bo": []bool{false}, "st": []string{"s"}, } enc := NewEncoder(new(bytes.Buffer)) err := enc.Encode(m) if err != nil { t.Errorf("encode map: %s", err) } } func TestSliceReusesMemory(t *testing.T) { buf := new(bytes.Buffer) // Bytes { x := []byte("abcd") enc := NewEncoder(buf) err := enc.Encode(x) if err != nil { t.Errorf("bytes: encode: %s", err) } // Decode into y, which is big enough. y := []byte("ABCDE") addr := &y[0] dec := NewDecoder(buf) err = dec.Decode(&y) if err != nil { t.Fatal("bytes: decode:", err) } if !bytes.Equal(x, y) { t.Errorf("bytes: expected %q got %q\n", x, y) } if addr != &y[0] { t.Errorf("bytes: unnecessary reallocation") } } // general slice { x := []rune("abcd") enc := NewEncoder(buf) err := enc.Encode(x) if err != nil { t.Errorf("ints: encode: %s", err) } // Decode into y, which is big enough. y := []rune("ABCDE") addr := &y[0] dec := NewDecoder(buf) err = dec.Decode(&y) if err != nil { t.Fatal("ints: decode:", err) } if !reflect.DeepEqual(x, y) { t.Errorf("ints: expected %q got %q\n", x, y) } if addr != &y[0] { t.Errorf("ints: unnecessary reallocation") } } } // Used to crash: negative count in recvMessage. func TestBadCount(t *testing.T) { b := []byte{0xfb, 0xa5, 0x82, 0x2f, 0xca, 0x1} if err := NewDecoder(bytes.NewReader(b)).Decode(nil); err == nil { t.Error("expected error from bad count") } else if err.Error() != errBadCount.Error() { t.Error("expected bad count error; got", err) } } // Verify that sequential Decoders built on a single input will // succeed if the input implements ReadByte and there is no // type information in the stream. func TestSequentialDecoder(t *testing.T) { b := new(bytes.Buffer) enc := NewEncoder(b) const count = 10 for i := 0; i < count; i++ { s := fmt.Sprintf("%d", i) if err := enc.Encode(s); err != nil { t.Error("encoder fail:", err) } } for i := 0; i < count; i++ { dec := NewDecoder(b) var s string if err := dec.Decode(&s); err != nil { t.Fatal("decoder fail:", err) } if s != fmt.Sprintf("%d", i) { t.Fatalf("decode expected %d got %s", i, s) } } } // Should be able to have unrepresentable fields (chan, func, *chan etc.); we just ignore them. type Bug2 struct { A int C chan int CP *chan int F func() FPP **func() } func TestChanFuncIgnored(t *testing.T) { c := make(chan int) f := func() {} fp := &f b0 := Bug2{23, c, &c, f, &fp} var buf bytes.Buffer enc := NewEncoder(&buf) if err := enc.Encode(b0); err != nil { t.Fatal("error encoding:", err) } var b1 Bug2 err := NewDecoder(&buf).Decode(&b1) if err != nil { t.Fatal("decode:", err) } if b1.A != b0.A { t.Fatalf("got %d want %d", b1.A, b0.A) } if b1.C != nil || b1.CP != nil || b1.F != nil || b1.FPP != nil { t.Fatal("unexpected value for chan or func") } } func TestSliceIncompatibility(t *testing.T) { var in = []byte{1, 2, 3} var out []int if err := encAndDec(in, &out); err == nil { t.Error("expected compatibility error") } } // Mutually recursive slices of structs caused problems. type Bug3 struct { Num int Children []*Bug3 } func TestGobPtrSlices(t *testing.T) { in := []*Bug3{ {1, nil}, {2, nil}, } b := new(bytes.Buffer) err := NewEncoder(b).Encode(&in) if err != nil { t.Fatal("encode:", err) } var out []*Bug3 err = NewDecoder(b).Decode(&out) if err != nil { t.Fatal("decode:", err) } if !reflect.DeepEqual(in, out) { t.Fatalf("got %v; wanted %v", out, in) } } // getDecEnginePtr cached engine for ut.base instead of ut.user so we passed // a *map and then tried to reuse its engine to decode the inner map. func TestPtrToMapOfMap(t *testing.T) { Register(make(map[string]interface{})) subdata := make(map[string]interface{}) subdata["bar"] = "baz" data := make(map[string]interface{}) data["foo"] = subdata b := new(bytes.Buffer) err := NewEncoder(b).Encode(data) if err != nil { t.Fatal("encode:", err) } var newData map[string]interface{} err = NewDecoder(b).Decode(&newData) if err != nil { t.Fatal("decode:", err) } if !reflect.DeepEqual(data, newData) { t.Fatalf("expected %v got %v", data, newData) } } // A top-level nil pointer generates a panic with a helpful string-valued message. func TestTopLevelNilPointer(t *testing.T) { errMsg := topLevelNilPanic(t) if errMsg == "" { t.Fatal("top-level nil pointer did not panic") } if !strings.Contains(errMsg, "nil pointer") { t.Fatal("expected nil pointer error, got:", errMsg) } } func topLevelNilPanic(t *testing.T) (panicErr string) { defer func() { e := recover() if err, ok := e.(string); ok { panicErr = err } }() var ip *int buf := new(bytes.Buffer) if err := NewEncoder(buf).Encode(ip); err != nil { t.Fatal("error in encode:", err) } return } func TestNilPointerInsideInterface(t *testing.T) { var ip *int si := struct { I interface{} }{ I: ip, } buf := new(bytes.Buffer) err := NewEncoder(buf).Encode(si) if err == nil { t.Fatal("expected error, got none") } errMsg := err.Error() if !strings.Contains(errMsg, "nil pointer") || !strings.Contains(errMsg, "interface") { t.Fatal("expected error about nil pointer and interface, got:", errMsg) } } type Bug4Public struct { Name string Secret Bug4Secret } type Bug4Secret struct { a int // error: no exported fields. } // Test that a failed compilation doesn't leave around an executable encoder. // Issue 3273. func TestMutipleEncodingsOfBadType(t *testing.T) { x := Bug4Public{ Name: "name", Secret: Bug4Secret{1}, } buf := new(bytes.Buffer) enc := NewEncoder(buf) err := enc.Encode(x) if err == nil { t.Fatal("first encoding: expected error") } buf.Reset() enc = NewEncoder(buf) err = enc.Encode(x) if err == nil { t.Fatal("second encoding: expected error") } if !strings.Contains(err.Error(), "no exported fields") { t.Errorf("expected error about no exported fields; got %v", err) } } // There was an error check comparing the length of the input with the // length of the slice being decoded. It was wrong because the next // thing in the input might be a type definition, which would lead to // an incorrect length check. This test reproduces the corner case. type Z struct { } func Test29ElementSlice(t *testing.T) { Register(Z{}) src := make([]interface{}, 100) // Size needs to be bigger than size of type definition. for i := range src { src[i] = Z{} } buf := new(bytes.Buffer) err := NewEncoder(buf).Encode(src) if err != nil { t.Fatalf("encode: %v", err) return } var dst []interface{} err = NewDecoder(buf).Decode(&dst) if err != nil { t.Errorf("decode: %v", err) return } } go/src/pkg/encoding/gob/error.go0100644000000000000000000000256712412656737017076 0ustar00rootroot00000000000000// Copyright 2009 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 gob import "fmt" // Errors in decoding and encoding are handled using panic and recover. // Panics caused by user error (that is, everything except run-time panics // such as "index out of bounds" errors) do not leave the file that caused // them, but are instead turned into plain error returns. Encoding and // decoding functions and methods that do not return an error either use // panic to report an error or are guaranteed error-free. // A gobError is used to distinguish errors (panics) generated in this package. type gobError struct { err error } // errorf is like error_ but takes Printf-style arguments to construct an error. // It always prefixes the message with "gob: ". func errorf(format string, args ...interface{}) { error_(fmt.Errorf("gob: "+format, args...)) } // error wraps the argument error and uses it as the argument to panic. func error_(err error) { panic(gobError{err}) } // catchError is meant to be used as a deferred function to turn a panic(gobError) into a // plain error. It overwrites the error return of the function that deferred its call. func catchError(err *error) { if e := recover(); e != nil { ge, ok := e.(gobError) if !ok { panic(e) } *err = ge.err } return } go/src/pkg/encoding/gob/example_encdec_test.go0100644000000000000000000000304412412656737021727 0ustar00rootroot00000000000000// Copyright 2013 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 gob_test import ( "bytes" "encoding/gob" "fmt" "log" ) // The Vector type has unexported fields, which the package cannot access. // We therefore write a BinaryMarshal/BinaryUnmarshal method pair to allow us // to send and receive the type with the gob package. These interfaces are // defined in the "encoding" package. // We could equivalently use the locally defined GobEncode/GobDecoder // interfaces. type Vector struct { x, y, z int } func (v Vector) MarshalBinary() ([]byte, error) { // A simple encoding: plain text. var b bytes.Buffer fmt.Fprintln(&b, v.x, v.y, v.z) return b.Bytes(), nil } // UnmarshalBinary modifies the receiver so it must take a pointer receiver. func (v *Vector) UnmarshalBinary(data []byte) error { // A simple encoding: plain text. b := bytes.NewBuffer(data) _, err := fmt.Fscanln(b, &v.x, &v.y, &v.z) return err } // This example transmits a value that implements the custom encoding and decoding methods. func Example_encodeDecode() { var network bytes.Buffer // Stand-in for the network. // Create an encoder and send a value. enc := gob.NewEncoder(&network) err := enc.Encode(Vector{3, 4, 5}) if err != nil { log.Fatal("encode:", err) } // Create a decoder and receive a value. dec := gob.NewDecoder(&network) var v Vector err = dec.Decode(&v) if err != nil { log.Fatal("decode:", err) } fmt.Println(v) // Output: // {3 4 5} } go/src/pkg/encoding/gob/example_interface_test.go0100644000000000000000000000421612412656737022450 0ustar00rootroot00000000000000// Copyright 2013 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 gob_test import ( "bytes" "encoding/gob" "fmt" "log" "math" ) type Point struct { X, Y int } func (p Point) Hypotenuse() float64 { return math.Hypot(float64(p.X), float64(p.Y)) } type Pythagoras interface { Hypotenuse() float64 } // This example shows how to encode an interface value. The key // distinction from regular types is to register the concrete type that // implements the interface. func Example_interface() { var network bytes.Buffer // Stand-in for the network. // We must register the concrete type for the encoder and decoder (which would // normally be on a separate machine from the encoder). On each end, this tells the // engine which concrete type is being sent that implements the interface. gob.Register(Point{}) // Create an encoder and send some values. enc := gob.NewEncoder(&network) for i := 1; i <= 3; i++ { interfaceEncode(enc, Point{3 * i, 4 * i}) } // Create a decoder and receive some values. dec := gob.NewDecoder(&network) for i := 1; i <= 3; i++ { result := interfaceDecode(dec) fmt.Println(result.Hypotenuse()) } // Output: // 5 // 10 // 15 } // interfaceEncode encodes the interface value into the encoder. func interfaceEncode(enc *gob.Encoder, p Pythagoras) { // The encode will fail unless the concrete type has been // registered. We registered it in the calling function. // Pass pointer to interface so Encode sees (and hence sends) a value of // interface type. If we passed p directly it would see the concrete type instead. // See the blog post, "The Laws of Reflection" for background. err := enc.Encode(&p) if err != nil { log.Fatal("encode:", err) } } // interfaceDecode decodes the next interface value from the stream and returns it. func interfaceDecode(dec *gob.Decoder) Pythagoras { // The decode will fail unless the concrete type on the wire has been // registered. We registered it in the calling function. var p Pythagoras err := dec.Decode(&p) if err != nil { log.Fatal("decode:", err) } return p } go/src/pkg/encoding/gob/example_test.go0100644000000000000000000000264712412656737020436 0ustar00rootroot00000000000000// Copyright 2013 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 gob_test import ( "bytes" "encoding/gob" "fmt" "log" ) type P struct { X, Y, Z int Name string } type Q struct { X, Y *int32 Name string } // This example shows the basic usage of the package: Create an encoder, // transmit some values, receive them with a decoder. func Example_basic() { // Initialize the encoder and decoder. Normally enc and dec would be // bound to network connections and the encoder and decoder would // run in different processes. var network bytes.Buffer // Stand-in for a network connection enc := gob.NewEncoder(&network) // Will write to network. dec := gob.NewDecoder(&network) // Will read from network. // Encode (send) some values. err := enc.Encode(P{3, 4, 5, "Pythagoras"}) if err != nil { log.Fatal("encode error:", err) } err = enc.Encode(P{1782, 1841, 1922, "Treehouse"}) if err != nil { log.Fatal("encode error:", err) } // Decode (receive) and print the values. var q Q err = dec.Decode(&q) if err != nil { log.Fatal("decode error 1:", err) } fmt.Printf("%q: {%d, %d}\n", q.Name, *q.X, *q.Y) err = dec.Decode(&q) if err != nil { log.Fatal("decode error 2:", err) } fmt.Printf("%q: {%d, %d}\n", q.Name, *q.X, *q.Y) // Output: // "Pythagoras": {3, 4} // "Treehouse": {1782, 1841} } go/src/pkg/encoding/gob/gobencdec_test.go0100644000000000000000000004456412412656737020720 0ustar00rootroot00000000000000// Copyright 2011 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 file contains tests of the GobEncoder/GobDecoder support. package gob import ( "bytes" "errors" "fmt" "io" "net" "strings" "testing" "time" ) // Types that implement the GobEncoder/Decoder interfaces. type ByteStruct struct { a byte // not an exported field } type StringStruct struct { s string // not an exported field } type ArrayStruct struct { a [8192]byte // not an exported field } type Gobber int type ValueGobber string // encodes with a value, decodes with a pointer. type BinaryGobber int type BinaryValueGobber string type TextGobber int type TextValueGobber string // The relevant methods func (g *ByteStruct) GobEncode() ([]byte, error) { b := make([]byte, 3) b[0] = g.a b[1] = g.a + 1 b[2] = g.a + 2 return b, nil } func (g *ByteStruct) GobDecode(data []byte) error { if g == nil { return errors.New("NIL RECEIVER") } // Expect N sequential-valued bytes. if len(data) == 0 { return io.EOF } g.a = data[0] for i, c := range data { if c != g.a+byte(i) { return errors.New("invalid data sequence") } } return nil } func (g *StringStruct) GobEncode() ([]byte, error) { return []byte(g.s), nil } func (g *StringStruct) GobDecode(data []byte) error { // Expect N sequential-valued bytes. if len(data) == 0 { return io.EOF } a := data[0] for i, c := range data { if c != a+byte(i) { return errors.New("invalid data sequence") } } g.s = string(data) return nil } func (a *ArrayStruct) GobEncode() ([]byte, error) { return a.a[:], nil } func (a *ArrayStruct) GobDecode(data []byte) error { if len(data) != len(a.a) { return errors.New("wrong length in array decode") } copy(a.a[:], data) return nil } func (g *Gobber) GobEncode() ([]byte, error) { return []byte(fmt.Sprintf("VALUE=%d", *g)), nil } func (g *Gobber) GobDecode(data []byte) error { _, err := fmt.Sscanf(string(data), "VALUE=%d", (*int)(g)) return err } func (g *BinaryGobber) MarshalBinary() ([]byte, error) { return []byte(fmt.Sprintf("VALUE=%d", *g)), nil } func (g *BinaryGobber) UnmarshalBinary(data []byte) error { _, err := fmt.Sscanf(string(data), "VALUE=%d", (*int)(g)) return err } func (g *TextGobber) MarshalText() ([]byte, error) { return []byte(fmt.Sprintf("VALUE=%d", *g)), nil } func (g *TextGobber) UnmarshalText(data []byte) error { _, err := fmt.Sscanf(string(data), "VALUE=%d", (*int)(g)) return err } func (v ValueGobber) GobEncode() ([]byte, error) { return []byte(fmt.Sprintf("VALUE=%s", v)), nil } func (v *ValueGobber) GobDecode(data []byte) error { _, err := fmt.Sscanf(string(data), "VALUE=%s", (*string)(v)) return err } func (v BinaryValueGobber) MarshalBinary() ([]byte, error) { return []byte(fmt.Sprintf("VALUE=%s", v)), nil } func (v *BinaryValueGobber) UnmarshalBinary(data []byte) error { _, err := fmt.Sscanf(string(data), "VALUE=%s", (*string)(v)) return err } func (v TextValueGobber) MarshalText() ([]byte, error) { return []byte(fmt.Sprintf("VALUE=%s", v)), nil } func (v *TextValueGobber) UnmarshalText(data []byte) error { _, err := fmt.Sscanf(string(data), "VALUE=%s", (*string)(v)) return err } // Structs that include GobEncodable fields. type GobTest0 struct { X int // guarantee we have something in common with GobTest* G *ByteStruct } type GobTest1 struct { X int // guarantee we have something in common with GobTest* G *StringStruct } type GobTest2 struct { X int // guarantee we have something in common with GobTest* G string // not a GobEncoder - should give us errors } type GobTest3 struct { X int // guarantee we have something in common with GobTest* G *Gobber B *BinaryGobber T *TextGobber } type GobTest4 struct { X int // guarantee we have something in common with GobTest* V ValueGobber BV BinaryValueGobber TV TextValueGobber } type GobTest5 struct { X int // guarantee we have something in common with GobTest* V *ValueGobber BV *BinaryValueGobber TV *TextValueGobber } type GobTest6 struct { X int // guarantee we have something in common with GobTest* V ValueGobber W *ValueGobber BV BinaryValueGobber BW *BinaryValueGobber TV TextValueGobber TW *TextValueGobber } type GobTest7 struct { X int // guarantee we have something in common with GobTest* V *ValueGobber W ValueGobber BV *BinaryValueGobber BW BinaryValueGobber TV *TextValueGobber TW TextValueGobber } type GobTestIgnoreEncoder struct { X int // guarantee we have something in common with GobTest* } type GobTestValueEncDec struct { X int // guarantee we have something in common with GobTest* G StringStruct // not a pointer. } type GobTestIndirectEncDec struct { X int // guarantee we have something in common with GobTest* G ***StringStruct // indirections to the receiver. } type GobTestArrayEncDec struct { X int // guarantee we have something in common with GobTest* A ArrayStruct // not a pointer. } type GobTestIndirectArrayEncDec struct { X int // guarantee we have something in common with GobTest* A ***ArrayStruct // indirections to a large receiver. } func TestGobEncoderField(t *testing.T) { b := new(bytes.Buffer) // First a field that's a structure. enc := NewEncoder(b) err := enc.Encode(GobTest0{17, &ByteStruct{'A'}}) if err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) x := new(GobTest0) err = dec.Decode(x) if err != nil { t.Fatal("decode error:", err) } if x.G.a != 'A' { t.Errorf("expected 'A' got %c", x.G.a) } // Now a field that's not a structure. b.Reset() gobber := Gobber(23) bgobber := BinaryGobber(24) tgobber := TextGobber(25) err = enc.Encode(GobTest3{17, &gobber, &bgobber, &tgobber}) if err != nil { t.Fatal("encode error:", err) } y := new(GobTest3) err = dec.Decode(y) if err != nil { t.Fatal("decode error:", err) } if *y.G != 23 || *y.B != 24 || *y.T != 25 { t.Errorf("expected '23 got %d", *y.G) } } // Even though the field is a value, we can still take its address // and should be able to call the methods. func TestGobEncoderValueField(t *testing.T) { b := new(bytes.Buffer) // First a field that's a structure. enc := NewEncoder(b) err := enc.Encode(GobTestValueEncDec{17, StringStruct{"HIJKL"}}) if err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) x := new(GobTestValueEncDec) err = dec.Decode(x) if err != nil { t.Fatal("decode error:", err) } if x.G.s != "HIJKL" { t.Errorf("expected `HIJKL` got %s", x.G.s) } } // GobEncode/Decode should work even if the value is // more indirect than the receiver. func TestGobEncoderIndirectField(t *testing.T) { b := new(bytes.Buffer) // First a field that's a structure. enc := NewEncoder(b) s := &StringStruct{"HIJKL"} sp := &s err := enc.Encode(GobTestIndirectEncDec{17, &sp}) if err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) x := new(GobTestIndirectEncDec) err = dec.Decode(x) if err != nil { t.Fatal("decode error:", err) } if (***x.G).s != "HIJKL" { t.Errorf("expected `HIJKL` got %s", (***x.G).s) } } // Test with a large field with methods. func TestGobEncoderArrayField(t *testing.T) { b := new(bytes.Buffer) enc := NewEncoder(b) var a GobTestArrayEncDec a.X = 17 for i := range a.A.a { a.A.a[i] = byte(i) } err := enc.Encode(a) if err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) x := new(GobTestArrayEncDec) err = dec.Decode(x) if err != nil { t.Fatal("decode error:", err) } for i, v := range x.A.a { if v != byte(i) { t.Errorf("expected %x got %x", byte(i), v) break } } } // Test an indirection to a large field with methods. func TestGobEncoderIndirectArrayField(t *testing.T) { b := new(bytes.Buffer) enc := NewEncoder(b) var a GobTestIndirectArrayEncDec a.X = 17 var array ArrayStruct ap := &array app := &ap a.A = &app for i := range array.a { array.a[i] = byte(i) } err := enc.Encode(a) if err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) x := new(GobTestIndirectArrayEncDec) err = dec.Decode(x) if err != nil { t.Fatal("decode error:", err) } for i, v := range (***x.A).a { if v != byte(i) { t.Errorf("expected %x got %x", byte(i), v) break } } } // As long as the fields have the same name and implement the // interface, we can cross-connect them. Not sure it's useful // and may even be bad but it works and it's hard to prevent // without exposing the contents of the object, which would // defeat the purpose. func TestGobEncoderFieldsOfDifferentType(t *testing.T) { // first, string in field to byte in field b := new(bytes.Buffer) enc := NewEncoder(b) err := enc.Encode(GobTest1{17, &StringStruct{"ABC"}}) if err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) x := new(GobTest0) err = dec.Decode(x) if err != nil { t.Fatal("decode error:", err) } if x.G.a != 'A' { t.Errorf("expected 'A' got %c", x.G.a) } // now the other direction, byte in field to string in field b.Reset() err = enc.Encode(GobTest0{17, &ByteStruct{'X'}}) if err != nil { t.Fatal("encode error:", err) } y := new(GobTest1) err = dec.Decode(y) if err != nil { t.Fatal("decode error:", err) } if y.G.s != "XYZ" { t.Fatalf("expected `XYZ` got %q", y.G.s) } } // Test that we can encode a value and decode into a pointer. func TestGobEncoderValueEncoder(t *testing.T) { // first, string in field to byte in field b := new(bytes.Buffer) enc := NewEncoder(b) err := enc.Encode(GobTest4{17, ValueGobber("hello"), BinaryValueGobber("Καλημέρα"), TextValueGobber("こんにちは")}) if err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) x := new(GobTest5) err = dec.Decode(x) if err != nil { t.Fatal("decode error:", err) } if *x.V != "hello" || *x.BV != "Καλημέρα" || *x.TV != "こんにちは" { t.Errorf("expected `hello` got %s", *x.V) } } // Test that we can use a value then a pointer type of a GobEncoder // in the same encoded value. Bug 4647. func TestGobEncoderValueThenPointer(t *testing.T) { v := ValueGobber("forty-two") w := ValueGobber("six-by-nine") bv := BinaryValueGobber("1nanocentury") bw := BinaryValueGobber("πseconds") tv := TextValueGobber("gravitationalacceleration") tw := TextValueGobber("π²ft/s²") // this was a bug: encoding a GobEncoder by value before a GobEncoder // pointer would cause duplicate type definitions to be sent. b := new(bytes.Buffer) enc := NewEncoder(b) if err := enc.Encode(GobTest6{42, v, &w, bv, &bw, tv, &tw}); err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) x := new(GobTest6) if err := dec.Decode(x); err != nil { t.Fatal("decode error:", err) } if got, want := x.V, v; got != want { t.Errorf("v = %q, want %q", got, want) } if got, want := x.W, w; got == nil { t.Errorf("w = nil, want %q", want) } else if *got != want { t.Errorf("w = %q, want %q", *got, want) } if got, want := x.BV, bv; got != want { t.Errorf("bv = %q, want %q", got, want) } if got, want := x.BW, bw; got == nil { t.Errorf("bw = nil, want %q", want) } else if *got != want { t.Errorf("bw = %q, want %q", *got, want) } if got, want := x.TV, tv; got != want { t.Errorf("tv = %q, want %q", got, want) } if got, want := x.TW, tw; got == nil { t.Errorf("tw = nil, want %q", want) } else if *got != want { t.Errorf("tw = %q, want %q", *got, want) } } // Test that we can use a pointer then a value type of a GobEncoder // in the same encoded value. func TestGobEncoderPointerThenValue(t *testing.T) { v := ValueGobber("forty-two") w := ValueGobber("six-by-nine") bv := BinaryValueGobber("1nanocentury") bw := BinaryValueGobber("πseconds") tv := TextValueGobber("gravitationalacceleration") tw := TextValueGobber("π²ft/s²") b := new(bytes.Buffer) enc := NewEncoder(b) if err := enc.Encode(GobTest7{42, &v, w, &bv, bw, &tv, tw}); err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) x := new(GobTest7) if err := dec.Decode(x); err != nil { t.Fatal("decode error:", err) } if got, want := x.V, v; got == nil { t.Errorf("v = nil, want %q", want) } else if *got != want { t.Errorf("v = %q, want %q", *got, want) } if got, want := x.W, w; got != want { t.Errorf("w = %q, want %q", got, want) } if got, want := x.BV, bv; got == nil { t.Errorf("bv = nil, want %q", want) } else if *got != want { t.Errorf("bv = %q, want %q", *got, want) } if got, want := x.BW, bw; got != want { t.Errorf("bw = %q, want %q", got, want) } if got, want := x.TV, tv; got == nil { t.Errorf("tv = nil, want %q", want) } else if *got != want { t.Errorf("tv = %q, want %q", *got, want) } if got, want := x.TW, tw; got != want { t.Errorf("tw = %q, want %q", got, want) } } func TestGobEncoderFieldTypeError(t *testing.T) { // GobEncoder to non-decoder: error b := new(bytes.Buffer) enc := NewEncoder(b) err := enc.Encode(GobTest1{17, &StringStruct{"ABC"}}) if err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) x := &GobTest2{} err = dec.Decode(x) if err == nil { t.Fatal("expected decode error for mismatched fields (encoder to non-decoder)") } if strings.Index(err.Error(), "type") < 0 { t.Fatal("expected type error; got", err) } // Non-encoder to GobDecoder: error b.Reset() err = enc.Encode(GobTest2{17, "ABC"}) if err != nil { t.Fatal("encode error:", err) } y := &GobTest1{} err = dec.Decode(y) if err == nil { t.Fatal("expected decode error for mismatched fields (non-encoder to decoder)") } if strings.Index(err.Error(), "type") < 0 { t.Fatal("expected type error; got", err) } } // Even though ByteStruct is a struct, it's treated as a singleton at the top level. func TestGobEncoderStructSingleton(t *testing.T) { b := new(bytes.Buffer) enc := NewEncoder(b) err := enc.Encode(&ByteStruct{'A'}) if err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) x := new(ByteStruct) err = dec.Decode(x) if err != nil { t.Fatal("decode error:", err) } if x.a != 'A' { t.Errorf("expected 'A' got %c", x.a) } } func TestGobEncoderNonStructSingleton(t *testing.T) { b := new(bytes.Buffer) enc := NewEncoder(b) err := enc.Encode(Gobber(1234)) if err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) var x Gobber err = dec.Decode(&x) if err != nil { t.Fatal("decode error:", err) } if x != 1234 { t.Errorf("expected 1234 got %d", x) } } func TestGobEncoderIgnoreStructField(t *testing.T) { b := new(bytes.Buffer) // First a field that's a structure. enc := NewEncoder(b) err := enc.Encode(GobTest0{17, &ByteStruct{'A'}}) if err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) x := new(GobTestIgnoreEncoder) err = dec.Decode(x) if err != nil { t.Fatal("decode error:", err) } if x.X != 17 { t.Errorf("expected 17 got %c", x.X) } } func TestGobEncoderIgnoreNonStructField(t *testing.T) { b := new(bytes.Buffer) // First a field that's a structure. enc := NewEncoder(b) gobber := Gobber(23) bgobber := BinaryGobber(24) tgobber := TextGobber(25) err := enc.Encode(GobTest3{17, &gobber, &bgobber, &tgobber}) if err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) x := new(GobTestIgnoreEncoder) err = dec.Decode(x) if err != nil { t.Fatal("decode error:", err) } if x.X != 17 { t.Errorf("expected 17 got %c", x.X) } } func TestGobEncoderIgnoreNilEncoder(t *testing.T) { b := new(bytes.Buffer) // First a field that's a structure. enc := NewEncoder(b) err := enc.Encode(GobTest0{X: 18}) // G is nil if err != nil { t.Fatal("encode error:", err) } dec := NewDecoder(b) x := new(GobTest0) err = dec.Decode(x) if err != nil { t.Fatal("decode error:", err) } if x.X != 18 { t.Errorf("expected x.X = 18, got %v", x.X) } if x.G != nil { t.Errorf("expected x.G = nil, got %v", x.G) } } type gobDecoderBug0 struct { foo, bar string } func (br *gobDecoderBug0) String() string { return br.foo + "-" + br.bar } func (br *gobDecoderBug0) GobEncode() ([]byte, error) { return []byte(br.String()), nil } func (br *gobDecoderBug0) GobDecode(b []byte) error { br.foo = "foo" br.bar = "bar" return nil } // This was a bug: the receiver has a different indirection level // than the variable. func TestGobEncoderExtraIndirect(t *testing.T) { gdb := &gobDecoderBug0{"foo", "bar"} buf := new(bytes.Buffer) e := NewEncoder(buf) if err := e.Encode(gdb); err != nil { t.Fatalf("encode: %v", err) } d := NewDecoder(buf) var got *gobDecoderBug0 if err := d.Decode(&got); err != nil { t.Fatalf("decode: %v", err) } if got.foo != gdb.foo || got.bar != gdb.bar { t.Errorf("got = %q, want %q", got, gdb) } } // Another bug: this caused a crash with the new Go1 Time type. // We throw in a gob-encoding array, to test another case of isZero, // and a struct containing an nil interface, to test a third. type isZeroBug struct { T time.Time S string I int A isZeroBugArray F isZeroBugInterface } type isZeroBugArray [2]uint8 // Receiver is value, not pointer, to test isZero of array. func (a isZeroBugArray) GobEncode() (b []byte, e error) { b = append(b, a[:]...) return b, nil } func (a *isZeroBugArray) GobDecode(data []byte) error { if len(data) != len(a) { return io.EOF } a[0] = data[0] a[1] = data[1] return nil } type isZeroBugInterface struct { I interface{} } func (i isZeroBugInterface) GobEncode() (b []byte, e error) { return []byte{}, nil } func (i *isZeroBugInterface) GobDecode(data []byte) error { return nil } func TestGobEncodeIsZero(t *testing.T) { x := isZeroBug{time.Now(), "hello", -55, isZeroBugArray{1, 2}, isZeroBugInterface{}} b := new(bytes.Buffer) enc := NewEncoder(b) err := enc.Encode(x) if err != nil { t.Fatal("encode:", err) } var y isZeroBug dec := NewDecoder(b) err = dec.Decode(&y) if err != nil { t.Fatal("decode:", err) } if x != y { t.Fatalf("%v != %v", x, y) } } func TestGobEncodePtrError(t *testing.T) { var err error b := new(bytes.Buffer) enc := NewEncoder(b) err = enc.Encode(&err) if err != nil { t.Fatal("encode:", err) } dec := NewDecoder(b) err2 := fmt.Errorf("foo") err = dec.Decode(&err2) if err != nil { t.Fatal("decode:", err) } if err2 != nil { t.Fatalf("expected nil, got %v", err2) } } func TestNetIP(t *testing.T) { // Encoding of net.IP{1,2,3,4} in Go 1.1. enc := []byte{0x07, 0x0a, 0x00, 0x04, 0x01, 0x02, 0x03, 0x04} var ip net.IP err := NewDecoder(bytes.NewReader(enc)).Decode(&ip) if err != nil { t.Fatalf("decode: %v", err) } if ip.String() != "1.2.3.4" { t.Errorf("decoded to %v, want 1.2.3.4", ip.String()) } } go/src/pkg/encoding/gob/timing_test.go0100644000000000000000000000423612412656737020266 0ustar00rootroot00000000000000// Copyright 2011 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 gob import ( "bytes" "io" "os" "runtime" "testing" ) type Bench struct { A int B float64 C string D []byte } func benchmarkEndToEnd(r io.Reader, w io.Writer, b *testing.B) { b.StopTimer() enc := NewEncoder(w) dec := NewDecoder(r) bench := &Bench{7, 3.2, "now is the time", []byte("for all good men")} b.StartTimer() for i := 0; i < b.N; i++ { if enc.Encode(bench) != nil { panic("encode error") } if dec.Decode(bench) != nil { panic("decode error") } } } func BenchmarkEndToEndPipe(b *testing.B) { r, w, err := os.Pipe() if err != nil { b.Fatal("can't get pipe:", err) } benchmarkEndToEnd(r, w, b) } func BenchmarkEndToEndByteBuffer(b *testing.B) { var buf bytes.Buffer benchmarkEndToEnd(&buf, &buf, b) } func TestCountEncodeMallocs(t *testing.T) { if testing.Short() { t.Skip("skipping malloc count in short mode") } if runtime.GOMAXPROCS(0) > 1 { t.Skip("skipping; GOMAXPROCS>1") } const N = 1000 var buf bytes.Buffer enc := NewEncoder(&buf) bench := &Bench{7, 3.2, "now is the time", []byte("for all good men")} allocs := testing.AllocsPerRun(N, func() { err := enc.Encode(bench) if err != nil { t.Fatal("encode:", err) } }) if allocs != 0 { t.Fatalf("mallocs per encode of type Bench: %v; wanted 0\n", allocs) } } func TestCountDecodeMallocs(t *testing.T) { if testing.Short() { t.Skip("skipping malloc count in short mode") } if runtime.GOMAXPROCS(0) > 1 { t.Skip("skipping; GOMAXPROCS>1") } const N = 1000 var buf bytes.Buffer enc := NewEncoder(&buf) bench := &Bench{7, 3.2, "now is the time", []byte("for all good men")} // Fill the buffer with enough to decode testing.AllocsPerRun(N, func() { err := enc.Encode(bench) if err != nil { t.Fatal("encode:", err) } }) dec := NewDecoder(&buf) allocs := testing.AllocsPerRun(N, func() { *bench = Bench{} err := dec.Decode(&bench) if err != nil { t.Fatal("decode:", err) } }) if allocs != 3 { t.Fatalf("mallocs per decode of type Bench: %v; wanted 3\n", allocs) } } go/src/pkg/encoding/gob/type.go0100644000000000000000000006353512412656737016730 0ustar00rootroot00000000000000// Copyright 2009 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 gob import ( "encoding" "errors" "fmt" "os" "reflect" "sync" "unicode" "unicode/utf8" ) // userTypeInfo stores the information associated with a type the user has handed // to the package. It's computed once and stored in a map keyed by reflection // type. type userTypeInfo struct { user reflect.Type // the type the user handed us base reflect.Type // the base type after all indirections indir int // number of indirections to reach the base type externalEnc int // xGob, xBinary, or xText externalDec int // xGob, xBinary or xText encIndir int8 // number of indirections to reach the receiver type; may be negative decIndir int8 // number of indirections to reach the receiver type; may be negative } // externalEncoding bits const ( xGob = 1 + iota // GobEncoder or GobDecoder xBinary // encoding.BinaryMarshaler or encoding.BinaryUnmarshaler xText // encoding.TextMarshaler or encoding.TextUnmarshaler ) var ( // Protected by an RWMutex because we read it a lot and write // it only when we see a new type, typically when compiling. userTypeLock sync.RWMutex userTypeCache = make(map[reflect.Type]*userTypeInfo) ) // validType returns, and saves, the information associated with user-provided type rt. // If the user type is not valid, err will be non-nil. To be used when the error handler // is not set up. func validUserType(rt reflect.Type) (ut *userTypeInfo, err error) { userTypeLock.RLock() ut = userTypeCache[rt] userTypeLock.RUnlock() if ut != nil { return } // Now set the value under the write lock. userTypeLock.Lock() defer userTypeLock.Unlock() if ut = userTypeCache[rt]; ut != nil { // Lost the race; not a problem. return } ut = new(userTypeInfo) ut.base = rt ut.user = rt // A type that is just a cycle of pointers (such as type T *T) cannot // be represented in gobs, which need some concrete data. We use a // cycle detection algorithm from Knuth, Vol 2, Section 3.1, Ex 6, // pp 539-540. As we step through indirections, run another type at // half speed. If they meet up, there's a cycle. slowpoke := ut.base // walks half as fast as ut.base for { pt := ut.base if pt.Kind() != reflect.Ptr { break } ut.base = pt.Elem() if ut.base == slowpoke { // ut.base lapped slowpoke // recursive pointer type. return nil, errors.New("can't represent recursive pointer type " + ut.base.String()) } if ut.indir%2 == 0 { slowpoke = slowpoke.Elem() } ut.indir++ } if ok, indir := implementsInterface(ut.user, gobEncoderInterfaceType); ok { ut.externalEnc, ut.encIndir = xGob, indir } else if ok, indir := implementsInterface(ut.user, binaryMarshalerInterfaceType); ok { ut.externalEnc, ut.encIndir = xBinary, indir } // NOTE(rsc): Would like to allow MarshalText here, but results in incompatibility // with older encodings for net.IP. See golang.org/issue/6760. // } else if ok, indir := implementsInterface(ut.user, textMarshalerInterfaceType); ok { // ut.externalEnc, ut.encIndir = xText, indir // } if ok, indir := implementsInterface(ut.user, gobDecoderInterfaceType); ok { ut.externalDec, ut.decIndir = xGob, indir } else if ok, indir := implementsInterface(ut.user, binaryUnmarshalerInterfaceType); ok { ut.externalDec, ut.decIndir = xBinary, indir } // See note above. // } else if ok, indir := implementsInterface(ut.user, textUnmarshalerInterfaceType); ok { // ut.externalDec, ut.decIndir = xText, indir // } userTypeCache[rt] = ut return } var ( gobEncoderInterfaceType = reflect.TypeOf((*GobEncoder)(nil)).Elem() gobDecoderInterfaceType = reflect.TypeOf((*GobDecoder)(nil)).Elem() binaryMarshalerInterfaceType = reflect.TypeOf((*encoding.BinaryMarshaler)(nil)).Elem() binaryUnmarshalerInterfaceType = reflect.TypeOf((*encoding.BinaryUnmarshaler)(nil)).Elem() textMarshalerInterfaceType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem() textUnmarshalerInterfaceType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem() ) // implementsInterface reports whether the type implements the // gobEncoder/gobDecoder interface. // It also returns the number of indirections required to get to the // implementation. func implementsInterface(typ, gobEncDecType reflect.Type) (success bool, indir int8) { if typ == nil { return } rt := typ // The type might be a pointer and we need to keep // dereferencing to the base type until we find an implementation. for { if rt.Implements(gobEncDecType) { return true, indir } if p := rt; p.Kind() == reflect.Ptr { indir++ if indir > 100 { // insane number of indirections return false, 0 } rt = p.Elem() continue } break } // No luck yet, but if this is a base type (non-pointer), the pointer might satisfy. if typ.Kind() != reflect.Ptr { // Not a pointer, but does the pointer work? if reflect.PtrTo(typ).Implements(gobEncDecType) { return true, -1 } } return false, 0 } // userType returns, and saves, the information associated with user-provided type rt. // If the user type is not valid, it calls error. func userType(rt reflect.Type) *userTypeInfo { ut, err := validUserType(rt) if err != nil { error_(err) } return ut } // A typeId represents a gob Type as an integer that can be passed on the wire. // Internally, typeIds are used as keys to a map to recover the underlying type info. type typeId int32 var nextId typeId // incremented for each new type we build var typeLock sync.Mutex // set while building a type const firstUserId = 64 // lowest id number granted to user type gobType interface { id() typeId setId(id typeId) name() string string() string // not public; only for debugging safeString(seen map[typeId]bool) string } var types = make(map[reflect.Type]gobType) var idToType = make(map[typeId]gobType) var builtinIdToType map[typeId]gobType // set in init() after builtins are established func setTypeId(typ gobType) { // When building recursive types, someone may get there before us. if typ.id() != 0 { return } nextId++ typ.setId(nextId) idToType[nextId] = typ } func (t typeId) gobType() gobType { if t == 0 { return nil } return idToType[t] } // string returns the string representation of the type associated with the typeId. func (t typeId) string() string { if t.gobType() == nil { return "" } return t.gobType().string() } // Name returns the name of the type associated with the typeId. func (t typeId) name() string { if t.gobType() == nil { return "" } return t.gobType().name() } // CommonType holds elements of all types. // It is a historical artifact, kept for binary compatibility and exported // only for the benefit of the package's encoding of type descriptors. It is // not intended for direct use by clients. type CommonType struct { Name string Id typeId } func (t *CommonType) id() typeId { return t.Id } func (t *CommonType) setId(id typeId) { t.Id = id } func (t *CommonType) string() string { return t.Name } func (t *CommonType) safeString(seen map[typeId]bool) string { return t.Name } func (t *CommonType) name() string { return t.Name } // Create and check predefined types // The string for tBytes is "bytes" not "[]byte" to signify its specialness. var ( // Primordial types, needed during initialization. // Always passed as pointers so the interface{} type // goes through without losing its interfaceness. tBool = bootstrapType("bool", (*bool)(nil), 1) tInt = bootstrapType("int", (*int)(nil), 2) tUint = bootstrapType("uint", (*uint)(nil), 3) tFloat = bootstrapType("float", (*float64)(nil), 4) tBytes = bootstrapType("bytes", (*[]byte)(nil), 5) tString = bootstrapType("string", (*string)(nil), 6) tComplex = bootstrapType("complex", (*complex128)(nil), 7) tInterface = bootstrapType("interface", (*interface{})(nil), 8) // Reserve some Ids for compatible expansion tReserved7 = bootstrapType("_reserved1", (*struct{ r7 int })(nil), 9) tReserved6 = bootstrapType("_reserved1", (*struct{ r6 int })(nil), 10) tReserved5 = bootstrapType("_reserved1", (*struct{ r5 int })(nil), 11) tReserved4 = bootstrapType("_reserved1", (*struct{ r4 int })(nil), 12) tReserved3 = bootstrapType("_reserved1", (*struct{ r3 int })(nil), 13) tReserved2 = bootstrapType("_reserved1", (*struct{ r2 int })(nil), 14) tReserved1 = bootstrapType("_reserved1", (*struct{ r1 int })(nil), 15) ) // Predefined because it's needed by the Decoder var tWireType = mustGetTypeInfo(reflect.TypeOf(wireType{})).id var wireTypeUserInfo *userTypeInfo // userTypeInfo of (*wireType) func init() { // Some magic numbers to make sure there are no surprises. checkId(16, tWireType) checkId(17, mustGetTypeInfo(reflect.TypeOf(arrayType{})).id) checkId(18, mustGetTypeInfo(reflect.TypeOf(CommonType{})).id) checkId(19, mustGetTypeInfo(reflect.TypeOf(sliceType{})).id) checkId(20, mustGetTypeInfo(reflect.TypeOf(structType{})).id) checkId(21, mustGetTypeInfo(reflect.TypeOf(fieldType{})).id) checkId(23, mustGetTypeInfo(reflect.TypeOf(mapType{})).id) builtinIdToType = make(map[typeId]gobType) for k, v := range idToType { builtinIdToType[k] = v } // Move the id space upwards to allow for growth in the predefined world // without breaking existing files. if nextId > firstUserId { panic(fmt.Sprintln("nextId too large:", nextId)) } nextId = firstUserId registerBasics() wireTypeUserInfo = userType(reflect.TypeOf((*wireType)(nil))) } // Array type type arrayType struct { CommonType Elem typeId Len int } func newArrayType(name string) *arrayType { a := &arrayType{CommonType{Name: name}, 0, 0} return a } func (a *arrayType) init(elem gobType, len int) { // Set our type id before evaluating the element's, in case it's our own. setTypeId(a) a.Elem = elem.id() a.Len = len } func (a *arrayType) safeString(seen map[typeId]bool) string { if seen[a.Id] { return a.Name } seen[a.Id] = true return fmt.Sprintf("[%d]%s", a.Len, a.Elem.gobType().safeString(seen)) } func (a *arrayType) string() string { return a.safeString(make(map[typeId]bool)) } // GobEncoder type (something that implements the GobEncoder interface) type gobEncoderType struct { CommonType } func newGobEncoderType(name string) *gobEncoderType { g := &gobEncoderType{CommonType{Name: name}} setTypeId(g) return g } func (g *gobEncoderType) safeString(seen map[typeId]bool) string { return g.Name } func (g *gobEncoderType) string() string { return g.Name } // Map type type mapType struct { CommonType Key typeId Elem typeId } func newMapType(name string) *mapType { m := &mapType{CommonType{Name: name}, 0, 0} return m } func (m *mapType) init(key, elem gobType) { // Set our type id before evaluating the element's, in case it's our own. setTypeId(m) m.Key = key.id() m.Elem = elem.id() } func (m *mapType) safeString(seen map[typeId]bool) string { if seen[m.Id] { return m.Name } seen[m.Id] = true key := m.Key.gobType().safeString(seen) elem := m.Elem.gobType().safeString(seen) return fmt.Sprintf("map[%s]%s", key, elem) } func (m *mapType) string() string { return m.safeString(make(map[typeId]bool)) } // Slice type type sliceType struct { CommonType Elem typeId } func newSliceType(name string) *sliceType { s := &sliceType{CommonType{Name: name}, 0} return s } func (s *sliceType) init(elem gobType) { // Set our type id before evaluating the element's, in case it's our own. setTypeId(s) // See the comments about ids in newTypeObject. Only slices and // structs have mutual recursion. if elem.id() == 0 { setTypeId(elem) } s.Elem = elem.id() } func (s *sliceType) safeString(seen map[typeId]bool) string { if seen[s.Id] { return s.Name } seen[s.Id] = true return fmt.Sprintf("[]%s", s.Elem.gobType().safeString(seen)) } func (s *sliceType) string() string { return s.safeString(make(map[typeId]bool)) } // Struct type type fieldType struct { Name string Id typeId } type structType struct { CommonType Field []*fieldType } func (s *structType) safeString(seen map[typeId]bool) string { if s == nil { return "" } if _, ok := seen[s.Id]; ok { return s.Name } seen[s.Id] = true str := s.Name + " = struct { " for _, f := range s.Field { str += fmt.Sprintf("%s %s; ", f.Name, f.Id.gobType().safeString(seen)) } str += "}" return str } func (s *structType) string() string { return s.safeString(make(map[typeId]bool)) } func newStructType(name string) *structType { s := &structType{CommonType{Name: name}, nil} // For historical reasons we set the id here rather than init. // See the comment in newTypeObject for details. setTypeId(s) return s } // newTypeObject allocates a gobType for the reflection type rt. // Unless ut represents a GobEncoder, rt should be the base type // of ut. // This is only called from the encoding side. The decoding side // works through typeIds and userTypeInfos alone. func newTypeObject(name string, ut *userTypeInfo, rt reflect.Type) (gobType, error) { // Does this type implement GobEncoder? if ut.externalEnc != 0 { return newGobEncoderType(name), nil } var err error var type0, type1 gobType defer func() { if err != nil { delete(types, rt) } }() // Install the top-level type before the subtypes (e.g. struct before // fields) so recursive types can be constructed safely. switch t := rt; t.Kind() { // All basic types are easy: they are predefined. case reflect.Bool: return tBool.gobType(), nil case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return tInt.gobType(), nil case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: return tUint.gobType(), nil case reflect.Float32, reflect.Float64: return tFloat.gobType(), nil case reflect.Complex64, reflect.Complex128: return tComplex.gobType(), nil case reflect.String: return tString.gobType(), nil case reflect.Interface: return tInterface.gobType(), nil case reflect.Array: at := newArrayType(name) types[rt] = at type0, err = getBaseType("", t.Elem()) if err != nil { return nil, err } // Historical aside: // For arrays, maps, and slices, we set the type id after the elements // are constructed. This is to retain the order of type id allocation after // a fix made to handle recursive types, which changed the order in // which types are built. Delaying the setting in this way preserves // type ids while allowing recursive types to be described. Structs, // done below, were already handling recursion correctly so they // assign the top-level id before those of the field. at.init(type0, t.Len()) return at, nil case reflect.Map: mt := newMapType(name) types[rt] = mt type0, err = getBaseType("", t.Key()) if err != nil { return nil, err } type1, err = getBaseType("", t.Elem()) if err != nil { return nil, err } mt.init(type0, type1) return mt, nil case reflect.Slice: // []byte == []uint8 is a special case if t.Elem().Kind() == reflect.Uint8 { return tBytes.gobType(), nil } st := newSliceType(name) types[rt] = st type0, err = getBaseType(t.Elem().Name(), t.Elem()) if err != nil { return nil, err } st.init(type0) return st, nil case reflect.Struct: st := newStructType(name) types[rt] = st idToType[st.id()] = st for i := 0; i < t.NumField(); i++ { f := t.Field(i) if !isSent(&f) { continue } typ := userType(f.Type).base tname := typ.Name() if tname == "" { t := userType(f.Type).base tname = t.String() } gt, err := getBaseType(tname, f.Type) if err != nil { return nil, err } // Some mutually recursive types can cause us to be here while // still defining the element. Fix the element type id here. // We could do this more neatly by setting the id at the start of // building every type, but that would break binary compatibility. if gt.id() == 0 { setTypeId(gt) } st.Field = append(st.Field, &fieldType{f.Name, gt.id()}) } return st, nil default: return nil, errors.New("gob NewTypeObject can't handle type: " + rt.String()) } } // isExported reports whether this is an exported - upper case - name. func isExported(name string) bool { rune, _ := utf8.DecodeRuneInString(name) return unicode.IsUpper(rune) } // isSent reports whether this struct field is to be transmitted. // It will be transmitted only if it is exported and not a chan or func field // or pointer to chan or func. func isSent(field *reflect.StructField) bool { if !isExported(field.Name) { return false } // If the field is a chan or func or pointer thereto, don't send it. // That is, treat it like an unexported field. typ := field.Type for typ.Kind() == reflect.Ptr { typ = typ.Elem() } if typ.Kind() == reflect.Chan || typ.Kind() == reflect.Func { return false } return true } // getBaseType returns the Gob type describing the given reflect.Type's base type. // typeLock must be held. func getBaseType(name string, rt reflect.Type) (gobType, error) { ut := userType(rt) return getType(name, ut, ut.base) } // getType returns the Gob type describing the given reflect.Type. // Should be called only when handling GobEncoders/Decoders, // which may be pointers. All other types are handled through the // base type, never a pointer. // typeLock must be held. func getType(name string, ut *userTypeInfo, rt reflect.Type) (gobType, error) { typ, present := types[rt] if present { return typ, nil } typ, err := newTypeObject(name, ut, rt) if err == nil { types[rt] = typ } return typ, err } func checkId(want, got typeId) { if want != got { fmt.Fprintf(os.Stderr, "checkId: %d should be %d\n", int(got), int(want)) panic("bootstrap type wrong id: " + got.name() + " " + got.string() + " not " + want.string()) } } // used for building the basic types; called only from init(). the incoming // interface always refers to a pointer. func bootstrapType(name string, e interface{}, expect typeId) typeId { rt := reflect.TypeOf(e).Elem() _, present := types[rt] if present { panic("bootstrap type already present: " + name + ", " + rt.String()) } typ := &CommonType{Name: name} types[rt] = typ setTypeId(typ) checkId(expect, nextId) userType(rt) // might as well cache it now return nextId } // Representation of the information we send and receive about this type. // Each value we send is preceded by its type definition: an encoded int. // However, the very first time we send the value, we first send the pair // (-id, wireType). // For bootstrapping purposes, we assume that the recipient knows how // to decode a wireType; it is exactly the wireType struct here, interpreted // using the gob rules for sending a structure, except that we assume the // ids for wireType and structType etc. are known. The relevant pieces // are built in encode.go's init() function. // To maintain binary compatibility, if you extend this type, always put // the new fields last. type wireType struct { ArrayT *arrayType SliceT *sliceType StructT *structType MapT *mapType GobEncoderT *gobEncoderType BinaryMarshalerT *gobEncoderType TextMarshalerT *gobEncoderType } func (w *wireType) string() string { const unknown = "unknown type" if w == nil { return unknown } switch { case w.ArrayT != nil: return w.ArrayT.Name case w.SliceT != nil: return w.SliceT.Name case w.StructT != nil: return w.StructT.Name case w.MapT != nil: return w.MapT.Name case w.GobEncoderT != nil: return w.GobEncoderT.Name case w.BinaryMarshalerT != nil: return w.BinaryMarshalerT.Name case w.TextMarshalerT != nil: return w.TextMarshalerT.Name } return unknown } type typeInfo struct { id typeId encoder *encEngine wire *wireType } var typeInfoMap = make(map[reflect.Type]*typeInfo) // protected by typeLock // typeLock must be held. func getTypeInfo(ut *userTypeInfo) (*typeInfo, error) { rt := ut.base if ut.externalEnc != 0 { // We want the user type, not the base type. rt = ut.user } info, ok := typeInfoMap[rt] if ok { return info, nil } info = new(typeInfo) gt, err := getBaseType(rt.Name(), rt) if err != nil { return nil, err } info.id = gt.id() if ut.externalEnc != 0 { userType, err := getType(rt.Name(), ut, rt) if err != nil { return nil, err } gt := userType.id().gobType().(*gobEncoderType) switch ut.externalEnc { case xGob: info.wire = &wireType{GobEncoderT: gt} case xBinary: info.wire = &wireType{BinaryMarshalerT: gt} case xText: info.wire = &wireType{TextMarshalerT: gt} } typeInfoMap[ut.user] = info return info, nil } t := info.id.gobType() switch typ := rt; typ.Kind() { case reflect.Array: info.wire = &wireType{ArrayT: t.(*arrayType)} case reflect.Map: info.wire = &wireType{MapT: t.(*mapType)} case reflect.Slice: // []byte == []uint8 is a special case handled separately if typ.Elem().Kind() != reflect.Uint8 { info.wire = &wireType{SliceT: t.(*sliceType)} } case reflect.Struct: info.wire = &wireType{StructT: t.(*structType)} } typeInfoMap[rt] = info return info, nil } // Called only when a panic is acceptable and unexpected. func mustGetTypeInfo(rt reflect.Type) *typeInfo { t, err := getTypeInfo(userType(rt)) if err != nil { panic("getTypeInfo: " + err.Error()) } return t } // GobEncoder is the interface describing data that provides its own // representation for encoding values for transmission to a GobDecoder. // A type that implements GobEncoder and GobDecoder has complete // control over the representation of its data and may therefore // contain things such as private fields, channels, and functions, // which are not usually transmissible in gob streams. // // Note: Since gobs can be stored permanently, It is good design // to guarantee the encoding used by a GobEncoder is stable as the // software evolves. For instance, it might make sense for GobEncode // to include a version number in the encoding. type GobEncoder interface { // GobEncode returns a byte slice representing the encoding of the // receiver for transmission to a GobDecoder, usually of the same // concrete type. GobEncode() ([]byte, error) } // GobDecoder is the interface describing data that provides its own // routine for decoding transmitted values sent by a GobEncoder. type GobDecoder interface { // GobDecode overwrites the receiver, which must be a pointer, // with the value represented by the byte slice, which was written // by GobEncode, usually for the same concrete type. GobDecode([]byte) error } var ( registerLock sync.RWMutex nameToConcreteType = make(map[string]reflect.Type) concreteTypeToName = make(map[reflect.Type]string) ) // RegisterName is like Register but uses the provided name rather than the // type's default. func RegisterName(name string, value interface{}) { if name == "" { // reserved for nil panic("attempt to register empty name") } registerLock.Lock() defer registerLock.Unlock() ut := userType(reflect.TypeOf(value)) // Check for incompatible duplicates. The name must refer to the // same user type, and vice versa. if t, ok := nameToConcreteType[name]; ok && t != ut.user { panic(fmt.Sprintf("gob: registering duplicate types for %q: %s != %s", name, t, ut.user)) } if n, ok := concreteTypeToName[ut.base]; ok && n != name { panic(fmt.Sprintf("gob: registering duplicate names for %s: %q != %q", ut.user, n, name)) } // Store the name and type provided by the user.... nameToConcreteType[name] = reflect.TypeOf(value) // but the flattened type in the type table, since that's what decode needs. concreteTypeToName[ut.base] = name } // Register records a type, identified by a value for that type, under its // internal type name. That name will identify the concrete type of a value // sent or received as an interface variable. Only types that will be // transferred as implementations of interface values need to be registered. // Expecting to be used only during initialization, it panics if the mapping // between types and names is not a bijection. func Register(value interface{}) { // Default to printed representation for unnamed types rt := reflect.TypeOf(value) name := rt.String() // But for named types (or pointers to them), qualify with import path (but see inner comment). // Dereference one pointer looking for a named type. star := "" if rt.Name() == "" { if pt := rt; pt.Kind() == reflect.Ptr { star = "*" // NOTE: The following line should be rt = pt.Elem() to implement // what the comment above claims, but fixing it would break compatibility // with existing gobs. // // Given package p imported as "full/p" with these definitions: // package p // type T1 struct { ... } // this table shows the intended and actual strings used by gob to // name the types: // // Type Correct string Actual string // // T1 full/p.T1 full/p.T1 // *T1 *full/p.T1 *p.T1 // // The missing full path cannot be fixed without breaking existing gob decoders. rt = pt } } if rt.Name() != "" { if rt.PkgPath() == "" { name = star + rt.Name() } else { name = star + rt.PkgPath() + "." + rt.Name() } } RegisterName(name, value) } func registerBasics() { Register(int(0)) Register(int8(0)) Register(int16(0)) Register(int32(0)) Register(int64(0)) Register(uint(0)) Register(uint8(0)) Register(uint16(0)) Register(uint32(0)) Register(uint64(0)) Register(float32(0)) Register(float64(0)) Register(complex64(0i)) Register(complex128(0i)) Register(uintptr(0)) Register(false) Register("") Register([]byte(nil)) Register([]int(nil)) Register([]int8(nil)) Register([]int16(nil)) Register([]int32(nil)) Register([]int64(nil)) Register([]uint(nil)) Register([]uint8(nil)) Register([]uint16(nil)) Register([]uint32(nil)) Register([]uint64(nil)) Register([]float32(nil)) Register([]float64(nil)) Register([]complex64(nil)) Register([]complex128(nil)) Register([]uintptr(nil)) Register([]bool(nil)) Register([]string(nil)) } go/src/pkg/encoding/gob/type_test.go0100644000000000000000000001264512412656737017763 0ustar00rootroot00000000000000// Copyright 2009 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 gob import ( "bytes" "reflect" "testing" ) type typeT struct { id typeId str string } var basicTypes = []typeT{ {tBool, "bool"}, {tInt, "int"}, {tUint, "uint"}, {tFloat, "float"}, {tBytes, "bytes"}, {tString, "string"}, } func getTypeUnlocked(name string, rt reflect.Type) gobType { typeLock.Lock() defer typeLock.Unlock() t, err := getBaseType(name, rt) if err != nil { panic("getTypeUnlocked: " + err.Error()) } return t } // Sanity checks func TestBasic(t *testing.T) { for _, tt := range basicTypes { if tt.id.string() != tt.str { t.Errorf("checkType: expected %q got %s", tt.str, tt.id.string()) } if tt.id == 0 { t.Errorf("id for %q is zero", tt.str) } } } // Reregister some basic types to check registration is idempotent. func TestReregistration(t *testing.T) { newtyp := getTypeUnlocked("int", reflect.TypeOf(int(0))) if newtyp != tInt.gobType() { t.Errorf("reregistration of %s got new type", newtyp.string()) } newtyp = getTypeUnlocked("uint", reflect.TypeOf(uint(0))) if newtyp != tUint.gobType() { t.Errorf("reregistration of %s got new type", newtyp.string()) } newtyp = getTypeUnlocked("string", reflect.TypeOf("hello")) if newtyp != tString.gobType() { t.Errorf("reregistration of %s got new type", newtyp.string()) } } func TestArrayType(t *testing.T) { var a3 [3]int a3int := getTypeUnlocked("foo", reflect.TypeOf(a3)) newa3int := getTypeUnlocked("bar", reflect.TypeOf(a3)) if a3int != newa3int { t.Errorf("second registration of [3]int creates new type") } var a4 [4]int a4int := getTypeUnlocked("goo", reflect.TypeOf(a4)) if a3int == a4int { t.Errorf("registration of [3]int creates same type as [4]int") } var b3 [3]bool a3bool := getTypeUnlocked("", reflect.TypeOf(b3)) if a3int == a3bool { t.Errorf("registration of [3]bool creates same type as [3]int") } str := a3bool.string() expected := "[3]bool" if str != expected { t.Errorf("array printed as %q; expected %q", str, expected) } } func TestSliceType(t *testing.T) { var s []int sint := getTypeUnlocked("slice", reflect.TypeOf(s)) var news []int newsint := getTypeUnlocked("slice1", reflect.TypeOf(news)) if sint != newsint { t.Errorf("second registration of []int creates new type") } var b []bool sbool := getTypeUnlocked("", reflect.TypeOf(b)) if sbool == sint { t.Errorf("registration of []bool creates same type as []int") } str := sbool.string() expected := "[]bool" if str != expected { t.Errorf("slice printed as %q; expected %q", str, expected) } } func TestMapType(t *testing.T) { var m map[string]int mapStringInt := getTypeUnlocked("map", reflect.TypeOf(m)) var newm map[string]int newMapStringInt := getTypeUnlocked("map1", reflect.TypeOf(newm)) if mapStringInt != newMapStringInt { t.Errorf("second registration of map[string]int creates new type") } var b map[string]bool mapStringBool := getTypeUnlocked("", reflect.TypeOf(b)) if mapStringBool == mapStringInt { t.Errorf("registration of map[string]bool creates same type as map[string]int") } str := mapStringBool.string() expected := "map[string]bool" if str != expected { t.Errorf("map printed as %q; expected %q", str, expected) } } type Bar struct { X string } // This structure has pointers and refers to itself, making it a good test case. type Foo struct { A int B int32 // will become int C string D []byte E *float64 // will become float64 F ****float64 // will become float64 G *Bar H *Bar // should not interpolate the definition of Bar again I *Foo // will not explode } func TestStructType(t *testing.T) { sstruct := getTypeUnlocked("Foo", reflect.TypeOf(Foo{})) str := sstruct.string() // If we can print it correctly, we built it correctly. expected := "Foo = struct { A int; B int; C string; D bytes; E float; F float; G Bar = struct { X string; }; H Bar; I Foo; }" if str != expected { t.Errorf("struct printed as %q; expected %q", str, expected) } } // Should be OK to register the same type multiple times, as long as they're // at the same level of indirection. func TestRegistration(t *testing.T) { type T struct{ a int } Register(new(T)) Register(new(T)) } type N1 struct{} type N2 struct{} // See comment in type.go/Register. func TestRegistrationNaming(t *testing.T) { testCases := []struct { t interface{} name string }{ {&N1{}, "*gob.N1"}, {N2{}, "encoding/gob.N2"}, } for _, tc := range testCases { Register(tc.t) tct := reflect.TypeOf(tc.t) registerLock.RLock() ct := nameToConcreteType[tc.name] registerLock.RUnlock() if ct != tct { t.Errorf("nameToConcreteType[%q] = %v, want %v", tc.name, ct, tct) } // concreteTypeToName is keyed off the base type. if tct.Kind() == reflect.Ptr { tct = tct.Elem() } if n := concreteTypeToName[tct]; n != tc.name { t.Errorf("concreteTypeToName[%v] got %v, want %v", tct, n, tc.name) } } } func TestStressParallel(t *testing.T) { type T2 struct{ A int } c := make(chan bool) const N = 10 for i := 0; i < N; i++ { go func() { p := new(T2) Register(p) b := new(bytes.Buffer) enc := NewEncoder(b) err := enc.Encode(p) if err != nil { t.Error("encoder fail:", err) } dec := NewDecoder(b) err = dec.Decode(p) if err != nil { t.Error("decoder fail:", err) } c <- true }() } for i := 0; i < N; i++ { <-c } } go/src/pkg/encoding/hex0040755000000000000000000000000012412656737015345 5ustar00rootroot00000000000000go/src/pkg/encoding/hex/hex.go0100644000000000000000000001175112412656737016541 0ustar00rootroot00000000000000// Copyright 2009 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 hex implements hexadecimal encoding and decoding. package hex import ( "bytes" "errors" "fmt" "io" ) const hextable = "0123456789abcdef" // EncodedLen returns the length of an encoding of n source bytes. func EncodedLen(n int) int { return n * 2 } // Encode encodes src into EncodedLen(len(src)) // bytes of dst. As a convenience, it returns the number // of bytes written to dst, but this value is always EncodedLen(len(src)). // Encode implements hexadecimal encoding. func Encode(dst, src []byte) int { for i, v := range src { dst[i*2] = hextable[v>>4] dst[i*2+1] = hextable[v&0x0f] } return len(src) * 2 } // ErrLength results from decoding an odd length slice. var ErrLength = errors.New("encoding/hex: odd length hex string") // InvalidByteError values describe errors resulting from an invalid byte in a hex string. type InvalidByteError byte func (e InvalidByteError) Error() string { return fmt.Sprintf("encoding/hex: invalid byte: %#U", rune(e)) } func DecodedLen(x int) int { return x / 2 } // Decode decodes src into DecodedLen(len(src)) bytes, returning the actual // number of bytes written to dst. // // If Decode encounters invalid input, it returns an error describing the failure. func Decode(dst, src []byte) (int, error) { if len(src)%2 == 1 { return 0, ErrLength } for i := 0; i < len(src)/2; i++ { a, ok := fromHexChar(src[i*2]) if !ok { return 0, InvalidByteError(src[i*2]) } b, ok := fromHexChar(src[i*2+1]) if !ok { return 0, InvalidByteError(src[i*2+1]) } dst[i] = (a << 4) | b } return len(src) / 2, nil } // fromHexChar converts a hex character into its value and a success flag. func fromHexChar(c byte) (byte, bool) { switch { case '0' <= c && c <= '9': return c - '0', true case 'a' <= c && c <= 'f': return c - 'a' + 10, true case 'A' <= c && c <= 'F': return c - 'A' + 10, true } return 0, false } // EncodeToString returns the hexadecimal encoding of src. func EncodeToString(src []byte) string { dst := make([]byte, EncodedLen(len(src))) Encode(dst, src) return string(dst) } // DecodeString returns the bytes represented by the hexadecimal string s. func DecodeString(s string) ([]byte, error) { src := []byte(s) dst := make([]byte, DecodedLen(len(src))) _, err := Decode(dst, src) if err != nil { return nil, err } return dst, nil } // Dump returns a string that contains a hex dump of the given data. The format // of the hex dump matches the output of `hexdump -C` on the command line. func Dump(data []byte) string { var buf bytes.Buffer dumper := Dumper(&buf) dumper.Write(data) dumper.Close() return string(buf.Bytes()) } // Dumper returns a WriteCloser that writes a hex dump of all written data to // w. The format of the dump matches the output of `hexdump -C` on the command // line. func Dumper(w io.Writer) io.WriteCloser { return &dumper{w: w} } type dumper struct { w io.Writer rightChars [18]byte buf [14]byte used int // number of bytes in the current line n uint // number of bytes, total } func toChar(b byte) byte { if b < 32 || b > 126 { return '.' } return b } func (h *dumper) Write(data []byte) (n int, err error) { // Output lines look like: // 00000010 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d |./0123456789:;<=| // ^ offset ^ extra space ^ ASCII of line. for i := range data { if h.used == 0 { // At the beginning of a line we print the current // offset in hex. h.buf[0] = byte(h.n >> 24) h.buf[1] = byte(h.n >> 16) h.buf[2] = byte(h.n >> 8) h.buf[3] = byte(h.n) Encode(h.buf[4:], h.buf[:4]) h.buf[12] = ' ' h.buf[13] = ' ' _, err = h.w.Write(h.buf[4:]) if err != nil { return } } Encode(h.buf[:], data[i:i+1]) h.buf[2] = ' ' l := 3 if h.used == 7 { // There's an additional space after the 8th byte. h.buf[3] = ' ' l = 4 } else if h.used == 15 { // At the end of the line there's an extra space and // the bar for the right column. h.buf[3] = ' ' h.buf[4] = '|' l = 5 } _, err = h.w.Write(h.buf[:l]) if err != nil { return } n++ h.rightChars[h.used] = toChar(data[i]) h.used++ h.n++ if h.used == 16 { h.rightChars[16] = '|' h.rightChars[17] = '\n' _, err = h.w.Write(h.rightChars[:]) if err != nil { return } h.used = 0 } } return } func (h *dumper) Close() (err error) { // See the comments in Write() for the details of this format. if h.used == 0 { return } h.buf[0] = ' ' h.buf[1] = ' ' h.buf[2] = ' ' h.buf[3] = ' ' h.buf[4] = '|' nBytes := h.used for h.used < 16 { l := 3 if h.used == 7 { l = 4 } else if h.used == 15 { l = 5 } _, err = h.w.Write(h.buf[:l]) if err != nil { return } h.used++ } h.rightChars[nBytes] = '|' h.rightChars[nBytes+1] = '\n' _, err = h.w.Write(h.rightChars[:nBytes+2]) return } go/src/pkg/encoding/hex/hex_test.go0100644000000000000000000000751512412656737017603 0ustar00rootroot00000000000000// Copyright 2009 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 hex import ( "bytes" "testing" ) type encDecTest struct { enc string dec []byte } var encDecTests = []encDecTest{ {"", []byte{}}, {"0001020304050607", []byte{0, 1, 2, 3, 4, 5, 6, 7}}, {"08090a0b0c0d0e0f", []byte{8, 9, 10, 11, 12, 13, 14, 15}}, {"f0f1f2f3f4f5f6f7", []byte{0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7}}, {"f8f9fafbfcfdfeff", []byte{0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff}}, {"67", []byte{'g'}}, {"e3a1", []byte{0xe3, 0xa1}}, } func TestEncode(t *testing.T) { for i, test := range encDecTests { dst := make([]byte, EncodedLen(len(test.dec))) n := Encode(dst, test.dec) if n != len(dst) { t.Errorf("#%d: bad return value: got: %d want: %d", i, n, len(dst)) } if string(dst) != test.enc { t.Errorf("#%d: got: %#v want: %#v", i, dst, test.enc) } } } func TestDecode(t *testing.T) { // Case for decoding uppercase hex characters, since // Encode always uses lowercase. decTests := append(encDecTests, encDecTest{"F8F9FAFBFCFDFEFF", []byte{0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff}}) for i, test := range decTests { dst := make([]byte, DecodedLen(len(test.enc))) n, err := Decode(dst, []byte(test.enc)) if err != nil { t.Errorf("#%d: bad return value: got:%d want:%d", i, n, len(dst)) } else if !bytes.Equal(dst, test.dec) { t.Errorf("#%d: got: %#v want: %#v", i, dst, test.dec) } } } func TestEncodeToString(t *testing.T) { for i, test := range encDecTests { s := EncodeToString(test.dec) if s != test.enc { t.Errorf("#%d got:%s want:%s", i, s, test.enc) } } } func TestDecodeString(t *testing.T) { for i, test := range encDecTests { dst, err := DecodeString(test.enc) if err != nil { t.Errorf("#%d: unexpected err value: %s", i, err) continue } if !bytes.Equal(dst, test.dec) { t.Errorf("#%d: got: %#v want: #%v", i, dst, test.dec) } } } type errTest struct { in string err string } var errTests = []errTest{ {"0", "encoding/hex: odd length hex string"}, {"0g", "encoding/hex: invalid byte: U+0067 'g'"}, {"00gg", "encoding/hex: invalid byte: U+0067 'g'"}, {"0\x01", "encoding/hex: invalid byte: U+0001"}, } func TestInvalidErr(t *testing.T) { for i, test := range errTests { dst := make([]byte, DecodedLen(len(test.in))) _, err := Decode(dst, []byte(test.in)) if err == nil { t.Errorf("#%d: expected error; got none", i) } else if err.Error() != test.err { t.Errorf("#%d: got: %v want: %v", i, err, test.err) } } } func TestInvalidStringErr(t *testing.T) { for i, test := range errTests { _, err := DecodeString(test.in) if err == nil { t.Errorf("#%d: expected error; got none", i) } else if err.Error() != test.err { t.Errorf("#%d: got: %v want: %v", i, err, test.err) } } } func TestDumper(t *testing.T) { var in [40]byte for i := range in { in[i] = byte(i + 30) } for stride := 1; stride < len(in); stride++ { var out bytes.Buffer dumper := Dumper(&out) done := 0 for done < len(in) { todo := done + stride if todo > len(in) { todo = len(in) } dumper.Write(in[done:todo]) done = todo } dumper.Close() if !bytes.Equal(out.Bytes(), expectedHexDump) { t.Errorf("stride: %d failed. got:\n%s\nwant:\n%s", stride, out.Bytes(), expectedHexDump) } } } func TestDump(t *testing.T) { var in [40]byte for i := range in { in[i] = byte(i + 30) } out := []byte(Dump(in[:])) if !bytes.Equal(out, expectedHexDump) { t.Errorf("got:\n%s\nwant:\n%s", out, expectedHexDump) } } var expectedHexDump = []byte(`00000000 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d |.. !"#$%&'()*+,-| 00000010 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d |./0123456789:;<=| 00000020 3e 3f 40 41 42 43 44 45 |>?@ABCDE| `) go/src/pkg/encoding/json0040755000000000000000000000000012412656737015532 5ustar00rootroot00000000000000go/src/pkg/encoding/json/bench_test.go0100644000000000000000000000747012412656737020263 0ustar00rootroot00000000000000// Copyright 2011 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. // Large data benchmark. // The JSON data is a summary of agl's changes in the // go, webkit, and chromium open source projects. // We benchmark converting between the JSON form // and in-memory data structures. package json import ( "bytes" "compress/gzip" "io/ioutil" "os" "testing" ) type codeResponse struct { Tree *codeNode `json:"tree"` Username string `json:"username"` } type codeNode struct { Name string `json:"name"` Kids []*codeNode `json:"kids"` CLWeight float64 `json:"cl_weight"` Touches int `json:"touches"` MinT int64 `json:"min_t"` MaxT int64 `json:"max_t"` MeanT int64 `json:"mean_t"` } var codeJSON []byte var codeStruct codeResponse func codeInit() { f, err := os.Open("testdata/code.json.gz") if err != nil { panic(err) } defer f.Close() gz, err := gzip.NewReader(f) if err != nil { panic(err) } data, err := ioutil.ReadAll(gz) if err != nil { panic(err) } codeJSON = data if err := Unmarshal(codeJSON, &codeStruct); err != nil { panic("unmarshal code.json: " + err.Error()) } if data, err = Marshal(&codeStruct); err != nil { panic("marshal code.json: " + err.Error()) } if !bytes.Equal(data, codeJSON) { println("different lengths", len(data), len(codeJSON)) for i := 0; i < len(data) && i < len(codeJSON); i++ { if data[i] != codeJSON[i] { println("re-marshal: changed at byte", i) println("orig: ", string(codeJSON[i-10:i+10])) println("new: ", string(data[i-10:i+10])) break } } panic("re-marshal code.json: different result") } } func BenchmarkCodeEncoder(b *testing.B) { if codeJSON == nil { b.StopTimer() codeInit() b.StartTimer() } enc := NewEncoder(ioutil.Discard) for i := 0; i < b.N; i++ { if err := enc.Encode(&codeStruct); err != nil { b.Fatal("Encode:", err) } } b.SetBytes(int64(len(codeJSON))) } func BenchmarkCodeMarshal(b *testing.B) { if codeJSON == nil { b.StopTimer() codeInit() b.StartTimer() } for i := 0; i < b.N; i++ { if _, err := Marshal(&codeStruct); err != nil { b.Fatal("Marshal:", err) } } b.SetBytes(int64(len(codeJSON))) } func BenchmarkCodeDecoder(b *testing.B) { if codeJSON == nil { b.StopTimer() codeInit() b.StartTimer() } var buf bytes.Buffer dec := NewDecoder(&buf) var r codeResponse for i := 0; i < b.N; i++ { buf.Write(codeJSON) // hide EOF buf.WriteByte('\n') buf.WriteByte('\n') buf.WriteByte('\n') if err := dec.Decode(&r); err != nil { b.Fatal("Decode:", err) } } b.SetBytes(int64(len(codeJSON))) } func BenchmarkCodeUnmarshal(b *testing.B) { if codeJSON == nil { b.StopTimer() codeInit() b.StartTimer() } for i := 0; i < b.N; i++ { var r codeResponse if err := Unmarshal(codeJSON, &r); err != nil { b.Fatal("Unmmarshal:", err) } } b.SetBytes(int64(len(codeJSON))) } func BenchmarkCodeUnmarshalReuse(b *testing.B) { if codeJSON == nil { b.StopTimer() codeInit() b.StartTimer() } var r codeResponse for i := 0; i < b.N; i++ { if err := Unmarshal(codeJSON, &r); err != nil { b.Fatal("Unmmarshal:", err) } } } func BenchmarkUnmarshalString(b *testing.B) { data := []byte(`"hello, world"`) var s string for i := 0; i < b.N; i++ { if err := Unmarshal(data, &s); err != nil { b.Fatal("Unmarshal:", err) } } } func BenchmarkUnmarshalFloat64(b *testing.B) { var f float64 data := []byte(`3.14`) for i := 0; i < b.N; i++ { if err := Unmarshal(data, &f); err != nil { b.Fatal("Unmarshal:", err) } } } func BenchmarkUnmarshalInt64(b *testing.B) { var x int64 data := []byte(`3`) for i := 0; i < b.N; i++ { if err := Unmarshal(data, &x); err != nil { b.Fatal("Unmarshal:", err) } } } go/src/pkg/encoding/json/decode.go0100644000000000000000000006221112412656737017362 0ustar00rootroot00000000000000// 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. // Represents JSON data structure using native Go types: booleans, floats, // strings, arrays, and maps. package json import ( "bytes" "encoding" "encoding/base64" "errors" "fmt" "reflect" "runtime" "strconv" "unicode" "unicode/utf16" "unicode/utf8" ) // Unmarshal parses the JSON-encoded data and stores the result // in the value pointed to by v. // // Unmarshal uses the inverse of the encodings that // Marshal uses, allocating maps, slices, and pointers as necessary, // with the following additional rules: // // To unmarshal JSON into a pointer, Unmarshal first handles the case of // the JSON being the JSON literal null. In that case, Unmarshal sets // the pointer to nil. Otherwise, Unmarshal unmarshals the JSON into // the value pointed at by the pointer. If the pointer is nil, Unmarshal // allocates a new value for it to point to. // // To unmarshal JSON into a struct, Unmarshal matches incoming object // keys to the keys used by Marshal (either the struct field name or its tag), // preferring an exact match but also accepting a case-insensitive match. // // To unmarshal JSON into an interface value, // Unmarshal stores one of these in the interface value: // // bool, for JSON booleans // float64, for JSON numbers // string, for JSON strings // []interface{}, for JSON arrays // map[string]interface{}, for JSON objects // nil for JSON null // // If a JSON value is not appropriate for a given target type, // or if a JSON number overflows the target type, Unmarshal // skips that field and completes the unmarshalling as best it can. // If no more serious errors are encountered, Unmarshal returns // an UnmarshalTypeError describing the earliest such error. // // The JSON null value unmarshals into an interface, map, pointer, or slice // by setting that Go value to nil. Because null is often used in JSON to mean // ``not present,'' unmarshaling a JSON null into any other Go type has no effect // on the value and produces no error. // // When unmarshaling quoted strings, invalid UTF-8 or // invalid UTF-16 surrogate pairs are not treated as an error. // Instead, they are replaced by the Unicode replacement // character U+FFFD. // func Unmarshal(data []byte, v interface{}) error { // Check for well-formedness. // Avoids filling out half a data structure // before discovering a JSON syntax error. var d decodeState err := checkValid(data, &d.scan) if err != nil { return err } d.init(data) return d.unmarshal(v) } // Unmarshaler is the interface implemented by objects // that can unmarshal a JSON description of themselves. // The input can be assumed to be a valid encoding of // a JSON value. UnmarshalJSON must copy the JSON data // if it wishes to retain the data after returning. type Unmarshaler interface { UnmarshalJSON([]byte) error } // An UnmarshalTypeError describes a JSON value that was // not appropriate for a value of a specific Go type. type UnmarshalTypeError struct { Value string // description of JSON value - "bool", "array", "number -5" Type reflect.Type // type of Go value it could not be assigned to } func (e *UnmarshalTypeError) Error() string { return "json: cannot unmarshal " + e.Value + " into Go value of type " + e.Type.String() } // An UnmarshalFieldError describes a JSON object key that // led to an unexported (and therefore unwritable) struct field. // (No longer used; kept for compatibility.) type UnmarshalFieldError struct { Key string Type reflect.Type Field reflect.StructField } func (e *UnmarshalFieldError) Error() string { return "json: cannot unmarshal object key " + strconv.Quote(e.Key) + " into unexported field " + e.Field.Name + " of type " + e.Type.String() } // An InvalidUnmarshalError describes an invalid argument passed to Unmarshal. // (The argument to Unmarshal must be a non-nil pointer.) type InvalidUnmarshalError struct { Type reflect.Type } func (e *InvalidUnmarshalError) Error() string { if e.Type == nil { return "json: Unmarshal(nil)" } if e.Type.Kind() != reflect.Ptr { return "json: Unmarshal(non-pointer " + e.Type.String() + ")" } return "json: Unmarshal(nil " + e.Type.String() + ")" } func (d *decodeState) unmarshal(v interface{}) (err error) { defer func() { if r := recover(); r != nil { if _, ok := r.(runtime.Error); ok { panic(r) } err = r.(error) } }() rv := reflect.ValueOf(v) if rv.Kind() != reflect.Ptr || rv.IsNil() { return &InvalidUnmarshalError{reflect.TypeOf(v)} } d.scan.reset() // We decode rv not rv.Elem because the Unmarshaler interface // test must be applied at the top level of the value. d.value(rv) return d.savedError } // A Number represents a JSON number literal. type Number string // String returns the literal text of the number. func (n Number) String() string { return string(n) } // Float64 returns the number as a float64. func (n Number) Float64() (float64, error) { return strconv.ParseFloat(string(n), 64) } // Int64 returns the number as an int64. func (n Number) Int64() (int64, error) { return strconv.ParseInt(string(n), 10, 64) } // decodeState represents the state while decoding a JSON value. type decodeState struct { data []byte off int // read offset in data scan scanner nextscan scanner // for calls to nextValue savedError error tempstr string // scratch space to avoid some allocations useNumber bool } // errPhase is used for errors that should not happen unless // there is a bug in the JSON decoder or something is editing // the data slice while the decoder executes. var errPhase = errors.New("JSON decoder out of sync - data changing underfoot?") func (d *decodeState) init(data []byte) *decodeState { d.data = data d.off = 0 d.savedError = nil return d } // error aborts the decoding by panicking with err. func (d *decodeState) error(err error) { panic(err) } // saveError saves the first err it is called with, // for reporting at the end of the unmarshal. func (d *decodeState) saveError(err error) { if d.savedError == nil { d.savedError = err } } // next cuts off and returns the next full JSON value in d.data[d.off:]. // The next value is known to be an object or array, not a literal. func (d *decodeState) next() []byte { c := d.data[d.off] item, rest, err := nextValue(d.data[d.off:], &d.nextscan) if err != nil { d.error(err) } d.off = len(d.data) - len(rest) // Our scanner has seen the opening brace/bracket // and thinks we're still in the middle of the object. // invent a closing brace/bracket to get it out. if c == '{' { d.scan.step(&d.scan, '}') } else { d.scan.step(&d.scan, ']') } return item } // scanWhile processes bytes in d.data[d.off:] until it // receives a scan code not equal to op. // It updates d.off and returns the new scan code. func (d *decodeState) scanWhile(op int) int { var newOp int for { if d.off >= len(d.data) { newOp = d.scan.eof() d.off = len(d.data) + 1 // mark processed EOF with len+1 } else { c := int(d.data[d.off]) d.off++ newOp = d.scan.step(&d.scan, c) } if newOp != op { break } } return newOp } // value decodes a JSON value from d.data[d.off:] into the value. // it updates d.off to point past the decoded value. func (d *decodeState) value(v reflect.Value) { if !v.IsValid() { _, rest, err := nextValue(d.data[d.off:], &d.nextscan) if err != nil { d.error(err) } d.off = len(d.data) - len(rest) // d.scan thinks we're still at the beginning of the item. // Feed in an empty string - the shortest, simplest value - // so that it knows we got to the end of the value. if d.scan.redo { // rewind. d.scan.redo = false d.scan.step = stateBeginValue } d.scan.step(&d.scan, '"') d.scan.step(&d.scan, '"') n := len(d.scan.parseState) if n > 0 && d.scan.parseState[n-1] == parseObjectKey { // d.scan thinks we just read an object key; finish the object d.scan.step(&d.scan, ':') d.scan.step(&d.scan, '"') d.scan.step(&d.scan, '"') d.scan.step(&d.scan, '}') } return } switch op := d.scanWhile(scanSkipSpace); op { default: d.error(errPhase) case scanBeginArray: d.array(v) case scanBeginObject: d.object(v) case scanBeginLiteral: d.literal(v) } } // indirect walks down v allocating pointers as needed, // until it gets to a non-pointer. // if it encounters an Unmarshaler, indirect stops and returns that. // if decodingNull is true, indirect stops at the last pointer so it can be set to nil. func (d *decodeState) indirect(v reflect.Value, decodingNull bool) (Unmarshaler, encoding.TextUnmarshaler, reflect.Value) { // If v is a named type and is addressable, // start with its address, so that if the type has pointer methods, // we find them. if v.Kind() != reflect.Ptr && v.Type().Name() != "" && v.CanAddr() { v = v.Addr() } for { // Load value from interface, but only if the result will be // usefully addressable. if v.Kind() == reflect.Interface && !v.IsNil() { e := v.Elem() if e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) { v = e continue } } if v.Kind() != reflect.Ptr { break } if v.Elem().Kind() != reflect.Ptr && decodingNull && v.CanSet() { break } if v.IsNil() { v.Set(reflect.New(v.Type().Elem())) } if v.Type().NumMethod() > 0 { if u, ok := v.Interface().(Unmarshaler); ok { return u, nil, reflect.Value{} } if u, ok := v.Interface().(encoding.TextUnmarshaler); ok { return nil, u, reflect.Value{} } } v = v.Elem() } return nil, nil, v } // array consumes an array from d.data[d.off-1:], decoding into the value v. // the first byte of the array ('[') has been read already. func (d *decodeState) array(v reflect.Value) { // Check for unmarshaler. u, ut, pv := d.indirect(v, false) if u != nil { d.off-- err := u.UnmarshalJSON(d.next()) if err != nil { d.error(err) } return } if ut != nil { d.saveError(&UnmarshalTypeError{"array", v.Type()}) d.off-- d.next() return } v = pv // Check type of target. switch v.Kind() { case reflect.Interface: if v.NumMethod() == 0 { // Decoding into nil interface? Switch to non-reflect code. v.Set(reflect.ValueOf(d.arrayInterface())) return } // Otherwise it's invalid. fallthrough default: d.saveError(&UnmarshalTypeError{"array", v.Type()}) d.off-- d.next() return case reflect.Array: case reflect.Slice: break } i := 0 for { // Look ahead for ] - can only happen on first iteration. op := d.scanWhile(scanSkipSpace) if op == scanEndArray { break } // Back up so d.value can have the byte we just read. d.off-- d.scan.undo(op) // Get element of array, growing if necessary. if v.Kind() == reflect.Slice { // Grow slice if necessary if i >= v.Cap() { newcap := v.Cap() + v.Cap()/2 if newcap < 4 { newcap = 4 } newv := reflect.MakeSlice(v.Type(), v.Len(), newcap) reflect.Copy(newv, v) v.Set(newv) } if i >= v.Len() { v.SetLen(i + 1) } } if i < v.Len() { // Decode into element. d.value(v.Index(i)) } else { // Ran out of fixed array: skip. d.value(reflect.Value{}) } i++ // Next token must be , or ]. op = d.scanWhile(scanSkipSpace) if op == scanEndArray { break } if op != scanArrayValue { d.error(errPhase) } } if i < v.Len() { if v.Kind() == reflect.Array { // Array. Zero the rest. z := reflect.Zero(v.Type().Elem()) for ; i < v.Len(); i++ { v.Index(i).Set(z) } } else { v.SetLen(i) } } if i == 0 && v.Kind() == reflect.Slice { v.Set(reflect.MakeSlice(v.Type(), 0, 0)) } } // object consumes an object from d.data[d.off-1:], decoding into the value v. // the first byte of the object ('{') has been read already. func (d *decodeState) object(v reflect.Value) { // Check for unmarshaler. u, ut, pv := d.indirect(v, false) if u != nil { d.off-- err := u.UnmarshalJSON(d.next()) if err != nil { d.error(err) } return } if ut != nil { d.saveError(&UnmarshalTypeError{"object", v.Type()}) d.off-- d.next() // skip over { } in input return } v = pv // Decoding into nil interface? Switch to non-reflect code. if v.Kind() == reflect.Interface && v.NumMethod() == 0 { v.Set(reflect.ValueOf(d.objectInterface())) return } // Check type of target: struct or map[string]T switch v.Kind() { case reflect.Map: // map must have string kind t := v.Type() if t.Key().Kind() != reflect.String { d.saveError(&UnmarshalTypeError{"object", v.Type()}) break } if v.IsNil() { v.Set(reflect.MakeMap(t)) } case reflect.Struct: default: d.saveError(&UnmarshalTypeError{"object", v.Type()}) d.off-- d.next() // skip over { } in input return } var mapElem reflect.Value for { // Read opening " of string key or closing }. op := d.scanWhile(scanSkipSpace) if op == scanEndObject { // closing } - can only happen on first iteration. break } if op != scanBeginLiteral { d.error(errPhase) } // Read key. start := d.off - 1 op = d.scanWhile(scanContinue) item := d.data[start : d.off-1] key, ok := unquoteBytes(item) if !ok { d.error(errPhase) } // Figure out field corresponding to key. var subv reflect.Value destring := false // whether the value is wrapped in a string to be decoded first if v.Kind() == reflect.Map { elemType := v.Type().Elem() if !mapElem.IsValid() { mapElem = reflect.New(elemType).Elem() } else { mapElem.Set(reflect.Zero(elemType)) } subv = mapElem } else { var f *field fields := cachedTypeFields(v.Type()) for i := range fields { ff := &fields[i] if bytes.Equal(ff.nameBytes, key) { f = ff break } if f == nil && ff.equalFold(ff.nameBytes, key) { f = ff } } if f != nil { subv = v destring = f.quoted for _, i := range f.index { if subv.Kind() == reflect.Ptr { if subv.IsNil() { subv.Set(reflect.New(subv.Type().Elem())) } subv = subv.Elem() } subv = subv.Field(i) } } } // Read : before value. if op == scanSkipSpace { op = d.scanWhile(scanSkipSpace) } if op != scanObjectKey { d.error(errPhase) } // Read value. if destring { d.value(reflect.ValueOf(&d.tempstr)) d.literalStore([]byte(d.tempstr), subv, true) d.tempstr = "" // Zero scratch space for successive values. } else { d.value(subv) } // Write value back to map; // if using struct, subv points into struct already. if v.Kind() == reflect.Map { kv := reflect.ValueOf(key).Convert(v.Type().Key()) v.SetMapIndex(kv, subv) } // Next token must be , or }. op = d.scanWhile(scanSkipSpace) if op == scanEndObject { break } if op != scanObjectValue { d.error(errPhase) } } } // literal consumes a literal from d.data[d.off-1:], decoding into the value v. // The first byte of the literal has been read already // (that's how the caller knows it's a literal). func (d *decodeState) literal(v reflect.Value) { // All bytes inside literal return scanContinue op code. start := d.off - 1 op := d.scanWhile(scanContinue) // Scan read one byte too far; back up. d.off-- d.scan.undo(op) d.literalStore(d.data[start:d.off], v, false) } // convertNumber converts the number literal s to a float64 or a Number // depending on the setting of d.useNumber. func (d *decodeState) convertNumber(s string) (interface{}, error) { if d.useNumber { return Number(s), nil } f, err := strconv.ParseFloat(s, 64) if err != nil { return nil, &UnmarshalTypeError{"number " + s, reflect.TypeOf(0.0)} } return f, nil } var numberType = reflect.TypeOf(Number("")) // literalStore decodes a literal stored in item into v. // // fromQuoted indicates whether this literal came from unwrapping a // string from the ",string" struct tag option. this is used only to // produce more helpful error messages. func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool) { // Check for unmarshaler. if len(item) == 0 { //Empty string given d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) return } wantptr := item[0] == 'n' // null u, ut, pv := d.indirect(v, wantptr) if u != nil { err := u.UnmarshalJSON(item) if err != nil { d.error(err) } return } if ut != nil { if item[0] != '"' { if fromQuoted { d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) } else { d.saveError(&UnmarshalTypeError{"string", v.Type()}) } } s, ok := unquoteBytes(item) if !ok { if fromQuoted { d.error(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) } else { d.error(errPhase) } } err := ut.UnmarshalText(s) if err != nil { d.error(err) } return } v = pv switch c := item[0]; c { case 'n': // null switch v.Kind() { case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: v.Set(reflect.Zero(v.Type())) // otherwise, ignore null for primitives/string } case 't', 'f': // true, false value := c == 't' switch v.Kind() { default: if fromQuoted { d.saveError(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) } else { d.saveError(&UnmarshalTypeError{"bool", v.Type()}) } case reflect.Bool: v.SetBool(value) case reflect.Interface: if v.NumMethod() == 0 { v.Set(reflect.ValueOf(value)) } else { d.saveError(&UnmarshalTypeError{"bool", v.Type()}) } } case '"': // string s, ok := unquoteBytes(item) if !ok { if fromQuoted { d.error(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) } else { d.error(errPhase) } } switch v.Kind() { default: d.saveError(&UnmarshalTypeError{"string", v.Type()}) case reflect.Slice: if v.Type() != byteSliceType { d.saveError(&UnmarshalTypeError{"string", v.Type()}) break } b := make([]byte, base64.StdEncoding.DecodedLen(len(s))) n, err := base64.StdEncoding.Decode(b, s) if err != nil { d.saveError(err) break } v.Set(reflect.ValueOf(b[0:n])) case reflect.String: v.SetString(string(s)) case reflect.Interface: if v.NumMethod() == 0 { v.Set(reflect.ValueOf(string(s))) } else { d.saveError(&UnmarshalTypeError{"string", v.Type()}) } } default: // number if c != '-' && (c < '0' || c > '9') { if fromQuoted { d.error(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) } else { d.error(errPhase) } } s := string(item) switch v.Kind() { default: if v.Kind() == reflect.String && v.Type() == numberType { v.SetString(s) break } if fromQuoted { d.error(fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())) } else { d.error(&UnmarshalTypeError{"number", v.Type()}) } case reflect.Interface: n, err := d.convertNumber(s) if err != nil { d.saveError(err) break } if v.NumMethod() != 0 { d.saveError(&UnmarshalTypeError{"number", v.Type()}) break } v.Set(reflect.ValueOf(n)) case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: n, err := strconv.ParseInt(s, 10, 64) if err != nil || v.OverflowInt(n) { d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) break } v.SetInt(n) case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: n, err := strconv.ParseUint(s, 10, 64) if err != nil || v.OverflowUint(n) { d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) break } v.SetUint(n) case reflect.Float32, reflect.Float64: n, err := strconv.ParseFloat(s, v.Type().Bits()) if err != nil || v.OverflowFloat(n) { d.saveError(&UnmarshalTypeError{"number " + s, v.Type()}) break } v.SetFloat(n) } } } // The xxxInterface routines build up a value to be stored // in an empty interface. They are not strictly necessary, // but they avoid the weight of reflection in this common case. // valueInterface is like value but returns interface{} func (d *decodeState) valueInterface() interface{} { switch d.scanWhile(scanSkipSpace) { default: d.error(errPhase) panic("unreachable") case scanBeginArray: return d.arrayInterface() case scanBeginObject: return d.objectInterface() case scanBeginLiteral: return d.literalInterface() } } // arrayInterface is like array but returns []interface{}. func (d *decodeState) arrayInterface() []interface{} { var v = make([]interface{}, 0) for { // Look ahead for ] - can only happen on first iteration. op := d.scanWhile(scanSkipSpace) if op == scanEndArray { break } // Back up so d.value can have the byte we just read. d.off-- d.scan.undo(op) v = append(v, d.valueInterface()) // Next token must be , or ]. op = d.scanWhile(scanSkipSpace) if op == scanEndArray { break } if op != scanArrayValue { d.error(errPhase) } } return v } // objectInterface is like object but returns map[string]interface{}. func (d *decodeState) objectInterface() map[string]interface{} { m := make(map[string]interface{}) for { // Read opening " of string key or closing }. op := d.scanWhile(scanSkipSpace) if op == scanEndObject { // closing } - can only happen on first iteration. break } if op != scanBeginLiteral { d.error(errPhase) } // Read string key. start := d.off - 1 op = d.scanWhile(scanContinue) item := d.data[start : d.off-1] key, ok := unquote(item) if !ok { d.error(errPhase) } // Read : before value. if op == scanSkipSpace { op = d.scanWhile(scanSkipSpace) } if op != scanObjectKey { d.error(errPhase) } // Read value. m[key] = d.valueInterface() // Next token must be , or }. op = d.scanWhile(scanSkipSpace) if op == scanEndObject { break } if op != scanObjectValue { d.error(errPhase) } } return m } // literalInterface is like literal but returns an interface value. func (d *decodeState) literalInterface() interface{} { // All bytes inside literal return scanContinue op code. start := d.off - 1 op := d.scanWhile(scanContinue) // Scan read one byte too far; back up. d.off-- d.scan.undo(op) item := d.data[start:d.off] switch c := item[0]; c { case 'n': // null return nil case 't', 'f': // true, false return c == 't' case '"': // string s, ok := unquote(item) if !ok { d.error(errPhase) } return s default: // number if c != '-' && (c < '0' || c > '9') { d.error(errPhase) } n, err := d.convertNumber(string(item)) if err != nil { d.saveError(err) } return n } } // getu4 decodes \uXXXX from the beginning of s, returning the hex value, // or it returns -1. func getu4(s []byte) rune { if len(s) < 6 || s[0] != '\\' || s[1] != 'u' { return -1 } r, err := strconv.ParseUint(string(s[2:6]), 16, 64) if err != nil { return -1 } return rune(r) } // unquote converts a quoted JSON string literal s into an actual string t. // The rules are different than for Go, so cannot use strconv.Unquote. func unquote(s []byte) (t string, ok bool) { s, ok = unquoteBytes(s) t = string(s) return } func unquoteBytes(s []byte) (t []byte, ok bool) { if len(s) < 2 || s[0] != '"' || s[len(s)-1] != '"' { return } s = s[1 : len(s)-1] // Check for unusual characters. If there are none, // then no unquoting is needed, so return a slice of the // original bytes. r := 0 for r < len(s) { c := s[r] if c == '\\' || c == '"' || c < ' ' { break } if c < utf8.RuneSelf { r++ continue } rr, size := utf8.DecodeRune(s[r:]) if rr == utf8.RuneError && size == 1 { break } r += size } if r == len(s) { return s, true } b := make([]byte, len(s)+2*utf8.UTFMax) w := copy(b, s[0:r]) for r < len(s) { // Out of room? Can only happen if s is full of // malformed UTF-8 and we're replacing each // byte with RuneError. if w >= len(b)-2*utf8.UTFMax { nb := make([]byte, (len(b)+utf8.UTFMax)*2) copy(nb, b[0:w]) b = nb } switch c := s[r]; { case c == '\\': r++ if r >= len(s) { return } switch s[r] { default: return case '"', '\\', '/', '\'': b[w] = s[r] r++ w++ case 'b': b[w] = '\b' r++ w++ case 'f': b[w] = '\f' r++ w++ case 'n': b[w] = '\n' r++ w++ case 'r': b[w] = '\r' r++ w++ case 't': b[w] = '\t' r++ w++ case 'u': r-- rr := getu4(s[r:]) if rr < 0 { return } r += 6 if utf16.IsSurrogate(rr) { rr1 := getu4(s[r:]) if dec := utf16.DecodeRune(rr, rr1); dec != unicode.ReplacementChar { // A valid pair; consume. r += 6 w += utf8.EncodeRune(b[w:], dec) break } // Invalid surrogate; fall back to replacement rune. rr = unicode.ReplacementChar } w += utf8.EncodeRune(b[w:], rr) } // Quote, control characters are invalid. case c == '"', c < ' ': return // ASCII case c < utf8.RuneSelf: b[w] = c r++ w++ // Coerce to well-formed UTF-8. default: rr, size := utf8.DecodeRune(s[r:]) r += size w += utf8.EncodeRune(b[w:], rr) } } return b[0:w], true } go/src/pkg/encoding/json/decode_test.go0100644000000000000000000007420512412656737020427 0ustar00rootroot00000000000000// 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. package json import ( "bytes" "encoding" "fmt" "image" "reflect" "strings" "testing" "time" ) type T struct { X string Y int Z int `json:"-"` } type U struct { Alphabet string `json:"alpha"` } type V struct { F1 interface{} F2 int32 F3 Number } // ifaceNumAsFloat64/ifaceNumAsNumber are used to test unmarshaling with and // without UseNumber var ifaceNumAsFloat64 = map[string]interface{}{ "k1": float64(1), "k2": "s", "k3": []interface{}{float64(1), float64(2.0), float64(3e-3)}, "k4": map[string]interface{}{"kk1": "s", "kk2": float64(2)}, } var ifaceNumAsNumber = map[string]interface{}{ "k1": Number("1"), "k2": "s", "k3": []interface{}{Number("1"), Number("2.0"), Number("3e-3")}, "k4": map[string]interface{}{"kk1": "s", "kk2": Number("2")}, } type tx struct { x int } // A type that can unmarshal itself. type unmarshaler struct { T bool } func (u *unmarshaler) UnmarshalJSON(b []byte) error { *u = unmarshaler{true} // All we need to see that UnmarshalJSON is called. return nil } type ustruct struct { M unmarshaler } type unmarshalerText struct { T bool } // needed for re-marshaling tests func (u *unmarshalerText) MarshalText() ([]byte, error) { return []byte(""), nil } func (u *unmarshalerText) UnmarshalText(b []byte) error { *u = unmarshalerText{true} // All we need to see that UnmarshalText is called. return nil } var _ encoding.TextUnmarshaler = (*unmarshalerText)(nil) type ustructText struct { M unmarshalerText } var ( um0, um1 unmarshaler // target2 of unmarshaling ump = &um1 umtrue = unmarshaler{true} umslice = []unmarshaler{{true}} umslicep = new([]unmarshaler) umstruct = ustruct{unmarshaler{true}} um0T, um1T unmarshalerText // target2 of unmarshaling umpT = &um1T umtrueT = unmarshalerText{true} umsliceT = []unmarshalerText{{true}} umslicepT = new([]unmarshalerText) umstructT = ustructText{unmarshalerText{true}} ) // Test data structures for anonymous fields. type Point struct { Z int } type Top struct { Level0 int Embed0 *Embed0a *Embed0b `json:"e,omitempty"` // treated as named Embed0c `json:"-"` // ignored Loop Embed0p // has Point with X, Y, used Embed0q // has Point with Z, used } type Embed0 struct { Level1a int // overridden by Embed0a's Level1a with json tag Level1b int // used because Embed0a's Level1b is renamed Level1c int // used because Embed0a's Level1c is ignored Level1d int // annihilated by Embed0a's Level1d Level1e int `json:"x"` // annihilated by Embed0a.Level1e } type Embed0a struct { Level1a int `json:"Level1a,omitempty"` Level1b int `json:"LEVEL1B,omitempty"` Level1c int `json:"-"` Level1d int // annihilated by Embed0's Level1d Level1f int `json:"x"` // annihilated by Embed0's Level1e } type Embed0b Embed0 type Embed0c Embed0 type Embed0p struct { image.Point } type Embed0q struct { Point } type Loop struct { Loop1 int `json:",omitempty"` Loop2 int `json:",omitempty"` *Loop } // From reflect test: // The X in S6 and S7 annihilate, but they also block the X in S8.S9. type S5 struct { S6 S7 S8 } type S6 struct { X int } type S7 S6 type S8 struct { S9 } type S9 struct { X int Y int } // From reflect test: // The X in S11.S6 and S12.S6 annihilate, but they also block the X in S13.S8.S9. type S10 struct { S11 S12 S13 } type S11 struct { S6 } type S12 struct { S6 } type S13 struct { S8 } type unmarshalTest struct { in string ptr interface{} out interface{} err error useNumber bool } type Ambig struct { // Given "hello", the first match should win. First int `json:"HELLO"` Second int `json:"Hello"` } type XYZ struct { X interface{} Y interface{} Z interface{} } var unmarshalTests = []unmarshalTest{ // basic types {in: `true`, ptr: new(bool), out: true}, {in: `1`, ptr: new(int), out: 1}, {in: `1.2`, ptr: new(float64), out: 1.2}, {in: `-5`, ptr: new(int16), out: int16(-5)}, {in: `2`, ptr: new(Number), out: Number("2"), useNumber: true}, {in: `2`, ptr: new(Number), out: Number("2")}, {in: `2`, ptr: new(interface{}), out: float64(2.0)}, {in: `2`, ptr: new(interface{}), out: Number("2"), useNumber: true}, {in: `"a\u1234"`, ptr: new(string), out: "a\u1234"}, {in: `"http:\/\/"`, ptr: new(string), out: "http://"}, {in: `"g-clef: \uD834\uDD1E"`, ptr: new(string), out: "g-clef: \U0001D11E"}, {in: `"invalid: \uD834x\uDD1E"`, ptr: new(string), out: "invalid: \uFFFDx\uFFFD"}, {in: "null", ptr: new(interface{}), out: nil}, {in: `{"X": [1,2,3], "Y": 4}`, ptr: new(T), out: T{Y: 4}, err: &UnmarshalTypeError{"array", reflect.TypeOf("")}}, {in: `{"x": 1}`, ptr: new(tx), out: tx{}}, {in: `{"F1":1,"F2":2,"F3":3}`, ptr: new(V), out: V{F1: float64(1), F2: int32(2), F3: Number("3")}}, {in: `{"F1":1,"F2":2,"F3":3}`, ptr: new(V), out: V{F1: Number("1"), F2: int32(2), F3: Number("3")}, useNumber: true}, {in: `{"k1":1,"k2":"s","k3":[1,2.0,3e-3],"k4":{"kk1":"s","kk2":2}}`, ptr: new(interface{}), out: ifaceNumAsFloat64}, {in: `{"k1":1,"k2":"s","k3":[1,2.0,3e-3],"k4":{"kk1":"s","kk2":2}}`, ptr: new(interface{}), out: ifaceNumAsNumber, useNumber: true}, // raw values with whitespace {in: "\n true ", ptr: new(bool), out: true}, {in: "\t 1 ", ptr: new(int), out: 1}, {in: "\r 1.2 ", ptr: new(float64), out: 1.2}, {in: "\t -5 \n", ptr: new(int16), out: int16(-5)}, {in: "\t \"a\\u1234\" \n", ptr: new(string), out: "a\u1234"}, // Z has a "-" tag. {in: `{"Y": 1, "Z": 2}`, ptr: new(T), out: T{Y: 1}}, {in: `{"alpha": "abc", "alphabet": "xyz"}`, ptr: new(U), out: U{Alphabet: "abc"}}, {in: `{"alpha": "abc"}`, ptr: new(U), out: U{Alphabet: "abc"}}, {in: `{"alphabet": "xyz"}`, ptr: new(U), out: U{}}, // syntax errors {in: `{"X": "foo", "Y"}`, err: &SyntaxError{"invalid character '}' after object key", 17}}, {in: `[1, 2, 3+]`, err: &SyntaxError{"invalid character '+' after array element", 9}}, {in: `{"X":12x}`, err: &SyntaxError{"invalid character 'x' after object key:value pair", 8}, useNumber: true}, // raw value errors {in: "\x01 42", err: &SyntaxError{"invalid character '\\x01' looking for beginning of value", 1}}, {in: " 42 \x01", err: &SyntaxError{"invalid character '\\x01' after top-level value", 5}}, {in: "\x01 true", err: &SyntaxError{"invalid character '\\x01' looking for beginning of value", 1}}, {in: " false \x01", err: &SyntaxError{"invalid character '\\x01' after top-level value", 8}}, {in: "\x01 1.2", err: &SyntaxError{"invalid character '\\x01' looking for beginning of value", 1}}, {in: " 3.4 \x01", err: &SyntaxError{"invalid character '\\x01' after top-level value", 6}}, {in: "\x01 \"string\"", err: &SyntaxError{"invalid character '\\x01' looking for beginning of value", 1}}, {in: " \"string\" \x01", err: &SyntaxError{"invalid character '\\x01' after top-level value", 11}}, // array tests {in: `[1, 2, 3]`, ptr: new([3]int), out: [3]int{1, 2, 3}}, {in: `[1, 2, 3]`, ptr: new([1]int), out: [1]int{1}}, {in: `[1, 2, 3]`, ptr: new([5]int), out: [5]int{1, 2, 3, 0, 0}}, // empty array to interface test {in: `[]`, ptr: new([]interface{}), out: []interface{}{}}, {in: `null`, ptr: new([]interface{}), out: []interface{}(nil)}, {in: `{"T":[]}`, ptr: new(map[string]interface{}), out: map[string]interface{}{"T": []interface{}{}}}, {in: `{"T":null}`, ptr: new(map[string]interface{}), out: map[string]interface{}{"T": interface{}(nil)}}, // composite tests {in: allValueIndent, ptr: new(All), out: allValue}, {in: allValueCompact, ptr: new(All), out: allValue}, {in: allValueIndent, ptr: new(*All), out: &allValue}, {in: allValueCompact, ptr: new(*All), out: &allValue}, {in: pallValueIndent, ptr: new(All), out: pallValue}, {in: pallValueCompact, ptr: new(All), out: pallValue}, {in: pallValueIndent, ptr: new(*All), out: &pallValue}, {in: pallValueCompact, ptr: new(*All), out: &pallValue}, // unmarshal interface test {in: `{"T":false}`, ptr: &um0, out: umtrue}, // use "false" so test will fail if custom unmarshaler is not called {in: `{"T":false}`, ptr: &ump, out: &umtrue}, {in: `[{"T":false}]`, ptr: &umslice, out: umslice}, {in: `[{"T":false}]`, ptr: &umslicep, out: &umslice}, {in: `{"M":{"T":false}}`, ptr: &umstruct, out: umstruct}, // UnmarshalText interface test {in: `"X"`, ptr: &um0T, out: umtrueT}, // use "false" so test will fail if custom unmarshaler is not called {in: `"X"`, ptr: &umpT, out: &umtrueT}, {in: `["X"]`, ptr: &umsliceT, out: umsliceT}, {in: `["X"]`, ptr: &umslicepT, out: &umsliceT}, {in: `{"M":"X"}`, ptr: &umstructT, out: umstructT}, { in: `{ "Level0": 1, "Level1b": 2, "Level1c": 3, "x": 4, "Level1a": 5, "LEVEL1B": 6, "e": { "Level1a": 8, "Level1b": 9, "Level1c": 10, "Level1d": 11, "x": 12 }, "Loop1": 13, "Loop2": 14, "X": 15, "Y": 16, "Z": 17 }`, ptr: new(Top), out: Top{ Level0: 1, Embed0: Embed0{ Level1b: 2, Level1c: 3, }, Embed0a: &Embed0a{ Level1a: 5, Level1b: 6, }, Embed0b: &Embed0b{ Level1a: 8, Level1b: 9, Level1c: 10, Level1d: 11, Level1e: 12, }, Loop: Loop{ Loop1: 13, Loop2: 14, }, Embed0p: Embed0p{ Point: image.Point{X: 15, Y: 16}, }, Embed0q: Embed0q{ Point: Point{Z: 17}, }, }, }, { in: `{"hello": 1}`, ptr: new(Ambig), out: Ambig{First: 1}, }, { in: `{"X": 1,"Y":2}`, ptr: new(S5), out: S5{S8: S8{S9: S9{Y: 2}}}, }, { in: `{"X": 1,"Y":2}`, ptr: new(S10), out: S10{S13: S13{S8: S8{S9: S9{Y: 2}}}}, }, // invalid UTF-8 is coerced to valid UTF-8. { in: "\"hello\xffworld\"", ptr: new(string), out: "hello\ufffdworld", }, { in: "\"hello\xc2\xc2world\"", ptr: new(string), out: "hello\ufffd\ufffdworld", }, { in: "\"hello\xc2\xffworld\"", ptr: new(string), out: "hello\ufffd\ufffdworld", }, { in: "\"hello\\ud800world\"", ptr: new(string), out: "hello\ufffdworld", }, { in: "\"hello\\ud800\\ud800world\"", ptr: new(string), out: "hello\ufffd\ufffdworld", }, { in: "\"hello\\ud800\\ud800world\"", ptr: new(string), out: "hello\ufffd\ufffdworld", }, { in: "\"hello\xed\xa0\x80\xed\xb0\x80world\"", ptr: new(string), out: "hello\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdworld", }, } func TestMarshal(t *testing.T) { b, err := Marshal(allValue) if err != nil { t.Fatalf("Marshal allValue: %v", err) } if string(b) != allValueCompact { t.Errorf("Marshal allValueCompact") diff(t, b, []byte(allValueCompact)) return } b, err = Marshal(pallValue) if err != nil { t.Fatalf("Marshal pallValue: %v", err) } if string(b) != pallValueCompact { t.Errorf("Marshal pallValueCompact") diff(t, b, []byte(pallValueCompact)) return } } var badUTF8 = []struct { in, out string }{ {"hello\xffworld", `"hello\ufffdworld"`}, {"", `""`}, {"\xff", `"\ufffd"`}, {"\xff\xff", `"\ufffd\ufffd"`}, {"a\xffb", `"a\ufffdb"`}, {"\xe6\x97\xa5\xe6\x9c\xac\xff\xaa\x9e", `"日本\ufffd\ufffd\ufffd"`}, } func TestMarshalBadUTF8(t *testing.T) { for _, tt := range badUTF8 { b, err := Marshal(tt.in) if string(b) != tt.out || err != nil { t.Errorf("Marshal(%q) = %#q, %v, want %#q, nil", tt.in, b, err, tt.out) } } } func TestMarshalNumberZeroVal(t *testing.T) { var n Number out, err := Marshal(n) if err != nil { t.Fatal(err) } outStr := string(out) if outStr != "0" { t.Fatalf("Invalid zero val for Number: %q", outStr) } } func TestMarshalEmbeds(t *testing.T) { top := &Top{ Level0: 1, Embed0: Embed0{ Level1b: 2, Level1c: 3, }, Embed0a: &Embed0a{ Level1a: 5, Level1b: 6, }, Embed0b: &Embed0b{ Level1a: 8, Level1b: 9, Level1c: 10, Level1d: 11, Level1e: 12, }, Loop: Loop{ Loop1: 13, Loop2: 14, }, Embed0p: Embed0p{ Point: image.Point{X: 15, Y: 16}, }, Embed0q: Embed0q{ Point: Point{Z: 17}, }, } b, err := Marshal(top) if err != nil { t.Fatal(err) } want := "{\"Level0\":1,\"Level1b\":2,\"Level1c\":3,\"Level1a\":5,\"LEVEL1B\":6,\"e\":{\"Level1a\":8,\"Level1b\":9,\"Level1c\":10,\"Level1d\":11,\"x\":12},\"Loop1\":13,\"Loop2\":14,\"X\":15,\"Y\":16,\"Z\":17}" if string(b) != want { t.Errorf("Wrong marshal result.\n got: %q\nwant: %q", b, want) } } func TestUnmarshal(t *testing.T) { for i, tt := range unmarshalTests { var scan scanner in := []byte(tt.in) if err := checkValid(in, &scan); err != nil { if !reflect.DeepEqual(err, tt.err) { t.Errorf("#%d: checkValid: %#v", i, err) continue } } if tt.ptr == nil { continue } // v = new(right-type) v := reflect.New(reflect.TypeOf(tt.ptr).Elem()) dec := NewDecoder(bytes.NewReader(in)) if tt.useNumber { dec.UseNumber() } if err := dec.Decode(v.Interface()); !reflect.DeepEqual(err, tt.err) { t.Errorf("#%d: %v want %v", i, err, tt.err) continue } if !reflect.DeepEqual(v.Elem().Interface(), tt.out) { t.Errorf("#%d: mismatch\nhave: %#+v\nwant: %#+v", i, v.Elem().Interface(), tt.out) data, _ := Marshal(v.Elem().Interface()) println(string(data)) data, _ = Marshal(tt.out) println(string(data)) continue } // Check round trip. if tt.err == nil { enc, err := Marshal(v.Interface()) if err != nil { t.Errorf("#%d: error re-marshaling: %v", i, err) continue } vv := reflect.New(reflect.TypeOf(tt.ptr).Elem()) dec = NewDecoder(bytes.NewReader(enc)) if tt.useNumber { dec.UseNumber() } if err := dec.Decode(vv.Interface()); err != nil { t.Errorf("#%d: error re-unmarshaling %#q: %v", i, enc, err) continue } if !reflect.DeepEqual(v.Elem().Interface(), vv.Elem().Interface()) { t.Errorf("#%d: mismatch\nhave: %#+v\nwant: %#+v", i, v.Elem().Interface(), vv.Elem().Interface()) t.Errorf(" In: %q", strings.Map(noSpace, string(in))) t.Errorf("Marshal: %q", strings.Map(noSpace, string(enc))) continue } } } } func TestUnmarshalMarshal(t *testing.T) { initBig() var v interface{} if err := Unmarshal(jsonBig, &v); err != nil { t.Fatalf("Unmarshal: %v", err) } b, err := Marshal(v) if err != nil { t.Fatalf("Marshal: %v", err) } if !bytes.Equal(jsonBig, b) { t.Errorf("Marshal jsonBig") diff(t, b, jsonBig) return } } var numberTests = []struct { in string i int64 intErr string f float64 floatErr string }{ {in: "-1.23e1", intErr: "strconv.ParseInt: parsing \"-1.23e1\": invalid syntax", f: -1.23e1}, {in: "-12", i: -12, f: -12.0}, {in: "1e1000", intErr: "strconv.ParseInt: parsing \"1e1000\": invalid syntax", floatErr: "strconv.ParseFloat: parsing \"1e1000\": value out of range"}, } // Independent of Decode, basic coverage of the accessors in Number func TestNumberAccessors(t *testing.T) { for _, tt := range numberTests { n := Number(tt.in) if s := n.String(); s != tt.in { t.Errorf("Number(%q).String() is %q", tt.in, s) } if i, err := n.Int64(); err == nil && tt.intErr == "" && i != tt.i { t.Errorf("Number(%q).Int64() is %d", tt.in, i) } else if (err == nil && tt.intErr != "") || (err != nil && err.Error() != tt.intErr) { t.Errorf("Number(%q).Int64() wanted error %q but got: %v", tt.in, tt.intErr, err) } if f, err := n.Float64(); err == nil && tt.floatErr == "" && f != tt.f { t.Errorf("Number(%q).Float64() is %g", tt.in, f) } else if (err == nil && tt.floatErr != "") || (err != nil && err.Error() != tt.floatErr) { t.Errorf("Number(%q).Float64() wanted error %q but got: %v", tt.in, tt.floatErr, err) } } } func TestLargeByteSlice(t *testing.T) { s0 := make([]byte, 2000) for i := range s0 { s0[i] = byte(i) } b, err := Marshal(s0) if err != nil { t.Fatalf("Marshal: %v", err) } var s1 []byte if err := Unmarshal(b, &s1); err != nil { t.Fatalf("Unmarshal: %v", err) } if !bytes.Equal(s0, s1) { t.Errorf("Marshal large byte slice") diff(t, s0, s1) } } type Xint struct { X int } func TestUnmarshalInterface(t *testing.T) { var xint Xint var i interface{} = &xint if err := Unmarshal([]byte(`{"X":1}`), &i); err != nil { t.Fatalf("Unmarshal: %v", err) } if xint.X != 1 { t.Fatalf("Did not write to xint") } } func TestUnmarshalPtrPtr(t *testing.T) { var xint Xint pxint := &xint if err := Unmarshal([]byte(`{"X":1}`), &pxint); err != nil { t.Fatalf("Unmarshal: %v", err) } if xint.X != 1 { t.Fatalf("Did not write to xint") } } func TestEscape(t *testing.T) { const input = `"foobar"` + " [\u2028 \u2029]" const expected = `"\"foobar\"\u003chtml\u003e [\u2028 \u2029]"` b, err := Marshal(input) if err != nil { t.Fatalf("Marshal error: %v", err) } if s := string(b); s != expected { t.Errorf("Encoding of [%s]:\n got [%s]\nwant [%s]", input, s, expected) } } // WrongString is a struct that's misusing the ,string modifier. type WrongString struct { Message string `json:"result,string"` } type wrongStringTest struct { in, err string } var wrongStringTests = []wrongStringTest{ {`{"result":"x"}`, `json: invalid use of ,string struct tag, trying to unmarshal "x" into string`}, {`{"result":"foo"}`, `json: invalid use of ,string struct tag, trying to unmarshal "foo" into string`}, {`{"result":"123"}`, `json: invalid use of ,string struct tag, trying to unmarshal "123" into string`}, } // If people misuse the ,string modifier, the error message should be // helpful, telling the user that they're doing it wrong. func TestErrorMessageFromMisusedString(t *testing.T) { for n, tt := range wrongStringTests { r := strings.NewReader(tt.in) var s WrongString err := NewDecoder(r).Decode(&s) got := fmt.Sprintf("%v", err) if got != tt.err { t.Errorf("%d. got err = %q, want %q", n, got, tt.err) } } } func noSpace(c rune) rune { if isSpace(c) { return -1 } return c } type All struct { Bool bool Int int Int8 int8 Int16 int16 Int32 int32 Int64 int64 Uint uint Uint8 uint8 Uint16 uint16 Uint32 uint32 Uint64 uint64 Uintptr uintptr Float32 float32 Float64 float64 Foo string `json:"bar"` Foo2 string `json:"bar2,dummyopt"` IntStr int64 `json:",string"` PBool *bool PInt *int PInt8 *int8 PInt16 *int16 PInt32 *int32 PInt64 *int64 PUint *uint PUint8 *uint8 PUint16 *uint16 PUint32 *uint32 PUint64 *uint64 PUintptr *uintptr PFloat32 *float32 PFloat64 *float64 String string PString *string Map map[string]Small MapP map[string]*Small PMap *map[string]Small PMapP *map[string]*Small EmptyMap map[string]Small NilMap map[string]Small Slice []Small SliceP []*Small PSlice *[]Small PSliceP *[]*Small EmptySlice []Small NilSlice []Small StringSlice []string ByteSlice []byte Small Small PSmall *Small PPSmall **Small Interface interface{} PInterface *interface{} unexported int } type Small struct { Tag string } var allValue = All{ Bool: true, Int: 2, Int8: 3, Int16: 4, Int32: 5, Int64: 6, Uint: 7, Uint8: 8, Uint16: 9, Uint32: 10, Uint64: 11, Uintptr: 12, Float32: 14.1, Float64: 15.1, Foo: "foo", Foo2: "foo2", IntStr: 42, String: "16", Map: map[string]Small{ "17": {Tag: "tag17"}, "18": {Tag: "tag18"}, }, MapP: map[string]*Small{ "19": {Tag: "tag19"}, "20": nil, }, EmptyMap: map[string]Small{}, Slice: []Small{{Tag: "tag20"}, {Tag: "tag21"}}, SliceP: []*Small{{Tag: "tag22"}, nil, {Tag: "tag23"}}, EmptySlice: []Small{}, StringSlice: []string{"str24", "str25", "str26"}, ByteSlice: []byte{27, 28, 29}, Small: Small{Tag: "tag30"}, PSmall: &Small{Tag: "tag31"}, Interface: 5.2, } var pallValue = All{ PBool: &allValue.Bool, PInt: &allValue.Int, PInt8: &allValue.Int8, PInt16: &allValue.Int16, PInt32: &allValue.Int32, PInt64: &allValue.Int64, PUint: &allValue.Uint, PUint8: &allValue.Uint8, PUint16: &allValue.Uint16, PUint32: &allValue.Uint32, PUint64: &allValue.Uint64, PUintptr: &allValue.Uintptr, PFloat32: &allValue.Float32, PFloat64: &allValue.Float64, PString: &allValue.String, PMap: &allValue.Map, PMapP: &allValue.MapP, PSlice: &allValue.Slice, PSliceP: &allValue.SliceP, PPSmall: &allValue.PSmall, PInterface: &allValue.Interface, } var allValueIndent = `{ "Bool": true, "Int": 2, "Int8": 3, "Int16": 4, "Int32": 5, "Int64": 6, "Uint": 7, "Uint8": 8, "Uint16": 9, "Uint32": 10, "Uint64": 11, "Uintptr": 12, "Float32": 14.1, "Float64": 15.1, "bar": "foo", "bar2": "foo2", "IntStr": "42", "PBool": null, "PInt": null, "PInt8": null, "PInt16": null, "PInt32": null, "PInt64": null, "PUint": null, "PUint8": null, "PUint16": null, "PUint32": null, "PUint64": null, "PUintptr": null, "PFloat32": null, "PFloat64": null, "String": "16", "PString": null, "Map": { "17": { "Tag": "tag17" }, "18": { "Tag": "tag18" } }, "MapP": { "19": { "Tag": "tag19" }, "20": null }, "PMap": null, "PMapP": null, "EmptyMap": {}, "NilMap": null, "Slice": [ { "Tag": "tag20" }, { "Tag": "tag21" } ], "SliceP": [ { "Tag": "tag22" }, null, { "Tag": "tag23" } ], "PSlice": null, "PSliceP": null, "EmptySlice": [], "NilSlice": null, "StringSlice": [ "str24", "str25", "str26" ], "ByteSlice": "Gxwd", "Small": { "Tag": "tag30" }, "PSmall": { "Tag": "tag31" }, "PPSmall": null, "Interface": 5.2, "PInterface": null }` var allValueCompact = strings.Map(noSpace, allValueIndent) var pallValueIndent = `{ "Bool": false, "Int": 0, "Int8": 0, "Int16": 0, "Int32": 0, "Int64": 0, "Uint": 0, "Uint8": 0, "Uint16": 0, "Uint32": 0, "Uint64": 0, "Uintptr": 0, "Float32": 0, "Float64": 0, "bar": "", "bar2": "", "IntStr": "0", "PBool": true, "PInt": 2, "PInt8": 3, "PInt16": 4, "PInt32": 5, "PInt64": 6, "PUint": 7, "PUint8": 8, "PUint16": 9, "PUint32": 10, "PUint64": 11, "PUintptr": 12, "PFloat32": 14.1, "PFloat64": 15.1, "String": "", "PString": "16", "Map": null, "MapP": null, "PMap": { "17": { "Tag": "tag17" }, "18": { "Tag": "tag18" } }, "PMapP": { "19": { "Tag": "tag19" }, "20": null }, "EmptyMap": null, "NilMap": null, "Slice": null, "SliceP": null, "PSlice": [ { "Tag": "tag20" }, { "Tag": "tag21" } ], "PSliceP": [ { "Tag": "tag22" }, null, { "Tag": "tag23" } ], "EmptySlice": null, "NilSlice": null, "StringSlice": null, "ByteSlice": null, "Small": { "Tag": "" }, "PSmall": null, "PPSmall": { "Tag": "tag31" }, "Interface": null, "PInterface": 5.2 }` var pallValueCompact = strings.Map(noSpace, pallValueIndent) func TestRefUnmarshal(t *testing.T) { type S struct { // Ref is defined in encode_test.go. R0 Ref R1 *Ref R2 RefText R3 *RefText } want := S{ R0: 12, R1: new(Ref), R2: 13, R3: new(RefText), } *want.R1 = 12 *want.R3 = 13 var got S if err := Unmarshal([]byte(`{"R0":"ref","R1":"ref","R2":"ref","R3":"ref"}`), &got); err != nil { t.Fatalf("Unmarshal: %v", err) } if !reflect.DeepEqual(got, want) { t.Errorf("got %+v, want %+v", got, want) } } // Test that the empty string doesn't panic decoding when ,string is specified // Issue 3450 func TestEmptyString(t *testing.T) { type T2 struct { Number1 int `json:",string"` Number2 int `json:",string"` } data := `{"Number1":"1", "Number2":""}` dec := NewDecoder(strings.NewReader(data)) var t2 T2 err := dec.Decode(&t2) if err == nil { t.Fatal("Decode: did not return error") } if t2.Number1 != 1 { t.Fatal("Decode: did not set Number1") } } // Test that the returned error is non-nil when trying to unmarshal null string into int, for successive ,string option // Issue 7046 func TestNullString(t *testing.T) { type T struct { A int `json:",string"` B int `json:",string"` } data := []byte(`{"A": "1", "B": null}`) var s T err := Unmarshal(data, &s) if err == nil { t.Fatalf("expected error; got %v", s) } } func intp(x int) *int { p := new(int) *p = x return p } func intpp(x *int) **int { pp := new(*int) *pp = x return pp } var interfaceSetTests = []struct { pre interface{} json string post interface{} }{ {"foo", `"bar"`, "bar"}, {"foo", `2`, 2.0}, {"foo", `true`, true}, {"foo", `null`, nil}, {nil, `null`, nil}, {new(int), `null`, nil}, {(*int)(nil), `null`, nil}, {new(*int), `null`, new(*int)}, {(**int)(nil), `null`, nil}, {intp(1), `null`, nil}, {intpp(nil), `null`, intpp(nil)}, {intpp(intp(1)), `null`, intpp(nil)}, } func TestInterfaceSet(t *testing.T) { for _, tt := range interfaceSetTests { b := struct{ X interface{} }{tt.pre} blob := `{"X":` + tt.json + `}` if err := Unmarshal([]byte(blob), &b); err != nil { t.Errorf("Unmarshal %#q: %v", blob, err) continue } if !reflect.DeepEqual(b.X, tt.post) { t.Errorf("Unmarshal %#q into %#v: X=%#v, want %#v", blob, tt.pre, b.X, tt.post) } } } // JSON null values should be ignored for primitives and string values instead of resulting in an error. // Issue 2540 func TestUnmarshalNulls(t *testing.T) { jsonData := []byte(`{ "Bool" : null, "Int" : null, "Int8" : null, "Int16" : null, "Int32" : null, "Int64" : null, "Uint" : null, "Uint8" : null, "Uint16" : null, "Uint32" : null, "Uint64" : null, "Float32" : null, "Float64" : null, "String" : null}`) nulls := All{ Bool: true, Int: 2, Int8: 3, Int16: 4, Int32: 5, Int64: 6, Uint: 7, Uint8: 8, Uint16: 9, Uint32: 10, Uint64: 11, Float32: 12.1, Float64: 13.1, String: "14"} err := Unmarshal(jsonData, &nulls) if err != nil { t.Errorf("Unmarshal of null values failed: %v", err) } if !nulls.Bool || nulls.Int != 2 || nulls.Int8 != 3 || nulls.Int16 != 4 || nulls.Int32 != 5 || nulls.Int64 != 6 || nulls.Uint != 7 || nulls.Uint8 != 8 || nulls.Uint16 != 9 || nulls.Uint32 != 10 || nulls.Uint64 != 11 || nulls.Float32 != 12.1 || nulls.Float64 != 13.1 || nulls.String != "14" { t.Errorf("Unmarshal of null values affected primitives") } } func TestStringKind(t *testing.T) { type stringKind string var m1, m2 map[stringKind]int m1 = map[stringKind]int{ "foo": 42, } data, err := Marshal(m1) if err != nil { t.Errorf("Unexpected error marshalling: %v", err) } err = Unmarshal(data, &m2) if err != nil { t.Errorf("Unexpected error unmarshalling: %v", err) } if !reflect.DeepEqual(m1, m2) { t.Error("Items should be equal after encoding and then decoding") } } var decodeTypeErrorTests = []struct { dest interface{} src string }{ {new(string), `{"user": "name"}`}, // issue 4628. {new(error), `{}`}, // issue 4222 {new(error), `[]`}, {new(error), `""`}, {new(error), `123`}, {new(error), `true`}, } func TestUnmarshalTypeError(t *testing.T) { for _, item := range decodeTypeErrorTests { err := Unmarshal([]byte(item.src), item.dest) if _, ok := err.(*UnmarshalTypeError); !ok { t.Errorf("expected type error for Unmarshal(%q, type %T): got %T", item.src, item.dest, err) } } } var unmarshalSyntaxTests = []string{ "tru", "fals", "nul", "123e", `"hello`, `[1,2,3`, `{"key":1`, `{"key":1,`, } func TestUnmarshalSyntax(t *testing.T) { var x interface{} for _, src := range unmarshalSyntaxTests { err := Unmarshal([]byte(src), &x) if _, ok := err.(*SyntaxError); !ok { t.Errorf("expected syntax error for Unmarshal(%q): got %T", src, err) } } } // Test handling of unexported fields that should be ignored. // Issue 4660 type unexportedFields struct { Name string m map[string]interface{} `json:"-"` m2 map[string]interface{} `json:"abcd"` } func TestUnmarshalUnexported(t *testing.T) { input := `{"Name": "Bob", "m": {"x": 123}, "m2": {"y": 456}, "abcd": {"z": 789}}` want := &unexportedFields{Name: "Bob"} out := &unexportedFields{} err := Unmarshal([]byte(input), out) if err != nil { t.Errorf("got error %v, expected nil", err) } if !reflect.DeepEqual(out, want) { t.Errorf("got %q, want %q", out, want) } } // Time3339 is a time.Time which encodes to and from JSON // as an RFC 3339 time in UTC. type Time3339 time.Time func (t *Time3339) UnmarshalJSON(b []byte) error { if len(b) < 2 || b[0] != '"' || b[len(b)-1] != '"' { return fmt.Errorf("types: failed to unmarshal non-string value %q as an RFC 3339 time", b) } tm, err := time.Parse(time.RFC3339, string(b[1:len(b)-1])) if err != nil { return err } *t = Time3339(tm) return nil } func TestUnmarshalJSONLiteralError(t *testing.T) { var t3 Time3339 err := Unmarshal([]byte(`"0000-00-00T00:00:00Z"`), &t3) if err == nil { t.Fatalf("expected error; got time %v", time.Time(t3)) } if !strings.Contains(err.Error(), "range") { t.Errorf("got err = %v; want out of range error", err) } } // Test that extra object elements in an array do not result in a // "data changing underfoot" error. // Issue 3717 func TestSkipArrayObjects(t *testing.T) { json := `[{}]` var dest [0]interface{} err := Unmarshal([]byte(json), &dest) if err != nil { t.Errorf("got error %q, want nil", err) } } // Test semantics of pre-filled struct fields and pre-filled map fields. // Issue 4900. func TestPrefilled(t *testing.T) { ptrToMap := func(m map[string]interface{}) *map[string]interface{} { return &m } // Values here change, cannot reuse table across runs. var prefillTests = []struct { in string ptr interface{} out interface{} }{ { in: `{"X": 1, "Y": 2}`, ptr: &XYZ{X: float32(3), Y: int16(4), Z: 1.5}, out: &XYZ{X: float64(1), Y: float64(2), Z: 1.5}, }, { in: `{"X": 1, "Y": 2}`, ptr: ptrToMap(map[string]interface{}{"X": float32(3), "Y": int16(4), "Z": 1.5}), out: ptrToMap(map[string]interface{}{"X": float64(1), "Y": float64(2), "Z": 1.5}), }, } for _, tt := range prefillTests { ptrstr := fmt.Sprintf("%v", tt.ptr) err := Unmarshal([]byte(tt.in), tt.ptr) // tt.ptr edited here if err != nil { t.Errorf("Unmarshal: %v", err) } if !reflect.DeepEqual(tt.ptr, tt.out) { t.Errorf("Unmarshal(%#q, %s): have %v, want %v", tt.in, ptrstr, tt.ptr, tt.out) } } } var invalidUnmarshalTests = []struct { v interface{} want string }{ {nil, "json: Unmarshal(nil)"}, {struct{}{}, "json: Unmarshal(non-pointer struct {})"}, {(*int)(nil), "json: Unmarshal(nil *int)"}, } func TestInvalidUnmarshal(t *testing.T) { buf := []byte(`{"a":"1"}`) for _, tt := range invalidUnmarshalTests { err := Unmarshal(buf, tt.v) if err == nil { t.Errorf("Unmarshal expecting error, got nil") continue } if got := err.Error(); got != tt.want { t.Errorf("Unmarshal = %q; want %q", got, tt.want) } } } go/src/pkg/encoding/json/encode.go0100644000000000000000000007367012412656737017407 0ustar00rootroot00000000000000// 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. // Package json implements encoding and decoding of JSON objects as defined in // RFC 4627. The mapping between JSON objects and Go values is described // in the documentation for the Marshal and Unmarshal functions. // // See "JSON and Go" for an introduction to this package: // http://golang.org/doc/articles/json_and_go.html package json import ( "bytes" "encoding" "encoding/base64" "math" "reflect" "runtime" "sort" "strconv" "strings" "sync" "unicode" "unicode/utf8" ) // Marshal returns the JSON encoding of v. // // Marshal traverses the value v recursively. // If an encountered value implements the Marshaler interface // and is not a nil pointer, Marshal calls its MarshalJSON method // to produce JSON. The nil pointer exception is not strictly necessary // but mimics a similar, necessary exception in the behavior of // UnmarshalJSON. // // Otherwise, Marshal uses the following type-dependent default encodings: // // Boolean values encode as JSON booleans. // // Floating point, integer, and Number values encode as JSON numbers. // // String values encode as JSON strings. InvalidUTF8Error will be returned // if an invalid UTF-8 sequence is encountered. // The angle brackets "<" and ">" are escaped to "\u003c" and "\u003e" // to keep some browsers from misinterpreting JSON output as HTML. // Ampersand "&" is also escaped to "\u0026" for the same reason. // // Array and slice values encode as JSON arrays, except that // []byte encodes as a base64-encoded string, and a nil slice // encodes as the null JSON object. // // Struct values encode as JSON objects. Each exported struct field // becomes a member of the object unless // - the field's tag is "-", or // - the field is empty and its tag specifies the "omitempty" option. // The empty values are false, 0, any // nil pointer or interface value, and any array, slice, map, or string of // length zero. The object's default key string is the struct field name // but can be specified in the struct field's tag value. The "json" key in // the struct field's tag value is the key name, followed by an optional comma // and options. Examples: // // // Field is ignored by this package. // Field int `json:"-"` // // // Field appears in JSON as key "myName". // Field int `json:"myName"` // // // Field appears in JSON as key "myName" and // // the field is omitted from the object if its value is empty, // // as defined above. // Field int `json:"myName,omitempty"` // // // Field appears in JSON as key "Field" (the default), but // // the field is skipped if empty. // // Note the leading comma. // Field int `json:",omitempty"` // // The "string" option signals that a field is stored as JSON inside a // JSON-encoded string. It applies only to fields of string, floating point, // or integer types. This extra level of encoding is sometimes used when // communicating with JavaScript programs: // // Int64String int64 `json:",string"` // // The key name will be used if it's a non-empty string consisting of // only Unicode letters, digits, dollar signs, percent signs, hyphens, // underscores and slashes. // // Anonymous struct fields are usually marshaled as if their inner exported fields // were fields in the outer struct, subject to the usual Go visibility rules amended // as described in the next paragraph. // An anonymous struct field with a name given in its JSON tag is treated as // having that name, rather than being anonymous. // // The Go visibility rules for struct fields are amended for JSON when // deciding which field to marshal or unmarshal. If there are // multiple fields at the same level, and that level is the least // nested (and would therefore be the nesting level selected by the // usual Go rules), the following extra rules apply: // // 1) Of those fields, if any are JSON-tagged, only tagged fields are considered, // even if there are multiple untagged fields that would otherwise conflict. // 2) If there is exactly one field (tagged or not according to the first rule), that is selected. // 3) Otherwise there are multiple fields, and all are ignored; no error occurs. // // Handling of anonymous struct fields is new in Go 1.1. // Prior to Go 1.1, anonymous struct fields were ignored. To force ignoring of // an anonymous struct field in both current and earlier versions, give the field // a JSON tag of "-". // // Map values encode as JSON objects. // The map's key type must be string; the object keys are used directly // as map keys. // // Pointer values encode as the value pointed to. // A nil pointer encodes as the null JSON object. // // Interface values encode as the value contained in the interface. // A nil interface value encodes as the null JSON object. // // Channel, complex, and function values cannot be encoded in JSON. // Attempting to encode such a value causes Marshal to return // an UnsupportedTypeError. // // JSON cannot represent cyclic data structures and Marshal does not // handle them. Passing cyclic structures to Marshal will result in // an infinite recursion. // func Marshal(v interface{}) ([]byte, error) { e := &encodeState{} err := e.marshal(v) if err != nil { return nil, err } return e.Bytes(), nil } // MarshalIndent is like Marshal but applies Indent to format the output. func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) { b, err := Marshal(v) if err != nil { return nil, err } var buf bytes.Buffer err = Indent(&buf, b, prefix, indent) if err != nil { return nil, err } return buf.Bytes(), nil } // HTMLEscape appends to dst the JSON-encoded src with <, >, &, U+2028 and U+2029 // characters inside string literals changed to \u003c, \u003e, \u0026, \u2028, \u2029 // so that the JSON will be safe to embed inside HTML `, []string{ `"\u003cb\u003e \"foo%\" O'Reilly \u0026bar;"`, `"a[href =~ \"//example.com\"]#foo"`, `"Hello, \u003cb\u003eWorld\u003c/b\u003e \u0026amp;tc!"`, `" dir=\"ltr\""`, // Not escaped. `c && alert("Hello, World!");`, // Escape sequence not over-escaped. `"Hello, World & O'Reilly\x21"`, `"greeting=H%69\u0026addressee=(World)"`, }, }, { `

Frequently Asked Questions (FAQ)